diff --git a/.gitignore b/.gitignore index ee4109a6..c004e4dc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,28 @@ *.ilk *.pdb -*.obj *.log *.idb +*.exp +*.iobj +*.ipdb *.tlog *.tlog/ *.lastbuildstate *.sdf -*.user \ No newline at end of file +*.user +*.suo + +Intermediates/ +ipch/ + +.vs/ + +# Intermediates +obj/ + +# Binaries +bin/* +!Web/* +!*.js +*.filters diff --git a/Dependencies/Box2D/Box2D.vcxproj b/Dependencies/Box2D/Box2D.vcxproj new file mode 100644 index 00000000..716d73d9 --- /dev/null +++ b/Dependencies/Box2D/Box2D.vcxproj @@ -0,0 +1,184 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {BCE9869C-CDE3-4935-99AB-4522493CE0B3} + Box2D + 10.0.17763.0 + + + + StaticLibrary + true + v141 + MultiByte + + + StaticLibrary + false + v141 + true + MultiByte + + + + + + + + + + + + + $(SolutionDir)bin\$(Configuration)\ + $(SolutionDir)bin\$(Configuration)\Intermediates\$(ProjectName)\ + + + $(SolutionDir)bin\$(Configuration)\ + $(SolutionDir)bin\$(Configuration)\Intermediates\$(ProjectName)\ + + + + Level3 + Disabled + true + src; + true + + + true + + + true + + + + + Level3 + Full + true + true + true + AnySuitable + Speed + StreamingSIMDExtensions2 + Fast + src; + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Dependencies/Box2D/src/Box2D.h b/Dependencies/Box2D/src/Box2D.h new file mode 100644 index 00000000..ce95bacd --- /dev/null +++ b/Dependencies/Box2D/src/Box2D.h @@ -0,0 +1,68 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BOX2D_H +#define BOX2D_H + +/** +\mainpage Box2D API Documentation + +\section intro_sec Getting Started + +For documentation please see http://box2d.org/documentation.html + +For discussion please visit http://box2d.org/forum +*/ + +// These include files constitute the main Box2D API + +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/Dependencies/Box2D/src/Collision/Shapes/b2ChainShape.cpp b/Dependencies/Box2D/src/Collision/Shapes/b2ChainShape.cpp new file mode 100644 index 00000000..fd133d38 --- /dev/null +++ b/Dependencies/Box2D/src/Collision/Shapes/b2ChainShape.cpp @@ -0,0 +1,193 @@ +/* +* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include +#include + +b2ChainShape::~b2ChainShape() +{ + Clear(); +} + +void b2ChainShape::Clear() +{ + b2Free(m_vertices); + m_vertices = NULL; + m_count = 0; +} + +void b2ChainShape::CreateLoop(const b2Vec2* vertices, int32 count) +{ + b2Assert(m_vertices == NULL && m_count == 0); + b2Assert(count >= 3); + for (int32 i = 1; i < count; ++i) + { + b2Vec2 v1 = vertices[i-1]; + b2Vec2 v2 = vertices[i]; + // If the code crashes here, it means your vertices are too close together. + b2Assert(b2DistanceSquared(v1, v2) > b2_linearSlop * b2_linearSlop); + } + + m_count = count + 1; + m_vertices = (b2Vec2*)b2Alloc(m_count * sizeof(b2Vec2)); + memcpy(m_vertices, vertices, count * sizeof(b2Vec2)); + m_vertices[count] = m_vertices[0]; + m_prevVertex = m_vertices[m_count - 2]; + m_nextVertex = m_vertices[1]; + m_hasPrevVertex = true; + m_hasNextVertex = true; +} + +void b2ChainShape::CreateChain(const b2Vec2* vertices, int32 count) +{ + b2Assert(m_vertices == NULL && m_count == 0); + b2Assert(count >= 2); + for (int32 i = 1; i < count; ++i) + { + // If the code crashes here, it means your vertices are too close together. + b2Assert(b2DistanceSquared(vertices[i-1], vertices[i]) > b2_linearSlop * b2_linearSlop); + } + + m_count = count; + m_vertices = (b2Vec2*)b2Alloc(count * sizeof(b2Vec2)); + memcpy(m_vertices, vertices, m_count * sizeof(b2Vec2)); + + m_hasPrevVertex = false; + m_hasNextVertex = false; + + m_prevVertex.SetZero(); + m_nextVertex.SetZero(); +} + +void b2ChainShape::SetPrevVertex(const b2Vec2& prevVertex) +{ + m_prevVertex = prevVertex; + m_hasPrevVertex = true; +} + +void b2ChainShape::SetNextVertex(const b2Vec2& nextVertex) +{ + m_nextVertex = nextVertex; + m_hasNextVertex = true; +} + +b2Shape* b2ChainShape::Clone(b2BlockAllocator* allocator) const +{ + void* mem = allocator->Allocate(sizeof(b2ChainShape)); + b2ChainShape* clone = new (mem) b2ChainShape; + clone->CreateChain(m_vertices, m_count); + clone->m_prevVertex = m_prevVertex; + clone->m_nextVertex = m_nextVertex; + clone->m_hasPrevVertex = m_hasPrevVertex; + clone->m_hasNextVertex = m_hasNextVertex; + return clone; +} + +int32 b2ChainShape::GetChildCount() const +{ + // edge count = vertex count - 1 + return m_count - 1; +} + +void b2ChainShape::GetChildEdge(b2EdgeShape* edge, int32 index) const +{ + b2Assert(0 <= index && index < m_count - 1); + edge->m_type = b2Shape::e_edge; + edge->m_radius = m_radius; + + edge->m_vertex1 = m_vertices[index + 0]; + edge->m_vertex2 = m_vertices[index + 1]; + + if (index > 0) + { + edge->m_vertex0 = m_vertices[index - 1]; + edge->m_hasVertex0 = true; + } + else + { + edge->m_vertex0 = m_prevVertex; + edge->m_hasVertex0 = m_hasPrevVertex; + } + + if (index < m_count - 2) + { + edge->m_vertex3 = m_vertices[index + 2]; + edge->m_hasVertex3 = true; + } + else + { + edge->m_vertex3 = m_nextVertex; + edge->m_hasVertex3 = m_hasNextVertex; + } +} + +bool b2ChainShape::TestPoint(const b2Transform& xf, const b2Vec2& p) const +{ + B2_NOT_USED(xf); + B2_NOT_USED(p); + return false; +} + +bool b2ChainShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input, + const b2Transform& xf, int32 childIndex) const +{ + b2Assert(childIndex < m_count); + + b2EdgeShape edgeShape; + + int32 i1 = childIndex; + int32 i2 = childIndex + 1; + if (i2 == m_count) + { + i2 = 0; + } + + edgeShape.m_vertex1 = m_vertices[i1]; + edgeShape.m_vertex2 = m_vertices[i2]; + + return edgeShape.RayCast(output, input, xf, 0); +} + +void b2ChainShape::ComputeAABB(b2AABB* aabb, const b2Transform& xf, int32 childIndex) const +{ + b2Assert(childIndex < m_count); + + int32 i1 = childIndex; + int32 i2 = childIndex + 1; + if (i2 == m_count) + { + i2 = 0; + } + + b2Vec2 v1 = b2Mul(xf, m_vertices[i1]); + b2Vec2 v2 = b2Mul(xf, m_vertices[i2]); + + aabb->lowerBound = b2Min(v1, v2); + aabb->upperBound = b2Max(v1, v2); +} + +void b2ChainShape::ComputeMass(b2MassData* massData, float32 density) const +{ + B2_NOT_USED(density); + + massData->mass = 0.0f; + massData->center.SetZero(); + massData->I = 0.0f; +} diff --git a/Dependencies/Box2D/src/Collision/Shapes/b2ChainShape.h b/Dependencies/Box2D/src/Collision/Shapes/b2ChainShape.h new file mode 100644 index 00000000..24a5234b --- /dev/null +++ b/Dependencies/Box2D/src/Collision/Shapes/b2ChainShape.h @@ -0,0 +1,105 @@ +/* +* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_CHAIN_SHAPE_H +#define B2_CHAIN_SHAPE_H + +#include + +class b2EdgeShape; + +/// A chain shape is a free form sequence of line segments. +/// The chain has two-sided collision, so you can use inside and outside collision. +/// Therefore, you may use any winding order. +/// Since there may be many vertices, they are allocated using b2Alloc. +/// Connectivity information is used to create smooth collisions. +/// WARNING: The chain will not collide properly if there are self-intersections. +class b2ChainShape : public b2Shape +{ +public: + b2ChainShape(); + + /// The destructor frees the vertices using b2Free. + ~b2ChainShape(); + + /// Clear all data. + void Clear(); + + /// Create a loop. This automatically adjusts connectivity. + /// @param vertices an array of vertices, these are copied + /// @param count the vertex count + void CreateLoop(const b2Vec2* vertices, int32 count); + + /// Create a chain with isolated end vertices. + /// @param vertices an array of vertices, these are copied + /// @param count the vertex count + void CreateChain(const b2Vec2* vertices, int32 count); + + /// Establish connectivity to a vertex that precedes the first vertex. + /// Don't call this for loops. + void SetPrevVertex(const b2Vec2& prevVertex); + + /// Establish connectivity to a vertex that follows the last vertex. + /// Don't call this for loops. + void SetNextVertex(const b2Vec2& nextVertex); + + /// Implement b2Shape. Vertices are cloned using b2Alloc. + b2Shape* Clone(b2BlockAllocator* allocator) const; + + /// @see b2Shape::GetChildCount + int32 GetChildCount() const; + + /// Get a child edge. + void GetChildEdge(b2EdgeShape* edge, int32 index) const; + + /// This always return false. + /// @see b2Shape::TestPoint + bool TestPoint(const b2Transform& transform, const b2Vec2& p) const; + + /// Implement b2Shape. + bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, + const b2Transform& transform, int32 childIndex) const; + + /// @see b2Shape::ComputeAABB + void ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const; + + /// Chains have zero mass. + /// @see b2Shape::ComputeMass + void ComputeMass(b2MassData* massData, float32 density) const; + + /// The vertices. Owned by this class. + b2Vec2* m_vertices; + + /// The vertex count. + int32 m_count; + + b2Vec2 m_prevVertex, m_nextVertex; + bool m_hasPrevVertex, m_hasNextVertex; +}; + +inline b2ChainShape::b2ChainShape() +{ + m_type = e_chain; + m_radius = b2_polygonRadius; + m_vertices = NULL; + m_count = 0; + m_hasPrevVertex = false; + m_hasNextVertex = false; +} + +#endif diff --git a/Dependencies/Box2D/src/Collision/Shapes/b2CircleShape.cpp b/Dependencies/Box2D/src/Collision/Shapes/b2CircleShape.cpp new file mode 100644 index 00000000..d04373a8 --- /dev/null +++ b/Dependencies/Box2D/src/Collision/Shapes/b2CircleShape.cpp @@ -0,0 +1,99 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include + +b2Shape* b2CircleShape::Clone(b2BlockAllocator* allocator) const +{ + void* mem = allocator->Allocate(sizeof(b2CircleShape)); + b2CircleShape* clone = new (mem) b2CircleShape; + *clone = *this; + return clone; +} + +int32 b2CircleShape::GetChildCount() const +{ + return 1; +} + +bool b2CircleShape::TestPoint(const b2Transform& transform, const b2Vec2& p) const +{ + b2Vec2 center = transform.p + b2Mul(transform.q, m_p); + b2Vec2 d = p - center; + return b2Dot(d, d) <= m_radius * m_radius; +} + +// Collision Detection in Interactive 3D Environments by Gino van den Bergen +// From Section 3.1.2 +// x = s + a * r +// norm(x) = radius +bool b2CircleShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input, + const b2Transform& transform, int32 childIndex) const +{ + B2_NOT_USED(childIndex); + + b2Vec2 position = transform.p + b2Mul(transform.q, m_p); + b2Vec2 s = input.p1 - position; + float32 b = b2Dot(s, s) - m_radius * m_radius; + + // Solve quadratic equation. + b2Vec2 r = input.p2 - input.p1; + float32 c = b2Dot(s, r); + float32 rr = b2Dot(r, r); + float32 sigma = c * c - rr * b; + + // Check for negative discriminant and short segment. + if (sigma < 0.0f || rr < b2_epsilon) + { + return false; + } + + // Find the point of intersection of the line with the circle. + float32 a = -(c + b2Sqrt(sigma)); + + // Is the intersection point on the segment? + if (0.0f <= a && a <= input.maxFraction * rr) + { + a /= rr; + output->fraction = a; + output->normal = s + a * r; + output->normal.Normalize(); + return true; + } + + return false; +} + +void b2CircleShape::ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const +{ + B2_NOT_USED(childIndex); + + b2Vec2 p = transform.p + b2Mul(transform.q, m_p); + aabb->lowerBound.Set(p.x - m_radius, p.y - m_radius); + aabb->upperBound.Set(p.x + m_radius, p.y + m_radius); +} + +void b2CircleShape::ComputeMass(b2MassData* massData, float32 density) const +{ + massData->mass = density * b2_pi * m_radius * m_radius; + massData->center = m_p; + + // inertia about the local origin + massData->I = massData->mass * (0.5f * m_radius * m_radius + b2Dot(m_p, m_p)); +} diff --git a/Dependencies/Box2D/src/Collision/Shapes/b2CircleShape.h b/Dependencies/Box2D/src/Collision/Shapes/b2CircleShape.h new file mode 100644 index 00000000..dbbd2134 --- /dev/null +++ b/Dependencies/Box2D/src/Collision/Shapes/b2CircleShape.h @@ -0,0 +1,91 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_CIRCLE_SHAPE_H +#define B2_CIRCLE_SHAPE_H + +#include + +/// A circle shape. +class b2CircleShape : public b2Shape +{ +public: + b2CircleShape(); + + /// Implement b2Shape. + b2Shape* Clone(b2BlockAllocator* allocator) const; + + /// @see b2Shape::GetChildCount + int32 GetChildCount() const; + + /// Implement b2Shape. + bool TestPoint(const b2Transform& transform, const b2Vec2& p) const; + + /// Implement b2Shape. + bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, + const b2Transform& transform, int32 childIndex) const; + + /// @see b2Shape::ComputeAABB + void ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const; + + /// @see b2Shape::ComputeMass + void ComputeMass(b2MassData* massData, float32 density) const; + + /// Get the supporting vertex index in the given direction. + int32 GetSupport(const b2Vec2& d) const; + + /// Get the supporting vertex in the given direction. + const b2Vec2& GetSupportVertex(const b2Vec2& d) const; + + /// Get the vertex count. + int32 GetVertexCount() const { return 1; } + + /// Get a vertex by index. Used by b2Distance. + const b2Vec2& GetVertex(int32 index) const; + + /// Position + b2Vec2 m_p; +}; + +inline b2CircleShape::b2CircleShape() +{ + m_type = e_circle; + m_radius = 0.0f; + m_p.SetZero(); +} + +inline int32 b2CircleShape::GetSupport(const b2Vec2 &d) const +{ + B2_NOT_USED(d); + return 0; +} + +inline const b2Vec2& b2CircleShape::GetSupportVertex(const b2Vec2 &d) const +{ + B2_NOT_USED(d); + return m_p; +} + +inline const b2Vec2& b2CircleShape::GetVertex(int32 index) const +{ + B2_NOT_USED(index); + b2Assert(index == 0); + return m_p; +} + +#endif diff --git a/Dependencies/Box2D/src/Collision/Shapes/b2EdgeShape.cpp b/Dependencies/Box2D/src/Collision/Shapes/b2EdgeShape.cpp new file mode 100644 index 00000000..66e5b530 --- /dev/null +++ b/Dependencies/Box2D/src/Collision/Shapes/b2EdgeShape.cpp @@ -0,0 +1,138 @@ +/* +* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include + +void b2EdgeShape::Set(const b2Vec2& v1, const b2Vec2& v2) +{ + m_vertex1 = v1; + m_vertex2 = v2; + m_hasVertex0 = false; + m_hasVertex3 = false; +} + +b2Shape* b2EdgeShape::Clone(b2BlockAllocator* allocator) const +{ + void* mem = allocator->Allocate(sizeof(b2EdgeShape)); + b2EdgeShape* clone = new (mem) b2EdgeShape; + *clone = *this; + return clone; +} + +int32 b2EdgeShape::GetChildCount() const +{ + return 1; +} + +bool b2EdgeShape::TestPoint(const b2Transform& xf, const b2Vec2& p) const +{ + B2_NOT_USED(xf); + B2_NOT_USED(p); + return false; +} + +// p = p1 + t * d +// v = v1 + s * e +// p1 + t * d = v1 + s * e +// s * e - t * d = p1 - v1 +bool b2EdgeShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input, + const b2Transform& xf, int32 childIndex) const +{ + B2_NOT_USED(childIndex); + + // Put the ray into the edge's frame of reference. + b2Vec2 p1 = b2MulT(xf.q, input.p1 - xf.p); + b2Vec2 p2 = b2MulT(xf.q, input.p2 - xf.p); + b2Vec2 d = p2 - p1; + + b2Vec2 v1 = m_vertex1; + b2Vec2 v2 = m_vertex2; + b2Vec2 e = v2 - v1; + b2Vec2 normal(e.y, -e.x); + normal.Normalize(); + + // q = p1 + t * d + // dot(normal, q - v1) = 0 + // dot(normal, p1 - v1) + t * dot(normal, d) = 0 + float32 numerator = b2Dot(normal, v1 - p1); + float32 denominator = b2Dot(normal, d); + + if (denominator == 0.0f) + { + return false; + } + + float32 t = numerator / denominator; + if (t < 0.0f || input.maxFraction < t) + { + return false; + } + + b2Vec2 q = p1 + t * d; + + // q = v1 + s * r + // s = dot(q - v1, r) / dot(r, r) + b2Vec2 r = v2 - v1; + float32 rr = b2Dot(r, r); + if (rr == 0.0f) + { + return false; + } + + float32 s = b2Dot(q - v1, r) / rr; + if (s < 0.0f || 1.0f < s) + { + return false; + } + + output->fraction = t; + if (numerator > 0.0f) + { + output->normal = -b2Mul(xf.q, normal); + } + else + { + output->normal = b2Mul(xf.q, normal); + } + return true; +} + +void b2EdgeShape::ComputeAABB(b2AABB* aabb, const b2Transform& xf, int32 childIndex) const +{ + B2_NOT_USED(childIndex); + + b2Vec2 v1 = b2Mul(xf, m_vertex1); + b2Vec2 v2 = b2Mul(xf, m_vertex2); + + b2Vec2 lower = b2Min(v1, v2); + b2Vec2 upper = b2Max(v1, v2); + + b2Vec2 r(m_radius, m_radius); + aabb->lowerBound = lower - r; + aabb->upperBound = upper + r; +} + +void b2EdgeShape::ComputeMass(b2MassData* massData, float32 density) const +{ + B2_NOT_USED(density); + + massData->mass = 0.0f; + massData->center = 0.5f * (m_vertex1 + m_vertex2); + massData->I = 0.0f; +} diff --git a/Dependencies/Box2D/src/Collision/Shapes/b2EdgeShape.h b/Dependencies/Box2D/src/Collision/Shapes/b2EdgeShape.h new file mode 100644 index 00000000..f2038dd8 --- /dev/null +++ b/Dependencies/Box2D/src/Collision/Shapes/b2EdgeShape.h @@ -0,0 +1,74 @@ +/* +* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_EDGE_SHAPE_H +#define B2_EDGE_SHAPE_H + +#include + +/// A line segment (edge) shape. These can be connected in chains or loops +/// to other edge shapes. The connectivity information is used to ensure +/// correct contact normals. +class b2EdgeShape : public b2Shape +{ +public: + b2EdgeShape(); + + /// Set this as an isolated edge. + void Set(const b2Vec2& v1, const b2Vec2& v2); + + /// Implement b2Shape. + b2Shape* Clone(b2BlockAllocator* allocator) const; + + /// @see b2Shape::GetChildCount + int32 GetChildCount() const; + + /// @see b2Shape::TestPoint + bool TestPoint(const b2Transform& transform, const b2Vec2& p) const; + + /// Implement b2Shape. + bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, + const b2Transform& transform, int32 childIndex) const; + + /// @see b2Shape::ComputeAABB + void ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const; + + /// @see b2Shape::ComputeMass + void ComputeMass(b2MassData* massData, float32 density) const; + + /// These are the edge vertices + b2Vec2 m_vertex1, m_vertex2; + + /// Optional adjacent vertices. These are used for smooth collision. + b2Vec2 m_vertex0, m_vertex3; + bool m_hasVertex0, m_hasVertex3; +}; + +inline b2EdgeShape::b2EdgeShape() +{ + m_type = e_edge; + m_radius = b2_polygonRadius; + m_vertex0.x = 0.0f; + m_vertex0.y = 0.0f; + m_vertex3.x = 0.0f; + m_vertex3.y = 0.0f; + m_hasVertex0 = false; + m_hasVertex3 = false; +} + +#endif diff --git a/Dependencies/Box2D/src/Collision/Shapes/b2PolygonShape.cpp b/Dependencies/Box2D/src/Collision/Shapes/b2PolygonShape.cpp new file mode 100644 index 00000000..452a59c7 --- /dev/null +++ b/Dependencies/Box2D/src/Collision/Shapes/b2PolygonShape.cpp @@ -0,0 +1,467 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include + +b2Shape* b2PolygonShape::Clone(b2BlockAllocator* allocator) const +{ + void* mem = allocator->Allocate(sizeof(b2PolygonShape)); + b2PolygonShape* clone = new (mem) b2PolygonShape; + *clone = *this; + return clone; +} + +void b2PolygonShape::SetAsBox(float32 hx, float32 hy) +{ + m_count = 4; + m_vertices[0].Set(-hx, -hy); + m_vertices[1].Set( hx, -hy); + m_vertices[2].Set( hx, hy); + m_vertices[3].Set(-hx, hy); + m_normals[0].Set(0.0f, -1.0f); + m_normals[1].Set(1.0f, 0.0f); + m_normals[2].Set(0.0f, 1.0f); + m_normals[3].Set(-1.0f, 0.0f); + m_centroid.SetZero(); +} + +void b2PolygonShape::SetAsBox(float32 hx, float32 hy, const b2Vec2& center, float32 angle) +{ + m_count = 4; + m_vertices[0].Set(-hx, -hy); + m_vertices[1].Set( hx, -hy); + m_vertices[2].Set( hx, hy); + m_vertices[3].Set(-hx, hy); + m_normals[0].Set(0.0f, -1.0f); + m_normals[1].Set(1.0f, 0.0f); + m_normals[2].Set(0.0f, 1.0f); + m_normals[3].Set(-1.0f, 0.0f); + m_centroid = center; + + b2Transform xf; + xf.p = center; + xf.q.Set(angle); + + // Transform vertices and normals. + for (int32 i = 0; i < m_count; ++i) + { + m_vertices[i] = b2Mul(xf, m_vertices[i]); + m_normals[i] = b2Mul(xf.q, m_normals[i]); + } +} + +int32 b2PolygonShape::GetChildCount() const +{ + return 1; +} + +static b2Vec2 ComputeCentroid(const b2Vec2* vs, int32 count) +{ + b2Assert(count >= 3); + + b2Vec2 c; c.Set(0.0f, 0.0f); + float32 area = 0.0f; + + // pRef is the reference point for forming triangles. + // It's location doesn't change the result (except for rounding error). + b2Vec2 pRef(0.0f, 0.0f); +#if 0 + // This code would put the reference point inside the polygon. + for (int32 i = 0; i < count; ++i) + { + pRef += vs[i]; + } + pRef *= 1.0f / count; +#endif + + const float32 inv3 = 1.0f / 3.0f; + + for (int32 i = 0; i < count; ++i) + { + // Triangle vertices. + b2Vec2 p1 = pRef; + b2Vec2 p2 = vs[i]; + b2Vec2 p3 = i + 1 < count ? vs[i+1] : vs[0]; + + b2Vec2 e1 = p2 - p1; + b2Vec2 e2 = p3 - p1; + + float32 D = b2Cross(e1, e2); + + float32 triangleArea = 0.5f * D; + area += triangleArea; + + // Area weighted centroid + c += triangleArea * inv3 * (p1 + p2 + p3); + } + + // Centroid + b2Assert(area > b2_epsilon); + c *= 1.0f / area; + return c; +} + +void b2PolygonShape::Set(const b2Vec2* vertices, int32 count) +{ + b2Assert(3 <= count && count <= b2_maxPolygonVertices); + if (count < 3) + { + SetAsBox(1.0f, 1.0f); + return; + } + + int32 n = b2Min(count, b2_maxPolygonVertices); + + // Perform welding and copy vertices into local buffer. + b2Vec2 ps[b2_maxPolygonVertices]; + int32 tempCount = 0; + for (int32 i = 0; i < n; ++i) + { + b2Vec2 v = vertices[i]; + + bool unique = true; + for (int32 j = 0; j < tempCount; ++j) + { + if (b2DistanceSquared(v, ps[j]) < ((0.5f * b2_linearSlop) * (0.5f * b2_linearSlop))) + { + unique = false; + break; + } + } + + if (unique) + { + ps[tempCount++] = v; + } + } + + n = tempCount; + if (n < 3) + { + // Polygon is degenerate. + b2Assert(false); + SetAsBox(1.0f, 1.0f); + return; + } + + // Create the convex hull using the Gift wrapping algorithm + // http://en.wikipedia.org/wiki/Gift_wrapping_algorithm + + // Find the right most point on the hull + int32 i0 = 0; + float32 x0 = ps[0].x; + for (int32 i = 1; i < n; ++i) + { + float32 x = ps[i].x; + if (x > x0 || (x == x0 && ps[i].y < ps[i0].y)) + { + i0 = i; + x0 = x; + } + } + + int32 hull[b2_maxPolygonVertices]; + int32 m = 0; + int32 ih = i0; + + for (;;) + { + hull[m] = ih; + + int32 ie = 0; + for (int32 j = 1; j < n; ++j) + { + if (ie == ih) + { + ie = j; + continue; + } + + b2Vec2 r = ps[ie] - ps[hull[m]]; + b2Vec2 v = ps[j] - ps[hull[m]]; + float32 c = b2Cross(r, v); + if (c < 0.0f) + { + ie = j; + } + + // Collinearity check + if (c == 0.0f && v.LengthSquared() > r.LengthSquared()) + { + ie = j; + } + } + + ++m; + ih = ie; + + if (ie == i0) + { + break; + } + } + + if (m < 3) + { + // Polygon is degenerate. + b2Assert(false); + SetAsBox(1.0f, 1.0f); + return; + } + + m_count = m; + + // Copy vertices. + for (int32 i = 0; i < m; ++i) + { + m_vertices[i] = ps[hull[i]]; + } + + // Compute normals. Ensure the edges have non-zero length. + for (int32 i = 0; i < m; ++i) + { + int32 i1 = i; + int32 i2 = i + 1 < m ? i + 1 : 0; + b2Vec2 edge = m_vertices[i2] - m_vertices[i1]; + b2Assert(edge.LengthSquared() > b2_epsilon * b2_epsilon); + m_normals[i] = b2Cross(edge, 1.0f); + m_normals[i].Normalize(); + } + + // Compute the polygon centroid. + m_centroid = ComputeCentroid(m_vertices, m); +} + +bool b2PolygonShape::TestPoint(const b2Transform& xf, const b2Vec2& p) const +{ + b2Vec2 pLocal = b2MulT(xf.q, p - xf.p); + + for (int32 i = 0; i < m_count; ++i) + { + float32 dot = b2Dot(m_normals[i], pLocal - m_vertices[i]); + if (dot > 0.0f) + { + return false; + } + } + + return true; +} + +bool b2PolygonShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input, + const b2Transform& xf, int32 childIndex) const +{ + B2_NOT_USED(childIndex); + + // Put the ray into the polygon's frame of reference. + b2Vec2 p1 = b2MulT(xf.q, input.p1 - xf.p); + b2Vec2 p2 = b2MulT(xf.q, input.p2 - xf.p); + b2Vec2 d = p2 - p1; + + float32 lower = 0.0f, upper = input.maxFraction; + + int32 index = -1; + + for (int32 i = 0; i < m_count; ++i) + { + // p = p1 + a * d + // dot(normal, p - v) = 0 + // dot(normal, p1 - v) + a * dot(normal, d) = 0 + float32 numerator = b2Dot(m_normals[i], m_vertices[i] - p1); + float32 denominator = b2Dot(m_normals[i], d); + + if (denominator == 0.0f) + { + if (numerator < 0.0f) + { + return false; + } + } + else + { + // Note: we want this predicate without division: + // lower < numerator / denominator, where denominator < 0 + // Since denominator < 0, we have to flip the inequality: + // lower < numerator / denominator <==> denominator * lower > numerator. + if (denominator < 0.0f && numerator < lower * denominator) + { + // Increase lower. + // The segment enters this half-space. + lower = numerator / denominator; + index = i; + } + else if (denominator > 0.0f && numerator < upper * denominator) + { + // Decrease upper. + // The segment exits this half-space. + upper = numerator / denominator; + } + } + + // The use of epsilon here causes the assert on lower to trip + // in some cases. Apparently the use of epsilon was to make edge + // shapes work, but now those are handled separately. + //if (upper < lower - b2_epsilon) + if (upper < lower) + { + return false; + } + } + + b2Assert(0.0f <= lower && lower <= input.maxFraction); + + if (index >= 0) + { + output->fraction = lower; + output->normal = b2Mul(xf.q, m_normals[index]); + return true; + } + + return false; +} + +void b2PolygonShape::ComputeAABB(b2AABB* aabb, const b2Transform& xf, int32 childIndex) const +{ + B2_NOT_USED(childIndex); + + b2Vec2 lower = b2Mul(xf, m_vertices[0]); + b2Vec2 upper = lower; + + for (int32 i = 1; i < m_count; ++i) + { + b2Vec2 v = b2Mul(xf, m_vertices[i]); + lower = b2Min(lower, v); + upper = b2Max(upper, v); + } + + b2Vec2 r(m_radius, m_radius); + aabb->lowerBound = lower - r; + aabb->upperBound = upper + r; +} + +void b2PolygonShape::ComputeMass(b2MassData* massData, float32 density) const +{ + // Polygon mass, centroid, and inertia. + // Let rho be the polygon density in mass per unit area. + // Then: + // mass = rho * int(dA) + // centroid.x = (1/mass) * rho * int(x * dA) + // centroid.y = (1/mass) * rho * int(y * dA) + // I = rho * int((x*x + y*y) * dA) + // + // We can compute these integrals by summing all the integrals + // for each triangle of the polygon. To evaluate the integral + // for a single triangle, we make a change of variables to + // the (u,v) coordinates of the triangle: + // x = x0 + e1x * u + e2x * v + // y = y0 + e1y * u + e2y * v + // where 0 <= u && 0 <= v && u + v <= 1. + // + // We integrate u from [0,1-v] and then v from [0,1]. + // We also need to use the Jacobian of the transformation: + // D = cross(e1, e2) + // + // Simplification: triangle centroid = (1/3) * (p1 + p2 + p3) + // + // The rest of the derivation is handled by computer algebra. + + b2Assert(m_count >= 3); + + b2Vec2 center; center.Set(0.0f, 0.0f); + float32 area = 0.0f; + float32 I = 0.0f; + + // s is the reference point for forming triangles. + // It's location doesn't change the result (except for rounding error). + b2Vec2 s(0.0f, 0.0f); + + // This code would put the reference point inside the polygon. + for (int32 i = 0; i < m_count; ++i) + { + s += m_vertices[i]; + } + s *= 1.0f / m_count; + + const float32 k_inv3 = 1.0f / 3.0f; + + for (int32 i = 0; i < m_count; ++i) + { + // Triangle vertices. + b2Vec2 e1 = m_vertices[i] - s; + b2Vec2 e2 = i + 1 < m_count ? m_vertices[i+1] - s : m_vertices[0] - s; + + float32 D = b2Cross(e1, e2); + + float32 triangleArea = 0.5f * D; + area += triangleArea; + + // Area weighted centroid + center += triangleArea * k_inv3 * (e1 + e2); + + float32 ex1 = e1.x, ey1 = e1.y; + float32 ex2 = e2.x, ey2 = e2.y; + + float32 intx2 = ex1*ex1 + ex2*ex1 + ex2*ex2; + float32 inty2 = ey1*ey1 + ey2*ey1 + ey2*ey2; + + I += (0.25f * k_inv3 * D) * (intx2 + inty2); + } + + // Total mass + massData->mass = density * area; + + // Center of mass + b2Assert(area > b2_epsilon); + center *= 1.0f / area; + massData->center = center + s; + + // Inertia tensor relative to the local origin (point s). + massData->I = density * I; + + // Shift to center of mass then to original body origin. + massData->I += massData->mass * (b2Dot(massData->center, massData->center) - b2Dot(center, center)); +} + +bool b2PolygonShape::Validate() const +{ + for (int32 i = 0; i < m_count; ++i) + { + int32 i1 = i; + int32 i2 = i < m_count - 1 ? i1 + 1 : 0; + b2Vec2 p = m_vertices[i1]; + b2Vec2 e = m_vertices[i2] - p; + + for (int32 j = 0; j < m_count; ++j) + { + if (j == i1 || j == i2) + { + continue; + } + + b2Vec2 v = m_vertices[j] - p; + float32 c = b2Cross(e, v); + if (c < 0.0f) + { + return false; + } + } + } + + return true; +} diff --git a/Dependencies/Box2D/src/Collision/Shapes/b2PolygonShape.h b/Dependencies/Box2D/src/Collision/Shapes/b2PolygonShape.h new file mode 100644 index 00000000..38050bc7 --- /dev/null +++ b/Dependencies/Box2D/src/Collision/Shapes/b2PolygonShape.h @@ -0,0 +1,101 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_POLYGON_SHAPE_H +#define B2_POLYGON_SHAPE_H + +#include + +/// A convex polygon. It is assumed that the interior of the polygon is to +/// the left of each edge. +/// Polygons have a maximum number of vertices equal to b2_maxPolygonVertices. +/// In most cases you should not need many vertices for a convex polygon. +class b2PolygonShape : public b2Shape +{ +public: + b2PolygonShape(); + + /// Implement b2Shape. + b2Shape* Clone(b2BlockAllocator* allocator) const; + + /// @see b2Shape::GetChildCount + int32 GetChildCount() const; + + /// Create a convex hull from the given array of local points. + /// The count must be in the range [3, b2_maxPolygonVertices]. + /// @warning the points may be re-ordered, even if they form a convex polygon + /// @warning collinear points are handled but not removed. Collinear points + /// may lead to poor stacking behavior. + void Set(const b2Vec2* points, int32 count); + + /// Build vertices to represent an axis-aligned box centered on the local origin. + /// @param hx the half-width. + /// @param hy the half-height. + void SetAsBox(float32 hx, float32 hy); + + /// Build vertices to represent an oriented box. + /// @param hx the half-width. + /// @param hy the half-height. + /// @param center the center of the box in local coordinates. + /// @param angle the rotation of the box in local coordinates. + void SetAsBox(float32 hx, float32 hy, const b2Vec2& center, float32 angle); + + /// @see b2Shape::TestPoint + bool TestPoint(const b2Transform& transform, const b2Vec2& p) const; + + /// Implement b2Shape. + bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, + const b2Transform& transform, int32 childIndex) const; + + /// @see b2Shape::ComputeAABB + void ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const; + + /// @see b2Shape::ComputeMass + void ComputeMass(b2MassData* massData, float32 density) const; + + /// Get the vertex count. + int32 GetVertexCount() const { return m_count; } + + /// Get a vertex by index. + const b2Vec2& GetVertex(int32 index) const; + + /// Validate convexity. This is a very time consuming operation. + /// @returns true if valid + bool Validate() const; + + b2Vec2 m_centroid; + b2Vec2 m_vertices[b2_maxPolygonVertices]; + b2Vec2 m_normals[b2_maxPolygonVertices]; + int32 m_count; +}; + +inline b2PolygonShape::b2PolygonShape() +{ + m_type = e_polygon; + m_radius = b2_polygonRadius; + m_count = 0; + m_centroid.SetZero(); +} + +inline const b2Vec2& b2PolygonShape::GetVertex(int32 index) const +{ + b2Assert(0 <= index && index < m_count); + return m_vertices[index]; +} + +#endif diff --git a/Dependencies/Box2D/src/Collision/Shapes/b2Shape.h b/Dependencies/Box2D/src/Collision/Shapes/b2Shape.h new file mode 100644 index 00000000..8a665bc5 --- /dev/null +++ b/Dependencies/Box2D/src/Collision/Shapes/b2Shape.h @@ -0,0 +1,101 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_SHAPE_H +#define B2_SHAPE_H + +#include +#include +#include + +/// This holds the mass data computed for a shape. +struct b2MassData +{ + /// The mass of the shape, usually in kilograms. + float32 mass; + + /// The position of the shape's centroid relative to the shape's origin. + b2Vec2 center; + + /// The rotational inertia of the shape about the local origin. + float32 I; +}; + +/// A shape is used for collision detection. You can create a shape however you like. +/// Shapes used for simulation in b2World are created automatically when a b2Fixture +/// is created. Shapes may encapsulate a one or more child shapes. +class b2Shape +{ +public: + + enum Type + { + e_circle = 0, + e_edge = 1, + e_polygon = 2, + e_chain = 3, + e_typeCount = 4 + }; + + virtual ~b2Shape() {} + + /// Clone the concrete shape using the provided allocator. + virtual b2Shape* Clone(b2BlockAllocator* allocator) const = 0; + + /// Get the type of this shape. You can use this to down cast to the concrete shape. + /// @return the shape type. + Type GetType() const; + + /// Get the number of child primitives. + virtual int32 GetChildCount() const = 0; + + /// Test a point for containment in this shape. This only works for convex shapes. + /// @param xf the shape world transform. + /// @param p a point in world coordinates. + virtual bool TestPoint(const b2Transform& xf, const b2Vec2& p) const = 0; + + /// Cast a ray against a child shape. + /// @param output the ray-cast results. + /// @param input the ray-cast input parameters. + /// @param transform the transform to be applied to the shape. + /// @param childIndex the child shape index + virtual bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, + const b2Transform& transform, int32 childIndex) const = 0; + + /// Given a transform, compute the associated axis aligned bounding box for a child shape. + /// @param aabb returns the axis aligned box. + /// @param xf the world transform of the shape. + /// @param childIndex the child shape + virtual void ComputeAABB(b2AABB* aabb, const b2Transform& xf, int32 childIndex) const = 0; + + /// Compute the mass properties of this shape using its dimensions and density. + /// The inertia tensor is computed about the local origin. + /// @param massData returns the mass data for this shape. + /// @param density the density in kilograms per meter squared. + virtual void ComputeMass(b2MassData* massData, float32 density) const = 0; + + Type m_type; + float32 m_radius; +}; + +inline b2Shape::Type b2Shape::GetType() const +{ + return m_type; +} + +#endif diff --git a/Dependencies/Box2D/src/Collision/b2BroadPhase.cpp b/Dependencies/Box2D/src/Collision/b2BroadPhase.cpp new file mode 100644 index 00000000..1940b24b --- /dev/null +++ b/Dependencies/Box2D/src/Collision/b2BroadPhase.cpp @@ -0,0 +1,119 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include + +b2BroadPhase::b2BroadPhase() +{ + m_proxyCount = 0; + + m_pairCapacity = 16; + m_pairCount = 0; + m_pairBuffer = (b2Pair*)b2Alloc(m_pairCapacity * sizeof(b2Pair)); + + m_moveCapacity = 16; + m_moveCount = 0; + m_moveBuffer = (int32*)b2Alloc(m_moveCapacity * sizeof(int32)); +} + +b2BroadPhase::~b2BroadPhase() +{ + b2Free(m_moveBuffer); + b2Free(m_pairBuffer); +} + +int32 b2BroadPhase::CreateProxy(const b2AABB& aabb, void* userData) +{ + int32 proxyId = m_tree.CreateProxy(aabb, userData); + ++m_proxyCount; + BufferMove(proxyId); + return proxyId; +} + +void b2BroadPhase::DestroyProxy(int32 proxyId) +{ + UnBufferMove(proxyId); + --m_proxyCount; + m_tree.DestroyProxy(proxyId); +} + +void b2BroadPhase::MoveProxy(int32 proxyId, const b2AABB& aabb, const b2Vec2& displacement) +{ + bool buffer = m_tree.MoveProxy(proxyId, aabb, displacement); + if (buffer) + { + BufferMove(proxyId); + } +} + +void b2BroadPhase::TouchProxy(int32 proxyId) +{ + BufferMove(proxyId); +} + +void b2BroadPhase::BufferMove(int32 proxyId) +{ + if (m_moveCount == m_moveCapacity) + { + int32* oldBuffer = m_moveBuffer; + m_moveCapacity *= 2; + m_moveBuffer = (int32*)b2Alloc(m_moveCapacity * sizeof(int32)); + memcpy(m_moveBuffer, oldBuffer, m_moveCount * sizeof(int32)); + b2Free(oldBuffer); + } + + m_moveBuffer[m_moveCount] = proxyId; + ++m_moveCount; +} + +void b2BroadPhase::UnBufferMove(int32 proxyId) +{ + for (int32 i = 0; i < m_moveCount; ++i) + { + if (m_moveBuffer[i] == proxyId) + { + m_moveBuffer[i] = e_nullProxy; + } + } +} + +// This is called from b2DynamicTree::Query when we are gathering pairs. +bool b2BroadPhase::QueryCallback(int32 proxyId) +{ + // A proxy cannot form a pair with itself. + if (proxyId == m_queryProxyId) + { + return true; + } + + // Grow the pair buffer as needed. + if (m_pairCount == m_pairCapacity) + { + b2Pair* oldBuffer = m_pairBuffer; + m_pairCapacity *= 2; + m_pairBuffer = (b2Pair*)b2Alloc(m_pairCapacity * sizeof(b2Pair)); + memcpy(m_pairBuffer, oldBuffer, m_pairCount * sizeof(b2Pair)); + b2Free(oldBuffer); + } + + m_pairBuffer[m_pairCount].proxyIdA = b2Min(proxyId, m_queryProxyId); + m_pairBuffer[m_pairCount].proxyIdB = b2Max(proxyId, m_queryProxyId); + ++m_pairCount; + + return true; +} diff --git a/Dependencies/Box2D/src/Collision/b2BroadPhase.h b/Dependencies/Box2D/src/Collision/b2BroadPhase.h new file mode 100644 index 00000000..4764fdd6 --- /dev/null +++ b/Dependencies/Box2D/src/Collision/b2BroadPhase.h @@ -0,0 +1,257 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_BROAD_PHASE_H +#define B2_BROAD_PHASE_H + +#include +#include +#include +#include + +struct b2Pair +{ + int32 proxyIdA; + int32 proxyIdB; +}; + +/// The broad-phase is used for computing pairs and performing volume queries and ray casts. +/// This broad-phase does not persist pairs. Instead, this reports potentially new pairs. +/// It is up to the client to consume the new pairs and to track subsequent overlap. +class b2BroadPhase +{ +public: + + enum + { + e_nullProxy = -1 + }; + + b2BroadPhase(); + ~b2BroadPhase(); + + /// Create a proxy with an initial AABB. Pairs are not reported until + /// UpdatePairs is called. + int32 CreateProxy(const b2AABB& aabb, void* userData); + + /// Destroy a proxy. It is up to the client to remove any pairs. + void DestroyProxy(int32 proxyId); + + /// Call MoveProxy as many times as you like, then when you are done + /// call UpdatePairs to finalized the proxy pairs (for your time step). + void MoveProxy(int32 proxyId, const b2AABB& aabb, const b2Vec2& displacement); + + /// Call to trigger a re-processing of it's pairs on the next call to UpdatePairs. + void TouchProxy(int32 proxyId); + + /// Get the fat AABB for a proxy. + const b2AABB& GetFatAABB(int32 proxyId) const; + + /// Get user data from a proxy. Returns NULL if the id is invalid. + void* GetUserData(int32 proxyId) const; + + /// Test overlap of fat AABBs. + bool TestOverlap(int32 proxyIdA, int32 proxyIdB) const; + + /// Get the number of proxies. + int32 GetProxyCount() const; + + /// Update the pairs. This results in pair callbacks. This can only add pairs. + template + void UpdatePairs(T* callback); + + /// Query an AABB for overlapping proxies. The callback class + /// is called for each proxy that overlaps the supplied AABB. + template + void Query(T* callback, const b2AABB& aabb) const; + + /// Ray-cast against the proxies in the tree. This relies on the callback + /// to perform a exact ray-cast in the case were the proxy contains a shape. + /// The callback also performs the any collision filtering. This has performance + /// roughly equal to k * log(n), where k is the number of collisions and n is the + /// number of proxies in the tree. + /// @param input the ray-cast input data. The ray extends from p1 to p1 + maxFraction * (p2 - p1). + /// @param callback a callback class that is called for each proxy that is hit by the ray. + template + void RayCast(T* callback, const b2RayCastInput& input) const; + + /// Get the height of the embedded tree. + int32 GetTreeHeight() const; + + /// Get the balance of the embedded tree. + int32 GetTreeBalance() const; + + /// Get the quality metric of the embedded tree. + float32 GetTreeQuality() const; + + /// Shift the world origin. Useful for large worlds. + /// The shift formula is: position -= newOrigin + /// @param newOrigin the new origin with respect to the old origin + void ShiftOrigin(const b2Vec2& newOrigin); + +private: + + friend class b2DynamicTree; + + void BufferMove(int32 proxyId); + void UnBufferMove(int32 proxyId); + + bool QueryCallback(int32 proxyId); + + b2DynamicTree m_tree; + + int32 m_proxyCount; + + int32* m_moveBuffer; + int32 m_moveCapacity; + int32 m_moveCount; + + b2Pair* m_pairBuffer; + int32 m_pairCapacity; + int32 m_pairCount; + + int32 m_queryProxyId; +}; + +/// This is used to sort pairs. +inline bool b2PairLessThan(const b2Pair& pair1, const b2Pair& pair2) +{ + if (pair1.proxyIdA < pair2.proxyIdA) + { + return true; + } + + if (pair1.proxyIdA == pair2.proxyIdA) + { + return pair1.proxyIdB < pair2.proxyIdB; + } + + return false; +} + +inline void* b2BroadPhase::GetUserData(int32 proxyId) const +{ + return m_tree.GetUserData(proxyId); +} + +inline bool b2BroadPhase::TestOverlap(int32 proxyIdA, int32 proxyIdB) const +{ + const b2AABB& aabbA = m_tree.GetFatAABB(proxyIdA); + const b2AABB& aabbB = m_tree.GetFatAABB(proxyIdB); + return b2TestOverlap(aabbA, aabbB); +} + +inline const b2AABB& b2BroadPhase::GetFatAABB(int32 proxyId) const +{ + return m_tree.GetFatAABB(proxyId); +} + +inline int32 b2BroadPhase::GetProxyCount() const +{ + return m_proxyCount; +} + +inline int32 b2BroadPhase::GetTreeHeight() const +{ + return m_tree.GetHeight(); +} + +inline int32 b2BroadPhase::GetTreeBalance() const +{ + return m_tree.GetMaxBalance(); +} + +inline float32 b2BroadPhase::GetTreeQuality() const +{ + return m_tree.GetAreaRatio(); +} + +template +void b2BroadPhase::UpdatePairs(T* callback) +{ + // Reset pair buffer + m_pairCount = 0; + + // Perform tree queries for all moving proxies. + for (int32 i = 0; i < m_moveCount; ++i) + { + m_queryProxyId = m_moveBuffer[i]; + if (m_queryProxyId == e_nullProxy) + { + continue; + } + + // We have to query the tree with the fat AABB so that + // we don't fail to create a pair that may touch later. + const b2AABB& fatAABB = m_tree.GetFatAABB(m_queryProxyId); + + // Query tree, create pairs and add them pair buffer. + m_tree.Query(this, fatAABB); + } + + // Reset move buffer + m_moveCount = 0; + + // Sort the pair buffer to expose duplicates. + std::sort(m_pairBuffer, m_pairBuffer + m_pairCount, b2PairLessThan); + + // Send the pairs back to the client. + int32 i = 0; + while (i < m_pairCount) + { + b2Pair* primaryPair = m_pairBuffer + i; + void* userDataA = m_tree.GetUserData(primaryPair->proxyIdA); + void* userDataB = m_tree.GetUserData(primaryPair->proxyIdB); + + callback->AddPair(userDataA, userDataB); + ++i; + + // Skip any duplicate pairs. + while (i < m_pairCount) + { + b2Pair* pair = m_pairBuffer + i; + if (pair->proxyIdA != primaryPair->proxyIdA || pair->proxyIdB != primaryPair->proxyIdB) + { + break; + } + ++i; + } + } + + // Try to keep the tree balanced. + //m_tree.Rebalance(4); +} + +template +inline void b2BroadPhase::Query(T* callback, const b2AABB& aabb) const +{ + m_tree.Query(callback, aabb); +} + +template +inline void b2BroadPhase::RayCast(T* callback, const b2RayCastInput& input) const +{ + m_tree.RayCast(callback, input); +} + +inline void b2BroadPhase::ShiftOrigin(const b2Vec2& newOrigin) +{ + m_tree.ShiftOrigin(newOrigin); +} + +#endif diff --git a/Dependencies/Box2D/src/Collision/b2CollideCircle.cpp b/Dependencies/Box2D/src/Collision/b2CollideCircle.cpp new file mode 100644 index 00000000..573c8ba9 --- /dev/null +++ b/Dependencies/Box2D/src/Collision/b2CollideCircle.cpp @@ -0,0 +1,154 @@ +/* +* Copyright (c) 2007-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include + +void b2CollideCircles( + b2Manifold* manifold, + const b2CircleShape* circleA, const b2Transform& xfA, + const b2CircleShape* circleB, const b2Transform& xfB) +{ + manifold->pointCount = 0; + + b2Vec2 pA = b2Mul(xfA, circleA->m_p); + b2Vec2 pB = b2Mul(xfB, circleB->m_p); + + b2Vec2 d = pB - pA; + float32 distSqr = b2Dot(d, d); + float32 rA = circleA->m_radius, rB = circleB->m_radius; + float32 radius = rA + rB; + if (distSqr > radius * radius) + { + return; + } + + manifold->type = b2Manifold::e_circles; + manifold->localPoint = circleA->m_p; + manifold->localNormal.SetZero(); + manifold->pointCount = 1; + + manifold->points[0].localPoint = circleB->m_p; + manifold->points[0].id.key = 0; +} + +void b2CollidePolygonAndCircle( + b2Manifold* manifold, + const b2PolygonShape* polygonA, const b2Transform& xfA, + const b2CircleShape* circleB, const b2Transform& xfB) +{ + manifold->pointCount = 0; + + // Compute circle position in the frame of the polygon. + b2Vec2 c = b2Mul(xfB, circleB->m_p); + b2Vec2 cLocal = b2MulT(xfA, c); + + // Find the min separating edge. + int32 normalIndex = 0; + float32 separation = -b2_maxFloat; + float32 radius = polygonA->m_radius + circleB->m_radius; + int32 vertexCount = polygonA->m_count; + const b2Vec2* vertices = polygonA->m_vertices; + const b2Vec2* normals = polygonA->m_normals; + + for (int32 i = 0; i < vertexCount; ++i) + { + float32 s = b2Dot(normals[i], cLocal - vertices[i]); + + if (s > radius) + { + // Early out. + return; + } + + if (s > separation) + { + separation = s; + normalIndex = i; + } + } + + // Vertices that subtend the incident face. + int32 vertIndex1 = normalIndex; + int32 vertIndex2 = vertIndex1 + 1 < vertexCount ? vertIndex1 + 1 : 0; + b2Vec2 v1 = vertices[vertIndex1]; + b2Vec2 v2 = vertices[vertIndex2]; + + // If the center is inside the polygon ... + if (separation < b2_epsilon) + { + manifold->pointCount = 1; + manifold->type = b2Manifold::e_faceA; + manifold->localNormal = normals[normalIndex]; + manifold->localPoint = 0.5f * (v1 + v2); + manifold->points[0].localPoint = circleB->m_p; + manifold->points[0].id.key = 0; + return; + } + + // Compute barycentric coordinates + float32 u1 = b2Dot(cLocal - v1, v2 - v1); + float32 u2 = b2Dot(cLocal - v2, v1 - v2); + if (u1 <= 0.0f) + { + if (b2DistanceSquared(cLocal, v1) > radius * radius) + { + return; + } + + manifold->pointCount = 1; + manifold->type = b2Manifold::e_faceA; + manifold->localNormal = cLocal - v1; + manifold->localNormal.Normalize(); + manifold->localPoint = v1; + manifold->points[0].localPoint = circleB->m_p; + manifold->points[0].id.key = 0; + } + else if (u2 <= 0.0f) + { + if (b2DistanceSquared(cLocal, v2) > radius * radius) + { + return; + } + + manifold->pointCount = 1; + manifold->type = b2Manifold::e_faceA; + manifold->localNormal = cLocal - v2; + manifold->localNormal.Normalize(); + manifold->localPoint = v2; + manifold->points[0].localPoint = circleB->m_p; + manifold->points[0].id.key = 0; + } + else + { + b2Vec2 faceCenter = 0.5f * (v1 + v2); + float32 separation = b2Dot(cLocal - faceCenter, normals[vertIndex1]); + if (separation > radius) + { + return; + } + + manifold->pointCount = 1; + manifold->type = b2Manifold::e_faceA; + manifold->localNormal = normals[vertIndex1]; + manifold->localPoint = faceCenter; + manifold->points[0].localPoint = circleB->m_p; + manifold->points[0].id.key = 0; + } +} diff --git a/Dependencies/Box2D/src/Collision/b2CollideEdge.cpp b/Dependencies/Box2D/src/Collision/b2CollideEdge.cpp new file mode 100644 index 00000000..7d2ec478 --- /dev/null +++ b/Dependencies/Box2D/src/Collision/b2CollideEdge.cpp @@ -0,0 +1,698 @@ +/* + * Copyright (c) 2007-2009 Erin Catto http://www.box2d.org + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ + +#include +#include +#include +#include + + +// Compute contact points for edge versus circle. +// This accounts for edge connectivity. +void b2CollideEdgeAndCircle(b2Manifold* manifold, + const b2EdgeShape* edgeA, const b2Transform& xfA, + const b2CircleShape* circleB, const b2Transform& xfB) +{ + manifold->pointCount = 0; + + // Compute circle in frame of edge + b2Vec2 Q = b2MulT(xfA, b2Mul(xfB, circleB->m_p)); + + b2Vec2 A = edgeA->m_vertex1, B = edgeA->m_vertex2; + b2Vec2 e = B - A; + + // Barycentric coordinates + float32 u = b2Dot(e, B - Q); + float32 v = b2Dot(e, Q - A); + + float32 radius = edgeA->m_radius + circleB->m_radius; + + b2ContactFeature cf; + cf.indexB = 0; + cf.typeB = b2ContactFeature::e_vertex; + + // Region A + if (v <= 0.0f) + { + b2Vec2 P = A; + b2Vec2 d = Q - P; + float32 dd = b2Dot(d, d); + if (dd > radius * radius) + { + return; + } + + // Is there an edge connected to A? + if (edgeA->m_hasVertex0) + { + b2Vec2 A1 = edgeA->m_vertex0; + b2Vec2 B1 = A; + b2Vec2 e1 = B1 - A1; + float32 u1 = b2Dot(e1, B1 - Q); + + // Is the circle in Region AB of the previous edge? + if (u1 > 0.0f) + { + return; + } + } + + cf.indexA = 0; + cf.typeA = b2ContactFeature::e_vertex; + manifold->pointCount = 1; + manifold->type = b2Manifold::e_circles; + manifold->localNormal.SetZero(); + manifold->localPoint = P; + manifold->points[0].id.key = 0; + manifold->points[0].id.cf = cf; + manifold->points[0].localPoint = circleB->m_p; + return; + } + + // Region B + if (u <= 0.0f) + { + b2Vec2 P = B; + b2Vec2 d = Q - P; + float32 dd = b2Dot(d, d); + if (dd > radius * radius) + { + return; + } + + // Is there an edge connected to B? + if (edgeA->m_hasVertex3) + { + b2Vec2 B2 = edgeA->m_vertex3; + b2Vec2 A2 = B; + b2Vec2 e2 = B2 - A2; + float32 v2 = b2Dot(e2, Q - A2); + + // Is the circle in Region AB of the next edge? + if (v2 > 0.0f) + { + return; + } + } + + cf.indexA = 1; + cf.typeA = b2ContactFeature::e_vertex; + manifold->pointCount = 1; + manifold->type = b2Manifold::e_circles; + manifold->localNormal.SetZero(); + manifold->localPoint = P; + manifold->points[0].id.key = 0; + manifold->points[0].id.cf = cf; + manifold->points[0].localPoint = circleB->m_p; + return; + } + + // Region AB + float32 den = b2Dot(e, e); + b2Assert(den > 0.0f); + b2Vec2 P = (1.0f / den) * (u * A + v * B); + b2Vec2 d = Q - P; + float32 dd = b2Dot(d, d); + if (dd > radius * radius) + { + return; + } + + b2Vec2 n(-e.y, e.x); + if (b2Dot(n, Q - A) < 0.0f) + { + n.Set(-n.x, -n.y); + } + n.Normalize(); + + cf.indexA = 0; + cf.typeA = b2ContactFeature::e_face; + manifold->pointCount = 1; + manifold->type = b2Manifold::e_faceA; + manifold->localNormal = n; + manifold->localPoint = A; + manifold->points[0].id.key = 0; + manifold->points[0].id.cf = cf; + manifold->points[0].localPoint = circleB->m_p; +} + +// This structure is used to keep track of the best separating axis. +struct b2EPAxis +{ + enum Type + { + e_unknown, + e_edgeA, + e_edgeB + }; + + Type type; + int32 index; + float32 separation; +}; + +// This holds polygon B expressed in frame A. +struct b2TempPolygon +{ + b2Vec2 vertices[b2_maxPolygonVertices]; + b2Vec2 normals[b2_maxPolygonVertices]; + int32 count; +}; + +// Reference face used for clipping +struct b2ReferenceFace +{ + int32 i1, i2; + + b2Vec2 v1, v2; + + b2Vec2 normal; + + b2Vec2 sideNormal1; + float32 sideOffset1; + + b2Vec2 sideNormal2; + float32 sideOffset2; +}; + +// This class collides and edge and a polygon, taking into account edge adjacency. +struct b2EPCollider +{ + void Collide(b2Manifold* manifold, const b2EdgeShape* edgeA, const b2Transform& xfA, + const b2PolygonShape* polygonB, const b2Transform& xfB); + b2EPAxis ComputeEdgeSeparation(); + b2EPAxis ComputePolygonSeparation(); + + enum VertexType + { + e_isolated, + e_concave, + e_convex + }; + + b2TempPolygon m_polygonB; + + b2Transform m_xf; + b2Vec2 m_centroidB; + b2Vec2 m_v0, m_v1, m_v2, m_v3; + b2Vec2 m_normal0, m_normal1, m_normal2; + b2Vec2 m_normal; + VertexType m_type1, m_type2; + b2Vec2 m_lowerLimit, m_upperLimit; + float32 m_radius; + bool m_front; +}; + +// Algorithm: +// 1. Classify v1 and v2 +// 2. Classify polygon centroid as front or back +// 3. Flip normal if necessary +// 4. Initialize normal range to [-pi, pi] about face normal +// 5. Adjust normal range according to adjacent edges +// 6. Visit each separating axes, only accept axes within the range +// 7. Return if _any_ axis indicates separation +// 8. Clip +void b2EPCollider::Collide(b2Manifold* manifold, const b2EdgeShape* edgeA, const b2Transform& xfA, + const b2PolygonShape* polygonB, const b2Transform& xfB) +{ + m_xf = b2MulT(xfA, xfB); + + m_centroidB = b2Mul(m_xf, polygonB->m_centroid); + + m_v0 = edgeA->m_vertex0; + m_v1 = edgeA->m_vertex1; + m_v2 = edgeA->m_vertex2; + m_v3 = edgeA->m_vertex3; + + bool hasVertex0 = edgeA->m_hasVertex0; + bool hasVertex3 = edgeA->m_hasVertex3; + + b2Vec2 edge1 = m_v2 - m_v1; + edge1.Normalize(); + m_normal1.Set(edge1.y, -edge1.x); + float32 offset1 = b2Dot(m_normal1, m_centroidB - m_v1); + float32 offset0 = 0.0f, offset2 = 0.0f; + bool convex1 = false, convex2 = false; + + // Is there a preceding edge? + if (hasVertex0) + { + b2Vec2 edge0 = m_v1 - m_v0; + edge0.Normalize(); + m_normal0.Set(edge0.y, -edge0.x); + convex1 = b2Cross(edge0, edge1) >= 0.0f; + offset0 = b2Dot(m_normal0, m_centroidB - m_v0); + } + + // Is there a following edge? + if (hasVertex3) + { + b2Vec2 edge2 = m_v3 - m_v2; + edge2.Normalize(); + m_normal2.Set(edge2.y, -edge2.x); + convex2 = b2Cross(edge1, edge2) > 0.0f; + offset2 = b2Dot(m_normal2, m_centroidB - m_v2); + } + + // Determine front or back collision. Determine collision normal limits. + if (hasVertex0 && hasVertex3) + { + if (convex1 && convex2) + { + m_front = offset0 >= 0.0f || offset1 >= 0.0f || offset2 >= 0.0f; + if (m_front) + { + m_normal = m_normal1; + m_lowerLimit = m_normal0; + m_upperLimit = m_normal2; + } + else + { + m_normal = -m_normal1; + m_lowerLimit = -m_normal1; + m_upperLimit = -m_normal1; + } + } + else if (convex1) + { + m_front = offset0 >= 0.0f || (offset1 >= 0.0f && offset2 >= 0.0f); + if (m_front) + { + m_normal = m_normal1; + m_lowerLimit = m_normal0; + m_upperLimit = m_normal1; + } + else + { + m_normal = -m_normal1; + m_lowerLimit = -m_normal2; + m_upperLimit = -m_normal1; + } + } + else if (convex2) + { + m_front = offset2 >= 0.0f || (offset0 >= 0.0f && offset1 >= 0.0f); + if (m_front) + { + m_normal = m_normal1; + m_lowerLimit = m_normal1; + m_upperLimit = m_normal2; + } + else + { + m_normal = -m_normal1; + m_lowerLimit = -m_normal1; + m_upperLimit = -m_normal0; + } + } + else + { + m_front = offset0 >= 0.0f && offset1 >= 0.0f && offset2 >= 0.0f; + if (m_front) + { + m_normal = m_normal1; + m_lowerLimit = m_normal1; + m_upperLimit = m_normal1; + } + else + { + m_normal = -m_normal1; + m_lowerLimit = -m_normal2; + m_upperLimit = -m_normal0; + } + } + } + else if (hasVertex0) + { + if (convex1) + { + m_front = offset0 >= 0.0f || offset1 >= 0.0f; + if (m_front) + { + m_normal = m_normal1; + m_lowerLimit = m_normal0; + m_upperLimit = -m_normal1; + } + else + { + m_normal = -m_normal1; + m_lowerLimit = m_normal1; + m_upperLimit = -m_normal1; + } + } + else + { + m_front = offset0 >= 0.0f && offset1 >= 0.0f; + if (m_front) + { + m_normal = m_normal1; + m_lowerLimit = m_normal1; + m_upperLimit = -m_normal1; + } + else + { + m_normal = -m_normal1; + m_lowerLimit = m_normal1; + m_upperLimit = -m_normal0; + } + } + } + else if (hasVertex3) + { + if (convex2) + { + m_front = offset1 >= 0.0f || offset2 >= 0.0f; + if (m_front) + { + m_normal = m_normal1; + m_lowerLimit = -m_normal1; + m_upperLimit = m_normal2; + } + else + { + m_normal = -m_normal1; + m_lowerLimit = -m_normal1; + m_upperLimit = m_normal1; + } + } + else + { + m_front = offset1 >= 0.0f && offset2 >= 0.0f; + if (m_front) + { + m_normal = m_normal1; + m_lowerLimit = -m_normal1; + m_upperLimit = m_normal1; + } + else + { + m_normal = -m_normal1; + m_lowerLimit = -m_normal2; + m_upperLimit = m_normal1; + } + } + } + else + { + m_front = offset1 >= 0.0f; + if (m_front) + { + m_normal = m_normal1; + m_lowerLimit = -m_normal1; + m_upperLimit = -m_normal1; + } + else + { + m_normal = -m_normal1; + m_lowerLimit = m_normal1; + m_upperLimit = m_normal1; + } + } + + // Get polygonB in frameA + m_polygonB.count = polygonB->m_count; + for (int32 i = 0; i < polygonB->m_count; ++i) + { + m_polygonB.vertices[i] = b2Mul(m_xf, polygonB->m_vertices[i]); + m_polygonB.normals[i] = b2Mul(m_xf.q, polygonB->m_normals[i]); + } + + m_radius = 2.0f * b2_polygonRadius; + + manifold->pointCount = 0; + + b2EPAxis edgeAxis = ComputeEdgeSeparation(); + + // If no valid normal can be found than this edge should not collide. + if (edgeAxis.type == b2EPAxis::e_unknown) + { + return; + } + + if (edgeAxis.separation > m_radius) + { + return; + } + + b2EPAxis polygonAxis = ComputePolygonSeparation(); + if (polygonAxis.type != b2EPAxis::e_unknown && polygonAxis.separation > m_radius) + { + return; + } + + // Use hysteresis for jitter reduction. + const float32 k_relativeTol = 0.98f; + const float32 k_absoluteTol = 0.001f; + + b2EPAxis primaryAxis; + if (polygonAxis.type == b2EPAxis::e_unknown) + { + primaryAxis = edgeAxis; + } + else if (polygonAxis.separation > k_relativeTol * edgeAxis.separation + k_absoluteTol) + { + primaryAxis = polygonAxis; + } + else + { + primaryAxis = edgeAxis; + } + + b2ClipVertex ie[2]; + b2ReferenceFace rf; + if (primaryAxis.type == b2EPAxis::e_edgeA) + { + manifold->type = b2Manifold::e_faceA; + + // Search for the polygon normal that is most anti-parallel to the edge normal. + int32 bestIndex = 0; + float32 bestValue = b2Dot(m_normal, m_polygonB.normals[0]); + for (int32 i = 1; i < m_polygonB.count; ++i) + { + float32 value = b2Dot(m_normal, m_polygonB.normals[i]); + if (value < bestValue) + { + bestValue = value; + bestIndex = i; + } + } + + int32 i1 = bestIndex; + int32 i2 = i1 + 1 < m_polygonB.count ? i1 + 1 : 0; + + ie[0].v = m_polygonB.vertices[i1]; + ie[0].id.cf.indexA = 0; + ie[0].id.cf.indexB = static_cast(i1); + ie[0].id.cf.typeA = b2ContactFeature::e_face; + ie[0].id.cf.typeB = b2ContactFeature::e_vertex; + + ie[1].v = m_polygonB.vertices[i2]; + ie[1].id.cf.indexA = 0; + ie[1].id.cf.indexB = static_cast(i2); + ie[1].id.cf.typeA = b2ContactFeature::e_face; + ie[1].id.cf.typeB = b2ContactFeature::e_vertex; + + if (m_front) + { + rf.i1 = 0; + rf.i2 = 1; + rf.v1 = m_v1; + rf.v2 = m_v2; + rf.normal = m_normal1; + } + else + { + rf.i1 = 1; + rf.i2 = 0; + rf.v1 = m_v2; + rf.v2 = m_v1; + rf.normal = -m_normal1; + } + } + else + { + manifold->type = b2Manifold::e_faceB; + + ie[0].v = m_v1; + ie[0].id.cf.indexA = 0; + ie[0].id.cf.indexB = static_cast(primaryAxis.index); + ie[0].id.cf.typeA = b2ContactFeature::e_vertex; + ie[0].id.cf.typeB = b2ContactFeature::e_face; + + ie[1].v = m_v2; + ie[1].id.cf.indexA = 0; + ie[1].id.cf.indexB = static_cast(primaryAxis.index); + ie[1].id.cf.typeA = b2ContactFeature::e_vertex; + ie[1].id.cf.typeB = b2ContactFeature::e_face; + + rf.i1 = primaryAxis.index; + rf.i2 = rf.i1 + 1 < m_polygonB.count ? rf.i1 + 1 : 0; + rf.v1 = m_polygonB.vertices[rf.i1]; + rf.v2 = m_polygonB.vertices[rf.i2]; + rf.normal = m_polygonB.normals[rf.i1]; + } + + rf.sideNormal1.Set(rf.normal.y, -rf.normal.x); + rf.sideNormal2 = -rf.sideNormal1; + rf.sideOffset1 = b2Dot(rf.sideNormal1, rf.v1); + rf.sideOffset2 = b2Dot(rf.sideNormal2, rf.v2); + + // Clip incident edge against extruded edge1 side edges. + b2ClipVertex clipPoints1[2]; + b2ClipVertex clipPoints2[2]; + int32 np; + + // Clip to box side 1 + np = b2ClipSegmentToLine(clipPoints1, ie, rf.sideNormal1, rf.sideOffset1, rf.i1); + + if (np < b2_maxManifoldPoints) + { + return; + } + + // Clip to negative box side 1 + np = b2ClipSegmentToLine(clipPoints2, clipPoints1, rf.sideNormal2, rf.sideOffset2, rf.i2); + + if (np < b2_maxManifoldPoints) + { + return; + } + + // Now clipPoints2 contains the clipped points. + if (primaryAxis.type == b2EPAxis::e_edgeA) + { + manifold->localNormal = rf.normal; + manifold->localPoint = rf.v1; + } + else + { + manifold->localNormal = polygonB->m_normals[rf.i1]; + manifold->localPoint = polygonB->m_vertices[rf.i1]; + } + + int32 pointCount = 0; + for (int32 i = 0; i < b2_maxManifoldPoints; ++i) + { + float32 separation; + + separation = b2Dot(rf.normal, clipPoints2[i].v - rf.v1); + + if (separation <= m_radius) + { + b2ManifoldPoint* cp = manifold->points + pointCount; + + if (primaryAxis.type == b2EPAxis::e_edgeA) + { + cp->localPoint = b2MulT(m_xf, clipPoints2[i].v); + cp->id = clipPoints2[i].id; + } + else + { + cp->localPoint = clipPoints2[i].v; + cp->id.cf.typeA = clipPoints2[i].id.cf.typeB; + cp->id.cf.typeB = clipPoints2[i].id.cf.typeA; + cp->id.cf.indexA = clipPoints2[i].id.cf.indexB; + cp->id.cf.indexB = clipPoints2[i].id.cf.indexA; + } + + ++pointCount; + } + } + + manifold->pointCount = pointCount; +} + +b2EPAxis b2EPCollider::ComputeEdgeSeparation() +{ + b2EPAxis axis; + axis.type = b2EPAxis::e_edgeA; + axis.index = m_front ? 0 : 1; + axis.separation = FLT_MAX; + + for (int32 i = 0; i < m_polygonB.count; ++i) + { + float32 s = b2Dot(m_normal, m_polygonB.vertices[i] - m_v1); + if (s < axis.separation) + { + axis.separation = s; + } + } + + return axis; +} + +b2EPAxis b2EPCollider::ComputePolygonSeparation() +{ + b2EPAxis axis; + axis.type = b2EPAxis::e_unknown; + axis.index = -1; + axis.separation = -FLT_MAX; + + b2Vec2 perp(-m_normal.y, m_normal.x); + + for (int32 i = 0; i < m_polygonB.count; ++i) + { + b2Vec2 n = -m_polygonB.normals[i]; + + float32 s1 = b2Dot(n, m_polygonB.vertices[i] - m_v1); + float32 s2 = b2Dot(n, m_polygonB.vertices[i] - m_v2); + float32 s = b2Min(s1, s2); + + if (s > m_radius) + { + // No collision + axis.type = b2EPAxis::e_edgeB; + axis.index = i; + axis.separation = s; + return axis; + } + + // Adjacency + if (b2Dot(n, perp) >= 0.0f) + { + if (b2Dot(n - m_upperLimit, m_normal) < -b2_angularSlop) + { + continue; + } + } + else + { + if (b2Dot(n - m_lowerLimit, m_normal) < -b2_angularSlop) + { + continue; + } + } + + if (s > axis.separation) + { + axis.type = b2EPAxis::e_edgeB; + axis.index = i; + axis.separation = s; + } + } + + return axis; +} + +void b2CollideEdgeAndPolygon( b2Manifold* manifold, + const b2EdgeShape* edgeA, const b2Transform& xfA, + const b2PolygonShape* polygonB, const b2Transform& xfB) +{ + b2EPCollider collider; + collider.Collide(manifold, edgeA, xfA, polygonB, xfB); +} diff --git a/Dependencies/Box2D/src/Collision/b2CollidePolygon.cpp b/Dependencies/Box2D/src/Collision/b2CollidePolygon.cpp new file mode 100644 index 00000000..08d81eff --- /dev/null +++ b/Dependencies/Box2D/src/Collision/b2CollidePolygon.cpp @@ -0,0 +1,239 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include + +// Find the max separation between poly1 and poly2 using edge normals from poly1. +static float32 b2FindMaxSeparation(int32* edgeIndex, + const b2PolygonShape* poly1, const b2Transform& xf1, + const b2PolygonShape* poly2, const b2Transform& xf2) +{ + int32 count1 = poly1->m_count; + int32 count2 = poly2->m_count; + const b2Vec2* n1s = poly1->m_normals; + const b2Vec2* v1s = poly1->m_vertices; + const b2Vec2* v2s = poly2->m_vertices; + b2Transform xf = b2MulT(xf2, xf1); + + int32 bestIndex = 0; + float32 maxSeparation = -b2_maxFloat; + for (int32 i = 0; i < count1; ++i) + { + // Get poly1 normal in frame2. + b2Vec2 n = b2Mul(xf.q, n1s[i]); + b2Vec2 v1 = b2Mul(xf, v1s[i]); + + // Find deepest point for normal i. + float32 si = b2_maxFloat; + for (int32 j = 0; j < count2; ++j) + { + float32 sij = b2Dot(n, v2s[j] - v1); + if (sij < si) + { + si = sij; + } + } + + if (si > maxSeparation) + { + maxSeparation = si; + bestIndex = i; + } + } + + *edgeIndex = bestIndex; + return maxSeparation; +} + +static void b2FindIncidentEdge(b2ClipVertex c[2], + const b2PolygonShape* poly1, const b2Transform& xf1, int32 edge1, + const b2PolygonShape* poly2, const b2Transform& xf2) +{ + const b2Vec2* normals1 = poly1->m_normals; + + int32 count2 = poly2->m_count; + const b2Vec2* vertices2 = poly2->m_vertices; + const b2Vec2* normals2 = poly2->m_normals; + + b2Assert(0 <= edge1 && edge1 < poly1->m_count); + + // Get the normal of the reference edge in poly2's frame. + b2Vec2 normal1 = b2MulT(xf2.q, b2Mul(xf1.q, normals1[edge1])); + + // Find the incident edge on poly2. + int32 index = 0; + float32 minDot = b2_maxFloat; + for (int32 i = 0; i < count2; ++i) + { + float32 dot = b2Dot(normal1, normals2[i]); + if (dot < minDot) + { + minDot = dot; + index = i; + } + } + + // Build the clip vertices for the incident edge. + int32 i1 = index; + int32 i2 = i1 + 1 < count2 ? i1 + 1 : 0; + + c[0].v = b2Mul(xf2, vertices2[i1]); + c[0].id.cf.indexA = (uint8)edge1; + c[0].id.cf.indexB = (uint8)i1; + c[0].id.cf.typeA = b2ContactFeature::e_face; + c[0].id.cf.typeB = b2ContactFeature::e_vertex; + + c[1].v = b2Mul(xf2, vertices2[i2]); + c[1].id.cf.indexA = (uint8)edge1; + c[1].id.cf.indexB = (uint8)i2; + c[1].id.cf.typeA = b2ContactFeature::e_face; + c[1].id.cf.typeB = b2ContactFeature::e_vertex; +} + +// Find edge normal of max separation on A - return if separating axis is found +// Find edge normal of max separation on B - return if separation axis is found +// Choose reference edge as min(minA, minB) +// Find incident edge +// Clip + +// The normal points from 1 to 2 +void b2CollidePolygons(b2Manifold* manifold, + const b2PolygonShape* polyA, const b2Transform& xfA, + const b2PolygonShape* polyB, const b2Transform& xfB) +{ + manifold->pointCount = 0; + float32 totalRadius = polyA->m_radius + polyB->m_radius; + + int32 edgeA = 0; + float32 separationA = b2FindMaxSeparation(&edgeA, polyA, xfA, polyB, xfB); + if (separationA > totalRadius) + return; + + int32 edgeB = 0; + float32 separationB = b2FindMaxSeparation(&edgeB, polyB, xfB, polyA, xfA); + if (separationB > totalRadius) + return; + + const b2PolygonShape* poly1; // reference polygon + const b2PolygonShape* poly2; // incident polygon + b2Transform xf1, xf2; + int32 edge1; // reference edge + uint8 flip; + const float32 k_tol = 0.1f * b2_linearSlop; + + if (separationB > separationA + k_tol) + { + poly1 = polyB; + poly2 = polyA; + xf1 = xfB; + xf2 = xfA; + edge1 = edgeB; + manifold->type = b2Manifold::e_faceB; + flip = 1; + } + else + { + poly1 = polyA; + poly2 = polyB; + xf1 = xfA; + xf2 = xfB; + edge1 = edgeA; + manifold->type = b2Manifold::e_faceA; + flip = 0; + } + + b2ClipVertex incidentEdge[2]; + b2FindIncidentEdge(incidentEdge, poly1, xf1, edge1, poly2, xf2); + + int32 count1 = poly1->m_count; + const b2Vec2* vertices1 = poly1->m_vertices; + + int32 iv1 = edge1; + int32 iv2 = edge1 + 1 < count1 ? edge1 + 1 : 0; + + b2Vec2 v11 = vertices1[iv1]; + b2Vec2 v12 = vertices1[iv2]; + + b2Vec2 localTangent = v12 - v11; + localTangent.Normalize(); + + b2Vec2 localNormal = b2Cross(localTangent, 1.0f); + b2Vec2 planePoint = 0.5f * (v11 + v12); + + b2Vec2 tangent = b2Mul(xf1.q, localTangent); + b2Vec2 normal = b2Cross(tangent, 1.0f); + + v11 = b2Mul(xf1, v11); + v12 = b2Mul(xf1, v12); + + // Face offset. + float32 frontOffset = b2Dot(normal, v11); + + // Side offsets, extended by polytope skin thickness. + float32 sideOffset1 = -b2Dot(tangent, v11) + totalRadius; + float32 sideOffset2 = b2Dot(tangent, v12) + totalRadius; + + // Clip incident edge against extruded edge1 side edges. + b2ClipVertex clipPoints1[2]; + b2ClipVertex clipPoints2[2]; + int np; + + // Clip to box side 1 + np = b2ClipSegmentToLine(clipPoints1, incidentEdge, -tangent, sideOffset1, iv1); + + if (np < 2) + return; + + // Clip to negative box side 1 + np = b2ClipSegmentToLine(clipPoints2, clipPoints1, tangent, sideOffset2, iv2); + + if (np < 2) + { + return; + } + + // Now clipPoints2 contains the clipped points. + manifold->localNormal = localNormal; + manifold->localPoint = planePoint; + + int32 pointCount = 0; + for (int32 i = 0; i < b2_maxManifoldPoints; ++i) + { + float32 separation = b2Dot(normal, clipPoints2[i].v) - frontOffset; + + if (separation <= totalRadius) + { + b2ManifoldPoint* cp = manifold->points + pointCount; + cp->localPoint = b2MulT(xf2, clipPoints2[i].v); + cp->id = clipPoints2[i].id; + if (flip) + { + // Swap features + b2ContactFeature cf = cp->id.cf; + cp->id.cf.indexA = cf.indexB; + cp->id.cf.indexB = cf.indexA; + cp->id.cf.typeA = cf.typeB; + cp->id.cf.typeB = cf.typeA; + } + ++pointCount; + } + } + + manifold->pointCount = pointCount; +} diff --git a/Dependencies/Box2D/src/Collision/b2Collision.cpp b/Dependencies/Box2D/src/Collision/b2Collision.cpp new file mode 100644 index 00000000..48aa2360 --- /dev/null +++ b/Dependencies/Box2D/src/Collision/b2Collision.cpp @@ -0,0 +1,252 @@ +/* +* Copyright (c) 2007-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include + +void b2WorldManifold::Initialize(const b2Manifold* manifold, + const b2Transform& xfA, float32 radiusA, + const b2Transform& xfB, float32 radiusB) +{ + if (manifold->pointCount == 0) + { + return; + } + + switch (manifold->type) + { + case b2Manifold::e_circles: + { + normal.Set(1.0f, 0.0f); + b2Vec2 pointA = b2Mul(xfA, manifold->localPoint); + b2Vec2 pointB = b2Mul(xfB, manifold->points[0].localPoint); + if (b2DistanceSquared(pointA, pointB) > b2_epsilon * b2_epsilon) + { + normal = pointB - pointA; + normal.Normalize(); + } + + b2Vec2 cA = pointA + radiusA * normal; + b2Vec2 cB = pointB - radiusB * normal; + points[0] = 0.5f * (cA + cB); + separations[0] = b2Dot(cB - cA, normal); + } + break; + + case b2Manifold::e_faceA: + { + normal = b2Mul(xfA.q, manifold->localNormal); + b2Vec2 planePoint = b2Mul(xfA, manifold->localPoint); + + for (int32 i = 0; i < manifold->pointCount; ++i) + { + b2Vec2 clipPoint = b2Mul(xfB, manifold->points[i].localPoint); + b2Vec2 cA = clipPoint + (radiusA - b2Dot(clipPoint - planePoint, normal)) * normal; + b2Vec2 cB = clipPoint - radiusB * normal; + points[i] = 0.5f * (cA + cB); + separations[i] = b2Dot(cB - cA, normal); + } + } + break; + + case b2Manifold::e_faceB: + { + normal = b2Mul(xfB.q, manifold->localNormal); + b2Vec2 planePoint = b2Mul(xfB, manifold->localPoint); + + for (int32 i = 0; i < manifold->pointCount; ++i) + { + b2Vec2 clipPoint = b2Mul(xfA, manifold->points[i].localPoint); + b2Vec2 cB = clipPoint + (radiusB - b2Dot(clipPoint - planePoint, normal)) * normal; + b2Vec2 cA = clipPoint - radiusA * normal; + points[i] = 0.5f * (cA + cB); + separations[i] = b2Dot(cA - cB, normal); + } + + // Ensure normal points from A to B. + normal = -normal; + } + break; + } +} + +void b2GetPointStates(b2PointState state1[b2_maxManifoldPoints], b2PointState state2[b2_maxManifoldPoints], + const b2Manifold* manifold1, const b2Manifold* manifold2) +{ + for (int32 i = 0; i < b2_maxManifoldPoints; ++i) + { + state1[i] = b2_nullState; + state2[i] = b2_nullState; + } + + // Detect persists and removes. + for (int32 i = 0; i < manifold1->pointCount; ++i) + { + b2ContactID id = manifold1->points[i].id; + + state1[i] = b2_removeState; + + for (int32 j = 0; j < manifold2->pointCount; ++j) + { + if (manifold2->points[j].id.key == id.key) + { + state1[i] = b2_persistState; + break; + } + } + } + + // Detect persists and adds. + for (int32 i = 0; i < manifold2->pointCount; ++i) + { + b2ContactID id = manifold2->points[i].id; + + state2[i] = b2_addState; + + for (int32 j = 0; j < manifold1->pointCount; ++j) + { + if (manifold1->points[j].id.key == id.key) + { + state2[i] = b2_persistState; + break; + } + } + } +} + +// From Real-time Collision Detection, p179. +bool b2AABB::RayCast(b2RayCastOutput* output, const b2RayCastInput& input) const +{ + float32 tmin = -b2_maxFloat; + float32 tmax = b2_maxFloat; + + b2Vec2 p = input.p1; + b2Vec2 d = input.p2 - input.p1; + b2Vec2 absD = b2Abs(d); + + b2Vec2 normal; + + for (int32 i = 0; i < 2; ++i) + { + if (absD(i) < b2_epsilon) + { + // Parallel. + if (p(i) < lowerBound(i) || upperBound(i) < p(i)) + { + return false; + } + } + else + { + float32 inv_d = 1.0f / d(i); + float32 t1 = (lowerBound(i) - p(i)) * inv_d; + float32 t2 = (upperBound(i) - p(i)) * inv_d; + + // Sign of the normal vector. + float32 s = -1.0f; + + if (t1 > t2) + { + b2Swap(t1, t2); + s = 1.0f; + } + + // Push the min up + if (t1 > tmin) + { + normal.SetZero(); + normal(i) = s; + tmin = t1; + } + + // Pull the max down + tmax = b2Min(tmax, t2); + + if (tmin > tmax) + { + return false; + } + } + } + + // Does the ray start inside the box? + // Does the ray intersect beyond the max fraction? + if (tmin < 0.0f || input.maxFraction < tmin) + { + return false; + } + + // Intersection. + output->fraction = tmin; + output->normal = normal; + return true; +} + +// Sutherland-Hodgman clipping. +int32 b2ClipSegmentToLine(b2ClipVertex vOut[2], const b2ClipVertex vIn[2], + const b2Vec2& normal, float32 offset, int32 vertexIndexA) +{ + // Start with no output points + int32 numOut = 0; + + // Calculate the distance of end points to the line + float32 distance0 = b2Dot(normal, vIn[0].v) - offset; + float32 distance1 = b2Dot(normal, vIn[1].v) - offset; + + // If the points are behind the plane + if (distance0 <= 0.0f) vOut[numOut++] = vIn[0]; + if (distance1 <= 0.0f) vOut[numOut++] = vIn[1]; + + // If the points are on different sides of the plane + if (distance0 * distance1 < 0.0f) + { + // Find intersection point of edge and plane + float32 interp = distance0 / (distance0 - distance1); + vOut[numOut].v = vIn[0].v + interp * (vIn[1].v - vIn[0].v); + + // VertexA is hitting edgeB. + vOut[numOut].id.cf.indexA = static_cast(vertexIndexA); + vOut[numOut].id.cf.indexB = vIn[0].id.cf.indexB; + vOut[numOut].id.cf.typeA = b2ContactFeature::e_vertex; + vOut[numOut].id.cf.typeB = b2ContactFeature::e_face; + ++numOut; + } + + return numOut; +} + +bool b2TestOverlap( const b2Shape* shapeA, int32 indexA, + const b2Shape* shapeB, int32 indexB, + const b2Transform& xfA, const b2Transform& xfB) +{ + b2DistanceInput input; + input.proxyA.Set(shapeA, indexA); + input.proxyB.Set(shapeB, indexB); + input.transformA = xfA; + input.transformB = xfB; + input.useRadii = true; + + b2SimplexCache cache; + cache.count = 0; + + b2DistanceOutput output; + + b2Distance(&output, &cache, &input); + + return output.distance < 10.0f * b2_epsilon; +} diff --git a/Dependencies/Box2D/src/Collision/b2Collision.h b/Dependencies/Box2D/src/Collision/b2Collision.h new file mode 100644 index 00000000..0fbf780f --- /dev/null +++ b/Dependencies/Box2D/src/Collision/b2Collision.h @@ -0,0 +1,277 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_COLLISION_H +#define B2_COLLISION_H + +#include +#include + +/// @file +/// Structures and functions used for computing contact points, distance +/// queries, and TOI queries. + +class b2Shape; +class b2CircleShape; +class b2EdgeShape; +class b2PolygonShape; + +const uint8 b2_nullFeature = UCHAR_MAX; + +/// The features that intersect to form the contact point +/// This must be 4 bytes or less. +struct b2ContactFeature +{ + enum Type + { + e_vertex = 0, + e_face = 1 + }; + + uint8 indexA; ///< Feature index on shapeA + uint8 indexB; ///< Feature index on shapeB + uint8 typeA; ///< The feature type on shapeA + uint8 typeB; ///< The feature type on shapeB +}; + +/// Contact ids to facilitate warm starting. +union b2ContactID +{ + b2ContactFeature cf; + uint32 key; ///< Used to quickly compare contact ids. +}; + +/// A manifold point is a contact point belonging to a contact +/// manifold. It holds details related to the geometry and dynamics +/// of the contact points. +/// The local point usage depends on the manifold type: +/// -e_circles: the local center of circleB +/// -e_faceA: the local center of cirlceB or the clip point of polygonB +/// -e_faceB: the clip point of polygonA +/// This structure is stored across time steps, so we keep it small. +/// Note: the impulses are used for internal caching and may not +/// provide reliable contact forces, especially for high speed collisions. +struct b2ManifoldPoint +{ + b2Vec2 localPoint; ///< usage depends on manifold type + float32 normalImpulse; ///< the non-penetration impulse + float32 tangentImpulse; ///< the friction impulse + b2ContactID id; ///< uniquely identifies a contact point between two shapes +}; + +/// A manifold for two touching convex shapes. +/// Box2D supports multiple types of contact: +/// - clip point versus plane with radius +/// - point versus point with radius (circles) +/// The local point usage depends on the manifold type: +/// -e_circles: the local center of circleA +/// -e_faceA: the center of faceA +/// -e_faceB: the center of faceB +/// Similarly the local normal usage: +/// -e_circles: not used +/// -e_faceA: the normal on polygonA +/// -e_faceB: the normal on polygonB +/// We store contacts in this way so that position correction can +/// account for movement, which is critical for continuous physics. +/// All contact scenarios must be expressed in one of these types. +/// This structure is stored across time steps, so we keep it small. +struct b2Manifold +{ + enum Type + { + e_circles, + e_faceA, + e_faceB + }; + + b2ManifoldPoint points[b2_maxManifoldPoints]; ///< the points of contact + b2Vec2 localNormal; ///< not use for Type::e_points + b2Vec2 localPoint; ///< usage depends on manifold type + Type type; + int32 pointCount; ///< the number of manifold points +}; + +/// This is used to compute the current state of a contact manifold. +struct b2WorldManifold +{ + /// Evaluate the manifold with supplied transforms. This assumes + /// modest motion from the original state. This does not change the + /// point count, impulses, etc. The radii must come from the shapes + /// that generated the manifold. + void Initialize(const b2Manifold* manifold, + const b2Transform& xfA, float32 radiusA, + const b2Transform& xfB, float32 radiusB); + + b2Vec2 normal; ///< world vector pointing from A to B + b2Vec2 points[b2_maxManifoldPoints]; ///< world contact point (point of intersection) + float32 separations[b2_maxManifoldPoints]; ///< a negative value indicates overlap, in meters +}; + +/// This is used for determining the state of contact points. +enum b2PointState +{ + b2_nullState, ///< point does not exist + b2_addState, ///< point was added in the update + b2_persistState, ///< point persisted across the update + b2_removeState ///< point was removed in the update +}; + +/// Compute the point states given two manifolds. The states pertain to the transition from manifold1 +/// to manifold2. So state1 is either persist or remove while state2 is either add or persist. +void b2GetPointStates(b2PointState state1[b2_maxManifoldPoints], b2PointState state2[b2_maxManifoldPoints], + const b2Manifold* manifold1, const b2Manifold* manifold2); + +/// Used for computing contact manifolds. +struct b2ClipVertex +{ + b2Vec2 v; + b2ContactID id; +}; + +/// Ray-cast input data. The ray extends from p1 to p1 + maxFraction * (p2 - p1). +struct b2RayCastInput +{ + b2Vec2 p1, p2; + float32 maxFraction; +}; + +/// Ray-cast output data. The ray hits at p1 + fraction * (p2 - p1), where p1 and p2 +/// come from b2RayCastInput. +struct b2RayCastOutput +{ + b2Vec2 normal; + float32 fraction; +}; + +/// An axis aligned bounding box. +struct b2AABB +{ + /// Verify that the bounds are sorted. + bool IsValid() const; + + /// Get the center of the AABB. + b2Vec2 GetCenter() const + { + return 0.5f * (lowerBound + upperBound); + } + + /// Get the extents of the AABB (half-widths). + b2Vec2 GetExtents() const + { + return 0.5f * (upperBound - lowerBound); + } + + /// Get the perimeter length + float32 GetPerimeter() const + { + float32 wx = upperBound.x - lowerBound.x; + float32 wy = upperBound.y - lowerBound.y; + return 2.0f * (wx + wy); + } + + /// Combine an AABB into this one. + void Combine(const b2AABB& aabb) + { + lowerBound = b2Min(lowerBound, aabb.lowerBound); + upperBound = b2Max(upperBound, aabb.upperBound); + } + + /// Combine two AABBs into this one. + void Combine(const b2AABB& aabb1, const b2AABB& aabb2) + { + lowerBound = b2Min(aabb1.lowerBound, aabb2.lowerBound); + upperBound = b2Max(aabb1.upperBound, aabb2.upperBound); + } + + /// Does this aabb contain the provided AABB. + bool Contains(const b2AABB& aabb) const + { + bool result = true; + result = result && lowerBound.x <= aabb.lowerBound.x; + result = result && lowerBound.y <= aabb.lowerBound.y; + result = result && aabb.upperBound.x <= upperBound.x; + result = result && aabb.upperBound.y <= upperBound.y; + return result; + } + + bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input) const; + + b2Vec2 lowerBound; ///< the lower vertex + b2Vec2 upperBound; ///< the upper vertex +}; + +/// Compute the collision manifold between two circles. +void b2CollideCircles(b2Manifold* manifold, + const b2CircleShape* circleA, const b2Transform& xfA, + const b2CircleShape* circleB, const b2Transform& xfB); + +/// Compute the collision manifold between a polygon and a circle. +void b2CollidePolygonAndCircle(b2Manifold* manifold, + const b2PolygonShape* polygonA, const b2Transform& xfA, + const b2CircleShape* circleB, const b2Transform& xfB); + +/// Compute the collision manifold between two polygons. +void b2CollidePolygons(b2Manifold* manifold, + const b2PolygonShape* polygonA, const b2Transform& xfA, + const b2PolygonShape* polygonB, const b2Transform& xfB); + +/// Compute the collision manifold between an edge and a circle. +void b2CollideEdgeAndCircle(b2Manifold* manifold, + const b2EdgeShape* polygonA, const b2Transform& xfA, + const b2CircleShape* circleB, const b2Transform& xfB); + +/// Compute the collision manifold between an edge and a circle. +void b2CollideEdgeAndPolygon(b2Manifold* manifold, + const b2EdgeShape* edgeA, const b2Transform& xfA, + const b2PolygonShape* circleB, const b2Transform& xfB); + +/// Clipping for contact manifolds. +int32 b2ClipSegmentToLine(b2ClipVertex vOut[2], const b2ClipVertex vIn[2], + const b2Vec2& normal, float32 offset, int32 vertexIndexA); + +/// Determine if two generic shapes overlap. +bool b2TestOverlap( const b2Shape* shapeA, int32 indexA, + const b2Shape* shapeB, int32 indexB, + const b2Transform& xfA, const b2Transform& xfB); + +// ---------------- Inline Functions ------------------------------------------ + +inline bool b2AABB::IsValid() const +{ + b2Vec2 d = upperBound - lowerBound; + bool valid = d.x >= 0.0f && d.y >= 0.0f; + valid = valid && lowerBound.IsValid() && upperBound.IsValid(); + return valid; +} + +inline bool b2TestOverlap(const b2AABB& a, const b2AABB& b) +{ + b2Vec2 d1, d2; + d1 = b.lowerBound - a.upperBound; + d2 = a.lowerBound - b.upperBound; + + if (d1.x > 0.0f || d1.y > 0.0f) + return false; + + if (d2.x > 0.0f || d2.y > 0.0f) + return false; + + return true; +} + +#endif diff --git a/Dependencies/Box2D/src/Collision/b2Distance.cpp b/Dependencies/Box2D/src/Collision/b2Distance.cpp new file mode 100644 index 00000000..c4a7d961 --- /dev/null +++ b/Dependencies/Box2D/src/Collision/b2Distance.cpp @@ -0,0 +1,603 @@ +/* +* Copyright (c) 2007-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include +#include +#include + +// GJK using Voronoi regions (Christer Ericson) and Barycentric coordinates. +int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; + +void b2DistanceProxy::Set(const b2Shape* shape, int32 index) +{ + switch (shape->GetType()) + { + case b2Shape::e_circle: + { + const b2CircleShape* circle = static_cast(shape); + m_vertices = &circle->m_p; + m_count = 1; + m_radius = circle->m_radius; + } + break; + + case b2Shape::e_polygon: + { + const b2PolygonShape* polygon = static_cast(shape); + m_vertices = polygon->m_vertices; + m_count = polygon->m_count; + m_radius = polygon->m_radius; + } + break; + + case b2Shape::e_chain: + { + const b2ChainShape* chain = static_cast(shape); + b2Assert(0 <= index && index < chain->m_count); + + m_buffer[0] = chain->m_vertices[index]; + if (index + 1 < chain->m_count) + { + m_buffer[1] = chain->m_vertices[index + 1]; + } + else + { + m_buffer[1] = chain->m_vertices[0]; + } + + m_vertices = m_buffer; + m_count = 2; + m_radius = chain->m_radius; + } + break; + + case b2Shape::e_edge: + { + const b2EdgeShape* edge = static_cast(shape); + m_vertices = &edge->m_vertex1; + m_count = 2; + m_radius = edge->m_radius; + } + break; + + default: + b2Assert(false); + } +} + + +struct b2SimplexVertex +{ + b2Vec2 wA; // support point in proxyA + b2Vec2 wB; // support point in proxyB + b2Vec2 w; // wB - wA + float32 a; // barycentric coordinate for closest point + int32 indexA; // wA index + int32 indexB; // wB index +}; + +struct b2Simplex +{ + void ReadCache( const b2SimplexCache* cache, + const b2DistanceProxy* proxyA, const b2Transform& transformA, + const b2DistanceProxy* proxyB, const b2Transform& transformB) + { + b2Assert(cache->count <= 3); + + // Copy data from cache. + m_count = cache->count; + b2SimplexVertex* vertices = &m_v1; + for (int32 i = 0; i < m_count; ++i) + { + b2SimplexVertex* v = vertices + i; + v->indexA = cache->indexA[i]; + v->indexB = cache->indexB[i]; + b2Vec2 wALocal = proxyA->GetVertex(v->indexA); + b2Vec2 wBLocal = proxyB->GetVertex(v->indexB); + v->wA = b2Mul(transformA, wALocal); + v->wB = b2Mul(transformB, wBLocal); + v->w = v->wB - v->wA; + v->a = 0.0f; + } + + // Compute the new simplex metric, if it is substantially different than + // old metric then flush the simplex. + if (m_count > 1) + { + float32 metric1 = cache->metric; + float32 metric2 = GetMetric(); + if (metric2 < 0.5f * metric1 || 2.0f * metric1 < metric2 || metric2 < b2_epsilon) + { + // Reset the simplex. + m_count = 0; + } + } + + // If the cache is empty or invalid ... + if (m_count == 0) + { + b2SimplexVertex* v = vertices + 0; + v->indexA = 0; + v->indexB = 0; + b2Vec2 wALocal = proxyA->GetVertex(0); + b2Vec2 wBLocal = proxyB->GetVertex(0); + v->wA = b2Mul(transformA, wALocal); + v->wB = b2Mul(transformB, wBLocal); + v->w = v->wB - v->wA; + v->a = 1.0f; + m_count = 1; + } + } + + void WriteCache(b2SimplexCache* cache) const + { + cache->metric = GetMetric(); + cache->count = uint16(m_count); + const b2SimplexVertex* vertices = &m_v1; + for (int32 i = 0; i < m_count; ++i) + { + cache->indexA[i] = uint8(vertices[i].indexA); + cache->indexB[i] = uint8(vertices[i].indexB); + } + } + + b2Vec2 GetSearchDirection() const + { + switch (m_count) + { + case 1: + return -m_v1.w; + + case 2: + { + b2Vec2 e12 = m_v2.w - m_v1.w; + float32 sgn = b2Cross(e12, -m_v1.w); + if (sgn > 0.0f) + { + // Origin is left of e12. + return b2Cross(1.0f, e12); + } + else + { + // Origin is right of e12. + return b2Cross(e12, 1.0f); + } + } + + default: + b2Assert(false); + return b2Vec2_zero; + } + } + + b2Vec2 GetClosestPoint() const + { + switch (m_count) + { + case 0: + b2Assert(false); + return b2Vec2_zero; + + case 1: + return m_v1.w; + + case 2: + return m_v1.a * m_v1.w + m_v2.a * m_v2.w; + + case 3: + return b2Vec2_zero; + + default: + b2Assert(false); + return b2Vec2_zero; + } + } + + void GetWitnessPoints(b2Vec2* pA, b2Vec2* pB) const + { + switch (m_count) + { + case 0: + b2Assert(false); + break; + + case 1: + *pA = m_v1.wA; + *pB = m_v1.wB; + break; + + case 2: + *pA = m_v1.a * m_v1.wA + m_v2.a * m_v2.wA; + *pB = m_v1.a * m_v1.wB + m_v2.a * m_v2.wB; + break; + + case 3: + *pA = m_v1.a * m_v1.wA + m_v2.a * m_v2.wA + m_v3.a * m_v3.wA; + *pB = *pA; + break; + + default: + b2Assert(false); + break; + } + } + + float32 GetMetric() const + { + switch (m_count) + { + case 0: + b2Assert(false); + return 0.0f; + + case 1: + return 0.0f; + + case 2: + return b2Distance(m_v1.w, m_v2.w); + + case 3: + return b2Cross(m_v2.w - m_v1.w, m_v3.w - m_v1.w); + + default: + b2Assert(false); + return 0.0f; + } + } + + void Solve2(); + void Solve3(); + + b2SimplexVertex m_v1, m_v2, m_v3; + int32 m_count; +}; + + +// Solve a line segment using barycentric coordinates. +// +// p = a1 * w1 + a2 * w2 +// a1 + a2 = 1 +// +// The vector from the origin to the closest point on the line is +// perpendicular to the line. +// e12 = w2 - w1 +// dot(p, e) = 0 +// a1 * dot(w1, e) + a2 * dot(w2, e) = 0 +// +// 2-by-2 linear system +// [1 1 ][a1] = [1] +// [w1.e12 w2.e12][a2] = [0] +// +// Define +// d12_1 = dot(w2, e12) +// d12_2 = -dot(w1, e12) +// d12 = d12_1 + d12_2 +// +// Solution +// a1 = d12_1 / d12 +// a2 = d12_2 / d12 +void b2Simplex::Solve2() +{ + b2Vec2 w1 = m_v1.w; + b2Vec2 w2 = m_v2.w; + b2Vec2 e12 = w2 - w1; + + // w1 region + float32 d12_2 = -b2Dot(w1, e12); + if (d12_2 <= 0.0f) + { + // a2 <= 0, so we clamp it to 0 + m_v1.a = 1.0f; + m_count = 1; + return; + } + + // w2 region + float32 d12_1 = b2Dot(w2, e12); + if (d12_1 <= 0.0f) + { + // a1 <= 0, so we clamp it to 0 + m_v2.a = 1.0f; + m_count = 1; + m_v1 = m_v2; + return; + } + + // Must be in e12 region. + float32 inv_d12 = 1.0f / (d12_1 + d12_2); + m_v1.a = d12_1 * inv_d12; + m_v2.a = d12_2 * inv_d12; + m_count = 2; +} + +// Possible regions: +// - points[2] +// - edge points[0]-points[2] +// - edge points[1]-points[2] +// - inside the triangle +void b2Simplex::Solve3() +{ + b2Vec2 w1 = m_v1.w; + b2Vec2 w2 = m_v2.w; + b2Vec2 w3 = m_v3.w; + + // Edge12 + // [1 1 ][a1] = [1] + // [w1.e12 w2.e12][a2] = [0] + // a3 = 0 + b2Vec2 e12 = w2 - w1; + float32 w1e12 = b2Dot(w1, e12); + float32 w2e12 = b2Dot(w2, e12); + float32 d12_1 = w2e12; + float32 d12_2 = -w1e12; + + // Edge13 + // [1 1 ][a1] = [1] + // [w1.e13 w3.e13][a3] = [0] + // a2 = 0 + b2Vec2 e13 = w3 - w1; + float32 w1e13 = b2Dot(w1, e13); + float32 w3e13 = b2Dot(w3, e13); + float32 d13_1 = w3e13; + float32 d13_2 = -w1e13; + + // Edge23 + // [1 1 ][a2] = [1] + // [w2.e23 w3.e23][a3] = [0] + // a1 = 0 + b2Vec2 e23 = w3 - w2; + float32 w2e23 = b2Dot(w2, e23); + float32 w3e23 = b2Dot(w3, e23); + float32 d23_1 = w3e23; + float32 d23_2 = -w2e23; + + // Triangle123 + float32 n123 = b2Cross(e12, e13); + + float32 d123_1 = n123 * b2Cross(w2, w3); + float32 d123_2 = n123 * b2Cross(w3, w1); + float32 d123_3 = n123 * b2Cross(w1, w2); + + // w1 region + if (d12_2 <= 0.0f && d13_2 <= 0.0f) + { + m_v1.a = 1.0f; + m_count = 1; + return; + } + + // e12 + if (d12_1 > 0.0f && d12_2 > 0.0f && d123_3 <= 0.0f) + { + float32 inv_d12 = 1.0f / (d12_1 + d12_2); + m_v1.a = d12_1 * inv_d12; + m_v2.a = d12_2 * inv_d12; + m_count = 2; + return; + } + + // e13 + if (d13_1 > 0.0f && d13_2 > 0.0f && d123_2 <= 0.0f) + { + float32 inv_d13 = 1.0f / (d13_1 + d13_2); + m_v1.a = d13_1 * inv_d13; + m_v3.a = d13_2 * inv_d13; + m_count = 2; + m_v2 = m_v3; + return; + } + + // w2 region + if (d12_1 <= 0.0f && d23_2 <= 0.0f) + { + m_v2.a = 1.0f; + m_count = 1; + m_v1 = m_v2; + return; + } + + // w3 region + if (d13_1 <= 0.0f && d23_1 <= 0.0f) + { + m_v3.a = 1.0f; + m_count = 1; + m_v1 = m_v3; + return; + } + + // e23 + if (d23_1 > 0.0f && d23_2 > 0.0f && d123_1 <= 0.0f) + { + float32 inv_d23 = 1.0f / (d23_1 + d23_2); + m_v2.a = d23_1 * inv_d23; + m_v3.a = d23_2 * inv_d23; + m_count = 2; + m_v1 = m_v3; + return; + } + + // Must be in triangle123 + float32 inv_d123 = 1.0f / (d123_1 + d123_2 + d123_3); + m_v1.a = d123_1 * inv_d123; + m_v2.a = d123_2 * inv_d123; + m_v3.a = d123_3 * inv_d123; + m_count = 3; +} + +void b2Distance(b2DistanceOutput* output, + b2SimplexCache* cache, + const b2DistanceInput* input) +{ + ++b2_gjkCalls; + + const b2DistanceProxy* proxyA = &input->proxyA; + const b2DistanceProxy* proxyB = &input->proxyB; + + b2Transform transformA = input->transformA; + b2Transform transformB = input->transformB; + + // Initialize the simplex. + b2Simplex simplex; + simplex.ReadCache(cache, proxyA, transformA, proxyB, transformB); + + // Get simplex vertices as an array. + b2SimplexVertex* vertices = &simplex.m_v1; + const int32 k_maxIters = 20; + + // These store the vertices of the last simplex so that we + // can check for duplicates and prevent cycling. + int32 saveA[3], saveB[3]; + int32 saveCount = 0; + + float32 distanceSqr1 = b2_maxFloat; + float32 distanceSqr2 = distanceSqr1; + + // Main iteration loop. + int32 iter = 0; + while (iter < k_maxIters) + { + // Copy simplex so we can identify duplicates. + saveCount = simplex.m_count; + for (int32 i = 0; i < saveCount; ++i) + { + saveA[i] = vertices[i].indexA; + saveB[i] = vertices[i].indexB; + } + + switch (simplex.m_count) + { + case 1: + break; + + case 2: + simplex.Solve2(); + break; + + case 3: + simplex.Solve3(); + break; + + default: + b2Assert(false); + } + + // If we have 3 points, then the origin is in the corresponding triangle. + if (simplex.m_count == 3) + { + break; + } + + // Compute closest point. + b2Vec2 p = simplex.GetClosestPoint(); + distanceSqr2 = p.LengthSquared(); + + // Ensure progress + if (distanceSqr2 >= distanceSqr1) + { + //break; + } + distanceSqr1 = distanceSqr2; + + // Get search direction. + b2Vec2 d = simplex.GetSearchDirection(); + + // Ensure the search direction is numerically fit. + if (d.LengthSquared() < b2_epsilon * b2_epsilon) + { + // The origin is probably contained by a line segment + // or triangle. Thus the shapes are overlapped. + + // We can't return zero here even though there may be overlap. + // In case the simplex is a point, segment, or triangle it is difficult + // to determine if the origin is contained in the CSO or very close to it. + break; + } + + // Compute a tentative new simplex vertex using support points. + b2SimplexVertex* vertex = vertices + simplex.m_count; + vertex->indexA = proxyA->GetSupport(b2MulT(transformA.q, -d)); + vertex->wA = b2Mul(transformA, proxyA->GetVertex(vertex->indexA)); + b2Vec2 wBLocal; + vertex->indexB = proxyB->GetSupport(b2MulT(transformB.q, d)); + vertex->wB = b2Mul(transformB, proxyB->GetVertex(vertex->indexB)); + vertex->w = vertex->wB - vertex->wA; + + // Iteration count is equated to the number of support point calls. + ++iter; + ++b2_gjkIters; + + // Check for duplicate support points. This is the main termination criteria. + bool duplicate = false; + for (int32 i = 0; i < saveCount; ++i) + { + if (vertex->indexA == saveA[i] && vertex->indexB == saveB[i]) + { + duplicate = true; + break; + } + } + + // If we found a duplicate support point we must exit to avoid cycling. + if (duplicate) + { + break; + } + + // New vertex is ok and needed. + ++simplex.m_count; + } + + b2_gjkMaxIters = b2Max(b2_gjkMaxIters, iter); + + // Prepare output. + simplex.GetWitnessPoints(&output->pointA, &output->pointB); + output->distance = b2Distance(output->pointA, output->pointB); + output->iterations = iter; + + // Cache the simplex. + simplex.WriteCache(cache); + + // Apply radii if requested. + if (input->useRadii) + { + float32 rA = proxyA->m_radius; + float32 rB = proxyB->m_radius; + + if (output->distance > rA + rB && output->distance > b2_epsilon) + { + // Shapes are still no overlapped. + // Move the witness points to the outer surface. + output->distance -= rA + rB; + b2Vec2 normal = output->pointB - output->pointA; + normal.Normalize(); + output->pointA += rA * normal; + output->pointB -= rB * normal; + } + else + { + // Shapes are overlapped when radii are considered. + // Move the witness points to the middle. + b2Vec2 p = 0.5f * (output->pointA + output->pointB); + output->pointA = p; + output->pointB = p; + output->distance = 0.0f; + } + } +} diff --git a/Dependencies/Box2D/src/Collision/b2Distance.h b/Dependencies/Box2D/src/Collision/b2Distance.h new file mode 100644 index 00000000..e380cacb --- /dev/null +++ b/Dependencies/Box2D/src/Collision/b2Distance.h @@ -0,0 +1,141 @@ + +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_DISTANCE_H +#define B2_DISTANCE_H + +#include + +class b2Shape; + +/// A distance proxy is used by the GJK algorithm. +/// It encapsulates any shape. +struct b2DistanceProxy +{ + b2DistanceProxy() : m_vertices(NULL), m_count(0), m_radius(0.0f) {} + + /// Initialize the proxy using the given shape. The shape + /// must remain in scope while the proxy is in use. + void Set(const b2Shape* shape, int32 index); + + /// Get the supporting vertex index in the given direction. + int32 GetSupport(const b2Vec2& d) const; + + /// Get the supporting vertex in the given direction. + const b2Vec2& GetSupportVertex(const b2Vec2& d) const; + + /// Get the vertex count. + int32 GetVertexCount() const; + + /// Get a vertex by index. Used by b2Distance. + const b2Vec2& GetVertex(int32 index) const; + + b2Vec2 m_buffer[2]; + const b2Vec2* m_vertices; + int32 m_count; + float32 m_radius; +}; + +/// Used to warm start b2Distance. +/// Set count to zero on first call. +struct b2SimplexCache +{ + float32 metric; ///< length or area + uint16 count; + uint8 indexA[3]; ///< vertices on shape A + uint8 indexB[3]; ///< vertices on shape B +}; + +/// Input for b2Distance. +/// You have to option to use the shape radii +/// in the computation. Even +struct b2DistanceInput +{ + b2DistanceProxy proxyA; + b2DistanceProxy proxyB; + b2Transform transformA; + b2Transform transformB; + bool useRadii; +}; + +/// Output for b2Distance. +struct b2DistanceOutput +{ + b2Vec2 pointA; ///< closest point on shapeA + b2Vec2 pointB; ///< closest point on shapeB + float32 distance; + int32 iterations; ///< number of GJK iterations used +}; + +/// Compute the closest points between two shapes. Supports any combination of: +/// b2CircleShape, b2PolygonShape, b2EdgeShape. The simplex cache is input/output. +/// On the first call set b2SimplexCache.count to zero. +void b2Distance(b2DistanceOutput* output, + b2SimplexCache* cache, + const b2DistanceInput* input); + + +////////////////////////////////////////////////////////////////////////// + +inline int32 b2DistanceProxy::GetVertexCount() const +{ + return m_count; +} + +inline const b2Vec2& b2DistanceProxy::GetVertex(int32 index) const +{ + b2Assert(0 <= index && index < m_count); + return m_vertices[index]; +} + +inline int32 b2DistanceProxy::GetSupport(const b2Vec2& d) const +{ + int32 bestIndex = 0; + float32 bestValue = b2Dot(m_vertices[0], d); + for (int32 i = 1; i < m_count; ++i) + { + float32 value = b2Dot(m_vertices[i], d); + if (value > bestValue) + { + bestIndex = i; + bestValue = value; + } + } + + return bestIndex; +} + +inline const b2Vec2& b2DistanceProxy::GetSupportVertex(const b2Vec2& d) const +{ + int32 bestIndex = 0; + float32 bestValue = b2Dot(m_vertices[0], d); + for (int32 i = 1; i < m_count; ++i) + { + float32 value = b2Dot(m_vertices[i], d); + if (value > bestValue) + { + bestIndex = i; + bestValue = value; + } + } + + return m_vertices[bestIndex]; +} + +#endif diff --git a/Dependencies/Box2D/src/Collision/b2DynamicTree.cpp b/Dependencies/Box2D/src/Collision/b2DynamicTree.cpp new file mode 100644 index 00000000..1b60efa4 --- /dev/null +++ b/Dependencies/Box2D/src/Collision/b2DynamicTree.cpp @@ -0,0 +1,778 @@ +/* +* Copyright (c) 2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include + +b2DynamicTree::b2DynamicTree() +{ + m_root = b2_nullNode; + + m_nodeCapacity = 16; + m_nodeCount = 0; + m_nodes = (b2TreeNode*)b2Alloc(m_nodeCapacity * sizeof(b2TreeNode)); + memset(m_nodes, 0, m_nodeCapacity * sizeof(b2TreeNode)); + + // Build a linked list for the free list. + for (int32 i = 0; i < m_nodeCapacity - 1; ++i) + { + m_nodes[i].next = i + 1; + m_nodes[i].height = -1; + } + m_nodes[m_nodeCapacity-1].next = b2_nullNode; + m_nodes[m_nodeCapacity-1].height = -1; + m_freeList = 0; + + m_path = 0; + + m_insertionCount = 0; +} + +b2DynamicTree::~b2DynamicTree() +{ + // This frees the entire tree in one shot. + b2Free(m_nodes); +} + +// Allocate a node from the pool. Grow the pool if necessary. +int32 b2DynamicTree::AllocateNode() +{ + // Expand the node pool as needed. + if (m_freeList == b2_nullNode) + { + b2Assert(m_nodeCount == m_nodeCapacity); + + // The free list is empty. Rebuild a bigger pool. + b2TreeNode* oldNodes = m_nodes; + m_nodeCapacity *= 2; + m_nodes = (b2TreeNode*)b2Alloc(m_nodeCapacity * sizeof(b2TreeNode)); + memcpy(m_nodes, oldNodes, m_nodeCount * sizeof(b2TreeNode)); + b2Free(oldNodes); + + // Build a linked list for the free list. The parent + // pointer becomes the "next" pointer. + for (int32 i = m_nodeCount; i < m_nodeCapacity - 1; ++i) + { + m_nodes[i].next = i + 1; + m_nodes[i].height = -1; + } + m_nodes[m_nodeCapacity-1].next = b2_nullNode; + m_nodes[m_nodeCapacity-1].height = -1; + m_freeList = m_nodeCount; + } + + // Peel a node off the free list. + int32 nodeId = m_freeList; + m_freeList = m_nodes[nodeId].next; + m_nodes[nodeId].parent = b2_nullNode; + m_nodes[nodeId].child1 = b2_nullNode; + m_nodes[nodeId].child2 = b2_nullNode; + m_nodes[nodeId].height = 0; + m_nodes[nodeId].userData = NULL; + ++m_nodeCount; + return nodeId; +} + +// Return a node to the pool. +void b2DynamicTree::FreeNode(int32 nodeId) +{ + b2Assert(0 <= nodeId && nodeId < m_nodeCapacity); + b2Assert(0 < m_nodeCount); + m_nodes[nodeId].next = m_freeList; + m_nodes[nodeId].height = -1; + m_freeList = nodeId; + --m_nodeCount; +} + +// Create a proxy in the tree as a leaf node. We return the index +// of the node instead of a pointer so that we can grow +// the node pool. +int32 b2DynamicTree::CreateProxy(const b2AABB& aabb, void* userData) +{ + int32 proxyId = AllocateNode(); + + // Fatten the aabb. + b2Vec2 r(b2_aabbExtension, b2_aabbExtension); + m_nodes[proxyId].aabb.lowerBound = aabb.lowerBound - r; + m_nodes[proxyId].aabb.upperBound = aabb.upperBound + r; + m_nodes[proxyId].userData = userData; + m_nodes[proxyId].height = 0; + + InsertLeaf(proxyId); + + return proxyId; +} + +void b2DynamicTree::DestroyProxy(int32 proxyId) +{ + b2Assert(0 <= proxyId && proxyId < m_nodeCapacity); + b2Assert(m_nodes[proxyId].IsLeaf()); + + RemoveLeaf(proxyId); + FreeNode(proxyId); +} + +bool b2DynamicTree::MoveProxy(int32 proxyId, const b2AABB& aabb, const b2Vec2& displacement) +{ + b2Assert(0 <= proxyId && proxyId < m_nodeCapacity); + + b2Assert(m_nodes[proxyId].IsLeaf()); + + if (m_nodes[proxyId].aabb.Contains(aabb)) + { + return false; + } + + RemoveLeaf(proxyId); + + // Extend AABB. + b2AABB b = aabb; + b2Vec2 r(b2_aabbExtension, b2_aabbExtension); + b.lowerBound = b.lowerBound - r; + b.upperBound = b.upperBound + r; + + // Predict AABB displacement. + b2Vec2 d = b2_aabbMultiplier * displacement; + + if (d.x < 0.0f) + { + b.lowerBound.x += d.x; + } + else + { + b.upperBound.x += d.x; + } + + if (d.y < 0.0f) + { + b.lowerBound.y += d.y; + } + else + { + b.upperBound.y += d.y; + } + + m_nodes[proxyId].aabb = b; + + InsertLeaf(proxyId); + return true; +} + +void b2DynamicTree::InsertLeaf(int32 leaf) +{ + ++m_insertionCount; + + if (m_root == b2_nullNode) + { + m_root = leaf; + m_nodes[m_root].parent = b2_nullNode; + return; + } + + // Find the best sibling for this node + b2AABB leafAABB = m_nodes[leaf].aabb; + int32 index = m_root; + while (m_nodes[index].IsLeaf() == false) + { + int32 child1 = m_nodes[index].child1; + int32 child2 = m_nodes[index].child2; + + float32 area = m_nodes[index].aabb.GetPerimeter(); + + b2AABB combinedAABB; + combinedAABB.Combine(m_nodes[index].aabb, leafAABB); + float32 combinedArea = combinedAABB.GetPerimeter(); + + // Cost of creating a new parent for this node and the new leaf + float32 cost = 2.0f * combinedArea; + + // Minimum cost of pushing the leaf further down the tree + float32 inheritanceCost = 2.0f * (combinedArea - area); + + // Cost of descending into child1 + float32 cost1; + if (m_nodes[child1].IsLeaf()) + { + b2AABB aabb; + aabb.Combine(leafAABB, m_nodes[child1].aabb); + cost1 = aabb.GetPerimeter() + inheritanceCost; + } + else + { + b2AABB aabb; + aabb.Combine(leafAABB, m_nodes[child1].aabb); + float32 oldArea = m_nodes[child1].aabb.GetPerimeter(); + float32 newArea = aabb.GetPerimeter(); + cost1 = (newArea - oldArea) + inheritanceCost; + } + + // Cost of descending into child2 + float32 cost2; + if (m_nodes[child2].IsLeaf()) + { + b2AABB aabb; + aabb.Combine(leafAABB, m_nodes[child2].aabb); + cost2 = aabb.GetPerimeter() + inheritanceCost; + } + else + { + b2AABB aabb; + aabb.Combine(leafAABB, m_nodes[child2].aabb); + float32 oldArea = m_nodes[child2].aabb.GetPerimeter(); + float32 newArea = aabb.GetPerimeter(); + cost2 = newArea - oldArea + inheritanceCost; + } + + // Descend according to the minimum cost. + if (cost < cost1 && cost < cost2) + { + break; + } + + // Descend + if (cost1 < cost2) + { + index = child1; + } + else + { + index = child2; + } + } + + int32 sibling = index; + + // Create a new parent. + int32 oldParent = m_nodes[sibling].parent; + int32 newParent = AllocateNode(); + m_nodes[newParent].parent = oldParent; + m_nodes[newParent].userData = NULL; + m_nodes[newParent].aabb.Combine(leafAABB, m_nodes[sibling].aabb); + m_nodes[newParent].height = m_nodes[sibling].height + 1; + + if (oldParent != b2_nullNode) + { + // The sibling was not the root. + if (m_nodes[oldParent].child1 == sibling) + { + m_nodes[oldParent].child1 = newParent; + } + else + { + m_nodes[oldParent].child2 = newParent; + } + + m_nodes[newParent].child1 = sibling; + m_nodes[newParent].child2 = leaf; + m_nodes[sibling].parent = newParent; + m_nodes[leaf].parent = newParent; + } + else + { + // The sibling was the root. + m_nodes[newParent].child1 = sibling; + m_nodes[newParent].child2 = leaf; + m_nodes[sibling].parent = newParent; + m_nodes[leaf].parent = newParent; + m_root = newParent; + } + + // Walk back up the tree fixing heights and AABBs + index = m_nodes[leaf].parent; + while (index != b2_nullNode) + { + index = Balance(index); + + int32 child1 = m_nodes[index].child1; + int32 child2 = m_nodes[index].child2; + + b2Assert(child1 != b2_nullNode); + b2Assert(child2 != b2_nullNode); + + m_nodes[index].height = 1 + b2Max(m_nodes[child1].height, m_nodes[child2].height); + m_nodes[index].aabb.Combine(m_nodes[child1].aabb, m_nodes[child2].aabb); + + index = m_nodes[index].parent; + } + + //Validate(); +} + +void b2DynamicTree::RemoveLeaf(int32 leaf) +{ + if (leaf == m_root) + { + m_root = b2_nullNode; + return; + } + + int32 parent = m_nodes[leaf].parent; + int32 grandParent = m_nodes[parent].parent; + int32 sibling; + if (m_nodes[parent].child1 == leaf) + { + sibling = m_nodes[parent].child2; + } + else + { + sibling = m_nodes[parent].child1; + } + + if (grandParent != b2_nullNode) + { + // Destroy parent and connect sibling to grandParent. + if (m_nodes[grandParent].child1 == parent) + { + m_nodes[grandParent].child1 = sibling; + } + else + { + m_nodes[grandParent].child2 = sibling; + } + m_nodes[sibling].parent = grandParent; + FreeNode(parent); + + // Adjust ancestor bounds. + int32 index = grandParent; + while (index != b2_nullNode) + { + index = Balance(index); + + int32 child1 = m_nodes[index].child1; + int32 child2 = m_nodes[index].child2; + + m_nodes[index].aabb.Combine(m_nodes[child1].aabb, m_nodes[child2].aabb); + m_nodes[index].height = 1 + b2Max(m_nodes[child1].height, m_nodes[child2].height); + + index = m_nodes[index].parent; + } + } + else + { + m_root = sibling; + m_nodes[sibling].parent = b2_nullNode; + FreeNode(parent); + } + + //Validate(); +} + +// Perform a left or right rotation if node A is imbalanced. +// Returns the new root index. +int32 b2DynamicTree::Balance(int32 iA) +{ + b2Assert(iA != b2_nullNode); + + b2TreeNode* A = m_nodes + iA; + if (A->IsLeaf() || A->height < 2) + { + return iA; + } + + int32 iB = A->child1; + int32 iC = A->child2; + b2Assert(0 <= iB && iB < m_nodeCapacity); + b2Assert(0 <= iC && iC < m_nodeCapacity); + + b2TreeNode* B = m_nodes + iB; + b2TreeNode* C = m_nodes + iC; + + int32 balance = C->height - B->height; + + // Rotate C up + if (balance > 1) + { + int32 iF = C->child1; + int32 iG = C->child2; + b2TreeNode* F = m_nodes + iF; + b2TreeNode* G = m_nodes + iG; + b2Assert(0 <= iF && iF < m_nodeCapacity); + b2Assert(0 <= iG && iG < m_nodeCapacity); + + // Swap A and C + C->child1 = iA; + C->parent = A->parent; + A->parent = iC; + + // A's old parent should point to C + if (C->parent != b2_nullNode) + { + if (m_nodes[C->parent].child1 == iA) + { + m_nodes[C->parent].child1 = iC; + } + else + { + b2Assert(m_nodes[C->parent].child2 == iA); + m_nodes[C->parent].child2 = iC; + } + } + else + { + m_root = iC; + } + + // Rotate + if (F->height > G->height) + { + C->child2 = iF; + A->child2 = iG; + G->parent = iA; + A->aabb.Combine(B->aabb, G->aabb); + C->aabb.Combine(A->aabb, F->aabb); + + A->height = 1 + b2Max(B->height, G->height); + C->height = 1 + b2Max(A->height, F->height); + } + else + { + C->child2 = iG; + A->child2 = iF; + F->parent = iA; + A->aabb.Combine(B->aabb, F->aabb); + C->aabb.Combine(A->aabb, G->aabb); + + A->height = 1 + b2Max(B->height, F->height); + C->height = 1 + b2Max(A->height, G->height); + } + + return iC; + } + + // Rotate B up + if (balance < -1) + { + int32 iD = B->child1; + int32 iE = B->child2; + b2TreeNode* D = m_nodes + iD; + b2TreeNode* E = m_nodes + iE; + b2Assert(0 <= iD && iD < m_nodeCapacity); + b2Assert(0 <= iE && iE < m_nodeCapacity); + + // Swap A and B + B->child1 = iA; + B->parent = A->parent; + A->parent = iB; + + // A's old parent should point to B + if (B->parent != b2_nullNode) + { + if (m_nodes[B->parent].child1 == iA) + { + m_nodes[B->parent].child1 = iB; + } + else + { + b2Assert(m_nodes[B->parent].child2 == iA); + m_nodes[B->parent].child2 = iB; + } + } + else + { + m_root = iB; + } + + // Rotate + if (D->height > E->height) + { + B->child2 = iD; + A->child1 = iE; + E->parent = iA; + A->aabb.Combine(C->aabb, E->aabb); + B->aabb.Combine(A->aabb, D->aabb); + + A->height = 1 + b2Max(C->height, E->height); + B->height = 1 + b2Max(A->height, D->height); + } + else + { + B->child2 = iE; + A->child1 = iD; + D->parent = iA; + A->aabb.Combine(C->aabb, D->aabb); + B->aabb.Combine(A->aabb, E->aabb); + + A->height = 1 + b2Max(C->height, D->height); + B->height = 1 + b2Max(A->height, E->height); + } + + return iB; + } + + return iA; +} + +int32 b2DynamicTree::GetHeight() const +{ + if (m_root == b2_nullNode) + { + return 0; + } + + return m_nodes[m_root].height; +} + +// +float32 b2DynamicTree::GetAreaRatio() const +{ + if (m_root == b2_nullNode) + { + return 0.0f; + } + + const b2TreeNode* root = m_nodes + m_root; + float32 rootArea = root->aabb.GetPerimeter(); + + float32 totalArea = 0.0f; + for (int32 i = 0; i < m_nodeCapacity; ++i) + { + const b2TreeNode* node = m_nodes + i; + if (node->height < 0) + { + // Free node in pool + continue; + } + + totalArea += node->aabb.GetPerimeter(); + } + + return totalArea / rootArea; +} + +// Compute the height of a sub-tree. +int32 b2DynamicTree::ComputeHeight(int32 nodeId) const +{ + b2Assert(0 <= nodeId && nodeId < m_nodeCapacity); + b2TreeNode* node = m_nodes + nodeId; + + if (node->IsLeaf()) + { + return 0; + } + + int32 height1 = ComputeHeight(node->child1); + int32 height2 = ComputeHeight(node->child2); + return 1 + b2Max(height1, height2); +} + +int32 b2DynamicTree::ComputeHeight() const +{ + int32 height = ComputeHeight(m_root); + return height; +} + +void b2DynamicTree::ValidateStructure(int32 index) const +{ + if (index == b2_nullNode) + { + return; + } + + if (index == m_root) + { + b2Assert(m_nodes[index].parent == b2_nullNode); + } + + const b2TreeNode* node = m_nodes + index; + + int32 child1 = node->child1; + int32 child2 = node->child2; + + if (node->IsLeaf()) + { + b2Assert(child1 == b2_nullNode); + b2Assert(child2 == b2_nullNode); + b2Assert(node->height == 0); + return; + } + + b2Assert(0 <= child1 && child1 < m_nodeCapacity); + b2Assert(0 <= child2 && child2 < m_nodeCapacity); + + b2Assert(m_nodes[child1].parent == index); + b2Assert(m_nodes[child2].parent == index); + + ValidateStructure(child1); + ValidateStructure(child2); +} + +void b2DynamicTree::ValidateMetrics(int32 index) const +{ + if (index == b2_nullNode) + { + return; + } + + const b2TreeNode* node = m_nodes + index; + + int32 child1 = node->child1; + int32 child2 = node->child2; + + if (node->IsLeaf()) + { + b2Assert(child1 == b2_nullNode); + b2Assert(child2 == b2_nullNode); + b2Assert(node->height == 0); + return; + } + + b2Assert(0 <= child1 && child1 < m_nodeCapacity); + b2Assert(0 <= child2 && child2 < m_nodeCapacity); + + int32 height1 = m_nodes[child1].height; + int32 height2 = m_nodes[child2].height; + int32 height; + height = 1 + b2Max(height1, height2); + b2Assert(node->height == height); + + b2AABB aabb; + aabb.Combine(m_nodes[child1].aabb, m_nodes[child2].aabb); + + b2Assert(aabb.lowerBound == node->aabb.lowerBound); + b2Assert(aabb.upperBound == node->aabb.upperBound); + + ValidateMetrics(child1); + ValidateMetrics(child2); +} + +void b2DynamicTree::Validate() const +{ + ValidateStructure(m_root); + ValidateMetrics(m_root); + + int32 freeCount = 0; + int32 freeIndex = m_freeList; + while (freeIndex != b2_nullNode) + { + b2Assert(0 <= freeIndex && freeIndex < m_nodeCapacity); + freeIndex = m_nodes[freeIndex].next; + ++freeCount; + } + + b2Assert(GetHeight() == ComputeHeight()); + + b2Assert(m_nodeCount + freeCount == m_nodeCapacity); +} + +int32 b2DynamicTree::GetMaxBalance() const +{ + int32 maxBalance = 0; + for (int32 i = 0; i < m_nodeCapacity; ++i) + { + const b2TreeNode* node = m_nodes + i; + if (node->height <= 1) + { + continue; + } + + b2Assert(node->IsLeaf() == false); + + int32 child1 = node->child1; + int32 child2 = node->child2; + int32 balance = b2Abs(m_nodes[child2].height - m_nodes[child1].height); + maxBalance = b2Max(maxBalance, balance); + } + + return maxBalance; +} + +void b2DynamicTree::RebuildBottomUp() +{ + int32* nodes = (int32*)b2Alloc(m_nodeCount * sizeof(int32)); + int32 count = 0; + + // Build array of leaves. Free the rest. + for (int32 i = 0; i < m_nodeCapacity; ++i) + { + if (m_nodes[i].height < 0) + { + // free node in pool + continue; + } + + if (m_nodes[i].IsLeaf()) + { + m_nodes[i].parent = b2_nullNode; + nodes[count] = i; + ++count; + } + else + { + FreeNode(i); + } + } + + while (count > 1) + { + float32 minCost = b2_maxFloat; + int32 iMin = -1, jMin = -1; + for (int32 i = 0; i < count; ++i) + { + b2AABB aabbi = m_nodes[nodes[i]].aabb; + + for (int32 j = i + 1; j < count; ++j) + { + b2AABB aabbj = m_nodes[nodes[j]].aabb; + b2AABB b; + b.Combine(aabbi, aabbj); + float32 cost = b.GetPerimeter(); + if (cost < minCost) + { + iMin = i; + jMin = j; + minCost = cost; + } + } + } + + int32 index1 = nodes[iMin]; + int32 index2 = nodes[jMin]; + b2TreeNode* child1 = m_nodes + index1; + b2TreeNode* child2 = m_nodes + index2; + + int32 parentIndex = AllocateNode(); + b2TreeNode* parent = m_nodes + parentIndex; + parent->child1 = index1; + parent->child2 = index2; + parent->height = 1 + b2Max(child1->height, child2->height); + parent->aabb.Combine(child1->aabb, child2->aabb); + parent->parent = b2_nullNode; + + child1->parent = parentIndex; + child2->parent = parentIndex; + + nodes[jMin] = nodes[count-1]; + nodes[iMin] = parentIndex; + --count; + } + + m_root = nodes[0]; + b2Free(nodes); + + Validate(); +} + +void b2DynamicTree::ShiftOrigin(const b2Vec2& newOrigin) +{ + // Build array of leaves. Free the rest. + for (int32 i = 0; i < m_nodeCapacity; ++i) + { + m_nodes[i].aabb.lowerBound -= newOrigin; + m_nodes[i].aabb.upperBound -= newOrigin; + } +} diff --git a/Dependencies/Box2D/src/Collision/b2DynamicTree.h b/Dependencies/Box2D/src/Collision/b2DynamicTree.h new file mode 100644 index 00000000..702e76da --- /dev/null +++ b/Dependencies/Box2D/src/Collision/b2DynamicTree.h @@ -0,0 +1,289 @@ +/* +* Copyright (c) 2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_DYNAMIC_TREE_H +#define B2_DYNAMIC_TREE_H + +#include +#include + +#define b2_nullNode (-1) + +/// A node in the dynamic tree. The client does not interact with this directly. +struct b2TreeNode +{ + bool IsLeaf() const + { + return child1 == b2_nullNode; + } + + /// Enlarged AABB + b2AABB aabb; + + void* userData; + + union + { + int32 parent; + int32 next; + }; + + int32 child1; + int32 child2; + + // leaf = 0, free node = -1 + int32 height; +}; + +/// A dynamic AABB tree broad-phase, inspired by Nathanael Presson's btDbvt. +/// A dynamic tree arranges data in a binary tree to accelerate +/// queries such as volume queries and ray casts. Leafs are proxies +/// with an AABB. In the tree we expand the proxy AABB by b2_fatAABBFactor +/// so that the proxy AABB is bigger than the client object. This allows the client +/// object to move by small amounts without triggering a tree update. +/// +/// Nodes are pooled and relocatable, so we use node indices rather than pointers. +class b2DynamicTree +{ +public: + /// Constructing the tree initializes the node pool. + b2DynamicTree(); + + /// Destroy the tree, freeing the node pool. + ~b2DynamicTree(); + + /// Create a proxy. Provide a tight fitting AABB and a userData pointer. + int32 CreateProxy(const b2AABB& aabb, void* userData); + + /// Destroy a proxy. This asserts if the id is invalid. + void DestroyProxy(int32 proxyId); + + /// Move a proxy with a swepted AABB. If the proxy has moved outside of its fattened AABB, + /// then the proxy is removed from the tree and re-inserted. Otherwise + /// the function returns immediately. + /// @return true if the proxy was re-inserted. + bool MoveProxy(int32 proxyId, const b2AABB& aabb1, const b2Vec2& displacement); + + /// Get proxy user data. + /// @return the proxy user data or 0 if the id is invalid. + void* GetUserData(int32 proxyId) const; + + /// Get the fat AABB for a proxy. + const b2AABB& GetFatAABB(int32 proxyId) const; + + /// Query an AABB for overlapping proxies. The callback class + /// is called for each proxy that overlaps the supplied AABB. + template + void Query(T* callback, const b2AABB& aabb) const; + + /// Ray-cast against the proxies in the tree. This relies on the callback + /// to perform a exact ray-cast in the case were the proxy contains a shape. + /// The callback also performs the any collision filtering. This has performance + /// roughly equal to k * log(n), where k is the number of collisions and n is the + /// number of proxies in the tree. + /// @param input the ray-cast input data. The ray extends from p1 to p1 + maxFraction * (p2 - p1). + /// @param callback a callback class that is called for each proxy that is hit by the ray. + template + void RayCast(T* callback, const b2RayCastInput& input) const; + + /// Validate this tree. For testing. + void Validate() const; + + /// Compute the height of the binary tree in O(N) time. Should not be + /// called often. + int32 GetHeight() const; + + /// Get the maximum balance of an node in the tree. The balance is the difference + /// in height of the two children of a node. + int32 GetMaxBalance() const; + + /// Get the ratio of the sum of the node areas to the root area. + float32 GetAreaRatio() const; + + /// Build an optimal tree. Very expensive. For testing. + void RebuildBottomUp(); + + /// Shift the world origin. Useful for large worlds. + /// The shift formula is: position -= newOrigin + /// @param newOrigin the new origin with respect to the old origin + void ShiftOrigin(const b2Vec2& newOrigin); + +private: + + int32 AllocateNode(); + void FreeNode(int32 node); + + void InsertLeaf(int32 node); + void RemoveLeaf(int32 node); + + int32 Balance(int32 index); + + int32 ComputeHeight() const; + int32 ComputeHeight(int32 nodeId) const; + + void ValidateStructure(int32 index) const; + void ValidateMetrics(int32 index) const; + + int32 m_root; + + b2TreeNode* m_nodes; + int32 m_nodeCount; + int32 m_nodeCapacity; + + int32 m_freeList; + + /// This is used to incrementally traverse the tree for re-balancing. + uint32 m_path; + + int32 m_insertionCount; +}; + +inline void* b2DynamicTree::GetUserData(int32 proxyId) const +{ + b2Assert(0 <= proxyId && proxyId < m_nodeCapacity); + return m_nodes[proxyId].userData; +} + +inline const b2AABB& b2DynamicTree::GetFatAABB(int32 proxyId) const +{ + b2Assert(0 <= proxyId && proxyId < m_nodeCapacity); + return m_nodes[proxyId].aabb; +} + +template +inline void b2DynamicTree::Query(T* callback, const b2AABB& aabb) const +{ + b2GrowableStack stack; + stack.Push(m_root); + + while (stack.GetCount() > 0) + { + int32 nodeId = stack.Pop(); + if (nodeId == b2_nullNode) + { + continue; + } + + const b2TreeNode* node = m_nodes + nodeId; + + if (b2TestOverlap(node->aabb, aabb)) + { + if (node->IsLeaf()) + { + bool proceed = callback->QueryCallback(nodeId); + if (proceed == false) + { + return; + } + } + else + { + stack.Push(node->child1); + stack.Push(node->child2); + } + } + } +} + +template +inline void b2DynamicTree::RayCast(T* callback, const b2RayCastInput& input) const +{ + b2Vec2 p1 = input.p1; + b2Vec2 p2 = input.p2; + b2Vec2 r = p2 - p1; + b2Assert(r.LengthSquared() > 0.0f); + r.Normalize(); + + // v is perpendicular to the segment. + b2Vec2 v = b2Cross(1.0f, r); + b2Vec2 abs_v = b2Abs(v); + + // Separating axis for segment (Gino, p80). + // |dot(v, p1 - c)| > dot(|v|, h) + + float32 maxFraction = input.maxFraction; + + // Build a bounding box for the segment. + b2AABB segmentAABB; + { + b2Vec2 t = p1 + maxFraction * (p2 - p1); + segmentAABB.lowerBound = b2Min(p1, t); + segmentAABB.upperBound = b2Max(p1, t); + } + + b2GrowableStack stack; + stack.Push(m_root); + + while (stack.GetCount() > 0) + { + int32 nodeId = stack.Pop(); + if (nodeId == b2_nullNode) + { + continue; + } + + const b2TreeNode* node = m_nodes + nodeId; + + if (b2TestOverlap(node->aabb, segmentAABB) == false) + { + continue; + } + + // Separating axis for segment (Gino, p80). + // |dot(v, p1 - c)| > dot(|v|, h) + b2Vec2 c = node->aabb.GetCenter(); + b2Vec2 h = node->aabb.GetExtents(); + float32 separation = b2Abs(b2Dot(v, p1 - c)) - b2Dot(abs_v, h); + if (separation > 0.0f) + { + continue; + } + + if (node->IsLeaf()) + { + b2RayCastInput subInput; + subInput.p1 = input.p1; + subInput.p2 = input.p2; + subInput.maxFraction = maxFraction; + + float32 value = callback->RayCastCallback(subInput, nodeId); + + if (value == 0.0f) + { + // The client has terminated the ray cast. + return; + } + + if (value > 0.0f) + { + // Update segment bounding box. + maxFraction = value; + b2Vec2 t = p1 + maxFraction * (p2 - p1); + segmentAABB.lowerBound = b2Min(p1, t); + segmentAABB.upperBound = b2Max(p1, t); + } + } + else + { + stack.Push(node->child1); + stack.Push(node->child2); + } + } +} + +#endif diff --git a/Dependencies/Box2D/src/Collision/b2TimeOfImpact.cpp b/Dependencies/Box2D/src/Collision/b2TimeOfImpact.cpp new file mode 100644 index 00000000..9c3fba6c --- /dev/null +++ b/Dependencies/Box2D/src/Collision/b2TimeOfImpact.cpp @@ -0,0 +1,486 @@ +/* +* Copyright (c) 2007-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include +#include +#include +#include + +#include + +float32 b2_toiTime, b2_toiMaxTime; +int32 b2_toiCalls, b2_toiIters, b2_toiMaxIters; +int32 b2_toiRootIters, b2_toiMaxRootIters; + +// +struct b2SeparationFunction +{ + enum Type + { + e_points, + e_faceA, + e_faceB + }; + + // TODO_ERIN might not need to return the separation + + float32 Initialize(const b2SimplexCache* cache, + const b2DistanceProxy* proxyA, const b2Sweep& sweepA, + const b2DistanceProxy* proxyB, const b2Sweep& sweepB, + float32 t1) + { + m_proxyA = proxyA; + m_proxyB = proxyB; + int32 count = cache->count; + b2Assert(0 < count && count < 3); + + m_sweepA = sweepA; + m_sweepB = sweepB; + + b2Transform xfA, xfB; + m_sweepA.GetTransform(&xfA, t1); + m_sweepB.GetTransform(&xfB, t1); + + if (count == 1) + { + m_type = e_points; + b2Vec2 localPointA = m_proxyA->GetVertex(cache->indexA[0]); + b2Vec2 localPointB = m_proxyB->GetVertex(cache->indexB[0]); + b2Vec2 pointA = b2Mul(xfA, localPointA); + b2Vec2 pointB = b2Mul(xfB, localPointB); + m_axis = pointB - pointA; + float32 s = m_axis.Normalize(); + return s; + } + else if (cache->indexA[0] == cache->indexA[1]) + { + // Two points on B and one on A. + m_type = e_faceB; + b2Vec2 localPointB1 = proxyB->GetVertex(cache->indexB[0]); + b2Vec2 localPointB2 = proxyB->GetVertex(cache->indexB[1]); + + m_axis = b2Cross(localPointB2 - localPointB1, 1.0f); + m_axis.Normalize(); + b2Vec2 normal = b2Mul(xfB.q, m_axis); + + m_localPoint = 0.5f * (localPointB1 + localPointB2); + b2Vec2 pointB = b2Mul(xfB, m_localPoint); + + b2Vec2 localPointA = proxyA->GetVertex(cache->indexA[0]); + b2Vec2 pointA = b2Mul(xfA, localPointA); + + float32 s = b2Dot(pointA - pointB, normal); + if (s < 0.0f) + { + m_axis = -m_axis; + s = -s; + } + return s; + } + else + { + // Two points on A and one or two points on B. + m_type = e_faceA; + b2Vec2 localPointA1 = m_proxyA->GetVertex(cache->indexA[0]); + b2Vec2 localPointA2 = m_proxyA->GetVertex(cache->indexA[1]); + + m_axis = b2Cross(localPointA2 - localPointA1, 1.0f); + m_axis.Normalize(); + b2Vec2 normal = b2Mul(xfA.q, m_axis); + + m_localPoint = 0.5f * (localPointA1 + localPointA2); + b2Vec2 pointA = b2Mul(xfA, m_localPoint); + + b2Vec2 localPointB = m_proxyB->GetVertex(cache->indexB[0]); + b2Vec2 pointB = b2Mul(xfB, localPointB); + + float32 s = b2Dot(pointB - pointA, normal); + if (s < 0.0f) + { + m_axis = -m_axis; + s = -s; + } + return s; + } + } + + // + float32 FindMinSeparation(int32* indexA, int32* indexB, float32 t) const + { + b2Transform xfA, xfB; + m_sweepA.GetTransform(&xfA, t); + m_sweepB.GetTransform(&xfB, t); + + switch (m_type) + { + case e_points: + { + b2Vec2 axisA = b2MulT(xfA.q, m_axis); + b2Vec2 axisB = b2MulT(xfB.q, -m_axis); + + *indexA = m_proxyA->GetSupport(axisA); + *indexB = m_proxyB->GetSupport(axisB); + + b2Vec2 localPointA = m_proxyA->GetVertex(*indexA); + b2Vec2 localPointB = m_proxyB->GetVertex(*indexB); + + b2Vec2 pointA = b2Mul(xfA, localPointA); + b2Vec2 pointB = b2Mul(xfB, localPointB); + + float32 separation = b2Dot(pointB - pointA, m_axis); + return separation; + } + + case e_faceA: + { + b2Vec2 normal = b2Mul(xfA.q, m_axis); + b2Vec2 pointA = b2Mul(xfA, m_localPoint); + + b2Vec2 axisB = b2MulT(xfB.q, -normal); + + *indexA = -1; + *indexB = m_proxyB->GetSupport(axisB); + + b2Vec2 localPointB = m_proxyB->GetVertex(*indexB); + b2Vec2 pointB = b2Mul(xfB, localPointB); + + float32 separation = b2Dot(pointB - pointA, normal); + return separation; + } + + case e_faceB: + { + b2Vec2 normal = b2Mul(xfB.q, m_axis); + b2Vec2 pointB = b2Mul(xfB, m_localPoint); + + b2Vec2 axisA = b2MulT(xfA.q, -normal); + + *indexB = -1; + *indexA = m_proxyA->GetSupport(axisA); + + b2Vec2 localPointA = m_proxyA->GetVertex(*indexA); + b2Vec2 pointA = b2Mul(xfA, localPointA); + + float32 separation = b2Dot(pointA - pointB, normal); + return separation; + } + + default: + b2Assert(false); + *indexA = -1; + *indexB = -1; + return 0.0f; + } + } + + // + float32 Evaluate(int32 indexA, int32 indexB, float32 t) const + { + b2Transform xfA, xfB; + m_sweepA.GetTransform(&xfA, t); + m_sweepB.GetTransform(&xfB, t); + + switch (m_type) + { + case e_points: + { + b2Vec2 localPointA = m_proxyA->GetVertex(indexA); + b2Vec2 localPointB = m_proxyB->GetVertex(indexB); + + b2Vec2 pointA = b2Mul(xfA, localPointA); + b2Vec2 pointB = b2Mul(xfB, localPointB); + float32 separation = b2Dot(pointB - pointA, m_axis); + + return separation; + } + + case e_faceA: + { + b2Vec2 normal = b2Mul(xfA.q, m_axis); + b2Vec2 pointA = b2Mul(xfA, m_localPoint); + + b2Vec2 localPointB = m_proxyB->GetVertex(indexB); + b2Vec2 pointB = b2Mul(xfB, localPointB); + + float32 separation = b2Dot(pointB - pointA, normal); + return separation; + } + + case e_faceB: + { + b2Vec2 normal = b2Mul(xfB.q, m_axis); + b2Vec2 pointB = b2Mul(xfB, m_localPoint); + + b2Vec2 localPointA = m_proxyA->GetVertex(indexA); + b2Vec2 pointA = b2Mul(xfA, localPointA); + + float32 separation = b2Dot(pointA - pointB, normal); + return separation; + } + + default: + b2Assert(false); + return 0.0f; + } + } + + const b2DistanceProxy* m_proxyA; + const b2DistanceProxy* m_proxyB; + b2Sweep m_sweepA, m_sweepB; + Type m_type; + b2Vec2 m_localPoint; + b2Vec2 m_axis; +}; + +// CCD via the local separating axis method. This seeks progression +// by computing the largest time at which separation is maintained. +void b2TimeOfImpact(b2TOIOutput* output, const b2TOIInput* input) +{ + b2Timer timer; + + ++b2_toiCalls; + + output->state = b2TOIOutput::e_unknown; + output->t = input->tMax; + + const b2DistanceProxy* proxyA = &input->proxyA; + const b2DistanceProxy* proxyB = &input->proxyB; + + b2Sweep sweepA = input->sweepA; + b2Sweep sweepB = input->sweepB; + + // Large rotations can make the root finder fail, so we normalize the + // sweep angles. + sweepA.Normalize(); + sweepB.Normalize(); + + float32 tMax = input->tMax; + + float32 totalRadius = proxyA->m_radius + proxyB->m_radius; + float32 target = b2Max(b2_linearSlop, totalRadius - 3.0f * b2_linearSlop); + float32 tolerance = 0.25f * b2_linearSlop; + b2Assert(target > tolerance); + + float32 t1 = 0.0f; + const int32 k_maxIterations = 20; // TODO_ERIN b2Settings + int32 iter = 0; + + // Prepare input for distance query. + b2SimplexCache cache; + cache.count = 0; + b2DistanceInput distanceInput; + distanceInput.proxyA = input->proxyA; + distanceInput.proxyB = input->proxyB; + distanceInput.useRadii = false; + + // The outer loop progressively attempts to compute new separating axes. + // This loop terminates when an axis is repeated (no progress is made). + for(;;) + { + b2Transform xfA, xfB; + sweepA.GetTransform(&xfA, t1); + sweepB.GetTransform(&xfB, t1); + + // Get the distance between shapes. We can also use the results + // to get a separating axis. + distanceInput.transformA = xfA; + distanceInput.transformB = xfB; + b2DistanceOutput distanceOutput; + b2Distance(&distanceOutput, &cache, &distanceInput); + + // If the shapes are overlapped, we give up on continuous collision. + if (distanceOutput.distance <= 0.0f) + { + // Failure! + output->state = b2TOIOutput::e_overlapped; + output->t = 0.0f; + break; + } + + if (distanceOutput.distance < target + tolerance) + { + // Victory! + output->state = b2TOIOutput::e_touching; + output->t = t1; + break; + } + + // Initialize the separating axis. + b2SeparationFunction fcn; + fcn.Initialize(&cache, proxyA, sweepA, proxyB, sweepB, t1); +#if 0 + // Dump the curve seen by the root finder + { + const int32 N = 100; + float32 dx = 1.0f / N; + float32 xs[N+1]; + float32 fs[N+1]; + + float32 x = 0.0f; + + for (int32 i = 0; i <= N; ++i) + { + sweepA.GetTransform(&xfA, x); + sweepB.GetTransform(&xfB, x); + float32 f = fcn.Evaluate(xfA, xfB) - target; + + printf("%g %g\n", x, f); + + xs[i] = x; + fs[i] = f; + + x += dx; + } + } +#endif + + // Compute the TOI on the separating axis. We do this by successively + // resolving the deepest point. This loop is bounded by the number of vertices. + bool done = false; + float32 t2 = tMax; + int32 pushBackIter = 0; + for (;;) + { + // Find the deepest point at t2. Store the witness point indices. + int32 indexA, indexB; + float32 s2 = fcn.FindMinSeparation(&indexA, &indexB, t2); + + // Is the final configuration separated? + if (s2 > target + tolerance) + { + // Victory! + output->state = b2TOIOutput::e_separated; + output->t = tMax; + done = true; + break; + } + + // Has the separation reached tolerance? + if (s2 > target - tolerance) + { + // Advance the sweeps + t1 = t2; + break; + } + + // Compute the initial separation of the witness points. + float32 s1 = fcn.Evaluate(indexA, indexB, t1); + + // Check for initial overlap. This might happen if the root finder + // runs out of iterations. + if (s1 < target - tolerance) + { + output->state = b2TOIOutput::e_failed; + output->t = t1; + done = true; + break; + } + + // Check for touching + if (s1 <= target + tolerance) + { + // Victory! t1 should hold the TOI (could be 0.0). + output->state = b2TOIOutput::e_touching; + output->t = t1; + done = true; + break; + } + + // Compute 1D root of: f(x) - target = 0 + int32 rootIterCount = 0; + float32 a1 = t1, a2 = t2; + for (;;) + { + // Use a mix of the secant rule and bisection. + float32 t; + if (rootIterCount & 1) + { + // Secant rule to improve convergence. + t = a1 + (target - s1) * (a2 - a1) / (s2 - s1); + } + else + { + // Bisection to guarantee progress. + t = 0.5f * (a1 + a2); + } + + ++rootIterCount; + ++b2_toiRootIters; + + float32 s = fcn.Evaluate(indexA, indexB, t); + + if (b2Abs(s - target) < tolerance) + { + // t2 holds a tentative value for t1 + t2 = t; + break; + } + + // Ensure we continue to bracket the root. + if (s > target) + { + a1 = t; + s1 = s; + } + else + { + a2 = t; + s2 = s; + } + + if (rootIterCount == 50) + { + break; + } + } + + b2_toiMaxRootIters = b2Max(b2_toiMaxRootIters, rootIterCount); + + ++pushBackIter; + + if (pushBackIter == b2_maxPolygonVertices) + { + break; + } + } + + ++iter; + ++b2_toiIters; + + if (done) + { + break; + } + + if (iter == k_maxIterations) + { + // Root finder got stuck. Semi-victory. + output->state = b2TOIOutput::e_failed; + output->t = t1; + break; + } + } + + b2_toiMaxIters = b2Max(b2_toiMaxIters, iter); + + float32 time = timer.GetMilliseconds(); + b2_toiMaxTime = b2Max(b2_toiMaxTime, time); + b2_toiTime += time; +} diff --git a/Dependencies/Box2D/src/Collision/b2TimeOfImpact.h b/Dependencies/Box2D/src/Collision/b2TimeOfImpact.h new file mode 100644 index 00000000..6373c31f --- /dev/null +++ b/Dependencies/Box2D/src/Collision/b2TimeOfImpact.h @@ -0,0 +1,58 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_TIME_OF_IMPACT_H +#define B2_TIME_OF_IMPACT_H + +#include +#include + +/// Input parameters for b2TimeOfImpact +struct b2TOIInput +{ + b2DistanceProxy proxyA; + b2DistanceProxy proxyB; + b2Sweep sweepA; + b2Sweep sweepB; + float32 tMax; // defines sweep interval [0, tMax] +}; + +// Output parameters for b2TimeOfImpact. +struct b2TOIOutput +{ + enum State + { + e_unknown, + e_failed, + e_overlapped, + e_touching, + e_separated + }; + + State state; + float32 t; +}; + +/// Compute the upper bound on time before two shapes penetrate. Time is represented as +/// a fraction between [0,tMax]. This uses a swept separating axis and may miss some intermediate, +/// non-tunneling collision. If you change the time interval, you should call this function +/// again. +/// Note: use b2Distance to compute the contact point and normal at the time of impact. +void b2TimeOfImpact(b2TOIOutput* output, const b2TOIInput* input); + +#endif diff --git a/Dependencies/Box2D/src/Common/b2BlockAllocator.cpp b/Dependencies/Box2D/src/Common/b2BlockAllocator.cpp new file mode 100644 index 00000000..419f315f --- /dev/null +++ b/Dependencies/Box2D/src/Common/b2BlockAllocator.cpp @@ -0,0 +1,215 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include +#include + +int32 b2BlockAllocator::s_blockSizes[b2_blockSizes] = +{ + 16, // 0 + 32, // 1 + 64, // 2 + 96, // 3 + 128, // 4 + 160, // 5 + 192, // 6 + 224, // 7 + 256, // 8 + 320, // 9 + 384, // 10 + 448, // 11 + 512, // 12 + 640, // 13 +}; +uint8 b2BlockAllocator::s_blockSizeLookup[b2_maxBlockSize + 1]; +bool b2BlockAllocator::s_blockSizeLookupInitialized; + +struct b2Chunk +{ + int32 blockSize; + b2Block* blocks; +}; + +struct b2Block +{ + b2Block* next; +}; + +b2BlockAllocator::b2BlockAllocator() +{ + b2Assert(b2_blockSizes < UCHAR_MAX); + + m_chunkSpace = b2_chunkArrayIncrement; + m_chunkCount = 0; + m_chunks = (b2Chunk*)b2Alloc(m_chunkSpace * sizeof(b2Chunk)); + + memset(m_chunks, 0, m_chunkSpace * sizeof(b2Chunk)); + memset(m_freeLists, 0, sizeof(m_freeLists)); + + if (s_blockSizeLookupInitialized == false) + { + int32 j = 0; + for (int32 i = 1; i <= b2_maxBlockSize; ++i) + { + b2Assert(j < b2_blockSizes); + if (i <= s_blockSizes[j]) + { + s_blockSizeLookup[i] = (uint8)j; + } + else + { + ++j; + s_blockSizeLookup[i] = (uint8)j; + } + } + + s_blockSizeLookupInitialized = true; + } +} + +b2BlockAllocator::~b2BlockAllocator() +{ + for (int32 i = 0; i < m_chunkCount; ++i) + { + b2Free(m_chunks[i].blocks); + } + + b2Free(m_chunks); +} + +void* b2BlockAllocator::Allocate(int32 size) +{ + if (size == 0) + return NULL; + + b2Assert(0 < size); + + if (size > b2_maxBlockSize) + { + return b2Alloc(size); + } + + int32 index = s_blockSizeLookup[size]; + b2Assert(0 <= index && index < b2_blockSizes); + + if (m_freeLists[index]) + { + b2Block* block = m_freeLists[index]; + m_freeLists[index] = block->next; + return block; + } + else + { + if (m_chunkCount == m_chunkSpace) + { + b2Chunk* oldChunks = m_chunks; + m_chunkSpace += b2_chunkArrayIncrement; + m_chunks = (b2Chunk*)b2Alloc(m_chunkSpace * sizeof(b2Chunk)); + memcpy(m_chunks, oldChunks, m_chunkCount * sizeof(b2Chunk)); + memset(m_chunks + m_chunkCount, 0, b2_chunkArrayIncrement * sizeof(b2Chunk)); + b2Free(oldChunks); + } + + b2Chunk* chunk = m_chunks + m_chunkCount; + chunk->blocks = (b2Block*)b2Alloc(b2_chunkSize); +#if defined(_DEBUG) + memset(chunk->blocks, 0xcd, b2_chunkSize); +#endif + int32 blockSize = s_blockSizes[index]; + chunk->blockSize = blockSize; + int32 blockCount = b2_chunkSize / blockSize; + b2Assert(blockCount * blockSize <= b2_chunkSize); + for (int32 i = 0; i < blockCount - 1; ++i) + { + b2Block* block = (b2Block*)((int8*)chunk->blocks + blockSize * i); + b2Block* next = (b2Block*)((int8*)chunk->blocks + blockSize * (i + 1)); + block->next = next; + } + b2Block* last = (b2Block*)((int8*)chunk->blocks + blockSize * (blockCount - 1)); + last->next = NULL; + + m_freeLists[index] = chunk->blocks->next; + ++m_chunkCount; + + return chunk->blocks; + } +} + +void b2BlockAllocator::Free(void* p, int32 size) +{ + if (size == 0) + { + return; + } + + b2Assert(0 < size); + + if (size > b2_maxBlockSize) + { + b2Free(p); + return; + } + + int32 index = s_blockSizeLookup[size]; + b2Assert(0 <= index && index < b2_blockSizes); + +#ifdef _DEBUG + // Verify the memory address and size is valid. + int32 blockSize = s_blockSizes[index]; + bool found = false; + for (int32 i = 0; i < m_chunkCount; ++i) + { + b2Chunk* chunk = m_chunks + i; + if (chunk->blockSize != blockSize) + { + b2Assert( (int8*)p + blockSize <= (int8*)chunk->blocks || + (int8*)chunk->blocks + b2_chunkSize <= (int8*)p); + } + else + { + if ((int8*)chunk->blocks <= (int8*)p && (int8*)p + blockSize <= (int8*)chunk->blocks + b2_chunkSize) + { + found = true; + } + } + } + + b2Assert(found); + + memset(p, 0xfd, blockSize); +#endif + + b2Block* block = (b2Block*)p; + block->next = m_freeLists[index]; + m_freeLists[index] = block; +} + +void b2BlockAllocator::Clear() +{ + for (int32 i = 0; i < m_chunkCount; ++i) + { + b2Free(m_chunks[i].blocks); + } + + m_chunkCount = 0; + memset(m_chunks, 0, m_chunkSpace * sizeof(b2Chunk)); + + memset(m_freeLists, 0, sizeof(m_freeLists)); +} diff --git a/Dependencies/Box2D/src/Common/b2BlockAllocator.h b/Dependencies/Box2D/src/Common/b2BlockAllocator.h new file mode 100644 index 00000000..618cc2d1 --- /dev/null +++ b/Dependencies/Box2D/src/Common/b2BlockAllocator.h @@ -0,0 +1,62 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_BLOCK_ALLOCATOR_H +#define B2_BLOCK_ALLOCATOR_H + +#include + +const int32 b2_chunkSize = 16 * 1024; +const int32 b2_maxBlockSize = 640; +const int32 b2_blockSizes = 14; +const int32 b2_chunkArrayIncrement = 128; + +struct b2Block; +struct b2Chunk; + +/// This is a small object allocator used for allocating small +/// objects that persist for more than one time step. +/// See: http://www.codeproject.com/useritems/Small_Block_Allocator.asp +class b2BlockAllocator +{ +public: + b2BlockAllocator(); + ~b2BlockAllocator(); + + /// Allocate memory. This will use b2Alloc if the size is larger than b2_maxBlockSize. + void* Allocate(int32 size); + + /// Free memory. This will use b2Free if the size is larger than b2_maxBlockSize. + void Free(void* p, int32 size); + + void Clear(); + +private: + + b2Chunk* m_chunks; + int32 m_chunkCount; + int32 m_chunkSpace; + + b2Block* m_freeLists[b2_blockSizes]; + + static int32 s_blockSizes[b2_blockSizes]; + static uint8 s_blockSizeLookup[b2_maxBlockSize + 1]; + static bool s_blockSizeLookupInitialized; +}; + +#endif diff --git a/Dependencies/Box2D/src/Common/b2Draw.cpp b/Dependencies/Box2D/src/Common/b2Draw.cpp new file mode 100644 index 00000000..49134950 --- /dev/null +++ b/Dependencies/Box2D/src/Common/b2Draw.cpp @@ -0,0 +1,44 @@ +/* +* Copyright (c) 2011 Erin Catto http://box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include + +b2Draw::b2Draw() +{ + m_drawFlags = 0; +} + +void b2Draw::SetFlags(uint32 flags) +{ + m_drawFlags = flags; +} + +uint32 b2Draw::GetFlags() const +{ + return m_drawFlags; +} + +void b2Draw::AppendFlags(uint32 flags) +{ + m_drawFlags |= flags; +} + +void b2Draw::ClearFlags(uint32 flags) +{ + m_drawFlags &= ~flags; +} diff --git a/Dependencies/Box2D/src/Common/b2Draw.h b/Dependencies/Box2D/src/Common/b2Draw.h new file mode 100644 index 00000000..02d7fcb7 --- /dev/null +++ b/Dependencies/Box2D/src/Common/b2Draw.h @@ -0,0 +1,86 @@ +/* +* Copyright (c) 2011 Erin Catto http://box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_DRAW_H +#define B2_DRAW_H + +#include + +/// Color for debug drawing. Each value has the range [0,1]. +struct b2Color +{ + b2Color() {} + b2Color(float32 r, float32 g, float32 b, float32 a = 1.0f) : r(r), g(g), b(b), a(a) {} + void Set(float32 ri, float32 gi, float32 bi, float32 ai = 1.0f) { r = ri; g = gi; b = bi; a = ai; } + float32 r, g, b, a; +}; + +/// Implement and register this class with a b2World to provide debug drawing of physics +/// entities in your game. +class b2Draw +{ +public: + b2Draw(); + + virtual ~b2Draw() {} + + enum + { + e_shapeBit = 0x0001, ///< draw shapes + e_jointBit = 0x0002, ///< draw joint connections + e_aabbBit = 0x0004, ///< draw axis aligned bounding boxes + e_pairBit = 0x0008, ///< draw broad-phase pairs + e_centerOfMassBit = 0x0010 ///< draw center of mass frame + }; + + /// Set the drawing flags. + void SetFlags(uint32 flags); + + /// Get the drawing flags. + uint32 GetFlags() const; + + /// Append flags to the current flags. + void AppendFlags(uint32 flags); + + /// Clear flags from the current flags. + void ClearFlags(uint32 flags); + + /// Draw a closed polygon provided in CCW order. + virtual void DrawPolygon(const b2Vec2* vertices, int32 vertexCount, const b2Color& color) = 0; + + /// Draw a solid closed polygon provided in CCW order. + virtual void DrawSolidPolygon(const b2Vec2* vertices, int32 vertexCount, const b2Color& color) = 0; + + /// Draw a circle. + virtual void DrawCircle(const b2Vec2& center, float32 radius, const b2Color& color) = 0; + + /// Draw a solid circle. + virtual void DrawSolidCircle(const b2Vec2& center, float32 radius, const b2Vec2& axis, const b2Color& color) = 0; + + /// Draw a line segment. + virtual void DrawSegment(const b2Vec2& p1, const b2Vec2& p2, const b2Color& color) = 0; + + /// Draw a transform. Choose your own length scale. + /// @param xf a transform. + virtual void DrawTransform(const b2Transform& xf) = 0; + +protected: + uint32 m_drawFlags; +}; + +#endif diff --git a/Dependencies/Box2D/src/Common/b2GrowableStack.h b/Dependencies/Box2D/src/Common/b2GrowableStack.h new file mode 100644 index 00000000..27aa27be --- /dev/null +++ b/Dependencies/Box2D/src/Common/b2GrowableStack.h @@ -0,0 +1,85 @@ +/* +* Copyright (c) 2010 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_GROWABLE_STACK_H +#define B2_GROWABLE_STACK_H +#include +#include + +/// This is a growable LIFO stack with an initial capacity of N. +/// If the stack size exceeds the initial capacity, the heap is used +/// to increase the size of the stack. +template +class b2GrowableStack +{ +public: + b2GrowableStack() + { + m_stack = m_array; + m_count = 0; + m_capacity = N; + } + + ~b2GrowableStack() + { + if (m_stack != m_array) + { + b2Free(m_stack); + m_stack = NULL; + } + } + + void Push(const T& element) + { + if (m_count == m_capacity) + { + T* old = m_stack; + m_capacity *= 2; + m_stack = (T*)b2Alloc(m_capacity * sizeof(T)); + memcpy(m_stack, old, m_count * sizeof(T)); + if (old != m_array) + { + b2Free(old); + } + } + + m_stack[m_count] = element; + ++m_count; + } + + T Pop() + { + b2Assert(m_count > 0); + --m_count; + return m_stack[m_count]; + } + + int32 GetCount() + { + return m_count; + } + +private: + T* m_stack; + T m_array[N]; + int32 m_count; + int32 m_capacity; +}; + + +#endif diff --git a/Dependencies/Box2D/src/Common/b2Math.cpp b/Dependencies/Box2D/src/Common/b2Math.cpp new file mode 100644 index 00000000..5e820106 --- /dev/null +++ b/Dependencies/Box2D/src/Common/b2Math.cpp @@ -0,0 +1,94 @@ +/* +* Copyright (c) 2007-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include + +const b2Vec2 b2Vec2_zero(0.0f, 0.0f); + +/// Solve A * x = b, where b is a column vector. This is more efficient +/// than computing the inverse in one-shot cases. +b2Vec3 b2Mat33::Solve33(const b2Vec3& b) const +{ + float32 det = b2Dot(ex, b2Cross(ey, ez)); + if (det != 0.0f) + { + det = 1.0f / det; + } + b2Vec3 x; + x.x = det * b2Dot(b, b2Cross(ey, ez)); + x.y = det * b2Dot(ex, b2Cross(b, ez)); + x.z = det * b2Dot(ex, b2Cross(ey, b)); + return x; +} + +/// Solve A * x = b, where b is a column vector. This is more efficient +/// than computing the inverse in one-shot cases. +b2Vec2 b2Mat33::Solve22(const b2Vec2& b) const +{ + float32 a11 = ex.x, a12 = ey.x, a21 = ex.y, a22 = ey.y; + float32 det = a11 * a22 - a12 * a21; + if (det != 0.0f) + { + det = 1.0f / det; + } + b2Vec2 x; + x.x = det * (a22 * b.x - a12 * b.y); + x.y = det * (a11 * b.y - a21 * b.x); + return x; +} + +/// +void b2Mat33::GetInverse22(b2Mat33* M) const +{ + float32 a = ex.x, b = ey.x, c = ex.y, d = ey.y; + float32 det = a * d - b * c; + if (det != 0.0f) + { + det = 1.0f / det; + } + + M->ex.x = det * d; M->ey.x = -det * b; M->ex.z = 0.0f; + M->ex.y = -det * c; M->ey.y = det * a; M->ey.z = 0.0f; + M->ez.x = 0.0f; M->ez.y = 0.0f; M->ez.z = 0.0f; +} + +/// Returns the zero matrix if singular. +void b2Mat33::GetSymInverse33(b2Mat33* M) const +{ + float32 det = b2Dot(ex, b2Cross(ey, ez)); + if (det != 0.0f) + { + det = 1.0f / det; + } + + float32 a11 = ex.x, a12 = ey.x, a13 = ez.x; + float32 a22 = ey.y, a23 = ez.y; + float32 a33 = ez.z; + + M->ex.x = det * (a22 * a33 - a23 * a23); + M->ex.y = det * (a13 * a23 - a12 * a33); + M->ex.z = det * (a12 * a23 - a13 * a22); + + M->ey.x = M->ex.y; + M->ey.y = det * (a11 * a33 - a13 * a13); + M->ey.z = det * (a13 * a12 - a11 * a23); + + M->ez.x = M->ex.z; + M->ez.y = M->ey.z; + M->ez.z = det * (a11 * a22 - a12 * a12); +} diff --git a/Dependencies/Box2D/src/Common/b2Math.h b/Dependencies/Box2D/src/Common/b2Math.h new file mode 100644 index 00000000..65ec28f1 --- /dev/null +++ b/Dependencies/Box2D/src/Common/b2Math.h @@ -0,0 +1,720 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_MATH_H +#define B2_MATH_H + +#include +#include + +/// This function is used to ensure that a floating point number is not a NaN or infinity. +inline bool b2IsValid(float32 x) +{ + int32 ix = *reinterpret_cast(&x); + return (ix & 0x7f800000) != 0x7f800000; +} + +/// This is a approximate yet fast inverse square-root. +inline float32 b2InvSqrt(float32 x) +{ + union + { + float32 x; + int32 i; + } convert; + + convert.x = x; + float32 xhalf = 0.5f * x; + convert.i = 0x5f3759df - (convert.i >> 1); + x = convert.x; + x = x * (1.5f - xhalf * x * x); + return x; +} + +#define b2Sqrt(x) sqrtf(x) +#define b2Atan2(y, x) atan2f(y, x) + +/// A 2D column vector. +struct b2Vec2 +{ + /// Default constructor does nothing (for performance). + b2Vec2() {} + + /// Construct using coordinates. + b2Vec2(float32 x, float32 y) : x(x), y(y) {} + + /// Set this vector to all zeros. + void SetZero() { x = 0.0f; y = 0.0f; } + + /// Set this vector to some specified coordinates. + void Set(float32 x_, float32 y_) { x = x_; y = y_; } + + /// Negate this vector. + b2Vec2 operator -() const { b2Vec2 v; v.Set(-x, -y); return v; } + + /// Read from and indexed element. + float32 operator () (int32 i) const + { + return (&x)[i]; + } + + /// Write to an indexed element. + float32& operator () (int32 i) + { + return (&x)[i]; + } + + /// Add a vector to this vector. + void operator += (const b2Vec2& v) + { + x += v.x; y += v.y; + } + + /// Subtract a vector from this vector. + void operator -= (const b2Vec2& v) + { + x -= v.x; y -= v.y; + } + + /// Multiply this vector by a scalar. + void operator *= (float32 a) + { + x *= a; y *= a; + } + + /// Get the length of this vector (the norm). + float32 Length() const + { + return b2Sqrt(x * x + y * y); + } + + /// Get the length squared. For performance, use this instead of + /// b2Vec2::Length (if possible). + float32 LengthSquared() const + { + return x * x + y * y; + } + + /// Convert this vector into a unit vector. Returns the length. + float32 Normalize() + { + float32 length = Length(); + if (length < b2_epsilon) + { + return 0.0f; + } + float32 invLength = 1.0f / length; + x *= invLength; + y *= invLength; + + return length; + } + + /// Does this vector contain finite coordinates? + bool IsValid() const + { + return b2IsValid(x) && b2IsValid(y); + } + + /// Get the skew vector such that dot(skew_vec, other) == cross(vec, other) + b2Vec2 Skew() const + { + return b2Vec2(-y, x); + } + + float32 x, y; +}; + +/// A 2D column vector with 3 elements. +struct b2Vec3 +{ + /// Default constructor does nothing (for performance). + b2Vec3() {} + + /// Construct using coordinates. + b2Vec3(float32 x, float32 y, float32 z) : x(x), y(y), z(z) {} + + /// Set this vector to all zeros. + void SetZero() { x = 0.0f; y = 0.0f; z = 0.0f; } + + /// Set this vector to some specified coordinates. + void Set(float32 x_, float32 y_, float32 z_) { x = x_; y = y_; z = z_; } + + /// Negate this vector. + b2Vec3 operator -() const { b2Vec3 v; v.Set(-x, -y, -z); return v; } + + /// Add a vector to this vector. + void operator += (const b2Vec3& v) + { + x += v.x; y += v.y; z += v.z; + } + + /// Subtract a vector from this vector. + void operator -= (const b2Vec3& v) + { + x -= v.x; y -= v.y; z -= v.z; + } + + /// Multiply this vector by a scalar. + void operator *= (float32 s) + { + x *= s; y *= s; z *= s; + } + + float32 x, y, z; +}; + +/// A 2-by-2 matrix. Stored in column-major order. +struct b2Mat22 +{ + /// The default constructor does nothing (for performance). + b2Mat22() {} + + /// Construct this matrix using columns. + b2Mat22(const b2Vec2& c1, const b2Vec2& c2) + { + ex = c1; + ey = c2; + } + + /// Construct this matrix using scalars. + b2Mat22(float32 a11, float32 a12, float32 a21, float32 a22) + { + ex.x = a11; ex.y = a21; + ey.x = a12; ey.y = a22; + } + + /// Initialize this matrix using columns. + void Set(const b2Vec2& c1, const b2Vec2& c2) + { + ex = c1; + ey = c2; + } + + /// Set this to the identity matrix. + void SetIdentity() + { + ex.x = 1.0f; ey.x = 0.0f; + ex.y = 0.0f; ey.y = 1.0f; + } + + /// Set this matrix to all zeros. + void SetZero() + { + ex.x = 0.0f; ey.x = 0.0f; + ex.y = 0.0f; ey.y = 0.0f; + } + + b2Mat22 GetInverse() const + { + float32 a = ex.x, b = ey.x, c = ex.y, d = ey.y; + b2Mat22 B; + float32 det = a * d - b * c; + if (det != 0.0f) + { + det = 1.0f / det; + } + B.ex.x = det * d; B.ey.x = -det * b; + B.ex.y = -det * c; B.ey.y = det * a; + return B; + } + + /// Solve A * x = b, where b is a column vector. This is more efficient + /// than computing the inverse in one-shot cases. + b2Vec2 Solve(const b2Vec2& b) const + { + float32 a11 = ex.x, a12 = ey.x, a21 = ex.y, a22 = ey.y; + float32 det = a11 * a22 - a12 * a21; + if (det != 0.0f) + { + det = 1.0f / det; + } + b2Vec2 x; + x.x = det * (a22 * b.x - a12 * b.y); + x.y = det * (a11 * b.y - a21 * b.x); + return x; + } + + b2Vec2 ex, ey; +}; + +/// A 3-by-3 matrix. Stored in column-major order. +struct b2Mat33 +{ + /// The default constructor does nothing (for performance). + b2Mat33() {} + + /// Construct this matrix using columns. + b2Mat33(const b2Vec3& c1, const b2Vec3& c2, const b2Vec3& c3) + { + ex = c1; + ey = c2; + ez = c3; + } + + /// Set this matrix to all zeros. + void SetZero() + { + ex.SetZero(); + ey.SetZero(); + ez.SetZero(); + } + + /// Solve A * x = b, where b is a column vector. This is more efficient + /// than computing the inverse in one-shot cases. + b2Vec3 Solve33(const b2Vec3& b) const; + + /// Solve A * x = b, where b is a column vector. This is more efficient + /// than computing the inverse in one-shot cases. Solve only the upper + /// 2-by-2 matrix equation. + b2Vec2 Solve22(const b2Vec2& b) const; + + /// Get the inverse of this matrix as a 2-by-2. + /// Returns the zero matrix if singular. + void GetInverse22(b2Mat33* M) const; + + /// Get the symmetric inverse of this matrix as a 3-by-3. + /// Returns the zero matrix if singular. + void GetSymInverse33(b2Mat33* M) const; + + b2Vec3 ex, ey, ez; +}; + +/// Rotation +struct b2Rot +{ + b2Rot() {} + + /// Initialize from an angle in radians + explicit b2Rot(float32 angle) + { + /// TODO_ERIN optimize + s = sinf(angle); + c = cosf(angle); + } + + /// Set using an angle in radians. + void Set(float32 angle) + { + /// TODO_ERIN optimize + s = sinf(angle); + c = cosf(angle); + } + + /// Set to the identity rotation + void SetIdentity() + { + s = 0.0f; + c = 1.0f; + } + + /// Get the angle in radians + float32 GetAngle() const + { + return b2Atan2(s, c); + } + + /// Get the x-axis + b2Vec2 GetXAxis() const + { + return b2Vec2(c, s); + } + + /// Get the u-axis + b2Vec2 GetYAxis() const + { + return b2Vec2(-s, c); + } + + /// Sine and cosine + float32 s, c; +}; + +/// A transform contains translation and rotation. It is used to represent +/// the position and orientation of rigid frames. +struct b2Transform +{ + /// The default constructor does nothing. + b2Transform() {} + + /// Initialize using a position vector and a rotation. + b2Transform(const b2Vec2& position, const b2Rot& rotation) : p(position), q(rotation) {} + + /// Set this to the identity transform. + void SetIdentity() + { + p.SetZero(); + q.SetIdentity(); + } + + /// Set this based on the position and angle. + void Set(const b2Vec2& position, float32 angle) + { + p = position; + q.Set(angle); + } + + b2Vec2 p; + b2Rot q; +}; + +/// This describes the motion of a body/shape for TOI computation. +/// Shapes are defined with respect to the body origin, which may +/// no coincide with the center of mass. However, to support dynamics +/// we must interpolate the center of mass position. +struct b2Sweep +{ + /// Get the interpolated transform at a specific time. + /// @param beta is a factor in [0,1], where 0 indicates alpha0. + void GetTransform(b2Transform* xfb, float32 beta) const; + + /// Advance the sweep forward, yielding a new initial state. + /// @param alpha the new initial time. + void Advance(float32 alpha); + + /// Normalize the angles. + void Normalize(); + + b2Vec2 localCenter; ///< local center of mass position + b2Vec2 c0, c; ///< center world positions + float32 a0, a; ///< world angles + + /// Fraction of the current time step in the range [0,1] + /// c0 and a0 are the positions at alpha0. + float32 alpha0; +}; + +/// Useful constant +extern const b2Vec2 b2Vec2_zero; + +/// Perform the dot product on two vectors. +inline float32 b2Dot(const b2Vec2& a, const b2Vec2& b) +{ + return a.x * b.x + a.y * b.y; +} + +/// Perform the cross product on two vectors. In 2D this produces a scalar. +inline float32 b2Cross(const b2Vec2& a, const b2Vec2& b) +{ + return a.x * b.y - a.y * b.x; +} + +/// Perform the cross product on a vector and a scalar. In 2D this produces +/// a vector. +inline b2Vec2 b2Cross(const b2Vec2& a, float32 s) +{ + return b2Vec2(s * a.y, -s * a.x); +} + +/// Perform the cross product on a scalar and a vector. In 2D this produces +/// a vector. +inline b2Vec2 b2Cross(float32 s, const b2Vec2& a) +{ + return b2Vec2(-s * a.y, s * a.x); +} + +/// Multiply a matrix times a vector. If a rotation matrix is provided, +/// then this transforms the vector from one frame to another. +inline b2Vec2 b2Mul(const b2Mat22& A, const b2Vec2& v) +{ + return b2Vec2(A.ex.x * v.x + A.ey.x * v.y, A.ex.y * v.x + A.ey.y * v.y); +} + +/// Multiply a matrix transpose times a vector. If a rotation matrix is provided, +/// then this transforms the vector from one frame to another (inverse transform). +inline b2Vec2 b2MulT(const b2Mat22& A, const b2Vec2& v) +{ + return b2Vec2(b2Dot(v, A.ex), b2Dot(v, A.ey)); +} + +/// Add two vectors component-wise. +inline b2Vec2 operator + (const b2Vec2& a, const b2Vec2& b) +{ + return b2Vec2(a.x + b.x, a.y + b.y); +} + +/// Subtract two vectors component-wise. +inline b2Vec2 operator - (const b2Vec2& a, const b2Vec2& b) +{ + return b2Vec2(a.x - b.x, a.y - b.y); +} + +inline b2Vec2 operator * (float32 s, const b2Vec2& a) +{ + return b2Vec2(s * a.x, s * a.y); +} + +inline bool operator == (const b2Vec2& a, const b2Vec2& b) +{ + return a.x == b.x && a.y == b.y; +} + +inline float32 b2Distance(const b2Vec2& a, const b2Vec2& b) +{ + b2Vec2 c = a - b; + return c.Length(); +} + +inline float32 b2DistanceSquared(const b2Vec2& a, const b2Vec2& b) +{ + b2Vec2 c = a - b; + return b2Dot(c, c); +} + +inline b2Vec3 operator * (float32 s, const b2Vec3& a) +{ + return b2Vec3(s * a.x, s * a.y, s * a.z); +} + +/// Add two vectors component-wise. +inline b2Vec3 operator + (const b2Vec3& a, const b2Vec3& b) +{ + return b2Vec3(a.x + b.x, a.y + b.y, a.z + b.z); +} + +/// Subtract two vectors component-wise. +inline b2Vec3 operator - (const b2Vec3& a, const b2Vec3& b) +{ + return b2Vec3(a.x - b.x, a.y - b.y, a.z - b.z); +} + +/// Perform the dot product on two vectors. +inline float32 b2Dot(const b2Vec3& a, const b2Vec3& b) +{ + return a.x * b.x + a.y * b.y + a.z * b.z; +} + +/// Perform the cross product on two vectors. +inline b2Vec3 b2Cross(const b2Vec3& a, const b2Vec3& b) +{ + return b2Vec3(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x); +} + +inline b2Mat22 operator + (const b2Mat22& A, const b2Mat22& B) +{ + return b2Mat22(A.ex + B.ex, A.ey + B.ey); +} + +// A * B +inline b2Mat22 b2Mul(const b2Mat22& A, const b2Mat22& B) +{ + return b2Mat22(b2Mul(A, B.ex), b2Mul(A, B.ey)); +} + +// A^T * B +inline b2Mat22 b2MulT(const b2Mat22& A, const b2Mat22& B) +{ + b2Vec2 c1(b2Dot(A.ex, B.ex), b2Dot(A.ey, B.ex)); + b2Vec2 c2(b2Dot(A.ex, B.ey), b2Dot(A.ey, B.ey)); + return b2Mat22(c1, c2); +} + +/// Multiply a matrix times a vector. +inline b2Vec3 b2Mul(const b2Mat33& A, const b2Vec3& v) +{ + return v.x * A.ex + v.y * A.ey + v.z * A.ez; +} + +/// Multiply a matrix times a vector. +inline b2Vec2 b2Mul22(const b2Mat33& A, const b2Vec2& v) +{ + return b2Vec2(A.ex.x * v.x + A.ey.x * v.y, A.ex.y * v.x + A.ey.y * v.y); +} + +/// Multiply two rotations: q * r +inline b2Rot b2Mul(const b2Rot& q, const b2Rot& r) +{ + // [qc -qs] * [rc -rs] = [qc*rc-qs*rs -qc*rs-qs*rc] + // [qs qc] [rs rc] [qs*rc+qc*rs -qs*rs+qc*rc] + // s = qs * rc + qc * rs + // c = qc * rc - qs * rs + b2Rot qr; + qr.s = q.s * r.c + q.c * r.s; + qr.c = q.c * r.c - q.s * r.s; + return qr; +} + +/// Transpose multiply two rotations: qT * r +inline b2Rot b2MulT(const b2Rot& q, const b2Rot& r) +{ + // [ qc qs] * [rc -rs] = [qc*rc+qs*rs -qc*rs+qs*rc] + // [-qs qc] [rs rc] [-qs*rc+qc*rs qs*rs+qc*rc] + // s = qc * rs - qs * rc + // c = qc * rc + qs * rs + b2Rot qr; + qr.s = q.c * r.s - q.s * r.c; + qr.c = q.c * r.c + q.s * r.s; + return qr; +} + +/// Rotate a vector +inline b2Vec2 b2Mul(const b2Rot& q, const b2Vec2& v) +{ + return b2Vec2(q.c * v.x - q.s * v.y, q.s * v.x + q.c * v.y); +} + +/// Inverse rotate a vector +inline b2Vec2 b2MulT(const b2Rot& q, const b2Vec2& v) +{ + return b2Vec2(q.c * v.x + q.s * v.y, -q.s * v.x + q.c * v.y); +} + +inline b2Vec2 b2Mul(const b2Transform& T, const b2Vec2& v) +{ + float32 x = (T.q.c * v.x - T.q.s * v.y) + T.p.x; + float32 y = (T.q.s * v.x + T.q.c * v.y) + T.p.y; + + return b2Vec2(x, y); +} + +inline b2Vec2 b2MulT(const b2Transform& T, const b2Vec2& v) +{ + float32 px = v.x - T.p.x; + float32 py = v.y - T.p.y; + float32 x = (T.q.c * px + T.q.s * py); + float32 y = (-T.q.s * px + T.q.c * py); + + return b2Vec2(x, y); +} + +// v2 = A.q.Rot(B.q.Rot(v1) + B.p) + A.p +// = (A.q * B.q).Rot(v1) + A.q.Rot(B.p) + A.p +inline b2Transform b2Mul(const b2Transform& A, const b2Transform& B) +{ + b2Transform C; + C.q = b2Mul(A.q, B.q); + C.p = b2Mul(A.q, B.p) + A.p; + return C; +} + +// v2 = A.q' * (B.q * v1 + B.p - A.p) +// = A.q' * B.q * v1 + A.q' * (B.p - A.p) +inline b2Transform b2MulT(const b2Transform& A, const b2Transform& B) +{ + b2Transform C; + C.q = b2MulT(A.q, B.q); + C.p = b2MulT(A.q, B.p - A.p); + return C; +} + +template +inline T b2Abs(T a) +{ + return a > T(0) ? a : -a; +} + +inline b2Vec2 b2Abs(const b2Vec2& a) +{ + return b2Vec2(b2Abs(a.x), b2Abs(a.y)); +} + +inline b2Mat22 b2Abs(const b2Mat22& A) +{ + return b2Mat22(b2Abs(A.ex), b2Abs(A.ey)); +} + +template +inline T b2Min(T a, T b) +{ + return a < b ? a : b; +} + +inline b2Vec2 b2Min(const b2Vec2& a, const b2Vec2& b) +{ + return b2Vec2(b2Min(a.x, b.x), b2Min(a.y, b.y)); +} + +template +inline T b2Max(T a, T b) +{ + return a > b ? a : b; +} + +inline b2Vec2 b2Max(const b2Vec2& a, const b2Vec2& b) +{ + return b2Vec2(b2Max(a.x, b.x), b2Max(a.y, b.y)); +} + +template +inline T b2Clamp(T a, T low, T high) +{ + return b2Max(low, b2Min(a, high)); +} + +inline b2Vec2 b2Clamp(const b2Vec2& a, const b2Vec2& low, const b2Vec2& high) +{ + return b2Max(low, b2Min(a, high)); +} + +template inline void b2Swap(T& a, T& b) +{ + T tmp = a; + a = b; + b = tmp; +} + +/// "Next Largest Power of 2 +/// Given a binary integer value x, the next largest power of 2 can be computed by a SWAR algorithm +/// that recursively "folds" the upper bits into the lower bits. This process yields a bit vector with +/// the same most significant 1 as x, but all 1's below it. Adding 1 to that value yields the next +/// largest power of 2. For a 32-bit value:" +inline uint32 b2NextPowerOfTwo(uint32 x) +{ + x |= (x >> 1); + x |= (x >> 2); + x |= (x >> 4); + x |= (x >> 8); + x |= (x >> 16); + return x + 1; +} + +inline bool b2IsPowerOfTwo(uint32 x) +{ + bool result = x > 0 && (x & (x - 1)) == 0; + return result; +} + +inline void b2Sweep::GetTransform(b2Transform* xf, float32 beta) const +{ + xf->p = (1.0f - beta) * c0 + beta * c; + float32 angle = (1.0f - beta) * a0 + beta * a; + xf->q.Set(angle); + + // Shift to origin + xf->p -= b2Mul(xf->q, localCenter); +} + +inline void b2Sweep::Advance(float32 alpha) +{ + b2Assert(alpha0 < 1.0f); + float32 beta = (alpha - alpha0) / (1.0f - alpha0); + c0 += beta * (c - c0); + a0 += beta * (a - a0); + alpha0 = alpha; +} + +/// Normalize an angle in radians to be between -pi and pi +inline void b2Sweep::Normalize() +{ + float32 twoPi = 2.0f * b2_pi; + float32 d = twoPi * floorf(a0 / twoPi); + a0 -= d; + a -= d; +} + +#endif diff --git a/Dependencies/Box2D/src/Common/b2Settings.cpp b/Dependencies/Box2D/src/Common/b2Settings.cpp new file mode 100644 index 00000000..d7c81bac --- /dev/null +++ b/Dependencies/Box2D/src/Common/b2Settings.cpp @@ -0,0 +1,44 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include +#include + +b2Version b2_version = {2, 3, 2}; + +// Memory allocators. Modify these to use your own allocator. +void* b2Alloc(int32 size) +{ + return malloc(size); +} + +void b2Free(void* mem) +{ + free(mem); +} + +// You can modify this to use your logging facility. +void b2Log(const char* string, ...) +{ + va_list args; + va_start(args, string); + vprintf(string, args); + va_end(args); +} diff --git a/Dependencies/Box2D/src/Common/b2Settings.h b/Dependencies/Box2D/src/Common/b2Settings.h new file mode 100644 index 00000000..86f76bd2 --- /dev/null +++ b/Dependencies/Box2D/src/Common/b2Settings.h @@ -0,0 +1,151 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_SETTINGS_H +#define B2_SETTINGS_H + +#include +#include +#include + +#define B2_NOT_USED(x) ((void)(x)) +#define b2Assert(A) assert(A) + +typedef signed char int8; +typedef signed short int16; +typedef signed int int32; +typedef unsigned char uint8; +typedef unsigned short uint16; +typedef unsigned int uint32; +typedef float float32; +typedef double float64; + +#define b2_maxFloat FLT_MAX +#define b2_epsilon FLT_EPSILON +#define b2_pi 3.14159265359f + +/// @file +/// Global tuning constants based on meters-kilograms-seconds (MKS) units. +/// + +// Collision + +/// The maximum number of contact points between two convex shapes. Do +/// not change this value. +#define b2_maxManifoldPoints 2 + +/// The maximum number of vertices on a convex polygon. You cannot increase +/// this too much because b2BlockAllocator has a maximum object size. +#define b2_maxPolygonVertices 8 + +/// This is used to fatten AABBs in the dynamic tree. This allows proxies +/// to move by a small amount without triggering a tree adjustment. +/// This is in meters. +#define b2_aabbExtension 0.1f + +/// This is used to fatten AABBs in the dynamic tree. This is used to predict +/// the future position based on the current displacement. +/// This is a dimensionless multiplier. +#define b2_aabbMultiplier 2.0f + +/// A small length used as a collision and constraint tolerance. Usually it is +/// chosen to be numerically significant, but visually insignificant. +#define b2_linearSlop 0.005f + +/// A small angle used as a collision and constraint tolerance. Usually it is +/// chosen to be numerically significant, but visually insignificant. +#define b2_angularSlop (2.0f / 180.0f * b2_pi) + +/// The radius of the polygon/edge shape skin. This should not be modified. Making +/// this smaller means polygons will have an insufficient buffer for continuous collision. +/// Making it larger may create artifacts for vertex collision. +#define b2_polygonRadius (2.0f * b2_linearSlop) + +/// Maximum number of sub-steps per contact in continuous physics simulation. +#define b2_maxSubSteps 8 + + +// Dynamics + +/// Maximum number of contacts to be handled to solve a TOI impact. +#define b2_maxTOIContacts 32 + +/// A velocity threshold for elastic collisions. Any collision with a relative linear +/// velocity below this threshold will be treated as inelastic. +#define b2_velocityThreshold 1.0f + +/// The maximum linear position correction used when solving constraints. This helps to +/// prevent overshoot. +#define b2_maxLinearCorrection 0.2f + +/// The maximum angular position correction used when solving constraints. This helps to +/// prevent overshoot. +#define b2_maxAngularCorrection (8.0f / 180.0f * b2_pi) + +/// The maximum linear velocity of a body. This limit is very large and is used +/// to prevent numerical problems. You shouldn't need to adjust this. +#define b2_maxTranslation 2.0f +#define b2_maxTranslationSquared (b2_maxTranslation * b2_maxTranslation) + +/// The maximum angular velocity of a body. This limit is very large and is used +/// to prevent numerical problems. You shouldn't need to adjust this. +#define b2_maxRotation (0.5f * b2_pi) +#define b2_maxRotationSquared (b2_maxRotation * b2_maxRotation) + +/// This scale factor controls how fast overlap is resolved. Ideally this would be 1 so +/// that overlap is removed in one time step. However using values close to 1 often lead +/// to overshoot. +#define b2_baumgarte 0.2f +#define b2_toiBaugarte 0.75f + + +// Sleep + +/// The time that a body must be still before it will go to sleep. +#define b2_timeToSleep 0.5f + +/// A body cannot sleep if its linear velocity is above this tolerance. +#define b2_linearSleepTolerance 0.01f + +/// A body cannot sleep if its angular velocity is above this tolerance. +#define b2_angularSleepTolerance (2.0f / 180.0f * b2_pi) + +// Memory Allocation + +/// Implement this function to use your own memory allocator. +void* b2Alloc(int32 size); + +/// If you implement b2Alloc, you should also implement this function. +void b2Free(void* mem); + +/// Logging function. +void b2Log(const char* string, ...); + +/// Version numbering scheme. +/// See http://en.wikipedia.org/wiki/Software_versioning +struct b2Version +{ + int32 major; ///< significant changes + int32 minor; ///< incremental changes + int32 revision; ///< bug fixes +}; + +/// Current version. +extern b2Version b2_version; + +#endif diff --git a/Dependencies/Box2D/src/Common/b2StackAllocator.cpp b/Dependencies/Box2D/src/Common/b2StackAllocator.cpp new file mode 100644 index 00000000..e76e0bd6 --- /dev/null +++ b/Dependencies/Box2D/src/Common/b2StackAllocator.cpp @@ -0,0 +1,83 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include + +b2StackAllocator::b2StackAllocator() +{ + m_index = 0; + m_allocation = 0; + m_maxAllocation = 0; + m_entryCount = 0; +} + +b2StackAllocator::~b2StackAllocator() +{ + b2Assert(m_index == 0); + b2Assert(m_entryCount == 0); +} + +void* b2StackAllocator::Allocate(int32 size) +{ + b2Assert(m_entryCount < b2_maxStackEntries); + + b2StackEntry* entry = m_entries + m_entryCount; + entry->size = size; + if (m_index + size > b2_stackSize) + { + entry->data = (char*)b2Alloc(size); + entry->usedMalloc = true; + } + else + { + entry->data = m_data + m_index; + entry->usedMalloc = false; + m_index += size; + } + + m_allocation += size; + m_maxAllocation = b2Max(m_maxAllocation, m_allocation); + ++m_entryCount; + + return entry->data; +} + +void b2StackAllocator::Free(void* p) +{ + b2Assert(m_entryCount > 0); + b2StackEntry* entry = m_entries + m_entryCount - 1; + b2Assert(p == entry->data); + if (entry->usedMalloc) + { + b2Free(p); + } + else + { + m_index -= entry->size; + } + m_allocation -= entry->size; + --m_entryCount; + + p = NULL; +} + +int32 b2StackAllocator::GetMaxAllocation() const +{ + return m_maxAllocation; +} diff --git a/Dependencies/Box2D/src/Common/b2StackAllocator.h b/Dependencies/Box2D/src/Common/b2StackAllocator.h new file mode 100644 index 00000000..6e0a0287 --- /dev/null +++ b/Dependencies/Box2D/src/Common/b2StackAllocator.h @@ -0,0 +1,60 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_STACK_ALLOCATOR_H +#define B2_STACK_ALLOCATOR_H + +#include + +const int32 b2_stackSize = 100 * 1024; // 100k +const int32 b2_maxStackEntries = 32; + +struct b2StackEntry +{ + char* data; + int32 size; + bool usedMalloc; +}; + +// This is a stack allocator used for fast per step allocations. +// You must nest allocate/free pairs. The code will assert +// if you try to interleave multiple allocate/free pairs. +class b2StackAllocator +{ +public: + b2StackAllocator(); + ~b2StackAllocator(); + + void* Allocate(int32 size); + void Free(void* p); + + int32 GetMaxAllocation() const; + +private: + + char m_data[b2_stackSize]; + int32 m_index; + + int32 m_allocation; + int32 m_maxAllocation; + + b2StackEntry m_entries[b2_maxStackEntries]; + int32 m_entryCount; +}; + +#endif diff --git a/Dependencies/Box2D/src/Common/b2Timer.cpp b/Dependencies/Box2D/src/Common/b2Timer.cpp new file mode 100644 index 00000000..4aabf07a --- /dev/null +++ b/Dependencies/Box2D/src/Common/b2Timer.cpp @@ -0,0 +1,101 @@ +/* +* Copyright (c) 2011 Erin Catto http://box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include + +#if defined(_WIN32) + +float64 b2Timer::s_invFrequency = 0.0f; + +#define WIN32_LEAN_AND_MEAN +#include + +b2Timer::b2Timer() +{ + LARGE_INTEGER largeInteger; + + if (s_invFrequency == 0.0f) + { + QueryPerformanceFrequency(&largeInteger); + s_invFrequency = float64(largeInteger.QuadPart); + if (s_invFrequency > 0.0f) + { + s_invFrequency = 1000.0f / s_invFrequency; + } + } + + QueryPerformanceCounter(&largeInteger); + m_start = float64(largeInteger.QuadPart); +} + +void b2Timer::Reset() +{ + LARGE_INTEGER largeInteger; + QueryPerformanceCounter(&largeInteger); + m_start = float64(largeInteger.QuadPart); +} + +float32 b2Timer::GetMilliseconds() const +{ + LARGE_INTEGER largeInteger; + QueryPerformanceCounter(&largeInteger); + float64 count = float64(largeInteger.QuadPart); + float32 ms = float32(s_invFrequency * (count - m_start)); + return ms; +} + +#elif defined(__linux__) || defined (__APPLE__) + +#include + +b2Timer::b2Timer() +{ + Reset(); +} + +void b2Timer::Reset() +{ + timeval t; + gettimeofday(&t, 0); + m_start_sec = t.tv_sec; + m_start_usec = t.tv_usec; +} + +float32 b2Timer::GetMilliseconds() const +{ + timeval t; + gettimeofday(&t, 0); + return 1000.0f * (t.tv_sec - m_start_sec) + 0.001f * (t.tv_usec - m_start_usec); +} + +#else + +b2Timer::b2Timer() +{ +} + +void b2Timer::Reset() +{ +} + +float32 b2Timer::GetMilliseconds() const +{ + return 0.0f; +} + +#endif diff --git a/Dependencies/Box2D/src/Common/b2Timer.h b/Dependencies/Box2D/src/Common/b2Timer.h new file mode 100644 index 00000000..5d029fad --- /dev/null +++ b/Dependencies/Box2D/src/Common/b2Timer.h @@ -0,0 +1,50 @@ +/* +* Copyright (c) 2011 Erin Catto http://box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_TIMER_H +#define B2_TIMER_H + +#include + +/// Timer for profiling. This has platform specific code and may +/// not work on every platform. +class b2Timer +{ +public: + + /// Constructor + b2Timer(); + + /// Reset the timer. + void Reset(); + + /// Get the time since construction or the last reset. + float32 GetMilliseconds() const; + +private: + +#if defined(_WIN32) + float64 m_start; + static float64 s_invFrequency; +#elif defined(__linux__) || defined (__APPLE__) + unsigned long m_start_sec; + unsigned long m_start_usec; +#endif +}; + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Contacts/b2ChainAndCircleContact.cpp b/Dependencies/Box2D/src/Dynamics/Contacts/b2ChainAndCircleContact.cpp new file mode 100644 index 00000000..f01673ac --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Contacts/b2ChainAndCircleContact.cpp @@ -0,0 +1,53 @@ +/* +* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include +#include +#include + +#include + +b2Contact* b2ChainAndCircleContact::Create(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator) +{ + void* mem = allocator->Allocate(sizeof(b2ChainAndCircleContact)); + return new (mem) b2ChainAndCircleContact(fixtureA, indexA, fixtureB, indexB); +} + +void b2ChainAndCircleContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator) +{ + ((b2ChainAndCircleContact*)contact)->~b2ChainAndCircleContact(); + allocator->Free(contact, sizeof(b2ChainAndCircleContact)); +} + +b2ChainAndCircleContact::b2ChainAndCircleContact(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB) +: b2Contact(fixtureA, indexA, fixtureB, indexB) +{ + b2Assert(m_fixtureA->GetType() == b2Shape::e_chain); + b2Assert(m_fixtureB->GetType() == b2Shape::e_circle); +} + +void b2ChainAndCircleContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB) +{ + b2ChainShape* chain = (b2ChainShape*)m_fixtureA->GetShape(); + b2EdgeShape edge; + chain->GetChildEdge(&edge, m_indexA); + b2CollideEdgeAndCircle( manifold, &edge, xfA, + (b2CircleShape*)m_fixtureB->GetShape(), xfB); +} diff --git a/Dependencies/Box2D/src/Dynamics/Contacts/b2ChainAndCircleContact.h b/Dependencies/Box2D/src/Dynamics/Contacts/b2ChainAndCircleContact.h new file mode 100644 index 00000000..40894dc6 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Contacts/b2ChainAndCircleContact.h @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_CHAIN_AND_CIRCLE_CONTACT_H +#define B2_CHAIN_AND_CIRCLE_CONTACT_H + +#include + +class b2BlockAllocator; + +class b2ChainAndCircleContact : public b2Contact +{ +public: + static b2Contact* Create( b2Fixture* fixtureA, int32 indexA, + b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator); + static void Destroy(b2Contact* contact, b2BlockAllocator* allocator); + + b2ChainAndCircleContact(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB); + ~b2ChainAndCircleContact() {} + + void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB); +}; + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Contacts/b2ChainAndPolygonContact.cpp b/Dependencies/Box2D/src/Dynamics/Contacts/b2ChainAndPolygonContact.cpp new file mode 100644 index 00000000..89915969 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Contacts/b2ChainAndPolygonContact.cpp @@ -0,0 +1,53 @@ +/* +* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include +#include +#include + +#include + +b2Contact* b2ChainAndPolygonContact::Create(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator) +{ + void* mem = allocator->Allocate(sizeof(b2ChainAndPolygonContact)); + return new (mem) b2ChainAndPolygonContact(fixtureA, indexA, fixtureB, indexB); +} + +void b2ChainAndPolygonContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator) +{ + ((b2ChainAndPolygonContact*)contact)->~b2ChainAndPolygonContact(); + allocator->Free(contact, sizeof(b2ChainAndPolygonContact)); +} + +b2ChainAndPolygonContact::b2ChainAndPolygonContact(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB) +: b2Contact(fixtureA, indexA, fixtureB, indexB) +{ + b2Assert(m_fixtureA->GetType() == b2Shape::e_chain); + b2Assert(m_fixtureB->GetType() == b2Shape::e_polygon); +} + +void b2ChainAndPolygonContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB) +{ + b2ChainShape* chain = (b2ChainShape*)m_fixtureA->GetShape(); + b2EdgeShape edge; + chain->GetChildEdge(&edge, m_indexA); + b2CollideEdgeAndPolygon( manifold, &edge, xfA, + (b2PolygonShape*)m_fixtureB->GetShape(), xfB); +} diff --git a/Dependencies/Box2D/src/Dynamics/Contacts/b2ChainAndPolygonContact.h b/Dependencies/Box2D/src/Dynamics/Contacts/b2ChainAndPolygonContact.h new file mode 100644 index 00000000..4a15a6f6 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Contacts/b2ChainAndPolygonContact.h @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_CHAIN_AND_POLYGON_CONTACT_H +#define B2_CHAIN_AND_POLYGON_CONTACT_H + +#include + +class b2BlockAllocator; + +class b2ChainAndPolygonContact : public b2Contact +{ +public: + static b2Contact* Create( b2Fixture* fixtureA, int32 indexA, + b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator); + static void Destroy(b2Contact* contact, b2BlockAllocator* allocator); + + b2ChainAndPolygonContact(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB); + ~b2ChainAndPolygonContact() {} + + void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB); +}; + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Contacts/b2CircleContact.cpp b/Dependencies/Box2D/src/Dynamics/Contacts/b2CircleContact.cpp new file mode 100644 index 00000000..c234bece --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Contacts/b2CircleContact.cpp @@ -0,0 +1,52 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include +#include +#include +#include + +#include + +b2Contact* b2CircleContact::Create(b2Fixture* fixtureA, int32, b2Fixture* fixtureB, int32, b2BlockAllocator* allocator) +{ + void* mem = allocator->Allocate(sizeof(b2CircleContact)); + return new (mem) b2CircleContact(fixtureA, fixtureB); +} + +void b2CircleContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator) +{ + ((b2CircleContact*)contact)->~b2CircleContact(); + allocator->Free(contact, sizeof(b2CircleContact)); +} + +b2CircleContact::b2CircleContact(b2Fixture* fixtureA, b2Fixture* fixtureB) + : b2Contact(fixtureA, 0, fixtureB, 0) +{ + b2Assert(m_fixtureA->GetType() == b2Shape::e_circle); + b2Assert(m_fixtureB->GetType() == b2Shape::e_circle); +} + +void b2CircleContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB) +{ + b2CollideCircles(manifold, + (b2CircleShape*)m_fixtureA->GetShape(), xfA, + (b2CircleShape*)m_fixtureB->GetShape(), xfB); +} diff --git a/Dependencies/Box2D/src/Dynamics/Contacts/b2CircleContact.h b/Dependencies/Box2D/src/Dynamics/Contacts/b2CircleContact.h new file mode 100644 index 00000000..8cec3167 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Contacts/b2CircleContact.h @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_CIRCLE_CONTACT_H +#define B2_CIRCLE_CONTACT_H + +#include + +class b2BlockAllocator; + +class b2CircleContact : public b2Contact +{ +public: + static b2Contact* Create( b2Fixture* fixtureA, int32 indexA, + b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator); + static void Destroy(b2Contact* contact, b2BlockAllocator* allocator); + + b2CircleContact(b2Fixture* fixtureA, b2Fixture* fixtureB); + ~b2CircleContact() {} + + void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB); +}; + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Contacts/b2Contact.cpp b/Dependencies/Box2D/src/Dynamics/Contacts/b2Contact.cpp new file mode 100644 index 00000000..5c8cc6ff --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Contacts/b2Contact.cpp @@ -0,0 +1,247 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +b2ContactRegister b2Contact::s_registers[b2Shape::e_typeCount][b2Shape::e_typeCount]; +bool b2Contact::s_initialized = false; + +void b2Contact::InitializeRegisters() +{ + AddType(b2CircleContact::Create, b2CircleContact::Destroy, b2Shape::e_circle, b2Shape::e_circle); + AddType(b2PolygonAndCircleContact::Create, b2PolygonAndCircleContact::Destroy, b2Shape::e_polygon, b2Shape::e_circle); + AddType(b2PolygonContact::Create, b2PolygonContact::Destroy, b2Shape::e_polygon, b2Shape::e_polygon); + AddType(b2EdgeAndCircleContact::Create, b2EdgeAndCircleContact::Destroy, b2Shape::e_edge, b2Shape::e_circle); + AddType(b2EdgeAndPolygonContact::Create, b2EdgeAndPolygonContact::Destroy, b2Shape::e_edge, b2Shape::e_polygon); + AddType(b2ChainAndCircleContact::Create, b2ChainAndCircleContact::Destroy, b2Shape::e_chain, b2Shape::e_circle); + AddType(b2ChainAndPolygonContact::Create, b2ChainAndPolygonContact::Destroy, b2Shape::e_chain, b2Shape::e_polygon); +} + +void b2Contact::AddType(b2ContactCreateFcn* createFcn, b2ContactDestroyFcn* destoryFcn, + b2Shape::Type type1, b2Shape::Type type2) +{ + b2Assert(0 <= type1 && type1 < b2Shape::e_typeCount); + b2Assert(0 <= type2 && type2 < b2Shape::e_typeCount); + + s_registers[type1][type2].createFcn = createFcn; + s_registers[type1][type2].destroyFcn = destoryFcn; + s_registers[type1][type2].primary = true; + + if (type1 != type2) + { + s_registers[type2][type1].createFcn = createFcn; + s_registers[type2][type1].destroyFcn = destoryFcn; + s_registers[type2][type1].primary = false; + } +} + +b2Contact* b2Contact::Create(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator) +{ + if (s_initialized == false) + { + InitializeRegisters(); + s_initialized = true; + } + + b2Shape::Type type1 = fixtureA->GetType(); + b2Shape::Type type2 = fixtureB->GetType(); + + b2Assert(0 <= type1 && type1 < b2Shape::e_typeCount); + b2Assert(0 <= type2 && type2 < b2Shape::e_typeCount); + + b2ContactCreateFcn* createFcn = s_registers[type1][type2].createFcn; + if (createFcn) + { + if (s_registers[type1][type2].primary) + { + return createFcn(fixtureA, indexA, fixtureB, indexB, allocator); + } + else + { + return createFcn(fixtureB, indexB, fixtureA, indexA, allocator); + } + } + else + { + return NULL; + } +} + +void b2Contact::Destroy(b2Contact* contact, b2BlockAllocator* allocator) +{ + b2Assert(s_initialized == true); + + b2Fixture* fixtureA = contact->m_fixtureA; + b2Fixture* fixtureB = contact->m_fixtureB; + + if (contact->m_manifold.pointCount > 0 && + fixtureA->IsSensor() == false && + fixtureB->IsSensor() == false) + { + fixtureA->GetBody()->SetAwake(true); + fixtureB->GetBody()->SetAwake(true); + } + + b2Shape::Type typeA = fixtureA->GetType(); + b2Shape::Type typeB = fixtureB->GetType(); + + b2Assert(0 <= typeA && typeB < b2Shape::e_typeCount); + b2Assert(0 <= typeA && typeB < b2Shape::e_typeCount); + + b2ContactDestroyFcn* destroyFcn = s_registers[typeA][typeB].destroyFcn; + destroyFcn(contact, allocator); +} + +b2Contact::b2Contact(b2Fixture* fA, int32 indexA, b2Fixture* fB, int32 indexB) +{ + m_flags = e_enabledFlag; + + m_fixtureA = fA; + m_fixtureB = fB; + + m_indexA = indexA; + m_indexB = indexB; + + m_manifold.pointCount = 0; + + m_prev = NULL; + m_next = NULL; + + m_nodeA.contact = NULL; + m_nodeA.prev = NULL; + m_nodeA.next = NULL; + m_nodeA.other = NULL; + + m_nodeB.contact = NULL; + m_nodeB.prev = NULL; + m_nodeB.next = NULL; + m_nodeB.other = NULL; + + m_toiCount = 0; + + m_friction = b2MixFriction(m_fixtureA->m_friction, m_fixtureB->m_friction); + m_restitution = b2MixRestitution(m_fixtureA->m_restitution, m_fixtureB->m_restitution); + + m_tangentSpeed = 0.0f; +} + +// Update the contact manifold and touching status. +// Note: do not assume the fixture AABBs are overlapping or are valid. +void b2Contact::Update(b2ContactListener* listener) +{ + b2Manifold oldManifold = m_manifold; + + // Re-enable this contact. + m_flags |= e_enabledFlag; + + bool touching = false; + bool wasTouching = (m_flags & e_touchingFlag) == e_touchingFlag; + + bool sensorA = m_fixtureA->IsSensor(); + bool sensorB = m_fixtureB->IsSensor(); + bool sensor = sensorA || sensorB; + + b2Body* bodyA = m_fixtureA->GetBody(); + b2Body* bodyB = m_fixtureB->GetBody(); + const b2Transform& xfA = bodyA->GetTransform(); + const b2Transform& xfB = bodyB->GetTransform(); + + // Is this contact a sensor? + if (sensor) + { + const b2Shape* shapeA = m_fixtureA->GetShape(); + const b2Shape* shapeB = m_fixtureB->GetShape(); + touching = b2TestOverlap(shapeA, m_indexA, shapeB, m_indexB, xfA, xfB); + + // Sensors don't generate manifolds. + m_manifold.pointCount = 0; + } + else + { + Evaluate(&m_manifold, xfA, xfB); + touching = m_manifold.pointCount > 0; + + // Match old contact ids to new contact ids and copy the + // stored impulses to warm start the solver. + for (int32 i = 0; i < m_manifold.pointCount; ++i) + { + b2ManifoldPoint* mp2 = m_manifold.points + i; + mp2->normalImpulse = 0.0f; + mp2->tangentImpulse = 0.0f; + b2ContactID id2 = mp2->id; + + for (int32 j = 0; j < oldManifold.pointCount; ++j) + { + b2ManifoldPoint* mp1 = oldManifold.points + j; + + if (mp1->id.key == id2.key) + { + mp2->normalImpulse = mp1->normalImpulse; + mp2->tangentImpulse = mp1->tangentImpulse; + break; + } + } + } + + if (touching != wasTouching) + { + bodyA->SetAwake(true); + bodyB->SetAwake(true); + } + } + + if (touching) + { + m_flags |= e_touchingFlag; + } + else + { + m_flags &= ~e_touchingFlag; + } + + if (wasTouching == false && touching == true && listener) + { + listener->BeginContact(this); + } + + if (wasTouching == true && touching == false && listener) + { + listener->EndContact(this); + } + + if (sensor == false && touching && listener) + { + listener->PreSolve(this, &oldManifold); + } +} diff --git a/Dependencies/Box2D/src/Dynamics/Contacts/b2Contact.h b/Dependencies/Box2D/src/Dynamics/Contacts/b2Contact.h new file mode 100644 index 00000000..dae998cb --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Contacts/b2Contact.h @@ -0,0 +1,349 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_CONTACT_H +#define B2_CONTACT_H + +#include +#include +#include +#include + +class b2Body; +class b2Contact; +class b2Fixture; +class b2World; +class b2BlockAllocator; +class b2StackAllocator; +class b2ContactListener; + +/// Friction mixing law. The idea is to allow either fixture to drive the restitution to zero. +/// For example, anything slides on ice. +inline float32 b2MixFriction(float32 friction1, float32 friction2) +{ + return b2Sqrt(friction1 * friction2); +} + +/// Restitution mixing law. The idea is allow for anything to bounce off an inelastic surface. +/// For example, a superball bounces on anything. +inline float32 b2MixRestitution(float32 restitution1, float32 restitution2) +{ + return restitution1 > restitution2 ? restitution1 : restitution2; +} + +typedef b2Contact* b2ContactCreateFcn( b2Fixture* fixtureA, int32 indexA, + b2Fixture* fixtureB, int32 indexB, + b2BlockAllocator* allocator); +typedef void b2ContactDestroyFcn(b2Contact* contact, b2BlockAllocator* allocator); + +struct b2ContactRegister +{ + b2ContactCreateFcn* createFcn; + b2ContactDestroyFcn* destroyFcn; + bool primary; +}; + +/// A contact edge is used to connect bodies and contacts together +/// in a contact graph where each body is a node and each contact +/// is an edge. A contact edge belongs to a doubly linked list +/// maintained in each attached body. Each contact has two contact +/// nodes, one for each attached body. +struct b2ContactEdge +{ + b2Body* other; ///< provides quick access to the other body attached. + b2Contact* contact; ///< the contact + b2ContactEdge* prev; ///< the previous contact edge in the body's contact list + b2ContactEdge* next; ///< the next contact edge in the body's contact list +}; + +/// The class manages contact between two shapes. A contact exists for each overlapping +/// AABB in the broad-phase (except if filtered). Therefore a contact object may exist +/// that has no contact points. +class b2Contact +{ +public: + + /// Get the contact manifold. Do not modify the manifold unless you understand the + /// internals of Box2D. + b2Manifold* GetManifold(); + const b2Manifold* GetManifold() const; + + /// Get the world manifold. + void GetWorldManifold(b2WorldManifold* worldManifold) const; + + /// Is this contact touching? + bool IsTouching() const; + + /// Enable/disable this contact. This can be used inside the pre-solve + /// contact listener. The contact is only disabled for the current + /// time step (or sub-step in continuous collisions). + void SetEnabled(bool flag); + + /// Has this contact been disabled? + bool IsEnabled() const; + + /// Get the next contact in the world's contact list. + b2Contact* GetNext(); + const b2Contact* GetNext() const; + + /// Get fixture A in this contact. + b2Fixture* GetFixtureA(); + const b2Fixture* GetFixtureA() const; + + /// Get the child primitive index for fixture A. + int32 GetChildIndexA() const; + + /// Get fixture B in this contact. + b2Fixture* GetFixtureB(); + const b2Fixture* GetFixtureB() const; + + /// Get the child primitive index for fixture B. + int32 GetChildIndexB() const; + + /// Override the default friction mixture. You can call this in b2ContactListener::PreSolve. + /// This value persists until set or reset. + void SetFriction(float32 friction); + + /// Get the friction. + float32 GetFriction() const; + + /// Reset the friction mixture to the default value. + void ResetFriction(); + + /// Override the default restitution mixture. You can call this in b2ContactListener::PreSolve. + /// The value persists until you set or reset. + void SetRestitution(float32 restitution); + + /// Get the restitution. + float32 GetRestitution() const; + + /// Reset the restitution to the default value. + void ResetRestitution(); + + /// Set the desired tangent speed for a conveyor belt behavior. In meters per second. + void SetTangentSpeed(float32 speed); + + /// Get the desired tangent speed. In meters per second. + float32 GetTangentSpeed() const; + + /// Evaluate this contact with your own manifold and transforms. + virtual void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB) = 0; + +protected: + friend class b2ContactManager; + friend class b2World; + friend class b2ContactSolver; + friend class b2Body; + friend class b2Fixture; + + // Flags stored in m_flags + enum + { + // Used when crawling contact graph when forming islands. + e_islandFlag = 0x0001, + + // Set when the shapes are touching. + e_touchingFlag = 0x0002, + + // This contact can be disabled (by user) + e_enabledFlag = 0x0004, + + // This contact needs filtering because a fixture filter was changed. + e_filterFlag = 0x0008, + + // This bullet contact had a TOI event + e_bulletHitFlag = 0x0010, + + // This contact has a valid TOI in m_toi + e_toiFlag = 0x0020 + }; + + /// Flag this contact for filtering. Filtering will occur the next time step. + void FlagForFiltering(); + + static void AddType(b2ContactCreateFcn* createFcn, b2ContactDestroyFcn* destroyFcn, + b2Shape::Type typeA, b2Shape::Type typeB); + static void InitializeRegisters(); + static b2Contact* Create(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator); + static void Destroy(b2Contact* contact, b2Shape::Type typeA, b2Shape::Type typeB, b2BlockAllocator* allocator); + static void Destroy(b2Contact* contact, b2BlockAllocator* allocator); + + b2Contact() : m_fixtureA(NULL), m_fixtureB(NULL) {} + b2Contact(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB); + virtual ~b2Contact() {} + + void Update(b2ContactListener* listener); + + static b2ContactRegister s_registers[b2Shape::e_typeCount][b2Shape::e_typeCount]; + static bool s_initialized; + + uint32 m_flags; + + // World pool and list pointers. + b2Contact* m_prev; + b2Contact* m_next; + + // Nodes for connecting bodies. + b2ContactEdge m_nodeA; + b2ContactEdge m_nodeB; + + b2Fixture* m_fixtureA; + b2Fixture* m_fixtureB; + + int32 m_indexA; + int32 m_indexB; + + b2Manifold m_manifold; + + int32 m_toiCount; + float32 m_toi; + + float32 m_friction; + float32 m_restitution; + + float32 m_tangentSpeed; +}; + +inline b2Manifold* b2Contact::GetManifold() +{ + return &m_manifold; +} + +inline const b2Manifold* b2Contact::GetManifold() const +{ + return &m_manifold; +} + +inline void b2Contact::GetWorldManifold(b2WorldManifold* worldManifold) const +{ + const b2Body* bodyA = m_fixtureA->GetBody(); + const b2Body* bodyB = m_fixtureB->GetBody(); + const b2Shape* shapeA = m_fixtureA->GetShape(); + const b2Shape* shapeB = m_fixtureB->GetShape(); + + worldManifold->Initialize(&m_manifold, bodyA->GetTransform(), shapeA->m_radius, bodyB->GetTransform(), shapeB->m_radius); +} + +inline void b2Contact::SetEnabled(bool flag) +{ + if (flag) + { + m_flags |= e_enabledFlag; + } + else + { + m_flags &= ~e_enabledFlag; + } +} + +inline bool b2Contact::IsEnabled() const +{ + return (m_flags & e_enabledFlag) == e_enabledFlag; +} + +inline bool b2Contact::IsTouching() const +{ + return (m_flags & e_touchingFlag) == e_touchingFlag; +} + +inline b2Contact* b2Contact::GetNext() +{ + return m_next; +} + +inline const b2Contact* b2Contact::GetNext() const +{ + return m_next; +} + +inline b2Fixture* b2Contact::GetFixtureA() +{ + return m_fixtureA; +} + +inline const b2Fixture* b2Contact::GetFixtureA() const +{ + return m_fixtureA; +} + +inline b2Fixture* b2Contact::GetFixtureB() +{ + return m_fixtureB; +} + +inline int32 b2Contact::GetChildIndexA() const +{ + return m_indexA; +} + +inline const b2Fixture* b2Contact::GetFixtureB() const +{ + return m_fixtureB; +} + +inline int32 b2Contact::GetChildIndexB() const +{ + return m_indexB; +} + +inline void b2Contact::FlagForFiltering() +{ + m_flags |= e_filterFlag; +} + +inline void b2Contact::SetFriction(float32 friction) +{ + m_friction = friction; +} + +inline float32 b2Contact::GetFriction() const +{ + return m_friction; +} + +inline void b2Contact::ResetFriction() +{ + m_friction = b2MixFriction(m_fixtureA->m_friction, m_fixtureB->m_friction); +} + +inline void b2Contact::SetRestitution(float32 restitution) +{ + m_restitution = restitution; +} + +inline float32 b2Contact::GetRestitution() const +{ + return m_restitution; +} + +inline void b2Contact::ResetRestitution() +{ + m_restitution = b2MixRestitution(m_fixtureA->m_restitution, m_fixtureB->m_restitution); +} + +inline void b2Contact::SetTangentSpeed(float32 speed) +{ + m_tangentSpeed = speed; +} + +inline float32 b2Contact::GetTangentSpeed() const +{ + return m_tangentSpeed; +} + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Contacts/b2ContactSolver.cpp b/Dependencies/Box2D/src/Dynamics/Contacts/b2ContactSolver.cpp new file mode 100644 index 00000000..fc41583e --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Contacts/b2ContactSolver.cpp @@ -0,0 +1,838 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include + +#include +#include +#include +#include +#include + +#define B2_DEBUG_SOLVER 0 + +bool g_blockSolve = true; + +struct b2ContactPositionConstraint +{ + b2Vec2 localPoints[b2_maxManifoldPoints]; + b2Vec2 localNormal; + b2Vec2 localPoint; + int32 indexA; + int32 indexB; + float32 invMassA, invMassB; + b2Vec2 localCenterA, localCenterB; + float32 invIA, invIB; + b2Manifold::Type type; + float32 radiusA, radiusB; + int32 pointCount; +}; + +b2ContactSolver::b2ContactSolver(b2ContactSolverDef* def) +{ + m_step = def->step; + m_allocator = def->allocator; + m_count = def->count; + m_positionConstraints = (b2ContactPositionConstraint*)m_allocator->Allocate(m_count * sizeof(b2ContactPositionConstraint)); + m_velocityConstraints = (b2ContactVelocityConstraint*)m_allocator->Allocate(m_count * sizeof(b2ContactVelocityConstraint)); + m_positions = def->positions; + m_velocities = def->velocities; + m_contacts = def->contacts; + + // Initialize position independent portions of the constraints. + for (int32 i = 0; i < m_count; ++i) + { + b2Contact* contact = m_contacts[i]; + + b2Fixture* fixtureA = contact->m_fixtureA; + b2Fixture* fixtureB = contact->m_fixtureB; + b2Shape* shapeA = fixtureA->GetShape(); + b2Shape* shapeB = fixtureB->GetShape(); + float32 radiusA = shapeA->m_radius; + float32 radiusB = shapeB->m_radius; + b2Body* bodyA = fixtureA->GetBody(); + b2Body* bodyB = fixtureB->GetBody(); + b2Manifold* manifold = contact->GetManifold(); + + int32 pointCount = manifold->pointCount; + b2Assert(pointCount > 0); + + b2ContactVelocityConstraint* vc = m_velocityConstraints + i; + vc->friction = contact->m_friction; + vc->restitution = contact->m_restitution; + vc->tangentSpeed = contact->m_tangentSpeed; + vc->indexA = bodyA->m_islandIndex; + vc->indexB = bodyB->m_islandIndex; + vc->invMassA = bodyA->m_invMass; + vc->invMassB = bodyB->m_invMass; + vc->invIA = bodyA->m_invI; + vc->invIB = bodyB->m_invI; + vc->contactIndex = i; + vc->pointCount = pointCount; + vc->K.SetZero(); + vc->normalMass.SetZero(); + + b2ContactPositionConstraint* pc = m_positionConstraints + i; + pc->indexA = bodyA->m_islandIndex; + pc->indexB = bodyB->m_islandIndex; + pc->invMassA = bodyA->m_invMass; + pc->invMassB = bodyB->m_invMass; + pc->localCenterA = bodyA->m_sweep.localCenter; + pc->localCenterB = bodyB->m_sweep.localCenter; + pc->invIA = bodyA->m_invI; + pc->invIB = bodyB->m_invI; + pc->localNormal = manifold->localNormal; + pc->localPoint = manifold->localPoint; + pc->pointCount = pointCount; + pc->radiusA = radiusA; + pc->radiusB = radiusB; + pc->type = manifold->type; + + for (int32 j = 0; j < pointCount; ++j) + { + b2ManifoldPoint* cp = manifold->points + j; + b2VelocityConstraintPoint* vcp = vc->points + j; + + if (m_step.warmStarting) + { + vcp->normalImpulse = m_step.dtRatio * cp->normalImpulse; + vcp->tangentImpulse = m_step.dtRatio * cp->tangentImpulse; + } + else + { + vcp->normalImpulse = 0.0f; + vcp->tangentImpulse = 0.0f; + } + + vcp->rA.SetZero(); + vcp->rB.SetZero(); + vcp->normalMass = 0.0f; + vcp->tangentMass = 0.0f; + vcp->velocityBias = 0.0f; + + pc->localPoints[j] = cp->localPoint; + } + } +} + +b2ContactSolver::~b2ContactSolver() +{ + m_allocator->Free(m_velocityConstraints); + m_allocator->Free(m_positionConstraints); +} + +// Initialize position dependent portions of the velocity constraints. +void b2ContactSolver::InitializeVelocityConstraints() +{ + for (int32 i = 0; i < m_count; ++i) + { + b2ContactVelocityConstraint* vc = m_velocityConstraints + i; + b2ContactPositionConstraint* pc = m_positionConstraints + i; + + float32 radiusA = pc->radiusA; + float32 radiusB = pc->radiusB; + b2Manifold* manifold = m_contacts[vc->contactIndex]->GetManifold(); + + int32 indexA = vc->indexA; + int32 indexB = vc->indexB; + + float32 mA = vc->invMassA; + float32 mB = vc->invMassB; + float32 iA = vc->invIA; + float32 iB = vc->invIB; + b2Vec2 localCenterA = pc->localCenterA; + b2Vec2 localCenterB = pc->localCenterB; + + b2Vec2 cA = m_positions[indexA].c; + float32 aA = m_positions[indexA].a; + b2Vec2 vA = m_velocities[indexA].v; + float32 wA = m_velocities[indexA].w; + + b2Vec2 cB = m_positions[indexB].c; + float32 aB = m_positions[indexB].a; + b2Vec2 vB = m_velocities[indexB].v; + float32 wB = m_velocities[indexB].w; + + b2Assert(manifold->pointCount > 0); + + b2Transform xfA, xfB; + xfA.q.Set(aA); + xfB.q.Set(aB); + xfA.p = cA - b2Mul(xfA.q, localCenterA); + xfB.p = cB - b2Mul(xfB.q, localCenterB); + + b2WorldManifold worldManifold; + worldManifold.Initialize(manifold, xfA, radiusA, xfB, radiusB); + + vc->normal = worldManifold.normal; + + int32 pointCount = vc->pointCount; + for (int32 j = 0; j < pointCount; ++j) + { + b2VelocityConstraintPoint* vcp = vc->points + j; + + vcp->rA = worldManifold.points[j] - cA; + vcp->rB = worldManifold.points[j] - cB; + + float32 rnA = b2Cross(vcp->rA, vc->normal); + float32 rnB = b2Cross(vcp->rB, vc->normal); + + float32 kNormal = mA + mB + iA * rnA * rnA + iB * rnB * rnB; + + vcp->normalMass = kNormal > 0.0f ? 1.0f / kNormal : 0.0f; + + b2Vec2 tangent = b2Cross(vc->normal, 1.0f); + + float32 rtA = b2Cross(vcp->rA, tangent); + float32 rtB = b2Cross(vcp->rB, tangent); + + float32 kTangent = mA + mB + iA * rtA * rtA + iB * rtB * rtB; + + vcp->tangentMass = kTangent > 0.0f ? 1.0f / kTangent : 0.0f; + + // Setup a velocity bias for restitution. + vcp->velocityBias = 0.0f; + float32 vRel = b2Dot(vc->normal, vB + b2Cross(wB, vcp->rB) - vA - b2Cross(wA, vcp->rA)); + if (vRel < -b2_velocityThreshold) + { + vcp->velocityBias = -vc->restitution * vRel; + } + } + + // If we have two points, then prepare the block solver. + if (vc->pointCount == 2 && g_blockSolve) + { + b2VelocityConstraintPoint* vcp1 = vc->points + 0; + b2VelocityConstraintPoint* vcp2 = vc->points + 1; + + float32 rn1A = b2Cross(vcp1->rA, vc->normal); + float32 rn1B = b2Cross(vcp1->rB, vc->normal); + float32 rn2A = b2Cross(vcp2->rA, vc->normal); + float32 rn2B = b2Cross(vcp2->rB, vc->normal); + + float32 k11 = mA + mB + iA * rn1A * rn1A + iB * rn1B * rn1B; + float32 k22 = mA + mB + iA * rn2A * rn2A + iB * rn2B * rn2B; + float32 k12 = mA + mB + iA * rn1A * rn2A + iB * rn1B * rn2B; + + // Ensure a reasonable condition number. + const float32 k_maxConditionNumber = 1000.0f; + if (k11 * k11 < k_maxConditionNumber * (k11 * k22 - k12 * k12)) + { + // K is safe to invert. + vc->K.ex.Set(k11, k12); + vc->K.ey.Set(k12, k22); + vc->normalMass = vc->K.GetInverse(); + } + else + { + // The constraints are redundant, just use one. + // TODO_ERIN use deepest? + vc->pointCount = 1; + } + } + } +} + +void b2ContactSolver::WarmStart() +{ + // Warm start. + for (int32 i = 0; i < m_count; ++i) + { + b2ContactVelocityConstraint* vc = m_velocityConstraints + i; + + int32 indexA = vc->indexA; + int32 indexB = vc->indexB; + float32 mA = vc->invMassA; + float32 iA = vc->invIA; + float32 mB = vc->invMassB; + float32 iB = vc->invIB; + int32 pointCount = vc->pointCount; + + b2Vec2 vA = m_velocities[indexA].v; + float32 wA = m_velocities[indexA].w; + b2Vec2 vB = m_velocities[indexB].v; + float32 wB = m_velocities[indexB].w; + + b2Vec2 normal = vc->normal; + b2Vec2 tangent = b2Cross(normal, 1.0f); + + for (int32 j = 0; j < pointCount; ++j) + { + b2VelocityConstraintPoint* vcp = vc->points + j; + b2Vec2 P = vcp->normalImpulse * normal + vcp->tangentImpulse * tangent; + wA -= iA * b2Cross(vcp->rA, P); + vA -= mA * P; + wB += iB * b2Cross(vcp->rB, P); + vB += mB * P; + } + + m_velocities[indexA].v = vA; + m_velocities[indexA].w = wA; + m_velocities[indexB].v = vB; + m_velocities[indexB].w = wB; + } +} + +void b2ContactSolver::SolveVelocityConstraints() +{ + for (int32 i = 0; i < m_count; ++i) + { + b2ContactVelocityConstraint* vc = m_velocityConstraints + i; + + int32 indexA = vc->indexA; + int32 indexB = vc->indexB; + float32 mA = vc->invMassA; + float32 iA = vc->invIA; + float32 mB = vc->invMassB; + float32 iB = vc->invIB; + int32 pointCount = vc->pointCount; + + b2Vec2 vA = m_velocities[indexA].v; + float32 wA = m_velocities[indexA].w; + b2Vec2 vB = m_velocities[indexB].v; + float32 wB = m_velocities[indexB].w; + + b2Vec2 normal = vc->normal; + b2Vec2 tangent = b2Cross(normal, 1.0f); + float32 friction = vc->friction; + + b2Assert(pointCount == 1 || pointCount == 2); + + // Solve tangent constraints first because non-penetration is more important + // than friction. + for (int32 j = 0; j < pointCount; ++j) + { + b2VelocityConstraintPoint* vcp = vc->points + j; + + // Relative velocity at contact + b2Vec2 dv = vB + b2Cross(wB, vcp->rB) - vA - b2Cross(wA, vcp->rA); + + // Compute tangent force + float32 vt = b2Dot(dv, tangent) - vc->tangentSpeed; + float32 lambda = vcp->tangentMass * (-vt); + + // b2Clamp the accumulated force + float32 maxFriction = friction * vcp->normalImpulse; + float32 newImpulse = b2Clamp(vcp->tangentImpulse + lambda, -maxFriction, maxFriction); + lambda = newImpulse - vcp->tangentImpulse; + vcp->tangentImpulse = newImpulse; + + // Apply contact impulse + b2Vec2 P = lambda * tangent; + + vA -= mA * P; + wA -= iA * b2Cross(vcp->rA, P); + + vB += mB * P; + wB += iB * b2Cross(vcp->rB, P); + } + + // Solve normal constraints + if (pointCount == 1 || g_blockSolve == false) + { + for (int32 i = 0; i < pointCount; ++i) + { + b2VelocityConstraintPoint* vcp = vc->points + i; + + // Relative velocity at contact + b2Vec2 dv = vB + b2Cross(wB, vcp->rB) - vA - b2Cross(wA, vcp->rA); + + // Compute normal impulse + float32 vn = b2Dot(dv, normal); + float32 lambda = -vcp->normalMass * (vn - vcp->velocityBias); + + // b2Clamp the accumulated impulse + float32 newImpulse = b2Max(vcp->normalImpulse + lambda, 0.0f); + lambda = newImpulse - vcp->normalImpulse; + vcp->normalImpulse = newImpulse; + + // Apply contact impulse + b2Vec2 P = lambda * normal; + vA -= mA * P; + wA -= iA * b2Cross(vcp->rA, P); + + vB += mB * P; + wB += iB * b2Cross(vcp->rB, P); + } + } + else + { + // Block solver developed in collaboration with Dirk Gregorius (back in 01/07 on Box2D_Lite). + // Build the mini LCP for this contact patch + // + // vn = A * x + b, vn >= 0, , vn >= 0, x >= 0 and vn_i * x_i = 0 with i = 1..2 + // + // A = J * W * JT and J = ( -n, -r1 x n, n, r2 x n ) + // b = vn0 - velocityBias + // + // The system is solved using the "Total enumeration method" (s. Murty). The complementary constraint vn_i * x_i + // implies that we must have in any solution either vn_i = 0 or x_i = 0. So for the 2D contact problem the cases + // vn1 = 0 and vn2 = 0, x1 = 0 and x2 = 0, x1 = 0 and vn2 = 0, x2 = 0 and vn1 = 0 need to be tested. The first valid + // solution that satisfies the problem is chosen. + // + // In order to account of the accumulated impulse 'a' (because of the iterative nature of the solver which only requires + // that the accumulated impulse is clamped and not the incremental impulse) we change the impulse variable (x_i). + // + // Substitute: + // + // x = a + d + // + // a := old total impulse + // x := new total impulse + // d := incremental impulse + // + // For the current iteration we extend the formula for the incremental impulse + // to compute the new total impulse: + // + // vn = A * d + b + // = A * (x - a) + b + // = A * x + b - A * a + // = A * x + b' + // b' = b - A * a; + + b2VelocityConstraintPoint* cp1 = vc->points + 0; + b2VelocityConstraintPoint* cp2 = vc->points + 1; + + b2Vec2 a(cp1->normalImpulse, cp2->normalImpulse); + b2Assert(a.x >= 0.0f && a.y >= 0.0f); + + // Relative velocity at contact + b2Vec2 dv1 = vB + b2Cross(wB, cp1->rB) - vA - b2Cross(wA, cp1->rA); + b2Vec2 dv2 = vB + b2Cross(wB, cp2->rB) - vA - b2Cross(wA, cp2->rA); + + // Compute normal velocity + float32 vn1 = b2Dot(dv1, normal); + float32 vn2 = b2Dot(dv2, normal); + + b2Vec2 b; + b.x = vn1 - cp1->velocityBias; + b.y = vn2 - cp2->velocityBias; + + // Compute b' + b -= b2Mul(vc->K, a); + + const float32 k_errorTol = 1e-3f; + B2_NOT_USED(k_errorTol); + + for (;;) + { + // + // Case 1: vn = 0 + // + // 0 = A * x + b' + // + // Solve for x: + // + // x = - inv(A) * b' + // + b2Vec2 x = - b2Mul(vc->normalMass, b); + + if (x.x >= 0.0f && x.y >= 0.0f) + { + // Get the incremental impulse + b2Vec2 d = x - a; + + // Apply incremental impulse + b2Vec2 P1 = d.x * normal; + b2Vec2 P2 = d.y * normal; + vA -= mA * (P1 + P2); + wA -= iA * (b2Cross(cp1->rA, P1) + b2Cross(cp2->rA, P2)); + + vB += mB * (P1 + P2); + wB += iB * (b2Cross(cp1->rB, P1) + b2Cross(cp2->rB, P2)); + + // Accumulate + cp1->normalImpulse = x.x; + cp2->normalImpulse = x.y; + +#if B2_DEBUG_SOLVER == 1 + // Postconditions + dv1 = vB + b2Cross(wB, cp1->rB) - vA - b2Cross(wA, cp1->rA); + dv2 = vB + b2Cross(wB, cp2->rB) - vA - b2Cross(wA, cp2->rA); + + // Compute normal velocity + vn1 = b2Dot(dv1, normal); + vn2 = b2Dot(dv2, normal); + + b2Assert(b2Abs(vn1 - cp1->velocityBias) < k_errorTol); + b2Assert(b2Abs(vn2 - cp2->velocityBias) < k_errorTol); +#endif + break; + } + + // + // Case 2: vn1 = 0 and x2 = 0 + // + // 0 = a11 * x1 + a12 * 0 + b1' + // vn2 = a21 * x1 + a22 * 0 + b2' + // + x.x = - cp1->normalMass * b.x; + x.y = 0.0f; + vn1 = 0.0f; + vn2 = vc->K.ex.y * x.x + b.y; + + if (x.x >= 0.0f && vn2 >= 0.0f) + { + // Get the incremental impulse + b2Vec2 d = x - a; + + // Apply incremental impulse + b2Vec2 P1 = d.x * normal; + b2Vec2 P2 = d.y * normal; + vA -= mA * (P1 + P2); + wA -= iA * (b2Cross(cp1->rA, P1) + b2Cross(cp2->rA, P2)); + + vB += mB * (P1 + P2); + wB += iB * (b2Cross(cp1->rB, P1) + b2Cross(cp2->rB, P2)); + + // Accumulate + cp1->normalImpulse = x.x; + cp2->normalImpulse = x.y; + +#if B2_DEBUG_SOLVER == 1 + // Postconditions + dv1 = vB + b2Cross(wB, cp1->rB) - vA - b2Cross(wA, cp1->rA); + + // Compute normal velocity + vn1 = b2Dot(dv1, normal); + + b2Assert(b2Abs(vn1 - cp1->velocityBias) < k_errorTol); +#endif + break; + } + + + // + // Case 3: vn2 = 0 and x1 = 0 + // + // vn1 = a11 * 0 + a12 * x2 + b1' + // 0 = a21 * 0 + a22 * x2 + b2' + // + x.x = 0.0f; + x.y = - cp2->normalMass * b.y; + vn1 = vc->K.ey.x * x.y + b.x; + vn2 = 0.0f; + + if (x.y >= 0.0f && vn1 >= 0.0f) + { + // Resubstitute for the incremental impulse + b2Vec2 d = x - a; + + // Apply incremental impulse + b2Vec2 P1 = d.x * normal; + b2Vec2 P2 = d.y * normal; + vA -= mA * (P1 + P2); + wA -= iA * (b2Cross(cp1->rA, P1) + b2Cross(cp2->rA, P2)); + + vB += mB * (P1 + P2); + wB += iB * (b2Cross(cp1->rB, P1) + b2Cross(cp2->rB, P2)); + + // Accumulate + cp1->normalImpulse = x.x; + cp2->normalImpulse = x.y; + +#if B2_DEBUG_SOLVER == 1 + // Postconditions + dv2 = vB + b2Cross(wB, cp2->rB) - vA - b2Cross(wA, cp2->rA); + + // Compute normal velocity + vn2 = b2Dot(dv2, normal); + + b2Assert(b2Abs(vn2 - cp2->velocityBias) < k_errorTol); +#endif + break; + } + + // + // Case 4: x1 = 0 and x2 = 0 + // + // vn1 = b1 + // vn2 = b2; + x.x = 0.0f; + x.y = 0.0f; + vn1 = b.x; + vn2 = b.y; + + if (vn1 >= 0.0f && vn2 >= 0.0f ) + { + // Resubstitute for the incremental impulse + b2Vec2 d = x - a; + + // Apply incremental impulse + b2Vec2 P1 = d.x * normal; + b2Vec2 P2 = d.y * normal; + vA -= mA * (P1 + P2); + wA -= iA * (b2Cross(cp1->rA, P1) + b2Cross(cp2->rA, P2)); + + vB += mB * (P1 + P2); + wB += iB * (b2Cross(cp1->rB, P1) + b2Cross(cp2->rB, P2)); + + // Accumulate + cp1->normalImpulse = x.x; + cp2->normalImpulse = x.y; + + break; + } + + // No solution, give up. This is hit sometimes, but it doesn't seem to matter. + break; + } + } + + m_velocities[indexA].v = vA; + m_velocities[indexA].w = wA; + m_velocities[indexB].v = vB; + m_velocities[indexB].w = wB; + } +} + +void b2ContactSolver::StoreImpulses() +{ + for (int32 i = 0; i < m_count; ++i) + { + b2ContactVelocityConstraint* vc = m_velocityConstraints + i; + b2Manifold* manifold = m_contacts[vc->contactIndex]->GetManifold(); + + for (int32 j = 0; j < vc->pointCount; ++j) + { + manifold->points[j].normalImpulse = vc->points[j].normalImpulse; + manifold->points[j].tangentImpulse = vc->points[j].tangentImpulse; + } + } +} + +struct b2PositionSolverManifold +{ + void Initialize(b2ContactPositionConstraint* pc, const b2Transform& xfA, const b2Transform& xfB, int32 index) + { + b2Assert(pc->pointCount > 0); + + switch (pc->type) + { + case b2Manifold::e_circles: + { + b2Vec2 pointA = b2Mul(xfA, pc->localPoint); + b2Vec2 pointB = b2Mul(xfB, pc->localPoints[0]); + normal = pointB - pointA; + normal.Normalize(); + point = 0.5f * (pointA + pointB); + separation = b2Dot(pointB - pointA, normal) - pc->radiusA - pc->radiusB; + } + break; + + case b2Manifold::e_faceA: + { + normal = b2Mul(xfA.q, pc->localNormal); + b2Vec2 planePoint = b2Mul(xfA, pc->localPoint); + + b2Vec2 clipPoint = b2Mul(xfB, pc->localPoints[index]); + separation = b2Dot(clipPoint - planePoint, normal) - pc->radiusA - pc->radiusB; + point = clipPoint; + } + break; + + case b2Manifold::e_faceB: + { + normal = b2Mul(xfB.q, pc->localNormal); + b2Vec2 planePoint = b2Mul(xfB, pc->localPoint); + + b2Vec2 clipPoint = b2Mul(xfA, pc->localPoints[index]); + separation = b2Dot(clipPoint - planePoint, normal) - pc->radiusA - pc->radiusB; + point = clipPoint; + + // Ensure normal points from A to B + normal = -normal; + } + break; + } + } + + b2Vec2 normal; + b2Vec2 point; + float32 separation; +}; + +// Sequential solver. +bool b2ContactSolver::SolvePositionConstraints() +{ + float32 minSeparation = 0.0f; + + for (int32 i = 0; i < m_count; ++i) + { + b2ContactPositionConstraint* pc = m_positionConstraints + i; + + int32 indexA = pc->indexA; + int32 indexB = pc->indexB; + b2Vec2 localCenterA = pc->localCenterA; + float32 mA = pc->invMassA; + float32 iA = pc->invIA; + b2Vec2 localCenterB = pc->localCenterB; + float32 mB = pc->invMassB; + float32 iB = pc->invIB; + int32 pointCount = pc->pointCount; + + b2Vec2 cA = m_positions[indexA].c; + float32 aA = m_positions[indexA].a; + + b2Vec2 cB = m_positions[indexB].c; + float32 aB = m_positions[indexB].a; + + // Solve normal constraints + for (int32 j = 0; j < pointCount; ++j) + { + b2Transform xfA, xfB; + xfA.q.Set(aA); + xfB.q.Set(aB); + xfA.p = cA - b2Mul(xfA.q, localCenterA); + xfB.p = cB - b2Mul(xfB.q, localCenterB); + + b2PositionSolverManifold psm; + psm.Initialize(pc, xfA, xfB, j); + b2Vec2 normal = psm.normal; + + b2Vec2 point = psm.point; + float32 separation = psm.separation; + + b2Vec2 rA = point - cA; + b2Vec2 rB = point - cB; + + // Track max constraint error. + minSeparation = b2Min(minSeparation, separation); + + // Prevent large corrections and allow slop. + float32 C = b2Clamp(b2_baumgarte * (separation + b2_linearSlop), -b2_maxLinearCorrection, 0.0f); + + // Compute the effective mass. + float32 rnA = b2Cross(rA, normal); + float32 rnB = b2Cross(rB, normal); + float32 K = mA + mB + iA * rnA * rnA + iB * rnB * rnB; + + // Compute normal impulse + float32 impulse = K > 0.0f ? - C / K : 0.0f; + + b2Vec2 P = impulse * normal; + + cA -= mA * P; + aA -= iA * b2Cross(rA, P); + + cB += mB * P; + aB += iB * b2Cross(rB, P); + } + + m_positions[indexA].c = cA; + m_positions[indexA].a = aA; + + m_positions[indexB].c = cB; + m_positions[indexB].a = aB; + } + + // We can't expect minSpeparation >= -b2_linearSlop because we don't + // push the separation above -b2_linearSlop. + return minSeparation >= -3.0f * b2_linearSlop; +} + +// Sequential position solver for position constraints. +bool b2ContactSolver::SolveTOIPositionConstraints(int32 toiIndexA, int32 toiIndexB) +{ + float32 minSeparation = 0.0f; + + for (int32 i = 0; i < m_count; ++i) + { + b2ContactPositionConstraint* pc = m_positionConstraints + i; + + int32 indexA = pc->indexA; + int32 indexB = pc->indexB; + b2Vec2 localCenterA = pc->localCenterA; + b2Vec2 localCenterB = pc->localCenterB; + int32 pointCount = pc->pointCount; + + float32 mA = 0.0f; + float32 iA = 0.0f; + if (indexA == toiIndexA || indexA == toiIndexB) + { + mA = pc->invMassA; + iA = pc->invIA; + } + + float32 mB = 0.0f; + float32 iB = 0.; + if (indexB == toiIndexA || indexB == toiIndexB) + { + mB = pc->invMassB; + iB = pc->invIB; + } + + b2Vec2 cA = m_positions[indexA].c; + float32 aA = m_positions[indexA].a; + + b2Vec2 cB = m_positions[indexB].c; + float32 aB = m_positions[indexB].a; + + // Solve normal constraints + for (int32 j = 0; j < pointCount; ++j) + { + b2Transform xfA, xfB; + xfA.q.Set(aA); + xfB.q.Set(aB); + xfA.p = cA - b2Mul(xfA.q, localCenterA); + xfB.p = cB - b2Mul(xfB.q, localCenterB); + + b2PositionSolverManifold psm; + psm.Initialize(pc, xfA, xfB, j); + b2Vec2 normal = psm.normal; + + b2Vec2 point = psm.point; + float32 separation = psm.separation; + + b2Vec2 rA = point - cA; + b2Vec2 rB = point - cB; + + // Track max constraint error. + minSeparation = b2Min(minSeparation, separation); + + // Prevent large corrections and allow slop. + float32 C = b2Clamp(b2_toiBaugarte * (separation + b2_linearSlop), -b2_maxLinearCorrection, 0.0f); + + // Compute the effective mass. + float32 rnA = b2Cross(rA, normal); + float32 rnB = b2Cross(rB, normal); + float32 K = mA + mB + iA * rnA * rnA + iB * rnB * rnB; + + // Compute normal impulse + float32 impulse = K > 0.0f ? - C / K : 0.0f; + + b2Vec2 P = impulse * normal; + + cA -= mA * P; + aA -= iA * b2Cross(rA, P); + + cB += mB * P; + aB += iB * b2Cross(rB, P); + } + + m_positions[indexA].c = cA; + m_positions[indexA].a = aA; + + m_positions[indexB].c = cB; + m_positions[indexB].a = aB; + } + + // We can't expect minSpeparation >= -b2_linearSlop because we don't + // push the separation above -b2_linearSlop. + return minSeparation >= -1.5f * b2_linearSlop; +} diff --git a/Dependencies/Box2D/src/Dynamics/Contacts/b2ContactSolver.h b/Dependencies/Box2D/src/Dynamics/Contacts/b2ContactSolver.h new file mode 100644 index 00000000..c7e0426b --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Contacts/b2ContactSolver.h @@ -0,0 +1,95 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_CONTACT_SOLVER_H +#define B2_CONTACT_SOLVER_H + +#include +#include +#include + +class b2Contact; +class b2Body; +class b2StackAllocator; +struct b2ContactPositionConstraint; + +struct b2VelocityConstraintPoint +{ + b2Vec2 rA; + b2Vec2 rB; + float32 normalImpulse; + float32 tangentImpulse; + float32 normalMass; + float32 tangentMass; + float32 velocityBias; +}; + +struct b2ContactVelocityConstraint +{ + b2VelocityConstraintPoint points[b2_maxManifoldPoints]; + b2Vec2 normal; + b2Mat22 normalMass; + b2Mat22 K; + int32 indexA; + int32 indexB; + float32 invMassA, invMassB; + float32 invIA, invIB; + float32 friction; + float32 restitution; + float32 tangentSpeed; + int32 pointCount; + int32 contactIndex; +}; + +struct b2ContactSolverDef +{ + b2TimeStep step; + b2Contact** contacts; + int32 count; + b2Position* positions; + b2Velocity* velocities; + b2StackAllocator* allocator; +}; + +class b2ContactSolver +{ +public: + b2ContactSolver(b2ContactSolverDef* def); + ~b2ContactSolver(); + + void InitializeVelocityConstraints(); + + void WarmStart(); + void SolveVelocityConstraints(); + void StoreImpulses(); + + bool SolvePositionConstraints(); + bool SolveTOIPositionConstraints(int32 toiIndexA, int32 toiIndexB); + + b2TimeStep m_step; + b2Position* m_positions; + b2Velocity* m_velocities; + b2StackAllocator* m_allocator; + b2ContactPositionConstraint* m_positionConstraints; + b2ContactVelocityConstraint* m_velocityConstraints; + b2Contact** m_contacts; + int m_count; +}; + +#endif + diff --git a/Dependencies/Box2D/src/Dynamics/Contacts/b2EdgeAndCircleContact.cpp b/Dependencies/Box2D/src/Dynamics/Contacts/b2EdgeAndCircleContact.cpp new file mode 100644 index 00000000..b2be085a --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Contacts/b2EdgeAndCircleContact.cpp @@ -0,0 +1,49 @@ +/* +* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include + +#include + +b2Contact* b2EdgeAndCircleContact::Create(b2Fixture* fixtureA, int32, b2Fixture* fixtureB, int32, b2BlockAllocator* allocator) +{ + void* mem = allocator->Allocate(sizeof(b2EdgeAndCircleContact)); + return new (mem) b2EdgeAndCircleContact(fixtureA, fixtureB); +} + +void b2EdgeAndCircleContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator) +{ + ((b2EdgeAndCircleContact*)contact)->~b2EdgeAndCircleContact(); + allocator->Free(contact, sizeof(b2EdgeAndCircleContact)); +} + +b2EdgeAndCircleContact::b2EdgeAndCircleContact(b2Fixture* fixtureA, b2Fixture* fixtureB) +: b2Contact(fixtureA, 0, fixtureB, 0) +{ + b2Assert(m_fixtureA->GetType() == b2Shape::e_edge); + b2Assert(m_fixtureB->GetType() == b2Shape::e_circle); +} + +void b2EdgeAndCircleContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB) +{ + b2CollideEdgeAndCircle( manifold, + (b2EdgeShape*)m_fixtureA->GetShape(), xfA, + (b2CircleShape*)m_fixtureB->GetShape(), xfB); +} diff --git a/Dependencies/Box2D/src/Dynamics/Contacts/b2EdgeAndCircleContact.h b/Dependencies/Box2D/src/Dynamics/Contacts/b2EdgeAndCircleContact.h new file mode 100644 index 00000000..0373e09e --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Contacts/b2EdgeAndCircleContact.h @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_EDGE_AND_CIRCLE_CONTACT_H +#define B2_EDGE_AND_CIRCLE_CONTACT_H + +#include + +class b2BlockAllocator; + +class b2EdgeAndCircleContact : public b2Contact +{ +public: + static b2Contact* Create( b2Fixture* fixtureA, int32 indexA, + b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator); + static void Destroy(b2Contact* contact, b2BlockAllocator* allocator); + + b2EdgeAndCircleContact(b2Fixture* fixtureA, b2Fixture* fixtureB); + ~b2EdgeAndCircleContact() {} + + void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB); +}; + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp b/Dependencies/Box2D/src/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp new file mode 100644 index 00000000..75415291 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp @@ -0,0 +1,49 @@ +/* +* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include + +#include + +b2Contact* b2EdgeAndPolygonContact::Create(b2Fixture* fixtureA, int32, b2Fixture* fixtureB, int32, b2BlockAllocator* allocator) +{ + void* mem = allocator->Allocate(sizeof(b2EdgeAndPolygonContact)); + return new (mem) b2EdgeAndPolygonContact(fixtureA, fixtureB); +} + +void b2EdgeAndPolygonContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator) +{ + ((b2EdgeAndPolygonContact*)contact)->~b2EdgeAndPolygonContact(); + allocator->Free(contact, sizeof(b2EdgeAndPolygonContact)); +} + +b2EdgeAndPolygonContact::b2EdgeAndPolygonContact(b2Fixture* fixtureA, b2Fixture* fixtureB) +: b2Contact(fixtureA, 0, fixtureB, 0) +{ + b2Assert(m_fixtureA->GetType() == b2Shape::e_edge); + b2Assert(m_fixtureB->GetType() == b2Shape::e_polygon); +} + +void b2EdgeAndPolygonContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB) +{ + b2CollideEdgeAndPolygon( manifold, + (b2EdgeShape*)m_fixtureA->GetShape(), xfA, + (b2PolygonShape*)m_fixtureB->GetShape(), xfB); +} diff --git a/Dependencies/Box2D/src/Dynamics/Contacts/b2EdgeAndPolygonContact.h b/Dependencies/Box2D/src/Dynamics/Contacts/b2EdgeAndPolygonContact.h new file mode 100644 index 00000000..ccffb942 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Contacts/b2EdgeAndPolygonContact.h @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_EDGE_AND_POLYGON_CONTACT_H +#define B2_EDGE_AND_POLYGON_CONTACT_H + +#include + +class b2BlockAllocator; + +class b2EdgeAndPolygonContact : public b2Contact +{ +public: + static b2Contact* Create( b2Fixture* fixtureA, int32 indexA, + b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator); + static void Destroy(b2Contact* contact, b2BlockAllocator* allocator); + + b2EdgeAndPolygonContact(b2Fixture* fixtureA, b2Fixture* fixtureB); + ~b2EdgeAndPolygonContact() {} + + void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB); +}; + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Contacts/b2PolygonAndCircleContact.cpp b/Dependencies/Box2D/src/Dynamics/Contacts/b2PolygonAndCircleContact.cpp new file mode 100644 index 00000000..860e2ca0 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Contacts/b2PolygonAndCircleContact.cpp @@ -0,0 +1,49 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include + +#include + +b2Contact* b2PolygonAndCircleContact::Create(b2Fixture* fixtureA, int32, b2Fixture* fixtureB, int32, b2BlockAllocator* allocator) +{ + void* mem = allocator->Allocate(sizeof(b2PolygonAndCircleContact)); + return new (mem) b2PolygonAndCircleContact(fixtureA, fixtureB); +} + +void b2PolygonAndCircleContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator) +{ + ((b2PolygonAndCircleContact*)contact)->~b2PolygonAndCircleContact(); + allocator->Free(contact, sizeof(b2PolygonAndCircleContact)); +} + +b2PolygonAndCircleContact::b2PolygonAndCircleContact(b2Fixture* fixtureA, b2Fixture* fixtureB) +: b2Contact(fixtureA, 0, fixtureB, 0) +{ + b2Assert(m_fixtureA->GetType() == b2Shape::e_polygon); + b2Assert(m_fixtureB->GetType() == b2Shape::e_circle); +} + +void b2PolygonAndCircleContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB) +{ + b2CollidePolygonAndCircle( manifold, + (b2PolygonShape*)m_fixtureA->GetShape(), xfA, + (b2CircleShape*)m_fixtureB->GetShape(), xfB); +} diff --git a/Dependencies/Box2D/src/Dynamics/Contacts/b2PolygonAndCircleContact.h b/Dependencies/Box2D/src/Dynamics/Contacts/b2PolygonAndCircleContact.h new file mode 100644 index 00000000..4902cee2 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Contacts/b2PolygonAndCircleContact.h @@ -0,0 +1,38 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_POLYGON_AND_CIRCLE_CONTACT_H +#define B2_POLYGON_AND_CIRCLE_CONTACT_H + +#include + +class b2BlockAllocator; + +class b2PolygonAndCircleContact : public b2Contact +{ +public: + static b2Contact* Create(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator); + static void Destroy(b2Contact* contact, b2BlockAllocator* allocator); + + b2PolygonAndCircleContact(b2Fixture* fixtureA, b2Fixture* fixtureB); + ~b2PolygonAndCircleContact() {} + + void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB); +}; + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Contacts/b2PolygonContact.cpp b/Dependencies/Box2D/src/Dynamics/Contacts/b2PolygonContact.cpp new file mode 100644 index 00000000..deed8fda --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Contacts/b2PolygonContact.cpp @@ -0,0 +1,52 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include +#include +#include +#include + +#include + +b2Contact* b2PolygonContact::Create(b2Fixture* fixtureA, int32, b2Fixture* fixtureB, int32, b2BlockAllocator* allocator) +{ + void* mem = allocator->Allocate(sizeof(b2PolygonContact)); + return new (mem) b2PolygonContact(fixtureA, fixtureB); +} + +void b2PolygonContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator) +{ + ((b2PolygonContact*)contact)->~b2PolygonContact(); + allocator->Free(contact, sizeof(b2PolygonContact)); +} + +b2PolygonContact::b2PolygonContact(b2Fixture* fixtureA, b2Fixture* fixtureB) + : b2Contact(fixtureA, 0, fixtureB, 0) +{ + b2Assert(m_fixtureA->GetType() == b2Shape::e_polygon); + b2Assert(m_fixtureB->GetType() == b2Shape::e_polygon); +} + +void b2PolygonContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB) +{ + b2CollidePolygons( manifold, + (b2PolygonShape*)m_fixtureA->GetShape(), xfA, + (b2PolygonShape*)m_fixtureB->GetShape(), xfB); +} diff --git a/Dependencies/Box2D/src/Dynamics/Contacts/b2PolygonContact.h b/Dependencies/Box2D/src/Dynamics/Contacts/b2PolygonContact.h new file mode 100644 index 00000000..9c9d3c6f --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Contacts/b2PolygonContact.h @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_POLYGON_CONTACT_H +#define B2_POLYGON_CONTACT_H + +#include + +class b2BlockAllocator; + +class b2PolygonContact : public b2Contact +{ +public: + static b2Contact* Create( b2Fixture* fixtureA, int32 indexA, + b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator); + static void Destroy(b2Contact* contact, b2BlockAllocator* allocator); + + b2PolygonContact(b2Fixture* fixtureA, b2Fixture* fixtureB); + ~b2PolygonContact() {} + + void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB); +}; + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2DistanceJoint.cpp b/Dependencies/Box2D/src/Dynamics/Joints/b2DistanceJoint.cpp new file mode 100644 index 00000000..8abb0588 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2DistanceJoint.cpp @@ -0,0 +1,260 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include + +// 1-D constrained system +// m (v2 - v1) = lambda +// v2 + (beta/h) * x1 + gamma * lambda = 0, gamma has units of inverse mass. +// x2 = x1 + h * v2 + +// 1-D mass-damper-spring system +// m (v2 - v1) + h * d * v2 + h * k * + +// C = norm(p2 - p1) - L +// u = (p2 - p1) / norm(p2 - p1) +// Cdot = dot(u, v2 + cross(w2, r2) - v1 - cross(w1, r1)) +// J = [-u -cross(r1, u) u cross(r2, u)] +// K = J * invM * JT +// = invMass1 + invI1 * cross(r1, u)^2 + invMass2 + invI2 * cross(r2, u)^2 + +void b2DistanceJointDef::Initialize(b2Body* b1, b2Body* b2, + const b2Vec2& anchor1, const b2Vec2& anchor2) +{ + bodyA = b1; + bodyB = b2; + localAnchorA = bodyA->GetLocalPoint(anchor1); + localAnchorB = bodyB->GetLocalPoint(anchor2); + b2Vec2 d = anchor2 - anchor1; + length = d.Length(); +} + +b2DistanceJoint::b2DistanceJoint(const b2DistanceJointDef* def) +: b2Joint(def) +{ + m_localAnchorA = def->localAnchorA; + m_localAnchorB = def->localAnchorB; + m_length = def->length; + m_frequencyHz = def->frequencyHz; + m_dampingRatio = def->dampingRatio; + m_impulse = 0.0f; + m_gamma = 0.0f; + m_bias = 0.0f; +} + +void b2DistanceJoint::InitVelocityConstraints(const b2SolverData& data) +{ + m_indexA = m_bodyA->m_islandIndex; + m_indexB = m_bodyB->m_islandIndex; + m_localCenterA = m_bodyA->m_sweep.localCenter; + m_localCenterB = m_bodyB->m_sweep.localCenter; + m_invMassA = m_bodyA->m_invMass; + m_invMassB = m_bodyB->m_invMass; + m_invIA = m_bodyA->m_invI; + m_invIB = m_bodyB->m_invI; + + b2Vec2 cA = data.positions[m_indexA].c; + float32 aA = data.positions[m_indexA].a; + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + + b2Vec2 cB = data.positions[m_indexB].c; + float32 aB = data.positions[m_indexB].a; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + b2Rot qA(aA), qB(aB); + + m_rA = b2Mul(qA, m_localAnchorA - m_localCenterA); + m_rB = b2Mul(qB, m_localAnchorB - m_localCenterB); + m_u = cB + m_rB - cA - m_rA; + + // Handle singularity. + float32 length = m_u.Length(); + if (length > b2_linearSlop) + { + m_u *= 1.0f / length; + } + else + { + m_u.Set(0.0f, 0.0f); + } + + float32 crAu = b2Cross(m_rA, m_u); + float32 crBu = b2Cross(m_rB, m_u); + float32 invMass = m_invMassA + m_invIA * crAu * crAu + m_invMassB + m_invIB * crBu * crBu; + + // Compute the effective mass matrix. + m_mass = invMass != 0.0f ? 1.0f / invMass : 0.0f; + + if (m_frequencyHz > 0.0f) + { + float32 C = length - m_length; + + // Frequency + float32 omega = 2.0f * b2_pi * m_frequencyHz; + + // Damping coefficient + float32 d = 2.0f * m_mass * m_dampingRatio * omega; + + // Spring stiffness + float32 k = m_mass * omega * omega; + + // magic formulas + float32 h = data.step.dt; + m_gamma = h * (d + h * k); + m_gamma = m_gamma != 0.0f ? 1.0f / m_gamma : 0.0f; + m_bias = C * h * k * m_gamma; + + invMass += m_gamma; + m_mass = invMass != 0.0f ? 1.0f / invMass : 0.0f; + } + else + { + m_gamma = 0.0f; + m_bias = 0.0f; + } + + if (data.step.warmStarting) + { + // Scale the impulse to support a variable time step. + m_impulse *= data.step.dtRatio; + + b2Vec2 P = m_impulse * m_u; + vA -= m_invMassA * P; + wA -= m_invIA * b2Cross(m_rA, P); + vB += m_invMassB * P; + wB += m_invIB * b2Cross(m_rB, P); + } + else + { + m_impulse = 0.0f; + } + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +void b2DistanceJoint::SolveVelocityConstraints(const b2SolverData& data) +{ + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + // Cdot = dot(u, v + cross(w, r)) + b2Vec2 vpA = vA + b2Cross(wA, m_rA); + b2Vec2 vpB = vB + b2Cross(wB, m_rB); + float32 Cdot = b2Dot(m_u, vpB - vpA); + + float32 impulse = -m_mass * (Cdot + m_bias + m_gamma * m_impulse); + m_impulse += impulse; + + b2Vec2 P = impulse * m_u; + vA -= m_invMassA * P; + wA -= m_invIA * b2Cross(m_rA, P); + vB += m_invMassB * P; + wB += m_invIB * b2Cross(m_rB, P); + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +bool b2DistanceJoint::SolvePositionConstraints(const b2SolverData& data) +{ + if (m_frequencyHz > 0.0f) + { + // There is no position correction for soft distance constraints. + return true; + } + + b2Vec2 cA = data.positions[m_indexA].c; + float32 aA = data.positions[m_indexA].a; + b2Vec2 cB = data.positions[m_indexB].c; + float32 aB = data.positions[m_indexB].a; + + b2Rot qA(aA), qB(aB); + + b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_localCenterA); + b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_localCenterB); + b2Vec2 u = cB + rB - cA - rA; + + float32 length = u.Normalize(); + float32 C = length - m_length; + C = b2Clamp(C, -b2_maxLinearCorrection, b2_maxLinearCorrection); + + float32 impulse = -m_mass * C; + b2Vec2 P = impulse * u; + + cA -= m_invMassA * P; + aA -= m_invIA * b2Cross(rA, P); + cB += m_invMassB * P; + aB += m_invIB * b2Cross(rB, P); + + data.positions[m_indexA].c = cA; + data.positions[m_indexA].a = aA; + data.positions[m_indexB].c = cB; + data.positions[m_indexB].a = aB; + + return b2Abs(C) < b2_linearSlop; +} + +b2Vec2 b2DistanceJoint::GetAnchorA() const +{ + return m_bodyA->GetWorldPoint(m_localAnchorA); +} + +b2Vec2 b2DistanceJoint::GetAnchorB() const +{ + return m_bodyB->GetWorldPoint(m_localAnchorB); +} + +b2Vec2 b2DistanceJoint::GetReactionForce(float32 inv_dt) const +{ + b2Vec2 F = (inv_dt * m_impulse) * m_u; + return F; +} + +float32 b2DistanceJoint::GetReactionTorque(float32 inv_dt) const +{ + B2_NOT_USED(inv_dt); + return 0.0f; +} + +void b2DistanceJoint::Dump() +{ + int32 indexA = m_bodyA->m_islandIndex; + int32 indexB = m_bodyB->m_islandIndex; + + b2Log(" b2DistanceJointDef jd;\n"); + b2Log(" jd.bodyA = bodies[%d];\n", indexA); + b2Log(" jd.bodyB = bodies[%d];\n", indexB); + b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); + b2Log(" jd.localAnchorA.Set(%.15lef, %.15lef);\n", m_localAnchorA.x, m_localAnchorA.y); + b2Log(" jd.localAnchorB.Set(%.15lef, %.15lef);\n", m_localAnchorB.x, m_localAnchorB.y); + b2Log(" jd.length = %.15lef;\n", m_length); + b2Log(" jd.frequencyHz = %.15lef;\n", m_frequencyHz); + b2Log(" jd.dampingRatio = %.15lef;\n", m_dampingRatio); + b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); +} diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2DistanceJoint.h b/Dependencies/Box2D/src/Dynamics/Joints/b2DistanceJoint.h new file mode 100644 index 00000000..6237a9da --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2DistanceJoint.h @@ -0,0 +1,169 @@ +/* +* Copyright (c) 2006-2007 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_DISTANCE_JOINT_H +#define B2_DISTANCE_JOINT_H + +#include + +/// Distance joint definition. This requires defining an +/// anchor point on both bodies and the non-zero length of the +/// distance joint. The definition uses local anchor points +/// so that the initial configuration can violate the constraint +/// slightly. This helps when saving and loading a game. +/// @warning Do not use a zero or short length. +struct b2DistanceJointDef : public b2JointDef +{ + b2DistanceJointDef() + { + type = e_distanceJoint; + localAnchorA.Set(0.0f, 0.0f); + localAnchorB.Set(0.0f, 0.0f); + length = 1.0f; + frequencyHz = 0.0f; + dampingRatio = 0.0f; + } + + /// Initialize the bodies, anchors, and length using the world + /// anchors. + void Initialize(b2Body* bodyA, b2Body* bodyB, + const b2Vec2& anchorA, const b2Vec2& anchorB); + + /// The local anchor point relative to bodyA's origin. + b2Vec2 localAnchorA; + + /// The local anchor point relative to bodyB's origin. + b2Vec2 localAnchorB; + + /// The natural length between the anchor points. + float32 length; + + /// The mass-spring-damper frequency in Hertz. A value of 0 + /// disables softness. + float32 frequencyHz; + + /// The damping ratio. 0 = no damping, 1 = critical damping. + float32 dampingRatio; +}; + +/// A distance joint constrains two points on two bodies +/// to remain at a fixed distance from each other. You can view +/// this as a massless, rigid rod. +class b2DistanceJoint : public b2Joint +{ +public: + + b2Vec2 GetAnchorA() const; + b2Vec2 GetAnchorB() const; + + /// Get the reaction force given the inverse time step. + /// Unit is N. + b2Vec2 GetReactionForce(float32 inv_dt) const; + + /// Get the reaction torque given the inverse time step. + /// Unit is N*m. This is always zero for a distance joint. + float32 GetReactionTorque(float32 inv_dt) const; + + /// The local anchor point relative to bodyA's origin. + const b2Vec2& GetLocalAnchorA() const { return m_localAnchorA; } + + /// The local anchor point relative to bodyB's origin. + const b2Vec2& GetLocalAnchorB() const { return m_localAnchorB; } + + /// Set/get the natural length. + /// Manipulating the length can lead to non-physical behavior when the frequency is zero. + void SetLength(float32 length); + float32 GetLength() const; + + /// Set/get frequency in Hz. + void SetFrequency(float32 hz); + float32 GetFrequency() const; + + /// Set/get damping ratio. + void SetDampingRatio(float32 ratio); + float32 GetDampingRatio() const; + + /// Dump joint to dmLog + void Dump(); + +protected: + + friend class b2Joint; + b2DistanceJoint(const b2DistanceJointDef* data); + + void InitVelocityConstraints(const b2SolverData& data); + void SolveVelocityConstraints(const b2SolverData& data); + bool SolvePositionConstraints(const b2SolverData& data); + + float32 m_frequencyHz; + float32 m_dampingRatio; + float32 m_bias; + + // Solver shared + b2Vec2 m_localAnchorA; + b2Vec2 m_localAnchorB; + float32 m_gamma; + float32 m_impulse; + float32 m_length; + + // Solver temp + int32 m_indexA; + int32 m_indexB; + b2Vec2 m_u; + b2Vec2 m_rA; + b2Vec2 m_rB; + b2Vec2 m_localCenterA; + b2Vec2 m_localCenterB; + float32 m_invMassA; + float32 m_invMassB; + float32 m_invIA; + float32 m_invIB; + float32 m_mass; +}; + +inline void b2DistanceJoint::SetLength(float32 length) +{ + m_length = length; +} + +inline float32 b2DistanceJoint::GetLength() const +{ + return m_length; +} + +inline void b2DistanceJoint::SetFrequency(float32 hz) +{ + m_frequencyHz = hz; +} + +inline float32 b2DistanceJoint::GetFrequency() const +{ + return m_frequencyHz; +} + +inline void b2DistanceJoint::SetDampingRatio(float32 ratio) +{ + m_dampingRatio = ratio; +} + +inline float32 b2DistanceJoint::GetDampingRatio() const +{ + return m_dampingRatio; +} + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2FrictionJoint.cpp b/Dependencies/Box2D/src/Dynamics/Joints/b2FrictionJoint.cpp new file mode 100644 index 00000000..229dc1e6 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2FrictionJoint.cpp @@ -0,0 +1,251 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include + +// Point-to-point constraint +// Cdot = v2 - v1 +// = v2 + cross(w2, r2) - v1 - cross(w1, r1) +// J = [-I -r1_skew I r2_skew ] +// Identity used: +// w k % (rx i + ry j) = w * (-ry i + rx j) + +// Angle constraint +// Cdot = w2 - w1 +// J = [0 0 -1 0 0 1] +// K = invI1 + invI2 + +void b2FrictionJointDef::Initialize(b2Body* bA, b2Body* bB, const b2Vec2& anchor) +{ + bodyA = bA; + bodyB = bB; + localAnchorA = bodyA->GetLocalPoint(anchor); + localAnchorB = bodyB->GetLocalPoint(anchor); +} + +b2FrictionJoint::b2FrictionJoint(const b2FrictionJointDef* def) +: b2Joint(def) +{ + m_localAnchorA = def->localAnchorA; + m_localAnchorB = def->localAnchorB; + + m_linearImpulse.SetZero(); + m_angularImpulse = 0.0f; + + m_maxForce = def->maxForce; + m_maxTorque = def->maxTorque; +} + +void b2FrictionJoint::InitVelocityConstraints(const b2SolverData& data) +{ + m_indexA = m_bodyA->m_islandIndex; + m_indexB = m_bodyB->m_islandIndex; + m_localCenterA = m_bodyA->m_sweep.localCenter; + m_localCenterB = m_bodyB->m_sweep.localCenter; + m_invMassA = m_bodyA->m_invMass; + m_invMassB = m_bodyB->m_invMass; + m_invIA = m_bodyA->m_invI; + m_invIB = m_bodyB->m_invI; + + float32 aA = data.positions[m_indexA].a; + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + + float32 aB = data.positions[m_indexB].a; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + b2Rot qA(aA), qB(aB); + + // Compute the effective mass matrix. + m_rA = b2Mul(qA, m_localAnchorA - m_localCenterA); + m_rB = b2Mul(qB, m_localAnchorB - m_localCenterB); + + // J = [-I -r1_skew I r2_skew] + // [ 0 -1 0 1] + // r_skew = [-ry; rx] + + // Matlab + // K = [ mA+r1y^2*iA+mB+r2y^2*iB, -r1y*iA*r1x-r2y*iB*r2x, -r1y*iA-r2y*iB] + // [ -r1y*iA*r1x-r2y*iB*r2x, mA+r1x^2*iA+mB+r2x^2*iB, r1x*iA+r2x*iB] + // [ -r1y*iA-r2y*iB, r1x*iA+r2x*iB, iA+iB] + + float32 mA = m_invMassA, mB = m_invMassB; + float32 iA = m_invIA, iB = m_invIB; + + b2Mat22 K; + K.ex.x = mA + mB + iA * m_rA.y * m_rA.y + iB * m_rB.y * m_rB.y; + K.ex.y = -iA * m_rA.x * m_rA.y - iB * m_rB.x * m_rB.y; + K.ey.x = K.ex.y; + K.ey.y = mA + mB + iA * m_rA.x * m_rA.x + iB * m_rB.x * m_rB.x; + + m_linearMass = K.GetInverse(); + + m_angularMass = iA + iB; + if (m_angularMass > 0.0f) + { + m_angularMass = 1.0f / m_angularMass; + } + + if (data.step.warmStarting) + { + // Scale impulses to support a variable time step. + m_linearImpulse *= data.step.dtRatio; + m_angularImpulse *= data.step.dtRatio; + + b2Vec2 P(m_linearImpulse.x, m_linearImpulse.y); + vA -= mA * P; + wA -= iA * (b2Cross(m_rA, P) + m_angularImpulse); + vB += mB * P; + wB += iB * (b2Cross(m_rB, P) + m_angularImpulse); + } + else + { + m_linearImpulse.SetZero(); + m_angularImpulse = 0.0f; + } + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +void b2FrictionJoint::SolveVelocityConstraints(const b2SolverData& data) +{ + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + float32 mA = m_invMassA, mB = m_invMassB; + float32 iA = m_invIA, iB = m_invIB; + + float32 h = data.step.dt; + + // Solve angular friction + { + float32 Cdot = wB - wA; + float32 impulse = -m_angularMass * Cdot; + + float32 oldImpulse = m_angularImpulse; + float32 maxImpulse = h * m_maxTorque; + m_angularImpulse = b2Clamp(m_angularImpulse + impulse, -maxImpulse, maxImpulse); + impulse = m_angularImpulse - oldImpulse; + + wA -= iA * impulse; + wB += iB * impulse; + } + + // Solve linear friction + { + b2Vec2 Cdot = vB + b2Cross(wB, m_rB) - vA - b2Cross(wA, m_rA); + + b2Vec2 impulse = -b2Mul(m_linearMass, Cdot); + b2Vec2 oldImpulse = m_linearImpulse; + m_linearImpulse += impulse; + + float32 maxImpulse = h * m_maxForce; + + if (m_linearImpulse.LengthSquared() > maxImpulse * maxImpulse) + { + m_linearImpulse.Normalize(); + m_linearImpulse *= maxImpulse; + } + + impulse = m_linearImpulse - oldImpulse; + + vA -= mA * impulse; + wA -= iA * b2Cross(m_rA, impulse); + + vB += mB * impulse; + wB += iB * b2Cross(m_rB, impulse); + } + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +bool b2FrictionJoint::SolvePositionConstraints(const b2SolverData& data) +{ + B2_NOT_USED(data); + + return true; +} + +b2Vec2 b2FrictionJoint::GetAnchorA() const +{ + return m_bodyA->GetWorldPoint(m_localAnchorA); +} + +b2Vec2 b2FrictionJoint::GetAnchorB() const +{ + return m_bodyB->GetWorldPoint(m_localAnchorB); +} + +b2Vec2 b2FrictionJoint::GetReactionForce(float32 inv_dt) const +{ + return inv_dt * m_linearImpulse; +} + +float32 b2FrictionJoint::GetReactionTorque(float32 inv_dt) const +{ + return inv_dt * m_angularImpulse; +} + +void b2FrictionJoint::SetMaxForce(float32 force) +{ + b2Assert(b2IsValid(force) && force >= 0.0f); + m_maxForce = force; +} + +float32 b2FrictionJoint::GetMaxForce() const +{ + return m_maxForce; +} + +void b2FrictionJoint::SetMaxTorque(float32 torque) +{ + b2Assert(b2IsValid(torque) && torque >= 0.0f); + m_maxTorque = torque; +} + +float32 b2FrictionJoint::GetMaxTorque() const +{ + return m_maxTorque; +} + +void b2FrictionJoint::Dump() +{ + int32 indexA = m_bodyA->m_islandIndex; + int32 indexB = m_bodyB->m_islandIndex; + + b2Log(" b2FrictionJointDef jd;\n"); + b2Log(" jd.bodyA = bodies[%d];\n", indexA); + b2Log(" jd.bodyB = bodies[%d];\n", indexB); + b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); + b2Log(" jd.localAnchorA.Set(%.15lef, %.15lef);\n", m_localAnchorA.x, m_localAnchorA.y); + b2Log(" jd.localAnchorB.Set(%.15lef, %.15lef);\n", m_localAnchorB.x, m_localAnchorB.y); + b2Log(" jd.maxForce = %.15lef;\n", m_maxForce); + b2Log(" jd.maxTorque = %.15lef;\n", m_maxTorque); + b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); +} diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2FrictionJoint.h b/Dependencies/Box2D/src/Dynamics/Joints/b2FrictionJoint.h new file mode 100644 index 00000000..7cd15de2 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2FrictionJoint.h @@ -0,0 +1,119 @@ +/* +* Copyright (c) 2006-2007 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_FRICTION_JOINT_H +#define B2_FRICTION_JOINT_H + +#include + +/// Friction joint definition. +struct b2FrictionJointDef : public b2JointDef +{ + b2FrictionJointDef() + { + type = e_frictionJoint; + localAnchorA.SetZero(); + localAnchorB.SetZero(); + maxForce = 0.0f; + maxTorque = 0.0f; + } + + /// Initialize the bodies, anchors, axis, and reference angle using the world + /// anchor and world axis. + void Initialize(b2Body* bodyA, b2Body* bodyB, const b2Vec2& anchor); + + /// The local anchor point relative to bodyA's origin. + b2Vec2 localAnchorA; + + /// The local anchor point relative to bodyB's origin. + b2Vec2 localAnchorB; + + /// The maximum friction force in N. + float32 maxForce; + + /// The maximum friction torque in N-m. + float32 maxTorque; +}; + +/// Friction joint. This is used for top-down friction. +/// It provides 2D translational friction and angular friction. +class b2FrictionJoint : public b2Joint +{ +public: + b2Vec2 GetAnchorA() const; + b2Vec2 GetAnchorB() const; + + b2Vec2 GetReactionForce(float32 inv_dt) const; + float32 GetReactionTorque(float32 inv_dt) const; + + /// The local anchor point relative to bodyA's origin. + const b2Vec2& GetLocalAnchorA() const { return m_localAnchorA; } + + /// The local anchor point relative to bodyB's origin. + const b2Vec2& GetLocalAnchorB() const { return m_localAnchorB; } + + /// Set the maximum friction force in N. + void SetMaxForce(float32 force); + + /// Get the maximum friction force in N. + float32 GetMaxForce() const; + + /// Set the maximum friction torque in N*m. + void SetMaxTorque(float32 torque); + + /// Get the maximum friction torque in N*m. + float32 GetMaxTorque() const; + + /// Dump joint to dmLog + void Dump(); + +protected: + + friend class b2Joint; + + b2FrictionJoint(const b2FrictionJointDef* def); + + void InitVelocityConstraints(const b2SolverData& data); + void SolveVelocityConstraints(const b2SolverData& data); + bool SolvePositionConstraints(const b2SolverData& data); + + b2Vec2 m_localAnchorA; + b2Vec2 m_localAnchorB; + + // Solver shared + b2Vec2 m_linearImpulse; + float32 m_angularImpulse; + float32 m_maxForce; + float32 m_maxTorque; + + // Solver temp + int32 m_indexA; + int32 m_indexB; + b2Vec2 m_rA; + b2Vec2 m_rB; + b2Vec2 m_localCenterA; + b2Vec2 m_localCenterB; + float32 m_invMassA; + float32 m_invMassB; + float32 m_invIA; + float32 m_invIB; + b2Mat22 m_linearMass; + float32 m_angularMass; +}; + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2GearJoint.cpp b/Dependencies/Box2D/src/Dynamics/Joints/b2GearJoint.cpp new file mode 100644 index 00000000..9a750200 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2GearJoint.cpp @@ -0,0 +1,419 @@ +/* +* Copyright (c) 2007-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include +#include +#include + +// Gear Joint: +// C0 = (coordinate1 + ratio * coordinate2)_initial +// C = (coordinate1 + ratio * coordinate2) - C0 = 0 +// J = [J1 ratio * J2] +// K = J * invM * JT +// = J1 * invM1 * J1T + ratio * ratio * J2 * invM2 * J2T +// +// Revolute: +// coordinate = rotation +// Cdot = angularVelocity +// J = [0 0 1] +// K = J * invM * JT = invI +// +// Prismatic: +// coordinate = dot(p - pg, ug) +// Cdot = dot(v + cross(w, r), ug) +// J = [ug cross(r, ug)] +// K = J * invM * JT = invMass + invI * cross(r, ug)^2 + +b2GearJoint::b2GearJoint(const b2GearJointDef* def) +: b2Joint(def) +{ + m_joint1 = def->joint1; + m_joint2 = def->joint2; + + m_typeA = m_joint1->GetType(); + m_typeB = m_joint2->GetType(); + + b2Assert(m_typeA == e_revoluteJoint || m_typeA == e_prismaticJoint); + b2Assert(m_typeB == e_revoluteJoint || m_typeB == e_prismaticJoint); + + float32 coordinateA, coordinateB; + + // TODO_ERIN there might be some problem with the joint edges in b2Joint. + + m_bodyC = m_joint1->GetBodyA(); + m_bodyA = m_joint1->GetBodyB(); + + // Get geometry of joint1 + b2Transform xfA = m_bodyA->m_xf; + float32 aA = m_bodyA->m_sweep.a; + b2Transform xfC = m_bodyC->m_xf; + float32 aC = m_bodyC->m_sweep.a; + + if (m_typeA == e_revoluteJoint) + { + b2RevoluteJoint* revolute = (b2RevoluteJoint*)def->joint1; + m_localAnchorC = revolute->m_localAnchorA; + m_localAnchorA = revolute->m_localAnchorB; + m_referenceAngleA = revolute->m_referenceAngle; + m_localAxisC.SetZero(); + + coordinateA = aA - aC - m_referenceAngleA; + } + else + { + b2PrismaticJoint* prismatic = (b2PrismaticJoint*)def->joint1; + m_localAnchorC = prismatic->m_localAnchorA; + m_localAnchorA = prismatic->m_localAnchorB; + m_referenceAngleA = prismatic->m_referenceAngle; + m_localAxisC = prismatic->m_localXAxisA; + + b2Vec2 pC = m_localAnchorC; + b2Vec2 pA = b2MulT(xfC.q, b2Mul(xfA.q, m_localAnchorA) + (xfA.p - xfC.p)); + coordinateA = b2Dot(pA - pC, m_localAxisC); + } + + m_bodyD = m_joint2->GetBodyA(); + m_bodyB = m_joint2->GetBodyB(); + + // Get geometry of joint2 + b2Transform xfB = m_bodyB->m_xf; + float32 aB = m_bodyB->m_sweep.a; + b2Transform xfD = m_bodyD->m_xf; + float32 aD = m_bodyD->m_sweep.a; + + if (m_typeB == e_revoluteJoint) + { + b2RevoluteJoint* revolute = (b2RevoluteJoint*)def->joint2; + m_localAnchorD = revolute->m_localAnchorA; + m_localAnchorB = revolute->m_localAnchorB; + m_referenceAngleB = revolute->m_referenceAngle; + m_localAxisD.SetZero(); + + coordinateB = aB - aD - m_referenceAngleB; + } + else + { + b2PrismaticJoint* prismatic = (b2PrismaticJoint*)def->joint2; + m_localAnchorD = prismatic->m_localAnchorA; + m_localAnchorB = prismatic->m_localAnchorB; + m_referenceAngleB = prismatic->m_referenceAngle; + m_localAxisD = prismatic->m_localXAxisA; + + b2Vec2 pD = m_localAnchorD; + b2Vec2 pB = b2MulT(xfD.q, b2Mul(xfB.q, m_localAnchorB) + (xfB.p - xfD.p)); + coordinateB = b2Dot(pB - pD, m_localAxisD); + } + + m_ratio = def->ratio; + + m_constant = coordinateA + m_ratio * coordinateB; + + m_impulse = 0.0f; +} + +void b2GearJoint::InitVelocityConstraints(const b2SolverData& data) +{ + m_indexA = m_bodyA->m_islandIndex; + m_indexB = m_bodyB->m_islandIndex; + m_indexC = m_bodyC->m_islandIndex; + m_indexD = m_bodyD->m_islandIndex; + m_lcA = m_bodyA->m_sweep.localCenter; + m_lcB = m_bodyB->m_sweep.localCenter; + m_lcC = m_bodyC->m_sweep.localCenter; + m_lcD = m_bodyD->m_sweep.localCenter; + m_mA = m_bodyA->m_invMass; + m_mB = m_bodyB->m_invMass; + m_mC = m_bodyC->m_invMass; + m_mD = m_bodyD->m_invMass; + m_iA = m_bodyA->m_invI; + m_iB = m_bodyB->m_invI; + m_iC = m_bodyC->m_invI; + m_iD = m_bodyD->m_invI; + + float32 aA = data.positions[m_indexA].a; + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + + float32 aB = data.positions[m_indexB].a; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + float32 aC = data.positions[m_indexC].a; + b2Vec2 vC = data.velocities[m_indexC].v; + float32 wC = data.velocities[m_indexC].w; + + float32 aD = data.positions[m_indexD].a; + b2Vec2 vD = data.velocities[m_indexD].v; + float32 wD = data.velocities[m_indexD].w; + + b2Rot qA(aA), qB(aB), qC(aC), qD(aD); + + m_mass = 0.0f; + + if (m_typeA == e_revoluteJoint) + { + m_JvAC.SetZero(); + m_JwA = 1.0f; + m_JwC = 1.0f; + m_mass += m_iA + m_iC; + } + else + { + b2Vec2 u = b2Mul(qC, m_localAxisC); + b2Vec2 rC = b2Mul(qC, m_localAnchorC - m_lcC); + b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_lcA); + m_JvAC = u; + m_JwC = b2Cross(rC, u); + m_JwA = b2Cross(rA, u); + m_mass += m_mC + m_mA + m_iC * m_JwC * m_JwC + m_iA * m_JwA * m_JwA; + } + + if (m_typeB == e_revoluteJoint) + { + m_JvBD.SetZero(); + m_JwB = m_ratio; + m_JwD = m_ratio; + m_mass += m_ratio * m_ratio * (m_iB + m_iD); + } + else + { + b2Vec2 u = b2Mul(qD, m_localAxisD); + b2Vec2 rD = b2Mul(qD, m_localAnchorD - m_lcD); + b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_lcB); + m_JvBD = m_ratio * u; + m_JwD = m_ratio * b2Cross(rD, u); + m_JwB = m_ratio * b2Cross(rB, u); + m_mass += m_ratio * m_ratio * (m_mD + m_mB) + m_iD * m_JwD * m_JwD + m_iB * m_JwB * m_JwB; + } + + // Compute effective mass. + m_mass = m_mass > 0.0f ? 1.0f / m_mass : 0.0f; + + if (data.step.warmStarting) + { + vA += (m_mA * m_impulse) * m_JvAC; + wA += m_iA * m_impulse * m_JwA; + vB += (m_mB * m_impulse) * m_JvBD; + wB += m_iB * m_impulse * m_JwB; + vC -= (m_mC * m_impulse) * m_JvAC; + wC -= m_iC * m_impulse * m_JwC; + vD -= (m_mD * m_impulse) * m_JvBD; + wD -= m_iD * m_impulse * m_JwD; + } + else + { + m_impulse = 0.0f; + } + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; + data.velocities[m_indexC].v = vC; + data.velocities[m_indexC].w = wC; + data.velocities[m_indexD].v = vD; + data.velocities[m_indexD].w = wD; +} + +void b2GearJoint::SolveVelocityConstraints(const b2SolverData& data) +{ + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + b2Vec2 vC = data.velocities[m_indexC].v; + float32 wC = data.velocities[m_indexC].w; + b2Vec2 vD = data.velocities[m_indexD].v; + float32 wD = data.velocities[m_indexD].w; + + float32 Cdot = b2Dot(m_JvAC, vA - vC) + b2Dot(m_JvBD, vB - vD); + Cdot += (m_JwA * wA - m_JwC * wC) + (m_JwB * wB - m_JwD * wD); + + float32 impulse = -m_mass * Cdot; + m_impulse += impulse; + + vA += (m_mA * impulse) * m_JvAC; + wA += m_iA * impulse * m_JwA; + vB += (m_mB * impulse) * m_JvBD; + wB += m_iB * impulse * m_JwB; + vC -= (m_mC * impulse) * m_JvAC; + wC -= m_iC * impulse * m_JwC; + vD -= (m_mD * impulse) * m_JvBD; + wD -= m_iD * impulse * m_JwD; + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; + data.velocities[m_indexC].v = vC; + data.velocities[m_indexC].w = wC; + data.velocities[m_indexD].v = vD; + data.velocities[m_indexD].w = wD; +} + +bool b2GearJoint::SolvePositionConstraints(const b2SolverData& data) +{ + b2Vec2 cA = data.positions[m_indexA].c; + float32 aA = data.positions[m_indexA].a; + b2Vec2 cB = data.positions[m_indexB].c; + float32 aB = data.positions[m_indexB].a; + b2Vec2 cC = data.positions[m_indexC].c; + float32 aC = data.positions[m_indexC].a; + b2Vec2 cD = data.positions[m_indexD].c; + float32 aD = data.positions[m_indexD].a; + + b2Rot qA(aA), qB(aB), qC(aC), qD(aD); + + float32 linearError = 0.0f; + + float32 coordinateA, coordinateB; + + b2Vec2 JvAC, JvBD; + float32 JwA, JwB, JwC, JwD; + float32 mass = 0.0f; + + if (m_typeA == e_revoluteJoint) + { + JvAC.SetZero(); + JwA = 1.0f; + JwC = 1.0f; + mass += m_iA + m_iC; + + coordinateA = aA - aC - m_referenceAngleA; + } + else + { + b2Vec2 u = b2Mul(qC, m_localAxisC); + b2Vec2 rC = b2Mul(qC, m_localAnchorC - m_lcC); + b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_lcA); + JvAC = u; + JwC = b2Cross(rC, u); + JwA = b2Cross(rA, u); + mass += m_mC + m_mA + m_iC * JwC * JwC + m_iA * JwA * JwA; + + b2Vec2 pC = m_localAnchorC - m_lcC; + b2Vec2 pA = b2MulT(qC, rA + (cA - cC)); + coordinateA = b2Dot(pA - pC, m_localAxisC); + } + + if (m_typeB == e_revoluteJoint) + { + JvBD.SetZero(); + JwB = m_ratio; + JwD = m_ratio; + mass += m_ratio * m_ratio * (m_iB + m_iD); + + coordinateB = aB - aD - m_referenceAngleB; + } + else + { + b2Vec2 u = b2Mul(qD, m_localAxisD); + b2Vec2 rD = b2Mul(qD, m_localAnchorD - m_lcD); + b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_lcB); + JvBD = m_ratio * u; + JwD = m_ratio * b2Cross(rD, u); + JwB = m_ratio * b2Cross(rB, u); + mass += m_ratio * m_ratio * (m_mD + m_mB) + m_iD * JwD * JwD + m_iB * JwB * JwB; + + b2Vec2 pD = m_localAnchorD - m_lcD; + b2Vec2 pB = b2MulT(qD, rB + (cB - cD)); + coordinateB = b2Dot(pB - pD, m_localAxisD); + } + + float32 C = (coordinateA + m_ratio * coordinateB) - m_constant; + + float32 impulse = 0.0f; + if (mass > 0.0f) + { + impulse = -C / mass; + } + + cA += m_mA * impulse * JvAC; + aA += m_iA * impulse * JwA; + cB += m_mB * impulse * JvBD; + aB += m_iB * impulse * JwB; + cC -= m_mC * impulse * JvAC; + aC -= m_iC * impulse * JwC; + cD -= m_mD * impulse * JvBD; + aD -= m_iD * impulse * JwD; + + data.positions[m_indexA].c = cA; + data.positions[m_indexA].a = aA; + data.positions[m_indexB].c = cB; + data.positions[m_indexB].a = aB; + data.positions[m_indexC].c = cC; + data.positions[m_indexC].a = aC; + data.positions[m_indexD].c = cD; + data.positions[m_indexD].a = aD; + + // TODO_ERIN not implemented + return linearError < b2_linearSlop; +} + +b2Vec2 b2GearJoint::GetAnchorA() const +{ + return m_bodyA->GetWorldPoint(m_localAnchorA); +} + +b2Vec2 b2GearJoint::GetAnchorB() const +{ + return m_bodyB->GetWorldPoint(m_localAnchorB); +} + +b2Vec2 b2GearJoint::GetReactionForce(float32 inv_dt) const +{ + b2Vec2 P = m_impulse * m_JvAC; + return inv_dt * P; +} + +float32 b2GearJoint::GetReactionTorque(float32 inv_dt) const +{ + float32 L = m_impulse * m_JwA; + return inv_dt * L; +} + +void b2GearJoint::SetRatio(float32 ratio) +{ + b2Assert(b2IsValid(ratio)); + m_ratio = ratio; +} + +float32 b2GearJoint::GetRatio() const +{ + return m_ratio; +} + +void b2GearJoint::Dump() +{ + int32 indexA = m_bodyA->m_islandIndex; + int32 indexB = m_bodyB->m_islandIndex; + + int32 index1 = m_joint1->m_index; + int32 index2 = m_joint2->m_index; + + b2Log(" b2GearJointDef jd;\n"); + b2Log(" jd.bodyA = bodies[%d];\n", indexA); + b2Log(" jd.bodyB = bodies[%d];\n", indexB); + b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); + b2Log(" jd.joint1 = joints[%d];\n", index1); + b2Log(" jd.joint2 = joints[%d];\n", index2); + b2Log(" jd.ratio = %.15lef;\n", m_ratio); + b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); +} diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2GearJoint.h b/Dependencies/Box2D/src/Dynamics/Joints/b2GearJoint.h new file mode 100644 index 00000000..81897720 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2GearJoint.h @@ -0,0 +1,125 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_GEAR_JOINT_H +#define B2_GEAR_JOINT_H + +#include + +/// Gear joint definition. This definition requires two existing +/// revolute or prismatic joints (any combination will work). +struct b2GearJointDef : public b2JointDef +{ + b2GearJointDef() + { + type = e_gearJoint; + joint1 = NULL; + joint2 = NULL; + ratio = 1.0f; + } + + /// The first revolute/prismatic joint attached to the gear joint. + b2Joint* joint1; + + /// The second revolute/prismatic joint attached to the gear joint. + b2Joint* joint2; + + /// The gear ratio. + /// @see b2GearJoint for explanation. + float32 ratio; +}; + +/// A gear joint is used to connect two joints together. Either joint +/// can be a revolute or prismatic joint. You specify a gear ratio +/// to bind the motions together: +/// coordinate1 + ratio * coordinate2 = constant +/// The ratio can be negative or positive. If one joint is a revolute joint +/// and the other joint is a prismatic joint, then the ratio will have units +/// of length or units of 1/length. +/// @warning You have to manually destroy the gear joint if joint1 or joint2 +/// is destroyed. +class b2GearJoint : public b2Joint +{ +public: + b2Vec2 GetAnchorA() const; + b2Vec2 GetAnchorB() const; + + b2Vec2 GetReactionForce(float32 inv_dt) const; + float32 GetReactionTorque(float32 inv_dt) const; + + /// Get the first joint. + b2Joint* GetJoint1() { return m_joint1; } + + /// Get the second joint. + b2Joint* GetJoint2() { return m_joint2; } + + /// Set/Get the gear ratio. + void SetRatio(float32 ratio); + float32 GetRatio() const; + + /// Dump joint to dmLog + void Dump(); + +protected: + + friend class b2Joint; + b2GearJoint(const b2GearJointDef* data); + + void InitVelocityConstraints(const b2SolverData& data); + void SolveVelocityConstraints(const b2SolverData& data); + bool SolvePositionConstraints(const b2SolverData& data); + + b2Joint* m_joint1; + b2Joint* m_joint2; + + b2JointType m_typeA; + b2JointType m_typeB; + + // Body A is connected to body C + // Body B is connected to body D + b2Body* m_bodyC; + b2Body* m_bodyD; + + // Solver shared + b2Vec2 m_localAnchorA; + b2Vec2 m_localAnchorB; + b2Vec2 m_localAnchorC; + b2Vec2 m_localAnchorD; + + b2Vec2 m_localAxisC; + b2Vec2 m_localAxisD; + + float32 m_referenceAngleA; + float32 m_referenceAngleB; + + float32 m_constant; + float32 m_ratio; + + float32 m_impulse; + + // Solver temp + int32 m_indexA, m_indexB, m_indexC, m_indexD; + b2Vec2 m_lcA, m_lcB, m_lcC, m_lcD; + float32 m_mA, m_mB, m_mC, m_mD; + float32 m_iA, m_iB, m_iC, m_iD; + b2Vec2 m_JvAC, m_JvBD; + float32 m_JwA, m_JwB, m_JwC, m_JwD; + float32 m_mass; +}; + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2Joint.cpp b/Dependencies/Box2D/src/Dynamics/Joints/b2Joint.cpp new file mode 100644 index 00000000..c0b55952 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2Joint.cpp @@ -0,0 +1,211 @@ +/* +* Copyright (c) 2006-2007 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +b2Joint* b2Joint::Create(const b2JointDef* def, b2BlockAllocator* allocator) +{ + b2Joint* joint = NULL; + + switch (def->type) + { + case e_distanceJoint: + { + void* mem = allocator->Allocate(sizeof(b2DistanceJoint)); + joint = new (mem) b2DistanceJoint(static_cast(def)); + } + break; + + case e_mouseJoint: + { + void* mem = allocator->Allocate(sizeof(b2MouseJoint)); + joint = new (mem) b2MouseJoint(static_cast(def)); + } + break; + + case e_prismaticJoint: + { + void* mem = allocator->Allocate(sizeof(b2PrismaticJoint)); + joint = new (mem) b2PrismaticJoint(static_cast(def)); + } + break; + + case e_revoluteJoint: + { + void* mem = allocator->Allocate(sizeof(b2RevoluteJoint)); + joint = new (mem) b2RevoluteJoint(static_cast(def)); + } + break; + + case e_pulleyJoint: + { + void* mem = allocator->Allocate(sizeof(b2PulleyJoint)); + joint = new (mem) b2PulleyJoint(static_cast(def)); + } + break; + + case e_gearJoint: + { + void* mem = allocator->Allocate(sizeof(b2GearJoint)); + joint = new (mem) b2GearJoint(static_cast(def)); + } + break; + + case e_wheelJoint: + { + void* mem = allocator->Allocate(sizeof(b2WheelJoint)); + joint = new (mem) b2WheelJoint(static_cast(def)); + } + break; + + case e_weldJoint: + { + void* mem = allocator->Allocate(sizeof(b2WeldJoint)); + joint = new (mem) b2WeldJoint(static_cast(def)); + } + break; + + case e_frictionJoint: + { + void* mem = allocator->Allocate(sizeof(b2FrictionJoint)); + joint = new (mem) b2FrictionJoint(static_cast(def)); + } + break; + + case e_ropeJoint: + { + void* mem = allocator->Allocate(sizeof(b2RopeJoint)); + joint = new (mem) b2RopeJoint(static_cast(def)); + } + break; + + case e_motorJoint: + { + void* mem = allocator->Allocate(sizeof(b2MotorJoint)); + joint = new (mem) b2MotorJoint(static_cast(def)); + } + break; + + default: + b2Assert(false); + break; + } + + return joint; +} + +void b2Joint::Destroy(b2Joint* joint, b2BlockAllocator* allocator) +{ + joint->~b2Joint(); + switch (joint->m_type) + { + case e_distanceJoint: + allocator->Free(joint, sizeof(b2DistanceJoint)); + break; + + case e_mouseJoint: + allocator->Free(joint, sizeof(b2MouseJoint)); + break; + + case e_prismaticJoint: + allocator->Free(joint, sizeof(b2PrismaticJoint)); + break; + + case e_revoluteJoint: + allocator->Free(joint, sizeof(b2RevoluteJoint)); + break; + + case e_pulleyJoint: + allocator->Free(joint, sizeof(b2PulleyJoint)); + break; + + case e_gearJoint: + allocator->Free(joint, sizeof(b2GearJoint)); + break; + + case e_wheelJoint: + allocator->Free(joint, sizeof(b2WheelJoint)); + break; + + case e_weldJoint: + allocator->Free(joint, sizeof(b2WeldJoint)); + break; + + case e_frictionJoint: + allocator->Free(joint, sizeof(b2FrictionJoint)); + break; + + case e_ropeJoint: + allocator->Free(joint, sizeof(b2RopeJoint)); + break; + + case e_motorJoint: + allocator->Free(joint, sizeof(b2MotorJoint)); + break; + + default: + b2Assert(false); + break; + } +} + +b2Joint::b2Joint(const b2JointDef* def) +{ + b2Assert(def->bodyA != def->bodyB); + + m_type = def->type; + m_prev = NULL; + m_next = NULL; + m_bodyA = def->bodyA; + m_bodyB = def->bodyB; + m_index = 0; + m_collideConnected = def->collideConnected; + m_islandFlag = false; + m_userData = def->userData; + + m_edgeA.joint = NULL; + m_edgeA.other = NULL; + m_edgeA.prev = NULL; + m_edgeA.next = NULL; + + m_edgeB.joint = NULL; + m_edgeB.other = NULL; + m_edgeB.prev = NULL; + m_edgeB.next = NULL; +} + +bool b2Joint::IsActive() const +{ + return m_bodyA->IsActive() && m_bodyB->IsActive(); +} diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2Joint.h b/Dependencies/Box2D/src/Dynamics/Joints/b2Joint.h new file mode 100644 index 00000000..0f04c702 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2Joint.h @@ -0,0 +1,226 @@ +/* +* Copyright (c) 2006-2007 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_JOINT_H +#define B2_JOINT_H + +#include + +class b2Body; +class b2Joint; +struct b2SolverData; +class b2BlockAllocator; + +enum b2JointType +{ + e_unknownJoint, + e_revoluteJoint, + e_prismaticJoint, + e_distanceJoint, + e_pulleyJoint, + e_mouseJoint, + e_gearJoint, + e_wheelJoint, + e_weldJoint, + e_frictionJoint, + e_ropeJoint, + e_motorJoint +}; + +enum b2LimitState +{ + e_inactiveLimit, + e_atLowerLimit, + e_atUpperLimit, + e_equalLimits +}; + +struct b2Jacobian +{ + b2Vec2 linear; + float32 angularA; + float32 angularB; +}; + +/// A joint edge is used to connect bodies and joints together +/// in a joint graph where each body is a node and each joint +/// is an edge. A joint edge belongs to a doubly linked list +/// maintained in each attached body. Each joint has two joint +/// nodes, one for each attached body. +struct b2JointEdge +{ + b2Body* other; ///< provides quick access to the other body attached. + b2Joint* joint; ///< the joint + b2JointEdge* prev; ///< the previous joint edge in the body's joint list + b2JointEdge* next; ///< the next joint edge in the body's joint list +}; + +/// Joint definitions are used to construct joints. +struct b2JointDef +{ + b2JointDef() + { + type = e_unknownJoint; + userData = NULL; + bodyA = NULL; + bodyB = NULL; + collideConnected = false; + } + + /// The joint type is set automatically for concrete joint types. + b2JointType type; + + /// Use this to attach application specific data to your joints. + void* userData; + + /// The first attached body. + b2Body* bodyA; + + /// The second attached body. + b2Body* bodyB; + + /// Set this flag to true if the attached bodies should collide. + bool collideConnected; +}; + +/// The base joint class. Joints are used to constraint two bodies together in +/// various fashions. Some joints also feature limits and motors. +class b2Joint +{ +public: + + /// Get the type of the concrete joint. + b2JointType GetType() const; + + /// Get the first body attached to this joint. + b2Body* GetBodyA(); + + /// Get the second body attached to this joint. + b2Body* GetBodyB(); + + /// Get the anchor point on bodyA in world coordinates. + virtual b2Vec2 GetAnchorA() const = 0; + + /// Get the anchor point on bodyB in world coordinates. + virtual b2Vec2 GetAnchorB() const = 0; + + /// Get the reaction force on bodyB at the joint anchor in Newtons. + virtual b2Vec2 GetReactionForce(float32 inv_dt) const = 0; + + /// Get the reaction torque on bodyB in N*m. + virtual float32 GetReactionTorque(float32 inv_dt) const = 0; + + /// Get the next joint the world joint list. + b2Joint* GetNext(); + const b2Joint* GetNext() const; + + /// Get the user data pointer. + void* GetUserData() const; + + /// Set the user data pointer. + void SetUserData(void* data); + + /// Short-cut function to determine if either body is inactive. + bool IsActive() const; + + /// Get collide connected. + /// Note: modifying the collide connect flag won't work correctly because + /// the flag is only checked when fixture AABBs begin to overlap. + bool GetCollideConnected() const; + + /// Dump this joint to the log file. + virtual void Dump() { b2Log("// Dump is not supported for this joint type.\n"); } + + /// Shift the origin for any points stored in world coordinates. + virtual void ShiftOrigin(const b2Vec2& newOrigin) { B2_NOT_USED(newOrigin); } + +protected: + friend class b2World; + friend class b2Body; + friend class b2Island; + friend class b2GearJoint; + + static b2Joint* Create(const b2JointDef* def, b2BlockAllocator* allocator); + static void Destroy(b2Joint* joint, b2BlockAllocator* allocator); + + b2Joint(const b2JointDef* def); + virtual ~b2Joint() {} + + virtual void InitVelocityConstraints(const b2SolverData& data) = 0; + virtual void SolveVelocityConstraints(const b2SolverData& data) = 0; + + // This returns true if the position errors are within tolerance. + virtual bool SolvePositionConstraints(const b2SolverData& data) = 0; + + b2JointType m_type; + b2Joint* m_prev; + b2Joint* m_next; + b2JointEdge m_edgeA; + b2JointEdge m_edgeB; + b2Body* m_bodyA; + b2Body* m_bodyB; + + int32 m_index; + + bool m_islandFlag; + bool m_collideConnected; + + void* m_userData; +}; + +inline b2JointType b2Joint::GetType() const +{ + return m_type; +} + +inline b2Body* b2Joint::GetBodyA() +{ + return m_bodyA; +} + +inline b2Body* b2Joint::GetBodyB() +{ + return m_bodyB; +} + +inline b2Joint* b2Joint::GetNext() +{ + return m_next; +} + +inline const b2Joint* b2Joint::GetNext() const +{ + return m_next; +} + +inline void* b2Joint::GetUserData() const +{ + return m_userData; +} + +inline void b2Joint::SetUserData(void* data) +{ + m_userData = data; +} + +inline bool b2Joint::GetCollideConnected() const +{ + return m_collideConnected; +} + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2MotorJoint.cpp b/Dependencies/Box2D/src/Dynamics/Joints/b2MotorJoint.cpp new file mode 100644 index 00000000..7f95ef62 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2MotorJoint.cpp @@ -0,0 +1,304 @@ +/* +* Copyright (c) 2006-2012 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include + +// Point-to-point constraint +// Cdot = v2 - v1 +// = v2 + cross(w2, r2) - v1 - cross(w1, r1) +// J = [-I -r1_skew I r2_skew ] +// Identity used: +// w k % (rx i + ry j) = w * (-ry i + rx j) + +// Angle constraint +// Cdot = w2 - w1 +// J = [0 0 -1 0 0 1] +// K = invI1 + invI2 + +void b2MotorJointDef::Initialize(b2Body* bA, b2Body* bB) +{ + bodyA = bA; + bodyB = bB; + b2Vec2 xB = bodyB->GetPosition(); + linearOffset = bodyA->GetLocalPoint(xB); + + float32 angleA = bodyA->GetAngle(); + float32 angleB = bodyB->GetAngle(); + angularOffset = angleB - angleA; +} + +b2MotorJoint::b2MotorJoint(const b2MotorJointDef* def) +: b2Joint(def) +{ + m_linearOffset = def->linearOffset; + m_angularOffset = def->angularOffset; + + m_linearImpulse.SetZero(); + m_angularImpulse = 0.0f; + + m_maxForce = def->maxForce; + m_maxTorque = def->maxTorque; + m_correctionFactor = def->correctionFactor; +} + +void b2MotorJoint::InitVelocityConstraints(const b2SolverData& data) +{ + m_indexA = m_bodyA->m_islandIndex; + m_indexB = m_bodyB->m_islandIndex; + m_localCenterA = m_bodyA->m_sweep.localCenter; + m_localCenterB = m_bodyB->m_sweep.localCenter; + m_invMassA = m_bodyA->m_invMass; + m_invMassB = m_bodyB->m_invMass; + m_invIA = m_bodyA->m_invI; + m_invIB = m_bodyB->m_invI; + + b2Vec2 cA = data.positions[m_indexA].c; + float32 aA = data.positions[m_indexA].a; + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + + b2Vec2 cB = data.positions[m_indexB].c; + float32 aB = data.positions[m_indexB].a; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + b2Rot qA(aA), qB(aB); + + // Compute the effective mass matrix. + m_rA = b2Mul(qA, -m_localCenterA); + m_rB = b2Mul(qB, -m_localCenterB); + + // J = [-I -r1_skew I r2_skew] + // [ 0 -1 0 1] + // r_skew = [-ry; rx] + + // Matlab + // K = [ mA+r1y^2*iA+mB+r2y^2*iB, -r1y*iA*r1x-r2y*iB*r2x, -r1y*iA-r2y*iB] + // [ -r1y*iA*r1x-r2y*iB*r2x, mA+r1x^2*iA+mB+r2x^2*iB, r1x*iA+r2x*iB] + // [ -r1y*iA-r2y*iB, r1x*iA+r2x*iB, iA+iB] + + float32 mA = m_invMassA, mB = m_invMassB; + float32 iA = m_invIA, iB = m_invIB; + + b2Mat22 K; + K.ex.x = mA + mB + iA * m_rA.y * m_rA.y + iB * m_rB.y * m_rB.y; + K.ex.y = -iA * m_rA.x * m_rA.y - iB * m_rB.x * m_rB.y; + K.ey.x = K.ex.y; + K.ey.y = mA + mB + iA * m_rA.x * m_rA.x + iB * m_rB.x * m_rB.x; + + m_linearMass = K.GetInverse(); + + m_angularMass = iA + iB; + if (m_angularMass > 0.0f) + { + m_angularMass = 1.0f / m_angularMass; + } + + m_linearError = cB + m_rB - cA - m_rA - b2Mul(qA, m_linearOffset); + m_angularError = aB - aA - m_angularOffset; + + if (data.step.warmStarting) + { + // Scale impulses to support a variable time step. + m_linearImpulse *= data.step.dtRatio; + m_angularImpulse *= data.step.dtRatio; + + b2Vec2 P(m_linearImpulse.x, m_linearImpulse.y); + vA -= mA * P; + wA -= iA * (b2Cross(m_rA, P) + m_angularImpulse); + vB += mB * P; + wB += iB * (b2Cross(m_rB, P) + m_angularImpulse); + } + else + { + m_linearImpulse.SetZero(); + m_angularImpulse = 0.0f; + } + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +void b2MotorJoint::SolveVelocityConstraints(const b2SolverData& data) +{ + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + float32 mA = m_invMassA, mB = m_invMassB; + float32 iA = m_invIA, iB = m_invIB; + + float32 h = data.step.dt; + float32 inv_h = data.step.inv_dt; + + // Solve angular friction + { + float32 Cdot = wB - wA + inv_h * m_correctionFactor * m_angularError; + float32 impulse = -m_angularMass * Cdot; + + float32 oldImpulse = m_angularImpulse; + float32 maxImpulse = h * m_maxTorque; + m_angularImpulse = b2Clamp(m_angularImpulse + impulse, -maxImpulse, maxImpulse); + impulse = m_angularImpulse - oldImpulse; + + wA -= iA * impulse; + wB += iB * impulse; + } + + // Solve linear friction + { + b2Vec2 Cdot = vB + b2Cross(wB, m_rB) - vA - b2Cross(wA, m_rA) + inv_h * m_correctionFactor * m_linearError; + + b2Vec2 impulse = -b2Mul(m_linearMass, Cdot); + b2Vec2 oldImpulse = m_linearImpulse; + m_linearImpulse += impulse; + + float32 maxImpulse = h * m_maxForce; + + if (m_linearImpulse.LengthSquared() > maxImpulse * maxImpulse) + { + m_linearImpulse.Normalize(); + m_linearImpulse *= maxImpulse; + } + + impulse = m_linearImpulse - oldImpulse; + + vA -= mA * impulse; + wA -= iA * b2Cross(m_rA, impulse); + + vB += mB * impulse; + wB += iB * b2Cross(m_rB, impulse); + } + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +bool b2MotorJoint::SolvePositionConstraints(const b2SolverData& data) +{ + B2_NOT_USED(data); + + return true; +} + +b2Vec2 b2MotorJoint::GetAnchorA() const +{ + return m_bodyA->GetPosition(); +} + +b2Vec2 b2MotorJoint::GetAnchorB() const +{ + return m_bodyB->GetPosition(); +} + +b2Vec2 b2MotorJoint::GetReactionForce(float32 inv_dt) const +{ + return inv_dt * m_linearImpulse; +} + +float32 b2MotorJoint::GetReactionTorque(float32 inv_dt) const +{ + return inv_dt * m_angularImpulse; +} + +void b2MotorJoint::SetMaxForce(float32 force) +{ + b2Assert(b2IsValid(force) && force >= 0.0f); + m_maxForce = force; +} + +float32 b2MotorJoint::GetMaxForce() const +{ + return m_maxForce; +} + +void b2MotorJoint::SetMaxTorque(float32 torque) +{ + b2Assert(b2IsValid(torque) && torque >= 0.0f); + m_maxTorque = torque; +} + +float32 b2MotorJoint::GetMaxTorque() const +{ + return m_maxTorque; +} + +void b2MotorJoint::SetCorrectionFactor(float32 factor) +{ + b2Assert(b2IsValid(factor) && 0.0f <= factor && factor <= 1.0f); + m_correctionFactor = factor; +} + +float32 b2MotorJoint::GetCorrectionFactor() const +{ + return m_correctionFactor; +} + +void b2MotorJoint::SetLinearOffset(const b2Vec2& linearOffset) +{ + if (linearOffset.x != m_linearOffset.x || linearOffset.y != m_linearOffset.y) + { + m_bodyA->SetAwake(true); + m_bodyB->SetAwake(true); + m_linearOffset = linearOffset; + } +} + +const b2Vec2& b2MotorJoint::GetLinearOffset() const +{ + return m_linearOffset; +} + +void b2MotorJoint::SetAngularOffset(float32 angularOffset) +{ + if (angularOffset != m_angularOffset) + { + m_bodyA->SetAwake(true); + m_bodyB->SetAwake(true); + m_angularOffset = angularOffset; + } +} + +float32 b2MotorJoint::GetAngularOffset() const +{ + return m_angularOffset; +} + +void b2MotorJoint::Dump() +{ + int32 indexA = m_bodyA->m_islandIndex; + int32 indexB = m_bodyB->m_islandIndex; + + b2Log(" b2MotorJointDef jd;\n"); + b2Log(" jd.bodyA = bodies[%d];\n", indexA); + b2Log(" jd.bodyB = bodies[%d];\n", indexB); + b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); + b2Log(" jd.linearOffset.Set(%.15lef, %.15lef);\n", m_linearOffset.x, m_linearOffset.y); + b2Log(" jd.angularOffset = %.15lef;\n", m_angularOffset); + b2Log(" jd.maxForce = %.15lef;\n", m_maxForce); + b2Log(" jd.maxTorque = %.15lef;\n", m_maxTorque); + b2Log(" jd.correctionFactor = %.15lef;\n", m_correctionFactor); + b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); +} diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2MotorJoint.h b/Dependencies/Box2D/src/Dynamics/Joints/b2MotorJoint.h new file mode 100644 index 00000000..6bdd10ae --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2MotorJoint.h @@ -0,0 +1,133 @@ +/* +* Copyright (c) 2006-2012 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_MOTOR_JOINT_H +#define B2_MOTOR_JOINT_H + +#include + +/// Motor joint definition. +struct b2MotorJointDef : public b2JointDef +{ + b2MotorJointDef() + { + type = e_motorJoint; + linearOffset.SetZero(); + angularOffset = 0.0f; + maxForce = 1.0f; + maxTorque = 1.0f; + correctionFactor = 0.3f; + } + + /// Initialize the bodies and offsets using the current transforms. + void Initialize(b2Body* bodyA, b2Body* bodyB); + + /// Position of bodyB minus the position of bodyA, in bodyA's frame, in meters. + b2Vec2 linearOffset; + + /// The bodyB angle minus bodyA angle in radians. + float32 angularOffset; + + /// The maximum motor force in N. + float32 maxForce; + + /// The maximum motor torque in N-m. + float32 maxTorque; + + /// Position correction factor in the range [0,1]. + float32 correctionFactor; +}; + +/// A motor joint is used to control the relative motion +/// between two bodies. A typical usage is to control the movement +/// of a dynamic body with respect to the ground. +class b2MotorJoint : public b2Joint +{ +public: + b2Vec2 GetAnchorA() const; + b2Vec2 GetAnchorB() const; + + b2Vec2 GetReactionForce(float32 inv_dt) const; + float32 GetReactionTorque(float32 inv_dt) const; + + /// Set/get the target linear offset, in frame A, in meters. + void SetLinearOffset(const b2Vec2& linearOffset); + const b2Vec2& GetLinearOffset() const; + + /// Set/get the target angular offset, in radians. + void SetAngularOffset(float32 angularOffset); + float32 GetAngularOffset() const; + + /// Set the maximum friction force in N. + void SetMaxForce(float32 force); + + /// Get the maximum friction force in N. + float32 GetMaxForce() const; + + /// Set the maximum friction torque in N*m. + void SetMaxTorque(float32 torque); + + /// Get the maximum friction torque in N*m. + float32 GetMaxTorque() const; + + /// Set the position correction factor in the range [0,1]. + void SetCorrectionFactor(float32 factor); + + /// Get the position correction factor in the range [0,1]. + float32 GetCorrectionFactor() const; + + /// Dump to b2Log + void Dump(); + +protected: + + friend class b2Joint; + + b2MotorJoint(const b2MotorJointDef* def); + + void InitVelocityConstraints(const b2SolverData& data); + void SolveVelocityConstraints(const b2SolverData& data); + bool SolvePositionConstraints(const b2SolverData& data); + + // Solver shared + b2Vec2 m_linearOffset; + float32 m_angularOffset; + b2Vec2 m_linearImpulse; + float32 m_angularImpulse; + float32 m_maxForce; + float32 m_maxTorque; + float32 m_correctionFactor; + + // Solver temp + int32 m_indexA; + int32 m_indexB; + b2Vec2 m_rA; + b2Vec2 m_rB; + b2Vec2 m_localCenterA; + b2Vec2 m_localCenterB; + b2Vec2 m_linearError; + float32 m_angularError; + float32 m_invMassA; + float32 m_invMassB; + float32 m_invIA; + float32 m_invIB; + b2Mat22 m_linearMass; + float32 m_angularMass; +}; + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2MouseJoint.cpp b/Dependencies/Box2D/src/Dynamics/Joints/b2MouseJoint.cpp new file mode 100644 index 00000000..89e3ab91 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2MouseJoint.cpp @@ -0,0 +1,222 @@ +/* +* Copyright (c) 2006-2007 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include + +// p = attached point, m = mouse point +// C = p - m +// Cdot = v +// = v + cross(w, r) +// J = [I r_skew] +// Identity used: +// w k % (rx i + ry j) = w * (-ry i + rx j) + +b2MouseJoint::b2MouseJoint(const b2MouseJointDef* def) +: b2Joint(def) +{ + b2Assert(def->target.IsValid()); + b2Assert(b2IsValid(def->maxForce) && def->maxForce >= 0.0f); + b2Assert(b2IsValid(def->frequencyHz) && def->frequencyHz >= 0.0f); + b2Assert(b2IsValid(def->dampingRatio) && def->dampingRatio >= 0.0f); + + m_targetA = def->target; + m_localAnchorB = b2MulT(m_bodyB->GetTransform(), m_targetA); + + m_maxForce = def->maxForce; + m_impulse.SetZero(); + + m_frequencyHz = def->frequencyHz; + m_dampingRatio = def->dampingRatio; + + m_beta = 0.0f; + m_gamma = 0.0f; +} + +void b2MouseJoint::SetTarget(const b2Vec2& target) +{ + if (m_bodyB->IsAwake() == false) + { + m_bodyB->SetAwake(true); + } + m_targetA = target; +} + +const b2Vec2& b2MouseJoint::GetTarget() const +{ + return m_targetA; +} + +void b2MouseJoint::SetMaxForce(float32 force) +{ + m_maxForce = force; +} + +float32 b2MouseJoint::GetMaxForce() const +{ + return m_maxForce; +} + +void b2MouseJoint::SetFrequency(float32 hz) +{ + m_frequencyHz = hz; +} + +float32 b2MouseJoint::GetFrequency() const +{ + return m_frequencyHz; +} + +void b2MouseJoint::SetDampingRatio(float32 ratio) +{ + m_dampingRatio = ratio; +} + +float32 b2MouseJoint::GetDampingRatio() const +{ + return m_dampingRatio; +} + +void b2MouseJoint::InitVelocityConstraints(const b2SolverData& data) +{ + m_indexB = m_bodyB->m_islandIndex; + m_localCenterB = m_bodyB->m_sweep.localCenter; + m_invMassB = m_bodyB->m_invMass; + m_invIB = m_bodyB->m_invI; + + b2Vec2 cB = data.positions[m_indexB].c; + float32 aB = data.positions[m_indexB].a; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + b2Rot qB(aB); + + float32 mass = m_bodyB->GetMass(); + + // Frequency + float32 omega = 2.0f * b2_pi * m_frequencyHz; + + // Damping coefficient + float32 d = 2.0f * mass * m_dampingRatio * omega; + + // Spring stiffness + float32 k = mass * (omega * omega); + + // magic formulas + // gamma has units of inverse mass. + // beta has units of inverse time. + float32 h = data.step.dt; + b2Assert(d + h * k > b2_epsilon); + m_gamma = h * (d + h * k); + if (m_gamma != 0.0f) + { + m_gamma = 1.0f / m_gamma; + } + m_beta = h * k * m_gamma; + + // Compute the effective mass matrix. + m_rB = b2Mul(qB, m_localAnchorB - m_localCenterB); + + // K = [(1/m1 + 1/m2) * eye(2) - skew(r1) * invI1 * skew(r1) - skew(r2) * invI2 * skew(r2)] + // = [1/m1+1/m2 0 ] + invI1 * [r1.y*r1.y -r1.x*r1.y] + invI2 * [r1.y*r1.y -r1.x*r1.y] + // [ 0 1/m1+1/m2] [-r1.x*r1.y r1.x*r1.x] [-r1.x*r1.y r1.x*r1.x] + b2Mat22 K; + K.ex.x = m_invMassB + m_invIB * m_rB.y * m_rB.y + m_gamma; + K.ex.y = -m_invIB * m_rB.x * m_rB.y; + K.ey.x = K.ex.y; + K.ey.y = m_invMassB + m_invIB * m_rB.x * m_rB.x + m_gamma; + + m_mass = K.GetInverse(); + + m_C = cB + m_rB - m_targetA; + m_C *= m_beta; + + // Cheat with some damping + wB *= 0.98f; + + if (data.step.warmStarting) + { + m_impulse *= data.step.dtRatio; + vB += m_invMassB * m_impulse; + wB += m_invIB * b2Cross(m_rB, m_impulse); + } + else + { + m_impulse.SetZero(); + } + + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +void b2MouseJoint::SolveVelocityConstraints(const b2SolverData& data) +{ + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + // Cdot = v + cross(w, r) + b2Vec2 Cdot = vB + b2Cross(wB, m_rB); + b2Vec2 impulse = b2Mul(m_mass, -(Cdot + m_C + m_gamma * m_impulse)); + + b2Vec2 oldImpulse = m_impulse; + m_impulse += impulse; + float32 maxImpulse = data.step.dt * m_maxForce; + if (m_impulse.LengthSquared() > maxImpulse * maxImpulse) + { + m_impulse *= maxImpulse / m_impulse.Length(); + } + impulse = m_impulse - oldImpulse; + + vB += m_invMassB * impulse; + wB += m_invIB * b2Cross(m_rB, impulse); + + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +bool b2MouseJoint::SolvePositionConstraints(const b2SolverData& data) +{ + B2_NOT_USED(data); + return true; +} + +b2Vec2 b2MouseJoint::GetAnchorA() const +{ + return m_targetA; +} + +b2Vec2 b2MouseJoint::GetAnchorB() const +{ + return m_bodyB->GetWorldPoint(m_localAnchorB); +} + +b2Vec2 b2MouseJoint::GetReactionForce(float32 inv_dt) const +{ + return inv_dt * m_impulse; +} + +float32 b2MouseJoint::GetReactionTorque(float32 inv_dt) const +{ + return inv_dt * 0.0f; +} + +void b2MouseJoint::ShiftOrigin(const b2Vec2& newOrigin) +{ + m_targetA -= newOrigin; +} diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2MouseJoint.h b/Dependencies/Box2D/src/Dynamics/Joints/b2MouseJoint.h new file mode 100644 index 00000000..1712a6c8 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2MouseJoint.h @@ -0,0 +1,129 @@ +/* +* Copyright (c) 2006-2007 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_MOUSE_JOINT_H +#define B2_MOUSE_JOINT_H + +#include + +/// Mouse joint definition. This requires a world target point, +/// tuning parameters, and the time step. +struct b2MouseJointDef : public b2JointDef +{ + b2MouseJointDef() + { + type = e_mouseJoint; + target.Set(0.0f, 0.0f); + maxForce = 0.0f; + frequencyHz = 5.0f; + dampingRatio = 0.7f; + } + + /// The initial world target point. This is assumed + /// to coincide with the body anchor initially. + b2Vec2 target; + + /// The maximum constraint force that can be exerted + /// to move the candidate body. Usually you will express + /// as some multiple of the weight (multiplier * mass * gravity). + float32 maxForce; + + /// The response speed. + float32 frequencyHz; + + /// The damping ratio. 0 = no damping, 1 = critical damping. + float32 dampingRatio; +}; + +/// A mouse joint is used to make a point on a body track a +/// specified world point. This a soft constraint with a maximum +/// force. This allows the constraint to stretch and without +/// applying huge forces. +/// NOTE: this joint is not documented in the manual because it was +/// developed to be used in the testbed. If you want to learn how to +/// use the mouse joint, look at the testbed. +class b2MouseJoint : public b2Joint +{ +public: + + /// Implements b2Joint. + b2Vec2 GetAnchorA() const; + + /// Implements b2Joint. + b2Vec2 GetAnchorB() const; + + /// Implements b2Joint. + b2Vec2 GetReactionForce(float32 inv_dt) const; + + /// Implements b2Joint. + float32 GetReactionTorque(float32 inv_dt) const; + + /// Use this to update the target point. + void SetTarget(const b2Vec2& target); + const b2Vec2& GetTarget() const; + + /// Set/get the maximum force in Newtons. + void SetMaxForce(float32 force); + float32 GetMaxForce() const; + + /// Set/get the frequency in Hertz. + void SetFrequency(float32 hz); + float32 GetFrequency() const; + + /// Set/get the damping ratio (dimensionless). + void SetDampingRatio(float32 ratio); + float32 GetDampingRatio() const; + + /// The mouse joint does not support dumping. + void Dump() { b2Log("Mouse joint dumping is not supported.\n"); } + + /// Implement b2Joint::ShiftOrigin + void ShiftOrigin(const b2Vec2& newOrigin); + +protected: + friend class b2Joint; + + b2MouseJoint(const b2MouseJointDef* def); + + void InitVelocityConstraints(const b2SolverData& data); + void SolveVelocityConstraints(const b2SolverData& data); + bool SolvePositionConstraints(const b2SolverData& data); + + b2Vec2 m_localAnchorB; + b2Vec2 m_targetA; + float32 m_frequencyHz; + float32 m_dampingRatio; + float32 m_beta; + + // Solver shared + b2Vec2 m_impulse; + float32 m_maxForce; + float32 m_gamma; + + // Solver temp + int32 m_indexA; + int32 m_indexB; + b2Vec2 m_rB; + b2Vec2 m_localCenterB; + float32 m_invMassB; + float32 m_invIB; + b2Mat22 m_mass; + b2Vec2 m_C; +}; + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2PrismaticJoint.cpp b/Dependencies/Box2D/src/Dynamics/Joints/b2PrismaticJoint.cpp new file mode 100644 index 00000000..f35649f1 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2PrismaticJoint.cpp @@ -0,0 +1,629 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include + +// Linear constraint (point-to-line) +// d = p2 - p1 = x2 + r2 - x1 - r1 +// C = dot(perp, d) +// Cdot = dot(d, cross(w1, perp)) + dot(perp, v2 + cross(w2, r2) - v1 - cross(w1, r1)) +// = -dot(perp, v1) - dot(cross(d + r1, perp), w1) + dot(perp, v2) + dot(cross(r2, perp), v2) +// J = [-perp, -cross(d + r1, perp), perp, cross(r2,perp)] +// +// Angular constraint +// C = a2 - a1 + a_initial +// Cdot = w2 - w1 +// J = [0 0 -1 0 0 1] +// +// K = J * invM * JT +// +// J = [-a -s1 a s2] +// [0 -1 0 1] +// a = perp +// s1 = cross(d + r1, a) = cross(p2 - x1, a) +// s2 = cross(r2, a) = cross(p2 - x2, a) + + +// Motor/Limit linear constraint +// C = dot(ax1, d) +// Cdot = = -dot(ax1, v1) - dot(cross(d + r1, ax1), w1) + dot(ax1, v2) + dot(cross(r2, ax1), v2) +// J = [-ax1 -cross(d+r1,ax1) ax1 cross(r2,ax1)] + +// Block Solver +// We develop a block solver that includes the joint limit. This makes the limit stiff (inelastic) even +// when the mass has poor distribution (leading to large torques about the joint anchor points). +// +// The Jacobian has 3 rows: +// J = [-uT -s1 uT s2] // linear +// [0 -1 0 1] // angular +// [-vT -a1 vT a2] // limit +// +// u = perp +// v = axis +// s1 = cross(d + r1, u), s2 = cross(r2, u) +// a1 = cross(d + r1, v), a2 = cross(r2, v) + +// M * (v2 - v1) = JT * df +// J * v2 = bias +// +// v2 = v1 + invM * JT * df +// J * (v1 + invM * JT * df) = bias +// K * df = bias - J * v1 = -Cdot +// K = J * invM * JT +// Cdot = J * v1 - bias +// +// Now solve for f2. +// df = f2 - f1 +// K * (f2 - f1) = -Cdot +// f2 = invK * (-Cdot) + f1 +// +// Clamp accumulated limit impulse. +// lower: f2(3) = max(f2(3), 0) +// upper: f2(3) = min(f2(3), 0) +// +// Solve for correct f2(1:2) +// K(1:2, 1:2) * f2(1:2) = -Cdot(1:2) - K(1:2,3) * f2(3) + K(1:2,1:3) * f1 +// = -Cdot(1:2) - K(1:2,3) * f2(3) + K(1:2,1:2) * f1(1:2) + K(1:2,3) * f1(3) +// K(1:2, 1:2) * f2(1:2) = -Cdot(1:2) - K(1:2,3) * (f2(3) - f1(3)) + K(1:2,1:2) * f1(1:2) +// f2(1:2) = invK(1:2,1:2) * (-Cdot(1:2) - K(1:2,3) * (f2(3) - f1(3))) + f1(1:2) +// +// Now compute impulse to be applied: +// df = f2 - f1 + +void b2PrismaticJointDef::Initialize(b2Body* bA, b2Body* bB, const b2Vec2& anchor, const b2Vec2& axis) +{ + bodyA = bA; + bodyB = bB; + localAnchorA = bodyA->GetLocalPoint(anchor); + localAnchorB = bodyB->GetLocalPoint(anchor); + localAxisA = bodyA->GetLocalVector(axis); + referenceAngle = bodyB->GetAngle() - bodyA->GetAngle(); +} + +b2PrismaticJoint::b2PrismaticJoint(const b2PrismaticJointDef* def) +: b2Joint(def) +{ + m_localAnchorA = def->localAnchorA; + m_localAnchorB = def->localAnchorB; + m_localXAxisA = def->localAxisA; + m_localXAxisA.Normalize(); + m_localYAxisA = b2Cross(1.0f, m_localXAxisA); + m_referenceAngle = def->referenceAngle; + + m_impulse.SetZero(); + m_motorMass = 0.0f; + m_motorImpulse = 0.0f; + + m_lowerTranslation = def->lowerTranslation; + m_upperTranslation = def->upperTranslation; + m_maxMotorForce = def->maxMotorForce; + m_motorSpeed = def->motorSpeed; + m_enableLimit = def->enableLimit; + m_enableMotor = def->enableMotor; + m_limitState = e_inactiveLimit; + + m_axis.SetZero(); + m_perp.SetZero(); +} + +void b2PrismaticJoint::InitVelocityConstraints(const b2SolverData& data) +{ + m_indexA = m_bodyA->m_islandIndex; + m_indexB = m_bodyB->m_islandIndex; + m_localCenterA = m_bodyA->m_sweep.localCenter; + m_localCenterB = m_bodyB->m_sweep.localCenter; + m_invMassA = m_bodyA->m_invMass; + m_invMassB = m_bodyB->m_invMass; + m_invIA = m_bodyA->m_invI; + m_invIB = m_bodyB->m_invI; + + b2Vec2 cA = data.positions[m_indexA].c; + float32 aA = data.positions[m_indexA].a; + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + + b2Vec2 cB = data.positions[m_indexB].c; + float32 aB = data.positions[m_indexB].a; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + b2Rot qA(aA), qB(aB); + + // Compute the effective masses. + b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_localCenterA); + b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_localCenterB); + b2Vec2 d = (cB - cA) + rB - rA; + + float32 mA = m_invMassA, mB = m_invMassB; + float32 iA = m_invIA, iB = m_invIB; + + // Compute motor Jacobian and effective mass. + { + m_axis = b2Mul(qA, m_localXAxisA); + m_a1 = b2Cross(d + rA, m_axis); + m_a2 = b2Cross(rB, m_axis); + + m_motorMass = mA + mB + iA * m_a1 * m_a1 + iB * m_a2 * m_a2; + if (m_motorMass > 0.0f) + { + m_motorMass = 1.0f / m_motorMass; + } + } + + // Prismatic constraint. + { + m_perp = b2Mul(qA, m_localYAxisA); + + m_s1 = b2Cross(d + rA, m_perp); + m_s2 = b2Cross(rB, m_perp); + + float32 s1test; + s1test = b2Cross(rA, m_perp); + + float32 k11 = mA + mB + iA * m_s1 * m_s1 + iB * m_s2 * m_s2; + float32 k12 = iA * m_s1 + iB * m_s2; + float32 k13 = iA * m_s1 * m_a1 + iB * m_s2 * m_a2; + float32 k22 = iA + iB; + if (k22 == 0.0f) + { + // For bodies with fixed rotation. + k22 = 1.0f; + } + float32 k23 = iA * m_a1 + iB * m_a2; + float32 k33 = mA + mB + iA * m_a1 * m_a1 + iB * m_a2 * m_a2; + + m_K.ex.Set(k11, k12, k13); + m_K.ey.Set(k12, k22, k23); + m_K.ez.Set(k13, k23, k33); + } + + // Compute motor and limit terms. + if (m_enableLimit) + { + float32 jointTranslation = b2Dot(m_axis, d); + if (b2Abs(m_upperTranslation - m_lowerTranslation) < 2.0f * b2_linearSlop) + { + m_limitState = e_equalLimits; + } + else if (jointTranslation <= m_lowerTranslation) + { + if (m_limitState != e_atLowerLimit) + { + m_limitState = e_atLowerLimit; + m_impulse.z = 0.0f; + } + } + else if (jointTranslation >= m_upperTranslation) + { + if (m_limitState != e_atUpperLimit) + { + m_limitState = e_atUpperLimit; + m_impulse.z = 0.0f; + } + } + else + { + m_limitState = e_inactiveLimit; + m_impulse.z = 0.0f; + } + } + else + { + m_limitState = e_inactiveLimit; + m_impulse.z = 0.0f; + } + + if (m_enableMotor == false) + { + m_motorImpulse = 0.0f; + } + + if (data.step.warmStarting) + { + // Account for variable time step. + m_impulse *= data.step.dtRatio; + m_motorImpulse *= data.step.dtRatio; + + b2Vec2 P = m_impulse.x * m_perp + (m_motorImpulse + m_impulse.z) * m_axis; + float32 LA = m_impulse.x * m_s1 + m_impulse.y + (m_motorImpulse + m_impulse.z) * m_a1; + float32 LB = m_impulse.x * m_s2 + m_impulse.y + (m_motorImpulse + m_impulse.z) * m_a2; + + vA -= mA * P; + wA -= iA * LA; + + vB += mB * P; + wB += iB * LB; + } + else + { + m_impulse.SetZero(); + m_motorImpulse = 0.0f; + } + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +void b2PrismaticJoint::SolveVelocityConstraints(const b2SolverData& data) +{ + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + float32 mA = m_invMassA, mB = m_invMassB; + float32 iA = m_invIA, iB = m_invIB; + + // Solve linear motor constraint. + if (m_enableMotor && m_limitState != e_equalLimits) + { + float32 Cdot = b2Dot(m_axis, vB - vA) + m_a2 * wB - m_a1 * wA; + float32 impulse = m_motorMass * (m_motorSpeed - Cdot); + float32 oldImpulse = m_motorImpulse; + float32 maxImpulse = data.step.dt * m_maxMotorForce; + m_motorImpulse = b2Clamp(m_motorImpulse + impulse, -maxImpulse, maxImpulse); + impulse = m_motorImpulse - oldImpulse; + + b2Vec2 P = impulse * m_axis; + float32 LA = impulse * m_a1; + float32 LB = impulse * m_a2; + + vA -= mA * P; + wA -= iA * LA; + + vB += mB * P; + wB += iB * LB; + } + + b2Vec2 Cdot1; + Cdot1.x = b2Dot(m_perp, vB - vA) + m_s2 * wB - m_s1 * wA; + Cdot1.y = wB - wA; + + if (m_enableLimit && m_limitState != e_inactiveLimit) + { + // Solve prismatic and limit constraint in block form. + float32 Cdot2; + Cdot2 = b2Dot(m_axis, vB - vA) + m_a2 * wB - m_a1 * wA; + b2Vec3 Cdot(Cdot1.x, Cdot1.y, Cdot2); + + b2Vec3 f1 = m_impulse; + b2Vec3 df = m_K.Solve33(-Cdot); + m_impulse += df; + + if (m_limitState == e_atLowerLimit) + { + m_impulse.z = b2Max(m_impulse.z, 0.0f); + } + else if (m_limitState == e_atUpperLimit) + { + m_impulse.z = b2Min(m_impulse.z, 0.0f); + } + + // f2(1:2) = invK(1:2,1:2) * (-Cdot(1:2) - K(1:2,3) * (f2(3) - f1(3))) + f1(1:2) + b2Vec2 b = -Cdot1 - (m_impulse.z - f1.z) * b2Vec2(m_K.ez.x, m_K.ez.y); + b2Vec2 f2r = m_K.Solve22(b) + b2Vec2(f1.x, f1.y); + m_impulse.x = f2r.x; + m_impulse.y = f2r.y; + + df = m_impulse - f1; + + b2Vec2 P = df.x * m_perp + df.z * m_axis; + float32 LA = df.x * m_s1 + df.y + df.z * m_a1; + float32 LB = df.x * m_s2 + df.y + df.z * m_a2; + + vA -= mA * P; + wA -= iA * LA; + + vB += mB * P; + wB += iB * LB; + } + else + { + // Limit is inactive, just solve the prismatic constraint in block form. + b2Vec2 df = m_K.Solve22(-Cdot1); + m_impulse.x += df.x; + m_impulse.y += df.y; + + b2Vec2 P = df.x * m_perp; + float32 LA = df.x * m_s1 + df.y; + float32 LB = df.x * m_s2 + df.y; + + vA -= mA * P; + wA -= iA * LA; + + vB += mB * P; + wB += iB * LB; + } + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +bool b2PrismaticJoint::SolvePositionConstraints(const b2SolverData& data) +{ + b2Vec2 cA = data.positions[m_indexA].c; + float32 aA = data.positions[m_indexA].a; + b2Vec2 cB = data.positions[m_indexB].c; + float32 aB = data.positions[m_indexB].a; + + b2Rot qA(aA), qB(aB); + + float32 mA = m_invMassA, mB = m_invMassB; + float32 iA = m_invIA, iB = m_invIB; + + // Compute fresh Jacobians + b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_localCenterA); + b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_localCenterB); + b2Vec2 d = cB + rB - cA - rA; + + b2Vec2 axis = b2Mul(qA, m_localXAxisA); + float32 a1 = b2Cross(d + rA, axis); + float32 a2 = b2Cross(rB, axis); + b2Vec2 perp = b2Mul(qA, m_localYAxisA); + + float32 s1 = b2Cross(d + rA, perp); + float32 s2 = b2Cross(rB, perp); + + b2Vec3 impulse; + b2Vec2 C1; + C1.x = b2Dot(perp, d); + C1.y = aB - aA - m_referenceAngle; + + float32 linearError = b2Abs(C1.x); + float32 angularError = b2Abs(C1.y); + + bool active = false; + float32 C2 = 0.0f; + if (m_enableLimit) + { + float32 translation = b2Dot(axis, d); + if (b2Abs(m_upperTranslation - m_lowerTranslation) < 2.0f * b2_linearSlop) + { + // Prevent large angular corrections + C2 = b2Clamp(translation, -b2_maxLinearCorrection, b2_maxLinearCorrection); + linearError = b2Max(linearError, b2Abs(translation)); + active = true; + } + else if (translation <= m_lowerTranslation) + { + // Prevent large linear corrections and allow some slop. + C2 = b2Clamp(translation - m_lowerTranslation + b2_linearSlop, -b2_maxLinearCorrection, 0.0f); + linearError = b2Max(linearError, m_lowerTranslation - translation); + active = true; + } + else if (translation >= m_upperTranslation) + { + // Prevent large linear corrections and allow some slop. + C2 = b2Clamp(translation - m_upperTranslation - b2_linearSlop, 0.0f, b2_maxLinearCorrection); + linearError = b2Max(linearError, translation - m_upperTranslation); + active = true; + } + } + + if (active) + { + float32 k11 = mA + mB + iA * s1 * s1 + iB * s2 * s2; + float32 k12 = iA * s1 + iB * s2; + float32 k13 = iA * s1 * a1 + iB * s2 * a2; + float32 k22 = iA + iB; + if (k22 == 0.0f) + { + // For fixed rotation + k22 = 1.0f; + } + float32 k23 = iA * a1 + iB * a2; + float32 k33 = mA + mB + iA * a1 * a1 + iB * a2 * a2; + + b2Mat33 K; + K.ex.Set(k11, k12, k13); + K.ey.Set(k12, k22, k23); + K.ez.Set(k13, k23, k33); + + b2Vec3 C; + C.x = C1.x; + C.y = C1.y; + C.z = C2; + + impulse = K.Solve33(-C); + } + else + { + float32 k11 = mA + mB + iA * s1 * s1 + iB * s2 * s2; + float32 k12 = iA * s1 + iB * s2; + float32 k22 = iA + iB; + if (k22 == 0.0f) + { + k22 = 1.0f; + } + + b2Mat22 K; + K.ex.Set(k11, k12); + K.ey.Set(k12, k22); + + b2Vec2 impulse1 = K.Solve(-C1); + impulse.x = impulse1.x; + impulse.y = impulse1.y; + impulse.z = 0.0f; + } + + b2Vec2 P = impulse.x * perp + impulse.z * axis; + float32 LA = impulse.x * s1 + impulse.y + impulse.z * a1; + float32 LB = impulse.x * s2 + impulse.y + impulse.z * a2; + + cA -= mA * P; + aA -= iA * LA; + cB += mB * P; + aB += iB * LB; + + data.positions[m_indexA].c = cA; + data.positions[m_indexA].a = aA; + data.positions[m_indexB].c = cB; + data.positions[m_indexB].a = aB; + + return linearError <= b2_linearSlop && angularError <= b2_angularSlop; +} + +b2Vec2 b2PrismaticJoint::GetAnchorA() const +{ + return m_bodyA->GetWorldPoint(m_localAnchorA); +} + +b2Vec2 b2PrismaticJoint::GetAnchorB() const +{ + return m_bodyB->GetWorldPoint(m_localAnchorB); +} + +b2Vec2 b2PrismaticJoint::GetReactionForce(float32 inv_dt) const +{ + return inv_dt * (m_impulse.x * m_perp + (m_motorImpulse + m_impulse.z) * m_axis); +} + +float32 b2PrismaticJoint::GetReactionTorque(float32 inv_dt) const +{ + return inv_dt * m_impulse.y; +} + +float32 b2PrismaticJoint::GetJointTranslation() const +{ + b2Vec2 pA = m_bodyA->GetWorldPoint(m_localAnchorA); + b2Vec2 pB = m_bodyB->GetWorldPoint(m_localAnchorB); + b2Vec2 d = pB - pA; + b2Vec2 axis = m_bodyA->GetWorldVector(m_localXAxisA); + + float32 translation = b2Dot(d, axis); + return translation; +} + +float32 b2PrismaticJoint::GetJointSpeed() const +{ + b2Body* bA = m_bodyA; + b2Body* bB = m_bodyB; + + b2Vec2 rA = b2Mul(bA->m_xf.q, m_localAnchorA - bA->m_sweep.localCenter); + b2Vec2 rB = b2Mul(bB->m_xf.q, m_localAnchorB - bB->m_sweep.localCenter); + b2Vec2 p1 = bA->m_sweep.c + rA; + b2Vec2 p2 = bB->m_sweep.c + rB; + b2Vec2 d = p2 - p1; + b2Vec2 axis = b2Mul(bA->m_xf.q, m_localXAxisA); + + b2Vec2 vA = bA->m_linearVelocity; + b2Vec2 vB = bB->m_linearVelocity; + float32 wA = bA->m_angularVelocity; + float32 wB = bB->m_angularVelocity; + + float32 speed = b2Dot(d, b2Cross(wA, axis)) + b2Dot(axis, vB + b2Cross(wB, rB) - vA - b2Cross(wA, rA)); + return speed; +} + +bool b2PrismaticJoint::IsLimitEnabled() const +{ + return m_enableLimit; +} + +void b2PrismaticJoint::EnableLimit(bool flag) +{ + if (flag != m_enableLimit) + { + m_bodyA->SetAwake(true); + m_bodyB->SetAwake(true); + m_enableLimit = flag; + m_impulse.z = 0.0f; + } +} + +float32 b2PrismaticJoint::GetLowerLimit() const +{ + return m_lowerTranslation; +} + +float32 b2PrismaticJoint::GetUpperLimit() const +{ + return m_upperTranslation; +} + +void b2PrismaticJoint::SetLimits(float32 lower, float32 upper) +{ + b2Assert(lower <= upper); + if (lower != m_lowerTranslation || upper != m_upperTranslation) + { + m_bodyA->SetAwake(true); + m_bodyB->SetAwake(true); + m_lowerTranslation = lower; + m_upperTranslation = upper; + m_impulse.z = 0.0f; + } +} + +bool b2PrismaticJoint::IsMotorEnabled() const +{ + return m_enableMotor; +} + +void b2PrismaticJoint::EnableMotor(bool flag) +{ + m_bodyA->SetAwake(true); + m_bodyB->SetAwake(true); + m_enableMotor = flag; +} + +void b2PrismaticJoint::SetMotorSpeed(float32 speed) +{ + m_bodyA->SetAwake(true); + m_bodyB->SetAwake(true); + m_motorSpeed = speed; +} + +void b2PrismaticJoint::SetMaxMotorForce(float32 force) +{ + m_bodyA->SetAwake(true); + m_bodyB->SetAwake(true); + m_maxMotorForce = force; +} + +float32 b2PrismaticJoint::GetMotorForce(float32 inv_dt) const +{ + return inv_dt * m_motorImpulse; +} + +void b2PrismaticJoint::Dump() +{ + int32 indexA = m_bodyA->m_islandIndex; + int32 indexB = m_bodyB->m_islandIndex; + + b2Log(" b2PrismaticJointDef jd;\n"); + b2Log(" jd.bodyA = bodies[%d];\n", indexA); + b2Log(" jd.bodyB = bodies[%d];\n", indexB); + b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); + b2Log(" jd.localAnchorA.Set(%.15lef, %.15lef);\n", m_localAnchorA.x, m_localAnchorA.y); + b2Log(" jd.localAnchorB.Set(%.15lef, %.15lef);\n", m_localAnchorB.x, m_localAnchorB.y); + b2Log(" jd.localAxisA.Set(%.15lef, %.15lef);\n", m_localXAxisA.x, m_localXAxisA.y); + b2Log(" jd.referenceAngle = %.15lef;\n", m_referenceAngle); + b2Log(" jd.enableLimit = bool(%d);\n", m_enableLimit); + b2Log(" jd.lowerTranslation = %.15lef;\n", m_lowerTranslation); + b2Log(" jd.upperTranslation = %.15lef;\n", m_upperTranslation); + b2Log(" jd.enableMotor = bool(%d);\n", m_enableMotor); + b2Log(" jd.motorSpeed = %.15lef;\n", m_motorSpeed); + b2Log(" jd.maxMotorForce = %.15lef;\n", m_maxMotorForce); + b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); +} diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2PrismaticJoint.h b/Dependencies/Box2D/src/Dynamics/Joints/b2PrismaticJoint.h new file mode 100644 index 00000000..be1d9836 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2PrismaticJoint.h @@ -0,0 +1,196 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_PRISMATIC_JOINT_H +#define B2_PRISMATIC_JOINT_H + +#include + +/// Prismatic joint definition. This requires defining a line of +/// motion using an axis and an anchor point. The definition uses local +/// anchor points and a local axis so that the initial configuration +/// can violate the constraint slightly. The joint translation is zero +/// when the local anchor points coincide in world space. Using local +/// anchors and a local axis helps when saving and loading a game. +struct b2PrismaticJointDef : public b2JointDef +{ + b2PrismaticJointDef() + { + type = e_prismaticJoint; + localAnchorA.SetZero(); + localAnchorB.SetZero(); + localAxisA.Set(1.0f, 0.0f); + referenceAngle = 0.0f; + enableLimit = false; + lowerTranslation = 0.0f; + upperTranslation = 0.0f; + enableMotor = false; + maxMotorForce = 0.0f; + motorSpeed = 0.0f; + } + + /// Initialize the bodies, anchors, axis, and reference angle using the world + /// anchor and unit world axis. + void Initialize(b2Body* bodyA, b2Body* bodyB, const b2Vec2& anchor, const b2Vec2& axis); + + /// The local anchor point relative to bodyA's origin. + b2Vec2 localAnchorA; + + /// The local anchor point relative to bodyB's origin. + b2Vec2 localAnchorB; + + /// The local translation unit axis in bodyA. + b2Vec2 localAxisA; + + /// The constrained angle between the bodies: bodyB_angle - bodyA_angle. + float32 referenceAngle; + + /// Enable/disable the joint limit. + bool enableLimit; + + /// The lower translation limit, usually in meters. + float32 lowerTranslation; + + /// The upper translation limit, usually in meters. + float32 upperTranslation; + + /// Enable/disable the joint motor. + bool enableMotor; + + /// The maximum motor torque, usually in N-m. + float32 maxMotorForce; + + /// The desired motor speed in radians per second. + float32 motorSpeed; +}; + +/// A prismatic joint. This joint provides one degree of freedom: translation +/// along an axis fixed in bodyA. Relative rotation is prevented. You can +/// use a joint limit to restrict the range of motion and a joint motor to +/// drive the motion or to model joint friction. +class b2PrismaticJoint : public b2Joint +{ +public: + b2Vec2 GetAnchorA() const; + b2Vec2 GetAnchorB() const; + + b2Vec2 GetReactionForce(float32 inv_dt) const; + float32 GetReactionTorque(float32 inv_dt) const; + + /// The local anchor point relative to bodyA's origin. + const b2Vec2& GetLocalAnchorA() const { return m_localAnchorA; } + + /// The local anchor point relative to bodyB's origin. + const b2Vec2& GetLocalAnchorB() const { return m_localAnchorB; } + + /// The local joint axis relative to bodyA. + const b2Vec2& GetLocalAxisA() const { return m_localXAxisA; } + + /// Get the reference angle. + float32 GetReferenceAngle() const { return m_referenceAngle; } + + /// Get the current joint translation, usually in meters. + float32 GetJointTranslation() const; + + /// Get the current joint translation speed, usually in meters per second. + float32 GetJointSpeed() const; + + /// Is the joint limit enabled? + bool IsLimitEnabled() const; + + /// Enable/disable the joint limit. + void EnableLimit(bool flag); + + /// Get the lower joint limit, usually in meters. + float32 GetLowerLimit() const; + + /// Get the upper joint limit, usually in meters. + float32 GetUpperLimit() const; + + /// Set the joint limits, usually in meters. + void SetLimits(float32 lower, float32 upper); + + /// Is the joint motor enabled? + bool IsMotorEnabled() const; + + /// Enable/disable the joint motor. + void EnableMotor(bool flag); + + /// Set the motor speed, usually in meters per second. + void SetMotorSpeed(float32 speed); + + /// Get the motor speed, usually in meters per second. + float32 GetMotorSpeed() const; + + /// Set the maximum motor force, usually in N. + void SetMaxMotorForce(float32 force); + float32 GetMaxMotorForce() const { return m_maxMotorForce; } + + /// Get the current motor force given the inverse time step, usually in N. + float32 GetMotorForce(float32 inv_dt) const; + + /// Dump to b2Log + void Dump(); + +protected: + friend class b2Joint; + friend class b2GearJoint; + b2PrismaticJoint(const b2PrismaticJointDef* def); + + void InitVelocityConstraints(const b2SolverData& data); + void SolveVelocityConstraints(const b2SolverData& data); + bool SolvePositionConstraints(const b2SolverData& data); + + // Solver shared + b2Vec2 m_localAnchorA; + b2Vec2 m_localAnchorB; + b2Vec2 m_localXAxisA; + b2Vec2 m_localYAxisA; + float32 m_referenceAngle; + b2Vec3 m_impulse; + float32 m_motorImpulse; + float32 m_lowerTranslation; + float32 m_upperTranslation; + float32 m_maxMotorForce; + float32 m_motorSpeed; + bool m_enableLimit; + bool m_enableMotor; + b2LimitState m_limitState; + + // Solver temp + int32 m_indexA; + int32 m_indexB; + b2Vec2 m_localCenterA; + b2Vec2 m_localCenterB; + float32 m_invMassA; + float32 m_invMassB; + float32 m_invIA; + float32 m_invIB; + b2Vec2 m_axis, m_perp; + float32 m_s1, m_s2; + float32 m_a1, m_a2; + b2Mat33 m_K; + float32 m_motorMass; +}; + +inline float32 b2PrismaticJoint::GetMotorSpeed() const +{ + return m_motorSpeed; +} + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2PulleyJoint.cpp b/Dependencies/Box2D/src/Dynamics/Joints/b2PulleyJoint.cpp new file mode 100644 index 00000000..824ab0e8 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2PulleyJoint.cpp @@ -0,0 +1,348 @@ +/* +* Copyright (c) 2007 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include + +// Pulley: +// length1 = norm(p1 - s1) +// length2 = norm(p2 - s2) +// C0 = (length1 + ratio * length2)_initial +// C = C0 - (length1 + ratio * length2) +// u1 = (p1 - s1) / norm(p1 - s1) +// u2 = (p2 - s2) / norm(p2 - s2) +// Cdot = -dot(u1, v1 + cross(w1, r1)) - ratio * dot(u2, v2 + cross(w2, r2)) +// J = -[u1 cross(r1, u1) ratio * u2 ratio * cross(r2, u2)] +// K = J * invM * JT +// = invMass1 + invI1 * cross(r1, u1)^2 + ratio^2 * (invMass2 + invI2 * cross(r2, u2)^2) + +void b2PulleyJointDef::Initialize(b2Body* bA, b2Body* bB, + const b2Vec2& groundA, const b2Vec2& groundB, + const b2Vec2& anchorA, const b2Vec2& anchorB, + float32 r) +{ + bodyA = bA; + bodyB = bB; + groundAnchorA = groundA; + groundAnchorB = groundB; + localAnchorA = bodyA->GetLocalPoint(anchorA); + localAnchorB = bodyB->GetLocalPoint(anchorB); + b2Vec2 dA = anchorA - groundA; + lengthA = dA.Length(); + b2Vec2 dB = anchorB - groundB; + lengthB = dB.Length(); + ratio = r; + b2Assert(ratio > b2_epsilon); +} + +b2PulleyJoint::b2PulleyJoint(const b2PulleyJointDef* def) +: b2Joint(def) +{ + m_groundAnchorA = def->groundAnchorA; + m_groundAnchorB = def->groundAnchorB; + m_localAnchorA = def->localAnchorA; + m_localAnchorB = def->localAnchorB; + + m_lengthA = def->lengthA; + m_lengthB = def->lengthB; + + b2Assert(def->ratio != 0.0f); + m_ratio = def->ratio; + + m_constant = def->lengthA + m_ratio * def->lengthB; + + m_impulse = 0.0f; +} + +void b2PulleyJoint::InitVelocityConstraints(const b2SolverData& data) +{ + m_indexA = m_bodyA->m_islandIndex; + m_indexB = m_bodyB->m_islandIndex; + m_localCenterA = m_bodyA->m_sweep.localCenter; + m_localCenterB = m_bodyB->m_sweep.localCenter; + m_invMassA = m_bodyA->m_invMass; + m_invMassB = m_bodyB->m_invMass; + m_invIA = m_bodyA->m_invI; + m_invIB = m_bodyB->m_invI; + + b2Vec2 cA = data.positions[m_indexA].c; + float32 aA = data.positions[m_indexA].a; + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + + b2Vec2 cB = data.positions[m_indexB].c; + float32 aB = data.positions[m_indexB].a; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + b2Rot qA(aA), qB(aB); + + m_rA = b2Mul(qA, m_localAnchorA - m_localCenterA); + m_rB = b2Mul(qB, m_localAnchorB - m_localCenterB); + + // Get the pulley axes. + m_uA = cA + m_rA - m_groundAnchorA; + m_uB = cB + m_rB - m_groundAnchorB; + + float32 lengthA = m_uA.Length(); + float32 lengthB = m_uB.Length(); + + if (lengthA > 10.0f * b2_linearSlop) + { + m_uA *= 1.0f / lengthA; + } + else + { + m_uA.SetZero(); + } + + if (lengthB > 10.0f * b2_linearSlop) + { + m_uB *= 1.0f / lengthB; + } + else + { + m_uB.SetZero(); + } + + // Compute effective mass. + float32 ruA = b2Cross(m_rA, m_uA); + float32 ruB = b2Cross(m_rB, m_uB); + + float32 mA = m_invMassA + m_invIA * ruA * ruA; + float32 mB = m_invMassB + m_invIB * ruB * ruB; + + m_mass = mA + m_ratio * m_ratio * mB; + + if (m_mass > 0.0f) + { + m_mass = 1.0f / m_mass; + } + + if (data.step.warmStarting) + { + // Scale impulses to support variable time steps. + m_impulse *= data.step.dtRatio; + + // Warm starting. + b2Vec2 PA = -(m_impulse) * m_uA; + b2Vec2 PB = (-m_ratio * m_impulse) * m_uB; + + vA += m_invMassA * PA; + wA += m_invIA * b2Cross(m_rA, PA); + vB += m_invMassB * PB; + wB += m_invIB * b2Cross(m_rB, PB); + } + else + { + m_impulse = 0.0f; + } + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +void b2PulleyJoint::SolveVelocityConstraints(const b2SolverData& data) +{ + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + b2Vec2 vpA = vA + b2Cross(wA, m_rA); + b2Vec2 vpB = vB + b2Cross(wB, m_rB); + + float32 Cdot = -b2Dot(m_uA, vpA) - m_ratio * b2Dot(m_uB, vpB); + float32 impulse = -m_mass * Cdot; + m_impulse += impulse; + + b2Vec2 PA = -impulse * m_uA; + b2Vec2 PB = -m_ratio * impulse * m_uB; + vA += m_invMassA * PA; + wA += m_invIA * b2Cross(m_rA, PA); + vB += m_invMassB * PB; + wB += m_invIB * b2Cross(m_rB, PB); + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +bool b2PulleyJoint::SolvePositionConstraints(const b2SolverData& data) +{ + b2Vec2 cA = data.positions[m_indexA].c; + float32 aA = data.positions[m_indexA].a; + b2Vec2 cB = data.positions[m_indexB].c; + float32 aB = data.positions[m_indexB].a; + + b2Rot qA(aA), qB(aB); + + b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_localCenterA); + b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_localCenterB); + + // Get the pulley axes. + b2Vec2 uA = cA + rA - m_groundAnchorA; + b2Vec2 uB = cB + rB - m_groundAnchorB; + + float32 lengthA = uA.Length(); + float32 lengthB = uB.Length(); + + if (lengthA > 10.0f * b2_linearSlop) + { + uA *= 1.0f / lengthA; + } + else + { + uA.SetZero(); + } + + if (lengthB > 10.0f * b2_linearSlop) + { + uB *= 1.0f / lengthB; + } + else + { + uB.SetZero(); + } + + // Compute effective mass. + float32 ruA = b2Cross(rA, uA); + float32 ruB = b2Cross(rB, uB); + + float32 mA = m_invMassA + m_invIA * ruA * ruA; + float32 mB = m_invMassB + m_invIB * ruB * ruB; + + float32 mass = mA + m_ratio * m_ratio * mB; + + if (mass > 0.0f) + { + mass = 1.0f / mass; + } + + float32 C = m_constant - lengthA - m_ratio * lengthB; + float32 linearError = b2Abs(C); + + float32 impulse = -mass * C; + + b2Vec2 PA = -impulse * uA; + b2Vec2 PB = -m_ratio * impulse * uB; + + cA += m_invMassA * PA; + aA += m_invIA * b2Cross(rA, PA); + cB += m_invMassB * PB; + aB += m_invIB * b2Cross(rB, PB); + + data.positions[m_indexA].c = cA; + data.positions[m_indexA].a = aA; + data.positions[m_indexB].c = cB; + data.positions[m_indexB].a = aB; + + return linearError < b2_linearSlop; +} + +b2Vec2 b2PulleyJoint::GetAnchorA() const +{ + return m_bodyA->GetWorldPoint(m_localAnchorA); +} + +b2Vec2 b2PulleyJoint::GetAnchorB() const +{ + return m_bodyB->GetWorldPoint(m_localAnchorB); +} + +b2Vec2 b2PulleyJoint::GetReactionForce(float32 inv_dt) const +{ + b2Vec2 P = m_impulse * m_uB; + return inv_dt * P; +} + +float32 b2PulleyJoint::GetReactionTorque(float32 inv_dt) const +{ + B2_NOT_USED(inv_dt); + return 0.0f; +} + +b2Vec2 b2PulleyJoint::GetGroundAnchorA() const +{ + return m_groundAnchorA; +} + +b2Vec2 b2PulleyJoint::GetGroundAnchorB() const +{ + return m_groundAnchorB; +} + +float32 b2PulleyJoint::GetLengthA() const +{ + return m_lengthA; +} + +float32 b2PulleyJoint::GetLengthB() const +{ + return m_lengthB; +} + +float32 b2PulleyJoint::GetRatio() const +{ + return m_ratio; +} + +float32 b2PulleyJoint::GetCurrentLengthA() const +{ + b2Vec2 p = m_bodyA->GetWorldPoint(m_localAnchorA); + b2Vec2 s = m_groundAnchorA; + b2Vec2 d = p - s; + return d.Length(); +} + +float32 b2PulleyJoint::GetCurrentLengthB() const +{ + b2Vec2 p = m_bodyB->GetWorldPoint(m_localAnchorB); + b2Vec2 s = m_groundAnchorB; + b2Vec2 d = p - s; + return d.Length(); +} + +void b2PulleyJoint::Dump() +{ + int32 indexA = m_bodyA->m_islandIndex; + int32 indexB = m_bodyB->m_islandIndex; + + b2Log(" b2PulleyJointDef jd;\n"); + b2Log(" jd.bodyA = bodies[%d];\n", indexA); + b2Log(" jd.bodyB = bodies[%d];\n", indexB); + b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); + b2Log(" jd.groundAnchorA.Set(%.15lef, %.15lef);\n", m_groundAnchorA.x, m_groundAnchorA.y); + b2Log(" jd.groundAnchorB.Set(%.15lef, %.15lef);\n", m_groundAnchorB.x, m_groundAnchorB.y); + b2Log(" jd.localAnchorA.Set(%.15lef, %.15lef);\n", m_localAnchorA.x, m_localAnchorA.y); + b2Log(" jd.localAnchorB.Set(%.15lef, %.15lef);\n", m_localAnchorB.x, m_localAnchorB.y); + b2Log(" jd.lengthA = %.15lef;\n", m_lengthA); + b2Log(" jd.lengthB = %.15lef;\n", m_lengthB); + b2Log(" jd.ratio = %.15lef;\n", m_ratio); + b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); +} + +void b2PulleyJoint::ShiftOrigin(const b2Vec2& newOrigin) +{ + m_groundAnchorA -= newOrigin; + m_groundAnchorB -= newOrigin; +} diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2PulleyJoint.h b/Dependencies/Box2D/src/Dynamics/Joints/b2PulleyJoint.h new file mode 100644 index 00000000..2ac357a1 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2PulleyJoint.h @@ -0,0 +1,152 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_PULLEY_JOINT_H +#define B2_PULLEY_JOINT_H + +#include + +const float32 b2_minPulleyLength = 2.0f; + +/// Pulley joint definition. This requires two ground anchors, +/// two dynamic body anchor points, and a pulley ratio. +struct b2PulleyJointDef : public b2JointDef +{ + b2PulleyJointDef() + { + type = e_pulleyJoint; + groundAnchorA.Set(-1.0f, 1.0f); + groundAnchorB.Set(1.0f, 1.0f); + localAnchorA.Set(-1.0f, 0.0f); + localAnchorB.Set(1.0f, 0.0f); + lengthA = 0.0f; + lengthB = 0.0f; + ratio = 1.0f; + collideConnected = true; + } + + /// Initialize the bodies, anchors, lengths, max lengths, and ratio using the world anchors. + void Initialize(b2Body* bodyA, b2Body* bodyB, + const b2Vec2& groundAnchorA, const b2Vec2& groundAnchorB, + const b2Vec2& anchorA, const b2Vec2& anchorB, + float32 ratio); + + /// The first ground anchor in world coordinates. This point never moves. + b2Vec2 groundAnchorA; + + /// The second ground anchor in world coordinates. This point never moves. + b2Vec2 groundAnchorB; + + /// The local anchor point relative to bodyA's origin. + b2Vec2 localAnchorA; + + /// The local anchor point relative to bodyB's origin. + b2Vec2 localAnchorB; + + /// The a reference length for the segment attached to bodyA. + float32 lengthA; + + /// The a reference length for the segment attached to bodyB. + float32 lengthB; + + /// The pulley ratio, used to simulate a block-and-tackle. + float32 ratio; +}; + +/// The pulley joint is connected to two bodies and two fixed ground points. +/// The pulley supports a ratio such that: +/// length1 + ratio * length2 <= constant +/// Yes, the force transmitted is scaled by the ratio. +/// Warning: the pulley joint can get a bit squirrelly by itself. They often +/// work better when combined with prismatic joints. You should also cover the +/// the anchor points with static shapes to prevent one side from going to +/// zero length. +class b2PulleyJoint : public b2Joint +{ +public: + b2Vec2 GetAnchorA() const; + b2Vec2 GetAnchorB() const; + + b2Vec2 GetReactionForce(float32 inv_dt) const; + float32 GetReactionTorque(float32 inv_dt) const; + + /// Get the first ground anchor. + b2Vec2 GetGroundAnchorA() const; + + /// Get the second ground anchor. + b2Vec2 GetGroundAnchorB() const; + + /// Get the current length of the segment attached to bodyA. + float32 GetLengthA() const; + + /// Get the current length of the segment attached to bodyB. + float32 GetLengthB() const; + + /// Get the pulley ratio. + float32 GetRatio() const; + + /// Get the current length of the segment attached to bodyA. + float32 GetCurrentLengthA() const; + + /// Get the current length of the segment attached to bodyB. + float32 GetCurrentLengthB() const; + + /// Dump joint to dmLog + void Dump(); + + /// Implement b2Joint::ShiftOrigin + void ShiftOrigin(const b2Vec2& newOrigin); + +protected: + + friend class b2Joint; + b2PulleyJoint(const b2PulleyJointDef* data); + + void InitVelocityConstraints(const b2SolverData& data); + void SolveVelocityConstraints(const b2SolverData& data); + bool SolvePositionConstraints(const b2SolverData& data); + + b2Vec2 m_groundAnchorA; + b2Vec2 m_groundAnchorB; + float32 m_lengthA; + float32 m_lengthB; + + // Solver shared + b2Vec2 m_localAnchorA; + b2Vec2 m_localAnchorB; + float32 m_constant; + float32 m_ratio; + float32 m_impulse; + + // Solver temp + int32 m_indexA; + int32 m_indexB; + b2Vec2 m_uA; + b2Vec2 m_uB; + b2Vec2 m_rA; + b2Vec2 m_rB; + b2Vec2 m_localCenterA; + b2Vec2 m_localCenterB; + float32 m_invMassA; + float32 m_invMassB; + float32 m_invIA; + float32 m_invIB; + float32 m_mass; +}; + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2RevoluteJoint.cpp b/Dependencies/Box2D/src/Dynamics/Joints/b2RevoluteJoint.cpp new file mode 100644 index 00000000..a3f70fad --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2RevoluteJoint.cpp @@ -0,0 +1,502 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include + +// Point-to-point constraint +// C = p2 - p1 +// Cdot = v2 - v1 +// = v2 + cross(w2, r2) - v1 - cross(w1, r1) +// J = [-I -r1_skew I r2_skew ] +// Identity used: +// w k % (rx i + ry j) = w * (-ry i + rx j) + +// Motor constraint +// Cdot = w2 - w1 +// J = [0 0 -1 0 0 1] +// K = invI1 + invI2 + +void b2RevoluteJointDef::Initialize(b2Body* bA, b2Body* bB, const b2Vec2& anchor) +{ + bodyA = bA; + bodyB = bB; + localAnchorA = bodyA->GetLocalPoint(anchor); + localAnchorB = bodyB->GetLocalPoint(anchor); + referenceAngle = bodyB->GetAngle() - bodyA->GetAngle(); +} + +b2RevoluteJoint::b2RevoluteJoint(const b2RevoluteJointDef* def) +: b2Joint(def) +{ + m_localAnchorA = def->localAnchorA; + m_localAnchorB = def->localAnchorB; + m_referenceAngle = def->referenceAngle; + + m_impulse.SetZero(); + m_motorImpulse = 0.0f; + + m_lowerAngle = def->lowerAngle; + m_upperAngle = def->upperAngle; + m_maxMotorTorque = def->maxMotorTorque; + m_motorSpeed = def->motorSpeed; + m_enableLimit = def->enableLimit; + m_enableMotor = def->enableMotor; + m_limitState = e_inactiveLimit; +} + +void b2RevoluteJoint::InitVelocityConstraints(const b2SolverData& data) +{ + m_indexA = m_bodyA->m_islandIndex; + m_indexB = m_bodyB->m_islandIndex; + m_localCenterA = m_bodyA->m_sweep.localCenter; + m_localCenterB = m_bodyB->m_sweep.localCenter; + m_invMassA = m_bodyA->m_invMass; + m_invMassB = m_bodyB->m_invMass; + m_invIA = m_bodyA->m_invI; + m_invIB = m_bodyB->m_invI; + + float32 aA = data.positions[m_indexA].a; + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + + float32 aB = data.positions[m_indexB].a; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + b2Rot qA(aA), qB(aB); + + m_rA = b2Mul(qA, m_localAnchorA - m_localCenterA); + m_rB = b2Mul(qB, m_localAnchorB - m_localCenterB); + + // J = [-I -r1_skew I r2_skew] + // [ 0 -1 0 1] + // r_skew = [-ry; rx] + + // Matlab + // K = [ mA+r1y^2*iA+mB+r2y^2*iB, -r1y*iA*r1x-r2y*iB*r2x, -r1y*iA-r2y*iB] + // [ -r1y*iA*r1x-r2y*iB*r2x, mA+r1x^2*iA+mB+r2x^2*iB, r1x*iA+r2x*iB] + // [ -r1y*iA-r2y*iB, r1x*iA+r2x*iB, iA+iB] + + float32 mA = m_invMassA, mB = m_invMassB; + float32 iA = m_invIA, iB = m_invIB; + + bool fixedRotation = (iA + iB == 0.0f); + + m_mass.ex.x = mA + mB + m_rA.y * m_rA.y * iA + m_rB.y * m_rB.y * iB; + m_mass.ey.x = -m_rA.y * m_rA.x * iA - m_rB.y * m_rB.x * iB; + m_mass.ez.x = -m_rA.y * iA - m_rB.y * iB; + m_mass.ex.y = m_mass.ey.x; + m_mass.ey.y = mA + mB + m_rA.x * m_rA.x * iA + m_rB.x * m_rB.x * iB; + m_mass.ez.y = m_rA.x * iA + m_rB.x * iB; + m_mass.ex.z = m_mass.ez.x; + m_mass.ey.z = m_mass.ez.y; + m_mass.ez.z = iA + iB; + + m_motorMass = iA + iB; + if (m_motorMass > 0.0f) + { + m_motorMass = 1.0f / m_motorMass; + } + + if (m_enableMotor == false || fixedRotation) + { + m_motorImpulse = 0.0f; + } + + if (m_enableLimit && fixedRotation == false) + { + float32 jointAngle = aB - aA - m_referenceAngle; + if (b2Abs(m_upperAngle - m_lowerAngle) < 2.0f * b2_angularSlop) + { + m_limitState = e_equalLimits; + } + else if (jointAngle <= m_lowerAngle) + { + if (m_limitState != e_atLowerLimit) + { + m_impulse.z = 0.0f; + } + m_limitState = e_atLowerLimit; + } + else if (jointAngle >= m_upperAngle) + { + if (m_limitState != e_atUpperLimit) + { + m_impulse.z = 0.0f; + } + m_limitState = e_atUpperLimit; + } + else + { + m_limitState = e_inactiveLimit; + m_impulse.z = 0.0f; + } + } + else + { + m_limitState = e_inactiveLimit; + } + + if (data.step.warmStarting) + { + // Scale impulses to support a variable time step. + m_impulse *= data.step.dtRatio; + m_motorImpulse *= data.step.dtRatio; + + b2Vec2 P(m_impulse.x, m_impulse.y); + + vA -= mA * P; + wA -= iA * (b2Cross(m_rA, P) + m_motorImpulse + m_impulse.z); + + vB += mB * P; + wB += iB * (b2Cross(m_rB, P) + m_motorImpulse + m_impulse.z); + } + else + { + m_impulse.SetZero(); + m_motorImpulse = 0.0f; + } + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +void b2RevoluteJoint::SolveVelocityConstraints(const b2SolverData& data) +{ + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + float32 mA = m_invMassA, mB = m_invMassB; + float32 iA = m_invIA, iB = m_invIB; + + bool fixedRotation = (iA + iB == 0.0f); + + // Solve motor constraint. + if (m_enableMotor && m_limitState != e_equalLimits && fixedRotation == false) + { + float32 Cdot = wB - wA - m_motorSpeed; + float32 impulse = -m_motorMass * Cdot; + float32 oldImpulse = m_motorImpulse; + float32 maxImpulse = data.step.dt * m_maxMotorTorque; + m_motorImpulse = b2Clamp(m_motorImpulse + impulse, -maxImpulse, maxImpulse); + impulse = m_motorImpulse - oldImpulse; + + wA -= iA * impulse; + wB += iB * impulse; + } + + // Solve limit constraint. + if (m_enableLimit && m_limitState != e_inactiveLimit && fixedRotation == false) + { + b2Vec2 Cdot1 = vB + b2Cross(wB, m_rB) - vA - b2Cross(wA, m_rA); + float32 Cdot2 = wB - wA; + b2Vec3 Cdot(Cdot1.x, Cdot1.y, Cdot2); + + b2Vec3 impulse = -m_mass.Solve33(Cdot); + + if (m_limitState == e_equalLimits) + { + m_impulse += impulse; + } + else if (m_limitState == e_atLowerLimit) + { + float32 newImpulse = m_impulse.z + impulse.z; + if (newImpulse < 0.0f) + { + b2Vec2 rhs = -Cdot1 + m_impulse.z * b2Vec2(m_mass.ez.x, m_mass.ez.y); + b2Vec2 reduced = m_mass.Solve22(rhs); + impulse.x = reduced.x; + impulse.y = reduced.y; + impulse.z = -m_impulse.z; + m_impulse.x += reduced.x; + m_impulse.y += reduced.y; + m_impulse.z = 0.0f; + } + else + { + m_impulse += impulse; + } + } + else if (m_limitState == e_atUpperLimit) + { + float32 newImpulse = m_impulse.z + impulse.z; + if (newImpulse > 0.0f) + { + b2Vec2 rhs = -Cdot1 + m_impulse.z * b2Vec2(m_mass.ez.x, m_mass.ez.y); + b2Vec2 reduced = m_mass.Solve22(rhs); + impulse.x = reduced.x; + impulse.y = reduced.y; + impulse.z = -m_impulse.z; + m_impulse.x += reduced.x; + m_impulse.y += reduced.y; + m_impulse.z = 0.0f; + } + else + { + m_impulse += impulse; + } + } + + b2Vec2 P(impulse.x, impulse.y); + + vA -= mA * P; + wA -= iA * (b2Cross(m_rA, P) + impulse.z); + + vB += mB * P; + wB += iB * (b2Cross(m_rB, P) + impulse.z); + } + else + { + // Solve point-to-point constraint + b2Vec2 Cdot = vB + b2Cross(wB, m_rB) - vA - b2Cross(wA, m_rA); + b2Vec2 impulse = m_mass.Solve22(-Cdot); + + m_impulse.x += impulse.x; + m_impulse.y += impulse.y; + + vA -= mA * impulse; + wA -= iA * b2Cross(m_rA, impulse); + + vB += mB * impulse; + wB += iB * b2Cross(m_rB, impulse); + } + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +bool b2RevoluteJoint::SolvePositionConstraints(const b2SolverData& data) +{ + b2Vec2 cA = data.positions[m_indexA].c; + float32 aA = data.positions[m_indexA].a; + b2Vec2 cB = data.positions[m_indexB].c; + float32 aB = data.positions[m_indexB].a; + + b2Rot qA(aA), qB(aB); + + float32 angularError = 0.0f; + float32 positionError = 0.0f; + + bool fixedRotation = (m_invIA + m_invIB == 0.0f); + + // Solve angular limit constraint. + if (m_enableLimit && m_limitState != e_inactiveLimit && fixedRotation == false) + { + float32 angle = aB - aA - m_referenceAngle; + float32 limitImpulse = 0.0f; + + if (m_limitState == e_equalLimits) + { + // Prevent large angular corrections + float32 C = b2Clamp(angle - m_lowerAngle, -b2_maxAngularCorrection, b2_maxAngularCorrection); + limitImpulse = -m_motorMass * C; + angularError = b2Abs(C); + } + else if (m_limitState == e_atLowerLimit) + { + float32 C = angle - m_lowerAngle; + angularError = -C; + + // Prevent large angular corrections and allow some slop. + C = b2Clamp(C + b2_angularSlop, -b2_maxAngularCorrection, 0.0f); + limitImpulse = -m_motorMass * C; + } + else if (m_limitState == e_atUpperLimit) + { + float32 C = angle - m_upperAngle; + angularError = C; + + // Prevent large angular corrections and allow some slop. + C = b2Clamp(C - b2_angularSlop, 0.0f, b2_maxAngularCorrection); + limitImpulse = -m_motorMass * C; + } + + aA -= m_invIA * limitImpulse; + aB += m_invIB * limitImpulse; + } + + // Solve point-to-point constraint. + { + qA.Set(aA); + qB.Set(aB); + b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_localCenterA); + b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_localCenterB); + + b2Vec2 C = cB + rB - cA - rA; + positionError = C.Length(); + + float32 mA = m_invMassA, mB = m_invMassB; + float32 iA = m_invIA, iB = m_invIB; + + b2Mat22 K; + K.ex.x = mA + mB + iA * rA.y * rA.y + iB * rB.y * rB.y; + K.ex.y = -iA * rA.x * rA.y - iB * rB.x * rB.y; + K.ey.x = K.ex.y; + K.ey.y = mA + mB + iA * rA.x * rA.x + iB * rB.x * rB.x; + + b2Vec2 impulse = -K.Solve(C); + + cA -= mA * impulse; + aA -= iA * b2Cross(rA, impulse); + + cB += mB * impulse; + aB += iB * b2Cross(rB, impulse); + } + + data.positions[m_indexA].c = cA; + data.positions[m_indexA].a = aA; + data.positions[m_indexB].c = cB; + data.positions[m_indexB].a = aB; + + return positionError <= b2_linearSlop && angularError <= b2_angularSlop; +} + +b2Vec2 b2RevoluteJoint::GetAnchorA() const +{ + return m_bodyA->GetWorldPoint(m_localAnchorA); +} + +b2Vec2 b2RevoluteJoint::GetAnchorB() const +{ + return m_bodyB->GetWorldPoint(m_localAnchorB); +} + +b2Vec2 b2RevoluteJoint::GetReactionForce(float32 inv_dt) const +{ + b2Vec2 P(m_impulse.x, m_impulse.y); + return inv_dt * P; +} + +float32 b2RevoluteJoint::GetReactionTorque(float32 inv_dt) const +{ + return inv_dt * m_impulse.z; +} + +float32 b2RevoluteJoint::GetJointAngle() const +{ + b2Body* bA = m_bodyA; + b2Body* bB = m_bodyB; + return bB->m_sweep.a - bA->m_sweep.a - m_referenceAngle; +} + +float32 b2RevoluteJoint::GetJointSpeed() const +{ + b2Body* bA = m_bodyA; + b2Body* bB = m_bodyB; + return bB->m_angularVelocity - bA->m_angularVelocity; +} + +bool b2RevoluteJoint::IsMotorEnabled() const +{ + return m_enableMotor; +} + +void b2RevoluteJoint::EnableMotor(bool flag) +{ + m_bodyA->SetAwake(true); + m_bodyB->SetAwake(true); + m_enableMotor = flag; +} + +float32 b2RevoluteJoint::GetMotorTorque(float32 inv_dt) const +{ + return inv_dt * m_motorImpulse; +} + +void b2RevoluteJoint::SetMotorSpeed(float32 speed) +{ + m_bodyA->SetAwake(true); + m_bodyB->SetAwake(true); + m_motorSpeed = speed; +} + +void b2RevoluteJoint::SetMaxMotorTorque(float32 torque) +{ + m_bodyA->SetAwake(true); + m_bodyB->SetAwake(true); + m_maxMotorTorque = torque; +} + +bool b2RevoluteJoint::IsLimitEnabled() const +{ + return m_enableLimit; +} + +void b2RevoluteJoint::EnableLimit(bool flag) +{ + if (flag != m_enableLimit) + { + m_bodyA->SetAwake(true); + m_bodyB->SetAwake(true); + m_enableLimit = flag; + m_impulse.z = 0.0f; + } +} + +float32 b2RevoluteJoint::GetLowerLimit() const +{ + return m_lowerAngle; +} + +float32 b2RevoluteJoint::GetUpperLimit() const +{ + return m_upperAngle; +} + +void b2RevoluteJoint::SetLimits(float32 lower, float32 upper) +{ + b2Assert(lower <= upper); + + if (lower != m_lowerAngle || upper != m_upperAngle) + { + m_bodyA->SetAwake(true); + m_bodyB->SetAwake(true); + m_impulse.z = 0.0f; + m_lowerAngle = lower; + m_upperAngle = upper; + } +} + +void b2RevoluteJoint::Dump() +{ + int32 indexA = m_bodyA->m_islandIndex; + int32 indexB = m_bodyB->m_islandIndex; + + b2Log(" b2RevoluteJointDef jd;\n"); + b2Log(" jd.bodyA = bodies[%d];\n", indexA); + b2Log(" jd.bodyB = bodies[%d];\n", indexB); + b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); + b2Log(" jd.localAnchorA.Set(%.15lef, %.15lef);\n", m_localAnchorA.x, m_localAnchorA.y); + b2Log(" jd.localAnchorB.Set(%.15lef, %.15lef);\n", m_localAnchorB.x, m_localAnchorB.y); + b2Log(" jd.referenceAngle = %.15lef;\n", m_referenceAngle); + b2Log(" jd.enableLimit = bool(%d);\n", m_enableLimit); + b2Log(" jd.lowerAngle = %.15lef;\n", m_lowerAngle); + b2Log(" jd.upperAngle = %.15lef;\n", m_upperAngle); + b2Log(" jd.enableMotor = bool(%d);\n", m_enableMotor); + b2Log(" jd.motorSpeed = %.15lef;\n", m_motorSpeed); + b2Log(" jd.maxMotorTorque = %.15lef;\n", m_maxMotorTorque); + b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); +} diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2RevoluteJoint.h b/Dependencies/Box2D/src/Dynamics/Joints/b2RevoluteJoint.h new file mode 100644 index 00000000..0dd21406 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2RevoluteJoint.h @@ -0,0 +1,204 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_REVOLUTE_JOINT_H +#define B2_REVOLUTE_JOINT_H + +#include + +/// Revolute joint definition. This requires defining an +/// anchor point where the bodies are joined. The definition +/// uses local anchor points so that the initial configuration +/// can violate the constraint slightly. You also need to +/// specify the initial relative angle for joint limits. This +/// helps when saving and loading a game. +/// The local anchor points are measured from the body's origin +/// rather than the center of mass because: +/// 1. you might not know where the center of mass will be. +/// 2. if you add/remove shapes from a body and recompute the mass, +/// the joints will be broken. +struct b2RevoluteJointDef : public b2JointDef +{ + b2RevoluteJointDef() + { + type = e_revoluteJoint; + localAnchorA.Set(0.0f, 0.0f); + localAnchorB.Set(0.0f, 0.0f); + referenceAngle = 0.0f; + lowerAngle = 0.0f; + upperAngle = 0.0f; + maxMotorTorque = 0.0f; + motorSpeed = 0.0f; + enableLimit = false; + enableMotor = false; + } + + /// Initialize the bodies, anchors, and reference angle using a world + /// anchor point. + void Initialize(b2Body* bodyA, b2Body* bodyB, const b2Vec2& anchor); + + /// The local anchor point relative to bodyA's origin. + b2Vec2 localAnchorA; + + /// The local anchor point relative to bodyB's origin. + b2Vec2 localAnchorB; + + /// The bodyB angle minus bodyA angle in the reference state (radians). + float32 referenceAngle; + + /// A flag to enable joint limits. + bool enableLimit; + + /// The lower angle for the joint limit (radians). + float32 lowerAngle; + + /// The upper angle for the joint limit (radians). + float32 upperAngle; + + /// A flag to enable the joint motor. + bool enableMotor; + + /// The desired motor speed. Usually in radians per second. + float32 motorSpeed; + + /// The maximum motor torque used to achieve the desired motor speed. + /// Usually in N-m. + float32 maxMotorTorque; +}; + +/// A revolute joint constrains two bodies to share a common point while they +/// are free to rotate about the point. The relative rotation about the shared +/// point is the joint angle. You can limit the relative rotation with +/// a joint limit that specifies a lower and upper angle. You can use a motor +/// to drive the relative rotation about the shared point. A maximum motor torque +/// is provided so that infinite forces are not generated. +class b2RevoluteJoint : public b2Joint +{ +public: + b2Vec2 GetAnchorA() const; + b2Vec2 GetAnchorB() const; + + /// The local anchor point relative to bodyA's origin. + const b2Vec2& GetLocalAnchorA() const { return m_localAnchorA; } + + /// The local anchor point relative to bodyB's origin. + const b2Vec2& GetLocalAnchorB() const { return m_localAnchorB; } + + /// Get the reference angle. + float32 GetReferenceAngle() const { return m_referenceAngle; } + + /// Get the current joint angle in radians. + float32 GetJointAngle() const; + + /// Get the current joint angle speed in radians per second. + float32 GetJointSpeed() const; + + /// Is the joint limit enabled? + bool IsLimitEnabled() const; + + /// Enable/disable the joint limit. + void EnableLimit(bool flag); + + /// Get the lower joint limit in radians. + float32 GetLowerLimit() const; + + /// Get the upper joint limit in radians. + float32 GetUpperLimit() const; + + /// Set the joint limits in radians. + void SetLimits(float32 lower, float32 upper); + + /// Is the joint motor enabled? + bool IsMotorEnabled() const; + + /// Enable/disable the joint motor. + void EnableMotor(bool flag); + + /// Set the motor speed in radians per second. + void SetMotorSpeed(float32 speed); + + /// Get the motor speed in radians per second. + float32 GetMotorSpeed() const; + + /// Set the maximum motor torque, usually in N-m. + void SetMaxMotorTorque(float32 torque); + float32 GetMaxMotorTorque() const { return m_maxMotorTorque; } + + /// Get the reaction force given the inverse time step. + /// Unit is N. + b2Vec2 GetReactionForce(float32 inv_dt) const; + + /// Get the reaction torque due to the joint limit given the inverse time step. + /// Unit is N*m. + float32 GetReactionTorque(float32 inv_dt) const; + + /// Get the current motor torque given the inverse time step. + /// Unit is N*m. + float32 GetMotorTorque(float32 inv_dt) const; + + /// Dump to b2Log. + void Dump(); + +protected: + + friend class b2Joint; + friend class b2GearJoint; + + b2RevoluteJoint(const b2RevoluteJointDef* def); + + void InitVelocityConstraints(const b2SolverData& data); + void SolveVelocityConstraints(const b2SolverData& data); + bool SolvePositionConstraints(const b2SolverData& data); + + // Solver shared + b2Vec2 m_localAnchorA; + b2Vec2 m_localAnchorB; + b2Vec3 m_impulse; + float32 m_motorImpulse; + + bool m_enableMotor; + float32 m_maxMotorTorque; + float32 m_motorSpeed; + + bool m_enableLimit; + float32 m_referenceAngle; + float32 m_lowerAngle; + float32 m_upperAngle; + + // Solver temp + int32 m_indexA; + int32 m_indexB; + b2Vec2 m_rA; + b2Vec2 m_rB; + b2Vec2 m_localCenterA; + b2Vec2 m_localCenterB; + float32 m_invMassA; + float32 m_invMassB; + float32 m_invIA; + float32 m_invIB; + b2Mat33 m_mass; // effective mass for point-to-point constraint. + float32 m_motorMass; // effective mass for motor/limit angular constraint. + b2LimitState m_limitState; +}; + +inline float32 b2RevoluteJoint::GetMotorSpeed() const +{ + return m_motorSpeed; +} + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2RopeJoint.cpp b/Dependencies/Box2D/src/Dynamics/Joints/b2RopeJoint.cpp new file mode 100644 index 00000000..82c4466d --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2RopeJoint.cpp @@ -0,0 +1,241 @@ +/* +* Copyright (c) 2007-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include + + +// Limit: +// C = norm(pB - pA) - L +// u = (pB - pA) / norm(pB - pA) +// Cdot = dot(u, vB + cross(wB, rB) - vA - cross(wA, rA)) +// J = [-u -cross(rA, u) u cross(rB, u)] +// K = J * invM * JT +// = invMassA + invIA * cross(rA, u)^2 + invMassB + invIB * cross(rB, u)^2 + +b2RopeJoint::b2RopeJoint(const b2RopeJointDef* def) +: b2Joint(def) +{ + m_localAnchorA = def->localAnchorA; + m_localAnchorB = def->localAnchorB; + + m_maxLength = def->maxLength; + + m_mass = 0.0f; + m_impulse = 0.0f; + m_state = e_inactiveLimit; + m_length = 0.0f; +} + +void b2RopeJoint::InitVelocityConstraints(const b2SolverData& data) +{ + m_indexA = m_bodyA->m_islandIndex; + m_indexB = m_bodyB->m_islandIndex; + m_localCenterA = m_bodyA->m_sweep.localCenter; + m_localCenterB = m_bodyB->m_sweep.localCenter; + m_invMassA = m_bodyA->m_invMass; + m_invMassB = m_bodyB->m_invMass; + m_invIA = m_bodyA->m_invI; + m_invIB = m_bodyB->m_invI; + + b2Vec2 cA = data.positions[m_indexA].c; + float32 aA = data.positions[m_indexA].a; + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + + b2Vec2 cB = data.positions[m_indexB].c; + float32 aB = data.positions[m_indexB].a; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + b2Rot qA(aA), qB(aB); + + m_rA = b2Mul(qA, m_localAnchorA - m_localCenterA); + m_rB = b2Mul(qB, m_localAnchorB - m_localCenterB); + m_u = cB + m_rB - cA - m_rA; + + m_length = m_u.Length(); + + float32 C = m_length - m_maxLength; + if (C > 0.0f) + { + m_state = e_atUpperLimit; + } + else + { + m_state = e_inactiveLimit; + } + + if (m_length > b2_linearSlop) + { + m_u *= 1.0f / m_length; + } + else + { + m_u.SetZero(); + m_mass = 0.0f; + m_impulse = 0.0f; + return; + } + + // Compute effective mass. + float32 crA = b2Cross(m_rA, m_u); + float32 crB = b2Cross(m_rB, m_u); + float32 invMass = m_invMassA + m_invIA * crA * crA + m_invMassB + m_invIB * crB * crB; + + m_mass = invMass != 0.0f ? 1.0f / invMass : 0.0f; + + if (data.step.warmStarting) + { + // Scale the impulse to support a variable time step. + m_impulse *= data.step.dtRatio; + + b2Vec2 P = m_impulse * m_u; + vA -= m_invMassA * P; + wA -= m_invIA * b2Cross(m_rA, P); + vB += m_invMassB * P; + wB += m_invIB * b2Cross(m_rB, P); + } + else + { + m_impulse = 0.0f; + } + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +void b2RopeJoint::SolveVelocityConstraints(const b2SolverData& data) +{ + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + // Cdot = dot(u, v + cross(w, r)) + b2Vec2 vpA = vA + b2Cross(wA, m_rA); + b2Vec2 vpB = vB + b2Cross(wB, m_rB); + float32 C = m_length - m_maxLength; + float32 Cdot = b2Dot(m_u, vpB - vpA); + + // Predictive constraint. + if (C < 0.0f) + { + Cdot += data.step.inv_dt * C; + } + + float32 impulse = -m_mass * Cdot; + float32 oldImpulse = m_impulse; + m_impulse = b2Min(0.0f, m_impulse + impulse); + impulse = m_impulse - oldImpulse; + + b2Vec2 P = impulse * m_u; + vA -= m_invMassA * P; + wA -= m_invIA * b2Cross(m_rA, P); + vB += m_invMassB * P; + wB += m_invIB * b2Cross(m_rB, P); + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +bool b2RopeJoint::SolvePositionConstraints(const b2SolverData& data) +{ + b2Vec2 cA = data.positions[m_indexA].c; + float32 aA = data.positions[m_indexA].a; + b2Vec2 cB = data.positions[m_indexB].c; + float32 aB = data.positions[m_indexB].a; + + b2Rot qA(aA), qB(aB); + + b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_localCenterA); + b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_localCenterB); + b2Vec2 u = cB + rB - cA - rA; + + float32 length = u.Normalize(); + float32 C = length - m_maxLength; + + C = b2Clamp(C, 0.0f, b2_maxLinearCorrection); + + float32 impulse = -m_mass * C; + b2Vec2 P = impulse * u; + + cA -= m_invMassA * P; + aA -= m_invIA * b2Cross(rA, P); + cB += m_invMassB * P; + aB += m_invIB * b2Cross(rB, P); + + data.positions[m_indexA].c = cA; + data.positions[m_indexA].a = aA; + data.positions[m_indexB].c = cB; + data.positions[m_indexB].a = aB; + + return length - m_maxLength < b2_linearSlop; +} + +b2Vec2 b2RopeJoint::GetAnchorA() const +{ + return m_bodyA->GetWorldPoint(m_localAnchorA); +} + +b2Vec2 b2RopeJoint::GetAnchorB() const +{ + return m_bodyB->GetWorldPoint(m_localAnchorB); +} + +b2Vec2 b2RopeJoint::GetReactionForce(float32 inv_dt) const +{ + b2Vec2 F = (inv_dt * m_impulse) * m_u; + return F; +} + +float32 b2RopeJoint::GetReactionTorque(float32 inv_dt) const +{ + B2_NOT_USED(inv_dt); + return 0.0f; +} + +float32 b2RopeJoint::GetMaxLength() const +{ + return m_maxLength; +} + +b2LimitState b2RopeJoint::GetLimitState() const +{ + return m_state; +} + +void b2RopeJoint::Dump() +{ + int32 indexA = m_bodyA->m_islandIndex; + int32 indexB = m_bodyB->m_islandIndex; + + b2Log(" b2RopeJointDef jd;\n"); + b2Log(" jd.bodyA = bodies[%d];\n", indexA); + b2Log(" jd.bodyB = bodies[%d];\n", indexB); + b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); + b2Log(" jd.localAnchorA.Set(%.15lef, %.15lef);\n", m_localAnchorA.x, m_localAnchorA.y); + b2Log(" jd.localAnchorB.Set(%.15lef, %.15lef);\n", m_localAnchorB.x, m_localAnchorB.y); + b2Log(" jd.maxLength = %.15lef;\n", m_maxLength); + b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); +} diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2RopeJoint.h b/Dependencies/Box2D/src/Dynamics/Joints/b2RopeJoint.h new file mode 100644 index 00000000..d3b32643 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2RopeJoint.h @@ -0,0 +1,114 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_ROPE_JOINT_H +#define B2_ROPE_JOINT_H + +#include + +/// Rope joint definition. This requires two body anchor points and +/// a maximum lengths. +/// Note: by default the connected objects will not collide. +/// see collideConnected in b2JointDef. +struct b2RopeJointDef : public b2JointDef +{ + b2RopeJointDef() + { + type = e_ropeJoint; + localAnchorA.Set(-1.0f, 0.0f); + localAnchorB.Set(1.0f, 0.0f); + maxLength = 0.0f; + } + + /// The local anchor point relative to bodyA's origin. + b2Vec2 localAnchorA; + + /// The local anchor point relative to bodyB's origin. + b2Vec2 localAnchorB; + + /// The maximum length of the rope. + /// Warning: this must be larger than b2_linearSlop or + /// the joint will have no effect. + float32 maxLength; +}; + +/// A rope joint enforces a maximum distance between two points +/// on two bodies. It has no other effect. +/// Warning: if you attempt to change the maximum length during +/// the simulation you will get some non-physical behavior. +/// A model that would allow you to dynamically modify the length +/// would have some sponginess, so I chose not to implement it +/// that way. See b2DistanceJoint if you want to dynamically +/// control length. +class b2RopeJoint : public b2Joint +{ +public: + b2Vec2 GetAnchorA() const; + b2Vec2 GetAnchorB() const; + + b2Vec2 GetReactionForce(float32 inv_dt) const; + float32 GetReactionTorque(float32 inv_dt) const; + + /// The local anchor point relative to bodyA's origin. + const b2Vec2& GetLocalAnchorA() const { return m_localAnchorA; } + + /// The local anchor point relative to bodyB's origin. + const b2Vec2& GetLocalAnchorB() const { return m_localAnchorB; } + + /// Set/Get the maximum length of the rope. + void SetMaxLength(float32 length) { m_maxLength = length; } + float32 GetMaxLength() const; + + b2LimitState GetLimitState() const; + + /// Dump joint to dmLog + void Dump(); + +protected: + + friend class b2Joint; + b2RopeJoint(const b2RopeJointDef* data); + + void InitVelocityConstraints(const b2SolverData& data); + void SolveVelocityConstraints(const b2SolverData& data); + bool SolvePositionConstraints(const b2SolverData& data); + + // Solver shared + b2Vec2 m_localAnchorA; + b2Vec2 m_localAnchorB; + float32 m_maxLength; + float32 m_length; + float32 m_impulse; + + // Solver temp + int32 m_indexA; + int32 m_indexB; + b2Vec2 m_u; + b2Vec2 m_rA; + b2Vec2 m_rB; + b2Vec2 m_localCenterA; + b2Vec2 m_localCenterB; + float32 m_invMassA; + float32 m_invMassB; + float32 m_invIA; + float32 m_invIB; + float32 m_mass; + b2LimitState m_state; +}; + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2WeldJoint.cpp b/Dependencies/Box2D/src/Dynamics/Joints/b2WeldJoint.cpp new file mode 100644 index 00000000..9b730497 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2WeldJoint.cpp @@ -0,0 +1,344 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include + +// Point-to-point constraint +// C = p2 - p1 +// Cdot = v2 - v1 +// = v2 + cross(w2, r2) - v1 - cross(w1, r1) +// J = [-I -r1_skew I r2_skew ] +// Identity used: +// w k % (rx i + ry j) = w * (-ry i + rx j) + +// Angle constraint +// C = angle2 - angle1 - referenceAngle +// Cdot = w2 - w1 +// J = [0 0 -1 0 0 1] +// K = invI1 + invI2 + +void b2WeldJointDef::Initialize(b2Body* bA, b2Body* bB, const b2Vec2& anchor) +{ + bodyA = bA; + bodyB = bB; + localAnchorA = bodyA->GetLocalPoint(anchor); + localAnchorB = bodyB->GetLocalPoint(anchor); + referenceAngle = bodyB->GetAngle() - bodyA->GetAngle(); +} + +b2WeldJoint::b2WeldJoint(const b2WeldJointDef* def) +: b2Joint(def) +{ + m_localAnchorA = def->localAnchorA; + m_localAnchorB = def->localAnchorB; + m_referenceAngle = def->referenceAngle; + m_frequencyHz = def->frequencyHz; + m_dampingRatio = def->dampingRatio; + + m_impulse.SetZero(); +} + +void b2WeldJoint::InitVelocityConstraints(const b2SolverData& data) +{ + m_indexA = m_bodyA->m_islandIndex; + m_indexB = m_bodyB->m_islandIndex; + m_localCenterA = m_bodyA->m_sweep.localCenter; + m_localCenterB = m_bodyB->m_sweep.localCenter; + m_invMassA = m_bodyA->m_invMass; + m_invMassB = m_bodyB->m_invMass; + m_invIA = m_bodyA->m_invI; + m_invIB = m_bodyB->m_invI; + + float32 aA = data.positions[m_indexA].a; + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + + float32 aB = data.positions[m_indexB].a; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + b2Rot qA(aA), qB(aB); + + m_rA = b2Mul(qA, m_localAnchorA - m_localCenterA); + m_rB = b2Mul(qB, m_localAnchorB - m_localCenterB); + + // J = [-I -r1_skew I r2_skew] + // [ 0 -1 0 1] + // r_skew = [-ry; rx] + + // Matlab + // K = [ mA+r1y^2*iA+mB+r2y^2*iB, -r1y*iA*r1x-r2y*iB*r2x, -r1y*iA-r2y*iB] + // [ -r1y*iA*r1x-r2y*iB*r2x, mA+r1x^2*iA+mB+r2x^2*iB, r1x*iA+r2x*iB] + // [ -r1y*iA-r2y*iB, r1x*iA+r2x*iB, iA+iB] + + float32 mA = m_invMassA, mB = m_invMassB; + float32 iA = m_invIA, iB = m_invIB; + + b2Mat33 K; + K.ex.x = mA + mB + m_rA.y * m_rA.y * iA + m_rB.y * m_rB.y * iB; + K.ey.x = -m_rA.y * m_rA.x * iA - m_rB.y * m_rB.x * iB; + K.ez.x = -m_rA.y * iA - m_rB.y * iB; + K.ex.y = K.ey.x; + K.ey.y = mA + mB + m_rA.x * m_rA.x * iA + m_rB.x * m_rB.x * iB; + K.ez.y = m_rA.x * iA + m_rB.x * iB; + K.ex.z = K.ez.x; + K.ey.z = K.ez.y; + K.ez.z = iA + iB; + + if (m_frequencyHz > 0.0f) + { + K.GetInverse22(&m_mass); + + float32 invM = iA + iB; + float32 m = invM > 0.0f ? 1.0f / invM : 0.0f; + + float32 C = aB - aA - m_referenceAngle; + + // Frequency + float32 omega = 2.0f * b2_pi * m_frequencyHz; + + // Damping coefficient + float32 d = 2.0f * m * m_dampingRatio * omega; + + // Spring stiffness + float32 k = m * omega * omega; + + // magic formulas + float32 h = data.step.dt; + m_gamma = h * (d + h * k); + m_gamma = m_gamma != 0.0f ? 1.0f / m_gamma : 0.0f; + m_bias = C * h * k * m_gamma; + + invM += m_gamma; + m_mass.ez.z = invM != 0.0f ? 1.0f / invM : 0.0f; + } + else if (K.ez.z == 0.0f) + { + K.GetInverse22(&m_mass); + m_gamma = 0.0f; + m_bias = 0.0f; + } + else + { + K.GetSymInverse33(&m_mass); + m_gamma = 0.0f; + m_bias = 0.0f; + } + + if (data.step.warmStarting) + { + // Scale impulses to support a variable time step. + m_impulse *= data.step.dtRatio; + + b2Vec2 P(m_impulse.x, m_impulse.y); + + vA -= mA * P; + wA -= iA * (b2Cross(m_rA, P) + m_impulse.z); + + vB += mB * P; + wB += iB * (b2Cross(m_rB, P) + m_impulse.z); + } + else + { + m_impulse.SetZero(); + } + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +void b2WeldJoint::SolveVelocityConstraints(const b2SolverData& data) +{ + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + float32 mA = m_invMassA, mB = m_invMassB; + float32 iA = m_invIA, iB = m_invIB; + + if (m_frequencyHz > 0.0f) + { + float32 Cdot2 = wB - wA; + + float32 impulse2 = -m_mass.ez.z * (Cdot2 + m_bias + m_gamma * m_impulse.z); + m_impulse.z += impulse2; + + wA -= iA * impulse2; + wB += iB * impulse2; + + b2Vec2 Cdot1 = vB + b2Cross(wB, m_rB) - vA - b2Cross(wA, m_rA); + + b2Vec2 impulse1 = -b2Mul22(m_mass, Cdot1); + m_impulse.x += impulse1.x; + m_impulse.y += impulse1.y; + + b2Vec2 P = impulse1; + + vA -= mA * P; + wA -= iA * b2Cross(m_rA, P); + + vB += mB * P; + wB += iB * b2Cross(m_rB, P); + } + else + { + b2Vec2 Cdot1 = vB + b2Cross(wB, m_rB) - vA - b2Cross(wA, m_rA); + float32 Cdot2 = wB - wA; + b2Vec3 Cdot(Cdot1.x, Cdot1.y, Cdot2); + + b2Vec3 impulse = -b2Mul(m_mass, Cdot); + m_impulse += impulse; + + b2Vec2 P(impulse.x, impulse.y); + + vA -= mA * P; + wA -= iA * (b2Cross(m_rA, P) + impulse.z); + + vB += mB * P; + wB += iB * (b2Cross(m_rB, P) + impulse.z); + } + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +bool b2WeldJoint::SolvePositionConstraints(const b2SolverData& data) +{ + b2Vec2 cA = data.positions[m_indexA].c; + float32 aA = data.positions[m_indexA].a; + b2Vec2 cB = data.positions[m_indexB].c; + float32 aB = data.positions[m_indexB].a; + + b2Rot qA(aA), qB(aB); + + float32 mA = m_invMassA, mB = m_invMassB; + float32 iA = m_invIA, iB = m_invIB; + + b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_localCenterA); + b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_localCenterB); + + float32 positionError, angularError; + + b2Mat33 K; + K.ex.x = mA + mB + rA.y * rA.y * iA + rB.y * rB.y * iB; + K.ey.x = -rA.y * rA.x * iA - rB.y * rB.x * iB; + K.ez.x = -rA.y * iA - rB.y * iB; + K.ex.y = K.ey.x; + K.ey.y = mA + mB + rA.x * rA.x * iA + rB.x * rB.x * iB; + K.ez.y = rA.x * iA + rB.x * iB; + K.ex.z = K.ez.x; + K.ey.z = K.ez.y; + K.ez.z = iA + iB; + + if (m_frequencyHz > 0.0f) + { + b2Vec2 C1 = cB + rB - cA - rA; + + positionError = C1.Length(); + angularError = 0.0f; + + b2Vec2 P = -K.Solve22(C1); + + cA -= mA * P; + aA -= iA * b2Cross(rA, P); + + cB += mB * P; + aB += iB * b2Cross(rB, P); + } + else + { + b2Vec2 C1 = cB + rB - cA - rA; + float32 C2 = aB - aA - m_referenceAngle; + + positionError = C1.Length(); + angularError = b2Abs(C2); + + b2Vec3 C(C1.x, C1.y, C2); + + b2Vec3 impulse; + if (K.ez.z > 0.0f) + { + impulse = -K.Solve33(C); + } + else + { + b2Vec2 impulse2 = -K.Solve22(C1); + impulse.Set(impulse2.x, impulse2.y, 0.0f); + } + + b2Vec2 P(impulse.x, impulse.y); + + cA -= mA * P; + aA -= iA * (b2Cross(rA, P) + impulse.z); + + cB += mB * P; + aB += iB * (b2Cross(rB, P) + impulse.z); + } + + data.positions[m_indexA].c = cA; + data.positions[m_indexA].a = aA; + data.positions[m_indexB].c = cB; + data.positions[m_indexB].a = aB; + + return positionError <= b2_linearSlop && angularError <= b2_angularSlop; +} + +b2Vec2 b2WeldJoint::GetAnchorA() const +{ + return m_bodyA->GetWorldPoint(m_localAnchorA); +} + +b2Vec2 b2WeldJoint::GetAnchorB() const +{ + return m_bodyB->GetWorldPoint(m_localAnchorB); +} + +b2Vec2 b2WeldJoint::GetReactionForce(float32 inv_dt) const +{ + b2Vec2 P(m_impulse.x, m_impulse.y); + return inv_dt * P; +} + +float32 b2WeldJoint::GetReactionTorque(float32 inv_dt) const +{ + return inv_dt * m_impulse.z; +} + +void b2WeldJoint::Dump() +{ + int32 indexA = m_bodyA->m_islandIndex; + int32 indexB = m_bodyB->m_islandIndex; + + b2Log(" b2WeldJointDef jd;\n"); + b2Log(" jd.bodyA = bodies[%d];\n", indexA); + b2Log(" jd.bodyB = bodies[%d];\n", indexB); + b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); + b2Log(" jd.localAnchorA.Set(%.15lef, %.15lef);\n", m_localAnchorA.x, m_localAnchorA.y); + b2Log(" jd.localAnchorB.Set(%.15lef, %.15lef);\n", m_localAnchorB.x, m_localAnchorB.y); + b2Log(" jd.referenceAngle = %.15lef;\n", m_referenceAngle); + b2Log(" jd.frequencyHz = %.15lef;\n", m_frequencyHz); + b2Log(" jd.dampingRatio = %.15lef;\n", m_dampingRatio); + b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); +} diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2WeldJoint.h b/Dependencies/Box2D/src/Dynamics/Joints/b2WeldJoint.h new file mode 100644 index 00000000..5b7670b2 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2WeldJoint.h @@ -0,0 +1,126 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_WELD_JOINT_H +#define B2_WELD_JOINT_H + +#include + +/// Weld joint definition. You need to specify local anchor points +/// where they are attached and the relative body angle. The position +/// of the anchor points is important for computing the reaction torque. +struct b2WeldJointDef : public b2JointDef +{ + b2WeldJointDef() + { + type = e_weldJoint; + localAnchorA.Set(0.0f, 0.0f); + localAnchorB.Set(0.0f, 0.0f); + referenceAngle = 0.0f; + frequencyHz = 0.0f; + dampingRatio = 0.0f; + } + + /// Initialize the bodies, anchors, and reference angle using a world + /// anchor point. + void Initialize(b2Body* bodyA, b2Body* bodyB, const b2Vec2& anchor); + + /// The local anchor point relative to bodyA's origin. + b2Vec2 localAnchorA; + + /// The local anchor point relative to bodyB's origin. + b2Vec2 localAnchorB; + + /// The bodyB angle minus bodyA angle in the reference state (radians). + float32 referenceAngle; + + /// The mass-spring-damper frequency in Hertz. Rotation only. + /// Disable softness with a value of 0. + float32 frequencyHz; + + /// The damping ratio. 0 = no damping, 1 = critical damping. + float32 dampingRatio; +}; + +/// A weld joint essentially glues two bodies together. A weld joint may +/// distort somewhat because the island constraint solver is approximate. +class b2WeldJoint : public b2Joint +{ +public: + b2Vec2 GetAnchorA() const; + b2Vec2 GetAnchorB() const; + + b2Vec2 GetReactionForce(float32 inv_dt) const; + float32 GetReactionTorque(float32 inv_dt) const; + + /// The local anchor point relative to bodyA's origin. + const b2Vec2& GetLocalAnchorA() const { return m_localAnchorA; } + + /// The local anchor point relative to bodyB's origin. + const b2Vec2& GetLocalAnchorB() const { return m_localAnchorB; } + + /// Get the reference angle. + float32 GetReferenceAngle() const { return m_referenceAngle; } + + /// Set/get frequency in Hz. + void SetFrequency(float32 hz) { m_frequencyHz = hz; } + float32 GetFrequency() const { return m_frequencyHz; } + + /// Set/get damping ratio. + void SetDampingRatio(float32 ratio) { m_dampingRatio = ratio; } + float32 GetDampingRatio() const { return m_dampingRatio; } + + /// Dump to b2Log + void Dump(); + +protected: + + friend class b2Joint; + + b2WeldJoint(const b2WeldJointDef* def); + + void InitVelocityConstraints(const b2SolverData& data); + void SolveVelocityConstraints(const b2SolverData& data); + bool SolvePositionConstraints(const b2SolverData& data); + + float32 m_frequencyHz; + float32 m_dampingRatio; + float32 m_bias; + + // Solver shared + b2Vec2 m_localAnchorA; + b2Vec2 m_localAnchorB; + float32 m_referenceAngle; + float32 m_gamma; + b2Vec3 m_impulse; + + // Solver temp + int32 m_indexA; + int32 m_indexB; + b2Vec2 m_rA; + b2Vec2 m_rB; + b2Vec2 m_localCenterA; + b2Vec2 m_localCenterB; + float32 m_invMassA; + float32 m_invMassB; + float32 m_invIA; + float32 m_invIB; + b2Mat33 m_mass; +}; + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2WheelJoint.cpp b/Dependencies/Box2D/src/Dynamics/Joints/b2WheelJoint.cpp new file mode 100644 index 00000000..fc74d703 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2WheelJoint.cpp @@ -0,0 +1,419 @@ +/* +* Copyright (c) 2006-2007 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include + +// Linear constraint (point-to-line) +// d = pB - pA = xB + rB - xA - rA +// C = dot(ay, d) +// Cdot = dot(d, cross(wA, ay)) + dot(ay, vB + cross(wB, rB) - vA - cross(wA, rA)) +// = -dot(ay, vA) - dot(cross(d + rA, ay), wA) + dot(ay, vB) + dot(cross(rB, ay), vB) +// J = [-ay, -cross(d + rA, ay), ay, cross(rB, ay)] + +// Spring linear constraint +// C = dot(ax, d) +// Cdot = = -dot(ax, vA) - dot(cross(d + rA, ax), wA) + dot(ax, vB) + dot(cross(rB, ax), vB) +// J = [-ax -cross(d+rA, ax) ax cross(rB, ax)] + +// Motor rotational constraint +// Cdot = wB - wA +// J = [0 0 -1 0 0 1] + +void b2WheelJointDef::Initialize(b2Body* bA, b2Body* bB, const b2Vec2& anchor, const b2Vec2& axis) +{ + bodyA = bA; + bodyB = bB; + localAnchorA = bodyA->GetLocalPoint(anchor); + localAnchorB = bodyB->GetLocalPoint(anchor); + localAxisA = bodyA->GetLocalVector(axis); +} + +b2WheelJoint::b2WheelJoint(const b2WheelJointDef* def) +: b2Joint(def) +{ + m_localAnchorA = def->localAnchorA; + m_localAnchorB = def->localAnchorB; + m_localXAxisA = def->localAxisA; + m_localYAxisA = b2Cross(1.0f, m_localXAxisA); + + m_mass = 0.0f; + m_impulse = 0.0f; + m_motorMass = 0.0f; + m_motorImpulse = 0.0f; + m_springMass = 0.0f; + m_springImpulse = 0.0f; + + m_maxMotorTorque = def->maxMotorTorque; + m_motorSpeed = def->motorSpeed; + m_enableMotor = def->enableMotor; + + m_frequencyHz = def->frequencyHz; + m_dampingRatio = def->dampingRatio; + + m_bias = 0.0f; + m_gamma = 0.0f; + + m_ax.SetZero(); + m_ay.SetZero(); +} + +void b2WheelJoint::InitVelocityConstraints(const b2SolverData& data) +{ + m_indexA = m_bodyA->m_islandIndex; + m_indexB = m_bodyB->m_islandIndex; + m_localCenterA = m_bodyA->m_sweep.localCenter; + m_localCenterB = m_bodyB->m_sweep.localCenter; + m_invMassA = m_bodyA->m_invMass; + m_invMassB = m_bodyB->m_invMass; + m_invIA = m_bodyA->m_invI; + m_invIB = m_bodyB->m_invI; + + float32 mA = m_invMassA, mB = m_invMassB; + float32 iA = m_invIA, iB = m_invIB; + + b2Vec2 cA = data.positions[m_indexA].c; + float32 aA = data.positions[m_indexA].a; + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + + b2Vec2 cB = data.positions[m_indexB].c; + float32 aB = data.positions[m_indexB].a; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + b2Rot qA(aA), qB(aB); + + // Compute the effective masses. + b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_localCenterA); + b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_localCenterB); + b2Vec2 d = cB + rB - cA - rA; + + // Point to line constraint + { + m_ay = b2Mul(qA, m_localYAxisA); + m_sAy = b2Cross(d + rA, m_ay); + m_sBy = b2Cross(rB, m_ay); + + m_mass = mA + mB + iA * m_sAy * m_sAy + iB * m_sBy * m_sBy; + + if (m_mass > 0.0f) + { + m_mass = 1.0f / m_mass; + } + } + + // Spring constraint + m_springMass = 0.0f; + m_bias = 0.0f; + m_gamma = 0.0f; + if (m_frequencyHz > 0.0f) + { + m_ax = b2Mul(qA, m_localXAxisA); + m_sAx = b2Cross(d + rA, m_ax); + m_sBx = b2Cross(rB, m_ax); + + float32 invMass = mA + mB + iA * m_sAx * m_sAx + iB * m_sBx * m_sBx; + + if (invMass > 0.0f) + { + m_springMass = 1.0f / invMass; + + float32 C = b2Dot(d, m_ax); + + // Frequency + float32 omega = 2.0f * b2_pi * m_frequencyHz; + + // Damping coefficient + float32 d = 2.0f * m_springMass * m_dampingRatio * omega; + + // Spring stiffness + float32 k = m_springMass * omega * omega; + + // magic formulas + float32 h = data.step.dt; + m_gamma = h * (d + h * k); + if (m_gamma > 0.0f) + { + m_gamma = 1.0f / m_gamma; + } + + m_bias = C * h * k * m_gamma; + + m_springMass = invMass + m_gamma; + if (m_springMass > 0.0f) + { + m_springMass = 1.0f / m_springMass; + } + } + } + else + { + m_springImpulse = 0.0f; + } + + // Rotational motor + if (m_enableMotor) + { + m_motorMass = iA + iB; + if (m_motorMass > 0.0f) + { + m_motorMass = 1.0f / m_motorMass; + } + } + else + { + m_motorMass = 0.0f; + m_motorImpulse = 0.0f; + } + + if (data.step.warmStarting) + { + // Account for variable time step. + m_impulse *= data.step.dtRatio; + m_springImpulse *= data.step.dtRatio; + m_motorImpulse *= data.step.dtRatio; + + b2Vec2 P = m_impulse * m_ay + m_springImpulse * m_ax; + float32 LA = m_impulse * m_sAy + m_springImpulse * m_sAx + m_motorImpulse; + float32 LB = m_impulse * m_sBy + m_springImpulse * m_sBx + m_motorImpulse; + + vA -= m_invMassA * P; + wA -= m_invIA * LA; + + vB += m_invMassB * P; + wB += m_invIB * LB; + } + else + { + m_impulse = 0.0f; + m_springImpulse = 0.0f; + m_motorImpulse = 0.0f; + } + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +void b2WheelJoint::SolveVelocityConstraints(const b2SolverData& data) +{ + float32 mA = m_invMassA, mB = m_invMassB; + float32 iA = m_invIA, iB = m_invIB; + + b2Vec2 vA = data.velocities[m_indexA].v; + float32 wA = data.velocities[m_indexA].w; + b2Vec2 vB = data.velocities[m_indexB].v; + float32 wB = data.velocities[m_indexB].w; + + // Solve spring constraint + { + float32 Cdot = b2Dot(m_ax, vB - vA) + m_sBx * wB - m_sAx * wA; + float32 impulse = -m_springMass * (Cdot + m_bias + m_gamma * m_springImpulse); + m_springImpulse += impulse; + + b2Vec2 P = impulse * m_ax; + float32 LA = impulse * m_sAx; + float32 LB = impulse * m_sBx; + + vA -= mA * P; + wA -= iA * LA; + + vB += mB * P; + wB += iB * LB; + } + + // Solve rotational motor constraint + { + float32 Cdot = wB - wA - m_motorSpeed; + float32 impulse = -m_motorMass * Cdot; + + float32 oldImpulse = m_motorImpulse; + float32 maxImpulse = data.step.dt * m_maxMotorTorque; + m_motorImpulse = b2Clamp(m_motorImpulse + impulse, -maxImpulse, maxImpulse); + impulse = m_motorImpulse - oldImpulse; + + wA -= iA * impulse; + wB += iB * impulse; + } + + // Solve point to line constraint + { + float32 Cdot = b2Dot(m_ay, vB - vA) + m_sBy * wB - m_sAy * wA; + float32 impulse = -m_mass * Cdot; + m_impulse += impulse; + + b2Vec2 P = impulse * m_ay; + float32 LA = impulse * m_sAy; + float32 LB = impulse * m_sBy; + + vA -= mA * P; + wA -= iA * LA; + + vB += mB * P; + wB += iB * LB; + } + + data.velocities[m_indexA].v = vA; + data.velocities[m_indexA].w = wA; + data.velocities[m_indexB].v = vB; + data.velocities[m_indexB].w = wB; +} + +bool b2WheelJoint::SolvePositionConstraints(const b2SolverData& data) +{ + b2Vec2 cA = data.positions[m_indexA].c; + float32 aA = data.positions[m_indexA].a; + b2Vec2 cB = data.positions[m_indexB].c; + float32 aB = data.positions[m_indexB].a; + + b2Rot qA(aA), qB(aB); + + b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_localCenterA); + b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_localCenterB); + b2Vec2 d = (cB - cA) + rB - rA; + + b2Vec2 ay = b2Mul(qA, m_localYAxisA); + + float32 sAy = b2Cross(d + rA, ay); + float32 sBy = b2Cross(rB, ay); + + float32 C = b2Dot(d, ay); + + float32 k = m_invMassA + m_invMassB + m_invIA * m_sAy * m_sAy + m_invIB * m_sBy * m_sBy; + + float32 impulse; + if (k != 0.0f) + { + impulse = - C / k; + } + else + { + impulse = 0.0f; + } + + b2Vec2 P = impulse * ay; + float32 LA = impulse * sAy; + float32 LB = impulse * sBy; + + cA -= m_invMassA * P; + aA -= m_invIA * LA; + cB += m_invMassB * P; + aB += m_invIB * LB; + + data.positions[m_indexA].c = cA; + data.positions[m_indexA].a = aA; + data.positions[m_indexB].c = cB; + data.positions[m_indexB].a = aB; + + return b2Abs(C) <= b2_linearSlop; +} + +b2Vec2 b2WheelJoint::GetAnchorA() const +{ + return m_bodyA->GetWorldPoint(m_localAnchorA); +} + +b2Vec2 b2WheelJoint::GetAnchorB() const +{ + return m_bodyB->GetWorldPoint(m_localAnchorB); +} + +b2Vec2 b2WheelJoint::GetReactionForce(float32 inv_dt) const +{ + return inv_dt * (m_impulse * m_ay + m_springImpulse * m_ax); +} + +float32 b2WheelJoint::GetReactionTorque(float32 inv_dt) const +{ + return inv_dt * m_motorImpulse; +} + +float32 b2WheelJoint::GetJointTranslation() const +{ + b2Body* bA = m_bodyA; + b2Body* bB = m_bodyB; + + b2Vec2 pA = bA->GetWorldPoint(m_localAnchorA); + b2Vec2 pB = bB->GetWorldPoint(m_localAnchorB); + b2Vec2 d = pB - pA; + b2Vec2 axis = bA->GetWorldVector(m_localXAxisA); + + float32 translation = b2Dot(d, axis); + return translation; +} + +float32 b2WheelJoint::GetJointSpeed() const +{ + float32 wA = m_bodyA->m_angularVelocity; + float32 wB = m_bodyB->m_angularVelocity; + return wB - wA; +} + +bool b2WheelJoint::IsMotorEnabled() const +{ + return m_enableMotor; +} + +void b2WheelJoint::EnableMotor(bool flag) +{ + m_bodyA->SetAwake(true); + m_bodyB->SetAwake(true); + m_enableMotor = flag; +} + +void b2WheelJoint::SetMotorSpeed(float32 speed) +{ + m_bodyA->SetAwake(true); + m_bodyB->SetAwake(true); + m_motorSpeed = speed; +} + +void b2WheelJoint::SetMaxMotorTorque(float32 torque) +{ + m_bodyA->SetAwake(true); + m_bodyB->SetAwake(true); + m_maxMotorTorque = torque; +} + +float32 b2WheelJoint::GetMotorTorque(float32 inv_dt) const +{ + return inv_dt * m_motorImpulse; +} + +void b2WheelJoint::Dump() +{ + int32 indexA = m_bodyA->m_islandIndex; + int32 indexB = m_bodyB->m_islandIndex; + + b2Log(" b2WheelJointDef jd;\n"); + b2Log(" jd.bodyA = bodies[%d];\n", indexA); + b2Log(" jd.bodyB = bodies[%d];\n", indexB); + b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); + b2Log(" jd.localAnchorA.Set(%.15lef, %.15lef);\n", m_localAnchorA.x, m_localAnchorA.y); + b2Log(" jd.localAnchorB.Set(%.15lef, %.15lef);\n", m_localAnchorB.x, m_localAnchorB.y); + b2Log(" jd.localAxisA.Set(%.15lef, %.15lef);\n", m_localXAxisA.x, m_localXAxisA.y); + b2Log(" jd.enableMotor = bool(%d);\n", m_enableMotor); + b2Log(" jd.motorSpeed = %.15lef;\n", m_motorSpeed); + b2Log(" jd.maxMotorTorque = %.15lef;\n", m_maxMotorTorque); + b2Log(" jd.frequencyHz = %.15lef;\n", m_frequencyHz); + b2Log(" jd.dampingRatio = %.15lef;\n", m_dampingRatio); + b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); +} diff --git a/Dependencies/Box2D/src/Dynamics/Joints/b2WheelJoint.h b/Dependencies/Box2D/src/Dynamics/Joints/b2WheelJoint.h new file mode 100644 index 00000000..daf2becc --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/Joints/b2WheelJoint.h @@ -0,0 +1,210 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_WHEEL_JOINT_H +#define B2_WHEEL_JOINT_H + +#include + +/// Wheel joint definition. This requires defining a line of +/// motion using an axis and an anchor point. The definition uses local +/// anchor points and a local axis so that the initial configuration +/// can violate the constraint slightly. The joint translation is zero +/// when the local anchor points coincide in world space. Using local +/// anchors and a local axis helps when saving and loading a game. +struct b2WheelJointDef : public b2JointDef +{ + b2WheelJointDef() + { + type = e_wheelJoint; + localAnchorA.SetZero(); + localAnchorB.SetZero(); + localAxisA.Set(1.0f, 0.0f); + enableMotor = false; + maxMotorTorque = 0.0f; + motorSpeed = 0.0f; + frequencyHz = 2.0f; + dampingRatio = 0.7f; + } + + /// Initialize the bodies, anchors, axis, and reference angle using the world + /// anchor and world axis. + void Initialize(b2Body* bodyA, b2Body* bodyB, const b2Vec2& anchor, const b2Vec2& axis); + + /// The local anchor point relative to bodyA's origin. + b2Vec2 localAnchorA; + + /// The local anchor point relative to bodyB's origin. + b2Vec2 localAnchorB; + + /// The local translation axis in bodyA. + b2Vec2 localAxisA; + + /// Enable/disable the joint motor. + bool enableMotor; + + /// The maximum motor torque, usually in N-m. + float32 maxMotorTorque; + + /// The desired motor speed in radians per second. + float32 motorSpeed; + + /// Suspension frequency, zero indicates no suspension + float32 frequencyHz; + + /// Suspension damping ratio, one indicates critical damping + float32 dampingRatio; +}; + +/// A wheel joint. This joint provides two degrees of freedom: translation +/// along an axis fixed in bodyA and rotation in the plane. In other words, it is a point to +/// line constraint with a rotational motor and a linear spring/damper. +/// This joint is designed for vehicle suspensions. +class b2WheelJoint : public b2Joint +{ +public: + b2Vec2 GetAnchorA() const; + b2Vec2 GetAnchorB() const; + + b2Vec2 GetReactionForce(float32 inv_dt) const; + float32 GetReactionTorque(float32 inv_dt) const; + + /// The local anchor point relative to bodyA's origin. + const b2Vec2& GetLocalAnchorA() const { return m_localAnchorA; } + + /// The local anchor point relative to bodyB's origin. + const b2Vec2& GetLocalAnchorB() const { return m_localAnchorB; } + + /// The local joint axis relative to bodyA. + const b2Vec2& GetLocalAxisA() const { return m_localXAxisA; } + + /// Get the current joint translation, usually in meters. + float32 GetJointTranslation() const; + + /// Get the current joint translation speed, usually in meters per second. + float32 GetJointSpeed() const; + + /// Is the joint motor enabled? + bool IsMotorEnabled() const; + + /// Enable/disable the joint motor. + void EnableMotor(bool flag); + + /// Set the motor speed, usually in radians per second. + void SetMotorSpeed(float32 speed); + + /// Get the motor speed, usually in radians per second. + float32 GetMotorSpeed() const; + + /// Set/Get the maximum motor force, usually in N-m. + void SetMaxMotorTorque(float32 torque); + float32 GetMaxMotorTorque() const; + + /// Get the current motor torque given the inverse time step, usually in N-m. + float32 GetMotorTorque(float32 inv_dt) const; + + /// Set/Get the spring frequency in hertz. Setting the frequency to zero disables the spring. + void SetSpringFrequencyHz(float32 hz); + float32 GetSpringFrequencyHz() const; + + /// Set/Get the spring damping ratio + void SetSpringDampingRatio(float32 ratio); + float32 GetSpringDampingRatio() const; + + /// Dump to b2Log + void Dump(); + +protected: + + friend class b2Joint; + b2WheelJoint(const b2WheelJointDef* def); + + void InitVelocityConstraints(const b2SolverData& data); + void SolveVelocityConstraints(const b2SolverData& data); + bool SolvePositionConstraints(const b2SolverData& data); + + float32 m_frequencyHz; + float32 m_dampingRatio; + + // Solver shared + b2Vec2 m_localAnchorA; + b2Vec2 m_localAnchorB; + b2Vec2 m_localXAxisA; + b2Vec2 m_localYAxisA; + + float32 m_impulse; + float32 m_motorImpulse; + float32 m_springImpulse; + + float32 m_maxMotorTorque; + float32 m_motorSpeed; + bool m_enableMotor; + + // Solver temp + int32 m_indexA; + int32 m_indexB; + b2Vec2 m_localCenterA; + b2Vec2 m_localCenterB; + float32 m_invMassA; + float32 m_invMassB; + float32 m_invIA; + float32 m_invIB; + + b2Vec2 m_ax, m_ay; + float32 m_sAx, m_sBx; + float32 m_sAy, m_sBy; + + float32 m_mass; + float32 m_motorMass; + float32 m_springMass; + + float32 m_bias; + float32 m_gamma; +}; + +inline float32 b2WheelJoint::GetMotorSpeed() const +{ + return m_motorSpeed; +} + +inline float32 b2WheelJoint::GetMaxMotorTorque() const +{ + return m_maxMotorTorque; +} + +inline void b2WheelJoint::SetSpringFrequencyHz(float32 hz) +{ + m_frequencyHz = hz; +} + +inline float32 b2WheelJoint::GetSpringFrequencyHz() const +{ + return m_frequencyHz; +} + +inline void b2WheelJoint::SetSpringDampingRatio(float32 ratio) +{ + m_dampingRatio = ratio; +} + +inline float32 b2WheelJoint::GetSpringDampingRatio() const +{ + return m_dampingRatio; +} + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/b2Body.cpp b/Dependencies/Box2D/src/Dynamics/b2Body.cpp new file mode 100644 index 00000000..cb266e35 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/b2Body.cpp @@ -0,0 +1,549 @@ +/* +* Copyright (c) 2006-2007 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include +#include +#include + +b2Body::b2Body(const b2BodyDef* bd, b2World* world) +{ + b2Assert(bd->position.IsValid()); + b2Assert(bd->linearVelocity.IsValid()); + b2Assert(b2IsValid(bd->angle)); + b2Assert(b2IsValid(bd->angularVelocity)); + b2Assert(b2IsValid(bd->angularDamping) && bd->angularDamping >= 0.0f); + b2Assert(b2IsValid(bd->linearDamping) && bd->linearDamping >= 0.0f); + + m_flags = 0; + + if (bd->bullet) + { + m_flags |= e_bulletFlag; + } + if (bd->fixedRotation) + { + m_flags |= e_fixedRotationFlag; + } + if (bd->allowSleep) + { + m_flags |= e_autoSleepFlag; + } + if (bd->awake) + { + m_flags |= e_awakeFlag; + } + if (bd->active) + { + m_flags |= e_activeFlag; + } + + m_world = world; + + m_xf.p = bd->position; + m_xf.q.Set(bd->angle); + + m_sweep.localCenter.SetZero(); + m_sweep.c0 = m_xf.p; + m_sweep.c = m_xf.p; + m_sweep.a0 = bd->angle; + m_sweep.a = bd->angle; + m_sweep.alpha0 = 0.0f; + + m_jointList = NULL; + m_contactList = NULL; + m_prev = NULL; + m_next = NULL; + + m_linearVelocity = bd->linearVelocity; + m_angularVelocity = bd->angularVelocity; + + m_linearDamping = bd->linearDamping; + m_angularDamping = bd->angularDamping; + m_gravityScale = bd->gravityScale; + + m_force.SetZero(); + m_torque = 0.0f; + + m_sleepTime = 0.0f; + + m_type = bd->type; + + if (m_type == b2_dynamicBody) + { + m_mass = 1.0f; + m_invMass = 1.0f; + } + else + { + m_mass = 0.0f; + m_invMass = 0.0f; + } + + m_I = 0.0f; + m_invI = 0.0f; + + m_userData = bd->userData; + + m_fixtureList = NULL; + m_fixtureCount = 0; +} + +b2Body::~b2Body() +{ + // shapes and joints are destroyed in b2World::Destroy +} + +void b2Body::SetType(b2BodyType type) +{ + b2Assert(m_world->IsLocked() == false); + if (m_world->IsLocked() == true) + { + return; + } + + if (m_type == type) + { + return; + } + + m_type = type; + + ResetMassData(); + + if (m_type == b2_staticBody) + { + m_linearVelocity.SetZero(); + m_angularVelocity = 0.0f; + m_sweep.a0 = m_sweep.a; + m_sweep.c0 = m_sweep.c; + SynchronizeFixtures(); + } + + SetAwake(true); + + m_force.SetZero(); + m_torque = 0.0f; + + // Delete the attached contacts. + b2ContactEdge* ce = m_contactList; + while (ce) + { + b2ContactEdge* ce0 = ce; + ce = ce->next; + m_world->m_contactManager.Destroy(ce0->contact); + } + m_contactList = NULL; + + // Touch the proxies so that new contacts will be created (when appropriate) + b2BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase; + for (b2Fixture* f = m_fixtureList; f; f = f->m_next) + { + int32 proxyCount = f->m_proxyCount; + for (int32 i = 0; i < proxyCount; ++i) + { + broadPhase->TouchProxy(f->m_proxies[i].proxyId); + } + } +} + +b2Fixture* b2Body::CreateFixture(const b2FixtureDef* def) +{ + b2Assert(m_world->IsLocked() == false); + if (m_world->IsLocked() == true) + { + return NULL; + } + + b2BlockAllocator* allocator = &m_world->m_blockAllocator; + + void* memory = allocator->Allocate(sizeof(b2Fixture)); + b2Fixture* fixture = new (memory) b2Fixture; + fixture->Create(allocator, this, def); + + if (m_flags & e_activeFlag) + { + b2BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase; + fixture->CreateProxies(broadPhase, m_xf); + } + + fixture->m_next = m_fixtureList; + m_fixtureList = fixture; + ++m_fixtureCount; + + fixture->m_body = this; + + // Adjust mass properties if needed. + if (fixture->m_density > 0.0f) + { + ResetMassData(); + } + + // Let the world know we have a new fixture. This will cause new contacts + // to be created at the beginning of the next time step. + m_world->m_flags |= b2World::e_newFixture; + + return fixture; +} + +b2Fixture* b2Body::CreateFixture(const b2Shape* shape, float32 density) +{ + b2FixtureDef def; + def.shape = shape; + def.density = density; + + return CreateFixture(&def); +} + +void b2Body::DestroyFixture(b2Fixture* fixture) +{ + b2Assert(m_world->IsLocked() == false); + if (m_world->IsLocked() == true) + { + return; + } + + b2Assert(fixture->m_body == this); + + // Remove the fixture from this body's singly linked list. + b2Assert(m_fixtureCount > 0); + b2Fixture** node = &m_fixtureList; + bool found = false; + while (*node != NULL) + { + if (*node == fixture) + { + *node = fixture->m_next; + found = true; + break; + } + + node = &(*node)->m_next; + } + + // You tried to remove a shape that is not attached to this body. + b2Assert(found); + + // Destroy any contacts associated with the fixture. + b2ContactEdge* edge = m_contactList; + while (edge) + { + b2Contact* c = edge->contact; + edge = edge->next; + + b2Fixture* fixtureA = c->GetFixtureA(); + b2Fixture* fixtureB = c->GetFixtureB(); + + if (fixture == fixtureA || fixture == fixtureB) + { + // This destroys the contact and removes it from + // this body's contact list. + m_world->m_contactManager.Destroy(c); + } + } + + b2BlockAllocator* allocator = &m_world->m_blockAllocator; + + if (m_flags & e_activeFlag) + { + b2BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase; + fixture->DestroyProxies(broadPhase); + } + + fixture->Destroy(allocator); + fixture->m_body = NULL; + fixture->m_next = NULL; + fixture->~b2Fixture(); + allocator->Free(fixture, sizeof(b2Fixture)); + + --m_fixtureCount; + + // Reset the mass data. + ResetMassData(); +} + +void b2Body::ResetMassData() +{ + // Compute mass data from shapes. Each shape has its own density. + m_mass = 0.0f; + m_invMass = 0.0f; + m_I = 0.0f; + m_invI = 0.0f; + m_sweep.localCenter.SetZero(); + + // Static and kinematic bodies have zero mass. + if (m_type == b2_staticBody || m_type == b2_kinematicBody) + { + m_sweep.c0 = m_xf.p; + m_sweep.c = m_xf.p; + m_sweep.a0 = m_sweep.a; + return; + } + + b2Assert(m_type == b2_dynamicBody); + + // Accumulate mass over all fixtures. + b2Vec2 localCenter = b2Vec2_zero; + for (b2Fixture* f = m_fixtureList; f; f = f->m_next) + { + if (f->m_density == 0.0f) + { + continue; + } + + b2MassData massData; + f->GetMassData(&massData); + m_mass += massData.mass; + localCenter += massData.mass * massData.center; + m_I += massData.I; + } + + // Compute center of mass. + if (m_mass > 0.0f) + { + m_invMass = 1.0f / m_mass; + localCenter *= m_invMass; + } + else + { + // Force all dynamic bodies to have a positive mass. + m_mass = 1.0f; + m_invMass = 1.0f; + } + + if (m_I > 0.0f && (m_flags & e_fixedRotationFlag) == 0) + { + // Center the inertia about the center of mass. + m_I -= m_mass * b2Dot(localCenter, localCenter); + b2Assert(m_I > 0.0f); + m_invI = 1.0f / m_I; + + } + else + { + m_I = 0.0f; + m_invI = 0.0f; + } + + // Move center of mass. + b2Vec2 oldCenter = m_sweep.c; + m_sweep.localCenter = localCenter; + m_sweep.c0 = m_sweep.c = b2Mul(m_xf, m_sweep.localCenter); + + // Update center of mass velocity. + m_linearVelocity += b2Cross(m_angularVelocity, m_sweep.c - oldCenter); +} + +void b2Body::SetMassData(const b2MassData* massData) +{ + b2Assert(m_world->IsLocked() == false); + if (m_world->IsLocked() == true) + { + return; + } + + if (m_type != b2_dynamicBody) + { + return; + } + + m_invMass = 0.0f; + m_I = 0.0f; + m_invI = 0.0f; + + m_mass = massData->mass; + if (m_mass <= 0.0f) + { + m_mass = 1.0f; + } + + m_invMass = 1.0f / m_mass; + + if (massData->I > 0.0f && (m_flags & b2Body::e_fixedRotationFlag) == 0) + { + m_I = massData->I - m_mass * b2Dot(massData->center, massData->center); + b2Assert(m_I > 0.0f); + m_invI = 1.0f / m_I; + } + + // Move center of mass. + b2Vec2 oldCenter = m_sweep.c; + m_sweep.localCenter = massData->center; + m_sweep.c0 = m_sweep.c = b2Mul(m_xf, m_sweep.localCenter); + + // Update center of mass velocity. + m_linearVelocity += b2Cross(m_angularVelocity, m_sweep.c - oldCenter); +} + +bool b2Body::ShouldCollide(const b2Body* other) const +{ + // At least one body should be dynamic. + if (m_type != b2_dynamicBody && other->m_type != b2_dynamicBody) + { + return false; + } + + // Does a joint prevent collision? + for (b2JointEdge* jn = m_jointList; jn; jn = jn->next) + { + if (jn->other == other) + { + if (jn->joint->m_collideConnected == false) + { + return false; + } + } + } + + return true; +} + +void b2Body::SetTransform(const b2Vec2& position, float32 angle) +{ + b2Assert(m_world->IsLocked() == false); + if (m_world->IsLocked() == true) + { + return; + } + + m_xf.q.Set(angle); + m_xf.p = position; + + m_sweep.c = b2Mul(m_xf, m_sweep.localCenter); + m_sweep.a = angle; + + m_sweep.c0 = m_sweep.c; + m_sweep.a0 = angle; + + b2BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase; + for (b2Fixture* f = m_fixtureList; f; f = f->m_next) + { + f->Synchronize(broadPhase, m_xf, m_xf); + } +} + +void b2Body::SynchronizeFixtures() +{ + b2Transform xf1; + xf1.q.Set(m_sweep.a0); + xf1.p = m_sweep.c0 - b2Mul(xf1.q, m_sweep.localCenter); + + b2BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase; + for (b2Fixture* f = m_fixtureList; f; f = f->m_next) + { + f->Synchronize(broadPhase, xf1, m_xf); + } +} + +void b2Body::SetActive(bool flag) +{ + b2Assert(m_world->IsLocked() == false); + + if (flag == IsActive()) + { + return; + } + + if (flag) + { + m_flags |= e_activeFlag; + + // Create all proxies. + b2BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase; + for (b2Fixture* f = m_fixtureList; f; f = f->m_next) + { + f->CreateProxies(broadPhase, m_xf); + } + + // Contacts are created the next time step. + } + else + { + m_flags &= ~e_activeFlag; + + // Destroy all proxies. + b2BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase; + for (b2Fixture* f = m_fixtureList; f; f = f->m_next) + { + f->DestroyProxies(broadPhase); + } + + // Destroy the attached contacts. + b2ContactEdge* ce = m_contactList; + while (ce) + { + b2ContactEdge* ce0 = ce; + ce = ce->next; + m_world->m_contactManager.Destroy(ce0->contact); + } + m_contactList = NULL; + } +} + +void b2Body::SetFixedRotation(bool flag) +{ + bool status = (m_flags & e_fixedRotationFlag) == e_fixedRotationFlag; + if (status == flag) + { + return; + } + + if (flag) + { + m_flags |= e_fixedRotationFlag; + } + else + { + m_flags &= ~e_fixedRotationFlag; + } + + m_angularVelocity = 0.0f; + + ResetMassData(); +} + +void b2Body::Dump() +{ + int32 bodyIndex = m_islandIndex; + + b2Log("{\n"); + b2Log(" b2BodyDef bd;\n"); + b2Log(" bd.type = b2BodyType(%d);\n", m_type); + b2Log(" bd.position.Set(%.15lef, %.15lef);\n", m_xf.p.x, m_xf.p.y); + b2Log(" bd.angle = %.15lef;\n", m_sweep.a); + b2Log(" bd.linearVelocity.Set(%.15lef, %.15lef);\n", m_linearVelocity.x, m_linearVelocity.y); + b2Log(" bd.angularVelocity = %.15lef;\n", m_angularVelocity); + b2Log(" bd.linearDamping = %.15lef;\n", m_linearDamping); + b2Log(" bd.angularDamping = %.15lef;\n", m_angularDamping); + b2Log(" bd.allowSleep = bool(%d);\n", m_flags & e_autoSleepFlag); + b2Log(" bd.awake = bool(%d);\n", m_flags & e_awakeFlag); + b2Log(" bd.fixedRotation = bool(%d);\n", m_flags & e_fixedRotationFlag); + b2Log(" bd.bullet = bool(%d);\n", m_flags & e_bulletFlag); + b2Log(" bd.active = bool(%d);\n", m_flags & e_activeFlag); + b2Log(" bd.gravityScale = %.15lef;\n", m_gravityScale); + b2Log(" bodies[%d] = m_world->CreateBody(&bd);\n", m_islandIndex); + b2Log("\n"); + for (b2Fixture* f = m_fixtureList; f; f = f->m_next) + { + b2Log(" {\n"); + f->Dump(bodyIndex); + b2Log(" }\n"); + } + b2Log("}\n"); +} diff --git a/Dependencies/Box2D/src/Dynamics/b2Body.h b/Dependencies/Box2D/src/Dynamics/b2Body.h new file mode 100644 index 00000000..6f55fc47 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/b2Body.h @@ -0,0 +1,860 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_BODY_H +#define B2_BODY_H + +#include +#include +#include + +class b2Fixture; +class b2Joint; +class b2Contact; +class b2Controller; +class b2World; +struct b2FixtureDef; +struct b2JointEdge; +struct b2ContactEdge; + +/// The body type. +/// static: zero mass, zero velocity, may be manually moved +/// kinematic: zero mass, non-zero velocity set by user, moved by solver +/// dynamic: positive mass, non-zero velocity determined by forces, moved by solver +enum b2BodyType +{ + b2_staticBody = 0, + b2_kinematicBody, + b2_dynamicBody + + // TODO_ERIN + //b2_bulletBody, +}; + +/// A body definition holds all the data needed to construct a rigid body. +/// You can safely re-use body definitions. Shapes are added to a body after construction. +struct b2BodyDef +{ + /// This constructor sets the body definition default values. + b2BodyDef() + { + userData = NULL; + position.Set(0.0f, 0.0f); + angle = 0.0f; + linearVelocity.Set(0.0f, 0.0f); + angularVelocity = 0.0f; + linearDamping = 0.0f; + angularDamping = 0.0f; + allowSleep = true; + awake = true; + fixedRotation = false; + bullet = false; + type = b2_staticBody; + active = true; + gravityScale = 1.0f; + } + + /// The body type: static, kinematic, or dynamic. + /// Note: if a dynamic body would have zero mass, the mass is set to one. + b2BodyType type; + + /// The world position of the body. Avoid creating bodies at the origin + /// since this can lead to many overlapping shapes. + b2Vec2 position; + + /// The world angle of the body in radians. + float32 angle; + + /// The linear velocity of the body's origin in world co-ordinates. + b2Vec2 linearVelocity; + + /// The angular velocity of the body. + float32 angularVelocity; + + /// Linear damping is use to reduce the linear velocity. The damping parameter + /// can be larger than 1.0f but the damping effect becomes sensitive to the + /// time step when the damping parameter is large. + float32 linearDamping; + + /// Angular damping is use to reduce the angular velocity. The damping parameter + /// can be larger than 1.0f but the damping effect becomes sensitive to the + /// time step when the damping parameter is large. + float32 angularDamping; + + /// Set this flag to false if this body should never fall asleep. Note that + /// this increases CPU usage. + bool allowSleep; + + /// Is this body initially awake or sleeping? + bool awake; + + /// Should this body be prevented from rotating? Useful for characters. + bool fixedRotation; + + /// Is this a fast moving body that should be prevented from tunneling through + /// other moving bodies? Note that all bodies are prevented from tunneling through + /// kinematic and static bodies. This setting is only considered on dynamic bodies. + /// @warning You should use this flag sparingly since it increases processing time. + bool bullet; + + /// Does this body start out active? + bool active; + + /// Use this to store application specific body data. + void* userData; + + /// Scale the gravity applied to this body. + float32 gravityScale; +}; + +/// A rigid body. These are created via b2World::CreateBody. +class b2Body +{ +public: + /// Creates a fixture and attach it to this body. Use this function if you need + /// to set some fixture parameters, like friction. Otherwise you can create the + /// fixture directly from a shape. + /// If the density is non-zero, this function automatically updates the mass of the body. + /// Contacts are not created until the next time step. + /// @param def the fixture definition. + /// @warning This function is locked during callbacks. + b2Fixture* CreateFixture(const b2FixtureDef* def); + + /// Creates a fixture from a shape and attach it to this body. + /// This is a convenience function. Use b2FixtureDef if you need to set parameters + /// like friction, restitution, user data, or filtering. + /// If the density is non-zero, this function automatically updates the mass of the body. + /// @param shape the shape to be cloned. + /// @param density the shape density (set to zero for static bodies). + /// @warning This function is locked during callbacks. + b2Fixture* CreateFixture(const b2Shape* shape, float32 density); + + /// Destroy a fixture. This removes the fixture from the broad-phase and + /// destroys all contacts associated with this fixture. This will + /// automatically adjust the mass of the body if the body is dynamic and the + /// fixture has positive density. + /// All fixtures attached to a body are implicitly destroyed when the body is destroyed. + /// @param fixture the fixture to be removed. + /// @warning This function is locked during callbacks. + void DestroyFixture(b2Fixture* fixture); + + /// Set the position of the body's origin and rotation. + /// Manipulating a body's transform may cause non-physical behavior. + /// Note: contacts are updated on the next call to b2World::Step. + /// @param position the world position of the body's local origin. + /// @param angle the world rotation in radians. + void SetTransform(const b2Vec2& position, float32 angle); + + /// Get the body transform for the body's origin. + /// @return the world transform of the body's origin. + const b2Transform& GetTransform() const; + + /// Get the world body origin position. + /// @return the world position of the body's origin. + const b2Vec2& GetPosition() const; + + /// Get the angle in radians. + /// @return the current world rotation angle in radians. + float32 GetAngle() const; + + /// Get the world position of the center of mass. + const b2Vec2& GetWorldCenter() const; + + /// Get the local position of the center of mass. + const b2Vec2& GetLocalCenter() const; + + /// Set the linear velocity of the center of mass. + /// @param v the new linear velocity of the center of mass. + void SetLinearVelocity(const b2Vec2& v); + + /// Get the linear velocity of the center of mass. + /// @return the linear velocity of the center of mass. + const b2Vec2& GetLinearVelocity() const; + + /// Set the angular velocity. + /// @param omega the new angular velocity in radians/second. + void SetAngularVelocity(float32 omega); + + /// Get the angular velocity. + /// @return the angular velocity in radians/second. + float32 GetAngularVelocity() const; + + /// Apply a force at a world point. If the force is not + /// applied at the center of mass, it will generate a torque and + /// affect the angular velocity. This wakes up the body. + /// @param force the world force vector, usually in Newtons (N). + /// @param point the world position of the point of application. + /// @param wake also wake up the body + void ApplyForce(const b2Vec2& force, const b2Vec2& point, bool wake); + + /// Apply a force to the center of mass. This wakes up the body. + /// @param force the world force vector, usually in Newtons (N). + /// @param wake also wake up the body + void ApplyForceToCenter(const b2Vec2& force, bool wake); + + /// Apply a torque. This affects the angular velocity + /// without affecting the linear velocity of the center of mass. + /// This wakes up the body. + /// @param torque about the z-axis (out of the screen), usually in N-m. + /// @param wake also wake up the body + void ApplyTorque(float32 torque, bool wake); + + /// Apply an impulse at a point. This immediately modifies the velocity. + /// It also modifies the angular velocity if the point of application + /// is not at the center of mass. This wakes up the body. + /// @param impulse the world impulse vector, usually in N-seconds or kg-m/s. + /// @param point the world position of the point of application. + /// @param wake also wake up the body + void ApplyLinearImpulse(const b2Vec2& impulse, const b2Vec2& point, bool wake); + + /// Apply an angular impulse. + /// @param impulse the angular impulse in units of kg*m*m/s + /// @param wake also wake up the body + void ApplyAngularImpulse(float32 impulse, bool wake); + + /// Get the total mass of the body. + /// @return the mass, usually in kilograms (kg). + float32 GetMass() const; + + /// Get the rotational inertia of the body about the local origin. + /// @return the rotational inertia, usually in kg-m^2. + float32 GetInertia() const; + + /// Get the mass data of the body. + /// @return a struct containing the mass, inertia and center of the body. + void GetMassData(b2MassData* data) const; + + /// Set the mass properties to override the mass properties of the fixtures. + /// Note that this changes the center of mass position. + /// Note that creating or destroying fixtures can also alter the mass. + /// This function has no effect if the body isn't dynamic. + /// @param massData the mass properties. + void SetMassData(const b2MassData* data); + + /// This resets the mass properties to the sum of the mass properties of the fixtures. + /// This normally does not need to be called unless you called SetMassData to override + /// the mass and you later want to reset the mass. + void ResetMassData(); + + /// Get the world coordinates of a point given the local coordinates. + /// @param localPoint a point on the body measured relative the the body's origin. + /// @return the same point expressed in world coordinates. + b2Vec2 GetWorldPoint(const b2Vec2& localPoint) const; + + /// Get the world coordinates of a vector given the local coordinates. + /// @param localVector a vector fixed in the body. + /// @return the same vector expressed in world coordinates. + b2Vec2 GetWorldVector(const b2Vec2& localVector) const; + + /// Gets a local point relative to the body's origin given a world point. + /// @param a point in world coordinates. + /// @return the corresponding local point relative to the body's origin. + b2Vec2 GetLocalPoint(const b2Vec2& worldPoint) const; + + /// Gets a local vector given a world vector. + /// @param a vector in world coordinates. + /// @return the corresponding local vector. + b2Vec2 GetLocalVector(const b2Vec2& worldVector) const; + + /// Get the world linear velocity of a world point attached to this body. + /// @param a point in world coordinates. + /// @return the world velocity of a point. + b2Vec2 GetLinearVelocityFromWorldPoint(const b2Vec2& worldPoint) const; + + /// Get the world velocity of a local point. + /// @param a point in local coordinates. + /// @return the world velocity of a point. + b2Vec2 GetLinearVelocityFromLocalPoint(const b2Vec2& localPoint) const; + + /// Get the linear damping of the body. + float32 GetLinearDamping() const; + + /// Set the linear damping of the body. + void SetLinearDamping(float32 linearDamping); + + /// Get the angular damping of the body. + float32 GetAngularDamping() const; + + /// Set the angular damping of the body. + void SetAngularDamping(float32 angularDamping); + + /// Get the gravity scale of the body. + float32 GetGravityScale() const; + + /// Set the gravity scale of the body. + void SetGravityScale(float32 scale); + + /// Set the type of this body. This may alter the mass and velocity. + void SetType(b2BodyType type); + + /// Get the type of this body. + b2BodyType GetType() const; + + /// Should this body be treated like a bullet for continuous collision detection? + void SetBullet(bool flag); + + /// Is this body treated like a bullet for continuous collision detection? + bool IsBullet() const; + + /// You can disable sleeping on this body. If you disable sleeping, the + /// body will be woken. + void SetSleepingAllowed(bool flag); + + /// Is this body allowed to sleep + bool IsSleepingAllowed() const; + + /// Set the sleep state of the body. A sleeping body has very + /// low CPU cost. + /// @param flag set to true to wake the body, false to put it to sleep. + void SetAwake(bool flag); + + /// Get the sleeping state of this body. + /// @return true if the body is awake. + bool IsAwake() const; + + /// Set the active state of the body. An inactive body is not + /// simulated and cannot be collided with or woken up. + /// If you pass a flag of true, all fixtures will be added to the + /// broad-phase. + /// If you pass a flag of false, all fixtures will be removed from + /// the broad-phase and all contacts will be destroyed. + /// Fixtures and joints are otherwise unaffected. You may continue + /// to create/destroy fixtures and joints on inactive bodies. + /// Fixtures on an inactive body are implicitly inactive and will + /// not participate in collisions, ray-casts, or queries. + /// Joints connected to an inactive body are implicitly inactive. + /// An inactive body is still owned by a b2World object and remains + /// in the body list. + void SetActive(bool flag); + + /// Get the active state of the body. + bool IsActive() const; + + /// Set this body to have fixed rotation. This causes the mass + /// to be reset. + void SetFixedRotation(bool flag); + + /// Does this body have fixed rotation? + bool IsFixedRotation() const; + + /// Get the list of all fixtures attached to this body. + b2Fixture* GetFixtureList(); + const b2Fixture* GetFixtureList() const; + + /// Get the list of all joints attached to this body. + b2JointEdge* GetJointList(); + const b2JointEdge* GetJointList() const; + + /// Get the list of all contacts attached to this body. + /// @warning this list changes during the time step and you may + /// miss some collisions if you don't use b2ContactListener. + b2ContactEdge* GetContactList(); + const b2ContactEdge* GetContactList() const; + + /// Get the next body in the world's body list. + b2Body* GetNext(); + const b2Body* GetNext() const; + + /// Get the user data pointer that was provided in the body definition. + void* GetUserData() const; + + /// Set the user data. Use this to store your application specific data. + void SetUserData(void* data); + + /// Get the parent world of this body. + b2World* GetWorld(); + const b2World* GetWorld() const; + + /// Dump this body to a log file + void Dump(); + +private: + + friend class b2World; + friend class b2Island; + friend class b2ContactManager; + friend class b2ContactSolver; + friend class b2Contact; + + friend class b2DistanceJoint; + friend class b2FrictionJoint; + friend class b2GearJoint; + friend class b2MotorJoint; + friend class b2MouseJoint; + friend class b2PrismaticJoint; + friend class b2PulleyJoint; + friend class b2RevoluteJoint; + friend class b2RopeJoint; + friend class b2WeldJoint; + friend class b2WheelJoint; + + // m_flags + enum + { + e_islandFlag = 0x0001, + e_awakeFlag = 0x0002, + e_autoSleepFlag = 0x0004, + e_bulletFlag = 0x0008, + e_fixedRotationFlag = 0x0010, + e_activeFlag = 0x0020, + e_toiFlag = 0x0040 + }; + + b2Body(const b2BodyDef* bd, b2World* world); + ~b2Body(); + + void SynchronizeFixtures(); + void SynchronizeTransform(); + + // This is used to prevent connected bodies from colliding. + // It may lie, depending on the collideConnected flag. + bool ShouldCollide(const b2Body* other) const; + + void Advance(float32 t); + + b2BodyType m_type; + + uint16 m_flags; + + int32 m_islandIndex; + + b2Transform m_xf; // the body origin transform + b2Sweep m_sweep; // the swept motion for CCD + + b2Vec2 m_linearVelocity; + float32 m_angularVelocity; + + b2Vec2 m_force; + float32 m_torque; + + b2World* m_world; + b2Body* m_prev; + b2Body* m_next; + + b2Fixture* m_fixtureList; + int32 m_fixtureCount; + + b2JointEdge* m_jointList; + b2ContactEdge* m_contactList; + + float32 m_mass, m_invMass; + + // Rotational inertia about the center of mass. + float32 m_I, m_invI; + + float32 m_linearDamping; + float32 m_angularDamping; + float32 m_gravityScale; + + float32 m_sleepTime; + + void* m_userData; +}; + +inline b2BodyType b2Body::GetType() const +{ + return m_type; +} + +inline const b2Transform& b2Body::GetTransform() const +{ + return m_xf; +} + +inline const b2Vec2& b2Body::GetPosition() const +{ + return m_xf.p; +} + +inline float32 b2Body::GetAngle() const +{ + return m_sweep.a; +} + +inline const b2Vec2& b2Body::GetWorldCenter() const +{ + return m_sweep.c; +} + +inline const b2Vec2& b2Body::GetLocalCenter() const +{ + return m_sweep.localCenter; +} + +inline void b2Body::SetLinearVelocity(const b2Vec2& v) +{ + if (m_type == b2_staticBody) + { + return; + } + + if (b2Dot(v,v) > 0.0f) + { + SetAwake(true); + } + + m_linearVelocity = v; +} + +inline const b2Vec2& b2Body::GetLinearVelocity() const +{ + return m_linearVelocity; +} + +inline void b2Body::SetAngularVelocity(float32 w) +{ + if (m_type == b2_staticBody) + { + return; + } + + if (w * w > 0.0f) + { + SetAwake(true); + } + + m_angularVelocity = w; +} + +inline float32 b2Body::GetAngularVelocity() const +{ + return m_angularVelocity; +} + +inline float32 b2Body::GetMass() const +{ + return m_mass; +} + +inline float32 b2Body::GetInertia() const +{ + return m_I + m_mass * b2Dot(m_sweep.localCenter, m_sweep.localCenter); +} + +inline void b2Body::GetMassData(b2MassData* data) const +{ + data->mass = m_mass; + data->I = m_I + m_mass * b2Dot(m_sweep.localCenter, m_sweep.localCenter); + data->center = m_sweep.localCenter; +} + +inline b2Vec2 b2Body::GetWorldPoint(const b2Vec2& localPoint) const +{ + return b2Mul(m_xf, localPoint); +} + +inline b2Vec2 b2Body::GetWorldVector(const b2Vec2& localVector) const +{ + return b2Mul(m_xf.q, localVector); +} + +inline b2Vec2 b2Body::GetLocalPoint(const b2Vec2& worldPoint) const +{ + return b2MulT(m_xf, worldPoint); +} + +inline b2Vec2 b2Body::GetLocalVector(const b2Vec2& worldVector) const +{ + return b2MulT(m_xf.q, worldVector); +} + +inline b2Vec2 b2Body::GetLinearVelocityFromWorldPoint(const b2Vec2& worldPoint) const +{ + return m_linearVelocity + b2Cross(m_angularVelocity, worldPoint - m_sweep.c); +} + +inline b2Vec2 b2Body::GetLinearVelocityFromLocalPoint(const b2Vec2& localPoint) const +{ + return GetLinearVelocityFromWorldPoint(GetWorldPoint(localPoint)); +} + +inline float32 b2Body::GetLinearDamping() const +{ + return m_linearDamping; +} + +inline void b2Body::SetLinearDamping(float32 linearDamping) +{ + m_linearDamping = linearDamping; +} + +inline float32 b2Body::GetAngularDamping() const +{ + return m_angularDamping; +} + +inline void b2Body::SetAngularDamping(float32 angularDamping) +{ + m_angularDamping = angularDamping; +} + +inline float32 b2Body::GetGravityScale() const +{ + return m_gravityScale; +} + +inline void b2Body::SetGravityScale(float32 scale) +{ + m_gravityScale = scale; +} + +inline void b2Body::SetBullet(bool flag) +{ + if (flag) + { + m_flags |= e_bulletFlag; + } + else + { + m_flags &= ~e_bulletFlag; + } +} + +inline bool b2Body::IsBullet() const +{ + return (m_flags & e_bulletFlag) == e_bulletFlag; +} + +inline void b2Body::SetAwake(bool flag) +{ + if (flag) + { + if ((m_flags & e_awakeFlag) == 0) + { + m_flags |= e_awakeFlag; + m_sleepTime = 0.0f; + } + } + else + { + m_flags &= ~e_awakeFlag; + m_sleepTime = 0.0f; + m_linearVelocity.SetZero(); + m_angularVelocity = 0.0f; + m_force.SetZero(); + m_torque = 0.0f; + } +} + +inline bool b2Body::IsAwake() const +{ + return (m_flags & e_awakeFlag) == e_awakeFlag; +} + +inline bool b2Body::IsActive() const +{ + return (m_flags & e_activeFlag) == e_activeFlag; +} + +inline bool b2Body::IsFixedRotation() const +{ + return (m_flags & e_fixedRotationFlag) == e_fixedRotationFlag; +} + +inline void b2Body::SetSleepingAllowed(bool flag) +{ + if (flag) + { + m_flags |= e_autoSleepFlag; + } + else + { + m_flags &= ~e_autoSleepFlag; + SetAwake(true); + } +} + +inline bool b2Body::IsSleepingAllowed() const +{ + return (m_flags & e_autoSleepFlag) == e_autoSleepFlag; +} + +inline b2Fixture* b2Body::GetFixtureList() +{ + return m_fixtureList; +} + +inline const b2Fixture* b2Body::GetFixtureList() const +{ + return m_fixtureList; +} + +inline b2JointEdge* b2Body::GetJointList() +{ + return m_jointList; +} + +inline const b2JointEdge* b2Body::GetJointList() const +{ + return m_jointList; +} + +inline b2ContactEdge* b2Body::GetContactList() +{ + return m_contactList; +} + +inline const b2ContactEdge* b2Body::GetContactList() const +{ + return m_contactList; +} + +inline b2Body* b2Body::GetNext() +{ + return m_next; +} + +inline const b2Body* b2Body::GetNext() const +{ + return m_next; +} + +inline void b2Body::SetUserData(void* data) +{ + m_userData = data; +} + +inline void* b2Body::GetUserData() const +{ + return m_userData; +} + +inline void b2Body::ApplyForce(const b2Vec2& force, const b2Vec2& point, bool wake) +{ + if (m_type != b2_dynamicBody) + { + return; + } + + if (wake && (m_flags & e_awakeFlag) == 0) + { + SetAwake(true); + } + + // Don't accumulate a force if the body is sleeping. + if (m_flags & e_awakeFlag) + { + m_force += force; + m_torque += b2Cross(point - m_sweep.c, force); + } +} + +inline void b2Body::ApplyForceToCenter(const b2Vec2& force, bool wake) +{ + if (m_type != b2_dynamicBody) + { + return; + } + + if (wake && (m_flags & e_awakeFlag) == 0) + { + SetAwake(true); + } + + // Don't accumulate a force if the body is sleeping + if (m_flags & e_awakeFlag) + { + m_force += force; + } +} + +inline void b2Body::ApplyTorque(float32 torque, bool wake) +{ + if (m_type != b2_dynamicBody) + { + return; + } + + if (wake && (m_flags & e_awakeFlag) == 0) + { + SetAwake(true); + } + + // Don't accumulate a force if the body is sleeping + if (m_flags & e_awakeFlag) + { + m_torque += torque; + } +} + +inline void b2Body::ApplyLinearImpulse(const b2Vec2& impulse, const b2Vec2& point, bool wake) +{ + if (m_type != b2_dynamicBody) + { + return; + } + + if (wake && (m_flags & e_awakeFlag) == 0) + { + SetAwake(true); + } + + // Don't accumulate velocity if the body is sleeping + if (m_flags & e_awakeFlag) + { + m_linearVelocity += m_invMass * impulse; + m_angularVelocity += m_invI * b2Cross(point - m_sweep.c, impulse); + } +} + +inline void b2Body::ApplyAngularImpulse(float32 impulse, bool wake) +{ + if (m_type != b2_dynamicBody) + { + return; + } + + if (wake && (m_flags & e_awakeFlag) == 0) + { + SetAwake(true); + } + + // Don't accumulate velocity if the body is sleeping + if (m_flags & e_awakeFlag) + { + m_angularVelocity += m_invI * impulse; + } +} + +inline void b2Body::SynchronizeTransform() +{ + m_xf.q.Set(m_sweep.a); + m_xf.p = m_sweep.c - b2Mul(m_xf.q, m_sweep.localCenter); +} + +inline void b2Body::Advance(float32 alpha) +{ + // Advance to the new safe time. This doesn't sync the broad-phase. + m_sweep.Advance(alpha); + m_sweep.c = m_sweep.c0; + m_sweep.a = m_sweep.a0; + m_xf.q.Set(m_sweep.a); + m_xf.p = m_sweep.c - b2Mul(m_xf.q, m_sweep.localCenter); +} + +inline b2World* b2Body::GetWorld() +{ + return m_world; +} + +inline const b2World* b2Body::GetWorld() const +{ + return m_world; +} + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/b2ContactManager.cpp b/Dependencies/Box2D/src/Dynamics/b2ContactManager.cpp new file mode 100644 index 00000000..ae47fb81 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/b2ContactManager.cpp @@ -0,0 +1,296 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include +#include +#include + +b2ContactFilter b2_defaultFilter; +b2ContactListener b2_defaultListener; + +b2ContactManager::b2ContactManager() +{ + m_contactList = NULL; + m_contactCount = 0; + m_contactFilter = &b2_defaultFilter; + m_contactListener = &b2_defaultListener; + m_allocator = NULL; +} + +void b2ContactManager::Destroy(b2Contact* c) +{ + b2Fixture* fixtureA = c->GetFixtureA(); + b2Fixture* fixtureB = c->GetFixtureB(); + b2Body* bodyA = fixtureA->GetBody(); + b2Body* bodyB = fixtureB->GetBody(); + + if (m_contactListener && c->IsTouching()) + { + m_contactListener->EndContact(c); + } + + // Remove from the world. + if (c->m_prev) + { + c->m_prev->m_next = c->m_next; + } + + if (c->m_next) + { + c->m_next->m_prev = c->m_prev; + } + + if (c == m_contactList) + { + m_contactList = c->m_next; + } + + // Remove from body 1 + if (c->m_nodeA.prev) + { + c->m_nodeA.prev->next = c->m_nodeA.next; + } + + if (c->m_nodeA.next) + { + c->m_nodeA.next->prev = c->m_nodeA.prev; + } + + if (&c->m_nodeA == bodyA->m_contactList) + { + bodyA->m_contactList = c->m_nodeA.next; + } + + // Remove from body 2 + if (c->m_nodeB.prev) + { + c->m_nodeB.prev->next = c->m_nodeB.next; + } + + if (c->m_nodeB.next) + { + c->m_nodeB.next->prev = c->m_nodeB.prev; + } + + if (&c->m_nodeB == bodyB->m_contactList) + { + bodyB->m_contactList = c->m_nodeB.next; + } + + // Call the factory. + b2Contact::Destroy(c, m_allocator); + --m_contactCount; +} + +// This is the top level collision call for the time step. Here +// all the narrow phase collision is processed for the world +// contact list. +void b2ContactManager::Collide() +{ + // Update awake contacts. + b2Contact* c = m_contactList; + while (c) + { + b2Fixture* fixtureA = c->GetFixtureA(); + b2Fixture* fixtureB = c->GetFixtureB(); + int32 indexA = c->GetChildIndexA(); + int32 indexB = c->GetChildIndexB(); + b2Body* bodyA = fixtureA->GetBody(); + b2Body* bodyB = fixtureB->GetBody(); + + // Is this contact flagged for filtering? + if (c->m_flags & b2Contact::e_filterFlag) + { + // Should these bodies collide? + if (bodyB->ShouldCollide(bodyA) == false) + { + b2Contact* cNuke = c; + c = cNuke->GetNext(); + Destroy(cNuke); + continue; + } + + // Check user filtering. + if (m_contactFilter && m_contactFilter->ShouldCollide(fixtureA, fixtureB) == false) + { + b2Contact* cNuke = c; + c = cNuke->GetNext(); + Destroy(cNuke); + continue; + } + + // Clear the filtering flag. + c->m_flags &= ~b2Contact::e_filterFlag; + } + + bool activeA = bodyA->IsAwake() && bodyA->m_type != b2_staticBody; + bool activeB = bodyB->IsAwake() && bodyB->m_type != b2_staticBody; + + // At least one body must be awake and it must be dynamic or kinematic. + if (activeA == false && activeB == false) + { + c = c->GetNext(); + continue; + } + + int32 proxyIdA = fixtureA->m_proxies[indexA].proxyId; + int32 proxyIdB = fixtureB->m_proxies[indexB].proxyId; + bool overlap = m_broadPhase.TestOverlap(proxyIdA, proxyIdB); + + // Here we destroy contacts that cease to overlap in the broad-phase. + if (overlap == false) + { + b2Contact* cNuke = c; + c = cNuke->GetNext(); + Destroy(cNuke); + continue; + } + + // The contact persists. + c->Update(m_contactListener); + c = c->GetNext(); + } +} + +void b2ContactManager::FindNewContacts() +{ + m_broadPhase.UpdatePairs(this); +} + +void b2ContactManager::AddPair(void* proxyUserDataA, void* proxyUserDataB) +{ + b2FixtureProxy* proxyA = (b2FixtureProxy*)proxyUserDataA; + b2FixtureProxy* proxyB = (b2FixtureProxy*)proxyUserDataB; + + b2Fixture* fixtureA = proxyA->fixture; + b2Fixture* fixtureB = proxyB->fixture; + + int32 indexA = proxyA->childIndex; + int32 indexB = proxyB->childIndex; + + b2Body* bodyA = fixtureA->GetBody(); + b2Body* bodyB = fixtureB->GetBody(); + + // Are the fixtures on the same body? + if (bodyA == bodyB) + { + return; + } + + // TODO_ERIN use a hash table to remove a potential bottleneck when both + // bodies have a lot of contacts. + // Does a contact already exist? + b2ContactEdge* edge = bodyB->GetContactList(); + while (edge) + { + if (edge->other == bodyA) + { + b2Fixture* fA = edge->contact->GetFixtureA(); + b2Fixture* fB = edge->contact->GetFixtureB(); + int32 iA = edge->contact->GetChildIndexA(); + int32 iB = edge->contact->GetChildIndexB(); + + if (fA == fixtureA && fB == fixtureB && iA == indexA && iB == indexB) + { + // A contact already exists. + return; + } + + if (fA == fixtureB && fB == fixtureA && iA == indexB && iB == indexA) + { + // A contact already exists. + return; + } + } + + edge = edge->next; + } + + // Does a joint override collision? Is at least one body dynamic? + if (bodyB->ShouldCollide(bodyA) == false) + { + return; + } + + // Check user filtering. + if (m_contactFilter && m_contactFilter->ShouldCollide(fixtureA, fixtureB) == false) + { + return; + } + + // Call the factory. + b2Contact* c = b2Contact::Create(fixtureA, indexA, fixtureB, indexB, m_allocator); + if (c == NULL) + { + return; + } + + // Contact creation may swap fixtures. + fixtureA = c->GetFixtureA(); + fixtureB = c->GetFixtureB(); + indexA = c->GetChildIndexA(); + indexB = c->GetChildIndexB(); + bodyA = fixtureA->GetBody(); + bodyB = fixtureB->GetBody(); + + // Insert into the world. + c->m_prev = NULL; + c->m_next = m_contactList; + if (m_contactList != NULL) + { + m_contactList->m_prev = c; + } + m_contactList = c; + + // Connect to island graph. + + // Connect to body A + c->m_nodeA.contact = c; + c->m_nodeA.other = bodyB; + + c->m_nodeA.prev = NULL; + c->m_nodeA.next = bodyA->m_contactList; + if (bodyA->m_contactList != NULL) + { + bodyA->m_contactList->prev = &c->m_nodeA; + } + bodyA->m_contactList = &c->m_nodeA; + + // Connect to body B + c->m_nodeB.contact = c; + c->m_nodeB.other = bodyA; + + c->m_nodeB.prev = NULL; + c->m_nodeB.next = bodyB->m_contactList; + if (bodyB->m_contactList != NULL) + { + bodyB->m_contactList->prev = &c->m_nodeB; + } + bodyB->m_contactList = &c->m_nodeB; + + // Wake up the bodies + if (fixtureA->IsSensor() == false && fixtureB->IsSensor() == false) + { + bodyA->SetAwake(true); + bodyB->SetAwake(true); + } + + ++m_contactCount; +} diff --git a/Dependencies/Box2D/src/Dynamics/b2ContactManager.h b/Dependencies/Box2D/src/Dynamics/b2ContactManager.h new file mode 100644 index 00000000..c3cdc79a --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/b2ContactManager.h @@ -0,0 +1,52 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_CONTACT_MANAGER_H +#define B2_CONTACT_MANAGER_H + +#include + +class b2Contact; +class b2ContactFilter; +class b2ContactListener; +class b2BlockAllocator; + +// Delegate of b2World. +class b2ContactManager +{ +public: + b2ContactManager(); + + // Broad-phase callback. + void AddPair(void* proxyUserDataA, void* proxyUserDataB); + + void FindNewContacts(); + + void Destroy(b2Contact* c); + + void Collide(); + + b2BroadPhase m_broadPhase; + b2Contact* m_contactList; + int32 m_contactCount; + b2ContactFilter* m_contactFilter; + b2ContactListener* m_contactListener; + b2BlockAllocator* m_allocator; +}; + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/b2Fixture.cpp b/Dependencies/Box2D/src/Dynamics/b2Fixture.cpp new file mode 100644 index 00000000..4e5ad9d7 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/b2Fixture.cpp @@ -0,0 +1,303 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +b2Fixture::b2Fixture() +{ + m_userData = NULL; + m_body = NULL; + m_next = NULL; + m_proxies = NULL; + m_proxyCount = 0; + m_shape = NULL; + m_density = 0.0f; +} + +void b2Fixture::Create(b2BlockAllocator* allocator, b2Body* body, const b2FixtureDef* def) +{ + m_userData = def->userData; + m_friction = def->friction; + m_restitution = def->restitution; + + m_body = body; + m_next = NULL; + + m_filter = def->filter; + + m_isSensor = def->isSensor; + + m_shape = def->shape->Clone(allocator); + + // Reserve proxy space + int32 childCount = m_shape->GetChildCount(); + m_proxies = (b2FixtureProxy*)allocator->Allocate(childCount * sizeof(b2FixtureProxy)); + for (int32 i = 0; i < childCount; ++i) + { + m_proxies[i].fixture = NULL; + m_proxies[i].proxyId = b2BroadPhase::e_nullProxy; + } + m_proxyCount = 0; + + m_density = def->density; +} + +void b2Fixture::Destroy(b2BlockAllocator* allocator) +{ + // The proxies must be destroyed before calling this. + b2Assert(m_proxyCount == 0); + + // Free the proxy array. + int32 childCount = m_shape->GetChildCount(); + allocator->Free(m_proxies, childCount * sizeof(b2FixtureProxy)); + m_proxies = NULL; + + // Free the child shape. + switch (m_shape->m_type) + { + case b2Shape::e_circle: + { + b2CircleShape* s = (b2CircleShape*)m_shape; + s->~b2CircleShape(); + allocator->Free(s, sizeof(b2CircleShape)); + } + break; + + case b2Shape::e_edge: + { + b2EdgeShape* s = (b2EdgeShape*)m_shape; + s->~b2EdgeShape(); + allocator->Free(s, sizeof(b2EdgeShape)); + } + break; + + case b2Shape::e_polygon: + { + b2PolygonShape* s = (b2PolygonShape*)m_shape; + s->~b2PolygonShape(); + allocator->Free(s, sizeof(b2PolygonShape)); + } + break; + + case b2Shape::e_chain: + { + b2ChainShape* s = (b2ChainShape*)m_shape; + s->~b2ChainShape(); + allocator->Free(s, sizeof(b2ChainShape)); + } + break; + + default: + b2Assert(false); + break; + } + + m_shape = NULL; +} + +void b2Fixture::CreateProxies(b2BroadPhase* broadPhase, const b2Transform& xf) +{ + b2Assert(m_proxyCount == 0); + + // Create proxies in the broad-phase. + m_proxyCount = m_shape->GetChildCount(); + + for (int32 i = 0; i < m_proxyCount; ++i) + { + b2FixtureProxy* proxy = m_proxies + i; + m_shape->ComputeAABB(&proxy->aabb, xf, i); + proxy->proxyId = broadPhase->CreateProxy(proxy->aabb, proxy); + proxy->fixture = this; + proxy->childIndex = i; + } +} + +void b2Fixture::DestroyProxies(b2BroadPhase* broadPhase) +{ + // Destroy proxies in the broad-phase. + for (int32 i = 0; i < m_proxyCount; ++i) + { + b2FixtureProxy* proxy = m_proxies + i; + broadPhase->DestroyProxy(proxy->proxyId); + proxy->proxyId = b2BroadPhase::e_nullProxy; + } + + m_proxyCount = 0; +} + +void b2Fixture::Synchronize(b2BroadPhase* broadPhase, const b2Transform& transform1, const b2Transform& transform2) +{ + if (m_proxyCount == 0) + { + return; + } + + for (int32 i = 0; i < m_proxyCount; ++i) + { + b2FixtureProxy* proxy = m_proxies + i; + + // Compute an AABB that covers the swept shape (may miss some rotation effect). + b2AABB aabb1, aabb2; + m_shape->ComputeAABB(&aabb1, transform1, proxy->childIndex); + m_shape->ComputeAABB(&aabb2, transform2, proxy->childIndex); + + proxy->aabb.Combine(aabb1, aabb2); + + b2Vec2 displacement = transform2.p - transform1.p; + + broadPhase->MoveProxy(proxy->proxyId, proxy->aabb, displacement); + } +} + +void b2Fixture::SetFilterData(const b2Filter& filter) +{ + m_filter = filter; + + Refilter(); +} + +void b2Fixture::Refilter() +{ + if (m_body == NULL) + { + return; + } + + // Flag associated contacts for filtering. + b2ContactEdge* edge = m_body->GetContactList(); + while (edge) + { + b2Contact* contact = edge->contact; + b2Fixture* fixtureA = contact->GetFixtureA(); + b2Fixture* fixtureB = contact->GetFixtureB(); + if (fixtureA == this || fixtureB == this) + { + contact->FlagForFiltering(); + } + + edge = edge->next; + } + + b2World* world = m_body->GetWorld(); + + if (world == NULL) + { + return; + } + + // Touch each proxy so that new pairs may be created + b2BroadPhase* broadPhase = &world->m_contactManager.m_broadPhase; + for (int32 i = 0; i < m_proxyCount; ++i) + { + broadPhase->TouchProxy(m_proxies[i].proxyId); + } +} + +void b2Fixture::SetSensor(bool sensor) +{ + if (sensor != m_isSensor) + { + m_body->SetAwake(true); + m_isSensor = sensor; + } +} + +void b2Fixture::Dump(int32 bodyIndex) +{ + b2Log(" b2FixtureDef fd;\n"); + b2Log(" fd.friction = %.15lef;\n", m_friction); + b2Log(" fd.restitution = %.15lef;\n", m_restitution); + b2Log(" fd.density = %.15lef;\n", m_density); + b2Log(" fd.isSensor = bool(%d);\n", m_isSensor); + b2Log(" fd.filter.categoryBits = uint16(%d);\n", m_filter.categoryBits); + b2Log(" fd.filter.maskBits = uint16(%d);\n", m_filter.maskBits); + b2Log(" fd.filter.groupIndex = int16(%d);\n", m_filter.groupIndex); + + switch (m_shape->m_type) + { + case b2Shape::e_circle: + { + b2CircleShape* s = (b2CircleShape*)m_shape; + b2Log(" b2CircleShape shape;\n"); + b2Log(" shape.m_radius = %.15lef;\n", s->m_radius); + b2Log(" shape.m_p.Set(%.15lef, %.15lef);\n", s->m_p.x, s->m_p.y); + } + break; + + case b2Shape::e_edge: + { + b2EdgeShape* s = (b2EdgeShape*)m_shape; + b2Log(" b2EdgeShape shape;\n"); + b2Log(" shape.m_radius = %.15lef;\n", s->m_radius); + b2Log(" shape.m_vertex0.Set(%.15lef, %.15lef);\n", s->m_vertex0.x, s->m_vertex0.y); + b2Log(" shape.m_vertex1.Set(%.15lef, %.15lef);\n", s->m_vertex1.x, s->m_vertex1.y); + b2Log(" shape.m_vertex2.Set(%.15lef, %.15lef);\n", s->m_vertex2.x, s->m_vertex2.y); + b2Log(" shape.m_vertex3.Set(%.15lef, %.15lef);\n", s->m_vertex3.x, s->m_vertex3.y); + b2Log(" shape.m_hasVertex0 = bool(%d);\n", s->m_hasVertex0); + b2Log(" shape.m_hasVertex3 = bool(%d);\n", s->m_hasVertex3); + } + break; + + case b2Shape::e_polygon: + { + b2PolygonShape* s = (b2PolygonShape*)m_shape; + b2Log(" b2PolygonShape shape;\n"); + b2Log(" b2Vec2 vs[%d];\n", b2_maxPolygonVertices); + for (int32 i = 0; i < s->m_count; ++i) + { + b2Log(" vs[%d].Set(%.15lef, %.15lef);\n", i, s->m_vertices[i].x, s->m_vertices[i].y); + } + b2Log(" shape.Set(vs, %d);\n", s->m_count); + } + break; + + case b2Shape::e_chain: + { + b2ChainShape* s = (b2ChainShape*)m_shape; + b2Log(" b2ChainShape shape;\n"); + b2Log(" b2Vec2 vs[%d];\n", s->m_count); + for (int32 i = 0; i < s->m_count; ++i) + { + b2Log(" vs[%d].Set(%.15lef, %.15lef);\n", i, s->m_vertices[i].x, s->m_vertices[i].y); + } + b2Log(" shape.CreateChain(vs, %d);\n", s->m_count); + b2Log(" shape.m_prevVertex.Set(%.15lef, %.15lef);\n", s->m_prevVertex.x, s->m_prevVertex.y); + b2Log(" shape.m_nextVertex.Set(%.15lef, %.15lef);\n", s->m_nextVertex.x, s->m_nextVertex.y); + b2Log(" shape.m_hasPrevVertex = bool(%d);\n", s->m_hasPrevVertex); + b2Log(" shape.m_hasNextVertex = bool(%d);\n", s->m_hasNextVertex); + } + break; + + default: + return; + } + + b2Log("\n"); + b2Log(" fd.shape = &shape;\n"); + b2Log("\n"); + b2Log(" bodies[%d]->CreateFixture(&fd);\n", bodyIndex); +} diff --git a/Dependencies/Box2D/src/Dynamics/b2Fixture.h b/Dependencies/Box2D/src/Dynamics/b2Fixture.h new file mode 100644 index 00000000..4bc3dc6b --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/b2Fixture.h @@ -0,0 +1,345 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_FIXTURE_H +#define B2_FIXTURE_H + +#include +#include +#include + +class b2BlockAllocator; +class b2Body; +class b2BroadPhase; +class b2Fixture; + +/// This holds contact filtering data. +struct b2Filter +{ + b2Filter() + { + categoryBits = 0x0001; + maskBits = 0xFFFF; + groupIndex = 0; + } + + /// The collision category bits. Normally you would just set one bit. + uint16 categoryBits; + + /// The collision mask bits. This states the categories that this + /// shape would accept for collision. + uint16 maskBits; + + /// Collision groups allow a certain group of objects to never collide (negative) + /// or always collide (positive). Zero means no collision group. Non-zero group + /// filtering always wins against the mask bits. + int16 groupIndex; +}; + +/// A fixture definition is used to create a fixture. This class defines an +/// abstract fixture definition. You can reuse fixture definitions safely. +struct b2FixtureDef +{ + /// The constructor sets the default fixture definition values. + b2FixtureDef() + { + shape = NULL; + userData = NULL; + friction = 0.2f; + restitution = 0.0f; + density = 0.0f; + isSensor = false; + } + + /// The shape, this must be set. The shape will be cloned, so you + /// can create the shape on the stack. + const b2Shape* shape; + + /// Use this to store application specific fixture data. + void* userData; + + /// The friction coefficient, usually in the range [0,1]. + float32 friction; + + /// The restitution (elasticity) usually in the range [0,1]. + float32 restitution; + + /// The density, usually in kg/m^2. + float32 density; + + /// A sensor shape collects contact information but never generates a collision + /// response. + bool isSensor; + + /// Contact filtering data. + b2Filter filter; +}; + +/// This proxy is used internally to connect fixtures to the broad-phase. +struct b2FixtureProxy +{ + b2AABB aabb; + b2Fixture* fixture; + int32 childIndex; + int32 proxyId; +}; + +/// A fixture is used to attach a shape to a body for collision detection. A fixture +/// inherits its transform from its parent. Fixtures hold additional non-geometric data +/// such as friction, collision filters, etc. +/// Fixtures are created via b2Body::CreateFixture. +/// @warning you cannot reuse fixtures. +class b2Fixture +{ +public: + /// Get the type of the child shape. You can use this to down cast to the concrete shape. + /// @return the shape type. + b2Shape::Type GetType() const; + + /// Get the child shape. You can modify the child shape, however you should not change the + /// number of vertices because this will crash some collision caching mechanisms. + /// Manipulating the shape may lead to non-physical behavior. + b2Shape* GetShape(); + const b2Shape* GetShape() const; + + /// Set if this fixture is a sensor. + void SetSensor(bool sensor); + + /// Is this fixture a sensor (non-solid)? + /// @return the true if the shape is a sensor. + bool IsSensor() const; + + /// Set the contact filtering data. This will not update contacts until the next time + /// step when either parent body is active and awake. + /// This automatically calls Refilter. + void SetFilterData(const b2Filter& filter); + + /// Get the contact filtering data. + const b2Filter& GetFilterData() const; + + /// Call this if you want to establish collision that was previously disabled by b2ContactFilter::ShouldCollide. + void Refilter(); + + /// Get the parent body of this fixture. This is NULL if the fixture is not attached. + /// @return the parent body. + b2Body* GetBody(); + const b2Body* GetBody() const; + + /// Get the next fixture in the parent body's fixture list. + /// @return the next shape. + b2Fixture* GetNext(); + const b2Fixture* GetNext() const; + + /// Get the user data that was assigned in the fixture definition. Use this to + /// store your application specific data. + void* GetUserData() const; + + /// Set the user data. Use this to store your application specific data. + void SetUserData(void* data); + + /// Test a point for containment in this fixture. + /// @param p a point in world coordinates. + bool TestPoint(const b2Vec2& p) const; + + /// Cast a ray against this shape. + /// @param output the ray-cast results. + /// @param input the ray-cast input parameters. + bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, int32 childIndex) const; + + /// Get the mass data for this fixture. The mass data is based on the density and + /// the shape. The rotational inertia is about the shape's origin. This operation + /// may be expensive. + void GetMassData(b2MassData* massData) const; + + /// Set the density of this fixture. This will _not_ automatically adjust the mass + /// of the body. You must call b2Body::ResetMassData to update the body's mass. + void SetDensity(float32 density); + + /// Get the density of this fixture. + float32 GetDensity() const; + + /// Get the coefficient of friction. + float32 GetFriction() const; + + /// Set the coefficient of friction. This will _not_ change the friction of + /// existing contacts. + void SetFriction(float32 friction); + + /// Get the coefficient of restitution. + float32 GetRestitution() const; + + /// Set the coefficient of restitution. This will _not_ change the restitution of + /// existing contacts. + void SetRestitution(float32 restitution); + + /// Get the fixture's AABB. This AABB may be enlarge and/or stale. + /// If you need a more accurate AABB, compute it using the shape and + /// the body transform. + const b2AABB& GetAABB(int32 childIndex) const; + + /// Dump this fixture to the log file. + void Dump(int32 bodyIndex); + +protected: + + friend class b2Body; + friend class b2World; + friend class b2Contact; + friend class b2ContactManager; + + b2Fixture(); + + // We need separation create/destroy functions from the constructor/destructor because + // the destructor cannot access the allocator (no destructor arguments allowed by C++). + void Create(b2BlockAllocator* allocator, b2Body* body, const b2FixtureDef* def); + void Destroy(b2BlockAllocator* allocator); + + // These support body activation/deactivation. + void CreateProxies(b2BroadPhase* broadPhase, const b2Transform& xf); + void DestroyProxies(b2BroadPhase* broadPhase); + + void Synchronize(b2BroadPhase* broadPhase, const b2Transform& xf1, const b2Transform& xf2); + + float32 m_density; + + b2Fixture* m_next; + b2Body* m_body; + + b2Shape* m_shape; + + float32 m_friction; + float32 m_restitution; + + b2FixtureProxy* m_proxies; + int32 m_proxyCount; + + b2Filter m_filter; + + bool m_isSensor; + + void* m_userData; +}; + +inline b2Shape::Type b2Fixture::GetType() const +{ + return m_shape->GetType(); +} + +inline b2Shape* b2Fixture::GetShape() +{ + return m_shape; +} + +inline const b2Shape* b2Fixture::GetShape() const +{ + return m_shape; +} + +inline bool b2Fixture::IsSensor() const +{ + return m_isSensor; +} + +inline const b2Filter& b2Fixture::GetFilterData() const +{ + return m_filter; +} + +inline void* b2Fixture::GetUserData() const +{ + return m_userData; +} + +inline void b2Fixture::SetUserData(void* data) +{ + m_userData = data; +} + +inline b2Body* b2Fixture::GetBody() +{ + return m_body; +} + +inline const b2Body* b2Fixture::GetBody() const +{ + return m_body; +} + +inline b2Fixture* b2Fixture::GetNext() +{ + return m_next; +} + +inline const b2Fixture* b2Fixture::GetNext() const +{ + return m_next; +} + +inline void b2Fixture::SetDensity(float32 density) +{ + b2Assert(b2IsValid(density) && density >= 0.0f); + m_density = density; +} + +inline float32 b2Fixture::GetDensity() const +{ + return m_density; +} + +inline float32 b2Fixture::GetFriction() const +{ + return m_friction; +} + +inline void b2Fixture::SetFriction(float32 friction) +{ + m_friction = friction; +} + +inline float32 b2Fixture::GetRestitution() const +{ + return m_restitution; +} + +inline void b2Fixture::SetRestitution(float32 restitution) +{ + m_restitution = restitution; +} + +inline bool b2Fixture::TestPoint(const b2Vec2& p) const +{ + return m_shape->TestPoint(m_body->GetTransform(), p); +} + +inline bool b2Fixture::RayCast(b2RayCastOutput* output, const b2RayCastInput& input, int32 childIndex) const +{ + return m_shape->RayCast(output, input, m_body->GetTransform(), childIndex); +} + +inline void b2Fixture::GetMassData(b2MassData* massData) const +{ + m_shape->ComputeMass(massData, m_density); +} + +inline const b2AABB& b2Fixture::GetAABB(int32 childIndex) const +{ + b2Assert(0 <= childIndex && childIndex < m_proxyCount); + return m_proxies[childIndex].aabb; +} + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/b2Island.cpp b/Dependencies/Box2D/src/Dynamics/b2Island.cpp new file mode 100644 index 00000000..a1debe61 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/b2Island.cpp @@ -0,0 +1,539 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* +Position Correction Notes +========================= +I tried the several algorithms for position correction of the 2D revolute joint. +I looked at these systems: +- simple pendulum (1m diameter sphere on massless 5m stick) with initial angular velocity of 100 rad/s. +- suspension bridge with 30 1m long planks of length 1m. +- multi-link chain with 30 1m long links. + +Here are the algorithms: + +Baumgarte - A fraction of the position error is added to the velocity error. There is no +separate position solver. + +Pseudo Velocities - After the velocity solver and position integration, +the position error, Jacobian, and effective mass are recomputed. Then +the velocity constraints are solved with pseudo velocities and a fraction +of the position error is added to the pseudo velocity error. The pseudo +velocities are initialized to zero and there is no warm-starting. After +the position solver, the pseudo velocities are added to the positions. +This is also called the First Order World method or the Position LCP method. + +Modified Nonlinear Gauss-Seidel (NGS) - Like Pseudo Velocities except the +position error is re-computed for each constraint and the positions are updated +after the constraint is solved. The radius vectors (aka Jacobians) are +re-computed too (otherwise the algorithm has horrible instability). The pseudo +velocity states are not needed because they are effectively zero at the beginning +of each iteration. Since we have the current position error, we allow the +iterations to terminate early if the error becomes smaller than b2_linearSlop. + +Full NGS or just NGS - Like Modified NGS except the effective mass are re-computed +each time a constraint is solved. + +Here are the results: +Baumgarte - this is the cheapest algorithm but it has some stability problems, +especially with the bridge. The chain links separate easily close to the root +and they jitter as they struggle to pull together. This is one of the most common +methods in the field. The big drawback is that the position correction artificially +affects the momentum, thus leading to instabilities and false bounce. I used a +bias factor of 0.2. A larger bias factor makes the bridge less stable, a smaller +factor makes joints and contacts more spongy. + +Pseudo Velocities - the is more stable than the Baumgarte method. The bridge is +stable. However, joints still separate with large angular velocities. Drag the +simple pendulum in a circle quickly and the joint will separate. The chain separates +easily and does not recover. I used a bias factor of 0.2. A larger value lead to +the bridge collapsing when a heavy cube drops on it. + +Modified NGS - this algorithm is better in some ways than Baumgarte and Pseudo +Velocities, but in other ways it is worse. The bridge and chain are much more +stable, but the simple pendulum goes unstable at high angular velocities. + +Full NGS - stable in all tests. The joints display good stiffness. The bridge +still sags, but this is better than infinite forces. + +Recommendations +Pseudo Velocities are not really worthwhile because the bridge and chain cannot +recover from joint separation. In other cases the benefit over Baumgarte is small. + +Modified NGS is not a robust method for the revolute joint due to the violent +instability seen in the simple pendulum. Perhaps it is viable with other constraint +types, especially scalar constraints where the effective mass is a scalar. + +This leaves Baumgarte and Full NGS. Baumgarte has small, but manageable instabilities +and is very fast. I don't think we can escape Baumgarte, especially in highly +demanding cases where high constraint fidelity is not needed. + +Full NGS is robust and easy on the eyes. I recommend this as an option for +higher fidelity simulation and certainly for suspension bridges and long chains. +Full NGS might be a good choice for ragdolls, especially motorized ragdolls where +joint separation can be problematic. The number of NGS iterations can be reduced +for better performance without harming robustness much. + +Each joint in a can be handled differently in the position solver. So I recommend +a system where the user can select the algorithm on a per joint basis. I would +probably default to the slower Full NGS and let the user select the faster +Baumgarte method in performance critical scenarios. +*/ + +/* +Cache Performance + +The Box2D solvers are dominated by cache misses. Data structures are designed +to increase the number of cache hits. Much of misses are due to random access +to body data. The constraint structures are iterated over linearly, which leads +to few cache misses. + +The bodies are not accessed during iteration. Instead read only data, such as +the mass values are stored with the constraints. The mutable data are the constraint +impulses and the bodies velocities/positions. The impulses are held inside the +constraint structures. The body velocities/positions are held in compact, temporary +arrays to increase the number of cache hits. Linear and angular velocity are +stored in a single array since multiple arrays lead to multiple misses. +*/ + +/* +2D Rotation + +R = [cos(theta) -sin(theta)] + [sin(theta) cos(theta) ] + +thetaDot = omega + +Let q1 = cos(theta), q2 = sin(theta). +R = [q1 -q2] + [q2 q1] + +q1Dot = -thetaDot * q2 +q2Dot = thetaDot * q1 + +q1_new = q1_old - dt * w * q2 +q2_new = q2_old + dt * w * q1 +then normalize. + +This might be faster than computing sin+cos. +However, we can compute sin+cos of the same angle fast. +*/ + +b2Island::b2Island( + int32 bodyCapacity, + int32 contactCapacity, + int32 jointCapacity, + b2StackAllocator* allocator, + b2ContactListener* listener) +{ + m_bodyCapacity = bodyCapacity; + m_contactCapacity = contactCapacity; + m_jointCapacity = jointCapacity; + m_bodyCount = 0; + m_contactCount = 0; + m_jointCount = 0; + + m_allocator = allocator; + m_listener = listener; + + m_bodies = (b2Body**)m_allocator->Allocate(bodyCapacity * sizeof(b2Body*)); + m_contacts = (b2Contact**)m_allocator->Allocate(contactCapacity * sizeof(b2Contact*)); + m_joints = (b2Joint**)m_allocator->Allocate(jointCapacity * sizeof(b2Joint*)); + + m_velocities = (b2Velocity*)m_allocator->Allocate(m_bodyCapacity * sizeof(b2Velocity)); + m_positions = (b2Position*)m_allocator->Allocate(m_bodyCapacity * sizeof(b2Position)); +} + +b2Island::~b2Island() +{ + // Warning: the order should reverse the constructor order. + m_allocator->Free(m_positions); + m_allocator->Free(m_velocities); + m_allocator->Free(m_joints); + m_allocator->Free(m_contacts); + m_allocator->Free(m_bodies); +} + +void b2Island::Solve(b2Profile* profile, const b2TimeStep& step, const b2Vec2& gravity, bool allowSleep) +{ + b2Timer timer; + + float32 h = step.dt; + + // Integrate velocities and apply damping. Initialize the body state. + for (int32 i = 0; i < m_bodyCount; ++i) + { + b2Body* b = m_bodies[i]; + + b2Vec2 c = b->m_sweep.c; + float32 a = b->m_sweep.a; + b2Vec2 v = b->m_linearVelocity; + float32 w = b->m_angularVelocity; + + // Store positions for continuous collision. + b->m_sweep.c0 = b->m_sweep.c; + b->m_sweep.a0 = b->m_sweep.a; + + if (b->m_type == b2_dynamicBody) + { + // Integrate velocities. + v += h * (b->m_gravityScale * gravity + b->m_invMass * b->m_force); + w += h * b->m_invI * b->m_torque; + + // Apply damping. + // ODE: dv/dt + c * v = 0 + // Solution: v(t) = v0 * exp(-c * t) + // Time step: v(t + dt) = v0 * exp(-c * (t + dt)) = v0 * exp(-c * t) * exp(-c * dt) = v * exp(-c * dt) + // v2 = exp(-c * dt) * v1 + // Pade approximation: + // v2 = v1 * 1 / (1 + c * dt) + v *= 1.0f / (1.0f + h * b->m_linearDamping); + w *= 1.0f / (1.0f + h * b->m_angularDamping); + } + + m_positions[i].c = c; + m_positions[i].a = a; + m_velocities[i].v = v; + m_velocities[i].w = w; + } + + timer.Reset(); + + // Solver data + b2SolverData solverData; + solverData.step = step; + solverData.positions = m_positions; + solverData.velocities = m_velocities; + + // Initialize velocity constraints. + b2ContactSolverDef contactSolverDef; + contactSolverDef.step = step; + contactSolverDef.contacts = m_contacts; + contactSolverDef.count = m_contactCount; + contactSolverDef.positions = m_positions; + contactSolverDef.velocities = m_velocities; + contactSolverDef.allocator = m_allocator; + + b2ContactSolver contactSolver(&contactSolverDef); + contactSolver.InitializeVelocityConstraints(); + + if (step.warmStarting) + { + contactSolver.WarmStart(); + } + + for (int32 i = 0; i < m_jointCount; ++i) + { + m_joints[i]->InitVelocityConstraints(solverData); + } + + profile->solveInit = timer.GetMilliseconds(); + + // Solve velocity constraints + timer.Reset(); + for (int32 i = 0; i < step.velocityIterations; ++i) + { + for (int32 j = 0; j < m_jointCount; ++j) + { + m_joints[j]->SolveVelocityConstraints(solverData); + } + + contactSolver.SolveVelocityConstraints(); + } + + // Store impulses for warm starting + contactSolver.StoreImpulses(); + profile->solveVelocity = timer.GetMilliseconds(); + + // Integrate positions + for (int32 i = 0; i < m_bodyCount; ++i) + { + b2Vec2 c = m_positions[i].c; + float32 a = m_positions[i].a; + b2Vec2 v = m_velocities[i].v; + float32 w = m_velocities[i].w; + + // Check for large velocities + b2Vec2 translation = h * v; + if (b2Dot(translation, translation) > b2_maxTranslationSquared) + { + float32 ratio = b2_maxTranslation / translation.Length(); + v *= ratio; + } + + float32 rotation = h * w; + if (rotation * rotation > b2_maxRotationSquared) + { + float32 ratio = b2_maxRotation / b2Abs(rotation); + w *= ratio; + } + + // Integrate + c += h * v; + a += h * w; + + m_positions[i].c = c; + m_positions[i].a = a; + m_velocities[i].v = v; + m_velocities[i].w = w; + } + + // Solve position constraints + timer.Reset(); + bool positionSolved = false; + for (int32 i = 0; i < step.positionIterations; ++i) + { + bool contactsOkay = contactSolver.SolvePositionConstraints(); + + bool jointsOkay = true; + for (int32 i = 0; i < m_jointCount; ++i) + { + bool jointOkay = m_joints[i]->SolvePositionConstraints(solverData); + jointsOkay = jointsOkay && jointOkay; + } + + if (contactsOkay && jointsOkay) + { + // Exit early if the position errors are small. + positionSolved = true; + break; + } + } + + // Copy state buffers back to the bodies + for (int32 i = 0; i < m_bodyCount; ++i) + { + b2Body* body = m_bodies[i]; + body->m_sweep.c = m_positions[i].c; + body->m_sweep.a = m_positions[i].a; + body->m_linearVelocity = m_velocities[i].v; + body->m_angularVelocity = m_velocities[i].w; + body->SynchronizeTransform(); + } + + profile->solvePosition = timer.GetMilliseconds(); + + Report(contactSolver.m_velocityConstraints); + + if (allowSleep) + { + float32 minSleepTime = b2_maxFloat; + + const float32 linTolSqr = b2_linearSleepTolerance * b2_linearSleepTolerance; + const float32 angTolSqr = b2_angularSleepTolerance * b2_angularSleepTolerance; + + for (int32 i = 0; i < m_bodyCount; ++i) + { + b2Body* b = m_bodies[i]; + if (b->GetType() == b2_staticBody) + { + continue; + } + + if ((b->m_flags & b2Body::e_autoSleepFlag) == 0 || + b->m_angularVelocity * b->m_angularVelocity > angTolSqr || + b2Dot(b->m_linearVelocity, b->m_linearVelocity) > linTolSqr) + { + b->m_sleepTime = 0.0f; + minSleepTime = 0.0f; + } + else + { + b->m_sleepTime += h; + minSleepTime = b2Min(minSleepTime, b->m_sleepTime); + } + } + + if (minSleepTime >= b2_timeToSleep && positionSolved) + { + for (int32 i = 0; i < m_bodyCount; ++i) + { + b2Body* b = m_bodies[i]; + b->SetAwake(false); + } + } + } +} + +void b2Island::SolveTOI(const b2TimeStep& subStep, int32 toiIndexA, int32 toiIndexB) +{ + b2Assert(toiIndexA < m_bodyCount); + b2Assert(toiIndexB < m_bodyCount); + + // Initialize the body state. + for (int32 i = 0; i < m_bodyCount; ++i) + { + b2Body* b = m_bodies[i]; + m_positions[i].c = b->m_sweep.c; + m_positions[i].a = b->m_sweep.a; + m_velocities[i].v = b->m_linearVelocity; + m_velocities[i].w = b->m_angularVelocity; + } + + b2ContactSolverDef contactSolverDef; + contactSolverDef.contacts = m_contacts; + contactSolverDef.count = m_contactCount; + contactSolverDef.allocator = m_allocator; + contactSolverDef.step = subStep; + contactSolverDef.positions = m_positions; + contactSolverDef.velocities = m_velocities; + b2ContactSolver contactSolver(&contactSolverDef); + + // Solve position constraints. + for (int32 i = 0; i < subStep.positionIterations; ++i) + { + bool contactsOkay = contactSolver.SolveTOIPositionConstraints(toiIndexA, toiIndexB); + if (contactsOkay) + { + break; + } + } + +#if 0 + // Is the new position really safe? + for (int32 i = 0; i < m_contactCount; ++i) + { + b2Contact* c = m_contacts[i]; + b2Fixture* fA = c->GetFixtureA(); + b2Fixture* fB = c->GetFixtureB(); + + b2Body* bA = fA->GetBody(); + b2Body* bB = fB->GetBody(); + + int32 indexA = c->GetChildIndexA(); + int32 indexB = c->GetChildIndexB(); + + b2DistanceInput input; + input.proxyA.Set(fA->GetShape(), indexA); + input.proxyB.Set(fB->GetShape(), indexB); + input.transformA = bA->GetTransform(); + input.transformB = bB->GetTransform(); + input.useRadii = false; + + b2DistanceOutput output; + b2SimplexCache cache; + cache.count = 0; + b2Distance(&output, &cache, &input); + + if (output.distance == 0 || cache.count == 3) + { + cache.count += 0; + } + } +#endif + + // Leap of faith to new safe state. + m_bodies[toiIndexA]->m_sweep.c0 = m_positions[toiIndexA].c; + m_bodies[toiIndexA]->m_sweep.a0 = m_positions[toiIndexA].a; + m_bodies[toiIndexB]->m_sweep.c0 = m_positions[toiIndexB].c; + m_bodies[toiIndexB]->m_sweep.a0 = m_positions[toiIndexB].a; + + // No warm starting is needed for TOI events because warm + // starting impulses were applied in the discrete solver. + contactSolver.InitializeVelocityConstraints(); + + // Solve velocity constraints. + for (int32 i = 0; i < subStep.velocityIterations; ++i) + { + contactSolver.SolveVelocityConstraints(); + } + + // Don't store the TOI contact forces for warm starting + // because they can be quite large. + + float32 h = subStep.dt; + + // Integrate positions + for (int32 i = 0; i < m_bodyCount; ++i) + { + b2Vec2 c = m_positions[i].c; + float32 a = m_positions[i].a; + b2Vec2 v = m_velocities[i].v; + float32 w = m_velocities[i].w; + + // Check for large velocities + b2Vec2 translation = h * v; + if (b2Dot(translation, translation) > b2_maxTranslationSquared) + { + float32 ratio = b2_maxTranslation / translation.Length(); + v *= ratio; + } + + float32 rotation = h * w; + if (rotation * rotation > b2_maxRotationSquared) + { + float32 ratio = b2_maxRotation / b2Abs(rotation); + w *= ratio; + } + + // Integrate + c += h * v; + a += h * w; + + m_positions[i].c = c; + m_positions[i].a = a; + m_velocities[i].v = v; + m_velocities[i].w = w; + + // Sync bodies + b2Body* body = m_bodies[i]; + body->m_sweep.c = c; + body->m_sweep.a = a; + body->m_linearVelocity = v; + body->m_angularVelocity = w; + body->SynchronizeTransform(); + } + + Report(contactSolver.m_velocityConstraints); +} + +void b2Island::Report(const b2ContactVelocityConstraint* constraints) +{ + if (m_listener == NULL) + { + return; + } + + for (int32 i = 0; i < m_contactCount; ++i) + { + b2Contact* c = m_contacts[i]; + + const b2ContactVelocityConstraint* vc = constraints + i; + + b2ContactImpulse impulse; + impulse.count = vc->pointCount; + for (int32 j = 0; j < vc->pointCount; ++j) + { + impulse.normalImpulses[j] = vc->points[j].normalImpulse; + impulse.tangentImpulses[j] = vc->points[j].tangentImpulse; + } + + m_listener->PostSolve(c, &impulse); + } +} diff --git a/Dependencies/Box2D/src/Dynamics/b2Island.h b/Dependencies/Box2D/src/Dynamics/b2Island.h new file mode 100644 index 00000000..bc9d398f --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/b2Island.h @@ -0,0 +1,93 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_ISLAND_H +#define B2_ISLAND_H + +#include +#include +#include + +class b2Contact; +class b2Joint; +class b2StackAllocator; +class b2ContactListener; +struct b2ContactVelocityConstraint; +struct b2Profile; + +/// This is an internal class. +class b2Island +{ +public: + b2Island(int32 bodyCapacity, int32 contactCapacity, int32 jointCapacity, + b2StackAllocator* allocator, b2ContactListener* listener); + ~b2Island(); + + void Clear() + { + m_bodyCount = 0; + m_contactCount = 0; + m_jointCount = 0; + } + + void Solve(b2Profile* profile, const b2TimeStep& step, const b2Vec2& gravity, bool allowSleep); + + void SolveTOI(const b2TimeStep& subStep, int32 toiIndexA, int32 toiIndexB); + + void Add(b2Body* body) + { + b2Assert(m_bodyCount < m_bodyCapacity); + body->m_islandIndex = m_bodyCount; + m_bodies[m_bodyCount] = body; + ++m_bodyCount; + } + + void Add(b2Contact* contact) + { + b2Assert(m_contactCount < m_contactCapacity); + m_contacts[m_contactCount++] = contact; + } + + void Add(b2Joint* joint) + { + b2Assert(m_jointCount < m_jointCapacity); + m_joints[m_jointCount++] = joint; + } + + void Report(const b2ContactVelocityConstraint* constraints); + + b2StackAllocator* m_allocator; + b2ContactListener* m_listener; + + b2Body** m_bodies; + b2Contact** m_contacts; + b2Joint** m_joints; + + b2Position* m_positions; + b2Velocity* m_velocities; + + int32 m_bodyCount; + int32 m_jointCount; + int32 m_contactCount; + + int32 m_bodyCapacity; + int32 m_contactCapacity; + int32 m_jointCapacity; +}; + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/b2TimeStep.h b/Dependencies/Box2D/src/Dynamics/b2TimeStep.h new file mode 100644 index 00000000..831ec4cc --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/b2TimeStep.h @@ -0,0 +1,70 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_TIME_STEP_H +#define B2_TIME_STEP_H + +#include + +/// Profiling data. Times are in milliseconds. +struct b2Profile +{ + float32 step; + float32 collide; + float32 solve; + float32 solveInit; + float32 solveVelocity; + float32 solvePosition; + float32 broadphase; + float32 solveTOI; +}; + +/// This is an internal structure. +struct b2TimeStep +{ + float32 dt; // time step + float32 inv_dt; // inverse time step (0 if dt == 0). + float32 dtRatio; // dt * inv_dt0 + int32 velocityIterations; + int32 positionIterations; + bool warmStarting; +}; + +/// This is an internal structure. +struct b2Position +{ + b2Vec2 c; + float32 a; +}; + +/// This is an internal structure. +struct b2Velocity +{ + b2Vec2 v; + float32 w; +}; + +/// Solver Data +struct b2SolverData +{ + b2TimeStep step; + b2Position* positions; + b2Velocity* velocities; +}; + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/b2World.cpp b/Dependencies/Box2D/src/Dynamics/b2World.cpp new file mode 100644 index 00000000..973f5314 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/b2World.cpp @@ -0,0 +1,1339 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +b2World::b2World(const b2Vec2& gravity) +{ + m_destructionListener = NULL; + g_debugDraw = NULL; + + m_bodyList = NULL; + m_jointList = NULL; + + m_bodyCount = 0; + m_jointCount = 0; + + m_warmStarting = true; + m_continuousPhysics = true; + m_subStepping = false; + + m_stepComplete = true; + + m_allowSleep = true; + m_gravity = gravity; + + m_flags = e_clearForces; + + m_inv_dt0 = 0.0f; + + m_contactManager.m_allocator = &m_blockAllocator; + + memset(&m_profile, 0, sizeof(b2Profile)); +} + +b2World::~b2World() +{ + // Some shapes allocate using b2Alloc. + b2Body* b = m_bodyList; + while (b) + { + b2Body* bNext = b->m_next; + + b2Fixture* f = b->m_fixtureList; + while (f) + { + b2Fixture* fNext = f->m_next; + f->m_proxyCount = 0; + f->Destroy(&m_blockAllocator); + f = fNext; + } + + b = bNext; + } +} + +void b2World::SetDestructionListener(b2DestructionListener* listener) +{ + m_destructionListener = listener; +} + +void b2World::SetContactFilter(b2ContactFilter* filter) +{ + m_contactManager.m_contactFilter = filter; +} + +void b2World::SetContactListener(b2ContactListener* listener) +{ + m_contactManager.m_contactListener = listener; +} + +void b2World::SetDebugDraw(b2Draw* debugDraw) +{ + g_debugDraw = debugDraw; +} + +b2Body* b2World::CreateBody(const b2BodyDef* def) +{ + b2Assert(IsLocked() == false); + if (IsLocked()) + { + return NULL; + } + + void* mem = m_blockAllocator.Allocate(sizeof(b2Body)); + b2Body* b = new (mem) b2Body(def, this); + + // Add to world doubly linked list. + b->m_prev = NULL; + b->m_next = m_bodyList; + if (m_bodyList) + { + m_bodyList->m_prev = b; + } + m_bodyList = b; + ++m_bodyCount; + + return b; +} + +void b2World::DestroyBody(b2Body* b) +{ + b2Assert(m_bodyCount > 0); + b2Assert(IsLocked() == false); + if (IsLocked()) + { + return; + } + + // Delete the attached joints. + b2JointEdge* je = b->m_jointList; + while (je) + { + b2JointEdge* je0 = je; + je = je->next; + + if (m_destructionListener) + { + m_destructionListener->SayGoodbye(je0->joint); + } + + DestroyJoint(je0->joint); + + b->m_jointList = je; + } + b->m_jointList = NULL; + + // Delete the attached contacts. + b2ContactEdge* ce = b->m_contactList; + while (ce) + { + b2ContactEdge* ce0 = ce; + ce = ce->next; + m_contactManager.Destroy(ce0->contact); + } + b->m_contactList = NULL; + + // Delete the attached fixtures. This destroys broad-phase proxies. + b2Fixture* f = b->m_fixtureList; + while (f) + { + b2Fixture* f0 = f; + f = f->m_next; + + if (m_destructionListener) + { + m_destructionListener->SayGoodbye(f0); + } + + f0->DestroyProxies(&m_contactManager.m_broadPhase); + f0->Destroy(&m_blockAllocator); + f0->~b2Fixture(); + m_blockAllocator.Free(f0, sizeof(b2Fixture)); + + b->m_fixtureList = f; + b->m_fixtureCount -= 1; + } + b->m_fixtureList = NULL; + b->m_fixtureCount = 0; + + // Remove world body list. + if (b->m_prev) + { + b->m_prev->m_next = b->m_next; + } + + if (b->m_next) + { + b->m_next->m_prev = b->m_prev; + } + + if (b == m_bodyList) + { + m_bodyList = b->m_next; + } + + --m_bodyCount; + b->~b2Body(); + m_blockAllocator.Free(b, sizeof(b2Body)); +} + +b2Joint* b2World::CreateJoint(const b2JointDef* def) +{ + b2Assert(IsLocked() == false); + if (IsLocked()) + { + return NULL; + } + + b2Joint* j = b2Joint::Create(def, &m_blockAllocator); + + // Connect to the world list. + j->m_prev = NULL; + j->m_next = m_jointList; + if (m_jointList) + { + m_jointList->m_prev = j; + } + m_jointList = j; + ++m_jointCount; + + // Connect to the bodies' doubly linked lists. + j->m_edgeA.joint = j; + j->m_edgeA.other = j->m_bodyB; + j->m_edgeA.prev = NULL; + j->m_edgeA.next = j->m_bodyA->m_jointList; + if (j->m_bodyA->m_jointList) j->m_bodyA->m_jointList->prev = &j->m_edgeA; + j->m_bodyA->m_jointList = &j->m_edgeA; + + j->m_edgeB.joint = j; + j->m_edgeB.other = j->m_bodyA; + j->m_edgeB.prev = NULL; + j->m_edgeB.next = j->m_bodyB->m_jointList; + if (j->m_bodyB->m_jointList) j->m_bodyB->m_jointList->prev = &j->m_edgeB; + j->m_bodyB->m_jointList = &j->m_edgeB; + + b2Body* bodyA = def->bodyA; + b2Body* bodyB = def->bodyB; + + // If the joint prevents collisions, then flag any contacts for filtering. + if (def->collideConnected == false) + { + b2ContactEdge* edge = bodyB->GetContactList(); + while (edge) + { + if (edge->other == bodyA) + { + // Flag the contact for filtering at the next time step (where either + // body is awake). + edge->contact->FlagForFiltering(); + } + + edge = edge->next; + } + } + + // Note: creating a joint doesn't wake the bodies. + + return j; +} + +void b2World::DestroyJoint(b2Joint* j) +{ + b2Assert(IsLocked() == false); + if (IsLocked()) + { + return; + } + + bool collideConnected = j->m_collideConnected; + + // Remove from the doubly linked list. + if (j->m_prev) + { + j->m_prev->m_next = j->m_next; + } + + if (j->m_next) + { + j->m_next->m_prev = j->m_prev; + } + + if (j == m_jointList) + { + m_jointList = j->m_next; + } + + // Disconnect from island graph. + b2Body* bodyA = j->m_bodyA; + b2Body* bodyB = j->m_bodyB; + + // Wake up connected bodies. + bodyA->SetAwake(true); + bodyB->SetAwake(true); + + // Remove from body 1. + if (j->m_edgeA.prev) + { + j->m_edgeA.prev->next = j->m_edgeA.next; + } + + if (j->m_edgeA.next) + { + j->m_edgeA.next->prev = j->m_edgeA.prev; + } + + if (&j->m_edgeA == bodyA->m_jointList) + { + bodyA->m_jointList = j->m_edgeA.next; + } + + j->m_edgeA.prev = NULL; + j->m_edgeA.next = NULL; + + // Remove from body 2 + if (j->m_edgeB.prev) + { + j->m_edgeB.prev->next = j->m_edgeB.next; + } + + if (j->m_edgeB.next) + { + j->m_edgeB.next->prev = j->m_edgeB.prev; + } + + if (&j->m_edgeB == bodyB->m_jointList) + { + bodyB->m_jointList = j->m_edgeB.next; + } + + j->m_edgeB.prev = NULL; + j->m_edgeB.next = NULL; + + b2Joint::Destroy(j, &m_blockAllocator); + + b2Assert(m_jointCount > 0); + --m_jointCount; + + // If the joint prevents collisions, then flag any contacts for filtering. + if (collideConnected == false) + { + b2ContactEdge* edge = bodyB->GetContactList(); + while (edge) + { + if (edge->other == bodyA) + { + // Flag the contact for filtering at the next time step (where either + // body is awake). + edge->contact->FlagForFiltering(); + } + + edge = edge->next; + } + } +} + +// +void b2World::SetAllowSleeping(bool flag) +{ + if (flag == m_allowSleep) + { + return; + } + + m_allowSleep = flag; + if (m_allowSleep == false) + { + for (b2Body* b = m_bodyList; b; b = b->m_next) + { + b->SetAwake(true); + } + } +} + +// Find islands, integrate and solve constraints, solve position constraints +void b2World::Solve(const b2TimeStep& step) +{ + m_profile.solveInit = 0.0f; + m_profile.solveVelocity = 0.0f; + m_profile.solvePosition = 0.0f; + + // Size the island for the worst case. + b2Island island(m_bodyCount, + m_contactManager.m_contactCount, + m_jointCount, + &m_stackAllocator, + m_contactManager.m_contactListener); + + // Clear all the island flags. + for (b2Body* b = m_bodyList; b; b = b->m_next) + { + b->m_flags &= ~b2Body::e_islandFlag; + } + for (b2Contact* c = m_contactManager.m_contactList; c; c = c->m_next) + { + c->m_flags &= ~b2Contact::e_islandFlag; + } + for (b2Joint* j = m_jointList; j; j = j->m_next) + { + j->m_islandFlag = false; + } + + // Build and simulate all awake islands. + int32 stackSize = m_bodyCount; + b2Body** stack = (b2Body**)m_stackAllocator.Allocate(stackSize * sizeof(b2Body*)); + for (b2Body* seed = m_bodyList; seed; seed = seed->m_next) + { + if (seed->m_flags & b2Body::e_islandFlag) + { + continue; + } + + if (seed->IsAwake() == false || seed->IsActive() == false) + { + continue; + } + + // The seed can be dynamic or kinematic. + if (seed->GetType() == b2_staticBody) + { + continue; + } + + // Reset island and stack. + island.Clear(); + int32 stackCount = 0; + stack[stackCount++] = seed; + seed->m_flags |= b2Body::e_islandFlag; + + // Perform a depth first search (DFS) on the constraint graph. + while (stackCount > 0) + { + // Grab the next body off the stack and add it to the island. + b2Body* b = stack[--stackCount]; + b2Assert(b->IsActive() == true); + island.Add(b); + + // Make sure the body is awake. + b->SetAwake(true); + + // To keep islands as small as possible, we don't + // propagate islands across static bodies. + if (b->GetType() == b2_staticBody) + { + continue; + } + + // Search all contacts connected to this body. + for (b2ContactEdge* ce = b->m_contactList; ce; ce = ce->next) + { + b2Contact* contact = ce->contact; + + // Has this contact already been added to an island? + if (contact->m_flags & b2Contact::e_islandFlag) + { + continue; + } + + // Is this contact solid and touching? + if (contact->IsEnabled() == false || + contact->IsTouching() == false) + { + continue; + } + + // Skip sensors. + bool sensorA = contact->m_fixtureA->m_isSensor; + bool sensorB = contact->m_fixtureB->m_isSensor; + if (sensorA || sensorB) + { + continue; + } + + island.Add(contact); + contact->m_flags |= b2Contact::e_islandFlag; + + b2Body* other = ce->other; + + // Was the other body already added to this island? + if (other->m_flags & b2Body::e_islandFlag) + { + continue; + } + + b2Assert(stackCount < stackSize); + stack[stackCount++] = other; + other->m_flags |= b2Body::e_islandFlag; + } + + // Search all joints connect to this body. + for (b2JointEdge* je = b->m_jointList; je; je = je->next) + { + if (je->joint->m_islandFlag == true) + { + continue; + } + + b2Body* other = je->other; + + // Don't simulate joints connected to inactive bodies. + if (other->IsActive() == false) + { + continue; + } + + island.Add(je->joint); + je->joint->m_islandFlag = true; + + if (other->m_flags & b2Body::e_islandFlag) + { + continue; + } + + b2Assert(stackCount < stackSize); + stack[stackCount++] = other; + other->m_flags |= b2Body::e_islandFlag; + } + } + + b2Profile profile; + island.Solve(&profile, step, m_gravity, m_allowSleep); + m_profile.solveInit += profile.solveInit; + m_profile.solveVelocity += profile.solveVelocity; + m_profile.solvePosition += profile.solvePosition; + + // Post solve cleanup. + for (int32 i = 0; i < island.m_bodyCount; ++i) + { + // Allow static bodies to participate in other islands. + b2Body* b = island.m_bodies[i]; + if (b->GetType() == b2_staticBody) + { + b->m_flags &= ~b2Body::e_islandFlag; + } + } + } + + m_stackAllocator.Free(stack); + + { + b2Timer timer; + // Synchronize fixtures, check for out of range bodies. + for (b2Body* b = m_bodyList; b; b = b->GetNext()) + { + // If a body was not in an island then it did not move. + if ((b->m_flags & b2Body::e_islandFlag) == 0) + { + continue; + } + + if (b->GetType() == b2_staticBody) + { + continue; + } + + // Update fixtures (for broad-phase). + b->SynchronizeFixtures(); + } + + // Look for new contacts. + m_contactManager.FindNewContacts(); + m_profile.broadphase = timer.GetMilliseconds(); + } +} + +// Find TOI contacts and solve them. +void b2World::SolveTOI(const b2TimeStep& step) +{ + b2Island island(2 * b2_maxTOIContacts, b2_maxTOIContacts, 0, &m_stackAllocator, m_contactManager.m_contactListener); + + if (m_stepComplete) + { + for (b2Body* b = m_bodyList; b; b = b->m_next) + { + b->m_flags &= ~b2Body::e_islandFlag; + b->m_sweep.alpha0 = 0.0f; + } + + for (b2Contact* c = m_contactManager.m_contactList; c; c = c->m_next) + { + // Invalidate TOI + c->m_flags &= ~(b2Contact::e_toiFlag | b2Contact::e_islandFlag); + c->m_toiCount = 0; + c->m_toi = 1.0f; + } + } + + // Find TOI events and solve them. + for (;;) + { + // Find the first TOI. + b2Contact* minContact = NULL; + float32 minAlpha = 1.0f; + + for (b2Contact* c = m_contactManager.m_contactList; c; c = c->m_next) + { + // Is this contact disabled? + if (c->IsEnabled() == false) + { + continue; + } + + // Prevent excessive sub-stepping. + if (c->m_toiCount > b2_maxSubSteps) + { + continue; + } + + float32 alpha = 1.0f; + if (c->m_flags & b2Contact::e_toiFlag) + { + // This contact has a valid cached TOI. + alpha = c->m_toi; + } + else + { + b2Fixture* fA = c->GetFixtureA(); + b2Fixture* fB = c->GetFixtureB(); + + // Is there a sensor? + if (fA->IsSensor() || fB->IsSensor()) + { + continue; + } + + b2Body* bA = fA->GetBody(); + b2Body* bB = fB->GetBody(); + + b2BodyType typeA = bA->m_type; + b2BodyType typeB = bB->m_type; + b2Assert(typeA == b2_dynamicBody || typeB == b2_dynamicBody); + + bool activeA = bA->IsAwake() && typeA != b2_staticBody; + bool activeB = bB->IsAwake() && typeB != b2_staticBody; + + // Is at least one body active (awake and dynamic or kinematic)? + if (activeA == false && activeB == false) + { + continue; + } + + bool collideA = bA->IsBullet() || typeA != b2_dynamicBody; + bool collideB = bB->IsBullet() || typeB != b2_dynamicBody; + + // Are these two non-bullet dynamic bodies? + if (collideA == false && collideB == false) + { + continue; + } + + // Compute the TOI for this contact. + // Put the sweeps onto the same time interval. + float32 alpha0 = bA->m_sweep.alpha0; + + if (bA->m_sweep.alpha0 < bB->m_sweep.alpha0) + { + alpha0 = bB->m_sweep.alpha0; + bA->m_sweep.Advance(alpha0); + } + else if (bB->m_sweep.alpha0 < bA->m_sweep.alpha0) + { + alpha0 = bA->m_sweep.alpha0; + bB->m_sweep.Advance(alpha0); + } + + b2Assert(alpha0 < 1.0f); + + int32 indexA = c->GetChildIndexA(); + int32 indexB = c->GetChildIndexB(); + + // Compute the time of impact in interval [0, minTOI] + b2TOIInput input; + input.proxyA.Set(fA->GetShape(), indexA); + input.proxyB.Set(fB->GetShape(), indexB); + input.sweepA = bA->m_sweep; + input.sweepB = bB->m_sweep; + input.tMax = 1.0f; + + b2TOIOutput output; + b2TimeOfImpact(&output, &input); + + // Beta is the fraction of the remaining portion of the . + float32 beta = output.t; + if (output.state == b2TOIOutput::e_touching) + { + alpha = b2Min(alpha0 + (1.0f - alpha0) * beta, 1.0f); + } + else + { + alpha = 1.0f; + } + + c->m_toi = alpha; + c->m_flags |= b2Contact::e_toiFlag; + } + + if (alpha < minAlpha) + { + // This is the minimum TOI found so far. + minContact = c; + minAlpha = alpha; + } + } + + if (minContact == NULL || 1.0f - 10.0f * b2_epsilon < minAlpha) + { + // No more TOI events. Done! + m_stepComplete = true; + break; + } + + // Advance the bodies to the TOI. + b2Fixture* fA = minContact->GetFixtureA(); + b2Fixture* fB = minContact->GetFixtureB(); + b2Body* bA = fA->GetBody(); + b2Body* bB = fB->GetBody(); + + b2Sweep backup1 = bA->m_sweep; + b2Sweep backup2 = bB->m_sweep; + + bA->Advance(minAlpha); + bB->Advance(minAlpha); + + // The TOI contact likely has some new contact points. + minContact->Update(m_contactManager.m_contactListener); + minContact->m_flags &= ~b2Contact::e_toiFlag; + ++minContact->m_toiCount; + + // Is the contact solid? + if (minContact->IsEnabled() == false || minContact->IsTouching() == false) + { + // Restore the sweeps. + minContact->SetEnabled(false); + bA->m_sweep = backup1; + bB->m_sweep = backup2; + bA->SynchronizeTransform(); + bB->SynchronizeTransform(); + continue; + } + + bA->SetAwake(true); + bB->SetAwake(true); + + // Build the island + island.Clear(); + island.Add(bA); + island.Add(bB); + island.Add(minContact); + + bA->m_flags |= b2Body::e_islandFlag; + bB->m_flags |= b2Body::e_islandFlag; + minContact->m_flags |= b2Contact::e_islandFlag; + + // Get contacts on bodyA and bodyB. + b2Body* bodies[2] = {bA, bB}; + for (int32 i = 0; i < 2; ++i) + { + b2Body* body = bodies[i]; + if (body->m_type == b2_dynamicBody) + { + for (b2ContactEdge* ce = body->m_contactList; ce; ce = ce->next) + { + if (island.m_bodyCount == island.m_bodyCapacity) + { + break; + } + + if (island.m_contactCount == island.m_contactCapacity) + { + break; + } + + b2Contact* contact = ce->contact; + + // Has this contact already been added to the island? + if (contact->m_flags & b2Contact::e_islandFlag) + { + continue; + } + + // Only add static, kinematic, or bullet bodies. + b2Body* other = ce->other; + if (other->m_type == b2_dynamicBody && + body->IsBullet() == false && other->IsBullet() == false) + { + continue; + } + + // Skip sensors. + bool sensorA = contact->m_fixtureA->m_isSensor; + bool sensorB = contact->m_fixtureB->m_isSensor; + if (sensorA || sensorB) + { + continue; + } + + // Tentatively advance the body to the TOI. + b2Sweep backup = other->m_sweep; + if ((other->m_flags & b2Body::e_islandFlag) == 0) + { + other->Advance(minAlpha); + } + + // Update the contact points + contact->Update(m_contactManager.m_contactListener); + + // Was the contact disabled by the user? + if (contact->IsEnabled() == false) + { + other->m_sweep = backup; + other->SynchronizeTransform(); + continue; + } + + // Are there contact points? + if (contact->IsTouching() == false) + { + other->m_sweep = backup; + other->SynchronizeTransform(); + continue; + } + + // Add the contact to the island + contact->m_flags |= b2Contact::e_islandFlag; + island.Add(contact); + + // Has the other body already been added to the island? + if (other->m_flags & b2Body::e_islandFlag) + { + continue; + } + + // Add the other body to the island. + other->m_flags |= b2Body::e_islandFlag; + + if (other->m_type != b2_staticBody) + { + other->SetAwake(true); + } + + island.Add(other); + } + } + } + + b2TimeStep subStep; + subStep.dt = (1.0f - minAlpha) * step.dt; + subStep.inv_dt = 1.0f / subStep.dt; + subStep.dtRatio = 1.0f; + subStep.positionIterations = 20; + subStep.velocityIterations = step.velocityIterations; + subStep.warmStarting = false; + island.SolveTOI(subStep, bA->m_islandIndex, bB->m_islandIndex); + + // Reset island flags and synchronize broad-phase proxies. + for (int32 i = 0; i < island.m_bodyCount; ++i) + { + b2Body* body = island.m_bodies[i]; + body->m_flags &= ~b2Body::e_islandFlag; + + if (body->m_type != b2_dynamicBody) + { + continue; + } + + body->SynchronizeFixtures(); + + // Invalidate all contact TOIs on this displaced body. + for (b2ContactEdge* ce = body->m_contactList; ce; ce = ce->next) + { + ce->contact->m_flags &= ~(b2Contact::e_toiFlag | b2Contact::e_islandFlag); + } + } + + // Commit fixture proxy movements to the broad-phase so that new contacts are created. + // Also, some contacts can be destroyed. + m_contactManager.FindNewContacts(); + + if (m_subStepping) + { + m_stepComplete = false; + break; + } + } +} + +void b2World::Step(float32 dt, int32 velocityIterations, int32 positionIterations) +{ + b2Timer stepTimer; + + // If new fixtures were added, we need to find the new contacts. + if (m_flags & e_newFixture) + { + m_contactManager.FindNewContacts(); + m_flags &= ~e_newFixture; + } + + m_flags |= e_locked; + + b2TimeStep step; + step.dt = dt; + step.velocityIterations = velocityIterations; + step.positionIterations = positionIterations; + if (dt > 0.0f) + { + step.inv_dt = 1.0f / dt; + } + else + { + step.inv_dt = 0.0f; + } + + step.dtRatio = m_inv_dt0 * dt; + + step.warmStarting = m_warmStarting; + + // Update contacts. This is where some contacts are destroyed. + { + b2Timer timer; + m_contactManager.Collide(); + m_profile.collide = timer.GetMilliseconds(); + } + + // Integrate velocities, solve velocity constraints, and integrate positions. + if (m_stepComplete && step.dt > 0.0f) + { + b2Timer timer; + Solve(step); + m_profile.solve = timer.GetMilliseconds(); + } + + // Handle TOI events. + if (m_continuousPhysics && step.dt > 0.0f) + { + b2Timer timer; + SolveTOI(step); + m_profile.solveTOI = timer.GetMilliseconds(); + } + + if (step.dt > 0.0f) + { + m_inv_dt0 = step.inv_dt; + } + + if (m_flags & e_clearForces) + { + ClearForces(); + } + + m_flags &= ~e_locked; + + m_profile.step = stepTimer.GetMilliseconds(); +} + +void b2World::ClearForces() +{ + for (b2Body* body = m_bodyList; body; body = body->GetNext()) + { + body->m_force.SetZero(); + body->m_torque = 0.0f; + } +} + +struct b2WorldQueryWrapper +{ + bool QueryCallback(int32 proxyId) + { + b2FixtureProxy* proxy = (b2FixtureProxy*)broadPhase->GetUserData(proxyId); + return callback->ReportFixture(proxy->fixture); + } + + const b2BroadPhase* broadPhase; + b2QueryCallback* callback; +}; + +void b2World::QueryAABB(b2QueryCallback* callback, const b2AABB& aabb) const +{ + b2WorldQueryWrapper wrapper; + wrapper.broadPhase = &m_contactManager.m_broadPhase; + wrapper.callback = callback; + m_contactManager.m_broadPhase.Query(&wrapper, aabb); +} + +struct b2WorldRayCastWrapper +{ + float32 RayCastCallback(const b2RayCastInput& input, int32 proxyId) + { + void* userData = broadPhase->GetUserData(proxyId); + b2FixtureProxy* proxy = (b2FixtureProxy*)userData; + b2Fixture* fixture = proxy->fixture; + int32 index = proxy->childIndex; + b2RayCastOutput output; + bool hit = fixture->RayCast(&output, input, index); + + if (hit) + { + float32 fraction = output.fraction; + b2Vec2 point = (1.0f - fraction) * input.p1 + fraction * input.p2; + return callback->ReportFixture(fixture, point, output.normal, fraction); + } + + return input.maxFraction; + } + + const b2BroadPhase* broadPhase; + b2RayCastCallback* callback; +}; + +void b2World::RayCast(b2RayCastCallback* callback, const b2Vec2& point1, const b2Vec2& point2) const +{ + b2WorldRayCastWrapper wrapper; + wrapper.broadPhase = &m_contactManager.m_broadPhase; + wrapper.callback = callback; + b2RayCastInput input; + input.maxFraction = 1.0f; + input.p1 = point1; + input.p2 = point2; + m_contactManager.m_broadPhase.RayCast(&wrapper, input); +} + +void b2World::DrawShape(b2Fixture* fixture, const b2Transform& xf, const b2Color& color) +{ + switch (fixture->GetType()) + { + case b2Shape::e_circle: + { + b2CircleShape* circle = (b2CircleShape*)fixture->GetShape(); + + b2Vec2 center = b2Mul(xf, circle->m_p); + float32 radius = circle->m_radius; + b2Vec2 axis = b2Mul(xf.q, b2Vec2(1.0f, 0.0f)); + + g_debugDraw->DrawSolidCircle(center, radius, axis, color); + } + break; + + case b2Shape::e_edge: + { + b2EdgeShape* edge = (b2EdgeShape*)fixture->GetShape(); + b2Vec2 v1 = b2Mul(xf, edge->m_vertex1); + b2Vec2 v2 = b2Mul(xf, edge->m_vertex2); + g_debugDraw->DrawSegment(v1, v2, color); + } + break; + + case b2Shape::e_chain: + { + b2ChainShape* chain = (b2ChainShape*)fixture->GetShape(); + int32 count = chain->m_count; + const b2Vec2* vertices = chain->m_vertices; + + b2Vec2 v1 = b2Mul(xf, vertices[0]); + for (int32 i = 1; i < count; ++i) + { + b2Vec2 v2 = b2Mul(xf, vertices[i]); + g_debugDraw->DrawSegment(v1, v2, color); + g_debugDraw->DrawCircle(v1, 0.05f, color); + v1 = v2; + } + } + break; + + case b2Shape::e_polygon: + { + b2PolygonShape* poly = (b2PolygonShape*)fixture->GetShape(); + int32 vertexCount = poly->m_count; + b2Assert(vertexCount <= b2_maxPolygonVertices); + b2Vec2 vertices[b2_maxPolygonVertices]; + + for (int32 i = 0; i < vertexCount; ++i) + { + vertices[i] = b2Mul(xf, poly->m_vertices[i]); + } + + g_debugDraw->DrawSolidPolygon(vertices, vertexCount, color); + } + break; + + default: + break; + } +} + +void b2World::DrawJoint(b2Joint* joint) +{ + b2Body* bodyA = joint->GetBodyA(); + b2Body* bodyB = joint->GetBodyB(); + const b2Transform& xf1 = bodyA->GetTransform(); + const b2Transform& xf2 = bodyB->GetTransform(); + b2Vec2 x1 = xf1.p; + b2Vec2 x2 = xf2.p; + b2Vec2 p1 = joint->GetAnchorA(); + b2Vec2 p2 = joint->GetAnchorB(); + + b2Color color(0.5f, 0.8f, 0.8f); + + switch (joint->GetType()) + { + case e_distanceJoint: + g_debugDraw->DrawSegment(p1, p2, color); + break; + + case e_pulleyJoint: + { + b2PulleyJoint* pulley = (b2PulleyJoint*)joint; + b2Vec2 s1 = pulley->GetGroundAnchorA(); + b2Vec2 s2 = pulley->GetGroundAnchorB(); + g_debugDraw->DrawSegment(s1, p1, color); + g_debugDraw->DrawSegment(s2, p2, color); + g_debugDraw->DrawSegment(s1, s2, color); + } + break; + + case e_mouseJoint: + // don't draw this + break; + + default: + g_debugDraw->DrawSegment(x1, p1, color); + g_debugDraw->DrawSegment(p1, p2, color); + g_debugDraw->DrawSegment(x2, p2, color); + } +} + +void b2World::DrawDebugData() +{ + if (g_debugDraw == NULL) + { + return; + } + + uint32 flags = g_debugDraw->GetFlags(); + + if (flags & b2Draw::e_shapeBit) + { + for (b2Body* b = m_bodyList; b; b = b->GetNext()) + { + const b2Transform& xf = b->GetTransform(); + for (b2Fixture* f = b->GetFixtureList(); f; f = f->GetNext()) + { + if (b->IsActive() == false) + { + DrawShape(f, xf, b2Color(0.5f, 0.5f, 0.3f)); + } + else if (b->GetType() == b2_staticBody) + { + DrawShape(f, xf, b2Color(0.5f, 0.9f, 0.5f)); + } + else if (b->GetType() == b2_kinematicBody) + { + DrawShape(f, xf, b2Color(0.5f, 0.5f, 0.9f)); + } + else if (b->IsAwake() == false) + { + DrawShape(f, xf, b2Color(0.6f, 0.6f, 0.6f)); + } + else + { + DrawShape(f, xf, b2Color(0.9f, 0.7f, 0.7f)); + } + } + } + } + + if (flags & b2Draw::e_jointBit) + { + for (b2Joint* j = m_jointList; j; j = j->GetNext()) + { + DrawJoint(j); + } + } + + if (flags & b2Draw::e_pairBit) + { + b2Color color(0.3f, 0.9f, 0.9f); + for (b2Contact* c = m_contactManager.m_contactList; c; c = c->GetNext()) + { + //b2Fixture* fixtureA = c->GetFixtureA(); + //b2Fixture* fixtureB = c->GetFixtureB(); + + //b2Vec2 cA = fixtureA->GetAABB().GetCenter(); + //b2Vec2 cB = fixtureB->GetAABB().GetCenter(); + + //g_debugDraw->DrawSegment(cA, cB, color); + } + } + + if (flags & b2Draw::e_aabbBit) + { + b2Color color(0.9f, 0.3f, 0.9f); + b2BroadPhase* bp = &m_contactManager.m_broadPhase; + + for (b2Body* b = m_bodyList; b; b = b->GetNext()) + { + if (b->IsActive() == false) + { + continue; + } + + for (b2Fixture* f = b->GetFixtureList(); f; f = f->GetNext()) + { + for (int32 i = 0; i < f->m_proxyCount; ++i) + { + b2FixtureProxy* proxy = f->m_proxies + i; + b2AABB aabb = bp->GetFatAABB(proxy->proxyId); + b2Vec2 vs[4]; + vs[0].Set(aabb.lowerBound.x, aabb.lowerBound.y); + vs[1].Set(aabb.upperBound.x, aabb.lowerBound.y); + vs[2].Set(aabb.upperBound.x, aabb.upperBound.y); + vs[3].Set(aabb.lowerBound.x, aabb.upperBound.y); + + g_debugDraw->DrawPolygon(vs, 4, color); + } + } + } + } + + if (flags & b2Draw::e_centerOfMassBit) + { + for (b2Body* b = m_bodyList; b; b = b->GetNext()) + { + b2Transform xf = b->GetTransform(); + xf.p = b->GetWorldCenter(); + g_debugDraw->DrawTransform(xf); + } + } +} + +int32 b2World::GetProxyCount() const +{ + return m_contactManager.m_broadPhase.GetProxyCount(); +} + +int32 b2World::GetTreeHeight() const +{ + return m_contactManager.m_broadPhase.GetTreeHeight(); +} + +int32 b2World::GetTreeBalance() const +{ + return m_contactManager.m_broadPhase.GetTreeBalance(); +} + +float32 b2World::GetTreeQuality() const +{ + return m_contactManager.m_broadPhase.GetTreeQuality(); +} + +void b2World::ShiftOrigin(const b2Vec2& newOrigin) +{ + b2Assert((m_flags & e_locked) == 0); + if ((m_flags & e_locked) == e_locked) + { + return; + } + + for (b2Body* b = m_bodyList; b; b = b->m_next) + { + b->m_xf.p -= newOrigin; + b->m_sweep.c0 -= newOrigin; + b->m_sweep.c -= newOrigin; + } + + for (b2Joint* j = m_jointList; j; j = j->m_next) + { + j->ShiftOrigin(newOrigin); + } + + m_contactManager.m_broadPhase.ShiftOrigin(newOrigin); +} + +void b2World::Dump() +{ + if ((m_flags & e_locked) == e_locked) + { + return; + } + + b2Log("b2Vec2 g(%.15lef, %.15lef);\n", m_gravity.x, m_gravity.y); + b2Log("m_world->SetGravity(g);\n"); + + b2Log("b2Body** bodies = (b2Body**)b2Alloc(%d * sizeof(b2Body*));\n", m_bodyCount); + b2Log("b2Joint** joints = (b2Joint**)b2Alloc(%d * sizeof(b2Joint*));\n", m_jointCount); + int32 i = 0; + for (b2Body* b = m_bodyList; b; b = b->m_next) + { + b->m_islandIndex = i; + b->Dump(); + ++i; + } + + i = 0; + for (b2Joint* j = m_jointList; j; j = j->m_next) + { + j->m_index = i; + ++i; + } + + // First pass on joints, skip gear joints. + for (b2Joint* j = m_jointList; j; j = j->m_next) + { + if (j->m_type == e_gearJoint) + { + continue; + } + + b2Log("{\n"); + j->Dump(); + b2Log("}\n"); + } + + // Second pass on joints, only gear joints. + for (b2Joint* j = m_jointList; j; j = j->m_next) + { + if (j->m_type != e_gearJoint) + { + continue; + } + + b2Log("{\n"); + j->Dump(); + b2Log("}\n"); + } + + b2Log("b2Free(joints);\n"); + b2Log("b2Free(bodies);\n"); + b2Log("joints = NULL;\n"); + b2Log("bodies = NULL;\n"); +} diff --git a/Dependencies/Box2D/src/Dynamics/b2World.h b/Dependencies/Box2D/src/Dynamics/b2World.h new file mode 100644 index 00000000..5615b301 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/b2World.h @@ -0,0 +1,354 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_WORLD_H +#define B2_WORLD_H + +#include +#include +#include +#include +#include +#include + +struct b2AABB; +struct b2BodyDef; +struct b2Color; +struct b2JointDef; +class b2Body; +class b2Draw; +class b2Fixture; +class b2Joint; + +/// The world class manages all physics entities, dynamic simulation, +/// and asynchronous queries. The world also contains efficient memory +/// management facilities. +class b2World +{ +public: + /// Construct a world object. + /// @param gravity the world gravity vector. + b2World(const b2Vec2& gravity); + + /// Destruct the world. All physics entities are destroyed and all heap memory is released. + ~b2World(); + + /// Register a destruction listener. The listener is owned by you and must + /// remain in scope. + void SetDestructionListener(b2DestructionListener* listener); + + /// Register a contact filter to provide specific control over collision. + /// Otherwise the default filter is used (b2_defaultFilter). The listener is + /// owned by you and must remain in scope. + void SetContactFilter(b2ContactFilter* filter); + + /// Register a contact event listener. The listener is owned by you and must + /// remain in scope. + void SetContactListener(b2ContactListener* listener); + + /// Register a routine for debug drawing. The debug draw functions are called + /// inside with b2World::DrawDebugData method. The debug draw object is owned + /// by you and must remain in scope. + void SetDebugDraw(b2Draw* debugDraw); + + /// Create a rigid body given a definition. No reference to the definition + /// is retained. + /// @warning This function is locked during callbacks. + b2Body* CreateBody(const b2BodyDef* def); + + /// Destroy a rigid body given a definition. No reference to the definition + /// is retained. This function is locked during callbacks. + /// @warning This automatically deletes all associated shapes and joints. + /// @warning This function is locked during callbacks. + void DestroyBody(b2Body* body); + + /// Create a joint to constrain bodies together. No reference to the definition + /// is retained. This may cause the connected bodies to cease colliding. + /// @warning This function is locked during callbacks. + b2Joint* CreateJoint(const b2JointDef* def); + + /// Destroy a joint. This may cause the connected bodies to begin colliding. + /// @warning This function is locked during callbacks. + void DestroyJoint(b2Joint* joint); + + /// Take a time step. This performs collision detection, integration, + /// and constraint solution. + /// @param timeStep the amount of time to simulate, this should not vary. + /// @param velocityIterations for the velocity constraint solver. + /// @param positionIterations for the position constraint solver. + void Step( float32 timeStep, + int32 velocityIterations, + int32 positionIterations); + + /// Manually clear the force buffer on all bodies. By default, forces are cleared automatically + /// after each call to Step. The default behavior is modified by calling SetAutoClearForces. + /// The purpose of this function is to support sub-stepping. Sub-stepping is often used to maintain + /// a fixed sized time step under a variable frame-rate. + /// When you perform sub-stepping you will disable auto clearing of forces and instead call + /// ClearForces after all sub-steps are complete in one pass of your game loop. + /// @see SetAutoClearForces + void ClearForces(); + + /// Call this to draw shapes and other debug draw data. This is intentionally non-const. + void DrawDebugData(); + + /// Query the world for all fixtures that potentially overlap the + /// provided AABB. + /// @param callback a user implemented callback class. + /// @param aabb the query box. + void QueryAABB(b2QueryCallback* callback, const b2AABB& aabb) const; + + /// Ray-cast the world for all fixtures in the path of the ray. Your callback + /// controls whether you get the closest point, any point, or n-points. + /// The ray-cast ignores shapes that contain the starting point. + /// @param callback a user implemented callback class. + /// @param point1 the ray starting point + /// @param point2 the ray ending point + void RayCast(b2RayCastCallback* callback, const b2Vec2& point1, const b2Vec2& point2) const; + + /// Get the world body list. With the returned body, use b2Body::GetNext to get + /// the next body in the world list. A NULL body indicates the end of the list. + /// @return the head of the world body list. + b2Body* GetBodyList(); + const b2Body* GetBodyList() const; + + /// Get the world joint list. With the returned joint, use b2Joint::GetNext to get + /// the next joint in the world list. A NULL joint indicates the end of the list. + /// @return the head of the world joint list. + b2Joint* GetJointList(); + const b2Joint* GetJointList() const; + + /// Get the world contact list. With the returned contact, use b2Contact::GetNext to get + /// the next contact in the world list. A NULL contact indicates the end of the list. + /// @return the head of the world contact list. + /// @warning contacts are created and destroyed in the middle of a time step. + /// Use b2ContactListener to avoid missing contacts. + b2Contact* GetContactList(); + const b2Contact* GetContactList() const; + + /// Enable/disable sleep. + void SetAllowSleeping(bool flag); + bool GetAllowSleeping() const { return m_allowSleep; } + + /// Enable/disable warm starting. For testing. + void SetWarmStarting(bool flag) { m_warmStarting = flag; } + bool GetWarmStarting() const { return m_warmStarting; } + + /// Enable/disable continuous physics. For testing. + void SetContinuousPhysics(bool flag) { m_continuousPhysics = flag; } + bool GetContinuousPhysics() const { return m_continuousPhysics; } + + /// Enable/disable single stepped continuous physics. For testing. + void SetSubStepping(bool flag) { m_subStepping = flag; } + bool GetSubStepping() const { return m_subStepping; } + + /// Get the number of broad-phase proxies. + int32 GetProxyCount() const; + + /// Get the number of bodies. + int32 GetBodyCount() const; + + /// Get the number of joints. + int32 GetJointCount() const; + + /// Get the number of contacts (each may have 0 or more contact points). + int32 GetContactCount() const; + + /// Get the height of the dynamic tree. + int32 GetTreeHeight() const; + + /// Get the balance of the dynamic tree. + int32 GetTreeBalance() const; + + /// Get the quality metric of the dynamic tree. The smaller the better. + /// The minimum is 1. + float32 GetTreeQuality() const; + + /// Change the global gravity vector. + void SetGravity(const b2Vec2& gravity); + + /// Get the global gravity vector. + b2Vec2 GetGravity() const; + + /// Is the world locked (in the middle of a time step). + bool IsLocked() const; + + /// Set flag to control automatic clearing of forces after each time step. + void SetAutoClearForces(bool flag); + + /// Get the flag that controls automatic clearing of forces after each time step. + bool GetAutoClearForces() const; + + /// Shift the world origin. Useful for large worlds. + /// The body shift formula is: position -= newOrigin + /// @param newOrigin the new origin with respect to the old origin + void ShiftOrigin(const b2Vec2& newOrigin); + + /// Get the contact manager for testing. + const b2ContactManager& GetContactManager() const; + + /// Get the current profile. + const b2Profile& GetProfile() const; + + /// Dump the world into the log file. + /// @warning this should be called outside of a time step. + void Dump(); + +private: + + // m_flags + enum + { + e_newFixture = 0x0001, + e_locked = 0x0002, + e_clearForces = 0x0004 + }; + + friend class b2Body; + friend class b2Fixture; + friend class b2ContactManager; + friend class b2Controller; + + void Solve(const b2TimeStep& step); + void SolveTOI(const b2TimeStep& step); + + void DrawJoint(b2Joint* joint); + void DrawShape(b2Fixture* shape, const b2Transform& xf, const b2Color& color); + + b2BlockAllocator m_blockAllocator; + b2StackAllocator m_stackAllocator; + + int32 m_flags; + + b2ContactManager m_contactManager; + + b2Body* m_bodyList; + b2Joint* m_jointList; + + int32 m_bodyCount; + int32 m_jointCount; + + b2Vec2 m_gravity; + bool m_allowSleep; + + b2DestructionListener* m_destructionListener; + b2Draw* g_debugDraw; + + // This is used to compute the time step ratio to + // support a variable time step. + float32 m_inv_dt0; + + // These are for debugging the solver. + bool m_warmStarting; + bool m_continuousPhysics; + bool m_subStepping; + + bool m_stepComplete; + + b2Profile m_profile; +}; + +inline b2Body* b2World::GetBodyList() +{ + return m_bodyList; +} + +inline const b2Body* b2World::GetBodyList() const +{ + return m_bodyList; +} + +inline b2Joint* b2World::GetJointList() +{ + return m_jointList; +} + +inline const b2Joint* b2World::GetJointList() const +{ + return m_jointList; +} + +inline b2Contact* b2World::GetContactList() +{ + return m_contactManager.m_contactList; +} + +inline const b2Contact* b2World::GetContactList() const +{ + return m_contactManager.m_contactList; +} + +inline int32 b2World::GetBodyCount() const +{ + return m_bodyCount; +} + +inline int32 b2World::GetJointCount() const +{ + return m_jointCount; +} + +inline int32 b2World::GetContactCount() const +{ + return m_contactManager.m_contactCount; +} + +inline void b2World::SetGravity(const b2Vec2& gravity) +{ + m_gravity = gravity; +} + +inline b2Vec2 b2World::GetGravity() const +{ + return m_gravity; +} + +inline bool b2World::IsLocked() const +{ + return (m_flags & e_locked) == e_locked; +} + +inline void b2World::SetAutoClearForces(bool flag) +{ + if (flag) + { + m_flags |= e_clearForces; + } + else + { + m_flags &= ~e_clearForces; + } +} + +/// Get the flag that controls automatic clearing of forces after each time step. +inline bool b2World::GetAutoClearForces() const +{ + return (m_flags & e_clearForces) == e_clearForces; +} + +inline const b2ContactManager& b2World::GetContactManager() const +{ + return m_contactManager; +} + +inline const b2Profile& b2World::GetProfile() const +{ + return m_profile; +} + +#endif diff --git a/Dependencies/Box2D/src/Dynamics/b2WorldCallbacks.cpp b/Dependencies/Box2D/src/Dynamics/b2WorldCallbacks.cpp new file mode 100644 index 00000000..e1780077 --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/b2WorldCallbacks.cpp @@ -0,0 +1,36 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include + +// Return true if contact calculations should be performed between these two shapes. +// If you implement your own collision filter you may want to build from this implementation. +bool b2ContactFilter::ShouldCollide(b2Fixture* fixtureA, b2Fixture* fixtureB) +{ + const b2Filter& filterA = fixtureA->GetFilterData(); + const b2Filter& filterB = fixtureB->GetFilterData(); + + if (filterA.groupIndex == filterB.groupIndex && filterA.groupIndex != 0) + { + return filterA.groupIndex > 0; + } + + bool collide = (filterA.maskBits & filterB.categoryBits) != 0 && (filterA.categoryBits & filterB.maskBits) != 0; + return collide; +} diff --git a/Dependencies/Box2D/src/Dynamics/b2WorldCallbacks.h b/Dependencies/Box2D/src/Dynamics/b2WorldCallbacks.h new file mode 100644 index 00000000..6fec21db --- /dev/null +++ b/Dependencies/Box2D/src/Dynamics/b2WorldCallbacks.h @@ -0,0 +1,155 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_WORLD_CALLBACKS_H +#define B2_WORLD_CALLBACKS_H + +#include + +struct b2Vec2; +struct b2Transform; +class b2Fixture; +class b2Body; +class b2Joint; +class b2Contact; +struct b2ContactResult; +struct b2Manifold; + +/// Joints and fixtures are destroyed when their associated +/// body is destroyed. Implement this listener so that you +/// may nullify references to these joints and shapes. +class b2DestructionListener +{ +public: + virtual ~b2DestructionListener() {} + + /// Called when any joint is about to be destroyed due + /// to the destruction of one of its attached bodies. + virtual void SayGoodbye(b2Joint* joint) = 0; + + /// Called when any fixture is about to be destroyed due + /// to the destruction of its parent body. + virtual void SayGoodbye(b2Fixture* fixture) = 0; +}; + +/// Implement this class to provide collision filtering. In other words, you can implement +/// this class if you want finer control over contact creation. +class b2ContactFilter +{ +public: + virtual ~b2ContactFilter() {} + + /// Return true if contact calculations should be performed between these two shapes. + /// @warning for performance reasons this is only called when the AABBs begin to overlap. + virtual bool ShouldCollide(b2Fixture* fixtureA, b2Fixture* fixtureB); +}; + +/// Contact impulses for reporting. Impulses are used instead of forces because +/// sub-step forces may approach infinity for rigid body collisions. These +/// match up one-to-one with the contact points in b2Manifold. +struct b2ContactImpulse +{ + float32 normalImpulses[b2_maxManifoldPoints]; + float32 tangentImpulses[b2_maxManifoldPoints]; + int32 count; +}; + +/// Implement this class to get contact information. You can use these results for +/// things like sounds and game logic. You can also get contact results by +/// traversing the contact lists after the time step. However, you might miss +/// some contacts because continuous physics leads to sub-stepping. +/// Additionally you may receive multiple callbacks for the same contact in a +/// single time step. +/// You should strive to make your callbacks efficient because there may be +/// many callbacks per time step. +/// @warning You cannot create/destroy Box2D entities inside these callbacks. +class b2ContactListener +{ +public: + virtual ~b2ContactListener() {} + + /// Called when two fixtures begin to touch. + virtual void BeginContact(b2Contact* contact) { B2_NOT_USED(contact); } + + /// Called when two fixtures cease to touch. + virtual void EndContact(b2Contact* contact) { B2_NOT_USED(contact); } + + /// This is called after a contact is updated. This allows you to inspect a + /// contact before it goes to the solver. If you are careful, you can modify the + /// contact manifold (e.g. disable contact). + /// A copy of the old manifold is provided so that you can detect changes. + /// Note: this is called only for awake bodies. + /// Note: this is called even when the number of contact points is zero. + /// Note: this is not called for sensors. + /// Note: if you set the number of contact points to zero, you will not + /// get an EndContact callback. However, you may get a BeginContact callback + /// the next step. + virtual void PreSolve(b2Contact* contact, const b2Manifold* oldManifold) + { + B2_NOT_USED(contact); + B2_NOT_USED(oldManifold); + } + + /// This lets you inspect a contact after the solver is finished. This is useful + /// for inspecting impulses. + /// Note: the contact manifold does not include time of impact impulses, which can be + /// arbitrarily large if the sub-step is small. Hence the impulse is provided explicitly + /// in a separate data structure. + /// Note: this is only called for contacts that are touching, solid, and awake. + virtual void PostSolve(b2Contact* contact, const b2ContactImpulse* impulse) + { + B2_NOT_USED(contact); + B2_NOT_USED(impulse); + } +}; + +/// Callback class for AABB queries. +/// See b2World::Query +class b2QueryCallback +{ +public: + virtual ~b2QueryCallback() {} + + /// Called for each fixture found in the query AABB. + /// @return false to terminate the query. + virtual bool ReportFixture(b2Fixture* fixture) = 0; +}; + +/// Callback class for ray casts. +/// See b2World::RayCast +class b2RayCastCallback +{ +public: + virtual ~b2RayCastCallback() {} + + /// Called for each fixture found in the query. You control how the ray cast + /// proceeds by returning a float: + /// return -1: ignore this fixture and continue + /// return 0: terminate the ray cast + /// return fraction: clip the ray to this point + /// return 1: don't clip the ray and continue + /// @param fixture the fixture hit by the ray + /// @param point the point of initial intersection + /// @param normal the normal vector at the point of intersection + /// @return -1 to filter, 0 to terminate, fraction to clip the ray for + /// closest hit, 1 to continue + virtual float32 ReportFixture( b2Fixture* fixture, const b2Vec2& point, + const b2Vec2& normal, float32 fraction) = 0; +}; + +#endif diff --git a/Dependencies/Box2D/src/Rope/b2Rope.cpp b/Dependencies/Box2D/src/Rope/b2Rope.cpp new file mode 100644 index 00000000..2967c500 --- /dev/null +++ b/Dependencies/Box2D/src/Rope/b2Rope.cpp @@ -0,0 +1,259 @@ +/* +* Copyright (c) 2011 Erin Catto http://box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include + +b2Rope::b2Rope() +{ + m_count = 0; + m_ps = NULL; + m_p0s = NULL; + m_vs = NULL; + m_ims = NULL; + m_Ls = NULL; + m_as = NULL; + m_gravity.SetZero(); + m_k2 = 1.0f; + m_k3 = 0.1f; +} + +b2Rope::~b2Rope() +{ + b2Free(m_ps); + b2Free(m_p0s); + b2Free(m_vs); + b2Free(m_ims); + b2Free(m_Ls); + b2Free(m_as); +} + +void b2Rope::Initialize(const b2RopeDef* def) +{ + b2Assert(def->count >= 3); + m_count = def->count; + m_ps = (b2Vec2*)b2Alloc(m_count * sizeof(b2Vec2)); + m_p0s = (b2Vec2*)b2Alloc(m_count * sizeof(b2Vec2)); + m_vs = (b2Vec2*)b2Alloc(m_count * sizeof(b2Vec2)); + m_ims = (float32*)b2Alloc(m_count * sizeof(float32)); + + for (int32 i = 0; i < m_count; ++i) + { + m_ps[i] = def->vertices[i]; + m_p0s[i] = def->vertices[i]; + m_vs[i].SetZero(); + + float32 m = def->masses[i]; + if (m > 0.0f) + { + m_ims[i] = 1.0f / m; + } + else + { + m_ims[i] = 0.0f; + } + } + + int32 count2 = m_count - 1; + int32 count3 = m_count - 2; + m_Ls = (float32*)b2Alloc(count2 * sizeof(float32)); + m_as = (float32*)b2Alloc(count3 * sizeof(float32)); + + for (int32 i = 0; i < count2; ++i) + { + b2Vec2 p1 = m_ps[i]; + b2Vec2 p2 = m_ps[i+1]; + m_Ls[i] = b2Distance(p1, p2); + } + + for (int32 i = 0; i < count3; ++i) + { + b2Vec2 p1 = m_ps[i]; + b2Vec2 p2 = m_ps[i + 1]; + b2Vec2 p3 = m_ps[i + 2]; + + b2Vec2 d1 = p2 - p1; + b2Vec2 d2 = p3 - p2; + + float32 a = b2Cross(d1, d2); + float32 b = b2Dot(d1, d2); + + m_as[i] = b2Atan2(a, b); + } + + m_gravity = def->gravity; + m_damping = def->damping; + m_k2 = def->k2; + m_k3 = def->k3; +} + +void b2Rope::Step(float32 h, int32 iterations) +{ + if (h == 0.0) + { + return; + } + + float32 d = expf(- h * m_damping); + + for (int32 i = 0; i < m_count; ++i) + { + m_p0s[i] = m_ps[i]; + if (m_ims[i] > 0.0f) + { + m_vs[i] += h * m_gravity; + } + m_vs[i] *= d; + m_ps[i] += h * m_vs[i]; + + } + + for (int32 i = 0; i < iterations; ++i) + { + SolveC2(); + SolveC3(); + SolveC2(); + } + + float32 inv_h = 1.0f / h; + for (int32 i = 0; i < m_count; ++i) + { + m_vs[i] = inv_h * (m_ps[i] - m_p0s[i]); + } +} + +void b2Rope::SolveC2() +{ + int32 count2 = m_count - 1; + + for (int32 i = 0; i < count2; ++i) + { + b2Vec2 p1 = m_ps[i]; + b2Vec2 p2 = m_ps[i + 1]; + + b2Vec2 d = p2 - p1; + float32 L = d.Normalize(); + + float32 im1 = m_ims[i]; + float32 im2 = m_ims[i + 1]; + + if (im1 + im2 == 0.0f) + { + continue; + } + + float32 s1 = im1 / (im1 + im2); + float32 s2 = im2 / (im1 + im2); + + p1 -= m_k2 * s1 * (m_Ls[i] - L) * d; + p2 += m_k2 * s2 * (m_Ls[i] - L) * d; + + m_ps[i] = p1; + m_ps[i + 1] = p2; + } +} + +void b2Rope::SetAngle(float32 angle) +{ + int32 count3 = m_count - 2; + for (int32 i = 0; i < count3; ++i) + { + m_as[i] = angle; + } +} + +void b2Rope::SolveC3() +{ + int32 count3 = m_count - 2; + + for (int32 i = 0; i < count3; ++i) + { + b2Vec2 p1 = m_ps[i]; + b2Vec2 p2 = m_ps[i + 1]; + b2Vec2 p3 = m_ps[i + 2]; + + float32 m1 = m_ims[i]; + float32 m2 = m_ims[i + 1]; + float32 m3 = m_ims[i + 2]; + + b2Vec2 d1 = p2 - p1; + b2Vec2 d2 = p3 - p2; + + float32 L1sqr = d1.LengthSquared(); + float32 L2sqr = d2.LengthSquared(); + + if (L1sqr * L2sqr == 0.0f) + { + continue; + } + + float32 a = b2Cross(d1, d2); + float32 b = b2Dot(d1, d2); + + float32 angle = b2Atan2(a, b); + + b2Vec2 Jd1 = (-1.0f / L1sqr) * d1.Skew(); + b2Vec2 Jd2 = (1.0f / L2sqr) * d2.Skew(); + + b2Vec2 J1 = -Jd1; + b2Vec2 J2 = Jd1 - Jd2; + b2Vec2 J3 = Jd2; + + float32 mass = m1 * b2Dot(J1, J1) + m2 * b2Dot(J2, J2) + m3 * b2Dot(J3, J3); + if (mass == 0.0f) + { + continue; + } + + mass = 1.0f / mass; + + float32 C = angle - m_as[i]; + + while (C > b2_pi) + { + angle -= 2 * b2_pi; + C = angle - m_as[i]; + } + + while (C < -b2_pi) + { + angle += 2.0f * b2_pi; + C = angle - m_as[i]; + } + + float32 impulse = - m_k3 * mass * C; + + p1 += (m1 * impulse) * J1; + p2 += (m2 * impulse) * J2; + p3 += (m3 * impulse) * J3; + + m_ps[i] = p1; + m_ps[i + 1] = p2; + m_ps[i + 2] = p3; + } +} + +void b2Rope::Draw(b2Draw* draw) const +{ + b2Color c(0.4f, 0.5f, 0.7f); + + for (int32 i = 0; i < m_count - 1; ++i) + { + draw->DrawSegment(m_ps[i], m_ps[i+1], c); + } +} diff --git a/Dependencies/Box2D/src/Rope/b2Rope.h b/Dependencies/Box2D/src/Rope/b2Rope.h new file mode 100644 index 00000000..866bc822 --- /dev/null +++ b/Dependencies/Box2D/src/Rope/b2Rope.h @@ -0,0 +1,115 @@ +/* +* Copyright (c) 2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef B2_ROPE_H +#define B2_ROPE_H + +#include + +class b2Draw; + +/// +struct b2RopeDef +{ + b2RopeDef() + { + vertices = NULL; + count = 0; + masses = NULL; + gravity.SetZero(); + damping = 0.1f; + k2 = 0.9f; + k3 = 0.1f; + } + + /// + b2Vec2* vertices; + + /// + int32 count; + + /// + float32* masses; + + /// + b2Vec2 gravity; + + /// + float32 damping; + + /// Stretching stiffness + float32 k2; + + /// Bending stiffness. Values above 0.5 can make the simulation blow up. + float32 k3; +}; + +/// +class b2Rope +{ +public: + b2Rope(); + ~b2Rope(); + + /// + void Initialize(const b2RopeDef* def); + + /// + void Step(float32 timeStep, int32 iterations); + + /// + int32 GetVertexCount() const + { + return m_count; + } + + /// + const b2Vec2* GetVertices() const + { + return m_ps; + } + + /// + void Draw(b2Draw* draw) const; + + /// + void SetAngle(float32 angle); + +private: + + void SolveC2(); + void SolveC3(); + + int32 m_count; + b2Vec2* m_ps; + b2Vec2* m_p0s; + b2Vec2* m_vs; + + float32* m_ims; + + float32* m_Ls; + float32* m_as; + + b2Vec2 m_gravity; + float32 m_damping; + + float32 m_k2; + float32 m_k3; +}; + +#endif diff --git a/Dependencies/FreeImage/FreeImage.vcxproj b/Dependencies/FreeImage/FreeImage.vcxproj new file mode 100644 index 00000000..2d615cd9 --- /dev/null +++ b/Dependencies/FreeImage/FreeImage.vcxproj @@ -0,0 +1,410 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8} + FreeImage + 10.0.17763.0 + + + + StaticLibrary + true + v141 + MultiByte + + + StaticLibrary + false + v141 + true + MultiByte + + + Application + true + v141 + MultiByte + + + Application + false + v141 + true + MultiByte + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)bin\$(Configuration)\ + $(SolutionDir)bin\$(Configuration)\Intermediates\$(ProjectName)\ + + + $(SolutionDir)bin\$(Configuration)\ + $(SolutionDir)bin\$(Configuration)\Intermediates\$(ProjectName)\ + + + + TurnOffAllWarnings + Disabled + true + Source\ZLib;Source;Source\OpenEXR;Source\OpenEXR\IlmImf;Source\OpenEXR\Iex;Source\OpenEXR\Half;Source\OpenEXR\Imath;Source\OpenEXR\IlmThread + WIN32;NDEBUG;OPJ_STATIC;FREEIMAGE_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_MBCS;%(PreprocessorDefinitions) + + + + + Level3 + Disabled + true + + + + + TurnOffAllWarnings + MaxSpeed + true + true + true + Source\ZLib;Source;Source\OpenEXR;Source\OpenEXR\IlmImf;Source\OpenEXR\Iex;Source\OpenEXR\Half;Source\OpenEXR\Imath;Source\OpenEXR\IlmThread + WIN32;NDEBUG;OPJ_STATIC;FREEIMAGE_LIB;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_MBCS;%(PreprocessorDefinitions) + + + true + true + + + + + Level3 + MaxSpeed + true + true + true + + + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Dependencies/FreeImage/Source/FreeImage/Plugin.cpp b/Dependencies/FreeImage/Source/FreeImage/Plugin.cpp index b31e249f..2221526f 100644 --- a/Dependencies/FreeImage/Source/FreeImage/Plugin.cpp +++ b/Dependencies/FreeImage/Source/FreeImage/Plugin.cpp @@ -263,7 +263,7 @@ FreeImage_Initialise(BOOL load_local_plugins_only) { s_plugins->AddNode(InitDDS); s_plugins->AddNode(InitGIF); s_plugins->AddNode(InitHDR); - s_plugins->AddNode(InitG3); + //s_plugins->AddNode(InitG3); s_plugins->AddNode(InitSGI); // s_plugins->AddNode(InitEXR); s_plugins->AddNode(InitJ2K); diff --git a/Dependencies/FreeImage/Source/FreeImage/PluginPNG.cpp b/Dependencies/FreeImage/Source/FreeImage/PluginPNG.cpp index ba2ef17b..897c99a9 100644 --- a/Dependencies/FreeImage/Source/FreeImage/PluginPNG.cpp +++ b/Dependencies/FreeImage/Source/FreeImage/PluginPNG.cpp @@ -803,7 +803,7 @@ Load(FreeImageIO *io, fi_handle handle, int page, int flags, void *data) { static BOOL DLL_CALLCONV Save(FreeImageIO *io, FIBITMAP *dib, fi_handle handle, int page, int flags, void *data) { - png_structp png_ptr; + png_structp png_ptr = nullptr; png_infop info_ptr; png_colorp palette = NULL; png_uint_32 width, height; diff --git a/Dependencies/FreeImage/Source/LibTIFF4/tif_config.h b/Dependencies/FreeImage/Source/LibTIFF4/tif_config.h index 64391b88..3c21e1a7 100644 --- a/Dependencies/FreeImage/Source/LibTIFF4/tif_config.h +++ b/Dependencies/FreeImage/Source/LibTIFF4/tif_config.h @@ -81,7 +81,7 @@ If your big endian system isn't being detected, add an OS specific check #endif // BYTE_ORDER #ifdef _WIN32 -#define snprintf _snprintf +//#define snprintf _snprintf #define lfind _lfind #endif // _WIN32 diff --git a/Dependencies/FreeImage/Source/LibTIFF4/tif_config.vc.h b/Dependencies/FreeImage/Source/LibTIFF4/tif_config.vc.h index ef7588c0..a06069e3 100644 --- a/Dependencies/FreeImage/Source/LibTIFF4/tif_config.vc.h +++ b/Dependencies/FreeImage/Source/LibTIFF4/tif_config.vc.h @@ -49,7 +49,7 @@ /* Visual Studio 2015 / VC 14 / MSVC 19.00 finally has snprintf() */ #if defined(_MSC_VER) && _MSC_VER < 1900 -#define snprintf _snprintf +//#define snprintf _snprintf #endif /* Define to 1 if your processor stores words with the most significant byte diff --git a/Dependencies/FreeImage/Source/LibTIFF4/tif_dirread.c b/Dependencies/FreeImage/Source/LibTIFF4/tif_dirread.c index a046f939..0f8cc3ba 100644 --- a/Dependencies/FreeImage/Source/LibTIFF4/tif_dirread.c +++ b/Dependencies/FreeImage/Source/LibTIFF4/tif_dirread.c @@ -3716,7 +3716,7 @@ TIFFReadDirectory(TIFF* tif) case TIFFTAG_SMAXSAMPLEVALUE: { - double *data; + double *data = NULL; enum TIFFReadDirEntryErr err; uint32 saved_flags; int m; diff --git a/Dependencies/FreeImage/Source/ZLib/gzguts.h b/Dependencies/FreeImage/Source/ZLib/gzguts.h index bcb4f9cf..2258c273 100644 --- a/Dependencies/FreeImage/Source/ZLib/gzguts.h +++ b/Dependencies/FreeImage/Source/ZLib/gzguts.h @@ -18,7 +18,7 @@ # define ZLIB_INTERNAL #endif -#include +//#include #include #include "zlib.h" #ifdef STDC diff --git a/Dependencies/FreeImage/bin/freeimage.bc b/Dependencies/FreeImage/bin/freeimage.bc index bbd10c60..98b3f0cb 100644 Binary files a/Dependencies/FreeImage/bin/freeimage.bc and b/Dependencies/FreeImage/bin/freeimage.bc differ diff --git a/Dependencies/FreeType/FreeType.vcxproj b/Dependencies/FreeType/FreeType.vcxproj new file mode 100644 index 00000000..c13bc028 --- /dev/null +++ b/Dependencies/FreeType/FreeType.vcxproj @@ -0,0 +1,199 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7} + FreeType + 10.0.17763.0 + + + + DynamicLibrary + true + v141 + MultiByte + + + DynamicLibrary + false + v141 + true + MultiByte + + + Application + true + v141 + MultiByte + + + Application + false + v141 + true + MultiByte + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)bin\$(Configuration)\ + $(SolutionDir)bin\$(Configuration)\Intermediates\$(ProjectName)\ + SPFont + + + $(SolutionDir)bin\$(Configuration)\ + $(SolutionDir)bin\$(Configuration)\Intermediates\$(ProjectName)\ + SPFont + + + + Level3 + Disabled + true + SP_PLATFORM_WINDOWS;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_MBCS;%(PreprocessorDefinitions) + include;$(SolutionDir)Dependencies\GLEW\include; + true + + + $(SolutionDir)Dependencies\GLEW\lib; + glew32s.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + true + + + + + Level3 + Disabled + true + + + + + Level3 + MaxSpeed + true + true + true + SP_PLATFORM_WINDOWS;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_MBCS;%(PreprocessorDefinitions) + include;$(SolutionDir)Dependencies\GLEW\include; + + + true + true + $(SolutionDir)Dependencies\GLEW\lib; + glew32s.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + Level3 + MaxSpeed + true + true + true + + + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Dependencies/FreeType/freetype-gl/common.h b/Dependencies/FreeType/freetype-gl/common.h new file mode 100644 index 00000000..0e553621 --- /dev/null +++ b/Dependencies/FreeType/freetype-gl/common.h @@ -0,0 +1,3 @@ +#pragma once + +#define DLL_EXPORT __declspec(dllexport) diff --git a/Sparky-core/ext/freetype-gl/freetype-gl.h b/Dependencies/FreeType/freetype-gl/freetype-gl.h similarity index 100% rename from Sparky-core/ext/freetype-gl/freetype-gl.h rename to Dependencies/FreeType/freetype-gl/freetype-gl.h diff --git a/Sparky-core/ext/freetype-gl/opengl.h b/Dependencies/FreeType/freetype-gl/opengl.h similarity index 93% rename from Sparky-core/ext/freetype-gl/opengl.h rename to Dependencies/FreeType/freetype-gl/opengl.h index ffbc80cf..ebc61d37 100644 --- a/Sparky-core/ext/freetype-gl/opengl.h +++ b/Dependencies/FreeType/freetype-gl/opengl.h @@ -31,7 +31,7 @@ * policies, either expressed or implied, of Nicolas P. Rougier. * ============================================================================ */ -#ifndef SPARKY_EMSCRIPTEN +#ifndef SPARKY_PLATFORM_WEB #ifndef __OPEN_GL_H__ #define __OPEN_GL_H__ @@ -42,11 +42,11 @@ # else # include # endif -#elif defined(_WIN32) || defined(_WIN64) -# include +#elif defined(SP_PLATFORM_WINDOWS) || defined(_WIN64) +#include #else -# include -# include +//# include +//# include #endif #endif /* OPEN_GL_H */ diff --git a/Sparky-core/ext/freetype-gl/platform.c b/Dependencies/FreeType/freetype-gl/platform.c similarity index 100% rename from Sparky-core/ext/freetype-gl/platform.c rename to Dependencies/FreeType/freetype-gl/platform.c diff --git a/Sparky-core/ext/freetype-gl/platform.h b/Dependencies/FreeType/freetype-gl/platform.h similarity index 100% rename from Sparky-core/ext/freetype-gl/platform.h rename to Dependencies/FreeType/freetype-gl/platform.h diff --git a/Sparky-core/ext/freetype-gl/texture-atlas.c b/Dependencies/FreeType/freetype-gl/texture-atlas.c similarity index 99% rename from Sparky-core/ext/freetype-gl/texture-atlas.c rename to Dependencies/FreeType/freetype-gl/texture-atlas.c index ad93cd21..d29a89ab 100644 --- a/Sparky-core/ext/freetype-gl/texture-atlas.c +++ b/Dependencies/FreeType/freetype-gl/texture-atlas.c @@ -65,6 +65,7 @@ texture_atlas_new( const size_t width, self->height = height; self->depth = depth; self->id = 0; + self->dirty = 0; vector_push_back( self->nodes, &node ); self->data = (unsigned char *) @@ -93,7 +94,7 @@ texture_atlas_delete( texture_atlas_t *self ) } if( self->id ) { - glDeleteTextures( 1, &self->id ); + // SP: glDeleteTextures( 1, &self->id ); } free( self ); } @@ -325,6 +326,9 @@ texture_atlas_upload( texture_atlas_t * self ) assert( self ); assert( self->data ); + self->dirty = 1; + +#if 0 if( !self->id ) { glGenTextures( 1, &self->id ); @@ -360,5 +364,5 @@ texture_atlas_upload( texture_atlas_t * self ) glTexImage2D( GL_TEXTURE_2D, 0, GL_RED, self->width, self->height, 0, GL_RED, GL_UNSIGNED_BYTE, self->data); } -} - +#endif +} \ No newline at end of file diff --git a/Sparky-core/ext/freetype-gl/texture-atlas.h b/Dependencies/FreeType/freetype-gl/texture-atlas.h similarity index 97% rename from Sparky-core/ext/freetype-gl/texture-atlas.h rename to Dependencies/FreeType/freetype-gl/texture-atlas.h index 64b0f28e..b0b50083 100644 --- a/Sparky-core/ext/freetype-gl/texture-atlas.h +++ b/Dependencies/FreeType/freetype-gl/texture-atlas.h @@ -50,6 +50,7 @@ extern "C" { #endif +#include "common.h" #include "vector.h" #include "vec234.h" @@ -136,6 +137,8 @@ typedef struct texture_atlas_t */ unsigned char * data; + int dirty; + } texture_atlas_t; @@ -149,7 +152,7 @@ typedef struct texture_atlas_t * @return a new empty texture atlas. * */ - texture_atlas_t * + DLL_EXPORT texture_atlas_t * texture_atlas_new( const size_t width, const size_t height, const size_t depth ); @@ -161,7 +164,7 @@ typedef struct texture_atlas_t * @param self a texture atlas structure * */ - void + DLL_EXPORT void texture_atlas_delete( texture_atlas_t * self ); @@ -171,7 +174,7 @@ typedef struct texture_atlas_t * @param self a texture atlas structure * */ - void + DLL_EXPORT void texture_atlas_upload( texture_atlas_t * self ); @@ -184,7 +187,7 @@ typedef struct texture_atlas_t * @return Coordinates of the allocated region * */ - ivec4 + DLL_EXPORT ivec4 texture_atlas_get_region( texture_atlas_t * self, const size_t width, const size_t height ); @@ -202,7 +205,7 @@ typedef struct texture_atlas_t * @param stride stride of the data * */ - void + DLL_EXPORT void texture_atlas_set_region( texture_atlas_t * self, const size_t x, const size_t y, @@ -216,7 +219,7 @@ typedef struct texture_atlas_t * * @param self a texture atlas structure */ - void + DLL_EXPORT void texture_atlas_clear( texture_atlas_t * self ); diff --git a/Sparky-core/ext/freetype-gl/texture-font.c b/Dependencies/FreeType/freetype-gl/texture-font.c similarity index 99% rename from Sparky-core/ext/freetype-gl/texture-font.c rename to Dependencies/FreeType/freetype-gl/texture-font.c index 9d36319b..7e211338 100644 --- a/Sparky-core/ext/freetype-gl/texture-font.c +++ b/Dependencies/FreeType/freetype-gl/texture-font.c @@ -411,7 +411,7 @@ texture_font_load_glyphs( texture_font_t * self, FT_Library library; FT_Error error; FT_Face face; - FT_Glyph ft_glyph; + FT_Glyph ft_glyph = NULL; FT_GlyphSlot slot; FT_Bitmap ft_bitmap; @@ -645,7 +645,8 @@ texture_font_load_glyphs( texture_font_t * self, } FT_Done_Face( face ); FT_Done_FreeType( library ); - texture_atlas_upload( self->atlas ); + // SP: texture_atlas_upload( self->atlas ); + texture_atlas_upload(self->atlas); texture_font_generate_kerning( self ); return missed; } diff --git a/Sparky-core/ext/freetype-gl/texture-font.h b/Dependencies/FreeType/freetype-gl/texture-font.h similarity index 98% rename from Sparky-core/ext/freetype-gl/texture-font.h rename to Dependencies/FreeType/freetype-gl/texture-font.h index fddd21d4..728f7320 100644 --- a/Sparky-core/ext/freetype-gl/texture-font.h +++ b/Dependencies/FreeType/freetype-gl/texture-font.h @@ -40,6 +40,7 @@ extern "C" { #endif +#include "common.h" #include "vector.h" #include "texture-atlas.h" @@ -357,7 +358,7 @@ typedef struct texture_font_t * @return A new empty font (no glyph inside yet) * */ - texture_font_t * + DLL_EXPORT texture_font_t * texture_font_new_from_file( texture_atlas_t * atlas, const float pt_size, const char * filename ); @@ -378,7 +379,7 @@ typedef struct texture_font_t * @return A new empty font (no glyph inside yet) * */ - texture_font_t * + DLL_EXPORT texture_font_t * texture_font_new_from_memory( texture_atlas_t *atlas, float pt_size, const void *memory_base, @@ -390,7 +391,7 @@ typedef struct texture_font_t * * @param self a valid texture font */ - void + DLL_EXPORT void texture_font_delete( texture_font_t * self ); @@ -405,7 +406,7 @@ typedef struct texture_font_t * enough * */ - texture_glyph_t * + DLL_EXPORT texture_glyph_t * texture_font_get_glyph( texture_font_t * self, wchar_t charcode ); @@ -419,7 +420,7 @@ typedef struct texture_font_t * @return Number of missed glyph if the texture is not big enough to hold * every glyphs. */ - size_t + DLL_EXPORT size_t texture_font_load_glyphs( texture_font_t * self, const wchar_t * charcodes ); @@ -431,7 +432,7 @@ typedef struct texture_font_t * * @return x kerning value */ -float + DLL_EXPORT float texture_glyph_get_kerning( const texture_glyph_t * self, const wchar_t charcode ); @@ -441,7 +442,7 @@ texture_glyph_get_kerning( const texture_glyph_t * self, * * @return a new empty glyph (not valid) */ -texture_glyph_t * + DLL_EXPORT texture_glyph_t * texture_glyph_new( void ); /** @} */ diff --git a/Sparky-core/ext/freetype-gl/vec234.h b/Dependencies/FreeType/freetype-gl/vec234.h similarity index 100% rename from Sparky-core/ext/freetype-gl/vec234.h rename to Dependencies/FreeType/freetype-gl/vec234.h diff --git a/Sparky-core/ext/freetype-gl/vector.c b/Dependencies/FreeType/freetype-gl/vector.c similarity index 100% rename from Sparky-core/ext/freetype-gl/vector.c rename to Dependencies/FreeType/freetype-gl/vector.c diff --git a/Sparky-core/ext/freetype-gl/vector.h b/Dependencies/FreeType/freetype-gl/vector.h similarity index 100% rename from Sparky-core/ext/freetype-gl/vector.h rename to Dependencies/FreeType/freetype-gl/vector.h diff --git a/Sparky-core/ext/freetype/include/config/ftconfig.h b/Dependencies/FreeType/include/config/ftconfig.h similarity index 100% rename from Sparky-core/ext/freetype/include/config/ftconfig.h rename to Dependencies/FreeType/include/config/ftconfig.h diff --git a/Sparky-core/ext/freetype/include/config/ftheader.h b/Dependencies/FreeType/include/config/ftheader.h similarity index 100% rename from Sparky-core/ext/freetype/include/config/ftheader.h rename to Dependencies/FreeType/include/config/ftheader.h diff --git a/Sparky-core/ext/freetype/include/config/ftmodule.h b/Dependencies/FreeType/include/config/ftmodule.h similarity index 100% rename from Sparky-core/ext/freetype/include/config/ftmodule.h rename to Dependencies/FreeType/include/config/ftmodule.h diff --git a/Sparky-core/ext/freetype/include/config/ftoption.h b/Dependencies/FreeType/include/config/ftoption.h similarity index 100% rename from Sparky-core/ext/freetype/include/config/ftoption.h rename to Dependencies/FreeType/include/config/ftoption.h diff --git a/Sparky-core/ext/freetype/include/config/ftstdlib.h b/Dependencies/FreeType/include/config/ftstdlib.h similarity index 100% rename from Sparky-core/ext/freetype/include/config/ftstdlib.h rename to Dependencies/FreeType/include/config/ftstdlib.h diff --git a/Sparky-core/ext/freetype/include/freetype.h b/Dependencies/FreeType/include/freetype.h similarity index 100% rename from Sparky-core/ext/freetype/include/freetype.h rename to Dependencies/FreeType/include/freetype.h diff --git a/Sparky-core/ext/freetype/include/ft2build.h b/Dependencies/FreeType/include/ft2build.h similarity index 100% rename from Sparky-core/ext/freetype/include/ft2build.h rename to Dependencies/FreeType/include/ft2build.h diff --git a/Sparky-core/ext/freetype/include/ftadvanc.h b/Dependencies/FreeType/include/ftadvanc.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftadvanc.h rename to Dependencies/FreeType/include/ftadvanc.h diff --git a/Sparky-core/ext/freetype/include/ftautoh.h b/Dependencies/FreeType/include/ftautoh.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftautoh.h rename to Dependencies/FreeType/include/ftautoh.h diff --git a/Sparky-core/ext/freetype/include/ftbbox.h b/Dependencies/FreeType/include/ftbbox.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftbbox.h rename to Dependencies/FreeType/include/ftbbox.h diff --git a/Sparky-core/ext/freetype/include/ftbdf.h b/Dependencies/FreeType/include/ftbdf.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftbdf.h rename to Dependencies/FreeType/include/ftbdf.h diff --git a/Sparky-core/ext/freetype/include/ftbitmap.h b/Dependencies/FreeType/include/ftbitmap.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftbitmap.h rename to Dependencies/FreeType/include/ftbitmap.h diff --git a/Sparky-core/ext/freetype/include/ftbzip2.h b/Dependencies/FreeType/include/ftbzip2.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftbzip2.h rename to Dependencies/FreeType/include/ftbzip2.h diff --git a/Sparky-core/ext/freetype/include/ftcache.h b/Dependencies/FreeType/include/ftcache.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftcache.h rename to Dependencies/FreeType/include/ftcache.h diff --git a/Sparky-core/ext/freetype/include/ftcffdrv.h b/Dependencies/FreeType/include/ftcffdrv.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftcffdrv.h rename to Dependencies/FreeType/include/ftcffdrv.h diff --git a/Sparky-core/ext/freetype/include/ftchapters.h b/Dependencies/FreeType/include/ftchapters.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftchapters.h rename to Dependencies/FreeType/include/ftchapters.h diff --git a/Sparky-core/ext/freetype/include/ftcid.h b/Dependencies/FreeType/include/ftcid.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftcid.h rename to Dependencies/FreeType/include/ftcid.h diff --git a/Sparky-core/ext/freetype/include/fterrdef.h b/Dependencies/FreeType/include/fterrdef.h similarity index 100% rename from Sparky-core/ext/freetype/include/fterrdef.h rename to Dependencies/FreeType/include/fterrdef.h diff --git a/Sparky-core/ext/freetype/include/fterrors.h b/Dependencies/FreeType/include/fterrors.h similarity index 100% rename from Sparky-core/ext/freetype/include/fterrors.h rename to Dependencies/FreeType/include/fterrors.h diff --git a/Sparky-core/ext/freetype/include/ftgasp.h b/Dependencies/FreeType/include/ftgasp.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftgasp.h rename to Dependencies/FreeType/include/ftgasp.h diff --git a/Sparky-core/ext/freetype/include/ftglyph.h b/Dependencies/FreeType/include/ftglyph.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftglyph.h rename to Dependencies/FreeType/include/ftglyph.h diff --git a/Sparky-core/ext/freetype/include/ftgxval.h b/Dependencies/FreeType/include/ftgxval.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftgxval.h rename to Dependencies/FreeType/include/ftgxval.h diff --git a/Sparky-core/ext/freetype/include/ftgzip.h b/Dependencies/FreeType/include/ftgzip.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftgzip.h rename to Dependencies/FreeType/include/ftgzip.h diff --git a/Sparky-core/ext/freetype/include/ftimage.h b/Dependencies/FreeType/include/ftimage.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftimage.h rename to Dependencies/FreeType/include/ftimage.h diff --git a/Sparky-core/ext/freetype/include/ftincrem.h b/Dependencies/FreeType/include/ftincrem.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftincrem.h rename to Dependencies/FreeType/include/ftincrem.h diff --git a/Sparky-core/ext/freetype/include/ftlcdfil.h b/Dependencies/FreeType/include/ftlcdfil.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftlcdfil.h rename to Dependencies/FreeType/include/ftlcdfil.h diff --git a/Sparky-core/ext/freetype/include/ftlist.h b/Dependencies/FreeType/include/ftlist.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftlist.h rename to Dependencies/FreeType/include/ftlist.h diff --git a/Sparky-core/ext/freetype/include/ftlzw.h b/Dependencies/FreeType/include/ftlzw.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftlzw.h rename to Dependencies/FreeType/include/ftlzw.h diff --git a/Sparky-core/ext/freetype/include/ftmac.h b/Dependencies/FreeType/include/ftmac.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftmac.h rename to Dependencies/FreeType/include/ftmac.h diff --git a/Sparky-core/ext/freetype/include/ftmm.h b/Dependencies/FreeType/include/ftmm.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftmm.h rename to Dependencies/FreeType/include/ftmm.h diff --git a/Sparky-core/ext/freetype/include/ftmodapi.h b/Dependencies/FreeType/include/ftmodapi.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftmodapi.h rename to Dependencies/FreeType/include/ftmodapi.h diff --git a/Sparky-core/ext/freetype/include/ftmoderr.h b/Dependencies/FreeType/include/ftmoderr.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftmoderr.h rename to Dependencies/FreeType/include/ftmoderr.h diff --git a/Sparky-core/ext/freetype/include/ftotval.h b/Dependencies/FreeType/include/ftotval.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftotval.h rename to Dependencies/FreeType/include/ftotval.h diff --git a/Sparky-core/ext/freetype/include/ftoutln.h b/Dependencies/FreeType/include/ftoutln.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftoutln.h rename to Dependencies/FreeType/include/ftoutln.h diff --git a/Sparky-core/ext/freetype/include/ftpfr.h b/Dependencies/FreeType/include/ftpfr.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftpfr.h rename to Dependencies/FreeType/include/ftpfr.h diff --git a/Sparky-core/ext/freetype/include/ftrender.h b/Dependencies/FreeType/include/ftrender.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftrender.h rename to Dependencies/FreeType/include/ftrender.h diff --git a/Sparky-core/ext/freetype/include/ftsizes.h b/Dependencies/FreeType/include/ftsizes.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftsizes.h rename to Dependencies/FreeType/include/ftsizes.h diff --git a/Sparky-core/ext/freetype/include/ftsnames.h b/Dependencies/FreeType/include/ftsnames.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftsnames.h rename to Dependencies/FreeType/include/ftsnames.h diff --git a/Sparky-core/ext/freetype/include/ftstroke.h b/Dependencies/FreeType/include/ftstroke.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftstroke.h rename to Dependencies/FreeType/include/ftstroke.h diff --git a/Sparky-core/ext/freetype/include/ftsynth.h b/Dependencies/FreeType/include/ftsynth.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftsynth.h rename to Dependencies/FreeType/include/ftsynth.h diff --git a/Sparky-core/ext/freetype/include/ftsystem.h b/Dependencies/FreeType/include/ftsystem.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftsystem.h rename to Dependencies/FreeType/include/ftsystem.h diff --git a/Sparky-core/ext/freetype/include/fttrigon.h b/Dependencies/FreeType/include/fttrigon.h similarity index 100% rename from Sparky-core/ext/freetype/include/fttrigon.h rename to Dependencies/FreeType/include/fttrigon.h diff --git a/Sparky-core/ext/freetype/include/ftttdrv.h b/Dependencies/FreeType/include/ftttdrv.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftttdrv.h rename to Dependencies/FreeType/include/ftttdrv.h diff --git a/Sparky-core/ext/freetype/include/fttypes.h b/Dependencies/FreeType/include/fttypes.h similarity index 100% rename from Sparky-core/ext/freetype/include/fttypes.h rename to Dependencies/FreeType/include/fttypes.h diff --git a/Sparky-core/ext/freetype/include/ftwinfnt.h b/Dependencies/FreeType/include/ftwinfnt.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftwinfnt.h rename to Dependencies/FreeType/include/ftwinfnt.h diff --git a/Sparky-core/ext/freetype/include/ftxf86.h b/Dependencies/FreeType/include/ftxf86.h similarity index 100% rename from Sparky-core/ext/freetype/include/ftxf86.h rename to Dependencies/FreeType/include/ftxf86.h diff --git a/Sparky-core/ext/freetype/include/internal/autohint.h b/Dependencies/FreeType/include/internal/autohint.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/autohint.h rename to Dependencies/FreeType/include/internal/autohint.h diff --git a/Sparky-core/ext/freetype/include/internal/ftcalc.h b/Dependencies/FreeType/include/internal/ftcalc.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/ftcalc.h rename to Dependencies/FreeType/include/internal/ftcalc.h diff --git a/Sparky-core/ext/freetype/include/internal/ftdebug.h b/Dependencies/FreeType/include/internal/ftdebug.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/ftdebug.h rename to Dependencies/FreeType/include/internal/ftdebug.h diff --git a/Sparky-core/ext/freetype/include/internal/ftdriver.h b/Dependencies/FreeType/include/internal/ftdriver.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/ftdriver.h rename to Dependencies/FreeType/include/internal/ftdriver.h diff --git a/Sparky-core/ext/freetype/include/internal/ftgloadr.h b/Dependencies/FreeType/include/internal/ftgloadr.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/ftgloadr.h rename to Dependencies/FreeType/include/internal/ftgloadr.h diff --git a/Sparky-core/ext/freetype/include/internal/ftmemory.h b/Dependencies/FreeType/include/internal/ftmemory.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/ftmemory.h rename to Dependencies/FreeType/include/internal/ftmemory.h diff --git a/Sparky-core/ext/freetype/include/internal/ftobjs.h b/Dependencies/FreeType/include/internal/ftobjs.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/ftobjs.h rename to Dependencies/FreeType/include/internal/ftobjs.h diff --git a/Sparky-core/ext/freetype/include/internal/ftpic.h b/Dependencies/FreeType/include/internal/ftpic.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/ftpic.h rename to Dependencies/FreeType/include/internal/ftpic.h diff --git a/Sparky-core/ext/freetype/include/internal/ftrfork.h b/Dependencies/FreeType/include/internal/ftrfork.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/ftrfork.h rename to Dependencies/FreeType/include/internal/ftrfork.h diff --git a/Sparky-core/ext/freetype/include/internal/ftserv.h b/Dependencies/FreeType/include/internal/ftserv.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/ftserv.h rename to Dependencies/FreeType/include/internal/ftserv.h diff --git a/Sparky-core/ext/freetype/include/internal/ftstream.h b/Dependencies/FreeType/include/internal/ftstream.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/ftstream.h rename to Dependencies/FreeType/include/internal/ftstream.h diff --git a/Sparky-core/ext/freetype/include/internal/fttrace.h b/Dependencies/FreeType/include/internal/fttrace.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/fttrace.h rename to Dependencies/FreeType/include/internal/fttrace.h diff --git a/Sparky-core/ext/freetype/include/internal/ftvalid.h b/Dependencies/FreeType/include/internal/ftvalid.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/ftvalid.h rename to Dependencies/FreeType/include/internal/ftvalid.h diff --git a/Sparky-core/ext/freetype/include/internal/internal.h b/Dependencies/FreeType/include/internal/internal.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/internal.h rename to Dependencies/FreeType/include/internal/internal.h diff --git a/Sparky-core/ext/freetype/include/internal/psaux.h b/Dependencies/FreeType/include/internal/psaux.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/psaux.h rename to Dependencies/FreeType/include/internal/psaux.h diff --git a/Sparky-core/ext/freetype/include/internal/pshints.h b/Dependencies/FreeType/include/internal/pshints.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/pshints.h rename to Dependencies/FreeType/include/internal/pshints.h diff --git a/Sparky-core/ext/freetype/include/internal/services/svbdf.h b/Dependencies/FreeType/include/internal/services/svbdf.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/services/svbdf.h rename to Dependencies/FreeType/include/internal/services/svbdf.h diff --git a/Sparky-core/ext/freetype/include/internal/services/svcid.h b/Dependencies/FreeType/include/internal/services/svcid.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/services/svcid.h rename to Dependencies/FreeType/include/internal/services/svcid.h diff --git a/Sparky-core/ext/freetype/include/internal/services/svgldict.h b/Dependencies/FreeType/include/internal/services/svgldict.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/services/svgldict.h rename to Dependencies/FreeType/include/internal/services/svgldict.h diff --git a/Sparky-core/ext/freetype/include/internal/services/svgxval.h b/Dependencies/FreeType/include/internal/services/svgxval.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/services/svgxval.h rename to Dependencies/FreeType/include/internal/services/svgxval.h diff --git a/Sparky-core/ext/freetype/include/internal/services/svkern.h b/Dependencies/FreeType/include/internal/services/svkern.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/services/svkern.h rename to Dependencies/FreeType/include/internal/services/svkern.h diff --git a/Sparky-core/ext/freetype/include/internal/services/svmm.h b/Dependencies/FreeType/include/internal/services/svmm.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/services/svmm.h rename to Dependencies/FreeType/include/internal/services/svmm.h diff --git a/Sparky-core/ext/freetype/include/internal/services/svotval.h b/Dependencies/FreeType/include/internal/services/svotval.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/services/svotval.h rename to Dependencies/FreeType/include/internal/services/svotval.h diff --git a/Sparky-core/ext/freetype/include/internal/services/svpfr.h b/Dependencies/FreeType/include/internal/services/svpfr.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/services/svpfr.h rename to Dependencies/FreeType/include/internal/services/svpfr.h diff --git a/Sparky-core/ext/freetype/include/internal/services/svpostnm.h b/Dependencies/FreeType/include/internal/services/svpostnm.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/services/svpostnm.h rename to Dependencies/FreeType/include/internal/services/svpostnm.h diff --git a/Sparky-core/ext/freetype/include/internal/services/svprop.h b/Dependencies/FreeType/include/internal/services/svprop.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/services/svprop.h rename to Dependencies/FreeType/include/internal/services/svprop.h diff --git a/Sparky-core/ext/freetype/include/internal/services/svpscmap.h b/Dependencies/FreeType/include/internal/services/svpscmap.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/services/svpscmap.h rename to Dependencies/FreeType/include/internal/services/svpscmap.h diff --git a/Sparky-core/ext/freetype/include/internal/services/svpsinfo.h b/Dependencies/FreeType/include/internal/services/svpsinfo.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/services/svpsinfo.h rename to Dependencies/FreeType/include/internal/services/svpsinfo.h diff --git a/Sparky-core/ext/freetype/include/internal/services/svsfnt.h b/Dependencies/FreeType/include/internal/services/svsfnt.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/services/svsfnt.h rename to Dependencies/FreeType/include/internal/services/svsfnt.h diff --git a/Sparky-core/ext/freetype/include/internal/services/svttcmap.h b/Dependencies/FreeType/include/internal/services/svttcmap.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/services/svttcmap.h rename to Dependencies/FreeType/include/internal/services/svttcmap.h diff --git a/Sparky-core/ext/freetype/include/internal/services/svtteng.h b/Dependencies/FreeType/include/internal/services/svtteng.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/services/svtteng.h rename to Dependencies/FreeType/include/internal/services/svtteng.h diff --git a/Sparky-core/ext/freetype/include/internal/services/svttglyf.h b/Dependencies/FreeType/include/internal/services/svttglyf.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/services/svttglyf.h rename to Dependencies/FreeType/include/internal/services/svttglyf.h diff --git a/Sparky-core/ext/freetype/include/internal/services/svwinfnt.h b/Dependencies/FreeType/include/internal/services/svwinfnt.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/services/svwinfnt.h rename to Dependencies/FreeType/include/internal/services/svwinfnt.h diff --git a/Sparky-core/ext/freetype/include/internal/services/svxf86nm.h b/Dependencies/FreeType/include/internal/services/svxf86nm.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/services/svxf86nm.h rename to Dependencies/FreeType/include/internal/services/svxf86nm.h diff --git a/Sparky-core/ext/freetype/include/internal/sfnt.h b/Dependencies/FreeType/include/internal/sfnt.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/sfnt.h rename to Dependencies/FreeType/include/internal/sfnt.h diff --git a/Sparky-core/ext/freetype/include/internal/t1types.h b/Dependencies/FreeType/include/internal/t1types.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/t1types.h rename to Dependencies/FreeType/include/internal/t1types.h diff --git a/Sparky-core/ext/freetype/include/internal/tttypes.h b/Dependencies/FreeType/include/internal/tttypes.h similarity index 100% rename from Sparky-core/ext/freetype/include/internal/tttypes.h rename to Dependencies/FreeType/include/internal/tttypes.h diff --git a/Sparky-core/ext/freetype/include/t1tables.h b/Dependencies/FreeType/include/t1tables.h similarity index 100% rename from Sparky-core/ext/freetype/include/t1tables.h rename to Dependencies/FreeType/include/t1tables.h diff --git a/Sparky-core/ext/freetype/include/ttnameid.h b/Dependencies/FreeType/include/ttnameid.h similarity index 100% rename from Sparky-core/ext/freetype/include/ttnameid.h rename to Dependencies/FreeType/include/ttnameid.h diff --git a/Sparky-core/ext/freetype/include/tttables.h b/Dependencies/FreeType/include/tttables.h similarity index 100% rename from Sparky-core/ext/freetype/include/tttables.h rename to Dependencies/FreeType/include/tttables.h diff --git a/Sparky-core/ext/freetype/include/tttags.h b/Dependencies/FreeType/include/tttags.h similarity index 100% rename from Sparky-core/ext/freetype/include/tttags.h rename to Dependencies/FreeType/include/tttags.h diff --git a/Sparky-core/ext/freetype/include/ttunpat.h b/Dependencies/FreeType/include/ttunpat.h similarity index 100% rename from Sparky-core/ext/freetype/include/ttunpat.h rename to Dependencies/FreeType/include/ttunpat.h diff --git a/Sparky-core/ext/freetype/src/autofit/afangles.c b/Dependencies/FreeType/src/autofit/afangles.c similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afangles.c rename to Dependencies/FreeType/src/autofit/afangles.c diff --git a/Sparky-core/ext/freetype/src/autofit/afangles.h b/Dependencies/FreeType/src/autofit/afangles.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afangles.h rename to Dependencies/FreeType/src/autofit/afangles.h diff --git a/Sparky-core/ext/freetype/src/autofit/afblue.c b/Dependencies/FreeType/src/autofit/afblue.c similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afblue.c rename to Dependencies/FreeType/src/autofit/afblue.c diff --git a/Sparky-core/ext/freetype/src/autofit/afblue.cin b/Dependencies/FreeType/src/autofit/afblue.cin similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afblue.cin rename to Dependencies/FreeType/src/autofit/afblue.cin diff --git a/Sparky-core/ext/freetype/src/autofit/afblue.dat b/Dependencies/FreeType/src/autofit/afblue.dat similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afblue.dat rename to Dependencies/FreeType/src/autofit/afblue.dat diff --git a/Sparky-core/ext/freetype/src/autofit/afblue.h b/Dependencies/FreeType/src/autofit/afblue.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afblue.h rename to Dependencies/FreeType/src/autofit/afblue.h diff --git a/Sparky-core/ext/freetype/src/autofit/afcjk.c b/Dependencies/FreeType/src/autofit/afcjk.c similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afcjk.c rename to Dependencies/FreeType/src/autofit/afcjk.c diff --git a/Sparky-core/ext/freetype/src/autofit/afcjk.h b/Dependencies/FreeType/src/autofit/afcjk.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afcjk.h rename to Dependencies/FreeType/src/autofit/afcjk.h diff --git a/Sparky-core/ext/freetype/src/autofit/afcover.h b/Dependencies/FreeType/src/autofit/afcover.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afcover.h rename to Dependencies/FreeType/src/autofit/afcover.h diff --git a/Sparky-core/ext/freetype/src/autofit/afdummy.c b/Dependencies/FreeType/src/autofit/afdummy.c similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afdummy.c rename to Dependencies/FreeType/src/autofit/afdummy.c diff --git a/Sparky-core/ext/freetype/src/autofit/afdummy.h b/Dependencies/FreeType/src/autofit/afdummy.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afdummy.h rename to Dependencies/FreeType/src/autofit/afdummy.h diff --git a/Sparky-core/ext/freetype/src/autofit/aferrors.h b/Dependencies/FreeType/src/autofit/aferrors.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/aferrors.h rename to Dependencies/FreeType/src/autofit/aferrors.h diff --git a/Sparky-core/ext/freetype/src/autofit/afglobal.c b/Dependencies/FreeType/src/autofit/afglobal.c similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afglobal.c rename to Dependencies/FreeType/src/autofit/afglobal.c diff --git a/Sparky-core/ext/freetype/src/autofit/afglobal.h b/Dependencies/FreeType/src/autofit/afglobal.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afglobal.h rename to Dependencies/FreeType/src/autofit/afglobal.h diff --git a/Sparky-core/ext/freetype/src/autofit/afhints.c b/Dependencies/FreeType/src/autofit/afhints.c similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afhints.c rename to Dependencies/FreeType/src/autofit/afhints.c diff --git a/Sparky-core/ext/freetype/src/autofit/afhints.h b/Dependencies/FreeType/src/autofit/afhints.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afhints.h rename to Dependencies/FreeType/src/autofit/afhints.h diff --git a/Sparky-core/ext/freetype/src/autofit/afindic.c b/Dependencies/FreeType/src/autofit/afindic.c similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afindic.c rename to Dependencies/FreeType/src/autofit/afindic.c diff --git a/Sparky-core/ext/freetype/src/autofit/afindic.h b/Dependencies/FreeType/src/autofit/afindic.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afindic.h rename to Dependencies/FreeType/src/autofit/afindic.h diff --git a/Sparky-core/ext/freetype/src/autofit/aflatin.c b/Dependencies/FreeType/src/autofit/aflatin.c similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/aflatin.c rename to Dependencies/FreeType/src/autofit/aflatin.c diff --git a/Sparky-core/ext/freetype/src/autofit/aflatin.h b/Dependencies/FreeType/src/autofit/aflatin.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/aflatin.h rename to Dependencies/FreeType/src/autofit/aflatin.h diff --git a/Sparky-core/ext/freetype/src/autofit/aflatin2.c b/Dependencies/FreeType/src/autofit/aflatin2.c similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/aflatin2.c rename to Dependencies/FreeType/src/autofit/aflatin2.c diff --git a/Sparky-core/ext/freetype/src/autofit/aflatin2.h b/Dependencies/FreeType/src/autofit/aflatin2.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/aflatin2.h rename to Dependencies/FreeType/src/autofit/aflatin2.h diff --git a/Sparky-core/ext/freetype/src/autofit/afloader.c b/Dependencies/FreeType/src/autofit/afloader.c similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afloader.c rename to Dependencies/FreeType/src/autofit/afloader.c diff --git a/Sparky-core/ext/freetype/src/autofit/afloader.h b/Dependencies/FreeType/src/autofit/afloader.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afloader.h rename to Dependencies/FreeType/src/autofit/afloader.h diff --git a/Sparky-core/ext/freetype/src/autofit/afmodule.c b/Dependencies/FreeType/src/autofit/afmodule.c similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afmodule.c rename to Dependencies/FreeType/src/autofit/afmodule.c diff --git a/Sparky-core/ext/freetype/src/autofit/afmodule.h b/Dependencies/FreeType/src/autofit/afmodule.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afmodule.h rename to Dependencies/FreeType/src/autofit/afmodule.h diff --git a/Sparky-core/ext/freetype/src/autofit/afpic.c b/Dependencies/FreeType/src/autofit/afpic.c similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afpic.c rename to Dependencies/FreeType/src/autofit/afpic.c diff --git a/Sparky-core/ext/freetype/src/autofit/afpic.h b/Dependencies/FreeType/src/autofit/afpic.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afpic.h rename to Dependencies/FreeType/src/autofit/afpic.h diff --git a/Sparky-core/ext/freetype/src/autofit/afranges.c b/Dependencies/FreeType/src/autofit/afranges.c similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afranges.c rename to Dependencies/FreeType/src/autofit/afranges.c diff --git a/Sparky-core/ext/freetype/src/autofit/afranges.h b/Dependencies/FreeType/src/autofit/afranges.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afranges.h rename to Dependencies/FreeType/src/autofit/afranges.h diff --git a/Sparky-core/ext/freetype/src/autofit/afscript.h b/Dependencies/FreeType/src/autofit/afscript.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afscript.h rename to Dependencies/FreeType/src/autofit/afscript.h diff --git a/Sparky-core/ext/freetype/src/autofit/afstyles.h b/Dependencies/FreeType/src/autofit/afstyles.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afstyles.h rename to Dependencies/FreeType/src/autofit/afstyles.h diff --git a/Sparky-core/ext/freetype/src/autofit/aftypes.h b/Dependencies/FreeType/src/autofit/aftypes.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/aftypes.h rename to Dependencies/FreeType/src/autofit/aftypes.h diff --git a/Sparky-core/ext/freetype/src/autofit/afwarp.c b/Dependencies/FreeType/src/autofit/afwarp.c similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afwarp.c rename to Dependencies/FreeType/src/autofit/afwarp.c diff --git a/Sparky-core/ext/freetype/src/autofit/afwarp.h b/Dependencies/FreeType/src/autofit/afwarp.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afwarp.h rename to Dependencies/FreeType/src/autofit/afwarp.h diff --git a/Sparky-core/ext/freetype/src/autofit/afwrtsys.h b/Dependencies/FreeType/src/autofit/afwrtsys.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/afwrtsys.h rename to Dependencies/FreeType/src/autofit/afwrtsys.h diff --git a/Sparky-core/ext/freetype/src/autofit/autofit.c b/Dependencies/FreeType/src/autofit/autofit.c similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/autofit.c rename to Dependencies/FreeType/src/autofit/autofit.c diff --git a/Sparky-core/ext/freetype/src/autofit/hbshim.c b/Dependencies/FreeType/src/autofit/hbshim.c similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/hbshim.c rename to Dependencies/FreeType/src/autofit/hbshim.c diff --git a/Sparky-core/ext/freetype/src/autofit/hbshim.h b/Dependencies/FreeType/src/autofit/hbshim.h similarity index 100% rename from Sparky-core/ext/freetype/src/autofit/hbshim.h rename to Dependencies/FreeType/src/autofit/hbshim.h diff --git a/Sparky-core/ext/freetype/src/base/basepic.c b/Dependencies/FreeType/src/base/basepic.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/basepic.c rename to Dependencies/FreeType/src/base/basepic.c diff --git a/Sparky-core/ext/freetype/src/base/basepic.h b/Dependencies/FreeType/src/base/basepic.h similarity index 100% rename from Sparky-core/ext/freetype/src/base/basepic.h rename to Dependencies/FreeType/src/base/basepic.h diff --git a/Sparky-core/ext/freetype/src/base/ftadvanc.c b/Dependencies/FreeType/src/base/ftadvanc.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftadvanc.c rename to Dependencies/FreeType/src/base/ftadvanc.c diff --git a/Sparky-core/ext/freetype/src/base/ftapi.c b/Dependencies/FreeType/src/base/ftapi.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftapi.c rename to Dependencies/FreeType/src/base/ftapi.c diff --git a/Sparky-core/ext/freetype/src/base/ftbase.c b/Dependencies/FreeType/src/base/ftbase.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftbase.c rename to Dependencies/FreeType/src/base/ftbase.c diff --git a/Sparky-core/ext/freetype/src/base/ftbase.h b/Dependencies/FreeType/src/base/ftbase.h similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftbase.h rename to Dependencies/FreeType/src/base/ftbase.h diff --git a/Sparky-core/ext/freetype/src/base/ftbbox.c b/Dependencies/FreeType/src/base/ftbbox.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftbbox.c rename to Dependencies/FreeType/src/base/ftbbox.c diff --git a/Sparky-core/ext/freetype/src/base/ftbdf.c b/Dependencies/FreeType/src/base/ftbdf.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftbdf.c rename to Dependencies/FreeType/src/base/ftbdf.c diff --git a/Sparky-core/ext/freetype/src/base/ftbitmap.c b/Dependencies/FreeType/src/base/ftbitmap.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftbitmap.c rename to Dependencies/FreeType/src/base/ftbitmap.c diff --git a/Sparky-core/ext/freetype/src/base/ftcalc.c b/Dependencies/FreeType/src/base/ftcalc.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftcalc.c rename to Dependencies/FreeType/src/base/ftcalc.c diff --git a/Sparky-core/ext/freetype/src/base/ftcid.c b/Dependencies/FreeType/src/base/ftcid.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftcid.c rename to Dependencies/FreeType/src/base/ftcid.c diff --git a/Sparky-core/ext/freetype/src/base/ftdbgmem.c b/Dependencies/FreeType/src/base/ftdbgmem.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftdbgmem.c rename to Dependencies/FreeType/src/base/ftdbgmem.c diff --git a/Sparky-core/ext/freetype/src/base/ftdebug.c b/Dependencies/FreeType/src/base/ftdebug.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftdebug.c rename to Dependencies/FreeType/src/base/ftdebug.c diff --git a/Sparky-core/ext/freetype/src/base/ftfstype.c b/Dependencies/FreeType/src/base/ftfstype.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftfstype.c rename to Dependencies/FreeType/src/base/ftfstype.c diff --git a/Sparky-core/ext/freetype/src/base/ftgasp.c b/Dependencies/FreeType/src/base/ftgasp.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftgasp.c rename to Dependencies/FreeType/src/base/ftgasp.c diff --git a/Sparky-core/ext/freetype/src/base/ftgloadr.c b/Dependencies/FreeType/src/base/ftgloadr.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftgloadr.c rename to Dependencies/FreeType/src/base/ftgloadr.c diff --git a/Sparky-core/ext/freetype/src/base/ftglyph.c b/Dependencies/FreeType/src/base/ftglyph.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftglyph.c rename to Dependencies/FreeType/src/base/ftglyph.c diff --git a/Sparky-core/ext/freetype/src/base/ftgxval.c b/Dependencies/FreeType/src/base/ftgxval.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftgxval.c rename to Dependencies/FreeType/src/base/ftgxval.c diff --git a/Sparky-core/ext/freetype/src/base/ftinit.c b/Dependencies/FreeType/src/base/ftinit.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftinit.c rename to Dependencies/FreeType/src/base/ftinit.c diff --git a/Sparky-core/ext/freetype/src/base/ftlcdfil.c b/Dependencies/FreeType/src/base/ftlcdfil.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftlcdfil.c rename to Dependencies/FreeType/src/base/ftlcdfil.c diff --git a/Sparky-core/ext/freetype/src/base/ftmac.c b/Dependencies/FreeType/src/base/ftmac.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftmac.c rename to Dependencies/FreeType/src/base/ftmac.c diff --git a/Sparky-core/ext/freetype/src/base/ftmm.c b/Dependencies/FreeType/src/base/ftmm.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftmm.c rename to Dependencies/FreeType/src/base/ftmm.c diff --git a/Sparky-core/ext/freetype/src/base/ftobjs.c b/Dependencies/FreeType/src/base/ftobjs.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftobjs.c rename to Dependencies/FreeType/src/base/ftobjs.c diff --git a/Sparky-core/ext/freetype/src/base/ftotval.c b/Dependencies/FreeType/src/base/ftotval.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftotval.c rename to Dependencies/FreeType/src/base/ftotval.c diff --git a/Sparky-core/ext/freetype/src/base/ftoutln.c b/Dependencies/FreeType/src/base/ftoutln.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftoutln.c rename to Dependencies/FreeType/src/base/ftoutln.c diff --git a/Sparky-core/ext/freetype/src/base/ftpatent.c b/Dependencies/FreeType/src/base/ftpatent.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftpatent.c rename to Dependencies/FreeType/src/base/ftpatent.c diff --git a/Sparky-core/ext/freetype/src/base/ftpfr.c b/Dependencies/FreeType/src/base/ftpfr.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftpfr.c rename to Dependencies/FreeType/src/base/ftpfr.c diff --git a/Sparky-core/ext/freetype/src/base/ftpic.c b/Dependencies/FreeType/src/base/ftpic.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftpic.c rename to Dependencies/FreeType/src/base/ftpic.c diff --git a/Sparky-core/ext/freetype/src/base/ftrfork.c b/Dependencies/FreeType/src/base/ftrfork.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftrfork.c rename to Dependencies/FreeType/src/base/ftrfork.c diff --git a/Sparky-core/ext/freetype/src/base/ftsnames.c b/Dependencies/FreeType/src/base/ftsnames.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftsnames.c rename to Dependencies/FreeType/src/base/ftsnames.c diff --git a/Sparky-core/ext/freetype/src/base/ftstream.c b/Dependencies/FreeType/src/base/ftstream.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftstream.c rename to Dependencies/FreeType/src/base/ftstream.c diff --git a/Sparky-core/ext/freetype/src/base/ftstroke.c b/Dependencies/FreeType/src/base/ftstroke.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftstroke.c rename to Dependencies/FreeType/src/base/ftstroke.c diff --git a/Sparky-core/ext/freetype/src/base/ftsynth.c b/Dependencies/FreeType/src/base/ftsynth.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftsynth.c rename to Dependencies/FreeType/src/base/ftsynth.c diff --git a/Sparky-core/ext/freetype/src/base/ftsystem.c b/Dependencies/FreeType/src/base/ftsystem.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftsystem.c rename to Dependencies/FreeType/src/base/ftsystem.c diff --git a/Sparky-core/ext/freetype/src/base/fttrigon.c b/Dependencies/FreeType/src/base/fttrigon.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/fttrigon.c rename to Dependencies/FreeType/src/base/fttrigon.c diff --git a/Sparky-core/ext/freetype/src/base/fttype1.c b/Dependencies/FreeType/src/base/fttype1.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/fttype1.c rename to Dependencies/FreeType/src/base/fttype1.c diff --git a/Sparky-core/ext/freetype/src/base/ftutil.c b/Dependencies/FreeType/src/base/ftutil.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftutil.c rename to Dependencies/FreeType/src/base/ftutil.c diff --git a/Sparky-core/ext/freetype/src/base/ftwinfnt.c b/Dependencies/FreeType/src/base/ftwinfnt.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftwinfnt.c rename to Dependencies/FreeType/src/base/ftwinfnt.c diff --git a/Sparky-core/ext/freetype/src/base/ftxf86.c b/Dependencies/FreeType/src/base/ftxf86.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/ftxf86.c rename to Dependencies/FreeType/src/base/ftxf86.c diff --git a/Sparky-core/ext/freetype/src/base/md5.c b/Dependencies/FreeType/src/base/md5.c similarity index 100% rename from Sparky-core/ext/freetype/src/base/md5.c rename to Dependencies/FreeType/src/base/md5.c diff --git a/Sparky-core/ext/freetype/src/base/md5.h b/Dependencies/FreeType/src/base/md5.h similarity index 100% rename from Sparky-core/ext/freetype/src/base/md5.h rename to Dependencies/FreeType/src/base/md5.h diff --git a/Sparky-core/ext/freetype/src/bdf/bdf.c b/Dependencies/FreeType/src/bdf/bdf.c similarity index 100% rename from Sparky-core/ext/freetype/src/bdf/bdf.c rename to Dependencies/FreeType/src/bdf/bdf.c diff --git a/Sparky-core/ext/freetype/src/bdf/bdf.h b/Dependencies/FreeType/src/bdf/bdf.h similarity index 100% rename from Sparky-core/ext/freetype/src/bdf/bdf.h rename to Dependencies/FreeType/src/bdf/bdf.h diff --git a/Sparky-core/ext/freetype/src/bdf/bdfdrivr.c b/Dependencies/FreeType/src/bdf/bdfdrivr.c similarity index 100% rename from Sparky-core/ext/freetype/src/bdf/bdfdrivr.c rename to Dependencies/FreeType/src/bdf/bdfdrivr.c diff --git a/Sparky-core/ext/freetype/src/bdf/bdfdrivr.h b/Dependencies/FreeType/src/bdf/bdfdrivr.h similarity index 100% rename from Sparky-core/ext/freetype/src/bdf/bdfdrivr.h rename to Dependencies/FreeType/src/bdf/bdfdrivr.h diff --git a/Sparky-core/ext/freetype/src/bdf/bdferror.h b/Dependencies/FreeType/src/bdf/bdferror.h similarity index 100% rename from Sparky-core/ext/freetype/src/bdf/bdferror.h rename to Dependencies/FreeType/src/bdf/bdferror.h diff --git a/Sparky-core/ext/freetype/src/bdf/bdflib.c b/Dependencies/FreeType/src/bdf/bdflib.c similarity index 100% rename from Sparky-core/ext/freetype/src/bdf/bdflib.c rename to Dependencies/FreeType/src/bdf/bdflib.c diff --git a/Sparky-core/ext/freetype/src/bzip2/ftbzip2.c b/Dependencies/FreeType/src/bzip2/ftbzip2.c similarity index 100% rename from Sparky-core/ext/freetype/src/bzip2/ftbzip2.c rename to Dependencies/FreeType/src/bzip2/ftbzip2.c diff --git a/Sparky-core/ext/freetype/src/cache/ftcache.c b/Dependencies/FreeType/src/cache/ftcache.c similarity index 100% rename from Sparky-core/ext/freetype/src/cache/ftcache.c rename to Dependencies/FreeType/src/cache/ftcache.c diff --git a/Sparky-core/ext/freetype/src/cache/ftcbasic.c b/Dependencies/FreeType/src/cache/ftcbasic.c similarity index 100% rename from Sparky-core/ext/freetype/src/cache/ftcbasic.c rename to Dependencies/FreeType/src/cache/ftcbasic.c diff --git a/Sparky-core/ext/freetype/src/cache/ftccache.c b/Dependencies/FreeType/src/cache/ftccache.c similarity index 100% rename from Sparky-core/ext/freetype/src/cache/ftccache.c rename to Dependencies/FreeType/src/cache/ftccache.c diff --git a/Sparky-core/ext/freetype/src/cache/ftccache.h b/Dependencies/FreeType/src/cache/ftccache.h similarity index 100% rename from Sparky-core/ext/freetype/src/cache/ftccache.h rename to Dependencies/FreeType/src/cache/ftccache.h diff --git a/Sparky-core/ext/freetype/src/cache/ftccback.h b/Dependencies/FreeType/src/cache/ftccback.h similarity index 100% rename from Sparky-core/ext/freetype/src/cache/ftccback.h rename to Dependencies/FreeType/src/cache/ftccback.h diff --git a/Sparky-core/ext/freetype/src/cache/ftccmap.c b/Dependencies/FreeType/src/cache/ftccmap.c similarity index 100% rename from Sparky-core/ext/freetype/src/cache/ftccmap.c rename to Dependencies/FreeType/src/cache/ftccmap.c diff --git a/Sparky-core/ext/freetype/src/cache/ftcerror.h b/Dependencies/FreeType/src/cache/ftcerror.h similarity index 100% rename from Sparky-core/ext/freetype/src/cache/ftcerror.h rename to Dependencies/FreeType/src/cache/ftcerror.h diff --git a/Sparky-core/ext/freetype/src/cache/ftcglyph.c b/Dependencies/FreeType/src/cache/ftcglyph.c similarity index 100% rename from Sparky-core/ext/freetype/src/cache/ftcglyph.c rename to Dependencies/FreeType/src/cache/ftcglyph.c diff --git a/Sparky-core/ext/freetype/src/cache/ftcglyph.h b/Dependencies/FreeType/src/cache/ftcglyph.h similarity index 100% rename from Sparky-core/ext/freetype/src/cache/ftcglyph.h rename to Dependencies/FreeType/src/cache/ftcglyph.h diff --git a/Sparky-core/ext/freetype/src/cache/ftcimage.c b/Dependencies/FreeType/src/cache/ftcimage.c similarity index 100% rename from Sparky-core/ext/freetype/src/cache/ftcimage.c rename to Dependencies/FreeType/src/cache/ftcimage.c diff --git a/Sparky-core/ext/freetype/src/cache/ftcimage.h b/Dependencies/FreeType/src/cache/ftcimage.h similarity index 100% rename from Sparky-core/ext/freetype/src/cache/ftcimage.h rename to Dependencies/FreeType/src/cache/ftcimage.h diff --git a/Sparky-core/ext/freetype/src/cache/ftcmanag.c b/Dependencies/FreeType/src/cache/ftcmanag.c similarity index 100% rename from Sparky-core/ext/freetype/src/cache/ftcmanag.c rename to Dependencies/FreeType/src/cache/ftcmanag.c diff --git a/Sparky-core/ext/freetype/src/cache/ftcmanag.h b/Dependencies/FreeType/src/cache/ftcmanag.h similarity index 100% rename from Sparky-core/ext/freetype/src/cache/ftcmanag.h rename to Dependencies/FreeType/src/cache/ftcmanag.h diff --git a/Sparky-core/ext/freetype/src/cache/ftcmru.c b/Dependencies/FreeType/src/cache/ftcmru.c similarity index 100% rename from Sparky-core/ext/freetype/src/cache/ftcmru.c rename to Dependencies/FreeType/src/cache/ftcmru.c diff --git a/Sparky-core/ext/freetype/src/cache/ftcmru.h b/Dependencies/FreeType/src/cache/ftcmru.h similarity index 100% rename from Sparky-core/ext/freetype/src/cache/ftcmru.h rename to Dependencies/FreeType/src/cache/ftcmru.h diff --git a/Sparky-core/ext/freetype/src/cache/ftcsbits.c b/Dependencies/FreeType/src/cache/ftcsbits.c similarity index 100% rename from Sparky-core/ext/freetype/src/cache/ftcsbits.c rename to Dependencies/FreeType/src/cache/ftcsbits.c diff --git a/Sparky-core/ext/freetype/src/cache/ftcsbits.h b/Dependencies/FreeType/src/cache/ftcsbits.h similarity index 100% rename from Sparky-core/ext/freetype/src/cache/ftcsbits.h rename to Dependencies/FreeType/src/cache/ftcsbits.h diff --git a/Sparky-core/ext/freetype/src/cff/cf2arrst.c b/Dependencies/FreeType/src/cff/cf2arrst.c similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2arrst.c rename to Dependencies/FreeType/src/cff/cf2arrst.c diff --git a/Sparky-core/ext/freetype/src/cff/cf2arrst.h b/Dependencies/FreeType/src/cff/cf2arrst.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2arrst.h rename to Dependencies/FreeType/src/cff/cf2arrst.h diff --git a/Sparky-core/ext/freetype/src/cff/cf2blues.c b/Dependencies/FreeType/src/cff/cf2blues.c similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2blues.c rename to Dependencies/FreeType/src/cff/cf2blues.c diff --git a/Sparky-core/ext/freetype/src/cff/cf2blues.h b/Dependencies/FreeType/src/cff/cf2blues.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2blues.h rename to Dependencies/FreeType/src/cff/cf2blues.h diff --git a/Sparky-core/ext/freetype/src/cff/cf2error.c b/Dependencies/FreeType/src/cff/cf2error.c similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2error.c rename to Dependencies/FreeType/src/cff/cf2error.c diff --git a/Sparky-core/ext/freetype/src/cff/cf2error.h b/Dependencies/FreeType/src/cff/cf2error.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2error.h rename to Dependencies/FreeType/src/cff/cf2error.h diff --git a/Sparky-core/ext/freetype/src/cff/cf2fixed.h b/Dependencies/FreeType/src/cff/cf2fixed.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2fixed.h rename to Dependencies/FreeType/src/cff/cf2fixed.h diff --git a/Sparky-core/ext/freetype/src/cff/cf2font.c b/Dependencies/FreeType/src/cff/cf2font.c similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2font.c rename to Dependencies/FreeType/src/cff/cf2font.c diff --git a/Sparky-core/ext/freetype/src/cff/cf2font.h b/Dependencies/FreeType/src/cff/cf2font.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2font.h rename to Dependencies/FreeType/src/cff/cf2font.h diff --git a/Sparky-core/ext/freetype/src/cff/cf2ft.c b/Dependencies/FreeType/src/cff/cf2ft.c similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2ft.c rename to Dependencies/FreeType/src/cff/cf2ft.c diff --git a/Sparky-core/ext/freetype/src/cff/cf2ft.h b/Dependencies/FreeType/src/cff/cf2ft.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2ft.h rename to Dependencies/FreeType/src/cff/cf2ft.h diff --git a/Sparky-core/ext/freetype/src/cff/cf2glue.h b/Dependencies/FreeType/src/cff/cf2glue.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2glue.h rename to Dependencies/FreeType/src/cff/cf2glue.h diff --git a/Sparky-core/ext/freetype/src/cff/cf2hints.c b/Dependencies/FreeType/src/cff/cf2hints.c similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2hints.c rename to Dependencies/FreeType/src/cff/cf2hints.c diff --git a/Sparky-core/ext/freetype/src/cff/cf2hints.h b/Dependencies/FreeType/src/cff/cf2hints.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2hints.h rename to Dependencies/FreeType/src/cff/cf2hints.h diff --git a/Sparky-core/ext/freetype/src/cff/cf2intrp.c b/Dependencies/FreeType/src/cff/cf2intrp.c similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2intrp.c rename to Dependencies/FreeType/src/cff/cf2intrp.c diff --git a/Sparky-core/ext/freetype/src/cff/cf2intrp.h b/Dependencies/FreeType/src/cff/cf2intrp.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2intrp.h rename to Dependencies/FreeType/src/cff/cf2intrp.h diff --git a/Sparky-core/ext/freetype/src/cff/cf2read.c b/Dependencies/FreeType/src/cff/cf2read.c similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2read.c rename to Dependencies/FreeType/src/cff/cf2read.c diff --git a/Sparky-core/ext/freetype/src/cff/cf2read.h b/Dependencies/FreeType/src/cff/cf2read.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2read.h rename to Dependencies/FreeType/src/cff/cf2read.h diff --git a/Sparky-core/ext/freetype/src/cff/cf2stack.c b/Dependencies/FreeType/src/cff/cf2stack.c similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2stack.c rename to Dependencies/FreeType/src/cff/cf2stack.c diff --git a/Sparky-core/ext/freetype/src/cff/cf2stack.h b/Dependencies/FreeType/src/cff/cf2stack.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2stack.h rename to Dependencies/FreeType/src/cff/cf2stack.h diff --git a/Sparky-core/ext/freetype/src/cff/cf2types.h b/Dependencies/FreeType/src/cff/cf2types.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cf2types.h rename to Dependencies/FreeType/src/cff/cf2types.h diff --git a/Sparky-core/ext/freetype/src/cff/cff.c b/Dependencies/FreeType/src/cff/cff.c similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cff.c rename to Dependencies/FreeType/src/cff/cff.c diff --git a/Sparky-core/ext/freetype/src/cff/cffcmap.c b/Dependencies/FreeType/src/cff/cffcmap.c similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cffcmap.c rename to Dependencies/FreeType/src/cff/cffcmap.c diff --git a/Sparky-core/ext/freetype/src/cff/cffcmap.h b/Dependencies/FreeType/src/cff/cffcmap.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cffcmap.h rename to Dependencies/FreeType/src/cff/cffcmap.h diff --git a/Sparky-core/ext/freetype/src/cff/cffdrivr.c b/Dependencies/FreeType/src/cff/cffdrivr.c similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cffdrivr.c rename to Dependencies/FreeType/src/cff/cffdrivr.c diff --git a/Sparky-core/ext/freetype/src/cff/cffdrivr.h b/Dependencies/FreeType/src/cff/cffdrivr.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cffdrivr.h rename to Dependencies/FreeType/src/cff/cffdrivr.h diff --git a/Sparky-core/ext/freetype/src/cff/cfferrs.h b/Dependencies/FreeType/src/cff/cfferrs.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cfferrs.h rename to Dependencies/FreeType/src/cff/cfferrs.h diff --git a/Sparky-core/ext/freetype/src/cff/cffgload.c b/Dependencies/FreeType/src/cff/cffgload.c similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cffgload.c rename to Dependencies/FreeType/src/cff/cffgload.c diff --git a/Sparky-core/ext/freetype/src/cff/cffgload.h b/Dependencies/FreeType/src/cff/cffgload.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cffgload.h rename to Dependencies/FreeType/src/cff/cffgload.h diff --git a/Sparky-core/ext/freetype/src/cff/cffload.c b/Dependencies/FreeType/src/cff/cffload.c similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cffload.c rename to Dependencies/FreeType/src/cff/cffload.c diff --git a/Sparky-core/ext/freetype/src/cff/cffload.h b/Dependencies/FreeType/src/cff/cffload.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cffload.h rename to Dependencies/FreeType/src/cff/cffload.h diff --git a/Sparky-core/ext/freetype/src/cff/cffobjs.c b/Dependencies/FreeType/src/cff/cffobjs.c similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cffobjs.c rename to Dependencies/FreeType/src/cff/cffobjs.c diff --git a/Sparky-core/ext/freetype/src/cff/cffobjs.h b/Dependencies/FreeType/src/cff/cffobjs.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cffobjs.h rename to Dependencies/FreeType/src/cff/cffobjs.h diff --git a/Sparky-core/ext/freetype/src/cff/cffparse.c b/Dependencies/FreeType/src/cff/cffparse.c similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cffparse.c rename to Dependencies/FreeType/src/cff/cffparse.c diff --git a/Sparky-core/ext/freetype/src/cff/cffparse.h b/Dependencies/FreeType/src/cff/cffparse.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cffparse.h rename to Dependencies/FreeType/src/cff/cffparse.h diff --git a/Sparky-core/ext/freetype/src/cff/cffpic.c b/Dependencies/FreeType/src/cff/cffpic.c similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cffpic.c rename to Dependencies/FreeType/src/cff/cffpic.c diff --git a/Sparky-core/ext/freetype/src/cff/cffpic.h b/Dependencies/FreeType/src/cff/cffpic.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cffpic.h rename to Dependencies/FreeType/src/cff/cffpic.h diff --git a/Sparky-core/ext/freetype/src/cff/cfftoken.h b/Dependencies/FreeType/src/cff/cfftoken.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cfftoken.h rename to Dependencies/FreeType/src/cff/cfftoken.h diff --git a/Sparky-core/ext/freetype/src/cff/cfftypes.h b/Dependencies/FreeType/src/cff/cfftypes.h similarity index 100% rename from Sparky-core/ext/freetype/src/cff/cfftypes.h rename to Dependencies/FreeType/src/cff/cfftypes.h diff --git a/Sparky-core/ext/freetype/src/cid/ciderrs.h b/Dependencies/FreeType/src/cid/ciderrs.h similarity index 100% rename from Sparky-core/ext/freetype/src/cid/ciderrs.h rename to Dependencies/FreeType/src/cid/ciderrs.h diff --git a/Sparky-core/ext/freetype/src/cid/cidgload.c b/Dependencies/FreeType/src/cid/cidgload.c similarity index 100% rename from Sparky-core/ext/freetype/src/cid/cidgload.c rename to Dependencies/FreeType/src/cid/cidgload.c diff --git a/Sparky-core/ext/freetype/src/cid/cidgload.h b/Dependencies/FreeType/src/cid/cidgload.h similarity index 100% rename from Sparky-core/ext/freetype/src/cid/cidgload.h rename to Dependencies/FreeType/src/cid/cidgload.h diff --git a/Sparky-core/ext/freetype/src/cid/cidload.c b/Dependencies/FreeType/src/cid/cidload.c similarity index 100% rename from Sparky-core/ext/freetype/src/cid/cidload.c rename to Dependencies/FreeType/src/cid/cidload.c diff --git a/Sparky-core/ext/freetype/src/cid/cidload.h b/Dependencies/FreeType/src/cid/cidload.h similarity index 100% rename from Sparky-core/ext/freetype/src/cid/cidload.h rename to Dependencies/FreeType/src/cid/cidload.h diff --git a/Sparky-core/ext/freetype/src/cid/cidobjs.c b/Dependencies/FreeType/src/cid/cidobjs.c similarity index 100% rename from Sparky-core/ext/freetype/src/cid/cidobjs.c rename to Dependencies/FreeType/src/cid/cidobjs.c diff --git a/Sparky-core/ext/freetype/src/cid/cidobjs.h b/Dependencies/FreeType/src/cid/cidobjs.h similarity index 100% rename from Sparky-core/ext/freetype/src/cid/cidobjs.h rename to Dependencies/FreeType/src/cid/cidobjs.h diff --git a/Sparky-core/ext/freetype/src/cid/cidparse.c b/Dependencies/FreeType/src/cid/cidparse.c similarity index 100% rename from Sparky-core/ext/freetype/src/cid/cidparse.c rename to Dependencies/FreeType/src/cid/cidparse.c diff --git a/Sparky-core/ext/freetype/src/cid/cidparse.h b/Dependencies/FreeType/src/cid/cidparse.h similarity index 100% rename from Sparky-core/ext/freetype/src/cid/cidparse.h rename to Dependencies/FreeType/src/cid/cidparse.h diff --git a/Sparky-core/ext/freetype/src/cid/cidriver.c b/Dependencies/FreeType/src/cid/cidriver.c similarity index 100% rename from Sparky-core/ext/freetype/src/cid/cidriver.c rename to Dependencies/FreeType/src/cid/cidriver.c diff --git a/Sparky-core/ext/freetype/src/cid/cidriver.h b/Dependencies/FreeType/src/cid/cidriver.h similarity index 100% rename from Sparky-core/ext/freetype/src/cid/cidriver.h rename to Dependencies/FreeType/src/cid/cidriver.h diff --git a/Sparky-core/ext/freetype/src/cid/cidtoken.h b/Dependencies/FreeType/src/cid/cidtoken.h similarity index 100% rename from Sparky-core/ext/freetype/src/cid/cidtoken.h rename to Dependencies/FreeType/src/cid/cidtoken.h diff --git a/Sparky-core/ext/freetype/src/cid/type1cid.c b/Dependencies/FreeType/src/cid/type1cid.c similarity index 100% rename from Sparky-core/ext/freetype/src/cid/type1cid.c rename to Dependencies/FreeType/src/cid/type1cid.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvalid.c b/Dependencies/FreeType/src/gxvalid/gxvalid.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvalid.c rename to Dependencies/FreeType/src/gxvalid/gxvalid.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvalid.h b/Dependencies/FreeType/src/gxvalid/gxvalid.h similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvalid.h rename to Dependencies/FreeType/src/gxvalid/gxvalid.h diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvbsln.c b/Dependencies/FreeType/src/gxvalid/gxvbsln.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvbsln.c rename to Dependencies/FreeType/src/gxvalid/gxvbsln.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvcommn.c b/Dependencies/FreeType/src/gxvalid/gxvcommn.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvcommn.c rename to Dependencies/FreeType/src/gxvalid/gxvcommn.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvcommn.h b/Dependencies/FreeType/src/gxvalid/gxvcommn.h similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvcommn.h rename to Dependencies/FreeType/src/gxvalid/gxvcommn.h diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxverror.h b/Dependencies/FreeType/src/gxvalid/gxverror.h similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxverror.h rename to Dependencies/FreeType/src/gxvalid/gxverror.h diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvfeat.c b/Dependencies/FreeType/src/gxvalid/gxvfeat.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvfeat.c rename to Dependencies/FreeType/src/gxvalid/gxvfeat.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvfeat.h b/Dependencies/FreeType/src/gxvalid/gxvfeat.h similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvfeat.h rename to Dependencies/FreeType/src/gxvalid/gxvfeat.h diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvfgen.c b/Dependencies/FreeType/src/gxvalid/gxvfgen.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvfgen.c rename to Dependencies/FreeType/src/gxvalid/gxvfgen.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvjust.c b/Dependencies/FreeType/src/gxvalid/gxvjust.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvjust.c rename to Dependencies/FreeType/src/gxvalid/gxvjust.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvkern.c b/Dependencies/FreeType/src/gxvalid/gxvkern.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvkern.c rename to Dependencies/FreeType/src/gxvalid/gxvkern.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvlcar.c b/Dependencies/FreeType/src/gxvalid/gxvlcar.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvlcar.c rename to Dependencies/FreeType/src/gxvalid/gxvlcar.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvmod.c b/Dependencies/FreeType/src/gxvalid/gxvmod.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvmod.c rename to Dependencies/FreeType/src/gxvalid/gxvmod.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvmod.h b/Dependencies/FreeType/src/gxvalid/gxvmod.h similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvmod.h rename to Dependencies/FreeType/src/gxvalid/gxvmod.h diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvmort.c b/Dependencies/FreeType/src/gxvalid/gxvmort.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvmort.c rename to Dependencies/FreeType/src/gxvalid/gxvmort.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvmort.h b/Dependencies/FreeType/src/gxvalid/gxvmort.h similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvmort.h rename to Dependencies/FreeType/src/gxvalid/gxvmort.h diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvmort0.c b/Dependencies/FreeType/src/gxvalid/gxvmort0.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvmort0.c rename to Dependencies/FreeType/src/gxvalid/gxvmort0.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvmort1.c b/Dependencies/FreeType/src/gxvalid/gxvmort1.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvmort1.c rename to Dependencies/FreeType/src/gxvalid/gxvmort1.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvmort2.c b/Dependencies/FreeType/src/gxvalid/gxvmort2.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvmort2.c rename to Dependencies/FreeType/src/gxvalid/gxvmort2.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvmort4.c b/Dependencies/FreeType/src/gxvalid/gxvmort4.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvmort4.c rename to Dependencies/FreeType/src/gxvalid/gxvmort4.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvmort5.c b/Dependencies/FreeType/src/gxvalid/gxvmort5.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvmort5.c rename to Dependencies/FreeType/src/gxvalid/gxvmort5.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvmorx.c b/Dependencies/FreeType/src/gxvalid/gxvmorx.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvmorx.c rename to Dependencies/FreeType/src/gxvalid/gxvmorx.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvmorx.h b/Dependencies/FreeType/src/gxvalid/gxvmorx.h similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvmorx.h rename to Dependencies/FreeType/src/gxvalid/gxvmorx.h diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvmorx0.c b/Dependencies/FreeType/src/gxvalid/gxvmorx0.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvmorx0.c rename to Dependencies/FreeType/src/gxvalid/gxvmorx0.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvmorx1.c b/Dependencies/FreeType/src/gxvalid/gxvmorx1.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvmorx1.c rename to Dependencies/FreeType/src/gxvalid/gxvmorx1.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvmorx2.c b/Dependencies/FreeType/src/gxvalid/gxvmorx2.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvmorx2.c rename to Dependencies/FreeType/src/gxvalid/gxvmorx2.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvmorx4.c b/Dependencies/FreeType/src/gxvalid/gxvmorx4.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvmorx4.c rename to Dependencies/FreeType/src/gxvalid/gxvmorx4.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvmorx5.c b/Dependencies/FreeType/src/gxvalid/gxvmorx5.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvmorx5.c rename to Dependencies/FreeType/src/gxvalid/gxvmorx5.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvopbd.c b/Dependencies/FreeType/src/gxvalid/gxvopbd.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvopbd.c rename to Dependencies/FreeType/src/gxvalid/gxvopbd.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvprop.c b/Dependencies/FreeType/src/gxvalid/gxvprop.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvprop.c rename to Dependencies/FreeType/src/gxvalid/gxvprop.c diff --git a/Sparky-core/ext/freetype/src/gxvalid/gxvtrak.c b/Dependencies/FreeType/src/gxvalid/gxvtrak.c similarity index 100% rename from Sparky-core/ext/freetype/src/gxvalid/gxvtrak.c rename to Dependencies/FreeType/src/gxvalid/gxvtrak.c diff --git a/Sparky-core/ext/freetype/src/gzip/adler32.c b/Dependencies/FreeType/src/gzip/adler32.c similarity index 100% rename from Sparky-core/ext/freetype/src/gzip/adler32.c rename to Dependencies/FreeType/src/gzip/adler32.c diff --git a/Sparky-core/ext/freetype/src/gzip/ftgzip.c b/Dependencies/FreeType/src/gzip/ftgzip.c similarity index 100% rename from Sparky-core/ext/freetype/src/gzip/ftgzip.c rename to Dependencies/FreeType/src/gzip/ftgzip.c diff --git a/Sparky-core/ext/freetype/src/gzip/infblock.c b/Dependencies/FreeType/src/gzip/infblock.c similarity index 100% rename from Sparky-core/ext/freetype/src/gzip/infblock.c rename to Dependencies/FreeType/src/gzip/infblock.c diff --git a/Sparky-core/ext/freetype/src/gzip/infblock.h b/Dependencies/FreeType/src/gzip/infblock.h similarity index 100% rename from Sparky-core/ext/freetype/src/gzip/infblock.h rename to Dependencies/FreeType/src/gzip/infblock.h diff --git a/Sparky-core/ext/freetype/src/gzip/infcodes.c b/Dependencies/FreeType/src/gzip/infcodes.c similarity index 100% rename from Sparky-core/ext/freetype/src/gzip/infcodes.c rename to Dependencies/FreeType/src/gzip/infcodes.c diff --git a/Sparky-core/ext/freetype/src/gzip/infcodes.h b/Dependencies/FreeType/src/gzip/infcodes.h similarity index 100% rename from Sparky-core/ext/freetype/src/gzip/infcodes.h rename to Dependencies/FreeType/src/gzip/infcodes.h diff --git a/Sparky-core/ext/freetype/src/gzip/inffixed.h b/Dependencies/FreeType/src/gzip/inffixed.h similarity index 100% rename from Sparky-core/ext/freetype/src/gzip/inffixed.h rename to Dependencies/FreeType/src/gzip/inffixed.h diff --git a/Sparky-core/ext/freetype/src/gzip/inflate.c b/Dependencies/FreeType/src/gzip/inflate.c similarity index 100% rename from Sparky-core/ext/freetype/src/gzip/inflate.c rename to Dependencies/FreeType/src/gzip/inflate.c diff --git a/Sparky-core/ext/freetype/src/gzip/inftrees.c b/Dependencies/FreeType/src/gzip/inftrees.c similarity index 100% rename from Sparky-core/ext/freetype/src/gzip/inftrees.c rename to Dependencies/FreeType/src/gzip/inftrees.c diff --git a/Sparky-core/ext/freetype/src/gzip/inftrees.h b/Dependencies/FreeType/src/gzip/inftrees.h similarity index 100% rename from Sparky-core/ext/freetype/src/gzip/inftrees.h rename to Dependencies/FreeType/src/gzip/inftrees.h diff --git a/Sparky-core/ext/freetype/src/gzip/infutil.c b/Dependencies/FreeType/src/gzip/infutil.c similarity index 100% rename from Sparky-core/ext/freetype/src/gzip/infutil.c rename to Dependencies/FreeType/src/gzip/infutil.c diff --git a/Sparky-core/ext/freetype/src/gzip/infutil.h b/Dependencies/FreeType/src/gzip/infutil.h similarity index 100% rename from Sparky-core/ext/freetype/src/gzip/infutil.h rename to Dependencies/FreeType/src/gzip/infutil.h diff --git a/Sparky-core/ext/freetype/src/gzip/zconf.h b/Dependencies/FreeType/src/gzip/zconf.h similarity index 100% rename from Sparky-core/ext/freetype/src/gzip/zconf.h rename to Dependencies/FreeType/src/gzip/zconf.h diff --git a/Sparky-core/ext/freetype/src/gzip/zlib.h b/Dependencies/FreeType/src/gzip/zlib.h similarity index 100% rename from Sparky-core/ext/freetype/src/gzip/zlib.h rename to Dependencies/FreeType/src/gzip/zlib.h diff --git a/Sparky-core/ext/freetype/src/gzip/zutil.c b/Dependencies/FreeType/src/gzip/zutil.c similarity index 100% rename from Sparky-core/ext/freetype/src/gzip/zutil.c rename to Dependencies/FreeType/src/gzip/zutil.c diff --git a/Sparky-core/ext/freetype/src/gzip/zutil.h b/Dependencies/FreeType/src/gzip/zutil.h similarity index 100% rename from Sparky-core/ext/freetype/src/gzip/zutil.h rename to Dependencies/FreeType/src/gzip/zutil.h diff --git a/Sparky-core/ext/freetype/src/lzw/ftlzw.c b/Dependencies/FreeType/src/lzw/ftlzw.c similarity index 100% rename from Sparky-core/ext/freetype/src/lzw/ftlzw.c rename to Dependencies/FreeType/src/lzw/ftlzw.c diff --git a/Sparky-core/ext/freetype/src/lzw/ftzopen.c b/Dependencies/FreeType/src/lzw/ftzopen.c similarity index 100% rename from Sparky-core/ext/freetype/src/lzw/ftzopen.c rename to Dependencies/FreeType/src/lzw/ftzopen.c diff --git a/Sparky-core/ext/freetype/src/lzw/ftzopen.h b/Dependencies/FreeType/src/lzw/ftzopen.h similarity index 100% rename from Sparky-core/ext/freetype/src/lzw/ftzopen.h rename to Dependencies/FreeType/src/lzw/ftzopen.h diff --git a/Sparky-core/ext/freetype/src/otvalid/otvalid.c b/Dependencies/FreeType/src/otvalid/otvalid.c similarity index 100% rename from Sparky-core/ext/freetype/src/otvalid/otvalid.c rename to Dependencies/FreeType/src/otvalid/otvalid.c diff --git a/Sparky-core/ext/freetype/src/otvalid/otvalid.h b/Dependencies/FreeType/src/otvalid/otvalid.h similarity index 100% rename from Sparky-core/ext/freetype/src/otvalid/otvalid.h rename to Dependencies/FreeType/src/otvalid/otvalid.h diff --git a/Sparky-core/ext/freetype/src/otvalid/otvbase.c b/Dependencies/FreeType/src/otvalid/otvbase.c similarity index 100% rename from Sparky-core/ext/freetype/src/otvalid/otvbase.c rename to Dependencies/FreeType/src/otvalid/otvbase.c diff --git a/Sparky-core/ext/freetype/src/otvalid/otvcommn.c b/Dependencies/FreeType/src/otvalid/otvcommn.c similarity index 100% rename from Sparky-core/ext/freetype/src/otvalid/otvcommn.c rename to Dependencies/FreeType/src/otvalid/otvcommn.c diff --git a/Sparky-core/ext/freetype/src/otvalid/otvcommn.h b/Dependencies/FreeType/src/otvalid/otvcommn.h similarity index 100% rename from Sparky-core/ext/freetype/src/otvalid/otvcommn.h rename to Dependencies/FreeType/src/otvalid/otvcommn.h diff --git a/Sparky-core/ext/freetype/src/otvalid/otverror.h b/Dependencies/FreeType/src/otvalid/otverror.h similarity index 100% rename from Sparky-core/ext/freetype/src/otvalid/otverror.h rename to Dependencies/FreeType/src/otvalid/otverror.h diff --git a/Sparky-core/ext/freetype/src/otvalid/otvgdef.c b/Dependencies/FreeType/src/otvalid/otvgdef.c similarity index 100% rename from Sparky-core/ext/freetype/src/otvalid/otvgdef.c rename to Dependencies/FreeType/src/otvalid/otvgdef.c diff --git a/Sparky-core/ext/freetype/src/otvalid/otvgpos.c b/Dependencies/FreeType/src/otvalid/otvgpos.c similarity index 100% rename from Sparky-core/ext/freetype/src/otvalid/otvgpos.c rename to Dependencies/FreeType/src/otvalid/otvgpos.c diff --git a/Sparky-core/ext/freetype/src/otvalid/otvgpos.h b/Dependencies/FreeType/src/otvalid/otvgpos.h similarity index 100% rename from Sparky-core/ext/freetype/src/otvalid/otvgpos.h rename to Dependencies/FreeType/src/otvalid/otvgpos.h diff --git a/Sparky-core/ext/freetype/src/otvalid/otvgsub.c b/Dependencies/FreeType/src/otvalid/otvgsub.c similarity index 100% rename from Sparky-core/ext/freetype/src/otvalid/otvgsub.c rename to Dependencies/FreeType/src/otvalid/otvgsub.c diff --git a/Sparky-core/ext/freetype/src/otvalid/otvjstf.c b/Dependencies/FreeType/src/otvalid/otvjstf.c similarity index 100% rename from Sparky-core/ext/freetype/src/otvalid/otvjstf.c rename to Dependencies/FreeType/src/otvalid/otvjstf.c diff --git a/Sparky-core/ext/freetype/src/otvalid/otvmath.c b/Dependencies/FreeType/src/otvalid/otvmath.c similarity index 100% rename from Sparky-core/ext/freetype/src/otvalid/otvmath.c rename to Dependencies/FreeType/src/otvalid/otvmath.c diff --git a/Sparky-core/ext/freetype/src/otvalid/otvmod.c b/Dependencies/FreeType/src/otvalid/otvmod.c similarity index 100% rename from Sparky-core/ext/freetype/src/otvalid/otvmod.c rename to Dependencies/FreeType/src/otvalid/otvmod.c diff --git a/Sparky-core/ext/freetype/src/otvalid/otvmod.h b/Dependencies/FreeType/src/otvalid/otvmod.h similarity index 100% rename from Sparky-core/ext/freetype/src/otvalid/otvmod.h rename to Dependencies/FreeType/src/otvalid/otvmod.h diff --git a/Sparky-core/ext/freetype/src/pcf/pcf.c b/Dependencies/FreeType/src/pcf/pcf.c similarity index 100% rename from Sparky-core/ext/freetype/src/pcf/pcf.c rename to Dependencies/FreeType/src/pcf/pcf.c diff --git a/Sparky-core/ext/freetype/src/pcf/pcf.h b/Dependencies/FreeType/src/pcf/pcf.h similarity index 100% rename from Sparky-core/ext/freetype/src/pcf/pcf.h rename to Dependencies/FreeType/src/pcf/pcf.h diff --git a/Sparky-core/ext/freetype/src/pcf/pcfdrivr.c b/Dependencies/FreeType/src/pcf/pcfdrivr.c similarity index 100% rename from Sparky-core/ext/freetype/src/pcf/pcfdrivr.c rename to Dependencies/FreeType/src/pcf/pcfdrivr.c diff --git a/Sparky-core/ext/freetype/src/pcf/pcfdrivr.h b/Dependencies/FreeType/src/pcf/pcfdrivr.h similarity index 100% rename from Sparky-core/ext/freetype/src/pcf/pcfdrivr.h rename to Dependencies/FreeType/src/pcf/pcfdrivr.h diff --git a/Sparky-core/ext/freetype/src/pcf/pcferror.h b/Dependencies/FreeType/src/pcf/pcferror.h similarity index 100% rename from Sparky-core/ext/freetype/src/pcf/pcferror.h rename to Dependencies/FreeType/src/pcf/pcferror.h diff --git a/Sparky-core/ext/freetype/src/pcf/pcfread.c b/Dependencies/FreeType/src/pcf/pcfread.c similarity index 100% rename from Sparky-core/ext/freetype/src/pcf/pcfread.c rename to Dependencies/FreeType/src/pcf/pcfread.c diff --git a/Sparky-core/ext/freetype/src/pcf/pcfread.h b/Dependencies/FreeType/src/pcf/pcfread.h similarity index 100% rename from Sparky-core/ext/freetype/src/pcf/pcfread.h rename to Dependencies/FreeType/src/pcf/pcfread.h diff --git a/Sparky-core/ext/freetype/src/pcf/pcfutil.c b/Dependencies/FreeType/src/pcf/pcfutil.c similarity index 100% rename from Sparky-core/ext/freetype/src/pcf/pcfutil.c rename to Dependencies/FreeType/src/pcf/pcfutil.c diff --git a/Sparky-core/ext/freetype/src/pcf/pcfutil.h b/Dependencies/FreeType/src/pcf/pcfutil.h similarity index 100% rename from Sparky-core/ext/freetype/src/pcf/pcfutil.h rename to Dependencies/FreeType/src/pcf/pcfutil.h diff --git a/Sparky-core/ext/freetype/src/pfr/pfr.c b/Dependencies/FreeType/src/pfr/pfr.c similarity index 100% rename from Sparky-core/ext/freetype/src/pfr/pfr.c rename to Dependencies/FreeType/src/pfr/pfr.c diff --git a/Sparky-core/ext/freetype/src/pfr/pfrcmap.c b/Dependencies/FreeType/src/pfr/pfrcmap.c similarity index 100% rename from Sparky-core/ext/freetype/src/pfr/pfrcmap.c rename to Dependencies/FreeType/src/pfr/pfrcmap.c diff --git a/Sparky-core/ext/freetype/src/pfr/pfrcmap.h b/Dependencies/FreeType/src/pfr/pfrcmap.h similarity index 100% rename from Sparky-core/ext/freetype/src/pfr/pfrcmap.h rename to Dependencies/FreeType/src/pfr/pfrcmap.h diff --git a/Sparky-core/ext/freetype/src/pfr/pfrdrivr.c b/Dependencies/FreeType/src/pfr/pfrdrivr.c similarity index 100% rename from Sparky-core/ext/freetype/src/pfr/pfrdrivr.c rename to Dependencies/FreeType/src/pfr/pfrdrivr.c diff --git a/Sparky-core/ext/freetype/src/pfr/pfrdrivr.h b/Dependencies/FreeType/src/pfr/pfrdrivr.h similarity index 100% rename from Sparky-core/ext/freetype/src/pfr/pfrdrivr.h rename to Dependencies/FreeType/src/pfr/pfrdrivr.h diff --git a/Sparky-core/ext/freetype/src/pfr/pfrerror.h b/Dependencies/FreeType/src/pfr/pfrerror.h similarity index 100% rename from Sparky-core/ext/freetype/src/pfr/pfrerror.h rename to Dependencies/FreeType/src/pfr/pfrerror.h diff --git a/Sparky-core/ext/freetype/src/pfr/pfrgload.c b/Dependencies/FreeType/src/pfr/pfrgload.c similarity index 100% rename from Sparky-core/ext/freetype/src/pfr/pfrgload.c rename to Dependencies/FreeType/src/pfr/pfrgload.c diff --git a/Sparky-core/ext/freetype/src/pfr/pfrgload.h b/Dependencies/FreeType/src/pfr/pfrgload.h similarity index 100% rename from Sparky-core/ext/freetype/src/pfr/pfrgload.h rename to Dependencies/FreeType/src/pfr/pfrgload.h diff --git a/Sparky-core/ext/freetype/src/pfr/pfrload.c b/Dependencies/FreeType/src/pfr/pfrload.c similarity index 100% rename from Sparky-core/ext/freetype/src/pfr/pfrload.c rename to Dependencies/FreeType/src/pfr/pfrload.c diff --git a/Sparky-core/ext/freetype/src/pfr/pfrload.h b/Dependencies/FreeType/src/pfr/pfrload.h similarity index 100% rename from Sparky-core/ext/freetype/src/pfr/pfrload.h rename to Dependencies/FreeType/src/pfr/pfrload.h diff --git a/Sparky-core/ext/freetype/src/pfr/pfrobjs.c b/Dependencies/FreeType/src/pfr/pfrobjs.c similarity index 100% rename from Sparky-core/ext/freetype/src/pfr/pfrobjs.c rename to Dependencies/FreeType/src/pfr/pfrobjs.c diff --git a/Sparky-core/ext/freetype/src/pfr/pfrobjs.h b/Dependencies/FreeType/src/pfr/pfrobjs.h similarity index 100% rename from Sparky-core/ext/freetype/src/pfr/pfrobjs.h rename to Dependencies/FreeType/src/pfr/pfrobjs.h diff --git a/Sparky-core/ext/freetype/src/pfr/pfrsbit.c b/Dependencies/FreeType/src/pfr/pfrsbit.c similarity index 100% rename from Sparky-core/ext/freetype/src/pfr/pfrsbit.c rename to Dependencies/FreeType/src/pfr/pfrsbit.c diff --git a/Sparky-core/ext/freetype/src/pfr/pfrsbit.h b/Dependencies/FreeType/src/pfr/pfrsbit.h similarity index 100% rename from Sparky-core/ext/freetype/src/pfr/pfrsbit.h rename to Dependencies/FreeType/src/pfr/pfrsbit.h diff --git a/Sparky-core/ext/freetype/src/pfr/pfrtypes.h b/Dependencies/FreeType/src/pfr/pfrtypes.h similarity index 100% rename from Sparky-core/ext/freetype/src/pfr/pfrtypes.h rename to Dependencies/FreeType/src/pfr/pfrtypes.h diff --git a/Sparky-core/ext/freetype/src/psaux/afmparse.c b/Dependencies/FreeType/src/psaux/afmparse.c similarity index 100% rename from Sparky-core/ext/freetype/src/psaux/afmparse.c rename to Dependencies/FreeType/src/psaux/afmparse.c diff --git a/Sparky-core/ext/freetype/src/psaux/afmparse.h b/Dependencies/FreeType/src/psaux/afmparse.h similarity index 100% rename from Sparky-core/ext/freetype/src/psaux/afmparse.h rename to Dependencies/FreeType/src/psaux/afmparse.h diff --git a/Sparky-core/ext/freetype/src/psaux/psaux.c b/Dependencies/FreeType/src/psaux/psaux.c similarity index 100% rename from Sparky-core/ext/freetype/src/psaux/psaux.c rename to Dependencies/FreeType/src/psaux/psaux.c diff --git a/Sparky-core/ext/freetype/src/psaux/psauxerr.h b/Dependencies/FreeType/src/psaux/psauxerr.h similarity index 100% rename from Sparky-core/ext/freetype/src/psaux/psauxerr.h rename to Dependencies/FreeType/src/psaux/psauxerr.h diff --git a/Sparky-core/ext/freetype/src/psaux/psauxmod.c b/Dependencies/FreeType/src/psaux/psauxmod.c similarity index 100% rename from Sparky-core/ext/freetype/src/psaux/psauxmod.c rename to Dependencies/FreeType/src/psaux/psauxmod.c diff --git a/Sparky-core/ext/freetype/src/psaux/psauxmod.h b/Dependencies/FreeType/src/psaux/psauxmod.h similarity index 100% rename from Sparky-core/ext/freetype/src/psaux/psauxmod.h rename to Dependencies/FreeType/src/psaux/psauxmod.h diff --git a/Sparky-core/ext/freetype/src/psaux/psconv.c b/Dependencies/FreeType/src/psaux/psconv.c similarity index 100% rename from Sparky-core/ext/freetype/src/psaux/psconv.c rename to Dependencies/FreeType/src/psaux/psconv.c diff --git a/Sparky-core/ext/freetype/src/psaux/psconv.h b/Dependencies/FreeType/src/psaux/psconv.h similarity index 100% rename from Sparky-core/ext/freetype/src/psaux/psconv.h rename to Dependencies/FreeType/src/psaux/psconv.h diff --git a/Sparky-core/ext/freetype/src/psaux/psobjs.c b/Dependencies/FreeType/src/psaux/psobjs.c similarity index 100% rename from Sparky-core/ext/freetype/src/psaux/psobjs.c rename to Dependencies/FreeType/src/psaux/psobjs.c diff --git a/Sparky-core/ext/freetype/src/psaux/psobjs.h b/Dependencies/FreeType/src/psaux/psobjs.h similarity index 100% rename from Sparky-core/ext/freetype/src/psaux/psobjs.h rename to Dependencies/FreeType/src/psaux/psobjs.h diff --git a/Sparky-core/ext/freetype/src/psaux/t1cmap.c b/Dependencies/FreeType/src/psaux/t1cmap.c similarity index 100% rename from Sparky-core/ext/freetype/src/psaux/t1cmap.c rename to Dependencies/FreeType/src/psaux/t1cmap.c diff --git a/Sparky-core/ext/freetype/src/psaux/t1cmap.h b/Dependencies/FreeType/src/psaux/t1cmap.h similarity index 100% rename from Sparky-core/ext/freetype/src/psaux/t1cmap.h rename to Dependencies/FreeType/src/psaux/t1cmap.h diff --git a/Sparky-core/ext/freetype/src/psaux/t1decode.c b/Dependencies/FreeType/src/psaux/t1decode.c similarity index 100% rename from Sparky-core/ext/freetype/src/psaux/t1decode.c rename to Dependencies/FreeType/src/psaux/t1decode.c diff --git a/Sparky-core/ext/freetype/src/psaux/t1decode.h b/Dependencies/FreeType/src/psaux/t1decode.h similarity index 100% rename from Sparky-core/ext/freetype/src/psaux/t1decode.h rename to Dependencies/FreeType/src/psaux/t1decode.h diff --git a/Sparky-core/ext/freetype/src/pshinter/pshalgo.c b/Dependencies/FreeType/src/pshinter/pshalgo.c similarity index 100% rename from Sparky-core/ext/freetype/src/pshinter/pshalgo.c rename to Dependencies/FreeType/src/pshinter/pshalgo.c diff --git a/Sparky-core/ext/freetype/src/pshinter/pshalgo.h b/Dependencies/FreeType/src/pshinter/pshalgo.h similarity index 100% rename from Sparky-core/ext/freetype/src/pshinter/pshalgo.h rename to Dependencies/FreeType/src/pshinter/pshalgo.h diff --git a/Sparky-core/ext/freetype/src/pshinter/pshglob.c b/Dependencies/FreeType/src/pshinter/pshglob.c similarity index 100% rename from Sparky-core/ext/freetype/src/pshinter/pshglob.c rename to Dependencies/FreeType/src/pshinter/pshglob.c diff --git a/Sparky-core/ext/freetype/src/pshinter/pshglob.h b/Dependencies/FreeType/src/pshinter/pshglob.h similarity index 100% rename from Sparky-core/ext/freetype/src/pshinter/pshglob.h rename to Dependencies/FreeType/src/pshinter/pshglob.h diff --git a/Sparky-core/ext/freetype/src/pshinter/pshinter.c b/Dependencies/FreeType/src/pshinter/pshinter.c similarity index 100% rename from Sparky-core/ext/freetype/src/pshinter/pshinter.c rename to Dependencies/FreeType/src/pshinter/pshinter.c diff --git a/Sparky-core/ext/freetype/src/pshinter/pshmod.c b/Dependencies/FreeType/src/pshinter/pshmod.c similarity index 100% rename from Sparky-core/ext/freetype/src/pshinter/pshmod.c rename to Dependencies/FreeType/src/pshinter/pshmod.c diff --git a/Sparky-core/ext/freetype/src/pshinter/pshmod.h b/Dependencies/FreeType/src/pshinter/pshmod.h similarity index 100% rename from Sparky-core/ext/freetype/src/pshinter/pshmod.h rename to Dependencies/FreeType/src/pshinter/pshmod.h diff --git a/Sparky-core/ext/freetype/src/pshinter/pshnterr.h b/Dependencies/FreeType/src/pshinter/pshnterr.h similarity index 100% rename from Sparky-core/ext/freetype/src/pshinter/pshnterr.h rename to Dependencies/FreeType/src/pshinter/pshnterr.h diff --git a/Sparky-core/ext/freetype/src/pshinter/pshpic.c b/Dependencies/FreeType/src/pshinter/pshpic.c similarity index 100% rename from Sparky-core/ext/freetype/src/pshinter/pshpic.c rename to Dependencies/FreeType/src/pshinter/pshpic.c diff --git a/Sparky-core/ext/freetype/src/pshinter/pshpic.h b/Dependencies/FreeType/src/pshinter/pshpic.h similarity index 100% rename from Sparky-core/ext/freetype/src/pshinter/pshpic.h rename to Dependencies/FreeType/src/pshinter/pshpic.h diff --git a/Sparky-core/ext/freetype/src/pshinter/pshrec.c b/Dependencies/FreeType/src/pshinter/pshrec.c similarity index 100% rename from Sparky-core/ext/freetype/src/pshinter/pshrec.c rename to Dependencies/FreeType/src/pshinter/pshrec.c diff --git a/Sparky-core/ext/freetype/src/pshinter/pshrec.h b/Dependencies/FreeType/src/pshinter/pshrec.h similarity index 100% rename from Sparky-core/ext/freetype/src/pshinter/pshrec.h rename to Dependencies/FreeType/src/pshinter/pshrec.h diff --git a/Sparky-core/ext/freetype/src/psnames/psmodule.c b/Dependencies/FreeType/src/psnames/psmodule.c similarity index 100% rename from Sparky-core/ext/freetype/src/psnames/psmodule.c rename to Dependencies/FreeType/src/psnames/psmodule.c diff --git a/Sparky-core/ext/freetype/src/psnames/psmodule.h b/Dependencies/FreeType/src/psnames/psmodule.h similarity index 100% rename from Sparky-core/ext/freetype/src/psnames/psmodule.h rename to Dependencies/FreeType/src/psnames/psmodule.h diff --git a/Sparky-core/ext/freetype/src/psnames/psnamerr.h b/Dependencies/FreeType/src/psnames/psnamerr.h similarity index 100% rename from Sparky-core/ext/freetype/src/psnames/psnamerr.h rename to Dependencies/FreeType/src/psnames/psnamerr.h diff --git a/Sparky-core/ext/freetype/src/psnames/psnames.c b/Dependencies/FreeType/src/psnames/psnames.c similarity index 100% rename from Sparky-core/ext/freetype/src/psnames/psnames.c rename to Dependencies/FreeType/src/psnames/psnames.c diff --git a/Sparky-core/ext/freetype/src/psnames/pspic.c b/Dependencies/FreeType/src/psnames/pspic.c similarity index 100% rename from Sparky-core/ext/freetype/src/psnames/pspic.c rename to Dependencies/FreeType/src/psnames/pspic.c diff --git a/Sparky-core/ext/freetype/src/psnames/pspic.h b/Dependencies/FreeType/src/psnames/pspic.h similarity index 100% rename from Sparky-core/ext/freetype/src/psnames/pspic.h rename to Dependencies/FreeType/src/psnames/pspic.h diff --git a/Sparky-core/ext/freetype/src/psnames/pstables.h b/Dependencies/FreeType/src/psnames/pstables.h similarity index 100% rename from Sparky-core/ext/freetype/src/psnames/pstables.h rename to Dependencies/FreeType/src/psnames/pstables.h diff --git a/Sparky-core/ext/freetype/src/raster/ftmisc.h b/Dependencies/FreeType/src/raster/ftmisc.h similarity index 100% rename from Sparky-core/ext/freetype/src/raster/ftmisc.h rename to Dependencies/FreeType/src/raster/ftmisc.h diff --git a/Sparky-core/ext/freetype/src/raster/ftraster.c b/Dependencies/FreeType/src/raster/ftraster.c similarity index 100% rename from Sparky-core/ext/freetype/src/raster/ftraster.c rename to Dependencies/FreeType/src/raster/ftraster.c diff --git a/Sparky-core/ext/freetype/src/raster/ftraster.h b/Dependencies/FreeType/src/raster/ftraster.h similarity index 100% rename from Sparky-core/ext/freetype/src/raster/ftraster.h rename to Dependencies/FreeType/src/raster/ftraster.h diff --git a/Sparky-core/ext/freetype/src/raster/ftrend1.c b/Dependencies/FreeType/src/raster/ftrend1.c similarity index 100% rename from Sparky-core/ext/freetype/src/raster/ftrend1.c rename to Dependencies/FreeType/src/raster/ftrend1.c diff --git a/Sparky-core/ext/freetype/src/raster/ftrend1.h b/Dependencies/FreeType/src/raster/ftrend1.h similarity index 100% rename from Sparky-core/ext/freetype/src/raster/ftrend1.h rename to Dependencies/FreeType/src/raster/ftrend1.h diff --git a/Sparky-core/ext/freetype/src/raster/raster.c b/Dependencies/FreeType/src/raster/raster.c similarity index 100% rename from Sparky-core/ext/freetype/src/raster/raster.c rename to Dependencies/FreeType/src/raster/raster.c diff --git a/Sparky-core/ext/freetype/src/raster/rasterrs.h b/Dependencies/FreeType/src/raster/rasterrs.h similarity index 100% rename from Sparky-core/ext/freetype/src/raster/rasterrs.h rename to Dependencies/FreeType/src/raster/rasterrs.h diff --git a/Sparky-core/ext/freetype/src/raster/rastpic.c b/Dependencies/FreeType/src/raster/rastpic.c similarity index 100% rename from Sparky-core/ext/freetype/src/raster/rastpic.c rename to Dependencies/FreeType/src/raster/rastpic.c diff --git a/Sparky-core/ext/freetype/src/raster/rastpic.h b/Dependencies/FreeType/src/raster/rastpic.h similarity index 100% rename from Sparky-core/ext/freetype/src/raster/rastpic.h rename to Dependencies/FreeType/src/raster/rastpic.h diff --git a/Sparky-core/ext/freetype/src/sfnt/pngshim.c b/Dependencies/FreeType/src/sfnt/pngshim.c similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/pngshim.c rename to Dependencies/FreeType/src/sfnt/pngshim.c diff --git a/Sparky-core/ext/freetype/src/sfnt/pngshim.h b/Dependencies/FreeType/src/sfnt/pngshim.h similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/pngshim.h rename to Dependencies/FreeType/src/sfnt/pngshim.h diff --git a/Sparky-core/ext/freetype/src/sfnt/sfdriver.c b/Dependencies/FreeType/src/sfnt/sfdriver.c similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/sfdriver.c rename to Dependencies/FreeType/src/sfnt/sfdriver.c diff --git a/Sparky-core/ext/freetype/src/sfnt/sfdriver.h b/Dependencies/FreeType/src/sfnt/sfdriver.h similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/sfdriver.h rename to Dependencies/FreeType/src/sfnt/sfdriver.h diff --git a/Sparky-core/ext/freetype/src/sfnt/sferrors.h b/Dependencies/FreeType/src/sfnt/sferrors.h similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/sferrors.h rename to Dependencies/FreeType/src/sfnt/sferrors.h diff --git a/Sparky-core/ext/freetype/src/sfnt/sfnt.c b/Dependencies/FreeType/src/sfnt/sfnt.c similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/sfnt.c rename to Dependencies/FreeType/src/sfnt/sfnt.c diff --git a/Sparky-core/ext/freetype/src/sfnt/sfntpic.c b/Dependencies/FreeType/src/sfnt/sfntpic.c similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/sfntpic.c rename to Dependencies/FreeType/src/sfnt/sfntpic.c diff --git a/Sparky-core/ext/freetype/src/sfnt/sfntpic.h b/Dependencies/FreeType/src/sfnt/sfntpic.h similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/sfntpic.h rename to Dependencies/FreeType/src/sfnt/sfntpic.h diff --git a/Sparky-core/ext/freetype/src/sfnt/sfobjs.c b/Dependencies/FreeType/src/sfnt/sfobjs.c similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/sfobjs.c rename to Dependencies/FreeType/src/sfnt/sfobjs.c diff --git a/Sparky-core/ext/freetype/src/sfnt/sfobjs.h b/Dependencies/FreeType/src/sfnt/sfobjs.h similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/sfobjs.h rename to Dependencies/FreeType/src/sfnt/sfobjs.h diff --git a/Sparky-core/ext/freetype/src/sfnt/ttbdf.c b/Dependencies/FreeType/src/sfnt/ttbdf.c similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/ttbdf.c rename to Dependencies/FreeType/src/sfnt/ttbdf.c diff --git a/Sparky-core/ext/freetype/src/sfnt/ttbdf.h b/Dependencies/FreeType/src/sfnt/ttbdf.h similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/ttbdf.h rename to Dependencies/FreeType/src/sfnt/ttbdf.h diff --git a/Sparky-core/ext/freetype/src/sfnt/ttcmap.c b/Dependencies/FreeType/src/sfnt/ttcmap.c similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/ttcmap.c rename to Dependencies/FreeType/src/sfnt/ttcmap.c diff --git a/Sparky-core/ext/freetype/src/sfnt/ttcmap.h b/Dependencies/FreeType/src/sfnt/ttcmap.h similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/ttcmap.h rename to Dependencies/FreeType/src/sfnt/ttcmap.h diff --git a/Sparky-core/ext/freetype/src/sfnt/ttcmapc.h b/Dependencies/FreeType/src/sfnt/ttcmapc.h similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/ttcmapc.h rename to Dependencies/FreeType/src/sfnt/ttcmapc.h diff --git a/Sparky-core/ext/freetype/src/sfnt/ttkern.c b/Dependencies/FreeType/src/sfnt/ttkern.c similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/ttkern.c rename to Dependencies/FreeType/src/sfnt/ttkern.c diff --git a/Sparky-core/ext/freetype/src/sfnt/ttkern.h b/Dependencies/FreeType/src/sfnt/ttkern.h similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/ttkern.h rename to Dependencies/FreeType/src/sfnt/ttkern.h diff --git a/Sparky-core/ext/freetype/src/sfnt/ttload.c b/Dependencies/FreeType/src/sfnt/ttload.c similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/ttload.c rename to Dependencies/FreeType/src/sfnt/ttload.c diff --git a/Sparky-core/ext/freetype/src/sfnt/ttload.h b/Dependencies/FreeType/src/sfnt/ttload.h similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/ttload.h rename to Dependencies/FreeType/src/sfnt/ttload.h diff --git a/Sparky-core/ext/freetype/src/sfnt/ttmtx.c b/Dependencies/FreeType/src/sfnt/ttmtx.c similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/ttmtx.c rename to Dependencies/FreeType/src/sfnt/ttmtx.c diff --git a/Sparky-core/ext/freetype/src/sfnt/ttmtx.h b/Dependencies/FreeType/src/sfnt/ttmtx.h similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/ttmtx.h rename to Dependencies/FreeType/src/sfnt/ttmtx.h diff --git a/Sparky-core/ext/freetype/src/sfnt/ttpost.c b/Dependencies/FreeType/src/sfnt/ttpost.c similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/ttpost.c rename to Dependencies/FreeType/src/sfnt/ttpost.c diff --git a/Sparky-core/ext/freetype/src/sfnt/ttpost.h b/Dependencies/FreeType/src/sfnt/ttpost.h similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/ttpost.h rename to Dependencies/FreeType/src/sfnt/ttpost.h diff --git a/Sparky-core/ext/freetype/src/sfnt/ttsbit.c b/Dependencies/FreeType/src/sfnt/ttsbit.c similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/ttsbit.c rename to Dependencies/FreeType/src/sfnt/ttsbit.c diff --git a/Sparky-core/ext/freetype/src/sfnt/ttsbit.h b/Dependencies/FreeType/src/sfnt/ttsbit.h similarity index 100% rename from Sparky-core/ext/freetype/src/sfnt/ttsbit.h rename to Dependencies/FreeType/src/sfnt/ttsbit.h diff --git a/Sparky-core/ext/freetype/src/smooth/ftgrays.c b/Dependencies/FreeType/src/smooth/ftgrays.c similarity index 100% rename from Sparky-core/ext/freetype/src/smooth/ftgrays.c rename to Dependencies/FreeType/src/smooth/ftgrays.c diff --git a/Sparky-core/ext/freetype/src/smooth/ftgrays.h b/Dependencies/FreeType/src/smooth/ftgrays.h similarity index 100% rename from Sparky-core/ext/freetype/src/smooth/ftgrays.h rename to Dependencies/FreeType/src/smooth/ftgrays.h diff --git a/Sparky-core/ext/freetype/src/smooth/ftsmerrs.h b/Dependencies/FreeType/src/smooth/ftsmerrs.h similarity index 100% rename from Sparky-core/ext/freetype/src/smooth/ftsmerrs.h rename to Dependencies/FreeType/src/smooth/ftsmerrs.h diff --git a/Sparky-core/ext/freetype/src/smooth/ftsmooth.c b/Dependencies/FreeType/src/smooth/ftsmooth.c similarity index 100% rename from Sparky-core/ext/freetype/src/smooth/ftsmooth.c rename to Dependencies/FreeType/src/smooth/ftsmooth.c diff --git a/Sparky-core/ext/freetype/src/smooth/ftsmooth.h b/Dependencies/FreeType/src/smooth/ftsmooth.h similarity index 100% rename from Sparky-core/ext/freetype/src/smooth/ftsmooth.h rename to Dependencies/FreeType/src/smooth/ftsmooth.h diff --git a/Sparky-core/ext/freetype/src/smooth/ftspic.c b/Dependencies/FreeType/src/smooth/ftspic.c similarity index 100% rename from Sparky-core/ext/freetype/src/smooth/ftspic.c rename to Dependencies/FreeType/src/smooth/ftspic.c diff --git a/Sparky-core/ext/freetype/src/smooth/ftspic.h b/Dependencies/FreeType/src/smooth/ftspic.h similarity index 100% rename from Sparky-core/ext/freetype/src/smooth/ftspic.h rename to Dependencies/FreeType/src/smooth/ftspic.h diff --git a/Sparky-core/ext/freetype/src/smooth/smooth.c b/Dependencies/FreeType/src/smooth/smooth.c similarity index 100% rename from Sparky-core/ext/freetype/src/smooth/smooth.c rename to Dependencies/FreeType/src/smooth/smooth.c diff --git a/Sparky-core/ext/freetype/src/truetype/truetype.c b/Dependencies/FreeType/src/truetype/truetype.c similarity index 100% rename from Sparky-core/ext/freetype/src/truetype/truetype.c rename to Dependencies/FreeType/src/truetype/truetype.c diff --git a/Sparky-core/ext/freetype/src/truetype/ttdriver.c b/Dependencies/FreeType/src/truetype/ttdriver.c similarity index 100% rename from Sparky-core/ext/freetype/src/truetype/ttdriver.c rename to Dependencies/FreeType/src/truetype/ttdriver.c diff --git a/Sparky-core/ext/freetype/src/truetype/ttdriver.h b/Dependencies/FreeType/src/truetype/ttdriver.h similarity index 100% rename from Sparky-core/ext/freetype/src/truetype/ttdriver.h rename to Dependencies/FreeType/src/truetype/ttdriver.h diff --git a/Sparky-core/ext/freetype/src/truetype/tterrors.h b/Dependencies/FreeType/src/truetype/tterrors.h similarity index 100% rename from Sparky-core/ext/freetype/src/truetype/tterrors.h rename to Dependencies/FreeType/src/truetype/tterrors.h diff --git a/Sparky-core/ext/freetype/src/truetype/ttgload.c b/Dependencies/FreeType/src/truetype/ttgload.c similarity index 100% rename from Sparky-core/ext/freetype/src/truetype/ttgload.c rename to Dependencies/FreeType/src/truetype/ttgload.c diff --git a/Sparky-core/ext/freetype/src/truetype/ttgload.h b/Dependencies/FreeType/src/truetype/ttgload.h similarity index 100% rename from Sparky-core/ext/freetype/src/truetype/ttgload.h rename to Dependencies/FreeType/src/truetype/ttgload.h diff --git a/Sparky-core/ext/freetype/src/truetype/ttgxvar.c b/Dependencies/FreeType/src/truetype/ttgxvar.c similarity index 100% rename from Sparky-core/ext/freetype/src/truetype/ttgxvar.c rename to Dependencies/FreeType/src/truetype/ttgxvar.c diff --git a/Sparky-core/ext/freetype/src/truetype/ttgxvar.h b/Dependencies/FreeType/src/truetype/ttgxvar.h similarity index 100% rename from Sparky-core/ext/freetype/src/truetype/ttgxvar.h rename to Dependencies/FreeType/src/truetype/ttgxvar.h diff --git a/Sparky-core/ext/freetype/src/truetype/ttinterp.c b/Dependencies/FreeType/src/truetype/ttinterp.c similarity index 100% rename from Sparky-core/ext/freetype/src/truetype/ttinterp.c rename to Dependencies/FreeType/src/truetype/ttinterp.c diff --git a/Sparky-core/ext/freetype/src/truetype/ttinterp.h b/Dependencies/FreeType/src/truetype/ttinterp.h similarity index 100% rename from Sparky-core/ext/freetype/src/truetype/ttinterp.h rename to Dependencies/FreeType/src/truetype/ttinterp.h diff --git a/Sparky-core/ext/freetype/src/truetype/ttobjs.c b/Dependencies/FreeType/src/truetype/ttobjs.c similarity index 100% rename from Sparky-core/ext/freetype/src/truetype/ttobjs.c rename to Dependencies/FreeType/src/truetype/ttobjs.c diff --git a/Sparky-core/ext/freetype/src/truetype/ttobjs.h b/Dependencies/FreeType/src/truetype/ttobjs.h similarity index 100% rename from Sparky-core/ext/freetype/src/truetype/ttobjs.h rename to Dependencies/FreeType/src/truetype/ttobjs.h diff --git a/Sparky-core/ext/freetype/src/truetype/ttpic.c b/Dependencies/FreeType/src/truetype/ttpic.c similarity index 100% rename from Sparky-core/ext/freetype/src/truetype/ttpic.c rename to Dependencies/FreeType/src/truetype/ttpic.c diff --git a/Sparky-core/ext/freetype/src/truetype/ttpic.h b/Dependencies/FreeType/src/truetype/ttpic.h similarity index 100% rename from Sparky-core/ext/freetype/src/truetype/ttpic.h rename to Dependencies/FreeType/src/truetype/ttpic.h diff --git a/Sparky-core/ext/freetype/src/truetype/ttpload.c b/Dependencies/FreeType/src/truetype/ttpload.c similarity index 100% rename from Sparky-core/ext/freetype/src/truetype/ttpload.c rename to Dependencies/FreeType/src/truetype/ttpload.c diff --git a/Sparky-core/ext/freetype/src/truetype/ttpload.h b/Dependencies/FreeType/src/truetype/ttpload.h similarity index 100% rename from Sparky-core/ext/freetype/src/truetype/ttpload.h rename to Dependencies/FreeType/src/truetype/ttpload.h diff --git a/Sparky-core/ext/freetype/src/truetype/ttsubpix.c b/Dependencies/FreeType/src/truetype/ttsubpix.c similarity index 100% rename from Sparky-core/ext/freetype/src/truetype/ttsubpix.c rename to Dependencies/FreeType/src/truetype/ttsubpix.c diff --git a/Sparky-core/ext/freetype/src/truetype/ttsubpix.h b/Dependencies/FreeType/src/truetype/ttsubpix.h similarity index 100% rename from Sparky-core/ext/freetype/src/truetype/ttsubpix.h rename to Dependencies/FreeType/src/truetype/ttsubpix.h diff --git a/Sparky-core/ext/freetype/src/type1/t1afm.c b/Dependencies/FreeType/src/type1/t1afm.c similarity index 100% rename from Sparky-core/ext/freetype/src/type1/t1afm.c rename to Dependencies/FreeType/src/type1/t1afm.c diff --git a/Sparky-core/ext/freetype/src/type1/t1afm.h b/Dependencies/FreeType/src/type1/t1afm.h similarity index 100% rename from Sparky-core/ext/freetype/src/type1/t1afm.h rename to Dependencies/FreeType/src/type1/t1afm.h diff --git a/Sparky-core/ext/freetype/src/type1/t1driver.c b/Dependencies/FreeType/src/type1/t1driver.c similarity index 100% rename from Sparky-core/ext/freetype/src/type1/t1driver.c rename to Dependencies/FreeType/src/type1/t1driver.c diff --git a/Sparky-core/ext/freetype/src/type1/t1driver.h b/Dependencies/FreeType/src/type1/t1driver.h similarity index 100% rename from Sparky-core/ext/freetype/src/type1/t1driver.h rename to Dependencies/FreeType/src/type1/t1driver.h diff --git a/Sparky-core/ext/freetype/src/type1/t1errors.h b/Dependencies/FreeType/src/type1/t1errors.h similarity index 100% rename from Sparky-core/ext/freetype/src/type1/t1errors.h rename to Dependencies/FreeType/src/type1/t1errors.h diff --git a/Sparky-core/ext/freetype/src/type1/t1gload.c b/Dependencies/FreeType/src/type1/t1gload.c similarity index 100% rename from Sparky-core/ext/freetype/src/type1/t1gload.c rename to Dependencies/FreeType/src/type1/t1gload.c diff --git a/Sparky-core/ext/freetype/src/type1/t1gload.h b/Dependencies/FreeType/src/type1/t1gload.h similarity index 100% rename from Sparky-core/ext/freetype/src/type1/t1gload.h rename to Dependencies/FreeType/src/type1/t1gload.h diff --git a/Sparky-core/ext/freetype/src/type1/t1load.c b/Dependencies/FreeType/src/type1/t1load.c similarity index 100% rename from Sparky-core/ext/freetype/src/type1/t1load.c rename to Dependencies/FreeType/src/type1/t1load.c diff --git a/Sparky-core/ext/freetype/src/type1/t1load.h b/Dependencies/FreeType/src/type1/t1load.h similarity index 100% rename from Sparky-core/ext/freetype/src/type1/t1load.h rename to Dependencies/FreeType/src/type1/t1load.h diff --git a/Sparky-core/ext/freetype/src/type1/t1objs.c b/Dependencies/FreeType/src/type1/t1objs.c similarity index 100% rename from Sparky-core/ext/freetype/src/type1/t1objs.c rename to Dependencies/FreeType/src/type1/t1objs.c diff --git a/Sparky-core/ext/freetype/src/type1/t1objs.h b/Dependencies/FreeType/src/type1/t1objs.h similarity index 100% rename from Sparky-core/ext/freetype/src/type1/t1objs.h rename to Dependencies/FreeType/src/type1/t1objs.h diff --git a/Sparky-core/ext/freetype/src/type1/t1parse.c b/Dependencies/FreeType/src/type1/t1parse.c similarity index 100% rename from Sparky-core/ext/freetype/src/type1/t1parse.c rename to Dependencies/FreeType/src/type1/t1parse.c diff --git a/Sparky-core/ext/freetype/src/type1/t1parse.h b/Dependencies/FreeType/src/type1/t1parse.h similarity index 100% rename from Sparky-core/ext/freetype/src/type1/t1parse.h rename to Dependencies/FreeType/src/type1/t1parse.h diff --git a/Sparky-core/ext/freetype/src/type1/t1tokens.h b/Dependencies/FreeType/src/type1/t1tokens.h similarity index 100% rename from Sparky-core/ext/freetype/src/type1/t1tokens.h rename to Dependencies/FreeType/src/type1/t1tokens.h diff --git a/Sparky-core/ext/freetype/src/type1/type1.c b/Dependencies/FreeType/src/type1/type1.c similarity index 100% rename from Sparky-core/ext/freetype/src/type1/type1.c rename to Dependencies/FreeType/src/type1/type1.c diff --git a/Sparky-core/ext/freetype/src/type42/t42drivr.c b/Dependencies/FreeType/src/type42/t42drivr.c similarity index 100% rename from Sparky-core/ext/freetype/src/type42/t42drivr.c rename to Dependencies/FreeType/src/type42/t42drivr.c diff --git a/Sparky-core/ext/freetype/src/type42/t42drivr.h b/Dependencies/FreeType/src/type42/t42drivr.h similarity index 100% rename from Sparky-core/ext/freetype/src/type42/t42drivr.h rename to Dependencies/FreeType/src/type42/t42drivr.h diff --git a/Sparky-core/ext/freetype/src/type42/t42error.h b/Dependencies/FreeType/src/type42/t42error.h similarity index 100% rename from Sparky-core/ext/freetype/src/type42/t42error.h rename to Dependencies/FreeType/src/type42/t42error.h diff --git a/Sparky-core/ext/freetype/src/type42/t42objs.c b/Dependencies/FreeType/src/type42/t42objs.c similarity index 100% rename from Sparky-core/ext/freetype/src/type42/t42objs.c rename to Dependencies/FreeType/src/type42/t42objs.c diff --git a/Sparky-core/ext/freetype/src/type42/t42objs.h b/Dependencies/FreeType/src/type42/t42objs.h similarity index 100% rename from Sparky-core/ext/freetype/src/type42/t42objs.h rename to Dependencies/FreeType/src/type42/t42objs.h diff --git a/Sparky-core/ext/freetype/src/type42/t42parse.c b/Dependencies/FreeType/src/type42/t42parse.c similarity index 100% rename from Sparky-core/ext/freetype/src/type42/t42parse.c rename to Dependencies/FreeType/src/type42/t42parse.c diff --git a/Sparky-core/ext/freetype/src/type42/t42parse.h b/Dependencies/FreeType/src/type42/t42parse.h similarity index 100% rename from Sparky-core/ext/freetype/src/type42/t42parse.h rename to Dependencies/FreeType/src/type42/t42parse.h diff --git a/Sparky-core/ext/freetype/src/type42/t42types.h b/Dependencies/FreeType/src/type42/t42types.h similarity index 100% rename from Sparky-core/ext/freetype/src/type42/t42types.h rename to Dependencies/FreeType/src/type42/t42types.h diff --git a/Sparky-core/ext/freetype/src/type42/type42.c b/Dependencies/FreeType/src/type42/type42.c similarity index 100% rename from Sparky-core/ext/freetype/src/type42/type42.c rename to Dependencies/FreeType/src/type42/type42.c diff --git a/Sparky-core/ext/freetype/src/winfonts/fnterrs.h b/Dependencies/FreeType/src/winfonts/fnterrs.h similarity index 100% rename from Sparky-core/ext/freetype/src/winfonts/fnterrs.h rename to Dependencies/FreeType/src/winfonts/fnterrs.h diff --git a/Sparky-core/ext/freetype/src/winfonts/winfnt.c b/Dependencies/FreeType/src/winfonts/winfnt.c similarity index 100% rename from Sparky-core/ext/freetype/src/winfonts/winfnt.c rename to Dependencies/FreeType/src/winfonts/winfnt.c diff --git a/Sparky-core/ext/freetype/src/winfonts/winfnt.h b/Dependencies/FreeType/src/winfonts/winfnt.h similarity index 100% rename from Sparky-core/ext/freetype/src/winfonts/winfnt.h rename to Dependencies/FreeType/src/winfonts/winfnt.h diff --git a/Dependencies/GLFW/include/GLFW/glfw3.h b/Dependencies/GLFW/include/GLFW/glfw3.h deleted file mode 100644 index 89414491..00000000 --- a/Dependencies/GLFW/include/GLFW/glfw3.h +++ /dev/null @@ -1,3355 +0,0 @@ -/************************************************************************* - * GLFW 3.1 - www.glfw.org - * A library for OpenGL, window and input - *------------------------------------------------------------------------ - * Copyright (c) 2002-2006 Marcus Geelnard - * Copyright (c) 2006-2010 Camilla Berglund - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would - * be appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not - * be misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - * - *************************************************************************/ - -#ifndef _glfw3_h_ -#define _glfw3_h_ - -#ifdef __cplusplus -extern "C" { -#endif - - -/************************************************************************* - * Doxygen documentation - *************************************************************************/ - -/*! @defgroup context Context handling - * - * This is the reference documentation for context related functions. For more - * information, see the @ref context. - */ -/*! @defgroup init Initialization, version and errors - * - * This is the reference documentation for initialization and termination of - * the library, version management and error handling. For more information, - * see the @ref intro. - */ -/*! @defgroup input Input handling - * - * This is the reference documentation for input related functions and types. - * For more information, see the @ref input. - */ -/*! @defgroup monitor Monitor handling - * - * This is the reference documentation for monitor related functions and types. - * For more information, see the @ref monitor. - */ -/*! @defgroup window Window handling - * - * This is the reference documentation for window related functions and types, - * including creation, deletion and event polling. For more information, see - * the @ref window. - */ - - -/************************************************************************* - * Global definitions - *************************************************************************/ - -/* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */ - -/* Please report any problems that you find with your compiler, which may - * be solved in this section! There are several compilers that I have not - * been able to test this file with yet. - * - * First: If we are we on Windows, we want a single define for it (_WIN32) - * (Note: For Cygwin the compiler flag -mwin32 should be used, but to - * make sure that things run smoothly for Cygwin users, we add __CYGWIN__ - * to the list of "valid Win32 identifiers", which removes the need for - * -mwin32) - */ -#if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__CYGWIN__)) - #define _WIN32 -#endif /* _WIN32 */ - -/* In order for extension support to be portable, we need to define an - * OpenGL function call method. We use the keyword APIENTRY, which is - * defined for Win32. (Note: Windows also needs this for ) - */ -#ifndef APIENTRY - #ifdef _WIN32 - #define APIENTRY __stdcall - #else - #define APIENTRY - #endif -#endif /* APIENTRY */ - -/* The following three defines are here solely to make some Windows-based - * files happy. Theoretically we could include , but - * it has the major drawback of severely polluting our namespace. - */ - -/* Under Windows, we need WINGDIAPI defined */ -#if !defined(WINGDIAPI) && defined(_WIN32) - #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__POCC__) - /* Microsoft Visual C++, Borland C++ Builder and Pelles C */ - #define WINGDIAPI __declspec(dllimport) - #elif defined(__LCC__) - /* LCC-Win32 */ - #define WINGDIAPI __stdcall - #else - /* Others (e.g. MinGW, Cygwin) */ - #define WINGDIAPI extern - #endif - #define GLFW_WINGDIAPI_DEFINED -#endif /* WINGDIAPI */ - -/* Some files also need CALLBACK defined */ -#if !defined(CALLBACK) && defined(_WIN32) - #if defined(_MSC_VER) - /* Microsoft Visual C++ */ - #if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) - #define CALLBACK __stdcall - #else - #define CALLBACK - #endif - #else - /* Other Windows compilers */ - #define CALLBACK __stdcall - #endif - #define GLFW_CALLBACK_DEFINED -#endif /* CALLBACK */ - -/* Most GL/glu.h variants on Windows need wchar_t - * OpenGL/gl.h blocks the definition of ptrdiff_t by glext.h on OS X */ -#if !defined(GLFW_INCLUDE_NONE) - #include -#endif - -/* Include the chosen client API headers. - */ -#if defined(__APPLE_CC__) - #if defined(GLFW_INCLUDE_GLCOREARB) - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - #elif !defined(GLFW_INCLUDE_NONE) - #if !defined(GLFW_INCLUDE_GLEXT) - #define GL_GLEXT_LEGACY - #endif - #include - #endif - #if defined(GLFW_INCLUDE_GLU) - #include - #endif -#else - #if defined(GLFW_INCLUDE_GLCOREARB) - #include - #elif defined(GLFW_INCLUDE_ES1) - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - #elif defined(GLFW_INCLUDE_ES2) - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - #elif defined(GLFW_INCLUDE_ES3) - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - #elif defined(GLFW_INCLUDE_ES31) - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - #elif !defined(GLFW_INCLUDE_NONE) - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - #endif - #if defined(GLFW_INCLUDE_GLU) - #include - #endif -#endif - -#if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL) - /* GLFW_DLL must be defined by applications that are linking against the DLL - * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW - * configuration header when compiling the DLL version of the library. - */ - #error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined" -#endif - -/* GLFWAPI is used to declare public API functions for export - * from the DLL / shared library / dynamic library. - */ -#if defined(_WIN32) && defined(_GLFW_BUILD_DLL) - /* We are building GLFW as a Win32 DLL */ - #define GLFWAPI __declspec(dllexport) -#elif defined(_WIN32) && defined(GLFW_DLL) - /* We are calling GLFW as a Win32 DLL */ - #if defined(__LCC__) - #define GLFWAPI extern - #else - #define GLFWAPI __declspec(dllimport) - #endif -#elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL) - /* We are building GLFW as a shared / dynamic library */ - #define GLFWAPI __attribute__((visibility("default"))) -#else - /* We are building or calling GLFW as a static library */ - #define GLFWAPI -#endif - -/* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */ - - -/************************************************************************* - * GLFW API tokens - *************************************************************************/ - -/*! @name GLFW version macros - * @{ */ -/*! @brief The major version number of the GLFW library. - * - * This is incremented when the API is changed in non-compatible ways. - * @ingroup init - */ -#define GLFW_VERSION_MAJOR 3 -/*! @brief The minor version number of the GLFW library. - * - * This is incremented when features are added to the API but it remains - * backward-compatible. - * @ingroup init - */ -#define GLFW_VERSION_MINOR 1 -/*! @brief The revision number of the GLFW library. - * - * This is incremented when a bug fix release is made that does not contain any - * API changes. - * @ingroup init - */ -#define GLFW_VERSION_REVISION 0 -/*! @} */ - -/*! @name Key and button actions - * @{ */ -/*! @brief The key or mouse button was released. - * - * The key or mouse button was released. - * - * @ingroup input - */ -#define GLFW_RELEASE 0 -/*! @brief The key or mouse button was pressed. - * - * The key or mouse button was pressed. - * - * @ingroup input - */ -#define GLFW_PRESS 1 -/*! @brief The key was held down until it repeated. - * - * The key was held down until it repeated. - * - * @ingroup input - */ -#define GLFW_REPEAT 2 -/*! @} */ - -/*! @defgroup keys Keyboard keys - * - * See [key input](@ref input_key) for how these are used. - * - * These key codes are inspired by the _USB HID Usage Tables v1.12_ (p. 53-60), - * but re-arranged to map to 7-bit ASCII for printable keys (function keys are - * put in the 256+ range). - * - * The naming of the key codes follow these rules: - * - The US keyboard layout is used - * - Names of printable alpha-numeric characters are used (e.g. "A", "R", - * "3", etc.) - * - For non-alphanumeric characters, Unicode:ish names are used (e.g. - * "COMMA", "LEFT_SQUARE_BRACKET", etc.). Note that some names do not - * correspond to the Unicode standard (usually for brevity) - * - Keys that lack a clear US mapping are named "WORLD_x" - * - For non-printable keys, custom names are used (e.g. "F4", - * "BACKSPACE", etc.) - * - * @ingroup input - * @{ - */ - -/* The unknown key */ -#define GLFW_KEY_UNKNOWN -1 - -/* Printable keys */ -#define GLFW_KEY_SPACE 32 -#define GLFW_KEY_APOSTROPHE 39 /* ' */ -#define GLFW_KEY_COMMA 44 /* , */ -#define GLFW_KEY_MINUS 45 /* - */ -#define GLFW_KEY_PERIOD 46 /* . */ -#define GLFW_KEY_SLASH 47 /* / */ -#define GLFW_KEY_0 48 -#define GLFW_KEY_1 49 -#define GLFW_KEY_2 50 -#define GLFW_KEY_3 51 -#define GLFW_KEY_4 52 -#define GLFW_KEY_5 53 -#define GLFW_KEY_6 54 -#define GLFW_KEY_7 55 -#define GLFW_KEY_8 56 -#define GLFW_KEY_9 57 -#define GLFW_KEY_SEMICOLON 59 /* ; */ -#define GLFW_KEY_EQUAL 61 /* = */ -#define GLFW_KEY_A 65 -#define GLFW_KEY_B 66 -#define GLFW_KEY_C 67 -#define GLFW_KEY_D 68 -#define GLFW_KEY_E 69 -#define GLFW_KEY_F 70 -#define GLFW_KEY_G 71 -#define GLFW_KEY_H 72 -#define GLFW_KEY_I 73 -#define GLFW_KEY_J 74 -#define GLFW_KEY_K 75 -#define GLFW_KEY_L 76 -#define GLFW_KEY_M 77 -#define GLFW_KEY_N 78 -#define GLFW_KEY_O 79 -#define GLFW_KEY_P 80 -#define GLFW_KEY_Q 81 -#define GLFW_KEY_R 82 -#define GLFW_KEY_S 83 -#define GLFW_KEY_T 84 -#define GLFW_KEY_U 85 -#define GLFW_KEY_V 86 -#define GLFW_KEY_W 87 -#define GLFW_KEY_X 88 -#define GLFW_KEY_Y 89 -#define GLFW_KEY_Z 90 -#define GLFW_KEY_LEFT_BRACKET 91 /* [ */ -#define GLFW_KEY_BACKSLASH 92 /* \ */ -#define GLFW_KEY_RIGHT_BRACKET 93 /* ] */ -#define GLFW_KEY_GRAVE_ACCENT 96 /* ` */ -#define GLFW_KEY_WORLD_1 161 /* non-US #1 */ -#define GLFW_KEY_WORLD_2 162 /* non-US #2 */ - -/* Function keys */ -#define GLFW_KEY_ESCAPE 256 -#define GLFW_KEY_ENTER 257 -#define GLFW_KEY_TAB 258 -#define GLFW_KEY_BACKSPACE 259 -#define GLFW_KEY_INSERT 260 -#define GLFW_KEY_DELETE 261 -#define GLFW_KEY_RIGHT 262 -#define GLFW_KEY_LEFT 263 -#define GLFW_KEY_DOWN 264 -#define GLFW_KEY_UP 265 -#define GLFW_KEY_PAGE_UP 266 -#define GLFW_KEY_PAGE_DOWN 267 -#define GLFW_KEY_HOME 268 -#define GLFW_KEY_END 269 -#define GLFW_KEY_CAPS_LOCK 280 -#define GLFW_KEY_SCROLL_LOCK 281 -#define GLFW_KEY_NUM_LOCK 282 -#define GLFW_KEY_PRINT_SCREEN 283 -#define GLFW_KEY_PAUSE 284 -#define GLFW_KEY_F1 290 -#define GLFW_KEY_F2 291 -#define GLFW_KEY_F3 292 -#define GLFW_KEY_F4 293 -#define GLFW_KEY_F5 294 -#define GLFW_KEY_F6 295 -#define GLFW_KEY_F7 296 -#define GLFW_KEY_F8 297 -#define GLFW_KEY_F9 298 -#define GLFW_KEY_F10 299 -#define GLFW_KEY_F11 300 -#define GLFW_KEY_F12 301 -#define GLFW_KEY_F13 302 -#define GLFW_KEY_F14 303 -#define GLFW_KEY_F15 304 -#define GLFW_KEY_F16 305 -#define GLFW_KEY_F17 306 -#define GLFW_KEY_F18 307 -#define GLFW_KEY_F19 308 -#define GLFW_KEY_F20 309 -#define GLFW_KEY_F21 310 -#define GLFW_KEY_F22 311 -#define GLFW_KEY_F23 312 -#define GLFW_KEY_F24 313 -#define GLFW_KEY_F25 314 -#define GLFW_KEY_KP_0 320 -#define GLFW_KEY_KP_1 321 -#define GLFW_KEY_KP_2 322 -#define GLFW_KEY_KP_3 323 -#define GLFW_KEY_KP_4 324 -#define GLFW_KEY_KP_5 325 -#define GLFW_KEY_KP_6 326 -#define GLFW_KEY_KP_7 327 -#define GLFW_KEY_KP_8 328 -#define GLFW_KEY_KP_9 329 -#define GLFW_KEY_KP_DECIMAL 330 -#define GLFW_KEY_KP_DIVIDE 331 -#define GLFW_KEY_KP_MULTIPLY 332 -#define GLFW_KEY_KP_SUBTRACT 333 -#define GLFW_KEY_KP_ADD 334 -#define GLFW_KEY_KP_ENTER 335 -#define GLFW_KEY_KP_EQUAL 336 -#define GLFW_KEY_LEFT_SHIFT 340 -#define GLFW_KEY_LEFT_CONTROL 341 -#define GLFW_KEY_LEFT_ALT 342 -#define GLFW_KEY_LEFT_SUPER 343 -#define GLFW_KEY_RIGHT_SHIFT 344 -#define GLFW_KEY_RIGHT_CONTROL 345 -#define GLFW_KEY_RIGHT_ALT 346 -#define GLFW_KEY_RIGHT_SUPER 347 -#define GLFW_KEY_MENU 348 -#define GLFW_KEY_LAST GLFW_KEY_MENU - -/*! @} */ - -/*! @defgroup mods Modifier key flags - * - * See [key input](@ref input_key) for how these are used. - * - * @ingroup input - * @{ */ - -/*! @brief If this bit is set one or more Shift keys were held down. - */ -#define GLFW_MOD_SHIFT 0x0001 -/*! @brief If this bit is set one or more Control keys were held down. - */ -#define GLFW_MOD_CONTROL 0x0002 -/*! @brief If this bit is set one or more Alt keys were held down. - */ -#define GLFW_MOD_ALT 0x0004 -/*! @brief If this bit is set one or more Super keys were held down. - */ -#define GLFW_MOD_SUPER 0x0008 - -/*! @} */ - -/*! @defgroup buttons Mouse buttons - * - * See [mouse button input](@ref input_mouse_button) for how these are used. - * - * @ingroup input - * @{ */ -#define GLFW_MOUSE_BUTTON_1 0 -#define GLFW_MOUSE_BUTTON_2 1 -#define GLFW_MOUSE_BUTTON_3 2 -#define GLFW_MOUSE_BUTTON_4 3 -#define GLFW_MOUSE_BUTTON_5 4 -#define GLFW_MOUSE_BUTTON_6 5 -#define GLFW_MOUSE_BUTTON_7 6 -#define GLFW_MOUSE_BUTTON_8 7 -#define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_8 -#define GLFW_MOUSE_BUTTON_LEFT GLFW_MOUSE_BUTTON_1 -#define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2 -#define GLFW_MOUSE_BUTTON_MIDDLE GLFW_MOUSE_BUTTON_3 -/*! @} */ - -/*! @defgroup joysticks Joysticks - * - * See [joystick input](@ref joystick) for how these are used. - * - * @ingroup input - * @{ */ -#define GLFW_JOYSTICK_1 0 -#define GLFW_JOYSTICK_2 1 -#define GLFW_JOYSTICK_3 2 -#define GLFW_JOYSTICK_4 3 -#define GLFW_JOYSTICK_5 4 -#define GLFW_JOYSTICK_6 5 -#define GLFW_JOYSTICK_7 6 -#define GLFW_JOYSTICK_8 7 -#define GLFW_JOYSTICK_9 8 -#define GLFW_JOYSTICK_10 9 -#define GLFW_JOYSTICK_11 10 -#define GLFW_JOYSTICK_12 11 -#define GLFW_JOYSTICK_13 12 -#define GLFW_JOYSTICK_14 13 -#define GLFW_JOYSTICK_15 14 -#define GLFW_JOYSTICK_16 15 -#define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16 -/*! @} */ - -/*! @defgroup errors Error codes - * - * See [error handling](@ref error_handling) for how these are used. - * - * @ingroup init - * @{ */ -/*! @brief GLFW has not been initialized. - * - * This occurs if a GLFW function was called that may not be called unless the - * library is [initialized](@ref intro_init). - * - * @par Analysis - * Application programmer error. Initialize GLFW before calling any function - * that requires initialization. - */ -#define GLFW_NOT_INITIALIZED 0x00010001 -/*! @brief No context is current for this thread. - * - * This occurs if a GLFW function was called that needs and operates on the - * current OpenGL or OpenGL ES context but no context is current on the calling - * thread. One such function is @ref glfwSwapInterval. - * - * @par Analysis - * Application programmer error. Ensure a context is current before calling - * functions that require a current context. - */ -#define GLFW_NO_CURRENT_CONTEXT 0x00010002 -/*! @brief One of the arguments to the function was an invalid enum value. - * - * One of the arguments to the function was an invalid enum value, for example - * requesting [GLFW_RED_BITS](@ref window_hints_fb) with @ref - * glfwGetWindowAttrib. - * - * @par Analysis - * Application programmer error. Fix the offending call. - */ -#define GLFW_INVALID_ENUM 0x00010003 -/*! @brief One of the arguments to the function was an invalid value. - * - * One of the arguments to the function was an invalid value, for example - * requesting a non-existent OpenGL or OpenGL ES version like 2.7. - * - * Requesting a valid but unavailable OpenGL or OpenGL ES version will instead - * result in a @ref GLFW_VERSION_UNAVAILABLE error. - * - * @par Analysis - * Application programmer error. Fix the offending call. - */ -#define GLFW_INVALID_VALUE 0x00010004 -/*! @brief A memory allocation failed. - * - * A memory allocation failed. - * - * @par Analysis - * A bug in GLFW or the underlying operating system. Report the bug to our - * [issue tracker](https://github.com/glfw/glfw/issues). - */ -#define GLFW_OUT_OF_MEMORY 0x00010005 -/*! @brief GLFW could not find support for the requested client API on the - * system. - * - * GLFW could not find support for the requested client API on the system. - * - * @par Analysis - * The installed graphics driver does not support the requested client API, or - * does not support it via the chosen context creation backend. Below are - * a few examples. - * - * @par - * Some pre-installed Windows graphics drivers do not support OpenGL. AMD only - * supports OpenGL ES via EGL, while Nvidia and Intel only supports it via - * a WGL or GLX extension. OS X does not provide OpenGL ES at all. The Mesa - * EGL, OpenGL and OpenGL ES libraries do not interface with the Nvidia binary - * driver. - */ -#define GLFW_API_UNAVAILABLE 0x00010006 -/*! @brief The requested OpenGL or OpenGL ES version is not available. - * - * The requested OpenGL or OpenGL ES version (including any requested profile - * or context option) is not available on this machine. - * - * @par Analysis - * The machine does not support your requirements. If your application is - * sufficiently flexible, downgrade your requirements and try again. - * Otherwise, inform the user that their machine does not match your - * requirements. - * - * @par - * Future invalid OpenGL and OpenGL ES versions, for example OpenGL 4.8 if 5.0 - * comes out before the 4.x series gets that far, also fail with this error and - * not @ref GLFW_INVALID_VALUE, because GLFW cannot know what future versions - * will exist. - */ -#define GLFW_VERSION_UNAVAILABLE 0x00010007 -/*! @brief A platform-specific error occurred that does not match any of the - * more specific categories. - * - * A platform-specific error occurred that does not match any of the more - * specific categories. - * - * @par Analysis - * A bug in GLFW or the underlying operating system. Report the bug to our - * [issue tracker](https://github.com/glfw/glfw/issues). - */ -#define GLFW_PLATFORM_ERROR 0x00010008 -/*! @brief The requested format is not supported or available. - * - * If emitted during window creation, the requested pixel format is not - * supported. - * - * If emitted when querying the clipboard, the contents of the clipboard could - * not be converted to the requested format. - * - * @par Analysis - * If emitted during window creation, one or more - * [hard constraints](@ref window_hints_hard) did not match any of the - * available pixel formats. If your application is sufficiently flexible, - * downgrade your requirements and try again. Otherwise, inform the user that - * their machine does not match your requirements. - * - * @par - * If emitted when querying the clipboard, ignore the error or report it to - * the user, as appropriate. - */ -#define GLFW_FORMAT_UNAVAILABLE 0x00010009 -/*! @} */ - -#define GLFW_FOCUSED 0x00020001 -#define GLFW_ICONIFIED 0x00020002 -#define GLFW_RESIZABLE 0x00020003 -#define GLFW_VISIBLE 0x00020004 -#define GLFW_DECORATED 0x00020005 -#define GLFW_AUTO_ICONIFY 0x00020006 -#define GLFW_FLOATING 0x00020007 - -#define GLFW_RED_BITS 0x00021001 -#define GLFW_GREEN_BITS 0x00021002 -#define GLFW_BLUE_BITS 0x00021003 -#define GLFW_ALPHA_BITS 0x00021004 -#define GLFW_DEPTH_BITS 0x00021005 -#define GLFW_STENCIL_BITS 0x00021006 -#define GLFW_ACCUM_RED_BITS 0x00021007 -#define GLFW_ACCUM_GREEN_BITS 0x00021008 -#define GLFW_ACCUM_BLUE_BITS 0x00021009 -#define GLFW_ACCUM_ALPHA_BITS 0x0002100A -#define GLFW_AUX_BUFFERS 0x0002100B -#define GLFW_STEREO 0x0002100C -#define GLFW_SAMPLES 0x0002100D -#define GLFW_SRGB_CAPABLE 0x0002100E -#define GLFW_REFRESH_RATE 0x0002100F -#define GLFW_DOUBLEBUFFER 0x00021010 - -#define GLFW_CLIENT_API 0x00022001 -#define GLFW_CONTEXT_VERSION_MAJOR 0x00022002 -#define GLFW_CONTEXT_VERSION_MINOR 0x00022003 -#define GLFW_CONTEXT_REVISION 0x00022004 -#define GLFW_CONTEXT_ROBUSTNESS 0x00022005 -#define GLFW_OPENGL_FORWARD_COMPAT 0x00022006 -#define GLFW_OPENGL_DEBUG_CONTEXT 0x00022007 -#define GLFW_OPENGL_PROFILE 0x00022008 -#define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009 - -#define GLFW_OPENGL_API 0x00030001 -#define GLFW_OPENGL_ES_API 0x00030002 - -#define GLFW_NO_ROBUSTNESS 0 -#define GLFW_NO_RESET_NOTIFICATION 0x00031001 -#define GLFW_LOSE_CONTEXT_ON_RESET 0x00031002 - -#define GLFW_OPENGL_ANY_PROFILE 0 -#define GLFW_OPENGL_CORE_PROFILE 0x00032001 -#define GLFW_OPENGL_COMPAT_PROFILE 0x00032002 - -#define GLFW_CURSOR 0x00033001 -#define GLFW_STICKY_KEYS 0x00033002 -#define GLFW_STICKY_MOUSE_BUTTONS 0x00033003 - -#define GLFW_CURSOR_NORMAL 0x00034001 -#define GLFW_CURSOR_HIDDEN 0x00034002 -#define GLFW_CURSOR_DISABLED 0x00034003 - -#define GLFW_ANY_RELEASE_BEHAVIOR 0 -#define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001 -#define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002 - -/*! @defgroup shapes Standard cursor shapes - * - * See [standard cursor creation](@ref cursor_standard) for how these are used. - * - * @ingroup input - * @{ */ - -/*! @brief The regular arrow cursor shape. - * - * The regular arrow cursor. - */ -#define GLFW_ARROW_CURSOR 0x00036001 -/*! @brief The text input I-beam cursor shape. - * - * The text input I-beam cursor shape. - */ -#define GLFW_IBEAM_CURSOR 0x00036002 -/*! @brief The crosshair shape. - * - * The crosshair shape. - */ -#define GLFW_CROSSHAIR_CURSOR 0x00036003 -/*! @brief The hand shape. - * - * The hand shape. - */ -#define GLFW_HAND_CURSOR 0x00036004 -/*! @brief The horizontal resize arrow shape. - * - * The horizontal resize arrow shape. - */ -#define GLFW_HRESIZE_CURSOR 0x00036005 -/*! @brief The vertical resize arrow shape. - * - * The vertical resize arrow shape. - */ -#define GLFW_VRESIZE_CURSOR 0x00036006 -/*! @} */ - -#define GLFW_CONNECTED 0x00040001 -#define GLFW_DISCONNECTED 0x00040002 - -#define GLFW_DONT_CARE -1 - - -/************************************************************************* - * GLFW API types - *************************************************************************/ - -/*! @brief Client API function pointer type. - * - * Generic function pointer used for returning client API function pointers - * without forcing a cast from a regular pointer. - * - * @ingroup context - */ -typedef void (*GLFWglproc)(void); - -/*! @brief Opaque monitor object. - * - * Opaque monitor object. - * - * @ingroup monitor - */ -typedef struct GLFWmonitor GLFWmonitor; - -/*! @brief Opaque window object. - * - * Opaque window object. - * - * @ingroup window - */ -typedef struct GLFWwindow GLFWwindow; - -/*! @brief Opaque cursor object. - * - * Opaque cursor object. - * - * @ingroup cursor - */ -typedef struct GLFWcursor GLFWcursor; - -/*! @brief The function signature for error callbacks. - * - * This is the function signature for error callback functions. - * - * @param[in] error An [error code](@ref errors). - * @param[in] description A UTF-8 encoded string describing the error. - * - * @sa glfwSetErrorCallback - * - * @ingroup init - */ -typedef void (* GLFWerrorfun)(int,const char*); - -/*! @brief The function signature for window position callbacks. - * - * This is the function signature for window position callback functions. - * - * @param[in] window The window that was moved. - * @param[in] xpos The new x-coordinate, in screen coordinates, of the - * upper-left corner of the client area of the window. - * @param[in] ypos The new y-coordinate, in screen coordinates, of the - * upper-left corner of the client area of the window. - * - * @sa glfwSetWindowPosCallback - * - * @ingroup window - */ -typedef void (* GLFWwindowposfun)(GLFWwindow*,int,int); - -/*! @brief The function signature for window resize callbacks. - * - * This is the function signature for window size callback functions. - * - * @param[in] window The window that was resized. - * @param[in] width The new width, in screen coordinates, of the window. - * @param[in] height The new height, in screen coordinates, of the window. - * - * @sa glfwSetWindowSizeCallback - * - * @ingroup window - */ -typedef void (* GLFWwindowsizefun)(GLFWwindow*,int,int); - -/*! @brief The function signature for window close callbacks. - * - * This is the function signature for window close callback functions. - * - * @param[in] window The window that the user attempted to close. - * - * @sa glfwSetWindowCloseCallback - * - * @ingroup window - */ -typedef void (* GLFWwindowclosefun)(GLFWwindow*); - -/*! @brief The function signature for window content refresh callbacks. - * - * This is the function signature for window refresh callback functions. - * - * @param[in] window The window whose content needs to be refreshed. - * - * @sa glfwSetWindowRefreshCallback - * - * @ingroup window - */ -typedef void (* GLFWwindowrefreshfun)(GLFWwindow*); - -/*! @brief The function signature for window focus/defocus callbacks. - * - * This is the function signature for window focus callback functions. - * - * @param[in] window The window that gained or lost input focus. - * @param[in] focused `GL_TRUE` if the window was given input focus, or - * `GL_FALSE` if it lost it. - * - * @sa glfwSetWindowFocusCallback - * - * @ingroup window - */ -typedef void (* GLFWwindowfocusfun)(GLFWwindow*,int); - -/*! @brief The function signature for window iconify/restore callbacks. - * - * This is the function signature for window iconify/restore callback - * functions. - * - * @param[in] window The window that was iconified or restored. - * @param[in] iconified `GL_TRUE` if the window was iconified, or `GL_FALSE` - * if it was restored. - * - * @sa glfwSetWindowIconifyCallback - * - * @ingroup window - */ -typedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int); - -/*! @brief The function signature for framebuffer resize callbacks. - * - * This is the function signature for framebuffer resize callback - * functions. - * - * @param[in] window The window whose framebuffer was resized. - * @param[in] width The new width, in pixels, of the framebuffer. - * @param[in] height The new height, in pixels, of the framebuffer. - * - * @sa glfwSetFramebufferSizeCallback - * - * @ingroup window - */ -typedef void (* GLFWframebuffersizefun)(GLFWwindow*,int,int); - -/*! @brief The function signature for mouse button callbacks. - * - * This is the function signature for mouse button callback functions. - * - * @param[in] window The window that received the event. - * @param[in] button The [mouse button](@ref buttons) that was pressed or - * released. - * @param[in] action One of `GLFW_PRESS` or `GLFW_RELEASE`. - * @param[in] mods Bit field describing which [modifier keys](@ref mods) were - * held down. - * - * @sa glfwSetMouseButtonCallback - * - * @ingroup input - */ -typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int,int); - -/*! @brief The function signature for cursor position callbacks. - * - * This is the function signature for cursor position callback functions. - * - * @param[in] window The window that received the event. - * @param[in] xpos The new x-coordinate, in screen coordinates, of the cursor. - * @param[in] ypos The new y-coordinate, in screen coordinates, of the cursor. - * - * @sa glfwSetCursorPosCallback - * - * @ingroup input - */ -typedef void (* GLFWcursorposfun)(GLFWwindow*,double,double); - -/*! @brief The function signature for cursor enter/leave callbacks. - * - * This is the function signature for cursor enter/leave callback functions. - * - * @param[in] window The window that received the event. - * @param[in] entered `GL_TRUE` if the cursor entered the window's client - * area, or `GL_FALSE` if it left it. - * - * @sa glfwSetCursorEnterCallback - * - * @ingroup input - */ -typedef void (* GLFWcursorenterfun)(GLFWwindow*,int); - -/*! @brief The function signature for scroll callbacks. - * - * This is the function signature for scroll callback functions. - * - * @param[in] window The window that received the event. - * @param[in] xoffset The scroll offset along the x-axis. - * @param[in] yoffset The scroll offset along the y-axis. - * - * @sa glfwSetScrollCallback - * - * @ingroup input - */ -typedef void (* GLFWscrollfun)(GLFWwindow*,double,double); - -/*! @brief The function signature for keyboard key callbacks. - * - * This is the function signature for keyboard key callback functions. - * - * @param[in] window The window that received the event. - * @param[in] key The [keyboard key](@ref keys) that was pressed or released. - * @param[in] scancode The system-specific scancode of the key. - * @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`. - * @param[in] mods Bit field describing which [modifier keys](@ref mods) were - * held down. - * - * @sa glfwSetKeyCallback - * - * @ingroup input - */ -typedef void (* GLFWkeyfun)(GLFWwindow*,int,int,int,int); - -/*! @brief The function signature for Unicode character callbacks. - * - * This is the function signature for Unicode character callback functions. - * - * @param[in] window The window that received the event. - * @param[in] codepoint The Unicode code point of the character. - * - * @sa glfwSetCharCallback - * - * @ingroup input - */ -typedef void (* GLFWcharfun)(GLFWwindow*,unsigned int); - -/*! @brief The function signature for Unicode character with modifiers - * callbacks. - * - * This is the function signature for Unicode character with modifiers callback - * functions. It is called for each input character, regardless of what - * modifier keys are held down. - * - * @param[in] window The window that received the event. - * @param[in] codepoint The Unicode code point of the character. - * @param[in] mods Bit field describing which [modifier keys](@ref mods) were - * held down. - * - * @sa glfwSetCharModsCallback - * - * @ingroup input - */ -typedef void (* GLFWcharmodsfun)(GLFWwindow*,unsigned int,int); - -/*! @brief The function signature for file drop callbacks. - * - * This is the function signature for file drop callbacks. - * - * @param[in] window The window that received the event. - * @param[in] count The number of dropped files. - * @param[in] names The UTF-8 encoded path names of the dropped files. - * - * @sa glfwSetDropCallback - * - * @ingroup input - */ -typedef void (* GLFWdropfun)(GLFWwindow*,int,const char**); - -/*! @brief The function signature for monitor configuration callbacks. - * - * This is the function signature for monitor configuration callback functions. - * - * @param[in] monitor The monitor that was connected or disconnected. - * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. - * - * @sa glfwSetMonitorCallback - * - * @ingroup monitor - */ -typedef void (* GLFWmonitorfun)(GLFWmonitor*,int); - -/*! @brief Video mode type. - * - * This describes a single video mode. - * - * @ingroup monitor - */ -typedef struct GLFWvidmode -{ - /*! The width, in screen coordinates, of the video mode. - */ - int width; - /*! The height, in screen coordinates, of the video mode. - */ - int height; - /*! The bit depth of the red channel of the video mode. - */ - int redBits; - /*! The bit depth of the green channel of the video mode. - */ - int greenBits; - /*! The bit depth of the blue channel of the video mode. - */ - int blueBits; - /*! The refresh rate, in Hz, of the video mode. - */ - int refreshRate; -} GLFWvidmode; - -/*! @brief Gamma ramp. - * - * This describes the gamma ramp for a monitor. - * - * @sa glfwGetGammaRamp glfwSetGammaRamp - * - * @ingroup monitor - */ -typedef struct GLFWgammaramp -{ - /*! An array of value describing the response of the red channel. - */ - unsigned short* red; - /*! An array of value describing the response of the green channel. - */ - unsigned short* green; - /*! An array of value describing the response of the blue channel. - */ - unsigned short* blue; - /*! The number of elements in each array. - */ - unsigned int size; -} GLFWgammaramp; - -/*! @brief Image data. - */ -typedef struct GLFWimage -{ - /*! The width, in pixels, of this image. - */ - int width; - /*! The height, in pixels, of this image. - */ - int height; - /*! The pixel data of this image, arranged left-to-right, top-to-bottom. - */ - unsigned char* pixels; -} GLFWimage; - - -/************************************************************************* - * GLFW API functions - *************************************************************************/ - -/*! @brief Initializes the GLFW library. - * - * This function initializes the GLFW library. Before most GLFW functions can - * be used, GLFW must be initialized, and before an application terminates GLFW - * should be terminated in order to free any resources allocated during or - * after initialization. - * - * If this function fails, it calls @ref glfwTerminate before returning. If it - * succeeds, you should call @ref glfwTerminate before the application exits. - * - * Additional calls to this function after successful initialization but before - * termination will return `GL_TRUE` immediately. - * - * @return `GL_TRUE` if successful, or `GL_FALSE` if an - * [error](@ref error_handling) occurred. - * - * @remarks __OS X:__ This function will change the current directory of the - * application to the `Contents/Resources` subdirectory of the application's - * bundle, if present. This can be disabled with a - * [compile-time option](@ref compile_options_osx). - * - * @remarks __X11:__ If the `LC_CTYPE` category of the current locale is set to - * `"C"` then the environment's locale will be applied to that category. This - * is done because character input will not function when `LC_CTYPE` is set to - * `"C"`. If another locale was set before this function was called, it will - * be left untouched. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref intro_init - * @sa glfwTerminate - * - * @since Added in GLFW 1.0. - * - * @ingroup init - */ -GLFWAPI int glfwInit(void); - -/*! @brief Terminates the GLFW library. - * - * This function destroys all remaining windows and cursors, restores any - * modified gamma ramps and frees any other allocated resources. Once this - * function is called, you must again call @ref glfwInit successfully before - * you will be able to use most GLFW functions. - * - * If GLFW has been successfully initialized, this function should be called - * before the application exits. If initialization fails, there is no need to - * call this function, as it is called by @ref glfwInit before it returns - * failure. - * - * @remarks This function may be called before @ref glfwInit. - * - * @warning No window's context may be current on another thread when this - * function is called. - * - * @par Reentrancy - * This function may not be called from a callback. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref intro_init - * @sa glfwInit - * - * @since Added in GLFW 1.0. - * - * @ingroup init - */ -GLFWAPI void glfwTerminate(void); - -/*! @brief Retrieves the version of the GLFW library. - * - * This function retrieves the major, minor and revision numbers of the GLFW - * library. It is intended for when you are using GLFW as a shared library and - * want to ensure that you are using the minimum required version. - * - * Any or all of the version arguments may be `NULL`. This function always - * succeeds. - * - * @param[out] major Where to store the major version number, or `NULL`. - * @param[out] minor Where to store the minor version number, or `NULL`. - * @param[out] rev Where to store the revision number, or `NULL`. - * - * @remarks This function may be called before @ref glfwInit. - * - * @par Thread Safety - * This function may be called from any thread. - * - * @sa @ref intro_version - * @sa glfwGetVersionString - * - * @since Added in GLFW 1.0. - * - * @ingroup init - */ -GLFWAPI void glfwGetVersion(int* major, int* minor, int* rev); - -/*! @brief Returns a string describing the compile-time configuration. - * - * This function returns the compile-time generated - * [version string](@ref intro_version_string) of the GLFW library binary. It - * describes the version, platform, compiler and any platform-specific - * compile-time options. - * - * __Do not use the version string__ to parse the GLFW library version. The - * @ref glfwGetVersion function already provides the version of the running - * library binary. - * - * This function always succeeds. - * - * @return The GLFW version string. - * - * @remarks This function may be called before @ref glfwInit. - * - * @par Pointer Lifetime - * The returned string is static and compile-time generated. - * - * @par Thread Safety - * This function may be called from any thread. - * - * @sa @ref intro_version - * @sa glfwGetVersion - * - * @since Added in GLFW 3.0. - * - * @ingroup init - */ -GLFWAPI const char* glfwGetVersionString(void); - -/*! @brief Sets the error callback. - * - * This function sets the error callback, which is called with an error code - * and a human-readable description each time a GLFW error occurs. - * - * The error callback is called on the thread where the error occurred. If you - * are using GLFW from multiple threads, your error callback needs to be - * written accordingly. - * - * Because the description string may have been generated specifically for that - * error, it is not guaranteed to be valid after the callback has returned. If - * you wish to use it after the callback returns, you need to make a copy. - * - * Once set, the error callback remains set even after the library has been - * terminated. - * - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set. - * - * @remarks This function may be called before @ref glfwInit. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref error_handling - * - * @since Added in GLFW 3.0. - * - * @ingroup init - */ -GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun cbfun); - -/*! @brief Returns the currently connected monitors. - * - * This function returns an array of handles for all currently connected - * monitors. - * - * @param[out] count Where to store the number of monitors in the returned - * array. This is set to zero if an error occurred. - * @return An array of monitor handles, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @par Pointer Lifetime - * The returned array is allocated and freed by GLFW. You should not free it - * yourself. It is guaranteed to be valid only until the monitor configuration - * changes or the library is terminated. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref monitor_monitors - * @sa @ref monitor_event - * @sa glfwGetPrimaryMonitor - * - * @since Added in GLFW 3.0. - * - * @ingroup monitor - */ -GLFWAPI GLFWmonitor** glfwGetMonitors(int* count); - -/*! @brief Returns the primary monitor. - * - * This function returns the primary monitor. This is usually the monitor - * where elements like the Windows task bar or the OS X menu bar is located. - * - * @return The primary monitor, or `NULL` if an [error](@ref error_handling) - * occurred. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref monitor_monitors - * @sa glfwGetMonitors - * - * @since Added in GLFW 3.0. - * - * @ingroup monitor - */ -GLFWAPI GLFWmonitor* glfwGetPrimaryMonitor(void); - -/*! @brief Returns the position of the monitor's viewport on the virtual screen. - * - * This function returns the position, in screen coordinates, of the upper-left - * corner of the specified monitor. - * - * Any or all of the position arguments may be `NULL`. If an error occurs, all - * non-`NULL` position arguments will be set to zero. - * - * @param[in] monitor The monitor to query. - * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. - * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref monitor_properties - * - * @since Added in GLFW 3.0. - * - * @ingroup monitor - */ -GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos); - -/*! @brief Returns the physical size of the monitor. - * - * This function returns the size, in millimetres, of the display area of the - * specified monitor. - * - * Some systems do not provide accurate monitor size information, either - * because the monitor - * [EDID](https://en.wikipedia.org/wiki/Extended_display_identification_data) - * data is incorrect or because the driver does not report it accurately. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] monitor The monitor to query. - * @param[out] widthMM Where to store the width, in millimetres, of the - * monitor's display area, or `NULL`. - * @param[out] heightMM Where to store the height, in millimetres, of the - * monitor's display area, or `NULL`. - * - * @remarks __Windows:__ The OS calculates the returned physical size from the - * current resolution and system DPI instead of querying the monitor EDID data. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref monitor_properties - * - * @since Added in GLFW 3.0. - * - * @ingroup monitor - */ -GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM); - -/*! @brief Returns the name of the specified monitor. - * - * This function returns a human-readable name, encoded as UTF-8, of the - * specified monitor. The name typically reflects the make and model of the - * monitor and is not guaranteed to be unique among the connected monitors. - * - * @param[in] monitor The monitor to query. - * @return The UTF-8 encoded name of the monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @par Pointer Lifetime - * The returned string is allocated and freed by GLFW. You should not free it - * yourself. It is valid until the specified monitor is disconnected or the - * library is terminated. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref monitor_properties - * - * @since Added in GLFW 3.0. - * - * @ingroup monitor - */ -GLFWAPI const char* glfwGetMonitorName(GLFWmonitor* monitor); - -/*! @brief Sets the monitor configuration callback. - * - * This function sets the monitor configuration callback, or removes the - * currently set callback. This is called when a monitor is connected to or - * disconnected from the system. - * - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @bug __X11:__ This callback is not yet called on monitor configuration - * changes. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref monitor_event - * - * @since Added in GLFW 3.0. - * - * @ingroup monitor - */ -GLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun cbfun); - -/*! @brief Returns the available video modes for the specified monitor. - * - * This function returns an array of all video modes supported by the specified - * monitor. The returned array is sorted in ascending order, first by color - * bit depth (the sum of all channel depths) and then by resolution area (the - * product of width and height). - * - * @param[in] monitor The monitor to query. - * @param[out] count Where to store the number of video modes in the returned - * array. This is set to zero if an error occurred. - * @return An array of video modes, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @par Pointer Lifetime - * The returned array is allocated and freed by GLFW. You should not free it - * yourself. It is valid until the specified monitor is disconnected, this - * function is called again for that monitor or the library is terminated. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref monitor_modes - * @sa glfwGetVideoMode - * - * @since Added in GLFW 1.0. - * - * @par - * __GLFW 3:__ Changed to return an array of modes for a specific monitor. - * - * @ingroup monitor - */ -GLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count); - -/*! @brief Returns the current mode of the specified monitor. - * - * This function returns the current video mode of the specified monitor. If - * you have created a full screen window for that monitor, the return value - * will depend on whether that window is iconified. - * - * @param[in] monitor The monitor to query. - * @return The current mode of the monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @par Pointer Lifetime - * The returned array is allocated and freed by GLFW. You should not free it - * yourself. It is valid until the specified monitor is disconnected or the - * library is terminated. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref monitor_modes - * @sa glfwGetVideoModes - * - * @since Added in GLFW 3.0. Replaces `glfwGetDesktopMode`. - * - * @ingroup monitor - */ -GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor); - -/*! @brief Generates a gamma ramp and sets it for the specified monitor. - * - * This function generates a 256-element gamma ramp from the specified exponent - * and then calls @ref glfwSetGammaRamp with it. - * - * @param[in] monitor The monitor whose gamma ramp to set. - * @param[in] gamma The desired exponent. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref monitor_gamma - * - * @since Added in GLFW 3.0. - * - * @ingroup monitor - */ -GLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma); - -/*! @brief Returns the current gamma ramp for the specified monitor. - * - * This function returns the current gamma ramp of the specified monitor. - * - * @param[in] monitor The monitor to query. - * @return The current gamma ramp, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @par Pointer Lifetime - * The returned structure and its arrays are allocated and freed by GLFW. You - * should not free them yourself. They are valid until the specified monitor - * is disconnected, this function is called again for that monitor or the - * library is terminated. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref monitor_gamma - * - * @since Added in GLFW 3.0. - * - * @ingroup monitor - */ -GLFWAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor); - -/*! @brief Sets the current gamma ramp for the specified monitor. - * - * This function sets the current gamma ramp for the specified monitor. The - * original gamma ramp for that monitor is saved by GLFW the first time this - * function is called and is restored by @ref glfwTerminate. - * - * @param[in] monitor The monitor whose gamma ramp to set. - * @param[in] ramp The gamma ramp to use. - * - * @note Gamma ramp sizes other than 256 are not supported by all hardware. - * - * @par Pointer Lifetime - * The specified gamma ramp is copied before this function returns. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref monitor_gamma - * - * @since Added in GLFW 3.0. - * - * @ingroup monitor - */ -GLFWAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp); - -/*! @brief Resets all window hints to their default values. - * - * This function resets all window hints to their - * [default values](@ref window_hints_values). - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_hints - * @sa glfwWindowHint - * - * @since Added in GLFW 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwDefaultWindowHints(void); - -/*! @brief Sets the specified window hint to the desired value. - * - * This function sets hints for the next call to @ref glfwCreateWindow. The - * hints, once set, retain their values until changed by a call to @ref - * glfwWindowHint or @ref glfwDefaultWindowHints, or until the library is - * terminated. - * - * @param[in] target The [window hint](@ref window_hints) to set. - * @param[in] hint The new value of the window hint. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_hints - * @sa glfwDefaultWindowHints - * - * @since Added in GLFW 3.0. Replaces `glfwOpenWindowHint`. - * - * @ingroup window - */ -GLFWAPI void glfwWindowHint(int target, int hint); - -/*! @brief Creates a window and its associated context. - * - * This function creates a window and its associated OpenGL or OpenGL ES - * context. Most of the options controlling how the window and its context - * should be created are specified with [window hints](@ref window_hints). - * - * Successful creation does not change which context is current. Before you - * can use the newly created context, you need to - * [make it current](@ref context_current). For information about the `share` - * parameter, see @ref context_sharing. - * - * The created window, framebuffer and context may differ from what you - * requested, as not all parameters and hints are - * [hard constraints](@ref window_hints_hard). This includes the size of the - * window, especially for full screen windows. To query the actual attributes - * of the created window, framebuffer and context, use queries like @ref - * glfwGetWindowAttrib and @ref glfwGetWindowSize. - * - * To create a full screen window, you need to specify the monitor the window - * will cover. If no monitor is specified, windowed mode will be used. Unless - * you have a way for the user to choose a specific monitor, it is recommended - * that you pick the primary monitor. For more information on how to query - * connected monitors, see @ref monitor_monitors. - * - * For full screen windows, the specified size becomes the resolution of the - * window's _desired video mode_. As long as a full screen window has input - * focus, the supported video mode most closely matching the desired video mode - * is set for the specified monitor. For more information about full screen - * windows, including the creation of so called _windowed full screen_ or - * _borderless full screen_ windows, see @ref window_windowed_full_screen. - * - * By default, newly created windows use the placement recommended by the - * window system. To create the window at a specific position, make it - * initially invisible using the [GLFW_VISIBLE](@ref window_hints_wnd) window - * hint, set its [position](@ref window_pos) and then [show](@ref window_hide) - * it. - * - * If a full screen window has input focus, the screensaver is prohibited from - * starting. - * - * Window systems put limits on window sizes. Very large or very small window - * dimensions may be overridden by the window system on creation. Check the - * actual [size](@ref window_size) after creation. - * - * The [swap interval](@ref buffer_swap) is not set during window creation and - * the initial value may vary depending on driver settings and defaults. - * - * @param[in] width The desired width, in screen coordinates, of the window. - * This must be greater than zero. - * @param[in] height The desired height, in screen coordinates, of the window. - * This must be greater than zero. - * @param[in] title The initial, UTF-8 encoded window title. - * @param[in] monitor The monitor to use for full screen mode, or `NULL` to use - * windowed mode. - * @param[in] share The window whose context to share resources with, or `NULL` - * to not share resources. - * @return The handle of the created window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @remarks __Windows:__ Window creation will fail if the Microsoft GDI - * software OpenGL implementation is the only one available. - * - * @remarks __Windows:__ If the executable has an icon resource named - * `GLFW_ICON,` it will be set as the icon for the window. If no such icon is - * present, the `IDI_WINLOGO` icon will be used instead. - * - * @remarks __Windows:__ The context to share resources with may not be current - * on any other thread. - * - * @remarks __OS X:__ The GLFW window has no icon, as it is not a document - * window, but the dock icon will be the same as the application bundle's icon. - * For more information on bundles, see the - * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) - * in the Mac Developer Library. - * - * @remarks __OS X:__ The first time a window is created the menu bar is - * populated with common commands like Hide, Quit and About. The About entry - * opens a minimal about dialog with information from the application's bundle. - * The menu bar can be disabled with a - * [compile-time option](@ref compile_options_osx). - * - * @remarks __X11:__ There is no mechanism for setting the window icon yet. - * - * @remarks __X11:__ Some window managers will not respect the placement of - * initially hidden windows. - * - * @par Reentrancy - * This function may not be called from a callback. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_creation - * @sa glfwDestroyWindow - * - * @since Added in GLFW 3.0. Replaces `glfwOpenWindow`. - * - * @ingroup window - */ -GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share); - -/*! @brief Destroys the specified window and its context. - * - * This function destroys the specified window and its context. On calling - * this function, no further callbacks will be called for that window. - * - * If the context of the specified window is current on the main thread, it is - * detached before being destroyed. - * - * @param[in] window The window to destroy. - * - * @note The context of the specified window must not be current on any other - * thread when this function is called. - * - * @par Reentrancy - * This function may not be called from a callback. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_creation - * @sa glfwCreateWindow - * - * @since Added in GLFW 3.0. Replaces `glfwCloseWindow`. - * - * @ingroup window - */ -GLFWAPI void glfwDestroyWindow(GLFWwindow* window); - -/*! @brief Checks the close flag of the specified window. - * - * This function returns the value of the close flag of the specified window. - * - * @param[in] window The window to query. - * @return The value of the close flag. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @sa @ref window_close - * - * @since Added in GLFW 3.0. - * - * @ingroup window - */ -GLFWAPI int glfwWindowShouldClose(GLFWwindow* window); - -/*! @brief Sets the close flag of the specified window. - * - * This function sets the value of the close flag of the specified window. - * This can be used to override the user's attempt to close the window, or - * to signal that it should be closed. - * - * @param[in] window The window whose flag to change. - * @param[in] value The new value. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @sa @ref window_close - * - * @since Added in GLFW 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value); - -/*! @brief Sets the title of the specified window. - * - * This function sets the window title, encoded as UTF-8, of the specified - * window. - * - * @param[in] window The window whose title to change. - * @param[in] title The UTF-8 encoded window title. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_title - * - * @since Added in GLFW 1.0. - * - * @par - * __GLFW 3:__ Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title); - -/*! @brief Retrieves the position of the client area of the specified window. - * - * This function retrieves the position, in screen coordinates, of the - * upper-left corner of the client area of the specified window. - * - * Any or all of the position arguments may be `NULL`. If an error occurs, all - * non-`NULL` position arguments will be set to zero. - * - * @param[in] window The window to query. - * @param[out] xpos Where to store the x-coordinate of the upper-left corner of - * the client area, or `NULL`. - * @param[out] ypos Where to store the y-coordinate of the upper-left corner of - * the client area, or `NULL`. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_pos - * @sa glfwSetWindowPos - * - * @since Added in GLFW 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos); - -/*! @brief Sets the position of the client area of the specified window. - * - * This function sets the position, in screen coordinates, of the upper-left - * corner of the client area of the specified windowed mode window. If the - * window is a full screen window, this function does nothing. - * - * __Do not use this function__ to move an already visible window unless you - * have very good reasons for doing so, as it will confuse and annoy the user. - * - * The window manager may put limits on what positions are allowed. GLFW - * cannot and should not override these limits. - * - * @param[in] window The window to query. - * @param[in] xpos The x-coordinate of the upper-left corner of the client area. - * @param[in] ypos The y-coordinate of the upper-left corner of the client area. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_pos - * @sa glfwGetWindowPos - * - * @since Added in GLFW 1.0. - * - * @par - * __GLFW 3:__ Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos); - -/*! @brief Retrieves the size of the client area of the specified window. - * - * This function retrieves the size, in screen coordinates, of the client area - * of the specified window. If you wish to retrieve the size of the - * framebuffer of the window in pixels, see @ref glfwGetFramebufferSize. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] window The window whose size to retrieve. - * @param[out] width Where to store the width, in screen coordinates, of the - * client area, or `NULL`. - * @param[out] height Where to store the height, in screen coordinates, of the - * client area, or `NULL`. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_size - * @sa glfwSetWindowSize - * - * @since Added in GLFW 1.0. - * - * @par - * __GLFW 3:__ Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height); - -/*! @brief Sets the size of the client area of the specified window. - * - * This function sets the size, in screen coordinates, of the client area of - * the specified window. - * - * For full screen windows, this function selects and switches to the resolution - * closest to the specified size, without affecting the window's context. As - * the context is unaffected, the bit depths of the framebuffer remain - * unchanged. - * - * The window manager may put limits on what sizes are allowed. GLFW cannot - * and should not override these limits. - * - * @param[in] window The window to resize. - * @param[in] width The desired width of the specified window. - * @param[in] height The desired height of the specified window. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_size - * @sa glfwGetWindowSize - * - * @since Added in GLFW 1.0. - * - * @par - * __GLFW 3:__ Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height); - -/*! @brief Retrieves the size of the framebuffer of the specified window. - * - * This function retrieves the size, in pixels, of the framebuffer of the - * specified window. If you wish to retrieve the size of the window in screen - * coordinates, see @ref glfwGetWindowSize. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] window The window whose framebuffer to query. - * @param[out] width Where to store the width, in pixels, of the framebuffer, - * or `NULL`. - * @param[out] height Where to store the height, in pixels, of the framebuffer, - * or `NULL`. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_fbsize - * @sa glfwSetFramebufferSizeCallback - * - * @since Added in GLFW 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height); - -/*! @brief Retrieves the size of the frame of the window. - * - * This function retrieves the size, in screen coordinates, of each edge of the - * frame of the specified window. This size includes the title bar, if the - * window has one. The size of the frame may vary depending on the - * [window-related hints](@ref window_hints_wnd) used to create it. - * - * Because this function retrieves the size of each window frame edge and not - * the offset along a particular coordinate axis, the retrieved values will - * always be zero or positive. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] window The window whose frame size to query. - * @param[out] left Where to store the size, in screen coordinates, of the left - * edge of the window frame, or `NULL`. - * @param[out] top Where to store the size, in screen coordinates, of the top - * edge of the window frame, or `NULL`. - * @param[out] right Where to store the size, in screen coordinates, of the - * right edge of the window frame, or `NULL`. - * @param[out] bottom Where to store the size, in screen coordinates, of the - * bottom edge of the window frame, or `NULL`. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_size - * - * @since Added in GLFW 3.1. - * - * @ingroup window - */ -GLFWAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom); - -/*! @brief Iconifies the specified window. - * - * This function iconifies (minimizes) the specified window if it was - * previously restored. If the window is already iconified, this function does - * nothing. - * - * If the specified window is a full screen window, the original monitor - * resolution is restored until the window is restored. - * - * @param[in] window The window to iconify. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_iconify - * @sa glfwRestoreWindow - * - * @since Added in GLFW 2.1. - * - * @par - * __GLFW 3:__ Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwIconifyWindow(GLFWwindow* window); - -/*! @brief Restores the specified window. - * - * This function restores the specified window if it was previously iconified - * (minimized). If the window is already restored, this function does nothing. - * - * If the specified window is a full screen window, the resolution chosen for - * the window is restored on the selected monitor. - * - * @param[in] window The window to restore. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_iconify - * @sa glfwIconifyWindow - * - * @since Added in GLFW 2.1. - * - * @par - * __GLFW 3:__ Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwRestoreWindow(GLFWwindow* window); - -/*! @brief Makes the specified window visible. - * - * This function makes the specified window visible if it was previously - * hidden. If the window is already visible or is in full screen mode, this - * function does nothing. - * - * @param[in] window The window to make visible. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_hide - * @sa glfwHideWindow - * - * @since Added in GLFW 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwShowWindow(GLFWwindow* window); - -/*! @brief Hides the specified window. - * - * This function hides the specified window if it was previously visible. If - * the window is already hidden or is in full screen mode, this function does - * nothing. - * - * @param[in] window The window to hide. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_hide - * @sa glfwShowWindow - * - * @since Added in GLFW 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwHideWindow(GLFWwindow* window); - -/*! @brief Returns the monitor that the window uses for full screen mode. - * - * This function returns the handle of the monitor that the specified window is - * in full screen on. - * - * @param[in] window The window to query. - * @return The monitor, or `NULL` if the window is in windowed mode or an error - * occurred. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_monitor - * - * @since Added in GLFW 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window); - -/*! @brief Returns an attribute of the specified window. - * - * This function returns the value of an attribute of the specified window or - * its OpenGL or OpenGL ES context. - * - * @param[in] window The window to query. - * @param[in] attrib The [window attribute](@ref window_attribs) whose value to - * return. - * @return The value of the attribute, or zero if an - * [error](@ref error_handling) occurred. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_attribs - * - * @since Added in GLFW 3.0. Replaces `glfwGetWindowParam` and - * `glfwGetGLVersion`. - * - * @ingroup window - */ -GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib); - -/*! @brief Sets the user pointer of the specified window. - * - * This function sets the user-defined pointer of the specified window. The - * current value is retained until the window is destroyed. The initial value - * is `NULL`. - * - * @param[in] window The window whose pointer to set. - * @param[in] pointer The new value. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @sa @ref window_userptr - * @sa glfwGetWindowUserPointer - * - * @since Added in GLFW 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer); - -/*! @brief Returns the user pointer of the specified window. - * - * This function returns the current value of the user-defined pointer of the - * specified window. The initial value is `NULL`. - * - * @param[in] window The window whose pointer to return. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @sa @ref window_userptr - * @sa glfwSetWindowUserPointer - * - * @since Added in GLFW 3.0. - * - * @ingroup window - */ -GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window); - -/*! @brief Sets the position callback for the specified window. - * - * This function sets the position callback of the specified window, which is - * called when the window is moved. The callback is provided with the screen - * position of the upper-left corner of the client area of the window. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_pos - * - * @since Added in GLFW 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun cbfun); - -/*! @brief Sets the size callback for the specified window. - * - * This function sets the size callback of the specified window, which is - * called when the window is resized. The callback is provided with the size, - * in screen coordinates, of the client area of the window. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_size - * - * @since Added in GLFW 1.0. - * - * @par - * __GLFW 3:__ Added window handle parameter. Updated callback signature. - * - * @ingroup window - */ -GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun cbfun); - -/*! @brief Sets the close callback for the specified window. - * - * This function sets the close callback of the specified window, which is - * called when the user attempts to close the window, for example by clicking - * the close widget in the title bar. - * - * The close flag is set before this callback is called, but you can modify it - * at any time with @ref glfwSetWindowShouldClose. - * - * The close callback is not triggered by @ref glfwDestroyWindow. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @remarks __OS X:__ Selecting Quit from the application menu will - * trigger the close callback for all windows. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_close - * - * @since Added in GLFW 2.5. - * - * @par - * __GLFW 3:__ Added window handle parameter. Updated callback signature. - * - * @ingroup window - */ -GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun cbfun); - -/*! @brief Sets the refresh callback for the specified window. - * - * This function sets the refresh callback of the specified window, which is - * called when the client area of the window needs to be redrawn, for example - * if the window has been exposed after having been covered by another window. - * - * On compositing window systems such as Aero, Compiz or Aqua, where the window - * contents are saved off-screen, this callback may be called only very - * infrequently or never at all. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_refresh - * - * @since Added in GLFW 2.5. - * - * @par - * __GLFW 3:__ Added window handle parameter. Updated callback signature. - * - * @ingroup window - */ -GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun cbfun); - -/*! @brief Sets the focus callback for the specified window. - * - * This function sets the focus callback of the specified window, which is - * called when the window gains or loses input focus. - * - * After the focus callback is called for a window that lost input focus, - * synthetic key and mouse button release events will be generated for all such - * that had been pressed. For more information, see @ref glfwSetKeyCallback - * and @ref glfwSetMouseButtonCallback. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_focus - * - * @since Added in GLFW 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun cbfun); - -/*! @brief Sets the iconify callback for the specified window. - * - * This function sets the iconification callback of the specified window, which - * is called when the window is iconified or restored. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_iconify - * - * @since Added in GLFW 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun cbfun); - -/*! @brief Sets the framebuffer resize callback for the specified window. - * - * This function sets the framebuffer resize callback of the specified window, - * which is called when the framebuffer of the specified window is resized. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_fbsize - * - * @since Added in GLFW 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun cbfun); - -/*! @brief Processes all pending events. - * - * This function processes only those events that are already in the event - * queue and then returns immediately. Processing events will cause the window - * and input callbacks associated with those events to be called. - * - * On some platforms, a window move, resize or menu operation will cause event - * processing to block. This is due to how event processing is designed on - * those platforms. You can use the - * [window refresh callback](@ref window_refresh) to redraw the contents of - * your window when necessary during such operations. - * - * On some platforms, certain events are sent directly to the application - * without going through the event queue, causing callbacks to be called - * outside of a call to one of the event processing functions. - * - * Event processing is not required for joystick input to work. - * - * @par Reentrancy - * This function may not be called from a callback. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref events - * @sa glfwWaitEvents - * - * @since Added in GLFW 1.0. - * - * @ingroup window - */ -GLFWAPI void glfwPollEvents(void); - -/*! @brief Waits until events are queued and processes them. - * - * This function puts the calling thread to sleep until at least one event is - * available in the event queue. Once one or more events are available, - * it behaves exactly like @ref glfwPollEvents, i.e. the events in the queue - * are processed and the function then returns immediately. Processing events - * will cause the window and input callbacks associated with those events to be - * called. - * - * Since not all events are associated with callbacks, this function may return - * without a callback having been called even if you are monitoring all - * callbacks. - * - * On some platforms, a window move, resize or menu operation will cause event - * processing to block. This is due to how event processing is designed on - * those platforms. You can use the - * [window refresh callback](@ref window_refresh) to redraw the contents of - * your window when necessary during such operations. - * - * On some platforms, certain callbacks may be called outside of a call to one - * of the event processing functions. - * - * If no windows exist, this function returns immediately. For synchronization - * of threads in applications that do not create windows, use your threading - * library of choice. - * - * Event processing is not required for joystick input to work. - * - * @par Reentrancy - * This function may not be called from a callback. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref events - * @sa glfwPollEvents - * - * @since Added in GLFW 2.5. - * - * @ingroup window - */ -GLFWAPI void glfwWaitEvents(void); - -/*! @brief Posts an empty event to the event queue. - * - * This function posts an empty event from the current thread to the event - * queue, causing @ref glfwWaitEvents to return. - * - * If no windows exist, this function returns immediately. For synchronization - * of threads in applications that do not create windows, use your threading - * library of choice. - * - * @par Thread Safety - * This function may be called from any thread. - * - * @sa @ref events - * @sa glfwWaitEvents - * - * @since Added in GLFW 3.1. - * - * @ingroup window - */ -GLFWAPI void glfwPostEmptyEvent(void); - -/*! @brief Returns the value of an input option for the specified window. - * - * This function returns the value of an input option for the specified window. - * The mode must be one of `GLFW_CURSOR`, `GLFW_STICKY_KEYS` or - * `GLFW_STICKY_MOUSE_BUTTONS`. - * - * @param[in] window The window to query. - * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS` or - * `GLFW_STICKY_MOUSE_BUTTONS`. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa glfwSetInputMode - * - * @since Added in GLFW 3.0. - * - * @ingroup input - */ -GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode); - -/*! @brief Sets an input option for the specified window. - * - * This function sets an input mode option for the specified window. The mode - * must be one of `GLFW_CURSOR`, `GLFW_STICKY_KEYS` or - * `GLFW_STICKY_MOUSE_BUTTONS`. - * - * If the mode is `GLFW_CURSOR`, the value must be one of the following cursor - * modes: - * - `GLFW_CURSOR_NORMAL` makes the cursor visible and behaving normally. - * - `GLFW_CURSOR_HIDDEN` makes the cursor invisible when it is over the client - * area of the window but does not restrict the cursor from leaving. - * - `GLFW_CURSOR_DISABLED` hides and grabs the cursor, providing virtual - * and unlimited cursor movement. This is useful for implementing for - * example 3D camera controls. - * - * If the mode is `GLFW_STICKY_KEYS`, the value must be either `GL_TRUE` to - * enable sticky keys, or `GL_FALSE` to disable it. If sticky keys are - * enabled, a key press will ensure that @ref glfwGetKey returns `GLFW_PRESS` - * the next time it is called even if the key had been released before the - * call. This is useful when you are only interested in whether keys have been - * pressed but not when or in which order. - * - * If the mode is `GLFW_STICKY_MOUSE_BUTTONS`, the value must be either - * `GL_TRUE` to enable sticky mouse buttons, or `GL_FALSE` to disable it. If - * sticky mouse buttons are enabled, a mouse button press will ensure that @ref - * glfwGetMouseButton returns `GLFW_PRESS` the next time it is called even if - * the mouse button had been released before the call. This is useful when you - * are only interested in whether mouse buttons have been pressed but not when - * or in which order. - * - * @param[in] window The window whose input mode to set. - * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS` or - * `GLFW_STICKY_MOUSE_BUTTONS`. - * @param[in] value The new value of the specified input mode. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa glfwGetInputMode - * - * @since Added in GLFW 3.0. Replaces `glfwEnable` and `glfwDisable`. - * - * @ingroup input - */ -GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value); - -/*! @brief Returns the last reported state of a keyboard key for the specified - * window. - * - * This function returns the last state reported for the specified key to the - * specified window. The returned state is one of `GLFW_PRESS` or - * `GLFW_RELEASE`. The higher-level action `GLFW_REPEAT` is only reported to - * the key callback. - * - * If the `GLFW_STICKY_KEYS` input mode is enabled, this function returns - * `GLFW_PRESS` the first time you call it for a key that was pressed, even if - * that key has already been released. - * - * The key functions deal with physical keys, with [key tokens](@ref keys) - * named after their use on the standard US keyboard layout. If you want to - * input text, use the Unicode character callback instead. - * - * The [modifier key bit masks](@ref mods) are not key tokens and cannot be - * used with this function. - * - * @param[in] window The desired window. - * @param[in] key The desired [keyboard key](@ref keys). `GLFW_KEY_UNKNOWN` is - * not a valid key for this function. - * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref input_key - * - * @since Added in GLFW 1.0. - * - * @par - * __GLFW 3:__ Added window handle parameter. - * - * @ingroup input - */ -GLFWAPI int glfwGetKey(GLFWwindow* window, int key); - -/*! @brief Returns the last reported state of a mouse button for the specified - * window. - * - * This function returns the last state reported for the specified mouse button - * to the specified window. The returned state is one of `GLFW_PRESS` or - * `GLFW_RELEASE`. - * - * If the `GLFW_STICKY_MOUSE_BUTTONS` input mode is enabled, this function - * `GLFW_PRESS` the first time you call it for a mouse button that was pressed, - * even if that mouse button has already been released. - * - * @param[in] window The desired window. - * @param[in] button The desired [mouse button](@ref buttons). - * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref input_mouse_button - * - * @since Added in GLFW 1.0. - * - * @par - * __GLFW 3:__ Added window handle parameter. - * - * @ingroup input - */ -GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button); - -/*! @brief Retrieves the position of the cursor relative to the client area of - * the window. - * - * This function returns the position of the cursor, in screen coordinates, - * relative to the upper-left corner of the client area of the specified - * window. - * - * If the cursor is disabled (with `GLFW_CURSOR_DISABLED`) then the cursor - * position is unbounded and limited only by the minimum and maximum values of - * a `double`. - * - * The coordinate can be converted to their integer equivalents with the - * `floor` function. Casting directly to an integer type works for positive - * coordinates, but fails for negative ones. - * - * Any or all of the position arguments may be `NULL`. If an error occurs, all - * non-`NULL` position arguments will be set to zero. - * - * @param[in] window The desired window. - * @param[out] xpos Where to store the cursor x-coordinate, relative to the - * left edge of the client area, or `NULL`. - * @param[out] ypos Where to store the cursor y-coordinate, relative to the to - * top edge of the client area, or `NULL`. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref cursor_pos - * @sa glfwSetCursorPos - * - * @since Added in GLFW 3.0. Replaces `glfwGetMousePos`. - * - * @ingroup input - */ -GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos); - -/*! @brief Sets the position of the cursor, relative to the client area of the - * window. - * - * This function sets the position, in screen coordinates, of the cursor - * relative to the upper-left corner of the client area of the specified - * window. The window must have input focus. If the window does not have - * input focus when this function is called, it fails silently. - * - * __Do not use this function__ to implement things like camera controls. GLFW - * already provides the `GLFW_CURSOR_DISABLED` cursor mode that hides the - * cursor, transparently re-centers it and provides unconstrained cursor - * motion. See @ref glfwSetInputMode for more information. - * - * If the cursor mode is `GLFW_CURSOR_DISABLED` then the cursor position is - * unconstrained and limited only by the minimum and maximum values of - * a `double`. - * - * @param[in] window The desired window. - * @param[in] xpos The desired x-coordinate, relative to the left edge of the - * client area. - * @param[in] ypos The desired y-coordinate, relative to the top edge of the - * client area. - * - * @remarks __X11:__ Due to the asynchronous nature of a modern X desktop, it - * may take a moment for the window focus event to arrive. This means you will - * not be able to set the cursor position directly after window creation. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref cursor_pos - * @sa glfwGetCursorPos - * - * @since Added in GLFW 3.0. Replaces `glfwSetMousePos`. - * - * @ingroup input - */ -GLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos); - -/*! @brief Creates a custom cursor. - * - * Creates a new custom cursor image that can be set for a window with @ref - * glfwSetCursor. The cursor can be destroyed with @ref glfwDestroyCursor. - * Any remaining cursors are destroyed by @ref glfwTerminate. - * - * The pixels are 32-bit little-endian RGBA, i.e. eight bits per channel. They - * are arranged canonically as packed sequential rows, starting from the - * top-left corner. - * - * The cursor hotspot is specified in pixels, relative to the upper-left corner - * of the cursor image. Like all other coordinate systems in GLFW, the X-axis - * points to the right and the Y-axis points down. - * - * @param[in] image The desired cursor image. - * @param[in] xhot The desired x-coordinate, in pixels, of the cursor hotspot. - * @param[in] yhot The desired y-coordinate, in pixels, of the cursor hotspot. - * - * @return The handle of the created cursor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @par Pointer Lifetime - * The specified image data is copied before this function returns. - * - * @par Reentrancy - * This function may not be called from a callback. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref cursor_object - * @sa glfwDestroyCursor - * @sa glfwCreateStandardCursor - * - * @since Added in GLFW 3.1. - * - * @ingroup input - */ -GLFWAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot); - -/*! @brief Creates a cursor with a standard shape. - * - * Returns a cursor with a [standard shape](@ref shapes), that can be set for - * a window with @ref glfwSetCursor. - * - * @param[in] shape One of the [standard shapes](@ref shapes). - * - * @return A new cursor ready to use or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @par Reentrancy - * This function may not be called from a callback. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref cursor_object - * @sa glfwCreateCursor - * - * @since Added in GLFW 3.1. - * - * @ingroup input - */ -GLFWAPI GLFWcursor* glfwCreateStandardCursor(int shape); - -/*! @brief Destroys a cursor. - * - * This function destroys a cursor previously created with @ref - * glfwCreateCursor. Any remaining cursors will be destroyed by @ref - * glfwTerminate. - * - * @param[in] cursor The cursor object to destroy. - * - * @par Reentrancy - * This function may not be called from a callback. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref cursor_object - * @sa glfwCreateCursor - * - * @since Added in GLFW 3.1. - * - * @ingroup input - */ -GLFWAPI void glfwDestroyCursor(GLFWcursor* cursor); - -/*! @brief Sets the cursor for the window. - * - * This function sets the cursor image to be used when the cursor is over the - * client area of the specified window. The set cursor will only be visible - * when the [cursor mode](@ref cursor_mode) of the window is - * `GLFW_CURSOR_NORMAL`. - * - * On some platforms, the set cursor may not be visible unless the window also - * has input focus. - * - * @param[in] window The window to set the cursor for. - * @param[in] cursor The cursor to set, or `NULL` to switch back to the default - * arrow cursor. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref cursor_object - * - * @since Added in GLFW 3.1. - * - * @ingroup input - */ -GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor); - -/*! @brief Sets the key callback. - * - * This function sets the key callback of the specified window, which is called - * when a key is pressed, repeated or released. - * - * The key functions deal with physical keys, with layout independent - * [key tokens](@ref keys) named after their values in the standard US keyboard - * layout. If you want to input text, use the - * [character callback](@ref glfwSetCharCallback) instead. - * - * When a window loses input focus, it will generate synthetic key release - * events for all pressed keys. You can tell these events from user-generated - * events by the fact that the synthetic ones are generated after the focus - * loss event has been processed, i.e. after the - * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. - * - * The scancode of a key is specific to that platform or sometimes even to that - * machine. Scancodes are intended to allow users to bind keys that don't have - * a GLFW key token. Such keys have `key` set to `GLFW_KEY_UNKNOWN`, their - * state is not saved and so it cannot be queried with @ref glfwGetKey. - * - * Sometimes GLFW needs to generate synthetic key events, in which case the - * scancode may be zero. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new key callback, or `NULL` to remove the currently - * set callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref input_key - * - * @since Added in GLFW 1.0. - * - * @par - * __GLFW 3:__ Added window handle parameter. Updated callback signature. - * - * @ingroup input - */ -GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun cbfun); - -/*! @brief Sets the Unicode character callback. - * - * This function sets the character callback of the specified window, which is - * called when a Unicode character is input. - * - * The character callback is intended for Unicode text input. As it deals with - * characters, it is keyboard layout dependent, whereas the - * [key callback](@ref glfwSetKeyCallback) is not. Characters do not map 1:1 - * to physical keys, as a key may produce zero, one or more characters. If you - * want to know whether a specific physical key was pressed or released, see - * the key callback instead. - * - * The character callback behaves as system text input normally does and will - * not be called if modifier keys are held down that would prevent normal text - * input on that platform, for example a Super (Command) key on OS X or Alt key - * on Windows. There is a - * [character with modifiers callback](@ref glfwSetCharModsCallback) that - * receives these events. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref input_char - * - * @since Added in GLFW 2.4. - * - * @par - * __GLFW 3:__ Added window handle parameter. Updated callback signature. - * - * @ingroup input - */ -GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun cbfun); - -/*! @brief Sets the Unicode character with modifiers callback. - * - * This function sets the character with modifiers callback of the specified - * window, which is called when a Unicode character is input regardless of what - * modifier keys are used. - * - * The character with modifiers callback is intended for implementing custom - * Unicode character input. For regular Unicode text input, see the - * [character callback](@ref glfwSetCharCallback). Like the character - * callback, the character with modifiers callback deals with characters and is - * keyboard layout dependent. Characters do not map 1:1 to physical keys, as - * a key may produce zero, one or more characters. If you want to know whether - * a specific physical key was pressed or released, see the - * [key callback](@ref glfwSetKeyCallback) instead. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * error occurred. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref input_char - * - * @since Added in GLFW 3.1. - * - * @ingroup input - */ -GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun cbfun); - -/*! @brief Sets the mouse button callback. - * - * This function sets the mouse button callback of the specified window, which - * is called when a mouse button is pressed or released. - * - * When a window loses input focus, it will generate synthetic mouse button - * release events for all pressed mouse buttons. You can tell these events - * from user-generated events by the fact that the synthetic ones are generated - * after the focus loss event has been processed, i.e. after the - * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref input_mouse_button - * - * @since Added in GLFW 1.0. - * - * @par - * __GLFW 3:__ Added window handle parameter. Updated callback signature. - * - * @ingroup input - */ -GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun cbfun); - -/*! @brief Sets the cursor position callback. - * - * This function sets the cursor position callback of the specified window, - * which is called when the cursor is moved. The callback is provided with the - * position, in screen coordinates, relative to the upper-left corner of the - * client area of the window. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref cursor_pos - * - * @since Added in GLFW 3.0. Replaces `glfwSetMousePosCallback`. - * - * @ingroup input - */ -GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun cbfun); - -/*! @brief Sets the cursor enter/exit callback. - * - * This function sets the cursor boundary crossing callback of the specified - * window, which is called when the cursor enters or leaves the client area of - * the window. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref cursor_enter - * - * @since Added in GLFW 3.0. - * - * @ingroup input - */ -GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun cbfun); - -/*! @brief Sets the scroll callback. - * - * This function sets the scroll callback of the specified window, which is - * called when a scrolling device is used, such as a mouse wheel or scrolling - * area of a touchpad. - * - * The scroll callback receives all scrolling input, like that from a mouse - * wheel or a touchpad scrolling area. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new scroll callback, or `NULL` to remove the currently - * set callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref scrolling - * - * @since Added in GLFW 3.0. Replaces `glfwSetMouseWheelCallback`. - * - * @ingroup input - */ -GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun cbfun); - -/*! @brief Sets the file drop callback. - * - * This function sets the file drop callback of the specified window, which is - * called when one or more dragged files are dropped on the window. - * - * Because the path array and its strings may have been generated specifically - * for that event, they are not guaranteed to be valid after the callback has - * returned. If you wish to use them after the callback returns, you need to - * make a deep copy. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new file drop callback, or `NULL` to remove the - * currently set callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref path_drop - * - * @since Added in GLFW 3.1. - * - * @ingroup input - */ -GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun cbfun); - -/*! @brief Returns whether the specified joystick is present. - * - * This function returns whether the specified joystick is present. - * - * @param[in] joy The [joystick](@ref joysticks) to query. - * @return `GL_TRUE` if the joystick is present, or `GL_FALSE` otherwise. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref joystick - * - * @since Added in GLFW 3.0. Replaces `glfwGetJoystickParam`. - * - * @ingroup input - */ -GLFWAPI int glfwJoystickPresent(int joy); - -/*! @brief Returns the values of all axes of the specified joystick. - * - * This function returns the values of all axes of the specified joystick. - * Each element in the array is a value between -1.0 and 1.0. - * - * @param[in] joy The [joystick](@ref joysticks) to query. - * @param[out] count Where to store the number of axis values in the returned - * array. This is set to zero if an error occurred. - * @return An array of axis values, or `NULL` if the joystick is not present. - * - * @par Pointer Lifetime - * The returned array is allocated and freed by GLFW. You should not free it - * yourself. It is valid until the specified joystick is disconnected, this - * function is called again for that joystick or the library is terminated. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref joystick_axis - * - * @since Added in GLFW 3.0. Replaces `glfwGetJoystickPos`. - * - * @ingroup input - */ -GLFWAPI const float* glfwGetJoystickAxes(int joy, int* count); - -/*! @brief Returns the state of all buttons of the specified joystick. - * - * This function returns the state of all buttons of the specified joystick. - * Each element in the array is either `GLFW_PRESS` or `GLFW_RELEASE`. - * - * @param[in] joy The [joystick](@ref joysticks) to query. - * @param[out] count Where to store the number of button states in the returned - * array. This is set to zero if an error occurred. - * @return An array of button states, or `NULL` if the joystick is not present. - * - * @par Pointer Lifetime - * The returned array is allocated and freed by GLFW. You should not free it - * yourself. It is valid until the specified joystick is disconnected, this - * function is called again for that joystick or the library is terminated. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref joystick_button - * - * @since Added in GLFW 2.2. - * - * @par - * __GLFW 3:__ Changed to return a dynamic array. - * - * @ingroup input - */ -GLFWAPI const unsigned char* glfwGetJoystickButtons(int joy, int* count); - -/*! @brief Returns the name of the specified joystick. - * - * This function returns the name, encoded as UTF-8, of the specified joystick. - * The returned string is allocated and freed by GLFW. You should not free it - * yourself. - * - * @param[in] joy The [joystick](@ref joysticks) to query. - * @return The UTF-8 encoded name of the joystick, or `NULL` if the joystick - * is not present. - * - * @par Pointer Lifetime - * The returned string is allocated and freed by GLFW. You should not free it - * yourself. It is valid until the specified joystick is disconnected, this - * function is called again for that joystick or the library is terminated. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref joystick_name - * - * @since Added in GLFW 3.0. - * - * @ingroup input - */ -GLFWAPI const char* glfwGetJoystickName(int joy); - -/*! @brief Sets the clipboard to the specified string. - * - * This function sets the system clipboard to the specified, UTF-8 encoded - * string. - * - * @param[in] window The window that will own the clipboard contents. - * @param[in] string A UTF-8 encoded string. - * - * @par Pointer Lifetime - * The specified string is copied before this function returns. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref clipboard - * @sa glfwGetClipboardString - * - * @since Added in GLFW 3.0. - * - * @ingroup input - */ -GLFWAPI void glfwSetClipboardString(GLFWwindow* window, const char* string); - -/*! @brief Returns the contents of the clipboard as a string. - * - * This function returns the contents of the system clipboard, if it contains - * or is convertible to a UTF-8 encoded string. - * - * @param[in] window The window that will request the clipboard contents. - * @return The contents of the clipboard as a UTF-8 encoded string, or `NULL` - * if an [error](@ref error_handling) occurred. - * - * @par Pointer Lifetime - * The returned string is allocated and freed by GLFW. You should not free it - * yourself. It is valid until the next call to @ref - * glfwGetClipboardString or @ref glfwSetClipboardString, or until the library - * is terminated. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref clipboard - * @sa glfwSetClipboardString - * - * @since Added in GLFW 3.0. - * - * @ingroup input - */ -GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window); - -/*! @brief Returns the value of the GLFW timer. - * - * This function returns the value of the GLFW timer. Unless the timer has - * been set using @ref glfwSetTime, the timer measures time elapsed since GLFW - * was initialized. - * - * The resolution of the timer is system dependent, but is usually on the order - * of a few micro- or nanoseconds. It uses the highest-resolution monotonic - * time source on each supported platform. - * - * @return The current value, in seconds, or zero if an - * [error](@ref error_handling) occurred. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @sa @ref time - * - * @since Added in GLFW 1.0. - * - * @ingroup input - */ -GLFWAPI double glfwGetTime(void); - -/*! @brief Sets the GLFW timer. - * - * This function sets the value of the GLFW timer. It then continues to count - * up from that value. - * - * @param[in] time The new value, in seconds. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref time - * - * @since Added in GLFW 2.2. - * - * @ingroup input - */ -GLFWAPI void glfwSetTime(double time); - -/*! @brief Makes the context of the specified window current for the calling - * thread. - * - * This function makes the OpenGL or OpenGL ES context of the specified window - * current on the calling thread. A context can only be made current on - * a single thread at a time and each thread can have only a single current - * context at a time. - * - * By default, making a context non-current implicitly forces a pipeline flush. - * On machines that support `GL_KHR_context_flush_control`, you can control - * whether a context performs this flush by setting the - * [GLFW_CONTEXT_RELEASE_BEHAVIOR](@ref window_hints_ctx) window hint. - * - * @param[in] window The window whose context to make current, or `NULL` to - * detach the current context. - * - * @par Thread Safety - * This function may be called from any thread. - * - * @sa @ref context_current - * @sa glfwGetCurrentContext - * - * @since Added in GLFW 3.0. - * - * @ingroup context - */ -GLFWAPI void glfwMakeContextCurrent(GLFWwindow* window); - -/*! @brief Returns the window whose context is current on the calling thread. - * - * This function returns the window whose OpenGL or OpenGL ES context is - * current on the calling thread. - * - * @return The window whose context is current, or `NULL` if no window's - * context is current. - * - * @par Thread Safety - * This function may be called from any thread. - * - * @sa @ref context_current - * @sa glfwMakeContextCurrent - * - * @since Added in GLFW 3.0. - * - * @ingroup context - */ -GLFWAPI GLFWwindow* glfwGetCurrentContext(void); - -/*! @brief Swaps the front and back buffers of the specified window. - * - * This function swaps the front and back buffers of the specified window. If - * the swap interval is greater than zero, the GPU driver waits the specified - * number of screen updates before swapping the buffers. - * - * @param[in] window The window whose buffers to swap. - * - * @par Thread Safety - * This function may be called from any thread. - * - * @sa @ref buffer_swap - * @sa glfwSwapInterval - * - * @since Added in GLFW 1.0. - * - * @par - * __GLFW 3:__ Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwSwapBuffers(GLFWwindow* window); - -/*! @brief Sets the swap interval for the current context. - * - * This function sets the swap interval for the current context, i.e. the - * number of screen updates to wait from the time @ref glfwSwapBuffers was - * called before swapping the buffers and returning. This is sometimes called - * _vertical synchronization_, _vertical retrace synchronization_ or just - * _vsync_. - * - * Contexts that support either of the `WGL_EXT_swap_control_tear` and - * `GLX_EXT_swap_control_tear` extensions also accept negative swap intervals, - * which allow the driver to swap even if a frame arrives a little bit late. - * You can check for the presence of these extensions using @ref - * glfwExtensionSupported. For more information about swap tearing, see the - * extension specifications. - * - * A context must be current on the calling thread. Calling this function - * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. - * - * @param[in] interval The minimum number of screen updates to wait for - * until the buffers are swapped by @ref glfwSwapBuffers. - * - * @note This function is not called during window creation, leaving the swap - * interval set to whatever is the default on that platform. This is done - * because some swap interval extensions used by GLFW do not allow the swap - * interval to be reset to zero once it has been set to a non-zero value. - * - * @note Some GPU drivers do not honor the requested swap interval, either - * because of user settings that override the request or due to bugs in the - * driver. - * - * @par Thread Safety - * This function may be called from any thread. - * - * @sa @ref buffer_swap - * @sa glfwSwapBuffers - * - * @since Added in GLFW 1.0. - * - * @ingroup context - */ -GLFWAPI void glfwSwapInterval(int interval); - -/*! @brief Returns whether the specified extension is available. - * - * This function returns whether the specified - * [API extension](@ref context_glext) is supported by the current OpenGL or - * OpenGL ES context. It searches both for OpenGL and OpenGL ES extension and - * platform-specific context creation API extensions. - * - * A context must be current on the calling thread. Calling this function - * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. - * - * As this functions retrieves and searches one or more extension strings each - * call, it is recommended that you cache its results if it is going to be used - * frequently. The extension strings will not change during the lifetime of - * a context, so there is no danger in doing this. - * - * @param[in] extension The ASCII encoded name of the extension. - * @return `GL_TRUE` if the extension is available, or `GL_FALSE` otherwise. - * - * @par Thread Safety - * This function may be called from any thread. - * - * @sa @ref context_glext - * @sa glfwGetProcAddress - * - * @since Added in GLFW 1.0. - * - * @ingroup context - */ -GLFWAPI int glfwExtensionSupported(const char* extension); - -/*! @brief Returns the address of the specified function for the current - * context. - * - * This function returns the address of the specified - * [client API or extension function](@ref context_glext), if it is supported - * by the current context. - * - * A context must be current on the calling thread. Calling this function - * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. - * - * @param[in] procname The ASCII encoded name of the function. - * @return The address of the function, or `NULL` if the function is - * unavailable or an [error](@ref error_handling) occurred. - * - * @note The addresses of a given function is not guaranteed to be the same - * between contexts. - * - * @par Pointer Lifetime - * The returned function pointer is valid until the context is destroyed or the - * library is terminated. - * - * @par Thread Safety - * This function may be called from any thread. - * - * @sa @ref context_glext - * @sa glfwExtensionSupported - * - * @since Added in GLFW 1.0. - * - * @ingroup context - */ -GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname); - - -/************************************************************************* - * Global definition cleanup - *************************************************************************/ - -/* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */ - -#ifdef GLFW_WINGDIAPI_DEFINED - #undef WINGDIAPI - #undef GLFW_WINGDIAPI_DEFINED -#endif - -#ifdef GLFW_CALLBACK_DEFINED - #undef CALLBACK - #undef GLFW_CALLBACK_DEFINED -#endif - -/* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */ - - -#ifdef __cplusplus -} -#endif - -#endif /* _glfw3_h_ */ - diff --git a/Dependencies/GLFW/include/GLFW/glfw3native.h b/Dependencies/GLFW/include/GLFW/glfw3native.h deleted file mode 100644 index b3ce7482..00000000 --- a/Dependencies/GLFW/include/GLFW/glfw3native.h +++ /dev/null @@ -1,356 +0,0 @@ -/************************************************************************* - * GLFW 3.1 - www.glfw.org - * A library for OpenGL, window and input - *------------------------------------------------------------------------ - * Copyright (c) 2002-2006 Marcus Geelnard - * Copyright (c) 2006-2010 Camilla Berglund - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would - * be appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not - * be misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - * - *************************************************************************/ - -#ifndef _glfw3_native_h_ -#define _glfw3_native_h_ - -#ifdef __cplusplus -extern "C" { -#endif - - -/************************************************************************* - * Doxygen documentation - *************************************************************************/ - -/*! @defgroup native Native access - * - * **By using the native access functions you assert that you know what you're - * doing and how to fix problems caused by using them. If you don't, you - * shouldn't be using them.** - * - * Before the inclusion of @ref glfw3native.h, you must define exactly one - * window system API macro and exactly one context creation API macro. Failure - * to do this will cause a compile-time error. - * - * The available window API macros are: - * * `GLFW_EXPOSE_NATIVE_WIN32` - * * `GLFW_EXPOSE_NATIVE_COCOA` - * * `GLFW_EXPOSE_NATIVE_X11` - * - * The available context API macros are: - * * `GLFW_EXPOSE_NATIVE_WGL` - * * `GLFW_EXPOSE_NATIVE_NSGL` - * * `GLFW_EXPOSE_NATIVE_GLX` - * * `GLFW_EXPOSE_NATIVE_EGL` - * - * These macros select which of the native access functions that are declared - * and which platform-specific headers to include. It is then up your (by - * definition platform-specific) code to handle which of these should be - * defined. - */ - - -/************************************************************************* - * System headers and types - *************************************************************************/ - -#if defined(GLFW_EXPOSE_NATIVE_WIN32) - // This is a workaround for the fact that glfw3.h needs to export APIENTRY (for - // example to allow applications to correctly declare a GL_ARB_debug_output - // callback) but windows.h assumes no one will define APIENTRY before it does - #undef APIENTRY - #include -#elif defined(GLFW_EXPOSE_NATIVE_COCOA) - #include - #if defined(__OBJC__) - #import - #else - typedef void* id; - #endif -#elif defined(GLFW_EXPOSE_NATIVE_X11) - #include - #include -#else - #error "No window API selected" -#endif - -#if defined(GLFW_EXPOSE_NATIVE_WGL) - /* WGL is declared by windows.h */ -#elif defined(GLFW_EXPOSE_NATIVE_NSGL) - /* NSGL is declared by Cocoa.h */ -#elif defined(GLFW_EXPOSE_NATIVE_GLX) - #include -#elif defined(GLFW_EXPOSE_NATIVE_EGL) - #include -#else - #error "No context API selected" -#endif - - -/************************************************************************* - * Functions - *************************************************************************/ - -#if defined(GLFW_EXPOSE_NATIVE_WIN32) -/*! @brief Returns the adapter device name of the specified monitor. - * - * @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`) - * of the specified monitor, or `NULL` if an [error](@ref error_handling) - * occurred. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @par History - * Added in GLFW 3.1. - * - * @ingroup native - */ -GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor); - -/*! @brief Returns the display device name of the specified monitor. - * - * @return The UTF-8 encoded display device name (for example - * `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @par History - * Added in GLFW 3.1. - * - * @ingroup native - */ -GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor); - -/*! @brief Returns the `HWND` of the specified window. - * - * @return The `HWND` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @par History - * Added in GLFW 3.0. - * - * @ingroup native - */ -GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_WGL) -/*! @brief Returns the `HGLRC` of the specified window. - * - * @return The `HGLRC` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @par History - * Added in GLFW 3.0. - * - * @ingroup native - */ -GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_COCOA) -/*! @brief Returns the `CGDirectDisplayID` of the specified monitor. - * - * @return The `CGDirectDisplayID` of the specified monitor, or - * `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @par History - * Added in GLFW 3.1. - * - * @ingroup native - */ -GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor); - -/*! @brief Returns the `NSWindow` of the specified window. - * - * @return The `NSWindow` of the specified window, or `nil` if an - * [error](@ref error_handling) occurred. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @par History - * Added in GLFW 3.0. - * - * @ingroup native - */ -GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_NSGL) -/*! @brief Returns the `NSOpenGLContext` of the specified window. - * - * @return The `NSOpenGLContext` of the specified window, or `nil` if an - * [error](@ref error_handling) occurred. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @par History - * Added in GLFW 3.0. - * - * @ingroup native - */ -GLFWAPI id glfwGetNSGLContext(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_X11) -/*! @brief Returns the `Display` used by GLFW. - * - * @return The `Display` used by GLFW, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @par History - * Added in GLFW 3.0. - * - * @ingroup native - */ -GLFWAPI Display* glfwGetX11Display(void); - -/*! @brief Returns the `RRCrtc` of the specified monitor. - * - * @return The `RRCrtc` of the specified monitor, or `None` if an - * [error](@ref error_handling) occurred. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @par History - * Added in GLFW 3.1. - * - * @ingroup native - */ -GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor); - -/*! @brief Returns the `RROutput` of the specified monitor. - * - * @return The `RROutput` of the specified monitor, or `None` if an - * [error](@ref error_handling) occurred. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @par History - * Added in GLFW 3.1. - * - * @ingroup native - */ -GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor); - -/*! @brief Returns the `Window` of the specified window. - * - * @return The `Window` of the specified window, or `None` if an - * [error](@ref error_handling) occurred. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @par History - * Added in GLFW 3.0. - * - * @ingroup native - */ -GLFWAPI Window glfwGetX11Window(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_GLX) -/*! @brief Returns the `GLXContext` of the specified window. - * - * @return The `GLXContext` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @par History - * Added in GLFW 3.0. - * - * @ingroup native - */ -GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_EGL) -/*! @brief Returns the `EGLDisplay` used by GLFW. - * - * @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an - * [error](@ref error_handling) occurred. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @par History - * Added in GLFW 3.0. - * - * @ingroup native - */ -GLFWAPI EGLDisplay glfwGetEGLDisplay(void); - -/*! @brief Returns the `EGLContext` of the specified window. - * - * @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an - * [error](@ref error_handling) occurred. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @par History - * Added in GLFW 3.0. - * - * @ingroup native - */ -GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window); - -/*! @brief Returns the `EGLSurface` of the specified window. - * - * @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an - * [error](@ref error_handling) occurred. - * - * @par Thread Safety - * This function may be called from any thread. Access is not synchronized. - * - * @par History - * Added in GLFW 3.0. - * - * @ingroup native - */ -GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _glfw3_native_h_ */ - diff --git a/Dependencies/GLFW/lib-vc2013/glfw3.lib b/Dependencies/GLFW/lib-vc2013/glfw3.lib deleted file mode 100644 index 211aef74..00000000 Binary files a/Dependencies/GLFW/lib-vc2013/glfw3.lib and /dev/null differ diff --git a/Dependencies/OpenAL/bin/OpenAL32.dll b/Dependencies/OpenAL/bin/OpenAL32.dll deleted file mode 100644 index 259177ac..00000000 Binary files a/Dependencies/OpenAL/bin/OpenAL32.dll and /dev/null differ diff --git a/Dependencies/OpenAL/bin/x64/OpenAL32.dll b/Dependencies/OpenAL/bin/x64/OpenAL32.dll new file mode 100644 index 00000000..b47ff952 Binary files /dev/null and b/Dependencies/OpenAL/bin/x64/OpenAL32.dll differ diff --git a/Dependencies/OpenAL/bin/x86/OpenAL32.dll b/Dependencies/OpenAL/bin/x86/OpenAL32.dll new file mode 100644 index 00000000..71ced6a2 Binary files /dev/null and b/Dependencies/OpenAL/bin/x86/OpenAL32.dll differ diff --git a/Dependencies/gorilla-audio/gorilla-audio.vcxproj b/Dependencies/gorilla-audio/gorilla-audio.vcxproj new file mode 100644 index 00000000..692806ab --- /dev/null +++ b/Dependencies/gorilla-audio/gorilla-audio.vcxproj @@ -0,0 +1,161 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {E9A0F826-3688-4461-8E49-7CCC543F9E40} + gorillaaudio + 10.0.17763.0 + + + + DynamicLibrary + true + v141 + MultiByte + + + DynamicLibrary + false + v141 + true + MultiByte + + + Application + true + v141 + MultiByte + + + Application + false + v141 + true + MultiByte + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)bin\$(Configuration)\ + $(SolutionDir)bin\$(Configuration)\Intermediates\$(ProjectName)\ + SPAudio + + + $(SolutionDir)bin\$(Configuration)\ + $(SolutionDir)bin\$(Configuration)\Intermediates\$(ProjectName)\ + SPAudio + + + + Level3 + Disabled + true + $(SolutionDir)Dependencies\libvorbis\include;$(SolutionDir)Dependencies\OpenAL\include; + true + + + $(SolutionDir)Dependencies\OpenAL\libs\Win32; + OpenAL32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + true + + + + + Level3 + Disabled + true + + + + + Level3 + MaxSpeed + true + true + true + $(SolutionDir)Dependencies\libvorbis\include;$(SolutionDir)Dependencies\OpenAL\include; + + + true + true + $(SolutionDir)Dependencies\OpenAL\libs\Win32; + OpenAL32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + Level3 + MaxSpeed + true + true + true + + + true + true + + + + + + + + + + + + + + + + + + + + + + {54ce06e0-6313-4f5e-8bda-4e7815c8743c} + + + {8ed62764-0d19-40ac-bc88-e82aadf1189b} + + + + + + \ No newline at end of file diff --git a/Sparky-core/ext/gorilla-audio/common/gc_common.c b/Dependencies/gorilla-audio/src/common/gc_common.c similarity index 100% rename from Sparky-core/ext/gorilla-audio/common/gc_common.c rename to Dependencies/gorilla-audio/src/common/gc_common.c diff --git a/Sparky-core/ext/gorilla-audio/common/gc_common.h b/Dependencies/gorilla-audio/src/common/gc_common.h similarity index 97% rename from Sparky-core/ext/gorilla-audio/common/gc_common.h rename to Dependencies/gorilla-audio/src/common/gc_common.h index 12ac93b4..1dd942ac 100644 --- a/Sparky-core/ext/gorilla-audio/common/gc_common.h +++ b/Dependencies/gorilla-audio/src/common/gc_common.h @@ -16,6 +16,8 @@ #include "gc_types.h" #include "gc_thread.h" +#define DLL_EXPORT __declspec(dllexport) + #ifdef __cplusplus extern "C" { @@ -53,7 +55,7 @@ extern gc_SystemOps* gcX_ops; * \return GC_SUCCESS if library initialized successfully. GC_ERROR_GENERIC * if not. */ -gc_result gc_initialize(gc_SystemOps* in_callbacks); +DLL_EXPORT gc_result gc_initialize(gc_SystemOps* in_callbacks); /** Shutdown the Gorilla library. * @@ -64,7 +66,7 @@ gc_result gc_initialize(gc_SystemOps* in_callbacks); * \return GC_SUCCESS if the library shut down successfully. GC_ERROR_GENERIC * if not. */ -gc_result gc_shutdown(); +DLL_EXPORT gc_result gc_shutdown(); /***********************/ /** Circular Buffer **/ diff --git a/Sparky-core/ext/gorilla-audio/common/gc_thread.c b/Dependencies/gorilla-audio/src/common/gc_thread.c similarity index 100% rename from Sparky-core/ext/gorilla-audio/common/gc_thread.c rename to Dependencies/gorilla-audio/src/common/gc_thread.c diff --git a/Sparky-core/ext/gorilla-audio/common/gc_thread.h b/Dependencies/gorilla-audio/src/common/gc_thread.h similarity index 100% rename from Sparky-core/ext/gorilla-audio/common/gc_thread.h rename to Dependencies/gorilla-audio/src/common/gc_thread.h diff --git a/Sparky-core/ext/gorilla-audio/common/gc_types.h b/Dependencies/gorilla-audio/src/common/gc_types.h similarity index 100% rename from Sparky-core/ext/gorilla-audio/common/gc_types.h rename to Dependencies/gorilla-audio/src/common/gc_types.h diff --git a/Sparky-core/ext/gorilla-audio/devices/ga_openal.c b/Dependencies/gorilla-audio/src/devices/ga_openal.c similarity index 100% rename from Sparky-core/ext/gorilla-audio/devices/ga_openal.c rename to Dependencies/gorilla-audio/src/devices/ga_openal.c diff --git a/Sparky-core/ext/gorilla-audio/devices/ga_openal.h b/Dependencies/gorilla-audio/src/devices/ga_openal.h similarity index 100% rename from Sparky-core/ext/gorilla-audio/devices/ga_openal.h rename to Dependencies/gorilla-audio/src/devices/ga_openal.h diff --git a/Sparky-core/ext/gorilla-audio/ga.c b/Dependencies/gorilla-audio/src/ga.c similarity index 100% rename from Sparky-core/ext/gorilla-audio/ga.c rename to Dependencies/gorilla-audio/src/ga.c diff --git a/Sparky-core/ext/gorilla-audio/ga.h b/Dependencies/gorilla-audio/src/ga.h similarity index 89% rename from Sparky-core/ext/gorilla-audio/ga.h rename to Dependencies/gorilla-audio/src/ga.h index a8e29482..9bc9da16 100644 --- a/Sparky-core/ext/gorilla-audio/ga.h +++ b/Dependencies/gorilla-audio/src/ga.h @@ -210,7 +210,7 @@ typedef struct ga_Device ga_Device; * \param in_format Requested device output format (usually 16-bit/44100/stereo). * \return Concrete instance of the requested device type. 0 if a suitable device could not be opened. */ -ga_Device* ga_device_open(gc_int32 in_type, +DLL_EXPORT ga_Device* ga_device_open(gc_int32 in_type, gc_int32 in_numBuffers, gc_int32 in_numSamples, ga_Format* in_format); @@ -221,7 +221,7 @@ ga_Device* ga_device_open(gc_int32 in_type, * \param in_device Device to check. * \return Number of free (unqueued) buffers. */ -gc_int32 ga_device_check(ga_Device* in_device); +DLL_EXPORT gc_int32 ga_device_check(ga_Device* in_device); /** Adds a buffer to a device's presentation queue. * @@ -232,7 +232,7 @@ gc_int32 ga_device_check(ga_Device* in_device); * \warning You should always call ga_device_check() prior to queueing a buffer! If * there isn't a free (unqueued) buffer, the operation will fail. */ -gc_result ga_device_queue(ga_Device* in_device, +DLL_EXPORT gc_result ga_device_queue(ga_Device* in_device, void* in_buffer); /** Closes an open audio device. @@ -242,7 +242,7 @@ gc_result ga_device_queue(ga_Device* in_device, * \return GC_SUCCESS if the device was closed successfully. GC_ERROR_GENERIC if not. * \warning The client must never use a device after calling ga_device_close(). */ -gc_result ga_device_close(ga_Device* in_device); +DLL_EXPORT gc_result ga_device_close(ga_Device* in_device); /*****************/ @@ -289,7 +289,7 @@ typedef struct ga_DataSource ga_DataSource; * \param in_count Number of elements to read. * \return Total number of bytes read into the destination buffer. */ -gc_int32 ga_data_source_read(ga_DataSource* in_dataSrc, void* in_dst, gc_int32 in_size, gc_int32 in_count); +DLL_EXPORT gc_int32 ga_data_source_read(ga_DataSource* in_dataSrc, void* in_dst, gc_int32 in_size, gc_int32 in_count); /** Seek to an offset within a data source. * @@ -300,7 +300,7 @@ gc_int32 ga_data_source_read(ga_DataSource* in_dataSrc, void* in_dst, gc_int32 i * \return If seek succeeds, returns 0, otherwise returns -1 (invalid seek request). * \warning Only data sources with GA_FLAG_SEEKABLE can have ga_data_source_seek() called on them. */ -gc_int32 ga_data_source_seek(ga_DataSource* in_dataSrc, gc_int32 in_offset, gc_int32 in_origin); +DLL_EXPORT gc_int32 ga_data_source_seek(ga_DataSource* in_dataSrc, gc_int32 in_offset, gc_int32 in_origin); /** Tells the current read position of a data source. * @@ -308,7 +308,7 @@ gc_int32 ga_data_source_seek(ga_DataSource* in_dataSrc, gc_int32 in_offset, gc_i * \param in_dataSrc Data source to tell the read position of. * \return The current data source read position. */ -gc_int32 ga_data_source_tell(ga_DataSource* in_dataSrc); +DLL_EXPORT gc_int32 ga_data_source_tell(ga_DataSource* in_dataSrc); /** Returns the bitfield of flags set for a data source (see \ref globDefs). * @@ -316,7 +316,7 @@ gc_int32 ga_data_source_tell(ga_DataSource* in_dataSrc); * \param in_dataSrc Data source whose flags should be retrieved. * \return The bitfield of flags set for the data source. */ -gc_int32 ga_data_source_flags(ga_DataSource* in_dataSrc); +DLL_EXPORT gc_int32 ga_data_source_flags(ga_DataSource* in_dataSrc); /** Acquires a reference for a data source. * @@ -325,7 +325,7 @@ gc_int32 ga_data_source_flags(ga_DataSource* in_dataSrc); * \ingroup ga_DataSource * \param in_dataSrc Data source whose reference count should be incremented. */ -void ga_data_source_acquire(ga_DataSource* in_dataSrc); +DLL_EXPORT void ga_data_source_acquire(ga_DataSource* in_dataSrc); /** Releases a reference for a data source. * @@ -336,7 +336,7 @@ void ga_data_source_acquire(ga_DataSource* in_dataSrc); * \param in_dataSrc Data source whose reference count should be decremented. * \warning A client must never use a data source after releasing its reference. */ -void ga_data_source_release(ga_DataSource* in_dataSrc); +DLL_EXPORT void ga_data_source_release(ga_DataSource* in_dataSrc); /*******************/ @@ -385,7 +385,7 @@ typedef void (*tOnSeekFunc)(gc_int32 in_sample, gc_int32 in_delta, void* in_seek * \param in_seekContext User-specified context for the on-seek function. * \return Total number of bytes read into the destination buffer. */ -gc_int32 ga_sample_source_read(ga_SampleSource* in_sampleSrc, void* in_dst, gc_int32 in_numSamples, +DLL_EXPORT gc_int32 ga_sample_source_read(ga_SampleSource* in_sampleSrc, void* in_dst, gc_int32 in_numSamples, tOnSeekFunc in_onSeekFunc, void* in_seekContext); /** Checks whether a sample source has reached the end of the stream. @@ -394,7 +394,7 @@ gc_int32 ga_sample_source_read(ga_SampleSource* in_sampleSrc, void* in_dst, gc_i * \param in_sampleSrc Sample source to check. * \return Whether the sample source has reached the end of the stream. */ -gc_int32 ga_sample_source_end(ga_SampleSource* in_sampleSrc); +DLL_EXPORT gc_int32 ga_sample_source_end(ga_SampleSource* in_sampleSrc); /** Checks whether a sample source has at least a given number of available * samples. @@ -410,7 +410,7 @@ gc_int32 ga_sample_source_end(ga_SampleSource* in_sampleSrc); * \return Whether the sample source has at least a given number of available * samples. */ -gc_int32 ga_sample_source_ready(ga_SampleSource* in_sampleSrc, gc_int32 in_numSamples); +DLL_EXPORT gc_int32 ga_sample_source_ready(ga_SampleSource* in_sampleSrc, gc_int32 in_numSamples); /** Seek to an offset (in samples) within a sample source. * @@ -421,7 +421,7 @@ gc_int32 ga_sample_source_ready(ga_SampleSource* in_sampleSrc, gc_int32 in_numSa * \warning Only sample sources with GA_FLAG_SEEKABLE can have ga_sample_source_seek() * called on them. */ -gc_int32 ga_sample_source_seek(ga_SampleSource* in_sampleSrc, gc_int32 in_sampleOffset); +DLL_EXPORT gc_int32 ga_sample_source_seek(ga_SampleSource* in_sampleSrc, gc_int32 in_sampleOffset); /** Tells the current sample number of a sample source. * @@ -431,7 +431,7 @@ gc_int32 ga_sample_source_seek(ga_SampleSource* in_sampleSrc, gc_int32 in_sample * samples in the sample source. Output parameter. * \return The current sample source sample number. */ -gc_int32 ga_sample_source_tell(ga_SampleSource* in_sampleSrc, gc_int32* out_totalSamples); +DLL_EXPORT gc_int32 ga_sample_source_tell(ga_SampleSource* in_sampleSrc, gc_int32* out_totalSamples); /** Returns the bitfield of flags set for a sample source (see \ref globDefs). * @@ -439,7 +439,7 @@ gc_int32 ga_sample_source_tell(ga_SampleSource* in_sampleSrc, gc_int32* out_tota * \param in_sampleSrc Sample source whose flags should be retrieved. * \return The bitfield of flags set for the sample source. */ -gc_int32 ga_sample_source_flags(ga_SampleSource* in_sampleSrc); +DLL_EXPORT gc_int32 ga_sample_source_flags(ga_SampleSource* in_sampleSrc); /** Retrieves the PCM sample format for a sample source. * @@ -449,7 +449,7 @@ gc_int32 ga_sample_source_flags(ga_SampleSource* in_sampleSrc); * as samples in the sample source. Output parameter. * \todo Either return a copy of the format, or make it a const* return value. */ -void ga_sample_source_format(ga_SampleSource* in_sampleSrc, ga_Format* out_format); +DLL_EXPORT void ga_sample_source_format(ga_SampleSource* in_sampleSrc, ga_Format* out_format); /** Acquires a reference for a sample source. * @@ -458,7 +458,7 @@ void ga_sample_source_format(ga_SampleSource* in_sampleSrc, ga_Format* out_forma * \ingroup ga_SampleSource * \param in_sampleSrc Sample source whose reference count should be incremented. */ -void ga_sample_source_acquire(ga_SampleSource* in_sampleSrc); +DLL_EXPORT void ga_sample_source_acquire(ga_SampleSource* in_sampleSrc); /** Releases a reference for a sample source. * @@ -469,7 +469,7 @@ void ga_sample_source_acquire(ga_SampleSource* in_sampleSrc); * \param in_sampleSrc Sample source whose reference count should be decremented. * \warning A client must never use a sample source after releasing its reference. */ -void ga_sample_source_release(ga_SampleSource* in_sampleSrc); +DLL_EXPORT void ga_sample_source_release(ga_SampleSource* in_sampleSrc); /************/ @@ -509,7 +509,7 @@ typedef struct ga_Memory ga_Memory; * \return Newly-allocated memory object, containing an internal copy of the * provided data buffer. */ -ga_Memory* ga_memory_create(void* in_data, gc_int32 in_size); +DLL_EXPORT ga_Memory* ga_memory_create(void* in_data, gc_int32 in_size); /** Create a shared memory object from the full contents of a data source. * @@ -522,7 +522,7 @@ ga_Memory* ga_memory_create(void* in_data, gc_int32 in_size); * \return Newly-allocated memory object, containing an internal copy of the * full contents of the provided data source. */ -ga_Memory* ga_memory_create_data_source(ga_DataSource* in_dataSource); +DLL_EXPORT ga_Memory* ga_memory_create_data_source(ga_DataSource* in_dataSource); /** Retrieve the size (in bytes) of a memory object's stored data. * @@ -530,7 +530,7 @@ ga_Memory* ga_memory_create_data_source(ga_DataSource* in_dataSource); * \param in_mem Memory object whose stored data size should be retrieved. * \return Size (in bytes) of the memory object's stored data. */ -gc_int32 ga_memory_size(ga_Memory* in_mem); +DLL_EXPORT gc_int32 ga_memory_size(ga_Memory* in_mem); /** Retrieve a pointer to a memory object's stored data. * @@ -539,7 +539,7 @@ gc_int32 ga_memory_size(ga_Memory* in_mem); * \return Pointer to the memory object's stored data. * \warning Never manually free the pointer returned by this function. */ -void* ga_memory_data(ga_Memory* in_mem); +DLL_EXPORT void* ga_memory_data(ga_Memory* in_mem); /** Acquires a reference for a memory object. * @@ -548,7 +548,7 @@ void* ga_memory_data(ga_Memory* in_mem); * \ingroup ga_Memory * \param in_mem Memory object whose reference count should be incremented. */ -void ga_memory_acquire(ga_Memory* in_mem); +DLL_EXPORT void ga_memory_acquire(ga_Memory* in_mem); /** Releases a reference for a memory object. * @@ -559,7 +559,7 @@ void ga_memory_acquire(ga_Memory* in_mem); * \param in_mem Memory object whose reference count should be decremented. * \warning A client must never use a memory object after releasing its reference. */ -void ga_memory_release(ga_Memory* in_mem); +DLL_EXPORT void ga_memory_release(ga_Memory* in_mem); /***********/ @@ -597,7 +597,7 @@ typedef struct ga_Sound ga_Sound; * \param in_format Format of the raw PCM data contained by in_memory. * \return Newly-allocated sound object. */ -ga_Sound* ga_sound_create(ga_Memory* in_memory, ga_Format* in_format); +DLL_EXPORT ga_Sound* ga_sound_create(ga_Memory* in_memory, ga_Format* in_format); /** Create a shared memory object from the full contents of a sample source. * @@ -610,7 +610,7 @@ ga_Sound* ga_sound_create(ga_Memory* in_memory, ga_Format* in_format); * \return Newly-allocated memory object, containing an internal copy of the * full contents of the provided data source. */ -ga_Sound* ga_sound_create_sample_source(ga_SampleSource* in_sampleSrc); +DLL_EXPORT ga_Sound* ga_sound_create_sample_source(ga_SampleSource* in_sampleSrc); /** Retrieve a pointer to a sound object's stored data. * @@ -619,7 +619,7 @@ ga_Sound* ga_sound_create_sample_source(ga_SampleSource* in_sampleSrc); * \return Pointer to the sound object's stored data. * \warning Never manually free the pointer returned by this function. */ -void* ga_sound_data(ga_Sound* in_sound); +DLL_EXPORT void* ga_sound_data(ga_Sound* in_sound); /** Retrieve the size (in bytes) of a sound object's stored data. * @@ -627,7 +627,7 @@ void* ga_sound_data(ga_Sound* in_sound); * \param in_sound Sound object whose stored data size should be retrieved. * \return Size (in bytes) of the sound object's stored data. */ -gc_int32 ga_sound_size(ga_Sound* in_sound); +DLL_EXPORT gc_int32 ga_sound_size(ga_Sound* in_sound); /** Retrieve the number of samples in a sound object's stored PCM data. * @@ -635,7 +635,7 @@ gc_int32 ga_sound_size(ga_Sound* in_sound); * \param in_sound Sound object whose number of samples should be retrieved. * \return Number of samples in the sound object's stored PCM data. */ -gc_int32 ga_sound_numSamples(ga_Sound* in_sound); +DLL_EXPORT gc_int32 ga_sound_numSamples(ga_Sound* in_sound); /** Retrieves the PCM sample format for a sound. * @@ -645,7 +645,7 @@ gc_int32 ga_sound_numSamples(ga_Sound* in_sound); * as samples in the sound. Output parameter. * \todo Either return a copy of the format, or make it a const* return value. */ -void ga_sound_format(ga_Sound* in_sound, ga_Format* out_format); +DLL_EXPORT void ga_sound_format(ga_Sound* in_sound, ga_Format* out_format); /** Acquires a reference for a sound object. * @@ -655,7 +655,7 @@ void ga_sound_format(ga_Sound* in_sound, ga_Format* out_format); * \param in_sound Sound object whose reference count should be incremented. * \todo Either return a copy of the format, or make it a const* return value. */ -void ga_sound_acquire(ga_Sound* in_sound); +DLL_EXPORT void ga_sound_acquire(ga_Sound* in_sound); /** Releases a reference for a sound object. * @@ -666,7 +666,7 @@ void ga_sound_acquire(ga_Sound* in_sound); * \param in_sound Sound object whose reference count should be decremented. * \warning A client must never use a sound object after releasing its reference. */ -void ga_sound_release(ga_Sound* in_sound); +DLL_EXPORT void ga_sound_release(ga_Sound* in_sound); /************/ @@ -701,7 +701,7 @@ typedef struct ga_Mixer ga_Mixer; * \warning The number of samples must be a power-of-two. * \todo Remove the requirement that the buffer be a power-of-two in size. */ -ga_Mixer* ga_mixer_create(ga_Format* in_format, gc_int32 in_numSamples); +DLL_EXPORT ga_Mixer* ga_mixer_create(ga_Format* in_format, gc_int32 in_numSamples); /** Retrieves the PCM sample format for a mixer object. * @@ -711,7 +711,7 @@ ga_Mixer* ga_mixer_create(ga_Format* in_format, gc_int32 in_numSamples); * \warning Do not modify the contents of this pointer * \todo Either return a copy of the format, or make it a const*. */ -ga_Format* ga_mixer_format(ga_Mixer* in_mixer); +DLL_EXPORT ga_Format* ga_mixer_format(ga_Mixer* in_mixer); /** Retrieve the number of samples in a mixer object's mix buffer. * @@ -719,7 +719,7 @@ ga_Format* ga_mixer_format(ga_Mixer* in_mixer); * \param in_mixer Mixer object whose number of samples should be retrieved. * \return Number of samples in a mixer object's mix buffer. */ -gc_int32 ga_mixer_numSamples(ga_Mixer* in_mixer); +DLL_EXPORT gc_int32 ga_mixer_numSamples(ga_Mixer* in_mixer); /** Mixes samples from all ready handles into a single output buffer. * @@ -734,7 +734,7 @@ gc_int32 ga_mixer_numSamples(ga_Mixer* in_mixer); * \return Whether the mixer successfully mixed the data. GA_SUCCESS if the * operation was successful, GA_ERROR_GENERIC if not. */ -gc_result ga_mixer_mix(ga_Mixer* in_mixer, void* out_buffer); +DLL_EXPORT gc_result ga_mixer_mix(ga_Mixer* in_mixer, void* out_buffer); /** Dispatches all pending finish callbacks. * @@ -747,7 +747,7 @@ gc_result ga_mixer_mix(ga_Mixer* in_mixer, void* out_buffer); * \return Whether the mixer successfully dispatched the callbacks. GA_SUCCESS if the * operation was successful, GA_ERROR_GENERIC if not. */ -gc_result ga_mixer_dispatch(ga_Mixer* in_mixer); +DLL_EXPORT gc_result ga_mixer_dispatch(ga_Mixer* in_mixer); /** Destroys a mixer object. * @@ -757,7 +757,7 @@ gc_result ga_mixer_dispatch(ga_Mixer* in_mixer); * operation was successful, GA_ERROR_GENERIC if not. * \warning The client must never use a mixer after calling ga_mixer_destroy(). */ -gc_result ga_mixer_destroy(ga_Mixer* in_mixer); +DLL_EXPORT gc_result ga_mixer_destroy(ga_Mixer* in_mixer); /************/ @@ -836,7 +836,7 @@ typedef void (*ga_FinishCallback)(ga_Handle* in_finishedHandle, void* in_context * \param in_sampleSrc The sample source from which to stream samples. * \todo Provide a way to query handles for flags. */ -ga_Handle* ga_handle_create(ga_Mixer* in_mixer, ga_SampleSource* in_sampleSrc); +DLL_EXPORT ga_Handle* ga_handle_create(ga_Mixer* in_mixer, ga_SampleSource* in_sampleSrc); /** Destroys an audio playback handle. * @@ -846,7 +846,7 @@ ga_Handle* ga_handle_create(ga_Mixer* in_mixer, ga_SampleSource* in_sampleSrc); * operation was successful, GA_ERROR_GENERIC if not. * \warning The client must never use a handle after calling ga_handle_destroy(). */ -gc_result ga_handle_destroy(ga_Handle* in_handle); +DLL_EXPORT gc_result ga_handle_destroy(ga_Handle* in_handle); /** Starts playback on an audio playback handle. * @@ -859,7 +859,7 @@ gc_result ga_handle_destroy(ga_Handle* in_handle); * \warning You cannot play a handle that has finished playing. When in doubt, check * ga_handle_finished() to verify this state prior to calling play. */ -gc_result ga_handle_play(ga_Handle* in_handle); +DLL_EXPORT gc_result ga_handle_play(ga_Handle* in_handle); /** Stops playback of a playing audio playback handle. * @@ -872,7 +872,7 @@ gc_result ga_handle_play(ga_Handle* in_handle); * \warning You cannot stop a handle that has finished playing. When in doubt, check * ga_handle_finished() to verify this state prior to calling play. */ -gc_result ga_handle_stop(ga_Handle* in_handle); +DLL_EXPORT gc_result ga_handle_stop(ga_Handle* in_handle); /** Checks whether a handle is currently playing. * @@ -880,7 +880,7 @@ gc_result ga_handle_stop(ga_Handle* in_handle); * \param in_handle Handle object to check. * \return Whether the handle is currently playing. */ -gc_int32 ga_handle_playing(ga_Handle* in_handle); +DLL_EXPORT gc_int32 ga_handle_playing(ga_Handle* in_handle); /** Checks whether a handle is currently stopped. * @@ -888,7 +888,7 @@ gc_int32 ga_handle_playing(ga_Handle* in_handle); * \param in_handle Handle object to check. * \return Whether the handle is currently stopped. */ -gc_int32 ga_handle_stopped(ga_Handle* in_handle); +DLL_EXPORT gc_int32 ga_handle_stopped(ga_Handle* in_handle); /** Checks whether a handle is currently finished. * @@ -896,7 +896,7 @@ gc_int32 ga_handle_stopped(ga_Handle* in_handle); * \param in_handle Handle object to check. * \return Whether the handle is currently finished. */ -gc_int32 ga_handle_finished(ga_Handle* in_handle); +DLL_EXPORT gc_int32 ga_handle_finished(ga_Handle* in_handle); /** Checks whether a handle is currently destroyed. * @@ -904,7 +904,7 @@ gc_int32 ga_handle_finished(ga_Handle* in_handle); * \param in_handle Handle object to check. * \return Whether the handle is currently destroyed. */ -gc_int32 ga_handle_destroyed(ga_Handle* in_handle); +DLL_EXPORT gc_int32 ga_handle_destroyed(ga_Handle* in_handle); /** Sets the handle-finished-playback callback for a handle. * @@ -918,7 +918,7 @@ gc_int32 ga_handle_destroyed(ga_Handle* in_handle); * \return Whether the handle's callback was set successfully. GA_SUCCESS if the * operation was successful, GA_ERROR_GENERIC if not. */ -gc_result ga_handle_setCallback(ga_Handle* in_handle, +DLL_EXPORT gc_result ga_handle_setCallback(ga_Handle* in_handle, ga_FinishCallback in_callback, void* in_context); @@ -933,7 +933,7 @@ gc_result ga_handle_setCallback(ga_Handle* in_handle, * \return Whether the parameter was set successfully. GA_SUCCESS if the * operation was successful, GA_ERROR_GENERIC if not. */ -gc_result ga_handle_setParamf(ga_Handle* in_handle, +DLL_EXPORT gc_result ga_handle_setParamf(ga_Handle* in_handle, gc_int32 in_param, gc_float32 in_value); @@ -949,7 +949,7 @@ gc_result ga_handle_setParamf(ga_Handle* in_handle, * \return Whether the parameter was retrieved successfully. GA_SUCCESS if the * operation was successful, GA_ERROR_GENERIC if not. */ -gc_result ga_handle_getParamf(ga_Handle* in_handle, +DLL_EXPORT gc_result ga_handle_getParamf(ga_Handle* in_handle, gc_int32 in_param, gc_float32* out_value); @@ -964,7 +964,7 @@ gc_result ga_handle_getParamf(ga_Handle* in_handle, * \return Whether the parameter was set successfully. GA_SUCCESS if the * operation was successful, GA_ERROR_GENERIC if not. */ -gc_result ga_handle_setParami(ga_Handle* in_handle, +DLL_EXPORT gc_result ga_handle_setParami(ga_Handle* in_handle, gc_int32 in_param, gc_int32 in_value); @@ -980,7 +980,7 @@ gc_result ga_handle_setParami(ga_Handle* in_handle, * \return Whether the parameter was retrieved successfully. GA_SUCCESS if the * operation was successful, GA_ERROR_GENERIC if not. */ -gc_result ga_handle_getParami(ga_Handle* in_handle, +DLL_EXPORT gc_result ga_handle_getParami(ga_Handle* in_handle, gc_int32 in_param, gc_int32* out_value); @@ -993,7 +993,7 @@ gc_result ga_handle_getParami(ga_Handle* in_handle, * \warning Only handles containing sample sources with GA_FLAG_SEEKABLE can * have ga_handle_seek() called on them. */ -gc_result ga_handle_seek(ga_Handle* in_handle, gc_int32 in_sampleOffset); +DLL_EXPORT gc_result ga_handle_seek(ga_Handle* in_handle, gc_int32 in_sampleOffset); /** Tells the current playback sample number or total samples of a handle. * @@ -1004,7 +1004,7 @@ gc_result ga_handle_seek(ga_Handle* in_handle, gc_int32 in_sampleOffset); * GA_TELL_PARAM_CURRENT. The total number of samples in the handle * if in_param is set to GA_TELL_PARAM_TOTAL. */ -gc_int32 ga_handle_tell(ga_Handle* in_handle, gc_int32 in_param); +DLL_EXPORT gc_int32 ga_handle_tell(ga_Handle* in_handle, gc_int32 in_param); /** Checks whether a handle has at least a given number of available samples. * @@ -1017,7 +1017,7 @@ gc_int32 ga_handle_tell(ga_Handle* in_handle, gc_int32 in_param); * to be considered ready. * \return Whether the handle has at least a given number of available samples. */ -gc_int32 ga_handle_ready(ga_Handle* in_handle, gc_int32 in_numSamples); +DLL_EXPORT gc_int32 ga_handle_ready(ga_Handle* in_handle, gc_int32 in_numSamples); /** Retrieves the PCM sample format for a handle. * @@ -1027,7 +1027,7 @@ gc_int32 ga_handle_ready(ga_Handle* in_handle, gc_int32 in_numSamples); * as samples streamed by the handle. Output parameter. * \todo Either return a copy of the format, or make it a const* return value. */ -void ga_handle_format(ga_Handle* in_handle, ga_Format* out_format); +DLL_EXPORT void ga_handle_format(ga_Handle* in_handle, ga_Format* out_format); /*****************************/ @@ -1054,14 +1054,14 @@ typedef struct ga_StreamManager ga_StreamManager; * \ingroup ga_StreamManager * \return Newly-created stream manager. */ -ga_StreamManager* ga_stream_manager_create(); +DLL_EXPORT ga_StreamManager* ga_stream_manager_create(); /** Fills all buffers managed by a buffered-stream manager. * * \ingroup ga_StreamManager * \param in_mgr The buffered-stream manager whose buffers are to be filled. */ -void ga_stream_manager_buffer(ga_StreamManager* in_mgr); +DLL_EXPORT void ga_stream_manager_buffer(ga_StreamManager* in_mgr); /** Destroys a buffered-stream manager. * @@ -1069,7 +1069,7 @@ void ga_stream_manager_buffer(ga_StreamManager* in_mgr); * \param in_mgr The buffered-stream manager to be destroyed. * \warning Never use a buffered-stream manager after it has been destroyed. */ -void ga_stream_manager_destroy(ga_StreamManager* in_mgr); +DLL_EXPORT void ga_stream_manager_destroy(ga_StreamManager* in_mgr); /*********************/ @@ -1104,7 +1104,7 @@ typedef struct ga_BufferedStream ga_BufferedStream; * \todo Change in_bufferSize to in_bufferSamples for a mre fault-resistant * interface. */ -ga_BufferedStream* ga_stream_create(ga_StreamManager* in_mgr, ga_SampleSource* in_sampleSrc, gc_int32 in_bufferSize); +DLL_EXPORT ga_BufferedStream* ga_stream_create(ga_StreamManager* in_mgr, ga_SampleSource* in_sampleSrc, gc_int32 in_bufferSize); /** Buffers samples from the sample source into the internal buffer (producer). * @@ -1115,7 +1115,7 @@ ga_BufferedStream* ga_stream_create(ga_StreamManager* in_mgr, ga_SampleSource* i * \warning This function should only ever be called by the buffered stream * manager. */ -void ga_stream_produce(ga_BufferedStream* in_stream); /* Can be called from a secondary thread */ +DLL_EXPORT void ga_stream_produce(ga_BufferedStream* in_stream); /* Can be called from a secondary thread */ /** Reads samples from a buffered stream. * @@ -1126,7 +1126,7 @@ void ga_stream_produce(ga_BufferedStream* in_stream); /* Can be called from a se * \param in_numSamples Number of samples to read. * \return Total number of bytes read into the destination buffer. */ -gc_int32 ga_stream_read(ga_BufferedStream* in_stream, void* in_dst, gc_int32 in_numSamples); +DLL_EXPORT gc_int32 ga_stream_read(ga_BufferedStream* in_stream, void* in_dst, gc_int32 in_numSamples); /** Checks whether a buffered stream has reached the end of the stream. * @@ -1134,7 +1134,7 @@ gc_int32 ga_stream_read(ga_BufferedStream* in_stream, void* in_dst, gc_int32 in_ * \param in_stream Buffered stream to check. * \return Whether the buffered stream has reached the end of the stream. */ -gc_int32 ga_stream_end(ga_BufferedStream* in_stream); +DLL_EXPORT gc_int32 ga_stream_end(ga_BufferedStream* in_stream); /** Checks whether a buffered stream has at least a given number of available * samples. @@ -1150,7 +1150,7 @@ gc_int32 ga_stream_end(ga_BufferedStream* in_stream); * \return Whether the buffered stream has at least a given number of available * samples. */ -gc_int32 ga_stream_ready(ga_BufferedStream* in_stream, gc_int32 in_numSamples); +DLL_EXPORT gc_int32 ga_stream_ready(ga_BufferedStream* in_stream, gc_int32 in_numSamples); /** Seek to an offset (in samples) within a buffered stream. * @@ -1163,7 +1163,7 @@ gc_int32 ga_stream_ready(ga_BufferedStream* in_stream, gc_int32 in_numSamples); * \warning Only buffered streams with GA_FLAG_SEEKABLE can have ga_stream_seek() * called on them. */ -gc_int32 ga_stream_seek(ga_BufferedStream* in_stream, gc_int32 in_sampleOffset); +DLL_EXPORT gc_int32 ga_stream_seek(ga_BufferedStream* in_stream, gc_int32 in_sampleOffset); /** Tells the current sample number of a buffered stream. * @@ -1173,7 +1173,7 @@ gc_int32 ga_stream_seek(ga_BufferedStream* in_stream, gc_int32 in_sampleOffset); * samples in the contained sample source. Output parameter. * \return The current sample source sample number. */ -gc_int32 ga_stream_tell(ga_BufferedStream* in_stream, gc_int32* out_totalSamples); +DLL_EXPORT gc_int32 ga_stream_tell(ga_BufferedStream* in_stream, gc_int32* out_totalSamples); /** Returns the bitfield of flags set for a buffered stream (see \ref globDefs). * @@ -1181,7 +1181,7 @@ gc_int32 ga_stream_tell(ga_BufferedStream* in_stream, gc_int32* out_totalSamples * \param in_stream Buffered stream whose flags should be retrieved. * \return The bitfield of flags set for the buffered stream. */ -gc_int32 ga_stream_flags(ga_BufferedStream* in_stream); +DLL_EXPORT gc_int32 ga_stream_flags(ga_BufferedStream* in_stream); /** Acquire a reference for a buffered stream. * @@ -1191,7 +1191,7 @@ gc_int32 ga_stream_flags(ga_BufferedStream* in_stream); * \param in_stream Buffered stream whose reference count should be incremented. * \todo Either return a copy of the format, or make it a const* return value. */ -void ga_stream_acquire(ga_BufferedStream* in_stream); +DLL_EXPORT void ga_stream_acquire(ga_BufferedStream* in_stream); /** Releases a reference for a buffered stream. * @@ -1202,7 +1202,7 @@ void ga_stream_acquire(ga_BufferedStream* in_stream); * \param in_stream Buffered stream whose reference count should be decremented. * \warning A client must never use a buffered stream after releasing its reference. */ -void ga_stream_release(ga_BufferedStream* in_stream); +DLL_EXPORT void ga_stream_release(ga_BufferedStream* in_stream); #ifdef __cplusplus } diff --git a/Sparky-core/ext/gorilla-audio/ga_internal.h b/Dependencies/gorilla-audio/src/ga_internal.h similarity index 100% rename from Sparky-core/ext/gorilla-audio/ga_internal.h rename to Dependencies/gorilla-audio/src/ga_internal.h diff --git a/Sparky-core/ext/gorilla-audio/ga_stream.c b/Dependencies/gorilla-audio/src/ga_stream.c similarity index 100% rename from Sparky-core/ext/gorilla-audio/ga_stream.c rename to Dependencies/gorilla-audio/src/ga_stream.c diff --git a/Sparky-core/ext/gorilla-audio/gau.c b/Dependencies/gorilla-audio/src/gau.c similarity index 100% rename from Sparky-core/ext/gorilla-audio/gau.c rename to Dependencies/gorilla-audio/src/gau.c diff --git a/Sparky-core/ext/gorilla-audio/gau.h b/Dependencies/gorilla-audio/src/gau.h similarity index 73% rename from Sparky-core/ext/gorilla-audio/gau.h rename to Dependencies/gorilla-audio/src/gau.h index c4a5463d..fb44b6eb 100644 --- a/Sparky-core/ext/gorilla-audio/gau.h +++ b/Dependencies/gorilla-audio/src/gau.h @@ -50,13 +50,13 @@ typedef struct gau_Manager gau_Manager; * * \ingroup gau_Manager */ -gau_Manager* gau_manager_create(); +DLL_EXPORT gau_Manager* gau_manager_create(); /** Creates an audio manager (customizable). * * \ingroup gau_Manager */ -gau_Manager* gau_manager_create_custom(gc_int32 in_devType, +DLL_EXPORT gau_Manager* gau_manager_create_custom(gc_int32 in_devType, gc_int32 in_threadPolicy, gc_int32 in_numBuffers, gc_int32 in_bufferSamples); @@ -65,31 +65,31 @@ gau_Manager* gau_manager_create_custom(gc_int32 in_devType, * * \ingroup gau_Manager */ -void gau_manager_update(gau_Manager* in_mgr); +DLL_EXPORT void gau_manager_update(gau_Manager* in_mgr); /** Retrieves the internal mixer object from an audio manager. * * \ingroup gau_Manager */ -ga_Mixer* gau_manager_mixer(gau_Manager* in_mgr); +DLL_EXPORT ga_Mixer* gau_manager_mixer(gau_Manager* in_mgr); /** Retrieves the internal buffered stream manager object from an audio manager. * * \ingroup gau_Manager */ -ga_StreamManager* gau_manager_streamManager(gau_Manager* in_mgr); +DLL_EXPORT ga_StreamManager* gau_manager_streamManager(gau_Manager* in_mgr); /** Retrieves the internal device object from an audio manager. * * \ingroup gau_Manager */ -ga_Device* gau_manager_device(gau_Manager* in_mgr); +DLL_EXPORT ga_Device* gau_manager_device(gau_Manager* in_mgr); /** Destroys an audio manager. * * \ingroup gau_Manager */ -void gau_manager_destroy(gau_Manager* in_mgr); +DLL_EXPORT void gau_manager_destroy(gau_Manager* in_mgr); /*****************************/ /** Concrete Data Sources **/ @@ -104,19 +104,19 @@ void gau_manager_destroy(gau_Manager* in_mgr); * * \ingroup concreteData */ -ga_DataSource* gau_data_source_create_file(const char* in_filename); +DLL_EXPORT ga_DataSource* gau_data_source_create_file(const char* in_filename); /** Creates a data source of bytes from a subregion of a file-on-disk. * * \ingroup concreteData */ -ga_DataSource* gau_data_source_create_file_arc(const char* in_filename, gc_int32 in_offset, gc_int32 in_size); +DLL_EXPORT ga_DataSource* gau_data_source_create_file_arc(const char* in_filename, gc_int32 in_offset, gc_int32 in_size); /** Creates a data source of bytes from a block of shared memory. * * \ingroup concreteData */ -ga_DataSource* gau_data_source_create_memory(ga_Memory* in_memory); +DLL_EXPORT ga_DataSource* gau_data_source_create_memory(ga_Memory* in_memory); /*******************************/ /** Concrete Sample Sources **/ @@ -131,25 +131,25 @@ ga_DataSource* gau_data_source_create_memory(ga_Memory* in_memory); * * \ingroup concreteSample */ -ga_SampleSource* gau_sample_source_create_wav(ga_DataSource* in_dataSrc); +DLL_EXPORT ga_SampleSource* gau_sample_source_create_wav(ga_DataSource* in_dataSrc); /** Creates a sample source of PCM samples from an Ogg/Vorbis file. * * \ingroup concreteSample */ -ga_SampleSource* gau_sample_source_create_ogg(ga_DataSource* in_dataSrc); +DLL_EXPORT ga_SampleSource* gau_sample_source_create_ogg(ga_DataSource* in_dataSrc); /** Creates a buffered sample source of PCM samples from another sample source. * * \ingroup concreteSample */ -ga_SampleSource* gau_sample_source_create_buffered(ga_StreamManager* in_mgr, ga_SampleSource* in_sampleSrc, gc_int32 in_bufferSamples); +DLL_EXPORT ga_SampleSource* gau_sample_source_create_buffered(ga_StreamManager* in_mgr, ga_SampleSource* in_sampleSrc, gc_int32 in_bufferSamples); /** Creates a sample source of PCM samples from a cached sound object. * * \ingroup concreteSample */ -ga_SampleSource* gau_sample_source_create_sound(ga_Sound* in_sound); +DLL_EXPORT ga_SampleSource* gau_sample_source_create_sound(ga_Sound* in_sound); /**************************/ /** Loop Sample Source **/ @@ -172,25 +172,25 @@ typedef struct gau_SampleSourceLoop gau_SampleSourceLoop; * * \ingroup loopSample */ -gau_SampleSourceLoop* gau_sample_source_create_loop(ga_SampleSource* in_sampleSrc); +DLL_EXPORT gau_SampleSourceLoop* gau_sample_source_create_loop(ga_SampleSource* in_sampleSrc); /** Set loop points on a loop sample source. * * \ingroup loopSample */ -void gau_sample_source_loop_set(gau_SampleSourceLoop* in_sampleSrc, gc_int32 in_triggerSample, gc_int32 in_targetSample); +DLL_EXPORT void gau_sample_source_loop_set(gau_SampleSourceLoop* in_sampleSrc, gc_int32 in_triggerSample, gc_int32 in_targetSample); /** Clear loop points on a loop sample source. * * \ingroup loopSample */ -void gau_sample_source_loop_clear(gau_SampleSourceLoop* in_sampleSrc); +DLL_EXPORT void gau_sample_source_loop_clear(gau_SampleSourceLoop* in_sampleSrc); /** Count number of times a loop sample source has looped. * * \ingroup loopSample */ -gc_int32 gau_sample_source_loop_count(gau_SampleSourceLoop* in_sampleSrc); +DLL_EXPORT gc_int32 gau_sample_source_loop_count(gau_SampleSourceLoop* in_sampleSrc); /***************************/ /** On-Finish Callbacks **/ @@ -205,7 +205,7 @@ gc_int32 gau_sample_source_loop_count(gau_SampleSourceLoop* in_sampleSrc); * * \ingroup onFinish */ -void gau_on_finish_destroy(ga_Handle* in_finishedHandle, void* in_context); +DLL_EXPORT void gau_on_finish_destroy(ga_Handle* in_finishedHandle, void* in_context); /********************/ /** Load Helpers **/ @@ -220,13 +220,13 @@ void gau_on_finish_destroy(ga_Handle* in_finishedHandle, void* in_context); * * \ingroup loadHelper */ -ga_Memory* gau_load_memory_file(const char* in_filename); +DLL_EXPORT ga_Memory* gau_load_memory_file(const char* in_filename); /** Load a file's PCM data into a sound object. * * \ingroup loadHelper */ -ga_Sound* gau_load_sound_file(const char* in_filename, const char* in_format); +DLL_EXPORT ga_Sound* gau_load_sound_file(const char* in_filename, const char* in_format); /**********************/ @@ -242,7 +242,7 @@ ga_Sound* gau_load_sound_file(const char* in_filename, const char* in_format); * * \ingroup createHelper */ -ga_Handle* gau_create_handle_memory(ga_Mixer* in_mixer, ga_Memory* in_memory, const char* in_format, +DLL_EXPORT ga_Handle* gau_create_handle_memory(ga_Mixer* in_mixer, ga_Memory* in_memory, const char* in_format, ga_FinishCallback in_callback, void* in_context, gau_SampleSourceLoop** out_loopSrc); @@ -250,7 +250,7 @@ ga_Handle* gau_create_handle_memory(ga_Mixer* in_mixer, ga_Memory* in_memory, co * * \ingroup createHelper */ -ga_Handle* gau_create_handle_sound(ga_Mixer* in_mixer, ga_Sound* in_sound, +DLL_EXPORT ga_Handle* gau_create_handle_sound(ga_Mixer* in_mixer, ga_Sound* in_sound, ga_FinishCallback in_callback, void* in_context, gau_SampleSourceLoop** out_loopSrc); @@ -258,7 +258,7 @@ ga_Handle* gau_create_handle_sound(ga_Mixer* in_mixer, ga_Sound* in_sound, * * \ingroup createHelper */ -ga_Handle* gau_create_handle_buffered_data(ga_Mixer* in_mixer, ga_StreamManager* in_streamMgr, +DLL_EXPORT ga_Handle* gau_create_handle_buffered_data(ga_Mixer* in_mixer, ga_StreamManager* in_streamMgr, ga_DataSource* in_dataSrc, const char* in_format, ga_FinishCallback in_callback, void* in_context, gau_SampleSourceLoop** out_loopSrc); @@ -267,7 +267,7 @@ ga_Handle* gau_create_handle_buffered_data(ga_Mixer* in_mixer, ga_StreamManager* * * \ingroup createHelper */ -ga_Handle* gau_create_handle_buffered_file(ga_Mixer* in_mixer, ga_StreamManager* in_streamMgr, +DLL_EXPORT ga_Handle* gau_create_handle_buffered_file(ga_Mixer* in_mixer, ga_StreamManager* in_streamMgr, const char* in_filename, const char* in_format, ga_FinishCallback in_callback, void* in_context, gau_SampleSourceLoop** out_loopSrc); diff --git a/Dependencies/libogg/bin/libogg.lib b/Dependencies/libogg/bin/libogg.lib index f941314b..b5a0fb51 100644 Binary files a/Dependencies/libogg/bin/libogg.lib and b/Dependencies/libogg/bin/libogg.lib differ diff --git a/libogg/libogg.vcxproj b/Dependencies/libogg/libogg.vcxproj similarity index 81% rename from libogg/libogg.vcxproj rename to Dependencies/libogg/libogg.vcxproj index 2c57a237..ec85cbcd 100644 --- a/libogg/libogg.vcxproj +++ b/Dependencies/libogg/libogg.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -10,21 +10,31 @@ Win32 + + + + + + + + + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C} libogg + 10.0.17763.0 StaticLibrary true - v120 + v141 MultiByte StaticLibrary false - v120 + v141 true MultiByte @@ -40,21 +50,27 @@ $(SolutionDir)Dependencies\libogg\include;$(IncludePath) + $(SolutionDir)bin\$(Configuration)\ + $(SolutionDir)bin\$(Configuration)\Intermediates\$(ProjectName)\ $(SolutionDir)Dependencies\libogg\include;$(IncludePath) - $(SolutionDir)Dependencies\libogg\bin\ - $(SolutionDir)Dependencies\libogg\bin\intermediates + $(SolutionDir)bin\$(Configuration)\ + $(SolutionDir)bin\$(Configuration)\Intermediates\$(ProjectName)\ Level3 Disabled true + true true + + true + @@ -74,18 +90,6 @@ true - - - - - - - - - - - - diff --git a/Dependencies/libvorbis/bin/libvorbis.lib b/Dependencies/libvorbis/bin/libvorbis.lib index fc6f48d8..5ea04d2b 100644 Binary files a/Dependencies/libvorbis/bin/libvorbis.lib and b/Dependencies/libvorbis/bin/libvorbis.lib differ diff --git a/Dependencies/libvorbis/lib/mapping0.c b/Dependencies/libvorbis/lib/mapping0.c index b6d8dc33..ca0f5e46 100644 --- a/Dependencies/libvorbis/lib/mapping0.c +++ b/Dependencies/libvorbis/lib/mapping0.c @@ -586,8 +586,8 @@ static int mapping0_forward(vorbis_block *vb){ float **couple_bundle=alloca(sizeof(*couple_bundle)*vi->channels); int *zerobundle=alloca(sizeof(*zerobundle)*vi->channels); int **sortindex=alloca(sizeof(*sortindex)*vi->channels); - float **mag_memo; - int **mag_sort; + float **mag_memo = NULL; + int **mag_sort = NULL; if(info->coupling_steps){ mag_memo=_vp_quantize_couple_memo(vb, diff --git a/Dependencies/libvorbis/lib/os.h b/Dependencies/libvorbis/lib/os.h index 2be7bda1..ad3c4d36 100644 --- a/Dependencies/libvorbis/lib/os.h +++ b/Dependencies/libvorbis/lib/os.h @@ -71,14 +71,6 @@ void *_alloca(size_t size); # include #endif -#ifndef min -# define min(x,y) ((x)>(y)?(y):(x)) -#endif - -#ifndef max -# define max(x,y) ((x)<(y)?(y):(x)) -#endif - #if defined(__i386__) && defined(__GNUC__) && !defined(__BEOS__) # define VORBIS_FPU_CONTROL /* both GCC and MSVC are kinda stupid about rounding/casting to int. diff --git a/Dependencies/libvorbis/libvorbis.vcxproj b/Dependencies/libvorbis/libvorbis.vcxproj new file mode 100644 index 00000000..3a15be26 --- /dev/null +++ b/Dependencies/libvorbis/libvorbis.vcxproj @@ -0,0 +1,156 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {8ED62764-0D19-40AC-BC88-E82AADF1189B} + libvorbis + 10.0.17763.0 + + + + StaticLibrary + true + v141 + MultiByte + + + StaticLibrary + false + v141 + true + MultiByte + + + + + + + + + + + + + $(SolutionDir)Dependencies\libogg\include;$(SolutionDir)Dependencies\libvorbis\include;$(IncludePath) + $(SolutionDir)bin\$(Configuration)\ + $(SolutionDir)bin\$(Configuration)\Intermediates\$(ProjectName)\ + + + $(SolutionDir)Dependencies\libogg\include;$(SolutionDir)Dependencies\libvorbis\include;$(IncludePath) + $(SolutionDir)bin\$(Configuration)\ + $(SolutionDir)bin\$(Configuration)\Intermediates\$(ProjectName)\ + + + + TurnOffAllWarnings + Disabled + true + _CRT_SECURE_NO_WARNINGS;_USE_MATH_DEFINES;%(PreprocessorDefinitions) + true + + + true + + + true + + + + + TurnOffAllWarnings + MaxSpeed + true + true + false + _CRT_SECURE_NO_WARNINGS;_USE_MATH_DEFINES;%(PreprocessorDefinitions) + AnySuitable + Speed + StreamingSIMDExtensions2 + Fast + + + true + true + true + + + + + + \ No newline at end of file diff --git a/Docs/ReleaseNotes/SparkyMarch2016RN.txt b/Docs/ReleaseNotes/SparkyMarch2016RN.txt new file mode 100644 index 00000000..799bfbde --- /dev/null +++ b/Docs/ReleaseNotes/SparkyMarch2016RN.txt @@ -0,0 +1,58 @@ +================================== + Sparky March 2016 Release Notes +================================== + +Major New Features: +- Sparky now support Physically-Based Rendering (PBR) +- Sparky now supports rendering in both OpenGL and Direct3D 11 +- Custom 3D model format (SPM - Sparky Model) +- Build tool for converting from Autodesk FBX to SPM +- Custom memory allocation and control +- Matrix maths is now row-major + + +The following is the full list of changes included in this month's release: +--------------------------------------------------------------------------- +- Sparky now supports OpenGL and Direct3D 11 as rendering APIs +- Refactored entire graphics engine to support multiple rendering APIs +- Changed FreeType-GL to provide pixel data rather than OpenGL textures, so that it could be used with DX +- Fixed window sometimes not closing when the close button was pressed (Win32) +- Fixed mouse release events getting lost because the window was not capturing mouse clicks properly (Win32) +- Added window focus and resize events (Win32) +- Fixed window resizing not propagating to appropriate renderers +- Changed font rendering to work with OpenGL and Direct3D +- Sparky now supports Physically-Based Rendering (PBR) +- Added normal mapping support for PBR +- Added Disney diffuse model and GGX specular model for PBR lighting (mostly taken from Frostbite's PBR paper) +- Added Image-Based Lighting (IBL) for PBR (similar to Frostbite's model) +- Added Depth Textures and basic shadow rendering (now obsolete after render API changes) +- Added basic deferred rendering support (now obsolete after render API changes) +- Sparky now uses a custom 3D model format (SPM - Sparky Model) for meshes +- Added SPMBuild tool for FBX-to-SPM conversion +- Created PBRMaterial class for convenience +- Added cubemap texture support (TextureCube) (GL and DX) +- Added Material render flags +- Fixed uniform struct alignment to work with DX (16-byte aligned, MSVC only) +- Created Renderer class for render API specific states (eg. depth-testing, blend modes, etc.) +- Added FreeImage to Solution. Sparky now compiles FreeImage as a static library, along with selected FreeImage utilities +- Created render API independent blend modes and buffer types +- BufferLayouts now work with GL and DX +- Rewrote Shader class +- Converted Forward Renderer to use system uniforms +- Added booleans to debug menu +- Added first-person camera (FPSCamera) +- Added custom Allocator class for future development +- Added spnew and spdel macros for memory management +- Added MemoryManager for tracking memory allocations +- Added dynamic shader reloading (GL only) +- Added Debug Renderer (currently broken due to API changes) +- Added plenty of resources to Sandbox (PBR materials, cubemaps, models) +- Added signed and unsigned integer typedefs (int8, int16, int32, etc.) +- Fixed MSVC compiler warnings +- Organised Visual Studio filters for Sparky-core project +- Removed ChernoCraft +--------------------------------------------------------------------------- + +Known Issues: +------------- +See Github issues. \ No newline at end of file diff --git a/LICENSE b/LICENSE index 6b156fe1..c3de95d5 100644 --- a/LICENSE +++ b/LICENSE @@ -1,675 +1,201 @@ -GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - {project} Copyright (C) {year} {fullname} - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. - + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright {yyyy} {name of copyright owner} + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md index e730060a..b3055f06 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,9 @@ -# Sparky -The Sparky engine! +# Sparky Game Engine + +![Sparky](/Resources/Branding/SparkyLogoLight1920x1080.jpg?raw=true "Sparky") + +[![Build status](https://ci.appveyor.com/api/projects/status/u04khlr803f43qst/branch/master?svg=true)](https://ci.appveyor.com/project/TheCherno/sparky/branch/master) + +Sparky is a cross-platform, high performance game engine currently in development. This readme will be updated with more info eventually. + +[Join the Slack channel (#sparky)](http://slack.thecherno.com) diff --git a/Resources/Branding/SparkyLogoDark1920x1080.jpg b/Resources/Branding/SparkyLogoDark1920x1080.jpg new file mode 100644 index 00000000..53a8efa1 Binary files /dev/null and b/Resources/Branding/SparkyLogoDark1920x1080.jpg differ diff --git a/Resources/Branding/SparkyLogoLight1920x1080.jpg b/Resources/Branding/SparkyLogoLight1920x1080.jpg new file mode 100644 index 00000000..334b3b28 Binary files /dev/null and b/Resources/Branding/SparkyLogoLight1920x1080.jpg differ diff --git a/Sandbox/Sandbox.vcxproj b/Sandbox/Sandbox.vcxproj new file mode 100644 index 00000000..8b352308 --- /dev/null +++ b/Sandbox/Sandbox.vcxproj @@ -0,0 +1,134 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF} + Sandbox + 10.0.17763.0 + + + + Application + true + v141 + MultiByte + + + Application + false + v141 + true + MultiByte + + + + + + + + + + + + + $(VC_IncludePath);$(WindowsSDK_IncludePath) + $(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86) + $(SolutionDir)bin\$(Configuration)\ + $(SolutionDir)bin\$(Configuration)\Intermediates\$(ProjectName)\ + + + $(VC_IncludePath);$(WindowsSDK_IncludePath) + $(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86) + $(SolutionDir)bin\$(Configuration)\ + $(SolutionDir)bin\$(Configuration)\Intermediates\$(ProjectName) + + + + Level3 + Disabled + true + $(SolutionDir)Sparky-core\src\ + SP_PLATFORM_WINDOWS;SPARKY_PLATFORM_WIN32;SP_DEBUG;GLEW_STATIC;FT2_BUILD_LIBRARY;WIN32;_LIB;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_MBCS;%(PreprocessorDefinitions) + true + + + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + true + + + + + Level3 + MaxSpeed + true + true + true + $(SolutionDir)Sparky-core\src\ + SP_PLATFORM_WINDOWS;SPARKY_PLATFORM_WIN32;SP_RELEASE;GLEW_STATIC;FT2_BUILD_LIBRARY;WIN32;_LIB;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_MBCS;%(PreprocessorDefinitions) + AnySuitable + Speed + StreamingSIMDExtensions2 + Fast + + + true + true + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + {c737c239-3a40-4388-9c61-6cf779025785} + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + + + Document + + + + + + \ No newline at end of file diff --git a/Sandbox/res/BrushScriptStd.otf b/Sandbox/res/BrushScriptStd.otf new file mode 100644 index 00000000..6cb370bd Binary files /dev/null and b/Sandbox/res/BrushScriptStd.otf differ diff --git a/Sparky-core/Cherno.ogg b/Sandbox/res/Cherno.ogg similarity index 100% rename from Sparky-core/Cherno.ogg rename to Sandbox/res/Cherno.ogg diff --git a/Sandbox/res/Cube.obj b/Sandbox/res/Cube.obj new file mode 100644 index 00000000..c1d01010 --- /dev/null +++ b/Sandbox/res/Cube.obj @@ -0,0 +1,60 @@ +# This file uses centimeters as units for non-parametric coordinates. + +v -1.000000 -1.000000 1.000000 +v 1.000000 -1.000000 1.000000 +v -1.000000 1.000000 1.000000 +v 1.000000 1.000000 1.000000 +v -1.000000 1.000000 -1.000000 +v 1.000000 1.000000 -1.000000 +v -1.000000 -1.000000 -1.000000 +v 1.000000 -1.000000 -1.000000 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.375000 1.000000 +vt 0.625000 1.000000 +vt 0.875000 0.000000 +vt 0.875000 0.250000 +vt 0.125000 0.000000 +vt 0.125000 0.250000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +f 1/1/1 2/2/2 3/3/3 +f 3/3/3 2/2/2 4/4/4 +f 3/3/5 4/4/6 5/5/7 +f 5/5/7 4/4/6 6/6/8 +f 5/5/9 6/6/10 7/7/11 +f 7/7/11 6/6/10 8/8/12 +f 7/7/13 8/8/14 1/9/15 +f 1/9/15 8/8/14 2/10/16 +f 2/2/17 8/11/18 4/4/19 +f 4/4/19 8/11/18 6/12/20 +f 7/13/21 1/1/22 5/14/23 +f 5/14/23 1/1/22 3/3/24 diff --git a/Sandbox/res/Dagger/Dagger.obj b/Sandbox/res/Dagger/Dagger.obj new file mode 100644 index 00000000..1830a053 --- /dev/null +++ b/Sandbox/res/Dagger/Dagger.obj @@ -0,0 +1,7068 @@ +# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware +# File Created: 01.06.2014 16:29:21 + +# +# object Grip001 +# + +v -3.922508478165 -7.643078804016 -0.000000000000 +v -3.595713853836 -7.671669483185 1.494009494781 +v -3.569620132446 -5.676831245422 1.488719940186 +v -3.880590200424 -5.676831245422 -0.000000000000 +v -2.894851684570 -7.732986927032 2.549686908722 +v -2.869031906128 -5.676831245422 2.500071048737 +v -2.014062881470 -7.810046195984 3.270371913910 +v -2.007445335388 -5.676831245422 3.212044239044 +v -0.932890415192 -7.847241401672 3.720117568970 +v -0.860576152802 -5.676831245422 3.671319961548 +v 0.254128098488 -8.008486747742 3.822568893433 +v 0.222347736359 -5.676831245422 3.777265548706 +v 1.523042559624 -8.119503021240 3.547607421875 +v 1.472078323364 -5.676831245422 3.528578281403 +v 2.580236196518 -8.211995124817 2.999230384827 +v 2.562145233154 -5.676831245422 2.998840332031 +v 3.378083229065 -8.281797409058 2.225854396820 +v 3.435224056244 -5.676831245422 2.243977308273 +v 3.886304378510 -8.326261520386 1.277823925018 +v 3.943105220795 -5.676831245422 1.298128366470 +v 4.099353790283 -8.344901084900 -0.000000000000 +v 4.180048942566 -5.676831245422 -0.000000000000 +v 3.799914360046 -11.957970619202 1.171652555466 +v 3.893644332886 -11.893330574036 -0.000000000000 +v 3.116357803345 -11.838180541992 2.405721187592 +v 2.097721815109 -11.394569396973 3.354726791382 +v 0.879004478455 -10.915373802185 3.828989982605 +v -0.000908166170 -10.504669189453 3.976178169250 +v -1.077464580536 -9.988146781921 3.848051071167 +v -2.109461545944 -9.470806121826 3.412931442261 +v -3.081267833710 -9.088139533997 2.555248737335 +v -3.737217903137 -8.688222885132 1.468110561371 +v -4.009229660034 -8.496972084045 -0.000000000000 +v -3.104568481445 -9.437838554382 1.044462442398 +v -3.278645515442 -9.367588043213 -0.000000000000 +v -2.707861900330 -9.557307243347 1.808164596558 +v -1.910789012909 -9.893899917603 2.652993202209 +v -1.017820596695 -10.329358100891 3.142013549805 +v -0.112513303757 -10.749371528625 3.367571830750 +v 0.746877074242 -11.144229888916 3.385490417480 +v 1.989158391953 -11.682622909546 3.025013446808 +v 2.690667152405 -11.804465293884 2.218876838684 +v 3.078605890274 -11.783681869507 0.957360088825 +v 3.281406641006 -11.812643051147 -0.000000000000 +v 0.505486011505 -11.962181091309 3.571713447571 +v -0.312203407288 -12.091681480408 3.590521812439 +v -1.166241884232 -12.180223464966 3.417538642883 +v -2.192663669586 -12.269722938538 2.877511978149 +v -2.961544990540 -12.295898437500 2.038167238235 +v -3.500222444534 -12.328260421753 1.049990892410 +v -3.600727081299 -12.320714950562 -0.000000000000 +v -3.013711690903 -12.599396705627 -0.000000000000 +v -2.882153987885 -12.686851501465 0.928757667542 +v -2.428256273270 -12.669054985046 1.745495319366 +v -1.894324779510 -12.650135040283 2.292697906494 +v -1.004199743271 -12.572217941284 2.781026840210 +v -0.192364215851 -12.463356971741 2.935656547546 +v 0.511161565781 -12.356845855713 2.898814201355 +v 1.444008588791 -12.275762557983 2.611241817474 +v 2.402357339859 -12.101894378662 1.992364645004 +v 2.317664384842 -14.279830932617 2.025278091431 +v 1.422527790070 -14.249671936035 2.718868255615 +v 0.490870475769 -14.246960639954 3.022902488708 +v -0.268776893616 -14.223252296448 3.029259681702 +v -1.108548879623 -14.207347869873 2.859538078308 +v -1.902330398560 -14.191784858704 2.414022445679 +v -2.485181808472 -14.236106872559 1.785173416138 +v -2.901405334473 -14.249368667603 0.969079732895 +v -3.047586441040 -14.250127792358 -0.000000000000 +v 2.924036026001 -14.300342559814 1.039395332336 +v 3.107605934143 -14.297174453735 -0.000000000000 +v 2.734816074371 -14.594015121460 0.882180213928 +v 2.895989894867 -14.601648330688 -0.000000000000 +v 2.105425834656 -14.576098442078 1.799960136414 +v 1.207667231560 -14.559450149536 2.332093238831 +v 0.375737428665 -14.551262855530 2.547223567963 +v -0.329245805740 -14.535328865051 2.548136711121 +v -0.984159231186 -14.531154632568 2.377448081970 +v -1.685827016830 -14.492293357849 1.934521198273 +v -2.115615844727 -14.507114410400 1.435785055161 +v -2.438988208771 -14.487528800964 0.845739841461 +v -2.582194805145 -14.496466636658 -0.000000000000 +v -2.489076614380 -15.610764503479 0.850541353226 +v -2.579979896545 -15.622521400452 -0.000000000000 +v -2.498776435852 -16.130310058594 -0.000000000000 +v -2.440237998962 -16.180873870850 0.727556228638 +v -2.177234649658 -16.230083465576 1.454912185669 +v -1.806486606598 -16.313938140869 1.972224235535 +v -1.111033439636 -16.530698776245 2.533223152161 +v -0.471703767776 -16.719203948975 2.794834136963 +v 0.371285438538 -17.046636581421 2.848065376282 +v 1.212618350983 -17.442886352539 2.664889335632 +v 2.246602058411 -17.929479598999 2.095198631287 +v 3.084027290344 -18.317039489746 1.116786003113 +v 3.330462455750 -18.401063919067 -0.000000000000 +v -2.387300491333 -16.403013229370 -0.000000000000 +v -2.266645431519 -16.436386108398 0.708967208862 +v -1.943712234497 -16.502801895142 1.356751441956 +v -1.585188865662 -16.610298156738 1.807914257050 +v -1.055824398994 -16.802419662476 2.235446929932 +v -0.438837707043 -17.080223083496 2.547277450562 +v 0.359026193619 -17.464382171631 2.529388427734 +v 1.171815633774 -17.804470062256 2.368126869202 +v 2.048619985580 -18.195667266846 1.880077362061 +v 2.875948905945 -18.704599380493 1.069149494171 +v 3.123192787170 -18.729949951172 -0.000000000000 +v 3.667411327362 -18.776168823242 1.429336547852 +v 3.879218101501 -18.694988250732 -0.000000000000 +v -2.448612213135 -18.846282958984 -0.000000000000 +v -2.338401794434 -18.873086929321 0.727148056030 +v -2.592061996460 -21.089767456055 0.753622174263 +v -2.703346252441 -21.058975219727 -0.000000000000 +v -2.024392366409 -18.849258422852 1.354154586792 +v -1.610494375229 -18.889593124390 1.855830192566 +v -1.042222261429 -18.863674163818 2.268543243408 +v -0.346782684326 -18.851583480835 2.548037528992 +v 0.419212996960 -18.871839523315 2.608238220215 +v 1.281738996506 -18.898941040039 2.387437820435 +v 2.163038253784 -19.151706695557 1.901097297668 +v -2.231371879578 -20.981000900269 1.536060810089 +v -1.676946163177 -20.800153732300 2.163416862488 +v -1.044525623322 -20.475891113281 2.532576560974 +v -0.320916175842 -20.161569595337 2.740180015564 +v 0.516047239304 -19.855426788330 2.717475891113 +v 1.433482646942 -19.483766555786 2.413670539856 +v 2.808085441589 -18.863201141357 2.690141916275 +v 1.824338436127 -19.167163848877 3.251696586609 +v 0.742057919502 -19.763858795166 3.588287830353 +v -0.419955492020 -20.262088775635 3.602975130081 +v -1.324135065079 -20.722305297852 3.222379446030 +v -2.034911394119 -21.034521102905 2.721668481827 +v -2.805681943893 -21.396732330322 1.890790224075 +v -3.059347152710 -21.510663986206 0.920640349388 +v -3.143546104431 -21.566322326660 -0.000000000000 +v 3.705471038818 -22.281013488770 1.337898015976 +v 3.971179008484 -22.180719375610 -0.000000000000 +v 3.806481361389 -23.987182617188 1.336638927460 +v 4.074758529663 -23.982997894287 -0.000000000000 +v 3.015569210052 -22.328605651855 2.398893356323 +v 2.085725784302 -22.512313842773 3.042634010315 +v 0.947937130928 -22.602104187012 3.430690765381 +v -0.306645154953 -22.735607147217 3.444565773010 +v -1.223433971405 -22.780380249023 3.149660110474 +v -2.032389879227 -22.797050476074 2.640302658081 +v -2.777364730835 -22.817951202393 1.776906013489 +v -3.159396171570 -22.792133331299 0.957097232342 +v -3.290583610535 -22.815704345703 -0.000000000000 +v 3.082760334015 -24.007488250732 2.425522804260 +v 2.116988182068 -24.021526336670 3.046415328979 +v 0.968021392822 -23.951007843018 3.413880348206 +v -0.295443534851 -23.862113952637 3.409708976746 +v -1.218884944916 -23.734912872314 3.123690605164 +v -2.006806850433 -23.645740509033 2.610107421875 +v -2.734125614166 -23.485881805420 1.765845775604 +v -3.118065834045 -23.454296112061 0.959291458130 +v -3.253098487854 -23.425590515137 -0.000000000000 +v -1.511250734329 -23.954124450684 3.703383684158 +v -2.490653514862 -23.852180480957 3.145781040192 +v -3.283912181854 -23.702777862549 2.192304611206 +v -3.760231733322 -23.594017028809 1.049978494644 +v -3.905564069748 -23.526969909668 -0.000000000000 +v -0.256155967712 -24.106121063232 4.098705768585 +v 1.178290367126 -24.283172607422 3.961374282837 +v 2.325228214264 -24.317012786865 3.564785003662 +v 3.411786556244 -24.262695312500 2.751645088196 +v 4.164905071259 -24.260387420654 1.468628406525 +v 4.494759559631 -24.175865173340 -0.000000000000 +v 4.441396713257 -24.802993774414 1.496077775955 +v 4.755071640015 -24.724086761475 -0.000000000000 +v 3.517532348633 -24.576778411865 2.863920211792 +v -4.083827972412 -26.167346954346 -0.000000000000 +v -3.954183340073 -26.228279113770 1.055283069611 +v -3.430398941040 -26.266056060791 2.208859443665 +v -2.535475730896 -26.285770416260 3.120889663696 +v -1.518451690674 -26.339618682861 3.673269271851 +v -0.271866798401 -26.329853057861 3.972694396973 +v 1.107692956924 -26.394199371338 3.862848281860 +v 2.297028541565 -26.414886474609 3.437853813171 +v 3.393684387207 -26.444087982178 2.668009757996 +v 4.238075256348 -26.474769592285 1.413239002228 +v 4.498558044434 -26.444267272949 -0.000000000000 +v 4.445844650269 -28.638519287109 1.374222517014 +v 4.678863525391 -28.615715026855 -0.000000000000 +v 3.605022430420 -28.637577056885 2.771030426025 +v 2.467345476151 -28.698863983154 3.704311370850 +v 1.203681707382 -28.668907165527 4.236148834229 +v -0.341415166855 -28.663627624512 4.339227676392 +v -1.750556230545 -28.677013397217 4.018104553223 +v -2.866250038147 -28.698955535889 3.451779365540 +v -3.912278890610 -28.666084289551 2.471560478210 +v -4.542985916138 -28.663391113281 1.117699623108 +v -4.692049026489 -28.637798309326 -0.000000000000 +v -4.163991928101 -29.050514221191 1.056059360504 +v -4.337496757507 -29.037399291992 -0.000000000000 +v -3.608099460602 -29.041061401367 2.285091876984 +v -2.635231494904 -29.059806823730 3.139142274857 +v -1.587621331215 -29.042446136475 3.704757690430 +v -0.298512935638 -29.046611785889 3.983547687531 +v 1.024715900421 -29.052085876465 3.893544197083 +v 2.234580755234 -29.068523406982 3.355147838593 +v 3.304747104645 -29.065628051758 2.444262027740 +v 4.029021263123 -29.068588256836 1.172763586044 +v 4.181627750397 -29.079246520996 -0.000000000000 +v -3.569620132446 -5.676831245422 -1.488719940186 +v -3.595713853836 -7.671669483185 -1.494009494781 +v -2.869031906128 -5.676831245422 -2.500071048737 +v -2.894851684570 -7.732986927032 -2.549686908722 +v -2.007445335388 -5.676831245422 -3.212044239044 +v -2.014062881470 -7.810046195984 -3.270371913910 +v -0.860576152802 -5.676831245422 -3.671319961548 +v -0.932890415192 -7.847241401672 -3.720117568970 +v 0.222347736359 -5.676831245422 -3.777265548706 +v 0.254128098488 -8.008486747742 -3.822568893433 +v 1.472078323364 -5.676831245422 -3.528578281403 +v 1.523042559624 -8.119503021240 -3.547607421875 +v 2.562145233154 -5.676831245422 -2.998840332031 +v 2.580236196518 -8.211995124817 -2.999230384827 +v 3.435224056244 -5.676831245422 -2.243977308273 +v 3.378083229065 -8.281797409058 -2.225854396820 +v 3.943105220795 -5.676831245422 -1.298128366470 +v 3.886304378510 -8.326261520386 -1.277823925018 +v 3.799914360046 -11.957970619202 -1.171652555466 +v 3.116357803345 -11.838180541992 -2.405721187592 +v 2.097721815109 -11.394569396973 -3.354726791382 +v 0.879004478455 -10.915373802185 -3.828989982605 +v -0.000908166170 -10.504669189453 -3.976178169250 +v -1.077464580536 -9.988146781921 -3.848051071167 +v -2.109461545944 -9.470806121826 -3.412931442261 +v -3.081267833710 -9.088139533997 -2.555248737335 +v -3.737217903137 -8.688222885132 -1.468110561371 +v -3.104568481445 -9.437838554382 -1.044462442398 +v -2.707861900330 -9.557307243347 -1.808164596558 +v -1.910789012909 -9.893899917603 -2.652993202209 +v -1.017820596695 -10.329358100891 -3.142013549805 +v -0.112513303757 -10.749371528625 -3.367571830750 +v 0.746877074242 -11.144229888916 -3.385490417480 +v 1.989158391953 -11.682622909546 -3.025013446808 +v 2.690667152405 -11.804465293884 -2.218876838684 +v 3.078605890274 -11.783681869507 -0.957360088825 +v 0.505486011505 -11.962181091309 -3.571713447571 +v -0.312203407288 -12.091681480408 -3.590521812439 +v -1.166241884232 -12.180223464966 -3.417538642883 +v -2.192663669586 -12.269722938538 -2.877511978149 +v -2.961544990540 -12.295898437500 -2.038167238235 +v -3.500222444534 -12.328260421753 -1.049990892410 +v -2.882153987885 -12.686851501465 -0.928757667542 +v -2.428256273270 -12.669054985046 -1.745495319366 +v -1.894324779510 -12.650135040283 -2.292697906494 +v -1.004199743271 -12.572217941284 -2.781026840210 +v -0.192364215851 -12.463356971741 -2.935656547546 +v 0.511161565781 -12.356845855713 -2.898814201355 +v 1.444008588791 -12.275762557983 -2.611241817474 +v 2.402357339859 -12.101894378662 -1.992364645004 +v 2.317664384842 -14.279830932617 -2.025278091431 +v 1.422527790070 -14.249671936035 -2.718868255615 +v 0.490870475769 -14.246960639954 -3.022902488708 +v -0.268776893616 -14.223252296448 -3.029259681702 +v -1.108548879623 -14.207347869873 -2.859538078308 +v -1.902330398560 -14.191784858704 -2.414022445679 +v -2.485181808472 -14.236106872559 -1.785173416138 +v -2.901405334473 -14.249368667603 -0.969079732895 +v 2.924036026001 -14.300342559814 -1.039395332336 +v 2.734816074371 -14.594015121460 -0.882180213928 +v 2.105425834656 -14.576098442078 -1.799960136414 +v 1.207667231560 -14.559450149536 -2.332093238831 +v 0.375737428665 -14.551262855530 -2.547223567963 +v -0.329245805740 -14.535328865051 -2.548136711121 +v -0.984159231186 -14.531154632568 -2.377448081970 +v -1.685827016830 -14.492293357849 -1.934521198273 +v -2.115615844727 -14.507114410400 -1.435785055161 +v -2.438988208771 -14.487528800964 -0.845739841461 +v -2.489076614380 -15.610764503479 -0.850541353226 +v -2.440237998962 -16.180873870850 -0.727556228638 +v -2.177234649658 -16.230083465576 -1.454912185669 +v -1.806486606598 -16.313938140869 -1.972224235535 +v -1.111033439636 -16.530698776245 -2.533223152161 +v -0.471703767776 -16.719203948975 -2.794834136963 +v 0.371285438538 -17.046636581421 -2.848065376282 +v 1.212618350983 -17.442886352539 -2.664889335632 +v 2.246602058411 -17.929479598999 -2.095198631287 +v 3.084027290344 -18.317039489746 -1.116786003113 +v -2.266645431519 -16.436386108398 -0.708967208862 +v -1.943712234497 -16.502801895142 -1.356751441956 +v -1.585188865662 -16.610298156738 -1.807914257050 +v -1.055824398994 -16.802419662476 -2.235446929932 +v -0.438837707043 -17.080223083496 -2.547277450562 +v 0.359026193619 -17.464382171631 -2.529388427734 +v 1.171815633774 -17.804470062256 -2.368126869202 +v 2.048619985580 -18.195667266846 -1.880077362061 +v 2.875948905945 -18.704599380493 -1.069149494171 +v 3.667411327362 -18.776168823242 -1.429336547852 +v -2.338401794434 -18.873086929321 -0.727148056030 +v -2.592061996460 -21.089767456055 -0.753622174263 +v -2.024392366409 -18.849258422852 -1.354154586792 +v -1.610494375229 -18.889593124390 -1.855830192566 +v -1.042222261429 -18.863674163818 -2.268543243408 +v -0.346782684326 -18.851583480835 -2.548037528992 +v 0.419212996960 -18.871839523315 -2.608238220215 +v 1.281738996506 -18.898941040039 -2.387437820435 +v 2.163038253784 -19.151706695557 -1.901097297668 +v -2.231371879578 -20.981000900269 -1.536060810089 +v -1.676946163177 -20.800153732300 -2.163416862488 +v -1.044525623322 -20.475891113281 -2.532576560974 +v -0.320916175842 -20.161569595337 -2.740180015564 +v 0.516047239304 -19.855426788330 -2.717475891113 +v 1.433482646942 -19.483766555786 -2.413670539856 +v 2.808085441589 -18.863201141357 -2.690141916275 +v 1.824338436127 -19.167163848877 -3.251696586609 +v 0.742057919502 -19.763858795166 -3.588287830353 +v -0.419955492020 -20.262088775635 -3.602975130081 +v -1.324135065079 -20.722305297852 -3.222379446030 +v -2.034911394119 -21.034521102905 -2.721668481827 +v -2.805681943893 -21.396732330322 -1.890790224075 +v -3.059347152710 -21.510663986206 -0.920640349388 +v 3.705471038818 -22.281013488770 -1.337898015976 +v 3.806481361389 -23.987182617188 -1.336638927460 +v 3.015569210052 -22.328605651855 -2.398893356323 +v 2.085725784302 -22.512313842773 -3.042634010315 +v 0.947937130928 -22.602104187012 -3.430690765381 +v -0.306645154953 -22.735607147217 -3.444565773010 +v -1.223433971405 -22.780380249023 -3.149660110474 +v -2.032389879227 -22.797050476074 -2.640302658081 +v -2.777364730835 -22.817951202393 -1.776906013489 +v -3.159396171570 -22.792133331299 -0.957097232342 +v 3.082760334015 -24.007488250732 -2.425522804260 +v 2.116988182068 -24.021526336670 -3.046415328979 +v 0.968021392822 -23.951007843018 -3.413880348206 +v -0.295443534851 -23.862113952637 -3.409708976746 +v -1.218884944916 -23.734912872314 -3.123690605164 +v -2.006806850433 -23.645740509033 -2.610107421875 +v -2.734125614166 -23.485881805420 -1.765845775604 +v -3.118065834045 -23.454296112061 -0.959291458130 +v -1.511250734329 -23.954124450684 -3.703383684158 +v -2.490653514862 -23.852180480957 -3.145781040192 +v -3.283912181854 -23.702777862549 -2.192304611206 +v -3.760231733322 -23.594017028809 -1.049978494644 +v -0.256155967712 -24.106121063232 -4.098705768585 +v 1.178290367126 -24.283172607422 -3.961374282837 +v 2.325228214264 -24.317012786865 -3.564785003662 +v 3.411786556244 -24.262695312500 -2.751645088196 +v 4.164905071259 -24.260387420654 -1.468628406525 +v 4.441396713257 -24.802993774414 -1.496077775955 +v 3.517532348633 -24.576778411865 -2.863920211792 +v -3.954183340073 -26.228279113770 -1.055283069611 +v -3.430398941040 -26.266056060791 -2.208859443665 +v -2.535475730896 -26.285770416260 -3.120889663696 +v -1.518451690674 -26.339618682861 -3.673269271851 +v -0.271866798401 -26.329853057861 -3.972694396973 +v 1.107692956924 -26.394199371338 -3.862848281860 +v 2.297028541565 -26.414886474609 -3.437853813171 +v 3.393684387207 -26.444087982178 -2.668009757996 +v 4.238075256348 -26.474769592285 -1.413239002228 +v 4.445844650269 -28.638519287109 -1.374222517014 +v 3.605022430420 -28.637577056885 -2.771030426025 +v 2.467345476151 -28.698863983154 -3.704311370850 +v 1.203681707382 -28.668907165527 -4.236148834229 +v -0.341415166855 -28.663627624512 -4.339227676392 +v -1.750556230545 -28.677013397217 -4.018104553223 +v -2.866250038147 -28.698955535889 -3.451779365540 +v -3.912278890610 -28.666084289551 -2.471560478210 +v -4.542985916138 -28.663391113281 -1.117699623108 +v -4.163991928101 -29.050514221191 -1.056059360504 +v -3.608099460602 -29.041061401367 -2.285091876984 +v -2.635231494904 -29.059806823730 -3.139142274857 +v -1.587621331215 -29.042446136475 -3.704757690430 +v -0.298512935638 -29.046611785889 -3.983547687531 +v 1.024715900421 -29.052085876465 -3.893544197083 +v 2.234580755234 -29.068523406982 -3.355147838593 +v 3.304747104645 -29.065628051758 -2.444262027740 +v 4.029021263123 -29.068588256836 -1.172763586044 +v -0.177832722664 -25.404281616211 0.000000006983 +# 371 vertices + +vn -0.975493729115 0.057478353381 0.212387025356 +vn -0.916762351990 0.064524941146 0.394186943769 +vn -0.917706608772 0.015274418518 0.396965086460 +vn -0.978659570217 0.020863965154 0.204426497221 +vn -0.735916376114 0.062447369099 0.674186527729 +vn -0.739084899426 0.021687610075 0.673263072968 +vn -0.510357737541 0.064041249454 0.857574343681 +vn -0.510374128819 0.026313072070 0.859549820423 +vn -0.230905801058 0.052709609270 0.971547305584 +vn -0.236363217235 0.027446208522 0.971277058125 +vn 0.071044981480 0.035071950406 0.996856331825 +vn 0.050469979644 0.022730164230 0.998466908932 +vn 0.346984326839 0.009702500887 0.937820732594 +vn 0.320131570101 0.017513703555 0.947211205959 +vn 0.582765638828 -0.009176506661 0.812588453293 +vn 0.552988588810 0.008707927540 0.833143353462 +vn 0.798444926739 -0.026790641248 0.601471543312 +vn 0.785557091236 -0.012460940517 0.618663668633 +vn 0.944788992405 -0.030005520210 0.326302707195 +vn 0.943603575230 -0.022800223902 0.330291450024 +vn 0.987233102322 -0.031993392855 0.156035915017 +vn 0.984215319157 -0.024593539536 0.175258129835 +vn 0.617450356483 -0.757387220860 0.212413921952 +vn 0.670979142189 -0.741366147995 0.012775897980 +vn 0.478306978941 -0.719505250454 0.503522276878 +vn 0.371818184853 -0.431963592768 0.821680426598 +vn 0.038471382111 -0.462662547827 0.885699331760 +vn -0.181577116251 -0.447123050690 0.875848591328 +vn -0.403424888849 -0.417571395636 0.814175963402 +vn -0.597451627254 -0.368747860193 0.712093114853 +vn -0.774278461933 -0.370028644800 0.513392329216 +vn -0.911232531071 -0.284268349409 0.298071801662 +vn -0.954968750477 -0.250603795052 0.158847272396 +vn -0.910246193409 -0.331366389990 0.248290553689 +vn -0.939239680767 -0.315462857485 0.135321900249 +vn -0.815930545330 -0.391640126705 0.425294399261 +vn -0.674345791340 -0.414066672325 0.611397206783 +vn -0.512989819050 -0.410892665386 0.753663480282 +vn -0.325219988823 -0.417526721954 0.848471224308 +vn -0.058678787202 -0.432700783014 0.899625957012 +vn 0.322071433067 -0.723410546780 0.610693991184 +vn 0.202052980661 -0.946787059307 0.250537127256 +vn 0.504238903522 -0.832660317421 0.228953972459 +vn 0.554031670094 -0.825433492661 0.108205832541 +vn 0.216817930341 -0.390915334225 0.894525110722 +vn -0.036434799433 -0.412736386061 0.910121500492 +vn -0.265190094709 -0.405715197325 0.874682426453 +vn -0.530063390732 -0.418959468603 0.737228453159 +vn -0.733251154423 -0.416790902615 0.537241220474 +vn -0.866934776306 -0.428798109293 0.254079341888 +vn -0.883133709431 -0.460024029016 0.091938756406 +vn -0.827333033085 -0.554726719856 0.088308252394 +vn -0.822408497334 -0.505266189575 0.261438846588 +vn -0.695414662361 -0.484681785107 0.530548751354 +vn -0.520200252533 -0.480864107609 0.705805480480 +vn -0.243850320578 -0.481868118048 0.841629445553 +vn 0.012410854921 -0.484003454447 0.874978065491 +vn 0.239320635796 -0.462804943323 0.853543937206 +vn 0.428022146225 -0.387817502022 0.816329956055 +vn 0.690980434418 -0.448690533638 0.566765248775 +vn 0.674980878830 -0.378962904215 0.633078157902 +vn 0.403801560402 -0.416309684515 0.814635217190 +vn 0.136625245214 -0.443087190390 0.886006355286 +vn -0.094107151031 -0.433281749487 0.896331846714 +vn -0.327133208513 -0.431874126196 0.840516865253 +vn -0.545591354370 -0.445937275887 0.709556221962 +vn -0.709161221981 -0.483021527529 0.513595700264 +vn -0.826005518436 -0.491596668959 0.275767296553 +vn -0.865623414516 -0.483673363924 0.129445508122 +vn 0.867513656616 -0.347701221704 0.355702072382 +vn 0.932907044888 -0.315978556871 0.172748252749 +vn 0.890595853329 -0.286012977362 0.353603780270 +vn 0.952464163303 -0.248551517725 0.176165297627 +vn 0.647800981998 -0.372043937445 0.664783596992 +vn 0.340455591679 -0.431247800589 0.835532963276 +vn 0.112334191799 -0.442258834839 0.889824807644 +vn -0.125478029251 -0.434719026089 0.891781747341 +vn -0.375263065100 -0.435751110315 0.818106710911 +vn -0.577057480812 -0.484389483929 0.657549619675 +vn -0.714974105358 -0.495369166136 0.493377596140 +vn -0.796414613724 -0.535956978798 0.280131876469 +vn -0.839703857899 -0.528235793114 0.125953733921 +vn -0.956723511219 -0.033217493445 0.289096355438 +vn -0.991034567356 -0.079976968467 0.107024282217 +vn -0.964916527271 -0.252179920673 0.073084957898 +vn -0.918215394020 -0.344599872828 0.195272758603 +vn -0.832883596420 -0.350873023272 0.428010582924 +vn -0.725703358650 -0.318690180779 0.609746813774 +vn -0.534164547920 -0.314264416695 0.784796833992 +vn -0.301223188639 -0.231966301799 0.924908757210 +vn -0.016470190138 -0.245589897037 0.969233870506 +vn 0.217572584748 -0.289112716913 0.932242453098 +vn 0.491321593523 -0.317590385675 0.811011373997 +vn 0.867279708385 -0.200693413615 0.455574423075 +vn 0.948596894741 -0.223815247416 0.223764717579 +vn -0.969031989574 -0.217221692204 0.117438443005 +vn -0.914899408817 -0.290341109037 0.280465841293 +vn -0.818412899971 -0.363390833139 0.445137530565 +vn -0.718320429325 -0.377376019955 0.584468245506 +vn -0.586299240589 -0.365956753492 0.722723186016 +vn -0.368888169527 -0.306990832090 0.877313017845 +vn -0.023843236268 -0.289837121964 0.956778943539 +vn 0.192249536514 -0.325398206711 0.925827264786 +vn 0.412649720907 -0.354113578796 0.839240014553 +vn 0.658603966236 0.548687160015 0.514959394932 +vn 0.802130043507 0.544629514217 0.244879752398 +vn 0.706516623497 0.641124427319 0.299656003714 +vn 0.698417365551 0.699349343777 0.152064606547 +vn -0.985620141029 0.070949733257 0.153359174728 +vn -0.950865268707 0.075841583312 0.300172150135 +vn -0.851661503315 0.482436805964 0.204761877656 +vn -0.903218924999 0.402185648680 0.149807468057 +vn -0.835832536221 0.076426081359 0.543638706207 +vn -0.682728648186 0.081366501749 0.726127445698 +vn -0.485564857721 0.075964003801 0.870893955231 +vn -0.227231860161 0.063147842884 0.971791148186 +vn 0.095391005278 0.077563360333 0.992413461208 +vn 0.374192714691 0.097599864006 0.922200679779 +vn 0.091767333448 0.811368346214 0.577286899090 +vn -0.755354583263 0.551282882690 0.354297339916 +vn -0.657908022404 0.621904253960 0.424725949764 +vn -0.542888581753 0.623436629772 0.562671124935 +vn -0.388670384884 0.681165516376 0.620442450047 +vn -0.212551057339 0.740754365921 0.637263655663 +vn -0.097818829119 0.801174342632 0.590382218361 +vn 0.340802282095 0.724558234215 0.599056899548 +vn -0.014608492143 0.727040290833 0.686439335346 +vn -0.137472286820 0.627712726593 0.766210198402 +vn -0.358252227306 0.559839665890 0.747151196003 +vn -0.567005574703 0.497499197721 0.656505286694 +vn -0.686405122280 0.491832137108 0.535676360130 +vn -0.813086688519 0.422306269407 0.400683701038 +vn -0.879912734032 0.455106973648 0.136496454477 +vn -0.907300770283 0.411202222109 0.087852470577 +vn 0.926065802574 0.030513182282 0.376126408577 +vn 0.979514598846 0.040847603232 0.197186663747 +vn 0.786247491837 0.510872006416 0.347598433495 +vn 0.793079078197 0.587450981140 0.161018297076 +vn 0.719720661640 0.009199356660 0.694202780724 +vn 0.447063297033 -0.006059556268 0.894481778145 +vn 0.173116087914 -0.026287434623 0.984550535679 +vn -0.146829396486 -0.048163525760 0.987988591194 +vn -0.424814224243 -0.047755740583 0.904020071030 +vn -0.654720127583 -0.045216660947 0.754517734051 +vn -0.837157189846 -0.055180165917 0.544171810150 +vn -0.964793086052 -0.008124699816 0.262884676456 +vn -0.991916894913 0.015820620582 0.125898942351 +vn 0.591826438904 0.549268960953 0.589953422546 +vn 0.375269860029 0.544899940491 0.749837696552 +vn 0.160486623645 0.522465705872 0.837420821190 +vn -0.039344742894 0.593231558800 0.804069817066 +vn -0.279438793659 0.591278851032 0.756507337093 +vn -0.451918005943 0.612514317036 0.648533999920 +vn -0.643144071102 0.587591767311 0.491020977497 +vn -0.730032980442 0.634632468224 0.253561645746 +vn -0.753999114037 0.644815444946 0.125293359160 +vn -0.278518557549 0.556123554707 0.783041536808 +vn -0.484377115965 0.560933887959 0.671365797520 +vn -0.655155837536 0.587631583214 0.474826276302 +vn -0.742523074150 0.624367892742 0.242537081242 +vn -0.747266948223 0.651180803776 0.132497623563 +vn -0.029290724546 0.525027275085 0.850581228733 +vn 0.209130525589 0.461914449930 0.861916184425 +vn 0.389711350203 0.465986520052 0.794343531132 +vn 0.541758120060 0.674280464649 0.501840531826 +vn 0.705941498280 0.636136114597 0.311411976814 +vn 0.716926813126 0.675903975964 0.170791700482 +vn 0.915862739086 0.137073040009 0.377367764711 +vn 0.966447055340 0.147347599268 0.210401475430 +vn 0.692251265049 0.153983056545 0.705037117004 +vn -0.979516923428 0.152832046151 0.131106629968 +vn -0.948861658573 0.154488012195 0.275308936834 +vn -0.814021468163 0.136769905686 0.564502418041 +vn -0.600903034210 0.103233784437 0.792627453804 +vn -0.353384405375 0.084352619946 0.931667387486 +vn -0.084681026638 0.059006530792 0.994659423828 +vn 0.211098283529 0.057868782431 0.975750327110 +vn 0.463650494814 0.045502562076 0.884849011898 +vn 0.711988747120 0.008402888663 0.702140569687 +vn 0.925794661045 -0.015252191573 0.377719044685 +vn 0.982819557190 -0.026103748009 0.182713702321 +vn 0.880020976067 -0.347951263189 0.323253810406 +vn 0.928805351257 -0.338012069464 0.151883020997 +vn 0.713549554348 -0.331044226885 0.617459893227 +vn 0.482829242945 -0.348485052586 0.803389132023 +vn 0.224104985595 -0.293945550919 0.929178655148 +vn -0.077463641763 -0.279403954744 0.957043766975 +vn -0.327138900757 -0.281421989202 0.902098536491 +vn -0.557010948658 -0.299682646990 0.774550914764 +vn -0.784560203552 -0.252534270287 0.566296458244 +vn -0.929307162762 -0.260089248419 0.262186527252 +vn -0.963586509228 -0.231227353215 0.134294122458 +vn -0.092205643654 -0.995475232601 0.022959304973 +vn -0.136151209474 -0.990636944771 0.010066447780 +vn -0.108096189797 -0.990508377552 0.084902383387 +vn -0.036584779620 -0.998472094536 0.041413374245 +vn -0.016984101385 -0.995583832264 0.092327669263 +vn -0.010246737860 -0.994830489159 0.101031355560 +vn 0.006083220243 -0.993616759777 0.112644478679 +vn 0.026558313519 -0.997928857803 0.058588508517 +vn 0.082958430052 -0.994504272938 0.063868127763 +vn 0.103097997606 -0.993859231472 0.040181864053 +vn 0.081189706922 -0.996412754059 0.023872124031 +vn -0.975493729115 0.057478360832 -0.212387025356 +vn -0.978659570217 0.020863965154 -0.204426497221 +vn -0.917706608772 0.015274418518 -0.396965086460 +vn -0.916762351990 0.064524933696 -0.394186973572 +vn -0.739084899426 0.021687611938 -0.673263072968 +vn -0.735916316509 0.062447365373 -0.674186527729 +vn -0.510374188423 0.026313070208 -0.859549760818 +vn -0.510357737541 0.064041256905 -0.857574343681 +vn -0.236363202333 0.027446208522 -0.971277058125 +vn -0.230905815959 0.052709612995 -0.971547305584 +vn 0.050469968468 0.022730166093 -0.998466908932 +vn 0.071044981480 0.035071950406 -0.996856331825 +vn 0.320131570101 0.017513703555 -0.947211205959 +vn 0.346984326839 0.009702501819 -0.937820732594 +vn 0.552988588810 0.008707927540 -0.833143353462 +vn 0.582765638828 -0.009176506661 -0.812588453293 +vn 0.785557150841 -0.012460937724 -0.618663668633 +vn 0.798444926739 -0.026790641248 -0.601471543312 +vn 0.943603575230 -0.022800227627 -0.330291479826 +vn 0.944788992405 -0.030005522072 -0.326302736998 +vn 0.984215319157 -0.024593535811 -0.175258114934 +vn 0.987233102322 -0.031993389130 -0.156035915017 +vn 0.617450356483 -0.757387220860 -0.212413907051 +vn 0.670979142189 -0.741366147995 -0.012775897980 +vn 0.478306978941 -0.719505250454 -0.503522217274 +vn 0.371818274260 -0.431963533163 -0.821680366993 +vn 0.038471385837 -0.462662518024 -0.885699331760 +vn -0.181577146053 -0.447123110294 -0.875848531723 +vn -0.403424859047 -0.417571365833 -0.814175963402 +vn -0.597451627254 -0.368747830391 -0.712093114853 +vn -0.774278461933 -0.370028614998 -0.513392329216 +vn -0.911232531071 -0.284268379211 -0.298071801662 +vn -0.954968750477 -0.250603735447 -0.158847272396 +vn -0.910246193409 -0.331366389990 -0.248290568590 +vn -0.939239680767 -0.315462857485 -0.135321900249 +vn -0.815930545330 -0.391640126705 -0.425294429064 +vn -0.674345791340 -0.414066731930 -0.611397147179 +vn -0.512989759445 -0.410892635584 -0.753663539886 +vn -0.325219988823 -0.417526721954 -0.848471224308 +vn -0.058678787202 -0.432700783014 -0.899625957012 +vn 0.322071433067 -0.723410546780 -0.610693991184 +vn 0.202052995563 -0.946787059307 -0.250537127256 +vn 0.504238963127 -0.832660257816 -0.228953987360 +vn 0.554031610489 -0.825433492661 -0.108205817640 +vn 0.216817930341 -0.390915393829 -0.894525110722 +vn -0.036434799433 -0.412736356258 -0.910121560097 +vn -0.265190064907 -0.405715167522 -0.874682486057 +vn -0.530063390732 -0.418959498405 -0.737228453159 +vn -0.733251154423 -0.416790902615 -0.537241220474 +vn -0.866934776306 -0.428798109293 -0.254079371691 +vn -0.883133769035 -0.460023969412 -0.091938778758 +vn -0.822408497334 -0.505266189575 -0.261438846588 +vn -0.827333033085 -0.554726719856 -0.088308237493 +vn -0.695414721966 -0.484681725502 -0.530548810959 +vn -0.520200252533 -0.480864167213 -0.705805480480 +vn -0.243850320578 -0.481868118048 -0.841629445553 +vn 0.012410852127 -0.484003394842 -0.874978125095 +vn 0.239320650697 -0.462804973125 -0.853543877602 +vn 0.428022146225 -0.387817502022 -0.816329956055 +vn 0.690980374813 -0.448690533638 -0.566765308380 +vn 0.674980878830 -0.378962904215 -0.633078157902 +vn 0.403801530600 -0.416309773922 -0.814635217190 +vn 0.136625245214 -0.443087190390 -0.886006355286 +vn -0.094107151031 -0.433281719685 -0.896331846714 +vn -0.327133208513 -0.431874126196 -0.840516865253 +vn -0.545591294765 -0.445937275887 -0.709556281567 +vn -0.709161221981 -0.483021527529 -0.513595700264 +vn -0.826005578041 -0.491596579552 -0.275767296553 +vn -0.865623474121 -0.483673334122 -0.129445508122 +vn 0.867513656616 -0.347701191902 -0.355702072382 +vn 0.932907044888 -0.315978586674 -0.172748222947 +vn 0.952464163303 -0.248551517725 -0.176165297627 +vn 0.890595853329 -0.286012917757 -0.353603720665 +vn 0.647800922394 -0.372043937445 -0.664783596992 +vn 0.340455591679 -0.431247800589 -0.835532963276 +vn 0.112334191799 -0.442258894444 -0.889824748039 +vn -0.125478044152 -0.434719026089 -0.891781747341 +vn -0.375263094902 -0.435751080513 -0.818106710911 +vn -0.577057480812 -0.484389483929 -0.657549619675 +vn -0.714974105358 -0.495369166136 -0.493377566338 +vn -0.796414613724 -0.535956978798 -0.280131876469 +vn -0.839703857899 -0.528235852718 -0.125953719020 +vn -0.956723511219 -0.033217500895 -0.289096385241 +vn -0.991034567356 -0.079976968467 -0.107024282217 +vn -0.964916527271 -0.252179920673 -0.073084957898 +vn -0.918215394020 -0.344599932432 -0.195272728801 +vn -0.832883596420 -0.350873053074 -0.428010582924 +vn -0.725703358650 -0.318690180779 -0.609746813774 +vn -0.534164547920 -0.314264416695 -0.784796833992 +vn -0.301223158836 -0.231966286898 -0.924908757210 +vn -0.016470193863 -0.245589867234 -0.969233870506 +vn 0.217572569847 -0.289112716913 -0.932242453098 +vn 0.491321623325 -0.317590445280 -0.811011314392 +vn 0.867279708385 -0.200693398714 -0.455574423075 +vn 0.948596894741 -0.223815321922 -0.223764717579 +vn -0.969031989574 -0.217221647501 -0.117438443005 +vn -0.914899408817 -0.290341138840 -0.280465900898 +vn -0.818412899971 -0.363390862942 -0.445137500763 +vn -0.718320488930 -0.377375960350 -0.584468185902 +vn -0.586299240589 -0.365956753492 -0.722723186016 +vn -0.368888169527 -0.306990832090 -0.877313017845 +vn -0.023843236268 -0.289837121964 -0.956778943539 +vn 0.192249596119 -0.325398176908 -0.925827264786 +vn 0.412649750710 -0.354113489389 -0.839240014553 +vn 0.658603906631 0.548687338829 -0.514959275723 +vn 0.802130043507 0.544629514217 -0.244879707694 +vn 0.706516683102 0.641124367714 -0.299656003714 +vn 0.698417365551 0.699349343777 -0.152064591646 +vn -0.950865268707 0.075841590762 -0.300172150135 +vn -0.985620141029 0.070949733257 -0.153359159827 +vn -0.851661503315 0.482436835766 -0.204761862755 +vn -0.903218924999 0.402185648680 -0.149807468057 +vn -0.835832536221 0.076426088810 -0.543638706207 +vn -0.682728648186 0.081366494298 -0.726127445698 +vn -0.485564887524 0.075964011252 -0.870893895626 +vn -0.227231860161 0.063147842884 -0.971791148186 +vn 0.095391027629 0.077563367784 -0.992413461208 +vn 0.374192714691 0.097599849105 -0.922200679779 +vn 0.091767288744 0.811368346214 -0.577286899090 +vn -0.755354642868 0.551282882690 -0.354297310114 +vn -0.657907962799 0.621904253960 -0.424725979567 +vn -0.542888522148 0.623436629772 -0.562671124935 +vn -0.388670414686 0.681165516376 -0.620442509651 +vn -0.212551042438 0.740754365921 -0.637263655663 +vn -0.097818829119 0.801174402237 -0.590382158756 +vn 0.340802222490 0.724558353424 -0.599056839943 +vn -0.014608507976 0.727040290833 -0.686439335346 +vn -0.137472286820 0.627712726593 -0.766210198402 +vn -0.358252227306 0.559839665890 -0.747151196003 +vn -0.567005574703 0.497499197721 -0.656505346298 +vn -0.686405122280 0.491832137108 -0.535676360130 +vn -0.813086688519 0.422306269407 -0.400683701038 +vn -0.879912734032 0.455106914043 -0.136496454477 +vn -0.907300770283 0.411202222109 -0.087852463126 +vn 0.926065802574 0.030513184145 -0.376126438379 +vn 0.979514598846 0.040847603232 -0.197186708450 +vn 0.786247491837 0.510872006416 -0.347598433495 +vn 0.793079078197 0.587450981140 -0.161018297076 +vn 0.719720661640 0.009199356660 -0.694202780724 +vn 0.447063326836 -0.006059561390 -0.894481778145 +vn 0.173116073012 -0.026287434623 -0.984550535679 +vn -0.146829396486 -0.048163525760 -0.987988591194 +vn -0.424814224243 -0.047755733132 -0.904020071030 +vn -0.654720187187 -0.045216668397 -0.754517674446 +vn -0.837157249451 -0.055180162191 -0.544171750546 +vn -0.964793086052 -0.008124701679 -0.262884676456 +vn -0.991916894913 0.015820620582 -0.125898957253 +vn 0.591826438904 0.549268960953 -0.589953422546 +vn 0.375269860029 0.544899940491 -0.749837696552 +vn 0.160486623645 0.522465705872 -0.837420821190 +vn -0.039344716817 0.593231618404 -0.804069817066 +vn -0.279438793659 0.591278851032 -0.756507337093 +vn -0.451918035746 0.612514197826 -0.648534059525 +vn -0.643144071102 0.587591767311 -0.491021007299 +vn -0.730032920837 0.634632468224 -0.253561615944 +vn -0.753999114037 0.644815444946 -0.125293359160 +vn -0.278518557549 0.556123614311 -0.783041477203 +vn -0.484377086163 0.560933887959 -0.671365737915 +vn -0.655155837536 0.587631583214 -0.474826246500 +vn -0.742523074150 0.624367833138 -0.242537111044 +vn -0.747266948223 0.651180863380 -0.132497608662 +vn -0.029290720820 0.525027275085 -0.850581228733 +vn 0.209130510688 0.461914479733 -0.861916124821 +vn 0.389711320400 0.465986549854 -0.794343531132 +vn 0.541758120060 0.674280464649 -0.501840531826 +vn 0.705941557884 0.636136054993 -0.311411976814 +vn 0.716926813126 0.675903975964 -0.170791700482 +vn 0.915862739086 0.137073025107 -0.377367794514 +vn 0.966447055340 0.147347599268 -0.210401475430 +vn 0.692251324654 0.153983041644 -0.705037117004 +vn -0.979516923428 0.152832031250 -0.131106629968 +vn -0.948861658573 0.154488012195 -0.275308936834 +vn -0.814021527767 0.136769905686 -0.564502418041 +vn -0.600903034210 0.103233784437 -0.792627453804 +vn -0.353384435177 0.084352627397 -0.931667387486 +vn -0.084681034088 0.059006527066 -0.994659423828 +vn 0.211098283529 0.057868782431 -0.975750327110 +vn 0.463650435209 0.045502554625 -0.884849011898 +vn 0.711988747120 0.008402892388 -0.702140629292 +vn 0.925794601440 -0.015252197161 -0.377719044685 +vn 0.982819557190 -0.026103742421 -0.182713687420 +vn 0.880020976067 -0.347951173782 -0.323253810406 +vn 0.928805351257 -0.338012069464 -0.151883020997 +vn 0.713549613953 -0.331044197083 -0.617459893227 +vn 0.482829242945 -0.348485082388 -0.803389132023 +vn 0.224104955792 -0.293945550919 -0.929178655148 +vn -0.077463641763 -0.279403954744 -0.957043766975 +vn -0.327138900757 -0.281421989202 -0.902098536491 +vn -0.557010889053 -0.299682646990 -0.774550974369 +vn -0.784560203552 -0.252534240484 -0.566296517849 +vn -0.929307162762 -0.260089278221 -0.262186497450 +vn -0.963586509228 -0.231227368116 -0.134294122458 +vn -0.092205628753 -0.995475232601 -0.022959304973 +vn -0.136151209474 -0.990636944771 -0.010066433810 +vn -0.108096241951 -0.990508317947 -0.084902413189 +vn -0.036584779620 -0.998472094536 -0.041413363069 +vn -0.016984088346 -0.995583832264 -0.092327669263 +vn -0.010246737860 -0.994830489159 -0.101031407714 +vn 0.006083220243 -0.993616759777 -0.112644478679 +vn 0.026558313519 -0.997928857803 -0.058588445187 +vn 0.082958407700 -0.994504272938 -0.063868105412 +vn 0.103097997606 -0.993859231472 -0.040181882679 +vn 0.081189788878 -0.996412754059 -0.023872131482 +vn 0.009849418886 -0.858169794083 -0.513271450996 +vn 0.009849418886 -0.858169794083 0.513271450996 +# 408 vertex normals + +vt 0.650896251202 0.926247179508 0.000000000000 +vt 0.689399778843 0.928899168968 0.000000000000 +vt 0.687250375748 0.976611852646 0.000000000000 +vt 0.650896251202 0.976611852646 0.000000000000 +vt 0.722470164299 0.928918004036 0.000000000000 +vt 0.718933343887 0.976611852646 0.000000000000 +vt 0.752949655056 0.927653253078 0.000000000000 +vt 0.749320626259 0.976611852646 0.000000000000 +vt 0.784538626671 0.927034020424 0.000000000000 +vt 0.782875776291 0.976611852646 0.000000000000 +vt 0.816867172718 0.923082411289 0.000000000000 +vt 0.813437283039 0.976611852646 0.000000000000 +vt 0.851932406425 0.920409917831 0.000000000000 +vt 0.848161816597 0.976611852646 0.000000000000 +vt 0.884342074394 0.918765306473 0.000000000000 +vt 0.881519973278 0.976611852646 0.000000000000 +vt 0.914992511272 0.918685257435 0.000000000000 +vt 0.913845121861 0.976611852646 0.000000000000 +vt 0.945065557957 0.919798552990 0.000000000000 +vt 0.944498896599 0.976611852646 0.000000000000 +vt 0.980499505997 0.923231065273 0.000000000000 +vt 0.980499505997 0.976611852646 0.000000000000 +vt 0.945959329605 0.838070452213 0.000000000000 +vt 0.980499505997 0.842389345169 0.000000000000 +vt 0.907030403614 0.835855841637 0.000000000000 +vt 0.868796706200 0.843633770943 0.000000000000 +vt 0.833643198013 0.855009257793 0.000000000000 +vt 0.810020804405 0.865345239639 0.000000000000 +vt 0.782033443451 0.878039121628 0.000000000000 +vt 0.753356635571 0.890400409698 0.000000000000 +vt 0.720487415791 0.898832023144 0.000000000000 +vt 0.688241422176 0.906202137470 0.000000000000 +vt 0.650896251202 0.906045138836 0.000000000000 +vt 0.683421909809 0.883529245853 0.000000000000 +vt 0.650896251202 0.881305694580 0.000000000000 +vt 0.710001945496 0.881747424603 0.000000000000 +vt 0.744052052498 0.874744176865 0.000000000000 +vt 0.774642169476 0.864906072617 0.000000000000 +vt 0.803228199482 0.855347812176 0.000000000000 +vt 0.830246090889 0.846940577030 0.000000000000 +vt 0.869172275066 0.837298214436 0.000000000000 +vt 0.902942061424 0.831081807613 0.000000000000 +vt 0.943713247776 0.828192710876 0.000000000000 +vt 0.980499505997 0.827848076820 0.000000000000 +vt 0.824962615967 0.830206573009 0.000000000000 +vt 0.800300776958 0.826260268688 0.000000000000 +vt 0.774425983429 0.823036551476 0.000000000000 +vt 0.742071688175 0.819281816483 0.000000000000 +vt 0.710662662983 0.816901564598 0.000000000000 +vt 0.679895281792 0.815129518509 0.000000000000 +vt 0.650896251202 0.815234065056 0.000000000000 +vt 0.650896251202 0.801318943501 0.000000000000 +vt 0.681663691998 0.802244007587 0.000000000000 +vt 0.712873518467 0.804044246674 0.000000000000 +vt 0.740160226822 0.805792987347 0.000000000000 +vt 0.774019300938 0.809294521809 0.000000000000 +vt 0.803271293640 0.813039362431 0.000000000000 +vt 0.829933524132 0.816619515419 0.000000000000 +vt 0.863993585110 0.819843173027 0.000000000000 +vt 0.902408063412 0.824102103710 0.000000000000 +vt 0.902040302753 0.774073243141 0.000000000000 +vt 0.864159166813 0.775331377983 0.000000000000 +vt 0.830585122108 0.774864196777 0.000000000000 +vt 0.802740275860 0.774164259434 0.000000000000 +vt 0.772784471512 0.773393690586 0.000000000000 +vt 0.741867899895 0.772449195385 0.000000000000 +vt 0.712769687176 0.769758641720 0.000000000000 +vt 0.682597875595 0.767790794373 0.000000000000 +vt 0.650896251202 0.766486942768 0.000000000000 +vt 0.942026078701 0.772529661655 0.000000000000 +vt 0.980499505997 0.774159431458 0.000000000000 +vt 0.943487226963 0.769435644150 0.000000000000 +vt 0.980499505997 0.768197000027 0.000000000000 +vt 0.902180135250 0.768745899200 0.000000000000 +vt 0.863354206085 0.767548382282 0.000000000000 +vt 0.829666256905 0.766398370266 0.000000000000 +vt 0.800029754639 0.765437304974 0.000000000000 +vt 0.771094679832 0.764104962349 0.000000000000 +vt 0.738547325134 0.763125002384 0.000000000000 +vt 0.710786461830 0.760859310627 0.000000000000 +vt 0.682829618454 0.759773731232 0.000000000000 +vt 0.650896251202 0.756888091564 0.000000000000 +vt 0.680278778076 0.736037433147 0.000000000000 +vt 0.650896251202 0.733895063400 0.000000000000 +vt 0.650896251202 0.724238574505 0.000000000000 +vt 0.677867829800 0.725300788879 0.000000000000 +vt 0.705945611000 0.723755180836 0.000000000000 +vt 0.733694136143 0.722938179970 0.000000000000 +vt 0.766331791878 0.719325780869 0.000000000000 +vt 0.793136060238 0.715943336487 0.000000000000 +vt 0.823732495308 0.709170103073 0.000000000000 +vt 0.854579925537 0.700317502022 0.000000000000 +vt 0.893843650818 0.689643979073 0.000000000000 +vt 0.937786757946 0.682088017464 0.000000000000 +vt 0.980499505997 0.685281097889 0.000000000000 +vt 0.650896251202 0.719618201256 0.000000000000 +vt 0.679301142693 0.722314238548 0.000000000000 +vt 0.708353221416 0.720817506313 0.000000000000 +vt 0.734437346458 0.718749463558 0.000000000000 +vt 0.763384640217 0.715330719948 0.000000000000 +vt 0.792417407036 0.710312366486 0.000000000000 +vt 0.823463141918 0.701643824577 0.000000000000 +vt 0.855004191399 0.693989813328 0.000000000000 +vt 0.890826821327 0.685236930847 0.000000000000 +vt 0.931491672993 0.677475631237 0.000000000000 +vt 0.980499505997 0.678362250328 0.000000000000 +vt 0.939303219318 0.660778343678 0.000000000000 +vt 0.980499505997 0.663210690022 0.000000000000 +vt 0.650896251202 0.667458951473 0.000000000000 +vt 0.679825246334 0.666866719723 0.000000000000 +vt 0.679557561874 0.616748571396 0.000000000000 +vt 0.650896251202 0.616604983807 0.000000000000 +vt 0.707615911961 0.667745113373 0.000000000000 +vt 0.734530091286 0.667321562767 0.000000000000 +vt 0.762826442719 0.669129312038 0.000000000000 +vt 0.792458057404 0.670977830887 0.000000000000 +vt 0.822723567486 0.671941518784 0.000000000000 +vt 0.856029689312 0.672436594963 0.000000000000 +vt 0.890771329403 0.671998083591 0.000000000000 +vt 0.710386514664 0.619365036488 0.000000000000 +vt 0.740454912186 0.624485015869 0.000000000000 +vt 0.767717361450 0.633432567120 0.000000000000 +vt 0.795475721359 0.643021047115 0.000000000000 +vt 0.825305163860 0.652821660042 0.000000000000 +vt 0.858598768711 0.663975536823 0.000000000000 +vt 0.898438632488 0.654163002968 0.000000000000 +vt 0.867399930954 0.648529708385 0.000000000000 +vt 0.834950089455 0.637630581856 0.000000000000 +vt 0.801816344261 0.627681672573 0.000000000000 +vt 0.772288084030 0.618972003460 0.000000000000 +vt 0.745190858841 0.612647175789 0.000000000000 +vt 0.711424946785 0.604982912540 0.000000000000 +vt 0.680571436882 0.605296909809 0.000000000000 +vt 0.650896251202 0.602854490280 0.000000000000 +vt 0.941386938095 0.577509462833 0.000000000000 +vt 0.980499505997 0.584609627724 0.000000000000 +vt 0.942500948906 0.538961589336 0.000000000000 +vt 0.980499505997 0.544192433357 0.000000000000 +vt 0.905607700348 0.574744820595 0.000000000000 +vt 0.872769773006 0.570942819118 0.000000000000 +vt 0.838069200516 0.571153998375 0.000000000000 +vt 0.801740348339 0.570673108101 0.000000000000 +vt 0.772517025471 0.571685552597 0.000000000000 +vt 0.743216454983 0.573079049587 0.000000000000 +vt 0.708860456944 0.574326634407 0.000000000000 +vt 0.680483996868 0.577215909958 0.000000000000 +vt 0.650896251202 0.579746603966 0.000000000000 +vt 0.905021011829 0.537763357162 0.000000000000 +vt 0.871518313885 0.539116322994 0.000000000000 +vt 0.836739420891 0.542557060719 0.000000000000 +vt 0.800517737865 0.547761261463 0.000000000000 +vt 0.771323680878 0.552555441856 0.000000000000 +vt 0.742603838444 0.556569635868 0.000000000000 +vt 0.709057509899 0.562080621719 0.000000000000 +vt 0.680733740330 0.564698398113 0.000000000000 +vt 0.650896251202 0.566795706749 0.000000000000 +vt 0.769409835339 0.540163516998 0.000000000000 +vt 0.740980803967 0.542943179607 0.000000000000 +vt 0.709767878056 0.548404157162 0.000000000000 +vt 0.678229928017 0.552706003189 0.000000000000 +vt 0.650896251202 0.553330600262 0.000000000000 +vt 0.802337944508 0.535184562206 0.000000000000 +vt 0.838705182076 0.530851066113 0.000000000000 +vt 0.869538784027 0.529641747475 0.000000000000 +vt 0.904322981834 0.529133737087 0.000000000000 +vt 0.942465126514 0.530669510365 0.000000000000 +vt 0.980499505997 0.534044921398 0.000000000000 +vt 0.944191098213 0.519002854824 0.000000000000 +vt 0.980499505997 0.519517481327 0.000000000000 +vt 0.903806209564 0.524747908115 0.000000000000 +vt 0.650896251202 0.491670459509 0.000000000000 +vt 0.677925646305 0.490941911936 0.000000000000 +vt 0.709262192249 0.488070189953 0.000000000000 +vt 0.741303741932 0.486515998840 0.000000000000 +vt 0.770730733871 0.484549850225 0.000000000000 +vt 0.803339898586 0.484348684549 0.000000000000 +vt 0.838759362698 0.482716381550 0.000000000000 +vt 0.871207833290 0.482451528311 0.000000000000 +vt 0.905586957932 0.482096195221 0.000000000000 +vt 0.943979084492 0.480740934610 0.000000000000 +vt 0.980499505997 0.479600697756 0.000000000000 +vt 0.947183907032 0.431160837412 0.000000000000 +vt 0.980499505997 0.430398255587 0.000000000000 +vt 0.908277273178 0.431576132774 0.000000000000 +vt 0.873508453369 0.429759144783 0.000000000000 +vt 0.841122984886 0.429661989212 0.000000000000 +vt 0.804344058037 0.429533898830 0.000000000000 +vt 0.770272731781 0.429322600365 0.000000000000 +vt 0.741368710995 0.429396599531 0.000000000000 +vt 0.708520650864 0.430131375790 0.000000000000 +vt 0.674821436405 0.432051211596 0.000000000000 +vt 0.650896251202 0.432833462954 0.000000000000 +vt 0.676288187504 0.420998394489 0.000000000000 +vt 0.650896251202 0.420998394489 0.000000000000 +vt 0.709329128265 0.420998394489 0.000000000000 +vt 0.741626501083 0.420998394489 0.000000000000 +vt 0.771814703941 0.420998394489 0.000000000000 +vt 0.805171966553 0.420998394489 0.000000000000 +vt 0.839216291904 0.420998394489 0.000000000000 +vt 0.873587191105 0.420998394489 0.000000000000 +vt 0.910072505474 0.420998394489 0.000000000000 +vt 0.948233306408 0.420998394489 0.000000000000 +vt 0.980499505997 0.420998394489 0.000000000000 +vt 0.809703230858 0.420998513699 0.000000000000 +# 204 texture coords + +g Grip001 +s 2 +f 1/1/1 2/2/2 3/3/3 +f 3/3/3 4/4/4 1/1/1 +f 2/2/2 5/5/5 6/6/6 +f 6/6/6 3/3/3 2/2/2 +f 5/5/5 7/7/7 8/8/8 +f 8/8/8 6/6/6 5/5/5 +f 7/7/7 9/9/9 10/10/10 +f 10/10/10 8/8/8 7/7/7 +f 9/9/9 11/11/11 12/12/12 +f 12/12/12 10/10/10 9/9/9 +f 11/11/11 13/13/13 14/14/14 +f 14/14/14 12/12/12 11/11/11 +f 13/13/13 15/15/15 16/16/16 +f 16/16/16 14/14/14 13/13/13 +f 15/15/15 17/17/17 18/18/18 +f 18/18/18 16/16/16 15/15/15 +f 17/17/17 19/19/19 20/20/20 +f 20/20/20 18/18/18 17/17/17 +f 19/19/19 21/21/21 22/22/22 +f 22/22/22 20/20/20 19/19/19 +f 23/23/23 24/24/24 21/21/21 +f 21/21/21 19/19/19 23/23/23 +f 25/25/25 23/23/23 19/19/19 +f 19/19/19 17/17/17 25/25/25 +f 26/26/26 25/25/25 17/17/17 +f 17/17/17 15/15/15 26/26/26 +f 27/27/27 26/26/26 15/15/15 +f 15/15/15 13/13/13 27/27/27 +f 28/28/28 27/27/27 13/13/13 +f 13/13/13 11/11/11 28/28/28 +f 29/29/29 28/28/28 11/11/11 +f 11/11/11 9/9/9 29/29/29 +f 30/30/30 29/29/29 9/9/9 +f 9/9/9 7/7/7 30/30/30 +f 31/31/31 30/30/30 7/7/7 +f 7/7/7 5/5/5 31/31/31 +f 32/32/32 31/31/31 5/5/5 +f 5/5/5 2/2/2 32/32/32 +f 33/33/33 32/32/32 2/2/2 +f 2/2/2 1/1/1 33/33/33 +f 34/34/34 32/32/32 33/33/33 +f 33/33/33 35/35/35 34/34/34 +f 32/32/32 34/34/34 36/36/36 +f 36/36/36 31/31/31 32/32/32 +f 31/31/31 36/36/36 37/37/37 +f 37/37/37 30/30/30 31/31/31 +f 30/30/30 37/37/37 38/38/38 +f 38/38/38 29/29/29 30/30/30 +f 29/29/29 38/38/38 39/39/39 +f 39/39/39 28/28/28 29/29/29 +f 28/28/28 39/39/39 40/40/40 +f 40/40/40 27/27/27 28/28/28 +f 27/27/27 40/40/40 41/41/41 +f 41/41/41 26/26/26 27/27/27 +f 26/26/26 41/41/41 42/42/42 +f 42/42/42 25/25/25 26/26/26 +f 25/25/25 42/42/42 43/43/43 +f 43/43/43 23/23/23 25/25/25 +f 23/23/23 43/43/43 44/44/44 +f 44/44/44 24/24/24 23/23/23 +f 45/45/45 40/40/40 39/39/39 +f 39/39/39 46/46/46 45/45/45 +f 41/41/41 40/40/40 45/45/45 +f 47/47/47 46/46/46 39/39/39 +f 39/39/39 38/38/38 47/47/47 +f 48/48/48 47/47/47 38/38/38 +f 38/38/38 37/37/37 48/48/48 +f 36/36/36 49/49/49 48/48/48 +f 48/48/48 37/37/37 36/36/36 +f 50/50/50 49/49/49 36/36/36 +f 36/36/36 34/34/34 50/50/50 +f 51/51/51 50/50/50 34/34/34 +f 34/34/34 35/35/35 51/51/51 +f 50/50/50 51/51/51 52/52/52 +f 52/52/52 53/53/53 50/50/50 +f 50/50/50 53/53/53 54/54/54 +f 54/54/54 49/49/49 50/50/50 +f 49/49/49 54/54/54 55/55/55 +f 55/55/55 48/48/48 49/49/49 +f 48/48/48 55/55/55 56/56/56 +f 56/56/56 47/47/47 48/48/48 +f 47/47/47 56/56/56 57/57/57 +f 57/57/57 46/46/46 47/47/47 +f 46/46/46 57/57/57 58/58/58 +f 58/58/58 45/45/45 46/46/46 +f 58/58/58 59/59/59 41/41/41 +f 41/41/41 45/45/45 58/58/58 +f 41/41/41 59/59/59 60/60/60 +f 60/60/60 42/42/42 41/41/41 +f 43/43/43 42/42/42 60/60/60 +f 61/61/61 60/60/60 59/59/59 +f 59/59/59 62/62/62 61/61/61 +f 63/63/63 62/62/62 59/59/59 +f 59/59/59 58/58/58 63/63/63 +f 64/64/64 63/63/63 58/58/58 +f 58/58/58 57/57/57 64/64/64 +f 65/65/65 64/64/64 57/57/57 +f 57/57/57 56/56/56 65/65/65 +f 65/65/65 56/56/56 55/55/55 +f 55/55/55 66/66/66 65/65/65 +f 54/54/54 67/67/67 66/66/66 +f 66/66/66 55/55/55 54/54/54 +f 68/68/68 67/67/67 54/54/54 +f 54/54/54 53/53/53 68/68/68 +f 69/69/69 68/68/68 53/53/53 +f 53/53/53 52/52/52 69/69/69 +f 60/60/60 61/61/61 70/70/70 +f 70/70/70 43/43/43 60/60/60 +f 43/43/43 70/70/70 71/71/71 +f 71/71/71 44/44/44 43/43/43 +f 71/71/71 70/70/70 72/72/72 +f 72/72/72 73/73/73 71/71/71 +f 74/74/74 72/72/72 70/70/70 +f 70/70/70 61/61/61 74/74/74 +f 74/74/74 61/61/61 62/62/62 +f 62/62/62 75/75/75 74/74/74 +f 76/76/76 75/75/75 62/62/62 +f 62/62/62 63/63/63 76/76/76 +f 64/64/64 77/77/77 76/76/76 +f 76/76/76 63/63/63 64/64/64 +f 78/78/78 77/77/77 64/64/64 +f 64/64/64 65/65/65 78/78/78 +f 79/79/79 78/78/78 65/65/65 +f 65/65/65 66/66/66 79/79/79 +f 80/80/80 79/79/79 66/66/66 +f 66/66/66 67/67/67 80/80/80 +f 81/81/81 80/80/80 67/67/67 +f 67/67/67 68/68/68 81/81/81 +f 82/82/82 81/81/81 68/68/68 +f 68/68/68 69/69/69 82/82/82 +f 83/83/83 81/81/81 82/82/82 +f 82/82/82 84/84/84 83/83/83 +f 85/85/85 86/86/86 83/83/83 +f 83/83/83 84/84/84 85/85/85 +f 87/87/87 83/83/83 86/86/86 +f 83/83/83 87/87/87 80/80/80 +f 80/80/80 81/81/81 83/83/83 +f 80/80/80 87/87/87 88/88/88 +f 88/88/88 79/79/79 80/80/80 +f 79/79/79 88/88/88 89/89/89 +f 89/89/89 78/78/78 79/79/79 +f 78/78/78 89/89/89 90/90/90 +f 90/90/90 77/77/77 78/78/78 +f 77/77/77 90/90/90 91/91/91 +f 91/91/91 76/76/76 77/77/77 +f 92/92/92 75/75/75 76/76/76 +f 76/76/76 91/91/91 92/92/92 +f 75/75/75 92/92/92 93/93/93 +f 93/93/93 74/74/74 75/75/75 +f 74/74/74 93/93/93 94/94/94 +f 94/94/94 72/72/72 74/74/74 +f 72/72/72 94/94/94 95/95/95 +f 95/95/95 73/73/73 72/72/72 +f 96/96/96 97/97/97 86/86/86 +f 86/86/86 85/85/85 96/96/96 +f 98/98/98 87/87/87 86/86/86 +f 86/86/86 97/97/97 98/98/98 +f 87/87/87 98/98/98 99/99/99 +f 99/99/99 88/88/88 87/87/87 +f 88/88/88 99/99/99 100/100/100 +f 100/100/100 89/89/89 88/88/88 +f 100/100/100 101/101/101 90/90/90 +f 90/90/90 89/89/89 100/100/100 +f 101/101/101 102/102/102 91/91/91 +f 91/91/91 90/90/90 101/101/101 +f 91/91/91 102/102/102 103/103/103 +f 103/103/103 92/92/92 91/91/91 +f 92/92/92 103/103/103 104/104/104 +f 104/104/104 93/93/93 92/92/92 +f 93/93/93 104/104/104 105/105/105 +f 105/105/105 94/94/94 93/93/93 +f 94/94/94 105/105/105 106/106/106 +f 106/106/106 95/95/95 94/94/94 +f 107/107/107 108/108/108 106/106/106 +f 106/106/106 105/105/105 107/107/107 +f 97/97/97 96/96/96 109/109/109 +f 109/109/109 110/110/110 97/97/97 +f 111/111/111 110/110/110 109/109/109 +f 109/109/109 112/112/112 111/111/111 +f 97/97/97 110/110/110 113/113/113 +f 113/113/113 98/98/98 97/97/97 +f 98/98/98 113/113/113 114/114/114 +f 114/114/114 99/99/99 98/98/98 +f 99/99/99 114/114/114 115/115/115 +f 115/115/115 100/100/100 99/99/99 +f 100/100/100 115/115/115 116/116/116 +f 116/116/116 101/101/101 100/100/100 +f 101/101/101 116/116/116 117/117/117 +f 117/117/117 102/102/102 101/101/101 +f 102/102/102 117/117/117 118/118/118 +f 118/118/118 103/103/103 102/102/102 +f 104/104/104 118/118/118 119/119/119 +f 105/105/105 104/104/104 119/119/119 +f 120/120/120 113/113/113 110/110/110 +f 110/110/110 111/111/111 120/120/120 +f 121/121/121 114/114/114 113/113/113 +f 113/113/113 120/120/120 121/121/121 +f 114/114/114 121/121/121 122/122/122 +f 122/122/122 115/115/115 114/114/114 +f 115/115/115 122/122/122 123/123/123 +f 123/123/123 116/116/116 115/115/115 +f 124/124/124 117/117/117 116/116/116 +f 116/116/116 123/123/123 124/124/124 +f 117/117/117 124/124/124 125/125/125 +f 125/125/125 118/118/118 117/117/117 +f 119/119/119 118/118/118 125/125/125 +f 126/126/126 105/105/105 119/119/119 +f 127/127/127 126/126/126 119/119/119 +f 119/119/119 125/125/125 127/127/127 +f 128/128/128 127/127/127 125/125/125 +f 125/125/125 124/124/124 128/128/128 +f 129/129/129 128/128/128 124/124/124 +f 124/124/124 123/123/123 129/129/129 +f 130/130/130 129/129/129 123/123/123 +f 123/123/123 122/122/122 130/130/130 +f 131/131/131 130/130/130 122/122/122 +f 122/122/122 121/121/121 131/131/131 +f 132/132/132 131/131/131 121/121/121 +f 121/121/121 120/120/120 132/132/132 +f 133/133/133 132/132/132 120/120/120 +f 120/120/120 111/111/111 133/133/133 +f 134/134/134 133/133/133 111/111/111 +f 111/111/111 112/112/112 134/134/134 +f 135/135/135 136/136/136 108/108/108 +f 108/108/108 107/107/107 135/135/135 +f 137/137/137 138/138/138 136/136/136 +f 136/136/136 135/135/135 137/137/137 +f 139/139/139 135/135/135 107/107/107 +f 107/107/107 126/126/126 139/139/139 +f 140/140/140 139/139/139 126/126/126 +f 126/126/126 127/127/127 140/140/140 +f 141/141/141 140/140/140 127/127/127 +f 127/127/127 128/128/128 141/141/141 +f 129/129/129 142/142/142 141/141/141 +f 141/141/141 128/128/128 129/129/129 +f 143/143/143 142/142/142 129/129/129 +f 129/129/129 130/130/130 143/143/143 +f 144/144/144 143/143/143 130/130/130 +f 130/130/130 131/131/131 144/144/144 +f 145/145/145 144/144/144 131/131/131 +f 131/131/131 132/132/132 145/145/145 +f 146/146/146 145/145/145 132/132/132 +f 132/132/132 133/133/133 146/146/146 +f 147/147/147 146/146/146 133/133/133 +f 133/133/133 134/134/134 147/147/147 +f 135/135/135 139/139/139 148/148/148 +f 148/148/148 137/137/137 135/135/135 +f 140/140/140 149/149/149 148/148/148 +f 148/148/148 139/139/139 140/140/140 +f 141/141/141 150/150/150 149/149/149 +f 149/149/149 140/140/140 141/141/141 +f 142/142/142 151/151/151 150/150/150 +f 150/150/150 141/141/141 142/142/142 +f 143/143/143 152/152/152 151/151/151 +f 151/151/151 142/142/142 143/143/143 +f 153/153/153 152/152/152 143/143/143 +f 143/143/143 144/144/144 153/153/153 +f 154/154/154 153/153/153 144/144/144 +f 144/144/144 145/145/145 154/154/154 +f 155/155/155 154/154/154 145/145/145 +f 145/145/145 146/146/146 155/155/155 +f 156/156/156 155/155/155 146/146/146 +f 146/146/146 147/147/147 156/156/156 +f 157/157/157 152/152/152 153/153/153 +f 153/153/153 158/158/158 157/157/157 +f 158/158/158 153/153/153 154/154/154 +f 154/154/154 159/159/159 158/158/158 +f 160/160/160 159/159/159 154/154/154 +f 154/154/154 155/155/155 160/160/160 +f 161/161/161 160/160/160 155/155/155 +f 155/155/155 156/156/156 161/161/161 +f 152/152/152 157/157/157 162/162/162 +f 162/162/162 151/151/151 152/152/152 +f 151/151/151 162/162/162 163/163/163 +f 163/163/163 150/150/150 151/151/151 +f 150/150/150 163/163/163 164/164/164 +f 164/164/164 149/149/149 150/150/150 +f 149/149/149 164/164/164 165/165/165 +f 165/165/165 148/148/148 149/149/149 +f 148/148/148 165/165/165 166/166/166 +f 166/166/166 137/137/137 148/148/148 +f 137/137/137 166/166/166 167/167/167 +f 167/167/167 138/138/138 137/137/137 +f 168/168/168 169/169/169 167/167/167 +f 167/167/167 166/166/166 168/168/168 +f 168/168/168 166/166/166 165/165/165 +f 165/165/165 170/170/170 168/168/168 +f 170/170/170 165/165/165 164/164/164 +f 171/171/171 172/172/172 160/160/160 +f 160/160/160 161/161/161 171/171/171 +f 160/160/160 172/172/172 173/173/173 +f 173/173/173 159/159/159 160/160/160 +f 159/159/159 173/173/173 174/174/174 +f 174/174/174 158/158/158 159/159/159 +f 158/158/158 174/174/174 175/175/175 +f 175/175/175 157/157/157 158/158/158 +f 157/157/157 175/175/175 176/176/176 +f 176/176/176 162/162/162 157/157/157 +f 162/162/162 176/176/176 177/177/177 +f 177/177/177 163/163/163 162/162/162 +f 163/163/163 177/177/177 178/178/178 +f 178/178/178 164/164/164 163/163/163 +f 164/164/164 178/178/178 179/179/179 +f 179/179/179 170/170/170 164/164/164 +f 170/170/170 179/179/179 180/180/180 +f 180/180/180 168/168/168 170/170/170 +f 168/168/168 180/180/180 181/181/181 +f 181/181/181 169/169/169 168/168/168 +f 182/182/182 183/183/183 181/181/181 +f 181/181/181 180/180/180 182/182/182 +f 184/184/184 182/182/182 180/180/180 +f 180/180/180 179/179/179 184/184/184 +f 185/185/185 184/184/184 179/179/179 +f 179/179/179 178/178/178 185/185/185 +f 186/186/186 185/185/185 178/178/178 +f 178/178/178 177/177/177 186/186/186 +f 186/186/186 177/177/177 176/176/176 +f 176/176/176 187/187/187 186/186/186 +f 175/175/175 188/188/188 187/187/187 +f 187/187/187 176/176/176 175/175/175 +f 189/189/189 188/188/188 175/175/175 +f 175/175/175 174/174/174 189/189/189 +f 173/173/173 190/190/190 189/189/189 +f 189/189/189 174/174/174 173/173/173 +f 191/191/191 190/190/190 173/173/173 +f 173/173/173 172/172/172 191/191/191 +f 192/192/192 191/191/191 172/172/172 +f 172/172/172 171/171/171 192/192/192 +f 193/193/193 191/191/191 192/192/192 +f 192/192/192 194/194/194 193/193/193 +f 191/191/191 193/193/193 195/195/195 +f 195/195/195 190/190/190 191/191/191 +f 190/190/190 195/195/195 196/196/196 +f 196/196/196 189/189/189 190/190/190 +f 189/189/189 196/196/196 197/197/197 +f 197/197/197 188/188/188 189/189/189 +f 188/188/188 197/197/197 198/198/198 +f 198/198/198 187/187/187 188/188/188 +f 187/187/187 198/198/198 199/199/199 +f 199/199/199 186/186/186 187/187/187 +f 186/186/186 199/199/199 200/200/200 +f 200/200/200 185/185/185 186/186/186 +f 200/200/200 201/201/201 184/184/184 +f 184/184/184 185/185/185 200/200/200 +f 184/184/184 201/201/201 202/202/202 +f 202/202/202 182/182/182 184/184/184 +f 182/182/182 202/202/202 203/203/203 +f 203/203/203 183/183/183 182/182/182 +f 104/104/104 103/103/103 118/118/118 +f 126/126/126 107/107/107 105/105/105 +s 1 +f 1/1/204 4/4/205 204/3/206 +f 204/3/206 205/2/207 1/1/204 +f 205/2/207 204/3/206 206/6/208 +f 206/6/208 207/5/209 205/2/207 +f 207/5/209 206/6/208 208/8/210 +f 208/8/210 209/7/211 207/5/209 +f 209/7/211 208/8/210 210/10/212 +f 210/10/212 211/9/213 209/7/211 +f 211/9/213 210/10/212 212/12/214 +f 212/12/214 213/11/215 211/9/213 +f 213/11/215 212/12/214 214/14/216 +f 214/14/216 215/13/217 213/11/215 +f 215/13/217 214/14/216 216/16/218 +f 216/16/218 217/15/219 215/13/217 +f 217/15/219 216/16/218 218/18/220 +f 218/18/220 219/17/221 217/15/219 +f 219/17/221 218/18/220 220/20/222 +f 220/20/222 221/19/223 219/17/221 +f 221/19/223 220/20/222 22/22/224 +f 22/22/224 21/21/225 221/19/223 +f 222/23/226 221/19/223 21/21/225 +f 21/21/225 24/24/227 222/23/226 +f 223/25/228 219/17/221 221/19/223 +f 221/19/223 222/23/226 223/25/228 +f 224/26/229 217/15/219 219/17/221 +f 219/17/221 223/25/228 224/26/229 +f 225/27/230 215/13/217 217/15/219 +f 217/15/219 224/26/229 225/27/230 +f 226/28/231 213/11/215 215/13/217 +f 215/13/217 225/27/230 226/28/231 +f 227/29/232 211/9/213 213/11/215 +f 213/11/215 226/28/231 227/29/232 +f 228/30/233 209/7/211 211/9/213 +f 211/9/213 227/29/232 228/30/233 +f 229/31/234 207/5/209 209/7/211 +f 209/7/211 228/30/233 229/31/234 +f 230/32/235 205/2/207 207/5/209 +f 207/5/209 229/31/234 230/32/235 +f 33/33/236 1/1/204 205/2/207 +f 205/2/207 230/32/235 33/33/236 +f 231/34/237 35/35/238 33/33/236 +f 33/33/236 230/32/235 231/34/237 +f 230/32/235 229/31/234 232/36/239 +f 232/36/239 231/34/237 230/32/235 +f 229/31/234 228/30/233 233/37/240 +f 233/37/240 232/36/239 229/31/234 +f 228/30/233 227/29/232 234/38/241 +f 234/38/241 233/37/240 228/30/233 +f 227/29/232 226/28/231 235/39/242 +f 235/39/242 234/38/241 227/29/232 +f 226/28/231 225/27/230 236/40/243 +f 236/40/243 235/39/242 226/28/231 +f 225/27/230 224/26/229 237/41/244 +f 237/41/244 236/40/243 225/27/230 +f 224/26/229 223/25/228 238/42/245 +f 238/42/245 237/41/244 224/26/229 +f 223/25/228 222/23/226 239/43/246 +f 239/43/246 238/42/245 223/25/228 +f 222/23/226 24/24/227 44/44/247 +f 44/44/247 239/43/246 222/23/226 +f 240/45/248 241/46/249 235/39/242 +f 235/39/242 236/40/243 240/45/248 +f 237/41/244 240/45/248 236/40/243 +f 242/47/250 234/38/241 235/39/242 +f 235/39/242 241/46/249 242/47/250 +f 243/48/251 233/37/240 234/38/241 +f 234/38/241 242/47/250 243/48/251 +f 232/36/239 233/37/240 243/48/251 +f 243/48/251 244/49/252 232/36/239 +f 245/50/253 231/34/237 232/36/239 +f 232/36/239 244/49/252 245/50/253 +f 51/51/254 35/35/238 231/34/237 +f 231/34/237 245/50/253 51/51/254 +f 245/50/253 246/53/255 52/52/256 +f 52/52/256 51/51/254 245/50/253 +f 245/50/253 244/49/252 247/54/257 +f 247/54/257 246/53/255 245/50/253 +f 244/49/252 243/48/251 248/55/258 +f 248/55/258 247/54/257 244/49/252 +f 243/48/251 242/47/250 249/56/259 +f 249/56/259 248/55/258 243/48/251 +f 242/47/250 241/46/249 250/57/260 +f 250/57/260 249/56/259 242/47/250 +f 241/46/249 240/45/248 251/58/261 +f 251/58/261 250/57/260 241/46/249 +f 251/58/261 240/45/248 237/41/244 +f 237/41/244 252/59/262 251/58/261 +f 237/41/244 238/42/245 253/60/263 +f 253/60/263 252/59/262 237/41/244 +f 239/43/246 253/60/263 238/42/245 +f 254/61/264 255/62/265 252/59/262 +f 252/59/262 253/60/263 254/61/264 +f 256/63/266 251/58/261 252/59/262 +f 252/59/262 255/62/265 256/63/266 +f 257/64/267 250/57/260 251/58/261 +f 251/58/261 256/63/266 257/64/267 +f 258/65/268 249/56/259 250/57/260 +f 250/57/260 257/64/267 258/65/268 +f 258/65/268 259/66/269 248/55/258 +f 248/55/258 249/56/259 258/65/268 +f 247/54/257 248/55/258 259/66/269 +f 259/66/269 260/67/270 247/54/257 +f 261/68/271 246/53/255 247/54/257 +f 247/54/257 260/67/270 261/68/271 +f 69/69/272 52/52/256 246/53/255 +f 246/53/255 261/68/271 69/69/272 +f 253/60/263 239/43/246 262/70/273 +f 262/70/273 254/61/264 253/60/263 +f 239/43/246 44/44/247 71/71/274 +f 71/71/274 262/70/273 239/43/246 +f 71/71/274 73/73/275 263/72/276 +f 263/72/276 262/70/273 71/71/274 +f 264/74/277 254/61/264 262/70/273 +f 262/70/273 263/72/276 264/74/277 +f 264/74/277 265/75/278 255/62/265 +f 255/62/265 254/61/264 264/74/277 +f 266/76/279 256/63/266 255/62/265 +f 255/62/265 265/75/278 266/76/279 +f 257/64/267 256/63/266 266/76/279 +f 266/76/279 267/77/280 257/64/267 +f 268/78/281 258/65/268 257/64/267 +f 257/64/267 267/77/280 268/78/281 +f 269/79/282 259/66/269 258/65/268 +f 258/65/268 268/78/281 269/79/282 +f 270/80/283 260/67/270 259/66/269 +f 259/66/269 269/79/282 270/80/283 +f 271/81/284 261/68/271 260/67/270 +f 260/67/270 270/80/283 271/81/284 +f 82/82/285 69/69/272 261/68/271 +f 261/68/271 271/81/284 82/82/285 +f 272/83/286 84/84/287 82/82/285 +f 82/82/285 271/81/284 272/83/286 +f 85/85/288 84/84/287 272/83/286 +f 272/83/286 273/86/289 85/85/288 +f 274/87/290 273/86/289 272/83/286 +f 272/83/286 271/81/284 270/80/283 +f 270/80/283 274/87/290 272/83/286 +f 270/80/283 269/79/282 275/88/291 +f 275/88/291 274/87/290 270/80/283 +f 269/79/282 268/78/281 276/89/292 +f 276/89/292 275/88/291 269/79/282 +f 268/78/281 267/77/280 277/90/293 +f 277/90/293 276/89/292 268/78/281 +f 267/77/280 266/76/279 278/91/294 +f 278/91/294 277/90/293 267/77/280 +f 279/92/295 278/91/294 266/76/279 +f 266/76/279 265/75/278 279/92/295 +f 265/75/278 264/74/277 280/93/296 +f 280/93/296 279/92/295 265/75/278 +f 264/74/277 263/72/276 281/94/297 +f 281/94/297 280/93/296 264/74/277 +f 263/72/276 73/73/275 95/95/298 +f 95/95/298 281/94/297 263/72/276 +f 96/96/299 85/85/288 273/86/289 +f 273/86/289 282/97/300 96/96/299 +f 283/98/301 282/97/300 273/86/289 +f 273/86/289 274/87/290 283/98/301 +f 274/87/290 275/88/291 284/99/302 +f 284/99/302 283/98/301 274/87/290 +f 275/88/291 276/89/292 285/100/303 +f 285/100/303 284/99/302 275/88/291 +f 285/100/303 276/89/292 277/90/293 +f 277/90/293 286/101/304 285/100/303 +f 286/101/304 277/90/293 278/91/294 +f 278/91/294 287/102/305 286/101/304 +f 278/91/294 279/92/295 288/103/306 +f 288/103/306 287/102/305 278/91/294 +f 279/92/295 280/93/296 289/104/307 +f 289/104/307 288/103/306 279/92/295 +f 280/93/296 281/94/297 290/105/308 +f 290/105/308 289/104/307 280/93/296 +f 281/94/297 95/95/298 106/106/309 +f 106/106/309 290/105/308 281/94/297 +f 291/107/310 290/105/308 106/106/309 +f 106/106/309 108/108/311 291/107/310 +f 282/97/300 292/110/312 109/109/313 +f 109/109/313 96/96/299 282/97/300 +f 293/111/314 112/112/315 109/109/313 +f 109/109/313 292/110/312 293/111/314 +f 282/97/300 283/98/301 294/113/316 +f 294/113/316 292/110/312 282/97/300 +f 283/98/301 284/99/302 295/114/317 +f 295/114/317 294/113/316 283/98/301 +f 284/99/302 285/100/303 296/115/318 +f 296/115/318 295/114/317 284/99/302 +f 285/100/303 286/101/304 297/116/319 +f 297/116/319 296/115/318 285/100/303 +f 286/101/304 287/102/305 298/117/320 +f 298/117/320 297/116/319 286/101/304 +f 287/102/305 288/103/306 299/118/321 +f 299/118/321 298/117/320 287/102/305 +f 289/104/307 300/119/322 299/118/321 +f 290/105/308 300/119/322 289/104/307 +f 301/120/323 293/111/314 292/110/312 +f 292/110/312 294/113/316 301/120/323 +f 302/121/324 301/120/323 294/113/316 +f 294/113/316 295/114/317 302/121/324 +f 295/114/317 296/115/318 303/122/325 +f 303/122/325 302/121/324 295/114/317 +f 296/115/318 297/116/319 304/123/326 +f 304/123/326 303/122/325 296/115/318 +f 305/124/327 304/123/326 297/116/319 +f 297/116/319 298/117/320 305/124/327 +f 298/117/320 299/118/321 306/125/328 +f 306/125/328 305/124/327 298/117/320 +f 300/119/322 306/125/328 299/118/321 +f 307/126/329 300/119/322 290/105/308 +f 308/127/330 306/125/328 300/119/322 +f 300/119/322 307/126/329 308/127/330 +f 309/128/331 305/124/327 306/125/328 +f 306/125/328 308/127/330 309/128/331 +f 310/129/332 304/123/326 305/124/327 +f 305/124/327 309/128/331 310/129/332 +f 311/130/333 303/122/325 304/123/326 +f 304/123/326 310/129/332 311/130/333 +f 312/131/334 302/121/324 303/122/325 +f 303/122/325 311/130/333 312/131/334 +f 313/132/335 301/120/323 302/121/324 +f 302/121/324 312/131/334 313/132/335 +f 314/133/336 293/111/314 301/120/323 +f 301/120/323 313/132/335 314/133/336 +f 134/134/337 112/112/315 293/111/314 +f 293/111/314 314/133/336 134/134/337 +f 315/135/338 291/107/310 108/108/311 +f 108/108/311 136/136/339 315/135/338 +f 316/137/340 315/135/338 136/136/339 +f 136/136/339 138/138/341 316/137/340 +f 317/139/342 307/126/329 291/107/310 +f 291/107/310 315/135/338 317/139/342 +f 318/140/343 308/127/330 307/126/329 +f 307/126/329 317/139/342 318/140/343 +f 319/141/344 309/128/331 308/127/330 +f 308/127/330 318/140/343 319/141/344 +f 310/129/332 309/128/331 319/141/344 +f 319/141/344 320/142/345 310/129/332 +f 321/143/346 311/130/333 310/129/332 +f 310/129/332 320/142/345 321/143/346 +f 322/144/347 312/131/334 311/130/333 +f 311/130/333 321/143/346 322/144/347 +f 323/145/348 313/132/335 312/131/334 +f 312/131/334 322/144/347 323/145/348 +f 324/146/349 314/133/336 313/132/335 +f 313/132/335 323/145/348 324/146/349 +f 147/147/350 134/134/337 314/133/336 +f 314/133/336 324/146/349 147/147/350 +f 315/135/338 316/137/340 325/148/351 +f 325/148/351 317/139/342 315/135/338 +f 318/140/343 317/139/342 325/148/351 +f 325/148/351 326/149/352 318/140/343 +f 319/141/344 318/140/343 326/149/352 +f 326/149/352 327/150/353 319/141/344 +f 320/142/345 319/141/344 327/150/353 +f 327/150/353 328/151/354 320/142/345 +f 321/143/346 320/142/345 328/151/354 +f 328/151/354 329/152/355 321/143/346 +f 330/153/356 322/144/347 321/143/346 +f 321/143/346 329/152/355 330/153/356 +f 331/154/357 323/145/348 322/144/347 +f 322/144/347 330/153/356 331/154/357 +f 332/155/358 324/146/349 323/145/348 +f 323/145/348 331/154/357 332/155/358 +f 156/156/359 147/147/350 324/146/349 +f 324/146/349 332/155/358 156/156/359 +f 333/157/360 334/158/361 330/153/356 +f 330/153/356 329/152/355 333/157/360 +f 334/158/361 335/159/362 331/154/357 +f 331/154/357 330/153/356 334/158/361 +f 336/160/363 332/155/358 331/154/357 +f 331/154/357 335/159/362 336/160/363 +f 161/161/364 156/156/359 332/155/358 +f 332/155/358 336/160/363 161/161/364 +f 329/152/355 328/151/354 337/162/365 +f 337/162/365 333/157/360 329/152/355 +f 328/151/354 327/150/353 338/163/366 +f 338/163/366 337/162/365 328/151/354 +f 327/150/353 326/149/352 339/164/367 +f 339/164/367 338/163/366 327/150/353 +f 326/149/352 325/148/351 340/165/368 +f 340/165/368 339/164/367 326/149/352 +f 325/148/351 316/137/340 341/166/369 +f 341/166/369 340/165/368 325/148/351 +f 316/137/340 138/138/341 167/167/370 +f 167/167/370 341/166/369 316/137/340 +f 342/168/371 341/166/369 167/167/370 +f 167/167/370 169/169/372 342/168/371 +f 342/168/371 343/170/373 340/165/368 +f 340/165/368 341/166/369 342/168/371 +f 343/170/373 339/164/367 340/165/368 +f 171/171/374 161/161/364 336/160/363 +f 336/160/363 344/172/375 171/171/374 +f 336/160/363 335/159/362 345/173/376 +f 345/173/376 344/172/375 336/160/363 +f 335/159/362 334/158/361 346/174/377 +f 346/174/377 345/173/376 335/159/362 +f 334/158/361 333/157/360 347/175/378 +f 347/175/378 346/174/377 334/158/361 +f 333/157/360 337/162/365 348/176/379 +f 348/176/379 347/175/378 333/157/360 +f 337/162/365 338/163/366 349/177/380 +f 349/177/380 348/176/379 337/162/365 +f 338/163/366 339/164/367 350/178/381 +f 350/178/381 349/177/380 338/163/366 +f 339/164/367 343/170/373 351/179/382 +f 351/179/382 350/178/381 339/164/367 +f 343/170/373 342/168/371 352/180/383 +f 352/180/383 351/179/382 343/170/373 +f 342/168/371 169/169/372 181/181/384 +f 181/181/384 352/180/383 342/168/371 +f 353/182/385 352/180/383 181/181/384 +f 181/181/384 183/183/386 353/182/385 +f 354/184/387 351/179/382 352/180/383 +f 352/180/383 353/182/385 354/184/387 +f 355/185/388 350/178/381 351/179/382 +f 351/179/382 354/184/387 355/185/388 +f 356/186/389 349/177/380 350/178/381 +f 350/178/381 355/185/388 356/186/389 +f 356/186/389 357/187/390 348/176/379 +f 348/176/379 349/177/380 356/186/389 +f 347/175/378 348/176/379 357/187/390 +f 357/187/390 358/188/391 347/175/378 +f 359/189/392 346/174/377 347/175/378 +f 347/175/378 358/188/391 359/189/392 +f 345/173/376 346/174/377 359/189/392 +f 359/189/392 360/190/393 345/173/376 +f 361/191/394 344/172/375 345/173/376 +f 345/173/376 360/190/393 361/191/394 +f 192/192/395 171/171/374 344/172/375 +f 344/172/375 361/191/394 192/192/395 +f 362/193/396 194/194/397 192/192/395 +f 192/192/395 361/191/394 362/193/396 +f 361/191/394 360/190/393 363/195/398 +f 363/195/398 362/193/396 361/191/394 +f 360/190/393 359/189/392 364/196/399 +f 364/196/399 363/195/398 360/190/393 +f 359/189/392 358/188/391 365/197/400 +f 365/197/400 364/196/399 359/189/392 +f 358/188/391 357/187/390 366/198/401 +f 366/198/401 365/197/400 358/188/391 +f 357/187/390 356/186/389 367/199/402 +f 367/199/402 366/198/401 357/187/390 +f 356/186/389 355/185/388 368/200/403 +f 368/200/403 367/199/402 356/186/389 +f 368/200/403 355/185/388 354/184/387 +f 354/184/387 369/201/404 368/200/403 +f 354/184/387 353/182/385 370/202/405 +f 370/202/405 369/201/404 354/184/387 +f 353/182/385 183/183/386 203/203/406 +f 203/203/406 370/202/405 353/182/385 +f 289/104/307 299/118/321 288/103/306 +f 307/126/329 290/105/308 291/107/310 +s 2 +f 193/193/193 194/194/194 371/204/407 +f 195/195/195 193/193/193 371/204/407 +f 196/196/196 195/195/195 371/204/407 +f 197/197/197 196/196/196 371/204/407 +f 198/198/198 197/197/197 371/204/407 +f 199/199/199 198/198/198 371/204/407 +f 200/200/200 199/199/199 371/204/407 +f 201/201/201 200/200/200 371/204/407 +f 202/202/202 201/201/201 371/204/407 +f 203/203/203 202/202/202 371/204/407 +s 1 +f 194/194/397 362/193/396 371/204/408 +f 362/193/396 363/195/398 371/204/408 +f 363/195/398 364/196/399 371/204/408 +f 364/196/399 365/197/400 371/204/408 +f 365/197/400 366/198/401 371/204/408 +f 366/198/401 367/199/402 371/204/408 +f 367/199/402 368/200/403 371/204/408 +f 368/200/403 369/201/404 371/204/408 +f 369/201/404 370/202/405 371/204/408 +f 370/202/405 203/203/406 371/204/408 +# 0 polygons - 720 triangles + +# +# object Pommel001 +# + +v -1.035696268082 -31.698667526245 5.117675781250 +v -1.134333133698 -32.599636077881 5.088494300842 +v -0.000000000504 -32.599636077881 5.528435707092 +v 0.000000000000 -31.244935989380 5.224609375000 +v -1.262561082840 -31.363300323486 4.815429687500 +v 0.000000000000 -30.899707794189 4.899902343750 +v -1.558471798897 -32.507488250732 4.694335937500 +v -0.000000000504 -33.862186431885 4.956413269043 +v -1.015968918800 -33.408458709717 4.957390308380 +v -1.371061682701 -33.553039550781 4.507080078125 +v 0.000000000000 -34.213905334473 4.448974609375 +v -1.449971199036 -29.775247573853 4.686523437500 +v 0.000000000000 -29.755519866943 4.785156250000 +v -3.659437894821 -29.735792160034 4.176513671875 +v -3.600255727768 -31.432346343994 4.064453125000 +v -3.235299110413 -33.109172821045 3.892578125000 +v -1.982610344887 -34.381587982178 3.905273437500 +v 0.000000000000 -35.088661193848 3.896455764771 +v -2.158233165741 -35.226516723633 3.295157432556 +v 0.000000000000 -35.711681365967 3.309402465820 +v -4.014014244080 -33.620582580566 3.352813720703 +v -5.103612899780 -31.793392181396 3.271560668945 +v -5.483784675598 -30.407674789429 3.242521286011 +v -5.114181518555 -29.829444885254 3.576421737671 +v -2.211170434952 -35.446018218994 2.962073564529 +v 0.011734127998 -35.931545257568 3.025031566620 +v -4.182030677795 -33.932388305664 3.003480434418 +v -5.280012607574 -31.902881622314 2.945399045944 +v -5.670935630798 -30.380168914795 2.857514381409 +v -5.709827423096 -29.943941116333 2.580234527588 +v -3.748281240463 -29.552608489990 4.039296150208 +v -5.039429664612 -29.568931579590 3.423065185547 +v -5.514425754547 -29.669740676880 2.602941513062 +v -5.729578018188 -29.979839324951 2.085421562195 +v -5.564581871033 -29.674812316895 2.107859134674 +v -5.724412918091 -29.915939331055 -0.000000000000 +v -5.605662345886 -29.700336456299 -0.000000000000 +v -5.734900951385 -30.226127624512 2.128538608551 +v -5.280913829803 -31.939918518066 2.202354192734 +v -4.165275096893 -34.010128021240 2.203212499619 +v -2.175266742706 -35.500946044922 2.203031301498 +v 0.011734485626 -35.954448699951 2.222187042236 +v -1.442263364792 -29.515279769897 4.479356765747 +v 0.000000000000 -29.541147232056 4.594214439392 +v 0.000000000000 -29.486797332764 3.381490707397 +v -1.254617214203 -29.483310699463 3.355130195618 +v -3.572924137115 -29.502096176147 3.178819656372 +v -4.130977630615 -29.502943038940 2.826035499573 +v -4.467309951782 -29.484390258789 2.251946449280 +v -4.533765792847 -29.451202392578 -0.000000000000 +v 0.000000000000 -28.001697540283 3.180839538574 +v -1.232109189034 -28.001361846924 3.137918472290 +v -1.232420802116 -25.854892730713 2.887609481812 +v 0.000000000000 -25.862701416016 2.905435562134 +v -2.726401329041 -28.136112213135 2.891614913940 +v -3.621238708496 -28.212581634521 2.092004537582 +v -3.918600082397 -28.193891525269 -0.000000000000 +v -2.375783920288 -26.016880035400 2.599407196045 +v -3.098390579224 -26.248186111450 1.837602615356 +v -3.371286392212 -26.180212020874 -0.000000000000 +v -2.144793987274 -35.914974212646 2.097147464752 +v 0.000000000000 -36.228176116943 2.158830642700 +v -4.440731048584 -34.316680908203 2.154262781143 +v -5.799853324890 -32.212482452393 2.132973670959 +v -6.334112644196 -30.355852127075 2.001171112061 +v -6.304049015045 -30.155725479126 1.841197967529 +v -5.915116310120 -30.136131286621 -0.000000000000 +v -7.540548801422 -30.044624328613 0.885861396790 +v -7.582933425903 -30.229614257813 1.063921451569 +v -7.486944675446 -30.013767242432 -0.000000000000 +v -8.637712478638 -29.966442108154 -0.000000000000 +v -8.784052848816 -30.113002777100 -0.000000000000 +v -7.121142864227 -32.431221008301 1.023580551147 +v -8.270757675171 -32.195579528809 -0.000000000000 +v -7.715923309326 -33.421829223633 -0.000000000000 +v -5.505672931671 -34.863990783691 1.025086998940 +v -6.843591690063 -34.600185394287 -0.000000000000 +v -5.608236789703 -35.849960327148 -0.000000000000 +v -2.826126098633 -36.808456420898 0.991251707077 +v -4.181250572205 -36.874431610107 -0.000000000000 +v -2.559196949005 -37.731990814209 -0.000000000000 +v -0.000019673549 -37.278114318848 1.086889505386 +v -0.000019673435 -38.107505798340 -0.000000000000 +v 1.035696268082 -31.698667526245 5.117675781250 +v 1.134333133698 -32.599636077881 5.088494300842 +v 1.262561082840 -31.363300323486 4.815429687500 +v 1.558471798897 -32.507488250732 4.694335937500 +v 1.015968680382 -33.408458709717 4.957390308380 +v 1.371061682701 -33.553039550781 4.507080078125 +v 1.449971199036 -29.775247573853 4.686523437500 +v 3.659437894821 -29.735792160034 4.176513671875 +v 3.600255727768 -31.432346343994 4.064453125000 +v 3.235299110413 -33.109172821045 3.892578125000 +v 1.982610344887 -34.381587982178 3.905273437500 +v 2.158233165741 -35.226516723633 3.295157432556 +v 4.014014244080 -33.620582580566 3.352813720703 +v 5.103612899780 -31.793392181396 3.271560668945 +v 5.483784675598 -30.407674789429 3.242521286011 +v 5.114181518555 -29.829444885254 3.576421737671 +v 2.193337202072 -35.463100433350 2.962285518646 +v 4.174732208252 -33.906303405762 3.001895427704 +v 5.302279949188 -31.915607452393 2.946116924286 +v 5.670935630798 -30.380168914795 2.857514381409 +v 5.709827423096 -29.943941116333 2.580234527588 +v 3.748281240463 -29.552608489990 4.039296150208 +v 5.039429664612 -29.568931579590 3.423065185547 +v 5.514425754547 -29.669740676880 2.602941513062 +v 5.729578018188 -29.979839324951 2.085421562195 +v 5.564581871033 -29.674812316895 2.107859134674 +v 5.724412918091 -29.915939331055 -0.000000000000 +v 5.605662345886 -29.700336456299 -0.000000000000 +v 5.734900951385 -30.226127624512 2.128538608551 +v 5.303181648254 -31.952642440796 2.203071832657 +v 4.157970905304 -33.984043121338 2.201627016068 +v 2.157430171967 -35.518020629883 2.203243255615 +v 1.442263364792 -29.515279769897 4.479356765747 +v 1.254617214203 -29.483310699463 3.355130195618 +v 3.572924137115 -29.502096176147 3.178819656372 +v 4.130977630615 -29.502943038940 2.826035499573 +v 4.467309951782 -29.484390258789 2.251946449280 +v 4.533765792847 -29.451202392578 -0.000000000000 +v 1.232109189034 -28.001361846924 3.137918472290 +v 1.232420802116 -25.854892730713 2.887609481812 +v 2.726401329041 -28.136112213135 2.891614913940 +v 3.621238708496 -28.212581634521 2.092004537582 +v 3.918600082397 -28.193891525269 -0.000000000000 +v 2.375783920288 -26.016880035400 2.599407196045 +v 3.098390579224 -26.248186111450 1.837602615356 +v 3.371286392212 -26.180212020874 -0.000000000000 +v 2.144314765930 -35.914356231689 2.096254825592 +v 4.440251827240 -34.316062927246 2.153369903564 +v 5.799853324890 -32.212482452393 2.132973670959 +v 6.334112644196 -30.355852127075 2.001171112061 +v 6.304049015045 -30.155725479126 1.841197967529 +v 5.915116310120 -30.136131286621 -0.000000000000 +v 7.540548801422 -30.044624328613 0.885861396790 +v 7.582933425903 -30.229614257813 1.063921451569 +v 7.486944675446 -30.013767242432 -0.000000000000 +v 8.637712478638 -29.966442108154 -0.000000000000 +v 8.784052848816 -30.113002777100 -0.000000000000 +v 7.121142864227 -32.431221008301 1.023580551147 +v 8.270757675171 -32.195579528809 -0.000000000000 +v 7.715923309326 -33.421829223633 -0.000000000000 +v 5.505195617676 -34.863372802734 1.024194478989 +v 6.843591690063 -34.600185394287 -0.000000000000 +v 5.608236789703 -35.849960327148 -0.000000000000 +v 2.825607538223 -36.807842254639 0.990358054638 +v 4.181250572205 -36.874431610107 -0.000000000000 +v 2.559157609940 -37.731990814209 -0.000000000000 +v -1.035696268082 -31.698667526245 -5.117675781250 +v 0.000000000000 -31.244935989380 -5.224609375000 +v -0.000000000504 -32.599636077881 -5.528435707092 +v -1.134333133698 -32.599636077881 -5.088494300842 +v -1.262561082840 -31.363300323486 -4.815429687500 +v 0.000000000000 -30.899707794189 -4.899902343750 +v -1.558471798897 -32.507488250732 -4.694335937500 +v -0.000000000504 -33.862186431885 -4.956413269043 +v -1.015968918800 -33.408458709717 -4.957390308380 +v -1.371061682701 -33.553039550781 -4.507080078125 +v 0.000000000000 -34.213905334473 -4.448974609375 +v -1.449971199036 -29.775247573853 -4.686523437500 +v 0.000000000000 -29.755519866943 -4.785156250000 +v -3.659437894821 -29.735792160034 -4.176513671875 +v -3.600255727768 -31.432346343994 -4.064453125000 +v -3.235299110413 -33.109172821045 -3.892578125000 +v -1.982610344887 -34.381587982178 -3.905273437500 +v 0.000000000000 -35.088661193848 -3.896455764771 +v -2.158233165741 -35.226516723633 -3.295157432556 +v 0.000000000000 -35.711681365967 -3.309402465820 +v -4.014014244080 -33.620582580566 -3.352813720703 +v -5.103612899780 -31.793392181396 -3.271560668945 +v -5.483784675598 -30.407674789429 -3.242521286011 +v -5.114181518555 -29.829444885254 -3.576421737671 +v -2.211170434952 -35.446018218994 -2.962073564529 +v 0.011734127998 -35.931545257568 -3.025031566620 +v -4.182030677795 -33.932388305664 -3.003480434418 +v -5.280012607574 -31.902881622314 -2.945399045944 +v -5.670935630798 -30.380168914795 -2.857514381409 +v -5.709827423096 -29.943941116333 -2.580234527588 +v -3.748281240463 -29.552608489990 -4.039296150208 +v -5.039429664612 -29.568931579590 -3.423065185547 +v -5.514425754547 -29.669740676880 -2.602941513062 +v -5.729578018188 -29.979839324951 -2.085421562195 +v -5.564581871033 -29.674812316895 -2.107859134674 +v -5.734900951385 -30.226127624512 -2.128538608551 +v -5.280913829803 -31.939918518066 -2.202354192734 +v -4.165275096893 -34.010128021240 -2.203212499619 +v -2.175266742706 -35.500946044922 -2.203031301498 +v 0.011734485626 -35.954448699951 -2.222187042236 +v -1.442263364792 -29.515279769897 -4.479356765747 +v 0.000000000000 -29.541147232056 -4.594214439392 +v 0.000000000000 -29.486797332764 -3.381490707397 +v -1.254617214203 -29.483310699463 -3.355130195618 +v -3.572924137115 -29.502096176147 -3.178819656372 +v -4.130977630615 -29.502943038940 -2.826035499573 +v -4.467309951782 -29.484390258789 -2.251946449280 +v 0.000000000000 -28.001697540283 -3.180839538574 +v -1.232109189034 -28.001361846924 -3.137918472290 +v -1.232420802116 -25.854892730713 -2.887609481812 +v 0.000000000000 -25.862701416016 -2.905435562134 +v -2.726401329041 -28.136112213135 -2.891614913940 +v -3.621238708496 -28.212581634521 -2.092004537582 +v -2.375783920288 -26.016880035400 -2.599407196045 +v -3.098390579224 -26.248186111450 -1.837602615356 +v -2.144793987274 -35.914974212646 -2.097147464752 +v 0.000000000000 -36.228176116943 -2.158830642700 +v -4.440731048584 -34.316680908203 -2.154262781143 +v -5.799853324890 -32.212482452393 -2.132973670959 +v -6.334112644196 -30.355852127075 -2.001171112061 +v -6.304049015045 -30.155725479126 -1.841197967529 +v -7.540548801422 -30.044624328613 -0.885861396790 +v -7.582933425903 -30.229614257813 -1.063921451569 +v -7.121142864227 -32.431221008301 -1.023580551147 +v -5.505672931671 -34.863990783691 -1.025086998940 +v -2.826126098633 -36.808456420898 -0.991251707077 +v -0.000019673549 -37.278114318848 -1.086889505386 +v 1.035696268082 -31.698667526245 -5.117675781250 +v 1.134333133698 -32.599636077881 -5.088494300842 +v 1.262561082840 -31.363300323486 -4.815429687500 +v 1.558471798897 -32.507488250732 -4.694335937500 +v 1.015968680382 -33.408458709717 -4.957390308380 +v 1.371061682701 -33.553039550781 -4.507080078125 +v 1.449971199036 -29.775247573853 -4.686523437500 +v 3.659437894821 -29.735792160034 -4.176513671875 +v 3.600255727768 -31.432346343994 -4.064453125000 +v 3.235299110413 -33.109172821045 -3.892578125000 +v 1.982610344887 -34.381587982178 -3.905273437500 +v 2.158233165741 -35.226516723633 -3.295157432556 +v 4.014014244080 -33.620582580566 -3.352813720703 +v 5.103612899780 -31.793392181396 -3.271560668945 +v 5.483784675598 -30.407674789429 -3.242521286011 +v 5.114181518555 -29.829444885254 -3.576421737671 +v 2.193337202072 -35.463100433350 -2.962285518646 +v 4.174732208252 -33.906303405762 -3.001895427704 +v 5.302279949188 -31.915607452393 -2.946116924286 +v 5.670935630798 -30.380168914795 -2.857514381409 +v 5.709827423096 -29.943941116333 -2.580234527588 +v 3.748281240463 -29.552608489990 -4.039296150208 +v 5.039429664612 -29.568931579590 -3.423065185547 +v 5.514425754547 -29.669740676880 -2.602941513062 +v 5.729578018188 -29.979839324951 -2.085421562195 +v 5.564581871033 -29.674812316895 -2.107859134674 +v 5.734900951385 -30.226127624512 -2.128538608551 +v 5.303181648254 -31.952642440796 -2.203071832657 +v 4.157970905304 -33.984043121338 -2.201627016068 +v 2.157430171967 -35.518020629883 -2.203243255615 +v 1.442263364792 -29.515279769897 -4.479356765747 +v 1.254617214203 -29.483310699463 -3.355130195618 +v 3.572924137115 -29.502096176147 -3.178819656372 +v 4.130977630615 -29.502943038940 -2.826035499573 +v 4.467309951782 -29.484390258789 -2.251946449280 +v 1.232109189034 -28.001361846924 -3.137918472290 +v 1.232420802116 -25.854892730713 -2.887609481812 +v 2.726401329041 -28.136112213135 -2.891614913940 +v 3.621238708496 -28.212581634521 -2.092004537582 +v 2.375783920288 -26.016880035400 -2.599407196045 +v 3.098390579224 -26.248186111450 -1.837602615356 +v 2.144314765930 -35.914356231689 -2.096254825592 +v 4.440251827240 -34.316062927246 -2.153369903564 +v 5.799853324890 -32.212482452393 -2.132973670959 +v 6.334112644196 -30.355852127075 -2.001171112061 +v 6.304049015045 -30.155725479126 -1.841197967529 +v 7.540548801422 -30.044624328613 -0.885861396790 +v 7.582933425903 -30.229614257813 -1.063921451569 +v 7.121142864227 -32.431221008301 -1.023580551147 +v 5.505195617676 -34.863372802734 -1.024194478989 +v 2.825607538223 -36.807842254639 -0.990358054638 +# 267 vertices + +vn -0.464625507593 0.237317875028 0.853113949299 +vn -0.522896647453 -0.131119579077 0.842251002789 +vn -0.000000005575 -0.137959510088 0.990437865257 +vn 0.000000005309 0.493926554918 0.869503617287 +vn -0.351434469223 0.140674769878 0.925583302975 +vn -0.000000006129 0.346800059080 0.937939107418 +vn -0.552871227264 -0.094767764211 0.827860176563 +vn 0.000000032927 -0.652381658554 0.757890582085 +vn -0.410663217306 -0.429756045341 0.804155111313 +vn -0.454104214907 -0.420983195305 0.785214960575 +vn 0.000000009707 -0.658560931683 0.752527415752 +vn -0.142264351249 0.352942913771 0.924766004086 +vn 0.000000005689 0.396014720201 0.918244183064 +vn -0.304912120104 0.234597578645 0.923034429550 +vn -0.370243072510 -0.123604372144 0.920674741268 +vn -0.374609053135 -0.247436299920 0.893556594849 +vn -0.295275479555 -0.449757546186 0.842929720879 +vn -0.000000007348 -0.600322008133 0.799758374691 +vn -0.327446639538 -0.662056982517 0.674135923386 +vn -0.002988865366 -0.746928751469 0.664897382259 +vn -0.516971111298 -0.383437037468 0.765321433544 +vn -0.653830051422 -0.237818539143 0.718295633793 +vn -0.757413923740 -0.033362548798 0.652082145214 +vn -0.590697884560 0.188845664263 0.784482836723 +vn -0.400647580624 -0.866827964783 0.296801000834 +vn 0.000241438131 -0.944406092167 0.328781247139 +vn -0.707595646381 -0.600475192070 0.372475355864 +vn -0.893323004246 -0.346596479416 0.286085486412 +vn -0.958236515522 -0.061526451260 0.279279947281 +vn -0.928925931454 0.315953671932 0.193054080009 +vn -0.198578849435 0.826775550842 0.526316106319 +vn -0.431113153696 0.817532777786 0.381813555956 +vn -0.580783426762 0.800312280655 0.148965969682 +vn -0.959924936295 0.276211798191 0.047446120530 +vn -0.595735132694 0.802459895611 0.034026179463 +vn -0.821624040604 0.569837808609 0.014790556394 +vn -0.608188629150 0.793789386749 0.002241083188 +vn -0.899149358273 0.177371874452 0.400087058544 +vn -0.683107137680 -0.244170174003 0.688291788101 +vn -0.514828503132 -0.451155066490 0.728979229927 +vn -0.306764245033 -0.679515004158 0.666449606419 +vn 0.000269339595 -0.738829791546 0.673892021179 +vn -0.066660076380 0.887745559216 0.455482393503 +vn 0.000000000323 0.894498825073 0.447070270777 +vn 0.000000000000 0.745116949081 0.666933834553 +vn -0.051930535585 0.759722054005 0.648171007633 +vn -0.204215809703 0.875489234924 0.437966346741 +vn -0.303602516651 0.898042857647 0.318346500397 +vn -0.471732020378 0.870631217957 0.139535620809 +vn -0.612835109234 0.789989829063 0.018687246367 +vn -0.000000001779 0.130097433925 0.991501212120 +vn -0.111445538700 0.138738974929 0.984038293362 +vn -0.136222511530 0.118862763047 0.983521759510 +vn 0.000000000000 0.127699717879 0.991812884808 +vn -0.388406604528 0.282540410757 0.877103865147 +vn -0.789726376534 0.443124949932 0.424231708050 +vn -0.919620454311 0.379256933928 0.102285906672 +vn -0.466541439295 0.172797143459 0.867456197739 +vn -0.861767411232 0.259501397610 0.435908228159 +vn -0.953080356121 0.265986502171 0.144530385733 +vn -0.188510015607 -0.502410650253 0.843829095364 +vn -0.000437049312 -0.506507694721 0.862235367298 +vn -0.329056590796 -0.329400360584 0.884995579720 +vn -0.395185053349 -0.156952857971 0.905093669891 +vn -0.437438994646 0.246818423271 0.864712536335 +vn -0.177947565913 0.889890611172 0.420034945011 +vn -0.382198572159 0.923612654209 0.029392408207 +vn -0.210725978017 0.911358952522 0.353580802679 +vn -0.588182389736 0.290251731873 0.754847943783 +vn 0.056468535215 0.997817397118 0.034231532365 +vn -0.419174700975 0.697869360447 0.580750286579 +vn -0.635867834091 0.162774860859 0.754437863827 +vn -0.622507572174 -0.265627682209 0.736156404018 +vn -0.670991361141 -0.211812466383 0.710567474365 +vn -0.600237727165 -0.371494263411 0.708312571049 +vn -0.527755260468 -0.508956134319 0.680027961731 +vn -0.587196588516 -0.450458198786 0.672523319721 +vn -0.492945909500 -0.601908087730 0.628260254860 +vn -0.299618333578 -0.690537035465 0.658321678638 +vn -0.428607940674 -0.649906039238 0.627628386021 +vn -0.210776060820 -0.742882251740 0.635373473167 +vn 0.000208598460 -0.761250853539 0.648457467556 +vn 0.000127445135 -0.781605899334 0.623772561550 +vn 0.464625567198 0.237317875028 0.853113889694 +vn 0.522896647453 -0.131119593978 0.842251002789 +vn 0.351434499025 0.140674754977 0.925583302975 +vn 0.552871286869 -0.094767749310 0.827860176563 +vn 0.410663038492 -0.429756045341 0.804155230522 +vn 0.454104214907 -0.420983195305 0.785214960575 +vn 0.142264351249 0.352942913771 0.924766004086 +vn 0.304912090302 0.234597623348 0.923034429550 +vn 0.370243042707 -0.123604387045 0.920674800873 +vn 0.374608993530 -0.247436299920 0.893556594849 +vn 0.295275449753 -0.449757605791 0.842929720879 +vn 0.331866681576 -0.655457019806 0.678410291672 +vn 0.522406280041 -0.395224213600 0.755572319031 +vn 0.637881100178 -0.226357638836 0.736118137836 +vn 0.757413923740 -0.033362567425 0.652082145214 +vn 0.590698003769 0.188845679164 0.784482777119 +vn 0.401123791933 -0.864220559597 0.303681641817 +vn 0.708802163601 -0.607365667820 0.358756810427 +vn 0.888047754765 -0.341680794954 0.307612448931 +vn 0.957741320133 -0.056341812015 0.282058715820 +vn 0.928925931454 0.315953642130 0.193054065108 +vn 0.198578819633 0.826775610447 0.526316046715 +vn 0.431113123894 0.817532777786 0.381813585758 +vn 0.580783426762 0.800312280655 0.148965969682 +vn 0.959924936295 0.276211768389 0.047446124256 +vn 0.595735132694 0.802459895611 0.034026179463 +vn 0.821624100208 0.569837808609 0.014790555462 +vn 0.608188629150 0.793789386749 0.002241083188 +vn 0.899187266827 0.181444555521 0.398170977831 +vn 0.680777907372 -0.245913252234 0.689976930618 +vn 0.514696955681 -0.452449709177 0.728269398212 +vn 0.308463007212 -0.680599689484 0.664555966854 +vn 0.066660054028 0.887745618820 0.455482363701 +vn 0.051930539310 0.759721994400 0.648171007633 +vn 0.204215809703 0.875489234924 0.437966316938 +vn 0.303602546453 0.898042857647 0.318346500397 +vn 0.471731990576 0.870631217957 0.139535605907 +vn 0.612835109234 0.789989829063 0.018687244505 +vn 0.111445538700 0.138738974929 0.984038293362 +vn 0.136222511530 0.118862763047 0.983521759510 +vn 0.388406604528 0.282540410757 0.877103865147 +vn 0.789726376534 0.443124949932 0.424231708050 +vn 0.919620454311 0.379256933928 0.102285906672 +vn 0.466541439295 0.172797158360 0.867456197739 +vn 0.861767351627 0.259501397610 0.435908257961 +vn 0.953080356121 0.265986502171 0.144530385733 +vn 0.190130025148 -0.505738019943 0.841474711895 +vn 0.327111870050 -0.327533721924 0.886408209801 +vn 0.397027015686 -0.158593535423 0.904000878334 +vn 0.437920242548 0.247203335166 0.864358961582 +vn 0.177947595716 0.889890611172 0.420034974813 +vn 0.382198274136 0.923612773418 0.029392387718 +vn 0.210725978017 0.911358952522 0.353580802679 +vn 0.588182449341 0.290251731873 0.754847943783 +vn -0.056468535215 0.997817397118 0.034231536090 +vn 0.419174700975 0.697869360447 0.580750286579 +vn 0.635867774487 0.162774905562 0.754437863827 +vn 0.622432887554 -0.265719026327 0.736186563969 +vn 0.670991301537 -0.211812451482 0.710567474365 +vn 0.600237727165 -0.371494263411 0.708312571049 +vn 0.527454793453 -0.508891701698 0.680309236050 +vn 0.586801588535 -0.450398862362 0.672907710075 +vn 0.492590457201 -0.601477980614 0.628950595856 +vn 0.299581348896 -0.690237522125 0.658652544022 +vn 0.428285211325 -0.649431109428 0.628339886665 +vn 0.210632592440 -0.742345929146 0.636047542095 +vn -0.464625567198 0.237317875028 -0.853113889694 +vn 0.000000005309 0.493926584721 -0.869503617287 +vn -0.000000011150 -0.137959510088 -0.990437865257 +vn -0.522896647453 -0.131119564176 -0.842251002789 +vn -0.351434499025 0.140674754977 -0.925583302975 +vn -0.000000003677 0.346800029278 -0.937939107418 +vn -0.552871286869 -0.094767749310 -0.827860176563 +vn 0.000000032927 -0.652381718159 -0.757890582085 +vn -0.410663187504 -0.429756045341 -0.804155170918 +vn -0.454104274511 -0.420983225107 -0.785214900970 +vn -0.000000009707 -0.658560931683 -0.752527415752 +vn -0.142264351249 0.352942913771 -0.924766004086 +vn -0.000000004109 0.396014750004 -0.918244183064 +vn -0.304912090302 0.234597623348 -0.923034429550 +vn -0.370243042707 -0.123604387045 -0.920674800873 +vn -0.374608993530 -0.247436299920 -0.893556594849 +vn -0.295275449753 -0.449757605791 -0.842929720879 +vn 0.000000004898 -0.600322067738 -0.799758374691 +vn -0.327446639538 -0.662056982517 -0.674135923386 +vn -0.002988839522 -0.746928691864 -0.664897441864 +vn -0.516971111298 -0.383437067270 -0.765321433544 +vn -0.653830051422 -0.237818539143 -0.718295633793 +vn -0.757413923740 -0.033362567425 -0.652082145214 +vn -0.590698003769 0.188845679164 -0.784482777119 +vn -0.400647580624 -0.866827905178 -0.296801030636 +vn 0.000241438131 -0.944406092167 -0.328781247139 +vn -0.707595586777 -0.600475251675 -0.372475385666 +vn -0.893323004246 -0.346596479416 -0.286085456610 +vn -0.958236515522 -0.061526458710 -0.279279917479 +vn -0.928925931454 0.315953642130 -0.193054065108 +vn -0.198578819633 0.826775610447 -0.526316046715 +vn -0.431113123894 0.817532777786 -0.381813585758 +vn -0.580783426762 0.800312280655 -0.148965969682 +vn -0.959924936295 0.276211768389 -0.047446124256 +vn -0.595735132694 0.802459895611 -0.034026179463 +vn -0.821624100208 0.569837808609 -0.014790555462 +vn -0.608188629150 0.793789386749 -0.002241083188 +vn -0.899149358273 0.177371829748 -0.400087088346 +vn -0.683107137680 -0.244170174003 -0.688291788101 +vn -0.514828503132 -0.451155066490 -0.728979229927 +vn -0.306764245033 -0.679515063763 -0.666449546814 +vn 0.000269320299 -0.738829731941 -0.673892080784 +vn -0.066660054028 0.887745618820 -0.455482363701 +vn 0.000000000323 0.894498825073 -0.447070270777 +vn 0.000000000000 0.745116889477 -0.666933834553 +vn -0.051930539310 0.759721994400 -0.648171007633 +vn -0.204215809703 0.875489234924 -0.437966316938 +vn -0.303602546453 0.898042857647 -0.318346500397 +vn -0.471731990576 0.870631217957 -0.139535605907 +vn -0.612835109234 0.789989829063 -0.018687244505 +vn 0.000000001186 0.130097433925 -0.991501212120 +vn -0.111445538700 0.138738974929 -0.984038293362 +vn -0.136222511530 0.118862763047 -0.983521759510 +vn 0.000000000000 0.127699717879 -0.991812884808 +vn -0.388406604528 0.282540410757 -0.877103865147 +vn -0.789726376534 0.443124949932 -0.424231708050 +vn -0.919620454311 0.379256933928 -0.102285906672 +vn -0.466541439295 0.172797158360 -0.867456197739 +vn -0.861767351627 0.259501397610 -0.435908257961 +vn -0.953080356121 0.265986502171 -0.144530385733 +vn -0.188510030508 -0.502410650253 -0.843829095364 +vn -0.000437049312 -0.506507694721 -0.862235367298 +vn -0.329056531191 -0.329400330782 -0.884995579720 +vn -0.395185053349 -0.156952872872 -0.905093669891 +vn -0.437438964844 0.246818438172 -0.864712536335 +vn -0.177947595716 0.889890611172 -0.420034974813 +vn -0.382198274136 0.923612773418 -0.029392387718 +vn -0.210725978017 0.911358952522 -0.353580802679 +vn -0.588182449341 0.290251731873 -0.754847943783 +vn 0.056468535215 0.997817397118 -0.034231536090 +vn -0.419174700975 0.697869360447 -0.580750286579 +vn -0.635867774487 0.162774905562 -0.754437863827 +vn -0.622507512569 -0.265627682209 -0.736156463623 +vn -0.670991301537 -0.211812451482 -0.710567474365 +vn -0.600237727165 -0.371494263411 -0.708312571049 +vn -0.527755320072 -0.508956134319 -0.680027902126 +vn -0.587196588516 -0.450458168983 -0.672523319721 +vn -0.492945909500 -0.601908087730 -0.628260254860 +vn -0.299618333578 -0.690537095070 -0.658321678638 +vn -0.428607940674 -0.649906039238 -0.627628386021 +vn -0.210776060820 -0.742882251740 -0.635373473167 +vn 0.000208596059 -0.761250793934 -0.648457527161 +vn 0.000127440057 -0.781605899334 -0.623772561550 +vn 0.464625507593 0.237317875028 -0.853113949299 +vn 0.522896647453 -0.131119593978 -0.842251002789 +vn 0.351434469223 0.140674769878 -0.925583302975 +vn 0.552871227264 -0.094767764211 -0.827860176563 +vn 0.410663068295 -0.429756075144 -0.804155170918 +vn 0.454104214907 -0.420983195305 -0.785214960575 +vn 0.142264351249 0.352942913771 -0.924766004086 +vn 0.304912120104 0.234597578645 -0.923034429550 +vn 0.370243072510 -0.123604372144 -0.920674741268 +vn 0.374609053135 -0.247436299920 -0.893556594849 +vn 0.295275479555 -0.449757546186 -0.842929720879 +vn 0.331866681576 -0.655457019806 -0.678410291672 +vn 0.522406220436 -0.395224213600 -0.755572319031 +vn 0.637881100178 -0.226357609034 -0.736118137836 +vn 0.757413923740 -0.033362548798 -0.652082145214 +vn 0.590697884560 0.188845664263 -0.784482836723 +vn 0.401123821735 -0.864220559597 -0.303681641817 +vn 0.708802163601 -0.607365667820 -0.358756780624 +vn 0.888047695160 -0.341680824757 -0.307612508535 +vn 0.957741379738 -0.056341785938 -0.282058686018 +vn 0.928925931454 0.315953671932 -0.193054080009 +vn 0.198578849435 0.826775550842 -0.526316106319 +vn 0.431113153696 0.817532777786 -0.381813555956 +vn 0.580783426762 0.800312280655 -0.148965969682 +vn 0.959924936295 0.276211798191 -0.047446120530 +vn 0.595735132694 0.802459895611 -0.034026179463 +vn 0.821624040604 0.569837808609 -0.014790556394 +vn 0.608188629150 0.793789386749 -0.002241083188 +vn 0.899187266827 0.181444570422 -0.398170948029 +vn 0.680777907372 -0.245913207531 -0.689976930618 +vn 0.514696955681 -0.452449709177 -0.728269398212 +vn 0.308463037014 -0.680599629879 -0.664556026459 +vn 0.066660076380 0.887745559216 -0.455482393503 +vn 0.051930535585 0.759722054005 -0.648171007633 +vn 0.204215809703 0.875489234924 -0.437966346741 +vn 0.303602516651 0.898042857647 -0.318346500397 +vn 0.471732020378 0.870631217957 -0.139535620809 +vn 0.612835109234 0.789989829063 -0.018687246367 +vn 0.111445538700 0.138738974929 -0.984038293362 +vn 0.136222511530 0.118862763047 -0.983521759510 +vn 0.388406604528 0.282540410757 -0.877103865147 +vn 0.789726376534 0.443124949932 -0.424231708050 +vn 0.919620454311 0.379256933928 -0.102285906672 +vn 0.466541439295 0.172797143459 -0.867456197739 +vn 0.861767411232 0.259501397610 -0.435908228159 +vn 0.953080356121 0.265986502171 -0.144530385733 +vn 0.190130040050 -0.505738019943 -0.841474711895 +vn 0.327111840248 -0.327533692122 -0.886408209801 +vn 0.397026985884 -0.158593535423 -0.904000937939 +vn 0.437920242548 0.247203364968 -0.864358961582 +vn 0.177947565913 0.889890611172 -0.420034945011 +vn 0.382198572159 0.923612654209 -0.029392408207 +vn 0.210725978017 0.911358952522 -0.353580802679 +vn 0.588182389736 0.290251731873 -0.754847943783 +vn -0.056468535215 0.997817397118 -0.034231532365 +vn 0.419174700975 0.697869360447 -0.580750286579 +vn 0.635867834091 0.162774860859 -0.754437863827 +vn 0.622432887554 -0.265719026327 -0.736186563969 +vn 0.670991361141 -0.211812466383 -0.710567474365 +vn 0.600237727165 -0.371494263411 -0.708312571049 +vn 0.527454793453 -0.508891642094 -0.680309295654 +vn 0.586801588535 -0.450398892164 -0.672907650471 +vn 0.492590457201 -0.601477980614 -0.628950595856 +vn 0.299581348896 -0.690237522125 -0.658652544022 +vn 0.428285211325 -0.649431049824 -0.628339946270 +vn 0.210632592440 -0.742345869541 -0.636047542095 +# 298 vertex normals + +vt 0.693969249725 0.267712414265 0.000000000000 +vt 0.691957652569 0.252453207970 0.000000000000 +vt 0.711189091206 0.253455460072 0.000000000000 +vt 0.711188614368 0.276466280222 0.000000000000 +vt 0.689561247826 0.273528546095 0.000000000000 +vt 0.711188316345 0.283078074455 0.000000000000 +vt 0.684040725231 0.253205597401 0.000000000000 +vt 0.711189448833 0.230164870620 0.000000000000 +vt 0.694126665592 0.238514959812 0.000000000000 +vt 0.686735391617 0.234010398388 0.000000000000 +vt 0.711189627647 0.221335172653 0.000000000000 +vt 0.686162233353 0.301083952188 0.000000000000 +vt 0.711187779903 0.302173405886 0.000000000000 +vt 0.646568715572 0.300931602716 0.000000000000 +vt 0.647246181965 0.270326375961 0.000000000000 +vt 0.653176188469 0.240066885948 0.000000000000 +vt 0.675701916218 0.217597857118 0.000000000000 +vt 0.711189806461 0.204692870378 0.000000000000 +vt 0.672477364540 0.200536251068 0.000000000000 +vt 0.711189925671 0.191667020321 0.000000000000 +vt 0.639400064945 0.229350119829 0.000000000000 +vt 0.618906140327 0.260833919048 0.000000000000 +vt 0.611778318882 0.283880740404 0.000000000000 +vt 0.620799601078 0.293366223574 0.000000000000 +vt 0.672177553177 0.196028038859 0.000000000000 +vt 0.711190104485 0.188604816794 0.000000000000 +vt 0.637211382389 0.223300501704 0.000000000000 +vt 0.614652335644 0.257536202669 0.000000000000 +vt 0.604927718639 0.284097701311 0.000000000000 +vt 0.600894570351 0.292301714420 0.000000000000 +vt 0.644791305065 0.303213953972 0.000000000000 +vt 0.620770454407 0.297775447369 0.000000000000 +vt 0.604906618595 0.298500627279 0.000000000000 +vt 0.593062460423 0.292929708958 0.000000000000 +vt 0.597961306572 0.301108270884 0.000000000000 +vt 0.562898993492 0.315606623888 0.000000000000 +vt 0.566152870655 0.321667969227 0.000000000000 +vt 0.591642677784 0.284538120031 0.000000000000 +vt 0.604808986187 0.251000344753 0.000000000000 +vt 0.630028128624 0.213372439146 0.000000000000 +vt 0.669203042984 0.185441643000 0.000000000000 +vt 0.711190164089 0.177121341228 0.000000000000 +vt 0.686089754105 0.305715054274 0.000000000000 +vt 0.711187541485 0.305677831173 0.000000000000 +vt 0.711187362671 0.326240509748 0.000000000000 +vt 0.686651229858 0.325173795223 0.000000000000 +vt 0.642379820347 0.317983269691 0.000000000000 +vt 0.627909421921 0.316550165415 0.000000000000 +vt 0.614332139492 0.318283081055 0.000000000000 +vt 0.579019367695 0.339627087116 0.000000000000 +vt 0.711187064648 0.352369874716 0.000000000000 +vt 0.685285449028 0.351363092661 0.000000000000 +vt 0.684090495110 0.390518188477 0.000000000000 +vt 0.711186826229 0.391415446997 0.000000000000 +vt 0.654435455799 0.345935910940 0.000000000000 +vt 0.629127740860 0.345693647861 0.000000000000 +vt 0.592812597752 0.361600548029 0.000000000000 +vt 0.659708023071 0.385638624430 0.000000000000 +vt 0.639491140842 0.382898151875 0.000000000000 +vt 0.608424067497 0.396246492863 0.000000000000 +vt 0.670840024948 0.178903296590 0.000000000000 +vt 0.711190342903 0.173439398408 0.000000000000 +vt 0.626829981804 0.207322746515 0.000000000000 +vt 0.597582578659 0.244060948491 0.000000000000 +vt 0.581799209118 0.276584237814 0.000000000000 +vt 0.579797029495 0.280807852745 0.000000000000 +vt 0.559916317463 0.309428364038 0.000000000000 +vt 0.551391541958 0.275367051363 0.000000000000 +vt 0.553552925587 0.270922154188 0.000000000000 +vt 0.539951503277 0.287049770355 0.000000000000 +vt 0.525860488415 0.270507216454 0.000000000000 +vt 0.524849891663 0.266171693802 0.000000000000 +vt 0.568850576878 0.231656655669 0.000000000000 +vt 0.542081773281 0.229897826910 0.000000000000 +vt 0.555825412273 0.208261787891 0.000000000000 +vt 0.604095578194 0.189161181450 0.000000000000 +vt 0.574873328209 0.187517553568 0.000000000000 +vt 0.600297570229 0.165223434567 0.000000000000 +vt 0.657023131847 0.155225500464 0.000000000000 +vt 0.629184126854 0.147181004286 0.000000000000 +vt 0.661338329315 0.132029339671 0.000000000000 +vt 0.711190462112 0.147452056408 0.000000000000 +vt 0.711190462112 0.125518545508 0.000000000000 +vt 0.728408217430 0.267712503672 0.000000000000 +vt 0.730420291424 0.252453386784 0.000000000000 +vt 0.732815384865 0.273528665304 0.000000000000 +vt 0.738336801529 0.253205716610 0.000000000000 +vt 0.728251993656 0.238515019417 0.000000000000 +vt 0.735643386841 0.234010398388 0.000000000000 +vt 0.736213028431 0.301084220409 0.000000000000 +vt 0.775805413723 0.300932675600 0.000000000000 +vt 0.775129437447 0.270327329636 0.000000000000 +vt 0.769201278687 0.240067556500 0.000000000000 +vt 0.746677398682 0.217597544193 0.000000000000 +vt 0.749902665615 0.200535356998 0.000000000000 +vt 0.782977521420 0.229350984097 0.000000000000 +vt 0.803468883038 0.260835409164 0.000000000000 +vt 0.810595095158 0.283882319927 0.000000000000 +vt 0.801573455334 0.293367087841 0.000000000000 +vt 0.750202536583 0.196026653051 0.000000000000 +vt 0.785166144371 0.223301038146 0.000000000000 +vt 0.807722091675 0.257537961006 0.000000000000 +vt 0.817444801331 0.284099996090 0.000000000000 +vt 0.821477711201 0.292303949594 0.000000000000 +vt 0.777582764626 0.303214758635 0.000000000000 +vt 0.801602602005 0.297776252031 0.000000000000 +vt 0.817465603352 0.298502504826 0.000000000000 +vt 0.829309284687 0.292932361364 0.000000000000 +vt 0.824410498142 0.301110416651 0.000000000000 +vt 0.859471082687 0.315611004829 0.000000000000 +vt 0.856217920780 0.321671456099 0.000000000000 +vt 0.830728709698 0.284541338682 0.000000000000 +vt 0.817565143108 0.251002937555 0.000000000000 +vt 0.792349696159 0.213373169303 0.000000000000 +vt 0.753177225590 0.185440242290 0.000000000000 +vt 0.736285090446 0.305715322495 0.000000000000 +vt 0.735723257065 0.325173884630 0.000000000000 +vt 0.779993951321 0.317983955145 0.000000000000 +vt 0.794463336468 0.316551029682 0.000000000000 +vt 0.808039665222 0.318284481764 0.000000000000 +vt 0.843351721764 0.339629441500 0.000000000000 +vt 0.737088501453 0.351363211870 0.000000000000 +vt 0.738282799721 0.390518248081 0.000000000000 +vt 0.767937660217 0.345936328173 0.000000000000 +vt 0.793244242668 0.345694392920 0.000000000000 +vt 0.829558610916 0.361602157354 0.000000000000 +vt 0.762664377689 0.385638892651 0.000000000000 +vt 0.782880306244 0.382898896933 0.000000000000 +vt 0.813946783543 0.396247714758 0.000000000000 +vt 0.751540362835 0.178901925683 0.000000000000 +vt 0.795547783375 0.207323521376 0.000000000000 +vt 0.824791550636 0.244063988328 0.000000000000 +vt 0.840571880341 0.276588350534 0.000000000000 +vt 0.842573702335 0.280812084675 0.000000000000 +vt 0.862453222275 0.309433519840 0.000000000000 +vt 0.870979070663 0.275373160839 0.000000000000 +vt 0.868818163872 0.270928412676 0.000000000000 +vt 0.882418334484 0.287056386471 0.000000000000 +vt 0.896510243416 0.270515084267 0.000000000000 +vt 0.897521317005 0.266180098057 0.000000000000 +vt 0.853523850441 0.231662020087 0.000000000000 +vt 0.880292475224 0.229905337095 0.000000000000 +vt 0.866551101208 0.208268299699 0.000000000000 +vt 0.818283140659 0.189163461328 0.000000000000 +vt 0.847505390644 0.187522336841 0.000000000000 +vt 0.822083055973 0.165226012468 0.000000000000 +vt 0.765357911587 0.155224815011 0.000000000000 +vt 0.793197333813 0.147181510925 0.000000000000 +vt 0.761043071747 0.132028773427 0.000000000000 +# 149 texture coords + +g Pommel001 +s 1 +f 372/205/409 373/206/410 374/207/411 +f 374/207/411 375/208/412 372/205/409 +f 376/209/413 372/205/409 375/208/412 +f 375/208/412 377/210/414 376/209/413 +f 372/205/409 376/209/413 378/211/415 +f 378/211/415 373/206/410 372/205/409 +f 379/212/416 374/207/411 373/206/410 +f 373/206/410 380/213/417 379/212/416 +f 381/214/418 380/213/417 373/206/410 +f 373/206/410 378/211/415 381/214/418 +f 380/213/417 381/214/418 382/215/419 +f 382/215/419 379/212/416 380/213/417 +f 383/216/420 376/209/413 377/210/414 +f 377/210/414 384/217/421 383/216/420 +f 385/218/422 386/219/423 376/209/413 +f 376/209/413 383/216/420 385/218/422 +f 376/209/413 386/219/423 387/220/424 +f 387/220/424 378/211/415 376/209/413 +f 378/211/415 387/220/424 388/221/425 +f 388/221/425 381/214/418 378/211/415 +f 381/214/418 388/221/425 389/222/426 +f 389/222/426 382/215/419 381/214/418 +f 390/223/427 391/224/428 389/222/426 +f 389/222/426 388/221/425 390/223/427 +f 392/225/429 390/223/427 388/221/425 +f 388/221/425 387/220/424 392/225/429 +f 393/226/430 392/225/429 387/220/424 +f 387/220/424 386/219/423 393/226/430 +f 394/227/431 393/226/430 386/219/423 +f 386/219/423 385/218/422 394/227/431 +f 395/228/432 394/227/431 385/218/422 +f 396/229/433 397/230/434 391/224/428 +f 391/224/428 390/223/427 396/229/433 +f 398/231/435 396/229/433 390/223/427 +f 390/223/427 392/225/429 398/231/435 +f 399/232/436 398/231/435 392/225/429 +f 392/225/429 393/226/430 399/232/436 +f 400/233/437 399/232/436 393/226/430 +f 393/226/430 394/227/431 400/233/437 +f 401/234/438 400/233/437 394/227/431 +f 394/227/431 395/228/432 401/234/438 +f 402/235/439 403/236/440 395/228/432 +f 395/228/432 385/218/422 402/235/439 +f 395/228/432 403/236/440 404/237/441 +f 404/237/441 401/234/438 395/228/432 +f 405/238/442 401/234/438 404/237/441 +f 404/237/441 406/239/443 405/238/442 +f 407/240/444 405/238/442 406/239/443 +f 406/239/443 408/241/445 407/240/444 +f 401/234/438 405/238/442 409/242/446 +f 409/242/446 400/233/437 401/234/438 +f 400/233/437 409/242/446 410/243/447 +f 410/243/447 399/232/436 400/233/437 +f 410/243/447 411/244/448 398/231/435 +f 398/231/435 399/232/436 410/243/447 +f 398/231/435 411/244/448 412/245/449 +f 412/245/449 396/229/433 398/231/435 +f 396/229/433 412/245/449 413/246/450 +f 413/246/450 397/230/434 396/229/433 +f 414/247/451 402/235/439 385/218/422 +f 385/218/422 383/216/420 414/247/451 +f 384/217/421 415/248/452 414/247/451 +f 414/247/451 383/216/420 384/217/421 +f 416/249/453 417/250/454 414/247/451 +f 414/247/451 415/248/452 416/249/453 +f 418/251/455 402/235/439 414/247/451 +f 414/247/451 417/250/454 418/251/455 +f 402/235/439 418/251/455 419/252/456 +f 419/252/456 403/236/440 402/235/439 +f 403/236/440 419/252/456 420/253/457 +f 420/253/457 404/237/441 403/236/440 +f 406/239/443 404/237/441 420/253/457 +f 406/239/443 420/253/457 421/254/458 +f 421/254/458 408/241/445 406/239/443 +f 422/255/459 423/256/460 417/250/454 +f 417/250/454 416/249/453 422/255/459 +f 424/257/461 423/256/460 422/255/459 +f 422/255/459 425/258/462 424/257/461 +f 426/259/463 418/251/455 417/250/454 +f 417/250/454 423/256/460 426/259/463 +f 418/251/455 426/259/463 427/260/464 +f 427/260/464 419/252/456 418/251/455 +f 420/253/457 419/252/456 427/260/464 +f 420/253/457 427/260/464 428/261/465 +f 428/261/465 421/254/458 420/253/457 +f 429/262/466 426/259/463 423/256/460 +f 423/256/460 424/257/461 429/262/466 +f 426/259/463 429/262/466 430/263/467 +f 430/263/467 427/260/464 426/259/463 +f 427/260/464 430/263/467 431/264/468 +f 431/264/468 428/261/465 427/260/464 +f 432/265/469 433/266/470 413/246/450 +f 413/246/450 412/245/449 432/265/469 +f 434/267/471 432/265/469 412/245/449 +f 412/245/449 411/244/448 434/267/471 +f 435/268/472 434/267/471 411/244/448 +f 411/244/448 410/243/447 435/268/472 +f 436/269/473 435/268/472 410/243/447 +f 410/243/447 409/242/446 436/269/473 +f 437/270/474 436/269/473 409/242/446 +f 438/271/475 409/242/446 405/238/442 +f 405/238/442 407/240/444 438/271/475 +f 437/270/474 409/242/446 438/271/475 +f 439/272/476 440/273/477 436/269/473 +f 436/269/473 437/270/474 439/272/476 +f 441/274/478 439/272/476 437/270/474 +f 437/270/474 438/271/475 441/274/478 +f 442/275/479 439/272/476 441/274/478 +f 439/272/476 442/275/479 443/276/480 +f 443/276/480 440/273/477 439/272/476 +f 436/269/473 440/273/477 444/277/481 +f 444/277/481 435/268/472 436/269/473 +f 445/278/482 444/277/481 440/273/477 +f 440/273/477 443/276/480 445/278/482 +f 446/279/483 444/277/481 445/278/482 +f 435/268/472 444/277/481 447/280/484 +f 447/280/484 434/267/471 435/268/472 +f 448/281/485 447/280/484 444/277/481 +f 444/277/481 446/279/483 448/281/485 +f 449/282/486 447/280/484 448/281/485 +f 434/267/471 447/280/484 450/283/487 +f 450/283/487 432/265/469 434/267/471 +f 451/284/488 450/283/487 447/280/484 +f 447/280/484 449/282/486 451/284/488 +f 452/285/489 450/283/487 451/284/488 +f 432/265/469 450/283/487 453/286/490 +f 453/286/490 433/266/470 432/265/469 +f 454/287/491 453/286/490 450/283/487 +f 450/283/487 452/285/489 454/287/491 +f 455/288/492 375/208/412 374/207/411 +f 374/207/411 456/289/493 455/288/492 +f 457/290/494 377/210/414 375/208/412 +f 375/208/412 455/288/492 457/290/494 +f 455/288/492 456/289/493 458/291/495 +f 458/291/495 457/290/494 455/288/492 +f 379/212/416 459/292/496 456/289/493 +f 456/289/493 374/207/411 379/212/416 +f 460/293/497 458/291/495 456/289/493 +f 456/289/493 459/292/496 460/293/497 +f 459/292/496 379/212/416 382/215/419 +f 382/215/419 460/293/497 459/292/496 +f 461/294/498 384/217/421 377/210/414 +f 377/210/414 457/290/494 461/294/498 +f 462/295/499 461/294/498 457/290/494 +f 457/290/494 463/296/500 462/295/499 +f 457/290/494 458/291/495 464/297/501 +f 464/297/501 463/296/500 457/290/494 +f 458/291/495 460/293/497 465/298/502 +f 465/298/502 464/297/501 458/291/495 +f 460/293/497 382/215/419 389/222/426 +f 389/222/426 465/298/502 460/293/497 +f 466/299/503 465/298/502 389/222/426 +f 389/222/426 391/224/428 466/299/503 +f 467/300/504 464/297/501 465/298/502 +f 465/298/502 466/299/503 467/300/504 +f 468/301/505 463/296/500 464/297/501 +f 464/297/501 467/300/504 468/301/505 +f 469/302/506 462/295/499 463/296/500 +f 463/296/500 468/301/505 469/302/506 +f 470/303/507 462/295/499 469/302/506 +f 471/304/508 466/299/503 391/224/428 +f 391/224/428 397/230/434 471/304/508 +f 472/305/509 467/300/504 466/299/503 +f 466/299/503 471/304/508 472/305/509 +f 473/306/510 468/301/505 467/300/504 +f 467/300/504 472/305/509 473/306/510 +f 474/307/511 469/302/506 468/301/505 +f 468/301/505 473/306/510 474/307/511 +f 475/308/512 470/303/507 469/302/506 +f 469/302/506 474/307/511 475/308/512 +f 476/309/513 462/295/499 470/303/507 +f 470/303/507 477/310/514 476/309/513 +f 470/303/507 475/308/512 478/311/515 +f 478/311/515 477/310/514 470/303/507 +f 479/312/516 480/313/517 478/311/515 +f 478/311/515 475/308/512 479/312/516 +f 481/314/518 482/315/519 480/313/517 +f 480/313/517 479/312/516 481/314/518 +f 475/308/512 474/307/511 483/316/520 +f 483/316/520 479/312/516 475/308/512 +f 474/307/511 473/306/510 484/317/521 +f 484/317/521 483/316/520 474/307/511 +f 484/317/521 473/306/510 472/305/509 +f 472/305/509 485/318/522 484/317/521 +f 472/305/509 471/304/508 486/319/523 +f 486/319/523 485/318/522 472/305/509 +f 471/304/508 397/230/434 413/246/450 +f 413/246/450 486/319/523 471/304/508 +f 487/320/524 461/294/498 462/295/499 +f 462/295/499 476/309/513 487/320/524 +f 384/217/421 461/294/498 487/320/524 +f 487/320/524 415/248/452 384/217/421 +f 416/249/453 415/248/452 487/320/524 +f 487/320/524 488/321/525 416/249/453 +f 489/322/526 488/321/525 487/320/524 +f 487/320/524 476/309/513 489/322/526 +f 476/309/513 477/310/514 490/323/527 +f 490/323/527 489/322/526 476/309/513 +f 477/310/514 478/311/515 491/324/528 +f 491/324/528 490/323/527 477/310/514 +f 480/313/517 491/324/528 478/311/515 +f 480/313/517 482/315/519 492/325/529 +f 492/325/529 491/324/528 480/313/517 +f 422/255/459 416/249/453 488/321/525 +f 488/321/525 493/326/530 422/255/459 +f 494/327/531 425/258/462 422/255/459 +f 422/255/459 493/326/530 494/327/531 +f 495/328/532 493/326/530 488/321/525 +f 488/321/525 489/322/526 495/328/532 +f 489/322/526 490/323/527 496/329/533 +f 496/329/533 495/328/532 489/322/526 +f 491/324/528 496/329/533 490/323/527 +f 491/324/528 492/325/529 497/330/534 +f 497/330/534 496/329/533 491/324/528 +f 498/331/535 494/327/531 493/326/530 +f 493/326/530 495/328/532 498/331/535 +f 495/328/532 496/329/533 499/332/536 +f 499/332/536 498/331/535 495/328/532 +f 496/329/533 497/330/534 500/333/537 +f 500/333/537 499/332/536 496/329/533 +f 501/334/538 486/319/523 413/246/450 +f 413/246/450 433/266/470 501/334/538 +f 502/335/539 485/318/522 486/319/523 +f 486/319/523 501/334/538 502/335/539 +f 503/336/540 484/317/521 485/318/522 +f 485/318/522 502/335/539 503/336/540 +f 504/337/541 483/316/520 484/317/521 +f 484/317/521 503/336/540 504/337/541 +f 505/338/542 483/316/520 504/337/541 +f 506/339/543 481/314/518 479/312/516 +f 479/312/516 483/316/520 506/339/543 +f 505/338/542 506/339/543 483/316/520 +f 507/340/544 505/338/542 504/337/541 +f 504/337/541 508/341/545 507/340/544 +f 509/342/546 506/339/543 505/338/542 +f 505/338/542 507/340/544 509/342/546 +f 510/343/547 509/342/546 507/340/544 +f 507/340/544 508/341/545 511/344/548 +f 511/344/548 510/343/547 507/340/544 +f 504/337/541 503/336/540 512/345/549 +f 512/345/549 508/341/545 504/337/541 +f 513/346/550 511/344/548 508/341/545 +f 508/341/545 512/345/549 513/346/550 +f 514/347/551 513/346/550 512/345/549 +f 503/336/540 502/335/539 515/348/552 +f 515/348/552 512/345/549 503/336/540 +f 516/349/553 514/347/551 512/345/549 +f 512/345/549 515/348/552 516/349/553 +f 517/350/554 516/349/553 515/348/552 +f 502/335/539 501/334/538 518/351/555 +f 518/351/555 515/348/552 502/335/539 +f 519/352/556 517/350/554 515/348/552 +f 515/348/552 518/351/555 519/352/556 +f 520/353/557 519/352/556 518/351/555 +f 501/334/538 433/266/470 453/286/490 +f 453/286/490 518/351/555 501/334/538 +f 454/287/491 520/353/557 518/351/555 +f 518/351/555 453/286/490 454/287/491 +s 2 +f 521/205/558 522/208/559 523/207/560 +f 523/207/560 524/206/561 521/205/558 +f 525/209/562 526/210/563 522/208/559 +f 522/208/559 521/205/558 525/209/562 +f 521/205/558 524/206/561 527/211/564 +f 527/211/564 525/209/562 521/205/558 +f 528/212/565 529/213/566 524/206/561 +f 524/206/561 523/207/560 528/212/565 +f 530/214/567 527/211/564 524/206/561 +f 524/206/561 529/213/566 530/214/567 +f 529/213/566 528/212/565 531/215/568 +f 531/215/568 530/214/567 529/213/566 +f 532/216/569 533/217/570 526/210/563 +f 526/210/563 525/209/562 532/216/569 +f 534/218/571 532/216/569 525/209/562 +f 525/209/562 535/219/572 534/218/571 +f 525/209/562 527/211/564 536/220/573 +f 536/220/573 535/219/572 525/209/562 +f 527/211/564 530/214/567 537/221/574 +f 537/221/574 536/220/573 527/211/564 +f 530/214/567 531/215/568 538/222/575 +f 538/222/575 537/221/574 530/214/567 +f 539/223/576 537/221/574 538/222/575 +f 538/222/575 540/224/577 539/223/576 +f 541/225/578 536/220/573 537/221/574 +f 537/221/574 539/223/576 541/225/578 +f 542/226/579 535/219/572 536/220/573 +f 536/220/573 541/225/578 542/226/579 +f 543/227/580 534/218/571 535/219/572 +f 535/219/572 542/226/579 543/227/580 +f 544/228/581 534/218/571 543/227/580 +f 545/229/582 539/223/576 540/224/577 +f 540/224/577 546/230/583 545/229/582 +f 547/231/584 541/225/578 539/223/576 +f 539/223/576 545/229/582 547/231/584 +f 548/232/585 542/226/579 541/225/578 +f 541/225/578 547/231/584 548/232/585 +f 549/233/586 543/227/580 542/226/579 +f 542/226/579 548/232/585 549/233/586 +f 550/234/587 544/228/581 543/227/580 +f 543/227/580 549/233/586 550/234/587 +f 551/235/588 534/218/571 544/228/581 +f 544/228/581 552/236/589 551/235/588 +f 544/228/581 550/234/587 553/237/590 +f 553/237/590 552/236/589 544/228/581 +f 554/238/591 555/239/592 553/237/590 +f 553/237/590 550/234/587 554/238/591 +f 407/240/593 408/241/594 555/239/592 +f 555/239/592 554/238/591 407/240/593 +f 550/234/587 549/233/586 556/242/595 +f 556/242/595 554/238/591 550/234/587 +f 549/233/586 548/232/585 557/243/596 +f 557/243/596 556/242/595 549/233/586 +f 557/243/596 548/232/585 547/231/584 +f 547/231/584 558/244/597 557/243/596 +f 547/231/584 545/229/582 559/245/598 +f 559/245/598 558/244/597 547/231/584 +f 545/229/582 546/230/583 560/246/599 +f 560/246/599 559/245/598 545/229/582 +f 561/247/600 532/216/569 534/218/571 +f 534/218/571 551/235/588 561/247/600 +f 533/217/570 532/216/569 561/247/600 +f 561/247/600 562/248/601 533/217/570 +f 563/249/602 562/248/601 561/247/600 +f 561/247/600 564/250/603 563/249/602 +f 565/251/604 564/250/603 561/247/600 +f 561/247/600 551/235/588 565/251/604 +f 551/235/588 552/236/589 566/252/605 +f 566/252/605 565/251/604 551/235/588 +f 552/236/589 553/237/590 567/253/606 +f 567/253/606 566/252/605 552/236/589 +f 555/239/592 567/253/606 553/237/590 +f 555/239/592 408/241/594 421/254/607 +f 421/254/607 567/253/606 555/239/592 +f 568/255/608 563/249/602 564/250/603 +f 564/250/603 569/256/609 568/255/608 +f 570/257/610 571/258/611 568/255/608 +f 568/255/608 569/256/609 570/257/610 +f 572/259/612 569/256/609 564/250/603 +f 564/250/603 565/251/604 572/259/612 +f 565/251/604 566/252/605 573/260/613 +f 573/260/613 572/259/612 565/251/604 +f 567/253/606 573/260/613 566/252/605 +f 567/253/606 421/254/607 428/261/614 +f 428/261/614 573/260/613 567/253/606 +f 574/262/615 570/257/610 569/256/609 +f 569/256/609 572/259/612 574/262/615 +f 572/259/612 573/260/613 575/263/616 +f 575/263/616 574/262/615 572/259/612 +f 573/260/613 428/261/614 431/264/617 +f 431/264/617 575/263/616 573/260/613 +f 576/265/618 559/245/598 560/246/599 +f 560/246/599 577/266/619 576/265/618 +f 578/267/620 558/244/597 559/245/598 +f 559/245/598 576/265/618 578/267/620 +f 579/268/621 557/243/596 558/244/597 +f 558/244/597 578/267/620 579/268/621 +f 580/269/622 556/242/595 557/243/596 +f 557/243/596 579/268/621 580/269/622 +f 581/270/623 556/242/595 580/269/622 +f 438/271/624 407/240/593 554/238/591 +f 554/238/591 556/242/595 438/271/624 +f 581/270/623 438/271/624 556/242/595 +f 582/272/625 581/270/623 580/269/622 +f 580/269/622 583/273/626 582/272/625 +f 441/274/627 438/271/624 581/270/623 +f 581/270/623 582/272/625 441/274/627 +f 442/275/628 441/274/627 582/272/625 +f 582/272/625 583/273/626 443/276/629 +f 443/276/629 442/275/628 582/272/625 +f 580/269/622 579/268/621 584/277/630 +f 584/277/630 583/273/626 580/269/622 +f 445/278/631 443/276/629 583/273/626 +f 583/273/626 584/277/630 445/278/631 +f 446/279/632 445/278/631 584/277/630 +f 579/268/621 578/267/620 585/280/633 +f 585/280/633 584/277/630 579/268/621 +f 448/281/634 446/279/632 584/277/630 +f 584/277/630 585/280/633 448/281/634 +f 449/282/635 448/281/634 585/280/633 +f 578/267/620 576/265/618 586/283/636 +f 586/283/636 585/280/633 578/267/620 +f 451/284/637 449/282/635 585/280/633 +f 585/280/633 586/283/636 451/284/637 +f 452/285/638 451/284/637 586/283/636 +f 576/265/618 577/266/619 587/286/639 +f 587/286/639 586/283/636 576/265/618 +f 454/287/640 452/285/638 586/283/636 +f 586/283/636 587/286/639 454/287/640 +f 588/288/641 589/289/642 523/207/560 +f 523/207/560 522/208/559 588/288/641 +f 590/290/643 588/288/641 522/208/559 +f 522/208/559 526/210/563 590/290/643 +f 588/288/641 590/290/643 591/291/644 +f 591/291/644 589/289/642 588/288/641 +f 528/212/565 523/207/560 589/289/642 +f 589/289/642 592/292/645 528/212/565 +f 593/293/646 592/292/645 589/289/642 +f 589/289/642 591/291/644 593/293/646 +f 592/292/645 593/293/646 531/215/568 +f 531/215/568 528/212/565 592/292/645 +f 594/294/647 590/290/643 526/210/563 +f 526/210/563 533/217/570 594/294/647 +f 595/295/648 596/296/649 590/290/643 +f 590/290/643 594/294/647 595/295/648 +f 590/290/643 596/296/649 597/297/650 +f 597/297/650 591/291/644 590/290/643 +f 591/291/644 597/297/650 598/298/651 +f 598/298/651 593/293/646 591/291/644 +f 593/293/646 598/298/651 538/222/575 +f 538/222/575 531/215/568 593/293/646 +f 599/299/652 540/224/577 538/222/575 +f 538/222/575 598/298/651 599/299/652 +f 600/300/653 599/299/652 598/298/651 +f 598/298/651 597/297/650 600/300/653 +f 601/301/654 600/300/653 597/297/650 +f 597/297/650 596/296/649 601/301/654 +f 602/302/655 601/301/654 596/296/649 +f 596/296/649 595/295/648 602/302/655 +f 603/303/656 602/302/655 595/295/648 +f 604/304/657 546/230/583 540/224/577 +f 540/224/577 599/299/652 604/304/657 +f 605/305/658 604/304/657 599/299/652 +f 599/299/652 600/300/653 605/305/658 +f 606/306/659 605/305/658 600/300/653 +f 600/300/653 601/301/654 606/306/659 +f 607/307/660 606/306/659 601/301/654 +f 601/301/654 602/302/655 607/307/660 +f 608/308/661 607/307/660 602/302/655 +f 602/302/655 603/303/656 608/308/661 +f 609/309/662 610/310/663 603/303/656 +f 603/303/656 595/295/648 609/309/662 +f 603/303/656 610/310/663 611/311/664 +f 611/311/664 608/308/661 603/303/656 +f 612/312/665 608/308/661 611/311/664 +f 611/311/664 613/313/666 612/312/665 +f 481/314/667 612/312/665 613/313/666 +f 613/313/666 482/315/668 481/314/667 +f 608/308/661 612/312/665 614/316/669 +f 614/316/669 607/307/660 608/308/661 +f 607/307/660 614/316/669 615/317/670 +f 615/317/670 606/306/659 607/307/660 +f 615/317/670 616/318/671 605/305/658 +f 605/305/658 606/306/659 615/317/670 +f 605/305/658 616/318/671 617/319/672 +f 617/319/672 604/304/657 605/305/658 +f 604/304/657 617/319/672 560/246/599 +f 560/246/599 546/230/583 604/304/657 +f 618/320/673 609/309/662 595/295/648 +f 595/295/648 594/294/647 618/320/673 +f 533/217/570 562/248/601 618/320/673 +f 618/320/673 594/294/647 533/217/570 +f 563/249/602 619/321/674 618/320/673 +f 618/320/673 562/248/601 563/249/602 +f 620/322/675 609/309/662 618/320/673 +f 618/320/673 619/321/674 620/322/675 +f 609/309/662 620/322/675 621/323/676 +f 621/323/676 610/310/663 609/309/662 +f 610/310/663 621/323/676 622/324/677 +f 622/324/677 611/311/664 610/310/663 +f 613/313/666 611/311/664 622/324/677 +f 613/313/666 622/324/677 492/325/678 +f 492/325/678 482/315/668 613/313/666 +f 568/255/608 623/326/679 619/321/674 +f 619/321/674 563/249/602 568/255/608 +f 624/327/680 623/326/679 568/255/608 +f 568/255/608 571/258/611 624/327/680 +f 625/328/681 620/322/675 619/321/674 +f 619/321/674 623/326/679 625/328/681 +f 620/322/675 625/328/681 626/329/682 +f 626/329/682 621/323/676 620/322/675 +f 622/324/677 621/323/676 626/329/682 +f 622/324/677 626/329/682 497/330/683 +f 497/330/683 492/325/678 622/324/677 +f 627/331/684 625/328/681 623/326/679 +f 623/326/679 624/327/680 627/331/684 +f 625/328/681 627/331/684 628/332/685 +f 628/332/685 626/329/682 625/328/681 +f 626/329/682 628/332/685 500/333/686 +f 500/333/686 497/330/683 626/329/682 +f 629/334/687 577/266/619 560/246/599 +f 560/246/599 617/319/672 629/334/687 +f 630/335/688 629/334/687 617/319/672 +f 617/319/672 616/318/671 630/335/688 +f 631/336/689 630/335/688 616/318/671 +f 616/318/671 615/317/670 631/336/689 +f 632/337/690 631/336/689 615/317/670 +f 615/317/670 614/316/669 632/337/690 +f 633/338/691 632/337/690 614/316/669 +f 506/339/692 614/316/669 612/312/665 +f 612/312/665 481/314/667 506/339/692 +f 633/338/691 614/316/669 506/339/692 +f 634/340/693 635/341/694 632/337/690 +f 632/337/690 633/338/691 634/340/693 +f 509/342/695 634/340/693 633/338/691 +f 633/338/691 506/339/692 509/342/695 +f 510/343/696 634/340/693 509/342/695 +f 634/340/693 510/343/696 511/344/697 +f 511/344/697 635/341/694 634/340/693 +f 632/337/690 635/341/694 636/345/698 +f 636/345/698 631/336/689 632/337/690 +f 513/346/699 636/345/698 635/341/694 +f 635/341/694 511/344/697 513/346/699 +f 514/347/700 636/345/698 513/346/699 +f 631/336/689 636/345/698 637/348/701 +f 637/348/701 630/335/688 631/336/689 +f 516/349/702 637/348/701 636/345/698 +f 636/345/698 514/347/700 516/349/702 +f 517/350/703 637/348/701 516/349/702 +f 630/335/688 637/348/701 638/351/704 +f 638/351/704 629/334/687 630/335/688 +f 519/352/705 638/351/704 637/348/701 +f 637/348/701 517/350/703 519/352/705 +f 520/353/706 638/351/704 519/352/705 +f 629/334/687 638/351/704 587/286/639 +f 587/286/639 577/266/619 629/334/687 +f 454/287/640 587/286/639 638/351/704 +f 638/351/704 520/353/706 454/287/640 +# 0 polygons - 516 triangles + +# +# object Blade001 +# + +v -1.279258131981 7.002688407898 8.225850105286 +v -1.542172074318 5.551403999329 8.536152839661 +v 0.000000000000 5.603986740112 8.770771980286 +v 0.000000000000 7.234053134918 8.343525886536 +v -1.983867406845 6.992172241211 7.710937500000 +v -1.373907208443 7.633682250977 7.666259765625 +v -2.330913782120 6.308595657349 7.728271484375 +v -2.467628955841 5.551403999329 7.788330078125 +v -0.553615748882 7.938662052155 7.729492187500 +v 0.000000000000 7.980728626251 7.757323741913 +v -1.300291299820 3.931854248047 8.403828620911 +v 0.000000000000 3.900304794312 8.620381355286 +v -1.279258131981 3.216728210449 7.975097656250 +v -0.469483315945 3.027430295944 8.116455078125 +v 0.000000000000 3.046142578125 8.192138671875 +v -2.015417098999 3.826688528061 7.855224609375 +v -2.394013166428 4.646979808807 7.813964843750 +v 0.000000000000 2.744140625000 7.983398437500 +v -0.471740722656 2.740478515625 7.960693359375 +v -1.295959472656 2.993652343750 7.836181640625 +v -2.117187500000 3.593750000000 7.617675781250 +v -2.640686035156 4.607177734375 7.466064453125 +v -2.771132469177 5.554549217224 7.411731719971 +v -2.598327636719 6.360423088074 7.363663673401 +v -2.309737682343 7.079658985138 7.332446098328 +v -1.605504035950 7.876035690308 7.335082054138 +v -0.698464870453 8.191762924194 7.399752140045 +v 0.000000000000 8.281883239746 7.413506984711 +v 0.000000000000 1.201627731323 7.987052917480 +v -1.925640702248 1.268227577209 7.724639892578 +v -3.781258106232 2.204106807709 7.066669464111 +v -4.286609649658 4.274185180664 6.765382766724 +v -4.292729377747 5.579974174500 6.625507354736 +v -4.013618946075 7.116311550140 6.475889205933 +v -3.279711723328 8.197469711304 6.544914245605 +v -2.269076347351 9.096335411072 6.649564743042 +v -1.011702179909 9.708110809326 6.724544525146 +v 0.000000000000 9.907854080200 6.746843338013 +v 0.000000000000 11.439009666443 5.736364364624 +v -1.466067433357 11.247157096863 5.661663055420 +v -2.962812185287 10.424350738525 5.583499908447 +v -4.195783615112 9.313528060913 5.432493209839 +v -5.326178550720 7.560484409332 5.404279708862 +v -6.123922348022 5.610293388367 5.326513290405 +v -6.308470726013 4.030477523804 5.470722198486 +v -6.422563552856 2.105987310410 5.521535873413 +v -3.707060337067 -0.686841487885 7.153198242188 +v -6.449661254883 -0.560726165771 5.581687927246 +v -1.959228038788 -0.742769718170 7.738487243652 +v 0.000000000000 -0.711558341980 7.978431701660 +v -6.810346603394 3.989088535309 4.910598754883 +v -6.873069763184 2.140492200851 4.957737922668 +v -6.540800094604 5.646195888519 4.886106491089 +v -5.747896194458 7.605993270874 4.912023544312 +v -4.592232704163 9.438583374023 4.917000770569 +v -3.244469642639 10.616680145264 4.945758819580 +v -1.654213547707 11.604707717896 4.932232856750 +v 0.000000000000 11.964906692505 4.939621925354 +v -1.986625671387 -1.049316406250 7.588378906250 +v 0.000000000000 -1.071044921875 7.814941406250 +v -3.667129516602 -1.053222656250 6.987060546875 +v -6.129180908203 -1.068359375000 5.612792968750 +v -6.905029296875 -0.825927734375 4.087310791016 +v -6.644287109375 -1.045776367188 4.070190429688 +v -6.599853515625 -1.011596679688 4.872207641602 +v -6.799804687500 -0.706176757813 4.779052734375 +v -6.933837890625 -0.825683593750 -0.000000000000 +v -6.667236328125 -1.037597656250 -0.000000000000 +v -5.663085937500 -1.100585937500 3.958618164063 +v -5.521972656250 -1.101074218750 -0.000000000000 +v -3.481353759766 -1.106933593750 3.883483886719 +v -3.471679687500 -1.106933593750 -0.000000000000 +v -1.776168823242 -1.120849609375 3.954223632813 +v 0.000000000000 -1.127929687500 3.959411621094 +v -1.722366333008 -1.121093750000 -0.000000000000 +v 0.000000000000 -1.128906250000 -0.000000000000 +v -10.860900878906 -0.825927734375 -0.000000000000 +v -10.841796875000 -0.732543945313 3.724853515625 +v -6.820312500000 -0.291198730469 4.908203125000 +v -10.850585937500 0.075561523438 3.880828857422 +v -11.611486434937 -0.089584112167 2.963558197021 +v -11.617065429688 -0.738525390625 2.798583984375 +v -11.629638671875 -0.750976562500 -0.000000000000 +v -11.715087890625 -0.200439453125 -0.000000000000 +v -10.672850608826 2.141886711121 3.904315948486 +v -10.248971939087 4.452369213104 3.856035232544 +v -9.583618164063 6.664123535156 3.864013671875 +v -8.585250854492 9.034851074219 3.828613281250 +v -7.041664123535 11.732306480408 3.824714660645 +v -5.035251617432 13.710966110229 3.840396881104 +v -2.838811874390 15.510814666748 3.930309295654 +v 0.000000000000 15.442077636719 4.338623046875 +v -2.033187866211 18.276733398438 3.892333984375 +v 0.000000000000 18.392822265625 4.087402343750 +v -11.523214340210 2.046043872833 3.006963729858 +v -11.165486335754 4.555921554565 2.982734680176 +v -10.236894607544 7.129869937897 2.980703353882 +v -9.292156219482 9.360402107239 3.003582000732 +v -7.665088653564 12.004989624023 3.005821228027 +v -5.436332702637 14.225864410400 3.005676269531 +v -3.526114463806 15.857543945313 3.043626785278 +v -2.652162551880 18.244712829590 3.005676269531 +v 0.000000000000 24.752889633179 3.932785034180 +v -1.350019454956 24.799831390381 3.867645263672 +v 0.000000000000 30.330726623535 3.915542364120 +v -1.088018417358 30.219854354858 3.849403381348 +v -12.163913726807 5.045806884766 2.618942260742 +v -12.912040710449 2.274749755859 2.801832199097 +v -13.356010437012 1.228537321091 2.793279647827 +v -14.617931365967 0.517078876495 2.395671844482 +v -14.885880470276 -0.099851608276 2.058807373047 +v -20.439453125000 0.203613281250 -0.000000000000 +v -20.123779296875 -0.097412109375 -0.000000000000 +v -17.535308837891 5.076530456543 -0.000000000000 +v -20.048095703125 1.282714843750 -0.000000000000 +v -15.827647209167 7.898452758789 -0.000000000000 +v -10.856458663940 8.610670089722 2.559119224548 +v -9.378349304199 14.107250213623 2.474788665771 +v -8.211334228516 13.784837722778 2.944461822510 +v -8.403367042542 18.807445526123 2.545558929443 +v -7.196082115173 18.620332717896 2.985280990601 +v -5.009454727173 18.484743118286 3.005678176880 +v -14.445232391357 11.151180267334 -0.000000000000 +v -13.014019012451 15.620992660522 -0.000000000000 +v -12.031951904297 19.328516006470 -0.000000000000 +v -1.805343627930 24.732946395874 3.019208908081 +v -4.561100006104 24.747869491577 3.005672454834 +v -6.620174407959 24.859184265137 2.996055603027 +v -7.889729976654 23.471485137939 2.575376510620 +v -11.304306983948 25.292499542236 -0.000000000000 +v -10.921872138977 25.575790405273 -0.000000000000 +v -11.255915641785 26.161035537720 -0.000000000000 +v -11.129775047302 26.766714096069 -0.000000000000 +v -7.895001411438 25.215213775635 2.493228912354 +v -10.862221717834 27.020214080811 -0.000000000000 +v -11.128189086914 27.556646347046 0.000000000000 +v -1.409160614014 30.162214279175 3.059848785400 +v -4.247127532959 30.148481369019 3.003337860107 +v -6.572117805481 30.099298477173 3.000240325928 +v -7.759977340698 30.125118255615 2.451972961426 +v -10.802383422852 30.722721099854 -0.000000000000 +v -0.845468282700 36.233562469482 3.853759765625 +v 0.000000000000 36.214851379395 3.900390386581 +v -1.238435745239 36.102573394775 3.005615234375 +v -4.232473373413 36.065147399902 3.001220703125 +v -6.365724563599 36.083862304688 2.998779296875 +v -7.600765228271 36.083862304688 2.468261718750 +v -10.707078933716 36.121284484863 -0.000000000000 +v 0.000000000000 42.493621826172 3.836425781250 +v -0.600622892380 42.533317565918 3.799560546875 +v -0.997579932213 42.546550750732 3.005371093750 +v -3.816619396210 42.573875427246 3.002441406250 +v -5.875020027161 42.592586517334 3.001708984375 +v -7.184911251068 42.517734527588 2.558837890625 +v -10.646767616272 42.536449432373 -0.000000000000 +v -10.309679985046 46.752670288086 -0.000000000000 +v -6.454856872559 46.565544128418 2.691162109375 +v -5.219816207886 46.294208526611 2.988037109375 +v -3.311113357544 46.191287994385 3.004150390625 +v -0.333877921104 45.612239837646 3.597778320313 +v 0.000000000000 45.414447784424 3.694580078125 +v -0.617435216904 45.668380737305 3.005859375000 +v 0.000000000000 45.947761535645 3.596191406250 +v 0.000000000000 46.406223297119 3.030273437500 +v -3.064714431763 49.377075195313 3.005859375000 +v -10.206760406494 47.678951263428 -0.000000000000 +v -9.869930267334 48.006423950195 -0.000000000000 +v -10.103839874268 48.511669158936 -0.000000000000 +v -5.818626880646 49.531513214111 2.705322265625 +v -9.857404708862 49.994625091553 -0.000000000000 +v -4.468136787415 49.395820617676 3.000000000000 +v -3.364089250565 53.007369995117 2.996582031250 +v 0.000000000000 49.320968627930 3.005615234375 +v 0.000000000000 53.100914001465 3.005615234375 +v -4.655267715454 53.175781250000 2.719238281250 +v -9.389589309692 52.165294647217 -0.000000000000 +v -8.959196090698 54.017856597900 -0.000000000000 +v -2.821460485458 55.309017181396 2.906982421875 +v 0.000000000000 55.159313201904 3.006103515625 +v -3.682246208191 55.496143341064 2.687500000000 +v -7.649345397949 57.760383605957 -0.000000000000 +v -6.358172893524 60.773124694824 -0.000000000000 +v -5.852929115295 60.997680664063 -0.000000000000 +v -5.740653038025 61.746189117432 -0.000000000000 +v -1.736127853394 57.292556762695 2.899414062500 +v 0.000000000000 58.789577484131 2.937744140625 +v -2.241371631622 57.853939056396 2.774110794067 +v 0.000000000000 59.856201171875 2.864686965942 +v -5.029572963715 63.112209320068 -0.000000000000 +v -3.850681304932 65.270027160645 0.000000005982 +v -2.596931934357 67.406631469727 0.000000010219 +v -1.343178749084 69.118980407715 -0.000000000000 +v 0.000000000000 70.293510437012 -0.000000024139 +v -15.302886962891 -0.200439453125 -0.000000000000 +v 1.279258131981 7.002688407898 8.225850105286 +v 1.542172074318 5.551403999329 8.536152839661 +v 1.983867406845 6.992172241211 7.710937500000 +v 1.373907208443 7.633682250977 7.666259765625 +v 2.330913782120 6.308595657349 7.728271484375 +v 2.467628955841 5.551403999329 7.788330078125 +v 0.553615748882 7.938662052155 7.729492187500 +v 1.300291299820 3.931854248047 8.403828620911 +v 0.469483315945 3.027430295944 8.116455078125 +v 1.279258131981 3.216728210449 7.975097656250 +v 2.015417098999 3.826688528061 7.855224609375 +v 2.394013166428 4.646979808807 7.813964843750 +v 0.471740722656 2.740478515625 7.960693359375 +v 1.295959472656 2.993652343750 7.836181640625 +v 2.117187500000 3.593750000000 7.617675781250 +v 2.640686035156 4.607177734375 7.466064453125 +v 2.771132469177 5.554549217224 7.411731719971 +v 2.598327636719 6.360423088074 7.363663673401 +v 2.309737682343 7.079658985138 7.332446098328 +v 1.605504035950 7.876035690308 7.335082054138 +v 0.698464870453 8.191762924194 7.399752140045 +v 1.925640702248 1.268227577209 7.724639892578 +v 3.781258106232 2.204106807709 7.066669464111 +v 4.286609649658 4.274185180664 6.765382766724 +v 4.292729377747 5.579974174500 6.625507354736 +v 4.013618946075 7.116311550140 6.475889205933 +v 3.279711723328 8.197469711304 6.544914245605 +v 2.330577850342 9.123739242554 6.669506072998 +v 1.062492847443 9.658217430115 6.792387008667 +v 1.463444828987 11.185733795166 5.733026504517 +v 2.931399106979 10.403449058533 5.636621475220 +v 4.195783615112 9.313528060913 5.432493209839 +v 5.326178550720 7.560484409332 5.404279708862 +v 6.123922348022 5.610293388367 5.326513290405 +v 6.308470726013 4.030477523804 5.470722198486 +v 6.422563552856 2.105987310410 5.521535873413 +v 3.707060337067 -0.686841487885 7.153198242188 +v 6.449661254883 -0.560726165771 5.581687927246 +v 1.959228038788 -0.742769718170 7.738487243652 +v 6.810346603394 3.989088535309 4.910598754883 +v 6.873069763184 2.140492200851 4.957737922668 +v 6.540800094604 5.646195888519 4.886106491089 +v 5.747896194458 7.605993270874 4.912023544312 +v 4.592232704163 9.438583374023 4.917000770569 +v 3.244469642639 10.616680145264 4.945758819580 +v 1.654213547707 11.604707717896 4.932232856750 +v 1.986625671387 -1.049316406250 7.588378906250 +v 3.667129516602 -1.053222656250 6.987060546875 +v 6.129180908203 -1.068359375000 5.612792968750 +v 6.905029296875 -0.825927734375 4.087310791016 +v 6.799804687500 -0.706176757813 4.779052734375 +v 6.599853515625 -1.011596679688 4.872207641602 +v 6.644287109375 -1.045776367188 4.070190429688 +v 6.933837890625 -0.825683593750 -0.000000000000 +v 6.667236328125 -1.037597656250 -0.000000000000 +v 5.663085937500 -1.100585937500 3.958618164063 +v 5.521972656250 -1.101074218750 -0.000000000000 +v 3.481353759766 -1.106933593750 3.883483886719 +v 3.471679687500 -1.106933593750 -0.000000000000 +v 1.776168823242 -1.120849609375 3.954223632813 +v 1.722366333008 -1.121093750000 -0.000000000000 +v 10.860900878906 -0.825927734375 -0.000000000000 +v 10.841796875000 -0.732543945313 3.724853515625 +v 6.820312500000 -0.291198730469 4.908203125000 +v 10.850585937500 0.075561523438 3.880828857422 +v 11.611486434937 -0.089584112167 2.963558197021 +v 11.617065429688 -0.738525390625 2.798583984375 +v 11.629638671875 -0.750976562500 -0.000000000000 +v 11.715087890625 -0.200439453125 -0.000000000000 +v 10.672850608826 2.141886711121 3.904315948486 +v 10.248971939087 4.452369213104 3.856035232544 +v 9.642471313477 6.710250854492 3.859130859375 +v 8.648365020752 9.176391601563 3.859619140625 +v 7.127048492432 11.734161376953 3.844970703125 +v 5.035251617432 13.710966110229 3.840396881104 +v 2.940452575684 15.596847534180 3.837646484375 +v 2.033187866211 18.276733398438 3.892333984375 +v 11.523214340210 2.046043872833 3.006963729858 +v 11.165486335754 4.555921554565 2.982734680176 +v 10.236894607544 7.129869937897 2.980703353882 +v 9.409442901611 9.378585815430 3.013916015625 +v 7.665088653564 12.004989624023 3.005821228027 +v 5.436332702637 14.225864410400 3.005676269531 +v 3.526114463806 15.857543945313 3.043626785278 +v 2.652162551880 18.244712829590 3.005676269531 +v 1.350019454956 24.799831390381 3.867645263672 +v 1.088018417358 30.219854354858 3.849403381348 +v 12.163913726807 5.045806884766 2.618942260742 +v 12.898164749146 2.690618753433 2.745361328125 +v 13.356010437012 1.228537321091 2.793279647827 +v 14.617931365967 0.517078876495 2.395671844482 +v 14.885880470276 -0.099851608276 2.058807373047 +v 20.439453125000 0.203613281250 -0.000000000000 +v 20.123779296875 -0.097412109375 -0.000000000000 +v 17.535308837891 5.076530456543 -0.000000000000 +v 20.048095703125 1.282714843750 -0.000000000000 +v 10.793937683105 8.593933105469 2.594726562500 +v 9.378349304199 14.107250213623 2.474788665771 +v 8.347919464111 13.799835205078 3.011718750000 +v 8.403367042542 18.807445526123 2.545558929443 +v 7.196082115173 18.620332717896 2.985280990601 +v 5.009454727173 18.484743118286 3.005678176880 +v 15.827647209167 7.898452758789 -0.000000000000 +v 14.445232391357 11.151180267334 -0.000000000000 +v 13.014019012451 15.620992660522 -0.000000000000 +v 12.031951904297 19.328516006470 -0.000000000000 +v 1.805343627930 24.732946395874 3.019208908081 +v 4.561100006104 24.747869491577 3.005672454834 +v 6.620174407959 24.859184265137 2.996055603027 +v 7.972411632538 24.936347961426 2.458740234375 +v 11.119407653809 25.292499542236 -0.000000000000 +v 10.906417846680 28.387502670288 -0.000000000000 +v 8.014627456665 27.416532516479 2.338623046875 +v 10.452597618103 28.556362152100 -0.000000000000 +v 10.864202499390 29.189599990845 -0.000000000000 +v 1.409160614014 30.162214279175 3.059848785400 +v 4.247127532959 30.148481369019 3.003337860107 +v 6.572117805481 30.099298477173 3.000240325928 +v 7.759977340698 30.125118255615 2.451972961426 +v 10.802383422852 30.722721099854 -0.000000000000 +v 0.845468282700 36.233562469482 3.853759765625 +v 1.238435745239 36.102573394775 3.005615234375 +v 4.232473373413 36.065147399902 3.001220703125 +v 6.365724563599 36.083862304688 2.998779296875 +v 7.600765228271 36.083862304688 2.468261718750 +v 10.707078933716 36.121284484863 -0.000000000000 +v 0.600622892380 42.533317565918 3.799560546875 +v 0.997579932213 42.546550750732 3.005371093750 +v 3.816619396210 42.573875427246 3.002441406250 +v 5.875020027161 42.592586517334 3.001708984375 +v 7.184911251068 42.517734527588 2.558837890625 +v 10.646767616272 42.536449432373 -0.000000000000 +v 10.309679985046 46.752670288086 -0.000000000000 +v 6.454856872559 46.565544128418 2.691162109375 +v 5.219816207886 46.294208526611 2.988037109375 +v 3.311113357544 46.191287994385 3.004150390625 +v 0.333877921104 45.612239837646 3.597778320313 +v 0.617435216904 45.668380737305 3.005859375000 +v 3.064714431763 49.377075195313 3.005859375000 +v 9.857404708862 49.994625091553 -0.000000000000 +v 5.818626880646 49.531513214111 2.705322265625 +v 4.468136787415 49.395820617676 3.000000000000 +v 3.364089250565 53.007369995117 2.996582031250 +v 4.655267715454 53.175781250000 2.719238281250 +v 9.389589309692 52.165294647217 -0.000000000000 +v 8.959196090698 54.017856597900 -0.000000000000 +v 2.821460485458 55.309017181396 2.906982421875 +v 3.682246208191 55.496143341064 2.687500000000 +v 7.649345397949 57.760383605957 -0.000000000000 +v 5.029572963715 63.112209320068 -0.000000000000 +v 2.241371631622 57.853939056396 2.710693359375 +v 1.736127853394 57.292556762695 2.899414062500 +v 2.280379056931 62.127208709717 1.560916900635 +v 3.622942924500 65.584709167480 0.000000005982 +v 2.596931934357 67.406631469727 0.000000010219 +v 4.130417346954 64.612014770508 -0.000000000000 +v 1.343178749084 69.118980407715 -0.000000000000 +v 15.302886962891 -0.200439453125 -0.000000000000 +v 17.119758605957 5.592964172363 -0.000000000000 +v 16.687044143677 5.782936096191 -0.000000000000 +v 16.782030105591 6.226202011108 -0.000000000000 +v 3.563245296478 64.671714782715 -0.000000000000 +v -1.279258131981 7.002688407898 -8.225850105286 +v 0.000000000000 7.234053134918 -8.343525886536 +v 0.000000000000 5.603986740112 -8.770771980286 +v -1.542172074318 5.551403999329 -8.536152839661 +v -1.983867406845 6.992172241211 -7.710937500000 +v -1.373907208443 7.633682250977 -7.666259765625 +v -2.330913782120 6.308595657349 -7.728271484375 +v -2.467628955841 5.551403999329 -7.788330078125 +v -0.553615748882 7.938662052155 -7.729492187500 +v 0.000000000000 7.980728626251 -7.757323741913 +v -1.300291299820 3.931854248047 -8.403828620911 +v 0.000000000000 3.900304794312 -8.620381355286 +v -0.469483315945 3.027430295944 -8.116455078125 +v -1.279258131981 3.216728210449 -7.975097656250 +v 0.000000000000 3.046142578125 -8.192138671875 +v -2.015417098999 3.826688528061 -7.855224609375 +v -2.394013166428 4.646979808807 -7.813964843750 +v 0.000000000000 2.744140625000 -7.983398437500 +v -0.471740722656 2.740478515625 -7.960693359375 +v -1.295959472656 2.993652343750 -7.836181640625 +v -2.117187500000 3.593750000000 -7.617675781250 +v -2.640686035156 4.607177734375 -7.466064453125 +v -2.771132469177 5.554549217224 -7.411731719971 +v -2.598327636719 6.360423088074 -7.363663673401 +v -2.309737682343 7.079658985138 -7.332446098328 +v -1.605504035950 7.876035690308 -7.335082054138 +v -0.698464870453 8.191762924194 -7.399752140045 +v 0.000000000000 8.281883239746 -7.413506984711 +v 0.000000000000 1.201627731323 -7.987052917480 +v -1.925640702248 1.268227577209 -7.724639892578 +v -3.781258106232 2.204106807709 -7.066669464111 +v -4.286609649658 4.274185180664 -6.765382766724 +v -4.292729377747 5.579974174500 -6.625507354736 +v -4.013618946075 7.116311550140 -6.475889205933 +v -3.279711723328 8.197469711304 -6.544914245605 +v -2.269076347351 9.096335411072 -6.649564743042 +v -1.011702179909 9.708110809326 -6.724544525146 +v 0.000000000000 9.907854080200 -6.746843338013 +v 0.000000000000 11.439009666443 -5.736364364624 +v -1.466067433357 11.247157096863 -5.661663055420 +v -2.962812185287 10.424350738525 -5.583499908447 +v -4.195783615112 9.313528060913 -5.432493209839 +v -5.326178550720 7.560484409332 -5.404279708862 +v -6.123922348022 5.610293388367 -5.326513290405 +v -6.308470726013 4.030477523804 -5.470722198486 +v -6.422563552856 2.105987310410 -5.521535873413 +v -3.707060337067 -0.686841487885 -7.153198242188 +v -6.449661254883 -0.560726165771 -5.581687927246 +v -1.959228038788 -0.742769718170 -7.738487243652 +v 0.000000000000 -0.711558341980 -7.978431701660 +v -6.810346603394 3.989088535309 -4.910598754883 +v -6.873069763184 2.140492200851 -4.957737922668 +v -6.540800094604 5.646195888519 -4.886106491089 +v -5.747896194458 7.605993270874 -4.912023544312 +v -4.592232704163 9.438583374023 -4.917000770569 +v -3.244469642639 10.616680145264 -4.945758819580 +v -1.654213547707 11.604707717896 -4.932232856750 +v 0.000000000000 11.964906692505 -4.939621925354 +v -1.986625671387 -1.049316406250 -7.588378906250 +v 0.000000000000 -1.071044921875 -7.814941406250 +v -3.667129516602 -1.053222656250 -6.987060546875 +v -6.129180908203 -1.068359375000 -5.612792968750 +v -6.905029296875 -0.825927734375 -4.087310791016 +v -6.799804687500 -0.706176757813 -4.779052734375 +v -6.599853515625 -1.011596679688 -4.872207641602 +v -6.644287109375 -1.045776367188 -4.070190429688 +v -5.663085937500 -1.100585937500 -3.958618164063 +v -3.481353759766 -1.106933593750 -3.883483886719 +v -1.776168823242 -1.120849609375 -3.954223632813 +v 0.000000000000 -1.127929687500 -3.959411621094 +v -10.841796875000 -0.732543945313 -3.724853515625 +v -6.820312500000 -0.291198730469 -4.908203125000 +v -10.850585937500 0.075561523438 -3.880828857422 +v -11.611486434937 -0.089584112167 -2.963558197021 +v -11.617065429688 -0.738525390625 -2.798583984375 +v -10.672850608826 2.141886711121 -3.904315948486 +v -10.248971939087 4.452369213104 -3.856035232544 +v -9.583618164063 6.664123535156 -3.864013671875 +v -8.585250854492 9.034851074219 -3.828613281250 +v -7.041664123535 11.732306480408 -3.824714660645 +v -5.035251617432 13.710966110229 -3.840396881104 +v -2.838811874390 15.510814666748 -3.930309295654 +v 0.000000000000 15.442077636719 -4.338623046875 +v -2.033187866211 18.276733398438 -3.892333984375 +v 0.000000000000 18.392822265625 -4.087402343750 +v -11.523214340210 2.046043872833 -3.006963729858 +v -11.165486335754 4.555921554565 -2.982734680176 +v -10.236894607544 7.129869937897 -2.980703353882 +v -9.292156219482 9.360402107239 -3.003582000732 +v -7.665088653564 12.004989624023 -3.005821228027 +v -5.436332702637 14.225864410400 -3.005676269531 +v -3.526114463806 15.857543945313 -3.043626785278 +v -2.652162551880 18.244712829590 -3.005676269531 +v 0.000000000000 24.752889633179 -3.932785034180 +v -1.350019454956 24.799831390381 -3.867645263672 +v 0.000000000000 30.330726623535 -3.915542364120 +v -1.088018417358 30.219854354858 -3.849403381348 +v -12.163913726807 5.045806884766 -2.618942260742 +v -12.912040710449 2.274749755859 -2.801832199097 +v -13.356010437012 1.228537321091 -2.793279647827 +v -14.617931365967 0.517078876495 -2.395671844482 +v -14.885880470276 -0.099851608276 -2.058807373047 +v -10.856458663940 8.610670089722 -2.559119224548 +v -9.378349304199 14.107250213623 -2.474788665771 +v -8.211334228516 13.784837722778 -2.944461822510 +v -8.403367042542 18.807445526123 -2.545558929443 +v -7.196082115173 18.620332717896 -2.985280990601 +v -5.009454727173 18.484743118286 -3.005678176880 +v -1.805343627930 24.732946395874 -3.019208908081 +v -4.561100006104 24.747869491577 -3.005672454834 +v -6.620174407959 24.859184265137 -2.996055603027 +v -7.889729976654 23.471485137939 -2.575376510620 +v -7.895001411438 25.215213775635 -2.493228912354 +v -1.409160614014 30.162214279175 -3.059848785400 +v -4.247127532959 30.148481369019 -3.003337860107 +v -6.572117805481 30.099298477173 -3.000240325928 +v -7.759977340698 30.125118255615 -2.451972961426 +v -0.845468282700 36.233562469482 -3.853759765625 +v 0.000000000000 36.214851379395 -3.900390386581 +v -1.238435745239 36.102573394775 -3.005615234375 +v -4.232473373413 36.065147399902 -3.001220703125 +v -6.365724563599 36.083862304688 -2.998779296875 +v -7.600765228271 36.083862304688 -2.468261718750 +v 0.000000000000 42.493621826172 -3.836425781250 +v -0.600622892380 42.533317565918 -3.799560546875 +v -0.997579932213 42.546550750732 -3.005371093750 +v -3.816619396210 42.573875427246 -3.002441406250 +v -5.875020027161 42.592586517334 -3.001708984375 +v -7.184911251068 42.517734527588 -2.558837890625 +v -6.454856872559 46.565544128418 -2.691162109375 +v -5.219816207886 46.294208526611 -2.988037109375 +v -3.311113357544 46.191287994385 -3.004150390625 +v -0.333877921104 45.612239837646 -3.597778320313 +v 0.000000000000 45.414447784424 -3.694580078125 +v -0.617435216904 45.668380737305 -3.005859375000 +v 0.000000000000 45.947761535645 -3.596191406250 +v 0.000000000000 46.406223297119 -3.030273437500 +v -3.064714431763 49.377075195313 -3.005859375000 +v -5.818626880646 49.531513214111 -2.705322265625 +v -4.468136787415 49.395820617676 -3.000000000000 +v -3.364089250565 53.007369995117 -2.996582031250 +v 0.000000000000 53.100914001465 -3.005615234375 +v 0.000000000000 49.320968627930 -3.005615234375 +v -4.655267715454 53.175781250000 -2.719238281250 +v -2.821460485458 55.309017181396 -2.906982421875 +v 0.000000000000 55.159313201904 -3.006103515625 +v -3.682246208191 55.496143341064 -2.687500000000 +v -1.736127853394 57.292556762695 -2.899414062500 +v 0.000000000000 58.789577484131 -2.937744140625 +v -2.241371631622 57.853939056396 -2.774110794067 +v 0.000000000000 59.856201171875 -2.864686965942 +v 1.279258131981 7.002688407898 -8.225850105286 +v 1.542172074318 5.551403999329 -8.536152839661 +v 1.983867406845 6.992172241211 -7.710937500000 +v 1.373907208443 7.633682250977 -7.666259765625 +v 2.330913782120 6.308595657349 -7.728271484375 +v 2.467628955841 5.551403999329 -7.788330078125 +v 0.553615748882 7.938662052155 -7.729492187500 +v 1.300291299820 3.931854248047 -8.403828620911 +v 1.279258131981 3.216728210449 -7.975097656250 +v 0.469483315945 3.027430295944 -8.116455078125 +v 2.015417098999 3.826688528061 -7.855224609375 +v 2.394013166428 4.646979808807 -7.813964843750 +v 0.471740722656 2.740478515625 -7.960693359375 +v 1.295959472656 2.993652343750 -7.836181640625 +v 2.117187500000 3.593750000000 -7.617675781250 +v 2.640686035156 4.607177734375 -7.466064453125 +v 2.771132469177 5.554549217224 -7.411731719971 +v 2.598327636719 6.360423088074 -7.363663673401 +v 2.309737682343 7.079658985138 -7.332446098328 +v 1.605504035950 7.876035690308 -7.335082054138 +v 0.698464870453 8.191762924194 -7.399752140045 +v 1.925640702248 1.268227577209 -7.724639892578 +v 3.781258106232 2.204106807709 -7.066669464111 +v 4.286609649658 4.274185180664 -6.765382766724 +v 4.292729377747 5.579974174500 -6.625507354736 +v 4.013618946075 7.116311550140 -6.475889205933 +v 3.279711723328 8.197469711304 -6.544914245605 +v 2.330577850342 9.123739242554 -6.669506072998 +v 1.062492847443 9.658217430115 -6.792387008667 +v 1.463444828987 11.185733795166 -5.733026504517 +v 2.931399106979 10.403449058533 -5.636621475220 +v 4.195783615112 9.313528060913 -5.432493209839 +v 5.326178550720 7.560484409332 -5.404279708862 +v 6.123922348022 5.610293388367 -5.326513290405 +v 6.308470726013 4.030477523804 -5.470722198486 +v 6.422563552856 2.105987310410 -5.521535873413 +v 3.707060337067 -0.686841487885 -7.153198242188 +v 6.449661254883 -0.560726165771 -5.581687927246 +v 1.959228038788 -0.742769718170 -7.738487243652 +v 6.810346603394 3.989088535309 -4.910598754883 +v 6.873069763184 2.140492200851 -4.957737922668 +v 6.540800094604 5.646195888519 -4.886106491089 +v 5.747896194458 7.605993270874 -4.912023544312 +v 4.592232704163 9.438583374023 -4.917000770569 +v 3.244469642639 10.616680145264 -4.945758819580 +v 1.654213547707 11.604707717896 -4.932232856750 +v 1.986625671387 -1.049316406250 -7.588378906250 +v 3.667129516602 -1.053222656250 -6.987060546875 +v 6.129180908203 -1.068359375000 -5.612792968750 +v 6.905029296875 -0.825927734375 -4.087310791016 +v 6.644287109375 -1.045776367188 -4.070190429688 +v 6.599853515625 -1.011596679688 -4.872207641602 +v 6.799804687500 -0.706176757813 -4.779052734375 +v 5.663085937500 -1.100585937500 -3.958618164063 +v 3.481353759766 -1.106933593750 -3.883483886719 +v 1.776168823242 -1.120849609375 -3.954223632813 +v 10.841796875000 -0.732543945313 -3.724853515625 +v 6.820312500000 -0.291198730469 -4.908203125000 +v 10.850585937500 0.075561523438 -3.880828857422 +v 11.611486434937 -0.089584112167 -2.963558197021 +v 11.617065429688 -0.738525390625 -2.798583984375 +v 10.672850608826 2.141886711121 -3.904315948486 +v 10.248971939087 4.452369213104 -3.856035232544 +v 9.642471313477 6.710250854492 -3.859130859375 +v 8.648365020752 9.176391601563 -3.859619140625 +v 7.127048492432 11.734161376953 -3.844970703125 +v 5.035251617432 13.710966110229 -3.840396881104 +v 2.940452575684 15.596847534180 -3.837646484375 +v 2.033187866211 18.276733398438 -3.892333984375 +v 11.523214340210 2.046043872833 -3.006963729858 +v 11.165486335754 4.555921554565 -2.982734680176 +v 10.236894607544 7.129869937897 -2.980703353882 +v 9.409442901611 9.378585815430 -3.013916015625 +v 7.665088653564 12.004989624023 -3.005821228027 +v 5.436332702637 14.225864410400 -3.005676269531 +v 3.526114463806 15.857543945313 -3.043626785278 +v 2.652162551880 18.244712829590 -3.005676269531 +v 1.350019454956 24.799831390381 -3.867645263672 +v 1.088018417358 30.219854354858 -3.849403381348 +v 12.163913726807 5.045806884766 -2.618942260742 +v 12.898164749146 2.690618753433 -2.745361328125 +v 13.356010437012 1.228537321091 -2.793279647827 +v 14.617931365967 0.517078876495 -2.395671844482 +v 14.885880470276 -0.099851608276 -2.058807373047 +v 10.793937683105 8.593933105469 -2.594726562500 +v 9.378349304199 14.107250213623 -2.474788665771 +v 8.347919464111 13.799835205078 -3.011718750000 +v 8.403367042542 18.807445526123 -2.545558929443 +v 7.196082115173 18.620332717896 -2.985280990601 +v 5.009454727173 18.484743118286 -3.005678176880 +v 1.805343627930 24.732946395874 -3.019208908081 +v 4.561100006104 24.747869491577 -3.005672454834 +v 6.620174407959 24.859184265137 -2.996055603027 +v 7.972411632538 24.936347961426 -2.458740234375 +v 8.014627456665 27.416532516479 -2.338623046875 +v 1.409160614014 30.162214279175 -3.059848785400 +v 4.247127532959 30.148481369019 -3.003337860107 +v 6.572117805481 30.099298477173 -3.000240325928 +v 7.759977340698 30.125118255615 -2.451972961426 +v 0.845468282700 36.233562469482 -3.853759765625 +v 1.238435745239 36.102573394775 -3.005615234375 +v 4.232473373413 36.065147399902 -3.001220703125 +v 6.365724563599 36.083862304688 -2.998779296875 +v 7.600765228271 36.083862304688 -2.468261718750 +v 0.600622892380 42.533317565918 -3.799560546875 +v 0.997579932213 42.546550750732 -3.005371093750 +v 3.816619396210 42.573875427246 -3.002441406250 +v 5.875020027161 42.592586517334 -3.001708984375 +v 7.184911251068 42.517734527588 -2.558837890625 +v 6.454856872559 46.565544128418 -2.691162109375 +v 5.219816207886 46.294208526611 -2.988037109375 +v 3.311113357544 46.191287994385 -3.004150390625 +v 0.333877921104 45.612239837646 -3.597778320313 +v 0.617435216904 45.668380737305 -3.005859375000 +v 3.064714431763 49.377075195313 -3.005859375000 +v 5.818626880646 49.531513214111 -2.705322265625 +v 4.468136787415 49.395820617676 -3.000000000000 +v 3.364089250565 53.007369995117 -2.996582031250 +v 4.655267715454 53.175781250000 -2.719238281250 +v 2.821460485458 55.309017181396 -2.906982421875 +v 3.682246208191 55.496143341064 -2.687500000000 +v 2.241371631622 57.853939056396 -2.710693359375 +v 1.736127853394 57.292556762695 -2.899414062500 +v 2.280379056931 62.127208709717 -1.560916900635 +# 631 vertices + +vn -0.348657906055 0.404377490282 0.845527350903 +vn -0.393871694803 0.066974177957 0.916722178459 +vn 0.000000002476 0.077212408185 0.997014641762 +vn 0.000000001244 0.440844714642 0.897583365440 +vn -0.579802691936 0.410714894533 0.703663349152 +vn -0.377808272839 0.594681560993 0.709658145905 +vn -0.670003592968 0.258775115013 0.695794939995 +vn -0.710326254368 0.073713324964 0.700002074242 +vn -0.178217127919 0.675314605236 0.715673685074 +vn -0.000000016244 0.692800223827 0.721129536629 +vn -0.339385449886 -0.307378649712 0.889008402824 +vn -0.000000011259 -0.274196565151 0.961673676968 +vn -0.366710871458 -0.466314166784 0.805030584335 +vn -0.184696927667 -0.452518284321 0.872418642044 +vn 0.000000002407 -0.505250334740 0.862972795963 +vn -0.613578021526 -0.349096626043 0.708275020123 +vn -0.698232471943 -0.169089913368 0.695614814758 +vn 0.000000003682 -0.280238866806 0.959930300713 +vn -0.130716308951 -0.227294236422 0.965013265610 +vn -0.304190725088 -0.220099717379 0.926835536957 +vn -0.470826685429 -0.193460643291 0.860752701759 +vn -0.601362884045 -0.095429196954 0.793256521225 +vn -0.620673000813 0.075960613787 0.780381321907 +vn -0.613258540630 0.223976567388 0.757461845875 +vn -0.529054939747 0.337333977222 0.778656959534 +vn -0.346144318581 0.452267736197 0.821972012520 +vn -0.175249338150 0.555383384228 0.812918782234 +vn -0.004886449315 0.570792615414 0.821079730988 +vn -0.000000002392 -0.011891107075 0.999929308891 +vn -0.238780274987 0.012873188592 0.970988273621 +vn -0.410765260458 0.019732467830 0.911527574062 +vn -0.464507758617 0.053863707930 0.883929431438 +vn -0.503956437111 0.130276322365 0.853847742081 +vn -0.505764961243 0.231660112739 0.830984592438 +vn -0.451246917248 0.323735713959 0.831607699394 +vn -0.340502828360 0.404238343239 0.848910570145 +vn -0.183494091034 0.455144286156 0.871305704117 +vn -0.018896004185 0.477600902319 0.878373682499 +vn -0.003897093236 0.722860634327 0.690982878208 +vn -0.261295944452 0.704562246799 0.659785151482 +vn -0.468821793795 0.605537235737 0.643063604832 +vn -0.562583625317 0.467057943344 0.682170450687 +vn -0.632326602936 0.312629669905 0.708819985390 +vn -0.646781146526 0.190670490265 0.738457143307 +vn -0.652026653290 0.093091726303 0.752459406853 +vn -0.662558913231 0.018807658926 0.748773634434 +vn -0.406389743090 -0.200373351574 0.891458272934 +vn -0.720403373241 -0.182865127921 0.669013738632 +vn -0.213371425867 -0.207566663623 0.954666793346 +vn 0.000000000000 -0.206379696727 0.978471994400 +vn -0.532377362251 0.073701061308 0.843292653561 +vn -0.552146852016 0.009583836421 0.833691835403 +vn -0.505397975445 0.146641209722 0.850334763527 +vn -0.503938138485 0.240697190166 0.829524695873 +vn -0.437944531441 0.353284180164 0.826677024364 +vn -0.385911762714 0.493596106768 0.779381155968 +vn -0.231315732002 0.526032924652 0.818402349949 +vn 0.000000000000 0.507791042328 0.861480295658 +vn -0.215101182461 -0.414512962103 0.884257018566 +vn 0.000000000000 -0.413986146450 0.910283148289 +vn -0.392777502537 -0.406869500875 0.824732124805 +vn -0.598216593266 -0.333006799221 0.728864490986 +vn -0.369604825974 -0.925145447254 0.086591742933 +vn -0.376431405544 -0.926190495491 0.021693805233 +vn -0.427187055349 -0.898730516434 0.098967902362 +vn -0.590798735619 -0.775086462498 0.224048763514 +vn -0.666279017925 -0.314752876759 0.676019847393 +vn -0.796758055687 -0.419318020344 0.435142487288 +vn -0.328895866871 -0.944365620613 0.001061302959 +vn -0.356660723686 -0.934233963490 0.000065159671 +vn -0.027343003079 -0.999610662460 0.005558272824 +vn -0.028522439301 -0.999592721462 -0.000903342268 +vn -0.034183848649 -0.999247312546 0.018336629495 +vn -0.005610992201 -0.999950051308 0.008268751204 +vn -0.005480290856 -0.999984979630 -0.000013651848 +vn -0.004745825194 -0.999821066856 0.018311178312 +vn -0.005929341540 -0.999938011169 0.009424182586 +vn -0.007783817127 -0.999816179276 0.017522888258 +vn -0.000000000074 -0.999958455563 0.009116047993 +vn 0.000000000000 -0.999891161919 0.014752466232 +vn -0.006308165845 -0.999980092049 -0.000013796572 +vn 0.000000000445 -1.000000000000 0.000066307526 +vn -0.054993331432 -0.998308122158 0.018886052072 +vn -0.027185156941 -0.999144613743 0.031160647050 +vn -0.636072933674 -0.125500753522 0.761354565620 +vn -0.526103436947 -0.067840963602 0.847710311413 +vn -0.538776934147 -0.169410407543 0.825239062309 +vn -0.596572458744 -0.091257065535 0.797354042530 +vn -0.757103621960 -0.154839828610 0.634680032730 +vn -0.682031035423 -0.731108784676 0.017708875239 +vn -0.590987145901 -0.806370258331 0.022386278957 +vn -0.658097147942 -0.752291381359 0.031077533960 +vn -0.712235629559 -0.699855089188 0.054067276418 +vn -0.513328611851 0.063343308866 0.855851233006 +vn -0.493697673082 0.124824754894 0.860628485680 +vn -0.509441137314 0.190854728222 0.839073419571 +vn -0.487358182669 0.245527803898 0.837972640991 +vn -0.454867690802 0.364799082279 0.812414288521 +vn -0.390684574842 0.417531818151 0.820385754108 +vn -0.377913117409 0.278145790100 0.883072257042 +vn 0.007356233895 0.135441794991 0.990758001804 +vn -0.490718364716 0.116609215736 0.863480031490 +vn 0.000000000000 0.053597819060 0.998562574387 +vn -0.460912227631 0.063410572708 0.885177373886 +vn -0.499476879835 0.124709509313 0.857304155827 +vn -0.522045552731 0.205911904573 0.827688813210 +vn -0.485541164875 0.217417165637 0.846746444702 +vn -0.337009161711 0.258841753006 0.905221402645 +vn -0.304372072220 0.316533476114 0.898423194885 +vn -0.388548672199 0.280166476965 0.877802193165 +vn -0.473552405834 0.112723015249 0.873522520065 +vn -0.000000004748 0.007514813449 0.999971747398 +vn -0.531092405319 0.046618502587 0.846030473709 +vn 0.000000001188 0.003677238477 0.999993264675 +vn -0.582524120808 0.024902377278 0.812431871891 +vn -0.381649911404 0.143376708031 0.913119077682 +vn -0.281761616468 0.129678860307 0.950680673122 +vn -0.266423851252 0.028707908466 0.963428318501 +vn -0.326498866081 -0.117502026260 0.937865555286 +vn -0.310500919819 -0.348580837250 0.884353220463 +vn -0.377326726913 -0.072681955993 0.923223614693 +vn -0.341672658920 -0.358299076557 0.868839204311 +vn -0.385941684246 0.238308921456 0.891211450100 +vn -0.379442602396 0.178436681628 0.907845616341 +vn -0.442221909761 0.209292098880 0.872144818306 +vn -0.405514270067 0.148655340075 0.901920020580 +vn -0.439526528120 0.107770226896 0.891740977764 +vn -0.189494088292 0.047974791378 0.980709135532 +vn -0.452891111374 0.065431863070 0.889161586761 +vn -0.169308438897 0.020766800269 0.985344290733 +vn -0.007383059245 0.001511541544 0.999971628189 +vn -0.484764158726 0.174090862274 0.857144117355 +vn -0.511830747128 0.145321860909 0.846705853939 +vn -0.553151309490 0.095320284367 0.827609598637 +vn -0.521182835102 0.045902274549 0.852209746838 +vn -0.004295202903 -0.000143271682 0.999990761280 +vn -0.181467875838 0.013719222508 0.983301162720 +vn -0.466554343700 0.043642859906 0.883415162563 +vn -0.479352712631 0.272791236639 0.834149837494 +vn -0.662005960941 -0.037784118205 0.748545587063 +vn -0.617402732372 -0.019711684436 0.786400258541 +vn -0.495342314243 0.262834995985 0.827981770039 +vn -0.488385379314 0.032493691891 0.872022867203 +vn -0.648545265198 -0.014933940023 0.761029541492 +vn -0.632868945599 -0.051256716251 0.772560477257 +vn -0.570176780224 0.023026155308 0.821199238300 +vn -0.009623695165 -0.000751257408 0.999953389168 +vn -0.216029942036 0.003364035627 0.976380944252 +vn -0.523611068726 0.012949660420 0.851858973503 +vn -0.616525471210 0.024747742340 0.786945939064 +vn -0.561692714691 0.024236299098 0.826990842819 +vn -0.000000001188 0.006326657720 0.999979972839 +vn -0.539821445942 0.023373747244 0.841454982758 +vn -0.002601439599 0.001673526946 0.999995231628 +vn -0.201940044761 0.007200285792 0.979371428490 +vn -0.512103199959 0.013614777476 0.858816027641 +vn -0.622783839703 0.009532582946 0.782335877419 +vn 0.000000003569 0.038575615734 0.999255657196 +vn -0.549757540226 0.065558627248 0.832747697830 +vn -0.515042781830 0.041932273656 0.856138169765 +vn -0.000685722975 -0.000189325787 0.999999761581 +vn -0.169119521976 0.023330628872 0.985319375992 +vn -0.462369799614 0.040763825178 0.885749697685 +vn -0.598976850510 0.033258501440 0.800075352192 +vn -0.575516223907 0.062166448683 0.815424025059 +vn -0.401858985424 0.061556637287 0.913630187511 +vn -0.125601395965 0.019017336890 0.991898477077 +vn -0.005420277361 -0.000774247805 0.999985039234 +vn -0.606322467327 0.293920636177 0.738907098770 +vn -0.000000004929 0.092405483127 0.995721459389 +vn -0.423255920410 0.159820511937 0.891802549362 +vn 0.000000000000 0.614815115929 0.788671314716 +vn -0.000000018243 0.211905658245 0.977290153503 +vn -0.003016849514 0.002173374640 0.999993085861 +vn -0.518236160278 0.238688409328 0.821254611015 +vn -0.607441961765 0.041871398687 0.793259739876 +vn -0.597849607468 -0.029336165637 0.801071286201 +vn -0.381963253021 0.091152317822 0.919671297073 +vn -0.545315265656 0.103491209447 0.831817805767 +vn -0.109468802810 0.027704805136 0.993604063988 +vn -0.101194120944 0.048184856772 0.993699133396 +vn -0.000000000009 0.004942932166 0.999987781048 +vn 0.000000001371 0.008699680679 0.999962151051 +vn -0.354301452637 0.130279317498 0.926011741161 +vn -0.540587842464 0.122051335871 0.832387089729 +vn -0.513671696186 0.156331047416 0.843624293804 +vn -0.130279496312 0.063509494066 0.989441156387 +vn -0.000000002374 0.009916097857 0.999950826168 +vn -0.346496909857 0.160593003035 0.924202263355 +vn -0.478555560112 0.193431138992 0.856486439705 +vn -0.287425935268 0.314923524857 0.904549300671 +vn -0.495921432972 0.215283870697 0.841257870197 +vn -0.489696741104 0.203299075365 0.847859978676 +vn -0.092740572989 0.059525478631 0.993909418583 +vn -0.000000002381 0.054758638144 0.998499631882 +vn -0.280231088400 0.180895909667 0.942733883858 +vn -0.002160498407 0.220301106572 0.975429534912 +vn -0.430880248547 0.232375398278 0.871976971626 +vn -0.373955667019 0.228703632951 0.898805737495 +vn -0.336753785610 0.230548053980 0.912931799889 +vn -0.252987593412 0.252179384232 0.934025049210 +vn -0.000000051962 0.264677762985 0.964336931705 +vn -0.014369567856 -0.998559415340 0.051697473973 +vn -0.014445279725 -0.998681902885 0.049252606928 +vn -0.021335989237 -0.998361289501 0.053098823875 +vn 0.348657935858 0.404377520084 0.845527350903 +vn 0.393871694803 0.066974177957 0.916722178459 +vn 0.579802691936 0.410714924335 0.703663349152 +vn 0.377808302641 0.594681620598 0.709658145905 +vn 0.670003652573 0.258775115013 0.695794880390 +vn 0.710326313972 0.073713317513 0.700002074242 +vn 0.178217113018 0.675314605236 0.715673685074 +vn 0.339385449886 -0.307378649712 0.889008402824 +vn 0.184696957469 -0.452518224716 0.872418642044 +vn 0.366710901260 -0.466314196587 0.805030524731 +vn 0.613578081131 -0.349096626043 0.708275020123 +vn 0.698232531548 -0.169089913368 0.695614814758 +vn 0.130716294050 -0.227294221520 0.965013265610 +vn 0.304190754890 -0.220099717379 0.926835536957 +vn 0.470826625824 -0.193460658193 0.860752761364 +vn 0.601362884045 -0.095429211855 0.793256580830 +vn 0.620673000813 0.075960613787 0.780381321907 +vn 0.613258540630 0.223976552486 0.757461845875 +vn 0.529399633408 0.332471132278 0.780511975288 +vn 0.338559240103 0.439960151911 0.831752777100 +vn 0.171855300665 0.542616069317 0.822212576866 +vn 0.238780304790 0.012873191386 0.970988273621 +vn 0.410765260458 0.019732473418 0.911527574062 +vn 0.464507758617 0.053863707930 0.883929431438 +vn 0.503956377506 0.130276322365 0.853847801685 +vn 0.505764961243 0.231660112739 0.830984592438 +vn 0.464490383863 0.309661924839 0.829673528671 +vn 0.353074014187 0.394778817892 0.848226666451 +vn 0.169119417667 0.448882639408 0.877441167831 +vn 0.259979367256 0.696415185928 0.668892085552 +vn 0.468368202448 0.607581794262 0.641463637352 +vn 0.568515121937 0.466112285852 0.677886366844 +vn 0.632326602936 0.312629669905 0.708819985390 +vn 0.646781146526 0.190670475364 0.738457143307 +vn 0.652026712894 0.093091733754 0.752459347248 +vn 0.662558913231 0.018807653338 0.748773634434 +vn 0.406389683485 -0.200373336673 0.891458332539 +vn 0.720403373241 -0.182865127921 0.669013738632 +vn 0.213371396065 -0.207566678524 0.954666793346 +vn 0.531857967377 0.072927452624 0.843687534332 +vn 0.552146852016 0.009583836421 0.833691775799 +vn 0.502267420292 0.143408745527 0.852737605572 +vn 0.496810466051 0.238065376878 0.834568262100 +vn 0.433933556080 0.350140035152 0.830122649670 +vn 0.380254775286 0.491359710693 0.783563613892 +vn 0.230542093515 0.523089170456 0.820504724979 +vn 0.215101167560 -0.414512962103 0.884257018566 +vn 0.392777502537 -0.406869471073 0.824732124805 +vn 0.598216533661 -0.333006769419 0.728864490986 +vn 0.369604855776 -0.925145447254 0.086591742933 +vn 0.590798676014 -0.775086462498 0.224048778415 +vn 0.427187085152 -0.898730516434 0.098967902362 +vn 0.376431465149 -0.926190435886 0.021693803370 +vn 0.666279077530 -0.314752846956 0.676019847393 +vn 0.796758055687 -0.419317990541 0.435142517090 +vn 0.328895837069 -0.944365620613 0.001061302493 +vn 0.356660753489 -0.934233963490 0.000065159547 +vn 0.027343001217 -0.999610662460 0.005558272824 +vn 0.028522437438 -0.999592721462 -0.000903342210 +vn 0.034183852375 -0.999247312546 0.018336631358 +vn 0.005610992201 -0.999950051308 0.008268751204 +vn 0.005480290856 -0.999984979630 -0.000013651848 +vn 0.004745825194 -0.999821066856 0.018311180174 +vn 0.007783818524 -0.999816179276 0.017522888258 +vn 0.005929340608 -0.999938011169 0.009424182586 +vn 0.006308165845 -0.999980092049 -0.000013796572 +vn 0.054993331432 -0.998308122158 0.018886052072 +vn 0.027185158804 -0.999144613743 0.031160656363 +vn 0.636072993279 -0.125500738621 0.761354506016 +vn 0.538776814938 -0.169410422444 0.825239121914 +vn 0.526103377342 -0.067841008306 0.847710311413 +vn 0.596572399139 -0.091257095337 0.797354102135 +vn 0.757103621960 -0.154839828610 0.634680032730 +vn 0.682030856609 -0.731108963490 0.017708875239 +vn 0.590987145901 -0.806370258331 0.022386273369 +vn 0.658097207546 -0.752291381359 0.031077537686 +vn 0.712235629559 -0.699855089188 0.054067276418 +vn 0.513328671455 0.063343323767 0.855851233006 +vn 0.493184477091 0.117547847331 0.861946403980 +vn 0.528615236282 0.182132527232 0.829092085361 +vn 0.489063322544 0.246899232268 0.836575090885 +vn 0.462103992701 0.391190320253 0.795883178711 +vn 0.385243266821 0.421826511621 0.820761859417 +vn 0.406170308590 0.287932187319 0.867248952389 +vn 0.487951397896 0.115981139243 0.865131080151 +vn 0.464384883642 0.064744234085 0.883263766766 +vn 0.502197146416 0.122274242342 0.856064856052 +vn 0.547342360020 0.199827849865 0.812702357769 +vn 0.503027200699 0.214972004294 0.837108552456 +vn 0.333053946495 0.276032745838 0.901599109173 +vn 0.294649720192 0.313971251249 0.902553915977 +vn 0.403634637594 0.287622720003 0.868534564972 +vn 0.475497633219 0.117781504989 0.871796727180 +vn 0.531092464924 0.046618502587 0.846030414104 +vn 0.582524120808 0.024902377278 0.812431812286 +vn 0.378981292248 0.144810661674 0.914003849030 +vn 0.297149509192 0.139885127544 0.944528639317 +vn 0.264514684677 0.028835346922 0.963950455189 +vn 0.326498895884 -0.117501981556 0.937865555286 +vn 0.310500979424 -0.348580837250 0.884353160858 +vn 0.377326726913 -0.072681896389 0.923223614693 +vn 0.341672658920 -0.358299076557 0.868839204311 +vn 0.375892370939 0.263089060783 0.888531982899 +vn 0.379442602396 0.178436696529 0.907845616341 +vn 0.412389487028 0.145071417093 0.899382650852 +vn 0.479244768620 0.113771133125 0.870276153088 +vn 0.219358399510 0.047278832644 0.974498152733 +vn 0.455790877342 0.074565358460 0.886958122253 +vn 0.167651936412 0.031019419432 0.985358119011 +vn 0.005259235390 0.003595819697 0.999979734421 +vn 0.446504652500 0.209023237228 0.870024621487 +vn 0.484305411577 0.174106240273 0.857400298119 +vn 0.511747360229 0.145116373897 0.846791565418 +vn 0.551760375500 0.103822961450 0.827515125275 +vn 0.521182894707 0.045902285725 0.852209687233 +vn 0.004295202903 -0.000143271594 0.999990761280 +vn 0.189918383956 0.014221508987 0.981696903706 +vn 0.491323947906 0.040559604764 0.870032012463 +vn 0.602402985096 0.054557517171 0.796325385571 +vn 0.517820954323 0.336596906185 0.786488354206 +vn 0.529391944408 0.018968170509 0.848165273666 +vn 0.649152815342 0.143984198570 0.746906399727 +vn 0.670710563660 -0.110550537705 0.733434319496 +vn 0.570176839828 0.023026157171 0.821199238300 +vn 0.009623695165 -0.000751257117 0.999953389168 +vn 0.216029956937 0.003364037722 0.976380944252 +vn 0.523193061352 0.012594576925 0.852121114731 +vn 0.625431060791 0.017696797848 0.780078768730 +vn 0.561692774296 0.024236299098 0.826990842819 +vn 0.539821445942 0.023373743519 0.841454982758 +vn 0.002601440530 0.001673526713 0.999995231628 +vn 0.201940029860 0.007200284861 0.979371428490 +vn 0.512103259563 0.013614776544 0.858815968037 +vn 0.622783839703 0.009532582946 0.782335877419 +vn 0.549757540226 0.065558634698 0.832747697830 +vn 0.515042841434 0.041932277381 0.856138169765 +vn 0.000685722916 -0.000189325772 0.999999761581 +vn 0.169119536877 0.023330630735 0.985319375992 +vn 0.462369799614 0.040763832629 0.885749697685 +vn 0.598976850510 0.033258501440 0.800075352192 +vn 0.575017690659 0.069903790951 0.815149128437 +vn 0.400766223669 0.060277551413 0.914195299149 +vn 0.125601381063 0.019017335027 0.991898477077 +vn 0.005420277361 -0.000774246873 0.999985039234 +vn 0.606322467327 0.293920606375 0.738907098770 +vn 0.423255920410 0.159820511937 0.891802549362 +vn 0.003016849514 0.002173374640 0.999993085861 +vn 0.551743328571 0.103858239949 0.827522039413 +vn 0.380638331175 0.091936700046 0.920142412186 +vn 0.109468810260 0.027704806998 0.993604063988 +vn 0.101194135845 0.048184860498 0.993699133396 +vn 0.354301482439 0.130279317498 0.926011741161 +vn 0.540587842464 0.122051298618 0.832387089729 +vn 0.513671696186 0.156331032515 0.843624353409 +vn 0.132250070572 0.071043625474 0.988667130470 +vn 0.342464357615 0.166665956378 0.924629986286 +vn 0.472287148237 0.205444782972 0.857168197632 +vn 0.415488302708 0.237199127674 0.878126442432 +vn 0.301749914885 0.195068046451 0.933217823505 +vn 0.129474207759 0.081463642418 0.988230824471 +vn 0.307070910931 0.287363290787 0.907265007496 +vn 0.458581894636 0.177701532841 0.870703637600 +vn 0.339139521122 0.229493200779 0.912314236164 +vn 0.247144386172 0.372765332460 0.894407987595 +vn 0.252987653017 0.252179384232 0.934025049210 +vn 0.014445278794 -0.998681902885 0.049252606928 +vn 0.014369567856 -0.998559415340 0.051697473973 +vn 0.021335987374 -0.998361289501 0.053098823875 +vn 0.309460133314 0.376036703587 0.873401880264 +vn 0.489034384489 0.161770209670 0.857132315636 +vn 0.495216310024 0.123720444739 0.859915137291 +vn 0.556603431702 0.212121963501 0.803241491318 +vn -0.348657935858 0.404377520084 -0.845527350903 +vn 0.000000004355 0.440844714642 -0.897583365440 +vn 0.000000002476 0.077212400734 -0.997014641762 +vn -0.393871694803 0.066974177957 -0.916722178459 +vn -0.579802691936 0.410714924335 -0.703663349152 +vn -0.377808302641 0.594681620598 -0.709658145905 +vn -0.670003652573 0.258775115013 -0.695794880390 +vn -0.710326313972 0.073713317513 -0.700002074242 +vn -0.178217113018 0.675314605236 -0.715673685074 +vn 0.000000012033 0.692800283432 -0.721129536629 +vn -0.339385449886 -0.307378649712 -0.889008402824 +vn 0.000000006255 -0.274196565151 -0.961673676968 +vn -0.184696957469 -0.452518224716 -0.872418642044 +vn -0.366710901260 -0.466314196587 -0.805030524731 +vn 0.000000002407 -0.505250334740 -0.862972795963 +vn -0.613578081131 -0.349096626043 -0.708275020123 +vn -0.698232531548 -0.169089913368 -0.695614814758 +vn -0.000000003682 -0.280238896608 -0.959930300713 +vn -0.130716294050 -0.227294221520 -0.965013265610 +vn -0.304190754890 -0.220099717379 -0.926835536957 +vn -0.470826625824 -0.193460658193 -0.860752761364 +vn -0.601362884045 -0.095429211855 -0.793256580830 +vn -0.620673000813 0.075960613787 -0.780381321907 +vn -0.613258540630 0.223976552486 -0.757461845875 +vn -0.529054939747 0.337333947420 -0.778656959534 +vn -0.346144318581 0.452267736197 -0.821972012520 +vn -0.175249338150 0.555383384228 -0.812918782234 +vn -0.004886451177 0.570792615414 -0.821079730988 +vn -0.000000002392 -0.011891107075 -0.999929308891 +vn -0.238780304790 0.012873191386 -0.970988273621 +vn -0.410765260458 0.019732473418 -0.911527574062 +vn -0.464507758617 0.053863707930 -0.883929431438 +vn -0.503956377506 0.130276322365 -0.853847801685 +vn -0.505764961243 0.231660112739 -0.830984592438 +vn -0.451246887445 0.323735684156 -0.831607758999 +vn -0.340502828360 0.404238373041 -0.848910570145 +vn -0.183494091034 0.455144286156 -0.871305704117 +vn -0.018896004185 0.477600902319 -0.878373682499 +vn -0.003897081129 0.722860634327 -0.690982878208 +vn -0.261295914650 0.704562246799 -0.659785151482 +vn -0.468821793795 0.605537235737 -0.643063604832 +vn -0.562583625317 0.467057913542 -0.682170510292 +vn -0.632326602936 0.312629669905 -0.708819985390 +vn -0.646781146526 0.190670475364 -0.738457143307 +vn -0.652026712894 0.093091733754 -0.752459347248 +vn -0.662558913231 0.018807653338 -0.748773634434 +vn -0.406389683485 -0.200373336673 -0.891458332539 +vn -0.720403373241 -0.182865127921 -0.669013738632 +vn -0.213371396065 -0.207566678524 -0.954666793346 +vn 0.000000001242 -0.206379696727 -0.978471994400 +vn -0.532377362251 0.073701053858 -0.843292653561 +vn -0.552146852016 0.009583836421 -0.833691775799 +vn -0.505397975445 0.146641224623 -0.850334763527 +vn -0.503938078880 0.240697190166 -0.829524695873 +vn -0.437944501638 0.353284180164 -0.826677024364 +vn -0.385911762714 0.493596106768 -0.779381155968 +vn -0.231315702200 0.526032865047 -0.818402409554 +vn 0.000000000000 0.507791042328 -0.861480295658 +vn -0.215101167560 -0.414512962103 -0.884257018566 +vn 0.000000000000 -0.413986146450 -0.910283148289 +vn -0.392777502537 -0.406869471073 -0.824732124805 +vn -0.598216533661 -0.333006769419 -0.728864490986 +vn -0.369604855776 -0.925145447254 -0.086591742933 +vn -0.590798676014 -0.775086462498 -0.224048778415 +vn -0.427187085152 -0.898730516434 -0.098967902362 +vn -0.376431465149 -0.926190435886 -0.021693803370 +vn -0.666279077530 -0.314752846956 -0.676019847393 +vn -0.796758055687 -0.419317990541 -0.435142517090 +vn -0.328895837069 -0.944365620613 -0.001061302493 +vn -0.356660753489 -0.934233963490 -0.000065159547 +vn -0.027343001217 -0.999610662460 -0.005558272824 +vn -0.028522437438 -0.999592721462 0.000903342210 +vn -0.034183852375 -0.999247312546 -0.018336631358 +vn -0.005610992201 -0.999950051308 -0.008268751204 +vn -0.005480290856 -0.999984979630 0.000013651848 +vn -0.004745825194 -0.999821066856 -0.018311180174 +vn -0.007783818524 -0.999816179276 -0.017522888258 +vn -0.005929340608 -0.999938011169 -0.009424182586 +vn 0.000000000000 -0.999891161919 -0.014752466232 +vn -0.000000000148 -0.999958455563 -0.009116048925 +vn -0.006308165845 -0.999980092049 0.000013796572 +vn -0.000000000445 -1.000000000000 -0.000066307526 +vn -0.054993331432 -0.998308122158 -0.018886052072 +vn -0.027185158804 -0.999144613743 -0.031160656363 +vn -0.636072993279 -0.125500738621 -0.761354506016 +vn -0.538776814938 -0.169410422444 -0.825239121914 +vn -0.526103377342 -0.067841008306 -0.847710311413 +vn -0.596572399139 -0.091257095337 -0.797354102135 +vn -0.757103621960 -0.154839828610 -0.634680032730 +vn -0.682030856609 -0.731108963490 -0.017708875239 +vn -0.590987145901 -0.806370258331 -0.022386273369 +vn -0.658097207546 -0.752291381359 -0.031077537686 +vn -0.712235629559 -0.699855089188 -0.054067276418 +vn -0.513328671455 0.063343323767 -0.855851233006 +vn -0.493697673082 0.124824754894 -0.860628485680 +vn -0.509441196918 0.190854713321 -0.839073419571 +vn -0.487358123064 0.245527788997 -0.837972640991 +vn -0.454867720604 0.364799112082 -0.812414288521 +vn -0.390684604645 0.417531877756 -0.820385694504 +vn -0.377913147211 0.278145790100 -0.883072257042 +vn 0.007356244139 0.135441794991 -0.990758001804 +vn -0.490718364716 0.116609238088 -0.863480031490 +vn 0.000000000000 0.053597819060 -0.998562574387 +vn -0.460912257433 0.063410565257 -0.885177373886 +vn -0.499476879835 0.124709516764 -0.857304155827 +vn -0.522045552731 0.205911904573 -0.827688813210 +vn -0.485541135073 0.217417180538 -0.846746444702 +vn -0.337009131908 0.258841753006 -0.905221402645 +vn -0.304372072220 0.316533476114 -0.898423194885 +vn -0.388548642397 0.280166447163 -0.877802193165 +vn -0.473552346230 0.112723000348 -0.873522579670 +vn 0.000000004748 0.007514814381 -0.999971747398 +vn -0.531092464924 0.046618502587 -0.846030414104 +vn -0.000000003267 0.003677238477 -0.999993264675 +vn -0.582524120808 0.024902377278 -0.812431812286 +vn -0.381649911404 0.143376737833 -0.913119077682 +vn -0.281761646271 0.129678860307 -0.950680673122 +vn -0.266423851252 0.028707915917 -0.963428318501 +vn -0.326498895884 -0.117501981556 -0.937865555286 +vn -0.310500979424 -0.348580837250 -0.884353160858 +vn -0.377326726913 -0.072681896389 -0.923223614693 +vn -0.341672658920 -0.358299076557 -0.868839204311 +vn -0.385941684246 0.238308921456 -0.891211450100 +vn -0.379442602396 0.178436696529 -0.907845616341 +vn -0.442221850157 0.209292098880 -0.872144877911 +vn -0.405514299870 0.148655340075 -0.901920020580 +vn -0.439526528120 0.107770234346 -0.891740977764 +vn -0.189494088292 0.047974791378 -0.980709135532 +vn -0.452891141176 0.065431870520 -0.889161586761 +vn -0.169308438897 0.020766800269 -0.985344290733 +vn -0.007383059245 0.001511541079 -0.999971628189 +vn -0.484764158726 0.174090862274 -0.857144176960 +vn -0.511830687523 0.145321860909 -0.846705913544 +vn -0.553151309490 0.095320276916 -0.827609598637 +vn -0.521182894707 0.045902285725 -0.852209687233 +vn -0.004295202903 -0.000143271594 -0.999990761280 +vn -0.181467875838 0.013719219714 -0.983301162720 +vn -0.466554254293 0.043642897159 -0.883415222168 +vn -0.479352653027 0.272791326046 -0.834149837494 +vn -0.662005960941 -0.037784241140 -0.748545527458 +vn -0.617402732372 -0.019711695611 -0.786400198936 +vn -0.495342373848 0.262834936380 -0.827981710434 +vn -0.488385349512 0.032493703067 -0.872022867203 +vn -0.648545205593 -0.014933895320 -0.761029601097 +vn -0.632868885994 -0.051256742328 -0.772560477257 +vn -0.570176839828 0.023026157171 -0.821199238300 +vn -0.009623695165 -0.000751257117 -0.999953389168 +vn -0.216029956937 0.003364037722 -0.976380944252 +vn -0.523611068726 0.012949661352 -0.851859033108 +vn -0.616525530815 0.024747738615 -0.786945879459 +vn -0.561692774296 0.024236299098 -0.826990842819 +vn -0.000000001188 0.006326657720 -0.999979972839 +vn -0.539821445942 0.023373743519 -0.841454982758 +vn -0.002601440530 0.001673526713 -0.999995231628 +vn -0.201940029860 0.007200284861 -0.979371428490 +vn -0.512103259563 0.013614776544 -0.858815968037 +vn -0.622783839703 0.009532582946 -0.782335877419 +vn -0.000000005353 0.038575623184 -0.999255657196 +vn -0.549757540226 0.065558634698 -0.832747697830 +vn -0.515042841434 0.041932277381 -0.856138169765 +vn -0.000685722916 -0.000189325787 -0.999999761581 +vn -0.169119536877 0.023330630735 -0.985319375992 +vn -0.462369799614 0.040763832629 -0.885749697685 +vn -0.598976850510 0.033258501440 -0.800075352192 +vn -0.575516223907 0.062166392803 -0.815424084663 +vn -0.401858896017 0.061556678265 -0.913630247116 +vn -0.125601381063 0.019017335027 -0.991898477077 +vn -0.005420277361 -0.000774246873 -0.999985039234 +vn -0.606322467327 0.293920606375 -0.738907098770 +vn -0.000000004929 0.092405490577 -0.995721459389 +vn -0.423255920410 0.159820511937 -0.891802549362 +vn 0.000000000000 0.614815115929 -0.788671314716 +vn 0.000000016621 0.211905658245 -0.977290153503 +vn -0.003016849514 0.002173374640 -0.999993085861 +vn -0.518236160278 0.238688394427 -0.821254611015 +vn -0.607441961765 0.041871514171 -0.793259739876 +vn -0.597849607468 -0.029336068779 -0.801071286201 +vn -0.381963253021 0.091152325273 -0.919671297073 +vn -0.545315265656 0.103491179645 -0.831817805767 +vn -0.109468810260 0.027704806998 -0.993604063988 +vn -0.101194135845 0.048184860498 -0.993699133396 +vn -0.000000000593 0.008699680679 -0.999962151051 +vn 0.000000000185 0.004942932632 -0.999987781048 +vn -0.354301482439 0.130279317498 -0.926011741161 +vn -0.540587842464 0.122051298618 -0.832387089729 +vn -0.513671696186 0.156331032515 -0.843624353409 +vn -0.130279511213 0.063509501517 -0.989441156387 +vn 0.000000002077 0.009916097857 -0.999950826168 +vn -0.346496969461 0.160592958331 -0.924202203751 +vn -0.478555530310 0.193431138992 -0.856486439705 +vn -0.287425756454 0.314923584461 -0.904549360275 +vn -0.495921254158 0.215283945203 -0.841257929802 +vn -0.489696711302 0.203299060464 -0.847860038280 +vn -0.092740580440 0.059525478631 -0.993909418583 +vn -0.000000002381 0.054758638144 -0.998499631882 +vn -0.280231088400 0.180895909667 -0.942733883858 +vn -0.002160503296 0.220301106572 -0.975429534912 +vn -0.430880308151 0.232375398278 -0.871976971626 +vn -0.373955696821 0.228703632951 -0.898805737495 +vn -0.336753815413 0.230548053980 -0.912931799889 +vn -0.252987653017 0.252179324627 -0.934025049210 +vn 0.000000069282 0.264677762985 -0.964336931705 +vn -0.014445278794 -0.998681902885 -0.049252606928 +vn -0.014369567856 -0.998559415340 -0.051697473973 +vn -0.021335987374 -0.998361289501 -0.053098823875 +vn 0.348657906055 0.404377490282 -0.845527350903 +vn 0.393871694803 0.066974177957 -0.916722178459 +vn 0.579802691936 0.410714894533 -0.703663349152 +vn 0.377808272839 0.594681560993 -0.709658145905 +vn 0.670003592968 0.258775115013 -0.695794939995 +vn 0.710326254368 0.073713324964 -0.700002074242 +vn 0.178217127919 0.675314605236 -0.715673685074 +vn 0.339385449886 -0.307378649712 -0.889008402824 +vn 0.366710871458 -0.466314166784 -0.805030584335 +vn 0.184696927667 -0.452518284321 -0.872418642044 +vn 0.613578021526 -0.349096626043 -0.708275020123 +vn 0.698232471943 -0.169089913368 -0.695614814758 +vn 0.130716308951 -0.227294236422 -0.965013265610 +vn 0.304190725088 -0.220099717379 -0.926835536957 +vn 0.470826685429 -0.193460643291 -0.860752701759 +vn 0.601362884045 -0.095429196954 -0.793256521225 +vn 0.620673000813 0.075960613787 -0.780381321907 +vn 0.613258540630 0.223976567388 -0.757461845875 +vn 0.529399633408 0.332471132278 -0.780511975288 +vn 0.338559240103 0.439960151911 -0.831752777100 +vn 0.171855330467 0.542616069317 -0.822212576866 +vn 0.238780274987 0.012873188592 -0.970988273621 +vn 0.410765260458 0.019732467830 -0.911527574062 +vn 0.464507758617 0.053863707930 -0.883929431438 +vn 0.503956437111 0.130276322365 -0.853847742081 +vn 0.505764961243 0.231660112739 -0.830984592438 +vn 0.464490443468 0.309661954641 -0.829673469067 +vn 0.353074014187 0.394778817892 -0.848226666451 +vn 0.169119432569 0.448882639408 -0.877441167831 +vn 0.259979397058 0.696415185928 -0.668892085552 +vn 0.468368202448 0.607581794262 -0.641463637352 +vn 0.568515121937 0.466112285852 -0.677886366844 +vn 0.632326602936 0.312629669905 -0.708819985390 +vn 0.646781146526 0.190670490265 -0.738457143307 +vn 0.652026653290 0.093091726303 -0.752459406853 +vn 0.662558913231 0.018807658926 -0.748773634434 +vn 0.406389743090 -0.200373351574 -0.891458272934 +vn 0.720403373241 -0.182865127921 -0.669013738632 +vn 0.213371425867 -0.207566663623 -0.954666793346 +vn 0.531857907772 0.072927452624 -0.843687593937 +vn 0.552146852016 0.009583836421 -0.833691835403 +vn 0.502267420292 0.143408760428 -0.852737605572 +vn 0.496810495853 0.238065347075 -0.834568262100 +vn 0.433933585882 0.350140005350 -0.830122649670 +vn 0.380254745483 0.491359710693 -0.783563613892 +vn 0.230542123318 0.523089289665 -0.820504665375 +vn 0.215101182461 -0.414512962103 -0.884257018566 +vn 0.392777502537 -0.406869500875 -0.824732124805 +vn 0.598216593266 -0.333006799221 -0.728864490986 +vn 0.369604825974 -0.925145447254 -0.086591742933 +vn 0.376431405544 -0.926190495491 -0.021693805233 +vn 0.427187055349 -0.898730516434 -0.098967902362 +vn 0.590798735619 -0.775086462498 -0.224048763514 +vn 0.666279017925 -0.314752876759 -0.676019847393 +vn 0.796758055687 -0.419318020344 -0.435142487288 +vn 0.328895866871 -0.944365620613 -0.001061302959 +vn 0.356660723686 -0.934233963490 -0.000065159671 +vn 0.027343003079 -0.999610662460 -0.005558272824 +vn 0.028522439301 -0.999592721462 0.000903342268 +vn 0.034183848649 -0.999247312546 -0.018336629495 +vn 0.005610992201 -0.999950051308 -0.008268751204 +vn 0.005480290856 -0.999984979630 0.000013651848 +vn 0.004745825194 -0.999821066856 -0.018311178312 +vn 0.005929341540 -0.999938011169 -0.009424182586 +vn 0.007783817127 -0.999816179276 -0.017522888258 +vn 0.006308165845 -0.999980092049 0.000013796572 +vn 0.054993331432 -0.998308122158 -0.018886052072 +vn 0.027185156941 -0.999144613743 -0.031160647050 +vn 0.636072933674 -0.125500753522 -0.761354565620 +vn 0.526103436947 -0.067840963602 -0.847710311413 +vn 0.538776934147 -0.169410407543 -0.825239062309 +vn 0.596572458744 -0.091257065535 -0.797354042530 +vn 0.757103621960 -0.154839828610 -0.634680032730 +vn 0.682031035423 -0.731108784676 -0.017708875239 +vn 0.590987145901 -0.806370258331 -0.022386278957 +vn 0.658097147942 -0.752291381359 -0.031077533960 +vn 0.712235629559 -0.699855089188 -0.054067276418 +vn 0.513328611851 0.063343308866 -0.855851233006 +vn 0.493184477091 0.117547862232 -0.861946403980 +vn 0.528615236282 0.182132512331 -0.829092085361 +vn 0.489063352346 0.246899247169 -0.836575031281 +vn 0.462103992701 0.391190290451 -0.795883178711 +vn 0.385243207216 0.421826481819 -0.820761919022 +vn 0.406170278788 0.287932187319 -0.867248952389 +vn 0.487951397896 0.115981124341 -0.865131080151 +vn 0.464384883642 0.064744241536 -0.883263766766 +vn 0.502197146416 0.122274234891 -0.856064856052 +vn 0.547342360020 0.199827849865 -0.812702417374 +vn 0.503027200699 0.214972004294 -0.837108492851 +vn 0.333053946495 0.276032745838 -0.901599109173 +vn 0.294649720192 0.313971251249 -0.902553915977 +vn 0.403634667397 0.287622720003 -0.868534505367 +vn 0.475497663021 0.117781512439 -0.871796727180 +vn 0.531092405319 0.046618502587 -0.846030473709 +vn 0.582524120808 0.024902377278 -0.812431871891 +vn 0.378981292248 0.144810646772 -0.914003849030 +vn 0.297149449587 0.139885082841 -0.944528639317 +vn 0.264514714479 0.028835330158 -0.963950455189 +vn 0.326498866081 -0.117502026260 -0.937865555286 +vn 0.310500919819 -0.348580837250 -0.884353220463 +vn 0.377326726913 -0.072681955993 -0.923223614693 +vn 0.341672658920 -0.358299076557 -0.868839204311 +vn 0.375892341137 0.263089120388 -0.888531982899 +vn 0.379442602396 0.178436681628 -0.907845616341 +vn 0.412389487028 0.145071417093 -0.899382650852 +vn 0.479244798422 0.113771140575 -0.870276153088 +vn 0.219358429313 0.047278832644 -0.974498152733 +vn 0.455790907145 0.074565358460 -0.886958062649 +vn 0.167651921511 0.031019421294 -0.985358119011 +vn 0.005259236787 0.003595819930 -0.999979734421 +vn 0.484305411577 0.174106255174 -0.857400298119 +vn 0.446504622698 0.209023222327 -0.870024681091 +vn 0.511747360229 0.145116373897 -0.846791565418 +vn 0.551760375500 0.103822976351 -0.827515125275 +vn 0.521182835102 0.045902274549 -0.852209746838 +vn 0.004295202903 -0.000143271682 -0.999990761280 +vn 0.189918413758 0.014221510850 -0.981696844101 +vn 0.491324007511 0.040559608489 -0.870031952858 +vn 0.602402985096 0.054557517171 -0.796325385571 +vn 0.517820894718 0.336597144604 -0.786488354206 +vn 0.529391944408 0.018968058750 -0.848165273666 +vn 0.649152874947 0.143984109163 -0.746906340122 +vn 0.670710563660 -0.110550515354 -0.733434319496 +vn 0.570176780224 0.023026155308 -0.821199238300 +vn 0.009623695165 -0.000751257408 -0.999953389168 +vn 0.216029942036 0.003364035627 -0.976380944252 +vn 0.523193061352 0.012594576925 -0.852121114731 +vn 0.625431060791 0.017696801573 -0.780078768730 +vn 0.561692714691 0.024236299098 -0.826990842819 +vn 0.539821445942 0.023373747244 -0.841454982758 +vn 0.002601439599 0.001673526946 -0.999995231628 +vn 0.201940044761 0.007200285792 -0.979371428490 +vn 0.512103199959 0.013614777476 -0.858816027641 +vn 0.622783839703 0.009532582946 -0.782335877419 +vn 0.549757540226 0.065558627248 -0.832747697830 +vn 0.515042781830 0.041932273656 -0.856138169765 +vn 0.000685722916 -0.000189325787 -0.999999761581 +vn 0.169119521976 0.023330628872 -0.985319375992 +vn 0.462369799614 0.040763825178 -0.885749697685 +vn 0.598976850510 0.033258501440 -0.800075352192 +vn 0.575017690659 0.069903790951 -0.815149128437 +vn 0.400766253471 0.060277551413 -0.914195299149 +vn 0.125601395965 0.019017336890 -0.991898477077 +vn 0.005420277361 -0.000774247805 -0.999985039234 +vn 0.606322467327 0.293920636177 -0.738907098770 +vn 0.423255920410 0.159820511937 -0.891802549362 +vn 0.003016849747 0.002173374640 -0.999993085861 +vn 0.551743268967 0.103858262300 -0.827522099018 +vn 0.380638301373 0.091936700046 -0.920142471790 +vn 0.109468802810 0.027704805136 -0.993604063988 +vn 0.101194120944 0.048184856772 -0.993699133396 +vn 0.354301452637 0.130279317498 -0.926011741161 +vn 0.540587842464 0.122051335871 -0.832387089729 +vn 0.513671696186 0.156331047416 -0.843624293804 +vn 0.132250055671 0.071043625474 -0.988667130470 +vn 0.342464327812 0.166665926576 -0.924629986286 +vn 0.472287148237 0.205444782972 -0.857168197632 +vn 0.415488302708 0.237199082971 -0.878126442432 +vn 0.301749914885 0.195068016648 -0.933217823505 +vn 0.129474207759 0.081463642418 -0.988230824471 +vn 0.339139491320 0.229493200779 -0.912314236164 +vn 0.458581894636 0.177701488137 -0.870703637600 +vn 0.307070881128 0.287363320589 -0.907265007496 +vn 0.247144445777 0.372765243053 -0.894407987595 +vn 0.252987623215 0.252179354429 -0.934025049210 +vn 0.014369567856 -0.998559415340 -0.051697473973 +vn 0.014445279725 -0.998681902885 -0.049252606928 +vn 0.021335989237 -0.998361289501 -0.053098823875 +vn 0.309460014105 0.376036912203 -0.873401820660 +vn 0.489034563303 0.161770164967 -0.857132196426 +vn 0.495216339827 0.123720444739 -0.859915137291 +vn 0.556603372097 0.212121948600 -0.803241550922 +# 754 vertex normals + +vt 0.279092192650 0.160817250609 0.000000000000 +vt 0.276652872562 0.143290519714 0.000000000000 +vt 0.293767184019 0.143425524235 0.000000000000 +vt 0.293774306774 0.162939637899 0.000000000000 +vt 0.269280672073 0.162398606539 0.000000000000 +vt 0.276770770550 0.170404791832 0.000000000000 +vt 0.264844655991 0.154055461287 0.000000000000 +vt 0.263134717941 0.144577860832 0.000000000000 +vt 0.287051767111 0.173574671149 0.000000000000 +vt 0.293772280216 0.173803493381 0.000000000000 +vt 0.278274714947 0.123830378056 0.000000000000 +vt 0.293756604195 0.123381055892 0.000000000000 +vt 0.277083545923 0.114175476134 0.000000000000 +vt 0.287621051073 0.111621208489 0.000000000000 +vt 0.293749958277 0.112109586596 0.000000000000 +vt 0.267866611481 0.122466325760 0.000000000000 +vt 0.263530105352 0.133123144507 0.000000000000 +vt 0.293747544289 0.107912383974 0.000000000000 +vt 0.287470787764 0.107966393232 0.000000000000 +vt 0.276673167944 0.111542731524 0.000000000000 +vt 0.265858054161 0.119699113071 0.000000000000 +vt 0.259185999632 0.132991939783 0.000000000000 +vt 0.258041173220 0.145272776484 0.000000000000 +vt 0.260337740183 0.155547961593 0.000000000000 +vt 0.264276385307 0.164564982057 0.000000000000 +vt 0.273533314466 0.174320206046 0.000000000000 +vt 0.285067200661 0.177862778306 0.000000000000 +vt 0.293765574694 0.178824618459 0.000000000000 +vt 0.293736696243 0.088831484318 0.000000000000 +vt 0.268514454365 0.090383157134 0.000000000000 +vt 0.243595406413 0.103978596628 0.000000000000 +vt 0.237271115184 0.130990386009 0.000000000000 +vt 0.237485453486 0.147909224033 0.000000000000 +vt 0.241574242711 0.167566597462 0.000000000000 +vt 0.251762896776 0.180641904473 0.000000000000 +vt 0.265253126621 0.191108882427 0.000000000000 +vt 0.281299054623 0.198106199503 0.000000000000 +vt 0.293773621321 0.200340867043 0.000000000000 +vt 0.293811529875 0.222958609462 0.000000000000 +vt 0.275064080954 0.220920518041 0.000000000000 +vt 0.255353689194 0.211231306195 0.000000000000 +vt 0.238058790565 0.198280736804 0.000000000000 +vt 0.222170501947 0.176456838846 0.000000000000 +vt 0.210161596537 0.152006894350 0.000000000000 +vt 0.207438185811 0.131409600377 0.000000000000 +vt 0.205036193132 0.106740154326 0.000000000000 +vt 0.243460968137 0.067574799061 0.000000000000 +vt 0.203429847956 0.073111250997 0.000000000000 +vt 0.267610549927 0.065205998719 0.000000000000 +vt 0.293722152710 0.064963229001 0.000000000000 +vt 0.198373407125 0.132289618254 0.000000000000 +vt 0.196053430438 0.108380384743 0.000000000000 +vt 0.203211352229 0.153727620840 0.000000000000 +vt 0.214951723814 0.178687676787 0.000000000000 +vt 0.231264039874 0.201967164874 0.000000000000 +vt 0.249639049172 0.217282176018 0.000000000000 +vt 0.271244138479 0.230183750391 0.000000000000 +vt 0.293849468231 0.234763532877 0.000000000000 +vt 0.266788482666 0.061024643481 0.000000000000 +vt 0.293719172478 0.060039967299 0.000000000000 +vt 0.242892250419 0.062533080578 0.000000000000 +vt 0.206505626440 0.066109538078 0.000000000000 +vt 0.593817830086 0.064906440675 0.000000000000 +vt 0.598366081715 0.064504429698 0.000000000000 +vt 0.599196970463 0.074894726276 0.000000000000 +vt 0.594769239426 0.074160270393 0.000000000000 +vt 0.192510992289 0.071400806308 0.000000000000 +vt 0.194919273257 0.066753543913 0.000000000000 +vt 0.593498170376 0.012898254208 0.000000000000 +vt 0.598044633865 0.012829990126 0.000000000000 +vt 0.611255943775 0.063041962683 0.000000000000 +vt 0.613070726395 0.012785005383 0.000000000000 +vt 0.605191648006 0.084617234766 0.000000000000 +vt 0.639726459980 0.062060710043 0.000000000000 +vt 0.639848768711 0.012775789946 0.000000000000 +vt 0.637302875519 0.102562956512 0.000000000000 +vt 0.661981821060 0.062983274460 0.000000000000 +vt 0.659229815006 0.110413134098 0.000000000000 +vt 0.685161411762 0.063051864505 0.000000000000 +vt 0.685161411762 0.113368168473 0.000000000000 +vt 0.662682533264 0.012774053030 0.000000000000 +vt 0.685161411762 0.012773842551 0.000000000000 +vt 0.542189478874 0.012920113280 0.000000000000 +vt 0.542363345623 0.060148190707 0.000000000000 +vt 0.193619519472 0.077164985240 0.000000000000 +vt 0.141952335835 0.087951220572 0.000000000000 +vt 0.139981940389 0.077814571559 0.000000000000 +vt 0.127117738128 0.087430603802 0.000000000000 +vt 0.124595798552 0.079221136868 0.000000000000 +vt 0.531834483147 0.012932360172 0.000000000000 +vt 0.532548546791 0.048047523946 0.000000000000 +vt 0.524019837379 0.013223555870 0.000000000000 +vt 0.524774730206 0.050543829799 0.000000000000 +vt 0.146560296416 0.113682284951 0.000000000000 +vt 0.153848290443 0.142558187246 0.000000000000 +vt 0.164222404361 0.170106276870 0.000000000000 +vt 0.178433775902 0.199751973152 0.000000000000 +vt 0.199908569455 0.233118355274 0.000000000000 +vt 0.226441949606 0.257866650820 0.000000000000 +vt 0.255826801062 0.281058162451 0.000000000000 +vt 0.293914616108 0.279639184475 0.000000000000 +vt 0.267456114292 0.316560536623 0.000000000000 +vt 0.293959110975 0.317672222853 0.000000000000 +vt 0.131038323045 0.114495977759 0.000000000000 +vt 0.138213440776 0.146180063486 0.000000000000 +vt 0.151932090521 0.178505867720 0.000000000000 +vt 0.165830582380 0.206555858254 0.000000000000 +vt 0.188382193446 0.239745900035 0.000000000000 +vt 0.217771843076 0.267643809319 0.000000000000 +vt 0.242130994797 0.288472503424 0.000000000000 +vt 0.253408193588 0.317904591560 0.000000000000 +vt 0.294068664312 0.398648321629 0.000000000000 +vt 0.276826262474 0.399450063705 0.000000000000 +vt 0.293970733881 0.469358265400 0.000000000000 +vt 0.280343413353 0.468116462231 0.000000000000 +vt 0.125266358256 0.153458654881 0.000000000000 +vt 0.113700918853 0.118867509067 0.000000000000 +vt 0.106969825923 0.106221400201 0.000000000000 +vt 0.089497849345 0.098748564720 0.000000000000 +vt 0.084263138473 0.090813681483 0.000000000000 +vt 0.010370803066 0.101274043322 0.000000000000 +vt 0.013742688112 0.096909575164 0.000000000000 +vt 0.050125323236 0.161172792315 0.000000000000 +vt 0.016216486692 0.114621989429 0.000000000000 +vt 0.073292896152 0.195482611656 0.000000000000 +vt 0.144305467606 0.197974085808 0.000000000000 +vt 0.165709793568 0.266971945763 0.000000000000 +vt 0.181890219450 0.262266606092 0.000000000000 +vt 0.179270744324 0.326230973005 0.000000000000 +vt 0.195537626743 0.323369920254 0.000000000000 +vt 0.223318412900 0.321304351091 0.000000000000 +vt 0.092423833907 0.234990119934 0.000000000000 +vt 0.112009145319 0.289659380913 0.000000000000 +vt 0.124266512692 0.335262089968 0.000000000000 +vt 0.264506727457 0.399592697620 0.000000000000 +vt 0.229552909732 0.400367707014 0.000000000000 +vt 0.203491792083 0.402267545462 0.000000000000 +vt 0.186246037483 0.385043650866 0.000000000000 +vt 0.135919526219 0.410136073828 0.000000000000 +vt 0.140078037977 0.414239943027 0.000000000000 +vt 0.137312203646 0.422066390514 0.000000000000 +vt 0.138385653496 0.429030179977 0.000000000000 +vt 0.186292767525 0.407203346491 0.000000000000 +vt 0.140891298652 0.431963473558 0.000000000000 +vt 0.138248100877 0.438558131456 0.000000000000 +vt 0.269710898399 0.468107283115 0.000000000000 +vt 0.233975932002 0.468597501516 0.000000000000 +vt 0.204761520028 0.468585848808 0.000000000000 +vt 0.188434690237 0.469414830208 0.000000000000 +vt 0.140104487538 0.478123962879 0.000000000000 +vt 0.283495396376 0.544048607349 0.000000000000 +vt 0.293733835220 0.543647766113 0.000000000000 +vt 0.272101879120 0.543111860752 0.000000000000 +vt 0.234652519226 0.543484866619 0.000000000000 +vt 0.208002641797 0.544350326061 0.000000000000 +vt 0.191259533167 0.544846653938 0.000000000000 +vt 0.142028704286 0.546567142010 0.000000000000 +vt 0.293417751789 0.622651815414 0.000000000000 +vt 0.286668747663 0.623345553875 0.000000000000 +vt 0.276368498802 0.624510943890 0.000000000000 +vt 0.241437330842 0.625894486904 0.000000000000 +vt 0.215810939670 0.626704454422 0.000000000000 +vt 0.198562294245 0.626148343086 0.000000000000 +vt 0.145039543509 0.628192484379 0.000000000000 +vt 0.150775477290 0.681741476059 0.000000000000 +vt 0.209448158741 0.677137553692 0.000000000000 +vt 0.225559890270 0.673355102539 0.000000000000 +vt 0.249866768718 0.671681821346 0.000000000000 +vt 0.289900183678 0.661456227303 0.000000000000 +vt 0.293286591768 0.658758401871 0.000000000000 +vt 0.283177137375 0.664474904537 0.000000000000 +vt 0.293284177780 0.664939522743 0.000000000000 +vt 0.293264955282 0.673741340637 0.000000000000 +vt 0.254096895456 0.711820304394 0.000000000000 +vt 0.152412056923 0.693567514420 0.000000000000 +vt 0.156309396029 0.698230564594 0.000000000000 +vt 0.154471173882 0.705141901970 0.000000000000 +vt 0.218577519059 0.714436471462 0.000000000000 +vt 0.158264383674 0.723924160004 0.000000000000 +vt 0.236125782132 0.712312459946 0.000000000000 +vt 0.250644892454 0.757775127888 0.000000000000 +vt 0.293215423822 0.710795581341 0.000000000000 +vt 0.293182671070 0.758755862713 0.000000000000 +vt 0.234008625150 0.760227859020 0.000000000000 +vt 0.164984166622 0.751352250576 0.000000000000 +vt 0.171113684773 0.774802684784 0.000000000000 +vt 0.257522344589 0.786863923073 0.000000000000 +vt 0.293190121651 0.784820616245 0.000000000000 +vt 0.246335104108 0.789522647858 0.000000000000 +vt 0.188522949815 0.822073996067 0.000000000000 +vt 0.205424919724 0.860183238983 0.000000000000 +vt 0.211855441332 0.863531649113 0.000000000000 +vt 0.214188322425 0.873035252094 0.000000000000 +vt 0.271401911974 0.811815917492 0.000000000000 +vt 0.293284565210 0.830732941628 0.000000000000 +vt 0.265059620142 0.818981647491 0.000000000000 +vt 0.293390423059 0.844072520733 0.000000000000 +vt 0.223811522126 0.890360891819 0.000000000000 +vt 0.239645019174 0.915879309177 0.000000000000 +vt 0.256651014090 0.941536724567 0.000000000000 +vt 0.273990839720 0.965911328793 0.000000000000 +vt 0.292698651552 0.987355709076 0.000000000000 +vt 0.482337355614 0.038731846958 0.000000000000 +vt 0.476913392544 0.013217934407 0.000000000000 +vt 0.413997292519 0.013216498308 0.000000000000 +vt 0.308458715677 0.160793662071 0.000000000000 +vt 0.310882121325 0.143265739083 0.000000000000 +vt 0.318275213242 0.162359461188 0.000000000000 +vt 0.310786962509 0.170373618603 0.000000000000 +vt 0.322704613209 0.154012590647 0.000000000000 +vt 0.324403673410 0.144534125924 0.000000000000 +vt 0.300498455763 0.173557102680 0.000000000000 +vt 0.309239685535 0.123808585107 0.000000000000 +vt 0.299878537655 0.111613065004 0.000000000000 +vt 0.310419768095 0.114152580500 0.000000000000 +vt 0.319648534060 0.122429281473 0.000000000000 +vt 0.323993444443 0.133081302047 0.000000000000 +vt 0.300024867058 0.107958123088 0.000000000000 +vt 0.310827910900 0.111519567668 0.000000000000 +vt 0.321655631065 0.119659908116 0.000000000000 +vt 0.328339278698 0.132945045829 0.000000000000 +vt 0.329499810934 0.145221784711 0.000000000000 +vt 0.327215939760 0.155497997999 0.000000000000 +vt 0.323285728693 0.164515256882 0.000000000000 +vt 0.314030349255 0.174276217818 0.000000000000 +vt 0.302475422621 0.177829250693 0.000000000000 +vt 0.318961441517 0.090350151062 0.000000000000 +vt 0.343898296356 0.103913225234 0.000000000000 +vt 0.350254535675 0.130913630128 0.000000000000 +vt 0.350060939789 0.147827520967 0.000000000000 +vt 0.346002578735 0.167484909296 0.000000000000 +vt 0.335846692324 0.180568680167 0.000000000000 +vt 0.322976678610 0.191258519888 0.000000000000 +vt 0.306809604168 0.197124421597 0.000000000000 +vt 0.312429696321 0.219748809934 0.000000000000 +vt 0.331749469042 0.210652008653 0.000000000000 +vt 0.349589109421 0.198196470737 0.000000000000 +vt 0.365415811539 0.176347225904 0.000000000000 +vt 0.377389431000 0.151890337467 0.000000000000 +vt 0.380090773106 0.131298542023 0.000000000000 +vt 0.382462829351 0.106632202864 0.000000000000 +vt 0.343988597393 0.067510895431 0.000000000000 +vt 0.384025871754 0.073001995683 0.000000000000 +vt 0.319834738970 0.065172143281 0.000000000000 +vt 0.389160275459 0.132172420621 0.000000000000 +vt 0.391450643539 0.108268186450 0.000000000000 +vt 0.384336858988 0.153604209423 0.000000000000 +vt 0.372623950243 0.178567737341 0.000000000000 +vt 0.356365472078 0.201877683401 0.000000000000 +vt 0.338046193123 0.217244759202 0.000000000000 +vt 0.316445469856 0.230152159929 0.000000000000 +vt 0.320651769638 0.060989841819 0.000000000000 +vt 0.344551205635 0.062468528748 0.000000000000 +vt 0.380944460630 0.066003106534 0.000000000000 +vt 0.776516199112 0.064906351268 0.000000000000 +vt 0.775564789772 0.074160188437 0.000000000000 +vt 0.771135091782 0.074894689023 0.000000000000 +vt 0.771965980530 0.064504377544 0.000000000000 +vt 0.394942551851 0.071289546788 0.000000000000 +vt 0.392533808947 0.066642642021 0.000000000000 +vt 0.776836037636 0.012898175977 0.000000000000 +vt 0.772287428379 0.012829931453 0.000000000000 +vt 0.759073555470 0.063041917980 0.000000000000 +vt 0.757258713245 0.012784957886 0.000000000000 +vt 0.765137851238 0.084617197514 0.000000000000 +vt 0.730599999428 0.062060672790 0.000000000000 +vt 0.730477690697 0.012775757350 0.000000000000 +vt 0.733023524284 0.102562919259 0.000000000000 +vt 0.711093962193 0.110413119197 0.000000000000 +vt 0.708342015743 0.062983259559 0.000000000000 +vt 0.707641243935 0.012774032541 0.000000000000 +vt 0.828146755695 0.012920029461 0.000000000000 +vt 0.827972352505 0.060148101300 0.000000000000 +vt 0.393840283155 0.077053010464 0.000000000000 +vt 0.447468161583 0.077656529844 0.000000000000 +vt 0.445509105921 0.087796546519 0.000000000000 +vt 0.460318297148 0.087258562446 0.000000000000 +vt 0.462850004435 0.079052373767 0.000000000000 +vt 0.838503777981 0.012932281010 0.000000000000 +vt 0.837789773941 0.048047441989 0.000000000000 +vt 0.846320033073 0.013223481365 0.000000000000 +vt 0.845565199852 0.050543759018 0.000000000000 +vt 0.440955042839 0.113536685705 0.000000000000 +vt 0.433704137802 0.142429620028 0.000000000000 +vt 0.423998445272 0.170602753758 0.000000000000 +vt 0.409664630890 0.201329827309 0.000000000000 +vt 0.388700485229 0.232926800847 0.000000000000 +vt 0.361338675022 0.257830232382 0.000000000000 +vt 0.333415836096 0.282273352146 0.000000000000 +vt 0.320457369089 0.316592246294 0.000000000000 +vt 0.456498473883 0.114325098693 0.000000000000 +vt 0.449353724718 0.146008074284 0.000000000000 +vt 0.435833483934 0.178396180272 0.000000000000 +vt 0.423221200705 0.206713333726 0.000000000000 +vt 0.399435788393 0.239824280143 0.000000000000 +vt 0.370024830103 0.267683804035 0.000000000000 +vt 0.345640718937 0.288460552692 0.000000000000 +vt 0.334514379501 0.317959725857 0.000000000000 +vt 0.311324447393 0.399492084980 0.000000000000 +vt 0.307606786489 0.468143939972 0.000000000000 +vt 0.462306261063 0.153254583478 0.000000000000 +vt 0.473402470350 0.123898357153 0.000000000000 +vt 0.480543017387 0.105945855379 0.000000000000 +vt 0.497979432344 0.098386064172 0.000000000000 +vt 0.503173410892 0.090423613787 0.000000000000 +vt 0.577115774155 0.100450664759 0.000000000000 +vt 0.573722779751 0.096106402576 0.000000000000 +vt 0.537782371044 0.160605818033 0.000000000000 +vt 0.571330130100 0.113829925656 0.000000000000 +vt 0.442559689283 0.197564572096 0.000000000000 +vt 0.422345250845 0.266956418753 0.000000000000 +vt 0.407587140799 0.262466430664 0.000000000000 +vt 0.408709853888 0.326272159815 0.000000000000 +vt 0.392451137304 0.323440313339 0.000000000000 +vt 0.364631384611 0.321389466524 0.000000000000 +vt 0.514451801777 0.195048153400 0.000000000000 +vt 0.495479196310 0.234671562910 0.000000000000 +vt 0.476036429405 0.289457410574 0.000000000000 +vt 0.463743090630 0.334978193045 0.000000000000 +vt 0.323677361012 0.399675816298 0.000000000000 +vt 0.358703047037 0.400510877371 0.000000000000 +vt 0.384895265102 0.402498930693 0.000000000000 +vt 0.403190106153 0.403880774975 0.000000000000 +vt 0.452717512846 0.409588158131 0.000000000000 +vt 0.450107276440 0.448300004005 0.000000000000 +vt 0.404095560312 0.435363620520 0.000000000000 +vt 0.445321559906 0.451566219330 0.000000000000 +vt 0.448834657669 0.460145205259 0.000000000000 +vt 0.318248987198 0.468143969774 0.000000000000 +vt 0.354004770517 0.468755066395 0.000000000000 +vt 0.383260101080 0.468853384256 0.000000000000 +vt 0.399647474289 0.469758898020 0.000000000000 +vt 0.447902947664 0.479051172733 0.000000000000 +vt 0.303967982531 0.544053792953 0.000000000000 +vt 0.315365791321 0.543121159077 0.000000000000 +vt 0.352813482285 0.543662130833 0.000000000000 +vt 0.379459708929 0.544651508331 0.000000000000 +vt 0.396195650101 0.545264363289 0.000000000000 +vt 0.445406794548 0.547418117523 0.000000000000 +vt 0.300162166357 0.623329758644 0.000000000000 +vt 0.310456901789 0.624496936798 0.000000000000 +vt 0.345381885767 0.626024723053 0.000000000000 +vt 0.371006041765 0.626949667931 0.000000000000 +vt 0.388266712427 0.626516461372 0.000000000000 +vt 0.441770911217 0.629094719887 0.000000000000 +vt 0.435423582792 0.682761490345 0.000000000000 +vt 0.376892387867 0.677312910557 0.000000000000 +vt 0.360897213221 0.673494338989 0.000000000000 +vt 0.336659908295 0.671761989594 0.000000000000 +vt 0.296677112579 0.661440193653 0.000000000000 +vt 0.303394138813 0.664461195469 0.000000000000 +vt 0.332328021526 0.711873352528 0.000000000000 +vt 0.428199291229 0.723868608475 0.000000000000 +vt 0.367850393057 0.714522778988 0.000000000000 +vt 0.350292950869 0.712394893169 0.000000000000 +vt 0.335718601942 0.757789134979 0.000000000000 +vt 0.352355569601 0.760237991810 0.000000000000 +vt 0.421442568302 0.751406490803 0.000000000000 +vt 0.415225952864 0.774924099445 0.000000000000 +vt 0.328823029995 0.786829590797 0.000000000000 +vt 0.339932590723 0.789423167706 0.000000000000 +vt 0.397620022297 0.822172820568 0.000000000000 +vt 0.363752037287 0.889738202095 0.000000000000 +vt 0.321590840816 0.819177210331 0.000000000000 +vt 0.315101504326 0.811837315559 0.000000000000 +vt 0.324435144663 0.875239789486 0.000000000000 +vt 0.343651980162 0.920243859291 0.000000000000 +vt 0.329185515642 0.941863715649 0.000000000000 +vt 0.352173417807 0.908776462078 0.000000000000 +vt 0.311614096165 0.966086924076 0.000000000000 +vt 0.893427491188 0.013217856176 0.000000000000 +vt 0.888003468513 0.038731768727 0.000000000000 +vt 0.956343948841 0.013216418214 0.000000000000 +vt 0.532367885113 0.166844710708 0.000000000000 +vt 0.527034461498 0.169312894344 0.000000000000 +vt 0.527348637581 0.174822822213 0.000000000000 +vt 0.345019072294 0.910125851631 0.000000000000 +# 377 texture coords + +g Blade001 +s 1 +f 639/354/707 640/355/708 641/356/709 +f 641/356/709 642/357/710 639/354/707 +f 643/358/711 639/354/707 644/359/712 +f 640/355/708 639/354/707 643/358/711 +f 643/358/711 645/360/713 640/355/708 +f 646/361/714 640/355/708 645/360/713 +f 647/362/715 644/359/712 639/354/707 +f 639/354/707 642/357/710 647/362/715 +f 648/363/716 647/362/715 642/357/710 +f 649/364/717 650/365/718 641/356/709 +f 641/356/709 640/355/708 649/364/717 +f 650/365/718 649/364/717 651/366/719 +f 651/366/719 652/367/720 650/365/718 +f 653/368/721 650/365/718 652/367/720 +f 649/364/717 654/369/722 651/366/719 +f 655/370/723 654/369/722 649/364/717 +f 649/364/717 640/355/708 655/370/723 +f 655/370/723 640/355/708 646/361/714 +f 656/371/724 653/368/721 652/367/720 +f 652/367/720 657/372/725 656/371/724 +f 652/367/720 651/366/719 658/373/726 +f 658/373/726 657/372/725 652/367/720 +f 659/374/727 658/373/726 651/366/719 +f 651/366/719 654/369/722 659/374/727 +f 660/375/728 659/374/727 654/369/722 +f 654/369/722 655/370/723 660/375/728 +f 661/376/729 660/375/728 655/370/723 +f 655/370/723 646/361/714 661/376/729 +f 662/377/730 661/376/729 646/361/714 +f 646/361/714 645/360/713 662/377/730 +f 663/378/731 662/377/730 645/360/713 +f 645/360/713 643/358/711 663/378/731 +f 664/379/732 663/378/731 643/358/711 +f 643/358/711 644/359/712 664/379/732 +f 665/380/733 664/379/732 644/359/712 +f 644/359/712 647/362/715 665/380/733 +f 665/380/733 647/362/715 648/363/716 +f 648/363/716 666/381/734 665/380/733 +f 667/382/735 656/371/724 657/372/725 +f 668/383/736 667/382/735 657/372/725 +f 657/372/725 658/373/726 668/383/736 +f 669/384/737 668/383/736 658/373/726 +f 658/373/726 659/374/727 669/384/737 +f 670/385/738 669/384/737 659/374/727 +f 659/374/727 660/375/728 670/385/738 +f 671/386/739 670/385/738 660/375/728 +f 660/375/728 661/376/729 671/386/739 +f 672/387/740 671/386/739 661/376/729 +f 661/376/729 662/377/730 672/387/740 +f 673/388/741 672/387/740 662/377/730 +f 662/377/730 663/378/731 673/388/741 +f 674/389/742 673/388/741 663/378/731 +f 663/378/731 664/379/732 674/389/742 +f 675/390/743 674/389/742 664/379/732 +f 664/379/732 665/380/733 675/390/743 +f 675/390/743 665/380/733 666/381/734 +f 666/381/734 676/391/744 675/390/743 +f 677/392/745 678/393/746 675/390/743 +f 675/390/743 676/391/744 677/392/745 +f 675/390/743 678/393/746 679/394/747 +f 679/394/747 674/389/742 675/390/743 +f 674/389/742 679/394/747 680/395/748 +f 680/395/748 673/388/741 674/389/742 +f 673/388/741 680/395/748 681/396/749 +f 681/396/749 672/387/740 673/388/741 +f 672/387/740 681/396/749 682/397/750 +f 682/397/750 671/386/739 672/387/740 +f 671/386/739 682/397/750 683/398/751 +f 683/398/751 670/385/738 671/386/739 +f 670/385/738 683/398/751 684/399/752 +f 684/399/752 669/384/737 670/385/738 +f 685/400/753 669/384/737 684/399/752 +f 684/399/752 686/401/754 685/400/753 +f 687/402/755 668/383/736 669/384/737 +f 669/384/737 685/400/753 687/402/755 +f 668/383/736 687/402/755 688/403/756 +f 688/403/756 667/382/735 668/383/736 +f 689/404/757 690/405/758 684/399/752 +f 684/399/752 683/398/751 689/404/757 +f 691/406/759 689/404/757 683/398/751 +f 683/398/751 682/397/750 691/406/759 +f 692/407/760 691/406/759 682/397/750 +f 682/397/750 681/396/749 692/407/760 +f 693/408/761 692/407/760 681/396/749 +f 681/396/749 680/395/748 693/408/761 +f 694/409/762 693/408/761 680/395/748 +f 680/395/748 679/394/747 694/409/762 +f 694/409/762 679/394/747 678/393/746 +f 678/393/746 695/410/763 694/409/762 +f 677/392/745 696/411/764 695/410/763 +f 695/410/763 678/393/746 677/392/745 +f 697/412/765 698/413/766 688/403/756 +f 688/403/756 687/402/755 697/412/765 +f 685/400/753 699/414/767 697/412/765 +f 697/412/765 687/402/755 685/400/753 +f 699/414/767 685/400/753 686/401/754 +f 686/401/754 700/415/768 699/414/767 +s 2 +f 701/416/769 702/417/770 703/418/771 +f 703/418/771 704/419/772 701/416/769 +s 1 +f 704/420/773 703/421/774 686/401/754 +f 700/415/768 686/401/754 703/421/774 +s 2 +f 705/422/775 706/423/776 702/417/770 +f 702/417/770 701/416/769 705/422/775 +f 707/424/777 702/417/770 706/423/776 +f 706/423/776 708/425/778 707/424/777 +f 700/426/779 703/418/771 702/417/770 +f 702/417/770 707/424/777 700/426/779 +f 709/427/780 707/424/777 708/425/778 +f 708/425/778 710/428/781 709/427/780 +f 707/424/777 709/427/780 699/429/782 +f 699/429/782 700/426/779 707/424/777 +f 699/429/782 709/427/780 711/430/783 +f 711/430/783 697/431/784 699/429/782 +f 697/431/784 711/430/783 712/432/785 +f 712/432/785 698/433/786 697/431/784 +f 713/434/787 711/430/783 709/427/780 +f 709/427/780 710/428/781 713/434/787 +f 711/430/783 713/434/787 714/435/788 +f 714/435/788 712/432/785 711/430/783 +f 715/436/789 705/422/775 701/416/769 +f 701/416/769 716/437/790 715/436/789 +f 716/437/790 701/416/769 704/419/772 +s 1 +f 717/438/791 704/420/773 686/401/754 +f 717/438/791 686/401/754 684/399/752 +f 684/399/752 690/405/758 717/438/791 +f 704/420/773 717/438/791 718/439/792 +f 718/439/792 716/440/793 704/420/773 +f 719/441/794 720/442/795 716/440/793 +f 716/440/793 718/439/792 719/441/794 +s 2 +f 721/443/796 715/436/789 716/437/790 +f 716/437/790 720/444/797 721/443/796 +f 722/445/798 721/443/796 720/444/797 +f 720/444/797 719/446/799 722/445/798 +s 1 +f 723/447/800 718/439/792 717/438/791 +f 717/438/791 690/405/758 723/447/800 +f 724/448/801 723/447/800 690/405/758 +f 690/405/758 689/404/757 724/448/801 +f 725/449/802 724/448/801 689/404/757 +f 689/404/757 691/406/759 725/449/802 +f 726/450/803 725/449/802 691/406/759 +f 691/406/759 692/407/760 726/450/803 +f 727/451/804 726/450/803 692/407/760 +f 692/407/760 693/408/761 727/451/804 +f 727/451/804 693/408/761 694/409/762 +f 694/409/762 728/452/805 727/451/804 +f 728/452/805 694/409/762 695/410/763 +f 695/410/763 729/453/806 728/452/805 +f 730/454/807 729/453/806 695/410/763 +f 695/410/763 696/411/764 730/454/807 +f 731/455/808 729/453/806 730/454/807 +f 730/454/807 732/456/809 731/455/808 +f 718/439/792 723/447/800 733/457/810 +f 733/457/810 719/441/794 718/439/792 +f 734/458/811 733/457/810 723/447/800 +f 723/447/800 724/448/801 734/458/811 +f 734/458/811 724/448/801 725/449/802 +f 725/449/802 735/459/812 734/458/811 +f 736/460/813 735/459/812 725/449/802 +f 725/449/802 726/450/803 736/460/813 +f 736/460/813 726/450/803 727/451/804 +f 727/451/804 737/461/814 736/460/813 +f 737/461/814 727/451/804 728/452/805 +f 728/452/805 738/462/815 737/461/814 +f 739/463/816 738/462/815 728/452/805 +f 728/452/805 729/453/806 739/463/816 +f 740/464/817 739/463/816 729/453/806 +f 729/453/806 731/455/808 740/464/817 +f 741/465/818 742/466/819 731/455/808 +f 731/455/808 732/456/809 741/465/818 +f 743/467/820 744/468/821 742/466/819 +f 742/466/819 741/465/818 743/467/820 +f 745/469/822 746/470/823 733/457/810 +f 733/457/810 734/458/811 745/469/822 +f 733/457/810 746/470/823 747/471/824 +f 747/471/824 719/441/794 733/457/810 +f 748/472/825 719/441/794 747/471/824 +f 749/473/826 719/441/794 748/472/825 +f 750/474/827 751/475/828 749/473/826 +f 749/473/826 748/472/825 750/474/827 +f 752/476/829 753/477/830 747/471/824 +f 747/471/824 746/470/823 752/476/829 +f 753/477/830 750/474/827 748/472/825 +f 748/472/825 747/471/824 753/477/830 +f 754/478/831 752/476/829 746/470/823 +f 746/470/823 745/469/822 754/478/831 +f 735/459/812 755/479/832 745/469/822 +f 745/469/822 734/458/811 735/459/812 +f 735/459/812 736/460/813 755/479/832 +f 756/480/833 755/479/832 736/460/813 +f 736/460/813 757/481/834 756/480/833 +f 757/481/834 736/460/813 737/461/814 +f 757/481/834 737/461/814 738/462/815 +f 758/482/835 756/480/833 757/481/834 +f 757/481/834 759/483/836 758/482/835 +f 760/484/837 759/483/836 757/481/834 +f 757/481/834 738/462/815 760/484/837 +f 739/463/816 740/464/817 760/484/837 +f 760/484/837 738/462/815 739/463/816 +f 745/469/822 755/479/832 761/485/838 +f 761/485/838 754/478/831 745/469/822 +f 762/486/839 761/485/838 755/479/832 +f 755/479/832 756/480/833 762/486/839 +f 763/487/840 762/486/839 756/480/833 +f 756/480/833 758/482/835 763/487/840 +f 731/455/808 742/466/819 764/488/841 +f 764/488/841 740/464/817 731/455/808 +f 740/464/817 764/488/841 765/489/842 +f 765/489/842 760/484/837 740/464/817 +f 760/484/837 765/489/842 766/490/843 +f 766/490/843 759/483/836 760/484/837 +f 759/483/836 766/490/843 767/491/844 +f 767/491/844 758/482/835 759/483/836 +f 758/482/835 767/491/844 768/492/845 +f 768/492/845 763/487/840 758/482/835 +f 769/493/846 768/492/845 767/491/844 +f 770/494/847 769/493/846 767/491/844 +f 771/495/848 770/494/847 767/491/844 +f 767/491/844 772/496/849 771/495/848 +f 772/496/849 767/491/844 766/490/843 +f 773/497/850 771/495/848 772/496/849 +f 774/498/851 773/497/850 772/496/849 +f 775/499/852 764/488/841 742/466/819 +f 742/466/819 744/468/821 775/499/852 +f 764/488/841 775/499/852 776/500/853 +f 776/500/853 765/489/842 764/488/841 +f 765/489/842 776/500/853 777/501/854 +f 777/501/854 766/490/843 765/489/842 +f 766/490/843 777/501/854 778/502/855 +f 778/502/855 772/496/849 766/490/843 +f 772/496/849 778/502/855 779/503/856 +f 779/503/856 774/498/851 772/496/849 +f 780/504/857 744/468/821 743/467/820 +f 743/467/820 781/505/858 780/504/857 +f 744/468/821 780/504/857 782/506/859 +f 782/506/859 775/499/852 744/468/821 +f 775/499/852 782/506/859 783/507/860 +f 783/507/860 776/500/853 775/499/852 +f 776/500/853 783/507/860 784/508/861 +f 784/508/861 777/501/854 776/500/853 +f 777/501/854 784/508/861 785/509/862 +f 785/509/862 778/502/855 777/501/854 +f 778/502/855 785/509/862 786/510/863 +f 786/510/863 779/503/856 778/502/855 +f 787/511/864 788/512/865 780/504/857 +f 780/504/857 781/505/858 787/511/864 +f 780/504/857 788/512/865 789/513/866 +f 789/513/866 782/506/859 780/504/857 +f 782/506/859 789/513/866 790/514/867 +f 790/514/867 783/507/860 782/506/859 +f 783/507/860 790/514/867 791/515/868 +f 791/515/868 784/508/861 783/507/860 +f 784/508/861 791/515/868 792/516/869 +f 792/516/869 785/509/862 784/508/861 +f 793/517/870 786/510/863 785/509/862 +f 785/509/862 792/516/869 793/517/870 +f 794/518/871 793/517/870 792/516/869 +f 792/516/869 795/519/872 794/518/871 +f 796/520/873 795/519/872 792/516/869 +f 792/516/869 791/515/868 796/520/873 +f 797/521/874 796/520/873 791/515/868 +f 791/515/868 790/514/867 797/521/874 +f 798/522/875 788/512/865 787/511/864 +f 787/511/864 799/523/876 798/522/875 +f 788/512/865 798/522/875 800/524/877 +f 800/524/877 789/513/866 788/512/865 +f 800/524/877 797/521/874 790/514/867 +f 790/514/867 789/513/866 800/524/877 +f 801/525/878 798/522/875 799/523/876 +f 802/526/879 800/524/877 798/522/875 +f 798/522/875 801/525/878 802/526/879 +f 797/521/874 800/524/877 802/526/879 +f 802/526/879 803/527/880 797/521/874 +f 804/528/881 794/518/871 795/519/872 +f 805/529/882 804/528/881 795/519/872 +f 806/530/883 805/529/882 795/519/872 +f 807/531/884 808/532/885 806/530/883 +f 806/530/883 795/519/872 807/531/884 +f 809/533/886 807/531/884 795/519/872 +f 795/519/872 796/520/873 809/533/886 +f 809/533/886 796/520/873 797/521/874 +f 797/521/874 803/527/880 809/533/886 +f 810/534/887 803/527/880 811/535/888 +f 811/535/888 812/536/889 810/534/887 +f 809/533/886 803/527/880 810/534/887 +f 809/533/886 810/534/887 813/537/890 +f 813/537/890 807/531/884 809/533/886 +f 814/538/891 808/532/885 807/531/884 +f 815/539/892 814/538/891 807/531/884 +f 807/531/884 813/537/890 815/539/892 +f 816/540/893 810/534/887 812/536/889 +f 812/536/889 817/541/894 816/540/893 +f 810/534/887 816/540/893 818/542/895 +f 818/542/895 813/537/890 810/534/887 +f 813/537/890 818/542/895 819/543/896 +f 819/543/896 815/539/892 813/537/890 +f 820/544/897 819/543/896 818/542/895 +f 821/545/898 820/544/897 818/542/895 +f 822/546/899 821/545/898 818/542/895 +f 823/547/900 816/540/893 817/541/894 +f 817/541/894 824/548/901 823/547/900 +f 816/540/893 823/547/900 825/549/902 +f 825/549/902 818/542/895 816/540/893 +f 826/550/903 825/549/902 823/547/900 +f 823/547/900 824/548/901 826/550/903 +f 818/542/895 825/549/902 827/551/904 +f 827/551/904 822/546/899 818/542/895 +f 828/552/905 825/549/902 826/550/903 +f 826/550/903 829/553/906 828/552/905 +f 827/551/904 825/549/902 828/552/905 +f 830/554/907 829/553/906 826/550/903 +f 830/554/907 826/550/903 831/555/908 +s 2 +f 719/446/799 749/556/909 832/557/910 +f 832/557/910 722/445/798 719/446/799 +f 832/557/910 749/556/909 751/558/911 +s 1 +f 833/559/912 642/357/710 641/356/709 +f 641/356/709 834/560/913 833/559/912 +f 835/561/914 836/562/915 833/559/912 +f 834/560/913 837/563/916 835/561/914 +f 835/561/914 833/559/912 834/560/913 +f 838/564/917 837/563/916 834/560/913 +f 839/565/918 642/357/710 833/559/912 +f 833/559/912 836/562/915 839/565/918 +f 648/363/716 642/357/710 839/565/918 +f 840/566/919 834/560/913 641/356/709 +f 641/356/709 650/365/718 840/566/919 +f 650/365/718 841/567/920 842/568/921 +f 842/568/921 840/566/919 650/365/718 +f 653/368/721 841/567/920 650/365/718 +f 840/566/919 842/568/921 843/569/922 +f 844/570/923 834/560/913 840/566/919 +f 840/566/919 843/569/922 844/570/923 +f 844/570/923 838/564/917 834/560/913 +f 656/371/724 845/571/924 841/567/920 +f 841/567/920 653/368/721 656/371/724 +f 841/567/920 845/571/924 846/572/925 +f 846/572/925 842/568/921 841/567/920 +f 847/573/926 843/569/922 842/568/921 +f 842/568/921 846/572/925 847/573/926 +f 848/574/927 844/570/923 843/569/922 +f 843/569/922 847/573/926 848/574/927 +f 849/575/928 838/564/917 844/570/923 +f 844/570/923 848/574/927 849/575/928 +f 850/576/929 837/563/916 838/564/917 +f 838/564/917 849/575/928 850/576/929 +f 851/577/930 835/561/914 837/563/916 +f 837/563/916 850/576/929 851/577/930 +f 852/578/931 836/562/915 835/561/914 +f 835/561/914 851/577/930 852/578/931 +f 853/579/932 839/565/918 836/562/915 +f 836/562/915 852/578/931 853/579/932 +f 853/579/932 666/381/734 648/363/716 +f 648/363/716 839/565/918 853/579/932 +f 667/382/735 845/571/924 656/371/724 +f 854/580/933 846/572/925 845/571/924 +f 845/571/924 667/382/735 854/580/933 +f 855/581/934 847/573/926 846/572/925 +f 846/572/925 854/580/933 855/581/934 +f 856/582/935 848/574/927 847/573/926 +f 847/573/926 855/581/934 856/582/935 +f 857/583/936 849/575/928 848/574/927 +f 848/574/927 856/582/935 857/583/936 +f 858/584/937 850/576/929 849/575/928 +f 849/575/928 857/583/936 858/584/937 +f 859/585/938 851/577/930 850/576/929 +f 850/576/929 858/584/937 859/585/938 +f 860/586/939 852/578/931 851/577/930 +f 851/577/930 859/585/938 860/586/939 +f 861/587/940 853/579/932 852/578/931 +f 852/578/931 860/586/939 861/587/940 +f 861/587/940 676/391/744 666/381/734 +f 666/381/734 853/579/932 861/587/940 +f 677/392/745 676/391/744 861/587/940 +f 861/587/940 862/588/941 677/392/745 +f 861/587/940 860/586/939 863/589/942 +f 863/589/942 862/588/941 861/587/940 +f 860/586/939 859/585/938 864/590/943 +f 864/590/943 863/589/942 860/586/939 +f 859/585/938 858/584/937 865/591/944 +f 865/591/944 864/590/943 859/585/938 +f 858/584/937 857/583/936 866/592/945 +f 866/592/945 865/591/944 858/584/937 +f 857/583/936 856/582/935 867/593/946 +f 867/593/946 866/592/945 857/583/936 +f 856/582/935 855/581/934 868/594/947 +f 868/594/947 867/593/946 856/582/935 +f 869/595/948 870/596/949 868/594/947 +f 868/594/947 855/581/934 869/595/948 +f 871/597/950 869/595/948 855/581/934 +f 855/581/934 854/580/933 871/597/950 +f 854/580/933 667/382/735 688/403/756 +f 688/403/756 871/597/950 854/580/933 +f 872/598/951 867/593/946 868/594/947 +f 868/594/947 873/599/952 872/598/951 +f 874/600/953 866/592/945 867/593/946 +f 867/593/946 872/598/951 874/600/953 +f 875/601/954 865/591/944 866/592/945 +f 866/592/945 874/600/953 875/601/954 +f 876/602/955 864/590/943 865/591/944 +f 865/591/944 875/601/954 876/602/955 +f 877/603/956 863/589/942 864/590/943 +f 864/590/943 876/602/955 877/603/956 +f 877/603/956 878/604/957 862/588/941 +f 862/588/941 863/589/942 877/603/956 +f 677/392/745 862/588/941 878/604/957 +f 878/604/957 696/411/764 677/392/745 +f 879/605/958 871/597/950 688/403/756 +f 688/403/756 698/413/766 879/605/958 +f 869/595/948 871/597/950 879/605/958 +f 879/605/958 880/606/959 869/595/948 +f 880/606/959 881/607/960 870/596/949 +f 870/596/949 869/595/948 880/606/959 +s 2 +f 882/608/961 883/609/962 884/610/963 +f 884/610/963 885/611/964 882/608/961 +s 1 +f 883/612/965 870/596/949 884/613/966 +f 881/607/960 884/613/966 870/596/949 +s 2 +f 886/614/967 882/608/961 885/611/964 +f 885/611/964 887/615/968 886/614/967 +f 888/616/969 889/617/970 887/615/968 +f 887/615/968 885/611/964 888/616/969 +f 881/618/971 888/616/969 885/611/964 +f 885/611/964 884/610/963 881/618/971 +f 890/619/972 891/620/973 889/617/970 +f 889/617/970 888/616/969 890/619/972 +f 888/616/969 881/618/971 880/621/974 +f 880/621/974 890/619/972 888/616/969 +f 880/621/974 879/622/975 892/623/976 +f 892/623/976 890/619/972 880/621/974 +f 879/622/975 698/433/786 712/432/785 +f 712/432/785 892/623/976 879/622/975 +f 893/624/977 891/620/973 890/619/972 +f 890/619/972 892/623/976 893/624/977 +f 892/623/976 712/432/785 714/435/788 +f 714/435/788 893/624/977 892/623/976 +f 894/625/978 895/626/979 882/608/961 +f 882/608/961 886/614/967 894/625/978 +f 895/626/979 883/609/962 882/608/961 +s 1 +f 896/627/980 870/596/949 883/612/965 +f 896/627/980 873/599/952 868/594/947 +f 868/594/947 870/596/949 896/627/980 +f 883/612/965 895/628/981 897/629/982 +f 897/629/982 896/627/980 883/612/965 +f 898/630/983 897/629/982 895/628/981 +f 895/628/981 899/631/984 898/630/983 +s 2 +f 900/632/985 899/633/986 895/626/979 +f 895/626/979 894/625/978 900/632/985 +f 901/634/987 898/635/988 899/633/986 +f 899/633/986 900/632/985 901/634/987 +s 1 +f 902/636/989 873/599/952 896/627/980 +f 896/627/980 897/629/982 902/636/989 +f 903/637/990 872/598/951 873/599/952 +f 873/599/952 902/636/989 903/637/990 +f 904/638/991 874/600/953 872/598/951 +f 872/598/951 903/637/990 904/638/991 +f 905/639/992 875/601/954 874/600/953 +f 874/600/953 904/638/991 905/639/992 +f 906/640/993 876/602/955 875/601/954 +f 875/601/954 905/639/992 906/640/993 +f 906/640/993 907/641/994 877/603/956 +f 877/603/956 876/602/955 906/640/993 +f 907/641/994 908/642/995 878/604/957 +f 878/604/957 877/603/956 907/641/994 +f 730/454/807 696/411/764 878/604/957 +f 878/604/957 908/642/995 730/454/807 +f 909/643/996 732/456/809 730/454/807 +f 730/454/807 908/642/995 909/643/996 +f 897/629/982 898/630/983 910/644/997 +f 910/644/997 902/636/989 897/629/982 +f 911/645/998 903/637/990 902/636/989 +f 902/636/989 910/644/997 911/645/998 +f 911/645/998 912/646/999 904/638/991 +f 904/638/991 903/637/990 911/645/998 +f 913/647/1000 905/639/992 904/638/991 +f 904/638/991 912/646/999 913/647/1000 +f 913/647/1000 914/648/1001 906/640/993 +f 906/640/993 905/639/992 913/647/1000 +f 914/648/1001 915/649/1002 907/641/994 +f 907/641/994 906/640/993 914/648/1001 +f 916/650/1003 908/642/995 907/641/994 +f 907/641/994 915/649/1002 916/650/1003 +f 917/651/1004 909/643/996 908/642/995 +f 908/642/995 916/650/1003 917/651/1004 +f 741/465/818 732/456/809 909/643/996 +f 909/643/996 918/652/1005 741/465/818 +f 743/467/820 741/465/818 918/652/1005 +f 918/652/1005 919/653/1006 743/467/820 +f 920/654/1007 911/645/998 910/644/997 +f 910/644/997 921/655/1008 920/654/1007 +f 910/644/997 898/630/983 922/656/1009 +f 922/656/1009 921/655/1008 910/644/997 +f 923/657/1010 922/656/1009 898/630/983 +f 924/658/1011 923/657/1010 898/630/983 +f 925/659/1012 923/657/1010 924/658/1011 +f 924/658/1011 926/660/1013 925/659/1012 +f 927/661/1014 921/655/1008 922/656/1009 +f 922/656/1009 928/662/1015 927/661/1014 +f 928/662/1015 922/656/1009 923/657/1010 +f 923/657/1010 925/659/1012 928/662/1015 +f 912/646/999 911/645/998 920/654/1007 +f 920/654/1007 929/663/1016 912/646/999 +f 912/646/999 929/663/1016 913/647/1000 +f 930/664/1017 931/665/1018 913/647/1000 +f 913/647/1000 929/663/1016 930/664/1017 +f 931/665/1018 914/648/1001 913/647/1000 +f 931/665/1018 915/649/1002 914/648/1001 +f 932/666/1019 933/667/1020 931/665/1018 +f 931/665/1018 930/664/1017 932/666/1019 +f 934/668/1021 915/649/1002 931/665/1018 +f 931/665/1018 933/667/1020 934/668/1021 +f 934/668/1021 917/651/1004 916/650/1003 +f 916/650/1003 915/649/1002 934/668/1021 +f 920/654/1007 935/669/1022 936/670/1023 +f 936/670/1023 929/663/1016 920/654/1007 +f 937/671/1024 930/664/1017 929/663/1016 +f 929/663/1016 936/670/1023 937/671/1024 +f 938/672/1025 932/666/1019 930/664/1017 +f 930/664/1017 937/671/1024 938/672/1025 +f 909/643/996 917/651/1004 939/673/1026 +f 939/673/1026 918/652/1005 909/643/996 +f 917/651/1004 934/668/1021 940/674/1027 +f 940/674/1027 939/673/1026 917/651/1004 +f 934/668/1021 933/667/1020 941/675/1028 +f 941/675/1028 940/674/1027 934/668/1021 +f 933/667/1020 932/666/1019 942/676/1029 +f 942/676/1029 941/675/1028 933/667/1020 +f 932/666/1019 938/672/1025 943/677/1030 +f 943/677/1030 942/676/1029 932/666/1019 +f 944/678/1031 945/679/1032 942/676/1029 +f 942/676/1029 943/677/1030 944/678/1031 +f 945/679/1032 941/675/1028 942/676/1029 +f 946/680/1033 945/679/1032 944/678/1031 +f 947/681/1034 945/679/1032 946/680/1033 +f 948/682/1035 919/653/1006 918/652/1005 +f 918/652/1005 939/673/1026 948/682/1035 +f 939/673/1026 940/674/1027 949/683/1036 +f 949/683/1036 948/682/1035 939/673/1026 +f 940/674/1027 941/675/1028 950/684/1037 +f 950/684/1037 949/683/1036 940/674/1027 +f 941/675/1028 945/679/1032 951/685/1038 +f 951/685/1038 950/684/1037 941/675/1028 +f 945/679/1032 947/681/1034 952/686/1039 +f 952/686/1039 951/685/1038 945/679/1032 +f 953/687/1040 781/505/858 743/467/820 +f 743/467/820 919/653/1006 953/687/1040 +f 919/653/1006 948/682/1035 954/688/1041 +f 954/688/1041 953/687/1040 919/653/1006 +f 948/682/1035 949/683/1036 955/689/1042 +f 955/689/1042 954/688/1041 948/682/1035 +f 949/683/1036 950/684/1037 956/690/1043 +f 956/690/1043 955/689/1042 949/683/1036 +f 950/684/1037 951/685/1038 957/691/1044 +f 957/691/1044 956/690/1043 950/684/1037 +f 951/685/1038 952/686/1039 958/692/1045 +f 958/692/1045 957/691/1044 951/685/1038 +f 787/511/864 781/505/858 953/687/1040 +f 953/687/1040 959/693/1046 787/511/864 +f 953/687/1040 954/688/1041 960/694/1047 +f 960/694/1047 959/693/1046 953/687/1040 +f 954/688/1041 955/689/1042 961/695/1048 +f 961/695/1048 960/694/1047 954/688/1041 +f 955/689/1042 956/690/1043 962/696/1049 +f 962/696/1049 961/695/1048 955/689/1042 +f 956/690/1043 957/691/1044 963/697/1050 +f 963/697/1050 962/696/1049 956/690/1043 +f 964/698/1051 963/697/1050 957/691/1044 +f 957/691/1044 958/692/1045 964/698/1051 +f 965/699/1052 966/700/1053 963/697/1050 +f 963/697/1050 964/698/1051 965/699/1052 +f 967/701/1054 962/696/1049 963/697/1050 +f 963/697/1050 966/700/1053 967/701/1054 +f 968/702/1055 961/695/1048 962/696/1049 +f 962/696/1049 967/701/1054 968/702/1055 +f 969/703/1056 799/523/876 787/511/864 +f 787/511/864 959/693/1046 969/703/1056 +f 959/693/1046 960/694/1047 970/704/1057 +f 970/704/1057 969/703/1056 959/693/1046 +f 961/695/1048 968/702/1055 970/704/1057 +f 970/704/1057 960/694/1047 961/695/1048 +f 801/525/878 799/523/876 969/703/1056 +f 802/526/879 801/525/878 969/703/1056 +f 969/703/1056 970/704/1057 802/526/879 +f 968/702/1055 971/705/1058 802/526/879 +f 802/526/879 970/704/1057 968/702/1055 +f 972/706/1059 973/707/1060 966/700/1053 +f 966/700/1053 965/699/1052 972/706/1059 +f 974/708/1061 967/701/1054 966/700/1053 +f 966/700/1053 973/707/1060 974/708/1061 +f 974/708/1061 971/705/1058 968/702/1055 +f 968/702/1055 967/701/1054 974/708/1061 +f 975/709/1062 812/536/889 811/535/888 +f 811/535/888 971/705/1058 975/709/1062 +f 974/708/1061 975/709/1062 971/705/1058 +f 974/708/1061 973/707/1060 976/710/1063 +f 976/710/1063 975/709/1062 974/708/1061 +f 977/711/1064 973/707/1060 972/706/1059 +f 978/712/1065 976/710/1063 973/707/1060 +f 973/707/1060 977/711/1064 978/712/1065 +f 979/713/1066 817/541/894 812/536/889 +f 812/536/889 975/709/1062 979/713/1066 +f 975/709/1062 976/710/1063 980/714/1067 +f 980/714/1067 979/713/1066 975/709/1062 +f 976/710/1063 978/712/1065 981/715/1068 +f 981/715/1068 980/714/1067 976/710/1063 +f 982/716/1069 983/717/1070 980/714/1067 +f 980/714/1067 981/715/1068 982/716/1069 +f 984/718/1071 824/548/901 817/541/894 +f 817/541/894 979/713/1066 984/718/1071 +f 979/713/1066 980/714/1067 983/717/1070 +f 983/717/1070 984/718/1071 979/713/1066 +f 826/550/903 824/548/901 984/718/1071 +f 984/718/1071 983/717/1070 826/550/903 +f 826/550/903 985/719/1072 986/720/1073 +f 986/720/1073 987/721/1074 826/550/903 +f 982/716/1069 988/722/1075 983/717/1070 +f 989/723/1076 826/550/903 987/721/1074 +f 989/723/1076 831/555/908 826/550/903 +s 2 +f 898/635/988 901/634/987 990/724/1077 +f 990/724/1077 924/725/1078 898/635/988 +f 990/724/1077 926/726/1079 924/725/1078 +s 1 +f 991/727/1080 921/655/1008 927/661/1014 +f 992/728/1081 921/655/1008 991/727/1080 +f 935/669/1022 920/654/1007 921/655/1008 +f 921/655/1008 993/729/1082 935/669/1022 +f 993/729/1082 921/655/1008 992/728/1081 +f 985/719/1072 994/730/1083 986/720/1073 +f 988/722/1075 994/730/1083 985/719/1072 +f 985/719/1072 983/717/1070 988/722/1075 +f 826/550/903 983/717/1070 985/719/1072 +f 802/526/879 811/535/888 803/527/880 +f 971/705/1058 811/535/888 802/526/879 +s 4 +f 995/354/1084 996/357/1085 997/356/1086 +f 997/356/1086 998/355/1087 995/354/1084 +f 999/358/1088 1000/359/1089 995/354/1084 +f 998/355/1087 1001/360/1090 999/358/1088 +f 999/358/1088 995/354/1084 998/355/1087 +f 1002/361/1091 1001/360/1090 998/355/1087 +f 1003/362/1092 996/357/1085 995/354/1084 +f 995/354/1084 1000/359/1089 1003/362/1092 +f 1004/363/1093 996/357/1085 1003/362/1092 +f 1005/364/1094 998/355/1087 997/356/1086 +f 997/356/1086 1006/365/1095 1005/364/1094 +f 1006/365/1095 1007/367/1096 1008/366/1097 +f 1008/366/1097 1005/364/1094 1006/365/1095 +f 1009/368/1098 1007/367/1096 1006/365/1095 +f 1005/364/1094 1008/366/1097 1010/369/1099 +f 1011/370/1100 998/355/1087 1005/364/1094 +f 1005/364/1094 1010/369/1099 1011/370/1100 +f 1011/370/1100 1002/361/1091 998/355/1087 +f 1012/371/1101 1013/372/1102 1007/367/1096 +f 1007/367/1096 1009/368/1098 1012/371/1101 +f 1007/367/1096 1013/372/1102 1014/373/1103 +f 1014/373/1103 1008/366/1097 1007/367/1096 +f 1015/374/1104 1010/369/1099 1008/366/1097 +f 1008/366/1097 1014/373/1103 1015/374/1104 +f 1016/375/1105 1011/370/1100 1010/369/1099 +f 1010/369/1099 1015/374/1104 1016/375/1105 +f 1017/376/1106 1002/361/1091 1011/370/1100 +f 1011/370/1100 1016/375/1105 1017/376/1106 +f 1018/377/1107 1001/360/1090 1002/361/1091 +f 1002/361/1091 1017/376/1106 1018/377/1107 +f 1019/378/1108 999/358/1088 1001/360/1090 +f 1001/360/1090 1018/377/1107 1019/378/1108 +f 1020/379/1109 1000/359/1089 999/358/1088 +f 999/358/1088 1019/378/1108 1020/379/1109 +f 1021/380/1110 1003/362/1092 1000/359/1089 +f 1000/359/1089 1020/379/1109 1021/380/1110 +f 1021/380/1110 1022/381/1111 1004/363/1093 +f 1004/363/1093 1003/362/1092 1021/380/1110 +f 1023/382/1112 1013/372/1102 1012/371/1101 +f 1024/383/1113 1014/373/1103 1013/372/1102 +f 1013/372/1102 1023/382/1112 1024/383/1113 +f 1025/384/1114 1015/374/1104 1014/373/1103 +f 1014/373/1103 1024/383/1113 1025/384/1114 +f 1026/385/1115 1016/375/1105 1015/374/1104 +f 1015/374/1104 1025/384/1114 1026/385/1115 +f 1027/386/1116 1017/376/1106 1016/375/1105 +f 1016/375/1105 1026/385/1115 1027/386/1116 +f 1028/387/1117 1018/377/1107 1017/376/1106 +f 1017/376/1106 1027/386/1116 1028/387/1117 +f 1029/388/1118 1019/378/1108 1018/377/1107 +f 1018/377/1107 1028/387/1117 1029/388/1118 +f 1030/389/1119 1020/379/1109 1019/378/1108 +f 1019/378/1108 1029/388/1118 1030/389/1119 +f 1031/390/1120 1021/380/1110 1020/379/1109 +f 1020/379/1109 1030/389/1119 1031/390/1120 +f 1031/390/1120 1032/391/1121 1022/381/1111 +f 1022/381/1111 1021/380/1110 1031/390/1120 +f 1033/392/1122 1032/391/1121 1031/390/1120 +f 1031/390/1120 1034/393/1123 1033/392/1122 +f 1031/390/1120 1030/389/1119 1035/394/1124 +f 1035/394/1124 1034/393/1123 1031/390/1120 +f 1030/389/1119 1029/388/1118 1036/395/1125 +f 1036/395/1125 1035/394/1124 1030/389/1119 +f 1029/388/1118 1028/387/1117 1037/396/1126 +f 1037/396/1126 1036/395/1125 1029/388/1118 +f 1028/387/1117 1027/386/1116 1038/397/1127 +f 1038/397/1127 1037/396/1126 1028/387/1117 +f 1027/386/1116 1026/385/1115 1039/398/1128 +f 1039/398/1128 1038/397/1127 1027/386/1116 +f 1026/385/1115 1025/384/1114 1040/399/1129 +f 1040/399/1129 1039/398/1128 1026/385/1115 +f 1041/400/1130 1042/401/1131 1040/399/1129 +f 1040/399/1129 1025/384/1114 1041/400/1130 +f 1043/402/1132 1041/400/1130 1025/384/1114 +f 1025/384/1114 1024/383/1113 1043/402/1132 +f 1024/383/1113 1023/382/1112 1044/403/1133 +f 1044/403/1133 1043/402/1132 1024/383/1113 +f 1045/404/1134 1039/398/1128 1040/399/1129 +f 1040/399/1129 1046/405/1135 1045/404/1134 +f 1047/406/1136 1038/397/1127 1039/398/1128 +f 1039/398/1128 1045/404/1134 1047/406/1136 +f 1048/407/1137 1037/396/1126 1038/397/1127 +f 1038/397/1127 1047/406/1136 1048/407/1137 +f 1049/408/1138 1036/395/1125 1037/396/1126 +f 1037/396/1126 1048/407/1137 1049/408/1138 +f 1050/409/1139 1035/394/1124 1036/395/1125 +f 1036/395/1125 1049/408/1138 1050/409/1139 +f 1050/409/1139 1051/410/1140 1034/393/1123 +f 1034/393/1123 1035/394/1124 1050/409/1139 +f 1033/392/1122 1034/393/1123 1051/410/1140 +f 1051/410/1140 1052/411/1141 1033/392/1122 +f 1053/412/1142 1043/402/1132 1044/403/1133 +f 1044/403/1133 1054/413/1143 1053/412/1142 +f 1041/400/1130 1043/402/1132 1053/412/1142 +f 1053/412/1142 1055/414/1144 1041/400/1130 +f 1055/414/1144 1056/415/1145 1042/401/1131 +f 1042/401/1131 1041/400/1130 1055/414/1144 +s 8 +f 1057/416/1146 1058/419/1147 1059/418/1148 +f 1059/418/1148 1060/417/1149 1057/416/1146 +s 4 +f 1058/420/1150 1042/401/1131 1059/421/1151 +f 1056/415/1145 1059/421/1151 1042/401/1131 +s 8 +f 705/422/1152 1057/416/1146 1060/417/1149 +f 1060/417/1149 706/423/1153 705/422/1152 +f 1061/424/1154 708/425/1155 706/423/1153 +f 706/423/1153 1060/417/1149 1061/424/1154 +f 1056/426/1156 1061/424/1154 1060/417/1149 +f 1060/417/1149 1059/418/1148 1056/426/1156 +f 1062/427/1157 710/428/1158 708/425/1155 +f 708/425/1155 1061/424/1154 1062/427/1157 +f 1061/424/1154 1056/426/1156 1055/429/1159 +f 1055/429/1159 1062/427/1157 1061/424/1154 +f 1055/429/1159 1053/431/1160 1063/430/1161 +f 1063/430/1161 1062/427/1157 1055/429/1159 +f 1053/431/1160 1054/433/1162 1064/432/1163 +f 1064/432/1163 1063/430/1161 1053/431/1160 +f 713/434/1164 710/428/1158 1062/427/1157 +f 1062/427/1157 1063/430/1161 713/434/1164 +f 1063/430/1161 1064/432/1163 714/435/1165 +f 714/435/1165 713/434/1164 1063/430/1161 +f 715/436/1166 1065/437/1167 1057/416/1146 +f 1057/416/1146 705/422/1152 715/436/1166 +f 1065/437/1167 1058/419/1147 1057/416/1146 +s 4 +f 1066/438/1168 1042/401/1131 1058/420/1150 +f 1066/438/1168 1046/405/1135 1040/399/1129 +f 1040/399/1129 1042/401/1131 1066/438/1168 +f 1058/420/1150 1065/440/1169 1067/439/1170 +f 1067/439/1170 1066/438/1168 1058/420/1150 +f 1068/441/1171 1067/439/1170 1065/440/1169 +f 1065/440/1169 1069/442/1172 1068/441/1171 +s 8 +f 721/443/1173 1069/444/1174 1065/437/1167 +f 1065/437/1167 715/436/1166 721/443/1173 +f 722/445/1175 1068/446/1176 1069/444/1174 +f 1069/444/1174 721/443/1173 722/445/1175 +s 4 +f 1070/447/1177 1046/405/1135 1066/438/1168 +f 1066/438/1168 1067/439/1170 1070/447/1177 +f 1071/448/1178 1045/404/1134 1046/405/1135 +f 1046/405/1135 1070/447/1177 1071/448/1178 +f 1072/449/1179 1047/406/1136 1045/404/1134 +f 1045/404/1134 1071/448/1178 1072/449/1179 +f 1073/450/1180 1048/407/1137 1047/406/1136 +f 1047/406/1136 1072/449/1179 1073/450/1180 +f 1074/451/1181 1049/408/1138 1048/407/1137 +f 1048/407/1137 1073/450/1180 1074/451/1181 +f 1074/451/1181 1075/452/1182 1050/409/1139 +f 1050/409/1139 1049/408/1138 1074/451/1181 +f 1075/452/1182 1076/453/1183 1051/410/1140 +f 1051/410/1140 1050/409/1139 1075/452/1182 +f 1077/454/1184 1052/411/1141 1051/410/1140 +f 1051/410/1140 1076/453/1183 1077/454/1184 +f 1078/455/1185 1079/456/1186 1077/454/1184 +f 1077/454/1184 1076/453/1183 1078/455/1185 +f 1067/439/1170 1068/441/1171 1080/457/1187 +f 1080/457/1187 1070/447/1177 1067/439/1170 +f 1081/458/1188 1071/448/1178 1070/447/1177 +f 1070/447/1177 1080/457/1187 1081/458/1188 +f 1081/458/1188 1082/459/1189 1072/449/1179 +f 1072/449/1179 1071/448/1178 1081/458/1188 +f 1083/460/1190 1073/450/1180 1072/449/1179 +f 1072/449/1179 1082/459/1189 1083/460/1190 +f 1083/460/1190 1084/461/1191 1074/451/1181 +f 1074/451/1181 1073/450/1180 1083/460/1190 +f 1084/461/1191 1085/462/1192 1075/452/1182 +f 1075/452/1182 1074/451/1181 1084/461/1191 +f 1086/463/1193 1076/453/1183 1075/452/1182 +f 1075/452/1182 1085/462/1192 1086/463/1193 +f 1087/464/1194 1078/455/1185 1076/453/1183 +f 1076/453/1183 1086/463/1193 1087/464/1194 +f 1088/465/1195 1079/456/1186 1078/455/1185 +f 1078/455/1185 1089/466/1196 1088/465/1195 +f 1090/467/1197 1088/465/1195 1089/466/1196 +f 1089/466/1196 1091/468/1198 1090/467/1197 +f 1092/469/1199 1081/458/1188 1080/457/1187 +f 1080/457/1187 1093/470/1200 1092/469/1199 +f 1080/457/1187 1068/441/1171 1094/471/1201 +f 1094/471/1201 1093/470/1200 1080/457/1187 +f 1095/472/1202 1094/471/1201 1068/441/1171 +f 1096/473/1203 1095/472/1202 1068/441/1171 +f 750/474/1204 1095/472/1202 1096/473/1203 +f 1096/473/1203 751/475/1205 750/474/1204 +f 752/476/1206 1093/470/1200 1094/471/1201 +f 1094/471/1201 753/477/1207 752/476/1206 +f 753/477/1207 1094/471/1201 1095/472/1202 +f 1095/472/1202 750/474/1204 753/477/1207 +f 754/478/1208 1092/469/1199 1093/470/1200 +f 1093/470/1200 752/476/1206 754/478/1208 +f 1082/459/1189 1081/458/1188 1092/469/1199 +f 1092/469/1199 1097/479/1209 1082/459/1189 +f 1082/459/1189 1097/479/1209 1083/460/1190 +f 1098/480/1210 1099/481/1211 1083/460/1190 +f 1083/460/1190 1097/479/1209 1098/480/1210 +f 1099/481/1211 1084/461/1191 1083/460/1190 +f 1099/481/1211 1085/462/1192 1084/461/1191 +f 1100/482/1212 1101/483/1213 1099/481/1211 +f 1099/481/1211 1098/480/1210 1100/482/1212 +f 1102/484/1214 1085/462/1192 1099/481/1211 +f 1099/481/1211 1101/483/1213 1102/484/1214 +f 1086/463/1193 1085/462/1192 1102/484/1214 +f 1102/484/1214 1087/464/1194 1086/463/1193 +f 1092/469/1199 754/478/1208 761/485/1215 +f 761/485/1215 1097/479/1209 1092/469/1199 +f 762/486/1216 1098/480/1210 1097/479/1209 +f 1097/479/1209 761/485/1215 762/486/1216 +f 763/487/1217 1100/482/1212 1098/480/1210 +f 1098/480/1210 762/486/1216 763/487/1217 +f 1078/455/1185 1087/464/1194 1103/488/1218 +f 1103/488/1218 1089/466/1196 1078/455/1185 +f 1087/464/1194 1102/484/1214 1104/489/1219 +f 1104/489/1219 1103/488/1218 1087/464/1194 +f 1102/484/1214 1101/483/1213 1105/490/1220 +f 1105/490/1220 1104/489/1219 1102/484/1214 +f 1101/483/1213 1100/482/1212 1106/491/1221 +f 1106/491/1221 1105/490/1220 1101/483/1213 +f 1100/482/1212 763/487/1217 768/492/1222 +f 768/492/1222 1106/491/1221 1100/482/1212 +f 769/493/1223 1106/491/1221 768/492/1222 +f 770/494/1224 1106/491/1221 769/493/1223 +f 771/495/1225 1107/496/1226 1106/491/1221 +f 1106/491/1221 770/494/1224 771/495/1225 +f 1107/496/1226 1105/490/1220 1106/491/1221 +f 773/497/1227 1107/496/1226 771/495/1225 +f 774/498/1228 1107/496/1226 773/497/1227 +f 1108/499/1229 1091/468/1198 1089/466/1196 +f 1089/466/1196 1103/488/1218 1108/499/1229 +f 1103/488/1218 1104/489/1219 1109/500/1230 +f 1109/500/1230 1108/499/1229 1103/488/1218 +f 1104/489/1219 1105/490/1220 1110/501/1231 +f 1110/501/1231 1109/500/1230 1104/489/1219 +f 1105/490/1220 1107/496/1226 1111/502/1232 +f 1111/502/1232 1110/501/1231 1105/490/1220 +f 1107/496/1226 774/498/1228 779/503/1233 +f 779/503/1233 1111/502/1232 1107/496/1226 +f 1112/504/1234 1113/505/1235 1090/467/1197 +f 1090/467/1197 1091/468/1198 1112/504/1234 +f 1091/468/1198 1108/499/1229 1114/506/1236 +f 1114/506/1236 1112/504/1234 1091/468/1198 +f 1108/499/1229 1109/500/1230 1115/507/1237 +f 1115/507/1237 1114/506/1236 1108/499/1229 +f 1109/500/1230 1110/501/1231 1116/508/1238 +f 1116/508/1238 1115/507/1237 1109/500/1230 +f 1110/501/1231 1111/502/1232 1117/509/1239 +f 1117/509/1239 1116/508/1238 1110/501/1231 +f 1111/502/1232 779/503/1233 786/510/1240 +f 786/510/1240 1117/509/1239 1111/502/1232 +f 1118/511/1241 1113/505/1235 1112/504/1234 +f 1112/504/1234 1119/512/1242 1118/511/1241 +f 1112/504/1234 1114/506/1236 1120/513/1243 +f 1120/513/1243 1119/512/1242 1112/504/1234 +f 1114/506/1236 1115/507/1237 1121/514/1244 +f 1121/514/1244 1120/513/1243 1114/506/1236 +f 1115/507/1237 1116/508/1238 1122/515/1245 +f 1122/515/1245 1121/514/1244 1115/507/1237 +f 1116/508/1238 1117/509/1239 1123/516/1246 +f 1123/516/1246 1122/515/1245 1116/508/1238 +f 793/517/1247 1123/516/1246 1117/509/1239 +f 1117/509/1239 786/510/1240 793/517/1247 +f 794/518/1248 1124/519/1249 1123/516/1246 +f 1123/516/1246 793/517/1247 794/518/1248 +f 1125/520/1250 1122/515/1245 1123/516/1246 +f 1123/516/1246 1124/519/1249 1125/520/1250 +f 1126/521/1251 1121/514/1244 1122/515/1245 +f 1122/515/1245 1125/520/1250 1126/521/1251 +f 1127/522/1252 1128/523/1253 1118/511/1241 +f 1118/511/1241 1119/512/1242 1127/522/1252 +f 1119/512/1242 1120/513/1243 1129/524/1254 +f 1129/524/1254 1127/522/1252 1119/512/1242 +f 1129/524/1254 1120/513/1243 1121/514/1244 +f 1121/514/1244 1126/521/1251 1129/524/1254 +f 1130/525/1255 1128/523/1253 1127/522/1252 +f 1131/526/1256 1130/525/1255 1127/522/1252 +f 1127/522/1252 1129/524/1254 1131/526/1256 +f 1126/521/1251 1132/527/1257 1131/526/1256 +f 1131/526/1256 1129/524/1254 1126/521/1251 +f 804/528/1258 1124/519/1249 794/518/1248 +f 805/529/1259 1124/519/1249 804/528/1258 +f 806/530/1260 1124/519/1249 805/529/1259 +f 1133/531/1261 1124/519/1249 806/530/1260 +f 806/530/1260 808/532/1262 1133/531/1261 +f 1134/533/1263 1125/520/1250 1124/519/1249 +f 1124/519/1249 1133/531/1261 1134/533/1263 +f 1134/533/1263 1132/527/1257 1126/521/1251 +f 1126/521/1251 1125/520/1250 1134/533/1263 +f 1135/534/1264 1136/536/1265 1137/535/1266 +f 1137/535/1266 1132/527/1257 1135/534/1264 +f 1134/533/1263 1135/534/1264 1132/527/1257 +f 1134/533/1263 1133/531/1261 1138/537/1267 +f 1138/537/1267 1135/534/1264 1134/533/1263 +f 814/538/1268 1133/531/1261 808/532/1262 +f 815/539/1269 1138/537/1267 1133/531/1261 +f 1133/531/1261 814/538/1268 815/539/1269 +f 1139/540/1270 1140/541/1271 1136/536/1265 +f 1136/536/1265 1135/534/1264 1139/540/1270 +f 1135/534/1264 1138/537/1267 1141/542/1272 +f 1141/542/1272 1139/540/1270 1135/534/1264 +f 1138/537/1267 815/539/1269 819/543/1273 +f 819/543/1273 1141/542/1272 1138/537/1267 +f 820/544/1274 1141/542/1272 819/543/1273 +f 821/545/1275 1141/542/1272 820/544/1274 +f 822/546/1276 1141/542/1272 821/545/1275 +f 1142/547/1277 1143/548/1278 1140/541/1271 +f 1140/541/1271 1139/540/1270 1142/547/1277 +f 1139/540/1270 1141/542/1272 1144/549/1279 +f 1144/549/1279 1142/547/1277 1139/540/1270 +f 1145/550/1280 1143/548/1278 1142/547/1277 +f 1142/547/1277 1144/549/1279 1145/550/1280 +f 1141/542/1272 822/546/1276 827/551/1281 +f 827/551/1281 1144/549/1279 1141/542/1272 +f 828/552/1282 829/553/1283 1145/550/1280 +f 1145/550/1280 1144/549/1279 828/552/1282 +f 827/551/1281 828/552/1282 1144/549/1279 +f 830/554/1284 1145/550/1280 829/553/1283 +f 830/554/1284 831/555/1285 1145/550/1280 +s 8 +f 1068/446/1176 722/445/1175 832/557/1286 +f 832/557/1286 1096/556/1287 1068/446/1176 +f 832/557/1286 751/558/1288 1096/556/1287 +s 4 +f 1146/559/1289 1147/560/1290 997/356/1086 +f 997/356/1086 996/357/1085 1146/559/1289 +f 1148/561/1291 1146/559/1289 1149/562/1292 +f 1147/560/1290 1146/559/1289 1148/561/1291 +f 1148/561/1291 1150/563/1293 1147/560/1290 +f 1151/564/1294 1147/560/1290 1150/563/1293 +f 1152/565/1295 1149/562/1292 1146/559/1289 +f 1146/559/1289 996/357/1085 1152/565/1295 +f 1004/363/1093 1152/565/1295 996/357/1085 +f 1153/566/1296 1006/365/1095 997/356/1086 +f 997/356/1086 1147/560/1290 1153/566/1296 +f 1006/365/1095 1153/566/1296 1154/568/1297 +f 1154/568/1297 1155/567/1298 1006/365/1095 +f 1009/368/1098 1006/365/1095 1155/567/1298 +f 1153/566/1296 1156/569/1299 1154/568/1297 +f 1157/570/1300 1156/569/1299 1153/566/1296 +f 1153/566/1296 1147/560/1290 1157/570/1300 +f 1157/570/1300 1147/560/1290 1151/564/1294 +f 1012/371/1101 1009/368/1098 1155/567/1298 +f 1155/567/1298 1158/571/1301 1012/371/1101 +f 1155/567/1298 1154/568/1297 1159/572/1302 +f 1159/572/1302 1158/571/1301 1155/567/1298 +f 1160/573/1303 1159/572/1302 1154/568/1297 +f 1154/568/1297 1156/569/1299 1160/573/1303 +f 1161/574/1304 1160/573/1303 1156/569/1299 +f 1156/569/1299 1157/570/1300 1161/574/1304 +f 1162/575/1305 1161/574/1304 1157/570/1300 +f 1157/570/1300 1151/564/1294 1162/575/1305 +f 1163/576/1306 1162/575/1305 1151/564/1294 +f 1151/564/1294 1150/563/1293 1163/576/1306 +f 1164/577/1307 1163/576/1306 1150/563/1293 +f 1150/563/1293 1148/561/1291 1164/577/1307 +f 1165/578/1308 1164/577/1307 1148/561/1291 +f 1148/561/1291 1149/562/1292 1165/578/1308 +f 1166/579/1309 1165/578/1308 1149/562/1292 +f 1149/562/1292 1152/565/1295 1166/579/1309 +f 1166/579/1309 1152/565/1295 1004/363/1093 +f 1004/363/1093 1022/381/1111 1166/579/1309 +f 1023/382/1112 1012/371/1101 1158/571/1301 +f 1167/580/1310 1023/382/1112 1158/571/1301 +f 1158/571/1301 1159/572/1302 1167/580/1310 +f 1168/581/1311 1167/580/1310 1159/572/1302 +f 1159/572/1302 1160/573/1303 1168/581/1311 +f 1169/582/1312 1168/581/1311 1160/573/1303 +f 1160/573/1303 1161/574/1304 1169/582/1312 +f 1170/583/1313 1169/582/1312 1161/574/1304 +f 1161/574/1304 1162/575/1305 1170/583/1313 +f 1171/584/1314 1170/583/1313 1162/575/1305 +f 1162/575/1305 1163/576/1306 1171/584/1314 +f 1172/585/1315 1171/584/1314 1163/576/1306 +f 1163/576/1306 1164/577/1307 1172/585/1315 +f 1173/586/1316 1172/585/1315 1164/577/1307 +f 1164/577/1307 1165/578/1308 1173/586/1316 +f 1174/587/1317 1173/586/1316 1165/578/1308 +f 1165/578/1308 1166/579/1309 1174/587/1317 +f 1174/587/1317 1166/579/1309 1022/381/1111 +f 1022/381/1111 1032/391/1121 1174/587/1317 +f 1033/392/1122 1175/588/1318 1174/587/1317 +f 1174/587/1317 1032/391/1121 1033/392/1122 +f 1174/587/1317 1175/588/1318 1176/589/1319 +f 1176/589/1319 1173/586/1316 1174/587/1317 +f 1173/586/1316 1176/589/1319 1177/590/1320 +f 1177/590/1320 1172/585/1315 1173/586/1316 +f 1172/585/1315 1177/590/1320 1178/591/1321 +f 1178/591/1321 1171/584/1314 1172/585/1315 +f 1171/584/1314 1178/591/1321 1179/592/1322 +f 1179/592/1322 1170/583/1313 1171/584/1314 +f 1170/583/1313 1179/592/1322 1180/593/1323 +f 1180/593/1323 1169/582/1312 1170/583/1313 +f 1169/582/1312 1180/593/1323 1181/594/1324 +f 1181/594/1324 1168/581/1311 1169/582/1312 +f 1182/595/1325 1168/581/1311 1181/594/1324 +f 1181/594/1324 1183/596/1326 1182/595/1325 +f 1184/597/1327 1167/580/1310 1168/581/1311 +f 1168/581/1311 1182/595/1325 1184/597/1327 +f 1167/580/1310 1184/597/1327 1044/403/1133 +f 1044/403/1133 1023/382/1112 1167/580/1310 +f 1185/598/1328 1186/599/1329 1181/594/1324 +f 1181/594/1324 1180/593/1323 1185/598/1328 +f 1187/600/1330 1185/598/1328 1180/593/1323 +f 1180/593/1323 1179/592/1322 1187/600/1330 +f 1188/601/1331 1187/600/1330 1179/592/1322 +f 1179/592/1322 1178/591/1321 1188/601/1331 +f 1189/602/1332 1188/601/1331 1178/591/1321 +f 1178/591/1321 1177/590/1320 1189/602/1332 +f 1190/603/1333 1189/602/1332 1177/590/1320 +f 1177/590/1320 1176/589/1319 1190/603/1333 +f 1190/603/1333 1176/589/1319 1175/588/1318 +f 1175/588/1318 1191/604/1334 1190/603/1333 +f 1033/392/1122 1052/411/1141 1191/604/1334 +f 1191/604/1334 1175/588/1318 1033/392/1122 +f 1192/605/1335 1054/413/1143 1044/403/1133 +f 1044/403/1133 1184/597/1327 1192/605/1335 +f 1182/595/1325 1193/606/1336 1192/605/1335 +f 1192/605/1335 1184/597/1327 1182/595/1325 +f 1193/606/1336 1182/595/1325 1183/596/1326 +f 1183/596/1326 1194/607/1337 1193/606/1336 +s 8 +f 1195/608/1338 1196/611/1339 1197/610/1340 +f 1197/610/1340 1198/609/1341 1195/608/1338 +s 4 +f 1198/612/1342 1197/613/1343 1183/596/1326 +f 1194/607/1337 1183/596/1326 1197/613/1343 +s 8 +f 886/614/1344 887/615/1345 1196/611/1339 +f 1196/611/1339 1195/608/1338 886/614/1344 +f 1199/616/1346 1196/611/1339 887/615/1345 +f 887/615/1345 889/617/1347 1199/616/1346 +f 1194/618/1348 1197/610/1340 1196/611/1339 +f 1196/611/1339 1199/616/1346 1194/618/1348 +f 1200/619/1349 1199/616/1346 889/617/1347 +f 889/617/1347 891/620/1350 1200/619/1349 +f 1199/616/1346 1200/619/1349 1193/621/1351 +f 1193/621/1351 1194/618/1348 1199/616/1346 +f 1193/621/1351 1200/619/1349 1201/623/1352 +f 1201/623/1352 1192/622/1353 1193/621/1351 +f 1192/622/1353 1201/623/1352 1064/432/1163 +f 1064/432/1163 1054/433/1162 1192/622/1353 +f 893/624/1354 1201/623/1352 1200/619/1349 +f 1200/619/1349 891/620/1350 893/624/1354 +f 1201/623/1352 893/624/1354 714/435/1165 +f 714/435/1165 1064/432/1163 1201/623/1352 +f 894/625/1355 886/614/1344 1195/608/1338 +f 1195/608/1338 1202/626/1356 894/625/1355 +f 1202/626/1356 1195/608/1338 1198/609/1341 +s 4 +f 1203/627/1357 1198/612/1342 1183/596/1326 +f 1203/627/1357 1183/596/1326 1181/594/1324 +f 1181/594/1324 1186/599/1329 1203/627/1357 +f 1198/612/1342 1203/627/1357 1204/629/1358 +f 1204/629/1358 1202/628/1359 1198/612/1342 +f 1205/630/1360 1206/631/1361 1202/628/1359 +f 1202/628/1359 1204/629/1358 1205/630/1360 +s 8 +f 900/632/1362 894/625/1355 1202/626/1356 +f 1202/626/1356 1206/633/1363 900/632/1362 +f 901/634/1364 900/632/1362 1206/633/1363 +f 1206/633/1363 1205/635/1365 901/634/1364 +s 4 +f 1207/636/1366 1204/629/1358 1203/627/1357 +f 1203/627/1357 1186/599/1329 1207/636/1366 +f 1208/637/1367 1207/636/1366 1186/599/1329 +f 1186/599/1329 1185/598/1328 1208/637/1367 +f 1209/638/1368 1208/637/1367 1185/598/1328 +f 1185/598/1328 1187/600/1330 1209/638/1368 +f 1210/639/1369 1209/638/1368 1187/600/1330 +f 1187/600/1330 1188/601/1331 1210/639/1369 +f 1211/640/1370 1210/639/1369 1188/601/1331 +f 1188/601/1331 1189/602/1332 1211/640/1370 +f 1211/640/1370 1189/602/1332 1190/603/1333 +f 1190/603/1333 1212/641/1371 1211/640/1370 +f 1212/641/1371 1190/603/1333 1191/604/1334 +f 1191/604/1334 1213/642/1372 1212/641/1371 +f 1077/454/1184 1213/642/1372 1191/604/1334 +f 1191/604/1334 1052/411/1141 1077/454/1184 +f 1214/643/1373 1213/642/1372 1077/454/1184 +f 1077/454/1184 1079/456/1186 1214/643/1373 +f 1204/629/1358 1207/636/1366 1215/644/1374 +f 1215/644/1374 1205/630/1360 1204/629/1358 +f 1216/645/1375 1215/644/1374 1207/636/1366 +f 1207/636/1366 1208/637/1367 1216/645/1375 +f 1216/645/1375 1208/637/1367 1209/638/1368 +f 1209/638/1368 1217/646/1376 1216/645/1375 +f 1218/647/1377 1217/646/1376 1209/638/1368 +f 1209/638/1368 1210/639/1369 1218/647/1377 +f 1218/647/1377 1210/639/1369 1211/640/1370 +f 1211/640/1370 1219/648/1378 1218/647/1377 +f 1219/648/1378 1211/640/1370 1212/641/1371 +f 1212/641/1371 1220/649/1379 1219/648/1378 +f 1221/650/1380 1220/649/1379 1212/641/1371 +f 1212/641/1371 1213/642/1372 1221/650/1380 +f 1222/651/1381 1221/650/1380 1213/642/1372 +f 1213/642/1372 1214/643/1373 1222/651/1381 +f 1088/465/1195 1223/652/1382 1214/643/1373 +f 1214/643/1373 1079/456/1186 1088/465/1195 +f 1090/467/1197 1224/653/1383 1223/652/1382 +f 1223/652/1382 1088/465/1195 1090/467/1197 +f 1225/654/1384 1226/655/1385 1215/644/1374 +f 1215/644/1374 1216/645/1375 1225/654/1384 +f 1215/644/1374 1226/655/1385 1227/656/1386 +f 1227/656/1386 1205/630/1360 1215/644/1374 +f 1228/657/1387 1205/630/1360 1227/656/1386 +f 1229/658/1388 1205/630/1360 1228/657/1387 +f 925/659/1389 926/660/1390 1229/658/1388 +f 1229/658/1388 1228/657/1387 925/659/1389 +f 927/661/1391 928/662/1392 1227/656/1386 +f 1227/656/1386 1226/655/1385 927/661/1391 +f 928/662/1392 925/659/1389 1228/657/1387 +f 1228/657/1387 1227/656/1386 928/662/1392 +f 1217/646/1376 1230/663/1393 1225/654/1384 +f 1225/654/1384 1216/645/1375 1217/646/1376 +f 1217/646/1376 1218/647/1377 1230/663/1393 +f 1231/664/1394 1230/663/1393 1218/647/1377 +f 1218/647/1377 1232/665/1395 1231/664/1394 +f 1232/665/1395 1218/647/1377 1219/648/1378 +f 1232/665/1395 1219/648/1378 1220/649/1379 +f 1233/666/1396 1231/664/1394 1232/665/1395 +f 1232/665/1395 1234/667/1397 1233/666/1396 +f 1235/668/1398 1234/667/1397 1232/665/1395 +f 1232/665/1395 1220/649/1379 1235/668/1398 +f 1235/668/1398 1220/649/1379 1221/650/1380 +f 1221/650/1380 1222/651/1381 1235/668/1398 +f 1225/654/1384 1230/663/1393 936/670/1399 +f 936/670/1399 935/669/1400 1225/654/1384 +f 937/671/1401 936/670/1399 1230/663/1393 +f 1230/663/1393 1231/664/1394 937/671/1401 +f 938/672/1402 937/671/1401 1231/664/1394 +f 1231/664/1394 1233/666/1396 938/672/1402 +f 1214/643/1373 1223/652/1382 1236/673/1403 +f 1236/673/1403 1222/651/1381 1214/643/1373 +f 1222/651/1381 1236/673/1403 1237/674/1404 +f 1237/674/1404 1235/668/1398 1222/651/1381 +f 1235/668/1398 1237/674/1404 1238/675/1405 +f 1238/675/1405 1234/667/1397 1235/668/1398 +f 1234/667/1397 1238/675/1405 1239/676/1406 +f 1239/676/1406 1233/666/1396 1234/667/1397 +f 1233/666/1396 1239/676/1406 943/677/1407 +f 943/677/1407 938/672/1402 1233/666/1396 +f 944/678/1408 943/677/1407 1239/676/1406 +f 1239/676/1406 1240/679/1409 944/678/1408 +f 1240/679/1409 1239/676/1406 1238/675/1405 +f 946/680/1410 944/678/1408 1240/679/1409 +f 947/681/1411 946/680/1410 1240/679/1409 +f 1241/682/1412 1236/673/1403 1223/652/1382 +f 1223/652/1382 1224/653/1383 1241/682/1412 +f 1236/673/1403 1241/682/1412 1242/683/1413 +f 1242/683/1413 1237/674/1404 1236/673/1403 +f 1237/674/1404 1242/683/1413 1243/684/1414 +f 1243/684/1414 1238/675/1405 1237/674/1404 +f 1238/675/1405 1243/684/1414 1244/685/1415 +f 1244/685/1415 1240/679/1409 1238/675/1405 +f 1240/679/1409 1244/685/1415 952/686/1416 +f 952/686/1416 947/681/1411 1240/679/1409 +f 1245/687/1417 1224/653/1383 1090/467/1197 +f 1090/467/1197 1113/505/1235 1245/687/1417 +f 1224/653/1383 1245/687/1417 1246/688/1418 +f 1246/688/1418 1241/682/1412 1224/653/1383 +f 1241/682/1412 1246/688/1418 1247/689/1419 +f 1247/689/1419 1242/683/1413 1241/682/1412 +f 1242/683/1413 1247/689/1419 1248/690/1420 +f 1248/690/1420 1243/684/1414 1242/683/1413 +f 1243/684/1414 1248/690/1420 1249/691/1421 +f 1249/691/1421 1244/685/1415 1243/684/1414 +f 1244/685/1415 1249/691/1421 958/692/1422 +f 958/692/1422 952/686/1416 1244/685/1415 +f 1118/511/1241 1250/693/1423 1245/687/1417 +f 1245/687/1417 1113/505/1235 1118/511/1241 +f 1245/687/1417 1250/693/1423 1251/694/1424 +f 1251/694/1424 1246/688/1418 1245/687/1417 +f 1246/688/1418 1251/694/1424 1252/695/1425 +f 1252/695/1425 1247/689/1419 1246/688/1418 +f 1247/689/1419 1252/695/1425 1253/696/1426 +f 1253/696/1426 1248/690/1420 1247/689/1419 +f 1248/690/1420 1253/696/1426 1254/697/1427 +f 1254/697/1427 1249/691/1421 1248/690/1420 +f 964/698/1428 958/692/1422 1249/691/1421 +f 1249/691/1421 1254/697/1427 964/698/1428 +f 965/699/1429 964/698/1428 1254/697/1427 +f 1254/697/1427 1255/700/1430 965/699/1429 +f 1256/701/1431 1255/700/1430 1254/697/1427 +f 1254/697/1427 1253/696/1426 1256/701/1431 +f 1257/702/1432 1256/701/1431 1253/696/1426 +f 1253/696/1426 1252/695/1425 1257/702/1432 +f 1258/703/1433 1250/693/1423 1118/511/1241 +f 1118/511/1241 1128/523/1253 1258/703/1433 +f 1250/693/1423 1258/703/1433 1259/704/1434 +f 1259/704/1434 1251/694/1424 1250/693/1423 +f 1252/695/1425 1251/694/1424 1259/704/1434 +f 1259/704/1434 1257/702/1432 1252/695/1425 +f 1130/525/1255 1258/703/1433 1128/523/1253 +f 1131/526/1256 1259/704/1434 1258/703/1433 +f 1258/703/1433 1130/525/1255 1131/526/1256 +f 1257/702/1432 1259/704/1434 1131/526/1256 +f 1131/526/1256 1260/705/1435 1257/702/1432 +f 972/706/1436 965/699/1429 1255/700/1430 +f 1255/700/1430 1261/707/1437 972/706/1436 +f 1262/708/1438 1261/707/1437 1255/700/1430 +f 1255/700/1430 1256/701/1431 1262/708/1438 +f 1262/708/1438 1256/701/1431 1257/702/1432 +f 1257/702/1432 1260/705/1435 1262/708/1438 +f 1263/709/1439 1260/705/1435 1137/535/1266 +f 1137/535/1266 1136/536/1265 1263/709/1439 +f 1262/708/1438 1260/705/1435 1263/709/1439 +f 1262/708/1438 1263/709/1439 1264/710/1440 +f 1264/710/1440 1261/707/1437 1262/708/1438 +f 977/711/1441 972/706/1436 1261/707/1437 +f 978/712/1442 977/711/1441 1261/707/1437 +f 1261/707/1437 1264/710/1440 978/712/1442 +f 1265/713/1443 1263/709/1439 1136/536/1265 +f 1136/536/1265 1140/541/1271 1265/713/1443 +f 1263/709/1439 1265/713/1443 1266/714/1444 +f 1266/714/1444 1264/710/1440 1263/709/1439 +f 1264/710/1440 1266/714/1444 981/715/1445 +f 981/715/1445 978/712/1442 1264/710/1440 +f 982/716/1446 981/715/1445 1266/714/1444 +f 1266/714/1444 1267/717/1447 982/716/1446 +f 1268/718/1448 1265/713/1443 1140/541/1271 +f 1140/541/1271 1143/548/1278 1268/718/1448 +f 1265/713/1443 1268/718/1448 1267/717/1447 +f 1267/717/1447 1266/714/1444 1265/713/1443 +f 1145/550/1280 1267/717/1447 1268/718/1448 +f 1268/718/1448 1143/548/1278 1145/550/1280 +f 1145/550/1280 987/721/1449 986/720/1450 +f 986/720/1450 1269/719/1451 1145/550/1280 +f 982/716/1446 1267/717/1447 988/722/1452 +f 989/723/1453 987/721/1449 1145/550/1280 +f 989/723/1453 1145/550/1280 831/555/1285 +s 8 +f 1205/635/1365 1229/725/1454 990/724/1455 +f 990/724/1455 901/634/1364 1205/635/1365 +f 990/724/1455 1229/725/1454 926/726/1456 +s 4 +f 991/727/1457 927/661/1391 1226/655/1385 +f 992/728/1458 991/727/1457 1226/655/1385 +f 935/669/1400 993/729/1459 1226/655/1385 +f 1226/655/1385 1225/654/1384 935/669/1400 +f 993/729/1459 992/728/1458 1226/655/1385 +f 1269/719/1451 986/720/1450 994/730/1460 +f 988/722/1452 1267/717/1447 1269/719/1451 +f 1269/719/1451 994/730/1460 988/722/1452 +f 1145/550/1280 1269/719/1451 1267/717/1447 +f 1131/526/1256 1132/527/1257 1137/535/1266 +f 1260/705/1435 1131/526/1256 1137/535/1266 +# 0 polygons - 1258 triangles + +# +# object Guard001 +# + +v -5.470424652100 -1.684487938881 -0.000000000000 +v -5.201234817505 -1.684487938881 1.653222799301 +v -5.201234817505 -0.384487986565 1.653222799301 +v -5.470424652100 -0.384488105774 -0.000000000000 +v -4.420016288757 -1.684487938881 3.186448574066 +v -4.420016288757 -0.384487986565 3.186448574066 +v -3.203240394592 -1.684487938881 4.403223037720 +v -3.203240394592 -0.384487986565 4.403223037720 +v -1.670013546944 -1.684487938881 5.184439182281 +v -1.670013546944 -0.384487986565 5.184439182281 +v 0.029575586319 -1.684487938881 5.453627109528 +v 0.029575586319 -0.384488105774 5.453627109528 +v -6.220424652100 -3.000689744949 -0.000000000000 +v -5.914526939392 -3.151126861572 1.884985685349 +v -5.914526939392 -2.211075067520 1.884985685349 +v -6.220424652100 -2.175256490707 -0.000000000000 +v -5.051835060120 -3.237509965897 3.643666744232 +v -5.051835060120 -2.222244024277 3.643666744232 +v -3.659797430038 -3.237509965897 5.009148120880 +v -3.659797430038 -2.222243785858 5.009148120880 +v -1.901775598526 -3.237509965897 5.897731781006 +v -1.901775598526 -2.222243785858 5.897731781006 +v 0.029575586319 -3.058669567108 6.203627109528 +v 0.029575586319 -2.262767791748 6.203627109528 +v -5.664766311646 -1.867401361465 1.884985804558 +v -5.930679321289 -1.831582784653 -0.000000000000 +v -4.860752105713 -1.878570318222 3.513662099838 +v -3.507917642593 -1.878570079803 4.814211368561 +v -1.824935436249 -1.878570079803 5.614829540253 +v 0.029575586319 -1.919094085693 5.935679435730 +v -5.962654113770 -3.429696559906 -0.000000000000 +v -5.714982986450 -3.418167591095 1.824344992638 +v -4.868171691895 -3.413292646408 3.533030509949 +v -3.533971071243 -3.437163352966 4.841064453125 +v -1.843428015709 -3.411631107330 5.686996936798 +v 0.029575586319 -3.375143051147 6.009787082672 +v -5.400000572205 -4.729074954987 -0.000000000000 +v -5.135704994202 -4.729074954987 1.668693900108 +v -5.135704994202 -3.757077217102 1.668693900108 +v -5.400000572205 -3.757077217102 -0.000000000000 +v -4.368690490723 -4.729074954987 3.174042701721 +v -4.368690490723 -3.757077217102 3.174042701721 +v -3.174037456512 -4.729074954987 4.368694305420 +v -3.174037456512 -3.757077217102 4.368694305420 +v -1.668687462807 -4.729074954987 5.135706901550 +v -1.668687462807 -3.757077217102 5.135706901550 +v 0.029575586319 -4.729074954987 5.400000095367 +v 0.029575586319 -3.757077217102 5.400000095367 +v -5.247686386108 -5.121375083923 -0.000000000000 +v -4.990845680237 -5.121375083923 1.621626257896 +v -4.245465278625 -5.121375560760 3.084514856339 +v -3.084509372711 -5.121375083923 4.245469570160 +v -1.621619939804 -5.121375083923 4.990847587585 +v 0.029575586319 -5.121375083923 5.247685909271 +v -4.914830207825 -5.520525932312 -0.000000000000 +v -4.674280166626 -5.520525932312 1.518767833710 +v -3.976178884506 -5.520525932312 2.888866186142 +v -2.888861417770 -5.520525932312 3.976182460785 +v -1.518761754036 -5.520525932312 4.674282073975 +v 0.029575586319 -5.520525932312 4.914829730988 +v -4.220640182495 -5.786823749542 -0.000000000000 +v -4.014066696167 -5.786823749542 1.304250955582 +v -3.414567708969 -5.786823749542 2.480831146240 +v -2.480827093124 -5.786823749542 3.414570808411 +v -1.304245710373 -5.786823272705 4.014068126678 +v 0.029575586319 -5.786824226379 4.220640182495 +v 0.029575586319 -5.786823749542 -0.000000000000 +v 5.529575347900 -1.684487938881 -0.000000000000 +v 5.529575347900 -0.384488105774 -0.000000000000 +v 5.260385513306 -0.384487986565 1.653222799301 +v 5.260385513306 -1.684487938881 1.653222799301 +v 4.479166984558 -0.384487986565 3.186448574066 +v 4.479166984558 -1.684487938881 3.186448574066 +v 3.262391567230 -0.384487986565 4.403223037720 +v 3.262391567230 -1.684487938881 4.403223037720 +v 1.729164719582 -0.384487986565 5.184439182281 +v 1.729164719582 -1.684487938881 5.184439182281 +v 6.279575347900 -3.000689744949 -0.000000000000 +v 6.279575347900 -2.175256490707 -0.000000000000 +v 5.973677635193 -2.211075067520 1.884985685349 +v 5.973677635193 -3.151126861572 1.884985685349 +v 5.110986709595 -2.222244024277 3.643666744232 +v 5.110986709595 -3.237509965897 3.643666744232 +v 3.718948602676 -2.222243785858 5.009148120880 +v 3.718948602676 -3.237509965897 5.009148120880 +v 1.960926771164 -2.222243785858 5.897731781006 +v 1.960926771164 -3.237509965897 5.897731781006 +v 5.989830017090 -1.831582784653 -0.000000000000 +v 5.723917961121 -1.867401361465 1.884985804558 +v 4.919903755188 -1.878570318222 3.513662099838 +v 3.567068815231 -1.878570079803 4.814211368561 +v 1.884086608887 -1.878570079803 5.614829540253 +v 5.774134635925 -3.418167591095 1.824344992638 +v 6.021804809570 -3.429696559906 -0.000000000000 +v 4.927323341370 -3.413292646408 3.533030509949 +v 3.593122243881 -3.437163352966 4.841064453125 +v 1.902579188347 -3.411631107330 5.686996936798 +v 5.459151268005 -4.729074954987 -0.000000000000 +v 5.459151268005 -3.757077217102 -0.000000000000 +v 5.194855690002 -3.757077217102 1.668693900108 +v 5.194855690002 -4.729074954987 1.668693900108 +v 4.427841186523 -3.757077217102 3.174042701721 +v 4.427841186523 -4.729074954987 3.174042701721 +v 3.233188629150 -3.757077217102 4.368694305420 +v 3.233188629150 -4.729074954987 4.368694305420 +v 1.727838635445 -3.757077217102 5.135706901550 +v 1.727838635445 -4.729074954987 5.135706901550 +v 5.049996376038 -5.121375083923 1.621626257896 +v 5.306837081909 -5.121375083923 -0.000000000000 +v 4.304615974426 -5.121375560760 3.084514856339 +v 3.143660545349 -5.121375083923 4.245469570160 +v 1.680771112442 -5.121375083923 4.990847587585 +v 4.733430862427 -5.520525932312 1.518767833710 +v 4.973980903625 -5.520525932312 -0.000000000000 +v 4.035329818726 -5.520525932312 2.888866186142 +v 2.948012590408 -5.520525932312 3.976182460785 +v 1.577912926674 -5.520525932312 4.674282073975 +v 4.073217391968 -5.786823749542 1.304250955582 +v 4.279790878296 -5.786823749542 -0.000000000000 +v 3.473718881607 -5.786823749542 2.480831146240 +v 2.539978265762 -5.786823749542 3.414570808411 +v 1.363396883011 -5.786823272705 4.014068126678 +v -5.201234817505 -0.384487986565 -1.653222799301 +v -5.201234817505 -1.684487938881 -1.653222799301 +v -4.420016288757 -0.384487986565 -3.186448574066 +v -4.420016288757 -1.684487938881 -3.186448574066 +v -3.203240394592 -0.384487986565 -4.403223037720 +v -3.203240394592 -1.684487938881 -4.403223037720 +v -1.670013546944 -0.384487986565 -5.184439182281 +v -1.670013546944 -1.684487938881 -5.184439182281 +v 0.029575586319 -0.384488105774 -5.453627109528 +v 0.029575586319 -1.684487938881 -5.453627109528 +v -5.914526939392 -2.211075067520 -1.884985685349 +v -5.914526939392 -3.151126861572 -1.884985685349 +v -5.051835060120 -2.222244024277 -3.643666744232 +v -5.051835060120 -3.237509965897 -3.643666744232 +v -3.659797430038 -2.222243785858 -5.009148120880 +v -3.659797430038 -3.237509965897 -5.009148120880 +v -1.901775598526 -2.222243785858 -5.897731781006 +v -1.901775598526 -3.237509965897 -5.897731781006 +v 0.029575586319 -2.262767791748 -6.203627109528 +v 0.029575586319 -3.058669567108 -6.203627109528 +v -5.664766311646 -1.867401361465 -1.884985804558 +v -4.860752105713 -1.878570318222 -3.513662099838 +v -3.507917642593 -1.878570079803 -4.814211368561 +v -1.824935436249 -1.878570079803 -5.614829540253 +v 0.029575586319 -1.919094085693 -5.935679435730 +v -5.714982986450 -3.418167591095 -1.824344992638 +v -4.868171691895 -3.413292646408 -3.533030509949 +v -3.533971071243 -3.437163352966 -4.841064453125 +v -1.843428015709 -3.411631107330 -5.686996936798 +v 0.029575586319 -3.375143051147 -6.009787082672 +v -5.135704994202 -3.757077217102 -1.668693900108 +v -5.135704994202 -4.729074954987 -1.668693900108 +v -4.368690490723 -3.757077217102 -3.174042701721 +v -4.368690490723 -4.729074954987 -3.174042701721 +v -3.174037456512 -3.757077217102 -4.368694305420 +v -3.174037456512 -4.729074954987 -4.368694305420 +v -1.668687462807 -3.757077217102 -5.135706901550 +v -1.668687462807 -4.729074954987 -5.135706901550 +v 0.029575586319 -3.757077217102 -5.400000095367 +v 0.029575586319 -4.729074954987 -5.400000095367 +v -4.990845680237 -5.121375083923 -1.621626257896 +v -4.245465278625 -5.121375560760 -3.084514856339 +v -3.084509372711 -5.121375083923 -4.245469570160 +v -1.621619939804 -5.121375083923 -4.990847587585 +v 0.029575586319 -5.121375083923 -5.247685909271 +v -4.674280166626 -5.520525932312 -1.518767833710 +v -3.976178884506 -5.520525932312 -2.888866186142 +v -2.888861417770 -5.520525932312 -3.976182460785 +v -1.518761754036 -5.520525932312 -4.674282073975 +v 0.029575586319 -5.520525932312 -4.914829730988 +v -4.014066696167 -5.786823749542 -1.304250955582 +v -3.414567708969 -5.786823749542 -2.480831146240 +v -2.480827093124 -5.786823749542 -3.414570808411 +v -1.304245710373 -5.786823272705 -4.014068126678 +v 0.029575586319 -5.786824226379 -4.220640182495 +v 5.260385513306 -1.684487938881 -1.653222799301 +v 5.260385513306 -0.384487986565 -1.653222799301 +v 4.479166984558 -1.684487938881 -3.186448574066 +v 4.479166984558 -0.384487986565 -3.186448574066 +v 3.262391567230 -1.684487938881 -4.403223037720 +v 3.262391567230 -0.384487986565 -4.403223037720 +v 1.729164719582 -1.684487938881 -5.184439182281 +v 1.729164719582 -0.384487986565 -5.184439182281 +v 5.973677635193 -3.151126861572 -1.884985685349 +v 5.973677635193 -2.211075067520 -1.884985685349 +v 5.110986709595 -3.237509965897 -3.643666744232 +v 5.110986709595 -2.222244024277 -3.643666744232 +v 3.718948602676 -3.237509965897 -5.009148120880 +v 3.718948602676 -2.222243785858 -5.009148120880 +v 1.960926771164 -3.237509965897 -5.897731781006 +v 1.960926771164 -2.222243785858 -5.897731781006 +v 5.723917961121 -1.867401361465 -1.884985804558 +v 4.919903755188 -1.878570318222 -3.513662099838 +v 3.567068815231 -1.878570079803 -4.814211368561 +v 1.884086608887 -1.878570079803 -5.614829540253 +v 5.774134635925 -3.418167591095 -1.824344992638 +v 4.927323341370 -3.413292646408 -3.533030509949 +v 3.593122243881 -3.437163352966 -4.841064453125 +v 1.902579188347 -3.411631107330 -5.686996936798 +v 5.194855690002 -4.729074954987 -1.668693900108 +v 5.194855690002 -3.757077217102 -1.668693900108 +v 4.427841186523 -4.729074954987 -3.174042701721 +v 4.427841186523 -3.757077217102 -3.174042701721 +v 3.233188629150 -4.729074954987 -4.368694305420 +v 3.233188629150 -3.757077217102 -4.368694305420 +v 1.727838635445 -4.729074954987 -5.135706901550 +v 1.727838635445 -3.757077217102 -5.135706901550 +v 5.049996376038 -5.121375083923 -1.621626257896 +v 4.304615974426 -5.121375560760 -3.084514856339 +v 3.143660545349 -5.121375083923 -4.245469570160 +v 1.680771112442 -5.121375083923 -4.990847587585 +v 4.733430862427 -5.520525932312 -1.518767833710 +v 4.035329818726 -5.520525932312 -2.888866186142 +v 2.948012590408 -5.520525932312 -3.976182460785 +v 1.577912926674 -5.520525932312 -4.674282073975 +v 4.073217391968 -5.786823749542 -1.304250955582 +v 3.473718881607 -5.786823749542 -2.480831146240 +v 2.539978265762 -5.786823749542 -3.414570808411 +v 1.363396883011 -5.786823272705 -4.014068126678 +# 221 vertices + +vn -0.778067767620 0.615272343159 0.126690670848 +vn -0.756108641624 0.605821728706 0.247547447681 +vn -0.950385034084 0.000000000000 0.311076104641 +vn -0.987001538277 0.000000000000 0.160710811615 +vn -0.642615854740 0.605432093143 0.469570934772 +vn -0.809016704559 0.000000000000 0.587785661221 +vn -0.469948798418 0.594743013382 0.652249097824 +vn -0.587784588337 0.000000000000 0.809017479420 +vn -0.247684165835 0.576734125614 0.778479456902 +vn -0.309016346931 0.000000000000 0.951056718826 +vn 0.000000002695 0.555470347404 0.831536352634 +vn 0.000000004802 0.000000000000 1.000000000000 +vn -0.959652423859 -0.246059253812 0.136096015573 +vn -0.907839775085 -0.315052658319 0.276710659266 +vn -0.912596762180 0.290092885494 0.288120150566 +vn -0.932779848576 0.327544033527 0.150454714894 +vn -0.740586042404 -0.409734338522 0.532588064671 +vn -0.776234447956 0.283946722746 0.562880337238 +vn -0.540344893932 -0.382222026587 0.749622404575 +vn -0.553123354912 0.300823003054 0.776891291142 +vn -0.256645768881 -0.426488459110 0.867318034172 +vn -0.287532955408 0.335519164801 0.897079527378 +vn -0.000000003675 -0.264560043812 0.964369237423 +vn 0.000000000000 0.311830163002 0.950137853622 +vn -0.591847658157 0.778900146484 0.207439005375 +vn -0.571565985680 0.815417587757 0.091686971486 +vn -0.509922623634 0.773330032825 0.376748710871 +vn -0.358573347330 0.778568804264 0.515029847622 +vn -0.183199927211 0.796365916729 0.576401829720 +vn 0.000000006195 0.768534779549 0.639807999134 +vn -0.704594016075 -0.703925430775 0.089644826949 +vn -0.633421182632 -0.750370025635 0.189003676176 +vn -0.462263703346 -0.820029973984 0.337436050177 +vn -0.346629530191 -0.804401397705 0.482479363680 +vn -0.157550543547 -0.814099013805 0.558946013451 +vn 0.000000002490 -0.689931631088 0.723874509335 +vn -0.971785366535 -0.178726151586 0.153915941715 +vn -0.935368657112 -0.180881425738 0.303920030594 +vn -0.807856321335 -0.527376294136 0.263139486313 +vn -0.845025539398 -0.518413066864 0.131071537733 +vn -0.795671880245 -0.180881589651 0.578090071678 +vn -0.686819672585 -0.530226111412 0.497130751610 +vn -0.578089118004 -0.180881559849 0.795672535896 +vn -0.492948353291 -0.534253001213 0.686713635921 +vn -0.302681952715 -0.180854514241 0.935775220394 +vn -0.263751983643 -0.516113519669 0.814899802208 +vn 0.000000001242 -0.180913671851 0.983498990536 +vn 0.000000001312 -0.507752418518 0.861503005028 +vn -0.857460379601 -0.496304064989 0.135808601975 +vn -0.823119223118 -0.500945389271 0.267448037863 +vn -0.700186550617 -0.500945866108 0.508716106415 +vn -0.508715093136 -0.500945627689 0.700187444687 +vn -0.266336023808 -0.500895261765 0.823510229588 +vn -0.000000004301 -0.501028180122 0.865430951118 +vn -0.595359206200 -0.797907054424 0.094295851886 +vn -0.568754136562 -0.801478505135 0.184799790382 +vn -0.483810842037 -0.801478624344 0.351509690285 +vn -0.351509094238 -0.801478564739 0.483811378479 +vn -0.184009283781 -0.801381766796 0.569146633148 +vn -0.000000001249 -0.801670134068 0.597766697407 +vn -0.199513211846 -0.979385495186 0.031599886715 +vn -0.189843177795 -0.979874849319 0.061683908105 +vn -0.161490082741 -0.979874849319 0.117329604924 +vn -0.117329291999 -0.979874849319 0.161490276456 +vn -0.061410419643 -0.979841589928 0.190103232861 +vn -0.000000000402 -0.979951858521 0.199234381318 +vn 0.000000000000 -1.000000000000 0.000000020140 +vn 0.778067767620 0.615272343159 0.126690670848 +vn 0.987001538277 0.000000000000 0.160710811615 +vn 0.950385034084 0.000000000000 0.311076045036 +vn 0.756108522415 0.605821907520 0.247547373176 +vn 0.809016764164 0.000000000000 0.587785542011 +vn 0.642615675926 0.605432331562 0.469570875168 +vn 0.587784647942 0.000000000000 0.809017419815 +vn 0.469948917627 0.594743013382 0.652249038219 +vn 0.309016346931 0.000000000000 0.951056718826 +vn 0.247684165835 0.576734125614 0.778479456902 +vn 0.959652364254 -0.246059283614 0.136096015573 +vn 0.932779908180 0.327544003725 0.150454550982 +vn 0.912597060204 0.290092140436 0.288120090961 +vn 0.907840073109 -0.315051794052 0.276710510254 +vn 0.776234567165 0.283946752548 0.562880277634 +vn 0.740586161613 -0.409734249115 0.532588005066 +vn 0.553123295307 0.300823003054 0.776891350746 +vn 0.540344774723 -0.382222115993 0.749622404575 +vn 0.287532955408 0.335519164801 0.897079527378 +vn 0.256645768881 -0.426488399506 0.867318034172 +vn 0.571565866470 0.815417706966 0.091686718166 +vn 0.591848194599 0.778899669647 0.207439109683 +vn 0.509922564030 0.773330152035 0.376748561859 +vn 0.358573257923 0.778568804264 0.515029907227 +vn 0.183199957013 0.796365916729 0.576401829720 +vn 0.633421897888 -0.750369489193 0.189003571868 +vn 0.704594016075 -0.703925490379 0.089644685388 +vn 0.462263554335 -0.820030093193 0.337435930967 +vn 0.346629500389 -0.804401457310 0.482479363680 +vn 0.157550528646 -0.814099013805 0.558946013451 +vn 0.971785366535 -0.178726136684 0.153915926814 +vn 0.845025479794 -0.518413186073 0.131071418524 +vn 0.807856082916 -0.527376651764 0.263139456511 +vn 0.935368657112 -0.180881455541 0.303920060396 +vn 0.686819553375 -0.530226349831 0.497130692005 +vn 0.795671939850 -0.180881604552 0.578089952469 +vn 0.492948442698 -0.534253001213 0.686713576317 +vn 0.578089177608 -0.180881544948 0.795672535896 +vn 0.263751953840 -0.516113579273 0.814899802208 +vn 0.302681982517 -0.180854514241 0.935775220394 +vn 0.823119223118 -0.500945389271 0.267448037863 +vn 0.857460379601 -0.496304035187 0.135808587074 +vn 0.700186610222 -0.500945806503 0.508716046810 +vn 0.508715152740 -0.500945627689 0.700187385082 +vn 0.266336023808 -0.500895261765 0.823510169983 +vn 0.568754136562 -0.801478505135 0.184799775481 +vn 0.595359206200 -0.797907054424 0.094295844436 +vn 0.483810961246 -0.801478564739 0.351509630680 +vn 0.351509153843 -0.801478564739 0.483811408281 +vn 0.184009268880 -0.801381766796 0.569146633148 +vn 0.189843177795 -0.979874849319 0.061683882028 +vn 0.199513211846 -0.979385495186 0.031599890441 +vn 0.161490157247 -0.979874849319 0.117329604924 +vn 0.117329284549 -0.979874849319 0.161490276456 +vn 0.061410415918 -0.979841589928 0.190103217959 +vn -0.778067767620 0.615272343159 -0.126690670848 +vn -0.987001538277 0.000000000000 -0.160710811615 +vn -0.950385034084 0.000000000000 -0.311076045036 +vn -0.756108641624 0.605821728706 -0.247547477484 +vn -0.809016704559 0.000000000000 -0.587785661221 +vn -0.642615795135 0.605432093143 -0.469570964575 +vn -0.587784588337 0.000000000000 -0.809017479420 +vn -0.469948828220 0.594742953777 -0.652249097824 +vn -0.309016346931 0.000000000000 -0.951056718826 +vn -0.247684165835 0.576734125614 -0.778479456902 +vn -0.000000004802 0.000000000000 -1.000000000000 +vn 0.000000002695 0.555470347404 -0.831536352634 +vn -0.959652364254 -0.246059283614 -0.136096015573 +vn -0.932779848576 0.327544093132 -0.150454729795 +vn -0.912596762180 0.290092885494 -0.288120180368 +vn -0.907839775085 -0.315052688122 -0.276710659266 +vn -0.776234388351 0.283946782351 -0.562880396843 +vn -0.740586102009 -0.409734249115 -0.532588064671 +vn -0.553123354912 0.300823003054 -0.776891291142 +vn -0.540344834328 -0.382222115993 -0.749622404575 +vn -0.287532955408 0.335519164801 -0.897079527378 +vn -0.256645768881 -0.426488399506 -0.867318034172 +vn 0.000000002608 0.311830133200 -0.950137853622 +vn 0.000000005113 -0.264560014009 -0.964369237423 +vn -0.571565985680 0.815417587757 -0.091686956584 +vn -0.591847658157 0.778900146484 -0.207439005375 +vn -0.509922623634 0.773329973221 -0.376748740673 +vn -0.358573287725 0.778568863869 -0.515029847622 +vn -0.183199957013 0.796365916729 -0.576401829720 +vn -0.000000006659 0.768534779549 -0.639808058739 +vn -0.633421182632 -0.750370085239 -0.189003646374 +vn -0.704594016075 -0.703925430775 -0.089644826949 +vn -0.462263703346 -0.820029973984 -0.337436020374 +vn -0.346629530191 -0.804401397705 -0.482479363680 +vn -0.157550528646 -0.814099013805 -0.558946013451 +vn 0.000000002490 -0.689931631088 -0.723874509335 +vn -0.971785366535 -0.178726136684 -0.153915926814 +vn -0.845025479794 -0.518413126469 -0.131071552634 +vn -0.807856321335 -0.527376294136 -0.263139516115 +vn -0.935368657112 -0.180881455541 -0.303920060396 +vn -0.686819672585 -0.530226111412 -0.497130751610 +vn -0.795671820641 -0.180881619453 -0.578090071678 +vn -0.492948353291 -0.534253001213 -0.686713635921 +vn -0.578089058399 -0.180881544948 -0.795672595501 +vn -0.263751953840 -0.516113579273 -0.814899802208 +vn -0.302681982517 -0.180854514241 -0.935775220394 +vn -0.000000000984 -0.507752418518 -0.861503064632 +vn 0.000000004968 -0.180913686752 -0.983498990536 +vn -0.823119223118 -0.500945389271 -0.267448037863 +vn -0.857460379601 -0.496304035187 -0.135808587074 +vn -0.700186491013 -0.500945925713 -0.508716106415 +vn -0.508715093136 -0.500945627689 -0.700187385082 +vn -0.266336023808 -0.500895261765 -0.823510169983 +vn 0.000000002458 -0.501028180122 -0.865430951118 +vn -0.568754136562 -0.801478505135 -0.184799790382 +vn -0.595359206200 -0.797907054424 -0.094295844436 +vn -0.483810782433 -0.801478683949 -0.351509630680 +vn -0.351509124041 -0.801478564739 -0.483811408281 +vn -0.184009268880 -0.801381766796 -0.569146633148 +vn -0.000000002497 -0.801670074463 -0.597766697407 +vn -0.189843177795 -0.979874849319 -0.061683896929 +vn -0.199513211846 -0.979385495186 -0.031599890441 +vn -0.161490097642 -0.979874849319 -0.117329612374 +vn -0.117329284549 -0.979874849319 -0.161490276456 +vn -0.061410415918 -0.979841589928 -0.190103217959 +vn -0.000000000402 -0.979951858521 -0.199234381318 +vn -0.000000000000 -1.000000000000 -0.000000020140 +vn 0.778067767620 0.615272343159 -0.126690670848 +vn 0.756108522415 0.605821907520 -0.247547343373 +vn 0.950385034084 0.000000000000 -0.311076104641 +vn 0.987001538277 0.000000000000 -0.160710811615 +vn 0.642615735531 0.605432271957 -0.469570845366 +vn 0.809016764164 0.000000000000 -0.587785542011 +vn 0.469948887825 0.594743013382 -0.652249038219 +vn 0.587784707546 0.000000000000 -0.809017419815 +vn 0.247684165835 0.576734125614 -0.778479456902 +vn 0.309016346931 0.000000000000 -0.951056718826 +vn 0.959652423859 -0.246059253812 -0.136096015573 +vn 0.907840132713 -0.315051764250 -0.276710510254 +vn 0.912597060204 0.290092140436 -0.288120120764 +vn 0.932779908180 0.327543973923 -0.150454550982 +vn 0.740586161613 -0.409734278917 -0.532587945461 +vn 0.776234447956 0.283946871758 -0.562880337238 +vn 0.540344774723 -0.382222086191 -0.749622404575 +vn 0.553123295307 0.300823032856 -0.776891291142 +vn 0.256645768881 -0.426488459110 -0.867318034172 +vn 0.287532955408 0.335519164801 -0.897079527378 +vn 0.591848254204 0.778899669647 -0.207439094782 +vn 0.571565926075 0.815417647362 -0.091686718166 +vn 0.509922564030 0.773330152035 -0.376748591661 +vn 0.358573198318 0.778568863869 -0.515029847622 +vn 0.183199927211 0.796365916729 -0.576401829720 +vn 0.704594075680 -0.703925430775 -0.089644700289 +vn 0.633421838284 -0.750369548798 -0.189003586769 +vn 0.462263554335 -0.820030152798 -0.337435901165 +vn 0.346629530191 -0.804401397705 -0.482479363680 +vn 0.157550543547 -0.814099013805 -0.558946013451 +vn 0.971785366535 -0.178726151586 -0.153915941715 +vn 0.935368657112 -0.180881425738 -0.303920030594 +vn 0.807856082916 -0.527376651764 -0.263139456511 +vn 0.845025479794 -0.518413126469 -0.131071433425 +vn 0.795671939850 -0.180881589651 -0.578089952469 +vn 0.686819553375 -0.530226349831 -0.497130692005 +vn 0.578089237213 -0.180881544948 -0.795672476292 +vn 0.492948412895 -0.534253001213 -0.686713635921 +vn 0.302681952715 -0.180854514241 -0.935775220394 +vn 0.263751983643 -0.516113519669 -0.814899802208 +vn 0.857460379601 -0.496304064989 -0.135808601975 +vn 0.823119223118 -0.500945389271 -0.267448037863 +vn 0.700186610222 -0.500945806503 -0.508715987206 +vn 0.508715212345 -0.500945687294 -0.700187325478 +vn 0.266336023808 -0.500895261765 -0.823510229588 +vn 0.595359206200 -0.797907054424 -0.094295851886 +vn 0.568754196167 -0.801478445530 -0.184799790382 +vn 0.483811020851 -0.801478564739 -0.351509630680 +vn 0.351509183645 -0.801478505135 -0.483811438084 +vn 0.184009283781 -0.801381766796 -0.569146633148 +vn 0.199513211846 -0.979385495186 -0.031599886715 +vn 0.189843162894 -0.979874849319 -0.061683882028 +vn 0.161490157247 -0.979874849319 -0.117329612374 +vn 0.117329291999 -0.979874849319 -0.161490276456 +vn 0.061410419643 -0.979841589928 -0.190103232861 +# 244 vertex normals + +vt 0.601459622383 0.988810241222 0.000000000000 +vt 0.601600348949 0.950964391232 0.000000000000 +vt 0.631772458553 0.949650228024 0.000000000000 +vt 0.631772458553 0.988810241222 0.000000000000 +vt 0.601540267467 0.912914693356 0.000000000000 +vt 0.631772458553 0.911759197712 0.000000000000 +vt 0.601647973061 0.875083386898 0.000000000000 +vt 0.631772458553 0.874361932278 0.000000000000 +vt 0.601664721966 0.837472021580 0.000000000000 +vt 0.631772458553 0.837144076824 0.000000000000 +vt 0.601583778858 0.799941480160 0.000000000000 +vt 0.631772458553 0.799873173237 0.000000000000 +vt 0.554210782051 0.988810241222 0.000000000000 +vt 0.554049015045 0.951644361019 0.000000000000 +vt 0.576511025429 0.951658785343 0.000000000000 +vt 0.576159775257 0.988810241222 0.000000000000 +vt 0.552892327309 0.913790583611 0.000000000000 +vt 0.576560258865 0.913656413555 0.000000000000 +vt 0.553784132004 0.876042842865 0.000000000000 +vt 0.577448129654 0.875937700272 0.000000000000 +vt 0.554036140442 0.837883114815 0.000000000000 +vt 0.577826142311 0.837813854218 0.000000000000 +vt 0.558325171471 0.800019621849 0.000000000000 +vt 0.577227890491 0.799993634224 0.000000000000 +vt 0.587656080723 0.949727833271 0.000000000000 +vt 0.589054644108 0.988810241222 0.000000000000 +vt 0.587249159813 0.913246631622 0.000000000000 +vt 0.588220655918 0.875523686409 0.000000000000 +vt 0.589287936687 0.837978243828 0.000000000000 +vt 0.588290750980 0.799973070621 0.000000000000 +vt 0.540191829205 0.988810241222 0.000000000000 +vt 0.544687986374 0.951944231987 0.000000000000 +vt 0.545607566833 0.913662552834 0.000000000000 +vt 0.546048641205 0.876185834408 0.000000000000 +vt 0.546569585800 0.838191449642 0.000000000000 +vt 0.548597276211 0.800030171871 0.000000000000 +vt 0.502357423306 0.988810241222 0.000000000000 +vt 0.505513012409 0.951377332211 0.000000000000 +vt 0.528019070625 0.951450288296 0.000000000000 +vt 0.525004208088 0.988810241222 0.000000000000 +vt 0.506570935249 0.913621723652 0.000000000000 +vt 0.529063880444 0.913682878017 0.000000000000 +vt 0.507530033588 0.875931203365 0.000000000000 +vt 0.530055403709 0.875969350338 0.000000000000 +vt 0.508056521416 0.838301837444 0.000000000000 +vt 0.530633389950 0.838301897049 0.000000000000 +vt 0.508317351341 0.800096988678 0.000000000000 +vt 0.531150877476 0.800055742264 0.000000000000 +vt 0.492212593555 0.988810241222 0.000000000000 +vt 0.495335847139 0.951488673687 0.000000000000 +vt 0.496243059635 0.913694858551 0.000000000000 +vt 0.497118175030 0.876004517078 0.000000000000 +vt 0.497551798820 0.838363409042 0.000000000000 +vt 0.497682511806 0.800117313862 0.000000000000 +vt 0.481058984995 0.988810241222 0.000000000000 +vt 0.483135700226 0.951417982578 0.000000000000 +vt 0.483963906765 0.913698017597 0.000000000000 +vt 0.484642684460 0.876015067101 0.000000000000 +vt 0.484967529774 0.838395297527 0.000000000000 +vt 0.485006481409 0.800152599812 0.000000000000 +vt 0.466568768024 0.988810241222 0.000000000000 +vt 0.466568768024 0.951252877712 0.000000000000 +vt 0.466568768024 0.913555502892 0.000000000000 +vt 0.466568768024 0.875982046127 0.000000000000 +vt 0.466568768024 0.838410019875 0.000000000000 +vt 0.466568768024 0.800219178200 0.000000000000 +vt 0.563220381737 0.576098442078 0.000000000000 +vt 0.533926129341 0.580822169781 0.000000000000 +vt 0.533926069736 0.483631998301 0.000000000000 +vt 0.590125381947 0.562389671803 0.000000000000 +vt 0.611477255821 0.541037678719 0.000000000000 +vt 0.625186026096 0.514132738113 0.000000000000 +vt 0.629909753799 0.483632057905 0.000000000000 +vt 0.600484013557 0.611338138580 0.000000000000 +vt 0.631772458553 0.611338138580 0.000000000000 +vt 0.631772458553 0.650459289551 0.000000000000 +vt 0.601437509060 0.649071931839 0.000000000000 +vt 0.631772458553 0.688226461411 0.000000000000 +vt 0.601438760757 0.687081038952 0.000000000000 +vt 0.631772458553 0.725498616695 0.000000000000 +vt 0.601576507092 0.724859178066 0.000000000000 +vt 0.631772458553 0.762632846832 0.000000000000 +vt 0.601626396179 0.762426912785 0.000000000000 +vt 0.553229689598 0.611338138580 0.000000000000 +vt 0.575163960457 0.611338138580 0.000000000000 +vt 0.576326072216 0.648442268372 0.000000000000 +vt 0.553705751896 0.648492693901 0.000000000000 +vt 0.576336622238 0.686402142048 0.000000000000 +vt 0.552581608295 0.686297953129 0.000000000000 +vt 0.577265739441 0.724080741405 0.000000000000 +vt 0.553550779819 0.724025368690 0.000000000000 +vt 0.577729463577 0.762180030346 0.000000000000 +vt 0.553913712502 0.762173652649 0.000000000000 +vt 0.588066339493 0.611338138580 0.000000000000 +vt 0.587559163570 0.650352716446 0.000000000000 +vt 0.587096810341 0.686783611774 0.000000000000 +vt 0.588092625141 0.724463343620 0.000000000000 +vt 0.589218616486 0.761976659298 0.000000000000 +vt 0.544221699238 0.648163974285 0.000000000000 +vt 0.539234340191 0.611338138580 0.000000000000 +vt 0.545217275620 0.686433851719 0.000000000000 +vt 0.545766711235 0.723895311356 0.000000000000 +vt 0.546421945095 0.761879503727 0.000000000000 +vt 0.501483142376 0.611338138580 0.000000000000 +vt 0.524089694023 0.611338138580 0.000000000000 +vt 0.527441442013 0.648685395718 0.000000000000 +vt 0.504866957664 0.648793101311 0.000000000000 +vt 0.528597891331 0.686445415020 0.000000000000 +vt 0.506040215492 0.686556398869 0.000000000000 +vt 0.529727995396 0.724150061607 0.000000000000 +vt 0.507157266140 0.724256455898 0.000000000000 +vt 0.530461490154 0.761812984943 0.000000000000 +vt 0.507859885693 0.761891126633 0.000000000000 +vt 0.494619846344 0.648682892323 0.000000000000 +vt 0.491362750530 0.611338138580 0.000000000000 +vt 0.495681256056 0.686500966549 0.000000000000 +vt 0.496700406075 0.724215388298 0.000000000000 +vt 0.497329056263 0.761867761612 0.000000000000 +vt 0.482377141714 0.648786365986 0.000000000000 +vt 0.480242937803 0.611338138580 0.000000000000 +vt 0.483352392912 0.686547219753 0.000000000000 +vt 0.484176784754 0.724259793758 0.000000000000 +vt 0.484717786312 0.761901974678 0.000000000000 +vt 0.466568768024 0.648969352245 0.000000000000 +vt 0.466568768024 0.611338138580 0.000000000000 +vt 0.466568768024 0.686747014523 0.000000000000 +vt 0.466568768024 0.724393785000 0.000000000000 +vt 0.466568768024 0.762012541294 0.000000000000 +vt 0.563220322132 0.391165435314 0.000000000000 +vt 0.533926069736 0.386441648006 0.000000000000 +vt 0.590125262737 0.404874175787 0.000000000000 +vt 0.611477196217 0.426226139069 0.000000000000 +vt 0.625186026096 0.453131198883 0.000000000000 +# 133 texture coords + +g Guard001 +s 1 +f 1270/731/1461 1271/732/1462 1272/733/1463 +f 1272/733/1463 1273/734/1464 1270/731/1461 +f 1271/732/1462 1274/735/1465 1275/736/1466 +f 1275/736/1466 1272/733/1463 1271/732/1462 +f 1274/735/1465 1276/737/1467 1277/738/1468 +f 1277/738/1468 1275/736/1466 1274/735/1465 +f 1276/737/1467 1278/739/1469 1279/740/1470 +f 1279/740/1470 1277/738/1468 1276/737/1467 +f 1278/739/1469 1280/741/1471 1281/742/1472 +f 1281/742/1472 1279/740/1470 1278/739/1469 +f 1282/743/1473 1283/744/1474 1284/745/1475 +f 1284/745/1475 1285/746/1476 1282/743/1473 +f 1283/744/1474 1286/747/1477 1287/748/1478 +f 1287/748/1478 1284/745/1475 1283/744/1474 +f 1286/747/1477 1288/749/1479 1289/750/1480 +f 1289/750/1480 1287/748/1478 1286/747/1477 +f 1288/749/1479 1290/751/1481 1291/752/1482 +f 1291/752/1482 1289/750/1480 1288/749/1479 +f 1290/751/1481 1292/753/1483 1293/754/1484 +f 1293/754/1484 1291/752/1482 1290/751/1481 +f 1285/746/1476 1284/745/1475 1294/755/1485 +f 1294/755/1485 1295/756/1486 1285/746/1476 +f 1284/745/1475 1287/748/1478 1296/757/1487 +f 1296/757/1487 1294/755/1485 1284/745/1475 +f 1287/748/1478 1289/750/1480 1297/758/1488 +f 1297/758/1488 1296/757/1487 1287/748/1478 +f 1289/750/1480 1291/752/1482 1298/759/1489 +f 1298/759/1489 1297/758/1488 1289/750/1480 +f 1291/752/1482 1293/754/1484 1299/760/1490 +f 1299/760/1490 1298/759/1489 1291/752/1482 +f 1299/760/1490 1280/741/1471 1278/739/1469 +f 1278/739/1469 1298/759/1489 1299/760/1490 +f 1298/759/1489 1278/739/1469 1276/737/1467 +f 1276/737/1467 1297/758/1488 1298/759/1489 +f 1297/758/1488 1276/737/1467 1274/735/1465 +f 1274/735/1465 1296/757/1487 1297/758/1488 +f 1294/755/1485 1296/757/1487 1274/735/1465 +f 1274/735/1465 1271/732/1462 1294/755/1485 +f 1295/756/1486 1294/755/1485 1271/732/1462 +f 1271/732/1462 1270/731/1461 1295/756/1486 +f 1283/744/1474 1282/743/1473 1300/761/1491 +f 1300/761/1491 1301/762/1492 1283/744/1474 +f 1286/747/1477 1283/744/1474 1301/762/1492 +f 1301/762/1492 1302/763/1493 1286/747/1477 +f 1288/749/1479 1286/747/1477 1302/763/1493 +f 1302/763/1493 1303/764/1494 1288/749/1479 +f 1290/751/1481 1288/749/1479 1303/764/1494 +f 1303/764/1494 1304/765/1495 1290/751/1481 +f 1292/753/1483 1290/751/1481 1304/765/1495 +f 1304/765/1495 1305/766/1496 1292/753/1483 +f 1306/767/1497 1307/768/1498 1308/769/1499 +f 1308/769/1499 1309/770/1500 1306/767/1497 +f 1307/768/1498 1310/771/1501 1311/772/1502 +f 1311/772/1502 1308/769/1499 1307/768/1498 +f 1310/771/1501 1312/773/1503 1313/774/1504 +f 1313/774/1504 1311/772/1502 1310/771/1501 +f 1312/773/1503 1314/775/1505 1315/776/1506 +f 1315/776/1506 1313/774/1504 1312/773/1503 +f 1314/775/1505 1316/777/1507 1317/778/1508 +f 1317/778/1508 1315/776/1506 1314/775/1505 +f 1307/768/1498 1306/767/1497 1318/779/1509 +f 1318/779/1509 1319/780/1510 1307/768/1498 +f 1310/771/1501 1307/768/1498 1319/780/1510 +f 1319/780/1510 1320/781/1511 1310/771/1501 +f 1312/773/1503 1310/771/1501 1320/781/1511 +f 1320/781/1511 1321/782/1512 1312/773/1503 +f 1314/775/1505 1312/773/1503 1321/782/1512 +f 1321/782/1512 1322/783/1513 1314/775/1505 +f 1316/777/1507 1314/775/1505 1322/783/1513 +f 1322/783/1513 1323/784/1514 1316/777/1507 +f 1319/780/1510 1318/779/1509 1324/785/1515 +f 1324/785/1515 1325/786/1516 1319/780/1510 +f 1320/781/1511 1319/780/1510 1325/786/1516 +f 1325/786/1516 1326/787/1517 1320/781/1511 +f 1321/782/1512 1320/781/1511 1326/787/1517 +f 1326/787/1517 1327/788/1518 1321/782/1512 +f 1322/783/1513 1321/782/1512 1327/788/1518 +f 1327/788/1518 1328/789/1519 1322/783/1513 +f 1323/784/1514 1322/783/1513 1328/789/1519 +f 1328/789/1519 1329/790/1520 1323/784/1514 +f 1325/786/1516 1324/785/1515 1330/791/1521 +f 1330/791/1521 1331/792/1522 1325/786/1516 +f 1326/787/1517 1325/786/1516 1331/792/1522 +f 1331/792/1522 1332/793/1523 1326/787/1517 +f 1327/788/1518 1326/787/1517 1332/793/1523 +f 1332/793/1523 1333/794/1524 1327/788/1518 +f 1328/789/1519 1327/788/1518 1333/794/1524 +f 1333/794/1524 1334/795/1525 1328/789/1519 +f 1329/790/1520 1328/789/1519 1334/795/1525 +f 1334/795/1525 1335/796/1526 1329/790/1520 +f 1331/797/1522 1330/798/1521 1336/799/1527 +f 1332/800/1523 1331/797/1522 1336/799/1527 +f 1333/801/1524 1332/800/1523 1336/799/1527 +f 1334/802/1525 1333/801/1524 1336/799/1527 +f 1335/803/1526 1334/802/1525 1336/799/1527 +f 1317/778/1508 1305/766/1496 1304/765/1495 +f 1304/765/1495 1315/776/1506 1317/778/1508 +f 1313/774/1504 1315/776/1506 1304/765/1495 +f 1304/765/1495 1303/764/1494 1313/774/1504 +f 1311/772/1502 1313/774/1504 1303/764/1494 +f 1303/764/1494 1302/763/1493 1311/772/1502 +f 1308/769/1499 1311/772/1502 1302/763/1493 +f 1302/763/1493 1301/762/1492 1308/769/1499 +f 1309/770/1500 1308/769/1499 1301/762/1492 +f 1301/762/1492 1300/761/1491 1309/770/1500 +f 1337/804/1528 1338/805/1529 1339/806/1530 +f 1339/806/1530 1340/807/1531 1337/804/1528 +f 1340/807/1531 1339/806/1530 1341/808/1532 +f 1341/808/1532 1342/809/1533 1340/807/1531 +f 1342/809/1533 1341/808/1532 1343/810/1534 +f 1343/810/1534 1344/811/1535 1342/809/1533 +f 1344/811/1535 1343/810/1534 1345/812/1536 +f 1345/812/1536 1346/813/1537 1344/811/1535 +f 1346/813/1537 1345/812/1536 1281/742/1472 +f 1281/742/1472 1280/741/1471 1346/813/1537 +f 1347/814/1538 1348/815/1539 1349/816/1540 +f 1349/816/1540 1350/817/1541 1347/814/1538 +f 1350/817/1541 1349/816/1540 1351/818/1542 +f 1351/818/1542 1352/819/1543 1350/817/1541 +f 1352/819/1543 1351/818/1542 1353/820/1544 +f 1353/820/1544 1354/821/1545 1352/819/1543 +f 1354/821/1545 1353/820/1544 1355/822/1546 +f 1355/822/1546 1356/823/1547 1354/821/1545 +f 1356/823/1547 1355/822/1546 1293/754/1484 +f 1293/754/1484 1292/753/1483 1356/823/1547 +f 1348/815/1539 1357/824/1548 1358/825/1549 +f 1358/825/1549 1349/816/1540 1348/815/1539 +f 1349/816/1540 1358/825/1549 1359/826/1550 +f 1359/826/1550 1351/818/1542 1349/816/1540 +f 1351/818/1542 1359/826/1550 1360/827/1551 +f 1360/827/1551 1353/820/1544 1351/818/1542 +f 1353/820/1544 1360/827/1551 1361/828/1552 +f 1361/828/1552 1355/822/1546 1353/820/1544 +f 1355/822/1546 1361/828/1552 1299/760/1490 +f 1299/760/1490 1293/754/1484 1355/822/1546 +f 1299/760/1490 1361/828/1552 1346/813/1537 +f 1346/813/1537 1280/741/1471 1299/760/1490 +f 1361/828/1552 1360/827/1551 1344/811/1535 +f 1344/811/1535 1346/813/1537 1361/828/1552 +f 1360/827/1551 1359/826/1550 1342/809/1533 +f 1342/809/1533 1344/811/1535 1360/827/1551 +f 1358/825/1549 1340/807/1531 1342/809/1533 +f 1342/809/1533 1359/826/1550 1358/825/1549 +f 1357/824/1548 1337/804/1528 1340/807/1531 +f 1340/807/1531 1358/825/1549 1357/824/1548 +f 1350/817/1541 1362/829/1553 1363/830/1554 +f 1363/830/1554 1347/814/1538 1350/817/1541 +f 1352/819/1543 1364/831/1555 1362/829/1553 +f 1362/829/1553 1350/817/1541 1352/819/1543 +f 1354/821/1545 1365/832/1556 1364/831/1555 +f 1364/831/1555 1352/819/1543 1354/821/1545 +f 1356/823/1547 1366/833/1557 1365/832/1556 +f 1365/832/1556 1354/821/1545 1356/823/1547 +f 1292/753/1483 1305/766/1496 1366/833/1557 +f 1366/833/1557 1356/823/1547 1292/753/1483 +f 1367/834/1558 1368/835/1559 1369/836/1560 +f 1369/836/1560 1370/837/1561 1367/834/1558 +f 1370/837/1561 1369/836/1560 1371/838/1562 +f 1371/838/1562 1372/839/1563 1370/837/1561 +f 1372/839/1563 1371/838/1562 1373/840/1564 +f 1373/840/1564 1374/841/1565 1372/839/1563 +f 1374/841/1565 1373/840/1564 1375/842/1566 +f 1375/842/1566 1376/843/1567 1374/841/1565 +f 1376/843/1567 1375/842/1566 1317/778/1508 +f 1317/778/1508 1316/777/1507 1376/843/1567 +f 1370/837/1561 1377/844/1568 1378/845/1569 +f 1378/845/1569 1367/834/1558 1370/837/1561 +f 1372/839/1563 1379/846/1570 1377/844/1568 +f 1377/844/1568 1370/837/1561 1372/839/1563 +f 1374/841/1565 1380/847/1571 1379/846/1570 +f 1379/846/1570 1372/839/1563 1374/841/1565 +f 1376/843/1567 1381/848/1572 1380/847/1571 +f 1380/847/1571 1374/841/1565 1376/843/1567 +f 1316/777/1507 1323/784/1514 1381/848/1572 +f 1381/848/1572 1376/843/1567 1316/777/1507 +f 1377/844/1568 1382/849/1573 1383/850/1574 +f 1383/850/1574 1378/845/1569 1377/844/1568 +f 1379/846/1570 1384/851/1575 1382/849/1573 +f 1382/849/1573 1377/844/1568 1379/846/1570 +f 1380/847/1571 1385/852/1576 1384/851/1575 +f 1384/851/1575 1379/846/1570 1380/847/1571 +f 1381/848/1572 1386/853/1577 1385/852/1576 +f 1385/852/1576 1380/847/1571 1381/848/1572 +f 1323/784/1514 1329/790/1520 1386/853/1577 +f 1386/853/1577 1381/848/1572 1323/784/1514 +f 1382/849/1573 1387/854/1578 1388/855/1579 +f 1388/855/1579 1383/850/1574 1382/849/1573 +f 1384/851/1575 1389/856/1580 1387/854/1578 +f 1387/854/1578 1382/849/1573 1384/851/1575 +f 1385/852/1576 1390/857/1581 1389/856/1580 +f 1389/856/1580 1384/851/1575 1385/852/1576 +f 1386/853/1577 1391/858/1582 1390/857/1581 +f 1390/857/1581 1385/852/1576 1386/853/1577 +f 1329/790/1520 1335/796/1526 1391/858/1582 +f 1391/858/1582 1386/853/1577 1329/790/1520 +f 1387/859/1578 1336/799/1527 1388/860/1579 +f 1389/861/1580 1336/799/1527 1387/859/1578 +f 1390/862/1581 1336/799/1527 1389/861/1580 +f 1391/863/1582 1336/799/1527 1390/862/1581 +f 1335/803/1526 1336/799/1527 1391/863/1582 +f 1317/778/1508 1375/842/1566 1366/833/1557 +f 1366/833/1557 1305/766/1496 1317/778/1508 +f 1373/840/1564 1365/832/1556 1366/833/1557 +f 1366/833/1557 1375/842/1566 1373/840/1564 +f 1371/838/1562 1364/831/1555 1365/832/1556 +f 1365/832/1556 1373/840/1564 1371/838/1562 +f 1369/836/1560 1362/829/1553 1364/831/1555 +f 1364/831/1555 1371/838/1562 1369/836/1560 +f 1368/835/1559 1363/830/1554 1362/829/1553 +f 1362/829/1553 1369/836/1560 1368/835/1559 +s 2 +f 1270/731/1583 1273/734/1584 1392/733/1585 +f 1392/733/1585 1393/732/1586 1270/731/1583 +f 1393/732/1586 1392/733/1585 1394/736/1587 +f 1394/736/1587 1395/735/1588 1393/732/1586 +f 1395/735/1588 1394/736/1587 1396/738/1589 +f 1396/738/1589 1397/737/1590 1395/735/1588 +f 1397/737/1590 1396/738/1589 1398/740/1591 +f 1398/740/1591 1399/739/1592 1397/737/1590 +f 1399/739/1592 1398/740/1591 1400/742/1593 +f 1400/742/1593 1401/741/1594 1399/739/1592 +f 1282/743/1595 1285/746/1596 1402/745/1597 +f 1402/745/1597 1403/744/1598 1282/743/1595 +f 1403/744/1598 1402/745/1597 1404/748/1599 +f 1404/748/1599 1405/747/1600 1403/744/1598 +f 1405/747/1600 1404/748/1599 1406/750/1601 +f 1406/750/1601 1407/749/1602 1405/747/1600 +f 1407/749/1602 1406/750/1601 1408/752/1603 +f 1408/752/1603 1409/751/1604 1407/749/1602 +f 1409/751/1604 1408/752/1603 1410/754/1605 +f 1410/754/1605 1411/753/1606 1409/751/1604 +f 1285/746/1596 1295/756/1607 1412/755/1608 +f 1412/755/1608 1402/745/1597 1285/746/1596 +f 1402/745/1597 1412/755/1608 1413/757/1609 +f 1413/757/1609 1404/748/1599 1402/745/1597 +f 1404/748/1599 1413/757/1609 1414/758/1610 +f 1414/758/1610 1406/750/1601 1404/748/1599 +f 1406/750/1601 1414/758/1610 1415/759/1611 +f 1415/759/1611 1408/752/1603 1406/750/1601 +f 1408/752/1603 1415/759/1611 1416/760/1612 +f 1416/760/1612 1410/754/1605 1408/752/1603 +f 1416/760/1612 1415/759/1611 1399/739/1592 +f 1399/739/1592 1401/741/1594 1416/760/1612 +f 1415/759/1611 1414/758/1610 1397/737/1590 +f 1397/737/1590 1399/739/1592 1415/759/1611 +f 1414/758/1610 1413/757/1609 1395/735/1588 +f 1395/735/1588 1397/737/1590 1414/758/1610 +f 1412/755/1608 1393/732/1586 1395/735/1588 +f 1395/735/1588 1413/757/1609 1412/755/1608 +f 1295/756/1607 1270/731/1583 1393/732/1586 +f 1393/732/1586 1412/755/1608 1295/756/1607 +f 1403/744/1598 1417/762/1613 1300/761/1614 +f 1300/761/1614 1282/743/1595 1403/744/1598 +f 1405/747/1600 1418/763/1615 1417/762/1613 +f 1417/762/1613 1403/744/1598 1405/747/1600 +f 1407/749/1602 1419/764/1616 1418/763/1615 +f 1418/763/1615 1405/747/1600 1407/749/1602 +f 1409/751/1604 1420/765/1617 1419/764/1616 +f 1419/764/1616 1407/749/1602 1409/751/1604 +f 1411/753/1606 1421/766/1618 1420/765/1617 +f 1420/765/1617 1409/751/1604 1411/753/1606 +f 1306/767/1619 1309/770/1620 1422/769/1621 +f 1422/769/1621 1423/768/1622 1306/767/1619 +f 1423/768/1622 1422/769/1621 1424/772/1623 +f 1424/772/1623 1425/771/1624 1423/768/1622 +f 1425/771/1624 1424/772/1623 1426/774/1625 +f 1426/774/1625 1427/773/1626 1425/771/1624 +f 1427/773/1626 1426/774/1625 1428/776/1627 +f 1428/776/1627 1429/775/1628 1427/773/1626 +f 1429/775/1628 1428/776/1627 1430/778/1629 +f 1430/778/1629 1431/777/1630 1429/775/1628 +f 1423/768/1622 1432/780/1631 1318/779/1632 +f 1318/779/1632 1306/767/1619 1423/768/1622 +f 1425/771/1624 1433/781/1633 1432/780/1631 +f 1432/780/1631 1423/768/1622 1425/771/1624 +f 1427/773/1626 1434/782/1634 1433/781/1633 +f 1433/781/1633 1425/771/1624 1427/773/1626 +f 1429/775/1628 1435/783/1635 1434/782/1634 +f 1434/782/1634 1427/773/1626 1429/775/1628 +f 1431/777/1630 1436/784/1636 1435/783/1635 +f 1435/783/1635 1429/775/1628 1431/777/1630 +f 1432/780/1631 1437/786/1637 1324/785/1638 +f 1324/785/1638 1318/779/1632 1432/780/1631 +f 1433/781/1633 1438/787/1639 1437/786/1637 +f 1437/786/1637 1432/780/1631 1433/781/1633 +f 1434/782/1634 1439/788/1640 1438/787/1639 +f 1438/787/1639 1433/781/1633 1434/782/1634 +f 1435/783/1635 1440/789/1641 1439/788/1640 +f 1439/788/1640 1434/782/1634 1435/783/1635 +f 1436/784/1636 1441/790/1642 1440/789/1641 +f 1440/789/1641 1435/783/1635 1436/784/1636 +f 1437/786/1637 1442/792/1643 1330/791/1644 +f 1330/791/1644 1324/785/1638 1437/786/1637 +f 1438/787/1639 1443/793/1645 1442/792/1643 +f 1442/792/1643 1437/786/1637 1438/787/1639 +f 1439/788/1640 1444/794/1646 1443/793/1645 +f 1443/793/1645 1438/787/1639 1439/788/1640 +f 1440/789/1641 1445/795/1647 1444/794/1646 +f 1444/794/1646 1439/788/1640 1440/789/1641 +f 1441/790/1642 1446/796/1648 1445/795/1647 +f 1445/795/1647 1440/789/1641 1441/790/1642 +f 1442/797/1643 1336/799/1649 1330/798/1644 +f 1443/800/1645 1336/799/1649 1442/797/1643 +f 1444/801/1646 1336/799/1649 1443/800/1645 +f 1445/802/1647 1336/799/1649 1444/801/1646 +f 1446/803/1648 1336/799/1649 1445/802/1647 +f 1430/778/1629 1428/776/1627 1420/765/1617 +f 1420/765/1617 1421/766/1618 1430/778/1629 +f 1426/774/1625 1419/764/1616 1420/765/1617 +f 1420/765/1617 1428/776/1627 1426/774/1625 +f 1424/772/1623 1418/763/1615 1419/764/1616 +f 1419/764/1616 1426/774/1625 1424/772/1623 +f 1422/769/1621 1417/762/1613 1418/763/1615 +f 1418/763/1615 1424/772/1623 1422/769/1621 +f 1309/770/1620 1300/761/1614 1417/762/1613 +f 1417/762/1613 1422/769/1621 1309/770/1620 +f 1337/804/1650 1447/807/1651 1448/806/1652 +f 1448/806/1652 1338/805/1653 1337/804/1650 +f 1447/807/1651 1449/809/1654 1450/808/1655 +f 1450/808/1655 1448/806/1652 1447/807/1651 +f 1449/809/1654 1451/811/1656 1452/810/1657 +f 1452/810/1657 1450/808/1655 1449/809/1654 +f 1451/811/1656 1453/813/1658 1454/812/1659 +f 1454/812/1659 1452/810/1657 1451/811/1656 +f 1453/813/1658 1401/741/1594 1400/742/1593 +f 1400/742/1593 1454/812/1659 1453/813/1658 +f 1347/814/1660 1455/817/1661 1456/816/1662 +f 1456/816/1662 1348/815/1663 1347/814/1660 +f 1455/817/1661 1457/819/1664 1458/818/1665 +f 1458/818/1665 1456/816/1662 1455/817/1661 +f 1457/819/1664 1459/821/1666 1460/820/1667 +f 1460/820/1667 1458/818/1665 1457/819/1664 +f 1459/821/1666 1461/823/1668 1462/822/1669 +f 1462/822/1669 1460/820/1667 1459/821/1666 +f 1461/823/1668 1411/753/1606 1410/754/1605 +f 1410/754/1605 1462/822/1669 1461/823/1668 +f 1348/815/1663 1456/816/1662 1463/825/1670 +f 1463/825/1670 1357/824/1671 1348/815/1663 +f 1456/816/1662 1458/818/1665 1464/826/1672 +f 1464/826/1672 1463/825/1670 1456/816/1662 +f 1458/818/1665 1460/820/1667 1465/827/1673 +f 1465/827/1673 1464/826/1672 1458/818/1665 +f 1460/820/1667 1462/822/1669 1466/828/1674 +f 1466/828/1674 1465/827/1673 1460/820/1667 +f 1462/822/1669 1410/754/1605 1416/760/1612 +f 1416/760/1612 1466/828/1674 1462/822/1669 +f 1416/760/1612 1401/741/1594 1453/813/1658 +f 1453/813/1658 1466/828/1674 1416/760/1612 +f 1466/828/1674 1453/813/1658 1451/811/1656 +f 1451/811/1656 1465/827/1673 1466/828/1674 +f 1465/827/1673 1451/811/1656 1449/809/1654 +f 1449/809/1654 1464/826/1672 1465/827/1673 +f 1463/825/1670 1464/826/1672 1449/809/1654 +f 1449/809/1654 1447/807/1651 1463/825/1670 +f 1357/824/1671 1463/825/1670 1447/807/1651 +f 1447/807/1651 1337/804/1650 1357/824/1671 +f 1455/817/1661 1347/814/1660 1363/830/1675 +f 1363/830/1675 1467/829/1676 1455/817/1661 +f 1457/819/1664 1455/817/1661 1467/829/1676 +f 1467/829/1676 1468/831/1677 1457/819/1664 +f 1459/821/1666 1457/819/1664 1468/831/1677 +f 1468/831/1677 1469/832/1678 1459/821/1666 +f 1461/823/1668 1459/821/1666 1469/832/1678 +f 1469/832/1678 1470/833/1679 1461/823/1668 +f 1411/753/1606 1461/823/1668 1470/833/1679 +f 1470/833/1679 1421/766/1618 1411/753/1606 +f 1367/834/1680 1471/837/1681 1472/836/1682 +f 1472/836/1682 1368/835/1683 1367/834/1680 +f 1471/837/1681 1473/839/1684 1474/838/1685 +f 1474/838/1685 1472/836/1682 1471/837/1681 +f 1473/839/1684 1475/841/1686 1476/840/1687 +f 1476/840/1687 1474/838/1685 1473/839/1684 +f 1475/841/1686 1477/843/1688 1478/842/1689 +f 1478/842/1689 1476/840/1687 1475/841/1686 +f 1477/843/1688 1431/777/1630 1430/778/1629 +f 1430/778/1629 1478/842/1689 1477/843/1688 +f 1471/837/1681 1367/834/1680 1378/845/1690 +f 1378/845/1690 1479/844/1691 1471/837/1681 +f 1473/839/1684 1471/837/1681 1479/844/1691 +f 1479/844/1691 1480/846/1692 1473/839/1684 +f 1475/841/1686 1473/839/1684 1480/846/1692 +f 1480/846/1692 1481/847/1693 1475/841/1686 +f 1477/843/1688 1475/841/1686 1481/847/1693 +f 1481/847/1693 1482/848/1694 1477/843/1688 +f 1431/777/1630 1477/843/1688 1482/848/1694 +f 1482/848/1694 1436/784/1636 1431/777/1630 +f 1479/844/1691 1378/845/1690 1383/850/1695 +f 1383/850/1695 1483/849/1696 1479/844/1691 +f 1480/846/1692 1479/844/1691 1483/849/1696 +f 1483/849/1696 1484/851/1697 1480/846/1692 +f 1481/847/1693 1480/846/1692 1484/851/1697 +f 1484/851/1697 1485/852/1698 1481/847/1693 +f 1482/848/1694 1481/847/1693 1485/852/1698 +f 1485/852/1698 1486/853/1699 1482/848/1694 +f 1436/784/1636 1482/848/1694 1486/853/1699 +f 1486/853/1699 1441/790/1642 1436/784/1636 +f 1483/849/1696 1383/850/1695 1388/855/1700 +f 1388/855/1700 1487/854/1701 1483/849/1696 +f 1484/851/1697 1483/849/1696 1487/854/1701 +f 1487/854/1701 1488/856/1702 1484/851/1697 +f 1485/852/1698 1484/851/1697 1488/856/1702 +f 1488/856/1702 1489/857/1703 1485/852/1698 +f 1486/853/1699 1485/852/1698 1489/857/1703 +f 1489/857/1703 1490/858/1704 1486/853/1699 +f 1441/790/1642 1486/853/1699 1490/858/1704 +f 1490/858/1704 1446/796/1648 1441/790/1642 +f 1487/859/1701 1388/860/1700 1336/799/1649 +f 1488/861/1702 1487/859/1701 1336/799/1649 +f 1489/862/1703 1488/861/1702 1336/799/1649 +f 1490/863/1704 1489/862/1703 1336/799/1649 +f 1446/803/1648 1490/863/1704 1336/799/1649 +f 1430/778/1629 1421/766/1618 1470/833/1679 +f 1470/833/1679 1478/842/1689 1430/778/1629 +f 1476/840/1687 1478/842/1689 1470/833/1679 +f 1470/833/1679 1469/832/1678 1476/840/1687 +f 1474/838/1685 1476/840/1687 1469/832/1678 +f 1469/832/1678 1468/831/1677 1474/838/1685 +f 1472/836/1682 1474/838/1685 1468/831/1677 +f 1468/831/1677 1467/829/1676 1472/836/1682 +f 1368/835/1683 1472/836/1682 1467/829/1676 +f 1467/829/1676 1363/830/1675 1368/835/1683 +# 0 polygons - 420 triangles + diff --git a/Sandbox/res/Dagger/Dagger.tbscene b/Sandbox/res/Dagger/Dagger.tbscene new file mode 100644 index 00000000..adf389d7 Binary files /dev/null and b/Sandbox/res/Dagger/Dagger.tbscene differ diff --git a/Sandbox/res/Dagger/Dagger_Readme.txt b/Sandbox/res/Dagger/Dagger_Readme.txt new file mode 100644 index 00000000..8eb536c6 --- /dev/null +++ b/Sandbox/res/Dagger/Dagger_Readme.txt @@ -0,0 +1,36 @@ +Author: Stephen Stone +Website: www.stephentstone.daportfolio.com/ +E-mail: Stevston89@gmail.com + +Model: + +Dagger 2,914 tris + +Texture: + +Abledo - 1024 +Spec - 1024 +Gloss/AO/Cavity - 1024 +Normal - 1024 + +Note: Gloss, AO, and Cavity are all comibine in one map. Here are the channels they use: + +Gloss = Red channel +AO = Green channel +Cavity = Blue channel + +Contents: + +Marmoset file +OBJ file +4 TGA files + + +Terms & Conditions + +The content material included in this file is meant for 'educational / learning' purposes only, modifications +(applying variant textures, adding variant details, etc.) for such purposes is permissible. +Modified or not, you may not sell the material in any way for commercial purposes +(game demo, engine demo, software demo, etc.) without the written permission of the copyright owner +(Stephen Stone). + diff --git a/Sandbox/res/Dagger/Textures/Dagger_Albedo.tga b/Sandbox/res/Dagger/Textures/Dagger_Albedo.tga new file mode 100644 index 00000000..b791b2bb Binary files /dev/null and b/Sandbox/res/Dagger/Textures/Dagger_Albedo.tga differ diff --git a/Sandbox/res/Dagger/Textures/Dagger_Gloss.tga b/Sandbox/res/Dagger/Textures/Dagger_Gloss.tga new file mode 100644 index 00000000..3a66473e Binary files /dev/null and b/Sandbox/res/Dagger/Textures/Dagger_Gloss.tga differ diff --git a/Sandbox/res/Dagger/Textures/Dagger_Normals.tga b/Sandbox/res/Dagger/Textures/Dagger_Normals.tga new file mode 100644 index 00000000..fc2f0618 Binary files /dev/null and b/Sandbox/res/Dagger/Textures/Dagger_Normals.tga differ diff --git a/Sandbox/res/Dagger/Textures/Dagger_Specular.tga b/Sandbox/res/Dagger/Textures/Dagger_Specular.tga new file mode 100644 index 00000000..a5c3caa6 Binary files /dev/null and b/Sandbox/res/Dagger/Textures/Dagger_Specular.tga differ diff --git a/Sandbox/res/Plane.obj b/Sandbox/res/Plane.obj new file mode 100644 index 00000000..e261eef8 --- /dev/null +++ b/Sandbox/res/Plane.obj @@ -0,0 +1,38463 @@ +# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware +# File Created: 02.02.2016 21:07:07 + +# +# object 2b949347 +# + +v 1.8256 7.2185 32.1307 +v 1.8507 7.2115 31.9404 +v 1.7816 7.2305 32.1243 +v 1.8696 7.2309 32.1359 +v 1.8947 7.2238 31.9457 +v 1.9018 7.2643 32.1386 +v 1.9268 7.2572 31.9484 +v 1.9135 7.3097 32.1379 +v 1.9386 7.3027 31.9476 +v 1.9017 7.3551 32.1341 +v 1.9268 7.3480 31.9438 +v 1.8695 7.3882 32.1281 +v 1.8945 7.3811 31.9379 +v 1.8255 7.4002 32.1217 +v 1.8505 7.3931 31.9314 +v 1.8065 7.3807 31.9262 +v 1.7815 7.3878 32.1165 +v 1.7744 7.3473 31.9236 +v 1.7493 7.3544 32.1139 +v 1.7626 7.3019 31.9243 +v 1.7375 7.3089 32.1145 +v 1.7744 7.2565 31.9281 +v 1.7493 7.2636 32.1183 +v 1.8067 7.2234 31.9341 +v 0.2238 14.0343 30.1957 +v 0.2255 13.9982 30.1045 +v -0.1520 13.9976 30.2002 +v 0.3882 14.5316 10.3711 +v 0.3317 14.6579 10.3665 +v 0.3759 14.5995 10.3684 +v 0.3868 14.5135 10.3675 +v 0.3035 14.6817 10.3657 +v 0.2719 14.6959 10.3650 +v 0.2240 14.5105 10.3624 +v 0.2236 14.7000 10.3605 +v 2.6550 14.8118 20.7417 +v 2.7896 14.3920 20.2664 +v 2.7103 14.8309 20.3945 +v 2.6432 14.8937 20.7408 +v 2.5811 15.3295 20.5419 +v 2.5589 15.2099 20.8392 +v 2.3173 15.6370 20.9647 +v 2.3392 15.7573 20.6675 +v 2.0013 16.0244 21.0784 +v 2.0228 16.1452 20.7813 +v 1.6089 16.3408 21.1583 +v 1.6277 16.4556 20.8721 +v 1.1793 16.6693 20.9343 +v 1.1605 16.5551 21.2193 +v 0.7117 16.8297 20.9808 +v 0.6929 16.7154 21.2656 +v 0.3797 16.8667 20.9912 +v 0.3613 16.7723 21.2762 +v 0.2190 16.8758 20.9935 +v 0.2192 16.7891 21.2795 +v 2.7450 14.0064 20.5616 +v 2.8192 13.9677 19.9700 +v 2.6470 14.7451 20.7887 +v 2.6225 14.7215 20.8622 +v 2.3477 14.2177 21.8281 +v 2.2613 14.7613 21.7951 +v 1.8507 14.3744 22.8608 +v 1.7429 14.8102 22.8501 +v 1.4039 15.0103 23.3433 +v 1.0516 14.6095 24.2212 +v 1.3463 15.0853 23.3996 +v 1.3087 15.1880 23.4002 +v 2.7125 14.0064 20.5615 +v 2.5969 14.7176 20.8558 +v 2.6217 14.7416 20.7814 +v 2.7396 14.4167 20.2606 +v 2.6301 14.8089 20.7334 +v 2.7698 13.9988 19.9667 +v 2.6612 14.8477 20.3859 +v 2.6186 14.8919 20.7316 +v 2.5346 15.3372 20.5302 +v 2.5376 15.2057 20.8238 +v 2.2983 15.6286 20.9479 +v 2.2975 15.7564 20.6532 +v 1.9851 16.0127 21.0605 +v 1.9874 16.1367 20.7646 +v 1.5946 16.3193 21.1502 +v 1.6002 16.4408 20.8533 +v 1.1503 16.5310 21.2120 +v 1.1608 16.6504 20.9143 +v 0.7025 16.8076 20.9598 +v 0.6869 16.6900 21.2580 +v 0.3772 16.8438 20.9699 +v 0.3613 16.7523 21.2761 +v 0.2191 16.8527 20.9722 +v 0.2193 16.7649 21.2794 +v 2.3050 14.2177 21.8280 +v 2.2379 14.7523 21.7858 +v 1.8101 14.3744 22.8607 +v 1.7201 14.8027 22.8381 +v 1.3868 14.9968 23.3270 +v 1.0416 14.5936 24.1664 +v 1.3274 15.0740 23.3857 +v 1.2920 15.1741 23.3844 +v -2.2944 14.0087 20.5557 +v -2.1750 14.7237 20.8566 +v -2.1996 14.7473 20.7831 +v -2.2142 14.8499 20.3802 +v -2.1719 14.8941 20.7260 +v -2.1830 14.8111 20.7278 +v -2.1743 14.7438 20.7758 +v -2.2908 14.4190 20.2547 +v -2.0899 15.3393 20.5248 +v -2.0922 15.2079 20.8184 +v -1.8548 15.6305 20.9431 +v -1.8546 15.7583 20.6484 +v -1.5433 16.0143 21.0564 +v -1.5461 16.1383 20.7605 +v -1.1542 16.3205 21.1470 +v -1.1603 16.4421 20.8501 +v -0.7107 16.5318 21.2098 +v -0.7217 16.6512 20.9121 +v -0.2641 16.8080 20.9587 +v -0.2481 16.6904 21.2569 +v 0.0610 16.8439 20.9696 +v 0.0773 16.7525 21.2758 +v -2.2503 14.0103 20.5522 +v -2.3192 14.0011 19.9608 +v -2.1494 14.7198 20.8503 +v -1.8726 14.2160 21.8134 +v -1.7905 14.7541 21.7811 +v -1.3740 14.3720 22.8498 +v -1.2729 14.8041 22.8346 +v -0.9405 14.9979 23.3243 +v -0.5957 14.6082 24.1815 +v -0.8735 15.0853 23.3909 +v -0.8475 15.1715 23.3823 +v -0.3737 15.0155 23.8732 +v -0.8436 15.2765 23.3202 +v -0.4847 15.2787 23.5041 +v -0.5958 15.5420 23.1352 +v -0.9047 15.4300 23.1051 +v -0.6837 15.8820 22.6584 +v -0.9984 15.7924 22.5973 +v -0.9063 16.1547 22.0895 +v -0.6011 16.2072 22.2027 +v -0.6426 16.4617 21.6593 +v -0.3738 16.4718 21.8322 +v -0.0713 16.6287 21.6124 +v 0.2195 16.6735 21.5497 +v -0.1558 14.6952 24.1071 +v -0.1207 14.9996 23.8952 +v 0.2239 14.6950 24.1099 +v 0.2232 14.9900 23.9091 +v -0.8901 15.0996 23.4070 +v -0.8652 15.1823 23.3974 +v 1.2887 15.2755 23.3227 +v 1.3051 15.2906 23.3378 +v 18.6047 8.1227 -13.0836 +v 18.6239 8.2673 -13.3115 +v 18.7102 8.4735 -13.1780 +v -3.0228 6.9369 -20.2431 +v -3.0589 7.0103 -20.2690 +v -3.0889 6.9814 -20.2724 +v -3.1006 6.9409 -20.2751 +v -3.0910 6.8997 -20.2764 +v -3.0626 6.8688 -20.2758 +v -3.0231 6.8566 -20.2737 +v -2.9830 6.8662 -20.2705 +v 3.5688 6.9784 -20.2646 +v 3.5387 7.0073 -20.2613 +v 3.5029 6.9339 -20.2355 +v 3.5807 6.9379 -20.2673 +v 3.5713 6.8967 -20.2686 +v 3.5431 6.8658 -20.2681 +v 3.5036 6.8536 -20.2661 +v 3.4634 6.8632 -20.2630 +v 1.1599 6.2998 -25.4894 +v 1.9374 6.8322 -25.5090 +v 1.5844 6.5114 -25.4971 +v 0.0933 12.6147 -33.2723 +v 0.2275 12.5702 -33.5110 +v 0.1371 12.5802 -33.2441 +v 0.0037 24.3808 -41.1825 +v 0.1818 24.3441 -41.4686 +v -0.0340 24.3477 -41.2112 +v 0.3177 12.5801 -33.2439 +v 0.3615 12.6146 -33.2719 +v 0.4370 24.3475 -41.2107 +v 0.3991 24.3807 -41.1821 +v 9.9776 18.3644 -43.2044 +v 9.9738 17.9927 -43.2289 +v 10.2084 18.1672 -43.5262 +v -9.7784 18.1764 -43.5495 +v -9.5431 18.0016 -43.2516 +v -9.5485 18.3733 -43.2271 +v -18.2366 8.4904 -13.2211 +v -18.1494 8.2841 -13.3543 +v -18.1296 8.1395 -13.1264 +v 1.9442 7.3099 32.1420 +v 1.9284 7.2485 32.1429 +v 2.1901 7.1648 29.4124 +v 2.1742 7.1035 29.4133 +v 1.8850 7.2035 32.1395 +v 2.1308 7.0584 29.4098 +v 1.8256 7.1868 32.1324 +v 2.0714 7.0418 29.4028 +v 1.7662 7.2030 32.1237 +v 2.0121 7.0579 29.3941 +v 1.7227 7.2476 32.1156 +v 1.9686 7.1026 29.3861 +v 1.7068 7.3088 32.1105 +v 1.9526 7.1638 29.3809 +v 1.9685 7.2251 29.3799 +v 1.7227 7.3702 32.1095 +v 2.0119 7.2701 29.3834 +v 1.7661 7.4152 32.1131 +v 2.0713 7.2868 29.3906 +v 1.8254 7.4319 32.1201 +v 2.1306 7.2706 29.3992 +v 1.8848 7.4157 32.1289 +v 2.1741 7.2260 29.4073 +v 1.9283 7.3711 32.1368 +v 0.2276 12.5539 -28.4019 +v -0.0764 12.5540 -28.4023 +v -0.0763 12.4829 -28.3676 +v 0.2277 12.4828 -28.3672 +v 0.2305 11.5944 15.9888 +v -1.1051 11.5950 15.9872 +v -1.1063 12.1371 15.9664 +v 0.2293 12.1365 15.9680 +v 0.2304 11.6361 17.1101 +v -1.1052 11.6367 17.1086 +v 0.2303 11.7076 19.0324 +v -1.1053 11.7082 19.0309 +v -1.1065 12.2502 19.0101 +v 0.2291 12.2496 19.0116 +v 0.2293 12.1682 16.8224 +v -1.1064 12.1688 16.8208 +v -1.1115 14.4899 15.8229 +v 0.2242 14.4893 15.8244 +v -1.1139 15.5857 15.7808 +v 0.2218 15.5851 15.7824 +v 0.2234 14.8591 16.9332 +v -1.1123 14.8597 16.9316 +v 0.2214 15.7381 16.9530 +v 0.2211 15.8917 16.7407 +v -1.1145 15.8923 16.7392 +v -1.1142 15.7387 16.9515 +v 1.5650 12.1358 15.9695 +v 1.5662 11.5938 15.9903 +v 1.5661 11.6355 17.1117 +v 1.5660 11.7070 19.0340 +v 1.5648 12.2490 19.0132 +v 1.5649 12.1676 16.8239 +v 1.5598 14.4887 15.8260 +v 1.5574 15.5845 15.7840 +v 1.5590 14.8585 16.9347 +v 1.5568 15.8911 16.7423 +v 1.5571 15.7375 16.9546 +v 0.7199 13.4149 29.9288 +v 0.2267 13.4535 29.9274 +v 0.2391 7.8219 30.1432 +v 1.2797 13.2387 29.9369 +v 1.7237 12.9916 29.9463 +v 0.7321 7.8602 30.1430 +v 1.2912 8.0358 30.1362 +v 1.7341 8.2825 30.1278 +v 2.1822 8.6458 30.1139 +v 2.4999 9.0635 30.0986 +v 2.7764 9.5590 30.0796 +v 2.9131 10.0841 30.0597 +v 2.9834 10.6365 30.0385 +v 2.9107 11.1889 30.0171 +v 2.7717 11.7141 29.9970 +v 2.4930 12.2100 29.9773 +v 2.1734 12.6280 29.9613 +v 0.8131 14.0215 29.9977 +v 0.2253 14.0697 29.9975 +v 0.8098 13.9407 30.1057 +v 1.5075 13.8082 30.0089 +v 1.4795 13.7425 30.1157 +v 2.0471 13.5063 30.0192 +v 2.0080 13.4384 30.1266 +v 2.5957 13.0644 30.0386 +v 2.5437 13.0151 30.1448 +v 2.9927 12.5549 30.0574 +v 2.9262 12.5108 30.1636 +v 3.2562 11.9269 30.1872 +v 3.3241 11.9518 30.0821 +v 3.5061 11.3122 30.1064 +v 3.4247 11.2992 30.2112 +v 3.5083 10.6436 30.2367 +v 3.5819 10.6397 30.1327 +v 3.5091 9.9673 30.1588 +v 3.4276 9.9880 30.2621 +v 3.2618 9.3605 30.2856 +v 3.3298 9.3278 30.1827 +v 3.0011 8.7250 30.2066 +v 2.9344 8.7769 30.3085 +v 2.5541 8.2730 30.3264 +v 2.6063 8.2158 30.2244 +v 2.0203 7.8502 30.3434 +v 2.0596 7.7745 30.2426 +v 1.4931 7.5466 30.3530 +v 1.5214 7.4731 30.2516 +v 0.8243 7.3490 30.3615 +v 0.8280 7.2604 30.2612 +v 0.2402 7.2919 30.3613 +v 0.2404 7.2127 30.2601 +v 0.2432 5.4575 -27.6774 +v 0.2429 5.5941 -27.6712 +v 0.7414 5.5402 -27.6754 +v 0.7142 5.6732 -27.6687 +v 1.3243 5.8140 -27.6783 +v 1.3755 5.6876 -27.6848 +v 1.8503 5.9886 -27.6922 +v 1.7732 6.1015 -27.6847 +v 2.2402 6.4410 -27.7013 +v 2.3345 6.3442 -27.7089 +v 2.6979 6.8177 -27.7247 +v 2.5827 6.8933 -27.7158 +v 2.8510 7.3797 -27.7366 +v 2.9741 7.3271 -27.7458 +v 3.0195 7.9294 -27.7430 +v 3.1553 7.9012 -27.7539 +v 3.1969 8.4867 -27.7900 +v 3.0638 8.4899 -27.7788 +v 3.0152 9.0438 -27.9536 +v 3.1527 9.0635 -27.9660 +v 2.9690 9.6267 -28.3687 +v 2.8426 9.5847 -28.3563 +v 2.6907 10.1077 -29.1427 +v 2.5689 10.0432 -29.1295 +v 2.2219 10.4652 -29.9963 +v 2.3252 10.5507 -30.0090 +v 1.8395 10.8740 -30.9891 +v 1.7534 10.7691 -30.9754 +v 1.3044 11.0187 -31.8377 +v 1.3635 11.1406 -31.8507 +v 0.7288 11.2752 -32.3815 +v 0.6976 11.1447 -32.3676 +v 0.2305 11.2068 -32.6219 +v 0.2302 11.3430 -32.6352 +v 0.2431 5.5130 -26.0689 +v 0.8101 5.6280 -26.0432 +v 1.3771 5.7432 -26.0368 +v 1.8495 6.0170 -25.9986 +v 2.3374 6.4004 -26.0301 +v 2.6865 6.8566 -26.0305 +v 2.9778 7.3845 -26.0374 +v 3.1382 7.9550 -26.0731 +v 3.2010 8.5487 -26.1817 +v 3.1340 9.1382 -26.3589 +v 2.9698 9.6988 -26.6838 +v 2.7502 10.5069 -20.9610 +v 2.3190 11.3150 -15.2384 +v 1.8655 11.6669 -16.0358 +v 1.3187 11.9100 -16.8179 +v 0.7278 12.0932 -17.1582 +v 0.2288 12.1138 -17.4903 +v 0.3844 11.0416 10.5221 +v 0.2316 11.0417 10.5220 +v 0.2310 11.3963 20.0595 +v 2.0329 11.2081 15.0236 +v 1.9903 11.3953 20.0559 +v 2.5426 11.3954 20.0678 +v 2.9219 11.3562 19.0158 +v 0.2224 15.3180 19.9062 +v 0.2233 14.9466 22.5962 +v 1.9714 14.9359 19.9228 +v 1.8802 14.4592 22.6119 +v 1.1102 14.6429 23.6395 +v 0.6956 14.7548 23.9988 +v 0.2237 14.7878 23.9976 +v 1.9787 14.3920 22.6145 +v 1.8664 14.4388 22.9843 +v 2.5366 14.1609 19.9618 +v 0.2293 12.1426 15.0844 +v 2.0316 11.8112 15.0005 +v 2.0258 14.4189 14.9007 +v 1.0981 14.7251 14.9434 +v 0.2235 14.7952 14.9827 +v 0.2403 7.2763 30.4638 +v 0.8075 7.3066 30.4660 +v 1.5004 7.5324 30.4555 +v 2.0290 7.8149 30.4475 +v 2.5676 8.2630 30.4287 +v 2.9627 8.7546 30.4119 +v 3.2793 9.3569 30.3876 +v 3.4664 9.9827 30.3644 +v 3.5273 10.6474 30.3385 +v 3.4635 11.3123 30.3124 +v 3.2737 11.9381 30.2887 +v 2.9544 12.5409 30.2637 +v 2.5571 13.0326 30.2460 +v 2.0166 13.4814 30.2259 +v 1.4867 13.7642 30.2167 +v 0.8314 13.9833 30.2050 +v 1.0379 14.6688 13.3712 +v 0.2235 14.7506 13.3413 +v 0.2434 5.3763 -26.0751 +v 0.7814 5.4285 -25.9886 +v 1.4282 5.6165 -25.9995 +v 0.2446 4.8978 -16.6271 +v 1.9256 5.9029 -26.0059 +v 1.7179 5.2016 -16.6371 +v 2.4317 6.3034 -26.0164 +v 0.8814 4.9802 -16.6268 +v 2.3755 5.5758 -16.6483 +v 3.0420 6.0680 -16.6688 +v 2.8002 6.7800 -26.0130 +v 0.2455 4.5296 -10.1629 +v 1.0400 4.6111 -10.1617 +v 1.9618 4.8743 -10.1741 +v 3.4104 5.8576 -10.2101 +v 2.6808 5.2889 -10.1863 +v 3.5177 6.6772 -16.6900 +v 3.9350 6.5421 -10.2338 +v 0.2460 4.3762 -3.7068 +v 2.0632 4.7456 -3.7189 +v 2.8265 5.1810 -3.7315 +v 1.0782 4.4532 -3.7051 +v 3.6021 5.7991 -3.7575 +v 4.1629 6.5267 -3.7826 +v 0.2454 4.7097 5.2649 +v 2.0626 5.0791 5.2528 +v 1.0708 4.7650 5.2672 +v 3.6015 6.1326 5.2142 +v 2.8254 5.4961 5.2407 +v 0.2451 4.9139 10.7567 +v 2.0623 5.2832 10.7447 +v 1.0689 4.9935 10.7594 +v 4.1666 6.8479 5.1895 +v 3.6012 6.3368 10.7061 +v 2.8249 5.7209 10.7328 +v 0.2449 5.0238 13.7139 +v 2.0621 5.3932 13.7018 +v 1.0767 5.1289 13.7152 +v 3.6010 6.4467 13.6632 +v 2.8257 5.8524 13.6888 +v 4.1672 7.0659 10.6815 +v 0.2439 5.5518 20.2665 +v 1.9910 5.9070 20.2549 +v 1.0147 5.6534 20.2701 +v 2.7225 6.3501 20.2442 +v 4.1626 7.1902 13.6376 +v 3.4707 6.9199 20.2178 +v 0.2432 5.8827 22.9361 +v 0.9964 5.9717 22.9388 +v 1.9206 6.2624 22.9254 +v 4.6273 8.0241 13.6040 +v 3.2999 7.2096 22.8902 +v 4.0279 7.6383 20.1942 +v 2.6035 6.6522 22.9146 +v 0.2428 6.0806 24.3232 +v 1.8674 6.4432 24.3080 +v 0.9807 6.1610 24.3228 +v 3.1920 7.3614 24.2862 +v 3.8202 7.8871 22.8676 +v 2.5188 6.8123 24.3036 +v 4.4575 8.4365 20.1609 +v 0.9693 6.2576 24.9739 +v 1.5074 6.4311 24.9791 +v 3.1009 7.3316 -26.0176 +v 1.7168 6.8914 27.5304 +v 2.3370 7.2316 27.5195 +v 0.2425 6.1872 24.9945 +v 3.7016 8.0306 24.2613 +v 2.9660 7.7466 27.4991 +v 1.5192 6.8283 27.5330 +v 4.3765 7.3296 -10.2654 +v 2.1998 7.4742 28.8822 +v 1.6154 7.1505 28.8922 +v 4.2347 8.6705 22.8363 +v 2.7929 7.9566 28.8627 +v 4.8838 8.9385 13.5697 +v 3.4171 8.3284 27.4782 +v 4.1046 8.7733 24.2294 +v 4.6284 7.3765 -3.8167 +v 3.2196 8.5070 28.8432 +v 3.7991 9.0270 27.4510 +v 3.5782 9.1635 28.8174 +v 4.7322 9.3219 20.1277 +v 4.6279 7.7100 5.1549 +v 3.9998 9.7617 27.4234 +v 3.7698 9.8568 28.7914 +v 4.4901 9.5055 22.8052 +v 4.3636 9.6201 24.1978 +v 4.6275 7.9141 10.6468 +v 3.8518 10.5874 28.7631 +v 4.0893 10.5376 27.3935 +v 4.5740 10.3655 22.7718 +v 4.8012 10.2258 20.0927 +v 4.4491 10.4486 24.1654 +v 4.9849 9.8850 13.5331 +v 3.7666 11.3180 28.7347 +v 3.9964 11.3135 27.3633 +v 4.4863 11.2441 22.7367 +v 4.3468 11.2931 24.1323 +v 4.7282 11.1445 20.0548 +v 4.8797 10.8312 13.4952 +v 3.5719 12.0115 28.7083 +v 3.7925 12.0485 27.3353 +v 4.2273 12.0608 22.7064 +v 4.4496 12.0153 20.0237 +v 4.0966 12.0795 24.1025 +v 4.6192 11.7463 13.4614 +v 4.8913 8.8238 10.6132 +v 3.9251 7.3651 -16.7174 +v 3.4074 12.7475 27.3071 +v 3.2105 12.6684 28.6816 +v 3.8093 12.8507 22.6726 +v 4.0165 12.8287 19.9867 +v 3.6920 12.8390 24.0710 +v 4.1507 12.5802 13.4255 +v 2.9537 13.3296 27.2852 +v 2.7813 13.2191 28.6611 +v 3.2861 13.4983 22.6503 +v 3.4562 13.5328 19.9645 +v 3.1971 13.4622 24.0485 +v 3.5859 13.3245 13.3998 +v 2.3225 13.8452 27.2633 +v 2.1861 13.7021 28.6402 +v 2.6403 14.0374 22.6246 +v 2.8757 14.0059 19.9534 +v 2.5000 14.0225 24.0234 +v 2.9164 13.8830 18.9190 +v 4.9851 9.7750 10.5760 +v 1.7008 14.1860 27.2510 +v 1.8174 14.3865 24.0115 +v 1.6003 14.0263 28.6288 +v 4.8871 10.7268 10.5384 +v 0.9069 14.4397 27.2387 +v 1.0187 14.6541 23.9993 +v 4.6194 11.6363 10.5042 +v 0.8495 14.2619 28.6170 +v 0.2248 14.3102 28.6164 +v 0.2244 14.4872 27.2377 +v 3.5861 13.2146 10.4426 +v 2.8080 13.9191 13.3712 +v 3.2721 7.9267 -26.0838 +v 3.3340 8.5460 -26.1929 +v 4.1340 8.1165 -16.7454 +v 3.2694 9.1592 -26.3713 +v 4.2329 8.8956 -16.7757 +v 4.1306 9.6748 -16.8062 +v 3.0956 9.7427 -26.6963 +v 3.9184 10.4264 -16.8347 +v 4.6116 8.1800 -10.2970 +v 4.7131 9.0665 -10.3315 +v 4.1553 12.4853 10.4685 +v 4.6077 9.9531 -10.3663 +v 4.3689 10.8036 -10.3984 +v 4.8839 8.2855 -3.8505 +v 4.9860 9.2374 -3.8876 +v 4.8797 10.1895 -3.9249 +v 4.6203 11.0987 -3.9593 +v 4.9854 9.5709 5.0841 +v 4.8901 8.6147 5.1213 +v 3.9239 11.5915 -10.4310 +v 4.1510 11.9489 -3.9945 +v 4.6197 11.4322 5.0124 +v 4.8859 10.5273 5.0466 +v 4.1546 12.2946 4.9768 +v 3.5080 11.1148 -16.8631 +v 3.5870 12.6769 -4.0210 +v 2.7925 10.2716 -27.3717 +v 3.3963 12.2766 -10.4560 +v 3.5864 13.0105 4.9507 +v 2.8071 13.8316 10.4140 +v 2.8075 13.6477 4.9224 +v 2.8087 13.2958 -4.0487 +v 2.0425 14.2696 10.4004 +v 2.0423 14.3795 13.3576 +v 2.0429 14.0654 4.9086 +v 2.6642 12.8459 -10.4815 +v 2.0434 13.7319 -4.0631 +v 1.9434 13.2612 -10.4954 +v 1.1279 14.5447 10.3841 +v 1.0497 14.3804 4.8918 +v 1.0572 14.0253 -4.0793 +v 2.3610 12.2171 -16.9074 +v 1.0204 13.5252 -10.5099 +v 1.7017 12.5920 -16.9202 +v 0.2237 14.6406 10.3841 +v 3.0295 11.7244 -16.8854 +v 0.2246 14.1030 -4.0794 +v 0.2256 13.6075 -10.5106 +v 0.2241 14.4365 4.8923 +v 0.8642 12.8142 -16.9324 +v 1.9141 11.0944 -28.9349 +v 0.2270 12.8971 -16.9336 +v 1.4156 11.3503 -29.5995 +v 2.4220 10.7209 -28.1061 +v 0.7679 11.5280 -30.1126 +v 0.2297 11.5683 -30.3584 +v 0.7570 8.5404 29.8612 +v 0.2375 8.5096 29.8595 +v 0.2387 7.9652 27.3800 +v 0.8476 8.0004 27.3815 +v 0.2395 7.5659 24.8628 +v 1.4420 8.1679 27.3761 +v 0.8899 7.6192 24.8449 +v 1.4267 7.7755 24.8527 +v 1.4479 8.7362 29.8522 +v 0.2306 12.0370 10.5153 +v 0.3728 12.0344 10.5136 +v -0.2663 13.4153 29.9277 +v -0.8254 13.2397 29.9344 +v -1.2683 12.9930 29.9428 +v -1.7164 12.6297 29.9568 +v -2.0342 12.2120 29.9720 +v -2.3106 11.7164 29.9911 +v -2.4473 11.1914 30.0109 +v -0.2542 7.8606 30.1418 +v -0.8140 8.0368 30.1337 +v -2.5177 10.6390 30.0321 +v -2.4449 10.0865 30.0535 +v -2.3059 9.5613 30.0737 +v -2.0273 9.0655 30.0934 +v -1.2580 8.2839 30.1243 +v -1.7077 8.6476 30.1093 +v -0.3622 14.0220 29.9963 +v -0.3694 13.9380 30.1045 +v -1.0557 13.8093 30.0059 +v -1.0274 13.7436 30.1128 +v -1.5939 13.5079 30.0149 +v -1.5545 13.4400 30.1224 +v -2.1406 13.0666 30.0331 +v -2.0884 13.0172 30.1394 +v -2.5354 12.5574 30.0509 +v -2.4687 12.5133 30.1573 +v -2.7961 11.9297 30.1802 +v -2.8641 11.9547 30.0749 +v -3.0433 11.3152 30.0988 +v -2.9619 11.3021 30.2037 +v -3.0426 10.6466 30.2291 +v -3.1162 10.6428 30.1249 +v -3.0404 9.9703 30.1512 +v -2.9590 9.9910 30.2546 +v -2.7904 9.3633 30.2785 +v -2.8583 9.3306 30.1755 +v -2.5270 8.7276 30.2002 +v -2.4605 8.7794 30.3022 +v -2.0780 8.2751 30.3210 +v -2.1299 8.2180 30.2189 +v -1.5423 7.8519 30.3392 +v -1.5813 7.7762 30.2384 +v -1.0138 7.5478 30.3501 +v -1.0418 7.4743 30.2486 +v -0.3441 7.3495 30.3601 +v -0.3474 7.2609 30.2598 +v -0.2555 5.5407 -27.6766 +v -0.2288 5.6736 -27.6698 +v -0.8396 5.8150 -27.6809 +v -0.8902 5.6887 -27.6875 +v -1.3663 5.9901 -27.6960 +v -1.2897 6.1029 -27.6883 +v -1.7582 6.4428 -27.7059 +v -1.8521 6.3461 -27.7138 +v -2.2176 6.8200 -27.7304 +v -2.1027 6.8954 -27.7212 +v -2.3731 7.3821 -27.7426 +v -2.4960 7.3296 -27.7522 +v -2.5440 7.9320 -27.7495 +v -2.6797 7.9039 -27.7606 +v -2.7238 8.4894 -27.7969 +v -2.5908 8.4925 -27.7854 +v -2.5446 9.0464 -27.9600 +v -2.6822 9.0661 -27.9728 +v -2.5010 9.6292 -28.3750 +v -2.3744 9.5871 -28.3624 +v -2.2248 10.1100 -29.1485 +v -2.1027 10.0453 -29.1349 +v -1.7576 10.4670 -30.0010 +v -1.8613 10.5526 -30.0138 +v -1.3771 10.8754 -30.9928 +v -1.2905 10.7705 -30.9790 +v -0.8427 11.0197 -31.8402 +v -0.9023 11.1416 -31.8534 +v -0.2681 11.2757 -32.3827 +v -0.2364 11.1451 -32.3687 +v -0.3244 5.6285 -26.0445 +v -0.8919 5.7442 -26.0394 +v -1.3656 6.0185 -26.0023 +v -1.8551 6.4023 -26.0350 +v -2.2063 6.8588 -26.0362 +v -2.4999 7.3870 -26.0437 +v -2.6627 7.9576 -26.0799 +v -2.7282 8.5514 -26.1886 +v -2.6638 9.1408 -26.3657 +v -2.5021 9.7013 -26.6902 +v -2.2857 10.5092 -20.9669 +v -1.8579 11.3169 -15.2433 +v -1.4060 11.6684 -16.0396 +v -0.8602 11.9110 -16.8205 +v -0.2702 12.0937 -17.1594 +v -0.3997 14.2625 28.6155 +v -1.1495 14.0276 28.6256 +v -0.4579 14.4404 27.2371 +v -0.2481 14.7552 23.9977 +v -0.5708 14.6548 23.9974 +v -1.2507 14.1873 27.2475 +v -0.6622 14.6437 23.6375 +v -1.3683 14.3880 24.0078 +v -1.7339 13.7039 28.6357 +v -1.4176 14.4403 22.9804 +v -1.8709 13.8472 27.2585 +v -2.0494 14.0246 24.0181 +v -2.3270 13.2215 28.6551 +v -2.4999 13.3321 27.2789 +v -2.7440 13.4650 24.0416 +v -2.1898 14.0397 22.6190 +v -1.5297 14.3936 22.6105 +v -2.7537 12.6711 28.6746 +v -3.2362 12.8422 24.0630 +v -2.0867 14.1630 19.9565 +v -2.8332 13.5011 22.6431 +v -2.9510 12.7504 27.2997 +v -2.4251 14.0083 19.9472 +v -3.1123 12.0146 28.7005 +v -3.6374 12.0830 24.0935 +v -3.3331 12.0517 27.3270 +v -3.3535 12.8540 22.6643 +v -3.0035 13.5358 19.9570 +v -3.5337 11.3170 27.3545 +v -3.8841 11.2968 24.1227 +v -3.3039 11.3213 28.7264 +v -3.7680 12.0645 22.6971 +v -3.5608 12.8322 19.9779 +v -3.3858 10.5907 28.7547 +v -3.9828 10.4525 24.1555 +v -4.0235 11.2480 22.7268 +v -3.6233 10.5411 27.3845 +v -3.9903 12.0192 20.0139 +v -3.3007 9.8600 28.7832 +v -3.5303 9.7652 27.4146 +v -3.8936 9.6238 24.1882 +v -4.1073 10.3695 22.7617 +v -4.2651 11.1486 20.0443 +v -3.1060 9.1665 28.8096 +v -3.6309 8.7769 24.2204 +v -4.0196 9.5094 22.7953 +v -3.3264 9.0302 27.4427 +v -4.3341 10.2299 20.0821 +v -2.9413 8.3313 27.4708 +v -3.2246 8.0338 24.2533 +v -2.7446 8.5097 28.8363 +v -3.7606 8.6741 22.8270 +v -4.2611 9.3260 20.1172 +v -3.3426 7.8904 22.8593 +v -2.4877 7.7491 27.4927 +v -2.3154 7.9590 28.8567 +v -2.7121 7.3641 24.2793 +v -3.9824 8.4404 20.1510 +v -2.8194 7.2124 22.8830 +v -3.5494 7.6418 20.1854 +v -1.8564 7.2335 27.5146 +v -1.7202 7.4760 28.8776 +v -2.1205 6.6544 22.9091 +v -2.9890 6.9229 20.2103 +v -2.0365 6.8144 24.2983 +v -2.2383 6.3524 20.2384 +v -1.2347 6.8927 27.5270 +v -1.1344 7.1518 28.8890 +v -1.3835 6.4447 24.3043 +v -1.4359 6.2639 22.9215 +v -1.0368 6.8295 27.5300 +v -3.1175 6.4498 13.6554 +v -1.5049 5.9086 20.2509 +v -1.0234 6.4322 24.9761 +v -0.5104 5.9724 22.9371 +v -0.4956 6.1617 24.3211 +v -2.3395 5.8548 13.6827 +v -0.4845 6.2583 24.9722 +v -2.4653 13.8854 18.9127 +v -0.5275 5.6541 20.2683 +v -1.5739 5.3948 13.6976 +v -2.3383 5.7233 10.7268 +v -0.5874 5.1297 13.7133 +v -3.1326 13.3276 13.3919 +v -3.1173 6.3399 10.6982 +v -0.5791 4.9942 10.7575 +v -1.5737 5.2849 10.7404 +v -3.6941 12.5838 13.4163 +v -2.3380 5.4985 5.2347 +v -3.6865 7.0695 10.6723 +v -0.5802 4.7657 5.2653 +v -1.5734 5.0808 5.2485 +v -4.1589 11.7503 13.4512 +v -3.1169 6.1357 5.2064 +v -2.3381 5.1833 -3.7375 +v -3.6851 6.8515 5.1803 +v -0.5865 4.4539 -3.7070 +v -1.5728 4.7472 -3.7231 +v -4.4154 10.8355 13.4843 +v -3.1164 5.8022 -3.7653 +v -3.6804 6.5303 -3.7917 +v -1.4723 4.8759 -10.1781 +v -2.1930 5.2912 -10.1920 +v -0.5493 4.6119 -10.1636 +v -4.5164 9.8894 13.5221 +v -1.8893 5.5778 -16.6533 +v -1.2300 5.2029 -16.6405 +v -2.9252 5.8605 -10.2175 +v -4.4112 8.9428 13.5588 +v -0.3925 4.9808 -16.6283 +v -1.4412 5.9045 -26.0098 +v -0.2949 5.4290 -25.9899 +v -4.1507 8.0281 13.5938 +v -0.9426 5.6176 -26.0023 +v -2.5579 6.0706 -16.6753 +v -4.1502 7.7140 5.1447 +v -1.9490 6.3054 -26.0215 +v -3.6823 7.1938 13.6285 +v -3.4527 6.5455 -10.2424 +v -2.3196 6.7823 -26.0189 +v -4.1496 7.3805 -3.8269 +v -3.0363 6.6802 -16.6976 +v -2.6227 7.3342 -26.0242 +v -2.7965 7.9295 -26.0909 +v -3.4467 7.3685 -16.7260 +v -3.6590 8.1201 -16.7545 +v -3.8978 7.3334 -10.2750 +v -3.7612 8.8993 -16.7850 +v -4.1366 8.1840 -10.3072 +v -2.8612 8.5488 -26.2001 +v -4.1506 7.9181 10.6366 +v -4.2420 9.0706 -10.3419 +v -4.4091 8.2897 -3.8613 +v -3.6624 9.6784 -16.8153 +v -2.7992 9.1620 -26.3783 +v -4.1405 9.9571 -10.3764 +v -4.5153 9.2418 -3.8987 +v -4.4133 10.1937 -3.9358 +v -3.4535 10.4297 -16.8433 +v -3.9054 10.8074 -10.4081 +v -2.6280 9.7453 -26.7029 +v -4.1578 11.1027 -3.9695 +v -3.0461 11.1178 -16.8707 +v -2.3273 10.2740 -27.3777 +v -4.1584 11.4362 5.0022 +v -3.4638 11.5949 -10.4396 +v -3.6923 11.9524 -4.0037 +v -2.5703 11.7269 -16.8919 +v -1.9587 10.7229 -28.1112 +v -2.9393 12.2795 -10.4634 +v -3.6971 12.2982 4.9676 +v -3.1315 12.6800 -4.0288 +v -1.9039 12.2191 -16.9124 +v -4.4165 8.6189 5.1105 +v -2.2096 12.8481 -10.4872 +v -1.4526 11.0959 -28.9388 +v -2.3559 13.2982 -4.0547 +v -4.5159 9.5753 5.0730 +v -3.1320 13.0135 4.9429 +v -2.3559 13.6501 4.9164 +v -1.2463 12.5933 -16.9236 +v -1.4907 13.2627 -10.4994 +v -0.9552 11.3514 -29.6023 +v -4.4207 10.5315 5.0358 +v -1.5925 13.7336 -4.0674 +v -2.3561 13.8339 10.4080 +v -1.5931 14.0671 4.9043 +v -0.4097 12.8147 -16.9339 +v -3.6984 12.4889 10.4593 +v -0.5689 13.5259 -10.5117 +v -0.3083 11.5285 -30.1139 +v -0.6075 14.0260 -4.0812 +v -0.6013 14.3812 4.8899 +v -3.1324 13.2177 10.4348 +v -1.5935 14.2713 10.3962 +v -0.6800 14.5455 10.3820 +v -2.3572 13.9215 13.3652 +v -4.1587 11.6404 10.4940 +v -0.5905 14.6696 13.3693 +v -1.5936 14.3812 13.3533 +v -1.5772 14.4206 14.8965 +v -0.6508 14.7259 14.9414 +v -4.4225 10.7310 10.5276 +v -4.5162 9.7794 10.5649 +v -4.4183 8.8280 10.6024 +v 0.0788 11.0418 10.5218 +v -1.5702 11.2098 15.0195 +v -1.5282 11.3969 20.0518 +v -2.0806 11.3976 20.0624 +v -2.4597 11.3586 19.0095 +v -1.5248 14.9375 19.9188 +v -1.4315 14.4608 22.6080 +v -1.5715 11.8128 14.9964 +v -0.2821 8.5409 29.8600 +v -0.3704 8.0010 27.3801 +v -0.9655 8.1690 27.3733 +v -0.9738 8.7373 29.8494 +v -0.9486 7.7766 24.8500 +v -0.4111 7.6198 24.8434 +v 0.0861 12.0346 10.5133 +v 0.2283 12.0370 10.5153 +v -0.2511 13.6507 31.8844 +v -0.2327 13.5984 31.8710 +v -0.1865 13.5622 31.8645 +v -0.1286 13.5541 31.8630 +v -0.0745 13.5763 31.8667 +v -0.0387 13.6227 31.8748 +v -0.0308 13.6810 31.8852 +v -0.0529 13.7356 31.8948 +v -0.0991 13.7718 31.9014 +v -0.1570 13.7799 31.9029 +v -0.2469 13.7113 31.8909 +v -0.2111 13.7577 31.8992 +v -0.2642 13.5074 31.7768 +v -0.3249 13.4828 31.8508 +v -0.1239 13.5027 31.8471 +v -0.3586 13.5567 31.6312 +v -0.8153 13.2859 31.8577 +v -0.7631 13.1607 31.9481 +v -0.4241 13.5457 31.6344 +v -0.2449 13.3208 31.9426 +v -1.2532 13.0734 31.8653 +v -1.1805 12.9242 31.9567 +v -1.6976 12.6818 31.8798 +v -1.6015 12.5868 31.9691 +v -2.0175 12.2895 31.8945 +v -1.8956 12.1908 31.9840 +v -2.2861 11.7774 31.9138 +v -2.4023 11.8206 31.6982 +v -2.5558 11.2838 31.7184 +v -2.4298 11.2652 31.9333 +v -2.4910 10.7105 31.9544 +v -2.6168 10.7044 31.7407 +v -2.5533 10.1264 31.7630 +v -2.4274 10.1562 31.9758 +v -2.3974 9.5880 31.7837 +v -2.2814 9.6432 31.9956 +v -2.1161 9.0570 31.8046 +v -2.0106 9.1314 32.0155 +v -1.7776 8.6413 31.8206 +v -1.6889 8.7384 32.0309 +v -1.2429 8.3469 32.0464 +v -1.3107 8.2382 31.8371 +v -0.8518 8.0085 31.8459 +v -1.0210 7.5336 30.4525 +v -0.2599 7.7948 31.8554 +v -0.3271 7.3072 30.4647 +v 0.2393 7.7405 31.8555 +v 0.2390 7.8754 32.0642 +v -0.2411 7.9221 32.0638 +v 0.2386 8.0569 32.1445 +v -0.2335 8.1043 32.1424 +v -0.1931 8.1966 32.0373 +v 0.2384 8.1524 32.0376 +v -0.8040 8.1335 32.0551 +v -0.7007 8.3893 32.0293 +v -0.7523 8.2649 32.1357 +v -1.0959 8.5794 32.0216 +v -1.5508 7.8165 30.4434 +v -1.1708 8.5019 32.1261 +v -1.4976 8.9340 32.0076 +v -1.5933 8.8397 32.1127 +v -2.0914 8.2652 30.4233 +v -1.7877 9.2865 31.9937 +v -1.8891 9.2359 32.0972 +v -2.4887 8.7571 30.4055 +v -2.0311 9.7488 31.9758 +v -2.1562 9.6995 32.0791 +v -2.8080 9.3596 30.3805 +v -2.2791 10.1947 32.0600 +v -2.1634 10.2100 31.9580 +v -2.9978 9.9857 30.3569 +v -2.3555 10.7135 32.0400 +v -2.2199 10.7097 31.9388 +v -3.0616 10.6504 30.3308 +v -3.0007 11.3152 30.3048 +v -2.2814 11.2323 32.0203 +v -2.1656 11.2094 31.9197 +v -2.0353 11.6705 31.9022 +v -2.8136 11.9409 30.2816 +v -2.1607 11.7274 32.0015 +v -1.7940 12.1326 31.8847 +v -2.4970 12.5434 30.2574 +v -2.1233 12.3529 31.6777 +v -2.1019 13.0347 30.2406 +v -1.7867 12.7667 31.6626 +v -1.5054 12.4848 31.8716 +v -1.1052 12.8390 31.8585 +v -1.3215 13.1710 31.6470 +v -1.5633 13.4831 30.2217 +v -0.7109 13.0287 31.8517 +v -1.0347 13.7653 30.2138 +v -0.8636 13.3987 31.6394 +v -0.2041 13.2210 31.8449 +v -0.5161 13.7341 30.9579 +v -0.4965 13.6061 31.3930 +v -0.3804 13.9839 30.2036 +v -0.4484 13.6287 31.3872 +v 0.2272 13.2526 31.8455 +v -0.3936 13.8589 30.6120 +v -0.4729 13.7540 30.9615 +v 0.2269 13.3740 31.9416 +v 0.2265 13.5486 31.8518 +v 0.7381 7.7943 31.8566 +v 1.3291 8.0075 31.8485 +v 1.7871 8.2368 31.8407 +v 0.7188 7.9216 32.0649 +v 2.2522 8.6394 31.8253 +v 1.7187 8.3456 32.0498 +v 1.2808 8.1326 32.0575 +v 2.5888 9.0548 31.8101 +v 2.1631 8.7366 32.0354 +v 2.4830 9.1294 32.0207 +v 0.7104 8.1039 32.1435 +v 1.2286 8.2640 32.1380 +v 1.6460 8.5006 32.1294 +v 2.0670 8.8380 32.1170 +v 2.7516 9.6409 32.0014 +v 2.3611 9.2340 32.1021 +v 0.6696 8.1962 32.0383 +v 1.1764 8.3885 32.0315 +v 1.5707 8.5782 32.0247 +v 1.9709 8.9324 32.0116 +v 2.8678 9.5855 31.7898 +v 2.2595 9.2846 31.9984 +v 2.6262 9.6974 32.0847 +v 2.5008 9.7467 31.9810 +v 2.8953 10.1537 31.9820 +v 2.7469 10.1924 32.0658 +v 2.6311 10.2078 31.9635 +v 3.0214 10.1239 31.7694 +v 2.8210 10.7112 32.0460 +v 2.9565 10.7080 31.9608 +v 2.6854 10.7075 31.9445 +v 2.8929 11.2627 31.9395 +v 2.7446 11.2300 32.0261 +v 3.0823 10.7018 31.7473 +v 3.0188 11.2813 31.7249 +v 2.6289 11.2072 31.9253 +v 2.6217 11.7252 32.0070 +v 2.7469 11.7751 31.9197 +v 2.4966 11.6684 31.9074 +v 2.8629 11.8182 31.7043 +v 2.3546 12.1888 31.9889 +v 2.2532 12.1308 31.8895 +v 2.4761 12.2875 31.8997 +v 2.0588 12.5851 31.9734 +v 1.9631 12.4833 31.8756 +v 2.5816 12.3508 31.6831 +v 2.1544 12.6800 31.8843 +v 2.2432 12.7649 31.6673 +v 1.6363 12.9229 31.9600 +v 1.5614 12.8378 31.8616 +v 1.7084 13.0720 31.8688 +v 1.7762 13.1695 31.6507 +v 1.2178 13.1598 31.9504 +v 1.1662 13.0279 31.8538 +v 1.3173 13.3977 31.6420 +v 1.2695 13.2849 31.8602 +v 0.6586 13.2206 31.8459 +v 0.6990 13.3204 31.9437 +v 0.7783 13.4823 31.8520 +v 0.8278 13.5692 31.6359 +v 0.2251 13.8213 30.9700 +v 0.2263 13.6380 31.6364 +v 0.2259 13.7090 31.3784 +v 0.1076 13.8868 30.6215 +v 0.1911 13.8130 30.9655 +v 0.0891 13.5937 31.6759 +v 0.1810 13.6875 31.3957 +v -0.0006 13.5302 31.8014 +v -0.1251 13.5223 31.8839 +v -0.1968 13.5323 31.8859 +v -0.2540 13.5772 31.8940 +v -0.3545 13.6591 31.6893 +v -0.2814 13.6447 31.9059 +v -0.3317 13.7399 31.7178 +v -0.4187 13.7030 31.4031 +v -0.2716 13.7170 31.9187 +v -0.3815 13.7753 31.4233 +v -0.2715 13.8141 31.7337 +v -0.2272 13.7746 31.9288 +v -0.2971 13.8507 31.4457 +v -0.1602 13.8472 31.7411 +v -0.1612 13.8941 31.4555 +v -0.1602 13.8020 31.9335 +v -0.3853 13.8507 30.9975 +v -0.3005 13.9132 31.0168 +v -0.4289 13.8046 30.9800 +v -0.0885 13.7920 31.9316 +v -0.1626 13.9503 31.0278 +v -0.0559 13.8390 31.7418 +v -0.0188 13.8818 31.4517 +v -0.0312 13.7472 31.9235 +v -0.3683 13.8863 30.6186 +v -0.3175 13.9248 30.6267 +v -0.2543 13.9603 30.6350 +v 0.0022 13.9397 31.0215 +v -0.1580 13.9746 30.6406 +v -0.0558 13.9757 30.6398 +v 0.0260 13.7759 31.7321 +v 0.0858 13.8207 31.4337 +v 0.0196 13.9499 30.6350 +v 0.0982 13.8932 31.0011 +v -0.0039 13.6796 31.9114 +v 0.0841 13.9170 30.6285 +v 0.1446 13.7453 31.4113 +v 0.1568 13.8545 30.9842 +v 0.0692 13.7028 31.7179 +v -0.0137 13.6073 31.8988 +v -0.0580 13.5497 31.8887 +v -1.3687 15.4018 14.9308 +v -1.3930 15.4155 14.9240 +v -1.1531 15.6851 14.8440 +v -1.1323 15.6670 14.8508 +v -1.2188 15.7383 15.1502 +v -1.4701 15.4560 15.2305 +v -1.4459 15.4423 15.2373 +v -1.1981 15.7201 15.1570 +v -0.8526 15.9008 14.7804 +v -0.8369 15.8786 14.7870 +v -0.9041 15.9639 15.0863 +v -0.8884 15.9418 15.0929 +v -1.5489 15.1098 15.0191 +v -1.5755 15.1189 15.0121 +v -1.6614 15.1455 15.3189 +v -1.6349 15.1363 15.3259 +v -2.1126 15.4230 20.2131 +v -2.1375 15.4326 20.2159 +v -1.8974 15.8602 20.3420 +v -1.8752 15.8457 20.3377 +v -1.5637 16.2295 20.4510 +v -1.5827 16.2479 20.4564 +v -1.1889 16.5578 20.5481 +v -1.1746 16.5357 20.5416 +v -0.7414 16.7712 20.6115 +v -0.7311 16.7471 20.6043 +v -0.2685 16.9056 20.6516 +v -0.2745 16.9311 20.6591 +v -2.1602 14.3987 16.7579 +v -2.1872 14.4021 16.7512 +v -2.3462 14.3499 17.9618 +v -2.3201 14.3457 17.9659 +v 0.0575 16.9682 20.6686 +v 0.0596 16.9417 20.6627 +v -2.3978 14.6105 18.9840 +v -2.3713 14.6069 18.9833 +v -2.0132 14.5136 16.0089 +v -2.0409 14.5170 16.0007 +v -0.3930 15.0544 11.9593 +v -0.5543 14.9739 12.1007 +v -0.5288 14.9586 12.1093 +v -0.3709 15.0359 11.9680 +v -0.7586 14.8788 12.3671 +v -0.7288 14.8708 12.3761 +v 0.0598 14.5317 10.3707 +v 0.0612 14.5137 10.3672 +v 0.0503 14.5124 10.3910 +v 0.0499 14.5328 10.3931 +v -0.2728 14.5679 11.1260 +v -0.2880 14.4720 11.1305 +v 0.0626 14.6027 10.3900 +v -0.8169 14.6271 12.3617 +v -0.2396 14.7043 11.1176 +v -0.8591 14.4039 12.3787 +v -1.4414 14.6405 14.2575 +v -0.7433 14.8737 12.3301 +v -1.5319 14.1719 14.2756 +v 0.0718 14.5996 10.3680 +v -0.1184 14.7831 10.9956 +v 0.0960 14.6529 10.3894 +v -0.5440 14.9684 12.0730 +v 0.1052 14.6490 10.3665 +v 0.0259 14.8687 10.9722 +v 0.1392 14.6892 10.3893 +v -0.3865 15.0492 11.9387 +v -0.2500 15.1352 11.9281 +v 0.1437 14.6818 10.3655 +v 0.1744 14.7042 10.3880 +v -0.0761 15.2009 11.9590 +v -0.2537 15.1397 11.9435 +v 0.1480 14.9263 11.0153 +v 0.1753 14.6960 10.3649 +v 0.2236 14.7110 10.3925 +v 0.1040 15.2965 12.0608 +v 0.2231 14.9296 11.0149 +v -0.0790 15.2072 11.9786 +v 0.2223 15.3000 12.0522 +v 0.2223 15.3129 12.0884 +v 0.1028 15.3064 12.0886 +v 0.2207 16.0368 14.2066 +v -1.7115 14.6248 15.0626 +v 0.0444 16.0277 14.2068 +v 0.0432 16.1801 14.6977 +v 0.2204 16.1887 14.6950 +v 0.2202 16.2660 15.0007 +v 0.0433 16.2573 15.0033 +v -0.1545 16.1546 14.7050 +v -0.1740 16.2353 15.0090 +v 0.0506 16.6784 16.4394 +v -0.5144 16.0444 14.7376 +v -0.5468 16.1191 15.0422 +v 0.2194 16.6873 16.4383 +v 0.0580 16.9888 17.8646 +v 0.2187 16.9979 17.8644 +v 0.0578 17.1003 19.2949 +v 0.2185 17.1096 19.2962 +v 0.2188 16.9772 20.6705 +v 0.2190 16.8847 20.9682 +v 0.0575 16.8758 20.9656 +v -0.2743 16.8392 20.9545 +v -0.7412 16.6792 20.9069 +v -1.1887 16.4658 20.8436 +v -1.5825 16.1560 20.7519 +v -1.9021 14.0477 15.3345 +v -1.8972 15.7682 20.6374 +v -2.1373 15.3406 20.5112 +v -2.2132 15.1341 20.1307 +v -2.2642 14.8390 20.3630 +v -2.2643 14.8586 20.0477 +v -2.2894 14.8718 19.8682 +v -2.3478 14.3396 19.8945 +v -2.3428 14.3971 20.2350 +v -2.4013 13.9581 19.7821 +v -2.5015 13.8594 18.8893 +v -2.3725 13.9722 19.9394 +v -2.4158 13.9100 17.9785 +v -2.2578 13.9736 16.8110 +v -2.1379 13.9981 16.0733 +v -1.9967 14.0287 15.6413 +v -1.8005 14.7178 15.4413 +v -1.7241 14.6544 15.1208 +v -1.7922 14.7821 15.4227 +v -1.7013 14.7735 15.1154 +v 0.0461 16.0018 14.2155 +v 0.1082 15.2810 12.0977 +v -0.2380 15.1172 11.9522 +v -2.2631 14.8683 19.8649 +v -1.7725 14.7142 15.4483 +v -1.6736 14.7680 15.1224 +v -1.7642 14.7782 15.4297 +v -1.6838 14.6203 15.0700 +v -1.4141 14.6360 14.2662 +v -1.6961 14.6498 15.1275 +v -0.0675 15.1831 11.9871 +v 0.0457 16.1537 14.7046 +v -0.5355 16.0948 15.0489 +v -0.5033 16.0200 14.7444 +v -0.1476 16.1289 14.7119 +v -0.1674 16.2096 15.0159 +v 0.0456 16.2308 15.0100 +v 0.0522 16.6519 16.4459 +v 0.0593 17.0730 19.2947 +v 0.0595 16.9618 17.8684 +v -2.1870 15.1302 20.1268 +v -1.5462 16.1383 20.7605 +v 1.5961 15.6839 14.8472 +v 1.8372 15.4140 14.9277 +v 1.8129 15.4004 14.9345 +v 1.5754 15.6657 14.8539 +v 1.6616 15.7369 15.1536 +v 1.6409 15.7188 15.1603 +v 1.8900 15.4407 15.2412 +v 1.9142 15.4544 15.2344 +v 1.2946 15.8998 14.7829 +v 1.2791 15.8776 14.7894 +v 1.3459 15.9629 15.0890 +v 1.3303 15.9408 15.0955 +v 2.0210 15.1173 15.0163 +v 1.9945 15.1082 15.0232 +v 2.0803 15.1346 15.3302 +v 2.1069 15.1437 15.3233 +v 2.3399 15.8583 20.3469 +v 2.5819 15.4304 20.2214 +v 2.5570 15.4209 20.2185 +v 2.3177 15.8438 20.3426 +v 2.0046 16.2279 20.4552 +v 2.0235 16.2463 20.4606 +v 1.6283 16.5565 20.5514 +v 1.6141 16.5344 20.5449 +v 1.1799 16.7704 20.6137 +v 1.1697 16.7462 20.6065 +v 0.7064 16.9052 20.6527 +v 0.7123 16.9306 20.6603 +v 2.7952 14.3475 17.9678 +v 2.6360 14.3999 16.7569 +v 2.6090 14.3965 16.7634 +v 2.7691 14.3433 17.9719 +v 0.3801 16.9681 20.6690 +v 0.3781 16.9415 20.6630 +v 2.8193 14.6045 18.9893 +v 2.8457 14.6081 18.9902 +v 2.4891 14.5150 16.0060 +v 2.4614 14.5115 16.0141 +v 0.8387 15.0538 11.9607 +v 0.8167 15.0353 11.9694 +v 0.9750 14.9579 12.1111 +v 1.0003 14.9732 12.1025 +v 1.1753 14.8699 12.3783 +v 1.2051 14.8779 12.3694 +v 0.3418 15.3063 12.0889 +v 0.3971 16.0275 14.2072 +v 0.3956 16.0017 14.2159 +v 0.3365 15.2809 12.0980 +v 0.6991 15.1392 11.9446 +v 0.6834 15.1168 11.9532 +v 2.7362 14.8695 19.8741 +v 2.7099 14.8660 19.8707 +v 2.2478 14.7160 15.4460 +v 2.2198 14.7124 15.4529 +v 2.1484 14.7718 15.1199 +v 2.1207 14.7662 15.1269 +v 2.2113 14.7763 15.4343 +v 2.2392 14.7802 15.4274 +v 1.8890 14.6390 14.2614 +v 1.8618 14.6345 14.2701 +v 2.1315 14.6185 15.0744 +v 2.1592 14.6230 15.0671 +v 2.1437 14.6481 15.1319 +v 2.1716 14.6527 15.1253 +v 0.5126 15.1828 11.9878 +v 0.5240 15.2070 11.9793 +v 0.3977 16.1799 14.6981 +v 0.3952 16.1535 14.7050 +v 0.9879 16.1184 15.0439 +v 0.9768 16.0941 15.0507 +v 0.9559 16.0438 14.7394 +v 0.9449 16.0194 14.7460 +v 0.5955 16.1542 14.7058 +v 0.5886 16.1286 14.7127 +v 0.3972 16.2571 15.0037 +v 0.3951 16.2307 15.0104 +v 0.6082 16.2092 15.0169 +v 0.6146 16.2349 15.0100 +v 0.3882 16.6782 16.4398 +v 0.3867 16.6517 16.4463 +v 0.3795 16.9887 17.8649 +v 0.3792 17.1001 19.2952 +v 0.3778 17.0728 19.2950 +v 0.3780 16.9616 17.8688 +v 2.6588 15.1319 20.1364 +v 2.6327 15.1280 20.1324 +v 2.0237 16.1543 20.7561 +v 2.3401 15.7663 20.6423 +v 2.5820 15.3385 20.5166 +v 0.3805 16.8757 20.9660 +v 0.7125 16.8387 20.9556 +v 2.7112 14.8367 20.3688 +v 2.7917 14.3948 20.2409 +v 1.1801 16.6783 20.9091 +v 2.8232 13.9698 19.9455 +v 1.6002 16.4408 20.8534 +v 1.6285 16.4645 20.8469 +v 2.7112 14.8563 20.0535 +v 2.7969 14.3372 19.9005 +v 2.8521 13.9557 19.7882 +v 2.9527 13.8569 18.8956 +v 2.8667 13.9076 17.9847 +v 2.7084 13.9713 16.8168 +v 2.5884 13.9960 16.0788 +v 2.4470 14.0267 15.6465 +v 2.3524 14.0458 15.3395 +v 1.9815 14.1703 14.2797 +v 1.3088 14.4028 12.3839 +v 1.2637 14.6261 12.3624 +v 0.7361 14.4716 11.1315 +v 0.7186 14.5672 11.1226 +v 0.3403 15.2930 12.0514 +v 1.1901 14.8729 12.3330 +v 0.5205 15.1990 11.9547 +v 0.3961 14.5124 10.3878 +v 0.6926 15.1315 11.9183 +v 0.2982 14.9255 11.0133 +v 0.8300 15.0469 11.9330 +v 0.4196 14.8669 10.9672 +v 0.5631 14.7813 10.9900 +v 0.9873 14.9662 12.0671 +v 0.2729 14.7049 10.3904 +v 0.3377 14.6618 10.3846 +v 0.6860 14.7036 11.1167 +v 0.3074 14.6878 10.3856 +v 0.3835 14.6021 10.3869 +v 0.3957 14.5324 10.3882 +v 0.0772 16.7798 21.2759 +v 0.2194 16.6985 21.5606 +v -0.0746 16.6543 21.6213 +v -0.2542 16.7159 21.2645 +v -0.6523 16.4861 21.6669 +v -0.3787 16.4958 21.8438 +v -0.6067 16.2301 22.2163 +v -0.9190 16.1764 22.0996 +v -0.6895 15.9039 22.6733 +v -1.0151 15.8100 22.6092 +v -0.9214 15.4455 23.1195 +v -0.6016 15.5632 23.1509 +v -0.8600 15.2916 23.3353 +v -0.4931 15.2987 23.5202 +v -0.3768 15.0354 23.8911 +v -0.6035 14.6102 24.2193 +v -0.1528 14.7256 24.1471 +v -0.1212 15.0180 23.9151 +v 0.2232 15.0095 23.9278 +v 0.2239 14.6946 24.1667 +v -1.5815 16.1469 20.7771 +v -1.8962 15.7592 20.6626 +v -2.1363 15.3317 20.5364 +v 0.0583 16.8668 20.9908 +v -0.2734 16.8302 20.9797 +v -2.2633 14.8331 20.3887 +v -2.3406 14.3944 20.2604 +v -0.7404 16.6702 20.9321 +v -2.3685 13.9701 19.9639 +v -1.1878 16.4568 20.8688 +v -2.2079 14.8141 20.7360 +v -2.1965 14.8959 20.7352 +v -2.1136 15.2120 20.8338 +v -1.8738 15.6389 20.9599 +v -1.5595 16.0260 21.0742 +v -1.1685 16.3421 21.1550 +v -0.7210 16.5560 21.2171 +v -1.8980 14.2196 21.8231 +v -1.8140 14.7632 21.7904 +v -1.4016 14.3759 22.8570 +v -1.2957 14.8116 22.8466 +v -0.9576 15.0114 23.3406 +v 0.5136 16.6540 21.6220 +v 1.0920 16.4853 21.6689 +v 0.8184 16.4953 21.8452 +v 1.0476 16.2293 22.2182 +v 1.3601 16.1754 22.1022 +v 1.1319 15.9031 22.6754 +v 1.4579 15.8088 22.6120 +v 1.3658 15.4445 23.1222 +v 1.0455 15.5624 23.1528 +v 0.9381 15.2981 23.5219 +v 0.8230 15.0348 23.8925 +v 0.6004 14.7252 24.1479 +v 0.5675 15.0177 23.9159 +v 0.5105 16.6284 21.6131 +v 1.0825 16.4610 21.6613 +v 0.8136 16.4712 21.8336 +v 1.0421 16.2064 22.2046 +v 1.3476 16.1537 22.0921 +v 1.1262 15.8812 22.6605 +v 1.4412 15.7913 22.6001 +v 1.3492 15.4289 23.1077 +v 1.0398 15.5412 23.1371 +v 0.9299 15.2780 23.5058 +v 0.8200 15.0149 23.8746 +v 0.6003 14.7257 24.0890 +v 0.5671 14.9993 23.8960 +v -0.8389 14.4051 12.4080 +v 0.0782 14.5229 10.4013 +v 0.0769 14.5391 10.4045 +v -0.7856 14.6281 12.3816 +v 0.0876 14.5999 10.4021 +v 0.1016 14.6266 10.4013 +v -1.5005 14.1719 14.2756 +v 0.1197 14.6500 10.4005 +v -1.8654 14.0477 15.3346 +v -1.9534 14.0287 15.6414 +v -2.0830 13.9981 16.0733 +v -2.2168 13.9736 16.8110 +v -2.3655 13.9100 17.9786 +v -2.4468 13.8593 18.8893 +v -2.3578 13.9581 19.7822 +v -2.3409 14.3396 19.8945 +v -2.2433 14.8586 20.0477 +v -2.2143 14.8499 20.3802 +v 0.0610 16.8439 20.9695 +v 0.2189 16.9453 20.6703 +v 0.2186 17.0713 19.2961 +v 0.1429 14.6691 10.3999 +v 0.2187 16.9751 17.8643 +v 0.2194 16.6629 16.4382 +v 0.2203 16.2388 15.0006 +v 0.2205 16.1623 14.6949 +v 0.2208 16.0119 14.2065 +v 0.2223 15.3016 12.0884 +v 0.1804 14.6862 10.3993 +v 0.1612 14.6778 10.3998 +v 0.2236 14.6861 10.3954 +v 0.3710 14.5390 10.4048 +v 0.3698 14.5228 10.4017 +v 1.2898 14.3962 12.4005 +v 1.2391 14.6269 12.3782 +v 1.9519 14.1609 14.2904 +v 0.3600 14.5998 10.4024 +v 2.3247 14.0351 15.3580 +v 0.3459 14.6265 10.4016 +v 0.3277 14.6499 10.4008 +v 0.3044 14.6690 10.4001 +v 0.2860 14.6778 10.3999 +v 0.2669 14.6862 10.3994 +v 2.4223 14.0150 15.6630 +v 2.6866 14.8563 20.0534 +v 2.7766 14.3373 19.9005 +v 2.8311 13.9477 19.7857 +v 2.5641 13.9852 16.0915 +v 2.6841 13.9606 16.8295 +v 2.8417 13.8974 17.9820 +v 2.9280 13.8486 18.8898 +v 19.1783 7.6359 -9.3963 +v 18.7067 7.7836 -9.8842 +v 18.7210 9.0789 -9.7211 +v 19.1308 9.1780 -9.3192 +v 28.2582 7.2173 -21.0285 +v 28.2788 7.5765 -21.0423 +v 28.2780 7.4870 -21.1750 +v 28.2643 7.2635 -21.1578 +v 28.2670 7.3630 -21.2465 +v 20.8984 9.0005 -11.0886 +v 20.8765 7.4654 -11.0963 +v 27.1647 8.3713 -17.3619 +v 27.0768 6.8428 -17.3034 +v 28.1712 8.1588 -18.4671 +v 28.1357 6.8458 -18.4752 +v 4.6782 9.4522 -4.2422 +v 9.0658 9.2090 -4.2279 +v 9.0570 9.0634 -4.0099 +v 4.6708 9.3321 -4.0253 +v 4.6915 9.6912 -4.0390 +v 9.0776 9.4225 -4.0237 +v 4.3341 10.7543 20.0804 +v 4.3523 10.0964 19.2107 +v 9.0660 9.9951 14.5122 +v 9.0936 9.6103 14.0819 +v 4.3540 9.8297 18.4245 +v 9.0215 9.4643 13.6231 +v 17.1928 9.0838 5.5160 +v 4.3760 9.3660 16.3765 +v 9.0224 9.0342 12.0165 +v 17.2165 8.7186 5.0832 +v 4.3975 9.0912 14.3293 +v 17.1483 8.5592 4.6270 +v 9.0226 8.9161 10.4113 +v 17.1127 8.3321 3.1586 +v 4.4397 9.0093 10.2370 +v 19.6203 8.8305 2.8289 +v 19.6529 8.4594 2.3912 +v 9.0228 8.8045 7.2013 +v 19.5757 8.3059 1.9399 +v 4.5237 8.9541 2.0529 +v 17.0769 8.1795 1.6905 +v 19.3853 8.1126 0.6650 +v 9.0230 8.6556 0.7701 +v 17.0050 8.0762 -1.2448 +v 20.9706 8.6949 1.3547 +v 20.9828 8.3493 0.9357 +v 20.9014 8.1676 0.4725 +v 19.1948 7.9392 -0.6098 +v 20.8691 7.9217 -0.9537 +v 16.9703 7.8576 -7.1859 +v 18.8131 7.8908 -3.1582 +v 30.3708 7.7509 -8.9082 +v 30.3087 7.3780 -9.2883 +v 30.1300 7.2047 -9.7431 +v 20.8368 7.7245 -2.3797 +v 29.7485 7.0850 -10.6870 +v 18.0499 7.7492 -8.2667 +v 20.7713 7.6901 -5.2301 +v 30.7983 7.6742 -9.4930 +v 30.6695 7.3194 -9.7820 +v 30.4623 7.1693 -10.1297 +v 29.3670 6.9653 -11.6309 +v 30.6365 7.1470 -10.4355 +v 31.1458 7.5956 -10.1312 +v 30.9321 7.2862 -10.2470 +v 30.7728 7.1256 -10.7777 +v 30.8808 7.1036 -11.1860 +v 31.0216 7.0667 -11.9406 +v 31.1276 7.2407 -10.8115 +v 31.3847 7.5095 -10.8935 +v 28.6037 6.8870 -13.5180 +v 31.2441 7.1975 -11.2411 +v 31.3832 7.1727 -11.9907 +v 29.8290 6.9388 -14.1270 +v 31.4914 7.4718 -11.3089 +v 31.1034 7.0272 -12.8634 +v 31.6053 7.4464 -12.0657 +v 31.4362 7.1402 -12.9215 +v 17.0148 8.2793 -11.5727 +v 31.6537 7.4071 -12.9843 +v 31.1570 6.9802 -14.0379 +v 31.4476 7.0904 -14.1197 +v 29.6425 6.8899 -14.7681 +v 31.1170 6.9370 -15.2662 +v 31.6556 7.3717 -14.1813 +v 31.4024 7.0594 -15.3460 +v 31.0770 6.8939 -16.4945 +v 31.5859 7.3344 -15.4173 +v 31.3385 7.0213 -16.5727 +v 31.5163 7.2971 -16.6532 +v 30.8779 6.9132 -17.8682 +v 31.1384 7.0317 -17.9619 +v 30.6769 6.9416 -18.7352 +v 30.3178 6.9862 -19.6054 +v 17.5438 8.2272 -12.0755 +v 29.8261 7.0183 -20.3463 +v 31.3112 7.2589 -18.0443 +v 29.0943 7.1057 -20.8544 +v 30.9102 7.0485 -18.8341 +v 30.5258 7.0768 -19.7219 +v 29.1755 7.1809 -20.9619 +v 31.0580 7.2503 -18.9029 +v 30.6471 7.2515 -19.7599 +v 29.9498 7.1337 -20.4913 +v 30.0213 7.3176 -20.5507 +v 29.2621 7.3501 -21.0284 +v 17.0237 8.4250 -11.7907 +v 17.5527 8.3729 -12.2934 +v 17.5645 8.5864 -12.0892 +v 17.0355 8.6385 -11.5865 +v 9.1110 10.1841 0.7117 +v 4.6117 10.4826 1.9944 +v 9.1104 10.5132 7.1437 +v 4.7269 11.0548 10.1810 +v 9.1103 10.5861 10.3674 +v 4.5843 11.2412 14.2819 +v 9.1103 10.5602 11.9790 +v 4.5132 11.2739 16.3320 +v 9.1108 10.3492 13.5899 +v 4.4424 11.1458 18.3815 +v 9.0885 10.2493 14.0451 +v 4.4229 11.0427 19.1705 +v 18.1379 9.2777 -8.3251 +v 17.0583 9.3861 -7.2443 +v 17.0929 9.6047 -1.3032 +v 18.9011 9.4193 -3.2166 +v 20.9454 9.2097 -5.3797 +v 17.1648 9.7524 1.6463 +v 19.2828 9.4372 -0.6544 +v 20.9679 9.2169 -2.4699 +v 17.2012 9.6292 3.1201 +v 28.6916 8.4156 -13.5765 +v 29.4553 8.3268 -11.6761 +v 19.4739 9.3176 0.6261 +v 20.9793 9.1527 -1.0152 +v 29.8714 8.1159 -14.0808 +v 29.6319 8.1688 -14.6980 +v 29.8373 8.2018 -10.7263 +v 31.1110 7.9389 -11.9739 +v 30.9702 7.9758 -11.2193 +v 30.8636 7.9975 -10.8160 +v 29.9162 7.6228 -20.3837 +v 31.2064 7.8092 -15.2995 +v 30.4074 7.6477 -19.6486 +v 30.7666 7.7116 -18.7794 +v 30.9674 7.7358 -17.9082 +v 31.1664 7.7661 -16.5277 +v 29.1774 7.5916 -20.8648 +v 30.5396 7.4917 -19.7105 +v 30.9448 7.5063 -18.8530 +v 29.9721 7.5045 -20.4725 +v 31.1918 7.5135 -17.9932 +v 31.3709 7.5654 -16.5944 +v 31.1929 7.8994 -12.8967 +v 17.2377 9.4314 4.5937 +v 31.2678 7.7322 -11.2703 +v 20.9908 9.0398 0.4392 +v 31.2464 7.8524 -14.0712 +v 19.6651 9.1782 1.9066 +v 29.2320 7.5110 -20.9654 +v 31.1784 7.7656 -10.8626 +v 30.2194 8.0769 -9.7764 +v 31.4441 7.5993 -15.3684 +v 30.7260 8.0192 -10.4688 +v 31.4617 7.6436 -14.1290 +v 31.3987 7.6964 -12.0272 +v 30.9646 7.8387 -10.2775 +v 30.5518 8.0415 -10.1630 +v 31.4400 7.6795 -12.9435 +v 30.6786 7.8967 -9.8179 +v 30.2948 7.9587 -9.3435 +v 20.9799 8.9032 0.9266 +v 19.6412 9.0529 2.3978 +v 17.2142 9.3000 5.0754 +v 27.4136 7.4188 -21.1961 +v 27.4049 7.2731 -20.9782 +v 26.5782 7.3401 -20.5807 +v 26.5870 7.4858 -20.7986 +v 26.0307 7.3911 -20.1410 +v 26.0395 7.5368 -20.3589 +v 27.4254 7.6324 -20.9919 +v 26.5988 7.6993 -20.5944 +v 26.0513 7.7503 -20.1547 +v 9.0857 10.1592 14.5059 +v 9.0861 9.9951 14.5122 +v 9.1309 10.3428 13.5899 +v 9.0865 10.3484 14.4711 +v 9.0899 10.5193 14.3844 +v 9.0953 10.6573 14.2533 +v 9.1070 10.7505 14.0717 +v 9.1168 10.8357 13.8181 +v 9.1239 10.8987 13.5582 +v 9.1282 10.9392 13.2942 +v 9.1295 10.9686 13.0278 +v 9.1306 10.4231 7.1433 +v 9.1294 11.0081 12.3569 +v 9.1293 11.0386 11.6859 +v 9.1293 11.0444 10.3438 +v 9.1293 11.0237 7.6594 +v 9.1293 11.0047 6.5815 +v 9.1310 10.1840 0.7117 +v 9.1294 10.9382 3.9046 +v 9.1296 10.8057 1.2274 +v 9.1278 10.7609 0.6921 +v 9.1260 10.6962 0.1568 +v 9.0977 9.4225 -4.0237 +v 9.1128 10.4368 -1.6944 +v 9.0975 9.5045 -4.0268 +v 9.0973 9.7143 -3.9976 +v 9.0977 9.8998 -3.8980 +v 9.0998 10.1084 -3.5460 +v 9.0986 10.0370 -3.7407 +v 9.0908 10.3428 13.5898 +v 9.0459 9.9951 14.5121 +v 9.0456 10.1592 14.5058 +v 9.0464 10.3484 14.4711 +v 9.0498 10.5193 14.3844 +v 9.0553 10.6574 14.2532 +v 9.0670 10.7506 14.0716 +v 9.0768 10.8357 13.8180 +v 9.0839 10.8987 13.5582 +v 9.0881 10.9392 13.2941 +v 9.0894 10.9686 13.0278 +v 9.0905 10.4231 7.1433 +v 9.0893 11.0081 12.3568 +v 9.0893 11.0386 11.6859 +v 9.0892 11.0445 10.3438 +v 9.0892 11.0237 7.6593 +v 9.0892 11.0047 6.5814 +v 9.0909 10.1841 0.7116 +v 9.0893 10.9382 3.9045 +v 9.0896 10.8057 1.2273 +v 9.0877 10.7609 0.6921 +v 9.0859 10.6962 0.1568 +v 9.0576 9.4225 -4.0237 +v 9.0728 10.4368 -1.6945 +v 9.0574 9.5045 -4.0268 +v 9.0573 9.7143 -3.9977 +v 9.0576 9.8998 -3.8980 +v 9.0598 10.1084 -3.5461 +v 9.0585 10.0370 -3.7407 +v 17.0155 8.6385 -11.5865 +v 17.0153 8.7206 -11.5896 +v 17.0555 8.6385 -11.5864 +v 17.0554 8.7206 -11.5896 +v 17.0151 8.9303 -11.5605 +v 17.0552 8.9303 -11.5604 +v 17.0154 9.1158 -11.4608 +v 17.0555 9.1158 -11.4608 +v 17.0163 9.2530 -11.3035 +v 17.0564 9.2530 -11.3035 +v 17.0176 9.3244 -11.1088 +v 17.0577 9.3244 -11.1088 +v 17.0254 9.6328 -9.4539 +v 17.0655 9.6328 -9.4539 +v 17.0332 9.8982 -7.7992 +v 17.0733 9.8982 -7.7991 +v 17.0360 9.9703 -7.2657 +v 17.0760 9.9703 -7.2656 +v 17.0369 10.0078 -6.7286 +v 17.0769 10.0078 -6.7286 +v 17.0542 10.1136 -4.2968 +v 17.0943 10.1136 -4.2967 +v 17.0716 10.1864 -1.8651 +v 17.1117 10.1863 -1.8650 +v 17.0739 10.1943 -1.5957 +v 17.1139 10.1943 -1.5957 +v 17.0778 10.1983 -1.3262 +v 17.1178 10.1983 -1.3262 +v 17.0808 10.1981 -1.0567 +v 17.1208 10.1981 -1.0567 +v 17.0843 10.1939 -0.7872 +v 17.1243 10.1939 -0.7872 +v 17.1077 10.1870 0.4176 +v 17.1478 10.1870 0.4176 +v 17.1439 10.1568 1.6223 +v 17.1839 10.1567 1.6224 +v 17.1801 10.1116 2.8270 +v 17.2201 10.1116 2.8270 +v 17.2028 10.0455 4.0315 +v 17.2429 10.0455 4.0315 +v 17.2062 10.0278 4.2979 +v 17.2462 10.0278 4.2980 +v 17.2069 9.9873 4.5620 +v 17.2470 9.9873 4.5620 +v 17.2437 9.9243 4.8219 +v 17.2036 9.9243 4.8218 +v 17.2339 9.8391 5.0755 +v 17.1938 9.8392 5.0755 +v 17.2222 9.7459 5.2571 +v 17.1821 9.7459 5.2570 +v 17.2167 9.6079 5.3883 +v 17.1766 9.6080 5.3882 +v 17.2133 9.4370 5.4750 +v 17.1733 9.4370 5.4749 +v 17.2125 9.2478 5.5097 +v 17.1725 9.2478 5.5096 +v 17.1728 9.0838 5.5159 +v 17.2129 9.0838 5.5160 +v 17.0783 9.3773 -7.2443 +v 17.1130 9.5783 -1.3033 +v 17.2577 9.4314 4.5937 +v 17.0383 9.3773 -7.2444 +v 17.0730 9.5783 -1.3034 +v 17.0728 9.6281 -1.3053 +v 17.2177 9.4314 4.5937 +v 20.9505 8.6949 1.3547 +v 20.9906 8.6948 1.3547 +v 20.9902 8.8590 1.3484 +v 20.9501 8.8590 1.3484 +v 20.9510 9.0482 1.3137 +v 20.9911 9.0481 1.3137 +v 20.9543 9.2190 1.2270 +v 20.9944 9.2190 1.2270 +v 20.9599 9.3570 1.0958 +v 20.9999 9.3570 1.0958 +v 20.9977 9.4475 0.9211 +v 20.9576 9.4476 0.9210 +v 20.9967 9.5327 0.6673 +v 20.9567 9.5327 0.6673 +v 20.9637 9.5958 0.4075 +v 21.0038 9.5958 0.4075 +v 20.9679 9.6362 0.1435 +v 21.0081 9.6362 0.1435 +v 20.9694 9.6539 -0.1230 +v 21.0095 9.6539 -0.1229 +v 20.9981 9.7172 -1.3080 +v 20.9580 9.7173 -1.3081 +v 20.9867 9.7660 -2.4931 +v 20.9467 9.7660 -2.4932 +v 20.9754 9.7928 -3.6784 +v 20.9353 9.7929 -3.6784 +v 20.9641 9.7989 -4.8637 +v 20.9241 9.7989 -4.8637 +v 20.9641 9.8032 -5.4027 +v 20.9241 9.8033 -5.4027 +v 20.9641 9.7913 -5.9415 +v 20.9241 9.7914 -5.9416 +v 20.9023 9.7493 -8.2762 +v 20.9423 9.7493 -8.2762 +v 20.8805 9.6864 -10.6109 +v 20.9205 9.6864 -10.6109 +v 20.9192 9.6151 -10.8056 +v 20.8792 9.6151 -10.8056 +v 20.9183 9.4778 -10.9629 +v 20.8783 9.4778 -10.9629 +v 20.9180 9.2923 -11.0625 +v 20.8779 9.2923 -11.0626 +v 20.9182 9.0826 -11.0917 +v 20.8781 9.0826 -11.0917 +v 20.9184 9.0005 -11.0885 +v 20.8783 9.0005 -11.0886 +v 20.9654 9.2097 -5.3797 +v 21.0108 9.0398 0.4392 +v 20.9254 9.2097 -5.3798 +v 20.9708 9.0398 0.4392 +v 8.5597 7.0862 24.7110 +v 8.6468 7.1065 24.7103 +v 8.6468 7.1116 24.3478 +v 8.5513 7.0932 24.3484 +v 8.4708 7.2721 23.8218 +v 8.6463 7.3083 23.8206 +v 8.4713 7.0372 24.3505 +v 8.3996 7.4280 23.2961 +v 8.6460 7.4785 23.2945 +v 8.3218 7.1707 23.8255 +v 8.3379 7.5566 22.6687 +v 8.1906 7.2855 23.3014 +v 8.6456 7.6273 22.6664 +v 8.4841 7.0375 24.7127 +v 8.4367 6.9600 24.7156 +v 8.2230 7.0180 23.8313 +v 8.4166 6.9551 24.3535 +v 8.0717 7.3839 22.6750 +v 8.0518 7.0713 23.3094 +v 7.9035 7.1111 22.6853 +v 8.4170 6.8708 24.7190 +v 8.1880 6.8382 23.8381 +v 8.0284 7.4051 22.0518 +v 8.0029 6.8190 23.3190 +v 8.3989 6.8574 24.3573 +v 7.8351 6.7960 22.6973 +v 7.8351 7.1075 22.0624 +v 8.4371 6.7816 24.7225 +v 8.2238 6.6584 23.8450 +v 8.0529 6.5667 23.3287 +v 8.4171 6.7597 24.3610 +v 7.9049 6.4808 22.7094 +v 7.7739 6.7729 22.0757 +v 8.4848 6.7041 24.7255 +v 8.3232 6.5056 23.8510 +v 8.4720 6.6776 24.3642 +v 7.7746 6.3510 10.7262 +v 8.1926 6.3524 23.3371 +v 7.8411 6.4214 22.0887 +v 8.0743 6.2078 22.7201 +v 8.5606 6.6554 24.7275 +v 8.4727 6.4041 23.8550 +v 8.4023 6.2097 23.3428 +v 8.5524 6.6214 24.3664 +v 8.3413 6.0349 22.7270 +v 8.0312 6.1405 22.1002 +v 8.6478 6.6350 24.7283 +v 8.6484 6.3677 23.8566 +v 8.6479 6.6030 24.3672 +v 8.6489 6.1589 23.3450 +v 8.3131 5.9319 22.1019 +v 8.6493 5.9640 22.7301 +v 8.6495 5.8783 22.1110 +v 8.7349 6.6553 24.7277 +v 8.8239 6.4039 23.8555 +v 8.8952 6.2095 23.3434 +v 8.7433 6.6213 24.3666 +v 8.9570 6.0346 22.7277 +v 8.6502 5.4564 10.7614 +v 8.9855 5.9318 22.1068 +v 8.8234 6.6774 24.3646 +v 8.9729 6.5053 23.8518 +v 9.1041 6.3520 23.3382 +v 8.8105 6.7039 24.7259 +v 9.2665 6.1399 22.1016 +v 9.2231 6.2073 22.7214 +v 9.0717 6.6580 23.8460 +v 8.8579 6.7814 24.7230 +v 9.2429 6.5661 23.3301 +v 8.8780 6.7595 24.3615 +v 9.3913 6.4801 22.7112 +v 9.4599 6.4185 22.0939 +v 8.8776 6.8706 24.7196 +v 9.1067 6.8378 23.8392 +v 8.8957 6.8572 24.3578 +v 9.2919 6.8184 23.3205 +v 9.5210 6.7721 22.0778 +v 8.6455 7.6668 22.0425 +v 9.4598 6.7952 22.6992 +v 8.8575 6.9599 24.7161 +v 9.0709 7.0176 23.8323 +v 9.2418 7.0708 23.3108 +v 7.8358 6.7047 10.7127 +v 8.3109 7.5908 22.0395 +v 8.8776 6.9549 24.3541 +v 9.3899 7.1104 22.6870 +v 9.4583 7.1066 22.0609 +v 8.8098 7.0374 24.7131 +v 8.9715 7.1704 23.8263 +v 8.8226 7.0370 24.3509 +v 8.0319 5.7186 10.7507 +v 7.8375 6.0161 10.7292 +v 9.4590 6.7043 10.7254 +v 9.1021 7.2851 23.3024 +v 9.2637 7.4045 22.0532 +v 9.5217 6.3502 10.7282 +v 9.2205 7.3834 22.6764 +v 8.7340 7.0861 24.7112 +v 8.8220 7.2719 23.8222 +v 9.2672 5.7180 10.7522 +v 8.9862 5.5289 10.7540 +v 8.8925 7.4277 23.2967 +v 8.7423 7.0931 24.3486 +v 8.9536 7.5563 22.6694 +v 8.3138 5.5292 10.7539 +v 9.4605 6.0155 10.7389 +v 8.9777 7.5845 22.0491 +v 9.2644 6.9826 10.7037 +v 8.9823 7.1902 10.6908 +v 9.3860 6.6404 10.0977 +v 8.6462 7.2448 10.6929 +v 8.6464 7.1583 10.0770 +v 8.9525 7.0835 10.0802 +v 9.2207 6.9148 10.0870 +v 9.1103 6.7785 9.4728 +v 9.4597 6.3272 10.1098 +v 9.2578 6.5631 9.4812 +v 9.3031 6.3043 9.4912 +v 8.6468 6.9750 9.4647 +v 8.8996 6.9291 9.4668 +v 9.0734 6.4619 8.8656 +v 8.8236 6.7172 8.8555 +v 8.9747 6.6164 8.8595 +v 8.6473 6.7552 8.8539 +v 9.1109 6.2814 8.8725 +v 8.8787 6.5085 8.4567 +v 8.6476 6.6065 8.4527 +v 8.6501 5.4969 10.1406 +v 8.7718 6.5789 8.4539 +v 8.9477 6.3991 8.4610 +v 9.3874 6.0141 10.1217 +v 8.9749 6.2721 8.4659 +v 8.6478 6.5167 8.3035 +v 9.0742 6.1010 8.8794 +v 8.7445 6.4999 8.3043 +v 8.8246 6.4417 8.3066 +v 8.8816 6.3598 8.3098 +v 9.2589 6.0456 9.5010 +v 8.9482 6.1450 8.4707 +v 8.8982 6.2608 8.3136 +v 7.8367 6.3280 10.1079 +v 7.9090 6.6411 10.0960 +v 8.0291 6.9832 10.7023 +v 8.8821 6.1617 8.3174 +v 8.8797 6.0357 8.4748 +v 9.1124 5.8304 9.5091 +v 8.9761 5.9466 8.8852 +v 9.2233 5.7399 10.1320 +v 8.8254 6.0799 8.3204 +v 8.7731 5.9654 8.4774 +v 8.8255 5.8459 8.8889 +v 8.9558 5.5714 10.1381 +v 8.9024 5.6799 9.5146 +v 8.7456 6.0218 8.3226 +v 8.6491 5.9379 8.4783 +v 8.6498 5.6342 9.5161 +v 8.6494 5.8081 8.8901 +v 8.6489 6.0051 8.3231 +v 8.4730 5.8461 8.8885 +v 8.5521 6.0219 8.3224 +v 8.5249 5.9655 8.4771 +v 8.3440 5.5717 10.1374 +v 8.3969 5.6802 9.5140 +v 8.4720 6.0801 8.3200 +v 8.3219 5.9469 8.8845 +v 8.1862 5.8308 9.5080 +v 8.4179 6.0359 8.4743 +v 8.0757 5.7405 10.1307 +v 8.4150 6.1620 8.3168 +v 8.2232 6.1014 8.8784 +v 8.3489 6.1453 8.4700 +v 7.9104 6.0148 10.1200 +v 8.0387 6.0462 9.4996 +v 8.3985 6.2610 8.3130 +v 8.1857 6.2818 8.8715 +v 7.9933 6.3049 9.4896 +v 8.3217 6.2724 8.4651 +v 8.4146 6.3600 8.3092 +v 8.2224 6.4623 8.8646 +v 8.3484 6.3994 8.4603 +v 8.0376 6.5636 9.4798 +v 8.0731 6.9153 10.0856 +v 8.4713 6.4418 8.3062 +v 8.1841 6.7789 9.4717 +v 8.3204 6.6167 8.8588 +v 8.4169 6.5087 8.4562 +v 8.5511 6.5000 8.3040 +v 8.4711 6.7173 8.8551 +v 8.5235 6.5790 8.4536 +v 8.3407 7.0838 10.0795 +v 8.3942 6.9293 9.4662 +v 8.3103 7.1911 10.6971 +v 9.9938 7.8587 12.6513 +v 9.0627 7.0791 16.8773 +v 9.1187 7.0275 16.8808 +v 10.0498 7.8071 12.6547 +v 9.0252 6.6130 12.2348 +v 8.9693 6.6647 12.2313 +v 9.9112 7.7341 12.1899 +v 9.9671 7.6824 12.1933 +v 8.9630 6.6885 12.6966 +v 8.9070 6.9023 16.8842 +v 10.0000 7.8503 12.4184 +v 9.9607 7.7954 12.2646 +v 8.9629 6.8506 16.8877 +v 9.0190 6.6368 12.7001 +v 10.0560 7.7987 12.4219 +v 10.0167 7.7438 12.2681 +v 10.0559 5.0399 12.7607 +v 9.1419 6.1348 16.9191 +v 9.0869 6.0823 16.9203 +v 10.0010 4.9873 12.7619 +v 8.9487 6.1286 12.2567 +v 9.0036 6.1812 12.2554 +v 9.9671 5.1266 12.2915 +v 9.9121 5.0740 12.2927 +v 9.0015 6.1940 12.7212 +v 8.9825 6.3093 16.9131 +v 10.0600 5.0301 12.5279 +v 10.0184 5.0721 12.3705 +v 8.9276 6.2567 16.9143 +v 8.9466 6.1414 12.7224 +v 10.0051 4.9775 12.5291 +v 9.9635 5.0195 12.3717 +v 7.2402 7.8084 12.6515 +v 8.1672 7.0166 16.8794 +v 8.2204 7.0711 16.8774 +v 7.2933 7.8629 12.6495 +v 8.3857 6.7293 12.2278 +v 8.3326 6.6748 12.2298 +v 7.3344 7.6949 12.1896 +v 7.3876 7.7494 12.1876 +v 8.3326 6.6921 12.6955 +v 8.3323 6.8479 16.8861 +v 7.2370 7.8031 12.4184 +v 7.2809 7.7525 12.2645 +v 8.3855 6.9024 16.8840 +v 8.3857 6.7466 12.6934 +v 7.2901 7.8576 12.4164 +v 7.3340 7.8070 12.2625 +v 7.2996 4.9867 12.7596 +v 8.2102 6.0826 16.9193 +v 8.1572 6.1375 16.9170 +v 7.2466 5.0415 12.7572 +v 8.3432 6.1324 12.2553 +v 8.3963 6.0775 12.2577 +v 7.3961 5.0649 12.2908 +v 7.3430 5.1198 12.2884 +v 8.3942 6.0948 12.7233 +v 8.3756 6.2500 16.9139 +v 7.2974 4.9747 12.5268 +v 7.3420 5.0135 12.3696 +v 8.3226 6.3049 16.9115 +v 8.3412 6.1497 12.7209 +v 7.2444 5.0296 12.5244 +v 7.2890 5.0683 12.3672 +v 12.3077 7.1278 20.5898 +v 12.3948 7.1482 20.5891 +v 12.3948 7.1532 20.2266 +v 12.2994 7.1349 20.2272 +v 12.2188 7.3137 19.7006 +v 12.3944 7.3499 19.6995 +v 12.2193 7.0788 20.2293 +v 12.1476 7.4696 19.1750 +v 12.3940 7.5202 19.1733 +v 12.0698 7.2123 19.7044 +v 12.0859 7.5983 18.5476 +v 11.9386 7.3271 19.1802 +v 12.3936 7.6689 18.5452 +v 12.2321 7.0792 20.5916 +v 12.1847 7.0017 20.5945 +v 11.9710 7.0596 19.7101 +v 12.1646 6.9968 20.2324 +v 11.8197 7.4256 18.5539 +v 11.7998 7.1130 19.1882 +v 11.6515 7.1528 18.5641 +v 12.1650 6.9125 20.5979 +v 11.9360 6.8799 19.7169 +v 11.7764 7.4468 17.9306 +v 11.7509 6.8607 19.1978 +v 12.1469 6.8990 20.2361 +v 11.5831 6.8376 18.5761 +v 11.5831 7.1492 17.9412 +v 12.1851 6.8233 20.6013 +v 11.9718 6.7001 19.7239 +v 11.8009 6.6083 19.2076 +v 12.1651 6.8013 20.2398 +v 11.6529 6.5224 18.5883 +v 11.5219 6.8145 17.9545 +v 12.2328 6.7457 20.6043 +v 12.0712 6.5473 19.7298 +v 12.2201 6.7192 20.2430 +v 11.5226 6.3927 6.6050 +v 11.9407 6.3940 19.2159 +v 11.5891 6.4631 17.9675 +v 11.8223 6.2495 18.5989 +v 12.3086 6.6970 20.6063 +v 12.2207 6.4458 19.7339 +v 12.1503 6.2513 19.2216 +v 12.3004 6.6631 20.2452 +v 12.0893 6.0765 18.6058 +v 11.7792 6.1821 17.9790 +v 12.3958 6.6766 20.6072 +v 12.3964 6.4094 19.7354 +v 12.3959 6.6447 20.2461 +v 12.3969 6.2006 19.2238 +v 12.0612 5.9736 17.9807 +v 12.3973 6.0056 18.6089 +v 12.3975 5.9199 17.9898 +v 12.4829 6.6970 20.6065 +v 12.5719 6.4456 19.7343 +v 12.6432 6.2511 19.2222 +v 12.4913 6.6630 20.2455 +v 12.7050 6.0763 18.6065 +v 12.3982 5.4980 6.6403 +v 12.7335 5.9734 17.9856 +v 12.5714 6.7191 20.2434 +v 12.7209 6.5470 19.7306 +v 12.8522 6.3936 19.2170 +v 12.5585 6.7456 20.6047 +v 13.0145 6.1816 17.9804 +v 12.9711 6.2489 18.6002 +v 12.8197 6.6997 19.7249 +v 12.6059 6.8231 20.6018 +v 12.9909 6.6078 19.2090 +v 12.6260 6.8011 20.2404 +v 13.1393 6.5218 18.5900 +v 13.2079 6.4602 17.9728 +v 12.6256 6.9123 20.5984 +v 12.8547 6.8794 19.7180 +v 12.6437 6.8988 20.2367 +v 13.0399 6.8601 19.1993 +v 13.2690 6.8137 17.9566 +v 12.3935 7.7084 17.9213 +v 13.2078 6.8369 18.5780 +v 12.6055 7.0015 20.5950 +v 12.8189 7.0592 19.7111 +v 12.9898 7.1124 19.1896 +v 11.5838 6.7463 6.5916 +v 12.0589 7.6325 17.9184 +v 12.6256 6.9965 20.2329 +v 13.1380 7.1521 18.5659 +v 13.2064 7.1483 17.9397 +v 12.5578 7.0790 20.5919 +v 12.7195 7.2120 19.7051 +v 12.5706 7.0787 20.2297 +v 11.7799 5.7602 6.6296 +v 11.5856 6.0578 6.6081 +v 13.2070 6.7460 6.6042 +v 12.8501 7.3267 19.1812 +v 13.0117 7.4462 17.9320 +v 13.2697 6.3919 6.6071 +v 12.9685 7.4251 18.5552 +v 12.4820 7.1277 20.5900 +v 12.5700 7.3136 19.7011 +v 13.0152 5.7597 6.6310 +v 12.7342 5.5705 6.6328 +v 12.6405 7.4694 19.1755 +v 12.4903 7.1348 20.2275 +v 12.7016 7.5980 18.5483 +v 12.0618 5.5708 6.6328 +v 13.2085 6.0572 6.6178 +v 12.7257 7.6261 17.9279 +v 13.0124 7.0243 6.5825 +v 12.7303 7.2318 6.5696 +v 13.1340 6.6821 5.9765 +v 12.3942 7.2865 6.5718 +v 12.3944 7.2000 5.9558 +v 12.7005 7.1252 5.9590 +v 12.9687 6.9564 5.9658 +v 12.8583 6.8201 5.3516 +v 13.2077 6.3689 5.9886 +v 13.0058 6.6047 5.3600 +v 13.0512 6.3460 5.3700 +v 12.3948 7.0167 5.3436 +v 12.6476 6.9707 5.3456 +v 12.8214 6.5035 4.7444 +v 12.5716 6.7588 4.7343 +v 12.7227 6.6580 4.7384 +v 12.3953 6.7969 4.7327 +v 12.8589 6.3231 4.7514 +v 12.6267 6.5501 4.3355 +v 12.3956 6.6482 4.3315 +v 12.3981 5.5385 6.0194 +v 12.5198 6.6205 4.3327 +v 12.6957 6.4408 4.3398 +v 13.1354 6.0558 6.0005 +v 12.7229 6.3137 4.3447 +v 12.3958 6.5583 4.1823 +v 12.8222 6.1427 4.7582 +v 12.4926 6.5415 4.1831 +v 12.5726 6.4833 4.1854 +v 12.6296 6.4014 4.1886 +v 13.0070 6.0873 5.3799 +v 12.6962 6.1867 4.3495 +v 12.6462 6.3024 4.1924 +v 11.5847 6.3696 5.9867 +v 11.6570 6.6828 5.9748 +v 11.7772 7.0249 6.5811 +v 12.6301 6.2034 4.1962 +v 12.6277 6.0774 4.3537 +v 12.8604 5.8720 5.3879 +v 12.7241 5.9883 4.7640 +v 12.9713 5.7816 6.0108 +v 12.5734 6.1216 4.1993 +v 12.5211 6.0071 4.3562 +v 12.5735 5.8876 4.7677 +v 12.7038 5.6131 6.0169 +v 12.6504 5.7216 5.3934 +v 12.4936 6.0634 4.2014 +v 12.3971 5.9796 4.3571 +v 12.3978 5.6759 5.3949 +v 12.3974 5.8497 4.7689 +v 12.3969 6.0467 4.2019 +v 12.2210 5.8878 4.7673 +v 12.3001 6.0635 4.2012 +v 12.2729 6.0072 4.3559 +v 12.0920 5.6134 6.0162 +v 12.1449 5.7218 5.3929 +v 12.2200 6.1217 4.1988 +v 12.0699 5.9886 4.7633 +v 11.9342 5.8724 5.3869 +v 12.1659 6.0776 4.3531 +v 11.8237 5.7821 6.0095 +v 12.1630 6.2036 4.1957 +v 11.9712 6.1430 4.7572 +v 12.0970 6.1869 4.3489 +v 11.6584 6.0564 5.9988 +v 11.7867 6.0878 5.3784 +v 12.1465 6.3026 4.1918 +v 11.9337 6.3235 4.7503 +v 11.7414 6.3466 5.3685 +v 12.0697 6.3140 4.3439 +v 12.1626 6.4017 4.1881 +v 11.9704 6.5039 4.7434 +v 12.0964 6.4411 4.3391 +v 11.7856 6.6053 5.3586 +v 11.8211 6.9569 5.9644 +v 12.2193 6.4835 4.1850 +v 11.9321 6.8205 5.3505 +v 12.0684 6.6583 4.7376 +v 12.1649 6.5504 4.3350 +v 12.2991 6.5416 4.1829 +v 12.2191 6.7590 4.7339 +v 12.2715 6.6207 4.3324 +v 12.0887 7.1254 5.9583 +v 12.1422 6.9710 5.3450 +v 12.0583 7.2328 6.5759 +v 13.7418 7.9004 8.5301 +v 12.8107 7.1208 12.7561 +v 12.8667 7.0691 12.7596 +v 13.7978 7.8488 8.5336 +v 12.7732 6.6547 8.1136 +v 12.7173 6.7063 8.1102 +v 13.6592 7.7757 8.0687 +v 13.7152 7.7241 8.0722 +v 12.7110 6.7301 8.5754 +v 12.6550 6.9439 12.7630 +v 13.7480 7.8920 8.2972 +v 13.7087 7.8371 8.1434 +v 12.7109 6.8923 12.7665 +v 12.7670 6.6785 8.5789 +v 13.8040 7.8404 8.3007 +v 13.7647 7.7854 8.1469 +v 13.8039 5.0815 8.6395 +v 12.8899 6.1765 12.7979 +v 12.8349 6.1239 12.7991 +v 13.7490 5.0289 8.6408 +v 12.6967 6.1703 8.1355 +v 12.7516 6.2229 8.1342 +v 13.7151 5.1682 8.1703 +v 13.6602 5.1156 8.1716 +v 12.7495 6.2357 8.6000 +v 12.7305 6.3509 12.7919 +v 13.8081 5.0717 8.4067 +v 13.7664 5.1138 8.2493 +v 12.6756 6.2983 12.7932 +v 12.6946 6.1831 8.6012 +v 13.7532 5.0191 8.4079 +v 13.7115 5.0612 8.2506 +v 10.9882 7.8501 8.5303 +v 11.9152 7.0583 12.7582 +v 11.9684 7.1127 12.7562 +v 11.0413 7.9046 8.5283 +v 12.1338 6.7710 8.1066 +v 12.0806 6.7165 8.1087 +v 11.0824 7.7365 8.0684 +v 11.1356 7.7910 8.0664 +v 12.0806 6.7338 8.5743 +v 12.0803 6.8896 12.7649 +v 10.9850 7.8447 8.2973 +v 11.0289 7.7941 8.1433 +v 12.1335 6.9440 12.7629 +v 12.1337 6.7883 8.5723 +v 11.0381 7.8992 8.2952 +v 11.0820 7.8486 8.1413 +v 11.0476 5.0283 8.6384 +v 11.9582 6.1242 12.7981 +v 11.9052 6.1791 12.7958 +v 10.9946 5.0831 8.6360 +v 12.0913 6.1741 8.1341 +v 12.1443 6.1192 8.1365 +v 11.1441 5.1066 8.1696 +v 11.0910 5.1615 8.1672 +v 12.1422 6.1364 8.6021 +v 12.1236 6.2917 12.7927 +v 11.0454 5.0164 8.4056 +v 11.0900 5.0551 8.2484 +v 12.0706 6.3466 12.7903 +v 12.0892 6.1913 8.5997 +v 10.9924 5.0713 8.4032 +v 11.0370 5.1100 8.2461 +v 16.2709 5.7040 -1.3243 +v 14.9353 5.7046 -1.3259 +v 14.9356 5.5568 -1.3189 +v 16.2712 5.5562 -1.3174 +v 17.6066 5.7034 -1.3228 +v 17.6069 5.5556 -1.3158 +v 19.0414 5.3222 -6.5438 +v 19.0409 5.5532 -6.5504 +v 13.5014 5.5557 -6.5568 +v 13.5019 5.3248 -6.5502 +v 16.2717 5.2986 -7.0404 +v 13.7000 5.3042 -6.9551 +v 13.8784 5.2997 -7.0432 +v 13.5399 5.3149 -6.7456 +v 19.0034 5.3124 -6.7392 +v 18.8434 5.3018 -6.9491 +v 18.6650 5.2975 -7.0376 +v 13.8779 5.5306 -7.0497 +v 16.2712 5.5295 -7.0470 +v 18.6645 5.5284 -7.0442 +v 18.8429 5.5328 -6.9557 +v 19.0029 5.5433 -6.7458 +v 13.5394 5.5459 -6.7522 +v 13.6995 5.5352 -6.9617 +v 0.2269 13.3863 31.3885 +v -0.0997 13.4045 31.3265 +v 0.2288 12.5244 31.1686 +v -0.0486 12.5173 31.0760 +v -1.4862 12.8035 30.3207 +v -1.1106 12.3927 30.2460 +v -0.7812 11.6895 30.1778 +v 0.2305 11.7174 31.0528 +v -0.0114 11.7139 30.9504 +v -0.6902 11.0482 30.1555 +v 0.2319 11.0843 31.0305 +v 0.0111 11.0804 30.9282 +v 0.0112 10.2634 30.9633 +v -0.6955 10.2399 30.1902 +v -0.0055 9.7964 31.0201 +v 0.2337 10.2668 31.0655 +v -0.7700 9.7631 30.2479 +v -0.0390 8.9977 31.1898 +v -1.0985 9.0615 30.3618 +v 0.2347 9.8003 31.1224 +v 0.2365 8.9980 31.2826 +v -1.5895 8.5082 30.4816 +v -0.0878 7.9897 31.4986 +v 0.2387 8.0061 31.5609 +v 0.1332 3.9657 -10.2149 +v 0.1316 4.7189 -9.8427 +v 0.1298 5.4105 -22.9166 +v 0.1305 5.1239 -22.8923 +v 0.1339 3.6539 -10.4971 +v 0.1307 5.0160 -22.8480 +v 0.1345 3.3646 -10.9138 +v 0.1309 4.9105 -22.7370 +v 0.1350 3.1503 -11.5205 +v 0.1311 4.8203 -22.5865 +v 0.1352 3.0405 -12.2649 +v 0.1313 4.7462 -22.3698 +v 0.3623 3.0404 -12.2647 +v 0.3621 3.1502 -11.5202 +v 0.3580 4.9104 -22.7368 +v 0.3577 5.0159 -22.8477 +v -2.6398 7.2518 -27.3115 +v -2.5316 7.3311 -27.3024 +v -1.8793 6.3348 -27.2634 +v -1.9875 6.2555 -27.2727 +v -1.2439 5.2790 -20.1848 +v -1.1357 5.3584 -20.1755 +v -1.2797 5.2308 -19.0879 +v -1.1715 5.3102 -19.0786 +v -2.3730 6.1314 -19.1114 +v -2.4812 6.0520 -19.1207 +v -2.8076 6.5017 -18.1865 +v -2.6995 6.5811 -18.1773 +v -3.4190 7.5790 -18.2285 +v -3.3108 7.6584 -18.2192 +v -3.2544 7.6033 -18.8508 +v -3.3625 7.5239 -18.8601 +v -2.8707 8.4268 -27.3568 +v -2.7625 8.5061 -27.3476 +v -3.4762 8.6887 -20.3180 +v -3.3680 8.7681 -20.3087 +v -3.1987 7.2767 -20.2635 +v -2.4148 6.0794 -20.2168 +v -3.1222 6.7624 -20.4052 +v -3.0185 6.7302 -20.3996 +v -3.1910 7.0576 -20.3962 +v -3.1125 7.1335 -20.3872 +v -3.1966 6.8434 -20.4066 +v -3.2218 6.9515 -20.4033 +v -2.9132 6.7554 -20.3911 +v -2.6936 6.7155 -22.4832 +v -2.8814 6.6705 -22.4982 +v -3.0665 6.7280 -22.5083 +v -2.8309 6.7092 -23.2437 +v -3.1994 6.8726 -22.5107 +v -3.0161 6.7667 -23.2538 +v -3.1490 6.9113 -23.2562 +v -2.6431 6.7542 -23.2287 +v -3.2444 7.0655 -22.5048 +v -3.1940 7.1042 -23.2503 +v -2.6173 7.1663 -26.9350 +v -2.5821 7.1748 -26.9301 +v -2.6769 7.2042 -26.9379 +v -2.6853 7.2404 -26.9351 +v -2.6520 7.1771 -26.9379 +v -3.1390 7.2937 -23.2377 +v -3.1895 7.2550 -22.4921 +v -2.6751 7.2760 -26.9302 +v -2.6488 7.3015 -26.9245 +v -2.9989 7.4291 -23.2216 +v -3.0493 7.3904 -22.4762 +v -8.3300 9.8140 14.3895 +v -8.3296 9.5957 8.5159 +v -8.3238 6.9626 12.0925 +v -8.3239 7.0519 14.4953 +v -8.0643 6.9625 12.0928 +v -8.0701 9.5955 8.5162 +v -8.0705 9.8138 14.3898 +v -8.0644 7.0518 14.4956 +v -8.1999 9.5956 8.5160 +v -8.1941 6.9625 12.0926 +v -8.1942 7.0578 14.6557 +v -8.2003 9.8199 14.5498 +v -12.0428 9.6321 9.4460 +v -12.0424 9.4137 3.5723 +v -12.0366 6.7807 7.1489 +v -12.0367 6.8700 9.5518 +v -11.7771 6.7806 7.1492 +v -11.7829 9.4136 3.5727 +v -11.7833 9.6320 9.4463 +v -11.7773 6.8699 9.5521 +v -11.9127 9.4137 3.5725 +v -11.9068 6.7806 7.1491 +v -11.9070 6.8759 9.7122 +v -11.9130 9.6380 9.6064 +v -15.3297 6.3806 0.6019 +v -13.9194 8.8903 0.5074 +v -13.9193 8.8824 0.2962 +v -15.3297 6.3727 0.3907 +v -13.7235 8.7746 0.5120 +v -15.1338 6.2648 0.6065 +v -15.1338 6.2570 0.3954 +v -13.7234 8.7667 0.3008 +v -15.2317 6.3272 0.7249 +v -13.8215 8.8369 0.6304 +v -15.9324 6.0299 -2.0509 +v -15.9388 8.9287 -2.1619 +v -15.9386 8.8294 -4.8317 +v -15.9323 5.9306 -4.7207 +v -15.6314 8.9285 -2.1615 +v -15.6251 6.0297 -2.0505 +v -15.6249 5.9305 -4.7203 +v -15.6313 8.8293 -4.8314 +v -15.7788 6.0378 -1.8371 +v -15.7851 8.9365 -1.9481 +v -16.3446 6.2654 0.6051 +v -17.7658 8.7765 0.5073 +v -17.7658 8.7686 0.2961 +v -16.3445 6.2575 0.3940 +v -17.5704 8.8919 0.5031 +v -16.1492 6.3809 0.6009 +v -16.1491 6.3731 0.3898 +v -17.5704 8.8841 0.2919 +v -16.2468 6.3277 0.7237 +v -17.6681 8.8387 0.6259 +v 0.2418 6.0887 -25.4835 +v -0.2301 6.1426 -25.4850 +v -0.6772 6.3007 -25.4916 +v -1.1026 6.5127 -25.5002 +v -1.4571 6.8337 -25.5129 +v -1.7713 7.1960 -25.5272 +v -1.9791 7.6311 -25.5441 +v -2.1343 8.0885 -25.5617 +v -2.1639 8.5715 -25.5803 +v -2.1365 9.0545 -25.5988 +v -1.9833 9.5118 -25.6161 +v -1.7773 9.9467 -25.6325 +v -1.4647 10.3087 -25.6461 +v -1.1116 10.6295 -25.6579 +v -0.6871 10.8411 -25.6655 +v -0.2407 10.9987 -25.6711 +v 0.2310 11.0276 -25.6716 +v -29.2529 8.0237 -0.9126 +v -29.1997 8.0012 -0.9117 +v -29.1466 8.0236 -0.9125 +v -29.1248 8.0779 -0.9146 +v -29.1468 8.1322 -0.9167 +v -29.2000 8.1547 -0.9176 +v -29.2531 8.1323 -0.9168 +v -29.2749 8.0780 -0.9147 +v -29.1995 7.9297 -2.8340 +v -29.1465 7.9521 -2.8348 +v -29.1247 8.0064 -2.8368 +v -29.1467 8.0607 -2.8389 +v -29.1999 8.0832 -2.8399 +v -29.2530 8.0608 -2.8391 +v -29.2748 8.0065 -2.8370 +v -29.2528 7.9522 -2.8349 +v -29.3504 7.7883 -4.5399 +v -29.1991 7.7242 -4.5373 +v -29.0481 7.7882 -4.5395 +v -28.9859 7.9429 -4.5454 +v -29.4133 7.9431 -4.5459 +v -29.0488 8.0976 -4.5514 +v -29.2001 8.1617 -4.5540 +v -29.3511 8.0978 -4.5517 +v -29.1988 7.5217 -9.9837 +v -29.0477 7.5857 -9.9860 +v -28.9856 7.7404 -9.9919 +v -29.0484 7.8951 -9.9979 +v -29.1997 7.9592 -10.0005 +v -29.3508 7.8953 -9.9982 +v -29.4129 7.7406 -9.9923 +v -29.3501 7.5858 -9.9864 +v -29.2978 7.9060 -2.8332 +v -29.1994 7.8643 -2.8315 +v -29.1012 7.9059 -2.8330 +v -29.0608 8.0064 -2.8368 +v -29.3386 8.0065 -2.8371 +v -29.1016 8.1070 -2.8407 +v -29.2000 8.1487 -2.8424 +v -29.2982 8.1070 -2.8409 +v -29.3385 7.9430 -4.5458 +v -29.2981 8.0436 -4.5496 +v -29.1999 8.0852 -4.5511 +v -29.1015 8.0435 -4.5494 +v -29.0607 7.9429 -4.5455 +v -29.1011 7.8424 -4.5416 +v -29.1993 7.8007 -4.5402 +v -29.2977 7.8425 -4.5419 +v 0.5533 13.4042 31.3272 +v 0.5062 12.5171 31.0767 +v 0.4725 11.7137 30.9510 +v 1.9425 12.8019 30.3247 +v 0.4527 11.0802 30.9287 +v 1.2424 11.6886 30.1802 +v 0.4562 10.2632 30.9638 +v 1.5686 12.3915 30.2491 +v 1.1542 11.0473 30.1576 +v 0.4749 9.7962 31.0207 +v 1.1630 10.2390 30.1923 +v 0.5120 8.9974 31.1904 +v 1.2396 9.7622 30.2502 +v 0.5652 7.9894 31.4994 +v 2.0646 8.5065 30.4859 +v 1.5712 9.0602 30.3649 +v 0.3587 4.7188 -9.8425 +v 0.3603 3.9656 -10.2147 +v 0.3569 5.4104 -22.9164 +v 0.3575 5.1238 -22.8920 +v 0.3610 3.6538 -10.4968 +v 0.3616 3.3645 -10.9135 +v 0.3582 4.8202 -22.5863 +v 0.3584 4.7461 -22.3695 +v 3.1183 7.2491 -27.3048 +v 2.4704 6.2534 -27.2675 +v 2.3618 6.3329 -27.2585 +v 3.0098 7.3286 -27.2959 +v 1.7313 5.2776 -20.1813 +v 1.6227 5.3571 -20.1723 +v 1.7673 5.2294 -19.0843 +v 1.6588 5.3089 -19.0753 +v 2.9653 6.0495 -19.1144 +v 2.8568 6.1290 -19.1054 +v 3.2897 6.4989 -18.1794 +v 3.1812 6.5784 -18.1704 +v 3.8964 7.5756 -18.2200 +v 3.7879 7.6551 -18.2110 +v 3.8401 7.5206 -18.8517 +v 3.7316 7.6001 -18.8427 +v 3.3440 8.4239 -27.3496 +v 3.2355 8.5034 -27.3406 +v 3.9486 8.6853 -20.3093 +v 3.8401 8.7648 -20.3003 +v 3.6774 7.2735 -20.2555 +v 2.8987 6.0769 -20.2106 +v 3.4995 6.7272 -20.3920 +v 3.6031 6.7594 -20.3974 +v 3.6706 7.0545 -20.3882 +v 3.5918 7.1304 -20.3794 +v 3.6771 6.8403 -20.3986 +v 3.7019 6.9483 -20.3952 +v 3.3941 6.7525 -20.3838 +v 3.1746 6.7128 -22.4763 +v 3.3626 6.6677 -22.4910 +v 3.3119 6.7064 -23.2366 +v 3.1239 6.7515 -23.2220 +v 3.0610 7.1722 -26.9235 +v 3.4969 6.7637 -23.2462 +v 3.0962 7.1637 -26.9284 +v 3.5475 6.7250 -22.5006 +v 3.1308 7.1744 -26.9311 +v 3.1556 7.2015 -26.9311 +v 3.6291 6.9082 -23.2483 +v 3.6798 6.8694 -22.5027 +v 3.6733 7.1010 -23.2423 +v 3.7239 7.0623 -22.4967 +v 3.1639 7.2377 -26.9283 +v 3.6175 7.2906 -23.2298 +v 3.6681 7.2519 -22.4841 +v 3.1535 7.2733 -26.9234 +v 3.4767 7.4261 -23.2141 +v 3.5274 7.3874 -22.4685 +v 3.1271 7.2988 -26.9178 +v 8.7988 9.8061 14.4095 +v 8.8048 7.0441 14.5153 +v 8.8050 6.9548 12.1124 +v 8.7991 9.5878 8.5358 +v 8.5455 6.9549 12.1121 +v 8.5454 7.0442 14.5149 +v 8.5393 9.8062 14.4091 +v 8.5397 9.5879 8.5355 +v 8.6694 9.5879 8.5357 +v 8.6753 6.9548 12.1123 +v 8.6751 7.0501 14.6753 +v 8.6691 9.8121 14.5695 +v 12.5122 9.6208 9.4746 +v 12.5183 6.8588 9.5804 +v 12.5184 6.7695 7.1775 +v 12.5126 9.4025 3.6009 +v 12.2589 6.7696 7.1772 +v 12.2588 6.8589 9.5801 +v 12.2527 9.6209 9.4743 +v 12.2531 9.4026 3.6006 +v 12.3828 9.4025 3.6008 +v 12.3887 6.7695 7.1774 +v 12.3885 6.8648 9.7404 +v 12.3824 9.6269 9.6346 +v 14.3917 8.8695 0.3292 +v 14.3917 8.8773 0.5403 +v 15.8131 6.3663 0.6382 +v 15.8131 6.3584 0.4270 +v 15.6177 6.2429 0.4312 +v 15.6177 6.2507 0.6424 +v 14.1963 8.7618 0.5445 +v 14.1963 8.7539 0.3334 +v 15.7153 6.3130 0.7609 +v 14.2940 8.8240 0.6631 +v 16.4110 8.8146 -4.7941 +v 16.4109 8.9139 -2.1242 +v 16.4172 6.0151 -2.0132 +v 16.4174 5.9158 -4.6830 +v 16.1100 5.9160 -4.6834 +v 16.1099 6.0152 -2.0135 +v 16.1035 8.9140 -2.1246 +v 16.1037 8.8147 -4.7944 +v 16.2635 6.0231 -1.7998 +v 16.2572 8.9219 -1.9108 +v 18.2387 8.7521 0.3381 +v 18.2387 8.7600 0.5493 +v 16.8284 6.2502 0.6438 +v 16.8284 6.2423 0.4326 +v 16.6325 6.3581 0.4279 +v 16.6325 6.3659 0.6391 +v 18.0428 8.8756 0.5446 +v 18.0428 8.8678 0.3334 +v 16.7304 6.3125 0.7621 +v 18.1407 8.8223 0.6676 +v 0.7135 6.1422 -25.4839 +v 2.2501 7.1941 -25.5225 +v 2.4560 7.6290 -25.5389 +v 2.6092 8.0864 -25.5562 +v 2.6367 8.5693 -25.5747 +v 2.6071 9.0523 -25.5932 +v 2.4519 9.5098 -25.6109 +v 2.2441 9.9449 -25.6279 +v 1.9298 10.3071 -25.6421 +v 1.5754 10.6282 -25.6548 +v 1.1499 10.8402 -25.6634 +v 0.7028 10.9983 -25.6700 +v 29.6227 7.9967 -0.8441 +v 29.6759 7.9742 -0.8432 +v 29.7290 7.9966 -0.8440 +v 29.7508 8.0509 -0.8460 +v 29.6007 8.0510 -0.8462 +v 29.7288 8.1052 -0.8481 +v 29.6756 8.1277 -0.8490 +v 29.6225 8.1053 -0.8482 +v 29.6228 7.9252 -2.7664 +v 29.6760 7.9027 -2.7654 +v 29.6008 7.9795 -2.7685 +v 29.6226 8.0338 -2.7705 +v 29.6757 8.0563 -2.7713 +v 29.7289 8.0338 -2.7704 +v 29.7509 7.9794 -2.7683 +v 29.7292 7.9252 -2.7662 +v 29.5251 7.7614 -4.4713 +v 29.6764 7.6972 -4.4687 +v 29.8275 7.7612 -4.4710 +v 29.8896 7.9159 -4.4768 +v 29.4623 7.9161 -4.4773 +v 29.8268 8.0706 -4.4828 +v 29.6755 8.1348 -4.4855 +v 29.5244 8.0708 -4.4832 +v 29.5254 7.5589 -9.9178 +v 29.6768 7.4947 -9.9152 +v 29.4626 7.7136 -9.9238 +v 29.5248 7.8683 -9.9297 +v 29.6758 7.9323 -9.9319 +v 29.8271 7.8681 -9.9293 +v 29.8900 7.7134 -9.9233 +v 29.8278 7.5587 -9.9175 +v 29.5777 7.8790 -2.7646 +v 29.6762 7.8373 -2.7629 +v 29.7744 7.8789 -2.7644 +v 29.8147 7.9794 -2.7682 +v 29.5369 7.9795 -2.7685 +v 29.7739 8.0800 -2.7721 +v 29.6755 8.1217 -2.7738 +v 29.5773 8.0801 -2.7723 +v 29.8148 7.9159 -4.4769 +v 29.7740 8.0165 -4.4808 +v 29.6756 8.0582 -4.4825 +v 29.5774 8.0166 -4.4811 +v 29.5371 7.9161 -4.4772 +v 29.5779 7.8155 -4.4733 +v 29.6763 7.7738 -4.4716 +v 29.7745 7.8154 -4.4731 +v 0.0909 11.3510 -32.4218 +v 0.0939 11.6678 -32.6951 +v 0.2295 11.6598 -32.9085 +v 0.0948 11.9447 -32.9121 +v 0.2289 11.9367 -33.1255 +v 0.0925 12.2412 -33.1026 +v 0.2282 12.2332 -33.3160 +v 0.0882 12.5782 -33.2976 +v -0.1231 11.6221 -13.4762 +v 0.2299 11.6567 -12.5414 +v -0.0189 12.8526 -13.5233 +v 0.2271 12.8873 -12.5885 +v 0.2044 23.0903 -31.6200 +v -0.0427 22.9798 -32.0920 +v 0.2033 23.5725 -32.4713 +v -0.0437 23.4433 -32.8851 +v 0.2024 24.0055 -33.2272 +v -0.0447 23.8550 -33.5960 +v 0.2014 24.4369 -34.0284 +v -0.0455 24.2140 -34.2515 +v 0.2004 24.8728 -34.9448 +v -0.0464 24.6189 -35.1493 +v 0.2001 25.0337 -35.5167 +v -0.0318 24.7924 -35.6371 +v 0.1998 25.1359 -35.9709 +v -0.0470 24.8869 -36.0418 +v 0.1997 25.2046 -37.0697 +v -0.0739 24.9850 -37.0884 +v 0.1996 25.2265 -37.9529 +v -0.1000 24.9942 -37.9443 +v 0.1998 25.1311 -39.0454 +v -0.1389 24.8862 -39.0097 +v -0.0853 24.8057 -39.7016 +v 0.2000 25.0223 -39.7631 +v -0.0851 24.7057 -40.1790 +v 0.2002 24.9219 -40.2539 +v -0.0389 24.5623 -40.7216 +v 0.2007 24.7233 -40.8077 +v -0.0402 24.3809 -41.1826 +v 0.2012 24.4847 -41.3333 +v 0.2014 24.3708 -41.4493 +v 0.3650 11.6677 -32.6948 +v 0.3694 11.3509 -32.4214 +v 0.3629 11.9445 -32.9118 +v 0.3639 12.2410 -33.1023 +v 0.3667 12.5781 -33.2973 +v 0.5829 11.6218 -13.4754 +v 0.4733 12.8524 -13.5227 +v 0.4520 22.9796 -32.0914 +v 0.4510 23.4430 -32.8845 +v 0.4501 23.8548 -33.5954 +v 0.4493 24.2138 -34.2509 +v 0.4484 24.6186 -35.1487 +v 0.4330 24.7922 -35.6366 +v 0.4478 24.8867 -36.0412 +v 0.4742 24.9847 -37.0877 +v 0.5003 24.9939 -37.9436 +v 0.5396 24.8859 -39.0089 +v 0.4863 24.8054 -39.7010 +v 0.4865 24.7055 -40.1784 +v 0.4409 24.5621 -40.7211 +v 0.4430 24.3806 -41.1820 +v -0.1523 24.4867 -39.7845 +v 0.5547 24.4864 -39.7836 +v -0.1523 24.5332 -39.0841 +v 0.5546 24.5329 -39.0833 +v -0.1523 24.5276 -38.9280 +v 0.5546 24.5273 -38.9272 +v -0.1522 24.4905 -38.7758 +v 0.5546 24.4902 -38.7750 +v -0.1521 24.4232 -38.6339 +v 0.5548 24.4229 -38.6331 +v -0.1518 24.3285 -38.5076 +v 0.5550 24.3281 -38.5068 +v -0.1516 24.2431 -38.4147 +v 0.5551 24.2428 -38.4139 +v -0.1514 24.1736 -38.3736 +v 0.5553 24.1733 -38.3728 +v -0.1512 24.0925 -38.3772 +v 0.5554 24.0921 -38.3763 +v -0.1511 24.0272 -38.4241 +v 0.5555 24.0268 -38.4233 +v -0.1510 23.9998 -38.4987 +v 0.5556 23.9994 -38.4979 +v -0.1510 23.9811 -38.8707 +v 0.5556 23.9808 -38.8699 +v -0.1509 23.9539 -38.9443 +v 0.5557 23.9536 -38.9435 +v -0.1508 23.8894 -38.9902 +v 0.5558 23.8890 -38.9893 +v -0.1506 23.8093 -38.9930 +v 0.5560 23.8090 -38.9922 +v -0.1504 23.7412 -38.9516 +v 0.5561 23.7409 -38.9508 +v -0.1482 22.8547 -37.9613 +v 0.5578 22.8544 -37.9605 +v -0.1254 12.5540 -28.4023 +v 0.5806 12.5537 -28.4015 +v -0.1252 12.4829 -28.3676 +v 0.5807 12.4826 -28.3668 +v -0.1251 12.4041 -28.3778 +v 0.5809 12.4038 -28.3770 +v -0.1249 12.3449 -28.4294 +v 0.5810 12.3445 -28.4285 +v -0.1249 12.3255 -28.5045 +v 0.5811 12.3252 -28.5037 +v 0.5577 22.9065 -36.5588 +v 0.5808 12.4926 -23.2007 +v 0.5824 11.7499 -23.1911 +v 0.5826 11.6241 -28.1471 +v -0.1234 11.6244 -28.1479 +v -0.1252 12.4930 -23.2015 +v -0.1235 11.7502 -23.1919 +v -0.1483 22.9068 -36.5596 +v -0.1200 12.4756 -28.4109 +v -0.1199 12.4231 -28.4177 +v -0.0761 12.4042 -28.3778 +v -0.1443 24.4420 -39.7811 +v -0.1033 24.4867 -39.7844 +v -0.1442 24.4885 -39.0835 +v -0.1034 24.5332 -39.0840 +v -0.1438 24.4833 -38.9338 +v -0.1033 24.5276 -38.9280 +v -0.1434 24.4482 -38.7899 +v -0.1032 24.4905 -38.7758 +v -0.1031 24.4232 -38.6339 +v -0.1430 24.3847 -38.6560 +v -0.1028 24.3284 -38.5075 +v -0.1427 24.2938 -38.5351 +v -0.1426 24.2146 -38.4484 +v -0.1026 24.2431 -38.4147 +v -0.1431 24.1626 -38.4159 +v -0.1024 24.1736 -38.3735 +v -0.1022 24.0924 -38.3771 +v -0.1447 24.1075 -38.4183 +v -0.1021 24.0271 -38.4241 +v -0.1468 24.0632 -38.4504 +v -0.1020 23.9997 -38.4987 +v -0.1483 24.0438 -38.5074 +v -0.1020 23.9811 -38.8707 +v -0.1483 24.0250 -38.8793 +v -0.1019 23.9539 -38.9442 +v -0.1466 23.9899 -38.9705 +v -0.1442 23.9041 -39.0317 +v -0.1018 23.8893 -38.9901 +v -0.1422 23.7979 -39.0351 +v -0.1016 23.8093 -38.9930 +v -0.1413 23.7123 -38.9847 +v -0.1014 23.7412 -38.9516 +v -0.1403 22.8531 -38.0051 +v -0.0992 22.8547 -37.9612 +v -0.1202 12.5284 -28.4382 +v -0.1199 12.3835 -28.4521 +v -0.0759 12.3451 -28.4294 +v -0.1198 12.3705 -28.5089 +v -0.0759 12.3258 -28.5045 +v 0.0709 22.7232 -41.4986 +v 0.2051 22.7131 -41.7654 +v 0.0168 23.0628 -41.6376 +v 0.2043 23.0528 -41.9044 +v 0.0160 23.4175 -41.6803 +v 0.2035 23.4075 -41.9471 +v 0.2027 23.7659 -41.8916 +v 0.0152 23.7759 -41.6248 +v 0.2021 24.0749 -41.7063 +v 0.0145 24.0849 -41.4396 +v 0.5757 12.4228 -28.4169 +v 0.5756 12.4753 -28.4101 +v 0.5317 12.4827 -28.3669 +v 0.5319 12.4039 -28.3771 +v 0.5469 24.4417 -39.7803 +v 0.5057 24.4864 -39.7837 +v 0.5466 24.4882 -39.0827 +v 0.5056 24.5329 -39.0833 +v 0.5463 24.4830 -38.9330 +v 0.5056 24.5273 -38.9272 +v 0.5460 24.4479 -38.7891 +v 0.5057 24.4902 -38.7751 +v 0.5058 24.4229 -38.6332 +v 0.5459 24.3843 -38.6552 +v 0.5060 24.3282 -38.5068 +v 0.5460 24.2935 -38.5343 +v 0.5462 24.2143 -38.4476 +v 0.5061 24.2428 -38.4140 +v 0.5469 24.1623 -38.4151 +v 0.5063 24.1733 -38.3728 +v 0.5064 24.0922 -38.3764 +v 0.5488 24.1072 -38.4175 +v 0.5066 24.0269 -38.4233 +v 0.5511 24.0628 -38.4496 +v 0.5066 23.9995 -38.4979 +v 0.5527 24.0434 -38.5066 +v 0.5067 23.9808 -38.8700 +v 0.5527 24.0247 -38.8785 +v 0.5067 23.9536 -38.9435 +v 0.5512 23.9895 -38.9697 +v 0.5492 23.9038 -39.0309 +v 0.5068 23.8890 -38.9894 +v 0.5476 23.7976 -39.0343 +v 0.5070 23.8090 -38.9923 +v 0.5472 23.7120 -38.9839 +v 0.5071 23.7409 -38.9508 +v 0.5500 22.8528 -38.0043 +v 0.5088 22.8544 -37.9606 +v 0.5755 12.5280 -28.4374 +v 0.5316 12.5537 -28.4016 +v 0.5758 12.3832 -28.4513 +v 0.5320 12.3448 -28.4287 +v 0.5758 12.3702 -28.5081 +v 0.5321 12.3256 -28.5037 +v 0.3391 22.7230 -41.4983 +v 0.3918 23.0626 -41.6372 +v 0.3910 23.4174 -41.6799 +v 0.3902 23.7758 -41.6244 +v 0.3896 24.0847 -41.4391 +v 0.2281 12.3255 -28.5041 +v 0.2329 18.1454 -37.9965 +v 0.4829 18.2309 -35.7261 +v 0.4823 18.4857 -35.7805 +v 0.3393 18.3771 -38.0053 +v 0.2446 18.3736 -38.1103 +v 0.4816 18.7406 -35.8349 +v 0.3388 18.6089 -38.0141 +v 9.8272 18.3439 -43.7580 +v 10.0544 18.1540 -43.9016 +v 9.6409 18.3371 -43.9444 +v 9.7796 18.1439 -44.1766 +v 9.4039 18.3348 -44.0082 +v 9.4043 18.1398 -44.2774 +v 9.0290 18.1436 -44.1774 +v 9.1306 18.3377 -43.9353 +v 8.6831 18.1511 -43.9819 +v 8.8309 18.3441 -43.7658 +v 8.2391 18.3568 -43.3719 +v 8.0813 18.1643 -43.5802 +v 8.5858 18.4504 -42.0696 +v 1.1234 18.7243 -35.8181 +v 1.1206 18.2226 -35.8103 +v 8.6134 18.0398 -41.9789 +v 1.1220 18.4735 -35.8143 +v 0.5459 18.8356 -29.8856 +v 0.4831 18.7002 -29.3340 +v 1.2292 18.6723 -30.0740 +v 1.0343 18.8120 -30.2629 +v 9.4574 18.3189 -39.4690 +v 9.2551 18.4556 -39.6495 +v 9.6363 18.4389 -40.0934 +v 9.8582 18.3014 -39.9357 +v 10.1291 18.2825 -40.4389 +v 9.8803 18.4219 -40.5465 +v 10.0255 18.4034 -41.0428 +v 10.2901 18.2620 -40.9893 +v 10.3525 18.2311 -41.8174 +v 10.0845 18.3743 -41.8256 +v 10.2991 18.1966 -42.7519 +v 10.0325 18.3692 -42.7356 +v 1.0350 18.5171 -30.2516 +v 0.5465 18.5235 -29.8737 +v 9.2558 18.1689 -39.6386 +v 9.6369 18.1522 -40.0824 +v 10.0333 18.0251 -42.7224 +v 10.0851 18.0876 -41.8146 +v 9.8810 18.1352 -40.5355 +v 10.0261 18.1167 -41.0319 +v 8.6231 18.2533 -41.9566 +v 9.9757 18.1785 -43.2168 +v -0.0534 18.4860 -35.7811 +v -0.0529 18.2311 -35.7267 +v 0.1974 18.1454 -37.9966 +v 0.0900 18.3772 -38.0056 +v 0.1847 18.3736 -38.1104 +v -0.0538 18.7408 -35.8356 +v 0.0895 18.6090 -38.0144 +v -9.3980 18.3527 -43.7804 +v -9.6243 18.1630 -43.9245 +v -9.2117 18.3457 -43.9663 +v -9.3496 18.1527 -44.1989 +v -8.9747 18.3433 -44.0296 +v -8.9743 18.1482 -44.2988 +v -8.5989 18.1517 -44.1979 +v -8.7014 18.3458 -43.9561 +v -8.2530 18.1589 -44.0016 +v -8.4017 18.3520 -43.7859 +v -7.8099 18.3642 -43.3905 +v -8.1571 18.4581 -42.0891 +v -7.6513 18.1715 -43.5985 +v -0.6956 18.7252 -35.8202 +v -8.1828 18.0475 -41.9984 +v -0.6906 18.2235 -35.8124 +v -0.6931 18.4743 -35.8164 +v -0.0549 18.7004 -29.3347 +v -0.1183 18.8359 -29.8864 +v -0.8010 18.6732 -30.0764 +v -0.6067 18.8127 -30.2648 +v -9.0280 18.3274 -39.4905 +v -8.8263 18.4639 -39.6706 +v -9.2074 18.4475 -40.1153 +v -9.4287 18.3102 -39.9582 +v -9.6996 18.2916 -40.4620 +v -9.4514 18.4308 -40.5690 +v -9.5965 18.4124 -41.0657 +v -9.8605 18.2712 -41.0127 +v -9.9227 18.2404 -41.8410 +v -9.6554 18.3833 -41.8486 +v -9.8692 18.2059 -42.7754 +v -9.6034 18.3782 -42.7584 +v -0.1176 18.5238 -29.8745 +v -0.6061 18.5178 -30.2535 +v -8.8257 18.1772 -39.6597 +v -9.2067 18.1608 -40.1043 +v -9.4507 18.1441 -40.5580 +v -9.6026 18.0341 -42.7452 +v -9.6548 18.0966 -41.8376 +v -9.5959 18.1257 -41.0547 +v -8.1934 18.2610 -41.9762 +v -9.5458 18.1875 -43.2395 +v -18.2499 9.0958 -9.7641 +v -18.2299 7.8005 -9.9272 +v -18.7009 7.6532 -9.4404 +v -18.6602 9.1953 -9.3632 +v -27.8004 7.5127 -21.2403 +v -27.8016 7.6022 -21.1076 +v -27.7794 7.2430 -21.0938 +v -27.7857 7.2892 -21.2230 +v -27.7888 7.3887 -21.3118 +v -20.4270 9.0194 -11.1367 +v -20.3984 7.4843 -11.1443 +v -26.6909 8.3960 -17.4246 +v -26.5962 6.8674 -17.3659 +v -27.6965 8.1844 -18.5322 +v -27.6551 6.8714 -18.5401 +v -8.5856 9.0714 -4.0305 +v -8.5951 9.2171 -4.2484 +v -4.2085 9.4563 -4.2526 +v -4.2006 9.3361 -4.0356 +v -8.6078 9.4306 -4.0443 +v -4.2228 9.6953 -4.0494 +v -3.8846 10.1002 19.2012 +v -3.8692 10.7580 20.0708 +v -8.5980 10.0032 14.4916 +v -8.6239 9.6184 14.0613 +v -16.7212 9.0993 5.4765 +v -16.7433 8.7342 5.0437 +v -3.8851 9.8335 18.4149 +v -19.1477 8.8483 2.7837 +v -19.1786 8.4772 2.3460 +v -8.5512 9.4723 13.6027 +v -20.4974 8.7139 1.3064 +v -16.6744 8.5747 4.5876 +v -20.5081 8.3683 0.8874 +v -19.1008 8.3237 1.8949 +v -29.8939 7.7785 -8.9784 +v -3.9051 9.3698 16.3669 +v -8.5503 9.0422 11.9961 +v -29.8301 7.4056 -9.3583 +v -16.6379 8.3476 3.1193 +v -30.3211 7.7022 -9.5641 +v -20.4260 8.1866 0.4244 +v -18.9096 8.1302 0.6204 +v -30.1907 7.3473 -9.8529 +v -29.6507 7.2321 -9.8127 +v -3.9256 9.0950 14.3196 +v -30.6682 7.6239 -10.2032 +v -8.5500 8.9241 10.3908 +v -16.6015 8.1950 1.6513 +v -20.3927 7.9406 -1.0017 +v -18.7184 7.9566 -0.6540 +v -29.9829 7.1970 -10.2000 +v -29.2687 7.1121 -10.7557 +v -3.9675 9.0131 10.2272 +v -8.5499 8.8126 7.1809 +v -16.5292 8.0915 -1.2838 +v -20.3595 7.7433 -2.4277 +v -18.3366 7.9079 -3.2014 +v -4.0516 8.9580 2.0429 +v -8.5497 8.6636 0.7496 +v -16.4938 7.8729 -7.2248 +v -28.8867 6.9920 -11.6987 +v -20.2939 7.7089 -5.2779 +v -17.5730 7.7655 -8.3081 +v -16.5403 8.2947 -11.6118 +v -30.5418 7.0949 -12.0123 +v -17.0691 8.2431 -12.1157 +v -28.1231 6.9130 -13.5840 +v -29.3487 6.9659 -14.1959 +v -30.4532 7.3143 -10.3185 +v -30.1570 7.1748 -10.5063 +v -29.1620 6.9169 -14.8366 +v -30.6235 7.0555 -12.9352 +v -30.6367 6.9653 -15.3381 +v -30.6769 7.0085 -14.1099 +v -30.5966 6.9222 -16.5663 +v -30.4011 7.1317 -11.2573 +v -30.9038 7.2012 -12.0632 +v -30.9680 7.1190 -14.1924 +v -30.9227 7.0880 -15.4185 +v -30.9568 7.1688 -12.9941 +v -30.3976 6.9413 -17.9396 +v -30.8587 7.0498 -16.6451 +v -31.1773 7.4005 -14.2545 +v -31.1075 7.3631 -15.4902 +v -31.1754 7.4359 -13.0574 +v -30.1968 6.9695 -18.8061 +v -31.1272 7.4751 -12.1387 +v -30.6587 7.0600 -18.0338 +v -29.8379 7.0138 -19.6755 +v -30.7649 7.2259 -11.3133 +v -31.0377 7.3257 -16.7260 +v -29.3465 7.0454 -20.4152 +v -30.2932 7.1536 -10.8488 +v -30.6485 7.2690 -10.8835 +v -30.9069 7.5381 -10.9660 +v -28.6150 7.1321 -20.9216 +v -30.4306 7.0766 -18.9055 +v -30.8324 7.2873 -18.1166 +v -31.0134 7.5005 -11.3816 +v -30.0463 7.1045 -19.7924 +v -30.5792 7.2785 -18.9746 +v -30.1684 7.2794 -19.8307 +v -29.4706 7.1609 -20.5605 +v -28.6966 7.2074 -21.0293 +v -29.5429 7.3449 -20.6200 +v -28.7838 7.3767 -21.0959 +v -16.5498 8.4403 -11.8298 +v -17.0786 8.3887 -12.3337 +v -17.0913 8.6022 -12.1295 +v -16.5626 8.6539 -11.6256 +v -8.6443 10.1922 0.6910 +v -4.1463 10.4866 1.9842 +v -8.6449 10.5214 7.1230 +v -4.2637 11.0589 10.1706 +v -8.6450 10.5942 10.3468 +v -4.1218 11.2451 14.2717 +v -8.6449 10.5683 11.9584 +v -4.0507 11.2778 16.3220 +v -8.6444 10.3573 13.5692 +v -3.9793 11.1497 18.3717 +v -8.6217 10.2574 14.0245 +v -3.9593 11.0466 19.1607 +v -16.7435 9.3155 5.0358 +v -16.7677 9.4470 4.5541 +v -16.7320 9.6448 3.0806 +v -19.1695 9.0707 2.3526 +v -19.1941 9.1960 1.8614 +v -16.6963 9.7680 1.6068 +v -19.0035 9.3352 0.5814 +v -20.5077 8.9222 0.8783 +v -16.6238 9.6202 -1.3425 +v -20.5192 9.0589 0.3909 +v -18.8130 9.4547 -0.6988 +v -20.5082 9.1718 -1.0635 +v -16.5885 9.4015 -7.2835 +v -18.4313 9.4365 -3.2601 +v -29.8188 7.9863 -9.4135 +v -29.7439 8.1044 -9.8462 +v -20.4972 9.2359 -2.5182 +v -29.3625 8.2290 -10.7952 +v -17.6676 9.2941 -8.3668 +v -20.4747 9.2287 -5.4280 +v -30.2024 7.9246 -9.8888 +v -30.0762 8.0693 -10.2335 +v -28.9810 8.3535 -11.7441 +v -30.2503 8.0471 -10.5398 +v -30.3879 8.0256 -10.8874 +v -30.4881 7.8668 -10.3491 +v -28.2178 8.4417 -13.6427 +v -30.4944 8.0040 -11.2908 +v -30.7016 7.7939 -10.9346 +v -30.6351 7.9672 -12.0458 +v -29.3963 8.1431 -14.1498 +v -30.7909 7.7607 -11.3425 +v -30.7168 7.9277 -12.9688 +v -30.9217 7.7250 -12.0997 +v -29.1571 8.1957 -14.7664 +v -30.7701 7.8808 -14.1434 +v -30.7300 7.8376 -15.3716 +v -30.9629 7.7081 -13.0161 +v -30.9845 7.6722 -14.2017 +v -30.6898 7.7945 -16.5997 +v -30.9668 7.6279 -15.4410 +v -30.4908 7.7639 -17.9797 +v -30.8935 7.5940 -16.6669 +v -30.2898 7.7395 -18.8505 +v -29.9305 7.6753 -19.7188 +v -30.7142 7.5418 -18.0653 +v -29.4392 7.6500 -20.4528 +v -30.4672 7.5344 -18.9245 +v -30.0619 7.5195 -19.7811 +v -28.7002 7.6181 -20.9322 +v -29.4945 7.5317 -20.5417 +v -28.7545 7.5376 -21.0329 +v -26.9357 7.4437 -21.2594 +v -26.9263 7.2980 -21.0414 +v -26.1094 7.5099 -20.8599 +v -26.0999 7.3643 -20.6420 +v -25.5621 7.5604 -20.4190 +v -25.5526 7.4147 -20.2010 +v -26.9485 7.6573 -21.0552 +v -26.1221 7.7235 -20.6557 +v -25.5748 7.7739 -20.2148 +v -8.6645 10.3510 13.5691 +v -8.6181 10.0032 14.4916 +v -8.6184 10.1673 14.4853 +v -8.6201 10.3565 14.4505 +v -8.6242 10.5274 14.3638 +v -8.6302 10.6655 14.2326 +v -8.6424 10.7587 14.0510 +v -8.6526 10.8439 13.7974 +v -8.6599 10.9069 13.5375 +v -8.6644 10.9474 13.2734 +v -8.6658 10.9768 13.0071 +v -8.6648 10.4313 7.1226 +v -8.6659 11.0162 12.3362 +v -8.6660 11.0467 11.6652 +v -8.6661 11.0526 10.3231 +v -8.6661 11.0318 7.6387 +v -8.6660 11.0129 6.5608 +v -8.6659 10.9464 3.8838 +v -8.6657 10.8138 1.2066 +v -8.6643 10.1922 0.6910 +v -8.6637 10.7690 0.6714 +v -8.6616 10.7043 0.1361 +v -8.6279 9.4306 -4.0443 +v -8.6474 10.4449 -1.7151 +v -8.6280 9.5126 -4.0474 +v -8.6288 9.7225 -4.0183 +v -8.6300 9.9079 -3.9186 +v -8.6330 10.1165 -3.5666 +v -8.6315 10.0451 -3.7613 +v -8.5783 10.1673 14.4853 +v -8.5780 10.0032 14.4916 +v -8.6244 10.3510 13.5692 +v -8.5800 10.3565 14.4506 +v -8.5841 10.5274 14.3639 +v -8.5902 10.6654 14.2327 +v -8.6024 10.7587 14.0510 +v -8.6125 10.8438 13.7974 +v -8.6199 10.9068 13.5375 +v -8.6243 10.9474 13.2735 +v -8.6258 10.9768 13.0071 +v -8.6247 10.4313 7.1227 +v -8.6259 11.0162 12.3362 +v -8.6260 11.0467 11.6653 +v -8.6260 11.0526 10.3231 +v -8.6260 11.0318 7.6387 +v -8.6260 11.0129 6.5608 +v -8.6243 10.1922 0.6910 +v -8.6259 10.9463 3.8839 +v -8.6257 10.8138 1.2067 +v -8.6236 10.7690 0.6715 +v -8.6215 10.7043 0.1362 +v -8.5878 9.4306 -4.0442 +v -8.6073 10.4449 -1.7151 +v -8.5880 9.5126 -4.0474 +v -8.5887 9.7224 -4.0182 +v -8.5899 9.9079 -3.9186 +v -8.5930 10.1165 -3.5666 +v -8.5914 10.0451 -3.7613 +v -16.5425 8.6539 -11.6256 +v -16.5826 8.6539 -11.6256 +v -16.5427 8.7360 -11.6287 +v -16.5828 8.7360 -11.6287 +v -16.5435 8.9457 -11.5995 +v -16.5835 8.9457 -11.5996 +v -16.5446 9.1312 -11.4999 +v -16.5847 9.1312 -11.4999 +v -16.5461 9.2684 -11.3426 +v -16.5862 9.2684 -11.3426 +v -16.5477 9.3398 -11.1479 +v -16.5878 9.3398 -11.1480 +v -16.5567 9.6482 -9.4930 +v -16.5968 9.6482 -9.4931 +v -16.5657 9.9136 -7.8383 +v -16.6057 9.9136 -7.8384 +v -16.5687 9.9857 -7.3048 +v -16.6088 9.9857 -7.3048 +v -16.5698 10.0232 -6.7677 +v -16.6098 10.0232 -6.7678 +v -16.5875 10.1291 -4.3359 +v -16.6275 10.1291 -4.3360 +v -16.6051 10.2018 -1.9043 +v -16.6452 10.2018 -1.9043 +v -16.6074 10.2098 -1.6349 +v -16.6474 10.2098 -1.6350 +v -16.6113 10.2137 -1.3654 +v -16.6513 10.2137 -1.3655 +v -16.6143 10.2136 -1.0959 +v -16.6543 10.2136 -1.0960 +v -16.6178 10.2094 -0.8264 +v -16.6578 10.2094 -0.8265 +v -16.6411 10.2025 0.3783 +v -16.6812 10.2025 0.3783 +v -16.6771 10.1723 1.5829 +v -16.7172 10.1723 1.5829 +v -16.7131 10.1272 2.7875 +v -16.7531 10.1272 2.7875 +v -16.7355 10.0610 3.9920 +v -16.7755 10.0610 3.9919 +v -16.7387 10.0434 4.2584 +v -16.7788 10.0434 4.2583 +v -16.7393 10.0029 4.5224 +v -16.7794 10.0029 4.5224 +v -16.7758 9.9399 4.7823 +v -16.7357 9.9399 4.7823 +v -16.7656 9.8547 5.0360 +v -16.7255 9.8547 5.0360 +v -16.7535 9.7614 5.2175 +v -16.7134 9.7614 5.2176 +v -16.7474 9.6235 5.3487 +v -16.7073 9.6235 5.3488 +v -16.7433 9.4526 5.4354 +v -16.7032 9.4525 5.4355 +v -16.7416 9.2634 5.4702 +v -16.7016 9.2634 5.4702 +v -16.7012 9.0993 5.4765 +v -16.7412 9.0993 5.4765 +v -16.6085 9.3927 -7.2836 +v -16.6438 9.5938 -1.3426 +v -16.7877 9.4470 4.5541 +v -16.5684 9.3927 -7.2835 +v -16.6038 9.5938 -1.3426 +v -16.6039 9.6435 -1.3445 +v -16.7476 9.4470 4.5541 +v -20.5178 8.8780 1.3001 +v -20.5174 8.7139 1.3064 +v -20.4773 8.7138 1.3065 +v -20.4777 8.8780 1.3002 +v -20.4794 9.0671 1.2654 +v -20.5195 9.0672 1.2654 +v -20.4835 9.2380 1.1787 +v -20.5235 9.2381 1.1787 +v -20.4896 9.3760 1.0475 +v -20.5296 9.3760 1.0475 +v -20.5278 9.4666 0.8727 +v -20.4878 9.4665 0.8728 +v -20.5273 9.5517 0.6190 +v -20.4872 9.5517 0.6191 +v -20.4946 9.6148 0.3592 +v -20.5346 9.6148 0.3592 +v -20.4990 9.6552 0.0952 +v -20.5391 9.6553 0.0951 +v -20.5005 9.6729 -0.1713 +v -20.5406 9.6729 -0.1713 +v -20.5295 9.7363 -1.3563 +v -20.4895 9.7363 -1.3563 +v -20.5184 9.7850 -2.5415 +v -20.4784 9.7850 -2.5414 +v -20.5072 9.8119 -3.7267 +v -20.4672 9.8118 -3.7266 +v -20.4960 9.8179 -4.9119 +v -20.4560 9.8179 -4.9119 +v -20.4961 9.8222 -5.4510 +v -20.4560 9.8222 -5.4509 +v -20.4960 9.8103 -5.9898 +v -20.4560 9.8103 -5.9898 +v -20.4341 9.7682 -8.3243 +v -20.4741 9.7683 -8.3244 +v -20.4121 9.7054 -10.6590 +v -20.4522 9.7054 -10.6590 +v -20.4505 9.6340 -10.8537 +v -20.4105 9.6340 -10.8537 +v -20.4491 9.4967 -11.0110 +v -20.4090 9.4967 -11.0110 +v -20.4479 9.3113 -11.1107 +v -20.4078 9.3112 -11.1106 +v -20.4472 9.1015 -11.1398 +v -20.4071 9.1015 -11.1398 +v -20.4470 9.0195 -11.1367 +v -20.4069 9.0194 -11.1366 +v -20.4948 9.2287 -5.4280 +v -20.5392 9.0589 0.3909 +v -20.4547 9.2287 -5.4279 +v -20.4992 9.0589 0.3909 +v -14.4488 5.5703 -1.3531 +v -14.4491 5.7180 -1.3601 +v -15.7847 5.7187 -1.3616 +v -15.7844 5.5709 -1.3547 +v -17.1203 5.7193 -1.3632 +v -17.1200 5.5715 -1.3562 +v -18.5542 5.5704 -6.5941 +v -18.5537 5.3395 -6.5876 +v -13.0148 5.5679 -6.5877 +v -13.0142 5.3369 -6.5811 +v -13.2122 5.3165 -6.9864 +v -15.7839 5.3133 -7.0777 +v -13.3907 5.3122 -7.0749 +v -13.0522 5.3271 -6.7765 +v -18.1772 5.3143 -7.0805 +v -18.3557 5.3189 -6.9924 +v -18.5157 5.3296 -6.7829 +v -13.3912 5.5431 -7.0815 +v -15.7845 5.5442 -7.0843 +v -18.1777 5.5453 -7.0871 +v -18.5162 5.5605 -6.7895 +v -18.3562 5.5499 -6.9990 +v -13.2127 5.5475 -6.9930 +v -13.0527 5.5580 -6.7831 +v -8.1658 7.1193 24.3282 +v -8.1658 7.1142 24.6907 +v -8.0786 7.0938 24.6916 +v -8.0703 7.1009 24.3291 +v -7.9899 7.0447 24.3313 +v -8.0027 7.0451 24.6935 +v -7.9905 7.2796 23.8027 +v -7.9550 6.9676 24.6966 +v -7.9350 6.9626 24.3345 +v -7.8411 7.1781 23.8067 +v -7.9349 6.8783 24.7000 +v -7.7416 7.0253 23.8127 +v -8.1662 7.3160 23.8011 +v -7.9168 6.8649 24.3383 +v -7.7058 6.8455 23.8196 +v -7.9546 6.7891 24.7034 +v -7.7104 7.2928 23.2829 +v -7.5707 7.0785 23.2912 +v -7.9200 7.4354 23.2771 +v -7.5207 6.8261 23.3009 +v -7.7408 6.6658 23.8265 +v -7.5696 6.5738 23.3106 +v -8.1666 7.4862 23.2749 +v -7.8589 7.5640 22.6499 +v -7.4226 7.1181 22.6675 +v -7.5920 7.3911 22.6568 +v -7.4212 6.4878 22.6916 +v -7.3527 6.8029 22.6796 +v -8.1670 7.6350 22.6468 +v -7.5488 7.4122 22.0336 +v -8.1671 7.6745 22.0229 +v -7.8321 7.5982 22.0207 +v -7.3542 7.1145 22.0447 +v -7.2915 6.7798 22.0582 +v -7.8301 7.1985 10.6783 +v -7.5481 6.9903 10.6841 +v -7.3572 6.4284 22.0710 +v -7.3535 6.7116 10.6951 +v -7.2908 6.3579 10.7087 +v -8.1663 7.2525 10.6734 +v -7.8601 7.0912 10.0606 +v -7.5918 6.9225 10.0674 +v -7.4265 6.6481 10.0781 +v -7.3523 6.0231 10.7115 +v -7.3528 6.3349 10.0902 +v -8.1662 7.1660 10.0574 +v -7.7022 6.7862 9.4532 +v -8.1658 6.9827 9.4452 +v -7.9129 6.9368 9.4472 +v -7.5094 6.3120 9.4716 +v -7.4251 6.0218 10.1021 +v -7.5547 6.5708 9.4616 +v -7.9889 6.7249 8.8359 +v -7.7391 6.4696 8.8460 +v -7.8379 6.6241 8.8400 +v -8.1653 6.7629 8.8343 +v -7.5536 6.0533 9.4815 +v -7.7016 6.2891 8.8530 +v -7.7383 6.1087 8.8598 +v -7.9338 6.5162 8.4371 +v -7.5453 5.7257 10.7326 +v -8.1650 6.6142 8.4331 +v -7.8649 6.4068 8.4414 +v -8.0408 6.5866 8.4343 +v -7.8377 6.2798 8.4463 +v -7.5892 5.7477 10.1124 +v -7.8643 6.1527 8.4512 +v -7.7001 5.8381 9.4895 +v -8.1648 6.5244 8.2839 +v -8.0680 6.5076 8.2847 +v -7.9879 6.4494 8.2870 +v -7.9328 6.0434 8.4553 +v -7.9309 6.3675 8.2902 +v -7.9143 6.2685 8.2940 +v -7.8364 5.9543 8.8656 +v -7.9305 6.1694 8.2978 +v -7.9871 6.0876 8.3009 +v -8.0395 5.9731 8.4578 +v -7.9870 5.8536 8.8693 +v -7.9102 5.6876 9.4950 +v -7.8568 5.5791 10.1186 +v -8.0670 6.0295 8.3030 +v -7.9345 6.7672 24.3420 +v -8.1635 5.9456 8.4587 +v -8.1628 5.6419 9.4965 +v -7.8396 6.5130 23.8322 +v -8.1632 5.8158 8.8706 +v -7.8264 5.5366 10.7351 +v -8.1625 5.5046 10.1210 +v -7.7084 6.3597 23.3186 +v -8.1637 6.0128 8.3035 +v -8.3396 5.8538 8.8689 +v -8.2604 6.0296 8.3028 +v -8.2877 5.9732 8.4575 +v -8.4686 5.5794 10.1178 +v -8.1624 5.4641 10.7419 +v -8.4156 5.6879 9.4945 +v -7.5894 6.2150 22.7018 +v -8.4987 5.5369 10.7337 +v -8.3405 6.0878 8.3005 +v -8.4906 5.9546 8.8649 +v -8.6263 5.8385 9.4885 +v -8.3946 6.0436 8.4547 +v -8.7368 5.7482 10.1111 +v -8.4994 5.9398 22.0864 +v -8.7806 5.7263 10.7312 +v -8.3975 6.1697 8.2973 +v -8.5894 6.1091 8.8588 +v -8.4636 6.1530 8.4505 +v -8.9021 6.0225 10.1004 +v -8.7738 6.0539 9.4800 +v -8.7813 6.1482 22.0806 +v -8.9752 6.0239 10.7175 +v -8.4141 6.2687 8.2934 +v -8.6268 6.2896 8.8519 +v -8.8192 6.3126 9.4701 +v -8.4908 6.2801 8.4456 +v -7.5460 6.1476 22.0821 +v -8.9758 6.3357 10.0883 +v -8.9759 6.4270 22.0725 +v -9.0379 6.3587 10.7066 +v -8.3979 6.3677 8.2897 +v -8.5902 6.4700 8.8450 +v -8.4641 6.4071 8.4407 +v -8.9035 6.6488 10.0764 +v -8.7750 6.5713 9.4602 +v -9.0386 6.7806 22.0561 +v -8.9768 6.7128 10.7039 +v -8.3413 6.4495 8.2866 +v -8.4921 6.6244 8.8392 +v -8.6284 6.7866 9.4521 +v -8.3956 6.5164 8.4366 +v -7.8271 5.9393 22.0831 +v -8.7834 6.9909 10.6827 +v -8.7394 6.9230 10.0661 +v -8.2615 6.5077 8.2845 +v -8.3415 6.7250 8.8355 +v -8.2890 6.5867 8.4340 +v -8.1631 5.8860 22.0914 +v -8.7841 7.4128 22.0322 +v -8.4719 7.0915 10.0599 +v -8.9774 7.1151 22.0395 +v -8.4184 6.9370 9.4466 +v -8.9076 6.4885 22.6899 +v -8.4713 6.0426 22.7074 +v -8.5021 7.1982 10.6705 +v -8.7382 6.2155 22.7005 +v -8.4989 7.5925 22.0287 +v -8.9775 6.8037 22.6777 +v -8.0020 6.7116 24.7063 +v -8.7408 7.3916 22.6555 +v -8.9090 7.1188 22.6657 +v -8.4746 7.5643 22.6492 +v -8.6219 7.2932 23.2818 +v -8.7607 7.0790 23.2898 +v -8.8096 6.8267 23.2995 +v -8.4130 7.4357 23.2766 +v -8.4907 7.1784 23.8060 +v -8.6245 6.8459 23.8186 +v -8.5895 7.0257 23.8117 +v -8.7596 6.5744 23.3092 +v -8.3418 7.2798 23.8022 +v -8.3959 6.9628 24.3340 +v -8.4136 6.8651 24.3377 +v -8.3413 7.0449 24.3309 +v -8.5887 6.6661 23.8255 +v -8.3955 6.7674 24.3414 +v -8.2612 7.1009 24.3288 +v -8.6199 6.3601 23.3175 +v -8.3284 7.0452 24.6932 +v -8.2529 7.0939 24.6914 +v -8.3758 6.9678 24.6961 +v -8.3956 6.8785 24.6995 +v -8.4893 6.5133 23.8314 +v -8.3405 6.6853 24.3446 +v -8.3754 6.7893 24.7029 +v -8.3277 6.7118 24.7059 +v -8.2602 6.6291 24.3468 +v -8.2519 6.6631 24.7079 +v -8.3398 6.4118 23.8355 +v -8.4103 6.2174 23.3232 +v -8.1647 6.6107 24.3477 +v -8.1642 6.3754 23.8371 +v -8.1637 6.1666 23.3254 +v -8.1647 6.6427 24.7088 +v -8.1633 5.9717 22.7105 +v -8.0692 6.6290 24.3471 +v -7.9174 6.2172 23.3238 +v -7.9886 6.4117 23.8359 +v -7.8556 6.0423 22.7082 +v -8.0776 6.6630 24.7081 +v -7.9892 6.6851 24.3450 +v -8.6376 7.0356 16.8601 +v -8.5819 7.0872 16.8568 +v -9.5165 7.8677 12.6286 +v -9.5723 7.8161 12.6319 +v -9.4334 7.7429 12.1673 +v -8.4868 6.6727 12.2110 +v -8.5425 6.6211 12.2144 +v -9.4891 7.6913 12.1707 +v -8.4253 6.9102 16.8640 +v -8.4806 6.6964 12.6763 +v -9.5227 7.8593 12.3957 +v -9.4832 7.8043 12.2420 +v -8.5364 6.6448 12.6797 +v -8.4811 6.8586 16.8674 +v -9.5784 7.8077 12.3990 +v -9.5389 7.7527 12.2453 +v -8.6017 6.0904 16.8997 +v -8.6569 6.1430 16.8983 +v -9.5662 5.0489 12.7379 +v -9.5111 4.9962 12.7392 +v -9.4778 5.1355 12.2689 +v -8.5190 6.1892 12.2350 +v -8.4638 6.1366 12.2364 +v -9.4227 5.0828 12.2702 +v -8.4983 6.3173 16.8928 +v -8.5169 6.2021 12.7008 +v -9.5704 5.0391 12.5050 +v -9.5289 5.0811 12.3477 +v -8.4618 6.1494 12.7021 +v -8.4431 6.2646 16.8941 +v -9.5152 4.9864 12.5064 +v -9.4738 5.0284 12.3491 +v -7.7395 7.0784 16.8588 +v -7.6861 7.0239 16.8609 +v -6.7627 7.8148 12.6352 +v -6.8160 7.8694 12.6330 +v -6.8564 7.7014 12.1731 +v -7.8502 6.6823 12.2110 +v -7.9035 6.7368 12.2089 +v -6.9098 7.7559 12.1709 +v -7.8504 6.8553 16.8672 +v -7.8502 6.6996 12.6766 +v -6.7595 7.8095 12.4021 +v -6.8031 7.7589 12.2481 +v -7.9036 6.7541 12.6745 +v -7.9038 6.9099 16.8651 +v -6.8128 7.8640 12.4000 +v -6.8565 7.8135 12.2460 +v -7.6722 6.1447 16.8985 +v -7.7250 6.0899 16.9008 +v -6.8097 4.9931 12.7432 +v -6.7570 5.0479 12.7409 +v -6.9065 5.0715 12.2741 +v -7.9112 6.0850 12.2387 +v -7.8584 6.1399 12.2364 +v -6.8538 5.1263 12.2719 +v -7.8911 6.2575 16.8949 +v -7.9092 6.1023 12.7043 +v -6.8075 4.9812 12.5104 +v -6.8523 5.0200 12.3531 +v -7.8564 6.1571 12.7021 +v -7.8384 6.3123 16.8927 +v -6.7547 5.0360 12.5081 +v -6.7995 5.0748 12.3508 +v -11.9141 7.1644 20.1983 +v -11.9141 7.1593 20.5608 +v -11.8269 7.1389 20.5617 +v -11.8186 7.1459 20.1992 +v -11.7383 7.0898 20.2014 +v -11.7511 7.0902 20.5636 +v -11.7389 7.3247 19.6728 +v -11.7034 7.0127 20.5667 +v -11.6833 7.0077 20.2046 +v -11.5894 7.2232 19.6768 +v -11.6833 6.9234 20.5701 +v -11.4900 7.0704 19.6828 +v -11.9146 7.3611 19.6712 +v -11.6651 6.9100 20.2084 +v -11.4542 6.8906 19.6897 +v -11.7030 6.8342 20.5735 +v -11.4588 7.3379 19.1529 +v -11.3190 7.1235 19.1613 +v -11.6684 7.4805 19.1472 +v -11.2690 6.8712 19.1710 +v -11.4892 6.7108 19.6965 +v -11.3179 6.6189 19.1806 +v -11.9150 7.5313 19.1450 +v -11.6073 7.6091 18.5200 +v -11.1709 7.1632 18.5376 +v -11.3403 7.4362 18.5269 +v -11.1695 6.5329 18.5617 +v -11.1011 6.8480 18.5497 +v -11.9153 7.6801 18.5169 +v -11.2972 7.4573 17.9037 +v -11.9154 7.7196 17.8930 +v -11.5804 7.6433 17.8908 +v -11.1025 7.1596 17.9148 +v -11.0399 6.8249 17.9283 +v -11.5785 7.2436 6.5484 +v -11.2965 7.0354 6.5542 +v -11.1055 6.4735 17.9411 +v -11.1018 6.7567 6.5652 +v -11.0392 6.4030 6.5788 +v -11.9147 7.2976 6.5435 +v -11.6084 7.1363 5.9307 +v -11.3402 6.9675 5.9375 +v -11.1748 6.6932 5.9482 +v -11.1006 6.0682 6.5816 +v -11.1012 6.3800 5.9603 +v -11.9145 7.2111 5.9275 +v -11.4506 6.8313 5.3233 +v -11.9141 7.0278 5.3153 +v -11.6613 6.9819 5.3173 +v -11.2577 6.3571 5.3417 +v -11.1735 6.0669 5.9722 +v -11.3031 6.6159 5.3317 +v -11.7373 6.7700 4.7060 +v -11.4874 6.5147 4.7161 +v -11.5862 6.6691 4.7101 +v -11.9137 6.8080 4.7044 +v -11.3019 6.0984 5.3516 +v -11.4500 6.3342 4.7230 +v -11.4867 6.1538 4.7299 +v -11.6822 6.5613 4.3072 +v -11.2937 5.7708 6.6027 +v -11.9133 6.6593 4.3032 +v -11.6132 6.4519 4.3115 +v -11.7892 6.6317 4.3044 +v -11.5860 6.3249 4.3164 +v -11.3376 5.7927 5.9825 +v -11.6127 6.1978 4.3212 +v -11.4485 5.8831 5.3596 +v -11.9131 6.5694 4.1540 +v -11.8164 6.5527 4.1548 +v -11.7363 6.4945 4.1571 +v -11.6811 6.0885 4.3254 +v -11.6792 6.4126 4.1603 +v -11.6627 6.3135 4.1641 +v -11.5847 5.9994 4.7357 +v -11.6788 6.2145 4.1679 +v -11.7355 6.1327 4.1710 +v -11.7878 6.0182 4.3279 +v -11.7354 5.8987 4.7394 +v -11.6585 5.7327 5.3651 +v -11.6051 5.6242 5.9886 +v -11.8153 6.0746 4.1731 +v -11.6829 6.8123 20.2121 +v -11.9119 5.9907 4.3288 +v -11.9112 5.6870 5.3666 +v -11.5880 6.5581 19.7023 +v -11.9116 5.8609 4.7406 +v -11.5747 5.5817 6.6052 +v -11.9109 5.5497 5.9911 +v -11.4567 6.4048 19.1887 +v -11.9120 6.0579 4.1736 +v -12.0879 5.8989 4.7390 +v -12.0088 6.0746 4.1729 +v -12.0360 6.0183 4.3276 +v -12.2169 5.6245 5.9879 +v -11.9108 5.5092 6.6120 +v -12.1640 5.7330 5.3646 +v -11.3377 6.2601 18.5719 +v -12.2471 5.5820 6.6038 +v -12.0888 6.1329 4.1706 +v -12.2390 5.9997 4.7350 +v -12.3747 5.8836 5.3586 +v -12.1430 6.0887 4.3248 +v -12.4852 5.7933 5.9812 +v -12.2478 5.9849 17.9565 +v -12.5289 5.7714 6.6013 +v -12.1459 6.2147 4.1673 +v -12.3377 6.1542 4.7289 +v -12.2119 6.1981 4.3206 +v -12.6505 6.0676 5.9705 +v -12.5222 6.0990 5.3501 +v -12.5297 6.1933 17.9507 +v -12.7236 6.0690 6.5876 +v -12.1624 6.3138 4.1635 +v -12.3752 6.3346 4.7220 +v -12.5675 6.3577 5.3402 +v -12.2391 6.3252 4.3156 +v -11.2944 6.1927 17.9522 +v -12.7241 6.3808 5.9584 +v -12.7243 6.4720 17.9426 +v -12.7862 6.4038 6.5767 +v -12.1463 6.4128 4.1598 +v -12.3385 6.5151 4.7151 +v -12.2125 6.4522 4.3108 +v -12.6519 6.6939 5.9465 +v -12.5233 6.6164 5.3303 +v -12.7869 6.8257 17.9262 +v -12.7251 6.7579 6.5740 +v -12.0896 6.4946 4.1567 +v -12.2404 6.6694 4.7093 +v -12.3767 6.8317 5.3222 +v -12.1440 6.5615 4.3067 +v -11.5754 5.9844 17.9532 +v -12.5317 7.0360 6.5528 +v -12.4877 6.9681 5.9361 +v -12.0098 6.5528 4.1546 +v -12.0898 6.7701 4.7056 +v -12.0374 6.6318 4.3041 +v -11.9115 5.9310 17.9615 +v -12.5324 7.4579 17.9023 +v -12.2202 7.1366 5.9300 +v -12.7258 7.1602 17.9095 +v -12.1667 6.9821 5.3167 +v -12.6560 6.5336 18.5600 +v -12.2197 6.0877 18.5775 +v -12.2505 7.2433 6.5405 +v -12.4866 6.2606 18.5706 +v -12.2472 7.6376 17.8988 +v -12.7258 6.8488 18.5478 +v -11.7504 6.7567 20.5764 +v -12.4892 7.4367 18.5256 +v -12.6574 7.1639 18.5358 +v -12.2230 7.6094 18.5193 +v -12.3703 7.3383 19.1519 +v -12.5091 7.1241 19.1599 +v -12.5580 6.8718 19.1695 +v -12.1613 7.4808 19.1467 +v -12.2391 7.2235 19.6761 +v -12.3729 6.8910 19.6887 +v -12.3379 7.0707 19.6818 +v -12.5080 6.6195 19.1793 +v -12.0901 7.3249 19.6723 +v -12.1442 7.0079 20.2041 +v -12.1620 6.9102 20.2078 +v -12.0896 7.0900 20.2010 +v -12.3371 6.7112 19.6956 +v -12.1438 6.8125 20.2115 +v -12.0096 7.1460 20.1989 +v -12.3682 6.4052 19.1876 +v -12.0768 7.0903 20.5633 +v -12.0012 7.1390 20.5615 +v -12.1242 7.0128 20.5662 +v -12.1439 6.9236 20.5696 +v -12.2376 6.5584 19.7015 +v -12.0888 6.7304 20.2147 +v -12.1238 6.8344 20.5730 +v -12.0761 6.7569 20.5760 +v -12.0085 6.6742 20.2169 +v -12.0003 6.7082 20.5780 +v -12.0882 6.4569 19.7056 +v -12.1586 6.2625 19.1933 +v -11.9130 6.6558 20.2178 +v -11.9125 6.4205 19.7072 +v -11.9121 6.2117 19.1955 +v -11.9131 6.6878 20.5789 +v -11.9117 6.0168 18.5806 +v -11.8176 6.6741 20.2172 +v -11.6657 6.2623 19.1939 +v -11.7370 6.4567 19.7060 +v -11.6040 6.0874 18.5782 +v -11.8260 6.7081 20.5782 +v -11.7375 6.7302 20.2151 +v -12.3860 7.0807 12.7302 +v -12.3302 7.1323 12.7269 +v -13.2649 7.9128 8.4987 +v -13.3206 7.8612 8.5020 +v -13.1817 7.7880 8.0374 +v -12.2351 6.7178 8.0811 +v -12.2909 6.6662 8.0845 +v -13.2375 7.7364 8.0408 +v -12.1737 6.9553 12.7341 +v -12.2290 6.7415 8.5464 +v -13.2710 7.9044 8.2658 +v -13.2315 7.8494 8.1121 +v -12.2847 6.6899 8.5498 +v -12.2294 6.9037 12.7375 +v -13.3268 7.8528 8.2691 +v -13.2873 7.7978 8.1154 +v -12.3500 6.1354 12.7698 +v -12.4052 6.1881 12.7684 +v -13.3146 5.0940 8.6080 +v -13.2595 5.0413 8.6093 +v -13.2262 5.1806 8.1390 +v -12.2674 6.2343 8.1051 +v -12.2122 6.1817 8.1065 +v -13.1710 5.1279 8.1403 +v -12.2466 6.3624 12.7628 +v -12.2653 6.2471 8.5709 +v -13.3187 5.0841 8.3751 +v -13.2773 5.1261 8.2178 +v -12.2101 6.1945 8.5722 +v -12.1915 6.3097 12.7642 +v -13.2636 5.0315 8.3765 +v -13.2221 5.0735 8.2192 +v -11.4878 7.1235 12.7289 +v -11.4344 7.0690 12.7310 +v -10.5111 7.8599 8.5053 +v -10.5644 7.9145 8.5031 +v -10.6048 7.7465 8.0432 +v -11.5985 6.7273 8.0811 +v -11.6519 6.7819 8.0789 +v -10.6582 7.8010 8.0410 +v -11.5988 6.9004 12.7373 +v -11.5985 6.7446 8.5467 +v -10.5078 7.8546 8.2722 +v -10.5515 7.8040 8.1182 +v -11.6519 6.7992 8.5446 +v -11.6522 6.9549 12.7352 +v -10.5612 7.9091 8.2701 +v -10.6048 7.8586 8.1160 +v -11.4206 6.1898 12.7686 +v -11.4733 6.1350 12.7709 +v -10.5581 5.0382 8.6133 +v -10.5053 5.0930 8.6110 +v -10.6549 5.1166 8.1442 +v -11.6595 6.1301 8.1088 +v -11.6068 6.1849 8.1065 +v -10.6021 5.1714 8.1420 +v -11.6395 6.3026 12.7650 +v -11.6575 6.1473 8.5744 +v -10.5558 5.0263 8.3805 +v -10.6006 5.0650 8.2232 +v -11.6047 6.2022 8.5721 +v -11.5867 6.3574 12.7628 +v -10.5031 5.0811 8.3782 +v -10.5479 5.1199 8.2209 +v -4.4068 17.1612 10.9439 +v -4.4115 17.1459 10.8536 +v -4.4360 17.1330 10.8553 +v -4.4481 17.1390 10.9449 +v -4.4465 17.1261 11.0170 +v -4.3928 17.1563 11.0153 +v -4.4243 17.0847 11.0742 +v -4.3667 17.1155 11.0731 +v -2.7207 14.0295 13.5542 +v -2.8271 13.9589 13.5649 +v -2.2926 13.7759 14.2675 +v -2.8868 13.4966 14.2751 +v -4.4251 17.1133 10.8183 +v -4.4045 17.1256 10.8178 +v -4.3848 17.0842 10.8221 +v -4.4030 17.0724 10.8228 +v -2.7471 13.9481 12.9310 +v -2.8063 13.9032 12.9174 +v -2.4734 13.6294 12.7194 +v -2.7938 13.4831 12.7154 +v 2.9520 13.9627 28.2707 +v 2.9304 13.9307 27.9692 +v 3.0164 13.9560 28.2705 +v 3.0319 13.9204 27.9695 +v 2.9380 13.9507 27.6144 +v 3.0357 13.9411 27.6146 +v 2.9644 14.0062 27.1903 +v 3.1230 13.9894 27.9770 +v 3.0368 13.9952 27.1460 +v 3.1242 14.0075 27.6223 +v 3.0951 14.0403 27.1509 +v 3.0607 14.0601 26.5471 +v 3.1031 14.1164 27.1536 +v 3.0768 14.0003 28.2768 +v 3.0643 14.1061 26.5135 +v 3.0541 14.1801 27.1542 +v 3.1338 14.1119 27.6288 +v 3.0318 14.1492 26.4992 +v 2.9836 14.1559 26.5140 +v 3.1341 14.0990 27.9836 +v 3.0667 14.1968 27.6310 +v 2.9821 14.1905 27.1553 +v 2.9437 14.1273 26.5466 +v 3.0840 14.0708 28.2821 +v 3.0650 14.1877 27.9858 +v 2.9190 14.1397 27.1517 +v 2.9122 14.0635 27.1473 +v 3.0384 14.1299 28.2837 +v 2.9685 14.2123 27.6309 +v 2.8827 14.1435 27.6233 +v 2.8735 14.0289 27.6166 +v 2.9616 14.2030 27.9856 +v 2.9723 14.1396 28.2839 +v 2.8723 14.1309 27.9781 +v 2.9136 14.0923 28.2776 +v 2.8629 14.0124 27.9714 +v 2.9084 14.0144 28.2723 +v 3.0107 14.0266 26.5921 +v 2.8368 13.5788 26.4920 +v 2.7727 13.6346 26.4282 +v 2.9772 14.0475 26.5421 +v 2.7056 13.6843 26.5036 +v 2.9410 14.0663 26.5924 +v 2.9013 14.0128 27.1443 +v 2.6584 13.6018 27.3345 +v 2.9518 13.9832 27.2014 +v 2.7318 13.5390 27.4006 +v 3.0028 14.0942 26.5219 +v 2.8558 13.3860 27.3520 +v 2.8854 13.3865 27.1464 +v 2.8751 13.4290 27.3225 +v 2.9014 13.4327 27.1441 +v 2.8958 13.4030 26.9270 +v 2.9139 13.4533 26.9250 +v 2.8981 13.5325 26.4508 +v 2.8697 13.4807 26.4033 +v 2.8461 13.5882 26.3096 +v 2.8156 13.5376 26.2645 +v 2.7801 13.6460 26.2325 +v 2.7436 13.6017 26.1860 +v 2.6665 13.6596 26.2764 +v 2.7088 13.6982 26.3200 +v 2.6072 13.6961 26.4197 +v 2.6502 13.7327 26.4651 +v 2.5511 13.6881 26.9219 +v 2.5916 13.7154 26.9197 +v 2.5830 13.6900 27.1385 +v 2.5454 13.6661 27.1411 +v 2.5916 13.6578 27.3044 +v 2.5570 13.6307 27.3326 +v 2.6480 13.5949 27.4285 +v 2.6144 13.5677 27.4556 +v 2.6989 13.5526 27.4698 +v 2.6685 13.5185 27.4991 +v 2.7267 13.4714 27.5026 +v 2.7567 13.5068 27.4728 +v 2.7841 13.4302 27.4689 +v 2.8041 13.4707 27.4418 +v 2.8091 13.4835 27.3133 +v 3.0054 13.9562 27.1416 +v 2.9310 5.9653 17.2789 +v 2.8671 5.9656 17.2601 +v 2.9055 5.9869 17.2168 +v 2.8093 6.0263 18.3567 +v 2.8749 6.0243 18.3449 +v 3.3483 6.2833 17.2837 +v 2.6491 6.1586 18.4420 +v 2.8431 6.0525 18.4012 +v 3.2922 6.3424 18.3497 +v 2.7175 6.0867 17.1440 +v 3.2740 6.3809 18.4061 +v 3.3364 6.3153 17.2217 +v 3.3667 6.3464 17.2658 +v 2.7524 6.1095 17.1035 +v 2.6798 6.1859 18.4833 +v 3.1947 6.5783 18.4891 +v 3.3089 6.4071 18.3624 +v 3.2980 6.5292 17.1506 +v 3.2673 6.5019 17.1094 +v 3.2296 6.6011 18.4487 +v 3.1534 6.7114 20.9473 +v 3.1753 6.6672 20.3784 +v 3.2551 6.7324 20.3766 +v 3.2341 6.7774 20.9456 +v 3.2358 6.5212 20.3353 +v 3.3784 6.6377 20.3319 +v 3.3529 6.6939 21.0176 +v 3.2087 6.5761 21.0209 +v 2.2786 7.2121 25.3183 +v 2.3303 7.2394 25.3168 +v 2.4102 7.2174 25.3178 +v 2.4688 7.1576 25.3207 +v 2.4903 7.0759 25.3247 +v 2.4691 6.9942 25.3289 +v 2.4108 6.9344 25.3320 +v 2.3310 6.9126 25.3333 +v 2.2707 6.9462 25.3318 +v 2.2497 7.1546 25.3212 +v 2.2335 7.0128 25.3284 +v 2.2331 7.0930 25.3243 +v 2.5108 7.2807 27.1575 +v 2.5591 7.0972 27.1649 +v 2.5155 7.3179 28.0620 +v 2.5661 7.1115 28.0770 +v 2.4619 7.3621 29.0346 +v 2.5142 7.1620 29.0512 +v 2.5114 6.9138 27.1724 +v 2.3965 7.3631 29.4153 +v 2.4435 7.1829 29.4302 +v 2.4624 6.9615 29.0537 +v 2.5095 6.9065 28.0822 +v 2.3968 7.0022 29.4326 +v 2.3805 6.7797 27.1776 +v 2.3204 6.8142 29.0416 +v 2.3607 6.7579 28.0760 +v 2.2690 6.8695 29.4220 +v 2.2015 6.7307 27.1795 +v 2.1264 6.7596 29.0183 +v 2.1597 6.7055 28.0604 +v 2.0941 6.8204 29.4012 +v 2.0249 6.8054 27.1833 +v 1.9322 6.8125 28.9902 +v 1.9643 6.7755 28.0408 +v 1.9192 6.8679 29.3757 +v 1.8231 6.9247 28.0202 +v 1.9280 6.9321 27.1767 +v 1.7900 6.9585 28.9643 +v 1.7911 6.9995 29.3523 +v 1.8791 7.1161 27.1682 +v 1.7736 7.1265 28.0055 +v 1.7378 7.1586 28.9481 +v 1.7440 7.1798 29.3373 +v 1.8290 7.3269 28.0001 +v 1.9215 7.2798 27.1609 +v 1.7896 7.3591 28.9455 +v 1.7907 7.3604 29.3350 +v 1.9315 7.5064 28.9574 +v 1.9744 7.4723 28.0059 +v 1.9186 7.4932 29.3456 +v 2.0384 7.3998 27.1556 +v 2.1255 7.5610 28.9807 +v 2.1715 7.5284 28.0204 +v 2.0934 7.5423 29.3666 +v 2.1999 7.4646 27.1499 +v 2.3197 7.5082 29.0091 +v 2.2684 7.4947 29.3922 +v 2.3711 7.4706 28.0412 +v 2.3794 7.4153 27.1520 +v 1.9336 6.7261 24.0350 +v 1.9746 6.7477 24.0341 +v 2.0380 6.7303 24.0346 +v 2.0845 6.6828 24.0363 +v 2.1015 6.6179 24.0386 +v 2.0847 6.5531 24.0410 +v 2.0384 6.5057 24.0428 +v 1.9751 6.4884 24.0436 +v 1.9273 6.5151 24.0427 +v 1.9107 6.6805 24.0367 +v 1.8978 6.5679 24.0408 +v 1.8975 6.6316 24.0385 +v 2.1181 6.7592 25.4945 +v 2.1563 6.6135 25.4983 +v 2.1219 6.7782 26.2123 +v 2.1620 6.6142 26.2219 +v 2.0795 6.8020 26.9843 +v 2.1209 6.6431 26.9952 +v 2.1184 6.4680 25.5022 +v 2.0276 6.7984 27.2862 +v 2.0649 6.6553 27.2961 +v 2.0797 6.4840 26.9950 +v 2.1170 6.4516 26.2238 +v 2.0278 6.5119 27.2959 +v 2.0145 6.3616 25.5050 +v 1.9671 6.3674 26.9837 +v 1.9989 6.3339 26.2173 +v 1.9263 6.4068 27.2861 +v 1.8726 6.3228 25.5059 +v 1.8132 6.3244 26.9647 +v 1.8394 6.2926 26.2043 +v 1.7876 6.3682 27.2691 +v 1.7325 6.3820 25.5098 +v 1.6592 6.3667 26.9430 +v 1.6845 6.3484 26.1895 +v 1.6489 6.4062 27.2494 +v 1.5726 6.4670 26.1749 +v 1.6556 6.4826 25.5060 +v 1.5464 6.4828 26.9241 +v 1.5473 6.5109 27.2323 +v 1.6169 6.6286 25.5012 +v 1.5333 6.6272 26.1654 +v 1.5050 6.6418 26.9134 +v 1.5100 6.6541 27.2224 +v 1.5773 6.7862 26.1634 +v 1.6506 6.7586 25.4972 +v 1.5462 6.8008 26.9136 +v 1.5471 6.7973 27.2225 +v 1.6588 6.9175 26.9246 +v 1.6927 6.9014 26.1696 +v 1.6486 6.9024 27.2324 +v 1.7433 6.8537 25.4944 +v 1.8127 6.9604 26.9437 +v 1.8491 6.9457 26.1817 +v 1.7873 6.9411 27.2496 +v 1.8715 6.9052 25.4905 +v 1.9667 6.9181 26.9657 +v 1.9260 6.9030 27.2693 +v 2.0073 6.8995 26.1976 +v 2.0138 6.8660 25.4916 +v -1.6383 7.3435 32.1147 +v -1.7495 7.2338 30.3959 +v -1.6069 7.2240 32.1164 +v -1.7181 7.1143 30.3978 +v -1.5220 7.1362 32.1100 +v -1.6331 7.0266 30.3911 +v -1.4062 7.1037 32.0964 +v -1.5174 6.9940 30.3778 +v -1.2908 7.1350 32.0798 +v -1.4019 7.0253 30.3610 +v -1.2065 7.2219 32.0643 +v -1.3176 7.1122 30.3457 +v -1.1759 7.3410 32.0544 +v -1.2871 7.2314 30.3356 +v -1.3185 7.3508 30.3336 +v -1.2073 7.4605 32.0524 +v -1.4035 7.4386 30.3403 +v -1.2923 7.5483 32.0591 +v -1.5192 7.4712 30.3539 +v -1.4080 7.5808 32.0725 +v -1.6347 7.4398 30.3705 +v -1.5235 7.5495 32.0893 +v -1.7190 7.3530 30.3860 +v -1.6078 7.4626 32.1046 +v -1.4934 7.4958 32.0879 +v -1.4270 7.4821 31.7175 +v -1.4078 7.5191 32.0756 +v -1.4894 7.4176 31.7289 +v -1.5559 7.4315 32.0994 +v -1.5121 7.3294 31.7363 +v -1.5785 7.3431 32.1068 +v -1.5552 7.2546 32.1083 +v -1.4888 7.2408 31.7378 +v -1.4922 7.1896 32.1031 +v -1.4258 7.1757 31.7327 +v -1.4065 7.1654 32.0932 +v -1.3400 7.1516 31.7227 +v -1.3414 7.5053 31.7052 +v -1.3220 7.4949 32.0657 +v -1.2556 7.4811 31.6952 +v -1.2590 7.4299 32.0608 +v -1.1926 7.4160 31.6903 +v -1.2358 7.3413 32.0621 +v -1.1693 7.3275 31.6916 +v -1.1920 7.2392 31.6989 +v -1.2584 7.2531 32.0695 +v -1.2544 7.1748 31.7105 +v -1.3209 7.1886 32.0809 +v -2.3479 6.1521 17.5650 +v -2.3029 6.3254 17.5555 +v -2.1471 6.0736 16.3823 +v -2.3021 5.9788 17.5731 +v -2.1778 5.8518 17.5777 +v -2.0084 5.8051 17.5777 +v -2.1792 6.4521 17.5473 +v -2.0099 6.4983 17.5426 +v -1.8697 6.4515 17.5427 +v -1.7852 6.3187 17.5482 +v -1.7624 6.1865 17.5546 +v -1.7830 6.0322 17.5628 +v -1.8710 5.8936 17.5712 +v -1.8801 7.2252 30.3123 +v -1.8339 7.4054 30.2974 +v -2.1809 7.1726 26.5263 +v -2.2585 6.8680 26.5575 +v -2.3264 6.9473 24.3173 +v -2.4108 6.6185 24.3402 +v -1.8326 7.0444 30.3147 +v -2.3894 6.7703 22.1089 +v -2.4753 6.4385 22.1221 +v -2.1764 6.5631 26.5774 +v -2.4005 6.6221 20.4530 +v -2.3231 6.2898 24.3575 +v -2.4821 6.3066 20.4662 +v -2.3875 6.1069 22.1358 +v -2.3897 6.5012 18.7986 +v -1.7042 6.9116 30.3044 +v -1.9567 6.3398 26.5808 +v -2.4617 6.2236 18.8109 +v -2.0868 6.0492 24.3645 +v -2.3987 5.9913 20.4795 +v -2.3883 5.9460 18.8229 +v -2.1498 5.8642 22.1459 +v -1.5291 6.8623 30.2841 +v -1.6582 6.2579 26.5673 +v -1.8258 5.7753 22.1501 +v -1.7654 5.9610 24.3597 +v -2.1727 5.7605 20.4889 +v -2.1893 5.7429 18.8310 +v -1.8645 5.6759 20.4923 +v -1.3544 6.9097 30.2590 +v -1.4549 6.0672 24.3554 +v -1.5217 5.8994 22.1682 +v -1.3610 6.3393 26.5404 +v -1.5810 5.8000 20.5053 +v -1.9181 5.6684 18.8334 +v -1.6747 5.7843 18.8404 +v -1.2269 7.0412 30.2359 +v -1.2406 6.3251 24.3256 +v -1.1446 6.5622 26.5068 +v -1.3960 6.0612 20.4835 +v -1.3228 6.1756 22.1440 +v -1.0671 6.8670 26.4760 +v -1.1608 6.6352 24.3030 +v -1.2458 6.4716 22.1310 +v -1.5164 6.0125 18.8223 +v -1.3279 6.3425 20.4707 +v -1.1806 7.2214 30.2210 +v -1.4620 6.2600 18.8107 +v -1.2434 6.9455 24.2858 +v -1.3238 6.7677 22.1176 +v -1.1492 7.1718 26.4560 +v -1.3974 6.6182 20.4581 +v -1.2281 7.4021 30.2185 +v -1.4664 7.1728 24.2786 +v -1.5181 6.4963 18.7998 +v -1.3688 7.3951 26.4522 +v -1.5361 6.9848 22.1075 +v -1.5924 6.8297 20.4485 +v -1.3566 7.5350 30.2288 +v -1.7715 7.2759 24.2798 +v -1.6673 7.4771 26.4658 +v -1.8287 7.1023 22.0964 +v -1.6822 6.6878 18.7912 +v -1.8673 6.9377 20.4394 +v -1.5316 7.5842 30.2494 +v -1.9646 7.3956 26.4932 +v -2.0924 7.1879 24.2954 +v -2.1528 7.0134 22.0995 +v -1.9206 6.7787 18.7848 +v -2.1754 6.8531 20.4432 +v -1.7063 7.5368 30.2746 +v -2.1917 6.7044 18.7890 +v -2.5572 6.5014 19.0284 +v -2.4636 6.4251 19.0347 +v -2.6435 6.4148 19.5157 +v -2.5513 6.3537 19.5220 +v -2.5781 6.3408 19.7698 +v -2.6742 6.4010 19.7626 +v -2.6386 6.3749 21.0739 +v -2.7811 6.4649 21.0627 +v -2.6152 6.4280 21.2562 +v -2.7738 6.5311 21.2409 +v -2.4330 6.7558 21.7906 +v -2.6679 6.9473 21.7746 +v -2.6191 6.6028 19.5823 +v -2.7138 6.8620 21.0742 +v -2.4170 6.6204 21.1610 +v -2.4186 6.4728 19.6108 +v -4.6355 5.9965 17.1988 +v -4.6274 5.9915 17.1962 +v -4.6320 5.9764 17.1955 +v -4.6463 5.9853 17.2001 +v -4.6509 5.9702 17.1995 +v -4.6428 5.9652 17.1969 +v -4.4574 5.9516 18.2519 +v -4.4695 5.9163 18.2842 +v -4.4829 5.9767 18.2582 +v -4.4975 5.8989 18.3479 +v -4.5242 5.9245 18.3459 +v -4.5155 5.9607 18.2873 +v -3.3499 7.2475 18.5886 +v -3.2304 7.1203 18.5853 +v -3.4215 7.0043 18.7745 +v -3.4682 7.0516 18.7757 +v -4.4444 6.0088 18.3254 +v -4.4167 5.9818 18.3234 +v -3.1669 7.0775 18.8709 +v -3.2009 7.1330 19.1590 +v -3.4112 7.0088 18.9747 +v -3.3983 6.9883 18.8741 +v -4.4600 5.9276 18.4175 +v -4.4270 5.9449 18.3701 +v -3.3816 7.3236 18.8782 +v -3.4812 7.0720 18.8763 +v -4.4760 5.9927 18.3736 +v -3.4580 7.0560 18.9760 +v -4.4876 5.9546 18.4195 +v -3.3129 7.2658 19.1620 +v 3.5931 13.9385 15.9896 +v 3.3546 13.6523 15.9669 +v 3.5908 13.9401 16.0001 +v 3.3477 13.6571 15.9986 +v 3.5931 13.9384 16.0106 +v 3.3546 13.6519 16.0303 +v 3.5994 13.9338 16.0182 +v 3.3737 13.6381 16.0534 +v 3.6080 13.9277 16.0210 +v 3.3998 13.6195 16.0619 +v 3.6166 13.9216 16.0182 +v 3.4258 13.6011 16.0533 +v 3.6229 13.9172 16.0105 +v 3.4449 13.5877 16.0301 +v 3.6252 13.9156 16.0000 +v 3.4519 13.5830 15.9984 +v 3.6229 13.9173 15.9896 +v 3.4449 13.5882 15.9667 +v 3.6166 13.9219 15.9819 +v 3.4258 13.6019 15.9436 +v 3.6080 13.9280 15.9792 +v 3.3998 13.6205 15.9351 +v 3.5994 13.9341 15.9820 +v 3.3737 13.6389 15.9437 +v -2.9008 13.4894 14.2588 +v -2.8542 13.9362 13.5246 +v -4.4371 17.0759 11.0554 +v -2.8098 13.4763 12.7317 +v -4.4505 17.1066 11.0104 +v -2.8212 13.8955 12.9464 +v -4.4451 17.1125 10.8610 +v -4.4169 17.0644 10.8415 +v -4.4552 17.1195 10.9445 +v -4.4341 17.0978 10.8364 +v -2.4564 13.6378 12.7359 +v -2.7318 13.9621 12.9599 +v -4.3706 17.0948 10.8398 +v -2.6837 14.0501 13.5105 +v -4.3859 17.1265 10.8347 +v -4.3533 17.1210 11.0536 +v -4.3892 17.1424 10.8581 +v -2.2795 13.7814 14.2510 +v -4.3847 17.1581 10.9425 +v -4.3742 17.1481 11.0099 +v 0.2301 11.3860 -28.6263 +v 0.2303 11.2988 -28.6765 +v -0.2374 11.2646 -28.6808 +v -0.2544 11.3508 -28.6277 +v -0.8306 11.0831 -28.6694 +v -0.8627 11.1639 -28.6191 +v -1.3208 10.9114 -28.6116 +v -1.2728 10.8380 -28.6651 +v -1.7291 10.4680 -28.6469 +v -1.7881 10.5303 -28.5959 +v -2.0642 10.0493 -28.6348 +v -2.1360 10.0990 -28.5804 +v -2.3284 9.5471 -28.6123 +v -2.4053 9.5817 -28.5603 +v -2.4912 9.0185 -28.5946 +v -2.5758 9.0373 -28.5389 +v -2.6203 8.4626 -28.5176 +v -2.5371 8.4606 -28.5709 +v -2.4887 7.9025 -28.5504 +v -2.5733 7.8878 -28.4934 +v -2.4004 7.3433 -28.4745 +v -2.3236 7.3738 -28.5290 +v -2.1288 6.8257 -28.4510 +v -2.0572 6.8713 -28.5091 +v -1.7790 6.3941 -28.4375 +v -1.7203 6.4524 -28.4930 +v -1.3101 6.0126 -28.4179 +v -1.2623 6.0819 -28.4770 +v -0.8508 5.7597 -28.4121 +v -0.8191 5.8364 -28.4684 +v 0.7863 11.4508 -25.2059 +v 0.2299 11.5130 -25.2090 +v 0.2301 11.4278 -25.2057 +v 0.7703 11.3674 -25.2028 +v 1.2920 11.2111 -25.1962 +v 1.3237 11.2899 -25.1991 +v 1.8151 11.0145 -25.1880 +v 1.7691 10.9438 -25.1854 +v 2.1932 10.5952 -25.1716 +v 2.2519 10.6554 -25.1738 +v 2.6035 10.2088 -25.1563 +v 2.5345 10.1616 -25.1546 +v 2.7965 9.6738 -25.1356 +v 2.8733 9.7063 -25.1367 +v 3.0315 9.1565 -25.1155 +v 2.9501 9.1399 -25.1149 +v 3.0100 8.5871 -25.0937 +v 3.0933 8.5870 -25.0936 +v 3.0340 8.0176 -25.0718 +v 2.9525 8.0342 -25.0726 +v 2.8013 7.5005 -25.0523 +v 2.8782 7.4679 -25.0509 +v 2.6106 6.9656 -25.0320 +v 2.5414 7.0128 -25.0339 +v 2.2021 6.5796 -25.0177 +v 2.2610 6.5193 -25.0153 +v 1.8257 6.1606 -25.0021 +v 1.7794 6.2314 -25.0048 +v 1.3035 5.9645 -24.9952 +v 1.3356 5.8857 -24.9921 +v 0.7989 5.7253 -24.9866 +v 0.7825 5.8087 -24.9898 +v 0.2426 5.7488 -24.9881 +v 0.2428 5.6636 -24.9849 +v 0.7148 11.3503 -28.6266 +v 1.3239 11.1629 -28.6166 +v 1.7832 10.9100 -28.6079 +v 2.2522 10.5284 -28.5912 +v 2.6020 10.0968 -28.5748 +v 2.8735 9.5793 -28.5541 +v 3.0464 9.0347 -28.5323 +v 3.0935 8.4599 -28.5110 +v 3.0489 7.8853 -28.4869 +v 2.8785 7.3408 -28.4684 +v 2.6091 6.8235 -28.4454 +v 2.2612 6.3923 -28.4328 +v 1.7940 6.0111 -28.4142 +v 1.3358 5.7587 -28.4095 +v 0.7275 5.5718 -28.3981 +v 0.2430 5.5366 -28.4022 +v 0.7105 5.6539 -28.4578 +v 1.3038 5.8354 -28.4659 +v 0.2428 5.6198 -28.4589 +v 0.6982 11.2641 -28.6797 +v 0.2310 11.0131 -29.2537 +v 0.6948 10.9604 -29.2507 +v 1.2923 11.0822 -28.6670 +v 1.1942 10.8166 -29.2451 +v 1.7354 10.8366 -28.6616 +v 1.6015 10.5759 -29.2350 +v 2.0116 10.2579 -29.2228 +v 2.1935 10.4662 -28.6423 +v 2.3075 9.8830 -29.2084 +v 2.5303 10.0472 -28.6295 +v 2.5588 9.4220 -29.1902 +v 2.7967 9.5447 -28.6064 +v 2.6905 8.9440 -29.1727 +v 2.9619 9.0160 -28.5882 +v 2.7525 8.4363 -29.1521 +v 3.0103 8.4580 -28.5645 +v 2.9643 7.9000 -28.5441 +v 2.6928 7.9345 -29.1341 +v 2.5632 7.4508 -29.1146 +v 2.8015 7.3715 -28.5231 +v 2.5373 6.8692 -28.5038 +v 2.3140 6.9957 -29.0983 +v 2.0196 6.6154 -29.0833 +v 2.2023 6.4506 -28.4885 +v 1.6221 6.2920 -29.0721 +v 1.7459 6.0805 -28.4735 +v 1.2046 6.0575 -29.0628 +v 0.7059 5.9141 -29.0574 +v 0.2423 5.8618 -29.0564 +v 0.2312 10.8927 -29.3026 +v 0.6726 10.8424 -29.3007 +v 1.1502 10.7052 -29.2944 +v 1.5376 10.4755 -29.2857 +v 1.9300 10.1722 -29.2730 +v 2.2116 9.8153 -29.2603 +v 2.4521 9.3748 -29.2419 +v 2.5773 8.9190 -29.2263 +v 2.6369 8.4344 -29.2057 +v 2.5795 7.9555 -29.1895 +v 2.4562 7.4941 -29.1698 +v 2.2178 7.0594 -29.1553 +v 1.9377 6.6972 -29.1399 +v 1.5577 6.3884 -29.1302 +v 1.1601 6.1649 -29.1204 +v 0.6831 6.0280 -29.1163 +v 0.2420 5.9782 -29.1143 +v -0.2099 10.8428 -29.3017 +v -0.6869 10.7060 -29.2965 +v -1.0733 10.4767 -29.2887 +v -1.4645 10.1737 -29.2770 +v -1.7434 9.8051 -29.2618 +v -1.9830 9.3768 -29.2471 +v -2.1041 8.9153 -29.2271 +v -2.1637 8.4366 -29.2113 +v -2.1034 7.9577 -29.1901 +v -1.9789 7.4961 -29.1750 +v -1.7549 7.0671 -29.1536 +v -1.4568 6.6987 -29.1439 +v -1.0791 6.3852 -29.1299 +v -0.6770 6.1657 -29.1226 +v -0.2093 6.0234 -29.1159 +v -0.2327 10.9608 -29.2518 +v -0.7314 10.8174 -29.2473 +v -1.1377 10.5771 -29.2382 +v -1.5464 10.2595 -29.2270 +v -1.8396 9.8728 -29.2101 +v -2.0900 9.4241 -29.1956 +v -2.2174 8.9404 -29.1737 +v -2.2793 8.4386 -29.1580 +v -2.2166 7.9367 -29.1350 +v -2.0856 7.4529 -29.1200 +v -1.8508 7.0035 -29.0969 +v -1.5384 6.6170 -29.0874 +v -1.1431 6.2889 -29.0719 +v -0.7210 6.0583 -29.0651 +v -0.2315 5.9094 -29.0571 +v -0.2251 5.6543 -28.4589 +v -0.2417 5.5722 -28.3992 +v -0.3262 11.4513 -25.2072 +v -0.8629 11.2909 -25.2017 +v -1.3530 11.0160 -25.1917 +v -1.7883 10.6573 -25.1785 +v -2.1379 10.2110 -25.1618 +v -2.4055 9.7087 -25.1429 +v -2.5613 9.1590 -25.1220 +v -2.6206 8.5897 -25.1002 +v -2.5588 8.0202 -25.0783 +v -2.4006 7.4703 -25.0571 +v -2.1308 6.9678 -25.0375 +v -1.7793 6.5212 -25.0200 +v -1.3424 6.1621 -25.0058 +v -0.8510 5.8867 -24.9946 +v -0.3136 5.7258 -24.9879 +v -0.3098 11.3679 -25.2040 +v -0.8309 11.2121 -25.1987 +v -1.3067 10.9452 -25.1890 +v -1.7294 10.5970 -25.1761 +v -2.0688 10.1638 -25.1599 +v -2.3286 9.6761 -25.1415 +v -2.4798 9.1424 -25.1213 +v -2.5374 8.5896 -25.1001 +v -2.4774 8.0367 -25.0789 +v -2.3238 7.5028 -25.0583 +v -2.0618 7.0150 -25.0393 +v -1.7205 6.5814 -25.0223 +v -1.2964 6.2328 -25.0084 +v -0.8193 5.9654 -24.9976 +v -0.2976 5.8092 -24.9911 +v -3.1424 13.9416 15.9818 +v -3.1401 13.9432 15.9923 +v -2.9027 13.6552 15.9596 +v -2.8957 13.6599 15.9913 +v -3.1424 13.9415 16.0027 +v -2.9026 13.6547 16.0230 +v -3.1487 13.9369 16.0103 +v -2.9217 13.6410 16.0461 +v -3.1572 13.9308 16.0131 +v -2.9476 13.6224 16.0545 +v -3.1658 13.9247 16.0103 +v -2.9736 13.6040 16.0459 +v -3.1721 13.9203 16.0026 +v -2.9926 13.5906 16.0226 +v -3.1744 13.9187 15.9921 +v -2.9996 13.5859 15.9909 +v -3.1721 13.9205 15.9817 +v -2.9926 13.5911 15.9592 +v -3.1658 13.9250 15.9740 +v -2.9736 13.6048 15.9361 +v -3.1572 13.9311 15.9713 +v -2.9476 13.6234 15.9278 +v -3.1487 13.9372 15.9741 +v -2.9217 13.6418 15.9364 +v -15.3430 6.1050 11.7073 +v -15.3737 5.9569 11.7089 +v -15.0285 6.0851 11.2367 +v -15.0792 5.8288 11.2406 +v -15.4495 5.8290 11.7109 +v -15.2091 5.6068 11.2446 +v -15.5611 5.7343 11.7130 +v -14.7987 5.7067 10.5749 +v -15.4025 5.4424 11.2483 +v -15.6379 5.3527 11.2514 +v -15.6967 5.6820 11.7150 +v -14.9827 5.3904 10.5809 +v -15.2585 5.1575 10.5857 +v -14.7299 6.0710 10.5682 +v -15.8902 5.3477 11.2535 +v -15.5938 5.0335 10.5887 +v -15.8426 5.6779 11.7168 +v -14.7854 5.2171 9.8848 +v -15.1276 4.9233 9.8917 +v -14.5614 5.6136 9.8759 +v -15.5469 4.7667 9.8958 +v -15.9505 5.0316 10.5896 +v -15.9934 4.7656 9.8966 +v -14.4829 6.0660 9.8660 +v -14.2486 5.4289 8.3288 +v -14.5272 4.9295 8.3404 +v -14.1538 5.9962 8.3160 +v -14.9560 4.5583 8.3494 +v -16.0455 4.3587 8.3558 +v -15.4833 4.3601 8.3548 +v -13.9817 5.9543 6.7614 +v -14.0869 5.3252 6.7756 +v -14.3958 4.7714 6.7885 +v -14.8713 4.3598 6.7985 +v -15.4561 4.1399 6.8044 +v -13.9644 5.8982 5.2402 +v -14.0708 5.2615 5.2546 +v -14.3834 4.7011 5.2677 +v -16.0796 4.1384 6.8055 +v -14.8647 4.2845 5.2778 +v -15.4565 4.0620 5.2838 +v -14.0034 5.8323 3.3803 +v -14.1078 5.2074 3.3945 +v -14.4146 4.6574 3.4073 +v -14.8869 4.2486 3.4172 +v -16.0874 4.0604 5.2849 +v -15.4677 4.0302 3.4231 +v -14.1684 5.7830 0.8921 +v -14.2433 5.2060 0.9048 +v -14.5122 4.6857 0.9168 +v -14.9463 4.2915 0.9264 +v -16.0869 4.0287 3.4242 +v -15.4921 4.0782 0.9321 +v -14.5631 5.2664 -2.0188 +v -14.7624 4.8423 -2.0101 +v -15.1045 4.5139 -2.0027 +v -15.5458 4.3339 -1.9982 +v -14.5240 5.7237 -2.0277 +v -16.0779 4.0767 0.9332 +v -16.0234 4.3325 -1.9974 +v -15.1222 5.0500 -4.9217 +v -15.3400 4.8314 -4.9141 +v -15.0024 5.3279 -4.9309 +v -15.6270 4.7105 -4.9096 +v -15.9395 4.7098 -4.9092 +v -14.9893 5.6204 -4.9400 +v -16.6698 4.2442 3.4203 +v -15.3920 5.3372 -7.5341 +v -15.4504 5.1964 -7.5296 +v -15.3892 5.4847 -7.5383 +v -15.7023 5.0247 -7.5236 +v -16.4667 4.5101 -2.0004 +v -15.8585 5.0236 -7.5235 +v -15.5590 5.0858 -7.5258 +v -16.2279 4.8294 -4.9131 +v -15.5287 5.3631 -7.7783 +v -15.5667 5.2709 -7.7753 +v -15.6376 5.1987 -7.7728 +v -16.0035 5.0829 -7.5256 +v -15.7311 5.1590 -7.7714 +v -15.5275 5.4596 -7.7809 +v -15.8328 5.1585 -7.7713 +v -16.6259 4.2871 0.9293 +v -15.9271 5.1973 -7.7726 +v -16.1146 5.1930 -7.5294 +v -15.9994 5.2691 -7.7751 +v -16.4479 5.0473 -4.9202 +v -16.1755 5.3348 -7.5339 +v -16.8124 4.8367 -2.0065 +v -17.0640 4.6792 0.9212 +v -16.0388 5.3617 -7.7780 +v -16.5705 5.3252 -4.9292 +v -17.0163 5.2600 -2.0146 +v -16.1319 5.4294 11.2543 +v -16.1799 5.4840 -7.5381 +v -16.5862 5.6183 -4.9383 +v -17.3382 5.1983 0.9102 +v -16.0412 5.4590 -7.7807 +v -16.2882 5.1524 10.5883 +v -16.5046 5.8862 -4.9462 +v -16.1333 5.6173 -7.5412 +v -17.0601 5.7175 -2.0233 +v -16.9507 6.1492 -2.0313 +v -16.5748 4.5543 8.3523 +v -17.4191 5.7750 0.8977 +v -16.0101 5.5455 -7.7826 +v -16.3478 6.1003 -4.9520 +v -16.0503 5.7186 -7.5429 +v -16.7135 6.5075 -2.0379 +v -17.3038 6.3373 0.8854 +v -16.6665 4.3553 6.8017 +v -17.0133 6.8198 0.8748 +v -15.9556 5.6107 -7.7835 +v -16.1418 6.2458 -4.9557 +v -15.9479 5.7826 -7.5435 +v -16.3837 6.7607 -2.0425 +v -16.5863 7.1709 0.8668 +v -17.1581 6.9983 3.3595 +v -16.6814 4.2800 5.2810 +v -16.6858 7.4071 3.3496 +v -15.8892 5.6512 -7.7837 +v -15.9097 6.3184 -4.9576 +v -15.9990 6.8912 -2.0452 +v -15.8385 5.8121 -7.5435 +v -16.0731 7.3559 0.8621 +v -16.1050 7.6254 3.3437 +v -15.8191 5.6696 -7.7837 +v -15.6696 6.3185 -4.9578 +v -15.7282 5.8114 -7.5435 +v -15.5959 6.8920 -2.0459 +v -15.5299 7.3572 0.8612 +v -15.4858 7.6270 3.3427 +v -15.7487 5.6692 -7.7837 +v -15.4373 6.2460 -4.9564 +v -15.6790 5.6503 -7.7837 +v -15.2101 6.7631 -2.0445 +v -15.6196 5.7808 -7.5434 +v -15.0149 7.1747 0.8641 +v -14.9028 7.4115 3.3465 +v -15.6131 5.6097 -7.7836 +v -15.2307 6.1009 -4.9531 +v -14.8781 6.5115 -2.0410 +v -15.5183 5.7166 -7.5429 +v -16.6977 7.5029 5.2089 +v -14.5845 6.8256 0.8706 +v -14.4264 7.0050 3.3548 +v -15.4749 7.7269 5.2018 +v -15.5588 5.5452 -7.7827 +v -15.0728 5.8876 -4.9477 +v -14.8809 7.5074 5.2057 +v -14.6376 6.1545 -2.0353 +v -15.4361 5.6162 -7.5413 +v -17.1462 4.6507 3.4120 +v -14.1141 6.4566 3.3665 +v -14.2893 6.3446 0.8802 +v -14.3955 7.0932 5.2142 +v -17.4586 5.1991 3.4003 +v -14.0772 6.5343 5.2262 +v -17.1789 7.0863 5.2190 +v -17.5693 5.8235 3.3865 +v -16.1059 7.7254 5.2029 +v -17.4649 6.4483 3.3724 +v -14.0932 6.5829 6.7475 +v -14.4077 7.1352 6.7357 +v -14.8874 7.5444 6.7273 +v -14.2543 6.5630 8.3035 +v -14.5379 7.0610 8.2928 +v -15.4744 7.7614 6.7235 +v -15.9835 5.7237 11.7181 +v -14.9705 7.4300 8.2853 +v -14.5606 6.5200 9.8563 +v -16.4141 4.9201 9.8940 +v -14.7859 6.9205 9.8480 +v -15.4998 7.6257 8.2818 +v -16.0978 7.7599 6.7245 +v -15.1320 7.2183 9.8421 +v -16.6826 7.5400 6.7305 +v -14.7871 6.4406 10.5616 +v -14.9661 6.7705 10.5559 +v -15.2472 7.0185 10.5519 +v -15.5572 7.3765 9.8394 +v -16.0620 7.6243 8.2828 +v -15.5963 7.1516 10.5502 +v -15.1892 6.5840 11.2308 +v -15.3872 6.7649 11.2296 +v -15.0656 6.3472 11.2333 +v -15.6369 6.8650 11.2298 +v -16.5893 7.4260 8.2881 +v -17.1581 7.1284 6.7405 +v -17.4916 6.5259 5.2321 +v -16.0093 7.3754 9.8402 +v -15.3628 6.2577 11.7061 +v -15.9067 6.8689 11.2316 +v -15.4333 6.3969 11.7054 +v -15.5483 6.5045 11.7054 +v -15.9693 7.1517 10.5510 +v -15.6946 6.5649 11.7062 +v -16.4329 7.2151 9.8444 +v -15.8539 6.5683 11.7078 +v -17.0181 7.0548 8.2971 +v -16.1611 6.7745 11.2349 +v -16.3183 7.0184 10.5543 +v -16.0045 6.5131 11.7099 +v -16.3661 6.5940 11.2391 +v -16.1257 6.4063 11.7124 +v -16.7760 6.9156 9.8514 +v -16.5989 6.7695 10.5596 +v -16.2012 6.2628 11.7148 +v -16.4948 6.3519 11.2436 +v -16.9972 6.5140 9.8605 +v -16.7763 6.4377 10.5661 +v -17.2967 6.5555 8.3087 +v -16.2219 6.1028 11.7169 +v -17.4671 6.5746 6.7533 +v -16.8304 6.0658 10.5731 +v -17.0703 6.0596 9.8705 +v -16.5319 6.0811 11.2480 +v -17.3914 5.9882 8.3216 +v -17.5722 5.9454 6.7676 +v -16.1870 5.9476 11.7182 +v -16.7572 5.6999 10.5796 +v -16.9873 5.6077 9.8801 +v -16.4754 5.8168 11.2514 +v -17.2910 5.4213 8.3341 +v -17.5979 5.8892 5.2465 +v -17.4608 5.3168 6.7815 +v -16.1034 5.8164 11.7186 +v -16.5683 5.3836 10.5848 +v -16.7593 5.2122 9.8883 +v -16.3355 5.5911 11.2536 +v -17.0073 4.9234 8.3447 +v -17.4852 5.2531 5.2605 +v -17.1462 4.7646 6.7933 +v -17.1669 4.6942 5.2725 +v 15.8280 6.0907 11.7436 +v 15.5135 6.0711 11.2723 +v 15.8593 5.9425 11.7453 +v 15.5653 5.8148 11.2763 +v 15.2854 5.6929 10.6099 +v 15.2150 6.0572 10.6031 +v 15.9357 5.8147 11.7474 +v 15.0484 5.6001 9.9104 +v 15.6963 5.5926 11.2806 +v 14.9680 6.0525 9.9003 +v 14.6392 5.9830 8.3495 +v 15.2742 5.2033 9.9198 +v 15.4707 5.3764 10.6164 +v 14.7364 5.4156 8.3626 +v 14.4672 5.9413 6.7945 +v 16.0477 5.7198 11.7498 +v 15.8904 5.4280 11.2848 +v 14.5751 5.3121 6.8090 +v 15.6177 4.9092 9.9275 +v 14.4501 5.8851 5.2733 +v 15.0172 4.9160 8.3748 +v 15.7476 5.1433 10.6218 +v 14.5592 5.2484 5.2879 +v 14.8864 4.7580 6.8226 +v 16.1262 5.3381 11.2884 +v 14.4893 5.8192 3.4135 +v 16.0377 4.7522 9.9326 +v 15.4476 4.5444 8.3848 +v 16.0834 5.0189 10.6256 +v 16.1836 5.6674 11.7521 +v 14.8743 4.6877 5.3017 +v 15.3638 4.3459 6.8337 +v 16.3785 5.3329 11.2911 +v 16.4841 4.7507 9.9344 +v 16.4401 5.0167 10.6273 +v 15.9758 4.3456 8.3914 +v 16.5380 4.3437 8.3937 +v 16.3294 5.6631 11.7543 +v 16.6199 5.4144 11.2924 +v 16.7773 5.1373 10.6268 +v 17.0665 4.5389 8.3914 +v 16.9042 4.9048 9.9328 +v 16.4701 5.7088 11.7558 +v 16.8227 5.5759 11.2922 +v 17.0564 5.3682 10.6240 +v 17.1590 4.3398 6.8410 +v 17.4974 4.9075 8.3849 +v 17.2481 5.1966 9.9278 +v 17.6369 4.7487 6.8338 +v 16.5896 5.8015 11.7566 +v 16.9616 5.8015 11.2904 +v 17.2439 5.6844 10.6192 +v 17.7788 5.4053 8.3749 +v 17.9490 5.3006 6.8227 +v 17.4744 5.5919 9.9202 +v 16.6726 5.9325 11.7564 +v 17.0170 6.0658 11.2870 +v 17.3155 6.0501 10.6129 +v 17.8768 5.9720 8.3626 +v 17.5554 6.0438 9.9108 +v 18.0577 5.9291 6.8091 +v 16.7069 6.0877 11.7552 +v 16.9787 6.3366 11.2826 +v 17.2598 6.4221 10.6058 +v 17.7796 6.5394 8.3496 +v 17.4803 6.4982 9.9006 +v 17.9498 6.5583 6.7946 +v 16.6855 6.2477 11.7531 +v 17.0809 6.7540 10.5988 +v 16.8489 6.5788 11.2777 +v 17.4988 7.0390 8.3373 +v 17.2574 6.9000 9.8911 +v 17.6385 7.1124 6.7810 +v 16.6094 6.3913 11.7505 +v 16.7993 7.0033 10.5929 +v 16.6431 6.7595 11.2730 +v 17.0683 7.4106 8.3273 +v 16.9129 7.1998 9.8832 +v 17.1611 7.5245 6.7698 +v 16.4877 6.4982 11.7478 +v 16.4496 7.1369 10.5888 +v 16.3368 6.5536 11.7453 +v 16.3883 6.8541 11.2692 +v 16.5402 7.6093 8.3207 +v 16.5754 7.7449 6.7626 +v 16.4887 7.3605 9.8780 +v 16.1776 6.5503 11.7433 +v 16.0766 7.1371 10.5871 +v 16.1185 6.8504 11.2668 +v 16.5835 7.7104 5.2410 +v 16.0365 7.3620 9.8762 +v 15.9780 7.6112 8.3184 +v 15.9519 7.7470 6.7601 +v 16.0315 6.4900 11.7422 +v 15.7281 7.0043 10.5880 +v 15.6121 7.2042 9.8779 +v 15.8693 6.7506 11.2659 +v 15.4495 7.4161 8.3207 +v 15.9526 7.7125 5.2384 +v 15.3659 7.5306 6.7626 +v 15.9170 6.3826 11.7419 +v 14.5964 5.1943 3.4279 +v 15.4482 6.7566 10.5913 +v 15.2672 6.9067 9.8830 +v 15.3574 4.2706 5.3130 +v 15.6721 6.5698 11.2667 +v 15.0186 7.0474 8.3272 +v 17.9736 5.2368 5.3018 +v 15.3595 7.4935 5.2410 +v 14.8880 7.1217 6.7698 +v 15.9495 4.1255 6.8410 +v 15.8471 6.2434 11.7424 +v 18.0836 5.8728 5.2880 +v 15.2706 6.4269 10.5966 +v 17.9745 6.5096 5.2734 +v 15.0437 6.5065 9.8907 +v 15.5495 6.3332 11.2690 +v 17.6594 7.0703 5.2596 +v 14.7371 6.5497 8.3372 +v 16.5830 7.6105 3.3818 +v 17.1763 7.4874 5.2483 +v 14.8759 7.0798 5.2483 +v 16.5730 4.1234 6.8435 +v 15.9638 7.6126 3.3793 +v 14.5759 6.5698 6.7809 +v 17.6578 4.6782 5.3130 +v 15.3818 7.3976 3.3818 +v 14.5601 6.5212 5.2595 +v 14.9072 6.9916 3.3890 +v 14.5972 6.4434 3.4000 +v 15.4948 7.1607 0.8996 +v 15.0660 6.8120 0.9051 +v 16.0090 7.3427 0.8979 +v 16.5522 7.3409 0.9001 +v 14.7728 6.3313 0.9141 +v 15.6917 6.7489 -2.0085 +v 16.0769 6.8775 -2.0090 +v 15.1219 6.1409 -2.0006 +v 15.3608 6.4976 -2.0058 +v 16.4800 6.8763 -2.0074 +v 14.6544 5.7698 0.9256 +v 15.0102 5.7102 -1.9933 +v 15.7151 6.0867 -4.9171 +v 15.9211 6.2316 -4.9199 +v 15.5581 5.8735 -4.9120 +v 16.1530 6.3039 -4.9208 +v 16.3931 6.3036 -4.9200 +v 15.4758 5.6065 -4.9045 +v 17.0662 7.1555 0.9059 +v 16.8653 6.7454 -2.0038 +v 16.0043 5.7021 -7.5062 +v 16.1053 5.7663 -7.5065 +v 15.9225 5.6019 -7.5047 +v 16.2138 5.7968 -7.5063 +v 16.3241 5.7974 -7.5061 +v 16.6256 6.2307 -4.9176 +v 15.8762 5.4703 -7.5019 +v 16.0456 5.5307 -7.7459 +v 16.0145 5.4451 -7.7442 +v 16.0995 5.5952 -7.7467 +v 16.1652 5.6357 -7.7467 +v 16.4336 5.7678 -7.5058 +v 16.3053 5.6549 -7.7463 +v 16.2349 5.6546 -7.7464 +v 16.3755 5.6364 -7.7462 +v 17.1647 7.3916 3.3890 +v 16.4421 5.5958 -7.7458 +v 16.5363 5.7037 -7.5050 +v 16.8322 6.0851 -4.9134 +v 17.1962 6.4920 -1.9984 +v 16.4968 5.5306 -7.7447 +v 16.6197 5.6023 -7.5031 +v 16.9899 5.8709 -4.9072 +v 14.9056 4.6440 3.4414 +v 17.4947 6.8040 0.9150 +v 17.4350 6.1334 -1.9913 +v 16.5283 5.4441 -7.7427 +v 16.6669 5.4690 -7.4999 +v 17.0727 5.6029 -4.8991 +v 17.7874 6.3212 0.9263 +v 17.6388 6.9823 3.4001 +v 17.5463 5.7016 -1.9830 +v 16.5264 5.3468 -7.7401 +v 16.6632 5.3198 -7.4957 +v 17.0583 5.3098 -4.8900 +v 17.1742 4.2645 5.3204 +v 17.9052 5.7588 0.9389 +v 17.9481 6.4321 3.4136 +v 17.5045 5.2442 -1.9744 +v 16.4873 5.2542 -7.7372 +v 16.9369 5.0320 -4.8814 +v 16.6029 5.1780 -7.4913 +v 17.8268 5.1822 0.9511 +v 18.0552 5.8071 3.4280 +v 17.3024 4.8210 -1.9668 +v 16.4154 5.1824 -7.7350 +v 16.7178 4.8143 -4.8747 +v 16.4922 5.0680 -7.4878 +v 17.5549 4.6634 0.9615 +v 17.9473 5.1829 3.4415 +v 16.9582 4.4947 -1.9615 +v 16.3212 5.1437 -7.7339 +v 16.4300 4.6949 -4.8716 +v 16.5156 4.3176 -1.9595 +v 16.3475 5.0088 -7.4860 +v 17.1184 4.2717 0.9686 +v 17.6373 4.6347 3.4525 +v 16.5714 4.0618 0.9712 +v 16.2195 5.1444 -7.7342 +v 16.1175 4.6960 -4.8726 +v 16.0381 4.3194 -1.9615 +v 16.1913 5.0101 -7.4865 +v 15.9855 4.0638 0.9688 +v 17.1627 4.2287 3.4597 +v 16.5807 4.0137 3.4622 +v 16.0477 5.0713 -7.4890 +v 15.8299 4.8171 -4.8778 +v 15.5959 4.4998 -1.9670 +v 15.4389 4.2775 0.9618 +v 15.9615 4.0158 3.4597 +v 16.1259 5.1842 -7.7359 +v 16.5812 4.0455 5.3229 +v 15.9386 5.1820 -7.4931 +v 15.2525 4.8285 -1.9751 +v 15.0030 4.6722 0.9512 +v 15.6112 5.0359 -4.8859 +v 15.3797 4.2347 3.4525 +v 15.9502 4.0476 5.3203 +v 16.0546 5.2564 -7.7385 +v 15.8797 5.3229 -7.4977 +v 15.0513 5.2528 -1.9844 +v 14.7319 5.1928 0.9386 +v 15.4902 5.3139 -4.8954 +v 16.0162 5.3487 -7.7415 +v -0.2404 13.5876 31.8958 +v -0.1902 13.5483 31.8887 +v -0.2644 13.6469 31.9062 +v -0.2472 13.5814 31.9000 +v -0.2729 13.6448 31.9113 +v -0.1935 13.5393 31.8924 +v -0.2558 13.7103 31.9175 +v -0.1272 13.5395 31.8870 +v -0.2637 13.7127 31.9232 +v -0.1262 13.5299 31.8906 +v -0.0684 13.5636 31.8911 +v -0.0632 13.5557 31.8950 +v -0.0295 13.6141 31.9000 +v -0.2168 13.7608 31.9263 +v -0.0216 13.6097 31.9045 +v -0.2220 13.7667 31.9327 +v -0.0209 13.6774 31.9111 +v -0.0124 13.6775 31.9165 +v -0.0449 13.7367 31.9217 +v -0.0381 13.7410 31.9277 +v -0.0951 13.7760 31.9288 +v -0.0918 13.7830 31.9353 +v -0.1581 13.7848 31.9305 +v -0.1591 13.7924 31.9371 +v 8.7093 6.1088 8.2594 +v 8.6487 6.0970 8.2598 +v 8.5881 6.1089 8.2593 +v 8.7602 6.1443 8.2581 +v 8.7948 6.1965 8.2561 +v 8.7086 6.4084 8.2479 +v 8.5369 6.1444 8.2578 +v 8.8063 6.2586 8.2538 +v 8.7945 6.3206 8.2514 +v 8.5018 6.3208 8.2510 +v 8.5021 6.1967 8.2558 +v 8.7597 6.3729 8.2493 +v 8.5874 6.4085 8.2478 +v 8.6480 6.4203 8.2474 +v 8.4904 6.2587 8.2534 +v 8.5364 6.3730 8.2491 +v 8.5354 6.9875 24.7786 +v 8.5027 6.9344 24.7806 +v 8.5872 7.0210 24.7774 +v 8.4893 6.8732 24.7829 +v 8.5030 6.8119 24.7853 +v 8.6470 7.0348 24.7769 +v 8.5359 6.7588 24.7874 +v 8.7074 6.7252 24.7889 +v 8.7068 7.0210 24.7775 +v 8.5878 6.7253 24.7887 +v 8.7916 6.9343 24.7809 +v 8.6477 6.7114 24.7893 +v 8.7587 6.9874 24.7789 +v 8.7919 6.8118 24.7856 +v 8.8052 6.8730 24.7833 +v 8.7592 6.7587 24.7876 +v 12.4573 6.1505 4.1382 +v 12.3967 6.1386 4.1386 +v 12.3361 6.1505 4.1381 +v 12.5082 6.1859 4.1369 +v 12.5428 6.2382 4.1350 +v 12.4566 6.4501 4.1267 +v 12.2849 6.1860 4.1367 +v 12.5543 6.3002 4.1326 +v 12.5425 6.3623 4.1302 +v 12.2498 6.3624 4.1299 +v 12.2501 6.2383 4.1346 +v 12.5077 6.4146 4.1282 +v 12.3354 6.4501 4.1266 +v 12.3960 6.4620 4.1262 +v 12.2384 6.3004 4.1322 +v 12.2844 6.4147 4.1279 +v 12.2834 7.0291 20.6574 +v 12.2507 6.9761 20.6594 +v 12.3352 7.0627 20.6562 +v 12.2374 6.9148 20.6618 +v 12.2510 6.8536 20.6641 +v 12.3950 7.0765 20.6557 +v 12.2839 6.8005 20.6662 +v 12.4555 6.7669 20.6677 +v 12.4548 7.0626 20.6563 +v 12.3358 6.7669 20.6675 +v 12.5396 6.9759 20.6598 +v 12.3957 6.7531 20.6681 +v 12.5067 7.0290 20.6577 +v 12.5399 6.8534 20.6645 +v 12.5532 6.9147 20.6621 +v 12.5072 6.8004 20.6665 +v 9.8280 17.9736 -43.7439 +v 9.6417 17.9668 -43.9302 +v 9.4047 17.9645 -43.9940 +v 9.1314 17.9674 -43.9211 +v 8.8317 17.9738 -43.7517 +v 8.2399 17.9869 -43.3577 +v -9.3972 17.9824 -43.7663 +v -9.2109 17.9754 -43.9521 +v -8.9739 17.9730 -44.0154 +v -8.7005 17.9755 -43.9419 +v -8.4009 17.9817 -43.7718 +v -7.8091 17.9943 -43.3764 +v -8.0180 6.3283 8.2318 +v -8.0528 6.3806 8.2298 +v -8.1039 6.4161 8.2283 +v -8.0063 6.2663 8.2342 +v -8.0177 6.2042 8.2366 +v -8.2245 6.1166 8.2397 +v -8.1646 6.4280 8.2278 +v -8.2252 6.4162 8.2282 +v -8.3107 6.3285 8.2315 +v -8.0523 6.1520 8.2385 +v -8.1033 6.1165 8.2398 +v -8.2761 6.3807 8.2295 +v -8.3104 6.2044 8.2362 +v -8.3221 6.2664 8.2338 +v -8.1639 6.1047 8.2402 +v -8.2756 6.1521 8.2383 +v -8.1649 6.7191 24.7697 +v -8.2247 6.7330 24.7691 +v -8.1051 6.7329 24.7693 +v -8.0533 6.7664 24.7681 +v -8.2767 6.7665 24.7678 +v -8.3095 6.8196 24.7657 +v -8.0207 6.8195 24.7661 +v -8.2254 7.0287 24.7578 +v -8.0209 6.9420 24.7614 +v -8.0073 6.8807 24.7637 +v -8.3098 6.9421 24.7610 +v -8.3232 6.8809 24.7634 +v -8.1058 7.0287 24.7580 +v -8.2772 6.9952 24.7590 +v -8.1656 7.0425 24.7574 +v -8.0538 6.9951 24.7593 +v -11.7663 6.3734 4.1019 +v -11.8011 6.4257 4.0998 +v -11.8523 6.4612 4.0984 +v -11.7546 6.3114 4.1043 +v -11.7661 6.2493 4.1067 +v -11.9728 6.1617 4.1098 +v -11.9129 6.4731 4.0979 +v -11.9735 6.4613 4.0983 +v -12.0590 6.3736 4.1016 +v -11.8006 6.1971 4.1086 +v -11.8516 6.1616 4.1099 +v -12.0245 6.4258 4.0996 +v -12.0588 6.2495 4.1063 +v -12.0705 6.3115 4.1039 +v -11.9122 6.1498 4.1103 +v -12.0240 6.1972 4.1084 +v -11.9133 6.7642 20.6398 +v -11.9731 6.7781 20.6392 +v -11.8535 6.7780 20.6394 +v -11.8017 6.8115 20.6381 +v -12.0250 6.8116 20.6379 +v -12.0579 6.8647 20.6358 +v -11.7690 6.8646 20.6362 +v -11.9737 7.0738 20.6279 +v -11.7693 6.9871 20.6315 +v -11.7556 6.9258 20.6338 +v -12.0582 6.9872 20.6311 +v -12.0715 6.9260 20.6335 +v -11.8541 7.0737 20.6280 +v -12.0255 7.0403 20.6291 +v -11.9140 7.0876 20.6274 +v -11.8022 7.0402 20.6294 +v 2.9928 14.0409 28.3337 +v 3.0515 6.8594 21.6478 +v 2.9952 6.8103 21.6240 +v 3.1969 6.6690 21.5379 +v 3.1100 6.9040 21.6208 +v 3.1443 6.6237 21.5159 +v 3.2509 6.7108 21.5130 +v 3.2156 6.6438 21.5040 +v 2.8017 6.6186 21.3664 +v 3.3272 7.0475 21.3520 +v 2.9862 6.4662 21.2987 +v 3.2574 6.6754 21.4831 +v 2.7674 6.5828 21.3065 +v 3.4291 6.8277 21.2866 +v 3.3671 7.0722 21.2901 +v 3.4660 6.8508 21.2292 +v 3.4278 6.7872 21.2658 +v 3.4604 6.8074 21.2152 +v 3.3811 7.0739 21.2139 +v 3.4788 6.8527 21.1584 +v 3.4715 6.8088 21.1549 +v 3.4664 6.7078 20.0242 +v 3.4593 6.6668 20.0425 +v 3.1755 6.6086 21.4854 +v 2.9541 6.4331 21.2432 +v 3.3669 6.9022 19.8819 +v 3.4459 6.6499 19.9965 +v 3.4495 6.6853 19.9651 +v 3.4061 6.6456 19.9354 +v 3.4122 6.6193 19.9735 +v 3.3482 6.8786 19.8179 +v 3.2665 6.5279 19.9101 +v 3.2819 6.5095 19.9495 +v 3.3013 6.8361 19.7858 +v 3.1492 6.4047 19.9806 +v 3.1243 6.4156 19.9431 +v 3.1330 6.6942 19.7554 +v 2.9616 6.5588 19.7951 +v 2.7602 6.5672 21.2308 +v 2.9962 6.4286 21.2279 +v 3.1133 6.3785 20.0056 +v 3.0243 6.4579 21.2768 +v 3.0778 6.3820 19.9752 +v 2.9117 6.5223 19.8298 +v 3.0546 6.3716 20.0354 +v 3.0957 6.3701 20.0524 +v 2.9473 6.4189 21.1730 +v 2.8872 6.5106 19.8950 +v 2.9906 6.4163 21.1680 +v 1.9312 7.4364 29.4095 +v 2.0780 7.4777 29.4272 +v 2.0684 7.3181 29.4873 +v 1.8237 7.3250 29.4007 +v 1.9956 7.2976 29.4785 +v 2.1412 7.2983 29.4979 +v 1.7845 7.1732 29.4028 +v 2.2249 7.4377 29.4486 +v 1.9423 7.2424 29.4742 +v 2.1946 7.2435 29.5078 +v 2.1947 7.0932 29.5152 +v 1.9424 7.0921 29.4818 +v 2.3325 7.3272 29.4682 +v 2.2142 7.1684 29.5141 +v 1.8240 7.0219 29.4155 +v 2.3720 7.1759 29.4808 +v 2.0686 7.0175 29.5023 +v 1.9228 7.1672 29.4754 +v 2.3328 7.0241 29.4829 +v 2.2253 6.9127 29.4740 +v 2.1414 7.0379 29.5109 +v 1.9958 7.0373 29.4915 +v 1.9316 6.9114 29.4351 +v 2.0785 6.8714 29.4566 +v 1.6585 6.8567 27.2825 +v 1.7750 6.8892 27.2969 +v 1.7674 6.7620 27.3428 +v 1.5733 6.7684 27.2742 +v 1.7096 6.7458 27.3357 +v 1.8251 6.7461 27.3510 +v 1.5421 6.6481 27.2742 +v 1.8915 6.8572 27.3135 +v 1.6673 6.7021 27.3316 +v 1.8675 6.7025 27.3583 +v 1.8675 6.5832 27.3625 +v 1.6674 6.5828 27.3360 +v 1.9769 6.7693 27.3278 +v 1.8829 6.6429 27.3624 +v 1.5734 6.5279 27.2826 +v 2.0081 6.6491 27.3361 +v 1.7674 6.5233 27.3514 +v 1.6519 6.6424 27.3317 +v 1.9770 6.5287 27.3361 +v 1.8917 6.4405 27.3278 +v 1.8252 6.5394 27.3584 +v 1.7097 6.5392 27.3431 +v 1.6588 6.4400 27.2970 +v 1.7753 6.4080 27.3136 +v 3.2499 13.6047 15.8012 +v 3.1814 13.6528 15.8846 +v 3.3434 13.5385 15.7706 +v 3.4369 13.4717 15.8009 +v 3.5054 13.4224 15.8840 +v 3.5305 13.4037 15.9977 +v 3.5054 13.4207 16.1115 +v 3.4370 13.4687 16.1949 +v 3.1564 13.6698 15.9984 +v 3.3434 13.5350 16.2256 +v 3.2499 13.6018 16.1953 +v 3.1814 13.6511 16.1121 +v 3.6080 13.9279 16.0001 +v -2.8909 13.5379 16.2183 +v -2.7977 13.6046 16.1882 +v -2.9842 13.4717 16.1874 +v -3.0524 13.4237 16.1039 +v -3.0774 13.4067 15.9900 +v -3.0524 13.4254 15.8764 +v -2.9842 13.4746 15.7934 +v -2.8909 13.5413 15.7633 +v -2.7977 13.6075 15.7942 +v -2.7294 13.6538 16.1052 +v -2.7294 13.6555 15.8778 +v -2.7045 13.6725 15.9916 +v -3.1572 13.9310 15.9922 +v -15.7279 6.3832 11.9053 +v -15.6434 6.3473 11.9043 +v -15.8204 6.3858 11.9066 +v -15.7854 6.1450 12.0330 +v -15.5777 6.2844 11.9037 +v -15.9083 6.3540 11.9080 +v -15.5380 6.2038 11.9034 +v -15.5276 6.1162 11.9035 +v -15.5459 6.0317 11.9040 +v -15.5894 5.9592 11.9049 +v -15.6529 5.9053 11.9060 +v -15.9789 6.2917 11.9095 +v -15.7299 5.8753 11.9074 +v -15.8131 5.8722 11.9089 +v -15.8941 5.8975 11.9102 +v -15.9636 5.9500 11.9112 +v -16.0127 6.0252 11.9116 +v -16.0338 6.1149 11.9114 +v -16.0225 6.2080 11.9107 +v -15.6652 5.3249 -7.8830 +v -15.6446 5.3752 -7.8845 +v -15.7267 5.5303 -7.8874 +v -15.7040 5.2854 -7.8816 +v -15.7552 5.2637 -7.8808 +v -15.6440 5.4276 -7.8860 +v -15.6612 5.4738 -7.8869 +v -15.6908 5.5085 -7.8874 +v -15.8109 5.2634 -7.8807 +v -15.7648 5.5404 -7.8873 +v -15.8418 5.5306 -7.8873 +v -15.8035 5.5406 -7.8873 +v -15.8625 5.2848 -7.8814 +v -15.8779 5.5089 -7.8872 +v -15.9074 5.4739 -7.8867 +v -15.9244 5.4273 -7.8856 +v -15.9233 5.3745 -7.8842 +v -15.9019 5.3241 -7.8827 +v 16.1387 5.8908 11.9431 +v 16.0750 5.9447 11.9417 +v 16.2159 5.8606 11.9446 +v 16.2702 6.1304 12.0703 +v 16.2991 5.8575 11.9463 +v 16.0312 6.0173 11.9408 +v 16.0126 6.1017 11.9403 +v 16.0226 6.1894 11.9402 +v 16.0619 6.2699 11.9405 +v 16.1273 6.3328 11.9413 +v 16.2117 6.3685 11.9425 +v 16.3799 5.8827 11.9478 +v 16.3042 6.3711 11.9440 +v 16.3922 6.3392 11.9456 +v 16.4630 6.2768 11.9472 +v 16.5070 6.1931 11.9485 +v 16.5188 6.1000 11.9494 +v 16.4981 6.0103 11.9495 +v 16.4493 5.9352 11.9489 +v 16.3647 5.4942 -7.8497 +v 16.3286 5.5159 -7.8499 +v 16.3944 5.4591 -7.8491 +v 16.4116 5.4124 -7.8480 +v 16.4107 5.3597 -7.8466 +v 16.2902 5.5259 -7.8499 +v 16.2516 5.5257 -7.8500 +v 16.3896 5.3093 -7.8451 +v 16.2135 5.5156 -7.8502 +v 16.2431 5.2490 -7.8435 +v 16.2989 5.2487 -7.8433 +v 16.3504 5.2700 -7.8439 +v 16.1918 5.2708 -7.8445 +v 16.1776 5.4939 -7.8503 +v 16.1483 5.4593 -7.8499 +v 16.1313 5.4130 -7.8490 +v 16.1320 5.3606 -7.8476 +v 16.1529 5.3104 -7.8459 +# 5510 vertices + +vn 0.5253 0.7738 0.3538 +vn -0.4159 0.8688 -0.2688 +vn 0.7173 0.5063 0.4787 +vn -0.4578 0.8382 -0.2964 +vn -0.5903 0.7093 -0.3852 +vn -0.7435 0.4564 -0.4887 +vn -0.8182 0.1969 -0.5401 +vn -0.8263 0.1388 -0.5459 +vn -0.8323 -0.0561 -0.5514 +vn -0.8320 -0.0628 -0.5512 +vn -0.7990 -0.2822 -0.5310 +vn -0.8065 -0.2501 -0.5358 +vn -0.6261 -0.6572 -0.4196 +vn -0.7172 -0.5065 -0.4787 +vn 0.2496 -0.9554 0.1577 +vn -0.3460 -0.9081 -0.2359 +vn 0.5897 -0.7100 0.3850 +vn 0.7437 -0.4560 0.4888 +vn 0.8183 -0.1967 0.5401 +vn 0.8263 -0.1389 0.5459 +vn 0.8323 0.0560 0.5514 +vn 0.8320 0.0626 0.5512 +vn 0.7990 0.2821 0.5311 +vn 0.8065 0.2502 0.5357 +vn 0.6257 0.6579 0.4192 +vn 0.5246 0.7747 0.3531 +vn -0.3722 0.6393 -0.6729 +vn -0.1192 0.0224 -0.9926 +vn -0.4162 -0.0731 -0.9063 +vn -0.3536 -0.0439 -0.9344 +vn -0.3914 -0.0555 -0.9186 +vn -0.3993 -0.0582 -0.9150 +vn -0.3775 -0.0595 -0.9241 +vn -0.3914 -0.0564 -0.9185 +vn -0.3638 -0.0610 -0.9295 +vn 0.8171 0.1045 0.5670 +vn 0.8133 0.0752 0.5770 +vn 0.8170 0.1155 0.5649 +vn 0.8162 0.1330 0.5622 +vn 0.7911 0.1771 0.5855 +vn 0.7974 0.1656 0.5803 +vn 0.7575 0.2309 0.6106 +vn 0.7549 0.2348 0.6124 +vn 0.7159 0.2898 0.6352 +vn 0.7156 0.2909 0.6350 +vn 0.6544 0.3689 0.6600 +vn 0.6608 0.3622 0.6574 +vn 0.6037 0.4238 0.6753 +vn 0.5952 0.4323 0.6774 +vn 0.5324 0.4907 0.6898 +vn 0.5068 0.5244 0.6842 +vn 0.4453 0.5900 0.6735 +vn 0.4460 0.6147 0.6506 +vn 0.4041 0.6396 0.6539 +vn 0.4406 0.6304 0.6391 +vn 0.8068 0.0662 0.5872 +vn 0.8344 0.0513 0.5488 +vn 0.7822 0.0715 0.6189 +vn 0.7742 0.0778 0.6281 +vn 0.7589 0.1022 0.6431 +vn 0.7506 0.1150 0.6507 +vn 0.7313 0.1272 0.6701 +vn 0.7245 0.1277 0.6773 +vn 0.7206 0.1397 0.6791 +vn 0.7221 0.1399 0.6774 +vn 0.7167 0.1500 0.6810 +vn 0.7158 0.1514 0.6817 +vn 0.8163 0.1093 0.5672 +vn 0.7994 0.0752 0.5961 +vn -0.7740 -0.0662 -0.6297 +vn -0.7974 -0.0695 -0.5995 +vn -0.8132 -0.0687 -0.5780 +vn -0.8248 -0.0802 -0.5596 +vn -0.8265 -0.0971 -0.5545 +vn -0.8432 -0.0595 -0.5343 +vn -0.8343 -0.1238 -0.5373 +vn -0.8345 -0.1291 -0.5357 +vn -0.8045 -0.1900 -0.5628 +vn -0.8153 -0.1733 -0.5525 +vn -0.7691 -0.2405 -0.5921 +vn -0.7645 -0.2468 -0.5955 +vn -0.7234 -0.3000 -0.6218 +vn -0.7214 -0.3026 -0.6230 +vn -0.6579 -0.3755 -0.6529 +vn -0.6630 -0.3699 -0.6509 +vn -0.5967 -0.4373 -0.6729 +vn -0.6048 -0.4294 -0.6707 +vn -0.5327 -0.4960 -0.6857 +vn -0.5126 -0.5305 -0.6752 +vn -0.4498 -0.6026 -0.6593 +vn -0.4365 -0.6386 -0.6337 +vn -0.3916 -0.6676 -0.6332 +vn -0.4134 -0.6615 -0.6257 +vn -0.7736 -0.0813 -0.6284 +vn -0.7584 -0.0961 -0.6446 +vn -0.7513 -0.1078 -0.6511 +vn -0.7311 -0.1213 -0.6714 +vn -0.7248 -0.1221 -0.6781 +vn -0.7196 -0.1347 -0.6812 +vn -0.7211 -0.1348 -0.6796 +vn -0.7140 -0.1475 -0.6844 +vn -0.7124 -0.1499 -0.6856 +vn -0.9868 -0.0326 -0.1587 +vn 0.9153 -0.0085 0.4027 +vn 0.9490 0.0409 0.3126 +vn 0.9352 0.0306 0.3527 +vn 0.9139 -0.0323 0.4046 +vn 0.9159 -0.0137 0.4012 +vn 0.9117 -0.0499 0.4078 +vn 0.9353 -0.1674 0.3118 +vn 0.9222 -0.0904 0.3759 +vn 0.9387 -0.2437 0.2439 +vn 0.9308 -0.3253 0.1669 +vn 0.9081 -0.4111 0.0803 +vn 0.8223 -0.5614 -0.0928 +vn 0.7247 -0.6533 -0.2193 +vn 0.4771 -0.7646 -0.4332 +vn 0.3447 -0.7855 -0.5139 +vn 0.1976 -0.7876 -0.5837 +vn -0.1387 -0.7220 -0.6779 +vn 0.0783 -0.7831 -0.6170 +vn -0.2238 -0.7486 -0.6241 +vn -0.0894 -0.8085 -0.5817 +vn -0.2382 -0.7553 -0.6106 +vn -0.2001 -0.7807 -0.5921 +vn 0.9503 0.0463 0.3078 +vn 0.9151 0.0608 0.3987 +vn 0.9726 0.0398 0.2293 +vn 0.9864 0.0203 0.1633 +vn 0.9960 -0.0330 0.0832 +vn 0.9963 -0.0808 0.0286 +vn 0.9858 -0.1255 -0.1120 +vn 0.9744 -0.1391 -0.1767 +vn 0.9586 -0.1842 -0.2172 +vn 0.5871 -0.3747 -0.7176 +vn 0.9536 -0.2018 -0.2235 +vn 0.2171 -0.3944 -0.8929 +vn -0.1478 -0.4282 -0.8915 +vn -0.0251 -0.4874 -0.8728 +vn -0.0884 -0.5086 -0.8565 +vn -0.0700 -0.5281 -0.8463 +vn -0.0769 -0.5185 -0.8516 +vn -0.0241 -0.5978 -0.8013 +vn -0.0512 -0.5563 -0.8294 +vn 0.0004 -0.6442 -0.7649 +vn 0.0173 -0.6873 -0.7261 +vn 0.0261 -0.7478 -0.6635 +vn 0.0155 -0.7735 -0.6337 +vn 0.0025 -0.8336 -0.5524 +vn 0.0054 -0.8486 -0.5291 +vn -0.1966 -0.7541 -0.6266 +vn -0.2370 -0.7305 -0.6405 +vn -0.2262 -0.7316 -0.6431 +vn -0.4058 -0.2872 -0.8677 +vn -0.3934 -0.2833 -0.8746 +vn -0.4003 -0.2806 -0.8724 +vn -0.3965 -0.2789 -0.8747 +vn -0.6269 -0.0341 -0.7784 +vn -0.6356 -0.0276 -0.7715 +vn 0.2285 0.1176 -0.9664 +vn 0.0892 0.0679 -0.9937 +vn -0.7038 -0.1602 -0.6921 +vn 0.9455 -0.2153 -0.2442 +vn 0.7110 0.1575 0.6853 +vn 0.9219 -0.1075 0.3722 +vn 0.2302 0.1395 0.9631 +vn 0.1427 0.0755 0.9869 +vn 0.1250 -0.0104 0.9921 +vn 0.1918 -0.0772 0.9784 +vn 0.3052 -0.0991 0.9471 +vn 0.4076 -0.0785 0.9098 +vn 0.5220 0.1173 0.8448 +vn 0.5506 0.0747 0.8315 +vn 0.5534 0.0256 0.8326 +vn 0.5291 -0.0226 0.8483 +vn 0.4745 -0.0632 0.8780 +vn 0.3948 -0.0813 0.9152 +vn -0.4096 -0.0718 -0.9094 +vn -0.6958 -0.4470 -0.5623 +vn -0.6346 0.3607 -0.6835 +vn 0.7403 -0.6667 0.0863 +vn 0.4653 0.7719 -0.4331 +vn 0.6928 0.0466 0.7196 +vn -0.8502 -0.0523 0.5238 +vn -0.8173 -0.1774 -0.5483 +vn 0.8452 -0.0409 0.5330 +vn 0.8273 -0.2009 0.5247 +vn 0.8452 -0.0408 0.5330 +vn 0.8358 -0.1467 0.5291 +vn 0.5950 -0.7039 0.3878 +vn 0.7445 -0.4667 0.4775 +vn -0.3336 -0.9228 -0.1928 +vn 0.2464 -0.9536 0.1730 +vn -0.7268 -0.5208 -0.4479 +vn -0.6290 -0.6762 -0.3835 +vn -0.8204 -0.2549 -0.5118 +vn -0.8122 -0.2902 -0.5060 +vn -0.8452 -0.0605 -0.5311 +vn -0.8453 -0.0563 -0.5313 +vn -0.8272 0.2010 -0.5247 +vn -0.8358 0.1466 -0.5291 +vn -0.5956 0.7033 -0.3882 +vn -0.7444 0.4667 -0.4775 +vn 0.3339 0.9227 0.1930 +vn -0.2463 0.9536 -0.1729 +vn 0.7268 0.5206 0.4479 +vn 0.6291 0.6762 0.3835 +vn 0.8204 0.2548 0.5118 +vn 0.8122 0.2903 0.5060 +vn 0.8371 0.1567 0.5242 +vn 0.3415 0.0760 0.9368 +vn 0.3411 0.0757 0.9370 +vn 0.3397 0.0757 0.9375 +vn 0.3420 0.0761 0.9366 +vn 0.3419 0.0759 0.9367 +vn 0.3412 0.0756 0.9369 +vn 0.3418 0.0763 0.9367 +vn 0.3416 0.0761 0.9368 +vn 0.3417 0.0763 0.9367 +vn 0.3418 0.0760 0.9367 +vn 0.3415 0.0763 0.9368 +vn 0.4084 0.2193 0.8861 +vn 0.4084 0.2192 0.8861 +vn -0.0933 -0.9932 -0.0693 +vn 0.0933 0.9932 0.0693 +vn 0.4096 0.0718 0.9094 +vn -0.4098 -0.0797 -0.9087 +vn 0.4088 0.0438 0.9116 +vn 0.3870 0.4484 0.8057 +vn -0.1967 0.8078 -0.5557 +vn -0.8749 -0.0574 -0.4809 +vn 0.4090 0.0504 0.9111 +vn 0.8749 0.0574 0.4809 +vn 0.4098 0.0718 0.9094 +vn 0.4102 0.0718 0.9092 +vn 0.4091 0.0719 0.9097 +vn 0.4094 0.0718 0.9095 +vn 0.4099 0.0717 0.9093 +vn 0.4094 0.0719 0.9095 +vn 0.4092 0.0719 0.9096 +vn 0.4099 0.0718 0.9093 +vn 0.4092 0.0718 0.9096 +vn 0.4098 0.0719 0.9093 +vn 0.4093 0.0718 0.9096 +vn 0.4096 0.0719 0.9094 +vn 0.4095 0.0718 0.9095 +vn 0.4090 0.0716 0.9097 +vn 0.4101 0.0722 0.9092 +vn 0.4070 0.0700 0.9107 +vn 0.4813 0.3916 0.7842 +vn 0.4290 0.4479 0.7844 +vn 0.4306 0.4416 0.7871 +vn 0.4724 0.3956 0.7876 +vn 0.5546 0.3537 0.7532 +vn 0.5477 0.3602 0.7552 +vn 0.5970 0.2939 0.7465 +vn 0.5971 0.2932 0.7466 +vn 0.6386 0.2541 0.7264 +vn 0.6384 0.2543 0.7265 +vn 0.6565 0.1998 0.7274 +vn 0.6558 0.1978 0.7286 +vn 0.6826 0.1580 0.7135 +vn 0.6836 0.1595 0.7122 +vn 0.6822 0.1112 0.7227 +vn 0.6808 0.1104 0.7241 +vn 0.6979 0.0673 0.7130 +vn 0.6994 0.0675 0.7116 +vn 0.6847 0.0238 0.7284 +vn 0.6831 0.0246 0.7299 +vn 0.6881 -0.0267 0.7251 +vn 0.6896 -0.0275 0.7237 +vn 0.6629 -0.0703 0.7454 +vn 0.6616 -0.0686 0.7467 +vn 0.6458 -0.1344 0.7516 +vn 0.6474 -0.1316 0.7507 +vn 0.6010 -0.1772 0.7794 +vn 0.6027 -0.1759 0.7783 +vn 0.5453 -0.2621 0.7962 +vn 0.5582 -0.2490 0.7915 +vn 0.4570 -0.3016 0.8368 +vn 0.4754 -0.2918 0.8299 +vn 0.4064 -0.3641 0.8380 +vn 0.4037 -0.3735 0.8352 +vn -0.4109 -0.0424 -0.9107 +vn -0.4109 -0.0421 -0.9107 +vn -0.4158 -0.0422 -0.9085 +vn -0.4162 -0.0420 -0.9083 +vn -0.4241 -0.0452 -0.9045 +vn -0.4233 -0.0451 -0.9049 +vn -0.4301 -0.0470 -0.9016 +vn -0.4315 -0.0476 -0.9009 +vn -0.4365 -0.0519 -0.8982 +vn -0.4355 -0.0512 -0.8988 +vn -0.4407 -0.0553 -0.8959 +vn -0.4418 -0.0565 -0.8953 +vn -0.4419 -0.0570 -0.8952 +vn -0.4424 -0.0577 -0.8950 +vn -0.4468 -0.0676 -0.8921 +vn -0.4464 -0.0650 -0.8925 +vn -0.4476 -0.1196 -0.8862 +vn -0.4485 -0.1202 -0.8857 +vn -0.4172 -0.2146 -0.8831 +vn -0.4142 -0.2329 -0.8799 +vn -0.2513 -0.4561 -0.8537 +vn -0.2933 -0.3763 -0.8789 +vn 0.0166 -0.5991 -0.8005 +vn -0.0174 -0.5743 -0.8184 +vn 0.2795 -0.5879 -0.7591 +vn 0.3531 -0.6186 -0.7019 +vn 0.6217 -0.5243 -0.5818 +vn 0.6313 -0.5324 -0.5640 +vn 0.6139 -0.3574 -0.7038 +vn 0.3505 -0.3176 -0.8811 +vn 0.0597 -0.1732 -0.9831 +vn 0.1558 -0.1864 -0.9700 +vn -0.0596 -0.1137 -0.9917 +vn -0.0625 -0.0958 -0.9934 +vn -0.2694 0.9628 0.0209 +vn -0.1576 0.9825 0.0996 +vn -0.2238 0.9735 0.0469 +vn -0.2460 0.9687 0.0322 +vn -0.6685 0.7118 -0.2153 +vn -0.3668 0.9302 -0.0165 +vn -0.7745 0.5631 -0.2882 +vn -0.7382 0.6294 -0.2427 +vn -0.8277 0.4575 -0.3250 +vn -0.8561 0.3693 -0.3616 +vn -0.8885 0.2323 -0.3958 +vn -0.8831 0.2628 -0.3887 +vn -0.9005 0.1267 -0.4159 +vn -0.8994 0.1501 -0.4106 +vn -0.9037 0.0442 -0.4258 +vn -0.9045 0.0296 -0.4255 +vn -0.9037 -0.0454 -0.4257 +vn -0.9036 -0.0554 -0.4248 +vn -0.8972 -0.1213 -0.4247 +vn -0.8958 -0.1274 -0.4257 +vn -0.8633 -0.2621 -0.4313 +vn -0.8855 -0.2065 -0.4163 +vn -0.8469 -0.3081 -0.4333 +vn -0.8064 -0.4060 -0.4299 +vn -0.7924 -0.4449 -0.4173 +vn -0.7882 -0.4499 -0.4200 +vn -0.7551 -0.5201 -0.3992 +vn -0.7486 -0.5309 -0.3972 +vn -0.6393 -0.6935 -0.3322 +vn -0.6050 -0.7327 -0.3116 +vn -0.3715 -0.9112 -0.1781 +vn -0.4462 -0.8673 -0.2206 +vn -0.2316 -0.9679 -0.0977 +vn -0.3710 -0.9109 -0.1808 +vn 0.0932 0.9932 0.0693 +vn 0.4983 0.7010 0.5102 +vn 0.5240 0.7162 0.4610 +vn 0.6983 0.4522 0.5549 +vn 0.6422 0.5528 0.5311 +vn 0.5531 0.7207 0.4180 +vn 0.4098 0.8044 0.4301 +vn 0.3345 0.8367 0.4337 +vn 0.7170 0.4092 0.5643 +vn 0.5940 0.6577 0.4633 +vn 0.7834 0.2975 0.5457 +vn 0.7192 0.4811 0.5013 +vn -0.4097 -0.0721 -0.9094 +vn -0.4084 -0.0719 -0.9100 +vn -0.4108 -0.0716 -0.9089 +vn -0.4054 -0.0717 -0.9113 +vn -0.4017 -0.0715 -0.9130 +vn -0.3999 -0.0718 -0.9137 +vn 0.4339 0.0716 0.8981 +vn 0.4340 0.0718 0.8981 +vn 0.4352 0.0709 0.8975 +vn 0.4335 0.0712 0.8983 +vn 0.4316 0.0718 0.8992 +vn -0.1722 -0.8869 -0.4286 +vn -0.1779 -0.8765 -0.4474 +vn -0.1833 -0.7288 -0.6598 +vn 0.0319 -0.8060 -0.5910 +vn 0.3540 -0.9159 -0.1892 +vn 0.5624 -0.8247 -0.0599 +vn 0.5388 -0.7665 -0.3495 +vn 0.7081 -0.6740 -0.2107 +vn 0.8332 -0.5277 0.1653 +vn 0.8785 -0.4272 0.2136 +vn 0.9184 -0.3946 -0.0280 +vn 0.9467 -0.3214 0.0215 +vn 0.9371 -0.1853 0.2958 +vn 0.9385 -0.1412 0.3152 +vn 0.9936 -0.0678 0.0901 +vn 0.9924 -0.1020 0.0683 +vn 0.9435 0.0454 0.3281 +vn 0.9399 0.0528 0.3373 +vn 0.9848 0.1438 0.0974 +vn 0.9842 0.1567 0.0827 +vn 0.9165 0.2557 0.3075 +vn 0.9179 0.2332 0.3210 +vn 0.9315 0.3598 0.0536 +vn 0.9126 0.4082 0.0218 +vn 0.8526 0.4622 0.2440 +vn 0.8249 0.5218 0.2174 +vn 0.7584 0.6400 -0.1234 +vn 0.6418 0.7251 -0.2496 +vn 0.6386 0.7685 0.0397 +vn 0.5397 0.8417 -0.0156 +vn -0.0664 0.7496 -0.6585 +vn 0.0824 0.7713 -0.6312 +vn -0.0998 0.7808 -0.6168 +vn -0.0915 0.7902 -0.6060 +vn 0.2625 0.9504 0.1665 +vn 0.2428 0.9588 0.1477 +vn 0.2739 0.9453 0.1774 +vn 0.2928 0.9360 0.1955 +vn 0.0302 -0.9842 -0.1746 +vn 0.1539 -0.9828 -0.1017 +vn 0.2638 -0.9635 -0.0451 +vn 0.2052 -0.9744 -0.0918 +vn 0.5534 -0.8241 0.1209 +vn 0.6599 -0.7262 0.1928 +vn 0.0707 -0.9852 -0.1558 +vn 0.7611 -0.5866 0.2768 +vn 0.7779 -0.5589 0.2873 +vn 0.5408 -0.8328 0.1183 +vn 0.8443 -0.4128 0.3417 +vn 0.2071 -0.9749 -0.0814 +vn 0.8554 -0.3707 0.3618 +vn 0.7481 -0.6084 0.2648 +vn 0.8883 -0.2303 0.3974 +vn 0.8382 -0.4281 0.3379 +vn 0.8867 -0.2495 0.3892 +vn 0.0452 -0.9912 -0.1242 +vn 0.2159 -0.9751 -0.0512 +vn 0.5627 -0.8121 0.1544 +vn 0.8399 -0.4060 0.3602 +vn 0.7568 -0.5848 0.2920 +vn 0.8847 -0.2626 0.3853 +vn 0.8804 -0.2467 0.4050 +vn 0.0880 -0.9961 0.0054 +vn 0.5864 -0.7705 0.2499 +vn 0.7552 -0.5475 0.3603 +vn 0.2617 -0.9630 0.0639 +vn 0.8298 -0.3763 0.4121 +vn 0.8664 -0.2299 0.4433 +vn 0.0486 -0.9988 0.0075 +vn 0.6052 -0.7303 0.3169 +vn 0.2819 -0.9499 0.1353 +vn 0.8232 -0.3536 0.4442 +vn 0.7506 -0.5251 0.4011 +vn 0.1098 -0.9930 0.0436 +vn 0.6010 -0.7326 0.3196 +vn 0.2959 -0.9433 0.1507 +vn 0.8571 -0.2206 0.4655 +vn 0.8213 -0.3566 0.4453 +vn 0.7529 -0.5176 0.4065 +vn 0.2079 -0.9642 0.1643 +vn 0.5969 -0.7228 0.3482 +vn 0.3254 -0.9225 0.2077 +vn 0.8143 -0.3523 0.4614 +vn 0.7515 -0.4992 0.4314 +vn 0.8567 -0.2188 0.4670 +vn 0.2605 -0.9272 0.2690 +vn 0.6003 -0.6840 0.4145 +vn 0.3526 -0.8899 0.2894 +vn 0.7436 -0.4667 0.4788 +vn 0.8509 -0.2126 0.4803 +vn 0.7993 -0.3347 0.4991 +vn 0.2581 -0.9154 0.3090 +vn 0.3943 -0.8448 0.3617 +vn 0.6251 -0.6221 0.4715 +vn 0.8657 -0.1161 0.4870 +vn 0.7926 -0.3072 0.5267 +vn 0.8359 -0.1987 0.5117 +vn 0.7363 -0.4487 0.5064 +vn 0.2479 -0.9113 0.3289 +vn 0.6238 -0.6180 0.4785 +vn 0.3994 -0.8319 0.3853 +vn 0.7918 -0.2993 0.5324 +vn 0.8241 -0.1848 0.5355 +vn 0.7341 -0.4428 0.5149 +vn 0.8500 -0.1087 0.5154 +vn 0.9000 -0.1275 0.4168 +vn 0.3261 -0.8713 0.3667 +vn 0.5414 -0.7074 0.4544 +vn 0.9022 -0.1392 0.4082 +vn 0.6189 -0.5938 0.5141 +vn 0.7233 -0.4270 0.5427 +vn 0.2453 -0.9083 0.3389 +vn 0.8221 -0.1835 0.5390 +vn 0.7821 -0.2868 0.5533 +vn 0.5423 -0.6692 0.5080 +vn 0.8949 -0.1357 0.4251 +vn 0.7121 -0.3939 0.5812 +vn 0.4362 -0.7234 0.5352 +vn 0.8381 -0.0990 0.5365 +vn 0.7666 -0.2672 0.5839 +vn 0.8716 -0.0234 0.4897 +vn 0.8117 -0.1794 0.5559 +vn 0.8360 -0.0993 0.5397 +vn 0.8807 -0.1245 0.4570 +vn 0.7961 -0.1660 0.5819 +vn 0.6611 -0.4611 0.5919 +vn 0.7002 -0.3948 0.5948 +vn 0.8263 -0.0904 0.5560 +vn 0.7569 -0.2732 0.5937 +vn 0.8109 -0.0827 0.5794 +vn 0.7903 -0.1668 0.5895 +vn 0.8567 -0.0188 0.5155 +vn 0.8719 -0.1166 0.4756 +vn 0.8061 -0.0848 0.5857 +vn 0.8310 -0.0123 0.5561 +vn 0.8174 -0.0074 0.5760 +vn 0.8448 -0.0173 0.5349 +vn 0.8419 -0.0172 0.5393 +vn 0.8715 -0.1179 0.4761 +vn 0.8137 -0.0080 0.5812 +vn 0.8165 0.0615 0.5741 +vn 0.8293 0.0606 0.5555 +vn 0.8131 0.0609 0.5789 +vn 0.8457 0.0582 0.5305 +vn 0.8566 0.0585 0.5127 +vn 0.8414 0.0619 0.5369 +vn 0.8705 0.0578 0.4887 +vn 0.8104 0.1288 0.5716 +vn 0.8228 0.1304 0.5532 +vn 0.8373 0.1369 0.5293 +vn 0.8331 0.1391 0.5353 +vn 0.8504 0.1344 0.5088 +vn 0.8070 0.1285 0.5764 +vn 0.8638 0.1346 0.4856 +vn 0.7972 0.1978 0.5704 +vn 0.8105 0.2032 0.5494 +vn 0.7931 0.1985 0.5758 +vn 0.8247 0.2111 0.5247 +vn 0.8366 0.2173 0.5029 +vn 0.8210 0.2108 0.5306 +vn 0.8499 0.2207 0.4785 +vn 0.7724 0.2703 0.5748 +vn 0.8766 -0.0246 0.4806 +vn 0.9019 -0.1470 0.4061 +vn 0.7902 0.2787 0.5458 +vn 0.7770 0.2705 0.5684 +vn 0.8048 0.2893 0.5182 +vn 0.8175 0.2962 0.4939 +vn 0.8012 0.2858 0.5257 +vn 0.8297 0.3030 0.4689 +vn 0.7375 0.3559 0.5740 +vn 0.7579 0.3661 0.5400 +vn 0.7448 0.3529 0.5664 +vn 0.7726 0.3824 0.5069 +vn 0.7816 0.4114 0.4688 +vn 0.7674 0.3792 0.5170 +vn 0.7909 0.4149 0.4498 +vn 0.6863 0.4494 0.5719 +vn 0.7050 0.4735 0.5281 +vn 0.6944 0.4502 0.5614 +vn 0.7176 0.5031 0.4816 +vn 0.7118 0.5786 0.3982 +vn 0.7103 0.4930 0.5025 +vn 0.7447 0.5234 0.4140 +vn 0.8748 0.0574 0.4811 +vn 0.5996 0.5690 0.5627 +vn 0.6240 0.5935 0.5084 +vn 0.6287 0.6136 0.4777 +vn 0.6171 0.5628 0.5500 +vn 0.6656 0.5723 0.4790 +vn 0.8673 0.1360 0.4788 +vn 0.6562 0.6299 0.4156 +vn 0.6833 0.5698 0.4566 +vn 0.4351 0.7244 0.5347 +vn 0.4565 0.7566 0.4682 +vn 0.5715 0.6863 0.4498 +vn 0.8532 0.2208 0.4725 +vn 0.4627 0.7202 0.5169 +vn 0.5775 0.6840 0.4456 +vn 0.3657 0.7823 0.5044 +vn 0.3396 0.8281 0.4460 +vn 0.7944 0.4137 0.4448 +vn 0.5094 0.7342 0.4489 +vn 0.3743 0.7684 0.5191 +vn 0.3240 0.8565 0.4018 +vn 0.7361 0.5262 0.4258 +vn 0.9067 -0.0397 0.4199 +vn 0.9042 -0.0295 0.4261 +vn 0.9056 0.0490 0.4213 +vn 0.9035 0.0549 0.4252 +vn 0.9071 -0.0384 0.4192 +vn 0.8984 0.1252 0.4211 +vn 0.9047 0.0541 0.4225 +vn 0.8956 0.1272 0.4264 +vn 0.8958 0.1433 0.4208 +vn 0.8861 0.2035 0.4164 +vn 0.8796 0.2382 0.4118 +vn 0.8987 -0.0326 0.4374 +vn 0.8839 0.2090 0.4183 +vn 0.8957 0.0545 0.4412 +vn 0.8317 0.3058 0.4635 +vn 0.8871 0.1398 0.4399 +vn 0.8723 0.2289 0.4320 +vn 0.8851 -0.0277 0.4646 +vn 0.8828 0.0558 0.4665 +vn 0.8748 0.1373 0.4646 +vn 0.8606 0.2226 0.4582 +vn 0.8750 0.0571 0.4807 +vn 0.7187 0.5445 0.4323 +vn 0.8769 -0.0248 0.4801 +vn 0.8498 0.3215 0.4178 +vn 0.8388 0.3111 0.4468 +vn 0.8538 0.2194 0.4721 +vn 0.8677 0.1365 0.4780 +vn 0.8320 0.3069 0.4622 +vn 0.8547 0.3332 0.3980 +vn 0.8011 0.4213 0.4252 +vn 0.8686 0.2796 0.4091 +vn 0.8098 0.4382 0.3901 +vn 0.7958 0.4109 0.4448 +vn 0.7362 0.5332 0.4169 +vn 0.7348 0.5371 0.4143 +vn 0.7402 0.5473 0.3905 +vn 0.6313 0.6865 0.3609 +vn 0.6311 0.6820 0.3695 +vn 0.6313 0.6866 0.3605 +vn 0.7454 0.5692 0.3469 +vn 0.6258 0.7095 0.3241 +vn 0.6184 0.7402 0.2639 +vn 0.4266 0.8680 0.2541 +vn 0.4017 0.8843 0.2380 +vn 0.3966 0.8971 0.1945 +vn 0.4358 0.8623 0.2580 +vn 0.7421 0.5856 0.3261 +vn 0.3769 0.9185 0.1194 +vn 0.6068 0.7579 0.2394 +vn 0.2902 0.9405 0.1768 +vn 0.8103 0.4552 0.3691 +vn 0.5523 0.7711 0.3167 +vn 0.2607 0.9550 0.1414 +vn 0.2449 0.9675 0.0630 +vn 0.2251 0.9641 0.1411 +vn 0.8661 0.2833 0.4117 +vn 0.3818 0.9185 0.1031 +vn 0.2853 0.9426 0.1737 +vn 0.7804 0.5143 0.3556 +vn 0.2685 0.9629 0.0291 +vn 0.5650 0.7655 0.3080 +vn 0.6715 0.6817 0.2905 +vn 0.8351 0.3865 0.3914 +vn 0.4259 0.8949 0.1334 +vn 0.6497 0.7106 0.2700 +vn 0.7827 0.5061 0.3621 +vn 0.2678 0.9625 0.0432 +vn 0.8287 0.4065 0.3848 +vn 0.4655 0.8721 0.1506 +vn 0.3747 0.9201 0.1143 +vn 0.3005 -0.8351 0.4607 +vn 0.2200 -0.8776 0.4260 +vn 0.2068 -0.8932 0.3992 +vn 0.3545 -0.8302 0.4302 +vn 0.2067 -0.9282 0.3093 +vn 0.5084 -0.7234 0.4671 +vn 0.4504 -0.7877 0.4204 +vn 0.5083 -0.7382 0.4434 +vn 0.5213 -0.6628 0.5376 +vn -0.8778 -0.0786 -0.4725 +vn -0.8777 -0.0793 -0.4727 +vn -0.8777 -0.0790 -0.4727 +vn -0.8775 -0.0798 -0.4729 +vn -0.8775 -0.0801 -0.4729 +vn -0.8773 -0.0807 -0.4732 +vn -0.8812 -0.0569 -0.4693 +vn -0.9524 -0.0479 -0.3012 +vn -0.8734 -0.0576 -0.4836 +vn -0.7694 -0.0644 -0.6355 +vn -0.4126 -0.8689 -0.2733 +vn -0.1439 -0.9819 -0.1234 +vn -0.2642 -0.9453 -0.1911 +vn -0.4203 -0.8639 -0.2776 +vn -0.9911 -0.0472 -0.1242 +vn -0.9912 -0.0376 -0.1268 +vn -0.9912 -0.0409 -0.1259 +vn -0.9911 -0.0494 -0.1235 +vn 0.4151 0.0608 0.9077 +vn 0.4155 0.0608 0.9076 +vn 0.4097 0.0614 0.9102 +vn 0.4093 0.0614 0.9103 +vn 0.4100 0.0721 0.9092 +vn 0.4089 0.0718 0.9097 +vn 0.4097 0.0718 0.9094 +vn 0.4094 0.0717 0.9095 +vn 0.4095 0.0717 0.9095 +vn 0.4099 0.0720 0.9093 +vn 0.4091 0.0717 0.9097 +vn 0.4097 0.0719 0.9094 +vn 0.4104 0.0724 0.9090 +vn 0.4110 0.0729 0.9087 +vn 0.4071 0.0701 0.9107 +vn 0.3305 0.4919 0.8054 +vn 0.3304 0.4968 0.8025 +vn 0.2944 0.4761 0.8287 +vn 0.2268 0.5017 0.8348 +vn 0.1136 0.5575 0.8224 +vn -0.0072 0.5722 0.8201 +vn -0.0772 0.5405 0.8378 +vn -0.1814 0.5352 0.8251 +vn -0.3320 0.5475 0.7681 +vn -0.5014 0.4907 0.7126 +vn -0.5111 0.4222 0.7487 +vn -0.5779 0.3800 0.7222 +vn -0.8055 0.2443 0.5399 +vn -0.7477 0.3222 0.5806 +vn -0.7594 0.1634 0.6297 +vn -0.7702 0.1318 0.6241 +vn -0.8871 -0.0038 0.4616 +vn -0.8891 0.0128 0.4575 +vn -0.7846 -0.1186 0.6085 +vn -0.7848 -0.1047 0.6108 +vn -0.8321 -0.2304 0.5045 +vn -0.8031 -0.2810 0.5254 +vn -0.5938 -0.3652 0.7170 +vn -0.6439 -0.3287 0.6909 +vn -0.5964 -0.4465 0.6671 +vn -0.4562 -0.5002 0.7360 +vn -0.2931 -0.4778 0.8281 +vn -0.1745 -0.4834 0.8578 +vn -0.1200 -0.5311 0.8388 +vn 0.0277 -0.5126 0.8582 +vn 0.1614 -0.4379 0.8844 +vn 0.2536 -0.4044 0.8787 +vn 0.2911 -0.4284 0.8554 +vn 0.2904 -0.4333 0.8532 +vn -0.4065 -0.0419 -0.9127 +vn -0.4065 -0.0422 -0.9127 +vn -0.4020 -0.0415 -0.9147 +vn -0.4003 -0.0413 -0.9155 +vn -0.3923 -0.0440 -0.9188 +vn -0.3939 -0.0438 -0.9181 +vn -0.3862 -0.0452 -0.9213 +vn -0.3840 -0.0461 -0.9222 +vn -0.3786 -0.0502 -0.9242 +vn -0.3800 -0.0494 -0.9237 +vn -0.3737 -0.0536 -0.9260 +vn -0.3723 -0.0549 -0.9265 +vn -0.3723 -0.0555 -0.9265 +vn -0.3718 -0.0561 -0.9266 +vn -0.3668 -0.0666 -0.9279 +vn -0.3670 -0.0648 -0.9280 +vn -0.3673 -0.1249 -0.9217 +vn -0.3663 -0.1272 -0.9218 +vn -0.4006 -0.2261 -0.8879 +vn -0.3990 -0.2238 -0.8892 +vn -0.4797 -0.3247 -0.8152 +vn -0.4871 -0.3296 -0.8087 +vn -0.5656 -0.3506 -0.7464 +vn -0.5665 -0.3530 -0.7446 +vn -0.6239 -0.3020 -0.7208 +vn -0.6232 -0.3008 -0.7219 +vn -0.6647 -0.2533 -0.7029 +vn -0.6648 -0.2544 -0.7023 +vn -0.6493 -0.1761 -0.7398 +vn -0.6483 -0.1749 -0.7411 +vn -0.5989 -0.1210 -0.7917 +vn -0.6016 -0.1222 -0.7894 +vn -0.5717 -0.0910 -0.8154 +vn -0.5712 -0.0855 -0.8164 +vn 0.4637 0.7978 0.3853 +vn 0.4319 0.8156 0.3851 +vn 0.4524 0.8027 0.3885 +vn 0.4735 0.7870 0.3956 +vn 0.5707 0.6973 0.4336 +vn 0.6437 0.6011 0.4737 +vn 0.7174 0.4923 0.4929 +vn 0.7238 0.4726 0.5028 +vn 0.7750 0.3721 0.5108 +vn 0.7600 0.4112 0.5033 +vn 0.8057 0.2912 0.5157 +vn 0.8081 0.2834 0.5164 +vn 0.8265 0.2170 0.5195 +vn 0.8281 0.2068 0.5211 +vn 0.8421 0.1366 0.5217 +vn 0.8417 0.1351 0.5227 +vn 0.8475 0.0674 0.5265 +vn 0.8476 0.0592 0.5273 +vn 0.8496 0.0046 0.5274 +vn 0.8502 -0.0085 0.5264 +vn 0.8493 -0.1461 0.5072 +vn 0.8452 -0.0834 0.5279 +vn 0.8448 -0.2090 0.4926 +vn 0.8219 -0.3275 0.4660 +vn 0.7952 -0.3995 0.4561 +vn 0.8060 -0.3757 0.4574 +vn 0.7888 -0.4194 0.4493 +vn 0.7545 -0.4959 0.4299 +vn 0.6716 -0.6293 0.3910 +vn 0.4861 -0.8230 0.2939 +vn 0.4876 -0.8233 0.2907 +vn 0.2933 -0.9376 0.1868 +vn 0.1104 -0.9897 0.0917 +vn 0.2719 -0.9464 0.1745 +vn -0.1875 0.9342 0.3036 +vn 0.1431 0.8831 0.4467 +vn 0.1206 0.9140 0.3875 +vn -0.0930 0.9433 0.3186 +vn 0.0992 0.9424 0.3195 +vn -0.4884 0.8667 0.1017 +vn -0.1529 0.9673 0.2022 +vn -0.0909 0.9771 0.1924 +vn 0.0916 0.9486 0.3029 +vn -0.4309 0.9016 -0.0379 +vn -0.5358 0.8440 -0.0233 +vn -0.5759 0.8143 0.0727 +vn -0.4392 0.8964 -0.0602 +vn -0.5662 0.8166 -0.1122 +vn -0.7345 0.6741 -0.0780 +vn -0.6018 0.7808 -0.1676 +vn -0.7462 0.6434 -0.1710 +vn -0.7468 0.6202 -0.2400 +vn -0.7751 0.6255 -0.0891 +vn -0.8613 0.4670 -0.2001 +vn -0.8572 0.4381 -0.2708 +vn -0.8479 0.4146 -0.3306 +vn -0.7559 0.5894 -0.2850 +vn -0.6872 0.6734 -0.2725 +vn -0.8844 0.4178 -0.2078 +vn -0.9157 0.2936 -0.2744 +vn -0.8913 0.2574 -0.3732 +vn -0.6465 0.6714 -0.3622 +vn -0.8464 0.4004 -0.3511 +vn -0.9037 0.2748 -0.3284 +vn -0.9239 0.2739 -0.2671 +vn -0.7221 0.5916 -0.3586 +vn -0.9363 0.1625 -0.3112 +vn -0.9072 0.1453 -0.3947 +vn -0.9222 0.1523 -0.3555 +vn -0.8866 0.2541 -0.3866 +vn -0.8332 0.3888 -0.3931 +vn -0.9417 0.1450 -0.3036 +vn -0.9277 0.0432 -0.3708 +vn -0.9133 0.0465 -0.4045 +vn -0.9416 0.0491 -0.3331 +vn -0.9033 0.1403 -0.4055 +vn -0.8746 0.2384 -0.4222 +vn -0.9453 0.0428 -0.3233 +vn -0.9397 -0.0494 -0.3383 +vn -0.9432 -0.0520 -0.3281 +vn -0.9108 -0.0505 -0.4097 +vn -0.9092 0.0417 -0.4143 +vn -0.9257 -0.0510 -0.3747 +vn -0.8907 0.1341 -0.4344 +vn -0.9306 -0.1447 -0.3364 +vn -0.9161 -0.1441 -0.3741 +vn -0.9027 -0.1443 -0.4053 +vn -0.9057 -0.0558 -0.4203 +vn -0.9346 -0.1423 -0.3259 +vn -0.8967 0.0326 -0.4415 +vn -0.9154 -0.2442 -0.3199 +vn -0.9213 -0.2349 -0.3099 +vn -0.8875 -0.2362 -0.3955 +vn -0.8997 -0.1433 -0.4123 +vn -0.9008 -0.2373 -0.3638 +vn -0.8950 -0.0558 -0.4426 +vn -0.8970 -0.3404 -0.2820 +vn -0.8756 -0.3408 -0.3422 +vn -0.8664 -0.3279 -0.3767 +vn -0.8891 -0.3522 -0.2924 +vn -0.8861 -0.2340 -0.4002 +vn -0.8892 -0.1391 -0.4359 +vn -0.8650 -0.3260 -0.3814 +vn -0.8587 -0.4546 -0.2365 +vn -0.8334 -0.4631 -0.3017 +vn -0.8419 -0.4838 -0.2393 +vn -0.8257 -0.4477 -0.3432 +vn -0.8746 -0.2323 -0.4256 +vn -0.8223 -0.4494 -0.3492 +vn -0.8535 -0.3211 -0.4103 +vn -0.7789 -0.6086 -0.1516 +vn -0.7518 -0.6181 -0.2297 +vn -0.7518 -0.6416 -0.1521 +vn -0.7523 -0.5847 -0.3037 +vn -0.8101 -0.4487 -0.3774 +vn -0.7533 -0.5908 -0.2889 +vn -0.7498 -0.5696 -0.3367 +vn -0.6815 -0.7292 -0.0618 +vn -0.6077 -0.7850 -0.1200 +vn -0.3347 -0.9284 0.1612 +vn -0.6247 -0.7564 -0.1942 +vn -0.6275 -0.7496 -0.2107 +vn -0.5102 -0.8559 -0.0850 +vn -0.7995 -0.4267 -0.4227 +vn -0.6135 -0.7497 -0.2482 +vn -0.5230 -0.8443 -0.1166 +vn -0.3738 -0.9264 -0.0443 +vn -0.3688 -0.9291 -0.0265 +vn -0.7427 -0.5451 -0.3889 +vn -0.4568 -0.8868 -0.0704 +vn -0.2009 -0.9770 0.0711 +vn -0.7528 0.5208 -0.4026 +vn -0.3787 -0.9193 -0.1077 +vn -0.2366 -0.9715 0.0170 +vn -0.6186 -0.7200 -0.3146 +vn -0.7377 -0.5350 -0.4119 +vn -0.4066 -0.8929 -0.1933 +vn -0.1655 -0.9786 0.1226 +vn -0.8228 0.3702 -0.4312 +vn -0.2923 -0.9529 -0.0810 +vn -0.7951 -0.4143 -0.4429 +vn -0.4124 -0.8794 -0.2378 +vn -0.3114 -0.9366 -0.1606 +vn -0.6273 -0.6933 -0.3548 +vn -0.8608 0.2206 -0.4586 +vn -0.7350 -0.5374 -0.4136 +vn -0.8327 -0.3062 -0.4613 +vn -0.2730 -0.9484 -0.1611 +vn -0.4015 -0.8845 -0.2377 +vn -0.6312 -0.6871 -0.3598 +vn -0.8754 0.1225 -0.4676 +vn -0.7959 -0.4108 -0.4446 +vn -0.7306 -0.5230 -0.4389 +vn -0.8319 -0.3069 -0.4623 +vn -0.2278 -0.9627 -0.1459 +vn -0.4207 -0.8595 -0.2904 +vn -0.6259 -0.6758 -0.3894 +vn -0.8810 0.0246 -0.4724 +vn -0.7879 -0.4060 -0.4631 +vn -0.8246 -0.3017 -0.4786 +vn -0.6226 -0.6424 -0.4469 +vn -0.7201 -0.4994 -0.4817 +vn -0.3086 -0.9126 -0.2683 +vn -0.4444 -0.8132 -0.3758 +vn -0.8798 -0.0562 -0.4720 +vn -0.7120 -0.4992 -0.4939 +vn -0.6149 -0.6381 -0.4633 +vn -0.7740 -0.3924 -0.4969 +vn -0.3495 -0.8687 -0.3509 +vn -0.8729 -0.1377 -0.4681 +vn -0.4585 -0.7930 -0.4011 +vn -0.7185 -0.4886 -0.4949 +vn -0.4557 -0.7916 -0.4071 +vn -0.8593 -0.2242 -0.4597 +vn -0.6234 -0.6308 -0.4621 +vn -0.7652 -0.3944 -0.5089 +vn -0.8536 -0.2192 -0.4725 +vn -0.7698 -0.3853 -0.5088 +vn -0.3842 -0.8475 -0.3662 +vn -0.8388 -0.3106 -0.4472 +vn -0.8108 -0.2934 -0.5064 +vn -0.4467 -0.8023 -0.3959 +vn -0.5719 -0.6908 -0.4424 +vn -0.3695 -0.8493 -0.3771 +vn -0.7176 -0.4863 -0.4986 +vn -0.8058 -0.2874 -0.5178 +vn -0.7605 -0.4108 -0.5029 +vn -0.8060 -0.2917 -0.5150 +vn -0.4298 -0.8171 -0.3842 +vn -0.8462 -0.2178 -0.4863 +vn -0.8027 -0.2953 -0.5182 +vn -0.8269 -0.2171 -0.5187 +vn -0.8255 -0.2109 -0.5235 +vn -0.8393 -0.1363 -0.5263 +vn -0.8244 -0.2155 -0.5235 +vn -0.8393 -0.1354 -0.5265 +vn -0.8327 -0.2138 -0.5108 +vn -0.8419 -0.1355 -0.5223 +vn -0.8469 -0.0591 -0.5284 +vn -0.8475 -0.1341 -0.5135 +vn -0.8457 -0.0643 -0.5298 +vn -0.8536 -0.2205 -0.4720 +vn -0.8555 -0.0588 -0.5145 +vn -0.8604 -0.1356 -0.4913 +vn -0.8478 -0.0597 -0.5270 +vn -0.8485 0.0190 -0.5288 +vn -0.8481 0.0023 -0.5298 +vn -0.8575 0.0195 -0.5142 +vn -0.8681 -0.0579 -0.4931 +vn -0.8700 0.0226 -0.4926 +vn -0.8504 0.0088 -0.5260 +vn -0.8427 0.1086 -0.5273 +vn -0.8523 0.1080 -0.5118 +vn -0.8461 0.0751 -0.5277 +vn -0.8651 0.1138 -0.4884 +vn -0.8461 0.0870 -0.5259 +vn -0.8282 0.2029 -0.5223 +vn -0.8387 0.1501 -0.5235 +vn -0.8717 0.1166 -0.4760 +vn -0.8379 0.2035 -0.5065 +vn -0.8507 0.2134 -0.4804 +vn -0.8378 0.1645 -0.5206 +vn -0.7935 0.3320 -0.5100 +vn -0.8170 0.2636 -0.5128 +vn -0.8041 0.3320 -0.4932 +vn -0.8571 0.2204 -0.4657 +vn -0.8164 0.3474 -0.4613 +vn -0.8046 0.3026 -0.5110 +vn -0.7331 0.4769 -0.4849 +vn -0.8674 -0.1365 -0.4785 +vn -0.7419 0.4806 -0.4676 +vn -0.7699 0.4047 -0.4934 +vn -0.7494 0.5069 -0.4259 +vn -0.8748 -0.0571 -0.4811 +vn -0.8232 0.3541 -0.4437 +vn -0.7507 0.5258 -0.3999 +vn -0.7679 0.4147 -0.4883 +vn -0.5982 0.6788 -0.4259 +vn -0.6062 0.6843 -0.4054 +vn -0.6642 0.6004 -0.4455 +vn -0.8766 0.0247 -0.4806 +vn -0.6039 0.7175 -0.3471 +vn -0.7537 0.5222 -0.3991 +vn -0.6052 0.7305 -0.3163 +vn -0.5692 0.7117 -0.4118 +vn -0.3637 0.8784 -0.3100 +vn -0.8579 0.2200 -0.4643 +vn -0.3409 0.8992 -0.2744 +vn -0.4009 0.8596 -0.3167 +vn -0.3091 0.9319 -0.1897 +vn -0.2837 0.9490 -0.1376 +vn -0.3629 0.8827 -0.2986 +vn -0.8219 0.3596 -0.4417 +vn -0.2440 0.9403 -0.2373 +vn -0.6053 0.7298 -0.3177 +vn -0.2528 0.9327 -0.2573 +vn -0.1954 0.9567 -0.2158 +vn -0.3107 0.9381 -0.1527 +vn -0.1375 0.9833 -0.1194 +vn -0.3423 0.8962 -0.2822 +vn -0.0481 0.9988 -0.0081 +vn -0.7582 0.5219 -0.3908 +vn -0.1205 0.9919 -0.0399 +vn -0.8718 0.1188 -0.4752 +vn -0.4053 0.8920 -0.2000 +vn -0.6026 0.7383 -0.3031 +vn -0.1198 0.9917 -0.0476 +vn -0.7360 0.5733 -0.3600 +vn -0.4874 0.8361 -0.2518 +vn -0.5154 0.8078 -0.2862 +vn -0.8770 0.0243 -0.4799 +vn -0.8751 -0.0568 -0.4806 +vn -0.8677 -0.1362 -0.4781 +vn 0.0934 0.9932 0.0694 +vn -0.2268 0.9454 0.2341 +vn -0.1532 0.9543 0.2567 +vn -0.4052 0.9031 0.1424 +vn -0.5936 0.8029 -0.0558 +vn -0.7909 0.5637 -0.2384 +vn -0.4181 0.9060 -0.0661 +vn -0.8961 0.3053 -0.3222 +vn -0.5239 0.8469 -0.0911 +vn -0.3240 0.9461 0.0051 +vn 0.1114 0.9320 0.3448 +vn -0.4109 -0.0719 -0.9088 +vn -0.4095 -0.0721 -0.9095 +vn -0.4084 -0.0716 -0.9100 +vn -0.4132 -0.0716 -0.9078 +vn -0.4172 -0.0715 -0.9060 +vn -0.4189 -0.0718 -0.9052 +vn 0.3814 0.0708 0.9217 +vn 0.3830 0.0717 0.9210 +vn 0.3830 0.0716 0.9210 +vn 0.3833 0.0712 0.9209 +vn 0.3858 0.0718 0.9198 +vn -0.0808 0.9964 -0.0239 +vn -0.1075 0.9940 -0.0214 +vn -0.0989 0.9948 -0.0222 +vn -0.0724 0.9971 -0.0246 +vn -0.0616 -0.9770 0.2040 +vn -0.0079 -0.9476 0.3195 +vn -0.3444 -0.9293 0.1336 +vn -0.2547 -0.9589 0.1254 +vn -0.4357 -0.8989 0.0464 +vn -0.1287 -0.9827 0.1333 +vn -0.4260 -0.9011 0.0804 +vn -0.4830 -0.8713 -0.0868 +vn -0.2197 -0.9724 0.0783 +vn -0.3744 -0.1686 -0.9118 +vn -0.3723 -0.1678 -0.9128 +vn -0.3851 -0.1670 -0.9076 +vn -0.3880 -0.1658 -0.9066 +vn -0.4094 -0.1637 -0.8975 +vn -0.4103 -0.1629 -0.8973 +vn -0.4312 -0.1600 -0.8880 +vn -0.4315 -0.1608 -0.8877 +vn -0.4433 -0.1584 -0.8823 +vn -0.4416 -0.1596 -0.8829 +vn 0.3908 0.0907 0.9160 +vn 0.4036 0.0911 0.9104 +vn 0.3916 0.0910 0.9156 +vn 0.4077 0.0912 0.9085 +vn 0.4096 0.0917 0.9076 +vn 0.4100 0.0916 0.9075 +vn 0.4112 0.0912 0.9070 +vn 0.4160 0.0907 0.9048 +vn 0.4272 0.0900 0.8997 +vn 0.4279 0.0897 0.8994 +vn 0.8716 0.0366 0.4888 +vn 0.8717 0.0361 0.4887 +vn 0.8717 0.0359 0.4887 +vn 0.8718 0.0353 0.4885 +vn 0.8719 0.0350 0.4885 +vn 0.8721 0.0345 0.4882 +vn 0.9294 0.0515 0.3655 +vn 0.9901 0.0382 0.1353 +vn 0.9305 0.0513 0.3627 +vn 0.8053 0.0625 0.5895 +vn 0.7679 0.0635 0.6375 +vn 0.7679 0.0645 0.6373 +vn 0.7676 0.0590 0.6382 +vn 0.7675 0.0584 0.6384 +vn 0.4034 0.0607 0.9130 +vn 0.4089 0.0613 0.9105 +vn 0.4030 0.0606 0.9132 +vn -0.0456 -0.9964 -0.0712 +vn -0.0727 -0.9937 -0.0851 +vn 0.2604 -0.9614 0.0888 +vn 0.2633 -0.9605 0.0903 +vn 0.4056 -0.0045 0.9140 +vn 0.3607 -0.0523 0.9312 +vn 0.4000 -0.0266 0.9161 +vn 0.4110 -0.0164 0.9115 +vn 0.4151 -0.0108 0.9097 +vn 0.4169 -0.0067 0.9089 +vn 0.4170 -0.0028 0.9089 +vn 0.4160 0.0006 0.9094 +vn 0.4133 0.0038 0.9106 +vn 0.4069 0.0061 0.9135 +vn 0.3847 0.0171 0.9229 +vn 0.4094 -0.0059 0.9124 +vn 0.2580 0.7509 0.6080 +vn 0.1850 0.5540 0.8117 +vn 0.1817 0.8106 0.5567 +vn 0.3383 0.6747 0.6560 +vn 0.1063 0.4932 0.8634 +vn 0.3912 0.0913 0.9158 +vn 0.0106 0.7814 0.6239 +vn 0.4272 0.0357 0.9035 +vn 0.1624 0.7482 0.6433 +vn 0.3807 0.2440 0.8919 +vn -0.1158 0.4971 0.8600 +vn 0.3982 0.0746 0.9143 +vn -0.2926 0.4514 0.8430 +vn 0.3402 0.1120 0.9337 +vn -0.4353 0.3584 0.8259 +vn 0.3612 0.0879 0.9283 +vn -0.5658 0.2599 0.7825 +vn -0.9612 0.2493 0.1178 +vn -0.9918 0.1077 0.0687 +vn -0.5964 0.1435 0.7897 +vn -0.6589 0.0267 0.7517 +vn -0.9992 -0.0245 0.0312 +vn -0.9873 -0.1520 0.0460 +vn -0.6115 -0.0832 0.7869 +vn -0.9586 -0.2758 0.0706 +vn -0.5993 -0.1974 0.7758 +vn -0.8987 -0.4149 0.1420 +vn -0.4892 -0.2883 0.8231 +vn -0.7997 -0.5480 0.2455 +vn -0.3770 -0.3837 0.8430 +vn -0.2139 -0.4354 0.8745 +vn -0.6121 -0.6948 0.3775 +vn -0.3629 -0.7667 0.5296 +vn -0.4208 -0.8513 0.3133 +vn -0.0887 -0.7776 0.6224 +vn 0.0137 -0.8567 0.5156 +vn 0.0957 -0.7805 0.6177 +vn 0.1180 -0.8300 0.5451 +vn 0.2833 -0.4112 0.8664 +vn 0.1525 -0.4239 0.8928 +vn 0.4191 0.1231 0.8996 +vn 0.4103 0.0880 0.9077 +vn 0.5443 0.6634 0.5135 +vn 0.3026 0.9277 0.2186 +vn 0.0255 -0.4362 0.8995 +vn 0.6312 0.5674 0.5289 +vn 0.3823 0.0345 0.9234 +vn 0.1041 0.9753 -0.1948 +vn 0.1883 0.9697 -0.1556 +vn 0.7054 0.4238 0.5682 +vn -0.6680 -0.7322 0.1333 +vn 0.3866 0.0591 0.9203 +vn 0.5434 0.8382 0.0471 +vn 0.7417 0.3332 0.5821 +vn 0.3249 0.0223 0.9455 +vn 0.7364 0.6431 0.2100 +vn -0.8274 -0.5615 -0.0093 +vn 0.7705 0.2563 0.5836 +vn 0.3500 0.0505 0.9354 +vn 0.8246 0.4956 0.2729 +vn -0.9077 -0.4057 -0.1077 +vn 0.7810 0.1847 0.5966 +vn 0.2782 0.0381 0.9598 +vn 0.8770 0.3491 0.3301 +vn -0.9486 -0.2726 -0.1606 +vn 0.3265 0.0610 0.9432 +vn 0.9044 0.2476 0.3474 +vn 0.7973 0.1264 0.5902 +vn 0.9202 0.1446 0.3636 +vn -0.9707 -0.1550 -0.1835 +vn 0.2664 0.0689 0.9614 +vn 0.7961 0.0643 0.6018 +vn 0.9298 0.0477 0.3649 +vn -0.9802 -0.0377 -0.1945 +vn 0.9312 -0.0491 0.3612 +vn -0.9813 0.0860 -0.1725 +vn 0.3312 0.0803 0.9401 +vn 0.8049 -0.0011 0.5935 +vn 0.7954 -0.0633 0.6028 +vn 0.9250 -0.1707 0.3395 +vn -0.9656 0.2223 -0.1349 +vn 0.2875 0.0997 0.9526 +vn 0.9031 -0.2906 0.3161 +vn 0.7919 -0.1470 0.5927 +vn -0.9205 0.3860 -0.0611 +vn -0.8842 0.4151 0.2141 +vn 0.8403 -0.4889 0.2340 +vn -0.8118 0.5808 0.0612 +vn -0.7512 0.5707 0.3316 +vn 0.7688 -0.2429 0.5916 +vn 0.7160 -0.6838 0.1404 +vn 0.7312 -0.3596 0.5797 +vn -0.5116 0.7250 0.4611 +vn 0.4459 -0.8940 -0.0442 +vn -0.5730 0.7816 0.2465 +vn 0.6369 -0.5652 0.5243 +vn -0.2816 0.8700 0.4047 +vn -0.1966 0.7792 0.5952 +vn 0.5088 -0.7012 0.4995 +vn 0.0074 -0.9610 -0.2765 +vn -0.3381 0.8584 0.3859 +vn -0.0884 -0.9434 -0.3197 +vn -0.2360 0.8391 0.4901 +vn 0.1807 0.7804 0.5987 +vn -0.3019 0.8452 0.4410 +vn 0.1062 -0.9876 0.1154 +vn 0.1024 0.8087 0.5792 +vn -0.5318 0.8350 0.1416 +vn 0.4062 0.0093 0.9137 +vn 0.2608 0.7390 0.6212 +vn 0.3707 0.2356 0.8984 +vn 0.3974 -0.5160 0.7588 +vn 0.2855 -0.7495 0.5973 +vn 0.4979 -0.5727 0.6512 +vn 0.4697 -0.5175 0.7153 +vn 0.6200 -0.4246 0.6598 +vn 0.5891 -0.3772 0.7146 +vn 0.4224 -0.2310 0.8765 +vn 0.6557 -0.2900 0.6971 +vn 0.6902 -0.3093 0.6541 +vn 0.4611 -0.2720 0.8446 +vn 0.7038 -0.1897 0.6846 +vn 0.7327 -0.2127 0.6464 +vn 0.5784 -0.1583 0.8002 +vn 0.5338 -0.2057 0.8202 +vn 0.7290 -0.1182 0.6742 +vn 0.6174 -0.1031 0.7799 +vn 0.6358 -0.0551 0.7699 +vn 0.4012 0.1244 0.9075 +vn 0.7590 -0.1320 0.6376 +vn 0.3960 0.1395 0.9076 +vn 0.3982 0.1028 0.9115 +vn 0.3291 0.1714 0.9286 +vn 0.3487 0.1296 0.9282 +vn 0.6552 -0.0141 0.7553 +vn 0.2256 0.1647 0.9602 +vn -0.0555 0.9275 0.3696 +vn -0.3387 0.8675 0.3645 +vn -0.5855 0.7402 0.3306 +vn -0.7269 0.5726 0.3790 +vn 0.7448 -0.0501 0.6654 +vn 0.2460 0.6810 0.6897 +vn -0.8616 0.4022 0.3096 +vn -0.4867 0.7226 -0.4909 +vn 0.2748 0.1220 0.9537 +vn -0.6490 0.5375 -0.5384 +vn -0.2238 0.9044 -0.3634 +vn -0.7343 0.3866 -0.5579 +vn -0.8994 0.2498 0.3588 +vn -0.7825 0.2611 -0.5652 +vn -0.8083 0.1655 -0.5651 +vn 0.6567 0.0287 0.7536 +vn -0.8203 0.0794 -0.5664 +vn 0.1493 0.1118 0.9824 +vn -0.8261 0.0076 -0.5634 +vn -0.9510 0.1176 0.2859 +vn 0.7503 0.0081 0.6610 +vn 0.2255 0.0735 0.9715 +vn 0.6648 0.0681 0.7439 +vn -0.9357 -0.0086 0.3526 +vn 0.6539 0.1072 0.7489 +vn 0.1338 0.0284 0.9906 +vn -0.8246 -0.0622 -0.5623 +vn 0.7519 0.0650 0.6561 +vn 0.7454 0.1207 0.6556 +vn -0.9481 -0.1384 0.2861 +vn -0.8188 -0.1294 -0.5593 +vn 0.2535 0.0168 0.9672 +vn 0.6499 0.1477 0.7456 +vn -0.8956 -0.2496 0.3683 +vn 0.7731 -0.0609 0.6313 +vn -0.8061 -0.1967 -0.5581 +vn 0.7353 0.1753 0.6547 +vn -0.7880 -0.2711 -0.5528 +vn 0.1929 -0.0357 0.9806 +vn -0.8636 -0.3919 0.3173 +vn 0.6288 0.1850 0.7553 +vn -0.7579 -0.3513 -0.5497 +vn 0.3272 -0.0011 0.9449 +vn -0.7390 -0.5325 0.4127 +vn 0.7156 0.2357 0.6575 +vn 0.6098 0.2276 0.7592 +vn 0.6884 0.2948 0.6627 +vn -0.7120 -0.4483 -0.5404 +vn 0.3011 -0.0540 0.9521 +vn 0.7793 0.0030 0.6266 +vn -0.6338 -0.6830 0.3631 +vn 0.7738 0.1242 0.6212 +vn 0.7439 0.2476 0.6208 +vn 0.5725 0.2719 0.7735 +vn 0.7159 0.3163 0.6224 +vn 0.6425 0.3762 0.6676 +vn 0.7623 0.1843 0.6204 +vn -0.6425 -0.5603 -0.5227 +vn 0.3895 0.0165 0.9209 +vn -0.4101 -0.8062 0.4266 +vn 0.5825 0.4457 0.6797 +vn 0.6734 0.3975 0.6234 +vn 0.5358 0.3154 0.7832 +vn 0.6115 0.4820 0.6274 +vn -0.1612 -0.9013 0.4021 +vn 0.3810 -0.0266 0.9242 +vn 0.4812 0.3847 0.7877 +vn 0.5027 0.5466 0.6697 +vn -0.5128 -0.7093 -0.4837 +vn 0.5152 0.5823 0.6288 +vn 0.4091 0.0374 0.9117 +vn 0.1613 0.7999 0.5781 +vn 0.7805 0.0643 0.6219 +vn 0.3143 0.5572 0.7686 +vn 0.3408 0.7086 0.6179 +vn -0.3406 -0.8395 -0.4234 +vn 0.2368 -0.5817 0.7782 +vn 0.1939 0.7654 0.6136 +vn 0.0836 0.8291 0.5529 +vn -0.0138 0.8509 0.5252 +vn -0.1190 0.8724 0.4740 +vn 0.2209 0.7462 0.6280 +vn 0.1188 0.7428 0.6589 +vn -0.2692 0.8780 0.3958 +vn 0.1187 0.8284 0.5474 +vn 0.1085 0.8489 0.5173 +vn -0.0225 -0.8029 0.5956 +vn 0.1475 -0.6608 0.7359 +vn -0.3865 -0.7669 0.5124 +vn -0.6109 -0.7313 0.3033 +vn -0.9390 -0.3420 -0.0364 +vn -0.9760 -0.1776 -0.1262 +vn -0.9752 -0.0445 -0.2168 +vn -0.9670 -0.1505 -0.2058 +vn -0.9583 0.2229 -0.1787 +vn -0.9496 0.1452 -0.2779 +vn -0.9803 0.1301 -0.1488 +vn -0.9078 0.3339 -0.2537 +vn -0.6662 0.7385 0.1044 +vn -0.8395 0.5413 0.0473 +vn -0.6614 0.7488 -0.0443 +vn -0.9846 0.1603 -0.0702 +vn 0.0528 0.8913 0.4503 +vn 0.0017 0.9390 0.3438 +vn -0.2111 0.9034 0.3733 +vn -0.8394 0.4669 -0.2784 +vn -0.5887 0.8065 -0.0546 +vn -0.8809 0.3559 -0.3120 +vn 0.5414 0.5684 0.6195 +vn 0.0117 0.9561 0.2927 +vn 0.5514 0.5885 0.5913 +vn 0.5439 0.6363 0.5471 +vn -0.9033 0.3609 -0.2321 +vn 0.7250 0.2704 0.6335 +vn -0.8024 0.3970 -0.4455 +vn -0.7478 0.5531 -0.3672 +vn -0.8346 0.3291 -0.4417 +vn -0.4635 0.8774 -0.1236 +vn 0.5122 0.7102 0.4831 +vn 0.0248 0.9780 0.2073 +vn 0.3957 0.8468 0.3554 +vn 0.7290 0.2929 0.6187 +vn -0.7764 0.2778 -0.5657 +vn 0.4032 0.8894 0.2153 +vn 0.7273 0.3635 0.5821 +vn 0.6389 0.6593 0.3963 +vn 0.6925 0.4944 0.5255 +vn 0.7666 0.0843 0.6365 +vn 0.7924 0.5112 0.3328 +vn 0.7645 0.2409 0.5979 +vn 0.7584 0.3908 0.5216 +vn 0.8538 0.4042 0.3281 +vn 0.7640 0.1392 0.6300 +vn 0.7565 0.2204 0.6157 +vn 0.7960 0.3293 0.5079 +vn 0.7637 0.0610 0.6426 +vn 0.7334 -0.0511 0.6779 +vn 0.7076 -0.1384 0.6929 +vn 0.6173 -0.3040 0.7256 +vn 0.5708 -0.3882 0.7235 +vn 0.5622 -0.3827 0.7331 +vn -0.3332 -0.8094 -0.4835 +vn -0.5030 -0.5494 -0.6672 +vn -0.3527 -0.7751 -0.5243 +vn -0.4835 -0.5572 -0.6751 +vn -0.6270 -0.5427 -0.5589 +vn -0.5932 -0.5856 -0.5525 +vn -0.6656 -0.3835 -0.6402 +vn -0.6627 -0.3851 -0.6423 +vn -0.7439 -0.3476 -0.5707 +vn -0.7366 -0.3640 -0.5701 +vn -0.7342 -0.2387 -0.6356 +vn -0.7338 -0.2383 -0.6362 +vn -0.7932 -0.1938 -0.5773 +vn -0.7960 -0.2000 -0.5714 +vn -0.7604 -0.1216 -0.6380 +vn -0.7566 -0.1217 -0.6424 +vn -0.8115 -0.0630 -0.5809 +vn -0.8158 -0.0605 -0.5752 +vn -0.7650 -0.0052 -0.6440 +vn -0.7612 -0.0074 -0.6484 +vn -0.8065 0.0744 -0.5866 +vn -0.8093 0.0876 -0.5808 +vn -0.7459 0.1221 -0.6547 +vn -0.7473 0.1202 -0.6535 +vn -0.7565 0.2848 -0.5887 +vn -0.7670 0.2550 -0.5888 +vn -0.6733 0.2995 -0.6760 +vn -0.6805 0.2923 -0.6719 +vn -0.5984 0.5541 -0.5786 +vn -0.6425 0.5081 -0.5736 +vn -0.4872 0.4912 -0.7220 +vn -0.4149 0.5546 -0.7213 +vn -0.3674 0.6371 -0.6776 +vn -0.3696 0.6450 -0.6688 +vn -0.3746 -0.1859 -0.9084 +vn -0.3736 -0.1865 -0.9086 +vn -0.3933 -0.1736 -0.9029 +vn -0.3944 -0.1729 -0.9025 +vn 0.3907 0.1714 0.9044 +vn 0.3718 0.1838 0.9099 +vn 0.3726 0.1833 0.9097 +vn 0.3917 0.1707 0.9041 +vn -0.3970 -0.1734 -0.9013 +vn -0.3963 -0.1742 -0.9015 +vn -0.4105 -0.1603 -0.8977 +vn -0.4114 -0.1595 -0.8974 +vn 0.4077 0.1594 0.8991 +vn 0.3943 0.1725 0.9026 +vn 0.3950 0.1718 0.9025 +vn 0.4085 0.1586 0.8989 +vn -0.3451 -0.1952 -0.9180 +vn -0.3441 -0.1957 -0.9183 +vn -0.3693 -0.1838 -0.9110 +vn -0.3704 -0.1832 -0.9106 +vn 0.3671 0.1807 0.9124 +vn 0.3426 0.1923 0.9196 +vn 0.3436 0.1918 0.9193 +vn 0.3682 0.1802 0.9121 +vn -0.4039 0.0477 -0.9136 +vn -0.4041 0.0478 -0.9135 +vn -0.4042 0.0478 -0.9134 +vn -0.4040 0.0477 -0.9135 +vn -0.4040 0.0478 -0.9135 +vn -0.4043 0.0484 -0.9134 +vn -0.4043 0.0484 -0.9133 +vn -0.4040 0.0480 -0.9135 +vn 0.3636 0.8561 0.3673 +vn 0.3626 0.8568 0.3667 +vn 0.4167 0.8176 0.3974 +vn 0.4177 0.8168 0.3979 +vn -0.4063 0.0454 -0.9126 +vn -0.4066 0.0471 -0.9124 +vn -0.4022 0.0242 -0.9152 +vn -0.4018 0.0224 -0.9154 +vn 0.2587 0.9397 -0.2238 +vn 0.1192 0.9436 -0.3088 +vn 0.1201 0.9437 -0.3083 +vn 0.2596 0.9396 -0.2232 +vn 0.3649 0.7790 0.5099 +vn 0.3646 0.7792 0.5098 +vn 0.3744 0.7715 0.5143 +vn 0.3747 0.7713 0.5145 +vn 0.5335 0.2972 0.7919 +vn 0.5056 0.3361 0.7946 +vn 0.5076 0.3333 0.7945 +vn 0.5355 0.2944 0.7916 +vn 0.5537 0.3910 0.7352 +vn 0.4535 0.5281 0.7179 +vn 0.4573 0.5235 0.7189 +vn 0.5567 0.3863 0.7354 +vn -0.7509 -0.0348 -0.6595 +vn -0.7476 -0.0577 -0.6617 +vn -0.7504 -0.0526 -0.6589 +vn -0.7522 -0.0326 -0.6582 +vn -0.7518 -0.0091 -0.6593 +vn -0.7514 -0.0203 -0.6595 +vn -0.7473 0.0573 -0.6620 +vn -0.7658 0.0004 -0.6430 +vn -0.7440 0.0732 -0.6642 +vn -0.7685 -0.0107 -0.6398 +vn -0.7795 -0.0023 -0.6264 +vn -0.7442 0.0740 -0.6638 +vn -0.7796 -0.0033 -0.6262 +vn -0.7459 0.0622 -0.6631 +vn -0.7609 0.0305 -0.6482 +vn -0.7057 0.2284 -0.6707 +vn -0.7218 0.1953 -0.6639 +vn -0.7244 0.1755 -0.6666 +vn -0.7303 0.1547 -0.6654 +vn -0.7172 0.2063 -0.6657 +vn -0.6213 0.4114 -0.6669 +vn -0.6625 0.3479 -0.6633 +vn -0.6940 0.2646 -0.6696 +vn -0.7032 0.2437 -0.6679 +vn -0.6137 0.4178 -0.6700 +vn -0.6534 0.3689 -0.6610 +vn -0.4969 0.5659 -0.6579 +vn -0.5486 0.5162 -0.6576 +vn -0.6352 0.3855 -0.6693 +vn -0.4327 0.6249 -0.6498 +vn -0.4605 0.6016 -0.6527 +vn -0.3608 0.6895 -0.6281 +vn -0.3661 0.6855 -0.6293 +vn -0.4324 0.6254 -0.6495 +vn -0.2864 0.7325 -0.6175 +vn -0.5479 0.5172 -0.6575 +vn -0.3012 0.7204 -0.6248 +vn -0.3000 0.7239 -0.6212 +vn -0.3854 0.6694 -0.6351 +vn -0.2858 0.7487 -0.5981 +vn -0.7824 -0.0023 -0.6227 +vn -0.2767 0.7682 -0.5774 +vn -0.2683 0.8192 -0.5070 +vn -0.2668 0.7914 -0.5501 +vn -0.2423 0.8340 -0.4957 +vn -0.2954 0.7932 -0.5325 +vn -0.4108 0.7251 -0.5526 +vn -0.5117 0.6259 -0.5886 +vn -0.2241 0.8649 -0.4491 +vn -0.5831 0.5484 -0.5994 +vn -0.6163 0.5078 -0.6019 +vn -0.6658 0.4337 -0.6072 +vn -0.2547 0.8164 -0.5182 +vn -0.1063 0.9791 -0.1735 +vn -0.1885 0.9141 -0.3589 +vn 0.0760 0.9691 0.2348 +vn -0.0350 0.9993 -0.0116 +vn 0.2195 0.7889 0.5740 +vn 0.1563 0.9013 0.4041 +vn 0.2591 0.7350 0.6266 +vn 0.1999 0.7625 0.6153 +vn 0.0907 0.8037 0.5881 +vn -0.1497 0.8530 0.4999 +vn -0.4490 0.8291 0.3331 +vn -0.2973 0.8542 0.4267 +vn -0.7661 0.6411 0.0456 +vn -0.5729 0.7839 0.2395 +vn -0.8985 0.3980 -0.1854 +vn -0.7868 0.0020 -0.6171 +vn -0.7016 0.3668 -0.6108 +vn -0.8449 0.5305 -0.0689 +vn -0.9220 0.2398 -0.3040 +vn -0.9169 0.3047 -0.2576 +vn -0.9131 0.0959 -0.3963 +vn -0.9200 0.1557 -0.3597 +vn -0.9045 0.0417 -0.4245 +vn -0.8870 0.0241 -0.4612 +vn -0.9078 0.0135 -0.4192 +vn -0.9241 0.0054 -0.3820 +vn -0.8964 -0.0066 -0.4432 +vn -0.8771 -0.0018 -0.4802 +vn -0.8884 -0.0008 -0.4592 +vn -0.9244 -0.0035 -0.3814 +vn -0.8842 0.0020 -0.4672 +vn -0.9264 -0.0135 -0.3764 +vn -0.8434 -0.0004 -0.5372 +vn -0.8449 0.0010 -0.5348 +vn -0.8335 -0.0042 -0.5524 +vn -0.8304 -0.0033 -0.5572 +vn -0.7394 0.2750 -0.6146 +vn -0.8093 -0.0074 -0.5874 +vn -0.7917 -0.0052 -0.6109 +vn -0.7822 -0.0052 -0.6230 +vn -0.7914 -0.0141 -0.6112 +vn -0.7898 -0.0017 -0.6134 +vn -0.7931 -0.0066 -0.6090 +vn -0.7876 0.0160 -0.6160 +vn -0.7850 0.0592 -0.6166 +vn -0.7834 0.0784 -0.6166 +vn -0.7753 0.1380 -0.6163 +vn -0.7713 0.1607 -0.6159 +vn -0.7530 0.2325 -0.6156 +vn -0.8706 -0.0835 -0.4849 +vn -0.8705 -0.0830 -0.4851 +vn -0.8777 -0.1386 -0.4587 +vn -0.8777 -0.1392 -0.4585 +vn 0.3698 0.1756 0.9123 +vn 0.3617 0.1828 0.9142 +vn 0.3628 0.1818 0.9140 +vn 0.3712 0.1744 0.9120 +vn 0.0415 0.8935 -0.4472 +vn 0.0436 0.8938 -0.4463 +vn -0.0168 0.8824 -0.4701 +vn -0.0191 0.8819 -0.4710 +vn 0.3773 0.6266 0.6819 +vn 0.3581 0.6431 0.6769 +vn 0.3583 0.6429 0.6770 +vn 0.3776 0.6264 0.6820 +vn -0.3178 -0.1943 -0.9280 +vn -0.3171 -0.1945 -0.9282 +vn -0.3385 -0.1880 -0.9220 +vn -0.3393 -0.1877 -0.9218 +vn 0.3364 0.1841 0.9235 +vn 0.3047 0.1936 0.9325 +vn 0.3057 0.1934 0.9323 +vn 0.3375 0.1838 0.9232 +vn 0.4101 0.8194 0.4005 +vn 0.4076 0.8215 0.3987 +vn 0.4076 0.8215 0.3988 +vn 0.1690 0.8088 -0.5632 +vn 0.1560 0.8085 -0.5674 +vn 0.1576 0.8086 -0.5669 +vn 0.1706 0.8089 -0.5627 +vn 0.3008 0.1790 0.9367 +vn 0.3006 0.1791 0.9368 +vn -0.2848 -0.0914 -0.9542 +vn -0.2855 -0.0914 -0.9540 +vn -0.2790 -0.0913 -0.9560 +vn -0.2782 -0.0913 -0.9562 +vn -0.1855 0.1322 0.9737 +vn -0.0906 0.0698 0.9934 +vn -0.1083 0.0815 0.9908 +vn -0.2078 0.1468 0.9671 +vn 0.2460 0.1427 0.9587 +vn 0.2532 0.1347 0.9580 +vn 0.2520 0.1361 0.9581 +vn 0.2447 0.1442 0.9588 +vn -0.8797 -0.0930 -0.4664 +vn -0.8797 -0.0936 -0.4662 +vn -0.8785 -0.0807 -0.4708 +vn -0.8785 -0.0801 -0.4711 +vn 0.4118 0.1536 0.8982 +vn 0.4087 0.1583 0.8988 +vn 0.4120 0.1533 0.8982 +vn -0.4108 -0.1587 -0.8978 +vn -0.4105 -0.1591 -0.8979 +vn -0.4145 -0.1531 -0.8971 +vn -0.4148 -0.1527 -0.8970 +vn -0.4116 -0.1497 -0.8990 +vn -0.4115 -0.1500 -0.8990 +vn -0.4123 -0.1476 -0.8990 +vn -0.4125 -0.1473 -0.8990 +vn 0.4115 0.1459 0.8996 +vn 0.4104 0.1497 0.8996 +vn 0.4105 0.1492 0.8996 +vn 0.4117 0.1454 0.8996 +vn -0.4133 -0.1522 -0.8978 +vn -0.4132 -0.1524 -0.8978 +vn -0.4142 -0.1504 -0.8977 +vn -0.4143 -0.1502 -0.8977 +vn 0.4129 0.1501 0.8983 +vn 0.4114 0.1532 0.8985 +vn 0.4115 0.1530 0.8985 +vn 0.4130 0.1499 0.8983 +vn 0.4974 0.6567 0.5669 +vn 0.4063 0.7520 0.5191 +vn 0.4068 0.7515 0.5194 +vn 0.4977 0.6563 0.5670 +vn -0.4358 -0.0602 -0.8980 +vn -0.4487 -0.0623 -0.8915 +vn -0.4263 -0.0573 -0.9028 +vn -0.4549 -0.0492 -0.8892 +vn -0.4189 -0.0586 -0.9061 +vn -0.4251 -0.0573 -0.9033 +vn -0.5642 -0.0226 -0.8254 +vn -0.4020 -0.0732 -0.9127 +vn -0.8800 -0.0795 -0.4683 +vn -0.8800 -0.0794 -0.4683 +vn -0.8810 -0.0884 -0.4648 +vn -0.8810 -0.0886 -0.4648 +vn -0.8741 -0.0804 -0.4790 +vn -0.8741 -0.0798 -0.4791 +vn -0.8694 -0.0872 -0.4864 +vn -0.8693 -0.0874 -0.4864 +vn -0.8708 -0.0805 -0.4850 +vn -0.8708 -0.0803 -0.4850 +vn -0.8786 -0.0791 -0.4710 +vn -0.8786 -0.0797 -0.4708 +vn -0.3680 0.3080 -0.8773 +vn -0.3678 0.3081 -0.8774 +vn -0.3713 0.3069 -0.8763 +vn -0.3715 0.3068 -0.8763 +vn -0.4474 0.0486 -0.8930 +vn -0.4056 0.0444 -0.9130 +vn -0.4071 0.0445 -0.9123 +vn -0.4490 0.0488 -0.8922 +vn 0.2480 0.0229 0.9685 +vn 0.2462 0.0235 0.9689 +vn 0.2463 0.0235 0.9689 +vn 0.2481 0.0228 0.9685 +vn 0.2333 -0.0036 0.9724 +vn 0.2309 -0.0031 0.9730 +vn 0.2310 -0.0032 0.9729 +vn 0.2334 -0.0036 0.9724 +vn 0.3998 0.1012 0.9110 +vn 0.3997 0.1017 0.9110 +vn 0.3997 0.1016 0.9110 +vn 0.3999 0.1010 0.9110 +vn 0.3884 0.1007 0.9160 +vn 0.3882 0.1012 0.9160 +vn 0.3882 0.1011 0.9160 +vn 0.3884 0.1006 0.9160 +vn 0.2261 -0.0514 0.9728 +vn 0.2354 -0.0505 0.9706 +vn 0.2351 -0.0506 0.9707 +vn 0.2257 -0.0514 0.9728 +vn 0.3418 0.0923 0.9352 +vn 0.3432 -0.2130 0.9148 +vn 0.3771 -0.2000 0.9043 +vn 0.3758 -0.2005 0.9047 +vn 0.3417 -0.2135 0.9152 +vn 0.3183 0.0822 0.9444 +vn 0.3177 0.0829 0.9445 +vn 0.3178 0.0829 0.9445 +vn 0.3184 0.0822 0.9444 +vn 0.2235 -0.0433 0.9738 +vn 0.2251 -0.0432 0.9734 +vn 0.2234 -0.0433 0.9738 +vn 0.2789 0.0550 0.9587 +vn 0.2768 0.0564 0.9593 +vn 0.2769 0.0563 0.9592 +vn 0.2791 0.0549 0.9587 +vn -0.4256 -0.1690 -0.8890 +vn -0.4416 -0.1757 -0.8798 +vn -0.4407 -0.1753 -0.8804 +vn -0.4245 -0.1685 -0.8896 +vn 0.4280 0.1662 0.8884 +vn 0.4271 0.1658 0.8889 +vn 0.4425 0.1724 0.8800 +vn 0.4433 0.1728 0.8796 +vn -0.4097 -0.1606 -0.8980 +vn -0.4227 -0.1703 -0.8901 +vn -0.4220 -0.1697 -0.8906 +vn -0.4087 -0.1598 -0.8986 +vn 0.4124 0.1589 0.8970 +vn 0.4115 0.1582 0.8975 +vn 0.4239 0.1676 0.8901 +vn 0.4246 0.1681 0.8896 +vn -0.4453 -0.1721 -0.8787 +vn -0.4630 -0.1762 -0.8687 +vn -0.4621 -0.1760 -0.8692 +vn -0.4442 -0.1719 -0.8793 +vn 0.4471 0.1688 0.8784 +vn 0.4462 0.1686 0.8789 +vn 0.4634 0.1728 0.8691 +vn 0.4642 0.1730 0.8687 +vn -0.4036 0.0479 -0.9137 +vn -0.4040 0.0476 -0.9135 +vn -0.4037 0.0479 -0.9136 +vn -0.4038 0.0478 -0.9136 +vn -0.4034 0.0486 -0.9137 +vn -0.4037 0.0481 -0.9136 +vn -0.1071 0.9826 0.1521 +vn -0.0289 0.9829 0.1821 +vn -0.0295 0.9829 0.1819 +vn -0.1077 0.9825 0.1518 +vn -0.4087 0.0235 -0.9124 +vn -0.4011 0.0481 -0.9148 +vn -0.4018 0.0461 -0.9146 +vn -0.4094 0.0214 -0.9121 +vn -0.4355 0.7223 -0.5373 +vn -0.4378 0.7205 -0.5378 +vn -0.3524 0.7811 -0.5154 +vn -0.3499 0.7827 -0.5147 +vn 0.1372 0.8882 0.4386 +vn 0.1492 0.8852 0.4406 +vn 0.1490 0.8853 0.4405 +vn 0.1370 0.8882 0.4385 +vn 0.1693 0.4323 0.8857 +vn 0.1578 0.4288 0.8895 +vn 0.2165 0.4460 0.8685 +vn 0.2264 0.4487 0.8645 +vn 0.0500 0.6317 0.7736 +vn 0.0198 0.6269 0.7789 +vn 0.2131 0.6472 0.7320 +vn 0.2357 0.6479 0.7244 +vn 0.8663 -0.0216 0.4990 +vn 0.8788 0.0312 0.4762 +vn 0.8787 0.0306 0.4764 +vn 0.8661 -0.0222 0.4993 +vn 0.4450 0.1649 0.8802 +vn 0.4440 0.1641 0.8809 +vn 0.4501 0.1686 0.8769 +vn 0.4510 0.1693 0.8763 +vn -0.3295 0.7446 -0.5806 +vn -0.3738 0.7121 -0.5943 +vn -0.3735 0.7123 -0.5942 +vn -0.3291 0.7448 -0.5805 +vn 0.3081 0.6666 0.6788 +vn 0.3071 0.6669 0.6789 +vn 0.3246 0.6621 0.6755 +vn 0.3256 0.6618 0.6753 +vn -0.4671 -0.1684 -0.8680 +vn -0.4800 -0.1691 -0.8608 +vn -0.4795 -0.1690 -0.8611 +vn -0.4665 -0.1683 -0.8684 +vn 0.4687 0.1647 0.8678 +vn 0.4679 0.1647 0.8683 +vn 0.4864 0.1658 0.8579 +vn 0.4871 0.1658 0.8574 +vn -0.0869 0.9816 0.1703 +vn -0.0871 0.9815 0.1702 +vn -0.0840 0.9817 0.1709 +vn -0.0838 0.9817 0.1710 +vn -0.5201 0.4789 -0.7072 +vn -0.5222 0.4764 -0.7073 +vn -0.5186 0.4807 -0.7071 +vn -0.5165 0.4832 -0.7069 +vn 0.4896 0.1538 0.8583 +vn -0.5005 -0.0862 -0.8614 +vn -0.4974 -0.0864 -0.8632 +vn -0.4978 -0.0864 -0.8630 +vn -0.5009 -0.0862 -0.8612 +vn 0.6159 0.1028 0.7811 +vn 0.6175 0.1058 0.7795 +vn 0.6015 0.0760 0.7953 +vn 0.6000 0.0733 0.7966 +vn 0.5158 0.1209 0.8481 +vn 0.5162 0.1216 0.8478 +vn 0.5130 0.1163 0.8505 +vn 0.5126 0.1157 0.8508 +vn 0.8708 0.0346 0.4904 +vn 0.8689 0.0222 0.4944 +vn 0.8690 0.0228 0.4942 +vn 0.8709 0.0352 0.4902 +vn 0.4083 0.1541 0.8997 +vn 0.4081 0.1538 0.8999 +vn 0.4114 0.1580 0.8977 +vn 0.4116 0.1582 0.8975 +vn -0.4056 -0.1542 -0.9010 +vn -0.4096 -0.1593 -0.8983 +vn -0.4093 -0.1590 -0.8985 +vn -0.4053 -0.1538 -0.9012 +vn -0.4079 -0.1481 -0.9009 +vn -0.4088 -0.1504 -0.9002 +vn -0.4087 -0.1501 -0.9003 +vn -0.4078 -0.1478 -0.9010 +vn 0.4087 0.1462 0.9009 +vn 0.4086 0.1457 0.9010 +vn 0.4098 0.1494 0.8999 +vn 0.4099 0.1498 0.8997 +vn -0.4060 -0.1514 -0.9012 +vn -0.4069 -0.1530 -0.9006 +vn -0.4068 -0.1529 -0.9006 +vn -0.4059 -0.1513 -0.9013 +vn 0.4073 0.1508 0.9007 +vn 0.4072 0.1506 0.9008 +vn 0.4087 0.1533 0.8997 +vn 0.4088 0.1535 0.8996 +vn -0.0633 0.9158 0.3967 +vn -0.0669 0.9157 0.3962 +vn 0.0783 0.9076 0.4125 +vn 0.0819 0.9071 0.4128 +vn 0.8680 0.0274 0.4958 +vn 0.8694 0.0361 0.4927 +vn 0.8694 0.0360 0.4928 +vn 0.8680 0.0273 0.4959 +vn 0.8752 0.0350 0.4825 +vn 0.8752 0.0343 0.4825 +vn 0.8786 0.0338 0.4763 +vn 0.8797 0.0266 0.4747 +vn 0.8797 0.0268 0.4747 +vn 0.8786 0.0340 0.4764 +vn 0.8708 0.0356 0.4904 +vn 0.8708 0.0362 0.4903 +vn -0.3708 0.3071 -0.8765 +vn -0.3745 0.3049 -0.8756 +vn -0.3744 0.3050 -0.8757 +vn -0.3707 0.3072 -0.8765 +vn -0.3515 0.0662 -0.9339 +vn -0.3493 0.0670 -0.9346 +vn -0.4011 0.0455 -0.9149 +vn -0.4027 0.0448 -0.9142 +vn 0.5124 0.0382 0.8579 +vn 0.5132 0.0387 0.8574 +vn 0.5133 0.0388 0.8574 +vn 0.5174 0.0212 0.8555 +vn 0.5173 0.0212 0.8555 +vn 0.5183 0.0217 0.8549 +vn 0.5184 0.0217 0.8549 +vn 0.4199 0.1003 0.9020 +vn 0.4199 0.1002 0.9020 +vn 0.4201 0.1007 0.9019 +vn 0.4201 0.1008 0.9018 +vn 0.4303 0.0989 0.8973 +vn 0.4304 0.0994 0.8972 +vn 0.4304 0.0994 0.8971 +vn 0.5176 -0.0106 0.8556 +vn 0.5178 -0.0105 0.8555 +vn 0.5140 -0.0114 0.8577 +vn 0.5139 -0.0114 0.8578 +vn 0.4653 0.0890 0.8807 +vn 0.4652 0.0889 0.8807 +vn 0.4284 -0.1825 0.8850 +vn 0.4294 -0.1822 0.8846 +vn 0.4009 -0.1915 0.8959 +vn 0.4000 -0.1918 0.8962 +vn 0.4795 0.0801 0.8739 +vn 0.4799 0.0807 0.8736 +vn 0.5192 -0.0047 0.8547 +vn 0.5192 -0.0047 0.8546 +vn 0.5186 -0.0049 0.8550 +vn 0.5185 -0.0049 0.8550 +vn 0.4996 0.0596 0.8642 +vn 0.4995 0.0596 0.8642 +vn 0.5006 0.0607 0.8635 +vn 0.5007 0.0607 0.8635 +vn 0.8221 0.1057 0.5594 +vn 0.8284 0.1041 0.5504 +vn 0.8214 0.1096 0.5598 +vn 0.8398 0.1020 0.5333 +vn 0.8612 0.1102 0.4961 +vn 0.8391 0.1043 0.5339 +vn 0.8708 0.1155 0.4779 +vn 0.9034 0.1240 0.4105 +vn 0.9027 0.1253 0.4116 +vn 0.9153 0.1234 0.3833 +vn 0.9181 0.1263 0.3756 +vn 0.9459 0.1277 0.2982 +vn 0.9653 0.1421 0.2192 +vn 0.9683 0.1417 0.2057 +vn 0.9627 0.1202 0.2426 +vn 0.9639 0.1525 0.2182 +vn 0.9601 0.1442 0.2395 +vn 0.9681 0.1486 0.2020 +vn 0.9712 0.1473 0.1873 +vn 0.9591 0.1477 0.2415 +vn 0.9709 0.1505 0.1864 +vn 0.9824 0.1410 0.1227 +vn 0.9815 0.1614 0.1032 +vn 0.9916 0.1278 0.0181 +vn 0.9592 0.1715 0.2249 +vn 0.9413 0.2580 0.2177 +vn 0.9425 0.2526 0.2190 +vn 0.9030 0.3821 0.1965 +vn 0.9100 0.3614 0.2032 +vn 0.8288 0.5419 0.1392 +vn 0.8569 0.4888 0.1638 +vn 0.6726 0.7397 0.0214 +vn 0.7489 0.6581 0.0778 +vn 0.4938 0.8615 -0.1184 +vn 0.5683 0.8199 -0.0687 +vn 0.1396 0.9298 -0.3406 +vn 0.3728 0.9050 -0.2049 +vn -0.0260 0.9140 -0.4048 +vn 0.0122 0.9117 -0.4108 +vn -0.0710 0.8853 -0.4596 +vn -0.0515 0.9054 -0.4215 +vn -0.1036 0.8487 -0.5187 +vn -0.0608 0.8939 -0.4442 +vn -0.1195 0.8283 -0.5474 +vn -0.0754 0.8282 -0.5553 +vn -0.0147 0.9356 -0.3528 +vn 0.9621 0.2650 0.0642 +vn 0.0400 0.9679 -0.2480 +vn 0.1345 0.9901 -0.0406 +vn 0.2032 0.9718 0.1199 +vn 0.2842 0.9013 0.3271 +vn 0.9885 0.1499 0.0214 +vn 0.3784 0.7473 0.5462 +vn 0.3698 0.7211 0.5859 +vn 0.3862 0.6625 0.6419 +vn 0.4025 0.6516 0.6429 +vn 0.5367 0.5484 0.6413 +vn -0.1216 0.8192 -0.5605 +vn 0.4922 0.5858 0.6439 +vn 0.6050 0.4838 0.6324 +vn 0.6159 0.4726 0.6304 +vn 0.6696 0.4131 0.6172 +vn 0.6791 0.4018 0.6143 +vn 0.7368 0.3259 0.5923 +vn 0.7385 0.3235 0.5916 +vn 0.7813 0.2574 0.5686 +vn 0.7799 0.2598 0.5695 +vn 0.8217 0.1837 0.5395 +vn -0.1316 0.8052 -0.5782 +vn 0.8165 0.1941 0.5437 +vn 0.1107 0.8683 -0.4835 +vn 0.3398 0.8690 -0.3598 +vn 0.8441 0.1428 0.5169 +vn 0.8580 0.1325 0.4963 +vn 0.9504 0.3110 0.0003 +vn 0.8634 0.1291 0.4877 +vn 0.8701 0.1131 0.4796 +vn 0.8667 0.1006 0.4887 +vn 0.8292 0.0899 0.5516 +vn 0.8161 0.0910 0.5708 +vn 0.3368 0.8698 -0.3606 +vn 0.9981 0.0603 0.0094 +vn -0.1458 0.8011 -0.5805 +vn 0.4251 0.8447 -0.3252 +vn 0.5248 0.8057 -0.2745 +vn 0.1186 0.8698 -0.4789 +vn 0.7628 0.6340 -0.1273 +vn 0.7489 0.6498 -0.1302 +vn 0.5406 0.7995 -0.2617 +vn 0.8118 0.5767 -0.0922 +vn 0.8690 0.4925 -0.0472 +vn 0.8698 0.4913 -0.0460 +vn -0.0431 0.8375 -0.5447 +vn 0.2375 0.8714 -0.4293 +vn 0.8421 0.5372 -0.0478 +vn 0.9511 0.3090 -0.0011 +vn 0.6702 0.7261 -0.1536 +vn 0.9547 0.2977 0.0033 +vn 0.4135 0.8558 -0.3108 +vn 0.8686 0.4953 -0.0145 +vn 0.7469 0.6590 -0.0888 +vn 0.9627 0.2704 0.0110 +vn -0.0148 0.8556 -0.5174 +vn 0.9947 0.1008 0.0221 +vn 0.9950 0.0982 0.0165 +vn 0.9989 0.0462 -0.0091 +vn 0.2470 0.7328 0.6341 +vn 0.2101 0.7554 0.6206 +vn 0.2398 0.7337 0.6358 +vn -0.0005 0.8334 0.5526 +vn -0.0013 0.8484 0.5293 +vn -0.0259 0.7478 0.6634 +vn -0.0150 0.7729 0.6344 +vn -0.0191 0.6877 0.7257 +vn -0.0029 0.6447 0.7644 +vn 0.0184 0.5985 0.8009 +vn 0.0456 0.5569 0.8293 +vn 0.0714 0.5193 0.8516 +vn 0.0642 0.5291 0.8461 +vn 0.0744 0.5067 0.8589 +vn 0.0828 0.5088 0.8569 +vn 0.1896 0.4274 0.8840 +vn 0.2735 0.3794 0.8839 +vn 0.3921 0.3094 0.8663 +vn 0.3917 0.3121 0.8655 +vn 0.4014 0.3046 0.8638 +vn 0.4087 0.2965 0.8632 +vn -0.5255 0.1060 -0.8441 +vn -0.5256 0.1060 -0.8441 +vn -0.5243 0.1055 -0.8450 +vn -0.5242 0.1055 -0.8450 +vn -0.5265 0.0807 -0.8463 +vn -0.5266 0.0807 -0.8463 +vn -0.5254 0.0805 -0.8470 +vn -0.5253 0.0805 -0.8471 +vn -0.3945 0.2712 -0.8779 +vn -0.3946 0.2708 -0.8780 +vn -0.3946 0.2709 -0.8780 +vn -0.3945 0.2713 -0.8779 +vn -0.4109 0.2626 -0.8731 +vn -0.4109 0.2626 -0.8730 +vn -0.4109 0.2620 -0.8732 +vn -0.4108 0.2620 -0.8732 +vn -0.5167 0.0423 -0.8551 +vn -0.5168 0.0423 -0.8551 +vn -0.5149 0.0426 -0.8562 +vn -0.5148 0.0426 -0.8563 +vn -0.4676 0.2192 -0.8564 +vn -0.4677 0.2194 -0.8562 +vn -0.5619 0.1385 -0.8156 +vn -0.5612 0.1388 -0.8159 +vn -0.5722 0.1331 -0.8093 +vn -0.5728 0.1328 -0.8089 +vn -0.4892 0.1939 -0.8503 +vn -0.4892 0.1940 -0.8503 +vn -0.4885 0.1929 -0.8510 +vn -0.5196 0.0506 -0.8529 +vn -0.5195 0.0506 -0.8530 +vn -0.5219 0.0505 -0.8515 +vn -0.5221 0.0504 -0.8514 +vn -0.5145 0.1458 -0.8450 +vn -0.5146 0.1458 -0.8450 +vn -0.5136 0.1451 -0.8457 +vn -0.5136 0.1450 -0.8457 +vn -0.9477 -0.0268 -0.3181 +vn -0.9182 -0.0647 -0.3909 +vn -0.9536 -0.0419 -0.2981 +vn -0.9590 -0.0261 -0.2823 +vn -0.9430 0.0034 -0.3327 +vn -0.9355 0.0268 -0.3522 +vn -0.9353 0.0354 -0.3521 +vn -0.9525 0.1720 -0.2514 +vn -0.9441 0.0944 -0.3157 +vn -0.9509 0.2520 -0.1795 +vn -0.9370 0.3344 -0.1006 +vn -0.9076 0.4196 -0.0126 +vn -0.8124 0.5628 0.1525 +vn -0.7072 0.6540 0.2686 +vn -0.4629 0.7569 0.4613 +vn -0.1876 0.7786 0.5988 +vn -0.3282 0.7771 0.5370 +vn 0.1424 0.7142 0.6853 +vn -0.0659 0.7727 0.6314 +vn 0.2268 0.7418 0.6311 +vn 0.1092 0.7946 0.5972 +vn 0.2510 0.7417 0.6221 +vn 0.2385 0.7507 0.6161 +vn -0.9889 0.0196 -0.1474 +vn -0.9961 0.0379 -0.0794 +vn -0.9962 0.0824 -0.0288 +vn -0.9853 0.1274 0.1134 +vn -0.9735 0.1413 0.1797 +vn -0.9572 0.1864 0.2216 +vn -0.9671 0.1710 0.1881 +vn -0.9433 0.2181 0.2501 +vn -0.9352 0.2298 0.2696 +vn -0.9344 0.2307 0.2713 +vn 0.4426 0.6161 0.6515 +vn 0.4191 0.6420 0.6421 +vn 0.4538 0.6320 0.6282 +vn 0.4731 0.6070 0.6386 +vn 0.5167 0.5780 0.6316 +vn 0.5462 0.4891 0.6800 +vn 0.5427 0.4879 0.6837 +vn 0.5598 0.4054 0.7227 +vn 0.5599 0.4073 0.7215 +vn 0.5590 0.3540 0.7498 +vn 0.5597 0.3579 0.7474 +vn 0.5551 0.3308 0.7632 +vn 0.5543 0.3295 0.7643 +vn 0.5545 0.3214 0.7676 +vn 0.5520 0.3243 0.7682 +vn 0.5097 0.3044 0.8047 +vn 0.4778 0.3023 0.8248 +vn 0.4117 0.3022 0.8598 +vn 0.4155 0.3044 0.8571 +vn 0.4057 0.3032 0.8623 +vn 0.3991 0.2995 0.8666 +vn -0.1756 0.2061 -0.9627 +vn -0.1713 0.2085 -0.9629 +vn -0.1714 0.2085 -0.9629 +vn -0.1756 0.2060 -0.9627 +vn -0.1829 0.1668 -0.9689 +vn -0.1793 0.1685 -0.9693 +vn -0.1794 0.1684 -0.9693 +vn -0.1830 0.1668 -0.9689 +vn -0.3563 0.2881 -0.8889 +vn -0.3563 0.2878 -0.8890 +vn -0.3563 0.2877 -0.8890 +vn -0.3378 0.2940 -0.8941 +vn -0.3375 0.2948 -0.8940 +vn -0.3375 0.2947 -0.8940 +vn -0.3378 0.2939 -0.8941 +vn -0.2248 0.0979 -0.9695 +vn -0.2198 0.0990 -0.9705 +vn -0.2199 0.0989 -0.9705 +vn -0.2250 0.0979 -0.9694 +vn -0.2596 0.3058 -0.9160 +vn -0.2601 0.3051 -0.9161 +vn -0.2600 0.3052 -0.9161 +vn 0.0288 0.3324 -0.9427 +vn -0.0209 0.3223 -0.9464 +vn -0.0199 0.3225 -0.9464 +vn 0.0298 0.3326 -0.9426 +vn -0.2271 0.2953 -0.9280 +vn -0.2248 0.2980 -0.9277 +vn -0.2248 0.2979 -0.9277 +vn -0.2271 0.2952 -0.9280 +vn -0.2034 0.1158 -0.9722 +vn -0.2101 0.1140 -0.9710 +vn -0.2099 0.1140 -0.9710 +vn -0.2032 0.1158 -0.9723 +vn -0.1873 0.2559 -0.9484 +vn -0.1840 0.2586 -0.9483 +vn -0.1841 0.2585 -0.9483 +vn -0.1874 0.2558 -0.9484 +vn -0.4213 -0.6210 -0.6610 +vn -0.4592 -0.6158 -0.6402 +vn -0.4128 -0.6301 -0.6577 +vn -0.4776 -0.5940 -0.6474 +vn -0.5223 -0.5704 -0.6339 +vn -0.5462 -0.4894 -0.6798 +vn -0.5427 -0.4882 -0.6835 +vn -0.5594 -0.4056 -0.7229 +vn -0.5592 -0.4079 -0.7217 +vn -0.5576 -0.3552 -0.7503 +vn -0.5582 -0.3594 -0.7478 +vn -0.5536 -0.3320 -0.7637 +vn -0.5528 -0.3307 -0.7649 +vn -0.5545 -0.3202 -0.7681 +vn -0.5503 -0.3262 -0.7686 +vn -0.5143 -0.2870 -0.8082 +vn -0.4858 -0.2824 -0.8272 +vn -0.4153 -0.2792 -0.8658 +vn -0.4186 -0.2801 -0.8639 +vn -0.4100 -0.2790 -0.8683 +vn -0.4058 -0.2762 -0.8712 +vn 0.7691 0.0014 0.6391 +vn 0.7477 0.0578 0.6615 +vn 0.7514 0.0334 0.6590 +vn 0.7659 -0.0032 0.6430 +vn 0.7609 -0.0261 0.6484 +vn 0.7510 -0.0416 0.6589 +vn 0.7795 0.0022 0.6264 +vn 0.7303 -0.1560 0.6650 +vn 0.7401 -0.1272 0.6603 +vn 0.7039 -0.2438 0.6671 +vn 0.7800 0.0041 0.6258 +vn 0.7162 -0.2188 0.6628 +vn 0.7833 0.0043 0.6217 +vn 0.7902 0.0008 0.6129 +vn 0.7903 0.0034 0.6127 +vn 0.7915 0.0168 0.6110 +vn 0.7931 0.0066 0.6090 +vn 0.7875 -0.0159 0.6161 +vn 0.7859 0.0129 0.6182 +vn 0.7850 -0.0590 0.6167 +vn 0.7834 -0.0784 0.6165 +vn 0.7753 -0.1379 0.6163 +vn 0.7913 0.0170 0.6112 +vn 0.7713 -0.1607 0.6159 +vn 0.8080 0.0223 0.5888 +vn 0.8270 0.0172 0.5619 +vn 0.8305 0.0175 0.5567 +vn 0.8443 0.0174 0.5355 +vn 0.8449 0.0192 0.5345 +vn 0.8822 0.0151 0.4706 +vn 0.8853 0.0097 0.4649 +vn 0.9222 0.0392 0.3846 +vn 0.9117 0.0296 0.4099 +vn 0.9154 -0.0197 0.4021 +vn 0.6360 -0.3865 0.6679 +vn 0.9157 -0.0222 0.4012 +vn 0.9223 -0.0436 0.3841 +vn 0.9460 0.0636 0.3180 +vn 0.9135 -0.0245 0.4061 +vn 0.9185 0.0103 0.3952 +vn 0.9318 -0.0989 0.3493 +vn 0.9361 -0.1582 0.3140 +vn 0.9263 -0.3119 0.2116 +vn 0.9342 -0.2475 0.2568 +vn 0.7530 -0.2323 0.6156 +vn 0.8427 -0.5379 0.0233 +vn 0.9025 -0.4084 0.1370 +vn 0.5607 -0.7819 -0.2724 +vn 0.7558 -0.6485 -0.0911 +vn 0.2875 -0.8477 -0.4459 +vn 0.4345 -0.8254 -0.3603 +vn -0.0958 -0.7956 -0.5982 +vn 0.1374 -0.8446 -0.5175 +vn -0.2470 -0.7744 -0.5825 +vn -0.2054 -0.7559 -0.6216 +vn -0.2001 -0.8848 -0.4208 +vn -0.1017 -0.9927 -0.0643 +vn -0.2027 -0.9347 -0.2920 +vn -0.2561 -0.7394 -0.6226 +vn 0.1508 -0.9719 0.1806 +vn 0.6553 -0.3634 0.6622 +vn 0.2418 -0.8936 0.3783 +vn 0.2627 -0.8452 0.4654 +vn 0.2905 -0.7965 0.5304 +vn 0.3023 -0.7883 0.5359 +vn 0.2543 -0.8282 0.4995 +vn 0.7394 -0.2750 0.6145 +vn 0.2800 -0.8139 0.5091 +vn 0.4102 -0.7257 0.5523 +vn 0.5117 -0.6258 0.5886 +vn 0.2855 -0.7817 0.5544 +vn 0.5832 -0.5482 0.5994 +vn 0.6162 -0.5079 0.6019 +vn 0.6656 -0.4340 0.6072 +vn 0.7016 -0.3668 0.6109 +vn 0.3055 -0.7527 0.5832 +vn 0.3188 -0.7290 0.6058 +vn 0.4944 -0.5842 0.6437 +vn 0.4671 -0.6045 0.6453 +vn 0.3887 -0.6532 0.6498 +vn 0.5496 -0.5183 0.6552 +vn 0.6186 -0.4294 0.6580 +vn 0.2726 -0.7312 0.6254 +vn -0.9939 -0.1092 -0.0154 +vn -0.9988 -0.0463 0.0139 +vn -0.9810 -0.1480 -0.1256 +vn -0.9795 -0.1719 -0.1054 +vn -0.9709 -0.1484 -0.1882 +vn -0.9716 -0.1429 -0.1884 +vn -0.9605 -0.2703 -0.0660 +vn -0.9683 -0.1447 -0.2034 +vn -0.9729 -0.2291 -0.0304 +vn -0.9660 -0.1497 -0.2106 +vn -0.8700 -0.4913 0.0419 +vn -0.9250 -0.3798 -0.0119 +vn -0.7523 -0.6474 0.1223 +vn -0.8631 -0.5044 0.0263 +vn -0.4297 -0.8457 0.3164 +vn -0.7299 -0.6729 0.1199 +vn -0.3541 -0.8697 0.3439 +vn -0.5482 -0.8060 0.2231 +vn -0.3731 -0.8598 0.3486 +vn -0.1747 -0.8805 0.4407 +vn -0.1671 -0.8902 0.4239 +vn 0.0600 -0.8648 0.4986 +vn 0.0799 -0.8428 0.5323 +vn 0.1758 -0.7807 0.5996 +vn 0.0276 -0.9128 0.4074 +vn -0.0247 -0.9144 0.4040 +vn 0.0571 -0.8886 0.4551 +vn 0.0153 -0.9162 0.4004 +vn -0.3727 -0.9050 0.2052 +vn -0.9602 -0.1420 -0.2407 +vn -0.1383 -0.9298 0.3412 +vn -0.0277 -0.9423 0.3337 +vn -0.5681 -0.8201 0.0688 +vn -0.4942 -0.8613 0.1180 +vn -0.7488 -0.6583 -0.0776 +vn 0.0136 -0.9064 0.4222 +vn -0.1999 -0.9797 -0.0114 +vn -0.1032 -0.9726 0.2083 +vn -0.1759 -0.9433 -0.2815 +vn -0.0656 -0.9969 -0.0430 +vn -0.3547 -0.7646 -0.5382 +vn -0.3500 -0.7300 -0.5870 +vn -0.3997 -0.6525 -0.6438 +vn -0.4921 -0.5800 -0.6492 +vn -0.5367 -0.5421 -0.6465 +vn -0.6723 -0.7400 -0.0211 +vn -0.3863 -0.6652 -0.6390 +vn -0.6036 -0.4781 -0.6380 +vn -0.6150 -0.4661 -0.6361 +vn -0.6658 -0.4069 -0.6254 +vn -0.6767 -0.3930 -0.6226 +vn -0.7300 -0.3183 -0.6048 +vn -0.7334 -0.3131 -0.6034 +vn -0.7714 -0.2489 -0.5856 +vn -0.9629 -0.1187 -0.2423 +vn -0.9700 -0.1410 -0.1979 +vn -0.7715 -0.2488 -0.5856 +vn -0.8067 -0.1764 -0.5640 +vn -0.8569 -0.4888 -0.1639 +vn -0.8044 -0.1816 -0.5656 +vn -0.8273 -0.1335 -0.5456 +vn -0.8373 -0.1235 -0.5327 +vn -0.8418 -0.1196 -0.5264 +vn -0.8440 -0.0988 -0.5271 +vn -0.8359 -0.0791 -0.5432 +vn -0.7935 -0.0693 -0.6046 +vn -0.7769 -0.0730 -0.6253 +vn -0.8290 -0.5416 -0.1394 +vn -0.9100 -0.3615 -0.2032 +vn -0.9031 -0.3820 -0.1965 +vn -0.9425 -0.2526 -0.2190 +vn -0.9413 -0.2579 -0.2177 +vn -0.9593 -0.1713 -0.2247 +vn -0.9591 -0.1478 -0.2414 +vn -0.9658 -0.1418 -0.2173 +vn -0.9465 -0.1285 -0.2960 +vn -0.9182 -0.1272 -0.3750 +vn -0.9153 -0.1242 -0.3830 +vn -0.9035 -0.1249 -0.4099 +vn -0.9030 -0.1261 -0.4108 +vn -0.8716 -0.1163 -0.4762 +vn -0.8620 -0.1118 -0.4945 +vn -0.8410 -0.1044 -0.5308 +vn -0.8418 -0.1036 -0.5298 +vn -0.8309 -0.1089 -0.5457 +vn -0.8256 -0.1109 -0.5533 +vn -0.8249 -0.1150 -0.5535 +vn 0.5801 -0.1336 0.8035 +vn 0.5787 -0.1327 0.8047 +vn 0.5786 -0.1327 0.8047 +vn 0.5915 -0.0989 0.8002 +vn 0.5907 -0.0987 0.8008 +vn 0.5916 -0.0989 0.8002 +vn 0.4047 -0.0487 0.9132 +vn 0.4046 -0.0487 0.9132 +vn 0.4051 -0.0502 0.9129 +vn 0.4052 -0.0503 0.9129 +vn -0.2833 0.3217 -0.9035 +vn -0.2837 0.3187 -0.9044 +vn -0.2739 0.3751 -0.8856 +vn -0.2733 0.3782 -0.8845 +vn 0.6394 0.0082 0.7688 +vn 0.6392 0.0088 0.7690 +vn 0.6431 -0.0036 0.7658 +vn 0.6432 -0.0042 0.7657 +vn -0.6530 -0.0747 -0.7536 +vn -0.6527 -0.0754 -0.7539 +vn -0.6631 -0.0524 -0.7467 +vn -0.6635 -0.0516 -0.7464 +vn 0.8526 0.2167 0.4755 +vn 0.9007 0.1736 0.3983 +vn 0.8979 0.1763 0.4033 +vn 0.8497 0.2190 0.4796 +vn 0.4061 -0.0510 0.9124 +vn 0.4170 -0.0660 0.9065 +vn 0.4164 -0.0652 0.9068 +vn 0.4054 -0.0502 0.9127 +vn 0.7266 0.0422 0.6858 +vn 0.7265 0.0423 0.6858 +vn 0.7284 0.0386 0.6841 +vn 0.7285 0.0384 0.6840 +vn -0.6856 -0.1096 -0.7197 +vn -0.6853 -0.1099 -0.7199 +vn -0.6924 -0.0997 -0.7146 +vn -0.6927 -0.0993 -0.7144 +vn 0.4360 -0.0600 0.8979 +vn 0.4317 -0.0558 0.9003 +vn 0.5476 -0.1765 0.8179 +vn 0.5527 -0.1821 0.8132 +vn 0.7949 0.0909 0.5999 +vn 0.7951 0.0906 0.5996 +vn -0.7072 -0.1940 -0.6798 +vn -0.7062 -0.1951 -0.6806 +vn -0.7375 -0.1630 -0.6554 +vn -0.7386 -0.1618 -0.6544 +vn 0.8760 0.1906 0.4430 +vn 0.8768 0.1897 0.4418 +vn 0.8506 0.2180 0.4785 +vn 0.8497 0.2189 0.4796 +vn 0.4756 0.8795 0.0130 +vn 0.4787 0.8779 0.0129 +vn 0.4111 0.9115 0.0155 +vn 0.4077 0.9130 0.0156 +vn -0.7400 -0.2680 -0.6169 +vn -0.7443 -0.2645 -0.6132 +vn -0.7442 -0.2646 -0.6133 +vn -0.7399 -0.2681 -0.6170 +vn 0.8594 0.1612 0.4851 +vn 0.8595 0.1612 0.4851 +vn 0.8583 0.1626 0.4867 +vn 0.8583 0.1626 0.4868 +vn 0.5091 -0.0686 0.8579 +vn 0.5092 -0.0712 0.8577 +vn 0.5087 -0.0379 0.8601 +vn 0.5087 -0.0353 0.8602 +vn -0.3310 0.3502 -0.8762 +vn -0.3308 0.3518 -0.8757 +vn -0.3367 0.3120 -0.8884 +vn -0.3369 0.3105 -0.8889 +vn -0.0601 -0.3442 0.9370 +vn -0.0681 -0.3488 0.9347 +vn -0.0681 -0.3487 0.9348 +vn -0.0600 -0.3442 0.9370 +vn -0.1090 -0.2994 0.9479 +vn -0.1091 -0.2994 0.9479 +vn -0.1029 -0.2970 0.9493 +vn 0.4023 -0.0507 0.9141 +vn 0.4030 -0.0489 0.9139 +vn -0.4397 0.2938 -0.8487 +vn -0.4483 0.2468 -0.8592 +vn -0.4476 0.2507 -0.8584 +vn -0.4388 0.2985 -0.8476 +vn -0.4422 -0.1547 0.8835 +vn -0.4042 -0.1161 0.9073 +vn -0.4053 -0.1172 0.9066 +vn -0.4433 -0.1559 0.8827 +vn 0.6106 0.0114 -0.7919 +vn 0.5144 -0.0601 -0.8554 +vn 0.5212 -0.0554 -0.8516 +vn 0.6174 0.0168 -0.7865 +vn -0.8743 0.1158 -0.4714 +vn -0.8757 0.1194 -0.4678 +vn -0.8404 0.0440 -0.5402 +vn -0.8390 0.0413 -0.5426 +vn 0.4014 -0.0516 0.9145 +vn 0.4020 -0.0507 0.9142 +vn 0.3874 -0.0713 0.9192 +vn 0.3867 -0.0722 0.9194 +vn -0.9819 -0.0876 0.1682 +vn -0.9795 -0.0779 0.1856 +vn -0.9796 -0.0780 0.1853 +vn -0.9819 -0.0878 0.1679 +vn 0.8468 -0.1052 -0.5214 +vn 0.7981 -0.1415 -0.5856 +vn 0.8009 -0.1396 -0.5823 +vn 0.8495 -0.1031 -0.5174 +vn 0.0339 -0.3814 0.9238 +vn 0.3709 -0.0674 0.9262 +vn 0.3674 -0.0711 0.9273 +vn 0.0269 -0.3869 0.9217 +vn -0.9638 -0.0010 -0.2665 +vn -0.9640 -0.0005 -0.2659 +vn 0.9783 -0.2024 -0.0435 +vn 0.8946 -0.3392 -0.2908 +vn 0.8995 -0.3343 -0.2814 +vn 0.9798 -0.1970 -0.0343 +vn -0.8754 0.1183 -0.4687 +vn -0.8576 0.0693 -0.5095 +vn -0.8581 0.0703 -0.5087 +vn -0.4588 0.7714 -0.4409 +vn -0.5341 0.6785 -0.5044 +vn -0.5337 0.6790 -0.5041 +vn -0.4584 0.7719 -0.4405 +vn 0.9197 -0.3844 0.0796 +vn 0.9197 -0.3846 0.0794 +vn 0.9244 -0.3673 0.1029 +vn 0.9244 -0.3671 0.1031 +vn -0.8817 0.0560 -0.4685 +vn -0.8808 0.0539 -0.4705 +vn -0.8808 0.0539 -0.4704 +vn -0.8817 0.0561 -0.4685 +vn 0.2412 -0.0861 0.9666 +vn 0.2299 -0.1365 0.9636 +vn 0.2307 -0.1331 0.9639 +vn 0.2420 -0.0827 0.9668 +vn -0.4058 0.2816 -0.8695 +vn -0.3974 0.3195 -0.8602 +vn -0.3981 0.3166 -0.8610 +vn -0.4063 0.2790 -0.8701 +vn 0.5964 -0.0568 0.8007 +vn 0.5990 -0.0570 0.7987 +vn 0.5383 -0.0011 0.8427 +vn 0.5381 0.0029 0.8429 +vn 0.5381 0.1504 0.8294 +vn 0.5376 0.1505 0.8297 +vn 0.5357 0.2520 0.8059 +vn 0.5346 0.2527 0.8065 +vn 0.5183 0.8491 0.1021 +vn 0.4562 0.7709 0.4444 +vn 0.5088 0.8550 0.1010 +vn 0.3880 0.8764 0.2851 +vn 0.5014 0.6184 0.6051 +vn 0.5005 0.6192 0.6050 +vn -0.5415 0.7018 -0.4629 +vn -0.5402 0.7034 -0.4619 +vn -0.2056 0.9754 -0.0796 +vn -0.0695 0.9312 0.3579 +vn -0.0168 0.8750 0.4838 +vn -0.0163 0.8749 0.4840 +vn 0.1707 -0.0338 0.9847 +vn -0.1283 -0.2212 0.9668 +vn -0.1214 -0.2192 0.9681 +vn 0.1718 -0.0518 0.9838 +vn 0.1811 0.2206 0.9584 +vn 0.1884 0.1789 0.9657 +vn 0.1743 0.3596 0.9167 +vn 0.1760 0.3595 0.9164 +vn -0.1541 0.7133 -0.6837 +vn -0.1472 0.7121 -0.6865 +vn -0.1795 0.5568 -0.8110 +vn -0.3354 0.4012 -0.8524 +vn -0.4660 0.2316 -0.8539 +vn -0.4647 0.2310 -0.8548 +vn -0.7481 -0.2913 -0.5962 +vn -0.7282 -0.2320 -0.6448 +vn -0.7164 -0.2060 -0.6666 +vn -0.6727 -0.1560 -0.7233 +vn -0.6704 -0.1577 -0.7251 +vn 0.9074 -0.3906 0.1549 +vn 0.9268 -0.3738 0.0369 +vn 0.8963 -0.2943 -0.3317 +vn 0.8351 -0.2566 -0.4866 +vn 0.8346 -0.2568 -0.4873 +vn -0.3741 0.5891 -0.7162 +vn -0.3711 0.5927 -0.7148 +vn -0.4039 0.3964 -0.8245 +vn -0.3445 0.3750 -0.8606 +vn -0.2556 0.3217 -0.9117 +vn -0.2568 0.3205 -0.9118 +vn 0.6276 0.0514 -0.7768 +vn 0.6452 0.0555 -0.7620 +vn 0.5284 0.0292 -0.8485 +vn 0.5190 0.0272 -0.8543 +vn -0.8674 -0.0334 -0.4966 +vn -0.8660 -0.0343 -0.4989 +vn -0.8699 -0.0333 -0.4921 +vn -0.8716 -0.0322 -0.4891 +vn -0.8916 -0.0279 -0.4520 +vn -0.6575 -0.0568 -0.7513 +vn -0.6629 -0.0563 -0.7466 +vn -0.6634 -0.0558 -0.7462 +vn -0.6694 -0.0549 -0.7409 +vn -0.6703 -0.0537 -0.7401 +vn -0.8603 -0.0446 -0.5078 +vn -0.8598 -0.0464 -0.5085 +vn -0.8618 -0.0398 -0.5057 +vn -0.8633 -0.0347 -0.5035 +vn 0.8928 -0.0285 0.4496 +vn 0.8758 0.0520 0.4799 +vn 0.8795 0.0369 0.4745 +vn 0.9010 -0.0887 0.4246 +vn -0.4125 -0.5034 -0.7593 +vn -0.4140 -0.4549 -0.7884 +vn -0.4140 -0.4564 -0.7876 +vn -0.4124 -0.5049 -0.7583 +vn -0.3533 0.2655 -0.8970 +vn -0.3408 0.3049 -0.8893 +vn -0.3417 0.3021 -0.8899 +vn -0.3541 0.2630 -0.8975 +vn 0.6406 -0.2137 0.7375 +vn 0.6254 -0.2795 0.7286 +vn 0.6482 -0.1614 0.7442 +vn 0.5791 -0.4302 0.6925 +vn 0.4963 -0.6058 0.6218 +vn 0.4388 -0.6944 0.5704 +vn 0.6478 -0.1743 0.7416 +vn 0.3531 -0.8073 0.4730 +vn 0.2278 -0.9162 0.3297 +vn 0.5856 -0.4096 0.6995 +vn 0.0968 -0.9763 0.1935 +vn 0.3575 -0.8019 0.4786 +vn -0.1012 -0.9940 -0.0412 +vn 0.1007 -0.9724 0.2104 +vn -0.1589 -0.9775 -0.1387 +vn 0.6485 -0.1687 0.7422 +vn 0.5841 -0.4185 0.6955 +vn -0.2040 -0.9672 -0.1515 +vn 0.3350 -0.8257 0.4539 +vn -0.2361 -0.9484 -0.2115 +vn -0.0908 -0.9959 -0.0021 +vn 0.1092 -0.9659 0.2347 +vn -0.2866 -0.9181 -0.2738 +vn -0.2245 -0.9639 -0.1429 +vn 0.6470 -0.1849 0.7397 +vn -0.3190 -0.8712 -0.3732 +vn 0.5955 -0.3842 0.7056 +vn 0.3651 -0.7819 0.5053 +vn -0.0957 -0.9952 0.0192 +vn 0.1442 -0.9490 0.2803 +vn -0.3528 -0.8843 -0.3057 +vn -0.2442 -0.9566 -0.1587 +vn 0.6521 -0.1845 0.7354 +vn 0.5884 -0.4276 0.6862 +vn 0.2878 -0.8681 0.4045 +vn -0.0774 -0.9968 0.0207 +vn 0.0710 -0.9852 0.1562 +vn -0.3560 -0.8823 -0.3078 +vn -0.2375 -0.9568 -0.1680 +vn 0.6823 -0.1744 0.7100 +vn 0.6172 -0.4221 0.6640 +vn 0.3165 -0.8653 0.3887 +vn -0.0011 -0.9989 0.0474 +vn 0.3332 -0.8734 0.3550 +vn 0.7299 -0.1865 0.6576 +vn 0.6639 -0.4219 0.6174 +vn 0.3304 -0.8916 0.3097 +vn 0.2913 -0.9217 0.2561 +vn 0.2778 -0.9442 0.1769 +vn 0.6769 -0.4638 0.5715 +vn 0.7611 -0.2028 0.6161 +vn -0.4301 -0.7923 -0.4327 +vn -0.1119 -0.9894 -0.0924 +vn 0.6674 -0.5423 0.5103 +vn 0.7022 -0.5499 0.4523 +vn 0.0271 -0.9995 0.0130 +vn 0.7899 -0.2262 0.5699 +vn 0.2723 -0.9496 0.1552 +vn 0.8245 -0.2452 0.5100 +vn -0.2165 -0.9667 -0.1364 +vn 0.7268 -0.5431 0.4204 +vn -0.4717 -0.7514 -0.4613 +vn -0.3051 -0.9206 -0.2440 +vn 0.8393 -0.2654 0.4745 +vn 0.2978 -0.9430 0.1484 +vn 0.7500 -0.5377 0.3853 +vn -0.0270 -0.9988 -0.0409 +vn 0.3238 -0.9359 0.1386 +vn -0.1315 -0.9824 -0.1324 +vn 0.8607 -0.2588 0.4384 +vn 0.7769 -0.5051 0.3759 +vn 0.3187 -0.9451 0.0722 +vn -0.1311 -0.9730 -0.1900 +vn 0.8727 -0.2418 0.4241 +vn 0.7896 -0.5381 0.2950 +vn 0.8920 -0.2746 0.3591 +vn 0.2583 -0.9645 -0.0553 +vn 0.7556 -0.6353 0.1598 +vn 0.2039 -0.9642 -0.1697 +vn -0.4756 -0.7467 -0.4650 +vn 0.1105 -0.9518 -0.2861 +vn -0.4714 -0.7514 -0.4618 +vn -0.0320 -0.8416 -0.5392 +vn 0.8956 -0.3892 0.2153 +vn -0.2993 -0.6989 -0.6496 +vn -0.3933 -0.7280 -0.5615 +vn 0.7045 -0.7077 -0.0533 +vn 0.6031 -0.7093 -0.3649 +vn -0.1952 -0.4501 -0.8714 +vn 0.8779 -0.4772 -0.0404 +vn -0.3727 -0.5105 -0.7749 +vn 0.7038 -0.5137 -0.4907 +vn 0.2834 -0.5509 -0.7850 +vn 0.2927 -0.3892 -0.8734 +vn -0.1352 -0.3050 -0.9427 +vn -0.3316 -0.3360 -0.8815 +vn -0.6358 -0.3055 -0.7089 +vn -0.6357 -0.3055 -0.7089 +vn -0.6358 -0.3054 -0.7089 +vn -0.6300 0.1634 -0.7592 +vn -0.6300 0.1635 -0.7592 +vn 0.0838 0.9897 -0.1164 +vn 0.0790 0.9811 -0.1767 +vn 0.0607 0.9860 -0.1551 +vn 0.1694 0.9846 0.0435 +vn 0.2099 0.9729 0.0972 +vn 0.2829 0.9457 0.1598 +vn 0.3204 0.9206 0.2234 +vn 0.3638 0.8959 0.2549 +vn 0.4311 0.8289 0.3564 +vn 0.4978 0.7571 0.4231 +vn 0.5578 0.6402 0.5282 +vn 0.5645 0.6460 0.5138 +vn 0.6261 0.4699 0.6222 +vn 0.6384 0.4463 0.6271 +vn 0.6591 0.3207 0.6803 +vn 0.6484 0.4056 0.6443 +vn -0.1980 0.9179 -0.3440 +vn -0.1983 0.9181 -0.3432 +vn -0.2038 0.9169 -0.3433 +vn 0.0076 0.9941 -0.1079 +vn -0.1944 0.9203 -0.3393 +vn 0.0138 0.9945 -0.1041 +vn -0.1708 0.9363 -0.3069 +vn 0.0960 0.9954 -0.0059 +vn 0.1575 0.9860 0.0555 +vn 0.2327 0.9631 0.1355 +vn 0.2582 0.9501 0.1754 +vn 0.2500 0.9525 0.1737 +vn 0.2644 0.9451 0.1920 +vn 0.3569 0.8912 0.2801 +vn 0.3692 0.8783 0.3039 +vn 0.3591 0.8854 0.2950 +vn 0.2165 0.9667 0.1364 +vn 0.3634 0.8804 0.3047 +vn 0.4941 0.7324 0.4686 +vn 0.5117 0.7083 0.4863 +vn 0.3455 0.9164 0.2019 +vn 0.4147 0.8521 0.3194 +vn 0.4753 0.7685 0.4284 +vn 0.4491 0.7967 0.4044 +vn 0.3152 0.9370 0.1507 +vn 0.4661 0.8357 0.2906 +vn 0.4253 0.8727 0.2398 +vn 0.4490 0.7998 0.3983 +vn 0.6316 0.6609 0.4054 +vn 0.6318 0.6348 0.4448 +vn 0.6148 0.6366 0.4656 +vn 0.3732 0.9191 0.1268 +vn 0.3877 0.7970 -0.4631 +vn 0.6384 0.6841 0.3527 +vn 0.5825 0.8114 -0.0480 +vn 0.5712 0.8142 0.1042 +vn 0.6300 0.7293 0.2671 +vn 0.6488 0.6865 0.3283 +vn -0.0324 0.7902 -0.6120 +vn 0.8660 0.4690 -0.1734 +vn 0.8971 0.4226 0.1286 +vn 0.5434 0.4772 -0.6907 +vn 0.8680 0.3875 0.3104 +vn -0.1164 0.8463 -0.5199 +vn 0.8392 0.3745 0.3943 +vn 0.6263 0.6785 0.3840 +vn 0.5710 0.5914 0.5694 +vn 0.7617 0.3682 0.5332 +vn 0.5443 0.6454 0.5360 +vn 0.6383 0.6783 0.3640 +vn 0.5539 0.6363 0.5369 +vn -0.0057 0.4457 -0.8952 +vn 0.7508 0.3650 0.5505 +vn 0.5311 0.6831 0.5013 +vn 0.6600 0.3743 -0.6514 +vn -0.2457 0.3925 -0.8863 +vn 0.8228 0.3720 0.4296 +vn 0.5805 0.6563 0.4820 +vn 0.9130 0.3717 -0.1682 +vn 0.9085 0.2924 0.2985 +vn 0.8701 0.2891 0.3993 +vn 0.9382 0.3248 0.1193 +vn 0.0000 0.2086 -0.9780 +vn 0.8576 0.2775 0.4331 +vn 0.8093 0.3801 0.4479 +vn 0.7757 0.3793 0.5044 +vn -0.2588 0.1823 -0.9486 +vn 0.7046 0.3885 0.5938 +vn 0.8320 0.3196 0.4535 +vn 0.5613 0.6566 0.5038 +vn 0.7930 0.3850 0.4722 +vn 0.8138 0.3365 0.4737 +vn 0.5849 0.5629 0.5839 +vn 0.7967 0.3349 0.5032 +vn 0.7754 0.3234 0.5424 +vn 0.7693 0.3080 0.5598 +vn 0.7310 0.3189 0.6033 +vn 0.6594 0.4284 0.6178 +vn 0.6804 0.3648 0.6355 +vn 0.6228 0.4841 0.6147 +vn 0.6399 0.4132 0.6479 +vn 0.6253 0.4296 0.6515 +vn 0.6422 0.3592 0.6771 +vn 0.6262 0.4266 0.6526 +vn 0.6450 0.3410 0.6838 +vn 0.6296 0.4197 0.6538 +vn 0.6414 0.3724 0.6708 +vn 0.6460 0.3484 0.6792 +vn 0.6499 0.3268 0.6861 +vn -0.4822 -0.4149 -0.7716 +vn -0.4409 -0.4397 -0.7825 +vn -0.4274 -0.5497 -0.7177 +vn -0.4653 -0.6021 -0.6488 +vn -0.4288 -0.7623 -0.4848 +vn -0.5390 -0.5652 -0.6246 +vn -0.5763 -0.3515 -0.7378 +vn -0.5645 -0.5462 -0.6189 +vn -0.4735 -0.7338 -0.4872 +vn -0.6217 -0.3168 -0.7163 +vn -0.5351 -0.6460 -0.5444 +vn -0.4818 -0.7404 -0.4686 +vn -0.4832 -0.7382 -0.4707 +vn -0.3728 0.2920 -0.8808 +vn -0.4263 0.2688 -0.8637 +vn -0.3187 0.4673 -0.8247 +vn -0.3040 0.6652 -0.6820 +vn -0.5565 0.2052 -0.8051 +vn -0.4179 0.6326 -0.6521 +vn -0.6133 0.1734 -0.7706 +vn -0.1348 0.9224 -0.3619 +vn -0.4563 0.6128 -0.6452 +vn -0.3865 0.7447 -0.5441 +vn -0.2202 0.8959 -0.3859 +vn -0.2053 0.9157 -0.3454 +vn -0.2046 0.9167 -0.3432 +vn -0.5284 -0.0292 0.8485 +vn -0.6452 -0.0555 0.7620 +vn -0.6277 -0.0514 0.7768 +vn -0.5190 -0.0272 0.8543 +vn 0.8666 0.0343 0.4979 +vn 0.8761 0.0328 0.4810 +vn 0.8653 0.0381 0.4998 +vn 0.8603 0.0446 0.5078 +vn 0.8598 0.0464 0.5085 +vn -0.8758 -0.0520 -0.4799 +vn -0.9009 0.0478 -0.4313 +vn -0.8795 -0.0369 -0.4745 +vn -0.9048 0.0919 -0.4159 +vn -0.9219 0.1075 -0.3722 +vn 0.6703 0.0537 0.7401 +vn 0.6694 0.0549 0.7409 +vn 0.6634 0.0558 0.7462 +vn 0.6629 0.0563 0.7466 +vn 0.6575 0.0568 0.7513 +vn 0.8580 0.0589 0.5102 +vn 0.8581 0.0588 0.5102 +vn 0.8648 0.0590 0.4987 +vn 0.8580 0.0593 0.5103 +vn 0.8580 0.0599 0.5102 +vn 0.8569 0.0568 0.5123 +vn 0.8582 0.0568 0.5102 +vn 0.8627 0.0619 0.5019 +vn 0.8668 0.0624 0.4947 +vn 0.8714 0.0605 0.4869 +vn 0.8743 0.0580 0.4819 +vn 0.8762 0.0577 0.4785 +vn 0.8753 0.0579 0.4801 +vn 0.8761 0.0587 0.4785 +vn 0.8769 0.0577 0.4771 +vn 0.8774 0.0572 0.4763 +vn 0.8774 0.0573 0.4763 +vn 0.8774 0.0574 0.4763 +vn 0.8773 0.0570 0.4766 +vn -0.8647 -0.0590 -0.4987 +vn -0.8580 -0.0588 -0.5102 +vn -0.8580 -0.0589 -0.5102 +vn -0.8580 -0.0593 -0.5103 +vn -0.8580 -0.0599 -0.5102 +vn -0.8569 -0.0568 -0.5123 +vn -0.8582 -0.0568 -0.5102 +vn -0.8627 -0.0619 -0.5020 +vn -0.8669 -0.0624 -0.4946 +vn -0.8713 -0.0605 -0.4869 +vn -0.8743 -0.0580 -0.4819 +vn -0.8762 -0.0577 -0.4785 +vn -0.8753 -0.0579 -0.4801 +vn -0.8761 -0.0587 -0.4785 +vn -0.8769 -0.0577 -0.4771 +vn -0.8774 -0.0572 -0.4763 +vn -0.8774 -0.0573 -0.4763 +vn -0.4096 -0.0718 -0.9095 +vn -0.4086 -0.0384 -0.9119 +vn -0.4087 -0.0424 -0.9117 +vn -0.4018 0.0748 -0.9127 +vn -0.4035 0.0532 -0.9134 +vn -0.3762 0.2781 -0.8838 +vn -0.3858 0.2163 -0.8968 +vn -0.2742 0.6512 -0.7076 +vn -0.3339 0.4712 -0.8164 +vn -0.1051 0.9245 -0.3665 +vn -0.1961 0.8089 -0.5543 +vn -0.0334 0.9765 -0.2129 +vn -0.0578 0.9624 -0.2655 +vn -0.0072 0.9878 -0.1556 +vn -0.0202 0.9827 -0.1840 +vn 0.0317 0.9971 -0.0695 +vn 0.0062 0.9920 -0.1260 +vn 0.0716 0.9972 0.0200 +vn 0.0487 0.9983 -0.0316 +vn 0.1012 0.9910 0.0873 +vn 0.0853 0.9950 0.0511 +vn 0.1130 0.9870 0.1143 +vn 0.1084 0.9887 0.1039 +vn 0.1229 0.9829 0.1370 +vn 0.1169 0.9855 0.1232 +vn 0.1349 0.9771 0.1649 +vn 0.1277 0.9807 0.1482 +vn 0.1687 0.9550 0.2441 +vn 0.1462 0.9706 0.1914 +vn 0.1864 0.9400 0.2857 +vn 0.1797 0.9459 0.2700 +vn 0.2210 0.9029 0.3688 +vn 0.1986 0.9282 0.3148 +vn 0.2368 0.8821 0.4072 +vn 0.2519 0.8597 0.4443 +vn 0.2703 0.8288 0.4899 +vn 0.2929 0.7843 0.5469 +vn 0.3121 0.7394 0.5965 +vn 0.3267 0.7004 0.6346 +vn 0.3456 0.6408 0.6855 +vn 0.3594 0.5889 0.7239 +vn 0.3820 0.4801 0.7897 +vn 0.3912 0.4200 0.8189 +vn 0.4041 0.2969 0.8652 +vn 0.4055 0.2773 0.8710 +vn 0.4098 0.1765 0.8950 +vn 0.4099 0.1706 0.8960 +vn 0.4101 0.0964 0.9070 +vn 0.4101 0.0971 0.9069 +vn 0.4096 0.0718 0.9095 +vn -0.4088 -0.0424 -0.9116 +vn -0.4018 0.0749 -0.9127 +vn -0.2743 0.6512 -0.7077 +vn -0.3340 0.4711 -0.8164 +vn -0.1126 0.9172 -0.3821 +vn -0.1979 0.8060 -0.5579 +vn -0.0536 0.9650 -0.2565 +vn -0.0702 0.9538 -0.2922 +vn -0.0251 0.9806 -0.1946 +vn -0.0419 0.9720 -0.2310 +vn 0.0411 0.9980 -0.0485 +vn -0.0035 0.9891 -0.1474 +vn 0.0801 0.9960 0.0394 +vn 0.0628 0.9980 0.0002 +vn 0.0981 0.9919 0.0804 +vn 0.0894 0.9942 0.0605 +vn 0.1015 0.9909 0.0881 +vn 0.1013 0.9910 0.0877 +vn 0.1144 0.9864 0.1176 +vn 0.1051 0.9898 0.0962 +vn 0.1302 0.9794 0.1541 +vn 0.1212 0.9836 0.1333 +vn 0.1454 0.9710 0.1895 +vn 0.1368 0.9760 0.1695 +vn 0.1410 0.9736 0.1792 +vn 0.1466 0.9704 0.1922 +vn 0.1539 0.9657 0.2091 +vn 0.1432 0.9724 0.1842 +vn 0.1671 0.9562 0.2402 +vn 0.1606 0.9610 0.2250 +vn 0.1820 0.9440 0.2754 +vn 0.1733 0.9513 0.2548 +vn 0.1931 0.9336 0.3018 +vn 0.1877 0.9387 0.2890 +vn 0.2446 0.8709 0.4263 +vn 0.2110 0.9147 0.3447 +vn 0.2926 0.7848 0.5464 +vn 0.2704 0.8286 0.4903 +vn 0.3122 0.7394 0.5965 +vn 0.3266 0.7006 0.6344 +vn 0.3595 0.5887 0.7240 +vn 0.3819 0.4800 0.7897 +vn 0.3911 0.4200 0.8189 +vn 0.4040 0.2970 0.8652 +vn 0.4054 0.2774 0.8710 +vn 0.4097 0.1764 0.8950 +vn 0.4098 0.1706 0.8961 +vn 0.4100 0.0964 0.9070 +vn 0.4100 0.0971 0.9069 +vn 0.8765 0.0551 0.4782 +vn 0.8767 0.0565 0.4777 +vn 0.8766 0.0565 0.4779 +vn 0.8767 0.0570 0.4776 +vn 0.8768 0.0572 0.4775 +vn 0.8768 0.0573 0.4775 +vn 0.8768 0.0578 0.4774 +vn 0.8768 0.0583 0.4774 +vn 0.8761 0.0580 0.4786 +vn 0.8766 0.0592 0.4775 +vn 0.8772 0.0597 0.4764 +vn 0.8774 0.0551 0.4767 +vn 0.8799 0.0557 0.4719 +vn 0.8788 0.0536 0.4741 +vn 0.8797 0.0529 0.4726 +vn 0.8794 0.0531 0.4731 +vn 0.8809 0.0545 0.4701 +vn 0.8836 0.0648 0.4637 +vn 0.8840 0.0665 0.4627 +vn 0.8835 0.0424 0.4664 +vn 0.8819 0.0570 0.4679 +vn 0.8681 0.0593 0.4928 +vn 0.8771 0.0628 0.4761 +vn 0.8722 0.0646 0.4849 +vn 0.8651 0.0632 0.4977 +vn 0.8580 0.0588 0.5102 +vn -0.8767 -0.0566 -0.4776 +vn -0.8765 -0.0551 -0.4781 +vn -0.8766 -0.0566 -0.4779 +vn -0.8767 -0.0571 -0.4776 +vn -0.8768 -0.0572 -0.4775 +vn -0.8768 -0.0573 -0.4775 +vn -0.8768 -0.0578 -0.4774 +vn -0.8766 -0.0584 -0.4776 +vn -0.8761 -0.0580 -0.4786 +vn -0.8764 -0.0586 -0.4780 +vn -0.8800 -0.0577 -0.4714 +vn -0.8775 -0.0548 -0.4765 +vn -0.8795 -0.0559 -0.4727 +vn -0.8836 -0.0648 -0.4637 +vn -0.8840 -0.0665 -0.4627 +vn -0.8835 -0.0424 -0.4664 +vn -0.8819 -0.0570 -0.4679 +vn -0.8777 -0.0542 -0.4762 +vn -0.8681 -0.0593 -0.4928 +vn -0.8810 -0.0543 -0.4700 +vn -0.8788 -0.0533 -0.4741 +vn -0.8797 -0.0525 -0.4726 +vn -0.8795 -0.0527 -0.4730 +vn -0.8771 -0.0628 -0.4762 +vn -0.8721 -0.0647 -0.4850 +vn -0.8651 -0.0632 -0.4977 +vn -0.8582 -0.0569 -0.5101 +vn 0.4097 0.1765 0.8950 +vn 0.3909 0.4217 0.8182 +vn 0.3824 0.4771 0.7913 +vn 0.3463 0.6383 0.6875 +vn 0.3594 0.5887 0.7240 +vn 0.3124 0.7387 0.5973 +vn 0.2929 0.7842 0.5470 +vn 0.2702 0.8290 0.4897 +vn 0.2447 0.8707 0.4266 +vn 0.2107 0.9151 0.3439 +vn 0.1928 0.9339 0.3011 +vn 0.1866 0.9397 0.2866 +vn 0.1755 0.9495 0.2602 +vn 0.1817 0.9442 0.2749 +vn 0.1595 0.9618 0.2224 +vn 0.1693 0.9545 0.2455 +vn 0.1421 0.9731 0.1816 +vn 0.1519 0.9670 0.2046 +vn 0.1406 0.9739 0.1782 +vn 0.1390 0.9748 0.1743 +vn 0.1165 0.9856 0.1225 +vn 0.1347 0.9772 0.1644 +vn 0.1131 0.9869 0.1148 +vn 0.1106 0.9879 0.1090 +vn 0.1121 0.9873 0.1123 +vn 0.1065 0.9893 0.0997 +vn 0.0298 0.9968 -0.0738 +vn -0.1654 0.8547 -0.4920 +vn -0.3340 0.4710 -0.8164 +vn -0.2743 0.6511 -0.7077 +vn -0.3858 0.2163 -0.8969 +vn -0.3762 0.2780 -0.8839 +vn -0.4034 0.0532 -0.9135 +vn -0.4017 0.0749 -0.9127 +vn 0.8780 0.0578 0.4751 +vn 0.8780 0.0584 0.4751 +vn 0.8779 0.0596 0.4751 +vn 0.8780 0.0574 0.4752 +vn 0.8780 0.0572 0.4753 +vn 0.8780 0.0568 0.4753 +vn 0.8770 0.0554 0.4774 +vn 0.8770 0.0572 0.4771 +vn 0.8767 0.0595 0.4773 +vn 0.8778 0.0606 0.4752 +vn 0.8778 0.0603 0.4753 +vn 0.8778 0.0601 0.4753 +vn 0.8764 0.0563 0.4783 +vn 0.8712 0.0584 0.4875 +vn 0.8713 0.0605 0.4869 +vn 0.8668 0.0625 0.4947 +vn 0.8676 0.0647 0.4931 +vn 0.8726 0.0680 0.4836 +vn 0.8701 0.0593 0.4892 +vn 0.8674 0.0521 0.4948 +vn 0.8675 0.0555 0.4944 +vn 0.8671 0.0576 0.4947 +vn 0.8670 0.0581 0.4949 +vn -0.8780 -0.0584 -0.4751 +vn -0.8781 -0.0577 -0.4751 +vn -0.8779 -0.0596 -0.4751 +vn -0.8780 -0.0577 -0.4751 +vn -0.8780 -0.0574 -0.4752 +vn -0.8780 -0.0572 -0.4753 +vn -0.8780 -0.0568 -0.4753 +vn -0.8770 -0.0554 -0.4774 +vn -0.8770 -0.0572 -0.4771 +vn -0.8767 -0.0595 -0.4773 +vn -0.8778 -0.0606 -0.4752 +vn -0.8778 -0.0603 -0.4753 +vn -0.8778 -0.0601 -0.4753 +vn -0.8764 -0.0563 -0.4783 +vn -0.8712 -0.0584 -0.4875 +vn -0.8713 -0.0606 -0.4870 +vn -0.8669 -0.0625 -0.4946 +vn -0.8676 -0.0647 -0.4931 +vn -0.8726 -0.0680 -0.4836 +vn -0.8701 -0.0593 -0.4892 +vn -0.8674 -0.0521 -0.4948 +vn -0.8675 -0.0554 -0.4944 +vn -0.8671 -0.0576 -0.4948 +vn -0.8670 -0.0581 -0.4949 +vn -0.6778 0.6809 -0.2772 +vn -0.3274 0.9425 -0.0671 +vn 0.0405 0.8425 0.5372 +vn -0.4295 0.8791 0.2067 +vn -0.2815 0.8139 0.5083 +vn 0.0721 0.7931 0.6049 +vn -0.8694 0.4782 -0.1248 +vn -0.3642 0.8553 0.3685 +vn -0.0136 0.8771 0.4800 +vn -0.7932 0.5768 0.1956 +vn -0.4678 0.8768 0.1112 +vn -0.8276 0.5584 0.0569 +vn -0.2286 0.9632 0.1412 +vn -0.8533 0.3280 -0.4053 +vn -0.8931 0.1142 -0.4351 +vn -0.9724 0.2311 -0.0318 +vn -0.9550 0.1704 -0.2426 +vn -0.8417 0.5179 -0.1528 +vn -0.9669 0.2117 -0.1423 +vn -0.9391 0.1780 -0.2939 +vn -0.8932 -0.0607 -0.4456 +vn -0.9941 -0.0344 -0.1033 +vn -0.8276 0.4231 -0.3688 +vn -0.9800 -0.0392 -0.1953 +vn -0.9607 -0.0500 -0.2731 +vn -0.9444 -0.0475 -0.3254 +vn -0.8934 0.1372 -0.4279 +vn -0.8746 -0.2150 -0.4346 +vn -0.9595 -0.2734 -0.0672 +vn -0.9488 -0.2675 -0.1681 +vn -0.9360 -0.2428 -0.2550 +vn -0.9187 -0.2489 -0.3066 +vn -0.8945 -0.0566 -0.4435 +vn -0.8220 -0.4036 -0.4018 +vn -0.8223 -0.5585 0.1095 +vn -0.8552 -0.4911 -0.1657 +vn -0.8590 -0.0575 -0.5088 +vn -0.8377 -0.5458 -0.0196 +vn -0.8737 -0.2318 -0.4277 +vn -0.8295 -0.5215 -0.1999 +vn -0.6814 -0.6624 -0.3113 +vn -0.4064 -0.8039 0.4343 +vn -0.4684 -0.8361 0.2855 +vn -0.5641 -0.8228 0.0695 +vn -0.5476 -0.8360 0.0348 +vn -0.8097 -0.4462 -0.3812 +vn -0.2704 -0.9610 -0.0575 +vn 0.2053 -0.7124 0.6710 +vn 0.1707 -0.8614 0.4783 +vn 0.1476 -0.8077 0.5708 +vn -0.5633 -0.8042 -0.1899 +vn 0.0464 -0.9407 0.3362 +vn -0.0103 -0.9951 0.0988 +vn 0.5145 -0.7809 0.3542 +vn 0.5782 -0.4234 0.6974 +vn 0.5825 -0.4858 0.6517 +vn 0.6138 -0.5058 0.6061 +vn 0.5856 -0.6049 0.5396 +vn -0.0841 -0.9852 -0.1495 +vn 0.5483 -0.7518 0.3663 +vn 0.7581 -0.2466 0.6038 +vn 0.7111 -0.2096 0.6712 +vn 0.7295 -0.2357 0.6421 +vn 0.7851 -0.3907 0.4806 +vn 0.8058 -0.3421 0.4834 +vn 0.7628 -0.2994 0.5732 +vn 0.7569 -0.0590 0.6509 +vn 0.8510 -0.1207 0.5112 +vn 0.7767 -0.0692 0.6260 +vn 0.8004 -0.0761 0.5946 +vn 0.8114 -0.0835 0.5786 +vn 0.8536 -0.1165 0.5077 +vn 0.8569 0.0572 0.5124 +vn 0.7649 0.0641 0.6409 +vn 0.8072 0.0636 0.5868 +vn 0.7834 0.0628 0.6183 +vn 0.8593 0.0581 0.5082 +vn -0.3417 0.9310 -0.1284 +vn 0.8196 0.0584 0.5700 +vn 0.8347 0.2157 0.5066 +vn 0.7471 0.1810 0.6395 +vn 0.7655 0.1882 0.6153 +vn -0.8527 0.1155 -0.5094 +vn -0.5521 0.8130 -0.1847 +vn 0.7880 0.1917 0.5851 +vn 0.7988 0.2022 0.5665 +vn 0.8382 0.2149 0.5013 +vn 0.7645 0.4313 0.4790 +vn 0.6962 0.3113 0.6469 +vn 0.7377 0.3415 0.5824 +vn -0.7783 -0.4107 -0.4750 +vn -0.8378 -0.2140 -0.5023 +vn 0.8769 0.2384 0.4173 +vn 0.7125 0.3295 0.6195 +vn 0.7737 0.4204 0.4740 +vn 0.8956 0.0556 0.4414 +vn 0.7436 0.3734 0.5547 +vn 0.5755 0.7082 0.4090 +vn 0.5803 0.4764 0.6605 +vn 0.8311 -0.4143 0.3711 +vn 0.5470 -0.8190 0.1735 +vn 0.5871 0.5187 0.6215 +vn 0.6138 0.5352 0.5804 +vn 0.6011 0.6053 0.5218 +vn -0.6051 -0.6875 -0.4015 +vn 0.8950 -0.1398 0.4237 +vn 0.6140 0.6799 0.4009 +vn 0.4837 0.7944 0.3674 +vn 0.4954 0.5572 0.6664 +vn 0.8107 0.4500 0.3746 +vn 0.4698 0.7533 0.4601 +vn 0.5779 0.7876 0.2138 +vn 0.4977 0.5956 0.6305 +vn 0.5117 0.6624 0.5472 +vn 0.5091 0.7646 0.3951 +vn 0.9142 0.2477 0.3206 +vn 0.3681 0.9118 0.1819 +vn 0.3560 0.9314 -0.0750 +vn 0.5616 0.8273 -0.0111 +vn 0.8282 0.5167 0.2172 +vn 0.8441 0.5295 0.0843 +vn 0.9415 0.0485 0.3336 +vn 0.9409 0.2651 0.2109 +vn 0.9707 0.0424 0.2367 +vn 0.1992 0.9214 -0.3338 +vn 0.4859 0.8460 -0.2194 +vn 0.9519 0.2640 0.1554 +vn 0.4686 0.8316 -0.2982 +vn 0.8396 0.5429 0.0189 +vn 0.1599 0.8746 -0.4578 +vn 0.9823 0.0371 0.1835 +vn 0.7984 0.5639 -0.2112 +vn 0.1163 0.8330 -0.5409 +vn -0.1477 -0.9115 -0.3839 +vn 0.3717 0.7832 -0.4984 +vn 0.9565 0.2918 -0.0007 +vn 0.9354 -0.1739 0.3077 +vn 0.9988 0.0282 0.0396 +vn -0.0817 0.6516 -0.7541 +vn 0.9701 -0.2109 0.1205 +vn 0.4219 0.6883 -0.5901 +vn 0.8369 0.4667 -0.2860 +vn 0.9647 0.2450 -0.0967 +vn 0.9604 -0.2051 0.1886 +vn 0.9731 -0.2304 -0.0009 +vn 0.9967 0.0162 -0.0801 +vn -0.8209 -0.0574 -0.5682 +vn -0.8131 0.0826 -0.5762 +vn -0.8051 0.3429 -0.4840 +vn 0.9810 -0.1797 -0.0732 +vn 0.7663 -0.5868 -0.2615 +vn 0.8442 -0.5357 0.0167 +vn 0.8203 -0.5650 -0.0888 +vn 0.8411 -0.5149 0.1659 +vn 0.8063 -0.5049 -0.3082 +vn 0.2794 -0.8084 -0.5180 +vn 0.3350 -0.8436 -0.4197 +vn 0.4708 -0.8761 -0.1040 +vn 0.3948 -0.8675 -0.3026 +vn 0.4105 -0.7475 -0.5223 +vn -0.2817 -0.6955 -0.6610 +vn -0.2420 -0.8020 -0.5461 +vn -0.2671 -0.7447 -0.6116 +vn -0.2829 -0.6417 -0.7129 +vn -0.5869 -0.4992 -0.6375 +vn -0.5593 -0.4577 -0.6912 +vn -0.5814 -0.4690 -0.6649 +vn -0.6055 -0.5921 -0.5318 +vn -0.5861 -0.5434 -0.6010 +vn -0.6757 -0.3003 -0.6733 +vn -0.7072 -0.3236 -0.6286 +vn -0.7208 -0.3360 -0.6063 +vn -0.6910 -0.3099 -0.6530 +vn -0.7429 -0.3715 -0.5569 +vn -0.7281 -0.1733 -0.6632 +vn -0.7596 -0.1856 -0.6233 +vn -0.7440 -0.1777 -0.6441 +vn -0.7993 -0.2001 -0.5666 +vn -0.7739 -0.1921 -0.6034 +vn -0.7394 -0.0698 -0.6696 +vn -0.7788 -0.0636 -0.6240 +vn -0.7919 -0.0624 -0.6075 +vn -0.7592 -0.0642 -0.6477 +vn -0.7293 0.0513 -0.6823 +vn -0.7717 0.0652 -0.6327 +vn -0.7514 0.0590 -0.6573 +vn -0.7859 0.0753 -0.6138 +vn -0.7630 0.3044 -0.5703 +vn -0.6810 0.1698 -0.7123 +vn -0.7391 0.2446 -0.6276 +vn -0.7260 0.2283 -0.6487 +vn -0.7037 0.2072 -0.6796 +vn -0.5365 0.3752 -0.7559 +vn -0.5867 0.4620 -0.6651 +vn -0.5731 0.4179 -0.7049 +vn -0.5911 0.6022 -0.5366 +vn -0.5778 0.5231 -0.6265 +vn -0.4688 0.4384 -0.7668 +vn -0.5485 0.7496 -0.3705 +vn -0.4864 0.4667 -0.7387 +vn -0.4511 0.6269 -0.6353 +vn -0.4761 0.5842 -0.6573 +vn -0.3593 0.8610 -0.3600 +vn -0.4872 0.6736 -0.5558 +vn 0.7040 0.3399 0.6235 +vn 0.7042 0.3397 0.6235 +vn -0.4034 -0.0765 -0.9118 +vn -0.4034 -0.0764 -0.9118 +vn -0.8305 0.2989 -0.4700 +vn -0.8305 0.2990 -0.4700 +vn 0.8305 -0.2989 0.4700 +vn 0.2017 0.3318 -0.9216 +vn 0.2016 0.3317 -0.9216 +vn 0.2017 0.3317 -0.9216 +vn 0.2018 0.3318 -0.9215 +vn 0.8202 0.4867 0.3007 +vn 0.7811 0.4277 0.4548 +vn 0.7812 0.4277 0.4548 +vn 0.8340 0.5497 0.0478 +vn 0.8056 0.5730 -0.1507 +vn 0.8056 0.5729 -0.1507 +vn 0.7266 -0.2357 0.6453 +vn 0.7265 -0.2360 0.6454 +vn -0.4074 -0.0686 -0.9107 +vn 0.8030 0.3829 0.4568 +vn 0.8030 0.3829 0.4567 +vn -0.8030 -0.3829 -0.4567 +vn 0.1209 -0.4097 -0.9042 +vn 0.1209 -0.4096 -0.9042 +vn 0.8309 -0.5549 -0.0414 +vn 0.8130 -0.3606 0.4572 +vn 0.8130 -0.3607 0.4571 +vn 0.8457 -0.4379 0.3049 +vn 0.7696 -0.5898 -0.2449 +vn 0.7694 -0.5898 -0.2451 +vn -0.8509 0.5247 0.0259 +vn -0.8505 0.5253 0.0263 +vn -0.4095 -0.0717 -0.9095 +vn -0.7985 -0.4050 -0.4454 +vn -0.7985 -0.4050 -0.4453 +vn 0.7985 0.4050 0.4453 +vn 0.7985 0.4050 0.4454 +vn -0.6110 0.0940 -0.7860 +vn -0.7942 0.2945 -0.5315 +vn -0.8320 0.3538 -0.4273 +vn -0.8320 0.3539 -0.4273 +vn -0.7643 0.2550 -0.5923 +vn -0.7110 0.1932 -0.6762 +vn -0.7109 0.1932 -0.6762 +vn -0.8569 -0.5125 -0.0554 +vn -0.8572 -0.5120 -0.0557 +vn -0.4076 -0.0717 -0.9104 +vn -0.4076 -0.0717 -0.9103 +vn 0.8236 -0.3470 0.4487 +vn -0.8236 0.3470 -0.4487 +vn -0.8236 0.3470 -0.4486 +vn -0.6059 -0.2211 -0.7642 +vn -0.7470 -0.3454 -0.5681 +vn -0.8046 -0.4072 -0.4322 +vn -0.7654 -0.3639 -0.5308 +vn -0.6960 -0.2976 -0.6535 +vn -0.6779 0.6809 -0.2772 +vn -0.4295 0.8791 0.2068 +vn -0.8932 -0.0606 -0.4456 +vn -0.5633 -0.8041 -0.1899 +vn 0.7581 -0.2465 0.6038 +vn 0.9143 0.2477 0.3206 +vn 0.3560 0.9315 -0.0750 +vn 0.4686 0.8316 -0.2981 +vn 0.3717 0.7832 -0.4983 +vn 0.9988 0.0281 0.0396 +vn 0.9647 0.2450 -0.0966 +vn -0.8051 0.3430 -0.4840 +vn -0.5813 -0.4691 -0.6649 +vn 0.2015 0.3317 -0.9216 +vn 0.2019 0.3318 -0.9215 +vn 0.8340 0.5498 0.0478 +vn -0.4075 -0.0686 -0.9106 +vn -0.8030 -0.3829 -0.4568 +vn 0.1208 -0.4096 -0.9042 +vn 0.1208 -0.4097 -0.9042 +vn -0.4095 -0.0718 -0.9095 +vn -0.6110 0.0939 -0.7860 +vn 0.4096 0.0748 0.9092 +vn 0.4097 0.0748 0.9092 +vn 0.7913 0.0625 0.6082 +vn 0.7913 0.0624 0.6083 +vn 0.7913 0.0640 0.6081 +vn 0.7913 0.0641 0.6081 +vn -0.9686 -0.0436 -0.2447 +vn -0.9686 -0.0434 -0.2447 +vn -0.9684 -0.0460 -0.2450 +vn -0.9684 -0.0461 -0.2450 +vn -0.0833 -0.9953 -0.0485 +vn -0.0784 -0.9963 -0.0354 +vn -0.0856 -0.9951 -0.0487 +vn -0.0856 -0.9951 -0.0503 +vn -0.0846 -0.9952 -0.0495 +vn -0.0843 -0.9952 -0.0494 +vn -0.0793 -0.9961 -0.0383 +vn -0.4095 -0.0684 -0.9097 +vn 0.0842 0.9937 0.0746 +vn 0.1007 0.9912 0.0861 +vn 0.0999 0.9913 0.0856 +vn 0.0646 0.9961 0.0605 +vn 0.0443 0.9980 0.0455 +vn -0.0096 0.9999 0.0047 +vn 0.9428 0.0505 0.3295 +vn 0.9428 0.0505 0.3296 +vn 0.9881 0.0227 -0.1521 +vn 0.9955 0.0267 -0.0912 +vn 0.4080 -0.0421 -0.9120 +vn 0.4888 -0.0370 -0.8716 +vn -0.0574 -0.0622 -0.9964 +vn 0.1043 0.9906 0.0888 +vn 0.1036 0.9911 0.0840 +vn 0.1042 0.9911 0.0831 +vn 0.0784 0.9963 0.0354 +vn -0.5719 -0.0680 -0.8175 +vn -0.6321 -0.0672 -0.7720 +vn -0.6340 -0.0672 -0.7704 +vn -0.7552 -0.0639 -0.6523 +vn -0.8134 -0.0613 -0.5784 +vn 0.2889 -0.0502 0.9561 +vn 0.1245 -0.0878 0.9883 +vn 0.2047 -0.0415 0.9779 +vn -0.0182 -0.1376 0.9903 +vn -0.1150 -0.2150 0.9698 +vn -0.2317 -0.3263 0.9164 +vn -0.5193 -0.1175 0.8465 +vn 0.1276 0.0048 0.9918 +vn -0.2481 -0.0483 0.9675 +vn -0.6530 -0.0123 0.7573 +vn 0.0914 0.0499 0.9946 +vn -0.3129 0.0269 0.9494 +vn -0.2996 0.0897 0.9498 +vn -0.6367 0.0793 0.7670 +vn -0.2322 0.1546 0.9603 +vn 0.0987 0.0938 0.9907 +vn -0.4933 0.1949 0.8478 +vn 0.0303 0.2384 0.9707 +vn -0.1548 0.3753 0.9139 +vn 0.1346 0.1322 0.9820 +vn 0.2146 0.1644 0.9628 +vn -0.0336 0.2875 0.9572 +vn 0.1857 0.1860 0.9649 +vn 0.3014 0.1654 0.9390 +vn -0.8749 -0.0575 -0.4809 +vn 0.0332 -0.9766 0.2123 +vn -0.3968 -0.3742 -0.8381 +vn -0.3715 -0.0535 -0.9269 +vn -0.3713 -0.0534 -0.9270 +vn 0.7827 -0.6148 0.0972 +vn 0.7813 -0.5119 0.3571 +vn 0.7813 -0.5119 0.3570 +vn 0.3822 0.0428 0.9231 +vn 0.6328 -0.2392 0.7365 +vn 0.6327 -0.2393 0.7365 +vn 0.3696 0.0551 0.9276 +vn 0.3698 0.0552 0.9275 +vn 0.3695 0.0551 0.9276 +vn -0.7486 0.4248 -0.5091 +vn -0.7485 0.4251 -0.5090 +vn -0.3598 -0.0645 -0.9308 +vn -0.3600 -0.0646 -0.9307 +vn -0.3601 -0.0646 -0.9307 +vn -0.7598 0.4499 -0.4693 +vn -0.7598 0.4498 -0.4693 +vn -0.7597 0.4502 -0.4692 +vn -0.3035 0.5561 0.7737 +vn -0.3031 0.5562 0.7738 +vn -0.8243 -0.2647 -0.5005 +vn -0.8305 -0.2307 -0.5070 +vn -0.8169 -0.2658 -0.5119 +vn -0.7904 -0.3449 -0.5063 +vn -0.8300 -0.2145 -0.5148 +vn -0.8399 -0.1322 -0.5264 +vn -0.8402 -0.1322 -0.5260 +vn -0.7689 -0.3888 -0.5076 +vn -0.8248 -0.2156 -0.5227 +vn -0.7218 -0.4865 -0.4923 +vn -0.7957 -0.3194 -0.5146 +vn 0.1124 -0.4122 0.9041 +vn 0.1116 -0.4125 0.9041 +vn 0.1119 -0.4124 0.9041 +vn 0.1130 -0.4119 0.9042 +vn -0.1510 0.3583 0.9213 +vn -0.1506 0.3586 0.9213 +vn -0.1507 0.3585 0.9213 +vn -0.1511 0.3582 0.9213 +vn -0.6660 -0.1539 0.7299 +vn -0.6656 -0.1541 0.7303 +vn -0.6661 -0.1538 0.7299 +vn -0.6662 -0.1537 0.7297 +vn -0.5707 0.1487 0.8076 +vn -0.5707 0.1488 0.8076 +vn 0.4464 -0.2675 0.8539 +vn 0.4463 -0.2676 0.8540 +vn 0.4464 -0.2674 0.8539 +vn -0.3934 -0.3941 0.8306 +vn -0.3927 -0.3941 0.8309 +vn -0.3932 -0.3941 0.8307 +vn -0.3946 -0.3941 0.8300 +vn 0.3828 -0.9007 0.2054 +vn -0.3905 -0.8824 -0.2623 +vn 0.3353 -0.9401 0.0610 +vn -0.1109 -0.9813 -0.1572 +vn -0.7392 -0.5018 -0.4492 +vn -0.6859 -0.5663 -0.4570 +vn -0.1421 -0.9433 -0.2999 +vn -0.8385 -0.2524 -0.4830 +vn -0.8238 -0.2602 -0.5036 +vn -0.6739 -0.5229 -0.5219 +vn -0.8789 -0.0544 -0.4739 +vn -0.8020 -0.2462 -0.5442 +vn 0.2656 -0.9568 -0.1181 +vn -0.8691 -0.0398 -0.4930 +vn -0.8446 -0.0404 -0.5338 +vn -0.8875 0.1803 -0.4241 +vn 0.0322 -0.9592 -0.2810 +vn 0.2670 -0.9530 -0.1430 +vn -0.7899 -0.2445 -0.5623 +vn -0.8329 -0.0344 -0.5524 +vn -0.6446 -0.5339 -0.5472 +vn -0.8423 0.2181 -0.4930 +vn -0.8698 0.2417 -0.4302 +vn -0.8219 0.2300 -0.5211 +vn -0.8449 0.4147 -0.3380 +vn -0.7968 0.3434 -0.4972 +vn -0.8064 0.3517 -0.4755 +vn -0.8301 0.3877 -0.4009 +vn -0.3878 -0.4433 -0.8081 +vn -0.7837 0.0176 0.6209 +vn -0.7841 0.0175 0.6204 +vn -0.7840 0.0175 0.6205 +vn 0.6830 0.0679 0.7272 +vn 0.6831 0.0679 0.7272 +vn -0.3878 -0.4434 -0.8081 +vn -0.7836 0.0176 0.6211 +vn 0.6831 0.0679 0.7271 +vn -0.8640 0.1791 -0.4706 +vn -0.8640 0.1791 -0.4705 +vn 0.8640 -0.1791 0.4706 +vn -0.4102 0.3301 0.8502 +vn -0.4098 0.3300 0.8504 +vn 0.6462 -0.0403 0.7621 +vn -0.8781 0.0054 0.4784 +vn 0.6973 0.0674 0.7136 +vn -0.8412 -0.2735 -0.4664 +vn -0.8413 -0.2735 -0.4663 +vn 0.8412 0.2735 0.4664 +vn -0.4804 -0.2557 0.8389 +vn -0.4805 -0.2557 0.8389 +vn 0.6412 0.1732 0.7475 +vn 0.6413 0.1732 0.7475 +vn -0.4100 -0.0723 -0.9092 +vn -0.4112 -0.0750 -0.9085 +vn -0.4107 -0.0735 -0.9088 +vn -0.4102 -0.0723 -0.9091 +vn -0.4101 -0.0721 -0.9092 +vn -0.4099 -0.0719 -0.9093 +vn -0.4099 -0.0718 -0.9093 +vn -0.4098 -0.0718 -0.9093 +vn -0.4098 -0.0718 -0.9094 +vn -0.4097 -0.0717 -0.9094 +vn -0.4096 -0.0717 -0.9094 +vn 0.4096 0.0717 0.9094 +vn 0.6118 -0.7223 0.3224 +vn 0.8374 -0.3047 0.4537 +vn 0.7439 -0.5367 0.3982 +vn 0.8747 0.0603 0.4808 +vn 0.8755 0.0470 0.4810 +vn 0.8054 0.3873 0.4488 +vn 0.7450 0.5197 0.4181 +vn 0.4082 0.8808 0.2400 +vn -0.3514 0.9196 -0.1759 +vn -0.7438 0.5369 -0.3981 +vn -0.8375 0.3045 -0.4537 +vn -0.8755 -0.0470 -0.4810 +vn -0.8747 -0.0603 -0.4808 +vn -0.7450 -0.5199 -0.4181 +vn -0.8054 -0.3872 -0.4488 +vn -0.6351 -0.6830 -0.3608 +vn -0.6351 -0.6829 -0.3608 +vn 0.6127 -0.7214 0.3228 +vn 0.6123 -0.7218 0.3226 +vn 0.8375 -0.3046 0.4537 +vn 0.7444 -0.5359 0.3984 +vn 0.8054 0.3872 0.4488 +vn 0.7452 0.5194 0.4182 +vn -0.3522 0.9192 -0.1764 +vn -0.7441 0.5363 -0.3983 +vn -0.8375 0.3046 -0.4537 +vn -0.7452 -0.5194 -0.4182 +vn -0.8054 -0.3871 -0.4488 +vn -0.6357 -0.6822 -0.3611 +vn -0.6360 -0.6819 -0.3613 +vn -0.8722 0.1118 -0.4763 +vn -0.8375 0.3043 -0.4538 +vn -0.3525 0.9190 -0.1765 +vn 0.7454 0.5191 0.4183 +vn 0.8054 0.3871 0.4488 +vn 0.7441 -0.5363 0.3983 +vn 0.8375 -0.3043 0.4538 +vn -0.4082 -0.8808 -0.2400 +vn 0.3525 -0.9190 0.1765 +vn -0.7454 -0.5190 -0.4183 +vn -0.8544 -0.2159 -0.4726 +vn 0.4886 -0.0203 0.8723 +vn 0.5249 -0.0060 0.8512 +vn 0.5336 -0.0201 0.8455 +vn 0.5748 -0.0132 0.8182 +vn 0.5521 0.0314 0.8332 +vn 0.6107 0.0309 0.7912 +vn 0.5632 0.0597 0.8241 +vn 0.6006 -0.0888 0.7946 +vn 0.6185 0.0593 0.7836 +vn 0.6449 0.0020 0.7643 +vn 0.6172 0.0830 0.7824 +vn 0.5621 0.0838 0.8228 +vn 0.6110 -0.0953 0.7859 +vn 0.6655 0.0520 0.7446 +vn 0.6100 0.1067 0.7852 +vn 0.6638 0.0903 0.7424 +vn 0.5525 0.1069 0.8266 +vn 0.5726 0.1430 0.8072 +vn 0.6424 0.1340 0.7545 +vn 0.5268 0.1328 0.8396 +vn 0.5324 0.1434 0.8342 +vn 0.4894 0.1434 0.8602 +vn 0.5934 0.1970 0.7804 +vn 0.6067 0.2136 0.7657 +vn -0.3204 -0.7180 -0.6179 +vn -0.2674 -0.8339 -0.4827 +vn -0.2883 -0.7940 -0.5352 +vn -0.3667 -0.5577 -0.7446 +vn -0.3514 -0.6203 -0.7013 +vn -0.3777 -0.5036 -0.7770 +vn 0.3974 -0.1217 0.9095 +vn 0.3859 -0.2158 0.8969 +vn 0.3910 -0.1782 0.9030 +vn 0.3528 -0.3959 0.8478 +vn 0.3664 -0.3314 0.8694 +vn 0.2568 -0.6924 0.6742 +vn 0.3137 -0.5407 0.7805 +vn 0.2193 -0.7687 0.6009 +vn 0.2193 -0.7686 0.6009 +vn -0.4099 -0.0879 -0.9079 +vn -0.4102 -0.1430 -0.9007 +vn -0.4102 -0.1405 -0.9011 +vn -0.4093 -0.1953 -0.8913 +vn -0.4425 -0.0553 -0.8951 +vn -0.4426 -0.0552 -0.8950 +vn -0.7085 -0.4126 -0.5725 +vn -0.7423 -0.4835 -0.4639 +vn 0.4332 0.0449 0.9002 +vn -0.4807 -0.6487 0.5900 +vn -0.4810 -0.6486 0.5899 +vn 0.4439 0.0569 0.8943 +vn 0.4441 0.0568 0.8942 +vn 0.7659 0.5600 0.3159 +vn 0.7657 0.5602 0.3159 +vn 0.7658 0.5602 0.3159 +vn -0.4519 -0.0654 -0.8897 +vn -0.4517 -0.0655 -0.8898 +vn 0.7602 0.5356 0.3676 +vn 0.7601 0.5359 0.3676 +vn 0.6239 0.2782 0.7303 +vn 0.6240 0.2782 0.7302 +vn 0.8824 -0.1956 0.4280 +vn 0.8885 -0.2089 0.4085 +vn 0.8888 -0.1541 0.4316 +vn 0.8401 -0.4128 0.3520 +vn 0.8980 -0.1433 0.4160 +vn 0.8404 -0.4192 0.3437 +vn 0.7652 -0.5778 0.2839 +vn 0.9068 -0.0336 0.4203 +vn 0.9039 -0.1157 0.4119 +vn 0.8816 -0.2728 0.3852 +vn 0.9065 -0.0335 0.4208 +vn 0.5200 -0.2329 0.8218 +vn 0.5197 -0.2330 0.8220 +vn 0.5196 -0.2330 0.8220 +vn 0.6076 0.1994 0.7688 +vn 0.6076 0.1995 0.7688 +vn 0.6077 0.1993 0.7688 +vn 0.6077 0.1992 0.7688 +vn 0.6685 0.0060 0.7437 +vn 0.6684 0.0059 0.7437 +vn 0.6685 0.0061 0.7437 +vn 0.6686 0.0061 0.7436 +vn 0.6589 0.1068 0.7446 +vn 0.6589 0.1067 0.7446 +vn 0.2765 -0.3452 0.8969 +vn 0.2763 -0.3451 0.8970 +vn 0.2762 -0.3451 0.8970 +vn 0.6318 -0.1065 0.7678 +vn 0.6319 -0.1064 0.7677 +vn 0.6320 -0.1063 0.7676 +vn -0.4745 -0.8393 -0.2651 +vn -0.4840 -0.8217 -0.3010 +vn -0.2852 -0.9419 -0.1776 +vn -0.0214 -0.9921 -0.1233 +vn -0.0745 -0.9557 -0.2847 +vn -0.5103 -0.7499 -0.4209 +vn -0.5272 -0.6962 -0.4872 +vn 0.6122 -0.7419 0.2733 +vn 0.6668 -0.7393 0.0939 +vn 0.0948 -0.9550 -0.2812 +vn 0.6845 -0.6906 0.2333 +vn 0.8081 -0.5655 0.1646 +vn 0.9281 -0.1703 0.3311 +vn 0.9113 -0.2339 0.3389 +vn 0.8668 -0.2259 0.4444 +vn 0.8874 -0.2108 0.4099 +vn 0.8715 0.0564 0.4872 +vn 0.9108 0.0664 0.4074 +vn 0.8855 0.0647 0.4602 +vn 0.9196 0.0811 0.3843 +vn 0.8118 0.2867 0.5087 +vn 0.8498 0.3169 0.4212 +vn 0.8270 0.2932 0.4798 +vn 0.8680 0.3023 0.3941 +vn 0.7672 0.3864 0.5120 +vn 0.7946 0.4302 0.4285 +vn 0.7756 0.3992 0.4890 +vn 0.8046 0.4545 0.3821 +vn -0.7836 0.0176 0.6210 +vn -0.7832 0.0176 0.6215 +vn -0.8413 -0.2736 -0.4663 +vn 0.6412 0.1732 0.7476 +vn -0.4810 -0.2558 0.8386 +vn 0.6461 -0.0403 0.7621 +vn -0.4104 0.3301 0.8501 +vn -0.4095 -0.0719 -0.9095 +vn -0.4084 -0.0734 -0.9098 +vn -0.4091 -0.0721 -0.9096 +vn -0.4091 -0.0723 -0.9096 +vn -0.4092 -0.0719 -0.9096 +vn -0.4093 -0.0718 -0.9096 +vn -0.4094 -0.0718 -0.9095 +vn -0.4094 -0.0717 -0.9095 +vn -0.7450 -0.5198 -0.4181 +vn -0.6354 -0.6826 -0.3609 +vn -0.6354 -0.6826 -0.3610 +vn -0.8054 -0.3873 -0.4488 +vn -0.7439 0.5367 -0.3982 +vn -0.8374 0.3047 -0.4537 +vn 0.4077 0.8811 0.2397 +vn -0.3520 0.9193 -0.1763 +vn 0.7450 0.5198 0.4181 +vn 0.8375 -0.3045 0.4538 +vn 0.7438 -0.5369 0.3981 +vn 0.6113 -0.7229 0.3221 +vn 0.6114 -0.7228 0.3221 +vn -0.7442 0.5363 -0.3983 +vn -0.3522 0.9191 -0.1764 +vn 0.8544 0.2159 0.4726 +vn 0.7454 0.5190 0.4183 +vn -0.3526 0.9190 -0.1766 +vn -0.7454 -0.5191 -0.4183 +vn 0.8722 -0.1118 0.4763 +vn -0.6992 -0.1875 -0.6899 +vn -0.7022 -0.1835 -0.6879 +vn -0.7001 -0.1876 -0.6889 +vn -0.7034 -0.1806 -0.6875 +vn -0.7054 -0.1692 -0.6883 +vn -0.7058 -0.1650 -0.6889 +vn -0.7061 -0.1548 -0.6910 +vn -0.7054 -0.1532 -0.6921 +vn -0.7042 -0.1499 -0.6939 +vn -0.7034 -0.1496 -0.6949 +vn -0.9941 0.0151 -0.1077 +vn -0.9900 0.0018 -0.1410 +vn -0.9648 0.1118 -0.2380 +vn -0.9667 0.0297 -0.2543 +vn -0.9357 0.3476 -0.0604 +vn -0.9357 0.3482 -0.0564 +vn -0.9334 0.3574 -0.0316 +vn -0.9329 0.3589 -0.0284 +vn -0.9281 0.3712 -0.0295 +vn -0.9283 0.3709 -0.0257 +vn -0.9196 0.3891 -0.0538 +vn -0.9223 0.3849 -0.0353 +vn -0.9100 0.3642 -0.1984 +vn -0.9195 0.3639 -0.1485 +vn -0.8906 0.3841 -0.2434 +vn -0.8960 0.3995 -0.1938 +vn -0.8590 0.3892 -0.3328 +vn -0.8718 0.4296 -0.2354 +vn -0.8083 0.4731 -0.3505 +vn -0.8091 0.5073 -0.2968 +vn -0.7825 0.4464 -0.4341 +vn -0.7887 0.4786 -0.3859 +vn -0.7599 0.4158 -0.4997 +vn -0.7614 0.4433 -0.4731 +vn -0.7576 0.3850 -0.5271 +vn -0.7592 0.3716 -0.5344 +vn -0.7492 0.3407 -0.5680 +vn -0.7409 0.3258 -0.5873 +vn -0.7242 0.3015 -0.6202 +vn -0.7119 0.3019 -0.6341 +vn -0.6934 0.2744 -0.6662 +vn -0.6725 0.2063 -0.7108 +vn -0.6604 0.1449 -0.7368 +vn 0.8840 -0.3194 -0.3412 +vn 0.8667 -0.3350 -0.3695 +vn 0.8682 -0.3346 -0.3664 +vn 0.8883 -0.3102 -0.3385 +vn 0.9023 -0.2790 -0.3286 +vn 0.9061 -0.2663 -0.3287 +vn 0.9088 -0.2412 -0.3406 +vn 0.9088 -0.2369 -0.3435 +vn 0.9007 -0.2311 -0.3680 +vn 0.8993 -0.2313 -0.3711 +vn 0.7739 0.0815 0.6281 +vn 0.7638 0.0903 0.6391 +vn 0.7825 0.1513 0.6040 +vn 0.7910 0.1099 0.6019 +vn 0.7411 0.2453 0.6249 +vn 0.7399 0.2443 0.6268 +vn 0.7374 0.2439 0.6299 +vn 0.7362 0.2448 0.6309 +vn 0.7356 0.2492 0.6299 +vn 0.7350 0.2513 0.6298 +vn 0.7358 0.2613 0.6247 +vn 0.7371 0.2617 0.6231 +vn 0.7524 0.2813 0.5956 +vn 0.7524 0.2842 0.5942 +vn 0.7590 0.3116 0.5716 +vn 0.7524 0.3154 0.5783 +vn 0.7658 0.3490 0.5401 +vn 0.7604 0.3656 0.5367 +vn 0.7520 0.4300 0.4996 +vn 0.7476 0.4464 0.4916 +vn 0.7576 0.4773 0.4452 +vn 0.7612 0.4951 0.4187 +vn 0.7667 0.5270 0.3667 +vn 0.7695 0.5479 0.3280 +vn 0.7888 0.5411 0.2915 +vn 0.7867 0.5294 0.3176 +vn 0.8072 0.5594 0.1886 +vn 0.7991 0.5486 0.2458 +vn 0.7987 0.5969 0.0757 +vn 0.7920 0.6061 0.0732 +vn 0.7205 0.6094 -0.3309 +vn 0.7223 0.6523 -0.2297 +vn 0.6213 0.5115 -0.5936 +vn -0.0769 -0.9965 -0.0321 +vn -0.0546 -0.9983 0.0182 +vn -0.0934 -0.9932 -0.0696 +vn -0.0584 -0.9982 0.0098 +vn -0.0520 -0.9984 0.0241 +vn -0.1465 -0.9704 -0.1921 +vn -0.0841 -0.9953 -0.0484 +vn -0.2769 -0.8166 -0.5065 +vn -0.2057 -0.9206 -0.3320 +vn -0.3484 -0.6308 -0.6933 +vn -0.3238 -0.7085 -0.6270 +vn -0.3810 -0.4854 -0.7869 +vn -0.3729 -0.5287 -0.7625 +vn -0.3933 -0.4036 -0.8261 +vn -0.3915 -0.4172 -0.8202 +vn -0.4034 -0.3055 -0.8625 +vn -0.4015 -0.3281 -0.8551 +vn -0.4102 -0.1444 -0.9005 +vn -0.4101 -0.1502 -0.8996 +vn -0.4030 0.0600 -0.9132 +vn -0.3996 0.0998 -0.9113 +vn -0.3586 0.3692 -0.8574 +vn -0.2935 0.6006 -0.7437 +vn -0.1713 0.8465 -0.5040 +vn 0.0093 0.9928 -0.1193 +vn 0.0087 0.9927 -0.1205 +vn -0.1726 0.8446 -0.5068 +vn -0.2949 0.5966 -0.7464 +vn -0.3593 0.3664 -0.8583 +vn -0.3999 0.0965 -0.9115 +vn -0.4032 0.0573 -0.9133 +vn -0.4101 -0.1544 -0.8989 +vn -0.4101 -0.1479 -0.9000 +vn -0.4009 -0.3345 -0.8529 +vn -0.4030 -0.3108 -0.8608 +vn -0.3982 -0.3615 -0.8431 +vn -0.3972 -0.3713 -0.8393 +vn -0.4057 -0.2726 -0.8724 +vn -0.4045 -0.2902 -0.8673 +vn -0.4102 -0.1163 -0.9045 +vn -0.4102 -0.1167 -0.9045 +vn -0.3999 0.0961 -0.9115 +vn -0.3945 0.1489 -0.9067 +vn -0.3415 0.4425 -0.8292 +vn -0.2349 0.7389 -0.6315 +vn -0.0806 0.9458 -0.3145 +vn 0.1180 0.9850 0.1260 +vn 0.1723 0.9521 0.2526 +vn 0.1221 0.9832 0.1353 +vn 0.0933 0.9932 0.0694 +vn 0.8825 0.1407 0.4488 +vn 0.8932 0.1705 0.4161 +vn 0.8968 0.1563 0.4138 +vn 0.8979 0.1213 0.4232 +vn 0.8823 0.1286 0.4528 +vn 0.8807 0.0929 0.4644 +vn 0.8810 0.0796 0.4665 +vn 0.8709 0.0743 0.4858 +vn 0.8661 0.0770 0.4940 +vn 0.8538 0.0872 0.5133 +vn 0.8598 0.0774 0.5047 +vn 0.8621 0.0771 0.5008 +vn 0.8556 0.0727 0.5125 +vn 0.8631 0.0719 0.4999 +vn 0.8700 0.0659 0.4886 +vn 0.8629 0.0761 0.4997 +vn 0.8608 0.0752 0.5034 +vn 0.8650 0.0788 0.4956 +vn 0.8749 0.0573 0.4809 +vn 0.8709 0.0809 0.4848 +vn 0.8660 0.0750 0.4944 +vn 0.8657 0.0739 0.4951 +vn 0.8656 0.0736 0.4952 +vn 0.8724 0.0604 0.4851 +vn 0.8664 0.0702 0.4944 +vn 0.8709 0.0819 0.4846 +vn 0.8729 0.0599 0.4841 +vn 0.8822 0.0528 0.4680 +vn 0.8708 0.0928 0.4828 +vn 0.8849 0.0505 0.4631 +vn 0.8923 0.0444 0.4493 +vn 0.8922 0.0435 0.4495 +vn 0.8922 0.0420 0.4497 +vn 0.8923 0.0407 0.4497 +vn 0.8923 0.0404 0.4497 +vn -0.8655 -0.0636 -0.4968 +vn -0.8579 -0.0728 -0.5086 +vn -0.8579 -0.0725 -0.5086 +vn -0.8580 -0.0714 -0.5087 +vn -0.8580 -0.0700 -0.5088 +vn -0.8580 -0.0692 -0.5090 +vn -0.8681 -0.0616 -0.4926 +vn -0.8774 -0.0544 -0.4766 +vn -0.8769 -0.0549 -0.4775 +vn -0.8784 -0.0320 -0.4768 +vn -0.8779 -0.0212 -0.4783 +vn -0.8835 -0.0440 -0.4664 +vn -0.8799 -0.0484 -0.4728 +vn -0.8869 -0.0416 -0.4600 +vn -0.8877 -0.0361 -0.4589 +vn -0.8869 -0.0374 -0.4604 +vn -0.8841 -0.0404 -0.4655 +vn -0.8891 -0.0381 -0.4562 +vn -0.8854 -0.0352 -0.4635 +vn -0.8785 -0.0333 -0.4766 +vn -0.8837 -0.0389 -0.4664 +vn -0.8841 -0.0401 -0.4656 +vn -0.8949 -0.0404 -0.4445 +vn -0.8749 -0.0575 -0.4808 +vn -0.8901 -0.0357 -0.4543 +vn -0.8698 -0.0359 -0.4922 +vn -0.8964 -0.0235 -0.4427 +vn -0.8837 -0.0367 -0.4667 +vn -0.8787 -0.0401 -0.4756 +vn -0.8683 -0.0247 -0.4953 +vn -0.8639 0.0151 -0.5035 +vn -0.8642 0.0245 -0.5026 +vn -0.8485 -0.0026 -0.5292 +vn -0.8456 0.0318 -0.5329 +vn -0.8464 0.0428 -0.5309 +vn -0.0844 -0.9952 -0.0491 +vn -0.0671 -0.9977 -0.0098 +vn -0.0933 -0.9932 -0.0694 +vn -0.0978 -0.9920 -0.0795 +vn -0.0724 -0.9971 -0.0217 +vn -0.1380 -0.9753 -0.1722 +vn -0.1149 -0.9863 -0.1187 +vn -0.1064 -0.9894 -0.0993 +vn -0.1382 -0.9752 -0.1727 +vn -0.5303 -0.0583 0.8458 +vn -0.5305 -0.0583 0.8457 +vn -0.5297 -0.0585 0.8462 +vn -0.5295 -0.0586 0.8463 +vn -0.7699 0.4031 -0.4947 +vn -0.7683 0.4073 -0.4937 +vn -0.8198 0.3033 -0.4856 +vn -0.8143 0.2930 -0.5011 +vn -0.8416 0.3339 -0.4245 +vn -0.8343 0.3222 -0.4474 +vn -0.8776 0.3873 -0.2826 +vn -0.8611 0.3593 -0.3596 +vn -0.8998 0.4311 -0.0669 +vn -0.8926 0.4096 -0.1886 +vn -0.8987 0.4373 0.0322 +vn -0.8825 0.4352 0.1783 +vn -0.8693 0.4270 0.2489 +vn -0.8534 0.4153 0.3151 +vn -0.7720 0.3396 0.5372 +vn -0.8216 0.3968 0.4092 +vn -0.6397 0.1192 0.7593 +vn -0.6562 0.1865 0.7312 +vn -0.7376 -0.2866 0.6114 +vn -0.6053 -0.0900 0.7909 +vn -0.8678 -0.4937 -0.0562 +vn -0.7952 -0.4212 0.4362 +vn -0.8150 -0.4490 -0.3664 +vn -0.8369 -0.4759 -0.2704 +vn -0.8370 -0.4771 -0.2679 +vn -0.8145 -0.4492 -0.3672 +vn -0.8168 -0.4348 0.3792 +vn -0.8657 -0.4969 -0.0609 +vn -0.7340 -0.2893 0.6144 +vn -0.6321 -0.1068 0.7675 +vn -0.6516 0.1870 0.7352 +vn -0.6377 0.1166 0.7614 +vn -0.8262 0.4030 0.3937 +vn -0.7599 0.3361 0.5565 +vn -0.4995 0.5073 0.7022 +vn -0.5019 0.4974 0.7076 +vn -0.7346 0.4221 0.5313 +vn -0.7349 0.4220 0.5309 +vn -0.7900 -0.4215 0.4453 +vn -0.7902 -0.4212 0.4451 +vn -0.7897 -0.4219 0.4454 +vn -0.7895 -0.4221 0.4455 +vn -0.7697 -0.3778 -0.5146 +vn -0.7301 -0.4604 -0.5050 +vn -0.7306 -0.4594 -0.5052 +vn -0.7701 -0.3769 -0.5147 +vn -0.5993 0.2846 0.7482 +vn -0.6150 0.2871 0.7344 +vn -0.5735 0.2804 0.7697 +vn -0.5655 0.2791 0.7761 +vn -0.8354 -0.4593 -0.3019 +vn -0.8352 -0.4502 -0.3158 +vn -0.8354 -0.4617 -0.2982 +vn -0.8354 -0.4691 -0.2866 +vn -0.7297 -0.1656 -0.6634 +vn -0.7302 -0.1614 -0.6639 +vn -0.7224 -0.1527 -0.6744 +vn -0.7053 -0.1108 -0.7002 +vn -0.6985 -0.1021 -0.7083 +vn -0.7004 -0.0575 -0.7114 +vn -0.7004 -0.0583 -0.7113 +vn -0.7009 -0.0019 -0.7133 +vn -0.7007 0.0093 -0.7134 +vn -0.6991 0.0548 -0.7129 +vn -0.6930 0.0602 -0.7184 +vn -0.6879 0.0691 -0.7225 +vn -0.6791 0.0629 -0.7314 +vn -0.8664 0.0066 -0.4993 +vn -0.8629 -0.0335 -0.5043 +vn -0.8580 -0.0739 -0.5083 +vn -0.8611 -0.0501 -0.5060 +vn -0.8599 -0.0605 -0.5069 +vn -0.8589 -0.0695 -0.5075 +vn -0.8538 -0.0787 -0.5146 +vn -0.8569 -0.0978 -0.5061 +vn -0.8547 -0.0804 -0.5128 +vn -0.8590 -0.0959 -0.5029 +vn -0.8553 -0.0583 -0.5149 +vn -0.8562 -0.0722 -0.5116 +vn -0.8553 -0.0497 -0.5157 +vn -0.8511 -0.0691 -0.5205 +vn -0.8451 -0.0990 -0.5254 +vn -0.8571 -0.0798 -0.5090 +vn -0.8749 -0.0562 -0.4810 +vn -0.8299 -0.0627 -0.5544 +vn -0.8650 -0.0569 -0.4986 +vn -0.8762 -0.0534 -0.4790 +vn -0.8715 -0.0529 -0.4875 +vn -0.8773 -0.0513 -0.4771 +vn -0.8791 -0.0480 -0.4742 +vn -0.8805 -0.0473 -0.4717 +vn -0.8832 -0.0457 -0.4667 +vn -0.8843 -0.0453 -0.4648 +vn -0.8823 -0.0445 -0.4686 +vn -0.8856 -0.0443 -0.4622 +vn -0.8861 -0.0441 -0.4615 +vn 0.6537 0.0346 0.7560 +vn 0.6538 0.0347 0.7559 +vn 0.6537 0.0346 0.7559 +vn 0.8220 0.4083 0.3970 +vn 0.7776 0.5193 0.3544 +vn 0.7793 0.5164 0.3551 +vn 0.8182 0.4015 0.4116 +vn 0.8035 0.3850 0.4541 +vn 0.7992 0.3798 0.4659 +vn 0.7764 0.3507 0.5236 +vn 0.7726 0.3451 0.5329 +vn 0.7427 0.3028 0.5972 +vn 0.7428 0.3028 0.5971 +vn 0.7181 0.2612 0.6450 +vn 0.7167 0.2579 0.6479 +vn 0.7023 0.2298 0.6738 +vn 0.7017 0.2278 0.6750 +vn 0.6876 0.1919 0.7003 +vn 0.6874 0.1962 0.6993 +vn 0.6673 0.1083 0.7369 +vn 0.6675 0.1116 0.7362 +vn 0.6728 -0.0129 0.7398 +vn 0.6676 -0.0041 0.7445 +vn 0.7208 -0.1594 0.6746 +vn 0.7202 -0.1630 0.6744 +vn 0.7806 -0.2918 0.5527 +vn 0.7955 -0.3198 0.5147 +vn 0.7947 -0.3190 0.5164 +vn 0.7805 -0.2924 0.5525 +vn 0.7222 -0.1652 0.6717 +vn 0.7211 -0.1657 0.6727 +vn 0.6717 -0.0166 0.7407 +vn 0.6716 -0.0068 0.7409 +vn 0.6665 0.1109 0.7372 +vn 0.6676 0.1068 0.7368 +vn 0.6880 0.1980 0.6982 +vn 0.6863 0.1925 0.7014 +vn 0.6499 0.2453 0.7193 +vn 0.6505 0.2369 0.7216 +vn 0.6789 0.2107 0.7034 +vn 0.6789 0.2106 0.7033 +vn 0.6875 -0.0985 0.7194 +vn 0.6876 -0.0983 0.7194 +vn 0.6875 -0.0987 0.7194 +vn 0.8504 -0.4022 0.3393 +vn 0.8507 -0.4013 0.3395 +vn 0.7865 -0.5501 0.2808 +vn 0.7860 -0.5510 0.2804 +vn 0.6605 0.1536 0.7349 +vn 0.6638 0.1555 0.7315 +vn 0.6612 0.1540 0.7342 +vn 0.6584 0.1524 0.7371 +vn 0.7818 -0.2797 0.5573 +vn 0.7762 -0.2803 0.5647 +vn 0.7797 -0.2799 0.5601 +vn 0.7858 -0.2792 0.5519 +vn 0.9715 -0.2131 -0.1040 +vn 0.9693 -0.2225 -0.1046 +vn 0.9690 -0.2061 -0.1363 +vn 0.8951 -0.1240 -0.4282 +vn 0.8845 -0.1001 -0.4556 +vn 0.8944 0.0174 -0.4468 +vn 0.8948 0.0308 -0.4454 +vn 0.8854 0.1962 -0.4214 +vn 0.8861 0.1914 -0.4222 +vn 0.8478 0.3674 -0.3824 +vn 0.8257 0.3711 -0.4249 +vn 0.6470 0.3941 -0.6527 +vn 0.5827 0.3706 -0.7233 +vn 0.8921 0.0393 0.4501 +vn 0.8865 0.0829 0.4553 +vn 0.8795 0.1235 0.4596 +vn 0.8890 0.0653 0.4533 +vn 0.8903 0.0541 0.4521 +vn 0.8913 0.0442 0.4512 +vn 0.8966 0.0333 0.4416 +vn 0.8922 0.0126 0.4516 +vn 0.8954 0.0314 0.4442 +vn 0.8903 0.0171 0.4551 +vn 0.8952 0.0563 0.4420 +vn 0.8944 0.0410 0.4455 +vn 0.8951 0.0659 0.4411 +vn 0.9004 0.0399 0.4332 +vn 0.9049 0.0084 0.4256 +vn 0.8939 0.0313 0.4472 +vn 0.8749 0.0586 0.4808 +vn 0.9247 0.0497 0.3773 +vn 0.8851 0.0578 0.4617 +vn 0.8736 0.0614 0.4828 +vn 0.8784 0.0620 0.4739 +vn 0.8724 0.0634 0.4846 +vn 0.8705 0.0671 0.4875 +vn 0.8693 0.0673 0.4896 +vn 0.8666 0.0685 0.4942 +vn 0.8656 0.0687 0.4961 +vn 0.8658 0.0689 0.4957 +vn 0.8672 0.0705 0.4930 +vn 0.8689 0.0740 0.4894 +vn 0.0092 0.9928 -0.1194 +vn -0.0108 0.9865 -0.1634 +vn 0.0420 0.9980 -0.0464 +vn 0.0520 0.9984 -0.0241 +vn 0.0584 0.9982 -0.0098 +vn 0.0841 0.9953 0.0484 +vn 0.1466 0.9704 0.1921 +vn 0.2057 0.9206 0.3319 +vn 0.2769 0.8166 0.5065 +vn 0.3238 0.7085 0.6270 +vn 0.3484 0.6308 0.6933 +vn 0.3729 0.5287 0.7625 +vn 0.3810 0.4854 0.7869 +vn 0.3915 0.4172 0.8201 +vn 0.3933 0.4036 0.8261 +vn 0.4015 0.3281 0.8551 +vn 0.4034 0.3055 0.8625 +vn 0.4101 0.1502 0.8996 +vn 0.4102 0.1444 0.9005 +vn 0.3996 -0.0998 0.9112 +vn 0.4030 -0.0600 0.9132 +vn 0.2935 -0.6006 0.7438 +vn 0.3586 -0.3692 0.8574 +vn -0.0093 -0.9928 0.1193 +vn 0.1713 -0.8465 0.5040 +vn 0.1728 -0.8444 0.5070 +vn -0.0088 -0.9927 0.1203 +vn 0.3592 -0.3664 0.8583 +vn 0.2947 -0.5970 0.7461 +vn 0.4032 -0.0573 0.9133 +vn 0.3999 -0.0965 0.9115 +vn 0.4101 0.1479 0.9000 +vn 0.4101 0.1545 0.8989 +vn 0.4009 0.3345 0.8529 +vn 0.4029 0.3109 0.8608 +vn 0.3972 0.3713 0.8393 +vn 0.3982 0.3615 0.8431 +vn 0.4045 0.2901 0.8673 +vn 0.4057 0.2725 0.8724 +vn 0.4102 0.1166 0.9045 +vn 0.4102 0.1162 0.9046 +vn 0.3945 -0.1494 0.9067 +vn 0.3999 -0.0964 0.9115 +vn 0.2344 -0.7399 0.6306 +vn 0.3412 -0.4431 0.8290 +vn 0.1459 -0.8802 0.4516 +vn 0.1502 -0.8756 0.4591 +vn 0.1444 -0.8811 0.4503 +vn -0.1171 -0.9854 -0.1238 +vn -0.1705 -0.9536 -0.2483 +vn -0.1850 -0.9416 -0.2815 +vn -0.1834 -0.9421 -0.2807 +vn -0.1854 -0.9414 -0.2817 +vn -0.9222 0.1499 -0.3564 +vn -0.9139 -0.0449 -0.4036 +vn -0.9128 -0.0228 -0.4078 +vn -0.9171 0.2956 0.2674 +vn -0.6149 0.3066 0.7266 +vn -0.8974 -0.0506 -0.4383 +vn -0.8975 -0.0511 -0.4381 +vn -0.9912 -0.0204 0.1308 +vn -0.9391 -0.0501 -0.3399 +vn -0.6730 0.0285 0.7391 +vn 0.6298 0.7632 -0.1444 +vn 0.7163 0.6647 0.2124 +vn 0.7312 0.6696 0.1302 +vn 0.6154 0.7573 -0.2186 +vn 0.0467 0.6468 -0.7612 +vn 0.2671 0.7294 -0.6297 +vn -0.3761 0.4175 -0.8272 +vn -0.2661 0.4754 -0.8386 +vn -0.4932 0.3560 -0.7937 +vn -0.5104 0.3507 -0.7852 +vn -0.5519 0.3396 -0.7617 +vn -0.3228 0.8162 -0.4792 +vn -0.3340 0.8128 -0.4774 +vn -0.5636 0.3356 -0.7548 +vn -0.2386 0.8984 -0.3687 +vn 0.0240 0.9994 -0.0237 +vn -0.6064 0.1040 -0.7883 +vn 0.1061 0.9938 0.0333 +vn 0.0489 0.9988 -0.0040 +vn 0.1198 0.9922 0.0359 +vn 0.0786 0.9967 0.0217 +vn 0.1011 0.9940 0.0429 +vn 0.1160 0.9916 0.0580 +vn 0.1374 0.9872 0.0804 +vn 0.6331 0.0648 0.7713 +vn 0.6331 0.0630 0.7715 +vn 0.6336 0.1126 0.7654 +vn 0.6323 0.1191 0.7655 +vn 0.6448 0.0568 0.7623 +vn 0.6470 0.0449 0.7611 +vn 0.4233 0.0860 0.9019 +vn 0.4010 0.1324 0.9064 +vn 0.4121 0.1096 0.9045 +vn 0.4336 0.0637 0.8988 +vn 0.4564 0.1074 0.8833 +vn 0.4661 0.1264 0.8757 +vn 0.4447 0.0849 0.8916 +vn 0.4336 0.0641 0.8988 +vn 0.5613 0.5376 0.6292 +vn 0.5607 0.5448 0.6236 +vn 0.5818 0.4925 0.6473 +vn 0.5788 0.4851 0.6555 +vn 0.5948 0.4953 0.6331 +vn 0.5946 0.4953 0.6333 +vn 0.6109 0.5022 0.6120 +vn 0.6183 0.5054 0.6020 +vn 0.6534 0.5311 0.5394 +vn 0.6442 0.5222 0.5589 +vn 0.6717 0.5564 0.4891 +vn 0.6800 0.5733 0.4571 +vn 0.6922 0.6138 0.3796 +vn 0.6933 0.5914 0.4118 +vn 0.7371 0.5688 0.3649 +vn 0.7320 0.5576 0.3914 +vn 0.7451 0.5665 0.3518 +vn 0.7533 0.5621 0.3415 +vn 0.3351 -0.8453 0.4162 +vn -0.0253 -0.9996 -0.0078 +vn -0.0853 -0.9957 -0.0349 +vn -0.0447 -0.9989 -0.0119 +vn 0.3308 -0.8599 0.3887 +vn -0.0478 -0.9987 -0.0169 +vn 0.6806 -0.6704 0.2955 +vn 0.5975 -0.4455 0.6667 +vn 0.3486 -0.8561 0.3816 +vn 0.4533 -0.8578 0.2424 +vn 0.7503 -0.5660 0.3418 +vn 0.7674 -0.5574 0.3169 +vn 0.5837 -0.4350 0.6856 +vn 0.4597 -0.8436 0.2776 +vn 0.6249 -0.4620 0.6293 +vn 0.6636 -0.5037 0.5531 +vn 0.3445 -0.8841 0.3156 +vn 0.5546 -0.5047 0.6616 +vn 0.6927 -0.6302 0.3507 +vn 0.6884 -0.5690 0.4497 +vn 0.3576 -0.8965 0.2614 +vn 0.5533 -0.5139 0.6556 +vn 0.1672 0.9744 0.1502 +vn 0.1849 0.9700 0.1578 +vn 0.1824 0.9706 0.1567 +vn 0.1671 0.9744 0.1504 +vn 0.1774 0.9702 0.1648 +vn 0.1961 0.9672 0.1616 +vn 0.1855 0.9686 0.1657 +vn 0.1986 0.9669 0.1601 +vn 0.2059 0.9677 0.1453 +vn 0.2191 0.9591 0.1794 +vn 0.2121 0.9614 0.1753 +vn 0.2098 0.9625 0.1718 +vn -0.4366 -0.0953 -0.8946 +vn -0.4010 -0.1324 -0.9064 +vn -0.4320 -0.1002 -0.8963 +vn -0.4655 -0.0640 -0.8827 +vn -0.6324 -0.0626 -0.7721 +vn -0.6324 -0.0631 -0.7721 +vn -0.6407 -0.0302 -0.7672 +vn -0.6412 -0.0304 -0.7668 +vn -0.6670 -0.0488 -0.7434 +vn -0.6664 -0.0459 -0.7442 +vn -0.6927 -0.0467 -0.7197 +vn -0.6554 -0.0450 -0.7539 +vn -0.6341 -0.2006 -0.7468 +vn -0.6330 -0.2055 -0.7464 +vn -0.6324 -0.0653 -0.7719 +vn -0.6324 -0.0629 -0.7721 +vn 0.8389 0.0833 0.5379 +vn 0.8384 0.0673 0.5409 +vn 0.7957 0.1980 0.5724 +vn 0.7700 0.2035 0.6047 +vn 0.6638 0.1626 0.7300 +vn 0.8532 0.0630 0.5177 +vn 0.8532 0.0634 0.5177 +vn 0.7704 0.0646 0.6343 +vn 0.8161 0.0618 0.5745 +vn 0.6698 0.0683 0.7394 +vn -0.6988 0.4517 -0.5546 +vn -0.6978 0.4748 -0.5363 +vn -0.6495 0.3740 -0.6620 +vn -0.6658 0.3688 -0.6486 +vn -0.5475 0.3533 -0.7586 +vn -0.5284 0.3565 -0.7706 +vn -0.3754 0.4179 -0.8273 +vn -0.2643 0.4763 -0.8386 +vn 0.0089 0.6159 -0.7877 +vn -0.1009 0.5604 -0.8220 +vn 0.1498 0.6769 -0.7206 +vn 0.1176 0.9048 -0.4092 +vn 0.1518 0.9150 -0.3739 +vn 0.0761 0.9969 0.0179 +vn 0.0889 0.9959 0.0155 +vn 0.1769 0.6799 -0.7116 +vn 0.0726 0.9973 0.0130 +vn 0.0550 0.9984 0.0134 +vn 0.0408 0.9990 0.0183 +vn 0.0726 0.9971 0.0225 +vn 0.0328 0.9992 0.0230 +vn 0.1885 0.7130 -0.6754 +vn 0.2055 0.3393 -0.9179 +vn 0.0096 0.9996 -0.0252 +vn -0.3543 0.1427 0.9242 +vn -0.3379 0.0348 0.9405 +vn -0.3381 0.0464 0.9400 +vn -0.3266 0.1840 0.9271 +vn -0.4082 0.0624 0.9108 +vn -0.4661 -0.0236 0.8844 +vn 0.3960 0.0870 0.9141 +vn 0.3829 0.0631 0.9216 +vn 0.4077 0.1090 0.9066 +vn 0.4191 0.1308 0.8985 +vn 0.3687 0.0891 0.9252 +vn 0.3412 0.1372 0.9299 +vn 0.3564 0.1109 0.9277 +vn 0.3829 0.0635 0.9216 +vn -0.1772 0.8740 0.4524 +vn -0.1504 0.8447 0.5136 +vn -0.2306 0.8529 0.4683 +vn -0.1979 0.8283 0.5242 +vn -0.2974 0.8553 0.4242 +vn -0.2974 0.8555 0.4239 +vn -0.4316 0.8608 0.2696 +vn -0.3943 0.8630 0.3159 +vn -0.5597 0.8253 0.0751 +vn -0.6083 0.7933 -0.0245 +vn -0.6802 0.6865 -0.2569 +vn -0.6585 0.7348 -0.1623 +vn -0.6909 0.6398 -0.3366 +vn -0.6992 0.6043 -0.3821 +vn -0.7375 0.5275 -0.4217 +vn -0.7388 0.5143 -0.4354 +vn -0.7446 0.4689 -0.4751 +vn -0.7464 0.4588 -0.4821 +vn -0.0700 -0.9972 -0.0268 +vn -0.1321 -0.9890 -0.0666 +vn -0.2659 -0.9317 0.2473 +vn -0.0832 -0.9960 -0.0339 +vn -0.2975 -0.9451 0.1351 +vn -0.4596 -0.8329 0.3083 +vn -0.4079 -0.8379 0.3626 +vn -0.3233 -0.8454 0.4252 +vn -0.1105 -0.9925 -0.0523 +vn -0.3840 -0.9204 0.0740 +vn -0.3516 -0.8693 0.3473 +vn -0.4740 -0.8297 -0.2949 +vn -0.5430 -0.8211 0.1758 +vn -0.6448 -0.7628 -0.0485 +vn -0.4295 -0.8980 -0.0950 +vn -0.5011 -0.8164 -0.2871 +vn -0.6887 -0.6847 -0.2386 +vn -0.5091 -0.8159 -0.2739 +vn -0.4413 -0.8740 -0.2034 +vn -0.6937 -0.6184 -0.3694 +vn -0.7228 -0.5396 -0.4317 +vn -0.7277 -0.4930 -0.4768 +vn 0.0547 0.9945 0.0892 +vn 0.0436 0.9957 0.0822 +vn 0.0636 0.9935 0.0947 +vn 0.0655 0.9931 0.0971 +vn 0.0629 0.9929 0.1012 +vn 0.0459 0.9948 0.0911 +vn 0.0506 0.9944 0.0933 +vn 0.0288 0.9970 0.0724 +vn 0.0040 0.9990 0.0449 +vn -0.0120 0.9995 0.0281 +vn 0.0177 0.9967 0.0790 +vn 0.0168 0.9975 0.0686 +vn -0.3773 -0.0943 -0.9213 +vn -0.3400 -0.0624 -0.9384 +vn -0.3866 -0.1024 -0.9165 +vn -0.4191 -0.1308 -0.8985 +vn 0.3322 -0.0355 -0.9425 +vn 0.3330 -0.0313 -0.9424 +vn 0.4234 0.0593 -0.9040 +vn 0.4062 0.0560 -0.9121 +vn 0.6590 0.0128 -0.7521 +vn 0.5649 0.0301 -0.8246 +vn 0.8498 0.0524 -0.5246 +vn 0.5006 0.0267 -0.8652 +vn 0.3472 -0.3674 -0.8628 +vn 0.3528 -0.3990 -0.8463 +vn 0.3316 -0.0499 -0.9421 +vn 0.3323 -0.0349 -0.9425 +vn -0.6557 -0.0439 -0.7537 +vn -0.6664 -0.0393 -0.7445 +vn -0.6631 -0.0408 -0.7475 +vn -0.6528 -0.0452 -0.7562 +vn 0.8798 0.0821 0.4683 +vn 0.8834 0.0816 0.4615 +vn 0.8819 0.0824 0.4641 +vn 0.8777 0.0830 0.4721 +vn 0.8582 0.0842 0.5064 +vn 0.5613 -0.0028 -0.8276 +vn 0.5612 -0.0029 -0.8277 +vn 0.5612 -0.0028 -0.8276 +vn 0.6113 0.0023 -0.7914 +vn 0.6131 0.0045 -0.7900 +vn 0.6665 0.0092 -0.7455 +vn 0.6787 0.0156 -0.7342 +vn 0.8880 0.0760 0.4535 +vn 0.8902 0.0694 0.4502 +vn 0.8895 0.0714 0.4512 +vn 0.8861 0.0815 0.4562 +vn -0.8702 -0.0767 -0.4866 +vn -0.8740 -0.0628 -0.4818 +vn -0.8513 -0.1373 -0.5064 +vn -0.8366 -0.1774 -0.5184 +vn -0.3490 -0.4897 -0.7990 +vn -0.3499 -0.4867 -0.8004 +vn -0.3304 -0.5459 -0.7700 +vn -0.3292 -0.5493 -0.7680 +vn -0.4045 0.2749 -0.8723 +vn -0.4044 0.2763 -0.8718 +vn -0.4049 0.2432 -0.8814 +vn -0.4049 0.2420 -0.8818 +vn -0.4186 -0.7544 0.5055 +vn -0.5157 -0.6166 0.5949 +vn -0.5432 -0.5408 0.6423 +vn -0.4139 -0.7595 0.5018 +vn -0.5465 -0.5560 0.6263 +vn -0.4156 -0.7609 0.4983 +vn -0.2371 -0.9251 0.2965 +vn -0.5467 -0.5483 0.6329 +vn -0.4225 -0.7662 0.4842 +vn -0.2197 -0.9309 0.2919 +vn -0.5391 -0.5710 0.6192 +vn -0.1902 -0.9507 0.2451 +vn -0.4268 -0.7559 0.4965 +vn -0.1834 -0.9559 0.2295 +vn -0.5924 -0.5763 0.5630 +vn -0.1478 -0.9719 0.1834 +vn -0.1406 -0.9757 0.1679 +vn -0.4705 -0.7604 0.4477 +vn -0.0848 -0.9908 0.1057 +vn -0.7375 -0.5574 0.3813 +vn -0.1924 -0.9449 0.2650 +vn -0.0606 -0.9876 0.1446 +vn -0.5925 -0.7575 0.2740 +vn -0.1691 -0.9642 0.2041 +vn -0.0843 -0.9964 -0.0114 +vn -0.8566 -0.5090 0.0848 +vn -0.0516 -0.9986 -0.0111 +vn -0.0109 -0.9989 0.0466 +vn -0.0717 -0.9841 0.1624 +vn 0.0227 -0.9961 0.0850 +vn -0.2567 -0.9566 0.1381 +vn -0.1223 -0.9918 0.0361 +vn -0.0515 -0.9946 -0.0904 +vn -0.0108 -0.9990 -0.0425 +vn 0.0350 -0.9994 -0.0064 +vn 0.0026 -0.9980 0.0639 +vn 0.0491 -0.9988 -0.0043 +vn -0.0264 -0.9829 -0.1824 +vn 0.0420 -0.9949 -0.0915 +vn 0.0980 -0.9911 -0.0900 +vn -0.1278 -0.9906 -0.0485 +vn 0.0414 -0.9991 -0.0121 +vn 0.1011 -0.9905 -0.0931 +vn -0.0661 -0.9634 -0.2599 +vn -0.0019 -0.9678 -0.2517 +vn 0.1503 -0.9700 -0.1913 +vn -0.3680 -0.9151 -0.1646 +vn 0.0776 -0.9954 -0.0555 +vn 0.1502 -0.9696 -0.1930 +vn 0.1542 -0.9691 -0.1926 +vn -0.0794 -0.9948 -0.0632 +vn 0.0383 -0.9993 0.0027 +vn -0.1919 -0.9744 -0.1168 +vn -0.7136 -0.7001 0.0263 +vn 0.1501 -0.9696 -0.1930 +vn -0.0534 -0.9958 -0.0750 +vn -0.3334 -0.9427 0.0135 +vn -0.1720 -0.9767 -0.1285 +vn -0.3739 -0.9057 -0.1998 +vn -0.4252 -0.8672 -0.2591 +vn -0.4016 -0.8844 -0.2379 +vn -0.1809 -0.9452 -0.2717 +vn -0.4398 -0.8364 -0.3272 +vn -0.3391 -0.9342 -0.1105 +vn -0.7224 -0.6086 -0.3282 +vn -0.7346 -0.5314 -0.4219 +vn -0.7447 -0.4902 -0.4530 +vn -0.7269 -0.5689 -0.3846 +vn -0.4402 -0.8079 -0.3920 +vn -0.7424 -0.4576 -0.4893 +vn -0.8192 -0.3258 -0.4721 +vn -0.8155 -0.3005 -0.4947 +vn -0.8273 -0.3580 -0.4329 +vn -0.4413 -0.7796 -0.4443 +vn -0.8460 -0.3699 -0.3840 +vn -0.7063 -0.4617 -0.5367 +vn -0.4249 -0.7700 -0.4760 +vn -0.7034 -0.6858 -0.1869 +vn -0.8030 -0.2929 -0.5191 +vn -0.4160 -0.7138 -0.5635 +vn -0.3613 -0.9297 -0.0716 +vn -0.7297 -0.6744 -0.1125 +vn -0.8785 -0.4509 -0.1576 +vn -0.3104 -0.7269 -0.6126 +vn -0.6771 -0.4411 -0.5891 +vn -0.7663 -0.3154 -0.5597 +vn -0.8682 -0.4189 -0.2660 +vn -0.2437 -0.7468 -0.6188 +vn -0.6399 -0.4206 -0.6431 +vn -0.7299 -0.2934 -0.6174 +vn -0.6906 -0.2559 -0.6765 +vn -0.6004 -0.3163 -0.7345 +vn -0.4991 -0.3406 -0.7968 +vn -0.6292 -0.1978 -0.7516 +vn -0.4172 -0.4185 -0.8067 +vn -0.5378 -0.2108 -0.8163 +vn -0.4598 -0.2948 -0.8377 +vn 0.4089 -0.6257 -0.6644 +vn 0.4089 -0.6257 -0.6643 +vn 0.4089 -0.6256 -0.6644 +vn 0.4089 -0.6255 -0.6645 +vn 0.4140 0.5130 -0.7520 +vn 0.4140 0.5130 -0.7519 +vn 0.4141 0.5131 -0.7519 +vn 0.4141 0.5130 -0.7519 +vn 0.4141 0.5129 -0.7520 +vn -0.1715 0.9359 -0.3078 +vn -0.0527 0.9950 -0.0844 +vn -0.1209 0.9597 -0.2538 +vn -0.0696 0.9839 -0.1644 +vn -0.1028 0.9938 -0.0429 +vn -0.1118 0.9906 -0.0790 +vn -0.1550 0.9879 -0.0089 +vn -0.1582 0.9865 -0.0420 +vn -0.2331 0.9684 0.0884 +vn -0.2340 0.9716 0.0342 +vn -0.3460 0.9174 0.1966 +vn -0.3267 0.9386 0.1105 +vn -0.4980 0.7892 0.3594 +vn -0.4717 0.8417 0.2627 +vn -0.5844 0.6720 0.4550 +vn -0.5446 0.7677 0.3378 +vn -0.5255 0.6690 0.5256 +vn -0.4550 0.7769 0.4352 +vn -0.5036 0.7020 0.5035 +vn -0.4413 0.7843 0.4361 +vn -0.3048 0.9165 0.2590 +vn -0.3044 0.9104 0.2802 +vn -0.4936 0.6929 0.5256 +vn -0.1922 0.9721 0.1342 +vn -0.2136 0.9659 0.1465 +vn -0.4298 0.7895 0.4381 +vn -0.0972 0.9942 0.0456 +vn -0.2845 0.9254 0.2505 +vn -0.1432 0.9890 0.0358 +vn -0.2037 0.9724 0.1141 +vn -0.0501 0.9986 -0.0149 +vn -0.4805 0.7153 0.5075 +vn -0.4224 0.7964 0.4328 +vn -0.0516 0.9985 -0.0160 +vn -0.2690 0.9290 0.2542 +vn 0.0150 0.9956 -0.0926 +vn -0.1571 0.9873 0.0241 +vn -0.1646 0.9792 0.1183 +vn 0.0225 0.9951 -0.0964 +vn -0.0549 0.9984 0.0113 +vn -0.5253 0.7733 0.3549 +vn 0.0776 0.9797 -0.1848 +vn -0.4558 0.8335 0.3123 +vn -0.2631 0.9424 0.2067 +vn -0.1256 0.9907 0.0528 +vn -0.1905 0.9778 0.0879 +vn 0.0259 0.9949 -0.0975 +vn -0.0581 0.9981 0.0203 +vn -0.7132 0.6782 0.1775 +vn -0.6366 0.7465 0.1938 +vn -0.3918 0.9076 0.1508 +vn -0.2409 0.9695 -0.0460 +vn -0.4887 0.8724 0.0096 +vn -0.5674 0.8159 -0.1114 +vn -0.8577 0.5128 -0.0383 +vn -0.7933 0.6082 -0.0273 +vn -0.2034 0.9753 -0.0865 +vn -0.6130 0.7664 -0.1920 +vn -0.8566 0.4525 -0.2479 +vn -0.6236 0.7392 -0.2544 +vn -0.3492 0.9237 -0.1577 +vn -0.8992 0.3532 -0.2581 +vn -0.8557 0.4183 -0.3045 +vn -0.6016 0.7473 -0.2821 +vn 0.0769 0.9770 -0.1988 +vn -0.8486 0.3905 -0.3570 +vn -0.3250 0.9290 -0.1769 +vn -0.6146 0.7196 -0.3233 +vn -0.6080 0.7232 -0.3275 +vn -0.8865 0.3542 -0.2977 +vn -0.0004 0.9983 -0.0586 +vn -0.8392 0.3499 -0.4163 +vn -0.8739 0.3172 -0.3683 +vn -0.8367 0.3095 -0.4518 +vn -0.0383 0.9993 -0.0027 +vn -0.6202 0.6883 -0.3762 +vn -0.8311 0.2844 -0.4780 +vn -0.8573 0.2768 -0.4341 +vn -0.1370 0.9874 -0.0792 +vn -0.5897 0.6976 -0.4068 +vn -0.8526 0.2344 -0.4670 +vn -0.8217 0.2539 -0.5103 +vn -0.8487 0.1610 -0.5038 +vn -0.5095 0.7292 -0.4568 +vn -0.5069 0.7007 -0.5020 +vn -0.8387 0.1581 -0.5211 +vn -0.7970 0.2223 -0.5616 +vn -0.5255 0.6029 -0.6002 +vn -0.2852 0.9190 -0.2720 +vn -0.8088 0.1193 -0.5759 +vn -0.7603 0.1771 -0.6250 +vn 0.0896 0.9773 -0.1920 +vn 0.0779 0.9765 -0.2010 +vn -0.7684 0.0987 -0.6323 +vn -0.7158 0.1581 -0.6801 +vn -0.7231 0.0895 -0.6849 +vn -0.3824 0.6639 -0.6426 +vn -0.6443 0.1408 -0.7517 +vn -0.3802 0.5395 -0.7513 +vn -0.6516 0.0790 -0.7545 +vn -0.4739 0.2043 -0.8565 +vn -0.5275 0.2256 -0.8191 +vn -0.5434 0.0726 -0.8364 +vn -0.4900 0.1149 -0.8641 +vn 0.0781 0.9762 -0.2024 +vn -0.1991 -0.8083 -0.5541 +vn -0.3145 -0.5019 -0.8057 +vn -0.1376 -0.5641 -0.8141 +vn -0.1280 -0.7697 -0.6255 +vn 0.1372 -0.6202 -0.7724 +vn 0.0973 -0.8164 -0.5692 +vn 0.0055 -0.9444 -0.3288 +vn 0.3385 -0.6295 -0.6994 +vn 0.2535 -0.8286 -0.4991 +vn 0.4088 -0.6257 -0.6643 +vn 0.2987 -0.8432 -0.4469 +vn 0.0921 -0.9601 -0.2639 +vn 0.1667 -0.9681 -0.1872 +vn 0.1685 -0.9670 -0.1913 +vn -0.1941 0.3698 -0.9086 +vn -0.3748 0.2911 -0.8802 +vn -0.2819 0.7361 -0.6153 +vn -0.2000 0.6799 -0.7055 +vn -0.0692 0.9360 -0.3452 +vn 0.0451 0.7537 -0.6556 +vn 0.1130 0.4655 -0.8778 +vn 0.2220 0.7907 -0.5705 +vn 0.0207 0.9602 -0.2787 +vn 0.0888 0.9757 -0.2003 +vn 0.3393 0.5060 -0.7930 +vn 0.0905 0.9774 -0.1913 +vn 0.2760 0.8000 -0.5327 +vn 0.6557 0.0439 0.7537 +vn 0.6528 0.0452 0.7562 +vn 0.6631 0.0408 0.7475 +vn 0.6664 0.0393 0.7445 +vn -0.8847 -0.0773 -0.4597 +vn -0.8732 -0.0818 -0.4805 +vn -0.8828 -0.0816 -0.4625 +vn -0.8895 -0.0714 -0.4512 +vn -0.8902 -0.0694 -0.4502 +vn 0.8437 0.1467 0.5164 +vn 0.8740 0.0628 0.4818 +vn 0.8702 0.0767 0.4866 +vn 0.8315 0.1774 0.5265 +vn 0.8173 0.1774 0.5483 +vn -0.6787 -0.0156 0.7342 +vn -0.6131 -0.0045 0.7900 +vn -0.6665 -0.0092 0.7455 +vn -0.6113 -0.0023 0.7914 +vn -0.5613 0.0029 0.8276 +vn -0.8857 -0.0557 -0.4609 +vn -0.8923 -0.0558 -0.4481 +vn -0.8923 -0.0557 -0.4480 +vn -0.8923 -0.0553 -0.4480 +vn -0.8923 -0.0546 -0.4481 +vn -0.8935 -0.0583 -0.4452 +vn -0.8920 -0.0578 -0.4484 +vn -0.8873 -0.0526 -0.4581 +vn -0.8831 -0.0522 -0.4664 +vn -0.8784 -0.0543 -0.4747 +vn -0.8755 -0.0568 -0.4799 +vn -0.8745 -0.0570 -0.4817 +vn -0.8736 -0.0571 -0.4832 +vn -0.8737 -0.0562 -0.4832 +vn -0.8729 -0.0571 -0.4846 +vn -0.8724 -0.0576 -0.4854 +vn -0.8724 -0.0575 -0.4854 +vn -0.8726 -0.0579 -0.4850 +vn 0.8923 0.0557 0.4480 +vn 0.8923 0.0558 0.4480 +vn 0.8857 0.0557 0.4608 +vn 0.8924 0.0553 0.4479 +vn 0.8924 0.0546 0.4480 +vn 0.8936 0.0584 0.4451 +vn 0.8920 0.0578 0.4484 +vn 0.8873 0.0526 0.4581 +vn 0.8830 0.0522 0.4665 +vn 0.8785 0.0543 0.4747 +vn 0.8755 0.0568 0.4798 +vn 0.8736 0.0571 0.4832 +vn 0.8745 0.0570 0.4817 +vn 0.8737 0.0561 0.4833 +vn 0.8729 0.0571 0.4846 +vn 0.8724 0.0576 0.4854 +vn 0.8724 0.0575 0.4854 +vn 0.8724 0.0577 0.4854 +vn -0.4035 0.0530 -0.9135 +vn -0.4017 0.0750 -0.9127 +vn -0.3860 0.2157 -0.8969 +vn -0.3761 0.2785 -0.8837 +vn -0.3344 0.4696 -0.8171 +vn -0.2739 0.6522 -0.7069 +vn -0.1967 0.8080 -0.5554 +vn -0.1047 0.9250 -0.3654 +vn -0.0580 0.9623 -0.2659 +vn -0.0334 0.9766 -0.2126 +vn -0.0203 0.9827 -0.1841 +vn -0.0072 0.9878 -0.1555 +vn 0.0062 0.9920 -0.1262 +vn 0.0318 0.9971 -0.0694 +vn 0.0486 0.9983 -0.0317 +vn 0.0716 0.9972 0.0201 +vn 0.0852 0.9951 0.0510 +vn 0.1011 0.9910 0.0873 +vn 0.1167 0.9855 0.1231 +vn 0.1227 0.9829 0.1370 +vn 0.1276 0.9807 0.1482 +vn 0.1348 0.9771 0.1649 +vn 0.1687 0.9550 0.2440 +vn 0.1796 0.9460 0.2699 +vn 0.1862 0.9401 0.2856 +vn 0.1985 0.9281 0.3149 +vn 0.2209 0.9029 0.3687 +vn 0.2518 0.8599 0.4440 +vn 0.2370 0.8818 0.4077 +vn 0.2925 0.7852 0.5458 +vn 0.2709 0.8278 0.4913 +vn 0.3262 0.7017 0.6334 +vn 0.3127 0.7381 0.5979 +vn 0.3587 0.5919 0.7218 +vn 0.3465 0.6376 0.6880 +vn 0.3903 0.4255 0.8164 +vn 0.3825 0.4764 0.7917 +vn 0.4053 0.2789 0.8706 +vn 0.4041 0.2956 0.8656 +vn 0.4098 0.1713 0.8960 +vn 0.4097 0.1759 0.8951 +vn 0.4099 0.0971 0.9069 +vn 0.4099 0.0963 0.9070 +vn -0.4088 -0.0424 -0.9117 +vn -0.4035 0.0530 -0.9134 +vn -0.4018 0.0750 -0.9127 +vn -0.3858 0.2158 -0.8970 +vn -0.3760 0.2786 -0.8837 +vn -0.3343 0.4697 -0.8171 +vn -0.2737 0.6522 -0.7069 +vn -0.1982 0.8054 -0.5586 +vn -0.1120 0.9177 -0.3810 +vn -0.0702 0.9537 -0.2923 +vn -0.0535 0.9651 -0.2564 +vn -0.0417 0.9720 -0.2311 +vn -0.0248 0.9806 -0.1943 +vn -0.0036 0.9890 -0.1476 +vn 0.0412 0.9980 -0.0482 +vn 0.0627 0.9980 -0.0000 +vn 0.0801 0.9960 0.0395 +vn 0.0894 0.9942 0.0604 +vn 0.0982 0.9919 0.0805 +vn 0.1015 0.9909 0.0880 +vn 0.1049 0.9899 0.0959 +vn 0.1144 0.9864 0.1177 +vn 0.1211 0.9837 0.1331 +vn 0.1302 0.9794 0.1543 +vn 0.1368 0.9760 0.1693 +vn 0.1456 0.9710 0.1898 +vn 0.1467 0.9703 0.1924 +vn 0.1410 0.9737 0.1791 +vn 0.1429 0.9726 0.1836 +vn 0.1540 0.9656 0.2096 +vn 0.1605 0.9611 0.2247 +vn 0.1673 0.9561 0.2406 +vn 0.1732 0.9514 0.2545 +vn 0.1822 0.9438 0.2759 +vn 0.1877 0.9388 0.2889 +vn 0.1932 0.9335 0.3020 +vn 0.2109 0.9148 0.3444 +vn 0.2449 0.8704 0.4270 +vn 0.2708 0.8281 0.4908 +vn 0.2927 0.7847 0.5463 +vn 0.3263 0.7015 0.6336 +vn 0.3127 0.7381 0.5978 +vn 0.3588 0.5917 0.7219 +vn 0.3466 0.6376 0.6880 +vn 0.3904 0.4255 0.8164 +vn 0.3826 0.4762 0.7917 +vn 0.4053 0.2790 0.8706 +vn 0.4041 0.2957 0.8656 +vn 0.4098 0.1712 0.8959 +vn 0.4101 0.0971 0.9068 +vn 0.4101 0.0963 0.9069 +vn -0.8731 -0.0584 -0.4840 +vn -0.8733 -0.0597 -0.4836 +vn -0.8732 -0.0583 -0.4838 +vn -0.8731 -0.0578 -0.4842 +vn -0.8730 -0.0576 -0.4843 +vn -0.8730 -0.0571 -0.4843 +vn -0.8731 -0.0566 -0.4843 +vn -0.8737 -0.0568 -0.4832 +vn -0.8732 -0.0556 -0.4842 +vn -0.8726 -0.0552 -0.4853 +vn -0.8724 -0.0597 -0.4850 +vn -0.8700 -0.0592 -0.4895 +vn -0.8710 -0.0611 -0.4875 +vn -0.8702 -0.0618 -0.4889 +vn -0.8704 -0.0617 -0.4885 +vn -0.8689 -0.0602 -0.4913 +vn -0.8663 -0.0503 -0.4971 +vn -0.8658 -0.0487 -0.4979 +vn -0.8662 -0.0718 -0.4944 +vn -0.8680 -0.0577 -0.4933 +vn -0.8827 -0.0554 -0.4666 +vn -0.8727 -0.0521 -0.4855 +vn -0.8776 -0.0501 -0.4768 +vn -0.8848 -0.0513 -0.4631 +vn -0.8936 -0.0584 -0.4451 +vn -0.8924 -0.0546 -0.4480 +vn -0.8924 -0.0553 -0.4479 +vn -0.8923 -0.0558 -0.4480 +vn 0.8733 0.0598 0.4836 +vn 0.8731 0.0582 0.4841 +vn 0.8732 0.0583 0.4839 +vn 0.8731 0.0578 0.4842 +vn 0.8730 0.0576 0.4843 +vn 0.8730 0.0571 0.4843 +vn 0.8732 0.0564 0.4841 +vn 0.8737 0.0568 0.4832 +vn 0.8734 0.0562 0.4837 +vn 0.8699 0.0572 0.4899 +vn 0.8723 0.0600 0.4852 +vn 0.8704 0.0590 0.4888 +vn 0.8721 0.0606 0.4855 +vn 0.8710 0.0614 0.4875 +vn 0.8662 0.0503 0.4971 +vn 0.8701 0.0622 0.4889 +vn 0.8704 0.0620 0.4885 +vn 0.8689 0.0604 0.4913 +vn 0.8658 0.0487 0.4979 +vn 0.8662 0.0718 0.4944 +vn 0.8680 0.0577 0.4932 +vn 0.8827 0.0554 0.4666 +vn 0.8727 0.0521 0.4855 +vn 0.8777 0.0500 0.4767 +vn 0.8849 0.0512 0.4630 +vn 0.8920 0.0577 0.4484 +vn 0.8935 0.0583 0.4452 +vn 0.3827 0.4757 0.7920 +vn 0.3909 0.4220 0.8180 +vn 0.3596 0.5883 0.7243 +vn 0.3462 0.6387 0.6872 +vn 0.3263 0.7014 0.6337 +vn 0.3126 0.7384 0.5975 +vn 0.2708 0.8280 0.4911 +vn 0.2925 0.7851 0.5460 +vn 0.2112 0.9146 0.3450 +vn 0.2446 0.8710 0.4261 +vn 0.1868 0.9397 0.2866 +vn 0.1929 0.9338 0.3013 +vn 0.1819 0.9441 0.2751 +vn 0.1756 0.9494 0.2602 +vn 0.1694 0.9544 0.2456 +vn 0.1594 0.9619 0.2222 +vn 0.1519 0.9670 0.2047 +vn 0.1419 0.9731 0.1814 +vn 0.1388 0.9749 0.1742 +vn 0.1405 0.9739 0.1781 +vn 0.1346 0.9772 0.1644 +vn 0.1165 0.9856 0.1224 +vn 0.1107 0.9878 0.1091 +vn 0.1133 0.9869 0.1149 +vn 0.1066 0.9893 0.0996 +vn 0.1122 0.9873 0.1125 +vn -0.1667 0.8529 -0.4947 +vn 0.0310 0.9970 -0.0711 +vn -0.2738 0.6522 -0.7069 +vn -0.3344 0.4695 -0.8171 +vn -0.3761 0.2784 -0.8838 +vn -0.3859 0.2157 -0.8970 +vn -0.8718 -0.0565 -0.4866 +vn -0.8718 -0.0571 -0.4866 +vn -0.8719 -0.0553 -0.4866 +vn -0.8718 -0.0570 -0.4865 +vn -0.8718 -0.0574 -0.4864 +vn -0.8718 -0.0576 -0.4864 +vn -0.8718 -0.0580 -0.4863 +vn -0.8729 -0.0594 -0.4843 +vn -0.8729 -0.0577 -0.4846 +vn -0.8731 -0.0554 -0.4844 +vn -0.8720 -0.0543 -0.4864 +vn -0.8720 -0.0546 -0.4864 +vn -0.8721 -0.0548 -0.4863 +vn -0.8734 -0.0585 -0.4834 +vn -0.8787 -0.0565 -0.4739 +vn -0.8785 -0.0542 -0.4747 +vn -0.8831 -0.0521 -0.4663 +vn -0.8825 -0.0500 -0.4676 +vn -0.8771 -0.0467 -0.4780 +vn -0.8797 -0.0555 -0.4723 +vn -0.8824 -0.0630 -0.4662 +vn -0.8824 -0.0594 -0.4667 +vn -0.8828 -0.0572 -0.4663 +vn -0.8829 -0.0567 -0.4661 +vn 0.8718 0.0571 0.4866 +vn 0.8718 0.0565 0.4866 +vn 0.8719 0.0553 0.4866 +vn 0.8718 0.0571 0.4865 +vn 0.8718 0.0575 0.4864 +vn 0.8718 0.0576 0.4864 +vn 0.8718 0.0580 0.4864 +vn 0.8729 0.0594 0.4843 +vn 0.8729 0.0577 0.4846 +vn 0.8731 0.0554 0.4844 +vn 0.8720 0.0543 0.4864 +vn 0.8720 0.0546 0.4864 +vn 0.8721 0.0548 0.4863 +vn 0.8735 0.0585 0.4834 +vn 0.8787 0.0565 0.4739 +vn 0.8785 0.0542 0.4746 +vn 0.8830 0.0521 0.4664 +vn 0.8825 0.0500 0.4676 +vn 0.8771 0.0467 0.4780 +vn 0.8797 0.0555 0.4723 +vn 0.8824 0.0630 0.4662 +vn 0.8824 0.0595 0.4667 +vn 0.8828 0.0572 0.4663 +vn 0.8829 0.0567 0.4661 +vn -0.9686 -0.0436 -0.2450 +vn -0.9685 -0.0462 -0.2449 +vn -0.9685 -0.0460 -0.2449 +vn -0.9686 -0.0434 -0.2450 +vn 0.7912 0.0641 0.6082 +vn 0.7912 0.0640 0.6082 +vn 0.7913 0.0624 0.6082 +vn -0.0831 -0.9954 -0.0486 +vn -0.0856 -0.9951 -0.0499 +vn -0.0858 -0.9951 -0.0499 +vn -0.0902 -0.9946 -0.0515 +vn -0.0966 -0.9939 -0.0534 +vn -0.1078 -0.9926 -0.0564 +vn -0.7553 -0.0639 -0.6523 +vn 0.0646 0.9961 0.0604 +vn -0.0097 0.9999 0.0047 +vn 0.9428 0.0504 0.3296 +vn 0.4752 0.7439 0.4698 +vn 0.4915 0.7933 0.3592 +vn 0.5710 0.7181 0.3980 +vn 0.6120 0.5365 0.5810 +vn 0.7376 0.3393 0.5838 +vn 0.7662 0.4303 0.4773 +vn 0.5801 0.4767 0.6604 +vn 0.8341 0.2204 0.5056 +vn 0.7876 0.1939 0.5849 +vn 0.6963 0.3111 0.6468 +vn 0.8572 0.0526 0.5122 +vn 0.7471 0.1813 0.6395 +vn 0.4958 0.5561 0.6671 +vn 0.8074 0.0614 0.5868 +vn 0.7650 0.0639 0.6409 +vn 0.8508 -0.1153 0.5126 +vn 0.7124 0.3295 0.6196 +vn 0.7655 0.1881 0.6153 +vn 0.5871 0.5186 0.6215 +vn 0.7834 0.0628 0.6184 +vn 0.7569 -0.0587 0.6508 +vn 0.7767 -0.0691 0.6260 +vn 0.6012 0.6006 0.5272 +vn 0.7987 0.2022 0.5667 +vn 0.7436 0.3716 0.5559 +vn 0.8125 -0.0851 0.5767 +vn 0.8195 0.0584 0.5700 +vn 0.5101 0.6624 0.5486 +vn 0.7766 0.4137 0.4751 +vn 0.4908 0.7791 0.3901 +vn 0.6089 0.6848 0.4003 +vn 0.8381 0.2149 0.5015 +vn 0.8598 0.0556 0.5076 +vn 0.5603 0.8090 0.1778 +vn 0.8080 0.4527 0.3770 +vn 0.8544 -0.1154 0.5066 +vn 0.8764 0.2320 0.4220 +vn 0.8954 0.0555 0.4417 +vn 0.3711 0.9129 0.1699 +vn 0.5582 0.8297 -0.0073 +vn 0.8265 0.5224 0.2096 +vn 0.9162 0.2448 0.3173 +vn 0.8941 -0.1349 0.4270 +vn 0.9415 0.0486 0.3335 +vn 0.4100 0.9120 0.0059 +vn 0.1991 0.9214 -0.3339 +vn 0.4858 0.8461 -0.2195 +vn 0.9364 -0.1725 0.3055 +vn 0.4685 0.8316 -0.2982 +vn 0.8395 0.5430 0.0189 +vn 0.1598 0.8746 -0.4578 +vn 0.7983 0.5640 -0.2113 +vn 0.8299 -0.4156 0.3723 +vn 0.1163 0.8330 -0.5410 +vn 0.3716 0.7833 -0.4984 +vn 0.8394 -0.5193 0.1602 +vn 0.8442 -0.5358 0.0167 +vn -0.0818 0.6516 -0.7542 +vn 0.4217 0.6883 -0.5903 +vn 0.8369 0.4667 -0.2861 +vn 0.7663 -0.5869 -0.2615 +vn 0.8202 -0.5651 -0.0889 +vn 0.8062 -0.5050 -0.3083 +vn 0.2793 -0.8085 -0.5181 +vn 0.3349 -0.8436 -0.4197 +vn 0.3948 -0.8675 -0.3027 +vn 0.4708 -0.8761 -0.1039 +vn 0.4102 -0.7475 -0.5224 +vn 0.8004 -0.0737 0.5949 +vn -0.2818 -0.6955 -0.6610 +vn 0.7109 -0.2098 0.6712 +vn 0.5471 -0.8189 0.1737 +vn -0.1476 -0.9115 -0.3839 +vn -0.2830 -0.6416 -0.7129 +vn -0.5593 -0.4576 -0.6912 +vn -0.6055 -0.5920 -0.5319 +vn -0.0840 -0.9852 -0.1495 +vn 0.7633 -0.2990 0.5726 +vn -0.6051 -0.6875 -0.4016 +vn -0.7208 -0.3359 -0.6063 +vn -0.7444 -0.3703 -0.5556 +vn -0.5622 -0.8054 -0.1878 +vn -0.7782 -0.4083 -0.4771 +vn -0.8002 -0.2028 -0.5644 +vn -0.8082 -0.4493 -0.3808 +vn -0.8370 -0.2153 -0.5031 +vn 0.8070 -0.3383 0.4841 +vn -0.8210 -0.0575 -0.5681 +vn -0.8749 -0.2326 -0.4247 +vn -0.8588 -0.0573 -0.5091 +vn -0.8151 0.0883 -0.5725 +vn -0.8950 -0.0543 -0.4428 +vn -0.8516 0.1174 -0.5108 +vn -0.7260 0.2282 -0.6487 +vn -0.7038 0.2072 -0.6796 +vn 0.5483 -0.7522 0.3654 +vn -0.8048 0.3367 -0.4889 +vn -0.7654 0.3027 -0.5679 +vn -0.5365 0.3751 -0.7559 +vn -0.5868 0.4619 -0.6651 +vn -0.0094 -0.9951 0.0989 +vn -0.8237 0.4328 -0.3663 +vn -0.6018 0.5723 -0.5570 +vn -0.8932 0.1369 -0.4282 +vn -0.5779 0.5230 -0.6265 +vn -0.9198 -0.2481 -0.3041 +vn -0.5477 -0.8360 0.0350 +vn -0.5513 0.7497 -0.3660 +vn -0.4689 0.4383 -0.7668 +vn -0.4864 0.4667 -0.7386 +vn -0.8291 -0.5229 -0.1981 +vn -0.4511 0.6268 -0.6353 +vn -0.4762 0.5841 -0.6573 +vn -0.4792 0.6734 -0.5629 +vn -0.5572 0.8080 -0.1916 +vn -0.3159 0.9002 -0.2999 +vn 0.7835 -0.3919 0.4822 +vn -0.8413 0.5183 -0.1535 +vn -0.9390 0.1779 -0.2942 +vn -0.3796 0.9123 -0.1535 +vn -0.4695 0.8769 0.1035 +vn -0.2424 0.9623 0.1236 +vn -0.8277 0.5582 0.0566 +vn -0.9799 -0.0393 -0.1954 +vn -0.0137 0.8772 0.4800 +vn -0.3643 0.8553 0.3685 +vn -0.7920 0.5776 0.1979 +vn -0.9941 -0.0332 -0.1030 +vn -0.9727 0.2299 -0.0331 +vn 0.0723 0.7933 0.6045 +vn -0.2824 0.8141 0.5075 +vn -0.9552 0.1651 -0.2456 +vn -0.9610 -0.0456 -0.2727 +vn -0.8681 0.4811 -0.1226 +vn -0.9593 -0.2747 -0.0661 +vn -0.9353 -0.2474 -0.2530 +vn -0.4408 0.8769 0.1915 +vn -0.8376 -0.5459 -0.0194 +vn -0.8541 0.3335 -0.3991 +vn -0.6799 0.6799 -0.2748 +vn -0.8931 0.1090 -0.4365 +vn 0.0467 0.8406 0.5397 +vn -0.8935 -0.0563 -0.4455 +vn -0.8233 -0.5574 0.1072 +vn -0.8565 -0.4883 -0.1673 +vn -0.3098 0.9500 -0.0383 +vn -0.8739 -0.2197 -0.4336 +vn -0.8216 -0.3994 -0.4068 +vn -0.5563 -0.8268 0.0828 +vn -0.6795 -0.6632 -0.3138 +vn -0.4053 -0.8037 0.4357 +vn -0.4685 -0.8361 0.2855 +vn 0.1611 -0.8689 0.4681 +vn 0.2047 -0.7130 0.6706 +vn -0.2839 -0.9559 -0.0757 +vn 0.6157 -0.5041 0.6057 +vn 0.5824 -0.4859 0.6516 +vn 0.5783 -0.4231 0.6975 +vn 0.5857 -0.6050 0.5394 +vn 0.5223 -0.7682 0.3702 +vn 0.7584 -0.2496 0.6021 +vn -0.8105 0.5819 0.0662 +vn -0.8106 0.5819 0.0662 +vn -0.8100 0.5826 0.0667 +vn -0.4158 -0.0764 -0.9062 +vn -0.4159 -0.0764 -0.9062 +vn 0.8147 0.3831 0.4352 +vn 0.8148 0.3831 0.4352 +vn 0.8147 0.3831 0.4353 +vn -0.8147 -0.3831 -0.4352 +vn -0.8148 -0.3831 -0.4352 +vn -0.6061 0.1008 -0.7890 +vn -0.8179 0.3939 -0.4193 +vn -0.8179 0.3940 -0.4192 +vn -0.7540 0.2801 -0.5941 +vn -0.7841 0.3274 -0.5273 +vn -0.7028 0.2108 -0.6795 +vn -0.8365 -0.5470 -0.0329 +vn -0.8365 -0.5471 -0.0329 +vn -0.8368 -0.5466 -0.0333 +vn -0.8368 -0.5465 -0.0333 +vn -0.4116 -0.0686 -0.9088 +vn -0.8365 0.3238 -0.4421 +vn 0.8365 -0.3238 0.4421 +vn 0.8365 -0.3238 0.4422 +vn -0.6017 -0.2267 -0.7659 +vn -0.7949 -0.4305 -0.4275 +vn -0.7950 -0.4304 -0.4275 +vn -0.7577 -0.3833 -0.5282 +vn -0.7389 -0.3619 -0.5683 +vn -0.6894 -0.3097 -0.6548 +vn -0.6894 -0.3098 -0.6548 +vn 0.7147 0.3178 0.6230 +vn 0.7149 0.3176 0.6230 +vn 0.8260 -0.3438 0.4467 +vn 0.8260 -0.3437 0.4467 +vn 0.8260 -0.3437 0.4468 +vn -0.8260 0.3438 -0.4467 +vn 0.2308 0.3260 -0.9168 +vn 0.2308 0.3259 -0.9168 +vn 0.7929 0.3981 0.4612 +vn 0.7930 0.3981 0.4612 +vn 0.8549 0.5124 0.0811 +vn 0.8363 0.4566 0.3034 +vn 0.8337 0.5393 -0.1184 +vn 0.8337 0.5394 -0.1185 +vn 0.7347 -0.2147 0.6435 +vn 0.7346 -0.2150 0.6435 +vn -0.4115 -0.0717 -0.9086 +vn -0.4116 -0.0717 -0.9086 +vn -0.7979 -0.4097 -0.4421 +vn -0.7979 -0.4098 -0.4421 +vn 0.7979 0.4097 0.4421 +vn 0.7979 0.4097 0.4422 +vn 0.7979 0.4098 0.4421 +vn 0.1464 -0.4040 -0.9030 +vn 0.1463 -0.4040 -0.9030 +vn 0.1466 -0.4040 -0.9029 +vn 0.8223 -0.3308 0.4629 +vn 0.8223 -0.3309 0.4629 +vn 0.8595 -0.4067 0.3097 +vn 0.8563 -0.5163 -0.0089 +vn 0.8034 -0.5560 -0.2130 +vn 0.8035 -0.5560 -0.2130 +vn 0.4752 0.7440 0.4698 +vn 0.5710 0.7180 0.3980 +vn 0.3712 0.9129 0.1699 +vn 0.4100 0.9121 0.0059 +vn 0.4858 0.8461 -0.2194 +vn 0.4217 0.6883 -0.5902 +vn 0.8202 -0.5651 -0.0888 +vn -0.2672 -0.7447 -0.6116 +vn -0.8932 0.1369 -0.4283 +vn -0.9197 -0.2481 -0.3041 +vn -0.4688 0.4383 -0.7668 +vn -0.4762 0.5842 -0.6573 +vn -0.8413 0.5183 -0.1534 +vn -0.8277 0.5582 0.0565 +vn -0.9488 -0.2676 -0.1681 +vn -0.4685 -0.8361 0.2854 +vn -0.7841 0.3273 -0.5273 +vn -0.8364 -0.5471 -0.0329 +vn -0.4115 -0.0686 -0.9088 +vn 0.8365 -0.3237 0.4422 +vn 0.7148 0.3176 0.6230 +vn 0.7929 0.3982 0.4612 +vn 0.8549 0.5125 0.0810 +vn 0.8363 0.4567 0.3034 +vn 0.1462 -0.4040 -0.9030 +vn 0.8564 -0.5163 -0.0089 +vn -0.6956 0.6196 -0.3637 +vn -0.6868 0.5399 -0.4866 +vn -0.6872 0.5395 -0.4864 +vn -0.6571 0.7477 -0.0959 +vn -0.1106 0.6143 0.7813 +vn -0.5476 0.7986 0.2495 +vn 0.1826 0.3555 0.9167 +vn 0.1113 0.4319 0.8950 +vn 0.1163 0.4064 0.9063 +vn -0.0571 0.5629 0.8246 +vn -0.0908 0.6496 0.7549 +vn -0.0808 0.6536 0.7525 +vn -0.6113 0.2630 -0.7464 +vn -0.6147 0.2617 -0.7441 +vn -0.5182 0.0824 -0.8513 +vn -0.5325 0.1017 -0.8403 +vn -0.3527 -0.1459 -0.9243 +vn -0.2990 -0.2043 -0.9321 +vn -0.2139 -0.1094 -0.9707 +vn -0.3730 0.0162 -0.9277 +vn -0.4839 0.0927 -0.8702 +vn -0.4853 0.0910 -0.8696 +vn -0.2178 -0.9760 0.0068 +vn -0.2492 -0.9651 -0.0802 +vn 0.0892 -0.9776 0.1904 +vn 0.3018 -0.9465 0.1143 +vn -0.3539 -0.8496 -0.3912 +vn 0.2932 -0.9505 -0.1028 +vn -0.4908 -0.7221 -0.4875 +vn 0.8463 -0.2526 0.4691 +vn 0.7118 -0.6795 0.1776 +vn 0.8814 -0.2782 0.3818 +vn 0.8872 -0.2623 0.3795 +vn 0.9002 -0.0248 0.4348 +vn 0.8778 0.1861 0.4415 +vn 0.8015 -0.2512 0.5426 +vn 0.8745 0.2010 0.4415 +vn 0.6374 0.6931 0.3366 +vn 0.8664 0.1860 0.4635 +vn 0.7555 0.5250 0.3918 +vn 0.1044 0.9934 0.0469 +vn 0.8326 0.1696 0.5272 +vn 0.6379 0.6694 0.3807 +vn -0.2992 0.9395 -0.1670 +vn -0.7905 0.4210 -0.4448 +vn 0.8020 0.1540 0.5771 +vn 0.6228 0.6068 0.4938 +vn -0.8438 0.2106 -0.4936 +vn -0.8368 -0.1355 -0.5305 +vn 0.5923 0.5477 0.5910 +vn -0.2805 0.9562 -0.0839 +vn -0.8530 0.2279 -0.4696 +vn -0.8326 -0.1815 -0.5232 +vn -0.2853 0.9470 0.1476 +vn -0.7582 -0.3631 -0.5416 +vn -0.5973 0.7942 0.1121 +vn -0.9005 0.2901 -0.3240 +vn -0.7813 -0.3255 -0.5326 +vn -0.8145 -0.3596 -0.4552 +vn -0.9383 0.1581 -0.3077 +vn -0.8783 -0.2005 -0.4339 +vn -0.9044 -0.2035 -0.3751 +vn -0.8415 -0.3988 -0.3644 +vn 0.7621 -0.1805 -0.6218 +vn 0.4064 -0.0970 -0.9086 +vn 0.4151 -0.0990 -0.9044 +vn -0.3011 0.0310 -0.9531 +vn -0.6062 0.0869 -0.7906 +vn -0.7635 0.1521 -0.6276 +vn -0.8091 0.0610 -0.5844 +vn -0.8669 0.3265 0.3766 +vn -0.1239 0.4372 0.8908 +vn -0.0280 0.4210 0.9066 +vn -0.9543 0.0464 -0.2953 +vn 0.1971 0.3089 0.9305 +vn -0.0922 0.3182 0.9435 +vn -0.8578 -0.0555 -0.5110 +vn -0.3450 -0.3333 -0.8774 +vn -0.2130 -0.6087 -0.7643 +vn -0.4385 -0.3541 -0.8260 +vn -0.4826 -0.1805 -0.8570 +vn -0.6209 -0.1319 -0.7727 +vn -0.4237 -0.2269 -0.8769 +vn -0.7140 -0.1573 -0.6822 +vn -0.5596 -0.1298 -0.8185 +vn -0.4948 -0.1476 -0.8564 +vn 0.8323 -0.0732 0.5494 +vn 0.8482 -0.0762 0.5242 +vn 0.7948 -0.0269 0.6062 +vn 0.8575 -0.0809 0.5081 +vn 0.8847 -0.1022 0.4547 +vn 0.8972 -0.1081 0.4282 +vn 0.9810 -0.0980 0.1673 +vn 0.9635 -0.1248 0.2367 +vn 0.9059 0.0287 -0.4225 +vn 0.9801 -0.0490 -0.1923 +vn -0.1416 0.3138 -0.9389 +vn 0.4456 0.1627 -0.8803 +vn -0.5199 0.3805 -0.7648 +vn -0.5451 0.3937 -0.7402 +vn -0.6926 0.4374 -0.5735 +vn -0.6985 0.4428 -0.5621 +vn -0.7599 0.5822 -0.2891 +vn -0.7573 0.5307 -0.3806 +vn -0.7340 0.6529 -0.1870 +vn -0.7005 0.7129 -0.0312 +vn -0.5682 0.7960 0.2085 +vn 0.0396 0.6609 0.7495 +vn 0.2371 0.5121 0.8255 +vn 0.3375 0.4107 0.8470 +vn 0.4568 0.2843 0.8429 +vn 0.4834 0.2505 0.8388 +vn 0.5775 0.1544 0.8017 +vn 0.5808 0.1554 0.7991 +vn 0.6681 0.0803 0.7398 +vn 0.6775 0.0779 0.7314 +vn 0.7164 0.0498 0.6959 +vn 0.6666 0.0429 0.7442 +vn 0.6667 0.0446 0.7440 +vn 0.7600 -0.0186 0.6497 +vn 0.7822 -0.0948 0.6157 +vn 0.8852 -0.1204 0.4494 +vn 0.8075 -0.5078 0.3000 +vn 0.6416 0.0049 0.7670 +vn 0.7974 -0.2477 0.5503 +vn 0.7184 -0.6612 0.2162 +vn 0.4060 -0.8988 -0.1651 +vn -0.4354 -0.7782 -0.4525 +vn -0.2332 -0.6911 -0.6842 +vn -0.3605 -0.8826 0.3018 +vn 0.3882 -0.7985 0.4601 +vn 0.8671 -0.4967 -0.0382 +vn -0.1970 -0.6377 0.7447 +vn 0.0034 -0.5378 -0.8431 +vn 0.3644 -0.3301 0.8708 +vn 0.7672 -0.2227 0.6016 +vn -0.6412 -0.4310 -0.6349 +vn 0.6247 -0.0508 0.7792 +vn 0.6155 -0.3461 -0.7081 +vn 0.9933 0.0236 0.1134 +vn -0.3198 -0.3075 -0.8962 +vn 0.3606 -0.2016 0.9107 +vn 0.6021 0.0208 0.7982 +vn 0.7967 0.0670 0.6006 +vn 0.9716 0.1430 0.1885 +vn 0.7294 -0.0926 -0.6778 +vn 0.7533 0.1271 0.6453 +vn 0.7793 -0.3987 0.4834 +vn 0.4878 -0.0075 0.8729 +vn 0.4878 -0.0073 0.8729 +vn 0.4878 -0.0074 0.8729 +vn 0.4877 -0.0078 0.8730 +vn -0.7577 -0.5066 -0.4113 +vn -0.7559 -0.5118 -0.4082 +vn -0.7564 -0.5105 -0.4090 +vn -0.7584 -0.5046 -0.4125 +vn -0.2284 -0.2246 -0.9473 +vn -0.2291 -0.2245 -0.9472 +vn -0.2285 -0.2246 -0.9473 +vn -0.2275 -0.2248 -0.9475 +vn 0.8474 0.2159 0.4851 +vn 0.8474 0.2158 0.4852 +vn 0.8474 0.2160 0.4851 +vn 0.8474 0.2161 0.4850 +vn -0.4110 -0.0760 -0.9084 +vn -0.4111 -0.0761 -0.9084 +vn -0.4111 -0.0760 -0.9084 +vn -0.4113 -0.0760 -0.9083 +vn -0.4116 -0.0761 -0.9082 +vn -0.4103 -0.0761 -0.9088 +vn -0.4108 -0.0761 -0.9085 +vn -0.4083 -0.0764 -0.9096 +vn 0.8739 0.1641 0.4575 +vn 0.8697 0.1630 0.4658 +vn 0.8873 0.0623 0.4570 +vn 0.8837 0.0527 0.4650 +vn 0.8567 0.1544 0.4921 +vn 0.8688 0.0475 0.4929 +vn 0.8285 0.1549 0.5381 +vn 0.8878 -0.1655 0.4294 +vn 0.8388 0.0583 0.5413 +vn 0.8756 -0.2228 0.4285 +vn 0.8090 0.1525 0.5676 +vn 0.8159 0.0597 0.5751 +vn 0.8236 -0.1750 0.5394 +vn 0.8554 -0.2129 0.4722 +vn 0.7963 -0.1699 0.5806 +vn 0.7894 -0.5353 0.3005 +vn 0.6516 -0.7294 0.2081 +vn 0.6584 -0.5936 0.4627 +vn 0.6498 -0.6898 0.3192 +vn 0.6046 -0.5996 0.5244 +vn 0.0300 -0.9708 -0.2379 +vn -0.1521 -0.9503 -0.2717 +vn -0.0178 -0.9933 0.1141 +vn -0.1075 -0.9870 -0.1192 +vn -0.2895 -0.9569 0.0225 +vn -0.7286 -0.4050 -0.5523 +vn -0.7117 -0.4699 -0.5222 +vn -0.6792 -0.6614 -0.3181 +vn -0.6993 -0.5568 -0.4482 +vn -0.7584 -0.5536 -0.3441 +vn -0.8042 -0.1594 -0.5726 +vn -0.8175 -0.2669 -0.5103 +vn -0.7986 -0.2307 -0.5559 +vn -0.8403 -0.2909 -0.4575 +vn -0.8561 -0.2645 -0.4440 +vn -0.8263 -0.0583 -0.5602 +vn -0.8497 -0.0519 -0.5247 +vn -0.8722 -0.0558 -0.4859 +vn -0.8166 -0.0108 -0.5771 +vn -0.8804 -0.0576 -0.4707 +vn -0.8369 0.1929 -0.5122 +vn -0.8169 0.1654 -0.5526 +vn -0.8591 0.2019 -0.4703 +vn -0.8732 0.1643 -0.4589 +vn -0.8180 0.0880 -0.5684 +vn -0.6664 0.6761 -0.3145 +vn -0.6668 0.6203 -0.4131 +vn -0.7748 0.5175 -0.3632 +vn -0.7134 0.4987 -0.4923 +vn 0.0551 0.9911 0.1216 +vn 0.0349 0.9993 -0.0122 +vn -0.1744 0.9828 0.0600 +vn -0.7482 0.3899 -0.5367 +vn -0.0730 0.9861 -0.1495 +vn 0.6658 0.5964 0.4483 +vn 0.6248 0.6058 0.4925 +vn 0.6877 0.6133 0.3886 +vn 0.6779 0.6591 0.3256 +vn 0.2306 0.9731 -0.0015 +vn 0.7768 0.3820 0.5008 +vn 0.7994 0.3924 0.4549 +vn 0.7555 0.3641 0.5447 +vn 0.7535 0.5461 0.3660 +vn 0.8068 0.4131 0.4224 +vn 0.8091 0.4179 0.4132 +vn -0.4110 -0.0712 -0.9089 +vn -0.4110 -0.0713 -0.9088 +vn -0.4110 -0.0712 -0.9088 +vn -0.4110 -0.0711 -0.9089 +vn -0.4110 -0.0711 -0.9088 +vn -0.4112 -0.0712 -0.9087 +vn -0.4116 -0.0712 -0.9086 +vn -0.4103 -0.0713 -0.9092 +vn -0.4108 -0.0713 -0.9089 +vn -0.4084 -0.0715 -0.9100 +vn 0.8727 0.1639 0.4599 +vn 0.8686 0.1627 0.4680 +vn 0.8872 0.0633 0.4571 +vn 0.8839 0.0522 0.4648 +vn 0.8558 0.1539 0.4939 +vn 0.8690 0.0467 0.4926 +vn 0.8277 0.1540 0.5396 +vn 0.8903 -0.1658 0.4242 +vn 0.8389 0.0572 0.5412 +vn 0.8783 -0.2261 0.4212 +vn 0.8081 0.1513 0.5692 +vn 0.8161 0.0576 0.5751 +vn 0.8260 -0.1787 0.5345 +vn 0.8580 -0.2166 0.4657 +vn 0.7984 -0.1747 0.5763 +vn 0.7915 -0.5413 0.2837 +vn 0.6483 -0.7391 0.1828 +vn 0.6579 -0.6074 0.4454 +vn 0.6475 -0.7021 0.2964 +vn 0.6018 -0.6167 0.5075 +vn 0.0139 -0.9624 -0.2712 +vn -0.1588 -0.9412 -0.2983 +vn -0.0244 -0.9961 0.0843 +vn -0.1139 -0.9824 -0.1482 +vn -0.2999 -0.9539 -0.0110 +vn -0.7270 -0.3986 -0.5591 +vn -0.7097 -0.4630 -0.5310 +vn -0.6793 -0.6522 -0.3366 +vn -0.6978 -0.5485 -0.4606 +vn -0.7552 -0.5495 -0.3573 +vn -0.8033 -0.1572 -0.5744 +vn -0.8155 -0.2646 -0.5147 +vn -0.7970 -0.2287 -0.5590 +vn -0.8380 -0.2887 -0.4630 +vn -0.8537 -0.2645 -0.4487 +vn -0.8265 -0.0570 -0.5601 +vn -0.8499 -0.0509 -0.5245 +vn -0.8723 -0.0551 -0.4858 +vn -0.8173 -0.0091 -0.5761 +vn -0.8804 -0.0585 -0.4706 +vn -0.8395 0.1966 -0.5066 +vn -0.8192 0.1689 -0.5481 +vn -0.8617 0.2053 -0.4641 +vn -0.8757 0.1650 -0.4539 +vn -0.8198 0.0903 -0.5655 +vn -0.6644 0.6880 -0.2920 +vn -0.6659 0.6336 -0.3940 +vn -0.7774 0.5240 -0.3479 +vn -0.7147 0.5102 -0.4785 +vn 0.0627 0.9865 0.1513 +vn 0.0417 0.9990 0.0186 +vn -0.1588 0.9826 0.0961 +vn -0.7499 0.4007 -0.5264 +vn -0.0687 0.9904 -0.1203 +vn 0.6651 0.5867 0.4619 +vn 0.6255 0.5941 0.5057 +vn 0.6869 0.6042 0.4039 +vn 0.6779 0.6498 0.3438 +vn 0.2406 0.9701 0.0318 +vn 0.7740 0.3781 0.5080 +vn 0.7965 0.3889 0.4629 +vn 0.7531 0.3603 0.5505 +vn 0.7503 0.5419 0.3787 +vn 0.8039 0.4095 0.4313 +vn 0.8063 0.4143 0.4223 +vn -0.8873 -0.1675 -0.4296 +vn -0.8874 -0.1674 -0.4296 +vn -0.8671 -0.2733 -0.4165 +vn -0.8536 -0.3234 -0.4085 +vn -0.7536 -0.5548 -0.3526 +vn -0.6200 -0.7322 -0.2819 +vn -0.3218 -0.9379 -0.1297 +vn 0.2555 -0.9545 0.1535 +vn 0.5911 -0.7440 0.3116 +vn 0.7714 -0.5007 0.3927 +vn 0.8687 -0.2411 0.4326 +vn 0.8826 -0.1724 0.4374 +vn 0.8974 0.0525 0.4380 +vn 0.8973 0.0564 0.4378 +vn 0.8670 0.2733 0.4165 +vn 0.8536 0.3233 0.4085 +vn 0.7537 0.5546 0.3527 +vn 0.6200 0.7322 0.2819 +vn 0.3221 0.9377 0.1299 +vn -0.2558 0.9545 -0.1536 +vn -0.5916 0.7435 -0.3118 +vn -0.7714 0.5007 -0.3927 +vn -0.8687 0.2411 -0.4327 +vn -0.8826 0.1725 -0.4374 +vn -0.8958 0.0596 -0.4405 +vn -0.8958 0.0597 -0.4405 +vn 0.7544 -0.3929 0.5259 +vn 0.5893 -0.6966 0.4092 +vn 0.4807 -0.8114 0.3325 +vn 0.8066 -0.1793 0.5632 +vn 0.8144 -0.1137 0.5690 +vn 0.8180 0.0591 0.5722 +vn 0.8177 0.0646 0.5720 +vn 0.7968 0.2317 0.5581 +vn 0.7878 0.2732 0.5520 +vn 0.7266 0.4604 0.5100 +vn 0.6211 0.6505 0.4371 +vn 0.5380 0.7528 0.3792 +vn -0.3218 0.9206 -0.2212 +vn -0.4061 -0.8674 -0.2877 +vn -0.3716 -0.8903 -0.2634 +vn -0.6215 -0.6500 -0.4373 +vn -0.7265 -0.4606 -0.5099 +vn -0.7878 -0.2734 -0.5520 +vn -0.7968 -0.2316 -0.5581 +vn -0.8180 -0.0591 -0.5722 +vn -0.8177 -0.0645 -0.5720 +vn -0.8144 0.1136 -0.5690 +vn -0.8066 0.1792 -0.5633 +vn -0.7544 0.3928 -0.5259 +vn -0.5900 0.6959 -0.4095 +vn -0.4807 0.8114 -0.3326 +vn 0.4649 0.0754 0.8821 +vn 0.4653 0.0750 0.8819 +vn 0.4643 0.0751 0.8825 +vn 0.4648 0.0752 0.8822 +vn 0.4650 0.0753 0.8821 +vn 0.4652 0.0754 0.8820 +vn 0.4651 0.0754 0.8820 +vn 0.4653 0.0755 0.8819 +vn 0.4652 0.0748 0.8821 +vn 0.4648 0.0757 0.8822 +vn 0.4639 0.0770 0.8825 +vn -0.8207 -0.0618 -0.5680 +vn -0.8199 0.0303 -0.5718 +vn -0.7780 -0.0617 -0.6252 +vn -0.7887 -0.2465 -0.5632 +vn -0.6792 -0.4619 -0.5704 +vn -0.3070 -0.7730 -0.5551 +vn -0.6892 0.3690 -0.6236 +vn -0.3529 0.6891 -0.6330 +vn -0.7606 0.2473 -0.6003 +vn 0.5232 0.7903 -0.3191 +vn 0.9662 0.2431 0.0853 +vn 0.9513 0.2886 0.1081 +vn 0.9827 0.0493 0.1784 +vn 0.9641 -0.2245 0.1419 +vn 0.7485 -0.6574 -0.0868 +vn 0.8668 -0.4983 0.0184 +vn -0.9101 -0.0511 -0.4113 +vn -0.9053 0.0645 -0.4198 +vn -0.8985 0.0607 -0.4347 +vn -0.9050 -0.0536 -0.4221 +vn -0.8871 0.0555 -0.4583 +vn -0.8926 -0.0581 -0.4472 +vn -0.8862 -0.2761 -0.3720 +vn -0.8776 0.0521 -0.4766 +vn -0.8811 -0.0564 -0.4696 +vn -0.8734 -0.3151 -0.3712 +vn -0.8721 0.0501 -0.4867 +vn -0.8617 -0.3086 -0.4028 +vn -0.8738 -0.0582 -0.4828 +vn -0.8493 -0.2957 -0.4373 +vn -0.8571 0.0443 -0.5132 +vn -0.7698 -0.5832 -0.2593 +vn -0.6726 -0.7132 -0.1974 +vn -0.8593 -0.0569 -0.5082 +vn -0.6764 -0.6899 -0.2578 +vn -0.8445 0.0394 -0.5341 +vn -0.8399 -0.2913 -0.4580 +vn -0.8232 -0.2798 -0.4941 +vn -0.6813 -0.6550 -0.3267 +vn -0.2396 -0.9663 0.0942 +vn 0.0313 -0.9768 0.2118 +vn 0.0605 -0.9952 0.0775 +vn 0.0374 -0.9903 0.1335 +vn -0.6773 -0.6368 -0.3684 +vn -0.6695 -0.5966 -0.4426 +vn 0.0687 -0.9976 0.0058 +vn 0.6284 -0.6115 0.4808 +vn 0.7177 -0.5510 0.4259 +vn 0.7550 -0.5120 0.4098 +vn 0.6814 -0.5669 0.4631 +vn 0.7691 -0.5242 0.3657 +vn 0.0782 -0.9863 -0.1450 +vn 0.7867 -0.5790 0.2142 +vn 0.8356 -0.1910 0.5151 +vn 0.8679 -0.1728 0.4658 +vn 0.8522 -0.1863 0.4889 +vn 0.8863 -0.1572 0.4356 +vn 0.8766 -0.1536 0.4560 +vn 0.8787 0.0595 0.4736 +vn 0.8891 0.0541 0.4546 +vn -0.8449 -0.0576 -0.5318 +vn 0.8903 0.0544 0.4521 +vn 0.9232 -0.1813 0.3390 +vn 0.8979 0.0527 0.4369 +vn -0.8068 -0.2774 -0.5217 +vn 0.8648 0.0608 0.4984 +vn 0.9341 0.0499 0.3536 +vn 0.8577 0.2990 0.4183 +vn 0.8569 0.2984 0.4204 +vn -0.6407 -0.5860 -0.4961 +vn 0.8489 0.3007 0.4347 +vn 0.8650 0.2885 0.4106 +vn 0.8308 0.3065 0.4646 +vn 0.4649 -0.8830 -0.0646 +vn 0.7100 0.6312 0.3122 +vn 0.8977 0.3004 0.3222 +vn 0.6766 0.6618 0.3228 +vn 0.8860 -0.4050 0.2259 +vn 0.7299 0.5970 0.3330 +vn 0.7353 0.5941 0.3262 +vn 0.6272 0.6934 0.3548 +vn 0.9491 -0.1260 0.2888 +vn 0.9329 0.2329 0.2745 +vn 0.0534 0.9969 -0.0579 +vn 0.0284 0.9995 -0.0109 +vn 0.0945 0.9949 -0.0339 +vn 0.9556 0.0514 0.2903 +vn 0.7360 0.6478 0.1966 +vn 0.0899 0.9947 -0.0492 +vn -0.2287 0.9702 -0.0798 +vn -0.6719 0.6578 -0.3405 +vn -0.6817 0.6122 -0.4005 +vn -0.6752 0.6148 -0.4076 +vn 0.0617 0.9816 -0.1807 +vn 0.8358 0.5142 0.1923 +vn -0.6773 0.6008 -0.4247 +vn -0.7764 0.5156 -0.3625 +vn -0.8361 0.3599 -0.4139 +vn -0.8260 0.3410 -0.4489 +vn -0.8210 0.3345 -0.4628 +vn -0.6650 0.5846 -0.4647 +vn 0.2426 0.9446 -0.2212 +vn -0.8168 0.3277 -0.4749 +vn -0.8401 0.3698 -0.3968 +vn -0.8074 0.3130 -0.5001 +vn -0.6279 0.5632 -0.5371 +vn -0.7888 0.2850 -0.5446 +vn -0.6981 -0.3747 -0.6102 +vn -0.6948 -0.3838 -0.6082 +vn -0.6948 -0.4553 -0.5567 +vn -0.6883 -0.4462 -0.5719 +vn -0.7047 -0.5021 -0.5012 +vn -0.7105 -0.5209 -0.4731 +vn -0.7384 -0.5896 -0.3275 +vn -0.7474 -0.6566 -0.1014 +vn -0.6939 -0.6950 0.1885 +vn -0.5044 -0.6150 0.6061 +vn -0.4730 -0.5368 0.6986 +vn -0.4842 -0.5308 0.6955 +vn -0.8369 0.0072 -0.5474 +vn -0.8399 0.0100 -0.5427 +vn -0.8319 0.0082 -0.5549 +vn -0.8458 0.0111 -0.5333 +vn -0.8708 0.0198 -0.4912 +vn -0.8590 0.0106 -0.5119 +vn -0.8797 0.0201 -0.4751 +vn -0.8934 0.0325 -0.4481 +vn 0.8080 -0.2993 0.5076 +vn 0.7878 -0.2652 0.5559 +vn 0.7952 -0.2825 0.5366 +vn 0.8119 -0.3064 0.4970 +vn 0.8033 -0.3646 0.4709 +vn 0.8072 -0.3980 0.4359 +vn 0.8059 -0.4075 0.4294 +vn 0.8116 -0.4099 0.4163 +vn -0.5052 -0.0238 -0.8627 +vn -0.5051 -0.0238 -0.8627 +vn -0.5053 -0.0238 -0.8626 +vn 0.9278 -0.2023 0.3135 +vn 0.9276 -0.2035 0.3133 +vn 0.9374 -0.0992 0.3339 +vn 0.9375 -0.0960 0.3344 +vn 0.7227 0.5758 0.3823 +vn 0.8066 0.4470 0.3869 +vn 0.8060 0.4480 0.3869 +vn 0.7201 0.5792 0.3821 +vn 0.4920 -0.8705 0.0059 +vn 0.4889 -0.8723 0.0044 +vn 0.8606 -0.4539 0.2310 +vn 0.8637 -0.4466 0.2337 +vn -0.7235 -0.5520 -0.4144 +vn -0.7968 -0.4296 -0.4250 +vn -0.7962 -0.4308 -0.4249 +vn -0.7194 -0.5579 -0.4137 +vn -0.8605 0.4268 -0.2784 +vn -0.8952 0.3126 -0.3177 +vn -0.5726 0.8113 -0.1176 +vn -0.8979 0.2824 -0.3377 +vn -0.9223 0.0915 -0.3755 +vn -0.9171 0.1618 -0.3645 +vn -0.5924 -0.1915 -0.7826 +vn -0.5932 -0.1910 -0.7821 +vn -0.4298 -0.0636 -0.9007 +vn -0.4898 -0.1120 -0.8646 +vn -0.0946 0.1979 -0.9756 +vn 0.2424 0.4281 -0.8706 +vn 0.4616 0.5442 -0.7005 +vn 0.4521 0.5717 -0.6846 +vn 0.4525 -0.8884 -0.0780 +vn 0.5948 -0.5768 0.5599 +vn 0.6771 -0.4428 0.5878 +vn 0.7675 -0.5436 0.3397 +vn 0.7496 -0.4461 0.4890 +vn 0.8337 -0.4017 0.3790 +vn 0.5275 -0.8165 -0.2347 +vn 0.7398 -0.5347 0.4084 +vn 0.8664 -0.4235 0.2646 +vn 0.9192 -0.3907 0.0496 +vn 0.3451 -0.8908 -0.2954 +vn 0.9401 -0.3059 0.1507 +vn -0.8931 0.1233 -0.4326 +vn -0.8110 0.0814 -0.5793 +vn -0.7906 0.1682 -0.5887 +vn -0.8974 0.2222 -0.3812 +vn -0.8863 0.3864 -0.2552 +vn -0.7514 0.3877 -0.5339 +vn -0.9433 0.3133 -0.1100 +vn -0.8352 0.4095 -0.3671 +vn -0.9344 0.3060 -0.1825 +vn -0.7172 0.5023 -0.4829 +vn -0.9327 0.2756 -0.2328 +vn -0.9708 0.1878 -0.1491 +vn -0.0469 -0.2258 0.9731 +vn -0.0509 -0.2190 0.9744 +vn 0.0476 -0.1888 0.9809 +vn 0.1566 -0.1298 0.9791 +vn 0.0354 -0.2275 0.9731 +vn -0.3463 -0.4544 0.8207 +vn -0.6153 -0.5396 0.5747 +vn -0.6581 -0.5291 0.5357 +vn -0.7630 0.2148 -0.6097 +vn -0.7630 0.2149 -0.6097 +vn -0.8359 0.2961 -0.4621 +vn -0.8876 0.3840 -0.2545 +vn -0.8304 0.5064 0.2324 +vn -0.3898 0.4614 0.7970 +vn 0.0122 0.3081 0.9513 +vn 0.2046 0.2158 0.9548 +vn 0.4076 0.1059 0.9070 +vn 0.4495 0.0824 0.8895 +vn 0.5783 0.0088 0.8157 +vn 0.5916 0.0012 0.8062 +vn 0.7235 -0.0740 0.6864 +vn 0.7186 -0.0711 0.6918 +vn 0.9170 -0.2022 0.3439 +vn 0.8682 -0.1637 0.4684 +vn 0.6407 -0.3025 -0.7057 +vn 0.9523 -0.2905 -0.0934 +vn -0.0923 -0.1259 -0.9877 +vn 0.2221 -0.2179 -0.9503 +vn -0.3944 -0.0132 -0.9188 +vn -0.3281 -0.0412 -0.9438 +vn -0.5543 0.0660 -0.8297 +vn -0.5391 0.0574 -0.8403 +vn -0.6162 0.1018 -0.7810 +vn -0.6161 0.1018 -0.7811 +vn -0.9430 0.3053 -0.1322 +vn -0.8626 0.4890 0.1294 +vn -0.9710 0.1098 0.2125 +vn -0.9548 0.0181 -0.2967 +vn -0.9537 0.0923 0.2863 +vn -0.9921 -0.1034 -0.0708 +vn -0.7723 -0.0145 -0.6351 +vn -0.9374 0.0331 -0.3467 +vn -0.9326 -0.0910 -0.3494 +vn -0.7971 -0.1357 -0.5883 +vn -0.8649 0.0830 -0.4951 +vn -0.8050 -0.0782 -0.5881 +vn -0.7173 -0.2481 -0.6511 +vn -0.8753 -0.0675 -0.4788 +vn -0.7838 0.0398 -0.6197 +vn -0.7060 -0.1530 -0.6915 +vn -0.7416 -0.1564 -0.6523 +vn -0.6252 -0.2206 -0.7487 +vn -0.7174 -0.0881 -0.6910 +vn -0.6821 0.0225 -0.7309 +vn 0.3315 0.6249 -0.7069 +vn -0.0301 0.4540 -0.8905 +vn 0.5017 0.5249 -0.6876 +vn 0.9330 0.3575 0.0409 +vn 0.9390 0.2268 -0.2586 +vn 0.7488 0.0392 -0.6616 +vn 0.7261 0.4036 0.5567 +vn 0.8068 0.4705 -0.3574 +vn 0.7442 0.3311 0.5801 +vn 0.4075 0.5727 -0.7113 +vn 0.2880 0.9344 -0.2097 +vn 0.6333 0.7364 -0.2381 +vn 0.5331 0.6151 0.5809 +vn 0.3667 0.8960 0.2502 +vn 0.6428 0.7400 0.1981 +vn 0.5984 0.3406 0.7252 +vn 0.6097 0.5376 0.5825 +vn 0.7451 0.4313 0.5087 +vn 0.3809 0.5582 0.7371 +vn 0.3529 0.6597 0.6635 +vn -0.4114 0.1483 -0.8993 +vn -0.4109 0.1467 -0.8998 +vn -0.4425 0.1424 -0.8854 +vn -0.4514 0.1384 -0.8815 +vn -0.4760 0.1190 -0.8714 +vn -0.4755 0.1182 -0.8717 +vn -0.5327 0.0829 -0.8422 +vn -0.5152 0.0919 -0.8521 +vn -0.5155 0.0928 -0.8518 +vn -0.5342 0.0826 -0.8413 +vn -0.5462 0.0651 -0.8351 +vn -0.5457 0.0647 -0.8355 +vn -0.5700 0.0353 -0.8209 +vn -0.5694 0.0351 -0.8213 +vn -0.5826 0.0193 -0.8126 +vn -0.5811 0.0220 -0.8135 +vn -0.5876 0.0038 -0.8091 +vn -0.5872 0.0037 -0.8094 +vn -0.5969 -0.0229 -0.8020 +vn -0.5966 -0.0229 -0.8022 +vn -0.6023 -0.0408 -0.7972 +vn -0.6023 -0.0391 -0.7973 +vn -0.6026 -0.0580 -0.7959 +vn -0.6023 -0.0581 -0.7961 +vn -0.6022 -0.0825 -0.7941 +vn -0.6019 -0.0824 -0.7943 +vn -0.6013 -0.0989 -0.7928 +vn -0.6014 -0.1000 -0.7927 +vn -0.5956 -0.1157 -0.7949 +vn -0.5953 -0.1157 -0.7951 +vn -0.5793 -0.1589 -0.7995 +vn -0.5847 -0.1434 -0.7985 +vn -0.5850 -0.1435 -0.7983 +vn -0.5806 -0.1565 -0.7990 +vn -0.5692 -0.1701 -0.8044 +vn -0.5688 -0.1699 -0.8048 +vn -0.5427 -0.2011 -0.8155 +vn -0.5432 -0.2014 -0.8151 +vn -0.5332 -0.2154 -0.8181 +vn -0.5349 -0.2138 -0.8174 +vn -0.5186 -0.2228 -0.8255 +vn -0.5180 -0.2222 -0.8260 +vn 0.4096 0.0717 0.9095 +vn 0.4095 0.0716 0.9095 +vn 0.4868 0.8261 0.2839 +vn 0.2355 0.9607 0.1467 +vn 0.2974 0.9359 0.1886 +vn 0.3707 0.9005 0.2271 +vn 0.6609 0.6501 0.3748 +vn 0.5933 0.7300 0.3391 +vn 0.7479 0.5149 0.4191 +vn 0.7266 0.5517 0.4095 +vn 0.8011 0.3975 0.4476 +vn 0.7908 0.4239 0.4415 +vn 0.8304 0.3125 0.4614 +vn 0.8338 0.2984 0.4645 +vn 0.8535 0.2161 0.4742 +vn 0.8532 0.2219 0.4720 +vn 0.8665 0.1380 0.4798 +vn 0.8667 0.1359 0.4800 +vn 0.8745 0.0546 0.4820 +vn 0.8743 0.0577 0.4820 +vn 0.8757 -0.0268 0.4822 +vn 0.8758 -0.0185 0.4823 +vn 0.8704 -0.1243 0.4764 +vn 0.8721 -0.1104 0.4768 +vn 0.8544 -0.2298 0.4660 +vn 0.8594 -0.2045 0.4687 +vn 0.8147 -0.3769 0.4406 +vn 0.8305 -0.3293 0.4492 +vn 0.7357 -0.5505 0.3946 +vn 0.7710 -0.4845 0.4134 +vn 0.5394 -0.7935 0.2817 +vn 0.6574 -0.6679 0.3488 +vn 0.2238 -0.9680 0.1135 +vn 0.4061 -0.8897 0.2087 +vn 0.1355 -0.9886 0.0654 +vn 0.0596 -0.9981 0.0145 +vn -0.3370 -0.2991 -0.8927 +vn -0.3126 -0.2939 -0.9033 +vn -0.3123 -0.2949 -0.9031 +vn -0.3528 -0.2980 -0.8870 +vn -0.3815 -0.2852 -0.8793 +vn -0.3824 -0.2830 -0.8796 +vn -0.2031 0.6598 -0.7235 +vn -0.1243 0.6805 -0.7221 +vn -0.1774 0.6536 -0.7358 +vn 0.0726 0.7370 -0.6720 +vn 0.2121 0.7604 -0.6138 +vn 0.4336 0.7437 -0.5088 +vn 0.5512 0.7082 -0.4411 +vn 0.6481 0.6581 -0.3832 +vn 0.8419 0.5099 -0.1768 +vn 0.7660 0.5916 -0.2517 +vn 0.9179 0.3843 -0.0988 +vn 0.8909 0.4351 -0.1306 +vn 0.9685 0.2484 -0.0158 +vn 0.9575 0.2864 -0.0341 +vn 0.9877 0.1525 -0.0339 +vn 0.9860 0.1629 -0.0355 +vn 0.9994 0.0338 0.0045 +vn 0.9995 0.0257 0.0176 +vn 0.9923 -0.1139 -0.0497 +vn 0.9946 -0.0871 -0.0556 +vn 0.9754 -0.2117 -0.0612 +vn 0.9597 -0.2700 -0.0781 +vn 0.8761 -0.4378 -0.2021 +vn 0.9167 -0.3662 -0.1600 +vn 0.8116 -0.5224 -0.2617 +vn 0.6875 -0.6316 -0.3584 +vn 0.5860 -0.6895 -0.4257 +vn 0.4157 -0.7464 -0.5196 +vn 0.2775 -0.7663 -0.5795 +vn 0.0640 -0.7576 -0.6496 +vn -0.0732 -0.7279 -0.6818 +vn -0.2116 -0.6825 -0.6996 +vn -0.2597 -0.6582 -0.7067 +vn -0.2792 -0.6610 -0.6965 +vn -0.3743 0.0948 -0.9224 +vn -0.3595 0.0984 -0.9279 +vn -0.3744 0.0953 -0.9224 +vn -0.3480 0.1000 -0.9322 +vn -0.2889 0.0961 -0.9525 +vn -0.3127 0.0973 -0.9449 +vn -0.2538 0.0939 -0.9627 +vn -0.2400 0.0913 -0.9665 +vn -0.1909 0.0694 -0.9792 +vn -0.2143 0.0789 -0.9736 +vn -0.1543 0.0552 -0.9865 +vn -0.1402 0.0458 -0.9891 +vn -0.1125 0.0082 -0.9936 +vn -0.1216 0.0189 -0.9924 +vn -0.0884 -0.0221 -0.9958 +vn -0.0866 -0.0259 -0.9959 +vn -0.0900 -0.0661 -0.9937 +vn -0.0908 -0.0698 -0.9934 +vn -0.0966 -0.1148 -0.9887 +vn -0.0921 -0.1068 -0.9900 +vn -0.1221 -0.1413 -0.9824 +vn -0.1360 -0.1555 -0.9784 +vn -0.1715 -0.1886 -0.9670 +vn -0.1555 -0.1789 -0.9715 +vn -0.2046 -0.2011 -0.9580 +vn -0.2268 -0.2096 -0.9511 +vn -0.2730 -0.2258 -0.9351 +vn -0.2550 -0.2224 -0.9410 +vn -0.3102 -0.2285 -0.9228 +vn -0.3269 -0.2292 -0.9169 +vn -0.3689 -0.2307 -0.9004 +vn -0.3609 -0.2318 -0.9033 +vn -0.3841 -0.2281 -0.8947 +vn -0.3840 -0.2275 -0.8949 +vn -0.3062 -0.9338 -0.1850 +vn -0.4787 -0.8360 -0.2681 +vn -0.2212 -0.9667 -0.1288 +vn -0.3107 -0.9337 -0.1781 +vn -0.6713 -0.6382 -0.3769 +vn -0.6165 -0.7062 -0.3481 +vn -0.7467 -0.5230 -0.4110 +vn -0.7158 -0.5759 -0.3948 +vn -0.8024 -0.3989 -0.4439 +vn -0.7957 -0.4139 -0.4422 +vn -0.8351 -0.3025 -0.4595 +vn -0.8295 -0.3209 -0.4572 +vn -0.8565 -0.2104 -0.4712 +vn -0.8551 -0.2178 -0.4705 +vn -0.8690 -0.1375 -0.4753 +vn -0.8686 -0.1401 -0.4752 +vn -0.8772 -0.0585 -0.4765 +vn -0.8750 -0.0564 -0.4809 +vn -0.8770 0.0313 -0.4795 +vn -0.8797 0.0217 -0.4751 +vn -0.8753 0.1050 -0.4720 +vn -0.8716 0.1181 -0.4758 +vn -0.8530 0.2415 -0.4626 +vn -0.8619 0.2100 -0.4615 +vn -0.8347 0.3245 -0.4449 +vn -0.8206 0.3605 -0.4435 +vn -0.7192 0.5796 -0.3831 +vn -0.7731 0.4873 -0.4060 +vn -0.6577 0.6728 -0.3386 +vn -0.5756 0.7600 -0.3018 +vn -0.2314 0.9679 -0.0985 +vn -0.3903 0.9022 -0.1834 +vn -0.1385 0.9893 -0.0448 +vn -0.1376 0.9895 -0.0443 +vn -0.1612 -0.2852 -0.9448 +vn -0.1628 -0.2843 -0.9448 +vn -0.1997 -0.2999 -0.9328 +vn -0.1716 -0.2954 -0.9398 +vn -0.2284 -0.2952 -0.9277 +vn -0.2303 -0.2936 -0.9278 +vn 0.0036 -0.2154 -0.9765 +vn 0.0023 -0.2151 -0.9766 +vn -0.0344 -0.2487 -0.9680 +vn -0.0026 -0.2308 -0.9730 +vn -0.0679 -0.2548 -0.9646 +vn -0.0698 -0.2541 -0.9647 +vn 0.1018 -0.0902 -0.9907 +vn 0.1025 -0.0903 -0.9906 +vn 0.1027 -0.1186 -0.9876 +vn 0.0925 -0.1381 -0.9861 +vn 0.0610 -0.1628 -0.9848 +vn 0.0596 -0.1627 -0.9849 +vn 0.0805 0.0408 -0.9959 +vn 0.0817 0.0410 -0.9958 +vn 0.1133 0.0014 -0.9936 +vn 0.1110 0.0104 -0.9938 +vn 0.1086 -0.0348 -0.9935 +vn 0.1077 -0.0349 -0.9936 +vn -0.0407 0.1353 -0.9900 +vn -0.0387 0.1361 -0.9899 +vn 0.0302 0.1103 -0.9934 +vn 0.0004 0.1289 -0.9917 +vn 0.0369 0.0907 -0.9952 +vn 0.0357 0.0904 -0.9953 +vn -0.2062 0.1748 -0.9628 +vn -0.2068 0.1740 -0.9628 +vn -0.1746 0.1820 -0.9677 +vn -0.1344 0.1773 -0.9749 +vn -0.1219 0.1639 -0.9789 +vn -0.1235 0.1629 -0.9789 +vn -0.3765 0.1572 -0.9130 +vn -0.3753 0.1599 -0.9130 +vn -0.3116 0.1802 -0.9330 +vn -0.3404 0.1757 -0.9237 +vn -0.2859 0.1748 -0.9422 +vn -0.2871 0.1731 -0.9421 +vn 0.1456 -0.9874 0.0618 +vn 0.0478 -0.9987 0.0197 +vn 0.2135 -0.9715 0.1028 +vn 0.4480 -0.8631 0.2331 +vn 0.5401 -0.7894 0.2919 +vn 0.6452 -0.6785 0.3512 +vn 0.7395 -0.5414 0.4000 +vn 0.7772 -0.4665 0.4222 +vn 0.8096 -0.3831 0.4448 +vn 0.8293 -0.3257 0.4541 +vn 0.8536 -0.2297 0.4676 +vn 0.8587 -0.2019 0.4710 +vn 0.8693 -0.1228 0.4788 +vn 0.8711 -0.1048 0.4797 +vn 0.8763 -0.0271 0.4811 +vn 0.8737 -0.0181 0.4861 +vn 0.8723 0.0584 0.4854 +vn 0.8751 0.0544 0.4809 +vn 0.8671 0.1369 0.4790 +vn 0.8649 0.1344 0.4836 +vn 0.8531 0.2126 0.4765 +vn 0.8545 0.2156 0.4726 +vn 0.8297 0.3144 0.4613 +vn 0.8337 0.2951 0.4667 +vn 0.8012 0.3957 0.4490 +vn 0.7902 0.4219 0.4445 +vn 0.7523 0.5042 0.4241 +vn 0.7222 0.5581 0.4086 +vn 0.6521 0.6584 0.3758 +vn 0.5942 0.7293 0.3392 +vn 0.3589 0.9064 0.2227 +vn 0.5307 0.7872 0.3141 +vn 0.3096 0.9305 0.1958 +vn 0.2881 0.9391 0.1873 +vn -0.4419 0.0789 -0.8936 +vn -0.4248 0.0833 -0.9014 +vn -0.4246 0.0840 -0.9015 +vn -0.4396 0.0804 -0.8946 +vn -0.4772 0.0603 -0.8767 +vn -0.4759 0.0607 -0.8774 +vn -0.5046 0.0440 -0.8622 +vn -0.5062 0.0431 -0.8613 +vn -0.5280 0.0196 -0.8490 +vn -0.5245 0.0230 -0.8511 +vn -0.5447 0.0006 -0.8386 +vn -0.5461 -0.0011 -0.8377 +vn -0.5562 -0.0260 -0.8307 +vn -0.5546 -0.0224 -0.8318 +vn -0.5640 -0.0466 -0.8245 +vn -0.5643 -0.0475 -0.8242 +vn -0.5644 -0.0707 -0.8225 +vn -0.5642 -0.0702 -0.8226 +vn -0.5637 -0.0943 -0.8206 +vn -0.5639 -0.0938 -0.8205 +vn -0.5560 -0.1138 -0.8234 +vn -0.5548 -0.1167 -0.8237 +vn -0.5455 -0.1383 -0.8266 +vn -0.5443 -0.1405 -0.8270 +vn -0.5253 -0.1610 -0.8356 +vn -0.5283 -0.1578 -0.8343 +vn -0.5051 -0.1817 -0.8438 +vn -0.5076 -0.1796 -0.8426 +vn -0.4766 -0.1978 -0.8566 +vn -0.4790 -0.1964 -0.8555 +vn -0.4461 -0.2137 -0.8691 +vn -0.4287 -0.2184 -0.8766 +vn -0.4285 -0.2179 -0.8769 +vn -0.4899 0.4551 -0.7436 +vn -0.3614 0.5697 -0.7381 +vn -0.3896 0.5352 -0.7495 +vn -0.4529 0.4811 -0.7506 +vn -0.5958 0.3519 -0.7220 +vn -0.5683 0.3844 -0.7276 +vn -0.6571 0.2605 -0.7074 +vn -0.6494 0.2636 -0.7133 +vn -0.6933 0.1905 -0.6950 +vn -0.7010 0.1833 -0.6892 +vn -0.7249 0.1096 -0.6801 +vn -0.7210 0.1100 -0.6842 +vn -0.7386 0.0504 -0.6723 +vn -0.7428 0.0502 -0.6676 +vn -0.7458 -0.0110 -0.6661 +vn -0.7413 -0.0115 -0.6710 +vn -0.7488 -0.0681 -0.6593 +vn -0.7490 -0.0686 -0.6590 +vn -0.7418 -0.1190 -0.6600 +vn -0.7377 -0.1189 -0.6646 +vn -0.7324 -0.1734 -0.6584 +vn -0.7350 -0.1713 -0.6560 +vn -0.7147 -0.2328 -0.6595 +vn -0.7152 -0.2321 -0.6592 +vn -0.6847 -0.2971 -0.6656 +vn -0.6871 -0.2942 -0.6644 +vn -0.6421 -0.3682 -0.6724 +vn -0.6466 -0.3628 -0.6710 +vn -0.5743 -0.4487 -0.6847 +vn -0.5900 -0.4308 -0.6829 +vn -0.4756 -0.5312 -0.7012 +vn -0.4977 -0.5177 -0.6958 +vn -0.4231 -0.5712 -0.7034 +vn -0.4110 -0.5860 -0.6983 +vn -0.4561 -0.2657 -0.8493 +vn -0.4757 -0.2492 -0.8435 +vn -0.4762 -0.2500 -0.8431 +vn -0.4530 -0.2669 -0.8506 +vn -0.4273 -0.2715 -0.8624 +vn -0.4268 -0.2701 -0.8630 +vn -0.0601 0.9981 -0.0147 +vn -0.1570 0.9853 -0.0671 +vn -0.1314 0.9904 -0.0439 +vn -0.4112 0.8877 -0.2070 +vn -0.5448 0.7894 -0.2828 +vn -0.6599 0.6656 -0.3485 +vn -0.7312 0.5591 -0.3910 +vn -0.7737 0.4785 -0.4152 +vn -0.8133 0.3819 -0.4390 +vn -0.8325 0.3221 -0.4507 +vn -0.8599 0.2050 -0.4676 +vn -0.8547 0.2360 -0.4624 +vn -0.8716 0.1259 -0.4737 +vn -0.8728 0.1049 -0.4767 +vn -0.8777 0.0214 -0.4787 +vn -0.8776 0.0316 -0.4783 +vn -0.8754 -0.0597 -0.4798 +vn -0.8755 -0.0569 -0.4798 +vn -0.8687 -0.1342 -0.4768 +vn -0.8683 -0.1369 -0.4767 +vn -0.8555 -0.2141 -0.4714 +vn -0.8528 -0.2253 -0.4712 +vn -0.8351 -0.2978 -0.4625 +vn -0.8301 -0.3148 -0.4603 +vn -0.8033 -0.3940 -0.4466 +vn -0.7887 -0.4284 -0.4409 +vn -0.7501 -0.5105 -0.4203 +vn -0.7233 -0.5578 -0.4071 +vn -0.6625 -0.6489 -0.3742 +vn -0.5966 -0.7273 -0.3392 +vn -0.4930 -0.8227 -0.2831 +vn -0.3191 -0.9283 -0.1911 +vn -0.2951 -0.9403 -0.1697 +vn -0.2350 -0.9609 -0.1465 +vn 0.4097 0.0716 0.9094 +vn 0.8700 0.4533 0.1939 +vn 0.8056 0.3650 0.4666 +vn 0.8700 0.4535 0.1934 +vn 0.8363 0.3998 0.3752 +vn 0.6709 0.2509 0.6978 +vn 0.6732 0.2525 0.6950 +vn 0.5501 0.1751 0.8165 +vn 0.5337 0.1661 0.8292 +vn 0.3904 0.0957 0.9156 +vn 0.3287 0.0681 0.9420 +vn 0.0349 -0.0494 0.9982 +vn -0.2813 -0.1644 0.9454 +vn -0.7625 -0.3127 0.5664 +vn -0.9358 -0.3398 0.0935 +vn -0.8683 -0.2735 -0.4137 +vn -0.8477 -0.2612 -0.4617 +vn -0.7025 -0.1809 -0.6884 +vn -0.7061 -0.1829 -0.6841 +vn -0.5740 -0.1077 -0.8118 +vn -0.5874 -0.1155 -0.8010 +vn -0.4042 -0.0059 -0.9147 +vn -0.4421 -0.0286 -0.8965 +vn 0.0686 0.2585 -0.9636 +vn -0.1417 0.1474 -0.9789 +vn 0.2715 0.3534 -0.8952 +vn 0.2720 0.3536 -0.8950 +vn 0.7067 0.0115 0.7074 +vn 0.6977 -0.0314 0.7157 +vn 0.7307 0.0099 0.6827 +vn 0.7222 -0.0399 0.6905 +vn 0.6648 -0.1248 0.7365 +vn 0.6901 -0.1464 0.7088 +vn 0.5921 -0.2377 0.7701 +vn 0.7551 -0.0506 0.6537 +vn 0.6145 -0.2801 0.7375 +vn 0.4443 -0.4577 0.7701 +vn 0.4391 -0.3791 0.8145 +vn 0.7221 -0.1759 0.6691 +vn 0.6368 -0.3429 0.6906 +vn 0.7632 0.0069 0.6461 +vn 0.0890 -0.6461 0.7581 +vn 0.4209 -0.5788 0.6985 +vn 0.1292 -0.5313 0.8373 +vn 0.7535 -0.2018 0.6258 +vn 0.6587 -0.4033 0.6351 +vn 0.7866 -0.0583 0.6147 +vn 0.3911 -0.6963 0.6018 +vn -0.0362 -0.7971 0.6027 +vn -0.1440 -0.8977 0.4163 +vn 0.7938 0.0044 0.6081 +vn 0.8214 -0.0726 0.5657 +vn 0.7891 -0.2389 0.5660 +vn 0.8268 -0.0010 0.5626 +vn 0.6809 -0.4872 0.5468 +vn -0.2370 -0.9560 0.1730 +vn 0.3434 -0.8320 0.4357 +vn 0.8589 -0.0084 0.5121 +vn 0.8548 -0.0877 0.5115 +vn 0.8221 -0.2775 0.4972 +vn 0.6950 -0.5699 0.4384 +vn 0.2903 -0.9256 0.2427 +vn 0.8791 -0.0136 0.4764 +vn 0.8757 -0.0976 0.4728 +vn 0.8416 -0.3008 0.4486 +vn -0.3121 -0.9478 -0.0659 +vn 0.7005 -0.6149 0.3622 +vn 0.2545 -0.9604 0.1130 +vn 0.8935 -0.0176 0.4487 +vn 0.8898 -0.1052 0.4441 +vn 0.8536 -0.3190 0.4118 +vn 0.6988 -0.6477 0.3035 +vn -0.3586 -0.9088 -0.2131 +vn 0.2275 -0.9733 0.0291 +vn 0.9095 -0.0053 0.4156 +vn 0.9075 -0.0975 0.4086 +vn 0.8732 -0.3243 0.3638 +vn 0.7032 -0.6765 0.2188 +vn -0.3767 -0.8826 -0.2813 +vn 0.1969 -0.9766 -0.0866 +vn 0.9266 -0.0845 0.3664 +vn 0.8943 -0.3233 0.3092 +vn 0.7096 -0.6926 0.1296 +vn 0.1628 -0.9644 -0.2085 +vn 0.9261 0.0129 0.3771 +vn -0.4002 -0.8389 -0.3689 +vn -0.4281 -0.7792 -0.4577 +vn 0.9036 -0.3065 0.2992 +vn 0.7231 -0.6807 0.1174 +vn 0.9327 -0.0669 0.3544 +vn 0.1534 -0.9571 -0.2457 +vn -0.4435 -0.7512 -0.4888 +vn 0.9308 0.0293 0.3645 +vn -0.6916 -0.5804 -0.4299 +vn 0.9925 -0.1183 0.0307 +vn 0.8957 -0.4273 -0.1228 +vn 0.9962 0.0250 0.0838 +vn 0.0886 -0.8731 -0.4795 +vn -0.6877 -0.4961 -0.5301 +vn -0.4296 -0.6766 -0.5981 +vn 0.5941 -0.7377 -0.3208 +vn -0.6908 -0.4738 -0.5462 +vn 0.9662 -0.0850 -0.2434 +vn 0.8559 -0.3461 -0.3842 +vn 0.4801 -0.6074 -0.6329 +vn -0.6545 -0.4292 -0.6224 +vn -0.0915 -0.6316 -0.7699 +vn 0.9785 0.0093 -0.2058 +vn -0.4499 -0.4818 -0.7520 +vn -0.6899 -0.5403 -0.4818 +vn -0.6105 -0.3380 -0.7163 +vn -0.7380 -0.2622 -0.6217 +vn -0.6839 -0.2211 -0.6952 +vn -0.7789 -0.2862 -0.5580 +vn -0.7723 -0.1320 -0.6214 +vn -0.7802 -0.3029 -0.5473 +vn -0.7911 -0.3320 -0.5138 +vn -0.7162 -0.1190 -0.6877 +vn -0.8144 -0.1442 -0.5621 +vn -0.8179 -0.1591 -0.5529 +vn -0.3844 -0.6803 0.6240 +vn -0.7803 -0.0103 -0.6254 +vn -0.8246 -0.0148 -0.5655 +vn -0.8316 -0.1797 -0.5256 +vn -0.7223 -0.0200 -0.6913 +vn -0.5581 -0.7555 0.3430 +vn -0.8133 0.1236 -0.5686 +vn -0.7642 0.1212 -0.6335 +vn -0.8304 -0.0300 -0.5564 +vn -0.8224 0.1074 -0.5587 +vn -0.6865 -0.7171 -0.1200 +vn -0.8462 -0.0455 -0.5309 +vn -0.7038 0.0848 -0.7053 +vn -0.7683 0.2953 -0.5680 +vn -0.7124 0.2818 -0.6427 +vn -0.7826 0.2796 -0.5562 +vn -0.8411 0.0965 -0.5322 +vn -0.6978 -0.6506 -0.2996 +vn -0.8048 0.2770 -0.5250 +vn -0.6528 0.2032 -0.7298 +vn -0.6453 0.5337 -0.5465 +vn -0.5895 0.4910 -0.6415 +vn -0.6633 0.5280 -0.5303 +vn -0.6824 0.5467 -0.4852 +vn -0.8275 0.2828 -0.4851 +vn -0.6959 -0.6022 -0.3912 +vn -0.6978 0.5781 -0.4229 +vn -0.5533 0.3385 -0.7611 +vn -0.3291 0.8357 -0.4397 +vn -0.3280 0.8523 -0.4075 +vn -0.3289 0.7312 -0.5977 +vn -0.3109 0.8932 -0.3249 +vn -0.2846 0.9342 -0.2153 +vn -0.3794 0.4868 -0.7868 +vn 0.2101 0.9628 -0.1701 +vn 0.0716 0.8702 -0.4875 +vn 0.2384 0.9635 -0.1216 +vn 0.2840 0.9587 -0.0142 +vn 0.3272 0.9388 0.1079 +vn -0.0892 0.6240 -0.7763 +vn 0.6418 0.7578 0.1175 +vn 0.3338 0.6717 -0.6614 +vn 0.6655 0.7288 0.1612 +vn 0.4678 0.8161 -0.3394 +vn 0.6879 0.6830 0.2456 +vn 0.6988 0.6358 0.3278 +vn 0.7106 0.5427 -0.4478 +vn 0.8262 0.4926 0.2734 +vn 0.8343 0.4624 0.3002 +vn 0.7653 0.6233 -0.1610 +vn -0.7008 0.6106 -0.3689 +vn 0.8331 0.4210 0.3588 +vn 0.8260 0.3865 0.4103 +vn 0.3569 0.9113 0.2056 +vn 0.9007 0.3311 -0.2812 +vn 0.8956 0.2865 0.3404 +vn 0.6965 0.6043 0.3869 +vn 0.8967 0.2616 0.3570 +vn 0.9264 0.3765 -0.0030 +vn -0.8020 -0.3592 -0.4772 +vn 0.8730 0.2090 0.4407 +vn 0.8852 0.2310 0.4038 +vn 0.8135 0.3710 0.4480 +vn -0.8461 -0.1985 -0.4948 +vn 0.9416 0.2498 -0.2259 +vn 0.9124 0.1961 0.3592 +vn 0.9117 0.1722 0.3730 +vn 0.9688 0.2427 0.0512 +vn 0.8589 0.2031 0.4701 +vn 0.8837 0.1322 0.4491 +vn -0.8403 0.2986 -0.4524 +vn -0.8633 -0.0581 -0.5014 +vn 0.8971 0.1485 0.4162 +vn -0.2579 0.9583 -0.1229 +vn 0.8703 0.1285 0.4754 +vn -0.8612 0.0906 -0.5002 +vn 0.8498 0.1258 0.5119 +vn 0.8385 0.1969 0.5081 +vn 0.7942 0.3544 0.4936 +vn 0.6853 0.5710 0.4520 +vn 0.8195 0.1219 0.5599 +vn 0.8085 0.1854 0.5585 +vn 0.7670 0.3260 0.5526 +vn 0.3789 0.8689 0.3185 +vn -0.3392 -0.5791 0.7413 +vn 0.6710 0.5121 0.5362 +vn 0.7879 0.1151 0.6049 +vn 0.7776 0.1744 0.6041 +vn -0.6438 -0.7570 0.1113 +vn 0.7384 0.3004 0.6038 +vn 0.4194 0.7774 0.4688 +vn -0.2020 0.9784 0.0449 +vn 0.6509 0.4620 0.6023 +vn -0.6882 0.6868 -0.2339 +vn 0.7480 0.1585 0.6445 +vn 0.7107 0.2683 0.6503 +vn 0.6323 0.4011 0.6628 +vn 0.4361 0.6904 0.5772 +vn 0.7581 0.1061 0.6435 +vn -0.1268 0.9600 0.2498 +vn 0.4591 0.5783 0.6744 +vn 0.6840 0.2400 0.6889 +vn 0.6144 0.3505 0.7069 +vn 0.7180 0.1445 0.6809 +vn 0.4717 0.4888 0.7339 +vn -0.6646 0.7446 -0.0625 +vn -0.8623 0.3407 -0.3746 +vn -0.8743 0.0967 -0.4756 +vn 0.7273 0.0990 0.6791 +vn -0.0463 0.8940 0.4457 +vn 0.6972 0.1343 0.7042 +vn 0.7059 0.0942 0.7020 +vn 0.1669 0.6443 0.7463 +vn 0.6658 0.2204 0.7128 +vn 0.6000 0.3184 0.7339 +vn 0.0712 0.7703 0.6337 +vn 0.4663 0.4352 0.7702 +vn -0.5934 0.7824 0.1892 +vn 0.1912 0.5580 0.8075 +vn -0.8848 0.3844 -0.2635 +vn -0.3246 0.6796 0.6579 +vn -0.4858 0.7567 0.4375 +vn -0.2792 0.5848 0.7616 +vn -0.7403 0.4910 0.4592 +vn -0.7118 0.4035 0.5749 +vn -0.8914 0.4479 -0.0690 +vn -0.8626 0.4806 0.1582 +vn -0.8951 0.1554 0.4179 +vn -0.9390 0.2135 0.2698 +vn -0.9662 0.1628 -0.1997 +vn -0.9829 0.1825 -0.0236 +vn -0.9320 0.1324 -0.3374 +vn -0.9273 -0.0537 0.3704 +vn -0.8999 0.1136 -0.4210 +vn -0.9950 -0.0520 -0.0848 +vn -0.9702 -0.0480 -0.2375 +vn -0.9808 -0.0474 0.1891 +vn -0.9331 -0.0532 -0.3556 +vn -0.8999 -0.0548 -0.4326 +vn -0.8793 -0.2431 0.4096 +vn -0.9622 -0.2670 -0.0544 +vn -0.9460 -0.2428 -0.2150 +vn -0.9257 -0.2903 0.2425 +vn -0.9128 -0.2265 -0.3398 +vn -0.8756 -0.0576 -0.4796 +vn -0.8803 -0.2115 -0.4247 +vn -0.7127 -0.4418 0.5449 +vn -0.8563 -0.5101 0.0804 +vn -0.8732 -0.4731 -0.1171 +vn -0.7453 -0.5230 0.4136 +vn -0.8572 -0.4328 -0.2790 +vn -0.8576 -0.2028 -0.4727 +vn -0.8314 -0.3940 -0.3919 +vn -0.8123 -0.3699 -0.4510 +vn -0.9158 -0.1557 0.3702 +vn -0.9736 -0.1560 0.1667 +vn -0.8806 -0.2292 0.4148 +vn -0.9307 -0.2752 0.2411 +vn -0.9637 -0.2631 -0.0451 +vn -0.9847 -0.1485 -0.0912 +vn -0.7346 -0.4180 0.5345 +vn -0.9485 -0.2400 -0.2066 +vn -0.7720 -0.4997 0.3928 +vn -0.9612 -0.1397 -0.2380 +vn -0.9246 -0.1330 -0.3571 +vn -0.8758 -0.4699 -0.1101 +vn -0.8603 -0.5026 0.0857 +vn -0.9135 -0.2233 -0.3401 +vn -0.8900 -0.1284 -0.4376 +vn -0.4059 -0.5635 0.7195 +vn -0.4410 -0.6691 0.5982 +vn -0.8790 -0.2081 -0.4290 +vn -0.6494 -0.7519 0.1136 +vn -0.8674 -0.1257 -0.4814 +vn -0.8590 -0.4284 -0.2805 +vn -0.5711 -0.7473 0.3398 +vn -0.8563 -0.1996 -0.4763 +vn -0.8314 -0.3889 -0.3968 +vn 0.0231 -0.6649 0.7465 +vn -0.8544 -0.1242 -0.5045 +vn -0.1557 -0.8974 0.4128 +vn -0.6922 -0.7109 -0.1248 +vn -0.0576 -0.8003 0.5968 +vn 0.0462 -0.5516 0.8328 +vn -0.8121 -0.3655 -0.4549 +vn -0.7016 -0.6435 -0.3061 +vn 0.4064 -0.4870 0.7731 +vn 0.3820 -0.7041 0.5986 +vn 0.4074 -0.5903 0.6968 +vn -0.2493 -0.9542 0.1654 +vn 0.3331 -0.8384 0.4314 +vn 0.3899 -0.4126 0.8233 +vn 0.5993 -0.3008 0.7419 +vn 0.6326 -0.3520 0.6899 +vn 0.6772 -0.4926 0.5466 +vn 0.6563 -0.4104 0.6331 +vn 0.5717 -0.2638 0.7769 +vn 0.6849 -0.1587 0.7111 +vn 0.7219 -0.1819 0.6676 +vn 0.6906 -0.5741 0.4398 +vn 0.7877 -0.2421 0.5666 +vn 0.7539 -0.2065 0.6237 +vn 0.8196 -0.2798 0.5000 +vn 0.6586 -0.1409 0.7392 +vn 0.7215 -0.0460 0.6909 +vn 0.7565 -0.0540 0.6518 +vn 0.8208 -0.0749 0.5663 +vn 0.8527 -0.0895 0.5146 +vn 0.7881 -0.0614 0.6124 +vn 0.6972 -0.0391 0.7158 +vn 0.7306 0.0525 0.6808 +vn 0.7633 0.0545 0.6437 +vn 0.8245 0.0578 0.5630 +vn 0.7940 0.0585 0.6051 +vn 0.8545 0.0568 0.5163 +vn 0.7078 0.0513 0.7045 +vn 0.7184 0.1474 0.6798 +vn 0.7495 0.1581 0.6429 +vn 0.8086 0.1832 0.5591 +vn 0.7796 0.1731 0.6019 +vn 0.8372 0.1940 0.5113 +vn 0.6969 0.1382 0.7037 +vn 0.7118 0.2688 0.6489 +vn 0.6819 0.2469 0.6885 +vn 0.7676 0.3234 0.5533 +vn 0.7404 0.2994 0.6018 +vn 0.7940 0.3504 0.4968 +vn 0.6616 0.2291 0.7140 +vn 0.6326 0.4026 0.6616 +vn 0.6064 0.3620 0.7080 +vn 0.6730 0.5086 0.5371 +vn 0.6532 0.4607 0.6009 +vn 0.6876 0.5652 0.4557 +vn 0.5876 0.3323 0.7378 +vn 0.4583 0.5793 0.6740 +vn 0.4378 0.4535 0.7764 +vn 0.4516 0.5040 0.7362 +vn 0.4248 0.7735 0.4704 +vn 0.3866 0.8638 0.3231 +vn 0.4406 0.6873 0.5775 +vn 0.1359 0.5717 0.8091 +vn 0.0725 0.7682 0.6361 +vn 0.1289 0.6546 0.7449 +vn 0.3659 0.9062 0.2119 +vn -0.0375 0.8920 0.4504 +vn -0.1192 0.9603 0.2521 +vn -0.1931 0.9800 0.0475 +vn -0.3404 0.5738 0.7449 +vn -0.4826 0.7553 0.4434 +vn -0.5860 0.7856 0.1985 +vn -0.3589 0.6703 0.6495 +vn -0.6592 0.7497 -0.0590 +vn -0.2481 0.9614 -0.1194 +vn -0.6835 0.6910 -0.2352 +vn -0.7332 0.3831 0.5618 +vn -0.8439 -0.1951 -0.4998 +vn -0.8610 0.4811 0.1651 +vn -0.8890 0.4544 -0.0570 +vn -0.6987 -0.5959 -0.3960 +vn -0.7529 0.4760 0.4545 +vn -0.8833 0.3893 -0.2613 +vn 0.8737 -0.0995 0.4763 +vn -0.6963 0.6148 -0.3703 +vn -0.8599 0.3431 -0.3781 +vn -0.3224 -0.9438 -0.0732 +vn -0.8946 0.1477 0.4218 +vn 0.8752 0.0551 0.4807 +vn -0.9828 0.1841 -0.0155 +vn 0.8576 0.2000 0.4738 +vn -0.9675 0.1681 -0.1889 +vn -0.9393 0.2063 0.2740 +vn 0.8133 0.3665 0.4519 +vn -0.9318 0.1358 -0.3365 +vn 0.3369 0.9344 0.1154 +vn 0.6993 0.5980 0.3917 +vn -0.8378 0.3009 -0.4556 +vn 0.2805 -0.9295 0.2393 +vn -0.2757 0.9371 -0.2140 +vn -0.8978 0.1155 -0.4249 +vn -0.9187 0.0786 0.3871 +vn -0.9969 0.0519 -0.0590 +vn -0.9751 0.0448 -0.2172 +vn -0.9719 0.0702 0.2249 +vn 0.8391 -0.3031 0.4517 +vn -0.9357 0.0338 -0.3512 +vn -0.6934 0.5808 -0.4264 +vn -0.8722 0.0986 -0.4791 +vn -0.9009 0.0224 -0.4335 +vn -0.8242 0.2839 -0.4899 +vn -0.8758 0.0152 -0.4824 +vn -0.8581 0.0918 -0.5052 +vn -0.6784 0.5525 -0.4843 +vn -0.8036 0.2818 -0.5243 +vn -0.3016 0.8976 -0.3215 +vn -0.8626 0.0133 -0.5058 +vn 0.2936 0.9559 -0.0088 +vn -0.8412 0.0996 -0.5314 +vn -0.6600 0.5351 -0.5273 +vn -0.3197 0.8572 -0.4037 +vn -0.8220 0.1100 -0.5588 +vn -0.7817 0.2852 -0.5546 +vn 0.2466 0.9618 -0.1190 +vn -0.8480 0.0229 -0.5295 +vn -0.8304 0.0351 -0.5561 +vn -0.7685 0.2986 -0.5658 +vn -0.6441 0.5374 -0.5444 +vn -0.8143 0.1262 -0.5666 +vn -0.3266 0.8372 -0.4386 +vn 0.2117 0.9622 -0.1716 +vn -0.8243 0.0519 -0.5638 +vn 0.6922 0.6770 0.2502 +vn 0.6699 0.7246 0.1619 +vn -0.7146 0.2811 -0.6405 +vn -0.5953 0.4860 -0.6398 +vn -0.7655 0.1222 -0.6317 +vn -0.3432 0.7223 -0.6004 +vn 0.0529 0.8669 -0.4957 +vn 0.6433 0.7569 0.1155 +vn -0.7807 0.0501 -0.6229 +vn -0.7038 0.0856 -0.7053 +vn -0.7190 0.0290 -0.6944 +vn -0.6533 0.2028 -0.7295 +vn -0.5559 0.3359 -0.7604 +vn 0.4550 0.8191 -0.3493 +vn -0.0985 0.6210 -0.7776 +vn -0.3860 0.4824 -0.7863 +vn 0.3274 0.6718 -0.6644 +vn 0.7021 0.6276 0.3363 +vn 0.7103 0.5421 -0.4490 +vn 0.7607 0.6267 -0.1692 +vn 0.8276 0.4915 0.2710 +vn 0.8365 0.4575 0.3016 +vn 0.9013 0.3291 -0.2818 +vn 0.9263 0.3767 -0.0076 +vn 0.8971 0.2851 0.3376 +vn -0.8011 -0.3542 -0.4824 +vn 0.8346 0.4160 0.3611 +vn 0.8973 0.2584 0.3579 +vn -0.8417 -0.1093 -0.5288 +vn 0.9680 0.1231 -0.2188 +vn 0.9891 0.1324 0.0645 +vn 0.9260 0.1112 0.3607 +vn 0.8861 0.2284 0.4034 +vn 0.8252 0.3805 0.4175 +vn 0.9224 0.0899 0.3756 +vn 0.9651 -0.0893 -0.2462 +vn 0.9919 -0.1245 0.0263 +vn 0.9333 -0.0698 0.3522 +vn 0.6961 -0.6191 0.3636 +vn 0.9066 0.0688 0.4164 +vn 0.8705 0.2052 0.4473 +vn 0.9271 -0.0881 0.3643 +vn 0.8508 -0.3522 -0.3900 +vn 0.9033 -0.3109 0.2957 +vn 0.8903 -0.4366 -0.1298 +vn 0.9076 -0.1010 0.4074 +vn 0.8880 0.0545 0.4565 +vn 0.8936 -0.3288 0.3057 +vn 0.4654 -0.6115 -0.6399 +vn 0.7180 -0.6871 0.1112 +vn 0.5801 -0.7458 -0.3276 +vn 0.8722 -0.3295 0.3615 +vn 0.8864 -0.1061 0.4505 +vn 0.7031 -0.7005 0.1223 +vn -0.1053 -0.6280 -0.7710 +vn 0.1450 -0.9574 -0.2496 +vn 0.1542 -0.9651 -0.2114 +vn 0.0669 -0.8715 -0.4857 +vn 0.6971 -0.6851 0.2115 +vn 0.8503 -0.3194 0.4183 +vn 0.1866 -0.9780 -0.0930 +vn -0.4562 -0.4777 -0.7508 +vn -0.4485 -0.7474 -0.4901 +vn -0.4343 -0.7748 -0.4595 +vn -0.4428 -0.6660 -0.6003 +vn -0.4071 -0.8347 -0.3709 +vn 0.6946 -0.6501 0.3081 +vn 0.2177 -0.9757 0.0262 +vn -0.6590 -0.4226 -0.6222 +vn -0.6929 -0.4708 -0.5461 +vn -0.6904 -0.4918 -0.5306 +vn -0.6926 -0.5367 -0.4819 +vn -0.3855 -0.8765 -0.2882 +vn -0.6133 -0.3350 -0.7153 +vn 0.2448 -0.9634 0.1095 +vn -0.7398 -0.2585 -0.6212 +vn -0.7815 -0.3006 -0.5467 +vn -0.7923 -0.3296 -0.5135 +vn -0.7801 -0.2846 -0.5572 +vn -0.6939 -0.5734 -0.4356 +vn -0.3676 -0.9038 -0.2193 +vn -0.6852 -0.2189 -0.6947 +vn -0.7734 -0.1294 -0.6206 +vn -0.8188 -0.1570 -0.5522 +vn -0.8323 -0.1775 -0.5251 +vn -0.8152 -0.1426 -0.5613 +vn -0.7167 -0.1172 -0.6875 +vn -0.7790 -0.0698 -0.6232 +vn -0.8277 -0.0909 -0.5538 +vn -0.8236 -0.0776 -0.5619 +vn -0.7242 -0.0688 -0.6861 +vn 0.3414 0.0766 0.9368 +vn 0.3417 0.0764 0.9367 +vn 0.3415 0.0764 0.9368 +vn 0.3414 0.0763 0.9368 +vn 0.3411 0.0755 0.9370 +vn 0.3412 0.0753 0.9370 +vn 0.3415 0.0765 0.9368 +vn 0.3404 0.0757 0.9372 +vn 0.3405 0.0757 0.9372 +vn 0.3410 0.0759 0.9370 +vn 0.3433 0.0758 0.9362 +vn 0.3432 0.0760 0.9362 +vn 0.3407 0.0770 0.9370 +vn 0.3396 0.0769 0.9374 +vn 0.3417 0.0769 0.9367 +vn 0.3420 0.0767 0.9366 +vn 0.3414 0.0760 0.9368 +vn 0.3421 0.0767 0.9365 +vn 0.3420 0.0764 0.9366 +vn 0.3422 0.0762 0.9365 +vn 0.3428 0.0761 0.9363 +vn 0.3427 0.0761 0.9364 +vn 0.7067 0.2084 0.6761 +vn 0.7184 0.0769 0.6913 +vn 0.6278 0.1516 0.7635 +vn 0.5552 0.3834 0.7381 +vn 0.5333 0.2447 0.8098 +vn 0.6555 0.0535 0.7533 +vn 0.2380 -0.0869 0.9674 +vn 0.2210 -0.0517 0.9739 +vn 0.7771 -0.1219 0.6174 +vn 0.1304 0.5940 0.7938 +vn 0.3070 -0.1142 0.9448 +vn 0.6821 -0.0650 0.7284 +vn -0.1124 -0.0835 0.9901 +vn 0.6802 -0.4739 0.5592 +vn 0.3594 0.3205 0.8764 +vn 0.2557 -0.0015 0.9668 +vn 0.0156 -0.2697 0.9628 +vn 0.0514 0.1026 0.9934 +vn -0.7305 0.5049 0.4598 +vn 0.4014 -0.0866 0.9118 +vn 0.0031 0.3806 0.9247 +vn 0.2616 -0.2944 0.9192 +vn 0.4310 -0.0157 0.9022 +vn -0.9954 0.0954 0.0020 +vn -0.5716 0.2136 0.7923 +vn 0.6307 -0.2279 0.7419 +vn 0.4379 -0.2306 0.8689 +vn 0.3740 0.0191 0.9272 +vn 0.5401 -0.1449 0.8290 +vn 0.3262 0.0367 0.9446 +vn -0.9691 -0.1784 -0.1702 +vn -0.7689 -0.1651 0.6177 +vn 0.2431 0.1787 0.9534 +vn 0.5919 -0.0515 0.8044 +vn 0.3021 -0.0194 0.9531 +vn -0.6418 -0.5082 0.5743 +vn 0.5987 0.0373 0.8001 +vn 0.3430 -0.0661 0.9370 +vn -0.8849 -0.4138 -0.2138 +vn 0.0080 -0.9669 0.2551 +vn -0.1155 -0.7386 0.6642 +vn -0.6782 -0.7241 -0.1257 +vn 0.5594 0.1094 0.8216 +vn 0.4117 -0.0293 0.9108 +vn 0.4494 -0.4716 0.7587 +vn 0.4868 0.1614 0.8585 +vn 0.4007 0.0289 0.9158 +vn 0.3842 0.1865 0.9042 +vn -0.3018 -0.2910 -0.9079 +vn -0.3150 -0.2034 -0.9270 +vn -0.1424 -0.2792 -0.9496 +vn -0.4102 -0.2753 -0.8695 +vn -0.4028 -0.1961 -0.8940 +vn -0.4620 -0.1675 -0.8709 +vn -0.2249 -0.1794 -0.9577 +vn -0.1596 -0.1241 -0.9793 +vn -0.4929 -0.2362 -0.8374 +vn -0.5551 -0.1871 -0.8105 +vn 0.0011 -0.2072 -0.9783 +vn -0.2990 0.0704 -0.9517 +vn -0.4954 -0.1340 -0.8583 +vn 0.1093 -0.0672 -0.9917 +vn -0.1326 -0.0655 -0.9890 +vn -0.1532 -0.0097 -0.9881 +vn -0.5131 -0.0396 -0.8574 +vn -0.5118 -0.1020 -0.8530 +vn 0.0341 0.0789 -0.9963 +vn -0.2089 0.0453 -0.9769 +vn -0.1087 0.1596 -0.9812 +vn -0.4599 0.0334 -0.8873 +vn -0.5880 -0.1304 -0.7982 +vn -0.2850 0.1695 -0.9434 +vn -0.4040 0.1492 -0.9025 +vn -0.3933 0.0644 -0.9171 +vn -0.5177 -0.0713 -0.8526 +vn -0.4968 -0.0047 -0.8679 +vn -0.5567 0.0516 -0.8291 +vn -0.5894 -0.0076 -0.8078 +vn -0.6025 -0.0696 -0.7951 +vn -0.4930 0.1041 -0.8638 +vn 0.0254 0.3759 0.9263 +vn 0.1089 0.2297 0.9672 +vn 0.2433 0.3839 0.8907 +vn -0.2692 0.2689 0.9248 +vn 0.0052 0.1542 0.9880 +vn 0.2736 0.2579 0.9266 +vn -0.0362 0.0571 0.9977 +vn -0.4084 0.0597 0.9109 +vn -0.3298 -0.1666 0.9292 +vn -0.0107 -0.0314 0.9995 +vn 0.3925 0.2433 0.8870 +vn 0.0785 -0.1063 0.9912 +vn -0.0370 -0.2801 0.9593 +vn 0.2091 -0.2844 0.9356 +vn 0.4726 -0.0643 0.8789 +vn 0.4742 0.1933 0.8590 +vn 0.4111 0.3393 0.8461 +vn 0.2450 -0.1374 0.9597 +vn 0.5332 0.1091 0.8389 +vn 0.3768 -0.1221 0.9182 +vn 0.5188 0.2828 0.8068 +vn 0.4046 -0.2254 0.8863 +vn 0.5155 0.1508 0.8435 +vn 0.5353 0.0315 0.8441 +vn 0.6290 0.1423 0.7643 +vn 0.5414 0.0709 0.8378 +vn 0.5201 -0.1595 0.8391 +vn 0.5867 0.2149 0.7808 +vn 0.5182 -0.0152 0.8551 +vn 0.6413 0.0686 0.7642 +vn 0.6320 -0.0065 0.7749 +vn 0.5908 -0.0838 0.8025 +vn -0.4028 -0.1962 -0.8940 +vn -0.1596 -0.1241 -0.9794 +vn -0.4955 -0.1341 -0.8582 +vn -0.5118 -0.1020 -0.8531 +vn -0.5881 -0.1304 -0.7982 +vn -0.3933 0.0645 -0.9171 +vn -0.2693 0.2689 0.9248 +vn -0.4083 0.0597 0.9109 +vn 0.3926 0.2432 0.8870 +vn 0.2451 -0.1374 0.9597 +vn 0.5415 0.0709 0.8377 +vn 0.5182 -0.0152 0.8552 +vn 0.3606 -0.9178 -0.1662 +vn 0.0842 -0.9961 -0.0271 +vn -0.0824 -0.9945 -0.0640 +vn 0.7030 -0.7104 0.0332 +vn 0.4762 -0.7968 -0.3719 +vn -0.0590 -0.8578 -0.5106 +vn -0.2873 -0.8134 -0.5058 +vn -0.3537 -0.8072 -0.4727 +vn -0.3722 -0.8088 -0.4553 +vn -0.3744 -0.8117 -0.4483 +vn -0.1287 -0.9847 -0.1174 +vn 0.0883 -0.7230 -0.6852 +vn -0.3268 -0.5202 -0.7891 +vn -0.5045 -0.4327 -0.7472 +vn -0.0986 -0.9917 -0.0825 +vn -0.5522 -0.4192 -0.7206 +vn -0.3114 -0.8759 -0.3686 +vn -0.5639 -0.4174 -0.7126 +vn -0.6024 -0.1685 -0.7802 +vn -0.6839 -0.4836 -0.5463 +vn -0.6516 -0.4326 -0.6230 +vn -0.4326 -0.8010 -0.4137 +vn -0.4392 -0.8324 -0.3380 +vn -0.3781 -0.7993 -0.4671 +vn -0.0996 -0.9923 -0.0730 +vn -0.5365 -0.4303 -0.7260 +vn -0.2875 -0.8133 -0.5058 +vn -0.3279 -0.5198 -0.7888 +vn -0.1509 -0.8553 -0.4957 +vn -0.1133 -0.6272 -0.7705 +vn -0.0607 -0.8910 -0.4499 +vn -0.0341 -0.9017 -0.4311 +vn 0.0013 -0.6791 -0.7340 +vn -0.0928 -0.9912 -0.0947 +vn 0.0456 -0.6977 -0.7149 +vn 0.1077 -0.2968 -0.9488 +vn 0.0194 -0.7176 -0.6961 +vn -0.0996 -0.9915 -0.0837 +vn -0.1088 0.1596 -0.9812 +vn -0.2089 0.0454 -0.9769 +vn -0.2990 0.0704 -0.9516 +vn -0.4621 -0.1675 -0.8709 +vn -0.4600 0.0333 -0.8873 +vn -0.3151 -0.2034 -0.9270 +vn -0.5118 -0.1021 -0.8530 +vn -0.3019 -0.2910 -0.9079 +vn -0.5176 -0.0713 -0.8527 +vn -0.4955 -0.1340 -0.8582 +vn -0.4102 -0.2753 -0.8694 +vn 0.4045 -0.2254 0.8863 +vn 0.5200 -0.1596 0.8391 +vn 0.2090 -0.2844 0.9356 +vn 0.2449 -0.1375 0.9597 +vn 0.4725 -0.0643 0.8790 +vn 0.5181 -0.0151 0.8552 +vn 0.5907 -0.0838 0.8025 +vn 0.2735 0.2579 0.9266 +vn -0.0361 0.0571 0.9977 +vn 0.1089 0.2296 0.9672 +vn 0.3925 0.2432 0.8870 +vn -0.4082 0.0597 0.9109 +vn 0.0253 0.3759 0.9263 +vn 0.5867 0.2150 0.7808 +vn 0.0342 0.0790 -0.9963 +vn -0.2991 0.0704 -0.9516 +vn -0.1327 -0.0656 -0.9890 +vn -0.4599 0.0333 -0.8873 +vn -0.6025 -0.0696 -0.7950 +vn -0.5176 -0.0713 -0.8526 +vn -0.0371 -0.2801 0.9593 +vn -0.3297 -0.1666 0.9293 +vn 0.0052 0.1541 0.9880 +vn 0.4741 0.1933 0.8590 +vn 0.2200 -0.0028 0.9755 +vn 0.0559 0.1920 0.9798 +vn -0.1175 -0.1268 0.9849 +vn 0.3459 0.2288 0.9100 +vn 0.4953 0.1877 0.8482 +vn 0.5786 0.0894 0.8107 +vn 0.2514 -0.2384 0.9380 +vn 0.5654 -0.0536 0.8231 +vn 0.4591 -0.1721 0.8716 +vn 0.7417 0.4370 0.5088 +vn 0.7482 0.4241 0.5102 +vn 0.7443 0.4313 0.5099 +vn 0.7395 0.4399 0.5095 +vn 0.7402 0.4232 0.5226 +vn 0.7429 0.4199 0.5214 +vn 0.7354 0.4135 0.5368 +vn 0.7368 0.4161 0.5330 +vn 0.7335 0.4185 0.5356 +vn 0.7389 0.4277 0.5207 +vn 0.7339 0.4193 0.5344 +vn 0.7416 0.4066 0.5335 +vn 0.7280 0.4190 0.5427 +vn 0.7330 0.4066 0.5454 +vn 0.7173 0.4373 0.5425 +vn 0.7171 0.4373 0.5427 +vn 0.7350 0.4296 0.5247 +vn 0.7211 0.4299 0.5433 +vn 0.7231 0.4256 0.5440 +vn 0.7278 0.4227 0.5399 +vn 0.7309 0.4199 0.5380 +vn 0.5192 -0.0435 0.8535 +vn 0.3238 -0.2106 0.9224 +vn 0.5453 -0.1003 0.8323 +vn 0.6258 0.0625 0.7775 +vn 0.3252 -0.3214 0.8894 +vn 0.6592 0.0126 0.7519 +vn 0.6026 -0.1492 0.7840 +vn 0.0264 -0.4272 0.9038 +vn 0.6788 0.1096 0.7261 +vn 0.1787 -0.4923 0.8519 +vn 0.6883 -0.0513 0.7236 +vn -0.2898 -0.6304 0.7201 +vn 0.7058 0.0434 0.7070 +vn 0.7412 0.1493 0.6544 +vn 0.7700 0.0796 0.6331 +vn 0.7271 -0.0257 0.6860 +vn 0.7773 -0.0149 0.6290 +vn 0.8249 0.2098 0.5248 +vn 0.8517 0.1154 0.5111 +vn 0.8489 -0.0093 0.5285 +vn 0.9379 0.1019 0.3317 +vn 0.9157 -0.0485 0.3990 +vn 0.4854 -0.3454 0.8032 +vn -0.2881 -0.8385 0.4626 +vn 0.9258 0.2189 0.3082 +vn 0.9472 -0.3032 -0.1039 +vn 0.9250 -0.1261 -0.3584 +vn 0.5088 -0.3867 -0.7691 +vn 0.6063 -0.5274 -0.5952 +vn 0.9837 0.1035 -0.1471 +vn 0.1584 -0.4704 -0.8681 +vn 0.2778 -0.6081 -0.7437 +vn 0.3449 -0.2040 -0.9162 +vn 0.0709 -0.6690 -0.7399 +vn -0.0900 -0.5227 -0.8477 +vn -0.0711 -0.2869 -0.9553 +vn -0.2915 -0.3376 -0.8950 +vn -0.7734 -0.5812 -0.2531 +vn 0.1574 -0.8566 0.4913 +vn -0.0966 -0.7823 -0.6154 +vn 0.4092 -0.4839 0.7736 +vn -0.3295 -0.6420 -0.6923 +vn -0.4932 -0.3980 -0.7735 +vn -0.4842 -0.7647 -0.4251 +vn -0.2166 -0.9012 -0.3753 +vn -0.4631 -0.8810 -0.0967 +vn -0.6926 -0.4441 -0.5684 +vn -0.1605 -0.9862 -0.0409 +vn 0.7733 -0.3997 0.4922 +vn 0.7747 -0.3926 0.4956 +vn 0.7777 -0.3908 0.4924 +vn 0.7754 -0.3900 0.4967 +vn 0.7776 -0.3893 0.4937 +vn 0.7781 -0.3896 0.4927 +vn 0.7771 -0.3887 0.4949 +vn 0.7760 -0.3917 0.4944 +vn 0.7760 -0.3956 0.4913 +vn 0.7753 -0.3901 0.4967 +vn -0.0664 0.3834 0.9212 +vn 0.0696 0.4626 0.8838 +vn -0.5306 0.4318 0.7294 +vn 0.3053 0.3279 0.8940 +vn 0.3384 0.1542 0.9283 +vn -0.4718 0.2457 0.8467 +vn 0.2589 0.1495 0.9543 +vn 0.3550 0.3680 0.8594 +vn -0.9420 0.0534 0.3313 +vn 0.3941 0.1304 0.9098 +vn -0.6117 0.0120 0.7910 +vn 0.4679 0.2308 0.8531 +vn -0.8237 -0.3992 0.4027 +vn 0.1951 0.1146 0.9741 +vn 0.4183 0.1018 0.9026 +vn 0.4216 0.0463 0.9056 +vn 0.1826 0.0294 0.9828 +vn 0.4993 0.2718 0.8227 +vn 0.5356 0.1495 0.8312 +vn 0.5795 0.1741 0.7962 +vn 0.4267 0.0748 0.9013 +vn -0.5590 -0.2001 0.8047 +vn 0.5606 0.0707 0.8251 +vn 0.3282 -0.0181 0.9444 +vn 0.1719 0.0705 0.9826 +vn 0.5489 -0.0171 0.8357 +vn 0.6127 0.0743 0.7868 +vn 0.4789 -0.1354 0.8674 +vn 0.3961 0.0112 0.9182 +vn 0.6035 -0.0374 0.7965 +vn 0.2384 -0.0105 0.9711 +vn 0.5325 -0.1748 0.8281 +vn -0.1463 -0.5525 0.8206 +vn -0.2776 -0.3824 0.8813 +vn 0.2275 -0.3192 0.9200 +vn 0.3494 -0.3476 0.8701 +vn -0.0604 0.3744 0.9253 +vn 0.0744 0.4527 0.8886 +vn -0.5208 0.4240 0.7409 +vn 0.3075 0.3202 0.8961 +vn 0.3389 0.1487 0.9290 +vn -0.4693 0.2376 0.8504 +vn 0.2594 0.1436 0.9550 +vn 0.3555 0.3610 0.8622 +vn -0.9409 0.0508 0.3349 +vn 0.3941 0.1253 0.9105 +vn -0.6128 0.0028 0.7902 +vn 0.4679 0.2254 0.8545 +vn -0.8305 -0.4030 0.3844 +vn 0.1952 0.1084 0.9748 +vn 0.4182 0.0970 0.9032 +vn 0.4216 0.0414 0.9058 +vn 0.1819 0.0229 0.9831 +vn 0.4989 0.2668 0.8246 +vn 0.5354 0.1454 0.8320 +vn 0.5791 0.1704 0.7972 +vn 0.4266 0.0701 0.9017 +vn -0.5616 -0.2098 0.8004 +vn 0.5607 0.0669 0.8253 +vn 0.3273 -0.0242 0.9446 +vn 0.1715 0.0639 0.9831 +vn 0.5493 -0.0216 0.8354 +vn 0.6128 0.0711 0.7871 +vn 0.4788 -0.1423 0.8663 +vn 0.3958 0.0057 0.9183 +vn 0.6041 -0.0413 0.7958 +vn 0.2372 -0.0168 0.9713 +vn 0.5333 -0.1808 0.8264 +vn -0.1584 -0.5678 0.8077 +vn -0.2852 -0.3935 0.8740 +vn 0.2220 -0.3317 0.9169 +vn 0.3483 -0.3580 0.8663 +vn 0.5774 0.2547 0.7757 +vn 0.5766 0.2554 0.7761 +vn 0.6459 0.1633 0.7457 +vn 0.4619 0.3220 0.8264 +vn 0.4300 0.3328 0.8392 +vn 0.1963 0.3404 0.9196 +vn 0.2848 0.3503 0.8923 +vn -0.0308 0.2284 0.9731 +vn 0.0434 0.2850 0.9575 +vn -0.1037 0.0652 0.9925 +vn 0.6449 0.1661 0.7460 +vn -0.1041 0.0702 0.9921 +vn -0.0379 -0.0922 0.9950 +vn 0.0335 -0.1454 0.9888 +vn 0.1793 -0.1994 0.9634 +vn 0.2782 -0.2096 0.9374 +vn 0.4202 -0.1922 0.8868 +vn 0.4612 -0.1794 0.8690 +vn 0.6665 0.0719 0.7421 +vn 0.5767 -0.1128 0.8091 +vn 0.5746 -0.1144 0.8104 +vn 0.6443 -0.0266 0.7643 +vn 0.6468 -0.0208 0.7624 +vn 0.6667 0.0693 0.7421 +vn 0.4647 0.0759 0.8822 +vn 0.4647 0.0756 0.8822 +vn 0.4649 0.0760 0.8821 +vn 0.4662 0.0761 0.8814 +vn 0.4656 0.0761 0.8817 +vn 0.4638 0.0753 0.8827 +vn 0.4638 0.0752 0.8828 +vn 0.4655 0.0750 0.8818 +vn 0.4646 0.0755 0.8823 +vn 0.4657 0.0751 0.8818 +vn 0.4650 0.0758 0.8821 +vn 0.4650 0.0756 0.8821 +vn 0.4651 0.0747 0.8821 +vn 0.4652 0.0749 0.8820 +vn 0.4651 0.0758 0.8820 +vn 0.4641 0.0754 0.8825 +vn 0.4649 0.0756 0.8821 +vn 0.4653 0.0752 0.8819 +vn 0.4651 0.0754 0.8821 +vn 0.4642 0.0754 0.8825 +vn 0.1807 0.7498 -0.6365 +vn 0.1096 0.9700 -0.2171 +vn 0.0815 0.8854 -0.4576 +vn 0.1662 0.7599 -0.6284 +vn 0.6154 0.5909 -0.5218 +vn 0.3798 0.6598 -0.6483 +vn 0.9085 0.4140 -0.0562 +vn 0.7724 0.5269 -0.3546 +vn 0.9159 0.2899 0.2776 +vn 0.9290 0.3301 0.1675 +vn 0.1923 0.9792 0.0649 +vn 0.8543 0.2294 0.4664 +vn 0.8505 0.2276 0.4742 +vn 0.7725 0.2105 0.5991 +vn 0.7593 0.2119 0.6153 +vn 0.6920 0.2358 0.6824 +vn 0.6854 0.2399 0.6875 +vn 0.3133 0.8692 0.3825 +vn 0.6153 0.3072 0.7260 +vn 0.6175 0.3045 0.7253 +vn 0.5370 0.4373 0.7214 +vn 0.5387 0.4339 0.7221 +vn 0.4494 0.6262 0.6371 +vn 0.4137 0.6988 0.5835 +vn 0.7395 0.4975 0.4535 +vn 0.7394 0.4976 0.4535 +vn 0.7394 0.4975 0.4536 +vn 0.7395 0.4976 0.4534 +vn 0.7394 0.4976 0.4534 +vn -0.1671 0.6087 0.7756 +vn -0.4325 0.5695 0.6990 +vn 0.0194 0.6525 0.7575 +vn -0.6647 0.5175 0.5389 +vn -0.8931 0.3943 0.2168 +vn -0.9583 0.2703 -0.0923 +vn -0.9556 0.2365 -0.1757 +vn -0.8762 0.1292 -0.4643 +vn -0.8943 0.1401 -0.4249 +vn -0.7809 0.1091 -0.6151 +vn 0.0620 0.6715 0.7384 +vn -0.7989 0.1073 -0.5918 +vn -0.7075 0.1422 -0.6922 +vn -0.7110 0.1395 -0.6892 +vn -0.6371 0.2256 -0.7370 +vn -0.6274 0.2409 -0.7405 +vn -0.5369 0.4233 -0.7298 +vn -0.5277 0.4422 -0.7253 +vn 0.1497 0.8492 0.5063 +vn -0.2915 0.8455 -0.4474 +vn -0.3886 0.7122 -0.5845 +vn 0.0778 0.9618 0.2625 +vn -0.0974 0.9877 -0.1226 +vn 0.1473 0.7722 0.6181 +vn -0.7727 0.5194 -0.3649 +vn -0.7727 0.5195 -0.3648 +vn -0.7727 0.5193 -0.3650 +vn -0.7727 0.5193 -0.3651 +vn -0.7726 0.5194 -0.3650 +vn -0.7727 0.5192 -0.3651 +vn -0.7726 0.5195 -0.3649 +vn 0.5720 0.2665 0.7758 +vn 0.4827 0.3368 0.8084 +vn 0.4661 0.2885 0.8364 +vn 0.5485 0.2275 0.8046 +vn 0.3283 0.3402 0.8812 +vn 0.3290 0.0618 0.9423 +vn 0.3455 0.3984 0.8497 +vn 0.5949 0.1679 0.7860 +vn 0.1234 0.3518 0.9279 +vn 0.6264 0.1950 0.7547 +vn 0.1323 0.4359 0.8902 +vn 0.6182 0.1097 0.7783 +vn 0.6239 0.0529 0.7797 +vn 0.6138 -0.0036 0.7895 +vn 0.6559 0.1242 0.7446 +vn 0.5869 -0.0614 0.8073 +vn 0.6648 0.0539 0.7451 +vn 0.5377 -0.1222 0.8342 +vn -0.1050 0.2878 0.9519 +vn 0.4543 -0.1856 0.8713 +vn 0.6548 -0.0170 0.7556 +vn 0.3191 -0.2420 0.9163 +vn 0.6243 -0.0897 0.7760 +vn 0.1270 -0.2666 0.9554 +vn -0.0911 -0.2295 0.9690 +vn 0.5683 -0.1650 0.8061 +vn -0.2445 -0.1276 0.9612 +vn -0.3044 0.0058 0.9525 +vn -0.2635 0.1554 0.9521 +vn 0.4777 -0.2419 0.8446 +vn 0.3342 -0.3170 0.8876 +vn -0.1694 0.4027 0.8995 +vn 0.1085 -0.3743 0.9209 +vn -0.1986 -0.3644 0.9098 +vn -0.4781 -0.2376 0.8455 +vn -0.5958 -0.0011 0.8031 +vn -0.4661 0.2476 0.8494 +vn -0.0353 -0.2018 -0.9788 +vn 0.1686 -0.3543 -0.9198 +vn -0.1131 -0.4151 -0.9027 +vn 0.0308 -0.1072 -0.9938 +vn -0.2663 0.1309 -0.9549 +vn -0.1752 -0.2654 -0.9481 +vn 0.3906 -0.1721 -0.9043 +vn -0.3299 -0.3898 -0.8598 +vn -0.3296 -0.2693 -0.9049 +vn 0.0280 -0.0184 -0.9994 +vn -0.4718 -0.3307 -0.8174 +vn -0.0342 0.0652 -0.9973 +vn -0.1494 0.1187 -0.9816 +vn -0.4410 -0.2285 -0.8680 +vn 0.3959 0.0641 -0.9161 +vn -0.0256 0.2813 -0.9593 +vn -0.2121 0.2778 -0.9369 +vn 0.2064 0.2230 -0.9527 +vn -0.3555 0.1215 -0.9267 +vn -0.4686 0.0635 -0.8811 +vn -0.3435 0.2485 -0.9057 +vn -0.4196 0.0978 -0.9024 +vn -0.5002 -0.1767 -0.8477 +vn -0.4397 0.2083 -0.8736 +vn -0.5153 0.1593 -0.8421 +vn -0.5747 0.1019 -0.8120 +vn -0.5037 0.0261 -0.8635 +vn -0.5262 -0.0134 -0.8502 +vn -0.5371 -0.0517 -0.8419 +vn -0.5633 -0.2588 -0.7847 +vn -0.5378 -0.0900 -0.8383 +vn -0.5275 -0.1305 -0.8395 +vn -0.6172 0.0371 -0.7860 +vn -0.6399 -0.0330 -0.7678 +vn -0.6409 -0.1066 -0.7602 +vn -0.6171 -0.1825 -0.7655 +vn -0.2650 -0.3621 0.8937 +vn 0.0426 -0.3856 0.9217 +vn 0.0556 -0.2718 0.9607 +vn -0.1444 -0.2228 0.9641 +vn 0.2575 -0.2591 0.9309 +vn 0.3202 0.0609 0.9454 +vn 0.2867 -0.3354 0.8974 +vn -0.5290 -0.2285 0.8173 +vn 0.4129 -0.2064 0.8871 +vn -0.2805 -0.1204 0.9523 +vn 0.4475 -0.2601 0.8556 +vn -0.3318 0.0052 0.9433 +vn -0.2974 0.1453 0.9436 +vn -0.6298 -0.0012 0.7767 +vn -0.1556 0.2770 0.9482 +vn -0.5086 0.2380 0.8275 +vn 0.0659 0.3517 0.9338 +vn 0.2854 0.3494 0.8925 +vn 0.5140 -0.1396 0.8464 +vn -0.2218 0.3980 0.8902 +vn 0.4386 0.3019 0.8465 +vn 0.5321 0.2397 0.8120 +vn 0.0851 0.4427 0.8926 +vn 0.5861 0.1766 0.7908 +vn 0.6135 0.1144 0.7814 +vn 0.3146 0.4090 0.8566 +vn 0.6202 0.0525 0.7827 +vn 0.6079 -0.0097 0.7939 +vn 0.5749 -0.0729 0.8150 +vn 0.4625 0.3472 0.8158 +vn 0.5591 0.2760 0.7818 +vn 0.6192 0.2018 0.7588 +vn 0.5504 -0.1802 0.8152 +vn 0.6515 0.1275 0.7479 +vn 0.6610 0.0531 0.7485 +vn 0.6492 -0.0223 0.7603 +vn 0.6146 -0.0997 0.7825 +vn -0.0256 0.2814 -0.9593 +vn 0.2096 0.2222 -0.9522 +vn -0.1464 0.1183 -0.9821 +vn -0.2652 0.1308 -0.9553 +vn -0.0312 0.0640 -0.9975 +vn 0.3992 0.0613 -0.9148 +vn 0.0310 -0.0200 -0.9993 +vn -0.2137 0.2778 -0.9366 +vn 0.0330 -0.1089 -0.9935 +vn 0.3905 -0.1765 -0.9035 +vn 0.1641 -0.3573 -0.9195 +vn -0.3460 0.2478 -0.9049 +vn -0.3556 0.1209 -0.9268 +vn -0.4195 0.0977 -0.9025 +vn -0.0340 -0.2034 -0.9785 +vn -0.4678 0.0636 -0.8815 +vn -0.4412 -0.2276 -0.8681 +vn -0.3303 -0.2694 -0.9046 +vn -0.1755 -0.2666 -0.9477 +vn -0.4414 0.2073 -0.8730 +vn -0.5158 0.1588 -0.8419 +vn -0.5745 0.1021 -0.8121 +vn -0.4997 -0.1757 -0.8482 +vn -0.5026 0.0266 -0.8641 +vn -0.5250 -0.0128 -0.8510 +vn -0.5358 -0.0511 -0.8428 +vn -0.1182 -0.4154 -0.9019 +vn -0.5367 -0.0892 -0.8390 +vn -0.3334 -0.3888 -0.8589 +vn -0.5265 -0.1297 -0.8402 +vn -0.6167 0.0378 -0.7863 +vn -0.4740 -0.3293 -0.8166 +vn -0.6395 -0.0319 -0.7681 +vn -0.6408 -0.1052 -0.7605 +vn -0.6176 -0.1809 -0.7654 +vn -0.5646 -0.2571 -0.7843 +# 7446 vertex normals + +vt -0.3572 0.9800 0.0000 +vt -0.3481 0.9800 0.0000 +vt -0.3545 0.9729 0.0000 +vt -0.3545 0.9872 0.0000 +vt -0.3479 0.9812 0.0000 +vt -0.3503 0.9907 0.0000 +vt -0.3472 0.9820 0.0000 +vt -0.3464 0.9917 0.0000 +vt -0.3462 0.9823 0.0000 +vt -0.3423 0.9907 0.0000 +vt -0.3455 0.9820 0.0000 +vt -0.3384 0.9871 0.0000 +vt -0.3447 0.9812 0.0000 +vt -0.3357 0.9800 0.0000 +vt -0.3445 0.9800 0.0000 +vt -0.3447 0.9788 0.0000 +vt -0.3384 0.9729 0.0000 +vt -0.3455 0.9780 0.0000 +vt -0.3423 0.9693 0.0000 +vt -0.3462 0.9778 0.0000 +vt -0.3464 0.9683 0.0000 +vt -0.3472 0.9780 0.0000 +vt -0.3503 0.9693 0.0000 +vt -0.3479 0.9788 0.0000 +vt -0.2773 0.1230 0.0000 +vt -0.2754 0.1250 0.0000 +vt -0.2754 0.1230 0.0000 +vt -0.8398 0.9450 0.0000 +vt -0.8394 0.9483 0.0000 +vt -0.8394 0.9469 0.0000 +vt -0.8398 0.9445 0.0000 +vt -0.8394 0.9501 0.0000 +vt -0.8398 0.9511 0.0000 +vt -0.8442 0.9479 0.0000 +vt -0.8403 0.9524 0.0000 +vt -0.5176 0.8849 0.0000 +vt -0.5293 0.8750 0.0000 +vt -0.5264 0.8877 0.0000 +vt -0.5220 0.9021 0.0000 +vt -0.5132 0.8990 0.0000 +vt -0.5093 0.9126 0.0000 +vt -0.5176 0.9157 0.0000 +vt -0.5044 0.9264 0.0000 +vt -0.5132 0.9296 0.0000 +vt -0.4998 0.9402 0.0000 +vt -0.5083 0.9433 0.0000 +vt -0.5029 0.9570 0.0000 +vt -0.4946 0.9539 0.0000 +vt -0.4973 0.9706 0.0000 +vt -0.4888 0.9674 0.0000 +vt -0.4934 0.9798 0.0000 +vt -0.4846 0.9765 0.0000 +vt -0.4915 0.9843 0.0000 +vt -0.4829 0.9805 0.0000 +vt -0.5200 0.8649 0.0000 +vt -0.5371 0.8624 0.0000 +vt -0.5122 0.8855 0.0000 +vt -0.4827 0.8738 0.0000 +vt -0.4841 0.8891 0.0000 +vt -0.4504 0.8817 0.0000 +vt -0.4509 0.8943 0.0000 +vt -0.4329 0.9036 0.0000 +vt -0.4062 0.8963 0.0000 +vt -0.4299 0.9050 0.0000 +vt -0.4275 0.9063 0.0000 +vt -0.5171 0.8850 0.0000 +vt -0.5171 0.8849 0.0000 +vt -0.5166 0.8878 0.0000 +vt -0.5161 0.8899 0.0000 +vt -0.4348 0.9026 0.0000 +vt -0.4316 0.9041 0.0000 +vt -0.4272 0.9061 0.0000 +vt -1.5195 0.8649 0.0000 +vt -1.5166 0.8848 0.0000 +vt -0.4270 0.9066 0.0000 +vt -0.4268 0.9066 0.0000 +vt -0.4290 0.9075 0.0000 +vt -0.4121 0.9109 0.0000 +vt -0.4351 0.9106 0.0000 +vt -0.4246 0.9169 0.0000 +vt -0.4370 0.9228 0.0000 +vt -0.4421 0.9139 0.0000 +vt -0.4529 0.9310 0.0000 +vt -0.4587 0.9225 0.0000 +vt -0.4727 0.9352 0.0000 +vt -0.4656 0.9425 0.0000 +vt -0.4822 0.9503 0.0000 +vt -0.4739 0.9556 0.0000 +vt -0.4766 0.9677 0.0000 +vt -0.4749 0.9768 0.0000 +vt -0.3997 0.9081 0.0000 +vt -0.4065 0.9158 0.0000 +vt -0.3926 0.9164 0.0000 +vt -0.3994 0.9229 0.0000 +vt -1.5410 0.8197 0.0000 +vt -1.5400 0.8196 0.0000 +vt -0.5410 0.8197 0.0000 +vt -0.5405 0.8196 0.0000 +vt -0.5415 0.8197 0.0000 +vt -0.4348 0.9105 0.0000 +vt -0.5181 0.1157 0.0000 +vt -0.5166 0.1152 0.0000 +vt -0.5171 0.1138 0.0000 +vt -1.6885 0.0259 0.0000 +vt -1.6895 0.0288 0.0000 +vt -1.6904 0.0278 0.0000 +vt -1.6914 0.0269 0.0000 +vt -1.6914 0.0259 0.0000 +vt -1.6914 0.0249 0.0000 +vt -1.6904 0.0239 0.0000 +vt -1.6904 0.0229 0.0000 +vt -0.6909 0.0278 0.0000 +vt -0.6899 0.0288 0.0000 +vt -0.6890 0.0259 0.0000 +vt -0.6914 0.0269 0.0000 +vt -0.6914 0.0259 0.0000 +vt -0.6914 0.0249 0.0000 +vt -0.6909 0.0239 0.0000 +vt -0.6904 0.0229 0.0000 +vt -0.4397 0.2305 0.0000 +vt -0.4539 0.2212 0.0000 +vt -0.4468 0.2256 0.0000 +vt -1.8945 0.7848 0.0000 +vt -1.8984 0.7842 0.0000 +vt -1.8945 0.7841 0.0000 +vt -1.9844 0.9422 0.0000 +vt -1.9883 0.9429 0.0000 +vt -1.9844 0.9415 0.0000 +vt -0.8950 0.7841 0.0000 +vt -0.8989 0.7842 0.0000 +vt -0.8950 0.7848 0.0000 +vt -0.9849 0.9415 0.0000 +vt -0.9888 0.9429 0.0000 +vt -0.9844 0.9422 0.0000 +vt -0.9033 0.3198 0.0000 +vt -0.9062 0.3193 0.0000 +vt -0.9048 0.3164 0.0000 +vt -1.9043 0.3164 0.0000 +vt -1.9062 0.3193 0.0000 +vt -1.9033 0.3198 0.0000 +vt -1.5166 0.1138 0.0000 +vt -1.5166 0.1152 0.0000 +vt -1.5176 0.1157 0.0000 +vt -0.3733 0.9936 0.0000 +vt -0.3733 0.9888 0.0000 +vt -0.4421 0.9940 0.0000 +vt -0.4424 0.9892 0.0000 +vt -0.3733 0.9840 0.0000 +vt -0.4424 0.9844 0.0000 +vt -0.3735 0.9792 0.0000 +vt -0.4424 0.9796 0.0000 +vt -0.3735 0.9744 0.0000 +vt -0.4424 0.9748 0.0000 +vt -0.3735 0.9696 0.0000 +vt -0.4424 0.9700 0.0000 +vt -0.3733 0.9648 0.0000 +vt -0.4424 0.9652 0.0000 +vt -0.4424 0.9604 0.0000 +vt -0.3733 0.9600 0.0000 +vt -0.4424 0.9556 0.0000 +vt -0.3733 0.9552 0.0000 +vt -0.4424 0.9508 0.0000 +vt -0.3733 0.9504 0.0000 +vt -0.4424 0.9460 0.0000 +vt -0.3733 0.9456 0.0000 +vt -0.4424 0.9413 0.0000 +vt -0.3735 0.9408 0.0000 +vt -0.3735 0.9360 0.0000 +vt -0.4426 0.9365 0.0000 +vt -1.9336 0.9883 0.0000 +vt -1.9336 0.9913 0.0000 +vt -1.9346 0.9913 0.0000 +vt -1.9346 0.9883 0.0000 +vt -1.5566 0.0474 0.0000 +vt -1.5566 0.0234 0.0000 +vt -1.5469 0.0234 0.0000 +vt -1.5469 0.0474 0.0000 +vt -1.5039 0.0962 0.0000 +vt -1.5234 0.0962 0.0000 +vt -1.5039 0.0723 0.0000 +vt -1.5234 0.0723 0.0000 +vt -1.5566 0.0962 0.0000 +vt -1.5566 0.0723 0.0000 +vt -1.5859 0.0586 0.0000 +vt -1.5625 0.0586 0.0000 +vt -1.5625 0.0967 0.0000 +vt -1.5859 0.0967 0.0000 +vt -1.4893 0.0479 0.0000 +vt -1.4893 0.0718 0.0000 +vt -1.4980 0.0718 0.0000 +vt -1.4980 0.0479 0.0000 +vt -1.5078 0.0234 0.0000 +vt -1.5078 0.0474 0.0000 +vt -1.4893 0.0234 0.0000 +vt -1.4893 0.0474 0.0000 +vt -1.4990 0.0479 0.0000 +vt -1.4990 0.0718 0.0000 +vt -1.5420 0.0718 0.0000 +vt -1.5420 0.0479 0.0000 +vt -1.5625 0.0391 0.0000 +vt -1.5625 0.0425 0.0000 +vt -1.5859 0.0425 0.0000 +vt -1.5859 0.0391 0.0000 +vt -1.5625 0.0576 0.0000 +vt -1.5859 0.0576 0.0000 +vt -1.5576 0.0259 0.0000 +vt -1.5576 0.0352 0.0000 +vt -1.5889 0.0244 0.0000 +vt -1.5928 0.0332 0.0000 +vt -1.6064 0.0234 0.0000 +vt -1.6064 0.0327 0.0000 +vt -1.6094 0.0723 0.0000 +vt -1.5918 0.0786 0.0000 +vt -1.6104 0.0908 0.0000 +vt -1.5947 0.0962 0.0000 +vt -1.5908 0.0933 0.0000 +vt -1.5566 0.0718 0.0000 +vt -1.5566 0.0479 0.0000 +vt -0.5474 0.0234 0.0000 +vt -0.5566 0.0234 0.0000 +vt -0.5566 0.0474 0.0000 +vt -0.5474 0.0474 0.0000 +vt -0.5039 0.0723 0.0000 +vt -0.5234 0.0962 0.0000 +vt -0.5039 0.0962 0.0000 +vt -0.5234 0.0723 0.0000 +vt -0.5566 0.0962 0.0000 +vt -0.5566 0.0723 0.0000 +vt -0.5630 0.0967 0.0000 +vt -0.5630 0.0586 0.0000 +vt -0.5864 0.0586 0.0000 +vt -0.5864 0.0967 0.0000 +vt -0.4983 0.0718 0.0000 +vt -0.4893 0.0718 0.0000 +vt -0.4893 0.0479 0.0000 +vt -0.4983 0.0479 0.0000 +vt -0.5078 0.0234 0.0000 +vt -0.5078 0.0474 0.0000 +vt -0.4893 0.0234 0.0000 +vt -0.4893 0.0474 0.0000 +vt -0.5425 0.0718 0.0000 +vt -0.4990 0.0718 0.0000 +vt -0.4990 0.0479 0.0000 +vt -0.5425 0.0479 0.0000 +vt -0.5864 0.0425 0.0000 +vt -0.5630 0.0425 0.0000 +vt -0.5630 0.0391 0.0000 +vt -0.5864 0.0391 0.0000 +vt -0.5630 0.0576 0.0000 +vt -0.5864 0.0576 0.0000 +vt -0.5581 0.0352 0.0000 +vt -0.5576 0.0259 0.0000 +vt -0.5889 0.0244 0.0000 +vt -0.5933 0.0332 0.0000 +vt -0.6069 0.0234 0.0000 +vt -0.6069 0.0327 0.0000 +vt -0.6094 0.0723 0.0000 +vt -0.5918 0.0786 0.0000 +vt -0.6104 0.0908 0.0000 +vt -0.5947 0.0962 0.0000 +vt -0.5913 0.0933 0.0000 +vt -0.5566 0.0479 0.0000 +vt -0.5566 0.0718 0.0000 +vt -0.2791 0.7982 0.0000 +vt -0.2676 0.8004 0.0000 +vt -0.2676 0.6797 0.0000 +vt -0.2908 0.7959 0.0000 +vt -0.3005 0.7893 0.0000 +vt -0.2791 0.6821 0.0000 +vt -0.2908 0.6843 0.0000 +vt -0.3005 0.6909 0.0000 +vt -0.3103 0.6975 0.0000 +vt -0.3169 0.7073 0.0000 +vt -0.3235 0.7170 0.0000 +vt -0.3257 0.7285 0.0000 +vt -0.3279 0.7402 0.0000 +vt -0.3257 0.7516 0.0000 +vt -0.3235 0.7632 0.0000 +vt -0.3169 0.7729 0.0000 +vt -0.3103 0.7827 0.0000 +vt -1.2891 0.1274 0.0000 +vt -1.2754 0.1274 0.0000 +vt -1.2754 0.1250 0.0000 +vt -1.2891 0.1250 0.0000 +vt -1.3027 0.1274 0.0000 +vt -1.3027 0.1250 0.0000 +vt -1.3154 0.1274 0.0000 +vt -1.3154 0.1250 0.0000 +vt -1.3291 0.1274 0.0000 +vt -1.3291 0.1250 0.0000 +vt -1.3418 0.1274 0.0000 +vt -1.3418 0.1250 0.0000 +vt -1.3555 0.1250 0.0000 +vt -1.3555 0.1274 0.0000 +vt -1.3682 0.1274 0.0000 +vt -1.3682 0.1250 0.0000 +vt -1.3809 0.1250 0.0000 +vt -1.3809 0.1274 0.0000 +vt -1.3945 0.1274 0.0000 +vt -1.3945 0.1250 0.0000 +vt -1.4082 0.1250 0.0000 +vt -1.4082 0.1274 0.0000 +vt -1.4209 0.1274 0.0000 +vt -1.4209 0.1250 0.0000 +vt -1.4326 0.1250 0.0000 +vt -1.4326 0.1274 0.0000 +vt -1.4453 0.1250 0.0000 +vt -1.4453 0.1274 0.0000 +vt -1.4570 0.1250 0.0000 +vt -1.4570 0.1274 0.0000 +vt -1.4707 0.1250 0.0000 +vt -1.4697 0.1274 0.0000 +vt -1.4834 0.1250 0.0000 +vt -1.4824 0.1274 0.0000 +vt -0.2218 0.9121 0.0000 +vt -0.2211 0.9141 0.0000 +vt -0.2128 0.9109 0.0000 +vt -0.2123 0.9130 0.0000 +vt -0.2035 0.9119 0.0000 +vt -0.2037 0.9099 0.0000 +vt -0.1947 0.9092 0.0000 +vt -0.1946 0.9113 0.0000 +vt -0.1857 0.9105 0.0000 +vt -0.1858 0.9084 0.0000 +vt -0.1768 0.9081 0.0000 +vt -0.1766 0.9102 0.0000 +vt -0.1677 0.9099 0.0000 +vt -0.1677 0.9077 0.0000 +vt -0.1589 0.9099 0.0000 +vt -0.1587 0.9078 0.0000 +vt -0.1495 0.9079 0.0000 +vt -0.1500 0.9099 0.0000 +vt -0.1415 0.9141 0.0000 +vt -0.1405 0.9124 0.0000 +vt -0.1313 0.9169 0.0000 +vt -0.1328 0.9183 0.0000 +vt -0.1228 0.9299 0.0000 +vt -0.1245 0.9312 0.0000 +vt -0.1160 0.9439 0.0000 +vt -0.1141 0.9428 0.0000 +vt -0.1063 0.9577 0.0000 +vt -0.1080 0.9589 0.0000 +vt -0.1000 0.9738 0.0000 +vt -0.0984 0.9726 0.0000 +vt -0.0902 0.9801 0.0000 +vt -0.0919 0.9814 0.0000 +vt -0.0839 0.9889 0.0000 +vt -0.0821 0.9876 0.0000 +vt -0.1450 0.9401 0.0000 +vt -0.1447 0.9378 0.0000 +vt -0.1512 0.9365 0.0000 +vt -0.1517 0.9389 0.0000 +vt -0.1454 0.9424 0.0000 +vt -0.1521 0.9413 0.0000 +vt -0.1458 0.9447 0.0000 +vt -0.1525 0.9437 0.0000 +vt -0.1528 0.9461 0.0000 +vt -0.1461 0.9470 0.0000 +vt -0.1464 0.9493 0.0000 +vt -0.1531 0.9485 0.0000 +vt -0.1466 0.9516 0.0000 +vt -0.1533 0.9510 0.0000 +vt -0.1536 0.9534 0.0000 +vt -0.1467 0.9539 0.0000 +vt -0.1537 0.9558 0.0000 +vt -0.1470 0.9562 0.0000 +vt -0.1528 0.9583 0.0000 +vt -0.1460 0.9586 0.0000 +vt -0.1520 0.9608 0.0000 +vt -0.1449 0.9610 0.0000 +vt -0.1416 0.9634 0.0000 +vt -0.1763 0.9633 0.0000 +vt -0.1382 0.9658 0.0000 +vt -0.2006 0.9658 0.0000 +vt -0.1973 0.9683 0.0000 +vt -0.1344 0.9681 0.0000 +vt -0.1941 0.9707 0.0000 +vt -0.1306 0.9705 0.0000 +vt -0.1926 0.9731 0.0000 +vt -0.1289 0.9728 0.0000 +vt -0.1913 0.9755 0.0000 +vt -0.1273 0.9751 0.0000 +vt -0.0547 0.2505 0.0000 +vt -0.0533 0.2505 0.0000 +vt -0.0535 0.1743 0.0000 +vt -0.0698 0.2148 0.0000 +vt -0.0695 0.1743 0.0000 +vt -0.0745 0.1743 0.0000 +vt -0.0779 0.1826 0.0000 +vt -0.0467 0.0840 0.0000 +vt -0.0462 0.0396 0.0000 +vt -0.0195 0.0869 0.0000 +vt -0.0157 0.0410 0.0000 +vt -0.0299 0.0205 0.0000 +vt -0.0378 0.0132 0.0000 +vt -0.0468 0.0132 0.0000 +vt -0.0136 0.0410 0.0000 +vt -0.0155 0.0337 0.0000 +vt -0.0091 0.0908 0.0000 +vt -0.2551 0.9186 0.0000 +vt -0.2935 0.9232 0.0000 +vt -0.2544 0.9952 0.0000 +vt -0.2966 0.9941 0.0000 +vt -0.3081 0.9282 0.0000 +vt -0.3103 0.9936 0.0000 +vt -0.0329 0.0083 0.0000 +vt -0.0677 0.0098 0.0000 +vt -0.0562 0.0571 0.0000 +vt -0.0382 0.0566 0.0000 +vt -0.0214 0.0562 0.0000 +vt -1.4834 0.1230 0.0000 +vt -1.4707 0.1230 0.0000 +vt -1.4570 0.1230 0.0000 +vt -1.4453 0.1230 0.0000 +vt -1.4326 0.1230 0.0000 +vt -1.4209 0.1230 0.0000 +vt -1.4082 0.1230 0.0000 +vt -1.3945 0.1230 0.0000 +vt -1.3809 0.1230 0.0000 +vt -1.3682 0.1230 0.0000 +vt -1.3555 0.1230 0.0000 +vt -1.3418 0.1230 0.0000 +vt -1.3291 0.1230 0.0000 +vt -1.3154 0.1230 0.0000 +vt -1.3027 0.1230 0.0000 +vt -1.2891 0.1230 0.0000 +vt -1.2773 0.1230 0.0000 +vt -0.0458 0.0869 0.0000 +vt -0.0218 0.0869 0.0000 +vt -0.2251 0.8869 0.0000 +vt -0.2157 0.8859 0.0000 +vt -0.2062 0.8848 0.0000 +vt -0.2434 0.7393 0.0000 +vt -0.1968 0.8842 0.0000 +vt -0.2196 0.7368 0.0000 +vt -0.1873 0.8834 0.0000 +vt -0.2314 0.7380 0.0000 +vt -0.2078 0.7361 0.0000 +vt -0.1959 0.7354 0.0000 +vt -0.1777 0.8831 0.0000 +vt -0.2534 0.6389 0.0000 +vt -0.2402 0.6379 0.0000 +vt -0.2272 0.6370 0.0000 +vt -0.2010 0.6357 0.0000 +vt -0.2141 0.6362 0.0000 +vt -0.1841 0.7349 0.0000 +vt -0.1881 0.6353 0.0000 +vt -0.2634 0.5383 0.0000 +vt -0.2346 0.5369 0.0000 +vt -0.2205 0.5364 0.0000 +vt -0.2490 0.5376 0.0000 +vt -0.2063 0.5359 0.0000 +vt -0.1921 0.5356 0.0000 +vt -0.2644 0.3984 0.0000 +vt -0.2357 0.3984 0.0000 +vt -0.2500 0.3984 0.0000 +vt -0.2070 0.3984 0.0000 +vt -0.2214 0.3984 0.0000 +vt -0.2629 0.3135 0.0000 +vt -0.2346 0.3140 0.0000 +vt -0.2488 0.3135 0.0000 +vt -0.1929 0.3979 0.0000 +vt -0.2065 0.3145 0.0000 +vt -0.2206 0.3145 0.0000 +vt -0.2607 0.2681 0.0000 +vt -0.2333 0.2695 0.0000 +vt -0.2471 0.2690 0.0000 +vt -0.2058 0.2705 0.0000 +vt -0.2195 0.2700 0.0000 +vt -0.1925 0.3145 0.0000 +vt -0.2546 0.1709 0.0000 +vt -0.2284 0.1729 0.0000 +vt -0.2416 0.1719 0.0000 +vt -0.2155 0.1733 0.0000 +vt -0.1921 0.2705 0.0000 +vt -0.2025 0.1743 0.0000 +vt -0.2499 0.1309 0.0000 +vt -0.2374 0.1323 0.0000 +vt -0.2249 0.1333 0.0000 +vt -0.1783 0.2705 0.0000 +vt -0.2003 0.1353 0.0000 +vt -0.1897 0.1743 0.0000 +vt -0.2125 0.1343 0.0000 +vt -0.2465 0.1099 0.0000 +vt -0.2225 0.1128 0.0000 +vt -0.2345 0.1113 0.0000 +vt -0.1987 0.1147 0.0000 +vt -0.1881 0.1357 0.0000 +vt -0.2107 0.1138 0.0000 +vt -0.1768 0.1748 0.0000 +vt -0.2332 0.1016 0.0000 +vt -0.2258 0.1025 0.0000 +vt -0.1682 0.8827 0.0000 +vt -0.2170 0.0659 0.0000 +vt -0.2063 0.0669 0.0000 +vt -0.2449 0.0996 0.0000 +vt -0.1869 0.1152 0.0000 +vt -0.1956 0.0684 0.0000 +vt -0.2198 0.0654 0.0000 +vt -0.1750 0.6350 0.0000 +vt -0.2037 0.0469 0.0000 +vt -0.2140 0.0459 0.0000 +vt -0.1759 0.1362 0.0000 +vt -0.1936 0.0479 0.0000 +vt -0.1647 0.2705 0.0000 +vt -0.1848 0.0688 0.0000 +vt -0.1750 0.1157 0.0000 +vt -0.1780 0.5354 0.0000 +vt -0.1835 0.0488 0.0000 +vt -0.2108 0.0254 0.0000 +vt -0.2013 0.0269 0.0000 +vt -0.1742 0.0693 0.0000 +vt -0.1917 0.0278 0.0000 +vt -0.1733 0.0493 0.0000 +vt -0.1820 0.0288 0.0000 +vt -0.1639 0.1748 0.0000 +vt -0.1786 0.3979 0.0000 +vt -0.1725 0.0293 0.0000 +vt -0.1636 0.0698 0.0000 +vt -0.1632 0.0498 0.0000 +vt -0.1637 0.1362 0.0000 +vt -0.1633 0.1157 0.0000 +vt -0.1785 0.3145 0.0000 +vt -0.1628 0.0298 0.0000 +vt -0.1531 0.0498 0.0000 +vt -0.1528 0.0698 0.0000 +vt -0.1533 0.0298 0.0000 +vt -0.1516 0.1362 0.0000 +vt -0.1511 0.1743 0.0000 +vt -0.1516 0.1157 0.0000 +vt -0.1510 0.2705 0.0000 +vt -0.1431 0.0493 0.0000 +vt -0.1423 0.0693 0.0000 +vt -0.1394 0.1357 0.0000 +vt -0.1399 0.1152 0.0000 +vt -0.1383 0.1738 0.0000 +vt -0.1438 0.0293 0.0000 +vt -0.1372 0.2700 0.0000 +vt -0.1329 0.0493 0.0000 +vt -0.1317 0.0688 0.0000 +vt -0.1342 0.0293 0.0000 +vt -0.1273 0.1348 0.0000 +vt -0.1255 0.1738 0.0000 +vt -0.1283 0.1147 0.0000 +vt -0.1235 0.2700 0.0000 +vt -0.1248 0.0283 0.0000 +vt -0.1646 0.3145 0.0000 +vt -0.1721 0.7346 0.0000 +vt -0.1212 0.0679 0.0000 +vt -0.1230 0.0483 0.0000 +vt -0.1152 0.1343 0.0000 +vt -0.1125 0.1729 0.0000 +vt -0.1166 0.1138 0.0000 +vt -0.1097 0.2695 0.0000 +vt -0.1154 0.0278 0.0000 +vt -0.1107 0.0669 0.0000 +vt -0.1130 0.0474 0.0000 +vt -0.1031 0.1333 0.0000 +vt -0.0996 0.1724 0.0000 +vt -0.1049 0.1128 0.0000 +vt -0.0959 0.2690 0.0000 +vt -0.1061 0.0264 0.0000 +vt -0.1002 0.0654 0.0000 +vt -0.1031 0.0459 0.0000 +vt -0.0920 0.1318 0.0000 +vt -0.0895 0.1709 0.0000 +vt -0.0933 0.1113 0.0000 +vt -0.0891 0.1865 0.0000 +vt -0.1505 0.3145 0.0000 +vt -0.0969 0.0249 0.0000 +vt -0.0897 0.0640 0.0000 +vt -0.0815 0.1099 0.0000 +vt -0.0933 0.0444 0.0000 +vt -0.0797 0.1245 0.0000 +vt -0.1365 0.3145 0.0000 +vt -0.0836 0.1704 0.0000 +vt -0.0805 0.1304 0.0000 +vt -0.0878 0.0234 0.0000 +vt -0.0792 0.0615 0.0000 +vt -0.0701 0.1084 0.0000 +vt -0.1245 0.3145 0.0000 +vt -0.0836 0.0425 0.0000 +vt -0.0699 0.1138 0.0000 +vt -0.0738 0.0405 0.0000 +vt -0.0688 0.0596 0.0000 +vt -0.0944 0.3135 0.0000 +vt -0.0647 0.1079 0.0000 +vt -0.0788 0.0215 0.0000 +vt -0.0587 0.1050 0.0000 +vt -0.0819 0.2686 0.0000 +vt -0.1587 0.8826 0.0000 +vt -0.1493 0.8826 0.0000 +vt -0.1603 0.7344 0.0000 +vt -0.1398 0.8864 0.0000 +vt -0.1484 0.7344 0.0000 +vt -0.1366 0.7344 0.0000 +vt -0.1304 0.8902 0.0000 +vt -0.1248 0.7346 0.0000 +vt -0.1621 0.6348 0.0000 +vt -0.1492 0.6348 0.0000 +vt -0.1091 0.3140 0.0000 +vt -0.1361 0.6348 0.0000 +vt -0.1232 0.6350 0.0000 +vt -0.1639 0.5352 0.0000 +vt -0.1498 0.5352 0.0000 +vt -0.1357 0.5352 0.0000 +vt -0.1223 0.5354 0.0000 +vt -0.1500 0.3979 0.0000 +vt -0.0735 0.2456 0.0000 +vt -0.1643 0.3979 0.0000 +vt -0.1102 0.6355 0.0000 +vt -0.1075 0.5356 0.0000 +vt -0.1235 0.3979 0.0000 +vt -0.1365 0.3979 0.0000 +vt -0.1073 0.3979 0.0000 +vt -0.1129 0.7351 0.0000 +vt -0.0933 0.5359 0.0000 +vt -0.1213 0.9015 0.0000 +vt -0.0972 0.6357 0.0000 +vt -0.0943 0.3979 0.0000 +vt -0.0802 0.3135 0.0000 +vt -0.0787 0.3979 0.0000 +vt -0.0790 0.5364 0.0000 +vt -0.0709 0.3130 0.0000 +vt -0.0761 0.2681 0.0000 +vt -0.0643 0.3979 0.0000 +vt -0.0841 0.6365 0.0000 +vt -0.0648 0.5369 0.0000 +vt -0.0710 0.6370 0.0000 +vt -0.0629 0.3130 0.0000 +vt -0.0499 0.3975 0.0000 +vt -0.0504 0.5376 0.0000 +vt -0.0698 0.2681 0.0000 +vt -0.0891 0.7366 0.0000 +vt -0.0579 0.6379 0.0000 +vt -0.0772 0.7373 0.0000 +vt -0.0509 0.3115 0.0000 +vt -0.1010 0.7356 0.0000 +vt -0.0360 0.5383 0.0000 +vt -0.0447 0.6387 0.0000 +vt -0.0355 0.3975 0.0000 +vt -0.0653 0.7383 0.0000 +vt -0.0573 0.2666 0.0000 +vt -0.1037 0.9257 0.0000 +vt -0.0534 0.7393 0.0000 +vt -0.0696 0.2451 0.0000 +vt -0.0950 0.9386 0.0000 +vt -0.1123 0.9127 0.0000 +vt -0.0861 0.9448 0.0000 +vt -0.0771 0.9510 0.0000 +vt -0.2203 0.0239 0.0000 +vt -0.2299 0.0220 0.0000 +vt -0.2389 0.0625 0.0000 +vt -0.2280 0.0640 0.0000 +vt -0.2224 0.3052 0.0000 +vt -0.2240 0.3521 0.0000 +vt -0.2461 0.3022 0.0000 +vt -0.2480 0.3535 0.0000 +vt -0.2222 0.3984 0.0000 +vt -0.2462 0.4009 0.0000 +vt -0.0268 0.2168 0.0000 +vt -0.0224 0.1846 0.0000 +vt -0.0451 0.1855 0.0000 +vt -0.0488 0.2178 0.0000 +vt -0.0503 0.1855 0.0000 +vt -0.0484 0.2261 0.0000 +vt -0.0243 0.2251 0.0000 +vt -0.0185 0.0649 0.0000 +vt -0.0384 0.0435 0.0000 +vt -0.0391 0.0454 0.0000 +vt -0.0297 0.0859 0.0000 +vt -0.0464 0.0400 0.0000 +vt -0.0340 0.0830 0.0000 +vt -0.0457 0.0381 0.0000 +vt -1.2676 0.6797 0.0000 +vt -1.2676 0.8004 0.0000 +vt -1.2783 0.7982 0.0000 +vt -1.2900 0.7959 0.0000 +vt -1.2998 0.7893 0.0000 +vt -1.3096 0.7827 0.0000 +vt -1.3164 0.7729 0.0000 +vt -1.3232 0.7632 0.0000 +vt -1.3252 0.7516 0.0000 +vt -1.2783 0.6821 0.0000 +vt -1.2900 0.6843 0.0000 +vt -1.3271 0.7402 0.0000 +vt -1.3252 0.7285 0.0000 +vt -1.3232 0.7170 0.0000 +vt -1.3164 0.7073 0.0000 +vt -1.2998 0.6909 0.0000 +vt -1.3096 0.6975 0.0000 +vt -0.2754 0.1274 0.0000 +vt -0.2891 0.1274 0.0000 +vt -0.2891 0.1250 0.0000 +vt -0.3027 0.1274 0.0000 +vt -0.3027 0.1250 0.0000 +vt -0.3159 0.1274 0.0000 +vt -0.3159 0.1250 0.0000 +vt -0.3291 0.1274 0.0000 +vt -0.3291 0.1250 0.0000 +vt -0.3423 0.1274 0.0000 +vt -0.3423 0.1250 0.0000 +vt -0.3555 0.1250 0.0000 +vt -0.3555 0.1274 0.0000 +vt -0.3684 0.1274 0.0000 +vt -0.3684 0.1250 0.0000 +vt -0.3813 0.1250 0.0000 +vt -0.3813 0.1274 0.0000 +vt -0.3948 0.1274 0.0000 +vt -0.3948 0.1250 0.0000 +vt -0.4082 0.1250 0.0000 +vt -0.4082 0.1274 0.0000 +vt -0.4209 0.1274 0.0000 +vt -0.4209 0.1250 0.0000 +vt -0.4333 0.1250 0.0000 +vt -0.4333 0.1274 0.0000 +vt -0.4456 0.1250 0.0000 +vt -0.4456 0.1274 0.0000 +vt -0.4578 0.1250 0.0000 +vt -0.4578 0.1274 0.0000 +vt -0.4707 0.1250 0.0000 +vt -0.4705 0.1274 0.0000 +vt -0.4834 0.1250 0.0000 +vt -0.4832 0.1274 0.0000 +vt -1.2207 0.9141 0.0000 +vt -1.2217 0.9121 0.0000 +vt -1.2119 0.9109 0.0000 +vt -1.2119 0.9130 0.0000 +vt -1.2031 0.9119 0.0000 +vt -1.2031 0.9099 0.0000 +vt -1.1943 0.9092 0.0000 +vt -1.1943 0.9113 0.0000 +vt -1.1855 0.9105 0.0000 +vt -1.1855 0.9084 0.0000 +vt -1.1768 0.9081 0.0000 +vt -1.1758 0.9102 0.0000 +vt -1.1670 0.9099 0.0000 +vt -1.1670 0.9077 0.0000 +vt -1.1582 0.9099 0.0000 +vt -1.1582 0.9078 0.0000 +vt -1.1494 0.9079 0.0000 +vt -1.1494 0.9099 0.0000 +vt -1.1406 0.9141 0.0000 +vt -1.1396 0.9124 0.0000 +vt -1.1309 0.9169 0.0000 +vt -1.1328 0.9183 0.0000 +vt -1.1221 0.9299 0.0000 +vt -1.1240 0.9312 0.0000 +vt -1.1152 0.9439 0.0000 +vt -1.1133 0.9428 0.0000 +vt -1.1055 0.9577 0.0000 +vt -1.1074 0.9589 0.0000 +vt -1.0996 0.9738 0.0000 +vt -1.0977 0.9726 0.0000 +vt -1.0898 0.9801 0.0000 +vt -1.0918 0.9814 0.0000 +vt -1.0830 0.9889 0.0000 +vt -1.0820 0.9876 0.0000 +vt -1.1504 0.9365 0.0000 +vt -1.1445 0.9378 0.0000 +vt -1.1445 0.9401 0.0000 +vt -1.1514 0.9389 0.0000 +vt -1.1445 0.9424 0.0000 +vt -1.1514 0.9413 0.0000 +vt -1.1455 0.9447 0.0000 +vt -1.1523 0.9437 0.0000 +vt -1.1523 0.9461 0.0000 +vt -1.1455 0.9470 0.0000 +vt -1.1455 0.9493 0.0000 +vt -1.1523 0.9485 0.0000 +vt -1.1465 0.9516 0.0000 +vt -1.1533 0.9510 0.0000 +vt -1.1533 0.9534 0.0000 +vt -1.1465 0.9539 0.0000 +vt -1.1533 0.9558 0.0000 +vt -1.1465 0.9562 0.0000 +vt -1.1523 0.9583 0.0000 +vt -1.1455 0.9586 0.0000 +vt -1.1514 0.9608 0.0000 +vt -1.1445 0.9610 0.0000 +vt -1.1416 0.9634 0.0000 +vt -1.1758 0.9633 0.0000 +vt -1.1377 0.9658 0.0000 +vt -1.2002 0.9658 0.0000 +vt -1.1973 0.9683 0.0000 +vt -1.1338 0.9681 0.0000 +vt -1.1934 0.9707 0.0000 +vt -1.1299 0.9705 0.0000 +vt -1.1924 0.9731 0.0000 +vt -1.1289 0.9728 0.0000 +vt -1.1904 0.9755 0.0000 +vt -1.1270 0.9751 0.0000 +vt -1.0869 0.0234 0.0000 +vt -1.0781 0.0215 0.0000 +vt -1.0732 0.0405 0.0000 +vt -1.0830 0.0425 0.0000 +vt -1.0684 0.0596 0.0000 +vt -1.0928 0.0444 0.0000 +vt -1.0791 0.0615 0.0000 +vt -1.0645 0.1079 0.0000 +vt -1.0586 0.1050 0.0000 +vt -1.0693 0.1084 0.0000 +vt -1.0889 0.0640 0.0000 +vt -1.0967 0.0249 0.0000 +vt -1.0693 0.1138 0.0000 +vt -1.0811 0.1099 0.0000 +vt -1.1025 0.0459 0.0000 +vt -1.0791 0.1245 0.0000 +vt -1.0996 0.0654 0.0000 +vt -1.0928 0.1113 0.0000 +vt -1.1055 0.0264 0.0000 +vt -1.1123 0.0474 0.0000 +vt -1.1104 0.0669 0.0000 +vt -1.1045 0.1128 0.0000 +vt -1.0918 0.1318 0.0000 +vt -1.0801 0.1304 0.0000 +vt -1.1152 0.0278 0.0000 +vt -1.1221 0.0483 0.0000 +vt -1.1162 0.1138 0.0000 +vt -1.0830 0.1704 0.0000 +vt -1.1025 0.1333 0.0000 +vt -1.1211 0.0679 0.0000 +vt -1.1240 0.0283 0.0000 +vt -1.0889 0.1709 0.0000 +vt -1.1328 0.0493 0.0000 +vt -1.1279 0.1147 0.0000 +vt -1.1309 0.0688 0.0000 +vt -1.1152 0.1343 0.0000 +vt -1.0996 0.1724 0.0000 +vt -1.1338 0.0293 0.0000 +vt -1.1416 0.0693 0.0000 +vt -1.1396 0.1152 0.0000 +vt -1.1426 0.0493 0.0000 +vt -1.1270 0.1348 0.0000 +vt -1.1123 0.1729 0.0000 +vt -1.1436 0.0293 0.0000 +vt -1.1523 0.0498 0.0000 +vt -1.1533 0.0298 0.0000 +vt -1.1514 0.1157 0.0000 +vt -1.1387 0.1357 0.0000 +vt -1.1523 0.0698 0.0000 +vt -1.1250 0.1738 0.0000 +vt -1.1631 0.0498 0.0000 +vt -1.1631 0.0698 0.0000 +vt -1.1631 0.1157 0.0000 +vt -1.1514 0.1362 0.0000 +vt -1.1621 0.0298 0.0000 +vt -1.1377 0.1738 0.0000 +vt -1.1729 0.0493 0.0000 +vt -1.1719 0.0293 0.0000 +vt -1.1748 0.1157 0.0000 +vt -1.1631 0.1362 0.0000 +vt -1.1738 0.0693 0.0000 +vt -1.1504 0.1743 0.0000 +vt -1.1816 0.0288 0.0000 +vt -1.1846 0.0688 0.0000 +vt -1.1865 0.1152 0.0000 +vt -1.1826 0.0488 0.0000 +vt -1.1758 0.1362 0.0000 +vt -1.1631 0.1748 0.0000 +vt -1.1875 0.1357 0.0000 +vt -1.1914 0.0278 0.0000 +vt -1.1953 0.0684 0.0000 +vt -1.1934 0.0479 0.0000 +vt -1.1982 0.1147 0.0000 +vt -1.1768 0.1748 0.0000 +vt -1.2002 0.1353 0.0000 +vt -1.1895 0.1743 0.0000 +vt -1.2012 0.0269 0.0000 +vt -1.2061 0.0669 0.0000 +vt -1.2031 0.0469 0.0000 +vt -1.2119 0.1343 0.0000 +vt -1.2021 0.1743 0.0000 +vt -1.2100 0.1138 0.0000 +vt -1.2148 0.1733 0.0000 +vt -1.2100 0.0254 0.0000 +vt -1.2168 0.0659 0.0000 +vt -1.2139 0.0459 0.0000 +vt -1.2217 0.1128 0.0000 +vt -1.2246 0.1333 0.0000 +vt -1.2197 0.0654 0.0000 +vt -1.2051 0.2705 0.0000 +vt -1.2275 0.1729 0.0000 +vt -1.2256 0.1025 0.0000 +vt -1.2373 0.1323 0.0000 +vt -1.2344 0.1113 0.0000 +vt -1.2187 0.2700 0.0000 +vt -1.2324 0.1016 0.0000 +vt -1.2461 0.1099 0.0000 +vt -1.0889 0.1865 0.0000 +vt -1.2412 0.1719 0.0000 +vt -1.2490 0.1309 0.0000 +vt -1.2324 0.2695 0.0000 +vt -1.2197 0.3145 0.0000 +vt -1.2471 0.2690 0.0000 +vt -1.2441 0.0996 0.0000 +vt -1.0957 0.2690 0.0000 +vt -1.2539 0.1709 0.0000 +vt -1.2061 0.3145 0.0000 +vt -1.2480 0.3135 0.0000 +vt -1.2607 0.2681 0.0000 +vt -1.2344 0.3140 0.0000 +vt -1.1094 0.2695 0.0000 +vt -1.2207 0.3984 0.0000 +vt -1.1924 0.3145 0.0000 +vt -1.2627 0.3135 0.0000 +vt -1.2500 0.3984 0.0000 +vt -1.2354 0.3984 0.0000 +vt -1.1230 0.2700 0.0000 +vt -1.2070 0.3984 0.0000 +vt -1.2197 0.5364 0.0000 +vt -1.1924 0.3979 0.0000 +vt -1.2637 0.3984 0.0000 +vt -1.2490 0.5376 0.0000 +vt -1.2344 0.5369 0.0000 +vt -1.1367 0.2700 0.0000 +vt -1.2061 0.5359 0.0000 +vt -1.1914 0.5356 0.0000 +vt -1.2266 0.6370 0.0000 +vt -1.2139 0.6362 0.0000 +vt -1.2627 0.5383 0.0000 +vt -1.2402 0.6379 0.0000 +vt -1.1504 0.2705 0.0000 +vt -1.2070 0.7361 0.0000 +vt -1.2187 0.7368 0.0000 +vt -1.2002 0.6357 0.0000 +vt -1.2529 0.6389 0.0000 +vt -1.1641 0.2705 0.0000 +vt -1.2314 0.7380 0.0000 +vt -1.1963 0.8842 0.0000 +vt -1.2148 0.8859 0.0000 +vt -1.1777 0.2705 0.0000 +vt -1.2061 0.8848 0.0000 +vt -1.1953 0.7354 0.0000 +vt -1.1777 0.3979 0.0000 +vt -1.1865 0.8834 0.0000 +vt -1.2432 0.7393 0.0000 +vt -1.1914 0.2705 0.0000 +vt -1.1875 0.6353 0.0000 +vt -1.2246 0.8869 0.0000 +vt -1.1777 0.8831 0.0000 +vt -1.1777 0.5354 0.0000 +vt -1.1836 0.7349 0.0000 +vt -1.1680 0.8827 0.0000 +vt -1.1582 0.8826 0.0000 +vt -1.1719 0.7346 0.0000 +vt -1.1602 0.7344 0.0000 +vt -1.1748 0.6350 0.0000 +vt -1.1484 0.7344 0.0000 +vt -1.1621 0.6348 0.0000 +vt -1.1484 0.8826 0.0000 +vt -1.1777 0.3145 0.0000 +vt -1.1484 0.6348 0.0000 +vt -1.1631 0.5352 0.0000 +vt -1.1357 0.7344 0.0000 +vt -1.1396 0.8864 0.0000 +vt -1.1357 0.6348 0.0000 +vt -1.1494 0.5352 0.0000 +vt -1.1357 0.5352 0.0000 +vt -1.1240 0.7346 0.0000 +vt -1.1230 0.6350 0.0000 +vt -1.1299 0.8902 0.0000 +vt -1.1221 0.5354 0.0000 +vt -1.1123 0.7351 0.0000 +vt -1.1211 0.9015 0.0000 +vt -1.1230 0.3979 0.0000 +vt -1.1094 0.6355 0.0000 +vt -1.1074 0.5356 0.0000 +vt -1.1006 0.7356 0.0000 +vt -1.1123 0.9127 0.0000 +vt -1.0967 0.6357 0.0000 +vt -1.1064 0.3979 0.0000 +vt -1.0928 0.5359 0.0000 +vt -1.0889 0.7366 0.0000 +vt -1.1641 0.3979 0.0000 +vt -1.0840 0.6365 0.0000 +vt -1.1035 0.9257 0.0000 +vt -1.0781 0.5364 0.0000 +vt -1.1494 0.3979 0.0000 +vt -1.0937 0.3979 0.0000 +vt -1.0781 0.3979 0.0000 +vt -1.0771 0.7373 0.0000 +vt -1.0703 0.6370 0.0000 +vt -1.0947 0.9386 0.0000 +vt -1.1357 0.3979 0.0000 +vt -1.0645 0.5369 0.0000 +vt -1.0801 0.3135 0.0000 +vt -1.0635 0.3979 0.0000 +vt -1.0645 0.7383 0.0000 +vt -1.1084 0.3140 0.0000 +vt -1.0576 0.6379 0.0000 +vt -1.0859 0.9448 0.0000 +vt -1.0498 0.5376 0.0000 +vt -1.0498 0.3975 0.0000 +vt -1.0937 0.3135 0.0000 +vt -1.0527 0.7393 0.0000 +vt -1.0703 0.3130 0.0000 +vt -1.0762 0.9510 0.0000 +vt -1.0439 0.6387 0.0000 +vt -1.0625 0.3130 0.0000 +vt -1.0352 0.5383 0.0000 +vt -1.0352 0.3975 0.0000 +vt -1.0811 0.2686 0.0000 +vt -1.0508 0.3115 0.0000 +vt -1.1240 0.3145 0.0000 +vt -1.0693 0.2681 0.0000 +vt -1.0752 0.2681 0.0000 +vt -1.0566 0.2666 0.0000 +vt -1.0732 0.2456 0.0000 +vt -1.0693 0.2451 0.0000 +vt -1.1357 0.3145 0.0000 +vt -1.1504 0.3145 0.0000 +vt -1.1641 0.3145 0.0000 +vt -1.0527 0.1743 0.0000 +vt -1.0527 0.2505 0.0000 +vt -1.0547 0.2505 0.0000 +vt -1.0693 0.2148 0.0000 +vt -1.0693 0.1743 0.0000 +vt -1.0742 0.1743 0.0000 +vt -1.0771 0.1826 0.0000 +vt -1.2930 0.9232 0.0000 +vt -1.2549 0.9186 0.0000 +vt -1.2539 0.9952 0.0000 +vt -1.2959 0.9941 0.0000 +vt -1.3076 0.9282 0.0000 +vt -1.3096 0.9936 0.0000 +vt -1.0557 0.0571 0.0000 +vt -1.0674 0.0098 0.0000 +vt -1.0322 0.0083 0.0000 +vt -1.0381 0.0566 0.0000 +vt -1.0205 0.0562 0.0000 +vt -1.0215 0.0869 0.0000 +vt -1.0449 0.0869 0.0000 +vt -1.2383 0.0625 0.0000 +vt -1.2295 0.0220 0.0000 +vt -1.2197 0.0239 0.0000 +vt -1.2275 0.0640 0.0000 +vt -0.2246 0.3691 0.0000 +vt -0.2472 0.3701 0.0000 +vt -0.2279 0.3569 0.0000 +vt -0.2507 0.3579 0.0000 +vt -0.2284 0.3477 0.0000 +vt -0.2515 0.3477 0.0000 +vt -0.2507 0.3374 0.0000 +vt -0.2279 0.3389 0.0000 +vt -0.2473 0.3257 0.0000 +vt -0.2247 0.3267 0.0000 +vt -0.2507 0.3691 0.0000 +vt -0.2476 0.3594 0.0000 +vt -0.2267 0.3711 0.0000 +vt -0.2233 0.3613 0.0000 +vt -0.2462 0.3477 0.0000 +vt -0.2216 0.3481 0.0000 +vt -0.2224 0.3350 0.0000 +vt -0.2468 0.3354 0.0000 +vt -0.2251 0.3252 0.0000 +vt -0.2491 0.3257 0.0000 +vt -0.2522 0.3057 0.0000 +vt -0.2288 0.3022 0.0000 +vt -0.2490 0.3521 0.0000 +vt -0.2249 0.3530 0.0000 +vt -0.2490 0.3989 0.0000 +vt -0.2249 0.4004 0.0000 +vt -1.0264 0.2168 0.0000 +vt -1.0234 0.2251 0.0000 +vt -1.0479 0.2261 0.0000 +vt -1.0479 0.2178 0.0000 +vt -1.0449 0.1855 0.0000 +vt -1.0215 0.1846 0.0000 +vt -1.0498 0.1855 0.0000 +vt -0.0130 0.0396 0.0000 +vt -0.0173 0.0361 0.0000 +vt -0.0450 0.0361 0.0000 +vt -0.0378 0.0415 0.0000 +vt -1.3135 0.3677 0.0000 +vt -1.3115 0.3604 0.0000 +vt -1.3057 0.3550 0.0000 +vt -1.2988 0.3530 0.0000 +vt -1.2910 0.3550 0.0000 +vt -1.2861 0.3604 0.0000 +vt -1.2842 0.3677 0.0000 +vt -1.2861 0.3750 0.0000 +vt -1.2910 0.3804 0.0000 +vt -1.2988 0.3823 0.0000 +vt -1.3115 0.3750 0.0000 +vt -1.3057 0.3804 0.0000 +vt -0.2874 0.0854 0.0000 +vt -0.2905 0.0845 0.0000 +vt -0.2847 0.0850 0.0000 +vt -0.2893 0.0869 0.0000 +vt -0.3027 0.0835 0.0000 +vt -0.3027 0.0791 0.0000 +vt -0.2920 0.0898 0.0000 +vt -0.2891 0.0791 0.0000 +vt -0.2842 0.0845 0.0000 +vt -0.3159 0.0835 0.0000 +vt -0.3159 0.0791 0.0000 +vt -0.3291 0.0835 0.0000 +vt -0.3291 0.0791 0.0000 +vt -0.3423 0.0835 0.0000 +vt -0.3423 0.0791 0.0000 +vt -0.3555 0.0835 0.0000 +vt -0.3555 0.0898 0.0000 +vt -0.3684 0.0898 0.0000 +vt -0.3684 0.0835 0.0000 +vt -0.3813 0.0835 0.0000 +vt -0.3813 0.0898 0.0000 +vt -0.3948 0.0898 0.0000 +vt -0.3948 0.0835 0.0000 +vt -0.4082 0.0898 0.0000 +vt -0.4082 0.0835 0.0000 +vt -0.4209 0.0898 0.0000 +vt -0.4209 0.0835 0.0000 +vt -0.4333 0.0898 0.0000 +vt -0.4333 0.0835 0.0000 +vt -0.4456 0.0835 0.0000 +vt -0.4456 0.0898 0.0000 +vt -0.4578 0.0898 0.0000 +vt -0.4578 0.1230 0.0000 +vt -0.4709 0.0898 0.0000 +vt -0.4709 0.1230 0.0000 +vt -0.4841 0.0898 0.0000 +vt -0.4841 0.1230 0.0000 +vt -0.4844 0.0835 0.0000 +vt -0.4712 0.0835 0.0000 +vt -0.4841 0.0791 0.0000 +vt -0.4709 0.0791 0.0000 +vt -0.4707 0.0747 0.0000 +vt -0.4839 0.0747 0.0000 +vt -0.4578 0.0835 0.0000 +vt -0.4578 0.0747 0.0000 +vt -0.4578 0.0791 0.0000 +vt -0.4839 0.0229 0.0000 +vt -0.4707 0.0229 0.0000 +vt -0.4456 0.0747 0.0000 +vt -0.4456 0.1230 0.0000 +vt -0.4456 0.0791 0.0000 +vt -0.4578 0.0229 0.0000 +vt -0.4333 0.0747 0.0000 +vt -0.4333 0.0791 0.0000 +vt -0.4456 0.0229 0.0000 +vt -0.4333 0.1230 0.0000 +vt -0.4209 0.0747 0.0000 +vt -0.4209 0.0791 0.0000 +vt -0.4333 0.0229 0.0000 +vt -0.4209 0.1230 0.0000 +vt -0.4082 0.0747 0.0000 +vt -0.4082 0.0791 0.0000 +vt -0.4209 0.0229 0.0000 +vt -0.4082 0.1230 0.0000 +vt -0.3948 0.0791 0.0000 +vt -0.4082 0.0229 0.0000 +vt -0.3948 0.0747 0.0000 +vt -0.3948 0.0229 0.0000 +vt -0.3948 0.1230 0.0000 +vt -0.3813 0.0791 0.0000 +vt -0.3813 0.0747 0.0000 +vt -0.3813 0.0229 0.0000 +vt -0.3813 0.1230 0.0000 +vt -0.3684 0.0229 0.0000 +vt -0.3684 0.1230 0.0000 +vt -0.3684 0.0791 0.0000 +vt -0.3684 0.0747 0.0000 +vt -0.3555 0.0747 0.0000 +vt -0.3555 0.0229 0.0000 +vt -0.3555 0.1230 0.0000 +vt -0.3555 0.0791 0.0000 +vt -0.3423 0.0229 0.0000 +vt -0.3423 0.0747 0.0000 +vt -0.3423 0.1230 0.0000 +vt -0.3423 0.0898 0.0000 +vt -0.3291 0.0229 0.0000 +vt -0.3291 0.1230 0.0000 +vt -0.3291 0.0898 0.0000 +vt -0.3291 0.0747 0.0000 +vt -0.3159 0.0229 0.0000 +vt -0.3159 0.0747 0.0000 +vt -0.3159 0.0898 0.0000 +vt -0.3027 0.0229 0.0000 +vt -0.3159 0.1230 0.0000 +vt -0.3027 0.0747 0.0000 +vt -0.3027 0.1230 0.0000 +vt -0.3027 0.0898 0.0000 +vt -0.2891 0.0747 0.0000 +vt -0.2891 0.0229 0.0000 +vt -0.2915 0.1060 0.0000 +vt -0.2754 0.0229 0.0000 +vt -0.2922 0.0957 0.0000 +vt -0.2900 0.1230 0.0000 +vt -0.2913 0.0957 0.0000 +vt -0.2754 0.0747 0.0000 +vt -0.2881 0.1133 0.0000 +vt -0.2905 0.1055 0.0000 +vt -0.2754 0.0791 0.0000 +vt -0.2834 0.1226 0.0000 +vt -0.2769 0.0845 0.0000 +vt -1.4834 0.0898 0.0000 +vt -1.4707 0.0898 0.0000 +vt -1.4570 0.0898 0.0000 +vt -1.4844 0.0835 0.0000 +vt -1.4453 0.0898 0.0000 +vt -1.4707 0.0835 0.0000 +vt -1.4326 0.0898 0.0000 +vt -1.4453 0.0835 0.0000 +vt -1.4570 0.0835 0.0000 +vt -1.4209 0.0898 0.0000 +vt -1.4326 0.0835 0.0000 +vt -1.4209 0.0835 0.0000 +vt -1.4834 0.0791 0.0000 +vt -1.4707 0.0791 0.0000 +vt -1.4570 0.0791 0.0000 +vt -1.4453 0.0791 0.0000 +vt -1.4326 0.0791 0.0000 +vt -1.4082 0.0835 0.0000 +vt -1.4209 0.0791 0.0000 +vt -1.4707 0.0747 0.0000 +vt -1.4570 0.0747 0.0000 +vt -1.4453 0.0747 0.0000 +vt -1.4326 0.0747 0.0000 +vt -1.4082 0.0898 0.0000 +vt -1.4834 0.0747 0.0000 +vt -1.4209 0.0747 0.0000 +vt -1.4707 0.0229 0.0000 +vt -1.4082 0.0791 0.0000 +vt -1.4570 0.0229 0.0000 +vt -1.4834 0.0229 0.0000 +vt -1.4453 0.0229 0.0000 +vt -1.4082 0.0747 0.0000 +vt -1.4326 0.0229 0.0000 +vt -1.4209 0.0229 0.0000 +vt -1.3945 0.0835 0.0000 +vt -1.4082 0.0229 0.0000 +vt -1.3945 0.0791 0.0000 +vt -1.3945 0.0229 0.0000 +vt -1.3945 0.0747 0.0000 +vt -1.3945 0.0898 0.0000 +vt -1.3809 0.0791 0.0000 +vt -1.3809 0.0835 0.0000 +vt -1.3809 0.0747 0.0000 +vt -1.3682 0.0835 0.0000 +vt -1.3682 0.0791 0.0000 +vt -1.3809 0.0229 0.0000 +vt -1.3809 0.0898 0.0000 +vt -1.3682 0.0898 0.0000 +vt -1.3682 0.0747 0.0000 +vt -1.3682 0.0229 0.0000 +vt -1.3555 0.0791 0.0000 +vt -1.3555 0.0835 0.0000 +vt -1.3555 0.0747 0.0000 +vt -1.3555 0.0229 0.0000 +vt -1.3555 0.0898 0.0000 +vt -1.3418 0.0229 0.0000 +vt -1.3418 0.0791 0.0000 +vt -1.3418 0.0747 0.0000 +vt -1.3418 0.0835 0.0000 +vt -1.3291 0.0229 0.0000 +vt -1.3291 0.0791 0.0000 +vt -1.3291 0.0747 0.0000 +vt -1.3418 0.0898 0.0000 +vt -1.3291 0.0835 0.0000 +vt -1.3291 0.0898 0.0000 +vt -1.3154 0.0229 0.0000 +vt -1.3154 0.0791 0.0000 +vt -1.3154 0.0747 0.0000 +vt -1.3154 0.0835 0.0000 +vt -1.3154 0.0898 0.0000 +vt -1.3027 0.0229 0.0000 +vt -1.3027 0.0791 0.0000 +vt -1.3027 0.0747 0.0000 +vt -1.3027 0.0898 0.0000 +vt -1.3027 0.0835 0.0000 +vt -1.2891 0.0747 0.0000 +vt -1.2891 0.0791 0.0000 +vt -1.2900 0.0845 0.0000 +vt -1.2910 0.0898 0.0000 +vt -1.2891 0.0229 0.0000 +vt -1.2754 0.0791 0.0000 +vt -1.2793 0.1064 0.0000 +vt -1.2764 0.0845 0.0000 +vt -1.2754 0.0229 0.0000 +vt -1.2754 0.0747 0.0000 +vt -1.2803 0.0894 0.0000 +vt -1.2803 0.0957 0.0000 +vt -1.2754 0.1128 0.0000 +vt -1.2783 0.1055 0.0000 +vt -1.2715 0.1230 0.0000 +vt -1.2783 0.0869 0.0000 +vt -1.2793 0.0947 0.0000 +vt -1.2744 0.0854 0.0000 +vt -1.2725 0.0850 0.0000 +vt -1.2852 0.3486 0.0000 +vt -1.2852 0.3491 0.0000 +vt -1.2871 0.3477 0.0000 +vt -1.2861 0.3452 0.0000 +vt -1.2891 0.3467 0.0000 +vt -1.2871 0.3423 0.0000 +vt -1.2900 0.3418 0.0000 +vt -1.2910 0.3457 0.0000 +vt -1.2920 0.3413 0.0000 +vt -1.2891 0.3306 0.0000 +vt -1.2939 0.3457 0.0000 +vt -1.2920 0.3311 0.0000 +vt -1.2949 0.3413 0.0000 +vt -1.2959 0.3452 0.0000 +vt -1.2949 0.3311 0.0000 +vt -1.2871 0.3306 0.0000 +vt -1.2979 0.3413 0.0000 +vt -1.2979 0.3311 0.0000 +vt -1.2979 0.3452 0.0000 +vt -1.2930 0.3188 0.0000 +vt -1.2959 0.3193 0.0000 +vt -1.2910 0.3184 0.0000 +vt -1.3008 0.3452 0.0000 +vt -1.2988 0.3193 0.0000 +vt -1.3008 0.3413 0.0000 +vt -1.3018 0.3311 0.0000 +vt -1.2891 0.3179 0.0000 +vt -1.3027 0.3452 0.0000 +vt -1.2939 0.3081 0.0000 +vt -1.2949 0.3081 0.0000 +vt -1.2930 0.3076 0.0000 +vt -1.2969 0.3081 0.0000 +vt -1.3018 0.3193 0.0000 +vt -1.2988 0.3086 0.0000 +vt -1.3008 0.3086 0.0000 +vt -1.3037 0.3413 0.0000 +vt -1.2988 0.2959 0.0000 +vt -1.3047 0.3311 0.0000 +vt -1.3027 0.3081 0.0000 +vt -1.3047 0.3188 0.0000 +vt -1.3057 0.3457 0.0000 +vt -1.3037 0.3081 0.0000 +vt -1.3076 0.3306 0.0000 +vt -1.3066 0.3184 0.0000 +vt -1.3047 0.3081 0.0000 +vt -1.3066 0.3418 0.0000 +vt -1.3096 0.3306 0.0000 +vt -1.3086 0.3179 0.0000 +vt -1.3096 0.3418 0.0000 +vt -1.3076 0.3462 0.0000 +vt -1.3105 0.3452 0.0000 +vt -1.3096 0.3477 0.0000 +vt -1.3115 0.3486 0.0000 +vt -1.3105 0.3491 0.0000 +vt -1.7139 0.9405 0.0000 +vt -1.7139 0.9403 0.0000 +vt -1.7119 0.9435 0.0000 +vt -1.7119 0.9436 0.0000 +vt -1.6318 0.9133 0.0000 +vt -1.6260 0.9129 0.0000 +vt -1.6270 0.9133 0.0000 +vt -1.6318 0.9136 0.0000 +vt -1.7100 0.9472 0.0000 +vt -1.7109 0.9473 0.0000 +vt -1.6367 0.9144 0.0000 +vt -1.6367 0.9147 0.0000 +vt -1.7168 0.9380 0.0000 +vt -1.7158 0.9377 0.0000 +vt -1.6201 0.9129 0.0000 +vt -1.6211 0.9134 0.0000 +vt -1.5859 0.9170 0.0000 +vt -1.5859 0.9168 0.0000 +vt -1.5840 0.9193 0.0000 +vt -1.5840 0.9194 0.0000 +vt -1.5811 0.9202 0.0000 +vt -1.5811 0.9201 0.0000 +vt -1.5771 0.9194 0.0000 +vt -1.5771 0.9196 0.0000 +vt -1.5742 0.9179 0.0000 +vt -1.5742 0.9182 0.0000 +vt -1.5703 0.9168 0.0000 +vt -1.5703 0.9166 0.0000 +vt -1.6055 0.9176 0.0000 +vt -1.6055 0.9174 0.0000 +vt -1.5977 0.9143 0.0000 +vt -1.5977 0.9144 0.0000 +vt -1.5664 0.9174 0.0000 +vt -1.5664 0.9176 0.0000 +vt -1.5928 0.9118 0.0000 +vt -1.5928 0.9119 0.0000 +vt -1.6094 0.9171 0.0000 +vt -1.6094 0.9169 0.0000 +vt -1.7402 0.9351 0.0000 +vt -1.7393 0.9344 0.0000 +vt -1.7393 0.9347 0.0000 +vt -1.7402 0.9353 0.0000 +vt -1.7373 0.9340 0.0000 +vt -1.7373 0.9342 0.0000 +vt -1.8398 0.9450 0.0000 +vt -1.8398 0.9445 0.0000 +vt -1.8389 0.9443 0.0000 +vt -1.8389 0.9448 0.0000 +vt -1.8154 0.9391 0.0000 +vt -1.8164 0.9364 0.0000 +vt -1.8389 0.9468 0.0000 +vt -1.7764 0.9296 0.0000 +vt -1.8154 0.9432 0.0000 +vt -1.7773 0.9231 0.0000 +vt -1.7197 0.9151 0.0000 +vt -1.7764 0.9371 0.0000 +vt -1.7217 0.9014 0.0000 +vt -1.8389 0.9469 0.0000 +vt -1.7754 0.9370 0.0000 +vt -1.8193 0.9473 0.0000 +vt -1.8379 0.9483 0.0000 +vt -1.7842 0.9431 0.0000 +vt -1.7832 0.9430 0.0000 +vt -1.8389 0.9483 0.0000 +vt -1.8203 0.9521 0.0000 +vt -1.8389 0.9502 0.0000 +vt -1.7891 0.9479 0.0000 +vt -1.7881 0.9479 0.0000 +vt -1.7900 0.9526 0.0000 +vt -1.8389 0.9501 0.0000 +vt -1.8389 0.9513 0.0000 +vt -1.7900 0.9582 0.0000 +vt -1.7891 0.9527 0.0000 +vt -1.8193 0.9563 0.0000 +vt -1.8398 0.9511 0.0000 +vt -1.8389 0.9527 0.0000 +vt -1.8398 0.9524 0.0000 +vt -1.7881 0.9647 0.0000 +vt -1.8203 0.9584 0.0000 +vt -1.7891 0.9583 0.0000 +vt -1.7891 0.9680 0.0000 +vt -1.7881 0.9684 0.0000 +vt -1.7871 0.9649 0.0000 +vt -1.7217 0.9861 0.0000 +vt -1.6953 0.9086 0.0000 +vt -1.7207 0.9809 0.0000 +vt -1.7051 0.9842 0.0000 +vt -1.7061 0.9896 0.0000 +vt -1.6963 0.9911 0.0000 +vt -1.6953 0.9855 0.0000 +vt -1.7041 0.9781 0.0000 +vt -1.6943 0.9790 0.0000 +vt -1.6484 0.9884 0.0000 +vt -1.7021 0.9669 0.0000 +vt -1.6924 0.9674 0.0000 +vt -1.7002 0.9558 0.0000 +vt -1.6484 0.9938 0.0000 +vt -1.6025 0.9895 0.0000 +vt -1.6025 0.9946 0.0000 +vt -1.5566 0.9882 0.0000 +vt -1.5566 0.9933 0.0000 +vt -1.5137 0.9847 0.0000 +vt -1.5137 0.9897 0.0000 +vt -1.5039 0.9877 0.0000 +vt -1.5049 0.9827 0.0000 +vt -1.5166 0.9753 0.0000 +vt -1.5078 0.9729 0.0000 +vt -1.5117 0.9588 0.0000 +vt -1.5205 0.9615 0.0000 +vt -1.5166 0.9450 0.0000 +vt -1.5244 0.9479 0.0000 +vt -1.5215 0.9312 0.0000 +vt -1.6895 0.8899 0.0000 +vt -1.6904 0.9558 0.0000 +vt -1.5293 0.9343 0.0000 +vt -1.5264 0.9175 0.0000 +vt -1.5352 0.9208 0.0000 +vt -1.5322 0.9042 0.0000 +vt -1.5400 0.9076 0.0000 +vt -1.5439 0.8992 0.0000 +vt -1.5381 0.8900 0.0000 +vt -1.5469 0.8917 0.0000 +vt -1.5518 0.8926 0.0000 +vt -1.5527 0.8773 0.0000 +vt -1.5430 0.8779 0.0000 +vt -1.5791 0.8879 0.0000 +vt -1.5576 0.8667 0.0000 +vt -1.5840 0.8665 0.0000 +vt -1.5527 0.8667 0.0000 +vt -1.6094 0.8845 0.0000 +vt -1.6113 0.8716 0.0000 +vt -1.6455 0.8788 0.0000 +vt -1.6455 0.8916 0.0000 +vt -1.6982 0.9448 0.0000 +vt -1.6670 0.8834 0.0000 +vt -1.6670 0.8990 0.0000 +vt -1.6807 0.8872 0.0000 +vt -1.6836 0.9088 0.0000 +vt -1.6934 0.9091 0.0000 +vt -1.6836 0.9107 0.0000 +vt -1.6924 0.9126 0.0000 +vt -1.6846 0.9223 0.0000 +vt -1.6943 0.9236 0.0000 +vt -1.6865 0.9331 0.0000 +vt -1.6963 0.9340 0.0000 +vt -1.6885 0.9443 0.0000 +vt -1.7529 0.9633 0.0000 +vt -1.7539 0.9632 0.0000 +vt -1.7432 0.9397 0.0000 +vt -1.7432 0.9398 0.0000 +vt -1.7412 0.9360 0.0000 +vt -1.7412 0.9362 0.0000 +vt -1.5898 0.9124 0.0000 +vt -1.6133 0.9146 0.0000 +vt -1.6143 0.9147 0.0000 +vt -1.7187 0.9360 0.0000 +vt -1.7187 0.9357 0.0000 +vt -1.6143 0.9140 0.0000 +vt -1.6143 0.9144 0.0000 +vt -1.7256 0.9348 0.0000 +vt -1.7207 0.9352 0.0000 +vt -1.7207 0.9354 0.0000 +vt -1.7256 0.9349 0.0000 +vt -1.7197 0.9353 0.0000 +vt -1.7197 0.9355 0.0000 +vt -1.7422 0.9375 0.0000 +vt -1.7422 0.9377 0.0000 +vt -1.7100 0.9579 0.0000 +vt -1.7100 0.9580 0.0000 +vt -1.7109 0.9641 0.0000 +vt -1.7109 0.9640 0.0000 +vt -1.6396 0.9155 0.0000 +vt -1.6396 0.9156 0.0000 +vt -1.7100 0.9513 0.0000 +vt -1.7100 0.9514 0.0000 +vt -1.7100 0.9557 0.0000 +vt -1.7090 0.9557 0.0000 +vt -1.6445 0.9144 0.0000 +vt -1.6426 0.9147 0.0000 +vt -1.6426 0.9149 0.0000 +vt -1.6445 0.9146 0.0000 +vt -1.8437 0.9479 0.0000 +vt -1.6533 0.9144 0.0000 +vt -1.6533 0.9142 0.0000 +vt -1.5576 0.9196 0.0000 +vt -1.5576 0.9194 0.0000 +vt -1.5518 0.9169 0.0000 +vt -1.5518 0.9170 0.0000 +vt -1.6660 0.9143 0.0000 +vt -1.6660 0.9141 0.0000 +vt -1.5879 0.9144 0.0000 +vt -1.5879 0.9146 0.0000 +vt -1.5254 0.9176 0.0000 +vt -1.5205 0.9313 0.0000 +vt -1.5303 0.9043 0.0000 +vt -1.5039 0.9825 0.0000 +vt -1.5029 0.9874 0.0000 +vt -1.5068 0.9727 0.0000 +vt -1.5410 0.8780 0.0000 +vt -1.5361 0.8902 0.0000 +vt -1.5107 0.9588 0.0000 +vt -1.5508 0.8666 0.0000 +vt -1.5156 0.9450 0.0000 +vt -0.7119 0.9435 0.0000 +vt -0.7139 0.9403 0.0000 +vt -0.7144 0.9405 0.0000 +vt -0.7124 0.9436 0.0000 +vt -0.6318 0.9133 0.0000 +vt -0.6318 0.9136 0.0000 +vt -0.6270 0.9133 0.0000 +vt -0.6265 0.9129 0.0000 +vt -0.7104 0.9472 0.0000 +vt -0.7109 0.9473 0.0000 +vt -0.6367 0.9144 0.0000 +vt -0.6367 0.9147 0.0000 +vt -0.7163 0.9377 0.0000 +vt -0.7168 0.9380 0.0000 +vt -0.6211 0.9134 0.0000 +vt -0.6206 0.9129 0.0000 +vt -0.5840 0.9193 0.0000 +vt -0.5864 0.9168 0.0000 +vt -0.5864 0.9170 0.0000 +vt -0.5840 0.9194 0.0000 +vt -0.5811 0.9202 0.0000 +vt -0.5811 0.9201 0.0000 +vt -0.5776 0.9194 0.0000 +vt -0.5776 0.9196 0.0000 +vt -0.5742 0.9179 0.0000 +vt -0.5742 0.9182 0.0000 +vt -0.5703 0.9168 0.0000 +vt -0.5703 0.9166 0.0000 +vt -0.5977 0.9143 0.0000 +vt -0.6055 0.9174 0.0000 +vt -0.6055 0.9176 0.0000 +vt -0.5977 0.9144 0.0000 +vt -0.5669 0.9174 0.0000 +vt -0.5669 0.9176 0.0000 +vt -0.5933 0.9119 0.0000 +vt -0.5933 0.9118 0.0000 +vt -0.6099 0.9169 0.0000 +vt -0.6099 0.9171 0.0000 +vt -0.7407 0.9351 0.0000 +vt -0.7407 0.9353 0.0000 +vt -0.7393 0.9347 0.0000 +vt -0.7393 0.9344 0.0000 +vt -0.7373 0.9342 0.0000 +vt -0.7373 0.9340 0.0000 +vt -0.7437 0.9397 0.0000 +vt -0.7539 0.9632 0.0000 +vt -0.7534 0.9633 0.0000 +vt -0.7437 0.9398 0.0000 +vt -0.7417 0.9360 0.0000 +vt -0.7412 0.9362 0.0000 +vt -0.5898 0.9124 0.0000 +vt -0.6138 0.9146 0.0000 +vt -0.6143 0.9147 0.0000 +vt -0.7192 0.9357 0.0000 +vt -0.7192 0.9360 0.0000 +vt -0.6147 0.9144 0.0000 +vt -0.6143 0.9140 0.0000 +vt -0.7256 0.9348 0.0000 +vt -0.7256 0.9349 0.0000 +vt -0.7207 0.9354 0.0000 +vt -0.7207 0.9352 0.0000 +vt -0.7202 0.9355 0.0000 +vt -0.7202 0.9353 0.0000 +vt -0.7422 0.9377 0.0000 +vt -0.7427 0.9375 0.0000 +vt -0.7109 0.9641 0.0000 +vt -0.7100 0.9580 0.0000 +vt -0.7104 0.9579 0.0000 +vt -0.7114 0.9640 0.0000 +vt -0.6401 0.9155 0.0000 +vt -0.6401 0.9156 0.0000 +vt -0.7100 0.9513 0.0000 +vt -0.7100 0.9514 0.0000 +vt -0.7095 0.9557 0.0000 +vt -0.7100 0.9557 0.0000 +vt -0.6445 0.9144 0.0000 +vt -0.6445 0.9146 0.0000 +vt -0.6431 0.9149 0.0000 +vt -0.6431 0.9147 0.0000 +vt -0.6538 0.9142 0.0000 +vt -0.6538 0.9144 0.0000 +vt -0.5518 0.9169 0.0000 +vt -0.5581 0.9194 0.0000 +vt -0.5581 0.9196 0.0000 +vt -0.5518 0.9170 0.0000 +vt -0.6660 0.9141 0.0000 +vt -0.6660 0.9143 0.0000 +vt -0.5879 0.9144 0.0000 +vt -0.5884 0.9146 0.0000 +vt -0.5215 0.9312 0.0000 +vt -0.5205 0.9313 0.0000 +vt -0.5254 0.9176 0.0000 +vt -0.5269 0.9175 0.0000 +vt -0.5308 0.9043 0.0000 +vt -0.5322 0.9042 0.0000 +vt -0.5044 0.9825 0.0000 +vt -0.5049 0.9827 0.0000 +vt -0.5039 0.9877 0.0000 +vt -0.5029 0.9874 0.0000 +vt -0.5068 0.9727 0.0000 +vt -0.5078 0.9729 0.0000 +vt -0.5381 0.8900 0.0000 +vt -0.5361 0.8902 0.0000 +vt -0.5415 0.8780 0.0000 +vt -0.5435 0.8779 0.0000 +vt -0.5107 0.9588 0.0000 +vt -0.5117 0.9588 0.0000 +vt -0.5513 0.8666 0.0000 +vt -0.5527 0.8667 0.0000 +vt -0.5156 0.9450 0.0000 +vt -0.5166 0.9450 0.0000 +vt -0.5469 0.8917 0.0000 +vt -0.5522 0.8926 0.0000 +vt -0.5439 0.8992 0.0000 +vt -0.5532 0.8773 0.0000 +vt -0.5791 0.8879 0.0000 +vt -0.5576 0.8667 0.0000 +vt -0.5845 0.8665 0.0000 +vt -0.6099 0.8845 0.0000 +vt -0.6113 0.8716 0.0000 +vt -0.6455 0.8788 0.0000 +vt -0.6455 0.8916 0.0000 +vt -0.6675 0.8834 0.0000 +vt -0.6670 0.8990 0.0000 +vt -0.6807 0.8872 0.0000 +vt -0.6836 0.9088 0.0000 +vt -0.6899 0.8899 0.0000 +vt -0.6934 0.9091 0.0000 +vt -0.6953 0.9086 0.0000 +vt -0.7217 0.9014 0.0000 +vt -0.6836 0.9107 0.0000 +vt -0.7197 0.9151 0.0000 +vt -0.7778 0.9230 0.0000 +vt -0.7769 0.9296 0.0000 +vt -0.8164 0.9364 0.0000 +vt -0.6929 0.9126 0.0000 +vt -0.6851 0.9223 0.0000 +vt -0.6943 0.9236 0.0000 +vt -0.6870 0.9331 0.0000 +vt -0.6963 0.9340 0.0000 +vt -0.6890 0.9443 0.0000 +vt -0.6982 0.9448 0.0000 +vt -0.6909 0.9558 0.0000 +vt -0.7007 0.9558 0.0000 +vt -0.6929 0.9674 0.0000 +vt -0.7026 0.9669 0.0000 +vt -0.6948 0.9790 0.0000 +vt -0.7046 0.9781 0.0000 +vt -0.6958 0.9855 0.0000 +vt -0.7056 0.9842 0.0000 +vt -0.6963 0.9911 0.0000 +vt -0.7065 0.9896 0.0000 +vt -0.7222 0.9861 0.0000 +vt -0.6489 0.9884 0.0000 +vt -0.7207 0.9809 0.0000 +vt -0.7871 0.9649 0.0000 +vt -0.6489 0.9938 0.0000 +vt -0.7754 0.9370 0.0000 +vt -0.6025 0.9895 0.0000 +vt -0.6025 0.9946 0.0000 +vt -0.5571 0.9882 0.0000 +vt -0.5571 0.9933 0.0000 +vt -0.8159 0.9392 0.0000 +vt -0.5142 0.9847 0.0000 +vt -0.5137 0.9897 0.0000 +vt -0.5166 0.9753 0.0000 +vt -0.7881 0.9684 0.0000 +vt -0.5205 0.9615 0.0000 +vt -0.5249 0.9479 0.0000 +vt -0.5298 0.9343 0.0000 +vt -0.5352 0.9208 0.0000 +vt -0.7896 0.9680 0.0000 +vt -0.5405 0.9076 0.0000 +vt -0.7886 0.9646 0.0000 +vt -0.7896 0.9583 0.0000 +vt -0.7769 0.9371 0.0000 +vt -0.7900 0.9582 0.0000 +vt -0.8394 0.9443 0.0000 +vt -0.8208 0.9584 0.0000 +vt -0.7896 0.9527 0.0000 +vt -0.7905 0.9526 0.0000 +vt -0.8198 0.9563 0.0000 +vt -0.7896 0.9479 0.0000 +vt -0.7886 0.9479 0.0000 +vt -0.8208 0.9521 0.0000 +vt -0.8193 0.9473 0.0000 +vt -0.7852 0.9431 0.0000 +vt -0.7837 0.9430 0.0000 +vt -0.8394 0.9527 0.0000 +vt -0.8389 0.9513 0.0000 +vt -0.8389 0.9483 0.0000 +vt -0.8154 0.9432 0.0000 +vt -0.8389 0.9502 0.0000 +vt -0.8389 0.9468 0.0000 +vt -0.8394 0.9449 0.0000 +vt -1.4824 0.9805 0.0000 +vt -1.4844 0.9765 0.0000 +vt -1.4746 0.9768 0.0000 +vt -1.4766 0.9677 0.0000 +vt -1.4883 0.9674 0.0000 +vt -1.4814 0.9503 0.0000 +vt -1.4736 0.9556 0.0000 +vt -1.4648 0.9425 0.0000 +vt -1.4727 0.9352 0.0000 +vt -1.4521 0.9310 0.0000 +vt -1.4580 0.9225 0.0000 +vt -1.4414 0.9139 0.0000 +vt -1.4365 0.9228 0.0000 +vt -1.4287 0.9079 0.0000 +vt -1.4189 0.9144 0.0000 +vt -1.4121 0.9109 0.0000 +vt -1.4062 0.8963 0.0000 +vt -1.3994 0.9081 0.0000 +vt -1.4062 0.9158 0.0000 +vt -1.3994 0.9229 0.0000 +vt -1.3926 0.9164 0.0000 +vt -1.5127 0.9296 0.0000 +vt -1.5137 0.9304 0.0000 +vt -1.5186 0.9166 0.0000 +vt -1.5176 0.9157 0.0000 +vt -1.5225 0.9030 0.0000 +vt -1.5215 0.9021 0.0000 +vt -1.4932 0.9798 0.0000 +vt -1.4912 0.9843 0.0000 +vt -1.4922 0.9847 0.0000 +vt -1.4941 0.9802 0.0000 +vt -1.4980 0.9710 0.0000 +vt -1.4971 0.9706 0.0000 +vt -1.5264 0.8877 0.0000 +vt -1.5273 0.8887 0.0000 +vt -1.5303 0.8762 0.0000 +vt -1.5293 0.8750 0.0000 +vt -1.5039 0.9576 0.0000 +vt -1.5029 0.9570 0.0000 +vt -1.5381 0.8638 0.0000 +vt -1.5371 0.8624 0.0000 +vt -1.5088 0.9441 0.0000 +vt -1.5078 0.9433 0.0000 +vt -1.5166 0.8877 0.0000 +vt -1.5156 0.8898 0.0000 +vt -1.5127 0.8990 0.0000 +vt -1.5088 0.9126 0.0000 +vt -1.5039 0.9264 0.0000 +vt -1.4990 0.9402 0.0000 +vt -1.4941 0.9539 0.0000 +vt -1.4824 0.8738 0.0000 +vt -1.4834 0.8891 0.0000 +vt -1.4502 0.8817 0.0000 +vt -1.4502 0.8943 0.0000 +vt -1.4346 0.9026 0.0000 +vt -1.4316 0.9042 0.0000 +vt -1.4268 0.9060 0.0000 +vt -0.5186 0.9166 0.0000 +vt -0.5142 0.9304 0.0000 +vt -0.5229 0.9030 0.0000 +vt -0.4941 0.9802 0.0000 +vt -0.4922 0.9847 0.0000 +vt -0.4983 0.9710 0.0000 +vt -0.5308 0.8762 0.0000 +vt -0.5273 0.8887 0.0000 +vt -0.5039 0.9576 0.0000 +vt -0.5381 0.8638 0.0000 +vt -0.5088 0.9441 0.0000 +vt -0.7773 0.9229 0.0000 +vt -0.7764 0.9295 0.0000 +vt -0.8394 0.9479 0.0000 +vt -0.8394 0.9488 0.0000 +vt -0.8394 0.9498 0.0000 +vt -0.8394 0.9504 0.0000 +vt -1.5811 0.8174 0.0000 +vt -1.5811 0.8171 0.0000 +vt -1.5771 0.8171 0.0000 +vt -1.5771 0.8173 0.0000 +vt -1.5732 0.8175 0.0000 +vt -1.5732 0.8177 0.0000 +vt -1.5918 0.8176 0.0000 +vt -1.5918 0.8174 0.0000 +vt -1.5879 0.8175 0.0000 +vt -1.5879 0.8177 0.0000 +vt -1.5205 0.8276 0.0000 +vt -1.5205 0.8267 0.0000 +vt -1.5107 0.8289 0.0000 +vt -1.5117 0.8298 0.0000 +vt -1.6270 0.8291 0.0000 +vt -1.6270 0.8281 0.0000 +vt -1.6133 0.8262 0.0000 +vt -1.6133 0.8271 0.0000 +vt -1.5986 0.8176 0.0000 +vt -1.5986 0.8174 0.0000 +vt -1.5371 0.8262 0.0000 +vt -1.5371 0.8271 0.0000 +vt -1.5840 0.8174 0.0000 +vt -1.5840 0.8175 0.0000 +vt -1.5947 0.8251 0.0000 +vt -1.5947 0.8260 0.0000 +vt -1.6055 0.8190 0.0000 +vt -1.6055 0.8187 0.0000 +vt -1.5752 0.8248 0.0000 +vt -1.5752 0.8257 0.0000 +vt -1.5303 0.8195 0.0000 +vt -1.5303 0.8192 0.0000 +vt -1.5234 0.8191 0.0000 +vt -1.5234 0.8195 0.0000 +vt -1.5537 0.8264 0.0000 +vt -1.5537 0.8254 0.0000 +vt -1.5586 0.8199 0.0000 +vt -1.5586 0.8197 0.0000 +vt -1.5498 0.8197 0.0000 +vt -1.5498 0.8199 0.0000 +vt -1.5371 0.8197 0.0000 +vt -1.5371 0.8199 0.0000 +vt -1.6377 0.8318 0.0000 +vt -1.6377 0.8308 0.0000 +vt -1.4990 0.8319 0.0000 +vt -1.4990 0.8329 0.0000 +vt -0.5771 0.8171 0.0000 +vt -0.5811 0.8171 0.0000 +vt -0.5811 0.8174 0.0000 +vt -0.5771 0.8173 0.0000 +vt -0.5732 0.8177 0.0000 +vt -0.5732 0.8175 0.0000 +vt -0.5879 0.8175 0.0000 +vt -0.5923 0.8174 0.0000 +vt -0.5923 0.8176 0.0000 +vt -0.5879 0.8177 0.0000 +vt -0.5112 0.8289 0.0000 +vt -0.5205 0.8267 0.0000 +vt -0.5205 0.8276 0.0000 +vt -0.5117 0.8298 0.0000 +vt -0.6133 0.8262 0.0000 +vt -0.6274 0.8281 0.0000 +vt -0.6274 0.8291 0.0000 +vt -0.6133 0.8271 0.0000 +vt -0.5986 0.8174 0.0000 +vt -0.5986 0.8176 0.0000 +vt -0.5376 0.8262 0.0000 +vt -0.5376 0.8271 0.0000 +vt -0.5845 0.8175 0.0000 +vt -0.5845 0.8174 0.0000 +vt -0.5952 0.8251 0.0000 +vt -0.5952 0.8260 0.0000 +vt -0.6055 0.8187 0.0000 +vt -0.6055 0.8190 0.0000 +vt -0.5752 0.8248 0.0000 +vt -0.5752 0.8257 0.0000 +vt -0.5234 0.8191 0.0000 +vt -0.5308 0.8192 0.0000 +vt -0.5308 0.8195 0.0000 +vt -0.5234 0.8195 0.0000 +vt -0.5542 0.8254 0.0000 +vt -0.5542 0.8264 0.0000 +vt -0.5503 0.8197 0.0000 +vt -0.5591 0.8197 0.0000 +vt -0.5591 0.8199 0.0000 +vt -0.5503 0.8199 0.0000 +vt -0.5371 0.8197 0.0000 +vt -0.5371 0.8199 0.0000 +vt -0.6377 0.8308 0.0000 +vt -0.6377 0.8318 0.0000 +vt -0.4993 0.8319 0.0000 +vt -0.4995 0.8329 0.0000 +vt -1.5703 0.8181 0.0000 +vt -1.5703 0.8182 0.0000 +vt -1.5693 0.8185 0.0000 +vt -1.5693 0.8182 0.0000 +vt -1.5693 0.8184 0.0000 +vt -1.5684 0.8185 0.0000 +vt -1.5664 0.8188 0.0000 +vt -1.5664 0.8186 0.0000 +vt -1.5674 0.8187 0.0000 +vt -1.5674 0.8185 0.0000 +vt -0.5669 0.8188 0.0000 +vt -0.5669 0.8186 0.0000 +vt -0.5679 0.8187 0.0000 +vt -0.5679 0.8185 0.0000 +vt -0.5703 0.8181 0.0000 +vt -0.5703 0.8182 0.0000 +vt -0.5693 0.8185 0.0000 +vt -0.5693 0.8182 0.0000 +vt -0.5693 0.8184 0.0000 +vt -0.5688 0.8185 0.0000 +vt -1.5449 0.8197 0.0000 +vt -1.5449 0.8195 0.0000 +vt -1.5439 0.8196 0.0000 +vt -1.5430 0.8195 0.0000 +vt -1.5391 0.8196 0.0000 +vt -1.5391 0.8198 0.0000 +vt -0.5396 0.8196 0.0000 +vt -0.5396 0.8198 0.0000 +vt -0.5449 0.8197 0.0000 +vt -0.5449 0.8195 0.0000 +vt -0.5439 0.8196 0.0000 +vt -0.5435 0.8195 0.0000 +vt -0.5376 0.1147 0.0000 +vt -0.5342 0.1143 0.0000 +vt -0.5342 0.1079 0.0000 +vt -0.5366 0.1069 0.0000 +vt -0.6157 0.1113 0.0000 +vt -0.6157 0.1099 0.0000 +vt -0.6162 0.1104 0.0000 +vt -0.6162 0.1113 0.0000 +vt -0.6167 0.1108 0.0000 +vt -0.5498 0.1069 0.0000 +vt -0.5503 0.1147 0.0000 +vt -0.5947 0.1069 0.0000 +vt -0.5947 0.1147 0.0000 +vt -0.6025 0.1074 0.0000 +vt -0.6030 0.1138 0.0000 +vt -0.3606 0.5652 0.0000 +vt -0.4287 0.5649 0.0000 +vt -0.4292 0.5691 0.0000 +vt -0.3606 0.5691 0.0000 +vt -0.5181 0.1348 0.0000 +vt -0.5166 0.1968 0.0000 +vt -0.5127 0.1958 0.0000 +vt -0.5137 0.1348 0.0000 +vt -0.3564 0.9374 0.0000 +vt -0.3540 0.9270 0.0000 +vt -0.4285 0.8615 0.0000 +vt -0.4275 0.8530 0.0000 +vt -0.3523 0.9194 0.0000 +vt -0.4265 0.8455 0.0000 +vt -0.5571 0.7217 0.0000 +vt -0.3530 0.8875 0.0000 +vt -0.4268 0.8203 0.0000 +vt -0.5562 0.7131 0.0000 +vt -0.3538 0.8555 0.0000 +vt -0.5552 0.7058 0.0000 +vt -0.4270 0.7950 0.0000 +vt -0.5547 0.6826 0.0000 +vt -0.3555 0.7916 0.0000 +vt -0.5957 0.6799 0.0000 +vt -0.5947 0.6711 0.0000 +vt -0.4277 0.7449 0.0000 +vt -0.5937 0.6641 0.0000 +vt -0.3582 0.6638 0.0000 +vt -0.5547 0.6597 0.0000 +vt -0.5908 0.6440 0.0000 +vt -0.4287 0.6440 0.0000 +vt -0.5542 0.6135 0.0000 +vt -0.6172 0.6570 0.0000 +vt -0.6157 0.6487 0.0000 +vt -0.6147 0.6414 0.0000 +vt -0.5884 0.6240 0.0000 +vt -0.6143 0.6189 0.0000 +vt -0.5547 0.5208 0.0000 +vt -0.5830 0.5840 0.0000 +vt -0.7661 0.4980 0.0000 +vt -0.7632 0.4902 0.0000 +vt -0.7607 0.4829 0.0000 +vt -0.6143 0.5964 0.0000 +vt -0.7554 0.4683 0.0000 +vt -0.5718 0.5039 0.0000 +vt -0.6138 0.5518 0.0000 +vt -0.7729 0.4888 0.0000 +vt -0.7695 0.4829 0.0000 +vt -0.7661 0.4771 0.0000 +vt -0.7495 0.4531 0.0000 +vt -0.7690 0.4722 0.0000 +vt -0.7788 0.4785 0.0000 +vt -0.7734 0.4756 0.0000 +vt -0.7710 0.4668 0.0000 +vt -0.7729 0.4604 0.0000 +vt -0.7754 0.4487 0.0000 +vt -0.7769 0.4668 0.0000 +vt -0.7827 0.4663 0.0000 +vt -0.7378 0.4238 0.0000 +vt -0.7788 0.4600 0.0000 +vt -0.7808 0.4482 0.0000 +vt -0.7573 0.4146 0.0000 +vt -0.7842 0.4595 0.0000 +vt -0.7769 0.4346 0.0000 +vt -0.7861 0.4478 0.0000 +vt -0.6167 0.4604 0.0000 +vt -0.7822 0.4336 0.0000 +vt -0.5552 0.4521 0.0000 +vt -0.5898 0.4868 0.0000 +vt -0.7871 0.4331 0.0000 +vt -0.7778 0.4160 0.0000 +vt -0.7832 0.4150 0.0000 +vt -0.7544 0.4043 0.0000 +vt -0.7773 0.3970 0.0000 +vt -0.7148 0.3643 0.0000 +vt -0.7876 0.4141 0.0000 +vt -0.7822 0.3960 0.0000 +vt -0.7769 0.3779 0.0000 +vt -0.7314 0.3462 0.0000 +vt -0.7871 0.3950 0.0000 +vt -0.7812 0.3765 0.0000 +vt -0.7861 0.3755 0.0000 +vt -0.7744 0.3564 0.0000 +vt -0.7793 0.3550 0.0000 +vt -0.7715 0.3428 0.0000 +vt -0.5820 0.4790 0.0000 +vt -0.7661 0.3291 0.0000 +vt -0.5635 0.4443 0.0000 +vt -0.7583 0.3179 0.0000 +vt -0.7837 0.3535 0.0000 +vt -0.7476 0.3096 0.0000 +vt -0.7344 0.3062 0.0000 +vt -0.7759 0.3413 0.0000 +vt -0.7700 0.3271 0.0000 +vt -0.7490 0.3066 0.0000 +vt -0.7808 0.3394 0.0000 +vt -0.7344 0.3042 0.0000 +vt -0.7744 0.3247 0.0000 +vt -0.7612 0.3145 0.0000 +vt -0.7642 0.3115 0.0000 +vt -0.7510 0.3037 0.0000 +vt -0.7344 0.3018 0.0000 +vt -0.5806 0.4287 0.0000 +vt -0.5547 0.4482 0.0000 +vt -0.5630 0.4404 0.0000 +vt -0.5801 0.4243 0.0000 +vt -0.3845 0.3306 0.0000 +vt -0.3987 0.3154 0.0000 +vt -0.3875 0.3325 0.0000 +vt -0.4028 0.3164 0.0000 +vt -0.4060 0.3081 0.0000 +vt -0.4099 0.3091 0.0000 +vt -0.5845 0.1973 0.0000 +vt -0.6030 0.1343 0.0000 +vt -0.6753 0.1978 0.0000 +vt -0.7183 0.1362 0.0000 +vt -0.7207 0.1982 0.0000 +vt -0.7764 0.1343 0.0000 +vt -0.7432 0.1982 0.0000 +vt -0.8052 0.1338 0.0000 +vt -0.7661 0.1982 0.0000 +vt -0.8340 0.1328 0.0000 +vt -0.7725 0.1987 0.0000 +vt -0.8398 0.1333 0.0000 +vt -0.7798 0.1992 0.0000 +vt -0.8477 0.1338 0.0000 +vt -0.4368 0.3325 0.0000 +vt -0.4565 0.3247 0.0000 +vt -0.4719 0.3091 0.0000 +vt -0.4426 0.3384 0.0000 +vt -0.5557 0.3101 0.0000 +vt -0.5283 0.3354 0.0000 +vt -0.4978 0.3643 0.0000 +vt -0.5972 0.3115 0.0000 +vt -0.5645 0.3413 0.0000 +vt -0.4175 0.3633 0.0000 +vt -0.5386 0.3647 0.0000 +vt -0.6177 0.3120 0.0000 +vt -0.3821 0.4731 0.0000 +vt -0.4087 0.4844 0.0000 +vt -0.5825 0.3438 0.0000 +vt -0.5591 0.3652 0.0000 +vt -0.3289 0.4517 0.0000 +vt -0.3748 0.4902 0.0000 +vt -0.3662 0.4863 0.0000 +vt -0.4221 0.4897 0.0000 +vt -0.4043 0.5078 0.0000 +vt -0.4150 0.5056 0.0000 +vt -0.4207 0.5042 0.0000 +vt -0.3132 0.4658 0.0000 +vt -0.2866 0.4907 0.0000 +vt -0.3574 0.5090 0.0000 +vt -0.2966 0.4976 0.0000 +vt -0.3088 0.5029 0.0000 +vt -0.3208 0.5056 0.0000 +vt -0.3401 0.5085 0.0000 +vt -0.2795 0.4810 0.0000 +vt -0.2942 0.5020 0.0000 +vt -0.3066 0.5081 0.0000 +vt -0.2834 0.4932 0.0000 +vt -0.3193 0.5112 0.0000 +vt -0.2761 0.4683 0.0000 +vt -0.3391 0.5127 0.0000 +vt -0.3914 0.5088 0.0000 +vt -0.6387 0.3125 0.0000 +vt -0.4146 0.5115 0.0000 +vt -0.5796 0.3652 0.0000 +vt -0.3748 0.5095 0.0000 +vt -0.6006 0.3467 0.0000 +vt -0.2771 0.4819 0.0000 +vt -0.4204 0.5105 0.0000 +vt -0.4353 0.4951 0.0000 +vt -0.2808 0.4951 0.0000 +vt -0.2737 0.4683 0.0000 +vt -0.3564 0.5139 0.0000 +vt -0.4255 0.5022 0.0000 +vt -0.2920 0.5059 0.0000 +vt -0.3184 0.5151 0.0000 +vt -0.3381 0.5166 0.0000 +vt -0.3052 0.5122 0.0000 +vt -0.2744 0.4829 0.0000 +vt -0.3555 0.5173 0.0000 +vt -0.3738 0.5142 0.0000 +vt -0.4036 0.5134 0.0000 +vt -0.2720 0.4683 0.0000 +vt -0.4287 0.5068 0.0000 +vt -0.3730 0.5183 0.0000 +vt -0.4299 0.5000 0.0000 +vt -0.3906 0.5139 0.0000 +vt -0.3899 0.5183 0.0000 +vt -0.4031 0.5176 0.0000 +vt -0.4141 0.5159 0.0000 +vt -0.4202 0.5144 0.0000 +vt -0.4309 0.5103 0.0000 +vt -0.4351 0.5024 0.0000 +vt -0.4399 0.5046 0.0000 +vt -0.4417 0.4971 0.0000 +vt -0.4480 0.4985 0.0000 +vt -0.5869 0.3662 0.0000 +vt -0.5933 0.3667 0.0000 +vt -0.6079 0.3472 0.0000 +vt -0.6143 0.3477 0.0000 +vt -0.6455 0.3130 0.0000 +vt -0.6523 0.3135 0.0000 +vt -0.7153 0.3003 0.0000 +vt -0.7285 0.2993 0.0000 +vt -0.7285 0.3037 0.0000 +vt -0.7158 0.3042 0.0000 +vt -0.7275 0.3423 0.0000 +vt -0.7031 0.3105 0.0000 +vt -0.7026 0.3066 0.0000 +vt -0.6948 0.3169 0.0000 +vt -0.7119 0.3599 0.0000 +vt -0.6943 0.3135 0.0000 +vt -0.5835 0.4233 0.0000 +vt -0.5830 0.4194 0.0000 +vt -0.5854 0.4712 0.0000 +vt -0.5928 0.4790 0.0000 +vt -0.2729 0.4624 0.0000 +vt -0.2737 0.4512 0.0000 +vt -0.2769 0.4624 0.0000 +vt -0.2776 0.4512 0.0000 +vt -0.2788 0.4399 0.0000 +vt -0.2827 0.4404 0.0000 +vt -0.2847 0.4326 0.0000 +vt -0.3113 0.4609 0.0000 +vt -0.2883 0.4331 0.0000 +vt -0.3762 0.3340 0.0000 +vt -0.3792 0.3359 0.0000 +vt -0.3259 0.4478 0.0000 +vt -0.4250 0.3354 0.0000 +vt -0.4307 0.3408 0.0000 +vt -0.6016 0.1177 0.0000 +vt -0.6011 0.1240 0.0000 +vt -0.5977 0.1245 0.0000 +vt -0.5986 0.1167 0.0000 +vt -0.5200 0.1206 0.0000 +vt -0.5190 0.1201 0.0000 +vt -0.5200 0.1191 0.0000 +vt -0.5327 0.1235 0.0000 +vt -0.5332 0.1167 0.0000 +vt -0.6182 0.1240 0.0000 +vt -0.6177 0.1255 0.0000 +vt -0.6187 0.1250 0.0000 +vt -0.5405 0.1240 0.0000 +vt -0.5410 0.1162 0.0000 +vt -0.8179 0.4980 0.0000 +vt -0.8159 0.4980 0.0000 +vt -0.8198 0.4858 0.0000 +vt -0.8203 0.4971 0.0000 +vt -0.8223 0.4961 0.0000 +vt -0.8242 0.4941 0.0000 +vt -0.8252 0.4922 0.0000 +vt -0.8262 0.4888 0.0000 +vt -0.8267 0.4854 0.0000 +vt -0.8271 0.4819 0.0000 +vt -0.8271 0.4785 0.0000 +vt -0.8188 0.4033 0.0000 +vt -0.8271 0.4697 0.0000 +vt -0.8271 0.4614 0.0000 +vt -0.8267 0.4438 0.0000 +vt -0.8262 0.4097 0.0000 +vt -0.8257 0.3960 0.0000 +vt -0.8140 0.3203 0.0000 +vt -0.8237 0.3613 0.0000 +vt -0.8218 0.3267 0.0000 +vt -0.8208 0.3198 0.0000 +vt -0.8198 0.3130 0.0000 +vt -0.8027 0.2593 0.0000 +vt -0.8159 0.2891 0.0000 +vt -0.8037 0.2593 0.0000 +vt -0.8066 0.2598 0.0000 +vt -0.8091 0.2607 0.0000 +vt -0.8115 0.2651 0.0000 +vt -0.8105 0.2627 0.0000 +vt -0.8198 0.2695 0.0000 +vt -0.8140 0.2588 0.0000 +vt -0.8164 0.2583 0.0000 +vt -0.8184 0.2588 0.0000 +vt -0.8208 0.2598 0.0000 +vt -0.8228 0.2607 0.0000 +vt -0.8237 0.2632 0.0000 +vt -0.8252 0.2661 0.0000 +vt -0.8267 0.2695 0.0000 +vt -0.8271 0.2725 0.0000 +vt -0.8276 0.2759 0.0000 +vt -0.8301 0.3501 0.0000 +vt -0.8291 0.2842 0.0000 +vt -0.8301 0.2925 0.0000 +vt -0.8320 0.3096 0.0000 +vt -0.8359 0.3433 0.0000 +vt -0.8374 0.3569 0.0000 +vt -0.8340 0.4336 0.0000 +vt -0.8394 0.3916 0.0000 +vt -0.8413 0.4263 0.0000 +vt -0.8408 0.4331 0.0000 +vt -0.8408 0.4404 0.0000 +vt -0.8286 0.4971 0.0000 +vt -0.8394 0.4653 0.0000 +vt -0.8301 0.4971 0.0000 +vt -0.8325 0.4966 0.0000 +vt -0.8350 0.4951 0.0000 +vt -0.8374 0.4902 0.0000 +vt -0.8364 0.4927 0.0000 +vt -0.4956 0.8359 0.0000 +vt -0.4963 0.8358 0.0000 +vt -0.4951 0.8373 0.0000 +vt -0.4961 0.8372 0.0000 +vt -0.4985 0.8357 0.0000 +vt -0.4983 0.8370 0.0000 +vt -0.5005 0.8356 0.0000 +vt -0.5005 0.8369 0.0000 +vt -0.5029 0.8354 0.0000 +vt -0.5024 0.8368 0.0000 +vt -0.5049 0.8353 0.0000 +vt -0.5049 0.8367 0.0000 +vt -0.5249 0.8335 0.0000 +vt -0.5249 0.8348 0.0000 +vt -0.5449 0.8318 0.0000 +vt -0.5444 0.8330 0.0000 +vt -0.5498 0.8317 0.0000 +vt -0.5498 0.8329 0.0000 +vt -0.5547 0.8317 0.0000 +vt -0.5547 0.8328 0.0000 +vt -0.5762 0.8335 0.0000 +vt -0.5757 0.8346 0.0000 +vt -0.5972 0.8353 0.0000 +vt -0.5967 0.8364 0.0000 +vt -0.6045 0.8362 0.0000 +vt -0.6040 0.8369 0.0000 +vt -0.6191 0.8374 0.0000 +vt -0.6191 0.8381 0.0000 +vt -0.6265 0.8380 0.0000 +vt -0.6265 0.8387 0.0000 +vt -0.6304 0.8383 0.0000 +vt -0.6299 0.8390 0.0000 +vt -0.6338 0.8386 0.0000 +vt -0.6338 0.8394 0.0000 +vt -0.6353 0.8395 0.0000 +vt -0.6353 0.8387 0.0000 +vt -0.6367 0.8396 0.0000 +vt -0.6367 0.8389 0.0000 +vt -0.6382 0.8396 0.0000 +vt -0.6382 0.8390 0.0000 +vt -0.6396 0.8397 0.0000 +vt -0.6396 0.8390 0.0000 +vt -0.6406 0.8397 0.0000 +vt -0.6406 0.8390 0.0000 +vt -0.6416 0.8398 0.0000 +vt -0.6416 0.8392 0.0000 +vt -0.6426 0.8401 0.0000 +vt -0.6426 0.8394 0.0000 +vt -0.6436 0.8403 0.0000 +vt -0.6436 0.8396 0.0000 +vt -0.6445 0.8400 0.0000 +vt -0.6440 0.8406 0.0000 +vt -0.6191 0.8450 0.0000 +vt -0.6191 0.8448 0.0000 +vt -0.6191 0.8446 0.0000 +vt -0.6191 0.8445 0.0000 +vt -0.6182 0.8445 0.0000 +vt -0.6182 0.8441 0.0000 +vt -0.6172 0.8441 0.0000 +vt -0.6172 0.8438 0.0000 +vt -0.6167 0.8439 0.0000 +vt -0.6167 0.8434 0.0000 +vt -0.6157 0.8436 0.0000 +vt -0.6157 0.8433 0.0000 +vt -0.6089 0.8423 0.0000 +vt -0.6089 0.8418 0.0000 +vt -0.6016 0.8409 0.0000 +vt -0.6016 0.8405 0.0000 +vt -0.5991 0.8407 0.0000 +vt -0.5991 0.8401 0.0000 +vt -0.5967 0.8407 0.0000 +vt -0.5967 0.8401 0.0000 +vt -0.5845 0.8409 0.0000 +vt -0.5845 0.8405 0.0000 +vt -0.5723 0.8413 0.0000 +vt -0.5723 0.8407 0.0000 +vt -0.5708 0.8414 0.0000 +vt -0.5708 0.8408 0.0000 +vt -0.5693 0.8417 0.0000 +vt -0.5693 0.8409 0.0000 +vt -0.5674 0.8419 0.0000 +vt -0.5674 0.8411 0.0000 +vt -0.5654 0.8420 0.0000 +vt -0.5654 0.8413 0.0000 +vt -0.5566 0.8422 0.0000 +vt -0.5566 0.8413 0.0000 +vt -0.5479 0.8422 0.0000 +vt -0.5479 0.8413 0.0000 +vt -0.5391 0.8422 0.0000 +vt -0.5391 0.8413 0.0000 +vt -0.5303 0.8422 0.0000 +vt -0.5303 0.8414 0.0000 +vt -0.5283 0.8424 0.0000 +vt -0.5283 0.8416 0.0000 +vt -0.5264 0.8427 0.0000 +vt -0.5264 0.8418 0.0000 +vt -0.5244 0.8419 0.0000 +vt -0.5244 0.8429 0.0000 +vt -0.5220 0.8422 0.0000 +vt -0.5220 0.8431 0.0000 +vt -0.5205 0.8424 0.0000 +vt -0.5205 0.8434 0.0000 +vt -0.5186 0.8425 0.0000 +vt -0.5186 0.8435 0.0000 +vt -0.5171 0.8425 0.0000 +vt -0.5171 0.8435 0.0000 +vt -0.5151 0.8424 0.0000 +vt -0.5151 0.8435 0.0000 +vt -0.5137 0.8434 0.0000 +vt -0.5137 0.8423 0.0000 +vt -0.7993 0.2769 0.0000 +vt -0.7964 0.2725 0.0000 +vt -0.7983 0.2744 0.0000 +vt -0.8037 0.2979 0.0000 +vt -0.7944 0.2715 0.0000 +vt -0.7915 0.2710 0.0000 +vt -0.7905 0.2710 0.0000 +vt -0.8076 0.3188 0.0000 +vt -0.8022 0.3262 0.0000 +vt -0.8091 0.3257 0.0000 +vt -0.8096 0.3325 0.0000 +vt -0.8115 0.3638 0.0000 +vt -0.8135 0.3945 0.0000 +vt -0.8066 0.4019 0.0000 +vt -0.8140 0.3979 0.0000 +vt -0.8140 0.4019 0.0000 +vt -0.8140 0.4053 0.0000 +vt -0.8140 0.4087 0.0000 +vt -0.8140 0.4243 0.0000 +vt -0.8140 0.4399 0.0000 +vt -0.8135 0.4556 0.0000 +vt -0.8135 0.4712 0.0000 +vt -0.8062 0.4785 0.0000 +vt -0.8135 0.4746 0.0000 +vt -0.8130 0.4780 0.0000 +vt -0.8120 0.4814 0.0000 +vt -0.8110 0.4844 0.0000 +vt -0.8101 0.4868 0.0000 +vt -0.8081 0.4888 0.0000 +vt -0.8062 0.4897 0.0000 +vt -0.8037 0.4902 0.0000 +vt -0.8018 0.4907 0.0000 +vt -0.7974 0.4912 0.0000 +vt -0.7993 0.4863 0.0000 +vt -0.7988 0.4888 0.0000 +vt -0.8013 0.4653 0.0000 +vt -0.7949 0.4927 0.0000 +vt -0.7925 0.4932 0.0000 +vt -0.7915 0.4932 0.0000 +vt -0.8027 0.4443 0.0000 +vt -0.7964 0.4375 0.0000 +vt -0.8032 0.4375 0.0000 +vt -0.8032 0.4307 0.0000 +vt -0.7920 0.3618 0.0000 +vt -0.8018 0.3994 0.0000 +vt -0.7930 0.3618 0.0000 +vt -0.7974 0.3389 0.0000 +vt -0.7954 0.3232 0.0000 +vt -0.7939 0.3076 0.0000 +vt -0.7920 0.2920 0.0000 +vt -0.8003 0.3682 0.0000 +vt -0.7837 0.2856 0.0000 +vt -0.7988 0.3545 0.0000 +vt -0.7998 0.3647 0.0000 +vt -0.7998 0.3613 0.0000 +vt -0.7993 0.3579 0.0000 +vt -0.7915 0.2886 0.0000 +vt -0.7905 0.2852 0.0000 +vt -0.7896 0.2822 0.0000 +vt -0.7881 0.2788 0.0000 +vt -0.7871 0.2764 0.0000 +vt -0.7852 0.2749 0.0000 +vt -0.7827 0.2739 0.0000 +vt -0.7803 0.2739 0.0000 +vt -0.7783 0.2739 0.0000 +vt -0.6211 0.8484 0.0000 +vt -0.6211 0.8486 0.0000 +vt -0.6201 0.8481 0.0000 +vt -0.6201 0.8479 0.0000 +vt -0.6191 0.8474 0.0000 +vt -0.6191 0.8477 0.0000 +vt -0.6177 0.8469 0.0000 +vt -0.6177 0.8472 0.0000 +vt -0.6167 0.8466 0.0000 +vt -0.6167 0.8468 0.0000 +vt -0.6152 0.8463 0.0000 +vt -0.6152 0.8461 0.0000 +vt -0.6133 0.8459 0.0000 +vt -0.6133 0.8456 0.0000 +vt -0.6113 0.8453 0.0000 +vt -0.6113 0.8456 0.0000 +vt -0.6089 0.8451 0.0000 +vt -0.6089 0.8455 0.0000 +vt -0.6069 0.8450 0.0000 +vt -0.6069 0.8453 0.0000 +vt -0.5967 0.8451 0.0000 +vt -0.5967 0.8447 0.0000 +vt -0.5864 0.8447 0.0000 +vt -0.5864 0.8444 0.0000 +vt -0.5762 0.8445 0.0000 +vt -0.5762 0.8441 0.0000 +vt -0.5659 0.8442 0.0000 +vt -0.5659 0.8439 0.0000 +vt -0.5610 0.8442 0.0000 +vt -0.5610 0.8439 0.0000 +vt -0.5566 0.8446 0.0000 +vt -0.5566 0.8444 0.0000 +vt -0.5376 0.8469 0.0000 +vt -0.5376 0.8473 0.0000 +vt -0.5186 0.8495 0.0000 +vt -0.5186 0.8499 0.0000 +vt -0.5166 0.8501 0.0000 +vt -0.5166 0.8497 0.0000 +vt -0.5151 0.8505 0.0000 +vt -0.5151 0.8501 0.0000 +vt -0.5137 0.8508 0.0000 +vt -0.5137 0.8506 0.0000 +vt -0.5122 0.8513 0.0000 +vt -0.5122 0.8510 0.0000 +vt -0.5117 0.8514 0.0000 +vt -0.5117 0.8512 0.0000 +vt -0.8521 0.3364 0.0000 +vt -0.8472 0.2983 0.0000 +vt -0.8486 0.3013 0.0000 +vt -0.8447 0.2959 0.0000 +vt -0.8423 0.2949 0.0000 +vt -0.8389 0.2944 0.0000 +vt -0.8379 0.2949 0.0000 +vt -0.8560 0.3716 0.0000 +vt -0.8481 0.3809 0.0000 +vt -0.8564 0.3794 0.0000 +vt -0.8574 0.3877 0.0000 +vt -0.8584 0.4058 0.0000 +vt -0.8594 0.4238 0.0000 +vt -0.8599 0.4414 0.0000 +vt -0.8608 0.4595 0.0000 +vt -0.8530 0.4688 0.0000 +vt -0.8613 0.4634 0.0000 +vt -0.8608 0.4673 0.0000 +vt -0.8604 0.4717 0.0000 +vt -0.8594 0.4756 0.0000 +vt -0.8584 0.4780 0.0000 +vt -0.8564 0.4805 0.0000 +vt -0.8540 0.4819 0.0000 +vt -0.8511 0.4824 0.0000 +vt -0.8486 0.4829 0.0000 +vt -0.8730 0.4766 0.0000 +vt -0.8721 0.4380 0.0000 +vt -0.8740 0.4736 0.0000 +vt -0.8711 0.4790 0.0000 +vt -0.8682 0.4810 0.0000 +vt -0.8652 0.4814 0.0000 +vt -0.8643 0.4814 0.0000 +vt -0.8706 0.4028 0.0000 +vt -0.8618 0.3950 0.0000 +vt -0.8706 0.3945 0.0000 +vt -0.8696 0.3867 0.0000 +vt -0.8682 0.3687 0.0000 +vt -0.8662 0.3506 0.0000 +vt -0.8647 0.3330 0.0000 +vt -0.8628 0.3149 0.0000 +vt -0.8535 0.3071 0.0000 +vt -0.8623 0.3110 0.0000 +vt -0.8613 0.3071 0.0000 +vt -0.8604 0.3032 0.0000 +vt -0.8589 0.2993 0.0000 +vt -0.8574 0.2969 0.0000 +vt -0.8550 0.2949 0.0000 +vt -0.8525 0.2939 0.0000 +vt -0.8496 0.2935 0.0000 +vt -0.8472 0.2939 0.0000 +vt -0.9297 0.2031 0.0000 +vt -0.9268 0.2031 0.0000 +vt -0.9268 0.1987 0.0000 +vt -0.9297 0.1987 0.0000 +vt -0.9297 0.1924 0.0000 +vt -0.9268 0.1924 0.0000 +vt -0.9336 0.1987 0.0000 +vt -0.9297 0.1860 0.0000 +vt -0.9268 0.1860 0.0000 +vt -0.9336 0.1924 0.0000 +vt -0.9297 0.1772 0.0000 +vt -0.9336 0.1860 0.0000 +vt -0.9268 0.1772 0.0000 +vt -0.9336 0.2031 0.0000 +vt -0.9375 0.2031 0.0000 +vt -0.9375 0.1924 0.0000 +vt -0.9375 0.1987 0.0000 +vt -0.9336 0.1772 0.0000 +vt -0.9375 0.1860 0.0000 +vt -0.9375 0.1772 0.0000 +vt -0.9414 0.2031 0.0000 +vt -0.9414 0.1924 0.0000 +vt -0.9336 0.1685 0.0000 +vt -0.9414 0.1860 0.0000 +vt -0.9414 0.1987 0.0000 +vt -0.9414 0.1772 0.0000 +vt -0.9375 0.1685 0.0000 +vt -0.9448 0.2031 0.0000 +vt -0.9448 0.1924 0.0000 +vt -0.9448 0.1860 0.0000 +vt -0.9448 0.1987 0.0000 +vt -0.9448 0.1772 0.0000 +vt -0.9414 0.1685 0.0000 +vt -0.9487 0.2031 0.0000 +vt -0.9487 0.1924 0.0000 +vt -0.9487 0.1987 0.0000 +vt -0.9414 0.0415 0.0000 +vt -0.9487 0.1860 0.0000 +vt -0.9448 0.1685 0.0000 +vt -0.9487 0.1772 0.0000 +vt -0.9521 0.2031 0.0000 +vt -0.9521 0.1924 0.0000 +vt -0.9521 0.1860 0.0000 +vt -0.9521 0.1987 0.0000 +vt -0.9521 0.1772 0.0000 +vt -0.9487 0.1685 0.0000 +vt -0.9561 0.2031 0.0000 +vt -0.9561 0.1924 0.0000 +vt -0.9561 0.1987 0.0000 +vt -0.9561 0.1860 0.0000 +vt -0.9521 0.1685 0.0000 +vt -0.9561 0.1772 0.0000 +vt -0.9561 0.1685 0.0000 +vt -0.9595 0.2031 0.0000 +vt -0.9595 0.1924 0.0000 +vt -0.9595 0.1860 0.0000 +vt -0.9595 0.1987 0.0000 +vt -0.9595 0.1772 0.0000 +vt -0.9561 0.0415 0.0000 +vt -0.9595 0.1685 0.0000 +vt -0.9634 0.1987 0.0000 +vt -0.9634 0.1924 0.0000 +vt -0.9634 0.1860 0.0000 +vt -0.9634 0.2031 0.0000 +vt -0.9634 0.1685 0.0000 +vt -0.9634 0.1772 0.0000 +vt -0.9673 0.1924 0.0000 +vt -0.9673 0.2031 0.0000 +vt -0.9673 0.1860 0.0000 +vt -0.9673 0.1987 0.0000 +vt -0.9673 0.1772 0.0000 +vt -0.9673 0.1685 0.0000 +vt -0.9707 0.2031 0.0000 +vt -0.9707 0.1924 0.0000 +vt -0.9707 0.1987 0.0000 +vt -0.9707 0.1860 0.0000 +vt -0.9707 0.1685 0.0000 +vt -0.9268 0.1685 0.0000 +vt -0.9707 0.1772 0.0000 +vt -0.9746 0.2031 0.0000 +vt -0.9746 0.1924 0.0000 +vt -0.9746 0.1860 0.0000 +vt -0.9375 0.0415 0.0000 +vt -0.9297 0.1685 0.0000 +vt -0.9746 0.1987 0.0000 +vt -0.9746 0.1772 0.0000 +vt -0.9746 0.1685 0.0000 +vt -0.9771 0.2031 0.0000 +vt -0.9771 0.1924 0.0000 +vt -0.9771 0.1987 0.0000 +vt -0.9487 0.0415 0.0000 +vt -0.9448 0.0415 0.0000 +vt -0.9746 0.0415 0.0000 +vt -0.9771 0.1860 0.0000 +vt -0.9771 0.1685 0.0000 +vt -0.9707 0.0415 0.0000 +vt -0.9771 0.1772 0.0000 +vt -0.9810 0.2031 0.0000 +vt -0.9810 0.1924 0.0000 +vt -0.9634 0.0415 0.0000 +vt -0.9595 0.0415 0.0000 +vt -0.9810 0.1860 0.0000 +vt -0.9810 0.1987 0.0000 +vt -0.9810 0.1772 0.0000 +vt -0.9521 0.0415 0.0000 +vt -0.9673 0.0415 0.0000 +vt -0.9810 0.1685 0.0000 +vt -0.9849 0.2031 0.0000 +vt -0.9849 0.1924 0.0000 +vt -0.9771 0.0415 0.0000 +vt -0.9849 0.1987 0.0000 +vt -0.9810 0.0415 0.0000 +vt -0.9849 0.1860 0.0000 +vt -0.9849 0.1772 0.0000 +vt -0.9849 0.1685 0.0000 +vt -0.9746 0.0322 0.0000 +vt -0.9849 0.0415 0.0000 +vt -0.9849 0.0322 0.0000 +vt -0.9810 0.0322 0.0000 +vt -0.9771 0.0322 0.0000 +vt -0.9771 0.0229 0.0000 +vt -0.9707 0.0322 0.0000 +vt -0.9746 0.0229 0.0000 +vt -0.9707 0.0229 0.0000 +vt -0.9849 0.0229 0.0000 +vt -0.9810 0.0229 0.0000 +vt -0.9746 0.0156 0.0000 +vt -0.9810 0.0156 0.0000 +vt -0.9771 0.0156 0.0000 +vt -0.9849 0.0156 0.0000 +vt -0.9707 0.0156 0.0000 +vt -0.9771 0.0122 0.0000 +vt -0.9849 0.0122 0.0000 +vt -0.9561 0.0322 0.0000 +vt -0.9810 0.0122 0.0000 +vt -0.9746 0.0122 0.0000 +vt -0.9673 0.0322 0.0000 +vt -0.9707 0.0122 0.0000 +vt -0.9849 0.0088 0.0000 +vt -0.9673 0.0156 0.0000 +vt -0.9810 0.0088 0.0000 +vt -0.9771 0.0088 0.0000 +vt -0.9746 0.0088 0.0000 +vt -0.9673 0.0229 0.0000 +vt -0.9673 0.0122 0.0000 +vt -0.9707 0.0088 0.0000 +vt -0.9414 0.0322 0.0000 +vt -0.9375 0.0322 0.0000 +vt -0.9336 0.0415 0.0000 +vt -0.9673 0.0088 0.0000 +vt -0.9634 0.0122 0.0000 +vt -0.9634 0.0229 0.0000 +vt -0.9634 0.0156 0.0000 +vt -0.9634 0.0322 0.0000 +vt -0.9634 0.0088 0.0000 +vt -0.9595 0.0122 0.0000 +vt -0.9595 0.0156 0.0000 +vt -0.9595 0.0322 0.0000 +vt -0.9595 0.0229 0.0000 +vt -0.9595 0.0088 0.0000 +vt -0.9561 0.0122 0.0000 +vt -0.9561 0.0229 0.0000 +vt -0.9561 0.0156 0.0000 +vt -0.9561 0.0088 0.0000 +vt -0.9521 0.0156 0.0000 +vt -0.9521 0.0088 0.0000 +vt -0.9521 0.0122 0.0000 +vt -0.9521 0.0322 0.0000 +vt -0.9521 0.0229 0.0000 +vt -0.9487 0.0088 0.0000 +vt -0.9487 0.0156 0.0000 +vt -0.9487 0.0229 0.0000 +vt -0.9487 0.0122 0.0000 +vt -0.9487 0.0322 0.0000 +vt -0.9448 0.0088 0.0000 +vt -0.9448 0.0156 0.0000 +vt -0.9448 0.0122 0.0000 +vt -0.9448 0.0322 0.0000 +vt -0.9448 0.0229 0.0000 +vt -0.9414 0.0088 0.0000 +vt -0.9414 0.0156 0.0000 +vt -0.9414 0.0229 0.0000 +vt -0.9414 0.0122 0.0000 +vt -0.9375 0.0088 0.0000 +vt -0.9375 0.0156 0.0000 +vt -0.9375 0.0122 0.0000 +vt -0.9375 0.0229 0.0000 +vt -0.9336 0.0322 0.0000 +vt -0.9336 0.0088 0.0000 +vt -0.9336 0.0229 0.0000 +vt -0.9336 0.0156 0.0000 +vt -0.9336 0.0122 0.0000 +vt -0.9297 0.0088 0.0000 +vt -0.9297 0.0156 0.0000 +vt -0.9297 0.0122 0.0000 +vt -0.9297 0.0322 0.0000 +vt -0.9297 0.0229 0.0000 +vt -0.9268 0.0088 0.0000 +vt -0.9297 0.0415 0.0000 +vt -0.9268 0.0122 0.0000 +vt -0.9268 0.0229 0.0000 +vt -0.9268 0.0156 0.0000 +vt -0.9268 0.0415 0.0000 +vt -0.9268 0.0322 0.0000 +vt -0.9121 0.1250 0.0000 +vt -0.9121 0.0410 0.0000 +vt -0.9136 0.0410 0.0000 +vt -0.9136 0.1250 0.0000 +vt -0.9575 0.2090 0.0000 +vt -0.9629 0.2090 0.0000 +vt -0.9629 0.3027 0.0000 +vt -0.9575 0.3027 0.0000 +vt -0.9497 0.2236 0.0000 +vt -0.9180 0.2236 0.0000 +vt -0.9180 0.2217 0.0000 +vt -0.9497 0.2119 0.0000 +vt -0.9517 0.2119 0.0000 +vt -0.9526 0.2124 0.0000 +vt -0.9531 0.2129 0.0000 +vt -0.9531 0.2236 0.0000 +vt -0.9175 0.2251 0.0000 +vt -0.9497 0.2246 0.0000 +vt -0.9175 0.2266 0.0000 +vt -0.9497 0.2363 0.0000 +vt -0.9512 0.2363 0.0000 +vt -0.9526 0.2363 0.0000 +vt -0.9531 0.2358 0.0000 +vt -0.9536 0.2246 0.0000 +vt -0.9121 0.1323 0.0000 +vt -0.9136 0.1323 0.0000 +vt -0.9136 0.1338 0.0000 +vt -0.9121 0.1338 0.0000 +vt -0.9121 0.1294 0.0000 +vt -0.9136 0.1294 0.0000 +vt -0.9121 0.1313 0.0000 +vt -0.9136 0.1313 0.0000 +vt -0.9858 0.4849 0.0000 +vt -0.9849 0.4819 0.0000 +vt -0.9854 0.4814 0.0000 +vt -0.9863 0.4849 0.0000 +vt -0.9868 0.4878 0.0000 +vt -0.9873 0.4878 0.0000 +vt -0.9912 0.5002 0.0000 +vt -0.9907 0.5002 0.0000 +vt -0.9814 0.4692 0.0000 +vt -0.9819 0.4692 0.0000 +vt -0.9365 0.4717 0.0000 +vt -0.9170 0.4727 0.0000 +vt -0.9185 0.4722 0.0000 +vt -0.9155 0.4741 0.0000 +vt -0.9155 0.4756 0.0000 +vt -0.9268 0.5161 0.0000 +vt -0.9370 0.5159 0.0000 +vt -0.9473 0.5159 0.0000 +vt -0.9580 0.4756 0.0000 +vt -0.9580 0.4741 0.0000 +vt -0.9565 0.4727 0.0000 +vt -0.9551 0.4717 0.0000 +vt -0.9946 0.5132 0.0000 +vt -0.9927 0.5076 0.0000 +vt -0.9951 0.5129 0.0000 +vt -0.9932 0.5073 0.0000 +vt -0.9912 0.5020 0.0000 +vt -0.9917 0.5017 0.0000 +vt -0.9897 0.5156 0.0000 +vt -0.9712 0.5159 0.0000 +vt -0.9707 0.4717 0.0000 +vt -0.9810 0.4717 0.0000 +vt -0.9907 0.5149 0.0000 +vt -0.9922 0.5134 0.0000 +vt -0.9922 0.5117 0.0000 +vt -0.9907 0.5005 0.0000 +vt -0.9912 0.5005 0.0000 +vt -0.9907 0.5007 0.0000 +vt -0.9912 0.5007 0.0000 +vt -0.9912 0.5015 0.0000 +vt -0.9912 0.5012 0.0000 +vt -0.9912 0.5017 0.0000 +vt -0.9917 0.5015 0.0000 +vt -0.9604 0.4717 0.0000 +vt -0.9497 0.5122 0.0000 +vt -0.9497 0.5139 0.0000 +vt -0.9512 0.5154 0.0000 +vt -0.9526 0.5161 0.0000 +vt -0.9951 0.5132 0.0000 +vt -0.9951 0.5134 0.0000 +vt -0.9946 0.5134 0.0000 +vt -0.9946 0.5137 0.0000 +vt -0.9951 0.5142 0.0000 +vt -0.9956 0.5144 0.0000 +vt -0.9951 0.5144 0.0000 +vt -1.3291 0.5364 0.0000 +vt -1.3213 0.5344 0.0000 +vt -1.3242 0.5569 0.0000 +vt -1.3174 0.5562 0.0000 +vt -1.2803 0.5452 0.0000 +vt -1.2861 0.5574 0.0000 +vt -1.2900 0.5754 0.0000 +vt -1.3213 0.5759 0.0000 +vt -1.3154 0.5757 0.0000 +vt -1.2910 0.5908 0.0000 +vt -1.3213 0.5908 0.0000 +vt -1.3154 0.5908 0.0000 +vt -1.3154 0.6101 0.0000 +vt -1.2910 0.6101 0.0000 +vt -1.3154 0.6213 0.0000 +vt -1.3213 0.6101 0.0000 +vt -1.2900 0.6216 0.0000 +vt -1.3174 0.6409 0.0000 +vt -1.2861 0.6399 0.0000 +vt -1.3213 0.6211 0.0000 +vt -1.3242 0.6401 0.0000 +vt -1.2783 0.6563 0.0000 +vt -1.3213 0.6658 0.0000 +vt -1.3301 0.6641 0.0000 +vt -1.0225 0.6982 0.0000 +vt -1.0088 0.6924 0.0000 +vt -1.0078 0.9230 0.0000 +vt -1.0127 0.9223 0.0000 +vt -1.0273 0.7031 0.0000 +vt -1.0146 0.9214 0.0000 +vt -1.0332 0.7102 0.0000 +vt -1.0156 0.9194 0.0000 +vt -1.0371 0.7207 0.0000 +vt -1.0176 0.9167 0.0000 +vt -1.0391 0.7336 0.0000 +vt -1.0186 0.9128 0.0000 +vt -1.0439 0.7341 0.0000 +vt -1.0410 0.7197 0.0000 +vt -1.0195 0.9221 0.0000 +vt -1.0166 0.9247 0.0000 +vt -1.7930 0.0933 0.0000 +vt -1.7959 0.0942 0.0000 +vt -1.7949 0.0688 0.0000 +vt -1.7939 0.0713 0.0000 +vt -1.6592 0.0356 0.0000 +vt -1.6592 0.0332 0.0000 +vt -1.6387 0.0347 0.0000 +vt -1.6377 0.0327 0.0000 +vt -1.6338 0.0596 0.0000 +vt -1.6357 0.0615 0.0000 +vt -1.6172 0.0718 0.0000 +vt -1.6152 0.0708 0.0000 +vt -1.6172 0.0928 0.0000 +vt -1.6152 0.0938 0.0000 +vt -1.6270 0.0962 0.0000 +vt -1.6279 0.0938 0.0000 +vt -1.7930 0.1157 0.0000 +vt -1.7930 0.1182 0.0000 +vt -1.6562 0.1172 0.0000 +vt -1.6553 0.1196 0.0000 +vt -1.6562 0.0898 0.0000 +vt -1.6572 0.0630 0.0000 +vt -1.6943 0.0244 0.0000 +vt -1.6943 0.0225 0.0000 +vt -1.6934 0.0298 0.0000 +vt -1.6934 0.0317 0.0000 +vt -1.6943 0.0264 0.0000 +vt -1.6943 0.0283 0.0000 +vt -1.6943 0.0205 0.0000 +vt -1.7334 0.0186 0.0000 +vt -1.7334 0.0225 0.0000 +vt -1.7334 0.0259 0.0000 +vt -1.7471 0.0234 0.0000 +vt -1.7324 0.0293 0.0000 +vt -1.7471 0.0269 0.0000 +vt -1.7471 0.0308 0.0000 +vt -1.7480 0.0195 0.0000 +vt -1.7324 0.0332 0.0000 +vt -1.7461 0.0342 0.0000 +vt -1.8184 0.0352 0.0000 +vt -1.8184 0.0347 0.0000 +vt -1.8184 0.0366 0.0000 +vt -1.8174 0.0371 0.0000 +vt -1.8184 0.0361 0.0000 +vt -1.7461 0.0381 0.0000 +vt -1.7324 0.0366 0.0000 +vt -1.8174 0.0381 0.0000 +vt -1.8174 0.0386 0.0000 +vt -1.7461 0.0420 0.0000 +vt -1.7314 0.0400 0.0000 +vt -1.8096 0.1157 0.0000 +vt -1.8936 0.1167 0.0000 +vt -1.8437 0.0776 0.0000 +vt -1.8096 0.0776 0.0000 +vt -1.8467 0.0747 0.0000 +vt -1.8955 0.1138 0.0000 +vt -1.8750 0.0322 0.0000 +vt -1.8379 0.0415 0.0000 +vt -1.8945 0.1152 0.0000 +vt -1.8447 0.0762 0.0000 +vt -1.8066 0.0776 0.0000 +vt -1.8066 0.1157 0.0000 +vt -1.8037 0.0776 0.0000 +vt -1.8037 0.1157 0.0000 +vt -1.8887 0.2280 0.0000 +vt -1.8887 0.1357 0.0000 +vt -1.8467 0.1899 0.0000 +vt -1.8467 0.2275 0.0000 +vt -1.8467 0.2720 0.0000 +vt -1.8887 0.3267 0.0000 +vt -1.8887 0.2344 0.0000 +vt -1.8467 0.2344 0.0000 +vt -1.8877 0.1343 0.0000 +vt -1.8447 0.1890 0.0000 +vt -1.8857 0.1328 0.0000 +vt -1.8437 0.1875 0.0000 +vt -1.8467 0.2310 0.0000 +vt -1.8887 0.2310 0.0000 +vt -1.8545 0.6899 0.0000 +vt -1.8545 0.7380 0.0000 +vt -1.8437 0.7380 0.0000 +vt -1.8437 0.6899 0.0000 +vt -1.8223 0.7380 0.0000 +vt -1.8223 0.6899 0.0000 +vt -1.8330 0.6899 0.0000 +vt -1.8330 0.7380 0.0000 +vt -1.8066 0.7380 0.0000 +vt -1.8066 0.6899 0.0000 +vt -1.8145 0.6899 0.0000 +vt -1.8145 0.7380 0.0000 +vt -1.9971 0.7412 0.0000 +vt -1.9541 0.7407 0.0000 +vt -1.9541 0.7816 0.0000 +vt -1.9971 0.7819 0.0000 +vt -1.9531 0.8271 0.0000 +vt -1.9971 0.8275 0.0000 +vt -1.9971 0.7866 0.0000 +vt -1.9541 0.7863 0.0000 +vt -1.9971 0.7371 0.0000 +vt -1.9541 0.7368 0.0000 +vt -1.9971 0.7332 0.0000 +vt -1.9541 0.7327 0.0000 +vt -1.9043 0.7383 0.0000 +vt -1.9043 0.6902 0.0000 +vt -1.8945 0.6902 0.0000 +vt -1.8945 0.7383 0.0000 +vt -1.8730 0.6902 0.0000 +vt -1.8730 0.7383 0.0000 +vt -1.8828 0.7383 0.0000 +vt -1.8828 0.6902 0.0000 +vt -1.8564 0.6902 0.0000 +vt -1.8564 0.7383 0.0000 +vt -1.8643 0.7383 0.0000 +vt -1.8643 0.6902 0.0000 +vt -1.4229 0.2339 0.0000 +vt -1.4307 0.2324 0.0000 +vt -1.4395 0.2305 0.0000 +vt -1.4463 0.2256 0.0000 +vt -1.4531 0.2212 0.0000 +vt -1.4580 0.2139 0.0000 +vt -1.4629 0.2070 0.0000 +vt -1.4648 0.1987 0.0000 +vt -1.4668 0.1904 0.0000 +vt -1.4648 0.1821 0.0000 +vt -1.4629 0.1733 0.0000 +vt -1.4580 0.1665 0.0000 +vt -1.4531 0.1592 0.0000 +vt -1.4463 0.1548 0.0000 +vt -1.4395 0.1499 0.0000 +vt -1.4307 0.1484 0.0000 +vt -1.4229 0.1465 0.0000 +vt -1.9600 0.6785 0.0000 +vt -1.9590 0.6802 0.0000 +vt -1.9600 0.6821 0.0000 +vt -1.9619 0.6829 0.0000 +vt -1.9639 0.6821 0.0000 +vt -1.9639 0.6802 0.0000 +vt -1.9639 0.6785 0.0000 +vt -1.9619 0.6777 0.0000 +vt -1.9736 0.5967 0.0000 +vt -1.9736 0.5208 0.0000 +vt -1.9717 0.5208 0.0000 +vt -1.9707 0.5967 0.0000 +vt -1.9687 0.5208 0.0000 +vt -1.9687 0.5967 0.0000 +vt -1.9668 0.5208 0.0000 +vt -1.9668 0.5967 0.0000 +vt -1.9648 0.5208 0.0000 +vt -1.9639 0.5967 0.0000 +vt -1.9619 0.5208 0.0000 +vt -1.9619 0.5967 0.0000 +vt -1.9600 0.5208 0.0000 +vt -1.9600 0.5967 0.0000 +vt -1.9580 0.5208 0.0000 +vt -1.9570 0.5967 0.0000 +vt -1.9551 0.5208 0.0000 +vt -1.9551 0.5967 0.0000 +vt -1.9814 0.6768 0.0000 +vt -1.9785 0.6816 0.0000 +vt -1.9814 0.6868 0.0000 +vt -1.9863 0.6887 0.0000 +vt -1.9863 0.6748 0.0000 +vt -1.9912 0.6868 0.0000 +vt -1.9932 0.6816 0.0000 +vt -1.9912 0.6768 0.0000 +vt -1.9941 0.5967 0.0000 +vt -1.9941 0.5208 0.0000 +vt -1.9922 0.5208 0.0000 +vt -1.9922 0.5967 0.0000 +vt -1.9902 0.5208 0.0000 +vt -1.9902 0.5967 0.0000 +vt -1.9873 0.5208 0.0000 +vt -1.9873 0.5967 0.0000 +vt -1.9854 0.5208 0.0000 +vt -1.9854 0.5967 0.0000 +vt -1.9834 0.5208 0.0000 +vt -1.9834 0.5967 0.0000 +vt -1.9805 0.5208 0.0000 +vt -1.9805 0.5967 0.0000 +vt -1.9785 0.5208 0.0000 +vt -1.9785 0.5967 0.0000 +vt -1.9766 0.5208 0.0000 +vt -1.9766 0.5967 0.0000 +vt -1.9697 0.6770 0.0000 +vt -1.9678 0.6802 0.0000 +vt -1.9697 0.6836 0.0000 +vt -1.9727 0.6848 0.0000 +vt -1.9727 0.6758 0.0000 +vt -1.9756 0.6836 0.0000 +vt -1.9775 0.6802 0.0000 +vt -1.9756 0.6770 0.0000 +vt -1.9570 0.6726 0.0000 +vt -1.9609 0.6724 0.0000 +vt -1.9561 0.5999 0.0000 +vt -1.9600 0.5996 0.0000 +vt -1.9658 0.6724 0.0000 +vt -1.9648 0.5996 0.0000 +vt -1.9697 0.6724 0.0000 +vt -1.9697 0.5996 0.0000 +vt -1.9746 0.6724 0.0000 +vt -1.9736 0.5996 0.0000 +vt -1.9795 0.6724 0.0000 +vt -1.9785 0.5996 0.0000 +vt -1.9834 0.6724 0.0000 +vt -1.9834 0.5996 0.0000 +vt -1.9883 0.6721 0.0000 +vt -1.9873 0.5994 0.0000 +vt -1.9932 0.6721 0.0000 +vt -1.9922 0.5994 0.0000 +vt -0.3298 0.5364 0.0000 +vt -0.3250 0.5569 0.0000 +vt -0.3220 0.5344 0.0000 +vt -0.3179 0.5562 0.0000 +vt -0.3220 0.5759 0.0000 +vt -0.3157 0.5757 0.0000 +vt -0.3213 0.5908 0.0000 +vt -0.2805 0.5452 0.0000 +vt -0.3154 0.5908 0.0000 +vt -0.2905 0.5754 0.0000 +vt -0.3154 0.6101 0.0000 +vt -0.3213 0.6101 0.0000 +vt -0.2861 0.5574 0.0000 +vt -0.2913 0.5908 0.0000 +vt -0.3159 0.6213 0.0000 +vt -0.2913 0.6101 0.0000 +vt -0.3220 0.6211 0.0000 +vt -0.3176 0.6409 0.0000 +vt -0.2905 0.6216 0.0000 +vt -0.3247 0.6401 0.0000 +vt -0.3220 0.6658 0.0000 +vt -0.3301 0.6641 0.0000 +vt -0.2786 0.6563 0.0000 +vt -0.2861 0.6399 0.0000 +vt -0.0092 0.6924 0.0000 +vt -0.0225 0.6982 0.0000 +vt -0.0080 0.9230 0.0000 +vt -0.0129 0.9223 0.0000 +vt -0.0281 0.7031 0.0000 +vt -0.0147 0.9214 0.0000 +vt -0.0334 0.7102 0.0000 +vt -0.0164 0.9194 0.0000 +vt -0.0375 0.7207 0.0000 +vt -0.0178 0.9167 0.0000 +vt -0.0400 0.7336 0.0000 +vt -0.0189 0.9128 0.0000 +vt -0.0440 0.7341 0.0000 +vt -0.0229 0.9133 0.0000 +vt -0.0219 0.9183 0.0000 +vt -0.0199 0.9221 0.0000 +vt -0.0110 0.6885 0.0000 +vt -0.0246 0.6948 0.0000 +vt -0.0311 0.7002 0.0000 +vt -0.0370 0.7083 0.0000 +vt -0.0416 0.7197 0.0000 +vt -0.0091 0.9276 0.0000 +vt -0.0148 0.9261 0.0000 +vt -0.0173 0.9247 0.0000 +vt -0.7935 0.0933 0.0000 +vt -0.7939 0.0713 0.0000 +vt -0.7949 0.0688 0.0000 +vt -0.7959 0.0942 0.0000 +vt -0.6597 0.0356 0.0000 +vt -0.6597 0.0332 0.0000 +vt -0.6392 0.0347 0.0000 +vt -0.6382 0.0327 0.0000 +vt -0.6357 0.0615 0.0000 +vt -0.6338 0.0596 0.0000 +vt -0.6177 0.0718 0.0000 +vt -0.6157 0.0708 0.0000 +vt -0.6172 0.0928 0.0000 +vt -0.6152 0.0938 0.0000 +vt -0.6284 0.0938 0.0000 +vt -0.6274 0.0962 0.0000 +vt -0.7935 0.1157 0.0000 +vt -0.7935 0.1182 0.0000 +vt -0.6562 0.1172 0.0000 +vt -0.6558 0.1196 0.0000 +vt -0.6562 0.0898 0.0000 +vt -0.6572 0.0630 0.0000 +vt -0.6948 0.0225 0.0000 +vt -0.6948 0.0244 0.0000 +vt -0.6938 0.0298 0.0000 +vt -0.6934 0.0317 0.0000 +vt -0.6943 0.0264 0.0000 +vt -0.6943 0.0283 0.0000 +vt -0.6943 0.0205 0.0000 +vt -0.7334 0.0186 0.0000 +vt -0.7334 0.0225 0.0000 +vt -0.7476 0.0234 0.0000 +vt -0.7480 0.0195 0.0000 +vt -0.8184 0.0347 0.0000 +vt -0.7471 0.0269 0.0000 +vt -0.8184 0.0352 0.0000 +vt -0.7334 0.0259 0.0000 +vt -0.8184 0.0361 0.0000 +vt -0.8184 0.0366 0.0000 +vt -0.7471 0.0308 0.0000 +vt -0.7329 0.0293 0.0000 +vt -0.7466 0.0342 0.0000 +vt -0.7329 0.0332 0.0000 +vt -0.8179 0.0371 0.0000 +vt -0.7466 0.0381 0.0000 +vt -0.7324 0.0366 0.0000 +vt -0.8179 0.0381 0.0000 +vt -0.7466 0.0420 0.0000 +vt -0.7314 0.0400 0.0000 +vt -0.8179 0.0386 0.0000 +vt -0.8096 0.1157 0.0000 +vt -0.8101 0.0776 0.0000 +vt -0.8442 0.0776 0.0000 +vt -0.8936 0.1167 0.0000 +vt -0.8467 0.0747 0.0000 +vt -0.8384 0.0415 0.0000 +vt -0.8755 0.0322 0.0000 +vt -0.8955 0.1138 0.0000 +vt -0.8945 0.1152 0.0000 +vt -0.8452 0.0762 0.0000 +vt -0.8071 0.0776 0.0000 +vt -0.8066 0.1157 0.0000 +vt -0.8042 0.0776 0.0000 +vt -0.8037 0.1157 0.0000 +vt -0.8892 0.2280 0.0000 +vt -0.8467 0.2275 0.0000 +vt -0.8467 0.1899 0.0000 +vt -0.8892 0.1357 0.0000 +vt -0.8467 0.2720 0.0000 +vt -0.8467 0.2344 0.0000 +vt -0.8892 0.2344 0.0000 +vt -0.8887 0.3267 0.0000 +vt -0.8877 0.1343 0.0000 +vt -0.8452 0.1890 0.0000 +vt -0.8862 0.1328 0.0000 +vt -0.8437 0.1875 0.0000 +vt -0.8467 0.2310 0.0000 +vt -0.8892 0.2310 0.0000 +vt -0.8442 0.7380 0.0000 +vt -0.8550 0.7380 0.0000 +vt -0.8550 0.6899 0.0000 +vt -0.8442 0.6899 0.0000 +vt -0.8330 0.6899 0.0000 +vt -0.8228 0.6899 0.0000 +vt -0.8228 0.7380 0.0000 +vt -0.8330 0.7380 0.0000 +vt -0.8145 0.6899 0.0000 +vt -0.8066 0.6899 0.0000 +vt -0.8066 0.7380 0.0000 +vt -0.8145 0.7380 0.0000 +vt -0.9541 0.7816 0.0000 +vt -0.9546 0.7407 0.0000 +vt -0.9976 0.7412 0.0000 +vt -0.9976 0.7819 0.0000 +vt -0.9976 0.7866 0.0000 +vt -0.9971 0.8275 0.0000 +vt -0.9536 0.8271 0.0000 +vt -0.9541 0.7863 0.0000 +vt -0.9976 0.7371 0.0000 +vt -0.9546 0.7368 0.0000 +vt -0.9976 0.7332 0.0000 +vt -0.9546 0.7327 0.0000 +vt -0.8945 0.6902 0.0000 +vt -0.9048 0.6902 0.0000 +vt -0.9048 0.7383 0.0000 +vt -0.8945 0.7383 0.0000 +vt -0.8833 0.7383 0.0000 +vt -0.8730 0.7383 0.0000 +vt -0.8730 0.6902 0.0000 +vt -0.8833 0.6902 0.0000 +vt -0.8647 0.7383 0.0000 +vt -0.8569 0.7383 0.0000 +vt -0.8569 0.6902 0.0000 +vt -0.8647 0.6902 0.0000 +vt -0.4314 0.2324 0.0000 +vt -0.4231 0.2339 0.0000 +vt -0.4587 0.2139 0.0000 +vt -0.4634 0.2070 0.0000 +vt -0.4651 0.1987 0.0000 +vt -0.4668 0.1904 0.0000 +vt -0.4651 0.1821 0.0000 +vt -0.4634 0.1733 0.0000 +vt -0.4587 0.1665 0.0000 +vt -0.4539 0.1592 0.0000 +vt -0.4468 0.1548 0.0000 +vt -0.4397 0.1499 0.0000 +vt -0.4314 0.1484 0.0000 +vt -0.4231 0.1465 0.0000 +vt -0.9600 0.6821 0.0000 +vt -0.9595 0.6802 0.0000 +vt -0.9600 0.6785 0.0000 +vt -0.9619 0.6777 0.0000 +vt -0.9619 0.6829 0.0000 +vt -0.9639 0.6785 0.0000 +vt -0.9644 0.6802 0.0000 +vt -0.9639 0.6821 0.0000 +vt -0.9717 0.5208 0.0000 +vt -0.9736 0.5208 0.0000 +vt -0.9736 0.5967 0.0000 +vt -0.9712 0.5967 0.0000 +vt -0.9692 0.5208 0.0000 +vt -0.9692 0.5967 0.0000 +vt -0.9668 0.5208 0.0000 +vt -0.9668 0.5967 0.0000 +vt -0.9648 0.5208 0.0000 +vt -0.9644 0.5967 0.0000 +vt -0.9624 0.5208 0.0000 +vt -0.9624 0.5967 0.0000 +vt -0.9600 0.5208 0.0000 +vt -0.9600 0.5967 0.0000 +vt -0.9580 0.5208 0.0000 +vt -0.9575 0.5967 0.0000 +vt -0.9556 0.5208 0.0000 +vt -0.9556 0.5967 0.0000 +vt -0.9814 0.6868 0.0000 +vt -0.9790 0.6816 0.0000 +vt -0.9814 0.6768 0.0000 +vt -0.9863 0.6748 0.0000 +vt -0.9863 0.6887 0.0000 +vt -0.9912 0.6768 0.0000 +vt -0.9932 0.6816 0.0000 +vt -0.9912 0.6868 0.0000 +vt -0.9927 0.5208 0.0000 +vt -0.9946 0.5208 0.0000 +vt -0.9946 0.5967 0.0000 +vt -0.9922 0.5967 0.0000 +vt -0.9902 0.5208 0.0000 +vt -0.9902 0.5967 0.0000 +vt -0.9878 0.5208 0.0000 +vt -0.9878 0.5967 0.0000 +vt -0.9858 0.5208 0.0000 +vt -0.9854 0.5967 0.0000 +vt -0.9834 0.5208 0.0000 +vt -0.9834 0.5967 0.0000 +vt -0.9810 0.5208 0.0000 +vt -0.9810 0.5967 0.0000 +vt -0.9790 0.5208 0.0000 +vt -0.9785 0.5967 0.0000 +vt -0.9766 0.5208 0.0000 +vt -0.9766 0.5967 0.0000 +vt -0.9697 0.6836 0.0000 +vt -0.9683 0.6802 0.0000 +vt -0.9697 0.6770 0.0000 +vt -0.9731 0.6758 0.0000 +vt -0.9731 0.6848 0.0000 +vt -0.9761 0.6770 0.0000 +vt -0.9775 0.6802 0.0000 +vt -0.9761 0.6836 0.0000 +vt -0.9570 0.6726 0.0000 +vt -0.9561 0.5999 0.0000 +vt -0.9614 0.6724 0.0000 +vt -0.9604 0.5996 0.0000 +vt -0.9658 0.6724 0.0000 +vt -0.9653 0.5996 0.0000 +vt -0.9702 0.6724 0.0000 +vt -0.9697 0.5996 0.0000 +vt -0.9751 0.6724 0.0000 +vt -0.9741 0.5996 0.0000 +vt -0.9795 0.6724 0.0000 +vt -0.9790 0.5996 0.0000 +vt -0.9839 0.6724 0.0000 +vt -0.9834 0.5996 0.0000 +vt -0.9888 0.6721 0.0000 +vt -0.9878 0.5994 0.0000 +vt -0.9932 0.6721 0.0000 +vt -0.9922 0.5994 0.0000 +vt -1.5166 0.8527 0.0000 +vt -1.5195 0.8530 0.0000 +vt -1.5176 0.8514 0.0000 +vt -1.5205 0.8519 0.0000 +vt -1.5215 0.8533 0.0000 +vt -1.5225 0.8521 0.0000 +vt -1.5234 0.8533 0.0000 +vt -1.5234 0.8519 0.0000 +vt -1.5254 0.8525 0.0000 +vt -1.5244 0.8519 0.0000 +vt -1.5625 0.7419 0.0000 +vt -1.5479 0.7424 0.0000 +vt -1.5625 0.7604 0.0000 +vt -1.5479 0.7611 0.0000 +vt -1.8340 0.9253 0.0000 +vt -1.8418 0.9228 0.0000 +vt -1.8467 0.9330 0.0000 +vt -1.8535 0.9302 0.0000 +vt -1.8574 0.9399 0.0000 +vt -1.8643 0.9368 0.0000 +vt -1.8701 0.9469 0.0000 +vt -1.8740 0.9425 0.0000 +vt -1.8838 0.9540 0.0000 +vt -1.8877 0.9491 0.0000 +vt -1.8926 0.9569 0.0000 +vt -1.8945 0.9520 0.0000 +vt -1.8994 0.9589 0.0000 +vt -1.9014 0.9536 0.0000 +vt -1.9160 0.9611 0.0000 +vt -1.9170 0.9557 0.0000 +vt -1.9307 0.9622 0.0000 +vt -1.9307 0.9564 0.0000 +vt -1.9473 0.9619 0.0000 +vt -1.9473 0.9553 0.0000 +vt -1.9580 0.9551 0.0000 +vt -1.9590 0.9609 0.0000 +vt -1.9658 0.9541 0.0000 +vt -1.9678 0.9599 0.0000 +vt -1.9756 0.9527 0.0000 +vt -1.9766 0.9574 0.0000 +vt -1.9834 0.9504 0.0000 +vt -1.9863 0.9544 0.0000 +vt -1.9883 0.9531 0.0000 +vt -0.5195 0.8530 0.0000 +vt -0.5171 0.8527 0.0000 +vt -0.5181 0.8514 0.0000 +vt -0.5205 0.8519 0.0000 +vt -0.5220 0.8533 0.0000 +vt -0.5225 0.8521 0.0000 +vt -0.5239 0.8533 0.0000 +vt -0.5239 0.8519 0.0000 +vt -0.5259 0.8525 0.0000 +vt -0.5249 0.8519 0.0000 +vt -0.5479 0.7424 0.0000 +vt -0.5630 0.7419 0.0000 +vt -0.5630 0.7604 0.0000 +vt -0.5483 0.7611 0.0000 +vt -0.8340 0.9253 0.0000 +vt -0.8418 0.9228 0.0000 +vt -0.8467 0.9330 0.0000 +vt -0.8540 0.9302 0.0000 +vt -0.8579 0.9399 0.0000 +vt -0.8643 0.9368 0.0000 +vt -0.8701 0.9469 0.0000 +vt -0.8745 0.9425 0.0000 +vt -0.8838 0.9540 0.0000 +vt -0.8877 0.9491 0.0000 +vt -0.8926 0.9569 0.0000 +vt -0.8950 0.9520 0.0000 +vt -0.8999 0.9589 0.0000 +vt -0.9014 0.9536 0.0000 +vt -0.9165 0.9611 0.0000 +vt -0.9175 0.9557 0.0000 +vt -0.9307 0.9622 0.0000 +vt -0.9307 0.9564 0.0000 +vt -0.9478 0.9619 0.0000 +vt -0.9473 0.9553 0.0000 +vt -0.9585 0.9551 0.0000 +vt -0.9595 0.9609 0.0000 +vt -0.9663 0.9541 0.0000 +vt -0.9678 0.9599 0.0000 +vt -0.9756 0.9527 0.0000 +vt -0.9771 0.9574 0.0000 +vt -0.9834 0.9504 0.0000 +vt -0.9863 0.9544 0.0000 +vt -0.9888 0.9531 0.0000 +vt -1.7998 0.7686 0.0000 +vt -1.8037 0.7654 0.0000 +vt -1.7998 0.7650 0.0000 +vt -1.8135 0.7749 0.0000 +vt -1.8086 0.7795 0.0000 +vt -1.8184 0.7800 0.0000 +vt -1.8135 0.7847 0.0000 +vt -1.8193 0.7811 0.0000 +vt -1.8145 0.7858 0.0000 +vt -1.8203 0.7822 0.0000 +vt -1.8154 0.7869 0.0000 +vt -1.8213 0.7834 0.0000 +vt -1.8164 0.7881 0.0000 +vt -1.8223 0.7845 0.0000 +vt -1.8174 0.7892 0.0000 +vt -1.8232 0.7855 0.0000 +vt -1.8184 0.7900 0.0000 +vt -1.8232 0.7860 0.0000 +vt -1.8184 0.7906 0.0000 +vt -1.8242 0.7866 0.0000 +vt -1.8193 0.7913 0.0000 +vt -1.8242 0.7872 0.0000 +vt -1.8193 0.7919 0.0000 +vt -1.8252 0.7878 0.0000 +vt -1.8203 0.7924 0.0000 +vt -1.8271 0.7905 0.0000 +vt -1.8223 0.7952 0.0000 +vt -1.8281 0.7911 0.0000 +vt -1.8232 0.7957 0.0000 +vt -1.8291 0.7916 0.0000 +vt -1.8232 0.7963 0.0000 +vt -1.8291 0.7922 0.0000 +vt -1.8242 0.7969 0.0000 +vt -1.8301 0.7928 0.0000 +vt -1.8242 0.7974 0.0000 +vt -1.8379 0.8024 0.0000 +vt -1.8330 0.8070 0.0000 +vt -1.9287 0.9034 0.0000 +vt -1.9238 0.9080 0.0000 +vt -1.9297 0.9039 0.0000 +vt -1.9238 0.9086 0.0000 +vt -1.9297 0.9045 0.0000 +vt -1.9248 0.9091 0.0000 +vt -1.9307 0.9051 0.0000 +vt -1.9248 0.9097 0.0000 +vt -1.9307 0.9056 0.0000 +vt -1.9258 0.9103 0.0000 +vt -1.9609 0.9420 0.0000 +vt -1.9590 0.9438 0.0000 +vt -1.9609 0.9445 0.0000 +vt -0.9600 0.9500 0.0000 +vt -0.9487 0.9500 0.0000 +vt -0.9463 0.9498 0.0000 +vt -0.9438 0.9492 0.0000 +vt -0.9419 0.9481 0.0000 +vt -0.9399 0.9466 0.0000 +vt -0.9385 0.9453 0.0000 +vt -0.9380 0.9442 0.0000 +vt -0.9106 0.9242 0.0000 +vt -0.9380 0.9430 0.0000 +vt -0.9385 0.9420 0.0000 +vt -0.9399 0.9417 0.0000 +vt -0.9321 0.9243 0.0000 +vt -0.7915 0.7644 0.0000 +vt -0.7119 0.7605 0.0000 +vt -0.9453 0.9416 0.0000 +vt -0.9468 0.9412 0.0000 +vt -0.9473 0.9403 0.0000 +vt -0.9473 0.9391 0.0000 +vt -0.9468 0.9380 0.0000 +vt -0.7119 0.7560 0.0000 +vt -0.7910 0.7634 0.0000 +vt -0.7881 0.7504 0.0000 +vt -0.7915 0.7622 0.0000 +vt -0.7920 0.7614 0.0000 +vt -0.7935 0.7611 0.0000 +vt -0.8540 0.7488 0.0000 +vt -0.8579 0.7537 0.0000 +vt -0.8613 0.7579 0.0000 +vt -0.8643 0.7625 0.0000 +vt -0.8667 0.7676 0.0000 +vt -1.7930 0.7611 0.0000 +vt -1.8662 0.7676 0.0000 +vt -1.8643 0.7625 0.0000 +vt -1.8613 0.7579 0.0000 +vt -1.8574 0.7537 0.0000 +vt -1.8535 0.7488 0.0000 +vt -1.7881 0.7504 0.0000 +vt -1.7920 0.7614 0.0000 +vt -1.7910 0.7622 0.0000 +vt -1.7119 0.7605 0.0000 +vt -1.7119 0.7560 0.0000 +vt -1.7910 0.7634 0.0000 +vt -1.7910 0.7644 0.0000 +vt -1.9102 0.9242 0.0000 +vt -1.9316 0.9243 0.0000 +vt -1.9395 0.9417 0.0000 +vt -1.9385 0.9420 0.0000 +vt -1.9375 0.9430 0.0000 +vt -1.9375 0.9442 0.0000 +vt -1.9453 0.9416 0.0000 +vt -1.9463 0.9412 0.0000 +vt -1.9385 0.9453 0.0000 +vt -1.9473 0.9403 0.0000 +vt -1.9473 0.9391 0.0000 +vt -1.9463 0.9380 0.0000 +vt -1.9395 0.9466 0.0000 +vt -1.9414 0.9481 0.0000 +vt -1.9434 0.9492 0.0000 +vt -1.9463 0.9498 0.0000 +vt -1.9482 0.9500 0.0000 +vt -1.9600 0.9500 0.0000 +vt -0.5571 0.7625 0.0000 +vt -0.5571 0.7583 0.0000 +vt -0.5542 0.7604 0.0000 +vt -0.6196 0.7552 0.0000 +vt -0.6196 0.7655 0.0000 +vt -0.6919 0.7552 0.0000 +vt -0.6919 0.7655 0.0000 +vt -0.8335 0.7552 0.0000 +vt -0.8335 0.7655 0.0000 +vt -0.8472 0.7604 0.0000 +vt -1.8311 0.7777 0.0000 +vt -1.8320 0.7777 0.0000 +vt -1.8320 0.7771 0.0000 +vt -1.8311 0.7766 0.0000 +vt -1.9658 0.9412 0.0000 +vt -1.9658 0.9420 0.0000 +vt -1.9570 0.9410 0.0000 +vt -1.9570 0.9417 0.0000 +vt -1.9551 0.9407 0.0000 +vt -1.9551 0.9415 0.0000 +vt -1.9531 0.9402 0.0000 +vt -1.9531 0.9409 0.0000 +vt -1.9512 0.9398 0.0000 +vt -1.9512 0.9392 0.0000 +vt -1.9492 0.9385 0.0000 +vt -1.9502 0.9380 0.0000 +vt -1.9492 0.9369 0.0000 +vt -1.9482 0.9373 0.0000 +vt -1.9492 0.9362 0.0000 +vt -1.9482 0.9363 0.0000 +vt -1.9482 0.9352 0.0000 +vt -1.9492 0.9355 0.0000 +vt -1.9492 0.9344 0.0000 +vt -1.9492 0.9351 0.0000 +vt -1.9502 0.9341 0.0000 +vt -1.9502 0.9349 0.0000 +vt -1.9551 0.9342 0.0000 +vt -1.9551 0.9350 0.0000 +vt -1.9561 0.9340 0.0000 +vt -1.9561 0.9346 0.0000 +vt -1.9570 0.9337 0.0000 +vt -1.9561 0.9333 0.0000 +vt -1.9570 0.9323 0.0000 +vt -1.9561 0.9324 0.0000 +vt -1.9561 0.9312 0.0000 +vt -1.9561 0.9316 0.0000 +vt -1.9443 0.9193 0.0000 +vt -1.9443 0.9195 0.0000 +vt -1.8320 0.7784 0.0000 +vt -1.8320 0.7788 0.0000 +vt -1.8330 0.7766 0.0000 +vt -1.8320 0.7759 0.0000 +vt -1.8330 0.7765 0.0000 +vt -1.8340 0.7756 0.0000 +vt -1.9902 0.9215 0.0000 +vt -1.9941 0.9214 0.0000 +vt -1.9912 0.9260 0.0000 +vt -1.9961 0.9260 0.0000 +vt -1.9912 0.9304 0.0000 +vt -1.9951 0.9307 0.0000 +vt -1.9941 0.9352 0.0000 +vt -1.9902 0.9348 0.0000 +vt -1.9922 0.9391 0.0000 +vt -1.9873 0.9385 0.0000 +vt -0.8325 0.7771 0.0000 +vt -0.8325 0.7777 0.0000 +vt -0.8315 0.7777 0.0000 +vt -0.8315 0.7766 0.0000 +vt -0.9663 0.9412 0.0000 +vt -0.9663 0.9420 0.0000 +vt -0.9570 0.9410 0.0000 +vt -0.9570 0.9417 0.0000 +vt -0.9551 0.9407 0.0000 +vt -0.9551 0.9415 0.0000 +vt -0.9536 0.9402 0.0000 +vt -0.9531 0.9409 0.0000 +vt -0.9517 0.9398 0.0000 +vt -0.9517 0.9392 0.0000 +vt -0.9497 0.9385 0.0000 +vt -0.9507 0.9380 0.0000 +vt -0.9492 0.9369 0.0000 +vt -0.9487 0.9373 0.0000 +vt -0.9492 0.9362 0.0000 +vt -0.9482 0.9363 0.0000 +vt -0.9487 0.9352 0.0000 +vt -0.9492 0.9355 0.0000 +vt -0.9492 0.9344 0.0000 +vt -0.9497 0.9351 0.0000 +vt -0.9502 0.9341 0.0000 +vt -0.9502 0.9349 0.0000 +vt -0.9551 0.9342 0.0000 +vt -0.9551 0.9350 0.0000 +vt -0.9561 0.9340 0.0000 +vt -0.9565 0.9346 0.0000 +vt -0.9570 0.9337 0.0000 +vt -0.9565 0.9333 0.0000 +vt -0.9575 0.9323 0.0000 +vt -0.9565 0.9324 0.0000 +vt -0.9565 0.9312 0.0000 +vt -0.9561 0.9316 0.0000 +vt -0.9448 0.9193 0.0000 +vt -0.9443 0.9195 0.0000 +vt -0.8325 0.7784 0.0000 +vt -0.8320 0.7788 0.0000 +vt -0.8330 0.7766 0.0000 +vt -0.8325 0.7759 0.0000 +vt -0.8335 0.7765 0.0000 +vt -0.8340 0.7756 0.0000 +vt -0.9902 0.9215 0.0000 +vt -0.9941 0.9214 0.0000 +vt -0.9917 0.9260 0.0000 +vt -0.9961 0.9260 0.0000 +vt -0.9917 0.9304 0.0000 +vt -0.9956 0.9307 0.0000 +vt -0.9946 0.9352 0.0000 +vt -0.9907 0.9348 0.0000 +vt -0.9922 0.9391 0.0000 +vt -0.9878 0.9385 0.0000 +vt -1.9531 0.9434 0.0000 +vt -1.9570 0.9444 0.0000 +vt -1.9561 0.9409 0.0000 +vt -1.9434 0.9327 0.0000 +vt -1.9482 0.9288 0.0000 +vt -1.9395 0.9269 0.0000 +vt -1.9443 0.9231 0.0000 +vt -1.9385 0.9257 0.0000 +vt -1.9434 0.9218 0.0000 +vt -1.9375 0.9244 0.0000 +vt -1.9424 0.9206 0.0000 +vt -1.9365 0.9233 0.0000 +vt -1.9414 0.9194 0.0000 +vt -1.9355 0.9225 0.0000 +vt -1.9404 0.9186 0.0000 +vt -1.9355 0.9219 0.0000 +vt -1.9404 0.9180 0.0000 +vt -1.9346 0.9213 0.0000 +vt -1.9395 0.9174 0.0000 +vt -1.9346 0.9207 0.0000 +vt -1.9395 0.9167 0.0000 +vt -1.9336 0.9201 0.0000 +vt -1.9385 0.9163 0.0000 +vt -1.9336 0.9195 0.0000 +vt -1.9385 0.9156 0.0000 +vt -1.9307 0.9164 0.0000 +vt -1.9355 0.9126 0.0000 +vt -1.9307 0.9159 0.0000 +vt -1.9355 0.9120 0.0000 +vt -1.9297 0.9155 0.0000 +vt -1.9355 0.9116 0.0000 +vt -1.9297 0.9149 0.0000 +vt -1.9346 0.9110 0.0000 +vt -1.9346 0.9105 0.0000 +vt -1.9297 0.9143 0.0000 +vt -1.9238 0.9073 0.0000 +vt -1.8604 0.8256 0.0000 +vt -1.8652 0.8218 0.0000 +vt -1.8594 0.8251 0.0000 +vt -1.8652 0.8212 0.0000 +vt -1.8594 0.8245 0.0000 +vt -1.8643 0.8206 0.0000 +vt -1.8594 0.8240 0.0000 +vt -1.8643 0.8202 0.0000 +vt -1.8584 0.8234 0.0000 +vt -1.8613 0.8214 0.0000 +vt -1.8633 0.8196 0.0000 +vt -1.8291 0.7805 0.0000 +vt -1.8301 0.7832 0.0000 +vt -1.8320 0.7821 0.0000 +vt -0.8989 0.4390 0.0000 +vt -0.8960 0.4204 0.0000 +vt -0.8984 0.4204 0.0000 +vt -0.9014 0.4385 0.0000 +vt -0.9014 0.4399 0.0000 +vt -0.9004 0.4204 0.0000 +vt -0.9028 0.4385 0.0000 +vt -0.8354 0.5083 0.0000 +vt -0.8281 0.5107 0.0000 +vt -0.8301 0.5049 0.0000 +vt -0.8354 0.5037 0.0000 +vt -0.8389 0.5090 0.0000 +vt -0.8413 0.5049 0.0000 +vt -0.8413 0.5112 0.0000 +vt -0.8452 0.5085 0.0000 +vt -0.8472 0.5139 0.0000 +vt -0.8428 0.5149 0.0000 +vt -0.8477 0.5195 0.0000 +vt -0.8433 0.5195 0.0000 +vt -0.8433 0.5293 0.0000 +vt -0.8477 0.5295 0.0000 +vt -0.8418 0.6609 0.0000 +vt -0.8237 0.5359 0.0000 +vt -0.8457 0.6611 0.0000 +vt -0.8110 0.6687 0.0000 +vt -0.8159 0.6758 0.0000 +vt -0.9014 0.4146 0.0000 +vt -0.9053 0.4146 0.0000 +vt -0.9058 0.3345 0.0000 +vt -0.9023 0.3350 0.0000 +vt -0.9004 0.4155 0.0000 +vt -0.8984 0.4155 0.0000 +vt -0.8960 0.4155 0.0000 +vt -0.7417 0.7239 0.0000 +vt -0.7354 0.7288 0.0000 +vt -0.7383 0.7144 0.0000 +vt -0.7427 0.7153 0.0000 +vt -0.7847 0.5474 0.0000 +vt -0.7886 0.5483 0.0000 +vt -0.7905 0.5405 0.0000 +vt -0.7866 0.5391 0.0000 +vt -0.7905 0.5320 0.0000 +vt -0.7939 0.5344 0.0000 +vt -0.7988 0.5288 0.0000 +vt -0.7959 0.5259 0.0000 +vt -0.8052 0.5188 0.0000 +vt -0.8071 0.5222 0.0000 +vt -0.8159 0.5120 0.0000 +vt -0.8184 0.5159 0.0000 +vt -0.8242 0.5129 0.0000 +vt -0.8257 0.5071 0.0000 +vt -0.9570 0.7117 0.0000 +vt -0.9575 0.7202 0.0000 +vt -0.8892 0.6765 0.0000 +vt -0.8931 0.6685 0.0000 +vt -0.9106 0.5452 0.0000 +vt -0.8784 0.5347 0.0000 +vt -0.8740 0.5095 0.0000 +vt -0.9146 0.5439 0.0000 +vt -0.9082 0.5374 0.0000 +vt -0.8804 0.5127 0.0000 +vt -0.8828 0.5088 0.0000 +vt -0.8730 0.5039 0.0000 +vt -0.9609 0.7107 0.0000 +vt -0.8916 0.5190 0.0000 +vt -0.9121 0.5356 0.0000 +vt -0.9082 0.5286 0.0000 +vt -0.9048 0.5310 0.0000 +vt -0.8940 0.5154 0.0000 +vt -0.9028 0.5225 0.0000 +vt -0.8999 0.5256 0.0000 +vt -0.9639 0.7251 0.0000 +vt -0.8110 0.6792 0.0000 +vt -0.8062 0.6719 0.0000 +vt -0.8198 0.5383 0.0000 +vt -0.9053 0.4199 0.0000 +vt -0.9014 0.4199 0.0000 +vt -0.8965 0.4155 0.0000 +vt -0.8960 0.3354 0.0000 +vt -0.8979 0.3354 0.0000 +vt -0.8965 0.3203 0.0000 +vt -0.8979 0.3203 0.0000 +vt -0.8965 0.3169 0.0000 +vt -0.8950 0.3203 0.0000 +vt -0.8945 0.3354 0.0000 +vt -0.8940 0.4155 0.0000 +vt -1.8984 0.4204 0.0000 +vt -1.8955 0.4204 0.0000 +vt -1.8984 0.4390 0.0000 +vt -1.9014 0.4385 0.0000 +vt -1.9014 0.4399 0.0000 +vt -1.9004 0.4204 0.0000 +vt -1.9023 0.4385 0.0000 +vt -1.8301 0.5049 0.0000 +vt -1.8281 0.5107 0.0000 +vt -1.8350 0.5083 0.0000 +vt -1.8350 0.5037 0.0000 +vt -1.8389 0.5090 0.0000 +vt -1.8408 0.5049 0.0000 +vt -1.8408 0.5112 0.0000 +vt -1.8447 0.5085 0.0000 +vt -1.8467 0.5139 0.0000 +vt -1.8428 0.5149 0.0000 +vt -1.8477 0.5195 0.0000 +vt -1.8428 0.5195 0.0000 +vt -1.8428 0.5293 0.0000 +vt -1.8232 0.5359 0.0000 +vt -1.8477 0.5295 0.0000 +vt -1.8105 0.6687 0.0000 +vt -1.8418 0.6609 0.0000 +vt -1.8457 0.6611 0.0000 +vt -1.8154 0.6758 0.0000 +vt -1.9053 0.3345 0.0000 +vt -1.9053 0.4146 0.0000 +vt -1.9014 0.4146 0.0000 +vt -1.9023 0.3350 0.0000 +vt -1.9004 0.4155 0.0000 +vt -1.8984 0.4155 0.0000 +vt -1.8955 0.4155 0.0000 +vt -1.7354 0.7288 0.0000 +vt -1.7412 0.7239 0.0000 +vt -1.7383 0.7144 0.0000 +vt -1.7422 0.7153 0.0000 +vt -1.7842 0.5474 0.0000 +vt -1.7881 0.5483 0.0000 +vt -1.7900 0.5405 0.0000 +vt -1.7861 0.5391 0.0000 +vt -1.7900 0.5320 0.0000 +vt -1.7939 0.5344 0.0000 +vt -1.7988 0.5288 0.0000 +vt -1.7959 0.5259 0.0000 +vt -1.8047 0.5188 0.0000 +vt -1.8066 0.5222 0.0000 +vt -1.8154 0.5120 0.0000 +vt -1.8184 0.5159 0.0000 +vt -1.8242 0.5129 0.0000 +vt -1.8252 0.5071 0.0000 +vt -1.8887 0.6765 0.0000 +vt -1.9570 0.7202 0.0000 +vt -1.9570 0.7117 0.0000 +vt -1.8926 0.6685 0.0000 +vt -1.9102 0.5452 0.0000 +vt -1.9141 0.5439 0.0000 +vt -1.9609 0.7107 0.0000 +vt -1.8779 0.5347 0.0000 +vt -1.9082 0.5374 0.0000 +vt -1.9639 0.7251 0.0000 +vt -1.8740 0.5095 0.0000 +vt -1.9121 0.5356 0.0000 +vt -1.9082 0.5286 0.0000 +vt -1.9043 0.5310 0.0000 +vt -1.8799 0.5127 0.0000 +vt -1.9023 0.5225 0.0000 +vt -1.8916 0.5190 0.0000 +vt -1.8994 0.5256 0.0000 +vt -1.8936 0.5154 0.0000 +vt -1.8828 0.5088 0.0000 +vt -1.8730 0.5039 0.0000 +vt -1.8105 0.6792 0.0000 +vt -1.8057 0.6719 0.0000 +vt -1.8193 0.5383 0.0000 +vt -1.9053 0.4199 0.0000 +vt -1.9014 0.4199 0.0000 +vt -1.8965 0.4155 0.0000 +vt -1.8955 0.3354 0.0000 +vt -1.8975 0.3354 0.0000 +vt -1.8965 0.3203 0.0000 +vt -1.8975 0.3203 0.0000 +vt -1.8965 0.3169 0.0000 +vt -1.8945 0.3203 0.0000 +vt -1.8945 0.3354 0.0000 +vt -1.8936 0.4155 0.0000 +vt -1.5342 0.1079 0.0000 +vt -1.5342 0.1143 0.0000 +vt -1.5371 0.1147 0.0000 +vt -1.5361 0.1069 0.0000 +vt -1.6162 0.1104 0.0000 +vt -1.6152 0.1099 0.0000 +vt -1.6152 0.1113 0.0000 +vt -1.6162 0.1113 0.0000 +vt -1.6162 0.1108 0.0000 +vt -1.5498 0.1069 0.0000 +vt -1.5498 0.1147 0.0000 +vt -1.5947 0.1069 0.0000 +vt -1.5947 0.1147 0.0000 +vt -1.6025 0.1074 0.0000 +vt -1.6025 0.1138 0.0000 +vt -1.4287 0.5691 0.0000 +vt -1.4287 0.5649 0.0000 +vt -1.3604 0.5652 0.0000 +vt -1.3604 0.5691 0.0000 +vt -1.5127 0.1958 0.0000 +vt -1.5166 0.1968 0.0000 +vt -1.5176 0.1348 0.0000 +vt -1.5137 0.1348 0.0000 +vt -1.3535 0.9270 0.0000 +vt -1.3564 0.9374 0.0000 +vt -1.4277 0.8615 0.0000 +vt -1.4268 0.8530 0.0000 +vt -1.5566 0.7217 0.0000 +vt -1.5557 0.7131 0.0000 +vt -1.3516 0.9194 0.0000 +vt -1.5957 0.6799 0.0000 +vt -1.5947 0.6711 0.0000 +vt -1.4258 0.8455 0.0000 +vt -1.6172 0.6570 0.0000 +vt -1.5547 0.7058 0.0000 +vt -1.6152 0.6487 0.0000 +vt -1.5937 0.6641 0.0000 +vt -1.7656 0.4980 0.0000 +vt -1.3525 0.8875 0.0000 +vt -1.4268 0.8203 0.0000 +vt -1.7627 0.4902 0.0000 +vt -1.5547 0.6826 0.0000 +vt -1.7725 0.4888 0.0000 +vt -1.6143 0.6414 0.0000 +vt -1.5908 0.6440 0.0000 +vt -1.7695 0.4829 0.0000 +vt -1.7607 0.4829 0.0000 +vt -1.3535 0.8555 0.0000 +vt -1.7783 0.4785 0.0000 +vt -1.4268 0.7950 0.0000 +vt -1.5547 0.6597 0.0000 +vt -1.6143 0.6189 0.0000 +vt -1.5879 0.6240 0.0000 +vt -1.7656 0.4771 0.0000 +vt -1.7549 0.4683 0.0000 +vt -1.3555 0.7916 0.0000 +vt -1.4277 0.7449 0.0000 +vt -1.5537 0.6135 0.0000 +vt -1.6143 0.5964 0.0000 +vt -1.5830 0.5840 0.0000 +vt -1.3574 0.6638 0.0000 +vt -1.4287 0.6440 0.0000 +vt -1.5547 0.5208 0.0000 +vt -1.7490 0.4531 0.0000 +vt -1.6133 0.5518 0.0000 +vt -1.5713 0.5039 0.0000 +vt -1.5547 0.4521 0.0000 +vt -1.7754 0.4487 0.0000 +vt -1.5898 0.4868 0.0000 +vt -1.5635 0.4443 0.0000 +vt -1.5820 0.4790 0.0000 +vt -1.7373 0.4238 0.0000 +vt -1.6162 0.4604 0.0000 +vt -1.7568 0.4146 0.0000 +vt -1.7734 0.4756 0.0000 +vt -1.5801 0.4287 0.0000 +vt -1.7148 0.3643 0.0000 +vt -1.7686 0.4722 0.0000 +vt -1.7539 0.4043 0.0000 +vt -1.7764 0.4346 0.0000 +vt -1.7773 0.3970 0.0000 +vt -1.7773 0.4160 0.0000 +vt -1.7314 0.3462 0.0000 +vt -1.7764 0.3779 0.0000 +vt -1.7725 0.4604 0.0000 +vt -1.7803 0.4482 0.0000 +vt -1.7832 0.4150 0.0000 +vt -1.7822 0.3960 0.0000 +vt -1.7822 0.4336 0.0000 +vt -1.7744 0.3564 0.0000 +vt -1.7812 0.3765 0.0000 +vt -1.7871 0.4141 0.0000 +vt -1.7871 0.3950 0.0000 +vt -1.7871 0.4331 0.0000 +vt -1.7715 0.3428 0.0000 +vt -1.7861 0.4478 0.0000 +vt -1.7793 0.3550 0.0000 +vt -1.7656 0.3291 0.0000 +vt -1.7783 0.4600 0.0000 +vt -1.7861 0.3755 0.0000 +vt -1.7578 0.3179 0.0000 +vt -1.7705 0.4668 0.0000 +vt -1.7764 0.4668 0.0000 +vt -1.7822 0.4663 0.0000 +vt -1.7471 0.3096 0.0000 +vt -1.7754 0.3413 0.0000 +vt -1.7832 0.3535 0.0000 +vt -1.7842 0.4595 0.0000 +vt -1.7344 0.3062 0.0000 +vt -1.7695 0.3271 0.0000 +vt -1.7803 0.3394 0.0000 +vt -1.7744 0.3247 0.0000 +vt -1.7607 0.3145 0.0000 +vt -1.7490 0.3066 0.0000 +vt -1.7637 0.3115 0.0000 +vt -1.7344 0.3042 0.0000 +vt -1.7510 0.3037 0.0000 +vt -1.7344 0.3018 0.0000 +vt -1.5547 0.4482 0.0000 +vt -1.5625 0.4404 0.0000 +vt -1.5801 0.4243 0.0000 +vt -1.3838 0.3306 0.0000 +vt -1.3867 0.3325 0.0000 +vt -1.3984 0.3154 0.0000 +vt -1.4023 0.3164 0.0000 +vt -1.4053 0.3081 0.0000 +vt -1.4092 0.3091 0.0000 +vt -1.5840 0.1973 0.0000 +vt -1.6025 0.1343 0.0000 +vt -1.6748 0.1978 0.0000 +vt -1.7178 0.1362 0.0000 +vt -1.7207 0.1982 0.0000 +vt -1.7764 0.1343 0.0000 +vt -1.7432 0.1982 0.0000 +vt -1.8047 0.1338 0.0000 +vt -1.7656 0.1982 0.0000 +vt -1.8340 0.1328 0.0000 +vt -1.7725 0.1987 0.0000 +vt -1.8398 0.1333 0.0000 +vt -1.7793 0.1992 0.0000 +vt -1.8477 0.1338 0.0000 +vt -1.6523 0.3135 0.0000 +vt -1.6455 0.3130 0.0000 +vt -1.6387 0.3125 0.0000 +vt -1.6143 0.3477 0.0000 +vt -1.6172 0.3120 0.0000 +vt -1.6074 0.3472 0.0000 +vt -1.6006 0.3467 0.0000 +vt -1.5967 0.3115 0.0000 +vt -1.5820 0.3438 0.0000 +vt -1.5928 0.3667 0.0000 +vt -1.5869 0.3662 0.0000 +vt -1.5557 0.3101 0.0000 +vt -1.5791 0.3652 0.0000 +vt -1.5645 0.3413 0.0000 +vt -1.5586 0.3652 0.0000 +vt -1.4717 0.3091 0.0000 +vt -1.5283 0.3354 0.0000 +vt -1.4473 0.4985 0.0000 +vt -1.4414 0.4971 0.0000 +vt -1.4346 0.4951 0.0000 +vt -1.5381 0.3647 0.0000 +vt -1.4219 0.4897 0.0000 +vt -1.4561 0.3247 0.0000 +vt -1.4971 0.3643 0.0000 +vt -1.4395 0.5046 0.0000 +vt -1.4346 0.5024 0.0000 +vt -1.4297 0.5000 0.0000 +vt -1.4082 0.4844 0.0000 +vt -1.4248 0.5022 0.0000 +vt -1.4199 0.5042 0.0000 +vt -1.4307 0.5103 0.0000 +vt -1.4287 0.5068 0.0000 +vt -1.3818 0.4731 0.0000 +vt -1.4150 0.5056 0.0000 +vt -1.4199 0.5105 0.0000 +vt -1.4043 0.5078 0.0000 +vt -1.3740 0.4902 0.0000 +vt -1.4199 0.5144 0.0000 +vt -1.4141 0.5115 0.0000 +vt -1.3906 0.5088 0.0000 +vt -1.4033 0.5134 0.0000 +vt -1.3662 0.4863 0.0000 +vt -1.3740 0.5095 0.0000 +vt -1.3574 0.5090 0.0000 +vt -1.4141 0.5159 0.0000 +vt -1.4424 0.3384 0.0000 +vt -1.3906 0.5139 0.0000 +vt -1.4023 0.5176 0.0000 +vt -1.3730 0.5142 0.0000 +vt -1.4170 0.3633 0.0000 +vt -1.3398 0.5085 0.0000 +vt -1.3564 0.5139 0.0000 +vt -1.3896 0.5183 0.0000 +vt -1.3281 0.4517 0.0000 +vt -1.3203 0.5056 0.0000 +vt -1.3730 0.5183 0.0000 +vt -1.3389 0.5127 0.0000 +vt -1.3555 0.5173 0.0000 +vt -1.3086 0.5029 0.0000 +vt -1.2959 0.4976 0.0000 +vt -1.3379 0.5166 0.0000 +vt -1.3193 0.5112 0.0000 +vt -1.2861 0.4907 0.0000 +vt -1.3125 0.4658 0.0000 +vt -1.3184 0.5151 0.0000 +vt -1.3066 0.5081 0.0000 +vt -1.4365 0.3325 0.0000 +vt -1.3047 0.5122 0.0000 +vt -1.2939 0.5020 0.0000 +vt -1.2920 0.5059 0.0000 +vt -1.2793 0.4810 0.0000 +vt -1.2832 0.4932 0.0000 +vt -1.2754 0.4683 0.0000 +vt -1.2803 0.4951 0.0000 +vt -1.2734 0.4683 0.0000 +vt -1.2764 0.4819 0.0000 +vt -1.2744 0.4829 0.0000 +vt -1.2715 0.4683 0.0000 +vt -1.7285 0.3037 0.0000 +vt -1.7285 0.2993 0.0000 +vt -1.7148 0.3003 0.0000 +vt -1.7158 0.3042 0.0000 +vt -1.7021 0.3066 0.0000 +vt -1.7031 0.3105 0.0000 +vt -1.7275 0.3423 0.0000 +vt -1.6943 0.3135 0.0000 +vt -1.6943 0.3169 0.0000 +vt -1.5830 0.4194 0.0000 +vt -1.5830 0.4233 0.0000 +vt -1.7119 0.3599 0.0000 +vt -1.5850 0.4712 0.0000 +vt -1.5928 0.4790 0.0000 +vt -1.2734 0.4512 0.0000 +vt -1.2725 0.4624 0.0000 +vt -1.2764 0.4624 0.0000 +vt -1.2773 0.4512 0.0000 +vt -1.3105 0.4609 0.0000 +vt -1.2822 0.4404 0.0000 +vt -1.2783 0.4399 0.0000 +vt -1.2881 0.4331 0.0000 +vt -1.3252 0.4478 0.0000 +vt -1.4248 0.3354 0.0000 +vt -1.2842 0.4326 0.0000 +vt -1.4307 0.3408 0.0000 +vt -1.3789 0.3359 0.0000 +vt -1.3760 0.3340 0.0000 +vt -1.6016 0.1177 0.0000 +vt -1.5986 0.1167 0.0000 +vt -1.5977 0.1245 0.0000 +vt -1.6006 0.1240 0.0000 +vt -1.5195 0.1191 0.0000 +vt -1.5186 0.1201 0.0000 +vt -1.5195 0.1206 0.0000 +vt -1.5322 0.1235 0.0000 +vt -1.5332 0.1167 0.0000 +vt -1.6182 0.1240 0.0000 +vt -1.6172 0.1255 0.0000 +vt -1.6182 0.1250 0.0000 +vt -1.5400 0.1240 0.0000 +vt -1.5410 0.1162 0.0000 +vt -1.8193 0.4858 0.0000 +vt -1.8154 0.4980 0.0000 +vt -1.8174 0.4980 0.0000 +vt -1.8203 0.4971 0.0000 +vt -1.8223 0.4961 0.0000 +vt -1.8242 0.4941 0.0000 +vt -1.8252 0.4922 0.0000 +vt -1.8262 0.4888 0.0000 +vt -1.8262 0.4854 0.0000 +vt -1.8271 0.4819 0.0000 +vt -1.8271 0.4785 0.0000 +vt -1.8184 0.4033 0.0000 +vt -1.8271 0.4697 0.0000 +vt -1.8271 0.4614 0.0000 +vt -1.8262 0.4438 0.0000 +vt -1.8262 0.4097 0.0000 +vt -1.8252 0.3960 0.0000 +vt -1.8232 0.3613 0.0000 +vt -1.8213 0.3267 0.0000 +vt -1.8135 0.3203 0.0000 +vt -1.8203 0.3198 0.0000 +vt -1.8193 0.3130 0.0000 +vt -1.8027 0.2593 0.0000 +vt -1.8154 0.2891 0.0000 +vt -1.8037 0.2593 0.0000 +vt -1.8066 0.2598 0.0000 +vt -1.8086 0.2607 0.0000 +vt -1.8115 0.2651 0.0000 +vt -1.8105 0.2627 0.0000 +vt -1.8164 0.2583 0.0000 +vt -1.8135 0.2588 0.0000 +vt -1.8193 0.2695 0.0000 +vt -1.8184 0.2588 0.0000 +vt -1.8203 0.2598 0.0000 +vt -1.8223 0.2607 0.0000 +vt -1.8232 0.2632 0.0000 +vt -1.8252 0.2661 0.0000 +vt -1.8262 0.2695 0.0000 +vt -1.8271 0.2725 0.0000 +vt -1.8271 0.2759 0.0000 +vt -1.8301 0.3501 0.0000 +vt -1.8291 0.2842 0.0000 +vt -1.8301 0.2925 0.0000 +vt -1.8320 0.3096 0.0000 +vt -1.8359 0.3433 0.0000 +vt -1.8369 0.3569 0.0000 +vt -1.8340 0.4336 0.0000 +vt -1.8389 0.3916 0.0000 +vt -1.8408 0.4263 0.0000 +vt -1.8408 0.4331 0.0000 +vt -1.8408 0.4404 0.0000 +vt -1.8281 0.4971 0.0000 +vt -1.8389 0.4653 0.0000 +vt -1.8301 0.4971 0.0000 +vt -1.8320 0.4966 0.0000 +vt -1.8350 0.4951 0.0000 +vt -1.8369 0.4902 0.0000 +vt -1.8359 0.4927 0.0000 +vt -1.4951 0.8359 0.0000 +vt -1.4951 0.8373 0.0000 +vt -1.4961 0.8358 0.0000 +vt -1.4961 0.8372 0.0000 +vt -1.4980 0.8357 0.0000 +vt -1.4980 0.8370 0.0000 +vt -1.5000 0.8356 0.0000 +vt -1.5000 0.8369 0.0000 +vt -1.5029 0.8354 0.0000 +vt -1.5020 0.8368 0.0000 +vt -1.5049 0.8353 0.0000 +vt -1.5049 0.8367 0.0000 +vt -1.5244 0.8335 0.0000 +vt -1.5244 0.8348 0.0000 +vt -1.5449 0.8318 0.0000 +vt -1.5439 0.8330 0.0000 +vt -1.5498 0.8317 0.0000 +vt -1.5498 0.8329 0.0000 +vt -1.5547 0.8317 0.0000 +vt -1.5547 0.8328 0.0000 +vt -1.5762 0.8335 0.0000 +vt -1.5752 0.8346 0.0000 +vt -1.5967 0.8353 0.0000 +vt -1.5967 0.8364 0.0000 +vt -1.6045 0.8362 0.0000 +vt -1.6035 0.8369 0.0000 +vt -1.6191 0.8374 0.0000 +vt -1.6191 0.8381 0.0000 +vt -1.6260 0.8380 0.0000 +vt -1.6260 0.8387 0.0000 +vt -1.6299 0.8383 0.0000 +vt -1.6299 0.8390 0.0000 +vt -1.6338 0.8386 0.0000 +vt -1.6338 0.8394 0.0000 +vt -1.6348 0.8395 0.0000 +vt -1.6348 0.8387 0.0000 +vt -1.6367 0.8396 0.0000 +vt -1.6367 0.8389 0.0000 +vt -1.6377 0.8396 0.0000 +vt -1.6377 0.8390 0.0000 +vt -1.6396 0.8397 0.0000 +vt -1.6396 0.8390 0.0000 +vt -1.6406 0.8397 0.0000 +vt -1.6406 0.8390 0.0000 +vt -1.6416 0.8398 0.0000 +vt -1.6416 0.8392 0.0000 +vt -1.6426 0.8401 0.0000 +vt -1.6426 0.8394 0.0000 +vt -1.6436 0.8403 0.0000 +vt -1.6436 0.8396 0.0000 +vt -1.6445 0.8400 0.0000 +vt -1.6436 0.8406 0.0000 +vt -1.6191 0.8450 0.0000 +vt -1.6191 0.8446 0.0000 +vt -1.6191 0.8448 0.0000 +vt -1.6191 0.8445 0.0000 +vt -1.6182 0.8445 0.0000 +vt -1.6182 0.8441 0.0000 +vt -1.6172 0.8441 0.0000 +vt -1.6172 0.8438 0.0000 +vt -1.6162 0.8439 0.0000 +vt -1.6162 0.8434 0.0000 +vt -1.6152 0.8436 0.0000 +vt -1.6152 0.8433 0.0000 +vt -1.6084 0.8423 0.0000 +vt -1.6084 0.8418 0.0000 +vt -1.6016 0.8409 0.0000 +vt -1.6016 0.8405 0.0000 +vt -1.5986 0.8407 0.0000 +vt -1.5986 0.8401 0.0000 +vt -1.5967 0.8407 0.0000 +vt -1.5967 0.8401 0.0000 +vt -1.5840 0.8409 0.0000 +vt -1.5840 0.8405 0.0000 +vt -1.5723 0.8413 0.0000 +vt -1.5723 0.8407 0.0000 +vt -1.5703 0.8414 0.0000 +vt -1.5703 0.8408 0.0000 +vt -1.5693 0.8417 0.0000 +vt -1.5693 0.8409 0.0000 +vt -1.5674 0.8419 0.0000 +vt -1.5674 0.8411 0.0000 +vt -1.5654 0.8420 0.0000 +vt -1.5654 0.8413 0.0000 +vt -1.5566 0.8422 0.0000 +vt -1.5566 0.8413 0.0000 +vt -1.5479 0.8422 0.0000 +vt -1.5479 0.8413 0.0000 +vt -1.5391 0.8422 0.0000 +vt -1.5391 0.8413 0.0000 +vt -1.5303 0.8422 0.0000 +vt -1.5303 0.8414 0.0000 +vt -1.5283 0.8424 0.0000 +vt -1.5283 0.8416 0.0000 +vt -1.5264 0.8427 0.0000 +vt -1.5264 0.8418 0.0000 +vt -1.5244 0.8419 0.0000 +vt -1.5244 0.8429 0.0000 +vt -1.5215 0.8422 0.0000 +vt -1.5215 0.8431 0.0000 +vt -1.5205 0.8424 0.0000 +vt -1.5205 0.8434 0.0000 +vt -1.5186 0.8425 0.0000 +vt -1.5186 0.8435 0.0000 +vt -1.5166 0.8425 0.0000 +vt -1.5166 0.8435 0.0000 +vt -1.5146 0.8424 0.0000 +vt -1.5146 0.8435 0.0000 +vt -1.5137 0.8434 0.0000 +vt -1.5137 0.8423 0.0000 +vt -1.7959 0.2725 0.0000 +vt -1.7988 0.2769 0.0000 +vt -1.7979 0.2744 0.0000 +vt -1.8037 0.2979 0.0000 +vt -1.7939 0.2715 0.0000 +vt -1.7910 0.2710 0.0000 +vt -1.7900 0.2710 0.0000 +vt -1.8076 0.3188 0.0000 +vt -1.8018 0.3262 0.0000 +vt -1.8086 0.3257 0.0000 +vt -1.8096 0.3325 0.0000 +vt -1.8115 0.3638 0.0000 +vt -1.8135 0.3945 0.0000 +vt -1.8066 0.4019 0.0000 +vt -1.8135 0.3979 0.0000 +vt -1.8135 0.4019 0.0000 +vt -1.8135 0.4053 0.0000 +vt -1.8135 0.4087 0.0000 +vt -1.8135 0.4243 0.0000 +vt -1.8135 0.4399 0.0000 +vt -1.8135 0.4556 0.0000 +vt -1.8135 0.4712 0.0000 +vt -1.8057 0.4785 0.0000 +vt -1.8135 0.4746 0.0000 +vt -1.8125 0.4780 0.0000 +vt -1.8115 0.4814 0.0000 +vt -1.8105 0.4844 0.0000 +vt -1.8096 0.4868 0.0000 +vt -1.8076 0.4888 0.0000 +vt -1.8057 0.4897 0.0000 +vt -1.8037 0.4902 0.0000 +vt -1.8018 0.4907 0.0000 +vt -1.7988 0.4863 0.0000 +vt -1.7969 0.4912 0.0000 +vt -1.7988 0.4888 0.0000 +vt -1.8008 0.4653 0.0000 +vt -1.7949 0.4927 0.0000 +vt -1.7920 0.4932 0.0000 +vt -1.7910 0.4932 0.0000 +vt -1.8027 0.4443 0.0000 +vt -1.7959 0.4375 0.0000 +vt -1.8027 0.4375 0.0000 +vt -1.8027 0.4307 0.0000 +vt -1.7920 0.3618 0.0000 +vt -1.8018 0.3994 0.0000 +vt -1.7930 0.3618 0.0000 +vt -1.7998 0.3682 0.0000 +vt -1.7998 0.3647 0.0000 +vt -1.7969 0.3389 0.0000 +vt -1.7998 0.3613 0.0000 +vt -1.7988 0.3579 0.0000 +vt -1.7988 0.3545 0.0000 +vt -1.7949 0.3232 0.0000 +vt -1.7939 0.3076 0.0000 +vt -1.7920 0.2920 0.0000 +vt -1.7832 0.2856 0.0000 +vt -1.7910 0.2886 0.0000 +vt -1.7900 0.2852 0.0000 +vt -1.7891 0.2822 0.0000 +vt -1.7881 0.2788 0.0000 +vt -1.7871 0.2764 0.0000 +vt -1.7852 0.2749 0.0000 +vt -1.7822 0.2739 0.0000 +vt -1.7803 0.2739 0.0000 +vt -1.7783 0.2739 0.0000 +vt -1.6201 0.8481 0.0000 +vt -1.6211 0.8486 0.0000 +vt -1.6211 0.8484 0.0000 +vt -1.6201 0.8479 0.0000 +vt -1.6191 0.8474 0.0000 +vt -1.6191 0.8477 0.0000 +vt -1.6172 0.8469 0.0000 +vt -1.6172 0.8472 0.0000 +vt -1.6162 0.8466 0.0000 +vt -1.6162 0.8468 0.0000 +vt -1.6152 0.8463 0.0000 +vt -1.6152 0.8461 0.0000 +vt -1.6133 0.8459 0.0000 +vt -1.6133 0.8456 0.0000 +vt -1.6113 0.8453 0.0000 +vt -1.6113 0.8456 0.0000 +vt -1.6084 0.8451 0.0000 +vt -1.6084 0.8455 0.0000 +vt -1.6064 0.8450 0.0000 +vt -1.6064 0.8453 0.0000 +vt -1.5967 0.8451 0.0000 +vt -1.5967 0.8447 0.0000 +vt -1.5859 0.8447 0.0000 +vt -1.5859 0.8444 0.0000 +vt -1.5762 0.8445 0.0000 +vt -1.5762 0.8441 0.0000 +vt -1.5654 0.8442 0.0000 +vt -1.5654 0.8439 0.0000 +vt -1.5605 0.8442 0.0000 +vt -1.5605 0.8439 0.0000 +vt -1.5566 0.8446 0.0000 +vt -1.5566 0.8444 0.0000 +vt -1.5371 0.8469 0.0000 +vt -1.5371 0.8473 0.0000 +vt -1.5186 0.8495 0.0000 +vt -1.5186 0.8499 0.0000 +vt -1.5166 0.8501 0.0000 +vt -1.5166 0.8497 0.0000 +vt -1.5146 0.8505 0.0000 +vt -1.5146 0.8501 0.0000 +vt -1.5137 0.8508 0.0000 +vt -1.5137 0.8506 0.0000 +vt -1.5117 0.8513 0.0000 +vt -1.5117 0.8510 0.0000 +vt -1.5117 0.8514 0.0000 +vt -1.5117 0.8512 0.0000 +vt -1.8467 0.2983 0.0000 +vt -1.8516 0.3364 0.0000 +vt -1.8486 0.3013 0.0000 +vt -1.8447 0.2959 0.0000 +vt -1.8418 0.2949 0.0000 +vt -1.8389 0.2944 0.0000 +vt -1.8379 0.2949 0.0000 +vt -1.8555 0.3716 0.0000 +vt -1.8477 0.3809 0.0000 +vt -1.8564 0.3794 0.0000 +vt -1.8574 0.3877 0.0000 +vt -1.8584 0.4058 0.0000 +vt -1.8594 0.4238 0.0000 +vt -1.8594 0.4414 0.0000 +vt -1.8604 0.4595 0.0000 +vt -1.8525 0.4688 0.0000 +vt -1.8613 0.4634 0.0000 +vt -1.8604 0.4673 0.0000 +vt -1.8604 0.4717 0.0000 +vt -1.8594 0.4756 0.0000 +vt -1.8584 0.4780 0.0000 +vt -1.8564 0.4805 0.0000 +vt -1.8535 0.4819 0.0000 +vt -1.8506 0.4824 0.0000 +vt -1.8486 0.4829 0.0000 +vt -1.8721 0.4380 0.0000 +vt -1.8730 0.4766 0.0000 +vt -1.8740 0.4736 0.0000 +vt -1.8711 0.4790 0.0000 +vt -1.8682 0.4810 0.0000 +vt -1.8652 0.4814 0.0000 +vt -1.8643 0.4814 0.0000 +vt -1.8701 0.4028 0.0000 +vt -1.8613 0.3950 0.0000 +vt -1.8701 0.3945 0.0000 +vt -1.8691 0.3867 0.0000 +vt -1.8682 0.3687 0.0000 +vt -1.8662 0.3506 0.0000 +vt -1.8643 0.3330 0.0000 +vt -1.8623 0.3149 0.0000 +vt -1.8535 0.3071 0.0000 +vt -1.8623 0.3110 0.0000 +vt -1.8613 0.3071 0.0000 +vt -1.8604 0.3032 0.0000 +vt -1.8584 0.2993 0.0000 +vt -1.8574 0.2969 0.0000 +vt -1.8545 0.2949 0.0000 +vt -1.8525 0.2939 0.0000 +vt -1.8496 0.2935 0.0000 +vt -1.8467 0.2939 0.0000 +vt -1.9854 0.4814 0.0000 +vt -1.9844 0.4819 0.0000 +vt -1.9854 0.4849 0.0000 +vt -1.9863 0.4849 0.0000 +vt -1.9863 0.4878 0.0000 +vt -1.9873 0.4878 0.0000 +vt -1.9902 0.5002 0.0000 +vt -1.9912 0.5002 0.0000 +vt -1.9814 0.4692 0.0000 +vt -1.9170 0.4727 0.0000 +vt -1.9365 0.4717 0.0000 +vt -1.9180 0.4722 0.0000 +vt -1.9150 0.4741 0.0000 +vt -1.9150 0.4756 0.0000 +vt -1.9268 0.5161 0.0000 +vt -1.9365 0.5159 0.0000 +vt -1.9551 0.4717 0.0000 +vt -1.9473 0.5159 0.0000 +vt -1.9561 0.4727 0.0000 +vt -1.9580 0.4741 0.0000 +vt -1.9580 0.4756 0.0000 +vt -1.9941 0.5132 0.0000 +vt -1.9951 0.5129 0.0000 +vt -1.9922 0.5076 0.0000 +vt -1.9932 0.5073 0.0000 +vt -1.9912 0.5020 0.0000 +vt -1.9912 0.5017 0.0000 +vt -1.9805 0.4717 0.0000 +vt -1.9707 0.4717 0.0000 +vt -1.9707 0.5159 0.0000 +vt -1.9922 0.5117 0.0000 +vt -1.9922 0.5134 0.0000 +vt -1.9902 0.5149 0.0000 +vt -1.9893 0.5156 0.0000 +vt -1.9902 0.5005 0.0000 +vt -1.9902 0.5007 0.0000 +vt -1.9912 0.5005 0.0000 +vt -1.9912 0.5007 0.0000 +vt -1.9912 0.5015 0.0000 +vt -1.9912 0.5012 0.0000 +vt -1.9521 0.5161 0.0000 +vt -1.9600 0.4717 0.0000 +vt -1.9512 0.5154 0.0000 +vt -1.9492 0.5139 0.0000 +vt -1.9492 0.5122 0.0000 +vt -1.9951 0.5134 0.0000 +vt -1.9951 0.5132 0.0000 +vt -1.9941 0.5134 0.0000 +vt -1.9941 0.5137 0.0000 +vt -1.9951 0.5142 0.0000 +vt -1.9951 0.5144 0.0000 +vt -1.9268 0.1987 0.0000 +vt -1.9268 0.2031 0.0000 +vt -1.9307 0.2031 0.0000 +vt -1.9307 0.1987 0.0000 +vt -1.9336 0.1987 0.0000 +vt -1.9336 0.2031 0.0000 +vt -1.9307 0.1924 0.0000 +vt -1.9375 0.2031 0.0000 +vt -1.9375 0.1987 0.0000 +vt -1.9336 0.1924 0.0000 +vt -1.9414 0.2031 0.0000 +vt -1.9375 0.1924 0.0000 +vt -1.9268 0.1924 0.0000 +vt -1.9414 0.1987 0.0000 +vt -1.9414 0.1924 0.0000 +vt -1.9443 0.2031 0.0000 +vt -1.9336 0.1860 0.0000 +vt -1.9375 0.1860 0.0000 +vt -1.9307 0.1860 0.0000 +vt -1.9414 0.1860 0.0000 +vt -1.9443 0.1924 0.0000 +vt -1.9443 0.1860 0.0000 +vt -1.9268 0.1860 0.0000 +vt -1.9307 0.1772 0.0000 +vt -1.9375 0.1772 0.0000 +vt -1.9336 0.1772 0.0000 +vt -1.9443 0.1772 0.0000 +vt -1.9414 0.1772 0.0000 +vt -1.9268 0.1772 0.0000 +vt -1.9336 0.1685 0.0000 +vt -1.9268 0.1685 0.0000 +vt -1.9307 0.1685 0.0000 +vt -1.9375 0.1685 0.0000 +vt -1.9414 0.1685 0.0000 +vt -1.9307 0.0415 0.0000 +vt -1.9336 0.0415 0.0000 +vt -1.9443 0.1685 0.0000 +vt -1.9375 0.0415 0.0000 +vt -1.9414 0.0415 0.0000 +vt -1.9268 0.0415 0.0000 +vt -1.9307 0.0322 0.0000 +vt -1.9336 0.0322 0.0000 +vt -1.9375 0.0322 0.0000 +vt -1.9443 0.0415 0.0000 +vt -1.9414 0.0322 0.0000 +vt -1.9268 0.0322 0.0000 +vt -1.9336 0.0229 0.0000 +vt -1.9268 0.0229 0.0000 +vt -1.9307 0.0229 0.0000 +vt -1.9414 0.0229 0.0000 +vt -1.9443 0.0322 0.0000 +vt -1.9375 0.0229 0.0000 +vt -1.9307 0.0156 0.0000 +vt -1.9375 0.0156 0.0000 +vt -1.9336 0.0156 0.0000 +vt -1.9268 0.0156 0.0000 +vt -1.9443 0.0229 0.0000 +vt -1.9414 0.0156 0.0000 +vt -1.9443 0.0156 0.0000 +vt -1.9336 0.0122 0.0000 +vt -1.9482 0.0415 0.0000 +vt -1.9268 0.0122 0.0000 +vt -1.9375 0.0122 0.0000 +vt -1.9297 0.0122 0.0000 +vt -1.9414 0.0122 0.0000 +vt -1.9482 0.0322 0.0000 +vt -1.9443 0.0122 0.0000 +vt -1.9482 0.0229 0.0000 +vt -1.9268 0.0088 0.0000 +vt -1.9297 0.0088 0.0000 +vt -1.9336 0.0088 0.0000 +vt -1.9482 0.0122 0.0000 +vt -1.9375 0.0088 0.0000 +vt -1.9414 0.0088 0.0000 +vt -1.9482 0.0156 0.0000 +vt -1.9443 0.0088 0.0000 +vt -1.9482 0.0088 0.0000 +vt -1.9521 0.0122 0.0000 +vt -1.9521 0.0156 0.0000 +vt -1.9521 0.0229 0.0000 +vt -1.9521 0.0322 0.0000 +vt -1.9521 0.0088 0.0000 +vt -1.9443 0.1987 0.0000 +vt -1.9561 0.0122 0.0000 +vt -1.9561 0.0229 0.0000 +vt -1.9482 0.1924 0.0000 +vt -1.9561 0.0156 0.0000 +vt -1.9521 0.0415 0.0000 +vt -1.9561 0.0322 0.0000 +vt -1.9482 0.1860 0.0000 +vt -1.9561 0.0088 0.0000 +vt -1.9590 0.0156 0.0000 +vt -1.9590 0.0088 0.0000 +vt -1.9590 0.0122 0.0000 +vt -1.9590 0.0322 0.0000 +vt -1.9561 0.0415 0.0000 +vt -1.9590 0.0229 0.0000 +vt -1.9482 0.1772 0.0000 +vt -1.9590 0.0415 0.0000 +vt -1.9629 0.0088 0.0000 +vt -1.9629 0.0156 0.0000 +vt -1.9629 0.0229 0.0000 +vt -1.9629 0.0122 0.0000 +vt -1.9629 0.0322 0.0000 +vt -1.9590 0.1685 0.0000 +vt -1.9629 0.0415 0.0000 +vt -1.9668 0.0088 0.0000 +vt -1.9668 0.0156 0.0000 +vt -1.9668 0.0122 0.0000 +vt -1.9668 0.0322 0.0000 +vt -1.9668 0.0229 0.0000 +vt -1.9629 0.1685 0.0000 +vt -1.9668 0.0415 0.0000 +vt -1.9707 0.0088 0.0000 +vt -1.9707 0.0156 0.0000 +vt -1.9707 0.0229 0.0000 +vt -1.9707 0.0122 0.0000 +vt -1.9482 0.1685 0.0000 +vt -1.9707 0.0322 0.0000 +vt -1.9668 0.1685 0.0000 +vt -1.9707 0.0415 0.0000 +vt -1.9746 0.0088 0.0000 +vt -1.9746 0.0156 0.0000 +vt -1.9746 0.0122 0.0000 +vt -1.9746 0.0322 0.0000 +vt -1.9746 0.0229 0.0000 +vt -1.9707 0.1685 0.0000 +vt -1.9746 0.0415 0.0000 +vt -1.9785 0.0088 0.0000 +vt -1.9785 0.0156 0.0000 +vt -1.9785 0.0229 0.0000 +vt -1.9785 0.0122 0.0000 +vt -1.9521 0.1685 0.0000 +vt -1.9785 0.0415 0.0000 +vt -1.9785 0.0322 0.0000 +vt -1.9814 0.0088 0.0000 +vt -1.9814 0.0156 0.0000 +vt -1.9814 0.0122 0.0000 +vt -1.9561 0.1685 0.0000 +vt -1.9785 0.1685 0.0000 +vt -1.9814 0.0322 0.0000 +vt -1.9746 0.1685 0.0000 +vt -1.9814 0.0229 0.0000 +vt -1.9668 0.1772 0.0000 +vt -1.9590 0.1772 0.0000 +vt -1.9814 0.0415 0.0000 +vt -1.9854 0.0088 0.0000 +vt -1.9854 0.0122 0.0000 +vt -1.9629 0.1772 0.0000 +vt -1.9854 0.0229 0.0000 +vt -1.9854 0.0156 0.0000 +vt -1.9854 0.0322 0.0000 +vt -1.9814 0.1685 0.0000 +vt -1.9854 0.0415 0.0000 +vt -1.9707 0.1772 0.0000 +vt -1.9482 0.2031 0.0000 +vt -1.9785 0.1772 0.0000 +vt -1.9746 0.1772 0.0000 +vt -1.9854 0.1685 0.0000 +vt -1.9814 0.1772 0.0000 +vt -1.9854 0.1772 0.0000 +vt -1.9785 0.1860 0.0000 +vt -1.9746 0.1860 0.0000 +vt -1.9707 0.1860 0.0000 +vt -1.9854 0.1860 0.0000 +vt -1.9814 0.1860 0.0000 +vt -1.9785 0.1924 0.0000 +vt -1.9707 0.1924 0.0000 +vt -1.9746 0.1924 0.0000 +vt -1.9668 0.1860 0.0000 +vt -1.9854 0.1924 0.0000 +vt -1.9814 0.1924 0.0000 +vt -1.9746 0.1987 0.0000 +vt -1.9707 0.1987 0.0000 +vt -1.9785 0.1987 0.0000 +vt -1.9668 0.1924 0.0000 +vt -1.9668 0.1987 0.0000 +vt -1.9814 0.1987 0.0000 +vt -1.9629 0.1860 0.0000 +vt -1.9785 0.2031 0.0000 +vt -1.9814 0.2031 0.0000 +vt -1.9746 0.2031 0.0000 +vt -1.9854 0.1987 0.0000 +vt -1.9707 0.2031 0.0000 +vt -1.9629 0.1924 0.0000 +vt -1.9629 0.1987 0.0000 +vt -1.9854 0.2031 0.0000 +vt -1.9668 0.2031 0.0000 +vt -1.9629 0.2031 0.0000 +vt -1.9590 0.1987 0.0000 +vt -1.9590 0.2031 0.0000 +vt -1.9590 0.1924 0.0000 +vt -1.9590 0.1860 0.0000 +vt -1.9561 0.1987 0.0000 +vt -1.9561 0.1924 0.0000 +vt -1.9561 0.1860 0.0000 +vt -1.9561 0.2031 0.0000 +vt -1.9561 0.1772 0.0000 +vt -1.9521 0.1987 0.0000 +vt -1.9521 0.1860 0.0000 +vt -1.9521 0.1924 0.0000 +vt -1.9521 0.1772 0.0000 +vt -1.9521 0.2031 0.0000 +vt -1.9482 0.1987 0.0000 +vt -1.9131 0.0410 0.0000 +vt -1.9121 0.0410 0.0000 +vt -1.9121 0.1250 0.0000 +vt -1.9131 0.1250 0.0000 +vt -1.9629 0.3027 0.0000 +vt -1.9629 0.2090 0.0000 +vt -1.9570 0.2090 0.0000 +vt -1.9570 0.3027 0.0000 +vt -1.9180 0.2217 0.0000 +vt -1.9180 0.2236 0.0000 +vt -1.9492 0.2236 0.0000 +vt -1.9492 0.2119 0.0000 +vt -1.9512 0.2119 0.0000 +vt -1.9521 0.2124 0.0000 +vt -1.9531 0.2129 0.0000 +vt -1.9531 0.2236 0.0000 +vt -1.9492 0.2246 0.0000 +vt -1.9170 0.2251 0.0000 +vt -1.9170 0.2266 0.0000 +vt -1.9492 0.2363 0.0000 +vt -1.9512 0.2363 0.0000 +vt -1.9521 0.2363 0.0000 +vt -1.9531 0.2358 0.0000 +vt -1.9531 0.2246 0.0000 +vt -1.9131 0.1338 0.0000 +vt -1.9131 0.1323 0.0000 +vt -1.9121 0.1323 0.0000 +vt -1.9121 0.1338 0.0000 +vt -1.9121 0.1294 0.0000 +vt -1.9131 0.1294 0.0000 +vt -1.9121 0.1313 0.0000 +vt -1.9131 0.1313 0.0000 +vt -1.5645 0.9666 0.0000 +vt -1.5635 0.9665 0.0000 +vt -1.5635 0.9669 0.0000 +vt -1.5645 0.9674 0.0000 +vt -1.5654 0.9676 0.0000 +vt -1.5654 0.9666 0.0000 +vt -1.5664 0.9676 0.0000 +vt -1.5664 0.9667 0.0000 +vt -1.6279 0.9668 0.0000 +vt -1.6279 0.9691 0.0000 +vt -1.6396 0.9635 0.0000 +vt -1.6396 0.9729 0.0000 +vt -1.6240 0.9758 0.0000 +vt -1.6240 0.9754 0.0000 +vt -1.6230 0.9759 0.0000 +vt -1.6230 0.9754 0.0000 +vt -1.6230 0.9755 0.0000 +vt -1.5537 0.9746 0.0000 +vt -1.5527 0.9759 0.0000 +vt -1.5449 0.9744 0.0000 +vt -1.5469 0.9802 0.0000 +vt -1.0303 0.9351 0.0000 +vt -1.0283 0.9431 0.0000 +vt -1.0322 0.9355 0.0000 +vt -1.0303 0.9435 0.0000 +vt -1.0283 0.9532 0.0000 +vt -1.0303 0.9530 0.0000 +vt -1.0303 0.9646 0.0000 +vt -1.0332 0.9437 0.0000 +vt -1.0322 0.9654 0.0000 +vt -1.0332 0.9527 0.0000 +vt -1.0342 0.9651 0.0000 +vt -1.0361 0.9813 0.0000 +vt -1.0361 0.9649 0.0000 +vt -1.0342 0.9358 0.0000 +vt -1.0371 0.9821 0.0000 +vt -1.0391 0.9648 0.0000 +vt -1.0361 0.9525 0.0000 +vt -1.0391 0.9824 0.0000 +vt -1.0400 0.9821 0.0000 +vt -1.0361 0.9438 0.0000 +vt -1.0391 0.9525 0.0000 +vt -1.0410 0.9649 0.0000 +vt -1.0410 0.9813 0.0000 +vt -1.0361 0.9359 0.0000 +vt -1.0381 0.9438 0.0000 +vt -1.0430 0.9651 0.0000 +vt -1.0449 0.9654 0.0000 +vt -1.0391 0.9359 0.0000 +vt -1.0410 0.9525 0.0000 +vt -1.0439 0.9527 0.0000 +vt -1.0469 0.9529 0.0000 +vt -1.0410 0.9438 0.0000 +vt -1.0469 0.9646 0.0000 +vt -1.0410 0.9359 0.0000 +vt -1.0439 0.9437 0.0000 +vt -1.0498 0.9532 0.0000 +vt -1.0498 0.9431 0.0000 +vt -1.0430 0.9358 0.0000 +vt -1.0469 0.9435 0.0000 +vt -1.0449 0.9355 0.0000 +vt -1.0469 0.9350 0.0000 +vt -1.1426 0.6990 0.0000 +vt -1.1455 0.6895 0.0000 +vt -1.1436 0.6885 0.0000 +vt -1.1416 0.6982 0.0000 +vt -1.1406 0.6882 0.0000 +vt -1.1396 0.6982 0.0000 +vt -1.1270 0.6980 0.0000 +vt -1.1211 0.6882 0.0000 +vt -1.1250 0.6985 0.0000 +vt -1.1270 0.6992 0.0000 +vt -1.1191 0.6892 0.0000 +vt -1.1250 0.6990 0.0000 +vt -1.1406 0.6995 0.0000 +vt -1.1377 0.7061 0.0000 +vt -1.1377 0.7078 0.0000 +vt -1.1387 0.7083 0.0000 +vt -1.1387 0.7070 0.0000 +vt -1.1406 0.7080 0.0000 +vt -1.1387 0.7056 0.0000 +vt -1.1387 0.7087 0.0000 +vt -1.1406 0.7068 0.0000 +vt -1.1396 0.7058 0.0000 +vt -1.1494 0.6880 0.0000 +vt -1.1484 0.6931 0.0000 +vt -1.1504 0.6890 0.0000 +vt -1.1494 0.6934 0.0000 +vt -1.1475 0.6990 0.0000 +vt -1.1484 0.6992 0.0000 +vt -1.1494 0.7119 0.0000 +vt -1.1484 0.7131 0.0000 +vt -1.1514 0.7153 0.0000 +vt -1.1504 0.7168 0.0000 +vt -1.1533 0.7170 0.0000 +vt -1.1533 0.7188 0.0000 +vt -1.1562 0.7163 0.0000 +vt -1.1553 0.7148 0.0000 +vt -1.1582 0.7126 0.0000 +vt -1.1562 0.7114 0.0000 +vt -1.1592 0.6995 0.0000 +vt -1.1572 0.6995 0.0000 +vt -1.1572 0.6938 0.0000 +vt -1.1582 0.6936 0.0000 +vt -1.1572 0.6895 0.0000 +vt -1.1582 0.6885 0.0000 +vt -1.1553 0.6863 0.0000 +vt -1.1562 0.6851 0.0000 +vt -1.1543 0.6851 0.0000 +vt -1.1543 0.6838 0.0000 +vt -1.1523 0.6836 0.0000 +vt -1.1523 0.6848 0.0000 +vt -1.1504 0.6848 0.0000 +vt -1.1514 0.6858 0.0000 +vt -1.1279 0.7173 0.0000 +vt -1.1338 0.7080 0.0000 +vt -1.1309 0.7075 0.0000 +vt -1.1260 0.7168 0.0000 +vt -1.1113 0.7073 0.0000 +vt -1.1133 0.7170 0.0000 +vt -1.1279 0.7178 0.0000 +vt -1.1260 0.7180 0.0000 +vt -1.1113 0.7185 0.0000 +vt -0.2408 0.4658 0.0000 +vt -0.2399 0.4663 0.0000 +vt -0.2406 0.4668 0.0000 +vt -0.2390 0.4502 0.0000 +vt -0.2399 0.4507 0.0000 +vt -0.2485 0.4658 0.0000 +vt -0.2365 0.4482 0.0000 +vt -0.2404 0.4668 0.0000 +vt -0.2394 0.4497 0.0000 +vt -0.2469 0.4497 0.0000 +vt -0.2377 0.4683 0.0000 +vt -0.2472 0.4487 0.0000 +vt -0.2490 0.4668 0.0000 +vt -0.2494 0.4663 0.0000 +vt -0.2384 0.4692 0.0000 +vt -0.2373 0.4473 0.0000 +vt -0.2489 0.4463 0.0000 +vt -0.2477 0.4497 0.0000 +vt -0.2520 0.4683 0.0000 +vt -0.2512 0.4692 0.0000 +vt -0.2499 0.4468 0.0000 +vt -0.2191 0.5090 0.0000 +vt -0.2189 0.5151 0.0000 +vt -0.2201 0.5151 0.0000 +vt -0.2203 0.5088 0.0000 +vt -0.2202 0.5142 0.0000 +vt -0.2197 0.5156 0.0000 +vt -0.2217 0.5156 0.0000 +vt -0.2214 0.5142 0.0000 +vt -0.2218 0.5078 0.0000 +vt -0.2214 0.5103 0.0000 +vt -0.2197 0.5083 0.0000 +vt -0.2200 0.5103 0.0000 +vt -0.2175 0.5083 0.0000 +vt -0.2172 0.5156 0.0000 +vt -3.8281 -3.2930 0.0000 +vt -3.8262 -3.2930 0.0000 +vt -3.8262 -3.2969 0.0000 +vt -3.8242 -3.2969 0.0000 +vt -3.8281 -3.2969 0.0000 +vt -0.7217 0.6187 0.0000 +vt -0.7217 0.6885 0.0000 +vt -0.7187 0.6187 0.0000 +vt -0.7187 0.6885 0.0000 +vt -0.7217 0.7004 0.0000 +vt -0.7187 0.7004 0.0000 +vt -0.7217 0.7112 0.0000 +vt -0.7148 0.6187 0.0000 +vt -0.7187 0.7112 0.0000 +vt -0.7148 0.6885 0.0000 +vt -0.7217 0.7415 0.0000 +vt -0.7187 0.7415 0.0000 +vt -0.7148 0.7112 0.0000 +vt -0.7148 0.7004 0.0000 +vt -0.7148 0.7415 0.0000 +vt -0.7109 0.6187 0.0000 +vt -0.7109 0.6885 0.0000 +vt -0.7109 0.7112 0.0000 +vt -0.7109 0.7004 0.0000 +vt -0.7109 0.7415 0.0000 +vt -0.7070 0.6187 0.0000 +vt -0.7070 0.6885 0.0000 +vt -0.7070 0.7112 0.0000 +vt -0.7070 0.7004 0.0000 +vt -0.7070 0.7415 0.0000 +vt -0.7031 0.6187 0.0000 +vt -0.7031 0.6885 0.0000 +vt -0.7031 0.7112 0.0000 +vt -0.7031 0.7004 0.0000 +vt -0.7031 0.7415 0.0000 +vt -0.6992 0.6187 0.0000 +vt -0.6992 0.7004 0.0000 +vt -0.6992 0.6885 0.0000 +vt -0.6992 0.7112 0.0000 +vt -0.6992 0.7415 0.0000 +vt -0.6953 0.6885 0.0000 +vt -0.6953 0.7004 0.0000 +vt -0.6953 0.7112 0.0000 +vt -0.6953 0.6187 0.0000 +vt -0.6953 0.7415 0.0000 +vt -0.6914 0.7004 0.0000 +vt -0.6914 0.6885 0.0000 +vt -0.6914 0.7112 0.0000 +vt -0.6914 0.7415 0.0000 +vt -0.6914 0.6187 0.0000 +vt -0.6875 0.7112 0.0000 +vt -0.6875 0.7004 0.0000 +vt -0.6875 0.7415 0.0000 +vt -0.6875 0.6885 0.0000 +vt -0.6836 0.7112 0.0000 +vt -0.6836 0.7004 0.0000 +vt -0.6836 0.7415 0.0000 +vt -0.6875 0.6187 0.0000 +vt -0.6836 0.6885 0.0000 +vt -0.6812 0.7112 0.0000 +vt -0.6812 0.7415 0.0000 +vt -0.6812 0.7004 0.0000 +vt -0.6812 0.6885 0.0000 +vt -0.6836 0.6187 0.0000 +vt -0.6772 0.7112 0.0000 +vt -0.6772 0.7004 0.0000 +vt -0.6772 0.7415 0.0000 +vt -0.6812 0.6187 0.0000 +vt -0.6772 0.6885 0.0000 +vt -0.6772 0.6187 0.0000 +vt -0.6802 0.7112 0.0000 +vt -0.6802 0.7415 0.0000 +vt -0.6802 0.7004 0.0000 +vt -0.6802 0.6885 0.0000 +vt -0.6763 0.7112 0.0000 +vt -0.6763 0.7004 0.0000 +vt -0.6763 0.7415 0.0000 +vt -0.6802 0.6187 0.0000 +vt -0.6763 0.6885 0.0000 +vt -0.6763 0.6187 0.0000 +vt -1.3730 0.9932 0.0000 +vt -1.4414 0.9936 0.0000 +vt -1.3730 0.9884 0.0000 +vt -1.4424 0.9888 0.0000 +vt -1.3730 0.9840 0.0000 +vt -1.4424 0.9844 0.0000 +vt -1.3730 0.9792 0.0000 +vt -1.4424 0.9796 0.0000 +vt -1.3730 0.9744 0.0000 +vt -1.4424 0.9748 0.0000 +vt -1.3730 0.9696 0.0000 +vt -1.4424 0.9700 0.0000 +vt -1.3730 0.9648 0.0000 +vt -1.4424 0.9652 0.0000 +vt -1.4424 0.9604 0.0000 +vt -1.3730 0.9600 0.0000 +vt -1.4424 0.9556 0.0000 +vt -1.3730 0.9552 0.0000 +vt -1.4424 0.9508 0.0000 +vt -1.3730 0.9504 0.0000 +vt -1.4424 0.9460 0.0000 +vt -1.3730 0.9456 0.0000 +vt -1.4424 0.9420 0.0000 +vt -1.3730 0.9416 0.0000 +vt -1.4424 0.9372 0.0000 +vt -1.3730 0.9368 0.0000 +vt -1.3379 0.9871 0.0000 +vt -1.3447 0.9812 0.0000 +vt -1.3350 0.9800 0.0000 +vt -1.3447 0.9820 0.0000 +vt -1.3418 0.9907 0.0000 +vt -1.3457 0.9823 0.0000 +vt -1.3457 0.9917 0.0000 +vt -1.3496 0.9907 0.0000 +vt -1.3467 0.9820 0.0000 +vt -1.3545 0.9872 0.0000 +vt -1.3477 0.9812 0.0000 +vt -1.3564 0.9800 0.0000 +vt -1.3477 0.9800 0.0000 +vt -1.3437 0.9800 0.0000 +vt -1.3379 0.9729 0.0000 +vt -1.3447 0.9788 0.0000 +vt -1.3418 0.9693 0.0000 +vt -1.3447 0.9780 0.0000 +vt -1.3457 0.9683 0.0000 +vt -1.3457 0.9778 0.0000 +vt -1.3467 0.9780 0.0000 +vt -1.3496 0.9693 0.0000 +vt -1.3477 0.9788 0.0000 +vt -1.3545 0.9729 0.0000 +vt -1.6797 0.6187 0.0000 +vt -1.6768 0.6187 0.0000 +vt -1.6982 0.6504 0.0000 +vt -1.6836 0.6187 0.0000 +vt -1.6875 0.6187 0.0000 +vt -1.6914 0.6187 0.0000 +vt -1.7178 0.6187 0.0000 +vt -1.7148 0.6187 0.0000 +vt -1.7207 0.6187 0.0000 +vt -1.7109 0.6187 0.0000 +vt -1.7070 0.6187 0.0000 +vt -1.7041 0.6187 0.0000 +vt -1.7002 0.6187 0.0000 +vt -1.6963 0.6187 0.0000 +vt -1.7178 0.7415 0.0000 +vt -1.7217 0.7415 0.0000 +vt -1.7217 0.7112 0.0000 +vt -1.7178 0.7112 0.0000 +vt -1.7217 0.6997 0.0000 +vt -1.7178 0.6997 0.0000 +vt -1.7148 0.7415 0.0000 +vt -1.7217 0.6885 0.0000 +vt -1.7178 0.6885 0.0000 +vt -1.7148 0.7112 0.0000 +vt -1.7217 0.6709 0.0000 +vt -1.7148 0.6997 0.0000 +vt -1.7178 0.6709 0.0000 +vt -1.7148 0.6885 0.0000 +vt -1.7217 0.6536 0.0000 +vt -1.7109 0.7415 0.0000 +vt -1.7109 0.7112 0.0000 +vt -1.7178 0.6536 0.0000 +vt -1.7109 0.6997 0.0000 +vt -1.7217 0.6187 0.0000 +vt -1.7148 0.6709 0.0000 +vt -1.7148 0.6536 0.0000 +vt -1.7109 0.6885 0.0000 +vt -1.7070 0.7415 0.0000 +vt -1.7070 0.7112 0.0000 +vt -1.7070 0.6885 0.0000 +vt -1.7070 0.6997 0.0000 +vt -1.7109 0.6709 0.0000 +vt -1.7109 0.6536 0.0000 +vt -1.7070 0.6709 0.0000 +vt -1.7031 0.7415 0.0000 +vt -1.7031 0.6997 0.0000 +vt -1.7031 0.6885 0.0000 +vt -1.7031 0.7112 0.0000 +vt -1.7031 0.6709 0.0000 +vt -1.7070 0.6536 0.0000 +vt -1.7031 0.6536 0.0000 +vt -1.6992 0.7415 0.0000 +vt -1.6992 0.6997 0.0000 +vt -1.6992 0.7112 0.0000 +vt -1.6992 0.6709 0.0000 +vt -1.6992 0.6885 0.0000 +vt -1.6953 0.7112 0.0000 +vt -1.6953 0.6997 0.0000 +vt -1.6953 0.6885 0.0000 +vt -1.6992 0.6536 0.0000 +vt -1.6953 0.6709 0.0000 +vt -1.6953 0.7415 0.0000 +vt -1.6953 0.6536 0.0000 +vt -1.6914 0.6997 0.0000 +vt -1.6914 0.6885 0.0000 +vt -1.6914 0.7112 0.0000 +vt -1.6914 0.6709 0.0000 +vt -1.6914 0.7415 0.0000 +vt -1.6875 0.6997 0.0000 +vt -1.6914 0.6536 0.0000 +vt -1.6875 0.7112 0.0000 +vt -1.7031 0.6187 0.0000 +vt -1.6875 0.6885 0.0000 +vt -1.6875 0.6709 0.0000 +vt -1.6875 0.7415 0.0000 +vt -1.6992 0.6187 0.0000 +vt -1.6836 0.6997 0.0000 +vt -1.6836 0.7112 0.0000 +vt -1.6836 0.6885 0.0000 +vt -1.6953 0.6187 0.0000 +vt -1.6875 0.6536 0.0000 +vt -1.6836 0.6709 0.0000 +vt -1.6836 0.7415 0.0000 +vt -1.6797 0.7112 0.0000 +vt -1.6797 0.6997 0.0000 +vt -1.6797 0.6885 0.0000 +vt -1.6836 0.6536 0.0000 +vt -1.6797 0.6709 0.0000 +vt -1.6797 0.7415 0.0000 +vt -1.6768 0.7112 0.0000 +vt -1.6768 0.6997 0.0000 +vt -1.6768 0.6885 0.0000 +vt -1.6797 0.6536 0.0000 +vt -1.6768 0.6709 0.0000 +vt -1.6768 0.7415 0.0000 +vt -1.6768 0.6536 0.0000 +vt -1.2275 0.6563 0.0000 +vt -1.2285 0.6563 0.0000 +vt -1.2275 0.6526 0.0000 +vt -1.2285 0.6526 0.0000 +vt -1.2285 0.6509 0.0000 +vt -1.2275 0.6509 0.0000 +vt -1.2285 0.6426 0.0000 +vt -1.2275 0.6426 0.0000 +vt -1.2285 0.6416 0.0000 +vt -1.2275 0.6416 0.0000 +vt -1.2295 0.6375 0.0000 +vt -1.2275 0.6375 0.0000 +vt -1.2266 0.6521 0.0000 +vt -1.2256 0.6421 0.0000 +vt -1.2305 0.6418 0.0000 +vt -1.2295 0.6521 0.0000 +vt -0.2378 0.5164 0.0000 +vt -0.2377 0.5164 0.0000 +vt -0.2379 0.5164 0.0000 +vt -0.2380 0.5164 0.0000 +vt -0.2382 0.5046 0.0000 +vt -0.2378 0.5042 0.0000 +vt -0.2374 0.5164 0.0000 +vt -0.2385 0.5046 0.0000 +vt -0.2402 0.5044 0.0000 +vt -0.2399 0.5039 0.0000 +vt -0.2382 0.5164 0.0000 +vt -0.2383 0.5164 0.0000 +vt -0.2395 0.5039 0.0000 +vt -0.2390 0.5044 0.0000 +vt -0.2197 0.4790 0.0000 +vt -0.2190 0.4800 0.0000 +vt -0.2211 0.4810 0.0000 +vt -0.2217 0.4810 0.0000 +vt -0.2216 0.4941 0.0000 +vt -0.2212 0.4941 0.0000 +vt -0.2212 0.4951 0.0000 +vt -0.2209 0.4946 0.0000 +vt -0.2393 0.4761 0.0000 +vt -0.2363 0.4751 0.0000 +vt -0.2372 0.4785 0.0000 +vt -0.2383 0.4790 0.0000 +vt -0.2389 0.4961 0.0000 +vt -0.2395 0.4956 0.0000 +vt -0.2394 0.4790 0.0000 +vt -0.2394 0.4966 0.0000 +vt -0.2402 0.4966 0.0000 +vt -0.2401 0.4956 0.0000 +vt -0.2421 0.4775 0.0000 +vt -0.2407 0.4961 0.0000 +vt -0.2223 0.4780 0.0000 +vt -0.2225 0.4805 0.0000 +vt -0.2220 0.4941 0.0000 +vt -0.2235 0.4805 0.0000 +vt -0.2216 0.4951 0.0000 +vt -0.2225 0.4946 0.0000 +vt -0.2220 0.4951 0.0000 +vt -0.2251 0.4775 0.0000 +vt -0.2347 0.4761 0.0000 +vt -0.2365 0.4785 0.0000 +vt -0.2385 0.4961 0.0000 +vt -0.2390 0.4971 0.0000 +vt -0.0676 0.4380 0.0000 +vt -0.0748 0.4194 0.0000 +vt -0.0670 0.4380 0.0000 +vt -0.0731 0.4189 0.0000 +vt -0.0665 0.4375 0.0000 +vt -0.0714 0.4185 0.0000 +vt -0.0659 0.4375 0.0000 +vt -0.0696 0.4180 0.0000 +vt -0.0653 0.4375 0.0000 +vt -0.0679 0.4175 0.0000 +vt -0.0648 0.4375 0.0000 +vt -0.0661 0.4175 0.0000 +vt -0.0641 0.4375 0.0000 +vt -0.0643 0.4175 0.0000 +vt -0.0635 0.4375 0.0000 +vt -0.0625 0.4175 0.0000 +vt -0.0630 0.4375 0.0000 +vt -0.0608 0.4175 0.0000 +vt -0.0624 0.4375 0.0000 +vt -0.0590 0.4180 0.0000 +vt -0.0618 0.4375 0.0000 +vt -0.0573 0.4180 0.0000 +vt -0.0613 0.4380 0.0000 +vt -0.0555 0.4185 0.0000 +vt -0.0607 0.4380 0.0000 +vt -0.0539 0.4194 0.0000 +vt -1.6621 0.9258 0.0000 +vt -1.6621 0.9254 0.0000 +vt -1.6523 0.9294 0.0000 +vt -1.6514 0.9299 0.0000 +vt -1.5977 0.9329 0.0000 +vt -1.5977 0.9333 0.0000 +vt -1.6504 0.9423 0.0000 +vt -1.5967 0.9332 0.0000 +vt -1.5967 0.9337 0.0000 +vt -1.6465 0.9372 0.0000 +vt -1.5957 0.9339 0.0000 +vt -1.5957 0.9351 0.0000 +vt -1.5967 0.9357 0.0000 +vt -1.5967 0.9342 0.0000 +vt -1.6465 0.9375 0.0000 +vt -1.5967 0.9356 0.0000 +vt -1.5967 0.9360 0.0000 +vt -1.5957 0.9359 0.0000 +vt -1.6494 0.9424 0.0000 +vt -1.6543 0.9462 0.0000 +vt -1.6543 0.9457 0.0000 +vt -1.6494 0.9496 0.0000 +vt -1.6494 0.9500 0.0000 +vt -1.6113 0.9482 0.0000 +vt -1.6113 0.9479 0.0000 +vt -1.6514 0.9553 0.0000 +vt -1.6104 0.9480 0.0000 +vt -1.6123 0.9503 0.0000 +vt -1.6094 0.9475 0.0000 +vt -1.6094 0.9485 0.0000 +vt -1.6094 0.9486 0.0000 +vt -1.6572 0.9625 0.0000 +vt -1.6094 0.9504 0.0000 +vt -1.6094 0.9501 0.0000 +vt -1.6123 0.9507 0.0000 +vt -1.6104 0.9514 0.0000 +vt -1.6113 0.9509 0.0000 +vt -1.6514 0.9555 0.0000 +vt -1.6572 0.9629 0.0000 +vt -1.3555 0.1440 0.0000 +vt -1.3535 0.1440 0.0000 +vt -1.3535 0.1528 0.0000 +vt -1.3555 0.1528 0.0000 +vt -1.3535 0.1616 0.0000 +vt -1.3555 0.1616 0.0000 +vt -1.3555 0.1704 0.0000 +vt -1.3535 0.1704 0.0000 +vt -1.3535 0.1792 0.0000 +vt -1.3555 0.1792 0.0000 +vt -1.3535 0.1885 0.0000 +vt -1.3555 0.1885 0.0000 +vt -1.3535 0.1973 0.0000 +vt -1.3555 0.1973 0.0000 +vt -1.3535 0.2061 0.0000 +vt -1.3555 0.2061 0.0000 +vt -1.3555 0.2153 0.0000 +vt -1.3535 0.2153 0.0000 +vt -1.3535 0.2241 0.0000 +vt -1.3555 0.2241 0.0000 +vt -1.3555 0.2329 0.0000 +vt -1.3535 0.2329 0.0000 +vt -1.3555 0.2417 0.0000 +vt -1.3535 0.2417 0.0000 +vt -1.3555 0.2510 0.0000 +vt -1.3535 0.2510 0.0000 +vt -1.3555 0.2598 0.0000 +vt -1.3535 0.2598 0.0000 +vt -1.3555 0.2686 0.0000 +vt -1.3535 0.2686 0.0000 +vt -0.4119 0.1528 0.0000 +vt -0.4119 0.1440 0.0000 +vt -0.4131 0.1440 0.0000 +vt -0.4131 0.1528 0.0000 +vt -0.4131 0.1616 0.0000 +vt -0.4119 0.1616 0.0000 +vt -0.4119 0.1704 0.0000 +vt -0.4131 0.1704 0.0000 +vt -0.4131 0.1792 0.0000 +vt -0.4119 0.1792 0.0000 +vt -0.4119 0.1885 0.0000 +vt -0.4131 0.1885 0.0000 +vt -0.4131 0.1973 0.0000 +vt -0.4119 0.1973 0.0000 +vt -0.4119 0.2061 0.0000 +vt -0.4131 0.2061 0.0000 +vt -0.4131 0.2153 0.0000 +vt -0.4119 0.2153 0.0000 +vt -0.4119 0.2241 0.0000 +vt -0.4131 0.2241 0.0000 +vt -0.4131 0.2329 0.0000 +vt -0.4119 0.2329 0.0000 +vt -0.4119 0.2417 0.0000 +vt -0.4131 0.2417 0.0000 +vt -0.4131 0.2510 0.0000 +vt -0.4119 0.2510 0.0000 +vt -0.4119 0.2598 0.0000 +vt -0.4131 0.2598 0.0000 +vt -0.4131 0.2686 0.0000 +vt -0.4119 0.2686 0.0000 +vt -0.4119 0.2773 0.0000 +vt -0.4131 0.2773 0.0000 +vt -0.4131 0.2861 0.0000 +vt -0.4119 0.2861 0.0000 +vt -0.3560 0.1528 0.0000 +vt -0.3560 0.1440 0.0000 +vt -0.3560 0.1616 0.0000 +vt -0.3560 0.1704 0.0000 +vt -0.3560 0.1792 0.0000 +vt -0.3560 0.1885 0.0000 +vt -0.3560 0.1973 0.0000 +vt -0.3560 0.2061 0.0000 +vt -0.3560 0.2153 0.0000 +vt -0.3560 0.2241 0.0000 +vt -0.3560 0.2329 0.0000 +vt -0.3560 0.2417 0.0000 +vt -0.3560 0.2510 0.0000 +vt -0.3560 0.2598 0.0000 +vt -0.3560 0.2686 0.0000 +vt -0.3560 0.2773 0.0000 +vt -0.3560 0.2861 0.0000 +vt -0.3542 0.2773 0.0000 +vt -0.3542 0.2686 0.0000 +vt -0.3542 0.2861 0.0000 +vt -0.3542 0.1440 0.0000 +vt -0.3542 0.1528 0.0000 +vt -0.3433 0.1440 0.0000 +vt -0.3433 0.1528 0.0000 +vt -0.3542 0.1616 0.0000 +vt -0.3433 0.1616 0.0000 +vt -0.3542 0.1704 0.0000 +vt -0.3433 0.1704 0.0000 +vt -0.3433 0.1792 0.0000 +vt -0.3542 0.1792 0.0000 +vt -0.3433 0.1885 0.0000 +vt -0.3542 0.1885 0.0000 +vt -0.3433 0.1973 0.0000 +vt -0.3542 0.1973 0.0000 +vt -0.3433 0.2061 0.0000 +vt -0.3542 0.2061 0.0000 +vt -0.3433 0.2153 0.0000 +vt -0.3542 0.2153 0.0000 +vt -0.3542 0.2241 0.0000 +vt -0.3433 0.2241 0.0000 +vt -0.3433 0.2329 0.0000 +vt -0.3542 0.2329 0.0000 +vt -0.3542 0.2417 0.0000 +vt -0.3433 0.2417 0.0000 +vt -0.3433 0.2510 0.0000 +vt -0.3542 0.2510 0.0000 +vt -0.3433 0.2598 0.0000 +vt -0.3542 0.2598 0.0000 +vt -0.3433 0.2686 0.0000 +vt -0.3433 0.2773 0.0000 +vt -0.3433 0.2861 0.0000 +vt -0.3411 0.1440 0.0000 +vt -0.3411 0.1528 0.0000 +vt -0.3411 0.1616 0.0000 +vt -0.3411 0.1704 0.0000 +vt -0.3411 0.1792 0.0000 +vt -0.3411 0.1885 0.0000 +vt -0.3411 0.1973 0.0000 +vt -0.3411 0.2061 0.0000 +vt -0.3411 0.2153 0.0000 +vt -0.3411 0.2241 0.0000 +vt -0.3411 0.2329 0.0000 +vt -0.3411 0.2417 0.0000 +vt -0.3411 0.2510 0.0000 +vt -0.3411 0.2598 0.0000 +vt -0.3411 0.2686 0.0000 +vt -0.3411 0.2773 0.0000 +vt -0.3411 0.2861 0.0000 +vt -0.2725 0.1440 0.0000 +vt -0.2725 0.1528 0.0000 +vt -0.2725 0.1616 0.0000 +vt -0.2725 0.1704 0.0000 +vt -0.2725 0.1792 0.0000 +vt -0.2725 0.1885 0.0000 +vt -0.2725 0.1973 0.0000 +vt -0.2725 0.2061 0.0000 +vt -0.2725 0.2153 0.0000 +vt -0.2725 0.2241 0.0000 +vt -0.2725 0.2329 0.0000 +vt -0.2725 0.2417 0.0000 +vt -0.2722 0.2510 0.0000 +vt -0.2722 0.2598 0.0000 +vt -0.2722 0.2686 0.0000 +vt -0.2722 0.2773 0.0000 +vt -0.2722 0.2861 0.0000 +vt -1.3408 0.1440 0.0000 +vt -1.2725 0.1440 0.0000 +vt -1.3408 0.1528 0.0000 +vt -1.2725 0.1528 0.0000 +vt -1.3408 0.1616 0.0000 +vt -1.2725 0.1616 0.0000 +vt -1.3408 0.1704 0.0000 +vt -1.2725 0.1704 0.0000 +vt -1.3408 0.1792 0.0000 +vt -1.2725 0.1792 0.0000 +vt -1.3408 0.1885 0.0000 +vt -1.2725 0.1885 0.0000 +vt -1.3408 0.1973 0.0000 +vt -1.2725 0.1973 0.0000 +vt -1.3408 0.2061 0.0000 +vt -1.2725 0.2061 0.0000 +vt -1.2725 0.2153 0.0000 +vt -1.3408 0.2153 0.0000 +vt -1.3408 0.2241 0.0000 +vt -1.2725 0.2241 0.0000 +vt -1.2725 0.2329 0.0000 +vt -1.3408 0.2329 0.0000 +vt -1.3408 0.2417 0.0000 +vt -1.2725 0.2417 0.0000 +vt -1.2715 0.2510 0.0000 +vt -1.3408 0.2510 0.0000 +vt -1.2715 0.2598 0.0000 +vt -1.3408 0.2598 0.0000 +vt -1.2715 0.2686 0.0000 +vt -1.3408 0.2686 0.0000 +vt -1.3408 0.2773 0.0000 +vt -1.2715 0.2773 0.0000 +vt -1.2715 0.2861 0.0000 +vt -1.3408 0.2861 0.0000 +vt -1.3428 0.1528 0.0000 +vt -1.3428 0.1440 0.0000 +vt -1.3428 0.1616 0.0000 +vt -1.3428 0.1704 0.0000 +vt -1.3428 0.1792 0.0000 +vt -1.3428 0.1885 0.0000 +vt -1.3428 0.1973 0.0000 +vt -1.3428 0.2061 0.0000 +vt -1.3428 0.2153 0.0000 +vt -1.3428 0.2241 0.0000 +vt -1.3428 0.2329 0.0000 +vt -1.3428 0.2417 0.0000 +vt -1.3428 0.2510 0.0000 +vt -1.3428 0.2598 0.0000 +vt -1.3428 0.2686 0.0000 +vt -1.3428 0.2773 0.0000 +vt -1.3428 0.2861 0.0000 +vt -1.3535 0.2773 0.0000 +vt -1.3535 0.2861 0.0000 +vt -1.3555 0.2773 0.0000 +vt -1.3555 0.2861 0.0000 +vt -1.4111 0.1440 0.0000 +vt -1.4111 0.1528 0.0000 +vt -1.4111 0.1616 0.0000 +vt -1.4111 0.1704 0.0000 +vt -1.4111 0.1792 0.0000 +vt -1.4111 0.1885 0.0000 +vt -1.4111 0.1973 0.0000 +vt -1.4111 0.2061 0.0000 +vt -1.4111 0.2153 0.0000 +vt -1.4111 0.2241 0.0000 +vt -1.4111 0.2329 0.0000 +vt -1.4111 0.2417 0.0000 +vt -1.4111 0.2510 0.0000 +vt -1.4111 0.2598 0.0000 +vt -1.4111 0.2686 0.0000 +vt -1.4111 0.2773 0.0000 +vt -1.4111 0.2861 0.0000 +vt -1.4131 0.1440 0.0000 +vt -1.4131 0.1528 0.0000 +vt -1.4131 0.1616 0.0000 +vt -1.4131 0.1704 0.0000 +vt -1.4131 0.1792 0.0000 +vt -1.4131 0.1885 0.0000 +vt -1.4131 0.1973 0.0000 +vt -1.4131 0.2061 0.0000 +vt -1.4131 0.2153 0.0000 +vt -1.4131 0.2241 0.0000 +vt -1.4131 0.2329 0.0000 +vt -1.4131 0.2417 0.0000 +vt -1.4131 0.2510 0.0000 +vt -1.4131 0.2598 0.0000 +vt -1.4131 0.2686 0.0000 +vt -1.4131 0.2773 0.0000 +vt -1.4131 0.2861 0.0000 +vt -1.9150 0.4536 0.0000 +vt -1.9189 0.4536 0.0000 +vt -1.9150 0.4443 0.0000 +vt -1.9189 0.4443 0.0000 +vt -1.9229 0.4536 0.0000 +vt -1.9229 0.4443 0.0000 +vt -1.9268 0.4536 0.0000 +vt -1.9189 0.4331 0.0000 +vt -1.9268 0.4443 0.0000 +vt -1.9307 0.4443 0.0000 +vt -1.9307 0.4536 0.0000 +vt -1.9229 0.4331 0.0000 +vt -1.9268 0.4331 0.0000 +vt -1.9150 0.4331 0.0000 +vt -1.9346 0.4443 0.0000 +vt -1.9307 0.4331 0.0000 +vt -1.9346 0.4536 0.0000 +vt -1.9229 0.4219 0.0000 +vt -1.9268 0.4219 0.0000 +vt -1.9189 0.4219 0.0000 +vt -1.9307 0.4219 0.0000 +vt -1.9346 0.4331 0.0000 +vt -1.9346 0.4219 0.0000 +vt -1.9150 0.4219 0.0000 +vt -1.9189 0.4106 0.0000 +vt -1.9229 0.4106 0.0000 +vt -1.9150 0.4106 0.0000 +vt -1.9268 0.4106 0.0000 +vt -1.9346 0.4106 0.0000 +vt -1.9307 0.4106 0.0000 +vt -1.9150 0.3994 0.0000 +vt -1.9189 0.3994 0.0000 +vt -1.9229 0.3994 0.0000 +vt -1.9268 0.3994 0.0000 +vt -1.9307 0.3994 0.0000 +vt -1.9150 0.3877 0.0000 +vt -1.9189 0.3877 0.0000 +vt -1.9229 0.3877 0.0000 +vt -1.9346 0.3994 0.0000 +vt -1.9268 0.3877 0.0000 +vt -1.9307 0.3877 0.0000 +vt -1.9150 0.3765 0.0000 +vt -1.9189 0.3765 0.0000 +vt -1.9229 0.3765 0.0000 +vt -1.9268 0.3765 0.0000 +vt -1.9346 0.3877 0.0000 +vt -1.9307 0.3765 0.0000 +vt -1.9150 0.3652 0.0000 +vt -1.9189 0.3652 0.0000 +vt -1.9229 0.3652 0.0000 +vt -1.9268 0.3652 0.0000 +vt -1.9346 0.3765 0.0000 +vt -1.9307 0.3652 0.0000 +vt -1.9189 0.3540 0.0000 +vt -1.9229 0.3540 0.0000 +vt -1.9268 0.3540 0.0000 +vt -1.9307 0.3540 0.0000 +vt -1.9150 0.3540 0.0000 +vt -1.9346 0.3652 0.0000 +vt -1.9346 0.3540 0.0000 +vt -1.9229 0.3423 0.0000 +vt -1.9268 0.3423 0.0000 +vt -1.9189 0.3423 0.0000 +vt -1.9307 0.3423 0.0000 +vt -1.9346 0.3423 0.0000 +vt -1.9150 0.3423 0.0000 +vt -1.9385 0.3765 0.0000 +vt -1.9189 0.3311 0.0000 +vt -1.9229 0.3311 0.0000 +vt -1.9150 0.3311 0.0000 +vt -1.9307 0.3311 0.0000 +vt -1.9385 0.3540 0.0000 +vt -1.9346 0.3311 0.0000 +vt -1.9268 0.3311 0.0000 +vt -1.9385 0.3423 0.0000 +vt -1.9189 0.3198 0.0000 +vt -1.9229 0.3198 0.0000 +vt -1.9268 0.3198 0.0000 +vt -1.9385 0.3311 0.0000 +vt -1.9307 0.3198 0.0000 +vt -1.9150 0.3198 0.0000 +vt -1.9346 0.3198 0.0000 +vt -1.9385 0.3652 0.0000 +vt -1.9385 0.3198 0.0000 +vt -1.9424 0.3311 0.0000 +vt -1.9424 0.3198 0.0000 +vt -1.9424 0.3423 0.0000 +vt -1.9473 0.3311 0.0000 +vt -1.9424 0.3540 0.0000 +vt -1.9424 0.3652 0.0000 +vt -1.9473 0.3198 0.0000 +vt -1.9473 0.3423 0.0000 +vt -1.9473 0.3540 0.0000 +vt -1.9385 0.4443 0.0000 +vt -1.9512 0.3311 0.0000 +vt -1.9512 0.3423 0.0000 +vt -1.9473 0.3652 0.0000 +vt -1.9512 0.3198 0.0000 +vt -1.9385 0.4331 0.0000 +vt -1.9551 0.3423 0.0000 +vt -1.9551 0.3311 0.0000 +vt -1.9512 0.3540 0.0000 +vt -1.9551 0.3540 0.0000 +vt -1.9385 0.4106 0.0000 +vt -1.9512 0.3652 0.0000 +vt -1.9551 0.3198 0.0000 +vt -1.9590 0.3423 0.0000 +vt -1.9590 0.3311 0.0000 +vt -1.9590 0.3540 0.0000 +vt -1.9551 0.3652 0.0000 +vt -1.9385 0.3994 0.0000 +vt -1.9590 0.3652 0.0000 +vt -1.9590 0.3198 0.0000 +vt -1.9629 0.3423 0.0000 +vt -1.9629 0.3311 0.0000 +vt -1.9629 0.3540 0.0000 +vt -1.9629 0.3652 0.0000 +vt -1.9590 0.3765 0.0000 +vt -1.9385 0.3877 0.0000 +vt -1.9629 0.3765 0.0000 +vt -1.9629 0.3198 0.0000 +vt -1.9668 0.3423 0.0000 +vt -1.9668 0.3540 0.0000 +vt -1.9668 0.3311 0.0000 +vt -1.9668 0.3652 0.0000 +vt -1.9668 0.3765 0.0000 +vt -1.9668 0.3198 0.0000 +vt -1.9707 0.3423 0.0000 +vt -1.9707 0.3311 0.0000 +vt -1.9707 0.3540 0.0000 +vt -1.9707 0.3652 0.0000 +vt -1.9707 0.3765 0.0000 +vt -1.9707 0.3198 0.0000 +vt -1.9746 0.3423 0.0000 +vt -1.9746 0.3198 0.0000 +vt -1.9746 0.3540 0.0000 +vt -1.9746 0.3311 0.0000 +vt -1.9746 0.3652 0.0000 +vt -1.9746 0.3765 0.0000 +vt -1.9785 0.3198 0.0000 +vt -1.9785 0.3423 0.0000 +vt -1.9785 0.3540 0.0000 +vt -1.9785 0.3311 0.0000 +vt -1.9629 0.3877 0.0000 +vt -1.9785 0.3652 0.0000 +vt -1.9785 0.3765 0.0000 +vt -1.9707 0.3877 0.0000 +vt -1.9824 0.3198 0.0000 +vt -1.9824 0.3423 0.0000 +vt -1.9746 0.3877 0.0000 +vt -1.9824 0.3540 0.0000 +vt -1.9824 0.3311 0.0000 +vt -1.9424 0.3765 0.0000 +vt -1.9824 0.3765 0.0000 +vt -1.9824 0.3652 0.0000 +vt -1.9785 0.3877 0.0000 +vt -1.9473 0.3765 0.0000 +vt -1.9863 0.3198 0.0000 +vt -1.9863 0.3423 0.0000 +vt -1.9863 0.3540 0.0000 +vt -1.9863 0.3311 0.0000 +vt -1.9824 0.3877 0.0000 +vt -1.9863 0.3765 0.0000 +vt -1.9590 0.3877 0.0000 +vt -1.9512 0.3765 0.0000 +vt -1.9863 0.3652 0.0000 +vt -1.9668 0.3877 0.0000 +vt -1.9863 0.3877 0.0000 +vt -1.9551 0.3765 0.0000 +vt -1.9863 0.3994 0.0000 +vt -1.9824 0.3994 0.0000 +vt -1.9785 0.3994 0.0000 +vt -1.9746 0.3994 0.0000 +vt -1.9863 0.4106 0.0000 +vt -1.9824 0.4106 0.0000 +vt -1.9785 0.4106 0.0000 +vt -1.9707 0.3994 0.0000 +vt -1.9385 0.4536 0.0000 +vt -1.9746 0.4106 0.0000 +vt -1.9863 0.4219 0.0000 +vt -1.9824 0.4219 0.0000 +vt -1.9385 0.4219 0.0000 +vt -1.9785 0.4219 0.0000 +vt -1.9707 0.4106 0.0000 +vt -1.9668 0.3994 0.0000 +vt -1.9746 0.4219 0.0000 +vt -1.9629 0.3994 0.0000 +vt -1.9824 0.4331 0.0000 +vt -1.9785 0.4331 0.0000 +vt -1.9746 0.4331 0.0000 +vt -1.9707 0.4219 0.0000 +vt -1.9863 0.4331 0.0000 +vt -1.9668 0.4106 0.0000 +vt -1.9707 0.4331 0.0000 +vt -1.9785 0.4443 0.0000 +vt -1.9746 0.4443 0.0000 +vt -1.9824 0.4443 0.0000 +vt -1.9707 0.4443 0.0000 +vt -1.9629 0.4106 0.0000 +vt -1.9590 0.3994 0.0000 +vt -1.9551 0.3877 0.0000 +vt -1.9863 0.4443 0.0000 +vt -1.9668 0.4219 0.0000 +vt -1.9824 0.4536 0.0000 +vt -1.9863 0.4536 0.0000 +vt -1.9668 0.4443 0.0000 +vt -1.9785 0.4536 0.0000 +vt -1.9746 0.4536 0.0000 +vt -1.9668 0.4331 0.0000 +vt -1.9707 0.4536 0.0000 +vt -1.9629 0.4219 0.0000 +vt -1.9668 0.4536 0.0000 +vt -1.9590 0.4106 0.0000 +vt -1.9629 0.4443 0.0000 +vt -1.9629 0.4331 0.0000 +vt -1.9629 0.4536 0.0000 +vt -1.9590 0.4443 0.0000 +vt -1.9590 0.4536 0.0000 +vt -1.9590 0.4219 0.0000 +vt -1.9590 0.4331 0.0000 +vt -1.9551 0.4536 0.0000 +vt -1.9551 0.4443 0.0000 +vt -1.9551 0.4219 0.0000 +vt -1.9551 0.4331 0.0000 +vt -1.9551 0.4106 0.0000 +vt -1.9512 0.4536 0.0000 +vt -1.9551 0.3994 0.0000 +vt -1.9512 0.4331 0.0000 +vt -1.9512 0.4219 0.0000 +vt -1.9512 0.4443 0.0000 +vt -1.9512 0.4106 0.0000 +vt -1.9512 0.3994 0.0000 +vt -1.9473 0.4536 0.0000 +vt -1.9473 0.4331 0.0000 +vt -1.9473 0.4219 0.0000 +vt -1.9473 0.4443 0.0000 +vt -1.9473 0.4106 0.0000 +vt -1.9512 0.3877 0.0000 +vt -1.9473 0.3994 0.0000 +vt -1.9424 0.4536 0.0000 +vt -1.9424 0.4331 0.0000 +vt -1.9424 0.4219 0.0000 +vt -1.9424 0.4443 0.0000 +vt -1.9424 0.4106 0.0000 +vt -1.9473 0.3877 0.0000 +vt -1.9424 0.3994 0.0000 +vt -1.9424 0.3877 0.0000 +vt -0.9155 0.4536 0.0000 +vt -0.9155 0.4443 0.0000 +vt -0.9194 0.4536 0.0000 +vt -0.9194 0.4443 0.0000 +vt -0.9194 0.4331 0.0000 +vt -0.9155 0.4331 0.0000 +vt -0.9233 0.4536 0.0000 +vt -0.9194 0.4219 0.0000 +vt -0.9233 0.4443 0.0000 +vt -0.9155 0.4219 0.0000 +vt -0.9155 0.4106 0.0000 +vt -0.9233 0.4219 0.0000 +vt -0.9233 0.4331 0.0000 +vt -0.9194 0.4106 0.0000 +vt -0.9155 0.3994 0.0000 +vt -0.9272 0.4536 0.0000 +vt -0.9272 0.4443 0.0000 +vt -0.9194 0.3994 0.0000 +vt -0.9272 0.4219 0.0000 +vt -0.9155 0.3877 0.0000 +vt -0.9233 0.4106 0.0000 +vt -0.9272 0.4331 0.0000 +vt -0.9194 0.3877 0.0000 +vt -0.9233 0.3994 0.0000 +vt -0.9312 0.4443 0.0000 +vt -0.9155 0.3765 0.0000 +vt -0.9312 0.4219 0.0000 +vt -0.9272 0.4106 0.0000 +vt -0.9312 0.4331 0.0000 +vt -0.9312 0.4536 0.0000 +vt -0.9233 0.3877 0.0000 +vt -0.9272 0.3994 0.0000 +vt -0.9351 0.4443 0.0000 +vt -0.9351 0.4219 0.0000 +vt -0.9351 0.4331 0.0000 +vt -0.9312 0.4106 0.0000 +vt -0.9351 0.4106 0.0000 +vt -0.9351 0.4536 0.0000 +vt -0.9390 0.4443 0.0000 +vt -0.9390 0.4331 0.0000 +vt -0.9390 0.4106 0.0000 +vt -0.9390 0.4219 0.0000 +vt -0.9390 0.4536 0.0000 +vt -0.9429 0.4443 0.0000 +vt -0.9429 0.4331 0.0000 +vt -0.9390 0.3994 0.0000 +vt -0.9429 0.4106 0.0000 +vt -0.9429 0.4219 0.0000 +vt -0.9429 0.3994 0.0000 +vt -0.9429 0.4536 0.0000 +vt -0.9473 0.4443 0.0000 +vt -0.9473 0.4331 0.0000 +vt -0.9473 0.4106 0.0000 +vt -0.9473 0.3994 0.0000 +vt -0.9473 0.4219 0.0000 +vt -0.9473 0.4536 0.0000 +vt -0.9512 0.4443 0.0000 +vt -0.9512 0.4331 0.0000 +vt -0.9512 0.4106 0.0000 +vt -0.9512 0.4219 0.0000 +vt -0.9512 0.3994 0.0000 +vt -0.9512 0.4536 0.0000 +vt -0.9551 0.4443 0.0000 +vt -0.9551 0.4331 0.0000 +vt -0.9551 0.4106 0.0000 +vt -0.9551 0.4219 0.0000 +vt -0.9551 0.3994 0.0000 +vt -0.9551 0.4536 0.0000 +vt -0.9590 0.4331 0.0000 +vt -0.9590 0.4443 0.0000 +vt -0.9590 0.4106 0.0000 +vt -0.9590 0.4219 0.0000 +vt -0.9590 0.3994 0.0000 +vt -0.9590 0.4536 0.0000 +vt -0.9629 0.4331 0.0000 +vt -0.9629 0.4443 0.0000 +vt -0.9629 0.4106 0.0000 +vt -0.9629 0.4219 0.0000 +vt -0.9629 0.3994 0.0000 +vt -0.9629 0.4536 0.0000 +vt -0.9668 0.4331 0.0000 +vt -0.9668 0.4536 0.0000 +vt -0.9668 0.4443 0.0000 +vt -0.9668 0.4106 0.0000 +vt -0.9668 0.3994 0.0000 +vt -0.9668 0.4219 0.0000 +vt -0.9707 0.4536 0.0000 +vt -0.9707 0.4331 0.0000 +vt -0.9707 0.4443 0.0000 +vt -0.9668 0.3877 0.0000 +vt -0.9707 0.4219 0.0000 +vt -0.9707 0.4106 0.0000 +vt -0.9707 0.3994 0.0000 +vt -0.9746 0.4536 0.0000 +vt -0.9746 0.4331 0.0000 +vt -0.9746 0.4219 0.0000 +vt -0.9746 0.4443 0.0000 +vt -0.9746 0.4106 0.0000 +vt -0.9707 0.3877 0.0000 +vt -0.9746 0.3994 0.0000 +vt -0.9785 0.4536 0.0000 +vt -0.9194 0.3765 0.0000 +vt -0.9785 0.4331 0.0000 +vt -0.9785 0.4219 0.0000 +vt -0.9272 0.3877 0.0000 +vt -0.9785 0.4443 0.0000 +vt -0.9785 0.4106 0.0000 +vt -0.9473 0.3877 0.0000 +vt -0.9746 0.3877 0.0000 +vt -0.9785 0.3994 0.0000 +vt -0.9312 0.3994 0.0000 +vt -0.9824 0.4536 0.0000 +vt -0.9512 0.3877 0.0000 +vt -0.9824 0.4331 0.0000 +vt -0.9551 0.3877 0.0000 +vt -0.9824 0.4219 0.0000 +vt -0.9824 0.4443 0.0000 +vt -0.9590 0.3877 0.0000 +vt -0.9824 0.4106 0.0000 +vt -0.9668 0.3765 0.0000 +vt -0.9629 0.3877 0.0000 +vt -0.9785 0.3877 0.0000 +vt -0.9351 0.3994 0.0000 +vt -0.9707 0.3765 0.0000 +vt -0.9824 0.3994 0.0000 +vt -0.9863 0.4536 0.0000 +vt -0.9863 0.4331 0.0000 +vt -0.9863 0.4219 0.0000 +vt -0.9863 0.4443 0.0000 +vt -0.9429 0.3877 0.0000 +vt -0.9863 0.4106 0.0000 +vt -0.9746 0.3765 0.0000 +vt -0.9824 0.3877 0.0000 +vt -0.9863 0.3994 0.0000 +vt -0.9785 0.3765 0.0000 +vt -0.9863 0.3877 0.0000 +vt -0.9824 0.3765 0.0000 +vt -0.9746 0.3652 0.0000 +vt -0.9785 0.3652 0.0000 +vt -0.9707 0.3652 0.0000 +vt -0.9863 0.3765 0.0000 +vt -0.9668 0.3652 0.0000 +vt -0.9824 0.3652 0.0000 +vt -0.9746 0.3540 0.0000 +vt -0.9707 0.3540 0.0000 +vt -0.9824 0.3540 0.0000 +vt -0.9785 0.3540 0.0000 +vt -0.9668 0.3540 0.0000 +vt -0.9863 0.3652 0.0000 +vt -0.9863 0.3540 0.0000 +vt -0.9785 0.3423 0.0000 +vt -0.9746 0.3423 0.0000 +vt -0.9824 0.3423 0.0000 +vt -0.9707 0.3423 0.0000 +vt -0.9668 0.3423 0.0000 +vt -0.9863 0.3423 0.0000 +vt -0.9629 0.3652 0.0000 +vt -0.9629 0.3540 0.0000 +vt -0.9785 0.3311 0.0000 +vt -0.9746 0.3311 0.0000 +vt -0.9824 0.3311 0.0000 +vt -0.9707 0.3311 0.0000 +vt -0.9668 0.3311 0.0000 +vt -0.9629 0.3423 0.0000 +vt -0.9863 0.3311 0.0000 +vt -0.9824 0.3198 0.0000 +vt -0.9863 0.3198 0.0000 +vt -0.9785 0.3198 0.0000 +vt -0.9746 0.3198 0.0000 +vt -0.9629 0.3311 0.0000 +vt -0.9668 0.3198 0.0000 +vt -0.9707 0.3198 0.0000 +vt -0.9629 0.3198 0.0000 +vt -0.9629 0.3765 0.0000 +vt -0.9590 0.3198 0.0000 +vt -0.9590 0.3311 0.0000 +vt -0.9590 0.3423 0.0000 +vt -0.9590 0.3540 0.0000 +vt -0.9551 0.3198 0.0000 +vt -0.9551 0.3311 0.0000 +vt -0.9551 0.3423 0.0000 +vt -0.9233 0.3765 0.0000 +vt -0.9590 0.3652 0.0000 +vt -0.9551 0.3540 0.0000 +vt -0.9155 0.3652 0.0000 +vt -0.9512 0.3198 0.0000 +vt -0.9512 0.3311 0.0000 +vt -0.9512 0.3423 0.0000 +vt -0.9551 0.3652 0.0000 +vt -0.9590 0.3765 0.0000 +vt -0.9512 0.3540 0.0000 +vt -0.9473 0.3198 0.0000 +vt -0.9473 0.3311 0.0000 +vt -0.9473 0.3423 0.0000 +vt -0.9390 0.3877 0.0000 +vt -0.9512 0.3652 0.0000 +vt -0.9551 0.3765 0.0000 +vt -0.9473 0.3540 0.0000 +vt -0.9429 0.3198 0.0000 +vt -0.9429 0.3423 0.0000 +vt -0.9429 0.3311 0.0000 +vt -0.9473 0.3652 0.0000 +vt -0.9512 0.3765 0.0000 +vt -0.9429 0.3540 0.0000 +vt -0.9390 0.3198 0.0000 +vt -0.9390 0.3423 0.0000 +vt -0.9390 0.3311 0.0000 +vt -0.9429 0.3652 0.0000 +vt -0.9473 0.3765 0.0000 +vt -0.9390 0.3540 0.0000 +vt -0.9351 0.3198 0.0000 +vt -0.9351 0.3423 0.0000 +vt -0.9351 0.3540 0.0000 +vt -0.9351 0.3311 0.0000 +vt -0.9390 0.3652 0.0000 +vt -0.9429 0.3765 0.0000 +vt -0.9351 0.3652 0.0000 +vt -0.9312 0.3198 0.0000 +vt -0.9312 0.3423 0.0000 +vt -0.9312 0.3540 0.0000 +vt -0.9312 0.3311 0.0000 +vt -0.9312 0.3652 0.0000 +vt -0.9390 0.3765 0.0000 +vt -0.9351 0.3765 0.0000 +vt -0.9272 0.3311 0.0000 +vt -0.9272 0.3423 0.0000 +vt -0.9272 0.3540 0.0000 +vt -0.9272 0.3652 0.0000 +vt -0.9312 0.3765 0.0000 +vt -0.9272 0.3198 0.0000 +vt -0.9351 0.3877 0.0000 +vt -0.9233 0.3311 0.0000 +vt -0.9233 0.3540 0.0000 +vt -0.9233 0.3652 0.0000 +vt -0.9233 0.3423 0.0000 +vt -0.9272 0.3765 0.0000 +vt -0.9312 0.3877 0.0000 +vt -0.9233 0.3198 0.0000 +vt -0.9194 0.3311 0.0000 +vt -0.9194 0.3540 0.0000 +vt -0.9194 0.3652 0.0000 +vt -0.9194 0.3423 0.0000 +vt -0.9194 0.3198 0.0000 +vt -0.9155 0.3311 0.0000 +vt -0.9155 0.3540 0.0000 +vt -0.9155 0.3423 0.0000 +vt -0.9155 0.3198 0.0000 +vt -0.3271 0.9799 0.0000 +vt -0.3354 0.9670 0.0000 +vt -0.3354 0.9930 0.0000 +vt -0.3416 0.9954 0.0000 +vt -0.3464 0.9959 0.0000 +vt -0.3511 0.9955 0.0000 +vt -0.3572 0.9931 0.0000 +vt -0.3657 0.9801 0.0000 +vt -0.3418 0.9646 0.0000 +vt -0.3572 0.9670 0.0000 +vt -0.3511 0.9646 0.0000 +vt -0.3464 0.9641 0.0000 +vt -1.3135 0.3594 0.0000 +vt -1.3066 0.3530 0.0000 +vt -1.3154 0.3677 0.0000 +vt -1.3145 0.3589 0.0000 +vt -1.3164 0.3677 0.0000 +vt -1.3076 0.3521 0.0000 +vt -1.3125 0.3760 0.0000 +vt -1.3184 0.3677 0.0000 +vt -1.2988 0.3511 0.0000 +vt -1.3145 0.3765 0.0000 +vt -1.3154 0.3574 0.0000 +vt -1.3154 0.3774 0.0000 +vt -1.2988 0.3496 0.0000 +vt -1.2900 0.3530 0.0000 +vt -1.3086 0.3506 0.0000 +vt -1.2891 0.3521 0.0000 +vt -1.2842 0.3594 0.0000 +vt -1.3066 0.3818 0.0000 +vt -1.2988 0.3481 0.0000 +vt -1.2832 0.3589 0.0000 +vt -1.2891 0.3506 0.0000 +vt -1.3076 0.3833 0.0000 +vt -1.2822 0.3677 0.0000 +vt -1.3086 0.3843 0.0000 +vt -1.2812 0.3574 0.0000 +vt -1.2803 0.3677 0.0000 +vt -1.2842 0.3760 0.0000 +vt -1.2793 0.3677 0.0000 +vt -1.2832 0.3765 0.0000 +vt -1.2900 0.3818 0.0000 +vt -1.2822 0.3774 0.0000 +vt -1.2900 0.3833 0.0000 +vt -1.2988 0.3843 0.0000 +vt -1.2891 0.3843 0.0000 +vt -1.2988 0.3857 0.0000 +vt -1.2988 0.3867 0.0000 +vt -0.9189 0.0122 0.0000 +vt -0.9175 0.0127 0.0000 +vt -0.9180 0.0103 0.0000 +vt -0.9194 0.0142 0.0000 +vt -0.9180 0.0142 0.0000 +vt -0.9175 0.0156 0.0000 +vt -0.9165 0.0112 0.0000 +vt -0.9155 0.0107 0.0000 +vt -0.9189 0.0161 0.0000 +vt -0.9180 0.0181 0.0000 +vt -0.9160 0.0093 0.0000 +vt -0.9106 0.0127 0.0000 +vt -0.9165 0.0171 0.0000 +vt -0.9141 0.0088 0.0000 +vt -0.9141 0.0103 0.0000 +vt -0.9126 0.0107 0.0000 +vt -0.9126 0.0176 0.0000 +vt -0.9155 0.0176 0.0000 +vt -0.9121 0.0093 0.0000 +vt -0.9111 0.0112 0.0000 +vt -0.9102 0.0103 0.0000 +vt -0.9106 0.0156 0.0000 +vt -0.9160 0.0190 0.0000 +vt -0.9092 0.0122 0.0000 +vt -0.9082 0.0142 0.0000 +vt -0.9102 0.0142 0.0000 +vt -0.9141 0.0181 0.0000 +vt -0.9111 0.0171 0.0000 +vt -0.9102 0.0181 0.0000 +vt -0.9121 0.0190 0.0000 +vt -0.9141 0.0200 0.0000 +vt -0.9092 0.0161 0.0000 +vt -0.9102 0.0229 0.0000 +vt -0.9111 0.0244 0.0000 +vt -0.9092 0.0249 0.0000 +vt -0.9121 0.0225 0.0000 +vt -0.9126 0.0239 0.0000 +vt -0.9106 0.0259 0.0000 +vt -0.9141 0.0229 0.0000 +vt -0.9141 0.0215 0.0000 +vt -0.9160 0.0225 0.0000 +vt -0.9155 0.0239 0.0000 +vt -0.9102 0.0269 0.0000 +vt -0.9165 0.0244 0.0000 +vt -0.9180 0.0229 0.0000 +vt -0.9185 0.0249 0.0000 +vt -0.9175 0.0283 0.0000 +vt -0.9106 0.0283 0.0000 +vt -0.9082 0.0269 0.0000 +vt -0.9175 0.0259 0.0000 +vt -0.9126 0.0303 0.0000 +vt -0.9180 0.0269 0.0000 +vt -0.9092 0.0293 0.0000 +vt -0.9194 0.0269 0.0000 +vt -0.9111 0.0298 0.0000 +vt -0.9155 0.0303 0.0000 +vt -0.9121 0.0317 0.0000 +vt -0.9141 0.0308 0.0000 +vt -0.9185 0.0293 0.0000 +vt -0.9102 0.0313 0.0000 +vt -0.9165 0.0298 0.0000 +vt -0.9141 0.0327 0.0000 +vt -0.9160 0.0317 0.0000 +vt -0.9180 0.0313 0.0000 +vt -0.8623 0.5061 0.0000 +vt -0.8691 0.5083 0.0000 +vt -0.8735 0.5332 0.0000 +vt -0.8682 0.5027 0.0000 +vt -0.8623 0.5017 0.0000 +vt -0.8589 0.5068 0.0000 +vt -0.8564 0.5090 0.0000 +vt -0.8550 0.5127 0.0000 +vt -0.8550 0.5173 0.0000 +vt -0.8550 0.5271 0.0000 +vt -0.8877 0.6660 0.0000 +vt -0.8569 0.5027 0.0000 +vt -0.8525 0.5066 0.0000 +vt -0.8506 0.5117 0.0000 +vt -0.8838 0.6738 0.0000 +vt -0.8501 0.5173 0.0000 +vt -0.8555 0.6594 0.0000 +vt -0.8506 0.5273 0.0000 +vt -0.8525 0.6587 0.0000 +vt -1.8682 0.5027 0.0000 +vt -1.8623 0.5017 0.0000 +vt -1.8623 0.5061 0.0000 +vt -1.8691 0.5083 0.0000 +vt -1.8584 0.5068 0.0000 +vt -1.8730 0.5332 0.0000 +vt -1.8564 0.5027 0.0000 +vt -1.8564 0.5090 0.0000 +vt -1.8525 0.5066 0.0000 +vt -1.8545 0.5127 0.0000 +vt -1.8506 0.5117 0.0000 +vt -1.8545 0.5173 0.0000 +vt -1.8545 0.5271 0.0000 +vt -1.8496 0.5173 0.0000 +vt -1.8877 0.6660 0.0000 +vt -1.8506 0.5273 0.0000 +vt -1.8525 0.6587 0.0000 +vt -1.8555 0.6594 0.0000 +vt -1.8838 0.6738 0.0000 +vt -1.9121 0.0176 0.0000 +vt -1.9121 0.0190 0.0000 +vt -1.9141 0.0200 0.0000 +vt -1.9102 0.0181 0.0000 +vt -1.9111 0.0171 0.0000 +vt -1.9102 0.0156 0.0000 +vt -1.9141 0.0181 0.0000 +vt -1.9150 0.0176 0.0000 +vt -1.9160 0.0190 0.0000 +vt -1.9092 0.0161 0.0000 +vt -1.9180 0.0181 0.0000 +vt -1.9082 0.0142 0.0000 +vt -1.9170 0.0127 0.0000 +vt -1.9102 0.0142 0.0000 +vt -1.9102 0.0127 0.0000 +vt -1.9121 0.0107 0.0000 +vt -1.9160 0.0171 0.0000 +vt -1.9170 0.0156 0.0000 +vt -1.9092 0.0122 0.0000 +vt -1.9111 0.0112 0.0000 +vt -1.9102 0.0103 0.0000 +vt -1.9150 0.0107 0.0000 +vt -1.9121 0.0093 0.0000 +vt -1.9189 0.0161 0.0000 +vt -1.9141 0.0088 0.0000 +vt -1.9141 0.0103 0.0000 +vt -1.9180 0.0142 0.0000 +vt -1.9160 0.0112 0.0000 +vt -1.9180 0.0103 0.0000 +vt -1.9189 0.0122 0.0000 +vt -1.9189 0.0142 0.0000 +vt -1.9160 0.0093 0.0000 +vt -1.9180 0.0269 0.0000 +vt -1.9189 0.0269 0.0000 +vt -1.9180 0.0249 0.0000 +vt -1.9180 0.0293 0.0000 +vt -1.9170 0.0283 0.0000 +vt -1.9170 0.0259 0.0000 +vt -1.9160 0.0244 0.0000 +vt -1.9180 0.0229 0.0000 +vt -1.9160 0.0298 0.0000 +vt -1.9150 0.0303 0.0000 +vt -1.9160 0.0225 0.0000 +vt -1.9150 0.0239 0.0000 +vt -1.9102 0.0283 0.0000 +vt -1.9121 0.0239 0.0000 +vt -1.9180 0.0313 0.0000 +vt -1.9141 0.0229 0.0000 +vt -1.9160 0.0317 0.0000 +vt -1.9141 0.0215 0.0000 +vt -1.9121 0.0303 0.0000 +vt -1.9141 0.0308 0.0000 +vt -1.9102 0.0259 0.0000 +vt -1.9111 0.0298 0.0000 +vt -1.9092 0.0293 0.0000 +vt -1.9102 0.0269 0.0000 +vt -1.9121 0.0225 0.0000 +vt -1.9141 0.0327 0.0000 +vt -1.9121 0.0317 0.0000 +vt -1.9111 0.0244 0.0000 +vt -1.9102 0.0313 0.0000 +vt -1.9082 0.0269 0.0000 +vt -1.9092 0.0249 0.0000 +vt -1.9102 0.0229 0.0000 +vt -1.1387 0.7131 0.0000 +vt -1.1416 0.7119 0.0000 +vt -1.1396 0.7107 0.0000 +vt -1.1416 0.7139 0.0000 +vt -1.1406 0.7153 0.0000 +vt -1.1387 0.7156 0.0000 +vt -1.1377 0.7112 0.0000 +vt -1.1367 0.7146 0.0000 +vt -1.1367 0.7126 0.0000 +vt -1.1533 0.7124 0.0000 +vt -1.1514 0.7109 0.0000 +vt -1.1523 0.6892 0.0000 +vt -1.1543 0.7104 0.0000 +vt -1.1533 0.6865 0.0000 +vt -1.1553 0.6885 0.0000 +vt -0.2198 0.4990 0.0000 +vt -0.2184 0.4995 0.0000 +vt -0.2200 0.5020 0.0000 +vt -0.2213 0.4990 0.0000 +vt -0.2191 0.5024 0.0000 +vt -0.2209 0.5024 0.0000 +vt -0.2201 0.5029 0.0000 +vt -0.2145 0.5032 0.0000 +vt -0.2261 0.5027 0.0000 +vt -0.2169 0.5049 0.0000 +vt -0.2207 0.5029 0.0000 +vt -0.2139 0.5044 0.0000 +vt -0.2238 0.5051 0.0000 +vt -0.2267 0.5039 0.0000 +vt -0.2241 0.5059 0.0000 +vt -0.2230 0.5054 0.0000 +vt -0.2235 0.5059 0.0000 +vt -0.2268 0.5054 0.0000 +vt -0.2240 0.5061 0.0000 +vt -0.2236 0.5066 0.0000 +vt -0.2229 0.5190 0.0000 +vt -0.2224 0.5188 0.0000 +vt -0.2194 0.5032 0.0000 +vt -0.2164 0.5059 0.0000 +vt -0.2251 0.5210 0.0000 +vt -0.2220 0.5193 0.0000 +vt -0.2225 0.5198 0.0000 +vt -0.2218 0.5200 0.0000 +vt -0.2214 0.5195 0.0000 +vt -0.2242 0.5220 0.0000 +vt -0.2201 0.5203 0.0000 +vt -0.2201 0.5198 0.0000 +vt -0.2231 0.5227 0.0000 +vt -0.2186 0.5193 0.0000 +vt -0.2183 0.5200 0.0000 +vt -0.2200 0.5234 0.0000 +vt -0.2168 0.5225 0.0000 +vt -0.2136 0.5059 0.0000 +vt -0.2172 0.5061 0.0000 +vt -0.2183 0.5190 0.0000 +vt -0.2174 0.5054 0.0000 +vt -0.2175 0.5195 0.0000 +vt -0.2158 0.5217 0.0000 +vt -0.2173 0.5188 0.0000 +vt -0.2178 0.5186 0.0000 +vt -0.2162 0.5068 0.0000 +vt -0.2151 0.5205 0.0000 +vt -0.2168 0.5068 0.0000 +vt -0.2180 0.5190 0.0000 +vt -0.2169 0.5061 0.0000 +vt -0.6992 0.5889 0.0000 +vt -0.6953 0.5872 0.0000 +vt -0.7017 0.5806 0.0000 +vt -0.6973 0.5957 0.0000 +vt -0.7051 0.5957 0.0000 +vt -0.7041 0.5837 0.0000 +vt -0.7056 0.5923 0.0000 +vt -0.6924 0.5962 0.0000 +vt -0.7109 0.5784 0.0000 +vt -0.7056 0.5991 0.0000 +vt -0.7114 0.5820 0.0000 +vt -0.6992 0.6028 0.0000 +vt -0.7197 0.5808 0.0000 +vt -0.7080 0.5898 0.0000 +vt -0.7085 0.6013 0.0000 +vt -0.7148 0.6013 0.0000 +vt -0.7148 0.5901 0.0000 +vt -0.6953 0.6052 0.0000 +vt -0.7041 0.6079 0.0000 +vt -0.7017 0.6116 0.0000 +vt -0.7114 0.6023 0.0000 +vt -0.7183 0.5840 0.0000 +vt -0.7114 0.6096 0.0000 +vt -0.7183 0.5957 0.0000 +vt -0.7114 0.5891 0.0000 +vt -0.7183 0.6079 0.0000 +vt -0.7109 0.6140 0.0000 +vt -0.7231 0.6028 0.0000 +vt -0.7173 0.5989 0.0000 +vt -0.7197 0.6116 0.0000 +vt -0.7173 0.5925 0.0000 +vt -0.7266 0.6050 0.0000 +vt -0.7266 0.5872 0.0000 +vt -0.7231 0.5889 0.0000 +vt -0.7251 0.5959 0.0000 +vt -0.7290 0.5962 0.0000 +vt -1.6953 0.5872 0.0000 +vt -1.7012 0.5911 0.0000 +vt -1.7051 0.5872 0.0000 +vt -1.6924 0.5962 0.0000 +vt -1.6992 0.5962 0.0000 +vt -1.7012 0.6013 0.0000 +vt -1.6953 0.6052 0.0000 +vt -1.7051 0.6052 0.0000 +vt -1.7012 0.6116 0.0000 +vt -1.7100 0.6064 0.0000 +vt -1.7012 0.5806 0.0000 +vt -1.7109 0.6140 0.0000 +vt -1.7158 0.6052 0.0000 +vt -1.7197 0.6116 0.0000 +vt -1.7197 0.6013 0.0000 +vt -1.7266 0.6050 0.0000 +vt -1.7207 0.5962 0.0000 +vt -1.7285 0.5962 0.0000 +vt -1.7100 0.5859 0.0000 +vt -1.7266 0.5872 0.0000 +vt -1.7197 0.5911 0.0000 +vt -1.7197 0.5808 0.0000 +vt -1.7158 0.5872 0.0000 +vt -1.7109 0.5784 0.0000 +vt -1.3564 0.9670 0.0000 +vt -1.3506 0.9646 0.0000 +vt -1.3652 0.9801 0.0000 +vt -1.3564 0.9931 0.0000 +vt -1.3506 0.9955 0.0000 +vt -1.3457 0.9959 0.0000 +vt -1.3408 0.9954 0.0000 +vt -1.3350 0.9930 0.0000 +vt -1.3271 0.9799 0.0000 +vt -1.3457 0.9641 0.0000 +vt -1.3350 0.9670 0.0000 +vt -1.3418 0.9646 0.0000 +vt -0.0569 0.4282 0.0000 +vt -0.0593 0.4321 0.0000 +vt -0.0637 0.4272 0.0000 +vt -0.0631 0.4263 0.0000 +vt -0.0567 0.4238 0.0000 +vt -0.0630 0.4253 0.0000 +vt -0.0586 0.4199 0.0000 +vt -0.0635 0.4243 0.0000 +vt -0.0623 0.4175 0.0000 +vt -0.0644 0.4238 0.0000 +vt -0.0646 0.4272 0.0000 +vt -0.0666 0.4170 0.0000 +vt -0.0654 0.4233 0.0000 +vt -0.0706 0.4189 0.0000 +vt -0.0663 0.4238 0.0000 +vt -0.0731 0.4229 0.0000 +vt -0.0669 0.4248 0.0000 +vt -0.0633 0.4341 0.0000 +vt -0.0735 0.4272 0.0000 +vt -0.0669 0.4258 0.0000 +vt -0.0717 0.4312 0.0000 +vt -0.0664 0.4268 0.0000 +vt -0.0677 0.4336 0.0000 +vt -0.0656 0.4272 0.0000 +vt -0.0656 0.4385 0.0000 +vt -0.0656 0.4390 0.0000 +vt -0.0667 0.4390 0.0000 +vt -0.0659 0.4380 0.0000 +vt -0.0658 0.4395 0.0000 +vt -0.0679 0.4385 0.0000 +vt -0.0679 0.4395 0.0000 +vt -0.0676 0.4399 0.0000 +vt -0.0670 0.4399 0.0000 +vt -0.0663 0.4399 0.0000 +vt -1.9248 0.2930 0.0000 +vt -1.9219 0.2920 0.0000 +vt -1.9209 0.2959 0.0000 +vt -1.9229 0.2969 0.0000 +vt -1.9199 0.2959 0.0000 +vt -1.9199 0.3003 0.0000 +vt -1.9189 0.2915 0.0000 +vt -1.9238 0.2979 0.0000 +vt -1.9180 0.2964 0.0000 +vt -1.9277 0.2954 0.0000 +vt -1.9160 0.2925 0.0000 +vt -1.9248 0.2993 0.0000 +vt -1.9248 0.3008 0.0000 +vt -1.9238 0.3022 0.0000 +vt -1.9287 0.2983 0.0000 +vt -1.9229 0.3037 0.0000 +vt -1.9287 0.3013 0.0000 +vt -1.9219 0.3042 0.0000 +vt -1.9170 0.2974 0.0000 +vt -1.9209 0.3047 0.0000 +vt -1.9277 0.3042 0.0000 +vt -1.9189 0.3047 0.0000 +vt -1.9268 0.3066 0.0000 +vt -1.9180 0.3042 0.0000 +vt -1.9170 0.3032 0.0000 +vt -1.9238 0.3086 0.0000 +vt -1.9160 0.3018 0.0000 +vt -1.9160 0.3003 0.0000 +vt -1.9160 0.2988 0.0000 +vt -1.9209 0.3091 0.0000 +vt -1.9180 0.3091 0.0000 +vt -1.9131 0.2944 0.0000 +vt -1.9150 0.3081 0.0000 +vt -1.9131 0.3062 0.0000 +vt -1.9111 0.3032 0.0000 +vt -1.9111 0.3003 0.0000 +vt -1.9121 0.2974 0.0000 +vt -1.9453 0.3032 0.0000 +vt -1.9473 0.3066 0.0000 +vt -1.9492 0.3047 0.0000 +vt -1.9434 0.3042 0.0000 +vt -1.9395 0.3018 0.0000 +vt -1.9463 0.3022 0.0000 +vt -1.9443 0.3076 0.0000 +vt -1.9502 0.3022 0.0000 +vt -1.9463 0.3013 0.0000 +vt -1.9424 0.3042 0.0000 +vt -1.9502 0.2988 0.0000 +vt -1.9414 0.3037 0.0000 +vt -1.9404 0.3027 0.0000 +vt -1.9463 0.2998 0.0000 +vt -1.9414 0.3076 0.0000 +vt -1.9375 0.3052 0.0000 +vt -1.9365 0.3037 0.0000 +vt -1.9395 0.3071 0.0000 +vt -1.9395 0.3008 0.0000 +vt -1.9395 0.2988 0.0000 +vt -1.9355 0.3013 0.0000 +vt -1.9395 0.2998 0.0000 +vt -1.9463 0.2983 0.0000 +vt -1.9355 0.2993 0.0000 +vt -1.9365 0.2974 0.0000 +vt -1.9375 0.2954 0.0000 +vt -1.9404 0.2983 0.0000 +vt -1.9414 0.2974 0.0000 +vt -1.9424 0.2969 0.0000 +vt -1.9492 0.2964 0.0000 +vt -1.9434 0.2969 0.0000 +vt -1.9453 0.2974 0.0000 +vt -1.9395 0.2939 0.0000 +vt -1.9414 0.2930 0.0000 +vt -1.9443 0.2930 0.0000 +vt -1.9473 0.2944 0.0000 +vt -0.9268 0.3066 0.0000 +vt -0.9243 0.3086 0.0000 +vt -0.9224 0.3042 0.0000 +vt -0.9233 0.3037 0.0000 +vt -0.9209 0.3047 0.0000 +vt -0.9199 0.3003 0.0000 +vt -0.9214 0.3091 0.0000 +vt -0.9282 0.3042 0.0000 +vt -0.9194 0.3047 0.0000 +vt -0.9243 0.3022 0.0000 +vt -0.9185 0.3091 0.0000 +vt -0.9248 0.3008 0.0000 +vt -0.9248 0.2993 0.0000 +vt -0.9292 0.3013 0.0000 +vt -0.9238 0.2979 0.0000 +vt -0.9287 0.2983 0.0000 +vt -0.9229 0.2969 0.0000 +vt -0.9214 0.2959 0.0000 +vt -0.9180 0.3042 0.0000 +vt -0.9277 0.2954 0.0000 +vt -0.9199 0.2959 0.0000 +vt -0.9185 0.2964 0.0000 +vt -0.9253 0.2930 0.0000 +vt -0.9170 0.2974 0.0000 +vt -0.9160 0.2988 0.0000 +vt -0.9224 0.2920 0.0000 +vt -0.9160 0.3003 0.0000 +vt -0.9160 0.3018 0.0000 +vt -0.9170 0.3032 0.0000 +vt -0.9194 0.2915 0.0000 +vt -0.9160 0.2925 0.0000 +vt -0.9136 0.2944 0.0000 +vt -0.9155 0.3081 0.0000 +vt -0.9121 0.2974 0.0000 +vt -0.9111 0.3003 0.0000 +vt -0.9116 0.3032 0.0000 +vt -0.9131 0.3062 0.0000 +vt -0.9375 0.2954 0.0000 +vt -0.9395 0.2939 0.0000 +vt -0.9409 0.2983 0.0000 +vt -0.9399 0.2988 0.0000 +vt -0.9414 0.2974 0.0000 +vt -0.9419 0.2930 0.0000 +vt -0.9429 0.2969 0.0000 +vt -0.9365 0.2974 0.0000 +vt -0.9438 0.2969 0.0000 +vt -0.9443 0.2930 0.0000 +vt -0.9473 0.2944 0.0000 +vt -0.9360 0.2993 0.0000 +vt -0.9399 0.2998 0.0000 +vt -0.9399 0.3008 0.0000 +vt -0.9453 0.2974 0.0000 +vt -0.9399 0.3018 0.0000 +vt -0.9468 0.3013 0.0000 +vt -0.9468 0.2998 0.0000 +vt -0.9463 0.2983 0.0000 +vt -0.9360 0.3013 0.0000 +vt -0.9365 0.3037 0.0000 +vt -0.9375 0.3052 0.0000 +vt -0.9463 0.3022 0.0000 +vt -0.9409 0.3027 0.0000 +vt -0.9414 0.3037 0.0000 +vt -0.9429 0.3042 0.0000 +vt -0.9492 0.2964 0.0000 +vt -0.9438 0.3042 0.0000 +vt -0.9502 0.2988 0.0000 +vt -0.9453 0.3032 0.0000 +vt -0.9395 0.3071 0.0000 +vt -0.9502 0.3022 0.0000 +vt -0.9419 0.3076 0.0000 +vt -0.9443 0.3076 0.0000 +vt -0.9473 0.3066 0.0000 +vt -0.9492 0.3047 0.0000 +# 6513 texture coords + +g 2b949347 +f 1/1/1 2/2/2 3/3/3 +f 1/1/4 4/4/5 2/2/2 +f 4/4/5 5/5/6 2/2/2 +f 4/4/5 6/6/7 5/5/6 +f 6/6/7 7/7/8 5/5/6 +f 6/6/7 8/8/9 7/7/8 +f 8/8/9 9/9/10 7/7/8 +f 8/8/9 10/10/11 9/9/10 +f 10/10/11 11/11/12 9/9/10 +f 10/10/11 12/12/13 11/11/12 +f 12/12/13 13/13/14 11/11/12 +f 12/12/13 14/14/15 13/13/14 +f 14/14/15 15/15/16 13/13/14 +f 16/16/17 15/15/16 14/14/15 +f 17/17/18 16/16/17 14/14/15 +f 18/18/19 16/16/17 17/17/18 +f 19/19/20 18/18/19 17/17/18 +f 20/20/21 18/18/19 19/19/20 +f 21/21/22 20/20/21 19/19/20 +f 22/22/23 20/20/21 21/21/22 +f 23/23/24 22/22/23 21/21/22 +f 3/3/3 24/24/25 23/23/24 +f 24/24/25 22/22/23 23/23/24 +f 2/2/26 24/24/25 3/3/3 +f 25/25/27 26/26/27 27/27/27 +f 28/28/28 29/29/29 30/30/29 +f 28/28/28 31/31/30 29/29/31 +f 31/31/30 32/32/32 29/29/31 +f 31/31/30 33/33/33 32/32/32 +f 31/31/30 34/34/34 33/33/33 +f 34/34/34 35/35/35 33/33/33 +f 36/36/36 37/37/37 38/38/38 +f 39/36/39 38/38/38 40/39/40 +f 41/40/41 39/36/39 40/39/40 +f 42/41/42 41/40/41 40/39/40 +f 43/42/43 42/41/42 40/39/40 +f 44/43/44 42/41/42 43/42/43 +f 45/44/45 44/43/44 43/42/43 +f 46/45/46 44/43/44 45/44/45 +f 47/46/47 46/45/46 45/44/45 +f 47/46/47 48/47/48 46/45/46 +f 48/47/48 49/48/49 46/45/46 +f 49/48/49 48/47/48 50/49/50 +f 51/50/51 49/48/49 50/49/50 +f 51/50/51 50/49/50 52/51/52 +f 53/52/53 51/50/51 52/51/52 +f 53/52/53 52/51/52 54/53/54 +f 55/54/55 53/52/53 54/53/54 +f 37/37/37 56/55/56 57/56/57 +f 58/36/58 56/55/56 37/37/37 +f 56/55/56 58/36/58 59/57/59 +f 60/58/60 56/55/56 59/57/59 +f 61/59/61 60/58/60 59/57/59 +f 60/58/60 61/59/61 62/60/62 +f 61/59/61 63/61/63 62/60/62 +f 63/61/63 64/62/64 62/60/62 +f 64/62/64 65/63/65 62/60/62 +f 66/64/66 65/63/65 64/62/64 +f 67/65/67 65/63/65 66/64/66 +f 39/36/68 36/36/68 38/38/68 +f 36/36/69 58/36/69 37/37/69 +f 68/55/70 69/66/70 70/67/71 +f 68/55/72 70/67/71 71/37/73 +f 71/37/73 70/67/71 72/68/74 +f 71/37/73 73/56/75 68/55/72 +f 71/37/73 72/68/74 74/38/76 +f 74/38/76 72/68/74 75/69/77 +f 76/39/78 74/38/76 75/69/77 +f 77/40/79 76/39/78 75/69/77 +f 76/39/78 77/40/79 78/41/80 +f 79/42/81 76/39/78 78/41/80 +f 79/42/81 78/41/80 80/43/82 +f 81/44/83 79/42/81 80/43/82 +f 81/44/83 80/43/82 82/45/84 +f 83/46/85 81/44/83 82/45/84 +f 82/45/84 84/48/86 83/46/85 +f 84/48/86 85/47/87 83/46/85 +f 85/47/87 84/48/86 86/49/88 +f 84/48/86 87/50/89 86/49/88 +f 86/49/88 87/50/89 88/51/90 +f 87/50/89 89/52/91 88/51/90 +f 88/51/90 89/52/91 90/53/92 +f 89/52/91 91/54/93 90/53/92 +f 69/66/94 68/55/72 92/58/95 +f 93/59/96 69/66/94 92/58/95 +f 92/58/95 94/60/97 93/59/96 +f 94/60/97 95/61/98 93/59/96 +f 95/61/98 94/60/97 96/70/99 +f 94/60/97 97/63/100 96/70/99 +f 96/70/99 97/63/100 98/71/101 +f 98/71/101 97/63/100 99/72/102 +f 100/73/103 101/74/103 102/74/103 +f 103/38/104 104/36/104 105/36/104 +f 105/36/105 106/36/105 107/37/105 +f 107/37/106 103/38/107 105/36/108 +f 104/36/109 103/38/107 108/39/110 +f 109/40/111 104/36/109 108/39/110 +f 110/41/112 109/40/111 108/39/110 +f 111/42/113 110/41/112 108/39/110 +f 112/43/114 110/41/112 111/42/113 +f 113/44/115 112/43/114 111/42/113 +f 114/45/116 112/43/114 113/44/115 +f 115/46/117 114/45/116 113/44/115 +f 114/45/116 115/46/117 116/48/118 +f 115/46/117 117/47/119 116/48/118 +f 116/48/118 117/47/119 118/49/120 +f 119/50/121 116/48/118 118/49/120 +f 119/50/121 118/49/120 120/51/122 +f 121/52/123 119/50/121 120/51/122 +f 121/52/123 120/51/122 90/53/124 +f 91/54/125 121/52/123 90/53/124 +f 122/55/126 123/56/127 107/37/106 +f 122/55/126 107/37/106 106/36/128 +f 106/36/128 124/57/129 122/55/126 +f 125/58/130 122/55/126 124/57/129 +f 126/59/131 125/58/130 124/57/129 +f 125/58/130 126/59/131 127/60/132 +f 126/59/131 128/61/133 127/60/132 +f 128/61/133 129/75/134 127/60/132 +f 129/75/134 130/63/135 127/60/132 +f 129/75/134 131/76/136 130/63/135 +f 130/63/135 132/77/137 133/78/138 +f 132/77/137 134/79/139 133/78/138 +f 135/80/140 133/78/138 134/79/139 +f 136/81/141 135/80/140 134/79/139 +f 137/82/142 136/81/141 134/79/139 +f 136/81/141 137/82/142 138/83/143 +f 137/82/142 139/84/144 138/83/143 +f 138/83/143 139/84/144 140/85/145 +f 141/86/146 138/83/143 140/85/145 +f 141/86/146 140/85/145 142/87/147 +f 143/88/148 141/86/146 142/87/147 +f 143/88/148 142/87/147 144/89/149 +f 142/87/147 119/50/150 144/89/149 +f 144/89/149 119/50/150 121/52/151 +f 145/90/152 144/89/149 121/52/151 +f 91/54/153 145/90/152 121/52/151 +f 146/91/154 130/63/135 133/78/138 +f 147/92/155 146/91/154 133/78/138 +f 148/93/156 146/91/154 147/92/155 +f 149/94/157 148/93/156 147/92/155 +f 150/95/158 151/96/158 132/95/158 +f 131/95/159 150/95/159 132/95/159 +f 99/97/160 67/98/160 66/97/160 +f 98/99/161 99/97/161 66/97/161 +f 97/63/162 152/100/162 99/72/162 +f 131/76/163 132/77/163 130/63/163 +f 153/79/164 65/63/164 67/65/164 +f 154/101/165 155/102/165 156/103/165 +f 157/104/166 158/105/166 159/106/166 +f 157/104/167 159/106/167 160/107/167 +f 157/104/168 160/107/168 161/108/168 +f 157/104/169 161/108/169 162/109/169 +f 157/104/170 162/109/170 163/110/170 +f 157/104/171 163/110/171 164/111/171 +f 165/112/172 166/113/172 167/114/172 +f 168/115/173 165/112/173 167/114/173 +f 169/116/174 168/115/174 167/114/174 +f 170/117/175 169/116/175 167/114/175 +f 171/118/176 170/117/176 167/114/176 +f 172/119/177 171/118/177 167/114/177 +f 173/120/178 174/121/178 175/122/178 +f 176/123/179 177/124/179 178/125/179 +f 179/126/180 180/127/180 181/128/180 +f 182/129/181 177/130/181 183/131/181 +f 184/132/182 180/133/182 185/134/182 +f 186/135/183 187/136/183 188/137/183 +f 189/138/184 190/139/184 191/140/184 +f 192/141/185 193/142/185 194/143/185 +f 195/144/186 196/145/187 197/146/188 +f 196/145/187 198/147/189 197/146/188 +f 196/145/187 199/148/190 198/147/189 +f 199/148/190 200/149/191 198/147/189 +f 199/148/190 201/150/192 200/149/191 +f 201/150/192 202/151/193 200/149/191 +f 201/150/192 203/152/194 202/151/193 +f 203/152/194 204/153/195 202/151/193 +f 203/152/194 205/154/196 204/153/195 +f 205/154/196 206/155/197 204/153/195 +f 205/154/196 207/156/198 206/155/197 +f 207/156/198 208/157/199 206/155/197 +f 209/158/200 208/157/199 207/156/198 +f 210/159/201 209/158/200 207/156/198 +f 211/160/202 209/158/200 210/159/201 +f 212/161/203 211/160/202 210/159/201 +f 213/162/204 211/160/202 212/161/203 +f 214/163/205 213/162/204 212/161/203 +f 215/164/206 213/162/204 214/163/205 +f 216/165/207 215/164/206 214/163/205 +f 217/166/208 215/164/206 216/165/207 +f 218/167/209 217/166/208 216/165/207 +f 218/167/209 195/168/210 217/166/208 +f 195/168/210 197/169/210 217/166/208 +f 18/18/211 20/20/212 22/22/213 +f 18/18/211 22/22/213 24/24/214 +f 18/18/211 24/24/214 2/2/215 +f 18/18/211 2/2/215 5/5/216 +f 18/18/211 5/5/216 7/7/212 +f 18/18/211 7/7/212 9/9/217 +f 18/18/211 9/9/217 11/11/218 +f 18/18/211 11/11/218 13/13/219 +f 18/18/211 13/13/219 15/15/220 +f 18/18/211 15/15/220 16/16/221 +f 219/170/222 220/171/223 221/172/222 +f 222/173/222 219/170/222 221/172/222 +f 223/174/178 224/175/178 225/176/178 +f 226/177/178 223/174/178 225/176/178 +f 223/178/224 227/179/224 224/180/224 +f 227/179/224 228/181/224 224/180/224 +f 227/179/224 229/182/224 228/181/224 +f 229/182/224 230/183/224 228/181/224 +f 231/184/225 232/185/225 233/186/225 +f 234/187/225 231/184/225 233/186/225 +f 230/188/226 229/189/226 232/190/226 +f 231/191/226 230/188/226 232/190/226 +f 226/177/227 225/176/227 235/192/227 +f 236/193/227 226/177/227 235/192/227 +f 236/193/178 235/192/178 237/194/178 +f 238/195/178 236/193/178 237/194/178 +f 234/196/228 233/197/228 239/198/228 +f 240/199/228 234/196/228 239/198/228 +f 241/200/229 242/201/229 243/202/229 +f 244/203/229 241/200/229 243/202/229 +f 243/202/230 242/201/230 238/204/230 +f 237/205/230 243/202/230 238/204/230 +f 230/206/231 231/207/231 228/208/231 +f 231/207/231 234/209/231 228/208/231 +f 224/210/231 228/208/231 234/209/231 +f 225/211/231 224/210/231 234/209/231 +f 225/211/231 234/209/231 235/212/231 +f 234/209/231 240/213/231 235/212/231 +f 237/214/231 235/212/231 240/213/231 +f 243/215/231 237/214/231 240/213/231 +f 240/213/231 244/216/231 243/215/231 +f 239/198/232 241/217/232 244/218/232 +f 240/199/232 239/198/232 244/218/232 +f 245/219/178 246/220/178 223/221/178 +f 245/219/178 223/221/178 226/222/178 +f 246/223/224 227/224/224 223/225/224 +f 246/223/224 247/226/224 227/224/224 +f 247/226/224 229/227/224 227/224/224 +f 247/226/224 248/228/224 229/227/224 +f 233/229/225 232/230/225 249/231/225 +f 233/229/225 249/231/225 250/232/225 +f 232/233/226 229/234/226 248/235/226 +f 232/233/226 248/235/226 249/236/226 +f 251/237/227 245/219/227 226/222/227 +f 251/237/227 226/222/227 236/238/227 +f 252/239/178 251/237/178 236/238/178 +f 252/239/178 236/238/178 238/240/178 +f 239/241/228 233/242/228 250/243/228 +f 239/241/228 250/243/228 253/244/228 +f 254/245/229 242/246/229 241/247/229 +f 254/245/229 241/247/229 255/248/229 +f 238/249/230 242/246/230 254/245/230 +f 238/249/230 254/245/230 252/250/230 +f 249/251/233 248/252/233 247/253/233 +f 250/254/233 249/251/233 247/253/233 +f 250/254/233 247/253/233 246/255/233 +f 245/256/233 250/254/233 246/255/233 +f 250/254/233 245/256/233 251/257/233 +f 253/258/233 250/254/233 251/257/233 +f 253/258/233 251/257/233 252/259/233 +f 253/258/233 252/259/233 254/260/233 +f 254/260/233 255/261/233 253/258/233 +f 255/262/232 241/263/232 239/241/232 +f 255/262/232 239/241/232 253/244/232 +f 256/264/234 257/265/235 258/266/236 +f 259/267/237 256/264/234 258/266/236 +f 260/268/238 259/267/237 258/266/236 +f 260/268/238 258/266/236 261/269/239 +f 260/268/238 261/269/239 262/270/234 +f 260/268/238 262/270/234 263/271/240 +f 260/268/238 263/271/240 264/272/241 +f 260/268/238 264/272/241 265/273/242 +f 260/268/238 265/273/242 266/274/243 +f 260/268/238 266/274/243 267/275/244 +f 260/268/238 267/275/244 268/276/245 +f 260/268/238 268/276/245 269/277/246 +f 260/268/238 269/277/246 270/278/247 +f 260/268/238 270/278/247 271/279/248 +f 260/268/238 271/279/248 272/280/249 +f 273/281/250 274/282/251 26/283/252 +f 275/284/253 273/281/250 26/283/252 +f 276/285/254 273/281/250 275/284/253 +f 277/286/255 276/285/254 275/284/253 +f 278/287/256 276/285/254 277/286/255 +f 279/288/257 278/287/256 277/286/255 +f 280/289/258 278/287/256 279/288/257 +f 281/290/259 280/289/258 279/288/257 +f 282/291/260 280/289/258 281/290/259 +f 283/292/261 282/291/260 281/290/259 +f 282/291/260 283/292/261 284/293/262 +f 285/294/263 282/291/260 284/293/262 +f 286/295/264 285/294/263 284/293/262 +f 287/296/265 286/295/264 284/293/262 +f 286/295/264 287/296/265 288/297/266 +f 289/298/267 286/295/264 288/297/266 +f 290/299/268 289/298/267 288/297/266 +f 291/300/269 290/299/268 288/297/266 +f 290/299/268 291/300/269 292/301/270 +f 293/302/271 290/299/268 292/301/270 +f 294/303/272 293/302/271 292/301/270 +f 295/304/273 294/303/272 292/301/270 +f 294/303/272 295/304/273 296/305/274 +f 297/306/275 294/303/272 296/305/274 +f 297/306/275 296/305/274 298/307/276 +f 299/308/277 297/306/275 298/307/276 +f 299/308/277 298/307/276 300/309/278 +f 301/310/279 299/308/277 300/309/278 +f 301/310/279 300/309/278 302/311/280 +f 303/312/281 301/310/279 302/311/280 +f 303/312/281 302/311/280 304/313/282 +f 305/314/283 303/312/281 304/313/282 +f 306/315/284 307/316/285 308/317/286 +f 307/316/285 309/318/287 308/317/286 +f 308/317/286 309/318/287 310/319/288 +f 311/320/289 308/317/286 310/319/288 +f 311/320/289 310/319/288 312/321/290 +f 310/319/288 313/322/291 312/321/290 +f 312/321/290 313/322/291 314/323/292 +f 315/324/293 312/321/290 314/323/292 +f 315/324/293 314/323/292 316/325/294 +f 314/323/292 317/326/295 316/325/294 +f 316/325/294 317/326/295 318/327/296 +f 319/328/297 316/325/294 318/327/296 +f 319/328/297 318/327/296 320/329/298 +f 321/330/299 319/328/297 320/329/298 +f 322/331/300 321/330/299 320/329/298 +f 323/332/301 322/331/300 320/329/298 +f 322/331/300 323/332/301 324/333/302 +f 325/334/303 322/331/300 324/333/302 +f 326/335/304 325/334/303 324/333/302 +f 327/336/305 326/335/304 324/333/302 +f 326/335/304 327/336/305 328/337/306 +f 327/336/305 329/338/307 328/337/306 +f 328/337/306 329/338/307 330/339/308 +f 331/340/309 328/337/306 330/339/308 +f 331/340/309 330/339/308 332/341/310 +f 330/339/308 333/342/311 332/341/310 +f 332/341/310 333/342/311 334/343/312 +f 335/344/313 332/341/310 334/343/312 +f 335/344/313 334/343/312 336/345/314 +f 334/343/312 337/346/315 336/345/314 +f 336/345/314 337/346/315 338/347/316 +f 339/348/317 336/345/314 338/347/316 +f 309/349/318 307/350/319 340/351/320 +f 341/352/321 309/349/318 340/351/320 +f 310/353/322 309/349/318 341/352/321 +f 342/354/323 310/353/322 341/352/321 +f 313/355/324 310/353/322 342/354/323 +f 343/356/325 313/355/324 342/354/323 +f 313/355/324 343/356/325 344/357/326 +f 314/358/327 313/355/324 344/357/326 +f 317/359/328 314/358/327 344/357/326 +f 345/360/329 317/359/328 344/357/326 +f 318/361/330 317/359/328 345/360/329 +f 346/362/331 318/361/330 345/360/329 +f 318/361/330 346/362/331 347/363/332 +f 320/364/333 318/361/330 347/363/332 +f 320/364/333 347/363/332 348/365/334 +f 323/366/335 320/364/333 348/365/334 +f 323/366/335 348/365/334 349/367/336 +f 324/368/337 323/366/335 349/367/336 +f 324/368/337 349/367/336 350/369/338 +f 327/370/339 324/368/337 350/369/338 +f 329/371/340 327/370/339 350/369/338 +f 351/372/341 329/371/340 350/369/338 +f 330/373/342 329/371/340 351/372/341 +f 352/374/343 330/373/342 351/372/341 +f 330/373/342 352/374/343 353/375/344 +f 333/376/345 330/373/342 353/375/344 +f 333/376/345 353/375/344 354/377/346 +f 334/378/347 333/376/345 354/377/346 +f 334/378/347 354/377/346 355/379/348 +f 337/380/349 334/378/347 355/379/348 +f 337/380/349 355/379/348 356/381/350 +f 338/382/351 337/380/349 356/381/350 +f 357/383/225 358/384/225 359/385/225 +f 360/386/225 357/383/225 359/385/225 +f 361/387/225 360/386/225 359/385/225 +f 361/387/225 362/388/225 360/386/225 +f 360/386/225 362/388/225 363/389/352 +f 364/390/353 365/391/354 366/392/355 +f 365/391/354 367/393/356 366/392/355 +f 367/393/356 365/391/354 368/394/357 +f 369/395/358 368/394/357 365/391/354 +f 369/395/358 365/391/354 370/396/359 +f 366/392/355 367/393/356 371/397/360 +f 372/398/361 367/393/356 368/394/357 +f 373/399/362 366/392/355 371/397/360 +f 371/397/363 367/393/356 372/398/361 +f 364/400/364 366/401/365 359/402/366 +f 366/401/365 361/403/367 359/402/366 +f 361/403/367 366/401/365 373/404/368 +f 362/405/369 361/403/367 373/404/368 +f 374/406/370 375/407/371 376/408/372 +f 374/406/370 376/408/372 377/409/373 +f 377/409/373 378/410/374 374/406/370 +f 379/411/375 304/313/376 380/412/377 +f 304/313/376 302/311/378 380/412/377 +f 380/412/377 302/311/378 381/413/379 +f 302/311/378 300/309/380 381/413/379 +f 381/413/379 300/309/380 382/414/381 +f 300/309/380 298/307/382 382/414/381 +f 382/414/381 298/307/382 383/415/383 +f 298/307/382 296/305/384 383/415/383 +f 383/415/383 296/305/384 384/416/385 +f 296/305/384 295/304/386 384/416/385 +f 384/416/385 295/304/386 385/417/387 +f 295/304/386 292/301/388 385/417/387 +f 292/301/388 291/300/389 385/417/387 +f 291/300/389 386/418/390 385/417/387 +f 386/418/390 291/300/389 387/419/391 +f 291/300/389 288/297/392 387/419/391 +f 288/297/392 287/296/393 387/419/391 +f 287/296/393 388/420/394 387/419/391 +f 388/420/394 287/296/393 389/421/395 +f 287/296/393 284/293/396 389/421/395 +f 284/293/396 283/292/397 389/421/395 +f 283/292/397 390/422/398 389/421/395 +f 283/292/397 281/290/399 390/422/398 +f 281/290/399 391/423/400 390/422/398 +f 281/290/399 279/288/401 391/423/400 +f 279/288/401 392/424/402 391/423/400 +f 279/288/401 277/286/403 392/424/402 +f 277/286/403 393/425/404 392/424/402 +f 393/425/404 277/286/403 394/426/405 +f 277/286/403 275/284/406 394/426/405 +f 394/426/405 275/284/406 25/427/407 +f 275/284/406 26/283/408 25/427/407 +f 378/410/409 377/409/410 395/428/411 +f 396/429/412 378/410/409 395/428/411 +f 397/430/413 306/315/414 308/317/415 +f 398/431/416 397/430/413 308/317/415 +f 399/432/417 398/431/416 308/317/415 +f 311/320/418 399/432/417 308/317/415 +f 400/433/419 397/430/413 398/431/416 +f 399/432/417 311/320/418 401/434/420 +f 311/320/418 312/321/421 401/434/420 +f 399/432/417 402/435/422 398/431/416 +f 402/435/422 399/432/417 401/434/420 +f 403/436/423 401/434/420 312/321/421 +f 404/437/424 400/433/419 398/431/416 +f 402/435/422 404/437/424 398/431/416 +f 315/324/425 403/436/423 312/321/421 +f 405/438/426 401/434/420 403/436/423 +f 405/438/426 402/435/422 401/434/420 +f 403/436/423 315/324/425 316/325/427 +f 406/439/428 405/438/426 403/436/423 +f 406/439/428 403/436/423 407/440/429 +f 407/440/429 403/436/423 316/325/427 +f 408/441/430 400/433/419 404/437/424 +f 404/437/424 402/435/422 409/442/431 +f 409/442/431 408/441/430 404/437/424 +f 410/443/432 402/435/422 405/438/426 +f 402/435/422 410/443/432 409/442/431 +f 406/439/428 411/444/433 405/438/426 +f 412/445/434 410/443/432 405/438/426 +f 411/444/433 412/445/434 405/438/426 +f 413/446/435 406/439/428 407/440/429 +f 411/444/433 406/439/428 414/447/436 +f 406/439/428 413/446/435 414/447/436 +f 415/448/437 408/441/430 409/442/431 +f 410/443/432 416/449/438 409/442/431 +f 410/443/432 412/445/434 417/450/439 +f 416/449/438 410/443/432 417/450/439 +f 418/451/440 415/448/437 409/442/431 +f 416/449/438 418/451/440 409/442/431 +f 411/444/433 419/452/441 412/445/434 +f 419/452/441 417/450/439 412/445/434 +f 411/444/433 414/447/436 420/453/442 +f 419/452/441 411/444/433 420/453/442 +f 421/454/443 415/448/437 418/451/440 +f 416/449/438 422/455/444 418/451/440 +f 422/455/444 416/449/438 417/450/439 +f 423/456/445 421/454/443 418/451/440 +f 422/455/444 423/456/445 418/451/440 +f 419/452/441 424/457/446 417/450/439 +f 424/457/446 419/452/441 420/453/442 +f 425/458/447 422/455/444 417/450/439 +f 424/457/446 425/458/447 417/450/439 +f 426/459/448 421/454/443 423/456/445 +f 422/455/444 427/460/449 423/456/445 +f 427/460/449 422/455/444 425/458/447 +f 428/461/450 426/459/448 423/456/445 +f 427/460/449 428/461/450 423/456/445 +f 429/462/451 424/457/446 420/453/442 +f 424/457/446 430/463/452 425/458/447 +f 430/463/452 424/457/446 429/462/451 +f 431/464/453 427/460/449 425/458/447 +f 430/463/452 431/464/453 425/458/447 +f 432/465/454 426/459/448 428/461/450 +f 427/460/449 433/466/455 428/461/450 +f 433/466/455 427/460/449 431/464/453 +f 434/467/456 432/465/454 428/461/450 +f 433/466/455 434/467/456 428/461/450 +f 430/463/452 435/468/457 431/464/453 +f 436/469/458 433/466/455 431/464/453 +f 435/468/457 436/469/458 431/464/453 +f 437/470/459 430/463/452 429/462/451 +f 435/468/457 430/463/452 437/470/459 +f 432/465/454 434/467/456 438/471/460 +f 433/466/455 439/472/461 434/467/456 +f 433/466/455 436/469/458 439/472/461 +f 434/467/456 440/473/462 438/471/460 +f 439/472/461 440/473/462 434/467/456 +f 436/469/458 435/468/457 441/474/463 +f 436/469/458 441/474/463 439/472/461 +f 442/475/464 435/468/457 437/470/459 +f 435/468/457 443/476/465 441/474/463 +f 435/468/457 442/475/464 443/476/465 +f 438/471/460 440/473/462 444/477/466 +f 440/473/462 439/472/461 445/478/467 +f 440/473/462 445/478/467 444/477/466 +f 439/472/461 441/474/463 446/479/468 +f 439/472/461 446/479/468 445/478/467 +f 447/480/469 442/475/464 437/470/459 +f 443/476/465 448/481/470 441/474/463 +f 442/475/464 449/482/471 443/476/465 +f 443/476/465 449/482/471 448/481/470 +f 442/475/464 447/480/469 449/482/471 +f 441/474/463 450/483/472 446/479/468 +f 448/481/470 450/483/472 441/474/463 +f 451/484/473 444/477/466 445/478/467 +f 446/479/468 452/485/474 445/478/467 +f 452/485/474 446/479/468 450/483/472 +f 453/486/475 451/484/473 445/478/467 +f 452/485/474 453/486/475 445/478/467 +f 448/481/470 454/487/476 450/483/472 +f 449/482/471 455/488/477 448/481/470 +f 454/487/476 448/481/470 455/488/477 +f 456/489/478 452/485/474 450/483/472 +f 454/487/476 456/489/478 450/483/472 +f 447/480/469 457/490/479 449/482/471 +f 449/482/471 457/490/479 455/488/477 +f 407/440/429 316/325/427 319/328/480 +f 451/484/473 453/486/475 458/491/481 +f 453/486/475 452/485/474 459/492/482 +f 458/491/481 453/486/475 459/492/482 +f 413/446/435 407/440/429 460/493/483 +f 460/493/483 407/440/429 319/328/480 +f 461/494/484 452/485/474 456/489/478 +f 459/492/482 452/485/474 461/494/484 +f 462/495/485 456/489/478 454/487/476 +f 462/495/485 461/494/484 456/489/478 +f 463/496/486 451/484/473 458/491/481 +f 464/497/487 454/487/476 455/488/477 +f 465/498/488 462/495/485 454/487/476 +f 465/498/488 454/487/476 464/497/487 +f 466/499/489 459/492/482 461/494/484 +f 467/500/490 414/447/436 413/446/435 +f 462/495/485 468/501/491 461/494/484 +f 461/494/484 469/502/492 466/499/489 +f 468/501/491 469/502/492 461/494/484 +f 457/490/479 470/503/493 455/488/477 +f 465/498/488 471/504/494 462/495/485 +f 471/504/494 468/501/491 462/495/485 +f 447/480/469 472/505/495 457/490/479 +f 473/506/496 465/498/488 464/497/487 +f 474/507/497 464/497/487 455/488/477 +f 470/503/493 474/507/497 455/488/477 +f 475/508/498 420/453/442 414/447/436 +f 467/500/490 475/508/498 414/447/436 +f 476/509/499 471/504/494 465/498/488 +f 473/506/496 476/509/499 465/498/488 +f 469/502/492 301/510/500 466/499/489 +f 301/510/500 469/502/492 468/501/491 +f 299/511/501 468/501/491 471/504/494 +f 299/511/501 301/510/500 468/501/491 +f 477/512/502 473/506/496 464/497/487 +f 474/507/497 477/512/502 464/497/487 +f 297/513/503 471/504/494 476/509/499 +f 297/513/503 299/511/501 471/504/494 +f 478/514/504 476/509/499 473/506/496 +f 477/512/502 478/514/504 473/506/496 +f 294/515/505 297/513/503 476/509/499 +f 294/515/505 476/509/499 478/514/504 +f 457/490/479 479/516/506 470/503/493 +f 472/505/495 479/516/506 457/490/479 +f 480/517/507 429/462/451 420/453/442 +f 475/508/498 480/517/507 420/453/442 +f 293/518/508 294/515/505 478/514/504 +f 477/512/502 481/519/509 478/514/504 +f 477/512/502 474/507/497 481/519/509 +f 293/518/508 478/514/504 482/520/510 +f 481/519/509 482/520/510 478/514/504 +f 474/507/497 470/503/493 483/521/511 +f 479/516/506 483/521/511 470/503/493 +f 474/507/497 484/522/512 481/519/509 +f 484/522/512 474/507/497 483/521/511 +f 485/523/513 437/470/459 429/462/451 +f 485/523/513 447/480/469 437/470/459 +f 480/517/507 485/523/513 429/462/451 +f 290/524/514 293/518/508 482/520/510 +f 486/525/515 482/520/510 481/519/509 +f 487/526/516 481/519/509 484/522/512 +f 487/526/516 486/525/515 481/519/509 +f 289/527/517 290/524/514 482/520/510 +f 486/525/515 289/527/517 482/520/510 +f 484/522/512 483/521/511 488/528/518 +f 479/516/506 489/529/519 483/521/511 +f 489/529/519 488/528/518 483/521/511 +f 490/530/520 487/526/516 484/522/512 +f 490/530/520 484/522/512 488/528/518 +f 472/505/495 491/531/521 479/516/506 +f 491/531/521 489/529/519 479/516/506 +f 289/527/517 486/525/515 492/532/522 +f 487/526/516 493/533/523 486/525/515 +f 487/526/516 490/530/520 493/533/523 +f 493/533/523 492/532/522 486/525/515 +f 490/530/520 488/528/518 494/534/524 +f 490/530/520 495/535/525 493/533/523 +f 495/535/525 490/530/520 494/534/524 +f 489/529/519 496/536/526 488/528/518 +f 496/536/526 494/534/524 488/528/518 +f 286/537/527 289/527/517 492/532/522 +f 491/531/521 497/538/528 489/529/519 +f 497/538/528 496/536/526 489/529/519 +f 498/539/529 492/532/522 493/533/523 +f 499/540/530 493/533/523 495/535/525 +f 499/540/530 498/539/529 493/533/523 +f 285/541/531 286/537/527 492/532/522 +f 498/539/529 285/541/531 492/532/522 +f 495/535/525 494/534/524 500/542/532 +f 496/536/526 501/543/533 494/534/524 +f 501/543/533 500/542/532 494/534/524 +f 502/544/534 499/540/530 495/535/525 +f 502/544/534 495/535/525 500/542/532 +f 497/538/528 503/545/535 496/536/526 +f 503/545/535 501/543/533 496/536/526 +f 282/546/536 285/541/531 498/539/529 +f 472/505/495 447/480/469 504/547/537 +f 491/531/521 472/505/495 504/547/537 +f 447/480/469 485/523/513 504/547/537 +f 505/548/538 413/446/435 460/493/483 +f 505/548/538 467/500/490 413/446/435 +f 499/540/530 506/549/539 498/539/529 +f 499/540/530 502/544/534 506/549/539 +f 507/550/540 282/546/536 498/539/529 +f 506/549/539 507/550/540 498/539/529 +f 502/544/534 500/542/532 508/551/541 +f 501/543/533 509/552/542 500/542/532 +f 509/552/542 508/551/541 500/542/532 +f 502/544/534 510/553/543 506/549/539 +f 510/553/543 502/544/534 508/551/541 +f 503/545/535 511/554/544 501/543/533 +f 511/554/544 509/552/542 501/543/533 +f 280/555/545 282/546/536 507/550/540 +f 506/549/539 512/556/546 507/550/540 +f 506/549/539 510/553/543 512/556/546 +f 513/557/547 280/555/545 507/550/540 +f 512/556/546 513/557/547 507/550/540 +f 510/553/543 508/551/541 514/558/548 +f 509/552/542 515/559/549 508/551/541 +f 515/559/549 514/558/548 508/551/541 +f 510/553/543 516/560/550 512/556/546 +f 516/560/550 510/553/543 514/558/548 +f 511/554/544 517/561/551 509/552/542 +f 517/561/551 515/559/549 509/552/542 +f 278/562/552 280/555/545 513/557/547 +f 512/556/546 518/563/553 513/557/547 +f 512/556/546 516/560/550 518/563/553 +f 519/564/554 278/562/552 513/557/547 +f 518/563/553 519/564/554 513/557/547 +f 516/560/550 514/558/548 520/565/555 +f 514/558/548 515/559/549 521/566/556 +f 520/565/555 514/558/548 521/566/556 +f 516/560/550 522/567/557 518/563/553 +f 522/567/557 516/560/550 520/565/555 +f 523/568/558 515/559/549 517/561/551 +f 523/568/558 521/566/556 515/559/549 +f 491/531/521 524/569/559 497/538/528 +f 524/569/559 491/531/521 504/547/537 +f 276/570/560 278/562/552 519/564/554 +f 518/563/553 525/571/561 519/564/554 +f 518/563/553 522/567/557 526/572/562 +f 525/571/561 518/563/553 526/572/562 +f 527/573/563 276/570/560 519/564/554 +f 525/571/561 527/573/563 519/564/554 +f 522/567/557 520/565/555 372/574/564 +f 526/572/562 522/567/557 372/574/564 +f 503/545/535 497/538/528 528/575/565 +f 524/569/559 528/575/565 497/538/528 +f 520/565/555 521/566/556 373/576/566 +f 373/576/566 521/566/556 523/568/558 +f 371/577/567 372/574/564 520/565/555 +f 371/577/567 520/565/555 373/576/566 +f 273/578/568 276/570/560 527/573/563 +f 525/571/561 529/579/569 527/573/563 +f 525/571/561 526/572/562 530/580/570 +f 529/579/569 525/571/561 530/580/570 +f 503/545/535 531/581/571 511/554/544 +f 531/581/571 503/545/535 528/575/565 +f 532/582/572 273/578/568 527/573/563 +f 529/579/569 532/582/572 527/573/563 +f 526/572/562 372/574/564 368/583/573 +f 530/580/570 526/572/562 368/583/573 +f 273/578/568 532/582/572 533/584/574 +f 529/579/569 534/585/575 532/582/572 +f 534/585/575 533/584/574 532/582/572 +f 517/561/551 511/554/544 535/586/576 +f 529/579/569 530/580/570 369/587/577 +f 369/587/577 530/580/570 368/583/573 +f 534/585/575 529/579/569 369/587/577 +f 274/588/578 273/578/568 533/584/574 +f 534/585/575 369/587/577 370/589/579 +f 523/568/558 517/561/551 536/590/580 +f 517/561/551 535/586/576 536/590/580 +f 460/493/483 319/328/480 537/591/581 +f 319/328/480 321/330/582 537/591/581 +f 538/592/583 537/591/581 321/330/582 +f 322/331/584 538/592/583 321/330/582 +f 460/493/483 537/591/581 539/593/585 +f 505/548/538 460/493/483 539/593/585 +f 538/592/583 322/331/584 540/594/586 +f 538/592/583 541/595/587 537/591/581 +f 541/595/587 539/593/585 537/591/581 +f 322/331/584 325/334/588 540/594/586 +f 538/592/583 540/594/586 542/596/589 +f 541/595/587 538/592/583 542/596/589 +f 543/597/590 540/594/586 325/334/588 +f 544/598/591 542/596/589 540/594/586 +f 543/597/590 544/598/591 540/594/586 +f 505/548/538 539/593/585 545/599/592 +f 467/500/490 505/548/538 545/599/592 +f 326/335/593 543/597/590 325/334/588 +f 541/595/587 546/600/594 539/593/585 +f 546/600/594 545/599/592 539/593/585 +f 531/581/571 547/601/595 511/554/544 +f 511/554/544 547/601/595 535/586/576 +f 541/595/587 542/596/589 548/602/596 +f 546/600/594 541/595/587 548/602/596 +f 544/598/591 549/603/597 542/596/589 +f 549/603/597 548/602/596 542/596/589 +f 467/500/490 545/599/592 550/604/598 +f 475/508/498 467/500/490 550/604/598 +f 480/517/507 475/508/498 550/604/598 +f 546/600/594 551/605/599 545/599/592 +f 551/605/599 550/604/598 545/599/592 +f 546/600/594 548/602/596 552/606/600 +f 551/605/599 546/600/594 552/606/600 +f 549/603/597 553/607/601 548/602/596 +f 553/607/601 552/606/600 548/602/596 +f 551/605/599 554/608/602 550/604/598 +f 554/608/602 551/605/599 552/606/600 +f 376/609/603 523/568/558 536/590/580 +f 555/610/604 480/517/507 550/604/598 +f 554/608/602 555/610/604 550/604/598 +f 485/523/513 480/517/507 555/610/604 +f 554/608/602 524/569/559 555/610/604 +f 504/547/537 485/523/513 555/610/604 +f 524/569/559 504/547/537 555/610/604 +f 549/603/597 544/598/591 556/611/605 +f 553/607/601 549/603/597 557/612/606 +f 549/603/597 556/611/605 557/612/606 +f 553/607/601 558/613/607 552/606/600 +f 558/613/607 553/607/601 557/612/606 +f 531/581/571 558/613/607 547/601/595 +f 559/614/608 554/608/602 552/606/600 +f 558/613/607 559/614/608 552/606/600 +f 524/569/559 554/608/602 559/614/608 +f 558/613/607 531/581/571 559/614/608 +f 528/575/565 524/569/559 559/614/608 +f 531/581/571 528/575/565 559/614/608 +f 560/615/609 558/613/607 557/612/606 +f 558/613/607 560/615/609 547/601/595 +f 544/598/591 543/597/590 561/616/610 +f 544/598/591 561/616/610 556/611/605 +f 560/615/609 557/612/606 562/617/611 +f 543/597/590 326/335/593 563/618/612 +f 543/597/590 563/618/612 561/616/610 +f 562/617/611 557/612/606 564/619/613 +f 557/612/606 556/611/605 564/619/613 +f 556/611/605 561/616/610 564/619/613 +f 547/601/595 560/615/609 565/620/614 +f 535/586/576 547/601/595 565/620/614 +f 565/620/614 560/615/609 562/617/611 +f 535/586/576 565/620/614 566/621/615 +f 535/586/576 566/621/615 536/590/580 +f 565/620/614 562/617/611 567/622/616 +f 565/620/614 567/622/616 566/621/615 +f 562/617/611 564/619/613 568/623/617 +f 562/617/611 568/623/617 567/622/616 +f 536/590/580 566/621/615 569/624/618 +f 570/625/619 376/609/603 536/590/580 +f 570/625/619 536/590/580 569/624/618 +f 566/621/615 567/622/616 571/626/620 +f 569/624/618 566/621/615 571/626/620 +f 564/619/613 572/627/621 568/623/617 +f 567/622/616 568/623/617 573/628/622 +f 571/626/620 567/622/616 573/628/622 +f 573/628/622 568/623/617 574/629/623 +f 568/623/617 572/627/621 574/629/623 +f 569/624/618 575/630/624 570/625/619 +f 569/624/618 571/626/620 575/630/624 +f 571/626/620 573/628/622 576/631/625 +f 571/626/620 576/631/625 575/630/624 +f 573/628/622 574/629/623 577/632/626 +f 573/628/622 577/632/626 576/631/625 +f 575/630/624 395/633/627 570/625/619 +f 574/629/623 572/627/621 578/634/628 +f 574/629/623 579/635/629 577/632/626 +f 574/629/623 580/636/630 579/635/629 +f 580/636/630 574/629/623 578/634/628 +f 581/637/631 575/630/624 576/631/625 +f 575/630/624 581/637/631 395/633/627 +f 564/619/613 582/638/632 572/627/621 +f 582/638/632 578/634/628 572/627/621 +f 561/616/610 582/638/632 564/619/613 +f 561/616/610 563/618/612 582/638/632 +f 570/625/619 395/633/627 376/609/633 +f 576/631/625 577/632/626 583/639/634 +f 577/632/626 579/635/629 584/640/635 +f 583/639/634 577/632/626 584/640/635 +f 585/641/636 581/637/631 576/631/625 +f 585/641/636 576/631/625 583/639/634 +f 326/335/593 328/337/637 563/618/612 +f 580/636/630 586/642/638 579/635/629 +f 581/637/631 396/643/639 395/633/627 +f 580/636/630 578/634/628 587/644/640 +f 584/640/635 579/635/629 588/645/641 +f 579/635/629 586/642/638 588/645/641 +f 395/633/627 377/646/642 376/609/633 +f 580/636/630 589/647/643 586/642/638 +f 589/647/643 580/636/630 587/644/640 +f 590/648/644 587/644/640 578/634/628 +f 582/638/632 590/648/644 578/634/628 +f 563/618/612 590/648/644 582/638/632 +f 563/618/612 328/337/637 590/648/644 +f 586/642/638 591/649/645 588/645/641 +f 589/647/643 591/649/645 586/642/638 +f 589/647/643 335/344/646 591/649/645 +f 589/647/643 587/644/640 332/341/647 +f 335/344/646 589/647/643 332/341/647 +f 591/649/645 592/650/648 588/645/641 +f 331/340/649 332/341/647 587/644/640 +f 590/648/644 331/340/649 587/644/640 +f 328/337/637 331/340/649 590/648/644 +f 335/344/646 336/345/650 591/649/645 +f 591/649/645 336/345/650 592/650/648 +f 336/345/650 339/348/651 592/650/648 +f 593/651/652 594/652/653 595/653/654 +f 596/654/655 593/651/652 595/653/654 +f 595/653/654 597/496/656 596/654/655 +f 593/651/652 596/654/655 598/499/657 +f 597/496/656 599/491/658 596/654/655 +f 596/654/655 599/491/658 600/492/659 +f 598/499/657 596/654/655 600/492/659 +f 601/510/660 593/651/652 598/499/657 +f 601/655/661 598/656/662 301/657/663 +f 598/656/662 466/658/664 301/657/663 +f 598/656/662 600/659/665 466/658/664 +f 600/659/665 459/660/666 466/658/664 +f 523/661/667 376/662/668 375/663/668 +f 363/664/669 523/661/667 375/663/668 +f 363/664/669 375/663/668 360/665/668 +f 523/661/667 363/664/669 362/666/670 +f 373/667/670 523/661/667 362/666/670 +f 374/668/671 602/669/672 603/670/673 +f 375/671/674 374/668/671 603/670/673 +f 357/672/675 360/673/676 375/671/677 +f 603/670/678 357/672/675 375/671/677 +f 603/670/679 602/669/680 358/674/681 +f 357/672/682 603/670/679 358/674/681 +f 258/675/683 257/676/684 604/677/246 +f 258/675/683 604/677/246 605/678/685 +f 258/675/683 605/678/685 606/679/237 +f 258/675/683 606/679/237 607/680/243 +f 258/675/683 607/680/243 608/681/686 +f 258/675/683 608/681/686 609/682/243 +f 258/675/683 609/682/243 610/683/687 +f 611/684/688 258/675/683 610/683/687 +f 612/685/689 611/684/688 610/683/687 +f 612/685/689 610/683/687 613/686/690 +f 612/685/689 613/686/690 614/687/243 +f 612/685/689 614/687/243 615/688/687 +f 612/685/689 615/688/687 616/689/691 +f 617/690/692 612/685/689 616/689/691 +f 617/690/692 616/689/691 618/691/693 +f 26/26/694 274/692/695 619/693/696 +f 620/694/697 26/26/694 619/693/696 +f 620/694/697 619/693/696 621/695/698 +f 622/696/699 620/694/697 621/695/698 +f 622/696/699 621/695/698 623/697/700 +f 624/698/701 622/696/699 623/697/700 +f 624/698/701 623/697/700 625/699/702 +f 626/700/703 624/698/701 625/699/702 +f 626/700/703 625/699/702 627/701/704 +f 628/702/705 626/700/703 627/701/704 +f 628/702/705 627/701/704 629/703/706 +f 627/701/704 630/704/707 629/703/706 +f 629/703/706 630/704/707 631/705/708 +f 632/706/709 629/703/706 631/705/708 +f 632/706/709 631/705/708 633/707/710 +f 631/705/708 634/708/711 633/707/710 +f 633/707/710 634/708/711 635/709/712 +f 636/710/713 633/707/710 635/709/712 +f 636/710/713 635/709/712 637/711/714 +f 635/709/712 638/712/715 637/711/714 +f 637/711/714 638/712/715 639/713/716 +f 640/714/717 637/711/714 639/713/716 +f 640/714/717 639/713/716 641/715/718 +f 639/713/716 642/716/719 641/715/718 +f 641/715/718 642/716/719 643/717/720 +f 642/716/719 644/718/721 643/717/720 +f 643/717/720 644/718/721 645/719/722 +f 644/718/721 646/720/723 645/719/722 +f 645/719/722 646/720/723 647/721/724 +f 646/720/723 648/722/725 647/721/724 +f 647/721/724 648/722/725 304/723/726 +f 648/722/725 305/724/727 304/723/726 +f 307/725/728 306/726/729 649/727/730 +f 650/728/731 307/725/728 649/727/730 +f 650/728/731 649/727/730 651/729/732 +f 649/727/730 652/730/733 651/729/732 +f 651/729/732 652/730/733 653/731/734 +f 654/732/735 651/729/732 653/731/734 +f 654/732/735 653/731/734 655/733/736 +f 653/731/734 656/734/737 655/733/736 +f 655/733/736 656/734/737 657/735/738 +f 658/736/739 655/733/736 657/735/738 +f 658/736/739 657/735/738 659/737/740 +f 657/735/738 660/738/741 659/737/740 +f 661/739/742 659/737/740 660/738/741 +f 662/740/743 661/739/742 660/738/741 +f 661/739/742 662/740/743 663/741/744 +f 664/742/745 661/739/742 663/741/744 +f 665/743/746 664/742/745 663/741/744 +f 666/744/747 665/743/746 663/741/744 +f 665/743/746 666/744/747 667/745/748 +f 668/746/749 665/743/746 667/745/748 +f 668/746/749 667/745/748 669/747/750 +f 670/748/751 668/746/749 669/747/750 +f 671/749/752 670/748/751 669/747/750 +f 672/750/753 671/749/752 669/747/750 +f 671/749/752 672/750/753 673/751/754 +f 674/752/755 671/749/752 673/751/754 +f 674/752/755 673/751/754 675/753/756 +f 673/751/754 676/754/757 675/753/756 +f 675/753/756 676/754/757 677/755/758 +f 678/756/759 675/753/756 677/755/758 +f 338/757/760 678/756/759 677/755/758 +f 339/758/761 338/757/760 677/755/758 +f 340/759/762 307/760/763 650/761/764 +f 679/762/765 340/759/762 650/761/764 +f 679/762/765 650/761/764 651/763/766 +f 680/764/767 679/762/765 651/763/766 +f 680/764/767 651/763/766 654/765/768 +f 681/766/769 680/764/767 654/765/768 +f 681/766/769 654/765/768 682/767/770 +f 654/765/768 655/768/771 682/767/770 +f 682/767/770 655/768/771 658/769/772 +f 683/770/773 682/767/770 658/769/772 +f 683/770/773 658/769/772 659/771/774 +f 684/772/775 683/770/773 659/771/774 +f 684/772/775 659/771/774 685/773/776 +f 659/771/774 661/774/777 685/773/776 +f 685/773/776 661/774/777 686/775/778 +f 661/774/777 664/776/779 686/775/778 +f 686/775/778 664/776/779 687/777/780 +f 664/776/779 665/778/781 687/777/780 +f 687/777/780 665/778/781 688/779/782 +f 665/778/781 668/780/783 688/779/782 +f 688/779/782 668/780/783 670/781/784 +f 689/782/785 688/779/782 670/781/784 +f 689/782/785 670/781/784 671/783/786 +f 690/784/787 689/782/785 671/783/786 +f 690/784/787 671/783/786 691/785/788 +f 671/783/786 674/786/789 691/785/788 +f 691/785/788 674/786/789 692/787/790 +f 674/786/789 675/788/791 692/787/790 +f 692/787/790 675/788/791 693/789/792 +f 675/788/791 678/790/793 693/789/792 +f 693/789/792 678/790/793 356/791/794 +f 678/790/793 338/792/795 356/791/794 +f 619/793/796 274/794/797 533/795/798 +f 694/796/799 619/793/796 533/795/798 +f 694/796/799 533/795/798 534/797/800 +f 694/796/799 695/798/801 619/793/796 +f 696/799/802 694/796/799 534/797/800 +f 695/798/801 694/796/799 696/799/802 +f 697/800/803 696/799/802 534/797/800 +f 697/800/803 534/797/800 370/801/804 +f 697/800/803 698/802/805 696/799/802 +f 699/803/806 695/798/801 696/799/802 +f 699/803/806 696/799/802 698/802/805 +f 695/798/801 621/804/807 619/793/796 +f 700/805/808 698/802/805 697/800/803 +f 701/806/809 699/803/806 698/802/805 +f 701/806/809 698/802/805 700/805/808 +f 702/807/810 695/798/801 699/803/806 +f 695/798/801 702/807/810 621/804/807 +f 703/808/811 701/806/809 700/805/808 +f 699/803/806 701/806/809 704/809/812 +f 704/809/812 702/807/810 699/803/806 +f 705/810/813 701/806/809 703/808/811 +f 701/806/809 705/810/813 704/809/812 +f 702/807/810 623/811/814 621/804/807 +f 706/812/815 702/807/810 704/809/812 +f 702/807/810 706/812/815 623/811/814 +f 707/813/816 706/812/815 704/809/812 +f 708/814/817 707/813/816 704/809/812 +f 705/810/813 708/814/817 704/809/812 +f 709/815/818 705/810/813 703/808/811 +f 708/814/817 705/810/813 709/815/818 +f 709/815/818 703/808/811 710/816/819 +f 706/812/815 625/817/820 623/811/814 +f 711/818/821 706/812/815 707/813/816 +f 706/812/815 711/818/821 625/817/820 +f 708/814/817 712/819/822 707/813/816 +f 709/815/818 710/816/819 713/820/823 +f 714/821/824 708/814/817 709/815/818 +f 708/814/817 714/821/824 712/819/822 +f 715/822/825 711/818/821 707/813/816 +f 712/819/822 715/822/825 707/813/816 +f 711/818/821 627/823/826 625/817/820 +f 716/824/827 709/815/818 713/820/823 +f 714/821/824 709/815/818 716/824/827 +f 717/825/828 711/818/821 715/822/825 +f 711/818/821 717/825/828 627/823/826 +f 712/819/822 718/826/829 715/822/825 +f 719/827/830 717/825/828 715/822/825 +f 718/826/829 719/827/830 715/822/825 +f 714/821/824 720/828/831 712/819/822 +f 712/819/822 720/828/831 718/826/829 +f 720/828/831 714/821/824 721/829/832 +f 721/829/832 714/821/824 716/824/827 +f 717/825/828 630/830/833 627/823/826 +f 717/825/828 719/827/830 722/831/834 +f 718/826/829 723/832/835 719/827/830 +f 723/832/835 722/831/834 719/827/830 +f 717/825/828 724/833/836 630/830/833 +f 724/833/836 717/825/828 722/831/834 +f 720/828/831 725/834/837 718/826/829 +f 723/832/835 718/826/829 725/834/837 +f 726/835/838 720/828/831 721/829/832 +f 720/828/831 726/835/838 725/834/837 +f 724/833/836 631/836/839 630/830/833 +f 727/837/840 724/833/836 722/831/834 +f 634/838/841 631/836/839 724/833/836 +f 727/837/840 634/838/841 724/833/836 +f 723/832/835 728/839/842 722/831/834 +f 729/840/843 723/832/835 725/834/837 +f 723/832/835 729/840/843 728/839/842 +f 730/841/844 727/837/840 722/831/834 +f 728/839/842 730/841/844 722/831/834 +f 726/835/838 731/842/845 725/834/837 +f 729/840/843 725/834/837 731/842/845 +f 727/837/840 732/843/846 634/838/841 +f 727/837/840 730/841/844 733/844/847 +f 732/843/846 727/837/840 733/844/847 +f 728/839/842 734/845/848 730/841/844 +f 734/845/848 733/844/847 730/841/844 +f 729/840/843 735/846/849 728/839/842 +f 734/845/848 728/839/842 735/846/849 +f 732/843/846 635/847/850 634/838/841 +f 736/848/851 729/840/843 731/842/845 +f 735/846/849 729/840/843 736/848/851 +f 737/849/852 732/843/846 733/844/847 +f 638/850/853 635/847/850 732/843/846 +f 737/849/852 638/850/853 732/843/846 +f 734/845/848 738/851/854 733/844/847 +f 739/852/855 734/845/848 735/846/849 +f 734/845/848 739/852/855 738/851/854 +f 740/853/856 737/849/852 733/844/847 +f 738/851/854 740/853/856 733/844/847 +f 741/854/857 735/846/849 736/848/851 +f 739/852/855 735/846/849 741/854/857 +f 639/855/858 638/850/853 737/849/852 +f 737/849/852 740/853/856 742/856/859 +f 738/851/854 743/857/860 740/853/856 +f 743/857/860 742/856/859 740/853/856 +f 744/858/861 639/855/858 737/849/852 +f 744/858/861 737/849/852 742/856/859 +f 739/852/855 745/859/862 738/851/854 +f 746/860/863 739/852/855 741/854/857 +f 745/859/862 739/852/855 746/860/863 +f 747/861/864 743/857/860 738/851/854 +f 745/859/862 747/861/864 738/851/854 +f 642/862/865 639/855/858 744/858/861 +f 744/858/861 742/856/859 748/863/866 +f 742/856/859 743/857/860 748/863/866 +f 749/864/867 642/862/865 744/858/861 +f 749/864/867 744/858/861 748/863/866 +f 743/857/860 747/861/864 750/865/868 +f 743/857/860 750/865/868 748/863/866 +f 747/861/864 745/859/862 751/866/869 +f 751/866/869 745/859/862 746/860/863 +f 747/861/864 752/867/870 750/865/868 +f 752/867/870 747/861/864 753/868/871 +f 753/868/871 747/861/864 751/866/869 +f 644/869/872 642/862/865 749/864/867 +f 749/864/867 748/863/866 754/870/873 +f 754/870/873 748/863/866 750/865/868 +f 755/871/874 644/869/872 749/864/867 +f 755/871/874 749/864/867 754/870/873 +f 752/867/870 756/872/875 750/865/868 +f 757/873/876 752/867/870 753/868/871 +f 758/874/877 754/870/873 750/865/868 +f 756/872/875 758/874/877 750/865/868 +f 756/872/875 752/867/870 759/875/878 +f 752/867/870 757/873/876 759/875/878 +f 646/876/879 644/869/872 755/871/874 +f 754/870/873 760/877/880 755/871/874 +f 754/870/873 758/874/877 760/877/880 +f 761/878/881 646/876/879 755/871/874 +f 760/877/880 761/878/881 755/871/874 +f 758/874/877 756/872/875 762/879/882 +f 758/874/877 762/879/882 760/877/880 +f 763/880/883 756/872/875 759/875/878 +f 756/872/875 763/880/883 762/879/882 +f 764/881/884 646/876/879 761/878/881 +f 760/877/880 764/881/884 761/878/881 +f 759/875/878 757/873/876 765/882/885 +f 766/883/886 763/880/883 759/875/878 +f 760/877/880 762/879/882 767/884/887 +f 764/881/884 760/877/880 767/884/887 +f 763/880/883 768/885/888 762/879/882 +f 768/885/888 763/880/883 766/883/886 +f 767/884/887 762/879/882 769/886/889 +f 768/885/888 769/886/889 762/879/882 +f 766/883/886 759/875/878 770/887/890 +f 770/887/890 759/875/878 765/882/885 +f 771/888/891 767/884/887 769/886/889 +f 769/886/889 768/885/888 451/889/892 +f 769/886/889 451/889/892 771/888/891 +f 772/890/893 716/824/827 713/820/823 +f 721/829/832 716/824/827 772/890/893 +f 773/891/894 768/885/888 766/883/886 +f 768/885/888 444/892/895 451/889/892 +f 444/892/895 768/885/888 773/891/894 +f 774/893/896 766/883/886 770/887/890 +f 775/894/897 770/887/890 765/882/885 +f 770/887/890 775/894/897 774/893/896 +f 773/891/894 766/883/886 776/895/898 +f 766/883/886 774/893/896 776/895/898 +f 451/889/892 463/896/899 771/888/891 +f 726/835/838 721/829/832 777/897/900 +f 777/897/900 721/829/832 772/890/893 +f 438/898/901 444/892/895 773/891/894 +f 438/898/901 773/891/894 776/895/898 +f 778/899/902 775/894/897 765/882/885 +f 779/900/903 776/895/898 774/893/896 +f 432/901/904 438/898/901 776/895/898 +f 776/895/898 779/900/903 432/901/904 +f 775/894/897 780/902/905 774/893/896 +f 780/902/905 779/900/903 774/893/896 +f 726/835/838 781/903/906 731/842/845 +f 781/903/906 726/835/838 777/897/900 +f 775/894/897 782/904/907 780/902/905 +f 782/904/907 775/894/897 778/899/902 +f 783/905/908 778/899/902 765/882/885 +f 779/900/903 426/906/909 432/901/904 +f 784/907/910 779/900/903 780/902/905 +f 779/900/903 784/907/910 426/906/909 +f 782/904/907 785/908/911 780/902/905 +f 785/908/911 784/907/910 780/902/905 +f 736/848/851 731/842/845 786/909/912 +f 781/903/906 786/909/912 731/842/845 +f 787/910/913 782/904/907 778/899/902 +f 782/904/907 788/911/914 785/908/911 +f 788/911/914 782/904/907 787/910/913 +f 789/912/915 787/910/913 778/899/902 +f 783/905/908 789/912/915 778/899/902 +f 784/907/910 421/913/916 426/906/909 +f 790/914/917 784/907/910 785/908/911 +f 784/907/910 790/914/917 421/913/916 +f 788/911/914 791/915/918 785/908/911 +f 791/915/918 790/914/917 785/908/911 +f 741/854/857 736/848/851 792/916/919 +f 792/916/919 736/848/851 786/909/912 +f 793/917/920 788/911/914 787/910/913 +f 789/912/915 794/918/921 787/910/913 +f 794/918/921 793/917/920 787/910/913 +f 795/919/922 791/915/918 788/911/914 +f 796/920/923 795/919/922 788/911/914 +f 796/920/923 788/911/914 793/917/920 +f 790/914/917 415/921/924 421/913/916 +f 797/922/925 790/914/917 791/915/918 +f 795/919/922 797/922/925 791/915/918 +f 790/914/917 797/922/925 415/921/924 +f 746/860/863 741/854/857 798/923/926 +f 798/923/926 741/854/857 792/916/919 +f 796/920/923 799/924/927 795/919/922 +f 797/922/925 795/919/922 800/925/928 +f 799/924/927 800/925/928 795/919/922 +f 801/926/929 796/920/923 793/917/920 +f 801/926/929 793/917/920 794/918/921 +f 796/920/923 801/926/929 799/924/927 +f 797/922/925 408/927/930 415/921/924 +f 751/866/869 746/860/863 802/928/931 +f 802/928/931 746/860/863 798/923/926 +f 803/929/932 797/922/925 800/925/928 +f 797/922/925 803/929/932 408/927/930 +f 799/924/927 804/930/933 800/925/928 +f 805/931/934 803/929/932 800/925/928 +f 753/868/871 751/866/869 806/932/935 +f 806/932/935 751/866/869 802/928/931 +f 807/933/936 805/931/934 800/925/928 +f 804/930/933 807/933/936 800/925/928 +f 801/926/929 808/934/937 799/924/927 +f 794/918/921 789/912/915 809/935/938 +f 804/930/933 799/924/927 810/936/939 +f 799/924/927 808/934/937 810/936/939 +f 803/929/932 400/937/940 408/927/930 +f 803/929/932 805/931/934 400/937/940 +f 757/873/876 753/868/871 811/938/941 +f 765/882/885 757/873/876 811/938/941 +f 811/938/941 783/905/908 765/882/885 +f 811/938/941 753/868/871 806/932/935 +f 783/905/908 811/938/941 806/932/935 +f 812/939/942 801/926/929 794/918/921 +f 808/934/937 801/926/929 812/939/942 +f 649/727/943 805/931/934 807/933/936 +f 652/730/944 807/933/936 804/930/933 +f 652/730/944 649/727/943 807/933/936 +f 805/931/934 397/940/945 400/937/940 +f 805/931/934 649/727/943 397/940/945 +f 653/731/946 804/930/933 810/936/939 +f 653/731/946 652/730/944 804/930/933 +f 813/941/947 810/936/939 808/934/937 +f 656/734/948 653/731/946 810/936/939 +f 657/735/949 656/734/948 810/936/939 +f 813/941/947 657/735/949 810/936/939 +f 649/727/943 306/726/950 397/940/945 +f 812/939/942 794/918/921 814/942/951 +f 814/942/951 794/918/921 809/935/938 +f 815/943/952 813/941/947 808/934/937 +f 815/943/952 808/934/937 812/939/942 +f 657/735/949 813/941/947 660/738/953 +f 813/941/947 816/944/954 660/738/953 +f 813/941/947 815/943/952 816/944/954 +f 660/738/953 816/944/954 817/945/955 +f 815/943/952 818/946/956 816/944/954 +f 817/945/955 816/944/954 819/947/957 +f 816/944/954 818/946/956 819/947/957 +f 812/939/942 820/948/958 815/943/952 +f 820/948/958 818/946/956 815/943/952 +f 820/948/958 812/939/942 814/942/951 +f 662/740/959 660/738/953 817/945/955 +f 817/945/955 819/947/957 821/949/960 +f 819/947/957 818/946/956 822/950/961 +f 818/946/956 820/948/958 822/950/961 +f 662/740/959 817/945/955 823/951/962 +f 823/951/962 817/945/955 821/949/960 +f 789/912/915 783/905/908 824/952/963 +f 809/935/938 789/912/915 824/952/963 +f 824/952/963 783/905/908 806/932/935 +f 825/953/964 821/949/960 819/947/957 +f 822/950/961 825/953/964 819/947/957 +f 820/948/958 814/942/951 826/954/965 +f 826/954/965 814/942/951 809/935/938 +f 822/950/961 820/948/958 826/954/965 +f 663/741/966 662/740/959 823/951/962 +f 823/951/962 821/949/960 827/955/967 +f 663/741/966 823/951/962 828/956/968 +f 828/956/968 823/951/962 827/955/967 +f 821/949/960 825/953/964 829/957/969 +f 827/955/967 821/949/960 829/957/969 +f 825/953/964 822/950/961 830/958/970 +f 822/950/961 826/954/965 830/958/970 +f 829/957/969 825/953/964 831/959/971 +f 825/953/964 830/958/970 831/959/971 +f 666/744/972 663/741/966 828/956/968 +f 828/956/968 827/955/967 832/960/973 +f 829/957/969 833/961/974 827/955/967 +f 833/961/974 832/960/973 827/955/967 +f 666/744/972 828/956/968 834/962/975 +f 834/962/975 828/956/968 832/960/973 +f 829/957/969 831/959/971 835/963/976 +f 833/961/974 829/957/969 835/963/976 +f 667/745/977 666/744/972 834/962/975 +f 834/962/975 832/960/973 836/964/978 +f 667/745/977 834/962/975 837/965/979 +f 837/965/979 834/962/975 836/964/978 +f 835/963/976 831/959/971 838/966/980 +f 832/960/973 833/961/974 839/967/981 +f 836/964/978 832/960/973 839/967/981 +f 833/961/974 835/963/976 840/968/982 +f 839/967/981 833/961/974 840/968/982 +f 840/968/982 835/963/976 838/966/980 +f 669/747/983 667/745/977 837/965/979 +f 837/965/979 836/964/978 841/969/984 +f 669/747/983 837/965/979 842/970/985 +f 842/970/985 837/965/979 841/969/984 +f 836/964/978 839/967/981 843/971/986 +f 843/971/986 839/967/981 840/968/982 +f 841/969/984 836/964/978 843/971/986 +f 844/972/987 840/968/982 838/966/980 +f 845/973/988 843/971/986 840/968/982 +f 845/973/988 840/968/982 844/972/987 +f 672/750/989 669/747/983 842/970/985 +f 842/970/985 841/969/984 846/974/990 +f 847/975/991 826/954/965 809/935/938 +f 847/975/991 809/935/938 824/952/963 +f 841/969/984 843/971/986 848/976/992 +f 846/974/990 841/969/984 848/976/992 +f 672/750/989 842/970/985 849/977/993 +f 849/977/993 842/970/985 846/974/990 +f 843/971/986 845/973/988 850/978/994 +f 848/976/992 843/971/986 850/978/994 +f 830/958/970 826/954/965 851/979/995 +f 831/959/971 830/958/970 851/979/995 +f 826/954/965 847/975/991 851/979/995 +f 852/980/996 845/973/988 844/972/987 +f 850/978/994 845/973/988 853/981/997 +f 845/973/988 852/980/996 853/981/997 +f 673/751/998 672/750/989 849/977/993 +f 849/977/993 846/974/990 854/982/999 +f 848/976/992 855/983/1000 846/974/990 +f 848/976/992 850/978/994 855/983/1000 +f 855/983/1000 854/982/999 846/974/990 +f 673/751/998 849/977/993 856/984/1001 +f 856/984/1001 849/977/993 854/982/999 +f 831/959/971 857/985/1002 838/966/980 +f 857/985/1002 831/959/971 851/979/995 +f 850/978/994 853/981/997 858/986/1003 +f 850/978/994 858/986/1003 855/983/1000 +f 853/981/997 852/980/996 859/987/1004 +f 853/981/997 860/988/1005 858/986/1003 +f 853/981/997 859/987/1004 860/988/1005 +f 676/754/1006 673/751/998 856/984/1001 +f 856/984/1001 854/982/999 861/989/1007 +f 844/972/987 838/966/980 862/990/1008 +f 852/980/996 844/972/987 862/990/1008 +f 854/982/999 855/983/1000 863/991/1009 +f 861/989/1007 854/982/999 863/991/1009 +f 676/754/1006 856/984/1001 864/992/1010 +f 864/992/1010 856/984/1001 861/989/1007 +f 855/983/1000 858/986/1003 865/993/1011 +f 863/991/1009 855/983/1000 865/993/1011 +f 858/986/1003 860/988/1005 866/994/1012 +f 865/993/1011 858/986/1003 866/994/1012 +f 677/755/1013 676/754/1006 864/992/1010 +f 852/980/996 867/995/1014 859/987/1004 +f 867/995/1014 852/980/996 862/990/1008 +f 777/897/900 867/995/1014 781/903/906 +f 867/995/1014 862/990/1008 781/903/906 +f 864/992/1010 861/989/1007 588/996/1015 +f 588/996/1015 861/989/1007 863/991/1009 +f 859/987/1004 868/997/1016 860/988/1005 +f 677/755/1013 864/992/1010 592/998/1017 +f 592/998/1017 864/992/1010 588/996/1015 +f 584/999/1018 863/991/1009 865/993/1011 +f 584/999/1018 588/996/1015 863/991/1009 +f 866/994/1012 860/988/1005 869/1000/1019 +f 860/988/1005 868/997/1016 869/1000/1019 +f 583/1001/1020 865/993/1011 866/994/1012 +f 583/1001/1020 584/999/1018 865/993/1011 +f 339/758/1021 677/755/1013 592/998/1017 +f 585/1002/1022 583/1001/1020 866/994/1012 +f 859/987/1004 870/1003/1023 868/997/1016 +f 859/987/1004 867/995/1014 870/1003/1023 +f 867/995/1014 777/897/900 870/1003/1023 +f 870/1003/1023 777/897/900 772/890/893 +f 581/1004/1024 585/1002/1022 866/994/1012 +f 869/1000/1019 581/1004/1024 866/994/1012 +f 838/966/980 871/1005/1025 862/990/1008 +f 838/966/980 857/985/1002 871/1005/1025 +f 862/990/1008 871/1005/1025 781/903/906 +f 871/1005/1025 786/909/912 781/903/906 +f 581/1004/1024 869/1000/1019 872/1006/1026 +f 869/1000/1019 868/997/1016 873/1007/1027 +f 870/1003/1023 873/1007/1027 868/997/1016 +f 872/1006/1026 869/1000/1019 873/1007/1027 +f 396/1008/1028 581/1004/1024 872/1006/1026 +f 873/1007/1027 870/1003/1023 874/1009/1029 +f 870/1003/1023 772/890/893 874/1009/1029 +f 872/1006/1026 873/1007/1027 874/1009/1030 +f 875/1010/1031 872/1006/1026 874/1009/1030 +f 871/1005/1025 876/1011/1032 786/909/912 +f 857/985/1002 876/1011/1032 871/1005/1025 +f 876/1011/1032 792/916/919 786/909/912 +f 857/985/1002 851/979/995 877/1012/1033 +f 876/1011/1032 857/985/1002 877/1012/1033 +f 876/1011/1032 877/1012/1033 792/916/919 +f 851/979/995 847/975/991 877/1012/1033 +f 877/1012/1033 798/923/926 792/916/919 +f 847/975/991 878/1013/1034 877/1012/1033 +f 877/1012/1033 878/1013/1034 798/923/926 +f 878/1013/1034 847/975/991 824/952/963 +f 878/1013/1034 802/928/931 798/923/926 +f 878/1013/1034 824/952/963 806/932/935 +f 802/928/931 878/1013/1034 806/932/935 +f 359/1014/225 358/1015/225 879/1016/225 +f 879/1016/225 880/1017/225 359/1014/225 +f 880/1017/225 881/1018/225 359/1014/225 +f 880/1017/225 882/1019/1035 881/1018/225 +f 883/1020/1035 882/1019/1035 880/1017/225 +f 365/391/1036 364/390/1037 884/392/1038 +f 885/393/1039 365/391/1036 884/392/1038 +f 710/397/1040 885/393/1039 884/392/1038 +f 700/394/1041 365/391/1036 885/393/1039 +f 710/397/1040 884/392/1038 713/399/1042 +f 703/398/1043 885/393/1039 710/397/1040 +f 703/398/1043 700/394/1041 885/393/1039 +f 365/391/1036 700/394/1041 697/395/1044 +f 370/396/1045 365/391/1036 697/395/1044 +f 884/1021/1046 364/1022/1047 359/1023/1048 +f 881/1024/1049 884/1021/1046 359/1023/1048 +f 713/1025/1050 884/1021/1046 881/1024/1049 +f 882/1026/1051 713/1025/1050 881/1024/1049 +f 874/1027/1052 886/1028/1053 374/1029/1054 +f 875/1030/1055 874/1027/1052 374/1029/1054 +f 374/1029/1054 378/1031/1056 875/1030/1055 +f 378/1031/1057 396/1032/1058 872/1033/1059 +f 875/1030/1060 378/1031/1057 872/1033/1059 +f 595/1034/1061 594/1035/1062 887/1036/1063 +f 888/1037/1064 595/1034/1061 887/1036/1063 +f 888/1037/1064 887/1036/1063 889/881/1065 +f 597/896/1066 595/1034/1061 888/1037/1064 +f 887/1036/1063 890/876/1067 889/881/1065 +f 888/1037/1064 889/881/1065 891/884/1068 +f 892/888/1069 597/896/1066 888/1037/1064 +f 892/888/1069 888/1037/1064 891/884/1068 +f 601/1038/1070 301/1039/1071 593/1040/1072 +f 301/1039/1071 303/1041/1073 593/1040/1072 +f 593/1040/1072 303/1041/1073 594/1042/1074 +f 303/1041/1073 305/1043/1075 594/1042/1074 +f 305/1043/1075 648/1044/1076 594/1042/1074 +f 648/1044/1076 887/1045/1077 594/1042/1074 +f 648/1044/1076 646/1046/1078 887/1045/1077 +f 646/1046/1078 890/1047/1079 887/1045/1077 +f 600/1048/1080 599/1049/1081 459/1050/1082 +f 599/1049/1081 458/1051/1083 459/1050/1082 +f 599/1049/1081 597/1052/1084 458/1051/1083 +f 597/1052/1084 463/1053/1085 458/1051/1083 +f 771/1054/1086 463/1053/1085 597/1052/1084 +f 892/1055/1087 771/1054/1086 597/1052/1084 +f 767/1056/1088 771/1054/1086 892/1055/1087 +f 891/1057/1089 767/1056/1088 892/1055/1087 +f 890/1058/1090 646/1059/1091 889/1060/1092 +f 646/1059/1091 764/1061/1093 889/1060/1092 +f 889/1060/1092 764/1061/1093 891/1062/1094 +f 764/1061/1093 767/1063/1095 891/1062/1094 +f 772/1064/1096 713/1065/1097 882/1066/1097 +f 883/1067/1098 772/1064/1096 882/1066/1097 +f 883/1067/1098 886/1068/1099 772/1064/1096 +f 886/1068/1099 874/1069/1099 772/1064/1096 +f 880/1070/1099 886/1068/1099 883/1067/1098 +f 886/1071/1100 880/1072/1101 879/1073/1102 +f 893/1074/1103 886/1071/1100 879/1073/1102 +f 893/1074/1104 879/1073/682 358/674/1105 +f 894/669/1106 893/1074/1104 358/674/1105 +f 893/1074/1107 894/669/1108 374/668/1109 +f 893/1074/1107 374/668/1109 886/1071/1110 +f 895/1075/1111 896/1076/1112 897/1077/1113 +f 895/1075/1111 897/1077/1113 898/1078/1114 +f 895/1075/1111 898/1078/1114 899/1079/1115 +f 895/1075/1111 899/1079/1115 900/1080/1116 +f 895/1075/1111 900/1080/1116 901/1081/1117 +f 895/1075/1111 901/1081/1117 902/1082/1118 +f 895/1075/1111 902/1082/1118 903/1083/1119 +f 895/1075/1111 903/1083/1119 904/1084/1120 +f 905/1085/1121 895/1075/1111 904/1084/1120 +f 905/1085/1121 904/1084/1120 906/1086/1122 +f 907/1087/1123 908/1088/1124 909/1089/1125 +f 910/1090/1126 908/1088/1124 907/1087/1123 +f 908/1088/1124 911/1091/1127 912/1092/1128 +f 908/1088/1124 913/1093/1129 911/1091/1127 +f 914/1094/1130 908/1088/1124 912/1092/1128 +f 908/1088/1124 910/1090/1131 913/1093/1129 +f 908/1088/1124 914/1094/1130 909/1095/1132 +f 911/1091/1127 915/1096/1133 912/1092/1128 +f 915/1096/1133 916/1097/1134 912/1092/1128 +f 915/1096/1133 917/1098/1135 916/1097/1134 +f 917/1098/1135 918/1099/1136 916/1097/1134 +f 917/1098/1135 919/1100/1137 918/1099/1136 +f 919/1100/1137 920/1101/1138 918/1099/1136 +f 919/1100/1137 921/1102/1139 920/1101/1138 +f 921/1102/1139 919/1100/1137 922/1103/1140 +f 921/1102/1139 922/1103/1140 923/1104/1141 +f 924/1105/1142 921/1102/1139 923/1104/1141 +f 925/1106/1143 924/1105/1142 923/1104/1141 +f 926/1107/1144 925/1106/1143 923/1104/1141 +f 925/1106/1143 926/1107/1144 927/1108/1145 +f 928/1109/1146 925/1106/1143 927/1108/1145 +f 928/1109/1146 927/1108/1145 929/1110/1147 +f 930/1111/1148 928/1109/1146 929/1110/1147 +f 930/1111/1148 929/1110/1147 931/1112/1149 +f 932/1113/1150 930/1111/1148 931/1112/1149 +f 932/1113/1150 931/1112/1149 933/1114/1151 +f 934/1115/1152 932/1113/1150 933/1114/1151 +f 935/1116/1153 934/1115/1152 933/1114/1151 +f 936/1117/1154 935/1116/1153 933/1114/1151 +f 935/1116/1153 936/1117/1154 937/1118/1155 +f 938/1119/1156 937/1118/1155 936/1117/1154 +f 939/1120/1157 937/1118/1155 938/1119/1156 +f 940/1121/1158 939/1120/1157 938/1119/1156 +f 941/1122/1159 939/1120/1157 940/1121/1158 +f 379/1123/1160 941/1122/1159 940/1121/1158 +f 941/1122/1159 942/1124/1161 939/1120/1157 +f 942/1124/1161 943/1125/1162 939/1120/1157 +f 939/1120/1157 943/1125/1162 937/1118/1155 +f 943/1125/1162 942/1124/1161 944/1126/1163 +f 945/1127/1164 943/1125/1162 944/1126/1163 +f 945/1127/1164 944/1126/1163 946/1128/1165 +f 944/1126/1163 947/1129/1166 946/1128/1165 +f 943/1125/1162 945/1127/1164 948/1130/1167 +f 943/1125/1162 948/1130/1167 937/1118/1155 +f 948/1130/1167 935/1116/1153 937/1118/1155 +f 945/1127/1164 946/1128/1165 949/1131/1168 +f 945/1127/1164 950/1132/1169 948/1130/1167 +f 950/1132/1169 945/1127/1164 949/1131/1168 +f 935/1116/1153 948/1130/1167 950/1132/1169 +f 947/1129/1166 258/1133/1170 946/1128/1165 +f 946/1128/1165 611/1134/1171 949/1131/1168 +f 258/1133/1170 611/1134/1171 946/1128/1165 +f 950/1132/1169 949/1131/1168 951/1135/1172 +f 952/1136/1173 938/1119/1156 936/1117/1154 +f 952/1136/1173 936/1117/1154 933/1114/1151 +f 953/1137/1174 935/1116/1153 950/1132/1169 +f 953/1137/1174 950/1132/1169 951/1135/1172 +f 935/1116/1153 953/1137/1174 934/1115/1152 +f 611/1134/1171 612/1138/1175 949/1131/1168 +f 949/1131/1168 612/1138/1175 951/1135/1172 +f 953/1137/1174 951/1135/1172 954/1139/1176 +f 953/1137/1174 955/1140/1177 934/1115/1152 +f 955/1140/1177 953/1137/1174 954/1139/1176 +f 932/1113/1150 934/1115/1152 955/1140/1177 +f 612/1138/1175 617/1141/1178 951/1135/1172 +f 951/1135/1172 617/1141/1178 954/1139/1176 +f 956/1142/1179 952/1136/1173 933/1114/1151 +f 956/1142/1179 933/1114/1151 931/1112/1149 +f 955/1140/1177 954/1139/1176 957/1143/1180 +f 958/1144/1181 932/1113/1150 955/1140/1177 +f 958/1144/1181 955/1140/1177 957/1143/1180 +f 932/1113/1150 958/1144/1181 930/1111/1148 +f 617/1141/1178 618/1145/1182 954/1139/1176 +f 954/1139/1176 618/1145/1182 957/1143/1180 +f 959/1146/1183 956/1142/1179 931/1112/1149 +f 959/1146/1183 931/1112/1149 929/1110/1147 +f 958/1144/1181 957/1143/1180 960/1147/1184 +f 958/1144/1181 961/1148/1185 930/1111/1148 +f 961/1148/1185 958/1144/1181 960/1147/1184 +f 928/1109/1146 930/1111/1148 961/1148/1185 +f 618/1145/1182 616/1149/1186 957/1143/1180 +f 957/1143/1180 616/1149/1186 960/1147/1184 +f 962/1150/1187 959/1146/1183 929/1110/1147 +f 962/1150/1187 929/1110/1147 927/1108/1145 +f 963/1151/1188 961/1148/1185 960/1147/1184 +f 963/1151/1188 928/1109/1146 961/1148/1185 +f 616/1149/1186 615/1152/1189 960/1147/1184 +f 964/1153/1190 963/1151/1188 960/1147/1184 +f 614/1154/1191 964/1153/1190 960/1147/1184 +f 615/1152/1189 614/1154/1191 960/1147/1184 +f 965/1155/1192 962/1150/1187 927/1108/1145 +f 965/1155/1192 927/1108/1145 926/1107/1144 +f 928/1109/1146 963/1151/1188 966/1156/1193 +f 925/1106/1143 928/1109/1146 966/1156/1193 +f 924/1105/1142 925/1106/1143 966/1156/1193 +f 963/1151/1188 964/1153/1190 967/1157/1194 +f 964/1153/1190 614/1154/1191 967/1157/1194 +f 966/1156/1193 963/1151/1188 967/1157/1194 +f 614/1154/1191 613/1158/1195 967/1157/1194 +f 968/1159/1196 965/1155/1192 926/1107/1144 +f 613/1158/1195 610/1160/1197 967/1157/1194 +f 968/1159/1196 926/1107/1144 969/1161/1198 +f 926/1107/1144 923/1104/1141 969/1161/1198 +f 970/1162/1199 966/1156/1193 967/1157/1194 +f 970/1162/1199 924/1105/1142 966/1156/1193 +f 610/1160/1197 971/1163/1200 967/1157/1194 +f 971/1163/1200 970/1162/1199 967/1157/1194 +f 971/1163/1200 610/1160/1197 972/1164/1201 +f 970/1162/1199 971/1163/1200 972/1164/1201 +f 610/1160/1197 609/1165/1202 972/1164/1201 +f 969/1161/1198 923/1104/1141 973/1166/1203 +f 923/1104/1141 922/1103/1140 973/1166/1203 +f 924/1105/1142 970/1162/1199 974/1167/1204 +f 974/1167/1204 970/1162/1199 972/1164/1201 +f 921/1102/1139 924/1105/1142 974/1167/1204 +f 920/1101/1138 974/1167/1204 972/1164/1201 +f 921/1102/1139 974/1167/1204 920/1101/1138 +f 609/1165/1202 608/1168/1205 972/1164/1201 +f 608/1168/1205 975/1169/1206 972/1164/1201 +f 975/1169/1206 920/1101/1138 972/1164/1201 +f 918/1099/1136 920/1101/1138 975/1169/1206 +f 973/1166/1203 922/1103/1140 976/1170/1207 +f 922/1103/1140 977/1171/1208 976/1170/1207 +f 919/1100/1137 977/1171/1208 922/1103/1140 +f 608/1168/1205 607/1172/1209 975/1169/1206 +f 976/1170/1207 977/1171/1208 978/1173/1210 +f 977/1171/1208 919/1100/1137 979/1174/1211 +f 977/1171/1208 979/1174/1211 978/1173/1210 +f 919/1100/1137 917/1098/1135 979/1174/1211 +f 917/1098/1135 915/1096/1133 979/1174/1211 +f 607/1172/1209 980/1175/1212 975/1169/1206 +f 980/1175/1212 918/1099/1136 975/1169/1206 +f 916/1097/1134 918/1099/1136 980/1175/1212 +f 607/1172/1209 606/1176/1213 980/1175/1212 +f 606/1176/1213 981/1177/1214 980/1175/1212 +f 981/1177/1214 916/1097/1134 980/1175/1212 +f 912/1092/1128 916/1097/1134 981/1177/1214 +f 978/1173/1210 979/1174/1211 982/1178/1215 +f 915/1096/1133 982/1178/1215 979/1174/1211 +f 606/1176/1213 605/1179/1216 981/1177/1214 +f 983/1180/1217 978/1173/1210 982/1178/1215 +f 605/1179/1216 984/1181/1218 981/1177/1214 +f 984/1181/1218 912/1092/1128 981/1177/1214 +f 914/1094/1130 912/1092/1128 984/1181/1218 +f 983/1180/1217 982/1178/1215 985/1182/1219 +f 982/1178/1215 915/1096/1133 986/1183/1220 +f 982/1178/1215 986/1183/1220 985/1182/1219 +f 915/1096/1133 911/1091/1127 986/1183/1220 +f 913/1093/1129 986/1183/1220 911/1091/1127 +f 984/1181/1218 605/1179/1216 987/1184/1221 +f 987/1184/1221 914/1094/1130 984/1181/1218 +f 605/1179/1216 604/1185/1222 987/1184/1221 +f 988/1186/1223 985/1182/1219 986/1183/1220 +f 604/1185/1222 257/1187/1224 987/1184/1221 +f 989/1188/1225 988/1186/1223 986/1183/1220 +f 913/1093/1129 989/1188/1225 986/1183/1220 +f 990/1189/1226 985/1182/1219 988/1186/1223 +f 988/1186/1223 989/1188/1225 991/1190/1227 +f 991/1190/1227 989/1188/1225 913/1093/1129 +f 910/1090/1131 991/1190/1227 913/1093/1129 +f 257/1187/1224 992/1191/1228 987/1184/1221 +f 990/1189/1226 988/1186/1223 993/1192/1229 +f 988/1186/1223 994/1193/1230 993/1192/1229 +f 994/1193/1230 988/1186/1223 991/1190/1227 +f 995/1194/1231 914/1094/1130 987/1184/1221 +f 992/1191/1228 995/1194/1231 987/1184/1221 +f 995/1194/1231 909/1095/1132 914/1094/1130 +f 993/1192/1229 27/1195/1232 990/1189/1226 +f 909/1095/1132 995/1194/1231 996/1196/1233 +f 941/1197/1234 379/411/1235 380/412/1236 +f 997/1198/1237 941/1197/1234 380/412/1236 +f 997/1198/1237 380/412/1236 381/413/1238 +f 998/1199/1239 997/1198/1237 381/413/1238 +f 941/1197/1234 997/1198/1237 942/1200/1240 +f 999/1201/1241 998/1199/1239 381/413/1238 +f 382/414/1242 999/1201/1241 381/413/1238 +f 997/1198/1237 998/1199/1239 1000/1202/1243 +f 997/1198/1237 1000/1202/1243 942/1200/1240 +f 1001/1203/1244 999/1201/1241 382/414/1242 +f 383/415/1245 1001/1203/1244 382/414/1242 +f 999/1201/1241 1002/1204/1246 998/1199/1239 +f 999/1201/1241 1001/1203/1244 1002/1204/1246 +f 998/1199/1239 1003/1205/1247 1000/1202/1243 +f 1002/1204/1246 1003/1205/1247 998/1199/1239 +f 1004/1206/1248 1001/1203/1244 383/415/1245 +f 1001/1203/1244 1005/1207/1249 1002/1204/1246 +f 1006/1208/1250 1005/1207/1249 1001/1203/1244 +f 1004/1206/1248 1006/1208/1250 1001/1203/1244 +f 944/1209/1251 942/1200/1240 1000/1202/1243 +f 384/416/1252 1004/1206/1248 383/415/1245 +f 1007/1210/1253 1000/1202/1243 1003/1205/1247 +f 1007/1210/1253 944/1209/1251 1000/1202/1243 +f 1008/1211/1254 1003/1205/1247 1002/1204/1246 +f 1008/1211/1254 1007/1210/1253 1003/1205/1247 +f 1009/1212/1255 1002/1204/1246 1005/1207/1249 +f 1009/1212/1255 1008/1211/1254 1002/1204/1246 +f 1010/1213/1256 1005/1207/1249 1006/1208/1250 +f 1010/1213/1256 1009/1212/1255 1005/1207/1249 +f 1011/1214/1257 1006/1208/1250 1004/1206/1248 +f 1012/1215/1258 1010/1213/1256 1006/1208/1250 +f 1012/1215/1258 1006/1208/1250 1011/1214/1257 +f 944/1209/1251 1007/1210/1253 1013/1216/1259 +f 1008/1211/1254 1014/1217/1260 1007/1210/1253 +f 1014/1217/1260 1013/1216/1259 1007/1210/1253 +f 1008/1211/1254 1009/1212/1255 1015/1218/1261 +f 1014/1217/1260 1008/1211/1254 1015/1218/1261 +f 1010/1213/1256 1016/1219/1262 1009/1212/1255 +f 1016/1219/1262 1015/1218/1261 1009/1212/1255 +f 1017/1220/1263 1004/1206/1248 384/416/1252 +f 1017/1220/1263 1011/1214/1257 1004/1206/1248 +f 947/1221/1264 944/1209/1251 1013/1216/1259 +f 1010/1213/1256 1012/1215/1258 1018/1222/1265 +f 1016/1219/1262 1010/1213/1256 1018/1222/1265 +f 1013/1216/1259 1014/1217/1260 261/1223/1266 +f 1019/1224/1267 1012/1215/1258 1011/1214/1257 +f 1014/1217/1260 1015/1218/1261 262/1225/1268 +f 1014/1217/1260 262/1225/1268 261/1223/1266 +f 947/1221/1264 1013/1216/1259 258/1226/1269 +f 1013/1216/1259 261/1223/1266 258/1226/1269 +f 1015/1218/1261 1016/1219/1262 263/1227/1270 +f 1015/1218/1261 263/1227/1270 262/1225/1268 +f 1020/1228/1271 1018/1222/1265 1012/1215/1258 +f 1019/1224/1267 1020/1228/1271 1012/1215/1258 +f 1016/1219/1262 1018/1222/1265 264/1229/1272 +f 1016/1219/1262 264/1229/1272 263/1227/1270 +f 1018/1222/1265 265/1230/1273 264/1229/1272 +f 1018/1222/1265 1020/1228/1271 265/1230/1273 +f 1019/1224/1267 1011/1214/1257 1021/1231/1274 +f 1021/1231/1274 1011/1214/1257 1017/1220/1263 +f 1020/1228/1271 266/1232/1275 265/1230/1273 +f 1020/1228/1271 1019/1224/1267 1022/1233/1276 +f 1022/1233/1276 1019/1224/1267 1021/1231/1274 +f 267/1234/1277 266/1232/1275 1020/1228/1271 +f 1023/1235/1278 267/1234/1277 1020/1228/1271 +f 1023/1235/1278 1020/1228/1271 1022/1233/1276 +f 1024/1236/1279 1021/1231/1274 1017/1220/1263 +f 1025/1237/1280 1022/1233/1276 1021/1231/1274 +f 1026/1238/1281 1025/1237/1280 1021/1231/1274 +f 1026/1238/1281 1021/1231/1274 1024/1236/1279 +f 1023/1235/1278 1027/1239/1282 267/1234/1277 +f 1027/1239/1282 1023/1235/1278 1022/1233/1276 +f 1025/1237/1280 1027/1239/1282 1022/1233/1276 +f 1025/1237/1280 1026/1238/1281 1028/1240/1283 +f 1027/1239/1282 1025/1237/1280 1029/1241/1284 +f 1029/1241/1284 1025/1237/1280 1028/1240/1283 +f 1027/1239/1282 268/1242/1285 267/1234/1277 +f 1030/1243/1286 1026/1238/1281 1024/1236/1279 +f 1031/1244/1287 1028/1240/1283 1026/1238/1281 +f 1030/1243/1286 1031/1244/1287 1026/1238/1281 +f 1032/1245/1288 1027/1239/1282 1029/1241/1284 +f 269/1246/1289 268/1242/1285 1027/1239/1282 +f 1032/1245/1288 269/1246/1289 1027/1239/1282 +f 1033/1247/1290 1029/1241/1284 1028/1240/1283 +f 1034/1248/1291 1028/1240/1283 1031/1244/1287 +f 1034/1248/1291 1033/1247/1290 1028/1240/1283 +f 1035/1249/1292 1032/1245/1288 1029/1241/1284 +f 1033/1247/1290 1035/1249/1292 1029/1241/1284 +f 1032/1245/1288 1035/1249/1292 269/1246/1289 +f 385/417/1293 1017/1220/1263 384/416/1252 +f 1024/1236/1279 1017/1220/1263 385/417/1293 +f 1035/1249/1292 270/1250/1294 269/1246/1289 +f 1036/1251/1295 1034/1248/1291 1031/1244/1287 +f 271/1252/1296 270/1250/1294 1035/1249/1292 +f 1035/1249/1292 1033/1247/1290 1037/1253/1297 +f 1033/1247/1290 1034/1248/1291 1037/1253/1297 +f 1038/1254/1298 271/1252/1296 1035/1249/1292 +f 1038/1254/1298 1035/1249/1292 1037/1253/1297 +f 1034/1248/1291 1039/1255/1299 1037/1253/1297 +f 1034/1248/1291 1036/1251/1295 1039/1255/1299 +f 272/1256/1300 271/1252/1296 1038/1254/1298 +f 1038/1254/1298 1037/1253/1297 1040/1257/1301 +f 1037/1253/1297 1039/1255/1299 1040/1257/1301 +f 1041/1258/1302 272/1256/1300 1038/1254/1298 +f 1041/1258/1302 1038/1254/1298 1040/1257/1301 +f 1036/1251/1295 1042/1259/1303 1039/1255/1299 +f 1039/1255/1299 1043/1260/1304 1040/1257/1301 +f 1044/1261/1305 1043/1260/1304 1039/1255/1299 +f 1042/1259/1303 1044/1261/1305 1039/1255/1299 +f 260/1262/1306 272/1256/1300 1041/1258/1302 +f 1041/1258/1302 1040/1257/1301 1045/1263/1307 +f 1040/1257/1301 1043/1260/1304 1045/1263/1307 +f 1030/1243/1286 1024/1236/1279 386/418/1308 +f 386/418/1308 1024/1236/1279 385/417/1293 +f 1046/1264/1309 260/1262/1306 1041/1258/1302 +f 1046/1264/1309 1041/1258/1302 1045/1263/1307 +f 1031/1244/1287 1030/1243/1286 388/420/1310 +f 1042/1259/1303 1036/1251/1295 390/422/1311 +f 1043/1260/1304 1044/1261/1305 1047/1265/1312 +f 1043/1260/1304 1047/1265/1312 1045/1263/1307 +f 1044/1261/1305 1042/1259/1303 391/423/1313 +f 1042/1259/1303 390/422/1311 391/423/1313 +f 1044/1261/1305 1048/1266/1314 1047/1265/1312 +f 1048/1266/1314 1044/1261/1305 391/423/1313 +f 1036/1251/1295 1031/1244/1287 389/421/1315 +f 1036/1251/1295 389/421/1315 390/422/1311 +f 1031/1244/1287 388/420/1310 389/421/1315 +f 259/1267/1316 260/1262/1306 1046/1264/1309 +f 1046/1264/1309 1045/1263/1307 1049/1268/1317 +f 1045/1263/1307 1047/1265/1312 1049/1268/1317 +f 1050/1269/1318 259/1267/1316 1046/1264/1309 +f 1050/1269/1318 1046/1264/1309 1049/1268/1317 +f 1048/1266/1314 1051/1270/1319 1047/1265/1312 +f 392/424/1320 1048/1266/1314 391/423/1313 +f 1047/1265/1312 1052/1271/1321 1049/1268/1317 +f 1051/1270/1319 1052/1271/1321 1047/1265/1312 +f 1051/1270/1319 1048/1266/1314 393/425/1322 +f 1048/1266/1314 392/424/1320 393/425/1322 +f 1050/1269/1318 1053/1272/1323 259/1267/1316 +f 1050/1269/1318 1049/1268/1317 1054/1273/1324 +f 1053/1272/1323 1050/1269/1318 1054/1273/1324 +f 1049/1268/1317 1052/1271/1321 1055/1274/1325 +f 1054/1273/1324 1049/1268/1317 1055/1274/1325 +f 1051/1270/1319 1056/1275/1326 1052/1271/1321 +f 1051/1270/1319 393/425/1322 1056/1275/1326 +f 1056/1275/1326 1055/1274/1325 1052/1271/1321 +f 1053/1272/1323 256/1276/1327 259/1267/1316 +f 393/425/1322 394/426/1328 1056/1275/1326 +f 1053/1272/1323 1054/1273/1324 995/1277/1329 +f 1056/1275/1326 394/426/1328 1057/1278/1330 +f 1030/1243/1286 387/419/1331 388/420/1310 +f 387/419/1331 1030/1243/1286 386/418/1308 +f 1054/1273/1324 1055/1274/1325 996/1279/1332 +f 995/1277/1329 1054/1273/1324 996/1279/1332 +f 25/427/1333 1057/1278/1330 394/426/1328 +f 257/1280/1334 256/1276/1327 1053/1272/1323 +f 992/1281/1335 257/1280/1334 1053/1272/1323 +f 992/1281/1335 1053/1272/1323 995/1277/1329 +f 1056/1275/1326 1058/1282/1336 1055/1274/1325 +f 1058/1282/1336 996/1279/1332 1055/1274/1325 +f 1059/1283/1337 1056/1275/1326 1057/1278/1330 +f 1058/1282/1336 1056/1275/1326 1059/1283/1337 +f 1060/1284/1338 1057/1278/1330 25/427/1333 +f 1059/1283/1337 1057/1278/1330 1061/1285/1339 +f 1060/1284/1338 1061/1285/1339 1057/1278/1330 +f 1060/1284/1338 25/427/1333 27/1286/1340 +f 1058/1282/1336 1062/1287/1341 996/1279/1332 +f 1059/1283/1337 1063/1288/1342 1058/1282/1336 +f 1063/1288/1342 1059/1283/1337 1061/1285/1339 +f 1063/1288/1342 1062/1287/1341 1058/1282/1336 +f 1062/1287/1341 1064/1289/1343 996/1279/1332 +f 1064/1289/1343 909/1290/1344 996/1279/1332 +f 909/1291/1345 1065/1292/1346 1066/1293/1347 +f 907/1294/1348 909/1291/1345 1066/1293/1347 +f 1066/1293/1347 1067/1295/1349 907/1294/1348 +f 907/1294/1348 1067/1295/1349 910/1296/1350 +f 1068/1297/1351 910/1296/1350 1067/1295/1349 +f 1069/1298/1352 1068/1297/1351 1067/1295/1349 +f 1070/1299/1353 1068/1297/1351 1069/1298/1352 +f 1068/1297/1351 1071/1300/1354 910/1296/1350 +f 1072/1301/1355 1070/1299/1353 1069/1298/1352 +f 1070/1299/1353 1073/1302/1356 1068/1297/1351 +f 1073/1302/1356 1071/1300/1354 1068/1297/1351 +f 1074/1303/1357 1070/1299/1353 1072/1301/1355 +f 1075/1304/1358 1074/1303/1357 1072/1301/1355 +f 1074/1303/1357 1076/1305/1359 1070/1299/1353 +f 1076/1305/1359 1073/1302/1356 1070/1299/1353 +f 1071/1300/1354 991/1306/1360 910/1296/1350 +f 1077/1307/1361 1074/1303/1357 1075/1304/1358 +f 1078/1308/1362 1076/1305/1359 1074/1303/1357 +f 1077/1307/1361 1078/1308/1362 1074/1303/1357 +f 1079/1309/1363 1077/1307/1361 1075/1304/1358 +f 1073/1302/1356 1080/1310/1364 1071/1300/1354 +f 1076/1305/1359 1081/1311/1365 1073/1302/1356 +f 1081/1311/1365 1080/1310/1364 1073/1302/1356 +f 1071/1300/1354 1082/1312/1366 991/1306/1360 +f 1080/1310/1364 1082/1312/1366 1071/1300/1354 +f 1077/1307/1361 1079/1309/1363 1083/1313/1367 +f 1078/1308/1362 1084/1314/1368 1076/1305/1359 +f 1084/1314/1368 1081/1311/1365 1076/1305/1359 +f 1078/1308/1362 1077/1307/1361 1085/1315/1369 +f 1085/1315/1369 1077/1307/1361 1083/1313/1367 +f 1084/1314/1368 1078/1308/1362 1086/1316/1370 +f 1086/1316/1370 1078/1308/1362 1085/1315/1369 +f 1082/1312/1366 994/1317/1371 991/1306/1360 +f 1085/1315/1369 1083/1313/1367 1087/1318/1372 +f 1088/1319/1373 1082/1312/1366 1080/1310/1364 +f 1089/1320/1374 1080/1310/1364 1081/1311/1365 +f 1089/1320/1374 1088/1319/1373 1080/1310/1364 +f 993/1321/1375 994/1317/1371 1082/1312/1366 +f 1088/1319/1373 993/1321/1375 1082/1312/1366 +f 1090/1322/1376 1081/1311/1365 1084/1314/1368 +f 1090/1322/1376 1089/1320/1374 1081/1311/1365 +f 1091/1323/1377 1084/1314/1368 1086/1316/1370 +f 1092/1324/1378 1090/1322/1376 1084/1314/1368 +f 1092/1324/1378 1084/1314/1368 1093/1325/1379 +f 1084/1314/1368 1091/1323/1377 1093/1325/1379 +f 1086/1316/1370 1085/1315/1369 1094/1326/1380 +f 1094/1326/1380 1085/1315/1369 1087/1318/1372 +f 27/1327/1381 993/1321/1375 1088/1319/1373 +f 27/1327/1382 1088/1319/1373 1089/1320/1374 +f 27/1327/1382 1089/1320/1374 1090/1322/1376 +f 27/1327/1382 1090/1322/1376 1092/1324/1378 +f 27/1327/1382 1092/1324/1378 1093/1325/1379 +f 1091/1323/1377 1086/1316/1370 1095/1328/1383 +f 1095/1328/1383 1086/1316/1370 1094/1326/1380 +f 1093/1325/1379 1091/1323/1377 1096/1329/1384 +f 27/1327/1382 1093/1325/1379 1096/1329/1384 +f 1091/1323/1377 1097/1330/1385 1096/1329/1384 +f 1097/1330/1385 1091/1323/1377 1095/1328/1383 +f 1094/1326/1380 1087/1318/1372 1098/1331/1386 +f 27/1327/1382 1096/1329/1384 1099/1332/1387 +f 1096/1329/1384 1097/1330/1385 1099/1332/1387 +f 1097/1330/1385 1095/1328/1383 1100/1333/1388 +f 1097/1330/1385 1101/1334/1389 1099/1332/1387 +f 1101/1334/1389 1097/1330/1385 1100/1333/1388 +f 27/1327/1382 1099/1332/1387 1060/1335/1390 +f 1099/1332/1387 1101/1334/1389 1060/1335/1390 +f 1095/1328/1383 1094/1326/1380 1102/1336/1391 +f 1100/1333/1388 1095/1328/1383 1102/1336/1391 +f 1102/1336/1391 1094/1326/1380 1098/1331/1386 +f 1101/1334/1389 1100/1333/1388 1063/1337/1392 +f 1101/1334/1389 1061/1338/1393 1060/1335/1390 +f 1061/1338/1393 1101/1334/1389 1063/1337/1392 +f 1100/1333/1388 1102/1336/1391 1062/1339/1394 +f 1063/1337/1392 1100/1333/1388 1062/1339/1394 +f 1102/1336/1391 1098/1331/1386 1103/1340/1395 +f 1062/1339/1394 1102/1336/1391 1103/1340/1395 +f 1103/1340/1395 1064/1341/1396 1062/1339/1394 +f 1104/1342/1397 1064/1341/1396 1103/1340/1395 +f 909/1343/1398 1064/1341/1396 1104/1342/1397 +f 1065/1344/1399 909/1343/1398 1104/1342/1397 +f 379/1123/1400 940/1121/1401 304/723/1402 +f 940/1121/1401 647/721/1403 304/723/1402 +f 940/1121/1401 938/1119/1404 647/721/1403 +f 938/1119/1404 645/719/1405 647/721/1403 +f 938/1119/1404 952/1136/1406 645/719/1405 +f 952/1136/1406 643/717/1407 645/719/1405 +f 952/1136/1406 956/1142/1408 643/717/1407 +f 956/1142/1408 641/715/1409 643/717/1407 +f 956/1142/1408 959/1146/1410 641/715/1409 +f 959/1146/1410 640/714/1411 641/715/1409 +f 959/1146/1410 962/1150/1412 640/714/1411 +f 962/1150/1412 637/711/1413 640/714/1411 +f 636/710/1414 637/711/1413 962/1150/1412 +f 965/1155/1415 636/710/1414 962/1150/1412 +f 965/1155/1415 968/1159/1416 636/710/1414 +f 968/1159/1416 633/707/1417 636/710/1414 +f 632/706/1418 633/707/1417 968/1159/1416 +f 969/1161/1419 632/706/1418 968/1159/1416 +f 969/1161/1419 973/1166/1420 632/706/1418 +f 973/1166/1420 629/703/1421 632/706/1418 +f 628/702/1422 629/703/1421 973/1166/1420 +f 976/1170/1423 628/702/1422 973/1166/1420 +f 626/700/1424 628/702/1422 976/1170/1423 +f 978/1173/1425 626/700/1424 976/1170/1423 +f 624/698/1426 626/700/1424 978/1173/1425 +f 983/1180/1427 624/698/1426 978/1173/1425 +f 622/696/1428 624/698/1426 983/1180/1427 +f 985/1182/1429 622/696/1428 983/1180/1427 +f 985/1182/1429 990/1189/1430 622/696/1428 +f 990/1189/1430 620/694/1431 622/696/1428 +f 990/1189/1430 27/27/1432 620/694/1431 +f 27/27/1432 26/26/1433 620/694/1431 +f 1105/1345/1434 1106/1346/1435 1107/1347/1436 +f 1108/1348/1437 1105/1345/1434 1107/1347/1436 +f 1109/1349/1438 1110/1350/1439 1111/1351/1440 +f 1112/1352/1441 1109/1349/1438 1111/1351/1440 +f 1108/1348/1442 1107/1347/1443 1113/1353/1444 +f 1114/1354/1445 1108/1348/1442 1113/1353/1444 +f 1115/1355/1446 1109/1349/1447 1112/1352/1448 +f 1116/1356/1449 1115/1355/1446 1112/1352/1448 +f 1117/1357/1450 1118/1358/1451 1106/1346/1452 +f 1105/1345/1453 1117/1357/1450 1106/1346/1452 +f 1110/1350/1454 1119/1359/1455 1120/1360/1456 +f 1111/1351/1457 1110/1350/1454 1120/1360/1456 +f 1121/1361/1458 1122/1362/1458 1123/1363/1459 +f 1124/1364/1460 1121/1361/1458 1123/1363/1459 +f 1124/1364/1460 1123/1363/1459 1125/1365/1461 +f 1123/1363/1459 1126/1366/1461 1125/1365/1461 +f 1125/1365/1461 1126/1366/1461 1127/1367/1462 +f 1128/1368/1462 1125/1365/1461 1127/1367/1462 +f 1128/1368/1462 1127/1367/1462 1129/1369/1463 +f 1130/1370/1464 1128/1368/1462 1129/1369/1463 +f 1130/1370/1464 1129/1369/1463 1131/1371/1465 +f 1129/1369/1463 1132/1372/1465 1131/1371/1465 +f 1133/1373/1466 1134/1374/1467 1135/1375/1468 +f 1136/1376/1469 1133/1373/1466 1135/1375/1468 +f 1131/1371/1470 1132/1372/1471 1137/1377/1472 +f 1138/1378/1473 1131/1371/1470 1137/1377/1472 +f 1135/1375/1474 1139/1379/1475 1140/1380/1476 +f 1136/1376/1477 1135/1375/1474 1140/1380/1476 +f 1141/1381/1478 1142/1382/1479 1134/1374/1480 +f 1133/1373/1481 1141/1381/1478 1134/1374/1480 +f 1143/1383/1482 1144/1384/1483 1145/1385/1484 +f 1146/1386/1485 1143/1383/1482 1145/1385/1484 +f 1144/1384/1486 1147/1387/1487 1148/1388/1488 +f 1145/1385/1489 1144/1384/1486 1148/1388/1488 +f 1149/1389/1490 1150/1390/1491 1151/1391/1492 +f 1152/1392/1493 1149/1389/1490 1151/1391/1492 +f 1153/1393/1494 1152/1392/1493 1151/1391/1492 +f 1154/1394/1495 1153/1393/1494 1151/1391/1492 +f 1152/1392/1493 1155/1395/1496 1149/1389/1490 +f 1156/1396/1497 1153/1393/1494 1154/1394/1495 +f 1152/1392/1493 1153/1393/1494 1157/1397/1498 +f 1155/1395/1496 1152/1392/1493 1157/1397/1498 +f 1158/1398/1499 1156/1396/1497 1154/1394/1495 +f 1159/1399/1500 1156/1396/1497 1158/1398/1499 +f 1156/1396/1497 1160/1400/1501 1153/1393/1494 +f 1160/1400/1501 1157/1397/1498 1153/1393/1494 +f 1161/1401/1502 1159/1399/1500 1158/1398/1499 +f 1155/1395/1496 1162/1402/1503 1149/1389/1490 +f 1159/1399/1500 1147/1403/1504 1156/1396/1497 +f 1156/1396/1497 1147/1403/1504 1160/1400/1501 +f 1157/1397/1498 1163/1404/1505 1155/1395/1496 +f 1155/1395/1496 1164/1405/1506 1162/1402/1503 +f 1163/1404/1505 1164/1405/1506 1155/1395/1496 +f 1160/1400/1501 1165/1406/1507 1157/1397/1498 +f 1165/1406/1507 1163/1404/1505 1157/1397/1498 +f 1147/1403/1504 1144/1407/1508 1160/1400/1501 +f 1144/1407/1508 1165/1406/1507 1160/1400/1501 +f 1164/1405/1506 1166/1408/1509 1162/1402/1503 +f 1164/1405/1506 1163/1404/1505 1167/1409/1510 +f 1164/1405/1506 1168/1410/1511 1166/1408/1509 +f 1168/1410/1511 1164/1405/1506 1167/1409/1510 +f 1163/1404/1505 1165/1406/1507 1169/1411/1512 +f 1165/1406/1507 1144/1407/1508 1143/1412/1513 +f 1169/1411/1512 1165/1406/1507 1143/1412/1513 +f 1170/1413/1514 1167/1409/1510 1163/1404/1505 +f 1169/1411/1512 1170/1413/1514 1163/1404/1505 +f 1168/1410/1511 1171/1414/1515 1166/1408/1509 +f 1168/1410/1511 1167/1409/1510 1172/1415/1516 +f 1171/1414/1515 1168/1410/1511 1172/1415/1516 +f 1167/1409/1510 1170/1413/1514 1173/1416/1517 +f 1174/1417/1518 1170/1413/1514 1169/1411/1512 +f 1143/1412/1513 1174/1417/1518 1169/1411/1512 +f 1170/1413/1514 1174/1417/1518 1173/1416/1517 +f 1167/1409/1510 1175/1418/1519 1172/1415/1516 +f 1167/1409/1510 1173/1416/1517 1175/1418/1519 +f 1176/1419/1520 1171/1414/1515 1172/1415/1516 +f 1172/1415/1516 1175/1418/1519 1177/1420/1521 +f 1176/1419/1520 1172/1415/1516 35/1421/1522 +f 1172/1415/1516 1177/1420/1521 35/1421/1522 +f 1173/1416/1517 1178/1422/1523 1175/1418/1519 +f 1175/1418/1519 1179/1423/1524 1177/1420/1521 +f 1174/1417/1518 1180/1424/1525 1173/1416/1517 +f 1173/1416/1517 1180/1424/1525 1178/1422/1523 +f 1179/1423/1524 1175/1418/1519 1181/1425/1526 +f 1175/1418/1519 1178/1422/1523 1181/1425/1526 +f 1181/1425/1526 1178/1422/1523 1182/1426/1527 +f 1180/1424/1525 1183/1427/1528 1178/1422/1523 +f 1178/1422/1523 1183/1427/1528 1182/1426/1527 +f 1182/1426/1527 1183/1427/1528 1184/1428/1529 +f 1185/1429/1530 1159/1399/1500 1161/1401/1502 +f 1183/1427/1528 1186/1430/1531 1184/1428/1529 +f 1186/1430/1531 1187/1431/1532 1184/1428/1529 +f 1187/1431/1532 1188/1432/1533 1184/1428/1529 +f 1188/1432/1533 1187/1431/1532 1189/1433/1534 +f 1187/1431/1532 1190/1434/1535 1189/1433/1534 +f 1190/1434/1535 1187/1431/1532 1191/1435/1536 +f 1192/1436/1537 1190/1434/1535 1191/1435/1536 +f 1189/1433/1534 1190/1434/1535 1193/1437/1538 +f 1192/1436/1537 1191/1435/1536 1194/1438/1539 +f 1195/1439/1540 1192/1436/1537 1194/1438/1539 +f 1194/1438/1539 1113/1440/1541 1195/1439/1540 +f 1196/1441/1542 1189/1433/1534 1193/1437/1538 +f 1193/1437/1538 1197/1442/1543 1196/1441/1542 +f 1197/1442/1543 1198/1443/1544 1196/1441/1542 +f 1198/1443/1544 1197/1442/1543 1199/1444/1545 +f 1200/1445/1546 1198/1443/1544 1199/1444/1545 +f 1200/1445/1546 1199/1444/1545 1137/1446/1547 +f 1201/1447/1548 1200/1445/1546 1137/1446/1547 +f 1201/1447/1548 1137/1446/1547 1202/1448/1549 +f 1137/1446/1547 1203/1449/1550 1202/1448/1549 +f 1137/1446/1547 1132/1450/1551 1203/1449/1550 +f 1132/1450/1551 1204/1451/1552 1203/1449/1550 +f 1205/1452/1553 1204/1451/1552 1132/1450/1551 +f 1129/1453/1554 1205/1452/1553 1132/1450/1551 +f 1206/1454/1555 1205/1452/1553 1129/1453/1554 +f 1127/1455/1556 1206/1454/1555 1129/1453/1554 +f 1207/1456/1557 1206/1454/1555 1127/1455/1556 +f 1208/1457/1558 1185/1429/1530 1161/1401/1502 +f 1113/1440/1541 1115/1458/1559 1195/1439/1540 +f 1126/1459/1560 1207/1456/1557 1127/1455/1556 +f 1209/1460/1561 1207/1456/1557 1126/1459/1560 +f 1123/1461/1562 1209/1460/1561 1126/1459/1560 +f 1210/1462/1563 1209/1460/1561 1123/1461/1562 +f 1122/1463/1564 1210/1462/1563 1123/1461/1562 +f 1211/1464/1565 1210/1462/1563 1122/1463/1564 +f 1211/1464/1565 1212/1465/1566 1210/1462/1563 +f 1211/1464/1565 1213/1466/1567 1212/1465/1566 +f 1211/1464/1565 1214/1467/1568 1213/1466/1567 +f 1214/1467/1568 1215/1468/1569 1213/1466/1567 +f 1212/1465/1566 1213/1466/1567 1216/1469/1570 +f 1213/1466/1567 1215/1468/1569 1216/1469/1570 +f 1214/1467/1568 1139/1470/1571 1215/1468/1569 +f 1215/1468/1569 1139/1470/1571 1217/1471/1572 +f 1139/1470/1571 1218/1472/1573 1217/1471/1572 +f 1217/1471/1572 1219/1473/1574 1215/1468/1569 +f 1219/1473/1574 1216/1469/1570 1215/1468/1569 +f 1139/1470/1571 1135/1474/1575 1218/1472/1573 +f 1135/1474/1575 1220/1475/1576 1218/1472/1573 +f 1220/1475/1576 1135/1474/1575 1221/1476/1577 +f 1135/1474/1575 1134/1477/1578 1221/1476/1577 +f 1115/1458/1559 1113/1440/1541 1107/1478/1579 +f 1221/1476/1577 1134/1477/1578 1222/1479/1580 +f 1134/1477/1578 1142/1480/1581 1222/1479/1580 +f 1222/1479/1580 1142/1480/1581 1223/1481/1582 +f 1142/1480/1581 1224/1482/1583 1223/1481/1582 +f 1223/1481/1582 1224/1482/1583 1208/1457/1558 +f 1224/1482/1583 1225/1483/1584 1208/1457/1558 +f 1225/1483/1584 1185/1429/1530 1208/1457/1558 +f 1225/1483/1584 1224/1482/1583 1226/1484/1585 +f 1227/1485/1586 1225/1483/1584 1226/1484/1585 +f 1226/1484/1585 1119/1486/1587 1227/1485/1586 +f 1119/1486/1587 1118/1487/1588 1227/1485/1586 +f 1119/1486/1587 1110/1488/1589 1118/1487/1588 +f 1110/1488/1589 1106/1489/1590 1118/1487/1588 +f 1110/1488/1589 1109/1490/1591 1106/1489/1590 +f 1109/1490/1591 1107/1478/1579 1106/1489/1590 +f 1109/1490/1591 1115/1458/1559 1107/1478/1579 +f 1228/1491/1592 1186/1492/1593 1183/1493/1594 +f 1229/1494/1595 1228/1491/1592 1183/1493/1594 +f 1174/1495/1596 1143/1383/1597 1146/1386/1598 +f 1230/1496/1599 1174/1495/1596 1146/1386/1598 +f 1140/1380/1600 1139/1379/1601 1214/1497/1602 +f 1231/1497/1603 1140/1380/1600 1214/1497/1602 +f 1224/1498/1604 1142/1382/1605 1141/1381/1606 +f 1232/1499/1607 1224/1498/1604 1141/1381/1606 +f 1233/1500/1608 1227/1501/1609 1118/1358/1610 +f 1117/1357/1611 1233/1500/1608 1118/1358/1610 +f 1119/1359/1612 1226/1502/1613 1234/1503/1614 +f 1120/1360/1615 1119/1359/1612 1234/1503/1614 +f 1159/1504/1616 1185/1505/1617 1235/1506/1618 +f 1236/1507/1616 1159/1504/1616 1235/1506/1618 +f 1185/1505/1619 1225/1508/1620 1237/1509/1621 +f 1235/1506/1622 1185/1505/1619 1237/1509/1621 +f 1234/1503/1623 1226/1502/1623 1224/1498/1624 +f 1232/1499/1624 1234/1503/1623 1224/1498/1624 +f 1237/1509/1625 1225/1508/1626 1227/1501/1627 +f 1233/1500/1628 1237/1509/1625 1227/1501/1627 +f 1183/1493/1629 1180/1510/1630 1238/1511/1631 +f 1229/1494/1632 1183/1493/1629 1238/1511/1631 +f 1180/1510/1633 1174/1495/1634 1230/1496/1635 +f 1238/1511/1636 1180/1510/1633 1230/1496/1635 +f 1239/1512/1637 1187/1513/1638 1186/1514/1639 +f 1228/1515/1640 1239/1512/1637 1186/1514/1639 +f 1195/1516/1641 1115/1355/1449 1116/1356/1642 +f 1240/1517/1643 1195/1516/1641 1116/1356/1642 +f 1114/1354/1644 1113/1353/1645 1194/1518/1646 +f 1241/1519/1647 1114/1354/1644 1194/1518/1646 +f 1242/1520/1648 1191/1521/1649 1187/1513/1650 +f 1239/1512/1651 1242/1520/1648 1187/1513/1650 +f 1190/1522/1652 1192/1523/1653 1243/1524/1654 +f 1244/1525/1655 1190/1522/1652 1243/1524/1654 +f 1241/1519/1656 1194/1518/1657 1191/1521/1658 +f 1242/1520/1659 1241/1519/1656 1191/1521/1658 +f 1192/1523/1660 1195/1516/1661 1240/1517/1662 +f 1243/1524/1663 1192/1523/1660 1240/1517/1662 +f 1147/1387/1664 1159/1504/1665 1236/1507/1666 +f 1148/1388/1667 1147/1387/1664 1236/1507/1666 +f 1176/1419/1668 35/1421/1669 34/1526/1670 +f 1176/1419/1668 34/1526/1670 1150/1390/1671 +f 1171/1414/1672 1176/1419/1668 1150/1390/1671 +f 1166/1408/1673 1171/1414/1672 1150/1390/1671 +f 1166/1408/1673 1150/1390/1671 1149/1389/1674 +f 1166/1408/1673 1149/1389/1674 1162/1402/1675 +f 1245/1527/1676 1193/1528/1677 1190/1522/1678 +f 1244/1525/1679 1245/1527/1676 1190/1522/1678 +f 1246/1529/1680 1199/1530/1680 1197/1531/1681 +f 1247/1532/1681 1246/1529/1680 1197/1531/1681 +f 1138/1378/1682 1137/1377/1683 1199/1530/1684 +f 1246/1529/1685 1138/1378/1682 1199/1530/1684 +f 1247/1533/1686 1197/1534/1686 1193/1528/1687 +f 1245/1527/1687 1247/1533/1686 1193/1528/1687 +f 1231/1497/1688 1214/1497/1689 1211/1535/1690 +f 1248/1536/1691 1231/1497/1688 1211/1535/1690 +f 1211/1535/1692 1122/1362/1693 1121/1361/1694 +f 1248/1536/1695 1211/1535/1692 1121/1361/1694 +f 1207/1456/1696 1209/1460/1697 111/1537/1698 +f 1249/1538/1699 1207/1456/1696 111/1537/1698 +f 1209/1460/1700 1210/1462/1701 108/1539/1702 +f 111/1537/1703 1209/1460/1700 108/1539/1702 +f 120/1540/1704 90/1541/1705 1202/1448/1706 +f 1203/1449/1707 120/1540/1704 1202/1448/1706 +f 1203/1449/1708 1204/1451/1709 118/1542/1710 +f 120/1540/1711 1203/1449/1708 118/1542/1710 +f 1212/1465/1712 1216/1469/1713 107/1543/1714 +f 103/1544/1715 1212/1465/1712 107/1543/1714 +f 1204/1451/1716 1205/1452/1716 117/1545/1716 +f 118/1542/1716 1204/1451/1716 117/1545/1716 +f 1216/1469/1717 1219/1473/1718 123/1546/1719 +f 107/1543/1720 1216/1469/1717 123/1546/1719 +f 1205/1452/1721 1206/1454/1722 115/1547/1723 +f 117/1545/1724 1205/1452/1721 115/1547/1723 +f 103/1544/1725 108/1539/1726 1210/1462/1726 +f 1212/1465/1727 103/1544/1725 1210/1462/1726 +f 1206/1454/1728 1207/1456/1729 1249/1538/1730 +f 115/1547/1731 1206/1454/1728 1249/1538/1730 +f 1250/1548/1732 1251/1549/1733 1252/1550/1734 +f 1253/1551/1735 1250/1548/1732 1252/1550/1734 +f 1254/1552/1736 1255/1553/1737 1256/1554/1738 +f 1257/1555/1739 1254/1552/1736 1256/1554/1738 +f 1258/1556/1740 1250/1548/1741 1253/1551/1742 +f 1259/1557/1743 1258/1556/1740 1253/1551/1742 +f 1260/1558/1744 1261/1559/1745 1255/1553/1746 +f 1254/1552/1747 1260/1558/1744 1255/1553/1746 +f 1251/1549/1748 1262/1560/1749 1263/1561/1750 +f 1252/1550/1751 1251/1549/1748 1263/1561/1750 +f 1257/1555/1752 1256/1554/1753 1264/1562/1754 +f 1265/1563/1755 1257/1555/1752 1264/1562/1754 +f 1266/1564/1756 1267/1565/1757 1268/1566/1757 +f 1269/1567/1756 1266/1564/1756 1268/1566/1757 +f 1266/1564/1756 1269/1567/1756 1270/1568/1758 +f 1271/1569/1758 1266/1564/1756 1270/1568/1758 +f 1272/1570/1759 1271/1569/1758 1270/1568/1758 +f 1273/1571/1759 1272/1570/1759 1270/1568/1758 +f 1274/1572/1760 1272/1570/1759 1273/1571/1759 +f 1275/1573/1760 1274/1572/1760 1273/1571/1759 +f 1274/1572/1760 1275/1573/1760 1276/1574/1761 +f 1277/1575/1761 1274/1572/1760 1276/1574/1761 +f 1278/1576/1762 1279/1577/1763 1280/1578/1764 +f 1281/1579/1765 1278/1576/1762 1280/1578/1764 +f 1282/1580/1766 1277/1575/1767 1276/1574/1768 +f 1283/1581/1769 1282/1580/1766 1276/1574/1768 +f 1278/1576/1770 1281/1579/1771 1284/1582/1772 +f 1285/1583/1773 1278/1576/1770 1284/1582/1772 +f 1279/1577/1774 1286/1584/1775 1287/1585/1776 +f 1280/1578/1777 1279/1577/1774 1287/1585/1776 +f 1288/1586/1778 1289/1587/1779 1290/1588/1780 +f 1291/1589/1781 1288/1586/1778 1290/1588/1780 +f 1291/1589/1782 1290/1588/1783 1292/1590/1784 +f 1293/1591/1785 1291/1589/1782 1292/1590/1784 +f 1294/1592/1786 1295/1593/1787 1296/1594/1788 +f 1297/1595/1789 1294/1592/1786 1296/1594/1788 +f 1298/1596/1790 1299/1597/1791 1289/1587/1792 +f 1288/1586/1793 1298/1596/1790 1289/1587/1792 +f 1300/1598/1794 1285/1583/1795 1284/1582/1796 +f 1301/1598/1797 1300/1598/1794 1284/1582/1796 +f 1302/1599/1798 1303/1600/1799 1287/1585/1800 +f 1286/1584/1801 1302/1599/1798 1287/1585/1800 +f 1262/1560/1802 1304/1601/1803 1305/1602/1804 +f 1263/1561/1805 1262/1560/1802 1305/1602/1804 +f 1265/1563/1806 1264/1562/1807 1306/1603/1808 +f 1307/1604/1809 1265/1563/1806 1306/1603/1808 +f 1308/1605/1810 1309/1606/1811 1310/1607/1812 +f 1311/1608/1813 1308/1605/1810 1310/1607/1812 +f 1311/1608/1814 1310/1607/1815 1312/1609/1816 +f 1313/1610/1817 1311/1608/1814 1312/1609/1816 +f 1302/1599/1818 1307/1604/1818 1306/1603/1818 +f 1303/1600/1818 1302/1599/1818 1306/1603/1818 +f 1304/1601/1819 1313/1610/1820 1312/1609/1821 +f 1305/1602/1822 1304/1601/1819 1312/1609/1821 +f 1294/1592/1823 1297/1595/1824 1314/1611/1825 +f 1315/1612/1826 1294/1592/1823 1314/1611/1825 +f 1315/1612/1827 1314/1611/1828 1299/1597/1829 +f 1298/1596/1830 1315/1612/1827 1299/1597/1829 +f 1295/1613/1831 1316/1614/1832 1317/1615/1833 +f 1296/1616/1834 1295/1613/1831 1317/1615/1833 +f 1318/1617/1835 1319/1618/1836 1261/1559/1837 +f 1260/1558/1838 1318/1617/1835 1261/1559/1837 +f 1320/1619/1839 1258/1556/1840 1259/1557/1841 +f 1321/1620/1842 1320/1619/1839 1259/1557/1841 +f 1316/1614/1843 1322/1621/1844 1323/1622/1845 +f 1317/1615/1846 1316/1614/1843 1323/1622/1845 +f 1324/1623/1847 1325/1624/1848 1326/1625/1849 +f 1327/1626/1850 1324/1623/1847 1326/1625/1849 +f 1322/1621/1851 1320/1619/1852 1321/1620/1853 +f 1323/1622/1854 1322/1621/1851 1321/1620/1853 +f 1327/1626/1855 1326/1625/1856 1319/1618/1857 +f 1318/1617/1858 1327/1626/1855 1319/1618/1857 +f 1293/1591/1859 1292/1590/1860 1309/1606/1861 +f 1308/1605/1862 1293/1591/1859 1309/1606/1861 +f 1324/1623/1863 1328/1627/1864 1329/1628/1865 +f 1325/1624/1866 1324/1623/1863 1329/1628/1865 +f 1330/1629/1867 1331/1630/1868 1332/1631/1868 +f 1333/1632/1867 1330/1629/1867 1332/1631/1868 +f 1331/1630/1869 1282/1580/1870 1283/1581/1871 +f 1332/1631/1872 1331/1630/1869 1283/1581/1871 +f 1328/1627/1873 1330/1633/1874 1333/1634/1874 +f 1329/1628/1873 1328/1627/1873 1333/1634/1874 +f 1334/1635/1875 1300/1598/1876 1301/1598/1877 +f 1335/1636/1878 1334/1635/1875 1301/1598/1877 +f 1334/1635/1879 1335/1636/1880 1268/1566/1881 +f 1267/1565/1882 1334/1635/1879 1268/1566/1881 +f 1336/1637/1883 81/1638/1883 79/1639/1884 +f 1337/1640/1885 1336/1637/1883 79/1639/1884 +f 1337/1640/1886 79/1639/1887 76/1641/1888 +f 1338/1642/1889 1337/1640/1886 76/1641/1888 +f 88/1643/1890 1339/1644/1891 1202/1645/1892 +f 90/1646/1893 88/1643/1890 1202/1645/1892 +f 1339/1644/1894 88/1643/1894 86/1647/1895 +f 1340/1648/1896 1339/1644/1894 86/1647/1895 +f 1341/1649/1897 74/1650/1898 71/1651/1899 +f 1342/1652/1900 1341/1649/1897 71/1651/1899 +f 1340/1648/1901 86/1647/1901 85/1653/1902 +f 1343/1654/1902 1340/1648/1901 85/1653/1902 +f 1342/1652/1903 71/1651/1904 73/1655/1905 +f 1344/1656/1906 1342/1652/1903 73/1655/1905 +f 1343/1654/1907 85/1653/1907 1345/1657/1908 +f 1346/1658/1908 1343/1654/1907 1345/1657/1908 +f 74/1650/1909 1341/1649/1910 1338/1642/1911 +f 76/1641/1912 74/1650/1909 1338/1642/1911 +f 1346/1658/1913 1345/1657/1914 81/1638/1915 +f 1336/1637/1916 1346/1658/1913 81/1638/1915 +f 1347/1659/1917 1300/1660/1918 1334/1661/1919 +f 1347/1659/1917 1348/1662/1920 1300/1660/1918 +f 1348/1662/1920 1285/1663/1921 1300/1660/1918 +f 1285/1663/1921 1348/1662/1920 1349/1664/1922 +f 1350/1665/1923 1285/1663/1921 1349/1664/1922 +f 1278/1666/1924 1285/1663/1921 1350/1665/1923 +f 1351/1667/1925 1278/1666/1924 1350/1665/1923 +f 1351/1667/1925 1352/1668/1926 1278/1666/1924 +f 1352/1668/1926 1279/1669/1927 1278/1666/1924 +f 1352/1668/1926 1353/1670/1928 1279/1669/1927 +f 1353/1670/1928 1286/1671/1929 1279/1669/1927 +f 1353/1670/1928 1354/1672/1930 1286/1671/1929 +f 1354/1672/1930 1302/1673/1931 1286/1671/1929 +f 1302/1673/1931 1354/1672/1930 1355/1674/1932 +f 1313/1675/1933 1302/1673/1931 1355/1674/1932 +f 1355/1674/1932 1311/1676/1934 1313/1675/1933 +f 1311/1676/1934 1355/1674/1932 1356/1677/1935 +f 1302/1673/1931 1313/1675/1933 1307/1678/1936 +f 1308/1679/1937 1311/1676/1934 1356/1677/1935 +f 1308/1679/1937 1356/1677/1935 1357/1680/1938 +f 1358/1681/1939 1308/1679/1937 1357/1680/1938 +f 1357/1680/1938 1359/1682/1940 1358/1681/1939 +f 1313/1675/1933 1304/1683/1941 1307/1678/1936 +f 1307/1678/1936 1304/1683/1941 1265/1684/1942 +f 1304/1683/1941 1262/1685/1943 1265/1684/1942 +f 1265/1684/1942 1262/1685/1943 1257/1686/1944 +f 1262/1685/1943 1251/1687/1945 1257/1686/1944 +f 1257/1686/1944 1251/1687/1945 1254/1688/1946 +f 1251/1687/1945 1250/1689/1947 1254/1688/1946 +f 1254/1688/1946 1250/1689/1947 1260/1690/1948 +f 1250/1689/1947 1258/1691/1949 1260/1690/1948 +f 1318/1692/1950 1260/1690/1948 1258/1691/1949 +f 1320/1693/1951 1318/1692/1950 1258/1691/1949 +f 1327/1694/1952 1318/1692/1950 1320/1693/1951 +f 1322/1695/1953 1327/1694/1952 1320/1693/1951 +f 1324/1696/1954 1327/1694/1952 1322/1695/1953 +f 1316/1697/1955 1324/1696/1954 1322/1695/1953 +f 1189/1698/1956 1324/1696/1954 1316/1697/1955 +f 1188/1699/1957 1189/1698/1956 1316/1697/1955 +f 1188/1699/1957 1316/1697/1955 1184/1700/1958 +f 1324/1696/1954 1189/1698/1956 1328/1701/1959 +f 1316/1697/1955 1295/1702/1960 1184/1700/1958 +f 1184/1700/1958 1295/1702/1960 1294/1703/1961 +f 1189/1698/1956 1196/1704/1962 1328/1701/1959 +f 1358/1681/1939 1293/1705/1963 1308/1679/1937 +f 1330/1706/1964 1328/1701/1959 1196/1704/1962 +f 1198/1707/1965 1330/1706/1964 1196/1704/1962 +f 1330/1706/1964 1198/1707/1965 1331/1708/1966 +f 1198/1707/1965 1200/1709/1967 1331/1708/1966 +f 1359/1682/1940 1360/1710/1968 1358/1681/1939 +f 1331/1708/1966 1200/1709/1967 1282/1711/1969 +f 1200/1709/1967 1201/1712/1970 1282/1711/1969 +f 1282/1711/1969 1201/1712/1970 1202/1645/1971 +f 1339/1644/1972 1282/1711/1969 1202/1645/1971 +f 1282/1711/1969 1339/1644/1972 1277/1713/1973 +f 1182/1714/1974 1184/1700/1958 1294/1703/1961 +f 1339/1644/1972 1340/1648/1975 1277/1713/1973 +f 1277/1713/1973 1340/1648/1975 1343/1654/1976 +f 1274/1715/1977 1277/1713/1973 1343/1654/1976 +f 1274/1715/1977 1343/1654/1976 1346/1658/1978 +f 1272/1716/1979 1274/1715/1977 1346/1658/1978 +f 1272/1716/1979 1346/1658/1978 1336/1637/1980 +f 1271/1717/1981 1272/1716/1979 1336/1637/1980 +f 1271/1717/1981 1336/1637/1980 1337/1640/1982 +f 1266/1718/1983 1271/1717/1981 1337/1640/1982 +f 1266/1718/1983 1337/1640/1982 1338/1642/1984 +f 1182/1714/1974 1294/1703/1961 1181/1719/1985 +f 1267/1720/1986 1266/1718/1983 1338/1642/1984 +f 1294/1703/1961 1361/1721/1987 1181/1719/1985 +f 1294/1703/1961 1315/1722/1988 1361/1721/1987 +f 1267/1720/1986 1338/1642/1984 1334/1661/1989 +f 1338/1642/1984 1341/1649/1990 1334/1661/1989 +f 1362/1723/1991 1293/1705/1963 1358/1681/1939 +f 1362/1723/1991 1358/1681/1939 1360/1710/1968 +f 1341/1649/1990 1347/1659/1992 1334/1661/1989 +f 1341/1649/1990 1342/1652/1993 1347/1659/1992 +f 1342/1652/1993 1348/1662/1994 1347/1659/1992 +f 1348/1662/1994 1342/1652/1993 1344/1656/1995 +f 1349/1664/1996 1348/1662/1994 1344/1656/1995 +f 1315/1722/1988 1363/1724/1997 1361/1721/1987 +f 1359/1682/1940 1364/1725/1998 1360/1710/1968 +f 1181/1719/1985 1361/1721/1987 1179/1726/1999 +f 1315/1722/1988 1298/1727/2000 1363/1724/1997 +f 1298/1727/2000 1365/1728/2001 1363/1724/1997 +f 1361/1721/1987 1363/1724/1997 1366/1729/2002 +f 1361/1721/1987 1366/1729/2002 1179/1726/1999 +f 1365/1728/2001 1298/1727/2000 1367/1730/2003 +f 1298/1727/2000 1288/1731/2004 1367/1730/2003 +f 1363/1724/1997 1365/1728/2001 1368/1732/2005 +f 1363/1724/1997 1368/1732/2005 1366/1729/2002 +f 1365/1728/2001 1367/1730/2003 1369/1733/2006 +f 1368/1732/2005 1365/1728/2001 1369/1733/2006 +f 1367/1730/2003 1288/1731/2004 1370/1734/2007 +f 1367/1730/2003 1370/1734/2007 1369/1733/2006 +f 1288/1731/2004 1291/1735/2008 1370/1734/2007 +f 1362/1723/1991 1370/1734/2007 1291/1735/2008 +f 1293/1705/1963 1362/1723/1991 1291/1735/2008 +f 1177/1736/2009 1179/1726/1999 1366/1729/2002 +f 1371/1737/2010 1366/1729/2002 1368/1732/2005 +f 1371/1737/2010 1177/1736/2009 1366/1729/2002 +f 1368/1732/2005 1369/1733/2006 1372/1738/2011 +f 1373/1739/2012 1369/1733/2006 1370/1734/2007 +f 1362/1723/1991 1373/1739/2012 1370/1734/2007 +f 1373/1739/2012 1362/1723/1991 1360/1710/1968 +f 1374/1740/2013 1371/1737/2010 1368/1732/2005 +f 1374/1740/2013 1368/1732/2005 1372/1738/2011 +f 1375/1741/2014 1372/1738/2011 1369/1733/2006 +f 1373/1739/2012 1375/1741/2014 1369/1733/2006 +f 1177/1736/2009 1371/1737/2010 33/33/2015 +f 1371/1737/2010 1374/1740/2013 33/33/2015 +f 1374/1740/2013 1372/1738/2011 29/29/2016 +f 1374/1740/2013 32/32/2017 33/33/2015 +f 32/32/2017 1374/1740/2013 29/29/2016 +f 1375/1741/2014 30/30/2018 1372/1738/2011 +f 30/30/2018 29/29/2016 1372/1738/2011 +f 35/35/2019 1177/1736/2009 33/33/2015 +f 1375/1741/2014 1373/1739/2012 1376/1742/2020 +f 1373/1739/2012 1360/1710/1968 1376/1742/2020 +f 1364/1725/1998 1376/1742/2020 1360/1710/1968 +f 30/30/2018 1375/1741/2014 28/28/2021 +f 1375/1741/2014 1376/1742/2020 28/28/2021 +f 28/28/2021 1376/1742/2020 1364/1725/1998 +f 31/31/2022 28/28/2021 1364/1725/1998 +f 55/1743/2023 1377/1744/2024 1378/1745/2025 +f 1377/1744/2024 1379/1746/2026 1378/1745/2025 +f 1377/1744/2024 1380/1747/2027 1379/1746/2026 +f 1380/1747/2027 1381/1748/2028 1379/1746/2026 +f 1381/1748/2028 1382/1749/2029 1379/1746/2026 +f 1382/1749/2029 1381/1748/2028 1383/1750/2030 +f 1381/1748/2028 1384/1751/2031 1383/1750/2030 +f 1383/1750/2030 1384/1751/2031 1385/1752/2032 +f 1384/1751/2031 1386/1753/2033 1385/1752/2032 +f 1385/1752/2032 1386/1753/2033 1387/1754/2034 +f 1388/1755/2035 1385/1752/2032 1387/1754/2034 +f 1387/1754/2034 1389/1756/2036 1388/1755/2035 +f 1389/1756/2036 1390/1757/2037 1388/1755/2035 +f 1390/1757/2037 1389/1756/2036 1391/1758/2038 +f 1389/1756/2036 1392/1759/2039 1391/1758/2038 +f 1392/1759/2039 1393/1760/2040 1391/1758/2038 +f 1393/1760/2040 1394/1761/2041 1391/1758/2038 +f 1394/1761/2041 1393/1760/2040 1395/1762/2042 +f 1393/1760/2040 1396/1763/2043 1395/1762/2042 +f 1397/1764/2044 1249/1765/2045 111/1766/2046 +f 1398/1767/2047 1397/1764/2044 111/1766/2046 +f 1398/1767/2048 111/1766/2049 108/1768/2050 +f 1399/1769/2051 1398/1767/2048 108/1768/2050 +f 1400/1770/2052 54/1771/2053 90/1772/2054 +f 120/1773/2055 1400/1770/2052 90/1772/2054 +f 1400/1770/2056 120/1773/2057 118/1774/2058 +f 1401/1775/2059 1400/1770/2056 118/1774/2058 +f 1402/1776/2060 103/1777/2061 107/1778/2062 +f 1403/1779/2063 1402/1776/2060 107/1778/2062 +f 1401/1775/2064 118/1774/2064 117/1780/2065 +f 1404/1781/2065 1401/1775/2064 117/1780/2065 +f 1403/1779/2066 107/1778/2067 123/1782/2068 +f 1405/1783/2069 1403/1779/2066 123/1782/2068 +f 1404/1781/2070 117/1780/2071 115/1784/2072 +f 1406/1785/2072 1404/1781/2070 115/1784/2072 +f 103/1777/2073 1402/1776/2074 1399/1769/2075 +f 108/1768/2076 103/1777/2073 1399/1769/2075 +f 1406/1785/2077 115/1784/2078 1249/1765/2079 +f 1397/1764/2080 1406/1785/2077 1249/1765/2079 +f 1403/1779/2081 1405/1783/2082 100/73/2083 +f 100/73/2083 102/74/2084 1403/1779/2081 +f 1403/1779/2081 102/74/2084 1407/1786/2085 +f 1403/1779/2081 1407/1786/2085 1402/1776/2086 +f 1402/1776/2086 1407/1786/2085 1408/1787/2087 +f 1399/1769/2088 1402/1776/2086 1408/1787/2087 +f 1409/1788/2089 1399/1769/2088 1408/1787/2087 +f 1399/1769/2088 1409/1788/2089 1410/1789/2090 +f 1398/1767/2091 1399/1769/2088 1410/1789/2090 +f 1398/1767/2091 1410/1789/2090 1411/1790/2092 +f 1397/1764/2093 1398/1767/2091 1411/1790/2092 +f 1397/1764/2093 1411/1790/2092 1412/1791/2094 +f 1406/1785/2095 1397/1764/2093 1412/1791/2094 +f 1404/1781/2096 1406/1785/2095 1412/1791/2094 +f 1413/1792/2097 1404/1781/2096 1412/1791/2094 +f 1404/1781/2096 1413/1792/2097 1401/1775/2098 +f 1413/1792/2097 1380/1747/2099 1401/1775/2098 +f 1401/1775/2098 1380/1747/2099 1400/1770/2100 +f 1380/1747/2099 1377/1744/2101 1400/1770/2100 +f 1400/1770/2100 1377/1744/2101 54/1771/2102 +f 1377/1744/2101 55/1743/2103 54/1771/2102 +f 101/74/2104 100/73/2083 1414/1793/2105 +f 1415/1794/2106 101/74/2104 1414/1793/2105 +f 1414/1793/2105 1416/1795/2107 1415/1794/2106 +f 1416/1795/2107 1417/1796/2108 1415/1794/2106 +f 1417/1796/2108 1416/1795/2107 1418/1797/2109 +f 1416/1795/2107 1392/1759/2110 1418/1797/2109 +f 1418/1797/2109 1392/1759/2110 150/1798/2111 +f 150/1798/2111 1392/1759/2110 151/1799/2112 +f 151/1799/2112 1392/1759/2110 1389/1756/2113 +f 55/54/2114 1378/90/2115 53/52/2116 +f 1378/90/2115 1419/89/2117 53/52/2116 +f 1419/89/2117 51/50/2118 53/52/2116 +f 1420/87/2119 51/50/2118 1419/89/2117 +f 1421/88/2120 1420/87/2119 1419/89/2117 +f 1421/88/2120 1422/86/2121 1420/87/2119 +f 1422/86/2121 1423/85/2122 1420/87/2119 +f 1422/86/2121 1424/83/2123 1423/85/2122 +f 1424/83/2123 1425/84/2124 1423/85/2122 +f 1426/82/2125 1425/84/2124 1424/83/2123 +f 1427/81/2126 1426/82/2125 1424/83/2123 +f 1426/82/2125 1427/81/2126 153/79/2127 +f 1427/81/2126 1428/80/2128 153/79/2127 +f 1428/80/2128 1429/78/2129 153/79/2127 +f 1429/78/2129 65/63/2130 153/79/2127 +f 1430/91/2131 65/63/2130 1429/78/2129 +f 1431/92/2132 1430/91/2131 1429/78/2129 +f 1431/92/2132 1395/94/2133 1430/91/2131 +f 1395/94/2133 1396/93/2134 1430/91/2131 +f 79/1800/2135 81/1801/2136 45/44/2137 +f 43/42/2138 79/1800/2135 45/44/2137 +f 76/1802/2139 79/1800/2140 43/42/2141 +f 40/39/2142 76/1802/2139 43/42/2141 +f 52/51/2143 88/1803/2143 90/1804/2144 +f 54/53/2145 52/51/2143 90/1804/2144 +f 86/1805/2146 88/1803/2147 52/51/2148 +f 50/49/2149 86/1805/2146 52/51/2148 +f 71/1806/2150 74/1807/2151 38/38/2152 +f 37/37/2153 71/1806/2150 38/38/2152 +f 85/1808/2154 86/1805/2155 50/49/2156 +f 48/47/2154 85/1808/2154 50/49/2156 +f 73/1809/2157 71/1806/2158 37/37/2159 +f 57/56/2160 73/1809/2157 37/37/2159 +f 1345/1810/2161 85/1808/2162 48/47/2163 +f 47/46/2164 1345/1810/2161 48/47/2163 +f 40/39/2165 38/38/2166 74/1807/2167 +f 76/1802/2168 40/39/2165 74/1807/2167 +f 81/1801/2169 1345/1810/2170 47/46/2171 +f 45/44/2172 81/1801/2169 47/46/2171 +f 91/54/2173 89/52/2174 145/90/2175 +f 89/52/2174 1432/89/2176 145/90/2175 +f 89/52/2174 87/50/2177 1432/89/2176 +f 87/50/2177 1433/87/2178 1432/89/2176 +f 1433/87/2178 1434/88/2179 1432/89/2176 +f 1434/88/2179 1433/87/2178 1435/86/2180 +f 1433/87/2178 1436/85/2181 1435/86/2180 +f 1435/86/2180 1436/85/2181 1437/83/2182 +f 1436/85/2181 1438/84/2183 1437/83/2182 +f 1437/83/2182 1438/84/2183 1439/82/2184 +f 1440/81/2185 1437/83/2182 1439/82/2184 +f 1439/82/2184 152/100/2186 1440/81/2185 +f 152/100/2186 1441/80/2187 1440/81/2185 +f 1441/80/2187 152/100/2186 1442/78/2188 +f 152/100/2186 97/63/2189 1442/78/2188 +f 97/63/2189 1443/91/2190 1442/78/2188 +f 1443/91/2190 1444/92/2191 1442/78/2188 +f 1444/92/2191 1443/91/2190 149/94/2192 +f 1443/91/2190 148/93/2193 149/94/2192 +f 1445/1811/2194 1446/31/2195 1447/28/2196 +f 1445/1811/2194 1447/28/2196 1448/1812/2197 +f 1148/1705/2198 1448/1812/2197 1447/28/2196 +f 1449/30/2199 1148/1705/2198 1447/28/2196 +f 1448/1812/2197 1236/1679/2200 1445/1811/2194 +f 1448/1812/2197 1148/1705/2198 1236/1679/2200 +f 1148/1705/2198 1449/30/2199 1145/1735/2201 +f 1449/30/2199 1450/1813/2202 1145/1735/2201 +f 1146/1731/2203 1145/1735/2201 1450/1813/2202 +f 1236/1679/2200 1451/1677/2204 1445/1811/2194 +f 1452/1814/2205 1146/1731/2203 1450/1813/2202 +f 1236/1679/2200 1235/1676/2206 1451/1677/2204 +f 1235/1676/2206 1453/1674/2207 1451/1677/2204 +f 1453/1674/2207 1235/1676/2206 1237/1675/2208 +f 1237/1675/2208 1232/1673/2209 1453/1674/2207 +f 1232/1673/2209 1237/1675/2208 1234/1678/2210 +f 1237/1675/2208 1233/1683/2211 1234/1678/2210 +f 1232/1673/2209 1454/1672/2212 1453/1674/2207 +f 1234/1678/2210 1233/1683/2211 1120/1684/2213 +f 1233/1683/2211 1117/1685/2214 1120/1684/2213 +f 1120/1684/2213 1117/1685/2214 1111/1686/2215 +f 1454/1672/2212 1232/1673/2209 1141/1671/2216 +f 1117/1685/2214 1105/1687/2217 1111/1686/2215 +f 1455/1670/2218 1454/1672/2212 1141/1671/2216 +f 1455/1670/2218 1141/1671/2216 1133/1669/2219 +f 1456/1668/2220 1455/1670/2218 1133/1669/2219 +f 1456/1668/2220 1133/1669/2219 1136/1666/2221 +f 1457/1667/2222 1456/1668/2220 1136/1666/2221 +f 1457/1667/2222 1136/1666/2221 1458/1665/2223 +f 1136/1666/2221 1140/1663/2224 1458/1665/2223 +f 1458/1665/2223 1140/1663/2224 1459/1664/2225 +f 1140/1663/2224 1460/1662/2226 1459/1664/2225 +f 1460/1662/2226 1140/1663/2224 1231/1660/2227 +f 1230/1727/2228 1146/1731/2203 1452/1814/2205 +f 1461/1659/2229 1460/1662/2226 1231/1660/2227 +f 1461/1659/2229 1231/1660/2227 1248/1661/2230 +f 1459/1664/2225 1460/1662/2226 123/1656/2231 +f 1462/1649/2232 1461/1659/2229 1248/1661/2230 +f 107/1652/2233 1460/1662/2226 1461/1659/2229 +f 1462/1649/2232 107/1652/2233 1461/1659/2229 +f 1460/1662/2226 107/1652/2233 123/1656/2231 +f 108/1642/2234 1462/1649/2232 1248/1661/2230 +f 1121/1720/2235 108/1642/2234 1248/1661/2230 +f 1121/1720/2235 1124/1718/2236 108/1642/2234 +f 1124/1718/2236 111/1640/2237 108/1642/2234 +f 1111/1686/2215 1105/1687/2217 1112/1688/2238 +f 1124/1718/2236 1125/1717/2239 111/1640/2237 +f 1125/1717/2239 1249/1637/2240 111/1640/2237 +f 1125/1717/2239 1128/1716/2241 1249/1637/2240 +f 1128/1716/2241 115/1658/2242 1249/1637/2240 +f 1128/1716/2241 1130/1715/2243 115/1658/2242 +f 1130/1715/2243 117/1654/2244 115/1658/2242 +f 1130/1715/2243 1131/1713/2245 117/1654/2244 +f 1131/1713/2245 118/1648/2246 117/1654/2244 +f 118/1648/2246 1131/1713/2245 1138/1711/2247 +f 1463/1644/2248 118/1648/2246 1138/1711/2247 +f 1463/1644/2248 1138/1711/2247 1464/1712/2249 +f 1465/1709/2250 1464/1712/2249 1138/1711/2247 +f 1246/1708/2251 1465/1709/2250 1138/1711/2247 +f 90/1645/2252 1463/1644/2248 1464/1712/2249 +f 1246/1708/2251 1247/1706/2253 1465/1709/2250 +f 1466/1815/2254 1230/1727/2228 1452/1814/2205 +f 1247/1706/2253 1467/1707/2255 1465/1709/2250 +f 1467/1707/2255 1247/1706/2253 1245/1701/2256 +f 1468/1704/2257 1467/1707/2255 1245/1701/2256 +f 1245/1701/2256 1244/1696/2258 1468/1704/2257 +f 1244/1696/2258 1469/1698/2259 1468/1704/2257 +f 1105/1687/2217 1108/1689/2260 1112/1688/2238 +f 1469/1698/2259 1244/1696/2258 1239/1697/2261 +f 1239/1697/2261 1244/1696/2258 1242/1695/2262 +f 1244/1696/2258 1243/1694/2263 1242/1695/2262 +f 1470/1699/2264 1469/1698/2259 1239/1697/2261 +f 1242/1695/2262 1243/1694/2263 1241/1693/2265 +f 1243/1694/2263 1240/1692/2266 1241/1693/2265 +f 1241/1693/2265 1240/1692/2266 1114/1691/2267 +f 1240/1692/2266 1116/1690/2268 1114/1691/2267 +f 1108/1689/2260 1114/1691/2267 1116/1690/2268 +f 1112/1688/2238 1108/1689/2260 1116/1690/2268 +f 1470/1699/2264 1239/1697/2261 1228/1702/2269 +f 1471/1700/2270 1470/1699/2264 1228/1702/2269 +f 1471/1700/2270 1228/1702/2269 1229/1703/2271 +f 1472/1714/2272 1471/1700/2270 1229/1703/2271 +f 1472/1714/2272 1229/1703/2271 1473/33/2273 +f 1229/1703/2271 1238/1722/2274 1473/33/2273 +f 1238/1722/2274 1230/1727/2228 1466/1815/2254 +f 1238/1722/2274 1474/1816/2275 1473/33/2273 +f 1466/1815/2254 1474/1816/2275 1238/1722/2274 +f 1475/35/2276 1472/1714/2272 1473/33/2273 +f 1476/28/2277 1477/31/2278 1478/1811/2279 +f 1479/1812/2280 1476/28/2277 1478/1811/2279 +f 1309/1679/2281 1479/1812/2280 1478/1811/2279 +f 1480/1677/2282 1309/1679/2281 1478/1811/2279 +f 1479/1812/2280 1292/1705/2283 1476/28/2277 +f 1309/1679/2281 1292/1705/2283 1479/1812/2280 +f 1310/1676/2284 1309/1679/2281 1480/1677/2282 +f 1292/1705/2283 1481/30/2285 1476/28/2277 +f 1482/1674/2286 1310/1676/2284 1480/1677/2282 +f 1292/1705/2283 1290/1735/2287 1481/30/2285 +f 1290/1735/2287 1483/1813/2288 1481/30/2285 +f 1483/1813/2288 1290/1735/2287 1289/1731/2289 +f 1484/1814/2290 1483/1813/2288 1289/1731/2289 +f 1289/1731/2289 1299/1727/2291 1484/1814/2290 +f 1299/1727/2291 1485/1815/2292 1484/1814/2290 +f 1485/1815/2292 1299/1727/2291 1314/1722/2293 +f 1314/1722/2293 1486/1816/2294 1485/1815/2292 +f 1487/33/2295 1486/1816/2294 1314/1722/2293 +f 1487/33/2295 1314/1722/2293 1297/1703/2296 +f 1487/33/2295 1297/1703/2296 1472/1714/2297 +f 1472/1714/2297 1297/1703/2296 1471/1700/2298 +f 1297/1703/2296 1296/1702/2299 1471/1700/2298 +f 1475/35/2300 1487/33/2295 1472/1714/2297 +f 1471/1700/2298 1296/1702/2299 1470/1699/2301 +f 1296/1702/2299 1317/1697/2302 1470/1699/2301 +f 1470/1699/2301 1317/1697/2302 1469/1698/2303 +f 1317/1697/2302 1325/1696/2304 1469/1698/2303 +f 1325/1696/2304 1317/1697/2302 1323/1695/2305 +f 1312/1675/2306 1310/1676/2284 1482/1674/2286 +f 1326/1694/2307 1325/1696/2304 1323/1695/2305 +f 1468/1704/2308 1469/1698/2303 1325/1696/2304 +f 1326/1694/2307 1323/1695/2305 1321/1693/2309 +f 1319/1692/2310 1326/1694/2307 1321/1693/2309 +f 1321/1693/2309 1259/1691/2311 1319/1692/2310 +f 1329/1701/2312 1468/1704/2308 1325/1696/2304 +f 1468/1704/2308 1329/1701/2312 1467/1707/2313 +f 1329/1701/2312 1333/1706/2314 1467/1707/2313 +f 1465/1709/2315 1467/1707/2313 1333/1706/2314 +f 1332/1708/2316 1465/1709/2315 1333/1706/2314 +f 1465/1709/2315 1332/1708/2316 1283/1711/2317 +f 1464/1712/2318 1465/1709/2315 1283/1711/2317 +f 1464/1712/2318 1283/1711/2317 88/1644/2319 +f 86/1648/2320 88/1644/2319 1283/1711/2317 +f 1276/1713/2321 86/1648/2320 1283/1711/2317 +f 1259/1691/2311 1261/1690/2322 1319/1692/2310 +f 90/1645/2323 1464/1712/2318 88/1644/2319 +f 85/1654/2324 86/1648/2320 1276/1713/2321 +f 1275/1715/2325 85/1654/2324 1276/1713/2321 +f 1345/1658/2326 85/1654/2324 1275/1715/2325 +f 1273/1716/2327 1345/1658/2326 1275/1715/2325 +f 81/1637/2328 1345/1658/2326 1273/1716/2327 +f 1270/1717/2329 81/1637/2328 1273/1716/2327 +f 79/1640/2330 81/1637/2328 1270/1717/2329 +f 1303/1673/2331 1312/1675/2306 1482/1674/2286 +f 1488/1672/2332 1303/1673/2331 1482/1674/2286 +f 1269/1718/2333 79/1640/2330 1270/1717/2329 +f 76/1642/2334 79/1640/2330 1269/1718/2333 +f 1261/1690/2322 1259/1691/2311 1253/1689/2335 +f 1268/1720/2336 76/1642/2334 1269/1718/2333 +f 1335/1661/2337 76/1642/2334 1268/1720/2336 +f 1335/1661/2337 74/1649/2338 76/1642/2334 +f 1335/1661/2337 1489/1659/2339 74/1649/2338 +f 74/1649/2338 1489/1659/2339 71/1652/2340 +f 1489/1659/2339 1490/1662/2341 71/1652/2340 +f 73/1656/2342 71/1652/2340 1490/1662/2341 +f 1491/1664/2343 73/1656/2342 1490/1662/2341 +f 1255/1688/2344 1261/1690/2322 1253/1689/2335 +f 1255/1688/2344 1253/1689/2335 1252/1687/2345 +f 1256/1686/2346 1255/1688/2344 1252/1687/2345 +f 1256/1686/2346 1252/1687/2345 1263/1685/2347 +f 1264/1684/2348 1256/1686/2346 1263/1685/2347 +f 1264/1684/2348 1263/1685/2347 1305/1683/2349 +f 1306/1678/2350 1264/1684/2348 1305/1683/2349 +f 1305/1683/2349 1312/1675/2306 1306/1678/2350 +f 1312/1675/2306 1303/1673/2331 1306/1678/2350 +f 1287/1671/2351 1303/1673/2331 1488/1672/2332 +f 1492/1670/2352 1287/1671/2351 1488/1672/2332 +f 1280/1669/2353 1287/1671/2351 1492/1670/2352 +f 1493/1668/2354 1280/1669/2353 1492/1670/2352 +f 1281/1666/2355 1280/1669/2353 1493/1668/2354 +f 1494/1667/2356 1281/1666/2355 1493/1668/2354 +f 1281/1666/2355 1494/1667/2356 1495/1665/2357 +f 1284/1663/2358 1281/1666/2355 1495/1665/2357 +f 1284/1663/2358 1495/1665/2357 1491/1664/2359 +f 1490/1662/2360 1284/1663/2358 1491/1664/2359 +f 1301/1660/2361 1284/1663/2358 1490/1662/2360 +f 1301/1660/2361 1490/1662/2360 1489/1659/2362 +f 1335/1661/2363 1301/1660/2361 1489/1659/2362 +f 112/1817/2364 1411/1818/2364 1410/1819/2365 +f 110/1820/2366 112/1817/2364 1410/1819/2365 +f 1410/1819/2367 1409/1821/2368 109/1822/2368 +f 110/1820/2369 1410/1819/2367 109/1822/2368 +f 119/1823/2370 1380/1824/2371 1413/1825/2372 +f 116/1826/2373 119/1823/2370 1413/1825/2372 +f 133/1827/2374 1391/1828/2375 1394/1829/2376 +f 147/1830/2377 133/1827/2374 1394/1829/2376 +f 144/1831/2378 1379/1832/2379 1382/1833/2380 +f 143/1834/2381 144/1831/2378 1382/1833/2380 +f 142/1835/2382 1381/1836/2383 1380/1824/2384 +f 119/1823/2385 142/1835/2382 1380/1824/2384 +f 1390/1837/2386 1391/1828/2387 133/1827/2388 +f 135/1838/2389 1390/1837/2386 133/1827/2388 +f 1413/1825/2390 1412/1839/2391 114/1840/2392 +f 116/1826/2393 1413/1825/2390 114/1840/2392 +f 143/1834/2394 1382/1833/2395 1383/1841/2396 +f 141/1842/2397 143/1834/2394 1383/1841/2396 +f 140/1843/2398 1384/1844/2399 1381/1836/2400 +f 142/1835/2401 140/1843/2398 1381/1836/2400 +f 114/1840/2402 1412/1839/2403 1411/1818/2404 +f 112/1817/2405 114/1840/2402 1411/1818/2404 +f 141/1842/2406 1383/1841/2406 1385/1845/2407 +f 138/1846/2407 141/1842/2406 1385/1845/2407 +f 139/1847/2408 1386/1848/2409 1384/1849/2410 +f 140/1850/2411 139/1847/2408 1384/1849/2410 +f 136/1851/2412 1388/1852/2413 1390/1837/2414 +f 135/1838/2415 136/1851/2412 1390/1837/2414 +f 126/1853/2416 1415/1854/2417 1417/1855/2418 +f 128/1856/2419 126/1853/2416 1417/1855/2418 +f 1387/1857/2420 1386/1848/2421 139/1847/2422 +f 137/1858/2423 1387/1857/2420 139/1847/2422 +f 138/1846/2424 1385/1845/2425 1388/1852/2426 +f 136/1851/2427 138/1846/2424 1388/1852/2426 +f 145/1859/2428 1378/1860/2429 1379/1832/2430 +f 144/1831/2431 145/1859/2428 1379/1832/2430 +f 147/1830/2432 1394/1829/2433 1395/1861/2434 +f 149/1862/2435 147/1830/2432 1395/1861/2434 +f 42/1863/2436 44/1864/2437 80/1865/2438 +f 78/1866/2439 42/1863/2436 80/1865/2438 +f 42/1863/2440 78/1866/2441 77/1867/2442 +f 41/1868/2442 42/1863/2440 77/1867/2442 +f 49/1869/2443 51/1870/2444 87/1871/2444 +f 84/1872/2443 49/1869/2443 87/1871/2444 +f 1431/1873/2445 1429/1874/2446 1442/1875/2447 +f 1444/1876/2448 1431/1873/2445 1442/1875/2447 +f 1421/1877/2449 1419/1878/2450 1432/1879/2451 +f 1434/1880/2452 1421/1877/2449 1432/1879/2451 +f 51/1870/2453 1420/1881/2454 1433/1882/2455 +f 87/1871/2456 51/1870/2453 1433/1882/2455 +f 1428/1883/2457 1441/1884/2458 1442/1875/2459 +f 1429/1874/2460 1428/1883/2457 1442/1875/2459 +f 49/1869/2461 84/1872/2462 82/1885/2463 +f 46/1886/2464 49/1869/2461 82/1885/2463 +f 1422/1887/2465 1421/1877/2466 1434/1880/2467 +f 1435/1888/2468 1422/1887/2465 1434/1880/2467 +f 1420/1881/2469 1423/1889/2470 1436/1890/2471 +f 1433/1882/2472 1420/1881/2469 1436/1890/2471 +f 44/1864/2473 46/1886/2474 82/1885/2475 +f 80/1865/2476 44/1864/2473 82/1885/2475 +f 1424/1891/2477 1422/1887/2478 1435/1888/2478 +f 1437/1892/2477 1424/1891/2477 1435/1888/2478 +f 1423/1893/2479 1425/1894/2480 1438/1895/2481 +f 1436/1896/2482 1423/1893/2479 1438/1895/2481 +f 1428/1883/2483 1427/1897/2484 1440/1898/2485 +f 1441/1884/2458 1428/1883/2483 1440/1898/2485 +f 63/1899/2486 61/1900/2487 93/1901/2488 +f 95/1902/2489 63/1899/2486 93/1901/2488 +f 1426/1903/2490 1439/1904/2491 1438/1895/2492 +f 1425/1894/2493 1426/1903/2490 1438/1895/2492 +f 1427/1897/2494 1424/1891/2495 1437/1892/2496 +f 1440/1898/2497 1427/1897/2494 1437/1892/2496 +f 1419/1878/2498 1378/1905/2499 145/1906/2500 +f 1432/1879/2501 1419/1878/2498 145/1906/2500 +f 1395/1907/2502 1431/1873/2503 1444/1876/2504 +f 149/1908/2505 1395/1907/2502 1444/1876/2504 +f 109/1822/2506 1409/1821/2507 1408/1909/2508 +f 104/1910/2509 109/1822/2506 1408/1909/2508 +f 104/1910/2509 1408/1909/2508 105/1911/2510 +f 1408/1909/2508 1407/1912/2511 105/1911/2510 +f 105/1911/2510 1407/1912/2511 102/1913/2512 +f 106/1914/2513 105/1911/2510 102/1913/2512 +f 126/1853/2514 124/1915/2515 1415/1854/2516 +f 124/1915/2515 101/1916/2517 1415/1854/2516 +f 124/1915/2515 106/1917/2518 101/1916/2517 +f 106/1917/2518 102/1918/2519 101/1916/2517 +f 93/1901/2520 61/1900/2521 69/1919/2522 +f 61/1900/2521 59/1920/2523 69/1919/2522 +f 69/1919/2522 59/1920/2523 70/1921/2524 +f 59/1920/2523 58/1922/2525 70/1921/2524 +f 39/1923/2526 41/1868/2527 77/1867/2528 +f 75/1924/2529 39/1923/2526 77/1867/2528 +f 75/1924/2529 72/1925/2530 39/1923/2526 +f 72/1925/2530 36/1926/2531 39/1923/2526 +f 58/1927/2532 36/1926/2531 72/1925/2530 +f 70/1928/2533 58/1927/2532 72/1925/2530 +f 128/1856/2534 1417/1855/2535 129/1929/2536 +f 1417/1855/2535 1418/1930/2537 129/1929/2536 +f 129/1929/2536 1418/1930/2537 131/1931/2538 +f 1418/1930/2537 150/1932/2539 131/1931/2538 +f 1387/1857/2540 137/1858/2540 1389/1933/2541 +f 137/1858/2540 134/1934/2542 1389/1933/2541 +f 151/96/2543 1389/1933/2541 134/1934/2542 +f 132/95/2544 151/96/2543 134/1934/2542 +f 1426/1903/2545 153/1935/2546 1439/1904/2545 +f 153/1935/2546 152/1936/2547 1439/1904/2545 +f 152/1936/2547 153/1935/2546 67/98/2548 +f 99/97/2549 152/1936/2547 67/98/2548 +f 63/1899/2550 95/1902/2551 96/1937/2552 +f 64/1938/2553 63/1899/2550 96/1937/2552 +f 96/1937/2552 98/1939/2554 64/1938/2553 +f 98/1939/2554 66/1940/2555 64/1938/2553 +f 1496/1941/2556 1497/1942/2557 1498/1943/2558 +f 1499/1944/2559 1496/1941/2556 1498/1943/2558 +f 1500/1945/2560 1501/1946/2561 1502/1947/2562 +f 1503/1948/2563 1500/1945/2560 1502/1947/2562 +f 1502/1947/2562 1504/1949/2564 1503/1948/2563 +f 1499/1944/2565 1505/1950/2565 1496/1941/2565 +f 1505/1950/2565 1506/1951/2565 1496/1941/2565 +f 1505/1950/2565 1507/1952/2566 1506/1951/2565 +f 1507/1952/2566 1508/1953/2567 1506/1951/2565 +f 1508/1953/2567 1507/1952/2566 1509/1954/2568 +f 1510/1955/2569 1508/1953/2567 1509/1954/2568 +f 1510/1955/2570 1509/1954/2571 1501/1946/2572 +f 1500/1945/2573 1510/1955/2570 1501/1946/2572 +f 156/103/2574 1498/1943/2575 1497/1942/2576 +f 154/101/2577 156/103/2574 1497/1942/2576 +f 1511/1956/2578 1512/1957/2579 1513/1958/2580 +f 1514/1959/2581 1511/1956/2578 1513/1958/2580 +f 1515/1960/2582 1516/1961/2583 1512/1962/2584 +f 1511/1963/2585 1515/1960/2582 1512/1962/2584 +f 1517/1964/2586 1518/1965/2587 1519/1966/2588 +f 1518/1965/2587 1520/1967/2589 1519/1966/2588 +f 1520/1967/2589 1518/1965/2587 1521/1968/2590 +f 1522/1969/2591 1520/1967/2589 1521/1968/2590 +f 1523/1970/2592 1519/1966/2588 1520/1967/2589 +f 1522/1969/2591 1521/1968/2590 1524/1971/2593 +f 1525/1972/2594 1522/1969/2591 1524/1971/2593 +f 1526/1973/2595 1520/1967/2589 1522/1969/2591 +f 1526/1973/2595 1523/1970/2592 1520/1967/2589 +f 1525/1972/2594 1524/1971/2593 1527/1974/2596 +f 1528/1975/2597 1522/1969/2591 1525/1972/2594 +f 1528/1975/2597 1526/1973/2595 1522/1969/2591 +f 1529/1976/2598 1525/1972/2594 1527/1974/2596 +f 1530/1977/2599 1528/1975/2597 1525/1972/2594 +f 1530/1977/2599 1525/1972/2594 1529/1976/2598 +f 1529/1976/2598 1527/1974/2596 1531/1978/2600 +f 1532/1979/2601 1523/1970/2592 1526/1973/2595 +f 1533/1980/2602 1526/1973/2595 1528/1975/2597 +f 1533/1980/2602 1532/1979/2601 1526/1973/2595 +f 1534/1981/2603 1529/1976/2598 1531/1978/2600 +f 1535/1982/2604 1528/1975/2597 1530/1977/2599 +f 1535/1982/2604 1533/1980/2602 1528/1975/2597 +f 1534/1981/2603 1531/1978/2600 1536/1983/2605 +f 1537/1984/2606 1530/1977/2599 1529/1976/2598 +f 1537/1984/2606 1529/1976/2598 1534/1981/2603 +f 1538/1985/2607 1535/1982/2604 1530/1977/2599 +f 1538/1985/2607 1530/1977/2599 1537/1984/2606 +f 1539/1986/2608 1534/1981/2603 1536/1983/2605 +f 1540/1987/2609 1537/1984/2606 1534/1981/2603 +f 1540/1987/2609 1534/1981/2603 1539/1986/2608 +f 1541/1988/2610 1532/1979/2601 1533/1980/2602 +f 1536/1983/2605 1514/1959/2611 1539/1986/2608 +f 1542/1989/2612 1533/1980/2602 1535/1982/2604 +f 1542/1989/2612 1541/1988/2610 1533/1980/2602 +f 1543/1990/2613 1535/1982/2604 1538/1985/2607 +f 1543/1990/2613 1542/1989/2612 1535/1982/2604 +f 1544/1991/2614 1538/1985/2607 1537/1984/2606 +f 1544/1991/2614 1537/1984/2606 1540/1987/2609 +f 1545/1992/2615 1543/1990/2613 1538/1985/2607 +f 1545/1992/2615 1538/1985/2607 1544/1991/2614 +f 1546/1993/2616 1540/1987/2609 1539/1986/2608 +f 1547/1994/2617 1544/1991/2614 1540/1987/2609 +f 1547/1994/2617 1540/1987/2609 1546/1993/2616 +f 1548/1995/2618 1541/1988/2610 1542/1989/2612 +f 1549/1996/2619 1542/1989/2612 1543/1990/2613 +f 1549/1996/2619 1548/1995/2618 1542/1989/2612 +f 1550/1997/2620 1543/1990/2613 1545/1992/2615 +f 1550/1997/2620 1549/1996/2619 1543/1990/2613 +f 1551/1998/2621 1545/1992/2615 1544/1991/2614 +f 1551/1998/2621 1544/1991/2614 1547/1994/2617 +f 1552/1999/2622 1550/1997/2620 1545/1992/2615 +f 1552/1999/2622 1545/1992/2615 1551/1998/2621 +f 1553/2000/2623 1547/1994/2617 1546/1993/2616 +f 1554/2001/2624 1551/1998/2621 1547/1994/2617 +f 1554/2001/2624 1547/1994/2617 1553/2000/2623 +f 1555/2002/2625 1548/1995/2618 1549/1996/2619 +f 1556/2003/2626 1549/1996/2619 1550/1997/2620 +f 1556/2003/2626 1555/2002/2625 1549/1996/2619 +f 1557/2004/2627 1550/1997/2620 1552/1999/2622 +f 1557/2004/2627 1556/2003/2626 1550/1997/2620 +f 1558/2005/2628 1552/1999/2622 1551/1998/2621 +f 1558/2005/2628 1551/1998/2621 1554/2001/2624 +f 1557/2004/2627 1552/1999/2622 1559/2006/2629 +f 1560/2007/2630 1555/2002/2625 1556/2003/2626 +f 1561/2008/2631 1556/2003/2626 1557/2004/2627 +f 1561/2008/2631 1560/2007/2630 1556/2003/2626 +f 1559/2006/2629 1561/2008/2631 1557/2004/2627 +f 1552/1999/2622 1562/2009/2632 1559/2006/2629 +f 1559/2006/2629 1562/2009/2632 1561/2008/2631 +f 1562/2009/2632 1552/1999/2622 1563/2010/2633 +f 1552/1999/2622 1564/2011/2634 1563/2010/2633 +f 1552/1999/2622 1558/2005/2628 1564/2011/2634 +f 1560/2007/2630 1561/2008/2631 1565/2012/2635 +f 1562/2009/2632 1565/2012/2635 1561/2008/2631 +f 1562/2009/2632 1563/2010/2633 1565/2012/2635 +f 1566/2013/2636 1560/2007/2630 1565/2012/2635 +f 1514/1959/2611 1513/1958/2637 1539/1986/2608 +f 1546/1993/2616 1539/1986/2608 1513/1958/2637 +f 1567/2014/2638 1558/2005/2628 1554/2001/2624 +f 1568/2015/2639 1563/2010/2633 1564/2011/2634 +f 1563/2010/2633 1568/2015/2639 1565/2012/2635 +f 1566/2013/2636 1565/2012/2635 1568/2015/2639 +f 1569/2016/2640 1568/2015/2639 1564/2011/2634 +f 1564/2011/2634 1558/2005/2628 1570/2017/2641 +f 1570/2017/2641 1558/2005/2628 1567/2014/2638 +f 1571/2018/2642 1566/2013/2636 1568/2015/2639 +f 1571/2018/2642 1568/2015/2639 1569/2016/2640 +f 1569/2016/2640 1564/2011/2634 1572/2019/2643 +f 1572/2019/2643 1564/2011/2634 1570/2017/2641 +f 1573/2020/2644 1571/2018/2642 1569/2016/2640 +f 1567/2014/2638 1554/2001/2624 1506/2021/2645 +f 1573/2020/2644 1569/2016/2640 1574/2022/2646 +f 1574/2022/2646 1569/2016/2640 1572/2019/2643 +f 1553/2000/2623 1546/1993/2616 1575/2023/2647 +f 1575/2023/2647 1546/1993/2616 1513/1958/2637 +f 1554/2001/2624 1553/2000/2623 1496/2024/2648 +f 1496/2024/2648 1506/2021/2645 1554/2001/2624 +f 1576/2025/2649 1573/2020/2644 1574/2022/2646 +f 1572/2019/2643 1577/2026/2650 1574/2022/2646 +f 1572/2019/2643 1570/2017/2641 1577/2026/2650 +f 1576/2025/2649 1574/2022/2646 1578/2027/2651 +f 1577/2026/2650 1578/2027/2651 1574/2022/2646 +f 1579/2028/2652 1570/2017/2641 1567/2014/2638 +f 1577/2026/2650 1570/2017/2641 1580/2029/2653 +f 1570/2017/2641 1579/2028/2652 1580/2029/2653 +f 1577/2026/2650 1580/2029/2653 1578/2027/2651 +f 1579/2028/2652 1567/2014/2638 1508/2030/2654 +f 1508/2030/2654 1567/2014/2638 1506/2021/2645 +f 1581/2031/2655 1576/2025/2649 1578/2027/2651 +f 1580/2029/2653 1582/2032/2656 1578/2027/2651 +f 1578/2027/2651 1582/2032/2656 1581/2031/2655 +f 1579/2028/2652 1583/2033/2657 1580/2029/2653 +f 1580/2029/2653 1583/2033/2657 1582/2032/2656 +f 1510/2034/2658 1579/2028/2652 1508/2030/2654 +f 1583/2033/2657 1579/2028/2652 1510/2034/2658 +f 1582/2032/2656 1584/2035/2659 1581/2031/2655 +f 1582/2032/2656 1585/2036/2660 1584/2035/2659 +f 1583/2033/2657 1585/2036/2660 1582/2032/2656 +f 1585/2036/2660 1586/2037/2661 1584/2035/2659 +f 1583/2033/2657 1587/2038/2662 1585/2036/2660 +f 1587/2038/2662 1583/2033/2657 1510/2034/2658 +f 1586/2037/2661 1585/2036/2660 1588/2039/2663 +f 1587/2038/2662 1588/2039/2663 1585/2036/2660 +f 1589/2040/2664 1587/2038/2662 1510/2034/2658 +f 1587/2038/2662 1589/2040/2664 1588/2039/2663 +f 1553/2000/2623 1497/2041/2665 1496/2024/2648 +f 1590/2042/2666 1589/2040/2664 1510/2034/2658 +f 1553/2000/2623 1591/2043/2667 1497/2041/2665 +f 1591/2043/2667 1553/2000/2623 1575/2023/2647 +f 1590/2042/2666 1510/2034/2658 1592/2044/2668 +f 1593/2045/2669 1586/2037/2661 1588/2039/2663 +f 1592/2044/2668 1510/2034/2658 1594/2046/2670 +f 1510/2034/2658 1500/2047/2671 1594/2046/2670 +f 1589/2040/2664 1595/2048/2672 1588/2039/2663 +f 1589/2040/2664 1590/2042/2666 1595/2048/2672 +f 1593/2045/2669 1588/2039/2663 1595/2048/2672 +f 1590/2042/2666 1592/2044/2668 1596/2049/2673 +f 1590/2042/2666 1596/2049/2673 1595/2048/2672 +f 1594/2046/2670 1597/2050/2674 1592/2044/2668 +f 1598/2051/2675 1593/2045/2669 1595/2048/2672 +f 1500/2047/2671 1503/2052/2676 1594/2046/2670 +f 1503/2052/2676 1597/2050/2674 1594/2046/2670 +f 1599/2053/2677 1598/2051/2675 1595/2048/2672 +f 1596/2049/2673 1599/2053/2677 1595/2048/2672 +f 1592/2044/2668 1600/2054/2678 1596/2049/2673 +f 1597/2050/2674 1600/2054/2678 1592/2044/2668 +f 1601/2055/2679 1599/2053/2677 1596/2049/2673 +f 1600/2054/2678 1601/2055/2679 1596/2049/2673 +f 1602/2056/2680 1601/2055/2679 1600/2054/2678 +f 1597/2050/2674 1602/2056/2680 1600/2054/2678 +f 1504/2057/2681 1602/2056/2680 1597/2050/2674 +f 1503/2052/2676 1504/2057/2681 1597/2050/2674 +f 1591/2043/2667 154/2058/2667 1497/2041/2665 +f 1575/2023/2682 1513/1958/2683 1512/1957/2683 +f 1603/2059/2682 1575/2023/2682 1512/1957/2683 +f 1591/2043/2684 1575/2023/2682 1603/2059/2682 +f 1604/2060/2684 1591/2043/2684 1603/2059/2682 +f 1591/2043/2684 1604/2060/2684 154/2058/2683 +f 1604/2060/2684 155/2061/2683 154/2058/2683 +f 155/2062/2685 1604/2063/2686 156/2064/2685 +f 1604/2063/2686 1605/2065/2686 156/2064/2685 +f 1605/2065/2686 1604/2063/2686 1603/2066/2685 +f 1606/2067/2685 1605/2065/2686 1603/2066/2685 +f 1606/2067/2685 1603/2066/2685 1512/1962/2685 +f 1516/1961/2685 1606/2067/2685 1512/1962/2685 +f 1607/2068/2687 1516/1961/2688 1515/1960/2689 +f 1608/2069/2690 1607/2068/2687 1515/1960/2689 +f 1607/2068/2687 1608/2069/2690 1609/2070/2691 +f 1608/2069/2690 1610/2071/2692 1609/2070/2691 +f 1609/2070/2691 1610/2071/2692 1611/2072/2693 +f 1610/2071/2692 1612/2073/2694 1611/2072/2693 +f 1611/2072/2693 1612/2073/2694 1613/2074/2695 +f 1612/2073/2694 1614/2075/2696 1613/2074/2695 +f 1613/2074/2695 1614/2075/2696 1615/2076/2697 +f 1614/2075/2696 1616/2077/2698 1615/2076/2697 +f 1615/2076/2697 1616/2077/2698 1617/2078/2699 +f 1616/2077/2698 1618/2079/2700 1617/2078/2699 +f 1617/2078/2699 1618/2079/2700 1519/2080/2701 +f 1618/2079/2700 1517/2081/2702 1519/2080/2701 +f 156/2064/2703 1605/2065/2704 1498/2082/2705 +f 1605/2065/2704 1619/2083/2706 1498/2082/2705 +f 1619/2083/2706 1605/2065/2704 1606/2067/2707 +f 1620/2084/2708 1619/2083/2706 1606/2067/2707 +f 1620/2084/2708 1606/2067/2707 1516/1961/2709 +f 1619/2083/2706 1499/2085/2710 1498/2082/2705 +f 1607/2068/2711 1620/2084/2708 1516/1961/2709 +f 1621/2086/2712 1620/2084/2708 1607/2068/2711 +f 1622/2087/2713 1619/2083/2706 1620/2084/2708 +f 1621/2086/2712 1622/2087/2713 1620/2084/2708 +f 1609/2070/2714 1621/2086/2712 1607/2068/2711 +f 1619/2083/2706 1623/2088/2715 1499/2085/2710 +f 1619/2083/2706 1622/2087/2713 1623/2088/2715 +f 1624/2089/2716 1621/2086/2712 1609/2070/2714 +f 1625/2090/2717 1622/2087/2713 1621/2086/2712 +f 1624/2089/2716 1625/2090/2717 1621/2086/2712 +f 1611/2072/2718 1624/2089/2716 1609/2070/2714 +f 1623/2088/2715 1505/2091/2719 1499/2085/2710 +f 1623/2088/2715 1622/2087/2713 1626/2092/2720 +f 1622/2087/2713 1625/2090/2717 1626/2092/2720 +f 1627/2093/2721 1624/2089/2716 1611/2072/2718 +f 1613/2074/2722 1627/2093/2721 1611/2072/2718 +f 1505/2091/2719 1623/2088/2715 1628/2094/2723 +f 1628/2094/2723 1623/2088/2715 1629/2095/2724 +f 1623/2088/2715 1626/2092/2720 1629/2095/2724 +f 1630/2096/2725 1625/2090/2717 1624/2089/2716 +f 1627/2093/2721 1630/2096/2725 1624/2089/2716 +f 1631/2097/2726 1626/2092/2720 1625/2090/2717 +f 1630/2096/2725 1631/2097/2726 1625/2090/2717 +f 1507/2098/2727 1505/2091/2719 1628/2094/2723 +f 1628/2094/2723 1629/2095/2724 1632/2099/2728 +f 1507/2098/2727 1628/2094/2723 1633/2100/2729 +f 1633/2100/2729 1628/2094/2723 1632/2099/2728 +f 1629/2095/2724 1626/2092/2720 1634/2101/2730 +f 1626/2092/2720 1631/2097/2726 1634/2101/2730 +f 1632/2099/2728 1629/2095/2724 1635/2102/2731 +f 1636/2103/2732 1635/2102/2731 1629/2095/2724 +f 1629/2095/2724 1637/2104/2733 1636/2103/2732 +f 1629/2095/2724 1634/2101/2730 1637/2104/2733 +f 1509/2105/2734 1507/2098/2727 1633/2100/2729 +f 1638/2106/2735 1509/2105/2734 1633/2100/2729 +f 1632/2099/2728 1639/2107/2736 1633/2100/2729 +f 1640/2108/2737 1638/2106/2735 1633/2100/2729 +f 1641/2109/2738 1640/2108/2737 1633/2100/2729 +f 1642/2110/2739 1641/2109/2738 1633/2100/2729 +f 1642/2110/2739 1633/2100/2729 1643/2111/2740 +f 1639/2107/2736 1643/2111/2740 1633/2100/2729 +f 1638/2106/2735 1644/2112/2741 1509/2105/2734 +f 1638/2106/2735 1640/2108/2737 1645/2113/2742 +f 1640/2108/2737 1641/2109/2738 1646/2114/2743 +f 1645/2113/2742 1640/2108/2737 1646/2114/2743 +f 1644/2112/2741 1638/2106/2735 1647/2115/2744 +f 1647/2115/2744 1638/2106/2735 1645/2113/2742 +f 1641/2109/2738 1642/2110/2739 1648/2116/2745 +f 1646/2114/2743 1641/2109/2738 1648/2116/2745 +f 1644/2112/2741 1501/2117/2746 1509/2105/2734 +f 1642/2110/2739 1643/2111/2740 1649/2118/2747 +f 1648/2116/2745 1642/2110/2739 1649/2118/2747 +f 1632/2099/2728 1635/2102/2731 1650/2119/2748 +f 1651/2120/2749 1627/2093/2721 1613/2074/2722 +f 1636/2103/2732 1652/2121/2750 1635/2102/2731 +f 1653/2122/2751 1631/2097/2726 1630/2096/2725 +f 1654/2123/2752 1639/2107/2736 1632/2099/2728 +f 1632/2099/2728 1650/2119/2748 1654/2123/2752 +f 1655/2124/2753 1630/2096/2725 1627/2093/2721 +f 1655/2124/2753 1653/2122/2751 1630/2096/2725 +f 1651/2120/2749 1655/2124/2753 1627/2093/2721 +f 1656/2125/2754 1644/2112/2741 1647/2115/2744 +f 1636/2103/2732 1637/2104/2733 1657/2126/2755 +f 1652/2121/2750 1636/2103/2732 1657/2126/2755 +f 1634/2101/2730 1631/2097/2726 1658/2127/2756 +f 1631/2097/2726 1653/2122/2751 1658/2127/2756 +f 1601/2128/2757 1647/2115/2744 1645/2113/2742 +f 1656/2125/2754 1647/2115/2744 1601/2128/2757 +f 1501/2117/2746 1644/2112/2741 1502/2129/2758 +f 1644/2112/2741 1656/2125/2754 1502/2129/2758 +f 1639/2107/2736 1659/2130/2759 1643/2111/2740 +f 1659/2130/2759 1649/2118/2747 1643/2111/2740 +f 1660/2131/2760 1637/2104/2733 1634/2101/2730 +f 1599/2132/2761 1645/2113/2742 1646/2114/2743 +f 1599/2132/2761 1601/2128/2757 1645/2113/2742 +f 1646/2114/2743 1648/2116/2745 1593/2133/2762 +f 1648/2116/2745 1649/2118/2747 1586/2134/2763 +f 1593/2133/2762 1648/2116/2745 1586/2134/2763 +f 1598/2135/2764 1599/2132/2761 1646/2114/2743 +f 1598/2135/2764 1646/2114/2743 1593/2133/2762 +f 1656/2125/2754 1602/2136/2765 1502/2129/2758 +f 1602/2136/2765 1656/2125/2754 1601/2128/2757 +f 1584/2137/2766 1586/2134/2763 1649/2118/2747 +f 1659/2130/2759 1584/2137/2766 1649/2118/2747 +f 1661/2138/2767 1659/2130/2759 1639/2107/2736 +f 1654/2123/2752 1661/2138/2767 1639/2107/2736 +f 1635/2102/2731 1662/2139/2768 1650/2119/2748 +f 1652/2121/2750 1662/2139/2768 1635/2102/2731 +f 1602/2136/2765 1504/2140/2769 1502/2129/2758 +f 1657/2126/2755 1637/2104/2733 1663/2141/2770 +f 1637/2104/2733 1660/2131/2760 1663/2141/2770 +f 1581/2142/2771 1584/2137/2766 1659/2130/2759 +f 1661/2138/2767 1581/2142/2771 1659/2130/2759 +f 1634/2101/2730 1664/2143/2772 1660/2131/2760 +f 1634/2101/2730 1658/2127/2756 1664/2143/2772 +f 1660/2131/2760 1664/2143/2772 1663/2141/2770 +f 1661/2138/2767 1654/2123/2752 1665/2144/2773 +f 1654/2123/2752 1650/2119/2748 1665/2144/2773 +f 1662/2139/2768 1665/2144/2773 1650/2119/2748 +f 1581/2142/2771 1661/2138/2767 1576/2145/2774 +f 1661/2138/2767 1665/2144/2773 1576/2145/2774 +f 1615/2076/2775 1651/2120/2749 1613/2074/2722 +f 1573/2146/2776 1576/2145/2774 1665/2144/2773 +f 1662/2139/2768 1573/2146/2776 1665/2144/2773 +f 1652/2121/2750 1571/2147/2777 1662/2139/2768 +f 1571/2147/2777 1573/2146/2776 1662/2139/2768 +f 1571/2147/2777 1652/2121/2750 1566/2148/2778 +f 1652/2121/2750 1657/2126/2755 1566/2148/2778 +f 1566/2148/2778 1657/2126/2755 1560/2149/2779 +f 1657/2126/2755 1663/2141/2770 1560/2149/2779 +f 1560/2149/2779 1663/2141/2770 1666/2150/2780 +f 1664/2143/2772 1666/2150/2780 1663/2141/2770 +f 1666/2150/2780 1664/2143/2772 1658/2127/2756 +f 1555/2151/2781 1560/2149/2779 1666/2150/2780 +f 1667/2152/2782 1666/2150/2780 1658/2127/2756 +f 1555/2151/2781 1666/2150/2780 1667/2152/2782 +f 1667/2152/2782 1658/2127/2756 1653/2122/2751 +f 1548/2153/2783 1555/2151/2781 1667/2152/2782 +f 1668/2154/2784 1667/2152/2782 1653/2122/2751 +f 1548/2153/2783 1667/2152/2782 1668/2154/2784 +f 1668/2154/2784 1653/2122/2751 1655/2124/2753 +f 1541/2155/2785 1548/2153/2783 1668/2154/2784 +f 1541/2155/2785 1668/2154/2784 1669/2156/2786 +f 1669/2156/2786 1668/2154/2784 1655/2124/2753 +f 1669/2156/2786 1655/2124/2753 1651/2120/2749 +f 1532/2157/2787 1541/2155/2785 1669/2156/2786 +f 1670/2158/2788 1669/2156/2786 1651/2120/2749 +f 1532/2157/2787 1669/2156/2786 1670/2158/2788 +f 1670/2158/2788 1651/2120/2749 1615/2076/2775 +f 1617/2078/2789 1670/2158/2788 1615/2076/2775 +f 1523/2159/2790 1532/2157/2787 1670/2158/2788 +f 1523/2159/2790 1670/2158/2788 1617/2078/2789 +f 1519/2080/2791 1523/2159/2790 1617/2078/2789 +f 1671/2160/2792 1504/2161/2793 1500/2162/2794 +f 1672/2163/2795 1671/2160/2792 1500/2162/2794 +f 1672/2163/2795 1500/2162/2794 1510/2164/2796 +f 1510/2164/2796 1673/2165/2797 1672/2163/2795 +f 1674/2166/2798 1671/2160/2792 1672/2163/2795 +f 1673/2165/2797 1674/2166/2798 1672/2163/2795 +f 1510/2164/2796 1675/2167/2799 1673/2165/2797 +f 1510/2164/2796 1508/2168/2800 1675/2167/2799 +f 1675/2167/2799 1676/2169/2801 1673/2165/2797 +f 1676/2169/2801 1674/2166/2798 1673/2165/2797 +f 1675/2167/2799 1508/2168/2800 154/2170/2802 +f 1676/2169/2801 1675/2167/2799 155/2171/2683 +f 1675/2167/2799 154/2170/2802 155/2171/2683 +f 1508/2168/2800 1497/2172/2803 154/2170/2802 +f 1508/2168/2800 1496/2173/2804 1497/2172/2803 +f 1504/2174/2805 1671/2175/2806 1501/2176/2807 +f 1671/2175/2806 1677/2177/2808 1501/2176/2807 +f 1677/2177/2808 1671/2175/2806 1674/2178/2809 +f 1678/2179/2810 1677/2177/2808 1674/2178/2809 +f 1678/2179/2810 1674/2178/2809 1676/2180/2811 +f 1509/2181/2812 1501/2176/2807 1677/2177/2808 +f 1509/2181/2812 1677/2177/2808 1678/2179/2810 +f 1679/2182/2813 1678/2179/2810 1676/2180/2811 +f 1678/2179/2810 1679/2182/2813 1509/2181/2812 +f 1676/2180/2811 155/2183/2685 1679/2182/2813 +f 155/2183/2685 156/2184/2814 1679/2182/2813 +f 1679/2182/2813 1507/2185/2815 1509/2181/2812 +f 1498/2186/2816 1679/2182/2813 156/2184/2814 +f 1498/2186/2816 1507/2185/2815 1679/2182/2813 +f 1498/2186/2816 1499/2187/2817 1507/2185/2815 +f 1498/2188/2818 1497/2189/2819 1496/2190/2820 +f 1499/2191/2821 1498/2188/2818 1496/2190/2820 +f 1500/2192/2822 1504/2193/2823 1501/2194/2824 +f 1510/2195/2825 1500/2192/2822 1501/2194/2824 +f 1509/2196/2826 1510/2195/2825 1501/2194/2824 +f 1498/2188/2827 156/2197/2828 1497/2189/2829 +f 156/2197/2828 154/2198/2830 1497/2189/2829 +f 154/2198/2830 156/2197/2828 155/2199/2831 +f 1510/2195/2832 1509/2196/2833 1508/2200/2834 +f 1509/2196/2833 1507/2201/2835 1508/2200/2834 +f 1508/2200/2834 1507/2201/2835 1496/2190/2836 +f 1507/2201/2835 1499/2191/2836 1496/2190/2836 +f 1680/2202/2837 1681/2203/2838 1682/2204/2839 +f 1683/2205/2840 1680/2202/2837 1682/2204/2839 +f 1684/2206/2841 1683/2205/2840 1682/2204/2839 +f 1685/2207/2842 1684/2206/2841 1682/2204/2839 +f 1685/2207/2842 1682/2204/2839 1686/2208/2843 +f 1687/2209/2844 1686/2208/2843 1682/2204/2839 +f 1687/2209/2844 1682/2204/2839 1688/2210/2845 +f 1682/2204/2839 1689/2211/2846 1688/2210/2845 +f 1682/2204/2839 1690/2212/2847 1689/2211/2846 +f 1690/2212/2847 1682/2204/2839 1691/2213/233 +f 1692/2214/233 1690/2212/2847 1691/2213/233 +f 1693/2215/233 1692/2214/233 1691/2213/233 +f 1694/2216/233 1693/2215/233 1691/2213/233 +f 1694/2216/233 1691/2213/233 1695/2217/233 +f 1691/2213/233 1696/2218/233 1695/2217/233 +f 1696/2218/233 1691/2213/233 1697/2219/2848 +f 1698/2220/233 1696/2218/233 1697/2219/2848 +f 1697/2219/2848 1699/2221/2849 1698/2220/233 +f 1699/2221/2849 1697/2219/2848 1700/2222/2850 +f 1697/2219/2848 1701/2223/2851 1700/2222/2850 +f 1701/2223/2851 1697/2219/2848 1702/2224/2852 +f 1703/2225/2853 1701/2223/2851 1702/2224/2852 +f 1703/2225/2853 1702/2224/2852 1704/2226/2852 +f 1703/2225/2853 1704/2226/2852 1705/2227/2852 +f 1703/2225/2853 1705/2227/2852 1706/2228/2852 +f 1707/2229/2854 1703/2225/2853 1706/2228/2852 +f 1707/2229/2854 1706/2228/2852 1708/2230/2855 +f 1709/2231/2856 1710/2232/2857 1711/2233/2858 +f 1709/2231/2856 1711/2233/2858 1712/2234/2859 +f 1709/2231/2856 1712/2234/2859 1713/2235/2860 +f 1709/2231/2856 1713/2235/2860 1714/2236/2861 +f 1715/2237/2862 1709/2231/2856 1714/2236/2861 +f 1709/2231/2856 1715/2237/2862 1716/2238/2863 +f 1709/2231/2856 1716/2238/2863 1717/2239/2864 +f 1717/2239/2864 1718/2240/2865 1709/2231/2856 +f 1718/2240/2865 1719/2241/2866 1709/2231/2856 +f 1720/2242/231 1709/2231/2856 1719/2241/2866 +f 1720/2242/231 1719/2241/2866 1721/2243/231 +f 1720/2242/231 1721/2243/231 1722/2244/231 +f 1720/2242/231 1722/2244/231 1723/2245/231 +f 1720/2242/231 1723/2245/231 1724/2246/231 +f 1725/2247/231 1720/2242/231 1724/2246/231 +f 1726/2248/2867 1720/2242/231 1725/2247/231 +f 1726/2248/2867 1725/2247/231 1727/2249/231 +f 1726/2248/2867 1727/2249/231 1728/2250/2868 +f 1726/2248/2867 1728/2250/2868 1729/2251/2869 +f 1730/2252/2870 1726/2248/2867 1729/2251/2869 +f 1731/2253/2871 1726/2248/2867 1730/2252/2870 +f 1731/2253/2871 1730/2252/2870 1732/2254/2871 +f 1733/2255/2871 1731/2253/2871 1732/2254/2871 +f 1734/2256/2871 1733/2255/2871 1732/2254/2871 +f 1735/2257/2872 1734/2256/2871 1732/2254/2871 +f 1735/2257/2872 1732/2254/2871 1736/2258/2871 +f 1735/2257/2872 1736/2258/2871 1737/2259/2871 +f 1731/2260/2873 1733/2261/2874 1702/2262/2873 +f 1733/2261/2874 1704/2263/2875 1702/2262/2873 +f 1733/2261/2874 1734/2264/2876 1704/2263/2875 +f 1734/2264/2876 1705/2265/2877 1704/2263/2875 +f 1734/2264/2876 1735/2266/2878 1705/2265/2877 +f 1735/2266/2878 1706/2267/2879 1705/2265/2877 +f 1735/2266/2878 1737/2268/2880 1706/2267/2879 +f 1737/2268/2880 1708/2269/2881 1706/2267/2879 +f 1737/2268/2880 1736/2270/2882 1708/2269/2881 +f 1736/2270/2882 1707/2271/2883 1708/2269/2881 +f 1707/2271/2883 1736/2270/2882 1732/2272/2884 +f 1703/2273/2885 1707/2271/2883 1732/2272/2884 +f 1703/2273/2885 1732/2272/2884 1730/2274/2886 +f 1701/2275/2887 1703/2273/2885 1730/2274/2886 +f 1701/2275/2887 1730/2274/2886 1729/2276/2888 +f 1700/2277/2889 1701/2275/2887 1729/2276/2888 +f 1700/2277/2889 1729/2276/2888 1728/2278/2890 +f 1699/2279/2891 1700/2277/2889 1728/2278/2890 +f 1728/2278/2890 1727/2280/2892 1699/2279/2891 +f 1727/2280/2892 1698/2281/2893 1699/2279/2891 +f 1727/2280/2892 1725/2282/2894 1698/2281/2893 +f 1725/2282/2894 1696/2283/2895 1698/2281/2893 +f 1725/2282/2894 1724/2284/2896 1696/2283/2895 +f 1724/2284/2896 1695/2285/2897 1696/2283/2895 +f 1695/2285/2897 1724/2284/2896 1723/2286/2898 +f 1694/2287/2899 1695/2285/2897 1723/2286/2898 +f 1694/2287/2899 1723/2286/2898 1722/2288/2900 +f 1693/2289/2901 1694/2287/2899 1722/2288/2900 +f 1693/2289/2901 1722/2288/2900 1721/2290/2902 +f 1692/2291/2903 1693/2289/2901 1721/2290/2902 +f 1692/2291/2903 1721/2290/2902 1719/2292/2904 +f 1690/2293/2905 1692/2291/2903 1719/2292/2904 +f 1690/2293/2905 1719/2292/2904 1689/2294/2906 +f 1719/2292/2904 1718/2295/2907 1689/2294/2906 +f 1689/2294/2906 1718/2295/2907 1688/2296/2908 +f 1718/2295/2907 1717/2297/2909 1688/2296/2908 +f 1688/2296/2908 1717/2297/2909 1687/2298/2910 +f 1717/2297/2909 1716/2299/2911 1687/2298/2910 +f 1687/2298/2910 1716/2299/2911 1686/2300/2912 +f 1716/2299/2911 1715/2301/2913 1686/2300/2912 +f 1686/2300/2912 1715/2301/2913 1685/2302/2914 +f 1715/2301/2913 1714/2303/2915 1685/2302/2914 +f 1685/2302/2914 1714/2303/2915 1684/2304/2916 +f 1714/2303/2915 1713/2305/2917 1684/2304/2916 +f 1684/2304/2916 1713/2305/2917 1683/2306/2918 +f 1713/2305/2917 1712/2307/2919 1683/2306/2918 +f 1683/2306/2918 1712/2307/2919 1680/2308/2920 +f 1712/2307/2919 1711/2309/2921 1680/2308/2920 +f 1711/2309/2921 1710/2310/2922 1680/2308/2920 +f 1710/2310/2922 1681/2311/2922 1680/2308/2920 +f 1738/2312/2873 1739/2313/2874 1740/2314/178 +f 1739/2313/2874 1741/2315/2923 1740/2314/178 +f 1739/2313/2874 1742/2316/2924 1741/2315/2923 +f 1742/2316/2924 1743/2317/2877 1741/2315/2923 +f 1742/2316/2924 1744/2318/2878 1743/2317/2877 +f 1744/2318/2878 1745/2319/2879 1743/2317/2877 +f 1745/2319/2879 1744/2318/2878 1746/2320/2925 +f 1747/2321/2926 1745/2319/2879 1746/2320/2925 +f 1746/2320/2925 1748/2322/2927 1747/2321/2926 +f 1748/2322/2927 1749/2323/2928 1747/2321/2926 +f 1749/2323/2928 1748/2322/2927 1750/2324/2929 +f 1751/2325/2930 1749/2323/2928 1750/2324/2929 +f 1751/2325/2930 1750/2324/2929 1752/2326/2931 +f 1753/2327/2932 1751/2325/2930 1752/2326/2931 +f 1753/2327/2932 1752/2326/2931 1754/2328/2933 +f 1755/2329/2934 1753/2327/2932 1754/2328/2933 +f 1754/2328/2933 1756/2330/2935 1755/2329/2934 +f 1756/2330/2935 1757/2331/2936 1755/2329/2934 +f 1757/2331/2936 1756/2330/2935 1758/2332/2937 +f 1759/2333/2938 1757/2331/2936 1758/2332/2937 +f 1759/2333/2938 1758/2332/2937 1760/2334/2939 +f 1761/2335/2940 1759/2333/2938 1760/2334/2939 +f 1760/2334/2939 1762/2336/2941 1761/2335/2940 +f 1762/2336/2941 1763/2337/2942 1761/2335/2940 +f 1762/2336/2941 1764/2338/2943 1763/2337/2942 +f 1764/2338/2943 1765/2339/2944 1763/2337/2942 +f 1764/2338/2943 1766/2340/2945 1765/2339/2944 +f 1766/2340/2945 1767/2341/2946 1765/2339/2944 +f 1766/2340/2945 1768/2342/2947 1767/2341/2946 +f 1768/2342/2947 1769/2343/2948 1767/2341/2946 +f 1769/2343/2948 1768/2342/2947 1770/2344/2949 +f 1771/2345/2950 1769/2343/2948 1770/2344/2949 +f 1771/2345/2950 1770/2344/2949 1772/2346/2951 +f 1773/2347/2952 1771/2345/2950 1772/2346/2951 +f 1773/2347/2952 1772/2346/2951 1774/2348/2953 +f 1775/2349/2954 1773/2347/2952 1774/2348/2953 +f 1775/2349/2954 1774/2348/2953 1776/2350/2955 +f 1777/2351/2956 1775/2349/2954 1776/2350/2955 +f 1777/2351/2956 1776/2350/2955 1778/2352/2957 +f 1779/2353/2958 1777/2351/2956 1778/2352/2957 +f 1779/2353/2958 1778/2352/2957 1780/2354/2959 +f 1781/2355/2960 1779/2353/2958 1780/2354/2959 +f 1781/2355/2960 1780/2354/2959 1782/2356/2961 +f 1780/2354/2959 1783/2357/2962 1782/2356/2961 +f 1784/2358/2912 1782/2356/2961 1783/2357/2962 +f 1785/2359/2963 1784/2358/2912 1783/2357/2962 +f 1784/2358/2912 1785/2359/2963 1786/2360/2964 +f 1785/2359/2963 1787/2361/2965 1786/2360/2964 +f 1788/2362/2966 1786/2360/2964 1787/2361/2965 +f 1789/2363/2967 1788/2362/2966 1787/2361/2965 +f 1788/2362/2966 1789/2363/2967 1790/2364/2968 +f 1789/2363/2967 1791/2365/2969 1790/2364/2968 +f 1790/2364/2968 1791/2365/2969 1792/2366/2970 +f 1791/2365/2969 1793/2367/2971 1792/2366/2970 +f 1793/2367/2971 1794/2368/2922 1792/2366/2970 +f 1794/2368/2922 1795/2369/2922 1792/2366/2970 +f 1749/2370/2972 1745/2371/2973 1747/2372/2852 +f 1749/2370/2972 1751/2373/2974 1745/2371/2973 +f 1751/2373/2974 1743/2374/2975 1745/2371/2973 +f 1751/2373/2974 1741/2375/2976 1743/2374/2975 +f 1751/2373/2974 1740/2376/2977 1741/2375/2976 +f 1751/2373/2974 1753/2377/2978 1740/2376/2977 +f 1753/2377/2978 1796/2378/2979 1740/2376/2977 +f 1796/2378/2979 1753/2377/2978 1755/2379/2980 +f 1757/2380/2981 1796/2378/2979 1755/2379/2980 +f 1759/2381/2982 1796/2378/2979 1757/2380/2981 +f 1759/2381/2982 1761/2382/2983 1796/2378/2979 +f 1761/2382/2983 1797/2383/2984 1796/2378/2979 +f 1797/2383/2984 1761/2382/2983 1763/2384/2985 +f 1797/2383/2984 1763/2384/2985 1765/2385/2986 +f 1797/2383/2984 1765/2385/2986 1767/2386/2987 +f 1767/2386/2987 1769/2387/2988 1797/2383/2984 +f 1769/2387/2988 1771/2388/2989 1797/2383/2984 +f 1771/2388/2989 1773/2389/2990 1797/2383/2984 +f 1773/2389/2990 1775/2390/2991 1797/2383/2984 +f 1775/2390/2991 1777/2391/2992 1797/2383/2984 +f 1777/2391/2992 1798/2392/2993 1797/2383/2984 +f 1798/2392/2993 1777/2391/2992 1779/2393/2994 +f 1798/2392/2993 1779/2393/2994 1781/2394/2995 +f 1782/2395/2996 1798/2392/2993 1781/2394/2995 +f 1782/2395/2996 1784/2396/2843 1798/2392/2993 +f 1786/2397/2842 1798/2392/2993 1784/2396/2843 +f 1786/2397/2842 1788/2398/2841 1798/2392/2993 +f 1788/2398/2841 1790/2399/2840 1798/2392/2993 +f 1790/2399/2840 1792/2400/2837 1798/2392/2993 +f 1792/2400/2837 1795/2401/2997 1798/2392/2993 +f 1744/2402/2998 1748/2403/2999 1746/2404/2871 +f 1744/2402/2998 1750/2405/3000 1748/2403/2999 +f 1744/2402/2998 1742/2406/3001 1750/2405/3000 +f 1742/2406/3001 1739/2407/3002 1750/2405/3000 +f 1739/2407/3002 1738/2408/3003 1750/2405/3000 +f 1738/2408/3003 1752/2409/3004 1750/2405/3000 +f 1738/2408/3003 1799/2410/3005 1752/2409/3004 +f 1752/2409/3004 1799/2410/3005 1754/2411/3006 +f 1799/2410/3005 1756/2412/3007 1754/2411/3006 +f 1756/2412/3007 1799/2410/3005 1800/2413/3008 +f 1758/2414/3009 1756/2412/3007 1800/2413/3008 +f 1758/2414/3009 1800/2413/3008 1801/2415/3010 +f 1801/2415/3010 1800/2413/3008 1770/2416/3011 +f 1800/2413/3008 1772/2417/3012 1770/2416/3011 +f 1800/2413/3008 1774/2418/3013 1772/2417/3012 +f 1800/2413/3008 1776/2419/3014 1774/2418/3013 +f 1758/2414/3009 1801/2415/3010 1760/2420/3015 +f 1800/2413/3008 1802/2421/3016 1776/2419/3014 +f 1801/2415/3010 1770/2416/3011 1768/2422/3017 +f 1762/2423/3018 1760/2420/3015 1801/2415/3010 +f 1764/2424/3019 1762/2423/3018 1801/2415/3010 +f 1764/2424/3019 1801/2415/3010 1766/2425/3020 +f 1801/2415/3010 1768/2422/3017 1766/2425/3020 +f 1778/2426/3021 1776/2419/3014 1802/2421/3016 +f 1780/2427/3022 1778/2426/3021 1802/2421/3016 +f 1802/2421/3016 1783/2428/3023 1780/2427/3022 +f 1802/2421/3016 1785/2429/3024 1783/2428/3023 +f 1785/2429/3024 1802/2421/3016 1787/2430/2861 +f 1802/2421/3016 1789/2431/2860 1787/2430/2861 +f 1802/2421/3016 1791/2432/2859 1789/2431/2860 +f 1802/2421/3016 1793/2433/2858 1791/2432/2859 +f 1802/2421/3016 1794/2434/2858 1793/2433/2858 +f 1803/2435/226 1804/2436/226 1805/2437/2970 +f 1806/2438/2921 1803/2435/226 1805/2437/2970 +f 1807/2439/2969 1806/2438/2921 1805/2437/2970 +f 1808/2440/3025 1807/2439/2969 1805/2437/2970 +f 1809/2441/2967 1807/2439/2969 1808/2440/3025 +f 1810/2442/2966 1809/2441/2967 1808/2440/3025 +f 1809/2441/2967 1810/2442/2966 1811/2443/3026 +f 1810/2442/2966 1812/2444/3027 1811/2443/3026 +f 1811/2443/3026 1812/2444/3027 1813/2445/3028 +f 1814/2446/3029 1811/2443/3026 1813/2445/3028 +f 1814/2446/3029 1813/2445/3028 1815/2447/3030 +f 1816/2448/2962 1814/2446/3029 1815/2447/3030 +f 1817/2449/3031 1816/2448/2962 1815/2447/3030 +f 1818/2450/3032 1817/2449/3031 1815/2447/3030 +f 1819/2451/3033 1817/2449/3031 1818/2450/3032 +f 1820/2452/3034 1819/2451/3033 1818/2450/3032 +f 1821/2453/3035 1819/2451/3033 1820/2452/3034 +f 1822/2454/3036 1821/2453/3035 1820/2452/3034 +f 1822/2454/3036 1823/2455/3037 1821/2453/3035 +f 1823/2455/3037 1824/2456/3038 1821/2453/3035 +f 1823/2455/3037 1825/2457/3039 1824/2456/3038 +f 1825/2457/3039 1826/2458/3040 1824/2456/3038 +f 1825/2457/3039 1827/2459/3041 1826/2458/3040 +f 1827/2459/3041 1828/2460/3042 1826/2458/3040 +f 1827/2459/3041 1829/2461/3043 1828/2460/3042 +f 1829/2461/3043 1830/2462/3044 1828/2460/3042 +f 1830/2462/3044 1829/2461/3043 1831/2463/3045 +f 1832/2464/3046 1830/2462/3044 1831/2463/3045 +f 1831/2463/3045 1833/2465/3047 1832/2464/3046 +f 1833/2465/3047 1834/2466/3048 1832/2464/3046 +f 1835/2467/3049 1834/2466/3048 1833/2465/3047 +f 1836/2468/3050 1835/2467/3049 1833/2465/3047 +f 1837/2469/3051 1835/2467/3049 1836/2468/3050 +f 1838/2470/3052 1837/2469/3051 1836/2468/3050 +f 1837/2469/3051 1838/2470/3052 1839/2471/3053 +f 1840/2472/3054 1837/2469/3051 1839/2471/3053 +f 1839/2471/3053 1841/2473/3055 1840/2472/3054 +f 1841/2473/3055 1842/2474/3056 1840/2472/3054 +f 1842/2474/3056 1841/2473/3055 1843/2475/3057 +f 1844/2476/3058 1842/2474/3056 1843/2475/3057 +f 1844/2476/3058 1843/2475/3057 1845/2477/2875 +f 1846/2478/2874 1844/2476/3058 1845/2477/2875 +f 1846/2478/2874 1845/2477/2875 1847/2479/178 +f 1848/2480/178 1846/2478/2874 1847/2479/178 +f 1836/2481/3059 1839/2482/3060 1838/2483/3061 +f 1836/2481/3059 1841/2484/3059 1839/2482/3060 +f 1836/2481/3059 1843/2485/3062 1841/2484/3059 +f 1836/2481/3059 1845/2486/3063 1843/2485/3062 +f 1836/2481/3059 1847/2487/3064 1845/2486/3063 +f 1836/2481/3059 1833/2488/3065 1847/2487/3064 +f 1833/2488/3065 1849/2489/3066 1847/2487/3064 +f 1849/2489/3066 1833/2488/3065 1831/2490/233 +f 1829/2491/3067 1849/2489/3066 1831/2490/233 +f 1827/2492/3068 1849/2489/3066 1829/2491/3067 +f 1827/2492/3068 1825/2493/3069 1849/2489/3066 +f 1825/2493/3069 1823/2494/3070 1849/2489/3066 +f 1823/2494/3070 1822/2495/3071 1849/2489/3066 +f 1822/2495/3071 1850/2496/3072 1849/2489/3066 +f 1850/2496/3072 1822/2495/3071 1820/2497/3073 +f 1850/2496/3072 1820/2497/3073 1818/2498/3074 +f 1815/2499/3075 1850/2496/3072 1818/2498/3074 +f 1815/2499/3075 1813/2500/3076 1850/2496/3072 +f 1812/2501/3077 1850/2496/3072 1813/2500/3076 +f 1812/2501/3077 1810/2502/3078 1850/2496/3072 +f 1810/2502/3078 1808/2503/3079 1850/2496/3072 +f 1808/2503/3079 1805/2504/3080 1850/2496/3072 +f 1805/2504/3080 1804/2505/3081 1850/2496/3072 +f 1840/2506/3082 1835/2507/3083 1837/2508/3084 +f 1840/2506/3082 1842/2509/3085 1835/2507/3083 +f 1842/2509/3085 1844/2510/3086 1835/2507/3083 +f 1844/2510/3086 1846/2511/3087 1835/2507/3083 +f 1846/2511/3087 1848/2512/3088 1835/2507/3083 +f 1848/2512/3088 1834/2513/3089 1835/2507/3083 +f 1848/2512/3088 1851/2514/3090 1834/2513/3089 +f 1834/2513/3089 1851/2514/3090 1832/2515/231 +f 1851/2514/3090 1830/2516/3091 1832/2515/231 +f 1851/2514/3090 1828/2517/3092 1830/2516/3091 +f 1851/2514/3090 1826/2518/3093 1828/2517/3092 +f 1851/2514/3090 1824/2519/3094 1826/2518/3093 +f 1851/2514/3090 1821/2520/3095 1824/2519/3094 +f 1851/2514/3090 1852/2521/3096 1821/2520/3095 +f 1819/2522/3097 1821/2520/3095 1852/2521/3096 +f 1817/2523/3098 1819/2522/3097 1852/2521/3096 +f 1852/2521/3096 1816/2524/3099 1817/2523/3098 +f 1852/2521/3096 1814/2525/3100 1816/2524/3099 +f 1814/2525/3100 1852/2521/3096 1811/2526/3101 +f 1852/2521/3096 1809/2527/3102 1811/2526/3101 +f 1852/2521/3096 1807/2528/3103 1809/2527/3102 +f 1852/2521/3096 1806/2529/3104 1807/2528/3103 +f 1852/2521/3096 1803/2530/3105 1806/2529/3104 +f 1853/2531/3106 1854/2532/3107 1855/2533/3108 +f 1856/2534/3109 1853/2531/3106 1855/2533/3108 +f 1857/2535/3110 1856/2534/3109 1855/2533/3108 +f 1858/2536/3111 1857/2535/3110 1855/2533/3108 +f 1853/2531/3106 1856/2534/3109 1859/2537/3112 +f 1860/2538/3113 1857/2535/3110 1858/2536/3111 +f 1861/2539/3114 1860/2538/3113 1858/2536/3111 +f 1857/2535/3110 1862/2540/3115 1856/2534/3109 +f 1862/2540/3115 1859/2537/3112 1856/2534/3109 +f 1863/2541/3116 1860/2538/3113 1861/2539/3114 +f 1860/2538/3113 1864/2542/3117 1857/2535/3110 +f 1864/2542/3117 1860/2538/3113 1863/2541/3116 +f 1864/2542/3117 1862/2540/3115 1857/2535/3110 +f 1865/2543/3118 1863/2541/3116 1861/2539/3114 +f 1866/2544/3119 1853/2531/3106 1859/2537/3112 +f 1867/2545/3120 1866/2544/3119 1859/2537/3112 +f 1862/2540/3115 1868/2546/3121 1859/2537/3112 +f 1869/2547/3122 1867/2545/3120 1859/2537/3112 +f 1868/2546/3121 1869/2547/3122 1859/2537/3112 +f 1870/2548/3123 1864/2542/3117 1863/2541/3116 +f 1864/2542/3117 1871/2549/3124 1862/2540/3115 +f 1871/2549/3124 1868/2546/3121 1862/2540/3115 +f 1872/2550/3125 1871/2549/3124 1864/2542/3117 +f 1870/2548/3123 1872/2550/3125 1864/2542/3117 +f 1873/2551/3126 1867/2545/3120 1869/2547/3122 +f 1868/2546/3121 1874/2552/3127 1869/2547/3122 +f 1870/2548/3123 1863/2541/3116 1875/2553/3128 +f 1872/2550/3125 1870/2548/3123 1875/2553/3128 +f 1871/2549/3124 1876/2554/3129 1868/2546/3121 +f 1876/2554/3129 1871/2549/3124 1872/2550/3125 +f 1876/2554/3129 1874/2552/3127 1868/2546/3121 +f 1877/2555/3130 1873/2551/3126 1869/2547/3122 +f 1874/2552/3127 1877/2555/3130 1869/2547/3122 +f 1878/2556/3131 1876/2554/3129 1872/2550/3125 +f 1878/2556/3131 1872/2550/3125 1879/2557/3132 +f 1879/2557/3132 1872/2550/3125 1875/2553/3128 +f 1880/2558/3133 1873/2551/3126 1877/2555/3130 +f 1874/2552/3127 1881/2559/3134 1877/2555/3130 +f 1876/2554/3129 1882/2560/3135 1874/2552/3127 +f 1882/2560/3135 1881/2559/3134 1874/2552/3127 +f 1883/2561/3136 1880/2558/3133 1877/2555/3130 +f 1881/2559/3134 1883/2561/3136 1877/2555/3130 +f 1878/2556/3131 1884/2562/3137 1876/2554/3129 +f 1884/2562/3137 1882/2560/3135 1876/2554/3129 +f 1885/2563/3138 1878/2556/3131 1879/2557/3132 +f 1884/2562/3137 1878/2556/3131 1885/2563/3138 +f 1886/2564/3139 1880/2558/3133 1883/2561/3136 +f 1881/2559/3134 1887/2565/3140 1883/2561/3136 +f 1887/2565/3140 1881/2559/3134 1882/2560/3135 +f 1888/2566/3141 1886/2564/3139 1883/2561/3136 +f 1887/2565/3140 1888/2566/3141 1883/2561/3136 +f 1885/2563/3138 1879/2557/3132 1889/2567/3142 +f 1890/2568/3143 1882/2560/3135 1884/2562/3137 +f 1890/2568/3143 1887/2565/3140 1882/2560/3135 +f 1891/2569/3144 1884/2562/3137 1885/2563/3138 +f 1885/2563/3138 1889/2567/3142 1891/2569/3144 +f 1892/2570/3145 1890/2568/3143 1884/2562/3137 +f 1892/2570/3145 1884/2562/3137 1891/2569/3144 +f 1893/2571/3146 1886/2564/3139 1888/2566/3141 +f 1887/2565/3140 1894/2572/3147 1888/2566/3141 +f 1890/2568/3143 1895/2573/3148 1887/2565/3140 +f 1895/2573/3148 1894/2572/3147 1887/2565/3140 +f 1896/2574/3149 1893/2571/3146 1888/2566/3141 +f 1894/2572/3147 1896/2574/3149 1888/2566/3141 +f 1892/2570/3145 1897/2575/3150 1890/2568/3143 +f 1897/2575/3150 1895/2573/3148 1890/2568/3143 +f 1898/2576/3151 1892/2570/3145 1891/2569/3144 +f 1897/2575/3150 1892/2570/3145 1898/2576/3151 +f 1899/2577/3152 1893/2571/3146 1896/2574/3149 +f 1894/2572/3147 1900/2578/3153 1896/2574/3149 +f 1900/2578/3153 1894/2572/3147 1895/2573/3148 +f 1901/2579/3154 1899/2577/3152 1896/2574/3149 +f 1900/2578/3153 1901/2579/3154 1896/2574/3149 +f 1902/2580/3155 1895/2573/3148 1897/2575/3150 +f 1902/2580/3155 1900/2578/3153 1895/2573/3148 +f 1903/2581/3156 1897/2575/3150 1898/2576/3151 +f 1904/2582/3157 1902/2580/3155 1897/2575/3150 +f 1904/2582/3157 1897/2575/3150 1905/2583/3158 +f 1897/2575/3150 1903/2581/3156 1905/2583/3158 +f 1906/2584/3159 1899/2577/3152 1901/2579/3154 +f 1900/2578/3153 1907/2585/3160 1901/2579/3154 +f 1902/2580/3155 1908/2586/3161 1900/2578/3153 +f 1908/2586/3161 1907/2585/3160 1900/2578/3153 +f 1909/2587/3162 1906/2584/3159 1901/2579/3154 +f 1907/2585/3160 1909/2587/3162 1901/2579/3154 +f 1904/2582/3157 1910/2588/3163 1902/2580/3155 +f 1910/2588/3163 1904/2582/3157 1905/2583/3158 +f 1910/2588/3163 1908/2586/3161 1902/2580/3155 +f 1905/2583/3158 1903/2581/3156 1911/2589/3164 +f 1912/2590/3165 1910/2588/3163 1905/2583/3158 +f 1905/2583/3158 1911/2589/3164 1912/2590/3165 +f 1906/2584/3159 1909/2587/3162 1913/2591/3166 +f 1907/2585/3160 1914/2592/3167 1909/2587/3162 +f 1914/2592/3167 1913/2591/3166 1909/2587/3162 +f 1908/2586/3161 1915/2593/3168 1907/2585/3160 +f 1915/2593/3168 1908/2586/3161 1910/2588/3163 +f 1915/2593/3168 1914/2592/3167 1907/2585/3160 +f 1916/2594/3169 1906/2584/3159 1913/2591/3166 +f 1910/2588/3163 1912/2590/3165 1917/2595/3170 +f 1918/2596/3171 1915/2593/3168 1910/2588/3163 +f 1918/2596/3171 1910/2588/3163 1917/2595/3170 +f 1914/2592/3167 1919/2597/3172 1913/2591/3166 +f 1920/2598/3173 1916/2594/3169 1913/2591/3166 +f 1914/2592/3167 1915/2593/3168 1921/2599/3174 +f 1919/2597/3172 1914/2592/3167 1921/2599/3174 +f 1922/2600/3175 1920/2598/3173 1913/2591/3166 +f 1919/2597/3172 1922/2600/3175 1913/2591/3166 +f 1918/2596/3171 1923/2601/3176 1915/2593/3168 +f 1923/2601/3176 1921/2599/3174 1915/2593/3168 +f 1918/2596/3171 1917/2595/3170 1924/2602/3177 +f 1923/2601/3176 1918/2596/3171 1924/2602/3177 +f 1925/2603/3178 1920/2598/3173 1922/2600/3175 +f 1919/2597/3172 1926/2604/3179 1922/2600/3175 +f 1926/2604/3179 1919/2597/3172 1921/2599/3174 +f 1927/2605/3180 1925/2603/3178 1922/2600/3175 +f 1926/2604/3179 1927/2605/3180 1922/2600/3175 +f 1928/2606/3181 1921/2599/3174 1923/2601/3176 +f 1928/2606/3181 1926/2604/3179 1921/2599/3174 +f 1923/2601/3176 1924/2602/3177 1929/2607/3182 +f 1863/2541/3116 1865/2543/3118 1930/2608/3183 +f 1931/2609/3184 1928/2606/3181 1923/2601/3176 +f 1931/2609/3184 1923/2601/3176 1929/2607/3182 +f 1932/2610/3185 1925/2603/3178 1927/2605/3180 +f 1926/2604/3179 1933/2611/3186 1927/2605/3180 +f 1928/2606/3181 1934/2612/3187 1926/2604/3179 +f 1934/2612/3187 1933/2611/3186 1926/2604/3179 +f 1879/2557/3132 1875/2553/3128 1935/2613/3188 +f 1879/2557/3132 1935/2613/3188 1889/2567/3142 +f 1863/2541/3116 1936/2614/3189 1875/2553/3128 +f 1936/2614/3189 1863/2541/3116 1930/2608/3183 +f 1937/2615/3190 1932/2610/3185 1927/2605/3180 +f 1933/2611/3186 1937/2615/3190 1927/2605/3180 +f 1931/2609/3184 1938/2616/3191 1928/2606/3181 +f 1938/2616/3191 1934/2612/3187 1928/2606/3181 +f 1929/2607/3182 1939/2617/3192 1931/2609/3184 +f 1939/2617/3192 1938/2616/3191 1931/2609/3184 +f 1940/2618/3193 1932/2610/3185 1937/2615/3190 +f 1933/2611/3186 1941/2619/3194 1937/2615/3190 +f 1941/2619/3194 1933/2611/3186 1934/2612/3187 +f 1942/2620/3195 1940/2618/3193 1937/2615/3190 +f 1941/2619/3194 1942/2620/3195 1937/2615/3190 +f 1898/2576/3151 1891/2569/3144 1943/2621/3196 +f 1898/2576/3151 1943/2621/3196 1903/2581/3156 +f 1889/2567/3142 1944/2622/3197 1891/2569/3144 +f 1891/2569/3144 1944/2622/3197 1943/2621/3196 +f 1939/2617/3192 1929/2607/3182 1945/2623/3198 +f 1946/2624/3199 1934/2612/3187 1938/2616/3191 +f 1946/2624/3199 1941/2619/3194 1934/2612/3187 +f 1939/2617/3192 1947/2625/3200 1938/2616/3191 +f 1939/2617/3192 1945/2623/3198 1947/2625/3200 +f 1929/2607/3182 1924/2602/3177 1948/2626/3201 +f 1929/2607/3182 1948/2626/3201 1945/2623/3198 +f 1949/2627/3202 1946/2624/3199 1938/2616/3191 +f 1947/2625/3200 1949/2627/3202 1938/2616/3191 +f 1950/2628/3203 1940/2618/3193 1942/2620/3195 +f 1941/2619/3194 1951/2629/3204 1942/2620/3195 +f 1917/2595/3170 1912/2590/3165 1952/2630/3205 +f 1911/2589/3164 1953/2631/3206 1912/2590/3165 +f 1912/2590/3165 1953/2631/3206 1952/2630/3205 +f 1946/2624/3199 1954/2632/3207 1941/2619/3194 +f 1954/2632/3207 1951/2629/3204 1941/2619/3194 +f 1955/2633/3208 1950/2628/3203 1942/2620/3195 +f 1951/2629/3204 1955/2633/3208 1942/2620/3195 +f 1949/2627/3202 1956/2634/3209 1946/2624/3199 +f 1956/2634/3209 1954/2632/3207 1946/2624/3199 +f 1903/2581/3156 1957/2635/3210 1911/2589/3164 +f 1943/2621/3196 1957/2635/3210 1903/2581/3156 +f 1924/2602/3177 1917/2595/3170 1958/2636/3211 +f 1924/2602/3177 1958/2636/3211 1948/2626/3201 +f 1917/2595/3170 1952/2630/3205 1958/2636/3211 +f 1949/2627/3202 1947/2625/3200 1959/2637/3212 +f 1956/2634/3209 1949/2627/3202 1959/2637/3212 +f 1854/2638/3213 1950/2628/3203 1955/2633/3208 +f 1951/2629/3204 1858/2639/3214 1955/2633/3208 +f 1858/2639/3214 1951/2629/3204 1954/2632/3207 +f 1945/2623/3198 1960/2640/3215 1947/2625/3200 +f 1855/2641/3216 1854/2638/3213 1955/2633/3208 +f 1858/2639/3214 1855/2641/3216 1955/2633/3208 +f 1959/2637/3212 1947/2625/3200 1961/2642/3217 +f 1947/2625/3200 1960/2640/3215 1961/2642/3217 +f 1861/2643/3218 1954/2632/3207 1956/2634/3209 +f 1861/2643/3218 1858/2639/3214 1954/2632/3207 +f 1865/2644/3219 1956/2634/3209 1959/2637/3212 +f 1865/2644/3219 1861/2643/3218 1956/2634/3209 +f 1930/2645/3220 1865/2644/3219 1959/2637/3212 +f 1945/2623/3198 1962/2646/3221 1960/2640/3215 +f 1945/2623/3198 1948/2626/3201 1962/2646/3221 +f 1930/2645/3220 1959/2637/3212 1963/2647/3222 +f 1959/2637/3212 1961/2642/3217 1963/2647/3222 +f 1963/2647/3222 1961/2642/3217 1964/2648/3223 +f 1961/2642/3217 1960/2640/3215 1965/2649/3224 +f 1961/2642/3217 1965/2649/3224 1964/2648/3223 +f 1962/2646/3221 1966/2650/3225 1960/2640/3215 +f 1960/2640/3215 1966/2650/3225 1965/2649/3224 +f 1966/2650/3225 1962/2646/3221 1967/2651/3226 +f 1966/2650/3225 1967/2651/3226 1965/2649/3224 +f 1948/2626/3201 1968/2652/3227 1962/2646/3221 +f 1948/2626/3201 1958/2636/3211 1968/2652/3227 +f 1962/2646/3221 1969/2653/3228 1967/2651/3226 +f 1970/2654/3229 1969/2653/3228 1962/2646/3221 +f 1968/2652/3227 1970/2654/3229 1962/2646/3221 +f 1964/2648/3223 1965/2649/3224 1971/2655/3230 +f 1967/2651/3226 1972/2656/3231 1965/2649/3224 +f 1965/2649/3224 1972/2656/3231 1971/2655/3230 +f 1969/2653/3228 1973/2657/3232 1967/2651/3226 +f 1969/2653/3228 1970/2654/3229 1973/2657/3232 +f 1972/2656/3231 1967/2651/3226 1974/2658/3233 +f 1972/2656/3231 1974/2658/3233 1971/2655/3230 +f 1967/2651/3226 1975/2659/3234 1974/2658/3233 +f 1973/2657/3232 1975/2659/3234 1967/2651/3226 +f 1974/2658/3233 1976/2660/3235 1971/2655/3230 +f 1970/2654/3229 1977/2661/3236 1973/2657/3232 +f 1974/2658/3233 1975/2659/3234 1978/2662/3237 +f 1979/2663/3238 1976/2660/3235 1974/2658/3233 +f 1911/2589/3164 1980/2664/3239 1953/2631/3206 +f 1911/2589/3164 1957/2635/3210 1980/2664/3239 +f 1981/2665/3240 1979/2663/3238 1974/2658/3233 +f 1981/2665/3240 1974/2658/3233 1978/2662/3237 +f 1973/2657/3232 1982/2666/3241 1975/2659/3234 +f 1982/2666/3241 1978/2662/3237 1975/2659/3234 +f 1968/2652/3227 1983/2667/3242 1970/2654/3229 +f 1958/2636/3211 1983/2667/3242 1968/2652/3227 +f 1958/2636/3211 1952/2630/3205 1983/2667/3242 +f 1982/2666/3241 1973/2657/3232 1984/2668/3243 +f 1973/2657/3232 1977/2661/3236 1984/2668/3243 +f 1985/2669/3244 1979/2663/3238 1981/2665/3240 +f 1986/2670/3245 1977/2661/3236 1970/2654/3229 +f 1987/2671/3246 1981/2665/3240 1978/2662/3237 +f 1987/2671/3246 1985/2669/3244 1981/2665/3240 +f 1988/2672/3247 1978/2662/3237 1982/2666/3241 +f 1988/2672/3247 1987/2671/3246 1978/2662/3237 +f 1989/2673/3248 1982/2666/3241 1984/2668/3243 +f 1989/2673/3248 1988/2672/3247 1982/2666/3241 +f 1990/2674/3249 1986/2670/3245 1970/2654/3229 +f 1983/2667/3242 1990/2674/3249 1970/2654/3229 +f 1991/2675/3250 1984/2668/3243 1977/2661/3236 +f 1986/2670/3245 1991/2675/3250 1977/2661/3236 +f 1992/2676/3251 1989/2673/3248 1984/2668/3243 +f 1992/2676/3251 1984/2668/3243 1991/2675/3250 +f 1889/2567/3142 1993/2677/3252 1944/2622/3197 +f 1994/2678/3253 1993/2677/3252 1889/2567/3142 +f 1935/2613/3188 1994/2678/3253 1889/2567/3142 +f 1875/2553/3128 1995/2679/3254 1935/2613/3188 +f 1875/2553/3128 1936/2614/3189 1995/2679/3254 +f 1996/2680/3255 1992/2676/3251 1991/2675/3250 +f 1991/2675/3250 1986/2670/3245 1997/2681/3256 +f 1996/2680/3255 1991/2675/3250 1997/2681/3256 +f 1990/2674/3249 1998/2682/3257 1986/2670/3245 +f 1998/2682/3257 1990/2674/3249 1983/2667/3242 +f 1986/2670/3245 1999/2683/3258 1997/2681/3256 +f 1998/2682/3257 1999/2683/3258 1986/2670/3245 +f 2000/2684/3259 1998/2682/3257 1983/2667/3242 +f 1952/2630/3205 2000/2684/3259 1983/2667/3242 +f 1952/2630/3205 1953/2631/3206 2000/2684/3259 +f 2001/2685/3260 1996/2680/3255 1997/2681/3256 +f 2002/2686/3261 1997/2681/3256 1999/2683/3258 +f 2001/2685/3260 1997/2681/3256 2002/2686/3261 +f 2003/2687/3262 1999/2683/3258 1998/2682/3257 +f 2003/2687/3262 2002/2686/3261 1999/2683/3258 +f 2000/2684/3259 2004/2688/3263 1998/2682/3257 +f 1953/2631/3206 2004/2688/3263 2000/2684/3259 +f 1980/2664/3239 2004/2688/3263 1953/2631/3206 +f 2005/2689/3264 2003/2687/3262 1998/2682/3257 +f 2004/2688/3263 2005/2689/3264 1998/2682/3257 +f 2006/2690/3265 2001/2685/3260 2002/2686/3261 +f 2007/2691/3266 2002/2686/3261 2003/2687/3262 +f 2006/2690/3265 2002/2686/3261 2007/2691/3266 +f 2005/2689/3264 2008/2692/3267 2003/2687/3262 +f 2008/2692/3267 2005/2689/3264 2004/2688/3263 +f 1980/2664/3239 2008/2692/3267 2004/2688/3263 +f 2009/2693/3268 2007/2691/3266 2003/2687/3262 +f 2008/2692/3267 2009/2693/3268 2003/2687/3262 +f 2010/2694/3269 2006/2690/3265 2007/2691/3266 +f 2007/2691/3266 2009/2693/3268 2011/2695/3270 +f 2011/2695/3270 2009/2693/3268 2008/2692/3267 +f 2012/2696/3271 2010/2694/3269 2007/2691/3266 +f 2013/2697/3272 2012/2696/3271 2007/2691/3266 +f 2013/2697/3272 2007/2691/3266 2011/2695/3270 +f 1980/2664/3239 2014/2698/3273 2008/2692/3267 +f 1957/2635/3210 2014/2698/3273 1980/2664/3239 +f 2015/2699/3274 2011/2695/3270 2008/2692/3267 +f 2014/2698/3273 2015/2699/3274 2008/2692/3267 +f 2012/2696/3271 2013/2697/3272 2016/2700/3275 +f 2013/2697/3272 2011/2695/3270 2017/2701/3276 +f 2015/2699/3274 2018/2702/3277 2011/2695/3270 +f 2018/2702/3277 2015/2699/3274 2014/2698/3273 +f 2018/2702/3277 2017/2701/3276 2011/2695/3270 +f 2013/2697/3272 2019/2703/3278 2016/2700/3275 +f 2019/2703/3278 2013/2697/3272 2017/2701/3276 +f 2020/2704/3279 2014/2698/3273 1957/2635/3210 +f 2020/2704/3279 2018/2702/3277 2014/2698/3273 +f 1943/2621/3196 2020/2704/3279 1957/2635/3210 +f 1943/2621/3196 1944/2622/3197 2020/2704/3279 +f 2021/2705/3280 2016/2700/3275 2019/2703/3278 +f 2019/2703/3278 2017/2701/3276 2022/2706/3281 +f 2022/2706/3281 2017/2701/3276 2018/2702/3277 +f 2023/2707/3282 2021/2705/3280 2019/2703/3278 +f 2023/2707/3282 2019/2703/3278 2022/2706/3281 +f 2020/2704/3279 2024/2708/3283 2018/2702/3277 +f 1944/2622/3197 2024/2708/3283 2020/2704/3279 +f 1993/2677/3252 2024/2708/3283 1944/2622/3197 +f 2025/2709/3284 2022/2706/3281 2018/2702/3277 +f 2024/2708/3283 2025/2709/3284 2018/2702/3277 +f 2021/2705/3280 2023/2707/3282 2026/2710/3285 +f 2023/2707/3282 2022/2706/3281 2027/2711/3286 +f 2025/2709/3284 2028/2712/3287 2022/2706/3281 +f 2028/2712/3287 2025/2709/3284 2024/2708/3283 +f 2028/2712/3287 2027/2711/3286 2022/2706/3281 +f 1993/2677/3252 2028/2712/3287 2024/2708/3283 +f 1993/2677/3252 1994/2678/3253 2028/2712/3287 +f 2023/2707/3282 2029/2713/3288 2026/2710/3285 +f 2029/2713/3288 2023/2707/3282 2027/2711/3286 +f 2030/2714/3289 2026/2710/3285 2029/2713/3288 +f 2029/2713/3288 2027/2711/3286 2031/2715/3290 +f 2031/2715/3290 2027/2711/3286 2028/2712/3287 +f 2032/2716/3291 2030/2714/3289 2029/2713/3288 +f 2032/2716/3291 2029/2713/3288 2031/2715/3290 +f 1994/2678/3253 2033/2717/3292 2028/2712/3287 +f 2033/2717/3292 2031/2715/3290 2028/2712/3287 +f 1994/2678/3253 1935/2613/3188 2034/2718/3293 +f 1935/2613/3188 1995/2679/3254 2034/2718/3293 +f 2030/2714/3289 2032/2716/3291 2035/2719/3294 +f 2036/2720/3295 2033/2717/3292 1994/2678/3253 +f 2031/2715/3290 2033/2717/3292 2036/2720/3295 +f 2034/2718/3293 2036/2720/3295 1994/2678/3253 +f 2032/2716/3291 2031/2715/3290 2037/2721/3296 +f 2037/2721/3296 2031/2715/3290 2036/2720/3295 +f 2032/2716/3291 2038/2722/3297 2035/2719/3294 +f 2038/2722/3297 2032/2716/3291 2037/2721/3296 +f 2039/2723/3298 2035/2719/3294 2038/2722/3297 +f 2038/2722/3297 2037/2721/3296 2040/2724/3299 +f 2040/2724/3299 2037/2721/3296 2036/2720/3295 +f 2041/2725/3300 2039/2723/3298 2038/2722/3297 +f 2041/2725/3300 2038/2722/3297 2040/2724/3299 +f 2034/2718/3293 2042/2726/3301 2036/2720/3295 +f 2042/2726/3301 2034/2718/3293 1995/2679/3254 +f 2043/2727/3302 2040/2724/3299 2036/2720/3295 +f 2042/2726/3301 2043/2727/3302 2036/2720/3295 +f 1985/2728/3303 2039/2723/3298 2041/2725/3300 +f 2044/2729/3304 2042/2726/3301 1995/2679/3254 +f 1936/2614/3189 2044/2729/3304 1995/2679/3254 +f 1936/2614/3189 1930/2608/3183 2044/2729/3304 +f 1979/2730/3305 2041/2725/3300 2040/2724/3299 +f 1979/2730/3305 1985/2728/3303 2041/2725/3300 +f 2043/2727/3302 1971/2731/3306 2040/2724/3299 +f 1971/2731/3306 2043/2727/3302 2042/2726/3301 +f 1976/2732/3307 1979/2730/3305 2040/2724/3299 +f 1971/2731/3306 1976/2732/3307 2040/2724/3299 +f 2044/2729/3304 1963/2733/3308 2042/2726/3301 +f 1930/2608/3183 1963/2733/3308 2044/2729/3304 +f 1964/2734/3309 1971/2731/3306 2042/2726/3301 +f 1963/2733/3308 1964/2734/3309 2042/2726/3301 +f 2045/2735/3310 2046/2736/3311 2047/2737/3311 +f 2048/2738/3310 2045/2735/3310 2047/2737/3311 +f 2049/2739/3312 2050/2740/3312 2051/2741/3313 +f 2052/2742/3313 2049/2739/3312 2051/2741/3313 +f 2053/2743/3314 2054/2744/3314 2046/2745/3314 +f 2045/2746/3315 2053/2743/3314 2046/2745/3314 +f 2053/2743/3314 2045/2746/3315 2055/2747/3315 +f 2053/2743/3314 2055/2747/3315 2056/2748/3315 +f 2051/2749/3315 2053/2743/3314 2056/2748/3315 +f 2051/2749/3315 2050/2750/3314 2053/2743/3314 +f 2057/2751/3316 2058/2752/3316 2047/2753/3316 +f 2058/2752/3316 2048/2754/3316 2047/2753/3316 +f 2059/2755/3316 2048/2754/3316 2058/2752/3316 +f 2060/2756/3316 2059/2755/3316 2058/2752/3316 +f 2058/2752/3316 2052/2757/3316 2060/2756/3316 +f 2058/2752/3316 2049/2758/3316 2052/2757/3316 +f 2056/2759/3317 2060/2760/3318 2052/2761/3319 +f 2051/2762/3320 2056/2759/3317 2052/2761/3319 +f 2055/2763/3321 2045/2735/3322 2048/2738/3323 +f 2059/2764/3324 2055/2763/3321 2048/2738/3323 +f 2056/2765/3325 2055/2763/3321 2059/2764/3324 +f 2060/2766/3326 2056/2765/3325 2059/2764/3324 +f 2061/2735/3327 2062/2736/3328 2063/2737/3328 +f 2064/2738/3327 2061/2735/3327 2063/2737/3328 +f 2065/2739/3329 2066/2740/3329 2067/2741/3329 +f 2068/2742/3329 2065/2739/3329 2067/2741/3329 +f 2069/2743/3330 2070/2744/3331 2062/2745/3331 +f 2061/2746/3330 2069/2743/3330 2062/2745/3331 +f 2069/2743/3330 2061/2746/3330 2071/2747/3330 +f 2069/2743/3330 2071/2747/3330 2072/2748/3330 +f 2067/2749/3330 2069/2743/3330 2072/2748/3330 +f 2067/2749/3330 2066/2750/3331 2069/2743/3330 +f 2073/2751/3332 2074/2752/3332 2063/2753/3332 +f 2074/2752/3332 2064/2754/3332 2063/2753/3332 +f 2075/2755/3332 2064/2754/3332 2074/2752/3332 +f 2076/2756/3332 2075/2755/3332 2074/2752/3332 +f 2074/2752/3332 2068/2757/3332 2076/2756/3332 +f 2074/2752/3332 2065/2758/3332 2068/2757/3332 +f 2072/2759/3333 2076/2760/3334 2068/2761/3333 +f 2067/2762/3333 2072/2759/3333 2068/2761/3333 +f 2071/2763/3335 2061/2735/3336 2064/2738/3337 +f 2075/2764/3338 2071/2763/3335 2064/2738/3337 +f 2072/2765/3339 2071/2763/3335 2075/2764/3338 +f 2076/2766/3340 2072/2765/3339 2075/2764/3338 +f 2077/2735/3341 2078/2736/3342 2079/2737/3342 +f 2080/2738/3341 2077/2735/3341 2079/2737/3342 +f 2081/2739/3343 2082/2740/3343 2083/2741/3343 +f 2084/2742/3343 2081/2739/3343 2083/2741/3343 +f 2085/2743/3344 2086/2744/3345 2078/2745/3345 +f 2077/2746/3345 2085/2743/3344 2078/2745/3345 +f 2085/2743/3344 2077/2746/3345 2087/2747/3345 +f 2085/2743/3344 2087/2747/3345 2088/2748/3345 +f 2083/2749/3345 2085/2743/3344 2088/2748/3345 +f 2083/2749/3345 2082/2750/3344 2085/2743/3344 +f 2089/2751/3346 2090/2752/3346 2079/2753/3346 +f 2090/2752/3346 2080/2754/3347 2079/2753/3346 +f 2091/2755/3347 2080/2754/3347 2090/2752/3346 +f 2092/2756/3347 2091/2755/3347 2090/2752/3346 +f 2090/2752/3346 2084/2757/3347 2092/2756/3347 +f 2090/2752/3346 2081/2758/3346 2084/2757/3347 +f 2088/2759/3348 2092/2760/3348 2084/2761/3348 +f 2083/2762/3348 2088/2759/3348 2084/2761/3348 +f 2087/2763/3349 2077/2735/3350 2080/2738/3351 +f 2091/2764/3352 2087/2763/3349 2080/2738/3351 +f 2088/2765/3353 2087/2763/3349 2091/2764/3352 +f 2092/2766/3354 2088/2765/3353 2091/2764/3352 +f 2093/2735/3355 2094/2736/3356 2095/2737/3356 +f 2096/2738/3355 2093/2735/3355 2095/2737/3356 +f 2097/2739/3357 2098/2740/3357 2099/2741/3358 +f 2100/2742/3358 2097/2739/3357 2099/2741/3358 +f 2101/2743/3359 2102/2744/3359 2094/2745/3359 +f 2093/2746/3359 2101/2743/3359 2094/2745/3359 +f 2101/2743/3359 2093/2746/3359 2103/2747/3359 +f 2101/2743/3359 2103/2747/3359 2104/2748/3359 +f 2099/2749/3359 2101/2743/3359 2104/2748/3359 +f 2099/2749/3359 2098/2750/3359 2101/2743/3359 +f 2105/2751/3360 2106/2752/3360 2095/2753/3360 +f 2106/2752/3360 2096/2754/3360 2095/2753/3360 +f 2107/2755/3361 2096/2754/3360 2106/2752/3360 +f 2108/2756/3361 2107/2755/3361 2106/2752/3360 +f 2106/2752/3360 2100/2757/3361 2108/2756/3361 +f 2106/2752/3360 2097/2758/3360 2100/2757/3361 +f 2104/2759/3362 2108/2760/3362 2100/2761/3362 +f 2099/2762/3362 2104/2759/3362 2100/2761/3362 +f 2103/2763/3363 2093/2735/3364 2096/2738/3364 +f 2107/2764/3365 2103/2763/3363 2096/2738/3364 +f 2104/2765/3366 2103/2763/3363 2107/2764/3365 +f 2108/2766/3366 2104/2765/3366 2107/2764/3365 +f 2109/2531/3367 2110/2532/3107 2111/2533/3108 +f 2112/2534/3368 2109/2531/3367 2111/2533/3108 +f 2113/2535/3110 2112/2534/3368 2111/2533/3108 +f 2114/2536/3111 2113/2535/3110 2111/2533/3108 +f 2109/2531/3367 2112/2534/3368 2115/2537/3112 +f 2116/2538/3113 2113/2535/3110 2114/2536/3111 +f 2117/2539/3114 2116/2538/3113 2114/2536/3111 +f 2113/2535/3110 2118/2540/3115 2112/2534/3368 +f 2118/2540/3115 2115/2537/3112 2112/2534/3368 +f 2119/2541/3116 2116/2538/3113 2117/2539/3114 +f 2116/2538/3113 2120/2542/3117 2113/2535/3110 +f 2120/2542/3117 2116/2538/3113 2119/2541/3116 +f 2120/2542/3117 2118/2540/3115 2113/2535/3110 +f 2121/2543/3118 2119/2541/3116 2117/2539/3114 +f 2122/2544/3119 2109/2531/3367 2115/2537/3112 +f 2123/2545/3120 2122/2544/3119 2115/2537/3112 +f 2118/2540/3115 2124/2546/3121 2115/2537/3112 +f 2125/2547/3122 2123/2545/3120 2115/2537/3112 +f 2124/2546/3121 2125/2547/3122 2115/2537/3112 +f 2126/2548/3123 2120/2542/3117 2119/2541/3116 +f 2120/2542/3117 2127/2549/3124 2118/2540/3115 +f 2127/2549/3124 2124/2546/3121 2118/2540/3115 +f 2128/2550/3125 2127/2549/3124 2120/2542/3117 +f 2126/2548/3123 2128/2550/3125 2120/2542/3117 +f 2129/2551/3369 2123/2545/3120 2125/2547/3122 +f 2124/2546/3121 2130/2552/3127 2125/2547/3122 +f 2126/2548/3123 2119/2541/3116 2131/2553/3128 +f 2128/2550/3125 2126/2548/3123 2131/2553/3128 +f 2127/2549/3124 2132/2554/3129 2124/2546/3121 +f 2132/2554/3129 2127/2549/3124 2128/2550/3125 +f 2132/2554/3129 2130/2552/3127 2124/2546/3121 +f 2133/2555/3130 2129/2551/3369 2125/2547/3122 +f 2130/2552/3127 2133/2555/3130 2125/2547/3122 +f 2134/2556/3131 2132/2554/3129 2128/2550/3125 +f 2134/2556/3131 2128/2550/3125 2135/2557/3132 +f 2135/2557/3132 2128/2550/3125 2131/2553/3128 +f 2136/2558/3133 2129/2551/3369 2133/2555/3130 +f 2130/2552/3127 2137/2559/3134 2133/2555/3130 +f 2132/2554/3129 2138/2560/3135 2130/2552/3127 +f 2138/2560/3135 2137/2559/3134 2130/2552/3127 +f 2139/2561/3136 2136/2558/3133 2133/2555/3130 +f 2137/2559/3134 2139/2561/3136 2133/2555/3130 +f 2134/2556/3131 2140/2562/3137 2132/2554/3129 +f 2140/2562/3137 2138/2560/3135 2132/2554/3129 +f 2141/2563/3138 2134/2556/3131 2135/2557/3132 +f 2140/2562/3137 2134/2556/3131 2141/2563/3138 +f 2142/2564/3139 2136/2558/3133 2139/2561/3136 +f 2137/2559/3134 2143/2565/3140 2139/2561/3136 +f 2143/2565/3140 2137/2559/3134 2138/2560/3135 +f 2144/2566/3141 2142/2564/3139 2139/2561/3136 +f 2143/2565/3140 2144/2566/3141 2139/2561/3136 +f 2141/2563/3138 2135/2557/3132 2145/2567/3142 +f 2146/2568/3143 2138/2560/3135 2140/2562/3137 +f 2146/2568/3143 2143/2565/3140 2138/2560/3135 +f 2147/2569/3144 2140/2562/3137 2141/2563/3138 +f 2141/2563/3138 2145/2567/3142 2147/2569/3144 +f 2148/2570/3145 2146/2568/3143 2140/2562/3137 +f 2148/2570/3145 2140/2562/3137 2147/2569/3144 +f 2149/2571/3146 2142/2564/3139 2144/2566/3141 +f 2143/2565/3140 2150/2572/3147 2144/2566/3141 +f 2146/2568/3143 2151/2573/3148 2143/2565/3140 +f 2151/2573/3148 2150/2572/3147 2143/2565/3140 +f 2152/2574/3149 2149/2571/3146 2144/2566/3141 +f 2150/2572/3147 2152/2574/3149 2144/2566/3141 +f 2148/2570/3145 2153/2575/3150 2146/2568/3143 +f 2153/2575/3150 2151/2573/3148 2146/2568/3143 +f 2154/2576/3151 2148/2570/3145 2147/2569/3144 +f 2153/2575/3150 2148/2570/3145 2154/2576/3151 +f 2155/2577/3152 2149/2571/3146 2152/2574/3149 +f 2150/2572/3147 2156/2578/3153 2152/2574/3149 +f 2156/2578/3153 2150/2572/3147 2151/2573/3148 +f 2157/2579/3154 2155/2577/3152 2152/2574/3149 +f 2156/2578/3153 2157/2579/3154 2152/2574/3149 +f 2158/2580/3155 2151/2573/3148 2153/2575/3150 +f 2158/2580/3155 2156/2578/3153 2151/2573/3148 +f 2159/2581/3370 2153/2575/3150 2154/2576/3151 +f 2160/2582/3157 2158/2580/3155 2153/2575/3150 +f 2160/2582/3157 2153/2575/3150 2161/2583/3158 +f 2153/2575/3150 2159/2581/3370 2161/2583/3158 +f 2162/2584/3159 2155/2577/3152 2157/2579/3154 +f 2156/2578/3153 2163/2585/3160 2157/2579/3154 +f 2158/2580/3155 2164/2586/3161 2156/2578/3153 +f 2164/2586/3161 2163/2585/3160 2156/2578/3153 +f 2165/2587/3162 2162/2584/3159 2157/2579/3154 +f 2163/2585/3160 2165/2587/3162 2157/2579/3154 +f 2160/2582/3157 2166/2588/3163 2158/2580/3155 +f 2166/2588/3163 2160/2582/3157 2161/2583/3158 +f 2166/2588/3163 2164/2586/3161 2158/2580/3155 +f 2161/2583/3158 2159/2581/3370 2167/2589/3164 +f 2168/2590/3165 2166/2588/3163 2161/2583/3158 +f 2161/2583/3158 2167/2589/3164 2168/2590/3165 +f 2162/2584/3159 2165/2587/3162 2169/2591/3371 +f 2163/2585/3160 2170/2592/3167 2165/2587/3162 +f 2170/2592/3167 2169/2591/3371 2165/2587/3162 +f 2164/2586/3161 2171/2593/3168 2163/2585/3160 +f 2171/2593/3168 2164/2586/3161 2166/2588/3163 +f 2171/2593/3168 2170/2592/3167 2163/2585/3160 +f 2172/2594/3169 2162/2584/3159 2169/2591/3371 +f 2166/2588/3163 2168/2590/3165 2173/2595/3170 +f 2174/2596/3171 2171/2593/3168 2166/2588/3163 +f 2174/2596/3171 2166/2588/3163 2173/2595/3170 +f 2170/2592/3167 2175/2597/3172 2169/2591/3371 +f 2176/2598/3173 2172/2594/3169 2169/2591/3371 +f 2170/2592/3167 2171/2593/3168 2177/2599/3174 +f 2175/2597/3172 2170/2592/3167 2177/2599/3174 +f 2178/2600/3175 2176/2598/3173 2169/2591/3371 +f 2175/2597/3172 2178/2600/3175 2169/2591/3371 +f 2174/2596/3171 2179/2601/3176 2171/2593/3168 +f 2179/2601/3176 2177/2599/3174 2171/2593/3168 +f 2174/2596/3171 2173/2595/3170 2180/2602/3177 +f 2179/2601/3176 2174/2596/3171 2180/2602/3177 +f 2181/2603/3178 2176/2598/3173 2178/2600/3175 +f 2175/2597/3172 2182/2604/3179 2178/2600/3175 +f 2182/2604/3179 2175/2597/3172 2177/2599/3174 +f 2183/2605/3180 2181/2603/3178 2178/2600/3175 +f 2182/2604/3179 2183/2605/3180 2178/2600/3175 +f 2184/2606/3181 2177/2599/3174 2179/2601/3176 +f 2184/2606/3181 2182/2604/3179 2177/2599/3174 +f 2179/2601/3176 2180/2602/3177 2185/2607/3182 +f 2119/2541/3116 2121/2543/3118 2186/2608/3183 +f 2187/2609/3184 2184/2606/3181 2179/2601/3176 +f 2187/2609/3184 2179/2601/3176 2185/2607/3182 +f 2188/2610/3185 2181/2603/3178 2183/2605/3180 +f 2182/2604/3179 2189/2611/3186 2183/2605/3180 +f 2184/2606/3181 2190/2612/3187 2182/2604/3179 +f 2190/2612/3187 2189/2611/3186 2182/2604/3179 +f 2135/2557/3132 2131/2553/3128 2191/2613/3188 +f 2135/2557/3132 2191/2613/3188 2145/2567/3142 +f 2119/2541/3116 2192/2614/3189 2131/2553/3128 +f 2192/2614/3189 2119/2541/3116 2186/2608/3183 +f 2193/2615/3190 2188/2610/3185 2183/2605/3180 +f 2189/2611/3186 2193/2615/3190 2183/2605/3180 +f 2187/2609/3184 2194/2616/3191 2184/2606/3181 +f 2194/2616/3191 2190/2612/3187 2184/2606/3181 +f 2185/2607/3182 2195/2617/3192 2187/2609/3184 +f 2195/2617/3192 2194/2616/3191 2187/2609/3184 +f 2196/2618/3193 2188/2610/3185 2193/2615/3190 +f 2189/2611/3186 2197/2619/3194 2193/2615/3190 +f 2197/2619/3194 2189/2611/3186 2190/2612/3187 +f 2198/2620/3195 2196/2618/3193 2193/2615/3190 +f 2197/2619/3194 2198/2620/3195 2193/2615/3190 +f 2154/2576/3151 2147/2569/3144 2199/2621/3196 +f 2154/2576/3151 2199/2621/3196 2159/2581/3370 +f 2145/2567/3142 2200/2622/3197 2147/2569/3144 +f 2147/2569/3144 2200/2622/3197 2199/2621/3196 +f 2195/2617/3192 2185/2607/3182 2201/2623/3198 +f 2202/2624/3199 2190/2612/3187 2194/2616/3191 +f 2202/2624/3199 2197/2619/3194 2190/2612/3187 +f 2195/2617/3192 2203/2625/3200 2194/2616/3191 +f 2195/2617/3192 2201/2623/3198 2203/2625/3200 +f 2185/2607/3182 2180/2602/3177 2204/2626/3201 +f 2185/2607/3182 2204/2626/3201 2201/2623/3198 +f 2205/2627/3202 2202/2624/3199 2194/2616/3191 +f 2203/2625/3200 2205/2627/3202 2194/2616/3191 +f 2206/2628/3203 2196/2618/3193 2198/2620/3195 +f 2197/2619/3194 2207/2629/3204 2198/2620/3195 +f 2173/2595/3170 2168/2590/3165 2208/2630/3205 +f 2167/2589/3164 2209/2631/3206 2168/2590/3165 +f 2168/2590/3165 2209/2631/3206 2208/2630/3205 +f 2202/2624/3199 2210/2632/3207 2197/2619/3194 +f 2210/2632/3207 2207/2629/3204 2197/2619/3194 +f 2211/2633/3208 2206/2628/3203 2198/2620/3195 +f 2207/2629/3204 2211/2633/3208 2198/2620/3195 +f 2205/2627/3202 2212/2634/3209 2202/2624/3199 +f 2212/2634/3209 2210/2632/3207 2202/2624/3199 +f 2159/2581/3370 2213/2635/3210 2167/2589/3164 +f 2199/2621/3196 2213/2635/3210 2159/2581/3370 +f 2180/2602/3177 2173/2595/3170 2214/2636/3211 +f 2180/2602/3177 2214/2636/3211 2204/2626/3201 +f 2173/2595/3170 2208/2630/3205 2214/2636/3211 +f 2205/2627/3202 2203/2625/3200 2215/2637/3212 +f 2212/2634/3209 2205/2627/3202 2215/2637/3212 +f 2110/2638/3213 2206/2628/3203 2211/2633/3208 +f 2207/2629/3204 2114/2639/3214 2211/2633/3208 +f 2114/2639/3214 2207/2629/3204 2210/2632/3207 +f 2201/2623/3198 2216/2640/3215 2203/2625/3200 +f 2111/2641/3216 2110/2638/3213 2211/2633/3208 +f 2114/2639/3214 2111/2641/3216 2211/2633/3208 +f 2215/2637/3212 2203/2625/3200 2217/2642/3217 +f 2203/2625/3200 2216/2640/3215 2217/2642/3217 +f 2117/2643/3218 2210/2632/3207 2212/2634/3209 +f 2117/2643/3218 2114/2639/3214 2210/2632/3207 +f 2121/2644/3219 2212/2634/3209 2215/2637/3212 +f 2121/2644/3219 2117/2643/3218 2212/2634/3209 +f 2186/2645/3220 2121/2644/3219 2215/2637/3212 +f 2201/2623/3198 2218/2646/3372 2216/2640/3215 +f 2201/2623/3198 2204/2626/3201 2218/2646/3372 +f 2186/2645/3220 2215/2637/3212 2219/2647/3222 +f 2215/2637/3212 2217/2642/3217 2219/2647/3222 +f 2219/2647/3222 2217/2642/3217 2220/2648/3373 +f 2217/2642/3217 2216/2640/3215 2221/2649/3224 +f 2217/2642/3217 2221/2649/3224 2220/2648/3373 +f 2218/2646/3372 2222/2650/3225 2216/2640/3215 +f 2216/2640/3215 2222/2650/3225 2221/2649/3224 +f 2222/2650/3225 2218/2646/3372 2223/2651/3226 +f 2222/2650/3225 2223/2651/3226 2221/2649/3224 +f 2204/2626/3201 2224/2652/3227 2218/2646/3372 +f 2204/2626/3201 2214/2636/3211 2224/2652/3227 +f 2218/2646/3372 2225/2653/3228 2223/2651/3226 +f 2226/2654/3229 2225/2653/3228 2218/2646/3372 +f 2224/2652/3227 2226/2654/3229 2218/2646/3372 +f 2220/2648/3373 2221/2649/3224 2227/2655/3230 +f 2223/2651/3226 2228/2656/3231 2221/2649/3224 +f 2221/2649/3224 2228/2656/3231 2227/2655/3230 +f 2225/2653/3228 2229/2657/3232 2223/2651/3226 +f 2225/2653/3228 2226/2654/3229 2229/2657/3232 +f 2228/2656/3231 2223/2651/3226 2230/2658/3374 +f 2228/2656/3231 2230/2658/3374 2227/2655/3230 +f 2223/2651/3226 2231/2659/3234 2230/2658/3374 +f 2229/2657/3232 2231/2659/3234 2223/2651/3226 +f 2230/2658/3374 2232/2660/3235 2227/2655/3230 +f 2226/2654/3229 2233/2661/3236 2229/2657/3232 +f 2230/2658/3374 2231/2659/3234 2234/2662/3237 +f 2235/2663/3238 2232/2660/3235 2230/2658/3374 +f 2167/2589/3164 2236/2664/3239 2209/2631/3206 +f 2167/2589/3164 2213/2635/3210 2236/2664/3239 +f 2237/2665/3375 2235/2663/3238 2230/2658/3374 +f 2237/2665/3375 2230/2658/3374 2234/2662/3237 +f 2229/2657/3232 2238/2666/3241 2231/2659/3234 +f 2238/2666/3241 2234/2662/3237 2231/2659/3234 +f 2224/2652/3227 2239/2667/3242 2226/2654/3229 +f 2214/2636/3211 2239/2667/3242 2224/2652/3227 +f 2214/2636/3211 2208/2630/3205 2239/2667/3242 +f 2238/2666/3241 2229/2657/3232 2240/2668/3376 +f 2229/2657/3232 2233/2661/3236 2240/2668/3376 +f 2241/2669/3244 2235/2663/3238 2237/2665/3375 +f 2242/2670/3245 2233/2661/3236 2226/2654/3229 +f 2243/2671/3246 2237/2665/3375 2234/2662/3237 +f 2243/2671/3246 2241/2669/3244 2237/2665/3375 +f 2244/2672/3247 2234/2662/3237 2238/2666/3241 +f 2244/2672/3247 2243/2671/3246 2234/2662/3237 +f 2245/2673/3377 2238/2666/3241 2240/2668/3376 +f 2245/2673/3377 2244/2672/3247 2238/2666/3241 +f 2246/2674/3249 2242/2670/3245 2226/2654/3229 +f 2239/2667/3242 2246/2674/3249 2226/2654/3229 +f 2247/2675/3250 2240/2668/3376 2233/2661/3236 +f 2242/2670/3245 2247/2675/3250 2233/2661/3236 +f 2248/2676/3251 2245/2673/3377 2240/2668/3376 +f 2248/2676/3251 2240/2668/3376 2247/2675/3250 +f 2145/2567/3142 2249/2677/3252 2200/2622/3197 +f 2250/2678/3253 2249/2677/3252 2145/2567/3142 +f 2191/2613/3188 2250/2678/3253 2145/2567/3142 +f 2131/2553/3128 2251/2679/3378 2191/2613/3188 +f 2131/2553/3128 2192/2614/3189 2251/2679/3378 +f 2252/2680/3255 2248/2676/3251 2247/2675/3250 +f 2247/2675/3250 2242/2670/3245 2253/2681/3256 +f 2252/2680/3255 2247/2675/3250 2253/2681/3256 +f 2246/2674/3249 2254/2682/3257 2242/2670/3245 +f 2254/2682/3257 2246/2674/3249 2239/2667/3242 +f 2242/2670/3245 2255/2683/3258 2253/2681/3256 +f 2254/2682/3257 2255/2683/3258 2242/2670/3245 +f 2256/2684/3259 2254/2682/3257 2239/2667/3242 +f 2208/2630/3205 2256/2684/3259 2239/2667/3242 +f 2208/2630/3205 2209/2631/3206 2256/2684/3259 +f 2257/2685/3260 2252/2680/3255 2253/2681/3256 +f 2258/2686/3261 2253/2681/3256 2255/2683/3258 +f 2257/2685/3260 2253/2681/3256 2258/2686/3261 +f 2259/2687/3262 2255/2683/3258 2254/2682/3257 +f 2259/2687/3262 2258/2686/3261 2255/2683/3258 +f 2256/2684/3259 2260/2688/3263 2254/2682/3257 +f 2209/2631/3206 2260/2688/3263 2256/2684/3259 +f 2236/2664/3239 2260/2688/3263 2209/2631/3206 +f 2261/2689/3264 2259/2687/3262 2254/2682/3257 +f 2260/2688/3263 2261/2689/3264 2254/2682/3257 +f 2262/2690/3265 2257/2685/3260 2258/2686/3261 +f 2263/2691/3266 2258/2686/3261 2259/2687/3262 +f 2262/2690/3265 2258/2686/3261 2263/2691/3266 +f 2261/2689/3264 2264/2692/3267 2259/2687/3262 +f 2264/2692/3267 2261/2689/3264 2260/2688/3263 +f 2236/2664/3239 2264/2692/3267 2260/2688/3263 +f 2265/2693/3268 2263/2691/3266 2259/2687/3262 +f 2264/2692/3267 2265/2693/3268 2259/2687/3262 +f 2266/2694/3269 2262/2690/3265 2263/2691/3266 +f 2263/2691/3266 2265/2693/3268 2267/2695/3270 +f 2267/2695/3270 2265/2693/3268 2264/2692/3267 +f 2268/2696/3271 2266/2694/3269 2263/2691/3266 +f 2269/2697/3379 2268/2696/3271 2263/2691/3266 +f 2269/2697/3379 2263/2691/3266 2267/2695/3270 +f 2236/2664/3239 2270/2698/3273 2264/2692/3267 +f 2213/2635/3210 2270/2698/3273 2236/2664/3239 +f 2271/2699/3274 2267/2695/3270 2264/2692/3267 +f 2270/2698/3273 2271/2699/3274 2264/2692/3267 +f 2268/2696/3271 2269/2697/3379 2272/2700/3275 +f 2269/2697/3379 2267/2695/3270 2273/2701/3276 +f 2271/2699/3274 2274/2702/3277 2267/2695/3270 +f 2274/2702/3277 2271/2699/3274 2270/2698/3273 +f 2274/2702/3277 2273/2701/3276 2267/2695/3270 +f 2269/2697/3379 2275/2703/3278 2272/2700/3275 +f 2275/2703/3278 2269/2697/3379 2273/2701/3276 +f 2276/2704/3279 2270/2698/3273 2213/2635/3210 +f 2276/2704/3279 2274/2702/3277 2270/2698/3273 +f 2199/2621/3196 2276/2704/3279 2213/2635/3210 +f 2199/2621/3196 2200/2622/3197 2276/2704/3279 +f 2277/2705/3280 2272/2700/3275 2275/2703/3278 +f 2275/2703/3278 2273/2701/3276 2278/2706/3281 +f 2278/2706/3281 2273/2701/3276 2274/2702/3277 +f 2279/2707/3282 2277/2705/3280 2275/2703/3278 +f 2279/2707/3282 2275/2703/3278 2278/2706/3281 +f 2276/2704/3279 2280/2708/3283 2274/2702/3277 +f 2200/2622/3197 2280/2708/3283 2276/2704/3279 +f 2249/2677/3252 2280/2708/3283 2200/2622/3197 +f 2281/2709/3284 2278/2706/3281 2274/2702/3277 +f 2280/2708/3283 2281/2709/3284 2274/2702/3277 +f 2277/2705/3280 2279/2707/3282 2282/2710/3285 +f 2279/2707/3282 2278/2706/3281 2283/2711/3286 +f 2281/2709/3284 2284/2712/3287 2278/2706/3281 +f 2284/2712/3287 2281/2709/3284 2280/2708/3283 +f 2284/2712/3287 2283/2711/3286 2278/2706/3281 +f 2249/2677/3252 2284/2712/3287 2280/2708/3283 +f 2249/2677/3252 2250/2678/3253 2284/2712/3287 +f 2279/2707/3282 2285/2713/3288 2282/2710/3285 +f 2285/2713/3288 2279/2707/3282 2283/2711/3286 +f 2286/2714/3289 2282/2710/3285 2285/2713/3288 +f 2285/2713/3288 2283/2711/3286 2287/2715/3290 +f 2287/2715/3290 2283/2711/3286 2284/2712/3287 +f 2288/2716/3291 2286/2714/3289 2285/2713/3288 +f 2288/2716/3291 2285/2713/3288 2287/2715/3290 +f 2250/2678/3253 2289/2717/3292 2284/2712/3287 +f 2289/2717/3292 2287/2715/3290 2284/2712/3287 +f 2250/2678/3253 2191/2613/3188 2290/2718/3293 +f 2191/2613/3188 2251/2679/3378 2290/2718/3293 +f 2286/2714/3289 2288/2716/3291 2291/2719/3294 +f 2292/2720/3295 2289/2717/3292 2250/2678/3253 +f 2287/2715/3290 2289/2717/3292 2292/2720/3295 +f 2290/2718/3293 2292/2720/3295 2250/2678/3253 +f 2288/2716/3291 2287/2715/3290 2293/2721/3296 +f 2293/2721/3296 2287/2715/3290 2292/2720/3295 +f 2288/2716/3291 2294/2722/3297 2291/2719/3294 +f 2294/2722/3297 2288/2716/3291 2293/2721/3296 +f 2295/2723/3298 2291/2719/3294 2294/2722/3297 +f 2294/2722/3297 2293/2721/3296 2296/2724/3299 +f 2296/2724/3299 2293/2721/3296 2292/2720/3295 +f 2297/2725/3300 2295/2723/3298 2294/2722/3297 +f 2297/2725/3300 2294/2722/3297 2296/2724/3299 +f 2290/2718/3293 2298/2726/3301 2292/2720/3295 +f 2298/2726/3301 2290/2718/3293 2251/2679/3378 +f 2299/2727/3302 2296/2724/3299 2292/2720/3295 +f 2298/2726/3301 2299/2727/3302 2292/2720/3295 +f 2241/2728/3303 2295/2723/3298 2297/2725/3300 +f 2300/2729/3304 2298/2726/3301 2251/2679/3378 +f 2192/2614/3189 2300/2729/3304 2251/2679/3378 +f 2192/2614/3189 2186/2608/3183 2300/2729/3304 +f 2235/2730/3305 2297/2725/3300 2296/2724/3299 +f 2235/2730/3305 2241/2728/3303 2297/2725/3300 +f 2299/2727/3302 2227/2731/3306 2296/2724/3299 +f 2227/2731/3306 2299/2727/3302 2298/2726/3301 +f 2232/2732/3307 2235/2730/3305 2296/2724/3299 +f 2227/2731/3306 2232/2732/3307 2296/2724/3299 +f 2300/2729/3304 2219/2733/3308 2298/2726/3301 +f 2186/2608/3183 2219/2733/3308 2300/2729/3304 +f 2220/2734/3309 2227/2731/3306 2298/2726/3301 +f 2219/2733/3308 2220/2734/3309 2298/2726/3301 +f 2301/2735/3310 2302/2736/3311 2303/2737/3311 +f 2304/2738/3310 2301/2735/3310 2303/2737/3311 +f 2305/2739/3313 2306/2740/3313 2307/2741/3312 +f 2308/2742/3312 2305/2739/3313 2307/2741/3312 +f 2309/2743/3314 2310/2744/3314 2302/2745/3314 +f 2301/2746/3315 2309/2743/3314 2302/2745/3314 +f 2309/2743/3314 2301/2746/3315 2311/2747/3315 +f 2309/2743/3314 2311/2747/3315 2312/2748/3315 +f 2307/2749/3315 2309/2743/3314 2312/2748/3315 +f 2307/2749/3315 2306/2750/3314 2309/2743/3314 +f 2313/2751/3316 2314/2752/3316 2303/2753/3316 +f 2314/2752/3316 2304/2754/3316 2303/2753/3316 +f 2315/2755/3316 2304/2754/3316 2314/2752/3316 +f 2316/2756/3316 2315/2755/3316 2314/2752/3316 +f 2314/2752/3316 2308/2757/3316 2316/2756/3316 +f 2314/2752/3316 2305/2758/3316 2308/2757/3316 +f 2312/2759/3319 2316/2760/3380 2308/2761/3319 +f 2307/2762/3381 2312/2759/3319 2308/2761/3319 +f 2311/2763/3321 2301/2735/3322 2304/2738/3323 +f 2315/2764/3382 2311/2763/3321 2304/2738/3323 +f 2312/2765/3325 2311/2763/3321 2315/2764/3382 +f 2316/2766/3326 2312/2765/3325 2315/2764/3382 +f 2317/2735/3327 2318/2736/3328 2319/2737/3328 +f 2320/2738/3327 2317/2735/3327 2319/2737/3328 +f 2321/2739/3329 2322/2740/3329 2323/2741/3383 +f 2324/2742/3383 2321/2739/3329 2323/2741/3383 +f 2325/2743/3331 2326/2744/3331 2318/2745/3331 +f 2317/2746/3330 2325/2743/3331 2318/2745/3331 +f 2325/2743/3331 2317/2746/3330 2327/2747/3330 +f 2325/2743/3331 2327/2747/3330 2328/2748/3330 +f 2323/2749/3330 2325/2743/3331 2328/2748/3330 +f 2323/2749/3330 2322/2750/3331 2325/2743/3331 +f 2329/2751/3332 2330/2752/3332 2319/2753/3332 +f 2330/2752/3332 2320/2754/3332 2319/2753/3332 +f 2331/2755/3332 2320/2754/3332 2330/2752/3332 +f 2332/2756/3332 2331/2755/3332 2330/2752/3332 +f 2330/2752/3332 2324/2757/3332 2332/2756/3332 +f 2330/2752/3332 2321/2758/3384 2324/2757/3332 +f 2328/2759/3385 2332/2760/3385 2324/2761/3385 +f 2323/2762/3386 2328/2759/3385 2324/2761/3385 +f 2327/2763/3335 2317/2735/3336 2320/2738/3337 +f 2331/2764/3338 2327/2763/3335 2320/2738/3337 +f 2328/2765/3339 2327/2763/3335 2331/2764/3338 +f 2332/2766/3340 2328/2765/3339 2331/2764/3338 +f 2333/2735/3341 2334/2736/3342 2335/2737/3342 +f 2336/2738/3341 2333/2735/3341 2335/2737/3342 +f 2337/2739/3387 2338/2740/3387 2339/2741/3343 +f 2340/2742/3343 2337/2739/3387 2339/2741/3343 +f 2341/2743/3344 2342/2744/3345 2334/2745/3345 +f 2333/2746/3345 2341/2743/3344 2334/2745/3345 +f 2341/2743/3344 2333/2746/3345 2343/2747/3345 +f 2341/2743/3344 2343/2747/3345 2344/2748/3345 +f 2339/2749/3345 2341/2743/3344 2344/2748/3345 +f 2339/2749/3345 2338/2750/3344 2341/2743/3344 +f 2345/2751/3346 2346/2752/3346 2335/2753/3346 +f 2346/2752/3346 2336/2754/3347 2335/2753/3346 +f 2347/2755/3347 2336/2754/3347 2346/2752/3346 +f 2348/2756/3347 2347/2755/3347 2346/2752/3346 +f 2346/2752/3346 2340/2757/3347 2348/2756/3347 +f 2346/2752/3346 2337/2758/3346 2340/2757/3347 +f 2344/2759/3348 2348/2760/3388 2340/2761/3348 +f 2339/2762/3348 2344/2759/3348 2340/2761/3348 +f 2343/2763/3349 2333/2735/3350 2336/2738/3351 +f 2347/2764/3352 2343/2763/3349 2336/2738/3351 +f 2344/2765/3353 2343/2763/3349 2347/2764/3352 +f 2348/2766/3354 2344/2765/3353 2347/2764/3352 +f 2349/2735/3355 2350/2736/3356 2351/2737/3356 +f 2352/2738/3355 2349/2735/3355 2351/2737/3356 +f 2353/2739/3358 2354/2740/3358 2355/2741/3357 +f 2356/2742/3357 2353/2739/3358 2355/2741/3357 +f 2357/2743/3359 2358/2744/3359 2350/2745/3359 +f 2349/2746/3359 2357/2743/3359 2350/2745/3359 +f 2357/2743/3359 2349/2746/3359 2359/2747/3359 +f 2357/2743/3359 2359/2747/3359 2360/2748/3359 +f 2355/2749/3359 2357/2743/3359 2360/2748/3359 +f 2355/2749/3359 2354/2750/3359 2357/2743/3359 +f 2361/2751/3360 2362/2752/3360 2351/2753/3360 +f 2362/2752/3360 2352/2754/3360 2351/2753/3360 +f 2363/2755/3361 2352/2754/3360 2362/2752/3360 +f 2364/2756/3361 2363/2755/3361 2362/2752/3360 +f 2362/2752/3360 2356/2757/3361 2364/2756/3361 +f 2362/2752/3360 2353/2758/3360 2356/2757/3361 +f 2360/2759/3362 2364/2760/3362 2356/2761/3362 +f 2355/2762/3362 2360/2759/3362 2356/2761/3362 +f 2359/2763/3363 2349/2735/3364 2352/2738/3364 +f 2363/2764/3365 2359/2763/3363 2352/2738/3364 +f 2360/2765/3366 2359/2763/3363 2363/2764/3365 +f 2364/2766/3366 2360/2765/3366 2363/2764/3365 +f 2365/2767/3389 2366/2768/3389 2367/2769/3389 +f 2368/2770/3389 2365/2767/3389 2367/2769/3389 +f 2369/2771/3390 2365/2767/3389 2368/2770/3389 +f 2370/2772/3390 2369/2771/3390 2368/2770/3389 +f 2371/2773/3391 2372/2774/3392 2369/2771/3393 +f 2370/2772/3394 2371/2773/3391 2369/2771/3393 +f 2367/2769/3395 2366/2768/3396 2373/2775/3397 +f 2374/2776/3398 2367/2769/3395 2373/2775/3397 +f 2375/2777/3399 2376/2778/3400 2377/2779/3400 +f 2375/2777/3399 2378/2780/3400 2376/2778/3400 +f 2375/2777/3399 2374/2781/3401 2378/2780/3400 +f 2375/2777/3399 2367/2782/3402 2374/2781/3401 +f 2375/2777/3399 2368/2783/3403 2367/2782/3402 +f 2370/2784/3404 2368/2783/3403 2375/2777/3399 +f 2371/2785/3405 2370/2784/3404 2375/2777/3399 +f 2379/2786/3400 2371/2785/3405 2375/2777/3399 +f 2380/2787/3400 2379/2786/3400 2375/2777/3399 +f 2380/2787/3400 2375/2777/3399 2381/2788/3400 +f 2382/2789/3406 2383/2790/3406 2377/2791/3406 +f 2383/2790/3406 2375/2792/3406 2377/2791/3406 +f 2383/2790/3406 2384/2793/3406 2375/2792/3406 +f 2384/2793/3406 2381/2794/3406 2375/2792/3406 +f 2384/2795/3407 2383/2796/3408 2365/2797/3408 +f 2384/2795/3407 2365/2797/3408 2369/2798/3409 +f 2385/2799/3410 2384/2795/3407 2369/2798/3409 +f 2386/2800/3411 2385/2799/3410 2369/2798/3409 +f 2386/2800/3411 2369/2798/3409 2372/2801/3412 +f 2372/2802/3413 2371/2803/3414 2386/2804/3415 +f 2371/2803/3414 2379/2805/3416 2386/2804/3415 +f 2386/2804/3415 2379/2805/3416 2385/2806/3417 +f 2379/2805/3416 2380/2807/3418 2385/2806/3417 +f 2384/2808/3419 2385/2806/3417 2380/2807/3418 +f 2381/2809/3419 2384/2808/3419 2380/2807/3418 +f 2366/2810/3420 2365/2797/3408 2383/2796/3421 +f 2373/2811/3422 2366/2810/3420 2383/2796/3421 +f 2387/2812/3423 2373/2811/3422 2383/2796/3421 +f 2388/2813/3423 2387/2812/3423 2383/2796/3421 +f 2382/2814/3423 2388/2813/3423 2383/2796/3421 +f 2377/2815/3424 2376/2816/3425 2382/2817/3424 +f 2376/2816/3425 2388/2818/3426 2382/2817/3424 +f 2388/2818/3426 2376/2816/3425 2378/2819/3427 +f 2387/2819/3427 2388/2818/3426 2378/2819/3427 +f 2387/2819/3427 2378/2819/3427 2374/2820/3428 +f 2373/2821/3428 2387/2819/3427 2374/2820/3428 +f 2389/2822/3429 2390/2823/3430 2391/2824/3431 +f 2390/2823/3430 2392/2825/3432 2391/2824/3431 +f 2390/2823/3430 2393/2826/3433 2392/2825/3432 +f 2393/2826/3433 2394/2827/3434 2392/2825/3432 +f 2392/2825/3432 2394/2827/3434 2395/2828/3435 +f 2396/2829/3436 2391/2824/3431 2392/2825/3432 +f 2397/2830/3437 2392/2825/3432 2395/2828/3435 +f 2397/2830/3437 2396/2829/3436 2392/2825/3432 +f 2395/2828/3435 2398/2831/3438 2397/2830/3437 +f 2399/2832/3439 2396/2829/3436 2397/2830/3437 +f 2398/2831/3438 2400/2833/3440 2397/2830/3437 +f 2400/2833/3440 2399/2832/3439 2397/2830/3437 +f 2401/2834/3441 2400/2833/3440 2398/2831/3438 +f 2399/2832/3439 2400/2833/3440 2401/2834/3441 +f 2402/2835/3442 2401/2834/3441 2398/2831/3438 +f 2401/2834/3441 2402/2835/3442 2403/2836/3443 +f 2404/2837/3444 2399/2832/3439 2401/2834/3441 +f 2404/2837/3444 2401/2834/3441 2403/2836/3443 +f 2402/2835/3442 2405/2838/3445 2403/2836/3443 +f 2406/2839/3446 2403/2836/3443 2405/2838/3445 +f 2407/2840/3447 2406/2839/3446 2405/2838/3445 +f 2408/2841/3448 2403/2836/3443 2406/2839/3446 +f 2408/2841/3448 2404/2837/3444 2403/2836/3443 +f 2409/2842/3449 2408/2841/3448 2406/2839/3446 +f 2406/2839/3446 2407/2840/3447 2410/2843/3450 +f 2406/2839/3446 2411/2844/3451 2409/2842/3449 +f 2411/2844/3451 2406/2839/3446 2410/2843/3450 +f 2411/2844/3451 2412/2845/3452 2409/2842/3449 +f 2413/2846/231 2414/2847/231 2415/2848/231 +f 2416/2849/231 2413/2846/231 2415/2848/231 +f 2417/2850/231 2413/2846/231 2416/2849/231 +f 2418/2851/231 2417/2850/231 2416/2849/231 +f 2419/2852/231 2417/2850/231 2418/2851/231 +f 2420/2853/231 2419/2852/231 2418/2851/231 +f 2421/2854/231 2419/2852/231 2420/2853/231 +f 2422/2855/3453 2421/2854/231 2420/2853/231 +f 2423/2856/231 2421/2854/231 2422/2855/3453 +f 2424/2857/231 2423/2856/231 2422/2855/3453 +f 2423/2856/3454 2425/2858/3454 2426/2859/3454 +f 2421/2854/3454 2423/2856/3454 2426/2859/3454 +f 2427/2860/3455 2420/2853/3455 2418/2851/3455 +f 2428/2861/3455 2427/2860/3455 2418/2851/3455 +f 2429/2862/3456 2430/2863/3456 2431/2864/3457 +f 2432/2865/3457 2429/2862/3456 2431/2864/3457 +f 2433/2866/3458 2432/2865/3458 2431/2864/3458 +f 2434/2867/3458 2433/2866/3458 2431/2864/3458 +f 2435/2868/3459 2433/2866/3459 2434/2867/3459 +f 2436/2869/3460 2435/2868/3459 2434/2867/3459 +f 2435/2868/3461 2436/2869/3461 2437/2870/3461 +f 2438/2871/3461 2435/2868/3461 2437/2870/3461 +f 2439/2872/3462 2438/2871/3463 2437/2870/3463 +f 2440/2873/3462 2439/2872/3462 2437/2870/3463 +f 2441/2874/3464 2439/2872/3465 2440/2873/3465 +f 2442/2875/3466 2441/2874/3464 2440/2873/3465 +f 2441/2874/3467 2442/2875/3467 2443/2876/3468 +f 2444/2877/3468 2441/2874/3467 2443/2876/3468 +f 2445/2878/3469 2446/2879/3469 2430/2863/3470 +f 2429/2862/3471 2445/2878/3469 2430/2863/3470 +f 2447/2880/3472 2448/2881/3473 2446/2879/3474 +f 2445/2878/3474 2447/2880/3472 2446/2879/3474 +f 2447/2880/3475 2444/2877/3476 2443/2876/3476 +f 2448/2881/3475 2447/2880/3475 2443/2876/3476 +f 2441/2874/3477 2444/2877/3478 2439/2872/3479 +f 2444/2877/3478 2438/2871/3480 2439/2872/3479 +f 2438/2871/3480 2444/2877/3478 2449/2882/3481 +f 2449/2882/3481 2444/2877/3478 2447/2880/3482 +f 2447/2880/3482 2445/2878/3483 2449/2882/3481 +f 2450/2883/3484 2438/2871/3480 2449/2882/3481 +f 2445/2878/3483 2429/2862/3485 2449/2882/3481 +f 2449/2882/3481 2429/2862/3485 2450/2883/3484 +f 2438/2871/3480 2450/2883/3484 2435/2868/3486 +f 2429/2862/3485 2432/2865/3487 2450/2883/3484 +f 2433/2866/3486 2450/2883/3484 2432/2865/3487 +f 2450/2883/3484 2433/2866/3486 2435/2868/3486 +f 162/109/3488 2451/2884/3489 2452/2885/3490 +f 163/110/3491 162/109/3488 2452/2885/3490 +f 2453/2886/3492 159/106/3493 158/105/3494 +f 2454/2887/3495 2453/2886/3492 158/105/3494 +f 2455/2888/3496 161/108/3497 160/107/3498 +f 2456/2889/3499 2455/2888/3496 160/107/3498 +f 2456/2889/3500 160/107/3501 159/106/3500 +f 2453/2886/3500 2456/2889/3500 159/106/3500 +f 163/110/3502 2452/2885/3503 2457/2890/3503 +f 164/111/3504 163/110/3502 2457/2890/3503 +f 161/108/3505 2455/2888/3506 2451/2884/3507 +f 162/109/3508 161/108/3505 2451/2884/3507 +f 2457/2890/3509 2452/2885/3510 2458/2891/3511 +f 2452/2885/3510 2459/2892/3512 2458/2891/3511 +f 2452/2885/3510 2451/2884/3513 2459/2892/3512 +f 2451/2884/3513 2460/2893/3514 2459/2892/3512 +f 2459/2892/3512 2461/2894/3515 2458/2891/3511 +f 2451/2884/3513 2455/2888/3516 2460/2893/3514 +f 2455/2888/3516 2462/2895/3517 2460/2893/3514 +f 2460/2893/3514 2463/2896/3518 2459/2892/3512 +f 2463/2896/3518 2461/2894/3515 2459/2892/3512 +f 2455/2888/3516 2456/2889/3519 2462/2895/3517 +f 2462/2895/3517 2464/2897/3520 2460/2893/3514 +f 2464/2897/3520 2463/2896/3518 2460/2893/3514 +f 2461/2894/3515 2465/2898/3521 2458/2891/3511 +f 2456/2889/3519 2466/2899/3522 2462/2895/3517 +f 2467/2900/3523 2464/2897/3520 2462/2895/3517 +f 2466/2899/3522 2467/2900/3523 2462/2895/3517 +f 2456/2889/3519 2453/2886/3524 2466/2899/3522 +f 2468/2901/3525 2461/2894/3515 2463/2896/3518 +f 2465/2898/3521 2461/2894/3515 2469/2902/3526 +f 2461/2894/3515 2468/2901/3525 2469/2902/3526 +f 2463/2896/3518 2464/2897/3520 2470/2903/3527 +f 2464/2897/3520 2467/2900/3523 2471/2904/3528 +f 2470/2903/3527 2464/2897/3520 2471/2904/3528 +f 2472/2905/3529 2468/2901/3525 2463/2896/3518 +f 2472/2905/3529 2463/2896/3518 2470/2903/3527 +f 2473/2906/3530 2467/2900/3523 2466/2899/3522 +f 2453/2886/3524 2474/2907/3531 2466/2899/3522 +f 2474/2907/3531 2473/2906/3530 2466/2899/3522 +f 2471/2904/3528 2467/2900/3523 2475/2908/3532 +f 2467/2900/3523 2473/2906/3530 2475/2908/3532 +f 2453/2886/3524 2454/2887/3533 2474/2907/3531 +f 2475/2908/3532 2473/2906/3530 2476/2909/3534 +f 2477/2910/3535 2473/2906/3530 2474/2907/3531 +f 2473/2906/3530 2477/2910/3535 2476/2909/3534 +f 2454/2887/3533 2478/2911/3536 2474/2907/3531 +f 2478/2911/3536 2477/2910/3535 2474/2907/3531 +f 2479/2912/231 2480/2913/231 2481/2914/231 +f 2482/2915/231 2479/2912/231 2481/2914/231 +f 2483/2916/233 2484/2917/233 2485/2918/233 +f 2486/2919/233 2483/2916/233 2485/2918/233 +f 2481/2914/3537 2480/2913/3537 2487/2920/3537 +f 2488/2921/3537 2481/2914/3537 2487/2920/3537 +f 2488/2921/3537 2487/2920/3537 2484/2917/3537 +f 2483/2916/3537 2488/2921/3537 2484/2917/3537 +f 2479/2912/3538 2482/2915/3539 2489/2922/3540 +f 2490/2923/3538 2479/2912/3538 2489/2922/3540 +f 2490/2923/3541 2489/2922/3542 2486/2924/3542 +f 2485/2925/3541 2490/2923/3541 2486/2924/3542 +f 2491/2926/231 2492/2927/231 2493/2928/231 +f 2494/2929/231 2491/2926/231 2493/2928/231 +f 2495/2930/233 2496/2931/233 2497/2932/233 +f 2498/2933/233 2495/2930/233 2497/2932/233 +f 2493/2928/3537 2492/2927/3537 2499/2934/3537 +f 2500/2935/3537 2493/2928/3537 2499/2934/3537 +f 2500/2935/3537 2499/2934/3537 2496/2936/3543 +f 2495/2937/3537 2500/2935/3537 2496/2936/3543 +f 2491/2926/3544 2494/2929/3544 2501/2938/3544 +f 2502/2939/3544 2491/2926/3544 2501/2938/3544 +f 2502/2939/3545 2501/2938/3545 2498/2933/3545 +f 2497/2932/3545 2502/2939/3545 2498/2933/3545 +f 2503/2940/3546 2504/2941/3547 2505/2942/3547 +f 2506/2943/3546 2503/2940/3546 2505/2942/3547 +f 2507/2944/3548 2508/2945/3548 2509/2946/3548 +f 2510/2947/3548 2507/2944/3548 2509/2946/3548 +f 2504/2948/3549 2503/2949/3550 2511/2950/3550 +f 2512/2951/3549 2504/2948/3549 2511/2950/3550 +f 2512/2951/3551 2511/2950/3551 2508/2945/3551 +f 2507/2944/3551 2512/2951/3551 2508/2945/3551 +f 2506/2943/2873 2505/2942/178 2510/2947/178 +f 2509/2946/2873 2506/2943/2873 2510/2947/178 +f 2513/2952/231 2514/2953/231 2515/2954/231 +f 2516/2955/231 2513/2952/231 2515/2954/231 +f 2517/2956/233 2518/2957/233 2519/2958/233 +f 2520/2959/233 2517/2956/233 2519/2958/233 +f 2514/2953/3552 2513/2952/3552 2521/2960/3552 +f 2522/2961/3552 2514/2953/3552 2521/2960/3552 +f 2522/2961/3553 2521/2960/3553 2518/2962/3553 +f 2517/2963/3553 2522/2961/3553 2518/2962/3553 +f 2516/2955/178 2515/2954/178 2520/2959/178 +f 2519/2958/178 2516/2955/178 2520/2959/178 +f 2523/2964/3554 2524/2965/3555 2525/2966/3555 +f 2526/2967/3554 2523/2964/3554 2525/2966/3555 +f 2527/2968/3556 2528/2969/3556 2529/2970/3556 +f 2530/2971/3556 2527/2968/3556 2529/2970/3556 +f 2524/2972/3557 2523/2973/3558 2531/2974/3558 +f 2532/2975/3557 2524/2972/3557 2531/2974/3558 +f 2532/2975/3559 2531/2974/3560 2528/2969/3560 +f 2527/2968/3559 2532/2975/3559 2528/2969/3560 +f 2526/2967/178 2525/2966/178 2530/2971/178 +f 2529/2970/2873 2526/2967/178 2530/2971/178 +f 2533/2976/3561 2534/2977/3562 2535/2978/3563 +f 2535/2978/3563 2536/2979/3564 2533/2976/3561 +f 2536/2979/3564 2537/2980/3565 2533/2976/3561 +f 2538/2981/3566 2533/2976/3561 2537/2980/3565 +f 2538/2981/3566 2539/2982/3567 2533/2976/3561 +f 2540/2983/3568 2533/2976/3561 2539/2982/3567 +f 2540/2983/3568 2541/2984/3568 2533/2976/3561 +f 2542/2985/3569 2533/2976/3561 2541/2984/3568 +f 2542/2985/3569 2543/2986/3570 2533/2976/3561 +f 2544/2987/3570 2533/2976/3561 2543/2986/3570 +f 2544/2987/3570 2545/2988/3571 2533/2976/3561 +f 2546/2989/3571 2533/2976/3561 2545/2988/3571 +f 2546/2989/3571 2547/2990/3571 2533/2976/3561 +f 2548/2991/3571 2533/2976/3561 2547/2990/3571 +f 2548/2991/3571 2549/2992/3571 2533/2976/3561 +f 2550/2993/226 2551/2994/3572 2552/2995/226 +f 2550/2993/226 2552/2995/226 2553/2996/226 +f 2550/2993/226 2553/2996/226 2554/2997/226 +f 2550/2993/226 2554/2997/226 2555/2998/226 +f 2550/2993/226 2555/2998/226 2556/2999/246 +f 2550/2993/226 2556/2999/246 2557/3000/685 +f 2551/3001/3573 2558/3002/3573 2559/3003/3574 +f 2552/3004/3575 2551/3001/3573 2559/3003/3574 +f 2552/3004/3575 2559/3003/3574 2560/3005/3576 +f 2553/3006/3577 2552/3004/3575 2560/3005/3576 +f 2553/3006/3577 2560/3005/3576 2561/3007/3578 +f 2554/3008/3579 2553/3006/3577 2561/3007/3578 +f 2554/3008/3579 2561/3007/3578 2562/3009/3580 +f 2555/3010/3581 2554/3008/3579 2562/3009/3580 +f 2555/3010/3581 2562/3009/3580 2563/3011/3582 +f 2556/3012/3583 2555/3010/3581 2563/3011/3582 +f 2556/3012/3583 2563/3011/3582 2564/3013/3584 +f 2557/3014/3585 2556/3012/3583 2564/3013/3584 +f 2557/3014/3585 2564/3013/3584 2565/3015/3586 +f 2550/3016/3587 2557/3014/3585 2565/3015/3586 +f 2550/3016/3587 2565/3015/3586 2558/3017/3588 +f 2551/3018/3589 2550/3016/3587 2558/3017/3588 +f 2566/3019/226 2567/3020/226 2568/3021/226 +f 2566/3019/226 2568/3021/226 2569/3022/226 +f 2570/3023/226 2566/3019/226 2569/3022/226 +f 2570/3023/226 2569/3022/226 2571/3024/226 +f 2570/3023/226 2571/3024/226 2572/3025/226 +f 2570/3023/226 2572/3025/226 2573/3026/226 +f 2567/3027/3590 2574/3028/3591 2575/3029/3592 +f 2568/3030/3593 2567/3027/3590 2575/3029/3592 +f 2568/3030/3593 2575/3029/3592 2576/3031/3576 +f 2569/3032/3577 2568/3030/3593 2576/3031/3576 +f 2569/3032/3577 2576/3031/3576 2577/3033/3594 +f 2571/3034/3595 2569/3032/3577 2577/3033/3594 +f 2571/3034/3595 2577/3033/3594 2578/3035/3580 +f 2572/3036/3596 2571/3034/3595 2578/3035/3580 +f 2572/3036/3596 2578/3035/3580 2579/3037/3597 +f 2573/3038/3598 2572/3036/3596 2579/3037/3597 +f 2573/3038/3598 2579/3037/3597 2580/3039/3584 +f 2570/3040/3585 2573/3038/3598 2580/3039/3584 +f 2570/3040/3585 2580/3039/3584 2581/3041/3599 +f 2566/3042/3600 2570/3040/3585 2581/3041/3599 +f 2566/3042/3600 2581/3041/3599 2574/3043/3601 +f 2567/3044/3602 2566/3042/3600 2574/3043/3601 +f 2582/3045/226 2583/3046/226 2584/3047/226 +f 2582/3045/226 2584/3047/226 2585/3048/226 +f 2586/3049/226 2582/3045/226 2585/3048/226 +f 2586/3049/226 2585/3048/226 2587/3050/226 +f 2586/3049/226 2587/3050/226 2588/3051/226 +f 2586/3049/226 2588/3051/226 2589/3052/226 +f 2586/3053/3603 2589/3054/3604 2590/3055/3603 +f 2589/3054/3604 2591/3056/3597 2590/3055/3603 +f 2589/3054/3604 2588/3057/3605 2591/3056/3597 +f 2588/3057/3605 2592/3058/3580 2591/3056/3597 +f 2588/3057/3605 2587/3059/3606 2592/3058/3580 +f 2587/3059/3606 2593/3060/3607 2592/3058/3580 +f 2587/3059/3606 2585/3061/3577 2593/3060/3607 +f 2585/3061/3577 2594/3062/3576 2593/3060/3607 +f 2585/3061/3577 2584/3063/3608 2594/3062/3576 +f 2584/3063/3608 2595/3064/3609 2594/3062/3576 +f 2584/3063/3608 2583/3065/3610 2595/3064/3609 +f 2583/3065/3610 2596/3066/3611 2595/3064/3609 +f 2583/3065/3610 2582/3067/3600 2596/3066/3611 +f 2582/3067/3600 2597/3068/3612 2596/3066/3611 +f 2582/3067/3600 2586/3069/3613 2597/3068/3612 +f 2586/3069/3613 2590/3070/3613 2597/3068/3612 +f 2389/3071/3614 2391/3072/3615 2598/3073/3616 +f 2391/3072/3615 2599/3074/3617 2598/3073/3616 +f 2599/3074/3617 2391/3072/3615 2396/3075/3618 +f 2600/3076/3619 2599/3074/3617 2396/3075/3618 +f 2600/3076/3619 2396/3075/3618 2399/3077/3620 +f 2601/3078/3621 2598/3073/3616 2599/3074/3617 +f 2602/3079/3622 2600/3076/3619 2399/3077/3620 +f 2599/3074/3617 2600/3076/3619 2603/3080/3623 +f 2602/3079/3622 2399/3077/3620 2604/3081/3624 +f 2399/3077/3620 2404/3082/3625 2604/3081/3624 +f 2605/3083/3626 2601/3078/3621 2599/3074/3617 +f 2605/3083/3626 2599/3074/3617 2603/3080/3623 +f 2602/3079/3622 2606/3084/3627 2600/3076/3619 +f 2606/3084/3627 2602/3079/3622 2604/3081/3624 +f 2606/3084/3627 2603/3080/3623 2600/3076/3619 +f 2604/3081/3624 2404/3082/3625 2607/3085/3628 +f 2608/3086/3629 2606/3084/3627 2604/3081/3624 +f 2604/3081/3624 2607/3085/3628 2608/3086/3629 +f 2404/3082/3625 2408/3087/3630 2607/3085/3628 +f 2607/3085/3628 2408/3087/3630 2609/3088/3631 +f 2607/3085/3628 2610/3089/3632 2608/3086/3629 +f 2610/3089/3632 2607/3085/3628 2609/3088/3631 +f 2408/3087/3630 2409/3090/3633 2609/3088/3631 +f 2609/3088/3631 2409/3090/3633 2611/3091/3634 +f 2409/3090/3633 2412/3092/3635 2611/3091/3634 +f 2609/3088/3631 2611/3091/3634 2612/3093/3636 +f 2613/3094/3637 2610/3089/3632 2609/3088/3631 +f 2613/3094/3637 2609/3088/3631 2612/3093/3636 +f 2614/3095/233 2615/3096/233 2616/3097/233 +f 2615/3096/233 2617/3098/233 2616/3097/233 +f 2615/3096/233 2618/3099/233 2617/3098/233 +f 2618/3099/233 2428/3100/233 2617/3098/233 +f 2618/3099/233 2619/3101/233 2428/3100/233 +f 2619/3101/233 2427/3102/233 2428/3100/233 +f 2619/3101/233 2426/3103/233 2427/3102/233 +f 2426/3103/233 2620/3104/233 2427/3102/233 +f 2426/3103/233 2425/3105/233 2620/3104/233 +f 2425/3105/233 2621/3106/233 2620/3104/233 +f 2621/3106/3638 2425/3105/3639 2423/3107/3639 +f 2424/3108/3640 2621/3106/3638 2423/3107/3639 +f 2620/3104/3641 2621/3106/3638 2424/3108/3640 +f 2422/3109/3642 2620/3104/3641 2424/3108/3640 +f 2427/3102/3643 2620/3104/3641 2422/3109/3642 +f 2420/3110/3643 2427/3102/3643 2422/3109/3642 +f 2614/3095/3644 2414/3111/3644 2615/3096/3645 +f 2414/3111/3644 2413/3112/3646 2615/3096/3645 +f 2615/3096/3645 2413/3112/3646 2618/3099/3647 +f 2413/3112/3646 2417/3113/3648 2618/3099/3647 +f 2618/3099/3647 2417/3113/3648 2619/3101/3649 +f 2417/3113/3648 2419/3114/3650 2619/3101/3649 +f 2619/3101/3649 2419/3114/3650 2426/3103/3651 +f 2419/3114/3650 2421/3115/3652 2426/3103/3651 +f 2415/3116/3653 2616/3097/3653 2416/3117/3654 +f 2616/3097/3653 2617/3098/3655 2416/3117/3654 +f 2416/3117/3654 2617/3098/3655 2418/3118/3656 +f 2617/3098/3655 2428/3100/3656 2418/3118/3656 +f 2622/3119/3657 2623/3120/3658 2624/3121/3658 +f 2625/3122/3657 2622/3119/3657 2624/3121/3658 +f 2624/3121/3659 2623/3120/3659 2626/3123/3659 +f 2627/3124/3659 2624/3121/3659 2626/3123/3659 +f 2627/3124/3660 2626/3123/3660 2628/3125/3660 +f 2629/3126/3660 2627/3124/3660 2628/3125/3660 +f 2628/3125/3661 2630/3127/3661 2631/3128/3661 +f 2629/3126/3661 2628/3125/3661 2631/3128/3661 +f 2631/3128/3662 2630/3127/3662 2632/3129/3663 +f 2633/3130/3663 2631/3128/3662 2632/3129/3663 +f 2633/3130/3664 2632/3129/3664 2634/3131/3665 +f 2635/3132/3665 2633/3130/3664 2634/3131/3665 +f 2634/3131/3666 2636/3133/3667 2637/3134/3668 +f 2635/3132/3666 2634/3131/3666 2637/3134/3668 +f 2638/3135/3669 2622/3119/3670 2625/3122/3670 +f 2639/3136/3669 2638/3135/3669 2625/3122/3670 +f 2640/3137/3671 2638/3135/3672 2639/3136/3672 +f 2641/3138/3671 2640/3137/3671 2639/3136/3672 +f 2637/3134/3673 2636/3133/3673 2640/3137/3674 +f 2641/3138/3674 2637/3134/3673 2640/3137/3674 +f 2634/3131/3675 2632/3129/3676 2636/3133/3677 +f 2632/3129/3676 2630/3127/3678 2636/3133/3677 +f 2642/3139/3679 2636/3133/3677 2630/3127/3678 +f 2643/3140/3680 2642/3139/3679 2630/3127/3678 +f 2630/3127/3678 2628/3125/3681 2643/3140/3680 +f 2640/3137/3682 2636/3133/3677 2642/3139/3679 +f 2628/3125/3681 2626/3123/3681 2643/3140/3680 +f 2642/3139/3679 2643/3140/3680 2622/3119/3683 +f 2623/3120/3684 2643/3140/3680 2626/3123/3681 +f 2643/3140/3680 2623/3120/3684 2622/3119/3683 +f 2642/3139/3679 2622/3119/3683 2638/3135/3685 +f 2640/3137/3682 2642/3139/3679 2638/3135/3685 +f 2644/3141/3686 2645/3142/3686 170/117/3687 +f 171/118/3688 2644/3141/3686 170/117/3687 +f 166/113/3689 165/112/3690 2646/3143/3691 +f 2647/3144/3692 166/113/3689 2646/3143/3691 +f 168/115/3693 169/116/3694 2648/3145/3695 +f 2649/3146/3696 168/115/3693 2648/3145/3695 +f 165/112/3697 168/115/3697 2649/3146/3697 +f 2646/3143/3698 165/112/3697 2649/3146/3697 +f 2650/3147/3699 2644/3141/3699 171/118/3700 +f 172/119/3701 2650/3147/3699 171/118/3700 +f 2645/3142/3702 2648/3145/3702 169/116/3703 +f 170/117/3704 2645/3142/3702 169/116/3703 +f 2650/3147/3705 2651/3148/3706 2644/3141/3707 +f 2651/3148/3706 2652/3149/3708 2644/3141/3707 +f 2652/3149/3708 2651/3148/3706 2653/3150/3709 +f 2651/3148/3706 2654/3151/3710 2653/3150/3709 +f 2653/3150/3709 2654/3151/3710 2655/3152/3711 +f 2644/3141/3707 2652/3149/3708 2645/3142/3712 +f 2652/3149/3708 2653/3150/3709 2656/3153/3713 +f 2657/3154/3714 2653/3150/3709 2655/3152/3711 +f 2656/3153/3713 2653/3150/3709 2657/3154/3714 +f 2658/3155/3715 2652/3149/3708 2656/3153/3713 +f 2652/3149/3708 2658/3155/3715 2645/3142/3712 +f 2659/3156/3716 2656/3153/3713 2657/3154/3714 +f 2659/3156/3716 2660/3157/3717 2656/3153/3713 +f 2658/3155/3715 2656/3153/3713 2661/3158/3718 +f 2660/3157/3717 2661/3158/3718 2656/3153/3713 +f 2645/3142/3712 2658/3155/3715 2648/3145/3719 +f 2658/3155/3715 2662/3159/3720 2648/3145/3719 +f 2662/3159/3720 2658/3155/3715 2661/3158/3718 +f 2648/3145/3719 2662/3159/3720 2649/3146/3721 +f 2662/3159/3720 2661/3158/3718 2663/3160/3722 +f 2662/3159/3720 2664/3161/3723 2649/3146/3721 +f 2664/3161/3723 2662/3159/3720 2663/3160/3722 +f 2660/3157/3717 2665/3162/3724 2661/3158/3718 +f 2665/3162/3724 2663/3160/3722 2661/3158/3718 +f 2649/3146/3721 2664/3161/3723 2646/3143/3725 +f 2664/3161/3723 2663/3160/3722 2666/3163/3726 +f 2664/3161/3723 2667/3164/3727 2646/3143/3725 +f 2667/3164/3727 2664/3161/3723 2666/3163/3726 +f 2665/3162/3724 2668/3165/3728 2663/3160/3722 +f 2668/3165/3728 2666/3163/3726 2663/3160/3722 +f 2646/3143/3725 2667/3164/3727 2647/3144/3729 +f 2667/3164/3727 2666/3163/3726 2669/3166/3730 +f 2667/3164/3727 2670/3167/3731 2647/3144/3729 +f 2670/3167/3731 2667/3164/3727 2669/3166/3730 +f 2666/3163/3726 2668/3165/3728 2671/3168/3732 +f 2669/3166/3730 2666/3163/3726 2671/3168/3732 +f 2672/3169/233 2673/3170/233 2674/3171/233 +f 2675/3172/233 2672/3169/233 2674/3171/233 +f 2676/3173/231 2677/3174/231 2678/3175/231 +f 2679/3176/231 2676/3173/231 2678/3175/231 +f 2680/3177/3537 2675/3172/3537 2674/3171/3537 +f 2681/3178/3537 2680/3177/3537 2674/3171/3537 +f 2679/3176/3537 2680/3177/3537 2681/3178/3537 +f 2676/3173/3537 2679/3176/3537 2681/3178/3537 +f 2682/3179/3545 2673/3170/3545 2672/3169/3542 +f 2683/3180/3542 2682/3179/3545 2672/3169/3542 +f 2677/3181/3733 2682/3179/3733 2683/3180/3734 +f 2678/3182/3734 2677/3181/3733 2683/3180/3734 +f 2684/3183/233 2685/3184/233 2686/3185/233 +f 2687/3186/233 2684/3183/233 2686/3185/233 +f 2688/3187/231 2689/3188/231 2690/3189/231 +f 2691/3190/231 2688/3187/231 2690/3189/231 +f 2692/3191/3537 2687/3186/3537 2686/3185/3543 +f 2693/3192/3537 2692/3191/3537 2686/3185/3543 +f 2691/3193/3543 2692/3191/3537 2693/3192/3537 +f 2688/3194/3537 2691/3193/3543 2693/3192/3537 +f 2694/3195/3542 2685/3184/3542 2684/3183/3542 +f 2695/3196/3542 2694/3195/3542 2684/3183/3542 +f 2689/3188/3540 2694/3195/3540 2695/3196/3539 +f 2690/3189/3539 2689/3188/3540 2695/3196/3539 +f 2696/3197/3556 2697/3198/3556 2698/3199/3556 +f 2699/3200/3556 2696/3197/3556 2698/3199/3556 +f 2700/3201/3554 2701/3202/3554 2702/3203/3735 +f 2703/3204/3735 2700/3201/3554 2702/3203/3735 +f 2704/3205/3736 2698/3206/3736 2697/3207/3559 +f 2705/3208/3559 2704/3205/3736 2697/3207/3559 +f 2701/3202/3737 2704/3205/3737 2705/3208/3558 +f 2702/3203/3558 2701/3202/3737 2705/3208/3558 +f 2703/3204/178 2696/3197/178 2699/3200/178 +f 2700/3201/178 2703/3204/178 2699/3200/178 +f 2706/3209/233 2707/3210/233 2708/3211/233 +f 2709/3212/233 2706/3209/233 2708/3211/233 +f 2710/3213/231 2711/3214/231 2712/3215/231 +f 2713/3216/231 2710/3213/231 2712/3215/231 +f 2714/3217/3553 2708/3211/3553 2707/3210/3553 +f 2715/3218/3553 2714/3217/3553 2707/3210/3553 +f 2711/3219/3552 2714/3217/3552 2715/3218/3552 +f 2712/3220/3552 2711/3219/3552 2715/3218/3552 +f 2713/3216/178 2706/3209/178 2709/3212/178 +f 2710/3213/178 2713/3216/178 2709/3212/178 +f 2716/3221/3548 2717/3222/3548 2718/3223/3548 +f 2719/3224/3548 2716/3221/3548 2718/3223/3548 +f 2720/3225/3546 2721/3226/3546 2722/3227/3547 +f 2723/3228/3547 2720/3225/3546 2722/3227/3547 +f 2724/3229/3551 2718/3230/3551 2717/3231/3738 +f 2725/3232/3738 2724/3229/3551 2717/3231/3738 +f 2721/3226/3739 2724/3229/3739 2725/3232/3549 +f 2722/3227/3549 2721/3226/3739 2725/3232/3549 +f 2723/3228/178 2716/3221/178 2719/3224/178 +f 2720/3225/178 2723/3228/178 2719/3224/178 +f 173/120/3740 2726/3233/3741 174/121/3742 +f 2726/3233/3741 2533/3234/3743 174/121/3742 +f 174/121/3742 2533/3234/3743 2727/3235/3744 +f 2533/3234/3743 2728/3236/3745 2727/3235/3744 +f 2728/3236/3745 2533/3234/3743 2729/3237/3746 +f 2533/3234/3743 2730/3238/3746 2729/3237/3746 +f 2730/3238/3746 2533/3234/3743 2731/3239/3746 +f 2533/3234/3743 2732/3240/3747 2731/3239/3746 +f 2732/3240/3747 2533/3234/3743 2733/3241/3343 +f 2533/3234/3743 2734/3242/3343 2733/3241/3343 +f 2734/3242/3343 2533/3234/3743 2735/3243/3343 +f 2533/3234/3743 2736/3244/3343 2735/3243/3343 +f 2736/3244/3343 2533/3234/3743 2737/3245/3343 +f 2533/3234/3743 2549/3246/3343 2737/3245/3343 +f 2738/3247/226 2739/3248/226 2740/3249/226 +f 2738/3247/226 2740/3249/226 2741/3250/226 +f 2742/3251/226 2738/3247/226 2741/3250/226 +f 2742/3251/226 2741/3250/226 2743/3252/226 +f 2742/3251/226 2743/3252/226 2744/3253/226 +f 2742/3251/226 2744/3253/226 2745/3254/3572 +f 2746/3255/3748 2747/3256/3749 2739/3257/3750 +f 2738/3258/3751 2746/3255/3748 2739/3257/3750 +f 2748/3259/3584 2746/3255/3748 2738/3258/3751 +f 2742/3260/3585 2748/3259/3584 2738/3258/3751 +f 2749/3261/3752 2748/3259/3584 2742/3260/3585 +f 2745/3262/3753 2749/3261/3752 2742/3260/3585 +f 2750/3263/3754 2749/3261/3752 2745/3262/3753 +f 2744/3264/3755 2750/3263/3754 2745/3262/3753 +f 2751/3265/3607 2750/3263/3754 2744/3264/3755 +f 2743/3266/3756 2751/3265/3607 2744/3264/3755 +f 2752/3267/3576 2751/3265/3607 2743/3266/3756 +f 2741/3268/3577 2752/3267/3576 2743/3266/3756 +f 2753/3269/3757 2752/3267/3576 2741/3268/3577 +f 2740/3270/3758 2753/3269/3757 2741/3268/3577 +f 2747/3271/3759 2753/3269/3757 2740/3270/3758 +f 2739/3272/3760 2747/3271/3759 2740/3270/3758 +f 2754/3273/226 2755/3274/226 2756/3275/226 +f 2754/3273/226 2756/3275/226 2757/3276/226 +f 2758/3277/226 2754/3273/226 2757/3276/226 +f 2758/3277/226 2757/3276/226 2759/3278/226 +f 2758/3277/226 2759/3278/226 2760/3279/226 +f 2758/3277/226 2760/3279/226 2761/3280/226 +f 2762/3281/3599 2763/3282/3601 2755/3283/3602 +f 2754/3284/3600 2762/3281/3599 2755/3283/3602 +f 2764/3285/3584 2762/3281/3599 2754/3284/3600 +f 2758/3286/3585 2764/3285/3584 2754/3284/3600 +f 2765/3287/3761 2764/3285/3584 2758/3286/3585 +f 2761/3288/3598 2765/3287/3761 2758/3286/3585 +f 2766/3289/3580 2765/3287/3761 2761/3288/3598 +f 2760/3290/3762 2766/3289/3580 2761/3288/3598 +f 2767/3291/3594 2766/3289/3580 2760/3290/3762 +f 2759/3292/3595 2767/3291/3594 2760/3290/3762 +f 2768/3293/3576 2767/3291/3594 2759/3292/3595 +f 2757/3294/3577 2768/3293/3576 2759/3292/3595 +f 2769/3295/3592 2768/3293/3576 2757/3294/3577 +f 2756/3296/3593 2769/3295/3592 2757/3294/3577 +f 2763/3297/3591 2769/3295/3592 2756/3296/3593 +f 2755/3298/3590 2763/3297/3591 2756/3296/3593 +f 2770/3299/226 2771/3300/226 2772/3301/226 +f 2770/3299/226 2772/3301/226 2773/3302/226 +f 2774/3303/226 2770/3299/226 2773/3302/226 +f 2774/3303/226 2773/3302/226 2775/3304/226 +f 2774/3303/226 2775/3304/226 2776/3305/226 +f 2774/3303/226 2776/3305/226 2777/3306/226 +f 2773/3307/3763 2778/3308/3763 2775/3309/3764 +f 2778/3308/3763 2779/3310/3607 2775/3309/3764 +f 2775/3309/3764 2779/3310/3607 2776/3311/3765 +f 2779/3310/3607 2780/3312/3580 2776/3311/3765 +f 2776/3311/3765 2780/3312/3580 2777/3313/3604 +f 2780/3312/3580 2781/3314/3597 2777/3313/3604 +f 2777/3313/3604 2781/3314/3597 2774/3315/3585 +f 2781/3314/3597 2782/3316/3584 2774/3315/3585 +f 2774/3315/3585 2782/3316/3584 2770/3317/3600 +f 2782/3316/3584 2783/3318/3766 2770/3317/3600 +f 2770/3317/3600 2783/3318/3766 2771/3319/3610 +f 2783/3318/3766 2784/3320/3611 2771/3319/3610 +f 2771/3319/3610 2784/3320/3611 2772/3321/3608 +f 2784/3320/3611 2785/3322/3609 2772/3321/3608 +f 2772/3321/3608 2785/3322/3609 2773/3323/3767 +f 2785/3322/3609 2778/3324/3767 2773/3323/3767 +f 2786/3325/3768 2787/3326/3769 339/3327/3770 +f 2787/3326/3769 2788/3328/3771 339/3327/3770 +f 2788/3328/3771 2787/3326/3769 2789/3329/3772 +f 2790/3330/3773 2788/3328/3771 2789/3329/3772 +f 2790/3330/3773 2789/3329/3772 2791/3331/3774 +f 2792/3332/3775 2790/3330/3773 2791/3331/3774 +f 2791/3331/3774 2793/3333/3776 2792/3332/3775 +f 2793/3333/3776 177/3334/3777 2792/3332/3775 +f 2794/3335/3778 2795/3336/3779 2796/3337/3780 +f 2795/3336/3779 2797/3338/3781 2796/3337/3780 +f 2797/3338/3781 2798/3339/3782 2796/3337/3780 +f 2798/3339/3782 2799/3340/3783 2796/3337/3780 +f 2798/3339/3782 2800/3341/3784 2799/3340/3783 +f 2800/3341/3784 2801/3342/3785 2799/3340/3783 +f 2800/3341/3784 2802/3343/3786 2801/3342/3785 +f 2802/3343/3786 2803/3344/3787 2801/3342/3785 +f 2803/3344/3787 2802/3343/3786 2804/3345/3788 +f 2805/3346/3789 2803/3344/3787 2804/3345/3788 +f 2804/3345/3788 2806/3347/3790 2805/3346/3789 +f 2806/3347/3790 2807/3348/3791 2805/3346/3789 +f 2807/3348/3791 2806/3347/3790 2808/3349/3792 +f 2809/3350/3793 2807/3348/3791 2808/3349/3792 +f 2808/3349/3792 2810/3351/3794 2809/3350/3793 +f 2810/3351/3794 2811/3352/3795 2809/3350/3793 +f 2810/3351/3794 2812/3353/3796 2811/3352/3795 +f 2812/3353/3796 2813/3354/3797 2811/3352/3795 +f 2812/3353/3796 2814/3355/3798 2813/3354/3797 +f 2814/3355/3798 2815/3356/3799 2813/3354/3797 +f 2814/3355/3798 2816/3357/3800 2815/3356/3799 +f 2816/3357/3800 2817/3358/3801 2815/3356/3799 +f 2818/3359/3802 2817/3358/3801 2816/3357/3800 +f 2819/3360/3803 2818/3359/3802 2816/3357/3800 +f 2818/3359/3802 2819/3360/3803 2820/3361/3804 +f 2819/3360/3803 2821/3362/3805 2820/3361/3804 +f 2822/3363/3806 2820/3361/3804 2821/3362/3805 +f 2823/3364/3807 2822/3363/3806 2821/3362/3805 +f 2822/3363/3806 2823/3364/3807 2824/3365/3808 +f 2823/3364/3807 2825/3366/3809 2824/3365/3808 +f 2824/3365/3808 2825/3366/3809 2826/3367/3810 +f 2827/3368/3811 2828/3369/3812 339/3370/3813 +f 2788/3371/3814 2827/3368/3811 339/3370/3813 +f 2827/3368/3811 2788/3371/3814 2829/3372/3815 +f 2788/3371/3814 2790/3373/3816 2829/3372/3815 +f 2829/3372/3815 2790/3373/3816 2830/3374/3817 +f 2790/3373/3816 2792/3375/3818 2830/3374/3817 +f 2831/3376/3819 2830/3374/3817 2792/3375/3818 +f 177/3377/3820 2831/3376/3819 2792/3375/3818 +f 2795/3378/3821 2832/3379/3822 2833/3380/3823 +f 2797/3381/3824 2795/3378/3821 2833/3380/3823 +f 2798/3382/3825 2797/3381/3824 2833/3380/3823 +f 2834/3383/3826 2798/3382/3825 2833/3380/3823 +f 2798/3382/3825 2834/3383/3826 2800/3384/3827 +f 2834/3383/3826 2835/3385/3828 2800/3384/3827 +f 2802/3386/3829 2800/3384/3827 2835/3385/3828 +f 2836/3387/3830 2802/3386/3829 2835/3385/3828 +f 2804/3388/3831 2802/3386/3829 2836/3387/3830 +f 2837/3389/3832 2804/3388/3831 2836/3387/3830 +f 2806/3390/3833 2804/3388/3831 2837/3389/3832 +f 2838/3391/3834 2806/3390/3833 2837/3389/3832 +f 2808/3392/3835 2806/3390/3833 2838/3391/3834 +f 2839/3393/3836 2808/3392/3835 2838/3391/3834 +f 2810/3394/3837 2808/3392/3835 2839/3393/3836 +f 2840/3395/3838 2810/3394/3837 2839/3393/3836 +f 2812/3396/3839 2810/3394/3837 2840/3395/3838 +f 2841/3397/3840 2812/3396/3839 2840/3395/3838 +f 2814/3398/3841 2812/3396/3839 2841/3397/3840 +f 2842/3399/3842 2814/3398/3841 2841/3397/3840 +f 2816/3400/3843 2814/3398/3841 2842/3399/3842 +f 2843/3401/3844 2816/3400/3843 2842/3399/3842 +f 2816/3400/3843 2843/3401/3844 2844/3402/3845 +f 2819/3403/3846 2816/3400/3843 2844/3402/3845 +f 2844/3402/3845 2845/3404/3847 2819/3403/3846 +f 2845/3404/3847 2821/3405/3848 2819/3403/3846 +f 2821/3405/3848 2845/3404/3847 2846/3406/3849 +f 2823/3407/3850 2821/3405/3848 2846/3406/3849 +f 2846/3406/3849 2847/3408/3851 2823/3407/3850 +f 2847/3408/3851 2825/3409/3852 2823/3407/3850 +f 2826/3410/3853 2825/3409/3852 2847/3408/3851 +f 2847/3411/3854 2824/3412/3855 2826/3413/3856 +f 2848/3414/3857 2824/3412/3855 2847/3411/3854 +f 2849/3415/3858 2848/3414/3857 2847/3411/3854 +f 2850/3416/3859 2848/3414/3857 2849/3415/3858 +f 2851/3417/3860 2850/3416/3859 2849/3415/3858 +f 2852/3418/3861 2850/3416/3859 2851/3417/3860 +f 2853/3419/3862 2852/3418/3861 2851/3417/3860 +f 2854/3420/3863 2852/3418/3861 2853/3419/3862 +f 2855/3421/3864 2854/3420/3863 2853/3419/3862 +f 2856/3422/3865 2854/3420/3863 2855/3421/3864 +f 2857/3423/3866 2856/3422/3865 2855/3421/3864 +f 2858/3424/3867 2856/3422/3865 2857/3423/3866 +f 2859/3425/3868 2858/3424/3867 2857/3423/3866 +f 2860/3426/3869 2858/3424/3867 2859/3425/3868 +f 2861/3427/3870 2860/3426/3869 2859/3425/3868 +f 2862/3428/3871 2860/3426/3869 2861/3427/3870 +f 2863/3429/3872 2862/3428/3871 2861/3427/3870 +f 2864/3430/3873 2862/3428/3871 2863/3429/3872 +f 2865/3431/3874 2864/3430/3873 2863/3429/3872 +f 2866/3432/3875 2864/3430/3873 2865/3431/3874 +f 2867/3433/3876 2866/3432/3875 2865/3431/3874 +f 2868/3434/3877 2866/3432/3875 2867/3433/3876 +f 2869/3435/3878 2868/3434/3877 2867/3433/3876 +f 2870/3436/3879 2868/3434/3877 2869/3435/3878 +f 2871/3437/3880 2870/3436/3879 2869/3435/3878 +f 2872/3438/3881 2870/3436/3879 2871/3437/3880 +f 2873/3439/3882 2872/3438/3881 2871/3437/3880 +f 2874/3440/3883 2872/3438/3881 2873/3439/3882 +f 2875/3441/3884 2874/3440/3883 2873/3439/3882 +f 2876/3442/3885 2874/3440/3883 2875/3441/3884 +f 2877/3443/3886 2876/3442/3885 2875/3441/3884 +f 2878/3444/3887 2876/3442/3885 2877/3443/3886 +f 2879/3445/3888 2878/3444/3887 2877/3443/3886 +f 2880/3446/3889 2878/3444/3887 2879/3445/3888 +f 2881/3447/3890 2880/3446/3889 2879/3445/3888 +f 2882/3448/3891 2880/3446/3889 2881/3447/3890 +f 2883/3449/3892 2882/3448/3891 2881/3447/3890 +f 2884/3450/3893 2882/3448/3891 2883/3449/3892 +f 2885/3451/3894 2884/3450/3893 2883/3449/3892 +f 2886/3452/3895 2884/3450/3893 2885/3451/3894 +f 2887/3453/3896 2886/3452/3895 2885/3451/3894 +f 2888/3454/3897 2886/3452/3895 2887/3453/3896 +f 2889/3455/3898 2888/3454/3897 2887/3453/3896 +f 2890/3456/3899 2888/3454/3897 2889/3455/3898 +f 2891/3457/3900 2890/3456/3899 2889/3455/3898 +f 2793/3458/3901 2890/3456/3899 2891/3457/3900 +f 2831/3459/3902 2793/3458/3901 2891/3457/3900 +f 177/3460/3903 2793/3458/3901 2831/3459/3902 +f 2849/3461/3904 2847/3408/3905 2846/3406/3906 +f 2845/3404/3907 2849/3461/3904 2846/3406/3906 +f 2845/3404/3907 2844/3402/3908 2849/3461/3904 +f 2849/3461/3904 2844/3402/3908 2851/3462/3909 +f 2844/3402/3908 2843/3401/3910 2851/3462/3909 +f 2853/3463/3911 2851/3462/3909 2843/3401/3910 +f 2843/3401/3910 2855/3464/3912 2853/3463/3911 +f 2843/3401/3910 2857/3465/3913 2855/3464/3912 +f 2843/3401/3910 2859/3466/3914 2857/3465/3913 +f 2859/3466/3914 2843/3401/3910 2842/3399/3915 +f 2861/3467/3916 2859/3466/3914 2842/3399/3915 +f 2863/3468/3917 2861/3467/3916 2842/3399/3915 +f 2842/3399/3915 2892/3469/3918 2863/3468/3917 +f 2841/3397/3919 2892/3469/3918 2842/3399/3915 +f 2892/3469/3918 2841/3397/3919 2840/3395/3920 +f 2839/3393/3921 2892/3469/3918 2840/3395/3920 +f 2865/3470/3922 2863/3468/3917 2892/3469/3918 +f 2838/3391/3923 2892/3469/3918 2839/3393/3921 +f 2838/3391/3923 2837/3389/3924 2892/3469/3918 +f 2836/3387/3925 2892/3469/3918 2837/3389/3924 +f 2865/3470/3922 2892/3469/3918 2867/3471/3922 +f 2892/3469/3918 2869/3472/3922 2867/3471/3922 +f 2869/3472/3922 2892/3469/3918 2881/3473/3922 +f 2836/3387/3925 2835/3385/3926 2892/3469/3918 +f 2881/3473/3922 2892/3469/3918 2883/3474/233 +f 2892/3469/3918 2893/3475/3927 2883/3474/233 +f 2893/3475/3927 2892/3469/3918 2834/3383/3928 +f 2835/3385/3926 2834/3383/3928 2892/3469/3918 +f 2871/3476/3922 2869/3472/3922 2881/3473/3922 +f 2873/3477/3922 2871/3476/3922 2881/3473/3922 +f 2875/3478/3922 2873/3477/3922 2881/3473/3922 +f 2877/3479/3922 2875/3478/3922 2881/3473/3922 +f 2833/3380/3929 2893/3475/3927 2834/3383/3928 +f 2877/3479/3922 2881/3473/3922 2879/3480/3922 +f 2893/3475/3927 2833/3380/3929 2894/3481/3930 +f 2885/3482/233 2883/3474/233 2893/3475/3927 +f 2895/3483/3931 2893/3475/3927 2894/3481/3930 +f 2887/3484/233 2893/3475/3927 2895/3483/3931 +f 2887/3484/233 2885/3482/233 2893/3475/3927 +f 2833/3380/3929 2832/3379/3932 2894/3481/3930 +f 2895/3483/3931 2889/3485/233 2887/3484/233 +f 2895/3483/3931 2891/3486/3933 2889/3485/233 +f 2828/3487/3934 2891/3486/3933 2895/3483/3931 +f 2828/3487/3934 2827/3488/3935 2891/3486/3933 +f 2827/3488/3935 2829/3489/3936 2891/3486/3933 +f 2829/3489/3936 2830/3490/3937 2891/3486/3933 +f 2830/3490/3937 2831/3491/3938 2891/3486/3933 +f 2890/3492/3939 2793/3493/3940 2791/3494/3941 +f 2890/3492/3939 2791/3494/3941 2789/3495/3942 +f 2890/3492/3939 2789/3495/3942 2787/3496/3943 +f 2890/3492/3939 2787/3496/3943 2786/3497/3944 +f 2896/3498/3945 2890/3492/3939 2786/3497/3944 +f 2888/3499/231 2890/3492/3939 2896/3498/3945 +f 2886/3500/231 2888/3499/231 2896/3498/3945 +f 2897/3501/3946 2886/3500/231 2896/3498/3945 +f 2898/3502/3947 2897/3501/3946 2896/3498/3945 +f 2897/3501/3946 2898/3502/3947 2796/3337/3948 +f 2897/3501/3946 2884/3503/231 2886/3500/231 +f 2898/3502/3947 2794/3335/3949 2796/3337/3948 +f 2897/3501/3946 2882/3504/231 2884/3503/231 +f 2897/3501/3946 2796/3337/3948 2799/3340/3950 +f 2882/3504/231 2897/3501/3946 2899/3505/3951 +f 2899/3505/3951 2897/3501/3946 2799/3340/3950 +f 2880/3506/3453 2882/3504/231 2899/3505/3951 +f 2880/3506/3453 2899/3505/3951 2868/3507/3453 +f 2866/3508/3453 2868/3507/3453 2899/3505/3951 +f 2866/3508/3453 2899/3505/3951 2864/3509/3453 +f 2899/3505/3951 2862/3510/3952 2864/3509/3453 +f 2862/3510/3952 2899/3505/3951 2815/3356/3953 +f 2815/3356/3953 2899/3505/3951 2813/3354/3954 +f 2899/3505/3951 2799/3340/3950 2801/3342/3955 +f 2811/3352/3956 2813/3354/3954 2899/3505/3951 +f 2811/3352/3956 2899/3505/3951 2809/3350/3957 +f 2880/3506/3453 2868/3507/3453 2870/3511/3453 +f 2809/3350/3957 2899/3505/3951 2807/3348/3958 +f 2899/3505/3951 2805/3346/3959 2807/3348/3958 +f 2805/3346/3959 2899/3505/3951 2803/3344/3960 +f 2899/3505/3951 2801/3342/3955 2803/3344/3960 +f 2880/3506/3453 2870/3511/3453 2872/3512/3453 +f 2815/3356/3953 2860/3513/3961 2862/3510/3952 +f 2880/3506/3453 2872/3512/3453 2874/3514/3453 +f 2880/3506/3453 2874/3514/3453 2876/3515/3453 +f 2880/3506/3453 2876/3515/3453 2878/3516/3962 +f 2815/3356/3953 2858/3517/3963 2860/3513/3961 +f 2815/3356/3953 2817/3358/3964 2858/3517/3963 +f 2856/3518/3965 2858/3517/3963 2817/3358/3964 +f 2854/3519/3966 2856/3518/3965 2817/3358/3964 +f 2852/3520/3967 2854/3519/3966 2817/3358/3964 +f 2817/3358/3964 2850/3521/3968 2852/3520/3967 +f 2850/3521/3968 2817/3358/3964 2818/3359/3969 +f 2848/3522/3970 2850/3521/3968 2818/3359/3969 +f 2820/3361/3971 2848/3522/3970 2818/3359/3969 +f 2848/3522/3970 2820/3361/3971 2822/3363/3972 +f 2824/3365/3973 2848/3522/3970 2822/3363/3972 +f 2828/3523/3974 2786/3524/3975 339/3525/3976 +f 2896/3526/3977 2786/3524/3975 2828/3523/3974 +f 2895/3527/3978 2896/3526/3977 2828/3523/3974 +f 2898/3528/3979 2896/3526/3977 2895/3527/3978 +f 2894/3529/3980 2898/3528/3979 2895/3527/3978 +f 2794/3530/3981 2898/3528/3979 2894/3529/3980 +f 2832/3531/3982 2794/3530/3981 2894/3529/3980 +f 2795/3532/3976 2794/3530/3981 2832/3531/3982 +f 221/3533/3983 2900/3534/3984 2901/3535/3985 +f 2902/3536/3986 221/3533/3983 2901/3535/3985 +f 179/126/3987 181/128/3988 2903/3537/3989 +f 2904/3538/3990 179/126/3987 2903/3537/3989 +f 2904/3538/3990 2903/3537/3989 2905/3539/3991 +f 2906/3540/3992 2904/3538/3990 2905/3539/3991 +f 2906/3540/3992 2905/3539/3991 2907/3541/3993 +f 2908/3542/3994 2906/3540/3992 2907/3541/3993 +f 2908/3542/3994 2907/3541/3993 2909/3543/3995 +f 2910/3544/3996 2908/3542/3994 2909/3543/3995 +f 2910/3544/3996 2909/3543/3995 2911/3545/3997 +f 2909/3543/3995 2912/3546/3998 2911/3545/3997 +f 2911/3545/3997 2912/3546/3998 2913/3547/3999 +f 2912/3546/3998 2914/3548/4000 2913/3547/3999 +f 2913/3547/3999 2914/3548/4000 2915/3549/4001 +f 2916/3550/4002 2913/3547/3999 2915/3549/4001 +f 2916/3550/4002 2915/3549/4001 2917/3551/4003 +f 2918/3552/4004 2916/3550/4002 2917/3551/4003 +f 2918/3552/4004 2917/3551/4003 2919/3553/4005 +f 2917/3551/4003 2920/3554/4006 2919/3553/4005 +f 2919/3553/4005 2920/3554/4006 2921/3555/4007 +f 2920/3554/4006 2922/3556/4008 2921/3555/4007 +f 2921/3555/4007 2922/3556/4008 2923/3557/4009 +f 2922/3556/4008 2924/3558/4010 2923/3557/4009 +f 2923/3557/4009 2924/3558/4010 2925/3559/4011 +f 2924/3558/4010 2926/3560/4012 2925/3559/4011 +f 2925/3559/4011 2926/3560/4012 2927/3561/4013 +f 2926/3560/4012 2928/3562/4014 2927/3561/4013 +f 2927/3561/4013 2928/3562/4014 2929/3563/4015 +f 2930/3564/4016 2927/3561/4013 2929/3563/4015 +f 2930/3564/4016 2929/3563/4015 2931/3565/4017 +f 2932/3566/4018 2930/3564/4016 2931/3565/4017 +f 2932/3566/4018 2931/3565/4017 2933/3567/4019 +f 2934/3568/4020 2932/3566/4018 2933/3567/4019 +f 2934/3568/4020 2933/3567/4019 2935/3569/4021 +f 2936/3570/4022 2934/3568/4020 2935/3569/4021 +f 2936/3570/4022 2935/3569/4021 2937/3571/4023 +f 220/3572/4024 2936/3570/4022 2937/3571/4023 +f 2902/3536/4025 2901/3535/4026 2938/3573/4027 +f 2939/3574/4028 2902/3536/4025 2938/3573/4027 +f 2940/3575/4029 176/123/4030 178/125/4031 +f 2941/3576/4032 2940/3575/4029 178/125/4031 +f 220/3572/4033 2937/3571/4034 2900/3534/4035 +f 221/3533/4036 220/3572/4033 2900/3534/4035 +f 2938/3573/4037 2940/3575/4038 2941/3576/4039 +f 2939/3574/4040 2938/3573/4037 2941/3576/4039 +f 177/124/4041 176/123/4041 2942/3577/4042 +f 2943/3578/4043 177/124/4041 2942/3577/4042 +f 2943/3578/4043 2942/3577/4042 2944/3579/4044 +f 2945/3580/4045 2943/3578/4043 2944/3579/4044 +f 2944/3579/4044 2946/3581/4046 2945/3580/4045 +f 2946/3581/4046 2947/3582/4047 2945/3580/4045 +f 2948/3583/4048 2947/3582/4047 2946/3581/4046 +f 2949/3584/4049 2948/3583/4048 2946/3581/4046 +f 2950/3585/4050 2948/3583/4048 2949/3584/4049 +f 2951/3586/4051 2950/3585/4050 2949/3584/4049 +f 180/127/4052 2950/3585/4050 2951/3586/4051 +f 181/128/4053 180/127/4052 2951/3586/4051 +f 2940/3575/4054 2938/3573/4055 176/123/4056 +f 2938/3573/4055 2901/3535/4057 176/123/4056 +f 2901/3535/4057 2900/3534/4058 176/123/4056 +f 2900/3534/4058 2937/3571/4059 176/123/4056 +f 2937/3571/4059 2935/3569/4060 176/123/4056 +f 2935/3569/4060 2942/3577/4061 176/123/4056 +f 2942/3577/4061 2935/3569/4060 2933/3567/4062 +f 2942/3577/4061 2933/3567/4062 2944/3579/4063 +f 2933/3567/4062 2946/3581/4064 2944/3579/4063 +f 2946/3581/4064 2933/3567/4062 2931/3565/4065 +f 2949/3584/4066 2946/3581/4064 2931/3565/4065 +f 2951/3586/4067 2949/3584/4066 2931/3565/4065 +f 181/128/4068 2951/3586/4067 2931/3565/4065 +f 2903/3537/4069 181/128/4068 2931/3565/4065 +f 2905/3539/4070 2903/3537/4069 2931/3565/4065 +f 2905/3539/4070 2931/3565/4065 2929/3563/4071 +f 2905/3539/4070 2929/3563/4071 2928/3562/4072 +f 2907/3541/4073 2905/3539/4070 2928/3562/4072 +f 2907/3541/4073 2928/3562/4072 2926/3560/4074 +f 2909/3543/4075 2907/3541/4073 2926/3560/4074 +f 2909/3543/4075 2926/3560/4074 2924/3558/4076 +f 2912/3546/4077 2909/3543/4075 2924/3558/4076 +f 2914/3548/4078 2912/3546/4077 2924/3558/4076 +f 2915/3549/4079 2914/3548/4078 2924/3558/4076 +f 2915/3549/4079 2924/3558/4076 2922/3556/4080 +f 2915/3549/4079 2922/3556/4080 2920/3554/4081 +f 2915/3549/4079 2920/3554/4081 2917/3551/4082 +f 2952/3587/4083 2953/3588/4084 2954/3589/4085 +f 2955/3590/4083 2952/3587/4083 2954/3589/4085 +f 2956/3591/4086 184/132/4087 185/134/4088 +f 2957/3592/4089 2956/3591/4086 185/134/4088 +f 2958/3593/4090 2956/3591/4086 2957/3592/4089 +f 2959/3594/4091 2958/3593/4090 2957/3592/4089 +f 2960/3595/4092 2958/3593/4090 2959/3594/4091 +f 2961/3596/4093 2960/3595/4092 2959/3594/4091 +f 2960/3595/4092 2961/3596/4093 2962/3597/4094 +f 2961/3596/4093 2963/3598/4095 2962/3597/4094 +f 2962/3597/4094 2963/3598/4095 2964/3599/4096 +f 2965/3600/4097 2962/3597/4094 2964/3599/4096 +f 2965/3600/4097 2964/3599/4096 2966/3601/4098 +f 2967/3602/4099 2965/3600/4097 2966/3601/4098 +f 2968/3603/4100 2967/3602/4099 2966/3601/4098 +f 2969/3604/4101 2968/3603/4100 2966/3601/4098 +f 2970/3605/4102 2968/3603/4100 2969/3604/4101 +f 2971/3606/4103 2970/3605/4102 2969/3604/4101 +f 2970/3605/4102 2971/3606/4103 2972/3607/4104 +f 2973/3608/4105 2970/3605/4102 2972/3607/4104 +f 2973/3608/4105 2972/3607/4104 2974/3609/4106 +f 2975/3610/4107 2973/3608/4105 2974/3609/4106 +f 2975/3610/4107 2974/3609/4106 2976/3611/4108 +f 2977/3612/4109 2975/3610/4107 2976/3611/4108 +f 2977/3612/4109 2976/3611/4108 2978/3613/4110 +f 2979/3614/4111 2977/3612/4109 2978/3613/4110 +f 2979/3614/4111 2978/3613/4110 2980/3615/4112 +f 2981/3616/4113 2979/3614/4111 2980/3615/4112 +f 2982/3617/4114 2981/3616/4113 2980/3615/4112 +f 2983/3618/4115 2982/3617/4114 2980/3615/4112 +f 2984/3619/4116 2982/3617/4114 2983/3618/4115 +f 2985/3620/4117 2984/3619/4116 2983/3618/4115 +f 2986/3621/4118 2984/3619/4116 2985/3620/4117 +f 2987/3622/4119 2986/3621/4118 2985/3620/4117 +f 2986/3621/4118 2987/3622/4119 2988/3623/4120 +f 2987/3622/4119 2989/3624/4121 2988/3623/4120 +f 2990/3625/4122 2988/3623/4120 2989/3624/4121 +f 2991/3626/4123 2990/3625/4122 2989/3624/4121 +f 2992/3627/4124 2952/3587/4125 2955/3590/4124 +f 2993/3628/4126 2992/3627/4124 2955/3590/4124 +f 2994/3629/4127 2995/3630/4128 182/129/4129 +f 183/131/4130 2994/3629/4127 182/129/4129 +f 2953/3588/4131 2990/3625/4132 2991/3626/4133 +f 2954/3589/4134 2953/3588/4131 2991/3626/4133 +f 2992/3627/4135 2993/3628/4136 2995/3630/4137 +f 2994/3629/4138 2992/3627/4135 2995/3630/4137 +f 2996/3631/4139 183/131/4140 177/130/4140 +f 2943/3632/4141 2996/3631/4139 177/130/4140 +f 2996/3631/4139 2943/3632/4141 2997/3633/4142 +f 2943/3632/4141 2945/3634/4143 2997/3633/4142 +f 2998/3635/4144 2997/3633/4142 2945/3634/4143 +f 2947/3636/4145 2998/3635/4144 2945/3634/4143 +f 2998/3635/4144 2947/3636/4145 2948/3637/4146 +f 2999/3638/4147 2998/3635/4144 2948/3637/4146 +f 2999/3638/4147 2948/3637/4146 2950/3639/4148 +f 3000/3640/4149 2999/3638/4147 2950/3639/4148 +f 3000/3640/4149 2950/3639/4148 180/133/4150 +f 184/132/4151 3000/3640/4149 180/133/4150 +f 183/131/4152 2992/3627/4153 2994/3629/4154 +f 183/131/4152 2952/3587/4155 2992/3627/4153 +f 183/131/4152 2953/3588/4156 2952/3587/4155 +f 183/131/4152 2990/3625/4157 2953/3588/4156 +f 183/131/4152 2988/3623/4158 2990/3625/4157 +f 183/131/4152 2996/3631/4159 2988/3623/4158 +f 2986/3621/4160 2988/3623/4158 2996/3631/4159 +f 2986/3621/4160 2996/3631/4159 2997/3633/4161 +f 2997/3633/4161 2998/3635/4162 2986/3621/4160 +f 2984/3619/4163 2986/3621/4160 2998/3635/4162 +f 2984/3619/4163 2998/3635/4162 2999/3638/4164 +f 2984/3619/4163 2999/3638/4164 3000/3640/4165 +f 2984/3619/4163 3000/3640/4165 184/132/4166 +f 2984/3619/4163 184/132/4166 2956/3591/4167 +f 2984/3619/4163 2956/3591/4167 2958/3593/4168 +f 2982/3617/4169 2984/3619/4163 2958/3593/4168 +f 2981/3616/4170 2982/3617/4169 2958/3593/4168 +f 2981/3616/4170 2958/3593/4168 2960/3595/4171 +f 2981/3616/4170 2960/3595/4171 2979/3614/4172 +f 2979/3614/4172 2960/3595/4171 2962/3597/4173 +f 2977/3612/4174 2979/3614/4172 2962/3597/4173 +f 2977/3612/4174 2962/3597/4173 2965/3600/4175 +f 2977/3612/4174 2965/3600/4175 2967/3602/4176 +f 2977/3612/4174 2967/3602/4176 2968/3603/4177 +f 2977/3612/4174 2968/3603/4177 2970/3605/4178 +f 2977/3612/4174 2970/3605/4178 2973/3608/4179 +f 2977/3612/4174 2973/3608/4179 2975/3610/4180 +f 185/3641/4181 180/3642/4182 179/3643/4183 +f 179/3643/4183 2957/3644/4184 185/3641/4181 +f 179/3643/4183 2904/3645/4185 2957/3644/4184 +f 2957/3644/4184 2904/3645/4185 2959/3646/4186 +f 2904/3645/4185 2906/3647/4187 2959/3646/4186 +f 2959/3646/4186 2906/3647/4187 2961/3648/4188 +f 2906/3647/4187 2908/3649/4189 2961/3648/4188 +f 2961/3648/4188 2908/3649/4189 2963/3650/4190 +f 2908/3649/4189 2910/3651/4191 2963/3650/4190 +f 2963/3650/4190 2910/3651/4191 2964/3652/4192 +f 2910/3651/4191 2911/3653/4193 2964/3652/4192 +f 2964/3652/4192 2911/3653/4193 2966/3654/4194 +f 2911/3653/4193 2913/3655/4195 2966/3654/4194 +f 2966/3654/4194 2913/3655/4195 2969/3656/4196 +f 2913/3655/4195 2916/3657/4197 2969/3656/4196 +f 2969/3656/4196 2916/3657/4197 2971/3658/4198 +f 2916/3657/4197 2918/3659/4199 2971/3658/4198 +f 2971/3658/4198 2918/3659/4199 2972/3660/4200 +f 2918/3659/4199 2919/3661/4201 2972/3660/4200 +f 2972/3660/4200 2919/3661/4201 2974/3662/4202 +f 2919/3661/4201 2921/3663/4203 2974/3662/4202 +f 2974/3662/4202 2921/3663/4203 2976/3664/4204 +f 2921/3663/4203 2923/3665/4205 2976/3664/4204 +f 2976/3664/4204 2923/3665/4205 2978/3666/4206 +f 2923/3665/4205 2925/3667/4207 2978/3666/4206 +f 2978/3666/4206 2925/3667/4207 2980/3668/4208 +f 2925/3667/4207 2927/3669/4209 2980/3668/4208 +f 2980/3668/4208 2927/3669/4209 2983/3670/4210 +f 2927/3669/4209 2930/3671/4211 2983/3670/4210 +f 2983/3670/4210 2930/3671/4211 2985/3672/4212 +f 2930/3671/4211 2932/3673/4213 2985/3672/4212 +f 2985/3672/4212 2932/3673/4213 2934/3674/4214 +f 2987/3675/4215 2985/3672/4212 2934/3674/4214 +f 2989/3676/4216 2987/3675/4215 2934/3674/4214 +f 2936/3448/4217 2989/3676/4216 2934/3674/4214 +f 2991/3677/4218 2989/3676/4216 2936/3448/4217 +f 220/3678/4219 2991/3677/4218 2936/3448/4217 +f 2954/3679/4220 2991/3677/4218 220/3678/4219 +f 221/3680/4221 2954/3679/4220 220/3678/4219 +f 2955/3681/4222 2954/3679/4220 221/3680/4221 +f 2902/3682/4223 2955/3681/4222 221/3680/4221 +f 2993/3683/4224 2955/3681/4222 2902/3682/4223 +f 2939/3684/4225 2993/3683/4224 2902/3682/4223 +f 2995/3685/4226 2993/3683/4224 2939/3684/4225 +f 3001/3686/4227 2995/3685/4226 2939/3684/4225 +f 3001/3686/4227 2939/3684/4225 2941/3687/4228 +f 177/3688/3856 182/3689/4229 178/3690/4230 +f 3001/3686/4231 178/3690/4230 182/3689/4229 +f 182/3689/4229 2995/3685/4232 3001/3686/4231 +f 3001/3686/4231 2941/3687/4233 178/3690/4230 +f 3002/3691/4234 3003/3692/4235 3004/3693/4236 +f 3005/3694/4237 3002/3691/4234 3004/3693/4236 +f 3006/3695/4238 3002/3691/4234 3005/3694/4237 +f 3004/3693/4239 3007/3696/4240 3005/3694/4241 +f 3007/3696/4240 3008/3697/4242 3005/3694/4241 +f 3005/3694/4241 3008/3697/4242 3006/3695/4243 +f 3009/3698/4244 186/3699/4245 188/3700/4246 +f 3010/3701/4247 3009/3698/4244 188/3700/4246 +f 3011/3702/4248 3009/3698/4244 3010/3701/4247 +f 3012/3703/4249 3011/3702/4248 3010/3701/4247 +f 3013/3704/4250 3011/3702/4248 3012/3703/4249 +f 3014/3705/4251 3013/3704/4250 3012/3703/4249 +f 3013/3704/4250 3014/3705/4251 3015/3706/4252 +f 3016/3707/4253 3013/3704/4250 3015/3706/4252 +f 3016/3707/4253 3015/3706/4252 3017/3708/4254 +f 3018/3709/4255 3016/3707/4253 3017/3708/4254 +f 3019/3710/4256 3018/3709/4255 3017/3708/4254 +f 3020/3711/4257 3019/3710/4256 3017/3708/4254 +f 3008/3712/4258 3019/3710/4256 3020/3711/4257 +f 3019/3710/4256 3021/3713/4259 3018/3709/4255 +f 3006/3714/4260 3008/3712/4258 3020/3711/4257 +f 3019/3710/4256 3008/3712/4258 3022/3715/4261 +f 3022/3715/4261 3021/3713/4259 3019/3710/4256 +f 3021/3713/4259 3016/3707/4262 3018/3709/4255 +f 3008/3712/4258 3007/3716/4263 3022/3715/4261 +f 3021/3713/4259 3013/3704/4264 3016/3707/4262 +f 3021/3713/4259 3011/3702/4265 3013/3704/4264 +f 3021/3713/4259 3009/3698/4266 3011/3702/4265 +f 3021/3713/4259 186/3699/4267 3009/3698/4266 +f 3022/3717/4268 3023/3718/4269 3024/3719/4270 +f 3021/3720/4271 3022/3717/4268 3024/3719/4270 +f 3021/3720/4271 3024/3719/4270 186/135/4272 +f 3024/3719/4270 187/136/4273 186/135/4272 +f 3022/3721/4274 3007/3696/4275 3004/3693/4276 +f 3025/3722/4277 3022/3721/4274 3004/3693/4276 +f 3004/3693/4278 3003/3692/4279 3023/3723/4280 +f 3025/3722/4281 3004/3693/4278 3023/3723/4280 +f 3026/3724/4282 3027/3725/4283 3028/3726/4284 +f 3029/3727/4285 3026/3724/4282 3028/3726/4284 +f 3028/3726/4284 3030/3728/4286 3029/3727/4285 +f 3030/3728/4286 3031/3729/4287 3029/3727/4285 +f 3032/3730/4288 3031/3729/4287 3030/3728/4286 +f 3033/3731/4289 3032/3730/4288 3030/3728/4286 +f 3032/3730/4288 3033/3731/4289 3034/3732/4290 +f 3035/3733/4291 3032/3730/4288 3034/3732/4290 +f 3036/3734/4292 3035/3733/4291 3034/3732/4290 +f 3037/3735/4293 3036/3734/4292 3034/3732/4290 +f 3036/3734/4292 3037/3735/4293 3038/3736/4294 +f 3039/3737/4295 3036/3734/4292 3038/3736/4294 +f 3039/3737/4295 3038/3736/4294 3040/3738/4296 +f 3041/3739/4297 3039/3737/4295 3040/3738/4296 +f 3041/3739/4297 3040/3738/4296 186/3740/4298 +f 3040/3738/4296 188/3741/4299 186/3740/4298 +f 3042/3742/4300 3043/3743/4301 3003/3744/4302 +f 3023/3745/4303 3042/3742/4300 3003/3744/4302 +f 3044/3746/4304 3042/3742/4300 3023/3745/4303 +f 3024/3747/4305 3044/3746/4304 3023/3745/4303 +f 3044/3746/4304 3024/3747/4305 187/3748/4306 +f 3044/3746/4304 3030/3749/4307 3042/3742/4300 +f 3045/3750/4308 3044/3746/4304 187/3748/4306 +f 3044/3746/4304 3045/3750/4308 3030/3749/4307 +f 3045/3750/4308 187/3748/4306 3046/3751/4309 +f 3040/3752/4310 3046/3751/4309 187/3748/4306 +f 188/3753/4311 3040/3752/4310 187/3748/4306 +f 3030/3749/4307 3028/3754/4312 3042/3742/4300 +f 3045/3750/4308 3046/3751/4309 3047/3755/4313 +f 3046/3751/4309 3040/3752/4310 3047/3755/4313 +f 3045/3750/4308 3033/3756/4314 3030/3749/4307 +f 3034/3757/4315 3033/3756/4314 3045/3750/4308 +f 3048/3758/4316 3034/3757/4315 3045/3750/4308 +f 3048/3758/4316 3045/3750/4308 3047/3755/4313 +f 3042/3742/4300 3028/3754/4312 3043/3743/4317 +f 3040/3752/4310 3038/3759/4318 3047/3755/4313 +f 3037/3760/4319 3034/3757/4315 3048/3758/4316 +f 3048/3758/4316 3047/3755/4313 3049/3761/4320 +f 3047/3755/4313 3038/3759/4318 3049/3761/4320 +f 3049/3761/4320 3037/3760/4319 3048/3758/4316 +f 3038/3759/4318 3037/3760/4319 3049/3761/4320 +f 3028/3754/4312 3027/3762/4321 3043/3743/4317 +f 3007/3763/4322 3026/3724/4323 3029/3727/4324 +f 3022/3764/4325 3007/3763/4322 3029/3727/4324 +f 3022/3764/4325 3029/3727/4324 3031/3729/4326 +f 3021/3765/4327 3022/3764/4325 3031/3729/4326 +f 3021/3765/4327 3031/3729/4326 3032/3730/4328 +f 3021/3765/4327 3032/3730/4328 3035/3733/4329 +f 3021/3765/4327 3035/3733/4329 3036/3734/4330 +f 3021/3765/4327 3036/3734/4330 3039/3737/4331 +f 3041/3739/4332 3021/3765/4327 3039/3737/4331 +f 3041/3739/4332 186/3740/4333 3021/3765/4327 +f 3003/3766/4334 3007/3767/4335 3022/3717/4336 +f 3023/3718/4337 3003/3766/4334 3022/3717/4336 +f 3023/3722/4338 3025/3768/4339 3050/3769/4340 +f 3024/3770/4341 3023/3722/4338 3050/3769/4340 +f 3024/3770/4341 3050/3769/4340 3051/3771/4342 +f 187/3772/4343 3024/3770/4341 3051/3771/4342 +f 3051/3771/4342 188/3773/4344 187/3772/4343 +f 3051/3771/4342 186/3774/4345 188/3773/4344 +f 186/3774/4345 3051/3771/4342 3021/3775/4346 +f 3051/3771/4342 3050/3769/4347 3021/3775/4346 +f 3021/3775/4346 3050/3769/4347 3022/3776/4348 +f 3050/3769/4347 3025/3768/4349 3022/3776/4348 +f 3052/3777/4350 3053/3778/4351 3054/3779/4352 +f 3055/3780/4353 3052/3777/4350 3054/3779/4352 +f 3055/3780/4353 3054/3779/4352 3056/3781/4354 +f 3057/3782/4355 3052/3777/4356 3055/3780/4357 +f 3058/3783/4358 3057/3782/4355 3055/3780/4357 +f 3056/3781/4359 3058/3783/4358 3055/3780/4357 +f 189/3784/4360 191/3785/4361 3059/3786/4362 +f 3060/3787/4363 189/3784/4360 3059/3786/4362 +f 3060/3787/4363 3059/3786/4362 3061/3788/4364 +f 3062/3789/4365 3060/3787/4363 3061/3788/4364 +f 3062/3789/4365 3061/3788/4364 3063/3790/4366 +f 3064/3791/4367 3062/3789/4365 3063/3790/4366 +f 3064/3791/4367 3063/3790/4366 3065/3792/4368 +f 3063/3790/4366 3066/3793/4369 3065/3792/4368 +f 3065/3792/4368 3066/3793/4369 3067/3794/4370 +f 3066/3793/4369 3068/3795/4371 3067/3794/4370 +f 3067/3794/4370 3068/3795/4371 3069/3796/4372 +f 3068/3795/4371 3070/3797/4373 3069/3796/4372 +f 3068/3795/4371 3066/3793/4374 3070/3797/4373 +f 3071/3798/4375 3067/3794/4370 3069/3796/4372 +f 3066/3793/4374 3063/3790/4376 3070/3797/4373 +f 3063/3790/4376 3061/3788/4377 3070/3797/4373 +f 3061/3788/4377 3059/3786/4378 3070/3797/4373 +f 3069/3796/4372 3070/3797/4373 3072/3799/4379 +f 3059/3786/4378 191/3785/4380 3070/3797/4373 +f 3069/3796/4372 3058/3800/4381 3071/3798/4375 +f 3072/3799/4379 3058/3800/4381 3069/3796/4372 +f 3058/3800/4381 3056/3801/4382 3071/3798/4375 +f 3072/3799/4379 3057/3802/4383 3058/3800/4381 +f 3073/3803/4384 3074/3804/4385 3072/3805/4386 +f 3070/3806/4387 3073/3803/4384 3072/3805/4386 +f 3073/3803/4384 3070/3806/4387 191/140/4388 +f 190/139/4389 3073/3803/4384 191/140/4388 +f 3072/3807/4390 3075/3808/4391 3052/3777/4392 +f 3057/3782/4393 3072/3807/4390 3052/3777/4392 +f 3074/3809/4394 3053/3778/4395 3052/3777/4396 +f 3075/3808/4397 3074/3809/4394 3052/3777/4396 +f 3076/3810/4398 3077/3811/4399 3078/3812/4400 +f 3077/3811/4399 3079/3813/4401 3078/3812/4400 +f 3080/3814/4402 3078/3812/4400 3079/3813/4401 +f 3081/3815/4403 3080/3814/4402 3079/3813/4401 +f 3081/3815/4403 3082/3816/4404 3080/3814/4402 +f 3082/3816/4404 3083/3817/4405 3080/3814/4402 +f 3083/3817/4405 3082/3816/4404 3084/3818/4406 +f 3082/3816/4404 3085/3819/4407 3084/3818/4406 +f 3084/3818/4406 3085/3819/4407 3086/3820/4408 +f 3087/3821/4409 3084/3818/4406 3086/3820/4408 +f 3087/3821/4409 3086/3820/4408 3088/3822/4410 +f 3086/3820/4408 3089/3823/4411 3088/3822/4410 +f 3088/3822/4410 3089/3823/4411 3090/3824/4412 +f 3089/3823/4411 3091/3825/4413 3090/3824/4412 +f 3091/3825/4413 191/3826/4414 3090/3824/4412 +f 191/3826/4414 189/3827/4415 3090/3824/4412 +f 3053/3828/4416 3092/3829/4417 3093/3830/4418 +f 3074/3831/4419 3053/3828/4416 3093/3830/4418 +f 3074/3831/4419 3093/3830/4418 3094/3832/4420 +f 3094/3832/4420 3093/3830/4418 3080/3833/4421 +f 3093/3830/4418 3078/3834/4422 3080/3833/4421 +f 3078/3834/4422 3093/3830/4418 3092/3829/4423 +f 3073/3835/4424 3074/3831/4419 3094/3832/4420 +f 3095/3836/4425 3094/3832/4420 3080/3833/4421 +f 3076/3837/4426 3078/3834/4422 3092/3829/4423 +f 190/3838/4427 3073/3835/4424 3094/3832/4420 +f 190/3838/4427 3094/3832/4420 3095/3836/4425 +f 3083/3839/4428 3095/3836/4425 3080/3833/4421 +f 3095/3836/4425 3083/3839/4428 3084/3840/4429 +f 3096/3841/4430 3095/3836/4425 3084/3840/4429 +f 3097/3842/4431 190/3838/4427 3095/3836/4425 +f 3096/3841/4430 3084/3840/4429 3087/3843/4432 +f 3098/3844/4433 3095/3836/4425 3096/3841/4430 +f 3098/3844/4433 3097/3842/4431 3095/3836/4425 +f 3099/3845/4434 3096/3841/4430 3087/3843/4432 +f 3098/3844/4433 3096/3841/4430 3099/3845/4434 +f 3099/3845/4434 3087/3843/4432 3088/3846/4435 +f 3098/3844/4433 3099/3845/4434 3088/3846/4435 +f 3097/3842/4431 3090/3847/4436 190/3838/4427 +f 3098/3844/4433 3088/3846/4435 3090/3847/4436 +f 3097/3842/4431 3098/3844/4433 3090/3847/4436 +f 3090/3847/4436 189/3848/4437 190/3838/4427 +f 3079/3813/4438 3077/3811/4439 3057/3849/4440 +f 3072/3850/4441 3079/3813/4438 3057/3849/4440 +f 3081/3815/4442 3079/3813/4438 3072/3850/4441 +f 3070/3851/4443 3081/3815/4442 3072/3850/4441 +f 3082/3816/4444 3081/3815/4442 3070/3851/4443 +f 3085/3819/4445 3082/3816/4444 3070/3851/4443 +f 3086/3820/4446 3085/3819/4445 3070/3851/4443 +f 3089/3823/4447 3086/3820/4446 3070/3851/4443 +f 3089/3823/4447 3070/3851/4443 3091/3825/4448 +f 3070/3851/4443 191/3826/4449 3091/3825/4448 +f 3053/3852/4450 3074/3804/4451 3072/3805/4452 +f 3057/3853/4453 3053/3852/4450 3072/3805/4452 +f 3075/3854/4454 3074/3808/4455 3100/3855/4456 +f 3074/3808/4455 3073/3856/4457 3100/3855/4456 +f 3100/3855/4456 3073/3856/4457 3101/3857/4458 +f 3073/3856/4457 190/3858/4459 3101/3857/4458 +f 189/3859/4460 3101/3857/4458 190/3858/4459 +f 189/3859/4460 191/3860/4461 3101/3857/4458 +f 191/3860/4461 3070/3861/4462 3101/3857/4458 +f 3070/3861/4462 3100/3855/4463 3101/3857/4458 +f 3070/3861/4462 3072/3862/4464 3100/3855/4463 +f 3072/3862/4464 3075/3854/4465 3100/3855/4463 +f 3102/3863/4466 3103/3864/4467 3104/3865/4468 +f 3105/3866/4469 3102/3863/4466 3104/3865/4468 +f 3106/3867/4470 3107/3868/4471 3108/3869/4472 +f 3106/3867/4470 3108/3869/4472 3109/3870/4473 +f 3109/3870/4473 3110/3871/4474 3106/3867/4470 +f 3111/3872/4475 3105/3866/4476 3104/3865/4477 +f 3112/3873/4475 3111/3872/4475 3104/3865/4477 +f 3113/3874/4478 3111/3872/4475 3112/3873/4475 +f 3114/3875/4479 3113/3874/4478 3112/3873/4475 +f 3113/3874/4478 3114/3875/4479 3115/3876/4480 +f 3114/3875/4479 3116/3877/4481 3115/3876/4480 +f 3107/3868/4482 3115/3876/4483 3116/3877/4484 +f 3108/3869/4485 3107/3868/4482 3116/3877/4484 +f 3103/3864/4486 3102/3863/4487 192/141/4488 +f 194/143/4489 3103/3864/4486 192/141/4488 +f 3117/3878/4490 3118/3879/4491 3119/3880/4492 +f 3120/3881/4493 3117/3878/4490 3119/3880/4492 +f 3118/3882/4494 3121/3883/4495 3122/3884/4496 +f 3119/3885/4497 3118/3882/4494 3122/3884/4496 +f 3123/3886/4498 3124/3887/4499 3125/3888/4500 +f 3126/3889/4501 3123/3886/4498 3125/3888/4500 +f 3125/3888/4500 3127/3890/4502 3126/3889/4501 +f 3127/3890/4502 3128/3891/4503 3126/3889/4501 +f 3129/3892/4504 3123/3886/4498 3126/3889/4501 +f 3127/3890/4502 3130/3893/4505 3128/3891/4503 +f 3130/3893/4505 3131/3894/4506 3128/3891/4503 +f 3126/3889/4501 3128/3891/4503 3132/3895/4507 +f 3132/3895/4507 3129/3892/4504 3126/3889/4501 +f 3130/3893/4505 3133/3896/4508 3131/3894/4506 +f 3128/3891/4503 3131/3894/4506 3134/3897/4509 +f 3128/3891/4503 3134/3897/4509 3132/3895/4507 +f 3133/3896/4508 3135/3898/4510 3131/3894/4506 +f 3131/3894/4506 3136/3899/4511 3134/3897/4509 +f 3131/3894/4506 3135/3898/4510 3136/3899/4511 +f 3133/3896/4508 3137/3900/4512 3135/3898/4510 +f 3138/3901/4513 3129/3892/4504 3132/3895/4507 +f 3132/3895/4507 3134/3897/4509 3139/3902/4514 +f 3139/3902/4514 3138/3901/4513 3132/3895/4507 +f 3137/3900/4512 3140/3903/4515 3135/3898/4510 +f 3134/3897/4509 3136/3899/4511 3141/3904/4516 +f 3134/3897/4509 3141/3904/4516 3139/3902/4514 +f 3140/3903/4515 3137/3900/4512 3142/3905/4517 +f 3135/3898/4510 3143/3906/4518 3136/3899/4511 +f 3135/3898/4510 3140/3903/4515 3143/3906/4518 +f 3136/3899/4511 3144/3907/4519 3141/3904/4516 +f 3136/3899/4511 3143/3906/4518 3144/3907/4519 +f 3145/3908/4520 3140/3903/4515 3142/3905/4517 +f 3140/3903/4515 3146/3909/4521 3143/3906/4518 +f 3140/3903/4515 3145/3908/4520 3146/3909/4521 +f 3147/3910/4522 3138/3901/4513 3139/3902/4514 +f 3145/3908/4520 3142/3905/4517 3148/3911/4523 +f 3139/3902/4514 3141/3904/4516 3149/3912/4524 +f 3149/3912/4524 3147/3910/4522 3139/3902/4514 +f 3141/3904/4516 3144/3907/4519 3150/3913/4525 +f 3141/3904/4516 3150/3913/4525 3149/3912/4524 +f 3143/3906/4518 3151/3914/4526 3144/3907/4519 +f 3151/3914/4526 3143/3906/4518 3146/3909/4521 +f 3144/3907/4519 3152/3915/4527 3150/3913/4525 +f 3144/3907/4519 3151/3914/4526 3152/3915/4527 +f 3145/3908/4520 3153/3916/4528 3146/3909/4521 +f 3154/3917/4529 3151/3914/4526 3146/3909/4521 +f 3154/3917/4529 3146/3909/4521 3153/3916/4528 +f 3155/3918/4530 3147/3910/4522 3149/3912/4524 +f 3149/3912/4524 3150/3913/4525 3156/3919/4531 +f 3156/3919/4531 3155/3918/4530 3149/3912/4524 +f 3150/3913/4525 3152/3915/4527 3157/3920/4532 +f 3150/3913/4525 3157/3920/4532 3156/3919/4531 +f 3151/3914/4526 3158/3921/4533 3152/3915/4527 +f 3158/3921/4533 3151/3914/4526 3154/3917/4529 +f 3152/3915/4527 3159/3922/4534 3157/3920/4532 +f 3152/3915/4527 3158/3921/4533 3159/3922/4534 +f 3160/3923/4535 3155/3918/4530 3156/3919/4531 +f 3156/3919/4531 3157/3920/4532 3161/3924/4536 +f 3161/3924/4536 3160/3923/4535 3156/3919/4531 +f 3157/3920/4532 3159/3922/4534 3162/3925/4537 +f 3157/3920/4532 3162/3925/4537 3161/3924/4536 +f 3163/3926/4538 3158/3921/4533 3154/3917/4529 +f 3158/3921/4533 3164/3927/4539 3159/3922/4534 +f 3164/3927/4539 3158/3921/4533 3163/3926/4538 +f 3159/3922/4534 3165/3928/4540 3162/3925/4537 +f 3165/3928/4540 3159/3922/4534 3164/3927/4539 +f 3160/3923/4535 3161/3924/4536 3120/3881/4541 +f 3161/3924/4536 3162/3925/4537 3117/3878/4542 +f 3161/3924/4536 3117/3878/4542 3120/3881/4541 +f 3162/3925/4537 3165/3928/4540 3166/3929/4543 +f 3162/3925/4537 3166/3929/4543 3117/3878/4542 +f 3167/3930/4544 3163/3926/4538 3154/3917/4529 +f 3165/3928/4540 3164/3927/4539 3104/3931/4545 +f 3165/3928/4540 3168/3932/4546 3166/3929/4543 +f 3168/3932/4546 3165/3928/4540 3103/3933/4547 +f 3104/3931/4545 3103/3933/4547 3165/3928/4540 +f 3169/3934/4548 3164/3927/4539 3163/3926/4538 +f 3164/3927/4539 3112/3935/4549 3104/3931/4545 +f 3112/3935/4549 3164/3927/4539 3169/3934/4548 +f 3163/3926/4538 3170/3936/4550 3169/3934/4548 +f 3170/3936/4550 3163/3926/4538 3167/3930/4544 +f 3171/3937/4551 3145/3908/4520 3148/3911/4523 +f 3145/3908/4520 3171/3937/4551 3153/3916/4528 +f 194/3938/4552 3168/3932/4546 3103/3933/4547 +f 3114/3939/4553 3112/3935/4549 3169/3934/4548 +f 3154/3917/4529 3153/3916/4528 3172/3940/4554 +f 3171/3937/4551 3172/3940/4554 3153/3916/4528 +f 3170/3936/4550 3173/3941/4555 3169/3934/4548 +f 3114/3939/4553 3169/3934/4548 3173/3941/4555 +f 3170/3936/4550 3167/3930/4544 3174/3942/4556 +f 3170/3936/4550 3175/3943/4557 3173/3941/4555 +f 3175/3943/4557 3170/3936/4550 3176/3944/4558 +f 3170/3936/4550 3174/3942/4556 3176/3944/4558 +f 3116/3945/4559 3114/3939/4553 3173/3941/4555 +f 3175/3943/4557 3177/3946/4560 3173/3941/4555 +f 3116/3945/4559 3173/3941/4555 3177/3946/4560 +f 3178/3947/4561 3167/3930/4544 3154/3917/4529 +f 3174/3942/4556 3167/3930/4544 3179/3948/4562 +f 3175/3943/4557 3176/3944/4558 3180/3949/4563 +f 3175/3943/4557 3181/3950/4564 3177/3946/4560 +f 3181/3950/4564 3175/3943/4557 3180/3949/4563 +f 3174/3942/4556 3182/3951/4565 3176/3944/4558 +f 3182/3951/4565 3180/3949/4563 3176/3944/4558 +f 3182/3951/4565 3174/3942/4556 3179/3948/4562 +f 3116/3945/4559 3177/3946/4560 3183/3952/4566 +f 3181/3950/4564 3184/3953/4567 3177/3946/4560 +f 3177/3946/4560 3184/3953/4567 3183/3952/4566 +f 3181/3950/4564 3180/3949/4563 3185/3954/4568 +f 3181/3950/4564 3186/3955/4569 3184/3953/4567 +f 3186/3955/4569 3181/3950/4564 3185/3954/4568 +f 3182/3951/4565 3187/3956/4570 3180/3949/4563 +f 3187/3956/4570 3185/3954/4568 3180/3949/4563 +f 3116/3945/4559 3183/3952/4566 3188/3957/4571 +f 3182/3951/4565 3179/3948/4562 3189/3958/4572 +f 3187/3956/4570 3182/3951/4565 3189/3958/4572 +f 3184/3953/4567 3190/3959/4573 3183/3952/4566 +f 3183/3952/4566 3190/3959/4573 3188/3957/4571 +f 3116/3945/4559 3188/3957/4571 3191/3960/4574 +f 3179/3948/4562 3167/3930/4544 3192/3961/4575 +f 3167/3930/4544 3178/3947/4561 3192/3961/4575 +f 3186/3955/4569 3193/3962/4576 3184/3953/4567 +f 3184/3953/4567 3193/3962/4576 3190/3959/4573 +f 3194/3963/4577 3116/3945/4559 3191/3960/4574 +f 3178/3947/4561 3154/3917/4529 3195/3964/4578 +f 3172/3940/4554 3195/3964/4578 3154/3917/4529 +f 3172/3940/4554 3171/3937/4551 3195/3964/4578 +f 3171/3937/4551 3148/3911/4523 3196/3965/4579 +f 3196/3965/4579 3192/3961/4575 3178/3947/4561 +f 3195/3964/4578 3196/3965/4579 3178/3947/4561 +f 3171/3937/4551 3196/3965/4579 3195/3964/4578 +f 3148/3911/4523 3197/3966/4580 3196/3965/4579 +f 3196/3965/4579 3197/3966/4580 3192/3961/4575 +f 3198/3967/4581 3116/3945/4559 3194/3963/4577 +f 3190/3959/4573 3199/3968/4582 3188/3957/4571 +f 3188/3957/4571 3199/3968/4582 3191/3960/4574 +f 3193/3962/4576 3200/3969/4583 3190/3959/4573 +f 3190/3959/4573 3200/3969/4583 3199/3968/4582 +f 3189/3958/4572 3179/3948/4562 3201/3970/4584 +f 3179/3948/4562 3192/3961/4575 3201/3970/4584 +f 3197/3966/4580 3201/3970/4584 3192/3961/4575 +f 3198/3967/4581 3108/3971/4585 3116/3945/4559 +f 3199/3968/4582 3202/3972/4586 3191/3960/4574 +f 3191/3960/4574 3202/3972/4586 3194/3963/4577 +f 3200/3969/4583 3203/3973/4587 3199/3968/4582 +f 3202/3972/4586 3199/3968/4582 3204/3974/4588 +f 3199/3968/4582 3203/3973/4587 3204/3974/4588 +f 3202/3972/4586 3205/3975/4589 3194/3963/4577 +f 3206/3976/4590 3198/3967/4581 3194/3963/4577 +f 3205/3975/4589 3206/3976/4590 3194/3963/4577 +f 3202/3972/4586 3204/3974/4588 3207/3977/4591 +f 3205/3975/4589 3202/3972/4586 3207/3977/4591 +f 3206/3976/4590 3109/3978/4592 3198/3967/4581 +f 3109/3978/4592 3108/3971/4585 3198/3967/4581 +f 3206/3976/4590 3205/3975/4589 3208/3979/4593 +f 3205/3975/4589 3207/3977/4591 3208/3979/4593 +f 3109/3978/4592 3206/3976/4590 3110/3980/4594 +f 3206/3976/4590 3208/3979/4593 3110/3980/4594 +f 3117/3878/4595 3166/3929/4596 3118/3879/4595 +f 3166/3929/4596 3209/3981/4597 3118/3879/4595 +f 3166/3929/4596 3168/3932/4598 3209/3981/4597 +f 3168/3932/4598 3210/3982/4598 3209/3981/4597 +f 3168/3932/4598 194/3938/4597 3210/3982/4598 +f 194/3938/4597 193/3983/4596 3210/3982/4598 +f 193/3984/4599 192/3985/4600 3210/3986/4601 +f 192/3985/4600 3211/3987/4602 3210/3986/4601 +f 3209/3988/4602 3210/3986/4601 3211/3987/4602 +f 3212/3989/4603 3209/3988/4602 3211/3987/4602 +f 3118/3882/4603 3209/3988/4602 3212/3989/4603 +f 3121/3883/4603 3118/3882/4603 3212/3989/4603 +f 3121/3883/4604 3213/3990/4605 3122/3884/4606 +f 3213/3990/4605 3214/3991/4607 3122/3884/4606 +f 3214/3991/4607 3213/3990/4605 3215/3992/4608 +f 3216/3993/4609 3214/3991/4607 3215/3992/4608 +f 3216/3993/4609 3215/3992/4608 3217/3994/4610 +f 3218/3995/4611 3216/3993/4609 3217/3994/4610 +f 3218/3995/4611 3217/3994/4610 3219/3996/4612 +f 3220/3997/4613 3218/3995/4611 3219/3996/4612 +f 3220/3997/4613 3219/3996/4612 3221/3998/4614 +f 3222/3999/4615 3220/3997/4613 3221/3998/4614 +f 3221/3998/4614 3223/4000/4616 3222/3999/4615 +f 3223/4000/4616 3224/4001/4617 3222/3999/4615 +f 3224/4001/4617 3223/4000/4616 3125/4002/4618 +f 3124/4003/4619 3224/4001/4617 3125/4002/4618 +f 3125/4002/4620 3223/4000/4621 3127/4004/4622 +f 3223/4000/4621 3225/4005/4623 3127/4004/4622 +f 3223/4000/4621 3221/3998/4624 3225/4005/4623 +f 3221/3998/4624 3226/4006/4625 3225/4005/4623 +f 3127/4004/4622 3225/4005/4623 3130/4007/4626 +f 3221/3998/4624 3219/3996/4627 3226/4006/4625 +f 3219/3996/4627 3227/4008/4628 3226/4006/4625 +f 3225/4005/4623 3226/4006/4625 3228/4009/4629 +f 3225/4005/4623 3228/4009/4629 3130/4007/4626 +f 3219/3996/4627 3217/3994/4630 3227/4008/4628 +f 3226/4006/4625 3227/4008/4628 3229/4010/4631 +f 3226/4006/4625 3229/4010/4631 3228/4009/4629 +f 3217/3994/4630 3230/4011/4632 3227/4008/4628 +f 3227/4008/4628 3231/4012/4633 3229/4010/4631 +f 3227/4008/4628 3230/4011/4632 3231/4012/4633 +f 3217/3994/4630 3215/3992/4634 3230/4011/4632 +f 3130/4007/4626 3228/4009/4629 3133/4013/4635 +f 3228/4009/4629 3229/4010/4631 3232/4014/4636 +f 3228/4009/4629 3232/4014/4636 3133/4013/4635 +f 3215/3992/4634 3233/4015/4637 3230/4011/4632 +f 3229/4010/4631 3231/4012/4633 3234/4016/4638 +f 3229/4010/4631 3234/4016/4638 3232/4014/4636 +f 3215/3992/4634 3213/3990/4639 3233/4015/4637 +f 3230/4011/4632 3235/4017/4640 3231/4012/4633 +f 3230/4011/4632 3233/4015/4637 3235/4017/4640 +f 3231/4012/4633 3236/4018/4641 3234/4016/4638 +f 3231/4012/4633 3235/4017/4640 3236/4018/4641 +f 3213/3990/4639 3237/4019/4642 3233/4015/4637 +f 3233/4015/4637 3238/4020/4643 3235/4017/4640 +f 3233/4015/4637 3237/4019/4642 3238/4020/4643 +f 3133/4013/4635 3232/4014/4636 3137/4021/4644 +f 3213/3990/4639 3121/3883/4645 3237/4019/4642 +f 3232/4014/4636 3234/4016/4638 3239/4022/4646 +f 3232/4014/4636 3239/4022/4646 3137/4021/4644 +f 3240/4023/4647 3234/4016/4638 3236/4018/4641 +f 3234/4016/4638 3240/4023/4647 3239/4022/4646 +f 3235/4017/4640 3241/4024/4648 3236/4018/4641 +f 3235/4017/4640 3238/4020/4643 3241/4024/4648 +f 3242/4025/4649 3240/4023/4647 3236/4018/4641 +f 3242/4025/4649 3236/4018/4641 3241/4024/4648 +f 3237/4019/4642 3243/4026/4650 3238/4020/4643 +f 3238/4020/4643 3244/4027/4651 3241/4024/4648 +f 3244/4027/4651 3238/4020/4643 3243/4026/4650 +f 3142/4028/4652 3137/4021/4644 3239/4022/4646 +f 3245/4029/4653 3239/4022/4646 3240/4023/4647 +f 3245/4029/4653 3142/4028/4652 3239/4022/4646 +f 3246/4030/4654 3240/4023/4647 3242/4025/4649 +f 3246/4030/4654 3245/4029/4653 3240/4023/4647 +f 3247/4031/4655 3242/4025/4649 3241/4024/4648 +f 3247/4031/4655 3241/4024/4648 3244/4027/4651 +f 3246/4030/4654 3242/4025/4649 3248/4032/4656 +f 3242/4025/4649 3249/4033/4657 3248/4032/4656 +f 3249/4033/4657 3242/4025/4649 3247/4031/4655 +f 3142/4028/4652 3245/4029/4653 3148/4034/4658 +f 3245/4029/4653 3246/4030/4654 3250/4035/4659 +f 3246/4030/4654 3248/4032/4656 3250/4035/4659 +f 3245/4029/4653 3250/4035/4659 3148/4034/4658 +f 3250/4035/4659 3248/4032/4656 3249/4033/4657 +f 3251/4036/4660 3247/4031/4655 3244/4027/4651 +f 3249/4033/4657 3247/4031/4655 3252/4037/4661 +f 3253/4038/4662 3250/4035/4659 3249/4033/4657 +f 3253/4038/4662 3249/4033/4657 3252/4037/4661 +f 3250/4035/4659 3253/4038/4662 3148/4034/4658 +f 3247/4031/4655 3254/4039/4663 3252/4037/4661 +f 3254/4039/4663 3247/4031/4655 3255/4040/4664 +f 3247/4031/4655 3251/4036/4660 3255/4040/4664 +f 3253/4038/4662 3197/4041/4665 3148/4034/4658 +f 3256/4042/4666 3253/4038/4662 3252/4037/4661 +f 3252/4037/4661 3254/4039/4663 3256/4042/4666 +f 3253/4038/4662 3256/4042/4666 3197/4041/4665 +f 3257/4043/4667 3254/4039/4663 3255/4040/4664 +f 3121/3883/4645 3212/3989/4668 3237/4019/4642 +f 3237/4019/4642 3212/3989/4668 3243/4026/4650 +f 3254/4039/4663 3258/4044/4669 3256/4042/4666 +f 3254/4039/4663 3257/4043/4667 3258/4044/4669 +f 3251/4036/4660 3259/4045/4670 3255/4040/4664 +f 3257/4043/4667 3255/4040/4664 3260/4046/4671 +f 3255/4040/4664 3261/4047/4672 3260/4046/4671 +f 3255/4040/4664 3259/4045/4670 3261/4047/4672 +f 3256/4042/4666 3201/4048/4673 3197/4041/4665 +f 3256/4042/4666 3258/4044/4669 3201/4048/4673 +f 3244/4027/4651 3243/4026/4650 3105/4049/4674 +f 3257/4043/4667 3262/4050/4675 3258/4044/4669 +f 3262/4050/4675 3257/4043/4667 3260/4046/4671 +f 3258/4044/4669 3189/4051/4676 3201/4048/4673 +f 3258/4044/4669 3262/4050/4675 3189/4051/4676 +f 3260/4046/4671 3261/4047/4672 3263/4052/4677 +f 3263/4052/4677 3262/4050/4675 3260/4046/4671 +f 3251/4036/4660 3244/4027/4651 3111/4053/4678 +f 3105/4049/4674 3111/4053/4678 3244/4027/4651 +f 3259/4045/4670 3264/4054/4679 3261/4047/4672 +f 3261/4047/4672 3265/4055/4680 3263/4052/4677 +f 3265/4055/4680 3261/4047/4672 3264/4054/4679 +f 3262/4050/4675 3187/4056/4681 3189/4051/4676 +f 3262/4050/4675 3263/4052/4677 3187/4056/4681 +f 3251/4036/4660 3113/4057/4682 3259/4045/4670 +f 3113/4057/4682 3251/4036/4660 3111/4053/4678 +f 3264/4054/4679 3259/4045/4670 3266/4058/4683 +f 3263/4052/4677 3265/4055/4680 3185/4059/4684 +f 3263/4052/4677 3185/4059/4684 3187/4056/4681 +f 3267/4060/4685 3265/4055/4680 3264/4054/4679 +f 3267/4060/4685 3264/4054/4679 3266/4058/4683 +f 3265/4055/4680 3186/4061/4686 3185/4059/4684 +f 3186/4061/4686 3265/4055/4680 3267/4060/4685 +f 3259/4045/4670 3268/4062/4687 3266/4058/4683 +f 3259/4045/4670 3269/4063/4688 3268/4062/4687 +f 3193/4064/4689 3186/4061/4686 3267/4060/4685 +f 3270/4065/4690 3267/4060/4685 3266/4058/4683 +f 3267/4060/4685 3270/4065/4690 3193/4064/4689 +f 3270/4065/4690 3266/4058/4683 3268/4062/4687 +f 3259/4045/4670 3271/4066/4691 3269/4063/4688 +f 3259/4045/4670 3115/4067/4692 3271/4066/4691 +f 3113/4057/4682 3115/4067/4692 3259/4045/4670 +f 3270/4065/4690 3200/4068/4693 3193/4064/4689 +f 3272/4069/4694 3270/4065/4690 3268/4062/4687 +f 3270/4065/4690 3272/4069/4694 3200/4068/4693 +f 3272/4069/4694 3268/4062/4687 3269/4063/4688 +f 3102/4070/4695 3105/4049/4674 3243/4026/4650 +f 3243/4026/4650 3211/3987/4696 3102/4070/4695 +f 3212/3989/4668 3211/3987/4696 3243/4026/4650 +f 3272/4069/4694 3203/4071/4697 3200/4068/4693 +f 3273/4072/4698 3272/4069/4694 3269/4063/4688 +f 3273/4072/4698 3269/4063/4688 3271/4066/4691 +f 3203/4071/4697 3272/4069/4694 3204/4073/4699 +f 3272/4069/4694 3273/4072/4698 3204/4073/4699 +f 3115/4067/4692 3274/4074/4700 3271/4066/4691 +f 3275/4075/4701 3273/4072/4698 3271/4066/4691 +f 3275/4075/4701 3271/4066/4691 3274/4074/4700 +f 3115/4067/4692 3107/4076/4702 3274/4074/4700 +f 3204/4073/4699 3273/4072/4698 3207/4077/4703 +f 3273/4072/4698 3275/4075/4701 3207/4077/4703 +f 3107/4076/4702 3106/4078/4704 3274/4074/4700 +f 3276/4079/4705 3275/4075/4701 3274/4074/4700 +f 3106/4078/4704 3276/4079/4705 3274/4074/4700 +f 3275/4075/4701 3276/4079/4705 3207/4077/4703 +f 3208/4080/4706 3276/4079/4705 3106/4078/4704 +f 3276/4079/4705 3208/4080/4706 3207/4077/4703 +f 3110/4081/4707 3208/4080/4706 3106/4078/4704 +f 3211/3987/4696 192/3985/4708 3102/4070/4695 +f 3108/4082/4709 3110/4083/4710 3277/4084/4711 +f 3278/4085/4712 3108/4082/4709 3277/4084/4711 +f 3277/4084/4711 3279/4086/4713 3278/4085/4712 +f 3279/4086/4713 3280/4087/4714 3278/4085/4712 +f 3116/4088/4715 3108/4082/4709 3278/4085/4712 +f 3280/4087/4714 3116/4088/4715 3278/4085/4712 +f 3280/4087/4714 3279/4086/4713 3281/4089/4716 +f 3282/4090/4717 3280/4087/4714 3281/4089/4716 +f 3280/4087/4714 3282/4090/4717 3116/4088/4715 +f 3281/4089/4716 193/4091/4718 3282/4090/4717 +f 193/4091/4718 194/4092/4719 3282/4090/4717 +f 194/4092/4719 3114/4093/4720 3282/4090/4717 +f 3282/4090/4717 3114/4093/4720 3116/4088/4715 +f 194/4092/4719 3103/4094/4721 3114/4093/4720 +f 3103/4094/4721 3104/4095/4722 3114/4093/4720 +f 3277/4096/4723 3110/4097/4724 3107/4098/4725 +f 3283/4099/4726 3277/4096/4723 3107/4098/4725 +f 3283/4099/4726 3107/4098/4725 3115/4100/4727 +f 3284/4101/4728 3283/4099/4726 3115/4100/4727 +f 3277/4096/4723 3283/4099/4726 3279/4102/4729 +f 3283/4099/4726 3284/4101/4728 3279/4102/4729 +f 3284/4101/4728 3115/4100/4727 3285/4103/4730 +f 3115/4100/4727 3113/4104/4731 3285/4103/4730 +f 3285/4103/4730 3113/4104/4731 3102/4105/4732 +f 3284/4101/4728 3285/4103/4730 3281/4106/4733 +f 3279/4102/4729 3284/4101/4728 3281/4106/4733 +f 3113/4104/4731 3105/4107/4734 3102/4105/4732 +f 3285/4103/4730 3102/4105/4732 192/4108/4735 +f 193/4109/4602 3281/4106/4733 3285/4103/4730 +f 192/4108/4735 193/4109/4602 3285/4103/4730 +f 3102/4110/4736 3105/4111/4737 3104/4112/4738 +f 3103/4113/4739 3102/4110/4736 3104/4112/4738 +f 3107/4114/4740 3110/4115/4741 3108/4116/4742 +f 3107/4114/4740 3108/4116/4742 3116/4117/4743 +f 3115/4118/4744 3107/4114/4740 3116/4117/4743 +f 192/4119/4745 3102/4110/4746 3103/4113/4747 +f 194/4120/4748 192/4119/4745 3103/4113/4747 +f 193/4121/4749 192/4119/4745 194/4120/4748 +f 3116/4117/4750 3114/4122/4751 3115/4118/4752 +f 3114/4122/4751 3113/4123/4753 3115/4118/4752 +f 3114/4122/4751 3104/4112/4754 3113/4123/4753 +f 3104/4112/4754 3105/4111/4754 3113/4123/4753 +f 3286/4124/4755 3287/4125/4756 3288/4126/4757 +f 3286/4124/4755 3288/4126/4757 3289/4127/4758 +f 3286/4124/4755 3289/4127/4758 3290/4128/4759 +f 3286/4124/4755 3290/4128/4759 3291/4129/4760 +f 3292/4130/4761 3286/4124/4755 3291/4129/4760 +f 3286/4124/4755 3292/4130/4761 3293/4131/4762 +f 3294/4132/4763 3286/4124/4755 3293/4131/4762 +f 3294/4132/4763 3295/4133/4764 3286/4124/4755 +f 3295/4133/4764 3296/4134/4765 3286/4124/4755 +f 3297/4135/231 3286/4124/4755 3296/4134/4765 +f 3297/4135/231 3296/4134/4765 3298/4136/231 +f 3297/4135/231 3298/4136/231 3299/4137/231 +f 3297/4135/231 3299/4137/231 3300/4138/231 +f 3301/4139/231 3297/4135/231 3300/4138/231 +f 3301/4139/231 3302/4140/231 3297/4135/231 +f 3303/4141/231 3297/4135/231 3302/4140/231 +f 3303/4141/231 3304/4142/4766 3297/4135/231 +f 3304/4142/4766 3305/4143/4767 3297/4135/231 +f 3304/4142/4766 3306/4144/4768 3305/4143/4767 +f 3306/4144/4768 3307/4145/4769 3305/4143/4767 +f 3308/4146/4770 3305/4143/4767 3307/4145/4769 +f 3308/4146/4770 3307/4145/4769 3309/4147/4770 +f 3310/4148/4770 3308/4146/4770 3309/4147/4770 +f 3311/4149/4770 3310/4148/4770 3309/4147/4770 +f 3312/4150/4770 3311/4149/4770 3309/4147/4770 +f 3312/4150/4770 3309/4147/4770 3313/4151/4771 +f 3312/4150/4770 3313/4151/4771 3314/4152/4772 +f 3315/4153/4773 3316/4154/4774 3317/4155/4775 +f 3318/4156/4776 3315/4153/4773 3317/4155/4775 +f 3319/4157/4777 3318/4156/4776 3317/4155/4775 +f 3320/4158/4778 3319/4157/4777 3317/4155/4775 +f 3320/4158/4778 3317/4155/4775 3321/4159/4779 +f 3322/4160/4780 3321/4159/4779 3317/4155/4775 +f 3322/4160/4780 3317/4155/4775 3323/4161/4781 +f 3317/4155/4775 3324/4162/4782 3323/4161/4781 +f 3317/4155/4775 3325/4163/4783 3324/4162/4782 +f 3325/4163/4783 3317/4155/4775 3326/4164/233 +f 3327/4165/233 3325/4163/4783 3326/4164/233 +f 3328/4166/233 3327/4165/233 3326/4164/233 +f 3329/4167/233 3328/4166/233 3326/4164/233 +f 3329/4167/233 3326/4164/233 3330/4168/233 +f 3330/4168/233 3326/4164/233 3331/4169/233 +f 3331/4169/233 3326/4164/233 3332/4170/4784 +f 3333/4171/233 3331/4169/233 3332/4170/4784 +f 3333/4171/233 3332/4170/4784 3334/4172/4785 +f 3334/4172/4785 3332/4170/4784 3335/4173/4786 +f 3332/4170/4784 3336/4174/4787 3335/4173/4786 +f 3336/4174/4787 3332/4170/4784 3337/4175/4788 +f 3338/4176/4788 3336/4174/4787 3337/4175/4788 +f 3338/4176/4788 3337/4175/4788 3339/4177/4788 +f 3338/4176/4788 3339/4177/4788 3340/4178/4788 +f 3338/4176/4788 3340/4178/4788 3341/4179/4789 +f 3342/4180/4790 3338/4176/4788 3341/4179/4789 +f 3342/4180/4790 3341/4179/4789 3343/4181/4788 +f 3337/4182/178 3308/4183/178 3339/4184/2875 +f 3308/4183/178 3310/4185/2874 3339/4184/2875 +f 3339/4184/2875 3310/4185/2874 3340/4186/4791 +f 3310/4185/2874 3311/4187/4792 3340/4186/4791 +f 3340/4186/4791 3311/4187/4792 3341/4188/4793 +f 3311/4187/4792 3312/4189/4794 3341/4188/4793 +f 3341/4188/4793 3312/4189/4794 3343/4190/4795 +f 3312/4189/4794 3314/4191/4796 3343/4190/4795 +f 3343/4190/4795 3314/4191/4796 3342/4192/4797 +f 3314/4191/4796 3313/4193/4798 3342/4192/4797 +f 3338/4194/4799 3342/4192/4797 3313/4193/4798 +f 3309/4195/4800 3338/4194/4799 3313/4193/4798 +f 3336/4196/4801 3338/4194/4799 3309/4195/4800 +f 3307/4197/4802 3336/4196/4801 3309/4195/4800 +f 3335/4198/4803 3336/4196/4801 3307/4197/4802 +f 3306/4199/4804 3335/4198/4803 3307/4197/4802 +f 3334/4200/4805 3335/4198/4803 3306/4199/4804 +f 3304/4201/4806 3334/4200/4805 3306/4199/4804 +f 3334/4200/4805 3304/4201/4806 3333/4202/4807 +f 3304/4201/4806 3303/4203/4808 3333/4202/4807 +f 3333/4202/4807 3303/4203/4808 3331/4204/2895 +f 3303/4203/4808 3302/4205/2894 3331/4204/2895 +f 3331/4204/2895 3302/4205/2894 3330/4206/4809 +f 3302/4205/2894 3301/4207/4810 3330/4206/4809 +f 3329/4208/4811 3330/4206/4809 3301/4207/4810 +f 3300/4209/4812 3329/4208/4811 3301/4207/4810 +f 3328/4210/2901 3329/4208/4811 3300/4209/4812 +f 3299/4211/4813 3328/4210/2901 3300/4209/4812 +f 3327/4212/4814 3328/4210/2901 3299/4211/4813 +f 3298/4213/4815 3327/4212/4814 3299/4211/4813 +f 3325/4214/4816 3327/4212/4814 3298/4213/4815 +f 3296/4215/4817 3325/4214/4816 3298/4213/4815 +f 3325/4214/4816 3296/4215/4817 3295/4216/4818 +f 3324/4217/4819 3325/4214/4816 3295/4216/4818 +f 3324/4217/4819 3295/4216/4818 3294/4218/4820 +f 3323/4219/4821 3324/4217/4819 3294/4218/4820 +f 3323/4219/4821 3294/4218/4820 3293/4220/4822 +f 3322/4221/4823 3323/4219/4821 3293/4220/4822 +f 3322/4221/4823 3293/4220/4822 3292/4222/4824 +f 3321/4223/4825 3322/4221/4823 3292/4222/4824 +f 3292/4222/4824 3291/4224/4826 3321/4223/4825 +f 3291/4224/4826 3320/4225/4827 3321/4223/4825 +f 3291/4224/4826 3290/4226/4828 3320/4225/4827 +f 3290/4226/4828 3319/4227/4829 3320/4225/4827 +f 3290/4226/4828 3289/4228/4830 3319/4227/4829 +f 3289/4228/4830 3318/4229/4831 3319/4227/4829 +f 3289/4228/4830 3288/4230/4832 3318/4229/4831 +f 3288/4230/4832 3315/4231/4833 3318/4229/4831 +f 3315/4231/4833 3288/4230/4832 3316/4232/2922 +f 3288/4230/4832 3287/4233/226 3316/4232/2922 +f 3344/4234/178 3345/4235/178 3346/4236/4834 +f 3345/4235/178 3347/4237/2874 3346/4236/4834 +f 3346/4236/4834 3347/4237/2874 3348/4238/4835 +f 3347/4237/2874 3349/4239/4836 3348/4238/4835 +f 3348/4238/4835 3349/4239/4836 3350/4240/4837 +f 3349/4239/4836 3351/4241/4838 3350/4240/4837 +f 3350/4240/4837 3351/4241/4838 3352/4242/4839 +f 3351/4241/4838 3353/4243/4840 3352/4242/4839 +f 3352/4242/4839 3353/4243/4840 3354/4244/4841 +f 3353/4243/4840 3355/4245/4842 3354/4244/4841 +f 3356/4246/4843 3354/4244/4841 3355/4245/4842 +f 3357/4247/4844 3356/4246/4843 3355/4245/4842 +f 3358/4248/4845 3356/4246/4843 3357/4247/4844 +f 3359/4249/4846 3358/4248/4845 3357/4247/4844 +f 3360/4250/4847 3358/4248/4845 3359/4249/4846 +f 3361/4251/4848 3360/4250/4847 3359/4249/4846 +f 3360/4250/4847 3361/4251/4848 3362/4252/4849 +f 3361/4251/4848 3363/4253/4850 3362/4252/4849 +f 3364/4254/4851 3362/4252/4849 3363/4253/4850 +f 3365/4255/4852 3364/4254/4851 3363/4253/4850 +f 3366/4256/2940 3364/4254/4851 3365/4255/4852 +f 3367/4257/4853 3366/4256/2940 3365/4255/4852 +f 3368/4258/4854 3366/4256/2940 3367/4257/4853 +f 3369/4259/4855 3368/4258/4854 3367/4257/4853 +f 3370/4260/4856 3368/4258/4854 3369/4259/4855 +f 3371/4261/4857 3370/4260/4856 3369/4259/4855 +f 3372/4262/4858 3370/4260/4856 3371/4261/4857 +f 3373/4263/4859 3372/4262/4858 3371/4261/4857 +f 3374/4264/4860 3372/4262/4858 3373/4263/4859 +f 3375/4265/4861 3374/4264/4860 3373/4263/4859 +f 3376/4266/4862 3374/4264/4860 3375/4265/4861 +f 3377/4267/4863 3376/4266/4862 3375/4265/4861 +f 3378/4268/4864 3376/4266/4862 3377/4267/4863 +f 3379/4269/4865 3378/4268/4864 3377/4267/4863 +f 3380/4270/4866 3378/4268/4864 3379/4269/4865 +f 3381/4271/4867 3380/4270/4866 3379/4269/4865 +f 3382/4272/4868 3380/4270/4866 3381/4271/4867 +f 3383/4273/4869 3382/4272/4868 3381/4271/4867 +f 3384/4274/4870 3382/4272/4868 3383/4273/4869 +f 3385/4275/4871 3384/4274/4870 3383/4273/4869 +f 3386/4276/4872 3384/4274/4870 3385/4275/4871 +f 3387/4277/4873 3386/4276/4872 3385/4275/4871 +f 3386/4276/4872 3387/4277/4873 3388/4278/4874 +f 3389/4279/4875 3386/4276/4872 3388/4278/4874 +f 3388/4278/4874 3390/4280/4876 3389/4279/4875 +f 3390/4280/4876 3391/4281/4877 3389/4279/4875 +f 3390/4280/4876 3392/4282/4878 3391/4281/4877 +f 3392/4282/4878 3393/4283/4879 3391/4281/4877 +f 3392/4282/4878 3394/4284/4880 3393/4283/4879 +f 3394/4284/4880 3395/4285/4881 3393/4283/4879 +f 3394/4284/4880 3396/4286/4882 3395/4285/4881 +f 3396/4286/4882 3397/4287/4831 3395/4285/4881 +f 3396/4286/4882 3398/4288/4883 3397/4287/4831 +f 3398/4288/4883 3399/4289/4884 3397/4287/4831 +f 3399/4289/4884 3398/4288/4883 3400/4290/226 +f 3398/4288/4883 3401/4291/226 3400/4290/226 +f 3351/4292/4885 3355/4293/4886 3353/4294/4770 +f 3351/4292/4885 3357/4295/4887 3355/4293/4886 +f 3351/4292/4885 3349/4296/4888 3357/4295/4887 +f 3349/4296/4888 3347/4297/4889 3357/4295/4887 +f 3347/4297/4889 3345/4298/4889 3357/4295/4887 +f 3345/4298/4889 3359/4299/4890 3357/4295/4887 +f 3345/4298/4889 3402/4300/4891 3359/4299/4890 +f 3361/4301/4892 3359/4299/4890 3402/4300/4891 +f 3363/4302/4893 3361/4301/4892 3402/4300/4891 +f 3402/4300/4891 3365/4303/4894 3363/4302/4893 +f 3402/4300/4891 3367/4304/4895 3365/4303/4894 +f 3402/4300/4891 3403/4305/4896 3367/4304/4895 +f 3369/4306/4897 3367/4304/4895 3403/4305/4896 +f 3371/4307/4898 3369/4306/4897 3403/4305/4896 +f 3371/4307/4898 3403/4305/4896 3373/4308/4899 +f 3403/4305/4896 3375/4309/4900 3373/4308/4899 +f 3403/4305/4896 3377/4310/4901 3375/4309/4900 +f 3403/4305/4896 3379/4311/4902 3377/4310/4901 +f 3403/4305/4896 3381/4312/4903 3379/4311/4902 +f 3403/4305/4896 3383/4313/4904 3381/4312/4903 +f 3403/4305/4896 3404/4314/4905 3383/4313/4904 +f 3385/4315/4906 3383/4313/4904 3404/4314/4905 +f 3387/4316/4907 3385/4315/4906 3404/4314/4905 +f 3387/4316/4907 3404/4314/4905 3388/4317/4908 +f 3404/4314/4905 3390/4318/4761 3388/4317/4908 +f 3390/4318/4761 3404/4314/4905 3392/4319/4909 +f 3404/4314/4905 3394/4320/4910 3392/4319/4909 +f 3404/4314/4905 3396/4321/4911 3394/4320/4910 +f 3404/4314/4905 3398/4322/4757 3396/4321/4911 +f 3404/4314/4905 3401/4323/4912 3398/4322/4757 +f 3354/4324/4913 3350/4325/4914 3352/4326/4788 +f 3354/4324/4913 3356/4327/4915 3350/4325/4914 +f 3356/4327/4915 3348/4328/4916 3350/4325/4914 +f 3356/4327/4915 3346/4329/4917 3348/4328/4916 +f 3356/4327/4915 3344/4330/4917 3346/4329/4917 +f 3356/4327/4915 3358/4331/4918 3344/4330/4917 +f 3358/4331/4918 3405/4332/4919 3344/4330/4917 +f 3405/4332/4919 3358/4331/4918 3360/4333/4920 +f 3362/4334/4921 3405/4332/4919 3360/4333/4920 +f 3406/4335/4922 3405/4332/4919 3362/4334/4921 +f 3406/4335/4922 3362/4334/4921 3364/4336/4923 +f 3407/4337/4924 3406/4335/4922 3364/4336/4923 +f 3407/4337/4924 3364/4336/4923 3366/4338/4925 +f 3407/4337/4924 3366/4338/4925 3368/4339/4926 +f 3376/4340/4927 3406/4335/4922 3407/4337/4924 +f 3407/4337/4924 3368/4339/4926 3370/4341/4928 +f 3372/4342/4929 3407/4337/4924 3370/4341/4928 +f 3372/4342/4929 3374/4343/4930 3407/4337/4924 +f 3376/4340/4927 3407/4337/4924 3374/4343/4930 +f 3376/4340/4927 3378/4344/4931 3406/4335/4922 +f 3378/4344/4931 3380/4345/4932 3406/4335/4922 +f 3380/4345/4932 3382/4346/4933 3406/4335/4922 +f 3382/4346/4933 3408/4347/4934 3406/4335/4922 +f 3408/4347/4934 3382/4346/4933 3384/4348/4935 +f 3408/4347/4934 3384/4348/4935 3386/4349/4936 +f 3389/4350/4937 3408/4347/4934 3386/4349/4936 +f 3389/4350/4937 3391/4351/4938 3408/4347/4934 +f 3393/4352/4939 3408/4347/4934 3391/4351/4938 +f 3393/4352/4939 3395/4353/4777 3408/4347/4934 +f 3395/4353/4777 3397/4354/4776 3408/4347/4934 +f 3397/4354/4776 3399/4355/4773 3408/4347/4934 +f 3399/4355/4773 3400/4356/4774 3408/4347/4934 +f 3409/4357/2921 3410/4358/226 3411/4359/226 +f 3412/4360/4884 3409/4357/2921 3411/4359/226 +f 3409/4357/2921 3412/4360/4884 3413/4361/4831 +f 3414/4362/4830 3409/4357/2921 3413/4361/4831 +f 3414/4362/4830 3413/4361/4831 3415/4363/4829 +f 3416/4364/4880 3414/4362/4830 3415/4363/4829 +f 3416/4364/4880 3415/4363/4829 3417/4365/4940 +f 3418/4366/4941 3416/4364/4880 3417/4365/4940 +f 3418/4366/4941 3417/4365/4940 3419/4367/4942 +f 3417/4365/4940 3420/4368/4943 3419/4367/4942 +f 3421/4369/4944 3419/4367/4942 3420/4368/4943 +f 3422/4370/4945 3421/4369/4944 3420/4368/4943 +f 3422/4370/4945 3423/4371/4946 3421/4369/4944 +f 3423/4371/4946 3424/4372/4947 3421/4369/4944 +f 3423/4371/4946 3425/4373/4948 3424/4372/4947 +f 3425/4373/4948 3426/4374/4949 3424/4372/4947 +f 3425/4373/4948 3427/4375/4950 3426/4374/4949 +f 3427/4375/4950 3428/4376/4951 3426/4374/4949 +f 3428/4376/4951 3427/4375/4950 3429/4377/4952 +f 3427/4375/4950 3430/4378/4953 3429/4377/4952 +f 3429/4377/4952 3430/4378/4953 3431/4379/4954 +f 3430/4378/4953 3432/4380/4955 3431/4379/4954 +f 3431/4379/4954 3432/4380/4955 3433/4381/4956 +f 3432/4380/4955 3434/4382/4957 3433/4381/4956 +f 3433/4381/4956 3434/4382/4957 3435/4383/4958 +f 3434/4382/4957 3436/4384/4959 3435/4383/4958 +f 3437/4385/4960 3435/4383/4958 3436/4384/4959 +f 3438/4386/4961 3437/4385/4960 3436/4384/4959 +f 3437/4385/4960 3438/4386/4961 3439/4387/4962 +f 3438/4386/4961 3440/4388/4963 3439/4387/4962 +f 3439/4387/4962 3440/4388/4963 3441/4389/4964 +f 3442/4390/4965 3439/4387/4962 3441/4389/4964 +f 3442/4390/4965 3441/4389/4964 3443/4391/4966 +f 3444/4392/4967 3442/4390/4965 3443/4391/4966 +f 3445/4393/4968 3444/4392/4967 3443/4391/4966 +f 3446/4394/4969 3445/4393/4968 3443/4391/4966 +f 3447/4395/4970 3445/4393/4968 3446/4394/4969 +f 3448/4396/4971 3447/4395/4970 3446/4394/4969 +f 3449/4397/4836 3447/4395/4970 3448/4396/4971 +f 3450/4398/4835 3449/4397/4836 3448/4396/4971 +f 3451/4399/2874 3449/4397/4836 3450/4398/4835 +f 3452/4400/2875 3451/4399/2874 3450/4398/4835 +f 3453/4401/2873 3451/4399/2874 3452/4400/2875 +f 3454/4402/2873 3453/4401/2873 3452/4400/2875 +f 3445/4403/4972 3442/4404/4973 3444/4405/4974 +f 3445/4403/4972 3447/4406/4975 3442/4404/4973 +f 3447/4406/4975 3449/4407/4976 3442/4404/4973 +f 3449/4407/4976 3451/4408/4977 3442/4404/4973 +f 3451/4408/4977 3453/4409/4978 3442/4404/4973 +f 3453/4409/4978 3439/4410/4979 3442/4404/4973 +f 3453/4409/4978 3455/4411/4980 3439/4410/4979 +f 3437/4412/231 3439/4410/4979 3455/4411/4980 +f 3435/4413/4981 3437/4412/231 3455/4411/4980 +f 3435/4413/4981 3455/4411/4980 3433/4414/4982 +f 3455/4411/4980 3431/4415/4983 3433/4414/4982 +f 3455/4411/4980 3429/4416/4984 3431/4415/4983 +f 3455/4411/4980 3428/4417/4985 3429/4416/4984 +f 3455/4411/4980 3456/4418/4986 3428/4417/4985 +f 3426/4419/4987 3428/4417/4985 3456/4418/4986 +f 3424/4420/4988 3426/4419/4987 3456/4418/4986 +f 3424/4420/4988 3456/4418/4986 3421/4421/4989 +f 3456/4418/4986 3419/4422/4990 3421/4421/4989 +f 3419/4422/4990 3456/4418/4986 3418/4423/4991 +f 3456/4418/4986 3416/4424/4992 3418/4423/4991 +f 3456/4418/4986 3414/4425/4993 3416/4424/4992 +f 3456/4418/4986 3409/4426/4994 3414/4425/4993 +f 3456/4418/4986 3410/4427/4995 3409/4426/4994 +f 3441/4428/4996 3446/4429/4997 3443/4430/4998 +f 3441/4428/4996 3448/4431/4999 3446/4429/4997 +f 3441/4428/4996 3450/4432/5000 3448/4431/4999 +f 3441/4428/4996 3452/4433/5001 3450/4432/5000 +f 3441/4428/4996 3454/4434/5002 3452/4433/5001 +f 3441/4428/4996 3440/4435/5003 3454/4434/5002 +f 3440/4435/5003 3457/4436/5004 3454/4434/5002 +f 3457/4436/5004 3440/4435/5003 3438/4437/233 +f 3436/4438/5005 3457/4436/5004 3438/4437/233 +f 3434/4439/5006 3457/4436/5004 3436/4438/5005 +f 3434/4439/5006 3432/4440/5007 3457/4436/5004 +f 3432/4440/5007 3430/4441/5008 3457/4436/5004 +f 3430/4441/5008 3427/4442/5009 3457/4436/5004 +f 3427/4442/5009 3458/4443/5010 3457/4436/5004 +f 3458/4443/5010 3427/4442/5009 3425/4444/5011 +f 3458/4443/5010 3425/4444/5011 3423/4445/5012 +f 3422/4446/5013 3458/4443/5010 3423/4445/5012 +f 3422/4446/5013 3420/4447/5014 3458/4443/5010 +f 3417/4448/5015 3458/4443/5010 3420/4447/5014 +f 3417/4448/5015 3415/4449/5016 3458/4443/5010 +f 3415/4449/5016 3413/4450/5017 3458/4443/5010 +f 3413/4450/5017 3412/4451/5018 3458/4443/5010 +f 3412/4451/5018 3411/4452/5019 3458/4443/5010 +f 3459/4453/3389 3460/4454/3389 3461/4455/3389 +f 3462/4456/3389 3459/4453/3389 3461/4455/3389 +f 3462/4456/3389 3461/4455/3389 3463/4457/3390 +f 3464/4458/3390 3462/4456/3389 3463/4457/3390 +f 3463/4457/5020 3465/4459/5021 3466/4460/5022 +f 3464/4458/5023 3463/4457/5020 3466/4460/5022 +f 3467/4461/3391 3460/4454/5024 3459/4453/5025 +f 3468/4461/5026 3467/4461/3391 3459/4453/5025 +f 3469/4462/3400 3470/4463/5027 3471/4464/3400 +f 3469/4462/3400 3472/4465/3400 3470/4463/5027 +f 3472/4465/3400 3468/4466/3405 3470/4463/5027 +f 3468/4466/3405 3459/4467/3404 3470/4463/5027 +f 3459/4467/3404 3462/4468/3403 3470/4463/5027 +f 3473/4469/5028 3470/4463/5027 3462/4468/3403 +f 3473/4469/5028 3462/4468/3403 3464/4470/5029 +f 3474/4471/5030 3473/4469/5028 3464/4470/5029 +f 3475/4472/5031 3474/4471/5030 3464/4470/5029 +f 3475/4472/5031 3464/4470/5029 3466/4473/5032 +f 3476/4474/3406 3471/4475/3406 3477/4476/3406 +f 3471/4475/3406 3470/4477/3406 3477/4476/3406 +f 3477/4476/3406 3470/4477/3406 3478/4478/3406 +f 3470/4477/3406 3473/4479/3406 3478/4478/3406 +f 3463/4480/3420 3461/4481/3408 3477/4482/3421 +f 3465/4483/3422 3463/4480/3420 3477/4482/3421 +f 3479/4484/3423 3465/4483/3422 3477/4482/3421 +f 3480/4485/3423 3479/4484/3423 3477/4482/3421 +f 3477/4482/3421 3478/4486/3423 3480/4485/3423 +f 3465/4487/3428 3479/4488/5033 3466/4489/3428 +f 3479/4488/5033 3475/4490/3427 3466/4489/3428 +f 3475/4490/3427 3479/4488/5033 3480/4491/3426 +f 3474/4492/3425 3475/4490/3427 3480/4491/3426 +f 3474/4492/3425 3480/4491/3426 3478/4479/3424 +f 3473/4491/3424 3474/4492/3425 3478/4479/3424 +f 3476/4493/3407 3477/4482/3408 3461/4481/3408 +f 3476/4493/3407 3461/4481/3408 3460/4494/3409 +f 3481/4495/5034 3476/4493/3407 3460/4494/3409 +f 3482/4496/3411 3481/4495/5034 3460/4494/3409 +f 3482/4496/3411 3460/4494/3409 3467/4497/5035 +f 3469/4498/3418 3471/4499/3419 3476/4500/3419 +f 3481/4501/3417 3469/4498/3418 3476/4500/3419 +f 3472/4502/3416 3469/4498/3418 3481/4501/3417 +f 3482/4502/3415 3472/4502/3416 3481/4501/3417 +f 3472/4502/3416 3482/4502/3415 3468/4503/5036 +f 3482/4502/3415 3467/4503/3414 3468/4503/5036 +f 3483/4504/5037 3484/4505/5038 3485/4506/5039 +f 3486/4507/5040 3483/4504/5037 3485/4506/5039 +f 3487/4508/5041 3486/4507/5040 3485/4506/5039 +f 3488/4509/5042 3487/4508/5041 3485/4506/5039 +f 3483/4504/5037 3486/4507/5040 3489/4510/5043 +f 3487/4508/5041 3488/4509/5042 3490/4511/5044 +f 3491/4512/5045 3487/4508/5041 3490/4511/5044 +f 3486/4507/5040 3487/4508/5041 3492/4513/5046 +f 3489/4510/5043 3486/4507/5040 3492/4513/5046 +f 3491/4512/5045 3490/4511/5044 3493/4514/5047 +f 3487/4508/5041 3491/4512/5045 3494/4515/5048 +f 3492/4513/5046 3487/4508/5041 3494/4515/5048 +f 3495/4516/5049 3483/4504/5037 3489/4510/5043 +f 3496/4517/5050 3491/4512/5045 3493/4514/5047 +f 3494/4515/5048 3491/4512/5045 3497/4518/5051 +f 3491/4512/5045 3496/4517/5050 3497/4518/5051 +f 3496/4517/5050 3493/4514/5047 3498/4519/5052 +f 3489/4510/5043 3492/4513/5046 3499/4520/5053 +f 3492/4513/5046 3494/4515/5048 3500/4521/5054 +f 3499/4520/5053 3492/4513/5046 3500/4521/5054 +f 3495/4516/5049 3489/4510/5043 3501/4522/5055 +f 3501/4522/5055 3489/4510/5043 3499/4520/5053 +f 3494/4515/5048 3497/4518/5051 3502/4523/5056 +f 3500/4521/5054 3494/4515/5048 3502/4523/5056 +f 3497/4518/5051 3496/4517/5050 3503/4524/5057 +f 3502/4523/5056 3497/4518/5051 3504/4525/5058 +f 3497/4518/5051 3503/4524/5057 3504/4525/5058 +f 3505/4526/3218 3495/4516/5049 3501/4522/5055 +f 3501/4522/5055 3499/4520/5053 3506/4527/5059 +f 3505/4526/3218 3501/4522/5055 3506/4527/5059 +f 3499/4520/5053 3500/4521/5054 3507/4528/5060 +f 3500/4521/5054 3502/4523/5056 3507/4528/5060 +f 3499/4520/5053 3508/4529/5061 3506/4527/5059 +f 3508/4529/5061 3499/4520/5053 3507/4528/5060 +f 3502/4523/5056 3504/4525/5058 3509/4530/5062 +f 3502/4523/5056 3510/4531/5063 3507/4528/5060 +f 3510/4531/5063 3502/4523/5056 3509/4530/5062 +f 3511/4532/5064 3505/4526/3218 3506/4527/5059 +f 3508/4529/5061 3512/4533/5065 3506/4527/5059 +f 3512/4533/5065 3508/4529/5061 3507/4528/5060 +f 3513/4534/5066 3511/4532/5064 3506/4527/5059 +f 3514/4535/5067 3513/4534/5066 3506/4527/5059 +f 3512/4533/5065 3514/4535/5067 3506/4527/5059 +f 3515/4536/5068 3507/4528/5060 3510/4531/5063 +f 3515/4536/5068 3512/4533/5065 3507/4528/5060 +f 3516/4537/5069 3510/4531/5063 3509/4530/5062 +f 3516/4537/5069 3515/4536/5068 3510/4531/5063 +f 3514/4535/5067 3517/4538/5070 3513/4534/5066 +f 3512/4533/5065 3518/4539/5071 3514/4535/5067 +f 3518/4539/5071 3517/4538/5070 3514/4535/5067 +f 3519/4540/5072 3516/4537/5069 3509/4530/5062 +f 3515/4536/5068 3520/4541/5073 3512/4533/5065 +f 3520/4541/5073 3518/4539/5071 3512/4533/5065 +f 3516/4537/5069 3521/4542/5074 3515/4536/5068 +f 3521/4542/5074 3520/4541/5073 3515/4536/5068 +f 3521/4542/5074 3516/4537/5069 3519/4540/5072 +f 3517/4538/5070 3522/4543/5075 3513/4534/5066 +f 3523/4544/5076 3517/4538/5070 3518/4539/5071 +f 3517/4538/5070 3523/4544/5076 3522/4543/5075 +f 3518/4539/5071 3520/4541/5073 3524/4545/5077 +f 3524/4545/5077 3523/4544/5076 3518/4539/5071 +f 3520/4541/5073 3521/4542/5074 3525/4546/5078 +f 3520/4541/5073 3525/4546/5078 3524/4545/5077 +f 3526/4547/5079 3521/4542/5074 3519/4540/5072 +f 3521/4542/5074 3527/4548/5080 3525/4546/5078 +f 3527/4548/5080 3521/4542/5074 3526/4547/5079 +f 3523/4544/5076 3528/4549/5081 3522/4543/5075 +f 3524/4545/5077 3529/4550/3226 3523/4544/5076 +f 3529/4550/3226 3524/4545/5077 3525/4546/5078 +f 3530/4551/5082 3528/4549/5081 3523/4544/5076 +f 3531/4552/5083 3530/4551/5082 3523/4544/5076 +f 3529/4550/3226 3531/4552/5083 3523/4544/5076 +f 3527/4548/5080 3532/4553/3229 3525/4546/5078 +f 3533/4554/5084 3527/4548/5080 3526/4547/5079 +f 3532/4553/3229 3527/4548/5080 3533/4554/5084 +f 3534/4555/3228 3529/4550/3226 3525/4546/5078 +f 3532/4553/3229 3534/4555/3228 3525/4546/5078 +f 3531/4552/5083 3535/4556/5085 3530/4551/5082 +f 3535/4556/5085 3531/4552/5083 3529/4550/3226 +f 3529/4550/3226 3534/4555/3228 3536/4557/3232 +f 3534/4555/3228 3532/4553/3229 3536/4557/3232 +f 3537/4558/5086 3535/4556/5085 3529/4550/3226 +f 3537/4558/5086 3529/4550/3226 3536/4557/3232 +f 3535/4556/5085 3538/4559/5087 3530/4551/5082 +f 3539/4560/3249 3532/4553/3229 3533/4554/5084 +f 3532/4553/3229 3540/4561/3236 3536/4557/3232 +f 3541/4562/3245 3540/4561/3236 3532/4553/3229 +f 3539/4560/3249 3541/4562/3245 3532/4553/3229 +f 3537/4558/5086 3542/4563/5088 3535/4556/5085 +f 3543/4564/5089 3526/4547/5079 3519/4540/5072 +f 3538/4559/5087 3535/4556/5085 3544/4565/5090 +f 3537/4558/5086 3536/4557/3232 3545/4566/3241 +f 3542/4563/5088 3537/4558/5086 3545/4566/3241 +f 3535/4556/5085 3546/4567/5091 3544/4565/5090 +f 3542/4563/5088 3546/4567/5091 3535/4556/5085 +f 3540/4561/3236 3547/4568/3376 3536/4557/3232 +f 3547/4568/3376 3545/4566/3241 3536/4557/3232 +f 3548/4569/5092 3533/4554/5084 3526/4547/5079 +f 3543/4564/5089 3548/4569/5092 3526/4547/5079 +f 3540/4561/3236 3541/4562/3245 3549/4570/3250 +f 3547/4568/3376 3540/4561/3236 3549/4570/3250 +f 3550/4571/5093 3539/4560/3249 3533/4554/5084 +f 3541/4562/3245 3539/4560/3249 3550/4571/5093 +f 3548/4569/5092 3550/4571/5093 3533/4554/5084 +f 3544/4565/5090 3546/4567/5091 3551/4572/5094 +f 3546/4567/5091 3542/4563/5088 3552/4573/5095 +f 3546/4567/5091 3552/4573/5095 3551/4572/5094 +f 3542/4563/5088 3545/4566/3241 3553/4574/5096 +f 3542/4563/5088 3553/4574/5096 3552/4573/5095 +f 3554/4575/5097 3549/4570/3250 3541/4562/3245 +f 3545/4566/3241 3547/4568/3376 3555/4576/3377 +f 3545/4566/3241 3555/4576/3377 3553/4574/5096 +f 3547/4568/3376 3549/4570/3250 3556/4577/3251 +f 3547/4568/3376 3556/4577/3251 3555/4576/3377 +f 3557/4578/5098 3554/4575/5097 3541/4562/3245 +f 3557/4578/5098 3541/4562/3245 3550/4571/5093 +f 3549/4570/3250 3558/4579/3255 3556/4577/3251 +f 3549/4570/3250 3554/4575/5097 3558/4579/3255 +f 3554/4575/5097 3559/4580/5099 3558/4579/3255 +f 3554/4575/5097 3557/4578/5098 3560/4581/5100 +f 3554/4575/5097 3560/4581/5100 3559/4580/5099 +f 3561/4582/5101 3557/4578/5098 3550/4571/5093 +f 3557/4578/5098 3561/4582/5101 3560/4581/5100 +f 3562/4583/5102 3561/4582/5101 3550/4571/5093 +f 3562/4583/5102 3550/4571/5093 3563/4584/5103 +f 3550/4571/5093 3548/4569/5092 3563/4584/5103 +f 3560/4581/5100 3564/4585/5104 3559/4580/5099 +f 3565/4586/5105 3496/4517/5050 3498/4519/5052 +f 3496/4517/5050 3565/4586/5105 3503/4524/5057 +f 3566/4587/5106 3560/4581/5100 3561/4582/5101 +f 3560/4581/5100 3566/4587/5106 3564/4585/5104 +f 3561/4582/5101 3562/4583/5102 3567/4588/3267 +f 3567/4588/3267 3562/4583/5102 3563/4584/5103 +f 3503/4524/5057 3568/4589/5107 3504/4525/5058 +f 3503/4524/5057 3565/4586/5105 3568/4589/5107 +f 3569/4590/3268 3566/4587/5106 3561/4582/5101 +f 3569/4590/3268 3561/4582/5101 3567/4588/3267 +f 3563/4584/5103 3548/4569/5092 3570/4591/5108 +f 3548/4569/5092 3543/4564/5089 3570/4591/5108 +f 3571/4592/5109 3567/4588/3267 3563/4584/5103 +f 3571/4592/5109 3563/4584/5103 3570/4591/5108 +f 3504/4525/5058 3572/4593/3168 3509/4530/5062 +f 3568/4589/5107 3572/4593/3168 3504/4525/5058 +f 3566/4587/5106 3573/4594/5110 3564/4585/5104 +f 3569/4590/3268 3574/4595/3270 3566/4587/5106 +f 3574/4595/3270 3569/4590/3268 3567/4588/3267 +f 3575/4596/5111 3573/4594/5110 3566/4587/5106 +f 3576/4597/3272 3575/4596/5111 3566/4587/5106 +f 3574/4595/3270 3576/4597/3272 3566/4587/5106 +f 3567/4588/3267 3571/4592/5109 3577/4598/5112 +f 3578/4599/5113 3571/4592/5109 3570/4591/5108 +f 3579/4600/3274 3574/4595/3270 3567/4588/3267 +f 3579/4600/3274 3567/4588/3267 3577/4598/5112 +f 3519/4540/5072 3509/4530/5062 3580/4601/5114 +f 3572/4593/3168 3580/4601/5114 3509/4530/5062 +f 3577/4598/5112 3571/4592/5109 3581/4602/5115 +f 3571/4592/5109 3578/4599/5113 3581/4602/5115 +f 3582/4603/3275 3575/4596/5111 3576/4597/3272 +f 3574/4595/3270 3583/4604/3276 3576/4597/3272 +f 3574/4595/3270 3579/4600/3274 3584/4605/5116 +f 3584/4605/5116 3579/4600/3274 3577/4598/5112 +f 3583/4604/3276 3574/4595/3270 3584/4605/5116 +f 3585/4606/3278 3582/4603/3275 3576/4597/3272 +f 3583/4604/3276 3585/4606/3278 3576/4597/3272 +f 3586/4607/5117 3577/4598/5112 3581/4602/5115 +f 3586/4607/5117 3584/4605/5116 3577/4598/5112 +f 3581/4602/5115 3578/4599/5113 3587/4608/5118 +f 3588/4609/5119 3586/4607/5117 3581/4602/5115 +f 3588/4609/5119 3581/4602/5115 3587/4608/5118 +f 3582/4603/3275 3585/4606/3278 3589/4610/3280 +f 3583/4604/3276 3590/4611/3281 3585/4606/3278 +f 3590/4611/3281 3583/4604/3276 3584/4605/5116 +f 3585/4606/3278 3591/4612/3282 3589/4610/3280 +f 3590/4611/3281 3591/4612/3282 3585/4606/3278 +f 3584/4605/5116 3586/4607/5117 3592/4613/5120 +f 3592/4613/5120 3586/4607/5117 3588/4609/5119 +f 3593/4614/3284 3590/4611/3281 3584/4605/5116 +f 3593/4614/3284 3584/4605/5116 3592/4613/5120 +f 3594/4615/5121 3588/4609/5119 3587/4608/5118 +f 3595/4616/5122 3592/4613/5120 3588/4609/5119 +f 3595/4616/5122 3588/4609/5119 3594/4615/5121 +f 3596/4617/3285 3589/4610/3280 3591/4612/3282 +f 3590/4611/3281 3597/4618/3286 3591/4612/3282 +f 3590/4611/3281 3593/4614/3284 3598/4619/3287 +f 3598/4619/3287 3593/4614/3284 3592/4613/5120 +f 3597/4618/3286 3590/4611/3281 3598/4619/3287 +f 3599/4620/3288 3596/4617/3285 3591/4612/3282 +f 3597/4618/3286 3599/4620/3288 3591/4612/3282 +f 3600/4621/5123 3543/4564/5089 3519/4540/5072 +f 3600/4621/5123 3519/4540/5072 3580/4601/5114 +f 3601/4622/5124 3592/4613/5120 3595/4616/5122 +f 3601/4622/5124 3598/4619/3287 3592/4613/5120 +f 3602/4623/5125 3595/4616/5122 3594/4615/5121 +f 3603/4624/5126 3601/4622/5124 3595/4616/5122 +f 3603/4624/5126 3595/4616/5122 3602/4623/5125 +f 3596/4617/3285 3599/4620/3288 3604/4625/3289 +f 3597/4618/3286 3605/4626/3290 3599/4620/3288 +f 3605/4626/3290 3597/4618/3286 3598/4619/3287 +f 3599/4620/3288 3606/4627/3291 3604/4625/3289 +f 3605/4626/3290 3606/4627/3291 3599/4620/3288 +f 3598/4619/3287 3601/4622/5124 3607/4628/5127 +f 3607/4628/5127 3601/4622/5124 3603/4624/5126 +f 3608/4629/3292 3605/4626/3290 3598/4619/3287 +f 3608/4629/3292 3598/4619/3287 3607/4628/5127 +f 3609/4630/5128 3603/4624/5126 3602/4623/5125 +f 3610/4631/5129 3607/4628/5127 3603/4624/5126 +f 3610/4631/5129 3603/4624/5126 3609/4630/5128 +f 3611/4632/3294 3604/4625/3289 3606/4627/3291 +f 3605/4626/3290 3612/4633/5130 3606/4627/3291 +f 3605/4626/3290 3608/4629/3292 3613/4634/3295 +f 3613/4634/3295 3608/4629/3292 3607/4628/5127 +f 3612/4633/5130 3605/4626/3290 3613/4634/3295 +f 3614/4635/5131 3611/4632/3294 3606/4627/3291 +f 3612/4633/5130 3614/4635/5131 3606/4627/3291 +f 3570/4591/5108 3543/4564/5089 3615/4636/5132 +f 3578/4599/5113 3570/4591/5108 3615/4636/5132 +f 3543/4564/5089 3600/4621/5123 3615/4636/5132 +f 3607/4628/5127 3610/4631/5129 3616/4637/5133 +f 3617/4638/5134 3613/4634/3295 3607/4628/5127 +f 3617/4638/5134 3607/4628/5127 3616/4637/5133 +f 3611/4632/3294 3614/4635/5131 3618/4639/5135 +f 3612/4633/5130 3619/4640/5136 3614/4635/5131 +f 3619/4640/5136 3612/4633/5130 3613/4634/3295 +f 3614/4635/5131 3620/4641/3300 3618/4639/5135 +f 3619/4640/5136 3620/4641/3300 3614/4635/5131 +f 3578/4599/5113 3621/4642/5137 3587/4608/5118 +f 3621/4642/5137 3578/4599/5113 3615/4636/5132 +f 3616/4637/5133 3610/4631/5129 3622/4643/5138 +f 3613/4634/3295 3617/4638/5134 3623/4644/5139 +f 3623/4644/5139 3617/4638/5134 3616/4637/5133 +f 3624/4645/5140 3610/4631/5129 3609/4630/5128 +f 3610/4631/5129 3624/4645/5140 3622/4643/5138 +f 3625/4646/5141 3619/4640/5136 3613/4634/3295 +f 3625/4646/5141 3613/4634/3295 3623/4644/5139 +f 3602/4623/5125 3626/4647/5142 3609/4630/5128 +f 3594/4615/5121 3587/4608/5118 3627/4648/5143 +f 3587/4608/5118 3621/4642/5137 3627/4648/5143 +f 3628/4649/5144 3623/4644/5139 3616/4637/5133 +f 3628/4649/5144 3616/4637/5133 3622/4643/5138 +f 3551/4650/5145 3618/4639/5135 3620/4641/3300 +f 3544/4651/5146 3620/4641/3300 3619/4640/5136 +f 3544/4651/5146 3551/4650/5145 3620/4641/3300 +f 3594/4615/5121 3629/4652/5147 3602/4623/5125 +f 3629/4652/5147 3626/4647/5142 3602/4623/5125 +f 3629/4652/5147 3594/4615/5121 3627/4648/5143 +f 3619/4640/5136 3625/4646/5141 3530/4653/5148 +f 3530/4653/5148 3625/4646/5141 3623/4644/5139 +f 3538/4654/5149 3544/4651/5146 3619/4640/5136 +f 3538/4654/5149 3619/4640/5136 3530/4653/5148 +f 3528/4655/5150 3623/4644/5139 3628/4649/5144 +f 3528/4655/5150 3530/4653/5148 3623/4644/5139 +f 3630/4656/5151 3628/4649/5144 3622/4643/5138 +f 3522/4657/5152 3528/4655/5150 3628/4649/5144 +f 3522/4657/5152 3628/4649/5144 3630/4656/5151 +f 3609/4630/5128 3631/4658/3131 3624/4645/5140 +f 3626/4647/5142 3631/4658/3131 3609/4630/5128 +f 3565/4586/5105 3498/4519/5052 3632/4659/5153 +f 3622/4643/5138 3633/4660/5154 3630/4656/5151 +f 3634/4661/5155 3633/4660/5154 3622/4643/5138 +f 3624/4645/5140 3634/4661/5155 3622/4643/5138 +f 3631/4658/3131 3634/4661/5155 3624/4645/5140 +f 3513/4662/5156 3522/4657/5152 3630/4656/5151 +f 3633/4660/5154 3635/4663/5157 3630/4656/5151 +f 3513/4662/5156 3630/4656/5151 3511/4664/5158 +f 3630/4656/5151 3635/4663/5157 3511/4664/5158 +f 3636/4665/5159 3633/4660/5154 3634/4661/5155 +f 3633/4660/5154 3636/4665/5159 3635/4663/5157 +f 3637/4666/3124 3636/4665/5159 3634/4661/5155 +f 3638/4667/5160 3637/4666/3124 3634/4661/5155 +f 3631/4658/3131 3638/4667/5160 3634/4661/5155 +f 3638/4667/5160 3631/4658/3131 3626/4647/5142 +f 3505/4668/5161 3511/4664/5158 3635/4663/5157 +f 3636/4665/5159 3639/4669/5162 3635/4663/5157 +f 3639/4669/5162 3505/4668/5161 3635/4663/5157 +f 3640/4670/5163 3636/4665/5159 3637/4666/3124 +f 3636/4665/5159 3640/4670/5163 3639/4669/5162 +f 3638/4667/5160 3641/4671/5164 3637/4666/3124 +f 3642/4672/5165 3640/4670/5163 3637/4666/3124 +f 3641/4671/5164 3642/4672/5165 3637/4666/3124 +f 3643/4673/3135 3638/4667/5160 3626/4647/5142 +f 3638/4667/5160 3643/4673/3135 3641/4671/5164 +f 3495/4674/5166 3505/4668/5161 3639/4669/5162 +f 3640/4670/5163 3644/4675/5167 3639/4669/5162 +f 3644/4675/5167 3495/4674/5166 3639/4669/5162 +f 3642/4672/5165 3645/4676/5168 3640/4670/5163 +f 3641/4671/5164 3646/4677/5169 3642/4672/5165 +f 3646/4677/5169 3645/4676/5168 3642/4672/5165 +f 3640/4670/5163 3647/4678/5170 3644/4675/5167 +f 3645/4676/5168 3647/4678/5170 3640/4670/5163 +f 3643/4673/3135 3648/4679/5171 3641/4671/5164 +f 3649/4680/5172 3646/4677/5169 3641/4671/5164 +f 3648/4679/5171 3649/4680/5172 3641/4671/5164 +f 3644/4675/5167 3650/4681/5173 3495/4674/5166 +f 3647/4678/5170 3650/4681/5173 3644/4675/5167 +f 3651/4682/5174 3643/4673/3135 3626/4647/5142 +f 3629/4652/5147 3651/4682/5174 3626/4647/5142 +f 3651/4682/5174 3629/4652/5147 3627/4648/5143 +f 3647/4678/5170 3645/4676/5168 3652/4683/5175 +f 3650/4681/5173 3647/4678/5170 3653/4684/5176 +f 3647/4678/5170 3652/4683/5175 3653/4684/5176 +f 3645/4676/5168 3646/4677/5169 3654/4685/5177 +f 3645/4676/5168 3654/4685/5177 3652/4683/5175 +f 3650/4681/5173 3483/4686/5178 3495/4674/5166 +f 3646/4677/5169 3649/4680/5172 3655/4687/5179 +f 3646/4677/5169 3655/4687/5179 3654/4685/5177 +f 3656/4688/5180 3648/4679/5171 3643/4673/3135 +f 3651/4682/5174 3656/4688/5180 3643/4673/3135 +f 3657/4689/5181 3649/4680/5172 3648/4679/5171 +f 3656/4688/5180 3657/4689/5181 3648/4679/5171 +f 3650/4681/5173 3653/4684/5176 3484/4690/5182 +f 3483/4686/5178 3650/4681/5173 3484/4690/5182 +f 3649/4680/5172 3658/4691/5183 3655/4687/5179 +f 3649/4680/5172 3657/4689/5181 3658/4691/5183 +f 3657/4689/5181 3659/4692/5184 3658/4691/5183 +f 3660/4693/5185 3657/4689/5181 3656/4688/5180 +f 3659/4692/5184 3657/4689/5181 3661/4694/5186 +f 3657/4689/5181 3660/4693/5185 3661/4694/5186 +f 3662/4695/5187 3656/4688/5180 3651/4682/5174 +f 3662/4695/5187 3660/4693/5185 3656/4688/5180 +f 3663/4696/5188 3662/4695/5187 3651/4682/5174 +f 3663/4696/5188 3651/4682/5174 3627/4648/5143 +f 3660/4693/5185 3664/4697/5189 3661/4694/5186 +f 3664/4697/5189 3660/4693/5185 3662/4695/5187 +f 3665/4698/5190 3662/4695/5187 3663/4696/5188 +f 3665/4698/5190 3664/4697/5189 3662/4695/5187 +f 3666/4699/3155 3663/4696/5188 3627/4648/5143 +f 3666/4699/3155 3665/4698/5190 3663/4696/5188 +f 3664/4697/5189 3667/4700/5191 3661/4694/5186 +f 3668/4701/3157 3666/4699/3155 3627/4648/5143 +f 3621/4642/5137 3668/4701/3157 3627/4648/5143 +f 3669/4702/5192 3664/4697/5189 3665/4698/5190 +f 3664/4697/5189 3669/4702/5192 3667/4700/5191 +f 3665/4698/5190 3666/4699/3155 3670/4703/5193 +f 3572/4593/3168 3568/4589/5107 3670/4703/5193 +f 3671/4704/5194 3669/4702/5192 3665/4698/5190 +f 3671/4704/5194 3665/4698/5190 3670/4703/5193 +f 3568/4589/5107 3671/4704/5194 3670/4703/5193 +f 3666/4699/3155 3668/4701/3157 3672/4705/5195 +f 3672/4705/5195 3668/4701/3157 3621/4642/5137 +f 3670/4703/5193 3666/4699/3155 3672/4705/5195 +f 3615/4636/5132 3672/4705/5195 3621/4642/5137 +f 3572/4593/3168 3670/4703/5193 3672/4705/5195 +f 3615/4636/5132 3600/4621/5123 3672/4705/5195 +f 3580/4601/5114 3572/4593/3168 3672/4705/5195 +f 3600/4621/5123 3580/4601/5114 3672/4705/5195 +f 3669/4702/5192 3673/4706/5196 3667/4700/5191 +f 3674/4707/5197 3669/4702/5192 3671/4704/5194 +f 3669/4702/5192 3674/4707/5197 3673/4706/5196 +f 3568/4589/5107 3674/4707/5197 3671/4704/5194 +f 3674/4707/5197 3632/4659/5153 3673/4706/5196 +f 3565/4586/5105 3674/4707/5197 3568/4589/5107 +f 3674/4707/5197 3565/4586/5105 3632/4659/5153 +f 3675/4708/5198 3676/4709/5199 3677/4710/5200 +f 3678/4711/5200 3675/4708/5198 3677/4710/5200 +f 3679/4712/5201 3680/4713/5202 3681/4714/5202 +f 3682/4715/5201 3679/4712/5201 3681/4714/5202 +f 3676/4716/5203 3683/4717/5204 3684/4718/5203 +f 3677/4719/5203 3676/4716/5203 3684/4718/5203 +f 3685/4720/5205 3677/4719/5203 3684/4718/5203 +f 3686/4721/5205 3685/4720/5205 3684/4718/5203 +f 3686/4721/5205 3684/4718/5203 3679/4722/5205 +f 3684/4718/5203 3680/4723/5203 3679/4722/5205 +f 3687/4724/5206 3688/4725/5207 3675/4726/5206 +f 3678/4727/5207 3687/4724/5206 3675/4726/5206 +f 3687/4724/5206 3678/4727/5207 3689/4728/5207 +f 3687/4724/5206 3689/4728/5207 3690/4729/5207 +f 3682/4730/5207 3687/4724/5206 3690/4729/5207 +f 3682/4730/5207 3681/4731/5206 3687/4724/5206 +f 3682/4732/5208 3690/4733/5208 3686/4734/5208 +f 3679/4735/5208 3682/4732/5208 3686/4734/5208 +f 3678/4711/5209 3677/4710/5210 3685/4736/5211 +f 3689/4737/5212 3678/4711/5209 3685/4736/5211 +f 3689/4737/5212 3685/4736/5211 3686/4738/5213 +f 3690/4739/5213 3689/4737/5212 3686/4738/5213 +f 3691/4708/5214 3692/4709/5215 3693/4710/5216 +f 3694/4711/5217 3691/4708/5214 3693/4710/5216 +f 3695/2741/5218 3696/2740/5218 3697/2739/5218 +f 3698/2742/5218 3695/2741/5218 3697/2739/5218 +f 3692/2745/5219 3699/2744/5219 3700/2743/5219 +f 3693/2746/5219 3692/2745/5219 3700/2743/5219 +f 3701/2747/5219 3693/2746/5219 3700/2743/5219 +f 3702/2748/5219 3701/2747/5219 3700/2743/5219 +f 3702/2748/5219 3700/2743/5219 3695/2749/5219 +f 3700/2743/5219 3696/2750/5219 3695/2749/5219 +f 3703/2752/5220 3704/2751/5220 3691/2753/5220 +f 3694/2754/5220 3703/2752/5220 3691/2753/5220 +f 3703/2752/5220 3694/2754/5220 3705/2755/5221 +f 3703/2752/5220 3705/2755/5221 3706/2756/5221 +f 3698/2757/5220 3703/2752/5220 3706/2756/5221 +f 3698/2757/5220 3697/2758/5220 3703/2752/5220 +f 3698/4732/5222 3706/4733/5222 3702/4734/5222 +f 3695/4735/5222 3698/4732/5222 3702/4734/5222 +f 3694/4711/5223 3693/4710/5224 3701/4736/5225 +f 3705/4737/5226 3694/4711/5223 3701/4736/5225 +f 3705/4737/5226 3701/4736/5225 3702/4738/5227 +f 3706/4739/5228 3705/4737/5226 3702/4738/5227 +f 3707/4708/5229 3708/4709/5229 3709/4710/5230 +f 3710/4711/5230 3707/4708/5229 3709/4710/5230 +f 3711/2741/3571 3712/2740/178 3713/2739/178 +f 3714/2742/3571 3711/2741/3571 3713/2739/178 +f 3708/2745/5231 3715/2744/5231 3716/2743/5231 +f 3709/2746/5232 3708/2745/5231 3716/2743/5231 +f 3717/2747/5233 3709/2746/5232 3716/2743/5231 +f 3718/2748/5233 3717/2747/5233 3716/2743/5231 +f 3718/2748/5233 3716/2743/5231 3711/2749/5232 +f 3716/2743/5231 3712/2750/5231 3711/2749/5232 +f 3719/2752/5234 3720/2751/5234 3707/2753/5234 +f 3710/2754/5234 3719/2752/5234 3707/2753/5234 +f 3719/2752/5234 3710/2754/5234 3721/2755/5234 +f 3719/2752/5234 3721/2755/5234 3722/2756/5234 +f 3714/2757/5234 3719/2752/5234 3722/2756/5234 +f 3714/2757/5234 3713/2758/5234 3719/2752/5234 +f 3714/4732/5235 3722/4733/5236 3718/4734/5235 +f 3711/4735/5235 3714/4732/5235 3718/4734/5235 +f 3710/4711/5237 3709/4710/5238 3717/4736/5239 +f 3721/4737/5240 3710/4711/5237 3717/4736/5239 +f 3721/4737/5240 3717/4736/5239 3718/4738/5241 +f 3722/4739/5242 3721/4737/5240 3718/4738/5241 +f 3723/4708/5243 3724/4709/5243 3725/4710/5244 +f 3726/4711/5244 3723/4708/5243 3725/4710/5244 +f 3727/2741/5245 3728/2740/5246 3729/2739/5246 +f 3730/2742/5245 3727/2741/5245 3729/2739/5246 +f 3724/2745/5247 3731/2744/5247 3732/2743/5248 +f 3725/2746/5248 3724/2745/5247 3732/2743/5248 +f 3733/2747/5248 3725/2746/5248 3732/2743/5248 +f 3734/2748/5248 3733/2747/5248 3732/2743/5248 +f 3734/2748/5248 3732/2743/5248 3727/2749/5248 +f 3732/2743/5248 3728/2750/5247 3727/2749/5248 +f 3735/2752/5249 3736/2751/5249 3723/2753/5249 +f 3726/2754/5250 3735/2752/5249 3723/2753/5249 +f 3735/2752/5249 3726/2754/5250 3737/2755/5250 +f 3735/2752/5249 3737/2755/5250 3738/2756/5250 +f 3730/2757/5250 3735/2752/5249 3738/2756/5250 +f 3730/2757/5250 3729/2758/5251 3735/2752/5249 +f 3730/4732/5252 3738/4733/5253 3734/4734/5252 +f 3727/4735/5254 3730/4732/5252 3734/4734/5252 +f 3726/4711/5255 3725/4710/5256 3733/4736/5257 +f 3737/4737/5258 3726/4711/5255 3733/4736/5257 +f 3737/4737/5258 3733/4736/5257 3734/4738/5259 +f 3738/4739/5260 3737/4737/5258 3734/4738/5259 +f 3739/4504/5261 3740/4505/5038 3741/4506/5262 +f 3742/4507/5040 3739/4504/5261 3741/4506/5262 +f 3743/4508/5041 3742/4507/5040 3741/4506/5262 +f 3744/4509/5042 3743/4508/5041 3741/4506/5262 +f 3739/4504/5261 3742/4507/5040 3745/4510/5043 +f 3743/4508/5041 3744/4509/5042 3746/4511/5044 +f 3747/4512/5045 3743/4508/5041 3746/4511/5044 +f 3742/4507/5040 3743/4508/5041 3748/4513/5046 +f 3745/4510/5043 3742/4507/5040 3748/4513/5046 +f 3747/4512/5045 3746/4511/5044 3749/4514/5047 +f 3743/4508/5041 3747/4512/5045 3750/4515/5048 +f 3748/4513/5046 3743/4508/5041 3750/4515/5048 +f 3751/4516/5049 3739/4504/5261 3745/4510/5043 +f 3752/4517/5050 3747/4512/5045 3749/4514/5047 +f 3750/4515/5048 3747/4512/5045 3753/4518/5051 +f 3747/4512/5045 3752/4517/5050 3753/4518/5051 +f 3752/4517/5050 3749/4514/5047 3754/4519/5052 +f 3745/4510/5043 3748/4513/5046 3755/4520/5053 +f 3748/4513/5046 3750/4515/5048 3756/4521/5054 +f 3755/4520/5053 3748/4513/5046 3756/4521/5054 +f 3751/4516/5049 3745/4510/5043 3757/4522/5055 +f 3757/4522/5055 3745/4510/5043 3755/4520/5053 +f 3750/4515/5048 3753/4518/5051 3758/4523/5056 +f 3756/4521/5054 3750/4515/5048 3758/4523/5056 +f 3753/4518/5051 3752/4517/5050 3759/4524/5057 +f 3758/4523/5056 3753/4518/5051 3760/4525/3174 +f 3753/4518/5051 3759/4524/5057 3760/4525/3174 +f 3761/4526/3218 3751/4516/5049 3757/4522/5055 +f 3757/4522/5055 3755/4520/5053 3762/4527/5059 +f 3761/4526/3218 3757/4522/5055 3762/4527/5059 +f 3755/4520/5053 3756/4521/5054 3763/4528/5060 +f 3756/4521/5054 3758/4523/5056 3763/4528/5060 +f 3755/4520/5053 3764/4529/5061 3762/4527/5059 +f 3764/4529/5061 3755/4520/5053 3763/4528/5060 +f 3758/4523/5056 3760/4525/3174 3765/4530/5062 +f 3758/4523/5056 3766/4531/5063 3763/4528/5060 +f 3766/4531/5063 3758/4523/5056 3765/4530/5062 +f 3767/4532/5064 3761/4526/3218 3762/4527/5059 +f 3764/4529/5061 3768/4533/5065 3762/4527/5059 +f 3768/4533/5065 3764/4529/5061 3763/4528/5060 +f 3769/4534/5066 3767/4532/5064 3762/4527/5059 +f 3770/4535/5067 3769/4534/5066 3762/4527/5059 +f 3768/4533/5065 3770/4535/5067 3762/4527/5059 +f 3771/4536/5068 3763/4528/5060 3766/4531/5063 +f 3771/4536/5068 3768/4533/5065 3763/4528/5060 +f 3772/4537/5069 3766/4531/5063 3765/4530/5062 +f 3772/4537/5069 3771/4536/5068 3766/4531/5063 +f 3770/4535/5067 3773/4538/5070 3769/4534/5066 +f 3768/4533/5065 3774/4539/5071 3770/4535/5067 +f 3774/4539/5071 3773/4538/5070 3770/4535/5067 +f 3775/4540/5072 3772/4537/5069 3765/4530/5062 +f 3771/4536/5068 3776/4541/5073 3768/4533/5065 +f 3776/4541/5073 3774/4539/5071 3768/4533/5065 +f 3772/4537/5069 3777/4542/5074 3771/4536/5068 +f 3777/4542/5074 3776/4541/5073 3771/4536/5068 +f 3777/4542/5074 3772/4537/5069 3775/4540/5072 +f 3773/4538/5070 3778/4543/5263 3769/4534/5066 +f 3779/4544/5076 3773/4538/5070 3774/4539/5071 +f 3773/4538/5070 3779/4544/5076 3778/4543/5263 +f 3774/4539/5071 3776/4541/5073 3780/4545/5077 +f 3780/4545/5077 3779/4544/5076 3774/4539/5071 +f 3776/4541/5073 3777/4542/5074 3781/4546/5078 +f 3776/4541/5073 3781/4546/5078 3780/4545/5077 +f 3782/4547/5079 3777/4542/5074 3775/4540/5072 +f 3777/4542/5074 3783/4548/5080 3781/4546/5078 +f 3783/4548/5080 3777/4542/5074 3782/4547/5079 +f 3779/4544/5076 3784/4549/5264 3778/4543/5263 +f 3780/4545/5077 3785/4550/3226 3779/4544/5076 +f 3785/4550/3226 3780/4545/5077 3781/4546/5078 +f 3786/4551/5082 3784/4549/5264 3779/4544/5076 +f 3787/4552/5265 3786/4551/5082 3779/4544/5076 +f 3785/4550/3226 3787/4552/5265 3779/4544/5076 +f 3783/4548/5080 3788/4553/3229 3781/4546/5078 +f 3789/4554/5084 3783/4548/5080 3782/4547/5079 +f 3788/4553/3229 3783/4548/5080 3789/4554/5084 +f 3790/4555/3228 3785/4550/3226 3781/4546/5078 +f 3788/4553/3229 3790/4555/3228 3781/4546/5078 +f 3787/4552/5265 3791/4556/5085 3786/4551/5082 +f 3791/4556/5085 3787/4552/5265 3785/4550/3226 +f 3785/4550/3226 3790/4555/3228 3792/4557/3232 +f 3790/4555/3228 3788/4553/3229 3792/4557/3232 +f 3793/4558/5086 3791/4556/5085 3785/4550/3226 +f 3793/4558/5086 3785/4550/3226 3792/4557/3232 +f 3791/4556/5085 3794/4559/5087 3786/4551/5082 +f 3795/4560/3249 3788/4553/3229 3789/4554/5084 +f 3788/4553/3229 3796/4561/3236 3792/4557/3232 +f 3797/4562/3245 3796/4561/3236 3788/4553/3229 +f 3795/4560/3249 3797/4562/3245 3788/4553/3229 +f 3793/4558/5086 3798/4563/5088 3791/4556/5085 +f 3799/4564/5089 3782/4547/5079 3775/4540/5072 +f 3794/4559/5087 3791/4556/5085 3800/4565/5090 +f 3793/4558/5086 3792/4557/3232 3801/4566/3241 +f 3798/4563/5088 3793/4558/5086 3801/4566/3241 +f 3791/4556/5085 3802/4567/5091 3800/4565/5090 +f 3798/4563/5088 3802/4567/5091 3791/4556/5085 +f 3796/4561/3236 3803/4568/3243 3792/4557/3232 +f 3803/4568/3243 3801/4566/3241 3792/4557/3232 +f 3804/4569/5092 3789/4554/5084 3782/4547/5079 +f 3799/4564/5089 3804/4569/5092 3782/4547/5079 +f 3796/4561/3236 3797/4562/3245 3805/4570/3250 +f 3803/4568/3243 3796/4561/3236 3805/4570/3250 +f 3806/4571/5093 3795/4560/3249 3789/4554/5084 +f 3797/4562/3245 3795/4560/3249 3806/4571/5093 +f 3804/4569/5092 3806/4571/5093 3789/4554/5084 +f 3800/4565/5090 3802/4567/5091 3807/4572/5094 +f 3802/4567/5091 3798/4563/5088 3808/4573/5266 +f 3802/4567/5091 3808/4573/5266 3807/4572/5094 +f 3798/4563/5088 3801/4566/3241 3809/4574/3247 +f 3798/4563/5088 3809/4574/3247 3808/4573/5266 +f 3810/4575/5097 3805/4570/3250 3797/4562/3245 +f 3801/4566/3241 3803/4568/3243 3811/4576/3248 +f 3801/4566/3241 3811/4576/3248 3809/4574/3247 +f 3803/4568/3243 3805/4570/3250 3812/4577/3251 +f 3803/4568/3243 3812/4577/3251 3811/4576/3248 +f 3813/4578/5267 3810/4575/5097 3797/4562/3245 +f 3813/4578/5267 3797/4562/3245 3806/4571/5093 +f 3805/4570/3250 3814/4579/3255 3812/4577/3251 +f 3805/4570/3250 3810/4575/5097 3814/4579/3255 +f 3810/4575/5097 3815/4580/5099 3814/4579/3255 +f 3810/4575/5097 3813/4578/5267 3816/4581/5100 +f 3810/4575/5097 3816/4581/5100 3815/4580/5099 +f 3817/4582/5101 3813/4578/5267 3806/4571/5093 +f 3813/4578/5267 3817/4582/5101 3816/4581/5100 +f 3818/4583/5102 3817/4582/5101 3806/4571/5093 +f 3818/4583/5102 3806/4571/5093 3819/4584/5103 +f 3806/4571/5093 3804/4569/5092 3819/4584/5103 +f 3816/4581/5100 3820/4585/5104 3815/4580/5099 +f 3821/4586/5105 3752/4517/5050 3754/4519/5052 +f 3752/4517/5050 3821/4586/5105 3759/4524/5057 +f 3822/4587/5106 3816/4581/5100 3817/4582/5101 +f 3816/4581/5100 3822/4587/5106 3820/4585/5104 +f 3817/4582/5101 3818/4583/5102 3823/4588/3267 +f 3823/4588/3267 3818/4583/5102 3819/4584/5103 +f 3759/4524/5057 3824/4589/5107 3760/4525/3174 +f 3759/4524/5057 3821/4586/5105 3824/4589/5107 +f 3825/4590/5268 3822/4587/5106 3817/4582/5101 +f 3825/4590/5268 3817/4582/5101 3823/4588/3267 +f 3819/4584/5103 3804/4569/5092 3826/4591/5108 +f 3804/4569/5092 3799/4564/5089 3826/4591/5108 +f 3827/4592/5109 3823/4588/3267 3819/4584/5103 +f 3827/4592/5109 3819/4584/5103 3826/4591/5108 +f 3760/4525/3174 3828/4593/3168 3765/4530/5062 +f 3824/4589/5107 3828/4593/3168 3760/4525/3174 +f 3822/4587/5106 3829/4594/5110 3820/4585/5104 +f 3825/4590/5268 3830/4595/3270 3822/4587/5106 +f 3830/4595/3270 3825/4590/5268 3823/4588/3267 +f 3831/4596/5111 3829/4594/5110 3822/4587/5106 +f 3832/4597/3272 3831/4596/5111 3822/4587/5106 +f 3830/4595/3270 3832/4597/3272 3822/4587/5106 +f 3823/4588/3267 3827/4592/5109 3833/4598/5112 +f 3834/4599/3164 3827/4592/5109 3826/4591/5108 +f 3835/4600/3274 3830/4595/3270 3823/4588/3267 +f 3835/4600/3274 3823/4588/3267 3833/4598/5112 +f 3775/4540/5072 3765/4530/5062 3836/4601/5114 +f 3828/4593/3168 3836/4601/5114 3765/4530/5062 +f 3833/4598/5112 3827/4592/5109 3837/4602/5115 +f 3827/4592/5109 3834/4599/3164 3837/4602/5115 +f 3838/4603/3275 3831/4596/5111 3832/4597/3272 +f 3830/4595/3270 3839/4604/3276 3832/4597/3272 +f 3830/4595/3270 3835/4600/3274 3840/4605/5116 +f 3840/4605/5116 3835/4600/3274 3833/4598/5112 +f 3839/4604/3276 3830/4595/3270 3840/4605/5116 +f 3841/4606/3278 3838/4603/3275 3832/4597/3272 +f 3839/4604/3276 3841/4606/3278 3832/4597/3272 +f 3842/4607/5117 3833/4598/5112 3837/4602/5115 +f 3842/4607/5117 3840/4605/5116 3833/4598/5112 +f 3837/4602/5115 3834/4599/3164 3843/4608/5118 +f 3844/4609/5119 3842/4607/5117 3837/4602/5115 +f 3844/4609/5119 3837/4602/5115 3843/4608/5118 +f 3838/4603/3275 3841/4606/3278 3845/4610/3280 +f 3839/4604/3276 3846/4611/3281 3841/4606/3278 +f 3846/4611/3281 3839/4604/3276 3840/4605/5116 +f 3841/4606/3278 3847/4612/3282 3845/4610/3280 +f 3846/4611/3281 3847/4612/3282 3841/4606/3278 +f 3840/4605/5116 3842/4607/5117 3848/4613/5120 +f 3848/4613/5120 3842/4607/5117 3844/4609/5119 +f 3849/4614/3284 3846/4611/3281 3840/4605/5116 +f 3849/4614/3284 3840/4605/5116 3848/4613/5120 +f 3850/4615/5121 3844/4609/5119 3843/4608/5118 +f 3851/4616/5122 3848/4613/5120 3844/4609/5119 +f 3851/4616/5122 3844/4609/5119 3850/4615/5121 +f 3852/4617/3285 3845/4610/3280 3847/4612/3282 +f 3846/4611/3281 3853/4618/3286 3847/4612/3282 +f 3846/4611/3281 3849/4614/3284 3854/4619/3287 +f 3854/4619/3287 3849/4614/3284 3848/4613/5120 +f 3853/4618/3286 3846/4611/3281 3854/4619/3287 +f 3855/4620/3288 3852/4617/3285 3847/4612/3282 +f 3853/4618/3286 3855/4620/3288 3847/4612/3282 +f 3856/4621/5123 3799/4564/5089 3775/4540/5072 +f 3856/4621/5123 3775/4540/5072 3836/4601/5114 +f 3857/4622/5124 3848/4613/5120 3851/4616/5122 +f 3857/4622/5124 3854/4619/3287 3848/4613/5120 +f 3858/4623/5125 3851/4616/5122 3850/4615/5121 +f 3859/4624/5126 3857/4622/5124 3851/4616/5122 +f 3859/4624/5126 3851/4616/5122 3858/4623/5125 +f 3852/4617/3285 3855/4620/3288 3860/4625/3289 +f 3853/4618/3286 3861/4626/3290 3855/4620/3288 +f 3861/4626/3290 3853/4618/3286 3854/4619/3287 +f 3855/4620/3288 3862/4627/3291 3860/4625/3289 +f 3861/4626/3290 3862/4627/3291 3855/4620/3288 +f 3854/4619/3287 3857/4622/5124 3863/4628/5127 +f 3863/4628/5127 3857/4622/5124 3859/4624/5126 +f 3864/4629/3292 3861/4626/3290 3854/4619/3287 +f 3864/4629/3292 3854/4619/3287 3863/4628/5127 +f 3865/4630/5128 3859/4624/5126 3858/4623/5125 +f 3866/4631/5129 3863/4628/5127 3859/4624/5126 +f 3866/4631/5129 3859/4624/5126 3865/4630/5128 +f 3867/4632/3294 3860/4625/3289 3862/4627/3291 +f 3861/4626/3290 3868/4633/5130 3862/4627/3291 +f 3861/4626/3290 3864/4629/3292 3869/4634/3295 +f 3869/4634/3295 3864/4629/3292 3863/4628/5127 +f 3868/4633/5130 3861/4626/3290 3869/4634/3295 +f 3870/4635/5131 3867/4632/3294 3862/4627/3291 +f 3868/4633/5130 3870/4635/5131 3862/4627/3291 +f 3826/4591/5108 3799/4564/5089 3871/4636/5132 +f 3834/4599/3164 3826/4591/5108 3871/4636/5132 +f 3799/4564/5089 3856/4621/5123 3871/4636/5132 +f 3863/4628/5127 3866/4631/5129 3872/4637/5133 +f 3873/4638/5134 3869/4634/3295 3863/4628/5127 +f 3873/4638/5134 3863/4628/5127 3872/4637/5133 +f 3867/4632/3294 3870/4635/5131 3874/4639/5135 +f 3868/4633/5130 3875/4640/5136 3870/4635/5131 +f 3875/4640/5136 3868/4633/5130 3869/4634/3295 +f 3870/4635/5131 3876/4641/3300 3874/4639/5135 +f 3875/4640/5136 3876/4641/3300 3870/4635/5131 +f 3834/4599/3164 3877/4642/5137 3843/4608/5118 +f 3877/4642/5137 3834/4599/3164 3871/4636/5132 +f 3872/4637/5133 3866/4631/5129 3878/4643/5138 +f 3869/4634/3295 3873/4638/5134 3879/4644/5139 +f 3879/4644/5139 3873/4638/5134 3872/4637/5133 +f 3880/4645/5269 3866/4631/5129 3865/4630/5128 +f 3866/4631/5129 3880/4645/5269 3878/4643/5138 +f 3881/4646/5141 3875/4640/5136 3869/4634/3295 +f 3881/4646/5141 3869/4634/3295 3879/4644/5139 +f 3858/4623/5125 3882/4647/5270 3865/4630/5128 +f 3850/4615/5121 3843/4608/5118 3883/4648/5143 +f 3843/4608/5118 3877/4642/5137 3883/4648/5143 +f 3884/4649/5144 3879/4644/5139 3872/4637/5133 +f 3884/4649/5144 3872/4637/5133 3878/4643/5138 +f 3807/4650/5271 3874/4639/5135 3876/4641/3300 +f 3800/4651/5146 3876/4641/3300 3875/4640/5136 +f 3800/4651/5146 3807/4650/5271 3876/4641/3300 +f 3850/4615/5121 3885/4652/5147 3858/4623/5125 +f 3885/4652/5147 3882/4647/5270 3858/4623/5125 +f 3885/4652/5147 3850/4615/5121 3883/4648/5143 +f 3875/4640/5136 3881/4646/5141 3786/4653/5148 +f 3786/4653/5148 3881/4646/5141 3879/4644/5139 +f 3794/4654/5272 3800/4651/5146 3875/4640/5136 +f 3794/4654/5272 3875/4640/5136 3786/4653/5148 +f 3784/4655/5150 3879/4644/5139 3884/4649/5144 +f 3784/4655/5150 3786/4653/5148 3879/4644/5139 +f 3886/4656/5151 3884/4649/5144 3878/4643/5138 +f 3778/4657/5152 3784/4655/5150 3884/4649/5144 +f 3778/4657/5152 3884/4649/5144 3886/4656/5151 +f 3865/4630/5128 3887/4658/3131 3880/4645/5269 +f 3882/4647/5270 3887/4658/3131 3865/4630/5128 +f 3821/4586/5105 3754/4519/5052 3888/4659/5153 +f 3878/4643/5138 3889/4660/5273 3886/4656/5151 +f 3890/4661/5155 3889/4660/5273 3878/4643/5138 +f 3880/4645/5269 3890/4661/5155 3878/4643/5138 +f 3887/4658/3131 3890/4661/5155 3880/4645/5269 +f 3769/4662/5156 3778/4657/5152 3886/4656/5151 +f 3889/4660/5273 3891/4663/5157 3886/4656/5151 +f 3769/4662/5156 3886/4656/5151 3767/4664/5158 +f 3886/4656/5151 3891/4663/5157 3767/4664/5158 +f 3892/4665/5274 3889/4660/5273 3890/4661/5155 +f 3889/4660/5273 3892/4665/5274 3891/4663/5157 +f 3893/4666/3124 3892/4665/5274 3890/4661/5155 +f 3894/4667/5160 3893/4666/3124 3890/4661/5155 +f 3887/4658/3131 3894/4667/5160 3890/4661/5155 +f 3894/4667/5160 3887/4658/3131 3882/4647/5270 +f 3761/4668/5161 3767/4664/5158 3891/4663/5157 +f 3892/4665/5274 3895/4669/5162 3891/4663/5157 +f 3895/4669/5162 3761/4668/5161 3891/4663/5157 +f 3896/4670/5163 3892/4665/5274 3893/4666/3124 +f 3892/4665/5274 3896/4670/5163 3895/4669/5162 +f 3894/4667/5160 3897/4671/5164 3893/4666/3124 +f 3898/4672/5165 3896/4670/5163 3893/4666/3124 +f 3897/4671/5164 3898/4672/5165 3893/4666/3124 +f 3899/4673/5275 3894/4667/5160 3882/4647/5270 +f 3894/4667/5160 3899/4673/5275 3897/4671/5164 +f 3751/4674/5166 3761/4668/5161 3895/4669/5162 +f 3896/4670/5163 3900/4675/5167 3895/4669/5162 +f 3900/4675/5167 3751/4674/5166 3895/4669/5162 +f 3898/4672/5165 3901/4676/5168 3896/4670/5163 +f 3897/4671/5164 3902/4677/5169 3898/4672/5165 +f 3902/4677/5169 3901/4676/5168 3898/4672/5165 +f 3896/4670/5163 3903/4678/5170 3900/4675/5167 +f 3901/4676/5168 3903/4678/5170 3896/4670/5163 +f 3899/4673/5275 3904/4679/5171 3897/4671/5164 +f 3905/4680/5172 3902/4677/5169 3897/4671/5164 +f 3904/4679/5171 3905/4680/5172 3897/4671/5164 +f 3900/4675/5167 3906/4681/5173 3751/4674/5166 +f 3903/4678/5170 3906/4681/5173 3900/4675/5167 +f 3907/4682/5174 3899/4673/5275 3882/4647/5270 +f 3885/4652/5147 3907/4682/5174 3882/4647/5270 +f 3907/4682/5174 3885/4652/5147 3883/4648/5143 +f 3903/4678/5170 3901/4676/5168 3908/4683/5175 +f 3906/4681/5173 3903/4678/5170 3909/4684/5176 +f 3903/4678/5170 3908/4683/5175 3909/4684/5176 +f 3901/4676/5168 3902/4677/5169 3910/4685/5177 +f 3901/4676/5168 3910/4685/5177 3908/4683/5175 +f 3906/4681/5173 3739/4686/5178 3751/4674/5166 +f 3902/4677/5169 3905/4680/5172 3911/4687/5179 +f 3902/4677/5169 3911/4687/5179 3910/4685/5177 +f 3912/4688/5180 3904/4679/5171 3899/4673/5275 +f 3907/4682/5174 3912/4688/5180 3899/4673/5275 +f 3913/4689/5181 3905/4680/5172 3904/4679/5171 +f 3912/4688/5180 3913/4689/5181 3904/4679/5171 +f 3906/4681/5173 3909/4684/5176 3740/4690/5182 +f 3739/4686/5178 3906/4681/5173 3740/4690/5182 +f 3905/4680/5172 3914/4691/5183 3911/4687/5179 +f 3905/4680/5172 3913/4689/5181 3914/4691/5183 +f 3913/4689/5181 3915/4692/5184 3914/4691/5183 +f 3916/4693/5185 3913/4689/5181 3912/4688/5180 +f 3915/4692/5184 3913/4689/5181 3917/4694/5186 +f 3913/4689/5181 3916/4693/5185 3917/4694/5186 +f 3918/4695/5187 3912/4688/5180 3907/4682/5174 +f 3918/4695/5187 3916/4693/5185 3912/4688/5180 +f 3919/4696/5276 3918/4695/5187 3907/4682/5174 +f 3919/4696/5276 3907/4682/5174 3883/4648/5143 +f 3916/4693/5185 3920/4697/5189 3917/4694/5186 +f 3920/4697/5189 3916/4693/5185 3918/4695/5187 +f 3921/4698/5190 3918/4695/5187 3919/4696/5276 +f 3921/4698/5190 3920/4697/5189 3918/4695/5187 +f 3922/4699/3155 3919/4696/5276 3883/4648/5143 +f 3922/4699/3155 3921/4698/5190 3919/4696/5276 +f 3920/4697/5189 3923/4700/5191 3917/4694/5186 +f 3924/4701/3157 3922/4699/3155 3883/4648/5143 +f 3877/4642/5137 3924/4701/3157 3883/4648/5143 +f 3925/4702/5192 3920/4697/5189 3921/4698/5190 +f 3920/4697/5189 3925/4702/5192 3923/4700/5191 +f 3921/4698/5190 3922/4699/3155 3926/4703/5193 +f 3828/4593/3168 3824/4589/5107 3926/4703/5193 +f 3927/4704/5194 3925/4702/5192 3921/4698/5190 +f 3927/4704/5194 3921/4698/5190 3926/4703/5193 +f 3824/4589/5107 3927/4704/5194 3926/4703/5193 +f 3922/4699/3155 3924/4701/3157 3928/4705/5195 +f 3928/4705/5195 3924/4701/3157 3877/4642/5137 +f 3926/4703/5193 3922/4699/3155 3928/4705/5195 +f 3871/4636/5132 3928/4705/5195 3877/4642/5137 +f 3828/4593/3168 3926/4703/5193 3928/4705/5195 +f 3871/4636/5132 3856/4621/5123 3928/4705/5195 +f 3836/4601/5114 3828/4593/3168 3928/4705/5195 +f 3856/4621/5123 3836/4601/5114 3928/4705/5195 +f 3925/4702/5192 3929/4706/5196 3923/4700/5191 +f 3930/4707/5197 3925/4702/5192 3927/4704/5194 +f 3925/4702/5192 3930/4707/5197 3929/4706/5196 +f 3824/4589/5107 3930/4707/5197 3927/4704/5194 +f 3930/4707/5197 3888/4659/5153 3929/4706/5196 +f 3821/4586/5105 3930/4707/5197 3824/4589/5107 +f 3930/4707/5197 3821/4586/5105 3888/4659/5153 +f 3931/4708/5198 3932/4709/5199 3933/4710/5200 +f 3934/4711/5200 3931/4708/5198 3933/4710/5200 +f 3935/2741/5201 3936/2740/5201 3937/2739/5201 +f 3938/2742/5201 3935/2741/5201 3937/2739/5201 +f 3932/2745/5204 3939/2744/5204 3940/2743/5203 +f 3933/2746/5203 3932/2745/5204 3940/2743/5203 +f 3941/2747/5205 3933/2746/5203 3940/2743/5203 +f 3942/2748/5205 3941/2747/5205 3940/2743/5203 +f 3942/2748/5205 3940/2743/5203 3935/2749/5205 +f 3940/2743/5203 3936/2750/5203 3935/2749/5205 +f 3943/2752/5206 3944/2751/5207 3931/2753/5207 +f 3934/2754/5207 3943/2752/5206 3931/2753/5207 +f 3943/2752/5206 3934/2754/5207 3945/2755/5207 +f 3943/2752/5206 3945/2755/5207 3946/2756/5207 +f 3938/2757/5207 3943/2752/5206 3946/2756/5207 +f 3938/2757/5207 3937/2758/5206 3943/2752/5206 +f 3938/4732/5208 3946/4733/5208 3942/4734/5208 +f 3935/4735/5208 3938/4732/5208 3942/4734/5208 +f 3934/4711/5209 3933/4710/5210 3941/4736/5211 +f 3945/4737/5277 3934/4711/5209 3941/4736/5211 +f 3945/4737/5277 3941/4736/5211 3942/4738/5213 +f 3946/4739/5213 3945/4737/5277 3942/4738/5213 +f 3947/4708/5278 3948/4709/5278 3949/4710/5217 +f 3950/4711/5217 3947/4708/5278 3949/4710/5217 +f 3951/2741/5218 3952/2740/5279 3953/2739/5279 +f 3954/2742/5218 3951/2741/5218 3953/2739/5279 +f 3948/2745/5219 3955/2744/5219 3956/2743/5219 +f 3949/2746/5219 3948/2745/5219 3956/2743/5219 +f 3957/2747/5219 3949/2746/5219 3956/2743/5219 +f 3958/2748/5219 3957/2747/5219 3956/2743/5219 +f 3958/2748/5219 3956/2743/5219 3951/2749/5219 +f 3956/2743/5219 3952/2750/5219 3951/2749/5219 +f 3959/2752/5220 3960/2751/5220 3947/2753/5220 +f 3950/2754/5220 3959/2752/5220 3947/2753/5220 +f 3959/2752/5220 3950/2754/5220 3961/2755/5221 +f 3959/2752/5220 3961/2755/5221 3962/2756/5280 +f 3954/2757/5220 3959/2752/5220 3962/2756/5280 +f 3954/2757/5220 3953/2758/5220 3959/2752/5220 +f 3954/4732/5222 3962/4733/5222 3958/4734/5222 +f 3951/4735/5222 3954/4732/5222 3958/4734/5222 +f 3950/4711/5223 3949/4710/5224 3957/4736/5225 +f 3961/4737/5226 3950/4711/5223 3957/4736/5225 +f 3961/4737/5226 3957/4736/5225 3958/4738/5227 +f 3962/4739/5228 3961/4737/5226 3958/4738/5227 +f 3963/4708/5229 3964/4709/5229 3965/4710/5281 +f 3966/4711/5230 3963/4708/5229 3965/4710/5281 +f 3967/2741/178 3968/2740/178 3969/2739/178 +f 3970/2742/178 3967/2741/178 3969/2739/178 +f 3964/2745/5231 3971/2744/5231 3972/2743/5231 +f 3965/2746/5232 3964/2745/5231 3972/2743/5231 +f 3973/2747/5232 3965/2746/5232 3972/2743/5231 +f 3974/2748/5232 3973/2747/5232 3972/2743/5231 +f 3974/2748/5232 3972/2743/5231 3967/2749/5232 +f 3972/2743/5231 3968/2750/5231 3967/2749/5232 +f 3975/2752/5234 3976/2751/5234 3963/2753/5234 +f 3966/2754/5234 3975/2752/5234 3963/2753/5234 +f 3975/2752/5234 3966/2754/5234 3977/2755/5234 +f 3975/2752/5234 3977/2755/5234 3978/2756/5234 +f 3970/2757/5234 3975/2752/5234 3978/2756/5234 +f 3970/2757/5234 3969/2758/5234 3975/2752/5234 +f 3970/4732/5235 3978/4733/5236 3974/4734/5235 +f 3967/4735/5235 3970/4732/5235 3974/4734/5235 +f 3966/4711/5282 3965/4710/5238 3973/4736/5283 +f 3977/4737/5284 3966/4711/5282 3973/4736/5283 +f 3977/4737/5284 3973/4736/5283 3974/4738/5241 +f 3978/4739/5242 3977/4737/5284 3974/4738/5241 +f 3979/4708/5243 3980/4709/5243 3981/4710/5244 +f 3982/4711/5244 3979/4708/5243 3981/4710/5244 +f 3983/2741/5246 3984/2740/5246 3985/2739/5246 +f 3986/2742/5246 3983/2741/5246 3985/2739/5246 +f 3980/2745/5247 3987/2744/5247 3988/2743/5248 +f 3981/2746/5248 3980/2745/5247 3988/2743/5248 +f 3989/2747/5248 3981/2746/5248 3988/2743/5248 +f 3990/2748/5248 3989/2747/5248 3988/2743/5248 +f 3990/2748/5248 3988/2743/5248 3983/2749/5248 +f 3988/2743/5248 3984/2750/5247 3983/2749/5248 +f 3991/2752/5249 3992/2751/5249 3979/2753/5249 +f 3982/2754/5249 3991/2752/5249 3979/2753/5249 +f 3991/2752/5249 3982/2754/5249 3993/2755/5250 +f 3991/2752/5249 3993/2755/5250 3994/2756/5250 +f 3986/2757/5250 3991/2752/5249 3994/2756/5250 +f 3986/2757/5250 3985/2758/5251 3991/2752/5249 +f 3986/4732/5252 3994/4733/5285 3990/4734/5252 +f 3983/4735/5254 3986/4732/5252 3990/4734/5252 +f 3982/4711/5255 3981/4710/5256 3989/4736/5257 +f 3993/4737/5286 3982/4711/5255 3989/4736/5257 +f 3993/4737/5286 3989/4736/5257 3990/4738/5259 +f 3994/4739/5259 3993/4737/5286 3990/4738/5259 +f 3995/4740/5287 3996/4741/5288 3997/4742/5289 +f 3998/4743/5290 3995/4740/5287 3997/4742/5289 +f 3995/4740/5287 3998/4743/5290 3999/4744/5291 +f 4000/4745/5292 3995/4740/5287 3999/4744/5291 +f 4000/4745/5292 3999/4744/5291 4001/4746/5293 +f 4002/4747/5294 4000/4745/5292 4001/4746/5293 +f 4002/4747/5294 4001/4746/5293 4003/4748/5295 +f 4001/4746/5293 4004/4749/5296 4003/4748/5295 +f 4005/4750/5297 4003/4748/5295 4004/4749/5296 +f 4006/4751/5298 4005/4750/5297 4004/4749/5296 +f 3997/4752/5299 3996/4753/5300 4007/4754/5301 +f 3996/4753/5300 4008/4755/5302 4007/4754/5301 +f 4007/4754/5301 4008/4755/5302 4009/4756/5303 +f 4010/4754/5304 4007/4754/5301 4009/4756/5303 +f 4010/4754/5304 4009/4756/5303 4011/4757/5305 +f 4012/4758/5306 4010/4754/5304 4011/4757/5305 +f 4011/4757/5305 4013/4759/5307 4012/4758/5306 +f 4013/4759/5307 4014/4760/5308 4012/4758/5306 +f 4015/4761/5309 4016/4762/5310 4017/4763/5311 +f 4016/4762/5310 4018/4764/5312 4017/4763/5311 +f 4016/4762/5310 4019/4765/5313 4018/4764/5312 +f 4019/4765/5313 4020/4766/5314 4018/4764/5312 +f 4019/4765/5313 4021/4767/5315 4020/4766/5314 +f 4017/4763/5311 4018/4764/5312 4022/4768/5316 +f 4021/4767/5315 4023/4769/5317 4020/4766/5314 +f 4018/4764/5312 4020/4766/5314 4024/4770/5318 +f 4022/4768/5316 4018/4764/5312 4024/4770/5318 +f 4020/4766/5314 4023/4769/5317 4025/4771/5319 +f 4024/4770/5318 4020/4766/5314 4025/4771/5319 +f 4025/4771/5319 4023/4769/5317 4026/4772/5320 +f 4027/4773/5321 4025/4771/5319 4026/4772/5320 +f 4024/4770/5318 4025/4771/5319 4027/4773/5321 +f 4028/4774/5322 4017/4763/5311 4022/4768/5316 +f 4029/4775/5323 4027/4773/5321 4026/4772/5320 +f 4030/4776/5324 4027/4773/5321 4029/4775/5323 +f 4022/4768/5316 4024/4770/5318 4031/4777/5325 +f 4031/4777/5325 4024/4770/5318 4027/4773/5321 +f 4032/4778/5326 4030/4776/5324 4029/4775/5323 +f 4030/4776/5324 4032/4778/5326 4033/4779/5327 +f 4028/4774/5322 4022/4768/5316 4034/4780/5328 +f 4034/4780/5328 4022/4768/5316 4031/4777/5325 +f 4027/4773/5321 4030/4776/5324 4035/4781/5329 +f 4031/4777/5325 4027/4773/5321 4035/4781/5329 +f 4034/4780/5328 4031/4777/5325 4035/4781/5329 +f 4036/4782/5330 4030/4776/5324 4033/4779/5327 +f 4030/4776/5324 4036/4782/5330 4035/4781/5329 +f 4036/4782/5330 4033/4779/5327 4037/4783/5331 +f 4038/4784/5332 4028/4774/5322 4034/4780/5328 +f 4039/4785/5333 4034/4780/5328 4035/4781/5329 +f 4040/4786/5334 4036/4782/5330 4037/4783/5331 +f 4040/4786/5334 4037/4783/5331 4041/4787/5335 +f 4038/4784/5332 4034/4780/5328 4042/4788/5336 +f 4034/4780/5328 4039/4785/5333 4042/4788/5336 +f 4036/4782/5330 4043/4789/5337 4035/4781/5329 +f 4039/4785/5333 4035/4781/5329 4043/4789/5337 +f 4036/4782/5330 4040/4786/5334 4044/4790/5338 +f 4043/4789/5337 4036/4782/5330 4044/4790/5338 +f 4040/4786/5334 4041/4787/5335 4045/4791/5339 +f 4044/4790/5338 4040/4786/5334 4045/4791/5339 +f 4042/4788/5336 4039/4785/5333 4046/4792/5340 +f 4046/4792/5340 4039/4785/5333 4043/4789/5337 +f 4045/4791/5339 4041/4787/5335 4021/4793/5341 +f 4047/4794/5342 4042/4788/5336 4046/4792/5340 +f 4046/4792/5340 4043/4789/5337 4048/4795/5343 +f 4043/4789/5337 4044/4790/5338 4048/4795/5343 +f 4019/4796/5344 4045/4791/5339 4021/4793/5341 +f 4045/4791/5339 4019/4796/5344 4016/4797/5345 +f 4047/4794/5342 4046/4792/5340 4049/4798/5346 +f 4046/4792/5340 4048/4795/5343 4049/4798/5346 +f 4044/4790/5338 4045/4791/5339 4050/4799/5347 +f 4050/4799/5347 4045/4791/5339 4016/4797/5345 +f 4048/4795/5343 4044/4790/5338 4050/4799/5347 +f 4051/4800/5348 4050/4799/5347 4016/4797/5345 +f 4049/4798/5346 4048/4795/5343 4051/4800/5348 +f 4048/4795/5343 4050/4799/5347 4051/4800/5348 +f 4015/4801/5349 4051/4800/5348 4016/4797/5345 +f 4052/4802/5350 4053/4803/5351 4054/4804/5352 +f 4055/4805/5353 4052/4802/5350 4054/4804/5352 +f 4055/4805/5353 4054/4804/5354 4056/4806/5355 +f 4057/4807/5356 4055/4805/5353 4056/4806/5355 +f 4058/4808/5357 4057/4807/5356 4056/4806/5355 +f 4059/4809/5358 4058/4808/5357 4056/4806/5355 +f 4060/4810/5359 4058/4808/5357 4059/4809/5358 +f 4058/4808/5357 4041/4811/5360 4057/4807/5356 +f 4061/4812/5361 4060/4810/5359 4059/4809/5358 +f 4060/4810/5359 4021/4813/5362 4058/4808/5357 +f 4021/4813/5362 4041/4811/5360 4058/4808/5357 +f 4041/4811/5360 4037/4814/5363 4057/4807/5356 +f 4026/4815/5364 4052/4816/5365 4055/4817/5366 +f 4062/4818/5367 4026/4815/5364 4055/4817/5366 +f 4062/4818/5367 4055/4817/5366 4037/4819/5368 +f 4029/4820/5369 4026/4815/5364 4062/4818/5367 +f 4055/4817/5366 4057/4821/5370 4037/4819/5368 +f 4062/4818/5367 4037/4819/5368 4033/4822/5371 +f 4032/4823/5372 4029/4820/5369 4062/4818/5367 +f 4032/4823/5372 4062/4818/5367 4033/4822/5371 +f 4063/4824/5373 4064/4825/5374 4065/4826/5375 +f 4064/4825/5374 4066/4827/5376 4065/4826/5375 +f 4066/4827/5376 4064/4825/5374 4067/4828/5377 +f 4068/4829/5378 4066/4827/5376 4067/4828/5377 +f 4069/4830/5379 4068/4829/5378 4067/4828/5377 +f 4070/4831/5380 4069/4830/5379 4067/4828/5377 +f 4071/4832/5381 4069/4830/5379 4070/4831/5380 +f 4072/4833/5382 4071/4832/5381 4070/4831/5380 +f 4071/4832/5381 4072/4833/5382 4073/4834/5383 +f 4072/4833/5382 4074/4835/5384 4073/4834/5383 +f 4074/4835/5384 4075/4836/5385 4073/4834/5383 +f 4075/4836/5385 4076/4837/5386 4073/4834/5383 +f 4076/4837/5386 4075/4836/5385 4077/4838/5387 +f 4078/4839/5388 4076/4837/5386 4077/4838/5387 +f 4077/4838/5387 4079/4840/5389 4078/4839/5388 +f 4079/4840/5389 4080/4841/5390 4078/4839/5388 +f 4080/4841/5390 4079/4840/5389 4081/4842/5391 +f 4079/4840/5389 4082/4843/5392 4081/4842/5391 +f 4083/4844/5393 4081/4842/5391 4082/4843/5392 +f 4084/4845/5394 4083/4844/5393 4082/4843/5392 +f 4085/4846/5395 4083/4844/5393 4084/4845/5394 +f 4086/4847/5396 4085/4846/5395 4084/4845/5394 +f 4087/4848/5397 4085/4846/5395 4086/4847/5396 +f 4088/4849/5398 4087/4848/5397 4086/4847/5396 +f 4088/4849/5398 4089/4850/5399 4087/4848/5397 +f 4089/4850/5399 4090/4851/5400 4087/4848/5397 +f 4089/4850/5399 4091/4852/5401 4090/4851/5400 +f 4091/4852/5401 4092/4853/5402 4090/4851/5400 +f 4065/4826/5375 4092/4853/5402 4063/4824/5403 +f 4092/4853/5402 4091/4852/5401 4063/4824/5403 +f 4060/4854/5404 4061/4855/5405 4093/4856/5406 +f 4094/4857/5407 4060/4854/5404 4093/4856/5406 +f 4094/4857/5407 4093/4856/5406 4053/4858/5408 +f 4052/4859/5409 4094/4857/5407 4053/4858/5408 +f 4021/4860/5410 4060/4854/5404 4094/4857/5407 +f 4023/4861/5411 4094/4857/5407 4052/4859/5409 +f 4023/4861/5411 4021/4860/5410 4094/4857/5407 +f 4026/4862/5412 4023/4861/5411 4052/4859/5409 +f 4095/4863/5413 4096/4864/5414 4097/4865/5415 +f 4098/4866/5416 4096/4864/5414 4095/4863/5413 +f 4099/4867/5417 4098/4866/5416 4095/4863/5413 +f 4095/4863/5413 4100/4868/5418 4099/4867/5417 +f 4098/4866/5416 4101/4869/5419 4096/4864/5414 +f 4095/4863/5413 4097/4870/5420 4100/4868/5418 +f 4099/4867/5417 4102/4871/5421 4098/4866/5416 +f 4101/4869/5419 4098/4866/5416 4102/4871/5421 +f 4100/4868/5418 4103/4872/5422 4099/4867/5417 +f 4097/4870/5420 4096/4864/5414 4104/4873/5423 +f 4101/4869/5419 4104/4873/5423 4096/4864/5414 +f 4102/4871/5421 4099/4867/5417 4105/4874/5424 +f 4099/4867/5417 4103/4872/5422 4105/4874/5424 +f 4097/4870/5420 4106/4875/5425 4100/4868/5418 +f 4103/4872/5422 4100/4868/5418 4107/4876/5426 +f 4107/4876/5426 4100/4868/5418 4106/4875/5425 +f 4097/4870/5420 4108/4877/5427 4106/4875/5425 +f 4108/4877/5427 4097/4870/5420 4104/4873/5423 +f 4109/4878/5428 4101/4869/5419 4102/4871/5421 +f 4105/4874/5424 4110/4879/5429 4102/4871/5421 +f 4110/4879/5429 4109/4878/5428 4102/4871/5421 +f 4111/4880/5430 4105/4874/5424 4103/4872/5422 +f 4111/4880/5430 4103/4872/5422 4107/4876/5426 +f 4112/4881/5431 4107/4876/5426 4106/4875/5425 +f 4107/4876/5426 4112/4881/5431 4111/4880/5430 +f 4108/4877/5427 4113/4882/5432 4106/4875/5425 +f 4113/4882/5432 4112/4881/5431 4106/4875/5425 +f 4105/4874/5424 4111/4880/5430 4114/4883/5433 +f 4110/4879/5429 4105/4874/5424 4114/4883/5433 +f 4112/4881/5431 4114/4883/5433 4111/4880/5430 +f 4115/4884/5434 4116/4885/5434 4117/4886/5434 +f 4118/4887/5434 4115/4884/5434 4117/4886/5434 +f 4116/4888/5435 4119/4889/5436 4120/4890/5437 +f 4117/4891/5438 4116/4888/5435 4120/4890/5437 +f 4120/4890/5439 4121/4892/5440 4118/4887/5441 +f 4117/4886/5442 4120/4890/5439 4118/4887/5441 +f 4118/4893/5443 4121/4892/5444 4122/4894/5445 +f 4115/4895/5446 4118/4893/5443 4122/4894/5445 +f 4115/4884/5447 4122/4896/5448 4119/4897/5449 +f 4116/4885/5450 4115/4884/5447 4119/4897/5449 +f 4123/4898/5451 4124/4898/5452 4125/4899/5453 +f 4123/4898/5451 4125/4899/5453 4126/4900/5453 +f 4123/4898/5451 4126/4900/5453 4127/4901/5453 +f 4123/4898/5451 4127/4901/5453 4128/4900/5453 +f 4123/4898/5451 4128/4900/5453 4129/4900/5453 +f 4123/4898/5451 4129/4900/5453 4130/4902/5454 +f 4123/4898/5451 4130/4902/5454 4131/4902/5455 +f 4132/4902/5456 4123/4898/5451 4131/4902/5455 +f 4133/4902/5457 4132/4902/5456 4131/4902/5455 +f 4133/4902/5457 4134/4902/5458 4132/4902/5456 +f 4126/4903/5459 4135/4904/5460 4127/4905/5461 +f 4135/4904/5460 4136/4906/5462 4127/4905/5461 +f 4136/4906/5462 4135/4904/5460 4137/4907/5463 +f 4138/4908/5464 4136/4906/5462 4137/4907/5463 +f 4138/4908/5464 4137/4907/5463 4139/4909/5465 +f 4127/4905/5461 4136/4906/5462 4128/4910/5466 +f 4140/4911/5467 4138/4908/5464 4139/4909/5465 +f 4141/4912/5468 4136/4906/5462 4138/4908/5464 +f 4136/4906/5462 4141/4912/5468 4128/4910/5466 +f 4139/4909/5465 4142/4913/5469 4140/4911/5467 +f 4142/4913/5469 4143/4914/5470 4140/4911/5467 +f 4138/4908/5464 4140/4911/5467 4144/4915/5471 +f 4145/4916/5472 4141/4912/5468 4138/4908/5464 +f 4145/4916/5472 4138/4908/5464 4144/4915/5471 +f 4143/4914/5470 4146/4917/5473 4140/4911/5467 +f 4146/4917/5473 4144/4915/5471 4140/4911/5467 +f 4128/4910/5466 4141/4912/5468 4129/4918/5474 +f 4147/4919/5475 4141/4912/5468 4145/4916/5472 +f 4141/4912/5468 4147/4919/5475 4129/4918/5474 +f 4145/4916/5472 4144/4915/5471 4148/4920/5476 +f 4149/4921/5477 4147/4919/5475 4145/4916/5472 +f 4149/4921/5477 4145/4916/5472 4148/4920/5476 +f 4146/4917/5473 4150/4922/5478 4144/4915/5471 +f 4150/4922/5478 4148/4920/5476 4144/4915/5471 +f 4129/4918/5474 4147/4919/5475 4130/4923/5479 +f 4151/4924/5480 4147/4919/5475 4149/4921/5477 +f 4147/4919/5475 4151/4924/5480 4130/4923/5479 +f 4149/4921/5477 4148/4920/5476 4152/4925/5481 +f 4153/4926/5482 4151/4924/5480 4149/4921/5477 +f 4153/4926/5482 4149/4921/5477 4152/4925/5481 +f 4150/4922/5478 4154/4927/5483 4148/4920/5476 +f 4154/4927/5483 4152/4925/5481 4148/4920/5476 +f 4130/4923/5479 4151/4924/5480 4131/4928/5484 +f 4155/4929/5485 4151/4924/5480 4153/4926/5482 +f 4151/4924/5480 4155/4929/5485 4131/4928/5484 +f 4153/4926/5482 4152/4925/5481 4156/4930/5486 +f 4157/4931/5487 4155/4929/5485 4153/4926/5482 +f 4157/4931/5487 4153/4926/5482 4156/4930/5486 +f 4154/4927/5483 4158/4932/5488 4152/4925/5481 +f 4158/4932/5488 4156/4930/5486 4152/4925/5481 +f 4131/4928/5484 4155/4929/5485 4133/4933/5489 +f 4155/4929/5485 4157/4931/5487 4159/4934/5490 +f 4155/4929/5485 4160/4935/5491 4133/4933/5489 +f 4160/4935/5491 4155/4929/5485 4159/4934/5490 +f 4157/4931/5487 4156/4930/5486 4161/4936/5492 +f 4159/4934/5490 4157/4931/5487 4161/4936/5492 +f 4158/4932/5488 4162/4937/5493 4156/4930/5486 +f 4162/4937/5493 4161/4936/5492 4156/4930/5486 +f 4160/4935/5491 4163/4938/5494 4133/4933/5489 +f 4160/4935/5491 4159/4934/5490 4164/4939/5495 +f 4163/4938/5494 4160/4935/5491 4164/4939/5495 +f 4159/4934/5490 4161/4936/5492 4165/4940/5496 +f 4164/4939/5495 4159/4934/5490 4165/4940/5496 +f 4163/4938/5494 4134/4941/5497 4133/4933/5489 +f 4162/4937/5493 4166/4942/5498 4161/4936/5492 +f 4166/4942/5498 4165/4940/5496 4161/4936/5492 +f 4163/4938/5494 4164/4939/5495 4167/4943/5499 +f 4167/4943/5499 4164/4939/5495 4165/4940/5496 +f 4163/4938/5494 4168/4944/5500 4134/4941/5497 +f 4168/4944/5500 4163/4938/5494 4167/4943/5499 +f 4165/4940/5496 4166/4942/5498 4169/4945/5501 +f 4169/4945/5501 4167/4943/5499 4165/4940/5496 +f 4166/4942/5498 4170/4946/5502 4169/4945/5501 +f 4168/4944/5500 4132/4947/5503 4134/4941/5497 +f 4169/4945/5501 4170/4946/5502 4171/4948/5504 +f 4168/4944/5500 4167/4943/5499 4172/4949/5505 +f 4172/4949/5505 4167/4943/5499 4169/4945/5501 +f 4171/4948/5504 4172/4949/5505 4169/4945/5501 +f 4170/4946/5502 4173/4950/5506 4171/4948/5504 +f 4168/4944/5500 4174/4951/5507 4132/4947/5503 +f 4174/4951/5507 4168/4944/5500 4172/4949/5505 +f 4171/4948/5504 4173/4950/5506 4175/4952/5508 +f 4176/4953/5509 4172/4949/5505 4171/4948/5504 +f 4175/4952/5508 4176/4953/5509 4171/4948/5504 +f 4174/4951/5507 4172/4949/5505 4176/4953/5509 +f 4173/4950/5506 4177/4954/5510 4175/4952/5508 +f 4174/4951/5507 4123/4955/5511 4132/4947/5503 +f 4178/4956/5512 4174/4951/5507 4176/4953/5509 +f 4174/4951/5507 4178/4956/5512 4123/4955/5511 +f 4175/4952/5508 4177/4954/5510 4179/4957/5513 +f 4177/4954/5510 4180/4958/5514 4179/4957/5513 +f 4181/4959/5515 4176/4953/5509 4175/4952/5508 +f 4179/4957/5513 4181/4959/5515 4175/4952/5508 +f 4182/4960/5516 4178/4956/5512 4176/4953/5509 +f 4181/4959/5515 4182/4960/5516 4176/4953/5509 +f 4178/4956/5512 4124/4961/5517 4123/4955/5511 +f 4178/4956/5512 4182/4960/5516 4124/4961/5517 +f 4179/4957/5513 4180/4958/5514 4139/4962/5518 +f 4137/4963/5519 4181/4959/5515 4179/4957/5513 +f 4139/4962/5518 4137/4963/5519 4179/4957/5513 +f 4180/4958/5514 4142/4964/5520 4139/4962/5518 +f 4182/4960/5516 4125/4965/5521 4124/4961/5517 +f 4135/4966/5522 4182/4960/5516 4181/4959/5515 +f 4137/4963/5519 4135/4966/5522 4181/4959/5515 +f 4182/4960/5516 4135/4966/5522 4125/4965/5521 +f 4135/4966/5522 4126/4967/5523 4125/4965/5521 +f 4183/4898/5524 4184/4898/5525 4185/4899/5526 +f 4183/4898/5524 4185/4899/5526 4186/4900/5527 +f 4183/4898/5524 4186/4900/5527 4187/4901/5528 +f 4183/4898/5524 4187/4901/5528 4188/4900/5528 +f 4183/4898/5524 4188/4900/5528 4189/4900/5527 +f 4183/4898/5524 4189/4900/5527 4190/4902/5529 +f 4183/4898/5524 4190/4902/5529 4191/4902/5530 +f 4192/4902/5531 4183/4898/5524 4191/4902/5530 +f 4193/4902/5532 4192/4902/5531 4191/4902/5530 +f 4193/4902/5532 4194/4902/5533 4192/4902/5531 +f 4186/4903/5534 4195/4904/5535 4187/4905/5536 +f 4195/4904/5535 4196/4906/5537 4187/4905/5536 +f 4196/4906/5537 4195/4904/5535 4197/4907/5538 +f 4198/4908/5539 4196/4906/5537 4197/4907/5538 +f 4198/4908/5539 4197/4907/5538 4199/4909/5540 +f 4187/4905/5536 4196/4906/5537 4188/4910/5541 +f 4200/4911/5542 4198/4908/5539 4199/4909/5540 +f 4201/4912/5543 4196/4906/5537 4198/4908/5539 +f 4196/4906/5537 4201/4912/5543 4188/4910/5541 +f 4199/4909/5540 4202/4913/5544 4200/4911/5542 +f 4202/4913/5544 4203/4914/5545 4200/4911/5542 +f 4198/4908/5539 4200/4911/5542 4204/4915/5546 +f 4205/4916/5547 4201/4912/5543 4198/4908/5539 +f 4205/4916/5547 4198/4908/5539 4204/4915/5546 +f 4203/4914/5545 4206/4917/5548 4200/4911/5542 +f 4206/4917/5548 4204/4915/5546 4200/4911/5542 +f 4188/4910/5541 4201/4912/5543 4189/4918/5549 +f 4207/4919/5550 4201/4912/5543 4205/4916/5547 +f 4201/4912/5543 4207/4919/5550 4189/4918/5549 +f 4205/4916/5547 4204/4915/5546 4208/4920/5551 +f 4209/4921/5552 4207/4919/5550 4205/4916/5547 +f 4209/4921/5552 4205/4916/5547 4208/4920/5551 +f 4206/4917/5548 4210/4922/5553 4204/4915/5546 +f 4210/4922/5553 4208/4920/5551 4204/4915/5546 +f 4189/4918/5549 4207/4919/5550 4190/4923/5554 +f 4211/4924/5555 4207/4919/5550 4209/4921/5552 +f 4207/4919/5550 4211/4924/5555 4190/4923/5554 +f 4209/4921/5552 4208/4920/5551 4212/4925/5556 +f 4213/4926/5557 4211/4924/5555 4209/4921/5552 +f 4213/4926/5557 4209/4921/5552 4212/4925/5556 +f 4210/4922/5553 4214/4927/5558 4208/4920/5551 +f 4214/4927/5558 4212/4925/5556 4208/4920/5551 +f 4190/4923/5554 4211/4924/5555 4191/4928/5559 +f 4215/4929/5560 4211/4924/5555 4213/4926/5557 +f 4211/4924/5555 4215/4929/5560 4191/4928/5559 +f 4213/4926/5557 4212/4925/5556 4216/4930/5561 +f 4217/4931/5562 4215/4929/5560 4213/4926/5557 +f 4217/4931/5562 4213/4926/5557 4216/4930/5561 +f 4214/4927/5558 4218/4932/5563 4212/4925/5556 +f 4218/4932/5563 4216/4930/5561 4212/4925/5556 +f 4191/4928/5559 4215/4929/5560 4193/4933/5564 +f 4215/4929/5560 4217/4931/5562 4219/4934/5565 +f 4215/4929/5560 4220/4935/5566 4193/4933/5564 +f 4220/4935/5566 4215/4929/5560 4219/4934/5565 +f 4217/4931/5562 4216/4930/5561 4221/4936/5567 +f 4219/4934/5565 4217/4931/5562 4221/4936/5567 +f 4218/4932/5563 4222/4937/5568 4216/4930/5561 +f 4222/4937/5568 4221/4936/5567 4216/4930/5561 +f 4220/4935/5566 4223/4938/5569 4193/4933/5564 +f 4220/4935/5566 4219/4934/5565 4224/4939/5570 +f 4223/4938/5569 4220/4935/5566 4224/4939/5570 +f 4219/4934/5565 4221/4936/5567 4225/4940/5571 +f 4224/4939/5570 4219/4934/5565 4225/4940/5571 +f 4223/4938/5569 4194/4941/5572 4193/4933/5564 +f 4222/4937/5568 4226/4942/5573 4221/4936/5567 +f 4226/4942/5573 4225/4940/5571 4221/4936/5567 +f 4223/4938/5569 4224/4939/5570 4227/4943/5574 +f 4227/4943/5574 4224/4939/5570 4225/4940/5571 +f 4223/4938/5569 4228/4944/5575 4194/4941/5572 +f 4228/4944/5575 4223/4938/5569 4227/4943/5574 +f 4225/4940/5571 4226/4942/5573 4229/4945/5576 +f 4229/4945/5576 4227/4943/5574 4225/4940/5571 +f 4226/4942/5573 4230/4946/5577 4229/4945/5576 +f 4228/4944/5575 4192/4947/5578 4194/4941/5572 +f 4229/4945/5576 4230/4946/5577 4231/4948/5579 +f 4228/4944/5575 4227/4943/5574 4232/4949/5580 +f 4232/4949/5580 4227/4943/5574 4229/4945/5576 +f 4231/4948/5579 4232/4949/5580 4229/4945/5576 +f 4230/4946/5577 4233/4950/5581 4231/4948/5579 +f 4228/4944/5575 4234/4951/5582 4192/4947/5578 +f 4234/4951/5582 4228/4944/5575 4232/4949/5580 +f 4231/4948/5579 4233/4950/5581 4235/4952/5583 +f 4236/4953/5584 4232/4949/5580 4231/4948/5579 +f 4235/4952/5583 4236/4953/5584 4231/4948/5579 +f 4234/4951/5582 4232/4949/5580 4236/4953/5584 +f 4233/4950/5581 4237/4954/5585 4235/4952/5583 +f 4234/4951/5582 4183/4955/5586 4192/4947/5578 +f 4238/4956/5587 4234/4951/5582 4236/4953/5584 +f 4234/4951/5582 4238/4956/5587 4183/4955/5586 +f 4235/4952/5583 4237/4954/5585 4239/4968/5588 +f 4237/4954/5585 4240/4969/5589 4239/4968/5588 +f 4241/4970/5590 4236/4953/5584 4235/4952/5583 +f 4239/4968/5588 4241/4970/5590 4235/4952/5583 +f 4242/4971/5591 4238/4956/5587 4236/4953/5584 +f 4241/4970/5590 4242/4971/5591 4236/4953/5584 +f 4238/4956/5587 4184/4961/5592 4183/4955/5586 +f 4238/4956/5587 4242/4971/5591 4184/4961/5592 +f 4239/4968/5588 4240/4969/5589 4199/4972/5593 +f 4197/4973/5594 4241/4970/5590 4239/4968/5588 +f 4199/4972/5593 4197/4973/5594 4239/4968/5588 +f 4240/4969/5589 4202/4974/5595 4199/4972/5593 +f 4242/4971/5591 4185/4975/5596 4184/4961/5592 +f 4195/4976/5597 4242/4971/5591 4241/4970/5590 +f 4197/4973/5594 4195/4976/5597 4241/4970/5590 +f 4242/4971/5591 4195/4976/5597 4185/4975/5596 +f 4195/4976/5597 4186/4977/5598 4185/4975/5596 +f 4243/4978/5599 4244/4979/5600 4245/4980/5601 +f 4244/4979/5600 4246/4981/5602 4245/4980/5601 +f 4245/4980/5601 4246/4981/5602 4247/4982/5603 +f 4246/4981/5602 4248/4983/5604 4247/4982/5603 +f 4247/4982/5603 4248/4983/5604 4249/4984/5605 +f 4248/4983/5604 4250/4985/5606 4249/4984/5605 +f 4249/4984/5605 4250/4985/5606 4251/4986/5607 +f 4250/4985/5606 4252/4987/5608 4251/4986/5607 +f 4251/4986/5607 4252/4987/5608 4253/4988/5609 +f 4252/4987/5608 4254/4989/5610 4253/4988/5609 +f 4253/4988/5609 4254/4989/5610 4255/4990/5611 +f 4254/4989/5610 4256/4991/5612 4255/4990/5611 +f 4256/4991/5612 4257/4992/5613 4255/4990/5611 +f 4257/4992/5613 4258/4993/5614 4255/4990/5611 +f 4257/4992/5613 4259/4994/5615 4258/4993/5614 +f 4259/4994/5615 4260/4995/5616 4258/4993/5614 +f 4259/4994/5615 4261/4996/5617 4260/4995/5616 +f 4261/4996/5617 4262/4997/5618 4260/4995/5616 +f 4261/4996/5617 4263/4998/5619 4262/4997/5618 +f 4263/4998/5619 4264/4999/5620 4262/4997/5618 +f 4263/4998/5619 4265/5000/5621 4264/4999/5620 +f 4265/5000/5621 4266/5001/5622 4264/4999/5620 +f 4265/5000/5621 4244/5002/5623 4266/5001/5622 +f 4244/5002/5623 4243/5003/5624 4266/5001/5622 +f 4267/5004/5625 4268/5005/5626 4269/5006/5627 +f 4270/5007/5628 4268/5005/5626 4267/5004/5625 +f 4271/5008/5629 4270/5007/5628 4267/5004/5625 +f 4272/5009/5630 4270/5007/5628 4271/5008/5629 +f 4273/5010/5631 4272/5009/5630 4271/5008/5629 +f 4272/5009/5630 4273/5010/5631 4274/5011/5632 +f 4275/5012/5633 4272/5009/5630 4274/5011/5632 +f 4275/5012/5633 4274/5011/5632 4276/5013/5634 +f 4277/5014/5635 4275/5012/5633 4276/5013/5634 +f 4277/5014/5635 4276/5013/5634 4278/5015/5636 +f 4279/5016/5637 4277/5014/5635 4278/5015/5636 +f 4268/5005/5626 4280/5017/5638 4269/5006/5639 +f 4269/5006/5639 4280/5017/5638 4281/5018/5640 +f 4280/5017/5638 4282/5019/5641 4281/5018/5640 +f 4281/5018/5640 4282/5019/5641 4283/5020/5642 +f 4282/5019/5641 4284/5021/5643 4283/5020/5642 +f 4283/5020/5642 4284/5021/5643 4285/5022/5644 +f 4284/5021/5643 4286/5023/5645 4285/5022/5644 +f 4286/5023/5645 4287/5024/5646 4285/5022/5644 +f 4287/5024/5646 4288/5025/5647 4285/5022/5644 +f 4287/5024/5646 4289/5026/5648 4288/5025/5647 +f 4289/5026/5648 4279/5016/5637 4290/5027/5649 +f 4289/5026/5648 4290/5027/5649 4288/5025/5647 +f 4279/5016/5637 4278/5015/5650 4290/5027/5649 +f 4287/5024/5651 4286/5023/5652 4284/5021/5653 +f 4287/5024/5651 4284/5021/5653 4282/5019/5654 +f 4287/5024/5651 4282/5019/5654 4280/5017/5654 +f 4287/5024/5651 4280/5017/5654 4268/5005/5655 +f 4287/5024/5651 4268/5005/5655 4270/5007/5656 +f 4287/5024/5651 4270/5007/5656 4272/5009/5657 +f 4287/5024/5651 4272/5009/5657 4275/5012/5658 +f 4287/5024/5651 4275/5012/5658 4277/5014/5659 +f 4287/5024/5651 4277/5014/5659 4279/5016/5660 +f 4287/5024/5651 4279/5016/5660 4289/5026/5661 +f 4291/5028/5662 4292/5029/5663 4293/5030/5664 +f 4294/5031/5665 4291/5028/5662 4293/5030/5664 +f 4295/5032/5666 4294/5031/5665 4293/5030/5664 +f 4296/5033/5667 4295/5032/5666 4293/5030/5664 +f 4297/5034/5668 4298/5035/5669 4293/5030/5664 +f 4292/5036/5670 4297/5034/5668 4293/5030/5664 +f 4298/5035/5669 4299/5037/5671 4293/5030/5672 +f 4299/5037/5671 4300/5038/5673 4293/5030/5672 +f 4300/5038/5673 4301/5039/5674 4293/5030/5672 +f 4293/5030/5672 4301/5039/5674 4302/5040/5675 +f 4303/5041/5676 4296/5033/5667 4293/5030/5677 +f 4302/5040/5675 4303/5041/5676 4293/5030/5677 +f 4304/5042/5678 4305/5043/5679 4306/5044/5680 +f 4307/5045/5681 4304/5042/5678 4306/5044/5680 +f 4307/5045/5681 4306/5044/5680 4308/5046/5682 +f 4309/5047/5683 4307/5045/5681 4308/5046/5682 +f 4310/5048/5684 4304/5042/5678 4307/5045/5681 +f 4309/5047/5683 4308/5046/5682 4311/5049/5685 +f 4312/5050/5686 4309/5047/5683 4311/5049/5685 +f 4313/5051/5687 4307/5045/5681 4309/5047/5683 +f 4313/5051/5687 4310/5048/5684 4307/5045/5681 +f 4312/5050/5686 4311/5049/5685 4314/5052/5688 +f 4315/5053/5689 4309/5047/5683 4312/5050/5686 +f 4315/5053/5689 4313/5051/5687 4309/5047/5683 +f 4316/5054/5690 4312/5050/5686 4314/5052/5688 +f 4317/5055/5691 4315/5053/5689 4312/5050/5686 +f 4317/5055/5691 4312/5050/5686 4316/5054/5690 +f 4316/5054/5690 4314/5052/5688 4318/5056/5692 +f 4319/5057/5693 4310/5048/5684 4313/5051/5687 +f 4320/5058/5694 4313/5051/5687 4315/5053/5689 +f 4320/5058/5694 4319/5057/5693 4313/5051/5687 +f 4321/5059/5695 4316/5054/5690 4318/5056/5692 +f 4322/5060/5696 4315/5053/5689 4317/5055/5691 +f 4322/5060/5696 4320/5058/5694 4315/5053/5689 +f 4321/5059/5695 4318/5056/5692 4292/5061/5697 +f 4323/5062/5698 4317/5055/5691 4316/5054/5690 +f 4321/5059/5695 4324/5063/5699 4316/5054/5690 +f 4324/5063/5699 4323/5062/5698 4316/5054/5690 +f 4325/5064/5700 4322/5060/5696 4317/5055/5691 +f 4325/5064/5700 4317/5055/5691 4323/5062/5698 +f 4326/5065/5701 4319/5057/5693 4320/5058/5694 +f 4327/5066/5702 4320/5058/5694 4322/5060/5696 +f 4327/5066/5702 4326/5065/5701 4320/5058/5694 +f 4322/5060/5696 4325/5064/5700 4328/5067/5703 +f 4329/5068/5704 4327/5066/5702 4322/5060/5696 +f 4329/5068/5704 4322/5060/5696 4328/5067/5703 +f 4330/5069/5705 4325/5064/5700 4323/5062/5698 +f 4324/5063/5699 4331/5070/5706 4323/5062/5698 +f 4331/5070/5706 4330/5069/5705 4323/5062/5698 +f 4332/5071/5707 4328/5067/5703 4325/5064/5700 +f 4330/5069/5705 4332/5071/5707 4325/5064/5700 +f 4333/5072/5708 4326/5065/5701 4327/5066/5702 +f 4327/5066/5702 4329/5068/5704 4334/5073/5709 +f 4329/5068/5704 4328/5067/5703 4335/5074/5710 +f 4334/5073/5709 4329/5068/5704 4335/5074/5710 +f 4336/5075/5711 4333/5072/5708 4327/5066/5702 +f 4336/5075/5711 4327/5066/5702 4334/5073/5709 +f 4332/5071/5707 4337/5076/5712 4328/5067/5703 +f 4337/5076/5712 4335/5074/5710 4328/5067/5703 +f 4338/5077/5713 4332/5071/5707 4330/5069/5705 +f 4331/5070/5706 4338/5077/5713 4330/5069/5705 +f 4339/5078/5714 4337/5076/5712 4332/5071/5707 +f 4338/5077/5713 4339/5078/5714 4332/5071/5707 +f 4340/5079/5715 4333/5072/5708 4336/5075/5711 +f 4336/5075/5711 4334/5073/5709 4341/5080/5716 +f 4341/5080/5716 4334/5073/5709 4335/5074/5710 +f 4342/5081/5717 4340/5079/5715 4336/5075/5711 +f 4342/5081/5717 4336/5075/5711 4341/5080/5716 +f 4337/5076/5712 4343/5082/5718 4335/5074/5710 +f 4343/5082/5718 4337/5076/5712 4339/5078/5714 +f 4344/5083/5719 4341/5080/5716 4335/5074/5710 +f 4343/5082/5718 4344/5083/5719 4335/5074/5710 +f 4342/5081/5717 4345/5084/5720 4340/5079/5715 +f 4342/5081/5717 4341/5080/5716 4346/5085/5721 +f 4345/5084/5720 4342/5081/5717 4346/5085/5721 +f 4291/5034/5722 4321/5059/5695 4292/5061/5697 +f 4341/5080/5716 4344/5083/5719 4347/5086/5723 +f 4346/5085/5721 4341/5080/5716 4347/5086/5723 +f 4348/5087/5724 4343/5082/5718 4339/5078/5714 +f 4343/5082/5718 4349/5088/5725 4344/5083/5719 +f 4349/5088/5725 4347/5086/5723 4344/5083/5719 +f 4294/5035/5726 4324/5063/5699 4321/5059/5695 +f 4291/5034/5722 4294/5035/5726 4321/5059/5695 +f 4345/5084/5720 4350/5089/5727 4340/5079/5715 +f 4351/5090/5728 4349/5088/5725 4343/5082/5718 +f 4348/5087/5724 4351/5090/5728 4343/5082/5718 +f 4345/5084/5720 4346/5085/5721 4352/5091/5729 +f 4346/5085/5721 4347/5086/5723 4353/5092/5730 +f 4352/5091/5729 4346/5085/5721 4353/5092/5730 +f 4295/5037/5731 4331/5070/5706 4324/5063/5699 +f 4294/5035/5726 4295/5037/5731 4324/5063/5699 +f 4345/5084/5720 4354/5093/5732 4350/5089/5727 +f 4354/5093/5732 4345/5084/5720 4352/5091/5729 +f 4349/5088/5725 4355/5094/5733 4347/5086/5723 +f 4355/5094/5733 4349/5088/5725 4351/5090/5728 +f 4355/5094/5733 4353/5092/5730 4347/5086/5723 +f 4354/5093/5732 4356/5095/5734 4350/5089/5727 +f 4296/5038/5735 4338/5077/5713 4331/5070/5706 +f 4295/5037/5731 4296/5038/5735 4331/5070/5706 +f 4354/5093/5732 4352/5091/5729 4357/5096/5736 +f 4358/5097/5737 4355/5094/5733 4351/5090/5728 +f 4354/5093/5732 4359/5098/5738 4356/5095/5734 +f 4359/5098/5738 4354/5093/5732 4357/5096/5736 +f 4303/5099/5739 4339/5078/5714 4338/5077/5713 +f 4296/5038/5735 4303/5099/5739 4338/5077/5713 +f 4352/5091/5729 4353/5092/5730 4360/5100/5740 +f 4357/5096/5736 4352/5091/5729 4360/5100/5740 +f 4355/5094/5733 4361/5101/5741 4353/5092/5730 +f 4361/5101/5741 4360/5100/5740 4353/5092/5730 +f 4361/5101/5741 4355/5094/5733 4358/5097/5737 +f 4359/5098/5738 4362/5102/5742 4356/5095/5734 +f 4302/5103/5743 4348/5087/5724 4339/5078/5714 +f 4303/5099/5739 4302/5103/5743 4339/5078/5714 +f 4300/5033/5744 4358/5097/5737 4351/5090/5728 +f 4359/5098/5738 4357/5096/5736 4363/5104/5745 +f 4363/5104/5745 4357/5096/5736 4360/5100/5740 +f 4359/5098/5738 4364/5105/5746 4362/5102/5742 +f 4364/5105/5746 4359/5098/5738 4363/5104/5745 +f 4365/5106/5747 4360/5100/5740 4361/5101/5741 +f 4365/5106/5747 4363/5104/5745 4360/5100/5740 +f 4301/5107/5748 4351/5090/5728 4348/5087/5724 +f 4301/5107/5748 4300/5033/5744 4351/5090/5728 +f 4302/5103/5743 4301/5107/5748 4348/5087/5724 +f 4366/5108/5749 4361/5101/5741 4358/5097/5737 +f 4366/5108/5749 4358/5097/5737 4300/5033/5744 +f 4367/5109/5750 4365/5106/5747 4361/5101/5741 +f 4367/5109/5750 4361/5101/5741 4366/5108/5749 +f 4364/5105/5746 4368/5110/5751 4362/5102/5742 +f 4364/5105/5746 4363/5104/5745 4369/5111/5752 +f 4364/5105/5746 4369/5111/5752 4368/5110/5751 +f 4363/5104/5745 4365/5106/5747 4370/5112/5753 +f 4363/5104/5745 4370/5112/5753 4369/5111/5752 +f 4371/5113/5754 4365/5106/5747 4367/5109/5750 +f 4365/5106/5747 4371/5113/5754 4370/5112/5753 +f 4372/5114/5755 4367/5109/5750 4366/5108/5749 +f 4299/5032/5756 4366/5108/5749 4300/5033/5744 +f 4372/5114/5755 4366/5108/5749 4299/5032/5756 +f 4373/5115/5757 4371/5113/5754 4367/5109/5750 +f 4373/5115/5757 4367/5109/5750 4372/5114/5755 +f 4369/5111/5752 4374/5116/5758 4368/5110/5751 +f 4306/5117/5759 4369/5111/5752 4370/5112/5753 +f 4369/5111/5752 4306/5117/5759 4374/5116/5758 +f 4308/5118/5760 4370/5112/5753 4371/5113/5754 +f 4308/5118/5760 4306/5117/5759 4370/5112/5753 +f 4311/5119/5761 4371/5113/5754 4373/5115/5757 +f 4311/5119/5761 4308/5118/5760 4371/5113/5754 +f 4375/5120/5762 4373/5115/5757 4372/5114/5755 +f 4298/5031/5763 4372/5114/5755 4299/5032/5756 +f 4375/5120/5762 4372/5114/5755 4298/5031/5763 +f 4314/5121/5764 4311/5119/5761 4373/5115/5757 +f 4314/5121/5764 4373/5115/5757 4375/5120/5762 +f 4306/5117/5759 4305/5122/5765 4374/5116/5758 +f 4318/5123/5766 4314/5121/5764 4375/5120/5762 +f 4297/5028/5767 4375/5120/5762 4298/5031/5763 +f 4318/5123/5766 4375/5120/5762 4297/5028/5767 +f 4292/5029/5768 4318/5123/5766 4297/5028/5767 +f 4376/5124/5769 4377/5125/5770 4378/5126/5771 +f 4377/5125/5770 4379/5127/5772 4378/5126/5771 +f 4379/5127/5772 4380/5128/5773 4378/5126/5771 +f 4380/5128/5773 4381/5129/5774 4378/5126/5771 +f 4380/5128/5773 4382/5130/5775 4381/5129/5774 +f 4382/5130/5775 4383/5131/5776 4381/5129/5774 +f 4382/5130/5775 4384/5132/5777 4383/5131/5776 +f 4384/5132/5777 4385/5133/5778 4383/5131/5776 +f 4385/5133/5778 4384/5132/5777 4386/5134/5779 +f 4387/5135/5780 4385/5133/5778 4386/5134/5779 +f 4378/5126/5781 4388/5136/5782 4376/5124/5783 +f 4381/5129/5784 4388/5136/5782 4378/5126/5781 +f 4389/5137/5785 4388/5136/5782 4381/5129/5784 +f 4383/5131/5786 4389/5137/5785 4381/5129/5784 +f 4385/5133/5787 4389/5137/5785 4383/5131/5786 +f 4385/5133/5787 4387/5135/5788 4389/5137/5785 +f 4390/5138/5789 4386/5134/5790 4384/5132/5791 +f 4382/5130/5792 4390/5138/5789 4384/5132/5791 +f 4390/5138/5789 4382/5130/5792 4380/5128/5793 +f 4391/5139/5794 4390/5138/5789 4380/5128/5793 +f 4379/5127/5795 4391/5139/5794 4380/5128/5793 +f 4377/5125/5796 4391/5139/5794 4379/5127/5795 +f 4392/5140/5797 4393/5141/5798 4394/5142/5799 +f 4395/5142/5799 4392/5140/5797 4394/5142/5799 +f 4396/5143/5799 4395/5142/5799 4394/5142/5799 +f 4397/5143/5799 4396/5143/5799 4394/5142/5799 +f 4398/5144/5800 4399/5145/5801 4394/5146/5802 +f 4393/5141/5803 4398/5144/5800 4394/5146/5802 +f 4392/5140/5804 4400/5147/5805 4398/5144/5806 +f 4393/5141/5807 4392/5140/5804 4398/5144/5806 +f 4399/5148/5808 4401/5149/5809 4397/5150/5810 +f 4394/5151/5811 4399/5148/5808 4397/5150/5810 +f 4397/5150/5812 4401/5149/5813 4402/5152/5814 +f 4396/5143/5815 4397/5150/5812 4402/5152/5814 +f 4392/5140/5816 4395/5142/5817 4400/5147/5818 +f 4395/5142/5817 4403/5153/5819 4400/5147/5818 +f 4395/5142/5817 4396/5143/5820 4403/5153/5819 +f 4396/5143/5820 4402/5152/5821 4403/5153/5819 +f 4404/5154/5822 4405/5155/5823 4406/5156/5824 +f 4407/5157/5825 4404/5154/5822 4406/5156/5824 +f 4408/5158/5826 4407/5157/5825 4406/5156/5824 +f 4409/5159/5827 4408/5158/5826 4406/5156/5824 +f 4408/5158/5826 4409/5159/5827 4400/5160/5828 +f 4409/5159/5827 4398/5161/5829 4400/5160/5828 +f 4410/5162/5830 4411/5163/5831 4412/5164/5832 +f 4413/5165/5833 4410/5162/5830 4412/5164/5832 +f 4413/5165/5833 4412/5164/5832 4414/5166/5834 +f 4415/5167/5835 4413/5165/5833 4414/5166/5834 +f 4413/5165/5833 4406/5168/5836 4410/5162/5830 +f 4406/5168/5836 4413/5165/5833 4415/5167/5835 +f 4414/5166/5834 4401/5169/5837 4415/5167/5835 +f 4401/5169/5837 4399/5170/5838 4415/5167/5835 +f 4415/5167/5835 4399/5170/5838 4409/5171/5839 +f 4409/5171/5839 4406/5168/5836 4415/5167/5835 +f 4406/5168/5836 4405/5172/5840 4410/5162/5830 +f 4399/5170/5838 4398/5173/5841 4409/5171/5839 +f 4416/5174/5842 4404/5154/5843 4407/5157/5844 +f 4417/5175/5845 4416/5174/5842 4407/5157/5844 +f 4418/5176/5846 4417/5175/5845 4407/5157/5844 +f 4408/5158/5847 4418/5176/5846 4407/5157/5844 +f 4417/5175/5845 4419/5177/5848 4416/5174/5842 +f 4403/5178/5849 4418/5176/5846 4408/5158/5847 +f 4418/5176/5846 4420/5179/5850 4417/5175/5845 +f 4420/5179/5850 4419/5177/5848 4417/5175/5845 +f 4400/5160/5851 4403/5178/5849 4408/5158/5847 +f 4418/5176/5846 4403/5178/5849 4402/5180/5852 +f 4420/5179/5850 4418/5176/5846 4402/5180/5852 +f 4419/5177/5848 4421/5181/5853 4416/5174/5842 +f 4411/5163/5854 4421/5182/5855 4419/5183/5856 +f 4412/5164/5857 4411/5163/5854 4419/5183/5856 +f 4412/5164/5857 4419/5183/5856 4420/5184/5858 +f 4414/5166/5859 4412/5164/5857 4420/5184/5858 +f 4401/5169/5860 4414/5166/5859 4420/5184/5858 +f 4402/5185/5861 4401/5169/5860 4420/5184/5858 +f 4422/5186/5862 4423/5187/5863 4424/5188/5864 +f 4423/5187/5863 4425/5189/5865 4424/5188/5864 +f 4424/5188/5864 4425/5189/5865 4426/5190/5866 +f 4425/5189/5865 4427/5191/5867 4426/5190/5866 +f 4426/5190/5866 4427/5191/5867 4428/5192/5868 +f 4427/5191/5867 4429/5193/5869 4428/5192/5868 +f 4428/5192/5868 4429/5193/5869 4430/5194/5870 +f 4429/5193/5869 4431/5195/5871 4430/5194/5870 +f 4430/5194/5870 4431/5195/5871 4432/5196/5872 +f 4431/5195/5871 4433/5197/5873 4432/5196/5872 +f 4432/5196/5872 4433/5197/5873 4434/5198/5874 +f 4433/5197/5873 4435/5199/5875 4434/5198/5874 +f 4434/5198/5874 4435/5199/5875 4436/5200/5876 +f 4435/5199/5875 4437/5201/5877 4436/5200/5876 +f 4436/5200/5876 4437/5201/5877 4438/5202/5878 +f 4437/5201/5877 4439/5203/5879 4438/5202/5878 +f 4438/5202/5878 4439/5203/5879 4440/5204/5880 +f 4439/5203/5879 4441/5205/5881 4440/5204/5880 +f 4440/5204/5880 4441/5205/5881 4442/5206/5882 +f 4441/5205/5881 4443/5207/5883 4442/5206/5882 +f 4442/5206/5882 4443/5207/5883 4444/5208/5884 +f 4443/5207/5883 4445/5209/5885 4444/5208/5884 +f 4444/5208/5884 4445/5209/5885 4422/5210/5886 +f 4445/5209/5885 4423/5211/5887 4422/5210/5886 +f 4446/5212/5888 4006/5213/5889 4004/5214/5890 +f 4447/5215/5891 4446/5212/5888 4004/5214/5890 +f 4004/5214/5890 4001/5216/5892 4447/5215/5891 +f 4001/5216/5892 4448/5217/5893 4447/5215/5891 +f 4449/5218/5894 4446/5212/5888 4447/5215/5891 +f 4448/5217/5893 4001/5216/5892 3999/5219/5895 +f 4450/5220/5896 4448/5217/5893 3999/5219/5895 +f 4451/5221/5897 4447/5215/5891 4448/5217/5893 +f 4451/5221/5897 4449/5218/5894 4447/5215/5891 +f 4450/5220/5896 3999/5219/5895 3998/5222/5898 +f 4452/5223/5899 4448/5217/5893 4450/5220/5896 +f 4453/5224/5900 4451/5221/5897 4448/5217/5893 +f 4452/5223/5899 4453/5224/5900 4448/5217/5893 +f 4454/5225/5901 4450/5220/5896 3998/5222/5898 +f 4452/5223/5899 4450/5220/5896 4454/5225/5901 +f 4454/5225/5901 3998/5222/5898 4452/5223/5899 +f 3998/5222/5898 3997/5223/5902 4452/5223/5899 +f 4449/5218/5894 4451/5221/5897 4012/5226/5903 +f 4451/5221/5897 4453/5224/5900 4012/5226/5903 +f 4452/5223/5899 4455/5227/5904 4453/5224/5900 +f 4452/5223/5899 3997/5223/5902 4455/5227/5904 +f 4010/5228/5905 4453/5224/5900 4455/5227/5904 +f 4453/5224/5900 4010/5228/5905 4012/5226/5903 +f 3997/5223/5902 4007/5229/5906 4455/5227/5904 +f 4007/5229/5906 4010/5228/5905 4455/5227/5904 +f 4014/5230/5907 4449/5218/5894 4012/5226/5903 +f 4456/5231/5908 4013/5232/5909 4011/5233/5910 +f 4457/5234/5911 4456/5231/5908 4011/5233/5910 +f 4457/5234/5911 4011/5233/5910 4458/5235/5912 +f 4011/5233/5910 4009/5236/5913 4458/5235/5912 +f 4456/5231/5908 4457/5234/5911 4459/5237/5914 +f 4460/5238/5915 4458/5235/5912 4009/5236/5913 +f 4457/5234/5911 4458/5235/5912 4461/5239/5916 +f 4459/5237/5914 4457/5234/5911 4461/5239/5916 +f 4008/5240/5917 4460/5238/5915 4009/5236/5913 +f 4460/5238/5915 4008/5240/5917 3996/5241/5918 +f 4458/5235/5912 4460/5238/5915 4462/5242/5919 +f 4461/5239/5916 4458/5235/5912 4462/5242/5919 +f 4462/5242/5919 4460/5238/5915 3996/5241/5918 +f 4463/5243/5920 4456/5231/5908 4459/5237/5914 +f 4462/5242/5919 3996/5241/5918 3995/5244/5921 +f 4464/5245/5922 4462/5242/5919 3995/5244/5921 +f 4459/5237/5914 4461/5239/5916 4002/5246/5923 +f 3995/5244/5921 4000/5247/5924 4464/5245/5922 +f 4000/5247/5924 4002/5246/5923 4461/5239/5916 +f 4465/5248/5925 4461/5239/5916 4462/5242/5919 +f 4465/5248/5925 4000/5247/5924 4461/5239/5916 +f 4465/5248/5925 4462/5242/5919 4464/5245/5922 +f 4000/5247/5924 4465/5248/5925 4464/5245/5922 +f 4463/5243/5920 4459/5237/5914 4003/5249/5926 +f 4003/5249/5926 4459/5237/5914 4002/5246/5923 +f 4005/5250/5927 4463/5243/5920 4003/5249/5926 +f 4466/5251/5928 4467/5252/5929 4468/5253/5930 +f 4469/5254/5931 4466/5251/5928 4468/5253/5930 +f 4469/5254/5931 4468/5253/5930 4470/5255/5932 +f 4471/5256/5933 4469/5254/5931 4470/5255/5932 +f 4472/5257/5934 4471/5256/5935 4470/5255/5936 +f 4473/5258/5937 4472/5257/5934 4470/5255/5936 +f 4472/5257/5934 4473/5258/5937 4474/5259/5938 +f 4475/5260/5939 4472/5257/5934 4474/5259/5938 +f 4475/5260/5940 4474/5259/5941 4476/5261/5942 +f 4477/5262/5943 4475/5260/5940 4476/5261/5942 +f 4477/5262/5943 4476/5261/5942 4478/5263/5944 +f 4479/5264/5945 4477/5262/5943 4478/5263/5944 +f 4479/5264/5946 4478/5263/5947 4480/5265/5948 +f 4481/5266/5949 4479/5264/5946 4480/5265/5948 +f 4482/5267/5950 4481/5266/5949 4480/5265/5948 +f 4483/5268/5951 4482/5267/5950 4480/5265/5948 +f 4482/5267/5952 4483/5268/5953 4484/5269/5954 +f 4485/5270/5955 4482/5267/5952 4484/5269/5954 +f 4486/5271/5956 4485/5270/5955 4484/5269/5954 +f 4487/5272/5957 4486/5271/5956 4484/5269/5954 +f 4488/5273/5958 4486/5271/5959 4487/5272/5960 +f 4489/5274/5961 4488/5273/5958 4487/5272/5960 +f 4490/5275/5962 4488/5273/5958 4489/5274/5961 +f 4491/5276/5963 4490/5275/5962 4489/5274/5961 +f 4490/5275/5964 4491/5276/5965 4492/5277/5966 +f 4491/5276/5965 4493/5278/5967 4492/5277/5966 +f 4494/5279/5968 4492/5277/5966 4493/5278/5967 +f 4495/5280/5969 4494/5279/5968 4493/5278/5967 +f 4496/5281/5970 4497/5282/226 4498/5283/2922 +f 4499/5284/5970 4496/5281/5970 4498/5283/2922 +f 4499/5284/5970 4500/5285/5971 4496/5281/5970 +f 4500/5285/5971 4501/5286/5971 4496/5281/5970 +f 4502/5287/687 4501/5286/5971 4500/5285/5971 +f 4503/5288/687 4502/5287/687 4500/5285/5971 +f 4503/5288/687 4504/5289/226 4502/5287/687 +f 4504/5289/226 4505/5290/226 4502/5287/687 +f 4506/5291/226 4505/5290/226 4504/5289/226 +f 4507/5292/226 4506/5291/226 4504/5289/226 +f 4507/5292/226 4508/5293/685 4506/5291/226 +f 4508/5293/685 4509/5294/685 4506/5291/226 +f 4510/5295/226 4509/5294/685 4508/5293/685 +f 4511/5296/226 4510/5295/226 4508/5293/685 +f 4511/5296/226 4512/5297/2922 4510/5295/226 +f 4512/5297/2922 4513/5298/2922 4510/5295/226 +f 4514/5299/226 4513/5298/2922 4512/5297/2922 +f 4515/5300/226 4514/5299/226 4512/5297/2922 +f 4515/5300/226 4516/5301/226 4514/5299/226 +f 4516/5301/226 4517/5302/2922 4514/5299/226 +f 4518/5303/2922 4517/5302/2922 4516/5301/226 +f 4519/5304/2922 4518/5303/2922 4516/5301/226 +f 4519/5304/2922 4520/5305/246 4518/5303/2922 +f 4520/5305/246 4521/5306/2922 4518/5303/2922 +f 4522/5307/246 4521/5306/2922 4520/5305/246 +f 4523/5308/246 4522/5307/246 4520/5305/246 +f 4523/5308/246 4524/5309/246 4522/5307/246 +f 4524/5309/246 4525/5310/246 4522/5307/246 +f 4526/5311/2922 4525/5310/246 4524/5309/246 +f 4527/5312/226 4526/5311/2922 4524/5309/246 +f 4526/5311/2922 4527/5312/226 4528/5313/2922 +f 4529/5314/2922 4526/5311/2922 4528/5313/2922 +f 4530/5315/5972 4466/5316/5973 4497/5282/5974 +f 4496/5281/5975 4530/5315/5972 4497/5282/5974 +f 4531/5317/5976 4530/5315/5972 4496/5281/5975 +f 4501/5286/5977 4531/5317/5976 4496/5281/5975 +f 4532/5318/5978 4531/5317/5976 4501/5286/5977 +f 4502/5287/5979 4532/5318/5978 4501/5286/5977 +f 4533/5319/5980 4532/5318/5978 4502/5287/5979 +f 4505/5290/5981 4533/5319/5980 4502/5287/5979 +f 4505/5290/5981 4506/5291/5982 4533/5319/5980 +f 4506/5291/5982 4534/5320/5983 4533/5319/5980 +f 4535/5321/5984 4534/5320/5983 4506/5291/5982 +f 4509/5294/5985 4535/5321/5984 4506/5291/5982 +f 4509/5294/5985 4510/5295/5986 4535/5321/5984 +f 4510/5295/5986 4536/5322/5987 4535/5321/5984 +f 4510/5295/5986 4513/5298/5988 4536/5322/5987 +f 4513/5298/5988 4537/5323/5989 4536/5322/5987 +f 4513/5298/5988 4514/5299/5990 4537/5323/5989 +f 4514/5299/5990 4538/5324/5991 4537/5323/5989 +f 4514/5299/5990 4517/5302/5992 4538/5324/5991 +f 4517/5302/5992 4539/5325/5993 4538/5324/5991 +f 4517/5302/5992 4518/5303/5994 4539/5325/5993 +f 4518/5303/5994 4540/5326/5995 4539/5325/5993 +f 4518/5303/5994 4521/5306/5996 4540/5326/5995 +f 4521/5306/5996 4541/5327/5997 4540/5326/5995 +f 4521/5306/5996 4522/5307/5998 4541/5327/5997 +f 4522/5307/5998 4542/5328/5999 4541/5327/5997 +f 4522/5307/5998 4525/5310/6000 4542/5328/5999 +f 4525/5310/6000 4543/5329/6001 4542/5328/5999 +f 4543/5329/6001 4525/5310/6000 4526/5311/6002 +f 4544/5330/6003 4543/5329/6001 4526/5311/6002 +f 4526/5311/6002 4529/5314/6004 4544/5330/6003 +f 4529/5314/6004 4545/5331/6005 4544/5330/6003 +f 4546/5332/6006 4547/5333/6007 4543/5329/6008 +f 4544/5330/6009 4546/5332/6006 4543/5329/6008 +f 4544/5330/6009 4545/5331/6010 4546/5332/6006 +f 4545/5331/6010 4548/5334/6011 4546/5332/6006 +f 4467/5335/6012 4549/5336/6013 4550/5337/6014 +f 4549/5336/6013 4551/5338/6015 4550/5337/6014 +f 4549/5336/6013 4552/5339/6016 4551/5338/6015 +f 4552/5339/6016 4553/5340/6017 4551/5338/6015 +f 4552/5339/6016 4554/5341/6018 4553/5340/6017 +f 4554/5341/6018 4555/5342/6019 4553/5340/6017 +f 4555/5342/6019 4554/5341/6018 4556/5343/6020 +f 4554/5341/6018 4557/5344/6021 4556/5343/6020 +f 4556/5343/6020 4557/5344/6021 4558/5345/6022 +f 4557/5344/6021 4559/5346/6023 4558/5345/6022 +f 4558/5345/6022 4559/5346/6023 4560/5347/6024 +f 4559/5346/6023 4561/5348/6025 4560/5347/6024 +f 4560/5347/6024 4561/5348/6025 4562/5349/6026 +f 4561/5348/6025 4563/5350/6027 4562/5349/6026 +f 4562/5349/6026 4563/5350/6027 4564/5351/6028 +f 4563/5350/6027 4565/5352/6029 4564/5351/6028 +f 4565/5352/6029 4566/5353/6030 4564/5351/6028 +f 4566/5353/6030 4567/5354/6031 4564/5351/6028 +f 4567/5354/6031 4566/5353/6030 4568/5355/6032 +f 4566/5353/6030 4569/5356/6033 4568/5355/6032 +f 4569/5356/6033 4570/5357/6034 4568/5355/6032 +f 4570/5357/6034 4571/5358/6035 4568/5355/6032 +f 4571/5358/6035 4570/5357/6034 4572/5359/6036 +f 4570/5357/6034 4573/5360/6037 4572/5359/6036 +f 4572/5359/6036 4573/5360/6037 4574/5361/6038 +f 4573/5360/6037 4575/5362/6039 4574/5361/6038 +f 4574/5361/6038 4575/5362/6039 4576/5363/6040 +f 4575/5362/6039 4547/5333/6041 4576/5363/6040 +f 4577/5364/6042 4576/5363/6040 4547/5333/6041 +f 4546/5332/6043 4577/5364/6042 4547/5333/6041 +f 4577/5364/6042 4546/5332/6043 4578/5365/6044 +f 4546/5332/6043 4548/5334/6045 4578/5365/6044 +f 4550/5337/6046 4551/5338/6047 4579/5366/6048 +f 4551/5338/6047 4580/5367/6049 4579/5366/6048 +f 4580/5367/6049 4551/5338/6047 4581/5368/6050 +f 4551/5338/6047 4553/5340/6051 4581/5368/6050 +f 4553/5340/6051 4555/5342/6052 4581/5368/6050 +f 4555/5342/6052 4582/5369/6053 4581/5368/6050 +f 4582/5369/6053 4555/5342/6052 4583/5370/6054 +f 4555/5342/6052 4556/5343/6055 4583/5370/6054 +f 4556/5343/6055 4558/5345/6056 4583/5370/6054 +f 4558/5345/6056 4584/5371/6057 4583/5370/6054 +f 4584/5371/6057 4558/5345/6056 4585/5372/6058 +f 4558/5345/6056 4560/5347/6059 4585/5372/6058 +f 4560/5347/6059 4562/5349/6060 4585/5372/6058 +f 4562/5349/6060 4586/5373/6061 4585/5372/6058 +f 4586/5373/6061 4562/5349/6060 4587/5374/6062 +f 4562/5349/6060 4564/5351/6063 4587/5374/6062 +f 4564/5351/6063 4567/5354/6064 4587/5374/6062 +f 4567/5354/6064 4588/5375/6065 4587/5374/6062 +f 4588/5375/6065 4567/5354/6064 4589/5376/6066 +f 4567/5354/6064 4568/5355/6067 4589/5376/6066 +f 4568/5355/6067 4571/5358/6068 4589/5376/6066 +f 4571/5358/6068 4590/5377/6069 4589/5376/6066 +f 4590/5377/6069 4571/5358/6068 4591/5378/6070 +f 4571/5358/6068 4572/5359/6071 4591/5378/6070 +f 4572/5359/6071 4574/5361/6072 4591/5378/6070 +f 4574/5361/6072 4592/5379/6073 4591/5378/6070 +f 4592/5379/6073 4574/5361/6072 4593/5380/6074 +f 4574/5361/6072 4576/5363/6075 4593/5380/6074 +f 4593/5380/6074 4576/5363/6075 4577/5364/6076 +f 4594/5381/6077 4593/5380/6074 4577/5364/6076 +f 4594/5381/6077 4577/5364/6076 4595/5382/6078 +f 4577/5364/6076 4578/5365/6079 4595/5382/6078 +f 4579/5366/6080 4580/5367/6081 2549/5383/6082 +f 4580/5367/6081 2737/5384/6083 2549/5383/6082 +f 4580/5367/6081 4581/5368/6084 2737/5384/6083 +f 4581/5368/6084 2736/5385/6085 2737/5384/6083 +f 4581/5368/6084 4582/5369/6086 2736/5385/6085 +f 4582/5369/6086 2735/5386/6087 2736/5385/6085 +f 4582/5369/6086 4583/5370/6088 2735/5386/6087 +f 4583/5370/6088 2734/5387/6089 2735/5386/6087 +f 4583/5370/6088 4584/5371/6090 2734/5387/6089 +f 4584/5371/6090 2733/5388/6091 2734/5387/6089 +f 4584/5371/6090 4585/5372/6092 2733/5388/6091 +f 4585/5372/6092 2732/5389/6093 2733/5388/6091 +f 4585/5372/6092 4586/5373/6094 2732/5389/6093 +f 4586/5373/6094 2731/5390/6095 2732/5389/6093 +f 4586/5373/6094 4587/5374/6096 2731/5390/6095 +f 4587/5374/6096 2730/5391/6097 2731/5390/6095 +f 2729/5392/6098 2730/5391/6097 4587/5374/6096 +f 4588/5375/6099 2729/5392/6098 4587/5374/6096 +f 4588/5375/6099 4589/5376/6100 2729/5392/6098 +f 4589/5376/6100 2728/5393/6101 2729/5392/6098 +f 2727/5394/6102 2728/5393/6101 4589/5376/6100 +f 4590/5377/6103 2727/5394/6102 4589/5376/6100 +f 4590/5377/6103 4591/5378/6104 2727/5394/6102 +f 4591/5378/6104 174/5395/6105 2727/5394/6102 +f 175/5396/6106 174/5395/6105 4591/5378/6104 +f 4592/5379/6107 175/5396/6106 4591/5378/6104 +f 4592/5379/6107 4593/5380/6108 175/5396/6106 +f 4593/5380/6108 173/5397/6109 175/5396/6106 +f 2726/5398/6110 173/5397/6109 4593/5380/6108 +f 4594/5381/6111 2726/5398/6110 4593/5380/6108 +f 2726/5398/6110 4594/5381/6111 2533/5399/6112 +f 4594/5381/6111 4595/5382/6113 2533/5399/6112 +f 4573/5360/6114 4541/5327/6115 4542/5328/6116 +f 4575/5362/6117 4573/5360/6114 4542/5328/6116 +f 4575/5362/6117 4542/5328/6116 4543/5329/6118 +f 4547/5333/6119 4575/5362/6117 4543/5329/6118 +f 4569/5356/6120 4539/5325/6121 4540/5326/6122 +f 4570/5357/6123 4569/5356/6120 4540/5326/6122 +f 4570/5357/6123 4540/5326/6122 4541/5327/6124 +f 4573/5360/6125 4570/5357/6123 4541/5327/6124 +f 4565/5352/6126 4537/5323/6127 4566/5353/6128 +f 4537/5323/6127 4538/5324/6129 4566/5353/6128 +f 4566/5353/6128 4538/5324/6129 4539/5325/6130 +f 4569/5356/6131 4566/5353/6128 4539/5325/6130 +f 4561/5348/6132 4535/5321/6133 4563/5350/6134 +f 4535/5321/6133 4536/5322/6135 4563/5350/6134 +f 4563/5350/6134 4536/5322/6135 4537/5323/6136 +f 4565/5352/6137 4563/5350/6134 4537/5323/6136 +f 4557/5344/6138 4533/5319/6139 4559/5346/6140 +f 4533/5319/6139 4534/5320/6141 4559/5346/6140 +f 4561/5348/6142 4559/5346/6140 4534/5320/6141 +f 4535/5321/6143 4561/5348/6142 4534/5320/6141 +f 4552/5339/6144 4531/5317/6145 4532/5318/6146 +f 4554/5341/6147 4552/5339/6144 4532/5318/6146 +f 4557/5344/6148 4554/5341/6147 4532/5318/6146 +f 4533/5319/6149 4557/5344/6148 4532/5318/6146 +f 4467/5335/6150 4466/5316/6151 4549/5336/6152 +f 4466/5316/6151 4530/5315/6153 4549/5336/6152 +f 4552/5339/6154 4549/5336/6152 4530/5315/6153 +f 4531/5317/6155 4552/5339/6154 4530/5315/6153 +f 4579/5400/6156 2549/5401/6157 4596/5402/6158 +f 2549/5401/6157 2548/5403/6159 4596/5402/6158 +f 4596/5402/6158 2548/5403/6159 4597/5404/6160 +f 2548/5403/6159 2547/5405/6161 4597/5404/6160 +f 4597/5404/6160 2547/5405/6161 4598/5406/6162 +f 2547/5405/6161 2546/5407/6163 4598/5406/6162 +f 4598/5406/6162 2546/5407/6163 4599/5408/6164 +f 2546/5407/6163 2545/5409/6165 4599/5408/6164 +f 4599/5408/6164 2545/5409/6165 4600/5410/6166 +f 2545/5409/6165 2544/5411/6167 4600/5410/6166 +f 4600/5410/6166 2544/5411/6167 4601/5412/6168 +f 2544/5411/6167 2543/5413/6169 4601/5412/6168 +f 4601/5412/6168 2543/5413/6169 4602/5414/6170 +f 2543/5413/6169 2542/5415/6171 4602/5414/6170 +f 2542/5415/6171 2541/5416/6172 4602/5414/6170 +f 2541/5416/6172 4603/5417/6173 4602/5414/6170 +f 4603/5417/6173 2541/5416/6172 4604/5418/6174 +f 2541/5416/6172 2540/5419/6175 4604/5418/6174 +f 2540/5419/6175 2539/5420/6176 4604/5418/6174 +f 2539/5420/6176 4605/5421/6177 4604/5418/6174 +f 4605/5421/6177 2539/5420/6176 4606/5422/6178 +f 2539/5420/6176 2538/5423/6179 4606/5422/6178 +f 2538/5423/6179 2537/5424/6180 4606/5422/6178 +f 2537/5424/6180 4607/5425/6181 4606/5422/6178 +f 4607/5425/6181 2537/5424/6180 2536/5426/6182 +f 4608/5427/6183 4607/5425/6181 2536/5426/6182 +f 2536/5426/6182 2535/5428/6184 4608/5427/6183 +f 2535/5428/6184 4609/5429/6185 4608/5427/6183 +f 4610/5430/6186 4609/5429/6185 2535/5428/6184 +f 2534/5431/6187 4610/5430/6186 2535/5428/6184 +f 4610/5430/6186 2534/5431/6187 2533/5432/6188 +f 4595/5433/6189 4610/5430/6186 2533/5432/6188 +f 4611/5434/6190 4550/5435/6191 4579/5400/6192 +f 4596/5402/6193 4611/5434/6190 4579/5400/6192 +f 4596/5402/6193 4597/5404/6194 4611/5434/6190 +f 4597/5404/6194 4612/5436/6195 4611/5434/6190 +f 4613/5437/6196 4612/5436/6195 4597/5404/6194 +f 4598/5406/6197 4613/5437/6196 4597/5404/6194 +f 4598/5406/6197 4599/5408/6198 4613/5437/6196 +f 4599/5408/6198 4614/5438/6199 4613/5437/6196 +f 4615/5439/6200 4614/5438/6199 4599/5408/6198 +f 4600/5410/6201 4615/5439/6200 4599/5408/6198 +f 4600/5410/6201 4601/5412/6202 4615/5439/6200 +f 4601/5412/6202 4616/5440/6203 4615/5439/6200 +f 4617/5441/6204 4616/5440/6203 4601/5412/6202 +f 4602/5414/6205 4617/5441/6204 4601/5412/6202 +f 4602/5414/6205 4603/5417/6206 4617/5441/6204 +f 4603/5417/6206 4618/5442/6207 4617/5441/6204 +f 4619/5443/6208 4618/5442/6207 4603/5417/6206 +f 4604/5418/6209 4619/5443/6208 4603/5417/6206 +f 4604/5418/6209 4605/5421/6210 4619/5443/6208 +f 4605/5421/6210 4620/5444/6211 4619/5443/6208 +f 4605/5421/6210 4606/5422/6212 4620/5444/6211 +f 4606/5422/6212 4621/5445/6213 4620/5444/6211 +f 4622/5446/6214 4621/5445/6213 4606/5422/6212 +f 4607/5425/6215 4622/5446/6214 4606/5422/6212 +f 4622/5446/6214 4607/5425/6215 4623/5447/6216 +f 4607/5425/6215 4608/5427/6217 4623/5447/6216 +f 4624/5448/6218 4623/5447/6216 4608/5427/6217 +f 4609/5429/6219 4624/5448/6218 4608/5427/6217 +f 4625/5449/6220 4624/5448/6218 4609/5429/6219 +f 4610/5430/6220 4625/5449/6220 4609/5429/6219 +f 4578/5450/6221 4625/5449/6220 4610/5430/6220 +f 4595/5433/6222 4578/5450/6221 4610/5430/6220 +f 4468/5253/6223 4467/5252/6224 4550/5435/6225 +f 4611/5434/6226 4468/5253/6223 4550/5435/6225 +f 4470/5255/6227 4468/5253/6223 4611/5434/6226 +f 4612/5436/6228 4470/5255/6227 4611/5434/6226 +f 4473/5258/6229 4470/5255/6227 4612/5436/6228 +f 4613/5437/6230 4473/5258/6229 4612/5436/6228 +f 4613/5437/6230 4614/5438/6231 4473/5258/6229 +f 4614/5438/6231 4474/5259/6232 4473/5258/6229 +f 4476/5261/6233 4474/5259/6232 4614/5438/6231 +f 4615/5439/6234 4476/5261/6233 4614/5438/6231 +f 4615/5439/6234 4616/5440/6235 4476/5261/6233 +f 4616/5440/6235 4478/5263/6236 4476/5261/6233 +f 4480/5265/6237 4478/5263/6236 4616/5440/6235 +f 4617/5441/6238 4480/5265/6237 4616/5440/6235 +f 4617/5441/6238 4618/5442/6239 4480/5265/6237 +f 4618/5442/6239 4483/5268/6240 4480/5265/6237 +f 4618/5442/6239 4619/5443/6241 4483/5268/6240 +f 4619/5443/6241 4484/5269/6242 4483/5268/6240 +f 4487/5272/6243 4484/5269/6242 4619/5443/6241 +f 4620/5444/6244 4487/5272/6243 4619/5443/6241 +f 4620/5444/6244 4621/5445/6245 4487/5272/6243 +f 4621/5445/6245 4489/5274/6246 4487/5272/6243 +f 4621/5445/6245 4622/5446/6247 4489/5274/6246 +f 4622/5446/6247 4491/5276/6248 4489/5274/6246 +f 4491/5276/6248 4622/5446/6247 4623/5447/6249 +f 4493/5278/6250 4491/5276/6248 4623/5447/6249 +f 4623/5447/6249 4624/5448/6251 4493/5278/6250 +f 4624/5448/6251 4495/5280/6252 4493/5278/6250 +f 4495/5280/6252 4624/5448/6251 4625/5449/6253 +f 4626/5451/6254 4495/5280/6252 4625/5449/6253 +f 4626/5451/6254 4625/5449/6253 4578/5450/6255 +f 4548/5452/6256 4626/5451/6254 4578/5450/6255 +f 4627/5453/6257 4494/5279/6258 4495/5280/6259 +f 4626/5451/6260 4627/5453/6257 4495/5280/6259 +f 4545/5454/6261 4627/5453/6257 4626/5451/6260 +f 4548/5452/6262 4545/5454/6261 4626/5451/6260 +f 4466/5251/6263 4469/5254/6264 4497/5455/6265 +f 4469/5254/6264 4628/5456/6266 4497/5455/6265 +f 4469/5254/6264 4471/5256/6267 4628/5456/6266 +f 4471/5256/6267 4629/5457/6268 4628/5456/6266 +f 4471/5256/6267 4472/5257/6269 4629/5457/6268 +f 4472/5257/6269 4630/5458/6270 4629/5457/6268 +f 4472/5257/6269 4475/5260/6271 4630/5458/6270 +f 4475/5260/6271 4631/5459/6272 4630/5458/6270 +f 4631/5459/6272 4475/5260/6271 4632/5460/6273 +f 4475/5260/6271 4477/5262/6274 4632/5460/6273 +f 4477/5262/6274 4479/5264/6275 4632/5460/6273 +f 4479/5264/6275 4633/5461/6276 4632/5460/6273 +f 4633/5461/6276 4479/5264/6275 4634/5462/6277 +f 4479/5264/6275 4481/5266/6278 4634/5462/6277 +f 4634/5462/6277 4481/5266/6278 4635/5463/6279 +f 4481/5266/6278 4482/5267/6280 4635/5463/6279 +f 4635/5463/6279 4482/5267/6280 4636/5464/6281 +f 4482/5267/6280 4485/5270/6282 4636/5464/6281 +f 4636/5464/6281 4485/5270/6282 4637/5465/6283 +f 4485/5270/6282 4486/5271/6284 4637/5465/6283 +f 4637/5465/6283 4486/5271/6284 4638/5466/6285 +f 4486/5271/6284 4488/5273/6286 4638/5466/6285 +f 4638/5466/6285 4488/5273/6286 4639/5467/6287 +f 4488/5273/6286 4490/5275/6288 4639/5467/6287 +f 4639/5467/6287 4490/5275/6288 4640/5468/6289 +f 4490/5275/6288 4492/5277/6290 4640/5468/6289 +f 4640/5468/6289 4492/5277/6290 4641/5469/6291 +f 4492/5277/6290 4494/5279/6292 4641/5469/6291 +f 4642/5470/6293 4641/5469/6291 4494/5279/6292 +f 4627/5453/6294 4642/5470/6293 4494/5279/6292 +f 4529/5471/6295 4642/5470/6293 4627/5453/6294 +f 4545/5454/6296 4529/5471/6295 4627/5453/6294 +f 4497/5455/226 4628/5456/3572 4498/5472/226 +f 4628/5456/3572 4643/5473/3572 4498/5472/226 +f 4643/5473/3572 4628/5456/3572 4644/5474/6297 +f 4628/5456/3572 4629/5457/6297 4644/5474/6297 +f 4629/5457/6297 4630/5458/3572 4644/5474/6297 +f 4630/5458/3572 4645/5475/3572 4644/5474/6297 +f 4645/5475/3572 4630/5458/3572 4646/5476/2922 +f 4630/5458/3572 4631/5459/246 4646/5476/2922 +f 4631/5459/246 4632/5460/2922 4646/5476/2922 +f 4632/5460/2922 4647/5477/2922 4646/5476/2922 +f 4647/5477/2922 4632/5460/2922 4648/5478/226 +f 4632/5460/2922 4633/5461/226 4648/5478/226 +f 4633/5461/226 4634/5462/226 4648/5478/226 +f 4634/5462/226 4649/5479/226 4648/5478/226 +f 4649/5479/226 4634/5462/226 4650/5480/226 +f 4634/5462/226 4635/5463/226 4650/5480/226 +f 4635/5463/226 4636/5464/226 4650/5480/226 +f 4636/5464/226 4651/5481/226 4650/5480/226 +f 4651/5481/226 4636/5464/226 4652/5482/226 +f 4636/5464/226 4637/5465/226 4652/5482/226 +f 4637/5465/226 4638/5466/226 4652/5482/226 +f 4638/5466/226 4653/5483/226 4652/5482/226 +f 4653/5483/226 4638/5466/226 4654/5484/226 +f 4638/5466/226 4639/5467/226 4654/5484/226 +f 4639/5467/226 4640/5468/226 4654/5484/226 +f 4640/5468/226 4655/5485/226 4654/5484/226 +f 4655/5485/226 4640/5468/226 4656/5486/245 +f 4640/5468/226 4641/5469/690 4656/5486/245 +f 4641/5469/690 4642/5470/226 4656/5486/245 +f 4642/5470/226 4657/5487/226 4656/5486/245 +f 4528/5488/226 4657/5487/226 4642/5470/226 +f 4529/5471/226 4528/5488/226 4642/5470/226 +f 4658/5186/6298 4659/5188/6299 4660/5187/6300 +f 4659/5188/6299 4661/5189/6301 4660/5187/6300 +f 4659/5188/6299 4662/5190/6302 4661/5189/6301 +f 4662/5190/6302 4663/5191/6303 4661/5189/6301 +f 4662/5190/6302 4664/5192/6304 4663/5191/6303 +f 4664/5192/6304 4665/5193/6305 4663/5191/6303 +f 4664/5192/6304 4666/5194/6306 4665/5193/6305 +f 4666/5194/6306 4667/5195/6307 4665/5193/6305 +f 4666/5194/6306 4668/5196/6308 4667/5195/6307 +f 4668/5196/6308 4669/5197/6309 4667/5195/6307 +f 4668/5196/6308 4670/5198/6310 4669/5197/6309 +f 4670/5198/6310 4671/5199/6311 4669/5197/6309 +f 4670/5198/6310 4672/5200/6312 4671/5199/6311 +f 4672/5200/6312 4673/5201/6313 4671/5199/6311 +f 4672/5200/6312 4674/5202/6314 4673/5201/6313 +f 4674/5202/6314 4675/5203/6315 4673/5201/6313 +f 4674/5202/6314 4676/5204/6316 4675/5203/6315 +f 4676/5204/6316 4677/5205/6317 4675/5203/6315 +f 4676/5204/6316 4678/5206/6318 4677/5205/6317 +f 4678/5206/6318 4679/5207/6319 4677/5205/6317 +f 4678/5206/6318 4680/5208/6320 4679/5207/6319 +f 4680/5208/6320 4681/5209/6321 4679/5207/6319 +f 4680/5208/6320 4658/5210/6322 4681/5209/6321 +f 4658/5210/6322 4660/5211/6323 4681/5209/6321 +f 4682/5489/6324 4683/5490/6325 4684/5491/6326 +f 4683/5490/6325 4685/5492/6327 4684/5491/6326 +f 4683/5490/6325 4686/5493/6328 4685/5492/6327 +f 4686/5493/6328 4687/5494/6329 4685/5492/6327 +f 4686/5493/6328 4688/5495/6330 4687/5494/6329 +f 4685/5492/6327 4689/5496/6331 4684/5491/6326 +f 4685/5492/6327 4687/5494/6329 4689/5496/6331 +f 4688/5495/6330 4690/5497/6332 4687/5494/6329 +f 4691/5498/6333 4690/5497/6332 4688/5495/6330 +f 4692/5499/6334 4691/5498/6333 4688/5495/6330 +f 4687/5494/6329 4690/5497/6332 4693/5500/6335 +f 4687/5494/6329 4693/5500/6335 4689/5496/6331 +f 4690/5497/6332 4691/5498/6333 4694/5501/6336 +f 4690/5497/6332 4694/5501/6336 4693/5500/6335 +f 4689/5496/6331 4695/5502/6337 4684/5491/6326 +f 4696/5503/6338 4691/5498/6333 4692/5499/6334 +f 4691/5498/6333 4697/5504/6339 4694/5501/6336 +f 4691/5498/6333 4696/5503/6338 4697/5504/6339 +f 4698/5505/6340 4696/5503/6338 4692/5499/6334 +f 4693/5500/6335 4699/5506/6341 4689/5496/6331 +f 4694/5501/6336 4700/5507/6342 4693/5500/6335 +f 4700/5507/6342 4699/5506/6341 4693/5500/6335 +f 4689/5496/6331 4701/5508/6343 4695/5502/6337 +f 4699/5506/6341 4701/5508/6343 4689/5496/6331 +f 4697/5504/6339 4702/5509/6344 4694/5501/6336 +f 4702/5509/6344 4700/5507/6342 4694/5501/6336 +f 4696/5503/6338 4703/5510/6345 4697/5504/6339 +f 4704/5511/6346 4702/5509/6344 4697/5504/6339 +f 4703/5510/6345 4704/5511/6346 4697/5504/6339 +f 4701/5508/6343 4705/5512/6347 4695/5502/6337 +f 4701/5508/6343 4699/5506/6341 4706/5513/6348 +f 4699/5506/6341 4700/5507/6342 4707/5514/6349 +f 4699/5506/6341 4707/5514/6349 4706/5513/6348 +f 4705/5512/6347 4701/5508/6343 4708/5515/6350 +f 4701/5508/6343 4706/5513/6348 4708/5515/6350 +f 4700/5507/6342 4702/5509/6344 4709/5516/6351 +f 4700/5507/6342 4709/5516/6351 4707/5514/6349 +f 4704/5511/6346 4710/5517/6352 4702/5509/6344 +f 4702/5509/6344 4711/5518/6353 4709/5516/6351 +f 4710/5517/6352 4711/5518/6353 4702/5509/6344 +f 4708/5515/6350 4706/5513/6348 4712/5519/6354 +f 4706/5513/6348 4707/5514/6349 4713/5520/6355 +f 4706/5513/6348 4713/5520/6355 4712/5519/6354 +f 4707/5514/6349 4709/5516/6351 4714/5521/6356 +f 4707/5514/6349 4714/5521/6356 4713/5520/6355 +f 4709/5516/6351 4711/5518/6353 4715/5522/6357 +f 4709/5516/6351 4715/5522/6357 4714/5521/6356 +f 4711/5518/6353 4710/5517/6352 4716/5523/6358 +f 4711/5518/6353 4716/5523/6358 4715/5522/6357 +f 4712/5519/6354 4713/5520/6355 4717/5524/6359 +f 4713/5520/6355 4714/5521/6356 4718/5525/6360 +f 4713/5520/6355 4718/5525/6360 4717/5524/6359 +f 4714/5521/6356 4715/5522/6357 4719/5526/6361 +f 4714/5521/6356 4719/5526/6361 4718/5525/6360 +f 4710/5517/6352 4720/5527/6362 4716/5523/6358 +f 4715/5522/6357 4716/5523/6358 4721/5528/6363 +f 4715/5522/6357 4721/5528/6363 4719/5526/6361 +f 4716/5523/6358 4722/5529/6364 4721/5528/6363 +f 4716/5523/6358 4720/5527/6362 4722/5529/6364 +f 4723/5530/6365 4717/5524/6359 4718/5525/6360 +f 4724/5531/6366 4718/5525/6360 4719/5526/6361 +f 4724/5531/6366 4723/5530/6365 4718/5525/6360 +f 4725/5532/6367 4719/5526/6361 4721/5528/6363 +f 4725/5532/6367 4724/5531/6366 4719/5526/6361 +f 4726/5533/6368 4721/5528/6363 4722/5529/6364 +f 4726/5533/6368 4725/5532/6367 4721/5528/6363 +f 4720/5527/6362 4727/5534/6369 4722/5529/6364 +f 4728/5535/6370 4726/5533/6368 4722/5529/6364 +f 4728/5535/6370 4722/5529/6364 4727/5534/6369 +f 4729/5536/6371 4723/5530/6365 4724/5531/6366 +f 4730/5537/6372 4724/5531/6366 4725/5532/6367 +f 4730/5537/6372 4729/5536/6371 4724/5531/6366 +f 4731/5538/6373 4725/5532/6367 4726/5533/6368 +f 4731/5538/6373 4730/5537/6372 4725/5532/6367 +f 4732/5539/6374 4726/5533/6368 4728/5535/6370 +f 4732/5539/6374 4731/5538/6373 4726/5533/6368 +f 4733/5540/6375 4728/5535/6370 4727/5534/6369 +f 4734/5541/6376 4732/5539/6374 4728/5535/6370 +f 4734/5541/6376 4728/5535/6370 4733/5540/6375 +f 4729/5536/6371 4730/5537/6372 4735/5542/6377 +f 4730/5537/6372 4731/5538/6373 4736/5543/6378 +f 4735/5542/6377 4730/5537/6372 4736/5543/6378 +f 4731/5538/6373 4732/5539/6374 4737/5544/6379 +f 4736/5543/6378 4731/5538/6373 4737/5544/6379 +f 4732/5539/6374 4734/5541/6376 4738/5545/6380 +f 4737/5544/6379 4732/5539/6374 4738/5545/6380 +f 4739/5546/6381 4729/5536/6371 4735/5542/6377 +f 4740/5547/6382 4734/5541/6376 4733/5540/6375 +f 4738/5545/6380 4734/5541/6376 4741/5548/6383 +f 4734/5541/6376 4740/5547/6382 4741/5548/6383 +f 4735/5542/6377 4736/5543/6378 4742/5549/6384 +f 4736/5543/6378 4737/5544/6379 4743/5550/6385 +f 4742/5549/6384 4736/5543/6378 4743/5550/6385 +f 4739/5546/6381 4735/5542/6377 4744/5551/6386 +f 4744/5551/6386 4735/5542/6377 4742/5549/6384 +f 4737/5544/6379 4738/5545/6380 4745/5552/6387 +f 4743/5550/6385 4737/5544/6379 4745/5552/6387 +f 4738/5545/6380 4741/5548/6383 4746/5553/6388 +f 4745/5552/6387 4738/5545/6380 4746/5553/6388 +f 4747/5554/6389 4739/5546/6381 4744/5551/6386 +f 4733/5540/6375 4727/5534/6369 4748/5555/6390 +f 4740/5547/6382 4733/5540/6375 4748/5555/6390 +f 4749/5556/6391 4744/5551/6386 4742/5549/6384 +f 4750/5557/6392 4742/5549/6384 4743/5550/6385 +f 4750/5557/6392 4749/5556/6391 4742/5549/6384 +f 4751/5558/6393 4747/5554/6389 4744/5551/6386 +f 4749/5556/6391 4751/5558/6393 4744/5551/6386 +f 4743/5550/6385 4745/5552/6387 4752/5559/6394 +f 4741/5548/6383 4740/5547/6382 4753/5560/6395 +f 4745/5552/6387 4746/5553/6388 4754/5561/6396 +f 4752/5559/6394 4745/5552/6387 4754/5561/6396 +f 4755/5562/6397 4750/5557/6392 4743/5550/6385 +f 4755/5562/6397 4743/5550/6385 4752/5559/6394 +f 4746/5553/6388 4741/5548/6383 4756/5563/6398 +f 4741/5548/6383 4753/5560/6395 4756/5563/6398 +f 4751/5558/6393 4749/5556/6391 4757/5564/6399 +f 4749/5556/6391 4750/5557/6392 4758/5565/6400 +f 4757/5564/6399 4749/5556/6391 4758/5565/6400 +f 4750/5557/6392 4755/5562/6397 4759/5566/6401 +f 4758/5565/6400 4750/5557/6392 4759/5566/6401 +f 4754/5561/6396 4746/5553/6388 4760/5567/6402 +f 4746/5553/6388 4756/5563/6398 4760/5567/6402 +f 4755/5562/6397 4752/5559/6394 4761/5568/6403 +f 4761/5568/6403 4752/5559/6394 4754/5561/6396 +f 4759/5566/6401 4755/5562/6397 4761/5568/6403 +f 4762/5569/6404 4751/5558/6393 4757/5564/6399 +f 4763/5570/6405 4761/5568/6403 4754/5561/6396 +f 4763/5570/6405 4754/5561/6396 4760/5567/6402 +f 4740/5547/6382 4764/5571/6406 4753/5560/6395 +f 4764/5571/6406 4740/5547/6382 4748/5555/6390 +f 4765/5572/6407 4763/5570/6405 4760/5567/6402 +f 4765/5572/6407 4760/5567/6402 4766/5573/6408 +f 4760/5567/6402 4756/5563/6398 4766/5573/6408 +f 4767/5574/6409 4765/5572/6407 4766/5573/6408 +f 4756/5563/6398 4768/5575/6410 4766/5573/6408 +f 4767/5574/6409 4766/5573/6408 4769/5576/6411 +f 4766/5573/6408 4768/5575/6410 4769/5576/6411 +f 4756/5563/6398 4753/5560/6395 4770/5577/6412 +f 4768/5575/6410 4756/5563/6398 4770/5577/6412 +f 4770/5577/6412 4753/5560/6395 4771/5578/6413 +f 4753/5560/6395 4764/5571/6406 4771/5578/6413 +f 4772/5579/6414 4767/5574/6409 4769/5576/6411 +f 4768/5575/6410 4773/5580/6415 4769/5576/6411 +f 4768/5575/6410 4770/5577/6412 4774/5581/6416 +f 4773/5580/6415 4768/5575/6410 4774/5581/6416 +f 4775/5582/6417 4696/5503/6338 4698/5505/6340 +f 4696/5503/6338 4775/5582/6417 4703/5510/6345 +f 4772/5579/6414 4769/5576/6411 4776/5583/6418 +f 4776/5583/6418 4769/5576/6411 4777/5584/6419 +f 4769/5576/6411 4773/5580/6415 4777/5584/6419 +f 4770/5577/6412 4771/5578/6413 4778/5585/6420 +f 4774/5581/6416 4770/5577/6412 4778/5585/6420 +f 4779/5586/6421 4772/5579/6414 4776/5583/6418 +f 4703/5510/6345 4780/5587/6422 4704/5511/6346 +f 4775/5582/6417 4780/5587/6422 4703/5510/6345 +f 4776/5583/6418 4777/5584/6419 4781/5588/6423 +f 4779/5586/6421 4776/5583/6418 4782/5589/6424 +f 4782/5589/6424 4776/5583/6418 4781/5588/6423 +f 4777/5584/6419 4773/5580/6415 4783/5590/6425 +f 4773/5580/6415 4774/5581/6416 4783/5590/6425 +f 4781/5588/6423 4777/5584/6419 4784/5591/6426 +f 4777/5584/6419 4783/5590/6425 4784/5591/6426 +f 4785/5592/6427 4710/5517/6352 4704/5511/6346 +f 4774/5581/6416 4778/5585/6420 4786/5593/6428 +f 4783/5590/6425 4774/5581/6416 4786/5593/6428 +f 4787/5594/6429 4779/5586/6421 4782/5589/6424 +f 4782/5589/6424 4781/5588/6423 4788/5595/6430 +f 4787/5594/6429 4782/5589/6424 4789/5596/6431 +f 4789/5596/6431 4782/5589/6424 4788/5595/6430 +f 4781/5588/6423 4784/5591/6426 4790/5597/6432 +f 4788/5595/6430 4781/5588/6423 4790/5597/6432 +f 4784/5591/6426 4783/5590/6425 4791/5598/6433 +f 4783/5590/6425 4786/5593/6428 4791/5598/6433 +f 4792/5599/6434 4720/5527/6362 4710/5517/6352 +f 4785/5592/6427 4792/5599/6434 4710/5517/6352 +f 4790/5597/6432 4784/5591/6426 4793/5600/6435 +f 4784/5591/6426 4791/5598/6433 4793/5600/6435 +f 4794/5601/6436 4787/5594/6429 4789/5596/6431 +f 4789/5596/6431 4788/5595/6430 4795/5602/6437 +f 4794/5601/6436 4789/5596/6431 4796/5603/6438 +f 4796/5603/6438 4789/5596/6431 4795/5602/6437 +f 4788/5595/6430 4790/5597/6432 4797/5604/6439 +f 4795/5602/6437 4788/5595/6430 4797/5604/6439 +f 4790/5597/6432 4793/5600/6435 4798/5605/6440 +f 4797/5604/6439 4790/5597/6432 4798/5605/6440 +f 4793/5600/6435 4791/5598/6433 4799/5606/6441 +f 4800/5607/6442 4727/5534/6369 4720/5527/6362 +f 4727/5534/6369 4800/5607/6442 4748/5555/6390 +f 4792/5599/6434 4800/5607/6442 4720/5527/6362 +f 4798/5605/6440 4793/5600/6435 4801/5608/6443 +f 4793/5600/6435 4799/5606/6441 4801/5608/6443 +f 4802/5609/6444 4794/5601/6436 4796/5603/6438 +f 4796/5603/6438 4795/5602/6437 4803/5610/6445 +f 4795/5602/6437 4797/5604/6439 4804/5611/6446 +f 4803/5610/6445 4795/5602/6437 4804/5611/6446 +f 4802/5609/6444 4796/5603/6438 4805/5612/6447 +f 4805/5612/6447 4796/5603/6438 4803/5610/6445 +f 4797/5604/6439 4798/5605/6440 4806/5613/6448 +f 4804/5611/6446 4797/5604/6439 4806/5613/6448 +f 4798/5605/6440 4801/5608/6443 4807/5614/6449 +f 4806/5613/6448 4798/5605/6440 4807/5614/6449 +f 4808/5615/6450 4802/5609/6444 4805/5612/6447 +f 4805/5612/6447 4803/5610/6445 4809/5616/6451 +f 4808/5615/6450 4805/5612/6447 4810/5617/6452 +f 4810/5617/6452 4805/5612/6447 4809/5616/6451 +f 4803/5610/6445 4804/5611/6446 4811/5618/6453 +f 4809/5616/6451 4803/5610/6445 4811/5618/6453 +f 4804/5611/6446 4806/5613/6448 4812/5619/6454 +f 4811/5618/6453 4804/5611/6446 4812/5619/6454 +f 4806/5613/6448 4807/5614/6449 4813/5620/6455 +f 4812/5619/6454 4806/5613/6448 4813/5620/6455 +f 4814/5621/6456 4808/5615/6450 4810/5617/6452 +f 4810/5617/6452 4809/5616/6451 4815/5622/6457 +f 4814/5621/6456 4810/5617/6452 4816/5623/6458 +f 4809/5616/6451 4811/5618/6453 4817/5624/6459 +f 4815/5622/6457 4809/5616/6451 4817/5624/6459 +f 4810/5617/6452 4818/5625/6460 4816/5623/6458 +f 4818/5625/6460 4810/5617/6452 4815/5622/6457 +f 4811/5618/6453 4812/5619/6454 4819/5626/6461 +f 4817/5624/6459 4811/5618/6453 4819/5626/6461 +f 4812/5619/6454 4813/5620/6455 4820/5627/6462 +f 4819/5626/6461 4812/5619/6454 4820/5627/6462 +f 4816/5623/6458 4818/5625/6460 4821/5628/6463 +f 4818/5625/6460 4815/5622/6457 4822/5629/6464 +f 4815/5622/6457 4817/5624/6459 4823/5630/6465 +f 4822/5629/6464 4815/5622/6457 4823/5630/6465 +f 4818/5625/6460 4824/5631/6466 4821/5628/6463 +f 4824/5631/6466 4818/5625/6460 4822/5629/6464 +f 4801/5608/6443 4825/5632/6467 4807/5614/6449 +f 4817/5624/6459 4819/5626/6461 4826/5633/6468 +f 4823/5630/6465 4817/5624/6459 4826/5633/6468 +f 4819/5626/6461 4820/5627/6462 4827/5634/6469 +f 4826/5633/6468 4819/5626/6461 4827/5634/6469 +f 4813/5620/6455 4807/5614/6449 4828/5635/6470 +f 4821/5628/6463 4824/5631/6466 4829/5636/6471 +f 4824/5631/6466 4822/5629/6464 4830/5637/6472 +f 4820/5627/6462 4813/5620/6455 4831/5638/6473 +f 4813/5620/6455 4828/5635/6470 4831/5638/6473 +f 4822/5629/6464 4823/5630/6465 4832/5639/6474 +f 4823/5630/6465 4826/5633/6468 4832/5639/6474 +f 4830/5637/6472 4822/5629/6464 4832/5639/6474 +f 4824/5631/6466 4833/5640/6475 4829/5636/6471 +f 4833/5640/6475 4824/5631/6466 4830/5637/6472 +f 4771/5578/6413 4764/5571/6406 4834/5641/6476 +f 4764/5571/6406 4748/5555/6390 4834/5641/6476 +f 4748/5555/6390 4800/5607/6442 4834/5641/6476 +f 4826/5633/6468 4827/5634/6469 4835/5642/6477 +f 4826/5633/6468 4836/5643/6478 4832/5639/6474 +f 4836/5643/6478 4826/5633/6468 4835/5642/6477 +f 4827/5634/6469 4820/5627/6462 4837/5644/6479 +f 4820/5627/6462 4831/5638/6473 4837/5644/6479 +f 4778/5585/6420 4771/5578/6413 4838/5645/6480 +f 4771/5578/6413 4834/5641/6476 4838/5645/6480 +f 4829/5636/6471 4833/5640/6475 4762/5646/6481 +f 4833/5640/6475 4830/5637/6472 4747/5647/6482 +f 4830/5637/6472 4832/5639/6474 4739/5648/6483 +f 4832/5639/6474 4836/5643/6478 4739/5648/6483 +f 4747/5647/6482 4830/5637/6472 4739/5648/6483 +f 4833/5640/6475 4751/5649/6484 4762/5646/6481 +f 4751/5649/6484 4833/5640/6475 4747/5647/6482 +f 4835/5642/6477 4827/5634/6469 4839/5650/6485 +f 4827/5634/6469 4837/5644/6479 4839/5650/6485 +f 4836/5643/6478 4835/5642/6477 4723/5651/6486 +f 4799/5606/6441 4840/5652/6487 4801/5608/6443 +f 4840/5652/6487 4825/5632/6467 4801/5608/6443 +f 4786/5593/6428 4778/5585/6420 4841/5653/6488 +f 4778/5585/6420 4838/5645/6480 4841/5653/6488 +f 4836/5643/6478 4729/5654/6489 4739/5648/6483 +f 4729/5654/6489 4836/5643/6478 4723/5651/6486 +f 4807/5614/6449 4842/5655/6490 4828/5635/6470 +f 4825/5632/6467 4842/5655/6490 4807/5614/6449 +f 4723/5651/6486 4835/5642/6477 4717/5656/6491 +f 4835/5642/6477 4839/5650/6485 4717/5656/6491 +f 4791/5598/6433 4786/5593/6428 4843/5657/6492 +f 4791/5598/6433 4843/5657/6492 4799/5606/6441 +f 4786/5593/6428 4841/5653/6488 4843/5657/6492 +f 4712/5658/6493 4717/5656/6491 4839/5650/6485 +f 4844/5659/6494 4839/5650/6485 4837/5644/6479 +f 4844/5659/6494 4712/5658/6493 4839/5650/6485 +f 4845/5660/6495 4837/5644/6479 4831/5638/6473 +f 4845/5660/6495 4844/5659/6494 4837/5644/6479 +f 4846/5661/6496 4845/5660/6495 4831/5638/6473 +f 4846/5661/6496 4831/5638/6473 4828/5635/6470 +f 4708/5662/6497 4712/5658/6493 4844/5659/6494 +f 4847/5663/6498 4844/5659/6494 4845/5660/6495 +f 4847/5663/6498 4708/5662/6497 4844/5659/6494 +f 4848/5664/6499 4845/5660/6495 4846/5661/6496 +f 4848/5664/6499 4847/5663/6498 4845/5660/6495 +f 4849/5665/6500 4846/5661/6496 4828/5635/6470 +f 4849/5665/6500 4828/5635/6470 4842/5655/6490 +f 4850/5666/6501 4775/5582/6417 4698/5505/6340 +f 4851/5667/6502 4848/5664/6499 4846/5661/6496 +f 4851/5667/6502 4846/5661/6496 4849/5665/6500 +f 4705/5668/6503 4708/5662/6497 4847/5663/6498 +f 4852/5669/6504 4847/5663/6498 4848/5664/6499 +f 4852/5669/6504 4705/5668/6503 4847/5663/6498 +f 4780/5587/6422 4853/5670/6505 4704/5511/6346 +f 4853/5670/6505 4785/5592/6427 4704/5511/6346 +f 4854/5671/6506 4848/5664/6499 4851/5667/6502 +f 4854/5671/6506 4852/5669/6504 4848/5664/6499 +f 4855/5672/6507 4851/5667/6502 4849/5665/6500 +f 4856/5673/6508 4849/5665/6500 4842/5655/6490 +f 4855/5672/6507 4849/5665/6500 4856/5673/6508 +f 4857/5674/6509 4854/5671/6506 4851/5667/6502 +f 4857/5674/6509 4851/5667/6502 4855/5672/6507 +f 4842/5655/6490 4825/5632/6467 4858/5675/6510 +f 4856/5673/6508 4842/5655/6490 4858/5675/6510 +f 4705/5668/6503 4852/5669/6504 4859/5676/6511 +f 4852/5669/6504 4854/5671/6506 4860/5677/6512 +f 4859/5676/6511 4852/5669/6504 4860/5677/6512 +f 4854/5671/6506 4857/5674/6509 4861/5678/6513 +f 4860/5677/6512 4854/5671/6506 4861/5678/6513 +f 4862/5679/6514 4857/5674/6509 4855/5672/6507 +f 4695/5680/6515 4705/5668/6503 4859/5676/6511 +f 4863/5681/6516 4855/5672/6507 4856/5673/6508 +f 4862/5679/6514 4855/5672/6507 4863/5681/6516 +f 4861/5678/6513 4857/5674/6509 4864/5682/6517 +f 4857/5674/6509 4862/5679/6514 4864/5682/6517 +f 4859/5676/6511 4860/5677/6512 4865/5683/6518 +f 4860/5677/6512 4861/5678/6513 4866/5684/6519 +f 4865/5683/6518 4860/5677/6512 4866/5684/6519 +f 4695/5680/6515 4859/5676/6511 4867/5685/6520 +f 4867/5685/6520 4859/5676/6511 4865/5683/6518 +f 4861/5678/6513 4864/5682/6517 4868/5686/6521 +f 4866/5684/6519 4861/5678/6513 4868/5686/6521 +f 4856/5673/6508 4858/5675/6510 4869/5687/6522 +f 4863/5681/6516 4856/5673/6508 4869/5687/6522 +f 4858/5675/6510 4825/5632/6467 4870/5688/6523 +f 4825/5632/6467 4840/5652/6487 4870/5688/6523 +f 4871/5689/6524 4840/5652/6487 4799/5606/6441 +f 4843/5657/6492 4871/5689/6524 4799/5606/6441 +f 4684/5690/6525 4695/5680/6515 4867/5685/6520 +f 4864/5682/6517 4862/5679/6514 4872/5691/6526 +f 4872/5691/6526 4862/5679/6514 4863/5681/6516 +f 4873/5692/6527 4867/5685/6520 4865/5683/6518 +f 4682/5693/6528 4684/5690/6525 4867/5685/6520 +f 4873/5692/6527 4682/5693/6528 4867/5685/6520 +f 4868/5686/6521 4864/5682/6517 4874/5694/6529 +f 4875/5695/6530 4865/5683/6518 4866/5684/6519 +f 4875/5695/6530 4873/5692/6527 4865/5683/6518 +f 4876/5696/6531 4866/5684/6519 4868/5686/6521 +f 4876/5696/6531 4875/5695/6530 4866/5684/6519 +f 4864/5682/6517 4877/5697/6532 4874/5694/6529 +f 4877/5697/6532 4864/5682/6517 4872/5691/6526 +f 4878/5698/6533 4876/5696/6531 4868/5686/6521 +f 4878/5698/6533 4868/5686/6521 4874/5694/6529 +f 4872/5691/6526 4863/5681/6516 4879/5699/6534 +f 4863/5681/6516 4869/5687/6522 4879/5699/6534 +f 4877/5697/6532 4872/5691/6526 4879/5699/6534 +f 4880/5700/6535 4878/5698/6533 4874/5694/6529 +f 4869/5687/6522 4858/5675/6510 4881/5701/6536 +f 4858/5675/6510 4870/5688/6523 4881/5701/6536 +f 4874/5694/6529 4877/5697/6532 4882/5702/6537 +f 4880/5700/6535 4874/5694/6529 4882/5702/6537 +f 4877/5697/6532 4883/5703/6538 4882/5702/6537 +f 4883/5703/6538 4877/5697/6532 4879/5699/6534 +f 4884/5704/6539 4880/5700/6535 4882/5702/6537 +f 4882/5702/6537 4883/5703/6538 4885/5705/6540 +f 4884/5704/6539 4882/5702/6537 4886/5706/6541 +f 4882/5702/6537 4885/5705/6540 4886/5706/6541 +f 4883/5703/6538 4879/5699/6534 4887/5707/6542 +f 4879/5699/6534 4869/5687/6522 4887/5707/6542 +f 4869/5687/6522 4881/5701/6536 4887/5707/6542 +f 4883/5703/6538 4888/5708/6543 4885/5705/6540 +f 4888/5708/6543 4883/5703/6538 4887/5707/6542 +f 4886/5706/6541 4885/5705/6540 4889/5709/6544 +f 4885/5705/6540 4888/5708/6543 4890/5710/6545 +f 4885/5705/6540 4890/5710/6545 4889/5709/6544 +f 4888/5708/6543 4887/5707/6542 4891/5711/6546 +f 4887/5707/6542 4881/5701/6536 4891/5711/6546 +f 4888/5708/6543 4892/5712/6547 4890/5710/6545 +f 4892/5712/6547 4888/5708/6543 4891/5711/6546 +f 4881/5701/6536 4870/5688/6523 4893/5713/6548 +f 4881/5701/6536 4893/5713/6548 4891/5711/6546 +f 4889/5709/6544 4890/5710/6545 4894/5714/6549 +f 4870/5688/6523 4895/5715/6550 4893/5713/6548 +f 4870/5688/6523 4840/5652/6487 4895/5715/6550 +f 4840/5652/6487 4871/5689/6524 4895/5715/6550 +f 4890/5710/6545 4892/5712/6547 4896/5716/6551 +f 4892/5712/6547 4891/5711/6546 4897/5717/6552 +f 4891/5711/6546 4893/5713/6548 4897/5717/6552 +f 4896/5716/6551 4892/5712/6547 4897/5717/6552 +f 4890/5710/6545 4898/5718/6553 4894/5714/6549 +f 4898/5718/6553 4890/5710/6545 4896/5716/6551 +f 4893/5713/6548 4895/5715/6550 4899/5719/6554 +f 4893/5713/6548 4899/5719/6554 4897/5717/6552 +f 4895/5715/6550 4900/5720/6555 4899/5719/6554 +f 4895/5715/6550 4871/5689/6524 4900/5720/6555 +f 4894/5714/6549 4898/5718/6553 4901/5721/6556 +f 4898/5718/6553 4896/5716/6551 4902/5722/6557 +f 4896/5716/6551 4897/5717/6552 4903/5723/6558 +f 4897/5717/6552 4899/5719/6554 4903/5723/6558 +f 4902/5722/6557 4896/5716/6551 4903/5723/6558 +f 4898/5718/6553 4904/5724/6559 4901/5721/6556 +f 4904/5724/6559 4898/5718/6553 4902/5722/6557 +f 4899/5719/6554 4900/5720/6555 4905/5725/6560 +f 4899/5719/6554 4905/5725/6560 4903/5723/6558 +f 4871/5689/6524 4906/5726/6561 4900/5720/6555 +f 4906/5726/6561 4871/5689/6524 4843/5657/6492 +f 4841/5653/6488 4906/5726/6561 4843/5657/6492 +f 4900/5720/6555 4907/5727/6562 4905/5725/6560 +f 4900/5720/6555 4906/5726/6561 4907/5727/6562 +f 4901/5721/6556 4904/5724/6559 4908/5728/6563 +f 4904/5724/6559 4902/5722/6557 4909/5729/6564 +f 4780/5587/6422 4909/5729/6564 4853/5670/6505 +f 4902/5722/6557 4903/5723/6558 4910/5730/6565 +f 4903/5723/6558 4905/5725/6560 4910/5730/6565 +f 4909/5729/6564 4902/5722/6557 4910/5730/6565 +f 4909/5729/6564 4910/5730/6565 4853/5670/6505 +f 4904/5724/6559 4911/5731/6566 4908/5728/6563 +f 4911/5731/6566 4904/5724/6559 4909/5729/6564 +f 4908/5728/6563 4911/5731/6566 4850/5666/6501 +f 4911/5731/6566 4909/5729/6564 4780/5587/6422 +f 4911/5731/6566 4775/5582/6417 4850/5666/6501 +f 4775/5582/6417 4911/5731/6566 4780/5587/6422 +f 4905/5725/6560 4907/5727/6562 4912/5732/6567 +f 4905/5725/6560 4912/5732/6567 4910/5730/6565 +f 4910/5730/6565 4912/5732/6567 4853/5670/6505 +f 4912/5732/6567 4785/5592/6427 4853/5670/6505 +f 4906/5726/6561 4913/5733/6568 4907/5727/6562 +f 4913/5733/6568 4906/5726/6561 4841/5653/6488 +f 4838/5645/6480 4913/5733/6568 4841/5653/6488 +f 4907/5727/6562 4914/5734/6569 4912/5732/6567 +f 4907/5727/6562 4913/5733/6568 4914/5734/6569 +f 4912/5732/6567 4914/5734/6569 4785/5592/6427 +f 4914/5734/6569 4792/5599/6434 4785/5592/6427 +f 4913/5733/6568 4915/5735/6570 4914/5734/6569 +f 4914/5734/6569 4915/5735/6570 4792/5599/6434 +f 4915/5735/6570 4913/5733/6568 4838/5645/6480 +f 4915/5735/6570 4800/5607/6442 4792/5599/6434 +f 4800/5607/6442 4915/5735/6570 4834/5641/6476 +f 4834/5641/6476 4915/5735/6570 4838/5645/6480 +f 4916/5736/6571 4917/5737/6572 4918/5738/6573 +f 4917/5737/6572 4919/5739/6574 4918/5738/6573 +f 4920/5740/6575 4919/5739/6574 4917/5737/6572 +f 4921/5741/6576 4920/5740/6575 4917/5737/6572 +f 4918/5738/6573 4919/5739/6574 4922/5742/6577 +f 4923/5743/6578 4920/5740/6575 4921/5741/6576 +f 4919/5739/6574 4920/5740/6575 4924/5744/6579 +f 4919/5739/6574 4924/5744/6579 4922/5742/6577 +f 4925/5745/6580 4923/5743/6578 4921/5741/6576 +f 4925/5745/6580 4926/5746/6581 4923/5743/6578 +f 4923/5743/6578 4927/5747/6582 4920/5740/6575 +f 4920/5740/6575 4928/5748/6583 4924/5744/6579 +f 4927/5747/6582 4928/5748/6583 4920/5740/6575 +f 4926/5746/6581 4929/5749/6584 4923/5743/6578 +f 4923/5743/6578 4929/5749/6584 4927/5747/6582 +f 4926/5746/6581 4930/5750/6585 4929/5749/6584 +f 4922/5742/6577 4924/5744/6579 4931/5751/6586 +f 4924/5744/6579 4928/5748/6583 4932/5752/6587 +f 4924/5744/6579 4932/5752/6587 4931/5751/6586 +f 4930/5750/6585 4933/5753/6588 4929/5749/6584 +f 4927/5747/6582 4934/5754/6589 4928/5748/6583 +f 4930/5750/6585 4935/5755/6590 4933/5753/6588 +f 4929/5749/6584 4936/5756/6591 4927/5747/6582 +f 4929/5749/6584 4933/5753/6588 4936/5756/6591 +f 4927/5747/6582 4936/5756/6591 4934/5754/6589 +f 4928/5748/6583 4937/5757/6592 4932/5752/6587 +f 4934/5754/6589 4937/5757/6592 4928/5748/6583 +f 4935/5755/6590 4938/5758/6593 4933/5753/6588 +f 4933/5753/6588 4939/5759/6594 4936/5756/6591 +f 4933/5753/6588 4938/5758/6593 4939/5759/6594 +f 4932/5752/6587 4940/5760/6595 4931/5751/6586 +f 4932/5752/6587 4937/5757/6592 4940/5760/6595 +f 4938/5758/6593 4935/5755/6590 4941/5761/6596 +f 4934/5754/6589 4942/5762/6597 4937/5757/6592 +f 4936/5756/6591 4943/5763/6598 4934/5754/6589 +f 4936/5756/6591 4939/5759/6594 4943/5763/6598 +f 4934/5754/6589 4943/5763/6598 4942/5762/6597 +f 4937/5757/6592 4944/5764/6599 4940/5760/6595 +f 4942/5762/6597 4944/5764/6599 4937/5757/6592 +f 4940/5760/6595 4945/5765/6600 4931/5751/6586 +f 4938/5758/6593 4946/5766/6601 4939/5759/6594 +f 4939/5759/6594 4947/5767/6602 4943/5763/6598 +f 4939/5759/6594 4946/5766/6601 4947/5767/6602 +f 4940/5760/6595 4944/5764/6599 4948/5768/6603 +f 4940/5760/6595 4948/5768/6603 4945/5765/6600 +f 4942/5762/6597 4949/5769/6604 4944/5764/6599 +f 4944/5764/6599 4950/5770/6605 4948/5768/6603 +f 4949/5769/6604 4950/5770/6605 4944/5764/6599 +f 4943/5763/6598 4951/5771/6606 4942/5762/6597 +f 4943/5763/6598 4947/5767/6602 4951/5771/6606 +f 4952/5772/6607 4949/5769/6604 4942/5762/6597 +f 4951/5771/6606 4952/5772/6607 4942/5762/6597 +f 4948/5768/6603 4953/5773/6608 4945/5765/6600 +f 4948/5768/6603 4950/5770/6605 4954/5774/6609 +f 4948/5768/6603 4954/5774/6609 4953/5773/6608 +f 4950/5770/6605 4949/5769/6604 4955/5775/6610 +f 4950/5770/6605 4955/5775/6610 4954/5774/6609 +f 4952/5772/6607 4956/5776/6611 4949/5769/6604 +f 4949/5769/6604 4957/5777/6612 4955/5775/6610 +f 4956/5776/6611 4957/5777/6612 4949/5769/6604 +f 4954/5774/6609 4958/5778/6613 4953/5773/6608 +f 4954/5774/6609 4955/5775/6610 4959/5779/6614 +f 4954/5774/6609 4959/5779/6614 4958/5778/6613 +f 4955/5775/6610 4957/5777/6612 4960/5780/6615 +f 4955/5775/6610 4960/5780/6615 4959/5779/6614 +f 4961/5781/6616 4956/5776/6611 4952/5772/6607 +f 4956/5776/6611 4962/5782/6617 4957/5777/6612 +f 4957/5777/6612 4963/5783/6618 4960/5780/6615 +f 4962/5782/6617 4963/5783/6618 4957/5777/6612 +f 4964/5784/6619 4962/5782/6617 4956/5776/6611 +f 4961/5781/6616 4964/5784/6619 4956/5776/6611 +f 4959/5779/6614 4965/5785/6620 4958/5778/6613 +f 4959/5779/6614 4960/5780/6615 4966/5786/6621 +f 4959/5779/6614 4966/5786/6621 4965/5785/6620 +f 4960/5780/6615 4963/5783/6618 4967/5787/6622 +f 4960/5780/6615 4967/5787/6622 4966/5786/6621 +f 4962/5782/6617 4968/5788/6623 4963/5783/6618 +f 4964/5784/6619 4969/5789/6624 4962/5782/6617 +f 4969/5789/6624 4968/5788/6623 4962/5782/6617 +f 4963/5783/6618 4970/5790/6625 4967/5787/6622 +f 4968/5788/6623 4970/5790/6625 4963/5783/6618 +f 4966/5786/6621 4971/5791/6626 4965/5785/6620 +f 4966/5786/6621 4967/5787/6622 4972/5792/6627 +f 4966/5786/6621 4972/5792/6627 4971/5791/6626 +f 4967/5787/6622 4970/5790/6625 4973/5793/6628 +f 4967/5787/6622 4973/5793/6628 4972/5792/6627 +f 4968/5788/6623 4974/5794/6629 4970/5790/6625 +f 4970/5790/6625 4975/5795/6630 4973/5793/6628 +f 4974/5794/6629 4975/5795/6630 4970/5790/6625 +f 4969/5789/6624 4976/5796/6631 4968/5788/6623 +f 4976/5796/6631 4974/5794/6629 4968/5788/6623 +f 4972/5792/6627 4977/5797/6632 4971/5791/6626 +f 4972/5792/6627 4973/5793/6628 4978/5798/6633 +f 4972/5792/6627 4978/5798/6633 4977/5797/6632 +f 4973/5793/6628 4975/5795/6630 4979/5799/6634 +f 4973/5793/6628 4979/5799/6634 4978/5798/6633 +f 4974/5794/6629 4980/5800/6635 4975/5795/6630 +f 4975/5795/6630 4981/5801/6636 4979/5799/6634 +f 4980/5800/6635 4981/5801/6636 4975/5795/6630 +f 4976/5796/6631 4982/5802/6637 4974/5794/6629 +f 4982/5802/6637 4980/5800/6635 4974/5794/6629 +f 4978/5798/6633 4983/5803/6638 4977/5797/6632 +f 4979/5799/6634 4984/5804/6639 4978/5798/6633 +f 4979/5799/6634 4981/5801/6636 4984/5804/6639 +f 4978/5798/6633 4985/5805/6640 4983/5803/6638 +f 4984/5804/6639 4985/5805/6640 4978/5798/6633 +f 4980/5800/6635 4986/5806/6641 4981/5801/6636 +f 4981/5801/6636 4987/5807/6642 4984/5804/6639 +f 4986/5806/6641 4987/5807/6642 4981/5801/6636 +f 4982/5802/6637 4988/5808/6643 4980/5800/6635 +f 4988/5808/6643 4986/5806/6641 4980/5800/6635 +f 4985/5805/6640 4989/5809/6644 4983/5803/6638 +f 4984/5804/6639 4990/5810/6645 4985/5805/6640 +f 4984/5804/6639 4987/5807/6642 4990/5810/6645 +f 4985/5805/6640 4991/5811/6646 4989/5809/6644 +f 4990/5810/6645 4991/5811/6646 4985/5805/6640 +f 4986/5806/6641 4992/5812/6647 4987/5807/6642 +f 4987/5807/6642 4993/5813/6648 4990/5810/6645 +f 4992/5812/6647 4993/5813/6648 4987/5807/6642 +f 4988/5808/6643 4994/5814/6649 4986/5806/6641 +f 4994/5814/6649 4992/5812/6647 4986/5806/6641 +f 4991/5811/6646 4995/5815/6650 4989/5809/6644 +f 4990/5810/6645 4996/5816/6651 4991/5811/6646 +f 4990/5810/6645 4993/5813/6648 4996/5816/6651 +f 4995/5815/6650 4991/5811/6646 4997/5817/6652 +f 4991/5811/6646 4998/5818/6653 4997/5817/6652 +f 4996/5816/6651 4998/5818/6653 4991/5811/6646 +f 4992/5812/6647 4999/5819/6654 4993/5813/6648 +f 4994/5814/6649 5000/5820/6655 4992/5812/6647 +f 5000/5820/6655 4999/5819/6654 4992/5812/6647 +f 4993/5813/6648 5001/5821/6656 4996/5816/6651 +f 4999/5819/6654 5001/5821/6656 4993/5813/6648 +f 4997/5817/6652 4998/5818/6653 5002/5822/6657 +f 4996/5816/6651 5003/5823/6658 4998/5818/6653 +f 4996/5816/6651 5001/5821/6656 5003/5823/6658 +f 4998/5818/6653 5004/5824/6659 5002/5822/6657 +f 5003/5823/6658 5004/5824/6659 4998/5818/6653 +f 5005/5825/6660 5000/5820/6655 4994/5814/6649 +f 5001/5821/6656 4999/5819/6654 5006/5826/6661 +f 5001/5821/6656 5006/5826/6661 5003/5823/6658 +f 4999/5819/6654 5000/5820/6655 5007/5827/6662 +f 4999/5819/6654 5007/5827/6662 5006/5826/6661 +f 5000/5820/6655 5008/5828/6663 5007/5827/6662 +f 5000/5820/6655 5005/5825/6660 5008/5828/6663 +f 5002/5822/6657 5004/5824/6659 5009/5829/6664 +f 5003/5823/6658 5010/5830/6665 5004/5824/6659 +f 5006/5826/6661 5011/5831/6666 5003/5823/6658 +f 5006/5826/6661 5007/5827/6662 5011/5831/6666 +f 5011/5831/6666 5010/5830/6665 5003/5823/6658 +f 5004/5824/6659 5012/5832/6667 5009/5829/6664 +f 5010/5830/6665 5012/5832/6667 5004/5824/6659 +f 5007/5827/6662 5008/5828/6663 5013/5833/6668 +f 5007/5827/6662 5013/5833/6668 5011/5831/6666 +f 5005/5825/6660 5014/5834/6669 5008/5828/6663 +f 5008/5828/6663 5015/5835/6670 5013/5833/6668 +f 5008/5828/6663 5014/5834/6669 5015/5835/6670 +f 5009/5829/6664 5012/5832/6667 5016/5836/6671 +f 5017/5837/6672 4938/5758/6593 4941/5761/6596 +f 4946/5766/6601 4938/5758/6593 5017/5837/6672 +f 5010/5830/6665 5018/5838/6673 5012/5832/6667 +f 5011/5831/6666 5019/5839/6674 5010/5830/6665 +f 5011/5831/6666 5013/5833/6668 5019/5839/6674 +f 5019/5839/6674 5018/5838/6673 5010/5830/6665 +f 4946/5766/6601 5020/5840/6675 4947/5767/6602 +f 5012/5832/6667 5021/5841/6676 5016/5836/6671 +f 5018/5838/6673 5021/5841/6676 5012/5832/6667 +f 5013/5833/6668 5015/5835/6670 5022/5842/6677 +f 5013/5833/6668 5022/5842/6677 5019/5839/6674 +f 5023/5843/6678 4969/5789/6624 4964/5784/6619 +f 5014/5834/6669 5024/5844/6679 5015/5835/6670 +f 5015/5835/6670 5025/5845/6680 5022/5842/6677 +f 5015/5835/6670 5024/5844/6679 5025/5845/6680 +f 4947/5767/6602 5026/5846/6681 4951/5771/6606 +f 4951/5771/6606 5026/5846/6681 4952/5772/6607 +f 4947/5767/6602 5020/5840/6675 5026/5846/6681 +f 5016/5836/6671 5021/5841/6676 5027/5847/6682 +f 5028/5848/6683 4976/5796/6631 4969/5789/6624 +f 5023/5843/6678 5028/5848/6683 4969/5789/6624 +f 5018/5838/6673 5029/5849/6684 5021/5841/6676 +f 5030/5850/6685 4982/5802/6637 4976/5796/6631 +f 5028/5848/6683 5030/5850/6685 4976/5796/6631 +f 5019/5839/6674 5031/5851/6686 5018/5838/6673 +f 5019/5839/6674 5022/5842/6677 5031/5851/6686 +f 5031/5851/6686 5029/5849/6684 5018/5838/6673 +f 5021/5841/6676 5032/5852/6687 5027/5847/6682 +f 5029/5849/6684 5032/5852/6687 5021/5841/6676 +f 5033/5853/6688 4988/5808/6643 4982/5802/6637 +f 5030/5850/6685 5033/5853/6688 4982/5802/6637 +f 5022/5842/6677 5025/5845/6680 5034/5854/6689 +f 5022/5842/6677 5034/5854/6689 5031/5851/6686 +f 5014/5834/6669 5005/5825/6660 5035/5855/6690 +f 5036/5856/6691 4994/5814/6649 4988/5808/6643 +f 5036/5856/6691 5005/5825/6660 4994/5814/6649 +f 5005/5825/6660 5036/5856/6691 5035/5855/6690 +f 5033/5853/6688 5036/5856/6691 4988/5808/6643 +f 5024/5844/6679 5037/5857/6692 5025/5845/6680 +f 5038/5858/6693 4961/5781/6616 4952/5772/6607 +f 5026/5846/6681 5038/5858/6693 4952/5772/6607 +f 5024/5844/6679 5014/5834/6669 5039/5859/6694 +f 5039/5859/6694 5014/5834/6669 5035/5855/6690 +f 5025/5845/6680 5040/5860/6695 5034/5854/6689 +f 5025/5845/6680 5037/5857/6692 5040/5860/6695 +f 5027/5847/6682 5032/5852/6687 4916/5861/6696 +f 5029/5849/6684 4921/5862/6697 5032/5852/6687 +f 5031/5851/6686 4925/5863/6698 5029/5849/6684 +f 5031/5851/6686 5034/5854/6689 4925/5863/6698 +f 4925/5863/6698 4921/5862/6697 5029/5849/6684 +f 5032/5852/6687 4917/5864/6699 4916/5861/6696 +f 4921/5862/6697 4917/5864/6699 5032/5852/6687 +f 5041/5865/6700 4964/5784/6619 4961/5781/6616 +f 5041/5865/6700 5023/5843/6678 4964/5784/6619 +f 5034/5854/6689 5040/5860/6695 4926/5866/6701 +f 5034/5854/6689 4926/5866/6701 4925/5863/6698 +f 5037/5857/6692 5024/5844/6679 5042/5867/6702 +f 5042/5867/6702 5024/5844/6679 5039/5859/6694 +f 5037/5857/6692 5043/5868/6703 5040/5860/6695 +f 5040/5860/6695 4930/5869/6704 4926/5866/6701 +f 5040/5860/6695 5043/5868/6703 4930/5869/6704 +f 5043/5868/6703 5037/5857/6692 5044/5870/6705 +f 5044/5870/6705 5037/5857/6692 5042/5867/6702 +f 5043/5868/6703 4935/5871/6706 4930/5869/6704 +f 5045/5872/6707 5043/5868/6703 5044/5870/6705 +f 4935/5871/6706 5043/5868/6703 5045/5872/6707 +f 5044/5870/6705 5042/5867/6702 5046/5873/6708 +f 5045/5872/6707 5044/5870/6705 5047/5874/6709 +f 5047/5874/6709 5044/5870/6705 5046/5873/6708 +f 5042/5867/6702 5039/5859/6694 5048/5875/6710 +f 5046/5873/6708 5042/5867/6702 5048/5875/6710 +f 4941/5876/6711 4935/5871/6706 5045/5872/6707 +f 5048/5875/6710 5039/5859/6694 5049/5877/6712 +f 5039/5859/6694 5035/5855/6690 5049/5877/6712 +f 5050/5878/6713 5045/5872/6707 5047/5874/6709 +f 4941/5876/6711 5045/5872/6707 5050/5878/6713 +f 5047/5874/6709 5046/5873/6708 5051/5879/6714 +f 5046/5873/6708 5048/5875/6710 5052/5880/6715 +f 5051/5879/6714 5046/5873/6708 5052/5880/6715 +f 5050/5878/6713 5047/5874/6709 5053/5881/6716 +f 5047/5874/6709 5054/5882/6717 5053/5881/6716 +f 5054/5882/6717 5047/5874/6709 5051/5879/6714 +f 5048/5875/6710 5049/5877/6712 5055/5883/6718 +f 5052/5880/6715 5048/5875/6710 5055/5883/6718 +f 5056/5884/6719 4941/5876/6711 5050/5878/6713 +f 5050/5878/6713 5053/5881/6716 5057/5885/6720 +f 5056/5884/6719 5050/5878/6713 5057/5885/6720 +f 5053/5881/6716 5054/5882/6717 5058/5886/6721 +f 5054/5882/6717 5051/5879/6714 5059/5887/6722 +f 5058/5886/6721 5054/5882/6717 5059/5887/6722 +f 5057/5885/6720 5053/5881/6716 5060/5888/6723 +f 5060/5888/6723 5053/5881/6716 5058/5886/6721 +f 5051/5879/6714 5052/5880/6715 5061/5889/6724 +f 5059/5887/6722 5051/5879/6714 5061/5889/6724 +f 5052/5880/6715 5055/5883/6718 5062/5890/6725 +f 5061/5889/6724 5052/5880/6715 5062/5890/6725 +f 5063/5891/6726 5057/5885/6720 5060/5888/6723 +f 5049/5877/6712 5035/5855/6690 5064/5892/6727 +f 5055/5883/6718 5049/5877/6712 5065/5893/6728 +f 5049/5877/6712 5064/5892/6727 5065/5893/6728 +f 5060/5888/6723 5058/5886/6721 5066/5894/6729 +f 5058/5886/6721 5059/5887/6722 5067/5895/6730 +f 5066/5894/6729 5058/5886/6721 5067/5895/6730 +f 5063/5891/6726 5060/5888/6723 5068/5896/6731 +f 5068/5896/6731 5060/5888/6723 5066/5894/6729 +f 5059/5887/6722 5061/5889/6724 5069/5897/6732 +f 5067/5895/6730 5059/5887/6722 5069/5897/6732 +f 5061/5889/6724 5062/5890/6725 5070/5898/6733 +f 5069/5897/6732 5061/5889/6724 5070/5898/6733 +f 5062/5890/6725 5055/5883/6718 5071/5899/6734 +f 5055/5883/6718 5065/5893/6728 5071/5899/6734 +f 5072/5900/6735 5063/5891/6726 5068/5896/6731 +f 5068/5896/6731 5066/5894/6729 5073/5901/6736 +f 5072/5900/6735 5068/5896/6731 5074/5902/6737 +f 5068/5896/6731 5073/5901/6736 5074/5902/6737 +f 5066/5894/6729 5067/5895/6730 5075/5903/6738 +f 5066/5894/6729 5075/5903/6738 5073/5901/6736 +f 5067/5895/6730 5069/5897/6732 5076/5904/6739 +f 5067/5895/6730 5076/5904/6739 5075/5903/6738 +f 5070/5898/6733 5062/5890/6725 5077/5905/6740 +f 5062/5890/6725 5071/5899/6734 5077/5905/6740 +f 5069/5897/6732 5070/5898/6733 5078/5906/6741 +f 5069/5897/6732 5079/5907/6742 5076/5904/6739 +f 5079/5907/6742 5069/5897/6732 5078/5906/6741 +f 5078/5906/6741 5070/5898/6733 5080/5908/6743 +f 5070/5898/6733 5077/5905/6740 5080/5908/6743 +f 5035/5855/6690 5081/5909/6744 5064/5892/6727 +f 5036/5856/6691 5081/5909/6744 5035/5855/6690 +f 5036/5856/6691 5033/5853/6688 5081/5909/6744 +f 5080/5908/6743 5077/5905/6740 5082/5910/6745 +f 5077/5905/6740 5071/5899/6734 5083/5911/6746 +f 5077/5905/6740 5083/5911/6746 5082/5910/6745 +f 5071/5899/6734 5065/5893/6728 5084/5912/6747 +f 5071/5899/6734 5084/5912/6747 5083/5911/6746 +f 5065/5893/6728 5085/5913/6748 5084/5912/6747 +f 5065/5893/6728 5064/5892/6727 5085/5913/6748 +f 5082/5910/6745 5083/5911/6746 5086/5914/6749 +f 5083/5911/6746 5084/5912/6747 5087/5915/6750 +f 5083/5911/6746 5087/5915/6750 5086/5914/6749 +f 5084/5912/6747 5085/5913/6748 5088/5916/6751 +f 5084/5912/6747 5088/5916/6751 5087/5915/6750 +f 5020/5840/6675 4946/5766/6601 5089/5917/6752 +f 5089/5917/6752 4946/5766/6601 5017/5837/6672 +f 5064/5892/6727 5090/5918/6753 5085/5913/6748 +f 5064/5892/6727 5081/5909/6744 5090/5918/6753 +f 5085/5913/6748 5091/5919/6754 5088/5916/6751 +f 5085/5913/6748 5090/5918/6753 5091/5919/6754 +f 5017/5837/6672 4941/5761/6596 5056/5920/6755 +f 5086/5914/6749 5087/5915/6750 5092/5921/6756 +f 5087/5915/6750 5088/5916/6751 5093/5922/6757 +f 5087/5915/6750 5093/5922/6757 5092/5921/6756 +f 5088/5916/6751 5091/5919/6754 5094/5923/6758 +f 5088/5916/6751 5094/5923/6758 5093/5922/6757 +f 5090/5918/6753 5095/5924/6759 5091/5919/6754 +f 5081/5909/6744 5096/5925/6760 5090/5918/6753 +f 5090/5918/6753 5096/5925/6760 5095/5924/6759 +f 5033/5853/6688 5096/5925/6760 5081/5909/6744 +f 5033/5853/6688 5030/5850/6685 5096/5925/6760 +f 5091/5919/6754 5097/5926/6761 5094/5923/6758 +f 5091/5919/6754 5095/5924/6759 5097/5926/6761 +f 5092/5921/6756 5093/5922/6757 5098/5927/6762 +f 5093/5922/6757 5094/5923/6758 5099/5928/6763 +f 5093/5922/6757 5099/5928/6763 5098/5927/6762 +f 5094/5923/6758 5097/5926/6761 5100/5929/6764 +f 5094/5923/6758 5100/5929/6764 5099/5928/6763 +f 5101/5930/6765 4961/5781/6616 5038/5858/6693 +f 5101/5930/6765 5041/5865/6700 4961/5781/6616 +f 5095/5924/6759 5102/5931/6766 5097/5926/6761 +f 5096/5925/6760 5103/5932/6767 5095/5924/6759 +f 5095/5924/6759 5103/5932/6767 5102/5931/6766 +f 5030/5850/6685 5103/5932/6767 5096/5925/6760 +f 5030/5850/6685 5028/5848/6683 5103/5932/6767 +f 5097/5926/6761 5104/5933/6768 5100/5929/6764 +f 5097/5926/6761 5102/5931/6766 5104/5933/6768 +f 5098/5927/6762 5099/5928/6763 5105/5934/6769 +f 5100/5929/6764 5106/5935/6770 5099/5928/6763 +f 5100/5929/6764 5104/5933/6768 5106/5935/6770 +f 5099/5928/6763 5107/5936/6771 5105/5934/6769 +f 5106/5935/6770 5107/5936/6771 5099/5928/6763 +f 5102/5931/6766 5108/5937/6772 5104/5933/6768 +f 5103/5932/6767 5109/5938/6773 5102/5931/6766 +f 5102/5931/6766 5109/5938/6773 5108/5937/6772 +f 5028/5848/6683 5109/5938/6773 5103/5932/6767 +f 5028/5848/6683 5023/5843/6678 5109/5938/6773 +f 5104/5933/6768 5110/5939/6774 5106/5935/6770 +f 5104/5933/6768 5108/5937/6772 5110/5939/6774 +f 5105/5934/6769 5107/5936/6771 5111/5940/6775 +f 5106/5935/6770 5112/5941/6776 5107/5936/6771 +f 5106/5935/6770 5110/5939/6774 5112/5941/6776 +f 5107/5936/6771 5113/5942/6777 5111/5940/6775 +f 5112/5941/6776 5113/5942/6777 5107/5936/6771 +f 5108/5937/6772 5114/5943/6778 5110/5939/6774 +f 5109/5938/6773 5115/5944/6779 5108/5937/6772 +f 5108/5937/6772 5115/5944/6779 5114/5943/6778 +f 5023/5843/6678 5115/5944/6779 5109/5938/6773 +f 5023/5843/6678 5041/5865/6700 5115/5944/6779 +f 5110/5939/6774 5116/5945/6780 5112/5941/6776 +f 5110/5939/6774 5114/5943/6778 5116/5945/6780 +f 5111/5940/6775 5113/5942/6777 5117/5946/6781 +f 5112/5941/6776 5118/5947/6782 5113/5942/6777 +f 5116/5945/6780 5119/5948/6783 5112/5941/6776 +f 5119/5948/6783 5118/5947/6782 5112/5941/6776 +f 5113/5942/6777 5120/5949/6784 5117/5946/6781 +f 5118/5947/6782 5120/5949/6784 5113/5942/6777 +f 5114/5943/6778 5121/5950/6785 5116/5945/6780 +f 5115/5944/6779 5122/5951/6786 5114/5943/6778 +f 5114/5943/6778 5122/5951/6786 5121/5950/6785 +f 5041/5865/6700 5122/5951/6786 5115/5944/6779 +f 5041/5865/6700 5101/5930/6765 5122/5951/6786 +f 5123/5952/6787 5119/5948/6783 5116/5945/6780 +f 5121/5950/6785 5123/5952/6787 5116/5945/6780 +f 5117/5946/6781 5120/5949/6784 5124/5953/6788 +f 5118/5947/6782 5125/5954/6789 5120/5949/6784 +f 5119/5948/6783 5126/5955/6790 5118/5947/6782 +f 5126/5955/6790 5125/5954/6789 5118/5947/6782 +f 5120/5949/6784 5127/5956/6791 5124/5953/6788 +f 5125/5954/6789 5127/5956/6791 5120/5949/6784 +f 5123/5952/6787 5128/5957/6792 5119/5948/6783 +f 5128/5957/6792 5126/5955/6790 5119/5948/6783 +f 5121/5950/6785 5129/5958/6793 5123/5952/6787 +f 5122/5951/6786 5129/5958/6793 5121/5950/6785 +f 5101/5930/6765 5129/5958/6793 5122/5951/6786 +f 5123/5952/6787 5130/5959/6794 5128/5957/6792 +f 5129/5958/6793 5130/5959/6794 5123/5952/6787 +f 5127/5956/6791 5131/5960/6795 5124/5953/6788 +f 5125/5954/6789 5132/5961/6796 5127/5956/6791 +f 5132/5961/6796 5131/5960/6795 5127/5956/6791 +f 5126/5955/6790 5133/5962/6797 5125/5954/6789 +f 5133/5962/6797 5132/5961/6796 5125/5954/6789 +f 5128/5957/6792 5134/5963/6798 5126/5955/6790 +f 5134/5963/6798 5133/5962/6797 5126/5955/6790 +f 5130/5959/6794 5135/5964/6799 5128/5957/6792 +f 5128/5957/6792 5135/5964/6799 5134/5963/6798 +f 5131/5960/6795 5136/5965/6800 5124/5953/6788 +f 5137/5966/6801 5130/5959/6794 5129/5958/6793 +f 5130/5959/6794 5137/5966/6801 5135/5964/6799 +f 5101/5930/6765 5137/5966/6801 5129/5958/6793 +f 5137/5966/6801 5101/5930/6765 5038/5858/6693 +f 5131/5960/6795 5132/5961/6796 5138/5967/6802 +f 5131/5960/6795 5138/5967/6802 5136/5965/6800 +f 5133/5962/6797 5139/5968/6803 5132/5961/6796 +f 5134/5963/6798 5140/5969/6804 5133/5962/6797 +f 5140/5969/6804 5139/5968/6803 5133/5962/6797 +f 5132/5961/6796 5141/5970/6805 5138/5967/6802 +f 5139/5968/6803 5141/5970/6805 5132/5961/6796 +f 5135/5964/6799 5142/5971/6806 5134/5963/6798 +f 5134/5963/6798 5142/5971/6806 5140/5969/6804 +f 5142/5971/6806 5089/5917/6752 5140/5969/6804 +f 5142/5971/6806 5020/5840/6675 5089/5917/6752 +f 5137/5966/6801 5143/5972/6807 5135/5964/6799 +f 5135/5964/6799 5143/5972/6807 5142/5971/6806 +f 5143/5972/6807 5020/5840/6675 5142/5971/6806 +f 5143/5972/6807 5137/5966/6801 5038/5858/6693 +f 5020/5840/6675 5143/5972/6807 5026/5846/6681 +f 5026/5846/6681 5143/5972/6807 5038/5858/6693 +f 5138/5967/6802 5144/5973/6808 5136/5965/6800 +f 5138/5967/6802 5141/5970/6805 5145/5974/6809 +f 5138/5967/6802 5145/5974/6809 5144/5973/6808 +f 5139/5968/6803 5146/5975/6810 5141/5970/6805 +f 5140/5969/6804 5147/5976/6811 5139/5968/6803 +f 5147/5976/6811 5146/5975/6810 5139/5968/6803 +f 5140/5969/6804 5089/5917/6752 5147/5976/6811 +f 5147/5976/6811 5056/5920/6755 5146/5975/6810 +f 5089/5917/6752 5017/5837/6672 5147/5976/6811 +f 5147/5976/6811 5017/5837/6672 5056/5920/6755 +f 5141/5970/6805 5148/5977/6812 5145/5974/6809 +f 5146/5975/6810 5148/5977/6812 5141/5970/6805 +f 5145/5974/6809 5149/5978/6813 5144/5973/6808 +f 5145/5974/6809 5148/5977/6812 5072/5979/6814 +f 5145/5974/6809 5072/5979/6814 5149/5978/6813 +f 5146/5975/6810 5057/5980/6815 5148/5977/6812 +f 5056/5920/6755 5057/5980/6815 5146/5975/6810 +f 5148/5977/6812 5063/5981/6816 5072/5979/6814 +f 5057/5980/6815 5063/5981/6816 5148/5977/6812 +f 5072/5979/6814 5074/5982/6817 5149/5978/6813 +f 214/5983/6818 212/5984/6819 17/17/6820 +f 14/14/6821 214/5983/6818 17/17/6820 +f 216/5985/6822 214/5983/6818 14/14/6821 +f 12/12/6823 216/5985/6822 14/14/6821 +f 218/5986/221 216/5985/6822 12/12/6823 +f 10/10/6824 218/5986/221 12/12/6823 +f 195/5987/6825 218/5986/221 10/10/6824 +f 8/8/6826 195/5987/6825 10/10/6824 +f 17/17/6820 212/5984/6819 19/19/6827 +f 196/5988/6828 195/5987/6825 8/8/6826 +f 6/6/6829 196/5988/6828 8/8/6826 +f 199/5989/6830 196/5988/6828 6/6/6829 +f 4/4/6831 199/5989/6830 6/6/6829 +f 201/5990/6832 199/5989/6830 4/4/6831 +f 1/1/6833 201/5990/6832 4/4/6831 +f 212/5984/6819 210/5991/6834 19/19/6827 +f 203/5992/6835 201/5990/6832 1/1/6833 +f 3/3/6833 203/5992/6835 1/1/6833 +f 205/5993/6836 203/5992/6835 3/3/6833 +f 23/23/6837 205/5993/6836 3/3/6833 +f 207/5994/6838 205/5993/6836 23/23/6837 +f 21/21/6839 207/5994/6838 23/23/6837 +f 210/5991/6834 207/5994/6838 21/21/6839 +f 19/19/6827 210/5991/6834 21/21/6839 +f 896/1076/6840 895/1075/6841 5150/5995/6842 +f 897/1077/6843 896/1076/6840 5150/5995/6842 +f 5151/5996/6844 897/1077/6843 5150/5995/6842 +f 895/1075/6841 5152/5997/6845 5150/5995/6842 +f 5151/5996/6844 5150/5995/6842 5153/5998/6846 +f 5153/5998/6846 5150/5995/6842 5154/5999/6847 +f 5150/5995/6842 5152/5997/6845 5154/5999/6847 +f 895/1075/6841 905/1085/6848 5152/5997/6845 +f 898/1078/6849 897/1077/6843 5151/5996/6844 +f 5155/6000/6850 5151/5996/6844 5153/5998/6846 +f 905/1085/6848 5156/6001/6851 5152/5997/6845 +f 5153/5998/6846 5154/5999/6847 1069/6002/6852 +f 905/1085/6848 906/1086/6853 5156/6001/6851 +f 5157/6003/6854 898/1078/6849 5151/5996/6844 +f 5157/6003/6854 5151/5996/6844 5155/6000/6850 +f 5154/5999/6847 5152/5997/6845 5158/6004/6855 +f 5152/5997/6845 5156/6001/6851 5158/6004/6855 +f 5155/6000/6850 5153/5998/6846 1067/6005/6856 +f 1067/6005/6856 5153/5998/6846 1069/6002/6852 +f 1069/6002/6852 5154/5999/6847 1072/6006/6857 +f 5154/5999/6847 5158/6004/6855 1072/6006/6857 +f 899/1079/6858 898/1078/6849 5157/6003/6854 +f 5159/6007/6859 5157/6003/6854 5155/6000/6850 +f 5160/6008/6860 899/1079/6858 5157/6003/6854 +f 1066/6009/6861 5155/6000/6850 1067/6005/6856 +f 5159/6007/6859 5155/6000/6850 1066/6009/6861 +f 5160/6008/6860 5157/6003/6854 5161/6010/6862 +f 5157/6003/6854 5159/6007/6859 5161/6010/6862 +f 900/1080/6863 899/1079/6858 5160/6008/6860 +f 5162/6011/6864 5160/6008/6860 5161/6010/6862 +f 5162/6011/6864 900/1080/6863 5160/6008/6860 +f 906/1086/6853 5163/6012/6865 5156/6001/6851 +f 5161/6010/6862 5159/6007/6859 1065/6013/6866 +f 1065/6013/6866 5159/6007/6859 1066/6009/6861 +f 5164/6014/6867 5162/6011/6864 5161/6010/6862 +f 5164/6014/6867 5161/6010/6862 1104/6015/6868 +f 1104/6015/6868 5161/6010/6862 1065/6013/6866 +f 5158/6004/6855 5156/6001/6851 5165/6016/6869 +f 5156/6001/6851 5163/6012/6865 5165/6016/6869 +f 901/1081/6870 900/1080/6863 5162/6011/6864 +f 5166/6017/6871 5162/6011/6864 5164/6014/6867 +f 5166/6017/6871 901/1081/6870 5162/6011/6864 +f 1072/6006/6857 5158/6004/6855 1075/6018/6872 +f 5158/6004/6855 5165/6016/6869 1075/6018/6872 +f 1103/6019/6873 5164/6014/6867 1104/6015/6868 +f 5167/6020/6874 5166/6017/6871 5164/6014/6867 +f 5167/6020/6874 5164/6014/6867 1103/6019/6873 +f 901/1081/6870 5166/6017/6871 5168/6021/6875 +f 5168/6021/6875 5166/6017/6871 5167/6020/6874 +f 1098/6022/6876 5167/6020/6874 1103/6019/6873 +f 5169/6023/6877 5168/6021/6875 5167/6020/6874 +f 5169/6023/6877 5167/6020/6874 1098/6022/6876 +f 902/1082/6878 901/1081/6870 5168/6021/6875 +f 906/1086/6853 904/1084/6879 5163/6012/6865 +f 5170/6024/6880 5168/6021/6875 5169/6023/6877 +f 903/1083/6881 902/1082/6878 5168/6021/6875 +f 5170/6024/6880 903/1083/6881 5168/6021/6875 +f 1087/6025/6882 5169/6023/6877 1098/6022/6876 +f 5171/6026/6883 5170/6024/6880 5169/6023/6877 +f 5171/6026/6883 5169/6023/6877 1087/6025/6882 +f 903/1083/6881 5170/6024/6880 5172/6027/6884 +f 5172/6027/6884 5170/6024/6880 5171/6026/6883 +f 904/1084/6879 903/1083/6881 5172/6027/6884 +f 904/1084/6879 5172/6027/6884 5163/6012/6865 +f 1083/6028/6885 5171/6026/6883 1087/6025/6882 +f 5173/6029/6886 5172/6027/6884 5171/6026/6883 +f 5173/6029/6886 5171/6026/6883 1083/6028/6885 +f 5163/6012/6865 5172/6027/6884 5173/6029/6886 +f 5165/6016/6869 5163/6012/6865 5173/6029/6886 +f 1079/6030/6887 5173/6029/6886 1083/6028/6885 +f 5165/6016/6869 5173/6029/6886 1079/6030/6887 +f 1075/6018/6872 5165/6016/6869 1079/6030/6887 +f 2006/6031/6888 5174/6032/6889 2001/6033/6890 +f 2006/6031/6888 2010/6034/6891 5174/6032/6889 +f 2010/6034/6891 5175/6035/6892 5174/6032/6889 +f 5174/6032/6889 5175/6035/6892 5176/6036/6893 +f 5176/6036/6893 5175/6035/6892 2010/6034/6891 +f 5174/6032/6889 5177/6037/6894 2001/6033/6890 +f 5178/6038/6895 5174/6032/6889 5176/6036/6893 +f 5178/6038/6895 5177/6037/6894 5174/6032/6889 +f 5177/6037/6894 5178/6038/6895 2001/6033/6890 +f 2012/6039/6896 5176/6036/6893 2010/6034/6891 +f 2012/6039/6896 2016/6040/6897 5176/6036/6893 +f 5178/6038/6895 1996/6041/6898 2001/6033/6890 +f 5179/6042/6899 5178/6038/6895 5176/6036/6893 +f 2016/6040/6897 5180/6043/6900 5176/6036/6893 +f 1992/6044/6901 1996/6041/6898 5178/6038/6895 +f 5181/6045/6902 1992/6044/6901 5178/6038/6895 +f 5182/6046/6903 5181/6045/6902 5178/6038/6895 +f 5179/6042/6899 5182/6046/6903 5178/6038/6895 +f 1992/6044/6901 5181/6045/6902 5182/6046/6903 +f 5176/6036/6893 5183/6047/6904 5179/6042/6899 +f 5176/6036/6893 5184/6048/6905 5183/6047/6904 +f 5176/6036/6893 5180/6043/6900 5184/6048/6905 +f 5184/6048/6905 5180/6043/6900 2016/6040/6897 +f 1989/6049/6906 1992/6044/6901 5182/6046/6903 +f 5179/6042/6899 5185/6050/6907 5182/6046/6903 +f 1989/6049/6906 5182/6046/6903 1988/6051/6908 +f 5182/6046/6903 5185/6050/6907 1988/6051/6908 +f 1988/6051/6908 5185/6050/6907 5179/6042/6899 +f 5183/6047/6904 5186/6052/6909 5179/6042/6899 +f 2021/6053/6910 5184/6048/6905 2016/6040/6897 +f 1987/6054/6911 1988/6051/6908 5179/6042/6899 +f 1987/6054/6911 5179/6042/6899 1985/6055/6912 +f 5179/6042/6899 5187/6056/6913 1985/6055/6912 +f 5186/6052/6909 5187/6056/6913 5179/6042/6899 +f 1985/6055/6912 5187/6056/6913 5186/6052/6909 +f 5184/6048/6905 5188/6057/6914 5183/6047/6904 +f 5183/6047/6904 5189/6058/6915 5186/6052/6909 +f 2035/6059/6916 5189/6058/6915 5183/6047/6904 +f 5186/6052/6909 5189/6058/6915 2035/6059/6916 +f 2030/6060/6917 2035/6059/6916 5183/6047/6904 +f 2030/6060/6917 5183/6047/6904 2026/6061/6918 +f 5183/6047/6904 5188/6057/6914 2026/6061/6918 +f 2026/6061/6918 5188/6057/6914 5184/6048/6905 +f 2021/6053/6910 2026/6061/6918 5184/6048/6905 +f 2039/6062/6919 1985/6055/6912 5186/6052/6909 +f 2039/6062/6919 5186/6052/6909 2035/6059/6916 +f 1866/6063/6920 5190/6064/6921 1853/6065/6922 +f 1866/6063/6920 1867/6066/6923 5190/6064/6921 +f 1867/6066/6923 5191/6067/6924 5190/6064/6921 +f 5190/6064/6921 5192/6068/6925 1853/6065/6922 +f 5192/6068/6925 5190/6064/6921 5191/6067/6924 +f 5193/6069/6926 5191/6067/6924 1867/6066/6923 +f 1873/6070/6927 5193/6069/6926 1867/6066/6923 +f 1873/6070/6927 1880/6071/6928 5193/6069/6926 +f 5191/6067/6924 5193/6069/6926 5194/6072/6929 +f 5192/6068/6925 5191/6067/6924 5194/6072/6929 +f 1880/6071/6928 5194/6072/6929 5193/6069/6926 +f 1853/6065/6922 5192/6068/6925 5195/6073/6930 +f 5196/6074/6931 5194/6072/6929 1880/6071/6928 +f 1886/6075/6932 5196/6074/6931 1880/6071/6928 +f 1886/6075/6932 1893/6076/6933 5196/6074/6931 +f 5192/6068/6925 5194/6072/6929 5197/6077/6934 +f 5198/6078/6935 5195/6073/6930 5192/6068/6925 +f 1854/6079/6936 1853/6065/6922 5195/6073/6930 +f 5194/6072/6929 5196/6074/6931 5199/6080/6937 +f 1893/6076/6933 5199/6080/6937 5196/6074/6931 +f 5194/6072/6929 5199/6080/6937 5197/6077/6934 +f 5200/6081/6938 5198/6078/6935 5192/6068/6925 +f 5197/6077/6934 5200/6081/6938 5192/6068/6925 +f 5201/6082/6939 5199/6080/6937 1893/6076/6933 +f 5199/6080/6937 5201/6082/6939 5197/6077/6934 +f 5195/6073/6930 5198/6078/6935 1950/6083/6940 +f 1854/6079/6936 5195/6073/6930 1950/6083/6940 +f 1899/6084/6941 5201/6082/6939 1893/6076/6933 +f 5200/6081/6938 5202/6085/6942 5198/6078/6935 +f 1950/6083/6940 5198/6078/6935 5202/6085/6942 +f 5197/6077/6934 5203/6086/6943 5200/6081/6938 +f 5200/6081/6938 1932/6087/6944 5202/6085/6942 +f 5200/6081/6938 5204/6088/6945 1932/6087/6944 +f 5203/6086/6943 5204/6088/6945 5200/6081/6938 +f 1906/6089/6946 5197/6077/6934 5201/6082/6939 +f 1899/6084/6941 1906/6089/6946 5201/6082/6939 +f 1940/6090/6947 1950/6083/6940 5202/6085/6942 +f 1932/6087/6944 1940/6090/6947 5202/6085/6942 +f 5197/6077/6934 5205/6091/6948 5203/6086/6943 +f 5205/6091/6948 5197/6077/6934 1906/6089/6946 +f 5204/6088/6945 1925/6092/6949 1932/6087/6944 +f 5204/6088/6945 5203/6086/6943 1920/6093/6950 +f 1925/6092/6949 5204/6088/6945 1920/6093/6950 +f 1920/6093/6950 5203/6086/6943 5205/6091/6948 +f 1916/6094/6951 1920/6093/6950 5205/6091/6948 +f 1916/6094/6951 5205/6091/6948 1906/6089/6946 +f 2262/6031/6888 5206/6032/6889 2257/6033/6890 +f 2262/6031/6888 2266/6034/6891 5206/6032/6889 +f 2266/6034/6891 5207/6035/6952 5206/6032/6889 +f 5206/6032/6889 5207/6035/6952 5208/6036/6893 +f 5208/6036/6893 5207/6035/6952 2266/6034/6891 +f 5206/6032/6889 5209/6037/6894 2257/6033/6890 +f 5210/6038/6953 5206/6032/6889 5208/6036/6893 +f 5210/6038/6953 5209/6037/6894 5206/6032/6889 +f 5209/6037/6894 5210/6038/6953 2257/6033/6890 +f 2268/6039/6896 5208/6036/6893 2266/6034/6891 +f 2268/6039/6896 2272/6040/6897 5208/6036/6893 +f 5210/6038/6953 2252/6041/6898 2257/6033/6890 +f 5211/6042/6899 5210/6038/6953 5208/6036/6893 +f 2272/6040/6897 5212/6043/6954 5208/6036/6893 +f 2248/6044/6901 2252/6041/6898 5210/6038/6953 +f 5213/6045/6902 2248/6044/6901 5210/6038/6953 +f 5214/6046/6903 5213/6045/6902 5210/6038/6953 +f 5211/6042/6899 5214/6046/6903 5210/6038/6953 +f 2248/6044/6901 5213/6045/6902 5214/6046/6903 +f 5208/6036/6893 5215/6047/6904 5211/6042/6899 +f 5208/6036/6893 5216/6048/6955 5215/6047/6904 +f 5208/6036/6893 5212/6043/6954 5216/6048/6955 +f 5216/6048/6955 5212/6043/6954 2272/6040/6897 +f 2245/6049/6906 2248/6044/6901 5214/6046/6903 +f 5211/6042/6899 5217/6050/6907 5214/6046/6903 +f 2245/6049/6906 5214/6046/6903 2244/6051/6908 +f 5214/6046/6903 5217/6050/6907 2244/6051/6908 +f 2244/6051/6908 5217/6050/6907 5211/6042/6899 +f 5215/6047/6904 5218/6052/6909 5211/6042/6899 +f 2277/6053/6956 5216/6048/6955 2272/6040/6897 +f 2243/6054/6911 2244/6051/6908 5211/6042/6899 +f 2243/6054/6911 5211/6042/6899 2241/6055/6912 +f 5211/6042/6899 5219/6056/6957 2241/6055/6912 +f 5218/6052/6909 5219/6056/6957 5211/6042/6899 +f 2241/6055/6912 5219/6056/6957 5218/6052/6909 +f 5216/6048/6955 5220/6057/6914 5215/6047/6904 +f 5215/6047/6904 5221/6058/6915 5218/6052/6909 +f 2291/6059/6916 5221/6058/6915 5215/6047/6904 +f 5218/6052/6909 5221/6058/6915 2291/6059/6916 +f 2286/6060/6917 2291/6059/6916 5215/6047/6904 +f 2286/6060/6917 5215/6047/6904 2282/6061/6918 +f 5215/6047/6904 5220/6057/6914 2282/6061/6918 +f 2282/6061/6918 5220/6057/6914 5216/6048/6955 +f 2277/6053/6956 2282/6061/6918 5216/6048/6955 +f 2295/6062/6919 2241/6055/6912 5218/6052/6909 +f 2295/6062/6919 5218/6052/6909 2291/6059/6916 +f 2122/6063/6920 5222/6064/6921 2109/6065/6922 +f 2122/6063/6920 2123/6066/6958 5222/6064/6921 +f 2123/6066/6958 5223/6067/6924 5222/6064/6921 +f 5222/6064/6921 5224/6068/6925 2109/6065/6922 +f 5224/6068/6925 5222/6064/6921 5223/6067/6924 +f 5225/6069/6926 5223/6067/6924 2123/6066/6958 +f 2129/6070/6959 5225/6069/6926 2123/6066/6958 +f 2129/6070/6959 2136/6071/6928 5225/6069/6926 +f 5223/6067/6924 5225/6069/6926 5226/6072/6929 +f 5224/6068/6925 5223/6067/6924 5226/6072/6929 +f 2136/6071/6928 5226/6072/6929 5225/6069/6926 +f 2109/6065/6922 5224/6068/6925 5227/6073/6960 +f 5228/6074/6931 5226/6072/6929 2136/6071/6928 +f 2142/6075/6932 5228/6074/6931 2136/6071/6928 +f 2142/6075/6932 2149/6076/6933 5228/6074/6931 +f 5224/6068/6925 5226/6072/6929 5229/6077/6934 +f 5230/6078/6935 5227/6073/6960 5224/6068/6925 +f 2110/6079/6936 2109/6065/6922 5227/6073/6960 +f 5226/6072/6929 5228/6074/6931 5231/6080/6961 +f 2149/6076/6933 5231/6080/6961 5228/6074/6931 +f 5226/6072/6929 5231/6080/6961 5229/6077/6934 +f 5232/6081/6938 5230/6078/6935 5224/6068/6925 +f 5229/6077/6934 5232/6081/6938 5224/6068/6925 +f 5233/6082/6939 5231/6080/6961 2149/6076/6933 +f 5231/6080/6961 5233/6082/6939 5229/6077/6934 +f 5227/6073/6960 5230/6078/6935 2206/6083/6940 +f 2110/6079/6936 5227/6073/6960 2206/6083/6940 +f 2155/6084/6941 5233/6082/6939 2149/6076/6933 +f 5232/6081/6938 5234/6085/6942 5230/6078/6935 +f 2206/6083/6940 5230/6078/6935 5234/6085/6942 +f 5229/6077/6934 5235/6086/6943 5232/6081/6938 +f 5232/6081/6938 2188/6087/6944 5234/6085/6942 +f 5232/6081/6938 5236/6088/6962 2188/6087/6944 +f 5235/6086/6943 5236/6088/6962 5232/6081/6938 +f 2162/6089/6946 5229/6077/6934 5233/6082/6939 +f 2155/6084/6941 2162/6089/6946 5233/6082/6939 +f 2196/6090/6947 2206/6083/6940 5234/6085/6942 +f 2188/6087/6944 2196/6090/6947 5234/6085/6942 +f 5229/6077/6934 5237/6091/6963 5235/6086/6943 +f 5237/6091/6963 5229/6077/6934 2162/6089/6946 +f 5236/6088/6962 2181/6092/6949 2188/6087/6944 +f 5236/6088/6962 5235/6086/6943 2176/6093/6950 +f 2181/6092/6949 5236/6088/6962 2176/6093/6950 +f 2176/6093/6950 5235/6086/6943 5237/6091/6963 +f 2172/6094/6951 2176/6093/6950 5237/6091/6963 +f 2172/6094/6951 5237/6091/6963 2162/6089/6946 +f 5238/6095/6964 187/6096/6965 3024/6097/6966 +f 188/6098/6967 187/6096/6965 5238/6095/6964 +f 3010/6099/6968 188/6098/6967 5238/6095/6964 +f 5239/6100/6969 5238/6095/6964 3024/6097/6966 +f 3010/6099/6968 5238/6095/6964 5239/6100/6969 +f 5240/6101/6970 5239/6100/6969 3024/6097/6966 +f 5241/6102/6971 5240/6101/6970 3024/6097/6966 +f 5242/6103/6972 5241/6102/6971 3024/6097/6966 +f 5242/6103/6972 3024/6097/6966 5243/6104/6973 +f 5243/6104/6973 3024/6097/6966 3023/6105/6974 +f 3012/6106/6975 3010/6099/6968 5239/6100/6969 +f 5240/6101/6970 3014/6107/6976 5239/6100/6969 +f 3014/6107/6976 3012/6106/6975 5239/6100/6969 +f 5241/6102/6971 3015/6108/6977 5240/6101/6970 +f 3015/6108/6977 3014/6107/6976 5240/6101/6970 +f 3003/6109/6978 5243/6104/6973 3023/6105/6974 +f 5242/6103/6972 3017/6110/6979 5241/6102/6971 +f 3017/6110/6979 5242/6103/6972 5243/6104/6973 +f 3017/6110/6979 3015/6108/6977 5241/6102/6971 +f 3003/6109/6978 3002/6111/6980 5243/6104/6973 +f 3020/6112/6981 3017/6110/6979 5243/6104/6973 +f 3006/6113/6982 3020/6112/6981 5243/6104/6973 +f 3002/6111/6980 3006/6113/6982 5243/6104/6973 +f 189/6114/6983 3060/6115/6984 5244/6116/6985 +f 190/6117/6986 189/6114/6983 5244/6116/6985 +f 5244/6116/6985 3060/6115/6984 5245/6118/6987 +f 3073/6119/6988 190/6117/6986 5244/6116/6985 +f 3073/6119/6988 5244/6116/6985 5245/6118/6987 +f 3060/6115/6984 3062/6120/6989 5245/6118/6987 +f 3073/6119/6988 5245/6118/6987 5246/6121/6990 +f 5245/6118/6987 3062/6120/6989 3064/6122/6991 +f 5246/6121/6990 5245/6118/6987 3064/6122/6991 +f 3073/6119/6988 5246/6121/6990 5247/6123/6992 +f 5246/6121/6990 3064/6122/6991 3065/6124/6993 +f 5247/6123/6992 5246/6121/6990 3065/6124/6993 +f 3073/6119/6988 5247/6123/6992 5248/6125/6994 +f 5249/6126/6995 3073/6119/6988 5248/6125/6994 +f 5247/6123/6992 3065/6124/6993 3067/6127/6996 +f 5248/6125/6994 5247/6123/6992 3067/6127/6996 +f 5248/6125/6994 3067/6127/6996 5249/6126/6995 +f 3074/6128/6997 3073/6119/6988 5249/6126/6995 +f 3067/6127/6996 3071/6129/6998 5249/6126/6995 +f 5249/6126/6995 3071/6129/6998 3056/6130/6999 +f 3054/6131/7000 5249/6126/6995 3056/6130/6999 +f 5249/6126/6995 3054/6131/7000 3053/6132/7001 +f 5249/6126/6995 3053/6132/7001 3074/6128/6997 +f 5250/6133/6903 3555/6134/6906 3556/6135/6901 +f 3555/6134/6906 5250/6133/6903 3553/6136/7002 +f 5250/6133/6903 5251/6137/7003 3553/6136/7002 +f 5252/6138/7004 5251/6137/7003 5250/6133/6903 +f 5251/6137/7003 5252/6138/7004 3553/6136/7002 +f 5253/6139/6902 5250/6133/6903 3556/6135/6901 +f 5252/6138/7004 5250/6133/6903 5254/6140/6953 +f 5250/6133/6903 5253/6139/6902 5254/6140/6953 +f 5254/6140/6953 5253/6139/6902 3556/6135/6901 +f 3558/6141/6898 5254/6140/6953 3556/6135/6901 +f 5252/6138/7004 3552/6142/6911 3553/6136/7002 +f 5254/6140/6953 3558/6141/6898 3559/6143/6890 +f 3552/6142/6911 5252/6138/7004 3551/6144/6912 +f 5252/6138/7004 5254/6140/6953 5255/6145/7005 +f 5252/6138/7004 5256/6146/6913 3551/6144/6912 +f 5257/6147/7006 5256/6146/6913 5252/6138/7004 +f 5256/6146/6913 5257/6147/7006 3551/6144/6912 +f 5258/6148/6904 5257/6147/7006 5252/6138/7004 +f 5258/6148/6904 5252/6138/7004 5255/6145/7005 +f 5259/6149/6894 5254/6140/6953 3559/6143/6890 +f 5254/6140/6953 5260/6150/7007 5255/6145/7005 +f 5254/6140/6953 5259/6149/6894 5260/6150/7007 +f 5260/6150/7007 5259/6149/6894 3559/6143/6890 +f 5257/6147/7006 3618/6151/6919 3551/6144/6912 +f 5258/6148/6904 5261/6152/6915 5257/6147/7006 +f 3618/6151/6919 5257/6147/7006 3611/6153/6916 +f 5257/6147/7006 5261/6152/6915 3611/6153/6916 +f 5261/6152/6915 5258/6148/6904 3611/6153/6916 +f 5255/6145/7005 5262/6154/7008 5258/6148/6904 +f 5258/6148/6904 3604/6155/6917 3611/6153/6916 +f 3564/6156/7009 5260/6150/7007 3559/6143/6890 +f 3604/6155/6917 5258/6148/6904 3596/6157/6918 +f 5258/6148/6904 5263/6158/7010 3596/6157/6918 +f 5262/6154/7008 5263/6158/7010 5258/6148/6904 +f 3596/6157/6918 5263/6158/7010 5262/6154/7008 +f 5260/6150/7007 5264/6159/6892 5255/6145/7005 +f 5255/6145/7005 5265/6160/7011 5262/6154/7008 +f 5265/6160/7011 5255/6145/7005 3582/6161/6897 +f 5265/6160/7011 3582/6161/6897 5262/6154/7008 +f 5255/6145/7005 3575/6162/6896 3582/6161/6897 +f 3575/6162/6896 5255/6145/7005 3573/6163/7012 +f 5255/6145/7005 5264/6159/6892 3573/6163/7012 +f 5264/6159/6892 5260/6150/7007 3573/6163/7012 +f 5260/6150/7007 3564/6156/7009 3573/6163/7012 +f 3589/6164/6910 3596/6157/6918 5262/6154/7008 +f 3582/6161/6897 3589/6164/6910 5262/6154/7008 +f 5266/6165/6939 3667/6166/7013 3673/6167/7014 +f 3667/6166/7013 5266/6165/6939 3661/6168/7015 +f 5266/6165/6939 5267/6169/7016 3661/6168/7015 +f 5268/6170/7017 5266/6165/6939 3673/6167/7014 +f 5267/6169/7016 5266/6165/6939 5268/6170/7017 +f 5269/6171/7018 5268/6170/7017 3673/6167/7014 +f 3632/6172/7019 5269/6171/7018 3673/6167/7014 +f 5267/6169/7016 5270/6173/6931 3661/6168/7015 +f 5271/6174/6929 5267/6169/7016 5268/6170/7017 +f 5271/6174/6929 5270/6173/6931 5267/6169/7016 +f 5269/6171/7018 3632/6172/7019 3498/6175/6950 +f 5268/6170/7017 5269/6171/7018 5272/6176/6943 +f 5272/6176/6943 5269/6171/7018 3498/6175/6950 +f 5271/6174/6929 5268/6170/7017 5273/6177/7020 +f 5268/6170/7017 5274/6178/6938 5273/6177/7020 +f 5268/6170/7017 5272/6176/6943 5274/6178/6938 +f 5270/6173/6931 3659/6179/6932 3661/6168/7015 +f 5275/6180/6945 5272/6176/6943 3498/6175/6950 +f 5272/6176/6943 5275/6180/6945 5274/6178/6938 +f 5270/6173/6931 5271/6174/6929 3658/6181/6928 +f 3659/6179/6932 5270/6173/6931 3658/6181/6928 +f 3493/6182/6949 5275/6180/6945 3498/6175/6950 +f 5273/6177/7020 5276/6183/6924 5271/6174/6929 +f 5271/6174/6929 5277/6184/7021 3658/6181/6928 +f 5276/6183/6924 5277/6184/7021 5271/6174/6929 +f 5274/6178/6938 5278/6185/6935 5273/6177/7020 +f 5273/6177/7020 5279/6186/7022 5276/6183/6924 +f 5279/6186/7022 5273/6177/7020 3653/6187/6922 +f 5273/6177/7020 5280/6188/7023 3653/6187/6922 +f 5278/6185/6935 5280/6188/7023 5273/6177/7020 +f 5274/6178/6938 5275/6180/6945 3490/6189/6944 +f 5275/6180/6945 3493/6182/6949 3490/6189/6944 +f 5277/6184/7021 3655/6190/7024 3658/6181/6928 +f 5276/6183/6924 3654/6191/6923 5277/6184/7021 +f 3654/6191/6923 5276/6183/6924 5279/6186/7022 +f 3654/6191/6923 3655/6190/7024 5277/6184/7021 +f 5274/6178/6938 5281/6192/6942 5278/6185/6935 +f 5281/6192/6942 5274/6178/6938 3490/6189/6944 +f 3652/6193/7025 5279/6186/7022 3653/6187/6922 +f 3652/6193/7025 3654/6191/6923 5279/6186/7022 +f 5280/6188/7023 3484/6194/6936 3653/6187/6922 +f 5280/6188/7023 5278/6185/6935 3485/6195/6940 +f 3484/6194/6936 5280/6188/7023 3485/6195/6940 +f 5278/6185/6935 5281/6192/6942 3485/6195/6940 +f 5281/6192/6942 3488/6196/7026 3485/6195/6940 +f 3488/6196/7026 5281/6192/6942 3490/6189/6944 +f 5282/6133/6903 3811/6134/7027 3812/6135/6901 +f 3811/6134/7027 5282/6133/6903 3809/6136/7002 +f 5282/6133/6903 5283/6137/6907 3809/6136/7002 +f 5284/6138/7028 5283/6137/6907 5282/6133/6903 +f 5283/6137/6907 5284/6138/7028 3809/6136/7002 +f 5285/6139/7029 5282/6133/6903 3812/6135/6901 +f 5284/6138/7028 5282/6133/6903 5286/6140/6895 +f 5282/6133/6903 5285/6139/7029 5286/6140/6895 +f 5286/6140/6895 5285/6139/7029 3812/6135/6901 +f 3814/6141/6898 5286/6140/6895 3812/6135/6901 +f 5284/6138/7028 3808/6142/6911 3809/6136/7002 +f 5286/6140/6895 3814/6141/6898 3815/6143/6890 +f 3808/6142/6911 5284/6138/7028 3807/6144/6912 +f 5284/6138/7028 5286/6140/6895 5287/6145/7005 +f 5284/6138/7028 5288/6146/6913 3807/6144/6912 +f 5289/6147/7030 5288/6146/6913 5284/6138/7028 +f 5288/6146/6913 5289/6147/7030 3807/6144/6912 +f 5290/6148/6904 5289/6147/7030 5284/6138/7028 +f 5290/6148/6904 5284/6138/7028 5287/6145/7005 +f 5291/6149/6894 5286/6140/6895 3815/6143/6890 +f 5286/6140/6895 5292/6150/7007 5287/6145/7005 +f 5286/6140/6895 5291/6149/6894 5292/6150/7007 +f 5292/6150/7007 5291/6149/6894 3815/6143/6890 +f 5289/6147/7030 3874/6151/6919 3807/6144/6912 +f 5290/6148/6904 5293/6152/6915 5289/6147/7030 +f 3874/6151/6919 5289/6147/7030 3867/6153/6916 +f 5289/6147/7030 5293/6152/6915 3867/6153/6916 +f 5293/6152/6915 5290/6148/6904 3867/6153/6916 +f 5287/6145/7005 5294/6154/7008 5290/6148/6904 +f 5290/6148/6904 3860/6155/6917 3867/6153/6916 +f 3820/6156/7009 5292/6150/7007 3815/6143/6890 +f 3860/6155/6917 5290/6148/6904 3852/6157/7031 +f 5290/6148/6904 5295/6158/7032 3852/6157/7031 +f 5294/6154/7008 5295/6158/7032 5290/6148/6904 +f 3852/6157/7031 5295/6158/7032 5294/6154/7008 +f 5292/6150/7007 5296/6159/6892 5287/6145/7005 +f 5287/6145/7005 5297/6160/6954 5294/6154/7008 +f 5297/6160/6954 5287/6145/7005 3838/6161/6897 +f 5297/6160/6954 3838/6161/6897 5294/6154/7008 +f 5287/6145/7005 3831/6162/6896 3838/6161/6897 +f 3831/6162/6896 5287/6145/7005 3829/6163/7012 +f 5287/6145/7005 5296/6159/6892 3829/6163/7012 +f 5296/6159/6892 5292/6150/7007 3829/6163/7012 +f 5292/6150/7007 3820/6156/7009 3829/6163/7012 +f 3845/6164/6910 3852/6157/7031 5294/6154/7008 +f 3838/6161/6897 3845/6164/6910 5294/6154/7008 +f 5298/6165/6939 3923/6166/7013 3929/6167/7014 +f 3923/6166/7013 5298/6165/6939 3917/6168/7015 +f 5298/6165/6939 5299/6169/7016 3917/6168/7015 +f 5300/6170/7017 5298/6165/6939 3929/6167/7014 +f 5299/6169/7016 5298/6165/6939 5300/6170/7017 +f 5301/6171/6963 5300/6170/7017 3929/6167/7014 +f 3888/6172/7019 5301/6171/6963 3929/6167/7014 +f 5299/6169/7016 5302/6173/6931 3917/6168/7015 +f 5303/6174/6929 5299/6169/7016 5300/6170/7017 +f 5303/6174/6929 5302/6173/6931 5299/6169/7016 +f 5301/6171/6963 3888/6172/7019 3754/6175/6950 +f 5300/6170/7017 5301/6171/6963 5304/6176/6943 +f 5304/6176/6943 5301/6171/6963 3754/6175/6950 +f 5303/6174/6929 5300/6170/7017 5305/6177/7020 +f 5300/6170/7017 5306/6178/6938 5305/6177/7020 +f 5300/6170/7017 5304/6176/6943 5306/6178/6938 +f 5302/6173/6931 3915/6179/7033 3917/6168/7015 +f 5307/6180/6945 5304/6176/6943 3754/6175/6950 +f 5304/6176/6943 5307/6180/6945 5306/6178/6938 +f 5302/6173/6931 5303/6174/6929 3914/6181/7034 +f 3915/6179/7033 5302/6173/6931 3914/6181/7034 +f 3749/6182/6949 5307/6180/6945 3754/6175/6950 +f 5305/6177/7020 5308/6183/7035 5303/6174/6929 +f 5303/6174/6929 5309/6184/6926 3914/6181/7034 +f 5308/6183/7035 5309/6184/6926 5303/6174/6929 +f 5306/6178/6938 5310/6185/7036 5305/6177/7020 +f 5305/6177/7020 5311/6186/6921 5308/6183/7035 +f 5311/6186/6921 5305/6177/7020 3909/6187/6922 +f 5305/6177/7020 5312/6188/7023 3909/6187/6922 +f 5310/6185/7036 5312/6188/7023 5305/6177/7020 +f 5306/6178/6938 5307/6180/6945 3746/6189/6944 +f 5307/6180/6945 3749/6182/6949 3746/6189/6944 +f 5309/6184/6926 3911/6190/6959 3914/6181/7034 +f 5308/6183/7035 3910/6191/6923 5309/6184/6926 +f 3910/6191/6923 5308/6183/7035 5311/6186/6921 +f 3910/6191/6923 3911/6190/6959 5309/6184/6926 +f 5306/6178/6938 5313/6192/6942 5310/6185/7036 +f 5313/6192/6942 5306/6178/6938 3746/6189/6944 +f 3908/6193/7025 5311/6186/6921 3909/6187/6922 +f 3908/6193/7025 3910/6191/6923 5311/6186/6921 +f 5312/6188/7023 3740/6194/6936 3909/6187/6922 +f 5312/6188/7023 5310/6185/7036 3741/6195/6940 +f 3740/6194/6936 5312/6188/7023 3741/6195/6940 +f 5310/6185/7036 5313/6192/6942 3741/6195/6940 +f 5313/6192/6942 3744/6196/7026 3741/6195/6940 +f 3744/6196/7026 5313/6192/6942 3746/6189/6944 +f 5314/6197/7037 4049/6198/7038 4051/6199/7039 +f 4047/6200/7040 4049/6198/7038 5314/6197/7037 +f 4042/6201/7041 4047/6200/7040 5314/6197/7037 +f 4042/6201/7041 5314/6197/7037 4038/6202/7042 +f 4015/6203/7043 5314/6197/7037 4051/6199/7039 +f 5314/6197/7037 4028/6204/7044 4038/6202/7042 +f 4028/6204/7044 5314/6197/7037 4017/6205/7045 +f 5314/6197/7037 4015/6203/7043 4017/6205/7045 +f 4073/4834/7046 4076/4837/7047 4054/6206/7048 +f 4073/4834/7046 4054/6206/7048 4071/4832/7049 +f 4054/6206/7048 4053/6207/7050 4071/4832/7049 +f 4069/4830/7051 4071/4832/7049 4053/6207/7050 +f 4068/4829/7052 4069/4830/7051 4053/6207/7050 +f 4068/4829/7052 4053/6207/7050 4093/6208/7053 +f 4066/4827/7054 4068/4829/7052 4093/6208/7053 +f 4076/4837/7047 4056/6209/7055 4054/6206/7048 +f 4066/4827/7054 4093/6208/7053 4065/4826/7056 +f 4092/4853/7057 4065/4826/7056 4093/6208/7053 +f 4093/6208/7053 4061/6210/7058 4092/4853/7057 +f 4061/6210/7058 4090/4851/7059 4092/4853/7057 +f 4087/4848/7060 4090/4851/7059 4061/6210/7058 +f 4087/4848/7060 4061/6210/7058 4085/4846/7061 +f 4076/4837/7047 4078/4839/7062 4056/6209/7055 +f 4061/6210/7058 4059/6211/7063 4085/4846/7061 +f 4083/4844/7064 4085/4846/7061 4059/6211/7063 +f 4059/6211/7063 4081/4842/7065 4083/4844/7064 +f 4059/6211/7063 4080/4841/7066 4081/4842/7065 +f 4059/6211/7063 4056/6209/7055 4080/4841/7066 +f 4056/6209/7055 4078/4839/7062 4080/4841/7066 +f 5315/6212/7067 5316/6213/7068 5317/6214/7069 +f 5315/6212/7067 5317/6214/7069 5318/6215/7070 +f 5316/6213/7068 5319/6216/7071 5317/6214/7069 +f 5317/6214/7069 5320/6217/7072 5318/6215/7070 +f 5317/6214/7069 5321/6218/7073 5320/6217/7072 +f 5317/6214/7069 5319/6216/7071 5321/6218/7073 +f 5316/6213/7068 5322/6219/7074 5319/6216/7071 +f 5323/6220/7075 5318/6215/7070 5320/6217/7072 +f 5322/6219/7074 5324/6221/7076 5319/6216/7071 +f 5321/6218/7073 5325/6222/7077 5320/6217/7072 +f 5324/6221/7076 5322/6219/7074 5326/6223/7078 +f 5327/6224/7079 5323/6220/7075 5320/6217/7072 +f 5320/6217/7072 5325/6222/7077 5327/6224/7079 +f 5328/6225/7080 5323/6220/7075 5327/6224/7079 +f 5329/6226/7081 5328/6225/7080 5327/6224/7079 +f 5325/6222/7077 5330/6227/7082 5327/6224/7079 +f 5329/6226/7081 5327/6224/7079 5331/6228/7083 +f 5327/6224/7079 5330/6227/7082 5331/6228/7083 +f 5332/6229/7084 5328/6225/7080 5329/6226/7081 +f 5329/6226/7081 5331/6228/7083 5333/6230/7085 +f 5333/6230/7085 5332/6229/7084 5329/6226/7081 +f 5331/6228/7083 5334/6231/7086 5333/6230/7085 +f 5332/6229/7084 5333/6230/7085 5335/6232/7087 +f 5334/6231/7086 5336/6233/7088 5333/6230/7085 +f 5336/6233/7088 5335/6232/7087 5333/6230/7085 +f 5319/6216/7071 5337/6234/7089 5321/6218/7073 +f 5319/6216/7071 5324/6221/7076 5337/6234/7089 +f 5338/6235/7090 5324/6221/7076 5326/6223/7078 +f 5339/6236/7091 5332/6229/7084 5335/6232/7087 +f 5335/6232/7087 5336/6233/7088 5340/6237/7092 +f 5341/6238/7093 5335/6232/7087 5340/6237/7092 +f 5335/6232/7087 5341/6238/7093 5339/6236/7091 +f 5341/6238/7093 5340/6237/7092 5342/6239/7094 +f 5340/6237/7092 5343/6240/7095 5342/6239/7094 +f 5341/6238/7093 5344/6241/7096 5339/6236/7091 +f 5341/6238/7093 5342/6239/7094 5344/6241/7096 +f 5342/6239/7094 5343/6240/7095 5345/6242/7097 +f 5343/6240/7095 5346/6243/7098 5345/6242/7097 +f 5347/6244/7099 5342/6239/7094 5345/6242/7097 +f 5342/6239/7094 5347/6244/7099 5344/6241/7096 +f 5345/6242/7097 5346/6243/7098 5348/6245/7100 +f 5349/6246/7101 5345/6242/7097 5348/6245/7100 +f 5350/6247/7102 5347/6244/7099 5345/6242/7097 +f 5350/6247/7102 5345/6242/7097 5351/6248/7103 +f 5345/6242/7097 5349/6246/7101 5351/6248/7103 +f 5338/6235/7090 5326/6223/7078 5352/6249/7104 +f 5338/6235/7090 5353/6250/7105 5324/6221/7076 +f 5349/6246/7101 5348/6245/7100 5354/6251/7106 +f 5353/6250/7105 5355/6252/7107 5324/6221/7076 +f 5324/6221/7076 5355/6252/7107 5337/6234/7089 +f 5356/6253/7108 5349/6246/7101 5354/6251/7106 +f 5357/6254/7109 5351/6248/7103 5349/6246/7101 +f 5356/6253/7108 5357/6254/7109 5349/6246/7101 +f 5356/6253/7108 5354/6251/7106 5358/6255/7110 +f 5354/6251/7106 5359/6256/7111 5358/6255/7110 +f 5360/6257/7112 5358/6255/7110 5359/6256/7111 +f 5360/6257/7112 5352/6249/7104 5358/6255/7110 +f 5360/6257/7112 5338/6235/7090 5352/6249/7104 +f 5338/6235/7090 5360/6257/7112 5353/6250/7105 +f 5358/6255/7110 5361/6258/7113 5356/6253/7108 +f 5361/6258/7113 5357/6254/7109 5356/6253/7108 +f 5352/6249/7104 5361/6258/7113 5358/6255/7110 +f 5362/6259/7114 5360/6257/7112 5359/6256/7111 +f 5360/6257/7112 5362/6259/7114 5353/6250/7105 +f 4120/4890/7115 5336/6233/7116 5334/6231/7117 +f 5336/6233/7116 4120/4890/7115 5340/6237/7118 +f 4120/4890/7115 5343/6240/7118 5340/6237/7118 +f 4120/4890/7115 4119/4889/7119 5343/6240/7118 +f 4119/4889/7119 5346/6243/7118 5343/6240/7118 +f 5348/6245/7118 5346/6243/7118 4119/4889/7119 +f 5354/6260/7118 5348/6245/7118 4119/4889/7119 +f 4121/4892/7120 4120/4890/7115 5334/6231/7117 +f 5354/6260/7118 4119/4889/7119 5359/6256/7121 +f 5362/6259/7122 5359/6256/7121 4119/4889/7119 +f 4122/4894/7123 5362/6259/7122 4119/4889/7119 +f 5353/6261/7118 5362/6259/7122 4122/4894/7123 +f 4122/4894/7123 5355/6252/7118 5353/6261/7118 +f 4122/4894/7123 5337/6234/7118 5355/6252/7118 +f 5331/6228/7118 4121/4892/7120 5334/6231/7117 +f 4122/4894/7123 5321/6218/7118 5337/6234/7118 +f 5325/6222/7124 5321/6218/7118 4122/4894/7123 +f 5330/6227/7118 5325/6222/7124 4122/4894/7123 +f 5330/6227/7118 4122/4894/7123 4121/4892/7120 +f 5331/6228/7118 5330/6227/7118 4121/4892/7120 +f 5363/6262/7125 4173/6263/7126 4170/6264/7127 +f 5363/6262/7125 5364/6265/7128 4173/6263/7126 +f 5365/6266/7129 5364/6265/7128 5363/6262/7125 +f 5366/6267/7130 5363/6262/7125 4170/6264/7127 +f 5367/6268/7131 5365/6266/7129 5363/6262/7125 +f 5367/6268/7131 5363/6262/7125 5366/6267/7130 +f 5364/6265/7128 4177/6269/7132 4173/6263/7126 +f 5366/6267/7130 4170/6264/7127 4166/6270/7133 +f 5365/6266/7129 5368/6271/7134 5364/6265/7128 +f 5369/6272/7135 5366/6267/7130 4166/6270/7133 +f 5364/6265/7128 5370/6273/7136 4177/6269/7132 +f 5368/6271/7134 5370/6273/7136 5364/6265/7128 +f 5369/6272/7135 4166/6270/7133 4162/6274/7137 +f 5365/6266/7129 5367/6268/7131 5371/6275/7138 +f 5371/6275/7138 5367/6268/7131 5366/6267/7130 +f 5371/6275/7138 5366/6267/7130 5369/6272/7135 +f 5372/6276/7139 5368/6271/7134 5365/6266/7129 +f 5373/6277/7140 5372/6276/7139 5365/6266/7129 +f 5365/6266/7129 5374/6278/7141 5373/6277/7140 +f 5365/6266/7129 5371/6275/7138 5374/6278/7141 +f 5370/6273/7136 4180/6279/7142 4177/6269/7132 +f 5375/6280/7143 5370/6273/7136 5368/6271/7134 +f 5372/6276/7139 5375/6280/7143 5368/6271/7134 +f 4142/6281/7144 4180/6279/7142 5370/6273/7136 +f 5375/6280/7143 4142/6281/7144 5370/6273/7136 +f 5373/6277/7140 5376/6282/7145 5372/6276/7139 +f 5377/6283/7146 5369/6272/7135 4162/6274/7137 +f 5378/6284/7147 5375/6280/7143 5372/6276/7139 +f 5376/6282/7145 5378/6284/7147 5372/6276/7139 +f 5374/6278/7141 5379/6285/7148 5373/6277/7140 +f 5380/6286/7149 5371/6275/7138 5369/6272/7135 +f 5371/6275/7138 5380/6286/7149 5374/6278/7141 +f 5380/6286/7149 5369/6272/7135 5377/6283/7146 +f 5374/6278/7141 5380/6286/7149 5377/6283/7146 +f 5373/6277/7140 5381/6287/7150 5376/6282/7145 +f 5381/6287/7150 5378/6284/7147 5376/6282/7145 +f 4143/6288/7151 4142/6281/7144 5375/6280/7143 +f 5378/6284/7147 4143/6288/7151 5375/6280/7143 +f 5382/6289/7152 5381/6287/7150 5373/6277/7140 +f 5383/6290/7153 5382/6289/7152 5373/6277/7140 +f 5379/6285/7148 5383/6290/7153 5373/6277/7140 +f 4146/6291/7154 4143/6288/7151 5378/6284/7147 +f 5381/6287/7150 4146/6291/7154 5378/6284/7147 +f 5374/6278/7141 5384/6292/7155 5379/6285/7148 +f 4150/6293/7156 4146/6291/7154 5381/6287/7150 +f 5382/6289/7152 4150/6293/7156 5381/6287/7150 +f 5377/6283/7146 4162/6274/7137 4158/6294/7157 +f 5384/6292/7155 5374/6278/7141 5385/6295/7158 +f 5374/6278/7141 5377/6283/7146 5385/6295/7158 +f 5384/6292/7155 5385/6295/7158 5379/6285/7148 +f 5385/6295/7158 5377/6283/7146 4158/6294/7157 +f 5386/6296/7159 5382/6289/7152 5383/6290/7153 +f 5379/6285/7148 5386/6296/7159 5383/6290/7153 +f 5385/6295/7158 5386/6296/7159 5379/6285/7148 +f 5385/6295/7158 4158/6294/7157 5386/6296/7159 +f 4154/6297/7160 4150/6293/7156 5382/6289/7152 +f 5386/6296/7159 4154/6297/7160 5382/6289/7152 +f 4158/6294/7157 4154/6297/7160 5386/6296/7159 +f 5387/6262/7161 4233/6263/7162 4230/6264/7163 +f 5387/6262/7161 5388/6265/7164 4233/6263/7162 +f 5389/6266/7165 5388/6265/7164 5387/6262/7161 +f 5390/6267/7166 5387/6262/7161 4230/6264/7163 +f 5391/6268/7167 5389/6266/7165 5387/6262/7161 +f 5391/6268/7167 5387/6262/7161 5390/6267/7166 +f 5388/6265/7164 4237/6269/7168 4233/6263/7162 +f 5390/6267/7166 4230/6264/7163 4226/6270/7169 +f 5389/6266/7165 5392/6271/7170 5388/6265/7164 +f 5393/6272/7171 5390/6267/7166 4226/6270/7169 +f 5388/6265/7164 5394/6273/7172 4237/6269/7168 +f 5392/6271/7170 5394/6273/7172 5388/6265/7164 +f 5393/6272/7171 4226/6270/7169 4222/6274/7173 +f 5389/6266/7165 5391/6268/7167 5395/6275/7174 +f 5395/6275/7174 5391/6268/7167 5390/6267/7166 +f 5395/6275/7174 5390/6267/7166 5393/6272/7171 +f 5396/6276/7175 5392/6271/7170 5389/6266/7165 +f 5397/6277/7176 5396/6276/7175 5389/6266/7165 +f 5389/6266/7165 5398/6278/7177 5397/6277/7176 +f 5389/6266/7165 5395/6275/7174 5398/6278/7177 +f 5394/6273/7172 4240/6279/7178 4237/6269/7168 +f 5399/6280/7179 5394/6273/7172 5392/6271/7170 +f 5396/6276/7175 5399/6280/7179 5392/6271/7170 +f 4202/6281/7180 4240/6279/7178 5394/6273/7172 +f 5399/6280/7179 4202/6281/7180 5394/6273/7172 +f 5397/6277/7176 5400/6282/7181 5396/6276/7175 +f 5401/6283/7182 5393/6272/7171 4222/6274/7173 +f 5402/6284/7183 5399/6280/7179 5396/6276/7175 +f 5400/6282/7181 5402/6284/7183 5396/6276/7175 +f 5398/6278/7177 5403/6285/7184 5397/6277/7176 +f 5404/6286/7185 5395/6275/7174 5393/6272/7171 +f 5395/6275/7174 5404/6286/7185 5398/6278/7177 +f 5404/6286/7185 5393/6272/7171 5401/6283/7182 +f 5398/6278/7177 5404/6286/7185 5401/6283/7182 +f 5397/6277/7176 5405/6287/7186 5400/6282/7181 +f 5405/6287/7186 5402/6284/7183 5400/6282/7181 +f 4203/6288/7187 4202/6281/7180 5399/6280/7179 +f 5402/6284/7183 4203/6288/7187 5399/6280/7179 +f 5406/6289/7188 5405/6287/7186 5397/6277/7176 +f 5407/6290/7189 5406/6289/7188 5397/6277/7176 +f 5403/6285/7184 5407/6290/7189 5397/6277/7176 +f 4206/6291/7190 4203/6288/7187 5402/6284/7183 +f 5405/6287/7186 4206/6291/7190 5402/6284/7183 +f 5398/6278/7177 5408/6292/7191 5403/6285/7184 +f 4210/6293/7192 4206/6291/7190 5405/6287/7186 +f 5406/6289/7188 4210/6293/7192 5405/6287/7186 +f 5401/6283/7182 4222/6274/7173 4218/6294/7193 +f 5408/6292/7191 5398/6278/7177 5409/6295/7194 +f 5398/6278/7177 5401/6283/7182 5409/6295/7194 +f 5408/6292/7191 5409/6295/7194 5403/6285/7184 +f 5409/6295/7194 5401/6283/7182 4218/6294/7193 +f 5410/6296/7195 5406/6289/7188 5407/6290/7189 +f 5403/6285/7184 5410/6296/7195 5407/6290/7189 +f 5409/6295/7194 5410/6296/7195 5403/6285/7184 +f 5409/6295/7194 4218/6294/7193 5410/6296/7195 +f 4214/6297/7196 4210/6293/7192 5406/6289/7188 +f 5410/6296/7195 4214/6297/7196 5406/6289/7188 +f 4218/6294/7193 4214/6297/7196 5410/6296/7195 +f 4362/6298/7197 4259/6299/7198 4257/6300/7199 +f 4362/6298/7197 4368/6301/7200 4259/6299/7198 +f 4368/6301/7200 4261/6302/7201 4259/6299/7198 +f 4261/6302/7201 4368/6301/7200 4263/6303/7202 +f 4368/6301/7200 4374/6304/7203 4263/6303/7202 +f 4263/6303/7202 4374/6304/7203 4265/6305/7204 +f 4374/6304/7203 4305/6306/7205 4265/6305/7204 +f 4265/6305/7204 4305/6306/7205 4244/6307/7206 +f 4356/6308/7207 4362/6298/7197 4257/6300/7199 +f 4305/6306/7205 4304/6309/7208 4244/6307/7206 +f 4244/6307/7206 4304/6309/7208 4246/6310/7209 +f 4304/6309/7208 4310/6311/7210 4246/6310/7209 +f 4246/6310/7209 4310/6311/7210 4248/6312/7211 +f 4310/6311/7210 4319/6313/7212 4248/6312/7211 +f 4248/6312/7211 4319/6313/7212 4250/6314/7213 +f 4319/6313/7212 4326/6315/7214 4250/6314/7213 +f 4356/6308/7207 4257/6300/7199 4256/6316/7215 +f 4326/6315/7214 4333/6317/7216 4250/6314/7213 +f 4333/6317/7216 4252/6318/7217 4250/6314/7213 +f 4333/6317/7216 4340/6319/7218 4252/6318/7217 +f 4340/6319/7218 4254/6320/7219 4252/6318/7217 +f 4340/6319/7218 4350/6321/7220 4254/6320/7219 +f 4350/6321/7220 4256/6316/7215 4254/6320/7219 +f 4350/6321/7220 4356/6308/7207 4256/6316/7215 +f 4290/5027/7221 4251/6322/7221 4253/6323/7222 +f 4290/5027/7221 4278/5015/7221 4251/6322/7221 +f 4278/5015/7221 4249/6324/7223 4251/6322/7221 +f 4278/5015/7221 4276/5013/7224 4249/6324/7223 +f 4276/5013/7224 4247/6325/7225 4249/6324/7223 +f 4276/5013/7224 4274/5011/7226 4247/6325/7225 +f 4274/5011/7226 4245/6326/7227 4247/6325/7225 +f 4274/5011/7226 4273/5010/7228 4245/6326/7227 +f 4288/5025/7229 4290/5027/7221 4253/6323/7222 +f 4273/5010/7228 4243/6327/7230 4245/6326/7227 +f 4273/5010/7228 4271/5008/7231 4243/6327/7230 +f 4271/5008/7231 4266/6328/7232 4243/6327/7230 +f 4271/5008/7231 4267/5004/7233 4266/6328/7232 +f 4267/5004/7233 4264/6329/7234 4266/6328/7232 +f 4267/5004/7233 4269/5006/7232 4264/6329/7234 +f 4269/5006/7232 4262/6330/7235 4264/6329/7234 +f 4288/5025/7229 4253/6323/7222 4255/6331/7236 +f 4269/5006/7232 4281/5018/7232 4262/6330/7235 +f 4281/5018/7232 4260/6332/7237 4262/6330/7235 +f 4281/5018/7232 4283/5020/7238 4260/6332/7237 +f 4283/5020/7238 4258/6333/7239 4260/6332/7237 +f 4283/5020/7238 4285/5022/7240 4258/6333/7239 +f 4285/5022/7240 4255/6331/7236 4258/6333/7239 +f 4285/5022/7240 4288/5025/7229 4255/6331/7236 +f 5411/6334/7241 5412/6335/7242 4423/6336/7243 +f 4445/6337/7244 5411/6334/7241 4423/6336/7243 +f 5413/6338/7245 5411/6334/7241 4445/6337/7244 +f 4443/6339/7246 5413/6338/7245 4445/6337/7244 +f 5414/6340/7247 5413/6338/7245 4443/6339/7246 +f 4441/6341/7248 5414/6340/7247 4443/6339/7246 +f 5415/6342/7249 5414/6340/7247 4441/6341/7248 +f 4439/6343/7250 5415/6342/7249 4441/6341/7248 +f 4423/6336/7243 5412/6335/7242 4425/6344/7251 +f 5416/6345/7252 5415/6342/7249 4439/6343/7250 +f 4437/6346/7253 5416/6345/7252 4439/6343/7250 +f 5417/6347/7254 5416/6345/7252 4437/6346/7253 +f 4435/6348/7255 5417/6347/7254 4437/6346/7253 +f 5418/6349/7256 5417/6347/7254 4435/6348/7255 +f 4433/6350/7257 5418/6349/7256 4435/6348/7255 +f 5412/6335/7242 5419/6351/7258 4425/6344/7251 +f 5420/6352/7259 5418/6349/7256 4433/6350/7257 +f 4431/6353/7260 5420/6352/7259 4433/6350/7257 +f 5421/6354/7261 5420/6352/7259 4431/6353/7260 +f 4429/6355/7262 5421/6354/7261 4431/6353/7260 +f 5422/6356/7263 5421/6354/7261 4429/6355/7262 +f 4427/6357/7264 5422/6356/7263 4429/6355/7262 +f 5419/6351/7258 5422/6356/7263 4427/6357/7264 +f 4425/6344/7251 5419/6351/7258 4427/6357/7264 +f 4430/6358/7265 4432/6359/7265 5423/6360/7265 +f 4428/6361/7266 4430/6358/7265 5423/6360/7265 +f 4426/5190/7266 4428/6361/7266 5423/6360/7265 +f 4424/5188/7267 4426/5190/7266 5423/6360/7265 +f 4422/5186/7265 4424/5188/7267 5423/6360/7265 +f 4432/6359/7265 4434/6362/7265 5423/6360/7265 +f 4444/6363/7268 4422/5186/7265 5423/6360/7265 +f 4442/6364/7269 4444/6363/7268 5423/6360/7265 +f 4440/6365/7265 4442/6364/7269 5423/6360/7265 +f 4438/6366/7265 4440/6365/7265 5423/6360/7265 +f 4436/6367/7265 4438/6366/7265 5423/6360/7265 +f 4434/6362/7265 4436/6367/7265 5423/6360/7265 +f 4667/6353/7270 5424/6352/7271 5425/6354/7272 +f 4667/6353/7270 4669/6350/7273 5424/6352/7271 +f 4669/6350/7273 5426/6349/7274 5424/6352/7271 +f 4669/6350/7273 4671/6348/7275 5426/6349/7274 +f 4671/6348/7275 5427/6347/7276 5426/6349/7274 +f 4671/6348/7275 4673/6346/7277 5427/6347/7276 +f 4673/6346/7277 5428/6345/7278 5427/6347/7276 +f 4673/6346/7277 4675/6343/7279 5428/6345/7278 +f 4665/6355/7280 4667/6353/7270 5425/6354/7272 +f 4675/6343/7279 5429/6342/7281 5428/6345/7278 +f 4675/6343/7279 4677/6341/7282 5429/6342/7281 +f 4677/6341/7282 5430/6340/7283 5429/6342/7281 +f 4677/6341/7282 4679/6339/7284 5430/6340/7283 +f 4679/6339/7284 5431/6338/7285 5430/6340/7283 +f 4679/6339/7284 4681/6337/7286 5431/6338/7285 +f 4681/6337/7286 5432/6334/7287 5431/6338/7285 +f 4665/6355/7280 5425/6354/7272 5433/6356/7288 +f 4681/6337/7286 4660/6336/7289 5432/6334/7287 +f 4660/6336/7289 5434/6335/7290 5432/6334/7287 +f 4660/6336/7289 4661/6344/7291 5434/6335/7290 +f 4661/6344/7291 5435/6351/7292 5434/6335/7290 +f 4661/6344/7291 4663/6357/7293 5435/6351/7292 +f 4663/6357/7293 5433/6356/7288 5435/6351/7292 +f 4663/6357/7293 4665/6355/7280 5433/6356/7288 +f 5436/6360/7294 4664/6361/7294 4662/5190/7294 +f 5436/6360/7294 4666/6358/7295 4664/6361/7294 +f 5436/6360/7294 4668/6359/7296 4666/6358/7295 +f 5436/6360/7294 4670/6362/7296 4668/6359/7296 +f 5436/6360/7294 4672/6367/7294 4670/6362/7296 +f 5436/6360/7294 4674/6366/7294 4672/6367/7294 +f 5436/6360/7294 4662/5190/7294 4659/5188/7297 +f 5436/6360/7294 4676/6365/7298 4674/6366/7294 +f 5436/6360/7294 4678/6364/7299 4676/6365/7298 +f 5436/6360/7294 4680/6363/7295 4678/6364/7299 +f 5436/6360/7294 4658/5186/7300 4680/6363/7295 +f 5436/6360/7294 4659/5188/7297 4658/5186/7300 +f 4876/6368/7301 4878/6369/7302 5437/6370/7303 +f 5438/6371/7304 4876/6368/7301 5437/6370/7303 +f 5437/6370/7303 4878/6369/7302 5439/6372/7305 +f 5440/6373/7306 5438/6371/7304 5437/6370/7303 +f 5440/6373/7306 5437/6370/7303 5439/6372/7305 +f 4878/6369/7302 4880/6374/7307 5439/6372/7305 +f 5438/6371/7304 5441/6375/7308 4876/6368/7301 +f 5440/6373/7306 5441/6375/7308 5438/6371/7304 +f 5440/6373/7306 5439/6372/7305 5442/6376/7309 +f 5439/6372/7305 4880/6374/7307 5442/6376/7309 +f 5441/6375/7308 4875/6377/7310 4876/6368/7301 +f 4880/6374/7307 4884/6378/7311 5442/6376/7309 +f 5440/6373/7306 5443/6379/7312 5441/6375/7308 +f 5441/6375/7308 5443/6379/7312 4875/6377/7310 +f 5440/6373/7306 5444/6380/7313 5443/6379/7312 +f 5440/6373/7306 5445/6381/7314 5444/6380/7313 +f 5443/6379/7312 4873/6382/7315 4875/6377/7310 +f 5443/6379/7312 5444/6380/7313 4873/6382/7315 +f 5440/6373/7306 5446/6383/7316 5445/6381/7314 +f 5444/6380/7313 4682/6384/7317 4873/6382/7315 +f 5444/6380/7313 5445/6381/7314 4682/6384/7317 +f 5440/6373/7306 5447/6385/7318 5446/6383/7316 +f 5440/6373/7306 5442/6376/7309 5448/6386/7319 +f 5442/6376/7309 4884/6378/7311 5448/6386/7319 +f 5440/6373/7306 5449/6387/7320 5447/6385/7318 +f 5445/6381/7314 4683/6388/7321 4682/6384/7317 +f 5445/6381/7314 5446/6383/7316 4683/6388/7321 +f 5440/6373/7306 5450/6389/7322 5449/6387/7320 +f 5446/6383/7316 4686/6390/7323 4683/6388/7321 +f 5446/6383/7316 5447/6385/7318 4686/6390/7323 +f 5440/6373/7306 5451/6391/7324 5450/6389/7322 +f 5440/6373/7306 5452/6392/7325 5451/6391/7324 +f 5447/6385/7318 4688/6393/7326 4686/6390/7323 +f 5447/6385/7318 5449/6387/7320 4688/6393/7326 +f 5440/6373/7306 5453/6394/7327 5452/6392/7325 +f 5440/6373/7306 5454/6395/7328 5453/6394/7327 +f 5440/6373/7306 5455/6396/7329 5454/6395/7328 +f 5440/6373/7306 5448/6386/7319 5455/6396/7329 +f 5449/6387/7320 4692/6397/7330 4688/6393/7326 +f 5449/6387/7320 5450/6389/7322 4692/6397/7330 +f 5450/6389/7322 4698/6398/7331 4692/6397/7330 +f 5450/6389/7322 5451/6391/7324 4698/6398/7331 +f 4884/6378/7311 4886/6399/7332 5448/6386/7319 +f 5448/6386/7319 4886/6399/7332 5455/6396/7329 +f 5451/6391/7324 4850/6400/7333 4698/6398/7331 +f 5451/6391/7324 5452/6392/7325 4850/6400/7333 +f 5452/6392/7325 4908/6401/7334 4850/6400/7333 +f 5453/6394/7327 4901/6402/7335 5452/6392/7325 +f 4901/6402/7335 4908/6401/7334 5452/6392/7325 +f 5454/6395/7328 4894/6403/7336 5453/6394/7327 +f 4894/6403/7336 4901/6402/7335 5453/6394/7327 +f 5455/6396/7329 4889/6404/7337 5454/6395/7328 +f 4889/6404/7337 4894/6403/7336 5454/6395/7328 +f 4886/6399/7332 4889/6404/7337 5455/6396/7329 +f 5456/6405/7338 4758/6406/7339 4759/6407/7340 +f 5456/6405/7338 5457/6408/7341 4758/6406/7339 +f 5458/6409/7342 5457/6408/7341 5456/6405/7338 +f 5459/6410/7343 5456/6405/7338 4759/6407/7340 +f 5458/6409/7342 5456/6405/7338 5459/6410/7343 +f 5457/6408/7341 4757/6411/7344 4758/6406/7339 +f 5459/6410/7343 4759/6407/7340 4761/6412/7345 +f 5458/6409/7342 5459/6410/7343 5460/6413/7346 +f 5460/6413/7346 5459/6410/7343 4761/6412/7345 +f 5458/6409/7342 5461/6414/7347 5457/6408/7341 +f 5457/6408/7341 5461/6414/7347 4757/6411/7344 +f 5460/6413/7346 4761/6412/7345 4763/6415/7348 +f 5458/6409/7342 5462/6416/7349 5461/6414/7347 +f 5458/6409/7342 5463/6417/7350 5462/6416/7349 +f 5458/6409/7342 5460/6413/7346 5464/6418/7351 +f 5464/6418/7351 5460/6413/7346 4763/6415/7348 +f 5461/6414/7347 4762/6419/7352 4757/6411/7344 +f 5461/6414/7347 5462/6416/7349 4762/6419/7352 +f 5463/6417/7350 5458/6409/7342 4821/6420/7353 +f 5458/6409/7342 4816/6421/7354 4821/6420/7353 +f 5462/6416/7349 4829/6422/7355 4762/6419/7352 +f 5462/6416/7349 5463/6417/7350 4829/6422/7355 +f 5463/6417/7350 4821/6420/7353 4829/6422/7355 +f 5458/6409/7342 5465/6423/7356 4816/6421/7354 +f 5466/6424/7357 5465/6423/7356 5458/6409/7342 +f 5464/6418/7351 5466/6424/7357 5458/6409/7342 +f 5465/6423/7356 4814/6425/7358 4816/6421/7354 +f 5466/6424/7357 5467/6426/7359 5465/6423/7356 +f 5465/6423/7356 5467/6426/7359 4814/6425/7358 +f 5464/6418/7351 4763/6415/7348 5468/6427/7360 +f 5464/6418/7351 5468/6427/7360 5466/6424/7357 +f 5467/6426/7359 5466/6424/7357 4808/6428/7361 +f 5467/6426/7359 4808/6428/7361 4814/6425/7358 +f 5466/6424/7357 4802/6429/7362 4808/6428/7361 +f 4794/6430/7363 4802/6429/7362 5466/6424/7357 +f 5469/6431/7364 4794/6430/7363 5466/6424/7357 +f 5470/6432/7365 5469/6431/7364 5466/6424/7357 +f 5471/6433/7366 5470/6432/7365 5466/6424/7357 +f 4763/6415/7348 4765/6434/7367 5468/6427/7360 +f 5472/6435/7368 5471/6433/7366 5466/6424/7357 +f 5473/6436/7369 5472/6435/7368 5466/6424/7357 +f 5468/6427/7360 5473/6436/7369 5466/6424/7357 +f 5468/6427/7360 4765/6434/7367 5473/6436/7369 +f 4787/6437/7370 4794/6430/7363 5469/6431/7364 +f 5470/6432/7365 4787/6437/7370 5469/6431/7364 +f 5471/6433/7366 4779/6438/7371 5470/6432/7365 +f 4779/6438/7371 4787/6437/7370 5470/6432/7365 +f 5472/6435/7368 4772/6439/7372 5471/6433/7366 +f 4772/6439/7372 4779/6438/7371 5471/6433/7366 +f 5473/6436/7369 4767/6440/7373 5472/6435/7368 +f 4767/6440/7373 4772/6439/7372 5472/6435/7368 +f 4765/6434/7367 4767/6440/7373 5473/6436/7369 +f 4922/6441/7374 4931/6442/7375 5474/6443/7376 +f 5475/6444/7377 4922/6441/7374 5474/6443/7376 +f 5474/6443/7376 4931/6442/7375 5476/6445/7378 +f 5475/6444/7377 5474/6443/7376 5477/6446/7379 +f 5474/6443/7376 5476/6445/7378 5477/6446/7379 +f 4931/6442/7375 4945/6447/7380 5476/6445/7378 +f 4918/6448/7381 4922/6441/7374 5475/6444/7377 +f 5476/6445/7378 5478/6449/7382 5477/6446/7379 +f 5476/6445/7378 4945/6447/7380 5478/6449/7382 +f 5479/6450/7383 5475/6444/7377 5477/6446/7379 +f 5479/6450/7383 4918/6448/7381 5475/6444/7377 +f 4945/6447/7380 4953/6451/7384 5478/6449/7382 +f 5480/6452/7385 5479/6450/7383 5477/6446/7379 +f 5481/6453/7386 5480/6452/7385 5477/6446/7379 +f 4916/6454/7387 4918/6448/7381 5479/6450/7383 +f 5480/6452/7385 4916/6454/7387 5479/6450/7383 +f 5482/6455/7388 5481/6453/7386 5477/6446/7379 +f 5027/6456/7389 4916/6454/7387 5480/6452/7385 +f 5481/6453/7386 5027/6456/7389 5480/6452/7385 +f 5483/6457/7390 5482/6455/7388 5477/6446/7379 +f 5484/6458/7391 5483/6457/7390 5477/6446/7379 +f 5478/6449/7382 5485/6459/7392 5477/6446/7379 +f 5478/6449/7382 4953/6451/7384 5485/6459/7392 +f 5016/6460/7393 5027/6456/7389 5481/6453/7386 +f 5482/6455/7388 5016/6460/7393 5481/6453/7386 +f 5486/6461/7394 5484/6458/7391 5477/6446/7379 +f 5487/6462/7395 5486/6461/7394 5477/6446/7379 +f 5009/6463/7396 5016/6460/7393 5482/6455/7388 +f 5483/6457/7390 5009/6463/7396 5482/6455/7388 +f 5009/6463/7396 5483/6457/7390 5484/6458/7391 +f 5488/6464/7397 5487/6462/7395 5477/6446/7379 +f 5489/6465/7398 5488/6464/7397 5477/6446/7379 +f 5002/6466/7399 5009/6463/7396 5484/6458/7391 +f 5002/6466/7399 5484/6458/7391 5486/6461/7394 +f 5490/6467/7400 5489/6465/7398 5477/6446/7379 +f 5491/6468/7401 5490/6467/7400 5477/6446/7379 +f 5492/6469/7402 5491/6468/7401 5477/6446/7379 +f 5485/6459/7392 5492/6469/7402 5477/6446/7379 +f 4997/6470/7403 5002/6466/7399 5486/6461/7394 +f 4997/6470/7403 5486/6461/7394 5487/6462/7395 +f 4995/6471/7404 4997/6470/7403 5487/6462/7395 +f 4995/6471/7404 5487/6462/7395 5488/6464/7397 +f 4989/6472/7405 4995/6471/7404 5488/6464/7397 +f 4989/6472/7405 5488/6464/7397 5489/6465/7398 +f 4953/6451/7384 4958/6473/7406 5485/6459/7392 +f 5485/6459/7392 4958/6473/7406 5492/6469/7402 +f 4983/6474/7407 4989/6472/7405 5489/6465/7398 +f 4983/6474/7407 5489/6465/7398 5490/6467/7400 +f 4977/6475/7408 5490/6467/7400 5491/6468/7401 +f 4977/6475/7408 4983/6474/7407 5490/6467/7400 +f 4971/6476/7409 5491/6468/7401 5492/6469/7402 +f 4971/6476/7409 4977/6475/7408 5491/6468/7401 +f 4965/6477/7410 4971/6476/7409 5492/6469/7402 +f 4958/6473/7406 4965/6477/7410 5492/6469/7402 +f 5082/6478/7411 5086/6479/7412 5493/6480/7413 +f 5082/6478/7411 5493/6480/7413 5494/6481/7414 +f 5086/6479/7412 5495/6482/7415 5493/6480/7413 +f 5494/6481/7414 5493/6480/7413 5495/6482/7415 +f 5086/6479/7412 5092/6483/7416 5495/6482/7415 +f 5494/6481/7414 5495/6482/7415 5496/6484/7417 +f 5092/6483/7416 5496/6484/7417 5495/6482/7415 +f 5080/6485/7418 5082/6478/7411 5494/6481/7414 +f 5494/6481/7414 5496/6484/7417 5497/6486/7419 +f 5092/6483/7416 5098/6487/7420 5496/6484/7417 +f 5098/6487/7420 5497/6486/7419 5496/6484/7417 +f 5098/6487/7420 5105/6488/7421 5497/6486/7419 +f 5078/6489/7422 5080/6485/7418 5494/6481/7414 +f 5498/6490/7423 5078/6489/7422 5494/6481/7414 +f 5499/6491/7424 5498/6490/7423 5494/6481/7414 +f 5494/6481/7414 5497/6486/7419 5500/6492/7425 +f 5105/6488/7421 5500/6492/7425 5497/6486/7419 +f 5501/6493/7426 5499/6491/7424 5494/6481/7414 +f 5502/6494/7427 5501/6493/7426 5494/6481/7414 +f 5502/6494/7427 5494/6481/7414 5503/6495/7428 +f 5494/6481/7414 5504/6496/7429 5503/6495/7428 +f 5494/6481/7414 5500/6492/7425 5504/6496/7429 +f 5079/6497/7430 5078/6489/7422 5498/6490/7423 +f 5499/6491/7424 5079/6497/7430 5498/6490/7423 +f 5501/6493/7426 5076/6498/7431 5499/6491/7424 +f 5076/6498/7431 5079/6497/7430 5499/6491/7424 +f 5075/6499/7432 5076/6498/7431 5501/6493/7426 +f 5502/6494/7427 5505/6500/7433 5501/6493/7426 +f 5506/6501/7434 5075/6499/7432 5501/6493/7426 +f 5507/6502/7435 5506/6501/7434 5501/6493/7426 +f 5508/6503/7436 5507/6502/7435 5501/6493/7426 +f 5105/6488/7421 5111/6504/7437 5500/6492/7425 +f 5111/6504/7437 5504/6496/7429 5500/6492/7425 +f 5509/6505/7438 5508/6503/7436 5501/6493/7426 +f 5503/6495/7428 5117/6506/7439 5502/6494/7427 +f 5117/6506/7439 5503/6495/7428 5504/6496/7429 +f 5111/6504/7437 5117/6506/7439 5504/6496/7429 +f 5510/6507/7440 5509/6505/7438 5501/6493/7426 +f 5505/6500/7433 5510/6507/7440 5501/6493/7426 +f 5073/6508/7441 5075/6499/7432 5506/6501/7434 +f 5507/6502/7435 5073/6508/7441 5506/6501/7434 +f 5502/6494/7427 5124/6509/7442 5505/6500/7433 +f 5117/6506/7439 5124/6509/7442 5502/6494/7427 +f 5508/6503/7436 5074/6510/7443 5507/6502/7435 +f 5074/6510/7443 5073/6508/7441 5507/6502/7435 +f 5509/6505/7438 5149/6511/7444 5508/6503/7436 +f 5149/6511/7444 5074/6510/7443 5508/6503/7436 +f 5510/6507/7440 5144/6512/7445 5509/6505/7438 +f 5144/6512/7445 5149/6511/7444 5509/6505/7438 +f 5505/6500/7433 5136/6513/7446 5510/6507/7440 +f 5136/6513/7446 5144/6512/7445 5510/6507/7440 +f 5124/6509/7442 5136/6513/7446 5505/6500/7433 +f 5505/6500/7433 5505/6500/7433 5505/6500/7433 +# 10290 faces + +# +# object 99591ba9 +# + +v 3.4582 13.2028 23.6504 +v 3.8029 12.7655 23.6618 +v 3.8238 12.8009 23.1013 +v 3.5030 13.2078 23.0907 +v 3.5023 13.2027 23.0806 +v 3.8469 12.7655 23.0991 +v 3.8792 12.8010 22.5391 +v 3.5584 13.2078 22.5221 +v 3.5793 13.1927 22.5039 +v 3.8893 12.7643 22.5405 +v 3.9215 12.7998 21.9805 +v 3.5998 13.2058 21.9616 +v 3.6107 13.1960 21.9422 +v 3.9443 12.7777 21.9753 +v 3.9635 12.8126 21.4147 +v 3.6336 13.2119 21.4039 +v 3.3090 13.6816 21.6225 +v 3.6145 13.2149 21.6407 +v 3.6493 13.2473 21.0807 +v 3.3650 13.6816 21.0638 +v 3.2536 13.6816 22.1746 +v 3.5592 13.2150 22.1928 +v 3.5940 13.2473 21.6328 +v 3.3097 13.6816 21.6159 +v 3.1771 13.6676 22.7148 +v 3.5116 13.2196 22.7357 +v 3.5456 13.2530 22.1757 +v 3.2483 13.6781 22.1587 +v 3.1139 13.6600 23.2710 +v 3.4648 13.2258 23.2893 +v 3.4976 13.2606 22.7294 +v 3.0729 13.6696 23.8300 +v 3.4080 13.2247 23.8483 +v 3.4409 13.2593 23.2883 +v -3.3758 12.8025 23.0872 +v -3.3431 12.7674 23.6472 +v -3.0044 13.2075 23.6297 +v -3.0606 13.2121 23.0708 +v -3.4318 12.7993 22.5210 +v -3.3986 12.7648 23.0811 +v -3.0674 13.2108 23.0635 +v -3.1236 13.2144 22.5048 +v -3.4998 12.8262 21.9651 +v -3.4580 12.7806 22.5239 +v -3.1128 13.1764 22.4720 +v -3.1383 13.1930 21.9425 +v -3.5272 12.8083 21.3989 +v -3.4926 12.7681 21.9585 +v -3.1463 13.2023 21.9242 +v -3.2050 13.2122 21.3842 +v -3.2075 13.2505 21.0632 +v -3.1725 13.2181 21.6233 +v -2.8691 13.6845 21.6058 +v -2.9251 13.6845 21.0469 +v -3.1522 13.2504 21.6155 +v -3.1172 13.2181 22.1756 +v -2.8137 13.6844 22.1580 +v -2.8697 13.6845 21.5992 +v -3.0977 13.2504 22.1585 +v -3.0627 13.2180 22.7186 +v -2.7595 13.6844 22.6985 +v -2.8153 13.6844 22.1422 +v -3.0422 13.2504 22.7122 +v -3.0072 13.2180 23.2723 +v -2.7037 13.6843 23.2549 +v -2.9861 13.2503 23.2713 +v -2.9511 13.2179 23.8314 +v -2.6477 13.6843 23.8138 +v -3.0949 12.6431 26.7363 +v -3.3355 12.6571 24.0719 +v -3.4797 12.0577 26.7162 +v -3.7091 12.0830 24.0934 +v -3.4690 12.6674 22.6743 +v -3.8613 12.0645 22.6970 +v -3.7372 11.2901 26.7072 +v -4.0206 12.0321 20.7738 +v -3.6125 12.6639 20.7086 +v -3.9724 11.2678 24.1243 +v -4.1308 11.2171 22.7291 +v -4.2985 11.1497 20.7858 +v -4.1870 10.3695 22.7616 +v -3.7815 10.5223 26.6984 +v -4.3631 10.2673 20.7979 +v -4.0578 10.4525 24.1555 +v -3.9999 9.2975 22.8028 +v -4.2181 9.2739 20.7365 +v -3.8464 9.3081 24.1996 +v -3.5522 9.3366 26.7076 +v 29.1721 6.7144 -14.1900 +v 28.6044 6.7129 -13.5098 +v 27.7479 6.6880 -15.6291 +v 30.0308 6.8204 -13.3609 +v 30.0644 6.8880 -12.1943 +v 29.4206 6.8824 -11.4951 +v 21.8299 9.2942 -6.2992 +v 23.3701 9.0426 -4.8240 +v 29.5620 8.4006 -11.4824 +v 28.7159 8.5878 -13.5805 +v 20.9454 9.3201 -7.1123 +v 20.9302 9.2605 -8.7442 +v 27.9639 8.5666 -15.4394 +v 27.6395 8.5751 -15.7642 +v 30.1864 8.2382 -12.1459 +v 30.1535 8.2331 -13.3648 +v 29.2377 8.4513 -14.1990 +v 20.8235 7.3869 -8.5905 +v 27.6318 6.6909 -15.7486 +v 20.8009 7.4373 -7.2750 +v 21.8197 7.4080 -6.3342 +v 23.3741 7.5160 -4.8540 +v -27.2666 6.7133 -15.6932 +v -28.1232 6.7389 -13.5758 +v -28.6908 6.7409 -14.2574 +v -29.5500 6.8477 -13.4303 +v -29.5839 6.9154 -12.2638 +v -28.9400 6.9091 -11.5630 +v -22.8987 9.0638 -4.8779 +v -21.3597 9.3140 -6.3494 +v -29.0880 8.4274 -11.5507 +v -28.2429 8.6139 -13.6468 +v -20.4752 9.3390 -7.1606 +v -20.4599 9.2794 -8.7924 +v -27.4908 8.5920 -15.5040 +v -27.1664 8.6002 -15.8280 +v -29.7117 8.2657 -12.2156 +v -29.6788 8.2605 -13.4345 +v -28.7640 8.4779 -14.2666 +v -27.1505 6.7160 -15.8124 +v -20.3450 7.4058 -8.6384 +v -20.3226 7.4562 -7.3229 +v -21.3412 7.4278 -6.3845 +v -22.8960 7.5372 -4.9078 +v 3.5517 12.6400 26.7441 +v 3.9391 12.0543 26.7248 +v 3.7922 12.6539 24.0802 +v 4.1683 12.0794 24.1026 +v 4.1795 11.2864 26.7164 +v 4.4371 11.2640 24.1341 +v 4.2477 10.5187 26.7078 +v 3.9256 12.6640 22.6829 +v 4.5101 10.4486 24.1654 +v 4.3206 12.0608 22.7065 +v 4.5052 9.8765 24.1874 +v 4.2127 9.9259 26.7122 +v 4.5732 11.2131 22.7393 +v 4.6537 10.3654 22.7719 +v 4.2689 9.3044 24.2090 +v 4.6689 9.8295 22.7924 +v 4.4477 9.2936 22.8127 +v 4.4799 12.0282 20.7837 +v 4.0236 9.3332 26.7164 +v 4.7411 11.1456 20.7963 +v 4.8302 10.2630 20.8086 +v 4.6493 9.2699 20.7468 +v 4.0690 12.6604 20.7176 +v 4.8168 9.7664 20.7778 +v 3.9839 12.0339 -5.4433 +v 4.3093 11.5661 -5.5215 +v 3.8535 11.7402 -10.3437 +v 4.1697 11.2940 -10.3707 +v 4.5816 11.0149 -5.5638 +v 4.4328 10.7643 -10.3616 +v 3.4955 11.4466 -15.2443 +v 4.8536 10.1043 -5.5468 +v 4.6936 9.9157 -10.3339 +v 4.0565 10.5138 -15.1598 +v 4.9461 9.1938 -5.5301 +v 3.8025 11.0220 -15.2200 +v 4.3060 9.7271 -15.1212 +v 4.7656 9.0671 -10.3063 +v 4.3667 8.9405 -15.0828 +v 4.7144 8.4639 -10.2734 +v 4.9199 8.6301 -5.4638 +v 4.3059 8.2978 -15.0832 +v 4.5758 7.8766 -10.2222 +v 4.8161 8.0824 -5.3793 +v 4.1368 7.6710 -15.0654 +v -3.0776 11.4497 -15.2519 +v -3.6722 10.5173 -15.1688 +v -3.4855 11.7436 -10.3522 +v -4.1149 10.7682 -10.3716 +v -3.9070 8.9443 -15.0924 +v -4.4402 9.0713 -10.3171 +v -4.1862 11.0189 -5.5740 +v -4.2086 7.8807 -10.2325 +v -3.7097 7.6746 -15.0746 +v -4.5334 9.1982 -5.5412 +v -3.5387 12.0373 -5.4520 +v -4.3216 8.0866 -5.3899 +# 189 vertices + +vn 0.7920 0.3240 0.5174 +vn 0.7872 0.3206 0.5268 +vn 0.7965 0.3200 0.5129 +vn 0.7935 0.3040 0.5272 +vn 0.7955 0.3145 0.5179 +vn 0.7985 0.3314 0.5026 +vn 0.7924 0.3345 0.5102 +vn 0.7914 0.3285 0.5155 +vn 0.7920 0.3324 0.5120 +vn 0.7930 0.3388 0.5064 +vn 0.8009 0.2827 0.5279 +vn 0.7889 0.2975 0.5376 +vn 0.7914 0.3092 0.5273 +vn 0.7898 0.3014 0.5343 +vn 0.7871 0.2893 0.5448 +vn 0.7842 0.3209 0.5311 +vn 0.7851 0.3259 0.5267 +vn 0.7845 0.3225 0.5297 +vn 0.7835 0.3172 0.5343 +vn 0.7937 0.3263 0.5133 +vn 0.7909 0.3109 0.5272 +vn 0.7928 0.3211 0.5181 +vn 0.7956 0.3378 0.5029 +vn -0.8819 0.3106 -0.3546 +vn -0.8847 0.2978 -0.3587 +vn -0.8656 0.3841 -0.3213 +vn -0.8741 0.3789 -0.3040 +vn -0.8567 0.3892 -0.3386 +vn -0.8472 0.3942 -0.3562 +vn -0.8811 0.3300 -0.3388 +vn -0.8807 0.3302 -0.3396 +vn -0.8816 0.3297 -0.3378 +vn -0.8821 0.3294 -0.3369 +vn -0.8930 0.2536 -0.3718 +vn -0.8912 0.2514 -0.3775 +vn -0.8924 0.2528 -0.3738 +vn -0.9050 0.1577 -0.3952 +vn -0.9046 0.1769 -0.3879 +vn -0.8880 0.2476 -0.3874 +vn -0.9023 0.1729 -0.3949 +vn -0.9105 0.0265 -0.4126 +vn -0.8955 0.1843 -0.4052 +vn -0.8852 0.2444 -0.3959 +vn -0.9140 0.0453 -0.4031 +vn -0.9110 0.0376 -0.4107 +vn -0.9069 0.0390 -0.4195 +vn -0.9053 -0.0770 -0.4176 +vn -0.9094 -0.0810 -0.4081 +vn -0.9059 -0.0744 -0.4170 +vn -0.9103 -0.0703 -0.4079 +vn -0.9024 -0.1301 -0.4109 +vn -0.9041 -0.1228 -0.4093 +vn -0.9042 -0.1365 -0.4047 +vn -0.9054 -0.1409 -0.4005 +vn 0.0002 -0.9998 -0.0215 +vn 0.0330 -0.9994 0.0139 +vn -0.1021 -0.9861 -0.1310 +vn 0.0756 -0.9954 0.0597 +vn 0.0757 -0.9953 0.0598 +vn 0.2845 0.9340 0.2163 +vn 0.3808 0.8629 0.3323 +vn 0.3865 0.8570 0.3410 +vn 0.2658 0.9442 0.1947 +vn 0.2168 0.9666 0.1367 +vn 0.2169 0.9666 0.1368 +vn 0.4644 0.8407 0.2785 +vn 0.4991 0.8023 0.3275 +vn 0.4990 0.8023 0.3274 +vn 0.4487 0.8560 0.2567 +vn 0.3603 0.9222 0.1407 +vn -0.2163 -0.9668 -0.1362 +vn -0.2162 -0.9668 -0.1362 +vn -0.1770 -0.9801 -0.0903 +vn -0.1567 -0.9854 -0.0672 +vn -0.0546 -0.9973 0.0501 +vn -0.0619 -0.9973 0.0405 +vn -0.1487 -0.9766 -0.1556 +vn -0.1836 -0.9750 -0.1250 +vn -0.1808 -0.9752 -0.1275 +vn -0.2122 -0.9722 -0.0992 +vn -0.2122 -0.9722 -0.0991 +vn -0.1128 0.9900 0.0844 +vn -0.0716 0.9967 0.0371 +vn -0.1134 0.9895 0.0892 +vn -0.0770 0.9960 0.0456 +vn -0.0385 0.9993 -0.0027 +vn -0.0385 0.9993 -0.0026 +vn -0.3754 0.9160 -0.1413 +vn -0.3379 0.9239 -0.1795 +vn -0.3367 0.9241 -0.1807 +vn -0.2936 0.9298 -0.2219 +vn 0.0381 -0.9993 0.0027 +vn 0.0101 -0.9992 0.0377 +vn 0.0142 -0.9994 0.0315 +vn -0.0165 -0.9975 0.0694 +vn -0.0160 -0.9977 0.0660 +vn 0.8025 0.2837 0.5249 +vn 0.8162 0.2337 0.5284 +vn 0.8018 0.2833 0.5262 +vn 0.8149 0.2310 0.5316 +vn 0.8347 0.1332 0.5344 +vn 0.8342 0.1345 0.5349 +vn 0.8393 0.0653 0.5397 +vn 0.8040 0.2847 0.5221 +vn 0.8404 0.0749 0.5368 +vn 0.8195 0.2284 0.5255 +vn 0.8406 -0.0197 0.5413 +vn 0.8428 -0.0231 0.5378 +vn 0.8382 0.1311 0.5294 +vn 0.8415 0.0811 0.5341 +vn 0.8376 -0.0930 0.5382 +vn 0.8441 -0.0146 0.5360 +vn 0.8388 -0.0979 0.5355 +vn 0.8244 0.2217 0.5208 +vn 0.8456 -0.0652 0.5298 +vn 0.8400 0.1299 0.5268 +vn 0.8467 0.0734 0.5270 +vn 0.8493 -0.0827 0.5214 +vn 0.8080 0.2873 0.5143 +vn 0.8527 -0.0115 0.5223 +vn 0.8384 0.3307 0.4332 +vn 0.8468 0.3015 0.4383 +vn 0.8423 0.3368 0.4209 +vn 0.8555 0.2989 0.4229 +vn 0.8654 0.2222 0.4492 +vn 0.8737 0.2215 0.4331 +vn 0.8490 0.3440 0.4011 +vn 0.8787 0.1404 0.4563 +vn 0.8877 0.1378 0.4393 +vn 0.8813 0.2217 0.4174 +vn 0.8878 0.0627 0.4559 +vn 0.8635 0.2955 0.4087 +vn 0.8954 0.1373 0.4236 +vn 0.8965 0.0539 0.4398 +vn 0.9040 0.0526 0.4244 +vn 0.8991 -0.0174 0.4373 +vn 0.8926 -0.0031 0.4508 +vn 0.9070 -0.0233 0.4205 +vn 0.8978 -0.0511 0.4373 +vn 0.8935 -0.0300 0.4481 +vn 0.9064 -0.0692 0.4167 +vn -0.8312 0.1830 -0.5250 +vn -0.8407 0.1053 -0.5312 +vn -0.8380 0.1961 -0.5092 +vn -0.8529 0.1081 -0.5108 +vn -0.8416 -0.0566 -0.5371 +vn -0.8547 -0.0575 -0.5159 +vn -0.8659 0.1014 -0.4898 +vn -0.8467 -0.1308 -0.5157 +vn -0.8369 -0.1158 -0.5349 +vn -0.8680 -0.0613 -0.4929 +vn -0.8510 0.2059 -0.4831 +vn -0.8606 -0.1331 -0.4916 +# 153 vertex normals + +vt -0.0049 1.2969 0.0000 +vt -0.0160 0.9919 0.0000 +vt 0.2964 0.9925 0.0000 +vt 0.3066 1.2764 0.0000 +vt 1.0049 1.3606 0.0000 +vt 0.7080 1.3599 0.0000 +vt 1.0029 1.2969 0.0000 +vt 0.7104 1.2974 0.0000 +vt 0.5522 1.3599 0.0000 +vt 0.5547 1.2942 0.0000 +vt 1.0020 1.2133 0.0000 +vt 0.3406 1.2891 0.0000 +vt 0.3330 1.3579 0.0000 +vt 0.7144 1.2087 0.0000 +vt 0.5591 1.2020 0.0000 +vt 0.3423 1.1931 0.0000 +vt 0.5630 1.1098 0.0000 +vt 1.0020 1.1296 0.0000 +vt 0.3442 1.0970 0.0000 +vt 0.7183 1.1200 0.0000 +vt 0.5679 0.9931 0.0000 +vt 0.3379 0.9889 0.0000 +vt 0.7236 0.9955 0.0000 +vt 1.0029 1.0006 0.0000 +vt 0.0080 1.8018 0.0000 +vt 0.0897 1.8066 0.0000 +vt 0.0017 1.6147 0.0000 +vt 0.0091 1.9116 0.0000 +vt 0.0853 1.9878 0.0000 +vt 0.1732 1.9893 0.0000 +vt 1.0029 1.8086 0.0000 +vt 1.0039 2.0049 0.0000 +vt 0.1644 1.9990 0.0000 +vt 0.0771 1.8096 0.0000 +vt 1.0039 1.6978 0.0000 +vt 0.8960 1.5933 0.0000 +vt -0.0001 1.6411 0.0000 +vt -0.0013 1.5986 0.0000 +vt 0.0803 1.9990 0.0000 +vt 0.0005 1.9194 0.0000 +vt 0.0025 1.8052 0.0000 +vt 0.9136 1.5962 0.0000 +vt 0.0010 1.5996 0.0000 +vt 1.0029 1.6777 0.0000 +vt 1.0020 1.8057 0.0000 +vt 1.0029 2.0039 0.0000 +vt 0.3330 1.3606 0.0000 +vt 0.3350 1.2969 0.0000 +vt 0.6299 1.3599 0.0000 +vt 0.6274 1.2974 0.0000 +vt 0.3354 1.2133 0.0000 +vt 0.6235 1.2087 0.0000 +vt 0.3362 1.1296 0.0000 +vt 0.7856 1.3599 0.0000 +vt 0.6196 1.1200 0.0000 +vt 0.7827 1.2942 0.0000 +vt 0.6167 1.0577 0.0000 +vt 0.3352 1.0651 0.0000 +vt 0.7788 1.2020 0.0000 +vt 0.7749 1.1098 0.0000 +vt 0.6143 0.9955 0.0000 +vt 0.7725 1.0515 0.0000 +vt 0.7700 0.9931 0.0000 +vt 0.9976 1.2891 0.0000 +vt 0.3345 1.0006 0.0000 +vt 0.9956 1.1931 0.0000 +vt 0.9937 1.0970 0.0000 +vt 1.0000 0.9889 0.0000 +vt 1.0049 1.3579 0.0000 +vt 0.9971 1.0430 0.0000 +vt 1.0225 2.0029 0.0000 +vt 1.0137 1.9517 0.0000 +vt 0.5083 1.9956 0.0000 +vt 0.5049 1.9458 0.0000 +vt 1.0059 1.8999 0.0000 +vt 0.5020 1.8955 0.0000 +vt -0.0061 1.9873 0.0000 +vt 1.0029 1.8066 0.0000 +vt 0.5010 1.8091 0.0000 +vt -0.0017 1.8916 0.0000 +vt 1.0000 1.7134 0.0000 +vt -0.0039 1.9395 0.0000 +vt -0.0014 1.8110 0.0000 +vt 0.4998 1.7222 0.0000 +vt -0.0010 1.7305 0.0000 +vt 0.5015 1.6606 0.0000 +vt 1.0059 1.6563 0.0000 +vt -0.0031 1.6655 0.0000 +vt 0.5029 1.5996 0.0000 +vt 1.0107 1.5991 0.0000 +vt -0.0051 1.6006 0.0000 +# 91 texture coords + +g 99591ba9 +f 5511/6514/7447 5512/6515/7447 5513/6516/7447 +f 5514/6517/7447 5511/6514/7447 5513/6516/7447 +f 5515/6514/7448 5516/6515/7448 5517/6516/7448 +f 5518/6517/7448 5515/6514/7448 5517/6516/7448 +f 5519/6514/7449 5520/6515/7450 5521/6516/7451 +f 5522/6517/7452 5519/6514/7449 5521/6516/7451 +f 5523/6514/7453 5524/6515/7454 5525/6516/7455 +f 5526/6517/7456 5523/6514/7453 5525/6516/7455 +f 5527/6514/7457 5528/6515/7457 5529/6516/7457 +f 5530/6517/7457 5527/6514/7457 5529/6516/7457 +f 5531/6514/7457 5532/6515/7457 5533/6516/7457 +f 5534/6517/7457 5531/6514/7457 5533/6516/7457 +f 5535/6514/7458 5536/6515/7459 5537/6516/7460 +f 5538/6517/7461 5535/6514/7458 5537/6516/7460 +f 5539/6514/7462 5540/6515/7463 5541/6516/7464 +f 5535/6517/7465 5539/6514/7462 5541/6516/7464 +f 5542/6514/7466 5543/6515/7467 5544/6516/7468 +f 5539/6517/7469 5542/6514/7466 5544/6516/7468 +f 5545/6516/7470 5546/6515/7470 5547/6514/7470 +f 5548/6517/7470 5545/6516/7470 5547/6514/7470 +f 5549/6516/7471 5550/6515/7471 5551/6514/7471 +f 5552/6517/7471 5549/6516/7471 5551/6514/7471 +f 5553/6516/7472 5554/6515/7473 5555/6514/7474 +f 5556/6517/7475 5553/6516/7472 5555/6514/7474 +f 5557/6516/7476 5558/6515/7477 5559/6514/7478 +f 5560/6517/7479 5557/6516/7476 5559/6514/7478 +f 5561/6516/7480 5562/6515/7480 5563/6514/7480 +f 5564/6517/7480 5561/6516/7480 5563/6514/7480 +f 5565/6516/7480 5566/6515/7480 5567/6514/7480 +f 5568/6517/7480 5565/6516/7480 5567/6514/7480 +f 5569/6516/7480 5570/6515/7480 5571/6514/7480 +f 5572/6517/7480 5569/6516/7480 5571/6514/7480 +f 5573/6516/7480 5574/6515/7480 5575/6514/7480 +f 5571/6517/7480 5573/6516/7480 5575/6514/7480 +f 5576/6516/7480 5577/6515/7480 5578/6514/7480 +f 5575/6517/7480 5576/6516/7480 5578/6514/7480 +f 5579/6518/7481 5580/6519/7482 5581/6520/7483 +f 5580/6519/7482 5582/6521/7484 5581/6520/7483 +f 5580/6519/7482 5583/6522/7485 5582/6521/7484 +f 5583/6522/7485 5584/6523/7486 5582/6521/7484 +f 5581/6520/7483 5582/6521/7484 5585/6524/7487 +f 5586/6525/7488 5584/6523/7486 5583/6522/7485 +f 5587/6526/7489 5586/6525/7488 5583/6522/7485 +f 5582/6521/7484 5584/6523/7486 5588/6527/7490 +f 5582/6521/7484 5588/6527/7490 5585/6524/7487 +f 5589/6528/7491 5584/6523/7486 5586/6525/7488 +f 5584/6523/7486 5589/6528/7491 5588/6527/7490 +f 5590/6529/7492 5589/6528/7491 5586/6525/7488 +f 5591/6530/7493 5589/6528/7491 5590/6529/7492 +f 5585/6524/7487 5588/6527/7490 5592/6531/7494 +f 5593/6532/7495 5591/6530/7493 5590/6529/7492 +f 5588/6527/7490 5589/6528/7491 5594/6533/7496 +f 5589/6528/7491 5591/6530/7493 5594/6533/7496 +f 5588/6527/7490 5594/6533/7496 5592/6531/7494 +f 5595/6534/7497 5591/6530/7493 5593/6532/7495 +f 5591/6530/7493 5595/6534/7497 5594/6533/7496 +f 5596/6535/7498 5595/6534/7497 5593/6532/7495 +f 5595/6534/7497 5597/6536/7499 5594/6533/7496 +f 5594/6533/7496 5597/6536/7499 5592/6531/7494 +f 5597/6536/7499 5598/6537/7500 5592/6531/7494 +f 5599/6538/7501 5600/6539/7502 5601/6540/7503 +f 5602/6541/7504 5600/6539/7502 5599/6538/7501 +f 5602/6541/7504 5603/6542/7505 5600/6539/7502 +f 5603/6542/7505 5604/6543/7505 5600/6539/7502 +f 5605/6544/7506 5606/6545/7507 5607/6546/7508 +f 5608/6547/7509 5605/6544/7506 5607/6546/7508 +f 5609/6548/7510 5605/6544/7506 5608/6547/7509 +f 5610/6549/7510 5609/6548/7510 5608/6547/7509 +f 5608/6547/7509 5611/6550/7511 5610/6549/7510 +f 5611/6550/7511 5612/6551/7511 5610/6549/7510 +f 5608/6547/7512 5607/6546/7513 5613/6552/7513 +f 5608/6547/7512 5613/6552/7513 5614/6553/7514 +f 5615/6554/7515 5608/6547/7512 5614/6553/7514 +f 5608/6547/7512 5615/6554/7515 5611/6550/7516 +f 5616/6555/7517 5617/6556/7518 5601/6540/7518 +f 5616/6555/7517 5601/6540/7518 5600/6539/7519 +f 5600/6539/7519 5618/6557/7517 5616/6555/7517 +f 5600/6539/7519 5619/6558/7520 5618/6557/7517 +f 5600/6539/7519 5604/6543/7521 5619/6558/7520 +f 5604/6543/7521 5620/6559/7522 5619/6558/7520 +f 5621/6540/7523 5622/6539/7524 5623/6538/7525 +f 5623/6538/7525 5622/6539/7524 5624/6541/7526 +f 5622/6539/7524 5625/6542/7527 5624/6541/7526 +f 5622/6539/7524 5626/6543/7527 5625/6542/7527 +f 5627/6545/7528 5628/6544/7529 5629/6546/7530 +f 5628/6544/7529 5630/6547/7531 5629/6546/7530 +f 5630/6547/7531 5628/6544/7529 5631/6548/7532 +f 5630/6547/7531 5631/6548/7532 5632/6549/7532 +f 5632/6549/7532 5633/6550/7533 5630/6547/7531 +f 5632/6549/7532 5634/6551/7532 5633/6550/7533 +f 5635/6552/7534 5629/6546/7534 5630/6547/7535 +f 5636/6553/7534 5635/6552/7534 5630/6547/7535 +f 5636/6553/7534 5630/6547/7535 5637/6554/7536 +f 5633/6550/7537 5637/6554/7536 5630/6547/7535 +f 5621/6540/7538 5638/6556/7538 5639/6555/7538 +f 5622/6539/7539 5621/6540/7538 5639/6555/7538 +f 5640/6557/7538 5622/6539/7539 5639/6555/7538 +f 5640/6557/7538 5641/6558/7540 5622/6539/7539 +f 5626/6543/7541 5622/6539/7539 5641/6558/7540 +f 5642/6559/7542 5626/6543/7541 5641/6558/7540 +f 5643/6560/7543 5644/6561/7544 5645/6562/7545 +f 5644/6561/7544 5646/6563/7546 5645/6562/7545 +f 5644/6561/7544 5647/6564/7547 5646/6563/7546 +f 5647/6564/7547 5648/6565/7548 5646/6563/7546 +f 5647/6564/7547 5649/6566/7549 5648/6565/7548 +f 5645/6562/7545 5646/6563/7546 5650/6567/7550 +f 5649/6566/7549 5651/6568/7551 5648/6565/7548 +f 5646/6563/7546 5648/6565/7548 5652/6569/7552 +f 5646/6563/7546 5652/6569/7552 5650/6567/7550 +f 5651/6568/7551 5649/6566/7549 5653/6570/7553 +f 5649/6566/7549 5654/6571/7554 5653/6570/7553 +f 5648/6565/7548 5651/6568/7551 5655/6572/7555 +f 5648/6565/7548 5655/6572/7555 5652/6569/7552 +f 5651/6568/7551 5653/6570/7553 5656/6573/7556 +f 5651/6568/7551 5656/6573/7556 5655/6572/7555 +f 5653/6570/7553 5654/6571/7554 5657/6574/7557 +f 5653/6570/7553 5658/6575/7558 5656/6573/7556 +f 5658/6575/7558 5653/6570/7553 5659/6576/7559 +f 5653/6570/7553 5657/6574/7557 5659/6576/7559 +f 5652/6569/7552 5660/6577/7560 5650/6567/7550 +f 5660/6577/7560 5652/6569/7552 5655/6572/7555 +f 5654/6571/7554 5661/6578/7561 5657/6574/7557 +f 5662/6579/7562 5655/6572/7555 5656/6573/7556 +f 5662/6579/7562 5660/6577/7560 5655/6572/7555 +f 5663/6580/7563 5656/6573/7556 5658/6575/7558 +f 5663/6580/7563 5662/6579/7562 5656/6573/7556 +f 5659/6576/7559 5664/6581/7564 5658/6575/7558 +f 5660/6577/7560 5665/6582/7565 5650/6567/7550 +f 5666/6583/7566 5663/6580/7563 5658/6575/7558 +f 5664/6581/7564 5666/6583/7566 5658/6575/7558 +f 5667/6584/7567 5668/6585/7568 5669/6586/7569 +f 5668/6585/7568 5670/6587/7570 5669/6586/7569 +f 5668/6585/7568 5671/6588/7571 5670/6587/7570 +f 5671/6588/7571 5672/6589/7572 5670/6587/7570 +f 5669/6586/7569 5670/6587/7570 5673/6590/7573 +f 5671/6588/7571 5674/6591/7574 5672/6589/7572 +f 5674/6591/7574 5675/6592/7575 5672/6589/7572 +f 5672/6589/7572 5676/6593/7576 5670/6587/7570 +f 5674/6591/7574 5677/6594/7577 5675/6592/7575 +f 5670/6587/7570 5678/6595/7578 5673/6590/7573 +f 5676/6593/7576 5678/6595/7578 5670/6587/7570 +f 5675/6592/7575 5679/6596/7579 5672/6589/7572 +f 5679/6596/7579 5676/6593/7576 5672/6589/7572 +f 5677/6594/7577 5680/6597/7580 5675/6592/7575 +f 5681/6598/7581 5679/6596/7579 5675/6592/7575 +f 5680/6597/7580 5681/6598/7581 5675/6592/7575 +f 5680/6597/7580 5677/6594/7577 5682/6599/7582 +f 5680/6597/7580 5682/6599/7582 5681/6598/7581 +f 5677/6594/7577 5683/6600/7583 5682/6599/7582 +f 5682/6599/7582 5684/6601/7584 5681/6598/7581 +f 5682/6599/7582 5683/6600/7583 5685/6602/7585 +f 5682/6599/7582 5685/6602/7585 5684/6601/7584 +f 5683/6600/7583 5686/6603/7586 5685/6602/7585 +f 5685/6602/7585 5687/6604/7587 5684/6601/7584 +f 5688/6590/7588 5689/6593/7589 5690/6586/7590 +f 5689/6593/7589 5691/6589/7591 5690/6586/7590 +f 5689/6593/7589 5692/6598/7592 5691/6589/7591 +f 5692/6598/7592 5693/6597/7593 5691/6589/7591 +f 5690/6586/7590 5691/6589/7591 5694/6588/7594 +f 5695/6602/7595 5693/6597/7593 5692/6598/7592 +f 5696/6604/7596 5695/6602/7595 5692/6598/7592 +f 5691/6589/7591 5693/6597/7593 5697/6594/7597 +f 5694/6588/7594 5691/6589/7591 5697/6594/7597 +f 5693/6597/7593 5695/6602/7595 5697/6594/7597 +f 5698/6584/7598 5690/6586/7590 5694/6588/7594 +f 5695/6602/7595 5699/6603/7599 5697/6594/7597 +# 166 faces + +# +# object 0584a8c1 +# + +v 0.0596 16.9417 20.6627 +v 0.0593 17.0730 19.2947 +v -0.2685 16.9056 20.6516 +v -0.2902 17.0320 19.2891 +v 0.0595 16.9618 17.8684 +v -0.2739 16.9235 17.8695 +v 0.0522 16.6519 16.4459 +v -0.7311 16.7470 20.6043 +v -0.2433 16.6201 16.4500 +v -0.7731 16.8558 19.2665 +v -0.1674 16.2096 15.0159 +v 0.0456 16.2308 15.0100 +v -0.7416 16.7560 17.8754 +v -0.5355 16.0948 15.0489 +v -0.6825 16.4730 16.4700 +v -1.1746 16.5357 20.5416 +v -1.2361 16.6209 19.2366 +v -1.1036 16.2771 16.4970 +v -1.1898 16.5328 17.8834 +v -0.8884 15.9418 15.0929 +v -1.5637 16.2295 20.4510 +v -1.6423 16.2804 19.1935 +v -1.4731 15.9931 16.5362 +v -1.5832 16.2094 17.8954 +v -1.1981 15.7201 15.1570 +v -1.8752 15.8457 20.3377 +v -1.9673 15.8538 19.1397 +v -1.7687 15.6373 16.5855 +v -1.8980 15.8041 17.9105 +v -1.4459 15.4423 15.2373 +v -2.1126 15.4230 20.2131 +v -2.2152 15.3840 19.0807 +v -1.9942 15.2453 16.6399 +v -2.1380 15.3579 17.9273 +v -1.6349 15.1363 15.3259 +v -2.1870 15.1302 20.1268 +v -2.2650 14.8355 17.9472 +v -2.2631 14.8683 19.8649 +v -2.3713 14.6069 18.9833 +v -2.1135 14.7867 16.7038 +v -1.7642 14.7782 15.4297 +v -2.3201 14.3457 17.9659 +v -2.1602 14.3987 16.7579 +v -1.7725 14.7142 15.4483 +v -2.0132 14.5136 16.0089 +v 0.2232 14.9900 23.9091 +v 0.2195 16.6735 21.5497 +v -0.0713 16.6287 21.6124 +v -0.3738 16.4718 21.8322 +v -0.6011 16.2072 22.2027 +v -0.6837 15.8820 22.6584 +v -0.5958 15.5420 23.1352 +v -0.1207 14.9996 23.8952 +v -0.3737 15.0155 23.8732 +v -0.6426 16.4617 21.6593 +v -0.2481 16.6904 21.2569 +v -0.7107 16.5318 21.2098 +v -1.1542 16.3205 21.1470 +v -0.9063 16.1547 22.0895 +v -1.5433 16.0143 21.0564 +v -0.9984 15.7924 22.5973 +v -1.8548 15.6305 20.9431 +v -1.7905 14.7541 21.7811 +v -2.0922 15.2079 20.8184 +v -1.2729 14.8041 22.8346 +v -2.2178 14.7132 20.6727 +v -0.9047 15.4300 23.1051 +v -0.7718 15.0962 23.5728 +v 0.3778 17.0729 19.2950 +v 0.3781 16.9415 20.6630 +v 0.7064 16.9052 20.6527 +v 0.7275 17.0316 19.2903 +v 1.1697 16.7462 20.6065 +v 1.2112 16.8549 19.2688 +v 0.3780 16.9616 17.8688 +v 1.6141 16.5344 20.5449 +v 1.6752 16.6195 19.2400 +v 0.7116 16.9230 17.8707 +v 2.0046 16.2279 20.4552 +v 1.1800 16.7551 17.8776 +v 2.0829 16.2787 19.1978 +v 1.6293 16.5315 17.8867 +v 2.3177 15.8438 20.3426 +v 0.3867 16.6517 16.4463 +v 0.6823 16.6197 16.4511 +v 2.4098 15.8518 19.1448 +v 1.5441 16.2759 16.5000 +v 2.5570 15.4209 20.2185 +v 2.0241 16.2078 17.8996 +v 1.1222 16.4722 16.4721 +v 1.9148 15.9916 16.5401 +v 0.6082 16.2092 15.0169 +v 0.9768 16.0941 15.0507 +v 1.3303 15.9408 15.0955 +v 2.6597 15.3818 19.0864 +v 1.6409 15.7188 15.1603 +v 0.3951 16.2307 15.0104 +v 2.3406 15.8022 17.9155 +v 2.2121 15.6354 16.5901 +v 1.8900 15.4407 15.2412 +v 2.6327 15.1280 20.1324 +v 2.0803 15.1346 15.3302 +v 2.4392 15.2433 16.6451 +v 2.2112 14.7763 15.4343 +v 2.5826 15.3557 17.9328 +v 2.7099 14.8660 19.8707 +v 2.5606 14.7845 16.7093 +v 2.8193 14.6045 18.9893 +v 2.7118 14.8332 17.9530 +v 2.2198 14.7124 15.4529 +v 2.6090 14.3965 16.7634 +v 2.4614 14.5115 16.0141 +v 2.7691 14.3433 17.9719 +v 0.5105 16.6284 21.6131 +v 0.8136 16.4712 21.8336 +v 1.0421 16.2064 22.2046 +v 1.1262 15.8812 22.6605 +v 1.0398 15.5412 23.1371 +v 0.5671 14.9993 23.8960 +v 0.8200 15.0149 23.8746 +v 1.3492 15.4289 23.1077 +v 1.2177 15.0953 23.5751 +v 1.7201 14.8027 22.8381 +v 1.4412 15.7913 22.6001 +v 2.2379 14.7523 21.7858 +v 2.2983 15.6286 20.9479 +v 2.5376 15.2057 20.8238 +v 1.9851 16.0127 21.0605 +v 2.6654 14.7110 20.6784 +v 1.3476 16.1537 22.0921 +v 1.5946 16.3193 21.1502 +v 1.0825 16.4610 21.6613 +v 1.1503 16.5310 21.2120 +v 0.6869 16.6900 21.2580 +v -0.2380 15.1172 11.9522 +v -0.4376 15.8668 14.2202 +v -0.0675 15.1831 11.9871 +v -0.3709 15.0359 11.9680 +v -0.7107 15.7506 14.2243 +v -0.1050 15.9860 14.2160 +v -0.9708 15.5558 14.2315 +v -0.5288 14.9586 12.1093 +v -0.5033 16.0200 14.7444 +v -1.1791 15.3116 14.2406 +v -0.1476 16.1289 14.7119 +v -0.7288 14.8708 12.3761 +v -0.8369 15.8786 14.7870 +v -1.1323 15.6670 14.8508 +v 0.1082 15.2810 12.0977 +v -1.3378 15.0426 14.2507 +v 0.0457 16.1537 14.7046 +v -1.3687 15.4018 14.9308 +v 0.0461 16.0018 14.2155 +v -1.4218 14.7278 14.2627 +v -1.4141 14.6360 14.2662 +v -1.5489 15.1098 15.0191 +v -1.6838 14.6203 15.0700 +v -1.6961 14.6498 15.1275 +v -1.6736 14.7680 15.1224 +v 0.3956 16.0017 14.2159 +v 0.3952 16.1535 14.7050 +v 0.5467 15.9857 14.2168 +v 0.3365 15.2809 12.0980 +v 0.5886 16.1286 14.7127 +v 0.5126 15.1828 11.9878 +v 0.8798 15.8662 14.2217 +v 0.6834 15.1168 11.9532 +v 0.8167 15.0353 11.9694 +v 0.9449 16.0193 14.7460 +v 1.1534 15.7498 14.2265 +v 1.4144 15.5547 14.2342 +v 1.2791 15.8776 14.7894 +v 0.9750 14.9579 12.1111 +v 1.6237 15.3103 14.2439 +v 1.5754 15.6657 14.8539 +v 1.1753 14.8699 12.3783 +v 1.7836 15.0411 14.2543 +v 1.8129 15.4004 14.9345 +v 1.8690 14.7263 14.2665 +v 1.9945 15.1082 15.0232 +v 1.8618 14.6345 14.2701 +v 2.1315 14.6185 15.0744 +v 2.1207 14.7662 15.1269 +v 2.1437 14.6481 15.1319 +# 184 vertices + +vn 0.0086 0.9632 0.2685 +vn -0.1578 0.9843 -0.0787 +vn -0.3602 0.9305 0.0666 +vn -0.3148 0.9474 -0.0578 +vn -0.2900 0.8691 -0.4006 +vn -0.4098 0.8313 -0.3755 +vn -0.3372 0.7701 -0.5415 +vn -0.5938 0.7989 -0.0959 +vn -0.4486 0.7084 -0.5449 +vn -0.5965 0.7696 -0.2279 +vn -0.4061 0.7028 -0.5841 +vn -0.3418 0.7501 -0.5661 +vn -0.6184 0.6355 -0.4622 +vn -0.5866 0.5266 -0.6152 +vn -0.6080 0.5437 -0.5785 +vn -0.7745 0.5822 -0.2472 +vn -0.7407 0.5879 -0.3253 +vn -0.6939 0.4160 -0.5878 +vn -0.7210 0.4857 -0.4942 +vn -0.6653 0.4143 -0.6210 +vn -0.8613 0.3752 -0.3425 +vn -0.8352 0.3691 -0.4077 +vn -0.7617 0.2723 -0.5879 +vn -0.7964 0.3129 -0.5175 +vn -0.7376 0.2684 -0.6196 +vn -0.8906 0.2379 -0.3876 +vn -0.8670 0.2243 -0.4449 +vn -0.7938 0.1690 -0.5842 +vn -0.8282 0.1943 -0.5257 +vn -0.7717 0.1610 -0.6153 +vn -0.9046 0.1155 -0.4102 +vn -0.8813 0.1032 -0.4612 +vn -0.8110 0.0776 -0.5798 +vn -0.8430 0.0934 -0.5298 +vn -0.7853 0.0806 -0.6138 +vn -0.9071 0.0449 -0.4185 +vn -0.8467 0.0100 -0.5320 +vn -0.9041 0.0359 -0.4258 +vn -0.8757 0.0181 -0.4826 +vn -0.8214 0.0069 -0.5704 +vn -0.7918 -0.0009 -0.6107 +vn -0.8441 -0.0166 -0.5359 +vn -0.8302 -0.0214 -0.5571 +vn -0.7927 -0.0209 -0.6092 +vn -0.7981 0.0424 -0.6011 +vn 0.3863 0.4522 0.8039 +vn 0.3864 0.4523 0.8038 +vn 0.3865 0.4523 0.8038 +vn 0.3863 0.4523 0.8038 +vn 0.3866 0.4523 0.8037 +vn 0.3865 0.4522 0.8038 +vn 0.3869 0.4522 0.8036 +vn -0.5479 0.8118 0.2020 +vn -0.3506 0.8999 0.2594 +vn -0.4028 0.8850 0.2335 +vn -0.6439 0.7411 0.1901 +vn -0.7955 0.5849 0.1585 +vn -0.8463 0.5205 0.1134 +vn -0.9496 0.2995 0.0930 +vn -0.9492 0.3020 0.0879 +vn -0.9838 0.1745 0.0421 +vn -0.9768 0.1951 0.0884 +vn -0.9703 0.2141 0.1129 +vn -0.9946 0.0421 -0.0944 +vn -0.9736 0.2123 0.0840 +vn -0.9594 0.2079 0.1904 +vn 0.3688 0.8573 0.3592 +vn 0.3835 0.8183 0.4281 +vn 0.4462 0.7737 0.4498 +vn 0.4599 0.8324 0.3093 +vn 0.6140 0.6142 0.4958 +vn 0.6344 0.6647 0.3946 +vn 0.2484 0.9683 0.0250 +vn 0.6889 0.5164 0.5087 +vn 0.7213 0.5443 0.4284 +vn 0.3817 0.9242 0.0148 +vn 0.7617 0.3893 0.5180 +vn 0.6156 0.7679 0.1769 +vn 0.7928 0.4027 0.4574 +vn 0.7345 0.6225 0.2702 +vn 0.8019 0.2932 0.5205 +vn 0.1020 0.9520 -0.2887 +vn 0.2913 0.9311 -0.2195 +vn 0.8295 0.3008 0.4706 +vn 0.7213 0.6859 0.0967 +vn 0.8261 0.2073 0.5241 +vn 0.8218 0.4505 0.3489 +vn 0.5608 0.8272 -0.0347 +vn 0.8394 0.4993 0.2148 +vn 0.3561 0.9005 -0.2494 +vn 0.5665 0.8178 -0.1016 +vn 0.7495 0.6603 0.0479 +vn 0.8549 0.2027 0.4775 +vn 0.8589 0.4881 0.1549 +vn 0.0261 0.9037 -0.4273 +vn 0.8608 0.3296 0.3877 +vn 0.8913 0.3605 0.2749 +vn 0.9093 0.3609 0.2070 +vn 0.8381 0.1415 0.5268 +vn 0.9402 0.2532 0.2278 +vn 0.9220 0.2389 0.3046 +vn 0.9596 0.1378 0.2453 +vn 0.8858 0.2243 0.4063 +vn 0.8418 0.1353 0.5226 +vn 0.9302 0.1468 0.3365 +vn 0.8748 0.1303 0.4667 +vn 0.8999 0.1346 0.4149 +vn 0.9600 0.1331 0.2464 +vn 0.9213 0.1029 0.3750 +vn 0.9404 0.1920 0.2808 +vn 0.9060 0.1053 0.4100 +vn 0.3866 0.4521 0.8038 +vn 0.3866 0.4522 0.8038 +vn 0.3864 0.4524 0.8038 +vn 0.3862 0.4525 0.8038 +vn 0.3859 0.4527 0.8038 +vn 0.7294 0.1604 0.6650 +vn 0.7214 0.1526 0.6755 +vn 0.7305 0.1628 0.6633 +vn 0.7264 0.2038 0.6564 +vn 0.7367 0.1537 0.6585 +vn 0.7277 0.1883 0.6596 +vn 0.7413 0.1401 0.6564 +vn 0.7160 0.2700 0.6438 +vn 0.7610 0.1027 0.6405 +vn 0.6901 0.3370 0.6405 +vn 0.6833 0.3752 0.6264 +vn 0.6312 0.4844 0.6058 +vn 0.6285 0.5097 0.5875 +vn 0.5899 0.5615 0.5803 +vn -0.6008 0.4626 -0.6520 +vn -0.5920 0.4836 -0.6447 +vn -0.5521 0.5175 -0.6537 +vn -0.6914 0.3233 -0.6461 +vn -0.6594 0.3834 -0.6467 +vn -0.4698 0.6203 -0.6281 +vn -0.7271 0.2485 -0.6400 +vn -0.7239 0.2383 -0.6474 +vn -0.6076 0.4791 -0.6335 +vn -0.7594 0.1569 -0.6315 +vn -0.5267 0.5775 -0.6238 +vn -0.7457 0.1807 -0.6413 +vn -0.6916 0.3466 -0.6337 +vn -0.7453 0.2231 -0.6283 +vn -0.5490 0.5189 -0.6553 +vn -0.7777 0.0701 -0.6247 +vn -0.3794 0.7167 -0.5851 +vn -0.7726 0.1375 -0.6198 +vn -0.3563 0.7038 -0.6146 +vn -0.7771 -0.0326 -0.6285 +vn -0.7686 -0.0890 -0.6335 +vn -0.7856 0.0577 -0.6160 +vn -0.7865 -0.0097 -0.6175 +vn -0.7874 -0.0032 -0.6165 +vn -0.7873 0.0104 -0.6165 +vn -0.0042 0.8789 -0.4770 +vn 0.0605 0.9030 -0.4254 +vn 0.2244 0.8974 -0.3798 +vn 0.3479 0.8700 -0.3493 +vn 0.1584 0.9119 -0.3787 +vn 0.3437 0.8739 -0.3437 +vn 0.4721 0.8468 -0.2449 +vn 0.6633 0.7412 -0.1035 +vn 0.7848 0.6194 -0.0195 +vn 0.4426 0.8645 -0.2382 +vn 0.6501 0.7498 -0.1229 +vn 0.8291 0.5574 0.0441 +vn 0.6489 0.7575 -0.0715 +vn 0.8478 0.5287 0.0422 +vn 0.9030 0.4080 0.1347 +vn 0.8295 0.5517 0.0869 +vn 0.9056 0.4122 0.0997 +vn 0.9461 0.2637 0.1881 +vn 0.9048 0.3871 0.1777 +vn 0.9818 0.0901 0.1669 +vn 0.9413 0.2546 0.2216 +vn 0.9901 -0.0091 0.1404 +vn 0.9682 0.1259 0.2160 +vn 0.9599 0.1694 0.2234 +vn 0.9641 0.1438 0.2231 +# 180 vertex normals + +vt 0.7012 0.9736 0.0000 +vt 0.5381 0.9908 0.0000 +vt 0.6963 0.9345 0.0000 +vt 0.5347 0.9493 0.0000 +vt 0.3679 0.9949 0.0000 +vt 0.3682 0.9553 0.0000 +vt 0.1953 0.9847 0.0000 +vt 0.6855 0.8769 0.0000 +vt 0.1978 0.9496 0.0000 +vt 0.5283 0.8898 0.0000 +vt 0.0214 0.9396 0.0000 +vt 0.0186 0.9649 0.0000 +vt 0.3669 0.8976 0.0000 +vt 0.0264 0.8939 0.0000 +vt 0.2004 0.8953 0.0000 +vt 0.6738 0.8193 0.0000 +vt 0.5205 0.8304 0.0000 +vt 0.2026 0.8416 0.0000 +vt 0.3652 0.8401 0.0000 +vt 0.0317 0.8484 0.0000 +vt 0.6582 0.7616 0.0000 +vt 0.5112 0.7706 0.0000 +vt 0.2040 0.7880 0.0000 +vt 0.3623 0.7823 0.0000 +vt 0.0369 0.8030 0.0000 +vt 0.6406 0.7043 0.0000 +vt 0.4995 0.7107 0.0000 +vt 0.2042 0.7349 0.0000 +vt 0.3584 0.7244 0.0000 +vt 0.0418 0.7584 0.0000 +vt 0.6211 0.6487 0.0000 +vt 0.4868 0.6511 0.0000 +vt 0.2035 0.6831 0.0000 +vt 0.3535 0.6670 0.0000 +vt 0.0461 0.7153 0.0000 +vt 0.6079 0.6140 0.0000 +vt 0.3469 0.6060 0.0000 +vt 0.5742 0.5845 0.0000 +vt 0.4651 0.5615 0.0000 +vt 0.2008 0.6284 0.0000 +vt 0.0496 0.6694 0.0000 +vt 0.3398 0.5493 0.0000 +vt 0.1982 0.5828 0.0000 +vt 0.0498 0.6616 0.0000 +vt 0.1124 0.6182 0.0000 +vt 0.9634 0.5278 0.0000 +vt 0.9634 0.9963 0.0000 +vt 0.9160 0.9838 0.0000 +vt 0.8667 0.9401 0.0000 +vt 0.8296 0.8665 0.0000 +vt 0.8159 0.7760 0.0000 +vt 0.8301 0.6814 0.0000 +vt 0.9077 0.5305 0.0000 +vt 0.8662 0.5349 0.0000 +vt 0.5693 0.4819 0.0000 +vt 0.4719 0.5239 0.0000 +vt 0.4990 0.4429 0.0000 +vt 0.5249 0.3599 0.0000 +vt 0.6699 0.4604 0.0000 +vt 0.5503 0.2749 0.0000 +vt 0.7817 0.4663 0.0000 +vt 0.5791 0.1904 0.0000 +vt 0.8022 0.1948 0.0000 +vt 0.6108 0.1079 0.0000 +vt 0.9316 0.3599 0.0000 +vt 0.6655 0.0322 0.0000 +vt 0.8906 0.4902 0.0000 +vt 0.9917 0.5161 0.0000 +vt 0.3853 0.4927 0.0000 +vt 0.3926 0.1255 0.0000 +vt 0.4133 0.4873 0.0000 +vt 0.3613 0.4922 0.0000 +vt 0.3472 0.1260 0.0000 +vt 0.4468 0.1260 0.0000 +vt 0.2976 0.1294 0.0000 +vt 0.3328 0.4727 0.0000 +vt 0.3901 0.0405 0.0000 +vt 0.2496 0.1367 0.0000 +vt 0.4475 0.0459 0.0000 +vt 0.2959 0.4351 0.0000 +vt 0.3340 0.0356 0.0000 +vt 0.2773 0.0317 0.0000 +vt 0.4436 0.4697 0.0000 +vt 0.2034 0.1455 0.0000 +vt 0.4773 0.0488 0.0000 +vt 0.2218 0.0288 0.0000 +vt 0.4700 0.1274 0.0000 +vt 0.1562 0.1587 0.0000 +vt 0.1434 0.1641 0.0000 +vt 0.1680 0.0278 0.0000 +vt 0.0925 0.0435 0.0000 +vt 0.0933 0.0332 0.0000 +vt 0.1107 0.0283 0.0000 +# 93 texture coords + +g 0584a8c1 +f 5700/6605/7600 5701/6606/7601 5702/6607/7602 +f 5701/6606/7601 5703/6608/7603 5702/6607/7602 +f 5701/6606/7601 5704/6609/7604 5703/6608/7603 +f 5704/6609/7604 5705/6610/7605 5703/6608/7603 +f 5705/6610/7605 5704/6609/7604 5706/6611/7606 +f 5707/6612/7607 5702/6607/7602 5703/6608/7603 +f 5708/6613/7608 5705/6610/7605 5706/6611/7606 +f 5709/6614/7609 5703/6608/7603 5705/6610/7605 +f 5709/6614/7609 5707/6612/7607 5703/6608/7603 +f 5710/6615/7610 5708/6613/7608 5706/6611/7606 +f 5711/6616/7611 5710/6615/7610 5706/6611/7606 +f 5712/6617/7612 5705/6610/7605 5708/6613/7608 +f 5712/6617/7612 5709/6614/7609 5705/6610/7605 +f 5710/6615/7610 5713/6618/7613 5708/6613/7608 +f 5714/6619/7614 5712/6617/7612 5708/6613/7608 +f 5713/6618/7613 5714/6619/7614 5708/6613/7608 +f 5707/6612/7607 5709/6614/7609 5715/6620/7615 +f 5709/6614/7609 5712/6617/7612 5716/6621/7616 +f 5709/6614/7609 5716/6621/7616 5715/6620/7615 +f 5712/6617/7612 5714/6619/7614 5717/6622/7617 +f 5712/6617/7612 5718/6623/7618 5716/6621/7616 +f 5718/6623/7618 5712/6617/7612 5717/6622/7617 +f 5714/6619/7614 5713/6618/7613 5719/6624/7619 +f 5717/6622/7617 5714/6619/7614 5719/6624/7619 +f 5715/6620/7615 5716/6621/7616 5720/6625/7620 +f 5716/6621/7616 5718/6623/7618 5721/6626/7621 +f 5716/6621/7616 5721/6626/7621 5720/6625/7620 +f 5718/6623/7618 5717/6622/7617 5722/6627/7622 +f 5718/6623/7618 5723/6628/7623 5721/6626/7621 +f 5723/6628/7623 5718/6623/7618 5722/6627/7622 +f 5717/6622/7617 5719/6624/7619 5724/6629/7624 +f 5722/6627/7622 5717/6622/7617 5724/6629/7624 +f 5720/6625/7620 5721/6626/7621 5725/6630/7625 +f 5721/6626/7621 5723/6628/7623 5726/6631/7626 +f 5721/6626/7621 5726/6631/7626 5725/6630/7625 +f 5723/6628/7623 5722/6627/7622 5727/6632/7627 +f 5723/6628/7623 5728/6633/7628 5726/6631/7626 +f 5728/6633/7628 5723/6628/7623 5727/6632/7627 +f 5722/6627/7622 5724/6629/7624 5729/6634/7629 +f 5727/6632/7627 5722/6627/7622 5729/6634/7629 +f 5725/6630/7625 5726/6631/7626 5730/6635/7630 +f 5726/6631/7626 5728/6633/7628 5731/6636/7631 +f 5726/6631/7626 5731/6636/7631 5730/6635/7630 +f 5728/6633/7628 5727/6632/7627 5732/6637/7632 +f 5728/6633/7628 5733/6638/7633 5731/6636/7631 +f 5733/6638/7633 5728/6633/7628 5732/6637/7632 +f 5727/6632/7627 5729/6634/7629 5734/6639/7634 +f 5732/6637/7632 5727/6632/7627 5734/6639/7634 +f 5735/6640/7635 5730/6635/7630 5731/6636/7631 +f 5731/6636/7631 5733/6638/7633 5736/6641/7636 +f 5735/6640/7635 5731/6636/7631 5737/6642/7637 +f 5731/6636/7631 5738/6643/7638 5737/6642/7637 +f 5738/6643/7638 5731/6636/7631 5736/6641/7636 +f 5733/6638/7633 5732/6637/7632 5739/6644/7639 +f 5736/6641/7636 5733/6638/7633 5739/6644/7639 +f 5732/6637/7632 5734/6639/7634 5740/6645/7640 +f 5739/6644/7639 5732/6637/7632 5740/6645/7640 +f 5738/6643/7638 5736/6641/7636 5741/6646/7641 +f 5736/6641/7636 5739/6644/7639 5742/6647/7642 +f 5741/6646/7641 5736/6641/7636 5742/6647/7642 +f 5739/6644/7639 5740/6645/7640 5743/6648/7643 +f 5744/6649/7644 5742/6647/7642 5739/6644/7639 +f 5744/6649/7644 5739/6644/7639 5743/6648/7643 +f 5745/6650/7645 5746/6651/7646 5747/6652/7647 +f 5745/6650/7645 5747/6652/7647 5748/6653/7647 +f 5745/6650/7645 5748/6653/7647 5749/6654/7648 +f 5745/6650/7645 5749/6654/7648 5750/6655/7647 +f 5745/6650/7645 5750/6655/7647 5751/6656/7649 +f 5752/6657/7650 5745/6650/7645 5751/6656/7649 +f 5752/6657/7650 5751/6656/7649 5753/6658/7651 +f 5754/6659/7652 5755/6660/7653 5756/6661/7654 +f 5756/6661/7654 5757/6662/7655 5754/6659/7652 +f 5757/6662/7655 5758/6663/7656 5754/6659/7652 +f 5758/6663/7656 5757/6662/7655 5759/6664/7657 +f 5760/6665/7658 5758/6663/7656 5759/6664/7657 +f 5761/6666/7659 5760/6665/7658 5759/6664/7657 +f 5761/6666/7659 5762/6667/7660 5760/6665/7658 +f 5761/6666/7659 5763/6668/7661 5762/6667/7660 +f 5760/6665/7658 5762/6667/7660 5764/6669/7662 +f 5763/6668/7661 5765/6670/7663 5762/6667/7660 +f 5766/6671/7664 5760/6665/7658 5764/6669/7662 +f 5764/6669/7662 5767/6672/7665 5766/6671/7664 +f 5768/6606/7666 5769/6605/7667 5770/6607/7668 +f 5771/6608/7669 5768/6606/7666 5770/6607/7668 +f 5770/6607/7668 5772/6612/7670 5771/6608/7669 +f 5772/6612/7670 5773/6614/7671 5771/6608/7669 +f 5774/6609/7672 5768/6606/7666 5771/6608/7669 +f 5773/6614/7671 5772/6612/7670 5775/6620/7673 +f 5776/6621/7674 5773/6614/7671 5775/6620/7673 +f 5771/6608/7669 5773/6614/7671 5777/6610/7675 +f 5777/6610/7675 5774/6609/7672 5771/6608/7669 +f 5776/6621/7674 5775/6620/7673 5778/6625/7676 +f 5779/6617/7677 5773/6614/7671 5776/6621/7674 +f 5773/6614/7671 5779/6617/7677 5777/6610/7675 +f 5780/6626/7678 5776/6621/7674 5778/6625/7676 +f 5781/6623/7679 5779/6617/7677 5776/6621/7674 +f 5781/6623/7679 5776/6621/7674 5780/6626/7678 +f 5780/6626/7678 5778/6625/7676 5782/6630/7680 +f 5774/6609/7672 5777/6610/7675 5783/6611/7681 +f 5777/6610/7675 5779/6617/7677 5784/6613/7682 +f 5777/6610/7675 5784/6613/7682 5783/6611/7681 +f 5785/6631/7683 5780/6626/7678 5782/6630/7680 +f 5781/6623/7679 5786/6622/7684 5779/6617/7677 +f 5785/6631/7683 5782/6630/7680 5787/6635/7685 +f 5788/6628/7686 5781/6623/7679 5780/6626/7678 +f 5788/6628/7686 5780/6626/7678 5785/6631/7683 +f 5779/6617/7677 5789/6619/7687 5784/6613/7682 +f 5786/6622/7684 5789/6619/7687 5779/6617/7677 +f 5790/6627/7688 5786/6622/7684 5781/6623/7679 +f 5788/6628/7686 5790/6627/7688 5781/6623/7679 +f 5783/6611/7681 5784/6613/7682 5791/6615/7689 +f 5784/6613/7682 5789/6619/7687 5792/6618/7690 +f 5791/6615/7689 5784/6613/7682 5792/6618/7690 +f 5786/6622/7684 5793/6624/7691 5789/6619/7687 +f 5793/6624/7691 5792/6618/7690 5789/6619/7687 +f 5794/6636/7692 5785/6631/7683 5787/6635/7685 +f 5790/6627/7688 5795/6629/7693 5786/6622/7684 +f 5795/6629/7693 5793/6624/7691 5786/6622/7684 +f 5796/6616/7694 5783/6611/7681 5791/6615/7689 +f 5797/6633/7695 5788/6628/7686 5785/6631/7683 +f 5797/6633/7695 5785/6631/7683 5794/6636/7692 +f 5798/6632/7696 5790/6627/7688 5788/6628/7686 +f 5797/6633/7695 5798/6632/7696 5788/6628/7686 +f 5799/6634/7697 5795/6629/7693 5790/6627/7688 +f 5798/6632/7696 5799/6634/7697 5790/6627/7688 +f 5794/6636/7692 5787/6635/7685 5800/6640/7698 +f 5801/6639/7699 5799/6634/7697 5798/6632/7696 +f 5802/6637/7700 5801/6639/7699 5798/6632/7696 +f 5802/6637/7700 5798/6632/7696 5797/6633/7695 +f 5801/6639/7699 5802/6637/7700 5803/6645/7701 +f 5804/6638/7702 5802/6637/7700 5797/6633/7695 +f 5804/6638/7702 5797/6633/7695 5794/6636/7692 +f 5794/6636/7692 5800/6640/7698 5805/6642/7703 +f 5802/6637/7700 5806/6644/7704 5803/6645/7701 +f 5806/6644/7704 5802/6637/7700 5804/6638/7702 +f 5805/6642/7703 5807/6643/7705 5794/6636/7692 +f 5808/6641/7706 5804/6638/7702 5794/6636/7692 +f 5807/6643/7705 5808/6641/7706 5794/6636/7692 +f 5808/6641/7706 5806/6644/7704 5804/6638/7702 +f 5809/6648/7707 5803/6645/7701 5806/6644/7704 +f 5810/6647/7708 5806/6644/7704 5808/6641/7706 +f 5809/6648/7707 5806/6644/7704 5811/6649/7709 +f 5806/6644/7704 5810/6647/7708 5811/6649/7709 +f 5812/6646/7710 5808/6641/7706 5807/6643/7705 +f 5812/6646/7710 5810/6647/7708 5808/6641/7706 +f 5813/6652/7646 5746/6651/7646 5745/6650/7711 +f 5814/6653/7646 5813/6652/7646 5745/6650/7711 +f 5815/6654/7712 5814/6653/7646 5745/6650/7711 +f 5816/6655/7713 5815/6654/7712 5745/6650/7711 +f 5817/6656/7714 5816/6655/7713 5745/6650/7711 +f 5817/6656/7714 5745/6650/7711 5818/6657/7711 +f 5817/6656/7714 5818/6657/7711 5819/6658/7715 +f 5820/6671/7716 5821/6672/7717 5822/6669/7718 +f 5820/6671/7716 5822/6669/7718 5823/6665/7719 +f 5822/6669/7718 5824/6667/7720 5823/6665/7719 +f 5823/6665/7719 5824/6667/7720 5825/6666/7721 +f 5824/6667/7720 5826/6668/7722 5825/6666/7721 +f 5825/6666/7721 5827/6664/7723 5823/6665/7719 +f 5824/6667/7720 5828/6670/7724 5826/6668/7722 +f 5829/6663/7725 5823/6665/7719 5827/6664/7723 +f 5830/6662/7726 5829/6663/7725 5827/6664/7723 +f 5831/6659/7727 5829/6663/7725 5830/6662/7726 +f 5832/6661/7728 5831/6659/7727 5830/6662/7726 +f 5832/6661/7728 5833/6660/7729 5831/6659/7727 +f 5834/6673/7730 5835/6674/7731 5836/6675/7732 +f 5835/6674/7731 5834/6673/7730 5837/6676/7733 +f 5838/6677/7734 5835/6674/7731 5837/6676/7733 +f 5835/6674/7731 5839/6678/7735 5836/6675/7732 +f 5837/6676/7733 5840/6679/7736 5838/6677/7734 +f 5837/6676/7733 5841/6680/7737 5840/6679/7736 +f 5835/6674/7731 5838/6677/7734 5842/6681/7738 +f 5841/6680/7737 5843/6682/7739 5840/6679/7736 +f 5839/6678/7735 5835/6674/7731 5844/6683/7740 +f 5835/6674/7731 5842/6681/7738 5844/6683/7740 +f 5843/6682/7739 5841/6680/7737 5845/6684/7741 +f 5846/6685/7742 5838/6677/7734 5840/6679/7736 +f 5838/6677/7734 5846/6685/7742 5842/6681/7738 +f 5847/6686/7743 5840/6679/7736 5843/6682/7739 +f 5847/6686/7743 5846/6685/7742 5840/6679/7736 +f 5848/6687/7744 5836/6675/7732 5839/6678/7735 +f 5849/6688/7745 5843/6682/7739 5845/6684/7741 +f 5844/6683/7740 5850/6689/7746 5839/6678/7735 +f 5851/6690/7747 5847/6686/7743 5843/6682/7739 +f 5851/6690/7747 5843/6682/7739 5849/6688/7745 +f 5852/6691/7748 5848/6687/7744 5839/6678/7735 +f 5850/6689/7746 5852/6691/7748 5839/6678/7735 +f 5853/6692/7749 5849/6688/7745 5845/6684/7741 +f 5854/6693/7750 5853/6692/7749 5845/6684/7741 +f 5855/6694/7751 5851/6690/7747 5849/6688/7745 +f 5855/6694/7751 5849/6688/7745 5853/6692/7749 +f 5853/6692/7749 5854/6693/7750 5856/6695/7752 +f 5857/6696/7753 5853/6692/7749 5856/6695/7752 +f 5857/6696/7753 5858/6697/7754 5853/6692/7749 +f 5858/6697/7754 5855/6694/7751 5853/6692/7749 +f 5859/6691/7755 5860/6689/7756 5861/6678/7757 +f 5859/6691/7755 5861/6678/7757 5862/6687/7758 +f 5860/6689/7756 5863/6683/7759 5861/6678/7757 +f 5861/6678/7757 5864/6675/7760 5862/6687/7758 +f 5864/6675/7760 5861/6678/7757 5865/6674/7761 +f 5865/6674/7761 5861/6678/7757 5863/6683/7759 +f 5866/6673/7762 5864/6675/7760 5865/6674/7761 +f 5866/6673/7762 5865/6674/7761 5867/6676/7763 +f 5868/6681/7764 5865/6674/7761 5863/6683/7759 +f 5865/6674/7761 5869/6677/7765 5867/6676/7763 +f 5869/6677/7765 5865/6674/7761 5868/6681/7764 +f 5869/6677/7765 5870/6679/7766 5867/6676/7763 +f 5871/6685/7767 5869/6677/7765 5868/6681/7764 +f 5870/6679/7766 5869/6677/7765 5871/6685/7767 +f 5867/6676/7763 5870/6679/7766 5872/6680/7768 +f 5870/6679/7766 5873/6682/7769 5872/6680/7768 +f 5874/6686/7770 5870/6679/7766 5871/6685/7767 +f 5873/6682/7769 5870/6679/7766 5874/6686/7770 +f 5872/6680/7768 5873/6682/7769 5875/6684/7771 +f 5873/6682/7769 5876/6688/7772 5875/6684/7771 +f 5877/6690/7773 5873/6682/7769 5874/6686/7770 +f 5876/6688/7772 5873/6682/7769 5877/6690/7773 +f 5875/6684/7771 5876/6688/7772 5878/6692/7774 +f 5879/6694/7775 5876/6688/7772 5877/6690/7773 +f 5878/6692/7774 5876/6688/7772 5879/6694/7775 +f 5875/6684/7771 5878/6692/7774 5880/6693/7776 +f 5881/6695/7777 5880/6693/7776 5878/6692/7774 +f 5882/6697/7778 5878/6692/7774 5879/6694/7775 +f 5878/6692/7774 5883/6696/7779 5881/6695/7777 +f 5878/6692/7774 5882/6697/7778 5883/6696/7779 +# 224 faces + +# +# object 2b949347_2 +# + +v -0.3488 1.7696 24.0279 +v -0.3494 2.0324 23.9665 +v -0.2773 2.0324 23.9666 +v 13.2663 7.7452 3.2321 +v 13.2648 8.4563 3.2049 +v 13.2320 7.7405 3.1039 +v 13.3586 8.4597 3.2988 +v 13.2304 8.4515 3.0767 +v 13.2663 7.7357 2.9758 +v 13.2648 8.4467 2.9486 +v 13.3602 7.7322 2.8821 +v 13.3602 7.7487 3.3260 +v 13.4868 8.4609 3.3333 +v 13.4884 7.7499 3.3605 +v 13.6150 8.4596 3.2991 +v 13.7089 8.4560 3.2054 +v 13.6166 7.7486 3.3263 +v 13.7105 7.7450 3.2326 +v 13.7433 8.4513 3.0773 +v 13.7448 7.7402 3.1045 +v 13.7089 8.4465 2.9491 +v 13.7105 7.7355 2.9763 +v 13.6151 8.4431 2.8552 +v 13.6166 7.7321 2.8824 +v 13.4869 8.4419 2.8207 +v 13.4884 7.7308 2.8479 +v 13.3586 8.4432 2.8549 +v -6.1535 8.8380 5.7604 +v -6.5659 9.3416 5.7406 +v -6.5817 9.3310 5.8178 +v -6.1693 8.8274 5.8376 +v -6.6247 9.2962 5.8754 +v -6.1692 8.8217 5.6841 +v -6.5817 9.3253 5.6643 +v -6.2123 8.7827 5.6293 +v -6.6247 9.2863 5.6095 +v -6.2711 8.7315 5.6106 +v -6.6835 9.2352 5.5908 +v -6.3299 8.6819 5.6330 +v -6.3729 8.6471 5.6905 +v -6.7423 9.1855 5.6133 +v -6.3887 8.6365 5.7678 +v -6.7854 9.1507 5.6708 +v -6.3729 8.6528 5.8440 +v -6.8011 9.1401 5.7480 +v -6.3299 8.6918 5.8989 +v -6.7854 9.1564 5.8243 +v -6.2123 8.7926 5.8952 +v -6.6835 9.2466 5.8978 +v -6.2711 8.7429 5.9176 +v -6.7423 9.1954 5.8791 +v -10.5569 7.6711 3.2653 +v -9.0321 8.5730 3.2325 +v -9.0808 8.6625 3.3260 +v -12.7889 7.7572 3.2018 +v -13.1392 7.7443 2.8513 +v -13.0109 7.7430 2.8171 +v -12.8827 7.7442 2.8516 +v -12.7889 7.7476 2.9455 +v -12.7545 7.7524 3.0737 +v -12.8828 7.7607 3.2955 +v -13.2330 7.7478 2.9450 +v -0.5472 3.9219 26.2306 +v -0.2885 3.7314 26.0396 +v -0.4018 3.6966 26.0071 +v -0.4486 3.6126 25.9292 +v -0.7606 3.7697 26.0774 +v -0.7451 2.4743 24.8101 +v -0.4335 2.4742 24.8104 +v -0.7445 2.1850 24.5645 +v -0.4328 2.1849 24.5648 +v -0.4326 2.0624 24.5118 +v -0.7442 2.0625 24.5114 +v 1.2319 3.3768 26.3768 +v 1.2318 3.4149 26.4152 +v 0.9205 3.2681 26.2568 +v 1.2471 2.1955 25.0722 +v 0.9354 2.1956 25.0719 +v 1.2476 1.9504 24.7856 +v 0.9360 1.9506 24.7853 +v 0.9361 1.8999 24.6656 +v 1.2477 1.8997 24.6659 +v 0.8734 3.3451 26.3415 +v 1.1920 3.4832 26.4837 +v 1.1137 3.5389 26.5396 +v 1.0178 3.5673 26.5679 +v 0.7600 3.3770 26.3762 +v 0.9198 3.5673 26.5678 +v 0.5755 3.5675 26.5674 +v 0.5760 3.3771 26.3760 +v 0.4365 3.3772 26.3759 +v 0.4360 3.5675 26.5672 +v 0.0358 3.3774 26.3754 +v 0.0354 3.5677 26.5668 +v -0.1037 3.3774 26.3752 +v -0.1042 3.5678 26.5666 +v -0.2878 3.3775 26.3750 +v -0.4485 3.5679 26.5662 +v -0.5464 3.5680 26.5661 +v -0.4010 3.3457 26.3400 +v -0.7598 3.4158 26.4128 +v -0.4478 3.2687 26.2552 +v -0.4329 2.1962 25.0703 +v -0.7445 2.1964 25.0699 +v -0.7597 3.3777 26.3745 +v -0.4323 1.9512 24.7837 +v -0.7440 1.9514 24.7833 +v -0.7439 1.9007 24.6636 +v -0.4322 1.9005 24.6640 +v 1.2311 3.7688 26.0797 +v 0.9197 3.6120 25.9308 +v 0.8726 3.6960 26.0085 +v 0.7592 3.7309 26.0408 +v 1.0170 3.9211 26.2324 +v -0.7202 3.4841 26.4815 +v -0.6422 3.5397 26.5375 +v 0.4400 4.4684 25.8487 +v 0.3833 4.4686 25.9854 +v 0.2463 4.4688 26.0420 +v 0.3833 4.4683 25.7119 +v 0.1094 4.4687 25.9851 +v 0.0527 4.4686 25.8483 +v 0.1094 4.4684 25.7116 +v 0.2463 4.4683 25.6550 +v 0.1090 4.6344 25.9852 +v 0.4396 4.6340 25.8488 +v 0.3829 4.6339 25.7120 +v 0.1090 4.6340 25.7117 +v 0.0523 4.6342 25.8484 +v 0.2460 4.6339 25.6551 +v 0.2460 4.6344 26.0421 +v 0.3829 4.6343 25.9855 +v 0.6878 0.4670 24.0694 +v 0.6881 0.3615 24.7079 +v -0.1777 0.4674 24.0684 +v -0.1774 0.3619 24.7069 +v 0.6877 0.5141 25.3365 +v -0.1778 0.5145 25.3355 +v 0.6869 0.9016 25.8593 +v -0.1786 0.9020 25.8583 +v 0.6857 1.4650 26.1971 +v -0.1798 1.4654 26.1961 +v 0.6842 2.1186 26.2982 +v -0.1813 2.1190 26.2972 +v 0.6828 2.7627 26.1474 +v -0.1827 2.7631 26.1464 +v 0.6816 3.2994 25.7675 +v -0.1839 3.2998 25.7665 +v 0.6809 3.6470 25.2165 +v -0.1846 3.6474 25.2155 +v 0.6806 3.7525 24.5780 +v -0.1849 3.7529 24.5770 +v 0.6809 3.5999 23.9494 +v -0.1846 3.6003 23.9484 +v 0.6818 3.2124 23.4266 +v -0.1837 3.2128 23.4256 +v 0.6830 2.6490 23.0888 +v -0.1825 2.6494 23.0878 +v 0.6845 1.9955 22.9876 +v -0.1810 1.9959 22.9866 +v 0.6859 1.3513 23.1385 +v -0.1796 1.3517 23.1375 +v 0.6870 0.8146 23.5184 +v -0.1785 0.8150 23.5174 +v -11.8305 0.5375 1.4203 +v -11.8301 0.3898 2.3141 +v -12.6426 0.5379 1.4193 +v -12.6422 0.3902 2.3131 +v -11.8306 0.6034 3.1940 +v -12.6427 0.6038 3.1930 +v -11.8318 1.1459 3.9261 +v -12.6438 1.1463 3.9252 +v -11.8335 1.9347 4.3990 +v -12.6456 1.9351 4.3980 +v -11.8355 2.8496 4.5406 +v -12.6476 2.8500 4.5396 +v -11.8375 3.7515 4.3294 +v -12.6496 3.7518 4.3284 +v -11.8391 4.5029 3.7975 +v -12.6512 4.5032 3.7966 +v -11.8402 4.9895 3.0260 +v -12.6523 4.9899 3.0250 +v -11.8406 5.1372 2.1322 +v -12.6526 5.1376 2.1312 +v -11.8401 4.9235 1.2523 +v -12.6522 4.9239 1.2513 +v -11.8389 4.3810 0.5202 +v -12.6510 4.3814 0.5192 +v -11.8372 3.5923 0.0473 +v -12.6493 3.5927 0.0463 +v -11.8352 2.6773 -0.0943 +v -12.6473 2.6777 -0.0953 +v -11.8332 1.7755 0.1169 +v -12.6453 1.7759 0.1159 +v -11.8316 1.0241 0.6488 +v -12.6436 1.0245 0.6478 +v 13.1516 0.5260 1.4494 +v 13.1519 0.3783 2.3431 +v 12.3395 0.5264 1.4484 +v 12.3398 0.3787 2.3422 +v 13.1515 0.5920 3.2231 +v 12.3394 0.5924 3.2221 +v 13.1503 1.1345 3.9552 +v 12.3382 1.1349 3.9542 +v 13.1486 1.9232 4.4280 +v 12.3365 1.9236 4.4271 +v 13.1466 2.8382 4.5696 +v 12.3345 2.8386 4.5687 +v 13.1446 3.7400 4.3584 +v 12.3325 3.7404 4.3575 +v 13.1429 4.4914 3.8266 +v 12.3308 4.4918 3.8256 +v 13.1418 4.9780 3.0550 +v 12.3298 4.9784 3.0541 +v 13.1415 5.1257 2.1613 +v 12.3294 5.1261 2.1603 +v 13.1420 4.9121 1.2814 +v 12.3299 4.9125 1.2804 +v 13.1431 4.3696 0.5492 +v 12.3311 4.3700 0.5483 +v 13.1449 3.5808 0.0764 +v 12.3328 3.5812 0.0754 +v 13.1469 2.6659 -0.0652 +v 12.3348 2.6663 -0.0662 +v 13.1488 1.7641 0.1460 +v 12.3368 1.7644 0.1450 +v 13.1505 1.0127 0.6778 +v 12.3384 1.0130 0.6769 +v 1.5216 5.6983 25.2239 +v 1.5202 6.3679 25.0190 +v 1.5181 7.3403 30.3285 +v 1.5194 6.7795 30.4934 +v 1.5221 5.4861 25.2920 +v 1.5197 6.6058 30.6703 +v 1.5227 5.2064 25.3840 +v 1.5229 5.1278 25.4207 +v 1.5230 5.0686 25.4828 +v 1.5231 5.0374 25.5624 +v 1.5231 5.0385 25.6471 +v 1.5202 6.4094 30.8477 +v 1.5204 6.3188 30.8896 +v 1.5206 6.2190 30.8822 +v 1.5208 6.1360 30.8279 +v 1.5209 6.0915 30.7406 +v 1.3257 5.6984 25.2236 +v 1.3243 6.3680 25.0188 +v 1.3262 5.4862 25.2918 +v 1.3268 5.2065 25.3837 +v 1.3270 5.1279 25.4204 +v 1.3271 5.0687 25.4826 +v 1.3272 5.0375 25.5621 +v 1.3272 5.0386 25.6468 +v 1.3250 6.0916 30.7404 +v 1.3249 6.1361 30.8277 +v 1.3247 6.2191 30.8820 +v 1.3245 6.3189 30.8894 +v 1.3243 6.4095 30.8474 +v 1.3238 6.6059 30.6700 +v 1.3235 6.7796 30.4932 +v 1.3222 7.3404 30.3283 +v -0.3501 2.3454 25.2555 +v -0.3495 2.0826 25.3169 +v -0.2774 2.0826 25.3170 +v -0.2779 2.3454 25.2556 +v -0.3506 2.5644 25.1006 +v -0.2784 2.5643 25.1007 +v -0.3509 2.7062 24.8757 +v -0.2787 2.7061 24.8758 +v -0.3510 2.7492 24.6152 +v -0.2788 2.7492 24.6153 +v -0.3508 2.6870 24.3588 +v -0.2787 2.6869 24.3589 +v -0.3505 2.5289 24.1454 +v -0.2784 2.5288 24.1455 +v -0.3500 2.2990 24.0077 +v -0.2779 2.2990 24.0077 +v -0.2768 1.8159 25.2759 +v -0.3489 1.8160 25.2758 +v -0.2763 1.5861 25.1382 +v -0.3484 1.5861 25.1381 +v -0.2759 1.4280 24.9248 +v -0.3481 1.4280 24.9247 +v -0.2758 1.3657 24.6683 +v -0.3479 1.3658 24.6682 +v -0.3483 1.5506 24.1828 +v -0.3480 1.4088 24.4078 +v -13.2745 2.2661 2.1068 +v -13.1134 2.2909 2.1061 +v -13.1132 2.3763 4.4022 +v -13.2742 2.3515 4.4029 +v 13.6148 2.2786 2.1372 +v 13.7760 2.2537 2.1383 +v 13.7754 2.3391 4.4344 +v 13.6142 2.3641 4.4333 +v -13.5938 5.4291 4.6589 +v -13.5934 5.1755 5.2034 +v -13.4304 5.1756 5.2036 +v -13.4309 5.4292 4.6592 +v 13.9186 5.4167 4.6910 +v 13.9193 5.1631 5.2355 +v 14.0822 5.1628 5.2356 +v 14.0815 5.4164 4.6912 +v -13.3424 3.9655 5.2501 +v -13.5034 3.9407 5.2508 +v 13.9977 3.9281 5.2828 +v 13.8365 3.9531 5.2817 +v 13.8166 3.5927 -0.3994 +v 13.9778 3.5678 -0.3983 +v -13.3211 3.6052 -0.4310 +v -13.4822 3.5804 -0.4303 +v -13.5948 6.0854 4.6338 +v -13.4319 6.0855 4.6340 +v -13.5959 6.8511 4.6045 +v -13.4330 6.8513 4.6047 +v -13.5962 6.7697 2.4152 +v -13.4332 6.7699 2.4154 +v -13.4321 6.0042 2.4448 +v -13.5950 6.0040 2.4445 +v 14.0796 6.0727 4.6660 +v 13.9167 6.0730 4.6659 +v 14.0774 6.8384 4.6367 +v 13.9144 6.8387 4.6365 +v 14.0779 6.7570 2.4474 +v 14.0801 5.9913 2.4767 +v 13.9172 5.9916 2.4766 +v 13.9149 6.7573 2.4473 +v -13.5944 5.4924 1.9428 +v -13.5941 5.2473 1.2436 +v -13.5937 4.8387 0.5641 +v -13.5858 4.3016 0.0233 +v 14.0817 5.4797 1.9750 +v 14.0825 5.2347 1.2759 +v 14.0838 4.8260 0.5964 +v 14.0782 4.2889 0.0555 +v -13.4315 5.4926 1.9430 +v -13.4312 5.2475 1.2439 +v -13.4307 4.8388 0.5644 +v -13.4247 4.3264 0.0225 +v 13.9170 4.3139 0.0544 +v 13.9208 4.8263 0.5962 +v 13.9196 5.2350 1.2757 +v 13.9188 5.4800 1.9748 +v 11.9348 2.3721 1.4396 +v 11.9340 2.7194 1.3583 +v 12.0943 2.7193 1.3585 +v 12.0950 2.3720 1.4398 +v 11.9354 2.0827 1.6445 +v 12.0957 2.0827 1.6447 +v 11.9358 1.8953 1.9416 +v 12.0961 1.8953 1.9418 +v 11.9359 1.8384 2.2858 +v 12.0962 1.8384 2.2860 +v 11.9358 1.9207 2.6247 +v 12.0961 1.9207 2.6249 +v 11.9353 2.1297 2.9066 +v 12.0956 2.1296 2.9068 +v 11.9347 2.4334 3.0888 +v 12.0949 2.4334 3.0889 +v 11.9339 2.7858 3.1433 +v 12.0942 2.7857 3.1435 +v 11.9331 3.1331 3.0619 +v 12.0934 3.1330 3.0621 +v 11.9325 3.4225 2.8571 +v 12.0928 3.4224 2.8573 +v 11.9321 3.6099 2.5600 +v 12.0923 3.6098 2.5602 +v 11.9319 3.6667 2.2158 +v 12.0922 3.6667 2.2160 +v 11.9321 3.5845 1.8769 +v 12.0924 3.5844 1.8771 +v 11.9326 3.3755 1.5950 +v 12.0928 3.3755 1.5951 +v 11.9332 3.0718 1.4128 +v 12.0935 3.0717 1.4130 +v -11.4339 2.4441 3.0615 +v -11.4347 2.7965 3.1161 +v -11.5950 2.7966 3.1159 +v -11.5942 2.4442 3.0614 +v -11.4333 2.1404 2.8794 +v -11.5935 2.1404 2.8792 +v -11.4328 1.9314 2.5975 +v -11.5931 1.9315 2.5973 +v -11.4326 1.8492 2.2586 +v -11.5929 1.8492 2.2584 +v -11.4328 1.9061 1.9144 +v -11.5931 1.9061 1.9142 +v -11.4332 2.0934 1.6173 +v -11.5935 2.0935 1.6171 +v -11.4338 2.3828 1.4124 +v -11.5941 2.3829 1.4123 +v -11.4346 2.7301 1.3311 +v -11.5949 2.7302 1.3309 +v -11.4354 3.0825 1.3856 +v -11.5956 3.0825 1.3854 +v -11.4360 3.3862 1.5678 +v -11.5963 3.3863 1.5676 +v -11.4365 3.5952 1.8497 +v -11.5968 3.5953 1.8495 +v -11.4367 3.6775 2.1886 +v -11.5969 3.6775 2.1884 +v -11.4365 3.6206 2.5328 +v -11.5968 3.6207 2.5326 +v -11.4361 3.4332 2.8299 +v -11.5964 3.4332 2.8297 +v -11.4355 3.1438 3.0347 +v -11.5957 3.1439 3.0346 +v 0.8532 1.8154 25.2772 +v 0.8526 2.0820 25.3183 +v 0.7805 2.0821 25.3183 +v 0.7811 1.8155 25.2771 +v 0.8537 1.5856 25.1395 +v 0.7816 1.5856 25.1394 +v 0.8540 1.4275 24.9261 +v 0.7819 1.4275 24.9260 +v 0.8542 1.3652 24.6696 +v 0.7820 1.3652 24.6696 +v 0.8541 1.4083 24.4092 +v 0.7819 1.4083 24.4091 +v 0.8537 1.5501 24.1842 +v 0.7816 1.5501 24.1842 +v 0.8533 1.7690 24.0293 +v 0.7811 1.7691 24.0293 +v 0.8527 2.0318 23.9679 +v 0.7806 2.0319 23.9679 +v 0.8521 2.2985 24.0091 +v 0.7800 2.2985 24.0090 +v 0.8516 2.5283 24.1468 +v 0.7795 2.5283 24.1467 +v 0.8513 2.6864 24.3602 +v 0.7791 2.6864 24.3601 +v 0.8511 2.7487 24.6166 +v 0.7790 2.7487 24.6166 +v 0.7799 2.3449 25.2569 +v 0.8520 2.3449 25.2569 +v 0.7794 2.5639 25.1020 +v 0.8515 2.5638 25.1020 +v 0.7791 2.7057 24.8770 +v 0.8512 2.7056 24.8771 +v 5.4440 7.0410 2.4534 +v 5.2635 6.7820 2.4736 +v 5.1380 8.9660 2.3898 +v 5.3338 8.9794 2.3790 +v -4.9635 7.0458 2.4413 +v -4.8618 8.9841 2.3671 +v -4.6484 8.9706 2.3679 +v -4.7643 6.7867 2.4514 +v -4.6490 9.2902 10.9648 +v -4.8623 9.2957 10.7505 +v -5.0649 5.7548 10.3511 +v -4.8626 5.5562 10.5194 +v -5.1277 4.6272 9.4317 +v -4.9285 4.3681 9.4419 +v 5.3332 9.2910 10.7623 +v 5.1375 9.2856 10.9867 +v 5.5514 5.7499 10.3635 +v 5.3674 5.5514 10.5418 +v 5.6190 4.6223 9.4442 +v 5.4385 4.3633 9.4645 +v -4.8622 9.2401 9.2553 +v -5.0078 6.4785 7.7701 +v -4.8621 9.1811 7.6668 +v 5.3333 9.2354 9.2672 +v 5.4910 6.4737 7.7824 +v 5.3334 9.1764 7.6787 +v 5.3139 6.1601 7.8047 +v -4.8118 6.1648 7.7824 +v -4.6489 9.2267 9.2561 +v -4.6488 9.1676 7.6675 +v 5.1376 9.2221 9.2780 +v 5.1377 9.1630 7.6894 +v 7.2134 9.2091 3.2274 +v 7.1544 9.2603 3.2459 +v 6.7442 8.7571 3.2647 +v 6.8032 8.7059 3.2462 +v 7.2566 9.1701 3.1726 +v 6.8464 8.6669 3.1914 +v 7.2725 9.1537 3.0964 +v 6.8622 8.6505 3.1153 +v 7.2566 9.1644 3.0191 +v 6.8464 8.6612 3.0380 +v 7.2135 9.1992 2.9615 +v 6.8032 8.6960 2.9803 +v 7.1544 9.2489 2.9390 +v 6.7442 8.7457 2.9578 +v 6.6852 8.8068 3.2422 +v 7.0954 9.3100 3.2234 +v 6.6420 8.8416 3.1845 +v 7.0522 9.3449 3.1657 +v 6.6262 8.8523 3.1073 +v 7.0364 9.3555 3.0884 +v 6.6420 8.8359 3.0310 +v 7.0522 9.3391 3.0122 +v 6.6852 8.7969 2.9763 +v 7.0954 9.3001 2.9575 +v 6.3542 8.4512 3.3081 +v 6.4366 8.3819 3.3396 +v 6.7442 8.7593 3.3255 +v 6.6618 8.8287 3.2940 +v 6.2939 8.4999 3.2277 +v 6.6015 8.8773 3.2136 +v 6.2718 8.5147 3.1198 +v 6.5794 8.8922 3.1057 +v 6.2939 8.4919 3.0134 +v 6.6015 8.8694 2.9993 +v 6.3542 8.4374 2.9370 +v 6.6618 8.8149 2.9229 +v 6.4366 8.3659 2.9111 +v 6.7442 8.7434 2.8970 +v 6.8266 8.6879 3.2996 +v 6.5190 8.3104 3.3137 +v 6.8869 8.6334 3.2232 +v 6.5793 8.2559 3.2373 +v 6.9090 8.6105 3.1168 +v 6.6014 8.2330 3.1309 +v 6.8869 8.6254 3.0089 +v 6.5793 8.2479 3.0231 +v 6.8266 8.6740 2.9285 +v 6.5190 8.2966 2.9426 +v 5.2595 7.0359 3.2861 +v 5.3086 6.9945 3.3049 +v 6.4366 8.3787 3.2532 +v 6.3874 8.4200 3.2344 +v 5.2235 7.0649 3.2381 +v 6.3515 8.4490 3.1864 +v 5.2104 7.0738 3.1738 +v 6.3383 8.4579 3.1220 +v 5.2235 7.0602 3.1103 +v 6.3515 8.4443 3.0586 +v 5.2595 7.0277 3.0648 +v 6.3875 8.4118 3.0130 +v 5.3087 6.9850 3.0493 +v 6.4366 8.3692 2.9976 +v 6.4857 8.3360 3.2377 +v 5.3578 6.9519 3.2894 +v 6.5217 8.3035 3.1921 +v 5.3938 6.9194 3.2439 +v 6.5349 8.2899 3.1287 +v 5.4069 6.9058 3.1804 +v 6.5217 8.2988 3.0644 +v 5.3938 6.9147 3.1161 +v 6.4857 8.3278 3.0164 +v 5.3578 6.9437 3.0681 +v 13.5859 7.7466 3.2731 +v 13.4884 7.7476 3.2991 +v 13.4995 2.6884 3.4929 +v 13.5970 2.6874 3.4669 +v 13.6573 7.7439 3.2019 +v 13.6684 2.6847 3.3957 +v 13.6834 7.7403 3.1045 +v 13.6945 2.6811 3.2983 +v 13.6573 7.7367 3.0070 +v 13.6684 2.6775 3.2008 +v 13.5859 7.7340 2.9356 +v 13.5970 2.6749 3.1294 +v 13.4884 7.7331 2.9093 +v 13.4995 2.6740 3.1031 +v 13.4020 2.6875 3.4667 +v 13.3909 7.7467 3.2729 +v 13.3306 2.6849 3.3953 +v 13.3195 7.7441 3.2015 +v 13.3045 2.6813 3.2978 +v 13.2934 7.7405 3.1040 +v 13.3306 2.6777 3.2004 +v 13.3195 7.7368 3.0066 +v 13.4020 2.6750 3.1291 +v 13.3909 7.7341 2.9353 +v 9.5542 8.6540 3.3477 +v 9.5059 8.5645 3.2541 +v 11.0347 7.6612 3.2904 +v 11.0830 7.7507 3.3841 +v 9.6201 8.7726 3.3787 +v 11.1489 7.8694 3.4151 +v 9.6861 8.8887 3.3389 +v 11.2149 7.9854 3.3752 +v 9.7343 8.9710 3.2388 +v 11.2631 8.0677 3.2751 +v 9.7520 8.9975 3.1053 +v 11.2808 8.0943 3.1416 +v 9.7344 8.9611 2.9741 +v 11.2631 8.0579 3.0105 +v 9.6861 8.8716 2.8805 +v 11.2149 7.9684 2.9169 +v 9.6202 8.7530 2.8495 +v 11.1489 7.8497 2.8858 +v 9.5542 8.6369 2.8894 +v 11.0830 7.7337 2.9257 +v 9.5060 8.5546 2.9894 +v 11.0348 7.6514 3.0258 +v 11.0171 7.6249 3.1593 +v 9.4883 8.5281 3.1230 +v 11.4738 7.4613 3.4865 +v 11.5658 7.6269 3.5298 +v 11.1489 7.8733 3.5199 +v 11.0569 7.7076 3.4766 +v 11.4064 7.3363 3.3558 +v 10.9895 7.5827 3.3459 +v 11.3818 7.2856 3.1727 +v 10.9648 7.5319 3.1628 +v 11.4065 7.3226 2.9864 +v 10.9895 7.5689 2.9764 +v 11.4738 7.4375 2.8466 +v 11.0569 7.6838 2.8367 +v 11.5659 7.5995 2.7910 +v 11.1489 7.8458 2.7810 +v 11.2409 8.0353 3.4642 +v 11.6579 7.7889 3.4741 +v 11.3083 8.1502 3.3245 +v 11.7253 7.9038 3.3344 +v 11.3330 8.1872 3.1381 +v 11.7500 7.9408 3.1480 +v 11.3084 8.1364 2.9551 +v 11.7253 7.8901 2.9650 +v 11.2410 8.0115 2.8244 +v 11.6579 7.7651 2.8343 +v 13.3805 6.4549 3.3406 +v 13.4189 6.5241 3.3587 +v 11.5659 7.6189 3.3146 +v 11.5274 7.5498 3.2965 +v 13.3524 6.4027 3.2860 +v 11.4993 7.4976 3.2419 +v 13.3421 6.3816 3.2096 +v 11.4890 7.4764 3.1655 +v 13.3524 6.3970 3.1318 +v 11.4993 7.4919 3.0877 +v 13.3805 6.4450 3.0734 +v 11.5275 7.5398 3.0294 +v 13.4189 6.5126 3.0502 +v 11.5659 7.6075 3.0061 +v 11.6043 7.6866 3.2914 +v 13.4573 6.5917 3.3354 +v 11.6324 7.7345 3.2330 +v 13.4855 6.6397 3.2771 +v 11.6427 7.7500 3.1552 +v 13.4958 6.6551 3.1993 +v 11.6324 7.7288 3.0788 +v 13.4855 6.6339 3.1228 +v 11.6043 7.6766 3.0242 +v 13.4574 6.5818 3.0683 +v -6.2711 8.7452 5.9784 +v -5.9618 8.3674 5.9932 +v -5.8797 8.4367 5.9619 +v -6.1890 8.8145 5.9470 +v -5.8197 8.4853 5.8815 +v -6.1289 8.8631 5.8667 +v -5.7977 8.5002 5.7737 +v -6.1069 8.8779 5.7589 +v -5.8196 8.4773 5.6673 +v -6.1289 8.8551 5.6524 +v -5.8797 8.4229 5.5908 +v -6.1890 8.8007 5.5759 +v -5.9618 8.3515 5.5646 +v -6.2711 8.7293 5.5498 +v -6.3532 8.6738 5.9522 +v -6.0439 8.2960 5.9671 +v -6.4133 8.6194 5.8757 +v -6.1040 8.2416 5.8906 +v -6.4353 8.5965 5.7693 +v -6.1260 8.2188 5.7841 +v -6.4133 8.6114 5.6614 +v -6.1040 8.2337 5.6763 +v -6.3532 8.6600 5.5811 +v -6.0439 8.2822 5.5960 +v -5.9618 8.3642 5.9067 +v -4.8278 6.9791 5.9611 +v -4.7789 7.0204 5.9424 +v -5.9129 8.4056 5.8880 +v -4.7430 7.0494 5.8945 +v -5.8770 8.4345 5.8401 +v -4.7299 7.0583 5.8302 +v -5.8639 8.4434 5.7758 +v -4.7430 7.0446 5.7667 +v -5.8770 8.4298 5.7123 +v -4.7788 7.0122 5.7211 +v -5.9129 8.3973 5.6667 +v -4.8278 6.9696 5.7055 +v -5.9618 8.3547 5.6511 +v -6.0108 8.3216 5.8911 +v -4.8768 6.9365 5.9455 +v -6.0466 8.2892 5.8455 +v -4.9126 6.9040 5.8998 +v -6.0597 8.2755 5.7820 +v -4.9257 6.8904 5.8364 +v -6.0466 8.2844 5.7177 +v -4.9126 6.8993 5.7721 +v -6.0108 8.3134 5.6698 +v -4.8768 6.9283 5.7242 +v -12.9999 2.7006 3.4621 +v -13.0110 7.7598 3.2683 +v -13.1085 7.7588 3.2421 +v -13.0974 2.6997 3.4359 +v -13.1798 7.7562 3.1707 +v -13.1688 2.6970 3.3644 +v -13.2060 7.7526 3.0732 +v -13.1949 2.6934 3.2670 +v -13.1798 7.7490 2.9757 +v -13.1687 2.6898 3.1696 +v -13.1084 7.7463 2.9045 +v -13.0974 2.6871 3.0983 +v -13.0109 7.7453 2.8785 +v -12.9998 2.6861 3.0723 +v -12.9024 2.6996 3.4361 +v -12.9135 7.7587 3.2423 +v -12.8310 2.6969 3.3648 +v -12.8421 7.7561 3.1710 +v -12.8049 2.6933 3.2674 +v -12.8160 7.7524 3.0736 +v -12.8310 2.6896 3.1699 +v -12.8421 7.7488 2.9761 +v -12.9023 2.6870 3.0985 +v -12.9134 7.7462 2.9047 +v -10.6056 7.7607 3.3588 +v -9.1472 8.7812 3.3569 +v -10.6720 7.8794 3.3897 +v -9.2137 8.8973 3.3169 +v -10.7385 7.9955 3.3497 +v -9.2623 8.9797 3.2167 +v -10.7871 8.0778 3.2495 +v -9.2801 9.0062 3.0831 +v -10.8049 8.1044 3.1159 +v -9.2623 8.9699 2.9520 +v -10.7871 8.0680 2.9848 +v -9.2136 8.8803 2.8585 +v -10.7384 7.9784 2.8913 +v -9.1472 8.7616 2.8276 +v -10.6720 7.8597 2.8604 +v -9.0807 8.6455 2.8677 +v -10.6055 7.7436 2.9005 +v -9.0321 8.5631 2.9679 +v -10.5569 7.6613 3.0007 +v -10.5391 7.6347 3.1342 +v -9.0143 8.5366 3.1014 +v -10.6720 7.8833 3.4945 +v -11.0879 7.6373 3.5034 +v -10.9951 7.4716 3.4603 +v -10.5793 7.7176 3.4514 +v -10.9272 7.3466 3.3298 +v -10.5114 7.5925 3.3208 +v -10.9024 7.2958 3.1468 +v -10.4865 7.5417 3.1378 +v -10.9272 7.3328 2.9604 +v -10.5113 7.5788 2.9514 +v -10.9951 7.4478 2.8205 +v -10.5792 7.6937 2.8115 +v -11.0878 7.6098 2.7646 +v -10.6720 7.8558 2.7556 +v -10.7648 8.0453 3.4386 +v -11.1807 7.7994 3.4475 +v -10.8327 8.1603 3.2987 +v -11.2486 7.9144 3.3077 +v -10.8575 8.1973 3.1123 +v -11.2734 7.9514 3.1212 +v -10.8327 8.1466 2.9293 +v -11.2485 7.9006 2.9382 +v -10.7647 8.0216 2.7988 +v -11.1806 7.7756 2.8077 +v -11.0879 7.6293 3.2882 +v -12.9361 6.5362 3.3280 +v -12.8974 6.4670 3.3100 +v -11.0492 7.5601 3.2702 +v -12.8691 6.4148 3.2555 +v -11.0208 7.5079 3.2157 +v -12.8587 6.3936 3.1791 +v -11.0104 7.4867 3.1393 +v -12.8690 6.4090 3.1013 +v -11.0208 7.5022 3.0615 +v -12.8974 6.4570 3.0429 +v -11.0491 7.5502 3.0031 +v -12.9361 6.5247 3.0195 +v -11.0879 7.6178 2.9798 +v -11.1266 7.6970 3.2649 +v -12.9749 6.6038 3.3047 +v -11.1550 7.7450 3.2065 +v -13.0032 6.6518 3.2463 +v -11.1653 7.7605 3.1287 +v -13.0136 6.6673 3.1684 +v -11.1549 7.7392 3.0523 +v -13.0032 6.6461 3.0920 +v -11.1266 7.6871 2.9978 +v -12.9748 6.5939 3.0375 +v -13.0110 7.7620 3.3297 +v -13.0125 8.4731 3.3024 +v -13.1408 8.4718 3.2680 +v -13.1392 7.7608 3.2952 +v -13.2346 8.4684 3.1740 +v -13.2330 7.7574 3.2013 +v -13.2689 8.4636 3.0459 +v -13.2674 7.7526 3.0731 +v -13.2346 8.4589 2.9177 +v -13.1407 8.4553 2.8240 +v -13.0125 8.4540 2.7899 +v -12.8843 8.4717 3.2683 +v -12.7905 8.4682 3.1746 +v -12.7561 8.4634 3.0465 +v -12.7904 8.4587 2.9183 +v -12.8843 8.4552 2.8243 +v -1.0379 7.3415 30.3255 +v -1.0359 6.3690 25.0160 +v -1.0344 5.6995 25.2209 +v -1.0367 6.7807 30.4905 +v -1.0339 5.4873 25.2890 +v -1.0363 6.6069 30.6673 +v -1.0333 5.2076 25.3810 +v -1.0331 5.1290 25.4177 +v -1.0330 5.0698 25.4799 +v -1.0329 5.0386 25.5594 +v -1.0329 5.0396 25.6441 +v -1.0359 6.4106 30.8447 +v -1.0357 6.3200 30.8867 +v -1.0354 6.2202 30.8793 +v -1.0353 6.1372 30.8249 +v -1.0352 6.0927 30.7376 +v -0.8400 6.3690 25.0162 +v -0.8385 5.6994 25.2211 +v -0.8380 5.4872 25.2893 +v -0.8374 5.2075 25.3812 +v -0.8373 5.1289 25.4179 +v -0.8371 5.0697 25.4801 +v -0.8371 5.0385 25.5596 +v -0.8371 5.0396 25.6443 +v -0.8393 6.0926 30.7379 +v -0.8394 6.1371 30.8252 +v -0.8395 6.2201 30.8795 +v -0.8398 6.3199 30.8869 +v -0.8400 6.4105 30.8449 +v -0.8404 6.6068 30.6675 +v -0.8408 6.7806 30.4907 +v -0.8420 7.3414 30.3257 +v 0.5748 3.9213 26.2319 +v 0.9191 3.9212 26.2323 +v 1.2477 1.9212 24.5865 +v 0.9360 1.9213 24.5861 +v -0.4323 1.9220 24.5845 +v -0.7439 1.9221 24.5842 +v -0.7440 1.9802 24.5298 +v -0.4324 1.9801 24.5302 +v 0.9359 1.9794 24.5318 +v 0.9357 2.0617 24.5134 +v 1.2474 2.0616 24.5137 +v 1.2476 1.9793 24.5321 +v -0.7210 3.8380 26.1460 +v -0.7605 3.7316 26.0390 +v 1.1912 3.8371 26.1483 +v 1.2311 3.7307 26.0413 +v 1.2465 2.4734 24.8124 +v 1.2471 2.1841 24.5668 +v 0.9355 2.1843 24.5664 +v 0.9348 2.4736 24.8120 +v -0.6430 3.8936 26.2021 +v 0.5752 3.7310 26.0406 +v 0.4357 3.7310 26.0404 +v 0.0350 3.7312 26.0399 +v -0.1045 3.7313 26.0398 +v 0.4334 4.3223 26.6493 +v 0.0327 4.3225 26.6488 +v 0.0335 3.9519 26.9665 +v 0.4342 3.9517 26.9670 +v 0.0331 4.4921 26.8224 +v 0.0338 4.4431 26.7650 +v -0.1116 4.4428 26.7638 +v -0.1128 4.4919 26.8211 +v 0.0325 4.5130 26.8946 +v -0.1139 4.5127 26.8934 +v 0.0320 4.5019 26.9687 +v -0.1148 4.5016 26.9674 +v 0.0317 4.4608 27.0321 +v -0.1152 4.4605 27.0309 +v 0.5798 4.4440 26.7698 +v 0.4345 4.4438 26.7685 +v 0.4338 4.4929 26.8258 +v 0.5798 4.4931 26.8271 +v 0.4332 4.5137 26.8981 +v 0.5797 4.5139 26.8994 +v 0.4327 4.5026 26.9722 +v 0.5795 4.5028 26.9734 +v 0.4324 4.4615 27.0356 +v 0.5793 4.4618 27.0369 +v 0.5791 4.4044 27.0944 +v 0.4322 4.4041 27.0931 +v 0.5790 4.3364 27.1411 +v 0.4322 4.3361 27.1398 +v 0.5788 4.2557 27.1613 +v 0.4324 4.2555 27.1600 +v 0.5788 4.1732 27.1519 +v 0.4328 4.1729 27.1507 +v 0.5788 4.0996 27.1144 +v 0.4334 4.0993 27.1131 +v 0.5782 3.9516 26.9671 +v -0.1104 3.9519 26.9663 +v 0.0327 4.0986 27.1097 +v -0.1126 4.0983 27.1084 +v 0.0321 4.1722 27.1472 +v -0.1138 4.1719 27.1459 +v 0.0317 4.2548 27.1566 +v -0.1148 4.2545 27.1553 +v 0.0315 4.3354 27.1364 +v -0.1153 4.3351 27.1351 +v 0.0315 4.4034 27.0897 +v -0.1154 4.4031 27.0884 +v 0.5773 4.3222 26.6494 +v -0.1049 3.9217 26.2311 +v -0.1113 4.3226 26.6486 +v 0.4353 3.9214 26.2318 +v 0.0346 3.9216 26.2313 +v 1.1129 3.8928 26.2041 +v -0.4492 3.9218 26.2307 +v 0.6323 4.2317 26.8425 +v -0.1759 4.2321 26.8416 +v -0.1762 4.3409 26.8421 +v 0.6320 4.3406 26.8430 +v -0.1763 4.3946 26.9343 +v 0.6319 4.3943 26.9352 +v -0.1762 4.3395 27.0261 +v 0.6320 4.3392 27.0270 +v -0.1759 4.2307 27.0256 +v 0.6323 4.2304 27.0265 +v -0.1758 4.1770 26.9334 +v 0.6324 4.1767 26.9343 +v 0.1596 4.0251 26.9149 +v 0.2298 4.0110 26.8974 +v 0.3000 4.0250 26.9151 +v 0.1081 4.0634 26.9634 +v 0.3513 4.0633 26.9637 +v 0.0892 4.1158 27.0298 +v 0.3700 4.1157 27.0301 +v 0.1079 4.1682 27.0960 +v 0.3511 4.1681 27.0963 +v 0.2996 4.2065 27.1448 +v 0.1592 4.2066 27.1446 +v 0.2294 4.2206 27.1626 +v 0.0666 6.8378 24.8160 +v 0.0404 6.8988 24.8930 +v 0.0664 6.9596 24.9701 +v 0.1377 7.0042 25.0268 +v 0.2351 7.0205 25.0474 +v 0.3327 7.0041 25.0270 +v 0.4041 6.9595 24.9705 +v 0.4304 6.8986 24.8935 +v 0.4044 6.8377 24.8163 +v 0.3331 6.7931 24.7597 +v 0.2357 6.7769 24.7391 +v 0.1381 6.7932 24.7595 +v 0.1387 4.8086 26.7246 +v 0.2361 4.8248 26.7452 +v 0.3337 4.8085 26.7248 +v 0.4051 4.7638 26.6684 +v 0.4314 4.7029 26.5913 +v 0.4054 4.6420 26.5142 +v 0.3341 4.5975 26.4575 +v 0.2367 4.5812 26.4369 +v 0.0674 4.7640 26.6680 +v 0.0414 4.7031 26.5909 +v 0.0677 4.6422 26.5138 +v 0.1391 4.5975 26.4573 +v 0.3153 5.6834 25.8940 +v 0.1807 5.6848 25.9291 +v 0.2337 4.1580 25.9877 +v 0.3187 4.1567 25.9525 +v 0.3505 5.6802 25.8092 +v 0.3539 4.1535 25.8677 +v 0.3153 5.6771 25.7242 +v 0.3187 4.1504 25.7827 +v 0.2303 5.6758 25.6889 +v 0.2337 4.1491 25.7474 +v 0.1453 5.6772 25.7240 +v 0.1487 4.1504 25.7825 +v 0.1101 5.6803 25.8089 +v 0.1134 4.1536 25.8674 +v 0.1453 5.6835 25.8938 +v 0.1487 4.1568 25.9523 +v 0.0355 4.3530 25.7988 +v 0.0355 4.3849 25.8598 +v 0.4308 4.3848 25.8603 +v 0.4309 4.3528 25.7992 +v 0.0358 4.2305 25.7257 +v 0.4312 4.2303 25.7261 +v 0.0360 4.1581 25.7488 +v 0.4313 4.1579 25.7492 +v 0.0369 3.7178 26.0771 +v 0.4323 3.7176 26.0776 +v 0.0361 4.0829 26.3947 +v 0.0357 4.2966 25.7499 +v 0.0355 4.3693 25.9324 +v 0.4310 4.2965 25.7503 +v 0.4315 4.0827 26.3951 +v 0.4309 4.3691 25.9328 +v 0.4436 6.0672 27.3654 +v 1.3533 6.0667 27.3664 +v 1.3532 6.1269 27.3667 +v 0.4434 6.1273 27.3656 +v 1.3531 6.1574 27.3160 +v 0.4434 6.1578 27.3149 +v 1.3532 6.1277 27.2650 +v 0.4434 6.1281 27.2639 +v 1.3533 6.0675 27.2647 +v 0.4435 6.0679 27.2636 +v 1.3534 6.0370 27.3154 +v 0.4436 6.0375 27.3144 +v 0.2384 8.0829 26.7348 +v 0.3880 8.0886 26.7746 +v 0.2434 5.8265 27.0507 +v 0.3929 5.8322 27.0905 +v 0.4975 8.1043 26.8831 +v 0.5024 5.8480 27.1991 +v 0.5375 8.1258 27.0313 +v 0.5425 5.8695 27.3472 +v 0.4974 8.1474 27.1793 +v 0.5023 5.8911 27.4952 +v 0.3878 8.1632 27.2875 +v 0.3928 5.9069 27.6035 +v 0.2382 8.1691 27.3271 +v 0.2432 5.9127 27.6430 +v 0.0887 8.1633 27.2872 +v 0.0936 5.9070 27.6031 +v -0.0208 8.1476 27.1787 +v -0.0159 5.8913 27.4946 +v -0.0609 8.1261 27.0306 +v -0.0559 5.8698 27.3465 +v -0.0207 8.1045 26.8825 +v -0.0158 5.8482 27.1985 +v 0.0888 8.0887 26.7743 +v 0.0938 5.8324 27.0902 +v 0.3001 7.8565 26.9110 +v 0.3449 7.8157 26.9317 +v 0.3470 6.8822 25.1019 +v 0.3021 6.9219 25.0793 +v 0.3615 7.7600 26.9599 +v 0.3635 6.8279 25.1327 +v 0.3452 7.7043 26.9881 +v 0.3472 6.7737 25.1635 +v 0.3005 7.6636 27.0086 +v 0.3025 6.7341 25.1861 +v 0.2394 7.6487 27.0161 +v 0.2414 6.7196 25.1942 +v 0.1782 7.6636 27.0085 +v 0.1802 6.7341 25.1859 +v 0.1333 7.7044 26.9878 +v 0.1353 6.7738 25.1633 +v 0.1168 7.7601 26.9596 +v 0.1188 6.8280 25.1325 +v 0.1331 7.8158 26.9315 +v 0.1351 6.8823 25.1016 +v 0.1777 7.8566 26.9109 +v 0.1798 6.9219 25.0791 +v 0.2389 7.8715 26.9034 +v 0.2409 6.9364 25.0709 +v 0.4526 7.8402 27.4445 +v 0.4538 7.2873 27.5189 +v 0.6090 7.8176 27.2899 +v 0.6102 7.2647 27.3643 +v 0.6663 7.7868 27.0785 +v 0.6675 7.2339 27.1529 +v 0.6091 7.7561 26.8670 +v 0.6104 7.2031 26.9414 +v 0.4528 7.7336 26.7120 +v 0.4540 7.1807 26.7864 +v 0.2392 7.7255 26.6551 +v 0.2404 7.1725 26.7295 +v 0.0268 7.1809 26.7859 +v 0.0256 7.7338 26.7115 +v -0.1297 7.2035 26.9405 +v -0.1309 7.7564 26.8661 +v -0.1870 7.2343 27.1519 +v -0.1882 7.7872 27.0775 +v -0.1298 7.2650 27.3634 +v -0.1310 7.8180 27.2890 +v 0.0265 7.2875 27.5184 +v 0.0253 7.8404 27.4440 +v 0.2402 7.2956 27.5753 +v 0.2389 7.8486 27.5009 +v 0.3212 5.9730 27.4863 +v 0.3218 5.6794 27.5279 +v 0.3858 5.6701 27.4646 +v 0.3852 5.9637 27.4230 +v 0.4093 5.6575 27.3781 +v 0.4086 5.9511 27.3365 +v 0.3859 5.6449 27.2916 +v 0.3852 5.9386 27.2500 +v 0.3219 5.6357 27.2282 +v 0.3213 5.9294 27.1866 +v 0.2345 5.6324 27.2049 +v 0.2339 5.9260 27.1633 +v 0.1471 5.6358 27.2279 +v 0.1464 5.9295 27.1864 +v 0.0831 5.6451 27.2912 +v 0.0824 5.9387 27.2496 +v 0.0596 5.6577 27.3777 +v 0.0590 5.9513 27.3361 +v 0.0830 5.6703 27.4643 +v 0.0824 5.9639 27.4227 +v 0.1470 5.6794 27.5277 +v 0.1463 5.9731 27.4861 +v 0.2344 5.6828 27.5510 +v 0.2338 5.9764 27.5094 +v -1.0542 7.4162 27.2332 +v 1.5287 7.4150 27.2362 +v 1.5284 7.5337 27.2367 +v -1.0545 7.5349 27.2337 +v 1.5283 7.5938 27.1366 +v -1.0546 7.5949 27.1336 +v 1.5284 7.5352 27.0360 +v -1.0545 7.5364 27.0330 +v 1.5287 7.4166 27.0355 +v -1.0542 7.4177 27.0325 +v 1.5288 7.3565 27.1356 +v -1.0541 7.3577 27.1326 +v -0.8677 6.1279 27.3641 +v -0.8676 6.0678 27.3638 +v 0.0421 6.0673 27.3649 +v 0.0420 6.1275 27.3652 +v -0.8678 6.1584 27.3134 +v 0.0419 6.1580 27.3144 +v -0.8677 6.1287 27.2624 +v 0.0420 6.1283 27.2634 +v -0.8676 6.0685 27.2621 +v 0.0421 6.0681 27.2632 +v -0.8675 6.0381 27.3129 +v 0.0422 6.0376 27.3139 +v -0.2767 1.7696 24.0280 +v -0.2759 1.4088 24.4079 +v -0.2762 1.5506 24.1829 +v -0.3976 2.0969 25.7016 +v -0.3985 2.5094 25.6051 +v -0.3967 1.6784 25.6369 +v -0.3255 2.1099 26.0520 +v -0.3243 1.5531 25.9658 +v -0.3267 2.6587 25.9235 +v -0.3959 1.3177 25.4205 +v -0.2979 2.1151 26.1927 +v -0.3993 2.8531 25.3617 +v -0.3232 1.0731 25.6781 +v -0.2992 2.7187 26.0514 +v -0.2966 1.5028 26.0980 +v -0.3277 3.1160 25.5998 +v -0.3003 3.2216 25.6955 +v -0.3998 3.0756 25.0088 +v -0.3284 3.4121 25.1302 +v -0.3011 3.5472 25.1791 +v -0.3999 3.1432 24.6001 +v -0.3286 3.5021 24.5864 +v -0.3997 3.0455 24.1977 +v -0.3013 3.6461 24.5809 +v -0.3954 1.0695 25.0857 +v -0.3283 3.3720 24.0511 +v -0.3225 0.7429 25.2325 +v -0.3992 2.7974 23.8629 +v -0.3010 3.5031 23.9921 +v -0.2954 0.9749 25.7816 +v -0.3276 3.0419 23.6055 +v -0.3984 2.4366 23.6465 +v -0.3002 3.1400 23.5020 +v -0.3265 2.5619 23.3177 +v -0.3975 2.0181 23.5818 +v -0.2990 2.6122 23.1856 +v -0.3253 2.0051 23.2316 +v -0.3966 1.6056 23.6783 +v -0.2977 1.9998 23.0909 +v -0.3241 1.4562 23.3601 +v -0.3958 1.2619 23.9217 +v -0.2964 1.3963 23.2322 +v -0.3231 0.9990 23.6837 +v -0.3953 1.0394 24.2746 +v -0.2953 0.8934 23.5881 +v -0.3224 0.7028 24.1533 +v -0.3951 0.9718 24.6833 +v -0.2945 0.5677 24.1045 +v -0.3222 0.6129 24.6971 +v -0.2943 0.4688 24.7027 +v -0.2946 0.6118 25.2915 +v 0.9025 1.2614 23.9232 +v 0.9017 1.6050 23.6798 +v 0.9029 1.0388 24.2761 +v 0.8309 0.9984 23.6851 +v 0.8316 0.7023 24.1547 +v 0.8299 1.4557 23.3614 +v 0.9031 0.9712 24.6848 +v 0.8035 0.8929 23.5893 +v 0.9008 2.0175 23.5833 +v 0.8318 0.6124 24.6985 +v 0.8024 1.3958 23.2335 +v 0.8042 0.5672 24.1058 +v 0.8287 2.0045 23.2329 +v 0.8011 1.9993 23.0922 +v 0.8999 2.4360 23.6480 +v 0.8275 2.5613 23.3191 +v 0.7997 2.6116 23.1869 +v 0.8991 2.7968 23.8644 +v 0.8264 3.0413 23.6068 +v 0.8985 3.0449 24.1992 +v 0.7986 3.1395 23.5033 +v 0.9029 1.0689 25.0872 +v 0.8257 3.3715 24.0524 +v 0.8315 0.7424 25.2338 +v 0.8983 3.1426 24.6016 +v 0.7978 3.5026 23.9934 +v 0.8045 0.4683 24.7039 +v 0.8254 3.5015 24.5878 +v 0.8985 3.0751 25.0103 +v 0.7975 3.6456 24.5822 +v 0.8256 3.4116 25.1316 +v 0.8990 2.8525 25.3632 +v 0.7977 3.5467 25.1804 +v 0.8263 3.1155 25.6012 +v 0.8997 2.5088 25.6066 +v 0.7985 3.2211 25.6968 +v 0.8273 2.6582 25.9248 +v 0.9007 2.0963 25.7031 +v 0.7996 2.7182 26.0527 +v 0.8285 2.1094 26.0533 +v 0.9016 1.6778 25.6384 +v 0.8009 2.1146 26.1940 +v 0.8297 1.5526 25.9672 +v 0.9024 1.3171 25.4220 +v 0.8022 1.5023 26.0993 +v 0.8308 1.0726 25.6794 +v 0.8034 0.9744 25.7829 +v 0.8042 0.6113 25.2928 +v -12.7566 3.8407 3.1967 +v -12.7556 3.3755 3.5259 +v -12.8725 4.0667 3.4010 +v -12.8733 4.4311 2.8232 +v -12.8713 3.5039 3.7994 +v -12.8116 4.3399 3.6484 +v -12.8101 3.6590 4.1303 +v -12.7544 2.8172 3.6567 +v -12.7573 4.1419 2.7191 +v -12.8125 4.7807 2.9494 +v -12.8698 2.8285 3.9576 +v -12.7835 4.4255 3.7260 +v -12.7531 2.2508 3.5690 +v -12.8736 4.5418 2.1538 +v -12.8083 2.8420 4.3216 +v -12.7846 4.8903 2.9889 +v -12.7820 3.7077 4.2340 +v -12.7575 4.2334 2.1658 +v -12.8128 4.9146 2.1396 +v -12.7849 5.0314 2.1352 +v -12.8732 4.3817 1.4948 +v -12.7572 4.1011 1.6210 +v -12.8124 4.7210 1.3424 +v -12.7845 4.8273 1.2946 +v -12.8724 3.9754 0.9465 +v -12.7565 3.7653 1.1678 +v -12.8114 4.2295 0.6791 +v -12.8711 3.3847 0.5924 +v -12.7833 4.3091 0.5952 +v -12.8683 2.1432 3.8515 +v -12.7554 3.2770 0.8751 +v -12.8098 3.5148 0.2506 +v -12.8064 2.0130 4.1934 +v -12.8696 2.6994 0.4863 +v -12.7817 3.5556 0.1435 +v -12.7542 2.7106 0.7874 +v -12.7801 2.8462 4.4358 +v -12.8080 2.6859 0.1223 +v -12.8681 2.0240 0.6445 +v -12.7798 2.6816 0.0083 +v -12.7530 2.1523 0.9182 +v -12.8062 1.8688 0.3137 +v -12.8668 1.4613 1.0428 +v -12.7779 1.8201 0.2100 +v -12.7519 1.6871 1.2474 +v -12.8047 1.1880 0.7956 +v -12.8660 1.0968 1.6206 +v -12.7763 1.1024 0.7181 +v -12.7521 1.7625 3.2763 +v -12.7513 1.3859 1.7251 +v -12.8037 0.7471 1.4946 +v -12.8658 0.9862 2.2900 +v -12.7753 0.6375 1.4551 +v -12.7511 1.2944 2.2783 +v -12.8034 0.6133 2.3044 +v -12.8661 1.1462 2.9490 +v -12.7749 0.4964 2.3089 +v -12.7513 1.4267 2.8231 +v -12.8038 0.8069 3.1016 +v -12.8670 1.5525 3.4974 +v -12.7754 0.7005 3.1495 +v -12.8049 1.2984 3.7649 +v -12.7765 1.2187 3.8488 +v -12.7781 1.9722 4.3005 +v -11.7308 3.8402 3.1979 +v -11.7315 4.1415 2.7202 +v -11.6159 4.0661 3.4025 +v -11.6147 3.5033 3.8008 +v -11.6167 4.4305 2.8247 +v -11.6781 4.3393 3.6497 +v -11.6791 4.7802 2.9507 +v -11.7317 4.2329 2.1670 +v -11.7298 3.3750 3.5271 +v -11.6766 3.6585 4.1316 +v -11.6170 4.5412 2.1553 +v -11.7065 4.4250 3.7272 +v -11.7314 4.1006 1.6222 +v -11.6132 2.8279 3.9590 +v -11.6794 4.9141 2.1409 +v -11.7049 3.7072 4.2353 +v -11.7075 4.8898 2.9902 +v -11.7286 2.8168 3.6579 +v -11.6748 2.8415 4.3230 +v -11.7030 2.8457 4.4370 +v -11.6117 2.1427 3.8529 +v -11.7273 2.2504 3.5702 +v -11.6730 2.0125 4.1947 +v -11.7011 1.9717 4.3018 +v -11.6104 1.5519 3.4988 +v -11.7263 1.7621 3.2775 +v -11.6714 1.2979 3.7662 +v -11.6095 1.1456 2.9505 +v -11.6994 1.2182 3.8501 +v -11.6167 4.3811 1.4963 +v -11.7255 1.4262 2.8243 +v -11.6703 0.8063 3.1029 +v -11.6789 4.7205 1.3437 +v -11.6092 0.9856 2.2915 +v -11.6983 0.7000 3.1507 +v -11.7253 1.2940 2.2795 +v -11.7078 5.0309 2.1364 +v -11.6699 0.6128 2.3057 +v -11.6094 1.0962 1.6221 +v -11.6979 0.4959 2.3101 +v -11.7255 1.3854 1.7262 +v -11.6702 0.7466 1.4959 +v -11.6103 1.4607 1.0443 +v -11.6982 0.6370 1.4564 +v -11.7262 1.6867 1.2486 +v -11.6712 1.1875 0.7969 +v -11.6115 2.0234 0.6459 +v -11.6992 1.1019 0.7193 +v -11.7307 3.7648 1.1690 +v -11.7272 2.1518 0.9194 +v -11.6727 1.8683 0.3150 +v -11.6130 2.6989 0.4877 +v -11.7008 1.8197 0.2113 +v -11.7284 2.7101 0.7886 +v -11.6745 2.6854 0.1237 +v -11.6145 3.3841 0.5938 +v -11.7027 2.6811 0.0095 +v -11.7296 3.2765 0.8763 +v -11.6763 3.5143 0.2520 +v -11.6158 3.9748 0.9480 +v -11.7046 3.5551 0.1448 +v -11.6779 4.2290 0.6804 +v -11.7063 4.3086 0.5965 +v -11.7074 4.8268 1.2959 +v 12.2301 1.6757 1.2765 +v 12.2291 2.1409 0.9473 +v 12.1152 1.4498 1.0719 +v 12.1160 1.0854 1.6497 +v 12.1140 2.0126 0.6736 +v 12.1774 1.1766 0.8247 +v 12.1759 1.8573 0.3428 +v 12.2279 2.6991 0.8165 +v 12.2308 1.3744 1.7541 +v 12.1783 0.7357 1.5237 +v 12.1125 2.6880 0.5154 +v 12.2058 1.0909 0.7472 +v 12.2266 3.2655 0.9042 +v 12.1163 0.9747 2.3191 +v 12.1741 2.6744 0.1514 +v 12.2068 0.6261 1.4842 +v 12.2042 1.8087 0.2391 +v 12.2310 1.2830 2.3074 +v 12.1786 0.6018 2.3335 +v 12.2071 0.4850 2.3380 +v 12.1159 1.1348 2.9781 +v 12.2307 1.4153 2.8521 +v 12.1782 0.7954 3.1307 +v 12.2067 0.6891 3.1785 +v 12.1151 1.5411 3.5264 +v 12.2300 1.7511 3.3054 +v 12.1772 1.2869 3.7940 +v 12.1138 2.1318 3.8806 +v 12.2056 1.2073 3.8779 +v 12.1110 3.3732 0.6214 +v 12.2289 2.2394 3.5981 +v 12.1756 2.0016 4.2224 +v 12.1722 3.5034 0.2797 +v 12.1123 2.8170 3.9866 +v 12.2039 1.9608 4.3296 +v 12.2277 2.8058 3.6858 +v 12.2023 2.6702 0.0374 +v 12.1738 2.8305 4.3507 +v 12.1108 3.4925 3.8284 +v 12.2020 2.8348 4.4649 +v 12.2265 3.3641 3.5550 +v 12.1720 3.6476 4.1594 +v 12.1095 4.0552 3.4301 +v 12.2001 3.6962 4.2631 +v 12.2254 3.8292 3.2258 +v 12.1705 4.3284 3.6775 +v 12.1087 4.4197 2.8523 +v 12.1985 4.4140 3.7550 +v 12.2256 3.7538 1.1969 +v 12.2248 4.1305 2.7481 +v 12.1695 4.7693 2.9784 +v 12.1085 4.5303 2.1829 +v 12.1975 4.8789 3.0180 +v 12.2246 4.2219 2.1948 +v 12.1692 4.9031 2.1687 +v 12.1088 4.3703 1.5239 +v 12.1972 5.0200 2.1642 +v 12.2248 4.0897 1.6501 +v 12.1696 4.7096 1.3715 +v 12.1097 3.9640 0.9756 +v 12.1976 4.8159 1.3237 +v 12.1707 4.2180 0.7081 +v 12.1987 4.2977 0.6243 +v 12.2004 3.5442 0.1726 +v 13.2505 4.1300 2.7493 +v 13.2503 4.2215 2.1960 +v 13.3653 4.4191 2.8538 +v 13.3661 4.0546 3.4316 +v 13.3651 4.5297 2.1844 +v 13.3030 4.7688 2.9798 +v 13.3027 4.9026 2.1700 +v 13.2506 4.0892 1.6513 +v 13.2512 3.8288 3.2270 +v 13.3040 4.3279 3.6788 +v 13.3654 4.3697 1.5253 +v 13.2746 4.8784 3.0193 +v 13.2513 3.7534 1.1981 +v 13.3674 3.4919 3.8299 +v 13.3031 4.7090 1.3728 +v 13.2756 4.4135 3.7563 +v 13.2742 5.0195 2.1655 +v 13.2522 3.3636 3.5562 +v 13.3055 3.6471 4.1607 +v 13.2772 3.6958 4.2644 +v 13.3689 2.8165 3.9881 +v 13.2535 2.8053 3.6870 +v 13.3073 2.8300 4.3520 +v 13.2791 2.8343 4.4661 +v 13.3704 2.1312 3.8820 +v 13.2547 2.2389 3.5993 +v 13.3091 2.0010 4.2237 +v 13.3716 1.5405 3.5279 +v 13.2810 1.9603 4.3308 +v 13.3663 3.9634 0.9770 +v 13.2558 1.7506 3.3066 +v 13.3107 1.2864 3.7953 +v 13.3042 4.2175 0.7095 +v 13.3725 1.1342 2.9796 +v 13.2826 1.2068 3.8791 +v 13.2565 1.4148 2.8533 +v 13.2747 4.8154 1.3249 +v 13.3117 0.7949 3.1320 +v 13.3729 0.9741 2.3206 +v 13.2838 0.6886 3.1798 +v 13.2568 1.2825 2.3086 +v 13.3121 0.6013 2.3348 +v 13.3726 1.0848 1.6512 +v 13.2842 0.4845 2.3392 +v 13.2566 1.3740 1.7553 +v 13.3118 0.7352 1.5250 +v 13.3718 1.4492 1.0733 +v 13.2839 0.6256 1.4854 +v 13.2524 3.2651 0.9054 +v 13.2559 1.6752 1.2777 +v 13.3108 1.1760 0.8260 +v 13.3706 2.0120 0.6750 +v 13.2828 1.0904 0.7484 +v 13.2549 2.1404 0.9485 +v 13.3093 1.8568 0.3441 +v 13.3691 2.6874 0.5168 +v 13.2812 1.8082 0.2404 +v 13.2537 2.6987 0.8177 +v 13.3075 2.6739 0.1528 +v 13.3676 3.3727 0.6229 +v 13.2793 2.6697 0.0386 +v 13.3057 3.5029 0.2810 +v 13.2774 3.5437 0.1739 +v 13.2758 4.2972 0.6256 +v -12.8909 4.1846 2.7343 +v -12.8903 3.8741 3.2267 +v -12.8912 4.2789 2.1639 +v -12.8909 4.1425 1.6023 +v -12.8901 3.7963 1.1351 +v -12.8890 3.2929 0.8333 +v -12.8877 2.7090 0.7429 +v -12.8865 2.1335 0.8777 +v -12.8854 1.6539 1.2171 +v -12.8847 1.3433 1.7095 +v -12.8845 1.2490 2.2799 +v -12.8892 3.3945 3.5661 +v -12.8848 1.3854 2.8415 +v -12.8856 1.7316 3.3087 +v -12.8867 2.2350 3.6105 +v -12.8879 2.8190 3.7009 +v 13.3902 1.3734 2.8721 +v 13.3894 1.7196 3.3393 +v 13.3905 1.2370 2.3105 +v 13.3902 1.3313 1.7401 +v 13.3895 1.6418 1.2477 +v 13.3885 2.1214 0.9083 +v 13.3872 2.6969 0.7735 +v 13.3859 3.2809 0.8639 +v 13.3848 3.7843 1.1656 +v 13.3841 4.1305 1.6329 +v 13.3838 4.2669 2.1944 +v 13.3883 2.2230 3.6411 +v 13.3840 4.1726 2.7648 +v 13.3847 3.8620 3.2572 +v 13.3858 3.3825 3.5967 +v 13.3870 2.8069 3.7315 +v 12.0975 1.2376 2.3090 +v 12.0973 1.3319 1.7386 +v 12.0973 1.3739 2.8706 +v 12.0965 1.7202 3.3378 +v 12.0954 2.2236 3.6396 +v 12.0941 2.8075 3.7300 +v 12.0929 3.3830 3.5952 +v 12.0918 3.8626 3.2557 +v 12.0911 4.1732 2.7633 +v 12.0909 4.2675 2.1929 +v 12.0912 4.1311 1.6314 +v 12.0966 1.6424 1.2462 +v 12.0919 3.7849 1.1641 +v 12.0930 3.2815 0.8623 +v 12.0943 2.6975 0.7720 +v 12.0956 2.1220 0.9068 +v -11.5916 1.2484 2.2814 +v -11.5919 1.3848 2.8430 +v -11.5918 1.3427 1.7110 +v -11.5925 1.6533 1.2186 +v -11.5936 2.1329 0.8792 +v -11.5948 2.7084 0.7444 +v -11.5961 3.2923 0.8348 +v -11.5972 3.7957 1.1366 +v -11.5980 4.1420 1.6038 +v -11.5982 4.2783 2.1654 +v -11.5980 4.1840 2.7358 +v -11.5926 1.7311 3.3102 +v -11.5973 3.8735 3.2282 +v -11.5963 3.3939 3.5676 +v -11.5950 2.8184 3.7024 +v -11.5937 2.2344 3.6120 +v -12.8889 3.2413 3.2395 +v -12.8879 2.8056 3.3416 +v -12.8879 2.7971 3.1144 +v -12.8897 3.6044 2.9826 +v -12.8887 3.1444 3.0331 +v -12.8871 2.4448 3.0599 +v -12.8902 3.8395 2.6098 +v -12.8869 2.3635 3.2732 +v -12.8893 3.4338 2.8282 +v -12.8904 3.9108 2.1780 +v -12.8897 3.6212 2.5311 +v -12.8865 2.1410 2.8777 +v -12.8861 1.9824 3.0447 +v -12.8898 3.6781 2.1869 +v -12.8892 3.3869 1.5661 +v -12.8897 3.5959 1.8480 +v -12.8860 1.9321 2.5958 +v -12.8855 1.7203 2.6910 +v -12.8858 1.8498 2.2569 +v -12.8886 3.0831 1.3839 +v -12.8853 1.6171 2.2658 +v -12.8860 1.9067 1.9127 +v -12.8901 3.8076 1.7528 +v -12.8864 2.0941 1.6156 +v -12.8896 3.5455 1.3991 +v -12.8855 1.6885 1.8340 +v -12.8870 2.3835 1.4107 +v -12.8878 2.7308 1.3294 +v -12.8860 1.9236 1.4612 +v -12.8887 3.1644 1.1706 +v -12.8868 2.2866 1.2043 +v -12.8878 2.7223 1.1022 +v 13.3880 2.3515 3.3038 +v 13.3871 2.7936 3.3722 +v 13.3871 2.7851 3.1450 +v 13.3889 1.9704 3.0753 +v 13.3878 2.4328 3.0904 +v 13.3863 3.1324 3.0636 +v 13.3894 1.7083 2.7216 +v 13.3861 3.2293 3.2701 +v 13.3885 2.1290 2.9083 +v 13.3896 1.6051 2.2964 +v 13.3890 1.9201 2.6264 +v 13.3857 3.4218 2.8588 +v 13.3853 3.5923 3.0132 +v 13.3891 1.8378 2.2875 +v 13.3886 2.0821 1.6462 +v 13.3890 1.8947 1.9433 +v 13.3853 3.6092 2.5617 +v 13.3848 3.8274 2.6404 +v 13.3851 3.6661 2.2175 +v 13.3879 2.3715 1.4413 +v 13.3846 3.8988 2.2085 +v 13.3853 3.5838 1.8786 +v 13.3895 1.6764 1.8646 +v 13.3857 3.3749 1.5966 +v 13.3890 1.9115 1.4918 +v 13.3848 3.7956 1.7834 +v 13.3864 3.0711 1.4145 +v 13.3872 2.7188 1.3600 +v 13.3854 3.5335 1.4297 +v 13.3882 2.2746 1.2348 +v 13.3862 3.1524 1.2012 +v 13.3872 2.7103 1.1328 +v 12.0933 3.1530 1.1997 +v 12.0925 3.5341 1.4282 +v 12.0943 2.7109 1.1313 +v 12.0952 2.2752 1.2333 +v 12.0919 3.7962 1.7819 +v 12.0917 3.8994 2.2070 +v 12.0919 3.8280 2.6389 +v 12.0924 3.5929 3.0117 +v 12.0960 1.9121 1.4903 +v 12.0932 3.2299 3.2686 +v 12.0941 2.7941 3.3707 +v 12.0951 2.3521 3.3022 +v 12.0959 1.9710 3.0738 +v 12.0965 1.7089 2.7201 +v 12.0967 1.6057 2.2949 +v 12.0966 1.6770 1.8631 +v -11.5960 3.2407 3.2410 +v -11.5968 3.6038 2.9841 +v -11.5950 2.8050 3.3431 +v -11.5940 2.3629 3.2747 +v -11.5973 3.8389 2.6113 +v -11.5974 3.9103 2.1795 +v -11.5972 3.8070 1.7543 +v -11.5967 3.5449 1.4006 +v -11.5932 1.9818 3.0462 +v -11.5958 3.1638 1.1721 +v -11.5949 2.7218 1.1037 +v -11.5939 2.2860 1.2058 +v -11.5931 1.9230 1.4627 +v -11.5926 1.6879 1.8355 +v -11.5924 1.6165 2.2673 +v -11.5926 1.7197 2.6925 +v -0.1760 4.2858 26.9338 +v 0.6321 4.2855 26.9348 +v 1.3532 6.0972 27.3157 +v 0.4435 6.0976 27.3146 +v 0.2433 5.8696 27.3468 +v 0.2383 8.1260 27.0309 +v 0.2391 7.7601 26.9598 +v 0.2411 6.8280 25.1326 +v 0.2403 7.2341 27.1524 +v 0.2391 7.7870 27.0780 +v 0.2345 5.6576 27.3779 +v 0.2338 5.9512 27.3363 +v 1.5285 7.4751 27.1361 +v -1.0544 7.4763 27.1331 +v -0.8677 6.0982 27.3131 +v 0.0421 6.0978 27.3142 +# 1648 vertices + +vn -0.4102 -0.1383 -0.9014 +vn -0.9667 -0.0451 -0.2520 +vn -0.5555 0.0381 0.8306 +vn -0.9503 -0.0077 0.3113 +vn -0.9580 -0.0469 -0.2830 +vn -0.8047 -0.0625 -0.5904 +vn -0.7262 -0.0664 -0.6843 +vn -0.6570 -0.0687 -0.7507 +vn 0.2535 0.0708 0.9647 +vn 0.5892 0.0702 0.8049 +vn 0.5117 0.0713 0.8562 +vn 0.7292 0.0663 0.6811 +vn 0.5877 0.0703 0.8060 +vn 0.7279 0.0663 0.6824 +vn 0.9011 0.0549 0.4302 +vn 0.8936 0.0556 0.4454 +vn 0.9113 -0.0001 -0.4116 +vn 0.9557 0.0089 -0.2943 +vn 0.1274 -0.0612 -0.9900 +vn 0.2017 -0.0582 -0.9777 +vn -0.2535 -0.0708 -0.9647 +vn -0.5117 -0.0713 -0.8562 +vn -0.7929 -0.0632 -0.6060 +vn 0.7403 0.2935 0.6048 +vn 0.8139 0.3550 0.4599 +vn 0.6785 0.2474 0.6917 +vn 0.6156 0.2033 0.7614 +vn 0.5610 0.1668 0.8109 +vn 0.8843 0.4397 0.1570 +vn 0.8681 0.4774 -0.1359 +vn 0.2861 0.2940 -0.9120 +vn 0.1102 0.2110 -0.9713 +vn -0.4210 -0.0787 -0.9037 +vn -0.3717 -0.0491 -0.9270 +vn -0.5659 -0.1701 -0.8068 +vn -0.2924 -0.0028 -0.9563 +vn -0.6832 -0.2507 -0.6858 +vn -0.6155 -0.2033 -0.7615 +vn -0.8185 -0.3592 -0.4485 +vn -0.7404 -0.2936 -0.6047 +vn -0.8637 -0.4786 0.1579 +vn -0.8843 -0.4398 -0.1568 +vn -0.1079 -0.2098 0.9718 +vn -0.2866 -0.2942 0.9117 +vn -0.4911 -0.1220 -0.8625 +vn 0.4911 0.1220 0.8625 +vn 0.4210 0.0787 0.9037 +vn 0.3718 0.0491 0.9270 +vn 0.2924 0.0028 0.9563 +vn 0.6856 0.2525 0.6828 +vn 0.8542 0.3955 0.3375 +vn 0.5487 0.4036 -0.7322 +vn -0.2866 -0.2943 0.9117 +vn -0.5641 -0.4093 0.7171 +vn -0.8843 -0.4398 -0.1569 +vn -0.6815 -0.2495 -0.6879 +vn 0.5611 -0.1509 0.8139 +vn -0.0933 -0.9932 -0.0693 +vn -0.0933 -0.9932 -0.0694 +vn -0.3807 0.2971 -0.8757 +vn -0.3802 0.2886 -0.8787 +vn -0.3787 0.2833 -0.8811 +vn -0.3797 0.2803 -0.8816 +vn -0.3753 0.2833 -0.8825 +vn -0.3776 0.2695 -0.8859 +vn -0.3890 0.1934 -0.9007 +vn -0.3935 0.1575 -0.9057 +vn -0.3997 0.0990 -0.9113 +vn 0.3533 -0.3180 0.8798 +vn 0.3596 -0.3152 0.8783 +vn 0.3574 -0.3279 0.8745 +vn 0.3607 -0.3596 0.8606 +vn 0.3625 -0.3511 0.8633 +vn 0.2932 -0.6014 0.7432 +vn 0.3374 -0.4584 0.8222 +vn 0.2586 -0.6884 0.6777 +vn 0.3672 -0.3129 0.8759 +vn 0.3668 -0.3126 0.8762 +vn 0.3677 -0.3133 0.8755 +vn 0.3695 -0.3112 0.8756 +vn 0.3707 -0.3090 0.8758 +vn 0.3674 -0.3129 0.8759 +vn 0.3679 -0.3123 0.8759 +vn 0.3595 -0.3328 0.8718 +vn 0.3596 -0.3429 0.8678 +vn 0.3620 -0.3438 0.8664 +vn 0.3608 -0.3589 0.8608 +vn 0.3624 -0.3511 0.8634 +vn 0.3629 -0.3442 0.8659 +vn 0.3651 -0.3431 0.8654 +vn 0.3674 -0.3405 0.8655 +vn 0.3742 -0.3252 0.8685 +vn 0.3696 -0.3379 0.8656 +vn 0.3785 -0.3131 0.8710 +vn -0.3712 0.2841 -0.8840 +vn -0.3673 0.2946 -0.8822 +vn -0.3634 0.3051 -0.8803 +vn 0.3868 -0.3023 0.8712 +vn 0.3774 -0.3070 0.8737 +vn 0.3737 -0.3095 0.8744 +vn 0.3732 -0.3101 0.8744 +vn 0.3726 -0.3110 0.8744 +vn 0.3717 -0.3119 0.8744 +vn -0.1316 -0.9787 -0.1574 +vn -0.1317 -0.9787 -0.1575 +vn 0.1317 0.9787 0.1575 +vn 0.1316 0.9787 0.1574 +vn -0.2654 -0.8375 -0.4776 +vn -0.1946 -0.9322 -0.3053 +vn 0.0420 -0.9720 0.2314 +vn 0.2013 -0.8003 0.5648 +vn 0.3080 -0.5585 0.7702 +vn 0.3660 -0.3337 0.8687 +vn 0.3806 -0.2511 0.8900 +vn 0.4004 -0.0914 0.9118 +vn 0.4026 -0.0652 0.9131 +vn 0.4095 0.0686 0.9097 +vn 0.4096 0.0736 0.9093 +vn 0.4085 0.2174 0.8865 +vn 0.4089 0.2054 0.8891 +vn 0.3925 0.4098 0.8234 +vn 0.3980 0.3635 0.8423 +vn 0.3095 0.7460 0.5896 +vn 0.3572 0.5977 0.7177 +vn -0.0420 0.9720 -0.2314 +vn 0.1946 0.9322 0.3053 +vn -0.3080 0.5585 -0.7702 +vn -0.2013 0.8003 -0.5648 +vn -0.3806 0.2511 -0.8900 +vn -0.3660 0.3337 -0.8687 +vn -0.4026 0.0652 -0.9131 +vn -0.4004 0.0914 -0.9118 +vn -0.4096 -0.0736 -0.9093 +vn -0.4095 -0.0686 -0.9097 +vn -0.4089 -0.2054 -0.8891 +vn -0.4085 -0.2174 -0.8865 +vn -0.3980 -0.3635 -0.8423 +vn -0.3925 -0.4098 -0.8234 +vn -0.3805 -0.4885 -0.7853 +vn -0.2654 -0.8375 -0.4777 +vn -0.1946 -0.9321 -0.3054 +vn 0.3079 -0.5585 0.7702 +vn 0.3660 -0.3338 0.8687 +vn 0.3925 0.4099 0.8234 +vn 0.3095 0.7460 0.5897 +vn 0.3572 0.5978 0.7177 +vn 0.1946 0.9321 0.3054 +vn -0.3079 0.5585 -0.7702 +vn -0.3659 0.3338 -0.8687 +vn -0.4089 -0.2054 -0.8892 +vn -0.3925 -0.4099 -0.8234 +vn -0.3804 -0.4885 -0.7852 +vn 0.0420 -0.9719 0.2314 +vn 0.3659 -0.3338 0.8687 +vn 0.4089 0.2054 0.8892 +vn -0.0420 0.9719 -0.2314 +vn -0.3805 -0.4885 -0.7852 +vn 0.8749 0.0574 0.4809 +vn -0.4099 -0.1646 -0.8971 +vn -0.4100 -0.1620 -0.8976 +vn -0.4099 -0.1644 -0.8972 +vn -0.4099 -0.1682 -0.8965 +vn -0.4099 -0.1681 -0.8965 +vn -0.4093 -0.1926 -0.8918 +vn -0.4094 -0.1898 -0.8924 +vn -0.4034 -0.3057 -0.8625 +vn -0.4051 -0.2813 -0.8699 +vn -0.3695 -0.5448 -0.7527 +vn -0.3846 -0.4638 -0.7981 +vn -0.1927 -0.9340 -0.3007 +vn -0.3091 -0.7470 -0.5886 +vn 0.0529 -0.9655 0.2551 +vn -0.0761 -0.9966 -0.0302 +vn 0.2570 -0.6919 0.6747 +vn 0.1508 -0.8740 0.4619 +vn 0.3699 -0.3133 0.8747 +vn 0.3347 -0.4686 0.8176 +vn 0.4032 -0.0570 0.9133 +vn 0.4005 -0.0903 0.9119 +vn 0.4102 0.1219 0.9038 +vn 0.4102 0.1231 0.9036 +vn 0.4061 0.2660 0.8743 +vn 0.4050 0.2829 0.8694 +vn 0.3996 0.3484 0.8479 +vn 0.3990 0.3541 0.8458 +vn 0.4055 0.2754 0.8716 +vn 0.4071 0.2493 0.8787 +vn 0.4100 0.1581 0.8983 +vn -0.8749 -0.0574 -0.4809 +vn 0.4090 0.2052 0.8892 +vn 0.4102 0.1383 0.9015 +vn 0.4085 0.2173 0.8865 +vn 0.3572 0.5979 0.7176 +vn 0.2654 0.8374 0.4778 +vn -0.1329 0.8956 -0.4246 +vn -0.3079 0.5587 -0.7701 +vn -0.3659 0.3339 -0.8687 +vn -0.4004 0.0912 -0.9118 +vn -0.4026 0.0650 -0.9131 +vn -0.4070 -0.0034 -0.9134 +vn 0.4070 0.0034 0.9134 +vn 0.4004 -0.0912 0.9118 +vn 0.4026 -0.0650 0.9131 +vn 0.3659 -0.3339 0.8687 +vn 0.3079 -0.5587 0.7701 +vn 0.1329 -0.8956 0.4247 +vn 0.1329 -0.8955 0.4247 +vn 0.2285 -0.9676 0.1076 +vn 0.2284 -0.9676 0.1076 +vn 0.2287 -0.9675 0.1078 +vn 0.2288 -0.9675 0.1078 +vn -0.3703 -0.9026 -0.2196 +vn -0.3702 -0.9026 -0.2196 +vn -0.3705 -0.9025 -0.2197 +vn 0.3603 0.5812 0.7297 +vn 0.3626 0.5799 0.7296 +vn 0.4366 -0.1204 0.8916 +vn 0.4365 -0.1204 0.8916 +vn 0.3502 -0.1446 0.9254 +vn 0.3503 -0.1446 0.9254 +vn -0.4646 -0.4852 -0.7408 +vn -0.2419 -0.6032 -0.7600 +vn -0.2420 -0.6032 -0.7600 +vn 0.4094 0.0718 0.9095 +vn -0.4094 -0.0718 -0.9095 +vn 0.4097 0.0718 0.9094 +vn -0.4097 -0.0718 -0.9094 +vn 0.0906 0.9936 0.0678 +vn 0.0905 0.9936 0.0678 +vn 0.0961 0.9929 0.0708 +vn -0.8750 -0.0571 -0.4808 +vn -0.8714 -0.0737 -0.4851 +vn -0.8759 -0.0681 -0.4777 +vn -0.8716 -0.0971 -0.4806 +vn -0.8784 -0.0681 -0.4730 +vn -0.8787 -0.0676 -0.4725 +vn -0.8738 -0.0967 -0.4767 +vn -0.8607 -0.0864 -0.5017 +vn -0.8700 -0.1163 -0.4791 +vn 0.8748 0.0577 0.4810 +vn 0.8782 0.0407 0.4766 +vn 0.8738 0.0469 0.4841 +vn 0.8769 0.0155 0.4804 +vn 0.8888 0.0260 0.4575 +vn 0.8713 0.0469 0.4886 +vn 0.8710 0.0474 0.4890 +vn 0.8746 0.0183 0.4844 +vn 0.8767 -0.0029 0.4809 +vn 0.8750 0.0571 0.4808 +vn 0.8714 0.0736 0.4851 +vn 0.8759 0.0680 0.4777 +vn 0.8716 0.0970 0.4806 +vn 0.8607 0.0864 0.5017 +vn 0.8784 0.0680 0.4731 +vn 0.8788 0.0671 0.4725 +vn 0.8738 0.0966 0.4766 +vn 0.8700 0.1163 0.4791 +vn -0.8767 0.0029 -0.4809 +vn -0.8769 -0.0155 -0.4804 +vn -0.8746 -0.0184 -0.4845 +vn -0.8710 -0.0480 -0.4890 +vn -0.8713 -0.0471 -0.4885 +vn -0.8738 -0.0470 -0.4840 +vn -0.8782 -0.0408 -0.4766 +vn -0.8888 -0.0260 -0.4576 +vn -0.8748 -0.0577 -0.4810 +vn -0.3728 0.3000 -0.8780 +vn -0.2765 0.6485 -0.7092 +vn -0.3438 0.4366 -0.8314 +vn -0.2992 0.5874 -0.7519 +vn -0.2495 0.7113 -0.6571 +vn -0.3556 0.3862 -0.8511 +vn -0.3417 0.4584 -0.8204 +vn -0.4393 0.2037 -0.8749 +vn -0.4443 0.2219 -0.8680 +vn -0.4394 0.1510 -0.8855 +vn -0.3422 0.4369 -0.8319 +vn -0.3717 0.3006 -0.8783 +vn -0.2733 0.6508 -0.7084 +vn -0.2967 0.5886 -0.7520 +vn -0.2459 0.7134 -0.6562 +vn -0.3355 0.4624 -0.8207 +vn -0.3488 0.3886 -0.8528 +vn -0.3006 0.2971 -0.9063 +vn -0.3196 0.2345 -0.9181 +vn -0.3373 0.1839 -0.9233 +vn -0.4102 -0.1384 -0.9014 +vn -0.3095 -0.7459 -0.5897 +vn -0.3572 -0.5978 -0.7177 +vn -0.2654 -0.8374 -0.4778 +vn 0.1328 -0.8956 0.4246 +vn 0.2013 -0.8003 0.5649 +vn 0.3806 -0.2512 0.8900 +vn 0.4070 0.0032 0.9134 +vn 0.4102 0.1384 0.9014 +vn 0.2654 0.8375 0.4777 +vn -0.1328 0.8957 -0.4245 +vn -0.3660 0.3338 -0.8687 +vn -0.4070 -0.0032 -0.9134 +vn 0.4071 0.0032 0.9134 +vn 0.8749 0.0574 0.4808 +vn 0.4071 0.0034 0.9134 +vn 0.3079 -0.5586 0.7701 +vn -0.3572 -0.5979 -0.7176 +vn -0.3095 -0.7460 -0.5897 +vn -0.4089 -0.2052 -0.8892 +vn -0.4085 -0.2173 -0.8865 +vn -0.4102 -0.1383 -0.9015 +vn -0.3660 0.3339 -0.8687 +vn 0.4102 0.1383 0.9014 +vn 0.4089 0.2052 0.8892 +vn 0.2655 0.8374 0.4778 +vn -0.4336 -0.0728 -0.8982 +vn -0.4335 -0.0727 -0.8982 +vn -0.4334 -0.0727 -0.8982 +vn -0.4096 -0.0718 -0.9094 +vn -0.5682 -0.0162 0.8228 +vn -0.5699 -0.0162 0.8216 +vn -0.5434 -0.0686 0.8367 +vn -0.8761 -0.2975 0.3794 +vn -0.7146 -0.4270 0.5541 +vn -0.7039 -0.4304 0.5651 +vn 0.6748 0.0527 0.7361 +vn 0.6742 0.0526 0.7367 +vn 0.6870 0.0133 0.7266 +vn 0.7024 -0.0179 0.7115 +vn 0.6940 -0.0853 0.7149 +vn 0.6899 -0.0899 0.7183 +vn -0.8761 -0.0327 -0.4811 +vn -0.8758 -0.0334 -0.4815 +vn -0.8751 -0.0329 -0.4829 +vn -0.8747 -0.0336 -0.4835 +vn -0.8759 -0.0344 -0.4812 +vn -0.8759 -0.0346 -0.4812 +vn -0.8760 -0.0348 -0.4811 +vn 0.8732 0.0819 0.4804 +vn 0.8735 0.0813 0.4800 +vn 0.8742 0.0818 0.4786 +vn 0.8746 0.0812 0.4781 +vn 0.8734 0.0803 0.4803 +vn 0.8734 0.0801 0.4803 +vn 0.8734 0.0798 0.4805 +vn 0.8842 -0.2684 0.3823 +vn 0.8838 -0.2709 0.3816 +vn 0.9198 -0.2407 0.3100 +vn 0.8435 -0.3828 -0.3767 +vn 0.5347 -0.4382 -0.7226 +vn 0.5314 -0.4388 -0.7246 +vn -0.7650 -0.2530 -0.5922 +vn -0.7930 -0.3181 -0.5196 +vn -0.7941 -0.3152 -0.5197 +vn -0.7314 -0.2331 -0.6409 +vn -0.6504 -0.2156 -0.7283 +vn -0.6492 -0.2166 -0.7291 +vn 0.8751 0.0324 0.4829 +vn 0.8751 0.0317 0.4828 +vn 0.8752 0.0334 0.4825 +vn 0.8758 0.0334 0.4814 +vn 0.8760 0.0342 0.4812 +vn 0.8759 0.0344 0.4812 +vn 0.8761 0.0327 0.4811 +vn 0.8760 0.0346 0.4811 +vn -0.8742 -0.0823 -0.4786 +vn -0.8732 -0.0819 -0.4804 +vn -0.8735 -0.0812 -0.4801 +vn -0.8741 -0.0813 -0.4790 +vn -0.8734 -0.0804 -0.4803 +vn -0.8741 -0.0830 -0.4786 +vn -0.8734 -0.0803 -0.4803 +vn -0.8734 -0.0800 -0.4805 +vn 0.5513 -0.0219 0.8340 +vn 0.4904 0.0198 0.8713 +vn 0.4904 0.0198 0.8712 +vn 0.5653 -0.0318 0.8243 +vn 0.6985 -0.1352 0.7028 +vn 0.6899 -0.1280 0.7125 +vn 0.8848 -0.3472 0.3109 +vn 0.8346 -0.2708 0.4797 +vn 0.4589 -0.4599 -0.7602 +vn 0.8636 -0.4789 -0.1577 +vn -0.1719 -0.2067 -0.9632 +vn 0.0554 -0.3154 -0.9473 +vn -0.2986 -0.1378 -0.9444 +vn 0.2985 0.1378 0.9444 +vn 0.1718 0.2068 0.9632 +vn -0.0557 0.3155 0.9473 +vn -0.4592 0.4600 0.7600 +vn -0.8636 0.4789 0.1577 +vn -0.8848 0.3472 -0.3107 +vn -0.8346 0.2709 -0.4796 +vn -0.6985 0.1352 -0.7028 +vn -0.6899 0.1280 -0.7125 +vn -0.5513 0.0218 -0.8340 +vn -0.5653 0.0318 -0.8243 +vn -0.4904 -0.0198 -0.8712 +vn -0.4905 -0.0198 -0.8712 +vn 0.1718 0.2067 0.9632 +vn 0.2984 0.1379 0.9444 +vn -0.0555 0.3153 0.9474 +vn -0.4590 0.4598 0.7602 +vn -0.8636 0.4788 0.1578 +vn -0.8848 0.3470 -0.3109 +vn -0.8346 0.2708 -0.4797 +vn -0.6985 0.1351 -0.7027 +vn -0.6899 0.1279 -0.7125 +vn 0.4905 0.0198 0.8712 +vn 0.5513 -0.0218 0.8340 +vn 0.6985 -0.1351 0.7028 +vn 0.6899 -0.1279 0.7125 +vn 0.8848 -0.3470 0.3110 +vn 0.4590 -0.4599 -0.7602 +vn 0.8636 -0.4788 -0.1577 +vn -0.1718 -0.2068 -0.9632 +vn 0.0556 -0.3154 -0.9473 +vn -0.2984 -0.1379 -0.9444 +vn 0.1717 0.2068 0.9632 +vn 0.2983 0.1379 0.9444 +vn -0.0556 0.3154 0.9473 +vn -0.4589 0.4598 0.7602 +vn -0.8637 0.4788 0.1576 +vn -0.8849 0.3472 -0.3107 +vn -0.6984 0.1351 -0.7028 +vn -0.5513 0.0219 -0.8340 +vn -0.5653 0.0318 -0.8242 +vn -0.4906 -0.0198 -0.8712 +vn 0.6984 -0.1351 0.7028 +vn 0.8848 -0.3471 0.3107 +vn 0.4589 -0.4598 -0.7603 +vn 0.8637 -0.4788 -0.1576 +vn -0.1717 -0.2068 -0.9632 +vn -0.2983 -0.1379 -0.9444 +vn 0.5857 0.0703 0.8074 +vn 0.7292 0.0662 0.6811 +vn 0.9113 -0.0001 -0.4118 +vn 0.9556 0.0089 -0.2945 +vn 0.1272 -0.0612 -0.9900 +vn 0.2015 -0.0582 -0.9778 +vn -0.1272 0.0612 0.9900 +vn -0.2015 0.0582 0.9778 +vn -0.9112 0.0001 0.4119 +vn -0.9556 -0.0089 0.2945 +vn -0.9011 -0.0549 -0.4302 +vn -0.8936 -0.0556 -0.4454 +vn -0.7292 -0.0662 -0.6811 +vn -0.7279 -0.0663 -0.6824 +vn -0.5858 -0.0703 -0.8074 +vn -0.5877 -0.0703 -0.8061 +vn 0.2532 -0.1080 0.9614 +vn 0.0128 -0.3450 0.9385 +vn 0.0128 -0.3451 0.9385 +vn 0.1163 -0.2481 0.9617 +vn 0.4194 0.0840 0.9039 +vn 0.3883 0.0458 0.9204 +vn 0.5186 0.2145 0.8277 +vn 0.5106 0.2034 0.8354 +vn 0.5589 0.2726 0.7832 +vn 0.7046 0.5489 0.4497 +vn 0.6598 0.4431 0.6069 +vn 0.7217 0.6661 0.1885 +vn 0.6902 0.7223 -0.0434 +vn -0.1163 0.2481 -0.9617 +vn -0.0128 0.3451 -0.9385 +vn -0.0128 0.3450 -0.9385 +vn -0.2532 0.1080 -0.9614 +vn -0.3883 -0.0458 -0.9204 +vn -0.4195 -0.0840 -0.9039 +vn -0.5107 -0.2034 -0.8354 +vn -0.5186 -0.2145 -0.8277 +vn -0.5589 -0.2726 -0.7832 +vn -0.6902 -0.7223 0.0434 +vn -0.7046 -0.5489 -0.4497 +vn -0.7217 -0.6661 -0.1885 +vn -0.6598 -0.4431 -0.6069 +vn 0.1162 -0.2481 0.9617 +vn 0.3355 -0.0164 0.9419 +vn 0.3354 -0.0164 0.9419 +vn -0.6061 -0.7354 0.3029 +vn -0.1771 -0.5038 0.8455 +vn -0.6089 -0.3513 -0.7112 +vn -0.6193 -0.3688 -0.6931 +vn -0.4655 -0.1427 -0.8735 +vn 0.4655 0.1427 0.8735 +vn 0.6089 0.3513 0.7112 +vn 0.6193 0.3688 0.6931 +vn 0.6062 0.7354 -0.3028 +vn 0.1772 0.5038 -0.8454 +vn -0.3354 0.0165 -0.9419 +vn 0.3354 -0.0165 0.9419 +vn -0.7046 -0.5490 -0.4496 +vn -0.6902 -0.7223 0.0433 +vn -0.6598 -0.4432 -0.6068 +vn -0.5588 -0.2726 -0.7832 +vn -0.5106 -0.2034 -0.8354 +vn 0.4655 0.1426 0.8735 +vn 0.5107 0.2034 0.8354 +vn 0.7217 0.6661 0.1884 +vn 0.6060 0.7354 -0.3031 +vn 0.1770 0.5037 -0.8455 +vn -0.8640 0.1790 -0.4706 +vn -0.8640 0.1791 -0.4705 +vn -0.8640 0.1791 -0.4706 +vn 0.8640 -0.1791 0.4706 +vn 0.8640 -0.1789 0.4707 +vn 0.8640 -0.1790 0.4706 +vn -0.7761 -0.4575 -0.4340 +vn -0.7762 -0.4578 -0.4336 +vn -0.7759 -0.4574 -0.4344 +vn -0.7761 -0.4576 -0.4340 +vn -0.7761 -0.4574 -0.4340 +vn -0.7761 -0.4574 -0.4341 +vn 0.7761 0.4576 0.4340 +vn 0.7762 0.4576 0.4338 +vn 0.7761 0.4574 0.4342 +vn 0.7761 0.4576 0.4339 +vn 0.7761 0.4575 0.4340 +vn 0.7760 0.4577 0.4340 +vn 0.4912 0.1220 0.8625 +vn 0.4912 0.1221 0.8624 +vn 0.5488 0.1588 0.8207 +vn 0.5632 0.1683 0.8090 +vn 0.6833 0.2508 0.6857 +vn 0.6806 0.2488 0.6891 +vn 0.8523 0.3931 0.3451 +vn 0.8162 0.3570 0.4544 +vn 0.5598 0.4076 -0.7214 +vn 0.8652 0.4781 -0.1511 +vn -0.1401 0.0819 -0.9867 +vn 0.1103 0.2109 -0.9713 +vn -0.2922 -0.0028 -0.9563 +vn -0.2922 -0.0028 -0.9564 +vn 0.2922 0.0028 0.9563 +vn 0.1402 -0.0819 0.9867 +vn -0.1104 -0.2110 0.9712 +vn -0.5596 -0.4075 0.7217 +vn -0.8652 -0.4781 0.1510 +vn -0.8523 -0.3932 -0.3450 +vn -0.8162 -0.3570 -0.4544 +vn -0.6833 -0.2508 -0.6857 +vn -0.6807 -0.2488 -0.6890 +vn -0.5488 -0.1588 -0.8207 +vn -0.5632 -0.1683 -0.8090 +vn -0.4912 -0.1220 -0.8625 +vn 0.5488 0.1589 0.8207 +vn 0.5633 0.1683 0.8090 +vn 0.6833 0.2507 0.6858 +vn 0.6807 0.2489 0.6890 +vn 0.8523 0.3932 0.3449 +vn 0.5595 0.4075 -0.7217 +vn 0.8652 0.4781 -0.1509 +vn 0.1104 0.2110 -0.9712 +vn -0.2921 -0.0027 -0.9564 +vn -0.2922 -0.0027 -0.9564 +vn 0.2922 0.0027 0.9564 +vn 0.1400 -0.0819 0.9867 +vn -0.1105 -0.2110 0.9712 +vn -0.5596 -0.4075 0.7216 +vn -0.8653 -0.4781 0.1508 +vn -0.8523 -0.3932 -0.3448 +vn -0.6833 -0.2507 -0.6858 +vn -0.4912 -0.1221 -0.8624 +vn -0.4912 -0.1220 -0.8624 +vn 0.2535 0.0708 0.9648 +vn -0.5555 0.0381 0.8307 +vn -0.5554 0.0381 0.8307 +vn -0.9556 -0.0089 0.2946 +vn -0.7929 -0.0632 -0.6061 +vn -0.6570 -0.0687 -0.7508 +vn 0.5858 0.0703 0.8074 +vn 0.7279 0.0663 0.6825 +vn 0.9112 -0.0001 -0.4119 +vn 0.2016 -0.0582 -0.9777 +vn -0.2535 -0.0708 -0.9648 +vn 0.5170 -0.0800 0.8522 +vn 0.4688 -0.0088 0.8832 +vn 0.3933 0.0928 0.9147 +vn 0.4183 0.0603 0.9063 +vn 0.1692 0.3454 0.9231 +vn 0.2701 0.2393 0.9326 +vn 0.0811 0.4292 0.8996 +vn 0.0812 0.4291 0.8996 +vn -0.6159 0.7718 0.1577 +vn -0.6160 0.7718 0.1577 +vn -0.7131 0.5120 -0.4790 +vn -0.6947 0.7130 -0.0953 +vn -0.6737 0.3788 -0.6345 +vn -0.5611 0.1509 -0.8139 +vn -0.5170 0.0800 -0.8522 +vn -0.5129 0.0737 -0.8553 +vn -0.4183 -0.0603 -0.9063 +vn -0.3933 -0.0928 -0.9147 +vn -0.2701 -0.2393 -0.9326 +vn -0.1692 -0.3453 -0.9231 +vn -0.0812 -0.4291 -0.8996 +vn -0.0811 -0.4292 -0.8996 +vn 0.6737 -0.3788 0.6345 +vn 0.7131 -0.5120 0.4790 +vn 0.6947 -0.7130 0.0953 +vn 0.6160 -0.7718 -0.1576 +vn 0.6160 -0.7718 -0.1577 +vn 0.4637 -0.0016 0.8860 +vn 0.5129 -0.0737 0.8553 +vn 0.6140 -0.2461 0.7500 +vn 0.6333 -0.2851 0.7195 +vn 0.6946 -0.7130 0.0951 +vn 0.4998 -0.7753 -0.3862 +vn 0.0788 -0.5620 -0.8234 +vn -0.1692 -0.3454 -0.9231 +vn -0.3419 -0.1565 -0.9266 +vn 0.3419 0.1565 0.9266 +vn 0.1693 0.3453 0.9231 +vn -0.5000 0.7753 0.3859 +vn -0.0788 0.5620 0.8234 +vn -0.6947 0.7130 -0.0954 +vn -0.6140 0.2461 -0.7500 +vn -0.6333 0.2851 -0.7195 +vn -0.4637 0.0016 -0.8860 +vn 0.6947 -0.7129 0.0955 +vn 0.5001 -0.7753 -0.3858 +vn 0.0789 -0.5621 -0.8233 +vn -0.1693 -0.3453 -0.9231 +vn 0.1691 0.3454 0.9231 +vn -0.4997 0.7752 0.3864 +vn -0.6946 0.7131 -0.0949 +vn -0.6139 0.2461 -0.7500 +vn -0.6333 0.2850 -0.7195 +vn 0.2536 0.0708 0.9647 +vn -0.9113 0.0001 0.4118 +vn -0.5877 -0.0703 -0.8060 +vn 0.5877 0.0703 0.8061 +vn 0.5116 0.0713 0.8562 +vn 0.9557 0.0089 -0.2944 +vn 0.9114 -0.0001 -0.4116 +vn 0.8412 0.2735 0.4664 +vn 0.8412 0.2735 0.4665 +vn 0.8413 0.2735 0.4663 +vn -0.8412 -0.2735 -0.4664 +vn -0.8413 -0.2735 -0.4663 +vn 0.8015 -0.4134 0.4320 +vn 0.8014 -0.4134 0.4323 +vn 0.8014 -0.4135 0.4321 +vn 0.8015 -0.4135 0.4320 +vn 0.8015 -0.4135 0.4319 +vn 0.8016 -0.4127 0.4325 +vn -0.8015 0.4135 -0.4321 +vn -0.8014 0.4132 -0.4324 +vn -0.8015 0.4133 -0.4322 +vn -0.8015 0.4136 -0.4319 +vn -0.8015 0.4135 -0.4320 +vn -0.8015 0.4134 -0.4320 +vn -0.8014 0.4136 -0.4321 +vn -0.8749 -0.0575 -0.4809 +vn -0.1927 -0.9341 -0.3007 +vn 0.4005 -0.0903 0.9118 +vn 0.3990 0.3542 0.8458 +vn 0.3996 0.3482 0.8480 +vn -0.3138 -0.7353 -0.6007 +vn -0.3138 -0.7353 -0.6008 +vn -0.4069 -0.2517 -0.8781 +vn -0.4102 -0.1349 -0.9020 +vn -0.4080 -0.2291 -0.8837 +vn -0.3999 -0.3451 -0.8491 +vn -0.9134 -0.0112 -0.4069 +vn -0.9745 0.1103 -0.1956 +vn -0.9745 0.1103 -0.1955 +vn -0.9560 0.0593 -0.2872 +vn -0.8736 -0.0588 -0.4831 +vn -0.8743 -0.0581 -0.4820 +vn -0.8742 -0.0581 -0.4820 +vn -0.8736 -0.0589 -0.4832 +vn 0.8141 0.1157 0.5690 +vn 0.7757 0.1470 0.6138 +vn 0.8415 0.0911 0.5325 +vn 0.8743 0.0581 0.4820 +vn 0.8736 0.0588 0.4830 +vn 0.8742 0.0581 0.4820 +vn 0.8736 0.0589 0.4832 +vn 0.8749 0.0574 0.4810 +vn 0.8741 0.0582 0.4822 +vn 0.8734 0.0590 0.4834 +vn 0.9562 -0.0597 0.2867 +vn 0.9141 0.0102 0.4054 +vn 0.9745 -0.1105 0.1951 +vn 0.9744 -0.1103 0.1959 +vn -0.0322 -0.4505 -0.8922 +vn -0.0323 -0.4505 -0.8922 +vn -0.0306 -0.4506 -0.8922 +vn -0.0305 -0.4507 -0.8922 +vn -0.8734 -0.0590 -0.4834 +vn -0.8742 -0.0582 -0.4822 +vn -0.8126 -0.1171 -0.5710 +vn -0.8388 -0.0937 -0.5363 +vn -0.7756 -0.1470 -0.6139 +vn -0.7757 -0.1470 -0.6137 +vn -0.3687 0.3076 -0.8772 +vn -0.3645 0.3110 -0.8778 +vn -0.3682 0.3081 -0.8772 +vn -0.3692 0.3069 -0.8772 +vn -0.3699 0.3061 -0.8772 +vn -0.3556 0.3146 -0.8801 +vn -0.3618 0.3044 -0.8812 +vn -0.3621 0.3039 -0.8812 +vn -0.4976 -0.3081 -0.8109 +vn -0.5703 -0.2738 -0.7744 +vn -0.5699 -0.2739 -0.7747 +vn -0.4776 -0.3168 -0.8195 +vn -0.3996 -0.3482 -0.8480 +vn 0.4018 0.3247 0.8562 +vn -0.3235 0.5023 -0.8019 +vn -0.3568 0.3669 -0.8591 +vn -0.2355 0.7364 -0.6342 +vn -0.0811 0.9464 -0.3127 +vn 0.1741 0.9482 0.2657 +vn 0.2998 0.7602 0.5763 +vn 0.3529 0.5991 0.7187 +vn 0.3774 0.4829 0.7902 +vn -0.2358 0.7357 -0.6349 +vn -0.3232 0.5032 -0.8014 +vn 0.1735 0.9487 0.2642 +vn -0.0805 0.9468 -0.3115 +vn 0.3528 0.5995 0.7184 +vn 0.2999 0.7600 0.5766 +vn 0.3941 0.3635 0.8442 +vn 0.3975 0.3288 0.8567 +vn 0.3988 0.3139 0.8616 +vn 0.4047 0.2176 0.8882 +vn 0.4051 0.2062 0.8907 +vn 0.4062 0.0797 0.9103 +vn 0.4062 0.0831 0.9100 +vn 0.3994 -0.0650 0.9145 +vn 0.4008 -0.0446 0.9151 +vn 0.3796 -0.2401 0.8935 +vn 0.3864 -0.1934 0.9018 +vn 0.3691 -0.3158 0.8741 +vn 0.3697 -0.3144 0.8744 +vn 0.3683 -0.3215 0.8723 +vn 0.3694 -0.3157 0.8740 +vn 0.3707 -0.3061 0.8769 +vn 0.3809 -0.2348 0.8943 +vn 0.3865 -0.1905 0.9024 +vn 0.3993 -0.0652 0.9145 +vn 0.4008 -0.0444 0.9151 +vn 0.4062 0.0795 0.9103 +vn 0.4063 0.0832 0.9100 +vn 0.4051 0.2063 0.8907 +vn 0.8764 0.0558 0.4782 +vn 0.8766 0.0556 0.4780 +vn 0.8766 0.0557 0.4780 +vn 0.8775 0.0534 0.4765 +vn 0.8759 0.0556 0.4793 +vn 0.8757 0.0545 0.4797 +vn 0.8743 0.0561 0.4821 +vn -0.8722 -0.0603 -0.4854 +vn -0.8723 -0.0601 -0.4853 +vn -0.8722 -0.0602 -0.4854 +vn -0.8732 -0.0580 -0.4838 +vn -0.8719 -0.0598 -0.4860 +vn -0.8715 -0.0593 -0.4867 +vn -0.8702 -0.0607 -0.4889 +vn -0.8702 -0.0608 -0.4889 +vn -0.3690 0.3041 -0.8783 +vn -0.3692 0.3150 -0.8743 +vn -0.3704 0.3026 -0.8782 +vn -0.3699 0.3134 -0.8746 +vn -0.3683 0.3218 -0.8723 +vn -0.3694 0.3145 -0.8744 +vn -0.3720 0.3021 -0.8777 +vn -0.3719 0.2941 -0.8805 +vn -0.3706 0.2956 -0.8805 +vn -0.8758 -0.0547 -0.4795 +vn -0.8739 -0.0577 -0.4826 +vn -0.8736 -0.0569 -0.4832 +vn -0.8723 -0.0584 -0.4855 +vn 0.8739 0.0577 0.4826 +vn 0.8759 0.0546 0.4794 +vn 0.8736 0.0569 0.4832 +vn 0.8723 0.0584 0.4855 +vn 0.6255 0.2446 0.7409 +vn 0.5703 0.2737 0.7745 +vn 0.6291 0.2426 0.7385 +vn 0.6811 0.2120 0.7008 +vn 0.1663 0.4210 0.8917 +vn 0.2849 0.3877 0.8767 +vn -0.5894 0.4656 0.6602 +vn -0.1517 0.4765 0.8660 +vn -0.7503 0.4226 0.5084 +vn -0.3830 0.2954 -0.8753 +vn -0.3807 0.3040 -0.8733 +vn -0.3847 0.2987 -0.8734 +vn -0.3781 0.2693 -0.8857 +vn -0.3751 0.2842 -0.8823 +vn -0.3721 0.3010 -0.8780 +vn -0.3740 0.3056 -0.8756 +vn -0.3736 0.3053 -0.8759 +vn -0.3732 0.3049 -0.8762 +vn -0.3728 0.3048 -0.8764 +vn -0.3707 0.3090 -0.8759 +vn -0.4092 -0.0569 -0.9107 +vn -0.3695 0.3155 -0.8740 +vn -0.3938 0.1549 -0.9060 +vn 0.2751 0.8200 0.5020 +vn -0.1525 0.8718 -0.4655 +vn 0.4070 0.2508 0.8783 +vn 0.4027 0.3136 0.8599 +vn 0.3938 -0.1549 0.9060 +vn 0.3695 -0.3155 0.8740 +vn 0.1526 -0.8718 0.4655 +vn -0.2751 -0.8200 -0.5019 +vn -0.3778 -0.5033 -0.7772 +vn 0.3522 -0.3982 0.8470 +vn 0.3527 -0.3960 0.8478 +vn 0.3523 -0.3980 0.8470 +vn 0.3520 -0.3990 0.8467 +vn 0.3521 -0.3988 0.8468 +vn 0.3523 -0.3980 0.8471 +vn 0.3521 -0.3987 0.8468 +vn 0.3523 -0.3978 0.8471 +vn 0.3523 -0.3976 0.8472 +vn 0.3522 -0.3985 0.8469 +vn 0.3514 -0.4019 0.8456 +vn -0.3521 0.3986 -0.8469 +vn -0.3519 0.3985 -0.8470 +vn -0.3512 0.3988 -0.8471 +vn -0.3524 0.3985 -0.8468 +vn -0.3523 0.3982 -0.8469 +vn -0.3520 0.3985 -0.8469 +vn -0.3523 0.3985 -0.8468 +vn -0.3522 0.3982 -0.8470 +vn -0.3521 0.3987 -0.8468 +vn -0.3522 0.3988 -0.8467 +vn -0.3527 0.3975 -0.8471 +vn -0.3505 0.4011 -0.8464 +vn 0.4032 0.3022 0.8637 +vn 0.2154 0.3543 0.9100 +vn 0.2200 0.3366 0.9156 +vn 0.3731 0.3014 0.8775 +vn 0.3369 0.2965 0.8937 +vn 0.5200 0.2606 0.8134 +vn 0.1758 0.3328 0.9265 +vn 0.5349 0.2354 0.8115 +vn 0.5192 0.2509 0.8170 +vn 0.6720 0.1809 0.7181 +vn 0.6896 0.1608 0.7062 +vn 0.7564 0.1170 0.6436 +vn 0.7388 0.1421 0.6587 +vn 0.8874 0.0058 0.4610 +vn 0.8854 0.0295 0.4639 +vn 0.6743 0.1910 0.7133 +vn 0.9564 -0.2533 -0.1455 +vn 0.9487 -0.2780 -0.1506 +vn 0.7313 0.1597 0.6631 +vn 0.3050 -0.4446 -0.8422 +vn 0.8630 0.0673 0.5008 +vn 0.1086 -0.4313 -0.8956 +vn 0.9870 -0.1270 0.0982 +vn -0.2112 -0.3651 -0.9067 +vn 0.4656 -0.4158 -0.7812 +vn -0.2155 -0.3543 -0.9100 +vn -0.1616 -0.3795 -0.9110 +vn -0.8285 0.2919 0.4779 +vn -0.6967 0.3691 0.6151 +vn -0.9895 0.0685 -0.1271 +vn -0.9518 0.2178 0.2162 +vn -0.7040 0.3790 0.6006 +vn -0.8636 0.3168 0.3923 +vn -0.9001 -0.0528 -0.4324 +vn -0.8717 -0.0872 -0.4822 +vn -0.9117 -0.0201 -0.4103 +vn -0.7469 -0.1607 -0.6452 +vn -0.7519 -0.1473 -0.6426 +vn -0.6021 -0.2315 -0.7641 +vn -0.7499 -0.1639 -0.6409 +vn -0.6011 -0.2265 -0.7664 +vn -0.6185 -0.2282 -0.7520 +vn -0.5203 -0.2636 -0.8123 +vn -0.5200 -0.2606 -0.8135 +vn -0.5368 -0.2624 -0.8019 +vn 0.6416 0.0703 0.7638 +vn 0.5098 0.0738 0.8571 +vn 0.5509 0.0710 0.8316 +vn 0.6610 0.0686 0.7473 +vn 0.9322 0.0511 0.3584 +vn 0.9200 0.0527 0.3885 +vn 0.9979 0.0332 0.0558 +vn 0.9979 0.0332 0.0557 +vn -0.3619 -0.0717 -0.9294 +vn -0.1348 -0.0688 -0.9885 +vn -0.1347 -0.0688 -0.9885 +vn -0.3438 -0.0716 -0.9363 +vn -0.5527 -0.0708 -0.8304 +vn -0.9199 -0.0527 -0.3885 +vn -0.7566 -0.0651 -0.6506 +vn -0.9322 -0.0511 -0.3584 +vn -0.9175 -0.0010 0.3978 +vn -0.6118 0.0285 0.7905 +vn -0.5413 0.0390 0.8400 +vn 0.1343 0.0625 0.9890 +vn 0.6613 0.0610 0.7477 +vn 0.5527 0.0604 0.8312 +vn 0.6605 0.0610 0.7483 +vn 0.9350 0.0539 0.3504 +vn 0.9156 0.0553 0.3983 +vn 0.9975 0.0429 0.0563 +vn 0.9975 0.0429 0.0562 +vn -0.3647 -0.0573 -0.9294 +vn -0.1334 -0.0507 -0.9898 +vn -0.3403 -0.0568 -0.9386 +vn -0.5527 -0.0604 -0.8312 +vn -0.5528 -0.0604 -0.8312 +vn -0.7568 -0.0604 -0.6509 +vn -0.9350 -0.0539 -0.3504 +vn -0.9156 -0.0553 -0.3984 +vn -0.5755 0.0142 0.8177 +vn -0.7683 -0.0018 0.6401 +vn 0.1334 0.0507 0.9898 +vn -0.2983 0.5871 -0.7525 +vn -0.2983 0.5872 -0.7525 +vn -0.4099 -0.1662 -0.8968 +vn -0.4077 -0.2369 -0.8819 +vn -0.4082 -0.2242 -0.8849 +vn -0.4042 -0.2945 -0.8660 +vn -0.3949 0.1453 -0.9072 +vn -0.4019 0.0741 -0.9127 +vn -0.3898 0.1874 -0.9016 +vn -0.3792 0.2600 -0.8880 +vn -0.3792 0.2599 -0.8881 +vn 0.2917 0.7868 0.5439 +vn 0.3250 0.7051 0.6302 +vn 0.3602 0.5858 0.7260 +vn 0.3795 0.4939 0.7823 +vn 0.4092 0.0569 0.9107 +vn -0.3938 0.1550 -0.9060 +vn -0.4070 -0.2508 -0.8783 +vn -0.4027 -0.3136 -0.8599 +vn 0.1526 -0.8718 0.4656 +vn 0.3151 -0.5362 0.7831 +vn -0.2545 -0.1131 -0.9604 +vn 0.1752 -0.1146 -0.9778 +vn 0.1523 -0.1151 -0.9816 +vn 0.9469 -0.0365 -0.3194 +vn 0.9215 -0.0443 -0.3859 +vn 0.8936 0.0533 0.4456 +vn 0.9013 0.0515 0.4300 +vn 0.7265 0.0809 0.6824 +vn 0.7305 0.0804 0.6782 +vn 0.5854 0.0952 0.8051 +vn 0.5882 0.0950 0.8031 +vn 0.3864 0.1080 0.9160 +vn 0.3877 0.1079 0.9155 +vn -0.1523 0.1151 0.9816 +vn -0.1753 0.1146 0.9778 +vn -0.9215 0.0443 0.3859 +vn -0.9469 0.0365 0.3194 +vn -0.9013 -0.0515 -0.4300 +vn -0.8936 -0.0533 -0.4456 +vn -0.7305 -0.0804 -0.6782 +vn -0.7265 -0.0809 -0.6824 +vn -0.5882 -0.0950 -0.8031 +vn -0.5854 -0.0952 -0.8051 +vn -0.5120 -0.1007 -0.8531 +vn 0.8728 0.4815 0.0804 +vn 0.8728 0.4814 0.0805 +vn 0.8724 0.4822 0.0794 +vn 0.8724 0.4823 0.0794 +vn 0.9020 0.1597 0.4012 +vn 0.9020 0.1599 0.4010 +vn 0.8402 -0.0295 0.5415 +vn 0.8401 -0.0297 0.5416 +vn 0.7422 -0.1982 0.6402 +vn 0.7419 -0.1985 0.6404 +vn 0.5339 -0.4281 0.7292 +vn 0.5335 -0.4284 0.7293 +vn -0.1531 -0.7647 0.6259 +vn -0.1541 -0.7649 0.6255 +vn -0.1540 -0.7649 0.6255 +vn -0.8724 -0.4822 -0.0796 +vn -0.8728 -0.4814 -0.0806 +vn -0.8728 -0.4815 -0.0806 +vn -0.9020 -0.1599 -0.4010 +vn -0.9020 -0.1597 -0.4012 +vn -0.8401 0.0297 -0.5416 +vn -0.8402 0.0295 -0.5415 +vn -0.7419 0.1984 -0.6404 +vn -0.7422 0.1981 -0.6403 +vn -0.7419 0.1984 -0.6405 +vn -0.5335 0.4282 -0.7294 +vn -0.5339 0.4279 -0.7293 +vn 0.1539 0.7647 -0.6258 +vn 0.1529 0.7645 -0.6263 +vn 0.1528 0.7645 -0.6263 +vn 0.6570 0.0876 0.7488 +vn 0.7263 0.0802 0.6827 +vn 0.7306 0.0797 0.6781 +vn 0.8935 0.0535 0.4459 +vn 0.9015 0.0516 0.4296 +vn 0.9471 -0.0341 -0.3191 +vn 0.9211 -0.0420 -0.3870 +vn 0.1749 -0.1117 -0.9782 +vn 0.1525 -0.1122 -0.9819 +vn -0.3879 -0.1060 -0.9156 +vn -0.3862 -0.1061 -0.9163 +vn -0.5853 -0.0939 -0.8054 +vn -0.5883 -0.0936 -0.8032 +vn -0.7263 -0.0802 -0.6827 +vn -0.7306 -0.0797 -0.6781 +vn -0.8935 -0.0535 -0.4459 +vn -0.9015 -0.0516 -0.4296 +vn -0.9471 0.0341 0.3191 +vn -0.9211 0.0420 0.3870 +vn -0.1749 0.1117 0.9782 +vn -0.1524 0.1122 0.9819 +vn 0.3879 0.1060 0.9156 +vn 0.3862 0.1061 0.9163 +vn 0.5119 0.0992 0.8533 +vn 0.6570 0.0890 0.7486 +vn 0.7305 0.0807 0.6782 +vn 0.7265 0.0812 0.6823 +vn 0.9013 0.0514 0.4301 +vn 0.8937 0.0532 0.4455 +vn 0.9216 -0.0450 -0.3855 +vn 0.9469 -0.0372 -0.3195 +vn 0.1523 -0.1160 -0.9815 +vn 0.1754 -0.1155 -0.9777 +vn -0.3864 -0.1086 -0.9159 +vn -0.3876 -0.1085 -0.9154 +vn -0.5855 -0.0956 -0.8050 +vn -0.5882 -0.0954 -0.8031 +vn -0.7265 -0.0812 -0.6823 +vn -0.7305 -0.0807 -0.6782 +vn -0.8937 -0.0532 -0.4455 +vn -0.9013 -0.0514 -0.4301 +vn -0.9469 0.0372 0.3194 +vn -0.9216 0.0450 0.3855 +vn -0.1754 0.1155 0.9777 +vn -0.1523 0.1160 0.9815 +vn 0.3876 0.1085 0.9154 +vn 0.3864 0.1086 0.9159 +vn 0.5120 0.1012 0.8530 +vn -0.1526 0.8718 -0.4655 +vn 0.2751 0.8200 0.5019 +vn 0.1525 -0.8718 0.4655 +vn 0.3151 -0.5363 0.7830 +vn 0.4092 0.0568 0.9107 +vn -0.1526 0.8718 -0.4656 +vn -0.4091 -0.1999 -0.8903 +vn -0.4083 -0.2218 -0.8855 +vn -0.4050 -0.2838 -0.8692 +vn -0.2655 -0.8374 -0.4778 +vn -0.3916 -0.4170 -0.8202 +vn -0.7813 -0.0641 -0.6209 +vn -0.7877 -0.0288 -0.6153 +vn -0.8831 -0.0559 -0.4659 +vn -0.8836 -0.0574 -0.4648 +vn -0.8834 -0.0547 -0.4655 +vn -0.9450 -0.0491 -0.3235 +vn -0.9370 -0.0865 -0.3385 +vn -0.8054 0.0083 -0.5926 +vn -0.7845 -0.0981 -0.6124 +vn -0.9413 -0.0129 -0.3374 +vn -0.8827 -0.0563 -0.4666 +vn -0.9106 0.0073 0.4132 +vn -0.8363 0.0444 -0.5465 +vn -0.8834 -0.0562 -0.4652 +vn -0.9189 -0.1162 -0.3769 +vn -0.9157 0.1519 0.3722 +vn -0.9179 -0.1489 0.3678 +vn -0.7982 -0.1311 -0.5879 +vn -0.9266 0.0137 -0.3759 +vn -0.9325 0.2896 0.2159 +vn -0.8813 -0.0533 -0.4695 +vn -0.5040 0.3162 0.8037 +vn -0.4285 0.0336 0.9029 +vn -0.7414 0.5278 0.4144 +vn -0.8246 -0.1606 -0.5424 +vn -0.9037 0.0261 -0.4274 +vn -0.9319 0.3497 -0.0960 +vn -0.8759 -0.0543 -0.4795 +vn -0.8502 0.5061 -0.1451 +vn -0.8635 -0.1794 -0.4713 +vn -0.8772 0.0241 -0.4796 +vn -0.8739 -0.0682 -0.4814 +vn -0.8664 0.2702 -0.4198 +vn -0.8798 -0.0595 -0.4716 +vn -0.7997 0.3620 -0.4791 +vn -0.9085 -0.1772 -0.3784 +vn -0.8517 0.0108 -0.5239 +vn -0.8944 -0.1331 -0.4270 +vn -0.8838 -0.0802 -0.4609 +vn -0.7959 0.1496 -0.5867 +vn -0.7340 0.2301 -0.6390 +vn -0.9475 -0.1469 -0.2838 +vn -0.9332 -0.3065 0.1875 +vn -0.8310 -0.0102 -0.5562 +vn -0.8992 -0.0760 -0.4309 +vn -0.7561 0.0597 -0.6517 +vn -0.5797 -0.2656 0.7704 +vn -0.6834 0.1162 -0.7208 +vn -0.9712 -0.0948 -0.2184 +vn -0.8172 -0.0354 -0.5752 +vn -0.9088 -0.0552 -0.4135 +vn -0.7356 -0.0075 -0.6774 +vn -0.6538 0.0183 -0.7565 +vn -0.9793 -0.0396 -0.1986 +vn -0.8116 -0.0621 -0.5809 +vn -0.9038 -0.0334 -0.4267 +vn -0.7279 -0.0659 -0.6825 +vn -0.8787 0.0719 -0.4718 +vn -0.6432 -0.0690 -0.7626 +vn -0.9763 0.0116 -0.2163 +vn -0.8145 -0.0879 -0.5735 +vn -0.8891 -0.0289 -0.4568 +vn -0.7320 -0.1218 -0.6704 +vn -0.6495 -0.1527 -0.7448 +vn -0.9588 0.0569 -0.2784 +vn -0.8255 -0.1107 -0.5534 +vn -0.8762 -0.0411 -0.4802 +vn -0.7481 -0.1802 -0.6386 +vn -0.6736 -0.2389 -0.6994 +vn -0.9239 0.0789 -0.3744 +vn -0.8440 -0.1278 -0.5209 +vn -0.8745 -0.0571 -0.4817 +vn -0.7802 -0.2497 -0.5735 +vn -0.7175 -0.3311 -0.6128 +vn -0.8680 -0.1362 -0.4775 +vn -0.8392 -0.3346 -0.4287 +vn -0.7776 -0.4264 -0.4621 +vn -0.9129 -0.3831 -0.1406 +vn -0.8382 -0.5141 -0.1818 +vn -0.8026 -0.5019 0.3223 +vn 0.7982 0.1312 0.5879 +vn 0.8246 0.1606 0.5424 +vn 0.8834 0.0562 0.4652 +vn 0.8835 0.0574 0.4648 +vn 0.8813 0.0533 0.4695 +vn 0.9266 -0.0138 0.3759 +vn 0.9037 -0.0261 0.4274 +vn 0.8635 0.1794 0.4713 +vn 0.7845 0.0981 0.6124 +vn 0.9413 0.0129 0.3374 +vn 0.8759 0.0543 0.4795 +vn 0.9325 -0.2897 -0.2158 +vn 0.9085 0.1772 0.3784 +vn 0.8831 0.0559 0.4659 +vn 0.8772 -0.0241 0.4796 +vn 0.9157 -0.1519 -0.3722 +vn 0.9319 -0.3498 0.0959 +vn 0.7813 0.0641 0.6209 +vn 0.9450 0.0491 0.3234 +vn 0.9106 -0.0073 -0.4131 +vn 0.8834 0.0547 0.4655 +vn 0.5039 -0.3162 -0.8038 +vn 0.7415 -0.5278 -0.4142 +vn 0.4286 -0.0336 -0.9029 +vn 0.7877 0.0288 0.6153 +vn 0.9370 0.0865 0.3385 +vn 0.9179 0.1489 -0.3678 +vn 0.8827 0.0563 0.4666 +vn 0.5797 0.2656 -0.7703 +vn 0.8054 -0.0083 0.5927 +vn 0.9189 0.1162 0.3769 +vn 0.8798 0.0595 0.4716 +vn 0.9332 0.3065 -0.1876 +vn 0.8739 0.0682 0.4814 +vn 0.8026 0.5018 -0.3225 +vn 0.8363 -0.0444 0.5465 +vn 0.8944 0.1331 0.4270 +vn 0.8517 -0.0108 0.5239 +vn 0.8745 0.0571 0.4817 +vn 0.9129 0.3831 0.1408 +vn 0.8382 0.5141 0.1819 +vn 0.8788 -0.0719 0.4718 +vn 0.8664 -0.2702 0.4199 +vn 0.8680 0.1362 0.4775 +vn 0.8762 0.0412 0.4802 +vn 0.8392 0.3346 0.4287 +vn 0.8502 -0.5061 0.1450 +vn 0.7776 0.4264 0.4621 +vn 0.9239 -0.0789 0.3743 +vn 0.8440 0.1278 0.5209 +vn 0.8891 0.0289 0.4568 +vn 0.7802 0.2497 0.5735 +vn 0.7175 0.3310 0.6129 +vn 0.9587 -0.0570 0.2785 +vn 0.8255 0.1107 0.5534 +vn 0.9038 0.0334 0.4267 +vn 0.7481 0.1803 0.6386 +vn 0.9476 0.1469 0.2837 +vn 0.6737 0.2390 0.6993 +vn 0.9763 -0.0116 0.2163 +vn 0.8144 0.0879 0.5735 +vn 0.9088 0.0553 0.4135 +vn 0.7320 0.1218 0.6704 +vn 0.6495 0.1527 0.7449 +vn 0.9793 0.0397 0.1986 +vn 0.8116 0.0621 0.5809 +vn 0.8992 0.0760 0.4309 +vn 0.7279 0.0659 0.6825 +vn 0.6432 0.0690 0.7626 +vn 0.9713 0.0948 0.2183 +vn 0.8172 0.0354 0.5752 +vn 0.8838 0.0802 0.4609 +vn 0.7355 0.0075 0.6774 +vn 0.6538 -0.0183 0.7565 +vn 0.8310 0.0102 0.5562 +vn 0.7561 -0.0597 0.6517 +vn 0.6834 -0.1161 0.7208 +vn 0.7959 -0.1496 0.5867 +vn 0.7340 -0.2301 0.6389 +vn 0.7997 -0.3619 0.4791 +vn -0.7833 -0.1441 -0.6047 +vn -0.7676 -0.1048 -0.6323 +vn -0.8709 -0.0701 -0.4864 +vn -0.8736 -0.0715 -0.4814 +vn -0.8683 -0.0654 -0.4917 +vn -0.9310 0.0180 -0.3645 +vn -0.9456 -0.0111 -0.3252 +vn -0.7639 -0.0649 -0.6421 +vn -0.8139 -0.1805 -0.5523 +vn -0.9069 0.0328 -0.4200 +vn -0.8673 -0.0574 -0.4945 +vn -0.8938 0.3311 0.3025 +vn -0.7712 -0.0234 -0.6361 +vn -0.8741 -0.0740 -0.4801 +vn -0.9489 -0.0481 -0.3118 +vn -0.9106 0.4126 -0.0246 +vn -0.8705 0.1762 0.4595 +vn -0.8600 -0.2061 -0.4668 +vn -0.8777 0.0311 -0.4782 +vn -0.8572 0.3205 -0.4031 +vn -0.8783 -0.0876 -0.4701 +vn -0.8086 0.5821 -0.0857 +vn -0.6204 0.5738 0.5346 +vn -0.7783 0.4091 -0.4763 +vn -0.9141 -0.2070 -0.3486 +vn -0.8498 0.0152 -0.5268 +vn -0.7841 0.1752 -0.5954 +vn -0.8950 -0.0976 -0.4352 +vn -0.7147 0.2544 -0.6515 +vn -0.9601 -0.1709 -0.2214 +vn -0.8284 -0.0083 -0.5601 +vn -0.9170 -0.0869 -0.3894 +vn -0.7421 0.0724 -0.6664 +vn -0.8688 -0.0495 -0.4927 +vn -0.6651 0.1274 -0.7358 +vn -0.9860 -0.1040 -0.1301 +vn -0.8146 -0.0348 -0.5790 +vn -0.9414 -0.0866 -0.3261 +vn -0.9304 -0.0531 -0.3627 +vn -0.7202 -0.0022 -0.6937 +vn -0.6366 0.0225 -0.7709 +vn -0.9942 -0.0326 -0.1024 +vn -0.8635 0.0137 0.5041 +vn -0.8091 -0.0623 -0.5844 +vn -0.9235 -0.0178 -0.3832 +vn -0.7121 -0.0664 -0.6990 +vn -0.3531 0.3206 0.8789 +vn -0.6264 -0.0695 -0.7764 +vn -0.9915 0.0328 -0.1259 +vn -0.8118 -0.0888 -0.5771 +vn -0.9029 -0.0075 -0.4298 +vn -0.7165 -0.1278 -0.6858 +vn -0.6327 -0.1576 -0.7582 +vn -0.9732 0.0905 -0.2116 +vn -0.8229 -0.1127 -0.5570 +vn -0.8830 -0.0194 -0.4690 +vn -0.7338 -0.1925 -0.6515 +vn -0.7915 0.0207 -0.6108 +vn -0.6561 -0.2497 -0.7121 +vn -0.9328 0.1154 -0.3413 +vn -0.8417 -0.1319 -0.5235 +vn -0.8748 -0.0371 -0.4830 +vn -0.7677 -0.2712 -0.5806 +vn -0.6991 -0.3519 -0.6224 +vn -0.8783 0.1023 -0.4670 +vn -0.8676 -0.1426 -0.4764 +vn -0.8740 -0.0424 -0.4840 +vn -0.8296 -0.3723 -0.4160 +vn -0.7582 -0.4633 -0.4587 +vn -0.8275 0.0654 -0.5576 +vn -0.8968 -0.1389 -0.4200 +vn -0.8715 -0.0444 -0.4883 +vn -0.8984 -0.4325 -0.0762 +vn -0.8097 -0.5709 -0.1359 +vn -0.9231 -0.1192 -0.3656 +vn -0.8993 -0.3358 0.2803 +vn -0.7152 -0.5410 0.4425 +vn -0.8743 -0.1593 0.4584 +vn -0.4326 -0.2567 0.8643 +vn -0.2828 0.0425 0.9582 +vn 0.9732 -0.0905 0.2116 +vn 0.9328 -0.1154 0.3413 +vn 0.9029 0.0075 0.4298 +vn 0.9235 0.0178 0.3832 +vn 0.8830 0.0194 0.4690 +vn 0.8229 0.1127 0.5570 +vn 0.8417 0.1319 0.5235 +vn 0.8783 -0.1023 0.4670 +vn 0.9915 -0.0328 0.1259 +vn 0.8118 0.0888 0.5771 +vn 0.8748 0.0371 0.4830 +vn 0.7338 0.1925 0.6515 +vn 0.8275 -0.0654 0.5576 +vn 0.9304 0.0531 0.3627 +vn 0.8676 0.1426 0.4764 +vn 0.7165 0.1278 0.6858 +vn 0.7677 0.2712 0.5806 +vn 0.9942 0.0326 0.1024 +vn 0.8090 0.0623 0.5844 +vn 0.7121 0.0664 0.6990 +vn 0.9170 0.0869 0.3894 +vn 0.6327 0.1576 0.7582 +vn 0.6562 0.2497 0.7121 +vn 0.6264 0.0695 0.7764 +vn 0.9860 0.1040 0.1301 +vn 0.8146 0.0348 0.5790 +vn 0.7202 0.0022 0.6937 +vn 0.8950 0.0976 0.4352 +vn 0.6366 -0.0225 0.7709 +vn 0.9601 0.1709 0.2214 +vn 0.8284 0.0083 0.5601 +vn 0.8783 0.0876 0.4701 +vn 0.7421 -0.0724 0.6664 +vn 0.8740 0.0424 0.4840 +vn 0.6651 -0.1274 0.7358 +vn 0.9141 0.2070 0.3486 +vn 0.8498 -0.0152 0.5268 +vn 0.8968 0.1389 0.4200 +vn 0.8741 0.0740 0.4801 +vn 0.7841 -0.1752 0.5954 +vn 0.7147 -0.2544 0.6515 +vn 0.8600 0.2061 0.4668 +vn 0.8296 0.3723 0.4160 +vn 0.8777 -0.0311 0.4782 +vn 0.8736 0.0715 0.4814 +vn 0.8572 -0.3205 0.4031 +vn 0.6991 0.3519 0.6224 +vn 0.7783 -0.4091 0.4763 +vn 0.8139 0.1805 0.5523 +vn 0.9069 -0.0328 0.4200 +vn 0.8709 0.0701 0.4864 +vn 0.9106 -0.4126 0.0246 +vn 0.8086 -0.5821 0.0856 +vn 0.7833 0.1441 0.6047 +vn 0.9310 -0.0180 0.3645 +vn 0.8683 0.0654 0.4917 +vn 0.8938 -0.3311 -0.3025 +vn 0.7915 -0.0207 0.6108 +vn 0.6205 -0.5738 -0.5345 +vn 0.7676 0.1048 0.6323 +vn 0.9456 0.0111 0.3253 +vn 0.8673 0.0574 0.4945 +vn 0.8705 -0.1762 -0.4595 +vn 0.3531 -0.3206 -0.8790 +vn 0.7639 0.0649 0.6421 +vn 0.9489 0.0481 0.3119 +vn 0.8688 0.0495 0.4927 +vn 0.8635 -0.0137 -0.5041 +vn 0.2828 -0.0425 -0.9582 +vn 0.7712 0.0234 0.6361 +vn 0.9414 0.0866 0.3261 +vn 0.8715 0.0444 0.4883 +vn 0.8744 0.1593 -0.4584 +vn 0.4326 0.2567 -0.8643 +vn 0.9231 0.1192 0.3656 +vn 0.8992 0.3359 -0.2803 +vn 0.7152 0.5410 -0.4425 +vn 0.8984 0.4325 0.0762 +vn 0.8096 0.5710 0.1359 +vn 0.7582 0.4633 0.4587 +vn -0.8417 -0.1319 -0.5236 +vn -0.8090 -0.0623 -0.5844 +vn -0.6562 -0.2497 -0.7121 +vn -0.8097 -0.5710 -0.1359 +vn -0.8992 -0.3358 0.2803 +vn -0.9489 -0.0481 -0.3119 +vn -0.9456 -0.0111 -0.3253 +vn -0.3530 0.3206 0.8790 +vn -0.6205 0.5738 0.5345 +vn -0.6652 0.1274 -0.7358 +vn 0.8297 0.3723 0.4160 +vn 0.9304 0.0531 0.3626 +vn 0.6561 0.2497 0.7121 +vn 0.9942 0.0326 0.1023 +vn 0.7202 0.0022 0.6938 +vn 0.6652 -0.1274 0.7358 +vn 0.7676 0.1048 0.6324 +vn 0.3531 -0.3206 -0.8789 +vn 0.9489 0.0481 0.3118 +vn 0.8743 0.1593 -0.4584 +vn 0.8992 0.3358 -0.2803 +vn 0.8097 0.5709 0.1359 +vn 0.5708 0.4691 0.6739 +vn 0.5482 0.3062 0.7782 +vn 0.5497 0.3176 0.7726 +vn 0.5765 0.5206 0.6297 +vn 0.5836 0.6929 0.4234 +vn 0.5469 0.8261 0.1357 +vn 0.4430 0.8692 -0.2196 +vn 0.1957 0.7035 -0.6832 +vn 0.0373 0.5106 -0.8590 +vn -0.0747 0.3272 -0.9420 +vn -0.1531 0.1572 -0.9756 +vn -0.1748 0.0919 -0.9803 +vn -0.2043 -0.0641 -0.9768 +vn 0.5350 0.1831 0.8248 +vn -0.2050 -0.0743 -0.9759 +vn -0.1860 -0.2663 -0.9458 +vn -0.1938 -0.2306 -0.9536 +vn -0.0689 -0.5428 -0.8370 +vn -0.1291 -0.4263 -0.8953 +vn 0.2853 -0.8967 -0.3384 +vn 0.0609 -0.7212 -0.6901 +vn 0.5565 -0.7116 0.4288 +vn 0.4449 -0.8954 0.0173 +vn 0.5349 0.1819 0.8251 +vn 0.5697 -0.3964 0.7199 +vn 0.5737 -0.4972 0.6509 +vn 0.5490 -0.1876 0.8145 +vn 0.5516 -0.2131 0.8064 +vn 0.5352 -0.0436 0.8436 +vn 0.5357 -0.0509 0.8429 +vn 0.5308 0.0718 0.8445 +vn 0.5308 0.0695 0.8447 +vn -0.4430 -0.8692 0.2195 +vn -0.0373 -0.5106 0.8590 +vn 0.0747 -0.3272 0.9420 +vn -0.1958 -0.7036 0.6831 +vn -0.5836 -0.6930 -0.4234 +vn -0.5469 -0.8262 -0.1356 +vn -0.5708 -0.4691 -0.6739 +vn -0.5765 -0.5206 -0.6297 +vn -0.5482 -0.3063 -0.7782 +vn -0.5497 -0.3176 -0.7726 +vn -0.5349 -0.1819 -0.8251 +vn -0.5350 -0.1831 -0.8248 +vn -0.5307 -0.0718 -0.8445 +vn 0.1747 -0.0919 0.9803 +vn -0.5307 -0.0695 -0.8447 +vn -0.5352 0.0436 -0.8436 +vn -0.5357 0.0509 -0.8429 +vn -0.5490 0.1876 -0.8145 +vn -0.5516 0.2130 -0.8064 +vn -0.5697 0.3964 -0.7199 +vn -0.5737 0.4972 -0.6508 +vn -0.5565 0.7116 -0.4289 +vn -0.4449 0.8954 -0.0174 +vn 0.1531 -0.1572 0.9756 +vn -0.2853 0.8967 0.3384 +vn -0.0609 0.7211 0.6901 +vn 0.0689 0.5428 0.8370 +vn 0.1291 0.4263 0.8953 +vn 0.1860 0.2663 0.9458 +vn 0.1937 0.2306 0.9536 +vn 0.2044 0.0641 0.9768 +vn 0.2050 0.0743 0.9759 +vn 0.5565 -0.7116 0.4289 +vn 0.4449 -0.8954 0.0174 +vn 0.5516 -0.2130 0.8064 +vn 0.5307 0.0718 0.8445 +vn 0.5307 0.0695 0.8447 +vn 0.5497 0.3176 0.7727 +vn 0.5766 0.5206 0.6297 +vn 0.1957 0.7036 -0.6832 +vn -0.1937 -0.2306 -0.9536 +vn -0.0609 0.7212 0.6901 +vn -0.0372 -0.5106 0.8590 +vn 0.1748 -0.0919 0.9803 +vn 0.0309 -0.9778 0.2073 +vn -0.0309 0.9778 -0.2073 +vn 0.4082 0.2249 0.8848 +vn -0.4073 -0.2437 -0.8802 +vn -0.4074 -0.2437 -0.8802 +# 1471 vertex normals + +vt 0.3525 0.7002 0.0000 +vt 0.3513 0.7056 0.0000 +vt 1.0332 0.6453 0.0000 +vt 1.0332 0.6465 0.0000 +vt 1.0264 0.6443 0.0000 +vt 1.0381 0.6440 0.0000 +vt 1.0254 0.6472 0.0000 +vt 1.0186 0.6453 0.0000 +vt 1.0176 0.6462 0.0000 +vt 1.0127 0.6477 0.0000 +vt 1.0381 0.6477 0.0000 +vt 1.0391 0.6411 0.0000 +vt 1.0381 0.6506 0.0000 +vt 1.0361 0.6387 0.0000 +vt 1.0312 0.6375 0.0000 +vt 1.0352 0.6531 0.0000 +vt 1.0303 0.6543 0.0000 +vt 1.0264 0.6370 0.0000 +vt 1.0254 0.6548 0.0000 +vt 1.0205 0.6375 0.0000 +vt 1.0205 0.6543 0.0000 +vt 1.0166 0.6387 0.0000 +vt 1.0156 0.6528 0.0000 +vt 1.0127 0.6411 0.0000 +vt 1.0127 0.6506 0.0000 +vt 1.0127 0.6440 0.0000 +vt 1.0234 0.6411 0.0000 +vt 1.0234 0.6550 0.0000 +vt 1.0166 0.6541 0.0000 +vt 1.0293 0.6394 0.0000 +vt 1.0117 0.6521 0.0000 +vt 1.0176 0.6396 0.0000 +vt 1.0303 0.6545 0.0000 +vt 1.0137 0.6370 0.0000 +vt 1.0342 0.6523 0.0000 +vt 1.0117 0.6338 0.0000 +vt 1.0352 0.6497 0.0000 +vt 1.0117 0.6309 0.0000 +vt 1.0156 0.6284 0.0000 +vt 1.0234 0.6279 0.0000 +vt 1.0303 0.6438 0.0000 +vt 1.0303 0.6287 0.0000 +vt 1.0244 0.6421 0.0000 +vt 1.0352 0.6309 0.0000 +vt 1.0186 0.6438 0.0000 +vt 1.0342 0.6370 0.0000 +vt 1.0117 0.6492 0.0000 +vt 1.0361 0.6338 0.0000 +vt 1.0146 0.6462 0.0000 +vt 1.0361 0.6306 0.0000 +vt 1.0107 0.6394 0.0000 +vt 1.0332 0.6655 0.0000 +vt 1.0322 0.6335 0.0000 +vt 1.0127 0.6335 0.0000 +vt 1.0107 0.6335 0.0000 +vt 1.0176 0.6335 0.0000 +vt 1.0244 0.6335 0.0000 +vt 1.0371 0.6335 0.0000 +vt 1.0215 0.5940 0.0000 +vt 1.0215 0.5889 0.0000 +vt 1.0215 0.5879 0.0000 +vt 1.0215 0.5857 0.0000 +vt 1.0215 0.5898 0.0000 +vt 1.0225 0.5652 0.0000 +vt 1.0234 0.5579 0.0000 +vt 1.0244 0.5557 0.0000 +vt 1.0303 0.5889 0.0000 +vt 1.0303 0.5898 0.0000 +vt 1.0303 0.5857 0.0000 +vt 1.0293 0.5649 0.0000 +vt 1.0293 0.5579 0.0000 +vt 1.0283 0.5557 0.0000 +vt 1.0303 0.5879 0.0000 +vt 1.0303 0.5916 0.0000 +vt 1.0303 0.5933 0.0000 +vt 1.0303 0.5940 0.0000 +vt 1.0264 0.6104 0.0000 +vt 1.0273 0.6104 0.0000 +vt 1.0283 0.6104 0.0000 +vt 1.0244 0.6104 0.0000 +vt 1.0283 0.6360 0.0000 +vt 1.0254 0.6360 0.0000 +vt 1.0283 0.6387 0.0000 +vt 1.0264 0.6387 0.0000 +vt 1.0234 0.6538 0.0000 +vt 1.0244 0.6387 0.0000 +vt 1.0254 0.6538 0.0000 +vt 0.4841 0.7985 0.0000 +vt 0.4805 0.7985 0.0000 +vt 0.4841 0.7860 0.0000 +vt 0.4805 0.7860 0.0000 +vt 0.4768 0.7985 0.0000 +vt 0.4768 0.7860 0.0000 +vt 0.4734 0.7985 0.0000 +vt 0.4734 0.7860 0.0000 +vt 0.4697 0.7985 0.0000 +vt 0.4697 0.7860 0.0000 +vt 0.4661 0.7985 0.0000 +vt 0.4661 0.7860 0.0000 +vt 0.4624 0.7985 0.0000 +vt 0.4624 0.7860 0.0000 +vt 0.4590 0.7985 0.0000 +vt 0.4590 0.7860 0.0000 +vt 0.4553 0.7985 0.0000 +vt 0.4553 0.7860 0.0000 +vt 0.4517 0.7985 0.0000 +vt 0.4517 0.7860 0.0000 +vt 0.4482 0.7985 0.0000 +vt 0.4482 0.7860 0.0000 +vt 0.4446 0.7985 0.0000 +vt 0.4446 0.7860 0.0000 +vt 0.4409 0.7985 0.0000 +vt 0.4409 0.7860 0.0000 +vt 0.4375 0.7985 0.0000 +vt 0.4375 0.7860 0.0000 +vt 0.4338 0.7985 0.0000 +vt 0.4338 0.7860 0.0000 +vt 0.4302 0.7985 0.0000 +vt 0.4302 0.7860 0.0000 +vt 0.4268 0.7985 0.0000 +vt 0.4268 0.7860 0.0000 +vt 1.4834 0.7985 0.0000 +vt 1.4805 0.7985 0.0000 +vt 1.4834 0.7860 0.0000 +vt 1.4805 0.7860 0.0000 +vt 1.4766 0.7985 0.0000 +vt 1.4766 0.7860 0.0000 +vt 1.4727 0.7985 0.0000 +vt 1.4727 0.7860 0.0000 +vt 1.4697 0.7985 0.0000 +vt 1.4697 0.7860 0.0000 +vt 1.4658 0.7985 0.0000 +vt 1.4658 0.7860 0.0000 +vt 1.4619 0.7985 0.0000 +vt 1.4619 0.7860 0.0000 +vt 1.4590 0.7985 0.0000 +vt 1.4590 0.7860 0.0000 +vt 1.4551 0.7985 0.0000 +vt 1.4551 0.7860 0.0000 +vt 1.4512 0.7985 0.0000 +vt 1.4512 0.7860 0.0000 +vt 1.4482 0.7985 0.0000 +vt 1.4482 0.7860 0.0000 +vt 1.4443 0.7985 0.0000 +vt 1.4443 0.7860 0.0000 +vt 1.4404 0.7985 0.0000 +vt 1.4404 0.7860 0.0000 +vt 1.4375 0.7985 0.0000 +vt 1.4375 0.7860 0.0000 +vt 1.4336 0.7985 0.0000 +vt 1.4336 0.7860 0.0000 +vt 1.4297 0.7985 0.0000 +vt 1.4297 0.7860 0.0000 +vt 1.4268 0.7985 0.0000 +vt 1.4268 0.7860 0.0000 +vt 1.7842 0.5981 0.0000 +vt 1.7998 0.5964 0.0000 +vt 1.7979 0.7244 0.0000 +vt 1.7842 0.7256 0.0000 +vt 1.7793 0.5986 0.0000 +vt 1.7793 0.7290 0.0000 +vt 1.7725 0.5996 0.0000 +vt 1.7705 0.6001 0.0000 +vt 1.7686 0.6013 0.0000 +vt 1.7676 0.6030 0.0000 +vt 1.7666 0.6050 0.0000 +vt 1.7744 0.7322 0.0000 +vt 1.7725 0.7329 0.0000 +vt 1.7695 0.7322 0.0000 +vt 1.7686 0.7305 0.0000 +vt 1.7676 0.7283 0.0000 +vt 1.7842 0.7070 0.0000 +vt 1.7969 0.7075 0.0000 +vt 1.7979 0.7114 0.0000 +vt 1.7842 0.7109 0.0000 +vt 1.7803 0.7068 0.0000 +vt 1.7793 0.7104 0.0000 +vt 1.7754 0.7061 0.0000 +vt 1.7734 0.7090 0.0000 +vt 1.7744 0.7058 0.0000 +vt 1.7715 0.7080 0.0000 +vt 1.7734 0.7051 0.0000 +vt 1.7695 0.7065 0.0000 +vt 1.7725 0.7039 0.0000 +vt 1.7695 0.7048 0.0000 +vt 1.7725 0.7024 0.0000 +vt 1.7686 0.7029 0.0000 +vt 1.7715 0.6099 0.0000 +vt 1.7686 0.6086 0.0000 +vt 1.7725 0.6082 0.0000 +vt 1.7695 0.6064 0.0000 +vt 1.7734 0.6072 0.0000 +vt 1.7715 0.6045 0.0000 +vt 1.7754 0.6069 0.0000 +vt 1.7734 0.6038 0.0000 +vt 1.7764 0.6074 0.0000 +vt 1.7764 0.6038 0.0000 +vt 1.7803 0.6099 0.0000 +vt 1.7822 0.6064 0.0000 +vt 1.7842 0.6125 0.0000 +vt 1.7861 0.6089 0.0000 +vt 1.7939 0.6143 0.0000 +vt 1.7969 0.6135 0.0000 +vt 0.3782 0.7122 0.0000 +vt 0.3794 0.7068 0.0000 +vt 0.3748 0.7166 0.0000 +vt 0.3701 0.7195 0.0000 +vt 0.3647 0.7202 0.0000 +vt 0.3594 0.7190 0.0000 +vt 0.3550 0.7156 0.0000 +vt 0.3521 0.7109 0.0000 +vt 0.3787 0.7014 0.0000 +vt 0.3757 0.6965 0.0000 +vt 0.3713 0.6934 0.0000 +vt 0.3660 0.6921 0.0000 +vt 0.3560 0.6958 0.0000 +vt 0.3606 0.6929 0.0000 +vt 1.6484 0.8309 0.0000 +vt 1.6494 0.8508 0.0000 +vt 1.6758 0.8530 0.0000 +vt 1.6738 0.8578 0.0000 +vt 1.6631 0.8582 0.0000 +vt 1.6602 0.8087 0.0000 +vt 1.6592 0.8088 0.0000 +vt 1.6807 0.8528 0.0000 +vt 1.6875 0.8524 0.0000 +vt 1.6865 0.8334 0.0000 +vt 1.6807 0.8337 0.0000 +vt 1.6309 0.6423 0.0000 +vt 1.6318 0.6213 0.0000 +vt 1.6250 0.6208 0.0000 +vt 1.6240 0.6421 0.0000 +vt 1.6172 0.6418 0.0000 +vt 1.6201 0.6157 0.0000 +vt 1.6035 0.6465 0.0000 +vt 1.6182 0.6089 0.0000 +vt 1.6152 0.6021 0.0000 +vt 1.6104 0.5964 0.0000 +vt 1.6152 0.6467 0.0000 +vt 1.6035 0.5916 0.0000 +vt 1.5898 0.6150 0.0000 +vt 1.5889 0.6370 0.0000 +vt 1.6758 0.8293 0.0000 +vt 1.6738 0.8232 0.0000 +vt 1.6699 0.8174 0.0000 +vt 1.6660 0.8127 0.0000 +vt 1.3525 0.7009 0.0000 +vt 1.3516 0.7058 0.0000 +vt 1.3555 0.6968 0.0000 +vt 1.3604 0.6941 0.0000 +vt 1.3652 0.6931 0.0000 +vt 1.3701 0.6943 0.0000 +vt 1.3740 0.6975 0.0000 +vt 1.3770 0.7019 0.0000 +vt 1.3779 0.7070 0.0000 +vt 1.3770 0.7122 0.0000 +vt 1.3740 0.7163 0.0000 +vt 1.3691 0.7190 0.0000 +vt 1.3643 0.7197 0.0000 +vt 1.3594 0.7185 0.0000 +vt 1.3545 0.7156 0.0000 +vt 1.3525 0.7112 0.0000 +vt 1.3779 0.7012 0.0000 +vt 1.3789 0.7065 0.0000 +vt 1.3750 0.6965 0.0000 +vt 1.3701 0.6934 0.0000 +vt 1.3652 0.6921 0.0000 +vt 1.3604 0.6929 0.0000 +vt 1.3555 0.6958 0.0000 +vt 1.3525 0.7002 0.0000 +vt 1.3506 0.7053 0.0000 +vt 1.3516 0.7107 0.0000 +vt 1.3545 0.7153 0.0000 +vt 1.3584 0.7185 0.0000 +vt 1.3740 0.7161 0.0000 +vt 1.3770 0.7119 0.0000 +vt 1.3857 0.6990 0.0000 +vt 1.3867 0.7075 0.0000 +vt 1.3809 0.6917 0.0000 +vt 1.3740 0.6865 0.0000 +vt 1.3652 0.6843 0.0000 +vt 1.3574 0.6855 0.0000 +vt 1.3496 0.6902 0.0000 +vt 1.3447 0.6973 0.0000 +vt 1.3428 0.7056 0.0000 +vt 1.3437 0.7141 0.0000 +vt 1.3486 0.7217 0.0000 +vt 1.3555 0.7268 0.0000 +vt 1.3633 0.7288 0.0000 +vt 1.3848 0.7161 0.0000 +vt 1.3799 0.7229 0.0000 +vt 1.3721 0.7275 0.0000 +vt 1.6699 0.8925 0.0000 +vt 1.6680 0.8924 0.0000 +vt 1.6865 0.8931 0.0000 +vt 1.6895 0.8251 0.0000 +vt 1.6895 0.8268 0.0000 +vt 1.6592 0.8298 0.0000 +vt 1.6572 0.8285 0.0000 +vt 1.6494 0.8370 0.0000 +vt 1.6475 0.8369 0.0000 +vt 1.6895 0.8386 0.0000 +vt 1.6650 0.8502 0.0000 +vt 1.6885 0.8512 0.0000 +vt 1.6621 0.8502 0.0000 +vt 1.5830 0.7737 0.0000 +vt 1.5703 0.7600 0.0000 +vt 1.5918 0.7415 0.0000 +vt 1.6270 0.7611 0.0000 +vt 1.6270 0.7422 0.0000 +vt 1.6035 0.6780 0.0000 +vt 1.6270 0.7816 0.0000 +vt 1.6289 0.6785 0.0000 +vt 1.5830 0.7738 0.0000 +vt 1.6270 0.7819 0.0000 +vt 1.6270 0.7612 0.0000 +vt 1.5703 0.7601 0.0000 +vt 1.0332 0.6504 0.0000 +vt 1.0352 0.6514 0.0000 +vt 1.0352 0.6406 0.0000 +vt 1.0342 0.6394 0.0000 +vt 1.0303 0.6497 0.0000 +vt 1.0303 0.6387 0.0000 +vt 1.0264 0.6492 0.0000 +vt 1.0264 0.6384 0.0000 +vt 1.0215 0.6497 0.0000 +vt 1.0225 0.6387 0.0000 +vt 1.0186 0.6504 0.0000 +vt 1.0186 0.6394 0.0000 +vt 1.0176 0.6514 0.0000 +vt 1.0176 0.6406 0.0000 +vt 1.0342 0.6416 0.0000 +vt 1.0332 0.6526 0.0000 +vt 1.0303 0.6423 0.0000 +vt 1.0303 0.6533 0.0000 +vt 1.0264 0.6428 0.0000 +vt 1.0264 0.6536 0.0000 +vt 1.0215 0.6423 0.0000 +vt 1.0215 0.6533 0.0000 +vt 1.0186 0.6416 0.0000 +vt 1.0186 0.6526 0.0000 +vt 1.0371 0.6433 0.0000 +vt 1.0391 0.6418 0.0000 +vt 1.0391 0.6501 0.0000 +vt 1.0371 0.6516 0.0000 +vt 1.0332 0.6445 0.0000 +vt 1.0273 0.6448 0.0000 +vt 1.0273 0.6531 0.0000 +vt 1.0215 0.6445 0.0000 +vt 1.0205 0.6526 0.0000 +vt 1.0166 0.6433 0.0000 +vt 1.0166 0.6516 0.0000 +vt 1.0146 0.6418 0.0000 +vt 1.0146 0.6499 0.0000 +vt 1.0371 0.6484 0.0000 +vt 1.0371 0.6404 0.0000 +vt 1.0332 0.6475 0.0000 +vt 1.0332 0.6392 0.0000 +vt 1.0273 0.6470 0.0000 +vt 1.0273 0.6387 0.0000 +vt 1.0205 0.6475 0.0000 +vt 1.0215 0.6392 0.0000 +vt 1.0166 0.6484 0.0000 +vt 1.0166 0.6404 0.0000 +vt 1.0312 0.6311 0.0000 +vt 1.0322 0.6301 0.0000 +vt 1.0322 0.6602 0.0000 +vt 1.0312 0.6611 0.0000 +vt 1.0293 0.6316 0.0000 +vt 1.0283 0.6616 0.0000 +vt 1.0254 0.6318 0.0000 +vt 1.0254 0.6619 0.0000 +vt 1.0215 0.6316 0.0000 +vt 1.0215 0.6616 0.0000 +vt 1.0195 0.6311 0.0000 +vt 1.0186 0.6609 0.0000 +vt 1.0186 0.6301 0.0000 +vt 1.0176 0.6602 0.0000 +vt 1.0312 0.6592 0.0000 +vt 1.0312 0.6292 0.0000 +vt 1.0283 0.6584 0.0000 +vt 1.0293 0.6284 0.0000 +vt 1.0254 0.6582 0.0000 +vt 1.0254 0.6282 0.0000 +vt 1.0215 0.6584 0.0000 +vt 1.0215 0.6284 0.0000 +vt 1.0186 0.6592 0.0000 +vt 1.0195 0.6292 0.0000 +vt 1.0332 0.6663 0.0000 +vt 1.0342 0.6663 0.0000 +vt 1.0352 0.5564 0.0000 +vt 1.0342 0.5564 0.0000 +vt 1.0293 0.6663 0.0000 +vt 1.0303 0.5564 0.0000 +vt 1.0234 0.6663 0.0000 +vt 1.0244 0.5564 0.0000 +vt 1.0186 0.6663 0.0000 +vt 1.0195 0.5564 0.0000 +vt 1.0146 0.6663 0.0000 +vt 1.0156 0.5564 0.0000 +vt 1.0127 0.6663 0.0000 +vt 1.0137 0.5564 0.0000 +vt 1.0117 0.6663 0.0000 +vt 1.0098 0.6316 0.0000 +vt 1.0166 0.6316 0.0000 +vt 1.0254 0.6663 0.0000 +vt 1.0234 0.6313 0.0000 +vt 1.0322 0.6663 0.0000 +vt 1.0303 0.6313 0.0000 +vt 1.0391 0.6660 0.0000 +vt 1.0371 0.6313 0.0000 +vt 1.9277 0.6450 0.0000 +vt 1.9277 0.6431 0.0000 +vt 1.9404 0.6431 0.0000 +vt 1.9404 0.6450 0.0000 +vt 1.9277 0.6467 0.0000 +vt 1.9404 0.6467 0.0000 +vt 1.0176 0.6653 0.0000 +vt 1.0117 0.6653 0.0000 +vt 1.0098 0.6306 0.0000 +vt 1.0166 0.6306 0.0000 +vt 1.0244 0.6653 0.0000 +vt 1.0234 0.6306 0.0000 +vt 1.0312 0.6653 0.0000 +vt 1.0303 0.6304 0.0000 +vt 1.0381 0.6653 0.0000 +vt 1.0371 0.6304 0.0000 +vt 1.0166 0.6443 0.0000 +vt 1.0283 0.6443 0.0000 +vt 1.0166 0.6462 0.0000 +vt 1.0293 0.6462 0.0000 +vt 1.0166 0.6479 0.0000 +vt 1.0283 0.6479 0.0000 +vt 1.0430 0.6389 0.0000 +vt 1.0459 0.6426 0.0000 +vt 1.0459 0.6479 0.0000 +vt 1.0430 0.6443 0.0000 +vt 1.0361 0.6365 0.0000 +vt 1.0361 0.6416 0.0000 +vt 1.0254 0.6355 0.0000 +vt 1.0254 0.6406 0.0000 +vt 1.0146 0.6362 0.0000 +vt 1.0146 0.6416 0.0000 +vt 1.0078 0.6389 0.0000 +vt 1.0068 0.6443 0.0000 +vt 1.0049 0.6426 0.0000 +vt 1.0049 0.6477 0.0000 +vt 1.0430 0.6514 0.0000 +vt 1.0430 0.6460 0.0000 +vt 1.0352 0.6541 0.0000 +vt 1.0352 0.6487 0.0000 +vt 1.0254 0.6550 0.0000 +vt 1.0254 0.6497 0.0000 +vt 1.0146 0.6541 0.0000 +vt 1.0146 0.6487 0.0000 +vt 1.0068 0.6514 0.0000 +vt 1.0068 0.6460 0.0000 +vt 1.0322 0.6316 0.0000 +vt 1.0332 0.6331 0.0000 +vt 1.0332 0.6567 0.0000 +vt 1.0322 0.6553 0.0000 +vt 1.0293 0.6304 0.0000 +vt 1.0293 0.6543 0.0000 +vt 1.7734 0.6494 0.0000 +vt 1.7734 0.6475 0.0000 +vt 1.7910 0.6475 0.0000 +vt 1.7910 0.6494 0.0000 +vt 1.7734 0.6514 0.0000 +vt 1.7910 0.6514 0.0000 +vt 1.0176 0.6316 0.0000 +vt 1.0205 0.6304 0.0000 +vt 1.0205 0.6541 0.0000 +vt 1.0166 0.6553 0.0000 +vt 1.0156 0.6331 0.0000 +vt 1.0156 0.6567 0.0000 +vt 1.0322 0.6582 0.0000 +vt 1.0322 0.6345 0.0000 +vt 1.0283 0.6594 0.0000 +vt 1.0293 0.6355 0.0000 +vt 1.0244 0.6597 0.0000 +vt 1.0244 0.6360 0.0000 +vt 1.0205 0.6594 0.0000 +vt 1.0205 0.6355 0.0000 +vt 1.0166 0.6582 0.0000 +vt 1.0176 0.6345 0.0000 +vt 1.8467 0.6433 0.0000 +vt 1.8477 0.6431 0.0000 +vt 1.8486 0.6433 0.0000 +vt 1.8496 0.6440 0.0000 +vt 1.8496 0.6450 0.0000 +vt 1.8496 0.6458 0.0000 +vt 1.8467 0.6440 0.0000 +vt 1.8486 0.6465 0.0000 +vt 1.8457 0.6450 0.0000 +vt 1.8477 0.6467 0.0000 +vt 1.8467 0.6465 0.0000 +vt 1.8467 0.6458 0.0000 +vt 1.0391 0.6494 0.0000 +vt 1.0371 0.6426 0.0000 +vt 1.0371 0.6509 0.0000 +vt 1.0332 0.6438 0.0000 +vt 1.0332 0.6519 0.0000 +vt 1.0264 0.6523 0.0000 +vt 1.0205 0.6438 0.0000 +vt 1.0205 0.6519 0.0000 +vt 1.0166 0.6426 0.0000 +vt 1.0166 0.6509 0.0000 +vt 1.0146 0.6411 0.0000 +vt 1.0146 0.6494 0.0000 +vt 1.0371 0.6477 0.0000 +vt 1.0371 0.6396 0.0000 +vt 1.0332 0.6467 0.0000 +vt 1.0332 0.6384 0.0000 +vt 1.0264 0.6462 0.0000 +vt 1.0273 0.6382 0.0000 +vt 1.0205 0.6467 0.0000 +vt 1.0205 0.6384 0.0000 +vt 1.0166 0.6477 0.0000 +vt 1.0166 0.6396 0.0000 +vt 1.0332 0.6604 0.0000 +vt 1.0332 0.6304 0.0000 +vt 1.0322 0.6313 0.0000 +vt 1.0322 0.6614 0.0000 +vt 1.0293 0.6321 0.0000 +vt 1.0293 0.6621 0.0000 +vt 1.0264 0.6323 0.0000 +vt 1.0254 0.6624 0.0000 +vt 1.0225 0.6321 0.0000 +vt 1.0225 0.6621 0.0000 +vt 1.0195 0.6313 0.0000 +vt 1.0195 0.6614 0.0000 +vt 1.0186 0.6304 0.0000 +vt 1.0186 0.6604 0.0000 +vt 1.0322 0.6594 0.0000 +vt 1.0322 0.6294 0.0000 +vt 1.0293 0.6589 0.0000 +vt 1.0293 0.6289 0.0000 +vt 1.0254 0.6587 0.0000 +vt 1.0264 0.6287 0.0000 +vt 1.0225 0.6589 0.0000 +vt 1.0225 0.6289 0.0000 +vt 1.0195 0.6594 0.0000 +vt 1.0195 0.6294 0.0000 +vt 1.0342 0.6660 0.0000 +vt 1.0322 0.6660 0.0000 +vt 1.0332 0.5564 0.0000 +vt 1.0215 0.6301 0.0000 +vt 1.0215 0.5251 0.0000 +vt 1.0234 0.5251 0.0000 +vt 1.0234 0.6301 0.0000 +vt 1.0264 0.5251 0.0000 +vt 1.0264 0.6301 0.0000 +vt 1.0283 0.5251 0.0000 +vt 1.0283 0.6301 0.0000 +vt 1.0186 0.5564 0.0000 +vt 1.0176 0.6660 0.0000 +vt 1.0137 0.6660 0.0000 +vt 1.0146 0.5564 0.0000 +vt 1.0127 0.6660 0.0000 +vt 1.0293 0.5564 0.0000 +vt 1.0283 0.6660 0.0000 +vt 1.0234 0.6660 0.0000 +vt 1.0293 0.6306 0.0000 +vt 1.0264 0.6655 0.0000 +vt 1.0225 0.6309 0.0000 +vt 1.0195 0.6658 0.0000 +vt 1.0156 0.6309 0.0000 +vt 1.0127 0.6658 0.0000 +vt 1.0088 0.6311 0.0000 +vt 1.0293 0.6396 0.0000 +vt 1.0283 0.6416 0.0000 +vt 1.0166 0.6416 0.0000 +vt 1.0293 0.6436 0.0000 +vt 1.0166 0.6436 0.0000 +vt 1.0352 0.6292 0.0000 +vt 1.0381 0.6648 0.0000 +vt 1.0312 0.6648 0.0000 +vt 1.0273 0.6292 0.0000 +vt 1.0244 0.6650 0.0000 +vt 1.0205 0.6294 0.0000 +vt 1.0176 0.6650 0.0000 +vt 1.0137 0.6294 0.0000 +vt 1.0098 0.6653 0.0000 +vt 1.0068 0.6296 0.0000 +vt 1.0293 0.6487 0.0000 +vt 1.0283 0.6506 0.0000 +vt 1.0166 0.6487 0.0000 +vt 1.0166 0.6506 0.0000 +vt 1.0293 0.6526 0.0000 +vt 1.0166 0.6526 0.0000 +vt 1.0479 0.6238 0.0000 +vt 1.0479 0.6184 0.0000 +vt 1.0449 0.6147 0.0000 +vt 1.0449 0.6201 0.0000 +vt 1.0371 0.6121 0.0000 +vt 1.0371 0.6174 0.0000 +vt 1.0273 0.6111 0.0000 +vt 1.0273 0.6165 0.0000 +vt 1.0166 0.6121 0.0000 +vt 1.0166 0.6174 0.0000 +vt 1.0088 0.6147 0.0000 +vt 1.0088 0.6201 0.0000 +vt 1.0059 0.6182 0.0000 +vt 1.0059 0.6235 0.0000 +vt 1.0449 0.6272 0.0000 +vt 1.0449 0.6218 0.0000 +vt 1.0371 0.6299 0.0000 +vt 1.0371 0.6245 0.0000 +vt 1.0264 0.6309 0.0000 +vt 1.0273 0.6255 0.0000 +vt 1.0166 0.6299 0.0000 +vt 1.0166 0.6245 0.0000 +vt 1.0088 0.6272 0.0000 +vt 1.0088 0.6218 0.0000 +vt 1.0312 0.6565 0.0000 +vt 1.0312 0.6328 0.0000 +vt 1.0303 0.6550 0.0000 +vt 1.0273 0.6301 0.0000 +vt 1.0273 0.6538 0.0000 +vt 1.0225 0.6296 0.0000 +vt 1.0225 0.6536 0.0000 +vt 1.0186 0.6538 0.0000 +vt 1.0156 0.6311 0.0000 +vt 1.0146 0.6550 0.0000 +vt 1.0137 0.6328 0.0000 +vt 1.0137 0.6565 0.0000 +vt 1.0303 0.6580 0.0000 +vt 1.0303 0.6343 0.0000 +vt 1.0273 0.6589 0.0000 +vt 1.0273 0.6353 0.0000 +vt 1.0225 0.6594 0.0000 +vt 1.0225 0.6357 0.0000 +vt 1.0186 0.6589 0.0000 +vt 1.0186 0.6353 0.0000 +vt 1.0146 0.6580 0.0000 +vt 1.0156 0.6343 0.0000 +vt 1.0391 0.6335 0.0000 +vt 1.0391 0.6489 0.0000 +vt 1.0371 0.6489 0.0000 +vt 1.0322 0.6489 0.0000 +vt 1.0244 0.6489 0.0000 +vt 1.0176 0.6489 0.0000 +vt 1.0127 0.6489 0.0000 +vt 1.0107 0.6489 0.0000 +vt 1.7617 0.7246 0.0000 +vt 1.7578 0.5967 0.0000 +vt 1.7734 0.5981 0.0000 +vt 1.7744 0.7258 0.0000 +vt 1.7852 0.5996 0.0000 +vt 1.7871 0.6001 0.0000 +vt 1.7891 0.6011 0.0000 +vt 1.7900 0.6028 0.0000 +vt 1.7910 0.6047 0.0000 +vt 1.7852 0.7322 0.0000 +vt 1.7871 0.7327 0.0000 +vt 1.7891 0.7322 0.0000 +vt 1.7910 0.7305 0.0000 +vt 1.7920 0.7283 0.0000 +vt 1.7627 0.7183 0.0000 +vt 1.7627 0.7146 0.0000 +vt 1.7754 0.7126 0.0000 +vt 1.7754 0.7163 0.0000 +vt 1.7793 0.7119 0.0000 +vt 1.7803 0.7158 0.0000 +vt 1.7842 0.7112 0.0000 +vt 1.7861 0.7146 0.0000 +vt 1.7861 0.7107 0.0000 +vt 1.7881 0.7136 0.0000 +vt 1.7871 0.7097 0.0000 +vt 1.7900 0.7117 0.0000 +vt 1.7881 0.7083 0.0000 +vt 1.7920 0.7095 0.0000 +vt 1.7881 0.7068 0.0000 +vt 1.7920 0.7068 0.0000 +vt 1.7852 0.6089 0.0000 +vt 1.7881 0.6086 0.0000 +vt 1.7842 0.6072 0.0000 +vt 1.7871 0.6052 0.0000 +vt 1.7832 0.6057 0.0000 +vt 1.7852 0.6030 0.0000 +vt 1.7812 0.6055 0.0000 +vt 1.7822 0.6018 0.0000 +vt 1.7793 0.6060 0.0000 +vt 1.7783 0.6021 0.0000 +vt 1.7754 0.6086 0.0000 +vt 1.7734 0.6052 0.0000 +vt 1.7715 0.6113 0.0000 +vt 1.7705 0.6079 0.0000 +vt 1.7607 0.6130 0.0000 +vt 1.7598 0.6094 0.0000 +vt 1.0264 0.5549 0.0000 +vt 1.0254 0.5549 0.0000 +vt 1.0215 0.5918 0.0000 +vt 1.0215 0.5933 0.0000 +vt 1.0205 0.6047 0.0000 +vt 1.0293 0.6047 0.0000 +vt 1.0205 0.6096 0.0000 +vt 1.0205 0.6082 0.0000 +vt 1.0205 0.6108 0.0000 +vt 1.0225 0.6116 0.0000 +vt 1.0234 0.6118 0.0000 +vt 1.0254 0.6118 0.0000 +vt 1.0264 0.6116 0.0000 +vt 1.0283 0.6108 0.0000 +vt 1.0283 0.6096 0.0000 +vt 1.0293 0.6082 0.0000 +vt 1.0215 0.6035 0.0000 +vt 1.0215 0.5935 0.0000 +vt 1.0293 0.6040 0.0000 +vt 1.0215 0.6067 0.0000 +vt 1.0293 0.6069 0.0000 +vt 1.0215 0.6079 0.0000 +vt 1.0215 0.6091 0.0000 +vt 1.0234 0.6099 0.0000 +vt 1.0244 0.6101 0.0000 +vt 1.0254 0.6104 0.0000 +vt 1.0293 0.6084 0.0000 +vt 1.0283 0.6094 0.0000 +vt 1.0273 0.6101 0.0000 +vt 1.0303 0.5928 0.0000 +vt 1.0215 0.5928 0.0000 +vt 1.5957 0.2446 0.0000 +vt 1.5957 0.1855 0.0000 +vt 1.6035 0.1855 0.0000 +vt 1.6035 0.2446 0.0000 +vt 1.6113 0.1855 0.0000 +vt 1.6113 0.2446 0.0000 +vt 1.6191 0.1855 0.0000 +vt 1.6191 0.2446 0.0000 +vt 1.6270 0.1855 0.0000 +vt 1.6270 0.2446 0.0000 +vt 1.6348 0.1855 0.0000 +vt 1.6348 0.2446 0.0000 +vt 1.6426 0.1855 0.0000 +vt 1.6426 0.2446 0.0000 +vt 1.0244 0.6047 0.0000 +vt 1.0254 0.6045 0.0000 +vt 1.0273 0.6047 0.0000 +vt 1.0234 0.6052 0.0000 +vt 1.0283 0.6052 0.0000 +vt 1.0234 0.6057 0.0000 +vt 1.0283 0.6057 0.0000 +vt 1.0234 0.6064 0.0000 +vt 1.0283 0.6064 0.0000 +vt 1.0273 0.6069 0.0000 +vt 1.0244 0.6069 0.0000 +vt 1.0254 0.6069 0.0000 +vt 1.3672 0.6907 0.0000 +vt 1.3750 0.6941 0.0000 +vt 1.3809 0.7012 0.0000 +vt 1.3818 0.7102 0.0000 +vt 1.3789 0.7185 0.0000 +vt 1.3721 0.7241 0.0000 +vt 1.3623 0.7253 0.0000 +vt 1.3545 0.7219 0.0000 +vt 1.3486 0.7148 0.0000 +vt 1.3477 0.7058 0.0000 +vt 1.3506 0.6975 0.0000 +vt 1.3584 0.6919 0.0000 +vt 1.0254 0.6348 0.0000 +vt 1.0234 0.6348 0.0000 +vt 1.0234 0.6130 0.0000 +vt 1.0254 0.6133 0.0000 +vt 1.0273 0.6348 0.0000 +vt 1.0273 0.6130 0.0000 +vt 1.0283 0.6150 0.0000 +vt 1.0283 0.6042 0.0000 +vt 1.0273 0.6042 0.0000 +vt 1.0273 0.6150 0.0000 +vt 1.0254 0.6042 0.0000 +vt 1.0254 0.6150 0.0000 +vt 1.0283 0.6538 0.0000 +vt 1.0234 0.6150 0.0000 +vt 1.0244 0.6042 0.0000 +vt 1.0225 0.6150 0.0000 +vt 1.0225 0.6040 0.0000 +vt 1.0215 0.6150 0.0000 +vt 1.0225 0.6538 0.0000 +vt 1.0215 0.6538 0.0000 +vt 1.0234 0.6360 0.0000 +vt 1.0244 0.6235 0.0000 +vt 1.0254 0.6233 0.0000 +vt 1.0215 0.6226 0.0000 +vt 1.0215 0.6211 0.0000 +vt 1.0215 0.6108 0.0000 +vt 1.0303 0.6125 0.0000 +vt 1.0225 0.6233 0.0000 +vt 1.0264 0.6223 0.0000 +vt 1.7266 0.2437 0.0000 +vt 1.6582 0.2437 0.0000 +vt 1.6582 0.2393 0.0000 +vt 1.7266 0.2393 0.0000 +vt 1.6582 0.2344 0.0000 +vt 1.7266 0.2344 0.0000 +vt 1.6582 0.2300 0.0000 +vt 1.7266 0.2300 0.0000 +vt 1.6582 0.2256 0.0000 +vt 1.7266 0.2256 0.0000 +vt 1.6582 0.2212 0.0000 +vt 1.7266 0.2212 0.0000 +vt 1.6582 0.2168 0.0000 +vt 1.7266 0.2168 0.0000 +vt 1.7266 0.2583 0.0000 +vt 1.7207 0.2583 0.0000 +vt 1.7266 0.1748 0.0000 +vt 1.7207 0.1748 0.0000 +vt 1.7158 0.2583 0.0000 +vt 1.7158 0.1748 0.0000 +vt 1.7100 0.2583 0.0000 +vt 1.7100 0.1748 0.0000 +vt 1.7041 0.2583 0.0000 +vt 1.7041 0.1748 0.0000 +vt 1.6982 0.2583 0.0000 +vt 1.6982 0.1748 0.0000 +vt 1.6924 0.2583 0.0000 +vt 1.6924 0.1748 0.0000 +vt 1.6865 0.2583 0.0000 +vt 1.6865 0.1748 0.0000 +vt 1.6807 0.2583 0.0000 +vt 1.6807 0.1748 0.0000 +vt 1.6748 0.2583 0.0000 +vt 1.6748 0.1748 0.0000 +vt 1.6689 0.2583 0.0000 +vt 1.6689 0.1748 0.0000 +vt 1.6631 0.2583 0.0000 +vt 1.6631 0.1748 0.0000 +vt 1.6572 0.2583 0.0000 +vt 1.6572 0.1748 0.0000 +vt 1.5967 0.1528 0.0000 +vt 1.6006 0.1528 0.0000 +vt 1.5996 0.2783 0.0000 +vt 1.5957 0.2783 0.0000 +vt 1.6045 0.1528 0.0000 +vt 1.6035 0.2783 0.0000 +vt 1.6084 0.1528 0.0000 +vt 1.6074 0.2778 0.0000 +vt 1.6123 0.1528 0.0000 +vt 1.6113 0.2778 0.0000 +vt 1.6162 0.1528 0.0000 +vt 1.6152 0.2778 0.0000 +vt 1.6201 0.1528 0.0000 +vt 1.6191 0.2778 0.0000 +vt 1.6240 0.1528 0.0000 +vt 1.6230 0.2783 0.0000 +vt 1.6279 0.1528 0.0000 +vt 1.6270 0.2783 0.0000 +vt 1.6318 0.1528 0.0000 +vt 1.6309 0.2788 0.0000 +vt 1.6357 0.1528 0.0000 +vt 1.6348 0.2788 0.0000 +vt 1.6396 0.1533 0.0000 +vt 1.6387 0.2788 0.0000 +vt 1.6436 0.1533 0.0000 +vt 1.6426 0.2788 0.0000 +vt 1.6602 0.2207 0.0000 +vt 1.6602 0.2070 0.0000 +vt 1.6660 0.2207 0.0000 +vt 1.6660 0.2070 0.0000 +vt 1.6709 0.2207 0.0000 +vt 1.6709 0.2070 0.0000 +vt 1.6768 0.2207 0.0000 +vt 1.6768 0.2070 0.0000 +vt 1.6816 0.2207 0.0000 +vt 1.6816 0.2070 0.0000 +vt 1.6875 0.2207 0.0000 +vt 1.6875 0.2070 0.0000 +vt 1.6934 0.2070 0.0000 +vt 1.6934 0.2207 0.0000 +vt 1.6982 0.2070 0.0000 +vt 1.6982 0.2207 0.0000 +vt 1.7041 0.2070 0.0000 +vt 1.7041 0.2207 0.0000 +vt 1.7090 0.2070 0.0000 +vt 1.7090 0.2207 0.0000 +vt 1.7148 0.2070 0.0000 +vt 1.7148 0.2207 0.0000 +vt 1.7207 0.2070 0.0000 +vt 1.7207 0.2207 0.0000 +vt 1.7256 0.2207 0.0000 +vt 1.7256 0.2070 0.0000 +vt 1.6289 0.2749 0.0000 +vt 1.6064 0.2749 0.0000 +vt 1.6064 0.2681 0.0000 +vt 1.6289 0.2681 0.0000 +vt 1.6064 0.2612 0.0000 +vt 1.6289 0.2612 0.0000 +vt 1.6064 0.2544 0.0000 +vt 1.6289 0.2544 0.0000 +vt 1.6064 0.2476 0.0000 +vt 1.6289 0.2476 0.0000 +vt 1.6064 0.2407 0.0000 +vt 1.6289 0.2407 0.0000 +vt 1.6064 0.2339 0.0000 +vt 1.6289 0.2339 0.0000 +vt 1.6064 0.2271 0.0000 +vt 1.6289 0.2271 0.0000 +vt 1.6064 0.2202 0.0000 +vt 1.6289 0.2202 0.0000 +vt 1.6064 0.2134 0.0000 +vt 1.6289 0.2134 0.0000 +vt 1.6064 0.2065 0.0000 +vt 1.6289 0.2065 0.0000 +vt 1.6064 0.1997 0.0000 +vt 1.6289 0.1997 0.0000 +vt 1.6064 0.1929 0.0000 +vt 1.6289 0.1929 0.0000 +vt 1.6836 0.2705 0.0000 +vt 1.6836 0.1772 0.0000 +vt 1.6885 0.1772 0.0000 +vt 1.6885 0.2705 0.0000 +vt 1.6924 0.1772 0.0000 +vt 1.6924 0.2705 0.0000 +vt 1.6963 0.1772 0.0000 +vt 1.6963 0.2705 0.0000 +vt 1.7002 0.1772 0.0000 +vt 1.7002 0.2705 0.0000 +vt 1.7051 0.1772 0.0000 +vt 1.7051 0.2705 0.0000 +vt 1.7090 0.1772 0.0000 +vt 1.7090 0.2705 0.0000 +vt 1.6602 0.2173 0.0000 +vt 1.6602 0.2129 0.0000 +vt 1.7275 0.2129 0.0000 +vt 1.7275 0.2173 0.0000 +vt 1.6602 0.2217 0.0000 +vt 1.7275 0.2217 0.0000 +vt 1.6602 0.2261 0.0000 +vt 1.7275 0.2261 0.0000 +vt 1.6602 0.2305 0.0000 +vt 1.7275 0.2305 0.0000 +vt 1.6602 0.2349 0.0000 +vt 1.7275 0.2349 0.0000 +vt 1.6602 0.2393 0.0000 +vt 1.7275 0.2393 0.0000 +vt 0.3528 0.7002 0.0000 +vt 0.3799 0.7068 0.0000 +vt 0.3789 0.7012 0.0000 +vt 0.3882 0.7070 0.0000 +vt 0.3860 0.7156 0.0000 +vt 0.3867 0.6982 0.0000 +vt 0.3955 0.7073 0.0000 +vt 0.3938 0.6958 0.0000 +vt 0.3760 0.6963 0.0000 +vt 0.3784 0.7122 0.0000 +vt 0.3928 0.7188 0.0000 +vt 0.3821 0.6907 0.0000 +vt 0.3987 0.7075 0.0000 +vt 0.3716 0.6929 0.0000 +vt 0.3809 0.7229 0.0000 +vt 0.3877 0.6855 0.0000 +vt 0.3955 0.7202 0.0000 +vt 0.3967 0.6948 0.0000 +vt 0.3752 0.7168 0.0000 +vt 0.3857 0.7283 0.0000 +vt 0.3879 0.7305 0.0000 +vt 0.3730 0.7275 0.0000 +vt 0.3975 0.7209 0.0000 +vt 0.4009 0.7075 0.0000 +vt 0.3894 0.7322 0.0000 +vt 0.3704 0.7197 0.0000 +vt 0.3757 0.7344 0.0000 +vt 0.3767 0.7373 0.0000 +vt 0.3645 0.7288 0.0000 +vt 0.3774 0.7395 0.0000 +vt 0.3647 0.7205 0.0000 +vt 0.3640 0.7363 0.0000 +vt 0.3557 0.7266 0.0000 +vt 0.3640 0.7393 0.0000 +vt 0.3750 0.6855 0.0000 +vt 0.3638 0.7415 0.0000 +vt 0.3594 0.7192 0.0000 +vt 0.3525 0.7334 0.0000 +vt 0.3782 0.6787 0.0000 +vt 0.3486 0.7214 0.0000 +vt 0.3513 0.7361 0.0000 +vt 0.3503 0.7383 0.0000 +vt 0.3547 0.7158 0.0000 +vt 0.3899 0.6836 0.0000 +vt 0.3430 0.7266 0.0000 +vt 0.3440 0.7139 0.0000 +vt 0.3408 0.7285 0.0000 +vt 0.3987 0.6938 0.0000 +vt 0.3394 0.7300 0.0000 +vt 0.3518 0.7109 0.0000 +vt 0.3369 0.7163 0.0000 +vt 0.3428 0.7051 0.0000 +vt 0.3342 0.7175 0.0000 +vt 0.3320 0.7183 0.0000 +vt 0.3508 0.7056 0.0000 +vt 0.3352 0.7048 0.0000 +vt 0.3447 0.6965 0.0000 +vt 0.3323 0.7046 0.0000 +vt 0.3660 0.6917 0.0000 +vt 0.3301 0.7046 0.0000 +vt 0.3523 0.7000 0.0000 +vt 0.3379 0.6934 0.0000 +vt 0.3501 0.6895 0.0000 +vt 0.3352 0.6921 0.0000 +vt 0.3333 0.6912 0.0000 +vt 0.3557 0.6953 0.0000 +vt 0.3450 0.6838 0.0000 +vt 0.3577 0.6848 0.0000 +vt 0.3430 0.6816 0.0000 +vt 0.3416 0.6799 0.0000 +vt 0.3604 0.6924 0.0000 +vt 0.3550 0.6777 0.0000 +vt 0.3665 0.6833 0.0000 +vt 0.3540 0.6748 0.0000 +vt 0.3533 0.6729 0.0000 +vt 0.3667 0.6758 0.0000 +vt 0.3669 0.6729 0.0000 +vt 0.3669 0.6707 0.0000 +vt 0.3794 0.6760 0.0000 +vt 0.3804 0.6738 0.0000 +vt 0.3916 0.6821 0.0000 +vt 1.3555 0.6953 0.0000 +vt 1.3604 0.6924 0.0000 +vt 1.3496 0.6895 0.0000 +vt 1.3447 0.6965 0.0000 +vt 1.3574 0.6848 0.0000 +vt 1.3447 0.6838 0.0000 +vt 1.3545 0.6777 0.0000 +vt 1.3652 0.6917 0.0000 +vt 1.3516 0.7000 0.0000 +vt 1.3379 0.6934 0.0000 +vt 1.3662 0.6833 0.0000 +vt 1.3428 0.6816 0.0000 +vt 1.3711 0.6929 0.0000 +vt 1.3428 0.7051 0.0000 +vt 1.3662 0.6758 0.0000 +vt 1.3350 0.6921 0.0000 +vt 1.3535 0.6748 0.0000 +vt 1.3506 0.7056 0.0000 +vt 1.3350 0.7048 0.0000 +vt 1.3320 0.7046 0.0000 +vt 1.3437 0.7139 0.0000 +vt 1.3330 0.6912 0.0000 +vt 1.3408 0.6799 0.0000 +vt 1.3301 0.7046 0.0000 +vt 1.3516 0.7109 0.0000 +vt 1.3369 0.7163 0.0000 +vt 1.3340 0.7175 0.0000 +vt 1.3486 0.7214 0.0000 +vt 1.3320 0.7183 0.0000 +vt 1.3545 0.7158 0.0000 +vt 1.3428 0.7266 0.0000 +vt 1.3555 0.7266 0.0000 +vt 1.3408 0.7285 0.0000 +vt 1.3750 0.6855 0.0000 +vt 1.3389 0.7300 0.0000 +vt 1.3594 0.7192 0.0000 +vt 1.3525 0.7334 0.0000 +vt 1.3779 0.6787 0.0000 +vt 1.3643 0.7288 0.0000 +vt 1.3506 0.7361 0.0000 +vt 1.3496 0.7383 0.0000 +vt 1.3643 0.7205 0.0000 +vt 1.3662 0.6729 0.0000 +vt 1.3633 0.7363 0.0000 +vt 1.3730 0.7275 0.0000 +vt 1.3633 0.7393 0.0000 +vt 1.3525 0.6729 0.0000 +vt 1.3633 0.7415 0.0000 +vt 1.3701 0.7197 0.0000 +vt 1.3750 0.7344 0.0000 +vt 1.3809 0.7229 0.0000 +vt 1.3760 0.7373 0.0000 +vt 1.3770 0.7395 0.0000 +vt 1.3750 0.7168 0.0000 +vt 1.3857 0.7283 0.0000 +vt 1.3857 0.7156 0.0000 +vt 1.3877 0.7305 0.0000 +vt 1.3760 0.6963 0.0000 +vt 1.3887 0.7322 0.0000 +vt 1.3779 0.7122 0.0000 +vt 1.3926 0.7188 0.0000 +vt 1.3877 0.7070 0.0000 +vt 1.3955 0.7202 0.0000 +vt 1.3975 0.7209 0.0000 +vt 1.3799 0.7068 0.0000 +vt 1.3955 0.7073 0.0000 +vt 1.3867 0.6982 0.0000 +vt 1.3984 0.7075 0.0000 +vt 1.4004 0.7075 0.0000 +vt 1.3789 0.7012 0.0000 +vt 1.3936 0.6958 0.0000 +vt 1.3818 0.6907 0.0000 +vt 1.3965 0.6948 0.0000 +vt 1.3984 0.6938 0.0000 +vt 1.3877 0.6855 0.0000 +vt 1.3896 0.6836 0.0000 +vt 1.3916 0.6821 0.0000 +vt 1.3789 0.6760 0.0000 +vt 1.3799 0.6738 0.0000 +vt 1.3662 0.6707 0.0000 +vt 1.3799 0.7224 0.0000 +vt 1.3848 0.7153 0.0000 +vt 1.3828 0.7256 0.0000 +vt 1.3740 0.7310 0.0000 +vt 1.3887 0.7173 0.0000 +vt 1.3867 0.7297 0.0000 +vt 1.3936 0.7197 0.0000 +vt 1.3867 0.7073 0.0000 +vt 1.3721 0.7268 0.0000 +vt 1.3760 0.7361 0.0000 +vt 1.3906 0.7073 0.0000 +vt 1.3877 0.7310 0.0000 +vt 1.3848 0.6987 0.0000 +vt 1.3633 0.7327 0.0000 +vt 1.3965 0.7075 0.0000 +vt 1.3760 0.7378 0.0000 +vt 1.3955 0.7205 0.0000 +vt 1.3643 0.7280 0.0000 +vt 1.3633 0.7380 0.0000 +vt 1.3633 0.7397 0.0000 +vt 1.3535 0.7302 0.0000 +vt 1.3770 0.7393 0.0000 +vt 1.3555 0.7261 0.0000 +vt 1.3516 0.7351 0.0000 +vt 1.3506 0.7368 0.0000 +vt 1.3457 0.7241 0.0000 +vt 1.3496 0.7380 0.0000 +vt 1.3486 0.7209 0.0000 +vt 1.3408 0.7278 0.0000 +vt 1.3398 0.7153 0.0000 +vt 1.3398 0.7290 0.0000 +vt 1.3896 0.6973 0.0000 +vt 1.3447 0.7136 0.0000 +vt 1.3350 0.7170 0.0000 +vt 1.3945 0.6953 0.0000 +vt 1.3389 0.7051 0.0000 +vt 1.3330 0.7178 0.0000 +vt 1.3428 0.7053 0.0000 +vt 1.3984 0.7078 0.0000 +vt 1.3330 0.7048 0.0000 +vt 1.3408 0.6951 0.0000 +vt 1.3311 0.7048 0.0000 +vt 1.3965 0.7212 0.0000 +vt 1.3291 0.7046 0.0000 +vt 1.3447 0.6970 0.0000 +vt 1.3359 0.6926 0.0000 +vt 1.3467 0.6868 0.0000 +vt 1.3340 0.6919 0.0000 +vt 1.3330 0.6914 0.0000 +vt 1.3428 0.6826 0.0000 +vt 1.3555 0.6814 0.0000 +vt 1.3418 0.6814 0.0000 +vt 1.3809 0.6914 0.0000 +vt 1.3408 0.6802 0.0000 +vt 1.3574 0.6858 0.0000 +vt 1.3535 0.6763 0.0000 +vt 1.3662 0.6799 0.0000 +vt 1.3535 0.6746 0.0000 +vt 1.3525 0.6731 0.0000 +vt 1.3652 0.6846 0.0000 +vt 1.3662 0.6743 0.0000 +vt 1.3760 0.6824 0.0000 +vt 1.3662 0.6726 0.0000 +vt 1.3662 0.6711 0.0000 +vt 1.3779 0.6772 0.0000 +vt 1.3838 0.6885 0.0000 +vt 1.3789 0.6758 0.0000 +vt 1.3799 0.6743 0.0000 +vt 1.3887 0.6846 0.0000 +vt 1.3906 0.6824 0.0000 +vt 1.3975 0.6941 0.0000 +vt 1.4004 0.7078 0.0000 +vt 1.3721 0.7273 0.0000 +vt 1.3789 0.7224 0.0000 +vt 1.3721 0.7266 0.0000 +vt 1.3633 0.7285 0.0000 +vt 1.3633 0.7280 0.0000 +vt 1.3555 0.7258 0.0000 +vt 1.3447 0.7139 0.0000 +vt 1.3838 0.7156 0.0000 +vt 1.3457 0.6975 0.0000 +vt 1.3506 0.6907 0.0000 +vt 1.3574 0.6863 0.0000 +vt 1.3652 0.6851 0.0000 +vt 1.3848 0.7158 0.0000 +vt 1.3740 0.6870 0.0000 +vt 1.3809 0.6921 0.0000 +vt 1.3848 0.6992 0.0000 +vt 1.3857 0.7075 0.0000 +vt 1.3652 0.6831 0.0000 +vt 1.3740 0.6851 0.0000 +vt 1.3740 0.6858 0.0000 +vt 1.3652 0.6838 0.0000 +vt 1.3564 0.6843 0.0000 +vt 1.3574 0.6851 0.0000 +vt 1.3496 0.6890 0.0000 +vt 1.3437 0.6963 0.0000 +vt 1.3418 0.7048 0.0000 +vt 1.3428 0.7139 0.0000 +vt 1.3809 0.6909 0.0000 +vt 1.3437 0.7136 0.0000 +vt 1.3477 0.7214 0.0000 +vt 1.3545 0.7268 0.0000 +vt 1.3633 0.7283 0.0000 +vt 1.3818 0.6904 0.0000 +vt 1.3867 0.7070 0.0000 +vt 1.3857 0.6980 0.0000 +vt 1.3857 0.6982 0.0000 +vt 1.3799 0.7136 0.0000 +vt 1.3818 0.7073 0.0000 +vt 1.3760 0.7188 0.0000 +vt 1.3701 0.7222 0.0000 +vt 1.3809 0.7007 0.0000 +vt 1.3643 0.7231 0.0000 +vt 1.3770 0.6953 0.0000 +vt 1.3721 0.6914 0.0000 +vt 1.3652 0.6897 0.0000 +vt 1.3574 0.7217 0.0000 +vt 1.3525 0.7178 0.0000 +vt 1.3594 0.6907 0.0000 +vt 1.3535 0.6941 0.0000 +vt 1.3486 0.7122 0.0000 +vt 1.3496 0.6995 0.0000 +vt 1.3799 0.7134 0.0000 +vt 1.3818 0.7068 0.0000 +vt 1.3809 0.7000 0.0000 +vt 1.3643 0.7234 0.0000 +vt 1.3516 0.7178 0.0000 +vt 1.3770 0.6943 0.0000 +vt 1.3486 0.7119 0.0000 +vt 1.3477 0.7051 0.0000 +vt 1.3486 0.6987 0.0000 +vt 1.3525 0.6931 0.0000 +vt 1.3584 0.6897 0.0000 +vt 1.3652 0.6887 0.0000 +vt 1.3721 0.6902 0.0000 +vt 1.6934 0.1611 0.0000 +vt 1.7080 0.1606 0.0000 +vt 1.7012 0.1733 0.0000 +vt 1.7002 0.1484 0.0000 +vt 1.6865 0.1489 0.0000 +vt 1.6865 0.1733 0.0000 +vt 1.6797 0.1611 0.0000 +vt 1.6943 0.1606 0.0000 +vt 1.7012 0.1738 0.0000 +vt 1.7090 0.1606 0.0000 +vt 1.7021 0.1475 0.0000 +vt 1.6787 0.1602 0.0000 +vt 1.6865 0.1470 0.0000 +vt 1.6953 0.1587 0.0000 +vt 1.6953 0.1602 0.0000 +vt 1.6943 0.1602 0.0000 +vt 1.6963 0.1587 0.0000 +vt 1.6953 0.1577 0.0000 +vt 1.6934 0.1587 0.0000 +vt 1.6943 0.1577 0.0000 +vt 1.7002 0.1743 0.0000 +vt 1.6855 0.1724 0.0000 +vt 1.7100 0.1621 0.0000 +vt 1.7041 0.1475 0.0000 +vt 1.6787 0.1582 0.0000 +vt 1.6885 0.1455 0.0000 +vt 1.7041 0.1689 0.0000 +vt 1.6982 0.1729 0.0000 +vt 1.7070 0.1631 0.0000 +vt 1.7070 0.1563 0.0000 +vt 1.7031 0.1504 0.0000 +vt 1.6973 0.1475 0.0000 +vt 1.6904 0.1475 0.0000 +vt 1.6914 0.1729 0.0000 +vt 1.6846 0.1514 0.0000 +vt 1.6816 0.1572 0.0000 +vt 1.6816 0.1641 0.0000 +vt 1.6855 0.1699 0.0000 +vt 1.6924 0.1611 0.0000 +vt 1.6992 0.1724 0.0000 +vt 1.6924 0.1743 0.0000 +vt 1.7041 0.1675 0.0000 +vt 1.7061 0.1611 0.0000 +vt 1.7041 0.1543 0.0000 +vt 1.6992 0.1494 0.0000 +vt 1.6924 0.1479 0.0000 +vt 1.6855 0.1499 0.0000 +vt 1.6807 0.1548 0.0000 +vt 1.6807 0.1680 0.0000 +vt 1.7070 0.1680 0.0000 +vt 1.7070 0.1533 0.0000 +vt 1.7021 0.1479 0.0000 +vt 1.6943 0.1460 0.0000 +vt 1.6875 0.1479 0.0000 +vt 1.6816 0.1533 0.0000 +vt 1.7021 0.1733 0.0000 +vt 1.6797 0.1606 0.0000 +vt 1.6816 0.1680 0.0000 +vt 1.6875 0.1733 0.0000 +vt 1.6943 0.1758 0.0000 +vt 1.6943 0.1753 0.0000 +vt 1.6943 0.1597 0.0000 +vt 1.7061 0.1543 0.0000 +vt 1.7080 0.1611 0.0000 +vt 1.7021 0.1489 0.0000 +vt 1.6963 0.1465 0.0000 +vt 1.6895 0.1475 0.0000 +vt 1.6836 0.1519 0.0000 +vt 1.6816 0.1582 0.0000 +vt 1.7051 0.1675 0.0000 +vt 1.6826 0.1650 0.0000 +vt 1.6865 0.1704 0.0000 +vt 1.6934 0.1729 0.0000 +vt 1.7002 0.1719 0.0000 +vt 1.6943 0.1592 0.0000 +vt 1.6953 0.1724 0.0000 +vt 1.6885 0.1709 0.0000 +vt 1.7021 0.1699 0.0000 +vt 1.7061 0.1650 0.0000 +vt 1.7080 0.1582 0.0000 +vt 1.7061 0.1519 0.0000 +vt 1.7002 0.1475 0.0000 +vt 1.6836 0.1665 0.0000 +vt 1.6826 0.1533 0.0000 +vt 1.6816 0.1597 0.0000 +vt 1.7041 0.1494 0.0000 +vt 1.7080 0.1553 0.0000 +vt 1.6982 0.1460 0.0000 +vt 1.6914 0.1460 0.0000 +vt 1.6855 0.1494 0.0000 +vt 1.6816 0.1553 0.0000 +vt 1.6816 0.1621 0.0000 +vt 1.7080 0.1621 0.0000 +vt 1.6855 0.1680 0.0000 +vt 1.6914 0.1714 0.0000 +vt 1.6982 0.1714 0.0000 +vt 1.7041 0.1680 0.0000 +vt 1.6953 0.1465 0.0000 +vt 1.6885 0.1479 0.0000 +vt 1.6836 0.1523 0.0000 +vt 1.6816 0.1587 0.0000 +vt 1.6826 0.1655 0.0000 +vt 1.7002 0.1641 0.0000 +vt 1.6934 0.1660 0.0000 +vt 1.7021 0.1572 0.0000 +vt 1.6973 0.1519 0.0000 +vt 1.6875 0.1606 0.0000 +vt 1.6895 0.1538 0.0000 +vt 1.6924 0.1597 0.0000 +vt 1.6953 0.1606 0.0000 +vt 1.6953 0.1592 0.0000 +vt 1.6943 0.1582 0.0000 +vt 1.6973 0.1606 0.0000 +vt 1.6953 0.1626 0.0000 +vt 1.6963 0.1582 0.0000 +vt 1.6924 0.1616 0.0000 +vt 1.6934 0.1572 0.0000 +vt 1.6914 0.1592 0.0000 +vt 1.6934 0.1577 0.0000 +vt 1.6953 0.1572 0.0000 +vt 1.6953 0.1597 0.0000 +vt 1.6924 0.1606 0.0000 +vt 1.6973 0.1592 0.0000 +vt 1.6943 0.1626 0.0000 +vt 1.6973 0.1616 0.0000 +# 1356 texture coords + +g 2b949347_2 +f 5884/6698/7780 5885/6699/7780 5886/6699/7780 +f 5887/6700/7781 5888/6701/7781 5889/6702/7781 +f 5890/6703/7782 5888/6701/7783 5887/6700/7782 +f 5888/6701/7783 5891/6704/7784 5889/6702/7785 +f 5889/6702/7785 5891/6704/7784 5892/6705/7786 +f 5892/6705/7786 5893/6706/7787 5894/6707/7787 +f 5895/6708/7782 5890/6703/7782 5887/6700/7782 +f 5896/6709/7788 5890/6703/7788 5895/6708/7788 +f 5897/6710/7788 5896/6709/7788 5895/6708/7788 +f 5898/6711/7789 5896/6709/7790 5897/6710/7790 +f 5899/6712/7791 5898/6711/7789 5900/6713/7792 +f 5901/6714/7793 5899/6712/7791 5900/6713/7792 +f 5902/6715/7794 5899/6712/7791 5901/6714/7793 +f 5903/6716/7795 5902/6715/7794 5901/6714/7793 +f 5904/6717/7796 5902/6715/7794 5903/6716/7795 +f 5905/6718/7797 5904/6717/7796 5903/6716/7795 +f 5906/6719/7798 5904/6717/7796 5905/6718/7797 +f 5907/6720/7799 5906/6719/7798 5905/6718/7797 +f 5908/6721/7800 5906/6719/7798 5907/6720/7799 +f 5900/6713/7792 5898/6711/7790 5897/6710/7790 +f 5909/6722/7800 5908/6721/7800 5907/6720/7799 +f 5910/6723/7801 5908/6721/7801 5909/6722/7801 +f 5894/6707/7801 5910/6723/7801 5909/6722/7801 +f 5893/6706/7787 5910/6723/7787 5894/6707/7787 +f 5891/6704/7802 5893/6706/7802 5892/6705/7802 +f 5911/6724/7803 5912/6725/7804 5913/6726/7805 +f 5914/6727/7806 5913/6726/7805 5915/6728/7807 +f 5916/6729/7808 5917/6730/7809 5912/6725/7804 +f 5918/6731/7810 5919/6732/7811 5917/6730/7809 +f 5920/6733/7812 5921/6734/7813 5919/6732/7811 +f 5920/6733/7812 5922/6735/7814 5921/6734/7813 +f 5918/6731/7815 5920/6733/7812 5919/6732/7811 +f 5922/6735/7814 5923/6736/7816 5924/6701/7817 +f 5923/6736/7816 5925/6737/7818 5926/6738/7819 +f 5925/6737/7818 5927/6739/7820 5928/6740/7821 +f 5927/6739/7820 5929/6741/7822 5930/6742/7823 +f 5922/6735/7824 5924/6701/7824 5921/6734/7813 +f 5931/6743/7825 5915/6728/7807 5932/6744/7826 +f 5933/6745/7827 5931/6743/7825 5932/6744/7826 +f 5929/6741/7822 5933/6745/7827 5934/6746/7828 +f 5933/6745/7827 5932/6744/7826 5934/6746/7828 +f 5914/6727/7829 5911/6724/7830 5913/6726/7803 +f 5931/6743/7806 5914/6727/7829 5915/6728/7806 +f 5911/6724/7830 5916/6729/7831 5912/6725/7808 +f 5916/6729/7831 5918/6731/7810 5917/6730/7810 +f 5929/6741/7832 5934/6746/7832 5930/6742/7833 +f 5927/6739/7834 5930/6742/7833 5928/6740/7834 +f 5925/6737/7819 5928/6740/7819 5926/6738/7835 +f 5923/6736/7817 5926/6738/7835 5924/6701/7817 +f 5935/6747/7836 5936/6748/7836 5937/6749/7836 +f 5938/6750/7837 5939/6751/7837 5940/6752/7837 +f 5938/6750/7837 5941/6751/7837 5942/6753/7837 +f 5938/6750/7837 5942/6753/7837 5943/6754/7838 +f 5938/6750/7837 5940/6752/7837 5941/6751/7837 +f 5938/6750/7837 5944/6755/7837 5945/6753/7837 +f 5938/6750/7837 5945/6753/7837 5939/6751/7837 +f 5946/6756/7839 5947/6757/7839 5948/6758/7840 +f 5948/6758/7840 5949/6759/7841 5950/6760/7842 +f 5951/6761/7843 5949/6759/7841 5952/6761/7844 +f 5953/6762/7845 5951/6761/7843 5952/6761/7844 +f 5954/6762/7846 5953/6762/7845 5952/6761/7844 +f 5953/6762/7845 5954/6762/7846 5955/6763/7847 +f 5956/6763/7847 5953/6762/7845 5955/6763/7847 +f 5957/6764/7848 5958/6765/7849 5959/6766/7850 +f 5960/6767/7851 5959/6766/7850 5961/6767/7852 +f 5960/6767/7851 5961/6767/7852 5962/6768/7853 +f 5961/6767/7852 5963/6768/7854 5962/6768/7853 +f 5962/6768/7853 5963/6768/7854 5964/6769/7855 +f 5965/6769/7855 5962/6768/7853 5964/6769/7855 +f 5966/6770/7856 5958/6765/7849 5967/6771/7857 +f 5966/6770/7856 5967/6771/7857 5968/6772/7858 +f 5966/6770/7856 5968/6772/7858 5969/6773/7859 +f 5970/6764/7860 5969/6773/7859 5971/6773/7860 +f 5970/6764/7860 5971/6773/7860 5972/6773/7860 +f 5973/6764/7860 5970/6764/7860 5972/6773/7860 +f 5974/6764/7860 5973/6764/7860 5972/6773/7860 +f 5975/6773/7860 5974/6764/7860 5972/6773/7860 +f 5974/6764/7860 5975/6773/7860 5976/6764/7860 +f 5975/6773/7860 5977/6773/7860 5976/6764/7860 +f 5978/6764/7860 5976/6764/7860 5977/6773/7860 +f 5979/6773/7860 5978/6764/7860 5977/6773/7860 +f 5979/6773/7860 5980/6764/7861 5978/6764/7860 +f 5979/6773/7860 5981/6773/7860 5980/6764/7861 +f 5981/6773/7860 5982/6773/7862 5980/6764/7861 +f 5983/6770/7863 5980/6764/7861 5982/6773/7862 +f 5984/6765/7864 5985/6766/7865 5983/6770/7863 +f 5986/6767/7866 5985/6766/7865 5987/6767/7867 +f 5985/6766/7865 5988/6764/7868 5987/6767/7867 +f 5989/6768/7853 5986/6767/7866 5987/6767/7867 +f 5990/6768/7854 5989/6768/7853 5987/6767/7867 +f 5989/6768/7853 5990/6768/7854 5991/6769/7855 +f 5992/6769/7855 5989/6768/7853 5991/6769/7855 +f 5960/6767/7869 5957/6764/7869 5959/6766/7870 +f 5966/6770/7871 5959/6766/7870 5958/6765/7872 +f 5969/6773/7873 5970/6764/7873 5966/6770/7871 +f 5993/6760/7874 5994/6759/7874 5995/6758/7875 +f 5996/6757/7876 5997/6756/7876 5995/6758/7875 +f 5985/6766/7877 5984/6765/7878 5988/6764/7877 +f 5998/6771/7879 5984/6765/7878 5983/6770/7880 +f 5999/6772/7881 5998/6771/7879 5983/6770/7880 +f 5999/6772/7881 5983/6770/7880 5982/6773/7882 +f 6000/6774/7883 6001/6775/7883 6002/6776/7883 +f 6003/6777/7884 6004/6775/7884 6005/6774/7884 +f 6003/6777/7884 6006/6778/7884 6007/6779/7884 +f 6003/6777/7884 6005/6774/7884 6006/6778/7884 +f 6008/6780/7885 6009/6781/7885 6010/6782/7885 +f 6008/6780/7885 6011/6783/7885 6012/6781/7885 +f 6008/6780/7885 6010/6782/7885 6013/6784/7885 +f 6008/6780/7885 6013/6784/7885 6011/6783/7885 +f 6008/6780/7885 6014/6780/7886 6015/6780/7885 +f 6008/6780/7885 6015/6780/7885 6009/6781/7885 +f 6016/6785/7887 6017/6786/7888 6018/6787/7887 +f 6017/6786/7888 6019/6788/7889 6018/6787/7887 +f 6017/6786/7888 6020/6789/7890 6019/6788/7889 +f 6020/6789/7890 6021/6790/7891 6019/6788/7889 +f 6020/6789/7890 6022/6791/7892 6021/6790/7891 +f 6022/6791/7892 6023/6792/7893 6021/6790/7891 +f 6022/6791/7892 6024/6793/7894 6023/6792/7893 +f 6024/6793/7894 6025/6794/7895 6023/6792/7893 +f 6024/6793/7894 6026/6795/7896 6025/6794/7895 +f 6026/6795/7896 6027/6796/7897 6025/6794/7895 +f 6026/6795/7896 6028/6797/7898 6027/6796/7897 +f 6028/6797/7898 6029/6798/7899 6027/6796/7897 +f 6028/6797/7898 6030/6799/7900 6029/6798/7899 +f 6030/6799/7900 6031/6800/7901 6029/6798/7899 +f 6030/6799/7900 6032/6801/7902 6031/6800/7901 +f 6032/6801/7902 6033/6802/7903 6031/6800/7901 +f 6032/6801/7902 6034/6803/7904 6033/6802/7903 +f 6034/6803/7904 6035/6804/7905 6033/6802/7903 +f 6034/6803/7904 6036/6805/7906 6035/6804/7905 +f 6036/6805/7906 6037/6806/7907 6035/6804/7905 +f 6036/6805/7906 6038/6807/7908 6037/6806/7907 +f 6038/6807/7908 6039/6808/7909 6037/6806/7907 +f 6038/6807/7908 6040/6809/7910 6039/6808/7909 +f 6040/6809/7910 6041/6810/7911 6039/6808/7909 +f 6040/6809/7910 6042/6811/7912 6041/6810/7911 +f 6042/6811/7912 6043/6812/7913 6041/6810/7911 +f 6042/6811/7912 6044/6813/7914 6043/6812/7913 +f 6044/6813/7914 6045/6814/7915 6043/6812/7913 +f 6044/6813/7914 6046/6815/7916 6045/6814/7915 +f 6046/6815/7916 6047/6816/7917 6045/6814/7915 +f 6046/6815/7916 6016/6817/7918 6047/6816/7917 +f 6016/6817/7918 6018/6818/7918 6047/6816/7917 +f 6048/6819/7919 6049/6820/7920 6050/6821/7919 +f 6049/6820/7920 6051/6822/7889 6050/6821/7919 +f 6049/6820/7920 6052/6823/7890 6051/6822/7889 +f 6052/6823/7890 6053/6824/7921 6051/6822/7889 +f 6052/6823/7890 6054/6825/7922 6053/6824/7921 +f 6054/6825/7922 6055/6826/7893 6053/6824/7921 +f 6054/6825/7922 6056/6827/7894 6055/6826/7893 +f 6056/6827/7894 6057/6828/7895 6055/6826/7893 +f 6056/6827/7894 6058/6829/7896 6057/6828/7895 +f 6058/6829/7896 6059/6830/7897 6057/6828/7895 +f 6058/6829/7896 6060/6831/7898 6059/6830/7897 +f 6060/6831/7898 6061/6832/7899 6059/6830/7897 +f 6060/6831/7898 6062/6833/7923 6061/6832/7899 +f 6062/6833/7923 6063/6834/7901 6061/6832/7899 +f 6062/6833/7923 6064/6835/7924 6063/6834/7901 +f 6064/6835/7924 6065/6836/7925 6063/6834/7901 +f 6064/6835/7924 6066/6837/7904 6065/6836/7925 +f 6066/6837/7904 6067/6838/7926 6065/6836/7925 +f 6066/6837/7904 6068/6839/7927 6067/6838/7926 +f 6068/6839/7927 6069/6840/7907 6067/6838/7926 +f 6068/6839/7927 6070/6841/7908 6069/6840/7907 +f 6070/6841/7908 6071/6842/7928 6069/6840/7907 +f 6070/6841/7908 6072/6843/7910 6071/6842/7928 +f 6072/6843/7910 6073/6844/7911 6071/6842/7928 +f 6072/6843/7910 6074/6845/7912 6073/6844/7911 +f 6074/6845/7912 6075/6846/7913 6073/6844/7911 +f 6074/6845/7912 6076/6847/7929 6075/6846/7913 +f 6076/6847/7929 6077/6848/7915 6075/6846/7913 +f 6076/6847/7929 6078/6849/7916 6077/6848/7915 +f 6078/6849/7916 6079/6850/7930 6077/6848/7915 +f 6078/6849/7916 6048/6851/7931 6079/6850/7930 +f 6048/6851/7931 6050/6852/7931 6079/6850/7930 +f 6080/6819/7919 6081/6820/7920 6082/6821/7919 +f 6081/6820/7920 6083/6822/7932 6082/6821/7919 +f 6081/6820/7920 6084/6823/7890 6083/6822/7932 +f 6084/6823/7890 6085/6824/7921 6083/6822/7932 +f 6084/6823/7890 6086/6825/7933 6085/6824/7921 +f 6086/6825/7933 6087/6826/7893 6085/6824/7921 +f 6086/6825/7933 6088/6827/7894 6087/6826/7893 +f 6088/6827/7894 6089/6828/7895 6087/6826/7893 +f 6088/6827/7894 6090/6829/7896 6089/6828/7895 +f 6090/6829/7896 6091/6830/7897 6089/6828/7895 +f 6090/6829/7896 6092/6831/7898 6091/6830/7897 +f 6092/6831/7898 6093/6832/7934 6091/6830/7897 +f 6092/6831/7898 6094/6833/7923 6093/6832/7934 +f 6094/6833/7923 6095/6834/7901 6093/6832/7934 +f 6094/6833/7923 6096/6835/7924 6095/6834/7901 +f 6096/6835/7924 6097/6836/7925 6095/6834/7901 +f 6096/6835/7924 6098/6837/7935 6097/6836/7925 +f 6098/6837/7935 6099/6838/7926 6097/6836/7925 +f 6098/6837/7935 6100/6839/7927 6099/6838/7926 +f 6100/6839/7927 6101/6840/7907 6099/6838/7926 +f 6100/6839/7927 6102/6841/7908 6101/6840/7907 +f 6102/6841/7908 6103/6842/7928 6101/6840/7907 +f 6102/6841/7908 6104/6843/7910 6103/6842/7928 +f 6104/6843/7910 6105/6844/7911 6103/6842/7928 +f 6104/6843/7910 6106/6845/7912 6105/6844/7911 +f 6106/6845/7912 6107/6846/7913 6105/6844/7911 +f 6106/6845/7912 6108/6847/7914 6107/6846/7913 +f 6108/6847/7914 6109/6848/7915 6107/6846/7913 +f 6108/6847/7914 6110/6849/7916 6109/6848/7915 +f 6110/6849/7916 6111/6850/7930 6109/6848/7915 +f 6110/6849/7916 6080/6851/7936 6111/6850/7930 +f 6080/6851/7936 6082/6852/7936 6111/6850/7930 +f 6112/6853/7937 6113/6854/7937 6114/6855/7937 +f 6115/6856/7937 6112/6853/7937 6114/6855/7937 +f 6112/6853/7937 6115/6856/7937 6116/6857/7937 +f 6115/6856/7937 6117/6858/7937 6116/6857/7937 +f 6118/6859/7937 6116/6857/7937 6117/6858/7937 +f 6119/6860/7937 6118/6859/7937 6117/6858/7937 +f 6120/6861/7937 6119/6860/7937 6117/6858/7937 +f 6121/6862/7937 6120/6861/7937 6117/6858/7937 +f 6122/6863/7937 6121/6862/7937 6117/6858/7937 +f 6122/6863/7937 6117/6858/7937 6123/6864/7937 +f 6122/6863/7937 6123/6864/7937 6124/6865/7937 +f 6122/6863/7937 6124/6865/7937 6125/6866/7937 +f 6122/6863/7937 6125/6866/7937 6126/6867/7937 +f 6122/6863/7937 6126/6867/7937 6127/6868/7937 +f 6128/6869/7938 6129/6870/7939 6113/6871/7939 +f 6112/6872/7940 6128/6869/7938 6113/6871/7939 +f 6130/6873/7941 6128/6869/7938 6112/6872/7940 +f 6116/6874/7942 6130/6873/7941 6112/6872/7940 +f 6131/6875/7943 6130/6873/7941 6116/6874/7942 +f 6118/6876/7944 6131/6875/7943 6116/6874/7942 +f 6132/6877/7945 6131/6875/7943 6118/6876/7944 +f 6119/6878/7946 6132/6877/7945 6118/6876/7944 +f 6133/6879/7947 6132/6877/7945 6119/6878/7946 +f 6120/6880/7948 6133/6879/7947 6119/6878/7946 +f 6134/6881/7949 6133/6879/7947 6120/6880/7948 +f 6121/6882/7950 6134/6881/7949 6120/6880/7948 +f 6135/6883/7951 6134/6881/7949 6121/6882/7950 +f 6122/6884/7952 6135/6883/7951 6121/6882/7950 +f 6136/6885/7953 6135/6883/7951 6122/6884/7952 +f 6127/6886/7954 6136/6885/7953 6122/6884/7952 +f 6137/6887/7955 6136/6885/7953 6127/6886/7954 +f 6126/6888/7956 6137/6887/7955 6127/6886/7954 +f 6138/6889/7957 6137/6887/7955 6126/6888/7956 +f 6125/6890/7958 6138/6889/7957 6126/6888/7956 +f 6139/6891/7959 6138/6889/7957 6125/6890/7958 +f 6124/6892/7960 6139/6891/7959 6125/6890/7958 +f 6140/6893/7961 6139/6891/7959 6124/6892/7960 +f 6123/6894/7962 6140/6893/7961 6124/6892/7960 +f 6141/6895/7963 6140/6893/7961 6123/6894/7962 +f 6117/6896/7964 6141/6895/7963 6123/6894/7962 +f 6142/6897/7965 6141/6895/7963 6117/6896/7964 +f 6115/6898/7966 6142/6897/7965 6117/6896/7964 +f 6143/6899/7967 6142/6897/7965 6115/6898/7966 +f 6114/6900/7967 6143/6899/7967 6115/6898/7966 +f 6143/6899/7968 6129/6870/7968 6128/6869/7968 +f 6142/6897/7968 6143/6899/7968 6128/6869/7968 +f 6142/6897/7968 6128/6869/7968 6130/6873/7968 +f 6142/6897/7968 6130/6873/7968 6131/6875/7968 +f 6142/6897/7968 6131/6875/7968 6132/6877/7968 +f 6142/6897/7968 6132/6877/7968 6133/6879/7968 +f 6142/6897/7968 6133/6879/7968 6134/6881/7968 +f 6142/6897/7968 6134/6881/7968 6135/6883/7968 +f 6141/6895/7968 6142/6897/7968 6135/6883/7968 +f 6140/6893/7968 6141/6895/7968 6135/6883/7968 +f 6139/6891/7968 6140/6893/7968 6135/6883/7968 +f 6138/6889/7968 6139/6891/7968 6135/6883/7968 +f 6137/6887/7968 6138/6889/7968 6135/6883/7968 +f 6137/6887/7968 6135/6883/7968 6136/6885/7968 +f 6144/6901/7969 6145/6902/7970 6146/6902/7970 +f 6147/6901/7971 6144/6901/7969 6146/6902/7970 +f 6148/6903/7901 6144/6901/7969 6147/6901/7971 +f 6149/6903/7923 6148/6903/7901 6147/6901/7971 +f 6150/6904/7972 6148/6903/7901 6149/6903/7923 +f 6151/6904/7924 6150/6904/7972 6149/6903/7923 +f 6152/6905/7973 6150/6904/7972 6151/6904/7924 +f 6153/6905/7973 6152/6905/7973 6151/6904/7924 +f 6154/6906/7907 6152/6905/7974 6153/6905/7974 +f 6155/6906/7975 6154/6906/7907 6153/6905/7974 +f 6156/6907/7976 6154/6906/7907 6155/6906/7975 +f 6157/6907/7908 6156/6907/7976 6155/6906/7975 +f 6158/6908/7977 6156/6907/7976 6157/6907/7908 +f 6159/6908/7978 6158/6908/7977 6157/6907/7908 +f 5885/6699/7979 6158/6908/7977 6159/6908/7978 +f 5886/6699/7979 5885/6699/7979 6159/6908/7978 +f 6146/6902/7980 6145/6902/7980 6160/6909/7981 +f 6145/6902/7980 6161/6909/7982 6160/6909/7981 +f 6160/6909/7981 6161/6909/7982 6162/6910/7983 +f 6161/6909/7982 6163/6910/7893 6162/6910/7983 +f 6162/6910/7983 6163/6910/7893 6164/6911/7890 +f 6163/6910/7893 6165/6911/7984 6164/6911/7890 +f 6164/6911/7890 6165/6911/7984 6166/6912/7985 +f 6165/6911/7984 6167/6912/7986 6166/6912/7985 +f 6161/6909/7968 6145/6902/7968 6144/6901/7968 +f 6161/6909/7968 6144/6901/7968 6148/6903/7968 +f 6161/6909/7968 6148/6903/7968 6150/6904/7968 +f 6161/6909/7968 6150/6904/7968 6152/6905/7968 +f 6161/6909/7968 6152/6905/7968 6154/6906/7968 +f 6161/6909/7968 6154/6906/7968 6156/6907/7968 +f 6161/6909/7968 6156/6907/7968 6158/6908/7968 +f 6161/6909/7968 6158/6908/7968 5885/6699/7968 +f 6161/6909/7968 5885/6699/7968 5884/6698/7968 +f 6161/6909/7968 5884/6698/7968 6168/6913/7968 +f 6161/6909/7968 6168/6913/7968 6169/6914/7968 +f 6161/6909/7968 6169/6914/7968 6167/6912/7968 +f 6161/6909/7968 6167/6912/7968 6165/6911/7968 +f 6161/6909/7968 6165/6911/7968 6163/6910/7968 +f 6170/6915/7987 6171/6915/7988 6172/6916/7989 +f 6173/6916/7990 6170/6915/7987 6172/6916/7989 +f 6174/6915/7991 6175/6915/7992 6176/6916/7993 +f 6177/6916/7993 6174/6915/7991 6176/6916/7993 +f 6178/6917/7994 6179/6918/7994 6180/6918/7994 +f 6181/6917/7994 6178/6917/7994 6180/6918/7994 +f 6182/6917/7995 6183/6918/7995 6184/6918/7995 +f 6185/6917/7995 6182/6917/7995 6184/6918/7995 +f 6172/6916/7996 6186/6919/7997 6187/6919/7997 +f 6173/6916/7996 6172/6916/7996 6187/6919/7997 +f 6176/6916/7998 6188/6919/7999 6189/6919/7999 +f 6177/6916/7998 6176/6916/7998 6189/6919/7999 +f 6175/6915/8000 6174/6915/8000 6190/6920/8000 +f 6191/6921/8000 6175/6915/8000 6190/6920/8000 +f 6192/6920/8001 6171/6915/8002 6170/6915/8002 +f 6193/6921/8001 6192/6920/8001 6170/6915/8002 +f 6178/6917/8003 6181/6917/8003 6194/6922/8003 +f 6181/6917/8003 6195/6922/8003 6194/6922/8003 +f 6196/6923/8003 6194/6922/8003 6195/6922/8003 +f 6197/6923/8003 6196/6923/8003 6195/6922/8003 +f 6198/6924/8004 6199/6924/8004 6200/6925/8004 +f 6201/6925/8004 6198/6924/8004 6200/6925/8004 +f 6185/6917/8005 6202/6922/8005 6182/6917/8005 +f 6202/6922/8005 6203/6922/8005 6182/6917/8005 +f 6202/6922/8005 6204/6923/8005 6203/6922/8005 +f 6204/6923/8005 6205/6923/8005 6203/6922/8005 +f 6206/6924/8006 6207/6925/8006 6208/6925/8006 +f 6209/6924/8006 6206/6924/8006 6208/6925/8006 +f 6196/6923/8007 6197/6923/8007 6199/6924/8008 +f 6198/6924/8008 6196/6923/8007 6199/6924/8008 +f 6205/6923/8009 6204/6923/8009 6206/6924/8009 +f 6209/6924/8009 6205/6923/8009 6206/6924/8009 +f 6196/6926/8010 6198/6927/8010 6201/6928/8010 +f 6194/6929/8010 6196/6926/8010 6201/6928/8010 +f 6178/6930/8011 6194/6929/8010 6201/6928/8010 +f 6210/6931/8012 6178/6930/8011 6201/6928/8010 +f 6210/6931/8012 6187/6932/8013 6178/6930/8011 +f 6210/6931/8012 6211/6933/8014 6187/6932/8013 +f 6211/6933/8014 6212/6934/8015 6187/6932/8013 +f 6212/6934/8015 6213/6935/8016 6187/6932/8013 +f 6187/6932/8013 6179/6936/8017 6178/6930/8011 +f 6187/6932/8013 6213/6935/8016 6193/6937/8018 +f 6187/6932/8013 6193/6937/8018 6170/6938/8018 +f 6173/6939/8018 6187/6932/8013 6170/6938/8018 +f 6206/6927/8019 6204/6926/8019 6202/6929/8019 +f 6207/6928/8019 6206/6927/8019 6202/6929/8019 +f 6202/6929/8019 6185/6930/8020 6207/6928/8019 +f 6185/6930/8020 6214/6931/8021 6207/6928/8019 +f 6185/6930/8020 6188/6932/8022 6214/6931/8021 +f 6185/6930/8020 6184/6936/8023 6188/6932/8022 +f 6188/6932/8022 6215/6933/8024 6214/6931/8021 +f 6188/6932/8022 6216/6934/8025 6215/6933/8024 +f 6188/6932/8022 6217/6935/8026 6216/6934/8025 +f 6188/6932/8022 6191/6937/8027 6217/6935/8026 +f 6191/6937/8027 6188/6932/8022 6175/6938/8027 +f 6188/6932/8022 6176/6939/8027 6175/6938/8027 +f 6179/6918/8003 6187/6919/8003 6186/6919/8003 +f 6180/6918/8003 6179/6918/8003 6186/6919/8003 +f 6184/6918/8005 6183/6918/8005 6189/6919/8005 +f 6188/6919/8005 6184/6918/8005 6189/6919/8005 +f 6199/6924/8028 6197/6923/8028 6195/6922/8028 +f 6200/6925/8028 6199/6924/8028 6195/6922/8028 +f 6195/6922/8028 6181/6917/8029 6200/6925/8028 +f 6181/6917/8029 6218/6940/8030 6200/6925/8028 +f 6181/6917/8029 6186/6919/8031 6218/6940/8030 +f 6181/6917/8029 6180/6918/8032 6186/6919/8031 +f 6186/6919/8031 6219/6941/8033 6218/6940/8030 +f 6186/6919/8031 6220/6942/8034 6219/6941/8033 +f 6186/6919/8031 6221/6943/8035 6220/6942/8034 +f 6186/6919/8031 6192/6920/8036 6221/6943/8035 +f 6192/6920/8036 6186/6919/8031 6171/6915/8036 +f 6186/6919/8031 6172/6916/8036 6171/6915/8036 +f 6177/6916/8037 6189/6919/8038 6174/6915/8037 +f 6189/6919/8038 6190/6920/8037 6174/6915/8037 +f 6189/6919/8038 6222/6943/8039 6190/6920/8037 +f 6223/6942/8040 6222/6943/8039 6189/6919/8038 +f 6224/6941/8041 6223/6942/8040 6189/6919/8038 +f 6225/6940/8042 6224/6941/8041 6189/6919/8038 +f 6225/6940/8042 6189/6919/8038 6182/6917/8043 +f 6189/6919/8038 6183/6918/8044 6182/6917/8043 +f 6225/6940/8042 6182/6917/8043 6208/6925/8045 +f 6182/6917/8043 6203/6922/8045 6208/6925/8045 +f 6203/6922/8045 6205/6923/8045 6208/6925/8045 +f 6205/6923/8045 6209/6924/8045 6208/6925/8045 +f 6201/6925/8046 6200/6925/8046 6218/6940/8047 +f 6210/6940/8048 6201/6925/8046 6218/6940/8047 +f 6210/6940/8048 6218/6940/8047 6219/6941/8049 +f 6211/6941/8050 6210/6940/8048 6219/6941/8049 +f 6211/6941/8050 6219/6941/8049 6220/6942/8051 +f 6212/6942/8052 6211/6941/8050 6220/6942/8051 +f 6212/6942/8052 6220/6942/8051 6221/6943/8053 +f 6213/6943/8054 6212/6942/8052 6221/6943/8053 +f 6221/6943/8053 6192/6920/8055 6213/6943/8054 +f 6192/6920/8055 6193/6921/8055 6213/6943/8054 +f 6225/6940/8056 6208/6925/8057 6207/6925/8057 +f 6214/6940/8058 6225/6940/8056 6207/6925/8057 +f 6214/6940/8058 6215/6941/8059 6225/6940/8056 +f 6215/6941/8059 6224/6941/8060 6225/6940/8056 +f 6223/6942/8061 6224/6941/8060 6215/6941/8059 +f 6216/6942/8062 6223/6942/8061 6215/6941/8059 +f 6222/6943/8063 6223/6942/8061 6216/6942/8062 +f 6217/6943/8064 6222/6943/8063 6216/6942/8062 +f 6190/6920/8065 6222/6943/8063 6217/6943/8064 +f 6191/6921/8065 6190/6920/8065 6217/6943/8064 +f 6226/6944/7915 6227/6945/8066 6228/6945/8066 +f 6229/6944/7914 6226/6944/7915 6228/6945/8066 +f 6230/6946/7930 6226/6944/7915 6229/6944/7914 +f 6231/6946/7916 6230/6946/7930 6229/6944/7914 +f 6232/6947/8067 6230/6946/7930 6231/6946/7916 +f 6233/6947/8068 6232/6947/8067 6231/6946/7916 +f 6234/6948/8069 6232/6947/8067 6233/6947/8068 +f 6235/6948/8069 6234/6948/8069 6233/6947/8068 +f 6236/6949/7921 6234/6948/8070 6235/6948/8070 +f 6237/6949/8071 6236/6949/7921 6235/6948/8070 +f 6238/6950/8072 6236/6949/7921 6237/6949/8071 +f 6239/6950/7922 6238/6950/8072 6237/6949/8071 +f 6240/6951/7895 6238/6950/8072 6239/6950/7922 +f 6241/6951/7894 6240/6951/7895 6239/6950/7922 +f 6242/6952/8073 6240/6951/7895 6241/6951/7894 +f 6243/6952/8073 6242/6952/8073 6241/6951/7894 +f 6244/6953/7934 6242/6952/8074 6243/6952/8074 +f 6245/6953/7898 6244/6953/7934 6243/6952/8074 +f 6246/6954/7901 6244/6953/7934 6245/6953/7898 +f 6247/6954/7900 6246/6954/7901 6245/6953/7898 +f 6248/6955/7925 6246/6954/7901 6247/6954/7900 +f 6249/6955/7902 6248/6955/7925 6247/6954/7900 +f 6250/6956/8075 6248/6955/7925 6249/6955/7902 +f 6251/6956/8075 6250/6956/8075 6249/6955/7902 +f 6252/6957/7907 6250/6956/8076 6251/6956/8076 +f 6253/6957/7906 6252/6957/7907 6251/6956/8076 +f 6254/6958/8077 6252/6957/7907 6253/6957/7906 +f 6255/6958/7908 6254/6958/8077 6253/6957/7906 +f 6256/6959/7911 6254/6958/8077 6255/6958/7908 +f 6257/6959/7910 6256/6959/7911 6255/6958/7908 +f 6227/6945/8078 6256/6959/7911 6257/6959/7910 +f 6228/6945/8078 6227/6945/8078 6257/6959/7910 +f 6258/6960/7894 6259/6961/8079 6260/6961/8073 +f 6261/6960/7895 6258/6960/7894 6260/6961/8073 +f 6262/6962/7922 6258/6960/7894 6261/6960/7895 +f 6263/6962/7893 6262/6962/7922 6261/6960/7895 +f 6264/6963/8071 6262/6962/7922 6263/6962/7893 +f 6265/6963/7921 6264/6963/8071 6263/6962/7893 +f 6266/6964/8070 6264/6963/8071 6265/6963/7921 +f 6267/6964/8070 6266/6964/8070 6265/6963/7921 +f 6268/6965/8068 6266/6964/8069 6267/6964/8069 +f 6269/6965/8067 6268/6965/8068 6267/6964/8069 +f 6270/6966/7916 6268/6965/8068 6269/6965/8067 +f 6271/6966/7930 6270/6966/7916 6269/6965/8067 +f 6272/6967/7929 6270/6966/7916 6271/6966/7930 +f 6273/6967/7915 6272/6967/7929 6271/6966/7930 +f 6274/6968/8066 6272/6967/7929 6273/6967/7915 +f 6275/6968/8066 6274/6968/8066 6273/6967/7915 +f 6276/6969/7910 6274/6968/8078 6275/6968/8078 +f 6277/6969/7911 6276/6969/7910 6275/6968/8078 +f 6278/6970/7908 6276/6969/7910 6277/6969/7911 +f 6279/6970/8077 6278/6970/7908 6277/6969/7911 +f 6280/6971/7906 6278/6970/7908 6279/6970/8077 +f 6281/6971/7907 6280/6971/7906 6279/6970/8077 +f 6282/6956/8076 6280/6971/7906 6281/6971/7907 +f 6283/6956/8076 6282/6956/8076 6281/6971/7907 +f 6284/6955/7902 6282/6956/8075 6283/6956/8075 +f 6285/6955/7925 6284/6955/7902 6283/6956/8075 +f 6286/6972/7900 6284/6955/7902 6285/6955/7925 +f 6287/6972/7901 6286/6972/7900 6285/6955/7925 +f 6288/6973/7898 6286/6972/7900 6287/6972/7901 +f 6289/6973/7934 6288/6973/7898 6287/6972/7901 +f 6259/6961/8074 6288/6973/7898 6289/6973/7934 +f 6260/6961/8074 6259/6961/8074 6289/6973/7934 +f 6227/6945/7968 6226/6944/7968 6230/6946/7968 +f 6227/6945/7968 6230/6946/7968 6232/6947/7968 +f 6227/6945/7968 6232/6947/7968 6234/6948/7968 +f 6227/6945/7968 6234/6948/7968 6236/6949/7968 +f 6227/6945/7968 6236/6949/7968 6238/6950/7968 +f 6227/6945/7968 6238/6950/7968 6240/6951/7968 +f 6227/6945/7968 6240/6951/7968 6242/6952/7968 +f 6227/6945/7968 6242/6952/7968 6244/6953/7968 +f 6227/6945/7968 6244/6953/7968 6246/6954/7968 +f 6227/6945/7968 6246/6954/7968 6248/6955/7968 +f 6227/6945/7968 6248/6955/7968 6250/6956/7968 +f 6227/6945/7968 6250/6956/7968 6252/6957/7968 +f 6227/6945/7968 6252/6957/7968 6254/6958/7968 +f 6227/6945/7968 6254/6958/7968 6256/6959/7968 +f 6259/6961/7937 6258/6960/7937 6262/6962/7937 +f 6259/6961/7937 6262/6962/7937 6264/6963/7937 +f 6259/6961/7937 6264/6963/7937 6266/6964/7937 +f 6259/6961/7937 6266/6964/7937 6268/6965/7937 +f 6259/6961/7937 6268/6965/7937 6270/6966/7937 +f 6259/6961/7937 6270/6966/7937 6272/6967/7937 +f 6259/6961/7937 6272/6967/7937 6274/6968/7937 +f 6259/6961/7937 6274/6968/7937 6276/6969/7937 +f 6259/6961/7937 6276/6969/7937 6278/6970/7937 +f 6259/6961/7937 6278/6970/7937 6280/6971/7937 +f 6259/6961/7937 6280/6971/7937 6282/6956/7937 +f 6259/6961/7937 6282/6956/7937 6284/6955/7937 +f 6259/6961/7937 6284/6955/7937 6286/6972/7937 +f 6259/6961/7937 6286/6972/7937 6288/6973/8080 +f 6290/6974/7981 6291/6975/8081 6292/6975/8081 +f 6293/6974/7982 6290/6974/7981 6292/6975/8081 +f 6294/6976/7983 6290/6974/7981 6293/6974/7982 +f 6295/6976/7893 6294/6976/7983 6293/6974/7982 +f 6296/6977/7890 6294/6976/7983 6295/6976/7893 +f 6297/6977/8082 6296/6977/7890 6295/6976/7893 +f 6298/6978/7985 6296/6977/7890 6297/6977/8082 +f 6299/6978/7985 6298/6978/7985 6297/6977/8082 +f 6300/6979/8083 6298/6978/8069 6299/6978/8069 +f 6301/6979/8084 6300/6979/8083 6299/6978/8069 +f 6302/6980/7916 6300/6979/8083 6301/6979/8084 +f 6303/6980/7930 6302/6980/7916 6301/6979/8084 +f 6304/6981/8085 6302/6980/7916 6303/6980/7930 +f 6305/6981/8086 6304/6981/8085 6303/6980/7930 +f 6306/6982/8087 6304/6981/8085 6305/6981/8086 +f 6307/6982/8087 6306/6982/8087 6305/6981/8086 +f 6308/6983/7978 6306/6982/7979 6307/6982/7979 +f 6309/6983/7977 6308/6983/7978 6307/6982/7979 +f 6310/6984/7908 6308/6983/7978 6309/6983/7977 +f 6311/6984/8088 6310/6984/7908 6309/6983/7977 +f 6312/6985/7975 6310/6984/7908 6311/6984/8088 +f 6313/6985/7907 6312/6985/7975 6311/6984/8088 +f 6314/6986/7974 6312/6985/7975 6313/6985/7907 +f 6315/6986/7974 6314/6986/7974 6313/6985/7907 +f 6292/6975/8089 6291/6975/8089 6316/6987/8090 +f 6291/6975/8089 6317/6987/7971 6316/6987/8090 +f 6316/6987/8090 6317/6987/7971 6318/6988/7901 +f 6317/6987/7971 6319/6988/7923 6318/6988/7901 +f 6318/6988/7901 6319/6988/7923 6320/6989/7972 +f 6319/6988/7923 6321/6989/7924 6320/6989/7972 +f 6320/6989/7972 6321/6989/7924 6315/6986/8091 +f 6321/6989/7924 6314/6986/8091 6315/6986/8091 +f 6317/6987/7937 6291/6975/7937 6290/6974/7937 +f 6317/6987/7937 6290/6974/7937 6294/6976/7937 +f 6317/6987/7937 6294/6976/7937 6296/6977/7937 +f 6317/6987/7937 6296/6977/7937 6298/6978/7937 +f 6317/6987/7937 6298/6978/7937 6300/6979/7937 +f 6317/6987/7937 6300/6979/7937 6302/6980/7937 +f 6317/6987/7937 6302/6980/7937 6304/6981/7937 +f 6317/6987/7937 6304/6981/7937 6306/6982/7937 +f 6317/6987/7937 6306/6982/7937 6308/6983/7937 +f 6317/6987/7937 6308/6983/7937 6310/6984/7937 +f 6317/6987/7937 6310/6984/7937 6312/6985/7937 +f 6317/6987/7937 6312/6985/7937 6314/6986/7937 +f 6317/6987/7937 6314/6986/7937 6321/6989/7937 +f 6317/6987/7937 6321/6989/7937 6319/6988/7937 +f 6322/6990/8092 6323/6991/8092 6324/6992/8093 +f 6325/6992/8094 6322/6990/8092 6324/6992/8093 +f 6326/6990/8095 6327/6992/8095 6328/6992/8095 +f 6329/6991/8095 6326/6990/8095 6328/6992/8095 +f 6330/6993/8096 6331/6994/8097 6332/6995/8098 +f 6333/6996/8099 6330/6993/8096 6332/6995/8098 +f 6333/6996/8099 6332/6995/8098 6334/6997/8100 +f 6335/6998/8101 6333/6996/8099 6334/6997/8100 +f 6336/6994/8102 6337/6993/8103 6338/6995/8104 +f 6337/6993/8103 6339/6996/8105 6338/6995/8104 +f 6340/6997/8106 6338/6995/8104 6339/6996/8105 +f 6341/6998/8107 6340/6997/8106 6339/6996/8105 +f 6332/6995/8108 6331/6994/8108 6342/6999/8109 +f 6334/6997/8110 6332/6995/8108 6342/6999/8109 +f 6334/6997/8110 6342/6999/8109 6343/7000/8111 +f 6342/6999/8109 6344/7001/8112 6343/7000/8111 +f 6326/6990/8113 6343/7000/8111 6344/7001/8112 +f 6327/6992/8114 6326/6990/8113 6344/7001/8112 +f 6336/6994/8115 6338/6995/8115 6345/6999/8116 +f 6338/6995/8115 6340/6997/8117 6345/6999/8116 +f 6345/6999/8116 6340/6997/8117 6346/7000/8118 +f 6347/7001/8119 6345/6999/8116 6346/7000/8118 +f 6347/7001/8119 6346/7000/8118 6322/6990/8120 +f 6325/6992/8121 6347/7001/8119 6322/6990/8120 +f 6323/6991/8122 6322/6990/8123 6346/7000/8124 +f 6348/7002/8125 6323/6991/8122 6346/7000/8124 +f 6348/7002/8125 6346/7000/8124 6340/6997/8126 +f 6341/6998/8127 6348/7002/8125 6340/6997/8126 +f 6343/7000/8128 6326/6990/8129 6329/6991/8130 +f 6349/7002/8131 6343/7000/8128 6329/6991/8130 +f 6343/7000/8128 6349/7002/8131 6334/6997/8132 +f 6349/7002/8131 6335/6998/8133 6334/6997/8132 +f 6333/7003/8134 6335/7004/8135 6349/7005/8136 +f 6350/7006/8137 6333/7003/8134 6349/7005/8136 +f 6351/7007/8138 6350/7006/8137 6349/7005/8136 +f 6351/7007/8138 6349/7005/8136 6329/7008/8139 +f 6350/7006/8137 6330/7009/8140 6333/7003/8134 +f 6351/7007/8138 6329/7008/8139 6328/7010/8141 +f 6339/7011/8142 6337/7012/8143 6352/7013/8144 +f 6348/7005/8145 6339/7011/8142 6352/7013/8144 +f 6348/7005/8145 6352/7013/8144 6353/7007/8146 +f 6348/7005/8145 6341/7014/8147 6339/7011/8142 +f 6323/7008/8148 6348/7005/8145 6353/7007/8146 +f 6353/7007/8146 6324/7010/8149 6323/7008/8148 +f 6354/7015/8150 6355/7016/8151 6356/7017/8152 +f 6357/7018/8153 6354/7015/8150 6356/7017/8152 +f 6358/7019/8154 6354/7015/8150 6357/7018/8153 +f 6359/7020/8155 6358/7019/8154 6357/7018/8153 +f 6360/7021/8156 6358/7019/8154 6359/7020/8155 +f 6361/7022/8157 6360/7021/8156 6359/7020/8155 +f 6362/7023/8158 6360/7021/8156 6361/7022/8157 +f 6363/7024/8159 6362/7023/8158 6361/7022/8157 +f 6364/7025/8160 6362/7023/8158 6363/7024/8159 +f 6365/7026/8161 6364/7025/8160 6363/7024/8159 +f 6366/7027/8162 6364/7025/8160 6365/7026/8161 +f 6367/7028/8162 6366/7027/8162 6365/7026/8161 +f 6356/7017/8163 6355/7016/8163 6368/7029/8164 +f 6355/7016/8163 6369/7030/8165 6368/7029/8164 +f 6368/7029/8164 6369/7030/8165 6370/7031/8166 +f 6369/7030/8165 6371/7032/8167 6370/7031/8166 +f 6370/7031/8166 6371/7032/8167 6372/7033/8168 +f 6371/7032/8167 6373/7034/8169 6372/7033/8168 +f 6372/7033/8168 6373/7034/8169 6374/7035/8170 +f 6373/7034/8169 6375/7036/8171 6374/7035/8170 +f 6374/7035/8170 6375/7036/8171 6376/7037/8172 +f 6375/7036/8171 6377/7038/8173 6376/7037/8172 +f 6376/7037/8172 6377/7038/8173 6367/7028/8174 +f 6377/7038/8173 6366/7027/8175 6367/7028/8174 +f 6378/7039/8176 6379/7040/8177 6380/7041/8177 +f 6381/7042/8178 6378/7039/8176 6380/7041/8177 +f 6382/7043/8179 6378/7039/8176 6381/7042/8178 +f 6383/7030/8180 6382/7043/8179 6381/7042/8178 +f 6384/7044/8181 6382/7043/8179 6383/7030/8180 +f 6385/7045/8182 6384/7044/8181 6383/7030/8180 +f 6386/7046/8183 6384/7044/8181 6385/7045/8182 +f 6387/7047/8184 6386/7046/8183 6385/7045/8182 +f 6388/7048/8172 6386/7046/8183 6387/7047/8184 +f 6389/7049/8173 6388/7048/8172 6387/7047/8184 +f 6390/7050/8175 6388/7048/8172 6389/7049/8173 +f 6391/7051/8175 6390/7050/8175 6389/7049/8173 +f 6380/7041/8185 6379/7040/8185 6392/7052/8186 +f 6379/7040/8185 6393/7053/8153 6392/7052/8186 +f 6392/7052/8186 6393/7053/8153 6394/7054/8187 +f 6393/7053/8153 6395/7055/8188 6394/7054/8187 +f 6394/7054/8187 6395/7055/8188 6396/7056/8189 +f 6395/7055/8188 6397/7057/8157 6396/7056/8189 +f 6396/7056/8189 6397/7057/8157 6398/7058/8190 +f 6397/7057/8157 6399/7059/8191 6398/7058/8190 +f 6398/7058/8190 6399/7059/8191 6400/7060/8192 +f 6399/7059/8191 6401/7061/8193 6400/7060/8192 +f 6400/7060/8192 6401/7061/8193 6391/7051/8194 +f 6401/7061/8193 6390/7050/8194 6391/7051/8194 +f 6402/7062/8195 6403/7063/8196 6404/7064/8196 +f 6405/7065/8197 6402/7062/8195 6404/7064/8196 +f 6406/7066/8198 6402/7062/8195 6405/7065/8197 +f 6407/7067/8199 6406/7066/8198 6405/7065/8197 +f 6408/7068/8200 6406/7066/8198 6407/7067/8199 +f 6409/7069/8182 6408/7068/8200 6407/7067/8199 +f 6410/7070/8201 6408/7068/8200 6409/7069/8182 +f 6411/7071/8184 6410/7070/8201 6409/7069/8182 +f 6412/7072/8202 6410/7070/8201 6411/7071/8184 +f 6413/7073/8203 6412/7072/8202 6411/7071/8184 +f 6414/7074/8175 6412/7072/8202 6413/7073/8203 +f 6415/7075/8204 6414/7074/8175 6413/7073/8203 +f 6404/7064/8185 6403/7063/8185 6416/7076/8186 +f 6403/7063/8185 6417/7077/8153 6416/7076/8186 +f 6416/7076/8186 6417/7077/8153 6418/7078/8205 +f 6417/7077/8153 6419/7079/8188 6418/7078/8205 +f 6418/7078/8205 6419/7079/8188 6420/7080/8206 +f 6419/7079/8188 6421/7081/8157 6420/7080/8206 +f 6420/7080/8206 6421/7081/8157 6422/7082/8207 +f 6421/7081/8157 6423/7083/8208 6422/7082/8207 +f 6422/7082/8207 6423/7083/8208 6424/7084/8209 +f 6423/7083/8208 6425/7085/8193 6424/7084/8209 +f 6424/7084/8209 6425/7085/8193 6415/7075/8210 +f 6425/7085/8193 6414/7074/8194 6415/7075/8210 +f 6426/7086/8211 6427/7087/7790 6428/7088/7790 +f 6429/7089/7792 6426/7086/8211 6428/7088/7790 +f 6430/7090/8212 6426/7086/8211 6429/7089/7792 +f 6431/7091/7793 6430/7090/8212 6429/7089/7792 +f 6432/7092/7794 6430/7090/8212 6431/7091/7793 +f 6433/7093/7795 6432/7092/7794 6431/7091/7793 +f 6434/7094/8213 6432/7092/7794 6433/7093/7795 +f 6435/7095/8214 6434/7094/8213 6433/7093/7795 +f 6436/7096/8215 6434/7094/8213 6435/7095/8214 +f 6437/7097/8216 6436/7096/8215 6435/7095/8214 +f 6438/7098/7800 6436/7096/8215 6437/7097/8216 +f 6439/7099/7800 6438/7098/7800 6437/7097/8216 +f 6428/7088/7788 6427/7087/7788 6440/7089/8217 +f 6427/7087/7788 6441/7086/8218 6440/7089/8217 +f 6440/7089/8217 6441/7086/8218 6442/7091/8219 +f 6441/7086/8218 6443/7090/8220 6442/7091/8219 +f 6442/7091/8219 6443/7090/8220 6444/7093/8221 +f 6443/7090/8220 6445/7092/8222 6444/7093/8221 +f 6444/7093/8221 6445/7092/8222 6446/7095/8223 +f 6445/7092/8222 6447/7094/8224 6446/7095/8223 +f 6446/7095/8223 6447/7094/8224 6448/7097/8225 +f 6447/7094/8224 6449/7096/8226 6448/7097/8225 +f 6448/7097/8225 6449/7096/8226 6439/7099/7801 +f 6449/7096/8226 6438/7098/7801 6439/7099/7801 +f 6450/7094/8227 6451/7100/8228 6452/7101/8229 +f 6453/7102/8230 6450/7094/8227 6452/7101/8229 +f 6454/7103/8231 6450/7094/8227 6453/7102/8230 +f 6455/7104/8232 6454/7103/8231 6453/7102/8230 +f 6456/7105/8233 6454/7103/8231 6455/7104/8232 +f 6457/7106/8234 6456/7105/8233 6455/7104/8232 +f 6458/7107/8235 6456/7105/8233 6457/7106/8234 +f 6459/7108/8235 6458/7107/8235 6457/7106/8234 +f 6460/7109/8236 6458/7110/8237 6459/7111/8237 +f 6461/7112/8238 6460/7109/8236 6459/7111/8237 +f 6462/7113/8239 6460/7109/8236 6461/7112/8238 +f 6463/7114/8239 6462/7113/8239 6461/7112/8238 +f 6464/7115/8240 6462/7116/8241 6463/7117/8242 +f 6465/7118/8243 6464/7115/8240 6463/7117/8242 +f 6466/7119/8244 6464/7115/8240 6465/7118/8243 +f 6467/7120/8245 6466/7119/8244 6465/7118/8243 +f 6468/7121/8246 6466/7119/8244 6467/7120/8245 +f 6469/7122/8247 6468/7121/8246 6467/7120/8245 +f 6470/7123/8248 6468/7121/8246 6469/7122/8247 +f 6471/7124/8248 6470/7123/8248 6469/7122/8247 +f 6452/7125/8249 6451/7126/8249 6472/7127/8250 +f 6451/7126/8249 6473/7128/8251 6472/7127/8250 +f 6472/7127/8250 6473/7128/8251 6471/7129/8252 +f 6473/7128/8251 6470/7130/8252 6471/7129/8252 +f 6474/7131/8253 6475/7132/8254 6476/7133/8255 +f 6477/7134/8227 6474/7131/8253 6476/7133/8255 +f 6478/7135/8256 6474/7131/8253 6477/7134/8227 +f 6479/7136/8257 6478/7135/8256 6477/7134/8227 +f 6480/7137/8250 6478/7135/8256 6479/7136/8257 +f 6481/7138/8251 6480/7137/8250 6479/7136/8257 +f 6482/7139/8258 6480/7137/8250 6481/7138/8251 +f 6483/7140/8259 6482/7139/8258 6481/7138/8251 +f 6484/7141/8247 6482/7139/8258 6483/7140/8259 +f 6485/7142/8246 6484/7141/8247 6483/7140/8259 +f 6486/7143/8260 6484/7141/8247 6485/7142/8246 +f 6487/7144/8260 6486/7143/8260 6485/7142/8246 +f 6476/7133/8261 6475/7132/8261 6488/7145/8233 +f 6475/7132/8261 6489/7146/8234 6488/7145/8233 +f 6488/7145/8233 6489/7146/8234 6490/7147/8262 +f 6489/7146/8234 6491/7148/8263 6490/7147/8262 +f 6490/7147/8262 6491/7148/8263 6492/7149/8236 +f 6491/7148/8263 6493/7150/8238 6492/7149/8236 +f 6492/7149/8236 6493/7150/8238 6494/7151/8264 +f 6493/7150/8238 6495/7152/8265 6494/7151/8264 +f 6494/7151/8264 6495/7152/8265 6496/7153/8240 +f 6495/7152/8265 6497/7154/8243 6496/7153/8240 +f 6496/7153/8240 6497/7154/8243 6487/7144/8266 +f 6497/7154/8243 6486/7143/8266 6487/7144/8266 +f 6498/7155/8230 6499/7156/8267 6500/7157/8267 +f 6501/7158/8227 6498/7155/8230 6500/7157/8267 +f 6502/7159/8229 6498/7155/8230 6501/7158/8227 +f 6503/7160/8228 6502/7159/8229 6501/7158/8227 +f 6504/7161/8268 6502/7162/8269 6503/7163/8269 +f 6505/7164/8251 6504/7161/8268 6503/7163/8269 +f 6506/7165/8270 6504/7161/8268 6505/7164/8251 +f 6507/7166/8270 6506/7165/8270 6505/7164/8251 +f 6508/7167/8247 6506/7168/8271 6507/7169/8271 +f 6509/7170/8272 6508/7167/8247 6507/7169/8271 +f 6510/7171/8260 6508/7167/8247 6509/7170/8272 +f 6511/7172/8260 6510/7171/8260 6509/7170/8272 +f 6500/7157/8273 6499/7156/8273 6512/7173/8233 +f 6499/7156/8273 6513/7174/8274 6512/7173/8233 +f 6512/7173/8233 6513/7174/8274 6514/7175/8262 +f 6513/7174/8274 6515/7176/8263 6514/7175/8262 +f 6514/7175/8262 6515/7176/8263 6516/7177/8236 +f 6515/7176/8263 6517/7178/8275 6516/7177/8236 +f 6516/7177/8236 6517/7178/8275 6518/7179/8276 +f 6517/7178/8275 6519/7180/8277 6518/7179/8276 +f 6518/7179/8276 6519/7180/8277 6520/7181/8240 +f 6519/7180/8277 6521/7182/8243 6520/7181/8240 +f 6520/7181/8240 6521/7182/8243 6511/7172/8266 +f 6521/7182/8243 6510/7171/8266 6511/7172/8266 +f 5900/7183/7837 5897/7184/7837 5895/7185/7837 +f 5900/7183/7837 5895/7185/7837 5887/7186/7837 +f 5900/7183/7837 5887/7186/7837 5889/7187/7837 +f 5900/7183/7837 5889/7187/7837 5892/7188/7837 +f 5901/7189/7837 5900/7183/7837 5892/7188/7837 +f 5901/7189/7837 5892/7188/7837 5894/7190/7837 +f 5903/7191/7837 5901/7189/7837 5894/7190/7837 +f 5903/7191/7837 5894/7190/7837 5909/7192/7837 +f 5903/7191/7837 5909/7192/7837 5907/7193/7837 +f 5903/7191/7837 5907/7193/7837 5905/7194/7837 +f 6477/7134/8278 6476/7133/8279 6488/7145/8279 +f 6477/7134/8278 6488/7145/8279 6490/7147/8278 +f 6477/7134/8278 6490/7147/8278 6492/7149/8280 +f 6477/7134/8278 6492/7149/8280 6494/7151/8280 +f 6477/7134/8278 6494/7151/8280 6496/7153/8280 +f 6477/7134/8278 6496/7153/8280 6487/7144/8278 +f 6479/7136/8278 6477/7134/8278 6487/7144/8278 +f 6479/7136/8278 6487/7144/8278 6485/7142/8280 +f 6479/7136/8278 6485/7142/8280 6483/7140/8280 +f 6479/7136/8278 6483/7140/8280 6481/7138/8278 +f 6493/7150/8281 6491/7148/8282 6489/7146/8283 +f 6493/7150/8281 6489/7146/8283 6475/7132/8281 +f 6495/7152/8281 6493/7150/8281 6475/7132/8281 +f 6495/7152/8281 6475/7132/8281 6474/7131/8281 +f 6495/7152/8281 6474/7131/8281 6478/7135/8281 +f 6495/7152/8281 6478/7135/8281 6480/7137/8281 +f 6495/7152/8281 6480/7137/8281 6482/7139/8281 +f 6495/7152/8281 6482/7139/8281 6484/7141/8281 +f 6495/7152/8281 6484/7141/8281 6486/7143/8283 +f 6495/7152/8281 6486/7143/8283 6497/7154/8283 +f 6393/7053/8284 6379/7040/8285 6378/7039/8286 +f 6393/7053/8284 6378/7039/8286 6382/7043/8284 +f 6393/7053/8284 6382/7043/8284 6384/7044/8287 +f 6393/7053/8284 6384/7044/8287 6386/7046/8284 +f 6393/7053/8284 6386/7046/8284 6388/7048/8284 +f 6393/7053/8284 6388/7048/8284 6390/7050/8284 +f 6393/7053/8284 6390/7050/8284 6401/7061/8284 +f 6393/7053/8284 6401/7061/8284 6399/7059/8284 +f 6393/7053/8284 6399/7059/8284 6397/7057/8288 +f 6393/7053/8284 6397/7057/8288 6395/7055/8289 +f 6400/7060/8290 6391/7051/8291 6389/7049/8292 +f 6400/7060/8290 6389/7049/8292 6387/7047/8293 +f 6400/7060/8290 6387/7047/8293 6385/7045/8294 +f 6400/7060/8290 6385/7045/8294 6383/7030/8294 +f 6400/7060/8290 6383/7030/8294 6381/7042/8294 +f 6400/7060/8290 6381/7042/8294 6380/7041/8294 +f 6400/7060/8290 6380/7041/8294 6392/7052/8293 +f 6400/7060/8290 6392/7052/8293 6394/7054/8294 +f 6400/7060/8290 6394/7054/8294 6396/7056/8295 +f 6400/7060/8290 6396/7056/8295 6398/7058/8293 +f 6522/7195/8296 6523/6709/8297 6524/7196/8298 +f 6525/7197/8299 6522/7195/8296 6524/7196/8298 +f 6525/7197/8299 6524/7196/8298 6526/7198/8300 +f 6527/7199/8301 6525/7197/8299 6526/7198/8300 +f 6527/7199/8301 6526/7198/8300 6528/6702/8302 +f 6529/7200/8303 6527/7199/8301 6528/6702/8302 +f 6529/7200/8303 6528/6702/8302 6530/7201/8304 +f 6531/7202/8305 6529/7200/8303 6530/7201/8304 +f 6531/7202/8305 6530/7201/8304 6532/7203/8306 +f 6533/7204/8307 6531/7202/8305 6532/7203/8306 +f 6533/7204/8307 6532/7203/8306 6534/7205/8308 +f 6535/7206/8309 6533/7204/8307 6534/7205/8308 +f 6522/7195/8310 6536/7207/8311 6523/6709/8310 +f 6536/7207/8311 6537/7208/8312 6523/6709/8310 +f 6536/7207/8311 6538/7209/8313 6537/7208/8312 +f 6538/7209/8313 6539/7210/8314 6537/7208/8312 +f 6538/7209/8313 6540/7211/8315 6539/7210/8314 +f 6540/7211/8315 6541/7212/8316 6539/7210/8314 +f 6540/7211/8315 6542/7213/8317 6541/7212/8316 +f 6542/7213/8317 6543/7214/8318 6541/7212/8316 +f 6542/7213/8317 6544/7215/8319 6543/7214/8318 +f 6544/7215/8319 6545/7216/8320 6543/7214/8318 +f 6544/7215/8319 6535/7206/8321 6545/7216/8320 +f 6535/7206/8321 6534/7205/8321 6545/7216/8320 +f 6546/7217/8297 6547/7218/8297 6548/7219/8322 +f 6549/7220/8323 6546/7217/8297 6548/7219/8322 +f 6549/7220/8323 6548/7219/8322 6550/7221/8324 +f 6551/7222/8325 6549/7220/8323 6550/7221/8324 +f 6551/7222/8325 6550/7221/8324 6552/7223/8326 +f 6553/7224/8303 6551/7222/8325 6552/7223/8326 +f 6553/7224/8303 6552/7223/8326 6554/7225/8327 +f 6555/7226/8328 6553/7224/8303 6554/7225/8327 +f 6555/7226/8328 6554/7225/8327 6556/7227/8306 +f 6557/7228/8329 6555/7226/8328 6556/7227/8306 +f 6557/7228/8329 6556/7227/8306 6558/7229/8330 +f 6559/7230/8331 6557/7228/8329 6558/7229/8330 +f 6546/7217/8332 6560/7231/8333 6547/7218/8332 +f 6560/7231/8333 6561/7232/8334 6547/7218/8332 +f 6560/7231/8333 6562/7233/8335 6561/7232/8334 +f 6562/7233/8335 6563/7234/8336 6561/7232/8334 +f 6562/7233/8335 6564/7235/8337 6563/7234/8336 +f 6564/7235/8337 6565/7236/8316 6563/7234/8336 +f 6564/7235/8337 6566/7237/8338 6565/7236/8316 +f 6566/7237/8338 6567/7238/8318 6565/7236/8316 +f 6566/7237/8338 6568/7239/8319 6567/7238/8318 +f 6568/7239/8319 6569/7240/8320 6567/7238/8318 +f 6568/7239/8319 6559/7230/8339 6569/7240/8320 +f 6559/7230/8339 6558/7229/8340 6569/7240/8320 +f 6570/7088/7788 6571/7241/8341 6572/7242/8341 +f 6573/7243/7788 6570/7088/7788 6572/7242/8341 +f 6573/7244/8342 6572/7245/8343 6574/7246/8344 +f 6575/7247/8219 6573/7244/8342 6574/7246/8344 +f 6575/7247/8219 6574/7246/8344 6576/7248/8222 +f 6577/7249/8221 6575/7247/8219 6576/7248/8222 +f 6577/7249/8221 6576/7248/8222 6578/7250/8345 +f 6579/7251/8345 6577/7249/8221 6578/7250/8345 +f 6579/7252/8346 6578/7253/8346 6580/7254/8226 +f 6581/7255/8225 6579/7252/8346 6580/7254/8226 +f 6581/7255/8225 6580/7254/8226 6582/7256/7801 +f 6583/7099/7801 6581/7255/8225 6582/7256/7801 +f 6570/7088/7790 6584/7243/7792 6571/7241/7790 +f 6584/7243/7792 6585/7242/8347 6571/7241/7790 +f 6584/7243/7792 6586/7257/8348 6585/7242/8347 +f 6586/7257/8348 6587/7258/8212 6585/7242/8347 +f 6586/7257/8348 6588/7093/7795 6587/7258/8212 +f 6588/7093/7795 6589/7259/7794 6587/7258/8212 +f 6588/7093/7795 6590/7252/8214 6589/7259/7794 +f 6590/7252/8214 6591/7253/8349 6589/7259/7794 +f 6590/7252/8214 6592/7255/8350 6591/7253/8349 +f 6592/7255/8350 6593/7254/8215 6591/7253/8349 +f 6592/7255/8350 6583/7099/7800 6593/7254/8215 +f 6583/7099/7800 6582/7256/8351 6593/7254/8215 +f 6594/7260/8352 5935/6747/7836 5937/6749/8353 +f 6594/7260/8352 5937/6749/8353 6595/7261/8354 +f 6596/7262/8355 6594/7260/8352 6595/7261/8354 +f 6596/7262/8355 6595/7261/8354 6597/7263/8356 +f 6598/7264/8357 6596/7262/8355 6597/7263/8356 +f 6598/7264/8357 6597/7263/8356 6599/7265/8358 +f 6600/7266/8359 6598/7264/8357 6599/7265/8358 +f 6600/7216/8360 6599/7267/8361 6601/7268/8362 +f 6602/7269/8363 6600/7216/8360 6601/7268/8362 +f 6602/7269/8363 6601/7268/8362 6603/7270/8364 +f 6604/7271/8364 6602/7269/8363 6603/7270/8364 +f 6604/7272/8365 6603/7273/8365 6605/7274/8366 +f 6606/7275/8367 6604/7272/8365 6605/7274/8366 +f 6606/7275/8367 6605/7274/8366 6607/7276/8368 +f 6608/7277/8369 6606/7275/8367 6607/7276/8368 +f 6608/7277/8369 6607/7276/8368 6609/7278/8370 +f 6610/7279/8371 6608/7277/8369 6609/7278/8370 +f 6610/7279/8371 6609/7278/8370 6611/7280/8372 +f 6612/7281/8373 6610/7279/8371 6611/7280/8372 +f 5935/7282/8374 6613/7283/8375 5936/7284/8374 +f 6613/7283/8375 6614/7285/8376 5936/7284/8374 +f 6613/7283/8375 6612/7286/8377 6614/7285/8376 +f 6612/7286/8377 6611/7287/8378 6614/7285/8376 +f 6615/7288/8379 6616/7289/8379 6617/7290/8352 +f 6618/7291/8380 6615/7288/8379 6617/7290/8352 +f 6618/7291/8380 6617/7290/8352 6619/7292/8381 +f 6620/7293/8382 6618/7291/8380 6619/7292/8381 +f 6620/7293/8382 6619/7292/8381 6621/7294/8375 +f 6622/7295/8383 6620/7293/8382 6621/7294/8375 +f 6622/7295/8383 6621/7294/8375 6623/7296/8384 +f 6624/7297/8385 6622/7295/8383 6623/7296/8384 +f 6624/7297/8385 6623/7296/8384 6625/7298/8386 +f 6626/7299/8370 6624/7297/8385 6625/7298/8386 +f 6626/7299/8370 6625/7298/8386 6627/7300/8387 +f 6628/7301/8387 6626/7299/8370 6627/7300/8387 +f 6615/7288/8388 6629/7302/8389 6616/7289/8388 +f 6629/7302/8389 6630/7303/8357 6616/7289/8388 +f 6629/7302/8389 6631/7304/8390 6630/7303/8357 +f 6631/7304/8390 6632/7305/8391 6630/7303/8357 +f 6631/7304/8390 6633/7306/8362 6632/7305/8391 +f 6633/7306/8362 6634/7307/8392 6632/7305/8391 +f 6633/7306/8362 6635/7308/8393 6634/7307/8392 +f 6635/7308/8393 6636/7309/8394 6634/7307/8392 +f 6635/7308/8393 6637/7310/8366 6636/7309/8394 +f 6637/7310/8366 6638/7311/8367 6636/7309/8394 +f 6637/7310/8366 6628/7301/8395 6638/7311/8367 +f 6628/7301/8395 6627/7300/8395 6638/7311/8367 +f 6639/7312/8379 6640/7313/8379 6641/7106/8352 +f 6642/7314/8380 6639/7312/8379 6641/7106/8352 +f 6642/7314/8380 6641/7106/8352 6643/7315/8381 +f 6644/7316/8382 6642/7314/8380 6643/7315/8381 +f 6644/7316/8382 6643/7315/8381 6645/7317/8375 +f 6646/7318/8396 6644/7316/8382 6645/7317/8375 +f 6646/7318/8396 6645/7317/8375 6647/7074/8397 +f 6648/7319/8398 6646/7318/8396 6647/7074/8397 +f 6648/7319/8398 6647/7074/8397 6649/7320/8399 +f 6650/7321/8370 6648/7319/8398 6649/7320/8399 +f 6650/7321/8370 6649/7320/8399 6651/7322/8387 +f 6652/7323/8387 6650/7321/8370 6651/7322/8387 +f 6639/7312/8388 6653/7324/8400 6640/7313/8388 +f 6653/7324/8400 6654/7325/8357 6640/7313/8388 +f 6653/7324/8400 6655/7326/8401 6654/7325/8357 +f 6655/7326/8401 6656/7327/8391 6654/7325/8357 +f 6655/7326/8401 6657/7328/8362 6656/7327/8391 +f 6657/7328/8362 6658/7329/8402 6656/7327/8391 +f 6657/7328/8362 6659/7330/8403 6658/7329/8402 +f 6659/7330/8403 6660/7331/8404 6658/7329/8402 +f 6659/7330/8403 6661/7332/8366 6660/7331/8404 +f 6661/7332/8366 6662/7333/8367 6660/7331/8404 +f 6661/7332/8366 6652/7323/8395 6662/7333/8367 +f 6652/7323/8395 6651/7322/8395 6662/7333/8367 +f 6663/7334/7788 6664/7335/8405 6665/7336/8218 +f 6666/6755/8217 6663/7334/7788 6665/7336/8218 +f 6666/6755/8217 6665/7336/8218 6667/7337/8220 +f 6668/6750/8406 6666/6755/8217 6667/7337/8220 +f 6668/6750/8406 6667/7337/8220 6669/7338/8222 +f 6670/6754/8221 6668/6750/8406 6669/7338/8222 +f 6670/6754/8221 6669/7338/8222 6671/7339/8224 +f 5945/6753/8223 6670/6754/8221 6671/7339/8224 +f 5945/6753/8223 6671/7339/8224 6672/7340/8407 +f 5939/6751/8225 5945/6753/8223 6672/7340/8407 +f 5939/6751/8225 6672/7340/8407 6673/7341/7801 +f 5940/6752/7801 5939/6751/8225 6673/7341/7801 +f 6663/7334/7790 5944/6755/8408 6664/7335/8409 +f 5944/6755/8408 6674/7336/8211 6664/7335/8409 +f 5944/6755/8408 5938/6750/7793 6674/7336/8211 +f 5938/6750/7793 6675/7337/8212 6674/7336/8211 +f 5938/6750/7793 5943/6754/7795 6675/7337/8212 +f 5943/6754/7795 6676/7338/7794 6675/7337/8212 +f 5943/6754/7795 5942/6753/8410 6676/7338/7794 +f 5942/6753/8410 6677/7339/8411 6676/7338/7794 +f 5942/6753/8410 5941/6751/7799 6677/7339/8411 +f 5941/6751/7799 6678/7340/7798 6677/7339/8411 +f 5941/6751/7799 5940/6752/7800 6678/7340/7798 +f 5940/6752/7800 6673/7341/7800 6678/7340/7798 +f 5944/6755/7837 6663/7334/7838 6666/6755/7837 +f 5944/6755/7837 6666/6755/7837 6668/6750/7837 +f 5944/6755/7837 6668/6750/7837 6670/6754/7837 +f 5944/6755/7837 6670/6754/7837 5945/6753/7838 +f 6629/7302/8412 6615/7288/8413 6618/7291/8414 +f 6629/7302/8412 6618/7291/8414 6620/7293/8412 +f 6629/7302/8412 6620/7293/8412 6622/7295/8412 +f 6629/7302/8412 6622/7295/8412 6624/7297/8412 +f 6629/7302/8412 6624/7297/8412 6626/7299/8412 +f 6629/7302/8412 6626/7299/8412 6628/7301/8412 +f 6629/7302/8412 6628/7301/8412 6637/7310/8412 +f 6629/7302/8412 6637/7310/8412 6635/7308/8412 +f 6629/7302/8412 6635/7308/8412 6633/7306/8412 +f 6629/7302/8412 6633/7306/8412 6631/7304/8414 +f 6630/7303/8415 6632/7305/8416 6634/7307/8415 +f 6630/7303/8415 6634/7307/8415 6636/7309/8415 +f 6630/7303/8415 6636/7309/8415 6638/7311/8415 +f 6630/7303/8415 6638/7311/8415 6627/7300/8415 +f 6630/7303/8415 6627/7300/8415 6625/7298/8415 +f 6630/7303/8415 6625/7298/8415 6623/7296/8415 +f 6616/7289/8415 6630/7303/8415 6623/7296/8415 +f 6616/7289/8415 6623/7296/8415 6621/7294/8415 +f 6616/7289/8415 6621/7294/8415 6619/7292/8415 +f 6616/7289/8415 6619/7292/8415 6617/7290/8415 +f 6524/7196/8417 6523/6709/8418 6537/7208/8418 +f 6524/7196/8417 6537/7208/8418 6539/7210/8419 +f 6524/7196/8417 6539/7210/8419 6541/7212/8420 +f 6524/7196/8417 6541/7212/8420 6543/7214/8421 +f 6524/7196/8417 6543/7214/8421 6545/7216/8421 +f 6524/7196/8417 6545/7216/8421 6534/7205/8420 +f 6524/7196/8417 6534/7205/8420 6532/7203/8417 +f 6524/7196/8417 6532/7203/8417 6530/7201/8417 +f 6524/7196/8417 6530/7201/8417 6528/6702/8421 +f 6524/7196/8417 6528/6702/8421 6526/7198/8422 +f 6533/7204/8423 6535/7206/8424 6544/7215/8425 +f 6533/7204/8423 6544/7215/8425 6542/7213/8425 +f 6533/7204/8423 6542/7213/8425 6540/7211/8426 +f 6533/7204/8423 6540/7211/8426 6538/7209/8427 +f 6533/7204/8423 6538/7209/8427 6536/7207/8427 +f 6533/7204/8423 6536/7207/8427 6522/7195/8426 +f 6533/7204/8423 6522/7195/8426 6525/7197/8428 +f 6533/7204/8423 6525/7197/8428 6527/7199/8427 +f 6533/7204/8423 6527/7199/8427 6529/7200/8427 +f 6533/7204/8423 6529/7200/8427 6531/7202/8429 +f 6679/7342/7968 6680/7343/7968 6681/7344/7968 +f 6682/7345/7968 6679/7342/7968 6681/7344/7968 +f 6681/7344/7968 6683/6857/7968 6682/7345/7968 +f 6683/6857/7968 6684/6858/7968 6682/7345/7968 +f 6684/6858/7968 6683/6857/7968 6685/7346/7968 +f 6684/6858/7968 6685/7346/7968 6686/7347/7968 +f 6684/6858/7968 6686/7347/7968 6687/7348/7968 +f 6684/6858/7968 6687/7348/7968 6688/7349/7968 +f 6684/6858/7968 6688/7349/7968 6689/7350/8430 +f 6690/7351/7968 6684/6858/7968 6689/7350/8430 +f 6691/7352/7968 6690/7351/7968 6689/7350/8430 +f 6692/7353/7968 6691/7352/7968 6689/7350/8430 +f 6693/7354/7968 6692/7353/7968 6689/7350/8430 +f 6693/7354/7968 6689/7350/8430 6694/7355/7968 +f 6680/7356/7939 6695/7357/7939 6696/7358/7940 +f 6681/7359/7938 6680/7356/7939 6696/7358/7940 +f 6681/7359/7938 6696/7358/7940 6697/7360/7942 +f 6683/7361/7941 6681/7359/7938 6697/7360/7942 +f 6683/7361/7941 6697/7360/7942 6698/7362/7944 +f 6685/7363/7943 6683/7361/7941 6698/7362/7944 +f 6685/7363/7943 6698/7362/7944 6699/7364/7946 +f 6686/7365/7945 6685/7363/7943 6699/7364/7946 +f 6686/7365/7945 6699/7364/7946 6700/7366/7948 +f 6687/7367/7947 6686/7365/7945 6700/7366/7948 +f 6687/7367/7947 6700/7366/7948 6701/7368/7950 +f 6688/7369/8431 6687/7367/7947 6701/7368/7950 +f 6688/7369/8431 6701/7368/7950 6702/7370/7952 +f 6689/7371/7951 6688/7369/8431 6702/7370/7952 +f 6689/7371/7951 6702/7370/7952 6703/7372/7954 +f 6694/7373/7953 6689/7371/7951 6703/7372/7954 +f 6694/7373/7953 6703/7372/7954 6704/7374/7956 +f 6693/7375/7955 6694/7373/7953 6704/7374/7956 +f 6693/7375/7955 6704/7374/7956 6705/7376/8432 +f 6692/7377/7957 6693/7375/7955 6705/7376/8432 +f 6692/7377/7957 6705/7376/8432 6706/7378/7960 +f 6691/7379/7959 6692/7377/7957 6706/7378/7960 +f 6691/7379/7959 6706/7378/7960 6707/7380/7962 +f 6690/7381/7961 6691/7379/7959 6707/7380/7962 +f 6690/7381/7961 6707/7380/7962 6708/7382/8433 +f 6684/7383/7963 6690/7381/7961 6708/7382/8433 +f 6684/7383/7963 6708/7382/8433 6709/7384/7966 +f 6682/7385/7965 6684/7383/7963 6709/7384/7966 +f 6682/7385/7965 6709/7384/7966 6710/7386/7967 +f 6679/7387/7967 6682/7385/7965 6710/7386/7967 +f 6696/7358/7937 6695/7357/7937 6710/7386/7937 +f 6696/7358/7937 6710/7386/7937 6709/7384/7937 +f 6697/7360/7937 6696/7358/7937 6709/7384/7937 +f 6698/7362/7937 6697/7360/7937 6709/7384/7937 +f 6699/7364/7937 6698/7362/7937 6709/7384/7937 +f 6700/7366/7937 6699/7364/7937 6709/7384/7937 +f 6701/7368/7937 6700/7366/7937 6709/7384/7937 +f 6702/7370/7937 6701/7368/7937 6709/7384/7937 +f 6702/7370/7937 6709/7384/7937 6708/7382/7937 +f 6702/7370/7937 6708/7382/7937 6707/7380/7937 +f 6702/7370/7937 6707/7380/7937 6706/7378/7937 +f 6702/7370/7937 6706/7378/7937 6705/7376/7937 +f 6702/7370/7937 6705/7376/7937 6704/7374/7937 +f 6702/7370/7937 6704/7374/7937 6703/7372/7937 +f 5972/6773/8434 5971/6773/8434 6711/6756/8434 +f 5971/6773/8434 6712/6756/8434 6711/6756/8434 +f 5997/6756/8434 6712/6756/8434 5971/6773/8434 +f 5969/6773/8434 5997/6756/8434 5971/6773/8434 +f 6713/7388/8435 5965/6769/8436 5964/6769/8435 +f 6714/7388/8435 6713/7388/8435 5964/6769/8435 +f 6715/7388/8435 5992/6769/8435 5991/6769/8435 +f 6716/7388/8436 6715/7388/8435 5991/6769/8435 +f 6717/7389/8437 5956/6763/8438 5955/6763/8438 +f 6718/7389/8439 6717/7389/8437 5955/6763/8438 +f 6717/7389/8437 6718/7389/8439 6716/7388/8440 +f 6718/7389/8439 6715/7388/8440 6716/7388/8440 +f 6719/7389/8437 6720/6763/8438 6721/6763/8438 +f 6722/7389/8439 6719/7389/8437 6721/6763/8438 +f 6719/7389/8437 6722/7389/8439 6714/7388/8440 +f 6722/7389/8439 6713/7388/8440 6714/7388/8440 +f 5984/6765/8441 5998/6771/8442 6723/7390/8443 +f 5950/6760/8444 5984/6765/8441 6723/7390/8443 +f 5984/6765/8441 5950/6760/8444 5988/6764/8445 +f 5950/6760/8444 6724/6757/8446 5988/6764/8445 +f 5987/6767/8447 5988/6764/8445 6724/6757/8446 +f 5951/6761/8448 5987/6767/8447 6724/6757/8446 +f 5990/6768/7968 5987/6767/8447 5951/6761/8448 +f 5990/6768/7968 5951/6761/8448 5953/6762/7968 +f 5990/6768/7968 5953/6762/7968 5956/6763/7968 +f 5991/6769/7968 5990/6768/7968 5956/6763/7968 +f 5991/6769/7968 5956/6763/7968 6717/7389/7968 +f 5991/6769/7968 6717/7389/7968 6716/7388/7968 +f 5993/6760/8449 6725/7390/8450 5967/6771/8450 +f 5958/6765/8451 5993/6760/8449 5967/6771/8450 +f 5993/6760/8449 5958/6765/8451 6726/6757/8452 +f 5958/6765/8451 5957/6764/8453 6726/6757/8452 +f 6726/6757/8452 5957/6764/8453 5960/6767/8454 +f 6727/6761/8455 6726/6757/8452 5960/6767/8454 +f 6728/6762/7937 6727/6761/8455 5960/6767/8454 +f 6728/6762/7937 5960/6767/8454 5962/6768/7937 +f 6721/6763/7937 6728/6762/7937 5962/6768/7937 +f 6721/6763/7937 5962/6768/7937 5965/6769/7937 +f 6721/6763/7937 5965/6769/7937 6713/7388/7937 +f 6721/6763/7937 6713/7388/7937 6722/7389/8456 +f 5955/6763/7937 6715/7388/7937 6718/7389/7937 +f 5955/6763/7937 5992/6769/7937 6715/7388/7937 +f 5955/6763/7937 5989/6768/7937 5992/6769/7937 +f 5955/6763/7937 5954/6762/7937 5989/6768/7937 +f 5954/6762/7937 5986/6767/8457 5989/6768/7937 +f 5954/6762/7937 5952/6761/8458 5986/6767/8457 +f 5952/6761/8458 5949/6759/8459 5986/6767/8457 +f 5949/6759/8459 5985/6766/8460 5986/6767/8457 +f 5985/6766/8460 5949/6759/8459 5948/6758/8461 +f 5983/6770/8462 5985/6766/8460 5948/6758/8461 +f 5980/6764/8463 5983/6770/8464 5948/6758/8465 +f 5947/6757/8466 5980/6764/8463 5948/6758/8465 +f 5964/6769/7968 6719/7389/7968 6714/7388/7968 +f 5964/6769/7968 6720/6763/7968 6719/7389/7968 +f 5964/6769/7968 5963/6768/7968 6720/6763/7968 +f 5963/6768/7968 6729/6762/7968 6720/6763/7968 +f 5963/6768/7968 6730/6761/8467 6729/6762/7968 +f 5963/6768/7968 5961/6767/8468 6730/6761/8467 +f 5994/6759/8469 6730/6761/8467 5961/6767/8468 +f 5959/6766/8470 5994/6759/8469 5961/6767/8468 +f 5995/6758/8471 5994/6759/8469 5959/6766/8470 +f 5966/6770/8472 5995/6758/8471 5959/6766/8470 +f 5948/6758/8473 5950/6760/8474 6723/7390/8475 +f 5948/6758/8473 6723/7390/8475 6731/7391/8476 +f 6731/7391/8476 5946/6756/8477 5948/6758/8473 +f 6724/6757/8478 5950/6760/8474 5949/6759/8479 +f 5951/6761/8480 6724/6757/8478 5949/6759/8479 +f 5996/6757/8481 5995/6758/8482 5966/6770/8483 +f 5970/6764/8484 5996/6757/8481 5966/6770/8483 +f 5970/6764/8484 5973/6764/8485 5996/6757/8481 +f 5973/6764/8485 6732/6757/8485 5996/6757/8481 +f 6733/6757/8485 6732/6757/8485 5973/6764/8485 +f 5974/6764/8485 6733/6757/8485 5973/6764/8485 +f 6733/6757/8485 5974/6764/8485 6734/6757/8485 +f 5974/6764/8485 5976/6764/8485 6734/6757/8485 +f 6735/6757/8485 6734/6757/8485 5976/6764/8485 +f 5978/6764/8485 6735/6757/8485 5976/6764/8485 +f 5978/6764/8485 5980/6764/8485 6735/6757/8485 +f 5980/6764/8485 5947/6757/8485 6735/6757/8485 +f 6736/7392/8486 6737/7392/8486 6738/7393/8486 +f 6739/7393/8486 6736/7392/8486 6738/7393/8486 +f 6740/7394/8487 6741/7395/8488 6742/7395/8488 +f 6743/7394/8489 6740/7394/8487 6742/7395/8488 +f 6744/7396/8490 6740/7394/8487 6743/7394/8489 +f 6745/7396/8491 6744/7396/8490 6743/7394/8489 +f 6746/7397/8492 6744/7396/8490 6745/7396/8491 +f 6747/7397/8493 6746/7397/8492 6745/7396/8491 +f 6748/7398/8494 6746/7397/8492 6747/7397/8493 +f 6749/7398/8494 6748/7398/8494 6747/7397/8493 +f 6750/7395/8488 6751/7395/8488 6752/7394/8495 +f 6753/7394/8496 6750/7395/8488 6752/7394/8495 +f 6753/7394/8496 6752/7394/8495 6754/7396/8497 +f 6755/7396/8498 6753/7394/8496 6754/7396/8497 +f 6755/7396/8498 6754/7396/8497 6756/7397/8499 +f 6757/7397/8500 6755/7396/8498 6756/7397/8499 +f 6757/7397/8500 6756/7397/8499 6758/7398/8494 +f 6759/7398/8494 6757/7397/8500 6758/7398/8494 +f 6759/7398/8501 6758/7398/8501 6760/7399/8502 +f 6758/7398/8501 6761/7399/8503 6760/7399/8502 +f 6760/7399/8502 6761/7399/8503 6762/7400/8504 +f 6761/7399/8503 6763/7400/8505 6762/7400/8504 +f 6762/7400/8504 6763/7400/8505 6764/7401/8506 +f 6763/7400/8505 6765/7401/8507 6764/7401/8506 +f 6764/7401/8506 6765/7401/8507 6766/7402/8508 +f 6765/7401/8507 6767/7402/8509 6766/7402/8508 +f 6766/7402/8508 6767/7402/8509 6768/7403/8510 +f 6767/7402/8509 6769/7403/8511 6768/7403/8510 +f 6768/7403/8510 6769/7403/8511 6770/7393/8512 +f 6769/7403/8511 6739/7393/8513 6770/7393/8512 +f 6770/7393/8512 6739/7393/8513 5972/6773/8514 +f 6739/7393/8513 5975/6773/8514 5972/6773/8514 +f 5975/6773/8514 6739/7393/8513 5977/6773/8514 +f 6739/7393/8513 6738/7393/8515 5977/6773/8514 +f 5977/6773/8514 6738/7393/8515 5979/6773/8514 +f 6738/7393/8515 6771/7393/8516 5979/6773/8514 +f 6771/7393/8516 6738/7393/8515 6772/7403/8517 +f 6773/7403/8518 6771/7393/8516 6772/7403/8517 +f 6772/7403/8517 6774/7402/8519 6773/7403/8518 +f 6774/7402/8519 6775/7402/8520 6773/7403/8518 +f 6774/7402/8519 6776/7401/8521 6775/7402/8520 +f 6776/7401/8521 6777/7401/8522 6775/7402/8520 +f 6776/7401/8521 6778/7400/8504 6777/7401/8522 +f 6778/7400/8504 6779/7400/8523 6777/7401/8522 +f 6778/7400/8504 6780/7399/8502 6779/7400/8523 +f 6780/7399/8502 6781/7399/8503 6779/7400/8523 +f 6749/7398/8501 6781/7399/8503 6780/7399/8502 +f 6748/7398/8501 6749/7398/8501 6780/7399/8502 +f 6770/7404/8524 5972/7405/8525 6711/6773/8526 +f 6782/7406/8527 6770/7404/8524 6711/6773/8526 +f 6768/7407/8528 6770/7404/8524 6782/7406/8527 +f 6768/7407/8528 6782/7406/8527 6750/7408/8529 +f 6766/7409/8530 6768/7407/8528 6750/7408/8529 +f 6764/7410/8530 6766/7409/8530 6750/7408/8529 +f 6762/7411/8530 6764/7410/8530 6750/7408/8529 +f 6760/7412/8530 6762/7411/8530 6750/7408/8529 +f 6759/7413/8530 6760/7412/8530 6750/7408/8529 +f 6759/7413/8530 6750/7408/8529 6753/7414/8530 +f 6759/7413/8530 6753/7414/8530 6755/7415/8530 +f 6759/7413/8530 6755/7415/8530 6757/7416/8530 +f 5979/6773/8531 6771/7393/8532 6783/6756/8533 +f 6771/7393/8532 6784/7392/8534 6783/6756/8533 +f 6784/7392/8534 6771/7393/8532 6773/7403/8535 +f 6742/7395/8536 6784/7392/8534 6773/7403/8535 +f 6742/7395/8536 6773/7403/8535 6775/7402/8537 +f 6742/7395/8536 6775/7402/8537 6777/7401/8537 +f 6742/7395/8536 6777/7401/8537 6779/7400/8537 +f 6742/7395/8536 6779/7400/8537 6781/7399/8537 +f 6742/7395/8536 6781/7399/8537 6749/7398/8537 +f 6743/7394/8538 6742/7395/8536 6749/7398/8537 +f 6745/7396/8537 6743/7394/8538 6749/7398/8537 +f 6749/7398/8537 6747/7397/8537 6745/7396/8537 +f 6750/7395/8539 6782/7392/8540 6751/7395/8541 +f 6782/7392/8540 6736/7392/8542 6751/7395/8541 +f 6736/7392/8542 6782/7392/8540 6711/6756/8543 +f 6785/6756/8543 6736/7392/8542 6711/6756/8543 +f 6736/7392/8542 6785/6756/8543 6786/6756/8543 +f 6737/7392/8544 6736/7392/8542 6786/6756/8543 +f 6737/7392/8544 6786/6756/8543 6783/6756/8543 +f 6784/7392/8545 6737/7392/8544 6783/6756/8543 +f 6737/7392/8544 6784/7392/8545 6742/7395/8546 +f 6741/7395/8547 6737/7392/8544 6742/7395/8546 +f 6736/7392/8548 6739/7393/8447 6769/7403/8549 +f 6751/7395/8550 6736/7392/8548 6769/7403/8549 +f 6751/7395/8550 6769/7403/8549 6767/7402/8551 +f 6751/7395/8550 6767/7402/8551 6765/7401/8551 +f 6751/7395/8550 6765/7401/8551 6763/7400/8551 +f 6751/7395/8550 6763/7400/8551 6761/7399/8551 +f 6751/7395/8550 6761/7399/8551 6758/7398/8551 +f 6751/7395/8550 6758/7398/8551 6756/7397/8551 +f 6751/7395/8550 6756/7397/8551 6754/7396/8551 +f 6751/7395/8550 6754/7396/8551 6752/7394/8551 +f 6772/7403/8552 6738/7393/8454 6737/7392/8553 +f 6772/7403/8552 6737/7392/8553 6741/7395/8554 +f 6774/7402/8555 6772/7403/8552 6741/7395/8554 +f 6776/7401/8555 6774/7402/8555 6741/7395/8554 +f 6778/7400/8555 6776/7401/8555 6741/7395/8554 +f 6780/7399/8555 6778/7400/8555 6741/7395/8554 +f 6748/7398/8555 6780/7399/8555 6741/7395/8554 +f 6748/7398/8555 6741/7395/8554 6740/7394/8555 +f 6748/7398/8555 6740/7394/8555 6744/7396/8555 +f 6748/7398/8555 6744/7396/8555 6746/7397/8555 +f 6787/7391/8556 5997/6756/8557 5969/6773/8557 +f 5968/6772/8558 6787/7391/8556 5969/6773/8557 +f 6787/7391/8556 5968/6772/8558 5967/7417/8559 +f 6725/7418/8559 6787/7391/8556 5967/7417/8559 +f 5979/6773/8434 6783/6756/8434 6788/6756/8434 +f 5981/6773/8434 5979/6773/8434 6788/6756/8434 +f 5981/6773/8434 6788/6756/8434 5982/6773/8560 +f 6788/6756/8434 5946/6756/8561 5982/6773/8560 +f 5999/6772/8562 5982/6773/8560 5946/6756/8561 +f 6731/7391/8563 5999/6772/8562 5946/6756/8561 +f 5999/6772/8562 6731/7391/8563 6723/7418/8564 +f 5998/7417/8564 5999/6772/8562 6723/7418/8564 +f 5994/6759/8565 5993/6760/8566 6726/6757/8567 +f 5994/6759/8565 6726/6757/8567 6727/6761/8568 +f 6727/6761/8568 6728/6762/7846 6729/6762/7845 +f 6730/6761/8569 6727/6761/8568 6729/6762/7845 +f 6729/6762/7845 6728/6762/7846 6721/6763/7847 +f 6720/6763/7847 6729/6762/7845 6721/6763/7847 +f 6730/6761/8569 5994/6759/8570 6727/6761/8568 +f 6725/7390/8571 5993/6760/8566 5995/6758/8572 +f 6725/7390/8571 5995/6758/8572 6787/7391/8573 +f 5997/6756/8574 6787/7391/8573 5995/6758/8572 +f 6712/6756/8575 5997/6756/8575 5996/6757/8575 +f 6711/6756/8575 6712/6756/8575 5996/6757/8575 +f 6711/6756/8575 5996/6757/8575 6732/6757/8575 +f 6785/6756/8575 6711/6756/8575 6732/6757/8575 +f 6733/6757/8575 6785/6756/8575 6732/6757/8575 +f 6785/6756/8575 6733/6757/8575 6786/6756/8575 +f 6733/6757/8575 6734/6757/8575 6786/6756/8575 +f 6783/6756/8575 6786/6756/8575 6734/6757/8575 +f 6735/6757/8575 6783/6756/8575 6734/6757/8575 +f 5947/6757/8575 6783/6756/8575 6735/6757/8575 +f 5947/6757/8575 6788/6756/8575 6783/6756/8575 +f 5947/6757/8575 5946/6756/8575 6788/6756/8575 +f 6789/7419/8576 6790/7420/8576 6791/7421/8577 +f 6792/7422/8578 6789/7419/8576 6791/7421/8577 +f 6792/7422/8578 6791/7421/8577 6793/7423/8579 +f 6794/7424/8580 6792/7422/8578 6793/7423/8579 +f 6794/7424/8580 6793/7423/8579 6795/7425/8581 +f 6796/7426/8582 6794/7424/8580 6795/7425/8581 +f 6796/7426/8582 6795/7425/8581 6797/7427/8583 +f 6798/7428/8584 6796/7426/8582 6797/7427/8583 +f 6798/7428/8584 6797/7427/8583 6799/7429/8585 +f 6800/7430/8586 6798/7428/8584 6799/7429/8585 +f 6800/7430/8586 6799/7429/8585 6790/7431/8587 +f 6789/7432/8587 6800/7430/8586 6790/7431/8587 +f 6801/7433/8588 6802/7434/8589 6803/7435/8590 +f 6804/7436/8591 6801/7433/8588 6803/7435/8590 +f 6804/7436/8591 6803/7435/8590 6805/7437/8592 +f 6806/7438/8593 6804/7436/8591 6805/7437/8592 +f 6806/7438/8593 6805/7437/8592 6807/7439/8594 +f 6808/7440/8595 6806/7438/8593 6807/7439/8594 +f 6808/7440/8595 6807/7439/8594 6809/7441/8596 +f 6808/7440/8595 6809/7441/8596 6810/7442/8597 +f 6811/7443/8594 6808/7440/8595 6810/7442/8597 +f 6811/7443/8594 6810/7442/8597 6812/7444/8598 +f 6813/7445/8599 6814/7446/8600 6815/7447/8601 +f 6813/7445/8599 6815/7447/8601 6816/7448/8602 +f 6813/7445/8599 6816/7448/8602 6817/7449/8603 +f 6813/7445/8599 6817/7449/8603 6818/7450/8604 +f 6813/7445/8599 6818/7450/8604 6819/7451/8605 +f 6813/7445/8599 6819/7451/8605 6820/7452/8606 +f 6813/7445/8599 6820/7452/8606 6821/7453/8607 +f 6813/7445/8599 6821/7453/8607 6822/7454/8608 +f 6813/7445/8599 6822/7454/8608 6823/7455/8609 +f 6813/7445/8599 6823/7455/8609 6824/7456/8610 +f 6817/7457/8611 6816/7458/8612 6825/7459/8613 +f 6826/7460/8614 6817/7457/8611 6825/7459/8613 +f 6826/7460/8614 6825/7459/8613 6812/7444/8615 +f 6818/7461/8616 6817/7457/8611 6826/7460/8614 +f 6825/7459/8613 6811/7443/8617 6812/7444/8615 +f 6826/7460/8614 6812/7444/8615 6810/7442/8618 +f 6827/7462/8619 6818/7461/8616 6826/7460/8614 +f 6827/7462/8619 6826/7460/8614 6810/7442/8618 +f 6827/7463/8620 6810/7464/8621 6809/7465/8622 +f 6828/7466/8623 6827/7463/8620 6809/7465/8622 +f 6828/7466/8623 6809/7465/8622 6807/7467/8624 +f 6829/7468/8625 6828/7466/8623 6807/7467/8624 +f 6818/7469/8626 6827/7463/8620 6828/7466/8623 +f 6830/7470/8627 6829/7468/8625 6807/7467/8624 +f 6805/7471/8628 6830/7470/8627 6807/7467/8624 +f 6819/7316/8629 6828/7466/8623 6829/7468/8625 +f 6819/7316/8629 6818/7469/8626 6828/7466/8623 +f 6831/7472/8630 6830/7470/8627 6805/7471/8628 +f 6820/6784/8631 6829/7468/8625 6830/7470/8627 +f 6820/6784/8631 6819/7316/8629 6829/7468/8625 +f 6803/7473/8632 6831/7472/8630 6805/7471/8628 +f 6821/6782/8633 6830/7470/8627 6831/7472/8630 +f 6821/6782/8633 6820/6784/8631 6830/7470/8627 +f 6832/7474/8634 6831/7472/8630 6803/7473/8632 +f 6822/7475/8635 6821/6782/8633 6831/7472/8630 +f 6823/7476/8636 6822/7475/8635 6831/7472/8630 +f 6832/7474/8634 6823/7476/8636 6831/7472/8630 +f 6802/7473/8637 6832/7474/8634 6803/7473/8632 +f 6811/7464/8638 6825/7463/8639 6808/7465/8640 +f 6825/7463/8639 6833/7466/8641 6808/7465/8640 +f 6825/7463/8639 6816/7469/8642 6833/7466/8641 +f 6816/7469/8642 6815/7316/8643 6833/7466/8641 +f 6833/7466/8641 6815/7316/8643 6834/7468/8644 +f 6808/7465/8640 6833/7466/8641 6806/7467/8645 +f 6833/7466/8641 6834/7468/8644 6806/7467/8645 +f 6815/7316/8643 6814/6784/8646 6834/7468/8644 +f 6834/7468/8644 6814/6784/8646 6835/7470/8647 +f 6834/7468/8644 6835/7470/8647 6806/7467/8645 +f 6814/6784/8646 6813/6782/8648 6835/7470/8647 +f 6835/7470/8647 6813/6782/8648 6836/7472/8649 +f 6835/7470/8647 6804/7471/8650 6806/7467/8645 +f 6835/7470/8647 6836/7472/8649 6804/7471/8650 +f 6813/6782/8648 6824/7475/8651 6836/7472/8649 +f 6836/7472/8649 6801/7473/8652 6804/7471/8650 +f 6836/7472/8649 6824/7475/8651 6832/7474/8653 +f 6824/7475/8651 6823/7476/8654 6832/7474/8653 +f 6836/7472/8649 6832/7474/8653 6802/7473/8655 +f 6801/7473/8652 6836/7472/8649 6802/7473/8655 +f 6837/6780/8656 6838/6780/8657 6839/6776/8658 +f 6840/6775/8659 6837/6780/8656 6839/6776/8658 +f 6841/6781/8660 6837/6780/8656 6840/6775/8659 +f 6842/6774/8661 6841/6781/8660 6840/6775/8659 +f 6843/6783/8662 6841/6781/8660 6842/6774/8661 +f 6844/6777/8663 6843/6783/8662 6842/6774/8661 +f 6845/6784/8664 6843/6782/8665 6844/7477/8666 +f 6846/6779/8667 6845/6784/8664 6844/7477/8666 +f 6847/7469/8668 6845/6784/8664 6846/6779/8667 +f 6848/6778/8668 6847/7469/8668 6846/6779/8667 +f 6849/6781/8669 6847/6783/8670 6848/6777/8670 +f 6850/6774/8671 6849/6781/8669 6848/6777/8670 +f 6851/6780/8672 6849/6781/8669 6850/6774/8671 +f 6852/6775/8673 6851/6780/8672 6850/6774/8671 +f 6838/6780/8674 6851/6780/8672 6852/6775/8673 +f 6839/6776/8675 6838/6780/8674 6852/6775/8673 +f 6015/6780/8676 6014/6780/8677 6002/6776/8677 +f 6001/6775/8678 6015/6780/8676 6002/6776/8677 +f 6009/6781/8679 6015/6780/8676 6001/6775/8678 +f 6000/6774/8680 6009/6781/8679 6001/6775/8678 +f 6010/6783/8681 6009/6781/8679 6000/6774/8680 +f 6003/6777/8682 6010/6783/8681 6000/6774/8680 +f 6013/6784/8683 6010/6782/8684 6003/7477/8684 +f 6007/6779/8685 6013/6784/8683 6003/7477/8684 +f 6013/6784/8683 6007/6779/8685 6006/6778/8686 +f 6011/7469/8687 6013/6784/8683 6006/6778/8686 +f 6011/6783/8688 6006/6777/8688 6005/6774/8689 +f 6012/6781/8690 6011/6783/8688 6005/6774/8689 +f 6012/6781/8690 6005/6774/8689 6004/6775/8691 +f 6008/6780/8692 6012/6781/8690 6004/6775/8691 +f 6008/6780/8692 6004/6775/8691 6002/6776/8693 +f 6014/6780/8693 6008/6780/8692 6002/6776/8693 +f 6000/6774/7884 6002/6776/7884 6004/6775/7884 +f 6003/6777/7884 6000/6774/7884 6004/6775/7884 +f 6853/7478/8694 6854/7479/8694 6855/7479/8695 +f 6856/7478/8695 6853/7478/8694 6855/7479/8695 +f 6857/7480/8696 6858/7480/8696 6859/7481/8697 +f 6858/7480/8696 6860/7481/8698 6859/7481/8697 +f 6861/7482/8699 6859/7481/8697 6860/7481/8698 +f 6862/7482/8699 6861/7482/8699 6860/7481/8698 +f 6859/7481/7968 6861/7482/7968 6863/7483/7968 +f 6857/7480/7968 6859/7481/7968 6863/7483/7968 +f 6864/7484/7968 6857/7480/7968 6863/7483/7968 +f 6853/7478/7968 6864/7484/7968 6863/7483/7968 +f 6854/7479/7968 6853/7478/7968 6863/7483/7968 +f 6863/7483/7968 6865/7485/7968 6854/7479/7968 +f 6866/7484/8700 6858/7480/8701 6857/7480/8701 +f 6864/7484/8702 6866/7484/8700 6857/7480/8701 +f 6864/7484/8702 6853/7478/8703 6866/7484/8700 +f 6853/7478/8703 6856/7478/8704 6866/7484/8700 +f 6867/7483/7937 6862/7482/7937 6860/7481/7937 +f 6867/7483/7937 6860/7481/7937 6858/7480/7937 +f 6867/7483/7937 6858/7480/7937 6866/7484/7937 +f 6867/7483/7937 6866/7484/7937 6856/7478/7937 +f 6867/7483/7937 6856/7478/7937 6855/7479/7937 +f 6867/7483/7937 6855/7479/7937 6868/7485/8080 +f 6855/7479/8705 6854/7479/8705 6868/7485/8706 +f 6854/7479/8705 6865/7485/8707 6868/7485/8706 +f 6865/7485/8707 6863/7483/8708 6868/7485/8706 +f 6863/7483/8708 6867/7483/8708 6868/7485/8706 +f 6869/7486/8709 6870/7487/8709 6871/7488/8582 +f 6872/7489/8581 6869/7486/8709 6871/7488/8582 +f 6872/7489/8581 6871/7488/8582 6873/7490/8580 +f 6874/7491/8579 6872/7489/8581 6873/7490/8580 +f 6874/7491/8579 6873/7490/8580 6875/7492/8710 +f 6876/7493/8577 6874/7491/8579 6875/7492/8710 +f 6876/7493/8577 6875/7492/8710 6877/7494/8711 +f 6878/7495/8712 6876/7493/8577 6877/7494/8711 +f 6878/7495/8712 6877/7494/8711 6879/7496/8586 +f 6880/7497/8713 6878/7495/8712 6879/7496/8586 +f 6880/7497/8713 6879/7496/8586 6870/7498/8714 +f 6869/7499/8714 6880/7497/8713 6870/7498/8714 +f 6881/7500/8715 6882/7501/8716 6883/7502/8715 +f 6882/7501/8716 6884/7503/8717 6883/7502/8715 +f 6882/7501/8716 6885/7504/8718 6884/7503/8717 +f 6885/7504/8718 6886/7505/8719 6884/7503/8717 +f 6885/7504/8718 6887/7506/8720 6886/7505/8719 +f 6887/7506/8720 6888/7507/8721 6886/7505/8719 +f 6887/7506/8720 6889/7508/8722 6888/7507/8721 +f 6889/7508/8722 6890/7509/8723 6888/7507/8721 +f 6889/7508/8722 6891/7510/8724 6890/7509/8723 +f 6891/7510/8724 6892/7511/8725 6890/7509/8723 +f 6891/7510/8724 6893/7512/8726 6892/7511/8725 +f 6893/7512/8726 6894/7513/8727 6892/7511/8725 +f 6893/7512/8726 6895/7514/8728 6894/7513/8727 +f 6895/7514/8728 6896/7515/8729 6894/7513/8727 +f 6895/7514/8728 6897/7516/8730 6896/7515/8729 +f 6897/7516/8730 6898/7517/8731 6896/7515/8729 +f 6897/7516/8730 6899/7518/8732 6898/7517/8731 +f 6899/7518/8732 6900/7519/8733 6898/7517/8731 +f 6899/7518/8732 6901/7520/8734 6900/7519/8733 +f 6901/7520/8734 6902/7521/8735 6900/7519/8733 +f 6901/7520/8734 6903/7522/8736 6902/7521/8735 +f 6903/7522/8736 6904/7523/8737 6902/7521/8735 +f 6903/7522/8736 6881/7524/8738 6904/7523/8737 +f 6881/7524/8738 6883/7525/8738 6904/7523/8737 +f 6905/7526/8739 6906/7527/8740 6907/7528/8741 +f 6908/7529/8742 6905/7526/8739 6907/7528/8741 +f 6906/7527/8743 6909/7530/8743 6910/7531/8744 +f 6907/7528/8744 6906/7527/8743 6910/7531/8744 +f 6909/7530/8745 6911/7532/8745 6912/7533/8746 +f 6910/7531/8746 6909/7530/8745 6912/7533/8746 +f 6911/7532/8747 6913/7534/8747 6914/7535/8748 +f 6912/7533/8748 6911/7532/8747 6914/7535/8748 +f 6913/7534/8749 6915/7536/8749 6916/7537/8750 +f 6914/7535/8750 6913/7534/8749 6916/7537/8750 +f 6916/7537/8751 6915/7536/8752 6917/7538/8753 +f 6918/7539/8751 6916/7537/8751 6917/7538/8753 +f 6918/7539/8754 6917/7538/8755 6919/7540/8756 +f 6920/7541/8754 6918/7539/8754 6919/7540/8756 +f 6920/7541/8757 6919/7540/8758 6921/7542/8758 +f 6922/7543/8757 6920/7541/8757 6921/7542/8758 +f 6922/7543/8759 6921/7542/8760 6923/7544/8760 +f 6924/7545/8759 6922/7543/8759 6923/7544/8760 +f 6924/7545/8761 6923/7544/8762 6925/7546/8762 +f 6926/7547/8763 6924/7545/8761 6925/7546/8762 +f 6926/7547/8764 6925/7546/8765 6927/7548/8765 +f 6928/7549/8764 6926/7547/8764 6927/7548/8765 +f 6927/7548/8766 6905/7550/8766 6908/7551/8767 +f 6928/7549/8768 6927/7548/8766 6908/7551/8767 +f 6929/7552/8769 6930/7553/8769 6931/7554/8770 +f 6930/7553/8769 6932/7555/8771 6931/7554/8770 +f 6931/7554/8770 6932/7555/8771 6933/7556/8772 +f 6932/7555/8771 6934/7557/8773 6933/7556/8772 +f 6933/7556/8772 6934/7557/8773 6935/7558/8774 +f 6934/7557/8773 6936/7559/8775 6935/7558/8774 +f 6935/7558/8774 6936/7559/8775 6937/7560/8776 +f 6936/7559/8775 6938/7561/8777 6937/7560/8776 +f 6937/7560/8776 6938/7561/8777 6939/7562/8778 +f 6938/7561/8777 6940/7563/8779 6939/7562/8778 +f 6939/7562/8778 6940/7563/8779 6941/7564/8780 +f 6942/7565/8781 6939/7562/8778 6941/7564/8780 +f 6942/7565/8781 6941/7564/8780 6943/7566/8782 +f 6944/7567/8783 6942/7565/8781 6943/7566/8782 +f 6944/7567/8783 6943/7566/8782 6945/7568/8784 +f 6946/7569/8785 6944/7567/8783 6945/7568/8784 +f 6946/7569/8785 6945/7568/8784 6947/7570/8786 +f 6948/7571/8787 6946/7569/8785 6947/7570/8786 +f 6948/7571/8787 6947/7570/8786 6949/7572/8788 +f 6950/7573/8789 6948/7571/8787 6949/7572/8788 +f 6950/7573/8789 6949/7572/8788 6951/7574/8790 +f 6952/7575/8791 6950/7573/8789 6951/7574/8790 +f 6952/7575/8791 6951/7574/8790 6929/7576/8792 +f 6951/7574/8790 6930/7577/8792 6929/7576/8792 +f 6953/7578/8793 6954/7579/8793 6955/7580/8794 +f 6956/7581/8795 6953/7578/8793 6955/7580/8794 +f 6956/7581/8795 6955/7580/8794 6957/7582/8796 +f 6958/7583/8797 6956/7581/8795 6957/7582/8796 +f 6958/7583/8797 6957/7582/8796 6959/7584/8798 +f 6960/7585/8799 6958/7583/8797 6959/7584/8798 +f 6960/7585/8799 6959/7584/8798 6961/7586/8800 +f 6962/7587/8801 6960/7585/8799 6961/7586/8800 +f 6962/7587/8801 6961/7586/8800 6963/7588/8802 +f 6964/7589/8803 6962/7587/8801 6963/7588/8802 +f 6964/7589/8803 6963/7588/8802 6965/7590/8804 +f 6966/7591/8805 6964/7589/8803 6965/7590/8804 +f 6966/7591/8805 6965/7590/8804 6967/7592/8806 +f 6968/7593/8807 6966/7591/8805 6967/7592/8806 +f 6968/7593/8807 6967/7592/8806 6969/7594/8808 +f 6970/7595/8809 6968/7593/8807 6969/7594/8808 +f 6970/7595/8809 6969/7594/8808 6971/7596/8810 +f 6972/7597/8811 6970/7595/8809 6971/7596/8810 +f 6972/7597/8811 6971/7596/8810 6973/7598/8812 +f 6974/7599/8813 6972/7597/8811 6973/7598/8812 +f 6974/7599/8813 6973/7598/8812 6975/7600/8814 +f 6976/7601/8815 6974/7599/8813 6975/7600/8814 +f 6976/7601/8815 6975/7600/8814 6954/7602/8816 +f 6953/7603/8816 6976/7601/8815 6954/7602/8816 +f 6977/7604/8709 6978/7605/8709 6979/7606/8582 +f 6980/7607/8581 6977/7604/8709 6979/7606/8582 +f 6980/7607/8581 6979/7606/8582 6981/7608/8817 +f 6982/7609/8818 6980/7607/8581 6981/7608/8817 +f 6982/7609/8818 6981/7608/8817 6983/7610/8578 +f 6984/7611/8577 6982/7609/8818 6983/7610/8578 +f 6984/7611/8577 6983/7610/8578 6985/7612/8711 +f 6986/7613/8712 6984/7611/8577 6985/7612/8711 +f 6986/7613/8712 6985/7612/8711 6987/7614/8586 +f 6988/7615/8819 6986/7613/8712 6987/7614/8586 +f 6988/7615/8819 6987/7614/8586 6978/7616/8820 +f 6977/7617/8820 6988/7615/8819 6978/7616/8820 +f 6989/7618/8581 6990/7619/8821 6991/7620/8821 +f 6992/7621/8582 6989/7618/8581 6991/7620/8821 +f 6993/7622/8818 6989/7618/8581 6992/7621/8582 +f 6994/7623/8822 6993/7622/8818 6992/7621/8582 +f 6995/7624/8577 6993/7622/8818 6994/7623/8822 +f 6996/7625/8578 6995/7624/8577 6994/7623/8822 +f 6997/7626/8712 6995/7624/8577 6996/7625/8578 +f 6998/7627/8711 6997/7626/8712 6996/7625/8578 +f 6999/7628/8819 6997/7626/8712 6998/7627/8711 +f 7000/7629/8586 6999/7628/8819 6998/7627/8711 +f 6990/7630/8714 6999/7628/8819 7000/7629/8586 +f 6991/7631/8714 6990/7630/8714 7000/7629/8586 +f 7001/7632/8823 5884/6698/8824 5886/6699/7780 +f 6168/6913/8825 5884/6698/8824 7001/7632/8823 +f 6166/6912/8826 6167/6912/8826 7002/6914/8083 +f 6167/6912/8826 6169/6914/8084 7002/6914/8083 +f 7002/6914/8083 6169/6914/8084 7003/6913/7916 +f 6169/6914/8084 6168/6913/8827 7003/6913/7916 +f 7003/6913/7916 6168/6913/8827 7001/7632/8825 +f 6146/7633/8828 6160/7634/8829 7004/7635/8830 +f 6146/7633/8828 7004/7635/8830 7005/7636/8831 +f 6160/7634/8829 7006/7637/8832 7004/7635/8830 +f 7004/7635/8830 7007/7638/8833 7005/7636/8831 +f 7008/7639/8834 7007/7638/8833 7004/7635/8830 +f 7006/7637/8832 7008/7639/8834 7004/7635/8830 +f 6160/7634/8829 6162/7640/8835 7006/7637/8832 +f 6147/7641/8836 6146/7633/8828 7005/7636/8831 +f 7007/7638/8833 7009/7642/8837 7005/7636/8831 +f 6162/7640/8835 7010/7643/8838 7006/7637/8832 +f 7011/7644/8839 7007/7638/8833 7008/7639/8834 +f 6162/7640/8835 6164/7645/8840 7010/7643/8838 +f 6147/7641/8836 7005/7636/8831 7012/7646/8841 +f 7005/7636/8831 7009/7642/8837 7012/7646/8841 +f 7013/7647/8842 7008/7639/8834 7006/7637/8832 +f 7010/7643/8838 7013/7647/8842 7006/7637/8832 +f 7014/7648/8843 7009/7642/8837 7007/7638/8833 +f 7011/7644/8839 7014/7648/8843 7007/7638/8833 +f 7015/7649/8844 7011/7644/8839 7008/7639/8834 +f 7015/7649/8844 7008/7639/8834 7013/7647/8842 +f 6149/7650/8845 6147/7641/8836 7012/7646/8841 +f 7009/7642/8837 7016/7651/8846 7012/7646/8841 +f 7014/7648/8843 7017/7652/8847 7009/7642/8837 +f 7017/7652/8847 7016/7651/8846 7009/7642/8837 +f 6149/7650/8845 7012/7646/8841 7018/7653/8848 +f 7012/7646/8841 7016/7651/8846 7018/7653/8848 +f 7014/7648/8843 7011/7644/8839 6029/7654/8849 +f 7011/7644/8839 7015/7649/8844 6027/7655/8850 +f 7011/7644/8839 6027/7655/8850 6029/7654/8849 +f 6031/7656/8851 7017/7652/8847 7014/7648/8843 +f 6029/7654/8849 6031/7656/8851 7014/7648/8843 +f 6151/7657/8852 6149/7650/8845 7018/7653/8848 +f 7016/7651/8846 7019/7658/8853 7018/7653/8848 +f 7017/7652/8847 7020/7659/8854 7016/7651/8846 +f 7020/7659/8854 7019/7658/8853 7016/7651/8846 +f 6151/7657/8852 7018/7653/8848 7021/7660/8855 +f 7018/7653/8848 7019/7658/8853 7021/7660/8855 +f 6031/7656/8851 6033/7661/8856 7017/7652/8847 +f 6033/7661/8856 7020/7659/8854 7017/7652/8847 +f 6153/7662/8857 6151/7657/8852 7021/7660/8855 +f 7019/7658/8853 7022/7663/8858 7021/7660/8855 +f 6153/7662/8857 7021/7660/8855 7023/7664/8859 +f 7021/7660/8855 7022/7663/8858 7023/7664/8859 +f 7020/7659/8854 7024/7665/8860 7019/7658/8853 +f 7024/7665/8860 7022/7663/8858 7019/7658/8853 +f 6164/7645/8840 7025/7666/8861 7010/7643/8838 +f 6033/7661/8856 6035/7667/8862 7020/7659/8854 +f 6035/7667/8862 7024/7665/8860 7020/7659/8854 +f 6155/7668/8863 6153/7662/8857 7023/7664/8859 +f 7022/7663/8858 7026/7669/8864 7023/7664/8859 +f 7027/7670/8865 7013/7647/8842 7010/7643/8838 +f 7025/7666/8861 7027/7670/8865 7010/7643/8838 +f 6155/7668/8863 7023/7664/8859 7028/7671/8866 +f 7023/7664/8859 7026/7669/8864 7028/7671/8866 +f 7024/7665/8860 7029/7672/8867 7022/7663/8858 +f 7029/7672/8867 7026/7669/8864 7022/7663/8858 +f 6035/7667/8862 6037/7673/8868 7024/7665/8860 +f 6037/7673/8868 7029/7672/8867 7024/7665/8860 +f 6157/7674/8869 6155/7668/8863 7028/7671/8866 +f 7030/7675/8870 7015/7649/8844 7013/7647/8842 +f 7030/7675/8870 7013/7647/8842 7027/7670/8865 +f 7026/7669/8864 7031/7676/8871 7028/7671/8866 +f 6157/7674/8869 7028/7671/8866 7032/7677/8872 +f 7028/7671/8866 7031/7676/8871 7032/7677/8872 +f 7029/7672/8867 7033/7678/8873 7026/7669/8864 +f 7033/7678/8873 7031/7676/8871 7026/7669/8864 +f 7015/7649/8844 6025/7679/8874 6027/7655/8850 +f 7015/7649/8844 7030/7675/8870 6025/7679/8874 +f 6037/7673/8868 6039/7680/8875 7029/7672/8867 +f 6039/7680/8875 7033/7678/8873 7029/7672/8867 +f 6159/7681/8876 6157/7674/8869 7032/7677/8872 +f 7031/7676/8871 7034/7682/8877 7032/7677/8872 +f 6159/7681/8876 7032/7677/8872 7035/7683/8878 +f 7032/7677/8872 7034/7682/8877 7035/7683/8878 +f 7033/7678/8873 7036/7684/8879 7031/7676/8871 +f 7036/7684/8879 7034/7682/8877 7031/7676/8871 +f 6039/7680/8875 6041/7685/8880 7033/7678/8873 +f 6041/7685/8880 7036/7684/8879 7033/7678/8873 +f 5886/7686/8881 6159/7681/8876 7035/7683/8878 +f 7034/7682/8877 7037/7687/8882 7035/7683/8878 +f 5886/7686/8881 7035/7683/8878 7038/7688/8883 +f 7035/7683/8878 7037/7687/8882 7038/7688/8883 +f 7036/7684/8879 7039/7689/8884 7034/7682/8877 +f 7039/7689/8884 7037/7687/8882 7034/7682/8877 +f 6164/7645/8840 6166/7690/8885 7025/7666/8861 +f 7036/7684/8879 6041/7685/8880 6043/7691/8886 +f 7039/7689/8884 7036/7684/8879 6043/7691/8886 +f 7001/7692/8887 5886/7686/8881 7038/7688/8883 +f 7037/7687/8882 7040/7693/8888 7038/7688/8883 +f 7001/7692/8887 7038/7688/8883 7041/7694/8889 +f 7038/7688/8883 7040/7693/8888 7041/7694/8889 +f 7039/7689/8884 7042/7695/8890 7037/7687/8882 +f 7042/7695/8890 7040/7693/8888 7037/7687/8882 +f 7039/7689/8884 6043/7691/8886 6045/7696/8891 +f 7042/7695/8890 7039/7689/8884 6045/7696/8891 +f 7003/7697/8892 7001/7692/8887 7041/7694/8889 +f 7040/7693/8888 7043/7698/8893 7041/7694/8889 +f 7003/7697/8892 7041/7694/8889 7044/7699/8894 +f 7041/7694/8889 7043/7698/8893 7044/7699/8894 +f 7042/7695/8890 7045/7700/8895 7040/7693/8888 +f 7045/7700/8895 7043/7698/8893 7040/7693/8888 +f 7042/7695/8890 6045/7696/8891 6047/7701/8896 +f 7045/7700/8895 7042/7695/8890 6047/7701/8896 +f 7002/7702/8897 7003/7697/8892 7044/7699/8894 +f 7043/7698/8893 7046/7703/8898 7044/7699/8894 +f 7002/7702/8897 7044/7699/8894 7047/7704/8899 +f 7044/7699/8894 7046/7703/8898 7047/7704/8899 +f 6166/7690/8885 7002/7702/8897 7047/7704/8899 +f 6166/7690/8885 7047/7704/8899 7025/7666/8861 +f 7045/7700/8895 7048/7705/8900 7043/7698/8893 +f 7048/7705/8900 7046/7703/8898 7043/7698/8893 +f 7045/7700/8895 6047/7701/8896 6018/7706/8901 +f 7048/7705/8900 7045/7700/8895 6018/7706/8901 +f 7046/7703/8898 7049/7707/8902 7047/7704/8899 +f 7047/7704/8899 7049/7707/8902 7025/7666/8861 +f 7049/7707/8902 7027/7670/8865 7025/7666/8861 +f 7048/7705/8900 7050/7708/8903 7046/7703/8898 +f 7050/7708/8903 7049/7707/8902 7046/7703/8898 +f 7048/7705/8900 6018/7706/8901 6019/7709/8904 +f 7050/7708/8903 7048/7705/8900 6019/7709/8904 +f 7050/7708/8903 7051/7710/8905 7049/7707/8902 +f 7051/7710/8905 7027/7670/8865 7049/7707/8902 +f 7051/7710/8905 7030/7675/8870 7027/7670/8865 +f 7050/7708/8903 6019/7709/8904 6021/7711/8906 +f 7051/7710/8905 7050/7708/8903 6021/7711/8906 +f 7051/7710/8905 6021/7711/8906 6023/7712/8907 +f 7030/7675/8870 7051/7710/8905 6023/7712/8907 +f 7030/7675/8870 6023/7712/8907 6025/7679/8874 +f 6303/7713/8908 6301/7714/8909 7052/7715/8910 +f 6303/7713/8908 7052/7715/8910 7053/7716/8911 +f 6301/7714/8909 7054/7717/8912 7052/7715/8910 +f 7053/7716/8911 7052/7715/8910 7055/7718/8913 +f 7055/7718/8913 7052/7715/8910 7056/7719/8914 +f 7052/7715/8910 7054/7717/8912 7056/7719/8914 +f 6301/7714/8909 6299/7720/8915 7054/7717/8912 +f 6305/7721/8916 6303/7713/8908 7053/7716/8911 +f 7057/7722/8917 7053/7716/8911 7055/7718/8913 +f 6299/7720/8915 7058/7723/8918 7054/7717/8912 +f 7055/7718/8913 7056/7719/8914 7059/7724/8919 +f 6299/7720/8915 6297/7725/8920 7058/7723/8918 +f 6305/7721/8916 7053/7716/8911 7060/7726/8921 +f 7060/7726/8921 7053/7716/8911 7057/7722/8917 +f 7056/7719/8914 7054/7717/8912 7061/7727/8922 +f 7054/7717/8912 7058/7723/8918 7061/7727/8922 +f 7057/7722/8917 7055/7718/8913 7062/7728/8923 +f 7055/7718/8913 7059/7724/8919 7062/7728/8923 +f 7056/7719/8914 7063/7729/8924 7059/7724/8919 +f 7056/7719/8914 7061/7727/8922 7063/7729/8924 +f 6307/7730/8925 6305/7721/8916 7060/7726/8921 +f 7064/7731/8926 7060/7726/8921 7057/7722/8917 +f 7057/7722/8917 7062/7728/8923 7065/7732/8927 +f 7064/7731/8926 7057/7722/8917 7065/7732/8927 +f 6307/7730/8925 7060/7726/8921 7066/7733/8928 +f 7066/7733/8928 7060/7726/8921 7064/7731/8926 +f 7062/7728/8923 7059/7724/8919 6044/7734/8929 +f 7059/7724/8919 7063/7729/8924 6046/7735/8930 +f 7059/7724/8919 6046/7735/8930 6044/7734/8929 +f 7065/7732/8927 7062/7728/8923 6042/7736/8931 +f 7062/7728/8923 6044/7734/8929 6042/7736/8931 +f 6309/7737/8932 6307/7730/8925 7066/7733/8928 +f 7067/7738/8933 7066/7733/8928 7064/7731/8926 +f 7064/7731/8926 7065/7732/8927 7068/7739/8934 +f 7067/7738/8933 7064/7731/8926 7068/7739/8934 +f 6309/7737/8932 7066/7733/8928 7069/7740/8935 +f 7069/7740/8935 7066/7733/8928 7067/7738/8933 +f 7065/7732/8927 6042/7736/8931 6040/7741/8936 +f 7068/7739/8934 7065/7732/8927 6040/7741/8936 +f 6311/7742/8937 6309/7737/8932 7069/7740/8935 +f 7070/7743/8938 7069/7740/8935 7067/7738/8933 +f 6311/7742/8937 7069/7740/8935 7071/7744/8939 +f 7071/7744/8939 7069/7740/8935 7070/7743/8938 +f 7067/7738/8933 7068/7739/8934 7072/7745/8940 +f 7070/7743/8938 7067/7738/8933 7072/7745/8940 +f 6297/7725/8920 7073/7746/8941 7058/7723/8918 +f 6040/7741/8936 6038/7747/8942 7068/7739/8934 +f 6038/7747/8942 7072/7745/8940 7068/7739/8934 +f 6313/7748/8943 6311/7742/8937 7071/7744/8939 +f 7074/7749/8944 7071/7744/8939 7070/7743/8938 +f 7061/7727/8922 7058/7723/8918 7075/7750/8945 +f 7058/7723/8918 7073/7746/8941 7075/7750/8945 +f 6313/7748/8943 7071/7744/8939 7076/7751/8946 +f 7076/7751/8946 7071/7744/8939 7074/7749/8944 +f 7070/7743/8938 7072/7745/8940 7077/7752/8947 +f 7074/7749/8944 7070/7743/8938 7077/7752/8947 +f 6038/7747/8942 6036/7753/8948 7072/7745/8940 +f 6036/7753/8948 7077/7752/8947 7072/7745/8940 +f 6315/7754/8949 6313/7748/8943 7076/7751/8946 +f 7061/7727/8922 7078/7755/8950 7063/7729/8924 +f 7061/7727/8922 7075/7750/8945 7078/7755/8950 +f 7079/7756/8951 7076/7751/8946 7074/7749/8944 +f 6315/7754/8949 7076/7751/8946 7080/7757/8952 +f 7080/7757/8952 7076/7751/8946 7079/7756/8951 +f 7074/7749/8944 7077/7752/8947 7081/7758/8953 +f 7079/7756/8951 7074/7749/8944 7081/7758/8953 +f 7063/7729/8924 6016/7759/8954 6046/7735/8930 +f 7063/7729/8924 7078/7755/8950 6016/7759/8954 +f 6036/7753/8948 6034/7760/8955 7077/7752/8947 +f 6034/7760/8955 7081/7758/8953 7077/7752/8947 +f 6320/7761/8956 6315/7754/8949 7080/7757/8952 +f 7082/7762/8957 7080/7757/8952 7079/7756/8951 +f 6320/7761/8956 7080/7757/8952 7083/7763/8958 +f 7083/7763/8958 7080/7757/8952 7082/7762/8957 +f 7079/7756/8951 7081/7758/8953 7084/7764/8959 +f 7082/7762/8957 7079/7756/8951 7084/7764/8959 +f 6034/7760/8955 6032/7765/8960 7081/7758/8953 +f 6032/7765/8960 7084/7764/8959 7081/7758/8953 +f 6318/7766/8961 6320/7761/8956 7083/7763/8958 +f 7085/7767/8962 7083/7763/8958 7082/7762/8957 +f 6318/7766/8961 7083/7763/8958 7086/7768/8963 +f 7086/7768/8963 7083/7763/8958 7085/7767/8962 +f 7082/7762/8957 7084/7764/8959 7087/7769/8964 +f 7085/7767/8962 7082/7762/8957 7087/7769/8964 +f 6297/7725/8920 6295/7770/8965 7073/7746/8941 +f 6032/7765/8960 6030/7771/8966 7084/7764/8959 +f 6030/7771/8966 7087/7769/8964 7084/7764/8959 +f 6316/7772/8967 6318/7766/8961 7086/7768/8963 +f 7088/7773/8968 7086/7768/8963 7085/7767/8962 +f 6316/7772/8967 7086/7768/8963 7089/7774/8969 +f 7089/7774/8969 7086/7768/8963 7088/7773/8968 +f 7085/7767/8962 7087/7769/8964 7090/7775/8970 +f 7088/7773/8968 7085/7767/8962 7090/7775/8970 +f 6030/7771/8966 6028/7776/8971 7087/7769/8964 +f 6028/7776/8971 7090/7775/8970 7087/7769/8964 +f 6292/7777/8972 6316/7772/8967 7089/7774/8969 +f 7091/7778/8973 7089/7774/8969 7088/7773/8968 +f 6292/7777/8972 7089/7774/8969 7092/7779/8974 +f 7092/7779/8974 7089/7774/8969 7091/7778/8973 +f 7088/7773/8968 7090/7775/8970 7093/7780/8975 +f 7091/7778/8973 7088/7773/8968 7093/7780/8975 +f 7090/7775/8970 6028/7776/8971 6026/7781/8976 +f 7093/7780/8975 7090/7775/8970 6026/7781/8976 +f 6293/7782/8977 6292/7777/8972 7092/7779/8974 +f 7094/7783/8978 7092/7779/8974 7091/7778/8973 +f 6293/7782/8977 7092/7779/8974 7095/7784/8979 +f 7095/7784/8979 7092/7779/8974 7094/7783/8978 +f 6295/7770/8965 6293/7782/8977 7095/7784/8979 +f 6295/7770/8965 7095/7784/8979 7073/7746/8941 +f 7091/7778/8973 7093/7780/8975 7096/7785/8980 +f 7094/7783/8978 7091/7778/8973 7096/7785/8980 +f 7093/7780/8975 6026/7781/8976 6024/7786/8981 +f 7096/7785/8980 7093/7780/8975 6024/7786/8981 +f 7097/7787/8982 7095/7784/8979 7094/7783/8978 +f 7073/7746/8941 7095/7784/8979 7097/7787/8982 +f 7075/7750/8945 7073/7746/8941 7097/7787/8982 +f 7094/7783/8978 7096/7785/8980 7098/7788/8983 +f 7097/7787/8982 7094/7783/8978 7098/7788/8983 +f 7096/7785/8980 6024/7786/8981 6022/7789/8984 +f 7098/7788/8983 7096/7785/8980 6022/7789/8984 +f 7097/7787/8982 7098/7788/8983 7099/7790/8985 +f 7075/7750/8945 7097/7787/8982 7099/7790/8985 +f 7075/7750/8945 7099/7790/8985 7078/7755/8950 +f 7098/7788/8983 6022/7789/8984 6020/7791/8986 +f 7099/7790/8985 7098/7788/8983 6020/7791/8986 +f 7099/7790/8985 6020/7791/8986 6017/7792/8987 +f 7078/7755/8950 7099/7790/8985 6017/7792/8987 +f 7078/7755/8950 6017/7792/8987 6016/7759/8954 +f 7100/7793/8988 7101/7794/8989 7102/7795/8990 +f 7100/7793/8988 7102/7795/8990 7103/7796/8991 +f 7101/7794/8989 7104/7797/8992 7102/7795/8990 +f 7102/7795/8990 7105/7798/8993 7103/7796/8991 +f 7106/7799/8994 7105/7798/8993 7102/7795/8990 +f 7104/7797/8992 7106/7799/8994 7102/7795/8990 +f 7101/7794/8989 7107/7800/8995 7104/7797/8992 +f 7108/7801/8996 7100/7793/8988 7103/7796/8991 +f 7105/7798/8993 7109/7802/8997 7103/7796/8991 +f 7107/7800/8995 7110/7803/8998 7104/7797/8992 +f 7111/7804/8999 7105/7798/8993 7106/7799/8994 +f 7107/7800/8995 7112/7805/9000 7110/7803/8998 +f 7108/7801/8996 7103/7796/8991 7113/7806/9001 +f 7103/7796/8991 7109/7802/8997 7113/7806/9001 +f 7114/7807/9002 7106/7799/8994 7104/7797/8992 +f 7110/7803/8998 7114/7807/9002 7104/7797/8992 +f 7115/7808/9003 7109/7802/8997 7105/7798/8993 +f 7111/7804/8999 7115/7808/9003 7105/7798/8993 +f 7116/7809/9004 7111/7804/8999 7106/7799/8994 +f 7116/7809/9004 7106/7799/8994 7114/7807/9002 +f 7117/7810/9005 7108/7801/8996 7113/7806/9001 +f 7109/7802/8997 7118/7811/9006 7113/7806/9001 +f 7115/7808/9003 7119/7812/9007 7109/7802/8997 +f 7119/7812/9007 7118/7811/9006 7109/7802/8997 +f 7117/7810/9005 7113/7806/9001 7120/7813/9008 +f 7113/7806/9001 7118/7811/9006 7120/7813/9008 +f 7115/7808/9003 7111/7804/8999 6065/7814/9009 +f 7111/7804/8999 7116/7809/9004 6063/7771/9010 +f 7111/7804/8999 6063/7771/9010 6065/7814/9009 +f 7119/7812/9007 7115/7808/9003 6067/7760/9011 +f 7115/7808/9003 6065/7814/9009 6067/7760/9011 +f 7121/7815/9012 7117/7810/9005 7120/7813/9008 +f 7118/7811/9006 7122/7816/9013 7120/7813/9008 +f 7119/7812/9007 7123/7817/9014 7118/7811/9006 +f 7123/7817/9014 7122/7816/9013 7118/7811/9006 +f 7121/7815/9012 7120/7813/9008 7124/7818/9015 +f 7120/7813/9008 7122/7816/9013 7124/7818/9015 +f 7119/7812/9007 6067/7760/9011 6069/7819/9016 +f 7123/7817/9014 7119/7812/9007 6069/7819/9016 +f 7125/7820/9017 7121/7815/9012 7124/7818/9015 +f 7122/7816/9013 7126/7821/9018 7124/7818/9015 +f 7125/7820/9017 7124/7818/9015 7127/7822/9019 +f 7124/7818/9015 7126/7821/9018 7127/7822/9019 +f 7123/7817/9014 7128/7823/9020 7122/7816/9013 +f 7128/7823/9020 7126/7821/9018 7122/7816/9013 +f 7112/7805/9000 7129/7824/9021 7110/7803/8998 +f 7123/7817/9014 6069/7819/9016 6071/7747/9022 +f 7128/7823/9020 7123/7817/9014 6071/7747/9022 +f 7130/7825/9023 7125/7820/9017 7127/7822/9019 +f 7126/7821/9018 7131/7826/9024 7127/7822/9019 +f 7132/7827/9025 7114/7807/9002 7110/7803/8998 +f 7129/7824/9021 7132/7827/9025 7110/7803/8998 +f 7130/7825/9023 7127/7822/9019 7133/7828/9026 +f 7127/7822/9019 7131/7826/9024 7133/7828/9026 +f 7128/7823/9020 7134/7829/9027 7126/7821/9018 +f 7134/7829/9027 7131/7826/9024 7126/7821/9018 +f 7128/7823/9020 6071/7747/9022 6073/7741/9028 +f 7134/7829/9027 7128/7823/9020 6073/7741/9028 +f 7135/7830/9029 7130/7825/9023 7133/7828/9026 +f 7136/7831/9030 7116/7809/9004 7114/7807/9002 +f 7136/7831/9030 7114/7807/9002 7132/7827/9025 +f 7131/7826/9024 7137/7832/9031 7133/7828/9026 +f 7135/7830/9029 7133/7828/9026 7138/7833/9032 +f 7133/7828/9026 7137/7832/9031 7138/7833/9032 +f 7134/7829/9027 7139/7834/9033 7131/7826/9024 +f 7139/7834/9033 7137/7832/9031 7131/7826/9024 +f 7116/7809/9004 6061/7835/9034 6063/7771/9010 +f 7116/7809/9004 7136/7831/9030 6061/7835/9034 +f 7134/7829/9027 6073/7741/9028 6075/7836/9035 +f 7139/7834/9033 7134/7829/9027 6075/7836/9035 +f 7140/7837/9036 7135/7830/9029 7138/7833/9032 +f 7137/7832/9031 7141/7838/9037 7138/7833/9032 +f 7140/7837/9036 7138/7833/9032 7142/7839/9038 +f 7138/7833/9032 7141/7838/9037 7142/7839/9038 +f 7139/7834/9033 7143/7840/9039 7137/7832/9031 +f 7143/7840/9039 7141/7838/9037 7137/7832/9031 +f 7139/7834/9033 6075/7836/9035 6077/7841/9040 +f 7143/7840/9039 7139/7834/9033 6077/7841/9040 +f 7144/6980/9041 7140/7837/9036 7142/7839/9038 +f 7141/7838/9037 7145/7842/9042 7142/7839/9038 +f 7144/6980/9041 7142/7839/9038 7146/7843/9043 +f 7142/7839/9038 7145/7842/9042 7146/7843/9043 +f 7143/7840/9039 7147/7844/9044 7141/7838/9037 +f 7147/7844/9044 7145/7842/9042 7141/7838/9037 +f 7112/7805/9000 7148/7845/9045 7129/7824/9021 +f 7143/7840/9039 6077/7841/9040 6079/7846/9046 +f 7147/7844/9044 7143/7840/9039 6079/7846/9046 +f 7149/7847/9047 7144/6980/9041 7146/7843/9043 +f 7145/7842/9042 7150/7848/9048 7146/7843/9043 +f 7149/7847/9047 7146/7843/9043 7151/7849/9049 +f 7146/7843/9043 7150/7848/9048 7151/7849/9049 +f 7147/7844/9044 7152/7850/9050 7145/7842/9042 +f 7152/7850/9050 7150/7848/9048 7145/7842/9042 +f 7147/7844/9044 6079/7846/9046 6050/7851/9051 +f 7152/7850/9050 7147/7844/9044 6050/7851/9051 +f 7153/7852/9052 7149/7847/9047 7151/7849/9049 +f 7150/7848/9048 7154/7853/9053 7151/7849/9049 +f 7153/7852/9052 7151/7849/9049 7155/7854/9054 +f 7151/7849/9049 7154/7853/9053 7155/7854/9054 +f 7152/7850/9050 7156/7855/9055 7150/7848/9048 +f 7156/7855/9055 7154/7853/9053 7150/7848/9048 +f 7152/7850/9050 6050/7851/9051 6051/7856/9056 +f 7156/7855/9055 7152/7850/9050 6051/7856/9056 +f 7157/6977/9057 7153/7852/9052 7155/7854/9054 +f 7154/7853/9053 7158/7857/9058 7155/7854/9054 +f 7157/6977/9057 7155/7854/9054 7159/7858/9059 +f 7155/7854/9054 7158/7857/9058 7159/7858/9059 +f 7148/7845/9045 7157/6977/9057 7159/7858/9059 +f 7148/7845/9045 7159/7858/9059 7129/7824/9021 +f 7156/7855/9055 7160/7859/9060 7154/7853/9053 +f 7160/7859/9060 7158/7857/9058 7154/7853/9053 +f 7156/7855/9055 6051/7856/9056 6053/7860/9061 +f 7160/7859/9060 7156/7855/9055 6053/7860/9061 +f 7158/7857/9058 7161/7861/9062 7159/7858/9059 +f 7159/7858/9059 7161/7861/9062 7129/7824/9021 +f 7161/7861/9062 7132/7827/9025 7129/7824/9021 +f 7160/7859/9060 7162/7788/9063 7158/7857/9058 +f 7162/7788/9063 7161/7861/9062 7158/7857/9058 +f 7160/7859/9060 6053/7860/9061 6055/7862/9064 +f 7162/7788/9063 7160/7859/9060 6055/7862/9064 +f 7162/7788/9063 7163/7785/9065 7161/7861/9062 +f 7163/7785/9065 7132/7827/9025 7161/7861/9062 +f 7163/7785/9065 7136/7831/9030 7132/7827/9025 +f 7162/7788/9063 6055/7862/9064 6057/7863/9066 +f 7163/7785/9065 7162/7788/9063 6057/7863/9066 +f 7163/7785/9065 6057/7863/9066 6059/7864/9067 +f 7136/7831/9030 7163/7785/9065 6059/7864/9067 +f 7136/7831/9030 6059/7864/9067 6061/7835/9034 +f 7164/7793/9068 7165/7801/9069 7166/7795/9070 +f 7164/7793/9068 7166/7795/9070 7167/7797/9071 +f 7165/7801/9069 7168/7796/9072 7166/7795/9070 +f 7166/7795/9070 7169/7798/9073 7167/7797/9071 +f 7170/7802/9074 7169/7798/9073 7166/7795/9070 +f 7168/7796/9072 7170/7802/9074 7166/7795/9070 +f 7165/7801/9069 7171/7810/9075 7168/7796/9072 +f 7172/7794/9076 7164/7793/9068 7167/7797/9071 +f 7169/7798/9073 7173/7799/9077 7167/7797/9071 +f 7171/7810/9075 7174/7806/9078 7168/7796/9072 +f 7175/7804/9079 7169/7798/9073 7170/7802/9074 +f 7171/7810/9075 7176/7815/9080 7174/7806/9078 +f 7172/7794/9076 7167/7797/9071 7177/7803/9081 +f 7167/7797/9071 7173/7799/9077 7177/7803/9081 +f 7178/7811/9082 7170/7802/9074 7168/7796/9072 +f 7174/7806/9078 7178/7811/9082 7168/7796/9072 +f 7179/7809/9083 7173/7799/9077 7169/7798/9073 +f 7175/7804/9079 7179/7809/9083 7169/7798/9073 +f 7180/7808/9084 7175/7804/9079 7170/7802/9074 +f 7180/7808/9084 7170/7802/9074 7178/7811/9082 +f 7181/7800/9085 7172/7794/9076 7177/7803/9081 +f 7173/7799/9077 7182/7807/9086 7177/7803/9081 +f 7179/7809/9083 7183/7831/9087 7173/7799/9077 +f 7183/7831/9087 7182/7807/9086 7173/7799/9077 +f 7181/7800/9085 7177/7803/9081 7184/7824/9088 +f 7177/7803/9081 7182/7807/9086 7184/7824/9088 +f 6060/7835/9089 7179/7809/9083 7175/7804/9079 +f 6062/7771/9090 7175/7804/9079 7180/7808/9084 +f 6062/7771/9090 6060/7835/9089 7175/7804/9079 +f 6058/7864/9091 7183/7831/9087 7179/7809/9083 +f 6060/7835/9089 6058/7864/9091 7179/7809/9083 +f 7185/7805/9092 7181/7800/9085 7184/7824/9088 +f 7182/7807/9086 7186/7827/9093 7184/7824/9088 +f 7183/7831/9087 7187/7785/9094 7182/7807/9086 +f 7187/7785/9094 7186/7827/9093 7182/7807/9086 +f 7185/7805/9092 7184/7824/9088 7188/7858/9095 +f 7184/7824/9088 7186/7827/9093 7188/7858/9095 +f 6058/7864/9091 6056/7863/9096 7183/7831/9087 +f 6056/7863/9096 7187/7785/9094 7183/7831/9087 +f 7189/7845/9097 7185/7805/9092 7188/7858/9095 +f 7186/7827/9093 7190/7861/9098 7188/7858/9095 +f 7189/7845/9097 7188/7858/9095 7191/7854/9099 +f 7188/7858/9095 7190/7861/9098 7191/7854/9099 +f 7187/7785/9094 7192/7788/9100 7186/7827/9093 +f 7192/7788/9100 7190/7861/9098 7186/7827/9093 +f 7176/7815/9080 7193/7813/9101 7174/7806/9078 +f 6056/7863/9096 6054/7862/9102 7187/7785/9094 +f 6054/7862/9102 7192/7788/9100 7187/7785/9094 +f 7194/6977/9103 7189/7845/9097 7191/7854/9099 +f 7190/7861/9098 7195/7857/9104 7191/7854/9099 +f 7196/7816/9105 7178/7811/9082 7174/7806/9078 +f 7193/7813/9101 7196/7816/9105 7174/7806/9078 +f 7194/6977/9103 7191/7854/9099 7197/7849/9106 +f 7191/7854/9099 7195/7857/9104 7197/7849/9106 +f 7192/7788/9100 7198/7859/9107 7190/7861/9098 +f 7198/7859/9107 7195/7857/9104 7190/7861/9098 +f 6054/7862/9102 6052/7860/9108 7192/7788/9100 +f 6052/7860/9108 7198/7859/9107 7192/7788/9100 +f 7199/7852/9109 7194/6977/9103 7197/7849/9106 +f 7200/7812/9110 7180/7808/9084 7178/7811/9082 +f 7200/7812/9110 7178/7811/9082 7196/7816/9105 +f 7195/7857/9104 7201/7853/9111 7197/7849/9106 +f 7199/7852/9109 7197/7849/9106 7202/7843/9112 +f 7197/7849/9106 7201/7853/9111 7202/7843/9112 +f 7198/7859/9107 7203/7855/9113 7195/7857/9104 +f 7203/7855/9113 7201/7853/9111 7195/7857/9104 +f 6064/7814/9114 6062/7771/9090 7180/7808/9084 +f 6064/7814/9114 7180/7808/9084 7200/7812/9110 +f 6052/7860/9108 6049/7856/9115 7198/7859/9107 +f 6049/7856/9115 7203/7855/9113 7198/7859/9107 +f 7204/7847/9116 7199/7852/9109 7202/7843/9112 +f 7201/7853/9111 7205/7848/9117 7202/7843/9112 +f 7204/7847/9116 7202/7843/9112 7206/7839/9118 +f 7202/7843/9112 7205/7848/9117 7206/7839/9118 +f 7203/7855/9113 7207/7850/9119 7201/7853/9111 +f 7207/7850/9119 7205/7848/9117 7201/7853/9111 +f 6049/7856/9115 6048/7851/9120 7203/7855/9113 +f 6048/7851/9120 7207/7850/9119 7203/7855/9113 +f 7208/6980/9121 7204/7847/9116 7206/7839/9118 +f 7205/7848/9117 7209/7842/9122 7206/7839/9118 +f 7208/6980/9121 7206/7839/9118 7210/7833/9123 +f 7206/7839/9118 7209/7842/9122 7210/7833/9123 +f 7207/7850/9119 7211/7844/9124 7205/7848/9117 +f 7211/7844/9124 7209/7842/9122 7205/7848/9117 +f 7176/7815/9080 7212/7820/9125 7193/7813/9101 +f 6048/7851/9120 6078/7846/9126 7207/7850/9119 +f 6078/7846/9126 7211/7844/9124 7207/7850/9119 +f 7213/7837/9127 7208/6980/9121 7210/7833/9123 +f 7209/7842/9122 7214/7838/9128 7210/7833/9123 +f 7213/7837/9127 7210/7833/9123 7215/7828/9129 +f 7210/7833/9123 7214/7838/9128 7215/7828/9129 +f 7211/7844/9124 7216/7840/9130 7209/7842/9122 +f 7216/7840/9130 7214/7838/9128 7209/7842/9122 +f 6078/7846/9126 6076/7841/9131 7211/7844/9124 +f 6076/7841/9131 7216/7840/9130 7211/7844/9124 +f 7217/7830/9132 7213/7837/9127 7215/7828/9129 +f 7214/7838/9128 7218/7832/9133 7215/7828/9129 +f 7217/7830/9132 7215/7828/9129 7219/7822/9134 +f 7215/7828/9129 7218/7832/9133 7219/7822/9134 +f 7216/7840/9130 7220/7834/9135 7214/7838/9128 +f 7220/7834/9135 7218/7832/9133 7214/7838/9128 +f 6076/7841/9131 6074/7836/9136 7216/7840/9130 +f 6074/7836/9136 7220/7834/9135 7216/7840/9130 +f 7221/7825/9137 7217/7830/9132 7219/7822/9134 +f 7218/7832/9133 7222/7826/9138 7219/7822/9134 +f 7221/7825/9137 7219/7822/9134 7223/7818/9139 +f 7219/7822/9134 7222/7826/9138 7223/7818/9139 +f 7212/7820/9125 7221/7825/9137 7223/7818/9139 +f 7212/7820/9125 7223/7818/9139 7193/7813/9101 +f 7220/7834/9135 7224/7829/9140 7218/7832/9133 +f 7224/7829/9140 7222/7826/9138 7218/7832/9133 +f 6074/7836/9136 6072/7741/9141 7220/7834/9135 +f 6072/7741/9141 7224/7829/9140 7220/7834/9135 +f 7222/7826/9138 7225/7821/9142 7223/7818/9139 +f 7223/7818/9139 7225/7821/9142 7193/7813/9101 +f 7225/7821/9142 7196/7816/9105 7193/7813/9101 +f 7224/7829/9140 7226/7823/9143 7222/7826/9138 +f 7226/7823/9143 7225/7821/9142 7222/7826/9138 +f 6072/7741/9141 6070/7747/9144 7224/7829/9140 +f 6070/7747/9144 7226/7823/9143 7224/7829/9140 +f 7226/7823/9143 7227/7817/9145 7225/7821/9142 +f 7227/7817/9145 7196/7816/9105 7225/7821/9142 +f 7227/7817/9145 7200/7812/9110 7196/7816/9105 +f 6070/7747/9144 6068/7819/9146 7226/7823/9143 +f 6068/7819/9146 7227/7817/9145 7226/7823/9143 +f 6068/7819/9146 6066/7760/9147 7227/7817/9145 +f 6066/7760/9147 7200/7812/9110 7227/7817/9145 +f 6066/7760/9147 6064/7814/9114 7200/7812/9110 +f 7228/6980/9041 7229/7837/9036 7230/7839/9038 +f 7228/6980/9041 7230/7839/9038 7231/7843/9043 +f 7229/7837/9036 7232/7833/9032 7230/7839/9038 +f 7231/7843/9043 7230/7839/9038 7233/7842/9042 +f 7233/7842/9042 7230/7839/9038 7234/7838/9037 +f 7230/7839/9038 7232/7833/9032 7234/7838/9037 +f 7229/7837/9036 7235/7830/9029 7232/7833/9032 +f 7236/7847/9047 7228/6980/9041 7231/7843/9043 +f 7237/7848/9148 7231/7843/9043 7233/7842/9042 +f 7235/7830/9029 7238/7828/9026 7232/7833/9032 +f 7233/7842/9042 7234/7838/9037 7239/7844/9044 +f 7235/7830/9029 7240/7825/9023 7238/7828/9026 +f 7236/7847/9047 7231/7843/9043 7241/7849/9049 +f 7241/7849/9049 7231/7843/9043 7237/7848/9148 +f 7234/7838/9037 7232/7833/9032 7242/7832/9149 +f 7232/7833/9032 7238/7828/9026 7242/7832/9149 +f 7237/7848/9148 7233/7842/9042 7243/7850/9050 +f 7233/7842/9042 7239/7844/9044 7243/7850/9050 +f 7234/7838/9037 7244/7840/9039 7239/7844/9044 +f 7234/7838/9037 7242/7832/9149 7244/7840/9039 +f 7245/7852/9052 7236/7847/9047 7241/7849/9049 +f 7246/7853/9053 7241/7849/9049 7237/7848/9148 +f 7237/7848/9148 7243/7850/9050 7247/7855/9055 +f 7246/7853/9053 7237/7848/9148 7247/7855/9055 +f 7245/7852/9052 7241/7849/9049 7248/7854/9054 +f 7248/7854/9054 7241/7849/9049 7246/7853/9053 +f 7243/7850/9050 7239/7844/9044 6082/7851/9051 +f 7239/7844/9044 7244/7840/9039 6111/7846/9150 +f 7239/7844/9044 6111/7846/9150 6082/7851/9051 +f 7247/7855/9055 7243/7850/9050 6083/7856/9056 +f 7243/7850/9050 6082/7851/9051 6083/7856/9056 +f 7249/6977/9057 7245/7852/9052 7248/7854/9054 +f 7250/7857/9058 7248/7854/9054 7246/7853/9053 +f 7246/7853/9053 7247/7855/9055 7251/7859/9060 +f 7250/7857/9058 7246/7853/9053 7251/7859/9060 +f 7249/6977/9057 7248/7854/9054 7252/7858/9059 +f 7252/7858/9059 7248/7854/9054 7250/7857/9058 +f 7247/7855/9055 6083/7856/9056 6085/7860/9151 +f 7251/7859/9060 7247/7855/9055 6085/7860/9151 +f 7253/7845/9045 7249/6977/9057 7252/7858/9059 +f 7254/7861/9062 7252/7858/9059 7250/7857/9058 +f 7253/7845/9045 7252/7858/9059 7255/7824/9021 +f 7255/7824/9021 7252/7858/9059 7254/7861/9062 +f 7250/7857/9058 7251/7859/9060 7256/7788/9152 +f 7254/7861/9062 7250/7857/9058 7256/7788/9152 +f 7240/7825/9023 7257/7822/9019 7238/7828/9026 +f 7251/7859/9060 6085/7860/9151 6087/7862/9064 +f 7256/7788/9152 7251/7859/9060 6087/7862/9064 +f 7258/7805/9000 7253/7845/9045 7255/7824/9021 +f 7259/7827/9025 7255/7824/9021 7254/7861/9062 +f 7242/7832/9149 7238/7828/9026 7260/7826/9024 +f 7238/7828/9026 7257/7822/9019 7260/7826/9024 +f 7258/7805/9000 7255/7824/9021 7261/7803/8998 +f 7261/7803/8998 7255/7824/9021 7259/7827/9025 +f 7254/7861/9062 7256/7788/9152 7262/7785/9065 +f 7259/7827/9025 7254/7861/9062 7262/7785/9065 +f 7256/7788/9152 6087/7862/9064 6089/7863/9066 +f 7262/7785/9065 7256/7788/9152 6089/7863/9066 +f 7263/7800/8995 7258/7805/9000 7261/7803/8998 +f 7242/7832/9149 7264/7834/9033 7244/7840/9039 +f 7242/7832/9149 7260/7826/9024 7264/7834/9033 +f 7265/7807/9153 7261/7803/8998 7259/7827/9025 +f 7263/7800/8995 7261/7803/8998 7266/7797/8992 +f 7266/7797/8992 7261/7803/8998 7265/7807/9153 +f 7259/7827/9025 7262/7785/9065 7267/7831/9030 +f 7265/7807/9153 7259/7827/9025 7267/7831/9030 +f 7244/7840/9039 6109/7841/9040 6111/7846/9150 +f 7244/7840/9039 7264/7834/9033 6109/7841/9040 +f 7262/7785/9065 6089/7863/9066 6091/7864/9067 +f 7267/7831/9030 7262/7785/9065 6091/7864/9067 +f 7268/7794/8989 7263/7800/8995 7266/7797/8992 +f 7269/7799/9154 7266/7797/8992 7265/7807/9153 +f 7268/7794/8989 7266/7797/8992 7270/7795/8990 +f 7270/7795/8990 7266/7797/8992 7269/7799/9154 +f 7265/7807/9153 7267/7831/9030 7271/7809/9004 +f 7269/7799/9154 7265/7807/9153 7271/7809/9004 +f 7267/7831/9030 6091/7864/9067 6093/7835/9155 +f 7271/7809/9004 7267/7831/9030 6093/7835/9155 +f 7272/7793/8988 7268/7794/8989 7270/7795/8990 +f 7273/7798/8993 7270/7795/8990 7269/7799/9154 +f 7272/7793/8988 7270/7795/8990 7274/7796/8991 +f 7274/7796/8991 7270/7795/8990 7273/7798/8993 +f 7269/7799/9154 7271/7809/9004 7275/7804/8999 +f 7273/7798/8993 7269/7799/9154 7275/7804/8999 +f 7240/7825/9023 7276/7820/9017 7257/7822/9019 +f 7271/7809/9004 6093/7835/9155 6095/7771/9156 +f 7275/7804/8999 7271/7809/9004 6095/7771/9156 +f 7277/7801/8996 7272/7793/8988 7274/7796/8991 +f 7278/7802/8997 7274/7796/8991 7273/7798/8993 +f 7277/7801/8996 7274/7796/8991 7279/7806/9001 +f 7279/7806/9001 7274/7796/8991 7278/7802/8997 +f 7273/7798/8993 7275/7804/8999 7280/7808/9003 +f 7278/7802/8997 7273/7798/8993 7280/7808/9003 +f 7275/7804/8999 6095/7771/9156 6097/7814/9009 +f 7280/7808/9003 7275/7804/8999 6097/7814/9009 +f 7281/7810/9005 7277/7801/8996 7279/7806/9001 +f 7282/7811/9006 7279/7806/9001 7278/7802/8997 +f 7281/7810/9005 7279/7806/9001 7283/7813/9008 +f 7283/7813/9008 7279/7806/9001 7282/7811/9006 +f 7278/7802/8997 7280/7808/9003 7284/7812/9007 +f 7282/7811/9006 7278/7802/8997 7284/7812/9007 +f 7280/7808/9003 6097/7814/9009 6099/7760/9011 +f 7284/7812/9007 7280/7808/9003 6099/7760/9011 +f 7285/7815/9012 7281/7810/9005 7283/7813/9008 +f 7286/7816/9013 7283/7813/9008 7282/7811/9006 +f 7285/7815/9012 7283/7813/9008 7287/7818/9015 +f 7287/7818/9015 7283/7813/9008 7286/7816/9013 +f 7276/7820/9017 7285/7815/9012 7287/7818/9015 +f 7276/7820/9017 7287/7818/9015 7257/7822/9019 +f 7282/7811/9006 7284/7812/9007 7288/7817/9014 +f 7286/7816/9013 7282/7811/9006 7288/7817/9014 +f 7284/7812/9007 6099/7760/9011 6101/7819/9016 +f 7288/7817/9014 7284/7812/9007 6101/7819/9016 +f 7289/7821/9018 7287/7818/9015 7286/7816/9013 +f 7257/7822/9019 7287/7818/9015 7289/7821/9018 +f 7260/7826/9024 7257/7822/9019 7289/7821/9018 +f 7286/7816/9013 7288/7817/9014 7290/7823/9020 +f 7289/7821/9018 7286/7816/9013 7290/7823/9020 +f 7288/7817/9014 6101/7819/9016 6103/7747/9157 +f 7290/7823/9020 7288/7817/9014 6103/7747/9157 +f 7289/7821/9018 7290/7823/9020 7291/7829/9027 +f 7260/7826/9024 7289/7821/9018 7291/7829/9027 +f 7260/7826/9024 7291/7829/9027 7264/7834/9033 +f 7290/7823/9020 6103/7747/9157 6105/7741/9028 +f 7291/7829/9027 7290/7823/9020 6105/7741/9028 +f 7291/7829/9027 6105/7741/9028 6107/7836/9035 +f 7264/7834/9033 7291/7829/9027 6107/7836/9035 +f 7264/7834/9033 6107/7836/9035 6109/7841/9040 +f 7292/7801/9069 7293/7810/9075 7294/7796/9072 +f 7292/7801/9069 7294/7796/9072 7295/7795/9070 +f 7293/7810/9075 7296/7806/9078 7294/7796/9072 +f 7295/7795/9070 7294/7796/9072 7297/7802/9074 +f 7297/7802/9074 7294/7796/9072 7298/7811/9082 +f 7294/7796/9072 7296/7806/9078 7298/7811/9082 +f 7293/7810/9075 7299/7815/9080 7296/7806/9078 +f 7300/7793/9068 7292/7801/9069 7295/7795/9070 +f 7301/7798/9073 7295/7795/9070 7297/7802/9074 +f 7299/7815/9080 7302/7813/9101 7296/7806/9078 +f 7297/7802/9074 7298/7811/9082 7303/7808/9084 +f 7299/7815/9080 7304/7820/9125 7302/7813/9101 +f 7300/7793/9068 7295/7795/9070 7305/7797/9071 +f 7305/7797/9071 7295/7795/9070 7301/7798/9073 +f 7298/7811/9082 7296/7806/9078 7306/7816/9105 +f 7296/7806/9078 7302/7813/9101 7306/7816/9105 +f 7301/7798/9073 7297/7802/9074 7307/7804/9079 +f 7297/7802/9074 7303/7808/9084 7307/7804/9079 +f 7298/7811/9082 7308/7812/9158 7303/7808/9084 +f 7298/7811/9082 7306/7816/9105 7308/7812/9158 +f 7309/7794/9076 7300/7793/9068 7305/7797/9071 +f 7310/7799/9077 7305/7797/9071 7301/7798/9073 +f 7301/7798/9073 7307/7804/9079 7311/7809/9083 +f 7310/7799/9077 7301/7798/9073 7311/7809/9083 +f 7309/7794/9076 7305/7797/9071 7312/7803/9159 +f 7312/7803/9159 7305/7797/9071 7310/7799/9077 +f 7307/7804/9079 7303/7808/9084 6094/7771/9160 +f 7303/7808/9084 7308/7812/9158 6096/7814/9114 +f 7303/7808/9084 6096/7814/9114 6094/7771/9160 +f 7311/7809/9083 7307/7804/9079 6092/7835/9089 +f 7307/7804/9079 6094/7771/9160 6092/7835/9089 +f 7313/7800/9161 7309/7794/9076 7312/7803/9159 +f 7314/7807/9086 7312/7803/9159 7310/7799/9077 +f 7310/7799/9077 7311/7809/9083 7315/7831/9087 +f 7314/7807/9086 7310/7799/9077 7315/7831/9087 +f 7313/7800/9161 7312/7803/9159 7316/7824/9088 +f 7316/7824/9088 7312/7803/9159 7314/7807/9086 +f 7311/7809/9083 6092/7835/9089 6090/7864/9091 +f 7315/7831/9087 7311/7809/9083 6090/7864/9091 +f 7317/7805/9092 7313/7800/9161 7316/7824/9088 +f 7318/7827/9093 7316/7824/9088 7314/7807/9086 +f 7317/7805/9092 7316/7824/9088 7319/7858/9095 +f 7319/7858/9095 7316/7824/9088 7318/7827/9093 +f 7314/7807/9086 7315/7831/9087 7320/7785/9162 +f 7318/7827/9093 7314/7807/9086 7320/7785/9162 +f 7304/7820/9125 7321/7818/9139 7302/7813/9101 +f 7315/7831/9087 6090/7864/9091 6088/7863/9096 +f 7320/7785/9162 7315/7831/9087 6088/7863/9096 +f 7322/7845/9097 7317/7805/9092 7319/7858/9095 +f 7323/7861/9098 7319/7858/9095 7318/7827/9093 +f 7306/7816/9105 7302/7813/9101 7324/7821/9142 +f 7302/7813/9101 7321/7818/9139 7324/7821/9142 +f 7322/7845/9097 7319/7858/9095 7325/7854/9099 +f 7325/7854/9099 7319/7858/9095 7323/7861/9098 +f 7318/7827/9093 7320/7785/9162 7326/7788/9100 +f 7323/7861/9098 7318/7827/9093 7326/7788/9100 +f 7320/7785/9162 6088/7863/9096 6086/7862/9163 +f 7326/7788/9100 7320/7785/9162 6086/7862/9163 +f 7327/6977/9103 7322/7845/9097 7325/7854/9099 +f 7306/7816/9105 7328/7817/9145 7308/7812/9158 +f 7306/7816/9105 7324/7821/9142 7328/7817/9145 +f 7329/7857/9104 7325/7854/9099 7323/7861/9098 +f 7327/6977/9103 7325/7854/9099 7330/7849/9106 +f 7330/7849/9106 7325/7854/9099 7329/7857/9104 +f 7323/7861/9098 7326/7788/9100 7331/7859/9107 +f 7329/7857/9104 7323/7861/9098 7331/7859/9107 +f 7308/7812/9158 6098/7760/9147 6096/7814/9114 +f 7308/7812/9158 7328/7817/9145 6098/7760/9147 +f 7326/7788/9100 6086/7862/9163 6084/7860/9108 +f 7331/7859/9107 7326/7788/9100 6084/7860/9108 +f 7332/7852/9109 7327/6977/9103 7330/7849/9106 +f 7333/7853/9111 7330/7849/9106 7329/7857/9104 +f 7332/7852/9109 7330/7849/9106 7334/7843/9112 +f 7334/7843/9112 7330/7849/9106 7333/7853/9111 +f 7329/7857/9104 7331/7859/9107 7335/7855/9113 +f 7333/7853/9111 7329/7857/9104 7335/7855/9113 +f 7331/7859/9107 6084/7860/9108 6081/7856/9115 +f 7335/7855/9113 7331/7859/9107 6081/7856/9115 +f 7336/7847/9116 7332/7852/9109 7334/7843/9112 +f 7337/7848/9117 7334/7843/9112 7333/7853/9111 +f 7336/7847/9116 7334/7843/9112 7338/7839/9118 +f 7338/7839/9118 7334/7843/9112 7337/7848/9117 +f 7333/7853/9111 7335/7855/9113 7339/7850/9119 +f 7337/7848/9117 7333/7853/9111 7339/7850/9119 +f 7304/7820/9125 7340/7825/9137 7321/7818/9139 +f 7335/7855/9113 6081/7856/9115 6080/7851/9120 +f 7339/7850/9119 7335/7855/9113 6080/7851/9120 +f 7341/6980/9121 7336/7847/9116 7338/7839/9118 +f 7342/7842/9122 7338/7839/9118 7337/7848/9117 +f 7341/6980/9121 7338/7839/9118 7343/7833/9123 +f 7343/7833/9123 7338/7839/9118 7342/7842/9122 +f 7337/7848/9117 7339/7850/9119 7344/7844/9124 +f 7342/7842/9122 7337/7848/9117 7344/7844/9124 +f 7339/7850/9119 6080/7851/9120 6110/7846/9126 +f 7344/7844/9124 7339/7850/9119 6110/7846/9126 +f 7345/7837/9164 7341/6980/9121 7343/7833/9123 +f 7346/7838/9128 7343/7833/9123 7342/7842/9122 +f 7345/7837/9164 7343/7833/9123 7347/7828/9129 +f 7347/7828/9129 7343/7833/9123 7346/7838/9128 +f 7342/7842/9122 7344/7844/9124 7348/7840/9130 +f 7346/7838/9128 7342/7842/9122 7348/7840/9130 +f 7344/7844/9124 6110/7846/9126 6108/7841/9165 +f 7348/7840/9130 7344/7844/9124 6108/7841/9165 +f 7349/7830/9132 7345/7837/9164 7347/7828/9129 +f 7350/7832/9166 7347/7828/9129 7346/7838/9128 +f 7349/7830/9132 7347/7828/9129 7351/7822/9134 +f 7351/7822/9134 7347/7828/9129 7350/7832/9166 +f 7340/7825/9137 7349/7830/9132 7351/7822/9134 +f 7340/7825/9137 7351/7822/9134 7321/7818/9139 +f 7346/7838/9128 7348/7840/9130 7352/7834/9135 +f 7350/7832/9166 7346/7838/9128 7352/7834/9135 +f 7348/7840/9130 6108/7841/9165 6106/7836/9136 +f 7352/7834/9135 7348/7840/9130 6106/7836/9136 +f 7353/7826/9138 7351/7822/9134 7350/7832/9166 +f 7321/7818/9139 7351/7822/9134 7353/7826/9138 +f 7324/7821/9142 7321/7818/9139 7353/7826/9138 +f 7350/7832/9166 7352/7834/9135 7354/7829/9167 +f 7353/7826/9138 7350/7832/9166 7354/7829/9167 +f 7352/7834/9135 6106/7836/9136 6104/7741/9141 +f 7354/7829/9167 7352/7834/9135 6104/7741/9141 +f 7353/7826/9138 7354/7829/9167 7355/7823/9168 +f 7324/7821/9142 7353/7826/9138 7355/7823/9168 +f 7324/7821/9142 7355/7823/9168 7328/7817/9145 +f 7354/7829/9167 6104/7741/9141 6102/7747/9144 +f 7355/7823/9168 7354/7829/9167 6102/7747/9144 +f 7355/7823/9168 6102/7747/9144 6100/7819/9169 +f 7328/7817/9145 7355/7823/9168 6100/7819/9169 +f 7328/7817/9145 6100/7819/9169 6098/7760/9147 +f 7356/7865/9170 7357/6988/9171 7100/7866/9172 +f 7108/7867/9173 7356/7865/9170 7100/7866/9172 +f 7358/7868/9174 7356/7865/9170 7108/7867/9173 +f 7117/7869/9175 7358/7868/9174 7108/7867/9173 +f 7359/7744/9176 7358/7868/9174 7117/7869/9175 +f 7121/7870/9177 7359/7744/9176 7117/7869/9175 +f 7360/7740/9178 7359/7744/9176 7121/7870/9177 +f 7125/7820/9179 7360/7740/9178 7121/7870/9177 +f 7361/6983/9180 7360/7740/9178 7125/7820/9179 +f 7130/7871/9181 7361/6983/9180 7125/7820/9179 +f 7362/6982/9182 7361/6983/9180 7130/7871/9181 +f 7100/7866/9172 7357/6988/9171 7101/7872/9183 +f 7135/6982/9184 7362/6982/9182 7130/7871/9181 +f 7363/6981/9185 7362/6982/9182 7135/6982/9184 +f 7140/7873/9186 7363/6981/9185 7135/6982/9184 +f 7364/6980/9187 7363/6981/9185 7140/7873/9186 +f 7144/7874/9188 7364/6980/9187 7140/7873/9186 +f 7365/7847/9189 7364/6980/9187 7144/7874/9188 +f 7149/7875/9190 7365/7847/9189 7144/7874/9188 +f 7366/6978/9191 7365/7847/9189 7149/7875/9190 +f 7153/7876/9192 7366/6978/9191 7149/7875/9190 +f 7357/6988/9171 7367/7877/9193 7101/7872/9183 +f 7368/6977/9194 7366/6978/9191 7153/7876/9192 +f 7157/7878/9195 7368/6977/9194 7153/7876/9192 +f 7369/6976/9196 7368/6977/9194 7157/7878/9195 +f 7148/7879/9197 7369/6976/9196 7157/7878/9195 +f 7370/6974/9198 7369/6976/9196 7148/7879/9197 +f 7112/7880/9199 7370/6974/9198 7148/7879/9197 +f 7371/6975/9200 7370/6974/9198 7112/7880/9199 +f 7107/7881/9201 7371/6975/9200 7112/7880/9199 +f 7367/7877/9193 7371/6975/9200 7107/7881/9201 +f 7101/7872/9183 7367/7877/9193 7107/7881/9201 +f 7372/6977/9202 7373/6976/9203 7322/7879/9204 +f 7327/7878/9205 7372/6977/9202 7322/7879/9204 +f 7374/6978/9206 7372/6977/9202 7327/7878/9205 +f 7332/7876/9207 7374/6978/9206 7327/7878/9205 +f 7375/7847/9208 7374/6978/9206 7332/7876/9207 +f 7336/7875/9209 7375/7847/9208 7332/7876/9207 +f 7376/6980/9210 7375/7847/9208 7336/7875/9209 +f 7341/7874/9211 7376/6980/9210 7336/7875/9209 +f 7377/6981/9212 7376/6980/9210 7341/7874/9211 +f 7345/7873/9213 7377/6981/9212 7341/7874/9211 +f 7378/6982/9214 7377/6981/9212 7345/7873/9213 +f 7322/7879/9204 7373/6976/9203 7317/7880/9215 +f 7349/6982/9216 7378/6982/9214 7345/7873/9213 +f 7379/6983/9217 7378/6982/9214 7349/6982/9216 +f 7340/7871/9218 7379/6983/9217 7349/6982/9216 +f 7380/7740/9219 7379/6983/9217 7340/7871/9218 +f 7304/7820/9220 7380/7740/9219 7340/7871/9218 +f 7381/7744/9221 7380/7740/9219 7304/7820/9220 +f 7299/7870/9222 7381/7744/9221 7304/7820/9220 +f 7382/7868/9223 7381/7744/9221 7299/7870/9222 +f 7293/7869/9224 7382/7868/9223 7299/7870/9222 +f 7373/6976/9203 7383/6974/9225 7317/7880/9215 +f 7384/7865/9226 7382/7868/9223 7293/7869/9224 +f 7292/7867/9227 7384/7865/9226 7293/7869/9224 +f 7385/6988/9228 7384/7865/9226 7292/7867/9227 +f 7300/7866/9229 7385/6988/9228 7292/7867/9227 +f 7386/7877/9230 7385/6988/9228 7300/7866/9229 +f 7309/7872/9231 7386/7877/9230 7300/7866/9229 +f 7387/6975/9232 7386/7877/9230 7309/7872/9231 +f 7313/7881/9233 7387/6975/9232 7309/7872/9231 +f 7383/6974/9225 7387/6975/9232 7313/7881/9233 +f 7317/7880/9215 7383/6974/9225 7313/7881/9233 +f 7388/6978/9234 7389/7847/9189 7236/7875/9190 +f 7245/7876/9235 7388/6978/9234 7236/7875/9190 +f 7390/6977/9194 7388/6978/9234 7245/7876/9235 +f 7249/7878/9195 7390/6977/9194 7245/7876/9235 +f 7391/6976/9196 7390/6977/9194 7249/7878/9195 +f 7253/7879/9236 7391/6976/9196 7249/7878/9195 +f 7392/6974/9198 7391/6976/9196 7253/7879/9236 +f 7258/7880/9199 7392/6974/9198 7253/7879/9236 +f 7393/6975/9237 7392/6974/9198 7258/7880/9199 +f 7263/7881/9238 7393/6975/9237 7258/7880/9199 +f 7394/7877/9193 7393/6975/9237 7263/7881/9238 +f 7236/7875/9190 7389/7847/9189 7228/7874/9188 +f 7268/7872/9183 7394/7877/9193 7263/7881/9238 +f 7395/6988/9171 7394/7877/9193 7268/7872/9183 +f 7272/7866/9239 7395/6988/9171 7268/7872/9183 +f 7396/7865/9170 7395/6988/9171 7272/7866/9239 +f 7277/7867/9240 7396/7865/9170 7272/7866/9239 +f 7397/7868/9174 7396/7865/9170 7277/7867/9240 +f 7281/7869/9175 7397/7868/9174 7277/7867/9240 +f 7398/7744/9176 7397/7868/9174 7281/7869/9175 +f 7285/7870/9241 7398/7744/9176 7281/7869/9175 +f 7389/7847/9189 7399/6980/9187 7228/7874/9188 +f 7400/7740/9178 7398/7744/9176 7285/7870/9241 +f 7276/7820/9179 7400/7740/9178 7285/7870/9241 +f 7401/6983/9180 7400/7740/9178 7276/7820/9179 +f 7240/7871/9181 7401/6983/9180 7276/7820/9179 +f 7402/6982/9182 7401/6983/9180 7240/7871/9181 +f 7235/6982/9184 7402/6982/9182 7240/7871/9181 +f 7403/6981/9185 7402/6982/9182 7235/6982/9184 +f 7229/7873/9242 7403/6981/9185 7235/6982/9184 +f 7399/6980/9187 7403/6981/9185 7229/7873/9242 +f 7228/7874/9188 7399/6980/9187 7229/7873/9242 +f 7404/7882/9206 7405/7883/9202 7194/7884/9205 +f 7199/7885/9207 7404/7882/9206 7194/7884/9205 +f 7406/7886/9208 7404/7882/9206 7199/7885/9207 +f 7204/7887/9209 7406/7886/9208 7199/7885/9207 +f 7407/7888/9210 7406/7886/9208 7204/7887/9209 +f 7208/7715/9211 7407/7888/9210 7204/7887/9209 +f 7408/7889/9212 7407/7888/9210 7208/7715/9211 +f 7213/7716/9213 7408/7889/9212 7208/7715/9211 +f 7409/7890/9214 7408/7889/9212 7213/7716/9213 +f 7217/7726/9216 7409/7890/9214 7213/7716/9213 +f 7410/7891/9217 7409/7890/9214 7217/7726/9216 +f 7194/7884/9205 7405/7883/9202 7189/7892/9204 +f 7221/7893/9218 7410/7891/9217 7217/7726/9216 +f 7411/7894/9219 7410/7891/9217 7221/7893/9218 +f 7212/7820/9220 7411/7894/9219 7221/7893/9218 +f 7412/7895/9221 7411/7894/9219 7212/7820/9220 +f 7176/7815/9222 7412/7895/9221 7212/7820/9220 +f 7413/6986/9223 7412/7895/9221 7176/7815/9222 +f 7171/7896/9224 7413/6986/9223 7176/7815/9222 +f 7414/6989/9226 7413/6986/9223 7171/7896/9224 +f 7165/7801/9243 7414/6989/9226 7171/7896/9224 +f 7405/7883/9202 7415/7897/9244 7189/7892/9204 +f 7416/6988/9228 7414/6989/9226 7165/7801/9243 +f 7164/7793/9229 7416/6988/9228 7165/7801/9243 +f 7417/7768/9230 7416/6988/9228 7164/7793/9229 +f 7172/7794/9231 7417/7768/9230 7164/7793/9229 +f 7418/7774/9232 7417/7768/9230 7172/7794/9231 +f 7181/7898/9233 7418/7774/9232 7172/7794/9231 +f 7419/7899/9225 7418/7774/9232 7181/7898/9233 +f 7185/7900/9245 7419/7899/9225 7181/7898/9233 +f 7415/7897/9244 7419/7899/9225 7185/7900/9245 +f 7189/7892/9204 7415/7897/9244 7185/7900/9245 +f 7420/7901/7968 7367/7877/7968 7357/6988/7968 +f 7420/7901/7968 7421/7902/7968 7367/7877/7968 +f 7422/6952/7968 7421/7902/7968 7420/7901/7968 +f 7423/7903/7968 7420/7901/7968 7357/6988/7968 +f 7424/6953/7968 7422/6952/7968 7420/7901/7968 +f 7424/6953/7968 7420/7901/7968 7423/7903/7968 +f 7421/7902/7968 7371/6975/7968 7367/7877/7968 +f 7423/7903/7968 7357/6988/7968 7356/7865/7968 +f 7422/6952/7968 7425/6951/7968 7421/7902/7968 +f 7425/6951/7968 7422/6952/7968 7424/6953/7968 +f 7426/7904/7968 7423/7903/7968 7356/7865/7968 +f 7426/7904/7968 7356/7865/7968 7358/7868/7968 +f 7421/7902/7968 7427/7905/7968 7371/6975/7968 +f 7425/6951/7968 7427/7905/7968 7421/7902/7968 +f 7428/6954/7968 7424/6953/7968 7423/7903/7968 +f 7428/6954/7968 7423/7903/7968 7426/7904/7968 +f 7425/6951/7968 7424/6953/7968 7428/6954/7968 +f 7429/7906/7968 7426/7904/7968 7358/7868/7968 +f 7430/6955/7968 7428/6954/7968 7426/7904/7968 +f 7430/6955/7968 7426/7904/7968 7429/7906/7968 +f 7425/6951/7968 7428/6954/7968 7430/6955/7968 +f 7427/7905/7968 7370/6974/7968 7371/6975/7968 +f 7429/7906/7968 7358/7868/7968 7359/7744/7968 +f 7425/6951/7968 7431/6950/7968 7427/7905/7968 +f 7427/7905/7968 7432/7907/7968 7370/6974/7968 +f 7431/6950/7968 7432/7907/7968 7427/7905/7968 +f 7425/6951/7968 7430/6955/7968 7433/6956/7968 +f 7433/6956/7968 7430/6955/7968 7429/7906/7968 +f 7431/6950/7968 7425/6951/7968 7434/6958/7968 +f 7425/6951/7968 7435/6957/7968 7434/6958/7968 +f 7425/6951/7968 7433/6956/7968 7435/6957/7968 +f 7432/7907/7968 7369/6976/7968 7370/6974/7968 +f 7431/6950/7968 7436/6949/7968 7432/7907/7968 +f 7432/7907/7968 7437/7908/7968 7369/6976/7968 +f 7436/6949/7968 7437/7908/7968 7432/7907/7968 +f 7431/6950/7968 7438/6948/7968 7436/6949/7968 +f 7436/6949/7968 7438/6948/7968 7437/7908/7968 +f 7437/7908/7968 7368/6977/7968 7369/6976/7968 +f 7431/6950/7968 7434/6958/7968 7439/6959/7968 +f 7437/7908/7968 7440/7909/7968 7368/6977/7968 +f 7438/6948/7968 7440/7909/7968 7437/7908/7968 +f 7431/6950/7968 7441/6947/7968 7438/6948/7968 +f 7438/6948/7968 7441/6947/7968 7440/7909/7968 +f 7442/7910/7968 7429/7906/7968 7359/7744/7968 +f 7433/6956/7968 7429/7906/7968 7442/7910/7968 +f 7435/6957/7968 7433/6956/7968 7442/7910/7968 +f 7440/7909/7968 7366/6978/7968 7368/6977/7968 +f 7431/6950/7968 7443/6946/7968 7441/6947/7968 +f 7434/6958/7968 7435/6957/7968 7444/7911/7968 +f 7435/6957/7968 7442/7910/7968 7444/7911/7968 +f 7440/7909/7968 7445/7912/7968 7366/6978/7968 +f 7441/6947/7968 7445/7912/7968 7440/7909/7968 +f 7441/6947/7968 7443/6946/7968 7445/7912/7968 +f 7431/6950/7968 7446/6944/7968 7443/6946/7968 +f 7431/6950/7968 7447/6945/7968 7446/6944/7968 +f 7431/6950/7968 7439/6959/7968 7447/6945/7968 +f 7445/7912/7968 7365/7847/7968 7366/6978/7968 +f 7445/7912/7968 7448/7913/7968 7365/7847/7968 +f 7443/6946/7968 7448/7913/7968 7445/7912/7968 +f 7443/6946/7968 7446/6944/7968 7448/7913/7968 +f 7439/6959/7968 7434/6958/7968 7449/7914/7968 +f 7434/6958/7968 7444/7911/7968 7449/7914/7968 +f 7448/7913/7968 7364/6980/7968 7365/7847/7968 +f 7446/6944/7968 7450/7915/7968 7448/7913/7968 +f 7446/6944/7968 7447/6945/7968 7450/7915/7968 +f 7448/7913/7968 7450/7915/7968 7364/6980/7968 +f 7442/7910/7968 7359/7744/7968 7360/7740/7968 +f 7444/7911/7968 7442/7910/7968 7360/7740/7968 +f 7447/6945/7968 7439/6959/7968 7451/7454/7968 +f 7447/6945/7968 7451/7454/7968 7450/7915/7968 +f 7439/6959/7968 7449/7914/7968 7451/7454/7968 +f 7450/7915/7968 7363/6981/7968 7364/6980/7968 +f 7450/7915/7968 7451/7454/7968 7363/6981/7968 +f 7451/7454/7968 7362/6982/7968 7363/6981/7968 +f 7451/7454/7968 7449/7914/7968 7362/6982/7968 +f 7449/7914/7968 7361/6983/7968 7362/6982/7968 +f 7449/7914/7968 7444/7911/7968 7361/6983/7968 +f 7444/7911/7968 7360/7740/7968 7361/6983/7968 +f 7452/7905/7937 7383/6974/7937 7373/6976/7937 +f 7452/7905/7937 7453/7902/7937 7383/6974/7937 +f 7454/6952/7937 7453/7902/7937 7452/7905/7937 +f 7455/7907/7937 7452/7905/7937 7373/6976/7937 +f 7456/6951/7937 7454/6952/7937 7452/7905/7937 +f 7456/6951/7937 7452/7905/7937 7455/7907/7937 +f 7453/7902/7937 7387/6975/7937 7383/6974/7937 +f 7455/7907/7937 7373/6976/7937 7372/6977/7937 +f 7454/6952/7937 7457/6953/7937 7453/7902/7937 +f 7457/6953/7937 7454/6952/7937 7456/6951/7937 +f 7458/7908/7937 7455/7907/7937 7372/6977/7937 +f 7458/7908/7937 7372/6977/7937 7374/6978/7937 +f 7453/7902/7937 7459/7901/7937 7387/6975/7937 +f 7457/6953/7937 7459/7901/7937 7453/7902/7937 +f 7460/6950/7937 7456/6951/7937 7455/7907/7937 +f 7460/6950/7937 7455/7907/7937 7458/7908/7937 +f 7457/6953/7937 7456/6951/7937 7460/6950/7937 +f 7461/7909/7937 7458/7908/7937 7374/6978/7937 +f 7462/6949/7937 7460/6950/7937 7458/7908/7937 +f 7462/6949/7937 7458/7908/7937 7461/7909/7937 +f 7457/6953/7937 7460/6950/7937 7462/6949/7937 +f 7459/7901/7937 7386/7877/7937 7387/6975/7937 +f 7461/7909/7937 7374/6978/7937 7375/7847/7937 +f 7457/6953/7937 7463/6954/7937 7459/7901/7937 +f 7459/7901/7937 7464/7903/7937 7386/7877/7937 +f 7463/6954/7937 7464/7903/7937 7459/7901/7937 +f 7457/6953/7937 7462/6949/7937 7465/6948/7937 +f 7465/6948/7937 7462/6949/7937 7461/7909/7937 +f 7463/6954/7937 7457/6953/7937 7466/6946/7937 +f 7457/6953/7937 7467/6947/7937 7466/6946/7937 +f 7457/6953/7937 7465/6948/7937 7467/6947/7937 +f 7464/7903/7937 7385/6988/7937 7386/7877/7937 +f 7463/6954/7937 7468/6955/7937 7464/7903/7937 +f 7464/7903/7937 7469/7904/7937 7385/6988/7937 +f 7468/6955/7937 7469/7904/7937 7464/7903/7937 +f 7463/6954/7937 7470/6956/7937 7468/6955/7937 +f 7468/6955/7937 7470/6956/7937 7469/7904/7937 +f 7469/7904/7937 7384/7865/7937 7385/6988/7937 +f 7463/6954/7937 7466/6946/7937 7471/6944/7937 +f 7469/7904/7937 7472/7906/7937 7384/7865/7937 +f 7470/6956/7937 7472/7906/7937 7469/7904/7937 +f 7463/6954/7937 7473/6957/7937 7470/6956/7937 +f 7470/6956/7937 7473/6957/7937 7472/7906/7937 +f 7474/7912/7937 7461/7909/7937 7375/7847/7937 +f 7465/6948/7937 7461/7909/7937 7474/7912/7937 +f 7467/6947/7937 7465/6948/7937 7474/7912/7937 +f 7472/7906/7937 7382/7868/7937 7384/7865/7937 +f 7463/6954/7937 7475/6958/7937 7473/6957/7937 +f 7466/6946/7937 7467/6947/7937 7476/7913/7937 +f 7467/6947/7937 7474/7912/7937 7476/7913/7937 +f 7472/7906/7937 7477/7910/7937 7382/7868/7937 +f 7473/6957/7937 7477/7910/7937 7472/7906/7937 +f 7473/6957/7937 7475/6958/7937 7477/7910/7937 +f 7463/6954/7937 7478/6959/7937 7475/6958/7937 +f 7463/6954/7937 7479/6945/7937 7478/6959/7937 +f 7463/6954/7937 7471/6944/7937 7479/6945/7937 +f 7477/7910/7937 7381/7744/7937 7382/7868/7937 +f 7477/7910/7937 7480/7911/7937 7381/7744/7937 +f 7475/6958/7937 7480/7911/7937 7477/7910/7937 +f 7475/6958/7937 7478/6959/7937 7480/7911/7937 +f 7471/6944/7937 7466/6946/7937 7481/7915/7937 +f 7466/6946/7937 7476/7913/7937 7481/7915/7937 +f 7480/7911/7937 7380/7740/7937 7381/7744/7937 +f 7478/6959/7937 7482/7914/7937 7480/7911/7937 +f 7478/6959/7937 7479/6945/7937 7482/7914/7937 +f 7480/7911/7937 7482/7914/7937 7380/7740/7937 +f 7474/7912/7937 7375/7847/7937 7376/6980/7937 +f 7476/7913/7937 7474/7912/7937 7376/6980/7937 +f 7479/6945/7937 7471/6944/7937 7483/7454/7937 +f 7479/6945/7937 7483/7454/7937 7482/7914/7937 +f 7471/6944/7937 7481/7915/7937 7483/7454/7937 +f 7482/7914/7937 7379/6983/7937 7380/7740/7937 +f 7482/7914/7937 7483/7454/7937 7379/6983/7937 +f 7483/7454/7937 7378/6982/7937 7379/6983/7937 +f 7483/7454/7937 7481/7915/7937 7378/6982/7937 +f 7481/7915/7937 7377/6981/7937 7378/6982/7937 +f 7481/7915/7937 7476/7913/7937 7377/6981/7937 +f 7476/7913/7937 7376/6980/7937 7377/6981/7937 +f 7484/7914/7968 7401/6983/7968 7402/6982/7968 +f 7484/7914/7968 7485/7911/7968 7401/6983/7968 +f 6255/6958/7968 7485/7911/7968 7484/7914/7968 +f 7486/7454/7968 7484/7914/7968 7402/6982/7968 +f 6257/6959/7968 6255/6958/7968 7484/7914/7968 +f 6257/6959/7968 7484/7914/7968 7486/7454/7968 +f 7485/7911/7968 7400/7740/7968 7401/6983/7968 +f 7486/7454/7968 7402/6982/7968 7403/6981/7968 +f 6255/6958/7968 6253/6957/7968 7485/7911/7968 +f 7487/7915/7968 7486/7454/7968 7403/6981/7968 +f 7485/7911/7968 7488/7910/7968 7400/7740/7968 +f 6253/6957/7968 7488/7910/7968 7485/7911/7968 +f 7487/7915/7968 7403/6981/7968 7399/6980/7968 +f 7488/7910/7968 7398/7744/7968 7400/7740/7968 +f 7488/7910/7968 7489/7906/7968 7398/7744/7968 +f 6253/6957/7968 6251/6956/7968 7488/7910/7968 +f 6251/6956/7968 7489/7906/7968 7488/7910/7968 +f 7489/7906/7968 7397/7868/7968 7398/7744/7968 +f 7489/7906/7968 7490/7904/7968 7397/7868/7968 +f 6251/6956/7968 6249/6955/7968 7489/7906/7968 +f 6249/6955/7968 7490/7904/7968 7489/7906/7968 +f 7490/7904/7968 7396/7865/7968 7397/7868/7968 +f 7490/7904/7968 7491/7903/7968 7396/7865/7968 +f 6249/6955/7968 6247/6954/7968 7490/7904/7968 +f 6247/6954/7968 7491/7903/7968 7490/7904/7968 +f 6228/6945/7968 6257/6959/7968 7486/7454/7968 +f 6228/6945/7968 7486/7454/7968 7487/7915/7968 +f 7492/7913/7968 7487/7915/7968 7399/6980/7968 +f 7491/7903/7968 7395/6988/7968 7396/7865/7968 +f 7491/7903/7968 7493/7901/7968 7395/6988/7968 +f 6247/6954/7968 6245/6953/7968 7491/7903/7968 +f 6245/6953/7968 7493/7901/7968 7491/7903/7968 +f 7493/7901/7968 7394/7877/7968 7395/6988/7968 +f 6245/6953/7968 6243/6952/7968 7493/7901/7968 +f 7493/7901/7968 7494/7902/7968 7394/7877/7968 +f 6243/6952/7968 7494/7902/7968 7493/7901/7968 +f 7494/7902/7968 7393/6975/7968 7394/7877/7968 +f 6243/6952/7968 6241/6951/7968 7494/7902/7968 +f 7494/7902/7968 7495/7905/7968 7393/6975/7968 +f 6241/6951/7968 7495/7905/7968 7494/7902/7968 +f 7495/7905/7968 7392/6974/7968 7393/6975/7968 +f 6241/6951/7968 6239/6950/7968 7495/7905/7968 +f 7495/7905/7968 7496/7907/7968 7392/6974/7968 +f 6239/6950/7968 7496/7907/7968 7495/7905/7968 +f 7492/7913/7968 7399/6980/7968 7389/7847/7968 +f 7496/7907/7968 7391/6976/7968 7392/6974/7968 +f 6229/6944/7968 7487/7915/7968 7492/7913/7968 +f 6229/6944/7968 6228/6945/7968 7487/7915/7968 +f 6239/6950/7968 6237/6949/7968 7496/7907/7968 +f 7496/7907/7968 7497/7908/7968 7391/6976/7968 +f 6237/6949/7968 7497/7908/7968 7496/7907/7968 +f 7497/7908/7968 7390/6977/7968 7391/6976/7968 +f 6237/6949/7968 6235/6948/7968 7497/7908/7968 +f 7497/7908/7968 7498/7909/7968 7390/6977/7968 +f 6235/6948/7968 7498/7909/7968 7497/7908/7968 +f 7498/7909/7968 7388/6978/7968 7390/6977/7968 +f 6235/6948/7968 6233/6947/7968 7498/7909/7968 +f 7498/7909/7968 7499/7912/7968 7388/6978/7968 +f 6233/6947/7968 7499/7912/7968 7498/7909/7968 +f 7499/7912/7968 7389/7847/7968 7388/6978/7968 +f 7499/7912/7968 7492/7913/7968 7389/7847/7968 +f 6233/6947/7968 6231/6946/7968 7499/7912/7968 +f 6231/6946/7968 7492/7913/7968 7499/7912/7968 +f 6231/6946/7968 6229/6944/7968 7492/7913/7968 +f 7500/7916/7937 7417/7768/7937 7418/7774/7937 +f 7500/7916/7937 7501/7903/7937 7417/7768/7937 +f 6287/6972/7937 7501/7903/7937 7500/7916/7937 +f 7502/7917/7937 7500/7916/7937 7418/7774/7937 +f 6289/6973/7937 6287/6972/7937 7500/7916/7937 +f 6289/6973/7937 7500/7916/7937 7502/7917/7937 +f 7501/7903/7937 7416/6988/7937 7417/7768/7937 +f 7502/7917/7937 7418/7774/7937 7419/7899/7937 +f 6287/6972/7937 6285/6955/7937 7501/7903/7937 +f 7503/7918/7937 7502/7917/7937 7419/7899/7937 +f 7501/7903/7937 7504/7904/7937 7416/6988/7937 +f 6285/6955/7937 7504/7904/7937 7501/7903/7937 +f 7503/7918/7937 7419/7899/7937 7415/7897/7937 +f 7504/7904/7937 7414/6989/7937 7416/6988/7937 +f 7504/7904/7937 7505/7919/7937 7414/6989/7937 +f 6285/6955/7937 6283/6956/7937 7504/7904/7937 +f 6283/6956/7937 7505/7919/7937 7504/7904/7937 +f 7505/7919/7937 7413/6986/7937 7414/6989/7937 +f 7505/7919/7937 7506/7910/7937 7413/6986/7937 +f 6283/6956/7937 6281/6971/7937 7505/7919/7937 +f 6281/6971/7937 7506/7910/7937 7505/7919/7937 +f 7506/7910/7937 7412/7895/7937 7413/6986/7937 +f 7506/7910/7937 7507/7920/7937 7412/7895/7937 +f 6281/6971/7937 6279/6970/7937 7506/7910/7937 +f 6279/6970/7937 7507/7920/7937 7506/7910/7937 +f 6260/6961/7937 6289/6973/7937 7502/7917/7937 +f 6260/6961/7937 7502/7917/7937 7503/7918/7937 +f 7508/7921/7937 7503/7918/7937 7415/7897/7937 +f 7507/7920/7937 7411/7894/7937 7412/7895/7937 +f 7507/7920/7937 7509/7922/7937 7411/7894/7937 +f 6279/6970/7937 6277/6969/7937 7507/7920/7937 +f 6277/6969/7937 7509/7922/7937 7507/7920/7937 +f 7509/7922/7937 7410/7891/7937 7411/7894/7937 +f 6277/6969/7937 6275/6968/7937 7509/7922/7937 +f 7509/7922/7937 7510/7923/7937 7410/7891/7937 +f 6275/6968/7937 7510/7923/7937 7509/7922/7937 +f 7510/7923/7937 7409/7890/7937 7410/7891/7937 +f 6275/6968/7937 6273/6967/7937 7510/7923/7937 +f 7510/7923/7937 7511/7924/7937 7409/7890/7937 +f 6273/6967/7937 7511/7924/7937 7510/7923/7937 +f 7511/7924/7937 7408/7889/7937 7409/7890/7937 +f 6273/6967/7937 6271/6966/7937 7511/7924/7937 +f 7511/7924/7937 7512/7925/7937 7408/7889/7937 +f 6271/6966/7937 7512/7925/7937 7511/7924/7937 +f 7508/7921/7937 7415/7897/7937 7405/7883/7937 +f 7512/7925/7937 7407/7888/7937 7408/7889/7937 +f 6261/6960/7937 7503/7918/7937 7508/7921/7937 +f 6261/6960/7937 6260/6961/7937 7503/7918/7937 +f 6271/6966/7937 6269/6965/7937 7512/7925/7937 +f 7512/7925/7937 7513/7926/7937 7407/7888/7937 +f 6269/6965/7937 7513/7926/7937 7512/7925/7937 +f 7513/7926/7937 7406/7886/7937 7407/7888/7937 +f 6269/6965/7937 6267/6964/7937 7513/7926/7937 +f 7513/7926/7937 7514/7927/7937 7406/7886/7937 +f 6267/6964/7937 7514/7927/7937 7513/7926/7937 +f 7514/7927/7937 7404/7882/7937 7406/7886/7937 +f 6267/6964/7937 6265/6963/7937 7514/7927/7937 +f 7514/7927/7937 7515/7928/7937 7404/7882/7937 +f 6265/6963/7937 7515/7928/7937 7514/7927/7937 +f 7515/7928/7937 7405/7883/7937 7404/7882/7937 +f 7515/7928/7937 7508/7921/7937 7405/7883/7937 +f 6265/6963/7937 6263/6962/7937 7515/7928/7937 +f 6263/6962/7937 7508/7921/7937 7515/7928/7937 +f 6263/6962/7937 6261/6960/7937 7508/7921/7937 +f 7516/7929/7968 6799/7930/7968 6797/7931/7968 +f 7516/7929/7968 6790/7932/7968 6799/7930/7968 +f 7516/7929/7968 6791/7933/7968 6790/7932/7968 +f 7516/7929/7968 6797/7931/7968 6795/7934/7968 +f 7516/7929/7968 6793/7935/7968 6791/7933/7968 +f 7516/7929/7968 6795/7934/7968 6793/7935/7968 +f 7517/7936/7937 6789/7937/7937 6792/7934/7937 +f 7517/7936/7937 6800/7938/7937 6789/7937/7937 +f 7517/7936/7937 6798/7939/7937 6800/7938/7937 +f 7517/7936/7937 6792/7934/7937 6794/7940/7937 +f 7517/7936/7937 6796/7941/7937 6798/7939/7937 +f 7517/7936/7937 6794/7940/7937 6796/7941/7937 +f 7518/7942/7937 6879/7943/7937 6877/7944/7937 +f 7518/7942/7937 6870/7945/7937 6879/7943/7937 +f 7518/7942/7937 6871/7946/7937 6870/7945/7937 +f 7518/7942/7937 6877/7944/7937 6875/7947/8080 +f 7518/7942/7937 6873/7948/7937 6871/7946/7937 +f 7518/7942/7937 6875/7947/8080 6873/7948/7937 +f 7519/7944/7968 6869/7949/7968 6872/7950/7968 +f 7519/7944/7968 6880/7951/7968 6869/7949/7968 +f 7519/7944/7968 6878/7952/7968 6880/7951/7968 +f 7519/7944/7968 6872/7950/7968 6874/7953/7968 +f 7519/7944/7968 6876/7954/7968 6878/7952/7968 +f 7519/7944/7968 6874/7953/7968 6876/7954/7968 +f 7520/7944/9246 6894/7955/9246 6896/7956/9246 +f 7520/7944/9246 6892/7957/9246 6894/7955/9246 +f 7520/7944/9246 6890/7958/9246 6892/7957/9246 +f 7520/7944/9246 6888/7959/9246 6890/7958/9246 +f 7520/7944/9246 6886/7960/9246 6888/7959/9246 +f 7520/7944/9246 6884/7961/9246 6886/7960/9246 +f 7520/7944/9246 6896/7956/9246 6898/7962/9246 +f 7520/7944/9246 6883/7963/9246 6884/7961/9246 +f 7520/7944/9246 6904/7964/9246 6883/7963/9246 +f 7520/7944/9246 6902/7965/9246 6904/7964/9246 +f 7520/7944/9246 6900/7966/9246 6902/7965/9246 +f 7520/7944/9246 6898/7962/9246 6900/7966/9246 +f 7521/7967/9247 6891/7968/9247 6889/7969/9247 +f 7521/7967/9247 6893/7970/9247 6891/7968/9247 +f 7521/7967/9247 6895/7971/9247 6893/7970/9247 +f 7521/7967/9247 6897/7972/9247 6895/7971/9247 +f 7521/7967/9247 6899/7973/9247 6897/7972/9247 +f 7521/7967/9247 6901/7974/9247 6899/7973/9247 +f 7521/7967/9247 6889/7969/9247 6887/7950/9247 +f 7521/7967/9247 6903/7975/9247 6901/7974/9247 +f 7521/7967/9247 6881/7976/9247 6903/7975/9247 +f 7521/7967/9247 6882/7935/9247 6881/7976/9247 +f 7521/7967/9247 6885/7977/9247 6882/7935/9247 +f 7521/7967/9247 6887/7950/9247 6885/7977/9247 +f 7522/7936/9248 6927/7938/9248 6925/7978/9248 +f 7522/7936/9248 6905/7979/9248 6927/7938/9248 +f 7522/7936/9248 6906/7980/9248 6905/7979/9248 +f 7522/7936/9248 6909/7981/9248 6906/7980/9248 +f 7522/7936/9248 6911/7982/9248 6909/7981/9248 +f 7522/7936/9248 6913/7983/9248 6911/7982/9248 +f 7522/7936/9248 6925/7978/9248 6923/7984/9248 +f 7522/7936/9248 6915/7985/9248 6913/7983/9248 +f 7522/7936/9248 6917/7986/9248 6915/7985/9248 +f 7522/7936/9248 6919/7987/9248 6917/7986/9248 +f 7522/7936/9248 6921/7988/9248 6919/7987/9248 +f 7522/7936/9248 6923/7984/9248 6921/7988/9248 +f 7523/7936/9249 6908/7978/9250 6907/7984/9249 +f 7523/7936/9249 6928/7938/9249 6908/7978/9250 +f 7523/7936/9249 6926/7979/9249 6928/7938/9249 +f 7523/7936/9249 6924/7980/9250 6926/7979/9249 +f 7523/7936/9249 6922/7981/9250 6924/7980/9250 +f 7523/7936/9249 6920/7982/9249 6922/7981/9250 +f 7523/7936/9249 6907/7984/9249 6910/7989/9249 +f 7523/7936/9249 6918/7983/9250 6920/7982/9249 +f 7523/7936/9249 6916/7985/9249 6918/7983/9250 +f 7523/7936/9249 6914/7986/9249 6916/7985/9249 +f 7523/7936/9249 6912/7987/9249 6914/7986/9249 +f 7523/7936/9249 6910/7989/9249 6912/7987/9249 +f 7524/7990/9246 6951/7991/9246 6949/7992/9246 +f 7524/7990/9246 6930/7993/9246 6951/7991/9246 +f 7524/7990/9246 6932/7994/9246 6930/7993/9246 +f 7524/7990/9246 6934/7995/9246 6932/7994/9246 +f 7524/7990/9246 6936/7996/9246 6934/7995/9246 +f 7524/7990/9246 6938/7997/9246 6936/7996/9246 +f 7524/7990/9246 6949/7992/9246 6947/7998/9246 +f 7524/7990/9246 6940/7999/9246 6938/7997/9246 +f 7524/7990/9246 6941/8000/9246 6940/7999/9246 +f 7524/7990/9246 6943/8001/9246 6941/8000/9246 +f 7524/7990/9246 6945/8002/9246 6943/8001/9246 +f 7524/7990/9246 6947/7998/9246 6945/8002/9246 +f 7525/8003/9247 6929/8004/9247 6931/8005/9247 +f 7525/8003/9247 6952/8006/9247 6929/8004/9247 +f 7525/8003/9247 6950/8007/9247 6952/8006/9247 +f 7525/8003/9247 6948/8008/9247 6950/8007/9247 +f 7525/8003/9247 6946/8009/9247 6948/8008/9247 +f 7525/8003/9247 6944/8010/9247 6946/8009/9247 +f 7525/8003/9247 6931/8005/9247 6933/8011/9247 +f 7525/8003/9247 6942/7981/9247 6944/8010/9247 +f 7525/8003/9247 6939/7982/9247 6942/7981/9247 +f 7525/8003/9247 6937/8012/9247 6939/7982/9247 +f 7525/8003/9247 6935/8013/9247 6937/8012/9247 +f 7525/8003/9247 6933/8011/9247 6935/8013/9247 +f 7526/7942/9246 6975/8014/9246 6973/8015/9246 +f 7526/7942/9246 6954/8016/9246 6975/8014/9246 +f 7526/7942/9246 6955/8017/9246 6954/8016/9246 +f 7526/7942/9246 6957/8018/9246 6955/8017/9246 +f 7526/7942/9246 6959/8019/9246 6957/8018/9246 +f 7526/7942/9246 6961/8020/9246 6959/8019/9246 +f 7526/7942/9246 6973/8015/9246 6971/8021/9246 +f 7526/7942/9246 6963/8022/9246 6961/8020/9246 +f 7526/7942/9246 6965/8023/9246 6963/8022/9246 +f 7526/7942/9246 6967/8024/9246 6965/8023/9246 +f 7526/7942/9246 6969/8025/9246 6967/8024/9246 +f 7526/7942/9246 6971/8021/9246 6969/8025/9246 +f 7527/7990/9247 6953/7991/9247 6956/7992/9247 +f 7527/7990/9247 6976/7993/9247 6953/7991/9247 +f 7527/7990/9247 6974/8026/9247 6976/7993/9247 +f 7527/7990/9247 6972/8027/9247 6974/8026/9247 +f 7527/7990/9247 6970/8028/9247 6972/8027/9247 +f 7527/7990/9247 6968/8029/9247 6970/8028/9247 +f 7527/7990/9247 6956/7992/9247 6958/7998/9247 +f 7527/7990/9247 6966/8030/9247 6968/8029/9247 +f 7527/7990/9247 6964/8000/9247 6966/8030/9247 +f 7527/7990/9247 6962/8001/9247 6964/8000/9247 +f 7527/7990/9247 6960/8002/9247 6962/8001/9247 +f 7527/7990/9247 6958/7998/9247 6960/8002/9247 +f 7528/7942/7937 6987/8031/7937 6985/8032/7937 +f 7528/7942/7937 6978/8033/7937 6987/8031/7937 +f 7528/7942/7937 6979/8034/7937 6978/8033/7937 +f 7528/7942/7937 6985/8032/7937 6983/8035/7937 +f 7528/7942/7937 6981/8036/7937 6979/8034/7937 +f 7528/7942/7937 6983/8035/7937 6981/8036/7937 +f 7529/7990/7968 6977/7929/7968 6980/8037/7968 +f 7529/7990/7968 6988/8038/7968 6977/7929/7968 +f 7529/7990/7968 6986/8039/7968 6988/8038/7968 +f 7529/7990/7968 6980/8037/7968 6982/7947/7968 +f 7529/7990/7968 6984/8040/7968 6986/8039/7968 +f 7529/7990/7968 6982/7947/7968 6984/8040/7968 +f 6990/8041/7968 6989/8042/7968 7530/7990/7968 +f 6999/8043/7968 6990/8041/7968 7530/7990/7968 +f 6989/8042/7968 6993/8044/7968 7530/7990/7968 +f 6997/8045/7968 6999/8043/7968 7530/7990/7968 +f 6995/8046/7968 6997/8045/7968 7530/7990/7968 +f 6993/8044/7968 6995/8046/7968 7530/7990/7968 +f 7000/8047/7937 6998/8048/7937 7531/8049/7937 +f 6991/8050/7937 7000/8047/7937 7531/8049/7937 +f 6998/8048/7937 6996/8051/7937 7531/8049/7937 +f 6992/8052/7937 6991/8050/7937 7531/8049/7937 +f 6994/8053/7937 6992/8052/7937 7531/8049/7937 +f 6996/8051/7937 6994/8053/7937 7531/8049/7937 +# 2894 faces + diff --git a/Sandbox/res/RoundedCube.obj b/Sandbox/res/RoundedCube.obj new file mode 100644 index 00000000..c1f5aae9 --- /dev/null +++ b/Sandbox/res/RoundedCube.obj @@ -0,0 +1,1968 @@ +# This file uses centimeters as units for non-parametric coordinates. + +v -4.987465 -4.611300 4.500050 +v -4.950490 -4.716970 4.500050 +v -4.890927 -4.811764 4.500051 +v -4.811764 -4.890927 4.500050 +v -4.716970 -4.950490 4.500050 +v -4.611300 -4.987465 4.500050 +v -4.500050 -5.000000 4.500050 +v -4.500050 -4.987465 4.611300 +v -4.500050 -4.950490 4.716970 +v -4.500050 -4.890927 4.811764 +v -4.500050 -4.811764 4.890927 +v -4.500050 -4.716970 4.950490 +v -4.500050 -4.611300 4.987465 +v -4.500050 -4.500050 5.000000 +v -4.611300 -4.500050 4.987465 +v -4.716970 -4.500050 4.950490 +v -4.811764 -4.500050 4.890927 +v -4.890927 -4.500050 4.811764 +v -4.950490 -4.500050 4.716970 +v -4.987465 -4.500050 4.611300 +v -5.000000 -4.500050 4.500050 +v 4.611300 -4.987465 4.500050 +v 4.716970 -4.950490 4.500050 +v 4.811764 -4.890927 4.500050 +v 4.890927 -4.811764 4.500050 +v 4.950490 -4.716970 4.500050 +v 4.987465 -4.611300 4.500050 +v 5.000000 -4.500050 4.500050 +v 4.987465 -4.500050 4.611300 +v 4.950490 -4.500050 4.716970 +v 4.890927 -4.500050 4.811764 +v 4.811764 -4.500050 4.890927 +v 4.716970 -4.500050 4.950490 +v 4.611300 -4.500050 4.987465 +v 4.500050 -4.500050 5.000000 +v 4.500050 -4.611300 4.987465 +v 4.500050 -4.716970 4.950490 +v 4.500050 -4.811764 4.890927 +v 4.500050 -4.890927 4.811764 +v 4.500050 -4.950490 4.716970 +v 4.500050 -4.987465 4.611300 +v 4.500050 -5.000000 4.500050 +v -4.611300 4.987465 4.500050 +v -4.716970 4.950490 4.500050 +v -4.811764 4.890927 4.500050 +v -4.890927 4.811764 4.500050 +v -4.950490 4.716970 4.500050 +v -4.987465 4.611300 4.500050 +v -5.000000 4.500050 4.500050 +v -4.987465 4.500050 4.611300 +v -4.950490 4.500050 4.716970 +v -4.890927 4.500050 4.811764 +v -4.811764 4.500050 4.890927 +v -4.716970 4.500050 4.950490 +v -4.611300 4.500050 4.987465 +v -4.500050 4.500050 5.000000 +v -4.500050 4.611300 4.987465 +v -4.500050 4.716970 4.950490 +v -4.500050 4.811764 4.890927 +v -4.500050 4.890927 4.811764 +v -4.500050 4.950490 4.716970 +v -4.500050 4.987465 4.611300 +v -4.500050 5.000000 4.500050 +v 4.987465 4.611300 4.500050 +v 4.950490 4.716970 4.500050 +v 4.890927 4.811764 4.500050 +v 4.811764 4.890927 4.500050 +v 4.716970 4.950490 4.500050 +v 4.611300 4.987465 4.500050 +v 4.500050 5.000000 4.500050 +v 4.500050 4.987465 4.611300 +v 4.500050 4.950490 4.716970 +v 4.500050 4.890927 4.811764 +v 4.500050 4.811764 4.890927 +v 4.500050 4.716970 4.950490 +v 4.500050 4.611300 4.987465 +v 4.500050 4.500050 5.000000 +v 4.611300 4.500050 4.987465 +v 4.716970 4.500050 4.950490 +v 4.811764 4.500050 4.890927 +v 4.890927 4.500050 4.811764 +v 4.950490 4.500050 4.716970 +v 4.987465 4.500050 4.611300 +v 5.000000 4.500050 4.500050 +v -4.611300 4.500050 -4.987465 +v -4.716970 4.500050 -4.950490 +v -4.811764 4.500050 -4.890927 +v -4.890927 4.500050 -4.811764 +v -4.950490 4.500050 -4.716970 +v -4.987465 4.500050 -4.611300 +v -5.000000 4.500050 -4.500050 +v -4.987465 4.611300 -4.500050 +v -4.950490 4.716970 -4.500050 +v -4.890927 4.811764 -4.500050 +v -4.811764 4.890927 -4.500050 +v -4.716970 4.950490 -4.500050 +v -4.611300 4.987465 -4.500050 +v -4.500050 5.000000 -4.500050 +v -4.500050 4.987465 -4.611300 +v -4.500050 4.950490 -4.716970 +v -4.500050 4.890927 -4.811764 +v -4.500050 4.811764 -4.890927 +v -4.500050 4.716970 -4.950490 +v -4.500050 4.611300 -4.987465 +v -4.500050 4.500050 -5.000000 +v 4.987465 4.500050 -4.611300 +v 4.950490 4.500050 -4.716970 +v 4.890927 4.500050 -4.811764 +v 4.811764 4.500050 -4.890927 +v 4.716970 4.500050 -4.950490 +v 4.611300 4.500050 -4.987465 +v 4.500050 4.500050 -5.000000 +v 4.500050 4.611300 -4.987465 +v 4.500050 4.716970 -4.950490 +v 4.500050 4.811764 -4.890927 +v 4.500050 4.890927 -4.811764 +v 4.500050 4.950490 -4.716970 +v 4.500050 4.987465 -4.611300 +v 4.500050 5.000000 -4.500050 +v 4.611300 4.987465 -4.500050 +v 4.716970 4.950490 -4.500050 +v 4.811764 4.890927 -4.500050 +v 4.890927 4.811764 -4.500050 +v 4.950490 4.716970 -4.500050 +v 4.987465 4.611300 -4.500050 +v 5.000000 4.500050 -4.500050 +v -4.611300 -4.987465 -4.500050 +v -4.716970 -4.950490 -4.500050 +v -4.811764 -4.890927 -4.500050 +v -4.890927 -4.811764 -4.500050 +v -4.950490 -4.716970 -4.500050 +v -4.987465 -4.611300 -4.500050 +v -5.000000 -4.500050 -4.500050 +v -4.987465 -4.500050 -4.611300 +v -4.950490 -4.500050 -4.716970 +v -4.890927 -4.500050 -4.811764 +v -4.811764 -4.500050 -4.890927 +v -4.716970 -4.500050 -4.950490 +v -4.611300 -4.500050 -4.987465 +v -4.500050 -4.500050 -5.000000 +v -4.500050 -4.611300 -4.987465 +v -4.500050 -4.716970 -4.950490 +v -4.500050 -4.811764 -4.890927 +v -4.500050 -4.890927 -4.811764 +v -4.500050 -4.950490 -4.716970 +v -4.500050 -4.987465 -4.611300 +v -4.500050 -5.000000 -4.500050 +v 4.987465 -4.611300 -4.500050 +v 4.950490 -4.716970 -4.500050 +v 4.890927 -4.811764 -4.500050 +v 4.811764 -4.890927 -4.500050 +v 4.716970 -4.950490 -4.500050 +v 4.611300 -4.987465 -4.500050 +v 4.500050 -5.000000 -4.500050 +v 4.500050 -4.987465 -4.611300 +v 4.500050 -4.950490 -4.716970 +v 4.500050 -4.890927 -4.811764 +v 4.500050 -4.811764 -4.890927 +v 4.500050 -4.716970 -4.950490 +v 4.500050 -4.611300 -4.987465 +v 4.500050 -4.500050 -5.000000 +v 4.611300 -4.500050 -4.987465 +v 4.716970 -4.500050 -4.950490 +v 4.811764 -4.500050 -4.890927 +v 4.890927 -4.500050 -4.811764 +v 4.950490 -4.500050 -4.716970 +v 4.987465 -4.500050 -4.611300 +v 5.000000 -4.500050 -4.500050 +v -4.975245 -4.609905 4.609905 +v -4.943794 -4.709916 4.593512 +v -4.886396 -4.805519 4.584552 +v -4.805519 -4.886396 4.584552 +v -4.709916 -4.943794 4.593512 +v -4.609905 -4.975245 4.609905 +v -4.593512 -4.943794 4.709916 +v -4.584552 -4.886396 4.805519 +v -4.584552 -4.805519 4.886396 +v -4.593512 -4.709916 4.943794 +v -4.609905 -4.609905 4.975245 +v -4.709916 -4.593512 4.943794 +v -4.805519 -4.584552 4.886396 +v -4.886396 -4.584552 4.805519 +v -4.943794 -4.593512 4.709916 +v -4.919769 -4.691847 4.691847 +v -4.870180 -4.789072 4.670180 +v -4.789072 -4.870180 4.670180 +v -4.691847 -4.919769 4.691847 +v -4.670180 -4.870180 4.789072 +v -4.670180 -4.789072 4.870180 +v -4.691847 -4.691847 4.919769 +v -4.789072 -4.670180 4.870180 +v -4.870180 -4.670180 4.789072 +v -4.839934 -4.759026 4.759026 +v -4.759026 -4.839935 4.759026 +v -4.759026 -4.759026 4.839935 +v 4.609905 -4.975245 4.609905 +v 4.709916 -4.943794 4.593512 +v 4.805519 -4.886396 4.584552 +v 4.886396 -4.805519 4.584552 +v 4.943794 -4.709916 4.593512 +v 4.975245 -4.609905 4.609905 +v 4.943794 -4.593512 4.709916 +v 4.886396 -4.584552 4.805519 +v 4.805519 -4.584552 4.886396 +v 4.709916 -4.593512 4.943794 +v 4.609905 -4.609905 4.975245 +v 4.593512 -4.709916 4.943794 +v 4.584552 -4.805519 4.886396 +v 4.584552 -4.886396 4.805519 +v 4.593512 -4.943794 4.709916 +v 4.691847 -4.919769 4.691847 +v 4.789072 -4.870180 4.670180 +v 4.870180 -4.789072 4.670180 +v 4.919769 -4.691847 4.691847 +v 4.870180 -4.670180 4.789072 +v 4.789072 -4.670180 4.870180 +v 4.691847 -4.691847 4.919769 +v 4.670180 -4.789072 4.870180 +v 4.670180 -4.870180 4.789072 +v 4.759026 -4.839934 4.759026 +v 4.839935 -4.759026 4.759026 +v 4.759026 -4.759026 4.839935 +v -4.609905 4.975245 4.609905 +v -4.709916 4.943794 4.593512 +v -4.805519 4.886396 4.584552 +v -4.886396 4.805519 4.584552 +v -4.943794 4.709916 4.593512 +v -4.975245 4.609905 4.609905 +v -4.943794 4.593512 4.709916 +v -4.886396 4.584552 4.805519 +v -4.805519 4.584552 4.886396 +v -4.709916 4.593512 4.943794 +v -4.609905 4.609905 4.975245 +v -4.593512 4.709916 4.943794 +v -4.584552 4.805519 4.886396 +v -4.584552 4.886396 4.805519 +v -4.593512 4.943794 4.709916 +v -4.691847 4.919769 4.691847 +v -4.789072 4.870180 4.670180 +v -4.870180 4.789072 4.670180 +v -4.919769 4.691847 4.691847 +v -4.870180 4.670180 4.789072 +v -4.789072 4.670180 4.870180 +v -4.691847 4.691847 4.919769 +v -4.670180 4.789072 4.870180 +v -4.670180 4.870180 4.789072 +v -4.759026 4.839934 4.759026 +v -4.839935 4.759026 4.759026 +v -4.759026 4.759026 4.839935 +v 4.975245 4.609905 4.609905 +v 4.943794 4.709916 4.593512 +v 4.886396 4.805519 4.584552 +v 4.805519 4.886396 4.584552 +v 4.709916 4.943794 4.593512 +v 4.609905 4.975245 4.609905 +v 4.593512 4.943794 4.709916 +v 4.584552 4.886396 4.805519 +v 4.584552 4.805519 4.886396 +v 4.593512 4.709916 4.943794 +v 4.609905 4.609905 4.975245 +v 4.709916 4.593512 4.943794 +v 4.805519 4.584552 4.886396 +v 4.886396 4.584552 4.805519 +v 4.943794 4.593512 4.709916 +v 4.919769 4.691847 4.691847 +v 4.870180 4.789072 4.670180 +v 4.789072 4.870180 4.670180 +v 4.691847 4.919769 4.691847 +v 4.670180 4.870180 4.789072 +v 4.670180 4.789072 4.870180 +v 4.691847 4.691847 4.919769 +v 4.789072 4.670180 4.870180 +v 4.870180 4.670180 4.789072 +v 4.839934 4.759026 4.759026 +v 4.759026 4.839935 4.759026 +v 4.759026 4.759026 4.839935 +v -4.609905 4.609905 -4.975245 +v -4.709916 4.593512 -4.943794 +v -4.805519 4.584552 -4.886396 +v -4.886396 4.584552 -4.805519 +v -4.943794 4.593512 -4.709916 +v -4.975245 4.609905 -4.609905 +v -4.943794 4.709916 -4.593512 +v -4.886396 4.805519 -4.584552 +v -4.805519 4.886396 -4.584552 +v -4.709916 4.943794 -4.593512 +v -4.609905 4.975245 -4.609905 +v -4.593512 4.943794 -4.709916 +v -4.584552 4.886396 -4.805519 +v -4.584552 4.805519 -4.886396 +v -4.593512 4.709916 -4.943794 +v -4.691847 4.691847 -4.919769 +v -4.789072 4.670180 -4.870180 +v -4.870180 4.670180 -4.789072 +v -4.919769 4.691847 -4.691847 +v -4.870180 4.789072 -4.670180 +v -4.789072 4.870180 -4.670180 +v -4.691847 4.919769 -4.691847 +v -4.670180 4.870180 -4.789072 +v -4.670180 4.789072 -4.870180 +v -4.759026 4.759026 -4.839934 +v -4.839935 4.759026 -4.759026 +v -4.759026 4.839935 -4.759026 +v 4.975245 4.609905 -4.609905 +v 4.943794 4.593512 -4.709916 +v 4.886396 4.584552 -4.805519 +v 4.805519 4.584552 -4.886396 +v 4.709916 4.593512 -4.943794 +v 4.609905 4.609905 -4.975245 +v 4.593512 4.709916 -4.943794 +v 4.584552 4.805519 -4.886396 +v 4.584552 4.886396 -4.805519 +v 4.593512 4.943794 -4.709916 +v 4.609905 4.975245 -4.609905 +v 4.709916 4.943794 -4.593512 +v 4.805519 4.886396 -4.584552 +v 4.886396 4.805519 -4.584552 +v 4.943794 4.709916 -4.593512 +v 4.919769 4.691847 -4.691847 +v 4.870180 4.670180 -4.789072 +v 4.789072 4.670180 -4.870180 +v 4.691847 4.691847 -4.919769 +v 4.670180 4.789072 -4.870180 +v 4.670180 4.870180 -4.789072 +v 4.691847 4.919769 -4.691847 +v 4.789072 4.870180 -4.670180 +v 4.870180 4.789072 -4.670180 +v 4.839934 4.759026 -4.759026 +v 4.759026 4.759026 -4.839935 +v 4.759026 4.839935 -4.759026 +v -4.609905 -4.975245 -4.609905 +v -4.709916 -4.943794 -4.593512 +v -4.805519 -4.886396 -4.584552 +v -4.886396 -4.805519 -4.584552 +v -4.943794 -4.709916 -4.593512 +v -4.975245 -4.609905 -4.609905 +v -4.943794 -4.593512 -4.709916 +v -4.886396 -4.584552 -4.805519 +v -4.805519 -4.584552 -4.886396 +v -4.709916 -4.593512 -4.943794 +v -4.609905 -4.609905 -4.975245 +v -4.593512 -4.709916 -4.943794 +v -4.584552 -4.805519 -4.886396 +v -4.584552 -4.886396 -4.805519 +v -4.593512 -4.943794 -4.709916 +v -4.691847 -4.919769 -4.691847 +v -4.789072 -4.870180 -4.670180 +v -4.870180 -4.789072 -4.670180 +v -4.919769 -4.691847 -4.691847 +v -4.870180 -4.670180 -4.789072 +v -4.789072 -4.670180 -4.870180 +v -4.691847 -4.691847 -4.919769 +v -4.670180 -4.789072 -4.870180 +v -4.670180 -4.870180 -4.789072 +v -4.759026 -4.839934 -4.759026 +v -4.839935 -4.759026 -4.759026 +v -4.759026 -4.759026 -4.839935 +v 4.975245 -4.609905 -4.609905 +v 4.943794 -4.709916 -4.593512 +v 4.886396 -4.805519 -4.584552 +v 4.805519 -4.886396 -4.584552 +v 4.709916 -4.943794 -4.593512 +v 4.609905 -4.975245 -4.609905 +v 4.593512 -4.943794 -4.709916 +v 4.584552 -4.886396 -4.805519 +v 4.584552 -4.805519 -4.886396 +v 4.593512 -4.709916 -4.943794 +v 4.609905 -4.609905 -4.975245 +v 4.709916 -4.593512 -4.943794 +v 4.805519 -4.584552 -4.886396 +v 4.886396 -4.584552 -4.805519 +v 4.943794 -4.593512 -4.709916 +v 4.919769 -4.691847 -4.691847 +v 4.870180 -4.789072 -4.670180 +v 4.789072 -4.870180 -4.670180 +v 4.691847 -4.919769 -4.691847 +v 4.670180 -4.870180 -4.789072 +v 4.670180 -4.789072 -4.870180 +v 4.691847 -4.691847 -4.919769 +v 4.789072 -4.670180 -4.870180 +v 4.870180 -4.670180 -4.789072 +v 4.839934 -4.759026 -4.759026 +v 4.759026 -4.839935 -4.759026 +v 4.759026 -4.759026 -4.839935 +vt 0.367394 0.006126 +vt 0.367630 0.003065 +vt 0.375000 0.992873 +vt 0.367873 0.000000 +vt 0.377663 0.992631 +vt 0.380326 0.992392 +vt 0.382989 0.992160 +vt 0.385654 0.991935 +vt 0.385444 0.994625 +vt 0.385227 0.997313 +vt 0.385004 0.000000 +vt 0.385004 1.000000 +vt 0.385237 0.002645 +vt 0.385465 0.005291 +vt 0.385685 0.007937 +vt 0.385898 0.010586 +vt 0.383224 0.010387 +vt 0.380552 0.010180 +vt 0.377878 0.009970 +vt 0.375202 0.009760 +vt 0.372525 0.009561 +vt 0.369846 0.009369 +vt 0.367165 0.009181 +vt 0.618287 0.990601 +vt 0.620537 0.990407 +vt 0.622774 0.990206 +vt 0.635004 -0.000000 +vt 0.625000 0.989996 +vt 0.635194 0.003065 +vt 0.635378 0.006126 +vt 0.635554 0.009181 +vt 0.632885 0.009369 +vt 0.630218 0.009561 +vt 0.627552 0.009760 +vt 0.624887 0.009970 +vt 0.622224 0.010180 +vt 0.619561 0.010387 +vt 0.616897 0.010586 +vt 0.617151 0.007937 +vt 0.617413 0.005291 +vt 0.617682 0.002645 +vt 0.617957 1.000000 +vt 0.617957 0.000000 +vt 0.617300 0.996926 +vt 0.616653 0.993856 +vt 0.616023 0.990792 +vt 0.383651 0.257912 +vt 0.380774 0.257659 +vt 0.377891 0.257396 +vt 0.367873 0.250000 +vt 0.375000 0.257127 +vt 0.367717 0.246950 +vt 0.367566 0.243903 +vt 0.367421 0.240862 +vt 0.370196 0.240689 +vt 0.372971 0.240512 +vt 0.375747 0.240328 +vt 0.378524 0.240134 +vt 0.381298 0.239938 +vt 0.384069 0.239746 +vt 0.386837 0.239559 +vt 0.386799 0.242221 +vt 0.386757 0.244881 +vt 0.386712 0.247539 +vt 0.386666 0.250195 +vt 0.386620 0.252848 +vt 0.386572 0.255502 +vt 0.386523 0.258157 +vt 0.632517 0.243903 +vt 0.632325 0.246950 +vt 0.625000 0.257127 +vt 0.632127 0.250000 +vt 0.622127 0.257396 +vt 0.619261 0.257659 +vt 0.616402 0.257912 +vt 0.613547 0.258157 +vt 0.613516 0.255502 +vt 0.613487 0.252848 +vt 0.613459 0.250195 +vt 0.613433 0.247539 +vt 0.613408 0.244881 +vt 0.613386 0.242221 +vt 0.613369 0.239559 +vt 0.616126 0.239746 +vt 0.618884 0.239938 +vt 0.621646 0.240134 +vt 0.624412 0.240328 +vt 0.627176 0.240512 +vt 0.629940 0.240689 +vt 0.632704 0.240862 +vt 0.383533 0.508356 +vt 0.380695 0.507957 +vt 0.377851 0.507546 +vt 0.125000 0.242873 +vt 0.375000 0.507127 +vt 0.127646 0.242588 +vt 0.130294 0.242310 +vt 0.132946 0.242039 +vt 0.132681 0.244696 +vt 0.132407 0.247349 +vt 0.375000 0.492873 +vt 0.132127 0.250000 +vt 0.377851 0.492447 +vt 0.380697 0.492029 +vt 0.383536 0.491624 +vt 0.386371 0.491232 +vt 0.386377 0.493739 +vt 0.386381 0.496240 +vt 0.386381 0.498739 +vt 0.386381 0.501236 +vt 0.386379 0.503734 +vt 0.386375 0.506235 +vt 0.386368 0.508742 +vt 0.869709 0.242310 +vt 0.872356 0.242588 +vt 0.625000 0.507127 +vt 0.875000 0.242873 +vt 0.622150 0.507546 +vt 0.619306 0.507957 +vt 0.616468 0.508355 +vt 0.613634 0.508741 +vt 0.613627 0.506234 +vt 0.613623 0.503733 +vt 0.613621 0.501235 +vt 0.613621 0.498738 +vt 0.613622 0.496240 +vt 0.613625 0.493739 +vt 0.613631 0.491231 +vt 0.616466 0.491624 +vt 0.619304 0.492029 +vt 0.622149 0.492447 +vt 0.867873 0.250000 +vt 0.625000 0.492873 +vt 0.867594 0.247349 +vt 0.867322 0.244696 +vt 0.867058 0.242039 +vt 0.383517 0.758376 +vt 0.380684 0.757971 +vt 0.377845 0.757553 +vt 0.132127 0.000000 +vt 0.375000 0.757127 +vt 0.132406 0.002651 +vt 0.132678 0.005304 +vt 0.132941 0.007961 +vt 0.130291 0.007691 +vt 0.127644 0.007412 +vt 0.375000 0.742873 +vt 0.125000 0.007127 +vt 0.377849 0.742453 +vt 0.380691 0.742042 +vt 0.383528 0.741643 +vt 0.386361 0.741257 +vt 0.386365 0.743764 +vt 0.386367 0.746265 +vt 0.386367 0.748763 +vt 0.386365 0.751261 +vt 0.386361 0.753759 +vt 0.386355 0.756260 +vt 0.386346 0.758768 +vt 0.867410 0.005304 +vt 0.867681 0.002651 +vt 0.625000 0.757043 +vt 0.867957 -0.000000 +vt 0.622170 0.757467 +vt 0.619345 0.757883 +vt 0.616526 0.758286 +vt 0.613711 0.758677 +vt 0.613696 0.756179 +vt 0.613684 0.753686 +vt 0.613675 0.751197 +vt 0.613668 0.748709 +vt 0.613662 0.746220 +vt 0.613659 0.743727 +vt 0.613659 0.741228 +vt 0.616487 0.741621 +vt 0.619318 0.742027 +vt 0.622156 0.742446 +vt 0.875000 0.007127 +vt 0.625000 0.742873 +vt 0.872386 0.007412 +vt 0.869769 0.007691 +vt 0.867148 0.007961 +vt 0.370003 0.006322 +vt 0.369896 0.003317 +vt 0.375000 0.995096 +vt 0.370096 0.000000 +vt 0.377737 0.994759 +vt 0.380395 0.994636 +vt 0.382859 0.994769 +vt 0.382988 0.997271 +vt 0.382808 0.000000 +vt 0.382808 1.000000 +vt 0.383199 0.002687 +vt 0.383295 0.005336 +vt 0.383126 0.007800 +vt 0.380670 0.007919 +vt 0.377994 0.007735 +vt 0.375191 0.007268 +vt 0.372492 0.006873 +vt 0.372379 0.003764 +vt 0.375000 0.997419 +vt 0.372419 0.000000 +vt 0.377835 0.997068 +vt 0.380539 0.997134 +vt 0.380512 0.000000 +vt 0.380512 1.000000 +vt 0.381044 0.002723 +vt 0.380896 0.005441 +vt 0.378171 0.005346 +vt 0.375147 0.004372 +vt 0.375000 0.000000 +vt 0.375000 1.000000 +vt 0.377962 0.000000 +vt 0.377962 1.000000 +vt 0.378545 0.002664 +vt 0.618903 0.993654 +vt 0.620947 0.993096 +vt 0.623081 0.992685 +vt 0.632808 -0.000000 +vt 0.625000 0.992192 +vt 0.632944 0.003317 +vt 0.632783 0.006322 +vt 0.630302 0.006873 +vt 0.627613 0.007268 +vt 0.624814 0.007735 +vt 0.622146 0.007919 +vt 0.619702 0.007800 +vt 0.619576 0.005336 +vt 0.619717 0.002687 +vt 0.620154 1.000000 +vt 0.620154 0.000000 +vt 0.619326 0.996668 +vt 0.621457 0.996211 +vt 0.623594 0.995574 +vt 0.630512 -0.000000 +vt 0.625000 0.994488 +vt 0.630475 0.003764 +vt 0.627716 0.004372 +vt 0.624684 0.005346 +vt 0.621966 0.005441 +vt 0.621868 0.002723 +vt 0.622449 1.000000 +vt 0.622449 0.000000 +vt 0.625000 0.000000 +vt 0.625000 1.000000 +vt 0.627962 -0.000000 +vt 0.625000 0.997038 +vt 0.624365 0.002664 +vt 0.383812 0.255376 +vt 0.381111 0.255510 +vt 0.378152 0.255367 +vt 0.370096 0.250000 +vt 0.375000 0.254904 +vt 0.370033 0.246707 +vt 0.370255 0.243721 +vt 0.372842 0.243188 +vt 0.375667 0.242818 +vt 0.378673 0.242395 +vt 0.381523 0.242231 +vt 0.384124 0.242359 +vt 0.384470 0.244855 +vt 0.384594 0.247554 +vt 0.384527 0.250312 +vt 0.384275 0.252949 +vt 0.381627 0.253146 +vt 0.378533 0.253238 +vt 0.372419 0.250000 +vt 0.375000 0.252581 +vt 0.372592 0.246276 +vt 0.375502 0.245701 +vt 0.378902 0.244828 +vt 0.381897 0.244759 +vt 0.382287 0.247571 +vt 0.382193 0.250487 +vt 0.379292 0.250827 +vt 0.375000 0.250000 +vt 0.379422 0.247631 +vt 0.629838 0.243721 +vt 0.630016 0.246707 +vt 0.625000 0.254904 +vt 0.629904 0.250000 +vt 0.621873 0.255367 +vt 0.618937 0.255510 +vt 0.616257 0.255376 +vt 0.615813 0.252949 +vt 0.615580 0.250312 +vt 0.615535 0.247554 +vt 0.615682 0.244855 +vt 0.616048 0.242359 +vt 0.618637 0.242231 +vt 0.621470 0.242395 +vt 0.624455 0.242818 +vt 0.627266 0.243188 +vt 0.627468 0.246276 +vt 0.625000 0.252581 +vt 0.627581 0.250000 +vt 0.621503 0.253238 +vt 0.618438 0.253146 +vt 0.617893 0.250487 +vt 0.617824 0.247571 +vt 0.618239 0.244759 +vt 0.621212 0.244828 +vt 0.624575 0.245701 +vt 0.625000 0.250000 +vt 0.620762 0.250827 +vt 0.620661 0.247631 +vt 0.383653 0.505962 +vt 0.380998 0.505929 +vt 0.378091 0.505594 +vt 0.125000 0.245096 +vt 0.375000 0.504904 +vt 0.127646 0.244837 +vt 0.130099 0.244895 +vt 0.130160 0.247350 +vt 0.375000 0.495096 +vt 0.129904 0.250000 +vt 0.378091 0.494399 +vt 0.380999 0.494057 +vt 0.383655 0.494018 +vt 0.384070 0.496278 +vt 0.384268 0.498726 +vt 0.384267 0.501253 +vt 0.384069 0.503701 +vt 0.381468 0.503724 +vt 0.378441 0.503571 +vt 0.125000 0.247419 +vt 0.375000 0.502581 +vt 0.127708 0.247290 +vt 0.375000 0.497419 +vt 0.127581 0.250000 +vt 0.378441 0.496421 +vt 0.381469 0.496261 +vt 0.381970 0.498694 +vt 0.381970 0.501290 +vt 0.379140 0.501370 +vt 0.375000 0.500000 +vt 0.125000 0.250000 +vt 0.379140 0.498620 +vt 0.869903 0.244895 +vt 0.872354 0.244837 +vt 0.625000 0.504904 +vt 0.875000 0.245096 +vt 0.621910 0.505594 +vt 0.619003 0.505928 +vt 0.616348 0.505962 +vt 0.615932 0.503700 +vt 0.615734 0.501253 +vt 0.615734 0.498725 +vt 0.615932 0.496278 +vt 0.616347 0.494017 +vt 0.619002 0.494057 +vt 0.621909 0.494399 +vt 0.870096 0.250000 +vt 0.625000 0.495096 +vt 0.869841 0.247350 +vt 0.872293 0.247290 +vt 0.625000 0.502581 +vt 0.875000 0.247419 +vt 0.621560 0.503570 +vt 0.618533 0.503723 +vt 0.618031 0.501290 +vt 0.618031 0.498693 +vt 0.618532 0.496261 +vt 0.621559 0.496421 +vt 0.872419 0.250000 +vt 0.625000 0.497419 +vt 0.625000 0.500000 +vt 0.875000 0.250000 +vt 0.620861 0.501370 +vt 0.620860 0.498620 +vt 0.383638 0.755982 +vt 0.380987 0.755942 +vt 0.378085 0.755601 +vt 0.129904 0.000000 +vt 0.375000 0.754904 +vt 0.130159 0.002650 +vt 0.130097 0.005105 +vt 0.127645 0.005164 +vt 0.375000 0.745096 +vt 0.125000 0.004904 +vt 0.378088 0.744406 +vt 0.380993 0.744071 +vt 0.383646 0.744037 +vt 0.384059 0.746298 +vt 0.384256 0.748746 +vt 0.384254 0.751274 +vt 0.384055 0.753721 +vt 0.381458 0.753738 +vt 0.378435 0.753578 +vt 0.127581 0.000000 +vt 0.375000 0.752581 +vt 0.127707 0.002710 +vt 0.375000 0.747419 +vt 0.125000 0.002581 +vt 0.378437 0.746429 +vt 0.381461 0.746276 +vt 0.381961 0.748709 +vt 0.381960 0.751306 +vt 0.379134 0.751379 +vt 0.375000 0.750000 +vt 0.125000 0.000000 +vt 0.379135 0.748629 +vt 0.869962 0.005105 +vt 0.869901 0.002650 +vt 0.625000 0.754846 +vt 0.870154 -0.000000 +vt 0.621929 0.755532 +vt 0.619040 0.755867 +vt 0.616401 0.755904 +vt 0.615982 0.753654 +vt 0.615778 0.751217 +vt 0.615772 0.748699 +vt 0.615964 0.746260 +vt 0.616373 0.744007 +vt 0.619020 0.744050 +vt 0.621919 0.744395 +vt 0.875000 0.004904 +vt 0.625000 0.745096 +vt 0.872385 0.005164 +vt 0.872324 0.002710 +vt 0.625000 0.752551 +vt 0.872449 -0.000000 +vt 0.621579 0.753526 +vt 0.618568 0.753676 +vt 0.618065 0.751256 +vt 0.618060 0.748671 +vt 0.618555 0.746248 +vt 0.621572 0.746413 +vt 0.875000 0.002581 +vt 0.625000 0.747419 +vt 0.625000 0.750000 +vt 0.875000 0.000000 +vt 0.620881 0.751342 +vt 0.620878 0.748605 +vn -0.001375 -0.999998 0.001375 +vn -0.222401 -0.974955 0.001228 +vn -0.001375 -0.999998 -0.001375 +vn -0.222399 -0.974955 -0.001228 +vn -0.433852 -0.900984 0.000939 +vn -0.433851 -0.900984 -0.000939 +vn -0.623498 -0.781825 0.000814 +vn -0.623507 -0.781817 -0.000819 +vn -0.781816 -0.623509 0.000819 +vn -0.781820 -0.623504 -0.000814 +vn -0.900986 -0.433846 0.000939 +vn -0.900984 -0.433852 -0.000939 +vn -0.974955 -0.222398 0.001228 +vn -0.974954 -0.222402 -0.001228 +vn -0.999998 -0.001375 0.001375 +vn -0.999998 -0.001375 -0.001375 +vn -0.001375 -0.001375 0.999998 +vn -0.001228 -0.222401 0.974954 +vn 0.001375 -0.001375 0.999998 +vn 0.001228 -0.222399 0.974955 +vn -0.000939 -0.433853 0.900983 +vn 0.000939 -0.433852 0.900984 +vn -0.000814 -0.623504 0.781820 +vn 0.000819 -0.623505 0.781819 +vn -0.000819 -0.781819 0.623505 +vn 0.000814 -0.781818 0.623506 +vn -0.000939 -0.900985 0.433849 +vn 0.000939 -0.900984 0.433852 +vn -0.001228 -0.974955 0.222398 +vn 0.001228 -0.974954 0.222402 +vn 0.001375 -0.999998 0.001375 +vn -0.974954 -0.001228 0.222401 +vn -0.999998 0.001375 0.001375 +vn -0.974955 0.001228 0.222399 +vn -0.900983 -0.000939 0.433853 +vn -0.900984 0.000939 0.433852 +vn -0.781820 -0.000814 0.623504 +vn -0.781819 0.000819 0.623505 +vn -0.623505 -0.000819 0.781819 +vn -0.623506 0.000814 0.781818 +vn -0.433849 -0.000939 0.900985 +vn -0.433852 0.000939 0.900984 +vn -0.222398 -0.001228 0.974955 +vn -0.222402 0.001228 0.974954 +vn -0.001375 0.001375 0.999998 +vn 0.999998 -0.001375 0.001375 +vn 0.974954 -0.222402 0.001228 +vn 0.999998 -0.001375 -0.001375 +vn 0.974955 -0.222398 -0.001228 +vn 0.900984 -0.433852 0.000939 +vn 0.900985 -0.433849 -0.000939 +vn 0.781818 -0.623506 0.000814 +vn 0.781819 -0.623505 -0.000819 +vn 0.623506 -0.781818 0.000819 +vn 0.623504 -0.781820 -0.000814 +vn 0.433852 -0.900984 0.000939 +vn 0.433853 -0.900983 -0.000939 +vn 0.222399 -0.974955 0.001228 +vn 0.222401 -0.974955 -0.001228 +vn 0.001375 -0.999998 -0.001375 +vn 0.222402 -0.001228 0.974954 +vn 0.001375 0.001375 0.999998 +vn 0.222398 0.001228 0.974955 +vn 0.433852 -0.000939 0.900984 +vn 0.433849 0.000939 0.900985 +vn 0.623506 -0.000814 0.781818 +vn 0.623505 0.000819 0.781819 +vn 0.781819 -0.000819 0.623505 +vn 0.781820 0.000814 0.623504 +vn 0.900984 -0.000939 0.433852 +vn 0.900983 0.000939 0.433853 +vn 0.974955 -0.001228 0.222399 +vn 0.974954 0.001228 0.222401 +vn 0.999998 0.001375 0.001375 +vn -0.974954 0.222402 0.001228 +vn -0.999998 0.001375 -0.001375 +vn -0.974955 0.222398 -0.001228 +vn -0.900984 0.433852 0.000939 +vn -0.900985 0.433849 -0.000939 +vn -0.781818 0.623506 0.000814 +vn -0.781819 0.623505 -0.000819 +vn -0.623506 0.781818 0.000819 +vn -0.623504 0.781820 -0.000814 +vn -0.433852 0.900984 0.000939 +vn -0.433853 0.900983 -0.000939 +vn -0.222399 0.974955 0.001228 +vn -0.222401 0.974955 -0.001228 +vn -0.001375 0.999998 0.001375 +vn -0.001375 0.999998 -0.001375 +vn -0.001228 0.974954 0.222402 +vn 0.001375 0.999998 0.001375 +vn 0.001228 0.974955 0.222398 +vn -0.000939 0.900984 0.433852 +vn 0.000939 0.900985 0.433849 +vn -0.000814 0.781818 0.623506 +vn 0.000819 0.781819 0.623505 +vn -0.000819 0.623505 0.781819 +vn 0.000814 0.623504 0.781820 +vn -0.000939 0.433852 0.900984 +vn 0.000939 0.433853 0.900983 +vn -0.001228 0.222399 0.974955 +vn 0.001228 0.222401 0.974954 +vn 0.222401 0.974955 0.001228 +vn 0.001375 0.999998 -0.001375 +vn 0.222399 0.974955 -0.001228 +vn 0.433853 0.900983 0.000939 +vn 0.433852 0.900984 -0.000939 +vn 0.623504 0.781820 0.000814 +vn 0.623506 0.781818 -0.000819 +vn 0.781819 0.623505 0.000819 +vn 0.781818 0.623506 -0.000814 +vn 0.900985 0.433849 0.000939 +vn 0.900984 0.433852 -0.000939 +vn 0.974955 0.222398 0.001228 +vn 0.974954 0.222402 -0.001228 +vn 0.999998 0.001375 -0.001375 +vn -0.974954 0.001228 -0.222401 +vn -0.974955 -0.001228 -0.222399 +vn -0.900983 0.000939 -0.433853 +vn -0.900984 -0.000939 -0.433852 +vn -0.781820 0.000814 -0.623504 +vn -0.781819 -0.000819 -0.623505 +vn -0.623505 0.000819 -0.781819 +vn -0.623506 -0.000814 -0.781818 +vn -0.433849 0.000939 -0.900985 +vn -0.433852 -0.000939 -0.900984 +vn -0.222398 0.001228 -0.974955 +vn -0.222402 -0.001228 -0.974954 +vn -0.001375 0.001375 -0.999998 +vn -0.001375 -0.001375 -0.999998 +vn -0.001228 0.222401 -0.974954 +vn 0.001375 0.001375 -0.999998 +vn 0.001228 0.222399 -0.974955 +vn -0.000939 0.433853 -0.900983 +vn 0.000939 0.433852 -0.900984 +vn -0.000814 0.623504 -0.781820 +vn 0.000819 0.623505 -0.781819 +vn -0.000819 0.781819 -0.623505 +vn 0.000814 0.781818 -0.623506 +vn -0.000939 0.900985 -0.433849 +vn 0.000939 0.900984 -0.433852 +vn -0.001228 0.974955 -0.222398 +vn 0.001228 0.974954 -0.222402 +vn 0.222402 0.001228 -0.974954 +vn 0.001375 -0.001375 -0.999998 +vn 0.222398 -0.001228 -0.974955 +vn 0.433852 0.000939 -0.900984 +vn 0.433849 -0.000939 -0.900985 +vn 0.623506 0.000814 -0.781818 +vn 0.623505 -0.000819 -0.781819 +vn 0.781819 0.000819 -0.623505 +vn 0.781820 -0.000814 -0.623504 +vn 0.900984 0.000939 -0.433852 +vn 0.900983 -0.000939 -0.433853 +vn 0.974955 0.001228 -0.222399 +vn 0.974954 -0.001228 -0.222401 +vn -0.001228 -0.974954 -0.222402 +vn 0.001228 -0.974955 -0.222398 +vn -0.000939 -0.900984 -0.433852 +vn 0.000939 -0.900985 -0.433849 +vn -0.000814 -0.781818 -0.623506 +vn 0.000819 -0.781819 -0.623505 +vn -0.000819 -0.623505 -0.781819 +vn 0.000814 -0.623504 -0.781820 +vn -0.000939 -0.433852 -0.900984 +vn 0.000939 -0.433853 -0.900983 +vn -0.001228 -0.222399 -0.974955 +vn 0.001228 -0.222401 -0.974954 +vn -0.954449 -0.210981 0.210983 +vn -0.888493 -0.419161 0.186773 +vn -0.770553 -0.613352 0.173344 +vn -0.613022 -0.770768 0.173554 +vn -0.419161 -0.888493 0.186772 +vn -0.210983 -0.954449 0.210981 +vn -0.186773 -0.888493 0.419161 +vn -0.173341 -0.770553 0.613352 +vn -0.173554 -0.613022 0.770768 +vn -0.186772 -0.419161 0.888493 +vn -0.210981 -0.210983 0.954449 +vn -0.419161 -0.186773 0.888493 +vn -0.613352 -0.173341 0.770553 +vn -0.770768 -0.173554 0.613022 +vn -0.888493 -0.186772 0.419161 +vn -0.838793 -0.384986 0.384983 +vn -0.734482 -0.583783 0.346027 +vn -0.583762 -0.734469 0.346088 +vn -0.384983 -0.838794 0.384985 +vn -0.346025 -0.734482 0.583784 +vn -0.346088 -0.583762 0.734469 +vn -0.384985 -0.384983 0.838794 +vn -0.583784 -0.346024 0.734482 +vn -0.734468 -0.346092 0.583761 +vn -0.673582 -0.522595 0.522668 +vn -0.522667 -0.673582 0.522596 +vn -0.522597 -0.522665 0.673583 +vn 0.210983 -0.954449 0.210981 +vn 0.419161 -0.888493 0.186772 +vn 0.613353 -0.770553 0.173341 +vn 0.770768 -0.613021 0.173555 +vn 0.888493 -0.419161 0.186773 +vn 0.954449 -0.210981 0.210983 +vn 0.888493 -0.186772 0.419161 +vn 0.770553 -0.173341 0.613352 +vn 0.613021 -0.173555 0.770768 +vn 0.419161 -0.186773 0.888493 +vn 0.210981 -0.210983 0.954449 +vn 0.186772 -0.419161 0.888493 +vn 0.173341 -0.613353 0.770553 +vn 0.173555 -0.770768 0.613021 +vn 0.186773 -0.888493 0.419161 +vn 0.384983 -0.838793 0.384986 +vn 0.583780 -0.734485 0.346024 +vn 0.734467 -0.583763 0.346091 +vn 0.838794 -0.384985 0.384983 +vn 0.734484 -0.346022 0.583782 +vn 0.583763 -0.346091 0.734467 +vn 0.384985 -0.384983 0.838794 +vn 0.346024 -0.583782 0.734483 +vn 0.346093 -0.734467 0.583762 +vn 0.522593 -0.673585 0.522666 +vn 0.673584 -0.522666 0.522595 +vn 0.522666 -0.522595 0.673584 +vn -0.210983 0.954449 0.210981 +vn -0.419161 0.888493 0.186772 +vn -0.613353 0.770553 0.173341 +vn -0.770768 0.613021 0.173555 +vn -0.888493 0.419161 0.186773 +vn -0.954449 0.210981 0.210983 +vn -0.888493 0.186772 0.419161 +vn -0.770553 0.173341 0.613352 +vn -0.613021 0.173555 0.770768 +vn -0.419161 0.186773 0.888493 +vn -0.210981 0.210983 0.954449 +vn -0.186772 0.419161 0.888493 +vn -0.173341 0.613353 0.770553 +vn -0.173555 0.770768 0.613021 +vn -0.186773 0.888493 0.419161 +vn -0.384983 0.838793 0.384986 +vn -0.583780 0.734485 0.346024 +vn -0.734467 0.583763 0.346091 +vn -0.838794 0.384985 0.384983 +vn -0.734484 0.346022 0.583782 +vn -0.583763 0.346091 0.734467 +vn -0.384985 0.384983 0.838794 +vn -0.346024 0.583782 0.734483 +vn -0.346093 0.734467 0.583762 +vn -0.522593 0.673585 0.522666 +vn -0.673584 0.522666 0.522595 +vn -0.522666 0.522595 0.673584 +vn 0.954449 0.210981 0.210983 +vn 0.888493 0.419161 0.186773 +vn 0.770553 0.613352 0.173341 +vn 0.613022 0.770768 0.173554 +vn 0.419161 0.888493 0.186772 +vn 0.210983 0.954449 0.210981 +vn 0.186773 0.888493 0.419161 +vn 0.173341 0.770553 0.613352 +vn 0.173554 0.613022 0.770768 +vn 0.186772 0.419161 0.888493 +vn 0.210981 0.210983 0.954449 +vn 0.419161 0.186773 0.888493 +vn 0.613352 0.173341 0.770553 +vn 0.770768 0.173554 0.613022 +vn 0.888493 0.186772 0.419161 +vn 0.838793 0.384986 0.384983 +vn 0.734482 0.583783 0.346027 +vn 0.583762 0.734469 0.346088 +vn 0.384983 0.838794 0.384985 +vn 0.346025 0.734482 0.583784 +vn 0.346088 0.583762 0.734469 +vn 0.384985 0.384983 0.838794 +vn 0.583784 0.346024 0.734482 +vn 0.734468 0.346092 0.583761 +vn 0.673582 0.522595 0.522668 +vn 0.522667 0.673582 0.522596 +vn 0.522597 0.522665 0.673583 +vn -0.210981 0.210983 -0.954449 +vn -0.419161 0.186773 -0.888493 +vn -0.613352 0.173341 -0.770553 +vn -0.770768 0.173554 -0.613022 +vn -0.888493 0.186772 -0.419161 +vn -0.954449 0.210981 -0.210983 +vn -0.888493 0.419161 -0.186773 +vn -0.770553 0.613352 -0.173341 +vn -0.613022 0.770768 -0.173554 +vn -0.419161 0.888493 -0.186772 +vn -0.210983 0.954449 -0.210981 +vn -0.186773 0.888493 -0.419161 +vn -0.173341 0.770553 -0.613352 +vn -0.173554 0.613022 -0.770768 +vn -0.186772 0.419161 -0.888493 +vn -0.384986 0.384983 -0.838793 +vn -0.583783 0.346027 -0.734482 +vn -0.734469 0.346088 -0.583762 +vn -0.838794 0.384985 -0.384983 +vn -0.734482 0.583784 -0.346025 +vn -0.583762 0.734469 -0.346088 +vn -0.384983 0.838794 -0.384985 +vn -0.346024 0.734482 -0.583784 +vn -0.346092 0.583761 -0.734468 +vn -0.522595 0.522668 -0.673582 +vn -0.673582 0.522596 -0.522667 +vn -0.522665 0.673583 -0.522597 +vn 0.954449 0.210981 -0.210983 +vn 0.888493 0.186772 -0.419161 +vn 0.770553 0.173341 -0.613352 +vn 0.613021 0.173555 -0.770768 +vn 0.419161 0.186773 -0.888493 +vn 0.210981 0.210983 -0.954449 +vn 0.186772 0.419161 -0.888493 +vn 0.173341 0.613353 -0.770553 +vn 0.173555 0.770768 -0.613021 +vn 0.186773 0.888493 -0.419161 +vn 0.210983 0.954449 -0.210981 +vn 0.419161 0.888493 -0.186772 +vn 0.613353 0.770553 -0.173341 +vn 0.770768 0.613021 -0.173555 +vn 0.888493 0.419161 -0.186773 +vn 0.838793 0.384986 -0.384983 +vn 0.734485 0.346024 -0.583780 +vn 0.583763 0.346091 -0.734467 +vn 0.384985 0.384983 -0.838794 +vn 0.346022 0.583782 -0.734484 +vn 0.346091 0.734467 -0.583763 +vn 0.384983 0.838794 -0.384985 +vn 0.583782 0.734483 -0.346024 +vn 0.734467 0.583762 -0.346093 +vn 0.673585 0.522666 -0.522593 +vn 0.522666 0.522595 -0.673584 +vn 0.522595 0.673584 -0.522666 +vn -0.210983 -0.954449 -0.210981 +vn -0.419161 -0.888493 -0.186772 +vn -0.613353 -0.770553 -0.173341 +vn -0.770768 -0.613021 -0.173555 +vn -0.888493 -0.419161 -0.186773 +vn -0.954449 -0.210981 -0.210983 +vn -0.888493 -0.186772 -0.419161 +vn -0.770553 -0.173341 -0.613352 +vn -0.613021 -0.173555 -0.770768 +vn -0.419161 -0.186773 -0.888493 +vn -0.210981 -0.210983 -0.954449 +vn -0.186772 -0.419161 -0.888493 +vn -0.173341 -0.613353 -0.770553 +vn -0.173555 -0.770768 -0.613021 +vn -0.186773 -0.888493 -0.419161 +vn -0.384983 -0.838793 -0.384986 +vn -0.583780 -0.734485 -0.346024 +vn -0.734467 -0.583763 -0.346091 +vn -0.838794 -0.384985 -0.384983 +vn -0.734484 -0.346022 -0.583782 +vn -0.583763 -0.346091 -0.734467 +vn -0.384985 -0.384983 -0.838794 +vn -0.346024 -0.583782 -0.734483 +vn -0.346093 -0.734467 -0.583762 +vn -0.522593 -0.673585 -0.522666 +vn -0.673584 -0.522666 -0.522595 +vn -0.522666 -0.522595 -0.673584 +vn 0.954449 -0.210981 -0.210983 +vn 0.888493 -0.419161 -0.186773 +vn 0.770553 -0.613352 -0.173341 +vn 0.613022 -0.770768 -0.173554 +vn 0.419161 -0.888493 -0.186772 +vn 0.210983 -0.954449 -0.210981 +vn 0.186773 -0.888493 -0.419161 +vn 0.173341 -0.770553 -0.613352 +vn 0.173554 -0.613022 -0.770768 +vn 0.186772 -0.419161 -0.888493 +vn 0.210981 -0.210983 -0.954449 +vn 0.419161 -0.186773 -0.888493 +vn 0.613352 -0.173341 -0.770553 +vn 0.770768 -0.173554 -0.613022 +vn 0.888493 -0.186772 -0.419161 +vn 0.838793 -0.384986 -0.384983 +vn 0.734482 -0.583783 -0.346027 +vn 0.583762 -0.734469 -0.346088 +vn 0.384983 -0.838794 -0.384985 +vn 0.346025 -0.734482 -0.583784 +vn 0.346088 -0.583762 -0.734469 +vn 0.384985 -0.384983 -0.838794 +vn 0.583784 -0.346024 -0.734482 +vn 0.734468 -0.346092 -0.583761 +vn 0.673582 -0.522595 -0.522668 +vn 0.522667 -0.673582 -0.522596 +vn 0.522597 -0.522665 -0.673583 +f 7/8/1 6/7/2 147/159/3 +f 147/159/3 6/7/2 127/137/4 +f 6/7/2 5/6/5 127/137/4 +f 127/137/4 5/6/5 128/138/6 +f 5/6/5 4/5/7 128/138/6 +f 128/138/6 4/5/7 129/139/8 +f 4/5/7 3/3/9 129/139/8 +f 129/139/8 3/3/9 130/141/10 +f 3/4/9 2/2/11 130/140/10 +f 130/140/10 2/2/11 131/142/12 +f 2/2/11 1/1/13 131/142/12 +f 131/142/12 1/1/13 132/143/14 +f 1/1/13 21/23/15 132/143/14 +f 132/143/14 21/23/15 133/144/16 +f 14/16/17 13/15/18 35/38/19 +f 35/38/19 13/15/18 36/39/20 +f 13/15/18 12/14/21 36/39/20 +f 36/39/20 12/14/21 37/40/22 +f 12/14/21 11/13/23 37/40/22 +f 37/40/22 11/13/23 38/41/24 +f 11/13/23 10/11/25 38/41/24 +f 38/41/24 10/11/25 39/43/26 +f 10/12/25 9/10/27 39/42/26 +f 39/42/26 9/10/27 40/44/28 +f 9/10/27 8/9/29 40/44/28 +f 40/44/28 8/9/29 41/45/30 +f 8/9/29 7/8/1 41/45/30 +f 41/45/30 7/8/1 42/46/31 +f 21/23/15 20/22/32 49/54/33 +f 49/54/33 20/22/32 50/55/34 +f 20/22/32 19/21/35 50/55/34 +f 50/55/34 19/21/35 51/56/36 +f 19/21/35 18/20/37 51/56/36 +f 51/56/36 18/20/37 52/57/38 +f 18/20/37 17/19/39 52/57/38 +f 52/57/38 17/19/39 53/58/40 +f 17/19/39 16/18/41 53/58/40 +f 53/58/40 16/18/41 54/59/42 +f 16/18/41 15/17/43 54/59/42 +f 54/59/42 15/17/43 55/60/44 +f 15/17/43 14/16/17 55/60/44 +f 55/60/44 14/16/17 56/61/45 +f 28/31/46 27/30/47 168/182/48 +f 168/182/48 27/30/47 148/160/49 +f 27/30/47 26/29/50 148/160/49 +f 148/160/49 26/29/50 149/161/51 +f 26/29/50 25/27/52 149/161/51 +f 149/161/51 25/27/52 150/163/53 +f 25/28/52 24/26/54 150/162/53 +f 150/162/53 24/26/54 151/164/55 +f 24/26/54 23/25/56 151/164/55 +f 151/164/55 23/25/56 152/165/57 +f 23/25/56 22/24/58 152/165/57 +f 152/165/57 22/24/58 153/166/59 +f 22/24/58 42/46/31 153/166/59 +f 153/166/59 42/46/31 154/167/60 +f 35/38/19 34/37/61 77/83/62 +f 77/83/62 34/37/61 78/84/63 +f 34/37/61 33/36/64 78/84/63 +f 78/84/63 33/36/64 79/85/65 +f 33/36/64 32/35/66 79/85/65 +f 79/85/65 32/35/66 80/86/67 +f 32/35/66 31/34/68 80/86/67 +f 80/86/67 31/34/68 81/87/69 +f 31/34/68 30/33/70 81/87/69 +f 81/87/69 30/33/70 82/88/71 +f 30/33/70 29/32/72 82/88/71 +f 82/88/71 29/32/72 83/89/73 +f 29/32/72 28/31/46 83/89/73 +f 83/89/73 28/31/46 84/90/74 +f 49/54/33 48/53/75 91/98/76 +f 91/98/76 48/53/75 92/99/77 +f 48/53/75 47/52/78 92/99/77 +f 92/99/77 47/52/78 93/100/79 +f 47/52/78 46/50/80 93/100/79 +f 93/100/79 46/50/80 94/102/81 +f 46/51/80 45/49/82 94/101/81 +f 94/101/81 45/49/82 95/103/83 +f 45/49/82 44/48/84 95/103/83 +f 95/103/83 44/48/84 96/104/85 +f 44/48/84 43/47/86 96/104/85 +f 96/104/85 43/47/86 97/105/87 +f 43/47/86 63/68/88 97/105/87 +f 97/105/87 63/68/88 98/106/89 +f 63/68/88 62/67/90 70/76/91 +f 70/76/91 62/67/90 71/77/92 +f 62/67/90 61/66/93 71/77/92 +f 71/77/92 61/66/93 72/78/94 +f 61/66/93 60/65/95 72/78/94 +f 72/78/94 60/65/95 73/79/96 +f 60/65/95 59/64/97 73/79/96 +f 73/79/96 59/64/97 74/80/98 +f 59/64/97 58/63/99 74/80/98 +f 74/80/98 58/63/99 75/81/100 +f 58/63/99 57/62/101 75/81/100 +f 75/81/100 57/62/101 76/82/102 +f 57/62/101 56/61/45 76/82/102 +f 76/82/102 56/61/45 77/83/62 +f 70/76/91 69/75/103 119/128/104 +f 119/128/104 69/75/103 120/129/105 +f 69/75/103 68/74/106 120/129/105 +f 120/129/105 68/74/106 121/130/107 +f 68/74/106 67/73/108 121/130/107 +f 121/130/107 67/73/108 122/131/109 +f 67/73/108 66/71/110 122/131/109 +f 122/131/109 66/71/110 123/133/111 +f 66/72/110 65/70/112 123/132/111 +f 123/132/111 65/70/112 124/134/113 +f 65/70/112 64/69/114 124/134/113 +f 124/134/113 64/69/114 125/135/115 +f 64/69/114 84/90/74 125/135/115 +f 125/135/115 84/90/74 126/136/116 +f 91/98/76 90/97/117 133/144/16 +f 133/144/16 90/97/117 134/145/118 +f 90/97/117 89/96/119 134/145/118 +f 134/145/118 89/96/119 135/146/120 +f 89/96/119 88/94/121 135/146/120 +f 135/146/120 88/94/121 136/148/122 +f 88/95/121 87/93/123 136/147/122 +f 136/147/122 87/93/123 137/149/124 +f 87/93/123 86/92/125 137/149/124 +f 137/149/124 86/92/125 138/150/126 +f 86/92/125 85/91/127 138/150/126 +f 138/150/126 85/91/127 139/151/128 +f 85/91/127 105/113/129 139/151/128 +f 139/151/128 105/113/129 140/152/130 +f 105/113/129 104/112/131 112/121/132 +f 112/121/132 104/112/131 113/122/133 +f 104/112/131 103/111/134 113/122/133 +f 113/122/133 103/111/134 114/123/135 +f 103/111/134 102/110/136 114/123/135 +f 114/123/135 102/110/136 115/124/137 +f 102/110/136 101/109/138 115/124/137 +f 115/124/137 101/109/138 116/125/139 +f 101/109/138 100/108/140 116/125/139 +f 116/125/139 100/108/140 117/126/141 +f 100/108/140 99/107/142 117/126/141 +f 117/126/141 99/107/142 118/127/143 +f 99/107/142 98/106/89 118/127/143 +f 118/127/143 98/106/89 119/128/104 +f 112/121/132 111/120/144 161/174/145 +f 161/174/145 111/120/144 162/175/146 +f 111/120/144 110/119/147 162/175/146 +f 162/175/146 110/119/147 163/176/148 +f 110/119/147 109/118/149 163/176/148 +f 163/176/148 109/118/149 164/177/150 +f 109/118/149 108/116/151 164/177/150 +f 164/177/150 108/116/151 165/179/152 +f 108/117/151 107/115/153 165/178/152 +f 165/178/152 107/115/153 166/180/154 +f 107/115/153 106/114/155 166/180/154 +f 166/180/154 106/114/155 167/181/156 +f 106/114/155 126/136/116 167/181/156 +f 167/181/156 126/136/116 168/182/48 +f 147/159/3 146/158/157 154/167/60 +f 154/167/60 146/158/157 155/168/158 +f 146/158/157 145/157/159 155/168/158 +f 155/168/158 145/157/159 156/169/160 +f 145/157/159 144/156/161 156/169/160 +f 156/169/160 144/156/161 157/170/162 +f 144/156/161 143/155/163 157/170/162 +f 157/170/162 143/155/163 158/171/164 +f 143/155/163 142/154/165 158/171/164 +f 158/171/164 142/154/165 159/172/166 +f 142/154/165 141/153/167 159/172/166 +f 159/172/166 141/153/167 160/173/168 +f 141/153/167 140/152/130 160/173/168 +f 160/173/168 140/152/130 161/174/145 +f 14/16/17 35/38/19 56/61/45 +f 56/61/45 35/38/19 77/83/62 +f 63/68/88 70/76/91 98/106/89 +f 98/106/89 70/76/91 119/128/104 +f 105/113/129 112/121/132 140/152/130 +f 140/152/130 112/121/132 161/174/145 +f 147/159/3 154/167/60 7/8/1 +f 7/8/1 154/167/60 42/46/31 +f 28/31/46 168/182/48 84/90/74 +f 84/90/74 168/182/48 126/136/116 +f 133/144/16 21/23/15 91/98/76 +f 91/98/76 21/23/15 49/54/33 +f 20/22/32 21/23/15 169/183/169 +f 169/183/169 21/23/15 1/1/13 +f 169/183/169 1/1/13 170/184/170 +f 170/184/170 1/1/13 2/2/11 +f 170/184/170 2/2/11 171/186/171 +f 171/186/171 2/2/11 3/4/9 +f 171/185/171 3/3/9 172/187/172 +f 172/187/172 3/3/9 4/5/7 +f 4/5/7 5/6/5 172/187/172 +f 172/187/172 5/6/5 173/188/173 +f 5/6/5 6/7/2 173/188/173 +f 173/188/173 6/7/2 174/189/174 +f 6/7/2 7/8/1 174/189/174 +f 174/189/174 7/8/1 8/9/29 +f 174/189/174 8/9/29 175/190/175 +f 175/190/175 8/9/29 9/10/27 +f 175/190/175 9/10/27 176/192/176 +f 176/192/176 9/10/27 10/12/25 +f 176/191/176 10/11/25 177/193/177 +f 177/193/177 10/11/25 11/13/23 +f 11/13/23 12/14/21 177/193/177 +f 177/193/177 12/14/21 178/194/178 +f 12/14/21 13/15/18 178/194/178 +f 178/194/178 13/15/18 179/195/179 +f 13/15/18 14/16/17 179/195/179 +f 179/195/179 14/16/17 15/17/43 +f 179/195/179 15/17/43 180/196/180 +f 180/196/180 15/17/43 16/18/41 +f 180/196/180 16/18/41 181/197/181 +f 181/197/181 16/18/41 17/19/39 +f 181/197/181 17/19/39 182/198/182 +f 182/198/182 17/19/39 18/20/37 +f 18/20/37 19/21/35 182/198/182 +f 182/198/182 19/21/35 183/199/183 +f 19/21/35 20/22/32 183/199/183 +f 183/199/183 20/22/32 169/183/169 +f 183/199/183 169/183/169 184/200/184 +f 184/200/184 169/183/169 170/184/170 +f 184/200/184 170/184/170 185/202/185 +f 185/202/185 170/184/170 171/186/171 +f 185/201/185 171/185/171 186/203/186 +f 186/203/186 171/185/171 172/187/172 +f 172/187/172 173/188/173 186/203/186 +f 186/203/186 173/188/173 187/204/187 +f 173/188/173 174/189/174 187/204/187 +f 187/204/187 174/189/174 175/190/175 +f 187/204/187 175/190/175 188/206/188 +f 188/206/188 175/190/175 176/192/176 +f 188/205/188 176/191/176 189/207/189 +f 189/207/189 176/191/176 177/193/177 +f 177/193/177 178/194/178 189/207/189 +f 189/207/189 178/194/178 190/208/190 +f 178/194/178 179/195/179 190/208/190 +f 190/208/190 179/195/179 180/196/180 +f 190/208/190 180/196/180 191/209/191 +f 191/209/191 180/196/180 181/197/181 +f 191/209/191 181/197/181 192/210/192 +f 192/210/192 181/197/181 182/198/182 +f 182/198/182 183/199/183 192/210/192 +f 192/210/192 183/199/183 184/200/184 +f 192/210/192 184/200/184 193/211/193 +f 193/211/193 184/200/184 185/202/185 +f 193/212/193 185/201/185 194/214/194 +f 194/214/194 185/201/185 186/203/186 +f 186/203/186 187/204/187 194/214/194 +f 194/214/194 187/204/187 188/206/188 +f 194/213/194 188/205/188 195/215/195 +f 195/215/195 188/205/188 189/207/189 +f 189/207/189 190/208/190 195/215/195 +f 195/215/195 190/208/190 191/209/191 +f 195/215/195 191/209/191 193/211/193 +f 193/211/193 191/209/191 192/210/192 +f 193/211/193 194/213/194 195/215/195 +f 41/45/30 42/46/31 196/216/196 +f 196/216/196 42/46/31 22/24/58 +f 196/216/196 22/24/58 197/217/197 +f 197/217/197 22/24/58 23/25/56 +f 197/217/197 23/25/56 198/218/198 +f 198/218/198 23/25/56 24/26/54 +f 198/218/198 24/26/54 199/220/199 +f 199/220/199 24/26/54 25/28/52 +f 25/27/52 26/29/50 199/219/199 +f 199/219/199 26/29/50 200/221/200 +f 26/29/50 27/30/47 200/221/200 +f 200/221/200 27/30/47 201/222/201 +f 27/30/47 28/31/46 201/222/201 +f 201/222/201 28/31/46 29/32/72 +f 201/222/201 29/32/72 202/223/202 +f 202/223/202 29/32/72 30/33/70 +f 202/223/202 30/33/70 203/224/203 +f 203/224/203 30/33/70 31/34/68 +f 203/224/203 31/34/68 204/225/204 +f 204/225/204 31/34/68 32/35/66 +f 32/35/66 33/36/64 204/225/204 +f 204/225/204 33/36/64 205/226/205 +f 33/36/64 34/37/61 205/226/205 +f 205/226/205 34/37/61 206/227/206 +f 34/37/61 35/38/19 206/227/206 +f 206/227/206 35/38/19 36/39/20 +f 206/227/206 36/39/20 207/228/207 +f 207/228/207 36/39/20 37/40/22 +f 207/228/207 37/40/22 208/229/208 +f 208/229/208 37/40/22 38/41/24 +f 208/229/208 38/41/24 209/231/209 +f 209/231/209 38/41/24 39/43/26 +f 39/42/26 40/44/28 209/230/209 +f 209/230/209 40/44/28 210/232/210 +f 40/44/28 41/45/30 210/232/210 +f 210/232/210 41/45/30 196/216/196 +f 210/232/210 196/216/196 211/233/211 +f 211/233/211 196/216/196 197/217/197 +f 211/233/211 197/217/197 212/234/212 +f 212/234/212 197/217/197 198/218/198 +f 212/234/212 198/218/198 213/236/213 +f 213/236/213 198/218/198 199/220/199 +f 199/219/199 200/221/200 213/235/213 +f 213/235/213 200/221/200 214/237/214 +f 200/221/200 201/222/201 214/237/214 +f 214/237/214 201/222/201 202/223/202 +f 214/237/214 202/223/202 215/238/215 +f 215/238/215 202/223/202 203/224/203 +f 215/238/215 203/224/203 216/239/216 +f 216/239/216 203/224/203 204/225/204 +f 204/225/204 205/226/205 216/239/216 +f 216/239/216 205/226/205 217/240/217 +f 205/226/205 206/227/206 217/240/217 +f 217/240/217 206/227/206 207/228/207 +f 217/240/217 207/228/207 218/241/218 +f 218/241/218 207/228/207 208/229/208 +f 218/241/218 208/229/208 219/243/219 +f 219/243/219 208/229/208 209/231/209 +f 209/230/209 210/232/210 219/242/219 +f 219/242/219 210/232/210 211/233/211 +f 219/242/219 211/233/211 220/245/220 +f 220/245/220 211/233/211 212/234/212 +f 220/245/220 212/234/212 221/247/221 +f 221/247/221 212/234/212 213/236/213 +f 213/235/213 214/237/214 221/246/221 +f 221/246/221 214/237/214 215/238/215 +f 221/246/221 215/238/215 222/248/222 +f 222/248/222 215/238/215 216/239/216 +f 216/239/216 217/240/217 222/248/222 +f 222/248/222 217/240/217 218/241/218 +f 222/248/222 218/241/218 220/244/220 +f 220/244/220 218/241/218 219/243/219 +f 220/244/220 221/246/221 222/248/222 +f 62/67/90 63/68/88 223/249/223 +f 223/249/223 63/68/88 43/47/86 +f 223/249/223 43/47/86 224/250/224 +f 224/250/224 43/47/86 44/48/84 +f 224/250/224 44/48/84 225/251/225 +f 225/251/225 44/48/84 45/49/82 +f 225/251/225 45/49/82 226/253/226 +f 226/253/226 45/49/82 46/51/80 +f 46/50/80 47/52/78 226/252/226 +f 226/252/226 47/52/78 227/254/227 +f 47/52/78 48/53/75 227/254/227 +f 227/254/227 48/53/75 228/255/228 +f 48/53/75 49/54/33 228/255/228 +f 228/255/228 49/54/33 50/55/34 +f 228/255/228 50/55/34 229/256/229 +f 229/256/229 50/55/34 51/56/36 +f 229/256/229 51/56/36 230/257/230 +f 230/257/230 51/56/36 52/57/38 +f 230/257/230 52/57/38 231/258/231 +f 231/258/231 52/57/38 53/58/40 +f 53/58/40 54/59/42 231/258/231 +f 231/258/231 54/59/42 232/259/232 +f 54/59/42 55/60/44 232/259/232 +f 232/259/232 55/60/44 233/260/233 +f 55/60/44 56/61/45 233/260/233 +f 233/260/233 56/61/45 57/62/101 +f 233/260/233 57/62/101 234/261/234 +f 234/261/234 57/62/101 58/63/99 +f 234/261/234 58/63/99 235/262/235 +f 235/262/235 58/63/99 59/64/97 +f 235/262/235 59/64/97 236/263/236 +f 236/263/236 59/64/97 60/65/95 +f 60/65/95 61/66/93 236/263/236 +f 236/263/236 61/66/93 237/264/237 +f 61/66/93 62/67/90 237/264/237 +f 237/264/237 62/67/90 223/249/223 +f 237/264/237 223/249/223 238/265/238 +f 238/265/238 223/249/223 224/250/224 +f 238/265/238 224/250/224 239/266/239 +f 239/266/239 224/250/224 225/251/225 +f 239/266/239 225/251/225 240/268/240 +f 240/268/240 225/251/225 226/253/226 +f 226/252/226 227/254/227 240/267/240 +f 240/267/240 227/254/227 241/269/241 +f 227/254/227 228/255/228 241/269/241 +f 241/269/241 228/255/228 229/256/229 +f 241/269/241 229/256/229 242/270/242 +f 242/270/242 229/256/229 230/257/230 +f 242/270/242 230/257/230 243/271/243 +f 243/271/243 230/257/230 231/258/231 +f 231/258/231 232/259/232 243/271/243 +f 243/271/243 232/259/232 244/272/244 +f 232/259/232 233/260/233 244/272/244 +f 244/272/244 233/260/233 234/261/234 +f 244/272/244 234/261/234 245/273/245 +f 245/273/245 234/261/234 235/262/235 +f 245/273/245 235/262/235 246/274/246 +f 246/274/246 235/262/235 236/263/236 +f 236/263/236 237/264/237 246/274/246 +f 246/274/246 237/264/237 238/265/238 +f 246/274/246 238/265/238 247/275/247 +f 247/275/247 238/265/238 239/266/239 +f 247/275/247 239/266/239 248/276/248 +f 248/276/248 239/266/239 240/268/240 +f 240/267/240 241/269/241 248/276/248 +f 248/276/248 241/269/241 242/270/242 +f 248/276/248 242/270/242 249/277/249 +f 249/277/249 242/270/242 243/271/243 +f 243/271/243 244/272/244 249/277/249 +f 249/277/249 244/272/244 245/273/245 +f 249/277/249 245/273/245 247/275/247 +f 247/275/247 245/273/245 246/274/246 +f 247/275/247 248/276/248 249/277/249 +f 83/89/73 84/90/74 250/278/250 +f 250/278/250 84/90/74 64/69/114 +f 250/278/250 64/69/114 251/279/251 +f 251/279/251 64/69/114 65/70/112 +f 251/279/251 65/70/112 252/281/252 +f 252/281/252 65/70/112 66/72/110 +f 252/280/252 66/71/110 253/282/253 +f 253/282/253 66/71/110 67/73/108 +f 67/73/108 68/74/106 253/282/253 +f 253/282/253 68/74/106 254/283/254 +f 68/74/106 69/75/103 254/283/254 +f 254/283/254 69/75/103 255/284/255 +f 69/75/103 70/76/91 255/284/255 +f 255/284/255 70/76/91 71/77/92 +f 255/284/255 71/77/92 256/285/256 +f 256/285/256 71/77/92 72/78/94 +f 256/285/256 72/78/94 257/286/257 +f 257/286/257 72/78/94 73/79/96 +f 257/286/257 73/79/96 258/287/258 +f 258/287/258 73/79/96 74/80/98 +f 74/80/98 75/81/100 258/287/258 +f 258/287/258 75/81/100 259/288/259 +f 75/81/100 76/82/102 259/288/259 +f 259/288/259 76/82/102 260/289/260 +f 76/82/102 77/83/62 260/289/260 +f 260/289/260 77/83/62 78/84/63 +f 260/289/260 78/84/63 261/290/261 +f 261/290/261 78/84/63 79/85/65 +f 261/290/261 79/85/65 262/291/262 +f 262/291/262 79/85/65 80/86/67 +f 262/291/262 80/86/67 263/292/263 +f 263/292/263 80/86/67 81/87/69 +f 81/87/69 82/88/71 263/292/263 +f 263/292/263 82/88/71 264/293/264 +f 82/88/71 83/89/73 264/293/264 +f 264/293/264 83/89/73 250/278/250 +f 264/293/264 250/278/250 265/294/265 +f 265/294/265 250/278/250 251/279/251 +f 265/294/265 251/279/251 266/296/266 +f 266/296/266 251/279/251 252/281/252 +f 266/295/266 252/280/252 267/297/267 +f 267/297/267 252/280/252 253/282/253 +f 253/282/253 254/283/254 267/297/267 +f 267/297/267 254/283/254 268/298/268 +f 254/283/254 255/284/255 268/298/268 +f 268/298/268 255/284/255 256/285/256 +f 268/298/268 256/285/256 269/299/269 +f 269/299/269 256/285/256 257/286/257 +f 269/299/269 257/286/257 270/300/270 +f 270/300/270 257/286/257 258/287/258 +f 258/287/258 259/288/259 270/300/270 +f 270/300/270 259/288/259 271/301/271 +f 259/288/259 260/289/260 271/301/271 +f 271/301/271 260/289/260 261/290/261 +f 271/301/271 261/290/261 272/302/272 +f 272/302/272 261/290/261 262/291/262 +f 272/302/272 262/291/262 273/303/273 +f 273/303/273 262/291/262 263/292/263 +f 263/292/263 264/293/264 273/303/273 +f 273/303/273 264/293/264 265/294/265 +f 273/303/273 265/294/265 274/304/274 +f 274/304/274 265/294/265 266/296/266 +f 274/304/274 266/295/266 275/305/275 +f 275/305/275 266/295/266 267/297/267 +f 267/297/267 268/298/268 275/305/275 +f 275/305/275 268/298/268 269/299/269 +f 275/305/275 269/299/269 276/306/276 +f 276/306/276 269/299/269 270/300/270 +f 270/300/270 271/301/271 276/306/276 +f 276/306/276 271/301/271 272/302/272 +f 276/306/276 272/302/272 274/304/274 +f 274/304/274 272/302/272 273/303/273 +f 274/304/274 275/305/275 276/306/276 +f 104/112/131 105/113/129 277/307/277 +f 277/307/277 105/113/129 85/91/127 +f 277/307/277 85/91/127 278/308/278 +f 278/308/278 85/91/127 86/92/125 +f 278/308/278 86/92/125 279/309/279 +f 279/309/279 86/92/125 87/93/123 +f 279/309/279 87/93/123 280/311/280 +f 280/311/280 87/93/123 88/95/121 +f 88/94/121 89/96/119 280/310/280 +f 280/310/280 89/96/119 281/312/281 +f 89/96/119 90/97/117 281/312/281 +f 281/312/281 90/97/117 282/313/282 +f 90/97/117 91/98/76 282/313/282 +f 282/313/282 91/98/76 92/99/77 +f 282/313/282 92/99/77 283/314/283 +f 283/314/283 92/99/77 93/100/79 +f 283/314/283 93/100/79 284/316/284 +f 284/316/284 93/100/79 94/102/81 +f 284/315/284 94/101/81 285/317/285 +f 285/317/285 94/101/81 95/103/83 +f 95/103/83 96/104/85 285/317/285 +f 285/317/285 96/104/85 286/318/286 +f 96/104/85 97/105/87 286/318/286 +f 286/318/286 97/105/87 287/319/287 +f 97/105/87 98/106/89 287/319/287 +f 287/319/287 98/106/89 99/107/142 +f 287/319/287 99/107/142 288/320/288 +f 288/320/288 99/107/142 100/108/140 +f 288/320/288 100/108/140 289/321/289 +f 289/321/289 100/108/140 101/109/138 +f 289/321/289 101/109/138 290/322/290 +f 290/322/290 101/109/138 102/110/136 +f 102/110/136 103/111/134 290/322/290 +f 290/322/290 103/111/134 291/323/291 +f 103/111/134 104/112/131 291/323/291 +f 291/323/291 104/112/131 277/307/277 +f 291/323/291 277/307/277 292/324/292 +f 292/324/292 277/307/277 278/308/278 +f 292/324/292 278/308/278 293/325/293 +f 293/325/293 278/308/278 279/309/279 +f 293/325/293 279/309/279 294/327/294 +f 294/327/294 279/309/279 280/311/280 +f 280/310/280 281/312/281 294/326/294 +f 294/326/294 281/312/281 295/328/295 +f 281/312/281 282/313/282 295/328/295 +f 295/328/295 282/313/282 283/314/283 +f 295/328/295 283/314/283 296/330/296 +f 296/330/296 283/314/283 284/316/284 +f 296/329/296 284/315/284 297/331/297 +f 297/331/297 284/315/284 285/317/285 +f 285/317/285 286/318/286 297/331/297 +f 297/331/297 286/318/286 298/332/298 +f 286/318/286 287/319/287 298/332/298 +f 298/332/298 287/319/287 288/320/288 +f 298/332/298 288/320/288 299/333/299 +f 299/333/299 288/320/288 289/321/289 +f 299/333/299 289/321/289 300/334/300 +f 300/334/300 289/321/289 290/322/290 +f 290/322/290 291/323/291 300/334/300 +f 300/334/300 291/323/291 292/324/292 +f 300/334/300 292/324/292 301/335/301 +f 301/335/301 292/324/292 293/325/293 +f 301/335/301 293/325/293 302/336/302 +f 302/336/302 293/325/293 294/327/294 +f 294/326/294 295/328/295 302/337/302 +f 302/337/302 295/328/295 296/330/296 +f 302/336/302 296/329/296 303/338/303 +f 303/338/303 296/329/296 297/331/297 +f 297/331/297 298/332/298 303/338/303 +f 303/338/303 298/332/298 299/333/299 +f 303/338/303 299/333/299 301/335/301 +f 301/335/301 299/333/299 300/334/300 +f 301/335/301 302/336/302 303/338/303 +f 125/135/115 126/136/116 304/339/304 +f 304/339/304 126/136/116 106/114/155 +f 304/339/304 106/114/155 305/340/305 +f 305/340/305 106/114/155 107/115/153 +f 305/340/305 107/115/153 306/342/306 +f 306/342/306 107/115/153 108/117/151 +f 306/341/306 108/116/151 307/343/307 +f 307/343/307 108/116/151 109/118/149 +f 109/118/149 110/119/147 307/343/307 +f 307/343/307 110/119/147 308/344/308 +f 110/119/147 111/120/144 308/344/308 +f 308/344/308 111/120/144 309/345/309 +f 111/120/144 112/121/132 309/345/309 +f 309/345/309 112/121/132 113/122/133 +f 309/345/309 113/122/133 310/346/310 +f 310/346/310 113/122/133 114/123/135 +f 310/346/310 114/123/135 311/347/311 +f 311/347/311 114/123/135 115/124/137 +f 311/347/311 115/124/137 312/348/312 +f 312/348/312 115/124/137 116/125/139 +f 116/125/139 117/126/141 312/348/312 +f 312/348/312 117/126/141 313/349/313 +f 117/126/141 118/127/143 313/349/313 +f 313/349/313 118/127/143 314/350/314 +f 118/127/143 119/128/104 314/350/314 +f 314/350/314 119/128/104 120/129/105 +f 314/350/314 120/129/105 315/351/315 +f 315/351/315 120/129/105 121/130/107 +f 315/351/315 121/130/107 316/352/316 +f 316/352/316 121/130/107 122/131/109 +f 316/352/316 122/131/109 317/354/317 +f 317/354/317 122/131/109 123/133/111 +f 123/132/111 124/134/113 317/353/317 +f 317/353/317 124/134/113 318/355/318 +f 124/134/113 125/135/115 318/355/318 +f 318/355/318 125/135/115 304/339/304 +f 318/355/318 304/339/304 319/356/319 +f 319/356/319 304/339/304 305/340/305 +f 319/356/319 305/340/305 320/358/320 +f 320/358/320 305/340/305 306/342/306 +f 320/357/320 306/341/306 321/359/321 +f 321/359/321 306/341/306 307/343/307 +f 307/343/307 308/344/308 321/359/321 +f 321/359/321 308/344/308 322/360/322 +f 308/344/308 309/345/309 322/360/322 +f 322/360/322 309/345/309 310/346/310 +f 322/360/322 310/346/310 323/361/323 +f 323/361/323 310/346/310 311/347/311 +f 323/361/323 311/347/311 324/362/324 +f 324/362/324 311/347/311 312/348/312 +f 312/348/312 313/349/313 324/362/324 +f 324/362/324 313/349/313 325/363/325 +f 313/349/313 314/350/314 325/363/325 +f 325/363/325 314/350/314 315/351/315 +f 325/363/325 315/351/315 326/364/326 +f 326/364/326 315/351/315 316/352/316 +f 326/364/326 316/352/316 327/366/327 +f 327/366/327 316/352/316 317/354/317 +f 317/353/317 318/355/318 327/365/327 +f 327/365/327 318/355/318 319/356/319 +f 327/365/327 319/356/319 328/368/328 +f 328/368/328 319/356/319 320/358/320 +f 328/367/328 320/357/320 329/369/329 +f 329/369/329 320/357/320 321/359/321 +f 321/359/321 322/360/322 329/369/329 +f 329/369/329 322/360/322 323/361/323 +f 329/369/329 323/361/323 330/370/330 +f 330/370/330 323/361/323 324/362/324 +f 324/362/324 325/363/325 330/370/330 +f 330/370/330 325/363/325 326/364/326 +f 330/370/330 326/364/326 328/367/328 +f 328/367/328 326/364/326 327/366/327 +f 328/367/328 329/369/329 330/370/330 +f 146/158/157 147/159/3 331/371/331 +f 331/371/331 147/159/3 127/137/4 +f 331/371/331 127/137/4 332/372/332 +f 332/372/332 127/137/4 128/138/6 +f 332/372/332 128/138/6 333/373/333 +f 333/373/333 128/138/6 129/139/8 +f 333/373/333 129/139/8 334/375/334 +f 334/375/334 129/139/8 130/141/10 +f 130/140/10 131/142/12 334/374/334 +f 334/374/334 131/142/12 335/376/335 +f 131/142/12 132/143/14 335/376/335 +f 335/376/335 132/143/14 336/377/336 +f 132/143/14 133/144/16 336/377/336 +f 336/377/336 133/144/16 134/145/118 +f 336/377/336 134/145/118 337/378/337 +f 337/378/337 134/145/118 135/146/120 +f 337/378/337 135/146/120 338/380/338 +f 338/380/338 135/146/120 136/148/122 +f 338/379/338 136/147/122 339/381/339 +f 339/381/339 136/147/122 137/149/124 +f 137/149/124 138/150/126 339/381/339 +f 339/381/339 138/150/126 340/382/340 +f 138/150/126 139/151/128 340/382/340 +f 340/382/340 139/151/128 341/383/341 +f 139/151/128 140/152/130 341/383/341 +f 341/383/341 140/152/130 141/153/167 +f 341/383/341 141/153/167 342/384/342 +f 342/384/342 141/153/167 142/154/165 +f 342/384/342 142/154/165 343/385/343 +f 343/385/343 142/154/165 143/155/163 +f 343/385/343 143/155/163 344/386/344 +f 344/386/344 143/155/163 144/156/161 +f 144/156/161 145/157/159 344/386/344 +f 344/386/344 145/157/159 345/387/345 +f 145/157/159 146/158/157 345/387/345 +f 345/387/345 146/158/157 331/371/331 +f 345/387/345 331/371/331 346/388/346 +f 346/388/346 331/371/331 332/372/332 +f 346/388/346 332/372/332 347/389/347 +f 347/389/347 332/372/332 333/373/333 +f 347/389/347 333/373/333 348/391/348 +f 348/391/348 333/373/333 334/375/334 +f 334/374/334 335/376/335 348/390/348 +f 348/390/348 335/376/335 349/392/349 +f 335/376/335 336/377/336 349/392/349 +f 349/392/349 336/377/336 337/378/337 +f 349/392/349 337/378/337 350/394/350 +f 350/394/350 337/378/337 338/380/338 +f 350/393/350 338/379/338 351/395/351 +f 351/395/351 338/379/338 339/381/339 +f 339/381/339 340/382/340 351/395/351 +f 351/395/351 340/382/340 352/396/352 +f 340/382/340 341/383/341 352/396/352 +f 352/396/352 341/383/341 342/384/342 +f 352/396/352 342/384/342 353/397/353 +f 353/397/353 342/384/342 343/385/343 +f 353/397/353 343/385/343 354/398/354 +f 354/398/354 343/385/343 344/386/344 +f 344/386/344 345/387/345 354/398/354 +f 354/398/354 345/387/345 346/388/346 +f 354/398/354 346/388/346 355/399/355 +f 355/399/355 346/388/346 347/389/347 +f 355/399/355 347/389/347 356/400/356 +f 356/400/356 347/389/347 348/391/348 +f 348/390/348 349/392/349 356/401/356 +f 356/401/356 349/392/349 350/394/350 +f 356/400/356 350/393/350 357/402/357 +f 357/402/357 350/393/350 351/395/351 +f 351/395/351 352/396/352 357/402/357 +f 357/402/357 352/396/352 353/397/353 +f 357/402/357 353/397/353 355/399/355 +f 355/399/355 353/397/353 354/398/354 +f 355/399/355 356/400/356 357/402/357 +f 167/181/156 168/182/48 358/403/358 +f 358/403/358 168/182/48 148/160/49 +f 358/403/358 148/160/49 359/404/359 +f 359/404/359 148/160/49 149/161/51 +f 359/404/359 149/161/51 360/406/360 +f 360/406/360 149/161/51 150/163/53 +f 360/405/360 150/162/53 361/407/361 +f 361/407/361 150/162/53 151/164/55 +f 151/164/55 152/165/57 361/407/361 +f 361/407/361 152/165/57 362/408/362 +f 152/165/57 153/166/59 362/408/362 +f 362/408/362 153/166/59 363/409/363 +f 153/166/59 154/167/60 363/409/363 +f 363/409/363 154/167/60 155/168/158 +f 363/409/363 155/168/158 364/410/364 +f 364/410/364 155/168/158 156/169/160 +f 364/410/364 156/169/160 365/411/365 +f 365/411/365 156/169/160 157/170/162 +f 365/411/365 157/170/162 366/412/366 +f 366/412/366 157/170/162 158/171/164 +f 158/171/164 159/172/166 366/412/366 +f 366/412/366 159/172/166 367/413/367 +f 159/172/166 160/173/168 367/413/367 +f 367/413/367 160/173/168 368/414/368 +f 160/173/168 161/174/145 368/414/368 +f 368/414/368 161/174/145 162/175/146 +f 368/414/368 162/175/146 369/415/369 +f 369/415/369 162/175/146 163/176/148 +f 369/415/369 163/176/148 370/416/370 +f 370/416/370 163/176/148 164/177/150 +f 370/416/370 164/177/150 371/418/371 +f 371/418/371 164/177/150 165/179/152 +f 165/178/152 166/180/154 371/417/371 +f 371/417/371 166/180/154 372/419/372 +f 166/180/154 167/181/156 372/419/372 +f 372/419/372 167/181/156 358/403/358 +f 372/419/372 358/403/358 373/420/373 +f 373/420/373 358/403/358 359/404/359 +f 373/420/373 359/404/359 374/422/374 +f 374/422/374 359/404/359 360/406/360 +f 374/421/374 360/405/360 375/423/375 +f 375/423/375 360/405/360 361/407/361 +f 361/407/361 362/408/362 375/423/375 +f 375/423/375 362/408/362 376/424/376 +f 362/408/362 363/409/363 376/424/376 +f 376/424/376 363/409/363 364/410/364 +f 376/424/376 364/410/364 377/425/377 +f 377/425/377 364/410/364 365/411/365 +f 377/425/377 365/411/365 378/426/378 +f 378/426/378 365/411/365 366/412/366 +f 366/412/366 367/413/367 378/426/378 +f 378/426/378 367/413/367 379/427/379 +f 367/413/367 368/414/368 379/427/379 +f 379/427/379 368/414/368 369/415/369 +f 379/427/379 369/415/369 380/428/380 +f 380/428/380 369/415/369 370/416/370 +f 380/428/380 370/416/370 381/430/381 +f 381/430/381 370/416/370 371/418/371 +f 371/417/371 372/419/372 381/429/381 +f 381/429/381 372/419/372 373/420/373 +f 381/429/381 373/420/373 382/432/382 +f 382/432/382 373/420/373 374/422/374 +f 382/431/382 374/421/374 383/433/383 +f 383/433/383 374/421/374 375/423/375 +f 375/423/375 376/424/376 383/433/383 +f 383/433/383 376/424/376 377/425/377 +f 383/433/383 377/425/377 384/434/384 +f 384/434/384 377/425/377 378/426/378 +f 378/426/378 379/427/379 384/434/384 +f 384/434/384 379/427/379 380/428/380 +f 384/434/384 380/428/380 382/431/382 +f 382/431/382 380/428/380 381/430/381 +f 382/431/382 383/433/383 384/434/384 diff --git a/Sparky-core/SourceSansPro-Light.ttf b/Sandbox/res/SourceSansPro-Light.ttf similarity index 100% rename from Sparky-core/SourceSansPro-Light.ttf rename to Sandbox/res/SourceSansPro-Light.ttf diff --git a/Sandbox/res/Sphere.obj b/Sandbox/res/Sphere.obj new file mode 100644 index 00000000..14a1452b --- /dev/null +++ b/Sandbox/res/Sphere.obj @@ -0,0 +1,1965 @@ +# This file uses centimeters as units for non-parametric coordinates. + +v 0.297556 -1.975377 -0.096682 +v 0.253116 -1.975377 -0.183900 +v 0.183900 -1.975377 -0.253116 +v 0.096682 -1.975377 -0.297556 +v 0.000000 -1.975377 -0.312869 +v -0.096682 -1.975377 -0.297556 +v -0.183900 -1.975377 -0.253116 +v -0.253116 -1.975377 -0.183900 +v -0.297556 -1.975377 -0.096682 +v -0.312869 -1.975377 0.000000 +v -0.297556 -1.975377 0.096682 +v -0.253116 -1.975377 0.183900 +v -0.183900 -1.975377 0.253116 +v -0.096682 -1.975377 0.297556 +v -0.000000 -1.975377 0.312869 +v 0.096682 -1.975377 0.297556 +v 0.183900 -1.975377 0.253116 +v 0.253116 -1.975377 0.183900 +v 0.297556 -1.975377 0.096682 +v 0.312869 -1.975377 0.000000 +v 0.587786 -1.902113 -0.190983 +v 0.500000 -1.902113 -0.363271 +v 0.363271 -1.902113 -0.500000 +v 0.190983 -1.902113 -0.587786 +v 0.000000 -1.902113 -0.618034 +v -0.190983 -1.902113 -0.587786 +v -0.363271 -1.902113 -0.500000 +v -0.500000 -1.902113 -0.363271 +v -0.587785 -1.902113 -0.190983 +v -0.618034 -1.902113 0.000000 +v -0.587785 -1.902113 0.190983 +v -0.500000 -1.902113 0.363271 +v -0.363271 -1.902113 0.500000 +v -0.190983 -1.902113 0.587785 +v -0.000000 -1.902113 0.618034 +v 0.190983 -1.902113 0.587785 +v 0.363271 -1.902113 0.500000 +v 0.500000 -1.902113 0.363271 +v 0.587785 -1.902113 0.190983 +v 0.618034 -1.902113 0.000000 +v 0.863542 -1.782013 -0.280582 +v 0.734573 -1.782013 -0.533698 +v 0.533698 -1.782013 -0.734573 +v 0.280582 -1.782013 -0.863542 +v 0.000000 -1.782013 -0.907981 +v -0.280582 -1.782013 -0.863542 +v -0.533698 -1.782013 -0.734572 +v -0.734572 -1.782013 -0.533698 +v -0.863542 -1.782013 -0.280582 +v -0.907981 -1.782013 0.000000 +v -0.863542 -1.782013 0.280582 +v -0.734572 -1.782013 0.533698 +v -0.533698 -1.782013 0.734572 +v -0.280582 -1.782013 0.863541 +v -0.000000 -1.782013 0.907981 +v 0.280582 -1.782013 0.863541 +v 0.533698 -1.782013 0.734572 +v 0.734572 -1.782013 0.533698 +v 0.863541 -1.782013 0.280582 +v 0.907981 -1.782013 0.000000 +v 1.118035 -1.618034 -0.363271 +v 0.951057 -1.618034 -0.690983 +v 0.690983 -1.618034 -0.951057 +v 0.363271 -1.618034 -1.118035 +v 0.000000 -1.618034 -1.175571 +v -0.363271 -1.618034 -1.118034 +v -0.690983 -1.618034 -0.951057 +v -0.951057 -1.618034 -0.690983 +v -1.118034 -1.618034 -0.363271 +v -1.175571 -1.618034 0.000000 +v -1.118034 -1.618034 0.363271 +v -0.951057 -1.618034 0.690983 +v -0.690983 -1.618034 0.951057 +v -0.363271 -1.618034 1.118034 +v -0.000000 -1.618034 1.175571 +v 0.363271 -1.618034 1.118034 +v 0.690983 -1.618034 0.951057 +v 0.951057 -1.618034 0.690983 +v 1.118034 -1.618034 0.363271 +v 1.175570 -1.618034 0.000000 +v 1.344998 -1.414214 -0.437016 +v 1.144124 -1.414214 -0.831254 +v 0.831254 -1.414214 -1.144123 +v 0.437016 -1.414214 -1.344998 +v 0.000000 -1.414214 -1.414214 +v -0.437016 -1.414214 -1.344998 +v -0.831254 -1.414214 -1.144123 +v -1.144123 -1.414214 -0.831254 +v -1.344997 -1.414214 -0.437016 +v -1.414214 -1.414214 0.000000 +v -1.344997 -1.414214 0.437016 +v -1.144123 -1.414214 0.831254 +v -0.831254 -1.414214 1.144123 +v -0.437016 -1.414214 1.344997 +v -0.000000 -1.414214 1.414214 +v 0.437016 -1.414214 1.344997 +v 0.831254 -1.414214 1.144123 +v 1.144123 -1.414214 0.831254 +v 1.344997 -1.414214 0.437016 +v 1.414214 -1.414214 0.000000 +v 1.538843 -1.175570 -0.500000 +v 1.309018 -1.175570 -0.951057 +v 0.951057 -1.175570 -1.309018 +v 0.500000 -1.175570 -1.538843 +v 0.000000 -1.175570 -1.618035 +v -0.500000 -1.175570 -1.538842 +v -0.951057 -1.175570 -1.309018 +v -1.309017 -1.175570 -0.951057 +v -1.538842 -1.175570 -0.500000 +v -1.618034 -1.175570 0.000000 +v -1.538842 -1.175570 0.500000 +v -1.309017 -1.175570 0.951057 +v -0.951057 -1.175570 1.309017 +v -0.500000 -1.175570 1.538842 +v -0.000000 -1.175570 1.618034 +v 0.500000 -1.175570 1.538842 +v 0.951057 -1.175570 1.309017 +v 1.309017 -1.175570 0.951057 +v 1.538842 -1.175570 0.500000 +v 1.618034 -1.175570 0.000000 +v 1.694796 -0.907981 -0.550673 +v 1.441680 -0.907981 -1.047442 +v 1.047442 -0.907981 -1.441680 +v 0.550673 -0.907981 -1.694796 +v 0.000000 -0.907981 -1.782014 +v -0.550673 -0.907981 -1.694796 +v -1.047441 -0.907981 -1.441679 +v -1.441679 -0.907981 -1.047441 +v -1.694796 -0.907981 -0.550672 +v -1.782014 -0.907981 0.000000 +v -1.694796 -0.907981 0.550672 +v -1.441679 -0.907981 1.047441 +v -1.047441 -0.907981 1.441679 +v -0.550672 -0.907981 1.694795 +v -0.000000 -0.907981 1.782013 +v 0.550672 -0.907981 1.694795 +v 1.047441 -0.907981 1.441679 +v 1.441679 -0.907981 1.047441 +v 1.694795 -0.907981 0.550672 +v 1.782013 -0.907981 0.000000 +v 1.809018 -0.618034 -0.587786 +v 1.538843 -0.618034 -1.118035 +v 1.118035 -0.618034 -1.538843 +v 0.587786 -0.618034 -1.809018 +v 0.000000 -0.618034 -1.902114 +v -0.587786 -0.618034 -1.809018 +v -1.118034 -0.618034 -1.538842 +v -1.538842 -0.618034 -1.118034 +v -1.809018 -0.618034 -0.587785 +v -1.902114 -0.618034 0.000000 +v -1.809018 -0.618034 0.587785 +v -1.538842 -0.618034 1.118034 +v -1.118034 -0.618034 1.538842 +v -0.587785 -0.618034 1.809017 +v -0.000000 -0.618034 1.902113 +v 0.587785 -0.618034 1.809017 +v 1.118034 -0.618034 1.538842 +v 1.538842 -0.618034 1.118034 +v 1.809017 -0.618034 0.587785 +v 1.902113 -0.618034 0.000000 +v 1.878696 -0.312869 -0.610425 +v 1.598114 -0.312869 -1.161098 +v 1.161098 -0.312869 -1.598114 +v 0.610425 -0.312869 -1.878696 +v 0.000000 -0.312869 -1.975378 +v -0.610425 -0.312869 -1.878696 +v -1.161098 -0.312869 -1.598114 +v -1.598114 -0.312869 -1.161098 +v -1.878695 -0.312869 -0.610425 +v -1.975377 -0.312869 0.000000 +v -1.878695 -0.312869 0.610425 +v -1.598114 -0.312869 1.161098 +v -1.161098 -0.312869 1.598114 +v -0.610425 -0.312869 1.878695 +v -0.000000 -0.312869 1.975377 +v 0.610425 -0.312869 1.878695 +v 1.161097 -0.312869 1.598113 +v 1.598113 -0.312869 1.161097 +v 1.878695 -0.312869 0.610425 +v 1.975377 -0.312869 0.000000 +v 1.902114 0.000000 -0.618034 +v 1.618035 0.000000 -1.175571 +v 1.175571 0.000000 -1.618035 +v 0.618034 0.000000 -1.902114 +v 0.000000 0.000000 -2.000001 +v -0.618034 0.000000 -1.902114 +v -1.175571 0.000000 -1.618035 +v -1.618034 0.000000 -1.175571 +v -1.902114 0.000000 -0.618034 +v -2.000000 0.000000 0.000000 +v -1.902114 0.000000 0.618034 +v -1.618034 0.000000 1.175571 +v -1.175571 0.000000 1.618034 +v -0.618034 0.000000 1.902113 +v -0.000000 0.000000 2.000000 +v 0.618034 0.000000 1.902113 +v 1.175570 0.000000 1.618034 +v 1.618034 0.000000 1.175571 +v 1.902113 0.000000 0.618034 +v 2.000000 0.000000 0.000000 +v 1.878696 0.312869 -0.610425 +v 1.598114 0.312869 -1.161098 +v 1.161098 0.312869 -1.598114 +v 0.610425 0.312869 -1.878696 +v 0.000000 0.312869 -1.975378 +v -0.610425 0.312869 -1.878696 +v -1.161098 0.312869 -1.598114 +v -1.598114 0.312869 -1.161098 +v -1.878695 0.312869 -0.610425 +v -1.975377 0.312869 0.000000 +v -1.878695 0.312869 0.610425 +v -1.598114 0.312869 1.161098 +v -1.161098 0.312869 1.598114 +v -0.610425 0.312869 1.878695 +v -0.000000 0.312869 1.975377 +v 0.610425 0.312869 1.878695 +v 1.161097 0.312869 1.598113 +v 1.598113 0.312869 1.161097 +v 1.878695 0.312869 0.610425 +v 1.975377 0.312869 0.000000 +v 1.809018 0.618034 -0.587786 +v 1.538843 0.618034 -1.118035 +v 1.118035 0.618034 -1.538843 +v 0.587786 0.618034 -1.809018 +v 0.000000 0.618034 -1.902114 +v -0.587786 0.618034 -1.809018 +v -1.118034 0.618034 -1.538842 +v -1.538842 0.618034 -1.118034 +v -1.809018 0.618034 -0.587785 +v -1.902114 0.618034 0.000000 +v -1.809018 0.618034 0.587785 +v -1.538842 0.618034 1.118034 +v -1.118034 0.618034 1.538842 +v -0.587785 0.618034 1.809017 +v -0.000000 0.618034 1.902113 +v 0.587785 0.618034 1.809017 +v 1.118034 0.618034 1.538842 +v 1.538842 0.618034 1.118034 +v 1.809017 0.618034 0.587785 +v 1.902113 0.618034 0.000000 +v 1.694796 0.907981 -0.550673 +v 1.441680 0.907981 -1.047442 +v 1.047442 0.907981 -1.441680 +v 0.550673 0.907981 -1.694796 +v 0.000000 0.907981 -1.782014 +v -0.550673 0.907981 -1.694796 +v -1.047441 0.907981 -1.441679 +v -1.441679 0.907981 -1.047441 +v -1.694796 0.907981 -0.550672 +v -1.782014 0.907981 0.000000 +v -1.694796 0.907981 0.550672 +v -1.441679 0.907981 1.047441 +v -1.047441 0.907981 1.441679 +v -0.550672 0.907981 1.694795 +v -0.000000 0.907981 1.782013 +v 0.550672 0.907981 1.694795 +v 1.047441 0.907981 1.441679 +v 1.441679 0.907981 1.047441 +v 1.694795 0.907981 0.550672 +v 1.782013 0.907981 0.000000 +v 1.538843 1.175570 -0.500000 +v 1.309018 1.175570 -0.951057 +v 0.951057 1.175570 -1.309018 +v 0.500000 1.175570 -1.538843 +v 0.000000 1.175570 -1.618035 +v -0.500000 1.175570 -1.538842 +v -0.951057 1.175570 -1.309018 +v -1.309017 1.175570 -0.951057 +v -1.538842 1.175570 -0.500000 +v -1.618034 1.175570 0.000000 +v -1.538842 1.175570 0.500000 +v -1.309017 1.175570 0.951057 +v -0.951057 1.175570 1.309017 +v -0.500000 1.175570 1.538842 +v -0.000000 1.175570 1.618034 +v 0.500000 1.175570 1.538842 +v 0.951057 1.175570 1.309017 +v 1.309017 1.175570 0.951057 +v 1.538842 1.175570 0.500000 +v 1.618034 1.175570 0.000000 +v 1.344998 1.414214 -0.437016 +v 1.144124 1.414214 -0.831254 +v 0.831254 1.414214 -1.144123 +v 0.437016 1.414214 -1.344998 +v 0.000000 1.414214 -1.414214 +v -0.437016 1.414214 -1.344998 +v -0.831254 1.414214 -1.144123 +v -1.144123 1.414214 -0.831254 +v -1.344997 1.414214 -0.437016 +v -1.414214 1.414214 0.000000 +v -1.344997 1.414214 0.437016 +v -1.144123 1.414214 0.831254 +v -0.831254 1.414214 1.144123 +v -0.437016 1.414214 1.344997 +v -0.000000 1.414214 1.414214 +v 0.437016 1.414214 1.344997 +v 0.831254 1.414214 1.144123 +v 1.144123 1.414214 0.831254 +v 1.344997 1.414214 0.437016 +v 1.414214 1.414214 0.000000 +v 1.118035 1.618034 -0.363271 +v 0.951057 1.618034 -0.690983 +v 0.690983 1.618034 -0.951057 +v 0.363271 1.618034 -1.118035 +v 0.000000 1.618034 -1.175571 +v -0.363271 1.618034 -1.118034 +v -0.690983 1.618034 -0.951057 +v -0.951057 1.618034 -0.690983 +v -1.118034 1.618034 -0.363271 +v -1.175571 1.618034 0.000000 +v -1.118034 1.618034 0.363271 +v -0.951057 1.618034 0.690983 +v -0.690983 1.618034 0.951057 +v -0.363271 1.618034 1.118034 +v -0.000000 1.618034 1.175571 +v 0.363271 1.618034 1.118034 +v 0.690983 1.618034 0.951057 +v 0.951057 1.618034 0.690983 +v 1.118034 1.618034 0.363271 +v 1.175570 1.618034 0.000000 +v 0.863542 1.782013 -0.280582 +v 0.734573 1.782013 -0.533698 +v 0.533698 1.782013 -0.734573 +v 0.280582 1.782013 -0.863542 +v 0.000000 1.782013 -0.907981 +v -0.280582 1.782013 -0.863542 +v -0.533698 1.782013 -0.734572 +v -0.734572 1.782013 -0.533698 +v -0.863542 1.782013 -0.280582 +v -0.907981 1.782013 0.000000 +v -0.863542 1.782013 0.280582 +v -0.734572 1.782013 0.533698 +v -0.533698 1.782013 0.734572 +v -0.280582 1.782013 0.863541 +v -0.000000 1.782013 0.907981 +v 0.280582 1.782013 0.863541 +v 0.533698 1.782013 0.734572 +v 0.734572 1.782013 0.533698 +v 0.863541 1.782013 0.280582 +v 0.907981 1.782013 0.000000 +v 0.587786 1.902113 -0.190983 +v 0.500000 1.902113 -0.363271 +v 0.363271 1.902113 -0.500000 +v 0.190983 1.902113 -0.587786 +v 0.000000 1.902113 -0.618034 +v -0.190983 1.902113 -0.587786 +v -0.363271 1.902113 -0.500000 +v -0.500000 1.902113 -0.363271 +v -0.587785 1.902113 -0.190983 +v -0.618034 1.902113 0.000000 +v -0.587785 1.902113 0.190983 +v -0.500000 1.902113 0.363271 +v -0.363271 1.902113 0.500000 +v -0.190983 1.902113 0.587785 +v -0.000000 1.902113 0.618034 +v 0.190983 1.902113 0.587785 +v 0.363271 1.902113 0.500000 +v 0.500000 1.902113 0.363271 +v 0.587785 1.902113 0.190983 +v 0.618034 1.902113 0.000000 +v 0.297556 1.975377 -0.096682 +v 0.253116 1.975377 -0.183900 +v 0.183900 1.975377 -0.253116 +v 0.096682 1.975377 -0.297556 +v 0.000000 1.975377 -0.312869 +v -0.096682 1.975377 -0.297556 +v -0.183900 1.975377 -0.253116 +v -0.253116 1.975377 -0.183900 +v -0.297556 1.975377 -0.096682 +v -0.312869 1.975377 0.000000 +v -0.297556 1.975377 0.096682 +v -0.253116 1.975377 0.183900 +v -0.183900 1.975377 0.253116 +v -0.096682 1.975377 0.297556 +v -0.000000 1.975377 0.312869 +v 0.096682 1.975377 0.297556 +v 0.183900 1.975377 0.253116 +v 0.253116 1.975377 0.183900 +v 0.297556 1.975377 0.096682 +v 0.312869 1.975377 0.000000 +v 0.000000 -2.000000 0.000000 +v 0.000000 2.000000 0.000000 +vt 0.000000 0.050000 +vt 0.050000 0.050000 +vt 0.100000 0.050000 +vt 0.150000 0.050000 +vt 0.200000 0.050000 +vt 0.250000 0.050000 +vt 0.300000 0.050000 +vt 0.350000 0.050000 +vt 0.400000 0.050000 +vt 0.450000 0.050000 +vt 0.500000 0.050000 +vt 0.550000 0.050000 +vt 0.600000 0.050000 +vt 0.650000 0.050000 +vt 0.700000 0.050000 +vt 0.750000 0.050000 +vt 0.800000 0.050000 +vt 0.850000 0.050000 +vt 0.900000 0.050000 +vt 0.950000 0.050000 +vt 1.000000 0.050000 +vt 0.000000 0.100000 +vt 0.050000 0.100000 +vt 0.100000 0.100000 +vt 0.150000 0.100000 +vt 0.200000 0.100000 +vt 0.250000 0.100000 +vt 0.300000 0.100000 +vt 0.350000 0.100000 +vt 0.400000 0.100000 +vt 0.450000 0.100000 +vt 0.500000 0.100000 +vt 0.550000 0.100000 +vt 0.600000 0.100000 +vt 0.650000 0.100000 +vt 0.700000 0.100000 +vt 0.750000 0.100000 +vt 0.800000 0.100000 +vt 0.850000 0.100000 +vt 0.900000 0.100000 +vt 0.950000 0.100000 +vt 1.000000 0.100000 +vt 0.000000 0.150000 +vt 0.050000 0.150000 +vt 0.100000 0.150000 +vt 0.150000 0.150000 +vt 0.200000 0.150000 +vt 0.250000 0.150000 +vt 0.300000 0.150000 +vt 0.350000 0.150000 +vt 0.400000 0.150000 +vt 0.450000 0.150000 +vt 0.500000 0.150000 +vt 0.550000 0.150000 +vt 0.600000 0.150000 +vt 0.650000 0.150000 +vt 0.700000 0.150000 +vt 0.750000 0.150000 +vt 0.800000 0.150000 +vt 0.850000 0.150000 +vt 0.900000 0.150000 +vt 0.950000 0.150000 +vt 1.000000 0.150000 +vt 0.000000 0.200000 +vt 0.050000 0.200000 +vt 0.100000 0.200000 +vt 0.150000 0.200000 +vt 0.200000 0.200000 +vt 0.250000 0.200000 +vt 0.300000 0.200000 +vt 0.350000 0.200000 +vt 0.400000 0.200000 +vt 0.450000 0.200000 +vt 0.500000 0.200000 +vt 0.550000 0.200000 +vt 0.600000 0.200000 +vt 0.650000 0.200000 +vt 0.700000 0.200000 +vt 0.750000 0.200000 +vt 0.800000 0.200000 +vt 0.850000 0.200000 +vt 0.900000 0.200000 +vt 0.950000 0.200000 +vt 1.000000 0.200000 +vt 0.000000 0.250000 +vt 0.050000 0.250000 +vt 0.100000 0.250000 +vt 0.150000 0.250000 +vt 0.200000 0.250000 +vt 0.250000 0.250000 +vt 0.300000 0.250000 +vt 0.350000 0.250000 +vt 0.400000 0.250000 +vt 0.450000 0.250000 +vt 0.500000 0.250000 +vt 0.550000 0.250000 +vt 0.600000 0.250000 +vt 0.650000 0.250000 +vt 0.700000 0.250000 +vt 0.750000 0.250000 +vt 0.800000 0.250000 +vt 0.850000 0.250000 +vt 0.900000 0.250000 +vt 0.950000 0.250000 +vt 1.000000 0.250000 +vt 0.000000 0.300000 +vt 0.050000 0.300000 +vt 0.100000 0.300000 +vt 0.150000 0.300000 +vt 0.200000 0.300000 +vt 0.250000 0.300000 +vt 0.300000 0.300000 +vt 0.350000 0.300000 +vt 0.400000 0.300000 +vt 0.450000 0.300000 +vt 0.500000 0.300000 +vt 0.550000 0.300000 +vt 0.600000 0.300000 +vt 0.650000 0.300000 +vt 0.700000 0.300000 +vt 0.750000 0.300000 +vt 0.800000 0.300000 +vt 0.850000 0.300000 +vt 0.900000 0.300000 +vt 0.950000 0.300000 +vt 1.000000 0.300000 +vt 0.000000 0.350000 +vt 0.050000 0.350000 +vt 0.100000 0.350000 +vt 0.150000 0.350000 +vt 0.200000 0.350000 +vt 0.250000 0.350000 +vt 0.300000 0.350000 +vt 0.350000 0.350000 +vt 0.400000 0.350000 +vt 0.450000 0.350000 +vt 0.500000 0.350000 +vt 0.550000 0.350000 +vt 0.600000 0.350000 +vt 0.650000 0.350000 +vt 0.700000 0.350000 +vt 0.750000 0.350000 +vt 0.800000 0.350000 +vt 0.850000 0.350000 +vt 0.900000 0.350000 +vt 0.950000 0.350000 +vt 1.000000 0.350000 +vt 0.000000 0.400000 +vt 0.050000 0.400000 +vt 0.100000 0.400000 +vt 0.150000 0.400000 +vt 0.200000 0.400000 +vt 0.250000 0.400000 +vt 0.300000 0.400000 +vt 0.350000 0.400000 +vt 0.400000 0.400000 +vt 0.450000 0.400000 +vt 0.500000 0.400000 +vt 0.550000 0.400000 +vt 0.600000 0.400000 +vt 0.650000 0.400000 +vt 0.700000 0.400000 +vt 0.750000 0.400000 +vt 0.800000 0.400000 +vt 0.850000 0.400000 +vt 0.900000 0.400000 +vt 0.950000 0.400000 +vt 1.000000 0.400000 +vt 0.000000 0.450000 +vt 0.050000 0.450000 +vt 0.100000 0.450000 +vt 0.150000 0.450000 +vt 0.200000 0.450000 +vt 0.250000 0.450000 +vt 0.300000 0.450000 +vt 0.350000 0.450000 +vt 0.400000 0.450000 +vt 0.450000 0.450000 +vt 0.500000 0.450000 +vt 0.550000 0.450000 +vt 0.600000 0.450000 +vt 0.650000 0.450000 +vt 0.700000 0.450000 +vt 0.750000 0.450000 +vt 0.800000 0.450000 +vt 0.850000 0.450000 +vt 0.900000 0.450000 +vt 0.950000 0.450000 +vt 1.000000 0.450000 +vt 0.000000 0.500000 +vt 0.050000 0.500000 +vt 0.100000 0.500000 +vt 0.150000 0.500000 +vt 0.200000 0.500000 +vt 0.250000 0.500000 +vt 0.300000 0.500000 +vt 0.350000 0.500000 +vt 0.400000 0.500000 +vt 0.450000 0.500000 +vt 0.500000 0.500000 +vt 0.550000 0.500000 +vt 0.600000 0.500000 +vt 0.650000 0.500000 +vt 0.700000 0.500000 +vt 0.750000 0.500000 +vt 0.800000 0.500000 +vt 0.850000 0.500000 +vt 0.900000 0.500000 +vt 0.950000 0.500000 +vt 1.000000 0.500000 +vt 0.000000 0.550000 +vt 0.050000 0.550000 +vt 0.100000 0.550000 +vt 0.150000 0.550000 +vt 0.200000 0.550000 +vt 0.250000 0.550000 +vt 0.300000 0.550000 +vt 0.350000 0.550000 +vt 0.400000 0.550000 +vt 0.450000 0.550000 +vt 0.500000 0.550000 +vt 0.550000 0.550000 +vt 0.600000 0.550000 +vt 0.650000 0.550000 +vt 0.700000 0.550000 +vt 0.750000 0.550000 +vt 0.800000 0.550000 +vt 0.850000 0.550000 +vt 0.900000 0.550000 +vt 0.950000 0.550000 +vt 1.000000 0.550000 +vt 0.000000 0.600000 +vt 0.050000 0.600000 +vt 0.100000 0.600000 +vt 0.150000 0.600000 +vt 0.200000 0.600000 +vt 0.250000 0.600000 +vt 0.300000 0.600000 +vt 0.350000 0.600000 +vt 0.400000 0.600000 +vt 0.450000 0.600000 +vt 0.500000 0.600000 +vt 0.550000 0.600000 +vt 0.600000 0.600000 +vt 0.650000 0.600000 +vt 0.700000 0.600000 +vt 0.750000 0.600000 +vt 0.800000 0.600000 +vt 0.850000 0.600000 +vt 0.900000 0.600000 +vt 0.950000 0.600000 +vt 1.000000 0.600000 +vt 0.000000 0.650000 +vt 0.050000 0.650000 +vt 0.100000 0.650000 +vt 0.150000 0.650000 +vt 0.200000 0.650000 +vt 0.250000 0.650000 +vt 0.300000 0.650000 +vt 0.350000 0.650000 +vt 0.400000 0.650000 +vt 0.450000 0.650000 +vt 0.500000 0.650000 +vt 0.550000 0.650000 +vt 0.600000 0.650000 +vt 0.650000 0.650000 +vt 0.700000 0.650000 +vt 0.750000 0.650000 +vt 0.800000 0.650000 +vt 0.850000 0.650000 +vt 0.900000 0.650000 +vt 0.950000 0.650000 +vt 1.000000 0.650000 +vt 0.000000 0.700000 +vt 0.050000 0.700000 +vt 0.100000 0.700000 +vt 0.150000 0.700000 +vt 0.200000 0.700000 +vt 0.250000 0.700000 +vt 0.300000 0.700000 +vt 0.350000 0.700000 +vt 0.400000 0.700000 +vt 0.450000 0.700000 +vt 0.500000 0.700000 +vt 0.550000 0.700000 +vt 0.600000 0.700000 +vt 0.650000 0.700000 +vt 0.700000 0.700000 +vt 0.750000 0.700000 +vt 0.800000 0.700000 +vt 0.850000 0.700000 +vt 0.900000 0.700000 +vt 0.950000 0.700000 +vt 1.000000 0.700000 +vt 0.000000 0.750000 +vt 0.050000 0.750000 +vt 0.100000 0.750000 +vt 0.150000 0.750000 +vt 0.200000 0.750000 +vt 0.250000 0.750000 +vt 0.300000 0.750000 +vt 0.350000 0.750000 +vt 0.400000 0.750000 +vt 0.450000 0.750000 +vt 0.500000 0.750000 +vt 0.550000 0.750000 +vt 0.600000 0.750000 +vt 0.650000 0.750000 +vt 0.700000 0.750000 +vt 0.750000 0.750000 +vt 0.800000 0.750000 +vt 0.850000 0.750000 +vt 0.900000 0.750000 +vt 0.950000 0.750000 +vt 1.000000 0.750000 +vt 0.000000 0.800000 +vt 0.050000 0.800000 +vt 0.100000 0.800000 +vt 0.150000 0.800000 +vt 0.200000 0.800000 +vt 0.250000 0.800000 +vt 0.300000 0.800000 +vt 0.350000 0.800000 +vt 0.400000 0.800000 +vt 0.450000 0.800000 +vt 0.500000 0.800000 +vt 0.550000 0.800000 +vt 0.600000 0.800000 +vt 0.650000 0.800000 +vt 0.700000 0.800000 +vt 0.750000 0.800000 +vt 0.800000 0.800000 +vt 0.850000 0.800000 +vt 0.900000 0.800000 +vt 0.950000 0.800000 +vt 1.000000 0.800000 +vt 0.000000 0.850000 +vt 0.050000 0.850000 +vt 0.100000 0.850000 +vt 0.150000 0.850000 +vt 0.200000 0.850000 +vt 0.250000 0.850000 +vt 0.300000 0.850000 +vt 0.350000 0.850000 +vt 0.400000 0.850000 +vt 0.450000 0.850000 +vt 0.500000 0.850000 +vt 0.550000 0.850000 +vt 0.600000 0.850000 +vt 0.650000 0.850000 +vt 0.700000 0.850000 +vt 0.750000 0.850000 +vt 0.800000 0.850000 +vt 0.850000 0.850000 +vt 0.900000 0.850000 +vt 0.950000 0.850000 +vt 1.000000 0.850000 +vt 0.000000 0.900000 +vt 0.050000 0.900000 +vt 0.100000 0.900000 +vt 0.150000 0.900000 +vt 0.200000 0.900000 +vt 0.250000 0.900000 +vt 0.300000 0.900000 +vt 0.350000 0.900000 +vt 0.400000 0.900000 +vt 0.450000 0.900000 +vt 0.500000 0.900000 +vt 0.550000 0.900000 +vt 0.600000 0.900000 +vt 0.650000 0.900000 +vt 0.700000 0.900000 +vt 0.750000 0.900000 +vt 0.800000 0.900000 +vt 0.850000 0.900000 +vt 0.900000 0.900000 +vt 0.950000 0.900000 +vt 1.000000 0.900000 +vt 0.000000 0.950000 +vt 0.050000 0.950000 +vt 0.100000 0.950000 +vt 0.150000 0.950000 +vt 0.200000 0.950000 +vt 0.250000 0.950000 +vt 0.300000 0.950000 +vt 0.350000 0.950000 +vt 0.400000 0.950000 +vt 0.450000 0.950000 +vt 0.500000 0.950000 +vt 0.550000 0.950000 +vt 0.600000 0.950000 +vt 0.650000 0.950000 +vt 0.700000 0.950000 +vt 0.750000 0.950000 +vt 0.800000 0.950000 +vt 0.850000 0.950000 +vt 0.900000 0.950000 +vt 0.950000 0.950000 +vt 1.000000 0.950000 +vt 0.025000 0.000000 +vt 0.075000 0.000000 +vt 0.125000 0.000000 +vt 0.175000 0.000000 +vt 0.225000 0.000000 +vt 0.275000 0.000000 +vt 0.325000 0.000000 +vt 0.375000 0.000000 +vt 0.425000 0.000000 +vt 0.475000 0.000000 +vt 0.525000 0.000000 +vt 0.575000 0.000000 +vt 0.625000 0.000000 +vt 0.675000 0.000000 +vt 0.725000 0.000000 +vt 0.775000 0.000000 +vt 0.825000 0.000000 +vt 0.875000 0.000000 +vt 0.925000 0.000000 +vt 0.975000 0.000000 +vt 0.025000 1.000000 +vt 0.075000 1.000000 +vt 0.125000 1.000000 +vt 0.175000 1.000000 +vt 0.225000 1.000000 +vt 0.275000 1.000000 +vt 0.325000 1.000000 +vt 0.375000 1.000000 +vt 0.425000 1.000000 +vt 0.475000 1.000000 +vt 0.525000 1.000000 +vt 0.575000 1.000000 +vt 0.625000 1.000000 +vt 0.675000 1.000000 +vt 0.725000 1.000000 +vt 0.775000 1.000000 +vt 0.825000 1.000000 +vt 0.875000 1.000000 +vt 0.925000 1.000000 +vt 0.975000 1.000000 +vn 0.162626 -0.985443 -0.049557 +vn 0.139353 -0.985443 -0.097386 +vn 0.307374 -0.946801 -0.095332 +vn 0.262871 -0.946801 -0.185651 +vn 0.102439 -0.985443 -0.135681 +vn 0.192636 -0.946801 -0.257796 +vn 0.055497 -0.985443 -0.160696 +vn 0.103544 -0.946801 -0.304706 +vn 0.003123 -0.985443 -0.169981 +vn 0.004317 -0.946801 -0.321789 +vn -0.049557 -0.985442 -0.162626 +vn -0.095333 -0.946801 -0.307374 +vn -0.097386 -0.985442 -0.139353 +vn -0.185651 -0.946801 -0.262871 +vn -0.135682 -0.985443 -0.102439 +vn -0.257796 -0.946801 -0.192635 +vn -0.160696 -0.985443 -0.055497 +vn -0.304706 -0.946801 -0.103544 +vn -0.169981 -0.985443 -0.003123 +vn -0.321790 -0.946801 -0.004318 +vn -0.162626 -0.985443 0.049556 +vn -0.307374 -0.946801 0.095333 +vn -0.139353 -0.985443 0.097384 +vn -0.262871 -0.946801 0.185651 +vn -0.102439 -0.985443 0.135680 +vn -0.192636 -0.946801 0.257796 +vn -0.055497 -0.985442 0.160696 +vn -0.103544 -0.946801 0.304707 +vn -0.003123 -0.985443 0.169981 +vn -0.004317 -0.946802 0.321789 +vn 0.049557 -0.985442 0.162627 +vn 0.095333 -0.946801 0.307374 +vn 0.097386 -0.985442 0.139354 +vn 0.185651 -0.946801 0.262871 +vn 0.135682 -0.985442 0.102439 +vn 0.257796 -0.946801 0.192636 +vn 0.160696 -0.985443 0.055497 +vn 0.304706 -0.946801 0.103544 +vn 0.169981 -0.985443 0.003123 +vn 0.321790 -0.946801 0.004317 +vn 0.443773 -0.885332 -0.138754 +vn 0.379175 -0.885332 -0.269096 +vn 0.277462 -0.885332 -0.373097 +vn 0.148589 -0.885333 -0.440577 +vn 0.005170 -0.885332 -0.464930 +vn -0.138754 -0.885332 -0.443773 +vn -0.269096 -0.885332 -0.379175 +vn -0.373097 -0.885332 -0.277462 +vn -0.440577 -0.885332 -0.148589 +vn -0.464930 -0.885332 -0.005171 +vn -0.443773 -0.885332 0.138754 +vn -0.379176 -0.885332 0.269096 +vn -0.277462 -0.885332 0.373097 +vn -0.148589 -0.885332 0.440577 +vn -0.005170 -0.885332 0.464930 +vn 0.138754 -0.885332 0.443773 +vn 0.269096 -0.885332 0.379176 +vn 0.373097 -0.885332 0.277462 +vn 0.440577 -0.885332 0.148589 +vn 0.464930 -0.885332 0.005171 +vn 0.569006 -0.802583 -0.179146 +vn 0.485797 -0.802583 -0.346211 +vn 0.355036 -0.802583 -0.479386 +vn 0.189521 -0.802583 -0.565635 +vn 0.005454 -0.802583 -0.596516 +vn -0.179147 -0.802583 -0.569006 +vn -0.346211 -0.802583 -0.485797 +vn -0.479386 -0.802583 -0.355036 +vn -0.565635 -0.802583 -0.189521 +vn -0.596516 -0.802583 -0.005454 +vn -0.569006 -0.802583 0.179146 +vn -0.485798 -0.802583 0.346211 +vn -0.355036 -0.802583 0.479386 +vn -0.189521 -0.802583 0.565635 +vn -0.005454 -0.802583 0.596516 +vn 0.179146 -0.802583 0.569006 +vn 0.346211 -0.802582 0.485798 +vn 0.479386 -0.802583 0.355036 +vn 0.565635 -0.802583 0.189521 +vn 0.596516 -0.802583 0.005455 +vn 0.680269 -0.700559 -0.215525 +vn 0.580373 -0.700559 -0.415192 +vn 0.423666 -0.700559 -0.574216 +vn 0.225488 -0.700559 -0.677032 +vn 0.005237 -0.700559 -0.713576 +vn -0.215526 -0.700559 -0.680269 +vn -0.415192 -0.700559 -0.580373 +vn -0.574217 -0.700559 -0.423666 +vn -0.677032 -0.700559 -0.225488 +vn -0.713576 -0.700559 -0.005237 +vn -0.680269 -0.700559 0.215526 +vn -0.580373 -0.700559 0.415192 +vn -0.423666 -0.700559 0.574217 +vn -0.225488 -0.700559 0.677033 +vn -0.005237 -0.700559 0.713576 +vn 0.215526 -0.700559 0.680269 +vn 0.415192 -0.700559 0.580373 +vn 0.574217 -0.700559 0.423666 +vn 0.677032 -0.700559 0.225488 +vn 0.713576 -0.700558 0.005238 +vn 0.774995 -0.581722 -0.246947 +vn 0.660752 -0.581722 -0.474348 +vn 0.481831 -0.581722 -0.655315 +vn 0.255745 -0.581722 -0.772136 +vn 0.004625 -0.581722 -0.813375 +vn -0.246948 -0.581722 -0.774994 +vn -0.474348 -0.581722 -0.660752 +vn -0.655315 -0.581722 -0.481831 +vn -0.772136 -0.581722 -0.255745 +vn -0.813375 -0.581722 -0.004625 +vn -0.774994 -0.581722 0.246948 +vn -0.660752 -0.581722 0.474348 +vn -0.481831 -0.581722 0.655315 +vn -0.255745 -0.581722 0.772136 +vn -0.004625 -0.581722 0.813375 +vn 0.246948 -0.581722 0.774995 +vn 0.474348 -0.581722 0.660753 +vn 0.655315 -0.581722 0.481832 +vn 0.772136 -0.581722 0.255745 +vn 0.813375 -0.581722 0.004626 +vn 0.850971 -0.448937 -0.272589 +vn 0.725086 -0.448937 -0.522213 +vn 0.528225 -0.448937 -0.720718 +vn 0.279658 -0.448937 -0.848674 +vn 0.003715 -0.448937 -0.893556 +vn -0.272590 -0.448937 -0.850970 +vn -0.522213 -0.448937 -0.725085 +vn -0.720718 -0.448937 -0.528225 +vn -0.848674 -0.448937 -0.279657 +vn -0.893556 -0.448937 -0.003716 +vn -0.850970 -0.448937 0.272590 +vn -0.725086 -0.448937 0.522213 +vn -0.528225 -0.448937 0.720718 +vn -0.279658 -0.448937 0.848674 +vn -0.003716 -0.448937 0.893556 +vn 0.272590 -0.448937 0.850970 +vn 0.522213 -0.448937 0.725086 +vn 0.720718 -0.448937 0.528225 +vn 0.848674 -0.448937 0.279658 +vn 0.893556 -0.448937 0.003716 +vn 0.906418 -0.305397 -0.291786 +vn 0.771887 -0.305397 -0.557605 +vn 0.561799 -0.305397 -0.768840 +vn 0.296718 -0.305397 -0.904815 +vn 0.002592 -0.305397 -0.952222 +vn -0.291788 -0.305397 -0.906417 +vn -0.557605 -0.305397 -0.771887 +vn -0.768840 -0.305397 -0.561799 +vn -0.904816 -0.305397 -0.296718 +vn -0.952222 -0.305397 -0.002592 +vn -0.906418 -0.305397 0.291787 +vn -0.771887 -0.305397 0.557605 +vn -0.561799 -0.305397 0.768840 +vn -0.296718 -0.305397 0.904816 +vn -0.002592 -0.305397 0.952222 +vn 0.291787 -0.305397 0.906418 +vn 0.557605 -0.305397 0.771887 +vn 0.768840 -0.305397 0.561799 +vn 0.904816 -0.305397 0.296718 +vn 0.952222 -0.305397 0.002593 +vn 0.940040 -0.154547 -0.304038 +vn 0.800078 -0.154547 -0.579647 +vn 0.581799 -0.154547 -0.798515 +vn 0.306569 -0.154547 -0.939218 +vn 0.001330 -0.154547 -0.987985 +vn -0.304039 -0.154547 -0.940040 +vn -0.579647 -0.154547 -0.800078 +vn -0.798515 -0.154547 -0.581799 +vn -0.939218 -0.154547 -0.306569 +vn -0.987985 -0.154547 -0.001330 +vn -0.940040 -0.154547 0.304039 +vn -0.800078 -0.154547 0.579647 +vn -0.581799 -0.154547 0.798514 +vn -0.306569 -0.154547 0.939218 +vn -0.001330 -0.154547 0.987985 +vn 0.304039 -0.154547 0.940040 +vn 0.579647 -0.154547 0.800078 +vn 0.798514 -0.154547 0.581799 +vn 0.939218 -0.154547 0.306569 +vn 0.987985 -0.154547 0.001331 +vn 0.951057 -0.000000 -0.309016 +vn 0.809017 0.000000 -0.587785 +vn 0.587785 0.000000 -0.809017 +vn 0.309017 -0.000000 -0.951057 +vn -0.000000 0.000000 -1.000000 +vn -0.309017 0.000000 -0.951057 +vn -0.587785 -0.000000 -0.809017 +vn -0.809017 -0.000000 -0.587785 +vn -0.951057 0.000000 -0.309017 +vn -1.000000 0.000000 0.000000 +vn -0.951057 0.000000 0.309017 +vn -0.809017 0.000000 0.587785 +vn -0.587785 0.000000 0.809017 +vn -0.309017 0.000000 0.951057 +vn 0.000000 0.000000 1.000000 +vn 0.309017 0.000000 0.951057 +vn 0.587785 -0.000000 0.809017 +vn 0.809017 0.000000 0.587785 +vn 0.951057 -0.000000 0.309017 +vn 1.000000 0.000000 0.000001 +vn 0.939218 0.154547 -0.306568 +vn 0.798514 0.154548 -0.581799 +vn 0.579647 0.154547 -0.800078 +vn 0.304039 0.154547 -0.940040 +vn -0.001330 0.154547 -0.987985 +vn -0.306569 0.154547 -0.939218 +vn -0.581799 0.154547 -0.798514 +vn -0.800078 0.154547 -0.579646 +vn -0.940040 0.154547 -0.304039 +vn -0.987985 0.154547 0.001330 +vn -0.939218 0.154547 0.306569 +vn -0.798514 0.154547 0.581799 +vn -0.579646 0.154547 0.800078 +vn -0.304039 0.154547 0.940040 +vn 0.001330 0.154547 0.987985 +vn 0.306569 0.154547 0.939218 +vn 0.581799 0.154547 0.798514 +vn 0.800078 0.154547 0.579647 +vn 0.940040 0.154547 0.304039 +vn 0.987984 0.154547 -0.001329 +vn 0.904816 0.305397 -0.296717 +vn 0.768840 0.305397 -0.561799 +vn 0.557605 0.305397 -0.771887 +vn 0.291787 0.305397 -0.906418 +vn -0.002592 0.305397 -0.952222 +vn -0.296718 0.305397 -0.904815 +vn -0.561799 0.305397 -0.768840 +vn -0.771887 0.305397 -0.557604 +vn -0.906417 0.305397 -0.291787 +vn -0.952222 0.305397 0.002592 +vn -0.904816 0.305397 0.296718 +vn -0.768840 0.305397 0.561799 +vn -0.557605 0.305397 0.771887 +vn -0.291787 0.305397 0.906418 +vn 0.002592 0.305397 0.952222 +vn 0.296718 0.305397 0.904816 +vn 0.561799 0.305397 0.768840 +vn 0.771887 0.305397 0.557605 +vn 0.906418 0.305397 0.291787 +vn 0.952222 0.305397 -0.002591 +vn 0.848674 0.448937 -0.279657 +vn 0.720718 0.448937 -0.528225 +vn 0.522213 0.448937 -0.725086 +vn 0.272590 0.448937 -0.850970 +vn -0.003716 0.448937 -0.893556 +vn -0.279658 0.448937 -0.848674 +vn -0.528225 0.448937 -0.720718 +vn -0.725086 0.448937 -0.522213 +vn -0.850970 0.448937 -0.272590 +vn -0.893556 0.448937 0.003716 +vn -0.848674 0.448937 0.279658 +vn -0.720718 0.448937 0.528225 +vn -0.522213 0.448937 0.725086 +vn -0.272590 0.448937 0.850970 +vn 0.003716 0.448937 0.893556 +vn 0.279658 0.448937 0.848674 +vn 0.528225 0.448937 0.720718 +vn 0.725086 0.448937 0.522213 +vn 0.850970 0.448937 0.272590 +vn 0.893556 0.448937 -0.003715 +vn 0.772136 0.581722 -0.255745 +vn 0.655315 0.581722 -0.481832 +vn 0.474347 0.581722 -0.660752 +vn 0.246948 0.581722 -0.774994 +vn -0.004625 0.581722 -0.813375 +vn -0.255746 0.581722 -0.772136 +vn -0.481832 0.581722 -0.655315 +vn -0.660753 0.581722 -0.474348 +vn -0.774994 0.581722 -0.246948 +vn -0.813375 0.581722 0.004625 +vn -0.772136 0.581722 0.255745 +vn -0.655315 0.581722 0.481832 +vn -0.474347 0.581722 0.660753 +vn -0.246948 0.581722 0.774995 +vn 0.004625 0.581722 0.813375 +vn 0.255746 0.581722 0.772136 +vn 0.481831 0.581722 0.655315 +vn 0.660752 0.581722 0.474348 +vn 0.774994 0.581722 0.246948 +vn 0.813375 0.581722 -0.004624 +vn 0.677033 0.700559 -0.225487 +vn 0.574216 0.700559 -0.423666 +vn 0.415192 0.700559 -0.580373 +vn 0.215526 0.700559 -0.680269 +vn -0.005237 0.700559 -0.713576 +vn -0.225488 0.700559 -0.677032 +vn -0.423666 0.700559 -0.574216 +vn -0.580373 0.700559 -0.415192 +vn -0.680269 0.700559 -0.215526 +vn -0.713576 0.700559 0.005237 +vn -0.677032 0.700559 0.225488 +vn -0.574217 0.700558 0.423666 +vn -0.415192 0.700559 0.580373 +vn -0.215526 0.700559 0.680269 +vn 0.005237 0.700559 0.713576 +vn 0.225488 0.700559 0.677032 +vn 0.423666 0.700559 0.574216 +vn 0.580373 0.700559 0.415192 +vn 0.680269 0.700559 0.215526 +vn 0.713576 0.700559 -0.005236 +vn 0.565635 0.802583 -0.189520 +vn 0.479385 0.802583 -0.355036 +vn 0.346211 0.802583 -0.485798 +vn 0.179146 0.802583 -0.569006 +vn -0.005454 0.802583 -0.596516 +vn -0.189521 0.802583 -0.565635 +vn -0.355036 0.802583 -0.479386 +vn -0.485798 0.802583 -0.346211 +vn -0.569006 0.802583 -0.179146 +vn -0.596516 0.802583 0.005454 +vn -0.565635 0.802583 0.189521 +vn -0.479386 0.802583 0.355036 +vn -0.346211 0.802583 0.485798 +vn -0.179146 0.802583 0.569006 +vn 0.005454 0.802583 0.596516 +vn 0.189521 0.802583 0.565635 +vn 0.355036 0.802583 0.479386 +vn 0.485798 0.802583 0.346211 +vn 0.569006 0.802583 0.179146 +vn 0.596516 0.802583 -0.005454 +vn 0.440577 0.885332 -0.148588 +vn 0.373097 0.885332 -0.277462 +vn 0.269096 0.885332 -0.379176 +vn 0.138754 0.885332 -0.443772 +vn -0.005171 0.885332 -0.464930 +vn -0.148589 0.885332 -0.440577 +vn -0.277462 0.885332 -0.373097 +vn -0.379176 0.885332 -0.269096 +vn -0.443773 0.885332 -0.138754 +vn -0.464930 0.885332 0.005170 +vn -0.440577 0.885332 0.148588 +vn -0.373097 0.885332 0.277462 +vn -0.269096 0.885332 0.379176 +vn -0.138754 0.885332 0.443773 +vn 0.005171 0.885332 0.464930 +vn 0.148589 0.885332 0.440577 +vn 0.277462 0.885332 0.373097 +vn 0.379176 0.885332 0.269096 +vn 0.443773 0.885332 0.138754 +vn 0.464930 0.885332 -0.005170 +vn 0.304706 0.946801 -0.103544 +vn 0.257796 0.946801 -0.192636 +vn 0.185651 0.946801 -0.262871 +vn 0.095333 0.946801 -0.307374 +vn -0.004317 0.946801 -0.321789 +vn -0.103544 0.946801 -0.304706 +vn -0.192636 0.946801 -0.257796 +vn -0.262871 0.946801 -0.185651 +vn -0.307374 0.946801 -0.095333 +vn -0.321790 0.946801 0.004317 +vn -0.304706 0.946801 0.103544 +vn -0.257796 0.946801 0.192636 +vn -0.185651 0.946801 0.262871 +vn -0.095333 0.946801 0.307374 +vn 0.004317 0.946801 0.321789 +vn 0.103544 0.946801 0.304706 +vn 0.192636 0.946801 0.257796 +vn 0.262871 0.946801 0.185651 +vn 0.307374 0.946801 0.095333 +vn 0.321790 0.946801 -0.004317 +vn 0.160696 0.985443 -0.055497 +vn 0.135682 0.985443 -0.102438 +vn 0.097386 0.985443 -0.139352 +vn 0.049557 0.985442 -0.162627 +vn -0.003123 0.985443 -0.169981 +vn -0.055497 0.985443 -0.160696 +vn -0.102439 0.985443 -0.135680 +vn -0.139353 0.985443 -0.097384 +vn -0.162626 0.985443 -0.049557 +vn -0.169981 0.985442 0.003123 +vn -0.160696 0.985442 0.055497 +vn -0.135682 0.985442 0.102439 +vn -0.097386 0.985442 0.139353 +vn -0.049557 0.985443 0.162627 +vn 0.003123 0.985442 0.169981 +vn 0.055497 0.985443 0.160696 +vn 0.102439 0.985443 0.135680 +vn 0.139353 0.985443 0.097385 +vn 0.162626 0.985443 0.049557 +vn 0.169981 0.985443 -0.003123 +vn -0.000000 -1.000000 -0.000000 +vn -0.000000 1.000000 0.000000 +f 1/1/1 2/2/2 21/22/3 +f 21/22/3 2/2/2 22/23/4 +f 2/2/2 3/3/5 22/23/4 +f 22/23/4 3/3/5 23/24/6 +f 3/3/5 4/4/7 23/24/6 +f 23/24/6 4/4/7 24/25/8 +f 4/4/7 5/5/9 24/25/8 +f 24/25/8 5/5/9 25/26/10 +f 5/5/9 6/6/11 25/26/10 +f 25/26/10 6/6/11 26/27/12 +f 6/6/11 7/7/13 26/27/12 +f 26/27/12 7/7/13 27/28/14 +f 7/7/13 8/8/15 27/28/14 +f 27/28/14 8/8/15 28/29/16 +f 8/8/15 9/9/17 28/29/16 +f 28/29/16 9/9/17 29/30/18 +f 9/9/17 10/10/19 29/30/18 +f 29/30/18 10/10/19 30/31/20 +f 10/10/19 11/11/21 30/31/20 +f 30/31/20 11/11/21 31/32/22 +f 11/11/21 12/12/23 31/32/22 +f 31/32/22 12/12/23 32/33/24 +f 12/12/23 13/13/25 32/33/24 +f 32/33/24 13/13/25 33/34/26 +f 13/13/25 14/14/27 33/34/26 +f 33/34/26 14/14/27 34/35/28 +f 14/14/27 15/15/29 34/35/28 +f 34/35/28 15/15/29 35/36/30 +f 15/15/29 16/16/31 35/36/30 +f 35/36/30 16/16/31 36/37/32 +f 16/16/31 17/17/33 36/37/32 +f 36/37/32 17/17/33 37/38/34 +f 17/17/33 18/18/35 37/38/34 +f 37/38/34 18/18/35 38/39/36 +f 18/18/35 19/19/37 38/39/36 +f 38/39/36 19/19/37 39/40/38 +f 19/19/37 20/20/39 39/40/38 +f 39/40/38 20/20/39 40/41/40 +f 20/20/39 1/21/1 40/41/40 +f 40/41/40 1/21/1 21/42/3 +f 21/22/3 22/23/4 41/43/41 +f 41/43/41 22/23/4 42/44/42 +f 22/23/4 23/24/6 42/44/42 +f 42/44/42 23/24/6 43/45/43 +f 23/24/6 24/25/8 43/45/43 +f 43/45/43 24/25/8 44/46/44 +f 24/25/8 25/26/10 44/46/44 +f 44/46/44 25/26/10 45/47/45 +f 25/26/10 26/27/12 45/47/45 +f 45/47/45 26/27/12 46/48/46 +f 26/27/12 27/28/14 46/48/46 +f 46/48/46 27/28/14 47/49/47 +f 27/28/14 28/29/16 47/49/47 +f 47/49/47 28/29/16 48/50/48 +f 28/29/16 29/30/18 48/50/48 +f 48/50/48 29/30/18 49/51/49 +f 29/30/18 30/31/20 49/51/49 +f 49/51/49 30/31/20 50/52/50 +f 30/31/20 31/32/22 50/52/50 +f 50/52/50 31/32/22 51/53/51 +f 31/32/22 32/33/24 51/53/51 +f 51/53/51 32/33/24 52/54/52 +f 32/33/24 33/34/26 52/54/52 +f 52/54/52 33/34/26 53/55/53 +f 33/34/26 34/35/28 53/55/53 +f 53/55/53 34/35/28 54/56/54 +f 34/35/28 35/36/30 54/56/54 +f 54/56/54 35/36/30 55/57/55 +f 35/36/30 36/37/32 55/57/55 +f 55/57/55 36/37/32 56/58/56 +f 36/37/32 37/38/34 56/58/56 +f 56/58/56 37/38/34 57/59/57 +f 37/38/34 38/39/36 57/59/57 +f 57/59/57 38/39/36 58/60/58 +f 38/39/36 39/40/38 58/60/58 +f 58/60/58 39/40/38 59/61/59 +f 39/40/38 40/41/40 59/61/59 +f 59/61/59 40/41/40 60/62/60 +f 40/41/40 21/42/3 60/62/60 +f 60/62/60 21/42/3 41/63/41 +f 41/43/41 42/44/42 61/64/61 +f 61/64/61 42/44/42 62/65/62 +f 42/44/42 43/45/43 62/65/62 +f 62/65/62 43/45/43 63/66/63 +f 43/45/43 44/46/44 63/66/63 +f 63/66/63 44/46/44 64/67/64 +f 44/46/44 45/47/45 64/67/64 +f 64/67/64 45/47/45 65/68/65 +f 45/47/45 46/48/46 65/68/65 +f 65/68/65 46/48/46 66/69/66 +f 46/48/46 47/49/47 66/69/66 +f 66/69/66 47/49/47 67/70/67 +f 47/49/47 48/50/48 67/70/67 +f 67/70/67 48/50/48 68/71/68 +f 48/50/48 49/51/49 68/71/68 +f 68/71/68 49/51/49 69/72/69 +f 49/51/49 50/52/50 69/72/69 +f 69/72/69 50/52/50 70/73/70 +f 50/52/50 51/53/51 70/73/70 +f 70/73/70 51/53/51 71/74/71 +f 51/53/51 52/54/52 71/74/71 +f 71/74/71 52/54/52 72/75/72 +f 52/54/52 53/55/53 72/75/72 +f 72/75/72 53/55/53 73/76/73 +f 53/55/53 54/56/54 73/76/73 +f 73/76/73 54/56/54 74/77/74 +f 54/56/54 55/57/55 74/77/74 +f 74/77/74 55/57/55 75/78/75 +f 55/57/55 56/58/56 75/78/75 +f 75/78/75 56/58/56 76/79/76 +f 56/58/56 57/59/57 76/79/76 +f 76/79/76 57/59/57 77/80/77 +f 57/59/57 58/60/58 77/80/77 +f 77/80/77 58/60/58 78/81/78 +f 58/60/58 59/61/59 78/81/78 +f 78/81/78 59/61/59 79/82/79 +f 59/61/59 60/62/60 79/82/79 +f 79/82/79 60/62/60 80/83/80 +f 60/62/60 41/63/41 80/83/80 +f 80/83/80 41/63/41 61/84/61 +f 61/64/61 62/65/62 81/85/81 +f 81/85/81 62/65/62 82/86/82 +f 62/65/62 63/66/63 82/86/82 +f 82/86/82 63/66/63 83/87/83 +f 63/66/63 64/67/64 83/87/83 +f 83/87/83 64/67/64 84/88/84 +f 64/67/64 65/68/65 84/88/84 +f 84/88/84 65/68/65 85/89/85 +f 65/68/65 66/69/66 85/89/85 +f 85/89/85 66/69/66 86/90/86 +f 66/69/66 67/70/67 86/90/86 +f 86/90/86 67/70/67 87/91/87 +f 67/70/67 68/71/68 87/91/87 +f 87/91/87 68/71/68 88/92/88 +f 68/71/68 69/72/69 88/92/88 +f 88/92/88 69/72/69 89/93/89 +f 69/72/69 70/73/70 89/93/89 +f 89/93/89 70/73/70 90/94/90 +f 70/73/70 71/74/71 90/94/90 +f 90/94/90 71/74/71 91/95/91 +f 71/74/71 72/75/72 91/95/91 +f 91/95/91 72/75/72 92/96/92 +f 72/75/72 73/76/73 92/96/92 +f 92/96/92 73/76/73 93/97/93 +f 73/76/73 74/77/74 93/97/93 +f 93/97/93 74/77/74 94/98/94 +f 74/77/74 75/78/75 94/98/94 +f 94/98/94 75/78/75 95/99/95 +f 75/78/75 76/79/76 95/99/95 +f 95/99/95 76/79/76 96/100/96 +f 76/79/76 77/80/77 96/100/96 +f 96/100/96 77/80/77 97/101/97 +f 77/80/77 78/81/78 97/101/97 +f 97/101/97 78/81/78 98/102/98 +f 78/81/78 79/82/79 98/102/98 +f 98/102/98 79/82/79 99/103/99 +f 79/82/79 80/83/80 99/103/99 +f 99/103/99 80/83/80 100/104/100 +f 80/83/80 61/84/61 100/104/100 +f 100/104/100 61/84/61 81/105/81 +f 81/85/81 82/86/82 101/106/101 +f 101/106/101 82/86/82 102/107/102 +f 82/86/82 83/87/83 102/107/102 +f 102/107/102 83/87/83 103/108/103 +f 83/87/83 84/88/84 103/108/103 +f 103/108/103 84/88/84 104/109/104 +f 84/88/84 85/89/85 104/109/104 +f 104/109/104 85/89/85 105/110/105 +f 85/89/85 86/90/86 105/110/105 +f 105/110/105 86/90/86 106/111/106 +f 86/90/86 87/91/87 106/111/106 +f 106/111/106 87/91/87 107/112/107 +f 87/91/87 88/92/88 107/112/107 +f 107/112/107 88/92/88 108/113/108 +f 88/92/88 89/93/89 108/113/108 +f 108/113/108 89/93/89 109/114/109 +f 89/93/89 90/94/90 109/114/109 +f 109/114/109 90/94/90 110/115/110 +f 90/94/90 91/95/91 110/115/110 +f 110/115/110 91/95/91 111/116/111 +f 91/95/91 92/96/92 111/116/111 +f 111/116/111 92/96/92 112/117/112 +f 92/96/92 93/97/93 112/117/112 +f 112/117/112 93/97/93 113/118/113 +f 93/97/93 94/98/94 113/118/113 +f 113/118/113 94/98/94 114/119/114 +f 94/98/94 95/99/95 114/119/114 +f 114/119/114 95/99/95 115/120/115 +f 95/99/95 96/100/96 115/120/115 +f 115/120/115 96/100/96 116/121/116 +f 96/100/96 97/101/97 116/121/116 +f 116/121/116 97/101/97 117/122/117 +f 97/101/97 98/102/98 117/122/117 +f 117/122/117 98/102/98 118/123/118 +f 98/102/98 99/103/99 118/123/118 +f 118/123/118 99/103/99 119/124/119 +f 99/103/99 100/104/100 119/124/119 +f 119/124/119 100/104/100 120/125/120 +f 100/104/100 81/105/81 120/125/120 +f 120/125/120 81/105/81 101/126/101 +f 101/106/101 102/107/102 121/127/121 +f 121/127/121 102/107/102 122/128/122 +f 102/107/102 103/108/103 122/128/122 +f 122/128/122 103/108/103 123/129/123 +f 103/108/103 104/109/104 123/129/123 +f 123/129/123 104/109/104 124/130/124 +f 104/109/104 105/110/105 124/130/124 +f 124/130/124 105/110/105 125/131/125 +f 105/110/105 106/111/106 125/131/125 +f 125/131/125 106/111/106 126/132/126 +f 106/111/106 107/112/107 126/132/126 +f 126/132/126 107/112/107 127/133/127 +f 107/112/107 108/113/108 127/133/127 +f 127/133/127 108/113/108 128/134/128 +f 108/113/108 109/114/109 128/134/128 +f 128/134/128 109/114/109 129/135/129 +f 109/114/109 110/115/110 129/135/129 +f 129/135/129 110/115/110 130/136/130 +f 110/115/110 111/116/111 130/136/130 +f 130/136/130 111/116/111 131/137/131 +f 111/116/111 112/117/112 131/137/131 +f 131/137/131 112/117/112 132/138/132 +f 112/117/112 113/118/113 132/138/132 +f 132/138/132 113/118/113 133/139/133 +f 113/118/113 114/119/114 133/139/133 +f 133/139/133 114/119/114 134/140/134 +f 114/119/114 115/120/115 134/140/134 +f 134/140/134 115/120/115 135/141/135 +f 115/120/115 116/121/116 135/141/135 +f 135/141/135 116/121/116 136/142/136 +f 116/121/116 117/122/117 136/142/136 +f 136/142/136 117/122/117 137/143/137 +f 117/122/117 118/123/118 137/143/137 +f 137/143/137 118/123/118 138/144/138 +f 118/123/118 119/124/119 138/144/138 +f 138/144/138 119/124/119 139/145/139 +f 119/124/119 120/125/120 139/145/139 +f 139/145/139 120/125/120 140/146/140 +f 120/125/120 101/126/101 140/146/140 +f 140/146/140 101/126/101 121/147/121 +f 121/127/121 122/128/122 141/148/141 +f 141/148/141 122/128/122 142/149/142 +f 122/128/122 123/129/123 142/149/142 +f 142/149/142 123/129/123 143/150/143 +f 123/129/123 124/130/124 143/150/143 +f 143/150/143 124/130/124 144/151/144 +f 124/130/124 125/131/125 144/151/144 +f 144/151/144 125/131/125 145/152/145 +f 125/131/125 126/132/126 145/152/145 +f 145/152/145 126/132/126 146/153/146 +f 126/132/126 127/133/127 146/153/146 +f 146/153/146 127/133/127 147/154/147 +f 127/133/127 128/134/128 147/154/147 +f 147/154/147 128/134/128 148/155/148 +f 128/134/128 129/135/129 148/155/148 +f 148/155/148 129/135/129 149/156/149 +f 129/135/129 130/136/130 149/156/149 +f 149/156/149 130/136/130 150/157/150 +f 130/136/130 131/137/131 150/157/150 +f 150/157/150 131/137/131 151/158/151 +f 131/137/131 132/138/132 151/158/151 +f 151/158/151 132/138/132 152/159/152 +f 132/138/132 133/139/133 152/159/152 +f 152/159/152 133/139/133 153/160/153 +f 133/139/133 134/140/134 153/160/153 +f 153/160/153 134/140/134 154/161/154 +f 134/140/134 135/141/135 154/161/154 +f 154/161/154 135/141/135 155/162/155 +f 135/141/135 136/142/136 155/162/155 +f 155/162/155 136/142/136 156/163/156 +f 136/142/136 137/143/137 156/163/156 +f 156/163/156 137/143/137 157/164/157 +f 137/143/137 138/144/138 157/164/157 +f 157/164/157 138/144/138 158/165/158 +f 138/144/138 139/145/139 158/165/158 +f 158/165/158 139/145/139 159/166/159 +f 139/145/139 140/146/140 159/166/159 +f 159/166/159 140/146/140 160/167/160 +f 140/146/140 121/147/121 160/167/160 +f 160/167/160 121/147/121 141/168/141 +f 141/148/141 142/149/142 161/169/161 +f 161/169/161 142/149/142 162/170/162 +f 142/149/142 143/150/143 162/170/162 +f 162/170/162 143/150/143 163/171/163 +f 143/150/143 144/151/144 163/171/163 +f 163/171/163 144/151/144 164/172/164 +f 144/151/144 145/152/145 164/172/164 +f 164/172/164 145/152/145 165/173/165 +f 145/152/145 146/153/146 165/173/165 +f 165/173/165 146/153/146 166/174/166 +f 146/153/146 147/154/147 166/174/166 +f 166/174/166 147/154/147 167/175/167 +f 147/154/147 148/155/148 167/175/167 +f 167/175/167 148/155/148 168/176/168 +f 148/155/148 149/156/149 168/176/168 +f 168/176/168 149/156/149 169/177/169 +f 149/156/149 150/157/150 169/177/169 +f 169/177/169 150/157/150 170/178/170 +f 150/157/150 151/158/151 170/178/170 +f 170/178/170 151/158/151 171/179/171 +f 151/158/151 152/159/152 171/179/171 +f 171/179/171 152/159/152 172/180/172 +f 152/159/152 153/160/153 172/180/172 +f 172/180/172 153/160/153 173/181/173 +f 153/160/153 154/161/154 173/181/173 +f 173/181/173 154/161/154 174/182/174 +f 154/161/154 155/162/155 174/182/174 +f 174/182/174 155/162/155 175/183/175 +f 155/162/155 156/163/156 175/183/175 +f 175/183/175 156/163/156 176/184/176 +f 156/163/156 157/164/157 176/184/176 +f 176/184/176 157/164/157 177/185/177 +f 157/164/157 158/165/158 177/185/177 +f 177/185/177 158/165/158 178/186/178 +f 158/165/158 159/166/159 178/186/178 +f 178/186/178 159/166/159 179/187/179 +f 159/166/159 160/167/160 179/187/179 +f 179/187/179 160/167/160 180/188/180 +f 160/167/160 141/168/141 180/188/180 +f 180/188/180 141/168/141 161/189/161 +f 161/169/161 162/170/162 181/190/181 +f 181/190/181 162/170/162 182/191/182 +f 162/170/162 163/171/163 182/191/182 +f 182/191/182 163/171/163 183/192/183 +f 163/171/163 164/172/164 183/192/183 +f 183/192/183 164/172/164 184/193/184 +f 164/172/164 165/173/165 184/193/184 +f 184/193/184 165/173/165 185/194/185 +f 165/173/165 166/174/166 185/194/185 +f 185/194/185 166/174/166 186/195/186 +f 166/174/166 167/175/167 186/195/186 +f 186/195/186 167/175/167 187/196/187 +f 167/175/167 168/176/168 187/196/187 +f 187/196/187 168/176/168 188/197/188 +f 168/176/168 169/177/169 188/197/188 +f 188/197/188 169/177/169 189/198/189 +f 169/177/169 170/178/170 189/198/189 +f 189/198/189 170/178/170 190/199/190 +f 170/178/170 171/179/171 190/199/190 +f 190/199/190 171/179/171 191/200/191 +f 171/179/171 172/180/172 191/200/191 +f 191/200/191 172/180/172 192/201/192 +f 172/180/172 173/181/173 192/201/192 +f 192/201/192 173/181/173 193/202/193 +f 173/181/173 174/182/174 193/202/193 +f 193/202/193 174/182/174 194/203/194 +f 174/182/174 175/183/175 194/203/194 +f 194/203/194 175/183/175 195/204/195 +f 175/183/175 176/184/176 195/204/195 +f 195/204/195 176/184/176 196/205/196 +f 176/184/176 177/185/177 196/205/196 +f 196/205/196 177/185/177 197/206/197 +f 177/185/177 178/186/178 197/206/197 +f 197/206/197 178/186/178 198/207/198 +f 178/186/178 179/187/179 198/207/198 +f 198/207/198 179/187/179 199/208/199 +f 179/187/179 180/188/180 199/208/199 +f 199/208/199 180/188/180 200/209/200 +f 180/188/180 161/189/161 200/209/200 +f 200/209/200 161/189/161 181/210/181 +f 181/190/181 182/191/182 201/211/201 +f 201/211/201 182/191/182 202/212/202 +f 182/191/182 183/192/183 202/212/202 +f 202/212/202 183/192/183 203/213/203 +f 183/192/183 184/193/184 203/213/203 +f 203/213/203 184/193/184 204/214/204 +f 184/193/184 185/194/185 204/214/204 +f 204/214/204 185/194/185 205/215/205 +f 185/194/185 186/195/186 205/215/205 +f 205/215/205 186/195/186 206/216/206 +f 186/195/186 187/196/187 206/216/206 +f 206/216/206 187/196/187 207/217/207 +f 187/196/187 188/197/188 207/217/207 +f 207/217/207 188/197/188 208/218/208 +f 188/197/188 189/198/189 208/218/208 +f 208/218/208 189/198/189 209/219/209 +f 189/198/189 190/199/190 209/219/209 +f 209/219/209 190/199/190 210/220/210 +f 190/199/190 191/200/191 210/220/210 +f 210/220/210 191/200/191 211/221/211 +f 191/200/191 192/201/192 211/221/211 +f 211/221/211 192/201/192 212/222/212 +f 192/201/192 193/202/193 212/222/212 +f 212/222/212 193/202/193 213/223/213 +f 193/202/193 194/203/194 213/223/213 +f 213/223/213 194/203/194 214/224/214 +f 194/203/194 195/204/195 214/224/214 +f 214/224/214 195/204/195 215/225/215 +f 195/204/195 196/205/196 215/225/215 +f 215/225/215 196/205/196 216/226/216 +f 196/205/196 197/206/197 216/226/216 +f 216/226/216 197/206/197 217/227/217 +f 197/206/197 198/207/198 217/227/217 +f 217/227/217 198/207/198 218/228/218 +f 198/207/198 199/208/199 218/228/218 +f 218/228/218 199/208/199 219/229/219 +f 199/208/199 200/209/200 219/229/219 +f 219/229/219 200/209/200 220/230/220 +f 200/209/200 181/210/181 220/230/220 +f 220/230/220 181/210/181 201/231/201 +f 201/211/201 202/212/202 221/232/221 +f 221/232/221 202/212/202 222/233/222 +f 202/212/202 203/213/203 222/233/222 +f 222/233/222 203/213/203 223/234/223 +f 203/213/203 204/214/204 223/234/223 +f 223/234/223 204/214/204 224/235/224 +f 204/214/204 205/215/205 224/235/224 +f 224/235/224 205/215/205 225/236/225 +f 205/215/205 206/216/206 225/236/225 +f 225/236/225 206/216/206 226/237/226 +f 206/216/206 207/217/207 226/237/226 +f 226/237/226 207/217/207 227/238/227 +f 207/217/207 208/218/208 227/238/227 +f 227/238/227 208/218/208 228/239/228 +f 208/218/208 209/219/209 228/239/228 +f 228/239/228 209/219/209 229/240/229 +f 209/219/209 210/220/210 229/240/229 +f 229/240/229 210/220/210 230/241/230 +f 210/220/210 211/221/211 230/241/230 +f 230/241/230 211/221/211 231/242/231 +f 211/221/211 212/222/212 231/242/231 +f 231/242/231 212/222/212 232/243/232 +f 212/222/212 213/223/213 232/243/232 +f 232/243/232 213/223/213 233/244/233 +f 213/223/213 214/224/214 233/244/233 +f 233/244/233 214/224/214 234/245/234 +f 214/224/214 215/225/215 234/245/234 +f 234/245/234 215/225/215 235/246/235 +f 215/225/215 216/226/216 235/246/235 +f 235/246/235 216/226/216 236/247/236 +f 216/226/216 217/227/217 236/247/236 +f 236/247/236 217/227/217 237/248/237 +f 217/227/217 218/228/218 237/248/237 +f 237/248/237 218/228/218 238/249/238 +f 218/228/218 219/229/219 238/249/238 +f 238/249/238 219/229/219 239/250/239 +f 219/229/219 220/230/220 239/250/239 +f 239/250/239 220/230/220 240/251/240 +f 220/230/220 201/231/201 240/251/240 +f 240/251/240 201/231/201 221/252/221 +f 221/232/221 222/233/222 241/253/241 +f 241/253/241 222/233/222 242/254/242 +f 222/233/222 223/234/223 242/254/242 +f 242/254/242 223/234/223 243/255/243 +f 223/234/223 224/235/224 243/255/243 +f 243/255/243 224/235/224 244/256/244 +f 224/235/224 225/236/225 244/256/244 +f 244/256/244 225/236/225 245/257/245 +f 225/236/225 226/237/226 245/257/245 +f 245/257/245 226/237/226 246/258/246 +f 226/237/226 227/238/227 246/258/246 +f 246/258/246 227/238/227 247/259/247 +f 227/238/227 228/239/228 247/259/247 +f 247/259/247 228/239/228 248/260/248 +f 228/239/228 229/240/229 248/260/248 +f 248/260/248 229/240/229 249/261/249 +f 229/240/229 230/241/230 249/261/249 +f 249/261/249 230/241/230 250/262/250 +f 230/241/230 231/242/231 250/262/250 +f 250/262/250 231/242/231 251/263/251 +f 231/242/231 232/243/232 251/263/251 +f 251/263/251 232/243/232 252/264/252 +f 232/243/232 233/244/233 252/264/252 +f 252/264/252 233/244/233 253/265/253 +f 233/244/233 234/245/234 253/265/253 +f 253/265/253 234/245/234 254/266/254 +f 234/245/234 235/246/235 254/266/254 +f 254/266/254 235/246/235 255/267/255 +f 235/246/235 236/247/236 255/267/255 +f 255/267/255 236/247/236 256/268/256 +f 236/247/236 237/248/237 256/268/256 +f 256/268/256 237/248/237 257/269/257 +f 237/248/237 238/249/238 257/269/257 +f 257/269/257 238/249/238 258/270/258 +f 238/249/238 239/250/239 258/270/258 +f 258/270/258 239/250/239 259/271/259 +f 239/250/239 240/251/240 259/271/259 +f 259/271/259 240/251/240 260/272/260 +f 240/251/240 221/252/221 260/272/260 +f 260/272/260 221/252/221 241/273/241 +f 241/253/241 242/254/242 261/274/261 +f 261/274/261 242/254/242 262/275/262 +f 242/254/242 243/255/243 262/275/262 +f 262/275/262 243/255/243 263/276/263 +f 243/255/243 244/256/244 263/276/263 +f 263/276/263 244/256/244 264/277/264 +f 244/256/244 245/257/245 264/277/264 +f 264/277/264 245/257/245 265/278/265 +f 245/257/245 246/258/246 265/278/265 +f 265/278/265 246/258/246 266/279/266 +f 246/258/246 247/259/247 266/279/266 +f 266/279/266 247/259/247 267/280/267 +f 247/259/247 248/260/248 267/280/267 +f 267/280/267 248/260/248 268/281/268 +f 248/260/248 249/261/249 268/281/268 +f 268/281/268 249/261/249 269/282/269 +f 249/261/249 250/262/250 269/282/269 +f 269/282/269 250/262/250 270/283/270 +f 250/262/250 251/263/251 270/283/270 +f 270/283/270 251/263/251 271/284/271 +f 251/263/251 252/264/252 271/284/271 +f 271/284/271 252/264/252 272/285/272 +f 252/264/252 253/265/253 272/285/272 +f 272/285/272 253/265/253 273/286/273 +f 253/265/253 254/266/254 273/286/273 +f 273/286/273 254/266/254 274/287/274 +f 254/266/254 255/267/255 274/287/274 +f 274/287/274 255/267/255 275/288/275 +f 255/267/255 256/268/256 275/288/275 +f 275/288/275 256/268/256 276/289/276 +f 256/268/256 257/269/257 276/289/276 +f 276/289/276 257/269/257 277/290/277 +f 257/269/257 258/270/258 277/290/277 +f 277/290/277 258/270/258 278/291/278 +f 258/270/258 259/271/259 278/291/278 +f 278/291/278 259/271/259 279/292/279 +f 259/271/259 260/272/260 279/292/279 +f 279/292/279 260/272/260 280/293/280 +f 260/272/260 241/273/241 280/293/280 +f 280/293/280 241/273/241 261/294/261 +f 261/274/261 262/275/262 281/295/281 +f 281/295/281 262/275/262 282/296/282 +f 262/275/262 263/276/263 282/296/282 +f 282/296/282 263/276/263 283/297/283 +f 263/276/263 264/277/264 283/297/283 +f 283/297/283 264/277/264 284/298/284 +f 264/277/264 265/278/265 284/298/284 +f 284/298/284 265/278/265 285/299/285 +f 265/278/265 266/279/266 285/299/285 +f 285/299/285 266/279/266 286/300/286 +f 266/279/266 267/280/267 286/300/286 +f 286/300/286 267/280/267 287/301/287 +f 267/280/267 268/281/268 287/301/287 +f 287/301/287 268/281/268 288/302/288 +f 268/281/268 269/282/269 288/302/288 +f 288/302/288 269/282/269 289/303/289 +f 269/282/269 270/283/270 289/303/289 +f 289/303/289 270/283/270 290/304/290 +f 270/283/270 271/284/271 290/304/290 +f 290/304/290 271/284/271 291/305/291 +f 271/284/271 272/285/272 291/305/291 +f 291/305/291 272/285/272 292/306/292 +f 272/285/272 273/286/273 292/306/292 +f 292/306/292 273/286/273 293/307/293 +f 273/286/273 274/287/274 293/307/293 +f 293/307/293 274/287/274 294/308/294 +f 274/287/274 275/288/275 294/308/294 +f 294/308/294 275/288/275 295/309/295 +f 275/288/275 276/289/276 295/309/295 +f 295/309/295 276/289/276 296/310/296 +f 276/289/276 277/290/277 296/310/296 +f 296/310/296 277/290/277 297/311/297 +f 277/290/277 278/291/278 297/311/297 +f 297/311/297 278/291/278 298/312/298 +f 278/291/278 279/292/279 298/312/298 +f 298/312/298 279/292/279 299/313/299 +f 279/292/279 280/293/280 299/313/299 +f 299/313/299 280/293/280 300/314/300 +f 280/293/280 261/294/261 300/314/300 +f 300/314/300 261/294/261 281/315/281 +f 281/295/281 282/296/282 301/316/301 +f 301/316/301 282/296/282 302/317/302 +f 282/296/282 283/297/283 302/317/302 +f 302/317/302 283/297/283 303/318/303 +f 283/297/283 284/298/284 303/318/303 +f 303/318/303 284/298/284 304/319/304 +f 284/298/284 285/299/285 304/319/304 +f 304/319/304 285/299/285 305/320/305 +f 285/299/285 286/300/286 305/320/305 +f 305/320/305 286/300/286 306/321/306 +f 286/300/286 287/301/287 306/321/306 +f 306/321/306 287/301/287 307/322/307 +f 287/301/287 288/302/288 307/322/307 +f 307/322/307 288/302/288 308/323/308 +f 288/302/288 289/303/289 308/323/308 +f 308/323/308 289/303/289 309/324/309 +f 289/303/289 290/304/290 309/324/309 +f 309/324/309 290/304/290 310/325/310 +f 290/304/290 291/305/291 310/325/310 +f 310/325/310 291/305/291 311/326/311 +f 291/305/291 292/306/292 311/326/311 +f 311/326/311 292/306/292 312/327/312 +f 292/306/292 293/307/293 312/327/312 +f 312/327/312 293/307/293 313/328/313 +f 293/307/293 294/308/294 313/328/313 +f 313/328/313 294/308/294 314/329/314 +f 294/308/294 295/309/295 314/329/314 +f 314/329/314 295/309/295 315/330/315 +f 295/309/295 296/310/296 315/330/315 +f 315/330/315 296/310/296 316/331/316 +f 296/310/296 297/311/297 316/331/316 +f 316/331/316 297/311/297 317/332/317 +f 297/311/297 298/312/298 317/332/317 +f 317/332/317 298/312/298 318/333/318 +f 298/312/298 299/313/299 318/333/318 +f 318/333/318 299/313/299 319/334/319 +f 299/313/299 300/314/300 319/334/319 +f 319/334/319 300/314/300 320/335/320 +f 300/314/300 281/315/281 320/335/320 +f 320/335/320 281/315/281 301/336/301 +f 301/316/301 302/317/302 321/337/321 +f 321/337/321 302/317/302 322/338/322 +f 302/317/302 303/318/303 322/338/322 +f 322/338/322 303/318/303 323/339/323 +f 303/318/303 304/319/304 323/339/323 +f 323/339/323 304/319/304 324/340/324 +f 304/319/304 305/320/305 324/340/324 +f 324/340/324 305/320/305 325/341/325 +f 305/320/305 306/321/306 325/341/325 +f 325/341/325 306/321/306 326/342/326 +f 306/321/306 307/322/307 326/342/326 +f 326/342/326 307/322/307 327/343/327 +f 307/322/307 308/323/308 327/343/327 +f 327/343/327 308/323/308 328/344/328 +f 308/323/308 309/324/309 328/344/328 +f 328/344/328 309/324/309 329/345/329 +f 309/324/309 310/325/310 329/345/329 +f 329/345/329 310/325/310 330/346/330 +f 310/325/310 311/326/311 330/346/330 +f 330/346/330 311/326/311 331/347/331 +f 311/326/311 312/327/312 331/347/331 +f 331/347/331 312/327/312 332/348/332 +f 312/327/312 313/328/313 332/348/332 +f 332/348/332 313/328/313 333/349/333 +f 313/328/313 314/329/314 333/349/333 +f 333/349/333 314/329/314 334/350/334 +f 314/329/314 315/330/315 334/350/334 +f 334/350/334 315/330/315 335/351/335 +f 315/330/315 316/331/316 335/351/335 +f 335/351/335 316/331/316 336/352/336 +f 316/331/316 317/332/317 336/352/336 +f 336/352/336 317/332/317 337/353/337 +f 317/332/317 318/333/318 337/353/337 +f 337/353/337 318/333/318 338/354/338 +f 318/333/318 319/334/319 338/354/338 +f 338/354/338 319/334/319 339/355/339 +f 319/334/319 320/335/320 339/355/339 +f 339/355/339 320/335/320 340/356/340 +f 320/335/320 301/336/301 340/356/340 +f 340/356/340 301/336/301 321/357/321 +f 321/337/321 322/338/322 341/358/341 +f 341/358/341 322/338/322 342/359/342 +f 322/338/322 323/339/323 342/359/342 +f 342/359/342 323/339/323 343/360/343 +f 323/339/323 324/340/324 343/360/343 +f 343/360/343 324/340/324 344/361/344 +f 324/340/324 325/341/325 344/361/344 +f 344/361/344 325/341/325 345/362/345 +f 325/341/325 326/342/326 345/362/345 +f 345/362/345 326/342/326 346/363/346 +f 326/342/326 327/343/327 346/363/346 +f 346/363/346 327/343/327 347/364/347 +f 327/343/327 328/344/328 347/364/347 +f 347/364/347 328/344/328 348/365/348 +f 328/344/328 329/345/329 348/365/348 +f 348/365/348 329/345/329 349/366/349 +f 329/345/329 330/346/330 349/366/349 +f 349/366/349 330/346/330 350/367/350 +f 330/346/330 331/347/331 350/367/350 +f 350/367/350 331/347/331 351/368/351 +f 331/347/331 332/348/332 351/368/351 +f 351/368/351 332/348/332 352/369/352 +f 332/348/332 333/349/333 352/369/352 +f 352/369/352 333/349/333 353/370/353 +f 333/349/333 334/350/334 353/370/353 +f 353/370/353 334/350/334 354/371/354 +f 334/350/334 335/351/335 354/371/354 +f 354/371/354 335/351/335 355/372/355 +f 335/351/335 336/352/336 355/372/355 +f 355/372/355 336/352/336 356/373/356 +f 336/352/336 337/353/337 356/373/356 +f 356/373/356 337/353/337 357/374/357 +f 337/353/337 338/354/338 357/374/357 +f 357/374/357 338/354/338 358/375/358 +f 338/354/338 339/355/339 358/375/358 +f 358/375/358 339/355/339 359/376/359 +f 339/355/339 340/356/340 359/376/359 +f 359/376/359 340/356/340 360/377/360 +f 340/356/340 321/357/321 360/377/360 +f 360/377/360 321/357/321 341/378/341 +f 341/358/341 342/359/342 361/379/361 +f 361/379/361 342/359/342 362/380/362 +f 342/359/342 343/360/343 362/380/362 +f 362/380/362 343/360/343 363/381/363 +f 343/360/343 344/361/344 363/381/363 +f 363/381/363 344/361/344 364/382/364 +f 344/361/344 345/362/345 364/382/364 +f 364/382/364 345/362/345 365/383/365 +f 345/362/345 346/363/346 365/383/365 +f 365/383/365 346/363/346 366/384/366 +f 346/363/346 347/364/347 366/384/366 +f 366/384/366 347/364/347 367/385/367 +f 347/364/347 348/365/348 367/385/367 +f 367/385/367 348/365/348 368/386/368 +f 348/365/348 349/366/349 368/386/368 +f 368/386/368 349/366/349 369/387/369 +f 349/366/349 350/367/350 369/387/369 +f 369/387/369 350/367/350 370/388/370 +f 350/367/350 351/368/351 370/388/370 +f 370/388/370 351/368/351 371/389/371 +f 351/368/351 352/369/352 371/389/371 +f 371/389/371 352/369/352 372/390/372 +f 352/369/352 353/370/353 372/390/372 +f 372/390/372 353/370/353 373/391/373 +f 353/370/353 354/371/354 373/391/373 +f 373/391/373 354/371/354 374/392/374 +f 354/371/354 355/372/355 374/392/374 +f 374/392/374 355/372/355 375/393/375 +f 355/372/355 356/373/356 375/393/375 +f 375/393/375 356/373/356 376/394/376 +f 356/373/356 357/374/357 376/394/376 +f 376/394/376 357/374/357 377/395/377 +f 357/374/357 358/375/358 377/395/377 +f 377/395/377 358/375/358 378/396/378 +f 358/375/358 359/376/359 378/396/378 +f 378/396/378 359/376/359 379/397/379 +f 359/376/359 360/377/360 379/397/379 +f 379/397/379 360/377/360 380/398/380 +f 360/377/360 341/378/341 380/398/380 +f 380/398/380 341/378/341 361/399/361 +f 2/2/2 1/1/1 381/400/381 +f 3/3/5 2/2/2 381/401/381 +f 4/4/7 3/3/5 381/402/381 +f 5/5/9 4/4/7 381/403/381 +f 6/6/11 5/5/9 381/404/381 +f 7/7/13 6/6/11 381/405/381 +f 8/8/15 7/7/13 381/406/381 +f 9/9/17 8/8/15 381/407/381 +f 10/10/19 9/9/17 381/408/381 +f 11/11/21 10/10/19 381/409/381 +f 12/12/23 11/11/21 381/410/381 +f 13/13/25 12/12/23 381/411/381 +f 14/14/27 13/13/25 381/412/381 +f 15/15/29 14/14/27 381/413/381 +f 16/16/31 15/15/29 381/414/381 +f 17/17/33 16/16/31 381/415/381 +f 18/18/35 17/17/33 381/416/381 +f 19/19/37 18/18/35 381/417/381 +f 20/20/39 19/19/37 381/418/381 +f 1/21/1 20/20/39 381/419/381 +f 361/379/361 362/380/362 382/420/382 +f 362/380/362 363/381/363 382/421/382 +f 363/381/363 364/382/364 382/422/382 +f 364/382/364 365/383/365 382/423/382 +f 365/383/365 366/384/366 382/424/382 +f 366/384/366 367/385/367 382/425/382 +f 367/385/367 368/386/368 382/426/382 +f 368/386/368 369/387/369 382/427/382 +f 369/387/369 370/388/370 382/428/382 +f 370/388/370 371/389/371 382/429/382 +f 371/389/371 372/390/372 382/430/382 +f 372/390/372 373/391/373 382/431/382 +f 373/391/373 374/392/374 382/432/382 +f 374/392/374 375/393/375 382/433/382 +f 375/393/375 376/394/376 382/434/382 +f 376/394/376 377/395/377 382/435/382 +f 377/395/377 378/396/378 382/436/382 +f 378/396/378 379/397/379 382/437/382 +f 379/397/379 380/398/380 382/438/382 +f 380/398/380 361/399/361 382/439/382 diff --git a/Sandbox/res/SphereHighPoly.obj b/Sandbox/res/SphereHighPoly.obj new file mode 100644 index 00000000..87f6ac4c --- /dev/null +++ b/Sandbox/res/SphereHighPoly.obj @@ -0,0 +1,49805 @@ +# This file uses centimeters as units for non-parametric coordinates. + +v 0.074986 -2.390828 -0.004718 +v 0.074542 -2.390828 -0.009417 +v 0.073804 -2.390828 -0.014079 +v 0.072774 -2.390828 -0.018685 +v 0.071457 -2.390828 -0.023218 +v 0.069859 -2.390828 -0.027659 +v 0.067984 -2.390828 -0.031991 +v 0.065841 -2.390828 -0.036196 +v 0.063438 -2.390828 -0.040259 +v 0.060785 -2.390828 -0.044163 +v 0.057892 -2.390828 -0.047893 +v 0.054771 -2.390828 -0.051433 +v 0.051433 -2.390828 -0.054771 +v 0.047893 -2.390828 -0.057892 +v 0.044163 -2.390828 -0.060785 +v 0.040259 -2.390828 -0.063438 +v 0.036196 -2.390828 -0.065841 +v 0.031991 -2.390828 -0.067984 +v 0.027659 -2.390828 -0.069859 +v 0.023218 -2.390828 -0.071457 +v 0.018685 -2.390828 -0.072774 +v 0.014079 -2.390828 -0.073804 +v 0.009417 -2.390828 -0.074542 +v 0.004718 -2.390828 -0.074986 +v 0.000000 -2.390828 -0.075135 +v -0.004718 -2.390828 -0.074986 +v -0.009417 -2.390828 -0.074542 +v -0.014079 -2.390828 -0.073804 +v -0.018685 -2.390828 -0.072774 +v -0.023218 -2.390828 -0.071457 +v -0.027659 -2.390828 -0.069859 +v -0.031991 -2.390828 -0.067984 +v -0.036196 -2.390828 -0.065841 +v -0.040259 -2.390828 -0.063438 +v -0.044163 -2.390828 -0.060785 +v -0.047893 -2.390828 -0.057892 +v -0.051433 -2.390828 -0.054771 +v -0.054771 -2.390828 -0.051433 +v -0.057892 -2.390828 -0.047893 +v -0.060785 -2.390828 -0.044163 +v -0.063438 -2.390828 -0.040259 +v -0.065841 -2.390828 -0.036196 +v -0.067984 -2.390828 -0.031991 +v -0.069859 -2.390828 -0.027659 +v -0.071457 -2.390828 -0.023218 +v -0.072774 -2.390828 -0.018685 +v -0.073804 -2.390828 -0.014079 +v -0.074542 -2.390828 -0.009417 +v -0.074986 -2.390828 -0.004718 +v -0.075135 -2.390828 0.000000 +v -0.074986 -2.390828 0.004718 +v -0.074542 -2.390828 0.009417 +v -0.073804 -2.390828 0.014079 +v -0.072774 -2.390828 0.018685 +v -0.071457 -2.390828 0.023218 +v -0.069859 -2.390828 0.027659 +v -0.067984 -2.390828 0.031991 +v -0.065841 -2.390828 0.036196 +v -0.063438 -2.390828 0.040259 +v -0.060785 -2.390828 0.044163 +v -0.057892 -2.390828 0.047893 +v -0.054771 -2.390828 0.051433 +v -0.051433 -2.390828 0.054771 +v -0.047893 -2.390828 0.057892 +v -0.044163 -2.390828 0.060785 +v -0.040259 -2.390828 0.063438 +v -0.036196 -2.390828 0.065841 +v -0.031991 -2.390828 0.067984 +v -0.027659 -2.390828 0.069859 +v -0.023218 -2.390828 0.071457 +v -0.018685 -2.390828 0.072774 +v -0.014079 -2.390828 0.073804 +v -0.009417 -2.390828 0.074542 +v -0.004718 -2.390828 0.074987 +v 0.000000 -2.390828 0.075135 +v 0.004718 -2.390828 0.074987 +v 0.009417 -2.390828 0.074542 +v 0.014079 -2.390828 0.073804 +v 0.018685 -2.390828 0.072774 +v 0.023218 -2.390828 0.071457 +v 0.027659 -2.390828 0.069859 +v 0.031991 -2.390828 0.067984 +v 0.036196 -2.390828 0.065841 +v 0.040259 -2.390828 0.063438 +v 0.044163 -2.390828 0.060785 +v 0.047893 -2.390828 0.057892 +v 0.051433 -2.390828 0.054771 +v 0.054771 -2.390828 0.051433 +v 0.057892 -2.390828 0.047893 +v 0.060785 -2.390828 0.044163 +v 0.063438 -2.390828 0.040259 +v 0.065841 -2.390828 0.036196 +v 0.067984 -2.390828 0.031991 +v 0.069859 -2.390828 0.027659 +v 0.071457 -2.390828 0.023218 +v 0.072774 -2.390828 0.018685 +v 0.073804 -2.390828 0.014079 +v 0.074542 -2.390828 0.009417 +v 0.074987 -2.390828 0.004718 +v 0.075135 -2.390828 0.000000 +v 0.149899 -2.387288 -0.009431 +v 0.149011 -2.387288 -0.018824 +v 0.147535 -2.387288 -0.028144 +v 0.145477 -2.387288 -0.037352 +v 0.142844 -2.387288 -0.046413 +v 0.139648 -2.387288 -0.055291 +v 0.135901 -2.387288 -0.063950 +v 0.131617 -2.387288 -0.072357 +v 0.126814 -2.387288 -0.080479 +v 0.121511 -2.387288 -0.088283 +v 0.115728 -2.387288 -0.095738 +v 0.109488 -2.387288 -0.102816 +v 0.102816 -2.387288 -0.109488 +v 0.095738 -2.387288 -0.115728 +v 0.088283 -2.387288 -0.121511 +v 0.080479 -2.387288 -0.126814 +v 0.072357 -2.387288 -0.131617 +v 0.063950 -2.387288 -0.135901 +v 0.055291 -2.387288 -0.139648 +v 0.046413 -2.387288 -0.142844 +v 0.037352 -2.387288 -0.145477 +v 0.028144 -2.387288 -0.147535 +v 0.018824 -2.387288 -0.149011 +v 0.009431 -2.387288 -0.149899 +v 0.000000 -2.387288 -0.150195 +v -0.009431 -2.387288 -0.149899 +v -0.018824 -2.387288 -0.149011 +v -0.028144 -2.387288 -0.147535 +v -0.037352 -2.387288 -0.145477 +v -0.046413 -2.387288 -0.142844 +v -0.055291 -2.387288 -0.139648 +v -0.063950 -2.387288 -0.135901 +v -0.072357 -2.387288 -0.131617 +v -0.080479 -2.387288 -0.126814 +v -0.088283 -2.387288 -0.121511 +v -0.095738 -2.387288 -0.115728 +v -0.102816 -2.387288 -0.109488 +v -0.109488 -2.387288 -0.102816 +v -0.115728 -2.387288 -0.095738 +v -0.121511 -2.387288 -0.088283 +v -0.126814 -2.387288 -0.080479 +v -0.131617 -2.387288 -0.072357 +v -0.135901 -2.387288 -0.063950 +v -0.139648 -2.387288 -0.055291 +v -0.142844 -2.387288 -0.046413 +v -0.145477 -2.387288 -0.037352 +v -0.147535 -2.387288 -0.028144 +v -0.149011 -2.387288 -0.018824 +v -0.149899 -2.387288 -0.009431 +v -0.150195 -2.387288 0.000000 +v -0.149899 -2.387288 0.009431 +v -0.149011 -2.387288 0.018824 +v -0.147535 -2.387288 0.028144 +v -0.145477 -2.387288 0.037352 +v -0.142844 -2.387288 0.046413 +v -0.139648 -2.387288 0.055291 +v -0.135901 -2.387288 0.063950 +v -0.131617 -2.387288 0.072357 +v -0.126814 -2.387288 0.080479 +v -0.121511 -2.387288 0.088283 +v -0.115728 -2.387288 0.095738 +v -0.109488 -2.387288 0.102816 +v -0.102816 -2.387288 0.109488 +v -0.095738 -2.387288 0.115728 +v -0.088283 -2.387288 0.121511 +v -0.080479 -2.387288 0.126814 +v -0.072357 -2.387288 0.131617 +v -0.063950 -2.387288 0.135901 +v -0.055291 -2.387288 0.139648 +v -0.046413 -2.387288 0.142844 +v -0.037352 -2.387288 0.145477 +v -0.028144 -2.387288 0.147535 +v -0.018824 -2.387288 0.149011 +v -0.009431 -2.387288 0.149899 +v 0.000000 -2.387288 0.150195 +v 0.009431 -2.387288 0.149899 +v 0.018824 -2.387288 0.149011 +v 0.028144 -2.387288 0.147535 +v 0.037352 -2.387288 0.145477 +v 0.046413 -2.387288 0.142844 +v 0.055291 -2.387288 0.139648 +v 0.063950 -2.387288 0.135901 +v 0.072357 -2.387288 0.131617 +v 0.080479 -2.387288 0.126814 +v 0.088283 -2.387288 0.121511 +v 0.095738 -2.387288 0.115728 +v 0.102816 -2.387288 0.109488 +v 0.109488 -2.387288 0.102816 +v 0.115728 -2.387288 0.095738 +v 0.121511 -2.387288 0.088283 +v 0.126814 -2.387288 0.080479 +v 0.131617 -2.387288 0.072357 +v 0.135901 -2.387288 0.063950 +v 0.139648 -2.387288 0.055291 +v 0.142844 -2.387288 0.046413 +v 0.145477 -2.387288 0.037352 +v 0.147535 -2.387288 0.028144 +v 0.149011 -2.387288 0.018824 +v 0.149899 -2.387288 0.009431 +v 0.150195 -2.387288 0.000000 +v 0.224664 -2.381392 -0.014135 +v 0.223333 -2.381392 -0.028213 +v 0.221120 -2.381392 -0.042181 +v 0.218036 -2.381392 -0.055982 +v 0.214090 -2.381392 -0.069562 +v 0.209300 -2.381392 -0.082868 +v 0.203684 -2.381392 -0.095846 +v 0.197263 -2.381392 -0.108446 +v 0.190065 -2.381392 -0.120619 +v 0.182116 -2.381392 -0.132315 +v 0.173449 -2.381392 -0.143489 +v 0.164096 -2.381392 -0.154097 +v 0.154097 -2.381392 -0.164096 +v 0.143489 -2.381392 -0.173449 +v 0.132315 -2.381392 -0.182116 +v 0.120619 -2.381392 -0.190065 +v 0.108447 -2.381392 -0.197263 +v 0.095846 -2.381392 -0.203684 +v 0.082868 -2.381392 -0.209300 +v 0.069562 -2.381392 -0.214090 +v 0.055982 -2.381392 -0.218036 +v 0.042181 -2.381392 -0.221120 +v 0.028213 -2.381392 -0.223333 +v 0.014135 -2.381392 -0.224664 +v 0.000000 -2.381392 -0.225108 +v -0.014135 -2.381392 -0.224664 +v -0.028213 -2.381392 -0.223333 +v -0.042181 -2.381392 -0.221120 +v -0.055982 -2.381392 -0.218036 +v -0.069562 -2.381392 -0.214090 +v -0.082868 -2.381392 -0.209300 +v -0.095846 -2.381392 -0.203684 +v -0.108446 -2.381392 -0.197263 +v -0.120619 -2.381392 -0.190065 +v -0.132315 -2.381392 -0.182116 +v -0.143489 -2.381392 -0.173449 +v -0.154097 -2.381392 -0.164096 +v -0.164096 -2.381392 -0.154097 +v -0.173449 -2.381392 -0.143489 +v -0.182116 -2.381392 -0.132315 +v -0.190065 -2.381392 -0.120619 +v -0.197263 -2.381392 -0.108446 +v -0.203684 -2.381392 -0.095846 +v -0.209300 -2.381392 -0.082868 +v -0.214090 -2.381392 -0.069562 +v -0.218036 -2.381392 -0.055982 +v -0.221121 -2.381392 -0.042181 +v -0.223333 -2.381392 -0.028213 +v -0.224664 -2.381392 -0.014135 +v -0.225108 -2.381392 0.000000 +v -0.224664 -2.381392 0.014135 +v -0.223333 -2.381392 0.028214 +v -0.221121 -2.381392 0.042181 +v -0.218036 -2.381392 0.055982 +v -0.214090 -2.381392 0.069562 +v -0.209300 -2.381392 0.082868 +v -0.203684 -2.381392 0.095846 +v -0.197263 -2.381392 0.108447 +v -0.190065 -2.381392 0.120619 +v -0.182116 -2.381392 0.132315 +v -0.173449 -2.381392 0.143489 +v -0.164097 -2.381392 0.154097 +v -0.154097 -2.381392 0.164097 +v -0.143489 -2.381392 0.173449 +v -0.132315 -2.381392 0.182116 +v -0.120619 -2.381392 0.190065 +v -0.108447 -2.381392 0.197263 +v -0.095846 -2.381392 0.203684 +v -0.082868 -2.381392 0.209300 +v -0.069562 -2.381392 0.214090 +v -0.055982 -2.381392 0.218036 +v -0.042181 -2.381392 0.221121 +v -0.028213 -2.381392 0.223333 +v -0.014135 -2.381392 0.224664 +v 0.000000 -2.381392 0.225108 +v 0.014135 -2.381392 0.224664 +v 0.028214 -2.381392 0.223333 +v 0.042181 -2.381392 0.221121 +v 0.055982 -2.381392 0.218036 +v 0.069562 -2.381392 0.214090 +v 0.082868 -2.381392 0.209300 +v 0.095846 -2.381392 0.203684 +v 0.108447 -2.381392 0.197264 +v 0.120619 -2.381392 0.190065 +v 0.132315 -2.381392 0.182116 +v 0.143489 -2.381392 0.173449 +v 0.154097 -2.381392 0.164097 +v 0.164097 -2.381392 0.154097 +v 0.173449 -2.381392 0.143489 +v 0.182116 -2.381392 0.132315 +v 0.190065 -2.381392 0.120619 +v 0.197264 -2.381392 0.108447 +v 0.203684 -2.381392 0.095846 +v 0.209300 -2.381392 0.082868 +v 0.214090 -2.381392 0.069562 +v 0.218036 -2.381392 0.055982 +v 0.221121 -2.381392 0.042181 +v 0.223333 -2.381392 0.028213 +v 0.224664 -2.381392 0.014135 +v 0.225108 -2.381392 0.000000 +v 0.299206 -2.373146 -0.018824 +v 0.297434 -2.373146 -0.037575 +v 0.294488 -2.373146 -0.056177 +v 0.290379 -2.373146 -0.074557 +v 0.285125 -2.373146 -0.092643 +v 0.278745 -2.373146 -0.110363 +v 0.271265 -2.373146 -0.127648 +v 0.262715 -2.373146 -0.144429 +v 0.253128 -2.373146 -0.160640 +v 0.242542 -2.373146 -0.176217 +v 0.230998 -2.373146 -0.191098 +v 0.218543 -2.373146 -0.205226 +v 0.205226 -2.373146 -0.218543 +v 0.191098 -2.373146 -0.230998 +v 0.176217 -2.373146 -0.242542 +v 0.160640 -2.373146 -0.253128 +v 0.144429 -2.373146 -0.262715 +v 0.127648 -2.373146 -0.271265 +v 0.110363 -2.373146 -0.278745 +v 0.092643 -2.373146 -0.285125 +v 0.074557 -2.373146 -0.290379 +v 0.056177 -2.373146 -0.294488 +v 0.037575 -2.373146 -0.297434 +v 0.018824 -2.373146 -0.299206 +v 0.000000 -2.373146 -0.299798 +v -0.018824 -2.373146 -0.299206 +v -0.037575 -2.373146 -0.297434 +v -0.056177 -2.373146 -0.294488 +v -0.074557 -2.373146 -0.290379 +v -0.092643 -2.373146 -0.285125 +v -0.110363 -2.373146 -0.278745 +v -0.127648 -2.373146 -0.271265 +v -0.144429 -2.373146 -0.262715 +v -0.160640 -2.373146 -0.253128 +v -0.176217 -2.373146 -0.242542 +v -0.191098 -2.373146 -0.230998 +v -0.205226 -2.373146 -0.218543 +v -0.218543 -2.373146 -0.205226 +v -0.230998 -2.373146 -0.191098 +v -0.242542 -2.373146 -0.176217 +v -0.253128 -2.373146 -0.160640 +v -0.262715 -2.373146 -0.144429 +v -0.271265 -2.373146 -0.127648 +v -0.278745 -2.373146 -0.110363 +v -0.285125 -2.373146 -0.092643 +v -0.290379 -2.373146 -0.074557 +v -0.294488 -2.373146 -0.056177 +v -0.297434 -2.373146 -0.037575 +v -0.299206 -2.373146 -0.018824 +v -0.299798 -2.373146 0.000000 +v -0.299206 -2.373146 0.018824 +v -0.297434 -2.373146 0.037575 +v -0.294488 -2.373146 0.056177 +v -0.290379 -2.373146 0.074557 +v -0.285125 -2.373146 0.092643 +v -0.278745 -2.373146 0.110363 +v -0.271265 -2.373146 0.127648 +v -0.262715 -2.373146 0.144429 +v -0.253128 -2.373146 0.160640 +v -0.242542 -2.373146 0.176217 +v -0.230998 -2.373146 0.191098 +v -0.218543 -2.373146 0.205226 +v -0.205226 -2.373146 0.218543 +v -0.191098 -2.373146 0.230998 +v -0.176217 -2.373146 0.242542 +v -0.160640 -2.373146 0.253128 +v -0.144429 -2.373146 0.262715 +v -0.127648 -2.373146 0.271265 +v -0.110363 -2.373146 0.278745 +v -0.092643 -2.373146 0.285125 +v -0.074557 -2.373146 0.290379 +v -0.056177 -2.373146 0.294488 +v -0.037575 -2.373146 0.297434 +v -0.018824 -2.373146 0.299206 +v 0.000000 -2.373146 0.299798 +v 0.018825 -2.373146 0.299206 +v 0.037575 -2.373146 0.297434 +v 0.056177 -2.373146 0.294488 +v 0.074557 -2.373146 0.290379 +v 0.092643 -2.373146 0.285125 +v 0.110363 -2.373146 0.278745 +v 0.127648 -2.373146 0.271265 +v 0.144429 -2.373146 0.262715 +v 0.160640 -2.373146 0.253128 +v 0.176217 -2.373146 0.242542 +v 0.191099 -2.373146 0.230998 +v 0.205226 -2.373146 0.218543 +v 0.218543 -2.373146 0.205226 +v 0.230998 -2.373146 0.191098 +v 0.242542 -2.373146 0.176217 +v 0.253128 -2.373146 0.160640 +v 0.262715 -2.373146 0.144429 +v 0.271265 -2.373146 0.127648 +v 0.278745 -2.373146 0.110363 +v 0.285125 -2.373146 0.092643 +v 0.290379 -2.373146 0.074557 +v 0.294488 -2.373146 0.056177 +v 0.297434 -2.373146 0.037575 +v 0.299207 -2.373146 0.018824 +v 0.299798 -2.373146 0.000000 +v 0.373454 -2.362559 -0.023496 +v 0.371242 -2.362559 -0.046899 +v 0.367564 -2.362559 -0.070117 +v 0.362436 -2.362559 -0.093058 +v 0.355878 -2.362559 -0.115632 +v 0.347915 -2.362559 -0.137749 +v 0.338579 -2.362559 -0.159323 +v 0.327907 -2.362559 -0.180269 +v 0.315941 -2.362559 -0.200502 +v 0.302728 -2.362559 -0.219945 +v 0.288320 -2.362559 -0.238519 +v 0.272774 -2.362559 -0.256152 +v 0.256152 -2.362559 -0.272774 +v 0.238519 -2.362559 -0.288320 +v 0.219945 -2.362559 -0.302728 +v 0.200502 -2.362559 -0.315941 +v 0.180269 -2.362559 -0.327907 +v 0.159323 -2.362559 -0.338579 +v 0.137749 -2.362559 -0.347915 +v 0.115632 -2.362559 -0.355878 +v 0.093058 -2.362559 -0.362436 +v 0.070117 -2.362559 -0.367564 +v 0.046899 -2.362559 -0.371242 +v 0.023496 -2.362559 -0.373454 +v 0.000000 -2.362559 -0.374192 +v -0.023496 -2.362559 -0.373454 +v -0.046899 -2.362559 -0.371242 +v -0.070117 -2.362559 -0.367564 +v -0.093058 -2.362559 -0.362436 +v -0.115632 -2.362559 -0.355878 +v -0.137749 -2.362559 -0.347915 +v -0.159323 -2.362559 -0.338579 +v -0.180269 -2.362559 -0.327907 +v -0.200502 -2.362559 -0.315941 +v -0.219945 -2.362559 -0.302728 +v -0.238519 -2.362559 -0.288320 +v -0.256152 -2.362559 -0.272774 +v -0.272775 -2.362559 -0.256152 +v -0.288320 -2.362559 -0.238519 +v -0.302728 -2.362559 -0.219945 +v -0.315941 -2.362559 -0.200502 +v -0.327907 -2.362559 -0.180269 +v -0.338579 -2.362559 -0.159323 +v -0.347915 -2.362559 -0.137749 +v -0.355878 -2.362559 -0.115632 +v -0.362436 -2.362559 -0.093058 +v -0.367564 -2.362559 -0.070117 +v -0.371242 -2.362559 -0.046899 +v -0.373454 -2.362559 -0.023496 +v -0.374192 -2.362559 0.000000 +v -0.373454 -2.362559 0.023496 +v -0.371242 -2.362559 0.046899 +v -0.367564 -2.362559 0.070117 +v -0.362436 -2.362559 0.093058 +v -0.355878 -2.362559 0.115632 +v -0.347915 -2.362559 0.137749 +v -0.338579 -2.362559 0.159323 +v -0.327907 -2.362559 0.180269 +v -0.315941 -2.362559 0.200502 +v -0.302728 -2.362559 0.219945 +v -0.288320 -2.362559 0.238519 +v -0.272775 -2.362559 0.256152 +v -0.256152 -2.362559 0.272775 +v -0.238519 -2.362559 0.288320 +v -0.219945 -2.362559 0.302728 +v -0.200502 -2.362559 0.315941 +v -0.180269 -2.362559 0.327907 +v -0.159323 -2.362559 0.338579 +v -0.137749 -2.362559 0.347915 +v -0.115632 -2.362559 0.355878 +v -0.093058 -2.362559 0.362437 +v -0.070117 -2.362559 0.367564 +v -0.046899 -2.362559 0.371242 +v -0.023496 -2.362559 0.373454 +v 0.000000 -2.362559 0.374192 +v 0.023496 -2.362559 0.373454 +v 0.046899 -2.362559 0.371242 +v 0.070117 -2.362559 0.367565 +v 0.093058 -2.362559 0.362437 +v 0.115632 -2.362559 0.355878 +v 0.137749 -2.362559 0.347915 +v 0.159323 -2.362559 0.338579 +v 0.180269 -2.362559 0.327907 +v 0.200502 -2.362559 0.315941 +v 0.219945 -2.362559 0.302728 +v 0.238519 -2.362559 0.288320 +v 0.256152 -2.362559 0.272775 +v 0.272775 -2.362559 0.256152 +v 0.288320 -2.362559 0.238519 +v 0.302728 -2.362559 0.219945 +v 0.315941 -2.362559 0.200502 +v 0.327907 -2.362559 0.180269 +v 0.338579 -2.362559 0.159323 +v 0.347915 -2.362559 0.137749 +v 0.355878 -2.362559 0.115632 +v 0.362437 -2.362559 0.093058 +v 0.367565 -2.362559 0.070117 +v 0.371242 -2.362559 0.046899 +v 0.373454 -2.362559 0.023496 +v 0.374193 -2.362559 0.000000 +v 0.447333 -2.349639 -0.028144 +v 0.444683 -2.349639 -0.056177 +v 0.440278 -2.349639 -0.083988 +v 0.434136 -2.349639 -0.111467 +v 0.426280 -2.349639 -0.138507 +v 0.416742 -2.349639 -0.165000 +v 0.405559 -2.349639 -0.190842 +v 0.392776 -2.349639 -0.215930 +v 0.378442 -2.349639 -0.240167 +v 0.362615 -2.349639 -0.263456 +v 0.345357 -2.349639 -0.285704 +v 0.326736 -2.349639 -0.306826 +v 0.306826 -2.349639 -0.326736 +v 0.285705 -2.349639 -0.345357 +v 0.263456 -2.349639 -0.362615 +v 0.240167 -2.349639 -0.378442 +v 0.215930 -2.349639 -0.392776 +v 0.190842 -2.349639 -0.405559 +v 0.165000 -2.349639 -0.416742 +v 0.138507 -2.349639 -0.426280 +v 0.111467 -2.349639 -0.434136 +v 0.083988 -2.349639 -0.440278 +v 0.056177 -2.349639 -0.444683 +v 0.028144 -2.349639 -0.447333 +v 0.000000 -2.349639 -0.448217 +v -0.028144 -2.349639 -0.447333 +v -0.056177 -2.349639 -0.444683 +v -0.083988 -2.349639 -0.440278 +v -0.111467 -2.349639 -0.434136 +v -0.138507 -2.349639 -0.426280 +v -0.165000 -2.349639 -0.416742 +v -0.190842 -2.349639 -0.405559 +v -0.215930 -2.349639 -0.392776 +v -0.240167 -2.349639 -0.378442 +v -0.263456 -2.349639 -0.362615 +v -0.285705 -2.349639 -0.345357 +v -0.306826 -2.349639 -0.326736 +v -0.326736 -2.349639 -0.306826 +v -0.345357 -2.349639 -0.285705 +v -0.362616 -2.349639 -0.263456 +v -0.378442 -2.349639 -0.240167 +v -0.392776 -2.349639 -0.215930 +v -0.405559 -2.349639 -0.190842 +v -0.416742 -2.349639 -0.165000 +v -0.426280 -2.349639 -0.138507 +v -0.434136 -2.349639 -0.111467 +v -0.440278 -2.349639 -0.083988 +v -0.444683 -2.349639 -0.056177 +v -0.447333 -2.349639 -0.028144 +v -0.448217 -2.349639 0.000000 +v -0.447333 -2.349639 0.028144 +v -0.444683 -2.349639 0.056177 +v -0.440278 -2.349639 0.083988 +v -0.434136 -2.349639 0.111467 +v -0.426280 -2.349639 0.138507 +v -0.416742 -2.349639 0.165000 +v -0.405559 -2.349639 0.190842 +v -0.392776 -2.349639 0.215930 +v -0.378442 -2.349639 0.240167 +v -0.362616 -2.349639 0.263456 +v -0.345357 -2.349639 0.285705 +v -0.326736 -2.349639 0.306826 +v -0.306826 -2.349639 0.326737 +v -0.285705 -2.349639 0.345358 +v -0.263456 -2.349639 0.362616 +v -0.240167 -2.349639 0.378443 +v -0.215930 -2.349639 0.392776 +v -0.190842 -2.349639 0.405559 +v -0.165000 -2.349639 0.416742 +v -0.138507 -2.349639 0.426280 +v -0.111467 -2.349639 0.434136 +v -0.083988 -2.349639 0.440278 +v -0.056177 -2.349639 0.444683 +v -0.028144 -2.349639 0.447333 +v 0.000000 -2.349639 0.448218 +v 0.028144 -2.349639 0.447333 +v 0.056177 -2.349639 0.444683 +v 0.083988 -2.349639 0.440278 +v 0.111467 -2.349639 0.434136 +v 0.138507 -2.349639 0.426280 +v 0.165000 -2.349639 0.416742 +v 0.190842 -2.349639 0.405559 +v 0.215931 -2.349639 0.392776 +v 0.240167 -2.349639 0.378443 +v 0.263456 -2.349639 0.362616 +v 0.285705 -2.349639 0.345358 +v 0.306826 -2.349639 0.326736 +v 0.326737 -2.349639 0.306826 +v 0.345358 -2.349639 0.285705 +v 0.362616 -2.349639 0.263456 +v 0.378443 -2.349639 0.240167 +v 0.392776 -2.349639 0.215930 +v 0.405559 -2.349639 0.190842 +v 0.416742 -2.349639 0.165000 +v 0.426280 -2.349639 0.138507 +v 0.434136 -2.349639 0.111467 +v 0.440278 -2.349639 0.083988 +v 0.444683 -2.349639 0.056177 +v 0.447333 -2.349639 0.028144 +v 0.448218 -2.349639 0.000000 +v 0.520770 -2.334401 -0.032764 +v 0.517686 -2.334401 -0.065399 +v 0.512558 -2.334401 -0.097776 +v 0.505407 -2.334401 -0.129766 +v 0.496261 -2.334401 -0.161245 +v 0.485157 -2.334401 -0.192087 +v 0.472139 -2.334401 -0.222172 +v 0.457257 -2.334401 -0.251379 +v 0.440570 -2.334401 -0.279594 +v 0.422145 -2.334401 -0.306706 +v 0.402054 -2.334401 -0.332608 +v 0.380376 -2.334401 -0.357197 +v 0.357197 -2.334401 -0.380376 +v 0.332608 -2.334401 -0.402054 +v 0.306706 -2.334401 -0.422145 +v 0.279594 -2.334401 -0.440570 +v 0.251379 -2.334401 -0.457257 +v 0.222172 -2.334401 -0.472139 +v 0.192087 -2.334401 -0.485157 +v 0.161245 -2.334401 -0.496261 +v 0.129766 -2.334401 -0.505407 +v 0.097776 -2.334401 -0.512558 +v 0.065399 -2.334401 -0.517686 +v 0.032764 -2.334401 -0.520770 +v 0.000000 -2.334401 -0.521800 +v -0.032764 -2.334401 -0.520770 +v -0.065399 -2.334401 -0.517686 +v -0.097776 -2.334401 -0.512558 +v -0.129766 -2.334401 -0.505407 +v -0.161245 -2.334401 -0.496261 +v -0.192087 -2.334401 -0.485157 +v -0.222172 -2.334401 -0.472139 +v -0.251379 -2.334401 -0.457257 +v -0.279594 -2.334401 -0.440570 +v -0.306706 -2.334401 -0.422145 +v -0.332608 -2.334401 -0.402054 +v -0.357197 -2.334401 -0.380376 +v -0.380376 -2.334401 -0.357197 +v -0.402054 -2.334401 -0.332608 +v -0.422145 -2.334401 -0.306706 +v -0.440570 -2.334401 -0.279594 +v -0.457257 -2.334401 -0.251379 +v -0.472139 -2.334401 -0.222172 +v -0.485157 -2.334401 -0.192087 +v -0.496261 -2.334401 -0.161245 +v -0.505407 -2.334401 -0.129766 +v -0.512558 -2.334401 -0.097776 +v -0.517686 -2.334401 -0.065399 +v -0.520771 -2.334401 -0.032764 +v -0.521800 -2.334401 0.000000 +v -0.520771 -2.334401 0.032764 +v -0.517686 -2.334401 0.065399 +v -0.512558 -2.334401 0.097776 +v -0.505407 -2.334401 0.129766 +v -0.496262 -2.334401 0.161245 +v -0.485158 -2.334401 0.192088 +v -0.472139 -2.334401 0.222172 +v -0.457257 -2.334401 0.251379 +v -0.440570 -2.334401 0.279595 +v -0.422145 -2.334401 0.306707 +v -0.402054 -2.334401 0.332608 +v -0.380376 -2.334401 0.357197 +v -0.357197 -2.334401 0.380376 +v -0.332608 -2.334401 0.402054 +v -0.306706 -2.334401 0.422145 +v -0.279595 -2.334401 0.440571 +v -0.251379 -2.334401 0.457257 +v -0.222172 -2.334401 0.472139 +v -0.192087 -2.334401 0.485158 +v -0.161245 -2.334401 0.496262 +v -0.129766 -2.334401 0.505407 +v -0.097776 -2.334401 0.512558 +v -0.065399 -2.334401 0.517686 +v -0.032764 -2.334401 0.520771 +v 0.000000 -2.334401 0.521800 +v 0.032764 -2.334401 0.520771 +v 0.065399 -2.334401 0.517686 +v 0.097776 -2.334401 0.512558 +v 0.129767 -2.334401 0.505407 +v 0.161245 -2.334401 0.496262 +v 0.192088 -2.334401 0.485158 +v 0.222172 -2.334401 0.472139 +v 0.251379 -2.334401 0.457257 +v 0.279595 -2.334401 0.440571 +v 0.306707 -2.334401 0.422145 +v 0.332608 -2.334401 0.402054 +v 0.357197 -2.334401 0.380376 +v 0.380376 -2.334401 0.357197 +v 0.402054 -2.334401 0.332608 +v 0.422145 -2.334401 0.306707 +v 0.440571 -2.334401 0.279595 +v 0.457257 -2.334401 0.251379 +v 0.472139 -2.334401 0.222172 +v 0.485158 -2.334401 0.192088 +v 0.496262 -2.334401 0.161245 +v 0.505407 -2.334401 0.129766 +v 0.512558 -2.334401 0.097776 +v 0.517686 -2.334401 0.065399 +v 0.520771 -2.334401 0.032764 +v 0.521800 -2.334401 0.000000 +v 0.593694 -2.316859 -0.037352 +v 0.590177 -2.316859 -0.074557 +v 0.584331 -2.316859 -0.111467 +v 0.576179 -2.316859 -0.147938 +v 0.565753 -2.316859 -0.183824 +v 0.553094 -2.316859 -0.218985 +v 0.538253 -2.316859 -0.253282 +v 0.521287 -2.316859 -0.286580 +v 0.502264 -2.316859 -0.318746 +v 0.481258 -2.316859 -0.349655 +v 0.458354 -2.316859 -0.379183 +v 0.433640 -2.316859 -0.407215 +v 0.407215 -2.316859 -0.433640 +v 0.379183 -2.316859 -0.458354 +v 0.349655 -2.316859 -0.481258 +v 0.318746 -2.316859 -0.502264 +v 0.286580 -2.316859 -0.521287 +v 0.253282 -2.316859 -0.538253 +v 0.218986 -2.316859 -0.553094 +v 0.183824 -2.316859 -0.565753 +v 0.147938 -2.316859 -0.576179 +v 0.111467 -2.316859 -0.584331 +v 0.074557 -2.316859 -0.590177 +v 0.037352 -2.316859 -0.593694 +v 0.000000 -2.316859 -0.594868 +v -0.037352 -2.316859 -0.593694 +v -0.074557 -2.316859 -0.590177 +v -0.111467 -2.316859 -0.584331 +v -0.147938 -2.316859 -0.576179 +v -0.183824 -2.316859 -0.565753 +v -0.218985 -2.316859 -0.553094 +v -0.253282 -2.316859 -0.538253 +v -0.286580 -2.316859 -0.521287 +v -0.318746 -2.316859 -0.502264 +v -0.349655 -2.316859 -0.481258 +v -0.379183 -2.316859 -0.458354 +v -0.407215 -2.316859 -0.433640 +v -0.433640 -2.316859 -0.407215 +v -0.458354 -2.316859 -0.379183 +v -0.481258 -2.316859 -0.349655 +v -0.502264 -2.316859 -0.318746 +v -0.521287 -2.316859 -0.286580 +v -0.538253 -2.316859 -0.253282 +v -0.553094 -2.316859 -0.218985 +v -0.565753 -2.316859 -0.183824 +v -0.576179 -2.316859 -0.147938 +v -0.584331 -2.316859 -0.111467 +v -0.590177 -2.316859 -0.074557 +v -0.593694 -2.316859 -0.037352 +v -0.594868 -2.316859 0.000000 +v -0.593694 -2.316859 0.037352 +v -0.590177 -2.316859 0.074557 +v -0.584331 -2.316859 0.111467 +v -0.576179 -2.316859 0.147938 +v -0.565753 -2.316859 0.183824 +v -0.553094 -2.316859 0.218986 +v -0.538253 -2.316859 0.253283 +v -0.521287 -2.316859 0.286580 +v -0.502264 -2.316859 0.318746 +v -0.481258 -2.316859 0.349655 +v -0.458354 -2.316859 0.379183 +v -0.433640 -2.316859 0.407215 +v -0.407215 -2.316859 0.433640 +v -0.379183 -2.316859 0.458354 +v -0.349655 -2.316859 0.481258 +v -0.318746 -2.316859 0.502264 +v -0.286580 -2.316859 0.521287 +v -0.253282 -2.316859 0.538253 +v -0.218986 -2.316859 0.553094 +v -0.183824 -2.316859 0.565753 +v -0.147938 -2.316859 0.576179 +v -0.111467 -2.316859 0.584331 +v -0.074557 -2.316859 0.590177 +v -0.037352 -2.316859 0.593694 +v 0.000000 -2.316859 0.594868 +v 0.037352 -2.316859 0.593694 +v 0.074557 -2.316859 0.590177 +v 0.111467 -2.316859 0.584331 +v 0.147938 -2.316859 0.576179 +v 0.183824 -2.316859 0.565753 +v 0.218986 -2.316859 0.553094 +v 0.253283 -2.316859 0.538253 +v 0.286580 -2.316859 0.521287 +v 0.318746 -2.316859 0.502264 +v 0.349655 -2.316859 0.481258 +v 0.379183 -2.316859 0.458354 +v 0.407215 -2.316859 0.433640 +v 0.433640 -2.316859 0.407215 +v 0.458354 -2.316859 0.379183 +v 0.481259 -2.316859 0.349655 +v 0.502264 -2.316859 0.318746 +v 0.521287 -2.316859 0.286580 +v 0.538253 -2.316859 0.253283 +v 0.553094 -2.316859 0.218986 +v 0.565753 -2.316859 0.183824 +v 0.576179 -2.316859 0.147938 +v 0.584331 -2.316859 0.111467 +v 0.590177 -2.316859 0.074557 +v 0.593694 -2.316859 0.037352 +v 0.594868 -2.316859 0.000000 +v 0.666032 -2.297030 -0.041903 +v 0.662086 -2.297030 -0.083641 +v 0.655528 -2.297030 -0.125049 +v 0.646383 -2.297030 -0.165963 +v 0.634686 -2.297030 -0.206222 +v 0.620485 -2.297030 -0.245667 +v 0.603835 -2.297030 -0.284143 +v 0.584802 -2.297030 -0.321498 +v 0.563461 -2.297030 -0.357583 +v 0.539896 -2.297030 -0.392258 +v 0.514201 -2.297030 -0.425384 +v 0.486476 -2.297030 -0.456832 +v 0.456832 -2.297030 -0.486476 +v 0.425384 -2.297030 -0.514201 +v 0.392258 -2.297030 -0.539896 +v 0.357583 -2.297030 -0.563461 +v 0.321498 -2.297030 -0.584802 +v 0.284143 -2.297030 -0.603835 +v 0.245667 -2.297030 -0.620485 +v 0.206222 -2.297030 -0.634686 +v 0.165963 -2.297030 -0.646383 +v 0.125049 -2.297030 -0.655528 +v 0.083641 -2.297030 -0.662086 +v 0.041903 -2.297030 -0.666032 +v 0.000000 -2.297030 -0.667349 +v -0.041903 -2.297030 -0.666032 +v -0.083641 -2.297030 -0.662086 +v -0.125049 -2.297030 -0.655528 +v -0.165963 -2.297030 -0.646383 +v -0.206222 -2.297030 -0.634686 +v -0.245667 -2.297030 -0.620485 +v -0.284143 -2.297030 -0.603835 +v -0.321498 -2.297030 -0.584802 +v -0.357583 -2.297030 -0.563461 +v -0.392258 -2.297030 -0.539896 +v -0.425384 -2.297030 -0.514201 +v -0.456832 -2.297030 -0.486476 +v -0.486476 -2.297030 -0.456832 +v -0.514201 -2.297030 -0.425384 +v -0.539896 -2.297030 -0.392258 +v -0.563461 -2.297030 -0.357583 +v -0.584802 -2.297030 -0.321498 +v -0.603835 -2.297030 -0.284143 +v -0.620485 -2.297030 -0.245667 +v -0.634686 -2.297030 -0.206222 +v -0.646383 -2.297030 -0.165963 +v -0.655528 -2.297030 -0.125049 +v -0.662086 -2.297030 -0.083641 +v -0.666032 -2.297030 -0.041903 +v -0.667349 -2.297030 0.000000 +v -0.666032 -2.297030 0.041903 +v -0.662087 -2.297030 0.083641 +v -0.655528 -2.297030 0.125049 +v -0.646383 -2.297030 0.165963 +v -0.634686 -2.297030 0.206222 +v -0.620485 -2.297030 0.245668 +v -0.603835 -2.297030 0.284143 +v -0.584802 -2.297030 0.321498 +v -0.563461 -2.297030 0.357583 +v -0.539896 -2.297030 0.392258 +v -0.514201 -2.297030 0.425384 +v -0.486476 -2.297030 0.456832 +v -0.456832 -2.297030 0.486476 +v -0.425384 -2.297030 0.514201 +v -0.392258 -2.297030 0.539897 +v -0.357583 -2.297030 0.563461 +v -0.321498 -2.297030 0.584802 +v -0.284143 -2.297030 0.603835 +v -0.245667 -2.297030 0.620485 +v -0.206222 -2.297030 0.634687 +v -0.165963 -2.297030 0.646383 +v -0.125049 -2.297030 0.655528 +v -0.083641 -2.297030 0.662087 +v -0.041903 -2.297030 0.666032 +v 0.000000 -2.297030 0.667349 +v 0.041903 -2.297030 0.666032 +v 0.083641 -2.297030 0.662087 +v 0.125049 -2.297030 0.655528 +v 0.165963 -2.297030 0.646383 +v 0.206222 -2.297030 0.634687 +v 0.245668 -2.297030 0.620485 +v 0.284143 -2.297030 0.603835 +v 0.321498 -2.297030 0.584802 +v 0.357584 -2.297030 0.563461 +v 0.392258 -2.297030 0.539897 +v 0.425384 -2.297030 0.514201 +v 0.456832 -2.297030 0.486476 +v 0.486477 -2.297030 0.456832 +v 0.514201 -2.297030 0.425384 +v 0.539897 -2.297030 0.392258 +v 0.563461 -2.297030 0.357583 +v 0.584802 -2.297030 0.321498 +v 0.603835 -2.297030 0.284143 +v 0.620485 -2.297030 0.245668 +v 0.634687 -2.297030 0.206222 +v 0.646383 -2.297030 0.165963 +v 0.655528 -2.297030 0.125049 +v 0.662087 -2.297030 0.083641 +v 0.666032 -2.297030 0.041903 +v 0.667349 -2.297030 0.000000 +v 0.737712 -2.274935 -0.046413 +v 0.733342 -2.274935 -0.092643 +v 0.726078 -2.274935 -0.138507 +v 0.715948 -2.274935 -0.183824 +v 0.702993 -2.274935 -0.228416 +v 0.687264 -2.274935 -0.272107 +v 0.668822 -2.274935 -0.314724 +v 0.647740 -2.274935 -0.356098 +v 0.624103 -2.274935 -0.396067 +v 0.598002 -2.274935 -0.434474 +v 0.569541 -2.274935 -0.471165 +v 0.538832 -2.274935 -0.505997 +v 0.505997 -2.274935 -0.538832 +v 0.471165 -2.274935 -0.569541 +v 0.434474 -2.274935 -0.598002 +v 0.396068 -2.274935 -0.624103 +v 0.356098 -2.274935 -0.647740 +v 0.314724 -2.274935 -0.668822 +v 0.272107 -2.274935 -0.687264 +v 0.228416 -2.274935 -0.702993 +v 0.183824 -2.274935 -0.715948 +v 0.138507 -2.274935 -0.726078 +v 0.092643 -2.274935 -0.733342 +v 0.046413 -2.274935 -0.737712 +v 0.000000 -2.274935 -0.739171 +v -0.046413 -2.274935 -0.737712 +v -0.092643 -2.274935 -0.733342 +v -0.138507 -2.274935 -0.726078 +v -0.183824 -2.274935 -0.715948 +v -0.228416 -2.274935 -0.702993 +v -0.272107 -2.274935 -0.687264 +v -0.314724 -2.274935 -0.668822 +v -0.356098 -2.274935 -0.647740 +v -0.396068 -2.274935 -0.624103 +v -0.434474 -2.274935 -0.598002 +v -0.471165 -2.274935 -0.569541 +v -0.505997 -2.274935 -0.538832 +v -0.538832 -2.274935 -0.505997 +v -0.569541 -2.274935 -0.471165 +v -0.598002 -2.274935 -0.434474 +v -0.624103 -2.274935 -0.396068 +v -0.647740 -2.274935 -0.356098 +v -0.668822 -2.274935 -0.314724 +v -0.687264 -2.274935 -0.272107 +v -0.702993 -2.274935 -0.228416 +v -0.715948 -2.274935 -0.183824 +v -0.726078 -2.274935 -0.138507 +v -0.733342 -2.274935 -0.092643 +v -0.737712 -2.274935 -0.046413 +v -0.739171 -2.274935 0.000000 +v -0.737712 -2.274935 0.046413 +v -0.733342 -2.274935 0.092643 +v -0.726078 -2.274935 0.138507 +v -0.715949 -2.274935 0.183824 +v -0.702993 -2.274935 0.228416 +v -0.687264 -2.274935 0.272107 +v -0.668822 -2.274935 0.314724 +v -0.647740 -2.274935 0.356098 +v -0.624103 -2.274935 0.396068 +v -0.598002 -2.274935 0.434474 +v -0.569541 -2.274935 0.471165 +v -0.538832 -2.274935 0.505997 +v -0.505997 -2.274935 0.538833 +v -0.471165 -2.274935 0.569541 +v -0.434474 -2.274935 0.598002 +v -0.396068 -2.274935 0.624103 +v -0.356098 -2.274935 0.647741 +v -0.314724 -2.274935 0.668822 +v -0.272107 -2.274935 0.687264 +v -0.228416 -2.274935 0.702993 +v -0.183824 -2.274935 0.715949 +v -0.138507 -2.274935 0.726078 +v -0.092643 -2.274935 0.733343 +v -0.046413 -2.274935 0.737713 +v 0.000000 -2.274935 0.739171 +v 0.046413 -2.274935 0.737713 +v 0.092643 -2.274935 0.733343 +v 0.138507 -2.274935 0.726078 +v 0.183824 -2.274935 0.715949 +v 0.228417 -2.274935 0.702994 +v 0.272107 -2.274935 0.687264 +v 0.314724 -2.274935 0.668822 +v 0.356099 -2.274935 0.647741 +v 0.396068 -2.274935 0.624103 +v 0.434474 -2.274935 0.598002 +v 0.471166 -2.274935 0.569541 +v 0.505998 -2.274935 0.538833 +v 0.538833 -2.274935 0.505997 +v 0.569541 -2.274935 0.471165 +v 0.598002 -2.274935 0.434474 +v 0.624103 -2.274935 0.396068 +v 0.647741 -2.274935 0.356098 +v 0.668822 -2.274935 0.314724 +v 0.687264 -2.274935 0.272107 +v 0.702994 -2.274935 0.228416 +v 0.715949 -2.274935 0.183824 +v 0.726078 -2.274935 0.138507 +v 0.733343 -2.274935 0.092643 +v 0.737713 -2.274935 0.046413 +v 0.739171 -2.274935 0.000000 +v 0.808665 -2.250594 -0.050877 +v 0.803874 -2.250594 -0.101553 +v 0.795912 -2.250594 -0.151828 +v 0.784808 -2.250594 -0.201504 +v 0.770606 -2.250594 -0.250385 +v 0.753364 -2.250594 -0.298278 +v 0.733148 -2.250594 -0.344993 +v 0.710039 -2.250594 -0.390347 +v 0.684128 -2.250594 -0.434161 +v 0.655517 -2.250594 -0.476261 +v 0.624319 -2.250594 -0.516481 +v 0.590657 -2.250594 -0.554664 +v 0.554664 -2.250594 -0.590657 +v 0.516481 -2.250594 -0.624319 +v 0.476261 -2.250594 -0.655517 +v 0.434161 -2.250594 -0.684128 +v 0.390347 -2.250594 -0.710039 +v 0.344993 -2.250594 -0.733148 +v 0.298278 -2.250594 -0.753364 +v 0.250385 -2.250594 -0.770606 +v 0.201504 -2.250594 -0.784808 +v 0.151828 -2.250594 -0.795912 +v 0.101553 -2.250594 -0.803874 +v 0.050877 -2.250594 -0.808665 +v 0.000000 -2.250594 -0.810264 +v -0.050877 -2.250594 -0.808665 +v -0.101553 -2.250594 -0.803874 +v -0.151828 -2.250594 -0.795912 +v -0.201504 -2.250594 -0.784808 +v -0.250385 -2.250594 -0.770606 +v -0.298278 -2.250594 -0.753364 +v -0.344993 -2.250594 -0.733148 +v -0.390347 -2.250594 -0.710039 +v -0.434161 -2.250594 -0.684128 +v -0.476261 -2.250594 -0.655517 +v -0.516481 -2.250594 -0.624319 +v -0.554664 -2.250594 -0.590657 +v -0.590657 -2.250594 -0.554664 +v -0.624319 -2.250594 -0.516481 +v -0.655517 -2.250594 -0.476261 +v -0.684128 -2.250594 -0.434161 +v -0.710039 -2.250594 -0.390347 +v -0.733148 -2.250594 -0.344993 +v -0.753364 -2.250594 -0.298278 +v -0.770606 -2.250594 -0.250385 +v -0.784808 -2.250594 -0.201504 +v -0.795912 -2.250594 -0.151828 +v -0.803874 -2.250594 -0.101553 +v -0.808665 -2.250594 -0.050877 +v -0.810264 -2.250594 0.000000 +v -0.808665 -2.250594 0.050877 +v -0.803874 -2.250594 0.101553 +v -0.795912 -2.250594 0.151828 +v -0.784808 -2.250594 0.201504 +v -0.770607 -2.250594 0.250385 +v -0.753364 -2.250594 0.298278 +v -0.733148 -2.250594 0.344994 +v -0.710039 -2.250594 0.390348 +v -0.684128 -2.250594 0.434161 +v -0.655517 -2.250594 0.476261 +v -0.624319 -2.250594 0.516482 +v -0.590657 -2.250594 0.554664 +v -0.554664 -2.250594 0.590657 +v -0.516481 -2.250594 0.624319 +v -0.476261 -2.250594 0.655517 +v -0.434161 -2.250594 0.684128 +v -0.390347 -2.250594 0.710040 +v -0.344993 -2.250594 0.733149 +v -0.298278 -2.250594 0.753364 +v -0.250385 -2.250594 0.770607 +v -0.201504 -2.250594 0.784808 +v -0.151828 -2.250594 0.795912 +v -0.101553 -2.250594 0.803875 +v -0.050877 -2.250594 0.808665 +v 0.000000 -2.250594 0.810264 +v 0.050877 -2.250594 0.808665 +v 0.101553 -2.250594 0.803875 +v 0.151828 -2.250594 0.795912 +v 0.201505 -2.250594 0.784808 +v 0.250385 -2.250594 0.770607 +v 0.298278 -2.250594 0.753364 +v 0.344994 -2.250594 0.733149 +v 0.390348 -2.250594 0.710040 +v 0.434161 -2.250594 0.684128 +v 0.476261 -2.250594 0.655517 +v 0.516482 -2.250594 0.624319 +v 0.554664 -2.250594 0.590657 +v 0.590657 -2.250594 0.554664 +v 0.624319 -2.250594 0.516482 +v 0.655517 -2.250594 0.476261 +v 0.684128 -2.250594 0.434161 +v 0.710040 -2.250594 0.390348 +v 0.733149 -2.250594 0.344994 +v 0.753364 -2.250594 0.298278 +v 0.770607 -2.250594 0.250385 +v 0.784808 -2.250594 0.201504 +v 0.795912 -2.250594 0.151828 +v 0.803875 -2.250594 0.101553 +v 0.808665 -2.250594 0.050877 +v 0.810264 -2.250594 0.000000 +v 0.878819 -2.224033 -0.055291 +v 0.873613 -2.224033 -0.110363 +v 0.864959 -2.224033 -0.165000 +v 0.852892 -2.224033 -0.218985 +v 0.837459 -2.224033 -0.272107 +v 0.818721 -2.224033 -0.324154 +v 0.796751 -2.224033 -0.374923 +v 0.771638 -2.224033 -0.424211 +v 0.743478 -2.224033 -0.471826 +v 0.712385 -2.224033 -0.517578 +v 0.678480 -2.224033 -0.561288 +v 0.641898 -2.224033 -0.602782 +v 0.602782 -2.224033 -0.641898 +v 0.561288 -2.224033 -0.678480 +v 0.517578 -2.224033 -0.712385 +v 0.471826 -2.224033 -0.743478 +v 0.424211 -2.224033 -0.771637 +v 0.374923 -2.224033 -0.796751 +v 0.324154 -2.224033 -0.818721 +v 0.272107 -2.224033 -0.837459 +v 0.218986 -2.224033 -0.852892 +v 0.165000 -2.224033 -0.864959 +v 0.110363 -2.224033 -0.873613 +v 0.055291 -2.224033 -0.878819 +v 0.000000 -2.224033 -0.880557 +v -0.055291 -2.224033 -0.878819 +v -0.110363 -2.224033 -0.873613 +v -0.165000 -2.224033 -0.864960 +v -0.218985 -2.224033 -0.852892 +v -0.272107 -2.224033 -0.837459 +v -0.324154 -2.224033 -0.818721 +v -0.374923 -2.224033 -0.796751 +v -0.424211 -2.224033 -0.771638 +v -0.471826 -2.224033 -0.743478 +v -0.517578 -2.224033 -0.712385 +v -0.561288 -2.224033 -0.678480 +v -0.602783 -2.224033 -0.641898 +v -0.641898 -2.224033 -0.602782 +v -0.678481 -2.224033 -0.561288 +v -0.712385 -2.224033 -0.517578 +v -0.743479 -2.224033 -0.471826 +v -0.771638 -2.224033 -0.424211 +v -0.796751 -2.224033 -0.374923 +v -0.818721 -2.224033 -0.324154 +v -0.837459 -2.224033 -0.272107 +v -0.852892 -2.224033 -0.218985 +v -0.864960 -2.224033 -0.165000 +v -0.873613 -2.224033 -0.110363 +v -0.878819 -2.224033 -0.055291 +v -0.880557 -2.224033 0.000000 +v -0.878819 -2.224033 0.055291 +v -0.873613 -2.224033 0.110363 +v -0.864960 -2.224033 0.165000 +v -0.852892 -2.224033 0.218986 +v -0.837459 -2.224033 0.272107 +v -0.818721 -2.224033 0.324155 +v -0.796751 -2.224033 0.374923 +v -0.771638 -2.224033 0.424212 +v -0.743479 -2.224033 0.471826 +v -0.712385 -2.224033 0.517578 +v -0.678481 -2.224033 0.561288 +v -0.641898 -2.224033 0.602783 +v -0.602783 -2.224033 0.641898 +v -0.561288 -2.224033 0.678481 +v -0.517578 -2.224033 0.712385 +v -0.471826 -2.224033 0.743479 +v -0.424211 -2.224033 0.771638 +v -0.374923 -2.224033 0.796752 +v -0.324154 -2.224033 0.818721 +v -0.272107 -2.224033 0.837459 +v -0.218985 -2.224033 0.852892 +v -0.165000 -2.224033 0.864960 +v -0.110363 -2.224033 0.873613 +v -0.055291 -2.224033 0.878819 +v 0.000000 -2.224033 0.880557 +v 0.055291 -2.224033 0.878819 +v 0.110363 -2.224033 0.873613 +v 0.165000 -2.224033 0.864960 +v 0.218986 -2.224033 0.852893 +v 0.272107 -2.224033 0.837459 +v 0.324155 -2.224033 0.818721 +v 0.374923 -2.224033 0.796752 +v 0.424212 -2.224033 0.771638 +v 0.471826 -2.224033 0.743479 +v 0.517578 -2.224033 0.712385 +v 0.561288 -2.224033 0.678481 +v 0.602783 -2.224033 0.641898 +v 0.641898 -2.224033 0.602783 +v 0.678481 -2.224033 0.561288 +v 0.712386 -2.224033 0.517578 +v 0.743479 -2.224033 0.471826 +v 0.771638 -2.224033 0.424212 +v 0.796752 -2.224033 0.374923 +v 0.818721 -2.224033 0.324155 +v 0.837459 -2.224033 0.272107 +v 0.852893 -2.224033 0.218986 +v 0.864960 -2.224033 0.165000 +v 0.873613 -2.224033 0.110363 +v 0.878819 -2.224033 0.055291 +v 0.880557 -2.224033 0.000000 +v 0.948106 -2.195276 -0.059650 +v 0.942490 -2.195276 -0.119064 +v 0.933154 -2.195276 -0.178009 +v 0.920135 -2.195276 -0.236250 +v 0.903485 -2.195276 -0.293560 +v 0.883270 -2.195276 -0.349711 +v 0.859568 -2.195276 -0.404482 +v 0.832474 -2.195276 -0.457657 +v 0.802095 -2.195276 -0.509025 +v 0.768550 -2.195276 -0.558385 +v 0.731973 -2.195276 -0.605540 +v 0.692506 -2.195276 -0.650307 +v 0.650307 -2.195276 -0.692506 +v 0.605540 -2.195276 -0.731973 +v 0.558385 -2.195276 -0.768550 +v 0.509025 -2.195276 -0.802095 +v 0.457657 -2.195276 -0.832474 +v 0.404482 -2.195276 -0.859568 +v 0.349711 -2.195276 -0.883270 +v 0.293560 -2.195276 -0.903485 +v 0.236251 -2.195276 -0.920135 +v 0.178009 -2.195276 -0.933154 +v 0.119064 -2.195276 -0.942490 +v 0.059650 -2.195276 -0.948106 +v 0.000000 -2.195276 -0.949981 +v -0.059650 -2.195276 -0.948106 +v -0.119064 -2.195276 -0.942490 +v -0.178009 -2.195276 -0.933154 +v -0.236251 -2.195276 -0.920135 +v -0.293560 -2.195276 -0.903485 +v -0.349711 -2.195276 -0.883270 +v -0.404482 -2.195276 -0.859568 +v -0.457657 -2.195276 -0.832474 +v -0.509025 -2.195276 -0.802095 +v -0.558385 -2.195276 -0.768550 +v -0.605541 -2.195276 -0.731973 +v -0.650307 -2.195276 -0.692506 +v -0.692506 -2.195276 -0.650307 +v -0.731973 -2.195276 -0.605540 +v -0.768551 -2.195276 -0.558385 +v -0.802095 -2.195276 -0.509025 +v -0.832474 -2.195276 -0.457657 +v -0.859568 -2.195276 -0.404482 +v -0.883270 -2.195276 -0.349711 +v -0.903485 -2.195276 -0.293560 +v -0.920135 -2.195276 -0.236251 +v -0.933154 -2.195276 -0.178009 +v -0.942490 -2.195276 -0.119064 +v -0.948106 -2.195276 -0.059650 +v -0.949981 -2.195276 0.000000 +v -0.948106 -2.195276 0.059650 +v -0.942490 -2.195276 0.119064 +v -0.933154 -2.195276 0.178009 +v -0.920135 -2.195276 0.236251 +v -0.903485 -2.195276 0.293560 +v -0.883270 -2.195276 0.349711 +v -0.859568 -2.195276 0.404482 +v -0.832475 -2.195276 0.457657 +v -0.802095 -2.195276 0.509025 +v -0.768551 -2.195276 0.558385 +v -0.731973 -2.195276 0.605541 +v -0.692506 -2.195276 0.650307 +v -0.650307 -2.195276 0.692506 +v -0.605541 -2.195276 0.731973 +v -0.558385 -2.195276 0.768551 +v -0.509025 -2.195276 0.802096 +v -0.457657 -2.195276 0.832475 +v -0.404482 -2.195276 0.859568 +v -0.349711 -2.195276 0.883270 +v -0.293560 -2.195276 0.903486 +v -0.236251 -2.195276 0.920136 +v -0.178009 -2.195276 0.933154 +v -0.119064 -2.195276 0.942490 +v -0.059650 -2.195276 0.948106 +v 0.000000 -2.195276 0.949981 +v 0.059650 -2.195276 0.948106 +v 0.119064 -2.195276 0.942490 +v 0.178009 -2.195276 0.933154 +v 0.236251 -2.195276 0.920136 +v 0.293560 -2.195276 0.903486 +v 0.349711 -2.195276 0.883270 +v 0.404482 -2.195276 0.859569 +v 0.457657 -2.195276 0.832475 +v 0.509025 -2.195276 0.802096 +v 0.558385 -2.195276 0.768551 +v 0.605541 -2.195276 0.731973 +v 0.650307 -2.195276 0.692506 +v 0.692507 -2.195276 0.650307 +v 0.731973 -2.195276 0.605541 +v 0.768551 -2.195276 0.558385 +v 0.802096 -2.195276 0.509025 +v 0.832475 -2.195276 0.457657 +v 0.859569 -2.195276 0.404482 +v 0.883270 -2.195276 0.349711 +v 0.903486 -2.195276 0.293560 +v 0.920136 -2.195276 0.236251 +v 0.933154 -2.195276 0.178009 +v 0.942490 -2.195276 0.119064 +v 0.948107 -2.195276 0.059650 +v 0.949981 -2.195276 0.000000 +v 1.016457 -2.164353 -0.063950 +v 1.010436 -2.164353 -0.127648 +v 1.000427 -2.164353 -0.190842 +v 0.986470 -2.164353 -0.253282 +v 0.968620 -2.164353 -0.314724 +v 0.946947 -2.164353 -0.374923 +v 0.921537 -2.164353 -0.433642 +v 0.892490 -2.164353 -0.490650 +v 0.859920 -2.164353 -0.545722 +v 0.823957 -2.164353 -0.598640 +v 0.784742 -2.164353 -0.649195 +v 0.742431 -2.164353 -0.697189 +v 0.697189 -2.164353 -0.742431 +v 0.649195 -2.164353 -0.784742 +v 0.598640 -2.164353 -0.823957 +v 0.545722 -2.164353 -0.859920 +v 0.490650 -2.164353 -0.892490 +v 0.433642 -2.164353 -0.921537 +v 0.374923 -2.164353 -0.946947 +v 0.314724 -2.164353 -0.968620 +v 0.253283 -2.164353 -0.986470 +v 0.190842 -2.164353 -1.000427 +v 0.127648 -2.164353 -1.010436 +v 0.063950 -2.164353 -1.016458 +v 0.000000 -2.164353 -1.018467 +v -0.063950 -2.164353 -1.016458 +v -0.127648 -2.164353 -1.010436 +v -0.190842 -2.164353 -1.000427 +v -0.253282 -2.164353 -0.986470 +v -0.314724 -2.164353 -0.968620 +v -0.374923 -2.164353 -0.946947 +v -0.433642 -2.164353 -0.921537 +v -0.490650 -2.164353 -0.892490 +v -0.545722 -2.164353 -0.859920 +v -0.598640 -2.164353 -0.823957 +v -0.649196 -2.164353 -0.784742 +v -0.697189 -2.164353 -0.742431 +v -0.742431 -2.164353 -0.697189 +v -0.784743 -2.164353 -0.649195 +v -0.823957 -2.164353 -0.598640 +v -0.859920 -2.164353 -0.545722 +v -0.892490 -2.164353 -0.490650 +v -0.921537 -2.164353 -0.433642 +v -0.946947 -2.164353 -0.374923 +v -0.968620 -2.164353 -0.314724 +v -0.986470 -2.164353 -0.253282 +v -1.000427 -2.164353 -0.190842 +v -1.010436 -2.164353 -0.127648 +v -1.016458 -2.164353 -0.063950 +v -1.018467 -2.164353 0.000000 +v -1.016458 -2.164353 0.063950 +v -1.010436 -2.164353 0.127648 +v -1.000428 -2.164353 0.190842 +v -0.986470 -2.164353 0.253283 +v -0.968620 -2.164353 0.314724 +v -0.946947 -2.164353 0.374923 +v -0.921537 -2.164353 0.433642 +v -0.892490 -2.164353 0.490651 +v -0.859920 -2.164353 0.545722 +v -0.823957 -2.164353 0.598640 +v -0.784743 -2.164353 0.649196 +v -0.742431 -2.164353 0.697189 +v -0.697189 -2.164353 0.742431 +v -0.649196 -2.164353 0.784743 +v -0.598640 -2.164353 0.823958 +v -0.545722 -2.164353 0.859921 +v -0.490650 -2.164353 0.892490 +v -0.433642 -2.164353 0.921537 +v -0.374923 -2.164353 0.946947 +v -0.314724 -2.164353 0.968620 +v -0.253282 -2.164353 0.986471 +v -0.190842 -2.164353 1.000428 +v -0.127648 -2.164353 1.010437 +v -0.063950 -2.164353 1.016458 +v 0.000000 -2.164353 1.018468 +v 0.063950 -2.164353 1.016458 +v 0.127648 -2.164353 1.010437 +v 0.190842 -2.164353 1.000428 +v 0.253283 -2.164353 0.986471 +v 0.314724 -2.164353 0.968620 +v 0.374923 -2.164353 0.946947 +v 0.433643 -2.164353 0.921537 +v 0.490651 -2.164353 0.892490 +v 0.545722 -2.164353 0.859921 +v 0.598640 -2.164353 0.823958 +v 0.649196 -2.164353 0.784743 +v 0.697189 -2.164353 0.742431 +v 0.742431 -2.164353 0.697189 +v 0.784743 -2.164353 0.649196 +v 0.823958 -2.164353 0.598640 +v 0.859921 -2.164353 0.545722 +v 0.892490 -2.164353 0.490651 +v 0.921537 -2.164353 0.433642 +v 0.946947 -2.164353 0.374923 +v 0.968620 -2.164353 0.314724 +v 0.986471 -2.164353 0.253283 +v 1.000428 -2.164353 0.190842 +v 1.010437 -2.164353 0.127648 +v 1.016458 -2.164353 0.063950 +v 1.018468 -2.164353 0.000000 +v 1.083806 -2.131295 -0.068187 +v 1.077386 -2.131295 -0.136105 +v 1.066713 -2.131295 -0.203486 +v 1.051832 -2.131295 -0.270064 +v 1.032798 -2.131295 -0.335576 +v 1.009689 -2.131295 -0.399764 +v 0.982596 -2.131295 -0.462374 +v 0.951624 -2.131295 -0.523160 +v 0.916897 -2.131295 -0.581880 +v 0.878551 -2.131295 -0.638304 +v 0.836738 -2.131295 -0.692210 +v 0.791622 -2.131295 -0.743383 +v 0.743383 -2.131295 -0.791622 +v 0.692210 -2.131295 -0.836738 +v 0.638305 -2.131295 -0.878551 +v 0.581880 -2.131295 -0.916897 +v 0.523160 -2.131295 -0.951624 +v 0.462374 -2.131295 -0.982596 +v 0.399764 -2.131295 -1.009689 +v 0.335577 -2.131295 -1.032798 +v 0.270064 -2.131295 -1.051831 +v 0.203487 -2.131295 -1.066713 +v 0.136106 -2.131295 -1.077386 +v 0.068187 -2.131295 -1.083806 +v 0.000000 -2.131295 -1.085949 +v -0.068187 -2.131295 -1.083806 +v -0.136105 -2.131295 -1.077386 +v -0.203486 -2.131295 -1.066714 +v -0.270064 -2.131295 -1.051832 +v -0.335577 -2.131295 -1.032799 +v -0.399764 -2.131295 -1.009690 +v -0.462374 -2.131295 -0.982596 +v -0.523160 -2.131295 -0.951624 +v -0.581880 -2.131295 -0.916897 +v -0.638305 -2.131295 -0.878551 +v -0.692210 -2.131295 -0.836738 +v -0.743383 -2.131295 -0.791622 +v -0.791623 -2.131295 -0.743383 +v -0.836738 -2.131295 -0.692210 +v -0.878551 -2.131295 -0.638305 +v -0.916897 -2.131295 -0.581880 +v -0.951624 -2.131295 -0.523160 +v -0.982596 -2.131295 -0.462374 +v -1.009690 -2.131295 -0.399764 +v -1.032799 -2.131295 -0.335577 +v -1.051832 -2.131295 -0.270064 +v -1.066714 -2.131295 -0.203486 +v -1.077386 -2.131295 -0.136105 +v -1.083806 -2.131295 -0.068187 +v -1.085949 -2.131295 0.000000 +v -1.083806 -2.131295 0.068187 +v -1.077386 -2.131295 0.136106 +v -1.066714 -2.131295 0.203487 +v -1.051832 -2.131295 0.270065 +v -1.032799 -2.131295 0.335577 +v -1.009690 -2.131295 0.399765 +v -0.982596 -2.131295 0.462375 +v -0.951624 -2.131295 0.523160 +v -0.916897 -2.131295 0.581881 +v -0.878551 -2.131295 0.638305 +v -0.836738 -2.131295 0.692210 +v -0.791623 -2.131295 0.743383 +v -0.743383 -2.131295 0.791623 +v -0.692210 -2.131295 0.836738 +v -0.638305 -2.131295 0.878551 +v -0.581880 -2.131295 0.916897 +v -0.523160 -2.131295 0.951624 +v -0.462374 -2.131295 0.982596 +v -0.399764 -2.131295 1.009690 +v -0.335577 -2.131295 1.032799 +v -0.270064 -2.131295 1.051832 +v -0.203486 -2.131295 1.066714 +v -0.136105 -2.131295 1.077386 +v -0.068187 -2.131295 1.083806 +v 0.000000 -2.131295 1.085949 +v 0.068187 -2.131295 1.083806 +v 0.136106 -2.131295 1.077386 +v 0.203487 -2.131295 1.066714 +v 0.270065 -2.131295 1.051832 +v 0.335577 -2.131295 1.032799 +v 0.399765 -2.131295 1.009690 +v 0.462375 -2.131295 0.982596 +v 0.523160 -2.131295 0.951624 +v 0.581881 -2.131295 0.916897 +v 0.638305 -2.131295 0.878551 +v 0.692210 -2.131295 0.836738 +v 0.743383 -2.131295 0.791623 +v 0.791623 -2.131295 0.743383 +v 0.836738 -2.131295 0.692210 +v 0.878551 -2.131295 0.638305 +v 0.916897 -2.131295 0.581881 +v 0.951624 -2.131295 0.523160 +v 0.982596 -2.131295 0.462375 +v 1.009690 -2.131295 0.399765 +v 1.032799 -2.131295 0.335577 +v 1.051832 -2.131295 0.270065 +v 1.066714 -2.131295 0.203487 +v 1.077386 -2.131295 0.136106 +v 1.083806 -2.131295 0.068187 +v 1.085949 -2.131295 0.000000 +v 1.150084 -2.096132 -0.072357 +v 1.143272 -2.096132 -0.144429 +v 1.131947 -2.096132 -0.215930 +v 1.116155 -2.096132 -0.286580 +v 1.095958 -2.096132 -0.356098 +v 1.071436 -2.096132 -0.424211 +v 1.042685 -2.096132 -0.490650 +v 1.009819 -2.096132 -0.555153 +v 0.972968 -2.096132 -0.617464 +v 0.932277 -2.096132 -0.677339 +v 0.887907 -2.096132 -0.734541 +v 0.840033 -2.096132 -0.788843 +v 0.788843 -2.096132 -0.840033 +v 0.734541 -2.096132 -0.887907 +v 0.677339 -2.096132 -0.932277 +v 0.617464 -2.096132 -0.972968 +v 0.555153 -2.096132 -1.009819 +v 0.490650 -2.096132 -1.042685 +v 0.424211 -2.096132 -1.071436 +v 0.356098 -2.096132 -1.095958 +v 0.286580 -2.096132 -1.116155 +v 0.215930 -2.096132 -1.131947 +v 0.144429 -2.096132 -1.143272 +v 0.072357 -2.096132 -1.150084 +v 0.000000 -2.096132 -1.152358 +v -0.072357 -2.096132 -1.150084 +v -0.144429 -2.096132 -1.143272 +v -0.215930 -2.096132 -1.131947 +v -0.286580 -2.096132 -1.116155 +v -0.356098 -2.096132 -1.095958 +v -0.424211 -2.096132 -1.071436 +v -0.490650 -2.096132 -1.042685 +v -0.555153 -2.096132 -1.009819 +v -0.617464 -2.096132 -0.972968 +v -0.677339 -2.096132 -0.932277 +v -0.734541 -2.096132 -0.887907 +v -0.788844 -2.096132 -0.840033 +v -0.840033 -2.096132 -0.788843 +v -0.887907 -2.096132 -0.734541 +v -0.932277 -2.096132 -0.677339 +v -0.972968 -2.096132 -0.617464 +v -1.009819 -2.096132 -0.555153 +v -1.042685 -2.096132 -0.490650 +v -1.071436 -2.096132 -0.424211 +v -1.095958 -2.096132 -0.356098 +v -1.116155 -2.096132 -0.286580 +v -1.131947 -2.096132 -0.215930 +v -1.143272 -2.096132 -0.144429 +v -1.150084 -2.096132 -0.072357 +v -1.152358 -2.096132 0.000000 +v -1.150084 -2.096132 0.072357 +v -1.143272 -2.096132 0.144429 +v -1.131947 -2.096132 0.215931 +v -1.116155 -2.096132 0.286580 +v -1.095958 -2.096132 0.356098 +v -1.071436 -2.096132 0.424212 +v -1.042685 -2.096132 0.490651 +v -1.009819 -2.096132 0.555153 +v -0.972968 -2.096132 0.617465 +v -0.932277 -2.096132 0.677339 +v -0.887907 -2.096132 0.734541 +v -0.840033 -2.096132 0.788844 +v -0.788844 -2.096132 0.840033 +v -0.734541 -2.096132 0.887908 +v -0.677339 -2.096132 0.932278 +v -0.617465 -2.096132 0.972969 +v -0.555153 -2.096132 1.009820 +v -0.490650 -2.096132 1.042685 +v -0.424211 -2.096132 1.071436 +v -0.356098 -2.096132 1.095958 +v -0.286580 -2.096132 1.116155 +v -0.215930 -2.096132 1.131947 +v -0.144429 -2.096132 1.143272 +v -0.072357 -2.096132 1.150085 +v 0.000000 -2.096132 1.152359 +v 0.072357 -2.096132 1.150085 +v 0.144429 -2.096132 1.143272 +v 0.215931 -2.096132 1.131947 +v 0.286580 -2.096132 1.116155 +v 0.356099 -2.096132 1.095958 +v 0.424212 -2.096132 1.071436 +v 0.490651 -2.096132 1.042685 +v 0.555153 -2.096132 1.009820 +v 0.617465 -2.096132 0.972969 +v 0.677340 -2.096132 0.932278 +v 0.734541 -2.096132 0.887908 +v 0.788844 -2.096132 0.840033 +v 0.840034 -2.096132 0.788844 +v 0.887908 -2.096132 0.734541 +v 0.932278 -2.096132 0.677339 +v 0.972969 -2.096132 0.617465 +v 1.009820 -2.096132 0.555153 +v 1.042685 -2.096132 0.490651 +v 1.071436 -2.096132 0.424212 +v 1.095958 -2.096132 0.356098 +v 1.116155 -2.096132 0.286580 +v 1.131947 -2.096132 0.215931 +v 1.143272 -2.096132 0.144429 +v 1.150085 -2.096132 0.072357 +v 1.152359 -2.096132 0.000000 +v 1.215228 -2.058902 -0.076456 +v 1.208029 -2.058902 -0.152610 +v 1.196063 -2.058902 -0.228161 +v 1.179377 -2.058902 -0.302812 +v 1.158036 -2.058902 -0.376269 +v 1.132124 -2.058902 -0.448240 +v 1.101745 -2.058902 -0.518442 +v 1.067018 -2.058902 -0.586598 +v 1.028080 -2.058902 -0.652439 +v 0.985084 -2.058902 -0.715705 +v 0.938201 -2.058902 -0.776147 +v 0.887615 -2.058902 -0.833526 +v 0.833526 -2.058902 -0.887615 +v 0.776147 -2.058902 -0.938201 +v 0.715705 -2.058902 -0.985084 +v 0.652439 -2.058902 -1.028080 +v 0.586598 -2.058902 -1.067018 +v 0.518442 -2.058902 -1.101745 +v 0.448240 -2.058902 -1.132124 +v 0.376269 -2.058902 -1.158036 +v 0.302813 -2.058902 -1.179377 +v 0.228161 -2.058902 -1.196063 +v 0.152610 -2.058902 -1.208029 +v 0.076456 -2.058902 -1.215228 +v 0.000000 -2.058902 -1.217631 +v -0.076456 -2.058902 -1.215228 +v -0.152610 -2.058902 -1.208029 +v -0.228161 -2.058902 -1.196063 +v -0.302812 -2.058902 -1.179377 +v -0.376269 -2.058902 -1.158036 +v -0.448240 -2.058902 -1.132125 +v -0.518442 -2.058902 -1.101745 +v -0.586598 -2.058902 -1.067018 +v -0.652439 -2.058902 -1.028080 +v -0.715705 -2.058902 -0.985084 +v -0.776147 -2.058902 -0.938201 +v -0.833526 -2.058902 -0.887615 +v -0.887615 -2.058902 -0.833526 +v -0.938201 -2.058902 -0.776147 +v -0.985084 -2.058902 -0.715705 +v -1.028080 -2.058902 -0.652439 +v -1.067018 -2.058902 -0.586598 +v -1.101745 -2.058902 -0.518442 +v -1.132125 -2.058902 -0.448240 +v -1.158036 -2.058902 -0.376269 +v -1.179377 -2.058902 -0.302812 +v -1.196063 -2.058902 -0.228161 +v -1.208029 -2.058902 -0.152610 +v -1.215228 -2.058902 -0.076456 +v -1.217631 -2.058902 0.000000 +v -1.215228 -2.058902 0.076456 +v -1.208030 -2.058902 0.152610 +v -1.196063 -2.058902 0.228161 +v -1.179377 -2.058902 0.302813 +v -1.158036 -2.058902 0.376269 +v -1.132125 -2.058902 0.448240 +v -1.101745 -2.058902 0.518442 +v -1.067018 -2.058902 0.586598 +v -1.028080 -2.058902 0.652439 +v -0.985084 -2.058902 0.715706 +v -0.938201 -2.058902 0.776147 +v -0.887615 -2.058902 0.833526 +v -0.833526 -2.058902 0.887615 +v -0.776147 -2.058902 0.938201 +v -0.715706 -2.058902 0.985084 +v -0.652439 -2.058902 1.028080 +v -0.586598 -2.058902 1.067018 +v -0.518442 -2.058902 1.101746 +v -0.448240 -2.058902 1.132125 +v -0.376269 -2.058902 1.158036 +v -0.302812 -2.058902 1.179377 +v -0.228161 -2.058902 1.196064 +v -0.152610 -2.058902 1.208030 +v -0.076456 -2.058902 1.215228 +v 0.000000 -2.058902 1.217631 +v 0.076456 -2.058902 1.215228 +v 0.152610 -2.058902 1.208030 +v 0.228161 -2.058902 1.196064 +v 0.302813 -2.058902 1.179377 +v 0.376269 -2.058902 1.158036 +v 0.448240 -2.058902 1.132125 +v 0.518442 -2.058902 1.101746 +v 0.586598 -2.058902 1.067018 +v 0.652440 -2.058902 1.028080 +v 0.715706 -2.058902 0.985084 +v 0.776148 -2.058902 0.938201 +v 0.833526 -2.058902 0.887615 +v 0.887615 -2.058902 0.833526 +v 0.938201 -2.058902 0.776147 +v 0.985084 -2.058902 0.715706 +v 1.028080 -2.058902 0.652439 +v 1.067018 -2.058902 0.586598 +v 1.101746 -2.058902 0.518442 +v 1.132125 -2.058902 0.448240 +v 1.158036 -2.058902 0.376269 +v 1.179377 -2.058902 0.302813 +v 1.196064 -2.058902 0.228161 +v 1.208030 -2.058902 0.152610 +v 1.215229 -2.058902 0.076456 +v 1.217631 -2.058902 0.000000 +v 1.279172 -2.019639 -0.080479 +v 1.271595 -2.019639 -0.160640 +v 1.258999 -2.019639 -0.240167 +v 1.241434 -2.019639 -0.318746 +v 1.218971 -2.019639 -0.396067 +v 1.191696 -2.019639 -0.471826 +v 1.159718 -2.019639 -0.545722 +v 1.123164 -2.019639 -0.617464 +v 1.082176 -2.019639 -0.686770 +v 1.036918 -2.019639 -0.753365 +v 0.987568 -2.019639 -0.816987 +v 0.934320 -2.019639 -0.877385 +v 0.877385 -2.019639 -0.934320 +v 0.816987 -2.019639 -0.987568 +v 0.753365 -2.019639 -1.036918 +v 0.686770 -2.019639 -1.082176 +v 0.617464 -2.019639 -1.123164 +v 0.545722 -2.019639 -1.159718 +v 0.471826 -2.019639 -1.191696 +v 0.396068 -2.019639 -1.218970 +v 0.318746 -2.019639 -1.241434 +v 0.240167 -2.019639 -1.258999 +v 0.160640 -2.019639 -1.271595 +v 0.080479 -2.019639 -1.279172 +v 0.000000 -2.019639 -1.281702 +v -0.080479 -2.019639 -1.279172 +v -0.160640 -2.019639 -1.271595 +v -0.240167 -2.019639 -1.258999 +v -0.318746 -2.019639 -1.241435 +v -0.396068 -2.019639 -1.218971 +v -0.471826 -2.019639 -1.191696 +v -0.545722 -2.019639 -1.159718 +v -0.617464 -2.019639 -1.123164 +v -0.686770 -2.019639 -1.082176 +v -0.753365 -2.019639 -1.036918 +v -0.816987 -2.019639 -0.987568 +v -0.877385 -2.019639 -0.934320 +v -0.934320 -2.019639 -0.877385 +v -0.987568 -2.019639 -0.816987 +v -1.036918 -2.019639 -0.753365 +v -1.082176 -2.019639 -0.686770 +v -1.123164 -2.019639 -0.617464 +v -1.159718 -2.019639 -0.545722 +v -1.191696 -2.019639 -0.471826 +v -1.218971 -2.019639 -0.396067 +v -1.241435 -2.019639 -0.318746 +v -1.258999 -2.019639 -0.240167 +v -1.271595 -2.019639 -0.160640 +v -1.279173 -2.019639 -0.080479 +v -1.281702 -2.019639 0.000000 +v -1.279173 -2.019639 0.080479 +v -1.271595 -2.019639 0.160640 +v -1.258999 -2.019639 0.240167 +v -1.241435 -2.019639 0.318746 +v -1.218971 -2.019639 0.396068 +v -1.191696 -2.019639 0.471826 +v -1.159718 -2.019639 0.545722 +v -1.123164 -2.019639 0.617465 +v -1.082176 -2.019639 0.686770 +v -1.036918 -2.019639 0.753366 +v -0.987568 -2.019639 0.816988 +v -0.934320 -2.019639 0.877385 +v -0.877385 -2.019639 0.934321 +v -0.816987 -2.019639 0.987568 +v -0.753365 -2.019639 1.036919 +v -0.686770 -2.019639 1.082177 +v -0.617464 -2.019639 1.123164 +v -0.545722 -2.019639 1.159719 +v -0.471826 -2.019639 1.191696 +v -0.396068 -2.019639 1.218971 +v -0.318746 -2.019639 1.241435 +v -0.240167 -2.019639 1.258999 +v -0.160640 -2.019639 1.271595 +v -0.080479 -2.019639 1.279173 +v 0.000000 -2.019639 1.281702 +v 0.080479 -2.019639 1.279173 +v 0.160640 -2.019639 1.271595 +v 0.240167 -2.019639 1.259000 +v 0.318746 -2.019639 1.241435 +v 0.396068 -2.019639 1.218971 +v 0.471826 -2.019639 1.191696 +v 0.545722 -2.019639 1.159719 +v 0.617465 -2.019639 1.123164 +v 0.686770 -2.019639 1.082177 +v 0.753366 -2.019639 1.036919 +v 0.816988 -2.019639 0.987568 +v 0.877386 -2.019639 0.934320 +v 0.934321 -2.019639 0.877385 +v 0.987569 -2.019639 0.816988 +v 1.036919 -2.019639 0.753366 +v 1.082177 -2.019639 0.686770 +v 1.123164 -2.019639 0.617465 +v 1.159719 -2.019639 0.545722 +v 1.191696 -2.019639 0.471826 +v 1.218971 -2.019639 0.396068 +v 1.241435 -2.019639 0.318746 +v 1.259000 -2.019639 0.240167 +v 1.271595 -2.019639 0.160640 +v 1.279173 -2.019639 0.080479 +v 1.281702 -2.019639 0.000000 +v 1.341854 -1.978383 -0.084422 +v 1.333906 -1.978383 -0.168511 +v 1.320693 -1.978383 -0.251935 +v 1.302267 -1.978383 -0.334365 +v 1.278703 -1.978383 -0.415476 +v 1.250091 -1.978383 -0.494946 +v 1.216547 -1.978383 -0.572463 +v 1.178201 -1.978383 -0.647721 +v 1.135205 -1.978383 -0.720423 +v 1.087729 -1.978383 -0.790282 +v 1.035961 -1.978383 -0.857021 +v 0.980104 -1.978383 -0.920379 +v 0.920379 -1.978383 -0.980104 +v 0.857021 -1.978383 -1.035961 +v 0.790282 -1.978383 -1.087729 +v 0.720423 -1.978383 -1.135205 +v 0.647721 -1.978383 -1.178201 +v 0.572463 -1.978383 -1.216547 +v 0.494946 -1.978383 -1.250091 +v 0.415476 -1.978383 -1.278703 +v 0.334366 -1.978383 -1.302267 +v 0.251936 -1.978383 -1.320693 +v 0.168512 -1.978383 -1.333906 +v 0.084422 -1.978383 -1.341854 +v 0.000000 -1.978383 -1.344508 +v -0.084422 -1.978383 -1.341854 +v -0.168511 -1.978383 -1.333906 +v -0.251936 -1.978383 -1.320693 +v -0.334365 -1.978383 -1.302267 +v -0.415476 -1.978383 -1.278703 +v -0.494946 -1.978383 -1.250092 +v -0.572463 -1.978383 -1.216547 +v -0.647721 -1.978383 -1.178201 +v -0.720423 -1.978383 -1.135205 +v -0.790282 -1.978383 -1.087729 +v -0.857021 -1.978383 -1.035961 +v -0.920379 -1.978383 -0.980104 +v -0.980104 -1.978383 -0.920379 +v -1.035961 -1.978383 -0.857021 +v -1.087730 -1.978383 -0.790282 +v -1.135205 -1.978383 -0.720423 +v -1.178201 -1.978383 -0.647721 +v -1.216547 -1.978383 -0.572463 +v -1.250092 -1.978383 -0.494946 +v -1.278703 -1.978383 -0.415476 +v -1.302267 -1.978383 -0.334365 +v -1.320693 -1.978383 -0.251936 +v -1.333906 -1.978383 -0.168511 +v -1.341855 -1.978383 -0.084422 +v -1.344508 -1.978383 0.000000 +v -1.341855 -1.978383 0.084422 +v -1.333906 -1.978383 0.168512 +v -1.320693 -1.978383 0.251936 +v -1.302268 -1.978383 0.334366 +v -1.278703 -1.978383 0.415476 +v -1.250092 -1.978383 0.494946 +v -1.216547 -1.978383 0.572464 +v -1.178201 -1.978383 0.647722 +v -1.135205 -1.978383 0.720423 +v -1.087730 -1.978383 0.790282 +v -1.035961 -1.978383 0.857022 +v -0.980104 -1.978383 0.920379 +v -0.920379 -1.978383 0.980104 +v -0.857022 -1.978383 1.035961 +v -0.790282 -1.978383 1.087730 +v -0.720423 -1.978383 1.135206 +v -0.647722 -1.978383 1.178201 +v -0.572464 -1.978383 1.216547 +v -0.494946 -1.978383 1.250092 +v -0.415476 -1.978383 1.278703 +v -0.334365 -1.978383 1.302268 +v -0.251936 -1.978383 1.320693 +v -0.168511 -1.978383 1.333906 +v -0.084422 -1.978383 1.341855 +v 0.000000 -1.978383 1.344508 +v 0.084422 -1.978383 1.341855 +v 0.168512 -1.978383 1.333906 +v 0.251936 -1.978383 1.320693 +v 0.334366 -1.978383 1.302268 +v 0.415476 -1.978383 1.278703 +v 0.494947 -1.978383 1.250092 +v 0.572464 -1.978383 1.216547 +v 0.647722 -1.978383 1.178201 +v 0.720424 -1.978383 1.135206 +v 0.790282 -1.978383 1.087730 +v 0.857022 -1.978383 1.035961 +v 0.920379 -1.978383 0.980104 +v 0.980104 -1.978383 0.920379 +v 1.035961 -1.978383 0.857022 +v 1.087730 -1.978383 0.790282 +v 1.135206 -1.978383 0.720423 +v 1.178201 -1.978383 0.647722 +v 1.216547 -1.978383 0.572464 +v 1.250092 -1.978383 0.494946 +v 1.278703 -1.978383 0.415476 +v 1.302268 -1.978383 0.334366 +v 1.320693 -1.978383 0.251936 +v 1.333906 -1.978383 0.168512 +v 1.341855 -1.978383 0.084422 +v 1.344508 -1.978383 0.000000 +v 1.403212 -1.935175 -0.088283 +v 1.394900 -1.935175 -0.176217 +v 1.381083 -1.935175 -0.263456 +v 1.361815 -1.935175 -0.349655 +v 1.337173 -1.935175 -0.434474 +v 1.307253 -1.935175 -0.517578 +v 1.272175 -1.935175 -0.598640 +v 1.232075 -1.935175 -0.677339 +v 1.187114 -1.935175 -0.753365 +v 1.137467 -1.935175 -0.826418 +v 1.083331 -1.935175 -0.896210 +v 1.024920 -1.935175 -0.962464 +v 0.962464 -1.935175 -1.024920 +v 0.896210 -1.935175 -1.083331 +v 0.826418 -1.935175 -1.137467 +v 0.753365 -1.935175 -1.187114 +v 0.677339 -1.935175 -1.232075 +v 0.598640 -1.935175 -1.272175 +v 0.517578 -1.935175 -1.307253 +v 0.434474 -1.935175 -1.337173 +v 0.349655 -1.935175 -1.361815 +v 0.263456 -1.935175 -1.381083 +v 0.176217 -1.935175 -1.394900 +v 0.088283 -1.935175 -1.403212 +v 0.000000 -1.935175 -1.405987 +v -0.088283 -1.935175 -1.403212 +v -0.176217 -1.935175 -1.394900 +v -0.263456 -1.935175 -1.381083 +v -0.349655 -1.935175 -1.361815 +v -0.434474 -1.935175 -1.337173 +v -0.517578 -1.935175 -1.307253 +v -0.598640 -1.935175 -1.272175 +v -0.677339 -1.935175 -1.232076 +v -0.753365 -1.935175 -1.187114 +v -0.826418 -1.935175 -1.137467 +v -0.896210 -1.935175 -1.083331 +v -0.962464 -1.935175 -1.024920 +v -1.024920 -1.935175 -0.962464 +v -1.083331 -1.935175 -0.896210 +v -1.137467 -1.935175 -0.826418 +v -1.187114 -1.935175 -0.753365 +v -1.232076 -1.935175 -0.677339 +v -1.272175 -1.935175 -0.598640 +v -1.307253 -1.935175 -0.517578 +v -1.337173 -1.935175 -0.434474 +v -1.361815 -1.935175 -0.349655 +v -1.381083 -1.935175 -0.263456 +v -1.394900 -1.935175 -0.176217 +v -1.403212 -1.935175 -0.088283 +v -1.405987 -1.935175 0.000000 +v -1.403212 -1.935175 0.088283 +v -1.394900 -1.935175 0.176217 +v -1.381083 -1.935175 0.263456 +v -1.361815 -1.935175 0.349655 +v -1.337173 -1.935175 0.434474 +v -1.307253 -1.935175 0.517578 +v -1.272175 -1.935175 0.598640 +v -1.232076 -1.935175 0.677340 +v -1.187114 -1.935175 0.753366 +v -1.137467 -1.935175 0.826418 +v -1.083331 -1.935175 0.896210 +v -1.024920 -1.935175 0.962464 +v -0.962464 -1.935175 1.024921 +v -0.896210 -1.935175 1.083332 +v -0.826418 -1.935175 1.137467 +v -0.753365 -1.935175 1.187114 +v -0.677339 -1.935175 1.232076 +v -0.598640 -1.935175 1.272175 +v -0.517578 -1.935175 1.307254 +v -0.434474 -1.935175 1.337173 +v -0.349655 -1.935175 1.361815 +v -0.263456 -1.935175 1.381083 +v -0.176217 -1.935175 1.394900 +v -0.088283 -1.935175 1.403213 +v 0.000000 -1.935175 1.405987 +v 0.088283 -1.935175 1.403213 +v 0.176217 -1.935175 1.394901 +v 0.263456 -1.935175 1.381083 +v 0.349655 -1.935175 1.361816 +v 0.434474 -1.935175 1.337173 +v 0.517579 -1.935175 1.307254 +v 0.598640 -1.935175 1.272175 +v 0.677340 -1.935175 1.232076 +v 0.753366 -1.935175 1.187114 +v 0.826419 -1.935175 1.137467 +v 0.896210 -1.935175 1.083332 +v 0.962465 -1.935175 1.024920 +v 1.024921 -1.935175 0.962464 +v 1.083332 -1.935175 0.896210 +v 1.137468 -1.935175 0.826418 +v 1.187114 -1.935175 0.753366 +v 1.232076 -1.935175 0.677340 +v 1.272175 -1.935175 0.598640 +v 1.307254 -1.935175 0.517578 +v 1.337173 -1.935175 0.434474 +v 1.361816 -1.935175 0.349655 +v 1.381083 -1.935175 0.263456 +v 1.394901 -1.935175 0.176217 +v 1.403213 -1.935175 0.088283 +v 1.405987 -1.935175 0.000000 +v 1.463185 -1.890057 -0.092056 +v 1.454518 -1.890057 -0.183748 +v 1.440110 -1.890057 -0.274716 +v 1.420019 -1.890057 -0.364599 +v 1.394323 -1.890057 -0.453043 +v 1.363125 -1.890057 -0.539699 +v 1.326547 -1.890057 -0.624226 +v 1.284734 -1.890057 -0.706288 +v 1.237851 -1.890057 -0.785564 +v 1.186082 -1.890057 -0.861739 +v 1.129633 -1.890057 -0.934513 +v 1.068725 -1.890057 -1.003600 +v 1.003600 -1.890057 -1.068725 +v 0.934513 -1.890057 -1.129633 +v 0.861739 -1.890057 -1.186082 +v 0.785564 -1.890057 -1.237851 +v 0.706289 -1.890057 -1.284734 +v 0.624226 -1.890057 -1.326547 +v 0.539699 -1.890057 -1.363125 +v 0.453043 -1.890057 -1.394323 +v 0.364599 -1.890057 -1.420018 +v 0.274716 -1.890057 -1.440110 +v 0.183748 -1.890057 -1.454518 +v 0.092056 -1.890057 -1.463185 +v 0.000000 -1.890057 -1.466078 +v -0.092056 -1.890057 -1.463185 +v -0.183748 -1.890057 -1.454518 +v -0.274716 -1.890057 -1.440110 +v -0.364599 -1.890057 -1.420019 +v -0.453043 -1.890057 -1.394323 +v -0.539699 -1.890057 -1.363125 +v -0.624226 -1.890057 -1.326547 +v -0.706289 -1.890057 -1.284734 +v -0.785564 -1.890057 -1.237851 +v -0.861739 -1.890057 -1.186082 +v -0.934513 -1.890057 -1.129633 +v -1.003600 -1.890057 -1.068725 +v -1.068725 -1.890057 -1.003600 +v -1.129633 -1.890057 -0.934513 +v -1.186082 -1.890057 -0.861739 +v -1.237851 -1.890057 -0.785564 +v -1.284734 -1.890057 -0.706288 +v -1.326547 -1.890057 -0.624226 +v -1.363125 -1.890057 -0.539699 +v -1.394323 -1.890057 -0.453043 +v -1.420019 -1.890057 -0.364599 +v -1.440110 -1.890057 -0.274716 +v -1.454518 -1.890057 -0.183748 +v -1.463185 -1.890057 -0.092056 +v -1.466078 -1.890057 0.000000 +v -1.463185 -1.890057 0.092056 +v -1.454518 -1.890057 0.183748 +v -1.440110 -1.890057 0.274716 +v -1.420019 -1.890057 0.364599 +v -1.394323 -1.890057 0.453043 +v -1.363125 -1.890057 0.539700 +v -1.326547 -1.890057 0.624226 +v -1.284734 -1.890057 0.706289 +v -1.237851 -1.890057 0.785564 +v -1.186082 -1.890057 0.861739 +v -1.129633 -1.890057 0.934514 +v -1.068725 -1.890057 1.003600 +v -1.003600 -1.890057 1.068725 +v -0.934514 -1.890057 1.129633 +v -0.861739 -1.890057 1.186083 +v -0.785564 -1.890057 1.237851 +v -0.706289 -1.890057 1.284734 +v -0.624226 -1.890057 1.326548 +v -0.539699 -1.890057 1.363125 +v -0.453043 -1.890057 1.394324 +v -0.364599 -1.890057 1.420019 +v -0.274716 -1.890057 1.440110 +v -0.183748 -1.890057 1.454518 +v -0.092056 -1.890057 1.463186 +v 0.000000 -1.890057 1.466079 +v 0.092056 -1.890057 1.463186 +v 0.183749 -1.890057 1.454518 +v 0.274716 -1.890057 1.440110 +v 0.364599 -1.890057 1.420019 +v 0.453043 -1.890057 1.394324 +v 0.539700 -1.890057 1.363126 +v 0.624226 -1.890057 1.326548 +v 0.706289 -1.890057 1.284735 +v 0.785564 -1.890057 1.237851 +v 0.861740 -1.890057 1.186082 +v 0.934514 -1.890057 1.129633 +v 1.003600 -1.890057 1.068725 +v 1.068726 -1.890057 1.003600 +v 1.129633 -1.890057 0.934514 +v 1.186083 -1.890057 0.861739 +v 1.237851 -1.890057 0.785564 +v 1.284735 -1.890057 0.706289 +v 1.326548 -1.890057 0.624226 +v 1.363126 -1.890057 0.539700 +v 1.394324 -1.890057 0.453043 +v 1.420019 -1.890057 0.364599 +v 1.440110 -1.890057 0.274716 +v 1.454518 -1.890057 0.183748 +v 1.463186 -1.890057 0.092056 +v 1.466079 -1.890057 0.000000 +v 1.521714 -1.843073 -0.095738 +v 1.512700 -1.843073 -0.191098 +v 1.497716 -1.843073 -0.285704 +v 1.476821 -1.843073 -0.379183 +v 1.450098 -1.843073 -0.471165 +v 1.417651 -1.843073 -0.561288 +v 1.379610 -1.843073 -0.649195 +v 1.336125 -1.843073 -0.734541 +v 1.287366 -1.843073 -0.816987 +v 1.233527 -1.843073 -0.896210 +v 1.174819 -1.843073 -0.971895 +v 1.111475 -1.843073 -1.043745 +v 1.043745 -1.843073 -1.111475 +v 0.971895 -1.843073 -1.174819 +v 0.896210 -1.843073 -1.233527 +v 0.816987 -1.843073 -1.287366 +v 0.734541 -1.843073 -1.336125 +v 0.649195 -1.843073 -1.379610 +v 0.561288 -1.843073 -1.417651 +v 0.471165 -1.843073 -1.450098 +v 0.379183 -1.843073 -1.476821 +v 0.285705 -1.843073 -1.497716 +v 0.191099 -1.843073 -1.512700 +v 0.095738 -1.843073 -1.521714 +v 0.000000 -1.843073 -1.524723 +v -0.095738 -1.843073 -1.521714 +v -0.191098 -1.843073 -1.512700 +v -0.285705 -1.843073 -1.497716 +v -0.379183 -1.843073 -1.476821 +v -0.471165 -1.843073 -1.450098 +v -0.561288 -1.843073 -1.417652 +v -0.649195 -1.843073 -1.379611 +v -0.734541 -1.843073 -1.336125 +v -0.816987 -1.843073 -1.287366 +v -0.896210 -1.843073 -1.233527 +v -0.971895 -1.843073 -1.174819 +v -1.043745 -1.843073 -1.111475 +v -1.111475 -1.843073 -1.043745 +v -1.174819 -1.843073 -0.971895 +v -1.233527 -1.843073 -0.896210 +v -1.287366 -1.843073 -0.816987 +v -1.336125 -1.843073 -0.734541 +v -1.379611 -1.843073 -0.649195 +v -1.417652 -1.843073 -0.561288 +v -1.450098 -1.843073 -0.471165 +v -1.476821 -1.843073 -0.379183 +v -1.497716 -1.843073 -0.285704 +v -1.512700 -1.843073 -0.191098 +v -1.521714 -1.843073 -0.095738 +v -1.524723 -1.843073 0.000000 +v -1.521714 -1.843073 0.095738 +v -1.512700 -1.843073 0.191099 +v -1.497716 -1.843073 0.285705 +v -1.476821 -1.843073 0.379183 +v -1.450098 -1.843073 0.471166 +v -1.417652 -1.843073 0.561288 +v -1.379611 -1.843073 0.649196 +v -1.336125 -1.843073 0.734541 +v -1.287366 -1.843073 0.816988 +v -1.233527 -1.843073 0.896210 +v -1.174819 -1.843073 0.971895 +v -1.111475 -1.843073 1.043745 +v -1.043745 -1.843073 1.111476 +v -0.971895 -1.843073 1.174820 +v -0.896210 -1.843073 1.233527 +v -0.816988 -1.843073 1.287367 +v -0.734541 -1.843073 1.336125 +v -0.649196 -1.843073 1.379611 +v -0.561288 -1.843073 1.417652 +v -0.471165 -1.843073 1.450098 +v -0.379183 -1.843073 1.476821 +v -0.285705 -1.843073 1.497716 +v -0.191098 -1.843073 1.512700 +v -0.095738 -1.843073 1.521715 +v 0.000000 -1.843073 1.524723 +v 0.095738 -1.843073 1.521715 +v 0.191099 -1.843073 1.512701 +v 0.285705 -1.843073 1.497716 +v 0.379183 -1.843073 1.476822 +v 0.471166 -1.843073 1.450098 +v 0.561288 -1.843073 1.417652 +v 0.649196 -1.843073 1.379611 +v 0.734541 -1.843073 1.336125 +v 0.816988 -1.843073 1.287367 +v 0.896210 -1.843073 1.233527 +v 0.971896 -1.843073 1.174820 +v 1.043745 -1.843073 1.111475 +v 1.111476 -1.843073 1.043745 +v 1.174820 -1.843073 0.971895 +v 1.233527 -1.843073 0.896210 +v 1.287367 -1.843073 0.816988 +v 1.336125 -1.843073 0.734541 +v 1.379611 -1.843073 0.649196 +v 1.417652 -1.843073 0.561288 +v 1.450098 -1.843073 0.471166 +v 1.476822 -1.843073 0.379183 +v 1.497717 -1.843073 0.285705 +v 1.512701 -1.843073 0.191099 +v 1.521715 -1.843073 0.095738 +v 1.524724 -1.843073 0.000000 +v 1.578741 -1.794271 -0.099326 +v 1.569389 -1.794271 -0.198260 +v 1.553844 -1.794271 -0.296411 +v 1.532166 -1.794271 -0.393393 +v 1.504441 -1.794271 -0.488822 +v 1.470779 -1.794271 -0.582322 +v 1.431312 -1.794271 -0.673524 +v 1.386197 -1.794271 -0.762068 +v 1.335611 -1.794271 -0.847604 +v 1.279754 -1.794271 -0.929796 +v 1.218846 -1.794271 -1.008317 +v 1.153128 -1.794271 -1.082860 +v 1.082860 -1.794271 -1.153128 +v 1.008317 -1.794271 -1.218846 +v 0.929796 -1.794271 -1.279754 +v 0.847604 -1.794271 -1.335611 +v 0.762068 -1.794271 -1.386197 +v 0.673524 -1.794271 -1.431312 +v 0.582323 -1.794271 -1.470779 +v 0.488823 -1.794271 -1.504441 +v 0.393393 -1.794271 -1.532166 +v 0.296412 -1.794271 -1.553844 +v 0.198260 -1.794271 -1.569389 +v 0.099326 -1.794271 -1.578741 +v 0.000000 -1.794271 -1.581863 +v -0.099326 -1.794271 -1.578741 +v -0.198260 -1.794271 -1.569389 +v -0.296411 -1.794271 -1.553844 +v -0.393393 -1.794271 -1.532166 +v -0.488822 -1.794271 -1.504441 +v -0.582323 -1.794271 -1.470779 +v -0.673524 -1.794271 -1.431312 +v -0.762068 -1.794271 -1.386197 +v -0.847605 -1.794271 -1.335611 +v -0.929796 -1.794271 -1.279754 +v -1.008317 -1.794271 -1.218846 +v -1.082860 -1.794271 -1.153128 +v -1.153129 -1.794271 -1.082860 +v -1.218846 -1.794271 -1.008317 +v -1.279754 -1.794271 -0.929796 +v -1.335611 -1.794271 -0.847604 +v -1.386197 -1.794271 -0.762068 +v -1.431312 -1.794271 -0.673524 +v -1.470779 -1.794271 -0.582322 +v -1.504441 -1.794271 -0.488822 +v -1.532166 -1.794271 -0.393393 +v -1.553844 -1.794271 -0.296411 +v -1.569390 -1.794271 -0.198260 +v -1.578742 -1.794271 -0.099326 +v -1.581863 -1.794271 0.000000 +v -1.578742 -1.794271 0.099326 +v -1.569390 -1.794271 0.198260 +v -1.553844 -1.794271 0.296412 +v -1.532166 -1.794271 0.393394 +v -1.504441 -1.794271 0.488823 +v -1.470779 -1.794271 0.582323 +v -1.431312 -1.794271 0.673525 +v -1.386197 -1.794271 0.762069 +v -1.335611 -1.794271 0.847605 +v -1.279754 -1.794271 0.929796 +v -1.218846 -1.794271 1.008318 +v -1.153129 -1.794271 1.082860 +v -1.082860 -1.794271 1.153129 +v -1.008318 -1.794271 1.218847 +v -0.929796 -1.794271 1.279754 +v -0.847605 -1.794271 1.335611 +v -0.762068 -1.794271 1.386197 +v -0.673525 -1.794271 1.431313 +v -0.582323 -1.794271 1.470779 +v -0.488823 -1.794271 1.504441 +v -0.393393 -1.794271 1.532166 +v -0.296411 -1.794271 1.553844 +v -0.198260 -1.794271 1.569390 +v -0.099326 -1.794271 1.578742 +v 0.000000 -1.794271 1.581863 +v 0.099326 -1.794271 1.578742 +v 0.198260 -1.794271 1.569390 +v 0.296412 -1.794271 1.553844 +v 0.393394 -1.794271 1.532166 +v 0.488823 -1.794271 1.504442 +v 0.582323 -1.794271 1.470780 +v 0.673525 -1.794271 1.431313 +v 0.762069 -1.794271 1.386197 +v 0.847605 -1.794271 1.335611 +v 0.929796 -1.794271 1.279754 +v 1.008318 -1.794271 1.218847 +v 1.082860 -1.794271 1.153129 +v 1.153129 -1.794271 1.082860 +v 1.218847 -1.794271 1.008318 +v 1.279755 -1.794271 0.929796 +v 1.335612 -1.794271 0.847605 +v 1.386198 -1.794271 0.762069 +v 1.431313 -1.794271 0.673525 +v 1.470780 -1.794271 0.582323 +v 1.504442 -1.794271 0.488823 +v 1.532166 -1.794271 0.393393 +v 1.553844 -1.794271 0.296412 +v 1.569390 -1.794271 0.198260 +v 1.578742 -1.794271 0.099326 +v 1.581864 -1.794271 0.000000 +v 1.634211 -1.743699 -0.102816 +v 1.624530 -1.743699 -0.205226 +v 1.608438 -1.743699 -0.306826 +v 1.585999 -1.743699 -0.407215 +v 1.557300 -1.743699 -0.505997 +v 1.522455 -1.743699 -0.602782 +v 1.481602 -1.743699 -0.697189 +v 1.434901 -1.743699 -0.788843 +v 1.382538 -1.743699 -0.877385 +v 1.324718 -1.743699 -0.962464 +v 1.261671 -1.743699 -1.043745 +v 1.193644 -1.743699 -1.120906 +v 1.120906 -1.743699 -1.193644 +v 1.043745 -1.743699 -1.261671 +v 0.962464 -1.743699 -1.324718 +v 0.877385 -1.743699 -1.382538 +v 0.788844 -1.743699 -1.434901 +v 0.697189 -1.743699 -1.481602 +v 0.602783 -1.743699 -1.522455 +v 0.505997 -1.743699 -1.557300 +v 0.407215 -1.743699 -1.585998 +v 0.306826 -1.743699 -1.608438 +v 0.205226 -1.743699 -1.624530 +v 0.102816 -1.743699 -1.634211 +v 0.000000 -1.743699 -1.637442 +v -0.102816 -1.743699 -1.634211 +v -0.205226 -1.743699 -1.624530 +v -0.306826 -1.743699 -1.608438 +v -0.407215 -1.743699 -1.585999 +v -0.505997 -1.743699 -1.557300 +v -0.602783 -1.743699 -1.522455 +v -0.697189 -1.743699 -1.481602 +v -0.788844 -1.743699 -1.434901 +v -0.877385 -1.743699 -1.382538 +v -0.962464 -1.743699 -1.324718 +v -1.043745 -1.743699 -1.261671 +v -1.120906 -1.743699 -1.193644 +v -1.193644 -1.743699 -1.120906 +v -1.261671 -1.743699 -1.043745 +v -1.324718 -1.743699 -0.962464 +v -1.382538 -1.743699 -0.877385 +v -1.434901 -1.743699 -0.788844 +v -1.481602 -1.743699 -0.697189 +v -1.522455 -1.743699 -0.602782 +v -1.557300 -1.743699 -0.505997 +v -1.585999 -1.743699 -0.407215 +v -1.608438 -1.743699 -0.306826 +v -1.624530 -1.743699 -0.205226 +v -1.634211 -1.743699 -0.102816 +v -1.637442 -1.743699 0.000000 +v -1.634211 -1.743699 0.102816 +v -1.624530 -1.743699 0.205226 +v -1.608438 -1.743699 0.306826 +v -1.585999 -1.743699 0.407215 +v -1.557300 -1.743699 0.505998 +v -1.522455 -1.743699 0.602783 +v -1.481602 -1.743699 0.697189 +v -1.434901 -1.743699 0.788844 +v -1.382538 -1.743699 0.877386 +v -1.324718 -1.743699 0.962465 +v -1.261671 -1.743699 1.043745 +v -1.193644 -1.743699 1.120907 +v -1.120906 -1.743699 1.193644 +v -1.043745 -1.743699 1.261671 +v -0.962464 -1.743699 1.324719 +v -0.877385 -1.743699 1.382538 +v -0.788844 -1.743699 1.434902 +v -0.697189 -1.743699 1.481602 +v -0.602783 -1.743699 1.522455 +v -0.505997 -1.743699 1.557300 +v -0.407215 -1.743699 1.585999 +v -0.306826 -1.743699 1.608439 +v -0.205226 -1.743699 1.624531 +v -0.102816 -1.743699 1.634211 +v 0.000000 -1.743699 1.637442 +v 0.102816 -1.743699 1.634211 +v 0.205226 -1.743699 1.624531 +v 0.306826 -1.743699 1.608439 +v 0.407216 -1.743699 1.585999 +v 0.505998 -1.743699 1.557300 +v 0.602783 -1.743699 1.522456 +v 0.697189 -1.743699 1.481602 +v 0.788844 -1.743699 1.434902 +v 0.877386 -1.743699 1.382538 +v 0.962465 -1.743699 1.324719 +v 1.043745 -1.743699 1.261671 +v 1.120907 -1.743699 1.193644 +v 1.193644 -1.743699 1.120906 +v 1.261671 -1.743699 1.043745 +v 1.324719 -1.743699 0.962465 +v 1.382539 -1.743699 0.877386 +v 1.434902 -1.743699 0.788844 +v 1.481602 -1.743699 0.697189 +v 1.522456 -1.743699 0.602783 +v 1.557300 -1.743699 0.505998 +v 1.585999 -1.743699 0.407215 +v 1.608439 -1.743699 0.306826 +v 1.624531 -1.743699 0.205226 +v 1.634212 -1.743699 0.102816 +v 1.637443 -1.743699 0.000000 +v 1.688067 -1.691405 -0.106204 +v 1.678067 -1.691405 -0.211989 +v 1.661445 -1.691405 -0.316937 +v 1.638266 -1.691405 -0.420635 +v 1.608621 -1.691405 -0.522673 +v 1.572628 -1.691405 -0.622647 +v 1.530429 -1.691405 -0.720165 +v 1.482189 -1.691405 -0.814840 +v 1.428100 -1.691405 -0.906300 +v 1.368375 -1.691405 -0.994183 +v 1.303250 -1.691405 -1.078142 +v 1.232981 -1.691405 -1.157846 +v 1.157846 -1.691405 -1.232981 +v 1.078142 -1.691405 -1.303250 +v 0.994183 -1.691405 -1.368375 +v 0.906300 -1.691405 -1.428100 +v 0.814840 -1.691405 -1.482189 +v 0.720165 -1.691405 -1.530429 +v 0.622648 -1.691405 -1.572628 +v 0.522673 -1.691405 -1.608621 +v 0.420635 -1.691405 -1.638266 +v 0.316938 -1.691405 -1.661445 +v 0.211989 -1.691405 -1.678067 +v 0.106204 -1.691405 -1.688067 +v 0.000000 -1.691405 -1.691405 +v -0.106204 -1.691405 -1.688067 +v -0.211989 -1.691405 -1.678067 +v -0.316938 -1.691405 -1.661445 +v -0.420635 -1.691405 -1.638266 +v -0.522673 -1.691405 -1.608622 +v -0.622648 -1.691405 -1.572628 +v -0.720165 -1.691405 -1.530429 +v -0.814841 -1.691405 -1.482189 +v -0.906300 -1.691405 -1.428100 +v -0.994183 -1.691405 -1.368375 +v -1.078142 -1.691405 -1.303250 +v -1.157846 -1.691405 -1.232981 +v -1.232981 -1.691405 -1.157846 +v -1.303250 -1.691405 -1.078142 +v -1.368375 -1.691405 -0.994183 +v -1.428100 -1.691405 -0.906300 +v -1.482189 -1.691405 -0.814840 +v -1.530429 -1.691405 -0.720165 +v -1.572628 -1.691405 -0.622647 +v -1.608622 -1.691405 -0.522673 +v -1.638266 -1.691405 -0.420635 +v -1.661445 -1.691405 -0.316938 +v -1.678068 -1.691405 -0.211989 +v -1.688067 -1.691405 -0.106204 +v -1.691405 -1.691405 0.000000 +v -1.688067 -1.691405 0.106204 +v -1.678068 -1.691405 0.211989 +v -1.661445 -1.691405 0.316938 +v -1.638266 -1.691405 0.420635 +v -1.608622 -1.691405 0.522673 +v -1.572629 -1.691405 0.622648 +v -1.530429 -1.691405 0.720165 +v -1.482189 -1.691405 0.814841 +v -1.428100 -1.691405 0.906300 +v -1.368375 -1.691405 0.994183 +v -1.303250 -1.691405 1.078142 +v -1.232981 -1.691405 1.157847 +v -1.157846 -1.691405 1.232981 +v -1.078142 -1.691405 1.303250 +v -0.994183 -1.691405 1.368376 +v -0.906300 -1.691405 1.428101 +v -0.814841 -1.691405 1.482190 +v -0.720165 -1.691405 1.530429 +v -0.622648 -1.691405 1.572629 +v -0.522673 -1.691405 1.608622 +v -0.420635 -1.691405 1.638267 +v -0.316938 -1.691405 1.661446 +v -0.211989 -1.691405 1.678068 +v -0.106204 -1.691405 1.688068 +v 0.000000 -1.691405 1.691405 +v 0.106204 -1.691405 1.688068 +v 0.211989 -1.691405 1.678068 +v 0.316938 -1.691405 1.661446 +v 0.420636 -1.691405 1.638267 +v 0.522673 -1.691405 1.608622 +v 0.622648 -1.691405 1.572629 +v 0.720166 -1.691405 1.530429 +v 0.814841 -1.691405 1.482190 +v 0.906300 -1.691405 1.428101 +v 0.994183 -1.691405 1.368375 +v 1.078143 -1.691405 1.303250 +v 1.157847 -1.691405 1.232981 +v 1.232982 -1.691405 1.157847 +v 1.303250 -1.691405 1.078142 +v 1.368376 -1.691405 0.994183 +v 1.428101 -1.691405 0.906300 +v 1.482190 -1.691405 0.814841 +v 1.530429 -1.691405 0.720165 +v 1.572629 -1.691405 0.622648 +v 1.608622 -1.691405 0.522673 +v 1.638267 -1.691405 0.420635 +v 1.661446 -1.691405 0.316938 +v 1.678068 -1.691405 0.211989 +v 1.688068 -1.691405 0.106204 +v 1.691405 -1.691405 0.000000 +v 1.740257 -1.637442 -0.109488 +v 1.729949 -1.637442 -0.218543 +v 1.712813 -1.637442 -0.326736 +v 1.688917 -1.637442 -0.433640 +v 1.658356 -1.637442 -0.538832 +v 1.621250 -1.637442 -0.641898 +v 1.577745 -1.637442 -0.742430 +v 1.528015 -1.637442 -0.840033 +v 1.472253 -1.637442 -0.934320 +v 1.410682 -1.637442 -1.024920 +v 1.343543 -1.637442 -1.111475 +v 1.271101 -1.637442 -1.193644 +v 1.193644 -1.637442 -1.271101 +v 1.111475 -1.637442 -1.343543 +v 1.024920 -1.637442 -1.410682 +v 0.934320 -1.637442 -1.472253 +v 0.840033 -1.637442 -1.528014 +v 0.742431 -1.637442 -1.577745 +v 0.641898 -1.637442 -1.621250 +v 0.538833 -1.637442 -1.658356 +v 0.433640 -1.637442 -1.688917 +v 0.326737 -1.637442 -1.712813 +v 0.218543 -1.637442 -1.729949 +v 0.109488 -1.637442 -1.740258 +v 0.000000 -1.637442 -1.743699 +v -0.109488 -1.637442 -1.740258 +v -0.218543 -1.637442 -1.729949 +v -0.326736 -1.637442 -1.712813 +v -0.433640 -1.637442 -1.688917 +v -0.538832 -1.637442 -1.658356 +v -0.641898 -1.637442 -1.621250 +v -0.742431 -1.637442 -1.577746 +v -0.840033 -1.637442 -1.528015 +v -0.934320 -1.637442 -1.472253 +v -1.024920 -1.637442 -1.410682 +v -1.111475 -1.637442 -1.343543 +v -1.193644 -1.637442 -1.271101 +v -1.271102 -1.637442 -1.193644 +v -1.343543 -1.637442 -1.111475 +v -1.410682 -1.637442 -1.024920 +v -1.472253 -1.637442 -0.934320 +v -1.528015 -1.637442 -0.840033 +v -1.577746 -1.637442 -0.742431 +v -1.621250 -1.637442 -0.641898 +v -1.658356 -1.637442 -0.538832 +v -1.688917 -1.637442 -0.433640 +v -1.712813 -1.637442 -0.326736 +v -1.729949 -1.637442 -0.218543 +v -1.740258 -1.637442 -0.109488 +v -1.743699 -1.637442 0.000000 +v -1.740258 -1.637442 0.109488 +v -1.729949 -1.637442 0.218544 +v -1.712813 -1.637442 0.326737 +v -1.688917 -1.637442 0.433640 +v -1.658356 -1.637442 0.538833 +v -1.621250 -1.637442 0.641898 +v -1.577746 -1.637442 0.742431 +v -1.528015 -1.637442 0.840033 +v -1.472253 -1.637442 0.934321 +v -1.410682 -1.637442 1.024921 +v -1.343543 -1.637442 1.111476 +v -1.271102 -1.637442 1.193644 +v -1.193644 -1.637442 1.271102 +v -1.111475 -1.637442 1.343543 +v -1.024920 -1.637442 1.410682 +v -0.934320 -1.637442 1.472254 +v -0.840033 -1.637442 1.528015 +v -0.742431 -1.637442 1.577746 +v -0.641898 -1.637442 1.621250 +v -0.538832 -1.637442 1.658356 +v -0.433640 -1.637442 1.688917 +v -0.326736 -1.637442 1.712813 +v -0.218543 -1.637442 1.729949 +v -0.109488 -1.637442 1.740258 +v 0.000000 -1.637442 1.743699 +v 0.109488 -1.637442 1.740258 +v 0.218544 -1.637442 1.729950 +v 0.326737 -1.637442 1.712813 +v 0.433641 -1.637442 1.688918 +v 0.538833 -1.637442 1.658356 +v 0.641899 -1.637442 1.621251 +v 0.742431 -1.637442 1.577746 +v 0.840034 -1.637442 1.528015 +v 0.934321 -1.637442 1.472254 +v 1.024921 -1.637442 1.410682 +v 1.111476 -1.637442 1.343543 +v 1.193644 -1.637442 1.271102 +v 1.271102 -1.637442 1.193644 +v 1.343543 -1.637442 1.111476 +v 1.410682 -1.637442 1.024921 +v 1.472254 -1.637442 0.934321 +v 1.528015 -1.637442 0.840033 +v 1.577746 -1.637442 0.742431 +v 1.621251 -1.637442 0.641898 +v 1.658356 -1.637442 0.538833 +v 1.688918 -1.637442 0.433640 +v 1.712814 -1.637442 0.326737 +v 1.729950 -1.637442 0.218543 +v 1.740258 -1.637442 0.109488 +v 1.743699 -1.637442 0.000000 +v 1.790730 -1.581863 -0.112663 +v 1.780123 -1.581863 -0.224882 +v 1.762490 -1.581863 -0.336213 +v 1.737901 -1.581863 -0.446217 +v 1.706453 -1.581863 -0.554460 +v 1.668271 -1.581863 -0.660515 +v 1.623505 -1.581863 -0.763963 +v 1.572332 -1.581863 -0.864397 +v 1.514953 -1.581863 -0.961418 +v 1.451596 -1.581863 -1.054646 +v 1.382510 -1.581863 -1.143711 +v 1.307967 -1.581863 -1.228263 +v 1.228263 -1.581863 -1.307967 +v 1.143711 -1.581863 -1.382510 +v 1.054646 -1.581863 -1.451596 +v 0.961419 -1.581863 -1.514953 +v 0.864397 -1.581863 -1.572332 +v 0.763964 -1.581863 -1.623505 +v 0.660515 -1.581863 -1.668271 +v 0.554460 -1.581863 -1.706453 +v 0.446217 -1.581863 -1.737901 +v 0.336213 -1.581863 -1.762490 +v 0.224882 -1.581863 -1.780123 +v 0.112663 -1.581863 -1.790731 +v 0.000000 -1.581863 -1.794271 +v -0.112663 -1.581863 -1.790731 +v -0.224882 -1.581863 -1.780123 +v -0.336213 -1.581863 -1.762490 +v -0.446217 -1.581863 -1.737901 +v -0.554460 -1.581863 -1.706453 +v -0.660515 -1.581863 -1.668271 +v -0.763964 -1.581863 -1.623505 +v -0.864397 -1.581863 -1.572332 +v -0.961419 -1.581863 -1.514953 +v -1.054646 -1.581863 -1.451596 +v -1.143712 -1.581863 -1.382510 +v -1.228263 -1.581863 -1.307967 +v -1.307968 -1.581863 -1.228263 +v -1.382510 -1.581863 -1.143711 +v -1.451596 -1.581863 -1.054646 +v -1.514953 -1.581863 -0.961419 +v -1.572332 -1.581863 -0.864397 +v -1.623505 -1.581863 -0.763963 +v -1.668271 -1.581863 -0.660515 +v -1.706453 -1.581863 -0.554460 +v -1.737901 -1.581863 -0.446217 +v -1.762490 -1.581863 -0.336213 +v -1.780123 -1.581863 -0.224882 +v -1.790731 -1.581863 -0.112663 +v -1.794271 -1.581863 0.000000 +v -1.790731 -1.581863 0.112663 +v -1.780123 -1.581863 0.224882 +v -1.762490 -1.581863 0.336213 +v -1.737901 -1.581863 0.446217 +v -1.706454 -1.581863 0.554461 +v -1.668271 -1.581863 0.660516 +v -1.623505 -1.581863 0.763964 +v -1.572332 -1.581863 0.864397 +v -1.514953 -1.581863 0.961419 +v -1.451596 -1.581863 1.054646 +v -1.382510 -1.581863 1.143712 +v -1.307968 -1.581863 1.228264 +v -1.228263 -1.581863 1.307968 +v -1.143712 -1.581863 1.382510 +v -1.054646 -1.581863 1.451596 +v -0.961419 -1.581863 1.514954 +v -0.864397 -1.581863 1.572332 +v -0.763964 -1.581863 1.623506 +v -0.660515 -1.581863 1.668272 +v -0.554460 -1.581863 1.706454 +v -0.446217 -1.581863 1.737901 +v -0.336213 -1.581863 1.762490 +v -0.224882 -1.581863 1.780123 +v -0.112663 -1.581863 1.790731 +v 0.000000 -1.581863 1.794272 +v 0.112663 -1.581863 1.790731 +v 0.224882 -1.581863 1.780124 +v 0.336213 -1.581863 1.762490 +v 0.446217 -1.581863 1.737901 +v 0.554461 -1.581863 1.706454 +v 0.660516 -1.581863 1.668272 +v 0.763964 -1.581863 1.623506 +v 0.864397 -1.581863 1.572332 +v 0.961419 -1.581863 1.514954 +v 1.054647 -1.581863 1.451596 +v 1.143712 -1.581863 1.382510 +v 1.228264 -1.581863 1.307968 +v 1.307968 -1.581863 1.228264 +v 1.382510 -1.581863 1.143712 +v 1.451597 -1.581863 1.054646 +v 1.514954 -1.581863 0.961419 +v 1.572333 -1.581863 0.864397 +v 1.623506 -1.581863 0.763964 +v 1.668272 -1.581863 0.660516 +v 1.706454 -1.581863 0.554461 +v 1.737901 -1.581863 0.446217 +v 1.762490 -1.581863 0.336213 +v 1.780124 -1.581863 0.224882 +v 1.790731 -1.581863 0.112663 +v 1.794272 -1.581863 0.000000 +v 1.839436 -1.524723 -0.115727 +v 1.828540 -1.524723 -0.230998 +v 1.810427 -1.524723 -0.345357 +v 1.785170 -1.524723 -0.458354 +v 1.752867 -1.524723 -0.569541 +v 1.713646 -1.524723 -0.678480 +v 1.667663 -1.524723 -0.784742 +v 1.615097 -1.524723 -0.887907 +v 1.556158 -1.524723 -0.987568 +v 1.491078 -1.524723 -1.083331 +v 1.420112 -1.524723 -1.174819 +v 1.343543 -1.524723 -1.261670 +v 1.261670 -1.524723 -1.343543 +v 1.174819 -1.524723 -1.420112 +v 1.083331 -1.524723 -1.491078 +v 0.987568 -1.524723 -1.556158 +v 0.887907 -1.524723 -1.615097 +v 0.784742 -1.524723 -1.667662 +v 0.678481 -1.524723 -1.713646 +v 0.569541 -1.524723 -1.752867 +v 0.458354 -1.524723 -1.785170 +v 0.345358 -1.524723 -1.810427 +v 0.230998 -1.524723 -1.828540 +v 0.115728 -1.524723 -1.839437 +v 0.000000 -1.524723 -1.843073 +v -0.115727 -1.524723 -1.839437 +v -0.230998 -1.524723 -1.828540 +v -0.345357 -1.524723 -1.810427 +v -0.458354 -1.524723 -1.785170 +v -0.569541 -1.524723 -1.752867 +v -0.678481 -1.524723 -1.713646 +v -0.784742 -1.524723 -1.667663 +v -0.887907 -1.524723 -1.615098 +v -0.987568 -1.524723 -1.556158 +v -1.083331 -1.524723 -1.491078 +v -1.174819 -1.524723 -1.420112 +v -1.261671 -1.524723 -1.343543 +v -1.343543 -1.524723 -1.261670 +v -1.420113 -1.524723 -1.174819 +v -1.491078 -1.524723 -1.083331 +v -1.556158 -1.524723 -0.987568 +v -1.615098 -1.524723 -0.887907 +v -1.667663 -1.524723 -0.784742 +v -1.713646 -1.524723 -0.678480 +v -1.752867 -1.524723 -0.569541 +v -1.785170 -1.524723 -0.458354 +v -1.810428 -1.524723 -0.345357 +v -1.828540 -1.524723 -0.230998 +v -1.839437 -1.524723 -0.115727 +v -1.843074 -1.524723 0.000000 +v -1.839437 -1.524723 0.115728 +v -1.828540 -1.524723 0.230999 +v -1.810428 -1.524723 0.345358 +v -1.785170 -1.524723 0.458354 +v -1.752867 -1.524723 0.569541 +v -1.713647 -1.524723 0.678481 +v -1.667663 -1.524723 0.784743 +v -1.615098 -1.524723 0.887908 +v -1.556158 -1.524723 0.987568 +v -1.491078 -1.524723 1.083332 +v -1.420113 -1.524723 1.174820 +v -1.343543 -1.524723 1.261671 +v -1.261671 -1.524723 1.343543 +v -1.174819 -1.524723 1.420113 +v -1.083331 -1.524723 1.491078 +v -0.987568 -1.524723 1.556159 +v -0.887907 -1.524723 1.615098 +v -0.784743 -1.524723 1.667663 +v -0.678481 -1.524723 1.713647 +v -0.569541 -1.524723 1.752868 +v -0.458354 -1.524723 1.785170 +v -0.345357 -1.524723 1.810428 +v -0.230998 -1.524723 1.828541 +v -0.115727 -1.524723 1.839437 +v 0.000000 -1.524723 1.843074 +v 0.115728 -1.524723 1.839437 +v 0.230999 -1.524723 1.828541 +v 0.345358 -1.524723 1.810428 +v 0.458354 -1.524723 1.785171 +v 0.569541 -1.524723 1.752868 +v 0.678481 -1.524723 1.713647 +v 0.784743 -1.524723 1.667663 +v 0.887908 -1.524723 1.615098 +v 0.987569 -1.524723 1.556159 +v 1.083332 -1.524723 1.491078 +v 1.174820 -1.524723 1.420113 +v 1.261671 -1.524723 1.343543 +v 1.343543 -1.524723 1.261671 +v 1.420113 -1.524723 1.174820 +v 1.491078 -1.524723 1.083332 +v 1.556159 -1.524723 0.987568 +v 1.615098 -1.524723 0.887908 +v 1.667663 -1.524723 0.784743 +v 1.713647 -1.524723 0.678481 +v 1.752868 -1.524723 0.569541 +v 1.785171 -1.524723 0.458354 +v 1.810428 -1.524723 0.345358 +v 1.828541 -1.524723 0.230998 +v 1.839437 -1.524723 0.115728 +v 1.843074 -1.524723 0.000000 +v 1.886327 -1.466078 -0.118678 +v 1.875153 -1.466078 -0.236887 +v 1.856578 -1.466078 -0.354161 +v 1.830677 -1.466078 -0.470038 +v 1.797551 -1.466078 -0.584059 +v 1.757330 -1.466078 -0.695776 +v 1.710174 -1.466078 -0.804747 +v 1.656269 -1.466078 -0.910542 +v 1.595828 -1.466078 -1.012743 +v 1.529088 -1.466078 -1.110947 +v 1.456314 -1.466078 -1.204767 +v 1.377792 -1.466078 -1.293833 +v 1.293833 -1.466078 -1.377792 +v 1.204768 -1.466078 -1.456314 +v 1.110947 -1.466078 -1.529088 +v 1.012743 -1.466078 -1.595827 +v 0.910542 -1.466078 -1.656269 +v 0.804747 -1.466078 -1.710174 +v 0.695776 -1.466078 -1.757330 +v 0.584060 -1.466078 -1.797551 +v 0.470038 -1.466078 -1.830677 +v 0.354161 -1.466078 -1.856578 +v 0.236887 -1.466078 -1.875153 +v 0.118678 -1.466078 -1.886327 +v 0.000000 -1.466078 -1.890057 +v -0.118678 -1.466078 -1.886327 +v -0.236887 -1.466078 -1.875153 +v -0.354161 -1.466078 -1.856579 +v -0.470038 -1.466078 -1.830677 +v -0.584060 -1.466078 -1.797551 +v -0.695776 -1.466078 -1.757330 +v -0.804747 -1.466078 -1.710174 +v -0.910542 -1.466078 -1.656269 +v -1.012743 -1.466078 -1.595828 +v -1.110948 -1.466078 -1.529088 +v -1.204768 -1.466078 -1.456314 +v -1.293833 -1.466078 -1.377792 +v -1.377792 -1.466078 -1.293833 +v -1.456314 -1.466078 -1.204768 +v -1.529088 -1.466078 -1.110947 +v -1.595828 -1.466078 -1.012743 +v -1.656269 -1.466078 -0.910542 +v -1.710174 -1.466078 -0.804747 +v -1.757330 -1.466078 -0.695776 +v -1.797551 -1.466078 -0.584060 +v -1.830677 -1.466078 -0.470038 +v -1.856579 -1.466078 -0.354161 +v -1.875153 -1.466078 -0.236887 +v -1.886327 -1.466078 -0.118677 +v -1.890057 -1.466078 0.000000 +v -1.886327 -1.466078 0.118678 +v -1.875153 -1.466078 0.236887 +v -1.856579 -1.466078 0.354162 +v -1.830677 -1.466078 0.470038 +v -1.797551 -1.466078 0.584060 +v -1.757331 -1.466078 0.695777 +v -1.710175 -1.466078 0.804747 +v -1.656270 -1.466078 0.910542 +v -1.595828 -1.466078 1.012743 +v -1.529088 -1.466078 1.110948 +v -1.456314 -1.466078 1.204768 +v -1.377792 -1.466078 1.293833 +v -1.293833 -1.466078 1.377793 +v -1.204768 -1.466078 1.456314 +v -1.110948 -1.466078 1.529088 +v -1.012743 -1.466078 1.595828 +v -0.910542 -1.466078 1.656270 +v -0.804747 -1.466078 1.710175 +v -0.695776 -1.466078 1.757331 +v -0.584060 -1.466078 1.797551 +v -0.470038 -1.466078 1.830678 +v -0.354161 -1.466078 1.856579 +v -0.236887 -1.466078 1.875154 +v -0.118677 -1.466078 1.886328 +v 0.000000 -1.466078 1.890057 +v 0.118678 -1.466078 1.886328 +v 0.236887 -1.466078 1.875154 +v 0.354162 -1.466078 1.856579 +v 0.470038 -1.466078 1.830678 +v 0.584060 -1.466078 1.797552 +v 0.695777 -1.466078 1.757331 +v 0.804747 -1.466078 1.710175 +v 0.910542 -1.466078 1.656270 +v 1.012744 -1.466078 1.595828 +v 1.110948 -1.466078 1.529088 +v 1.204768 -1.466078 1.456314 +v 1.293834 -1.466078 1.377792 +v 1.377793 -1.466078 1.293833 +v 1.456314 -1.466078 1.204768 +v 1.529089 -1.466078 1.110948 +v 1.595828 -1.466078 1.012743 +v 1.656270 -1.466078 0.910542 +v 1.710175 -1.466078 0.804747 +v 1.757331 -1.466078 0.695777 +v 1.797552 -1.466078 0.584060 +v 1.830678 -1.466078 0.470038 +v 1.856579 -1.466078 0.354161 +v 1.875154 -1.466078 0.236887 +v 1.886328 -1.466078 0.118678 +v 1.890058 -1.466078 0.000000 +v 1.931356 -1.405987 -0.121510 +v 1.919915 -1.405987 -0.242542 +v 1.900897 -1.405987 -0.362615 +v 1.874377 -1.405987 -0.481258 +v 1.840460 -1.405987 -0.598002 +v 1.799280 -1.405987 -0.712385 +v 1.750998 -1.405987 -0.823957 +v 1.695806 -1.405987 -0.932277 +v 1.633922 -1.405987 -1.036918 +v 1.565589 -1.405987 -1.137467 +v 1.491078 -1.405987 -1.233527 +v 1.410682 -1.405987 -1.324718 +v 1.324718 -1.405987 -1.410682 +v 1.233527 -1.405987 -1.491078 +v 1.137467 -1.405987 -1.565589 +v 1.036918 -1.405987 -1.633922 +v 0.932277 -1.405987 -1.695806 +v 0.823957 -1.405987 -1.750998 +v 0.712385 -1.405987 -1.799280 +v 0.598002 -1.405987 -1.840460 +v 0.481258 -1.405987 -1.874377 +v 0.362616 -1.405987 -1.900897 +v 0.242542 -1.405987 -1.919915 +v 0.121511 -1.405987 -1.931356 +v 0.000000 -1.405987 -1.935175 +v -0.121511 -1.405987 -1.931356 +v -0.242542 -1.405987 -1.919915 +v -0.362615 -1.405987 -1.900897 +v -0.481258 -1.405987 -1.874378 +v -0.598002 -1.405987 -1.840461 +v -0.712385 -1.405987 -1.799280 +v -0.823957 -1.405987 -1.750998 +v -0.932277 -1.405987 -1.695807 +v -1.036918 -1.405987 -1.633922 +v -1.137467 -1.405987 -1.565589 +v -1.233527 -1.405987 -1.491078 +v -1.324718 -1.405987 -1.410682 +v -1.410682 -1.405987 -1.324718 +v -1.491078 -1.405987 -1.233527 +v -1.565589 -1.405987 -1.137467 +v -1.633922 -1.405987 -1.036918 +v -1.695807 -1.405987 -0.932277 +v -1.750998 -1.405987 -0.823957 +v -1.799280 -1.405987 -0.712385 +v -1.840461 -1.405987 -0.598002 +v -1.874378 -1.405987 -0.481258 +v -1.900897 -1.405987 -0.362615 +v -1.919915 -1.405987 -0.242542 +v -1.931356 -1.405987 -0.121510 +v -1.935175 -1.405987 0.000000 +v -1.931356 -1.405987 0.121511 +v -1.919915 -1.405987 0.242542 +v -1.900898 -1.405987 0.362616 +v -1.874378 -1.405987 0.481259 +v -1.840461 -1.405987 0.598002 +v -1.799280 -1.405987 0.712386 +v -1.750998 -1.405987 0.823958 +v -1.695807 -1.405987 0.932278 +v -1.633922 -1.405987 1.036919 +v -1.565589 -1.405987 1.137467 +v -1.491078 -1.405987 1.233527 +v -1.410682 -1.405987 1.324719 +v -1.324718 -1.405987 1.410682 +v -1.233527 -1.405987 1.491078 +v -1.137467 -1.405987 1.565590 +v -1.036919 -1.405987 1.633923 +v -0.932278 -1.405987 1.695807 +v -0.823957 -1.405987 1.750999 +v -0.712385 -1.405987 1.799280 +v -0.598002 -1.405987 1.840461 +v -0.481258 -1.405987 1.874378 +v -0.362615 -1.405987 1.900898 +v -0.242542 -1.405987 1.919916 +v -0.121510 -1.405987 1.931357 +v 0.000000 -1.405987 1.935175 +v 0.121511 -1.405987 1.931357 +v 0.242542 -1.405987 1.919916 +v 0.362616 -1.405987 1.900898 +v 0.481259 -1.405987 1.874378 +v 0.598002 -1.405987 1.840461 +v 0.712386 -1.405987 1.799281 +v 0.823958 -1.405987 1.750999 +v 0.932278 -1.405987 1.695807 +v 1.036919 -1.405987 1.633923 +v 1.137468 -1.405987 1.565590 +v 1.233527 -1.405987 1.491078 +v 1.324719 -1.405987 1.410682 +v 1.410682 -1.405987 1.324719 +v 1.491078 -1.405987 1.233527 +v 1.565590 -1.405987 1.137467 +v 1.633923 -1.405987 1.036919 +v 1.695807 -1.405987 0.932278 +v 1.750999 -1.405987 0.823958 +v 1.799281 -1.405987 0.712386 +v 1.840461 -1.405987 0.598002 +v 1.874378 -1.405987 0.481259 +v 1.900898 -1.405987 0.362616 +v 1.919916 -1.405987 0.242542 +v 1.931357 -1.405987 0.121511 +v 1.935176 -1.405987 0.000000 +v 1.974479 -1.344507 -0.124224 +v 1.962782 -1.344507 -0.247957 +v 1.943340 -1.344507 -0.370712 +v 1.916228 -1.344507 -0.492004 +v 1.881554 -1.344507 -0.611354 +v 1.839454 -1.344507 -0.728291 +v 1.790094 -1.344507 -0.842354 +v 1.733670 -1.344507 -0.953093 +v 1.670404 -1.344507 -1.060070 +v 1.600545 -1.344507 -1.162864 +v 1.524370 -1.344507 -1.261069 +v 1.442179 -1.344507 -1.354296 +v 1.354296 -1.344507 -1.442179 +v 1.261069 -1.344507 -1.524370 +v 1.162864 -1.344507 -1.600545 +v 1.060070 -1.344507 -1.670404 +v 0.953093 -1.344507 -1.733670 +v 0.842354 -1.344507 -1.790094 +v 0.728291 -1.344507 -1.839454 +v 0.611354 -1.344507 -1.881554 +v 0.492004 -1.344507 -1.916228 +v 0.370712 -1.344507 -1.943340 +v 0.247957 -1.344507 -1.962782 +v 0.124224 -1.344507 -1.974479 +v 0.000000 -1.344507 -1.978383 +v -0.124224 -1.344507 -1.974479 +v -0.247957 -1.344507 -1.962783 +v -0.370712 -1.344507 -1.943340 +v -0.492004 -1.344507 -1.916228 +v -0.611354 -1.344507 -1.881554 +v -0.728291 -1.344507 -1.839454 +v -0.842354 -1.344507 -1.790094 +v -0.953093 -1.344507 -1.733670 +v -1.060071 -1.344507 -1.670404 +v -1.162864 -1.344507 -1.600545 +v -1.261069 -1.344507 -1.524370 +v -1.354296 -1.344507 -1.442179 +v -1.442179 -1.344507 -1.354296 +v -1.524370 -1.344507 -1.261069 +v -1.600546 -1.344507 -1.162864 +v -1.670404 -1.344507 -1.060070 +v -1.733670 -1.344507 -0.953093 +v -1.790094 -1.344507 -0.842354 +v -1.839454 -1.344507 -0.728291 +v -1.881554 -1.344507 -0.611354 +v -1.916228 -1.344507 -0.492004 +v -1.943340 -1.344507 -0.370712 +v -1.962783 -1.344507 -0.247957 +v -1.974479 -1.344507 -0.124224 +v -1.978383 -1.344507 0.000000 +v -1.974479 -1.344507 0.124224 +v -1.962783 -1.344507 0.247957 +v -1.943340 -1.344507 0.370712 +v -1.916228 -1.344507 0.492004 +v -1.881554 -1.344507 0.611354 +v -1.839454 -1.344507 0.728292 +v -1.790094 -1.344507 0.842355 +v -1.733670 -1.344507 0.953094 +v -1.670404 -1.344507 1.060071 +v -1.600546 -1.344507 1.162865 +v -1.524370 -1.344507 1.261069 +v -1.442179 -1.344507 1.354297 +v -1.354296 -1.344507 1.442179 +v -1.261069 -1.344507 1.524371 +v -1.162864 -1.344507 1.600546 +v -1.060071 -1.344507 1.670404 +v -0.953093 -1.344507 1.733670 +v -0.842354 -1.344507 1.790095 +v -0.728291 -1.344507 1.839454 +v -0.611354 -1.344507 1.881554 +v -0.492004 -1.344507 1.916229 +v -0.370712 -1.344507 1.943341 +v -0.247957 -1.344507 1.962783 +v -0.124224 -1.344507 1.974479 +v 0.000000 -1.344507 1.978383 +v 0.124224 -1.344507 1.974479 +v 0.247957 -1.344507 1.962783 +v 0.370712 -1.344507 1.943341 +v 0.492004 -1.344507 1.916229 +v 0.611354 -1.344507 1.881555 +v 0.728292 -1.344507 1.839454 +v 0.842355 -1.344507 1.790095 +v 0.953094 -1.344507 1.733671 +v 1.060071 -1.344507 1.670404 +v 1.162865 -1.344507 1.600546 +v 1.261069 -1.344507 1.524371 +v 1.354297 -1.344507 1.442179 +v 1.442180 -1.344507 1.354297 +v 1.524371 -1.344507 1.261069 +v 1.600546 -1.344507 1.162865 +v 1.670405 -1.344507 1.060071 +v 1.733671 -1.344507 0.953094 +v 1.790095 -1.344507 0.842355 +v 1.839454 -1.344507 0.728292 +v 1.881555 -1.344507 0.611354 +v 1.916229 -1.344507 0.492004 +v 1.943341 -1.344507 0.370712 +v 1.962783 -1.344507 0.247957 +v 1.974480 -1.344507 0.124224 +v 1.978384 -1.344507 0.000000 +v 2.015653 -1.281701 -0.126814 +v 2.003713 -1.281701 -0.253128 +v 1.983865 -1.281701 -0.378442 +v 1.956188 -1.281701 -0.502264 +v 1.920790 -1.281701 -0.624102 +v 1.877812 -1.281701 -0.743478 +v 1.827424 -1.281701 -0.859920 +v 1.769823 -1.281701 -0.972968 +v 1.705237 -1.281701 -1.082176 +v 1.633922 -1.281701 -1.187114 +v 1.556158 -1.281701 -1.287366 +v 1.472253 -1.281701 -1.382538 +v 1.382538 -1.281701 -1.472253 +v 1.287366 -1.281701 -1.556158 +v 1.187114 -1.281701 -1.633922 +v 1.082176 -1.281701 -1.705237 +v 0.972968 -1.281701 -1.769823 +v 0.859920 -1.281701 -1.827423 +v 0.743479 -1.281701 -1.877812 +v 0.624103 -1.281701 -1.920790 +v 0.502264 -1.281701 -1.956188 +v 0.378443 -1.281701 -1.983865 +v 0.253128 -1.281701 -2.003713 +v 0.126814 -1.281701 -2.015653 +v 0.000000 -1.281701 -2.019639 +v -0.126814 -1.281701 -2.015653 +v -0.253128 -1.281701 -2.003713 +v -0.378442 -1.281701 -1.983865 +v -0.502264 -1.281701 -1.956188 +v -0.624103 -1.281701 -1.920791 +v -0.743479 -1.281701 -1.877813 +v -0.859920 -1.281701 -1.827424 +v -0.972968 -1.281701 -1.769823 +v -1.082176 -1.281701 -1.705237 +v -1.187114 -1.281701 -1.633922 +v -1.287366 -1.281701 -1.556158 +v -1.382538 -1.281701 -1.472253 +v -1.472253 -1.281701 -1.382538 +v -1.556159 -1.281701 -1.287366 +v -1.633922 -1.281701 -1.187114 +v -1.705237 -1.281701 -1.082176 +v -1.769823 -1.281701 -0.972968 +v -1.827424 -1.281701 -0.859920 +v -1.877813 -1.281701 -0.743478 +v -1.920791 -1.281701 -0.624103 +v -1.956188 -1.281701 -0.502264 +v -1.983865 -1.281701 -0.378442 +v -2.003713 -1.281701 -0.253128 +v -2.015654 -1.281701 -0.126814 +v -2.019639 -1.281701 0.000000 +v -2.015654 -1.281701 0.126814 +v -2.003713 -1.281701 0.253128 +v -1.983866 -1.281701 0.378443 +v -1.956188 -1.281701 0.502264 +v -1.920791 -1.281701 0.624103 +v -1.877813 -1.281701 0.743479 +v -1.827424 -1.281701 0.859921 +v -1.769823 -1.281701 0.972969 +v -1.705238 -1.281701 1.082177 +v -1.633922 -1.281701 1.187114 +v -1.556159 -1.281701 1.287367 +v -1.472253 -1.281701 1.382538 +v -1.382538 -1.281701 1.472254 +v -1.287366 -1.281701 1.556159 +v -1.187114 -1.281701 1.633923 +v -1.082177 -1.281701 1.705238 +v -0.972968 -1.281701 1.769823 +v -0.859920 -1.281701 1.827424 +v -0.743479 -1.281701 1.877813 +v -0.624103 -1.281701 1.920791 +v -0.502264 -1.281701 1.956189 +v -0.378442 -1.281701 1.983866 +v -0.253128 -1.281701 2.003714 +v -0.126814 -1.281701 2.015654 +v 0.000000 -1.281701 2.019639 +v 0.126814 -1.281701 2.015654 +v 0.253128 -1.281701 2.003714 +v 0.378443 -1.281701 1.983866 +v 0.502264 -1.281701 1.956189 +v 0.624103 -1.281701 1.920791 +v 0.743479 -1.281701 1.877813 +v 0.859921 -1.281701 1.827424 +v 0.972969 -1.281701 1.769823 +v 1.082177 -1.281701 1.705238 +v 1.187114 -1.281701 1.633922 +v 1.287367 -1.281701 1.556159 +v 1.382539 -1.281701 1.472254 +v 1.472254 -1.281701 1.382538 +v 1.556159 -1.281701 1.287367 +v 1.633923 -1.281701 1.187114 +v 1.705238 -1.281701 1.082177 +v 1.769824 -1.281701 0.972969 +v 1.827424 -1.281701 0.859921 +v 1.877813 -1.281701 0.743479 +v 1.920791 -1.281701 0.624103 +v 1.956189 -1.281701 0.502264 +v 1.983866 -1.281701 0.378443 +v 2.003714 -1.281701 0.253128 +v 2.015654 -1.281701 0.126814 +v 2.019640 -1.281701 0.000000 +v 2.054838 -1.217630 -0.129279 +v 2.042666 -1.217630 -0.258049 +v 2.022432 -1.217630 -0.385799 +v 1.994217 -1.217630 -0.512028 +v 1.958131 -1.217630 -0.636235 +v 1.914318 -1.217630 -0.757932 +v 1.862949 -1.217630 -0.876637 +v 1.804229 -1.217630 -0.991883 +v 1.738388 -1.217630 -1.103214 +v 1.665686 -1.217630 -1.210192 +v 1.586411 -1.217630 -1.312393 +v 1.500874 -1.217630 -1.409415 +v 1.409415 -1.217630 -1.500874 +v 1.312393 -1.217630 -1.586411 +v 1.210192 -1.217630 -1.665686 +v 1.103214 -1.217630 -1.738388 +v 0.991883 -1.217630 -1.804229 +v 0.876638 -1.217630 -1.862949 +v 0.757932 -1.217630 -1.914318 +v 0.636236 -1.217630 -1.958131 +v 0.512028 -1.217630 -1.994217 +v 0.385800 -1.217630 -2.022432 +v 0.258049 -1.217630 -2.042666 +v 0.129280 -1.217630 -2.054838 +v 0.000000 -1.217630 -2.058901 +v -0.129279 -1.217630 -2.054838 +v -0.258049 -1.217630 -2.042666 +v -0.385800 -1.217630 -2.022433 +v -0.512028 -1.217630 -1.994217 +v -0.636235 -1.217630 -1.958132 +v -0.757932 -1.217630 -1.914318 +v -0.876638 -1.217630 -1.862950 +v -0.991883 -1.217630 -1.804229 +v -1.103214 -1.217630 -1.738388 +v -1.210192 -1.217630 -1.665686 +v -1.312393 -1.217630 -1.586411 +v -1.409415 -1.217630 -1.500874 +v -1.500875 -1.217630 -1.409415 +v -1.586411 -1.217630 -1.312393 +v -1.665686 -1.217630 -1.210192 +v -1.738388 -1.217630 -1.103214 +v -1.804229 -1.217630 -0.991883 +v -1.862950 -1.217630 -0.876637 +v -1.914318 -1.217630 -0.757932 +v -1.958132 -1.217630 -0.636235 +v -1.994217 -1.217630 -0.512028 +v -2.022433 -1.217630 -0.385799 +v -2.042666 -1.217630 -0.258049 +v -2.054839 -1.217630 -0.129279 +v -2.058901 -1.217630 0.000000 +v -2.054839 -1.217630 0.129280 +v -2.042666 -1.217630 0.258049 +v -2.022433 -1.217630 0.385800 +v -1.994217 -1.217630 0.512028 +v -1.958132 -1.217630 0.636236 +v -1.914318 -1.217630 0.757932 +v -1.862950 -1.217630 0.876638 +v -1.804229 -1.217630 0.991884 +v -1.738388 -1.217630 1.103215 +v -1.665686 -1.217630 1.210192 +v -1.586411 -1.217630 1.312393 +v -1.500875 -1.217630 1.409415 +v -1.409415 -1.217630 1.500875 +v -1.312393 -1.217630 1.586411 +v -1.210192 -1.217630 1.665687 +v -1.103215 -1.217630 1.738388 +v -0.991883 -1.217630 1.804229 +v -0.876638 -1.217630 1.862950 +v -0.757932 -1.217630 1.914318 +v -0.636235 -1.217630 1.958132 +v -0.512028 -1.217630 1.994218 +v -0.385800 -1.217630 2.022433 +v -0.258049 -1.217630 2.042667 +v -0.129279 -1.217630 2.054839 +v 0.000000 -1.217630 2.058902 +v 0.129280 -1.217630 2.054839 +v 0.258049 -1.217630 2.042667 +v 0.385800 -1.217630 2.022433 +v 0.512028 -1.217630 1.994218 +v 0.636236 -1.217630 1.958132 +v 0.757933 -1.217630 1.914319 +v 0.876638 -1.217630 1.862950 +v 0.991884 -1.217630 1.804230 +v 1.103215 -1.217630 1.738388 +v 1.210192 -1.217630 1.665686 +v 1.312394 -1.217630 1.586411 +v 1.409416 -1.217630 1.500875 +v 1.500875 -1.217630 1.409415 +v 1.586411 -1.217630 1.312393 +v 1.665687 -1.217630 1.210192 +v 1.738389 -1.217630 1.103215 +v 1.804230 -1.217630 0.991884 +v 1.862950 -1.217630 0.876638 +v 1.914319 -1.217630 0.757932 +v 1.958132 -1.217630 0.636236 +v 1.994218 -1.217630 0.512028 +v 2.022433 -1.217630 0.385800 +v 2.042667 -1.217630 0.258049 +v 2.054839 -1.217630 0.129280 +v 2.058902 -1.217630 0.000000 +v 2.091996 -1.152358 -0.131617 +v 2.079603 -1.152358 -0.262715 +v 2.059004 -1.152358 -0.392776 +v 2.030278 -1.152358 -0.521287 +v 1.993540 -1.152358 -0.647740 +v 1.948934 -1.152358 -0.771637 +v 1.896637 -1.152358 -0.892489 +v 1.836854 -1.152358 -1.009819 +v 1.769823 -1.152358 -1.123164 +v 1.695806 -1.152358 -1.232075 +v 1.615097 -1.152358 -1.336125 +v 1.528014 -1.152358 -1.434901 +v 1.434901 -1.152358 -1.528014 +v 1.336125 -1.152358 -1.615097 +v 1.232075 -1.152358 -1.695806 +v 1.123164 -1.152358 -1.769823 +v 1.009819 -1.152358 -1.836854 +v 0.892490 -1.152358 -1.896637 +v 0.771638 -1.152358 -1.948934 +v 0.647741 -1.152358 -1.993540 +v 0.521287 -1.152358 -2.030278 +v 0.392776 -1.152358 -2.059004 +v 0.262715 -1.152358 -2.079603 +v 0.131617 -1.152358 -2.091996 +v 0.000000 -1.152358 -2.096132 +v -0.131617 -1.152358 -2.091996 +v -0.262715 -1.152358 -2.079603 +v -0.392776 -1.152358 -2.059004 +v -0.521287 -1.152358 -2.030278 +v -0.647740 -1.152358 -1.993540 +v -0.771638 -1.152358 -1.948934 +v -0.892490 -1.152358 -1.896637 +v -1.009819 -1.152358 -1.836855 +v -1.123164 -1.152358 -1.769823 +v -1.232076 -1.152358 -1.695806 +v -1.336125 -1.152358 -1.615097 +v -1.434901 -1.152358 -1.528014 +v -1.528015 -1.152358 -1.434901 +v -1.615098 -1.152358 -1.336125 +v -1.695807 -1.152358 -1.232075 +v -1.769823 -1.152358 -1.123164 +v -1.836855 -1.152358 -1.009819 +v -1.896637 -1.152358 -0.892490 +v -1.948934 -1.152358 -0.771638 +v -1.993540 -1.152358 -0.647740 +v -2.030278 -1.152358 -0.521287 +v -2.059004 -1.152358 -0.392776 +v -2.079604 -1.152358 -0.262715 +v -2.091996 -1.152358 -0.131617 +v -2.096132 -1.152358 0.000000 +v -2.091996 -1.152358 0.131617 +v -2.079604 -1.152358 0.262715 +v -2.059004 -1.152358 0.392776 +v -2.030279 -1.152358 0.521287 +v -1.993540 -1.152358 0.647741 +v -1.948935 -1.152358 0.771638 +v -1.896637 -1.152358 0.892490 +v -1.836855 -1.152358 1.009820 +v -1.769823 -1.152358 1.123164 +v -1.695807 -1.152358 1.232076 +v -1.615098 -1.152358 1.336125 +v -1.528015 -1.152358 1.434902 +v -1.434901 -1.152358 1.528015 +v -1.336125 -1.152358 1.615098 +v -1.232076 -1.152358 1.695807 +v -1.123164 -1.152358 1.769823 +v -1.009819 -1.152358 1.836855 +v -0.892490 -1.152358 1.896638 +v -0.771638 -1.152358 1.948935 +v -0.647740 -1.152358 1.993541 +v -0.521287 -1.152358 2.030279 +v -0.392776 -1.152358 2.059004 +v -0.262715 -1.152358 2.079604 +v -0.131617 -1.152358 2.091997 +v 0.000000 -1.152358 2.096133 +v 0.131617 -1.152358 2.091997 +v 0.262715 -1.152358 2.079604 +v 0.392776 -1.152358 2.059005 +v 0.521287 -1.152358 2.030279 +v 0.647741 -1.152358 1.993541 +v 0.771638 -1.152358 1.948935 +v 0.892490 -1.152358 1.896638 +v 1.009820 -1.152358 1.836855 +v 1.123164 -1.152358 1.769823 +v 1.232076 -1.152358 1.695807 +v 1.336126 -1.152358 1.615098 +v 1.434902 -1.152358 1.528015 +v 1.528015 -1.152358 1.434902 +v 1.615098 -1.152358 1.336125 +v 1.695807 -1.152358 1.232076 +v 1.769824 -1.152358 1.123164 +v 1.836855 -1.152358 1.009820 +v 1.896638 -1.152358 0.892490 +v 1.948935 -1.152358 0.771638 +v 1.993541 -1.152358 0.647741 +v 2.030279 -1.152358 0.521287 +v 2.059005 -1.152358 0.392776 +v 2.079604 -1.152358 0.262715 +v 2.091997 -1.152358 0.131617 +v 2.096133 -1.152358 0.000000 +v 2.127088 -1.085948 -0.133825 +v 2.114488 -1.085948 -0.267122 +v 2.093543 -1.085948 -0.399364 +v 2.064335 -1.085948 -0.530031 +v 2.026981 -1.085948 -0.658606 +v 1.981627 -1.085948 -0.784581 +v 1.928452 -1.085948 -0.907461 +v 1.867667 -1.085948 -1.026758 +v 1.799511 -1.085948 -1.142004 +v 1.724253 -1.085948 -1.252743 +v 1.642190 -1.085948 -1.358538 +v 1.553646 -1.085948 -1.458971 +v 1.458971 -1.085948 -1.553646 +v 1.358538 -1.085948 -1.642190 +v 1.252743 -1.085948 -1.724253 +v 1.142004 -1.085948 -1.799511 +v 1.026759 -1.085948 -1.867667 +v 0.907461 -1.085948 -1.928452 +v 0.784582 -1.085948 -1.981627 +v 0.658606 -1.085948 -2.026981 +v 0.530031 -1.085948 -2.064335 +v 0.399365 -1.085948 -2.093543 +v 0.267122 -1.085948 -2.114488 +v 0.133825 -1.085948 -2.127088 +v 0.000000 -1.085948 -2.131294 +v -0.133825 -1.085948 -2.127088 +v -0.267122 -1.085948 -2.114488 +v -0.399365 -1.085948 -2.093543 +v -0.530031 -1.085948 -2.064336 +v -0.658606 -1.085948 -2.026981 +v -0.784582 -1.085948 -1.981627 +v -0.907461 -1.085948 -1.928452 +v -1.026759 -1.085948 -1.867667 +v -1.142004 -1.085948 -1.799511 +v -1.252743 -1.085948 -1.724253 +v -1.358538 -1.085948 -1.642190 +v -1.458971 -1.085948 -1.553646 +v -1.553647 -1.085948 -1.458971 +v -1.642191 -1.085948 -1.358538 +v -1.724253 -1.085948 -1.252743 +v -1.799511 -1.085948 -1.142004 +v -1.867667 -1.085948 -1.026759 +v -1.928452 -1.085948 -0.907461 +v -1.981627 -1.085948 -0.784582 +v -2.026981 -1.085948 -0.658606 +v -2.064336 -1.085948 -0.530031 +v -2.093543 -1.085948 -0.399365 +v -2.114488 -1.085948 -0.267122 +v -2.127089 -1.085948 -0.133825 +v -2.131294 -1.085948 0.000000 +v -2.127089 -1.085948 0.133825 +v -2.114488 -1.085948 0.267122 +v -2.093543 -1.085948 0.399365 +v -2.064336 -1.085948 0.530032 +v -2.026981 -1.085948 0.658606 +v -1.981627 -1.085948 0.784582 +v -1.928453 -1.085948 0.907461 +v -1.867668 -1.085948 1.026759 +v -1.799511 -1.085948 1.142005 +v -1.724253 -1.085948 1.252744 +v -1.642191 -1.085948 1.358538 +v -1.553647 -1.085948 1.458972 +v -1.458971 -1.085948 1.553647 +v -1.358538 -1.085948 1.642191 +v -1.252743 -1.085948 1.724254 +v -1.142005 -1.085948 1.799512 +v -1.026759 -1.085948 1.867668 +v -0.907461 -1.085948 1.928453 +v -0.784582 -1.085948 1.981628 +v -0.658606 -1.085948 2.026982 +v -0.530031 -1.085948 2.064336 +v -0.399365 -1.085948 2.093544 +v -0.267122 -1.085948 2.114489 +v -0.133825 -1.085948 2.127089 +v 0.000000 -1.085948 2.131295 +v 0.133825 -1.085948 2.127089 +v 0.267122 -1.085948 2.114489 +v 0.399365 -1.085948 2.093544 +v 0.530032 -1.085948 2.064336 +v 0.658607 -1.085948 2.026982 +v 0.784582 -1.085948 1.981628 +v 0.907461 -1.085948 1.928453 +v 1.026759 -1.085948 1.867668 +v 1.142005 -1.085948 1.799512 +v 1.252744 -1.085948 1.724253 +v 1.358539 -1.085948 1.642191 +v 1.458972 -1.085948 1.553647 +v 1.553647 -1.085948 1.458972 +v 1.642191 -1.085948 1.358538 +v 1.724254 -1.085948 1.252744 +v 1.799512 -1.085948 1.142005 +v 1.867668 -1.085948 1.026759 +v 1.928453 -1.085948 0.907461 +v 1.981628 -1.085948 0.784582 +v 2.026982 -1.085948 0.658606 +v 2.064336 -1.085948 0.530032 +v 2.093544 -1.085948 0.399365 +v 2.114489 -1.085948 0.267122 +v 2.127089 -1.085948 0.133825 +v 2.131295 -1.085948 0.000000 +v 2.160082 -1.018467 -0.135901 +v 2.147286 -1.018467 -0.271265 +v 2.126016 -1.018467 -0.405559 +v 2.096356 -1.018467 -0.538252 +v 2.058422 -1.018467 -0.668822 +v 2.012364 -1.018467 -0.796751 +v 1.958365 -1.018467 -0.921536 +v 1.896637 -1.018467 -1.042685 +v 1.827424 -1.018467 -1.159718 +v 1.750998 -1.018467 -1.272175 +v 1.667663 -1.018467 -1.379610 +v 1.577745 -1.018467 -1.481602 +v 1.481602 -1.018467 -1.577745 +v 1.379610 -1.018467 -1.667663 +v 1.272175 -1.018467 -1.750998 +v 1.159718 -1.018467 -1.827423 +v 1.042685 -1.018467 -1.896637 +v 0.921537 -1.018467 -1.958365 +v 0.796751 -1.018467 -2.012364 +v 0.668822 -1.018467 -2.058422 +v 0.538253 -1.018467 -2.096356 +v 0.405559 -1.018467 -2.126016 +v 0.271265 -1.018467 -2.147286 +v 0.135901 -1.018467 -2.160082 +v 0.000000 -1.018467 -2.164353 +v -0.135901 -1.018467 -2.160082 +v -0.271265 -1.018467 -2.147286 +v -0.405559 -1.018467 -2.126016 +v -0.538253 -1.018467 -2.096356 +v -0.668822 -1.018467 -2.058422 +v -0.796751 -1.018467 -2.012365 +v -0.921537 -1.018467 -1.958365 +v -1.042685 -1.018467 -1.896637 +v -1.159718 -1.018467 -1.827424 +v -1.272175 -1.018467 -1.750998 +v -1.379611 -1.018467 -1.667663 +v -1.481602 -1.018467 -1.577745 +v -1.577746 -1.018467 -1.481602 +v -1.667663 -1.018467 -1.379610 +v -1.750998 -1.018467 -1.272175 +v -1.827424 -1.018467 -1.159718 +v -1.896637 -1.018467 -1.042685 +v -1.958365 -1.018467 -0.921537 +v -2.012365 -1.018467 -0.796751 +v -2.058422 -1.018467 -0.668822 +v -2.096356 -1.018467 -0.538253 +v -2.126016 -1.018467 -0.405559 +v -2.147286 -1.018467 -0.271265 +v -2.160082 -1.018467 -0.135901 +v -2.164353 -1.018467 0.000000 +v -2.160082 -1.018467 0.135901 +v -2.147287 -1.018467 0.271266 +v -2.126017 -1.018467 0.405560 +v -2.096356 -1.018467 0.538253 +v -2.058422 -1.018467 0.668822 +v -2.012365 -1.018467 0.796752 +v -1.958365 -1.018467 0.921537 +v -1.896637 -1.018467 1.042685 +v -1.827424 -1.018467 1.159719 +v -1.750998 -1.018467 1.272175 +v -1.667663 -1.018467 1.379611 +v -1.577746 -1.018467 1.481602 +v -1.481602 -1.018467 1.577746 +v -1.379611 -1.018467 1.667663 +v -1.272175 -1.018467 1.750999 +v -1.159718 -1.018467 1.827424 +v -1.042685 -1.018467 1.896638 +v -0.921537 -1.018467 1.958366 +v -0.796751 -1.018467 2.012365 +v -0.668822 -1.018467 2.058423 +v -0.538253 -1.018467 2.096356 +v -0.405559 -1.018467 2.126017 +v -0.271265 -1.018467 2.147287 +v -0.135901 -1.018467 2.160083 +v 0.000000 -1.018467 2.164354 +v 0.135901 -1.018467 2.160083 +v 0.271266 -1.018467 2.147287 +v 0.405560 -1.018467 2.126017 +v 0.538253 -1.018467 2.096357 +v 0.668822 -1.018467 2.058423 +v 0.796752 -1.018467 2.012365 +v 0.921537 -1.018467 1.958366 +v 1.042686 -1.018467 1.896638 +v 1.159719 -1.018467 1.827424 +v 1.272175 -1.018467 1.750999 +v 1.379611 -1.018467 1.667663 +v 1.481602 -1.018467 1.577746 +v 1.577746 -1.018467 1.481602 +v 1.667664 -1.018467 1.379611 +v 1.750999 -1.018467 1.272175 +v 1.827424 -1.018467 1.159719 +v 1.896638 -1.018467 1.042685 +v 1.958366 -1.018467 0.921537 +v 2.012365 -1.018467 0.796752 +v 2.058423 -1.018467 0.668822 +v 2.096357 -1.018467 0.538253 +v 2.126017 -1.018467 0.405559 +v 2.147287 -1.018467 0.271265 +v 2.160083 -1.018467 0.135901 +v 2.164354 -1.018467 0.000000 +v 2.190944 -0.949980 -0.137842 +v 2.177965 -0.949980 -0.275141 +v 2.156391 -0.949980 -0.411353 +v 2.126307 -0.949980 -0.545943 +v 2.087831 -0.949980 -0.678377 +v 2.041116 -0.949980 -0.808135 +v 1.986345 -0.949980 -0.934703 +v 1.923735 -0.949980 -1.057582 +v 1.853533 -0.949980 -1.176287 +v 1.776015 -0.949980 -1.290351 +v 1.691489 -0.949980 -1.399321 +v 1.600287 -0.949980 -1.502770 +v 1.502770 -0.949980 -1.600287 +v 1.399321 -0.949980 -1.691489 +v 1.290351 -0.949980 -1.776015 +v 1.176288 -0.949980 -1.853532 +v 1.057582 -0.949980 -1.923735 +v 0.934703 -0.949980 -1.986345 +v 0.808135 -0.949980 -2.041116 +v 0.678378 -0.949980 -2.087831 +v 0.545943 -0.949980 -2.126307 +v 0.411354 -0.949980 -2.156391 +v 0.275141 -0.949980 -2.177965 +v 0.137843 -0.949980 -2.190944 +v 0.000000 -0.949980 -2.195276 +v -0.137842 -0.949980 -2.190944 +v -0.275141 -0.949980 -2.177965 +v -0.411354 -0.949980 -2.156392 +v -0.545943 -0.949980 -2.126307 +v -0.678377 -0.949980 -2.087831 +v -0.808135 -0.949980 -2.041116 +v -0.934703 -0.949980 -1.986345 +v -1.057582 -0.949980 -1.923735 +v -1.176288 -0.949980 -1.853533 +v -1.290351 -0.949980 -1.776015 +v -1.399322 -0.949980 -1.691489 +v -1.502770 -0.949980 -1.600287 +v -1.600287 -0.949980 -1.502770 +v -1.691489 -0.949980 -1.399321 +v -1.776016 -0.949980 -1.290351 +v -1.853533 -0.949980 -1.176288 +v -1.923735 -0.949980 -1.057582 +v -1.986345 -0.949980 -0.934703 +v -2.041116 -0.949980 -0.808135 +v -2.087831 -0.949980 -0.678377 +v -2.126307 -0.949980 -0.545943 +v -2.156392 -0.949980 -0.411354 +v -2.177966 -0.949980 -0.275141 +v -2.190944 -0.949980 -0.137842 +v -2.195276 -0.949980 0.000000 +v -2.190944 -0.949980 0.137843 +v -2.177966 -0.949980 0.275141 +v -2.156392 -0.949980 0.411354 +v -2.126307 -0.949980 0.545943 +v -2.087832 -0.949980 0.678378 +v -2.041116 -0.949980 0.808135 +v -1.986345 -0.949980 0.934703 +v -1.923735 -0.949980 1.057583 +v -1.853533 -0.949980 1.176288 +v -1.776016 -0.949980 1.290351 +v -1.691489 -0.949980 1.399322 +v -1.600287 -0.949980 1.502770 +v -1.502770 -0.949980 1.600288 +v -1.399322 -0.949980 1.691490 +v -1.290351 -0.949980 1.776016 +v -1.176288 -0.949980 1.853533 +v -1.057582 -0.949980 1.923735 +v -0.934703 -0.949980 1.986345 +v -0.808135 -0.949980 2.041116 +v -0.678378 -0.949980 2.087832 +v -0.545943 -0.949980 2.126308 +v -0.411354 -0.949980 2.156392 +v -0.275141 -0.949980 2.177966 +v -0.137842 -0.949980 2.190945 +v 0.000000 -0.949980 2.195277 +v 0.137843 -0.949980 2.190945 +v 0.275141 -0.949980 2.177966 +v 0.411354 -0.949980 2.156392 +v 0.545943 -0.949980 2.126308 +v 0.678378 -0.949980 2.087832 +v 0.808136 -0.949980 2.041117 +v 0.934704 -0.949980 1.986346 +v 1.057583 -0.949980 1.923736 +v 1.176288 -0.949980 1.853533 +v 1.290351 -0.949980 1.776016 +v 1.399322 -0.949980 1.691490 +v 1.502771 -0.949980 1.600288 +v 1.600288 -0.949980 1.502770 +v 1.691490 -0.949980 1.399322 +v 1.776016 -0.949980 1.290351 +v 1.853534 -0.949980 1.176288 +v 1.923736 -0.949980 1.057583 +v 1.986346 -0.949980 0.934703 +v 2.041117 -0.949980 0.808135 +v 2.087832 -0.949980 0.678378 +v 2.126308 -0.949980 0.545943 +v 2.156392 -0.949980 0.411354 +v 2.177966 -0.949980 0.275141 +v 2.190945 -0.949980 0.137843 +v 2.195277 -0.949980 0.000000 +v 2.219643 -0.880556 -0.139648 +v 2.206495 -0.880556 -0.278745 +v 2.184638 -0.880556 -0.416742 +v 2.154160 -0.880556 -0.553094 +v 2.115180 -0.880556 -0.687264 +v 2.067853 -0.880556 -0.818721 +v 2.012364 -0.880556 -0.946947 +v 1.948934 -0.880556 -1.071435 +v 1.877812 -0.880556 -1.191696 +v 1.799280 -0.880556 -1.307253 +v 1.713646 -0.880556 -1.417651 +v 1.621250 -0.880556 -1.522455 +v 1.522455 -0.880556 -1.621250 +v 1.417651 -0.880556 -1.713646 +v 1.307253 -0.880556 -1.799280 +v 1.191696 -0.880556 -1.877812 +v 1.071436 -0.880556 -1.948934 +v 0.946947 -0.880556 -2.012364 +v 0.818721 -0.880556 -2.067853 +v 0.687264 -0.880556 -2.115180 +v 0.553094 -0.880556 -2.154160 +v 0.416742 -0.880556 -2.184638 +v 0.278745 -0.880556 -2.206495 +v 0.139648 -0.880556 -2.219643 +v 0.000000 -0.880556 -2.224032 +v -0.139648 -0.880556 -2.219643 +v -0.278745 -0.880556 -2.206495 +v -0.416742 -0.880556 -2.184638 +v -0.553094 -0.880556 -2.154160 +v -0.687264 -0.880556 -2.115180 +v -0.818721 -0.880556 -2.067853 +v -0.946947 -0.880556 -2.012364 +v -1.071436 -0.880556 -1.948934 +v -1.191696 -0.880556 -1.877812 +v -1.307253 -0.880556 -1.799280 +v -1.417652 -0.880556 -1.713646 +v -1.522455 -0.880556 -1.621250 +v -1.621250 -0.880556 -1.522455 +v -1.713647 -0.880556 -1.417651 +v -1.799280 -0.880556 -1.307253 +v -1.877813 -0.880556 -1.191696 +v -1.948934 -0.880556 -1.071436 +v -2.012364 -0.880556 -0.946947 +v -2.067853 -0.880556 -0.818721 +v -2.115180 -0.880556 -0.687264 +v -2.154160 -0.880556 -0.553094 +v -2.184639 -0.880556 -0.416742 +v -2.206495 -0.880556 -0.278745 +v -2.219644 -0.880556 -0.139648 +v -2.224032 -0.880556 0.000000 +v -2.219644 -0.880556 0.139648 +v -2.206495 -0.880556 0.278745 +v -2.184639 -0.880556 0.416742 +v -2.154160 -0.880556 0.553095 +v -2.115181 -0.880556 0.687264 +v -2.067853 -0.880556 0.818721 +v -2.012365 -0.880556 0.946947 +v -1.948935 -0.880556 1.071436 +v -1.877813 -0.880556 1.191696 +v -1.799280 -0.880556 1.307254 +v -1.713647 -0.880556 1.417652 +v -1.621250 -0.880556 1.522455 +v -1.522455 -0.880556 1.621250 +v -1.417652 -0.880556 1.713647 +v -1.307253 -0.880556 1.799280 +v -1.191696 -0.880556 1.877813 +v -1.071436 -0.880556 1.948935 +v -0.946947 -0.880556 2.012365 +v -0.818721 -0.880556 2.067853 +v -0.687264 -0.880556 2.115181 +v -0.553094 -0.880556 2.154161 +v -0.416742 -0.880556 2.184639 +v -0.278745 -0.880556 2.206496 +v -0.139648 -0.880556 2.219644 +v 0.000000 -0.880556 2.224033 +v 0.139648 -0.880556 2.219644 +v 0.278745 -0.880556 2.206496 +v 0.416742 -0.880556 2.184639 +v 0.553095 -0.880556 2.154161 +v 0.687264 -0.880556 2.115181 +v 0.818721 -0.880556 2.067854 +v 0.946947 -0.880556 2.012365 +v 1.071436 -0.880556 1.948935 +v 1.191697 -0.880556 1.877813 +v 1.307254 -0.880556 1.799280 +v 1.417652 -0.880556 1.713647 +v 1.522456 -0.880556 1.621250 +v 1.621251 -0.880556 1.522455 +v 1.713647 -0.880556 1.417652 +v 1.799281 -0.880556 1.307254 +v 1.877813 -0.880556 1.191696 +v 1.948935 -0.880556 1.071436 +v 2.012365 -0.880556 0.946947 +v 2.067854 -0.880556 0.818721 +v 2.115181 -0.880556 0.687264 +v 2.154161 -0.880556 0.553095 +v 2.184639 -0.880556 0.416742 +v 2.206496 -0.880556 0.278745 +v 2.219645 -0.880556 0.139648 +v 2.224033 -0.880556 0.000000 +v 2.246152 -0.810263 -0.141316 +v 2.232847 -0.810263 -0.282074 +v 2.210729 -0.810263 -0.421719 +v 2.179887 -0.810263 -0.559700 +v 2.140442 -0.810263 -0.695471 +v 2.092549 -0.810263 -0.828499 +v 2.036398 -0.810263 -0.958256 +v 1.972210 -0.810263 -1.084232 +v 1.900239 -0.810263 -1.205928 +v 1.820768 -0.810263 -1.322866 +v 1.734112 -0.810263 -1.434582 +v 1.640612 -0.810263 -1.540637 +v 1.540637 -0.810263 -1.640612 +v 1.434582 -0.810263 -1.734112 +v 1.322866 -0.810263 -1.820768 +v 1.205928 -0.810263 -1.900239 +v 1.084232 -0.810263 -1.972210 +v 0.958256 -0.810263 -2.036398 +v 0.828499 -0.810263 -2.092549 +v 0.695472 -0.810263 -2.140442 +v 0.559700 -0.810263 -2.179887 +v 0.421719 -0.810263 -2.210729 +v 0.282074 -0.810263 -2.232847 +v 0.141316 -0.810263 -2.246153 +v 0.000000 -0.810263 -2.250594 +v -0.141316 -0.810263 -2.246153 +v -0.282074 -0.810263 -2.232847 +v -0.421719 -0.810263 -2.210729 +v -0.559700 -0.810263 -2.179887 +v -0.695472 -0.810263 -2.140442 +v -0.828499 -0.810263 -2.092549 +v -0.958256 -0.810263 -2.036398 +v -1.084232 -0.810263 -1.972210 +v -1.205928 -0.810263 -1.900239 +v -1.322866 -0.810263 -1.820768 +v -1.434583 -0.810263 -1.734112 +v -1.540638 -0.810263 -1.640612 +v -1.640612 -0.810263 -1.540637 +v -1.734113 -0.810263 -1.434582 +v -1.820769 -0.810263 -1.322866 +v -1.900239 -0.810263 -1.205928 +v -1.972210 -0.810263 -1.084232 +v -2.036398 -0.810263 -0.958256 +v -2.092549 -0.810263 -0.828499 +v -2.140442 -0.810263 -0.695472 +v -2.179887 -0.810263 -0.559700 +v -2.210730 -0.810263 -0.421719 +v -2.232847 -0.810263 -0.282074 +v -2.246153 -0.810263 -0.141316 +v -2.250594 -0.810263 0.000000 +v -2.246153 -0.810263 0.141316 +v -2.232847 -0.810263 0.282074 +v -2.210730 -0.810263 0.421719 +v -2.179887 -0.810263 0.559700 +v -2.140442 -0.810263 0.695472 +v -2.092549 -0.810263 0.828499 +v -2.036398 -0.810263 0.958257 +v -1.972211 -0.810263 1.084232 +v -1.900239 -0.810263 1.205929 +v -1.820769 -0.810263 1.322866 +v -1.734113 -0.810263 1.434583 +v -1.640612 -0.810263 1.540638 +v -1.540638 -0.810263 1.640613 +v -1.434583 -0.810263 1.734113 +v -1.322866 -0.810263 1.820769 +v -1.205929 -0.810263 1.900240 +v -1.084232 -0.810263 1.972211 +v -0.958256 -0.810263 2.036399 +v -0.828499 -0.810263 2.092550 +v -0.695472 -0.810263 2.140442 +v -0.559700 -0.810263 2.179888 +v -0.421719 -0.810263 2.210730 +v -0.282074 -0.810263 2.232848 +v -0.141316 -0.810263 2.246153 +v 0.000000 -0.810263 2.250595 +v 0.141316 -0.810263 2.246153 +v 0.282075 -0.810263 2.232848 +v 0.421720 -0.810263 2.210730 +v 0.559700 -0.810263 2.179888 +v 0.695472 -0.810263 2.140443 +v 0.828499 -0.810263 2.092550 +v 0.958257 -0.810263 2.036399 +v 1.084233 -0.810263 1.972211 +v 1.205929 -0.810263 1.900240 +v 1.322867 -0.810263 1.820769 +v 1.434583 -0.810263 1.734113 +v 1.540638 -0.810263 1.640613 +v 1.640613 -0.810263 1.540638 +v 1.734113 -0.810263 1.434583 +v 1.820769 -0.810263 1.322866 +v 1.900240 -0.810263 1.205929 +v 1.972211 -0.810263 1.084232 +v 2.036399 -0.810263 0.958257 +v 2.092550 -0.810263 0.828499 +v 2.140443 -0.810263 0.695472 +v 2.179888 -0.810263 0.559700 +v 2.210730 -0.810263 0.421719 +v 2.232848 -0.810263 0.282074 +v 2.246154 -0.810263 0.141316 +v 2.250595 -0.810263 0.000000 +v 2.270445 -0.739170 -0.142844 +v 2.256995 -0.739170 -0.285125 +v 2.234639 -0.739170 -0.426280 +v 2.203463 -0.739170 -0.565753 +v 2.163591 -0.739170 -0.702993 +v 2.115180 -0.739170 -0.837459 +v 2.058422 -0.739170 -0.968620 +v 1.993540 -0.739170 -1.095958 +v 1.920790 -0.739170 -1.218970 +v 1.840460 -0.739170 -1.337173 +v 1.752867 -0.739170 -1.450097 +v 1.658356 -0.739170 -1.557300 +v 1.557300 -0.739170 -1.658356 +v 1.450098 -0.739170 -1.752867 +v 1.337173 -0.739170 -1.840460 +v 1.218971 -0.739170 -1.920790 +v 1.095958 -0.739170 -1.993540 +v 0.968620 -0.739170 -2.058422 +v 0.837459 -0.739170 -2.115180 +v 0.702993 -0.739170 -2.163591 +v 0.565753 -0.739170 -2.203463 +v 0.426280 -0.739170 -2.234639 +v 0.285125 -0.739170 -2.256995 +v 0.142844 -0.739170 -2.270445 +v 0.000000 -0.739170 -2.274934 +v -0.142844 -0.739170 -2.270445 +v -0.285125 -0.739170 -2.256996 +v -0.426280 -0.739170 -2.234639 +v -0.565753 -0.739170 -2.203463 +v -0.702993 -0.739170 -2.163591 +v -0.837459 -0.739170 -2.115180 +v -0.968620 -0.739170 -2.058422 +v -1.095958 -0.739170 -1.993540 +v -1.218971 -0.739170 -1.920790 +v -1.337173 -0.739170 -1.840460 +v -1.450098 -0.739170 -1.752867 +v -1.557300 -0.739170 -1.658356 +v -1.658356 -0.739170 -1.557300 +v -1.752867 -0.739170 -1.450098 +v -1.840461 -0.739170 -1.337173 +v -1.920790 -0.739170 -1.218971 +v -1.993540 -0.739170 -1.095958 +v -2.058422 -0.739170 -0.968620 +v -2.115180 -0.739170 -0.837459 +v -2.163591 -0.739170 -0.702993 +v -2.203463 -0.739170 -0.565753 +v -2.234639 -0.739170 -0.426280 +v -2.256996 -0.739170 -0.285125 +v -2.270445 -0.739170 -0.142844 +v -2.274934 -0.739170 0.000000 +v -2.270445 -0.739170 0.142845 +v -2.256996 -0.739170 0.285125 +v -2.234639 -0.739170 0.426280 +v -2.203463 -0.739170 0.565753 +v -2.163591 -0.739170 0.702994 +v -2.115181 -0.739170 0.837459 +v -2.058422 -0.739170 0.968620 +v -1.993540 -0.739170 1.095958 +v -1.920791 -0.739170 1.218971 +v -1.840461 -0.739170 1.337173 +v -1.752867 -0.739170 1.450098 +v -1.658356 -0.739170 1.557300 +v -1.557300 -0.739170 1.658356 +v -1.450098 -0.739170 1.752868 +v -1.337173 -0.739170 1.840461 +v -1.218971 -0.739170 1.920791 +v -1.095958 -0.739170 1.993541 +v -0.968620 -0.739170 2.058422 +v -0.837459 -0.739170 2.115181 +v -0.702993 -0.739170 2.163592 +v -0.565753 -0.739170 2.203464 +v -0.426280 -0.739170 2.234640 +v -0.285125 -0.739170 2.256996 +v -0.142844 -0.739170 2.270446 +v 0.000000 -0.739170 2.274935 +v 0.142845 -0.739170 2.270446 +v 0.285125 -0.739170 2.256996 +v 0.426281 -0.739170 2.234640 +v 0.565754 -0.739170 2.203464 +v 0.702994 -0.739170 2.163592 +v 0.837460 -0.739170 2.115181 +v 0.968620 -0.739170 2.058423 +v 1.095959 -0.739170 1.993541 +v 1.218971 -0.739170 1.920791 +v 1.337173 -0.739170 1.840461 +v 1.450098 -0.739170 1.752867 +v 1.557300 -0.739170 1.658356 +v 1.658356 -0.739170 1.557300 +v 1.752868 -0.739170 1.450098 +v 1.840461 -0.739170 1.337173 +v 1.920791 -0.739170 1.218971 +v 1.993541 -0.739170 1.095958 +v 2.058423 -0.739170 0.968620 +v 2.115181 -0.739170 0.837459 +v 2.163592 -0.739170 0.702994 +v 2.203464 -0.739170 0.565753 +v 2.234640 -0.739170 0.426280 +v 2.256997 -0.739170 0.285125 +v 2.270446 -0.739170 0.142844 +v 2.274935 -0.739170 0.000000 +v 2.292496 -0.667348 -0.144232 +v 2.278917 -0.667348 -0.287894 +v 2.256343 -0.667348 -0.430420 +v 2.224864 -0.667348 -0.571248 +v 2.184605 -0.667348 -0.709821 +v 2.135724 -0.667348 -0.845593 +v 2.078414 -0.667348 -0.978027 +v 2.012902 -0.667348 -1.106602 +v 1.939446 -0.667348 -1.230810 +v 1.858336 -0.667348 -1.350160 +v 1.769892 -0.667348 -1.464182 +v 1.674462 -0.667348 -1.572425 +v 1.572425 -0.667348 -1.674462 +v 1.464182 -0.667348 -1.769892 +v 1.350160 -0.667348 -1.858336 +v 1.230810 -0.667348 -1.939446 +v 1.106602 -0.667348 -2.012902 +v 0.978028 -0.667348 -2.078414 +v 0.845593 -0.667348 -2.135724 +v 0.709821 -0.667348 -2.184605 +v 0.571248 -0.667348 -2.224864 +v 0.430420 -0.667348 -2.256343 +v 0.287894 -0.667348 -2.278917 +v 0.144232 -0.667348 -2.292497 +v 0.000000 -0.667348 -2.297029 +v -0.144232 -0.667348 -2.292497 +v -0.287894 -0.667348 -2.278917 +v -0.430420 -0.667348 -2.256343 +v -0.571248 -0.667348 -2.224864 +v -0.709821 -0.667348 -2.184605 +v -0.845593 -0.667348 -2.135724 +v -0.978028 -0.667348 -2.078414 +v -1.106602 -0.667348 -2.012902 +v -1.230810 -0.667348 -1.939446 +v -1.350160 -0.667348 -1.858336 +v -1.464182 -0.667348 -1.769892 +v -1.572425 -0.667348 -1.674462 +v -1.674463 -0.667348 -1.572425 +v -1.769892 -0.667348 -1.464182 +v -1.858336 -0.667348 -1.350160 +v -1.939446 -0.667348 -1.230810 +v -2.012902 -0.667348 -1.106602 +v -2.078414 -0.667348 -0.978027 +v -2.135724 -0.667348 -0.845593 +v -2.184605 -0.667348 -0.709821 +v -2.224864 -0.667348 -0.571248 +v -2.256343 -0.667348 -0.430420 +v -2.278917 -0.667348 -0.287894 +v -2.292497 -0.667348 -0.144231 +v -2.297030 -0.667348 0.000000 +v -2.292497 -0.667348 0.144232 +v -2.278917 -0.667348 0.287894 +v -2.256343 -0.667348 0.430421 +v -2.224864 -0.667348 0.571248 +v -2.184605 -0.667348 0.709821 +v -2.135724 -0.667348 0.845593 +v -2.078415 -0.667348 0.978028 +v -2.012902 -0.667348 1.106603 +v -1.939446 -0.667348 1.230810 +v -1.858336 -0.667348 1.350161 +v -1.769892 -0.667348 1.464182 +v -1.674463 -0.667348 1.572425 +v -1.572425 -0.667348 1.674463 +v -1.464182 -0.667348 1.769892 +v -1.350160 -0.667348 1.858336 +v -1.230810 -0.667348 1.939447 +v -1.106602 -0.667348 2.012903 +v -0.978028 -0.667348 2.078415 +v -0.845593 -0.667348 2.135724 +v -0.709821 -0.667348 2.184605 +v -0.571248 -0.667348 2.224865 +v -0.430420 -0.667348 2.256343 +v -0.287894 -0.667348 2.278917 +v -0.144231 -0.667348 2.292497 +v 0.000000 -0.667348 2.297030 +v 0.144232 -0.667348 2.292497 +v 0.287894 -0.667348 2.278918 +v 0.430421 -0.667348 2.256343 +v 0.571248 -0.667348 2.224865 +v 0.709822 -0.667348 2.184606 +v 0.845593 -0.667348 2.135725 +v 0.978028 -0.667348 2.078415 +v 1.106603 -0.667348 2.012903 +v 1.230811 -0.667348 1.939447 +v 1.350161 -0.667348 1.858336 +v 1.464182 -0.667348 1.769892 +v 1.572426 -0.667348 1.674463 +v 1.674463 -0.667348 1.572425 +v 1.769893 -0.667348 1.464182 +v 1.858337 -0.667348 1.350161 +v 1.939447 -0.667348 1.230810 +v 2.012903 -0.667348 1.106603 +v 2.078415 -0.667348 0.978028 +v 2.135725 -0.667348 0.845593 +v 2.184606 -0.667348 0.709821 +v 2.224865 -0.667348 0.571248 +v 2.256344 -0.667348 0.430421 +v 2.278918 -0.667348 0.287894 +v 2.292498 -0.667348 0.144232 +v 2.297030 -0.667348 0.000000 +v 2.312286 -0.594867 -0.145477 +v 2.298589 -0.594867 -0.290379 +v 2.275820 -0.594867 -0.434136 +v 2.244069 -0.594867 -0.576179 +v 2.203463 -0.594867 -0.715948 +v 2.154160 -0.594867 -0.852892 +v 2.096356 -0.594867 -0.986470 +v 2.030278 -0.594867 -1.116155 +v 1.956188 -0.594867 -1.241434 +v 1.874377 -0.594867 -1.361815 +v 1.785170 -0.594867 -1.476821 +v 1.688917 -0.594867 -1.585998 +v 1.585998 -0.594867 -1.688917 +v 1.476821 -0.594867 -1.785170 +v 1.361815 -0.594867 -1.874377 +v 1.241434 -0.594867 -1.956188 +v 1.116155 -0.594867 -2.030278 +v 0.986470 -0.594867 -2.096355 +v 0.852892 -0.594867 -2.154160 +v 0.715949 -0.594867 -2.203463 +v 0.576179 -0.594867 -2.244069 +v 0.434136 -0.594867 -2.275820 +v 0.290379 -0.594867 -2.298589 +v 0.145477 -0.594867 -2.312286 +v 0.000000 -0.594867 -2.316858 +v -0.145477 -0.594867 -2.312286 +v -0.290379 -0.594867 -2.298589 +v -0.434136 -0.594867 -2.275820 +v -0.576179 -0.594867 -2.244070 +v -0.715948 -0.594867 -2.203463 +v -0.852892 -0.594867 -2.154160 +v -0.986470 -0.594867 -2.096356 +v -1.116155 -0.594867 -2.030278 +v -1.241435 -0.594867 -1.956188 +v -1.361815 -0.594867 -1.874377 +v -1.476821 -0.594867 -1.785170 +v -1.585999 -0.594867 -1.688917 +v -1.688917 -0.594867 -1.585998 +v -1.785170 -0.594867 -1.476821 +v -1.874378 -0.594867 -1.361815 +v -1.956188 -0.594867 -1.241434 +v -2.030278 -0.594867 -1.116155 +v -2.096356 -0.594867 -0.986470 +v -2.154160 -0.594867 -0.852892 +v -2.203463 -0.594867 -0.715948 +v -2.244070 -0.594867 -0.576179 +v -2.275820 -0.594867 -0.434136 +v -2.298589 -0.594867 -0.290379 +v -2.312286 -0.594867 -0.145477 +v -2.316858 -0.594867 0.000000 +v -2.312286 -0.594867 0.145477 +v -2.298589 -0.594867 0.290380 +v -2.275820 -0.594867 0.434136 +v -2.244070 -0.594867 0.576179 +v -2.203463 -0.594867 0.715949 +v -2.154160 -0.594867 0.852893 +v -2.096356 -0.594867 0.986471 +v -2.030278 -0.594867 1.116155 +v -1.956188 -0.594867 1.241435 +v -1.874378 -0.594867 1.361815 +v -1.785170 -0.594867 1.476821 +v -1.688917 -0.594867 1.585999 +v -1.585999 -0.594867 1.688917 +v -1.476821 -0.594867 1.785170 +v -1.361815 -0.594867 1.874378 +v -1.241435 -0.594867 1.956189 +v -1.116155 -0.594867 2.030279 +v -0.986470 -0.594867 2.096356 +v -0.852892 -0.594867 2.154161 +v -0.715948 -0.594867 2.203464 +v -0.576179 -0.594867 2.244070 +v -0.434136 -0.594867 2.275821 +v -0.290379 -0.594867 2.298590 +v -0.145477 -0.594867 2.312287 +v 0.000000 -0.594867 2.316859 +v 0.145477 -0.594867 2.312287 +v 0.290380 -0.594867 2.298590 +v 0.434136 -0.594867 2.275821 +v 0.576180 -0.594867 2.244071 +v 0.715949 -0.594867 2.203464 +v 0.852893 -0.594867 2.154161 +v 0.986471 -0.594867 2.096357 +v 1.116156 -0.594867 2.030279 +v 1.241435 -0.594867 1.956189 +v 1.361816 -0.594867 1.874378 +v 1.476822 -0.594867 1.785170 +v 1.585999 -0.594867 1.688917 +v 1.688918 -0.594867 1.585999 +v 1.785171 -0.594867 1.476821 +v 1.874378 -0.594867 1.361815 +v 1.956189 -0.594867 1.241435 +v 2.030279 -0.594867 1.116155 +v 2.096357 -0.594867 0.986471 +v 2.154161 -0.594867 0.852893 +v 2.203464 -0.594867 0.715949 +v 2.244071 -0.594867 0.576179 +v 2.275821 -0.594867 0.434136 +v 2.298590 -0.594867 0.290379 +v 2.312287 -0.594867 0.145477 +v 2.316859 -0.594867 0.000000 +v 2.329793 -0.521799 -0.146578 +v 2.315992 -0.521799 -0.292578 +v 2.293051 -0.521799 -0.437423 +v 2.261060 -0.521799 -0.580541 +v 2.220146 -0.521799 -0.721369 +v 2.170470 -0.521799 -0.859350 +v 2.112228 -0.521799 -0.993939 +v 2.045650 -0.521799 -1.124605 +v 1.970999 -0.521799 -1.250834 +v 1.888569 -0.521799 -1.372126 +v 1.798686 -0.521799 -1.488002 +v 1.701704 -0.521799 -1.598007 +v 1.598007 -0.521799 -1.701704 +v 1.488002 -0.521799 -1.798686 +v 1.372126 -0.521799 -1.888569 +v 1.250834 -0.521799 -1.970999 +v 1.124606 -0.521799 -2.045650 +v 0.993939 -0.521799 -2.112228 +v 0.859350 -0.521799 -2.170470 +v 0.721369 -0.521799 -2.220146 +v 0.580542 -0.521799 -2.261060 +v 0.437423 -0.521799 -2.293051 +v 0.292578 -0.521799 -2.315992 +v 0.146578 -0.521799 -2.329793 +v 0.000000 -0.521799 -2.334400 +v -0.146578 -0.521799 -2.329793 +v -0.292578 -0.521799 -2.315992 +v -0.437423 -0.521799 -2.293051 +v -0.580542 -0.521799 -2.261061 +v -0.721369 -0.521799 -2.220146 +v -0.859350 -0.521799 -2.170470 +v -0.993939 -0.521799 -2.112228 +v -1.124606 -0.521799 -2.045650 +v -1.250834 -0.521799 -1.970999 +v -1.372126 -0.521799 -1.888569 +v -1.488003 -0.521799 -1.798686 +v -1.598007 -0.521799 -1.701704 +v -1.701704 -0.521799 -1.598007 +v -1.798686 -0.521799 -1.488002 +v -1.888569 -0.521799 -1.372126 +v -1.970999 -0.521799 -1.250834 +v -2.045650 -0.521799 -1.124606 +v -2.112228 -0.521799 -0.993939 +v -2.170470 -0.521799 -0.859350 +v -2.220146 -0.521799 -0.721369 +v -2.261061 -0.521799 -0.580542 +v -2.293051 -0.521799 -0.437423 +v -2.315993 -0.521799 -0.292578 +v -2.329794 -0.521799 -0.146578 +v -2.334400 -0.521799 0.000000 +v -2.329794 -0.521799 0.146578 +v -2.315993 -0.521799 0.292578 +v -2.293052 -0.521799 0.437423 +v -2.261061 -0.521799 0.580542 +v -2.220147 -0.521799 0.721370 +v -2.170470 -0.521799 0.859350 +v -2.112228 -0.521799 0.993940 +v -2.045650 -0.521799 1.124606 +v -1.970999 -0.521799 1.250834 +v -1.888569 -0.521799 1.372126 +v -1.798686 -0.521799 1.488003 +v -1.701704 -0.521799 1.598007 +v -1.598007 -0.521799 1.701705 +v -1.488003 -0.521799 1.798687 +v -1.372126 -0.521799 1.888570 +v -1.250834 -0.521799 1.971000 +v -1.124606 -0.521799 2.045651 +v -0.993939 -0.521799 2.112229 +v -0.859350 -0.521799 2.170471 +v -0.721369 -0.521799 2.220147 +v -0.580542 -0.521799 2.261061 +v -0.437423 -0.521799 2.293052 +v -0.292578 -0.521799 2.315993 +v -0.146578 -0.521799 2.329794 +v 0.000000 -0.521799 2.334401 +v 0.146578 -0.521799 2.329794 +v 0.292578 -0.521799 2.315993 +v 0.437423 -0.521799 2.293052 +v 0.580542 -0.521799 2.261061 +v 0.721370 -0.521799 2.220147 +v 0.859350 -0.521799 2.170471 +v 0.993940 -0.521799 2.112229 +v 1.124606 -0.521799 2.045651 +v 1.250835 -0.521799 1.971000 +v 1.372127 -0.521799 1.888570 +v 1.488003 -0.521799 1.798687 +v 1.598008 -0.521799 1.701705 +v 1.701705 -0.521799 1.598007 +v 1.798687 -0.521799 1.488003 +v 1.888570 -0.521799 1.372126 +v 1.971000 -0.521799 1.250834 +v 2.045651 -0.521799 1.124606 +v 2.112229 -0.521799 0.993940 +v 2.170471 -0.521799 0.859350 +v 2.220147 -0.521799 0.721370 +v 2.261061 -0.521799 0.580542 +v 2.293052 -0.521799 0.437423 +v 2.315993 -0.521799 0.292578 +v 2.329795 -0.521799 0.146578 +v 2.334401 -0.521799 0.000000 +v 2.345001 -0.448217 -0.147535 +v 2.331110 -0.448217 -0.294488 +v 2.308019 -0.448217 -0.440278 +v 2.275820 -0.448217 -0.584331 +v 2.234639 -0.448217 -0.726078 +v 2.184638 -0.448217 -0.864959 +v 2.126016 -0.448217 -1.000427 +v 2.059003 -0.448217 -1.131947 +v 1.983865 -0.448217 -1.258999 +v 1.900897 -0.448217 -1.381082 +v 1.810427 -0.448217 -1.497715 +v 1.712812 -0.448217 -1.608438 +v 1.608438 -0.448217 -1.712812 +v 1.497716 -0.448217 -1.810427 +v 1.381083 -0.448217 -1.900897 +v 1.258999 -0.448217 -1.983865 +v 1.131947 -0.448217 -2.059003 +v 1.000427 -0.448217 -2.126016 +v 0.864960 -0.448217 -2.184638 +v 0.726078 -0.448217 -2.234638 +v 0.584331 -0.448217 -2.275820 +v 0.440278 -0.448217 -2.308019 +v 0.294488 -0.448217 -2.331110 +v 0.147535 -0.448217 -2.345002 +v 0.000000 -0.448217 -2.349638 +v -0.147535 -0.448217 -2.345002 +v -0.294488 -0.448217 -2.331110 +v -0.440278 -0.448217 -2.308019 +v -0.584331 -0.448217 -2.275820 +v -0.726078 -0.448217 -2.234639 +v -0.864959 -0.448217 -2.184638 +v -1.000427 -0.448217 -2.126016 +v -1.131947 -0.448217 -2.059004 +v -1.258999 -0.448217 -1.983865 +v -1.381083 -0.448217 -1.900897 +v -1.497716 -0.448217 -1.810427 +v -1.608438 -0.448217 -1.712812 +v -1.712813 -0.448217 -1.608438 +v -1.810427 -0.448217 -1.497716 +v -1.900897 -0.448217 -1.381083 +v -1.983865 -0.448217 -1.258999 +v -2.059004 -0.448217 -1.131947 +v -2.126016 -0.448217 -1.000427 +v -2.184638 -0.448217 -0.864959 +v -2.234639 -0.448217 -0.726078 +v -2.275820 -0.448217 -0.584331 +v -2.308020 -0.448217 -0.440278 +v -2.331111 -0.448217 -0.294488 +v -2.345002 -0.448217 -0.147535 +v -2.349638 -0.448217 0.000000 +v -2.345002 -0.448217 0.147535 +v -2.331111 -0.448217 0.294488 +v -2.308020 -0.448217 0.440279 +v -2.275820 -0.448217 0.584332 +v -2.234639 -0.448217 0.726078 +v -2.184639 -0.448217 0.864960 +v -2.126016 -0.448217 1.000428 +v -2.059004 -0.448217 1.131947 +v -1.983865 -0.448217 1.258999 +v -1.900897 -0.448217 1.381083 +v -1.810427 -0.448217 1.497716 +v -1.712813 -0.448217 1.608438 +v -1.608438 -0.448217 1.712813 +v -1.497716 -0.448217 1.810428 +v -1.381083 -0.448217 1.900898 +v -1.258999 -0.448217 1.983866 +v -1.131947 -0.448217 2.059004 +v -1.000427 -0.448217 2.126017 +v -0.864960 -0.448217 2.184639 +v -0.726078 -0.448217 2.234639 +v -0.584331 -0.448217 2.275821 +v -0.440278 -0.448217 2.308020 +v -0.294488 -0.448217 2.331111 +v -0.147535 -0.448217 2.345002 +v 0.000000 -0.448217 2.349639 +v 0.147535 -0.448217 2.345002 +v 0.294488 -0.448217 2.331111 +v 0.440279 -0.448217 2.308020 +v 0.584332 -0.448217 2.275821 +v 0.726079 -0.448217 2.234640 +v 0.864960 -0.448217 2.184639 +v 1.000428 -0.448217 2.126017 +v 1.131948 -0.448217 2.059004 +v 1.259000 -0.448217 1.983866 +v 1.381083 -0.448217 1.900898 +v 1.497717 -0.448217 1.810428 +v 1.608439 -0.448217 1.712813 +v 1.712813 -0.448217 1.608438 +v 1.810428 -0.448217 1.497716 +v 1.900898 -0.448217 1.381083 +v 1.983866 -0.448217 1.258999 +v 2.059004 -0.448217 1.131947 +v 2.126017 -0.448217 1.000428 +v 2.184639 -0.448217 0.864960 +v 2.234640 -0.448217 0.726078 +v 2.275821 -0.448217 0.584332 +v 2.308021 -0.448217 0.440278 +v 2.331112 -0.448217 0.294488 +v 2.345003 -0.448217 0.147535 +v 2.349639 -0.448217 0.000000 +v 2.357895 -0.374191 -0.148346 +v 2.343928 -0.374191 -0.296107 +v 2.320710 -0.374191 -0.442699 +v 2.288333 -0.374191 -0.587544 +v 2.246926 -0.374191 -0.730070 +v 2.196650 -0.374191 -0.869715 +v 2.137706 -0.374191 -1.005928 +v 2.070325 -0.374191 -1.138171 +v 1.994773 -0.374191 -1.265921 +v 1.911349 -0.374191 -1.388676 +v 1.820382 -0.374191 -1.505951 +v 1.722230 -0.374191 -1.617282 +v 1.617282 -0.374191 -1.722230 +v 1.505951 -0.374191 -1.820382 +v 1.388676 -0.374191 -1.911349 +v 1.265921 -0.374191 -1.994773 +v 1.138171 -0.374191 -2.070325 +v 1.005928 -0.374191 -2.137706 +v 0.869715 -0.374191 -2.196650 +v 0.730070 -0.374191 -2.246926 +v 0.587544 -0.374191 -2.288333 +v 0.442699 -0.374191 -2.320710 +v 0.296107 -0.374191 -2.343928 +v 0.148346 -0.374191 -2.357895 +v 0.000000 -0.374191 -2.362557 +v -0.148346 -0.374191 -2.357895 +v -0.296107 -0.374191 -2.343928 +v -0.442699 -0.374191 -2.320710 +v -0.587544 -0.374191 -2.288334 +v -0.730070 -0.374191 -2.246926 +v -0.869715 -0.374191 -2.196651 +v -1.005928 -0.374191 -2.137706 +v -1.138171 -0.374191 -2.070325 +v -1.265922 -0.374191 -1.994773 +v -1.388676 -0.374191 -1.911349 +v -1.505951 -0.374191 -1.820382 +v -1.617282 -0.374191 -1.722230 +v -1.722231 -0.374191 -1.617282 +v -1.820382 -0.374191 -1.505951 +v -1.911349 -0.374191 -1.388676 +v -1.994773 -0.374191 -1.265921 +v -2.070325 -0.374191 -1.138171 +v -2.137706 -0.374191 -1.005928 +v -2.196651 -0.374191 -0.869715 +v -2.246926 -0.374191 -0.730070 +v -2.288334 -0.374191 -0.587544 +v -2.320710 -0.374191 -0.442699 +v -2.343928 -0.374191 -0.296107 +v -2.357896 -0.374191 -0.148346 +v -2.362558 -0.374191 0.000000 +v -2.357896 -0.374191 0.148346 +v -2.343928 -0.374191 0.296107 +v -2.320710 -0.374191 0.442699 +v -2.288334 -0.374191 0.587544 +v -2.246926 -0.374191 0.730071 +v -2.196651 -0.374191 0.869716 +v -2.137706 -0.374191 1.005929 +v -2.070325 -0.374191 1.138171 +v -1.994773 -0.374191 1.265922 +v -1.911349 -0.374191 1.388677 +v -1.820382 -0.374191 1.505951 +v -1.722231 -0.374191 1.617282 +v -1.617282 -0.374191 1.722231 +v -1.505951 -0.374191 1.820382 +v -1.388677 -0.374191 1.911350 +v -1.265922 -0.374191 1.994774 +v -1.138171 -0.374191 2.070325 +v -1.005928 -0.374191 2.137707 +v -0.869715 -0.374191 2.196651 +v -0.730070 -0.374191 2.246926 +v -0.587544 -0.374191 2.288334 +v -0.442699 -0.374191 2.320711 +v -0.296107 -0.374191 2.343929 +v -0.148346 -0.374191 2.357896 +v 0.000000 -0.374191 2.362558 +v 0.148347 -0.374191 2.357896 +v 0.296107 -0.374191 2.343929 +v 0.442700 -0.374191 2.320711 +v 0.587545 -0.374191 2.288334 +v 0.730071 -0.374191 2.246927 +v 0.869716 -0.374191 2.196651 +v 1.005929 -0.374191 2.137707 +v 1.138171 -0.374191 2.070326 +v 1.265922 -0.374191 1.994774 +v 1.388677 -0.374191 1.911350 +v 1.505952 -0.374191 1.820382 +v 1.617283 -0.374191 1.722231 +v 1.722231 -0.374191 1.617282 +v 1.820383 -0.374191 1.505951 +v 1.911350 -0.374191 1.388677 +v 1.994774 -0.374191 1.265922 +v 2.070326 -0.374191 1.138171 +v 2.137707 -0.374191 1.005929 +v 2.196651 -0.374191 0.869716 +v 2.246927 -0.374191 0.730071 +v 2.288334 -0.374191 0.587544 +v 2.320711 -0.374191 0.442699 +v 2.343929 -0.374191 0.296107 +v 2.357897 -0.374191 0.148346 +v 2.362559 -0.374191 0.000000 +v 2.368462 -0.299797 -0.149011 +v 2.354432 -0.299797 -0.297434 +v 2.331110 -0.299797 -0.444683 +v 2.298589 -0.299797 -0.590177 +v 2.256995 -0.299797 -0.733342 +v 2.206495 -0.299797 -0.873613 +v 2.147286 -0.299797 -1.010436 +v 2.079603 -0.299797 -1.143271 +v 2.003713 -0.299797 -1.271595 +v 1.919915 -0.299797 -1.394900 +v 1.828540 -0.299797 -1.512700 +v 1.729948 -0.299797 -1.624530 +v 1.624530 -0.299797 -1.729948 +v 1.512700 -0.299797 -1.828540 +v 1.394900 -0.299797 -1.919915 +v 1.271595 -0.299797 -2.003713 +v 1.143271 -0.299797 -2.079603 +v 1.010436 -0.299797 -2.147286 +v 0.873613 -0.299797 -2.206495 +v 0.733342 -0.299797 -2.256995 +v 0.590177 -0.299797 -2.298588 +v 0.444683 -0.299797 -2.331110 +v 0.297434 -0.299797 -2.354432 +v 0.149011 -0.299797 -2.368462 +v 0.000000 -0.299797 -2.373145 +v -0.149011 -0.299797 -2.368462 +v -0.297434 -0.299797 -2.354432 +v -0.444683 -0.299797 -2.331110 +v -0.590177 -0.299797 -2.298589 +v -0.733342 -0.299797 -2.256995 +v -0.873613 -0.299797 -2.206495 +v -1.010436 -0.299797 -2.147286 +v -1.143272 -0.299797 -2.079603 +v -1.271595 -0.299797 -2.003713 +v -1.394900 -0.299797 -1.919915 +v -1.512700 -0.299797 -1.828540 +v -1.624530 -0.299797 -1.729948 +v -1.729949 -0.299797 -1.624530 +v -1.828540 -0.299797 -1.512700 +v -1.919915 -0.299797 -1.394900 +v -2.003713 -0.299797 -1.271595 +v -2.079603 -0.299797 -1.143271 +v -2.147286 -0.299797 -1.010436 +v -2.206495 -0.299797 -0.873613 +v -2.256995 -0.299797 -0.733342 +v -2.298589 -0.299797 -0.590177 +v -2.331111 -0.299797 -0.444683 +v -2.354432 -0.299797 -0.297434 +v -2.368463 -0.299797 -0.149011 +v -2.373146 -0.299797 0.000000 +v -2.368463 -0.299797 0.149011 +v -2.354433 -0.299797 0.297434 +v -2.331111 -0.299797 0.444683 +v -2.298589 -0.299797 0.590178 +v -2.256996 -0.299797 0.733343 +v -2.206495 -0.299797 0.873613 +v -2.147286 -0.299797 1.010437 +v -2.079603 -0.299797 1.143272 +v -2.003713 -0.299797 1.271595 +v -1.919915 -0.299797 1.394900 +v -1.828540 -0.299797 1.512700 +v -1.729949 -0.299797 1.624530 +v -1.624530 -0.299797 1.729949 +v -1.512700 -0.299797 1.828541 +v -1.394900 -0.299797 1.919916 +v -1.271595 -0.299797 2.003714 +v -1.143272 -0.299797 2.079604 +v -1.010436 -0.299797 2.147287 +v -0.873613 -0.299797 2.206495 +v -0.733342 -0.299797 2.256996 +v -0.590177 -0.299797 2.298589 +v -0.444683 -0.299797 2.331111 +v -0.297434 -0.299797 2.354433 +v -0.149011 -0.299797 2.368463 +v 0.000000 -0.299797 2.373146 +v 0.149011 -0.299797 2.368463 +v 0.297434 -0.299797 2.354433 +v 0.444684 -0.299797 2.331111 +v 0.590178 -0.299797 2.298590 +v 0.733343 -0.299797 2.256996 +v 0.873614 -0.299797 2.206496 +v 1.010437 -0.299797 2.147287 +v 1.143272 -0.299797 2.079604 +v 1.271596 -0.299797 2.003714 +v 1.394901 -0.299797 1.919915 +v 1.512701 -0.299797 1.828540 +v 1.624531 -0.299797 1.729949 +v 1.729949 -0.299797 1.624530 +v 1.828541 -0.299797 1.512700 +v 1.919916 -0.299797 1.394900 +v 2.003714 -0.299797 1.271595 +v 2.079604 -0.299797 1.143272 +v 2.147287 -0.299797 1.010437 +v 2.206496 -0.299797 0.873613 +v 2.256996 -0.299797 0.733343 +v 2.298590 -0.299797 0.590178 +v 2.331112 -0.299797 0.444683 +v 2.354433 -0.299797 0.297434 +v 2.368464 -0.299797 0.149011 +v 2.373146 -0.299797 0.000000 +v 2.376692 -0.225107 -0.149529 +v 2.362613 -0.225107 -0.298467 +v 2.339210 -0.225107 -0.446228 +v 2.306575 -0.225107 -0.592228 +v 2.264838 -0.225107 -0.735890 +v 2.214161 -0.225107 -0.876648 +v 2.154747 -0.225107 -1.013947 +v 2.086829 -0.225107 -1.147244 +v 2.010675 -0.225107 -1.276013 +v 1.926586 -0.225107 -1.399746 +v 1.834893 -0.225107 -1.517956 +v 1.735959 -0.225107 -1.630174 +v 1.630174 -0.225107 -1.735959 +v 1.517956 -0.225107 -1.834893 +v 1.399747 -0.225107 -1.926586 +v 1.276013 -0.225107 -2.010675 +v 1.147244 -0.225107 -2.086829 +v 1.013947 -0.225107 -2.154747 +v 0.876649 -0.225107 -2.214161 +v 0.735890 -0.225107 -2.264837 +v 0.592228 -0.225107 -2.306575 +v 0.446228 -0.225107 -2.339210 +v 0.298468 -0.225107 -2.362613 +v 0.149529 -0.225107 -2.376692 +v 0.000000 -0.225107 -2.381391 +v -0.149529 -0.225107 -2.376692 +v -0.298467 -0.225107 -2.362613 +v -0.446228 -0.225107 -2.339210 +v -0.592228 -0.225107 -2.306576 +v -0.735890 -0.225107 -2.264838 +v -0.876649 -0.225107 -2.214161 +v -1.013947 -0.225107 -2.154747 +v -1.147244 -0.225107 -2.086829 +v -1.276013 -0.225107 -2.010675 +v -1.399747 -0.225107 -1.926586 +v -1.517956 -0.225107 -1.834893 +v -1.630175 -0.225107 -1.735959 +v -1.735960 -0.225107 -1.630174 +v -1.834894 -0.225107 -1.517956 +v -1.926586 -0.225107 -1.399747 +v -2.010675 -0.225107 -1.276013 +v -2.086829 -0.225107 -1.147244 +v -2.154747 -0.225107 -1.013947 +v -2.214161 -0.225107 -0.876648 +v -2.264838 -0.225107 -0.735890 +v -2.306576 -0.225107 -0.592228 +v -2.339210 -0.225107 -0.446228 +v -2.362613 -0.225107 -0.298467 +v -2.376692 -0.225107 -0.149529 +v -2.381392 -0.225107 0.000000 +v -2.376692 -0.225107 0.149529 +v -2.362613 -0.225107 0.298468 +v -2.339211 -0.225107 0.446229 +v -2.306576 -0.225107 0.592228 +v -2.264838 -0.225107 0.735891 +v -2.214162 -0.225107 0.876649 +v -2.154747 -0.225107 1.013947 +v -2.086829 -0.225107 1.147244 +v -2.010675 -0.225107 1.276014 +v -1.926586 -0.225107 1.399747 +v -1.834894 -0.225107 1.517956 +v -1.735960 -0.225107 1.630175 +v -1.630175 -0.225107 1.735960 +v -1.517956 -0.225107 1.834894 +v -1.399747 -0.225107 1.926587 +v -1.276013 -0.225107 2.010676 +v -1.147244 -0.225107 2.086830 +v -1.013947 -0.225107 2.154748 +v -0.876649 -0.225107 2.214162 +v -0.735890 -0.225107 2.264838 +v -0.592228 -0.225107 2.306576 +v -0.446228 -0.225107 2.339211 +v -0.298467 -0.225107 2.362614 +v -0.149529 -0.225107 2.376693 +v 0.000000 -0.225107 2.381392 +v 0.149529 -0.225107 2.376693 +v 0.298468 -0.225107 2.362614 +v 0.446229 -0.225107 2.339211 +v 0.592228 -0.225107 2.306576 +v 0.735891 -0.225107 2.264839 +v 0.876649 -0.225107 2.214162 +v 1.013948 -0.225107 2.154748 +v 1.147245 -0.225107 2.086830 +v 1.276014 -0.225107 2.010676 +v 1.399747 -0.225107 1.926586 +v 1.517957 -0.225107 1.834894 +v 1.630175 -0.225107 1.735960 +v 1.735960 -0.225107 1.630175 +v 1.834894 -0.225107 1.517956 +v 1.926587 -0.225107 1.399747 +v 2.010676 -0.225107 1.276014 +v 2.086830 -0.225107 1.147244 +v 2.154748 -0.225107 1.013947 +v 2.214162 -0.225107 0.876649 +v 2.264839 -0.225107 0.735891 +v 2.306576 -0.225107 0.592228 +v 2.339211 -0.225107 0.446228 +v 2.362614 -0.225107 0.298468 +v 2.376693 -0.225107 0.149529 +v 2.381392 -0.225107 0.000000 +v 2.382576 -0.150194 -0.149899 +v 2.368462 -0.150194 -0.299206 +v 2.345001 -0.150194 -0.447333 +v 2.312286 -0.150194 -0.593694 +v 2.270445 -0.150194 -0.737712 +v 2.219643 -0.150194 -0.878819 +v 2.160082 -0.150194 -1.016457 +v 2.091995 -0.150194 -1.150084 +v 2.015653 -0.150194 -1.279172 +v 1.931356 -0.150194 -1.403212 +v 1.839436 -0.150194 -1.521714 +v 1.740257 -0.150194 -1.634210 +v 1.634210 -0.150194 -1.740257 +v 1.521714 -0.150194 -1.839436 +v 1.403212 -0.150194 -1.931356 +v 1.279172 -0.150194 -2.015653 +v 1.150084 -0.150194 -2.091995 +v 1.016457 -0.150194 -2.160082 +v 0.878819 -0.150194 -2.219643 +v 0.737712 -0.150194 -2.270445 +v 0.593694 -0.150194 -2.312286 +v 0.447333 -0.150194 -2.345001 +v 0.299207 -0.150194 -2.368462 +v 0.149899 -0.150194 -2.382576 +v 0.000000 -0.150194 -2.387287 +v -0.149899 -0.150194 -2.382576 +v -0.299206 -0.150194 -2.368463 +v -0.447333 -0.150194 -2.345002 +v -0.593694 -0.150194 -2.312286 +v -0.737712 -0.150194 -2.270445 +v -0.878819 -0.150194 -2.219643 +v -1.016457 -0.150194 -2.160082 +v -1.150084 -0.150194 -2.091996 +v -1.279172 -0.150194 -2.015653 +v -1.403212 -0.150194 -1.931356 +v -1.521714 -0.150194 -1.839436 +v -1.634211 -0.150194 -1.740257 +v -1.740257 -0.150194 -1.634210 +v -1.839437 -0.150194 -1.521714 +v -1.931356 -0.150194 -1.403212 +v -2.015653 -0.150194 -1.279172 +v -2.091996 -0.150194 -1.150084 +v -2.160082 -0.150194 -1.016457 +v -2.219643 -0.150194 -0.878819 +v -2.270445 -0.150194 -0.737712 +v -2.312286 -0.150194 -0.593694 +v -2.345002 -0.150194 -0.447333 +v -2.368463 -0.150194 -0.299206 +v -2.382577 -0.150194 -0.149899 +v -2.387287 -0.150194 0.000000 +v -2.382577 -0.150194 0.149899 +v -2.368463 -0.150194 0.299207 +v -2.345002 -0.150194 0.447333 +v -2.312286 -0.150194 0.593694 +v -2.270445 -0.150194 0.737713 +v -2.219644 -0.150194 0.878819 +v -2.160082 -0.150194 1.016458 +v -2.091996 -0.150194 1.150085 +v -2.015653 -0.150194 1.279173 +v -1.931356 -0.150194 1.403213 +v -1.839437 -0.150194 1.521715 +v -1.740257 -0.150194 1.634211 +v -1.634211 -0.150194 1.740258 +v -1.521714 -0.150194 1.839437 +v -1.403212 -0.150194 1.931356 +v -1.279173 -0.150194 2.015654 +v -1.150084 -0.150194 2.091996 +v -1.016457 -0.150194 2.160082 +v -0.878819 -0.150194 2.219644 +v -0.737712 -0.150194 2.270445 +v -0.593694 -0.150194 2.312287 +v -0.447333 -0.150194 2.345002 +v -0.299206 -0.150194 2.368463 +v -0.149899 -0.150194 2.382577 +v 0.000000 -0.150194 2.387288 +v 0.149899 -0.150194 2.382577 +v 0.299207 -0.150194 2.368463 +v 0.447333 -0.150194 2.345003 +v 0.593695 -0.150194 2.312287 +v 0.737713 -0.150194 2.270446 +v 0.878820 -0.150194 2.219644 +v 1.016458 -0.150194 2.160083 +v 1.150085 -0.150194 2.091996 +v 1.279173 -0.150194 2.015654 +v 1.403213 -0.150194 1.931356 +v 1.521715 -0.150194 1.839437 +v 1.634211 -0.150194 1.740258 +v 1.740258 -0.150194 1.634211 +v 1.839437 -0.150194 1.521715 +v 1.931357 -0.150194 1.403213 +v 2.015654 -0.150194 1.279173 +v 2.091996 -0.150194 1.150085 +v 2.160083 -0.150194 1.016458 +v 2.219644 -0.150194 0.878819 +v 2.270446 -0.150194 0.737713 +v 2.312287 -0.150194 0.593694 +v 2.345003 -0.150194 0.447333 +v 2.368464 -0.150194 0.299207 +v 2.382577 -0.150194 0.149899 +v 2.387288 -0.150194 0.000000 +v 2.386109 -0.075134 -0.150121 +v 2.371974 -0.075134 -0.299650 +v 2.348479 -0.075134 -0.447996 +v 2.315714 -0.075134 -0.594574 +v 2.273811 -0.075134 -0.738806 +v 2.222934 -0.075134 -0.880122 +v 2.163284 -0.075134 -1.017964 +v 2.095097 -0.075134 -1.151789 +v 2.018642 -0.075134 -1.281069 +v 1.934219 -0.075134 -1.405292 +v 1.842164 -0.075134 -1.523970 +v 1.742838 -0.075134 -1.636633 +v 1.636633 -0.075134 -1.742838 +v 1.523970 -0.075134 -1.842164 +v 1.405293 -0.075134 -1.934219 +v 1.281069 -0.075134 -2.018641 +v 1.151789 -0.075134 -2.095097 +v 1.017964 -0.075134 -2.163284 +v 0.880122 -0.075134 -2.222934 +v 0.738806 -0.075134 -2.273811 +v 0.594575 -0.075134 -2.315714 +v 0.447996 -0.075134 -2.348479 +v 0.299650 -0.075134 -2.371974 +v 0.150121 -0.075134 -2.386109 +v 0.000000 -0.075134 -2.390827 +v -0.150121 -0.075134 -2.386109 +v -0.299650 -0.075134 -2.371974 +v -0.447996 -0.075134 -2.348479 +v -0.594574 -0.075134 -2.315714 +v -0.738806 -0.075134 -2.273811 +v -0.880122 -0.075134 -2.222934 +v -1.017964 -0.075134 -2.163285 +v -1.151790 -0.075134 -2.095097 +v -1.281069 -0.075134 -2.018642 +v -1.405293 -0.075134 -1.934219 +v -1.523970 -0.075134 -1.842164 +v -1.636634 -0.075134 -1.742838 +v -1.742838 -0.075134 -1.636633 +v -1.842164 -0.075134 -1.523970 +v -1.934220 -0.075134 -1.405293 +v -2.018642 -0.075134 -1.281069 +v -2.095097 -0.075134 -1.151789 +v -2.163285 -0.075134 -1.017964 +v -2.222934 -0.075134 -0.880122 +v -2.273811 -0.075134 -0.738806 +v -2.315714 -0.075134 -0.594574 +v -2.348479 -0.075134 -0.447996 +v -2.371974 -0.075134 -0.299650 +v -2.386109 -0.075134 -0.150121 +v -2.390827 -0.075134 0.000000 +v -2.386109 -0.075134 0.150121 +v -2.371975 -0.075134 0.299650 +v -2.348479 -0.075134 0.447997 +v -2.315715 -0.075134 0.594575 +v -2.273812 -0.075134 0.738806 +v -2.222935 -0.075134 0.880122 +v -2.163285 -0.075134 1.017965 +v -2.095098 -0.075134 1.151790 +v -2.018642 -0.075134 1.281069 +v -1.934220 -0.075134 1.405293 +v -1.842164 -0.075134 1.523971 +v -1.742838 -0.075134 1.636634 +v -1.636634 -0.075134 1.742838 +v -1.523971 -0.075134 1.842164 +v -1.405293 -0.075134 1.934220 +v -1.281069 -0.075134 2.018642 +v -1.151790 -0.075134 2.095098 +v -1.017965 -0.075134 2.163285 +v -0.880122 -0.075134 2.222935 +v -0.738806 -0.075134 2.273812 +v -0.594574 -0.075134 2.315715 +v -0.447996 -0.075134 2.348479 +v -0.299650 -0.075134 2.371975 +v -0.150121 -0.075134 2.386110 +v 0.000000 -0.075134 2.390828 +v 0.150122 -0.075134 2.386110 +v 0.299650 -0.075134 2.371975 +v 0.447997 -0.075134 2.348479 +v 0.594575 -0.075134 2.315715 +v 0.738807 -0.075134 2.273812 +v 0.880123 -0.075134 2.222935 +v 1.017965 -0.075134 2.163285 +v 1.151790 -0.075134 2.095098 +v 1.281070 -0.075134 2.018642 +v 1.405293 -0.075134 1.934220 +v 1.523971 -0.075134 1.842164 +v 1.636634 -0.075134 1.742838 +v 1.742838 -0.075134 1.636634 +v 1.842165 -0.075134 1.523971 +v 1.934220 -0.075134 1.405293 +v 2.018643 -0.075134 1.281069 +v 2.095098 -0.075134 1.151790 +v 2.163285 -0.075134 1.017965 +v 2.222935 -0.075134 0.880122 +v 2.273812 -0.075134 0.738806 +v 2.315715 -0.075134 0.594575 +v 2.348480 -0.075134 0.447996 +v 2.371975 -0.075134 0.299650 +v 2.386110 -0.075134 0.150121 +v 2.390828 -0.075134 0.000000 +v 2.387287 0.000000 -0.150195 +v 2.373145 0.000000 -0.299798 +v 2.349638 0.000000 -0.448217 +v 2.316858 0.000000 -0.594868 +v 2.274934 0.000000 -0.739171 +v 2.224032 0.000000 -0.880556 +v 2.164352 0.000000 -1.018467 +v 2.096132 0.000000 -1.152358 +v 2.019638 0.000000 -1.281701 +v 1.935174 0.000000 -1.405986 +v 1.843073 0.000000 -1.524722 +v 1.743698 0.000000 -1.637441 +v 1.637441 0.000000 -1.743698 +v 1.524723 0.000000 -1.843073 +v 1.405986 0.000000 -1.935174 +v 1.281701 0.000000 -2.019638 +v 1.152358 0.000000 -2.096131 +v 1.018467 0.000000 -2.164352 +v 0.880556 0.000000 -2.224031 +v 0.739171 0.000000 -2.274934 +v 0.594868 0.000000 -2.316857 +v 0.448218 0.000000 -2.349638 +v 0.299798 0.000000 -2.373145 +v 0.150196 0.000000 -2.387287 +v 0.000000 0.000000 -2.392007 +v -0.150195 0.000000 -2.387287 +v -0.299798 0.000000 -2.373145 +v -0.448217 0.000000 -2.349638 +v -0.594868 0.000000 -2.316858 +v -0.739171 0.000000 -2.274934 +v -0.880556 0.000000 -2.224032 +v -1.018467 0.000000 -2.164353 +v -1.152358 0.000000 -2.096132 +v -1.281701 0.000000 -2.019638 +v -1.405986 0.000000 -1.935174 +v -1.524723 0.000000 -1.843073 +v -1.637442 0.000000 -1.743698 +v -1.743698 0.000000 -1.637441 +v -1.843073 0.000000 -1.524723 +v -1.935174 0.000000 -1.405986 +v -2.019638 0.000000 -1.281701 +v -2.096132 0.000000 -1.152358 +v -2.164353 0.000000 -1.018467 +v -2.224032 0.000000 -0.880556 +v -2.274934 0.000000 -0.739171 +v -2.316858 0.000000 -0.594868 +v -2.349638 0.000000 -0.448217 +v -2.373145 0.000000 -0.299798 +v -2.387287 0.000000 -0.150195 +v -2.392007 0.000000 0.000000 +v -2.387287 0.000000 0.150196 +v -2.373145 0.000000 0.299798 +v -2.349638 0.000000 0.448218 +v -2.316858 0.000000 0.594868 +v -2.274934 0.000000 0.739171 +v -2.224032 0.000000 0.880557 +v -2.164353 0.000000 1.018467 +v -2.096132 0.000000 1.152359 +v -2.019638 0.000000 1.281702 +v -1.935174 0.000000 1.405987 +v -1.843073 0.000000 1.524723 +v -1.743698 0.000000 1.637442 +v -1.637442 0.000000 1.743699 +v -1.524723 0.000000 1.843074 +v -1.405987 0.000000 1.935175 +v -1.281702 0.000000 2.019639 +v -1.152358 0.000000 2.096132 +v -1.018467 0.000000 2.164353 +v -0.880556 0.000000 2.224032 +v -0.739171 0.000000 2.274934 +v -0.594868 0.000000 2.316858 +v -0.448217 0.000000 2.349639 +v -0.299798 0.000000 2.373146 +v -0.150195 0.000000 2.387288 +v 0.000000 0.000000 2.392008 +v 0.150196 0.000000 2.387288 +v 0.299798 0.000000 2.373146 +v 0.448218 0.000000 2.349639 +v 0.594868 0.000000 2.316858 +v 0.739171 0.000000 2.274935 +v 0.880557 0.000000 2.224033 +v 1.018468 0.000000 2.164353 +v 1.152359 0.000000 2.096132 +v 1.281702 0.000000 2.019639 +v 1.405987 0.000000 1.935175 +v 1.524723 0.000000 1.843073 +v 1.637442 0.000000 1.743699 +v 1.743699 0.000000 1.637442 +v 1.843074 0.000000 1.524723 +v 1.935175 0.000000 1.405987 +v 2.019639 0.000000 1.281702 +v 2.096132 0.000000 1.152359 +v 2.164353 0.000000 1.018467 +v 2.224033 0.000000 0.880557 +v 2.274935 0.000000 0.739171 +v 2.316858 0.000000 0.594868 +v 2.349639 0.000000 0.448218 +v 2.373146 0.000000 0.299798 +v 2.387288 0.000000 0.150195 +v 2.392008 0.000000 0.000000 +v 2.386109 0.075134 -0.150121 +v 2.371974 0.075134 -0.299650 +v 2.348479 0.075134 -0.447996 +v 2.315714 0.075134 -0.594574 +v 2.273811 0.075134 -0.738806 +v 2.222934 0.075134 -0.880122 +v 2.163284 0.075134 -1.017964 +v 2.095097 0.075134 -1.151789 +v 2.018642 0.075134 -1.281069 +v 1.934219 0.075134 -1.405292 +v 1.842164 0.075134 -1.523970 +v 1.742838 0.075134 -1.636633 +v 1.636633 0.075134 -1.742838 +v 1.523970 0.075134 -1.842164 +v 1.405293 0.075134 -1.934219 +v 1.281069 0.075134 -2.018641 +v 1.151789 0.075134 -2.095097 +v 1.017964 0.075134 -2.163284 +v 0.880122 0.075134 -2.222934 +v 0.738806 0.075134 -2.273811 +v 0.594575 0.075134 -2.315714 +v 0.447996 0.075134 -2.348479 +v 0.299650 0.075134 -2.371974 +v 0.150121 0.075134 -2.386109 +v 0.000000 0.075134 -2.390827 +v -0.150121 0.075134 -2.386109 +v -0.299650 0.075134 -2.371974 +v -0.447996 0.075134 -2.348479 +v -0.594574 0.075134 -2.315714 +v -0.738806 0.075134 -2.273811 +v -0.880122 0.075134 -2.222934 +v -1.017964 0.075134 -2.163285 +v -1.151790 0.075134 -2.095097 +v -1.281069 0.075134 -2.018642 +v -1.405293 0.075134 -1.934219 +v -1.523970 0.075134 -1.842164 +v -1.636634 0.075134 -1.742838 +v -1.742838 0.075134 -1.636633 +v -1.842164 0.075134 -1.523970 +v -1.934220 0.075134 -1.405293 +v -2.018642 0.075134 -1.281069 +v -2.095097 0.075134 -1.151789 +v -2.163285 0.075134 -1.017964 +v -2.222934 0.075134 -0.880122 +v -2.273811 0.075134 -0.738806 +v -2.315714 0.075134 -0.594574 +v -2.348479 0.075134 -0.447996 +v -2.371974 0.075134 -0.299650 +v -2.386109 0.075134 -0.150121 +v -2.390827 0.075134 0.000000 +v -2.386109 0.075134 0.150121 +v -2.371975 0.075134 0.299650 +v -2.348479 0.075134 0.447997 +v -2.315715 0.075134 0.594575 +v -2.273812 0.075134 0.738806 +v -2.222935 0.075134 0.880122 +v -2.163285 0.075134 1.017965 +v -2.095098 0.075134 1.151790 +v -2.018642 0.075134 1.281069 +v -1.934220 0.075134 1.405293 +v -1.842164 0.075134 1.523971 +v -1.742838 0.075134 1.636634 +v -1.636634 0.075134 1.742838 +v -1.523971 0.075134 1.842164 +v -1.405293 0.075134 1.934220 +v -1.281069 0.075134 2.018642 +v -1.151790 0.075134 2.095098 +v -1.017965 0.075134 2.163285 +v -0.880122 0.075134 2.222935 +v -0.738806 0.075134 2.273812 +v -0.594574 0.075134 2.315715 +v -0.447996 0.075134 2.348479 +v -0.299650 0.075134 2.371975 +v -0.150121 0.075134 2.386110 +v 0.000000 0.075134 2.390828 +v 0.150122 0.075134 2.386110 +v 0.299650 0.075134 2.371975 +v 0.447997 0.075134 2.348479 +v 0.594575 0.075134 2.315715 +v 0.738807 0.075134 2.273812 +v 0.880123 0.075134 2.222935 +v 1.017965 0.075134 2.163285 +v 1.151790 0.075134 2.095098 +v 1.281070 0.075134 2.018642 +v 1.405293 0.075134 1.934220 +v 1.523971 0.075134 1.842164 +v 1.636634 0.075134 1.742838 +v 1.742838 0.075134 1.636634 +v 1.842165 0.075134 1.523971 +v 1.934220 0.075134 1.405293 +v 2.018643 0.075134 1.281069 +v 2.095098 0.075134 1.151790 +v 2.163285 0.075134 1.017965 +v 2.222935 0.075134 0.880122 +v 2.273812 0.075134 0.738806 +v 2.315715 0.075134 0.594575 +v 2.348480 0.075134 0.447996 +v 2.371975 0.075134 0.299650 +v 2.386110 0.075134 0.150121 +v 2.390828 0.075134 0.000000 +v 2.382576 0.150194 -0.149899 +v 2.368462 0.150194 -0.299206 +v 2.345001 0.150194 -0.447333 +v 2.312286 0.150194 -0.593694 +v 2.270445 0.150194 -0.737712 +v 2.219643 0.150194 -0.878819 +v 2.160082 0.150194 -1.016457 +v 2.091995 0.150194 -1.150084 +v 2.015653 0.150194 -1.279172 +v 1.931356 0.150194 -1.403212 +v 1.839436 0.150194 -1.521714 +v 1.740257 0.150194 -1.634210 +v 1.634210 0.150194 -1.740257 +v 1.521714 0.150194 -1.839436 +v 1.403212 0.150194 -1.931356 +v 1.279172 0.150194 -2.015653 +v 1.150084 0.150194 -2.091995 +v 1.016457 0.150194 -2.160082 +v 0.878819 0.150194 -2.219643 +v 0.737712 0.150194 -2.270445 +v 0.593694 0.150194 -2.312286 +v 0.447333 0.150194 -2.345001 +v 0.299207 0.150194 -2.368462 +v 0.149899 0.150194 -2.382576 +v 0.000000 0.150194 -2.387287 +v -0.149899 0.150194 -2.382576 +v -0.299206 0.150194 -2.368463 +v -0.447333 0.150194 -2.345002 +v -0.593694 0.150194 -2.312286 +v -0.737712 0.150194 -2.270445 +v -0.878819 0.150194 -2.219643 +v -1.016457 0.150194 -2.160082 +v -1.150084 0.150194 -2.091996 +v -1.279172 0.150194 -2.015653 +v -1.403212 0.150194 -1.931356 +v -1.521714 0.150194 -1.839436 +v -1.634211 0.150194 -1.740257 +v -1.740257 0.150194 -1.634210 +v -1.839437 0.150194 -1.521714 +v -1.931356 0.150194 -1.403212 +v -2.015653 0.150194 -1.279172 +v -2.091996 0.150194 -1.150084 +v -2.160082 0.150194 -1.016457 +v -2.219643 0.150194 -0.878819 +v -2.270445 0.150194 -0.737712 +v -2.312286 0.150194 -0.593694 +v -2.345002 0.150194 -0.447333 +v -2.368463 0.150194 -0.299206 +v -2.382577 0.150194 -0.149899 +v -2.387287 0.150194 0.000000 +v -2.382577 0.150194 0.149899 +v -2.368463 0.150194 0.299207 +v -2.345002 0.150194 0.447333 +v -2.312286 0.150194 0.593694 +v -2.270445 0.150194 0.737713 +v -2.219644 0.150194 0.878819 +v -2.160082 0.150194 1.016458 +v -2.091996 0.150194 1.150085 +v -2.015653 0.150194 1.279173 +v -1.931356 0.150194 1.403213 +v -1.839437 0.150194 1.521715 +v -1.740257 0.150194 1.634211 +v -1.634211 0.150194 1.740258 +v -1.521714 0.150194 1.839437 +v -1.403212 0.150194 1.931356 +v -1.279173 0.150194 2.015654 +v -1.150084 0.150194 2.091996 +v -1.016457 0.150194 2.160082 +v -0.878819 0.150194 2.219644 +v -0.737712 0.150194 2.270445 +v -0.593694 0.150194 2.312287 +v -0.447333 0.150194 2.345002 +v -0.299206 0.150194 2.368463 +v -0.149899 0.150194 2.382577 +v 0.000000 0.150194 2.387288 +v 0.149899 0.150194 2.382577 +v 0.299207 0.150194 2.368463 +v 0.447333 0.150194 2.345003 +v 0.593695 0.150194 2.312287 +v 0.737713 0.150194 2.270446 +v 0.878820 0.150194 2.219644 +v 1.016458 0.150194 2.160083 +v 1.150085 0.150194 2.091996 +v 1.279173 0.150194 2.015654 +v 1.403213 0.150194 1.931356 +v 1.521715 0.150194 1.839437 +v 1.634211 0.150194 1.740258 +v 1.740258 0.150194 1.634211 +v 1.839437 0.150194 1.521715 +v 1.931357 0.150194 1.403213 +v 2.015654 0.150194 1.279173 +v 2.091996 0.150194 1.150085 +v 2.160083 0.150194 1.016458 +v 2.219644 0.150194 0.878819 +v 2.270446 0.150194 0.737713 +v 2.312287 0.150194 0.593694 +v 2.345003 0.150194 0.447333 +v 2.368464 0.150194 0.299207 +v 2.382577 0.150194 0.149899 +v 2.387288 0.150194 0.000000 +v 2.376692 0.225107 -0.149529 +v 2.362613 0.225107 -0.298467 +v 2.339210 0.225107 -0.446228 +v 2.306575 0.225107 -0.592228 +v 2.264838 0.225107 -0.735890 +v 2.214161 0.225107 -0.876648 +v 2.154747 0.225107 -1.013947 +v 2.086829 0.225107 -1.147244 +v 2.010675 0.225107 -1.276013 +v 1.926586 0.225107 -1.399746 +v 1.834893 0.225107 -1.517956 +v 1.735959 0.225107 -1.630174 +v 1.630174 0.225107 -1.735959 +v 1.517956 0.225107 -1.834893 +v 1.399747 0.225107 -1.926586 +v 1.276013 0.225107 -2.010675 +v 1.147244 0.225107 -2.086829 +v 1.013947 0.225107 -2.154747 +v 0.876649 0.225107 -2.214161 +v 0.735890 0.225107 -2.264837 +v 0.592228 0.225107 -2.306575 +v 0.446228 0.225107 -2.339210 +v 0.298468 0.225107 -2.362613 +v 0.149529 0.225107 -2.376692 +v 0.000000 0.225107 -2.381391 +v -0.149529 0.225107 -2.376692 +v -0.298467 0.225107 -2.362613 +v -0.446228 0.225107 -2.339210 +v -0.592228 0.225107 -2.306576 +v -0.735890 0.225107 -2.264838 +v -0.876649 0.225107 -2.214161 +v -1.013947 0.225107 -2.154747 +v -1.147244 0.225107 -2.086829 +v -1.276013 0.225107 -2.010675 +v -1.399747 0.225107 -1.926586 +v -1.517956 0.225107 -1.834893 +v -1.630175 0.225107 -1.735959 +v -1.735960 0.225107 -1.630174 +v -1.834894 0.225107 -1.517956 +v -1.926586 0.225107 -1.399747 +v -2.010675 0.225107 -1.276013 +v -2.086829 0.225107 -1.147244 +v -2.154747 0.225107 -1.013947 +v -2.214161 0.225107 -0.876648 +v -2.264838 0.225107 -0.735890 +v -2.306576 0.225107 -0.592228 +v -2.339210 0.225107 -0.446228 +v -2.362613 0.225107 -0.298467 +v -2.376692 0.225107 -0.149529 +v -2.381392 0.225107 0.000000 +v -2.376692 0.225107 0.149529 +v -2.362613 0.225107 0.298468 +v -2.339211 0.225107 0.446229 +v -2.306576 0.225107 0.592228 +v -2.264838 0.225107 0.735891 +v -2.214162 0.225107 0.876649 +v -2.154747 0.225107 1.013947 +v -2.086829 0.225107 1.147244 +v -2.010675 0.225107 1.276014 +v -1.926586 0.225107 1.399747 +v -1.834894 0.225107 1.517956 +v -1.735960 0.225107 1.630175 +v -1.630175 0.225107 1.735960 +v -1.517956 0.225107 1.834894 +v -1.399747 0.225107 1.926587 +v -1.276013 0.225107 2.010676 +v -1.147244 0.225107 2.086830 +v -1.013947 0.225107 2.154748 +v -0.876649 0.225107 2.214162 +v -0.735890 0.225107 2.264838 +v -0.592228 0.225107 2.306576 +v -0.446228 0.225107 2.339211 +v -0.298467 0.225107 2.362614 +v -0.149529 0.225107 2.376693 +v 0.000000 0.225107 2.381392 +v 0.149529 0.225107 2.376693 +v 0.298468 0.225107 2.362614 +v 0.446229 0.225107 2.339211 +v 0.592228 0.225107 2.306576 +v 0.735891 0.225107 2.264839 +v 0.876649 0.225107 2.214162 +v 1.013948 0.225107 2.154748 +v 1.147245 0.225107 2.086830 +v 1.276014 0.225107 2.010676 +v 1.399747 0.225107 1.926586 +v 1.517957 0.225107 1.834894 +v 1.630175 0.225107 1.735960 +v 1.735960 0.225107 1.630175 +v 1.834894 0.225107 1.517956 +v 1.926587 0.225107 1.399747 +v 2.010676 0.225107 1.276014 +v 2.086830 0.225107 1.147244 +v 2.154748 0.225107 1.013947 +v 2.214162 0.225107 0.876649 +v 2.264839 0.225107 0.735891 +v 2.306576 0.225107 0.592228 +v 2.339211 0.225107 0.446228 +v 2.362614 0.225107 0.298468 +v 2.376693 0.225107 0.149529 +v 2.381392 0.225107 0.000000 +v 2.368462 0.299797 -0.149011 +v 2.354432 0.299797 -0.297434 +v 2.331110 0.299797 -0.444683 +v 2.298589 0.299797 -0.590177 +v 2.256995 0.299797 -0.733342 +v 2.206495 0.299797 -0.873613 +v 2.147286 0.299797 -1.010436 +v 2.079603 0.299797 -1.143271 +v 2.003713 0.299797 -1.271595 +v 1.919915 0.299797 -1.394900 +v 1.828540 0.299797 -1.512700 +v 1.729948 0.299797 -1.624530 +v 1.624530 0.299797 -1.729948 +v 1.512700 0.299797 -1.828540 +v 1.394900 0.299797 -1.919915 +v 1.271595 0.299797 -2.003713 +v 1.143271 0.299797 -2.079603 +v 1.010436 0.299797 -2.147286 +v 0.873613 0.299797 -2.206495 +v 0.733342 0.299797 -2.256995 +v 0.590177 0.299797 -2.298588 +v 0.444683 0.299797 -2.331110 +v 0.297434 0.299797 -2.354432 +v 0.149011 0.299797 -2.368462 +v 0.000000 0.299797 -2.373145 +v -0.149011 0.299797 -2.368462 +v -0.297434 0.299797 -2.354432 +v -0.444683 0.299797 -2.331110 +v -0.590177 0.299797 -2.298589 +v -0.733342 0.299797 -2.256995 +v -0.873613 0.299797 -2.206495 +v -1.010436 0.299797 -2.147286 +v -1.143272 0.299797 -2.079603 +v -1.271595 0.299797 -2.003713 +v -1.394900 0.299797 -1.919915 +v -1.512700 0.299797 -1.828540 +v -1.624530 0.299797 -1.729948 +v -1.729949 0.299797 -1.624530 +v -1.828540 0.299797 -1.512700 +v -1.919915 0.299797 -1.394900 +v -2.003713 0.299797 -1.271595 +v -2.079603 0.299797 -1.143271 +v -2.147286 0.299797 -1.010436 +v -2.206495 0.299797 -0.873613 +v -2.256995 0.299797 -0.733342 +v -2.298589 0.299797 -0.590177 +v -2.331111 0.299797 -0.444683 +v -2.354432 0.299797 -0.297434 +v -2.368463 0.299797 -0.149011 +v -2.373146 0.299797 0.000000 +v -2.368463 0.299797 0.149011 +v -2.354433 0.299797 0.297434 +v -2.331111 0.299797 0.444683 +v -2.298589 0.299797 0.590178 +v -2.256996 0.299797 0.733343 +v -2.206495 0.299797 0.873613 +v -2.147286 0.299797 1.010437 +v -2.079603 0.299797 1.143272 +v -2.003713 0.299797 1.271595 +v -1.919915 0.299797 1.394900 +v -1.828540 0.299797 1.512700 +v -1.729949 0.299797 1.624530 +v -1.624530 0.299797 1.729949 +v -1.512700 0.299797 1.828541 +v -1.394900 0.299797 1.919916 +v -1.271595 0.299797 2.003714 +v -1.143272 0.299797 2.079604 +v -1.010436 0.299797 2.147287 +v -0.873613 0.299797 2.206495 +v -0.733342 0.299797 2.256996 +v -0.590177 0.299797 2.298589 +v -0.444683 0.299797 2.331111 +v -0.297434 0.299797 2.354433 +v -0.149011 0.299797 2.368463 +v 0.000000 0.299797 2.373146 +v 0.149011 0.299797 2.368463 +v 0.297434 0.299797 2.354433 +v 0.444684 0.299797 2.331111 +v 0.590178 0.299797 2.298590 +v 0.733343 0.299797 2.256996 +v 0.873614 0.299797 2.206496 +v 1.010437 0.299797 2.147287 +v 1.143272 0.299797 2.079604 +v 1.271596 0.299797 2.003714 +v 1.394901 0.299797 1.919915 +v 1.512701 0.299797 1.828540 +v 1.624531 0.299797 1.729949 +v 1.729949 0.299797 1.624530 +v 1.828541 0.299797 1.512700 +v 1.919916 0.299797 1.394900 +v 2.003714 0.299797 1.271595 +v 2.079604 0.299797 1.143272 +v 2.147287 0.299797 1.010437 +v 2.206496 0.299797 0.873613 +v 2.256996 0.299797 0.733343 +v 2.298590 0.299797 0.590178 +v 2.331112 0.299797 0.444683 +v 2.354433 0.299797 0.297434 +v 2.368464 0.299797 0.149011 +v 2.373146 0.299797 0.000000 +v 2.357895 0.374191 -0.148346 +v 2.343928 0.374191 -0.296107 +v 2.320710 0.374191 -0.442699 +v 2.288333 0.374191 -0.587544 +v 2.246926 0.374191 -0.730070 +v 2.196650 0.374191 -0.869715 +v 2.137706 0.374191 -1.005928 +v 2.070325 0.374191 -1.138171 +v 1.994773 0.374191 -1.265921 +v 1.911349 0.374191 -1.388676 +v 1.820382 0.374191 -1.505951 +v 1.722230 0.374191 -1.617282 +v 1.617282 0.374191 -1.722230 +v 1.505951 0.374191 -1.820382 +v 1.388676 0.374191 -1.911349 +v 1.265921 0.374191 -1.994773 +v 1.138171 0.374191 -2.070325 +v 1.005928 0.374191 -2.137706 +v 0.869715 0.374191 -2.196650 +v 0.730070 0.374191 -2.246926 +v 0.587544 0.374191 -2.288333 +v 0.442699 0.374191 -2.320710 +v 0.296107 0.374191 -2.343928 +v 0.148346 0.374191 -2.357895 +v 0.000000 0.374191 -2.362557 +v -0.148346 0.374191 -2.357895 +v -0.296107 0.374191 -2.343928 +v -0.442699 0.374191 -2.320710 +v -0.587544 0.374191 -2.288334 +v -0.730070 0.374191 -2.246926 +v -0.869715 0.374191 -2.196651 +v -1.005928 0.374191 -2.137706 +v -1.138171 0.374191 -2.070325 +v -1.265922 0.374191 -1.994773 +v -1.388676 0.374191 -1.911349 +v -1.505951 0.374191 -1.820382 +v -1.617282 0.374191 -1.722230 +v -1.722231 0.374191 -1.617282 +v -1.820382 0.374191 -1.505951 +v -1.911349 0.374191 -1.388676 +v -1.994773 0.374191 -1.265921 +v -2.070325 0.374191 -1.138171 +v -2.137706 0.374191 -1.005928 +v -2.196651 0.374191 -0.869715 +v -2.246926 0.374191 -0.730070 +v -2.288334 0.374191 -0.587544 +v -2.320710 0.374191 -0.442699 +v -2.343928 0.374191 -0.296107 +v -2.357896 0.374191 -0.148346 +v -2.362558 0.374191 0.000000 +v -2.357896 0.374191 0.148346 +v -2.343928 0.374191 0.296107 +v -2.320710 0.374191 0.442699 +v -2.288334 0.374191 0.587544 +v -2.246926 0.374191 0.730071 +v -2.196651 0.374191 0.869716 +v -2.137706 0.374191 1.005929 +v -2.070325 0.374191 1.138171 +v -1.994773 0.374191 1.265922 +v -1.911349 0.374191 1.388677 +v -1.820382 0.374191 1.505951 +v -1.722231 0.374191 1.617282 +v -1.617282 0.374191 1.722231 +v -1.505951 0.374191 1.820382 +v -1.388677 0.374191 1.911350 +v -1.265922 0.374191 1.994774 +v -1.138171 0.374191 2.070325 +v -1.005928 0.374191 2.137707 +v -0.869715 0.374191 2.196651 +v -0.730070 0.374191 2.246926 +v -0.587544 0.374191 2.288334 +v -0.442699 0.374191 2.320711 +v -0.296107 0.374191 2.343929 +v -0.148346 0.374191 2.357896 +v 0.000000 0.374191 2.362558 +v 0.148347 0.374191 2.357896 +v 0.296107 0.374191 2.343929 +v 0.442700 0.374191 2.320711 +v 0.587545 0.374191 2.288334 +v 0.730071 0.374191 2.246927 +v 0.869716 0.374191 2.196651 +v 1.005929 0.374191 2.137707 +v 1.138171 0.374191 2.070326 +v 1.265922 0.374191 1.994774 +v 1.388677 0.374191 1.911350 +v 1.505952 0.374191 1.820382 +v 1.617283 0.374191 1.722231 +v 1.722231 0.374191 1.617282 +v 1.820383 0.374191 1.505951 +v 1.911350 0.374191 1.388677 +v 1.994774 0.374191 1.265922 +v 2.070326 0.374191 1.138171 +v 2.137707 0.374191 1.005929 +v 2.196651 0.374191 0.869716 +v 2.246927 0.374191 0.730071 +v 2.288334 0.374191 0.587544 +v 2.320711 0.374191 0.442699 +v 2.343929 0.374191 0.296107 +v 2.357897 0.374191 0.148346 +v 2.362559 0.374191 0.000000 +v 2.345001 0.448217 -0.147535 +v 2.331110 0.448217 -0.294488 +v 2.308019 0.448217 -0.440278 +v 2.275820 0.448217 -0.584331 +v 2.234639 0.448217 -0.726078 +v 2.184638 0.448217 -0.864959 +v 2.126016 0.448217 -1.000427 +v 2.059003 0.448217 -1.131947 +v 1.983865 0.448217 -1.258999 +v 1.900897 0.448217 -1.381082 +v 1.810427 0.448217 -1.497715 +v 1.712812 0.448217 -1.608438 +v 1.608438 0.448217 -1.712812 +v 1.497716 0.448217 -1.810427 +v 1.381083 0.448217 -1.900897 +v 1.258999 0.448217 -1.983865 +v 1.131947 0.448217 -2.059003 +v 1.000427 0.448217 -2.126016 +v 0.864960 0.448217 -2.184638 +v 0.726078 0.448217 -2.234638 +v 0.584331 0.448217 -2.275820 +v 0.440278 0.448217 -2.308019 +v 0.294488 0.448217 -2.331110 +v 0.147535 0.448217 -2.345002 +v 0.000000 0.448217 -2.349638 +v -0.147535 0.448217 -2.345002 +v -0.294488 0.448217 -2.331110 +v -0.440278 0.448217 -2.308019 +v -0.584331 0.448217 -2.275820 +v -0.726078 0.448217 -2.234639 +v -0.864959 0.448217 -2.184638 +v -1.000427 0.448217 -2.126016 +v -1.131947 0.448217 -2.059004 +v -1.258999 0.448217 -1.983865 +v -1.381083 0.448217 -1.900897 +v -1.497716 0.448217 -1.810427 +v -1.608438 0.448217 -1.712812 +v -1.712813 0.448217 -1.608438 +v -1.810427 0.448217 -1.497716 +v -1.900897 0.448217 -1.381083 +v -1.983865 0.448217 -1.258999 +v -2.059004 0.448217 -1.131947 +v -2.126016 0.448217 -1.000427 +v -2.184638 0.448217 -0.864959 +v -2.234639 0.448217 -0.726078 +v -2.275820 0.448217 -0.584331 +v -2.308020 0.448217 -0.440278 +v -2.331111 0.448217 -0.294488 +v -2.345002 0.448217 -0.147535 +v -2.349638 0.448217 0.000000 +v -2.345002 0.448217 0.147535 +v -2.331111 0.448217 0.294488 +v -2.308020 0.448217 0.440279 +v -2.275820 0.448217 0.584332 +v -2.234639 0.448217 0.726078 +v -2.184639 0.448217 0.864960 +v -2.126016 0.448217 1.000428 +v -2.059004 0.448217 1.131947 +v -1.983865 0.448217 1.258999 +v -1.900897 0.448217 1.381083 +v -1.810427 0.448217 1.497716 +v -1.712813 0.448217 1.608438 +v -1.608438 0.448217 1.712813 +v -1.497716 0.448217 1.810428 +v -1.381083 0.448217 1.900898 +v -1.258999 0.448217 1.983866 +v -1.131947 0.448217 2.059004 +v -1.000427 0.448217 2.126017 +v -0.864960 0.448217 2.184639 +v -0.726078 0.448217 2.234639 +v -0.584331 0.448217 2.275821 +v -0.440278 0.448217 2.308020 +v -0.294488 0.448217 2.331111 +v -0.147535 0.448217 2.345002 +v 0.000000 0.448217 2.349639 +v 0.147535 0.448217 2.345002 +v 0.294488 0.448217 2.331111 +v 0.440279 0.448217 2.308020 +v 0.584332 0.448217 2.275821 +v 0.726079 0.448217 2.234640 +v 0.864960 0.448217 2.184639 +v 1.000428 0.448217 2.126017 +v 1.131948 0.448217 2.059004 +v 1.259000 0.448217 1.983866 +v 1.381083 0.448217 1.900898 +v 1.497717 0.448217 1.810428 +v 1.608439 0.448217 1.712813 +v 1.712813 0.448217 1.608438 +v 1.810428 0.448217 1.497716 +v 1.900898 0.448217 1.381083 +v 1.983866 0.448217 1.258999 +v 2.059004 0.448217 1.131947 +v 2.126017 0.448217 1.000428 +v 2.184639 0.448217 0.864960 +v 2.234640 0.448217 0.726078 +v 2.275821 0.448217 0.584332 +v 2.308021 0.448217 0.440278 +v 2.331112 0.448217 0.294488 +v 2.345003 0.448217 0.147535 +v 2.349639 0.448217 0.000000 +v 2.329793 0.521799 -0.146578 +v 2.315992 0.521799 -0.292578 +v 2.293051 0.521799 -0.437423 +v 2.261060 0.521799 -0.580541 +v 2.220146 0.521799 -0.721369 +v 2.170470 0.521799 -0.859350 +v 2.112228 0.521799 -0.993939 +v 2.045650 0.521799 -1.124605 +v 1.970999 0.521799 -1.250834 +v 1.888569 0.521799 -1.372126 +v 1.798686 0.521799 -1.488002 +v 1.701704 0.521799 -1.598007 +v 1.598007 0.521799 -1.701704 +v 1.488002 0.521799 -1.798686 +v 1.372126 0.521799 -1.888569 +v 1.250834 0.521799 -1.970999 +v 1.124606 0.521799 -2.045650 +v 0.993939 0.521799 -2.112228 +v 0.859350 0.521799 -2.170470 +v 0.721369 0.521799 -2.220146 +v 0.580542 0.521799 -2.261060 +v 0.437423 0.521799 -2.293051 +v 0.292578 0.521799 -2.315992 +v 0.146578 0.521799 -2.329793 +v 0.000000 0.521799 -2.334400 +v -0.146578 0.521799 -2.329793 +v -0.292578 0.521799 -2.315992 +v -0.437423 0.521799 -2.293051 +v -0.580542 0.521799 -2.261061 +v -0.721369 0.521799 -2.220146 +v -0.859350 0.521799 -2.170470 +v -0.993939 0.521799 -2.112228 +v -1.124606 0.521799 -2.045650 +v -1.250834 0.521799 -1.970999 +v -1.372126 0.521799 -1.888569 +v -1.488003 0.521799 -1.798686 +v -1.598007 0.521799 -1.701704 +v -1.701704 0.521799 -1.598007 +v -1.798686 0.521799 -1.488002 +v -1.888569 0.521799 -1.372126 +v -1.970999 0.521799 -1.250834 +v -2.045650 0.521799 -1.124606 +v -2.112228 0.521799 -0.993939 +v -2.170470 0.521799 -0.859350 +v -2.220146 0.521799 -0.721369 +v -2.261061 0.521799 -0.580542 +v -2.293051 0.521799 -0.437423 +v -2.315993 0.521799 -0.292578 +v -2.329794 0.521799 -0.146578 +v -2.334400 0.521799 0.000000 +v -2.329794 0.521799 0.146578 +v -2.315993 0.521799 0.292578 +v -2.293052 0.521799 0.437423 +v -2.261061 0.521799 0.580542 +v -2.220147 0.521799 0.721370 +v -2.170470 0.521799 0.859350 +v -2.112228 0.521799 0.993940 +v -2.045650 0.521799 1.124606 +v -1.970999 0.521799 1.250834 +v -1.888569 0.521799 1.372126 +v -1.798686 0.521799 1.488003 +v -1.701704 0.521799 1.598007 +v -1.598007 0.521799 1.701705 +v -1.488003 0.521799 1.798687 +v -1.372126 0.521799 1.888570 +v -1.250834 0.521799 1.971000 +v -1.124606 0.521799 2.045651 +v -0.993939 0.521799 2.112229 +v -0.859350 0.521799 2.170471 +v -0.721369 0.521799 2.220147 +v -0.580542 0.521799 2.261061 +v -0.437423 0.521799 2.293052 +v -0.292578 0.521799 2.315993 +v -0.146578 0.521799 2.329794 +v 0.000000 0.521799 2.334401 +v 0.146578 0.521799 2.329794 +v 0.292578 0.521799 2.315993 +v 0.437423 0.521799 2.293052 +v 0.580542 0.521799 2.261061 +v 0.721370 0.521799 2.220147 +v 0.859350 0.521799 2.170471 +v 0.993940 0.521799 2.112229 +v 1.124606 0.521799 2.045651 +v 1.250835 0.521799 1.971000 +v 1.372127 0.521799 1.888570 +v 1.488003 0.521799 1.798687 +v 1.598008 0.521799 1.701705 +v 1.701705 0.521799 1.598007 +v 1.798687 0.521799 1.488003 +v 1.888570 0.521799 1.372126 +v 1.971000 0.521799 1.250834 +v 2.045651 0.521799 1.124606 +v 2.112229 0.521799 0.993940 +v 2.170471 0.521799 0.859350 +v 2.220147 0.521799 0.721370 +v 2.261061 0.521799 0.580542 +v 2.293052 0.521799 0.437423 +v 2.315993 0.521799 0.292578 +v 2.329795 0.521799 0.146578 +v 2.334401 0.521799 0.000000 +v 2.312286 0.594867 -0.145477 +v 2.298589 0.594867 -0.290379 +v 2.275820 0.594867 -0.434136 +v 2.244069 0.594867 -0.576179 +v 2.203463 0.594867 -0.715948 +v 2.154160 0.594867 -0.852892 +v 2.096356 0.594867 -0.986470 +v 2.030278 0.594867 -1.116155 +v 1.956188 0.594867 -1.241434 +v 1.874377 0.594867 -1.361815 +v 1.785170 0.594867 -1.476821 +v 1.688917 0.594867 -1.585998 +v 1.585998 0.594867 -1.688917 +v 1.476821 0.594867 -1.785170 +v 1.361815 0.594867 -1.874377 +v 1.241434 0.594867 -1.956188 +v 1.116155 0.594867 -2.030278 +v 0.986470 0.594867 -2.096355 +v 0.852892 0.594867 -2.154160 +v 0.715949 0.594867 -2.203463 +v 0.576179 0.594867 -2.244069 +v 0.434136 0.594867 -2.275820 +v 0.290379 0.594867 -2.298589 +v 0.145477 0.594867 -2.312286 +v 0.000000 0.594867 -2.316858 +v -0.145477 0.594867 -2.312286 +v -0.290379 0.594867 -2.298589 +v -0.434136 0.594867 -2.275820 +v -0.576179 0.594867 -2.244070 +v -0.715948 0.594867 -2.203463 +v -0.852892 0.594867 -2.154160 +v -0.986470 0.594867 -2.096356 +v -1.116155 0.594867 -2.030278 +v -1.241435 0.594867 -1.956188 +v -1.361815 0.594867 -1.874377 +v -1.476821 0.594867 -1.785170 +v -1.585999 0.594867 -1.688917 +v -1.688917 0.594867 -1.585998 +v -1.785170 0.594867 -1.476821 +v -1.874378 0.594867 -1.361815 +v -1.956188 0.594867 -1.241434 +v -2.030278 0.594867 -1.116155 +v -2.096356 0.594867 -0.986470 +v -2.154160 0.594867 -0.852892 +v -2.203463 0.594867 -0.715948 +v -2.244070 0.594867 -0.576179 +v -2.275820 0.594867 -0.434136 +v -2.298589 0.594867 -0.290379 +v -2.312286 0.594867 -0.145477 +v -2.316858 0.594867 0.000000 +v -2.312286 0.594867 0.145477 +v -2.298589 0.594867 0.290380 +v -2.275820 0.594867 0.434136 +v -2.244070 0.594867 0.576179 +v -2.203463 0.594867 0.715949 +v -2.154160 0.594867 0.852893 +v -2.096356 0.594867 0.986471 +v -2.030278 0.594867 1.116155 +v -1.956188 0.594867 1.241435 +v -1.874378 0.594867 1.361815 +v -1.785170 0.594867 1.476821 +v -1.688917 0.594867 1.585999 +v -1.585999 0.594867 1.688917 +v -1.476821 0.594867 1.785170 +v -1.361815 0.594867 1.874378 +v -1.241435 0.594867 1.956189 +v -1.116155 0.594867 2.030279 +v -0.986470 0.594867 2.096356 +v -0.852892 0.594867 2.154161 +v -0.715948 0.594867 2.203464 +v -0.576179 0.594867 2.244070 +v -0.434136 0.594867 2.275821 +v -0.290379 0.594867 2.298590 +v -0.145477 0.594867 2.312287 +v 0.000000 0.594867 2.316859 +v 0.145477 0.594867 2.312287 +v 0.290380 0.594867 2.298590 +v 0.434136 0.594867 2.275821 +v 0.576180 0.594867 2.244071 +v 0.715949 0.594867 2.203464 +v 0.852893 0.594867 2.154161 +v 0.986471 0.594867 2.096357 +v 1.116156 0.594867 2.030279 +v 1.241435 0.594867 1.956189 +v 1.361816 0.594867 1.874378 +v 1.476822 0.594867 1.785170 +v 1.585999 0.594867 1.688917 +v 1.688918 0.594867 1.585999 +v 1.785171 0.594867 1.476821 +v 1.874378 0.594867 1.361815 +v 1.956189 0.594867 1.241435 +v 2.030279 0.594867 1.116155 +v 2.096357 0.594867 0.986471 +v 2.154161 0.594867 0.852893 +v 2.203464 0.594867 0.715949 +v 2.244071 0.594867 0.576179 +v 2.275821 0.594867 0.434136 +v 2.298590 0.594867 0.290379 +v 2.312287 0.594867 0.145477 +v 2.316859 0.594867 0.000000 +v 2.292496 0.667348 -0.144232 +v 2.278917 0.667348 -0.287894 +v 2.256343 0.667348 -0.430420 +v 2.224864 0.667348 -0.571248 +v 2.184605 0.667348 -0.709821 +v 2.135724 0.667348 -0.845593 +v 2.078414 0.667348 -0.978027 +v 2.012902 0.667348 -1.106602 +v 1.939446 0.667348 -1.230810 +v 1.858336 0.667348 -1.350160 +v 1.769892 0.667348 -1.464182 +v 1.674462 0.667348 -1.572425 +v 1.572425 0.667348 -1.674462 +v 1.464182 0.667348 -1.769892 +v 1.350160 0.667348 -1.858336 +v 1.230810 0.667348 -1.939446 +v 1.106602 0.667348 -2.012902 +v 0.978028 0.667348 -2.078414 +v 0.845593 0.667348 -2.135724 +v 0.709821 0.667348 -2.184605 +v 0.571248 0.667348 -2.224864 +v 0.430420 0.667348 -2.256343 +v 0.287894 0.667348 -2.278917 +v 0.144232 0.667348 -2.292497 +v 0.000000 0.667348 -2.297029 +v -0.144232 0.667348 -2.292497 +v -0.287894 0.667348 -2.278917 +v -0.430420 0.667348 -2.256343 +v -0.571248 0.667348 -2.224864 +v -0.709821 0.667348 -2.184605 +v -0.845593 0.667348 -2.135724 +v -0.978028 0.667348 -2.078414 +v -1.106602 0.667348 -2.012902 +v -1.230810 0.667348 -1.939446 +v -1.350160 0.667348 -1.858336 +v -1.464182 0.667348 -1.769892 +v -1.572425 0.667348 -1.674462 +v -1.674463 0.667348 -1.572425 +v -1.769892 0.667348 -1.464182 +v -1.858336 0.667348 -1.350160 +v -1.939446 0.667348 -1.230810 +v -2.012902 0.667348 -1.106602 +v -2.078414 0.667348 -0.978027 +v -2.135724 0.667348 -0.845593 +v -2.184605 0.667348 -0.709821 +v -2.224864 0.667348 -0.571248 +v -2.256343 0.667348 -0.430420 +v -2.278917 0.667348 -0.287894 +v -2.292497 0.667348 -0.144231 +v -2.297030 0.667348 0.000000 +v -2.292497 0.667348 0.144232 +v -2.278917 0.667348 0.287894 +v -2.256343 0.667348 0.430421 +v -2.224864 0.667348 0.571248 +v -2.184605 0.667348 0.709821 +v -2.135724 0.667348 0.845593 +v -2.078415 0.667348 0.978028 +v -2.012902 0.667348 1.106603 +v -1.939446 0.667348 1.230810 +v -1.858336 0.667348 1.350161 +v -1.769892 0.667348 1.464182 +v -1.674463 0.667348 1.572425 +v -1.572425 0.667348 1.674463 +v -1.464182 0.667348 1.769892 +v -1.350160 0.667348 1.858336 +v -1.230810 0.667348 1.939447 +v -1.106602 0.667348 2.012903 +v -0.978028 0.667348 2.078415 +v -0.845593 0.667348 2.135724 +v -0.709821 0.667348 2.184605 +v -0.571248 0.667348 2.224865 +v -0.430420 0.667348 2.256343 +v -0.287894 0.667348 2.278917 +v -0.144231 0.667348 2.292497 +v 0.000000 0.667348 2.297030 +v 0.144232 0.667348 2.292497 +v 0.287894 0.667348 2.278918 +v 0.430421 0.667348 2.256343 +v 0.571248 0.667348 2.224865 +v 0.709822 0.667348 2.184606 +v 0.845593 0.667348 2.135725 +v 0.978028 0.667348 2.078415 +v 1.106603 0.667348 2.012903 +v 1.230811 0.667348 1.939447 +v 1.350161 0.667348 1.858336 +v 1.464182 0.667348 1.769892 +v 1.572426 0.667348 1.674463 +v 1.674463 0.667348 1.572425 +v 1.769893 0.667348 1.464182 +v 1.858337 0.667348 1.350161 +v 1.939447 0.667348 1.230810 +v 2.012903 0.667348 1.106603 +v 2.078415 0.667348 0.978028 +v 2.135725 0.667348 0.845593 +v 2.184606 0.667348 0.709821 +v 2.224865 0.667348 0.571248 +v 2.256344 0.667348 0.430421 +v 2.278918 0.667348 0.287894 +v 2.292498 0.667348 0.144232 +v 2.297030 0.667348 0.000000 +v 2.270445 0.739170 -0.142844 +v 2.256995 0.739170 -0.285125 +v 2.234639 0.739170 -0.426280 +v 2.203463 0.739170 -0.565753 +v 2.163591 0.739170 -0.702993 +v 2.115180 0.739170 -0.837459 +v 2.058422 0.739170 -0.968620 +v 1.993540 0.739170 -1.095958 +v 1.920790 0.739170 -1.218970 +v 1.840460 0.739170 -1.337173 +v 1.752867 0.739170 -1.450097 +v 1.658356 0.739170 -1.557300 +v 1.557300 0.739170 -1.658356 +v 1.450098 0.739170 -1.752867 +v 1.337173 0.739170 -1.840460 +v 1.218971 0.739170 -1.920790 +v 1.095958 0.739170 -1.993540 +v 0.968620 0.739170 -2.058422 +v 0.837459 0.739170 -2.115180 +v 0.702993 0.739170 -2.163591 +v 0.565753 0.739170 -2.203463 +v 0.426280 0.739170 -2.234639 +v 0.285125 0.739170 -2.256995 +v 0.142844 0.739170 -2.270445 +v 0.000000 0.739170 -2.274934 +v -0.142844 0.739170 -2.270445 +v -0.285125 0.739170 -2.256996 +v -0.426280 0.739170 -2.234639 +v -0.565753 0.739170 -2.203463 +v -0.702993 0.739170 -2.163591 +v -0.837459 0.739170 -2.115180 +v -0.968620 0.739170 -2.058422 +v -1.095958 0.739170 -1.993540 +v -1.218971 0.739170 -1.920790 +v -1.337173 0.739170 -1.840460 +v -1.450098 0.739170 -1.752867 +v -1.557300 0.739170 -1.658356 +v -1.658356 0.739170 -1.557300 +v -1.752867 0.739170 -1.450098 +v -1.840461 0.739170 -1.337173 +v -1.920790 0.739170 -1.218971 +v -1.993540 0.739170 -1.095958 +v -2.058422 0.739170 -0.968620 +v -2.115180 0.739170 -0.837459 +v -2.163591 0.739170 -0.702993 +v -2.203463 0.739170 -0.565753 +v -2.234639 0.739170 -0.426280 +v -2.256996 0.739170 -0.285125 +v -2.270445 0.739170 -0.142844 +v -2.274934 0.739170 0.000000 +v -2.270445 0.739170 0.142845 +v -2.256996 0.739170 0.285125 +v -2.234639 0.739170 0.426280 +v -2.203463 0.739170 0.565753 +v -2.163591 0.739170 0.702994 +v -2.115181 0.739170 0.837459 +v -2.058422 0.739170 0.968620 +v -1.993540 0.739170 1.095958 +v -1.920791 0.739170 1.218971 +v -1.840461 0.739170 1.337173 +v -1.752867 0.739170 1.450098 +v -1.658356 0.739170 1.557300 +v -1.557300 0.739170 1.658356 +v -1.450098 0.739170 1.752868 +v -1.337173 0.739170 1.840461 +v -1.218971 0.739170 1.920791 +v -1.095958 0.739170 1.993541 +v -0.968620 0.739170 2.058422 +v -0.837459 0.739170 2.115181 +v -0.702993 0.739170 2.163592 +v -0.565753 0.739170 2.203464 +v -0.426280 0.739170 2.234640 +v -0.285125 0.739170 2.256996 +v -0.142844 0.739170 2.270446 +v 0.000000 0.739170 2.274935 +v 0.142845 0.739170 2.270446 +v 0.285125 0.739170 2.256996 +v 0.426281 0.739170 2.234640 +v 0.565754 0.739170 2.203464 +v 0.702994 0.739170 2.163592 +v 0.837460 0.739170 2.115181 +v 0.968620 0.739170 2.058423 +v 1.095959 0.739170 1.993541 +v 1.218971 0.739170 1.920791 +v 1.337173 0.739170 1.840461 +v 1.450098 0.739170 1.752867 +v 1.557300 0.739170 1.658356 +v 1.658356 0.739170 1.557300 +v 1.752868 0.739170 1.450098 +v 1.840461 0.739170 1.337173 +v 1.920791 0.739170 1.218971 +v 1.993541 0.739170 1.095958 +v 2.058423 0.739170 0.968620 +v 2.115181 0.739170 0.837459 +v 2.163592 0.739170 0.702994 +v 2.203464 0.739170 0.565753 +v 2.234640 0.739170 0.426280 +v 2.256997 0.739170 0.285125 +v 2.270446 0.739170 0.142844 +v 2.274935 0.739170 0.000000 +v 2.246152 0.810263 -0.141316 +v 2.232847 0.810263 -0.282074 +v 2.210729 0.810263 -0.421719 +v 2.179887 0.810263 -0.559700 +v 2.140442 0.810263 -0.695471 +v 2.092549 0.810263 -0.828499 +v 2.036398 0.810263 -0.958256 +v 1.972210 0.810263 -1.084232 +v 1.900239 0.810263 -1.205928 +v 1.820768 0.810263 -1.322866 +v 1.734112 0.810263 -1.434582 +v 1.640612 0.810263 -1.540637 +v 1.540637 0.810263 -1.640612 +v 1.434582 0.810263 -1.734112 +v 1.322866 0.810263 -1.820768 +v 1.205928 0.810263 -1.900239 +v 1.084232 0.810263 -1.972210 +v 0.958256 0.810263 -2.036398 +v 0.828499 0.810263 -2.092549 +v 0.695472 0.810263 -2.140442 +v 0.559700 0.810263 -2.179887 +v 0.421719 0.810263 -2.210729 +v 0.282074 0.810263 -2.232847 +v 0.141316 0.810263 -2.246153 +v 0.000000 0.810263 -2.250594 +v -0.141316 0.810263 -2.246153 +v -0.282074 0.810263 -2.232847 +v -0.421719 0.810263 -2.210729 +v -0.559700 0.810263 -2.179887 +v -0.695472 0.810263 -2.140442 +v -0.828499 0.810263 -2.092549 +v -0.958256 0.810263 -2.036398 +v -1.084232 0.810263 -1.972210 +v -1.205928 0.810263 -1.900239 +v -1.322866 0.810263 -1.820768 +v -1.434583 0.810263 -1.734112 +v -1.540638 0.810263 -1.640612 +v -1.640612 0.810263 -1.540637 +v -1.734113 0.810263 -1.434582 +v -1.820769 0.810263 -1.322866 +v -1.900239 0.810263 -1.205928 +v -1.972210 0.810263 -1.084232 +v -2.036398 0.810263 -0.958256 +v -2.092549 0.810263 -0.828499 +v -2.140442 0.810263 -0.695472 +v -2.179887 0.810263 -0.559700 +v -2.210730 0.810263 -0.421719 +v -2.232847 0.810263 -0.282074 +v -2.246153 0.810263 -0.141316 +v -2.250594 0.810263 0.000000 +v -2.246153 0.810263 0.141316 +v -2.232847 0.810263 0.282074 +v -2.210730 0.810263 0.421719 +v -2.179887 0.810263 0.559700 +v -2.140442 0.810263 0.695472 +v -2.092549 0.810263 0.828499 +v -2.036398 0.810263 0.958257 +v -1.972211 0.810263 1.084232 +v -1.900239 0.810263 1.205929 +v -1.820769 0.810263 1.322866 +v -1.734113 0.810263 1.434583 +v -1.640612 0.810263 1.540638 +v -1.540638 0.810263 1.640613 +v -1.434583 0.810263 1.734113 +v -1.322866 0.810263 1.820769 +v -1.205929 0.810263 1.900240 +v -1.084232 0.810263 1.972211 +v -0.958256 0.810263 2.036399 +v -0.828499 0.810263 2.092550 +v -0.695472 0.810263 2.140442 +v -0.559700 0.810263 2.179888 +v -0.421719 0.810263 2.210730 +v -0.282074 0.810263 2.232848 +v -0.141316 0.810263 2.246153 +v 0.000000 0.810263 2.250595 +v 0.141316 0.810263 2.246153 +v 0.282075 0.810263 2.232848 +v 0.421720 0.810263 2.210730 +v 0.559700 0.810263 2.179888 +v 0.695472 0.810263 2.140443 +v 0.828499 0.810263 2.092550 +v 0.958257 0.810263 2.036399 +v 1.084233 0.810263 1.972211 +v 1.205929 0.810263 1.900240 +v 1.322867 0.810263 1.820769 +v 1.434583 0.810263 1.734113 +v 1.540638 0.810263 1.640613 +v 1.640613 0.810263 1.540638 +v 1.734113 0.810263 1.434583 +v 1.820769 0.810263 1.322866 +v 1.900240 0.810263 1.205929 +v 1.972211 0.810263 1.084232 +v 2.036399 0.810263 0.958257 +v 2.092550 0.810263 0.828499 +v 2.140443 0.810263 0.695472 +v 2.179888 0.810263 0.559700 +v 2.210730 0.810263 0.421719 +v 2.232848 0.810263 0.282074 +v 2.246154 0.810263 0.141316 +v 2.250595 0.810263 0.000000 +v 2.219643 0.880556 -0.139648 +v 2.206495 0.880556 -0.278745 +v 2.184638 0.880556 -0.416742 +v 2.154160 0.880556 -0.553094 +v 2.115180 0.880556 -0.687264 +v 2.067853 0.880556 -0.818721 +v 2.012364 0.880556 -0.946947 +v 1.948934 0.880556 -1.071435 +v 1.877812 0.880556 -1.191696 +v 1.799280 0.880556 -1.307253 +v 1.713646 0.880556 -1.417651 +v 1.621250 0.880556 -1.522455 +v 1.522455 0.880556 -1.621250 +v 1.417651 0.880556 -1.713646 +v 1.307253 0.880556 -1.799280 +v 1.191696 0.880556 -1.877812 +v 1.071436 0.880556 -1.948934 +v 0.946947 0.880556 -2.012364 +v 0.818721 0.880556 -2.067853 +v 0.687264 0.880556 -2.115180 +v 0.553094 0.880556 -2.154160 +v 0.416742 0.880556 -2.184638 +v 0.278745 0.880556 -2.206495 +v 0.139648 0.880556 -2.219643 +v 0.000000 0.880556 -2.224032 +v -0.139648 0.880556 -2.219643 +v -0.278745 0.880556 -2.206495 +v -0.416742 0.880556 -2.184638 +v -0.553094 0.880556 -2.154160 +v -0.687264 0.880556 -2.115180 +v -0.818721 0.880556 -2.067853 +v -0.946947 0.880556 -2.012364 +v -1.071436 0.880556 -1.948934 +v -1.191696 0.880556 -1.877812 +v -1.307253 0.880556 -1.799280 +v -1.417652 0.880556 -1.713646 +v -1.522455 0.880556 -1.621250 +v -1.621250 0.880556 -1.522455 +v -1.713647 0.880556 -1.417651 +v -1.799280 0.880556 -1.307253 +v -1.877813 0.880556 -1.191696 +v -1.948934 0.880556 -1.071436 +v -2.012364 0.880556 -0.946947 +v -2.067853 0.880556 -0.818721 +v -2.115180 0.880556 -0.687264 +v -2.154160 0.880556 -0.553094 +v -2.184639 0.880556 -0.416742 +v -2.206495 0.880556 -0.278745 +v -2.219644 0.880556 -0.139648 +v -2.224032 0.880556 0.000000 +v -2.219644 0.880556 0.139648 +v -2.206495 0.880556 0.278745 +v -2.184639 0.880556 0.416742 +v -2.154160 0.880556 0.553095 +v -2.115181 0.880556 0.687264 +v -2.067853 0.880556 0.818721 +v -2.012365 0.880556 0.946947 +v -1.948935 0.880556 1.071436 +v -1.877813 0.880556 1.191696 +v -1.799280 0.880556 1.307254 +v -1.713647 0.880556 1.417652 +v -1.621250 0.880556 1.522455 +v -1.522455 0.880556 1.621250 +v -1.417652 0.880556 1.713647 +v -1.307253 0.880556 1.799280 +v -1.191696 0.880556 1.877813 +v -1.071436 0.880556 1.948935 +v -0.946947 0.880556 2.012365 +v -0.818721 0.880556 2.067853 +v -0.687264 0.880556 2.115181 +v -0.553094 0.880556 2.154161 +v -0.416742 0.880556 2.184639 +v -0.278745 0.880556 2.206496 +v -0.139648 0.880556 2.219644 +v 0.000000 0.880556 2.224033 +v 0.139648 0.880556 2.219644 +v 0.278745 0.880556 2.206496 +v 0.416742 0.880556 2.184639 +v 0.553095 0.880556 2.154161 +v 0.687264 0.880556 2.115181 +v 0.818721 0.880556 2.067854 +v 0.946947 0.880556 2.012365 +v 1.071436 0.880556 1.948935 +v 1.191697 0.880556 1.877813 +v 1.307254 0.880556 1.799280 +v 1.417652 0.880556 1.713647 +v 1.522456 0.880556 1.621250 +v 1.621251 0.880556 1.522455 +v 1.713647 0.880556 1.417652 +v 1.799281 0.880556 1.307254 +v 1.877813 0.880556 1.191696 +v 1.948935 0.880556 1.071436 +v 2.012365 0.880556 0.946947 +v 2.067854 0.880556 0.818721 +v 2.115181 0.880556 0.687264 +v 2.154161 0.880556 0.553095 +v 2.184639 0.880556 0.416742 +v 2.206496 0.880556 0.278745 +v 2.219645 0.880556 0.139648 +v 2.224033 0.880556 0.000000 +v 2.190944 0.949980 -0.137842 +v 2.177965 0.949980 -0.275141 +v 2.156391 0.949980 -0.411353 +v 2.126307 0.949980 -0.545943 +v 2.087831 0.949980 -0.678377 +v 2.041116 0.949980 -0.808135 +v 1.986345 0.949980 -0.934703 +v 1.923735 0.949980 -1.057582 +v 1.853533 0.949980 -1.176287 +v 1.776015 0.949980 -1.290351 +v 1.691489 0.949980 -1.399321 +v 1.600287 0.949980 -1.502770 +v 1.502770 0.949980 -1.600287 +v 1.399321 0.949980 -1.691489 +v 1.290351 0.949980 -1.776015 +v 1.176288 0.949980 -1.853532 +v 1.057582 0.949980 -1.923735 +v 0.934703 0.949980 -1.986345 +v 0.808135 0.949980 -2.041116 +v 0.678378 0.949980 -2.087831 +v 0.545943 0.949980 -2.126307 +v 0.411354 0.949980 -2.156391 +v 0.275141 0.949980 -2.177965 +v 0.137843 0.949980 -2.190944 +v 0.000000 0.949980 -2.195276 +v -0.137842 0.949980 -2.190944 +v -0.275141 0.949980 -2.177965 +v -0.411354 0.949980 -2.156392 +v -0.545943 0.949980 -2.126307 +v -0.678377 0.949980 -2.087831 +v -0.808135 0.949980 -2.041116 +v -0.934703 0.949980 -1.986345 +v -1.057582 0.949980 -1.923735 +v -1.176288 0.949980 -1.853533 +v -1.290351 0.949980 -1.776015 +v -1.399322 0.949980 -1.691489 +v -1.502770 0.949980 -1.600287 +v -1.600287 0.949980 -1.502770 +v -1.691489 0.949980 -1.399321 +v -1.776016 0.949980 -1.290351 +v -1.853533 0.949980 -1.176288 +v -1.923735 0.949980 -1.057582 +v -1.986345 0.949980 -0.934703 +v -2.041116 0.949980 -0.808135 +v -2.087831 0.949980 -0.678377 +v -2.126307 0.949980 -0.545943 +v -2.156392 0.949980 -0.411354 +v -2.177966 0.949980 -0.275141 +v -2.190944 0.949980 -0.137842 +v -2.195276 0.949980 0.000000 +v -2.190944 0.949980 0.137843 +v -2.177966 0.949980 0.275141 +v -2.156392 0.949980 0.411354 +v -2.126307 0.949980 0.545943 +v -2.087832 0.949980 0.678378 +v -2.041116 0.949980 0.808135 +v -1.986345 0.949980 0.934703 +v -1.923735 0.949980 1.057583 +v -1.853533 0.949980 1.176288 +v -1.776016 0.949980 1.290351 +v -1.691489 0.949980 1.399322 +v -1.600287 0.949980 1.502770 +v -1.502770 0.949980 1.600288 +v -1.399322 0.949980 1.691490 +v -1.290351 0.949980 1.776016 +v -1.176288 0.949980 1.853533 +v -1.057582 0.949980 1.923735 +v -0.934703 0.949980 1.986345 +v -0.808135 0.949980 2.041116 +v -0.678378 0.949980 2.087832 +v -0.545943 0.949980 2.126308 +v -0.411354 0.949980 2.156392 +v -0.275141 0.949980 2.177966 +v -0.137842 0.949980 2.190945 +v 0.000000 0.949980 2.195277 +v 0.137843 0.949980 2.190945 +v 0.275141 0.949980 2.177966 +v 0.411354 0.949980 2.156392 +v 0.545943 0.949980 2.126308 +v 0.678378 0.949980 2.087832 +v 0.808136 0.949980 2.041117 +v 0.934704 0.949980 1.986346 +v 1.057583 0.949980 1.923736 +v 1.176288 0.949980 1.853533 +v 1.290351 0.949980 1.776016 +v 1.399322 0.949980 1.691490 +v 1.502771 0.949980 1.600288 +v 1.600288 0.949980 1.502770 +v 1.691490 0.949980 1.399322 +v 1.776016 0.949980 1.290351 +v 1.853534 0.949980 1.176288 +v 1.923736 0.949980 1.057583 +v 1.986346 0.949980 0.934703 +v 2.041117 0.949980 0.808135 +v 2.087832 0.949980 0.678378 +v 2.126308 0.949980 0.545943 +v 2.156392 0.949980 0.411354 +v 2.177966 0.949980 0.275141 +v 2.190945 0.949980 0.137843 +v 2.195277 0.949980 0.000000 +v 2.160082 1.018467 -0.135901 +v 2.147286 1.018467 -0.271265 +v 2.126016 1.018467 -0.405559 +v 2.096356 1.018467 -0.538252 +v 2.058422 1.018467 -0.668822 +v 2.012364 1.018467 -0.796751 +v 1.958365 1.018467 -0.921536 +v 1.896637 1.018467 -1.042685 +v 1.827424 1.018467 -1.159718 +v 1.750998 1.018467 -1.272175 +v 1.667663 1.018467 -1.379610 +v 1.577745 1.018467 -1.481602 +v 1.481602 1.018467 -1.577745 +v 1.379610 1.018467 -1.667663 +v 1.272175 1.018467 -1.750998 +v 1.159718 1.018467 -1.827423 +v 1.042685 1.018467 -1.896637 +v 0.921537 1.018467 -1.958365 +v 0.796751 1.018467 -2.012364 +v 0.668822 1.018467 -2.058422 +v 0.538253 1.018467 -2.096356 +v 0.405559 1.018467 -2.126016 +v 0.271265 1.018467 -2.147286 +v 0.135901 1.018467 -2.160082 +v 0.000000 1.018467 -2.164353 +v -0.135901 1.018467 -2.160082 +v -0.271265 1.018467 -2.147286 +v -0.405559 1.018467 -2.126016 +v -0.538253 1.018467 -2.096356 +v -0.668822 1.018467 -2.058422 +v -0.796751 1.018467 -2.012365 +v -0.921537 1.018467 -1.958365 +v -1.042685 1.018467 -1.896637 +v -1.159718 1.018467 -1.827424 +v -1.272175 1.018467 -1.750998 +v -1.379611 1.018467 -1.667663 +v -1.481602 1.018467 -1.577745 +v -1.577746 1.018467 -1.481602 +v -1.667663 1.018467 -1.379610 +v -1.750998 1.018467 -1.272175 +v -1.827424 1.018467 -1.159718 +v -1.896637 1.018467 -1.042685 +v -1.958365 1.018467 -0.921537 +v -2.012365 1.018467 -0.796751 +v -2.058422 1.018467 -0.668822 +v -2.096356 1.018467 -0.538253 +v -2.126016 1.018467 -0.405559 +v -2.147286 1.018467 -0.271265 +v -2.160082 1.018467 -0.135901 +v -2.164353 1.018467 0.000000 +v -2.160082 1.018467 0.135901 +v -2.147287 1.018467 0.271266 +v -2.126017 1.018467 0.405560 +v -2.096356 1.018467 0.538253 +v -2.058422 1.018467 0.668822 +v -2.012365 1.018467 0.796752 +v -1.958365 1.018467 0.921537 +v -1.896637 1.018467 1.042685 +v -1.827424 1.018467 1.159719 +v -1.750998 1.018467 1.272175 +v -1.667663 1.018467 1.379611 +v -1.577746 1.018467 1.481602 +v -1.481602 1.018467 1.577746 +v -1.379611 1.018467 1.667663 +v -1.272175 1.018467 1.750999 +v -1.159718 1.018467 1.827424 +v -1.042685 1.018467 1.896638 +v -0.921537 1.018467 1.958366 +v -0.796751 1.018467 2.012365 +v -0.668822 1.018467 2.058423 +v -0.538253 1.018467 2.096356 +v -0.405559 1.018467 2.126017 +v -0.271265 1.018467 2.147287 +v -0.135901 1.018467 2.160083 +v 0.000000 1.018467 2.164354 +v 0.135901 1.018467 2.160083 +v 0.271266 1.018467 2.147287 +v 0.405560 1.018467 2.126017 +v 0.538253 1.018467 2.096357 +v 0.668822 1.018467 2.058423 +v 0.796752 1.018467 2.012365 +v 0.921537 1.018467 1.958366 +v 1.042686 1.018467 1.896638 +v 1.159719 1.018467 1.827424 +v 1.272175 1.018467 1.750999 +v 1.379611 1.018467 1.667663 +v 1.481602 1.018467 1.577746 +v 1.577746 1.018467 1.481602 +v 1.667664 1.018467 1.379611 +v 1.750999 1.018467 1.272175 +v 1.827424 1.018467 1.159719 +v 1.896638 1.018467 1.042685 +v 1.958366 1.018467 0.921537 +v 2.012365 1.018467 0.796752 +v 2.058423 1.018467 0.668822 +v 2.096357 1.018467 0.538253 +v 2.126017 1.018467 0.405559 +v 2.147287 1.018467 0.271265 +v 2.160083 1.018467 0.135901 +v 2.164354 1.018467 0.000000 +v 2.127088 1.085948 -0.133825 +v 2.114488 1.085948 -0.267122 +v 2.093543 1.085948 -0.399364 +v 2.064335 1.085948 -0.530031 +v 2.026981 1.085948 -0.658606 +v 1.981627 1.085948 -0.784581 +v 1.928452 1.085948 -0.907461 +v 1.867667 1.085948 -1.026758 +v 1.799511 1.085948 -1.142004 +v 1.724253 1.085948 -1.252743 +v 1.642190 1.085948 -1.358538 +v 1.553646 1.085948 -1.458971 +v 1.458971 1.085948 -1.553646 +v 1.358538 1.085948 -1.642190 +v 1.252743 1.085948 -1.724253 +v 1.142004 1.085948 -1.799511 +v 1.026759 1.085948 -1.867667 +v 0.907461 1.085948 -1.928452 +v 0.784582 1.085948 -1.981627 +v 0.658606 1.085948 -2.026981 +v 0.530031 1.085948 -2.064335 +v 0.399365 1.085948 -2.093543 +v 0.267122 1.085948 -2.114488 +v 0.133825 1.085948 -2.127088 +v 0.000000 1.085948 -2.131294 +v -0.133825 1.085948 -2.127088 +v -0.267122 1.085948 -2.114488 +v -0.399365 1.085948 -2.093543 +v -0.530031 1.085948 -2.064336 +v -0.658606 1.085948 -2.026981 +v -0.784582 1.085948 -1.981627 +v -0.907461 1.085948 -1.928452 +v -1.026759 1.085948 -1.867667 +v -1.142004 1.085948 -1.799511 +v -1.252743 1.085948 -1.724253 +v -1.358538 1.085948 -1.642190 +v -1.458971 1.085948 -1.553646 +v -1.553647 1.085948 -1.458971 +v -1.642191 1.085948 -1.358538 +v -1.724253 1.085948 -1.252743 +v -1.799511 1.085948 -1.142004 +v -1.867667 1.085948 -1.026759 +v -1.928452 1.085948 -0.907461 +v -1.981627 1.085948 -0.784582 +v -2.026981 1.085948 -0.658606 +v -2.064336 1.085948 -0.530031 +v -2.093543 1.085948 -0.399365 +v -2.114488 1.085948 -0.267122 +v -2.127089 1.085948 -0.133825 +v -2.131294 1.085948 0.000000 +v -2.127089 1.085948 0.133825 +v -2.114488 1.085948 0.267122 +v -2.093543 1.085948 0.399365 +v -2.064336 1.085948 0.530032 +v -2.026981 1.085948 0.658606 +v -1.981627 1.085948 0.784582 +v -1.928453 1.085948 0.907461 +v -1.867668 1.085948 1.026759 +v -1.799511 1.085948 1.142005 +v -1.724253 1.085948 1.252744 +v -1.642191 1.085948 1.358538 +v -1.553647 1.085948 1.458972 +v -1.458971 1.085948 1.553647 +v -1.358538 1.085948 1.642191 +v -1.252743 1.085948 1.724254 +v -1.142005 1.085948 1.799512 +v -1.026759 1.085948 1.867668 +v -0.907461 1.085948 1.928453 +v -0.784582 1.085948 1.981628 +v -0.658606 1.085948 2.026982 +v -0.530031 1.085948 2.064336 +v -0.399365 1.085948 2.093544 +v -0.267122 1.085948 2.114489 +v -0.133825 1.085948 2.127089 +v 0.000000 1.085948 2.131295 +v 0.133825 1.085948 2.127089 +v 0.267122 1.085948 2.114489 +v 0.399365 1.085948 2.093544 +v 0.530032 1.085948 2.064336 +v 0.658607 1.085948 2.026982 +v 0.784582 1.085948 1.981628 +v 0.907461 1.085948 1.928453 +v 1.026759 1.085948 1.867668 +v 1.142005 1.085948 1.799512 +v 1.252744 1.085948 1.724253 +v 1.358539 1.085948 1.642191 +v 1.458972 1.085948 1.553647 +v 1.553647 1.085948 1.458972 +v 1.642191 1.085948 1.358538 +v 1.724254 1.085948 1.252744 +v 1.799512 1.085948 1.142005 +v 1.867668 1.085948 1.026759 +v 1.928453 1.085948 0.907461 +v 1.981628 1.085948 0.784582 +v 2.026982 1.085948 0.658606 +v 2.064336 1.085948 0.530032 +v 2.093544 1.085948 0.399365 +v 2.114489 1.085948 0.267122 +v 2.127089 1.085948 0.133825 +v 2.131295 1.085948 0.000000 +v 2.091996 1.152358 -0.131617 +v 2.079603 1.152358 -0.262715 +v 2.059004 1.152358 -0.392776 +v 2.030278 1.152358 -0.521287 +v 1.993540 1.152358 -0.647740 +v 1.948934 1.152358 -0.771637 +v 1.896637 1.152358 -0.892489 +v 1.836854 1.152358 -1.009819 +v 1.769823 1.152358 -1.123164 +v 1.695806 1.152358 -1.232075 +v 1.615097 1.152358 -1.336125 +v 1.528014 1.152358 -1.434901 +v 1.434901 1.152358 -1.528014 +v 1.336125 1.152358 -1.615097 +v 1.232075 1.152358 -1.695806 +v 1.123164 1.152358 -1.769823 +v 1.009819 1.152358 -1.836854 +v 0.892490 1.152358 -1.896637 +v 0.771638 1.152358 -1.948934 +v 0.647741 1.152358 -1.993540 +v 0.521287 1.152358 -2.030278 +v 0.392776 1.152358 -2.059004 +v 0.262715 1.152358 -2.079603 +v 0.131617 1.152358 -2.091996 +v 0.000000 1.152358 -2.096132 +v -0.131617 1.152358 -2.091996 +v -0.262715 1.152358 -2.079603 +v -0.392776 1.152358 -2.059004 +v -0.521287 1.152358 -2.030278 +v -0.647740 1.152358 -1.993540 +v -0.771638 1.152358 -1.948934 +v -0.892490 1.152358 -1.896637 +v -1.009819 1.152358 -1.836855 +v -1.123164 1.152358 -1.769823 +v -1.232076 1.152358 -1.695806 +v -1.336125 1.152358 -1.615097 +v -1.434901 1.152358 -1.528014 +v -1.528015 1.152358 -1.434901 +v -1.615098 1.152358 -1.336125 +v -1.695807 1.152358 -1.232075 +v -1.769823 1.152358 -1.123164 +v -1.836855 1.152358 -1.009819 +v -1.896637 1.152358 -0.892490 +v -1.948934 1.152358 -0.771638 +v -1.993540 1.152358 -0.647740 +v -2.030278 1.152358 -0.521287 +v -2.059004 1.152358 -0.392776 +v -2.079604 1.152358 -0.262715 +v -2.091996 1.152358 -0.131617 +v -2.096132 1.152358 0.000000 +v -2.091996 1.152358 0.131617 +v -2.079604 1.152358 0.262715 +v -2.059004 1.152358 0.392776 +v -2.030279 1.152358 0.521287 +v -1.993540 1.152358 0.647741 +v -1.948935 1.152358 0.771638 +v -1.896637 1.152358 0.892490 +v -1.836855 1.152358 1.009820 +v -1.769823 1.152358 1.123164 +v -1.695807 1.152358 1.232076 +v -1.615098 1.152358 1.336125 +v -1.528015 1.152358 1.434902 +v -1.434901 1.152358 1.528015 +v -1.336125 1.152358 1.615098 +v -1.232076 1.152358 1.695807 +v -1.123164 1.152358 1.769823 +v -1.009819 1.152358 1.836855 +v -0.892490 1.152358 1.896638 +v -0.771638 1.152358 1.948935 +v -0.647740 1.152358 1.993541 +v -0.521287 1.152358 2.030279 +v -0.392776 1.152358 2.059004 +v -0.262715 1.152358 2.079604 +v -0.131617 1.152358 2.091997 +v 0.000000 1.152358 2.096133 +v 0.131617 1.152358 2.091997 +v 0.262715 1.152358 2.079604 +v 0.392776 1.152358 2.059005 +v 0.521287 1.152358 2.030279 +v 0.647741 1.152358 1.993541 +v 0.771638 1.152358 1.948935 +v 0.892490 1.152358 1.896638 +v 1.009820 1.152358 1.836855 +v 1.123164 1.152358 1.769823 +v 1.232076 1.152358 1.695807 +v 1.336126 1.152358 1.615098 +v 1.434902 1.152358 1.528015 +v 1.528015 1.152358 1.434902 +v 1.615098 1.152358 1.336125 +v 1.695807 1.152358 1.232076 +v 1.769824 1.152358 1.123164 +v 1.836855 1.152358 1.009820 +v 1.896638 1.152358 0.892490 +v 1.948935 1.152358 0.771638 +v 1.993541 1.152358 0.647741 +v 2.030279 1.152358 0.521287 +v 2.059005 1.152358 0.392776 +v 2.079604 1.152358 0.262715 +v 2.091997 1.152358 0.131617 +v 2.096133 1.152358 0.000000 +v 2.054838 1.217630 -0.129279 +v 2.042666 1.217630 -0.258049 +v 2.022432 1.217630 -0.385799 +v 1.994217 1.217630 -0.512028 +v 1.958131 1.217630 -0.636235 +v 1.914318 1.217630 -0.757932 +v 1.862949 1.217630 -0.876637 +v 1.804229 1.217630 -0.991883 +v 1.738388 1.217630 -1.103214 +v 1.665686 1.217630 -1.210192 +v 1.586411 1.217630 -1.312393 +v 1.500874 1.217630 -1.409415 +v 1.409415 1.217630 -1.500874 +v 1.312393 1.217630 -1.586411 +v 1.210192 1.217630 -1.665686 +v 1.103214 1.217630 -1.738388 +v 0.991883 1.217630 -1.804229 +v 0.876638 1.217630 -1.862949 +v 0.757932 1.217630 -1.914318 +v 0.636236 1.217630 -1.958131 +v 0.512028 1.217630 -1.994217 +v 0.385800 1.217630 -2.022432 +v 0.258049 1.217630 -2.042666 +v 0.129280 1.217630 -2.054838 +v 0.000000 1.217630 -2.058901 +v -0.129279 1.217630 -2.054838 +v -0.258049 1.217630 -2.042666 +v -0.385800 1.217630 -2.022433 +v -0.512028 1.217630 -1.994217 +v -0.636235 1.217630 -1.958132 +v -0.757932 1.217630 -1.914318 +v -0.876638 1.217630 -1.862950 +v -0.991883 1.217630 -1.804229 +v -1.103214 1.217630 -1.738388 +v -1.210192 1.217630 -1.665686 +v -1.312393 1.217630 -1.586411 +v -1.409415 1.217630 -1.500874 +v -1.500875 1.217630 -1.409415 +v -1.586411 1.217630 -1.312393 +v -1.665686 1.217630 -1.210192 +v -1.738388 1.217630 -1.103214 +v -1.804229 1.217630 -0.991883 +v -1.862950 1.217630 -0.876637 +v -1.914318 1.217630 -0.757932 +v -1.958132 1.217630 -0.636235 +v -1.994217 1.217630 -0.512028 +v -2.022433 1.217630 -0.385799 +v -2.042666 1.217630 -0.258049 +v -2.054839 1.217630 -0.129279 +v -2.058901 1.217630 0.000000 +v -2.054839 1.217630 0.129280 +v -2.042666 1.217630 0.258049 +v -2.022433 1.217630 0.385800 +v -1.994217 1.217630 0.512028 +v -1.958132 1.217630 0.636236 +v -1.914318 1.217630 0.757932 +v -1.862950 1.217630 0.876638 +v -1.804229 1.217630 0.991884 +v -1.738388 1.217630 1.103215 +v -1.665686 1.217630 1.210192 +v -1.586411 1.217630 1.312393 +v -1.500875 1.217630 1.409415 +v -1.409415 1.217630 1.500875 +v -1.312393 1.217630 1.586411 +v -1.210192 1.217630 1.665687 +v -1.103215 1.217630 1.738388 +v -0.991883 1.217630 1.804229 +v -0.876638 1.217630 1.862950 +v -0.757932 1.217630 1.914318 +v -0.636235 1.217630 1.958132 +v -0.512028 1.217630 1.994218 +v -0.385800 1.217630 2.022433 +v -0.258049 1.217630 2.042667 +v -0.129279 1.217630 2.054839 +v 0.000000 1.217630 2.058902 +v 0.129280 1.217630 2.054839 +v 0.258049 1.217630 2.042667 +v 0.385800 1.217630 2.022433 +v 0.512028 1.217630 1.994218 +v 0.636236 1.217630 1.958132 +v 0.757933 1.217630 1.914319 +v 0.876638 1.217630 1.862950 +v 0.991884 1.217630 1.804230 +v 1.103215 1.217630 1.738388 +v 1.210192 1.217630 1.665686 +v 1.312394 1.217630 1.586411 +v 1.409416 1.217630 1.500875 +v 1.500875 1.217630 1.409415 +v 1.586411 1.217630 1.312393 +v 1.665687 1.217630 1.210192 +v 1.738389 1.217630 1.103215 +v 1.804230 1.217630 0.991884 +v 1.862950 1.217630 0.876638 +v 1.914319 1.217630 0.757932 +v 1.958132 1.217630 0.636236 +v 1.994218 1.217630 0.512028 +v 2.022433 1.217630 0.385800 +v 2.042667 1.217630 0.258049 +v 2.054839 1.217630 0.129280 +v 2.058902 1.217630 0.000000 +v 2.015653 1.281701 -0.126814 +v 2.003713 1.281701 -0.253128 +v 1.983865 1.281701 -0.378442 +v 1.956188 1.281701 -0.502264 +v 1.920790 1.281701 -0.624102 +v 1.877812 1.281701 -0.743478 +v 1.827424 1.281701 -0.859920 +v 1.769823 1.281701 -0.972968 +v 1.705237 1.281701 -1.082176 +v 1.633922 1.281701 -1.187114 +v 1.556158 1.281701 -1.287366 +v 1.472253 1.281701 -1.382538 +v 1.382538 1.281701 -1.472253 +v 1.287366 1.281701 -1.556158 +v 1.187114 1.281701 -1.633922 +v 1.082176 1.281701 -1.705237 +v 0.972968 1.281701 -1.769823 +v 0.859920 1.281701 -1.827423 +v 0.743479 1.281701 -1.877812 +v 0.624103 1.281701 -1.920790 +v 0.502264 1.281701 -1.956188 +v 0.378443 1.281701 -1.983865 +v 0.253128 1.281701 -2.003713 +v 0.126814 1.281701 -2.015653 +v 0.000000 1.281701 -2.019639 +v -0.126814 1.281701 -2.015653 +v -0.253128 1.281701 -2.003713 +v -0.378442 1.281701 -1.983865 +v -0.502264 1.281701 -1.956188 +v -0.624103 1.281701 -1.920791 +v -0.743479 1.281701 -1.877813 +v -0.859920 1.281701 -1.827424 +v -0.972968 1.281701 -1.769823 +v -1.082176 1.281701 -1.705237 +v -1.187114 1.281701 -1.633922 +v -1.287366 1.281701 -1.556158 +v -1.382538 1.281701 -1.472253 +v -1.472253 1.281701 -1.382538 +v -1.556159 1.281701 -1.287366 +v -1.633922 1.281701 -1.187114 +v -1.705237 1.281701 -1.082176 +v -1.769823 1.281701 -0.972968 +v -1.827424 1.281701 -0.859920 +v -1.877813 1.281701 -0.743478 +v -1.920791 1.281701 -0.624103 +v -1.956188 1.281701 -0.502264 +v -1.983865 1.281701 -0.378442 +v -2.003713 1.281701 -0.253128 +v -2.015654 1.281701 -0.126814 +v -2.019639 1.281701 0.000000 +v -2.015654 1.281701 0.126814 +v -2.003713 1.281701 0.253128 +v -1.983866 1.281701 0.378443 +v -1.956188 1.281701 0.502264 +v -1.920791 1.281701 0.624103 +v -1.877813 1.281701 0.743479 +v -1.827424 1.281701 0.859921 +v -1.769823 1.281701 0.972969 +v -1.705238 1.281701 1.082177 +v -1.633922 1.281701 1.187114 +v -1.556159 1.281701 1.287367 +v -1.472253 1.281701 1.382538 +v -1.382538 1.281701 1.472254 +v -1.287366 1.281701 1.556159 +v -1.187114 1.281701 1.633923 +v -1.082177 1.281701 1.705238 +v -0.972968 1.281701 1.769823 +v -0.859920 1.281701 1.827424 +v -0.743479 1.281701 1.877813 +v -0.624103 1.281701 1.920791 +v -0.502264 1.281701 1.956189 +v -0.378442 1.281701 1.983866 +v -0.253128 1.281701 2.003714 +v -0.126814 1.281701 2.015654 +v 0.000000 1.281701 2.019639 +v 0.126814 1.281701 2.015654 +v 0.253128 1.281701 2.003714 +v 0.378443 1.281701 1.983866 +v 0.502264 1.281701 1.956189 +v 0.624103 1.281701 1.920791 +v 0.743479 1.281701 1.877813 +v 0.859921 1.281701 1.827424 +v 0.972969 1.281701 1.769823 +v 1.082177 1.281701 1.705238 +v 1.187114 1.281701 1.633922 +v 1.287367 1.281701 1.556159 +v 1.382539 1.281701 1.472254 +v 1.472254 1.281701 1.382538 +v 1.556159 1.281701 1.287367 +v 1.633923 1.281701 1.187114 +v 1.705238 1.281701 1.082177 +v 1.769824 1.281701 0.972969 +v 1.827424 1.281701 0.859921 +v 1.877813 1.281701 0.743479 +v 1.920791 1.281701 0.624103 +v 1.956189 1.281701 0.502264 +v 1.983866 1.281701 0.378443 +v 2.003714 1.281701 0.253128 +v 2.015654 1.281701 0.126814 +v 2.019640 1.281701 0.000000 +v 1.974479 1.344507 -0.124224 +v 1.962782 1.344507 -0.247957 +v 1.943340 1.344507 -0.370712 +v 1.916228 1.344507 -0.492004 +v 1.881554 1.344507 -0.611354 +v 1.839454 1.344507 -0.728291 +v 1.790094 1.344507 -0.842354 +v 1.733670 1.344507 -0.953093 +v 1.670404 1.344507 -1.060070 +v 1.600545 1.344507 -1.162864 +v 1.524370 1.344507 -1.261069 +v 1.442179 1.344507 -1.354296 +v 1.354296 1.344507 -1.442179 +v 1.261069 1.344507 -1.524370 +v 1.162864 1.344507 -1.600545 +v 1.060070 1.344507 -1.670404 +v 0.953093 1.344507 -1.733670 +v 0.842354 1.344507 -1.790094 +v 0.728291 1.344507 -1.839454 +v 0.611354 1.344507 -1.881554 +v 0.492004 1.344507 -1.916228 +v 0.370712 1.344507 -1.943340 +v 0.247957 1.344507 -1.962782 +v 0.124224 1.344507 -1.974479 +v 0.000000 1.344507 -1.978383 +v -0.124224 1.344507 -1.974479 +v -0.247957 1.344507 -1.962783 +v -0.370712 1.344507 -1.943340 +v -0.492004 1.344507 -1.916228 +v -0.611354 1.344507 -1.881554 +v -0.728291 1.344507 -1.839454 +v -0.842354 1.344507 -1.790094 +v -0.953093 1.344507 -1.733670 +v -1.060071 1.344507 -1.670404 +v -1.162864 1.344507 -1.600545 +v -1.261069 1.344507 -1.524370 +v -1.354296 1.344507 -1.442179 +v -1.442179 1.344507 -1.354296 +v -1.524370 1.344507 -1.261069 +v -1.600546 1.344507 -1.162864 +v -1.670404 1.344507 -1.060070 +v -1.733670 1.344507 -0.953093 +v -1.790094 1.344507 -0.842354 +v -1.839454 1.344507 -0.728291 +v -1.881554 1.344507 -0.611354 +v -1.916228 1.344507 -0.492004 +v -1.943340 1.344507 -0.370712 +v -1.962783 1.344507 -0.247957 +v -1.974479 1.344507 -0.124224 +v -1.978383 1.344507 0.000000 +v -1.974479 1.344507 0.124224 +v -1.962783 1.344507 0.247957 +v -1.943340 1.344507 0.370712 +v -1.916228 1.344507 0.492004 +v -1.881554 1.344507 0.611354 +v -1.839454 1.344507 0.728292 +v -1.790094 1.344507 0.842355 +v -1.733670 1.344507 0.953094 +v -1.670404 1.344507 1.060071 +v -1.600546 1.344507 1.162865 +v -1.524370 1.344507 1.261069 +v -1.442179 1.344507 1.354297 +v -1.354296 1.344507 1.442179 +v -1.261069 1.344507 1.524371 +v -1.162864 1.344507 1.600546 +v -1.060071 1.344507 1.670404 +v -0.953093 1.344507 1.733670 +v -0.842354 1.344507 1.790095 +v -0.728291 1.344507 1.839454 +v -0.611354 1.344507 1.881554 +v -0.492004 1.344507 1.916229 +v -0.370712 1.344507 1.943341 +v -0.247957 1.344507 1.962783 +v -0.124224 1.344507 1.974479 +v 0.000000 1.344507 1.978383 +v 0.124224 1.344507 1.974479 +v 0.247957 1.344507 1.962783 +v 0.370712 1.344507 1.943341 +v 0.492004 1.344507 1.916229 +v 0.611354 1.344507 1.881555 +v 0.728292 1.344507 1.839454 +v 0.842355 1.344507 1.790095 +v 0.953094 1.344507 1.733671 +v 1.060071 1.344507 1.670404 +v 1.162865 1.344507 1.600546 +v 1.261069 1.344507 1.524371 +v 1.354297 1.344507 1.442179 +v 1.442180 1.344507 1.354297 +v 1.524371 1.344507 1.261069 +v 1.600546 1.344507 1.162865 +v 1.670405 1.344507 1.060071 +v 1.733671 1.344507 0.953094 +v 1.790095 1.344507 0.842355 +v 1.839454 1.344507 0.728292 +v 1.881555 1.344507 0.611354 +v 1.916229 1.344507 0.492004 +v 1.943341 1.344507 0.370712 +v 1.962783 1.344507 0.247957 +v 1.974480 1.344507 0.124224 +v 1.978384 1.344507 0.000000 +v 1.931356 1.405987 -0.121510 +v 1.919915 1.405987 -0.242542 +v 1.900897 1.405987 -0.362615 +v 1.874377 1.405987 -0.481258 +v 1.840460 1.405987 -0.598002 +v 1.799280 1.405987 -0.712385 +v 1.750998 1.405987 -0.823957 +v 1.695806 1.405987 -0.932277 +v 1.633922 1.405987 -1.036918 +v 1.565589 1.405987 -1.137467 +v 1.491078 1.405987 -1.233527 +v 1.410682 1.405987 -1.324718 +v 1.324718 1.405987 -1.410682 +v 1.233527 1.405987 -1.491078 +v 1.137467 1.405987 -1.565589 +v 1.036918 1.405987 -1.633922 +v 0.932277 1.405987 -1.695806 +v 0.823957 1.405987 -1.750998 +v 0.712385 1.405987 -1.799280 +v 0.598002 1.405987 -1.840460 +v 0.481258 1.405987 -1.874377 +v 0.362616 1.405987 -1.900897 +v 0.242542 1.405987 -1.919915 +v 0.121511 1.405987 -1.931356 +v 0.000000 1.405987 -1.935175 +v -0.121511 1.405987 -1.931356 +v -0.242542 1.405987 -1.919915 +v -0.362615 1.405987 -1.900897 +v -0.481258 1.405987 -1.874378 +v -0.598002 1.405987 -1.840461 +v -0.712385 1.405987 -1.799280 +v -0.823957 1.405987 -1.750998 +v -0.932277 1.405987 -1.695807 +v -1.036918 1.405987 -1.633922 +v -1.137467 1.405987 -1.565589 +v -1.233527 1.405987 -1.491078 +v -1.324718 1.405987 -1.410682 +v -1.410682 1.405987 -1.324718 +v -1.491078 1.405987 -1.233527 +v -1.565589 1.405987 -1.137467 +v -1.633922 1.405987 -1.036918 +v -1.695807 1.405987 -0.932277 +v -1.750998 1.405987 -0.823957 +v -1.799280 1.405987 -0.712385 +v -1.840461 1.405987 -0.598002 +v -1.874378 1.405987 -0.481258 +v -1.900897 1.405987 -0.362615 +v -1.919915 1.405987 -0.242542 +v -1.931356 1.405987 -0.121510 +v -1.935175 1.405987 0.000000 +v -1.931356 1.405987 0.121511 +v -1.919915 1.405987 0.242542 +v -1.900898 1.405987 0.362616 +v -1.874378 1.405987 0.481259 +v -1.840461 1.405987 0.598002 +v -1.799280 1.405987 0.712386 +v -1.750998 1.405987 0.823958 +v -1.695807 1.405987 0.932278 +v -1.633922 1.405987 1.036919 +v -1.565589 1.405987 1.137467 +v -1.491078 1.405987 1.233527 +v -1.410682 1.405987 1.324719 +v -1.324718 1.405987 1.410682 +v -1.233527 1.405987 1.491078 +v -1.137467 1.405987 1.565590 +v -1.036919 1.405987 1.633923 +v -0.932278 1.405987 1.695807 +v -0.823957 1.405987 1.750999 +v -0.712385 1.405987 1.799280 +v -0.598002 1.405987 1.840461 +v -0.481258 1.405987 1.874378 +v -0.362615 1.405987 1.900898 +v -0.242542 1.405987 1.919916 +v -0.121510 1.405987 1.931357 +v 0.000000 1.405987 1.935175 +v 0.121511 1.405987 1.931357 +v 0.242542 1.405987 1.919916 +v 0.362616 1.405987 1.900898 +v 0.481259 1.405987 1.874378 +v 0.598002 1.405987 1.840461 +v 0.712386 1.405987 1.799281 +v 0.823958 1.405987 1.750999 +v 0.932278 1.405987 1.695807 +v 1.036919 1.405987 1.633923 +v 1.137468 1.405987 1.565590 +v 1.233527 1.405987 1.491078 +v 1.324719 1.405987 1.410682 +v 1.410682 1.405987 1.324719 +v 1.491078 1.405987 1.233527 +v 1.565590 1.405987 1.137467 +v 1.633923 1.405987 1.036919 +v 1.695807 1.405987 0.932278 +v 1.750999 1.405987 0.823958 +v 1.799281 1.405987 0.712386 +v 1.840461 1.405987 0.598002 +v 1.874378 1.405987 0.481259 +v 1.900898 1.405987 0.362616 +v 1.919916 1.405987 0.242542 +v 1.931357 1.405987 0.121511 +v 1.935176 1.405987 0.000000 +v 1.886327 1.466078 -0.118678 +v 1.875153 1.466078 -0.236887 +v 1.856578 1.466078 -0.354161 +v 1.830677 1.466078 -0.470038 +v 1.797551 1.466078 -0.584059 +v 1.757330 1.466078 -0.695776 +v 1.710174 1.466078 -0.804747 +v 1.656269 1.466078 -0.910542 +v 1.595828 1.466078 -1.012743 +v 1.529088 1.466078 -1.110947 +v 1.456314 1.466078 -1.204767 +v 1.377792 1.466078 -1.293833 +v 1.293833 1.466078 -1.377792 +v 1.204768 1.466078 -1.456314 +v 1.110947 1.466078 -1.529088 +v 1.012743 1.466078 -1.595827 +v 0.910542 1.466078 -1.656269 +v 0.804747 1.466078 -1.710174 +v 0.695776 1.466078 -1.757330 +v 0.584060 1.466078 -1.797551 +v 0.470038 1.466078 -1.830677 +v 0.354161 1.466078 -1.856578 +v 0.236887 1.466078 -1.875153 +v 0.118678 1.466078 -1.886327 +v 0.000000 1.466078 -1.890057 +v -0.118678 1.466078 -1.886327 +v -0.236887 1.466078 -1.875153 +v -0.354161 1.466078 -1.856579 +v -0.470038 1.466078 -1.830677 +v -0.584060 1.466078 -1.797551 +v -0.695776 1.466078 -1.757330 +v -0.804747 1.466078 -1.710174 +v -0.910542 1.466078 -1.656269 +v -1.012743 1.466078 -1.595828 +v -1.110948 1.466078 -1.529088 +v -1.204768 1.466078 -1.456314 +v -1.293833 1.466078 -1.377792 +v -1.377792 1.466078 -1.293833 +v -1.456314 1.466078 -1.204768 +v -1.529088 1.466078 -1.110947 +v -1.595828 1.466078 -1.012743 +v -1.656269 1.466078 -0.910542 +v -1.710174 1.466078 -0.804747 +v -1.757330 1.466078 -0.695776 +v -1.797551 1.466078 -0.584060 +v -1.830677 1.466078 -0.470038 +v -1.856579 1.466078 -0.354161 +v -1.875153 1.466078 -0.236887 +v -1.886327 1.466078 -0.118677 +v -1.890057 1.466078 0.000000 +v -1.886327 1.466078 0.118678 +v -1.875153 1.466078 0.236887 +v -1.856579 1.466078 0.354162 +v -1.830677 1.466078 0.470038 +v -1.797551 1.466078 0.584060 +v -1.757331 1.466078 0.695777 +v -1.710175 1.466078 0.804747 +v -1.656270 1.466078 0.910542 +v -1.595828 1.466078 1.012743 +v -1.529088 1.466078 1.110948 +v -1.456314 1.466078 1.204768 +v -1.377792 1.466078 1.293833 +v -1.293833 1.466078 1.377793 +v -1.204768 1.466078 1.456314 +v -1.110948 1.466078 1.529088 +v -1.012743 1.466078 1.595828 +v -0.910542 1.466078 1.656270 +v -0.804747 1.466078 1.710175 +v -0.695776 1.466078 1.757331 +v -0.584060 1.466078 1.797551 +v -0.470038 1.466078 1.830678 +v -0.354161 1.466078 1.856579 +v -0.236887 1.466078 1.875154 +v -0.118677 1.466078 1.886328 +v 0.000000 1.466078 1.890057 +v 0.118678 1.466078 1.886328 +v 0.236887 1.466078 1.875154 +v 0.354162 1.466078 1.856579 +v 0.470038 1.466078 1.830678 +v 0.584060 1.466078 1.797552 +v 0.695777 1.466078 1.757331 +v 0.804747 1.466078 1.710175 +v 0.910542 1.466078 1.656270 +v 1.012744 1.466078 1.595828 +v 1.110948 1.466078 1.529088 +v 1.204768 1.466078 1.456314 +v 1.293834 1.466078 1.377792 +v 1.377793 1.466078 1.293833 +v 1.456314 1.466078 1.204768 +v 1.529089 1.466078 1.110948 +v 1.595828 1.466078 1.012743 +v 1.656270 1.466078 0.910542 +v 1.710175 1.466078 0.804747 +v 1.757331 1.466078 0.695777 +v 1.797552 1.466078 0.584060 +v 1.830678 1.466078 0.470038 +v 1.856579 1.466078 0.354161 +v 1.875154 1.466078 0.236887 +v 1.886328 1.466078 0.118678 +v 1.890058 1.466078 0.000000 +v 1.839436 1.524723 -0.115727 +v 1.828540 1.524723 -0.230998 +v 1.810427 1.524723 -0.345357 +v 1.785170 1.524723 -0.458354 +v 1.752867 1.524723 -0.569541 +v 1.713646 1.524723 -0.678480 +v 1.667663 1.524723 -0.784742 +v 1.615097 1.524723 -0.887907 +v 1.556158 1.524723 -0.987568 +v 1.491078 1.524723 -1.083331 +v 1.420112 1.524723 -1.174819 +v 1.343543 1.524723 -1.261670 +v 1.261670 1.524723 -1.343543 +v 1.174819 1.524723 -1.420112 +v 1.083331 1.524723 -1.491078 +v 0.987568 1.524723 -1.556158 +v 0.887907 1.524723 -1.615097 +v 0.784742 1.524723 -1.667662 +v 0.678481 1.524723 -1.713646 +v 0.569541 1.524723 -1.752867 +v 0.458354 1.524723 -1.785170 +v 0.345358 1.524723 -1.810427 +v 0.230998 1.524723 -1.828540 +v 0.115728 1.524723 -1.839437 +v 0.000000 1.524723 -1.843073 +v -0.115727 1.524723 -1.839437 +v -0.230998 1.524723 -1.828540 +v -0.345357 1.524723 -1.810427 +v -0.458354 1.524723 -1.785170 +v -0.569541 1.524723 -1.752867 +v -0.678481 1.524723 -1.713646 +v -0.784742 1.524723 -1.667663 +v -0.887907 1.524723 -1.615098 +v -0.987568 1.524723 -1.556158 +v -1.083331 1.524723 -1.491078 +v -1.174819 1.524723 -1.420112 +v -1.261671 1.524723 -1.343543 +v -1.343543 1.524723 -1.261670 +v -1.420113 1.524723 -1.174819 +v -1.491078 1.524723 -1.083331 +v -1.556158 1.524723 -0.987568 +v -1.615098 1.524723 -0.887907 +v -1.667663 1.524723 -0.784742 +v -1.713646 1.524723 -0.678480 +v -1.752867 1.524723 -0.569541 +v -1.785170 1.524723 -0.458354 +v -1.810428 1.524723 -0.345357 +v -1.828540 1.524723 -0.230998 +v -1.839437 1.524723 -0.115727 +v -1.843074 1.524723 0.000000 +v -1.839437 1.524723 0.115728 +v -1.828540 1.524723 0.230999 +v -1.810428 1.524723 0.345358 +v -1.785170 1.524723 0.458354 +v -1.752867 1.524723 0.569541 +v -1.713647 1.524723 0.678481 +v -1.667663 1.524723 0.784743 +v -1.615098 1.524723 0.887908 +v -1.556158 1.524723 0.987568 +v -1.491078 1.524723 1.083332 +v -1.420113 1.524723 1.174820 +v -1.343543 1.524723 1.261671 +v -1.261671 1.524723 1.343543 +v -1.174819 1.524723 1.420113 +v -1.083331 1.524723 1.491078 +v -0.987568 1.524723 1.556159 +v -0.887907 1.524723 1.615098 +v -0.784743 1.524723 1.667663 +v -0.678481 1.524723 1.713647 +v -0.569541 1.524723 1.752868 +v -0.458354 1.524723 1.785170 +v -0.345357 1.524723 1.810428 +v -0.230998 1.524723 1.828541 +v -0.115727 1.524723 1.839437 +v 0.000000 1.524723 1.843074 +v 0.115728 1.524723 1.839437 +v 0.230999 1.524723 1.828541 +v 0.345358 1.524723 1.810428 +v 0.458354 1.524723 1.785171 +v 0.569541 1.524723 1.752868 +v 0.678481 1.524723 1.713647 +v 0.784743 1.524723 1.667663 +v 0.887908 1.524723 1.615098 +v 0.987569 1.524723 1.556159 +v 1.083332 1.524723 1.491078 +v 1.174820 1.524723 1.420113 +v 1.261671 1.524723 1.343543 +v 1.343543 1.524723 1.261671 +v 1.420113 1.524723 1.174820 +v 1.491078 1.524723 1.083332 +v 1.556159 1.524723 0.987568 +v 1.615098 1.524723 0.887908 +v 1.667663 1.524723 0.784743 +v 1.713647 1.524723 0.678481 +v 1.752868 1.524723 0.569541 +v 1.785171 1.524723 0.458354 +v 1.810428 1.524723 0.345358 +v 1.828541 1.524723 0.230998 +v 1.839437 1.524723 0.115728 +v 1.843074 1.524723 0.000000 +v 1.790730 1.581863 -0.112663 +v 1.780123 1.581863 -0.224882 +v 1.762490 1.581863 -0.336213 +v 1.737901 1.581863 -0.446217 +v 1.706453 1.581863 -0.554460 +v 1.668271 1.581863 -0.660515 +v 1.623505 1.581863 -0.763963 +v 1.572332 1.581863 -0.864397 +v 1.514953 1.581863 -0.961418 +v 1.451596 1.581863 -1.054646 +v 1.382510 1.581863 -1.143711 +v 1.307967 1.581863 -1.228263 +v 1.228263 1.581863 -1.307967 +v 1.143711 1.581863 -1.382510 +v 1.054646 1.581863 -1.451596 +v 0.961419 1.581863 -1.514953 +v 0.864397 1.581863 -1.572332 +v 0.763964 1.581863 -1.623505 +v 0.660515 1.581863 -1.668271 +v 0.554460 1.581863 -1.706453 +v 0.446217 1.581863 -1.737901 +v 0.336213 1.581863 -1.762490 +v 0.224882 1.581863 -1.780123 +v 0.112663 1.581863 -1.790731 +v 0.000000 1.581863 -1.794271 +v -0.112663 1.581863 -1.790731 +v -0.224882 1.581863 -1.780123 +v -0.336213 1.581863 -1.762490 +v -0.446217 1.581863 -1.737901 +v -0.554460 1.581863 -1.706453 +v -0.660515 1.581863 -1.668271 +v -0.763964 1.581863 -1.623505 +v -0.864397 1.581863 -1.572332 +v -0.961419 1.581863 -1.514953 +v -1.054646 1.581863 -1.451596 +v -1.143712 1.581863 -1.382510 +v -1.228263 1.581863 -1.307967 +v -1.307968 1.581863 -1.228263 +v -1.382510 1.581863 -1.143711 +v -1.451596 1.581863 -1.054646 +v -1.514953 1.581863 -0.961419 +v -1.572332 1.581863 -0.864397 +v -1.623505 1.581863 -0.763963 +v -1.668271 1.581863 -0.660515 +v -1.706453 1.581863 -0.554460 +v -1.737901 1.581863 -0.446217 +v -1.762490 1.581863 -0.336213 +v -1.780123 1.581863 -0.224882 +v -1.790731 1.581863 -0.112663 +v -1.794271 1.581863 0.000000 +v -1.790731 1.581863 0.112663 +v -1.780123 1.581863 0.224882 +v -1.762490 1.581863 0.336213 +v -1.737901 1.581863 0.446217 +v -1.706454 1.581863 0.554461 +v -1.668271 1.581863 0.660516 +v -1.623505 1.581863 0.763964 +v -1.572332 1.581863 0.864397 +v -1.514953 1.581863 0.961419 +v -1.451596 1.581863 1.054646 +v -1.382510 1.581863 1.143712 +v -1.307968 1.581863 1.228264 +v -1.228263 1.581863 1.307968 +v -1.143712 1.581863 1.382510 +v -1.054646 1.581863 1.451596 +v -0.961419 1.581863 1.514954 +v -0.864397 1.581863 1.572332 +v -0.763964 1.581863 1.623506 +v -0.660515 1.581863 1.668272 +v -0.554460 1.581863 1.706454 +v -0.446217 1.581863 1.737901 +v -0.336213 1.581863 1.762490 +v -0.224882 1.581863 1.780123 +v -0.112663 1.581863 1.790731 +v 0.000000 1.581863 1.794272 +v 0.112663 1.581863 1.790731 +v 0.224882 1.581863 1.780124 +v 0.336213 1.581863 1.762490 +v 0.446217 1.581863 1.737901 +v 0.554461 1.581863 1.706454 +v 0.660516 1.581863 1.668272 +v 0.763964 1.581863 1.623506 +v 0.864397 1.581863 1.572332 +v 0.961419 1.581863 1.514954 +v 1.054647 1.581863 1.451596 +v 1.143712 1.581863 1.382510 +v 1.228264 1.581863 1.307968 +v 1.307968 1.581863 1.228264 +v 1.382510 1.581863 1.143712 +v 1.451597 1.581863 1.054646 +v 1.514954 1.581863 0.961419 +v 1.572333 1.581863 0.864397 +v 1.623506 1.581863 0.763964 +v 1.668272 1.581863 0.660516 +v 1.706454 1.581863 0.554461 +v 1.737901 1.581863 0.446217 +v 1.762490 1.581863 0.336213 +v 1.780124 1.581863 0.224882 +v 1.790731 1.581863 0.112663 +v 1.794272 1.581863 0.000000 +v 1.740257 1.637442 -0.109488 +v 1.729949 1.637442 -0.218543 +v 1.712813 1.637442 -0.326736 +v 1.688917 1.637442 -0.433640 +v 1.658356 1.637442 -0.538832 +v 1.621250 1.637442 -0.641898 +v 1.577745 1.637442 -0.742430 +v 1.528015 1.637442 -0.840033 +v 1.472253 1.637442 -0.934320 +v 1.410682 1.637442 -1.024920 +v 1.343543 1.637442 -1.111475 +v 1.271101 1.637442 -1.193644 +v 1.193644 1.637442 -1.271101 +v 1.111475 1.637442 -1.343543 +v 1.024920 1.637442 -1.410682 +v 0.934320 1.637442 -1.472253 +v 0.840033 1.637442 -1.528014 +v 0.742431 1.637442 -1.577745 +v 0.641898 1.637442 -1.621250 +v 0.538833 1.637442 -1.658356 +v 0.433640 1.637442 -1.688917 +v 0.326737 1.637442 -1.712813 +v 0.218543 1.637442 -1.729949 +v 0.109488 1.637442 -1.740258 +v 0.000000 1.637442 -1.743699 +v -0.109488 1.637442 -1.740258 +v -0.218543 1.637442 -1.729949 +v -0.326736 1.637442 -1.712813 +v -0.433640 1.637442 -1.688917 +v -0.538832 1.637442 -1.658356 +v -0.641898 1.637442 -1.621250 +v -0.742431 1.637442 -1.577746 +v -0.840033 1.637442 -1.528015 +v -0.934320 1.637442 -1.472253 +v -1.024920 1.637442 -1.410682 +v -1.111475 1.637442 -1.343543 +v -1.193644 1.637442 -1.271101 +v -1.271102 1.637442 -1.193644 +v -1.343543 1.637442 -1.111475 +v -1.410682 1.637442 -1.024920 +v -1.472253 1.637442 -0.934320 +v -1.528015 1.637442 -0.840033 +v -1.577746 1.637442 -0.742431 +v -1.621250 1.637442 -0.641898 +v -1.658356 1.637442 -0.538832 +v -1.688917 1.637442 -0.433640 +v -1.712813 1.637442 -0.326736 +v -1.729949 1.637442 -0.218543 +v -1.740258 1.637442 -0.109488 +v -1.743699 1.637442 0.000000 +v -1.740258 1.637442 0.109488 +v -1.729949 1.637442 0.218544 +v -1.712813 1.637442 0.326737 +v -1.688917 1.637442 0.433640 +v -1.658356 1.637442 0.538833 +v -1.621250 1.637442 0.641898 +v -1.577746 1.637442 0.742431 +v -1.528015 1.637442 0.840033 +v -1.472253 1.637442 0.934321 +v -1.410682 1.637442 1.024921 +v -1.343543 1.637442 1.111476 +v -1.271102 1.637442 1.193644 +v -1.193644 1.637442 1.271102 +v -1.111475 1.637442 1.343543 +v -1.024920 1.637442 1.410682 +v -0.934320 1.637442 1.472254 +v -0.840033 1.637442 1.528015 +v -0.742431 1.637442 1.577746 +v -0.641898 1.637442 1.621250 +v -0.538832 1.637442 1.658356 +v -0.433640 1.637442 1.688917 +v -0.326736 1.637442 1.712813 +v -0.218543 1.637442 1.729949 +v -0.109488 1.637442 1.740258 +v 0.000000 1.637442 1.743699 +v 0.109488 1.637442 1.740258 +v 0.218544 1.637442 1.729950 +v 0.326737 1.637442 1.712813 +v 0.433641 1.637442 1.688918 +v 0.538833 1.637442 1.658356 +v 0.641899 1.637442 1.621251 +v 0.742431 1.637442 1.577746 +v 0.840034 1.637442 1.528015 +v 0.934321 1.637442 1.472254 +v 1.024921 1.637442 1.410682 +v 1.111476 1.637442 1.343543 +v 1.193644 1.637442 1.271102 +v 1.271102 1.637442 1.193644 +v 1.343543 1.637442 1.111476 +v 1.410682 1.637442 1.024921 +v 1.472254 1.637442 0.934321 +v 1.528015 1.637442 0.840033 +v 1.577746 1.637442 0.742431 +v 1.621251 1.637442 0.641898 +v 1.658356 1.637442 0.538833 +v 1.688918 1.637442 0.433640 +v 1.712814 1.637442 0.326737 +v 1.729950 1.637442 0.218543 +v 1.740258 1.637442 0.109488 +v 1.743699 1.637442 0.000000 +v 1.688067 1.691405 -0.106204 +v 1.678067 1.691405 -0.211989 +v 1.661445 1.691405 -0.316937 +v 1.638266 1.691405 -0.420635 +v 1.608621 1.691405 -0.522673 +v 1.572628 1.691405 -0.622647 +v 1.530429 1.691405 -0.720165 +v 1.482189 1.691405 -0.814840 +v 1.428100 1.691405 -0.906300 +v 1.368375 1.691405 -0.994183 +v 1.303250 1.691405 -1.078142 +v 1.232981 1.691405 -1.157846 +v 1.157846 1.691405 -1.232981 +v 1.078142 1.691405 -1.303250 +v 0.994183 1.691405 -1.368375 +v 0.906300 1.691405 -1.428100 +v 0.814840 1.691405 -1.482189 +v 0.720165 1.691405 -1.530429 +v 0.622648 1.691405 -1.572628 +v 0.522673 1.691405 -1.608621 +v 0.420635 1.691405 -1.638266 +v 0.316938 1.691405 -1.661445 +v 0.211989 1.691405 -1.678067 +v 0.106204 1.691405 -1.688067 +v 0.000000 1.691405 -1.691405 +v -0.106204 1.691405 -1.688067 +v -0.211989 1.691405 -1.678067 +v -0.316938 1.691405 -1.661445 +v -0.420635 1.691405 -1.638266 +v -0.522673 1.691405 -1.608622 +v -0.622648 1.691405 -1.572628 +v -0.720165 1.691405 -1.530429 +v -0.814841 1.691405 -1.482189 +v -0.906300 1.691405 -1.428100 +v -0.994183 1.691405 -1.368375 +v -1.078142 1.691405 -1.303250 +v -1.157846 1.691405 -1.232981 +v -1.232981 1.691405 -1.157846 +v -1.303250 1.691405 -1.078142 +v -1.368375 1.691405 -0.994183 +v -1.428100 1.691405 -0.906300 +v -1.482189 1.691405 -0.814840 +v -1.530429 1.691405 -0.720165 +v -1.572628 1.691405 -0.622647 +v -1.608622 1.691405 -0.522673 +v -1.638266 1.691405 -0.420635 +v -1.661445 1.691405 -0.316938 +v -1.678068 1.691405 -0.211989 +v -1.688067 1.691405 -0.106204 +v -1.691405 1.691405 0.000000 +v -1.688067 1.691405 0.106204 +v -1.678068 1.691405 0.211989 +v -1.661445 1.691405 0.316938 +v -1.638266 1.691405 0.420635 +v -1.608622 1.691405 0.522673 +v -1.572629 1.691405 0.622648 +v -1.530429 1.691405 0.720165 +v -1.482189 1.691405 0.814841 +v -1.428100 1.691405 0.906300 +v -1.368375 1.691405 0.994183 +v -1.303250 1.691405 1.078142 +v -1.232981 1.691405 1.157847 +v -1.157846 1.691405 1.232981 +v -1.078142 1.691405 1.303250 +v -0.994183 1.691405 1.368376 +v -0.906300 1.691405 1.428101 +v -0.814841 1.691405 1.482190 +v -0.720165 1.691405 1.530429 +v -0.622648 1.691405 1.572629 +v -0.522673 1.691405 1.608622 +v -0.420635 1.691405 1.638267 +v -0.316938 1.691405 1.661446 +v -0.211989 1.691405 1.678068 +v -0.106204 1.691405 1.688068 +v 0.000000 1.691405 1.691405 +v 0.106204 1.691405 1.688068 +v 0.211989 1.691405 1.678068 +v 0.316938 1.691405 1.661446 +v 0.420636 1.691405 1.638267 +v 0.522673 1.691405 1.608622 +v 0.622648 1.691405 1.572629 +v 0.720166 1.691405 1.530429 +v 0.814841 1.691405 1.482190 +v 0.906300 1.691405 1.428101 +v 0.994183 1.691405 1.368375 +v 1.078143 1.691405 1.303250 +v 1.157847 1.691405 1.232981 +v 1.232982 1.691405 1.157847 +v 1.303250 1.691405 1.078142 +v 1.368376 1.691405 0.994183 +v 1.428101 1.691405 0.906300 +v 1.482190 1.691405 0.814841 +v 1.530429 1.691405 0.720165 +v 1.572629 1.691405 0.622648 +v 1.608622 1.691405 0.522673 +v 1.638267 1.691405 0.420635 +v 1.661446 1.691405 0.316938 +v 1.678068 1.691405 0.211989 +v 1.688068 1.691405 0.106204 +v 1.691405 1.691405 0.000000 +v 1.634211 1.743699 -0.102816 +v 1.624530 1.743699 -0.205226 +v 1.608438 1.743699 -0.306826 +v 1.585999 1.743699 -0.407215 +v 1.557300 1.743699 -0.505997 +v 1.522455 1.743699 -0.602782 +v 1.481602 1.743699 -0.697189 +v 1.434901 1.743699 -0.788843 +v 1.382538 1.743699 -0.877385 +v 1.324718 1.743699 -0.962464 +v 1.261671 1.743699 -1.043745 +v 1.193644 1.743699 -1.120906 +v 1.120906 1.743699 -1.193644 +v 1.043745 1.743699 -1.261671 +v 0.962464 1.743699 -1.324718 +v 0.877385 1.743699 -1.382538 +v 0.788844 1.743699 -1.434901 +v 0.697189 1.743699 -1.481602 +v 0.602783 1.743699 -1.522455 +v 0.505997 1.743699 -1.557300 +v 0.407215 1.743699 -1.585998 +v 0.306826 1.743699 -1.608438 +v 0.205226 1.743699 -1.624530 +v 0.102816 1.743699 -1.634211 +v 0.000000 1.743699 -1.637442 +v -0.102816 1.743699 -1.634211 +v -0.205226 1.743699 -1.624530 +v -0.306826 1.743699 -1.608438 +v -0.407215 1.743699 -1.585999 +v -0.505997 1.743699 -1.557300 +v -0.602783 1.743699 -1.522455 +v -0.697189 1.743699 -1.481602 +v -0.788844 1.743699 -1.434901 +v -0.877385 1.743699 -1.382538 +v -0.962464 1.743699 -1.324718 +v -1.043745 1.743699 -1.261671 +v -1.120906 1.743699 -1.193644 +v -1.193644 1.743699 -1.120906 +v -1.261671 1.743699 -1.043745 +v -1.324718 1.743699 -0.962464 +v -1.382538 1.743699 -0.877385 +v -1.434901 1.743699 -0.788844 +v -1.481602 1.743699 -0.697189 +v -1.522455 1.743699 -0.602782 +v -1.557300 1.743699 -0.505997 +v -1.585999 1.743699 -0.407215 +v -1.608438 1.743699 -0.306826 +v -1.624530 1.743699 -0.205226 +v -1.634211 1.743699 -0.102816 +v -1.637442 1.743699 0.000000 +v -1.634211 1.743699 0.102816 +v -1.624530 1.743699 0.205226 +v -1.608438 1.743699 0.306826 +v -1.585999 1.743699 0.407215 +v -1.557300 1.743699 0.505998 +v -1.522455 1.743699 0.602783 +v -1.481602 1.743699 0.697189 +v -1.434901 1.743699 0.788844 +v -1.382538 1.743699 0.877386 +v -1.324718 1.743699 0.962465 +v -1.261671 1.743699 1.043745 +v -1.193644 1.743699 1.120907 +v -1.120906 1.743699 1.193644 +v -1.043745 1.743699 1.261671 +v -0.962464 1.743699 1.324719 +v -0.877385 1.743699 1.382538 +v -0.788844 1.743699 1.434902 +v -0.697189 1.743699 1.481602 +v -0.602783 1.743699 1.522455 +v -0.505997 1.743699 1.557300 +v -0.407215 1.743699 1.585999 +v -0.306826 1.743699 1.608439 +v -0.205226 1.743699 1.624531 +v -0.102816 1.743699 1.634211 +v 0.000000 1.743699 1.637442 +v 0.102816 1.743699 1.634211 +v 0.205226 1.743699 1.624531 +v 0.306826 1.743699 1.608439 +v 0.407216 1.743699 1.585999 +v 0.505998 1.743699 1.557300 +v 0.602783 1.743699 1.522456 +v 0.697189 1.743699 1.481602 +v 0.788844 1.743699 1.434902 +v 0.877386 1.743699 1.382538 +v 0.962465 1.743699 1.324719 +v 1.043745 1.743699 1.261671 +v 1.120907 1.743699 1.193644 +v 1.193644 1.743699 1.120906 +v 1.261671 1.743699 1.043745 +v 1.324719 1.743699 0.962465 +v 1.382539 1.743699 0.877386 +v 1.434902 1.743699 0.788844 +v 1.481602 1.743699 0.697189 +v 1.522456 1.743699 0.602783 +v 1.557300 1.743699 0.505998 +v 1.585999 1.743699 0.407215 +v 1.608439 1.743699 0.306826 +v 1.624531 1.743699 0.205226 +v 1.634212 1.743699 0.102816 +v 1.637443 1.743699 0.000000 +v 1.578741 1.794271 -0.099326 +v 1.569389 1.794271 -0.198260 +v 1.553844 1.794271 -0.296411 +v 1.532166 1.794271 -0.393393 +v 1.504441 1.794271 -0.488822 +v 1.470779 1.794271 -0.582322 +v 1.431312 1.794271 -0.673524 +v 1.386197 1.794271 -0.762068 +v 1.335611 1.794271 -0.847604 +v 1.279754 1.794271 -0.929796 +v 1.218846 1.794271 -1.008317 +v 1.153128 1.794271 -1.082860 +v 1.082860 1.794271 -1.153128 +v 1.008317 1.794271 -1.218846 +v 0.929796 1.794271 -1.279754 +v 0.847604 1.794271 -1.335611 +v 0.762068 1.794271 -1.386197 +v 0.673524 1.794271 -1.431312 +v 0.582323 1.794271 -1.470779 +v 0.488823 1.794271 -1.504441 +v 0.393393 1.794271 -1.532166 +v 0.296412 1.794271 -1.553844 +v 0.198260 1.794271 -1.569389 +v 0.099326 1.794271 -1.578741 +v 0.000000 1.794271 -1.581863 +v -0.099326 1.794271 -1.578741 +v -0.198260 1.794271 -1.569389 +v -0.296411 1.794271 -1.553844 +v -0.393393 1.794271 -1.532166 +v -0.488822 1.794271 -1.504441 +v -0.582323 1.794271 -1.470779 +v -0.673524 1.794271 -1.431312 +v -0.762068 1.794271 -1.386197 +v -0.847605 1.794271 -1.335611 +v -0.929796 1.794271 -1.279754 +v -1.008317 1.794271 -1.218846 +v -1.082860 1.794271 -1.153128 +v -1.153129 1.794271 -1.082860 +v -1.218846 1.794271 -1.008317 +v -1.279754 1.794271 -0.929796 +v -1.335611 1.794271 -0.847604 +v -1.386197 1.794271 -0.762068 +v -1.431312 1.794271 -0.673524 +v -1.470779 1.794271 -0.582322 +v -1.504441 1.794271 -0.488822 +v -1.532166 1.794271 -0.393393 +v -1.553844 1.794271 -0.296411 +v -1.569390 1.794271 -0.198260 +v -1.578742 1.794271 -0.099326 +v -1.581863 1.794271 0.000000 +v -1.578742 1.794271 0.099326 +v -1.569390 1.794271 0.198260 +v -1.553844 1.794271 0.296412 +v -1.532166 1.794271 0.393394 +v -1.504441 1.794271 0.488823 +v -1.470779 1.794271 0.582323 +v -1.431312 1.794271 0.673525 +v -1.386197 1.794271 0.762069 +v -1.335611 1.794271 0.847605 +v -1.279754 1.794271 0.929796 +v -1.218846 1.794271 1.008318 +v -1.153129 1.794271 1.082860 +v -1.082860 1.794271 1.153129 +v -1.008318 1.794271 1.218847 +v -0.929796 1.794271 1.279754 +v -0.847605 1.794271 1.335611 +v -0.762068 1.794271 1.386197 +v -0.673525 1.794271 1.431313 +v -0.582323 1.794271 1.470779 +v -0.488823 1.794271 1.504441 +v -0.393393 1.794271 1.532166 +v -0.296411 1.794271 1.553844 +v -0.198260 1.794271 1.569390 +v -0.099326 1.794271 1.578742 +v 0.000000 1.794271 1.581863 +v 0.099326 1.794271 1.578742 +v 0.198260 1.794271 1.569390 +v 0.296412 1.794271 1.553844 +v 0.393394 1.794271 1.532166 +v 0.488823 1.794271 1.504442 +v 0.582323 1.794271 1.470780 +v 0.673525 1.794271 1.431313 +v 0.762069 1.794271 1.386197 +v 0.847605 1.794271 1.335611 +v 0.929796 1.794271 1.279754 +v 1.008318 1.794271 1.218847 +v 1.082860 1.794271 1.153129 +v 1.153129 1.794271 1.082860 +v 1.218847 1.794271 1.008318 +v 1.279755 1.794271 0.929796 +v 1.335612 1.794271 0.847605 +v 1.386198 1.794271 0.762069 +v 1.431313 1.794271 0.673525 +v 1.470780 1.794271 0.582323 +v 1.504442 1.794271 0.488823 +v 1.532166 1.794271 0.393393 +v 1.553844 1.794271 0.296412 +v 1.569390 1.794271 0.198260 +v 1.578742 1.794271 0.099326 +v 1.581864 1.794271 0.000000 +v 1.521714 1.843073 -0.095738 +v 1.512700 1.843073 -0.191098 +v 1.497716 1.843073 -0.285704 +v 1.476821 1.843073 -0.379183 +v 1.450098 1.843073 -0.471165 +v 1.417651 1.843073 -0.561288 +v 1.379610 1.843073 -0.649195 +v 1.336125 1.843073 -0.734541 +v 1.287366 1.843073 -0.816987 +v 1.233527 1.843073 -0.896210 +v 1.174819 1.843073 -0.971895 +v 1.111475 1.843073 -1.043745 +v 1.043745 1.843073 -1.111475 +v 0.971895 1.843073 -1.174819 +v 0.896210 1.843073 -1.233527 +v 0.816987 1.843073 -1.287366 +v 0.734541 1.843073 -1.336125 +v 0.649195 1.843073 -1.379610 +v 0.561288 1.843073 -1.417651 +v 0.471165 1.843073 -1.450098 +v 0.379183 1.843073 -1.476821 +v 0.285705 1.843073 -1.497716 +v 0.191099 1.843073 -1.512700 +v 0.095738 1.843073 -1.521714 +v 0.000000 1.843073 -1.524723 +v -0.095738 1.843073 -1.521714 +v -0.191098 1.843073 -1.512700 +v -0.285705 1.843073 -1.497716 +v -0.379183 1.843073 -1.476821 +v -0.471165 1.843073 -1.450098 +v -0.561288 1.843073 -1.417652 +v -0.649195 1.843073 -1.379611 +v -0.734541 1.843073 -1.336125 +v -0.816987 1.843073 -1.287366 +v -0.896210 1.843073 -1.233527 +v -0.971895 1.843073 -1.174819 +v -1.043745 1.843073 -1.111475 +v -1.111475 1.843073 -1.043745 +v -1.174819 1.843073 -0.971895 +v -1.233527 1.843073 -0.896210 +v -1.287366 1.843073 -0.816987 +v -1.336125 1.843073 -0.734541 +v -1.379611 1.843073 -0.649195 +v -1.417652 1.843073 -0.561288 +v -1.450098 1.843073 -0.471165 +v -1.476821 1.843073 -0.379183 +v -1.497716 1.843073 -0.285704 +v -1.512700 1.843073 -0.191098 +v -1.521714 1.843073 -0.095738 +v -1.524723 1.843073 0.000000 +v -1.521714 1.843073 0.095738 +v -1.512700 1.843073 0.191099 +v -1.497716 1.843073 0.285705 +v -1.476821 1.843073 0.379183 +v -1.450098 1.843073 0.471166 +v -1.417652 1.843073 0.561288 +v -1.379611 1.843073 0.649196 +v -1.336125 1.843073 0.734541 +v -1.287366 1.843073 0.816988 +v -1.233527 1.843073 0.896210 +v -1.174819 1.843073 0.971895 +v -1.111475 1.843073 1.043745 +v -1.043745 1.843073 1.111476 +v -0.971895 1.843073 1.174820 +v -0.896210 1.843073 1.233527 +v -0.816988 1.843073 1.287367 +v -0.734541 1.843073 1.336125 +v -0.649196 1.843073 1.379611 +v -0.561288 1.843073 1.417652 +v -0.471165 1.843073 1.450098 +v -0.379183 1.843073 1.476821 +v -0.285705 1.843073 1.497716 +v -0.191098 1.843073 1.512700 +v -0.095738 1.843073 1.521715 +v 0.000000 1.843073 1.524723 +v 0.095738 1.843073 1.521715 +v 0.191099 1.843073 1.512701 +v 0.285705 1.843073 1.497716 +v 0.379183 1.843073 1.476822 +v 0.471166 1.843073 1.450098 +v 0.561288 1.843073 1.417652 +v 0.649196 1.843073 1.379611 +v 0.734541 1.843073 1.336125 +v 0.816988 1.843073 1.287367 +v 0.896210 1.843073 1.233527 +v 0.971896 1.843073 1.174820 +v 1.043745 1.843073 1.111475 +v 1.111476 1.843073 1.043745 +v 1.174820 1.843073 0.971895 +v 1.233527 1.843073 0.896210 +v 1.287367 1.843073 0.816988 +v 1.336125 1.843073 0.734541 +v 1.379611 1.843073 0.649196 +v 1.417652 1.843073 0.561288 +v 1.450098 1.843073 0.471166 +v 1.476822 1.843073 0.379183 +v 1.497717 1.843073 0.285705 +v 1.512701 1.843073 0.191099 +v 1.521715 1.843073 0.095738 +v 1.524724 1.843073 0.000000 +v 1.463185 1.890057 -0.092056 +v 1.454518 1.890057 -0.183748 +v 1.440110 1.890057 -0.274716 +v 1.420019 1.890057 -0.364599 +v 1.394323 1.890057 -0.453043 +v 1.363125 1.890057 -0.539699 +v 1.326547 1.890057 -0.624226 +v 1.284734 1.890057 -0.706288 +v 1.237851 1.890057 -0.785564 +v 1.186082 1.890057 -0.861739 +v 1.129633 1.890057 -0.934513 +v 1.068725 1.890057 -1.003600 +v 1.003600 1.890057 -1.068725 +v 0.934513 1.890057 -1.129633 +v 0.861739 1.890057 -1.186082 +v 0.785564 1.890057 -1.237851 +v 0.706289 1.890057 -1.284734 +v 0.624226 1.890057 -1.326547 +v 0.539699 1.890057 -1.363125 +v 0.453043 1.890057 -1.394323 +v 0.364599 1.890057 -1.420018 +v 0.274716 1.890057 -1.440110 +v 0.183748 1.890057 -1.454518 +v 0.092056 1.890057 -1.463185 +v 0.000000 1.890057 -1.466078 +v -0.092056 1.890057 -1.463185 +v -0.183748 1.890057 -1.454518 +v -0.274716 1.890057 -1.440110 +v -0.364599 1.890057 -1.420019 +v -0.453043 1.890057 -1.394323 +v -0.539699 1.890057 -1.363125 +v -0.624226 1.890057 -1.326547 +v -0.706289 1.890057 -1.284734 +v -0.785564 1.890057 -1.237851 +v -0.861739 1.890057 -1.186082 +v -0.934513 1.890057 -1.129633 +v -1.003600 1.890057 -1.068725 +v -1.068725 1.890057 -1.003600 +v -1.129633 1.890057 -0.934513 +v -1.186082 1.890057 -0.861739 +v -1.237851 1.890057 -0.785564 +v -1.284734 1.890057 -0.706288 +v -1.326547 1.890057 -0.624226 +v -1.363125 1.890057 -0.539699 +v -1.394323 1.890057 -0.453043 +v -1.420019 1.890057 -0.364599 +v -1.440110 1.890057 -0.274716 +v -1.454518 1.890057 -0.183748 +v -1.463185 1.890057 -0.092056 +v -1.466078 1.890057 0.000000 +v -1.463185 1.890057 0.092056 +v -1.454518 1.890057 0.183748 +v -1.440110 1.890057 0.274716 +v -1.420019 1.890057 0.364599 +v -1.394323 1.890057 0.453043 +v -1.363125 1.890057 0.539700 +v -1.326547 1.890057 0.624226 +v -1.284734 1.890057 0.706289 +v -1.237851 1.890057 0.785564 +v -1.186082 1.890057 0.861739 +v -1.129633 1.890057 0.934514 +v -1.068725 1.890057 1.003600 +v -1.003600 1.890057 1.068725 +v -0.934514 1.890057 1.129633 +v -0.861739 1.890057 1.186083 +v -0.785564 1.890057 1.237851 +v -0.706289 1.890057 1.284734 +v -0.624226 1.890057 1.326548 +v -0.539699 1.890057 1.363125 +v -0.453043 1.890057 1.394324 +v -0.364599 1.890057 1.420019 +v -0.274716 1.890057 1.440110 +v -0.183748 1.890057 1.454518 +v -0.092056 1.890057 1.463186 +v 0.000000 1.890057 1.466079 +v 0.092056 1.890057 1.463186 +v 0.183749 1.890057 1.454518 +v 0.274716 1.890057 1.440110 +v 0.364599 1.890057 1.420019 +v 0.453043 1.890057 1.394324 +v 0.539700 1.890057 1.363126 +v 0.624226 1.890057 1.326548 +v 0.706289 1.890057 1.284735 +v 0.785564 1.890057 1.237851 +v 0.861740 1.890057 1.186082 +v 0.934514 1.890057 1.129633 +v 1.003600 1.890057 1.068725 +v 1.068726 1.890057 1.003600 +v 1.129633 1.890057 0.934514 +v 1.186083 1.890057 0.861739 +v 1.237851 1.890057 0.785564 +v 1.284735 1.890057 0.706289 +v 1.326548 1.890057 0.624226 +v 1.363126 1.890057 0.539700 +v 1.394324 1.890057 0.453043 +v 1.420019 1.890057 0.364599 +v 1.440110 1.890057 0.274716 +v 1.454518 1.890057 0.183748 +v 1.463186 1.890057 0.092056 +v 1.466079 1.890057 0.000000 +v 1.403212 1.935175 -0.088283 +v 1.394900 1.935175 -0.176217 +v 1.381083 1.935175 -0.263456 +v 1.361815 1.935175 -0.349655 +v 1.337173 1.935175 -0.434474 +v 1.307253 1.935175 -0.517578 +v 1.272175 1.935175 -0.598640 +v 1.232075 1.935175 -0.677339 +v 1.187114 1.935175 -0.753365 +v 1.137467 1.935175 -0.826418 +v 1.083331 1.935175 -0.896210 +v 1.024920 1.935175 -0.962464 +v 0.962464 1.935175 -1.024920 +v 0.896210 1.935175 -1.083331 +v 0.826418 1.935175 -1.137467 +v 0.753365 1.935175 -1.187114 +v 0.677339 1.935175 -1.232075 +v 0.598640 1.935175 -1.272175 +v 0.517578 1.935175 -1.307253 +v 0.434474 1.935175 -1.337173 +v 0.349655 1.935175 -1.361815 +v 0.263456 1.935175 -1.381083 +v 0.176217 1.935175 -1.394900 +v 0.088283 1.935175 -1.403212 +v 0.000000 1.935175 -1.405987 +v -0.088283 1.935175 -1.403212 +v -0.176217 1.935175 -1.394900 +v -0.263456 1.935175 -1.381083 +v -0.349655 1.935175 -1.361815 +v -0.434474 1.935175 -1.337173 +v -0.517578 1.935175 -1.307253 +v -0.598640 1.935175 -1.272175 +v -0.677339 1.935175 -1.232076 +v -0.753365 1.935175 -1.187114 +v -0.826418 1.935175 -1.137467 +v -0.896210 1.935175 -1.083331 +v -0.962464 1.935175 -1.024920 +v -1.024920 1.935175 -0.962464 +v -1.083331 1.935175 -0.896210 +v -1.137467 1.935175 -0.826418 +v -1.187114 1.935175 -0.753365 +v -1.232076 1.935175 -0.677339 +v -1.272175 1.935175 -0.598640 +v -1.307253 1.935175 -0.517578 +v -1.337173 1.935175 -0.434474 +v -1.361815 1.935175 -0.349655 +v -1.381083 1.935175 -0.263456 +v -1.394900 1.935175 -0.176217 +v -1.403212 1.935175 -0.088283 +v -1.405987 1.935175 0.000000 +v -1.403212 1.935175 0.088283 +v -1.394900 1.935175 0.176217 +v -1.381083 1.935175 0.263456 +v -1.361815 1.935175 0.349655 +v -1.337173 1.935175 0.434474 +v -1.307253 1.935175 0.517578 +v -1.272175 1.935175 0.598640 +v -1.232076 1.935175 0.677340 +v -1.187114 1.935175 0.753366 +v -1.137467 1.935175 0.826418 +v -1.083331 1.935175 0.896210 +v -1.024920 1.935175 0.962464 +v -0.962464 1.935175 1.024921 +v -0.896210 1.935175 1.083332 +v -0.826418 1.935175 1.137467 +v -0.753365 1.935175 1.187114 +v -0.677339 1.935175 1.232076 +v -0.598640 1.935175 1.272175 +v -0.517578 1.935175 1.307254 +v -0.434474 1.935175 1.337173 +v -0.349655 1.935175 1.361815 +v -0.263456 1.935175 1.381083 +v -0.176217 1.935175 1.394900 +v -0.088283 1.935175 1.403213 +v 0.000000 1.935175 1.405987 +v 0.088283 1.935175 1.403213 +v 0.176217 1.935175 1.394901 +v 0.263456 1.935175 1.381083 +v 0.349655 1.935175 1.361816 +v 0.434474 1.935175 1.337173 +v 0.517579 1.935175 1.307254 +v 0.598640 1.935175 1.272175 +v 0.677340 1.935175 1.232076 +v 0.753366 1.935175 1.187114 +v 0.826419 1.935175 1.137467 +v 0.896210 1.935175 1.083332 +v 0.962465 1.935175 1.024920 +v 1.024921 1.935175 0.962464 +v 1.083332 1.935175 0.896210 +v 1.137468 1.935175 0.826418 +v 1.187114 1.935175 0.753366 +v 1.232076 1.935175 0.677340 +v 1.272175 1.935175 0.598640 +v 1.307254 1.935175 0.517578 +v 1.337173 1.935175 0.434474 +v 1.361816 1.935175 0.349655 +v 1.381083 1.935175 0.263456 +v 1.394901 1.935175 0.176217 +v 1.403213 1.935175 0.088283 +v 1.405987 1.935175 0.000000 +v 1.341854 1.978383 -0.084422 +v 1.333906 1.978383 -0.168511 +v 1.320693 1.978383 -0.251935 +v 1.302267 1.978383 -0.334365 +v 1.278703 1.978383 -0.415476 +v 1.250091 1.978383 -0.494946 +v 1.216547 1.978383 -0.572463 +v 1.178201 1.978383 -0.647721 +v 1.135205 1.978383 -0.720423 +v 1.087729 1.978383 -0.790282 +v 1.035961 1.978383 -0.857021 +v 0.980104 1.978383 -0.920379 +v 0.920379 1.978383 -0.980104 +v 0.857021 1.978383 -1.035961 +v 0.790282 1.978383 -1.087729 +v 0.720423 1.978383 -1.135205 +v 0.647721 1.978383 -1.178201 +v 0.572463 1.978383 -1.216547 +v 0.494946 1.978383 -1.250091 +v 0.415476 1.978383 -1.278703 +v 0.334366 1.978383 -1.302267 +v 0.251936 1.978383 -1.320693 +v 0.168512 1.978383 -1.333906 +v 0.084422 1.978383 -1.341854 +v 0.000000 1.978383 -1.344508 +v -0.084422 1.978383 -1.341854 +v -0.168511 1.978383 -1.333906 +v -0.251936 1.978383 -1.320693 +v -0.334365 1.978383 -1.302267 +v -0.415476 1.978383 -1.278703 +v -0.494946 1.978383 -1.250092 +v -0.572463 1.978383 -1.216547 +v -0.647721 1.978383 -1.178201 +v -0.720423 1.978383 -1.135205 +v -0.790282 1.978383 -1.087729 +v -0.857021 1.978383 -1.035961 +v -0.920379 1.978383 -0.980104 +v -0.980104 1.978383 -0.920379 +v -1.035961 1.978383 -0.857021 +v -1.087730 1.978383 -0.790282 +v -1.135205 1.978383 -0.720423 +v -1.178201 1.978383 -0.647721 +v -1.216547 1.978383 -0.572463 +v -1.250092 1.978383 -0.494946 +v -1.278703 1.978383 -0.415476 +v -1.302267 1.978383 -0.334365 +v -1.320693 1.978383 -0.251936 +v -1.333906 1.978383 -0.168511 +v -1.341855 1.978383 -0.084422 +v -1.344508 1.978383 0.000000 +v -1.341855 1.978383 0.084422 +v -1.333906 1.978383 0.168512 +v -1.320693 1.978383 0.251936 +v -1.302268 1.978383 0.334366 +v -1.278703 1.978383 0.415476 +v -1.250092 1.978383 0.494946 +v -1.216547 1.978383 0.572464 +v -1.178201 1.978383 0.647722 +v -1.135205 1.978383 0.720423 +v -1.087730 1.978383 0.790282 +v -1.035961 1.978383 0.857022 +v -0.980104 1.978383 0.920379 +v -0.920379 1.978383 0.980104 +v -0.857022 1.978383 1.035961 +v -0.790282 1.978383 1.087730 +v -0.720423 1.978383 1.135206 +v -0.647722 1.978383 1.178201 +v -0.572464 1.978383 1.216547 +v -0.494946 1.978383 1.250092 +v -0.415476 1.978383 1.278703 +v -0.334365 1.978383 1.302268 +v -0.251936 1.978383 1.320693 +v -0.168511 1.978383 1.333906 +v -0.084422 1.978383 1.341855 +v 0.000000 1.978383 1.344508 +v 0.084422 1.978383 1.341855 +v 0.168512 1.978383 1.333906 +v 0.251936 1.978383 1.320693 +v 0.334366 1.978383 1.302268 +v 0.415476 1.978383 1.278703 +v 0.494947 1.978383 1.250092 +v 0.572464 1.978383 1.216547 +v 0.647722 1.978383 1.178201 +v 0.720424 1.978383 1.135206 +v 0.790282 1.978383 1.087730 +v 0.857022 1.978383 1.035961 +v 0.920379 1.978383 0.980104 +v 0.980104 1.978383 0.920379 +v 1.035961 1.978383 0.857022 +v 1.087730 1.978383 0.790282 +v 1.135206 1.978383 0.720423 +v 1.178201 1.978383 0.647722 +v 1.216547 1.978383 0.572464 +v 1.250092 1.978383 0.494946 +v 1.278703 1.978383 0.415476 +v 1.302268 1.978383 0.334366 +v 1.320693 1.978383 0.251936 +v 1.333906 1.978383 0.168512 +v 1.341855 1.978383 0.084422 +v 1.344508 1.978383 0.000000 +v 1.279172 2.019639 -0.080479 +v 1.271595 2.019639 -0.160640 +v 1.258999 2.019639 -0.240167 +v 1.241434 2.019639 -0.318746 +v 1.218971 2.019639 -0.396067 +v 1.191696 2.019639 -0.471826 +v 1.159718 2.019639 -0.545722 +v 1.123164 2.019639 -0.617464 +v 1.082176 2.019639 -0.686770 +v 1.036918 2.019639 -0.753365 +v 0.987568 2.019639 -0.816987 +v 0.934320 2.019639 -0.877385 +v 0.877385 2.019639 -0.934320 +v 0.816987 2.019639 -0.987568 +v 0.753365 2.019639 -1.036918 +v 0.686770 2.019639 -1.082176 +v 0.617464 2.019639 -1.123164 +v 0.545722 2.019639 -1.159718 +v 0.471826 2.019639 -1.191696 +v 0.396068 2.019639 -1.218970 +v 0.318746 2.019639 -1.241434 +v 0.240167 2.019639 -1.258999 +v 0.160640 2.019639 -1.271595 +v 0.080479 2.019639 -1.279172 +v 0.000000 2.019639 -1.281702 +v -0.080479 2.019639 -1.279172 +v -0.160640 2.019639 -1.271595 +v -0.240167 2.019639 -1.258999 +v -0.318746 2.019639 -1.241435 +v -0.396068 2.019639 -1.218971 +v -0.471826 2.019639 -1.191696 +v -0.545722 2.019639 -1.159718 +v -0.617464 2.019639 -1.123164 +v -0.686770 2.019639 -1.082176 +v -0.753365 2.019639 -1.036918 +v -0.816987 2.019639 -0.987568 +v -0.877385 2.019639 -0.934320 +v -0.934320 2.019639 -0.877385 +v -0.987568 2.019639 -0.816987 +v -1.036918 2.019639 -0.753365 +v -1.082176 2.019639 -0.686770 +v -1.123164 2.019639 -0.617464 +v -1.159718 2.019639 -0.545722 +v -1.191696 2.019639 -0.471826 +v -1.218971 2.019639 -0.396067 +v -1.241435 2.019639 -0.318746 +v -1.258999 2.019639 -0.240167 +v -1.271595 2.019639 -0.160640 +v -1.279173 2.019639 -0.080479 +v -1.281702 2.019639 0.000000 +v -1.279173 2.019639 0.080479 +v -1.271595 2.019639 0.160640 +v -1.258999 2.019639 0.240167 +v -1.241435 2.019639 0.318746 +v -1.218971 2.019639 0.396068 +v -1.191696 2.019639 0.471826 +v -1.159718 2.019639 0.545722 +v -1.123164 2.019639 0.617465 +v -1.082176 2.019639 0.686770 +v -1.036918 2.019639 0.753366 +v -0.987568 2.019639 0.816988 +v -0.934320 2.019639 0.877385 +v -0.877385 2.019639 0.934321 +v -0.816987 2.019639 0.987568 +v -0.753365 2.019639 1.036919 +v -0.686770 2.019639 1.082177 +v -0.617464 2.019639 1.123164 +v -0.545722 2.019639 1.159719 +v -0.471826 2.019639 1.191696 +v -0.396068 2.019639 1.218971 +v -0.318746 2.019639 1.241435 +v -0.240167 2.019639 1.258999 +v -0.160640 2.019639 1.271595 +v -0.080479 2.019639 1.279173 +v 0.000000 2.019639 1.281702 +v 0.080479 2.019639 1.279173 +v 0.160640 2.019639 1.271595 +v 0.240167 2.019639 1.259000 +v 0.318746 2.019639 1.241435 +v 0.396068 2.019639 1.218971 +v 0.471826 2.019639 1.191696 +v 0.545722 2.019639 1.159719 +v 0.617465 2.019639 1.123164 +v 0.686770 2.019639 1.082177 +v 0.753366 2.019639 1.036919 +v 0.816988 2.019639 0.987568 +v 0.877386 2.019639 0.934320 +v 0.934321 2.019639 0.877385 +v 0.987569 2.019639 0.816988 +v 1.036919 2.019639 0.753366 +v 1.082177 2.019639 0.686770 +v 1.123164 2.019639 0.617465 +v 1.159719 2.019639 0.545722 +v 1.191696 2.019639 0.471826 +v 1.218971 2.019639 0.396068 +v 1.241435 2.019639 0.318746 +v 1.259000 2.019639 0.240167 +v 1.271595 2.019639 0.160640 +v 1.279173 2.019639 0.080479 +v 1.281702 2.019639 0.000000 +v 1.215228 2.058902 -0.076456 +v 1.208029 2.058902 -0.152610 +v 1.196063 2.058902 -0.228161 +v 1.179377 2.058902 -0.302812 +v 1.158036 2.058902 -0.376269 +v 1.132124 2.058902 -0.448240 +v 1.101745 2.058902 -0.518442 +v 1.067018 2.058902 -0.586598 +v 1.028080 2.058902 -0.652439 +v 0.985084 2.058902 -0.715705 +v 0.938201 2.058902 -0.776147 +v 0.887615 2.058902 -0.833526 +v 0.833526 2.058902 -0.887615 +v 0.776147 2.058902 -0.938201 +v 0.715705 2.058902 -0.985084 +v 0.652439 2.058902 -1.028080 +v 0.586598 2.058902 -1.067018 +v 0.518442 2.058902 -1.101745 +v 0.448240 2.058902 -1.132124 +v 0.376269 2.058902 -1.158036 +v 0.302813 2.058902 -1.179377 +v 0.228161 2.058902 -1.196063 +v 0.152610 2.058902 -1.208029 +v 0.076456 2.058902 -1.215228 +v 0.000000 2.058902 -1.217631 +v -0.076456 2.058902 -1.215228 +v -0.152610 2.058902 -1.208029 +v -0.228161 2.058902 -1.196063 +v -0.302812 2.058902 -1.179377 +v -0.376269 2.058902 -1.158036 +v -0.448240 2.058902 -1.132125 +v -0.518442 2.058902 -1.101745 +v -0.586598 2.058902 -1.067018 +v -0.652439 2.058902 -1.028080 +v -0.715705 2.058902 -0.985084 +v -0.776147 2.058902 -0.938201 +v -0.833526 2.058902 -0.887615 +v -0.887615 2.058902 -0.833526 +v -0.938201 2.058902 -0.776147 +v -0.985084 2.058902 -0.715705 +v -1.028080 2.058902 -0.652439 +v -1.067018 2.058902 -0.586598 +v -1.101745 2.058902 -0.518442 +v -1.132125 2.058902 -0.448240 +v -1.158036 2.058902 -0.376269 +v -1.179377 2.058902 -0.302812 +v -1.196063 2.058902 -0.228161 +v -1.208029 2.058902 -0.152610 +v -1.215228 2.058902 -0.076456 +v -1.217631 2.058902 0.000000 +v -1.215228 2.058902 0.076456 +v -1.208030 2.058902 0.152610 +v -1.196063 2.058902 0.228161 +v -1.179377 2.058902 0.302813 +v -1.158036 2.058902 0.376269 +v -1.132125 2.058902 0.448240 +v -1.101745 2.058902 0.518442 +v -1.067018 2.058902 0.586598 +v -1.028080 2.058902 0.652439 +v -0.985084 2.058902 0.715706 +v -0.938201 2.058902 0.776147 +v -0.887615 2.058902 0.833526 +v -0.833526 2.058902 0.887615 +v -0.776147 2.058902 0.938201 +v -0.715706 2.058902 0.985084 +v -0.652439 2.058902 1.028080 +v -0.586598 2.058902 1.067018 +v -0.518442 2.058902 1.101746 +v -0.448240 2.058902 1.132125 +v -0.376269 2.058902 1.158036 +v -0.302812 2.058902 1.179377 +v -0.228161 2.058902 1.196064 +v -0.152610 2.058902 1.208030 +v -0.076456 2.058902 1.215228 +v 0.000000 2.058902 1.217631 +v 0.076456 2.058902 1.215228 +v 0.152610 2.058902 1.208030 +v 0.228161 2.058902 1.196064 +v 0.302813 2.058902 1.179377 +v 0.376269 2.058902 1.158036 +v 0.448240 2.058902 1.132125 +v 0.518442 2.058902 1.101746 +v 0.586598 2.058902 1.067018 +v 0.652440 2.058902 1.028080 +v 0.715706 2.058902 0.985084 +v 0.776148 2.058902 0.938201 +v 0.833526 2.058902 0.887615 +v 0.887615 2.058902 0.833526 +v 0.938201 2.058902 0.776147 +v 0.985084 2.058902 0.715706 +v 1.028080 2.058902 0.652439 +v 1.067018 2.058902 0.586598 +v 1.101746 2.058902 0.518442 +v 1.132125 2.058902 0.448240 +v 1.158036 2.058902 0.376269 +v 1.179377 2.058902 0.302813 +v 1.196064 2.058902 0.228161 +v 1.208030 2.058902 0.152610 +v 1.215229 2.058902 0.076456 +v 1.217631 2.058902 0.000000 +v 1.150084 2.096132 -0.072357 +v 1.143272 2.096132 -0.144429 +v 1.131947 2.096132 -0.215930 +v 1.116155 2.096132 -0.286580 +v 1.095958 2.096132 -0.356098 +v 1.071436 2.096132 -0.424211 +v 1.042685 2.096132 -0.490650 +v 1.009819 2.096132 -0.555153 +v 0.972968 2.096132 -0.617464 +v 0.932277 2.096132 -0.677339 +v 0.887907 2.096132 -0.734541 +v 0.840033 2.096132 -0.788843 +v 0.788843 2.096132 -0.840033 +v 0.734541 2.096132 -0.887907 +v 0.677339 2.096132 -0.932277 +v 0.617464 2.096132 -0.972968 +v 0.555153 2.096132 -1.009819 +v 0.490650 2.096132 -1.042685 +v 0.424211 2.096132 -1.071436 +v 0.356098 2.096132 -1.095958 +v 0.286580 2.096132 -1.116155 +v 0.215930 2.096132 -1.131947 +v 0.144429 2.096132 -1.143272 +v 0.072357 2.096132 -1.150084 +v 0.000000 2.096132 -1.152358 +v -0.072357 2.096132 -1.150084 +v -0.144429 2.096132 -1.143272 +v -0.215930 2.096132 -1.131947 +v -0.286580 2.096132 -1.116155 +v -0.356098 2.096132 -1.095958 +v -0.424211 2.096132 -1.071436 +v -0.490650 2.096132 -1.042685 +v -0.555153 2.096132 -1.009819 +v -0.617464 2.096132 -0.972968 +v -0.677339 2.096132 -0.932277 +v -0.734541 2.096132 -0.887907 +v -0.788844 2.096132 -0.840033 +v -0.840033 2.096132 -0.788843 +v -0.887907 2.096132 -0.734541 +v -0.932277 2.096132 -0.677339 +v -0.972968 2.096132 -0.617464 +v -1.009819 2.096132 -0.555153 +v -1.042685 2.096132 -0.490650 +v -1.071436 2.096132 -0.424211 +v -1.095958 2.096132 -0.356098 +v -1.116155 2.096132 -0.286580 +v -1.131947 2.096132 -0.215930 +v -1.143272 2.096132 -0.144429 +v -1.150084 2.096132 -0.072357 +v -1.152358 2.096132 0.000000 +v -1.150084 2.096132 0.072357 +v -1.143272 2.096132 0.144429 +v -1.131947 2.096132 0.215931 +v -1.116155 2.096132 0.286580 +v -1.095958 2.096132 0.356098 +v -1.071436 2.096132 0.424212 +v -1.042685 2.096132 0.490651 +v -1.009819 2.096132 0.555153 +v -0.972968 2.096132 0.617465 +v -0.932277 2.096132 0.677339 +v -0.887907 2.096132 0.734541 +v -0.840033 2.096132 0.788844 +v -0.788844 2.096132 0.840033 +v -0.734541 2.096132 0.887908 +v -0.677339 2.096132 0.932278 +v -0.617465 2.096132 0.972969 +v -0.555153 2.096132 1.009820 +v -0.490650 2.096132 1.042685 +v -0.424211 2.096132 1.071436 +v -0.356098 2.096132 1.095958 +v -0.286580 2.096132 1.116155 +v -0.215930 2.096132 1.131947 +v -0.144429 2.096132 1.143272 +v -0.072357 2.096132 1.150085 +v 0.000000 2.096132 1.152359 +v 0.072357 2.096132 1.150085 +v 0.144429 2.096132 1.143272 +v 0.215931 2.096132 1.131947 +v 0.286580 2.096132 1.116155 +v 0.356099 2.096132 1.095958 +v 0.424212 2.096132 1.071436 +v 0.490651 2.096132 1.042685 +v 0.555153 2.096132 1.009820 +v 0.617465 2.096132 0.972969 +v 0.677340 2.096132 0.932278 +v 0.734541 2.096132 0.887908 +v 0.788844 2.096132 0.840033 +v 0.840034 2.096132 0.788844 +v 0.887908 2.096132 0.734541 +v 0.932278 2.096132 0.677339 +v 0.972969 2.096132 0.617465 +v 1.009820 2.096132 0.555153 +v 1.042685 2.096132 0.490651 +v 1.071436 2.096132 0.424212 +v 1.095958 2.096132 0.356098 +v 1.116155 2.096132 0.286580 +v 1.131947 2.096132 0.215931 +v 1.143272 2.096132 0.144429 +v 1.150085 2.096132 0.072357 +v 1.152359 2.096132 0.000000 +v 1.083806 2.131295 -0.068187 +v 1.077386 2.131295 -0.136105 +v 1.066713 2.131295 -0.203486 +v 1.051832 2.131295 -0.270064 +v 1.032798 2.131295 -0.335576 +v 1.009689 2.131295 -0.399764 +v 0.982596 2.131295 -0.462374 +v 0.951624 2.131295 -0.523160 +v 0.916897 2.131295 -0.581880 +v 0.878551 2.131295 -0.638304 +v 0.836738 2.131295 -0.692210 +v 0.791622 2.131295 -0.743383 +v 0.743383 2.131295 -0.791622 +v 0.692210 2.131295 -0.836738 +v 0.638305 2.131295 -0.878551 +v 0.581880 2.131295 -0.916897 +v 0.523160 2.131295 -0.951624 +v 0.462374 2.131295 -0.982596 +v 0.399764 2.131295 -1.009689 +v 0.335577 2.131295 -1.032798 +v 0.270064 2.131295 -1.051831 +v 0.203487 2.131295 -1.066713 +v 0.136106 2.131295 -1.077386 +v 0.068187 2.131295 -1.083806 +v 0.000000 2.131295 -1.085949 +v -0.068187 2.131295 -1.083806 +v -0.136105 2.131295 -1.077386 +v -0.203486 2.131295 -1.066714 +v -0.270064 2.131295 -1.051832 +v -0.335577 2.131295 -1.032799 +v -0.399764 2.131295 -1.009690 +v -0.462374 2.131295 -0.982596 +v -0.523160 2.131295 -0.951624 +v -0.581880 2.131295 -0.916897 +v -0.638305 2.131295 -0.878551 +v -0.692210 2.131295 -0.836738 +v -0.743383 2.131295 -0.791622 +v -0.791623 2.131295 -0.743383 +v -0.836738 2.131295 -0.692210 +v -0.878551 2.131295 -0.638305 +v -0.916897 2.131295 -0.581880 +v -0.951624 2.131295 -0.523160 +v -0.982596 2.131295 -0.462374 +v -1.009690 2.131295 -0.399764 +v -1.032799 2.131295 -0.335577 +v -1.051832 2.131295 -0.270064 +v -1.066714 2.131295 -0.203486 +v -1.077386 2.131295 -0.136105 +v -1.083806 2.131295 -0.068187 +v -1.085949 2.131295 0.000000 +v -1.083806 2.131295 0.068187 +v -1.077386 2.131295 0.136106 +v -1.066714 2.131295 0.203487 +v -1.051832 2.131295 0.270065 +v -1.032799 2.131295 0.335577 +v -1.009690 2.131295 0.399765 +v -0.982596 2.131295 0.462375 +v -0.951624 2.131295 0.523160 +v -0.916897 2.131295 0.581881 +v -0.878551 2.131295 0.638305 +v -0.836738 2.131295 0.692210 +v -0.791623 2.131295 0.743383 +v -0.743383 2.131295 0.791623 +v -0.692210 2.131295 0.836738 +v -0.638305 2.131295 0.878551 +v -0.581880 2.131295 0.916897 +v -0.523160 2.131295 0.951624 +v -0.462374 2.131295 0.982596 +v -0.399764 2.131295 1.009690 +v -0.335577 2.131295 1.032799 +v -0.270064 2.131295 1.051832 +v -0.203486 2.131295 1.066714 +v -0.136105 2.131295 1.077386 +v -0.068187 2.131295 1.083806 +v 0.000000 2.131295 1.085949 +v 0.068187 2.131295 1.083806 +v 0.136106 2.131295 1.077386 +v 0.203487 2.131295 1.066714 +v 0.270065 2.131295 1.051832 +v 0.335577 2.131295 1.032799 +v 0.399765 2.131295 1.009690 +v 0.462375 2.131295 0.982596 +v 0.523160 2.131295 0.951624 +v 0.581881 2.131295 0.916897 +v 0.638305 2.131295 0.878551 +v 0.692210 2.131295 0.836738 +v 0.743383 2.131295 0.791623 +v 0.791623 2.131295 0.743383 +v 0.836738 2.131295 0.692210 +v 0.878551 2.131295 0.638305 +v 0.916897 2.131295 0.581881 +v 0.951624 2.131295 0.523160 +v 0.982596 2.131295 0.462375 +v 1.009690 2.131295 0.399765 +v 1.032799 2.131295 0.335577 +v 1.051832 2.131295 0.270065 +v 1.066714 2.131295 0.203487 +v 1.077386 2.131295 0.136106 +v 1.083806 2.131295 0.068187 +v 1.085949 2.131295 0.000000 +v 1.016457 2.164353 -0.063950 +v 1.010436 2.164353 -0.127648 +v 1.000427 2.164353 -0.190842 +v 0.986470 2.164353 -0.253282 +v 0.968620 2.164353 -0.314724 +v 0.946947 2.164353 -0.374923 +v 0.921537 2.164353 -0.433642 +v 0.892490 2.164353 -0.490650 +v 0.859920 2.164353 -0.545722 +v 0.823957 2.164353 -0.598640 +v 0.784742 2.164353 -0.649195 +v 0.742431 2.164353 -0.697189 +v 0.697189 2.164353 -0.742431 +v 0.649195 2.164353 -0.784742 +v 0.598640 2.164353 -0.823957 +v 0.545722 2.164353 -0.859920 +v 0.490650 2.164353 -0.892490 +v 0.433642 2.164353 -0.921537 +v 0.374923 2.164353 -0.946947 +v 0.314724 2.164353 -0.968620 +v 0.253283 2.164353 -0.986470 +v 0.190842 2.164353 -1.000427 +v 0.127648 2.164353 -1.010436 +v 0.063950 2.164353 -1.016458 +v 0.000000 2.164353 -1.018467 +v -0.063950 2.164353 -1.016458 +v -0.127648 2.164353 -1.010436 +v -0.190842 2.164353 -1.000427 +v -0.253282 2.164353 -0.986470 +v -0.314724 2.164353 -0.968620 +v -0.374923 2.164353 -0.946947 +v -0.433642 2.164353 -0.921537 +v -0.490650 2.164353 -0.892490 +v -0.545722 2.164353 -0.859920 +v -0.598640 2.164353 -0.823957 +v -0.649196 2.164353 -0.784742 +v -0.697189 2.164353 -0.742431 +v -0.742431 2.164353 -0.697189 +v -0.784743 2.164353 -0.649195 +v -0.823957 2.164353 -0.598640 +v -0.859920 2.164353 -0.545722 +v -0.892490 2.164353 -0.490650 +v -0.921537 2.164353 -0.433642 +v -0.946947 2.164353 -0.374923 +v -0.968620 2.164353 -0.314724 +v -0.986470 2.164353 -0.253282 +v -1.000427 2.164353 -0.190842 +v -1.010436 2.164353 -0.127648 +v -1.016458 2.164353 -0.063950 +v -1.018467 2.164353 0.000000 +v -1.016458 2.164353 0.063950 +v -1.010436 2.164353 0.127648 +v -1.000428 2.164353 0.190842 +v -0.986470 2.164353 0.253283 +v -0.968620 2.164353 0.314724 +v -0.946947 2.164353 0.374923 +v -0.921537 2.164353 0.433642 +v -0.892490 2.164353 0.490651 +v -0.859920 2.164353 0.545722 +v -0.823957 2.164353 0.598640 +v -0.784743 2.164353 0.649196 +v -0.742431 2.164353 0.697189 +v -0.697189 2.164353 0.742431 +v -0.649196 2.164353 0.784743 +v -0.598640 2.164353 0.823958 +v -0.545722 2.164353 0.859921 +v -0.490650 2.164353 0.892490 +v -0.433642 2.164353 0.921537 +v -0.374923 2.164353 0.946947 +v -0.314724 2.164353 0.968620 +v -0.253282 2.164353 0.986471 +v -0.190842 2.164353 1.000428 +v -0.127648 2.164353 1.010437 +v -0.063950 2.164353 1.016458 +v 0.000000 2.164353 1.018468 +v 0.063950 2.164353 1.016458 +v 0.127648 2.164353 1.010437 +v 0.190842 2.164353 1.000428 +v 0.253283 2.164353 0.986471 +v 0.314724 2.164353 0.968620 +v 0.374923 2.164353 0.946947 +v 0.433643 2.164353 0.921537 +v 0.490651 2.164353 0.892490 +v 0.545722 2.164353 0.859921 +v 0.598640 2.164353 0.823958 +v 0.649196 2.164353 0.784743 +v 0.697189 2.164353 0.742431 +v 0.742431 2.164353 0.697189 +v 0.784743 2.164353 0.649196 +v 0.823958 2.164353 0.598640 +v 0.859921 2.164353 0.545722 +v 0.892490 2.164353 0.490651 +v 0.921537 2.164353 0.433642 +v 0.946947 2.164353 0.374923 +v 0.968620 2.164353 0.314724 +v 0.986471 2.164353 0.253283 +v 1.000428 2.164353 0.190842 +v 1.010437 2.164353 0.127648 +v 1.016458 2.164353 0.063950 +v 1.018468 2.164353 0.000000 +v 0.948106 2.195276 -0.059650 +v 0.942490 2.195276 -0.119064 +v 0.933154 2.195276 -0.178009 +v 0.920135 2.195276 -0.236250 +v 0.903485 2.195276 -0.293560 +v 0.883270 2.195276 -0.349711 +v 0.859568 2.195276 -0.404482 +v 0.832474 2.195276 -0.457657 +v 0.802095 2.195276 -0.509025 +v 0.768550 2.195276 -0.558385 +v 0.731973 2.195276 -0.605540 +v 0.692506 2.195276 -0.650307 +v 0.650307 2.195276 -0.692506 +v 0.605540 2.195276 -0.731973 +v 0.558385 2.195276 -0.768550 +v 0.509025 2.195276 -0.802095 +v 0.457657 2.195276 -0.832474 +v 0.404482 2.195276 -0.859568 +v 0.349711 2.195276 -0.883270 +v 0.293560 2.195276 -0.903485 +v 0.236251 2.195276 -0.920135 +v 0.178009 2.195276 -0.933154 +v 0.119064 2.195276 -0.942490 +v 0.059650 2.195276 -0.948106 +v 0.000000 2.195276 -0.949981 +v -0.059650 2.195276 -0.948106 +v -0.119064 2.195276 -0.942490 +v -0.178009 2.195276 -0.933154 +v -0.236251 2.195276 -0.920135 +v -0.293560 2.195276 -0.903485 +v -0.349711 2.195276 -0.883270 +v -0.404482 2.195276 -0.859568 +v -0.457657 2.195276 -0.832474 +v -0.509025 2.195276 -0.802095 +v -0.558385 2.195276 -0.768550 +v -0.605541 2.195276 -0.731973 +v -0.650307 2.195276 -0.692506 +v -0.692506 2.195276 -0.650307 +v -0.731973 2.195276 -0.605540 +v -0.768551 2.195276 -0.558385 +v -0.802095 2.195276 -0.509025 +v -0.832474 2.195276 -0.457657 +v -0.859568 2.195276 -0.404482 +v -0.883270 2.195276 -0.349711 +v -0.903485 2.195276 -0.293560 +v -0.920135 2.195276 -0.236251 +v -0.933154 2.195276 -0.178009 +v -0.942490 2.195276 -0.119064 +v -0.948106 2.195276 -0.059650 +v -0.949981 2.195276 0.000000 +v -0.948106 2.195276 0.059650 +v -0.942490 2.195276 0.119064 +v -0.933154 2.195276 0.178009 +v -0.920135 2.195276 0.236251 +v -0.903485 2.195276 0.293560 +v -0.883270 2.195276 0.349711 +v -0.859568 2.195276 0.404482 +v -0.832475 2.195276 0.457657 +v -0.802095 2.195276 0.509025 +v -0.768551 2.195276 0.558385 +v -0.731973 2.195276 0.605541 +v -0.692506 2.195276 0.650307 +v -0.650307 2.195276 0.692506 +v -0.605541 2.195276 0.731973 +v -0.558385 2.195276 0.768551 +v -0.509025 2.195276 0.802096 +v -0.457657 2.195276 0.832475 +v -0.404482 2.195276 0.859568 +v -0.349711 2.195276 0.883270 +v -0.293560 2.195276 0.903486 +v -0.236251 2.195276 0.920136 +v -0.178009 2.195276 0.933154 +v -0.119064 2.195276 0.942490 +v -0.059650 2.195276 0.948106 +v 0.000000 2.195276 0.949981 +v 0.059650 2.195276 0.948106 +v 0.119064 2.195276 0.942490 +v 0.178009 2.195276 0.933154 +v 0.236251 2.195276 0.920136 +v 0.293560 2.195276 0.903486 +v 0.349711 2.195276 0.883270 +v 0.404482 2.195276 0.859569 +v 0.457657 2.195276 0.832475 +v 0.509025 2.195276 0.802096 +v 0.558385 2.195276 0.768551 +v 0.605541 2.195276 0.731973 +v 0.650307 2.195276 0.692506 +v 0.692507 2.195276 0.650307 +v 0.731973 2.195276 0.605541 +v 0.768551 2.195276 0.558385 +v 0.802096 2.195276 0.509025 +v 0.832475 2.195276 0.457657 +v 0.859569 2.195276 0.404482 +v 0.883270 2.195276 0.349711 +v 0.903486 2.195276 0.293560 +v 0.920136 2.195276 0.236251 +v 0.933154 2.195276 0.178009 +v 0.942490 2.195276 0.119064 +v 0.948107 2.195276 0.059650 +v 0.949981 2.195276 0.000000 +v 0.878819 2.224033 -0.055291 +v 0.873613 2.224033 -0.110363 +v 0.864959 2.224033 -0.165000 +v 0.852892 2.224033 -0.218985 +v 0.837459 2.224033 -0.272107 +v 0.818721 2.224033 -0.324154 +v 0.796751 2.224033 -0.374923 +v 0.771638 2.224033 -0.424211 +v 0.743478 2.224033 -0.471826 +v 0.712385 2.224033 -0.517578 +v 0.678480 2.224033 -0.561288 +v 0.641898 2.224033 -0.602782 +v 0.602782 2.224033 -0.641898 +v 0.561288 2.224033 -0.678480 +v 0.517578 2.224033 -0.712385 +v 0.471826 2.224033 -0.743478 +v 0.424211 2.224033 -0.771637 +v 0.374923 2.224033 -0.796751 +v 0.324154 2.224033 -0.818721 +v 0.272107 2.224033 -0.837459 +v 0.218986 2.224033 -0.852892 +v 0.165000 2.224033 -0.864959 +v 0.110363 2.224033 -0.873613 +v 0.055291 2.224033 -0.878819 +v 0.000000 2.224033 -0.880557 +v -0.055291 2.224033 -0.878819 +v -0.110363 2.224033 -0.873613 +v -0.165000 2.224033 -0.864960 +v -0.218985 2.224033 -0.852892 +v -0.272107 2.224033 -0.837459 +v -0.324154 2.224033 -0.818721 +v -0.374923 2.224033 -0.796751 +v -0.424211 2.224033 -0.771638 +v -0.471826 2.224033 -0.743478 +v -0.517578 2.224033 -0.712385 +v -0.561288 2.224033 -0.678480 +v -0.602783 2.224033 -0.641898 +v -0.641898 2.224033 -0.602782 +v -0.678481 2.224033 -0.561288 +v -0.712385 2.224033 -0.517578 +v -0.743479 2.224033 -0.471826 +v -0.771638 2.224033 -0.424211 +v -0.796751 2.224033 -0.374923 +v -0.818721 2.224033 -0.324154 +v -0.837459 2.224033 -0.272107 +v -0.852892 2.224033 -0.218985 +v -0.864960 2.224033 -0.165000 +v -0.873613 2.224033 -0.110363 +v -0.878819 2.224033 -0.055291 +v -0.880557 2.224033 0.000000 +v -0.878819 2.224033 0.055291 +v -0.873613 2.224033 0.110363 +v -0.864960 2.224033 0.165000 +v -0.852892 2.224033 0.218986 +v -0.837459 2.224033 0.272107 +v -0.818721 2.224033 0.324155 +v -0.796751 2.224033 0.374923 +v -0.771638 2.224033 0.424212 +v -0.743479 2.224033 0.471826 +v -0.712385 2.224033 0.517578 +v -0.678481 2.224033 0.561288 +v -0.641898 2.224033 0.602783 +v -0.602783 2.224033 0.641898 +v -0.561288 2.224033 0.678481 +v -0.517578 2.224033 0.712385 +v -0.471826 2.224033 0.743479 +v -0.424211 2.224033 0.771638 +v -0.374923 2.224033 0.796752 +v -0.324154 2.224033 0.818721 +v -0.272107 2.224033 0.837459 +v -0.218985 2.224033 0.852892 +v -0.165000 2.224033 0.864960 +v -0.110363 2.224033 0.873613 +v -0.055291 2.224033 0.878819 +v 0.000000 2.224033 0.880557 +v 0.055291 2.224033 0.878819 +v 0.110363 2.224033 0.873613 +v 0.165000 2.224033 0.864960 +v 0.218986 2.224033 0.852893 +v 0.272107 2.224033 0.837459 +v 0.324155 2.224033 0.818721 +v 0.374923 2.224033 0.796752 +v 0.424212 2.224033 0.771638 +v 0.471826 2.224033 0.743479 +v 0.517578 2.224033 0.712385 +v 0.561288 2.224033 0.678481 +v 0.602783 2.224033 0.641898 +v 0.641898 2.224033 0.602783 +v 0.678481 2.224033 0.561288 +v 0.712386 2.224033 0.517578 +v 0.743479 2.224033 0.471826 +v 0.771638 2.224033 0.424212 +v 0.796752 2.224033 0.374923 +v 0.818721 2.224033 0.324155 +v 0.837459 2.224033 0.272107 +v 0.852893 2.224033 0.218986 +v 0.864960 2.224033 0.165000 +v 0.873613 2.224033 0.110363 +v 0.878819 2.224033 0.055291 +v 0.880557 2.224033 0.000000 +v 0.808665 2.250594 -0.050877 +v 0.803874 2.250594 -0.101553 +v 0.795912 2.250594 -0.151828 +v 0.784808 2.250594 -0.201504 +v 0.770606 2.250594 -0.250385 +v 0.753364 2.250594 -0.298278 +v 0.733148 2.250594 -0.344993 +v 0.710039 2.250594 -0.390347 +v 0.684128 2.250594 -0.434161 +v 0.655517 2.250594 -0.476261 +v 0.624319 2.250594 -0.516481 +v 0.590657 2.250594 -0.554664 +v 0.554664 2.250594 -0.590657 +v 0.516481 2.250594 -0.624319 +v 0.476261 2.250594 -0.655517 +v 0.434161 2.250594 -0.684128 +v 0.390347 2.250594 -0.710039 +v 0.344993 2.250594 -0.733148 +v 0.298278 2.250594 -0.753364 +v 0.250385 2.250594 -0.770606 +v 0.201504 2.250594 -0.784808 +v 0.151828 2.250594 -0.795912 +v 0.101553 2.250594 -0.803874 +v 0.050877 2.250594 -0.808665 +v 0.000000 2.250594 -0.810264 +v -0.050877 2.250594 -0.808665 +v -0.101553 2.250594 -0.803874 +v -0.151828 2.250594 -0.795912 +v -0.201504 2.250594 -0.784808 +v -0.250385 2.250594 -0.770606 +v -0.298278 2.250594 -0.753364 +v -0.344993 2.250594 -0.733148 +v -0.390347 2.250594 -0.710039 +v -0.434161 2.250594 -0.684128 +v -0.476261 2.250594 -0.655517 +v -0.516481 2.250594 -0.624319 +v -0.554664 2.250594 -0.590657 +v -0.590657 2.250594 -0.554664 +v -0.624319 2.250594 -0.516481 +v -0.655517 2.250594 -0.476261 +v -0.684128 2.250594 -0.434161 +v -0.710039 2.250594 -0.390347 +v -0.733148 2.250594 -0.344993 +v -0.753364 2.250594 -0.298278 +v -0.770606 2.250594 -0.250385 +v -0.784808 2.250594 -0.201504 +v -0.795912 2.250594 -0.151828 +v -0.803874 2.250594 -0.101553 +v -0.808665 2.250594 -0.050877 +v -0.810264 2.250594 0.000000 +v -0.808665 2.250594 0.050877 +v -0.803874 2.250594 0.101553 +v -0.795912 2.250594 0.151828 +v -0.784808 2.250594 0.201504 +v -0.770607 2.250594 0.250385 +v -0.753364 2.250594 0.298278 +v -0.733148 2.250594 0.344994 +v -0.710039 2.250594 0.390348 +v -0.684128 2.250594 0.434161 +v -0.655517 2.250594 0.476261 +v -0.624319 2.250594 0.516482 +v -0.590657 2.250594 0.554664 +v -0.554664 2.250594 0.590657 +v -0.516481 2.250594 0.624319 +v -0.476261 2.250594 0.655517 +v -0.434161 2.250594 0.684128 +v -0.390347 2.250594 0.710040 +v -0.344993 2.250594 0.733149 +v -0.298278 2.250594 0.753364 +v -0.250385 2.250594 0.770607 +v -0.201504 2.250594 0.784808 +v -0.151828 2.250594 0.795912 +v -0.101553 2.250594 0.803875 +v -0.050877 2.250594 0.808665 +v 0.000000 2.250594 0.810264 +v 0.050877 2.250594 0.808665 +v 0.101553 2.250594 0.803875 +v 0.151828 2.250594 0.795912 +v 0.201505 2.250594 0.784808 +v 0.250385 2.250594 0.770607 +v 0.298278 2.250594 0.753364 +v 0.344994 2.250594 0.733149 +v 0.390348 2.250594 0.710040 +v 0.434161 2.250594 0.684128 +v 0.476261 2.250594 0.655517 +v 0.516482 2.250594 0.624319 +v 0.554664 2.250594 0.590657 +v 0.590657 2.250594 0.554664 +v 0.624319 2.250594 0.516482 +v 0.655517 2.250594 0.476261 +v 0.684128 2.250594 0.434161 +v 0.710040 2.250594 0.390348 +v 0.733149 2.250594 0.344994 +v 0.753364 2.250594 0.298278 +v 0.770607 2.250594 0.250385 +v 0.784808 2.250594 0.201504 +v 0.795912 2.250594 0.151828 +v 0.803875 2.250594 0.101553 +v 0.808665 2.250594 0.050877 +v 0.810264 2.250594 0.000000 +v 0.737712 2.274935 -0.046413 +v 0.733342 2.274935 -0.092643 +v 0.726078 2.274935 -0.138507 +v 0.715948 2.274935 -0.183824 +v 0.702993 2.274935 -0.228416 +v 0.687264 2.274935 -0.272107 +v 0.668822 2.274935 -0.314724 +v 0.647740 2.274935 -0.356098 +v 0.624103 2.274935 -0.396067 +v 0.598002 2.274935 -0.434474 +v 0.569541 2.274935 -0.471165 +v 0.538832 2.274935 -0.505997 +v 0.505997 2.274935 -0.538832 +v 0.471165 2.274935 -0.569541 +v 0.434474 2.274935 -0.598002 +v 0.396068 2.274935 -0.624103 +v 0.356098 2.274935 -0.647740 +v 0.314724 2.274935 -0.668822 +v 0.272107 2.274935 -0.687264 +v 0.228416 2.274935 -0.702993 +v 0.183824 2.274935 -0.715948 +v 0.138507 2.274935 -0.726078 +v 0.092643 2.274935 -0.733342 +v 0.046413 2.274935 -0.737712 +v 0.000000 2.274935 -0.739171 +v -0.046413 2.274935 -0.737712 +v -0.092643 2.274935 -0.733342 +v -0.138507 2.274935 -0.726078 +v -0.183824 2.274935 -0.715948 +v -0.228416 2.274935 -0.702993 +v -0.272107 2.274935 -0.687264 +v -0.314724 2.274935 -0.668822 +v -0.356098 2.274935 -0.647740 +v -0.396068 2.274935 -0.624103 +v -0.434474 2.274935 -0.598002 +v -0.471165 2.274935 -0.569541 +v -0.505997 2.274935 -0.538832 +v -0.538832 2.274935 -0.505997 +v -0.569541 2.274935 -0.471165 +v -0.598002 2.274935 -0.434474 +v -0.624103 2.274935 -0.396068 +v -0.647740 2.274935 -0.356098 +v -0.668822 2.274935 -0.314724 +v -0.687264 2.274935 -0.272107 +v -0.702993 2.274935 -0.228416 +v -0.715948 2.274935 -0.183824 +v -0.726078 2.274935 -0.138507 +v -0.733342 2.274935 -0.092643 +v -0.737712 2.274935 -0.046413 +v -0.739171 2.274935 0.000000 +v -0.737712 2.274935 0.046413 +v -0.733342 2.274935 0.092643 +v -0.726078 2.274935 0.138507 +v -0.715949 2.274935 0.183824 +v -0.702993 2.274935 0.228416 +v -0.687264 2.274935 0.272107 +v -0.668822 2.274935 0.314724 +v -0.647740 2.274935 0.356098 +v -0.624103 2.274935 0.396068 +v -0.598002 2.274935 0.434474 +v -0.569541 2.274935 0.471165 +v -0.538832 2.274935 0.505997 +v -0.505997 2.274935 0.538833 +v -0.471165 2.274935 0.569541 +v -0.434474 2.274935 0.598002 +v -0.396068 2.274935 0.624103 +v -0.356098 2.274935 0.647741 +v -0.314724 2.274935 0.668822 +v -0.272107 2.274935 0.687264 +v -0.228416 2.274935 0.702993 +v -0.183824 2.274935 0.715949 +v -0.138507 2.274935 0.726078 +v -0.092643 2.274935 0.733343 +v -0.046413 2.274935 0.737713 +v 0.000000 2.274935 0.739171 +v 0.046413 2.274935 0.737713 +v 0.092643 2.274935 0.733343 +v 0.138507 2.274935 0.726078 +v 0.183824 2.274935 0.715949 +v 0.228417 2.274935 0.702994 +v 0.272107 2.274935 0.687264 +v 0.314724 2.274935 0.668822 +v 0.356099 2.274935 0.647741 +v 0.396068 2.274935 0.624103 +v 0.434474 2.274935 0.598002 +v 0.471166 2.274935 0.569541 +v 0.505998 2.274935 0.538833 +v 0.538833 2.274935 0.505997 +v 0.569541 2.274935 0.471165 +v 0.598002 2.274935 0.434474 +v 0.624103 2.274935 0.396068 +v 0.647741 2.274935 0.356098 +v 0.668822 2.274935 0.314724 +v 0.687264 2.274935 0.272107 +v 0.702994 2.274935 0.228416 +v 0.715949 2.274935 0.183824 +v 0.726078 2.274935 0.138507 +v 0.733343 2.274935 0.092643 +v 0.737713 2.274935 0.046413 +v 0.739171 2.274935 0.000000 +v 0.666032 2.297030 -0.041903 +v 0.662086 2.297030 -0.083641 +v 0.655528 2.297030 -0.125049 +v 0.646383 2.297030 -0.165963 +v 0.634686 2.297030 -0.206222 +v 0.620485 2.297030 -0.245667 +v 0.603835 2.297030 -0.284143 +v 0.584802 2.297030 -0.321498 +v 0.563461 2.297030 -0.357583 +v 0.539896 2.297030 -0.392258 +v 0.514201 2.297030 -0.425384 +v 0.486476 2.297030 -0.456832 +v 0.456832 2.297030 -0.486476 +v 0.425384 2.297030 -0.514201 +v 0.392258 2.297030 -0.539896 +v 0.357583 2.297030 -0.563461 +v 0.321498 2.297030 -0.584802 +v 0.284143 2.297030 -0.603835 +v 0.245667 2.297030 -0.620485 +v 0.206222 2.297030 -0.634686 +v 0.165963 2.297030 -0.646383 +v 0.125049 2.297030 -0.655528 +v 0.083641 2.297030 -0.662086 +v 0.041903 2.297030 -0.666032 +v 0.000000 2.297030 -0.667349 +v -0.041903 2.297030 -0.666032 +v -0.083641 2.297030 -0.662086 +v -0.125049 2.297030 -0.655528 +v -0.165963 2.297030 -0.646383 +v -0.206222 2.297030 -0.634686 +v -0.245667 2.297030 -0.620485 +v -0.284143 2.297030 -0.603835 +v -0.321498 2.297030 -0.584802 +v -0.357583 2.297030 -0.563461 +v -0.392258 2.297030 -0.539896 +v -0.425384 2.297030 -0.514201 +v -0.456832 2.297030 -0.486476 +v -0.486476 2.297030 -0.456832 +v -0.514201 2.297030 -0.425384 +v -0.539896 2.297030 -0.392258 +v -0.563461 2.297030 -0.357583 +v -0.584802 2.297030 -0.321498 +v -0.603835 2.297030 -0.284143 +v -0.620485 2.297030 -0.245667 +v -0.634686 2.297030 -0.206222 +v -0.646383 2.297030 -0.165963 +v -0.655528 2.297030 -0.125049 +v -0.662086 2.297030 -0.083641 +v -0.666032 2.297030 -0.041903 +v -0.667349 2.297030 0.000000 +v -0.666032 2.297030 0.041903 +v -0.662087 2.297030 0.083641 +v -0.655528 2.297030 0.125049 +v -0.646383 2.297030 0.165963 +v -0.634686 2.297030 0.206222 +v -0.620485 2.297030 0.245668 +v -0.603835 2.297030 0.284143 +v -0.584802 2.297030 0.321498 +v -0.563461 2.297030 0.357583 +v -0.539896 2.297030 0.392258 +v -0.514201 2.297030 0.425384 +v -0.486476 2.297030 0.456832 +v -0.456832 2.297030 0.486476 +v -0.425384 2.297030 0.514201 +v -0.392258 2.297030 0.539897 +v -0.357583 2.297030 0.563461 +v -0.321498 2.297030 0.584802 +v -0.284143 2.297030 0.603835 +v -0.245667 2.297030 0.620485 +v -0.206222 2.297030 0.634687 +v -0.165963 2.297030 0.646383 +v -0.125049 2.297030 0.655528 +v -0.083641 2.297030 0.662087 +v -0.041903 2.297030 0.666032 +v 0.000000 2.297030 0.667349 +v 0.041903 2.297030 0.666032 +v 0.083641 2.297030 0.662087 +v 0.125049 2.297030 0.655528 +v 0.165963 2.297030 0.646383 +v 0.206222 2.297030 0.634687 +v 0.245668 2.297030 0.620485 +v 0.284143 2.297030 0.603835 +v 0.321498 2.297030 0.584802 +v 0.357584 2.297030 0.563461 +v 0.392258 2.297030 0.539897 +v 0.425384 2.297030 0.514201 +v 0.456832 2.297030 0.486476 +v 0.486477 2.297030 0.456832 +v 0.514201 2.297030 0.425384 +v 0.539897 2.297030 0.392258 +v 0.563461 2.297030 0.357583 +v 0.584802 2.297030 0.321498 +v 0.603835 2.297030 0.284143 +v 0.620485 2.297030 0.245668 +v 0.634687 2.297030 0.206222 +v 0.646383 2.297030 0.165963 +v 0.655528 2.297030 0.125049 +v 0.662087 2.297030 0.083641 +v 0.666032 2.297030 0.041903 +v 0.667349 2.297030 0.000000 +v 0.593694 2.316859 -0.037352 +v 0.590177 2.316859 -0.074557 +v 0.584331 2.316859 -0.111467 +v 0.576179 2.316859 -0.147938 +v 0.565753 2.316859 -0.183824 +v 0.553094 2.316859 -0.218985 +v 0.538253 2.316859 -0.253282 +v 0.521287 2.316859 -0.286580 +v 0.502264 2.316859 -0.318746 +v 0.481258 2.316859 -0.349655 +v 0.458354 2.316859 -0.379183 +v 0.433640 2.316859 -0.407215 +v 0.407215 2.316859 -0.433640 +v 0.379183 2.316859 -0.458354 +v 0.349655 2.316859 -0.481258 +v 0.318746 2.316859 -0.502264 +v 0.286580 2.316859 -0.521287 +v 0.253282 2.316859 -0.538253 +v 0.218986 2.316859 -0.553094 +v 0.183824 2.316859 -0.565753 +v 0.147938 2.316859 -0.576179 +v 0.111467 2.316859 -0.584331 +v 0.074557 2.316859 -0.590177 +v 0.037352 2.316859 -0.593694 +v 0.000000 2.316859 -0.594868 +v -0.037352 2.316859 -0.593694 +v -0.074557 2.316859 -0.590177 +v -0.111467 2.316859 -0.584331 +v -0.147938 2.316859 -0.576179 +v -0.183824 2.316859 -0.565753 +v -0.218985 2.316859 -0.553094 +v -0.253282 2.316859 -0.538253 +v -0.286580 2.316859 -0.521287 +v -0.318746 2.316859 -0.502264 +v -0.349655 2.316859 -0.481258 +v -0.379183 2.316859 -0.458354 +v -0.407215 2.316859 -0.433640 +v -0.433640 2.316859 -0.407215 +v -0.458354 2.316859 -0.379183 +v -0.481258 2.316859 -0.349655 +v -0.502264 2.316859 -0.318746 +v -0.521287 2.316859 -0.286580 +v -0.538253 2.316859 -0.253282 +v -0.553094 2.316859 -0.218985 +v -0.565753 2.316859 -0.183824 +v -0.576179 2.316859 -0.147938 +v -0.584331 2.316859 -0.111467 +v -0.590177 2.316859 -0.074557 +v -0.593694 2.316859 -0.037352 +v -0.594868 2.316859 0.000000 +v -0.593694 2.316859 0.037352 +v -0.590177 2.316859 0.074557 +v -0.584331 2.316859 0.111467 +v -0.576179 2.316859 0.147938 +v -0.565753 2.316859 0.183824 +v -0.553094 2.316859 0.218986 +v -0.538253 2.316859 0.253283 +v -0.521287 2.316859 0.286580 +v -0.502264 2.316859 0.318746 +v -0.481258 2.316859 0.349655 +v -0.458354 2.316859 0.379183 +v -0.433640 2.316859 0.407215 +v -0.407215 2.316859 0.433640 +v -0.379183 2.316859 0.458354 +v -0.349655 2.316859 0.481258 +v -0.318746 2.316859 0.502264 +v -0.286580 2.316859 0.521287 +v -0.253282 2.316859 0.538253 +v -0.218986 2.316859 0.553094 +v -0.183824 2.316859 0.565753 +v -0.147938 2.316859 0.576179 +v -0.111467 2.316859 0.584331 +v -0.074557 2.316859 0.590177 +v -0.037352 2.316859 0.593694 +v 0.000000 2.316859 0.594868 +v 0.037352 2.316859 0.593694 +v 0.074557 2.316859 0.590177 +v 0.111467 2.316859 0.584331 +v 0.147938 2.316859 0.576179 +v 0.183824 2.316859 0.565753 +v 0.218986 2.316859 0.553094 +v 0.253283 2.316859 0.538253 +v 0.286580 2.316859 0.521287 +v 0.318746 2.316859 0.502264 +v 0.349655 2.316859 0.481258 +v 0.379183 2.316859 0.458354 +v 0.407215 2.316859 0.433640 +v 0.433640 2.316859 0.407215 +v 0.458354 2.316859 0.379183 +v 0.481259 2.316859 0.349655 +v 0.502264 2.316859 0.318746 +v 0.521287 2.316859 0.286580 +v 0.538253 2.316859 0.253283 +v 0.553094 2.316859 0.218986 +v 0.565753 2.316859 0.183824 +v 0.576179 2.316859 0.147938 +v 0.584331 2.316859 0.111467 +v 0.590177 2.316859 0.074557 +v 0.593694 2.316859 0.037352 +v 0.594868 2.316859 0.000000 +v 0.520770 2.334401 -0.032764 +v 0.517686 2.334401 -0.065399 +v 0.512558 2.334401 -0.097776 +v 0.505407 2.334401 -0.129766 +v 0.496261 2.334401 -0.161245 +v 0.485157 2.334401 -0.192087 +v 0.472139 2.334401 -0.222172 +v 0.457257 2.334401 -0.251379 +v 0.440570 2.334401 -0.279594 +v 0.422145 2.334401 -0.306706 +v 0.402054 2.334401 -0.332608 +v 0.380376 2.334401 -0.357197 +v 0.357197 2.334401 -0.380376 +v 0.332608 2.334401 -0.402054 +v 0.306706 2.334401 -0.422145 +v 0.279594 2.334401 -0.440570 +v 0.251379 2.334401 -0.457257 +v 0.222172 2.334401 -0.472139 +v 0.192087 2.334401 -0.485157 +v 0.161245 2.334401 -0.496261 +v 0.129766 2.334401 -0.505407 +v 0.097776 2.334401 -0.512558 +v 0.065399 2.334401 -0.517686 +v 0.032764 2.334401 -0.520770 +v 0.000000 2.334401 -0.521800 +v -0.032764 2.334401 -0.520770 +v -0.065399 2.334401 -0.517686 +v -0.097776 2.334401 -0.512558 +v -0.129766 2.334401 -0.505407 +v -0.161245 2.334401 -0.496261 +v -0.192087 2.334401 -0.485157 +v -0.222172 2.334401 -0.472139 +v -0.251379 2.334401 -0.457257 +v -0.279594 2.334401 -0.440570 +v -0.306706 2.334401 -0.422145 +v -0.332608 2.334401 -0.402054 +v -0.357197 2.334401 -0.380376 +v -0.380376 2.334401 -0.357197 +v -0.402054 2.334401 -0.332608 +v -0.422145 2.334401 -0.306706 +v -0.440570 2.334401 -0.279594 +v -0.457257 2.334401 -0.251379 +v -0.472139 2.334401 -0.222172 +v -0.485157 2.334401 -0.192087 +v -0.496261 2.334401 -0.161245 +v -0.505407 2.334401 -0.129766 +v -0.512558 2.334401 -0.097776 +v -0.517686 2.334401 -0.065399 +v -0.520771 2.334401 -0.032764 +v -0.521800 2.334401 0.000000 +v -0.520771 2.334401 0.032764 +v -0.517686 2.334401 0.065399 +v -0.512558 2.334401 0.097776 +v -0.505407 2.334401 0.129766 +v -0.496262 2.334401 0.161245 +v -0.485158 2.334401 0.192088 +v -0.472139 2.334401 0.222172 +v -0.457257 2.334401 0.251379 +v -0.440570 2.334401 0.279595 +v -0.422145 2.334401 0.306707 +v -0.402054 2.334401 0.332608 +v -0.380376 2.334401 0.357197 +v -0.357197 2.334401 0.380376 +v -0.332608 2.334401 0.402054 +v -0.306706 2.334401 0.422145 +v -0.279595 2.334401 0.440571 +v -0.251379 2.334401 0.457257 +v -0.222172 2.334401 0.472139 +v -0.192087 2.334401 0.485158 +v -0.161245 2.334401 0.496262 +v -0.129766 2.334401 0.505407 +v -0.097776 2.334401 0.512558 +v -0.065399 2.334401 0.517686 +v -0.032764 2.334401 0.520771 +v 0.000000 2.334401 0.521800 +v 0.032764 2.334401 0.520771 +v 0.065399 2.334401 0.517686 +v 0.097776 2.334401 0.512558 +v 0.129767 2.334401 0.505407 +v 0.161245 2.334401 0.496262 +v 0.192088 2.334401 0.485158 +v 0.222172 2.334401 0.472139 +v 0.251379 2.334401 0.457257 +v 0.279595 2.334401 0.440571 +v 0.306707 2.334401 0.422145 +v 0.332608 2.334401 0.402054 +v 0.357197 2.334401 0.380376 +v 0.380376 2.334401 0.357197 +v 0.402054 2.334401 0.332608 +v 0.422145 2.334401 0.306707 +v 0.440571 2.334401 0.279595 +v 0.457257 2.334401 0.251379 +v 0.472139 2.334401 0.222172 +v 0.485158 2.334401 0.192088 +v 0.496262 2.334401 0.161245 +v 0.505407 2.334401 0.129766 +v 0.512558 2.334401 0.097776 +v 0.517686 2.334401 0.065399 +v 0.520771 2.334401 0.032764 +v 0.521800 2.334401 0.000000 +v 0.447333 2.349639 -0.028144 +v 0.444683 2.349639 -0.056177 +v 0.440278 2.349639 -0.083988 +v 0.434136 2.349639 -0.111467 +v 0.426280 2.349639 -0.138507 +v 0.416742 2.349639 -0.165000 +v 0.405559 2.349639 -0.190842 +v 0.392776 2.349639 -0.215930 +v 0.378442 2.349639 -0.240167 +v 0.362615 2.349639 -0.263456 +v 0.345357 2.349639 -0.285704 +v 0.326736 2.349639 -0.306826 +v 0.306826 2.349639 -0.326736 +v 0.285705 2.349639 -0.345357 +v 0.263456 2.349639 -0.362615 +v 0.240167 2.349639 -0.378442 +v 0.215930 2.349639 -0.392776 +v 0.190842 2.349639 -0.405559 +v 0.165000 2.349639 -0.416742 +v 0.138507 2.349639 -0.426280 +v 0.111467 2.349639 -0.434136 +v 0.083988 2.349639 -0.440278 +v 0.056177 2.349639 -0.444683 +v 0.028144 2.349639 -0.447333 +v 0.000000 2.349639 -0.448217 +v -0.028144 2.349639 -0.447333 +v -0.056177 2.349639 -0.444683 +v -0.083988 2.349639 -0.440278 +v -0.111467 2.349639 -0.434136 +v -0.138507 2.349639 -0.426280 +v -0.165000 2.349639 -0.416742 +v -0.190842 2.349639 -0.405559 +v -0.215930 2.349639 -0.392776 +v -0.240167 2.349639 -0.378442 +v -0.263456 2.349639 -0.362615 +v -0.285705 2.349639 -0.345357 +v -0.306826 2.349639 -0.326736 +v -0.326736 2.349639 -0.306826 +v -0.345357 2.349639 -0.285705 +v -0.362616 2.349639 -0.263456 +v -0.378442 2.349639 -0.240167 +v -0.392776 2.349639 -0.215930 +v -0.405559 2.349639 -0.190842 +v -0.416742 2.349639 -0.165000 +v -0.426280 2.349639 -0.138507 +v -0.434136 2.349639 -0.111467 +v -0.440278 2.349639 -0.083988 +v -0.444683 2.349639 -0.056177 +v -0.447333 2.349639 -0.028144 +v -0.448217 2.349639 0.000000 +v -0.447333 2.349639 0.028144 +v -0.444683 2.349639 0.056177 +v -0.440278 2.349639 0.083988 +v -0.434136 2.349639 0.111467 +v -0.426280 2.349639 0.138507 +v -0.416742 2.349639 0.165000 +v -0.405559 2.349639 0.190842 +v -0.392776 2.349639 0.215930 +v -0.378442 2.349639 0.240167 +v -0.362616 2.349639 0.263456 +v -0.345357 2.349639 0.285705 +v -0.326736 2.349639 0.306826 +v -0.306826 2.349639 0.326737 +v -0.285705 2.349639 0.345358 +v -0.263456 2.349639 0.362616 +v -0.240167 2.349639 0.378443 +v -0.215930 2.349639 0.392776 +v -0.190842 2.349639 0.405559 +v -0.165000 2.349639 0.416742 +v -0.138507 2.349639 0.426280 +v -0.111467 2.349639 0.434136 +v -0.083988 2.349639 0.440278 +v -0.056177 2.349639 0.444683 +v -0.028144 2.349639 0.447333 +v 0.000000 2.349639 0.448218 +v 0.028144 2.349639 0.447333 +v 0.056177 2.349639 0.444683 +v 0.083988 2.349639 0.440278 +v 0.111467 2.349639 0.434136 +v 0.138507 2.349639 0.426280 +v 0.165000 2.349639 0.416742 +v 0.190842 2.349639 0.405559 +v 0.215931 2.349639 0.392776 +v 0.240167 2.349639 0.378443 +v 0.263456 2.349639 0.362616 +v 0.285705 2.349639 0.345358 +v 0.306826 2.349639 0.326736 +v 0.326737 2.349639 0.306826 +v 0.345358 2.349639 0.285705 +v 0.362616 2.349639 0.263456 +v 0.378443 2.349639 0.240167 +v 0.392776 2.349639 0.215930 +v 0.405559 2.349639 0.190842 +v 0.416742 2.349639 0.165000 +v 0.426280 2.349639 0.138507 +v 0.434136 2.349639 0.111467 +v 0.440278 2.349639 0.083988 +v 0.444683 2.349639 0.056177 +v 0.447333 2.349639 0.028144 +v 0.448218 2.349639 0.000000 +v 0.373454 2.362559 -0.023496 +v 0.371242 2.362559 -0.046899 +v 0.367564 2.362559 -0.070117 +v 0.362436 2.362559 -0.093058 +v 0.355878 2.362559 -0.115632 +v 0.347915 2.362559 -0.137749 +v 0.338579 2.362559 -0.159323 +v 0.327907 2.362559 -0.180269 +v 0.315941 2.362559 -0.200502 +v 0.302728 2.362559 -0.219945 +v 0.288320 2.362559 -0.238519 +v 0.272774 2.362559 -0.256152 +v 0.256152 2.362559 -0.272774 +v 0.238519 2.362559 -0.288320 +v 0.219945 2.362559 -0.302728 +v 0.200502 2.362559 -0.315941 +v 0.180269 2.362559 -0.327907 +v 0.159323 2.362559 -0.338579 +v 0.137749 2.362559 -0.347915 +v 0.115632 2.362559 -0.355878 +v 0.093058 2.362559 -0.362436 +v 0.070117 2.362559 -0.367564 +v 0.046899 2.362559 -0.371242 +v 0.023496 2.362559 -0.373454 +v 0.000000 2.362559 -0.374192 +v -0.023496 2.362559 -0.373454 +v -0.046899 2.362559 -0.371242 +v -0.070117 2.362559 -0.367564 +v -0.093058 2.362559 -0.362436 +v -0.115632 2.362559 -0.355878 +v -0.137749 2.362559 -0.347915 +v -0.159323 2.362559 -0.338579 +v -0.180269 2.362559 -0.327907 +v -0.200502 2.362559 -0.315941 +v -0.219945 2.362559 -0.302728 +v -0.238519 2.362559 -0.288320 +v -0.256152 2.362559 -0.272774 +v -0.272775 2.362559 -0.256152 +v -0.288320 2.362559 -0.238519 +v -0.302728 2.362559 -0.219945 +v -0.315941 2.362559 -0.200502 +v -0.327907 2.362559 -0.180269 +v -0.338579 2.362559 -0.159323 +v -0.347915 2.362559 -0.137749 +v -0.355878 2.362559 -0.115632 +v -0.362436 2.362559 -0.093058 +v -0.367564 2.362559 -0.070117 +v -0.371242 2.362559 -0.046899 +v -0.373454 2.362559 -0.023496 +v -0.374192 2.362559 0.000000 +v -0.373454 2.362559 0.023496 +v -0.371242 2.362559 0.046899 +v -0.367564 2.362559 0.070117 +v -0.362436 2.362559 0.093058 +v -0.355878 2.362559 0.115632 +v -0.347915 2.362559 0.137749 +v -0.338579 2.362559 0.159323 +v -0.327907 2.362559 0.180269 +v -0.315941 2.362559 0.200502 +v -0.302728 2.362559 0.219945 +v -0.288320 2.362559 0.238519 +v -0.272775 2.362559 0.256152 +v -0.256152 2.362559 0.272775 +v -0.238519 2.362559 0.288320 +v -0.219945 2.362559 0.302728 +v -0.200502 2.362559 0.315941 +v -0.180269 2.362559 0.327907 +v -0.159323 2.362559 0.338579 +v -0.137749 2.362559 0.347915 +v -0.115632 2.362559 0.355878 +v -0.093058 2.362559 0.362437 +v -0.070117 2.362559 0.367564 +v -0.046899 2.362559 0.371242 +v -0.023496 2.362559 0.373454 +v 0.000000 2.362559 0.374192 +v 0.023496 2.362559 0.373454 +v 0.046899 2.362559 0.371242 +v 0.070117 2.362559 0.367565 +v 0.093058 2.362559 0.362437 +v 0.115632 2.362559 0.355878 +v 0.137749 2.362559 0.347915 +v 0.159323 2.362559 0.338579 +v 0.180269 2.362559 0.327907 +v 0.200502 2.362559 0.315941 +v 0.219945 2.362559 0.302728 +v 0.238519 2.362559 0.288320 +v 0.256152 2.362559 0.272775 +v 0.272775 2.362559 0.256152 +v 0.288320 2.362559 0.238519 +v 0.302728 2.362559 0.219945 +v 0.315941 2.362559 0.200502 +v 0.327907 2.362559 0.180269 +v 0.338579 2.362559 0.159323 +v 0.347915 2.362559 0.137749 +v 0.355878 2.362559 0.115632 +v 0.362437 2.362559 0.093058 +v 0.367565 2.362559 0.070117 +v 0.371242 2.362559 0.046899 +v 0.373454 2.362559 0.023496 +v 0.374193 2.362559 0.000000 +v 0.299206 2.373146 -0.018824 +v 0.297434 2.373146 -0.037575 +v 0.294488 2.373146 -0.056177 +v 0.290379 2.373146 -0.074557 +v 0.285125 2.373146 -0.092643 +v 0.278745 2.373146 -0.110363 +v 0.271265 2.373146 -0.127648 +v 0.262715 2.373146 -0.144429 +v 0.253128 2.373146 -0.160640 +v 0.242542 2.373146 -0.176217 +v 0.230998 2.373146 -0.191098 +v 0.218543 2.373146 -0.205226 +v 0.205226 2.373146 -0.218543 +v 0.191098 2.373146 -0.230998 +v 0.176217 2.373146 -0.242542 +v 0.160640 2.373146 -0.253128 +v 0.144429 2.373146 -0.262715 +v 0.127648 2.373146 -0.271265 +v 0.110363 2.373146 -0.278745 +v 0.092643 2.373146 -0.285125 +v 0.074557 2.373146 -0.290379 +v 0.056177 2.373146 -0.294488 +v 0.037575 2.373146 -0.297434 +v 0.018824 2.373146 -0.299206 +v 0.000000 2.373146 -0.299798 +v -0.018824 2.373146 -0.299206 +v -0.037575 2.373146 -0.297434 +v -0.056177 2.373146 -0.294488 +v -0.074557 2.373146 -0.290379 +v -0.092643 2.373146 -0.285125 +v -0.110363 2.373146 -0.278745 +v -0.127648 2.373146 -0.271265 +v -0.144429 2.373146 -0.262715 +v -0.160640 2.373146 -0.253128 +v -0.176217 2.373146 -0.242542 +v -0.191098 2.373146 -0.230998 +v -0.205226 2.373146 -0.218543 +v -0.218543 2.373146 -0.205226 +v -0.230998 2.373146 -0.191098 +v -0.242542 2.373146 -0.176217 +v -0.253128 2.373146 -0.160640 +v -0.262715 2.373146 -0.144429 +v -0.271265 2.373146 -0.127648 +v -0.278745 2.373146 -0.110363 +v -0.285125 2.373146 -0.092643 +v -0.290379 2.373146 -0.074557 +v -0.294488 2.373146 -0.056177 +v -0.297434 2.373146 -0.037575 +v -0.299206 2.373146 -0.018824 +v -0.299798 2.373146 0.000000 +v -0.299206 2.373146 0.018824 +v -0.297434 2.373146 0.037575 +v -0.294488 2.373146 0.056177 +v -0.290379 2.373146 0.074557 +v -0.285125 2.373146 0.092643 +v -0.278745 2.373146 0.110363 +v -0.271265 2.373146 0.127648 +v -0.262715 2.373146 0.144429 +v -0.253128 2.373146 0.160640 +v -0.242542 2.373146 0.176217 +v -0.230998 2.373146 0.191098 +v -0.218543 2.373146 0.205226 +v -0.205226 2.373146 0.218543 +v -0.191098 2.373146 0.230998 +v -0.176217 2.373146 0.242542 +v -0.160640 2.373146 0.253128 +v -0.144429 2.373146 0.262715 +v -0.127648 2.373146 0.271265 +v -0.110363 2.373146 0.278745 +v -0.092643 2.373146 0.285125 +v -0.074557 2.373146 0.290379 +v -0.056177 2.373146 0.294488 +v -0.037575 2.373146 0.297434 +v -0.018824 2.373146 0.299206 +v 0.000000 2.373146 0.299798 +v 0.018825 2.373146 0.299206 +v 0.037575 2.373146 0.297434 +v 0.056177 2.373146 0.294488 +v 0.074557 2.373146 0.290379 +v 0.092643 2.373146 0.285125 +v 0.110363 2.373146 0.278745 +v 0.127648 2.373146 0.271265 +v 0.144429 2.373146 0.262715 +v 0.160640 2.373146 0.253128 +v 0.176217 2.373146 0.242542 +v 0.191099 2.373146 0.230998 +v 0.205226 2.373146 0.218543 +v 0.218543 2.373146 0.205226 +v 0.230998 2.373146 0.191098 +v 0.242542 2.373146 0.176217 +v 0.253128 2.373146 0.160640 +v 0.262715 2.373146 0.144429 +v 0.271265 2.373146 0.127648 +v 0.278745 2.373146 0.110363 +v 0.285125 2.373146 0.092643 +v 0.290379 2.373146 0.074557 +v 0.294488 2.373146 0.056177 +v 0.297434 2.373146 0.037575 +v 0.299207 2.373146 0.018824 +v 0.299798 2.373146 0.000000 +v 0.224664 2.381392 -0.014135 +v 0.223333 2.381392 -0.028213 +v 0.221120 2.381392 -0.042181 +v 0.218036 2.381392 -0.055982 +v 0.214090 2.381392 -0.069562 +v 0.209300 2.381392 -0.082868 +v 0.203684 2.381392 -0.095846 +v 0.197263 2.381392 -0.108446 +v 0.190065 2.381392 -0.120619 +v 0.182116 2.381392 -0.132315 +v 0.173449 2.381392 -0.143489 +v 0.164096 2.381392 -0.154097 +v 0.154097 2.381392 -0.164096 +v 0.143489 2.381392 -0.173449 +v 0.132315 2.381392 -0.182116 +v 0.120619 2.381392 -0.190065 +v 0.108446 2.381392 -0.197263 +v 0.095846 2.381392 -0.203684 +v 0.082868 2.381392 -0.209300 +v 0.069562 2.381392 -0.214090 +v 0.055982 2.381392 -0.218036 +v 0.042181 2.381392 -0.221120 +v 0.028213 2.381392 -0.223333 +v 0.014135 2.381392 -0.224664 +v 0.000000 2.381392 -0.225108 +v -0.014135 2.381392 -0.224664 +v -0.028213 2.381392 -0.223333 +v -0.042181 2.381392 -0.221120 +v -0.055982 2.381392 -0.218036 +v -0.069562 2.381392 -0.214090 +v -0.082868 2.381392 -0.209300 +v -0.095846 2.381392 -0.203684 +v -0.108446 2.381392 -0.197263 +v -0.120619 2.381392 -0.190065 +v -0.132315 2.381392 -0.182116 +v -0.143489 2.381392 -0.173449 +v -0.154097 2.381392 -0.164096 +v -0.164097 2.381392 -0.154097 +v -0.173449 2.381392 -0.143489 +v -0.182116 2.381392 -0.132315 +v -0.190065 2.381392 -0.120619 +v -0.197263 2.381392 -0.108446 +v -0.203684 2.381392 -0.095846 +v -0.209300 2.381392 -0.082868 +v -0.214090 2.381392 -0.069562 +v -0.218036 2.381392 -0.055982 +v -0.221121 2.381392 -0.042181 +v -0.223333 2.381392 -0.028213 +v -0.224664 2.381392 -0.014135 +v -0.225108 2.381392 0.000000 +v -0.224664 2.381392 0.014135 +v -0.223333 2.381392 0.028214 +v -0.221121 2.381392 0.042181 +v -0.218036 2.381392 0.055982 +v -0.214090 2.381392 0.069562 +v -0.209300 2.381392 0.082868 +v -0.203684 2.381392 0.095846 +v -0.197263 2.381392 0.108447 +v -0.190065 2.381392 0.120619 +v -0.182116 2.381392 0.132315 +v -0.173449 2.381392 0.143489 +v -0.164097 2.381392 0.154097 +v -0.154097 2.381392 0.164097 +v -0.143489 2.381392 0.173449 +v -0.132315 2.381392 0.182116 +v -0.120619 2.381392 0.190065 +v -0.108447 2.381392 0.197263 +v -0.095846 2.381392 0.203684 +v -0.082868 2.381392 0.209300 +v -0.069562 2.381392 0.214090 +v -0.055982 2.381392 0.218036 +v -0.042181 2.381392 0.221121 +v -0.028213 2.381392 0.223333 +v -0.014135 2.381392 0.224664 +v 0.000000 2.381392 0.225108 +v 0.014135 2.381392 0.224664 +v 0.028214 2.381392 0.223333 +v 0.042181 2.381392 0.221121 +v 0.055982 2.381392 0.218036 +v 0.069562 2.381392 0.214090 +v 0.082868 2.381392 0.209300 +v 0.095846 2.381392 0.203684 +v 0.108447 2.381392 0.197264 +v 0.120619 2.381392 0.190065 +v 0.132315 2.381392 0.182116 +v 0.143489 2.381392 0.173449 +v 0.154097 2.381392 0.164097 +v 0.164097 2.381392 0.154097 +v 0.173449 2.381392 0.143489 +v 0.182116 2.381392 0.132315 +v 0.190065 2.381392 0.120619 +v 0.197264 2.381392 0.108447 +v 0.203684 2.381392 0.095846 +v 0.209300 2.381392 0.082868 +v 0.214090 2.381392 0.069562 +v 0.218036 2.381392 0.055982 +v 0.221121 2.381392 0.042181 +v 0.223333 2.381392 0.028213 +v 0.224664 2.381392 0.014135 +v 0.225108 2.381392 0.000000 +v 0.149899 2.387288 -0.009431 +v 0.149011 2.387288 -0.018824 +v 0.147535 2.387288 -0.028144 +v 0.145477 2.387288 -0.037352 +v 0.142844 2.387288 -0.046413 +v 0.139648 2.387288 -0.055291 +v 0.135901 2.387288 -0.063950 +v 0.131617 2.387288 -0.072357 +v 0.126814 2.387288 -0.080479 +v 0.121511 2.387288 -0.088283 +v 0.115728 2.387288 -0.095738 +v 0.109488 2.387288 -0.102816 +v 0.102816 2.387288 -0.109488 +v 0.095738 2.387288 -0.115728 +v 0.088283 2.387288 -0.121511 +v 0.080479 2.387288 -0.126814 +v 0.072357 2.387288 -0.131617 +v 0.063950 2.387288 -0.135901 +v 0.055291 2.387288 -0.139648 +v 0.046413 2.387288 -0.142844 +v 0.037352 2.387288 -0.145477 +v 0.028144 2.387288 -0.147535 +v 0.018824 2.387288 -0.149011 +v 0.009431 2.387288 -0.149899 +v 0.000000 2.387288 -0.150195 +v -0.009431 2.387288 -0.149899 +v -0.018824 2.387288 -0.149011 +v -0.028144 2.387288 -0.147535 +v -0.037352 2.387288 -0.145477 +v -0.046413 2.387288 -0.142844 +v -0.055291 2.387288 -0.139648 +v -0.063950 2.387288 -0.135901 +v -0.072357 2.387288 -0.131617 +v -0.080479 2.387288 -0.126814 +v -0.088283 2.387288 -0.121511 +v -0.095738 2.387288 -0.115728 +v -0.102816 2.387288 -0.109488 +v -0.109488 2.387288 -0.102816 +v -0.115728 2.387288 -0.095738 +v -0.121511 2.387288 -0.088283 +v -0.126814 2.387288 -0.080479 +v -0.131617 2.387288 -0.072357 +v -0.135901 2.387288 -0.063950 +v -0.139648 2.387288 -0.055291 +v -0.142844 2.387288 -0.046413 +v -0.145477 2.387288 -0.037352 +v -0.147535 2.387288 -0.028144 +v -0.149011 2.387288 -0.018824 +v -0.149899 2.387288 -0.009431 +v -0.150195 2.387288 0.000000 +v -0.149899 2.387288 0.009431 +v -0.149011 2.387288 0.018824 +v -0.147535 2.387288 0.028144 +v -0.145477 2.387288 0.037352 +v -0.142844 2.387288 0.046413 +v -0.139648 2.387288 0.055291 +v -0.135901 2.387288 0.063950 +v -0.131617 2.387288 0.072357 +v -0.126814 2.387288 0.080479 +v -0.121511 2.387288 0.088283 +v -0.115728 2.387288 0.095738 +v -0.109488 2.387288 0.102816 +v -0.102816 2.387288 0.109488 +v -0.095738 2.387288 0.115728 +v -0.088283 2.387288 0.121511 +v -0.080479 2.387288 0.126814 +v -0.072357 2.387288 0.131617 +v -0.063950 2.387288 0.135901 +v -0.055291 2.387288 0.139648 +v -0.046413 2.387288 0.142844 +v -0.037352 2.387288 0.145477 +v -0.028144 2.387288 0.147535 +v -0.018824 2.387288 0.149011 +v -0.009431 2.387288 0.149899 +v 0.000000 2.387288 0.150195 +v 0.009431 2.387288 0.149899 +v 0.018824 2.387288 0.149011 +v 0.028144 2.387288 0.147535 +v 0.037352 2.387288 0.145477 +v 0.046413 2.387288 0.142844 +v 0.055291 2.387288 0.139648 +v 0.063950 2.387288 0.135901 +v 0.072357 2.387288 0.131617 +v 0.080479 2.387288 0.126814 +v 0.088283 2.387288 0.121511 +v 0.095738 2.387288 0.115728 +v 0.102816 2.387288 0.109488 +v 0.109488 2.387288 0.102816 +v 0.115728 2.387288 0.095738 +v 0.121511 2.387288 0.088283 +v 0.126814 2.387288 0.080479 +v 0.131617 2.387288 0.072357 +v 0.135901 2.387288 0.063950 +v 0.139648 2.387288 0.055291 +v 0.142844 2.387288 0.046413 +v 0.145477 2.387288 0.037352 +v 0.147535 2.387288 0.028144 +v 0.149011 2.387288 0.018824 +v 0.149899 2.387288 0.009431 +v 0.150195 2.387288 0.000000 +v 0.074986 2.390828 -0.004718 +v 0.074542 2.390828 -0.009417 +v 0.073804 2.390828 -0.014079 +v 0.072774 2.390828 -0.018685 +v 0.071457 2.390828 -0.023218 +v 0.069859 2.390828 -0.027659 +v 0.067984 2.390828 -0.031991 +v 0.065841 2.390828 -0.036196 +v 0.063438 2.390828 -0.040259 +v 0.060785 2.390828 -0.044163 +v 0.057892 2.390828 -0.047893 +v 0.054771 2.390828 -0.051433 +v 0.051433 2.390828 -0.054771 +v 0.047893 2.390828 -0.057892 +v 0.044163 2.390828 -0.060785 +v 0.040259 2.390828 -0.063438 +v 0.036196 2.390828 -0.065841 +v 0.031991 2.390828 -0.067984 +v 0.027659 2.390828 -0.069859 +v 0.023218 2.390828 -0.071457 +v 0.018685 2.390828 -0.072774 +v 0.014079 2.390828 -0.073804 +v 0.009417 2.390828 -0.074542 +v 0.004718 2.390828 -0.074986 +v 0.000000 2.390828 -0.075135 +v -0.004718 2.390828 -0.074986 +v -0.009417 2.390828 -0.074542 +v -0.014079 2.390828 -0.073804 +v -0.018685 2.390828 -0.072774 +v -0.023218 2.390828 -0.071457 +v -0.027659 2.390828 -0.069859 +v -0.031991 2.390828 -0.067984 +v -0.036196 2.390828 -0.065841 +v -0.040259 2.390828 -0.063438 +v -0.044163 2.390828 -0.060785 +v -0.047893 2.390828 -0.057892 +v -0.051433 2.390828 -0.054771 +v -0.054771 2.390828 -0.051433 +v -0.057892 2.390828 -0.047893 +v -0.060785 2.390828 -0.044163 +v -0.063438 2.390828 -0.040259 +v -0.065841 2.390828 -0.036196 +v -0.067984 2.390828 -0.031991 +v -0.069859 2.390828 -0.027659 +v -0.071457 2.390828 -0.023218 +v -0.072774 2.390828 -0.018685 +v -0.073804 2.390828 -0.014079 +v -0.074542 2.390828 -0.009417 +v -0.074986 2.390828 -0.004718 +v -0.075135 2.390828 0.000000 +v -0.074986 2.390828 0.004718 +v -0.074542 2.390828 0.009417 +v -0.073804 2.390828 0.014079 +v -0.072774 2.390828 0.018685 +v -0.071457 2.390828 0.023218 +v -0.069859 2.390828 0.027659 +v -0.067984 2.390828 0.031991 +v -0.065841 2.390828 0.036196 +v -0.063438 2.390828 0.040259 +v -0.060785 2.390828 0.044163 +v -0.057892 2.390828 0.047893 +v -0.054771 2.390828 0.051433 +v -0.051433 2.390828 0.054771 +v -0.047893 2.390828 0.057892 +v -0.044163 2.390828 0.060785 +v -0.040259 2.390828 0.063438 +v -0.036196 2.390828 0.065841 +v -0.031991 2.390828 0.067984 +v -0.027659 2.390828 0.069859 +v -0.023218 2.390828 0.071457 +v -0.018685 2.390828 0.072774 +v -0.014079 2.390828 0.073804 +v -0.009417 2.390828 0.074542 +v -0.004718 2.390828 0.074987 +v 0.000000 2.390828 0.075135 +v 0.004718 2.390828 0.074987 +v 0.009417 2.390828 0.074542 +v 0.014079 2.390828 0.073804 +v 0.018685 2.390828 0.072774 +v 0.023218 2.390828 0.071457 +v 0.027659 2.390828 0.069859 +v 0.031991 2.390828 0.067984 +v 0.036196 2.390828 0.065841 +v 0.040259 2.390828 0.063438 +v 0.044163 2.390828 0.060785 +v 0.047893 2.390828 0.057892 +v 0.051433 2.390828 0.054771 +v 0.054771 2.390828 0.051433 +v 0.057892 2.390828 0.047893 +v 0.060785 2.390828 0.044163 +v 0.063438 2.390828 0.040259 +v 0.065841 2.390828 0.036196 +v 0.067984 2.390828 0.031991 +v 0.069859 2.390828 0.027659 +v 0.071457 2.390828 0.023218 +v 0.072774 2.390828 0.018685 +v 0.073804 2.390828 0.014079 +v 0.074542 2.390828 0.009417 +v 0.074987 2.390828 0.004718 +v 0.075135 2.390828 0.000000 +v 0.000000 -2.392008 0.000000 +v 0.000000 2.392008 0.000000 +vt 0.000000 0.010000 +vt 0.010000 0.010000 +vt 0.020000 0.010000 +vt 0.030000 0.010000 +vt 0.040000 0.010000 +vt 0.050000 0.010000 +vt 0.060000 0.010000 +vt 0.070000 0.010000 +vt 0.080000 0.010000 +vt 0.090000 0.010000 +vt 0.100000 0.010000 +vt 0.110000 0.010000 +vt 0.120000 0.010000 +vt 0.130000 0.010000 +vt 0.140000 0.010000 +vt 0.150000 0.010000 +vt 0.160000 0.010000 +vt 0.170000 0.010000 +vt 0.180000 0.010000 +vt 0.190000 0.010000 +vt 0.200000 0.010000 +vt 0.210000 0.010000 +vt 0.220000 0.010000 +vt 0.230000 0.010000 +vt 0.240000 0.010000 +vt 0.250000 0.010000 +vt 0.260000 0.010000 +vt 0.270000 0.010000 +vt 0.280000 0.010000 +vt 0.290000 0.010000 +vt 0.300000 0.010000 +vt 0.310000 0.010000 +vt 0.320000 0.010000 +vt 0.330000 0.010000 +vt 0.340000 0.010000 +vt 0.350000 0.010000 +vt 0.360000 0.010000 +vt 0.370000 0.010000 +vt 0.380000 0.010000 +vt 0.390000 0.010000 +vt 0.400000 0.010000 +vt 0.410000 0.010000 +vt 0.420000 0.010000 +vt 0.430000 0.010000 +vt 0.440000 0.010000 +vt 0.450000 0.010000 +vt 0.460000 0.010000 +vt 0.470000 0.010000 +vt 0.480000 0.010000 +vt 0.490000 0.010000 +vt 0.500000 0.010000 +vt 0.510000 0.010000 +vt 0.520000 0.010000 +vt 0.530000 0.010000 +vt 0.540000 0.010000 +vt 0.550000 0.010000 +vt 0.560000 0.010000 +vt 0.570000 0.010000 +vt 0.580000 0.010000 +vt 0.590000 0.010000 +vt 0.600000 0.010000 +vt 0.610000 0.010000 +vt 0.620000 0.010000 +vt 0.630000 0.010000 +vt 0.640000 0.010000 +vt 0.650000 0.010000 +vt 0.660000 0.010000 +vt 0.670000 0.010000 +vt 0.680000 0.010000 +vt 0.690000 0.010000 +vt 0.700000 0.010000 +vt 0.710000 0.010000 +vt 0.720000 0.010000 +vt 0.730000 0.010000 +vt 0.740000 0.010000 +vt 0.750000 0.010000 +vt 0.760000 0.010000 +vt 0.770000 0.010000 +vt 0.780000 0.010000 +vt 0.790000 0.010000 +vt 0.800000 0.010000 +vt 0.810000 0.010000 +vt 0.820000 0.010000 +vt 0.830000 0.010000 +vt 0.839999 0.010000 +vt 0.849999 0.010000 +vt 0.859999 0.010000 +vt 0.869999 0.010000 +vt 0.879999 0.010000 +vt 0.889999 0.010000 +vt 0.899999 0.010000 +vt 0.909999 0.010000 +vt 0.919999 0.010000 +vt 0.929999 0.010000 +vt 0.939999 0.010000 +vt 0.949999 0.010000 +vt 0.959999 0.010000 +vt 0.969999 0.010000 +vt 0.979999 0.010000 +vt 0.989999 0.010000 +vt 0.999999 0.010000 +vt 0.000000 0.020000 +vt 0.010000 0.020000 +vt 0.020000 0.020000 +vt 0.030000 0.020000 +vt 0.040000 0.020000 +vt 0.050000 0.020000 +vt 0.060000 0.020000 +vt 0.070000 0.020000 +vt 0.080000 0.020000 +vt 0.090000 0.020000 +vt 0.100000 0.020000 +vt 0.110000 0.020000 +vt 0.120000 0.020000 +vt 0.130000 0.020000 +vt 0.140000 0.020000 +vt 0.150000 0.020000 +vt 0.160000 0.020000 +vt 0.170000 0.020000 +vt 0.180000 0.020000 +vt 0.190000 0.020000 +vt 0.200000 0.020000 +vt 0.210000 0.020000 +vt 0.220000 0.020000 +vt 0.230000 0.020000 +vt 0.240000 0.020000 +vt 0.250000 0.020000 +vt 0.260000 0.020000 +vt 0.270000 0.020000 +vt 0.280000 0.020000 +vt 0.290000 0.020000 +vt 0.300000 0.020000 +vt 0.310000 0.020000 +vt 0.320000 0.020000 +vt 0.330000 0.020000 +vt 0.340000 0.020000 +vt 0.350000 0.020000 +vt 0.360000 0.020000 +vt 0.370000 0.020000 +vt 0.380000 0.020000 +vt 0.390000 0.020000 +vt 0.400000 0.020000 +vt 0.410000 0.020000 +vt 0.420000 0.020000 +vt 0.430000 0.020000 +vt 0.440000 0.020000 +vt 0.450000 0.020000 +vt 0.460000 0.020000 +vt 0.470000 0.020000 +vt 0.480000 0.020000 +vt 0.490000 0.020000 +vt 0.500000 0.020000 +vt 0.510000 0.020000 +vt 0.520000 0.020000 +vt 0.530000 0.020000 +vt 0.540000 0.020000 +vt 0.550000 0.020000 +vt 0.560000 0.020000 +vt 0.570000 0.020000 +vt 0.580000 0.020000 +vt 0.590000 0.020000 +vt 0.600000 0.020000 +vt 0.610000 0.020000 +vt 0.620000 0.020000 +vt 0.630000 0.020000 +vt 0.640000 0.020000 +vt 0.650000 0.020000 +vt 0.660000 0.020000 +vt 0.670000 0.020000 +vt 0.680000 0.020000 +vt 0.690000 0.020000 +vt 0.700000 0.020000 +vt 0.710000 0.020000 +vt 0.720000 0.020000 +vt 0.730000 0.020000 +vt 0.740000 0.020000 +vt 0.750000 0.020000 +vt 0.760000 0.020000 +vt 0.770000 0.020000 +vt 0.780000 0.020000 +vt 0.790000 0.020000 +vt 0.800000 0.020000 +vt 0.810000 0.020000 +vt 0.820000 0.020000 +vt 0.830000 0.020000 +vt 0.839999 0.020000 +vt 0.849999 0.020000 +vt 0.859999 0.020000 +vt 0.869999 0.020000 +vt 0.879999 0.020000 +vt 0.889999 0.020000 +vt 0.899999 0.020000 +vt 0.909999 0.020000 +vt 0.919999 0.020000 +vt 0.929999 0.020000 +vt 0.939999 0.020000 +vt 0.949999 0.020000 +vt 0.959999 0.020000 +vt 0.969999 0.020000 +vt 0.979999 0.020000 +vt 0.989999 0.020000 +vt 0.999999 0.020000 +vt 0.000000 0.030000 +vt 0.010000 0.030000 +vt 0.020000 0.030000 +vt 0.030000 0.030000 +vt 0.040000 0.030000 +vt 0.050000 0.030000 +vt 0.060000 0.030000 +vt 0.070000 0.030000 +vt 0.080000 0.030000 +vt 0.090000 0.030000 +vt 0.100000 0.030000 +vt 0.110000 0.030000 +vt 0.120000 0.030000 +vt 0.130000 0.030000 +vt 0.140000 0.030000 +vt 0.150000 0.030000 +vt 0.160000 0.030000 +vt 0.170000 0.030000 +vt 0.180000 0.030000 +vt 0.190000 0.030000 +vt 0.200000 0.030000 +vt 0.210000 0.030000 +vt 0.220000 0.030000 +vt 0.230000 0.030000 +vt 0.240000 0.030000 +vt 0.250000 0.030000 +vt 0.260000 0.030000 +vt 0.270000 0.030000 +vt 0.280000 0.030000 +vt 0.290000 0.030000 +vt 0.300000 0.030000 +vt 0.310000 0.030000 +vt 0.320000 0.030000 +vt 0.330000 0.030000 +vt 0.340000 0.030000 +vt 0.350000 0.030000 +vt 0.360000 0.030000 +vt 0.370000 0.030000 +vt 0.380000 0.030000 +vt 0.390000 0.030000 +vt 0.400000 0.030000 +vt 0.410000 0.030000 +vt 0.420000 0.030000 +vt 0.430000 0.030000 +vt 0.440000 0.030000 +vt 0.450000 0.030000 +vt 0.460000 0.030000 +vt 0.470000 0.030000 +vt 0.480000 0.030000 +vt 0.490000 0.030000 +vt 0.500000 0.030000 +vt 0.510000 0.030000 +vt 0.520000 0.030000 +vt 0.530000 0.030000 +vt 0.540000 0.030000 +vt 0.550000 0.030000 +vt 0.560000 0.030000 +vt 0.570000 0.030000 +vt 0.580000 0.030000 +vt 0.590000 0.030000 +vt 0.600000 0.030000 +vt 0.610000 0.030000 +vt 0.620000 0.030000 +vt 0.630000 0.030000 +vt 0.640000 0.030000 +vt 0.650000 0.030000 +vt 0.660000 0.030000 +vt 0.670000 0.030000 +vt 0.680000 0.030000 +vt 0.690000 0.030000 +vt 0.700000 0.030000 +vt 0.710000 0.030000 +vt 0.720000 0.030000 +vt 0.730000 0.030000 +vt 0.740000 0.030000 +vt 0.750000 0.030000 +vt 0.760000 0.030000 +vt 0.770000 0.030000 +vt 0.780000 0.030000 +vt 0.790000 0.030000 +vt 0.800000 0.030000 +vt 0.810000 0.030000 +vt 0.820000 0.030000 +vt 0.830000 0.030000 +vt 0.839999 0.030000 +vt 0.849999 0.030000 +vt 0.859999 0.030000 +vt 0.869999 0.030000 +vt 0.879999 0.030000 +vt 0.889999 0.030000 +vt 0.899999 0.030000 +vt 0.909999 0.030000 +vt 0.919999 0.030000 +vt 0.929999 0.030000 +vt 0.939999 0.030000 +vt 0.949999 0.030000 +vt 0.959999 0.030000 +vt 0.969999 0.030000 +vt 0.979999 0.030000 +vt 0.989999 0.030000 +vt 0.999999 0.030000 +vt 0.000000 0.040000 +vt 0.010000 0.040000 +vt 0.020000 0.040000 +vt 0.030000 0.040000 +vt 0.040000 0.040000 +vt 0.050000 0.040000 +vt 0.060000 0.040000 +vt 0.070000 0.040000 +vt 0.080000 0.040000 +vt 0.090000 0.040000 +vt 0.100000 0.040000 +vt 0.110000 0.040000 +vt 0.120000 0.040000 +vt 0.130000 0.040000 +vt 0.140000 0.040000 +vt 0.150000 0.040000 +vt 0.160000 0.040000 +vt 0.170000 0.040000 +vt 0.180000 0.040000 +vt 0.190000 0.040000 +vt 0.200000 0.040000 +vt 0.210000 0.040000 +vt 0.220000 0.040000 +vt 0.230000 0.040000 +vt 0.240000 0.040000 +vt 0.250000 0.040000 +vt 0.260000 0.040000 +vt 0.270000 0.040000 +vt 0.280000 0.040000 +vt 0.290000 0.040000 +vt 0.300000 0.040000 +vt 0.310000 0.040000 +vt 0.320000 0.040000 +vt 0.330000 0.040000 +vt 0.340000 0.040000 +vt 0.350000 0.040000 +vt 0.360000 0.040000 +vt 0.370000 0.040000 +vt 0.380000 0.040000 +vt 0.390000 0.040000 +vt 0.400000 0.040000 +vt 0.410000 0.040000 +vt 0.420000 0.040000 +vt 0.430000 0.040000 +vt 0.440000 0.040000 +vt 0.450000 0.040000 +vt 0.460000 0.040000 +vt 0.470000 0.040000 +vt 0.480000 0.040000 +vt 0.490000 0.040000 +vt 0.500000 0.040000 +vt 0.510000 0.040000 +vt 0.520000 0.040000 +vt 0.530000 0.040000 +vt 0.540000 0.040000 +vt 0.550000 0.040000 +vt 0.560000 0.040000 +vt 0.570000 0.040000 +vt 0.580000 0.040000 +vt 0.590000 0.040000 +vt 0.600000 0.040000 +vt 0.610000 0.040000 +vt 0.620000 0.040000 +vt 0.630000 0.040000 +vt 0.640000 0.040000 +vt 0.650000 0.040000 +vt 0.660000 0.040000 +vt 0.670000 0.040000 +vt 0.680000 0.040000 +vt 0.690000 0.040000 +vt 0.700000 0.040000 +vt 0.710000 0.040000 +vt 0.720000 0.040000 +vt 0.730000 0.040000 +vt 0.740000 0.040000 +vt 0.750000 0.040000 +vt 0.760000 0.040000 +vt 0.770000 0.040000 +vt 0.780000 0.040000 +vt 0.790000 0.040000 +vt 0.800000 0.040000 +vt 0.810000 0.040000 +vt 0.820000 0.040000 +vt 0.830000 0.040000 +vt 0.839999 0.040000 +vt 0.849999 0.040000 +vt 0.859999 0.040000 +vt 0.869999 0.040000 +vt 0.879999 0.040000 +vt 0.889999 0.040000 +vt 0.899999 0.040000 +vt 0.909999 0.040000 +vt 0.919999 0.040000 +vt 0.929999 0.040000 +vt 0.939999 0.040000 +vt 0.949999 0.040000 +vt 0.959999 0.040000 +vt 0.969999 0.040000 +vt 0.979999 0.040000 +vt 0.989999 0.040000 +vt 0.999999 0.040000 +vt 0.000000 0.050000 +vt 0.010000 0.050000 +vt 0.020000 0.050000 +vt 0.030000 0.050000 +vt 0.040000 0.050000 +vt 0.050000 0.050000 +vt 0.060000 0.050000 +vt 0.070000 0.050000 +vt 0.080000 0.050000 +vt 0.090000 0.050000 +vt 0.100000 0.050000 +vt 0.110000 0.050000 +vt 0.120000 0.050000 +vt 0.130000 0.050000 +vt 0.140000 0.050000 +vt 0.150000 0.050000 +vt 0.160000 0.050000 +vt 0.170000 0.050000 +vt 0.180000 0.050000 +vt 0.190000 0.050000 +vt 0.200000 0.050000 +vt 0.210000 0.050000 +vt 0.220000 0.050000 +vt 0.230000 0.050000 +vt 0.240000 0.050000 +vt 0.250000 0.050000 +vt 0.260000 0.050000 +vt 0.270000 0.050000 +vt 0.280000 0.050000 +vt 0.290000 0.050000 +vt 0.300000 0.050000 +vt 0.310000 0.050000 +vt 0.320000 0.050000 +vt 0.330000 0.050000 +vt 0.340000 0.050000 +vt 0.350000 0.050000 +vt 0.360000 0.050000 +vt 0.370000 0.050000 +vt 0.380000 0.050000 +vt 0.390000 0.050000 +vt 0.400000 0.050000 +vt 0.410000 0.050000 +vt 0.420000 0.050000 +vt 0.430000 0.050000 +vt 0.440000 0.050000 +vt 0.450000 0.050000 +vt 0.460000 0.050000 +vt 0.470000 0.050000 +vt 0.480000 0.050000 +vt 0.490000 0.050000 +vt 0.500000 0.050000 +vt 0.510000 0.050000 +vt 0.520000 0.050000 +vt 0.530000 0.050000 +vt 0.540000 0.050000 +vt 0.550000 0.050000 +vt 0.560000 0.050000 +vt 0.570000 0.050000 +vt 0.580000 0.050000 +vt 0.590000 0.050000 +vt 0.600000 0.050000 +vt 0.610000 0.050000 +vt 0.620000 0.050000 +vt 0.630000 0.050000 +vt 0.640000 0.050000 +vt 0.650000 0.050000 +vt 0.660000 0.050000 +vt 0.670000 0.050000 +vt 0.680000 0.050000 +vt 0.690000 0.050000 +vt 0.700000 0.050000 +vt 0.710000 0.050000 +vt 0.720000 0.050000 +vt 0.730000 0.050000 +vt 0.740000 0.050000 +vt 0.750000 0.050000 +vt 0.760000 0.050000 +vt 0.770000 0.050000 +vt 0.780000 0.050000 +vt 0.790000 0.050000 +vt 0.800000 0.050000 +vt 0.810000 0.050000 +vt 0.820000 0.050000 +vt 0.830000 0.050000 +vt 0.839999 0.050000 +vt 0.849999 0.050000 +vt 0.859999 0.050000 +vt 0.869999 0.050000 +vt 0.879999 0.050000 +vt 0.889999 0.050000 +vt 0.899999 0.050000 +vt 0.909999 0.050000 +vt 0.919999 0.050000 +vt 0.929999 0.050000 +vt 0.939999 0.050000 +vt 0.949999 0.050000 +vt 0.959999 0.050000 +vt 0.969999 0.050000 +vt 0.979999 0.050000 +vt 0.989999 0.050000 +vt 0.999999 0.050000 +vt 0.000000 0.060000 +vt 0.010000 0.060000 +vt 0.020000 0.060000 +vt 0.030000 0.060000 +vt 0.040000 0.060000 +vt 0.050000 0.060000 +vt 0.060000 0.060000 +vt 0.070000 0.060000 +vt 0.080000 0.060000 +vt 0.090000 0.060000 +vt 0.100000 0.060000 +vt 0.110000 0.060000 +vt 0.120000 0.060000 +vt 0.130000 0.060000 +vt 0.140000 0.060000 +vt 0.150000 0.060000 +vt 0.160000 0.060000 +vt 0.170000 0.060000 +vt 0.180000 0.060000 +vt 0.190000 0.060000 +vt 0.200000 0.060000 +vt 0.210000 0.060000 +vt 0.220000 0.060000 +vt 0.230000 0.060000 +vt 0.240000 0.060000 +vt 0.250000 0.060000 +vt 0.260000 0.060000 +vt 0.270000 0.060000 +vt 0.280000 0.060000 +vt 0.290000 0.060000 +vt 0.300000 0.060000 +vt 0.310000 0.060000 +vt 0.320000 0.060000 +vt 0.330000 0.060000 +vt 0.340000 0.060000 +vt 0.350000 0.060000 +vt 0.360000 0.060000 +vt 0.370000 0.060000 +vt 0.380000 0.060000 +vt 0.390000 0.060000 +vt 0.400000 0.060000 +vt 0.410000 0.060000 +vt 0.420000 0.060000 +vt 0.430000 0.060000 +vt 0.440000 0.060000 +vt 0.450000 0.060000 +vt 0.460000 0.060000 +vt 0.470000 0.060000 +vt 0.480000 0.060000 +vt 0.490000 0.060000 +vt 0.500000 0.060000 +vt 0.510000 0.060000 +vt 0.520000 0.060000 +vt 0.530000 0.060000 +vt 0.540000 0.060000 +vt 0.550000 0.060000 +vt 0.560000 0.060000 +vt 0.570000 0.060000 +vt 0.580000 0.060000 +vt 0.590000 0.060000 +vt 0.600000 0.060000 +vt 0.610000 0.060000 +vt 0.620000 0.060000 +vt 0.630000 0.060000 +vt 0.640000 0.060000 +vt 0.650000 0.060000 +vt 0.660000 0.060000 +vt 0.670000 0.060000 +vt 0.680000 0.060000 +vt 0.690000 0.060000 +vt 0.700000 0.060000 +vt 0.710000 0.060000 +vt 0.720000 0.060000 +vt 0.730000 0.060000 +vt 0.740000 0.060000 +vt 0.750000 0.060000 +vt 0.760000 0.060000 +vt 0.770000 0.060000 +vt 0.780000 0.060000 +vt 0.790000 0.060000 +vt 0.800000 0.060000 +vt 0.810000 0.060000 +vt 0.820000 0.060000 +vt 0.830000 0.060000 +vt 0.839999 0.060000 +vt 0.849999 0.060000 +vt 0.859999 0.060000 +vt 0.869999 0.060000 +vt 0.879999 0.060000 +vt 0.889999 0.060000 +vt 0.899999 0.060000 +vt 0.909999 0.060000 +vt 0.919999 0.060000 +vt 0.929999 0.060000 +vt 0.939999 0.060000 +vt 0.949999 0.060000 +vt 0.959999 0.060000 +vt 0.969999 0.060000 +vt 0.979999 0.060000 +vt 0.989999 0.060000 +vt 0.999999 0.060000 +vt 0.000000 0.070000 +vt 0.010000 0.070000 +vt 0.020000 0.070000 +vt 0.030000 0.070000 +vt 0.040000 0.070000 +vt 0.050000 0.070000 +vt 0.060000 0.070000 +vt 0.070000 0.070000 +vt 0.080000 0.070000 +vt 0.090000 0.070000 +vt 0.100000 0.070000 +vt 0.110000 0.070000 +vt 0.120000 0.070000 +vt 0.130000 0.070000 +vt 0.140000 0.070000 +vt 0.150000 0.070000 +vt 0.160000 0.070000 +vt 0.170000 0.070000 +vt 0.180000 0.070000 +vt 0.190000 0.070000 +vt 0.200000 0.070000 +vt 0.210000 0.070000 +vt 0.220000 0.070000 +vt 0.230000 0.070000 +vt 0.240000 0.070000 +vt 0.250000 0.070000 +vt 0.260000 0.070000 +vt 0.270000 0.070000 +vt 0.280000 0.070000 +vt 0.290000 0.070000 +vt 0.300000 0.070000 +vt 0.310000 0.070000 +vt 0.320000 0.070000 +vt 0.330000 0.070000 +vt 0.340000 0.070000 +vt 0.350000 0.070000 +vt 0.360000 0.070000 +vt 0.370000 0.070000 +vt 0.380000 0.070000 +vt 0.390000 0.070000 +vt 0.400000 0.070000 +vt 0.410000 0.070000 +vt 0.420000 0.070000 +vt 0.430000 0.070000 +vt 0.440000 0.070000 +vt 0.450000 0.070000 +vt 0.460000 0.070000 +vt 0.470000 0.070000 +vt 0.480000 0.070000 +vt 0.490000 0.070000 +vt 0.500000 0.070000 +vt 0.510000 0.070000 +vt 0.520000 0.070000 +vt 0.530000 0.070000 +vt 0.540000 0.070000 +vt 0.550000 0.070000 +vt 0.560000 0.070000 +vt 0.570000 0.070000 +vt 0.580000 0.070000 +vt 0.590000 0.070000 +vt 0.600000 0.070000 +vt 0.610000 0.070000 +vt 0.620000 0.070000 +vt 0.630000 0.070000 +vt 0.640000 0.070000 +vt 0.650000 0.070000 +vt 0.660000 0.070000 +vt 0.670000 0.070000 +vt 0.680000 0.070000 +vt 0.690000 0.070000 +vt 0.700000 0.070000 +vt 0.710000 0.070000 +vt 0.720000 0.070000 +vt 0.730000 0.070000 +vt 0.740000 0.070000 +vt 0.750000 0.070000 +vt 0.760000 0.070000 +vt 0.770000 0.070000 +vt 0.780000 0.070000 +vt 0.790000 0.070000 +vt 0.800000 0.070000 +vt 0.810000 0.070000 +vt 0.820000 0.070000 +vt 0.830000 0.070000 +vt 0.839999 0.070000 +vt 0.849999 0.070000 +vt 0.859999 0.070000 +vt 0.869999 0.070000 +vt 0.879999 0.070000 +vt 0.889999 0.070000 +vt 0.899999 0.070000 +vt 0.909999 0.070000 +vt 0.919999 0.070000 +vt 0.929999 0.070000 +vt 0.939999 0.070000 +vt 0.949999 0.070000 +vt 0.959999 0.070000 +vt 0.969999 0.070000 +vt 0.979999 0.070000 +vt 0.989999 0.070000 +vt 0.999999 0.070000 +vt 0.000000 0.080000 +vt 0.010000 0.080000 +vt 0.020000 0.080000 +vt 0.030000 0.080000 +vt 0.040000 0.080000 +vt 0.050000 0.080000 +vt 0.060000 0.080000 +vt 0.070000 0.080000 +vt 0.080000 0.080000 +vt 0.090000 0.080000 +vt 0.100000 0.080000 +vt 0.110000 0.080000 +vt 0.120000 0.080000 +vt 0.130000 0.080000 +vt 0.140000 0.080000 +vt 0.150000 0.080000 +vt 0.160000 0.080000 +vt 0.170000 0.080000 +vt 0.180000 0.080000 +vt 0.190000 0.080000 +vt 0.200000 0.080000 +vt 0.210000 0.080000 +vt 0.220000 0.080000 +vt 0.230000 0.080000 +vt 0.240000 0.080000 +vt 0.250000 0.080000 +vt 0.260000 0.080000 +vt 0.270000 0.080000 +vt 0.280000 0.080000 +vt 0.290000 0.080000 +vt 0.300000 0.080000 +vt 0.310000 0.080000 +vt 0.320000 0.080000 +vt 0.330000 0.080000 +vt 0.340000 0.080000 +vt 0.350000 0.080000 +vt 0.360000 0.080000 +vt 0.370000 0.080000 +vt 0.380000 0.080000 +vt 0.390000 0.080000 +vt 0.400000 0.080000 +vt 0.410000 0.080000 +vt 0.420000 0.080000 +vt 0.430000 0.080000 +vt 0.440000 0.080000 +vt 0.450000 0.080000 +vt 0.460000 0.080000 +vt 0.470000 0.080000 +vt 0.480000 0.080000 +vt 0.490000 0.080000 +vt 0.500000 0.080000 +vt 0.510000 0.080000 +vt 0.520000 0.080000 +vt 0.530000 0.080000 +vt 0.540000 0.080000 +vt 0.550000 0.080000 +vt 0.560000 0.080000 +vt 0.570000 0.080000 +vt 0.580000 0.080000 +vt 0.590000 0.080000 +vt 0.600000 0.080000 +vt 0.610000 0.080000 +vt 0.620000 0.080000 +vt 0.630000 0.080000 +vt 0.640000 0.080000 +vt 0.650000 0.080000 +vt 0.660000 0.080000 +vt 0.670000 0.080000 +vt 0.680000 0.080000 +vt 0.690000 0.080000 +vt 0.700000 0.080000 +vt 0.710000 0.080000 +vt 0.720000 0.080000 +vt 0.730000 0.080000 +vt 0.740000 0.080000 +vt 0.750000 0.080000 +vt 0.760000 0.080000 +vt 0.770000 0.080000 +vt 0.780000 0.080000 +vt 0.790000 0.080000 +vt 0.800000 0.080000 +vt 0.810000 0.080000 +vt 0.820000 0.080000 +vt 0.830000 0.080000 +vt 0.839999 0.080000 +vt 0.849999 0.080000 +vt 0.859999 0.080000 +vt 0.869999 0.080000 +vt 0.879999 0.080000 +vt 0.889999 0.080000 +vt 0.899999 0.080000 +vt 0.909999 0.080000 +vt 0.919999 0.080000 +vt 0.929999 0.080000 +vt 0.939999 0.080000 +vt 0.949999 0.080000 +vt 0.959999 0.080000 +vt 0.969999 0.080000 +vt 0.979999 0.080000 +vt 0.989999 0.080000 +vt 0.999999 0.080000 +vt 0.000000 0.090000 +vt 0.010000 0.090000 +vt 0.020000 0.090000 +vt 0.030000 0.090000 +vt 0.040000 0.090000 +vt 0.050000 0.090000 +vt 0.060000 0.090000 +vt 0.070000 0.090000 +vt 0.080000 0.090000 +vt 0.090000 0.090000 +vt 0.100000 0.090000 +vt 0.110000 0.090000 +vt 0.120000 0.090000 +vt 0.130000 0.090000 +vt 0.140000 0.090000 +vt 0.150000 0.090000 +vt 0.160000 0.090000 +vt 0.170000 0.090000 +vt 0.180000 0.090000 +vt 0.190000 0.090000 +vt 0.200000 0.090000 +vt 0.210000 0.090000 +vt 0.220000 0.090000 +vt 0.230000 0.090000 +vt 0.240000 0.090000 +vt 0.250000 0.090000 +vt 0.260000 0.090000 +vt 0.270000 0.090000 +vt 0.280000 0.090000 +vt 0.290000 0.090000 +vt 0.300000 0.090000 +vt 0.310000 0.090000 +vt 0.320000 0.090000 +vt 0.330000 0.090000 +vt 0.340000 0.090000 +vt 0.350000 0.090000 +vt 0.360000 0.090000 +vt 0.370000 0.090000 +vt 0.380000 0.090000 +vt 0.390000 0.090000 +vt 0.400000 0.090000 +vt 0.410000 0.090000 +vt 0.420000 0.090000 +vt 0.430000 0.090000 +vt 0.440000 0.090000 +vt 0.450000 0.090000 +vt 0.460000 0.090000 +vt 0.470000 0.090000 +vt 0.480000 0.090000 +vt 0.490000 0.090000 +vt 0.500000 0.090000 +vt 0.510000 0.090000 +vt 0.520000 0.090000 +vt 0.530000 0.090000 +vt 0.540000 0.090000 +vt 0.550000 0.090000 +vt 0.560000 0.090000 +vt 0.570000 0.090000 +vt 0.580000 0.090000 +vt 0.590000 0.090000 +vt 0.600000 0.090000 +vt 0.610000 0.090000 +vt 0.620000 0.090000 +vt 0.630000 0.090000 +vt 0.640000 0.090000 +vt 0.650000 0.090000 +vt 0.660000 0.090000 +vt 0.670000 0.090000 +vt 0.680000 0.090000 +vt 0.690000 0.090000 +vt 0.700000 0.090000 +vt 0.710000 0.090000 +vt 0.720000 0.090000 +vt 0.730000 0.090000 +vt 0.740000 0.090000 +vt 0.750000 0.090000 +vt 0.760000 0.090000 +vt 0.770000 0.090000 +vt 0.780000 0.090000 +vt 0.790000 0.090000 +vt 0.800000 0.090000 +vt 0.810000 0.090000 +vt 0.820000 0.090000 +vt 0.830000 0.090000 +vt 0.839999 0.090000 +vt 0.849999 0.090000 +vt 0.859999 0.090000 +vt 0.869999 0.090000 +vt 0.879999 0.090000 +vt 0.889999 0.090000 +vt 0.899999 0.090000 +vt 0.909999 0.090000 +vt 0.919999 0.090000 +vt 0.929999 0.090000 +vt 0.939999 0.090000 +vt 0.949999 0.090000 +vt 0.959999 0.090000 +vt 0.969999 0.090000 +vt 0.979999 0.090000 +vt 0.989999 0.090000 +vt 0.999999 0.090000 +vt 0.000000 0.100000 +vt 0.010000 0.100000 +vt 0.020000 0.100000 +vt 0.030000 0.100000 +vt 0.040000 0.100000 +vt 0.050000 0.100000 +vt 0.060000 0.100000 +vt 0.070000 0.100000 +vt 0.080000 0.100000 +vt 0.090000 0.100000 +vt 0.100000 0.100000 +vt 0.110000 0.100000 +vt 0.120000 0.100000 +vt 0.130000 0.100000 +vt 0.140000 0.100000 +vt 0.150000 0.100000 +vt 0.160000 0.100000 +vt 0.170000 0.100000 +vt 0.180000 0.100000 +vt 0.190000 0.100000 +vt 0.200000 0.100000 +vt 0.210000 0.100000 +vt 0.220000 0.100000 +vt 0.230000 0.100000 +vt 0.240000 0.100000 +vt 0.250000 0.100000 +vt 0.260000 0.100000 +vt 0.270000 0.100000 +vt 0.280000 0.100000 +vt 0.290000 0.100000 +vt 0.300000 0.100000 +vt 0.310000 0.100000 +vt 0.320000 0.100000 +vt 0.330000 0.100000 +vt 0.340000 0.100000 +vt 0.350000 0.100000 +vt 0.360000 0.100000 +vt 0.370000 0.100000 +vt 0.380000 0.100000 +vt 0.390000 0.100000 +vt 0.400000 0.100000 +vt 0.410000 0.100000 +vt 0.420000 0.100000 +vt 0.430000 0.100000 +vt 0.440000 0.100000 +vt 0.450000 0.100000 +vt 0.460000 0.100000 +vt 0.470000 0.100000 +vt 0.480000 0.100000 +vt 0.490000 0.100000 +vt 0.500000 0.100000 +vt 0.510000 0.100000 +vt 0.520000 0.100000 +vt 0.530000 0.100000 +vt 0.540000 0.100000 +vt 0.550000 0.100000 +vt 0.560000 0.100000 +vt 0.570000 0.100000 +vt 0.580000 0.100000 +vt 0.590000 0.100000 +vt 0.600000 0.100000 +vt 0.610000 0.100000 +vt 0.620000 0.100000 +vt 0.630000 0.100000 +vt 0.640000 0.100000 +vt 0.650000 0.100000 +vt 0.660000 0.100000 +vt 0.670000 0.100000 +vt 0.680000 0.100000 +vt 0.690000 0.100000 +vt 0.700000 0.100000 +vt 0.710000 0.100000 +vt 0.720000 0.100000 +vt 0.730000 0.100000 +vt 0.740000 0.100000 +vt 0.750000 0.100000 +vt 0.760000 0.100000 +vt 0.770000 0.100000 +vt 0.780000 0.100000 +vt 0.790000 0.100000 +vt 0.800000 0.100000 +vt 0.810000 0.100000 +vt 0.820000 0.100000 +vt 0.830000 0.100000 +vt 0.839999 0.100000 +vt 0.849999 0.100000 +vt 0.859999 0.100000 +vt 0.869999 0.100000 +vt 0.879999 0.100000 +vt 0.889999 0.100000 +vt 0.899999 0.100000 +vt 0.909999 0.100000 +vt 0.919999 0.100000 +vt 0.929999 0.100000 +vt 0.939999 0.100000 +vt 0.949999 0.100000 +vt 0.959999 0.100000 +vt 0.969999 0.100000 +vt 0.979999 0.100000 +vt 0.989999 0.100000 +vt 0.999999 0.100000 +vt 0.000000 0.110000 +vt 0.010000 0.110000 +vt 0.020000 0.110000 +vt 0.030000 0.110000 +vt 0.040000 0.110000 +vt 0.050000 0.110000 +vt 0.060000 0.110000 +vt 0.070000 0.110000 +vt 0.080000 0.110000 +vt 0.090000 0.110000 +vt 0.100000 0.110000 +vt 0.110000 0.110000 +vt 0.120000 0.110000 +vt 0.130000 0.110000 +vt 0.140000 0.110000 +vt 0.150000 0.110000 +vt 0.160000 0.110000 +vt 0.170000 0.110000 +vt 0.180000 0.110000 +vt 0.190000 0.110000 +vt 0.200000 0.110000 +vt 0.210000 0.110000 +vt 0.220000 0.110000 +vt 0.230000 0.110000 +vt 0.240000 0.110000 +vt 0.250000 0.110000 +vt 0.260000 0.110000 +vt 0.270000 0.110000 +vt 0.280000 0.110000 +vt 0.290000 0.110000 +vt 0.300000 0.110000 +vt 0.310000 0.110000 +vt 0.320000 0.110000 +vt 0.330000 0.110000 +vt 0.340000 0.110000 +vt 0.350000 0.110000 +vt 0.360000 0.110000 +vt 0.370000 0.110000 +vt 0.380000 0.110000 +vt 0.390000 0.110000 +vt 0.400000 0.110000 +vt 0.410000 0.110000 +vt 0.420000 0.110000 +vt 0.430000 0.110000 +vt 0.440000 0.110000 +vt 0.450000 0.110000 +vt 0.460000 0.110000 +vt 0.470000 0.110000 +vt 0.480000 0.110000 +vt 0.490000 0.110000 +vt 0.500000 0.110000 +vt 0.510000 0.110000 +vt 0.520000 0.110000 +vt 0.530000 0.110000 +vt 0.540000 0.110000 +vt 0.550000 0.110000 +vt 0.560000 0.110000 +vt 0.570000 0.110000 +vt 0.580000 0.110000 +vt 0.590000 0.110000 +vt 0.600000 0.110000 +vt 0.610000 0.110000 +vt 0.620000 0.110000 +vt 0.630000 0.110000 +vt 0.640000 0.110000 +vt 0.650000 0.110000 +vt 0.660000 0.110000 +vt 0.670000 0.110000 +vt 0.680000 0.110000 +vt 0.690000 0.110000 +vt 0.700000 0.110000 +vt 0.710000 0.110000 +vt 0.720000 0.110000 +vt 0.730000 0.110000 +vt 0.740000 0.110000 +vt 0.750000 0.110000 +vt 0.760000 0.110000 +vt 0.770000 0.110000 +vt 0.780000 0.110000 +vt 0.790000 0.110000 +vt 0.800000 0.110000 +vt 0.810000 0.110000 +vt 0.820000 0.110000 +vt 0.830000 0.110000 +vt 0.839999 0.110000 +vt 0.849999 0.110000 +vt 0.859999 0.110000 +vt 0.869999 0.110000 +vt 0.879999 0.110000 +vt 0.889999 0.110000 +vt 0.899999 0.110000 +vt 0.909999 0.110000 +vt 0.919999 0.110000 +vt 0.929999 0.110000 +vt 0.939999 0.110000 +vt 0.949999 0.110000 +vt 0.959999 0.110000 +vt 0.969999 0.110000 +vt 0.979999 0.110000 +vt 0.989999 0.110000 +vt 0.999999 0.110000 +vt 0.000000 0.120000 +vt 0.010000 0.120000 +vt 0.020000 0.120000 +vt 0.030000 0.120000 +vt 0.040000 0.120000 +vt 0.050000 0.120000 +vt 0.060000 0.120000 +vt 0.070000 0.120000 +vt 0.080000 0.120000 +vt 0.090000 0.120000 +vt 0.100000 0.120000 +vt 0.110000 0.120000 +vt 0.120000 0.120000 +vt 0.130000 0.120000 +vt 0.140000 0.120000 +vt 0.150000 0.120000 +vt 0.160000 0.120000 +vt 0.170000 0.120000 +vt 0.180000 0.120000 +vt 0.190000 0.120000 +vt 0.200000 0.120000 +vt 0.210000 0.120000 +vt 0.220000 0.120000 +vt 0.230000 0.120000 +vt 0.240000 0.120000 +vt 0.250000 0.120000 +vt 0.260000 0.120000 +vt 0.270000 0.120000 +vt 0.280000 0.120000 +vt 0.290000 0.120000 +vt 0.300000 0.120000 +vt 0.310000 0.120000 +vt 0.320000 0.120000 +vt 0.330000 0.120000 +vt 0.340000 0.120000 +vt 0.350000 0.120000 +vt 0.360000 0.120000 +vt 0.370000 0.120000 +vt 0.380000 0.120000 +vt 0.390000 0.120000 +vt 0.400000 0.120000 +vt 0.410000 0.120000 +vt 0.420000 0.120000 +vt 0.430000 0.120000 +vt 0.440000 0.120000 +vt 0.450000 0.120000 +vt 0.460000 0.120000 +vt 0.470000 0.120000 +vt 0.480000 0.120000 +vt 0.490000 0.120000 +vt 0.500000 0.120000 +vt 0.510000 0.120000 +vt 0.520000 0.120000 +vt 0.530000 0.120000 +vt 0.540000 0.120000 +vt 0.550000 0.120000 +vt 0.560000 0.120000 +vt 0.570000 0.120000 +vt 0.580000 0.120000 +vt 0.590000 0.120000 +vt 0.600000 0.120000 +vt 0.610000 0.120000 +vt 0.620000 0.120000 +vt 0.630000 0.120000 +vt 0.640000 0.120000 +vt 0.650000 0.120000 +vt 0.660000 0.120000 +vt 0.670000 0.120000 +vt 0.680000 0.120000 +vt 0.690000 0.120000 +vt 0.700000 0.120000 +vt 0.710000 0.120000 +vt 0.720000 0.120000 +vt 0.730000 0.120000 +vt 0.740000 0.120000 +vt 0.750000 0.120000 +vt 0.760000 0.120000 +vt 0.770000 0.120000 +vt 0.780000 0.120000 +vt 0.790000 0.120000 +vt 0.800000 0.120000 +vt 0.810000 0.120000 +vt 0.820000 0.120000 +vt 0.830000 0.120000 +vt 0.839999 0.120000 +vt 0.849999 0.120000 +vt 0.859999 0.120000 +vt 0.869999 0.120000 +vt 0.879999 0.120000 +vt 0.889999 0.120000 +vt 0.899999 0.120000 +vt 0.909999 0.120000 +vt 0.919999 0.120000 +vt 0.929999 0.120000 +vt 0.939999 0.120000 +vt 0.949999 0.120000 +vt 0.959999 0.120000 +vt 0.969999 0.120000 +vt 0.979999 0.120000 +vt 0.989999 0.120000 +vt 0.999999 0.120000 +vt 0.000000 0.130000 +vt 0.010000 0.130000 +vt 0.020000 0.130000 +vt 0.030000 0.130000 +vt 0.040000 0.130000 +vt 0.050000 0.130000 +vt 0.060000 0.130000 +vt 0.070000 0.130000 +vt 0.080000 0.130000 +vt 0.090000 0.130000 +vt 0.100000 0.130000 +vt 0.110000 0.130000 +vt 0.120000 0.130000 +vt 0.130000 0.130000 +vt 0.140000 0.130000 +vt 0.150000 0.130000 +vt 0.160000 0.130000 +vt 0.170000 0.130000 +vt 0.180000 0.130000 +vt 0.190000 0.130000 +vt 0.200000 0.130000 +vt 0.210000 0.130000 +vt 0.220000 0.130000 +vt 0.230000 0.130000 +vt 0.240000 0.130000 +vt 0.250000 0.130000 +vt 0.260000 0.130000 +vt 0.270000 0.130000 +vt 0.280000 0.130000 +vt 0.290000 0.130000 +vt 0.300000 0.130000 +vt 0.310000 0.130000 +vt 0.320000 0.130000 +vt 0.330000 0.130000 +vt 0.340000 0.130000 +vt 0.350000 0.130000 +vt 0.360000 0.130000 +vt 0.370000 0.130000 +vt 0.380000 0.130000 +vt 0.390000 0.130000 +vt 0.400000 0.130000 +vt 0.410000 0.130000 +vt 0.420000 0.130000 +vt 0.430000 0.130000 +vt 0.440000 0.130000 +vt 0.450000 0.130000 +vt 0.460000 0.130000 +vt 0.470000 0.130000 +vt 0.480000 0.130000 +vt 0.490000 0.130000 +vt 0.500000 0.130000 +vt 0.510000 0.130000 +vt 0.520000 0.130000 +vt 0.530000 0.130000 +vt 0.540000 0.130000 +vt 0.550000 0.130000 +vt 0.560000 0.130000 +vt 0.570000 0.130000 +vt 0.580000 0.130000 +vt 0.590000 0.130000 +vt 0.600000 0.130000 +vt 0.610000 0.130000 +vt 0.620000 0.130000 +vt 0.630000 0.130000 +vt 0.640000 0.130000 +vt 0.650000 0.130000 +vt 0.660000 0.130000 +vt 0.670000 0.130000 +vt 0.680000 0.130000 +vt 0.690000 0.130000 +vt 0.700000 0.130000 +vt 0.710000 0.130000 +vt 0.720000 0.130000 +vt 0.730000 0.130000 +vt 0.740000 0.130000 +vt 0.750000 0.130000 +vt 0.760000 0.130000 +vt 0.770000 0.130000 +vt 0.780000 0.130000 +vt 0.790000 0.130000 +vt 0.800000 0.130000 +vt 0.810000 0.130000 +vt 0.820000 0.130000 +vt 0.830000 0.130000 +vt 0.839999 0.130000 +vt 0.849999 0.130000 +vt 0.859999 0.130000 +vt 0.869999 0.130000 +vt 0.879999 0.130000 +vt 0.889999 0.130000 +vt 0.899999 0.130000 +vt 0.909999 0.130000 +vt 0.919999 0.130000 +vt 0.929999 0.130000 +vt 0.939999 0.130000 +vt 0.949999 0.130000 +vt 0.959999 0.130000 +vt 0.969999 0.130000 +vt 0.979999 0.130000 +vt 0.989999 0.130000 +vt 0.999999 0.130000 +vt 0.000000 0.140000 +vt 0.010000 0.140000 +vt 0.020000 0.140000 +vt 0.030000 0.140000 +vt 0.040000 0.140000 +vt 0.050000 0.140000 +vt 0.060000 0.140000 +vt 0.070000 0.140000 +vt 0.080000 0.140000 +vt 0.090000 0.140000 +vt 0.100000 0.140000 +vt 0.110000 0.140000 +vt 0.120000 0.140000 +vt 0.130000 0.140000 +vt 0.140000 0.140000 +vt 0.150000 0.140000 +vt 0.160000 0.140000 +vt 0.170000 0.140000 +vt 0.180000 0.140000 +vt 0.190000 0.140000 +vt 0.200000 0.140000 +vt 0.210000 0.140000 +vt 0.220000 0.140000 +vt 0.230000 0.140000 +vt 0.240000 0.140000 +vt 0.250000 0.140000 +vt 0.260000 0.140000 +vt 0.270000 0.140000 +vt 0.280000 0.140000 +vt 0.290000 0.140000 +vt 0.300000 0.140000 +vt 0.310000 0.140000 +vt 0.320000 0.140000 +vt 0.330000 0.140000 +vt 0.340000 0.140000 +vt 0.350000 0.140000 +vt 0.360000 0.140000 +vt 0.370000 0.140000 +vt 0.380000 0.140000 +vt 0.390000 0.140000 +vt 0.400000 0.140000 +vt 0.410000 0.140000 +vt 0.420000 0.140000 +vt 0.430000 0.140000 +vt 0.440000 0.140000 +vt 0.450000 0.140000 +vt 0.460000 0.140000 +vt 0.470000 0.140000 +vt 0.480000 0.140000 +vt 0.490000 0.140000 +vt 0.500000 0.140000 +vt 0.510000 0.140000 +vt 0.520000 0.140000 +vt 0.530000 0.140000 +vt 0.540000 0.140000 +vt 0.550000 0.140000 +vt 0.560000 0.140000 +vt 0.570000 0.140000 +vt 0.580000 0.140000 +vt 0.590000 0.140000 +vt 0.600000 0.140000 +vt 0.610000 0.140000 +vt 0.620000 0.140000 +vt 0.630000 0.140000 +vt 0.640000 0.140000 +vt 0.650000 0.140000 +vt 0.660000 0.140000 +vt 0.670000 0.140000 +vt 0.680000 0.140000 +vt 0.690000 0.140000 +vt 0.700000 0.140000 +vt 0.710000 0.140000 +vt 0.720000 0.140000 +vt 0.730000 0.140000 +vt 0.740000 0.140000 +vt 0.750000 0.140000 +vt 0.760000 0.140000 +vt 0.770000 0.140000 +vt 0.780000 0.140000 +vt 0.790000 0.140000 +vt 0.800000 0.140000 +vt 0.810000 0.140000 +vt 0.820000 0.140000 +vt 0.830000 0.140000 +vt 0.839999 0.140000 +vt 0.849999 0.140000 +vt 0.859999 0.140000 +vt 0.869999 0.140000 +vt 0.879999 0.140000 +vt 0.889999 0.140000 +vt 0.899999 0.140000 +vt 0.909999 0.140000 +vt 0.919999 0.140000 +vt 0.929999 0.140000 +vt 0.939999 0.140000 +vt 0.949999 0.140000 +vt 0.959999 0.140000 +vt 0.969999 0.140000 +vt 0.979999 0.140000 +vt 0.989999 0.140000 +vt 0.999999 0.140000 +vt 0.000000 0.150000 +vt 0.010000 0.150000 +vt 0.020000 0.150000 +vt 0.030000 0.150000 +vt 0.040000 0.150000 +vt 0.050000 0.150000 +vt 0.060000 0.150000 +vt 0.070000 0.150000 +vt 0.080000 0.150000 +vt 0.090000 0.150000 +vt 0.100000 0.150000 +vt 0.110000 0.150000 +vt 0.120000 0.150000 +vt 0.130000 0.150000 +vt 0.140000 0.150000 +vt 0.150000 0.150000 +vt 0.160000 0.150000 +vt 0.170000 0.150000 +vt 0.180000 0.150000 +vt 0.190000 0.150000 +vt 0.200000 0.150000 +vt 0.210000 0.150000 +vt 0.220000 0.150000 +vt 0.230000 0.150000 +vt 0.240000 0.150000 +vt 0.250000 0.150000 +vt 0.260000 0.150000 +vt 0.270000 0.150000 +vt 0.280000 0.150000 +vt 0.290000 0.150000 +vt 0.300000 0.150000 +vt 0.310000 0.150000 +vt 0.320000 0.150000 +vt 0.330000 0.150000 +vt 0.340000 0.150000 +vt 0.350000 0.150000 +vt 0.360000 0.150000 +vt 0.370000 0.150000 +vt 0.380000 0.150000 +vt 0.390000 0.150000 +vt 0.400000 0.150000 +vt 0.410000 0.150000 +vt 0.420000 0.150000 +vt 0.430000 0.150000 +vt 0.440000 0.150000 +vt 0.450000 0.150000 +vt 0.460000 0.150000 +vt 0.470000 0.150000 +vt 0.480000 0.150000 +vt 0.490000 0.150000 +vt 0.500000 0.150000 +vt 0.510000 0.150000 +vt 0.520000 0.150000 +vt 0.530000 0.150000 +vt 0.540000 0.150000 +vt 0.550000 0.150000 +vt 0.560000 0.150000 +vt 0.570000 0.150000 +vt 0.580000 0.150000 +vt 0.590000 0.150000 +vt 0.600000 0.150000 +vt 0.610000 0.150000 +vt 0.620000 0.150000 +vt 0.630000 0.150000 +vt 0.640000 0.150000 +vt 0.650000 0.150000 +vt 0.660000 0.150000 +vt 0.670000 0.150000 +vt 0.680000 0.150000 +vt 0.690000 0.150000 +vt 0.700000 0.150000 +vt 0.710000 0.150000 +vt 0.720000 0.150000 +vt 0.730000 0.150000 +vt 0.740000 0.150000 +vt 0.750000 0.150000 +vt 0.760000 0.150000 +vt 0.770000 0.150000 +vt 0.780000 0.150000 +vt 0.790000 0.150000 +vt 0.800000 0.150000 +vt 0.810000 0.150000 +vt 0.820000 0.150000 +vt 0.830000 0.150000 +vt 0.839999 0.150000 +vt 0.849999 0.150000 +vt 0.859999 0.150000 +vt 0.869999 0.150000 +vt 0.879999 0.150000 +vt 0.889999 0.150000 +vt 0.899999 0.150000 +vt 0.909999 0.150000 +vt 0.919999 0.150000 +vt 0.929999 0.150000 +vt 0.939999 0.150000 +vt 0.949999 0.150000 +vt 0.959999 0.150000 +vt 0.969999 0.150000 +vt 0.979999 0.150000 +vt 0.989999 0.150000 +vt 0.999999 0.150000 +vt 0.000000 0.160000 +vt 0.010000 0.160000 +vt 0.020000 0.160000 +vt 0.030000 0.160000 +vt 0.040000 0.160000 +vt 0.050000 0.160000 +vt 0.060000 0.160000 +vt 0.070000 0.160000 +vt 0.080000 0.160000 +vt 0.090000 0.160000 +vt 0.100000 0.160000 +vt 0.110000 0.160000 +vt 0.120000 0.160000 +vt 0.130000 0.160000 +vt 0.140000 0.160000 +vt 0.150000 0.160000 +vt 0.160000 0.160000 +vt 0.170000 0.160000 +vt 0.180000 0.160000 +vt 0.190000 0.160000 +vt 0.200000 0.160000 +vt 0.210000 0.160000 +vt 0.220000 0.160000 +vt 0.230000 0.160000 +vt 0.240000 0.160000 +vt 0.250000 0.160000 +vt 0.260000 0.160000 +vt 0.270000 0.160000 +vt 0.280000 0.160000 +vt 0.290000 0.160000 +vt 0.300000 0.160000 +vt 0.310000 0.160000 +vt 0.320000 0.160000 +vt 0.330000 0.160000 +vt 0.340000 0.160000 +vt 0.350000 0.160000 +vt 0.360000 0.160000 +vt 0.370000 0.160000 +vt 0.380000 0.160000 +vt 0.390000 0.160000 +vt 0.400000 0.160000 +vt 0.410000 0.160000 +vt 0.420000 0.160000 +vt 0.430000 0.160000 +vt 0.440000 0.160000 +vt 0.450000 0.160000 +vt 0.460000 0.160000 +vt 0.470000 0.160000 +vt 0.480000 0.160000 +vt 0.490000 0.160000 +vt 0.500000 0.160000 +vt 0.510000 0.160000 +vt 0.520000 0.160000 +vt 0.530000 0.160000 +vt 0.540000 0.160000 +vt 0.550000 0.160000 +vt 0.560000 0.160000 +vt 0.570000 0.160000 +vt 0.580000 0.160000 +vt 0.590000 0.160000 +vt 0.600000 0.160000 +vt 0.610000 0.160000 +vt 0.620000 0.160000 +vt 0.630000 0.160000 +vt 0.640000 0.160000 +vt 0.650000 0.160000 +vt 0.660000 0.160000 +vt 0.670000 0.160000 +vt 0.680000 0.160000 +vt 0.690000 0.160000 +vt 0.700000 0.160000 +vt 0.710000 0.160000 +vt 0.720000 0.160000 +vt 0.730000 0.160000 +vt 0.740000 0.160000 +vt 0.750000 0.160000 +vt 0.760000 0.160000 +vt 0.770000 0.160000 +vt 0.780000 0.160000 +vt 0.790000 0.160000 +vt 0.800000 0.160000 +vt 0.810000 0.160000 +vt 0.820000 0.160000 +vt 0.830000 0.160000 +vt 0.839999 0.160000 +vt 0.849999 0.160000 +vt 0.859999 0.160000 +vt 0.869999 0.160000 +vt 0.879999 0.160000 +vt 0.889999 0.160000 +vt 0.899999 0.160000 +vt 0.909999 0.160000 +vt 0.919999 0.160000 +vt 0.929999 0.160000 +vt 0.939999 0.160000 +vt 0.949999 0.160000 +vt 0.959999 0.160000 +vt 0.969999 0.160000 +vt 0.979999 0.160000 +vt 0.989999 0.160000 +vt 0.999999 0.160000 +vt 0.000000 0.170000 +vt 0.010000 0.170000 +vt 0.020000 0.170000 +vt 0.030000 0.170000 +vt 0.040000 0.170000 +vt 0.050000 0.170000 +vt 0.060000 0.170000 +vt 0.070000 0.170000 +vt 0.080000 0.170000 +vt 0.090000 0.170000 +vt 0.100000 0.170000 +vt 0.110000 0.170000 +vt 0.120000 0.170000 +vt 0.130000 0.170000 +vt 0.140000 0.170000 +vt 0.150000 0.170000 +vt 0.160000 0.170000 +vt 0.170000 0.170000 +vt 0.180000 0.170000 +vt 0.190000 0.170000 +vt 0.200000 0.170000 +vt 0.210000 0.170000 +vt 0.220000 0.170000 +vt 0.230000 0.170000 +vt 0.240000 0.170000 +vt 0.250000 0.170000 +vt 0.260000 0.170000 +vt 0.270000 0.170000 +vt 0.280000 0.170000 +vt 0.290000 0.170000 +vt 0.300000 0.170000 +vt 0.310000 0.170000 +vt 0.320000 0.170000 +vt 0.330000 0.170000 +vt 0.340000 0.170000 +vt 0.350000 0.170000 +vt 0.360000 0.170000 +vt 0.370000 0.170000 +vt 0.380000 0.170000 +vt 0.390000 0.170000 +vt 0.400000 0.170000 +vt 0.410000 0.170000 +vt 0.420000 0.170000 +vt 0.430000 0.170000 +vt 0.440000 0.170000 +vt 0.450000 0.170000 +vt 0.460000 0.170000 +vt 0.470000 0.170000 +vt 0.480000 0.170000 +vt 0.490000 0.170000 +vt 0.500000 0.170000 +vt 0.510000 0.170000 +vt 0.520000 0.170000 +vt 0.530000 0.170000 +vt 0.540000 0.170000 +vt 0.550000 0.170000 +vt 0.560000 0.170000 +vt 0.570000 0.170000 +vt 0.580000 0.170000 +vt 0.590000 0.170000 +vt 0.600000 0.170000 +vt 0.610000 0.170000 +vt 0.620000 0.170000 +vt 0.630000 0.170000 +vt 0.640000 0.170000 +vt 0.650000 0.170000 +vt 0.660000 0.170000 +vt 0.670000 0.170000 +vt 0.680000 0.170000 +vt 0.690000 0.170000 +vt 0.700000 0.170000 +vt 0.710000 0.170000 +vt 0.720000 0.170000 +vt 0.730000 0.170000 +vt 0.740000 0.170000 +vt 0.750000 0.170000 +vt 0.760000 0.170000 +vt 0.770000 0.170000 +vt 0.780000 0.170000 +vt 0.790000 0.170000 +vt 0.800000 0.170000 +vt 0.810000 0.170000 +vt 0.820000 0.170000 +vt 0.830000 0.170000 +vt 0.839999 0.170000 +vt 0.849999 0.170000 +vt 0.859999 0.170000 +vt 0.869999 0.170000 +vt 0.879999 0.170000 +vt 0.889999 0.170000 +vt 0.899999 0.170000 +vt 0.909999 0.170000 +vt 0.919999 0.170000 +vt 0.929999 0.170000 +vt 0.939999 0.170000 +vt 0.949999 0.170000 +vt 0.959999 0.170000 +vt 0.969999 0.170000 +vt 0.979999 0.170000 +vt 0.989999 0.170000 +vt 0.999999 0.170000 +vt 0.000000 0.180000 +vt 0.010000 0.180000 +vt 0.020000 0.180000 +vt 0.030000 0.180000 +vt 0.040000 0.180000 +vt 0.050000 0.180000 +vt 0.060000 0.180000 +vt 0.070000 0.180000 +vt 0.080000 0.180000 +vt 0.090000 0.180000 +vt 0.100000 0.180000 +vt 0.110000 0.180000 +vt 0.120000 0.180000 +vt 0.130000 0.180000 +vt 0.140000 0.180000 +vt 0.150000 0.180000 +vt 0.160000 0.180000 +vt 0.170000 0.180000 +vt 0.180000 0.180000 +vt 0.190000 0.180000 +vt 0.200000 0.180000 +vt 0.210000 0.180000 +vt 0.220000 0.180000 +vt 0.230000 0.180000 +vt 0.240000 0.180000 +vt 0.250000 0.180000 +vt 0.260000 0.180000 +vt 0.270000 0.180000 +vt 0.280000 0.180000 +vt 0.290000 0.180000 +vt 0.300000 0.180000 +vt 0.310000 0.180000 +vt 0.320000 0.180000 +vt 0.330000 0.180000 +vt 0.340000 0.180000 +vt 0.350000 0.180000 +vt 0.360000 0.180000 +vt 0.370000 0.180000 +vt 0.380000 0.180000 +vt 0.390000 0.180000 +vt 0.400000 0.180000 +vt 0.410000 0.180000 +vt 0.420000 0.180000 +vt 0.430000 0.180000 +vt 0.440000 0.180000 +vt 0.450000 0.180000 +vt 0.460000 0.180000 +vt 0.470000 0.180000 +vt 0.480000 0.180000 +vt 0.490000 0.180000 +vt 0.500000 0.180000 +vt 0.510000 0.180000 +vt 0.520000 0.180000 +vt 0.530000 0.180000 +vt 0.540000 0.180000 +vt 0.550000 0.180000 +vt 0.560000 0.180000 +vt 0.570000 0.180000 +vt 0.580000 0.180000 +vt 0.590000 0.180000 +vt 0.600000 0.180000 +vt 0.610000 0.180000 +vt 0.620000 0.180000 +vt 0.630000 0.180000 +vt 0.640000 0.180000 +vt 0.650000 0.180000 +vt 0.660000 0.180000 +vt 0.670000 0.180000 +vt 0.680000 0.180000 +vt 0.690000 0.180000 +vt 0.700000 0.180000 +vt 0.710000 0.180000 +vt 0.720000 0.180000 +vt 0.730000 0.180000 +vt 0.740000 0.180000 +vt 0.750000 0.180000 +vt 0.760000 0.180000 +vt 0.770000 0.180000 +vt 0.780000 0.180000 +vt 0.790000 0.180000 +vt 0.800000 0.180000 +vt 0.810000 0.180000 +vt 0.820000 0.180000 +vt 0.830000 0.180000 +vt 0.839999 0.180000 +vt 0.849999 0.180000 +vt 0.859999 0.180000 +vt 0.869999 0.180000 +vt 0.879999 0.180000 +vt 0.889999 0.180000 +vt 0.899999 0.180000 +vt 0.909999 0.180000 +vt 0.919999 0.180000 +vt 0.929999 0.180000 +vt 0.939999 0.180000 +vt 0.949999 0.180000 +vt 0.959999 0.180000 +vt 0.969999 0.180000 +vt 0.979999 0.180000 +vt 0.989999 0.180000 +vt 0.999999 0.180000 +vt 0.000000 0.190000 +vt 0.010000 0.190000 +vt 0.020000 0.190000 +vt 0.030000 0.190000 +vt 0.040000 0.190000 +vt 0.050000 0.190000 +vt 0.060000 0.190000 +vt 0.070000 0.190000 +vt 0.080000 0.190000 +vt 0.090000 0.190000 +vt 0.100000 0.190000 +vt 0.110000 0.190000 +vt 0.120000 0.190000 +vt 0.130000 0.190000 +vt 0.140000 0.190000 +vt 0.150000 0.190000 +vt 0.160000 0.190000 +vt 0.170000 0.190000 +vt 0.180000 0.190000 +vt 0.190000 0.190000 +vt 0.200000 0.190000 +vt 0.210000 0.190000 +vt 0.220000 0.190000 +vt 0.230000 0.190000 +vt 0.240000 0.190000 +vt 0.250000 0.190000 +vt 0.260000 0.190000 +vt 0.270000 0.190000 +vt 0.280000 0.190000 +vt 0.290000 0.190000 +vt 0.300000 0.190000 +vt 0.310000 0.190000 +vt 0.320000 0.190000 +vt 0.330000 0.190000 +vt 0.340000 0.190000 +vt 0.350000 0.190000 +vt 0.360000 0.190000 +vt 0.370000 0.190000 +vt 0.380000 0.190000 +vt 0.390000 0.190000 +vt 0.400000 0.190000 +vt 0.410000 0.190000 +vt 0.420000 0.190000 +vt 0.430000 0.190000 +vt 0.440000 0.190000 +vt 0.450000 0.190000 +vt 0.460000 0.190000 +vt 0.470000 0.190000 +vt 0.480000 0.190000 +vt 0.490000 0.190000 +vt 0.500000 0.190000 +vt 0.510000 0.190000 +vt 0.520000 0.190000 +vt 0.530000 0.190000 +vt 0.540000 0.190000 +vt 0.550000 0.190000 +vt 0.560000 0.190000 +vt 0.570000 0.190000 +vt 0.580000 0.190000 +vt 0.590000 0.190000 +vt 0.600000 0.190000 +vt 0.610000 0.190000 +vt 0.620000 0.190000 +vt 0.630000 0.190000 +vt 0.640000 0.190000 +vt 0.650000 0.190000 +vt 0.660000 0.190000 +vt 0.670000 0.190000 +vt 0.680000 0.190000 +vt 0.690000 0.190000 +vt 0.700000 0.190000 +vt 0.710000 0.190000 +vt 0.720000 0.190000 +vt 0.730000 0.190000 +vt 0.740000 0.190000 +vt 0.750000 0.190000 +vt 0.760000 0.190000 +vt 0.770000 0.190000 +vt 0.780000 0.190000 +vt 0.790000 0.190000 +vt 0.800000 0.190000 +vt 0.810000 0.190000 +vt 0.820000 0.190000 +vt 0.830000 0.190000 +vt 0.839999 0.190000 +vt 0.849999 0.190000 +vt 0.859999 0.190000 +vt 0.869999 0.190000 +vt 0.879999 0.190000 +vt 0.889999 0.190000 +vt 0.899999 0.190000 +vt 0.909999 0.190000 +vt 0.919999 0.190000 +vt 0.929999 0.190000 +vt 0.939999 0.190000 +vt 0.949999 0.190000 +vt 0.959999 0.190000 +vt 0.969999 0.190000 +vt 0.979999 0.190000 +vt 0.989999 0.190000 +vt 0.999999 0.190000 +vt 0.000000 0.200000 +vt 0.010000 0.200000 +vt 0.020000 0.200000 +vt 0.030000 0.200000 +vt 0.040000 0.200000 +vt 0.050000 0.200000 +vt 0.060000 0.200000 +vt 0.070000 0.200000 +vt 0.080000 0.200000 +vt 0.090000 0.200000 +vt 0.100000 0.200000 +vt 0.110000 0.200000 +vt 0.120000 0.200000 +vt 0.130000 0.200000 +vt 0.140000 0.200000 +vt 0.150000 0.200000 +vt 0.160000 0.200000 +vt 0.170000 0.200000 +vt 0.180000 0.200000 +vt 0.190000 0.200000 +vt 0.200000 0.200000 +vt 0.210000 0.200000 +vt 0.220000 0.200000 +vt 0.230000 0.200000 +vt 0.240000 0.200000 +vt 0.250000 0.200000 +vt 0.260000 0.200000 +vt 0.270000 0.200000 +vt 0.280000 0.200000 +vt 0.290000 0.200000 +vt 0.300000 0.200000 +vt 0.310000 0.200000 +vt 0.320000 0.200000 +vt 0.330000 0.200000 +vt 0.340000 0.200000 +vt 0.350000 0.200000 +vt 0.360000 0.200000 +vt 0.370000 0.200000 +vt 0.380000 0.200000 +vt 0.390000 0.200000 +vt 0.400000 0.200000 +vt 0.410000 0.200000 +vt 0.420000 0.200000 +vt 0.430000 0.200000 +vt 0.440000 0.200000 +vt 0.450000 0.200000 +vt 0.460000 0.200000 +vt 0.470000 0.200000 +vt 0.480000 0.200000 +vt 0.490000 0.200000 +vt 0.500000 0.200000 +vt 0.510000 0.200000 +vt 0.520000 0.200000 +vt 0.530000 0.200000 +vt 0.540000 0.200000 +vt 0.550000 0.200000 +vt 0.560000 0.200000 +vt 0.570000 0.200000 +vt 0.580000 0.200000 +vt 0.590000 0.200000 +vt 0.600000 0.200000 +vt 0.610000 0.200000 +vt 0.620000 0.200000 +vt 0.630000 0.200000 +vt 0.640000 0.200000 +vt 0.650000 0.200000 +vt 0.660000 0.200000 +vt 0.670000 0.200000 +vt 0.680000 0.200000 +vt 0.690000 0.200000 +vt 0.700000 0.200000 +vt 0.710000 0.200000 +vt 0.720000 0.200000 +vt 0.730000 0.200000 +vt 0.740000 0.200000 +vt 0.750000 0.200000 +vt 0.760000 0.200000 +vt 0.770000 0.200000 +vt 0.780000 0.200000 +vt 0.790000 0.200000 +vt 0.800000 0.200000 +vt 0.810000 0.200000 +vt 0.820000 0.200000 +vt 0.830000 0.200000 +vt 0.839999 0.200000 +vt 0.849999 0.200000 +vt 0.859999 0.200000 +vt 0.869999 0.200000 +vt 0.879999 0.200000 +vt 0.889999 0.200000 +vt 0.899999 0.200000 +vt 0.909999 0.200000 +vt 0.919999 0.200000 +vt 0.929999 0.200000 +vt 0.939999 0.200000 +vt 0.949999 0.200000 +vt 0.959999 0.200000 +vt 0.969999 0.200000 +vt 0.979999 0.200000 +vt 0.989999 0.200000 +vt 0.999999 0.200000 +vt 0.000000 0.210000 +vt 0.010000 0.210000 +vt 0.020000 0.210000 +vt 0.030000 0.210000 +vt 0.040000 0.210000 +vt 0.050000 0.210000 +vt 0.060000 0.210000 +vt 0.070000 0.210000 +vt 0.080000 0.210000 +vt 0.090000 0.210000 +vt 0.100000 0.210000 +vt 0.110000 0.210000 +vt 0.120000 0.210000 +vt 0.130000 0.210000 +vt 0.140000 0.210000 +vt 0.150000 0.210000 +vt 0.160000 0.210000 +vt 0.170000 0.210000 +vt 0.180000 0.210000 +vt 0.190000 0.210000 +vt 0.200000 0.210000 +vt 0.210000 0.210000 +vt 0.220000 0.210000 +vt 0.230000 0.210000 +vt 0.240000 0.210000 +vt 0.250000 0.210000 +vt 0.260000 0.210000 +vt 0.270000 0.210000 +vt 0.280000 0.210000 +vt 0.290000 0.210000 +vt 0.300000 0.210000 +vt 0.310000 0.210000 +vt 0.320000 0.210000 +vt 0.330000 0.210000 +vt 0.340000 0.210000 +vt 0.350000 0.210000 +vt 0.360000 0.210000 +vt 0.370000 0.210000 +vt 0.380000 0.210000 +vt 0.390000 0.210000 +vt 0.400000 0.210000 +vt 0.410000 0.210000 +vt 0.420000 0.210000 +vt 0.430000 0.210000 +vt 0.440000 0.210000 +vt 0.450000 0.210000 +vt 0.460000 0.210000 +vt 0.470000 0.210000 +vt 0.480000 0.210000 +vt 0.490000 0.210000 +vt 0.500000 0.210000 +vt 0.510000 0.210000 +vt 0.520000 0.210000 +vt 0.530000 0.210000 +vt 0.540000 0.210000 +vt 0.550000 0.210000 +vt 0.560000 0.210000 +vt 0.570000 0.210000 +vt 0.580000 0.210000 +vt 0.590000 0.210000 +vt 0.600000 0.210000 +vt 0.610000 0.210000 +vt 0.620000 0.210000 +vt 0.630000 0.210000 +vt 0.640000 0.210000 +vt 0.650000 0.210000 +vt 0.660000 0.210000 +vt 0.670000 0.210000 +vt 0.680000 0.210000 +vt 0.690000 0.210000 +vt 0.700000 0.210000 +vt 0.710000 0.210000 +vt 0.720000 0.210000 +vt 0.730000 0.210000 +vt 0.740000 0.210000 +vt 0.750000 0.210000 +vt 0.760000 0.210000 +vt 0.770000 0.210000 +vt 0.780000 0.210000 +vt 0.790000 0.210000 +vt 0.800000 0.210000 +vt 0.810000 0.210000 +vt 0.820000 0.210000 +vt 0.830000 0.210000 +vt 0.839999 0.210000 +vt 0.849999 0.210000 +vt 0.859999 0.210000 +vt 0.869999 0.210000 +vt 0.879999 0.210000 +vt 0.889999 0.210000 +vt 0.899999 0.210000 +vt 0.909999 0.210000 +vt 0.919999 0.210000 +vt 0.929999 0.210000 +vt 0.939999 0.210000 +vt 0.949999 0.210000 +vt 0.959999 0.210000 +vt 0.969999 0.210000 +vt 0.979999 0.210000 +vt 0.989999 0.210000 +vt 0.999999 0.210000 +vt 0.000000 0.220000 +vt 0.010000 0.220000 +vt 0.020000 0.220000 +vt 0.030000 0.220000 +vt 0.040000 0.220000 +vt 0.050000 0.220000 +vt 0.060000 0.220000 +vt 0.070000 0.220000 +vt 0.080000 0.220000 +vt 0.090000 0.220000 +vt 0.100000 0.220000 +vt 0.110000 0.220000 +vt 0.120000 0.220000 +vt 0.130000 0.220000 +vt 0.140000 0.220000 +vt 0.150000 0.220000 +vt 0.160000 0.220000 +vt 0.170000 0.220000 +vt 0.180000 0.220000 +vt 0.190000 0.220000 +vt 0.200000 0.220000 +vt 0.210000 0.220000 +vt 0.220000 0.220000 +vt 0.230000 0.220000 +vt 0.240000 0.220000 +vt 0.250000 0.220000 +vt 0.260000 0.220000 +vt 0.270000 0.220000 +vt 0.280000 0.220000 +vt 0.290000 0.220000 +vt 0.300000 0.220000 +vt 0.310000 0.220000 +vt 0.320000 0.220000 +vt 0.330000 0.220000 +vt 0.340000 0.220000 +vt 0.350000 0.220000 +vt 0.360000 0.220000 +vt 0.370000 0.220000 +vt 0.380000 0.220000 +vt 0.390000 0.220000 +vt 0.400000 0.220000 +vt 0.410000 0.220000 +vt 0.420000 0.220000 +vt 0.430000 0.220000 +vt 0.440000 0.220000 +vt 0.450000 0.220000 +vt 0.460000 0.220000 +vt 0.470000 0.220000 +vt 0.480000 0.220000 +vt 0.490000 0.220000 +vt 0.500000 0.220000 +vt 0.510000 0.220000 +vt 0.520000 0.220000 +vt 0.530000 0.220000 +vt 0.540000 0.220000 +vt 0.550000 0.220000 +vt 0.560000 0.220000 +vt 0.570000 0.220000 +vt 0.580000 0.220000 +vt 0.590000 0.220000 +vt 0.600000 0.220000 +vt 0.610000 0.220000 +vt 0.620000 0.220000 +vt 0.630000 0.220000 +vt 0.640000 0.220000 +vt 0.650000 0.220000 +vt 0.660000 0.220000 +vt 0.670000 0.220000 +vt 0.680000 0.220000 +vt 0.690000 0.220000 +vt 0.700000 0.220000 +vt 0.710000 0.220000 +vt 0.720000 0.220000 +vt 0.730000 0.220000 +vt 0.740000 0.220000 +vt 0.750000 0.220000 +vt 0.760000 0.220000 +vt 0.770000 0.220000 +vt 0.780000 0.220000 +vt 0.790000 0.220000 +vt 0.800000 0.220000 +vt 0.810000 0.220000 +vt 0.820000 0.220000 +vt 0.830000 0.220000 +vt 0.839999 0.220000 +vt 0.849999 0.220000 +vt 0.859999 0.220000 +vt 0.869999 0.220000 +vt 0.879999 0.220000 +vt 0.889999 0.220000 +vt 0.899999 0.220000 +vt 0.909999 0.220000 +vt 0.919999 0.220000 +vt 0.929999 0.220000 +vt 0.939999 0.220000 +vt 0.949999 0.220000 +vt 0.959999 0.220000 +vt 0.969999 0.220000 +vt 0.979999 0.220000 +vt 0.989999 0.220000 +vt 0.999999 0.220000 +vt 0.000000 0.230000 +vt 0.010000 0.230000 +vt 0.020000 0.230000 +vt 0.030000 0.230000 +vt 0.040000 0.230000 +vt 0.050000 0.230000 +vt 0.060000 0.230000 +vt 0.070000 0.230000 +vt 0.080000 0.230000 +vt 0.090000 0.230000 +vt 0.100000 0.230000 +vt 0.110000 0.230000 +vt 0.120000 0.230000 +vt 0.130000 0.230000 +vt 0.140000 0.230000 +vt 0.150000 0.230000 +vt 0.160000 0.230000 +vt 0.170000 0.230000 +vt 0.180000 0.230000 +vt 0.190000 0.230000 +vt 0.200000 0.230000 +vt 0.210000 0.230000 +vt 0.220000 0.230000 +vt 0.230000 0.230000 +vt 0.240000 0.230000 +vt 0.250000 0.230000 +vt 0.260000 0.230000 +vt 0.270000 0.230000 +vt 0.280000 0.230000 +vt 0.290000 0.230000 +vt 0.300000 0.230000 +vt 0.310000 0.230000 +vt 0.320000 0.230000 +vt 0.330000 0.230000 +vt 0.340000 0.230000 +vt 0.350000 0.230000 +vt 0.360000 0.230000 +vt 0.370000 0.230000 +vt 0.380000 0.230000 +vt 0.390000 0.230000 +vt 0.400000 0.230000 +vt 0.410000 0.230000 +vt 0.420000 0.230000 +vt 0.430000 0.230000 +vt 0.440000 0.230000 +vt 0.450000 0.230000 +vt 0.460000 0.230000 +vt 0.470000 0.230000 +vt 0.480000 0.230000 +vt 0.490000 0.230000 +vt 0.500000 0.230000 +vt 0.510000 0.230000 +vt 0.520000 0.230000 +vt 0.530000 0.230000 +vt 0.540000 0.230000 +vt 0.550000 0.230000 +vt 0.560000 0.230000 +vt 0.570000 0.230000 +vt 0.580000 0.230000 +vt 0.590000 0.230000 +vt 0.600000 0.230000 +vt 0.610000 0.230000 +vt 0.620000 0.230000 +vt 0.630000 0.230000 +vt 0.640000 0.230000 +vt 0.650000 0.230000 +vt 0.660000 0.230000 +vt 0.670000 0.230000 +vt 0.680000 0.230000 +vt 0.690000 0.230000 +vt 0.700000 0.230000 +vt 0.710000 0.230000 +vt 0.720000 0.230000 +vt 0.730000 0.230000 +vt 0.740000 0.230000 +vt 0.750000 0.230000 +vt 0.760000 0.230000 +vt 0.770000 0.230000 +vt 0.780000 0.230000 +vt 0.790000 0.230000 +vt 0.800000 0.230000 +vt 0.810000 0.230000 +vt 0.820000 0.230000 +vt 0.830000 0.230000 +vt 0.839999 0.230000 +vt 0.849999 0.230000 +vt 0.859999 0.230000 +vt 0.869999 0.230000 +vt 0.879999 0.230000 +vt 0.889999 0.230000 +vt 0.899999 0.230000 +vt 0.909999 0.230000 +vt 0.919999 0.230000 +vt 0.929999 0.230000 +vt 0.939999 0.230000 +vt 0.949999 0.230000 +vt 0.959999 0.230000 +vt 0.969999 0.230000 +vt 0.979999 0.230000 +vt 0.989999 0.230000 +vt 0.999999 0.230000 +vt 0.000000 0.240000 +vt 0.010000 0.240000 +vt 0.020000 0.240000 +vt 0.030000 0.240000 +vt 0.040000 0.240000 +vt 0.050000 0.240000 +vt 0.060000 0.240000 +vt 0.070000 0.240000 +vt 0.080000 0.240000 +vt 0.090000 0.240000 +vt 0.100000 0.240000 +vt 0.110000 0.240000 +vt 0.120000 0.240000 +vt 0.130000 0.240000 +vt 0.140000 0.240000 +vt 0.150000 0.240000 +vt 0.160000 0.240000 +vt 0.170000 0.240000 +vt 0.180000 0.240000 +vt 0.190000 0.240000 +vt 0.200000 0.240000 +vt 0.210000 0.240000 +vt 0.220000 0.240000 +vt 0.230000 0.240000 +vt 0.240000 0.240000 +vt 0.250000 0.240000 +vt 0.260000 0.240000 +vt 0.270000 0.240000 +vt 0.280000 0.240000 +vt 0.290000 0.240000 +vt 0.300000 0.240000 +vt 0.310000 0.240000 +vt 0.320000 0.240000 +vt 0.330000 0.240000 +vt 0.340000 0.240000 +vt 0.350000 0.240000 +vt 0.360000 0.240000 +vt 0.370000 0.240000 +vt 0.380000 0.240000 +vt 0.390000 0.240000 +vt 0.400000 0.240000 +vt 0.410000 0.240000 +vt 0.420000 0.240000 +vt 0.430000 0.240000 +vt 0.440000 0.240000 +vt 0.450000 0.240000 +vt 0.460000 0.240000 +vt 0.470000 0.240000 +vt 0.480000 0.240000 +vt 0.490000 0.240000 +vt 0.500000 0.240000 +vt 0.510000 0.240000 +vt 0.520000 0.240000 +vt 0.530000 0.240000 +vt 0.540000 0.240000 +vt 0.550000 0.240000 +vt 0.560000 0.240000 +vt 0.570000 0.240000 +vt 0.580000 0.240000 +vt 0.590000 0.240000 +vt 0.600000 0.240000 +vt 0.610000 0.240000 +vt 0.620000 0.240000 +vt 0.630000 0.240000 +vt 0.640000 0.240000 +vt 0.650000 0.240000 +vt 0.660000 0.240000 +vt 0.670000 0.240000 +vt 0.680000 0.240000 +vt 0.690000 0.240000 +vt 0.700000 0.240000 +vt 0.710000 0.240000 +vt 0.720000 0.240000 +vt 0.730000 0.240000 +vt 0.740000 0.240000 +vt 0.750000 0.240000 +vt 0.760000 0.240000 +vt 0.770000 0.240000 +vt 0.780000 0.240000 +vt 0.790000 0.240000 +vt 0.800000 0.240000 +vt 0.810000 0.240000 +vt 0.820000 0.240000 +vt 0.830000 0.240000 +vt 0.839999 0.240000 +vt 0.849999 0.240000 +vt 0.859999 0.240000 +vt 0.869999 0.240000 +vt 0.879999 0.240000 +vt 0.889999 0.240000 +vt 0.899999 0.240000 +vt 0.909999 0.240000 +vt 0.919999 0.240000 +vt 0.929999 0.240000 +vt 0.939999 0.240000 +vt 0.949999 0.240000 +vt 0.959999 0.240000 +vt 0.969999 0.240000 +vt 0.979999 0.240000 +vt 0.989999 0.240000 +vt 0.999999 0.240000 +vt 0.000000 0.250000 +vt 0.010000 0.250000 +vt 0.020000 0.250000 +vt 0.030000 0.250000 +vt 0.040000 0.250000 +vt 0.050000 0.250000 +vt 0.060000 0.250000 +vt 0.070000 0.250000 +vt 0.080000 0.250000 +vt 0.090000 0.250000 +vt 0.100000 0.250000 +vt 0.110000 0.250000 +vt 0.120000 0.250000 +vt 0.130000 0.250000 +vt 0.140000 0.250000 +vt 0.150000 0.250000 +vt 0.160000 0.250000 +vt 0.170000 0.250000 +vt 0.180000 0.250000 +vt 0.190000 0.250000 +vt 0.200000 0.250000 +vt 0.210000 0.250000 +vt 0.220000 0.250000 +vt 0.230000 0.250000 +vt 0.240000 0.250000 +vt 0.250000 0.250000 +vt 0.260000 0.250000 +vt 0.270000 0.250000 +vt 0.280000 0.250000 +vt 0.290000 0.250000 +vt 0.300000 0.250000 +vt 0.310000 0.250000 +vt 0.320000 0.250000 +vt 0.330000 0.250000 +vt 0.340000 0.250000 +vt 0.350000 0.250000 +vt 0.360000 0.250000 +vt 0.370000 0.250000 +vt 0.380000 0.250000 +vt 0.390000 0.250000 +vt 0.400000 0.250000 +vt 0.410000 0.250000 +vt 0.420000 0.250000 +vt 0.430000 0.250000 +vt 0.440000 0.250000 +vt 0.450000 0.250000 +vt 0.460000 0.250000 +vt 0.470000 0.250000 +vt 0.480000 0.250000 +vt 0.490000 0.250000 +vt 0.500000 0.250000 +vt 0.510000 0.250000 +vt 0.520000 0.250000 +vt 0.530000 0.250000 +vt 0.540000 0.250000 +vt 0.550000 0.250000 +vt 0.560000 0.250000 +vt 0.570000 0.250000 +vt 0.580000 0.250000 +vt 0.590000 0.250000 +vt 0.600000 0.250000 +vt 0.610000 0.250000 +vt 0.620000 0.250000 +vt 0.630000 0.250000 +vt 0.640000 0.250000 +vt 0.650000 0.250000 +vt 0.660000 0.250000 +vt 0.670000 0.250000 +vt 0.680000 0.250000 +vt 0.690000 0.250000 +vt 0.700000 0.250000 +vt 0.710000 0.250000 +vt 0.720000 0.250000 +vt 0.730000 0.250000 +vt 0.740000 0.250000 +vt 0.750000 0.250000 +vt 0.760000 0.250000 +vt 0.770000 0.250000 +vt 0.780000 0.250000 +vt 0.790000 0.250000 +vt 0.800000 0.250000 +vt 0.810000 0.250000 +vt 0.820000 0.250000 +vt 0.830000 0.250000 +vt 0.839999 0.250000 +vt 0.849999 0.250000 +vt 0.859999 0.250000 +vt 0.869999 0.250000 +vt 0.879999 0.250000 +vt 0.889999 0.250000 +vt 0.899999 0.250000 +vt 0.909999 0.250000 +vt 0.919999 0.250000 +vt 0.929999 0.250000 +vt 0.939999 0.250000 +vt 0.949999 0.250000 +vt 0.959999 0.250000 +vt 0.969999 0.250000 +vt 0.979999 0.250000 +vt 0.989999 0.250000 +vt 0.999999 0.250000 +vt 0.000000 0.260000 +vt 0.010000 0.260000 +vt 0.020000 0.260000 +vt 0.030000 0.260000 +vt 0.040000 0.260000 +vt 0.050000 0.260000 +vt 0.060000 0.260000 +vt 0.070000 0.260000 +vt 0.080000 0.260000 +vt 0.090000 0.260000 +vt 0.100000 0.260000 +vt 0.110000 0.260000 +vt 0.120000 0.260000 +vt 0.130000 0.260000 +vt 0.140000 0.260000 +vt 0.150000 0.260000 +vt 0.160000 0.260000 +vt 0.170000 0.260000 +vt 0.180000 0.260000 +vt 0.190000 0.260000 +vt 0.200000 0.260000 +vt 0.210000 0.260000 +vt 0.220000 0.260000 +vt 0.230000 0.260000 +vt 0.240000 0.260000 +vt 0.250000 0.260000 +vt 0.260000 0.260000 +vt 0.270000 0.260000 +vt 0.280000 0.260000 +vt 0.290000 0.260000 +vt 0.300000 0.260000 +vt 0.310000 0.260000 +vt 0.320000 0.260000 +vt 0.330000 0.260000 +vt 0.340000 0.260000 +vt 0.350000 0.260000 +vt 0.360000 0.260000 +vt 0.370000 0.260000 +vt 0.380000 0.260000 +vt 0.390000 0.260000 +vt 0.400000 0.260000 +vt 0.410000 0.260000 +vt 0.420000 0.260000 +vt 0.430000 0.260000 +vt 0.440000 0.260000 +vt 0.450000 0.260000 +vt 0.460000 0.260000 +vt 0.470000 0.260000 +vt 0.480000 0.260000 +vt 0.490000 0.260000 +vt 0.500000 0.260000 +vt 0.510000 0.260000 +vt 0.520000 0.260000 +vt 0.530000 0.260000 +vt 0.540000 0.260000 +vt 0.550000 0.260000 +vt 0.560000 0.260000 +vt 0.570000 0.260000 +vt 0.580000 0.260000 +vt 0.590000 0.260000 +vt 0.600000 0.260000 +vt 0.610000 0.260000 +vt 0.620000 0.260000 +vt 0.630000 0.260000 +vt 0.640000 0.260000 +vt 0.650000 0.260000 +vt 0.660000 0.260000 +vt 0.670000 0.260000 +vt 0.680000 0.260000 +vt 0.690000 0.260000 +vt 0.700000 0.260000 +vt 0.710000 0.260000 +vt 0.720000 0.260000 +vt 0.730000 0.260000 +vt 0.740000 0.260000 +vt 0.750000 0.260000 +vt 0.760000 0.260000 +vt 0.770000 0.260000 +vt 0.780000 0.260000 +vt 0.790000 0.260000 +vt 0.800000 0.260000 +vt 0.810000 0.260000 +vt 0.820000 0.260000 +vt 0.830000 0.260000 +vt 0.839999 0.260000 +vt 0.849999 0.260000 +vt 0.859999 0.260000 +vt 0.869999 0.260000 +vt 0.879999 0.260000 +vt 0.889999 0.260000 +vt 0.899999 0.260000 +vt 0.909999 0.260000 +vt 0.919999 0.260000 +vt 0.929999 0.260000 +vt 0.939999 0.260000 +vt 0.949999 0.260000 +vt 0.959999 0.260000 +vt 0.969999 0.260000 +vt 0.979999 0.260000 +vt 0.989999 0.260000 +vt 0.999999 0.260000 +vt 0.000000 0.270000 +vt 0.010000 0.270000 +vt 0.020000 0.270000 +vt 0.030000 0.270000 +vt 0.040000 0.270000 +vt 0.050000 0.270000 +vt 0.060000 0.270000 +vt 0.070000 0.270000 +vt 0.080000 0.270000 +vt 0.090000 0.270000 +vt 0.100000 0.270000 +vt 0.110000 0.270000 +vt 0.120000 0.270000 +vt 0.130000 0.270000 +vt 0.140000 0.270000 +vt 0.150000 0.270000 +vt 0.160000 0.270000 +vt 0.170000 0.270000 +vt 0.180000 0.270000 +vt 0.190000 0.270000 +vt 0.200000 0.270000 +vt 0.210000 0.270000 +vt 0.220000 0.270000 +vt 0.230000 0.270000 +vt 0.240000 0.270000 +vt 0.250000 0.270000 +vt 0.260000 0.270000 +vt 0.270000 0.270000 +vt 0.280000 0.270000 +vt 0.290000 0.270000 +vt 0.300000 0.270000 +vt 0.310000 0.270000 +vt 0.320000 0.270000 +vt 0.330000 0.270000 +vt 0.340000 0.270000 +vt 0.350000 0.270000 +vt 0.360000 0.270000 +vt 0.370000 0.270000 +vt 0.380000 0.270000 +vt 0.390000 0.270000 +vt 0.400000 0.270000 +vt 0.410000 0.270000 +vt 0.420000 0.270000 +vt 0.430000 0.270000 +vt 0.440000 0.270000 +vt 0.450000 0.270000 +vt 0.460000 0.270000 +vt 0.470000 0.270000 +vt 0.480000 0.270000 +vt 0.490000 0.270000 +vt 0.500000 0.270000 +vt 0.510000 0.270000 +vt 0.520000 0.270000 +vt 0.530000 0.270000 +vt 0.540000 0.270000 +vt 0.550000 0.270000 +vt 0.560000 0.270000 +vt 0.570000 0.270000 +vt 0.580000 0.270000 +vt 0.590000 0.270000 +vt 0.600000 0.270000 +vt 0.610000 0.270000 +vt 0.620000 0.270000 +vt 0.630000 0.270000 +vt 0.640000 0.270000 +vt 0.650000 0.270000 +vt 0.660000 0.270000 +vt 0.670000 0.270000 +vt 0.680000 0.270000 +vt 0.690000 0.270000 +vt 0.700000 0.270000 +vt 0.710000 0.270000 +vt 0.720000 0.270000 +vt 0.730000 0.270000 +vt 0.740000 0.270000 +vt 0.750000 0.270000 +vt 0.760000 0.270000 +vt 0.770000 0.270000 +vt 0.780000 0.270000 +vt 0.790000 0.270000 +vt 0.800000 0.270000 +vt 0.810000 0.270000 +vt 0.820000 0.270000 +vt 0.830000 0.270000 +vt 0.839999 0.270000 +vt 0.849999 0.270000 +vt 0.859999 0.270000 +vt 0.869999 0.270000 +vt 0.879999 0.270000 +vt 0.889999 0.270000 +vt 0.899999 0.270000 +vt 0.909999 0.270000 +vt 0.919999 0.270000 +vt 0.929999 0.270000 +vt 0.939999 0.270000 +vt 0.949999 0.270000 +vt 0.959999 0.270000 +vt 0.969999 0.270000 +vt 0.979999 0.270000 +vt 0.989999 0.270000 +vt 0.999999 0.270000 +vt 0.000000 0.280000 +vt 0.010000 0.280000 +vt 0.020000 0.280000 +vt 0.030000 0.280000 +vt 0.040000 0.280000 +vt 0.050000 0.280000 +vt 0.060000 0.280000 +vt 0.070000 0.280000 +vt 0.080000 0.280000 +vt 0.090000 0.280000 +vt 0.100000 0.280000 +vt 0.110000 0.280000 +vt 0.120000 0.280000 +vt 0.130000 0.280000 +vt 0.140000 0.280000 +vt 0.150000 0.280000 +vt 0.160000 0.280000 +vt 0.170000 0.280000 +vt 0.180000 0.280000 +vt 0.190000 0.280000 +vt 0.200000 0.280000 +vt 0.210000 0.280000 +vt 0.220000 0.280000 +vt 0.230000 0.280000 +vt 0.240000 0.280000 +vt 0.250000 0.280000 +vt 0.260000 0.280000 +vt 0.270000 0.280000 +vt 0.280000 0.280000 +vt 0.290000 0.280000 +vt 0.300000 0.280000 +vt 0.310000 0.280000 +vt 0.320000 0.280000 +vt 0.330000 0.280000 +vt 0.340000 0.280000 +vt 0.350000 0.280000 +vt 0.360000 0.280000 +vt 0.370000 0.280000 +vt 0.380000 0.280000 +vt 0.390000 0.280000 +vt 0.400000 0.280000 +vt 0.410000 0.280000 +vt 0.420000 0.280000 +vt 0.430000 0.280000 +vt 0.440000 0.280000 +vt 0.450000 0.280000 +vt 0.460000 0.280000 +vt 0.470000 0.280000 +vt 0.480000 0.280000 +vt 0.490000 0.280000 +vt 0.500000 0.280000 +vt 0.510000 0.280000 +vt 0.520000 0.280000 +vt 0.530000 0.280000 +vt 0.540000 0.280000 +vt 0.550000 0.280000 +vt 0.560000 0.280000 +vt 0.570000 0.280000 +vt 0.580000 0.280000 +vt 0.590000 0.280000 +vt 0.600000 0.280000 +vt 0.610000 0.280000 +vt 0.620000 0.280000 +vt 0.630000 0.280000 +vt 0.640000 0.280000 +vt 0.650000 0.280000 +vt 0.660000 0.280000 +vt 0.670000 0.280000 +vt 0.680000 0.280000 +vt 0.690000 0.280000 +vt 0.700000 0.280000 +vt 0.710000 0.280000 +vt 0.720000 0.280000 +vt 0.730000 0.280000 +vt 0.740000 0.280000 +vt 0.750000 0.280000 +vt 0.760000 0.280000 +vt 0.770000 0.280000 +vt 0.780000 0.280000 +vt 0.790000 0.280000 +vt 0.800000 0.280000 +vt 0.810000 0.280000 +vt 0.820000 0.280000 +vt 0.830000 0.280000 +vt 0.839999 0.280000 +vt 0.849999 0.280000 +vt 0.859999 0.280000 +vt 0.869999 0.280000 +vt 0.879999 0.280000 +vt 0.889999 0.280000 +vt 0.899999 0.280000 +vt 0.909999 0.280000 +vt 0.919999 0.280000 +vt 0.929999 0.280000 +vt 0.939999 0.280000 +vt 0.949999 0.280000 +vt 0.959999 0.280000 +vt 0.969999 0.280000 +vt 0.979999 0.280000 +vt 0.989999 0.280000 +vt 0.999999 0.280000 +vt 0.000000 0.290000 +vt 0.010000 0.290000 +vt 0.020000 0.290000 +vt 0.030000 0.290000 +vt 0.040000 0.290000 +vt 0.050000 0.290000 +vt 0.060000 0.290000 +vt 0.070000 0.290000 +vt 0.080000 0.290000 +vt 0.090000 0.290000 +vt 0.100000 0.290000 +vt 0.110000 0.290000 +vt 0.120000 0.290000 +vt 0.130000 0.290000 +vt 0.140000 0.290000 +vt 0.150000 0.290000 +vt 0.160000 0.290000 +vt 0.170000 0.290000 +vt 0.180000 0.290000 +vt 0.190000 0.290000 +vt 0.200000 0.290000 +vt 0.210000 0.290000 +vt 0.220000 0.290000 +vt 0.230000 0.290000 +vt 0.240000 0.290000 +vt 0.250000 0.290000 +vt 0.260000 0.290000 +vt 0.270000 0.290000 +vt 0.280000 0.290000 +vt 0.290000 0.290000 +vt 0.300000 0.290000 +vt 0.310000 0.290000 +vt 0.320000 0.290000 +vt 0.330000 0.290000 +vt 0.340000 0.290000 +vt 0.350000 0.290000 +vt 0.360000 0.290000 +vt 0.370000 0.290000 +vt 0.380000 0.290000 +vt 0.390000 0.290000 +vt 0.400000 0.290000 +vt 0.410000 0.290000 +vt 0.420000 0.290000 +vt 0.430000 0.290000 +vt 0.440000 0.290000 +vt 0.450000 0.290000 +vt 0.460000 0.290000 +vt 0.470000 0.290000 +vt 0.480000 0.290000 +vt 0.490000 0.290000 +vt 0.500000 0.290000 +vt 0.510000 0.290000 +vt 0.520000 0.290000 +vt 0.530000 0.290000 +vt 0.540000 0.290000 +vt 0.550000 0.290000 +vt 0.560000 0.290000 +vt 0.570000 0.290000 +vt 0.580000 0.290000 +vt 0.590000 0.290000 +vt 0.600000 0.290000 +vt 0.610000 0.290000 +vt 0.620000 0.290000 +vt 0.630000 0.290000 +vt 0.640000 0.290000 +vt 0.650000 0.290000 +vt 0.660000 0.290000 +vt 0.670000 0.290000 +vt 0.680000 0.290000 +vt 0.690000 0.290000 +vt 0.700000 0.290000 +vt 0.710000 0.290000 +vt 0.720000 0.290000 +vt 0.730000 0.290000 +vt 0.740000 0.290000 +vt 0.750000 0.290000 +vt 0.760000 0.290000 +vt 0.770000 0.290000 +vt 0.780000 0.290000 +vt 0.790000 0.290000 +vt 0.800000 0.290000 +vt 0.810000 0.290000 +vt 0.820000 0.290000 +vt 0.830000 0.290000 +vt 0.839999 0.290000 +vt 0.849999 0.290000 +vt 0.859999 0.290000 +vt 0.869999 0.290000 +vt 0.879999 0.290000 +vt 0.889999 0.290000 +vt 0.899999 0.290000 +vt 0.909999 0.290000 +vt 0.919999 0.290000 +vt 0.929999 0.290000 +vt 0.939999 0.290000 +vt 0.949999 0.290000 +vt 0.959999 0.290000 +vt 0.969999 0.290000 +vt 0.979999 0.290000 +vt 0.989999 0.290000 +vt 0.999999 0.290000 +vt 0.000000 0.300000 +vt 0.010000 0.300000 +vt 0.020000 0.300000 +vt 0.030000 0.300000 +vt 0.040000 0.300000 +vt 0.050000 0.300000 +vt 0.060000 0.300000 +vt 0.070000 0.300000 +vt 0.080000 0.300000 +vt 0.090000 0.300000 +vt 0.100000 0.300000 +vt 0.110000 0.300000 +vt 0.120000 0.300000 +vt 0.130000 0.300000 +vt 0.140000 0.300000 +vt 0.150000 0.300000 +vt 0.160000 0.300000 +vt 0.170000 0.300000 +vt 0.180000 0.300000 +vt 0.190000 0.300000 +vt 0.200000 0.300000 +vt 0.210000 0.300000 +vt 0.220000 0.300000 +vt 0.230000 0.300000 +vt 0.240000 0.300000 +vt 0.250000 0.300000 +vt 0.260000 0.300000 +vt 0.270000 0.300000 +vt 0.280000 0.300000 +vt 0.290000 0.300000 +vt 0.300000 0.300000 +vt 0.310000 0.300000 +vt 0.320000 0.300000 +vt 0.330000 0.300000 +vt 0.340000 0.300000 +vt 0.350000 0.300000 +vt 0.360000 0.300000 +vt 0.370000 0.300000 +vt 0.380000 0.300000 +vt 0.390000 0.300000 +vt 0.400000 0.300000 +vt 0.410000 0.300000 +vt 0.420000 0.300000 +vt 0.430000 0.300000 +vt 0.440000 0.300000 +vt 0.450000 0.300000 +vt 0.460000 0.300000 +vt 0.470000 0.300000 +vt 0.480000 0.300000 +vt 0.490000 0.300000 +vt 0.500000 0.300000 +vt 0.510000 0.300000 +vt 0.520000 0.300000 +vt 0.530000 0.300000 +vt 0.540000 0.300000 +vt 0.550000 0.300000 +vt 0.560000 0.300000 +vt 0.570000 0.300000 +vt 0.580000 0.300000 +vt 0.590000 0.300000 +vt 0.600000 0.300000 +vt 0.610000 0.300000 +vt 0.620000 0.300000 +vt 0.630000 0.300000 +vt 0.640000 0.300000 +vt 0.650000 0.300000 +vt 0.660000 0.300000 +vt 0.670000 0.300000 +vt 0.680000 0.300000 +vt 0.690000 0.300000 +vt 0.700000 0.300000 +vt 0.710000 0.300000 +vt 0.720000 0.300000 +vt 0.730000 0.300000 +vt 0.740000 0.300000 +vt 0.750000 0.300000 +vt 0.760000 0.300000 +vt 0.770000 0.300000 +vt 0.780000 0.300000 +vt 0.790000 0.300000 +vt 0.800000 0.300000 +vt 0.810000 0.300000 +vt 0.820000 0.300000 +vt 0.830000 0.300000 +vt 0.839999 0.300000 +vt 0.849999 0.300000 +vt 0.859999 0.300000 +vt 0.869999 0.300000 +vt 0.879999 0.300000 +vt 0.889999 0.300000 +vt 0.899999 0.300000 +vt 0.909999 0.300000 +vt 0.919999 0.300000 +vt 0.929999 0.300000 +vt 0.939999 0.300000 +vt 0.949999 0.300000 +vt 0.959999 0.300000 +vt 0.969999 0.300000 +vt 0.979999 0.300000 +vt 0.989999 0.300000 +vt 0.999999 0.300000 +vt 0.000000 0.310000 +vt 0.010000 0.310000 +vt 0.020000 0.310000 +vt 0.030000 0.310000 +vt 0.040000 0.310000 +vt 0.050000 0.310000 +vt 0.060000 0.310000 +vt 0.070000 0.310000 +vt 0.080000 0.310000 +vt 0.090000 0.310000 +vt 0.100000 0.310000 +vt 0.110000 0.310000 +vt 0.120000 0.310000 +vt 0.130000 0.310000 +vt 0.140000 0.310000 +vt 0.150000 0.310000 +vt 0.160000 0.310000 +vt 0.170000 0.310000 +vt 0.180000 0.310000 +vt 0.190000 0.310000 +vt 0.200000 0.310000 +vt 0.210000 0.310000 +vt 0.220000 0.310000 +vt 0.230000 0.310000 +vt 0.240000 0.310000 +vt 0.250000 0.310000 +vt 0.260000 0.310000 +vt 0.270000 0.310000 +vt 0.280000 0.310000 +vt 0.290000 0.310000 +vt 0.300000 0.310000 +vt 0.310000 0.310000 +vt 0.320000 0.310000 +vt 0.330000 0.310000 +vt 0.340000 0.310000 +vt 0.350000 0.310000 +vt 0.360000 0.310000 +vt 0.370000 0.310000 +vt 0.380000 0.310000 +vt 0.390000 0.310000 +vt 0.400000 0.310000 +vt 0.410000 0.310000 +vt 0.420000 0.310000 +vt 0.430000 0.310000 +vt 0.440000 0.310000 +vt 0.450000 0.310000 +vt 0.460000 0.310000 +vt 0.470000 0.310000 +vt 0.480000 0.310000 +vt 0.490000 0.310000 +vt 0.500000 0.310000 +vt 0.510000 0.310000 +vt 0.520000 0.310000 +vt 0.530000 0.310000 +vt 0.540000 0.310000 +vt 0.550000 0.310000 +vt 0.560000 0.310000 +vt 0.570000 0.310000 +vt 0.580000 0.310000 +vt 0.590000 0.310000 +vt 0.600000 0.310000 +vt 0.610000 0.310000 +vt 0.620000 0.310000 +vt 0.630000 0.310000 +vt 0.640000 0.310000 +vt 0.650000 0.310000 +vt 0.660000 0.310000 +vt 0.670000 0.310000 +vt 0.680000 0.310000 +vt 0.690000 0.310000 +vt 0.700000 0.310000 +vt 0.710000 0.310000 +vt 0.720000 0.310000 +vt 0.730000 0.310000 +vt 0.740000 0.310000 +vt 0.750000 0.310000 +vt 0.760000 0.310000 +vt 0.770000 0.310000 +vt 0.780000 0.310000 +vt 0.790000 0.310000 +vt 0.800000 0.310000 +vt 0.810000 0.310000 +vt 0.820000 0.310000 +vt 0.830000 0.310000 +vt 0.839999 0.310000 +vt 0.849999 0.310000 +vt 0.859999 0.310000 +vt 0.869999 0.310000 +vt 0.879999 0.310000 +vt 0.889999 0.310000 +vt 0.899999 0.310000 +vt 0.909999 0.310000 +vt 0.919999 0.310000 +vt 0.929999 0.310000 +vt 0.939999 0.310000 +vt 0.949999 0.310000 +vt 0.959999 0.310000 +vt 0.969999 0.310000 +vt 0.979999 0.310000 +vt 0.989999 0.310000 +vt 0.999999 0.310000 +vt 0.000000 0.320000 +vt 0.010000 0.320000 +vt 0.020000 0.320000 +vt 0.030000 0.320000 +vt 0.040000 0.320000 +vt 0.050000 0.320000 +vt 0.060000 0.320000 +vt 0.070000 0.320000 +vt 0.080000 0.320000 +vt 0.090000 0.320000 +vt 0.100000 0.320000 +vt 0.110000 0.320000 +vt 0.120000 0.320000 +vt 0.130000 0.320000 +vt 0.140000 0.320000 +vt 0.150000 0.320000 +vt 0.160000 0.320000 +vt 0.170000 0.320000 +vt 0.180000 0.320000 +vt 0.190000 0.320000 +vt 0.200000 0.320000 +vt 0.210000 0.320000 +vt 0.220000 0.320000 +vt 0.230000 0.320000 +vt 0.240000 0.320000 +vt 0.250000 0.320000 +vt 0.260000 0.320000 +vt 0.270000 0.320000 +vt 0.280000 0.320000 +vt 0.290000 0.320000 +vt 0.300000 0.320000 +vt 0.310000 0.320000 +vt 0.320000 0.320000 +vt 0.330000 0.320000 +vt 0.340000 0.320000 +vt 0.350000 0.320000 +vt 0.360000 0.320000 +vt 0.370000 0.320000 +vt 0.380000 0.320000 +vt 0.390000 0.320000 +vt 0.400000 0.320000 +vt 0.410000 0.320000 +vt 0.420000 0.320000 +vt 0.430000 0.320000 +vt 0.440000 0.320000 +vt 0.450000 0.320000 +vt 0.460000 0.320000 +vt 0.470000 0.320000 +vt 0.480000 0.320000 +vt 0.490000 0.320000 +vt 0.500000 0.320000 +vt 0.510000 0.320000 +vt 0.520000 0.320000 +vt 0.530000 0.320000 +vt 0.540000 0.320000 +vt 0.550000 0.320000 +vt 0.560000 0.320000 +vt 0.570000 0.320000 +vt 0.580000 0.320000 +vt 0.590000 0.320000 +vt 0.600000 0.320000 +vt 0.610000 0.320000 +vt 0.620000 0.320000 +vt 0.630000 0.320000 +vt 0.640000 0.320000 +vt 0.650000 0.320000 +vt 0.660000 0.320000 +vt 0.670000 0.320000 +vt 0.680000 0.320000 +vt 0.690000 0.320000 +vt 0.700000 0.320000 +vt 0.710000 0.320000 +vt 0.720000 0.320000 +vt 0.730000 0.320000 +vt 0.740000 0.320000 +vt 0.750000 0.320000 +vt 0.760000 0.320000 +vt 0.770000 0.320000 +vt 0.780000 0.320000 +vt 0.790000 0.320000 +vt 0.800000 0.320000 +vt 0.810000 0.320000 +vt 0.820000 0.320000 +vt 0.830000 0.320000 +vt 0.839999 0.320000 +vt 0.849999 0.320000 +vt 0.859999 0.320000 +vt 0.869999 0.320000 +vt 0.879999 0.320000 +vt 0.889999 0.320000 +vt 0.899999 0.320000 +vt 0.909999 0.320000 +vt 0.919999 0.320000 +vt 0.929999 0.320000 +vt 0.939999 0.320000 +vt 0.949999 0.320000 +vt 0.959999 0.320000 +vt 0.969999 0.320000 +vt 0.979999 0.320000 +vt 0.989999 0.320000 +vt 0.999999 0.320000 +vt 0.000000 0.330000 +vt 0.010000 0.330000 +vt 0.020000 0.330000 +vt 0.030000 0.330000 +vt 0.040000 0.330000 +vt 0.050000 0.330000 +vt 0.060000 0.330000 +vt 0.070000 0.330000 +vt 0.080000 0.330000 +vt 0.090000 0.330000 +vt 0.100000 0.330000 +vt 0.110000 0.330000 +vt 0.120000 0.330000 +vt 0.130000 0.330000 +vt 0.140000 0.330000 +vt 0.150000 0.330000 +vt 0.160000 0.330000 +vt 0.170000 0.330000 +vt 0.180000 0.330000 +vt 0.190000 0.330000 +vt 0.200000 0.330000 +vt 0.210000 0.330000 +vt 0.220000 0.330000 +vt 0.230000 0.330000 +vt 0.240000 0.330000 +vt 0.250000 0.330000 +vt 0.260000 0.330000 +vt 0.270000 0.330000 +vt 0.280000 0.330000 +vt 0.290000 0.330000 +vt 0.300000 0.330000 +vt 0.310000 0.330000 +vt 0.320000 0.330000 +vt 0.330000 0.330000 +vt 0.340000 0.330000 +vt 0.350000 0.330000 +vt 0.360000 0.330000 +vt 0.370000 0.330000 +vt 0.380000 0.330000 +vt 0.390000 0.330000 +vt 0.400000 0.330000 +vt 0.410000 0.330000 +vt 0.420000 0.330000 +vt 0.430000 0.330000 +vt 0.440000 0.330000 +vt 0.450000 0.330000 +vt 0.460000 0.330000 +vt 0.470000 0.330000 +vt 0.480000 0.330000 +vt 0.490000 0.330000 +vt 0.500000 0.330000 +vt 0.510000 0.330000 +vt 0.520000 0.330000 +vt 0.530000 0.330000 +vt 0.540000 0.330000 +vt 0.550000 0.330000 +vt 0.560000 0.330000 +vt 0.570000 0.330000 +vt 0.580000 0.330000 +vt 0.590000 0.330000 +vt 0.600000 0.330000 +vt 0.610000 0.330000 +vt 0.620000 0.330000 +vt 0.630000 0.330000 +vt 0.640000 0.330000 +vt 0.650000 0.330000 +vt 0.660000 0.330000 +vt 0.670000 0.330000 +vt 0.680000 0.330000 +vt 0.690000 0.330000 +vt 0.700000 0.330000 +vt 0.710000 0.330000 +vt 0.720000 0.330000 +vt 0.730000 0.330000 +vt 0.740000 0.330000 +vt 0.750000 0.330000 +vt 0.760000 0.330000 +vt 0.770000 0.330000 +vt 0.780000 0.330000 +vt 0.790000 0.330000 +vt 0.800000 0.330000 +vt 0.810000 0.330000 +vt 0.820000 0.330000 +vt 0.830000 0.330000 +vt 0.839999 0.330000 +vt 0.849999 0.330000 +vt 0.859999 0.330000 +vt 0.869999 0.330000 +vt 0.879999 0.330000 +vt 0.889999 0.330000 +vt 0.899999 0.330000 +vt 0.909999 0.330000 +vt 0.919999 0.330000 +vt 0.929999 0.330000 +vt 0.939999 0.330000 +vt 0.949999 0.330000 +vt 0.959999 0.330000 +vt 0.969999 0.330000 +vt 0.979999 0.330000 +vt 0.989999 0.330000 +vt 0.999999 0.330000 +vt 0.000000 0.340000 +vt 0.010000 0.340000 +vt 0.020000 0.340000 +vt 0.030000 0.340000 +vt 0.040000 0.340000 +vt 0.050000 0.340000 +vt 0.060000 0.340000 +vt 0.070000 0.340000 +vt 0.080000 0.340000 +vt 0.090000 0.340000 +vt 0.100000 0.340000 +vt 0.110000 0.340000 +vt 0.120000 0.340000 +vt 0.130000 0.340000 +vt 0.140000 0.340000 +vt 0.150000 0.340000 +vt 0.160000 0.340000 +vt 0.170000 0.340000 +vt 0.180000 0.340000 +vt 0.190000 0.340000 +vt 0.200000 0.340000 +vt 0.210000 0.340000 +vt 0.220000 0.340000 +vt 0.230000 0.340000 +vt 0.240000 0.340000 +vt 0.250000 0.340000 +vt 0.260000 0.340000 +vt 0.270000 0.340000 +vt 0.280000 0.340000 +vt 0.290000 0.340000 +vt 0.300000 0.340000 +vt 0.310000 0.340000 +vt 0.320000 0.340000 +vt 0.330000 0.340000 +vt 0.340000 0.340000 +vt 0.350000 0.340000 +vt 0.360000 0.340000 +vt 0.370000 0.340000 +vt 0.380000 0.340000 +vt 0.390000 0.340000 +vt 0.400000 0.340000 +vt 0.410000 0.340000 +vt 0.420000 0.340000 +vt 0.430000 0.340000 +vt 0.440000 0.340000 +vt 0.450000 0.340000 +vt 0.460000 0.340000 +vt 0.470000 0.340000 +vt 0.480000 0.340000 +vt 0.490000 0.340000 +vt 0.500000 0.340000 +vt 0.510000 0.340000 +vt 0.520000 0.340000 +vt 0.530000 0.340000 +vt 0.540000 0.340000 +vt 0.550000 0.340000 +vt 0.560000 0.340000 +vt 0.570000 0.340000 +vt 0.580000 0.340000 +vt 0.590000 0.340000 +vt 0.600000 0.340000 +vt 0.610000 0.340000 +vt 0.620000 0.340000 +vt 0.630000 0.340000 +vt 0.640000 0.340000 +vt 0.650000 0.340000 +vt 0.660000 0.340000 +vt 0.670000 0.340000 +vt 0.680000 0.340000 +vt 0.690000 0.340000 +vt 0.700000 0.340000 +vt 0.710000 0.340000 +vt 0.720000 0.340000 +vt 0.730000 0.340000 +vt 0.740000 0.340000 +vt 0.750000 0.340000 +vt 0.760000 0.340000 +vt 0.770000 0.340000 +vt 0.780000 0.340000 +vt 0.790000 0.340000 +vt 0.800000 0.340000 +vt 0.810000 0.340000 +vt 0.820000 0.340000 +vt 0.830000 0.340000 +vt 0.839999 0.340000 +vt 0.849999 0.340000 +vt 0.859999 0.340000 +vt 0.869999 0.340000 +vt 0.879999 0.340000 +vt 0.889999 0.340000 +vt 0.899999 0.340000 +vt 0.909999 0.340000 +vt 0.919999 0.340000 +vt 0.929999 0.340000 +vt 0.939999 0.340000 +vt 0.949999 0.340000 +vt 0.959999 0.340000 +vt 0.969999 0.340000 +vt 0.979999 0.340000 +vt 0.989999 0.340000 +vt 0.999999 0.340000 +vt 0.000000 0.350000 +vt 0.010000 0.350000 +vt 0.020000 0.350000 +vt 0.030000 0.350000 +vt 0.040000 0.350000 +vt 0.050000 0.350000 +vt 0.060000 0.350000 +vt 0.070000 0.350000 +vt 0.080000 0.350000 +vt 0.090000 0.350000 +vt 0.100000 0.350000 +vt 0.110000 0.350000 +vt 0.120000 0.350000 +vt 0.130000 0.350000 +vt 0.140000 0.350000 +vt 0.150000 0.350000 +vt 0.160000 0.350000 +vt 0.170000 0.350000 +vt 0.180000 0.350000 +vt 0.190000 0.350000 +vt 0.200000 0.350000 +vt 0.210000 0.350000 +vt 0.220000 0.350000 +vt 0.230000 0.350000 +vt 0.240000 0.350000 +vt 0.250000 0.350000 +vt 0.260000 0.350000 +vt 0.270000 0.350000 +vt 0.280000 0.350000 +vt 0.290000 0.350000 +vt 0.300000 0.350000 +vt 0.310000 0.350000 +vt 0.320000 0.350000 +vt 0.330000 0.350000 +vt 0.340000 0.350000 +vt 0.350000 0.350000 +vt 0.360000 0.350000 +vt 0.370000 0.350000 +vt 0.380000 0.350000 +vt 0.390000 0.350000 +vt 0.400000 0.350000 +vt 0.410000 0.350000 +vt 0.420000 0.350000 +vt 0.430000 0.350000 +vt 0.440000 0.350000 +vt 0.450000 0.350000 +vt 0.460000 0.350000 +vt 0.470000 0.350000 +vt 0.480000 0.350000 +vt 0.490000 0.350000 +vt 0.500000 0.350000 +vt 0.510000 0.350000 +vt 0.520000 0.350000 +vt 0.530000 0.350000 +vt 0.540000 0.350000 +vt 0.550000 0.350000 +vt 0.560000 0.350000 +vt 0.570000 0.350000 +vt 0.580000 0.350000 +vt 0.590000 0.350000 +vt 0.600000 0.350000 +vt 0.610000 0.350000 +vt 0.620000 0.350000 +vt 0.630000 0.350000 +vt 0.640000 0.350000 +vt 0.650000 0.350000 +vt 0.660000 0.350000 +vt 0.670000 0.350000 +vt 0.680000 0.350000 +vt 0.690000 0.350000 +vt 0.700000 0.350000 +vt 0.710000 0.350000 +vt 0.720000 0.350000 +vt 0.730000 0.350000 +vt 0.740000 0.350000 +vt 0.750000 0.350000 +vt 0.760000 0.350000 +vt 0.770000 0.350000 +vt 0.780000 0.350000 +vt 0.790000 0.350000 +vt 0.800000 0.350000 +vt 0.810000 0.350000 +vt 0.820000 0.350000 +vt 0.830000 0.350000 +vt 0.839999 0.350000 +vt 0.849999 0.350000 +vt 0.859999 0.350000 +vt 0.869999 0.350000 +vt 0.879999 0.350000 +vt 0.889999 0.350000 +vt 0.899999 0.350000 +vt 0.909999 0.350000 +vt 0.919999 0.350000 +vt 0.929999 0.350000 +vt 0.939999 0.350000 +vt 0.949999 0.350000 +vt 0.959999 0.350000 +vt 0.969999 0.350000 +vt 0.979999 0.350000 +vt 0.989999 0.350000 +vt 0.999999 0.350000 +vt 0.000000 0.360000 +vt 0.010000 0.360000 +vt 0.020000 0.360000 +vt 0.030000 0.360000 +vt 0.040000 0.360000 +vt 0.050000 0.360000 +vt 0.060000 0.360000 +vt 0.070000 0.360000 +vt 0.080000 0.360000 +vt 0.090000 0.360000 +vt 0.100000 0.360000 +vt 0.110000 0.360000 +vt 0.120000 0.360000 +vt 0.130000 0.360000 +vt 0.140000 0.360000 +vt 0.150000 0.360000 +vt 0.160000 0.360000 +vt 0.170000 0.360000 +vt 0.180000 0.360000 +vt 0.190000 0.360000 +vt 0.200000 0.360000 +vt 0.210000 0.360000 +vt 0.220000 0.360000 +vt 0.230000 0.360000 +vt 0.240000 0.360000 +vt 0.250000 0.360000 +vt 0.260000 0.360000 +vt 0.270000 0.360000 +vt 0.280000 0.360000 +vt 0.290000 0.360000 +vt 0.300000 0.360000 +vt 0.310000 0.360000 +vt 0.320000 0.360000 +vt 0.330000 0.360000 +vt 0.340000 0.360000 +vt 0.350000 0.360000 +vt 0.360000 0.360000 +vt 0.370000 0.360000 +vt 0.380000 0.360000 +vt 0.390000 0.360000 +vt 0.400000 0.360000 +vt 0.410000 0.360000 +vt 0.420000 0.360000 +vt 0.430000 0.360000 +vt 0.440000 0.360000 +vt 0.450000 0.360000 +vt 0.460000 0.360000 +vt 0.470000 0.360000 +vt 0.480000 0.360000 +vt 0.490000 0.360000 +vt 0.500000 0.360000 +vt 0.510000 0.360000 +vt 0.520000 0.360000 +vt 0.530000 0.360000 +vt 0.540000 0.360000 +vt 0.550000 0.360000 +vt 0.560000 0.360000 +vt 0.570000 0.360000 +vt 0.580000 0.360000 +vt 0.590000 0.360000 +vt 0.600000 0.360000 +vt 0.610000 0.360000 +vt 0.620000 0.360000 +vt 0.630000 0.360000 +vt 0.640000 0.360000 +vt 0.650000 0.360000 +vt 0.660000 0.360000 +vt 0.670000 0.360000 +vt 0.680000 0.360000 +vt 0.690000 0.360000 +vt 0.700000 0.360000 +vt 0.710000 0.360000 +vt 0.720000 0.360000 +vt 0.730000 0.360000 +vt 0.740000 0.360000 +vt 0.750000 0.360000 +vt 0.760000 0.360000 +vt 0.770000 0.360000 +vt 0.780000 0.360000 +vt 0.790000 0.360000 +vt 0.800000 0.360000 +vt 0.810000 0.360000 +vt 0.820000 0.360000 +vt 0.830000 0.360000 +vt 0.839999 0.360000 +vt 0.849999 0.360000 +vt 0.859999 0.360000 +vt 0.869999 0.360000 +vt 0.879999 0.360000 +vt 0.889999 0.360000 +vt 0.899999 0.360000 +vt 0.909999 0.360000 +vt 0.919999 0.360000 +vt 0.929999 0.360000 +vt 0.939999 0.360000 +vt 0.949999 0.360000 +vt 0.959999 0.360000 +vt 0.969999 0.360000 +vt 0.979999 0.360000 +vt 0.989999 0.360000 +vt 0.999999 0.360000 +vt 0.000000 0.370000 +vt 0.010000 0.370000 +vt 0.020000 0.370000 +vt 0.030000 0.370000 +vt 0.040000 0.370000 +vt 0.050000 0.370000 +vt 0.060000 0.370000 +vt 0.070000 0.370000 +vt 0.080000 0.370000 +vt 0.090000 0.370000 +vt 0.100000 0.370000 +vt 0.110000 0.370000 +vt 0.120000 0.370000 +vt 0.130000 0.370000 +vt 0.140000 0.370000 +vt 0.150000 0.370000 +vt 0.160000 0.370000 +vt 0.170000 0.370000 +vt 0.180000 0.370000 +vt 0.190000 0.370000 +vt 0.200000 0.370000 +vt 0.210000 0.370000 +vt 0.220000 0.370000 +vt 0.230000 0.370000 +vt 0.240000 0.370000 +vt 0.250000 0.370000 +vt 0.260000 0.370000 +vt 0.270000 0.370000 +vt 0.280000 0.370000 +vt 0.290000 0.370000 +vt 0.300000 0.370000 +vt 0.310000 0.370000 +vt 0.320000 0.370000 +vt 0.330000 0.370000 +vt 0.340000 0.370000 +vt 0.350000 0.370000 +vt 0.360000 0.370000 +vt 0.370000 0.370000 +vt 0.380000 0.370000 +vt 0.390000 0.370000 +vt 0.400000 0.370000 +vt 0.410000 0.370000 +vt 0.420000 0.370000 +vt 0.430000 0.370000 +vt 0.440000 0.370000 +vt 0.450000 0.370000 +vt 0.460000 0.370000 +vt 0.470000 0.370000 +vt 0.480000 0.370000 +vt 0.490000 0.370000 +vt 0.500000 0.370000 +vt 0.510000 0.370000 +vt 0.520000 0.370000 +vt 0.530000 0.370000 +vt 0.540000 0.370000 +vt 0.550000 0.370000 +vt 0.560000 0.370000 +vt 0.570000 0.370000 +vt 0.580000 0.370000 +vt 0.590000 0.370000 +vt 0.600000 0.370000 +vt 0.610000 0.370000 +vt 0.620000 0.370000 +vt 0.630000 0.370000 +vt 0.640000 0.370000 +vt 0.650000 0.370000 +vt 0.660000 0.370000 +vt 0.670000 0.370000 +vt 0.680000 0.370000 +vt 0.690000 0.370000 +vt 0.700000 0.370000 +vt 0.710000 0.370000 +vt 0.720000 0.370000 +vt 0.730000 0.370000 +vt 0.740000 0.370000 +vt 0.750000 0.370000 +vt 0.760000 0.370000 +vt 0.770000 0.370000 +vt 0.780000 0.370000 +vt 0.790000 0.370000 +vt 0.800000 0.370000 +vt 0.810000 0.370000 +vt 0.820000 0.370000 +vt 0.830000 0.370000 +vt 0.839999 0.370000 +vt 0.849999 0.370000 +vt 0.859999 0.370000 +vt 0.869999 0.370000 +vt 0.879999 0.370000 +vt 0.889999 0.370000 +vt 0.899999 0.370000 +vt 0.909999 0.370000 +vt 0.919999 0.370000 +vt 0.929999 0.370000 +vt 0.939999 0.370000 +vt 0.949999 0.370000 +vt 0.959999 0.370000 +vt 0.969999 0.370000 +vt 0.979999 0.370000 +vt 0.989999 0.370000 +vt 0.999999 0.370000 +vt 0.000000 0.380000 +vt 0.010000 0.380000 +vt 0.020000 0.380000 +vt 0.030000 0.380000 +vt 0.040000 0.380000 +vt 0.050000 0.380000 +vt 0.060000 0.380000 +vt 0.070000 0.380000 +vt 0.080000 0.380000 +vt 0.090000 0.380000 +vt 0.100000 0.380000 +vt 0.110000 0.380000 +vt 0.120000 0.380000 +vt 0.130000 0.380000 +vt 0.140000 0.380000 +vt 0.150000 0.380000 +vt 0.160000 0.380000 +vt 0.170000 0.380000 +vt 0.180000 0.380000 +vt 0.190000 0.380000 +vt 0.200000 0.380000 +vt 0.210000 0.380000 +vt 0.220000 0.380000 +vt 0.230000 0.380000 +vt 0.240000 0.380000 +vt 0.250000 0.380000 +vt 0.260000 0.380000 +vt 0.270000 0.380000 +vt 0.280000 0.380000 +vt 0.290000 0.380000 +vt 0.300000 0.380000 +vt 0.310000 0.380000 +vt 0.320000 0.380000 +vt 0.330000 0.380000 +vt 0.340000 0.380000 +vt 0.350000 0.380000 +vt 0.360000 0.380000 +vt 0.370000 0.380000 +vt 0.380000 0.380000 +vt 0.390000 0.380000 +vt 0.400000 0.380000 +vt 0.410000 0.380000 +vt 0.420000 0.380000 +vt 0.430000 0.380000 +vt 0.440000 0.380000 +vt 0.450000 0.380000 +vt 0.460000 0.380000 +vt 0.470000 0.380000 +vt 0.480000 0.380000 +vt 0.490000 0.380000 +vt 0.500000 0.380000 +vt 0.510000 0.380000 +vt 0.520000 0.380000 +vt 0.530000 0.380000 +vt 0.540000 0.380000 +vt 0.550000 0.380000 +vt 0.560000 0.380000 +vt 0.570000 0.380000 +vt 0.580000 0.380000 +vt 0.590000 0.380000 +vt 0.600000 0.380000 +vt 0.610000 0.380000 +vt 0.620000 0.380000 +vt 0.630000 0.380000 +vt 0.640000 0.380000 +vt 0.650000 0.380000 +vt 0.660000 0.380000 +vt 0.670000 0.380000 +vt 0.680000 0.380000 +vt 0.690000 0.380000 +vt 0.700000 0.380000 +vt 0.710000 0.380000 +vt 0.720000 0.380000 +vt 0.730000 0.380000 +vt 0.740000 0.380000 +vt 0.750000 0.380000 +vt 0.760000 0.380000 +vt 0.770000 0.380000 +vt 0.780000 0.380000 +vt 0.790000 0.380000 +vt 0.800000 0.380000 +vt 0.810000 0.380000 +vt 0.820000 0.380000 +vt 0.830000 0.380000 +vt 0.839999 0.380000 +vt 0.849999 0.380000 +vt 0.859999 0.380000 +vt 0.869999 0.380000 +vt 0.879999 0.380000 +vt 0.889999 0.380000 +vt 0.899999 0.380000 +vt 0.909999 0.380000 +vt 0.919999 0.380000 +vt 0.929999 0.380000 +vt 0.939999 0.380000 +vt 0.949999 0.380000 +vt 0.959999 0.380000 +vt 0.969999 0.380000 +vt 0.979999 0.380000 +vt 0.989999 0.380000 +vt 0.999999 0.380000 +vt 0.000000 0.390000 +vt 0.010000 0.390000 +vt 0.020000 0.390000 +vt 0.030000 0.390000 +vt 0.040000 0.390000 +vt 0.050000 0.390000 +vt 0.060000 0.390000 +vt 0.070000 0.390000 +vt 0.080000 0.390000 +vt 0.090000 0.390000 +vt 0.100000 0.390000 +vt 0.110000 0.390000 +vt 0.120000 0.390000 +vt 0.130000 0.390000 +vt 0.140000 0.390000 +vt 0.150000 0.390000 +vt 0.160000 0.390000 +vt 0.170000 0.390000 +vt 0.180000 0.390000 +vt 0.190000 0.390000 +vt 0.200000 0.390000 +vt 0.210000 0.390000 +vt 0.220000 0.390000 +vt 0.230000 0.390000 +vt 0.240000 0.390000 +vt 0.250000 0.390000 +vt 0.260000 0.390000 +vt 0.270000 0.390000 +vt 0.280000 0.390000 +vt 0.290000 0.390000 +vt 0.300000 0.390000 +vt 0.310000 0.390000 +vt 0.320000 0.390000 +vt 0.330000 0.390000 +vt 0.340000 0.390000 +vt 0.350000 0.390000 +vt 0.360000 0.390000 +vt 0.370000 0.390000 +vt 0.380000 0.390000 +vt 0.390000 0.390000 +vt 0.400000 0.390000 +vt 0.410000 0.390000 +vt 0.420000 0.390000 +vt 0.430000 0.390000 +vt 0.440000 0.390000 +vt 0.450000 0.390000 +vt 0.460000 0.390000 +vt 0.470000 0.390000 +vt 0.480000 0.390000 +vt 0.490000 0.390000 +vt 0.500000 0.390000 +vt 0.510000 0.390000 +vt 0.520000 0.390000 +vt 0.530000 0.390000 +vt 0.540000 0.390000 +vt 0.550000 0.390000 +vt 0.560000 0.390000 +vt 0.570000 0.390000 +vt 0.580000 0.390000 +vt 0.590000 0.390000 +vt 0.600000 0.390000 +vt 0.610000 0.390000 +vt 0.620000 0.390000 +vt 0.630000 0.390000 +vt 0.640000 0.390000 +vt 0.650000 0.390000 +vt 0.660000 0.390000 +vt 0.670000 0.390000 +vt 0.680000 0.390000 +vt 0.690000 0.390000 +vt 0.700000 0.390000 +vt 0.710000 0.390000 +vt 0.720000 0.390000 +vt 0.730000 0.390000 +vt 0.740000 0.390000 +vt 0.750000 0.390000 +vt 0.760000 0.390000 +vt 0.770000 0.390000 +vt 0.780000 0.390000 +vt 0.790000 0.390000 +vt 0.800000 0.390000 +vt 0.810000 0.390000 +vt 0.820000 0.390000 +vt 0.830000 0.390000 +vt 0.839999 0.390000 +vt 0.849999 0.390000 +vt 0.859999 0.390000 +vt 0.869999 0.390000 +vt 0.879999 0.390000 +vt 0.889999 0.390000 +vt 0.899999 0.390000 +vt 0.909999 0.390000 +vt 0.919999 0.390000 +vt 0.929999 0.390000 +vt 0.939999 0.390000 +vt 0.949999 0.390000 +vt 0.959999 0.390000 +vt 0.969999 0.390000 +vt 0.979999 0.390000 +vt 0.989999 0.390000 +vt 0.999999 0.390000 +vt 0.000000 0.400000 +vt 0.010000 0.400000 +vt 0.020000 0.400000 +vt 0.030000 0.400000 +vt 0.040000 0.400000 +vt 0.050000 0.400000 +vt 0.060000 0.400000 +vt 0.070000 0.400000 +vt 0.080000 0.400000 +vt 0.090000 0.400000 +vt 0.100000 0.400000 +vt 0.110000 0.400000 +vt 0.120000 0.400000 +vt 0.130000 0.400000 +vt 0.140000 0.400000 +vt 0.150000 0.400000 +vt 0.160000 0.400000 +vt 0.170000 0.400000 +vt 0.180000 0.400000 +vt 0.190000 0.400000 +vt 0.200000 0.400000 +vt 0.210000 0.400000 +vt 0.220000 0.400000 +vt 0.230000 0.400000 +vt 0.240000 0.400000 +vt 0.250000 0.400000 +vt 0.260000 0.400000 +vt 0.270000 0.400000 +vt 0.280000 0.400000 +vt 0.290000 0.400000 +vt 0.300000 0.400000 +vt 0.310000 0.400000 +vt 0.320000 0.400000 +vt 0.330000 0.400000 +vt 0.340000 0.400000 +vt 0.350000 0.400000 +vt 0.360000 0.400000 +vt 0.370000 0.400000 +vt 0.380000 0.400000 +vt 0.390000 0.400000 +vt 0.400000 0.400000 +vt 0.410000 0.400000 +vt 0.420000 0.400000 +vt 0.430000 0.400000 +vt 0.440000 0.400000 +vt 0.450000 0.400000 +vt 0.460000 0.400000 +vt 0.470000 0.400000 +vt 0.480000 0.400000 +vt 0.490000 0.400000 +vt 0.500000 0.400000 +vt 0.510000 0.400000 +vt 0.520000 0.400000 +vt 0.530000 0.400000 +vt 0.540000 0.400000 +vt 0.550000 0.400000 +vt 0.560000 0.400000 +vt 0.570000 0.400000 +vt 0.580000 0.400000 +vt 0.590000 0.400000 +vt 0.600000 0.400000 +vt 0.610000 0.400000 +vt 0.620000 0.400000 +vt 0.630000 0.400000 +vt 0.640000 0.400000 +vt 0.650000 0.400000 +vt 0.660000 0.400000 +vt 0.670000 0.400000 +vt 0.680000 0.400000 +vt 0.690000 0.400000 +vt 0.700000 0.400000 +vt 0.710000 0.400000 +vt 0.720000 0.400000 +vt 0.730000 0.400000 +vt 0.740000 0.400000 +vt 0.750000 0.400000 +vt 0.760000 0.400000 +vt 0.770000 0.400000 +vt 0.780000 0.400000 +vt 0.790000 0.400000 +vt 0.800000 0.400000 +vt 0.810000 0.400000 +vt 0.820000 0.400000 +vt 0.830000 0.400000 +vt 0.839999 0.400000 +vt 0.849999 0.400000 +vt 0.859999 0.400000 +vt 0.869999 0.400000 +vt 0.879999 0.400000 +vt 0.889999 0.400000 +vt 0.899999 0.400000 +vt 0.909999 0.400000 +vt 0.919999 0.400000 +vt 0.929999 0.400000 +vt 0.939999 0.400000 +vt 0.949999 0.400000 +vt 0.959999 0.400000 +vt 0.969999 0.400000 +vt 0.979999 0.400000 +vt 0.989999 0.400000 +vt 0.999999 0.400000 +vt 0.000000 0.410000 +vt 0.010000 0.410000 +vt 0.020000 0.410000 +vt 0.030000 0.410000 +vt 0.040000 0.410000 +vt 0.050000 0.410000 +vt 0.060000 0.410000 +vt 0.070000 0.410000 +vt 0.080000 0.410000 +vt 0.090000 0.410000 +vt 0.100000 0.410000 +vt 0.110000 0.410000 +vt 0.120000 0.410000 +vt 0.130000 0.410000 +vt 0.140000 0.410000 +vt 0.150000 0.410000 +vt 0.160000 0.410000 +vt 0.170000 0.410000 +vt 0.180000 0.410000 +vt 0.190000 0.410000 +vt 0.200000 0.410000 +vt 0.210000 0.410000 +vt 0.220000 0.410000 +vt 0.230000 0.410000 +vt 0.240000 0.410000 +vt 0.250000 0.410000 +vt 0.260000 0.410000 +vt 0.270000 0.410000 +vt 0.280000 0.410000 +vt 0.290000 0.410000 +vt 0.300000 0.410000 +vt 0.310000 0.410000 +vt 0.320000 0.410000 +vt 0.330000 0.410000 +vt 0.340000 0.410000 +vt 0.350000 0.410000 +vt 0.360000 0.410000 +vt 0.370000 0.410000 +vt 0.380000 0.410000 +vt 0.390000 0.410000 +vt 0.400000 0.410000 +vt 0.410000 0.410000 +vt 0.420000 0.410000 +vt 0.430000 0.410000 +vt 0.440000 0.410000 +vt 0.450000 0.410000 +vt 0.460000 0.410000 +vt 0.470000 0.410000 +vt 0.480000 0.410000 +vt 0.490000 0.410000 +vt 0.500000 0.410000 +vt 0.510000 0.410000 +vt 0.520000 0.410000 +vt 0.530000 0.410000 +vt 0.540000 0.410000 +vt 0.550000 0.410000 +vt 0.560000 0.410000 +vt 0.570000 0.410000 +vt 0.580000 0.410000 +vt 0.590000 0.410000 +vt 0.600000 0.410000 +vt 0.610000 0.410000 +vt 0.620000 0.410000 +vt 0.630000 0.410000 +vt 0.640000 0.410000 +vt 0.650000 0.410000 +vt 0.660000 0.410000 +vt 0.670000 0.410000 +vt 0.680000 0.410000 +vt 0.690000 0.410000 +vt 0.700000 0.410000 +vt 0.710000 0.410000 +vt 0.720000 0.410000 +vt 0.730000 0.410000 +vt 0.740000 0.410000 +vt 0.750000 0.410000 +vt 0.760000 0.410000 +vt 0.770000 0.410000 +vt 0.780000 0.410000 +vt 0.790000 0.410000 +vt 0.800000 0.410000 +vt 0.810000 0.410000 +vt 0.820000 0.410000 +vt 0.830000 0.410000 +vt 0.839999 0.410000 +vt 0.849999 0.410000 +vt 0.859999 0.410000 +vt 0.869999 0.410000 +vt 0.879999 0.410000 +vt 0.889999 0.410000 +vt 0.899999 0.410000 +vt 0.909999 0.410000 +vt 0.919999 0.410000 +vt 0.929999 0.410000 +vt 0.939999 0.410000 +vt 0.949999 0.410000 +vt 0.959999 0.410000 +vt 0.969999 0.410000 +vt 0.979999 0.410000 +vt 0.989999 0.410000 +vt 0.999999 0.410000 +vt 0.000000 0.420000 +vt 0.010000 0.420000 +vt 0.020000 0.420000 +vt 0.030000 0.420000 +vt 0.040000 0.420000 +vt 0.050000 0.420000 +vt 0.060000 0.420000 +vt 0.070000 0.420000 +vt 0.080000 0.420000 +vt 0.090000 0.420000 +vt 0.100000 0.420000 +vt 0.110000 0.420000 +vt 0.120000 0.420000 +vt 0.130000 0.420000 +vt 0.140000 0.420000 +vt 0.150000 0.420000 +vt 0.160000 0.420000 +vt 0.170000 0.420000 +vt 0.180000 0.420000 +vt 0.190000 0.420000 +vt 0.200000 0.420000 +vt 0.210000 0.420000 +vt 0.220000 0.420000 +vt 0.230000 0.420000 +vt 0.240000 0.420000 +vt 0.250000 0.420000 +vt 0.260000 0.420000 +vt 0.270000 0.420000 +vt 0.280000 0.420000 +vt 0.290000 0.420000 +vt 0.300000 0.420000 +vt 0.310000 0.420000 +vt 0.320000 0.420000 +vt 0.330000 0.420000 +vt 0.340000 0.420000 +vt 0.350000 0.420000 +vt 0.360000 0.420000 +vt 0.370000 0.420000 +vt 0.380000 0.420000 +vt 0.390000 0.420000 +vt 0.400000 0.420000 +vt 0.410000 0.420000 +vt 0.420000 0.420000 +vt 0.430000 0.420000 +vt 0.440000 0.420000 +vt 0.450000 0.420000 +vt 0.460000 0.420000 +vt 0.470000 0.420000 +vt 0.480000 0.420000 +vt 0.490000 0.420000 +vt 0.500000 0.420000 +vt 0.510000 0.420000 +vt 0.520000 0.420000 +vt 0.530000 0.420000 +vt 0.540000 0.420000 +vt 0.550000 0.420000 +vt 0.560000 0.420000 +vt 0.570000 0.420000 +vt 0.580000 0.420000 +vt 0.590000 0.420000 +vt 0.600000 0.420000 +vt 0.610000 0.420000 +vt 0.620000 0.420000 +vt 0.630000 0.420000 +vt 0.640000 0.420000 +vt 0.650000 0.420000 +vt 0.660000 0.420000 +vt 0.670000 0.420000 +vt 0.680000 0.420000 +vt 0.690000 0.420000 +vt 0.700000 0.420000 +vt 0.710000 0.420000 +vt 0.720000 0.420000 +vt 0.730000 0.420000 +vt 0.740000 0.420000 +vt 0.750000 0.420000 +vt 0.760000 0.420000 +vt 0.770000 0.420000 +vt 0.780000 0.420000 +vt 0.790000 0.420000 +vt 0.800000 0.420000 +vt 0.810000 0.420000 +vt 0.820000 0.420000 +vt 0.830000 0.420000 +vt 0.839999 0.420000 +vt 0.849999 0.420000 +vt 0.859999 0.420000 +vt 0.869999 0.420000 +vt 0.879999 0.420000 +vt 0.889999 0.420000 +vt 0.899999 0.420000 +vt 0.909999 0.420000 +vt 0.919999 0.420000 +vt 0.929999 0.420000 +vt 0.939999 0.420000 +vt 0.949999 0.420000 +vt 0.959999 0.420000 +vt 0.969999 0.420000 +vt 0.979999 0.420000 +vt 0.989999 0.420000 +vt 0.999999 0.420000 +vt 0.000000 0.430000 +vt 0.010000 0.430000 +vt 0.020000 0.430000 +vt 0.030000 0.430000 +vt 0.040000 0.430000 +vt 0.050000 0.430000 +vt 0.060000 0.430000 +vt 0.070000 0.430000 +vt 0.080000 0.430000 +vt 0.090000 0.430000 +vt 0.100000 0.430000 +vt 0.110000 0.430000 +vt 0.120000 0.430000 +vt 0.130000 0.430000 +vt 0.140000 0.430000 +vt 0.150000 0.430000 +vt 0.160000 0.430000 +vt 0.170000 0.430000 +vt 0.180000 0.430000 +vt 0.190000 0.430000 +vt 0.200000 0.430000 +vt 0.210000 0.430000 +vt 0.220000 0.430000 +vt 0.230000 0.430000 +vt 0.240000 0.430000 +vt 0.250000 0.430000 +vt 0.260000 0.430000 +vt 0.270000 0.430000 +vt 0.280000 0.430000 +vt 0.290000 0.430000 +vt 0.300000 0.430000 +vt 0.310000 0.430000 +vt 0.320000 0.430000 +vt 0.330000 0.430000 +vt 0.340000 0.430000 +vt 0.350000 0.430000 +vt 0.360000 0.430000 +vt 0.370000 0.430000 +vt 0.380000 0.430000 +vt 0.390000 0.430000 +vt 0.400000 0.430000 +vt 0.410000 0.430000 +vt 0.420000 0.430000 +vt 0.430000 0.430000 +vt 0.440000 0.430000 +vt 0.450000 0.430000 +vt 0.460000 0.430000 +vt 0.470000 0.430000 +vt 0.480000 0.430000 +vt 0.490000 0.430000 +vt 0.500000 0.430000 +vt 0.510000 0.430000 +vt 0.520000 0.430000 +vt 0.530000 0.430000 +vt 0.540000 0.430000 +vt 0.550000 0.430000 +vt 0.560000 0.430000 +vt 0.570000 0.430000 +vt 0.580000 0.430000 +vt 0.590000 0.430000 +vt 0.600000 0.430000 +vt 0.610000 0.430000 +vt 0.620000 0.430000 +vt 0.630000 0.430000 +vt 0.640000 0.430000 +vt 0.650000 0.430000 +vt 0.660000 0.430000 +vt 0.670000 0.430000 +vt 0.680000 0.430000 +vt 0.690000 0.430000 +vt 0.700000 0.430000 +vt 0.710000 0.430000 +vt 0.720000 0.430000 +vt 0.730000 0.430000 +vt 0.740000 0.430000 +vt 0.750000 0.430000 +vt 0.760000 0.430000 +vt 0.770000 0.430000 +vt 0.780000 0.430000 +vt 0.790000 0.430000 +vt 0.800000 0.430000 +vt 0.810000 0.430000 +vt 0.820000 0.430000 +vt 0.830000 0.430000 +vt 0.839999 0.430000 +vt 0.849999 0.430000 +vt 0.859999 0.430000 +vt 0.869999 0.430000 +vt 0.879999 0.430000 +vt 0.889999 0.430000 +vt 0.899999 0.430000 +vt 0.909999 0.430000 +vt 0.919999 0.430000 +vt 0.929999 0.430000 +vt 0.939999 0.430000 +vt 0.949999 0.430000 +vt 0.959999 0.430000 +vt 0.969999 0.430000 +vt 0.979999 0.430000 +vt 0.989999 0.430000 +vt 0.999999 0.430000 +vt 0.000000 0.440000 +vt 0.010000 0.440000 +vt 0.020000 0.440000 +vt 0.030000 0.440000 +vt 0.040000 0.440000 +vt 0.050000 0.440000 +vt 0.060000 0.440000 +vt 0.070000 0.440000 +vt 0.080000 0.440000 +vt 0.090000 0.440000 +vt 0.100000 0.440000 +vt 0.110000 0.440000 +vt 0.120000 0.440000 +vt 0.130000 0.440000 +vt 0.140000 0.440000 +vt 0.150000 0.440000 +vt 0.160000 0.440000 +vt 0.170000 0.440000 +vt 0.180000 0.440000 +vt 0.190000 0.440000 +vt 0.200000 0.440000 +vt 0.210000 0.440000 +vt 0.220000 0.440000 +vt 0.230000 0.440000 +vt 0.240000 0.440000 +vt 0.250000 0.440000 +vt 0.260000 0.440000 +vt 0.270000 0.440000 +vt 0.280000 0.440000 +vt 0.290000 0.440000 +vt 0.300000 0.440000 +vt 0.310000 0.440000 +vt 0.320000 0.440000 +vt 0.330000 0.440000 +vt 0.340000 0.440000 +vt 0.350000 0.440000 +vt 0.360000 0.440000 +vt 0.370000 0.440000 +vt 0.380000 0.440000 +vt 0.390000 0.440000 +vt 0.400000 0.440000 +vt 0.410000 0.440000 +vt 0.420000 0.440000 +vt 0.430000 0.440000 +vt 0.440000 0.440000 +vt 0.450000 0.440000 +vt 0.460000 0.440000 +vt 0.470000 0.440000 +vt 0.480000 0.440000 +vt 0.490000 0.440000 +vt 0.500000 0.440000 +vt 0.510000 0.440000 +vt 0.520000 0.440000 +vt 0.530000 0.440000 +vt 0.540000 0.440000 +vt 0.550000 0.440000 +vt 0.560000 0.440000 +vt 0.570000 0.440000 +vt 0.580000 0.440000 +vt 0.590000 0.440000 +vt 0.600000 0.440000 +vt 0.610000 0.440000 +vt 0.620000 0.440000 +vt 0.630000 0.440000 +vt 0.640000 0.440000 +vt 0.650000 0.440000 +vt 0.660000 0.440000 +vt 0.670000 0.440000 +vt 0.680000 0.440000 +vt 0.690000 0.440000 +vt 0.700000 0.440000 +vt 0.710000 0.440000 +vt 0.720000 0.440000 +vt 0.730000 0.440000 +vt 0.740000 0.440000 +vt 0.750000 0.440000 +vt 0.760000 0.440000 +vt 0.770000 0.440000 +vt 0.780000 0.440000 +vt 0.790000 0.440000 +vt 0.800000 0.440000 +vt 0.810000 0.440000 +vt 0.820000 0.440000 +vt 0.830000 0.440000 +vt 0.839999 0.440000 +vt 0.849999 0.440000 +vt 0.859999 0.440000 +vt 0.869999 0.440000 +vt 0.879999 0.440000 +vt 0.889999 0.440000 +vt 0.899999 0.440000 +vt 0.909999 0.440000 +vt 0.919999 0.440000 +vt 0.929999 0.440000 +vt 0.939999 0.440000 +vt 0.949999 0.440000 +vt 0.959999 0.440000 +vt 0.969999 0.440000 +vt 0.979999 0.440000 +vt 0.989999 0.440000 +vt 0.999999 0.440000 +vt 0.000000 0.450000 +vt 0.010000 0.450000 +vt 0.020000 0.450000 +vt 0.030000 0.450000 +vt 0.040000 0.450000 +vt 0.050000 0.450000 +vt 0.060000 0.450000 +vt 0.070000 0.450000 +vt 0.080000 0.450000 +vt 0.090000 0.450000 +vt 0.100000 0.450000 +vt 0.110000 0.450000 +vt 0.120000 0.450000 +vt 0.130000 0.450000 +vt 0.140000 0.450000 +vt 0.150000 0.450000 +vt 0.160000 0.450000 +vt 0.170000 0.450000 +vt 0.180000 0.450000 +vt 0.190000 0.450000 +vt 0.200000 0.450000 +vt 0.210000 0.450000 +vt 0.220000 0.450000 +vt 0.230000 0.450000 +vt 0.240000 0.450000 +vt 0.250000 0.450000 +vt 0.260000 0.450000 +vt 0.270000 0.450000 +vt 0.280000 0.450000 +vt 0.290000 0.450000 +vt 0.300000 0.450000 +vt 0.310000 0.450000 +vt 0.320000 0.450000 +vt 0.330000 0.450000 +vt 0.340000 0.450000 +vt 0.350000 0.450000 +vt 0.360000 0.450000 +vt 0.370000 0.450000 +vt 0.380000 0.450000 +vt 0.390000 0.450000 +vt 0.400000 0.450000 +vt 0.410000 0.450000 +vt 0.420000 0.450000 +vt 0.430000 0.450000 +vt 0.440000 0.450000 +vt 0.450000 0.450000 +vt 0.460000 0.450000 +vt 0.470000 0.450000 +vt 0.480000 0.450000 +vt 0.490000 0.450000 +vt 0.500000 0.450000 +vt 0.510000 0.450000 +vt 0.520000 0.450000 +vt 0.530000 0.450000 +vt 0.540000 0.450000 +vt 0.550000 0.450000 +vt 0.560000 0.450000 +vt 0.570000 0.450000 +vt 0.580000 0.450000 +vt 0.590000 0.450000 +vt 0.600000 0.450000 +vt 0.610000 0.450000 +vt 0.620000 0.450000 +vt 0.630000 0.450000 +vt 0.640000 0.450000 +vt 0.650000 0.450000 +vt 0.660000 0.450000 +vt 0.670000 0.450000 +vt 0.680000 0.450000 +vt 0.690000 0.450000 +vt 0.700000 0.450000 +vt 0.710000 0.450000 +vt 0.720000 0.450000 +vt 0.730000 0.450000 +vt 0.740000 0.450000 +vt 0.750000 0.450000 +vt 0.760000 0.450000 +vt 0.770000 0.450000 +vt 0.780000 0.450000 +vt 0.790000 0.450000 +vt 0.800000 0.450000 +vt 0.810000 0.450000 +vt 0.820000 0.450000 +vt 0.830000 0.450000 +vt 0.839999 0.450000 +vt 0.849999 0.450000 +vt 0.859999 0.450000 +vt 0.869999 0.450000 +vt 0.879999 0.450000 +vt 0.889999 0.450000 +vt 0.899999 0.450000 +vt 0.909999 0.450000 +vt 0.919999 0.450000 +vt 0.929999 0.450000 +vt 0.939999 0.450000 +vt 0.949999 0.450000 +vt 0.959999 0.450000 +vt 0.969999 0.450000 +vt 0.979999 0.450000 +vt 0.989999 0.450000 +vt 0.999999 0.450000 +vt 0.000000 0.460000 +vt 0.010000 0.460000 +vt 0.020000 0.460000 +vt 0.030000 0.460000 +vt 0.040000 0.460000 +vt 0.050000 0.460000 +vt 0.060000 0.460000 +vt 0.070000 0.460000 +vt 0.080000 0.460000 +vt 0.090000 0.460000 +vt 0.100000 0.460000 +vt 0.110000 0.460000 +vt 0.120000 0.460000 +vt 0.130000 0.460000 +vt 0.140000 0.460000 +vt 0.150000 0.460000 +vt 0.160000 0.460000 +vt 0.170000 0.460000 +vt 0.180000 0.460000 +vt 0.190000 0.460000 +vt 0.200000 0.460000 +vt 0.210000 0.460000 +vt 0.220000 0.460000 +vt 0.230000 0.460000 +vt 0.240000 0.460000 +vt 0.250000 0.460000 +vt 0.260000 0.460000 +vt 0.270000 0.460000 +vt 0.280000 0.460000 +vt 0.290000 0.460000 +vt 0.300000 0.460000 +vt 0.310000 0.460000 +vt 0.320000 0.460000 +vt 0.330000 0.460000 +vt 0.340000 0.460000 +vt 0.350000 0.460000 +vt 0.360000 0.460000 +vt 0.370000 0.460000 +vt 0.380000 0.460000 +vt 0.390000 0.460000 +vt 0.400000 0.460000 +vt 0.410000 0.460000 +vt 0.420000 0.460000 +vt 0.430000 0.460000 +vt 0.440000 0.460000 +vt 0.450000 0.460000 +vt 0.460000 0.460000 +vt 0.470000 0.460000 +vt 0.480000 0.460000 +vt 0.490000 0.460000 +vt 0.500000 0.460000 +vt 0.510000 0.460000 +vt 0.520000 0.460000 +vt 0.530000 0.460000 +vt 0.540000 0.460000 +vt 0.550000 0.460000 +vt 0.560000 0.460000 +vt 0.570000 0.460000 +vt 0.580000 0.460000 +vt 0.590000 0.460000 +vt 0.600000 0.460000 +vt 0.610000 0.460000 +vt 0.620000 0.460000 +vt 0.630000 0.460000 +vt 0.640000 0.460000 +vt 0.650000 0.460000 +vt 0.660000 0.460000 +vt 0.670000 0.460000 +vt 0.680000 0.460000 +vt 0.690000 0.460000 +vt 0.700000 0.460000 +vt 0.710000 0.460000 +vt 0.720000 0.460000 +vt 0.730000 0.460000 +vt 0.740000 0.460000 +vt 0.750000 0.460000 +vt 0.760000 0.460000 +vt 0.770000 0.460000 +vt 0.780000 0.460000 +vt 0.790000 0.460000 +vt 0.800000 0.460000 +vt 0.810000 0.460000 +vt 0.820000 0.460000 +vt 0.830000 0.460000 +vt 0.839999 0.460000 +vt 0.849999 0.460000 +vt 0.859999 0.460000 +vt 0.869999 0.460000 +vt 0.879999 0.460000 +vt 0.889999 0.460000 +vt 0.899999 0.460000 +vt 0.909999 0.460000 +vt 0.919999 0.460000 +vt 0.929999 0.460000 +vt 0.939999 0.460000 +vt 0.949999 0.460000 +vt 0.959999 0.460000 +vt 0.969999 0.460000 +vt 0.979999 0.460000 +vt 0.989999 0.460000 +vt 0.999999 0.460000 +vt 0.000000 0.470000 +vt 0.010000 0.470000 +vt 0.020000 0.470000 +vt 0.030000 0.470000 +vt 0.040000 0.470000 +vt 0.050000 0.470000 +vt 0.060000 0.470000 +vt 0.070000 0.470000 +vt 0.080000 0.470000 +vt 0.090000 0.470000 +vt 0.100000 0.470000 +vt 0.110000 0.470000 +vt 0.120000 0.470000 +vt 0.130000 0.470000 +vt 0.140000 0.470000 +vt 0.150000 0.470000 +vt 0.160000 0.470000 +vt 0.170000 0.470000 +vt 0.180000 0.470000 +vt 0.190000 0.470000 +vt 0.200000 0.470000 +vt 0.210000 0.470000 +vt 0.220000 0.470000 +vt 0.230000 0.470000 +vt 0.240000 0.470000 +vt 0.250000 0.470000 +vt 0.260000 0.470000 +vt 0.270000 0.470000 +vt 0.280000 0.470000 +vt 0.290000 0.470000 +vt 0.300000 0.470000 +vt 0.310000 0.470000 +vt 0.320000 0.470000 +vt 0.330000 0.470000 +vt 0.340000 0.470000 +vt 0.350000 0.470000 +vt 0.360000 0.470000 +vt 0.370000 0.470000 +vt 0.380000 0.470000 +vt 0.390000 0.470000 +vt 0.400000 0.470000 +vt 0.410000 0.470000 +vt 0.420000 0.470000 +vt 0.430000 0.470000 +vt 0.440000 0.470000 +vt 0.450000 0.470000 +vt 0.460000 0.470000 +vt 0.470000 0.470000 +vt 0.480000 0.470000 +vt 0.490000 0.470000 +vt 0.500000 0.470000 +vt 0.510000 0.470000 +vt 0.520000 0.470000 +vt 0.530000 0.470000 +vt 0.540000 0.470000 +vt 0.550000 0.470000 +vt 0.560000 0.470000 +vt 0.570000 0.470000 +vt 0.580000 0.470000 +vt 0.590000 0.470000 +vt 0.600000 0.470000 +vt 0.610000 0.470000 +vt 0.620000 0.470000 +vt 0.630000 0.470000 +vt 0.640000 0.470000 +vt 0.650000 0.470000 +vt 0.660000 0.470000 +vt 0.670000 0.470000 +vt 0.680000 0.470000 +vt 0.690000 0.470000 +vt 0.700000 0.470000 +vt 0.710000 0.470000 +vt 0.720000 0.470000 +vt 0.730000 0.470000 +vt 0.740000 0.470000 +vt 0.750000 0.470000 +vt 0.760000 0.470000 +vt 0.770000 0.470000 +vt 0.780000 0.470000 +vt 0.790000 0.470000 +vt 0.800000 0.470000 +vt 0.810000 0.470000 +vt 0.820000 0.470000 +vt 0.830000 0.470000 +vt 0.839999 0.470000 +vt 0.849999 0.470000 +vt 0.859999 0.470000 +vt 0.869999 0.470000 +vt 0.879999 0.470000 +vt 0.889999 0.470000 +vt 0.899999 0.470000 +vt 0.909999 0.470000 +vt 0.919999 0.470000 +vt 0.929999 0.470000 +vt 0.939999 0.470000 +vt 0.949999 0.470000 +vt 0.959999 0.470000 +vt 0.969999 0.470000 +vt 0.979999 0.470000 +vt 0.989999 0.470000 +vt 0.999999 0.470000 +vt 0.000000 0.480000 +vt 0.010000 0.480000 +vt 0.020000 0.480000 +vt 0.030000 0.480000 +vt 0.040000 0.480000 +vt 0.050000 0.480000 +vt 0.060000 0.480000 +vt 0.070000 0.480000 +vt 0.080000 0.480000 +vt 0.090000 0.480000 +vt 0.100000 0.480000 +vt 0.110000 0.480000 +vt 0.120000 0.480000 +vt 0.130000 0.480000 +vt 0.140000 0.480000 +vt 0.150000 0.480000 +vt 0.160000 0.480000 +vt 0.170000 0.480000 +vt 0.180000 0.480000 +vt 0.190000 0.480000 +vt 0.200000 0.480000 +vt 0.210000 0.480000 +vt 0.220000 0.480000 +vt 0.230000 0.480000 +vt 0.240000 0.480000 +vt 0.250000 0.480000 +vt 0.260000 0.480000 +vt 0.270000 0.480000 +vt 0.280000 0.480000 +vt 0.290000 0.480000 +vt 0.300000 0.480000 +vt 0.310000 0.480000 +vt 0.320000 0.480000 +vt 0.330000 0.480000 +vt 0.340000 0.480000 +vt 0.350000 0.480000 +vt 0.360000 0.480000 +vt 0.370000 0.480000 +vt 0.380000 0.480000 +vt 0.390000 0.480000 +vt 0.400000 0.480000 +vt 0.410000 0.480000 +vt 0.420000 0.480000 +vt 0.430000 0.480000 +vt 0.440000 0.480000 +vt 0.450000 0.480000 +vt 0.460000 0.480000 +vt 0.470000 0.480000 +vt 0.480000 0.480000 +vt 0.490000 0.480000 +vt 0.500000 0.480000 +vt 0.510000 0.480000 +vt 0.520000 0.480000 +vt 0.530000 0.480000 +vt 0.540000 0.480000 +vt 0.550000 0.480000 +vt 0.560000 0.480000 +vt 0.570000 0.480000 +vt 0.580000 0.480000 +vt 0.590000 0.480000 +vt 0.600000 0.480000 +vt 0.610000 0.480000 +vt 0.620000 0.480000 +vt 0.630000 0.480000 +vt 0.640000 0.480000 +vt 0.650000 0.480000 +vt 0.660000 0.480000 +vt 0.670000 0.480000 +vt 0.680000 0.480000 +vt 0.690000 0.480000 +vt 0.700000 0.480000 +vt 0.710000 0.480000 +vt 0.720000 0.480000 +vt 0.730000 0.480000 +vt 0.740000 0.480000 +vt 0.750000 0.480000 +vt 0.760000 0.480000 +vt 0.770000 0.480000 +vt 0.780000 0.480000 +vt 0.790000 0.480000 +vt 0.800000 0.480000 +vt 0.810000 0.480000 +vt 0.820000 0.480000 +vt 0.830000 0.480000 +vt 0.839999 0.480000 +vt 0.849999 0.480000 +vt 0.859999 0.480000 +vt 0.869999 0.480000 +vt 0.879999 0.480000 +vt 0.889999 0.480000 +vt 0.899999 0.480000 +vt 0.909999 0.480000 +vt 0.919999 0.480000 +vt 0.929999 0.480000 +vt 0.939999 0.480000 +vt 0.949999 0.480000 +vt 0.959999 0.480000 +vt 0.969999 0.480000 +vt 0.979999 0.480000 +vt 0.989999 0.480000 +vt 0.999999 0.480000 +vt 0.000000 0.490000 +vt 0.010000 0.490000 +vt 0.020000 0.490000 +vt 0.030000 0.490000 +vt 0.040000 0.490000 +vt 0.050000 0.490000 +vt 0.060000 0.490000 +vt 0.070000 0.490000 +vt 0.080000 0.490000 +vt 0.090000 0.490000 +vt 0.100000 0.490000 +vt 0.110000 0.490000 +vt 0.120000 0.490000 +vt 0.130000 0.490000 +vt 0.140000 0.490000 +vt 0.150000 0.490000 +vt 0.160000 0.490000 +vt 0.170000 0.490000 +vt 0.180000 0.490000 +vt 0.190000 0.490000 +vt 0.200000 0.490000 +vt 0.210000 0.490000 +vt 0.220000 0.490000 +vt 0.230000 0.490000 +vt 0.240000 0.490000 +vt 0.250000 0.490000 +vt 0.260000 0.490000 +vt 0.270000 0.490000 +vt 0.280000 0.490000 +vt 0.290000 0.490000 +vt 0.300000 0.490000 +vt 0.310000 0.490000 +vt 0.320000 0.490000 +vt 0.330000 0.490000 +vt 0.340000 0.490000 +vt 0.350000 0.490000 +vt 0.360000 0.490000 +vt 0.370000 0.490000 +vt 0.380000 0.490000 +vt 0.390000 0.490000 +vt 0.400000 0.490000 +vt 0.410000 0.490000 +vt 0.420000 0.490000 +vt 0.430000 0.490000 +vt 0.440000 0.490000 +vt 0.450000 0.490000 +vt 0.460000 0.490000 +vt 0.470000 0.490000 +vt 0.480000 0.490000 +vt 0.490000 0.490000 +vt 0.500000 0.490000 +vt 0.510000 0.490000 +vt 0.520000 0.490000 +vt 0.530000 0.490000 +vt 0.540000 0.490000 +vt 0.550000 0.490000 +vt 0.560000 0.490000 +vt 0.570000 0.490000 +vt 0.580000 0.490000 +vt 0.590000 0.490000 +vt 0.600000 0.490000 +vt 0.610000 0.490000 +vt 0.620000 0.490000 +vt 0.630000 0.490000 +vt 0.640000 0.490000 +vt 0.650000 0.490000 +vt 0.660000 0.490000 +vt 0.670000 0.490000 +vt 0.680000 0.490000 +vt 0.690000 0.490000 +vt 0.700000 0.490000 +vt 0.710000 0.490000 +vt 0.720000 0.490000 +vt 0.730000 0.490000 +vt 0.740000 0.490000 +vt 0.750000 0.490000 +vt 0.760000 0.490000 +vt 0.770000 0.490000 +vt 0.780000 0.490000 +vt 0.790000 0.490000 +vt 0.800000 0.490000 +vt 0.810000 0.490000 +vt 0.820000 0.490000 +vt 0.830000 0.490000 +vt 0.839999 0.490000 +vt 0.849999 0.490000 +vt 0.859999 0.490000 +vt 0.869999 0.490000 +vt 0.879999 0.490000 +vt 0.889999 0.490000 +vt 0.899999 0.490000 +vt 0.909999 0.490000 +vt 0.919999 0.490000 +vt 0.929999 0.490000 +vt 0.939999 0.490000 +vt 0.949999 0.490000 +vt 0.959999 0.490000 +vt 0.969999 0.490000 +vt 0.979999 0.490000 +vt 0.989999 0.490000 +vt 0.999999 0.490000 +vt 0.000000 0.500000 +vt 0.010000 0.500000 +vt 0.020000 0.500000 +vt 0.030000 0.500000 +vt 0.040000 0.500000 +vt 0.050000 0.500000 +vt 0.060000 0.500000 +vt 0.070000 0.500000 +vt 0.080000 0.500000 +vt 0.090000 0.500000 +vt 0.100000 0.500000 +vt 0.110000 0.500000 +vt 0.120000 0.500000 +vt 0.130000 0.500000 +vt 0.140000 0.500000 +vt 0.150000 0.500000 +vt 0.160000 0.500000 +vt 0.170000 0.500000 +vt 0.180000 0.500000 +vt 0.190000 0.500000 +vt 0.200000 0.500000 +vt 0.210000 0.500000 +vt 0.220000 0.500000 +vt 0.230000 0.500000 +vt 0.240000 0.500000 +vt 0.250000 0.500000 +vt 0.260000 0.500000 +vt 0.270000 0.500000 +vt 0.280000 0.500000 +vt 0.290000 0.500000 +vt 0.300000 0.500000 +vt 0.310000 0.500000 +vt 0.320000 0.500000 +vt 0.330000 0.500000 +vt 0.340000 0.500000 +vt 0.350000 0.500000 +vt 0.360000 0.500000 +vt 0.370000 0.500000 +vt 0.380000 0.500000 +vt 0.390000 0.500000 +vt 0.400000 0.500000 +vt 0.410000 0.500000 +vt 0.420000 0.500000 +vt 0.430000 0.500000 +vt 0.440000 0.500000 +vt 0.450000 0.500000 +vt 0.460000 0.500000 +vt 0.470000 0.500000 +vt 0.480000 0.500000 +vt 0.490000 0.500000 +vt 0.500000 0.500000 +vt 0.510000 0.500000 +vt 0.520000 0.500000 +vt 0.530000 0.500000 +vt 0.540000 0.500000 +vt 0.550000 0.500000 +vt 0.560000 0.500000 +vt 0.570000 0.500000 +vt 0.580000 0.500000 +vt 0.590000 0.500000 +vt 0.600000 0.500000 +vt 0.610000 0.500000 +vt 0.620000 0.500000 +vt 0.630000 0.500000 +vt 0.640000 0.500000 +vt 0.650000 0.500000 +vt 0.660000 0.500000 +vt 0.670000 0.500000 +vt 0.680000 0.500000 +vt 0.690000 0.500000 +vt 0.700000 0.500000 +vt 0.710000 0.500000 +vt 0.720000 0.500000 +vt 0.730000 0.500000 +vt 0.740000 0.500000 +vt 0.750000 0.500000 +vt 0.760000 0.500000 +vt 0.770000 0.500000 +vt 0.780000 0.500000 +vt 0.790000 0.500000 +vt 0.800000 0.500000 +vt 0.810000 0.500000 +vt 0.820000 0.500000 +vt 0.830000 0.500000 +vt 0.839999 0.500000 +vt 0.849999 0.500000 +vt 0.859999 0.500000 +vt 0.869999 0.500000 +vt 0.879999 0.500000 +vt 0.889999 0.500000 +vt 0.899999 0.500000 +vt 0.909999 0.500000 +vt 0.919999 0.500000 +vt 0.929999 0.500000 +vt 0.939999 0.500000 +vt 0.949999 0.500000 +vt 0.959999 0.500000 +vt 0.969999 0.500000 +vt 0.979999 0.500000 +vt 0.989999 0.500000 +vt 0.999999 0.500000 +vt 0.000000 0.510000 +vt 0.010000 0.510000 +vt 0.020000 0.510000 +vt 0.030000 0.510000 +vt 0.040000 0.510000 +vt 0.050000 0.510000 +vt 0.060000 0.510000 +vt 0.070000 0.510000 +vt 0.080000 0.510000 +vt 0.090000 0.510000 +vt 0.100000 0.510000 +vt 0.110000 0.510000 +vt 0.120000 0.510000 +vt 0.130000 0.510000 +vt 0.140000 0.510000 +vt 0.150000 0.510000 +vt 0.160000 0.510000 +vt 0.170000 0.510000 +vt 0.180000 0.510000 +vt 0.190000 0.510000 +vt 0.200000 0.510000 +vt 0.210000 0.510000 +vt 0.220000 0.510000 +vt 0.230000 0.510000 +vt 0.240000 0.510000 +vt 0.250000 0.510000 +vt 0.260000 0.510000 +vt 0.270000 0.510000 +vt 0.280000 0.510000 +vt 0.290000 0.510000 +vt 0.300000 0.510000 +vt 0.310000 0.510000 +vt 0.320000 0.510000 +vt 0.330000 0.510000 +vt 0.340000 0.510000 +vt 0.350000 0.510000 +vt 0.360000 0.510000 +vt 0.370000 0.510000 +vt 0.380000 0.510000 +vt 0.390000 0.510000 +vt 0.400000 0.510000 +vt 0.410000 0.510000 +vt 0.420000 0.510000 +vt 0.430000 0.510000 +vt 0.440000 0.510000 +vt 0.450000 0.510000 +vt 0.460000 0.510000 +vt 0.470000 0.510000 +vt 0.480000 0.510000 +vt 0.490000 0.510000 +vt 0.500000 0.510000 +vt 0.510000 0.510000 +vt 0.520000 0.510000 +vt 0.530000 0.510000 +vt 0.540000 0.510000 +vt 0.550000 0.510000 +vt 0.560000 0.510000 +vt 0.570000 0.510000 +vt 0.580000 0.510000 +vt 0.590000 0.510000 +vt 0.600000 0.510000 +vt 0.610000 0.510000 +vt 0.620000 0.510000 +vt 0.630000 0.510000 +vt 0.640000 0.510000 +vt 0.650000 0.510000 +vt 0.660000 0.510000 +vt 0.670000 0.510000 +vt 0.680000 0.510000 +vt 0.690000 0.510000 +vt 0.700000 0.510000 +vt 0.710000 0.510000 +vt 0.720000 0.510000 +vt 0.730000 0.510000 +vt 0.740000 0.510000 +vt 0.750000 0.510000 +vt 0.760000 0.510000 +vt 0.770000 0.510000 +vt 0.780000 0.510000 +vt 0.790000 0.510000 +vt 0.800000 0.510000 +vt 0.810000 0.510000 +vt 0.820000 0.510000 +vt 0.830000 0.510000 +vt 0.839999 0.510000 +vt 0.849999 0.510000 +vt 0.859999 0.510000 +vt 0.869999 0.510000 +vt 0.879999 0.510000 +vt 0.889999 0.510000 +vt 0.899999 0.510000 +vt 0.909999 0.510000 +vt 0.919999 0.510000 +vt 0.929999 0.510000 +vt 0.939999 0.510000 +vt 0.949999 0.510000 +vt 0.959999 0.510000 +vt 0.969999 0.510000 +vt 0.979999 0.510000 +vt 0.989999 0.510000 +vt 0.999999 0.510000 +vt 0.000000 0.520000 +vt 0.010000 0.520000 +vt 0.020000 0.520000 +vt 0.030000 0.520000 +vt 0.040000 0.520000 +vt 0.050000 0.520000 +vt 0.060000 0.520000 +vt 0.070000 0.520000 +vt 0.080000 0.520000 +vt 0.090000 0.520000 +vt 0.100000 0.520000 +vt 0.110000 0.520000 +vt 0.120000 0.520000 +vt 0.130000 0.520000 +vt 0.140000 0.520000 +vt 0.150000 0.520000 +vt 0.160000 0.520000 +vt 0.170000 0.520000 +vt 0.180000 0.520000 +vt 0.190000 0.520000 +vt 0.200000 0.520000 +vt 0.210000 0.520000 +vt 0.220000 0.520000 +vt 0.230000 0.520000 +vt 0.240000 0.520000 +vt 0.250000 0.520000 +vt 0.260000 0.520000 +vt 0.270000 0.520000 +vt 0.280000 0.520000 +vt 0.290000 0.520000 +vt 0.300000 0.520000 +vt 0.310000 0.520000 +vt 0.320000 0.520000 +vt 0.330000 0.520000 +vt 0.340000 0.520000 +vt 0.350000 0.520000 +vt 0.360000 0.520000 +vt 0.370000 0.520000 +vt 0.380000 0.520000 +vt 0.390000 0.520000 +vt 0.400000 0.520000 +vt 0.410000 0.520000 +vt 0.420000 0.520000 +vt 0.430000 0.520000 +vt 0.440000 0.520000 +vt 0.450000 0.520000 +vt 0.460000 0.520000 +vt 0.470000 0.520000 +vt 0.480000 0.520000 +vt 0.490000 0.520000 +vt 0.500000 0.520000 +vt 0.510000 0.520000 +vt 0.520000 0.520000 +vt 0.530000 0.520000 +vt 0.540000 0.520000 +vt 0.550000 0.520000 +vt 0.560000 0.520000 +vt 0.570000 0.520000 +vt 0.580000 0.520000 +vt 0.590000 0.520000 +vt 0.600000 0.520000 +vt 0.610000 0.520000 +vt 0.620000 0.520000 +vt 0.630000 0.520000 +vt 0.640000 0.520000 +vt 0.650000 0.520000 +vt 0.660000 0.520000 +vt 0.670000 0.520000 +vt 0.680000 0.520000 +vt 0.690000 0.520000 +vt 0.700000 0.520000 +vt 0.710000 0.520000 +vt 0.720000 0.520000 +vt 0.730000 0.520000 +vt 0.740000 0.520000 +vt 0.750000 0.520000 +vt 0.760000 0.520000 +vt 0.770000 0.520000 +vt 0.780000 0.520000 +vt 0.790000 0.520000 +vt 0.800000 0.520000 +vt 0.810000 0.520000 +vt 0.820000 0.520000 +vt 0.830000 0.520000 +vt 0.839999 0.520000 +vt 0.849999 0.520000 +vt 0.859999 0.520000 +vt 0.869999 0.520000 +vt 0.879999 0.520000 +vt 0.889999 0.520000 +vt 0.899999 0.520000 +vt 0.909999 0.520000 +vt 0.919999 0.520000 +vt 0.929999 0.520000 +vt 0.939999 0.520000 +vt 0.949999 0.520000 +vt 0.959999 0.520000 +vt 0.969999 0.520000 +vt 0.979999 0.520000 +vt 0.989999 0.520000 +vt 0.999999 0.520000 +vt 0.000000 0.530000 +vt 0.010000 0.530000 +vt 0.020000 0.530000 +vt 0.030000 0.530000 +vt 0.040000 0.530000 +vt 0.050000 0.530000 +vt 0.060000 0.530000 +vt 0.070000 0.530000 +vt 0.080000 0.530000 +vt 0.090000 0.530000 +vt 0.100000 0.530000 +vt 0.110000 0.530000 +vt 0.120000 0.530000 +vt 0.130000 0.530000 +vt 0.140000 0.530000 +vt 0.150000 0.530000 +vt 0.160000 0.530000 +vt 0.170000 0.530000 +vt 0.180000 0.530000 +vt 0.190000 0.530000 +vt 0.200000 0.530000 +vt 0.210000 0.530000 +vt 0.220000 0.530000 +vt 0.230000 0.530000 +vt 0.240000 0.530000 +vt 0.250000 0.530000 +vt 0.260000 0.530000 +vt 0.270000 0.530000 +vt 0.280000 0.530000 +vt 0.290000 0.530000 +vt 0.300000 0.530000 +vt 0.310000 0.530000 +vt 0.320000 0.530000 +vt 0.330000 0.530000 +vt 0.340000 0.530000 +vt 0.350000 0.530000 +vt 0.360000 0.530000 +vt 0.370000 0.530000 +vt 0.380000 0.530000 +vt 0.390000 0.530000 +vt 0.400000 0.530000 +vt 0.410000 0.530000 +vt 0.420000 0.530000 +vt 0.430000 0.530000 +vt 0.440000 0.530000 +vt 0.450000 0.530000 +vt 0.460000 0.530000 +vt 0.470000 0.530000 +vt 0.480000 0.530000 +vt 0.490000 0.530000 +vt 0.500000 0.530000 +vt 0.510000 0.530000 +vt 0.520000 0.530000 +vt 0.530000 0.530000 +vt 0.540000 0.530000 +vt 0.550000 0.530000 +vt 0.560000 0.530000 +vt 0.570000 0.530000 +vt 0.580000 0.530000 +vt 0.590000 0.530000 +vt 0.600000 0.530000 +vt 0.610000 0.530000 +vt 0.620000 0.530000 +vt 0.630000 0.530000 +vt 0.640000 0.530000 +vt 0.650000 0.530000 +vt 0.660000 0.530000 +vt 0.670000 0.530000 +vt 0.680000 0.530000 +vt 0.690000 0.530000 +vt 0.700000 0.530000 +vt 0.710000 0.530000 +vt 0.720000 0.530000 +vt 0.730000 0.530000 +vt 0.740000 0.530000 +vt 0.750000 0.530000 +vt 0.760000 0.530000 +vt 0.770000 0.530000 +vt 0.780000 0.530000 +vt 0.790000 0.530000 +vt 0.800000 0.530000 +vt 0.810000 0.530000 +vt 0.820000 0.530000 +vt 0.830000 0.530000 +vt 0.839999 0.530000 +vt 0.849999 0.530000 +vt 0.859999 0.530000 +vt 0.869999 0.530000 +vt 0.879999 0.530000 +vt 0.889999 0.530000 +vt 0.899999 0.530000 +vt 0.909999 0.530000 +vt 0.919999 0.530000 +vt 0.929999 0.530000 +vt 0.939999 0.530000 +vt 0.949999 0.530000 +vt 0.959999 0.530000 +vt 0.969999 0.530000 +vt 0.979999 0.530000 +vt 0.989999 0.530000 +vt 0.999999 0.530000 +vt 0.000000 0.540000 +vt 0.010000 0.540000 +vt 0.020000 0.540000 +vt 0.030000 0.540000 +vt 0.040000 0.540000 +vt 0.050000 0.540000 +vt 0.060000 0.540000 +vt 0.070000 0.540000 +vt 0.080000 0.540000 +vt 0.090000 0.540000 +vt 0.100000 0.540000 +vt 0.110000 0.540000 +vt 0.120000 0.540000 +vt 0.130000 0.540000 +vt 0.140000 0.540000 +vt 0.150000 0.540000 +vt 0.160000 0.540000 +vt 0.170000 0.540000 +vt 0.180000 0.540000 +vt 0.190000 0.540000 +vt 0.200000 0.540000 +vt 0.210000 0.540000 +vt 0.220000 0.540000 +vt 0.230000 0.540000 +vt 0.240000 0.540000 +vt 0.250000 0.540000 +vt 0.260000 0.540000 +vt 0.270000 0.540000 +vt 0.280000 0.540000 +vt 0.290000 0.540000 +vt 0.300000 0.540000 +vt 0.310000 0.540000 +vt 0.320000 0.540000 +vt 0.330000 0.540000 +vt 0.340000 0.540000 +vt 0.350000 0.540000 +vt 0.360000 0.540000 +vt 0.370000 0.540000 +vt 0.380000 0.540000 +vt 0.390000 0.540000 +vt 0.400000 0.540000 +vt 0.410000 0.540000 +vt 0.420000 0.540000 +vt 0.430000 0.540000 +vt 0.440000 0.540000 +vt 0.450000 0.540000 +vt 0.460000 0.540000 +vt 0.470000 0.540000 +vt 0.480000 0.540000 +vt 0.490000 0.540000 +vt 0.500000 0.540000 +vt 0.510000 0.540000 +vt 0.520000 0.540000 +vt 0.530000 0.540000 +vt 0.540000 0.540000 +vt 0.550000 0.540000 +vt 0.560000 0.540000 +vt 0.570000 0.540000 +vt 0.580000 0.540000 +vt 0.590000 0.540000 +vt 0.600000 0.540000 +vt 0.610000 0.540000 +vt 0.620000 0.540000 +vt 0.630000 0.540000 +vt 0.640000 0.540000 +vt 0.650000 0.540000 +vt 0.660000 0.540000 +vt 0.670000 0.540000 +vt 0.680000 0.540000 +vt 0.690000 0.540000 +vt 0.700000 0.540000 +vt 0.710000 0.540000 +vt 0.720000 0.540000 +vt 0.730000 0.540000 +vt 0.740000 0.540000 +vt 0.750000 0.540000 +vt 0.760000 0.540000 +vt 0.770000 0.540000 +vt 0.780000 0.540000 +vt 0.790000 0.540000 +vt 0.800000 0.540000 +vt 0.810000 0.540000 +vt 0.820000 0.540000 +vt 0.830000 0.540000 +vt 0.839999 0.540000 +vt 0.849999 0.540000 +vt 0.859999 0.540000 +vt 0.869999 0.540000 +vt 0.879999 0.540000 +vt 0.889999 0.540000 +vt 0.899999 0.540000 +vt 0.909999 0.540000 +vt 0.919999 0.540000 +vt 0.929999 0.540000 +vt 0.939999 0.540000 +vt 0.949999 0.540000 +vt 0.959999 0.540000 +vt 0.969999 0.540000 +vt 0.979999 0.540000 +vt 0.989999 0.540000 +vt 0.999999 0.540000 +vt 0.000000 0.550000 +vt 0.010000 0.550000 +vt 0.020000 0.550000 +vt 0.030000 0.550000 +vt 0.040000 0.550000 +vt 0.050000 0.550000 +vt 0.060000 0.550000 +vt 0.070000 0.550000 +vt 0.080000 0.550000 +vt 0.090000 0.550000 +vt 0.100000 0.550000 +vt 0.110000 0.550000 +vt 0.120000 0.550000 +vt 0.130000 0.550000 +vt 0.140000 0.550000 +vt 0.150000 0.550000 +vt 0.160000 0.550000 +vt 0.170000 0.550000 +vt 0.180000 0.550000 +vt 0.190000 0.550000 +vt 0.200000 0.550000 +vt 0.210000 0.550000 +vt 0.220000 0.550000 +vt 0.230000 0.550000 +vt 0.240000 0.550000 +vt 0.250000 0.550000 +vt 0.260000 0.550000 +vt 0.270000 0.550000 +vt 0.280000 0.550000 +vt 0.290000 0.550000 +vt 0.300000 0.550000 +vt 0.310000 0.550000 +vt 0.320000 0.550000 +vt 0.330000 0.550000 +vt 0.340000 0.550000 +vt 0.350000 0.550000 +vt 0.360000 0.550000 +vt 0.370000 0.550000 +vt 0.380000 0.550000 +vt 0.390000 0.550000 +vt 0.400000 0.550000 +vt 0.410000 0.550000 +vt 0.420000 0.550000 +vt 0.430000 0.550000 +vt 0.440000 0.550000 +vt 0.450000 0.550000 +vt 0.460000 0.550000 +vt 0.470000 0.550000 +vt 0.480000 0.550000 +vt 0.490000 0.550000 +vt 0.500000 0.550000 +vt 0.510000 0.550000 +vt 0.520000 0.550000 +vt 0.530000 0.550000 +vt 0.540000 0.550000 +vt 0.550000 0.550000 +vt 0.560000 0.550000 +vt 0.570000 0.550000 +vt 0.580000 0.550000 +vt 0.590000 0.550000 +vt 0.600000 0.550000 +vt 0.610000 0.550000 +vt 0.620000 0.550000 +vt 0.630000 0.550000 +vt 0.640000 0.550000 +vt 0.650000 0.550000 +vt 0.660000 0.550000 +vt 0.670000 0.550000 +vt 0.680000 0.550000 +vt 0.690000 0.550000 +vt 0.700000 0.550000 +vt 0.710000 0.550000 +vt 0.720000 0.550000 +vt 0.730000 0.550000 +vt 0.740000 0.550000 +vt 0.750000 0.550000 +vt 0.760000 0.550000 +vt 0.770000 0.550000 +vt 0.780000 0.550000 +vt 0.790000 0.550000 +vt 0.800000 0.550000 +vt 0.810000 0.550000 +vt 0.820000 0.550000 +vt 0.830000 0.550000 +vt 0.839999 0.550000 +vt 0.849999 0.550000 +vt 0.859999 0.550000 +vt 0.869999 0.550000 +vt 0.879999 0.550000 +vt 0.889999 0.550000 +vt 0.899999 0.550000 +vt 0.909999 0.550000 +vt 0.919999 0.550000 +vt 0.929999 0.550000 +vt 0.939999 0.550000 +vt 0.949999 0.550000 +vt 0.959999 0.550000 +vt 0.969999 0.550000 +vt 0.979999 0.550000 +vt 0.989999 0.550000 +vt 0.999999 0.550000 +vt 0.000000 0.560000 +vt 0.010000 0.560000 +vt 0.020000 0.560000 +vt 0.030000 0.560000 +vt 0.040000 0.560000 +vt 0.050000 0.560000 +vt 0.060000 0.560000 +vt 0.070000 0.560000 +vt 0.080000 0.560000 +vt 0.090000 0.560000 +vt 0.100000 0.560000 +vt 0.110000 0.560000 +vt 0.120000 0.560000 +vt 0.130000 0.560000 +vt 0.140000 0.560000 +vt 0.150000 0.560000 +vt 0.160000 0.560000 +vt 0.170000 0.560000 +vt 0.180000 0.560000 +vt 0.190000 0.560000 +vt 0.200000 0.560000 +vt 0.210000 0.560000 +vt 0.220000 0.560000 +vt 0.230000 0.560000 +vt 0.240000 0.560000 +vt 0.250000 0.560000 +vt 0.260000 0.560000 +vt 0.270000 0.560000 +vt 0.280000 0.560000 +vt 0.290000 0.560000 +vt 0.300000 0.560000 +vt 0.310000 0.560000 +vt 0.320000 0.560000 +vt 0.330000 0.560000 +vt 0.340000 0.560000 +vt 0.350000 0.560000 +vt 0.360000 0.560000 +vt 0.370000 0.560000 +vt 0.380000 0.560000 +vt 0.390000 0.560000 +vt 0.400000 0.560000 +vt 0.410000 0.560000 +vt 0.420000 0.560000 +vt 0.430000 0.560000 +vt 0.440000 0.560000 +vt 0.450000 0.560000 +vt 0.460000 0.560000 +vt 0.470000 0.560000 +vt 0.480000 0.560000 +vt 0.490000 0.560000 +vt 0.500000 0.560000 +vt 0.510000 0.560000 +vt 0.520000 0.560000 +vt 0.530000 0.560000 +vt 0.540000 0.560000 +vt 0.550000 0.560000 +vt 0.560000 0.560000 +vt 0.570000 0.560000 +vt 0.580000 0.560000 +vt 0.590000 0.560000 +vt 0.600000 0.560000 +vt 0.610000 0.560000 +vt 0.620000 0.560000 +vt 0.630000 0.560000 +vt 0.640000 0.560000 +vt 0.650000 0.560000 +vt 0.660000 0.560000 +vt 0.670000 0.560000 +vt 0.680000 0.560000 +vt 0.690000 0.560000 +vt 0.700000 0.560000 +vt 0.710000 0.560000 +vt 0.720000 0.560000 +vt 0.730000 0.560000 +vt 0.740000 0.560000 +vt 0.750000 0.560000 +vt 0.760000 0.560000 +vt 0.770000 0.560000 +vt 0.780000 0.560000 +vt 0.790000 0.560000 +vt 0.800000 0.560000 +vt 0.810000 0.560000 +vt 0.820000 0.560000 +vt 0.830000 0.560000 +vt 0.839999 0.560000 +vt 0.849999 0.560000 +vt 0.859999 0.560000 +vt 0.869999 0.560000 +vt 0.879999 0.560000 +vt 0.889999 0.560000 +vt 0.899999 0.560000 +vt 0.909999 0.560000 +vt 0.919999 0.560000 +vt 0.929999 0.560000 +vt 0.939999 0.560000 +vt 0.949999 0.560000 +vt 0.959999 0.560000 +vt 0.969999 0.560000 +vt 0.979999 0.560000 +vt 0.989999 0.560000 +vt 0.999999 0.560000 +vt 0.000000 0.570000 +vt 0.010000 0.570000 +vt 0.020000 0.570000 +vt 0.030000 0.570000 +vt 0.040000 0.570000 +vt 0.050000 0.570000 +vt 0.060000 0.570000 +vt 0.070000 0.570000 +vt 0.080000 0.570000 +vt 0.090000 0.570000 +vt 0.100000 0.570000 +vt 0.110000 0.570000 +vt 0.120000 0.570000 +vt 0.130000 0.570000 +vt 0.140000 0.570000 +vt 0.150000 0.570000 +vt 0.160000 0.570000 +vt 0.170000 0.570000 +vt 0.180000 0.570000 +vt 0.190000 0.570000 +vt 0.200000 0.570000 +vt 0.210000 0.570000 +vt 0.220000 0.570000 +vt 0.230000 0.570000 +vt 0.240000 0.570000 +vt 0.250000 0.570000 +vt 0.260000 0.570000 +vt 0.270000 0.570000 +vt 0.280000 0.570000 +vt 0.290000 0.570000 +vt 0.300000 0.570000 +vt 0.310000 0.570000 +vt 0.320000 0.570000 +vt 0.330000 0.570000 +vt 0.340000 0.570000 +vt 0.350000 0.570000 +vt 0.360000 0.570000 +vt 0.370000 0.570000 +vt 0.380000 0.570000 +vt 0.390000 0.570000 +vt 0.400000 0.570000 +vt 0.410000 0.570000 +vt 0.420000 0.570000 +vt 0.430000 0.570000 +vt 0.440000 0.570000 +vt 0.450000 0.570000 +vt 0.460000 0.570000 +vt 0.470000 0.570000 +vt 0.480000 0.570000 +vt 0.490000 0.570000 +vt 0.500000 0.570000 +vt 0.510000 0.570000 +vt 0.520000 0.570000 +vt 0.530000 0.570000 +vt 0.540000 0.570000 +vt 0.550000 0.570000 +vt 0.560000 0.570000 +vt 0.570000 0.570000 +vt 0.580000 0.570000 +vt 0.590000 0.570000 +vt 0.600000 0.570000 +vt 0.610000 0.570000 +vt 0.620000 0.570000 +vt 0.630000 0.570000 +vt 0.640000 0.570000 +vt 0.650000 0.570000 +vt 0.660000 0.570000 +vt 0.670000 0.570000 +vt 0.680000 0.570000 +vt 0.690000 0.570000 +vt 0.700000 0.570000 +vt 0.710000 0.570000 +vt 0.720000 0.570000 +vt 0.730000 0.570000 +vt 0.740000 0.570000 +vt 0.750000 0.570000 +vt 0.760000 0.570000 +vt 0.770000 0.570000 +vt 0.780000 0.570000 +vt 0.790000 0.570000 +vt 0.800000 0.570000 +vt 0.810000 0.570000 +vt 0.820000 0.570000 +vt 0.830000 0.570000 +vt 0.839999 0.570000 +vt 0.849999 0.570000 +vt 0.859999 0.570000 +vt 0.869999 0.570000 +vt 0.879999 0.570000 +vt 0.889999 0.570000 +vt 0.899999 0.570000 +vt 0.909999 0.570000 +vt 0.919999 0.570000 +vt 0.929999 0.570000 +vt 0.939999 0.570000 +vt 0.949999 0.570000 +vt 0.959999 0.570000 +vt 0.969999 0.570000 +vt 0.979999 0.570000 +vt 0.989999 0.570000 +vt 0.999999 0.570000 +vt 0.000000 0.580000 +vt 0.010000 0.580000 +vt 0.020000 0.580000 +vt 0.030000 0.580000 +vt 0.040000 0.580000 +vt 0.050000 0.580000 +vt 0.060000 0.580000 +vt 0.070000 0.580000 +vt 0.080000 0.580000 +vt 0.090000 0.580000 +vt 0.100000 0.580000 +vt 0.110000 0.580000 +vt 0.120000 0.580000 +vt 0.130000 0.580000 +vt 0.140000 0.580000 +vt 0.150000 0.580000 +vt 0.160000 0.580000 +vt 0.170000 0.580000 +vt 0.180000 0.580000 +vt 0.190000 0.580000 +vt 0.200000 0.580000 +vt 0.210000 0.580000 +vt 0.220000 0.580000 +vt 0.230000 0.580000 +vt 0.240000 0.580000 +vt 0.250000 0.580000 +vt 0.260000 0.580000 +vt 0.270000 0.580000 +vt 0.280000 0.580000 +vt 0.290000 0.580000 +vt 0.300000 0.580000 +vt 0.310000 0.580000 +vt 0.320000 0.580000 +vt 0.330000 0.580000 +vt 0.340000 0.580000 +vt 0.350000 0.580000 +vt 0.360000 0.580000 +vt 0.370000 0.580000 +vt 0.380000 0.580000 +vt 0.390000 0.580000 +vt 0.400000 0.580000 +vt 0.410000 0.580000 +vt 0.420000 0.580000 +vt 0.430000 0.580000 +vt 0.440000 0.580000 +vt 0.450000 0.580000 +vt 0.460000 0.580000 +vt 0.470000 0.580000 +vt 0.480000 0.580000 +vt 0.490000 0.580000 +vt 0.500000 0.580000 +vt 0.510000 0.580000 +vt 0.520000 0.580000 +vt 0.530000 0.580000 +vt 0.540000 0.580000 +vt 0.550000 0.580000 +vt 0.560000 0.580000 +vt 0.570000 0.580000 +vt 0.580000 0.580000 +vt 0.590000 0.580000 +vt 0.600000 0.580000 +vt 0.610000 0.580000 +vt 0.620000 0.580000 +vt 0.630000 0.580000 +vt 0.640000 0.580000 +vt 0.650000 0.580000 +vt 0.660000 0.580000 +vt 0.670000 0.580000 +vt 0.680000 0.580000 +vt 0.690000 0.580000 +vt 0.700000 0.580000 +vt 0.710000 0.580000 +vt 0.720000 0.580000 +vt 0.730000 0.580000 +vt 0.740000 0.580000 +vt 0.750000 0.580000 +vt 0.760000 0.580000 +vt 0.770000 0.580000 +vt 0.780000 0.580000 +vt 0.790000 0.580000 +vt 0.800000 0.580000 +vt 0.810000 0.580000 +vt 0.820000 0.580000 +vt 0.830000 0.580000 +vt 0.839999 0.580000 +vt 0.849999 0.580000 +vt 0.859999 0.580000 +vt 0.869999 0.580000 +vt 0.879999 0.580000 +vt 0.889999 0.580000 +vt 0.899999 0.580000 +vt 0.909999 0.580000 +vt 0.919999 0.580000 +vt 0.929999 0.580000 +vt 0.939999 0.580000 +vt 0.949999 0.580000 +vt 0.959999 0.580000 +vt 0.969999 0.580000 +vt 0.979999 0.580000 +vt 0.989999 0.580000 +vt 0.999999 0.580000 +vt 0.000000 0.590000 +vt 0.010000 0.590000 +vt 0.020000 0.590000 +vt 0.030000 0.590000 +vt 0.040000 0.590000 +vt 0.050000 0.590000 +vt 0.060000 0.590000 +vt 0.070000 0.590000 +vt 0.080000 0.590000 +vt 0.090000 0.590000 +vt 0.100000 0.590000 +vt 0.110000 0.590000 +vt 0.120000 0.590000 +vt 0.130000 0.590000 +vt 0.140000 0.590000 +vt 0.150000 0.590000 +vt 0.160000 0.590000 +vt 0.170000 0.590000 +vt 0.180000 0.590000 +vt 0.190000 0.590000 +vt 0.200000 0.590000 +vt 0.210000 0.590000 +vt 0.220000 0.590000 +vt 0.230000 0.590000 +vt 0.240000 0.590000 +vt 0.250000 0.590000 +vt 0.260000 0.590000 +vt 0.270000 0.590000 +vt 0.280000 0.590000 +vt 0.290000 0.590000 +vt 0.300000 0.590000 +vt 0.310000 0.590000 +vt 0.320000 0.590000 +vt 0.330000 0.590000 +vt 0.340000 0.590000 +vt 0.350000 0.590000 +vt 0.360000 0.590000 +vt 0.370000 0.590000 +vt 0.380000 0.590000 +vt 0.390000 0.590000 +vt 0.400000 0.590000 +vt 0.410000 0.590000 +vt 0.420000 0.590000 +vt 0.430000 0.590000 +vt 0.440000 0.590000 +vt 0.450000 0.590000 +vt 0.460000 0.590000 +vt 0.470000 0.590000 +vt 0.480000 0.590000 +vt 0.490000 0.590000 +vt 0.500000 0.590000 +vt 0.510000 0.590000 +vt 0.520000 0.590000 +vt 0.530000 0.590000 +vt 0.540000 0.590000 +vt 0.550000 0.590000 +vt 0.560000 0.590000 +vt 0.570000 0.590000 +vt 0.580000 0.590000 +vt 0.590000 0.590000 +vt 0.600000 0.590000 +vt 0.610000 0.590000 +vt 0.620000 0.590000 +vt 0.630000 0.590000 +vt 0.640000 0.590000 +vt 0.650000 0.590000 +vt 0.660000 0.590000 +vt 0.670000 0.590000 +vt 0.680000 0.590000 +vt 0.690000 0.590000 +vt 0.700000 0.590000 +vt 0.710000 0.590000 +vt 0.720000 0.590000 +vt 0.730000 0.590000 +vt 0.740000 0.590000 +vt 0.750000 0.590000 +vt 0.760000 0.590000 +vt 0.770000 0.590000 +vt 0.780000 0.590000 +vt 0.790000 0.590000 +vt 0.800000 0.590000 +vt 0.810000 0.590000 +vt 0.820000 0.590000 +vt 0.830000 0.590000 +vt 0.839999 0.590000 +vt 0.849999 0.590000 +vt 0.859999 0.590000 +vt 0.869999 0.590000 +vt 0.879999 0.590000 +vt 0.889999 0.590000 +vt 0.899999 0.590000 +vt 0.909999 0.590000 +vt 0.919999 0.590000 +vt 0.929999 0.590000 +vt 0.939999 0.590000 +vt 0.949999 0.590000 +vt 0.959999 0.590000 +vt 0.969999 0.590000 +vt 0.979999 0.590000 +vt 0.989999 0.590000 +vt 0.999999 0.590000 +vt 0.000000 0.600000 +vt 0.010000 0.600000 +vt 0.020000 0.600000 +vt 0.030000 0.600000 +vt 0.040000 0.600000 +vt 0.050000 0.600000 +vt 0.060000 0.600000 +vt 0.070000 0.600000 +vt 0.080000 0.600000 +vt 0.090000 0.600000 +vt 0.100000 0.600000 +vt 0.110000 0.600000 +vt 0.120000 0.600000 +vt 0.130000 0.600000 +vt 0.140000 0.600000 +vt 0.150000 0.600000 +vt 0.160000 0.600000 +vt 0.170000 0.600000 +vt 0.180000 0.600000 +vt 0.190000 0.600000 +vt 0.200000 0.600000 +vt 0.210000 0.600000 +vt 0.220000 0.600000 +vt 0.230000 0.600000 +vt 0.240000 0.600000 +vt 0.250000 0.600000 +vt 0.260000 0.600000 +vt 0.270000 0.600000 +vt 0.280000 0.600000 +vt 0.290000 0.600000 +vt 0.300000 0.600000 +vt 0.310000 0.600000 +vt 0.320000 0.600000 +vt 0.330000 0.600000 +vt 0.340000 0.600000 +vt 0.350000 0.600000 +vt 0.360000 0.600000 +vt 0.370000 0.600000 +vt 0.380000 0.600000 +vt 0.390000 0.600000 +vt 0.400000 0.600000 +vt 0.410000 0.600000 +vt 0.420000 0.600000 +vt 0.430000 0.600000 +vt 0.440000 0.600000 +vt 0.450000 0.600000 +vt 0.460000 0.600000 +vt 0.470000 0.600000 +vt 0.480000 0.600000 +vt 0.490000 0.600000 +vt 0.500000 0.600000 +vt 0.510000 0.600000 +vt 0.520000 0.600000 +vt 0.530000 0.600000 +vt 0.540000 0.600000 +vt 0.550000 0.600000 +vt 0.560000 0.600000 +vt 0.570000 0.600000 +vt 0.580000 0.600000 +vt 0.590000 0.600000 +vt 0.600000 0.600000 +vt 0.610000 0.600000 +vt 0.620000 0.600000 +vt 0.630000 0.600000 +vt 0.640000 0.600000 +vt 0.650000 0.600000 +vt 0.660000 0.600000 +vt 0.670000 0.600000 +vt 0.680000 0.600000 +vt 0.690000 0.600000 +vt 0.700000 0.600000 +vt 0.710000 0.600000 +vt 0.720000 0.600000 +vt 0.730000 0.600000 +vt 0.740000 0.600000 +vt 0.750000 0.600000 +vt 0.760000 0.600000 +vt 0.770000 0.600000 +vt 0.780000 0.600000 +vt 0.790000 0.600000 +vt 0.800000 0.600000 +vt 0.810000 0.600000 +vt 0.820000 0.600000 +vt 0.830000 0.600000 +vt 0.839999 0.600000 +vt 0.849999 0.600000 +vt 0.859999 0.600000 +vt 0.869999 0.600000 +vt 0.879999 0.600000 +vt 0.889999 0.600000 +vt 0.899999 0.600000 +vt 0.909999 0.600000 +vt 0.919999 0.600000 +vt 0.929999 0.600000 +vt 0.939999 0.600000 +vt 0.949999 0.600000 +vt 0.959999 0.600000 +vt 0.969999 0.600000 +vt 0.979999 0.600000 +vt 0.989999 0.600000 +vt 0.999999 0.600000 +vt 0.000000 0.610000 +vt 0.010000 0.610000 +vt 0.020000 0.610000 +vt 0.030000 0.610000 +vt 0.040000 0.610000 +vt 0.050000 0.610000 +vt 0.060000 0.610000 +vt 0.070000 0.610000 +vt 0.080000 0.610000 +vt 0.090000 0.610000 +vt 0.100000 0.610000 +vt 0.110000 0.610000 +vt 0.120000 0.610000 +vt 0.130000 0.610000 +vt 0.140000 0.610000 +vt 0.150000 0.610000 +vt 0.160000 0.610000 +vt 0.170000 0.610000 +vt 0.180000 0.610000 +vt 0.190000 0.610000 +vt 0.200000 0.610000 +vt 0.210000 0.610000 +vt 0.220000 0.610000 +vt 0.230000 0.610000 +vt 0.240000 0.610000 +vt 0.250000 0.610000 +vt 0.260000 0.610000 +vt 0.270000 0.610000 +vt 0.280000 0.610000 +vt 0.290000 0.610000 +vt 0.300000 0.610000 +vt 0.310000 0.610000 +vt 0.320000 0.610000 +vt 0.330000 0.610000 +vt 0.340000 0.610000 +vt 0.350000 0.610000 +vt 0.360000 0.610000 +vt 0.370000 0.610000 +vt 0.380000 0.610000 +vt 0.390000 0.610000 +vt 0.400000 0.610000 +vt 0.410000 0.610000 +vt 0.420000 0.610000 +vt 0.430000 0.610000 +vt 0.440000 0.610000 +vt 0.450000 0.610000 +vt 0.460000 0.610000 +vt 0.470000 0.610000 +vt 0.480000 0.610000 +vt 0.490000 0.610000 +vt 0.500000 0.610000 +vt 0.510000 0.610000 +vt 0.520000 0.610000 +vt 0.530000 0.610000 +vt 0.540000 0.610000 +vt 0.550000 0.610000 +vt 0.560000 0.610000 +vt 0.570000 0.610000 +vt 0.580000 0.610000 +vt 0.590000 0.610000 +vt 0.600000 0.610000 +vt 0.610000 0.610000 +vt 0.620000 0.610000 +vt 0.630000 0.610000 +vt 0.640000 0.610000 +vt 0.650000 0.610000 +vt 0.660000 0.610000 +vt 0.670000 0.610000 +vt 0.680000 0.610000 +vt 0.690000 0.610000 +vt 0.700000 0.610000 +vt 0.710000 0.610000 +vt 0.720000 0.610000 +vt 0.730000 0.610000 +vt 0.740000 0.610000 +vt 0.750000 0.610000 +vt 0.760000 0.610000 +vt 0.770000 0.610000 +vt 0.780000 0.610000 +vt 0.790000 0.610000 +vt 0.800000 0.610000 +vt 0.810000 0.610000 +vt 0.820000 0.610000 +vt 0.830000 0.610000 +vt 0.839999 0.610000 +vt 0.849999 0.610000 +vt 0.859999 0.610000 +vt 0.869999 0.610000 +vt 0.879999 0.610000 +vt 0.889999 0.610000 +vt 0.899999 0.610000 +vt 0.909999 0.610000 +vt 0.919999 0.610000 +vt 0.929999 0.610000 +vt 0.939999 0.610000 +vt 0.949999 0.610000 +vt 0.959999 0.610000 +vt 0.969999 0.610000 +vt 0.979999 0.610000 +vt 0.989999 0.610000 +vt 0.999999 0.610000 +vt 0.000000 0.620000 +vt 0.010000 0.620000 +vt 0.020000 0.620000 +vt 0.030000 0.620000 +vt 0.040000 0.620000 +vt 0.050000 0.620000 +vt 0.060000 0.620000 +vt 0.070000 0.620000 +vt 0.080000 0.620000 +vt 0.090000 0.620000 +vt 0.100000 0.620000 +vt 0.110000 0.620000 +vt 0.120000 0.620000 +vt 0.130000 0.620000 +vt 0.140000 0.620000 +vt 0.150000 0.620000 +vt 0.160000 0.620000 +vt 0.170000 0.620000 +vt 0.180000 0.620000 +vt 0.190000 0.620000 +vt 0.200000 0.620000 +vt 0.210000 0.620000 +vt 0.220000 0.620000 +vt 0.230000 0.620000 +vt 0.240000 0.620000 +vt 0.250000 0.620000 +vt 0.260000 0.620000 +vt 0.270000 0.620000 +vt 0.280000 0.620000 +vt 0.290000 0.620000 +vt 0.300000 0.620000 +vt 0.310000 0.620000 +vt 0.320000 0.620000 +vt 0.330000 0.620000 +vt 0.340000 0.620000 +vt 0.350000 0.620000 +vt 0.360000 0.620000 +vt 0.370000 0.620000 +vt 0.380000 0.620000 +vt 0.390000 0.620000 +vt 0.400000 0.620000 +vt 0.410000 0.620000 +vt 0.420000 0.620000 +vt 0.430000 0.620000 +vt 0.440000 0.620000 +vt 0.450000 0.620000 +vt 0.460000 0.620000 +vt 0.470000 0.620000 +vt 0.480000 0.620000 +vt 0.490000 0.620000 +vt 0.500000 0.620000 +vt 0.510000 0.620000 +vt 0.520000 0.620000 +vt 0.530000 0.620000 +vt 0.540000 0.620000 +vt 0.550000 0.620000 +vt 0.560000 0.620000 +vt 0.570000 0.620000 +vt 0.580000 0.620000 +vt 0.590000 0.620000 +vt 0.600000 0.620000 +vt 0.610000 0.620000 +vt 0.620000 0.620000 +vt 0.630000 0.620000 +vt 0.640000 0.620000 +vt 0.650000 0.620000 +vt 0.660000 0.620000 +vt 0.670000 0.620000 +vt 0.680000 0.620000 +vt 0.690000 0.620000 +vt 0.700000 0.620000 +vt 0.710000 0.620000 +vt 0.720000 0.620000 +vt 0.730000 0.620000 +vt 0.740000 0.620000 +vt 0.750000 0.620000 +vt 0.760000 0.620000 +vt 0.770000 0.620000 +vt 0.780000 0.620000 +vt 0.790000 0.620000 +vt 0.800000 0.620000 +vt 0.810000 0.620000 +vt 0.820000 0.620000 +vt 0.830000 0.620000 +vt 0.839999 0.620000 +vt 0.849999 0.620000 +vt 0.859999 0.620000 +vt 0.869999 0.620000 +vt 0.879999 0.620000 +vt 0.889999 0.620000 +vt 0.899999 0.620000 +vt 0.909999 0.620000 +vt 0.919999 0.620000 +vt 0.929999 0.620000 +vt 0.939999 0.620000 +vt 0.949999 0.620000 +vt 0.959999 0.620000 +vt 0.969999 0.620000 +vt 0.979999 0.620000 +vt 0.989999 0.620000 +vt 0.999999 0.620000 +vt 0.000000 0.630000 +vt 0.010000 0.630000 +vt 0.020000 0.630000 +vt 0.030000 0.630000 +vt 0.040000 0.630000 +vt 0.050000 0.630000 +vt 0.060000 0.630000 +vt 0.070000 0.630000 +vt 0.080000 0.630000 +vt 0.090000 0.630000 +vt 0.100000 0.630000 +vt 0.110000 0.630000 +vt 0.120000 0.630000 +vt 0.130000 0.630000 +vt 0.140000 0.630000 +vt 0.150000 0.630000 +vt 0.160000 0.630000 +vt 0.170000 0.630000 +vt 0.180000 0.630000 +vt 0.190000 0.630000 +vt 0.200000 0.630000 +vt 0.210000 0.630000 +vt 0.220000 0.630000 +vt 0.230000 0.630000 +vt 0.240000 0.630000 +vt 0.250000 0.630000 +vt 0.260000 0.630000 +vt 0.270000 0.630000 +vt 0.280000 0.630000 +vt 0.290000 0.630000 +vt 0.300000 0.630000 +vt 0.310000 0.630000 +vt 0.320000 0.630000 +vt 0.330000 0.630000 +vt 0.340000 0.630000 +vt 0.350000 0.630000 +vt 0.360000 0.630000 +vt 0.370000 0.630000 +vt 0.380000 0.630000 +vt 0.390000 0.630000 +vt 0.400000 0.630000 +vt 0.410000 0.630000 +vt 0.420000 0.630000 +vt 0.430000 0.630000 +vt 0.440000 0.630000 +vt 0.450000 0.630000 +vt 0.460000 0.630000 +vt 0.470000 0.630000 +vt 0.480000 0.630000 +vt 0.490000 0.630000 +vt 0.500000 0.630000 +vt 0.510000 0.630000 +vt 0.520000 0.630000 +vt 0.530000 0.630000 +vt 0.540000 0.630000 +vt 0.550000 0.630000 +vt 0.560000 0.630000 +vt 0.570000 0.630000 +vt 0.580000 0.630000 +vt 0.590000 0.630000 +vt 0.600000 0.630000 +vt 0.610000 0.630000 +vt 0.620000 0.630000 +vt 0.630000 0.630000 +vt 0.640000 0.630000 +vt 0.650000 0.630000 +vt 0.660000 0.630000 +vt 0.670000 0.630000 +vt 0.680000 0.630000 +vt 0.690000 0.630000 +vt 0.700000 0.630000 +vt 0.710000 0.630000 +vt 0.720000 0.630000 +vt 0.730000 0.630000 +vt 0.740000 0.630000 +vt 0.750000 0.630000 +vt 0.760000 0.630000 +vt 0.770000 0.630000 +vt 0.780000 0.630000 +vt 0.790000 0.630000 +vt 0.800000 0.630000 +vt 0.810000 0.630000 +vt 0.820000 0.630000 +vt 0.830000 0.630000 +vt 0.839999 0.630000 +vt 0.849999 0.630000 +vt 0.859999 0.630000 +vt 0.869999 0.630000 +vt 0.879999 0.630000 +vt 0.889999 0.630000 +vt 0.899999 0.630000 +vt 0.909999 0.630000 +vt 0.919999 0.630000 +vt 0.929999 0.630000 +vt 0.939999 0.630000 +vt 0.949999 0.630000 +vt 0.959999 0.630000 +vt 0.969999 0.630000 +vt 0.979999 0.630000 +vt 0.989999 0.630000 +vt 0.999999 0.630000 +vt 0.000000 0.640000 +vt 0.010000 0.640000 +vt 0.020000 0.640000 +vt 0.030000 0.640000 +vt 0.040000 0.640000 +vt 0.050000 0.640000 +vt 0.060000 0.640000 +vt 0.070000 0.640000 +vt 0.080000 0.640000 +vt 0.090000 0.640000 +vt 0.100000 0.640000 +vt 0.110000 0.640000 +vt 0.120000 0.640000 +vt 0.130000 0.640000 +vt 0.140000 0.640000 +vt 0.150000 0.640000 +vt 0.160000 0.640000 +vt 0.170000 0.640000 +vt 0.180000 0.640000 +vt 0.190000 0.640000 +vt 0.200000 0.640000 +vt 0.210000 0.640000 +vt 0.220000 0.640000 +vt 0.230000 0.640000 +vt 0.240000 0.640000 +vt 0.250000 0.640000 +vt 0.260000 0.640000 +vt 0.270000 0.640000 +vt 0.280000 0.640000 +vt 0.290000 0.640000 +vt 0.300000 0.640000 +vt 0.310000 0.640000 +vt 0.320000 0.640000 +vt 0.330000 0.640000 +vt 0.340000 0.640000 +vt 0.350000 0.640000 +vt 0.360000 0.640000 +vt 0.370000 0.640000 +vt 0.380000 0.640000 +vt 0.390000 0.640000 +vt 0.400000 0.640000 +vt 0.410000 0.640000 +vt 0.420000 0.640000 +vt 0.430000 0.640000 +vt 0.440000 0.640000 +vt 0.450000 0.640000 +vt 0.460000 0.640000 +vt 0.470000 0.640000 +vt 0.480000 0.640000 +vt 0.490000 0.640000 +vt 0.500000 0.640000 +vt 0.510000 0.640000 +vt 0.520000 0.640000 +vt 0.530000 0.640000 +vt 0.540000 0.640000 +vt 0.550000 0.640000 +vt 0.560000 0.640000 +vt 0.570000 0.640000 +vt 0.580000 0.640000 +vt 0.590000 0.640000 +vt 0.600000 0.640000 +vt 0.610000 0.640000 +vt 0.620000 0.640000 +vt 0.630000 0.640000 +vt 0.640000 0.640000 +vt 0.650000 0.640000 +vt 0.660000 0.640000 +vt 0.670000 0.640000 +vt 0.680000 0.640000 +vt 0.690000 0.640000 +vt 0.700000 0.640000 +vt 0.710000 0.640000 +vt 0.720000 0.640000 +vt 0.730000 0.640000 +vt 0.740000 0.640000 +vt 0.750000 0.640000 +vt 0.760000 0.640000 +vt 0.770000 0.640000 +vt 0.780000 0.640000 +vt 0.790000 0.640000 +vt 0.800000 0.640000 +vt 0.810000 0.640000 +vt 0.820000 0.640000 +vt 0.830000 0.640000 +vt 0.839999 0.640000 +vt 0.849999 0.640000 +vt 0.859999 0.640000 +vt 0.869999 0.640000 +vt 0.879999 0.640000 +vt 0.889999 0.640000 +vt 0.899999 0.640000 +vt 0.909999 0.640000 +vt 0.919999 0.640000 +vt 0.929999 0.640000 +vt 0.939999 0.640000 +vt 0.949999 0.640000 +vt 0.959999 0.640000 +vt 0.969999 0.640000 +vt 0.979999 0.640000 +vt 0.989999 0.640000 +vt 0.999999 0.640000 +vt 0.000000 0.650000 +vt 0.010000 0.650000 +vt 0.020000 0.650000 +vt 0.030000 0.650000 +vt 0.040000 0.650000 +vt 0.050000 0.650000 +vt 0.060000 0.650000 +vt 0.070000 0.650000 +vt 0.080000 0.650000 +vt 0.090000 0.650000 +vt 0.100000 0.650000 +vt 0.110000 0.650000 +vt 0.120000 0.650000 +vt 0.130000 0.650000 +vt 0.140000 0.650000 +vt 0.150000 0.650000 +vt 0.160000 0.650000 +vt 0.170000 0.650000 +vt 0.180000 0.650000 +vt 0.190000 0.650000 +vt 0.200000 0.650000 +vt 0.210000 0.650000 +vt 0.220000 0.650000 +vt 0.230000 0.650000 +vt 0.240000 0.650000 +vt 0.250000 0.650000 +vt 0.260000 0.650000 +vt 0.270000 0.650000 +vt 0.280000 0.650000 +vt 0.290000 0.650000 +vt 0.300000 0.650000 +vt 0.310000 0.650000 +vt 0.320000 0.650000 +vt 0.330000 0.650000 +vt 0.340000 0.650000 +vt 0.350000 0.650000 +vt 0.360000 0.650000 +vt 0.370000 0.650000 +vt 0.380000 0.650000 +vt 0.390000 0.650000 +vt 0.400000 0.650000 +vt 0.410000 0.650000 +vt 0.420000 0.650000 +vt 0.430000 0.650000 +vt 0.440000 0.650000 +vt 0.450000 0.650000 +vt 0.460000 0.650000 +vt 0.470000 0.650000 +vt 0.480000 0.650000 +vt 0.490000 0.650000 +vt 0.500000 0.650000 +vt 0.510000 0.650000 +vt 0.520000 0.650000 +vt 0.530000 0.650000 +vt 0.540000 0.650000 +vt 0.550000 0.650000 +vt 0.560000 0.650000 +vt 0.570000 0.650000 +vt 0.580000 0.650000 +vt 0.590000 0.650000 +vt 0.600000 0.650000 +vt 0.610000 0.650000 +vt 0.620000 0.650000 +vt 0.630000 0.650000 +vt 0.640000 0.650000 +vt 0.650000 0.650000 +vt 0.660000 0.650000 +vt 0.670000 0.650000 +vt 0.680000 0.650000 +vt 0.690000 0.650000 +vt 0.700000 0.650000 +vt 0.710000 0.650000 +vt 0.720000 0.650000 +vt 0.730000 0.650000 +vt 0.740000 0.650000 +vt 0.750000 0.650000 +vt 0.760000 0.650000 +vt 0.770000 0.650000 +vt 0.780000 0.650000 +vt 0.790000 0.650000 +vt 0.800000 0.650000 +vt 0.810000 0.650000 +vt 0.820000 0.650000 +vt 0.830000 0.650000 +vt 0.839999 0.650000 +vt 0.849999 0.650000 +vt 0.859999 0.650000 +vt 0.869999 0.650000 +vt 0.879999 0.650000 +vt 0.889999 0.650000 +vt 0.899999 0.650000 +vt 0.909999 0.650000 +vt 0.919999 0.650000 +vt 0.929999 0.650000 +vt 0.939999 0.650000 +vt 0.949999 0.650000 +vt 0.959999 0.650000 +vt 0.969999 0.650000 +vt 0.979999 0.650000 +vt 0.989999 0.650000 +vt 0.999999 0.650000 +vt 0.000000 0.660000 +vt 0.010000 0.660000 +vt 0.020000 0.660000 +vt 0.030000 0.660000 +vt 0.040000 0.660000 +vt 0.050000 0.660000 +vt 0.060000 0.660000 +vt 0.070000 0.660000 +vt 0.080000 0.660000 +vt 0.090000 0.660000 +vt 0.100000 0.660000 +vt 0.110000 0.660000 +vt 0.120000 0.660000 +vt 0.130000 0.660000 +vt 0.140000 0.660000 +vt 0.150000 0.660000 +vt 0.160000 0.660000 +vt 0.170000 0.660000 +vt 0.180000 0.660000 +vt 0.190000 0.660000 +vt 0.200000 0.660000 +vt 0.210000 0.660000 +vt 0.220000 0.660000 +vt 0.230000 0.660000 +vt 0.240000 0.660000 +vt 0.250000 0.660000 +vt 0.260000 0.660000 +vt 0.270000 0.660000 +vt 0.280000 0.660000 +vt 0.290000 0.660000 +vt 0.300000 0.660000 +vt 0.310000 0.660000 +vt 0.320000 0.660000 +vt 0.330000 0.660000 +vt 0.340000 0.660000 +vt 0.350000 0.660000 +vt 0.360000 0.660000 +vt 0.370000 0.660000 +vt 0.380000 0.660000 +vt 0.390000 0.660000 +vt 0.400000 0.660000 +vt 0.410000 0.660000 +vt 0.420000 0.660000 +vt 0.430000 0.660000 +vt 0.440000 0.660000 +vt 0.450000 0.660000 +vt 0.460000 0.660000 +vt 0.470000 0.660000 +vt 0.480000 0.660000 +vt 0.490000 0.660000 +vt 0.500000 0.660000 +vt 0.510000 0.660000 +vt 0.520000 0.660000 +vt 0.530000 0.660000 +vt 0.540000 0.660000 +vt 0.550000 0.660000 +vt 0.560000 0.660000 +vt 0.570000 0.660000 +vt 0.580000 0.660000 +vt 0.590000 0.660000 +vt 0.600000 0.660000 +vt 0.610000 0.660000 +vt 0.620000 0.660000 +vt 0.630000 0.660000 +vt 0.640000 0.660000 +vt 0.650000 0.660000 +vt 0.660000 0.660000 +vt 0.670000 0.660000 +vt 0.680000 0.660000 +vt 0.690000 0.660000 +vt 0.700000 0.660000 +vt 0.710000 0.660000 +vt 0.720000 0.660000 +vt 0.730000 0.660000 +vt 0.740000 0.660000 +vt 0.750000 0.660000 +vt 0.760000 0.660000 +vt 0.770000 0.660000 +vt 0.780000 0.660000 +vt 0.790000 0.660000 +vt 0.800000 0.660000 +vt 0.810000 0.660000 +vt 0.820000 0.660000 +vt 0.830000 0.660000 +vt 0.839999 0.660000 +vt 0.849999 0.660000 +vt 0.859999 0.660000 +vt 0.869999 0.660000 +vt 0.879999 0.660000 +vt 0.889999 0.660000 +vt 0.899999 0.660000 +vt 0.909999 0.660000 +vt 0.919999 0.660000 +vt 0.929999 0.660000 +vt 0.939999 0.660000 +vt 0.949999 0.660000 +vt 0.959999 0.660000 +vt 0.969999 0.660000 +vt 0.979999 0.660000 +vt 0.989999 0.660000 +vt 0.999999 0.660000 +vt 0.000000 0.670000 +vt 0.010000 0.670000 +vt 0.020000 0.670000 +vt 0.030000 0.670000 +vt 0.040000 0.670000 +vt 0.050000 0.670000 +vt 0.060000 0.670000 +vt 0.070000 0.670000 +vt 0.080000 0.670000 +vt 0.090000 0.670000 +vt 0.100000 0.670000 +vt 0.110000 0.670000 +vt 0.120000 0.670000 +vt 0.130000 0.670000 +vt 0.140000 0.670000 +vt 0.150000 0.670000 +vt 0.160000 0.670000 +vt 0.170000 0.670000 +vt 0.180000 0.670000 +vt 0.190000 0.670000 +vt 0.200000 0.670000 +vt 0.210000 0.670000 +vt 0.220000 0.670000 +vt 0.230000 0.670000 +vt 0.240000 0.670000 +vt 0.250000 0.670000 +vt 0.260000 0.670000 +vt 0.270000 0.670000 +vt 0.280000 0.670000 +vt 0.290000 0.670000 +vt 0.300000 0.670000 +vt 0.310000 0.670000 +vt 0.320000 0.670000 +vt 0.330000 0.670000 +vt 0.340000 0.670000 +vt 0.350000 0.670000 +vt 0.360000 0.670000 +vt 0.370000 0.670000 +vt 0.380000 0.670000 +vt 0.390000 0.670000 +vt 0.400000 0.670000 +vt 0.410000 0.670000 +vt 0.420000 0.670000 +vt 0.430000 0.670000 +vt 0.440000 0.670000 +vt 0.450000 0.670000 +vt 0.460000 0.670000 +vt 0.470000 0.670000 +vt 0.480000 0.670000 +vt 0.490000 0.670000 +vt 0.500000 0.670000 +vt 0.510000 0.670000 +vt 0.520000 0.670000 +vt 0.530000 0.670000 +vt 0.540000 0.670000 +vt 0.550000 0.670000 +vt 0.560000 0.670000 +vt 0.570000 0.670000 +vt 0.580000 0.670000 +vt 0.590000 0.670000 +vt 0.600000 0.670000 +vt 0.610000 0.670000 +vt 0.620000 0.670000 +vt 0.630000 0.670000 +vt 0.640000 0.670000 +vt 0.650000 0.670000 +vt 0.660000 0.670000 +vt 0.670000 0.670000 +vt 0.680000 0.670000 +vt 0.690000 0.670000 +vt 0.700000 0.670000 +vt 0.710000 0.670000 +vt 0.720000 0.670000 +vt 0.730000 0.670000 +vt 0.740000 0.670000 +vt 0.750000 0.670000 +vt 0.760000 0.670000 +vt 0.770000 0.670000 +vt 0.780000 0.670000 +vt 0.790000 0.670000 +vt 0.800000 0.670000 +vt 0.810000 0.670000 +vt 0.820000 0.670000 +vt 0.830000 0.670000 +vt 0.839999 0.670000 +vt 0.849999 0.670000 +vt 0.859999 0.670000 +vt 0.869999 0.670000 +vt 0.879999 0.670000 +vt 0.889999 0.670000 +vt 0.899999 0.670000 +vt 0.909999 0.670000 +vt 0.919999 0.670000 +vt 0.929999 0.670000 +vt 0.939999 0.670000 +vt 0.949999 0.670000 +vt 0.959999 0.670000 +vt 0.969999 0.670000 +vt 0.979999 0.670000 +vt 0.989999 0.670000 +vt 0.999999 0.670000 +vt 0.000000 0.680000 +vt 0.010000 0.680000 +vt 0.020000 0.680000 +vt 0.030000 0.680000 +vt 0.040000 0.680000 +vt 0.050000 0.680000 +vt 0.060000 0.680000 +vt 0.070000 0.680000 +vt 0.080000 0.680000 +vt 0.090000 0.680000 +vt 0.100000 0.680000 +vt 0.110000 0.680000 +vt 0.120000 0.680000 +vt 0.130000 0.680000 +vt 0.140000 0.680000 +vt 0.150000 0.680000 +vt 0.160000 0.680000 +vt 0.170000 0.680000 +vt 0.180000 0.680000 +vt 0.190000 0.680000 +vt 0.200000 0.680000 +vt 0.210000 0.680000 +vt 0.220000 0.680000 +vt 0.230000 0.680000 +vt 0.240000 0.680000 +vt 0.250000 0.680000 +vt 0.260000 0.680000 +vt 0.270000 0.680000 +vt 0.280000 0.680000 +vt 0.290000 0.680000 +vt 0.300000 0.680000 +vt 0.310000 0.680000 +vt 0.320000 0.680000 +vt 0.330000 0.680000 +vt 0.340000 0.680000 +vt 0.350000 0.680000 +vt 0.360000 0.680000 +vt 0.370000 0.680000 +vt 0.380000 0.680000 +vt 0.390000 0.680000 +vt 0.400000 0.680000 +vt 0.410000 0.680000 +vt 0.420000 0.680000 +vt 0.430000 0.680000 +vt 0.440000 0.680000 +vt 0.450000 0.680000 +vt 0.460000 0.680000 +vt 0.470000 0.680000 +vt 0.480000 0.680000 +vt 0.490000 0.680000 +vt 0.500000 0.680000 +vt 0.510000 0.680000 +vt 0.520000 0.680000 +vt 0.530000 0.680000 +vt 0.540000 0.680000 +vt 0.550000 0.680000 +vt 0.560000 0.680000 +vt 0.570000 0.680000 +vt 0.580000 0.680000 +vt 0.590000 0.680000 +vt 0.600000 0.680000 +vt 0.610000 0.680000 +vt 0.620000 0.680000 +vt 0.630000 0.680000 +vt 0.640000 0.680000 +vt 0.650000 0.680000 +vt 0.660000 0.680000 +vt 0.670000 0.680000 +vt 0.680000 0.680000 +vt 0.690000 0.680000 +vt 0.700000 0.680000 +vt 0.710000 0.680000 +vt 0.720000 0.680000 +vt 0.730000 0.680000 +vt 0.740000 0.680000 +vt 0.750000 0.680000 +vt 0.760000 0.680000 +vt 0.770000 0.680000 +vt 0.780000 0.680000 +vt 0.790000 0.680000 +vt 0.800000 0.680000 +vt 0.810000 0.680000 +vt 0.820000 0.680000 +vt 0.830000 0.680000 +vt 0.839999 0.680000 +vt 0.849999 0.680000 +vt 0.859999 0.680000 +vt 0.869999 0.680000 +vt 0.879999 0.680000 +vt 0.889999 0.680000 +vt 0.899999 0.680000 +vt 0.909999 0.680000 +vt 0.919999 0.680000 +vt 0.929999 0.680000 +vt 0.939999 0.680000 +vt 0.949999 0.680000 +vt 0.959999 0.680000 +vt 0.969999 0.680000 +vt 0.979999 0.680000 +vt 0.989999 0.680000 +vt 0.999999 0.680000 +vt 0.000000 0.690000 +vt 0.010000 0.690000 +vt 0.020000 0.690000 +vt 0.030000 0.690000 +vt 0.040000 0.690000 +vt 0.050000 0.690000 +vt 0.060000 0.690000 +vt 0.070000 0.690000 +vt 0.080000 0.690000 +vt 0.090000 0.690000 +vt 0.100000 0.690000 +vt 0.110000 0.690000 +vt 0.120000 0.690000 +vt 0.130000 0.690000 +vt 0.140000 0.690000 +vt 0.150000 0.690000 +vt 0.160000 0.690000 +vt 0.170000 0.690000 +vt 0.180000 0.690000 +vt 0.190000 0.690000 +vt 0.200000 0.690000 +vt 0.210000 0.690000 +vt 0.220000 0.690000 +vt 0.230000 0.690000 +vt 0.240000 0.690000 +vt 0.250000 0.690000 +vt 0.260000 0.690000 +vt 0.270000 0.690000 +vt 0.280000 0.690000 +vt 0.290000 0.690000 +vt 0.300000 0.690000 +vt 0.310000 0.690000 +vt 0.320000 0.690000 +vt 0.330000 0.690000 +vt 0.340000 0.690000 +vt 0.350000 0.690000 +vt 0.360000 0.690000 +vt 0.370000 0.690000 +vt 0.380000 0.690000 +vt 0.390000 0.690000 +vt 0.400000 0.690000 +vt 0.410000 0.690000 +vt 0.420000 0.690000 +vt 0.430000 0.690000 +vt 0.440000 0.690000 +vt 0.450000 0.690000 +vt 0.460000 0.690000 +vt 0.470000 0.690000 +vt 0.480000 0.690000 +vt 0.490000 0.690000 +vt 0.500000 0.690000 +vt 0.510000 0.690000 +vt 0.520000 0.690000 +vt 0.530000 0.690000 +vt 0.540000 0.690000 +vt 0.550000 0.690000 +vt 0.560000 0.690000 +vt 0.570000 0.690000 +vt 0.580000 0.690000 +vt 0.590000 0.690000 +vt 0.600000 0.690000 +vt 0.610000 0.690000 +vt 0.620000 0.690000 +vt 0.630000 0.690000 +vt 0.640000 0.690000 +vt 0.650000 0.690000 +vt 0.660000 0.690000 +vt 0.670000 0.690000 +vt 0.680000 0.690000 +vt 0.690000 0.690000 +vt 0.700000 0.690000 +vt 0.710000 0.690000 +vt 0.720000 0.690000 +vt 0.730000 0.690000 +vt 0.740000 0.690000 +vt 0.750000 0.690000 +vt 0.760000 0.690000 +vt 0.770000 0.690000 +vt 0.780000 0.690000 +vt 0.790000 0.690000 +vt 0.800000 0.690000 +vt 0.810000 0.690000 +vt 0.820000 0.690000 +vt 0.830000 0.690000 +vt 0.839999 0.690000 +vt 0.849999 0.690000 +vt 0.859999 0.690000 +vt 0.869999 0.690000 +vt 0.879999 0.690000 +vt 0.889999 0.690000 +vt 0.899999 0.690000 +vt 0.909999 0.690000 +vt 0.919999 0.690000 +vt 0.929999 0.690000 +vt 0.939999 0.690000 +vt 0.949999 0.690000 +vt 0.959999 0.690000 +vt 0.969999 0.690000 +vt 0.979999 0.690000 +vt 0.989999 0.690000 +vt 0.999999 0.690000 +vt 0.000000 0.700000 +vt 0.010000 0.700000 +vt 0.020000 0.700000 +vt 0.030000 0.700000 +vt 0.040000 0.700000 +vt 0.050000 0.700000 +vt 0.060000 0.700000 +vt 0.070000 0.700000 +vt 0.080000 0.700000 +vt 0.090000 0.700000 +vt 0.100000 0.700000 +vt 0.110000 0.700000 +vt 0.120000 0.700000 +vt 0.130000 0.700000 +vt 0.140000 0.700000 +vt 0.150000 0.700000 +vt 0.160000 0.700000 +vt 0.170000 0.700000 +vt 0.180000 0.700000 +vt 0.190000 0.700000 +vt 0.200000 0.700000 +vt 0.210000 0.700000 +vt 0.220000 0.700000 +vt 0.230000 0.700000 +vt 0.240000 0.700000 +vt 0.250000 0.700000 +vt 0.260000 0.700000 +vt 0.270000 0.700000 +vt 0.280000 0.700000 +vt 0.290000 0.700000 +vt 0.300000 0.700000 +vt 0.310000 0.700000 +vt 0.320000 0.700000 +vt 0.330000 0.700000 +vt 0.340000 0.700000 +vt 0.350000 0.700000 +vt 0.360000 0.700000 +vt 0.370000 0.700000 +vt 0.380000 0.700000 +vt 0.390000 0.700000 +vt 0.400000 0.700000 +vt 0.410000 0.700000 +vt 0.420000 0.700000 +vt 0.430000 0.700000 +vt 0.440000 0.700000 +vt 0.450000 0.700000 +vt 0.460000 0.700000 +vt 0.470000 0.700000 +vt 0.480000 0.700000 +vt 0.490000 0.700000 +vt 0.500000 0.700000 +vt 0.510000 0.700000 +vt 0.520000 0.700000 +vt 0.530000 0.700000 +vt 0.540000 0.700000 +vt 0.550000 0.700000 +vt 0.560000 0.700000 +vt 0.570000 0.700000 +vt 0.580000 0.700000 +vt 0.590000 0.700000 +vt 0.600000 0.700000 +vt 0.610000 0.700000 +vt 0.620000 0.700000 +vt 0.630000 0.700000 +vt 0.640000 0.700000 +vt 0.650000 0.700000 +vt 0.660000 0.700000 +vt 0.670000 0.700000 +vt 0.680000 0.700000 +vt 0.690000 0.700000 +vt 0.700000 0.700000 +vt 0.710000 0.700000 +vt 0.720000 0.700000 +vt 0.730000 0.700000 +vt 0.740000 0.700000 +vt 0.750000 0.700000 +vt 0.760000 0.700000 +vt 0.770000 0.700000 +vt 0.780000 0.700000 +vt 0.790000 0.700000 +vt 0.800000 0.700000 +vt 0.810000 0.700000 +vt 0.820000 0.700000 +vt 0.830000 0.700000 +vt 0.839999 0.700000 +vt 0.849999 0.700000 +vt 0.859999 0.700000 +vt 0.869999 0.700000 +vt 0.879999 0.700000 +vt 0.889999 0.700000 +vt 0.899999 0.700000 +vt 0.909999 0.700000 +vt 0.919999 0.700000 +vt 0.929999 0.700000 +vt 0.939999 0.700000 +vt 0.949999 0.700000 +vt 0.959999 0.700000 +vt 0.969999 0.700000 +vt 0.979999 0.700000 +vt 0.989999 0.700000 +vt 0.999999 0.700000 +vt 0.000000 0.710000 +vt 0.010000 0.710000 +vt 0.020000 0.710000 +vt 0.030000 0.710000 +vt 0.040000 0.710000 +vt 0.050000 0.710000 +vt 0.060000 0.710000 +vt 0.070000 0.710000 +vt 0.080000 0.710000 +vt 0.090000 0.710000 +vt 0.100000 0.710000 +vt 0.110000 0.710000 +vt 0.120000 0.710000 +vt 0.130000 0.710000 +vt 0.140000 0.710000 +vt 0.150000 0.710000 +vt 0.160000 0.710000 +vt 0.170000 0.710000 +vt 0.180000 0.710000 +vt 0.190000 0.710000 +vt 0.200000 0.710000 +vt 0.210000 0.710000 +vt 0.220000 0.710000 +vt 0.230000 0.710000 +vt 0.240000 0.710000 +vt 0.250000 0.710000 +vt 0.260000 0.710000 +vt 0.270000 0.710000 +vt 0.280000 0.710000 +vt 0.290000 0.710000 +vt 0.300000 0.710000 +vt 0.310000 0.710000 +vt 0.320000 0.710000 +vt 0.330000 0.710000 +vt 0.340000 0.710000 +vt 0.350000 0.710000 +vt 0.360000 0.710000 +vt 0.370000 0.710000 +vt 0.380000 0.710000 +vt 0.390000 0.710000 +vt 0.400000 0.710000 +vt 0.410000 0.710000 +vt 0.420000 0.710000 +vt 0.430000 0.710000 +vt 0.440000 0.710000 +vt 0.450000 0.710000 +vt 0.460000 0.710000 +vt 0.470000 0.710000 +vt 0.480000 0.710000 +vt 0.490000 0.710000 +vt 0.500000 0.710000 +vt 0.510000 0.710000 +vt 0.520000 0.710000 +vt 0.530000 0.710000 +vt 0.540000 0.710000 +vt 0.550000 0.710000 +vt 0.560000 0.710000 +vt 0.570000 0.710000 +vt 0.580000 0.710000 +vt 0.590000 0.710000 +vt 0.600000 0.710000 +vt 0.610000 0.710000 +vt 0.620000 0.710000 +vt 0.630000 0.710000 +vt 0.640000 0.710000 +vt 0.650000 0.710000 +vt 0.660000 0.710000 +vt 0.670000 0.710000 +vt 0.680000 0.710000 +vt 0.690000 0.710000 +vt 0.700000 0.710000 +vt 0.710000 0.710000 +vt 0.720000 0.710000 +vt 0.730000 0.710000 +vt 0.740000 0.710000 +vt 0.750000 0.710000 +vt 0.760000 0.710000 +vt 0.770000 0.710000 +vt 0.780000 0.710000 +vt 0.790000 0.710000 +vt 0.800000 0.710000 +vt 0.810000 0.710000 +vt 0.820000 0.710000 +vt 0.830000 0.710000 +vt 0.839999 0.710000 +vt 0.849999 0.710000 +vt 0.859999 0.710000 +vt 0.869999 0.710000 +vt 0.879999 0.710000 +vt 0.889999 0.710000 +vt 0.899999 0.710000 +vt 0.909999 0.710000 +vt 0.919999 0.710000 +vt 0.929999 0.710000 +vt 0.939999 0.710000 +vt 0.949999 0.710000 +vt 0.959999 0.710000 +vt 0.969999 0.710000 +vt 0.979999 0.710000 +vt 0.989999 0.710000 +vt 0.999999 0.710000 +vt 0.000000 0.720000 +vt 0.010000 0.720000 +vt 0.020000 0.720000 +vt 0.030000 0.720000 +vt 0.040000 0.720000 +vt 0.050000 0.720000 +vt 0.060000 0.720000 +vt 0.070000 0.720000 +vt 0.080000 0.720000 +vt 0.090000 0.720000 +vt 0.100000 0.720000 +vt 0.110000 0.720000 +vt 0.120000 0.720000 +vt 0.130000 0.720000 +vt 0.140000 0.720000 +vt 0.150000 0.720000 +vt 0.160000 0.720000 +vt 0.170000 0.720000 +vt 0.180000 0.720000 +vt 0.190000 0.720000 +vt 0.200000 0.720000 +vt 0.210000 0.720000 +vt 0.220000 0.720000 +vt 0.230000 0.720000 +vt 0.240000 0.720000 +vt 0.250000 0.720000 +vt 0.260000 0.720000 +vt 0.270000 0.720000 +vt 0.280000 0.720000 +vt 0.290000 0.720000 +vt 0.300000 0.720000 +vt 0.310000 0.720000 +vt 0.320000 0.720000 +vt 0.330000 0.720000 +vt 0.340000 0.720000 +vt 0.350000 0.720000 +vt 0.360000 0.720000 +vt 0.370000 0.720000 +vt 0.380000 0.720000 +vt 0.390000 0.720000 +vt 0.400000 0.720000 +vt 0.410000 0.720000 +vt 0.420000 0.720000 +vt 0.430000 0.720000 +vt 0.440000 0.720000 +vt 0.450000 0.720000 +vt 0.460000 0.720000 +vt 0.470000 0.720000 +vt 0.480000 0.720000 +vt 0.490000 0.720000 +vt 0.500000 0.720000 +vt 0.510000 0.720000 +vt 0.520000 0.720000 +vt 0.530000 0.720000 +vt 0.540000 0.720000 +vt 0.550000 0.720000 +vt 0.560000 0.720000 +vt 0.570000 0.720000 +vt 0.580000 0.720000 +vt 0.590000 0.720000 +vt 0.600000 0.720000 +vt 0.610000 0.720000 +vt 0.620000 0.720000 +vt 0.630000 0.720000 +vt 0.640000 0.720000 +vt 0.650000 0.720000 +vt 0.660000 0.720000 +vt 0.670000 0.720000 +vt 0.680000 0.720000 +vt 0.690000 0.720000 +vt 0.700000 0.720000 +vt 0.710000 0.720000 +vt 0.720000 0.720000 +vt 0.730000 0.720000 +vt 0.740000 0.720000 +vt 0.750000 0.720000 +vt 0.760000 0.720000 +vt 0.770000 0.720000 +vt 0.780000 0.720000 +vt 0.790000 0.720000 +vt 0.800000 0.720000 +vt 0.810000 0.720000 +vt 0.820000 0.720000 +vt 0.830000 0.720000 +vt 0.839999 0.720000 +vt 0.849999 0.720000 +vt 0.859999 0.720000 +vt 0.869999 0.720000 +vt 0.879999 0.720000 +vt 0.889999 0.720000 +vt 0.899999 0.720000 +vt 0.909999 0.720000 +vt 0.919999 0.720000 +vt 0.929999 0.720000 +vt 0.939999 0.720000 +vt 0.949999 0.720000 +vt 0.959999 0.720000 +vt 0.969999 0.720000 +vt 0.979999 0.720000 +vt 0.989999 0.720000 +vt 0.999999 0.720000 +vt 0.000000 0.730000 +vt 0.010000 0.730000 +vt 0.020000 0.730000 +vt 0.030000 0.730000 +vt 0.040000 0.730000 +vt 0.050000 0.730000 +vt 0.060000 0.730000 +vt 0.070000 0.730000 +vt 0.080000 0.730000 +vt 0.090000 0.730000 +vt 0.100000 0.730000 +vt 0.110000 0.730000 +vt 0.120000 0.730000 +vt 0.130000 0.730000 +vt 0.140000 0.730000 +vt 0.150000 0.730000 +vt 0.160000 0.730000 +vt 0.170000 0.730000 +vt 0.180000 0.730000 +vt 0.190000 0.730000 +vt 0.200000 0.730000 +vt 0.210000 0.730000 +vt 0.220000 0.730000 +vt 0.230000 0.730000 +vt 0.240000 0.730000 +vt 0.250000 0.730000 +vt 0.260000 0.730000 +vt 0.270000 0.730000 +vt 0.280000 0.730000 +vt 0.290000 0.730000 +vt 0.300000 0.730000 +vt 0.310000 0.730000 +vt 0.320000 0.730000 +vt 0.330000 0.730000 +vt 0.340000 0.730000 +vt 0.350000 0.730000 +vt 0.360000 0.730000 +vt 0.370000 0.730000 +vt 0.380000 0.730000 +vt 0.390000 0.730000 +vt 0.400000 0.730000 +vt 0.410000 0.730000 +vt 0.420000 0.730000 +vt 0.430000 0.730000 +vt 0.440000 0.730000 +vt 0.450000 0.730000 +vt 0.460000 0.730000 +vt 0.470000 0.730000 +vt 0.480000 0.730000 +vt 0.490000 0.730000 +vt 0.500000 0.730000 +vt 0.510000 0.730000 +vt 0.520000 0.730000 +vt 0.530000 0.730000 +vt 0.540000 0.730000 +vt 0.550000 0.730000 +vt 0.560000 0.730000 +vt 0.570000 0.730000 +vt 0.580000 0.730000 +vt 0.590000 0.730000 +vt 0.600000 0.730000 +vt 0.610000 0.730000 +vt 0.620000 0.730000 +vt 0.630000 0.730000 +vt 0.640000 0.730000 +vt 0.650000 0.730000 +vt 0.660000 0.730000 +vt 0.670000 0.730000 +vt 0.680000 0.730000 +vt 0.690000 0.730000 +vt 0.700000 0.730000 +vt 0.710000 0.730000 +vt 0.720000 0.730000 +vt 0.730000 0.730000 +vt 0.740000 0.730000 +vt 0.750000 0.730000 +vt 0.760000 0.730000 +vt 0.770000 0.730000 +vt 0.780000 0.730000 +vt 0.790000 0.730000 +vt 0.800000 0.730000 +vt 0.810000 0.730000 +vt 0.820000 0.730000 +vt 0.830000 0.730000 +vt 0.839999 0.730000 +vt 0.849999 0.730000 +vt 0.859999 0.730000 +vt 0.869999 0.730000 +vt 0.879999 0.730000 +vt 0.889999 0.730000 +vt 0.899999 0.730000 +vt 0.909999 0.730000 +vt 0.919999 0.730000 +vt 0.929999 0.730000 +vt 0.939999 0.730000 +vt 0.949999 0.730000 +vt 0.959999 0.730000 +vt 0.969999 0.730000 +vt 0.979999 0.730000 +vt 0.989999 0.730000 +vt 0.999999 0.730000 +vt 0.000000 0.740000 +vt 0.010000 0.740000 +vt 0.020000 0.740000 +vt 0.030000 0.740000 +vt 0.040000 0.740000 +vt 0.050000 0.740000 +vt 0.060000 0.740000 +vt 0.070000 0.740000 +vt 0.080000 0.740000 +vt 0.090000 0.740000 +vt 0.100000 0.740000 +vt 0.110000 0.740000 +vt 0.120000 0.740000 +vt 0.130000 0.740000 +vt 0.140000 0.740000 +vt 0.150000 0.740000 +vt 0.160000 0.740000 +vt 0.170000 0.740000 +vt 0.180000 0.740000 +vt 0.190000 0.740000 +vt 0.200000 0.740000 +vt 0.210000 0.740000 +vt 0.220000 0.740000 +vt 0.230000 0.740000 +vt 0.240000 0.740000 +vt 0.250000 0.740000 +vt 0.260000 0.740000 +vt 0.270000 0.740000 +vt 0.280000 0.740000 +vt 0.290000 0.740000 +vt 0.300000 0.740000 +vt 0.310000 0.740000 +vt 0.320000 0.740000 +vt 0.330000 0.740000 +vt 0.340000 0.740000 +vt 0.350000 0.740000 +vt 0.360000 0.740000 +vt 0.370000 0.740000 +vt 0.380000 0.740000 +vt 0.390000 0.740000 +vt 0.400000 0.740000 +vt 0.410000 0.740000 +vt 0.420000 0.740000 +vt 0.430000 0.740000 +vt 0.440000 0.740000 +vt 0.450000 0.740000 +vt 0.460000 0.740000 +vt 0.470000 0.740000 +vt 0.480000 0.740000 +vt 0.490000 0.740000 +vt 0.500000 0.740000 +vt 0.510000 0.740000 +vt 0.520000 0.740000 +vt 0.530000 0.740000 +vt 0.540000 0.740000 +vt 0.550000 0.740000 +vt 0.560000 0.740000 +vt 0.570000 0.740000 +vt 0.580000 0.740000 +vt 0.590000 0.740000 +vt 0.600000 0.740000 +vt 0.610000 0.740000 +vt 0.620000 0.740000 +vt 0.630000 0.740000 +vt 0.640000 0.740000 +vt 0.650000 0.740000 +vt 0.660000 0.740000 +vt 0.670000 0.740000 +vt 0.680000 0.740000 +vt 0.690000 0.740000 +vt 0.700000 0.740000 +vt 0.710000 0.740000 +vt 0.720000 0.740000 +vt 0.730000 0.740000 +vt 0.740000 0.740000 +vt 0.750000 0.740000 +vt 0.760000 0.740000 +vt 0.770000 0.740000 +vt 0.780000 0.740000 +vt 0.790000 0.740000 +vt 0.800000 0.740000 +vt 0.810000 0.740000 +vt 0.820000 0.740000 +vt 0.830000 0.740000 +vt 0.839999 0.740000 +vt 0.849999 0.740000 +vt 0.859999 0.740000 +vt 0.869999 0.740000 +vt 0.879999 0.740000 +vt 0.889999 0.740000 +vt 0.899999 0.740000 +vt 0.909999 0.740000 +vt 0.919999 0.740000 +vt 0.929999 0.740000 +vt 0.939999 0.740000 +vt 0.949999 0.740000 +vt 0.959999 0.740000 +vt 0.969999 0.740000 +vt 0.979999 0.740000 +vt 0.989999 0.740000 +vt 0.999999 0.740000 +vt 0.000000 0.750000 +vt 0.010000 0.750000 +vt 0.020000 0.750000 +vt 0.030000 0.750000 +vt 0.040000 0.750000 +vt 0.050000 0.750000 +vt 0.060000 0.750000 +vt 0.070000 0.750000 +vt 0.080000 0.750000 +vt 0.090000 0.750000 +vt 0.100000 0.750000 +vt 0.110000 0.750000 +vt 0.120000 0.750000 +vt 0.130000 0.750000 +vt 0.140000 0.750000 +vt 0.150000 0.750000 +vt 0.160000 0.750000 +vt 0.170000 0.750000 +vt 0.180000 0.750000 +vt 0.190000 0.750000 +vt 0.200000 0.750000 +vt 0.210000 0.750000 +vt 0.220000 0.750000 +vt 0.230000 0.750000 +vt 0.240000 0.750000 +vt 0.250000 0.750000 +vt 0.260000 0.750000 +vt 0.270000 0.750000 +vt 0.280000 0.750000 +vt 0.290000 0.750000 +vt 0.300000 0.750000 +vt 0.310000 0.750000 +vt 0.320000 0.750000 +vt 0.330000 0.750000 +vt 0.340000 0.750000 +vt 0.350000 0.750000 +vt 0.360000 0.750000 +vt 0.370000 0.750000 +vt 0.380000 0.750000 +vt 0.390000 0.750000 +vt 0.400000 0.750000 +vt 0.410000 0.750000 +vt 0.420000 0.750000 +vt 0.430000 0.750000 +vt 0.440000 0.750000 +vt 0.450000 0.750000 +vt 0.460000 0.750000 +vt 0.470000 0.750000 +vt 0.480000 0.750000 +vt 0.490000 0.750000 +vt 0.500000 0.750000 +vt 0.510000 0.750000 +vt 0.520000 0.750000 +vt 0.530000 0.750000 +vt 0.540000 0.750000 +vt 0.550000 0.750000 +vt 0.560000 0.750000 +vt 0.570000 0.750000 +vt 0.580000 0.750000 +vt 0.590000 0.750000 +vt 0.600000 0.750000 +vt 0.610000 0.750000 +vt 0.620000 0.750000 +vt 0.630000 0.750000 +vt 0.640000 0.750000 +vt 0.650000 0.750000 +vt 0.660000 0.750000 +vt 0.670000 0.750000 +vt 0.680000 0.750000 +vt 0.690000 0.750000 +vt 0.700000 0.750000 +vt 0.710000 0.750000 +vt 0.720000 0.750000 +vt 0.730000 0.750000 +vt 0.740000 0.750000 +vt 0.750000 0.750000 +vt 0.760000 0.750000 +vt 0.770000 0.750000 +vt 0.780000 0.750000 +vt 0.790000 0.750000 +vt 0.800000 0.750000 +vt 0.810000 0.750000 +vt 0.820000 0.750000 +vt 0.830000 0.750000 +vt 0.839999 0.750000 +vt 0.849999 0.750000 +vt 0.859999 0.750000 +vt 0.869999 0.750000 +vt 0.879999 0.750000 +vt 0.889999 0.750000 +vt 0.899999 0.750000 +vt 0.909999 0.750000 +vt 0.919999 0.750000 +vt 0.929999 0.750000 +vt 0.939999 0.750000 +vt 0.949999 0.750000 +vt 0.959999 0.750000 +vt 0.969999 0.750000 +vt 0.979999 0.750000 +vt 0.989999 0.750000 +vt 0.999999 0.750000 +vt 0.000000 0.760000 +vt 0.010000 0.760000 +vt 0.020000 0.760000 +vt 0.030000 0.760000 +vt 0.040000 0.760000 +vt 0.050000 0.760000 +vt 0.060000 0.760000 +vt 0.070000 0.760000 +vt 0.080000 0.760000 +vt 0.090000 0.760000 +vt 0.100000 0.760000 +vt 0.110000 0.760000 +vt 0.120000 0.760000 +vt 0.130000 0.760000 +vt 0.140000 0.760000 +vt 0.150000 0.760000 +vt 0.160000 0.760000 +vt 0.170000 0.760000 +vt 0.180000 0.760000 +vt 0.190000 0.760000 +vt 0.200000 0.760000 +vt 0.210000 0.760000 +vt 0.220000 0.760000 +vt 0.230000 0.760000 +vt 0.240000 0.760000 +vt 0.250000 0.760000 +vt 0.260000 0.760000 +vt 0.270000 0.760000 +vt 0.280000 0.760000 +vt 0.290000 0.760000 +vt 0.300000 0.760000 +vt 0.310000 0.760000 +vt 0.320000 0.760000 +vt 0.330000 0.760000 +vt 0.340000 0.760000 +vt 0.350000 0.760000 +vt 0.360000 0.760000 +vt 0.370000 0.760000 +vt 0.380000 0.760000 +vt 0.390000 0.760000 +vt 0.400000 0.760000 +vt 0.410000 0.760000 +vt 0.420000 0.760000 +vt 0.430000 0.760000 +vt 0.440000 0.760000 +vt 0.450000 0.760000 +vt 0.460000 0.760000 +vt 0.470000 0.760000 +vt 0.480000 0.760000 +vt 0.490000 0.760000 +vt 0.500000 0.760000 +vt 0.510000 0.760000 +vt 0.520000 0.760000 +vt 0.530000 0.760000 +vt 0.540000 0.760000 +vt 0.550000 0.760000 +vt 0.560000 0.760000 +vt 0.570000 0.760000 +vt 0.580000 0.760000 +vt 0.590000 0.760000 +vt 0.600000 0.760000 +vt 0.610000 0.760000 +vt 0.620000 0.760000 +vt 0.630000 0.760000 +vt 0.640000 0.760000 +vt 0.650000 0.760000 +vt 0.660000 0.760000 +vt 0.670000 0.760000 +vt 0.680000 0.760000 +vt 0.690000 0.760000 +vt 0.700000 0.760000 +vt 0.710000 0.760000 +vt 0.720000 0.760000 +vt 0.730000 0.760000 +vt 0.740000 0.760000 +vt 0.750000 0.760000 +vt 0.760000 0.760000 +vt 0.770000 0.760000 +vt 0.780000 0.760000 +vt 0.790000 0.760000 +vt 0.800000 0.760000 +vt 0.810000 0.760000 +vt 0.820000 0.760000 +vt 0.830000 0.760000 +vt 0.839999 0.760000 +vt 0.849999 0.760000 +vt 0.859999 0.760000 +vt 0.869999 0.760000 +vt 0.879999 0.760000 +vt 0.889999 0.760000 +vt 0.899999 0.760000 +vt 0.909999 0.760000 +vt 0.919999 0.760000 +vt 0.929999 0.760000 +vt 0.939999 0.760000 +vt 0.949999 0.760000 +vt 0.959999 0.760000 +vt 0.969999 0.760000 +vt 0.979999 0.760000 +vt 0.989999 0.760000 +vt 0.999999 0.760000 +vt 0.000000 0.770000 +vt 0.010000 0.770000 +vt 0.020000 0.770000 +vt 0.030000 0.770000 +vt 0.040000 0.770000 +vt 0.050000 0.770000 +vt 0.060000 0.770000 +vt 0.070000 0.770000 +vt 0.080000 0.770000 +vt 0.090000 0.770000 +vt 0.100000 0.770000 +vt 0.110000 0.770000 +vt 0.120000 0.770000 +vt 0.130000 0.770000 +vt 0.140000 0.770000 +vt 0.150000 0.770000 +vt 0.160000 0.770000 +vt 0.170000 0.770000 +vt 0.180000 0.770000 +vt 0.190000 0.770000 +vt 0.200000 0.770000 +vt 0.210000 0.770000 +vt 0.220000 0.770000 +vt 0.230000 0.770000 +vt 0.240000 0.770000 +vt 0.250000 0.770000 +vt 0.260000 0.770000 +vt 0.270000 0.770000 +vt 0.280000 0.770000 +vt 0.290000 0.770000 +vt 0.300000 0.770000 +vt 0.310000 0.770000 +vt 0.320000 0.770000 +vt 0.330000 0.770000 +vt 0.340000 0.770000 +vt 0.350000 0.770000 +vt 0.360000 0.770000 +vt 0.370000 0.770000 +vt 0.380000 0.770000 +vt 0.390000 0.770000 +vt 0.400000 0.770000 +vt 0.410000 0.770000 +vt 0.420000 0.770000 +vt 0.430000 0.770000 +vt 0.440000 0.770000 +vt 0.450000 0.770000 +vt 0.460000 0.770000 +vt 0.470000 0.770000 +vt 0.480000 0.770000 +vt 0.490000 0.770000 +vt 0.500000 0.770000 +vt 0.510000 0.770000 +vt 0.520000 0.770000 +vt 0.530000 0.770000 +vt 0.540000 0.770000 +vt 0.550000 0.770000 +vt 0.560000 0.770000 +vt 0.570000 0.770000 +vt 0.580000 0.770000 +vt 0.590000 0.770000 +vt 0.600000 0.770000 +vt 0.610000 0.770000 +vt 0.620000 0.770000 +vt 0.630000 0.770000 +vt 0.640000 0.770000 +vt 0.650000 0.770000 +vt 0.660000 0.770000 +vt 0.670000 0.770000 +vt 0.680000 0.770000 +vt 0.690000 0.770000 +vt 0.700000 0.770000 +vt 0.710000 0.770000 +vt 0.720000 0.770000 +vt 0.730000 0.770000 +vt 0.740000 0.770000 +vt 0.750000 0.770000 +vt 0.760000 0.770000 +vt 0.770000 0.770000 +vt 0.780000 0.770000 +vt 0.790000 0.770000 +vt 0.800000 0.770000 +vt 0.810000 0.770000 +vt 0.820000 0.770000 +vt 0.830000 0.770000 +vt 0.839999 0.770000 +vt 0.849999 0.770000 +vt 0.859999 0.770000 +vt 0.869999 0.770000 +vt 0.879999 0.770000 +vt 0.889999 0.770000 +vt 0.899999 0.770000 +vt 0.909999 0.770000 +vt 0.919999 0.770000 +vt 0.929999 0.770000 +vt 0.939999 0.770000 +vt 0.949999 0.770000 +vt 0.959999 0.770000 +vt 0.969999 0.770000 +vt 0.979999 0.770000 +vt 0.989999 0.770000 +vt 0.999999 0.770000 +vt 0.000000 0.780000 +vt 0.010000 0.780000 +vt 0.020000 0.780000 +vt 0.030000 0.780000 +vt 0.040000 0.780000 +vt 0.050000 0.780000 +vt 0.060000 0.780000 +vt 0.070000 0.780000 +vt 0.080000 0.780000 +vt 0.090000 0.780000 +vt 0.100000 0.780000 +vt 0.110000 0.780000 +vt 0.120000 0.780000 +vt 0.130000 0.780000 +vt 0.140000 0.780000 +vt 0.150000 0.780000 +vt 0.160000 0.780000 +vt 0.170000 0.780000 +vt 0.180000 0.780000 +vt 0.190000 0.780000 +vt 0.200000 0.780000 +vt 0.210000 0.780000 +vt 0.220000 0.780000 +vt 0.230000 0.780000 +vt 0.240000 0.780000 +vt 0.250000 0.780000 +vt 0.260000 0.780000 +vt 0.270000 0.780000 +vt 0.280000 0.780000 +vt 0.290000 0.780000 +vt 0.300000 0.780000 +vt 0.310000 0.780000 +vt 0.320000 0.780000 +vt 0.330000 0.780000 +vt 0.340000 0.780000 +vt 0.350000 0.780000 +vt 0.360000 0.780000 +vt 0.370000 0.780000 +vt 0.380000 0.780000 +vt 0.390000 0.780000 +vt 0.400000 0.780000 +vt 0.410000 0.780000 +vt 0.420000 0.780000 +vt 0.430000 0.780000 +vt 0.440000 0.780000 +vt 0.450000 0.780000 +vt 0.460000 0.780000 +vt 0.470000 0.780000 +vt 0.480000 0.780000 +vt 0.490000 0.780000 +vt 0.500000 0.780000 +vt 0.510000 0.780000 +vt 0.520000 0.780000 +vt 0.530000 0.780000 +vt 0.540000 0.780000 +vt 0.550000 0.780000 +vt 0.560000 0.780000 +vt 0.570000 0.780000 +vt 0.580000 0.780000 +vt 0.590000 0.780000 +vt 0.600000 0.780000 +vt 0.610000 0.780000 +vt 0.620000 0.780000 +vt 0.630000 0.780000 +vt 0.640000 0.780000 +vt 0.650000 0.780000 +vt 0.660000 0.780000 +vt 0.670000 0.780000 +vt 0.680000 0.780000 +vt 0.690000 0.780000 +vt 0.700000 0.780000 +vt 0.710000 0.780000 +vt 0.720000 0.780000 +vt 0.730000 0.780000 +vt 0.740000 0.780000 +vt 0.750000 0.780000 +vt 0.760000 0.780000 +vt 0.770000 0.780000 +vt 0.780000 0.780000 +vt 0.790000 0.780000 +vt 0.800000 0.780000 +vt 0.810000 0.780000 +vt 0.820000 0.780000 +vt 0.830000 0.780000 +vt 0.839999 0.780000 +vt 0.849999 0.780000 +vt 0.859999 0.780000 +vt 0.869999 0.780000 +vt 0.879999 0.780000 +vt 0.889999 0.780000 +vt 0.899999 0.780000 +vt 0.909999 0.780000 +vt 0.919999 0.780000 +vt 0.929999 0.780000 +vt 0.939999 0.780000 +vt 0.949999 0.780000 +vt 0.959999 0.780000 +vt 0.969999 0.780000 +vt 0.979999 0.780000 +vt 0.989999 0.780000 +vt 0.999999 0.780000 +vt 0.000000 0.790000 +vt 0.010000 0.790000 +vt 0.020000 0.790000 +vt 0.030000 0.790000 +vt 0.040000 0.790000 +vt 0.050000 0.790000 +vt 0.060000 0.790000 +vt 0.070000 0.790000 +vt 0.080000 0.790000 +vt 0.090000 0.790000 +vt 0.100000 0.790000 +vt 0.110000 0.790000 +vt 0.120000 0.790000 +vt 0.130000 0.790000 +vt 0.140000 0.790000 +vt 0.150000 0.790000 +vt 0.160000 0.790000 +vt 0.170000 0.790000 +vt 0.180000 0.790000 +vt 0.190000 0.790000 +vt 0.200000 0.790000 +vt 0.210000 0.790000 +vt 0.220000 0.790000 +vt 0.230000 0.790000 +vt 0.240000 0.790000 +vt 0.250000 0.790000 +vt 0.260000 0.790000 +vt 0.270000 0.790000 +vt 0.280000 0.790000 +vt 0.290000 0.790000 +vt 0.300000 0.790000 +vt 0.310000 0.790000 +vt 0.320000 0.790000 +vt 0.330000 0.790000 +vt 0.340000 0.790000 +vt 0.350000 0.790000 +vt 0.360000 0.790000 +vt 0.370000 0.790000 +vt 0.380000 0.790000 +vt 0.390000 0.790000 +vt 0.400000 0.790000 +vt 0.410000 0.790000 +vt 0.420000 0.790000 +vt 0.430000 0.790000 +vt 0.440000 0.790000 +vt 0.450000 0.790000 +vt 0.460000 0.790000 +vt 0.470000 0.790000 +vt 0.480000 0.790000 +vt 0.490000 0.790000 +vt 0.500000 0.790000 +vt 0.510000 0.790000 +vt 0.520000 0.790000 +vt 0.530000 0.790000 +vt 0.540000 0.790000 +vt 0.550000 0.790000 +vt 0.560000 0.790000 +vt 0.570000 0.790000 +vt 0.580000 0.790000 +vt 0.590000 0.790000 +vt 0.600000 0.790000 +vt 0.610000 0.790000 +vt 0.620000 0.790000 +vt 0.630000 0.790000 +vt 0.640000 0.790000 +vt 0.650000 0.790000 +vt 0.660000 0.790000 +vt 0.670000 0.790000 +vt 0.680000 0.790000 +vt 0.690000 0.790000 +vt 0.700000 0.790000 +vt 0.710000 0.790000 +vt 0.720000 0.790000 +vt 0.730000 0.790000 +vt 0.740000 0.790000 +vt 0.750000 0.790000 +vt 0.760000 0.790000 +vt 0.770000 0.790000 +vt 0.780000 0.790000 +vt 0.790000 0.790000 +vt 0.800000 0.790000 +vt 0.810000 0.790000 +vt 0.820000 0.790000 +vt 0.830000 0.790000 +vt 0.839999 0.790000 +vt 0.849999 0.790000 +vt 0.859999 0.790000 +vt 0.869999 0.790000 +vt 0.879999 0.790000 +vt 0.889999 0.790000 +vt 0.899999 0.790000 +vt 0.909999 0.790000 +vt 0.919999 0.790000 +vt 0.929999 0.790000 +vt 0.939999 0.790000 +vt 0.949999 0.790000 +vt 0.959999 0.790000 +vt 0.969999 0.790000 +vt 0.979999 0.790000 +vt 0.989999 0.790000 +vt 0.999999 0.790000 +vt 0.000000 0.800000 +vt 0.010000 0.800000 +vt 0.020000 0.800000 +vt 0.030000 0.800000 +vt 0.040000 0.800000 +vt 0.050000 0.800000 +vt 0.060000 0.800000 +vt 0.070000 0.800000 +vt 0.080000 0.800000 +vt 0.090000 0.800000 +vt 0.100000 0.800000 +vt 0.110000 0.800000 +vt 0.120000 0.800000 +vt 0.130000 0.800000 +vt 0.140000 0.800000 +vt 0.150000 0.800000 +vt 0.160000 0.800000 +vt 0.170000 0.800000 +vt 0.180000 0.800000 +vt 0.190000 0.800000 +vt 0.200000 0.800000 +vt 0.210000 0.800000 +vt 0.220000 0.800000 +vt 0.230000 0.800000 +vt 0.240000 0.800000 +vt 0.250000 0.800000 +vt 0.260000 0.800000 +vt 0.270000 0.800000 +vt 0.280000 0.800000 +vt 0.290000 0.800000 +vt 0.300000 0.800000 +vt 0.310000 0.800000 +vt 0.320000 0.800000 +vt 0.330000 0.800000 +vt 0.340000 0.800000 +vt 0.350000 0.800000 +vt 0.360000 0.800000 +vt 0.370000 0.800000 +vt 0.380000 0.800000 +vt 0.390000 0.800000 +vt 0.400000 0.800000 +vt 0.410000 0.800000 +vt 0.420000 0.800000 +vt 0.430000 0.800000 +vt 0.440000 0.800000 +vt 0.450000 0.800000 +vt 0.460000 0.800000 +vt 0.470000 0.800000 +vt 0.480000 0.800000 +vt 0.490000 0.800000 +vt 0.500000 0.800000 +vt 0.510000 0.800000 +vt 0.520000 0.800000 +vt 0.530000 0.800000 +vt 0.540000 0.800000 +vt 0.550000 0.800000 +vt 0.560000 0.800000 +vt 0.570000 0.800000 +vt 0.580000 0.800000 +vt 0.590000 0.800000 +vt 0.600000 0.800000 +vt 0.610000 0.800000 +vt 0.620000 0.800000 +vt 0.630000 0.800000 +vt 0.640000 0.800000 +vt 0.650000 0.800000 +vt 0.660000 0.800000 +vt 0.670000 0.800000 +vt 0.680000 0.800000 +vt 0.690000 0.800000 +vt 0.700000 0.800000 +vt 0.710000 0.800000 +vt 0.720000 0.800000 +vt 0.730000 0.800000 +vt 0.740000 0.800000 +vt 0.750000 0.800000 +vt 0.760000 0.800000 +vt 0.770000 0.800000 +vt 0.780000 0.800000 +vt 0.790000 0.800000 +vt 0.800000 0.800000 +vt 0.810000 0.800000 +vt 0.820000 0.800000 +vt 0.830000 0.800000 +vt 0.839999 0.800000 +vt 0.849999 0.800000 +vt 0.859999 0.800000 +vt 0.869999 0.800000 +vt 0.879999 0.800000 +vt 0.889999 0.800000 +vt 0.899999 0.800000 +vt 0.909999 0.800000 +vt 0.919999 0.800000 +vt 0.929999 0.800000 +vt 0.939999 0.800000 +vt 0.949999 0.800000 +vt 0.959999 0.800000 +vt 0.969999 0.800000 +vt 0.979999 0.800000 +vt 0.989999 0.800000 +vt 0.999999 0.800000 +vt 0.000000 0.810000 +vt 0.010000 0.810000 +vt 0.020000 0.810000 +vt 0.030000 0.810000 +vt 0.040000 0.810000 +vt 0.050000 0.810000 +vt 0.060000 0.810000 +vt 0.070000 0.810000 +vt 0.080000 0.810000 +vt 0.090000 0.810000 +vt 0.100000 0.810000 +vt 0.110000 0.810000 +vt 0.120000 0.810000 +vt 0.130000 0.810000 +vt 0.140000 0.810000 +vt 0.150000 0.810000 +vt 0.160000 0.810000 +vt 0.170000 0.810000 +vt 0.180000 0.810000 +vt 0.190000 0.810000 +vt 0.200000 0.810000 +vt 0.210000 0.810000 +vt 0.220000 0.810000 +vt 0.230000 0.810000 +vt 0.240000 0.810000 +vt 0.250000 0.810000 +vt 0.260000 0.810000 +vt 0.270000 0.810000 +vt 0.280000 0.810000 +vt 0.290000 0.810000 +vt 0.300000 0.810000 +vt 0.310000 0.810000 +vt 0.320000 0.810000 +vt 0.330000 0.810000 +vt 0.340000 0.810000 +vt 0.350000 0.810000 +vt 0.360000 0.810000 +vt 0.370000 0.810000 +vt 0.380000 0.810000 +vt 0.390000 0.810000 +vt 0.400000 0.810000 +vt 0.410000 0.810000 +vt 0.420000 0.810000 +vt 0.430000 0.810000 +vt 0.440000 0.810000 +vt 0.450000 0.810000 +vt 0.460000 0.810000 +vt 0.470000 0.810000 +vt 0.480000 0.810000 +vt 0.490000 0.810000 +vt 0.500000 0.810000 +vt 0.510000 0.810000 +vt 0.520000 0.810000 +vt 0.530000 0.810000 +vt 0.540000 0.810000 +vt 0.550000 0.810000 +vt 0.560000 0.810000 +vt 0.570000 0.810000 +vt 0.580000 0.810000 +vt 0.590000 0.810000 +vt 0.600000 0.810000 +vt 0.610000 0.810000 +vt 0.620000 0.810000 +vt 0.630000 0.810000 +vt 0.640000 0.810000 +vt 0.650000 0.810000 +vt 0.660000 0.810000 +vt 0.670000 0.810000 +vt 0.680000 0.810000 +vt 0.690000 0.810000 +vt 0.700000 0.810000 +vt 0.710000 0.810000 +vt 0.720000 0.810000 +vt 0.730000 0.810000 +vt 0.740000 0.810000 +vt 0.750000 0.810000 +vt 0.760000 0.810000 +vt 0.770000 0.810000 +vt 0.780000 0.810000 +vt 0.790000 0.810000 +vt 0.800000 0.810000 +vt 0.810000 0.810000 +vt 0.820000 0.810000 +vt 0.830000 0.810000 +vt 0.839999 0.810000 +vt 0.849999 0.810000 +vt 0.859999 0.810000 +vt 0.869999 0.810000 +vt 0.879999 0.810000 +vt 0.889999 0.810000 +vt 0.899999 0.810000 +vt 0.909999 0.810000 +vt 0.919999 0.810000 +vt 0.929999 0.810000 +vt 0.939999 0.810000 +vt 0.949999 0.810000 +vt 0.959999 0.810000 +vt 0.969999 0.810000 +vt 0.979999 0.810000 +vt 0.989999 0.810000 +vt 0.999999 0.810000 +vt 0.000000 0.820000 +vt 0.010000 0.820000 +vt 0.020000 0.820000 +vt 0.030000 0.820000 +vt 0.040000 0.820000 +vt 0.050000 0.820000 +vt 0.060000 0.820000 +vt 0.070000 0.820000 +vt 0.080000 0.820000 +vt 0.090000 0.820000 +vt 0.100000 0.820000 +vt 0.110000 0.820000 +vt 0.120000 0.820000 +vt 0.130000 0.820000 +vt 0.140000 0.820000 +vt 0.150000 0.820000 +vt 0.160000 0.820000 +vt 0.170000 0.820000 +vt 0.180000 0.820000 +vt 0.190000 0.820000 +vt 0.200000 0.820000 +vt 0.210000 0.820000 +vt 0.220000 0.820000 +vt 0.230000 0.820000 +vt 0.240000 0.820000 +vt 0.250000 0.820000 +vt 0.260000 0.820000 +vt 0.270000 0.820000 +vt 0.280000 0.820000 +vt 0.290000 0.820000 +vt 0.300000 0.820000 +vt 0.310000 0.820000 +vt 0.320000 0.820000 +vt 0.330000 0.820000 +vt 0.340000 0.820000 +vt 0.350000 0.820000 +vt 0.360000 0.820000 +vt 0.370000 0.820000 +vt 0.380000 0.820000 +vt 0.390000 0.820000 +vt 0.400000 0.820000 +vt 0.410000 0.820000 +vt 0.420000 0.820000 +vt 0.430000 0.820000 +vt 0.440000 0.820000 +vt 0.450000 0.820000 +vt 0.460000 0.820000 +vt 0.470000 0.820000 +vt 0.480000 0.820000 +vt 0.490000 0.820000 +vt 0.500000 0.820000 +vt 0.510000 0.820000 +vt 0.520000 0.820000 +vt 0.530000 0.820000 +vt 0.540000 0.820000 +vt 0.550000 0.820000 +vt 0.560000 0.820000 +vt 0.570000 0.820000 +vt 0.580000 0.820000 +vt 0.590000 0.820000 +vt 0.600000 0.820000 +vt 0.610000 0.820000 +vt 0.620000 0.820000 +vt 0.630000 0.820000 +vt 0.640000 0.820000 +vt 0.650000 0.820000 +vt 0.660000 0.820000 +vt 0.670000 0.820000 +vt 0.680000 0.820000 +vt 0.690000 0.820000 +vt 0.700000 0.820000 +vt 0.710000 0.820000 +vt 0.720000 0.820000 +vt 0.730000 0.820000 +vt 0.740000 0.820000 +vt 0.750000 0.820000 +vt 0.760000 0.820000 +vt 0.770000 0.820000 +vt 0.780000 0.820000 +vt 0.790000 0.820000 +vt 0.800000 0.820000 +vt 0.810000 0.820000 +vt 0.820000 0.820000 +vt 0.830000 0.820000 +vt 0.839999 0.820000 +vt 0.849999 0.820000 +vt 0.859999 0.820000 +vt 0.869999 0.820000 +vt 0.879999 0.820000 +vt 0.889999 0.820000 +vt 0.899999 0.820000 +vt 0.909999 0.820000 +vt 0.919999 0.820000 +vt 0.929999 0.820000 +vt 0.939999 0.820000 +vt 0.949999 0.820000 +vt 0.959999 0.820000 +vt 0.969999 0.820000 +vt 0.979999 0.820000 +vt 0.989999 0.820000 +vt 0.999999 0.820000 +vt 0.000000 0.830000 +vt 0.010000 0.830000 +vt 0.020000 0.830000 +vt 0.030000 0.830000 +vt 0.040000 0.830000 +vt 0.050000 0.830000 +vt 0.060000 0.830000 +vt 0.070000 0.830000 +vt 0.080000 0.830000 +vt 0.090000 0.830000 +vt 0.100000 0.830000 +vt 0.110000 0.830000 +vt 0.120000 0.830000 +vt 0.130000 0.830000 +vt 0.140000 0.830000 +vt 0.150000 0.830000 +vt 0.160000 0.830000 +vt 0.170000 0.830000 +vt 0.180000 0.830000 +vt 0.190000 0.830000 +vt 0.200000 0.830000 +vt 0.210000 0.830000 +vt 0.220000 0.830000 +vt 0.230000 0.830000 +vt 0.240000 0.830000 +vt 0.250000 0.830000 +vt 0.260000 0.830000 +vt 0.270000 0.830000 +vt 0.280000 0.830000 +vt 0.290000 0.830000 +vt 0.300000 0.830000 +vt 0.310000 0.830000 +vt 0.320000 0.830000 +vt 0.330000 0.830000 +vt 0.340000 0.830000 +vt 0.350000 0.830000 +vt 0.360000 0.830000 +vt 0.370000 0.830000 +vt 0.380000 0.830000 +vt 0.390000 0.830000 +vt 0.400000 0.830000 +vt 0.410000 0.830000 +vt 0.420000 0.830000 +vt 0.430000 0.830000 +vt 0.440000 0.830000 +vt 0.450000 0.830000 +vt 0.460000 0.830000 +vt 0.470000 0.830000 +vt 0.480000 0.830000 +vt 0.490000 0.830000 +vt 0.500000 0.830000 +vt 0.510000 0.830000 +vt 0.520000 0.830000 +vt 0.530000 0.830000 +vt 0.540000 0.830000 +vt 0.550000 0.830000 +vt 0.560000 0.830000 +vt 0.570000 0.830000 +vt 0.580000 0.830000 +vt 0.590000 0.830000 +vt 0.600000 0.830000 +vt 0.610000 0.830000 +vt 0.620000 0.830000 +vt 0.630000 0.830000 +vt 0.640000 0.830000 +vt 0.650000 0.830000 +vt 0.660000 0.830000 +vt 0.670000 0.830000 +vt 0.680000 0.830000 +vt 0.690000 0.830000 +vt 0.700000 0.830000 +vt 0.710000 0.830000 +vt 0.720000 0.830000 +vt 0.730000 0.830000 +vt 0.740000 0.830000 +vt 0.750000 0.830000 +vt 0.760000 0.830000 +vt 0.770000 0.830000 +vt 0.780000 0.830000 +vt 0.790000 0.830000 +vt 0.800000 0.830000 +vt 0.810000 0.830000 +vt 0.820000 0.830000 +vt 0.830000 0.830000 +vt 0.839999 0.830000 +vt 0.849999 0.830000 +vt 0.859999 0.830000 +vt 0.869999 0.830000 +vt 0.879999 0.830000 +vt 0.889999 0.830000 +vt 0.899999 0.830000 +vt 0.909999 0.830000 +vt 0.919999 0.830000 +vt 0.929999 0.830000 +vt 0.939999 0.830000 +vt 0.949999 0.830000 +vt 0.959999 0.830000 +vt 0.969999 0.830000 +vt 0.979999 0.830000 +vt 0.989999 0.830000 +vt 0.999999 0.830000 +vt 0.000000 0.839999 +vt 0.010000 0.839999 +vt 0.020000 0.839999 +vt 0.030000 0.839999 +vt 0.040000 0.839999 +vt 0.050000 0.839999 +vt 0.060000 0.839999 +vt 0.070000 0.839999 +vt 0.080000 0.839999 +vt 0.090000 0.839999 +vt 0.100000 0.839999 +vt 0.110000 0.839999 +vt 0.120000 0.839999 +vt 0.130000 0.839999 +vt 0.140000 0.839999 +vt 0.150000 0.839999 +vt 0.160000 0.839999 +vt 0.170000 0.839999 +vt 0.180000 0.839999 +vt 0.190000 0.839999 +vt 0.200000 0.839999 +vt 0.210000 0.839999 +vt 0.220000 0.839999 +vt 0.230000 0.839999 +vt 0.240000 0.839999 +vt 0.250000 0.839999 +vt 0.260000 0.839999 +vt 0.270000 0.839999 +vt 0.280000 0.839999 +vt 0.290000 0.839999 +vt 0.300000 0.839999 +vt 0.310000 0.839999 +vt 0.320000 0.839999 +vt 0.330000 0.839999 +vt 0.340000 0.839999 +vt 0.350000 0.839999 +vt 0.360000 0.839999 +vt 0.370000 0.839999 +vt 0.380000 0.839999 +vt 0.390000 0.839999 +vt 0.400000 0.839999 +vt 0.410000 0.839999 +vt 0.420000 0.839999 +vt 0.430000 0.839999 +vt 0.440000 0.839999 +vt 0.450000 0.839999 +vt 0.460000 0.839999 +vt 0.470000 0.839999 +vt 0.480000 0.839999 +vt 0.490000 0.839999 +vt 0.500000 0.839999 +vt 0.510000 0.839999 +vt 0.520000 0.839999 +vt 0.530000 0.839999 +vt 0.540000 0.839999 +vt 0.550000 0.839999 +vt 0.560000 0.839999 +vt 0.570000 0.839999 +vt 0.580000 0.839999 +vt 0.590000 0.839999 +vt 0.600000 0.839999 +vt 0.610000 0.839999 +vt 0.620000 0.839999 +vt 0.630000 0.839999 +vt 0.640000 0.839999 +vt 0.650000 0.839999 +vt 0.660000 0.839999 +vt 0.670000 0.839999 +vt 0.680000 0.839999 +vt 0.690000 0.839999 +vt 0.700000 0.839999 +vt 0.710000 0.839999 +vt 0.720000 0.839999 +vt 0.730000 0.839999 +vt 0.740000 0.839999 +vt 0.750000 0.839999 +vt 0.760000 0.839999 +vt 0.770000 0.839999 +vt 0.780000 0.839999 +vt 0.790000 0.839999 +vt 0.800000 0.839999 +vt 0.810000 0.839999 +vt 0.820000 0.839999 +vt 0.830000 0.839999 +vt 0.839999 0.839999 +vt 0.849999 0.839999 +vt 0.859999 0.839999 +vt 0.869999 0.839999 +vt 0.879999 0.839999 +vt 0.889999 0.839999 +vt 0.899999 0.839999 +vt 0.909999 0.839999 +vt 0.919999 0.839999 +vt 0.929999 0.839999 +vt 0.939999 0.839999 +vt 0.949999 0.839999 +vt 0.959999 0.839999 +vt 0.969999 0.839999 +vt 0.979999 0.839999 +vt 0.989999 0.839999 +vt 0.999999 0.839999 +vt 0.000000 0.849999 +vt 0.010000 0.849999 +vt 0.020000 0.849999 +vt 0.030000 0.849999 +vt 0.040000 0.849999 +vt 0.050000 0.849999 +vt 0.060000 0.849999 +vt 0.070000 0.849999 +vt 0.080000 0.849999 +vt 0.090000 0.849999 +vt 0.100000 0.849999 +vt 0.110000 0.849999 +vt 0.120000 0.849999 +vt 0.130000 0.849999 +vt 0.140000 0.849999 +vt 0.150000 0.849999 +vt 0.160000 0.849999 +vt 0.170000 0.849999 +vt 0.180000 0.849999 +vt 0.190000 0.849999 +vt 0.200000 0.849999 +vt 0.210000 0.849999 +vt 0.220000 0.849999 +vt 0.230000 0.849999 +vt 0.240000 0.849999 +vt 0.250000 0.849999 +vt 0.260000 0.849999 +vt 0.270000 0.849999 +vt 0.280000 0.849999 +vt 0.290000 0.849999 +vt 0.300000 0.849999 +vt 0.310000 0.849999 +vt 0.320000 0.849999 +vt 0.330000 0.849999 +vt 0.340000 0.849999 +vt 0.350000 0.849999 +vt 0.360000 0.849999 +vt 0.370000 0.849999 +vt 0.380000 0.849999 +vt 0.390000 0.849999 +vt 0.400000 0.849999 +vt 0.410000 0.849999 +vt 0.420000 0.849999 +vt 0.430000 0.849999 +vt 0.440000 0.849999 +vt 0.450000 0.849999 +vt 0.460000 0.849999 +vt 0.470000 0.849999 +vt 0.480000 0.849999 +vt 0.490000 0.849999 +vt 0.500000 0.849999 +vt 0.510000 0.849999 +vt 0.520000 0.849999 +vt 0.530000 0.849999 +vt 0.540000 0.849999 +vt 0.550000 0.849999 +vt 0.560000 0.849999 +vt 0.570000 0.849999 +vt 0.580000 0.849999 +vt 0.590000 0.849999 +vt 0.600000 0.849999 +vt 0.610000 0.849999 +vt 0.620000 0.849999 +vt 0.630000 0.849999 +vt 0.640000 0.849999 +vt 0.650000 0.849999 +vt 0.660000 0.849999 +vt 0.670000 0.849999 +vt 0.680000 0.849999 +vt 0.690000 0.849999 +vt 0.700000 0.849999 +vt 0.710000 0.849999 +vt 0.720000 0.849999 +vt 0.730000 0.849999 +vt 0.740000 0.849999 +vt 0.750000 0.849999 +vt 0.760000 0.849999 +vt 0.770000 0.849999 +vt 0.780000 0.849999 +vt 0.790000 0.849999 +vt 0.800000 0.849999 +vt 0.810000 0.849999 +vt 0.820000 0.849999 +vt 0.830000 0.849999 +vt 0.839999 0.849999 +vt 0.849999 0.849999 +vt 0.859999 0.849999 +vt 0.869999 0.849999 +vt 0.879999 0.849999 +vt 0.889999 0.849999 +vt 0.899999 0.849999 +vt 0.909999 0.849999 +vt 0.919999 0.849999 +vt 0.929999 0.849999 +vt 0.939999 0.849999 +vt 0.949999 0.849999 +vt 0.959999 0.849999 +vt 0.969999 0.849999 +vt 0.979999 0.849999 +vt 0.989999 0.849999 +vt 0.999999 0.849999 +vt 0.000000 0.859999 +vt 0.010000 0.859999 +vt 0.020000 0.859999 +vt 0.030000 0.859999 +vt 0.040000 0.859999 +vt 0.050000 0.859999 +vt 0.060000 0.859999 +vt 0.070000 0.859999 +vt 0.080000 0.859999 +vt 0.090000 0.859999 +vt 0.100000 0.859999 +vt 0.110000 0.859999 +vt 0.120000 0.859999 +vt 0.130000 0.859999 +vt 0.140000 0.859999 +vt 0.150000 0.859999 +vt 0.160000 0.859999 +vt 0.170000 0.859999 +vt 0.180000 0.859999 +vt 0.190000 0.859999 +vt 0.200000 0.859999 +vt 0.210000 0.859999 +vt 0.220000 0.859999 +vt 0.230000 0.859999 +vt 0.240000 0.859999 +vt 0.250000 0.859999 +vt 0.260000 0.859999 +vt 0.270000 0.859999 +vt 0.280000 0.859999 +vt 0.290000 0.859999 +vt 0.300000 0.859999 +vt 0.310000 0.859999 +vt 0.320000 0.859999 +vt 0.330000 0.859999 +vt 0.340000 0.859999 +vt 0.350000 0.859999 +vt 0.360000 0.859999 +vt 0.370000 0.859999 +vt 0.380000 0.859999 +vt 0.390000 0.859999 +vt 0.400000 0.859999 +vt 0.410000 0.859999 +vt 0.420000 0.859999 +vt 0.430000 0.859999 +vt 0.440000 0.859999 +vt 0.450000 0.859999 +vt 0.460000 0.859999 +vt 0.470000 0.859999 +vt 0.480000 0.859999 +vt 0.490000 0.859999 +vt 0.500000 0.859999 +vt 0.510000 0.859999 +vt 0.520000 0.859999 +vt 0.530000 0.859999 +vt 0.540000 0.859999 +vt 0.550000 0.859999 +vt 0.560000 0.859999 +vt 0.570000 0.859999 +vt 0.580000 0.859999 +vt 0.590000 0.859999 +vt 0.600000 0.859999 +vt 0.610000 0.859999 +vt 0.620000 0.859999 +vt 0.630000 0.859999 +vt 0.640000 0.859999 +vt 0.650000 0.859999 +vt 0.660000 0.859999 +vt 0.670000 0.859999 +vt 0.680000 0.859999 +vt 0.690000 0.859999 +vt 0.700000 0.859999 +vt 0.710000 0.859999 +vt 0.720000 0.859999 +vt 0.730000 0.859999 +vt 0.740000 0.859999 +vt 0.750000 0.859999 +vt 0.760000 0.859999 +vt 0.770000 0.859999 +vt 0.780000 0.859999 +vt 0.790000 0.859999 +vt 0.800000 0.859999 +vt 0.810000 0.859999 +vt 0.820000 0.859999 +vt 0.830000 0.859999 +vt 0.839999 0.859999 +vt 0.849999 0.859999 +vt 0.859999 0.859999 +vt 0.869999 0.859999 +vt 0.879999 0.859999 +vt 0.889999 0.859999 +vt 0.899999 0.859999 +vt 0.909999 0.859999 +vt 0.919999 0.859999 +vt 0.929999 0.859999 +vt 0.939999 0.859999 +vt 0.949999 0.859999 +vt 0.959999 0.859999 +vt 0.969999 0.859999 +vt 0.979999 0.859999 +vt 0.989999 0.859999 +vt 0.999999 0.859999 +vt 0.000000 0.869999 +vt 0.010000 0.869999 +vt 0.020000 0.869999 +vt 0.030000 0.869999 +vt 0.040000 0.869999 +vt 0.050000 0.869999 +vt 0.060000 0.869999 +vt 0.070000 0.869999 +vt 0.080000 0.869999 +vt 0.090000 0.869999 +vt 0.100000 0.869999 +vt 0.110000 0.869999 +vt 0.120000 0.869999 +vt 0.130000 0.869999 +vt 0.140000 0.869999 +vt 0.150000 0.869999 +vt 0.160000 0.869999 +vt 0.170000 0.869999 +vt 0.180000 0.869999 +vt 0.190000 0.869999 +vt 0.200000 0.869999 +vt 0.210000 0.869999 +vt 0.220000 0.869999 +vt 0.230000 0.869999 +vt 0.240000 0.869999 +vt 0.250000 0.869999 +vt 0.260000 0.869999 +vt 0.270000 0.869999 +vt 0.280000 0.869999 +vt 0.290000 0.869999 +vt 0.300000 0.869999 +vt 0.310000 0.869999 +vt 0.320000 0.869999 +vt 0.330000 0.869999 +vt 0.340000 0.869999 +vt 0.350000 0.869999 +vt 0.360000 0.869999 +vt 0.370000 0.869999 +vt 0.380000 0.869999 +vt 0.390000 0.869999 +vt 0.400000 0.869999 +vt 0.410000 0.869999 +vt 0.420000 0.869999 +vt 0.430000 0.869999 +vt 0.440000 0.869999 +vt 0.450000 0.869999 +vt 0.460000 0.869999 +vt 0.470000 0.869999 +vt 0.480000 0.869999 +vt 0.490000 0.869999 +vt 0.500000 0.869999 +vt 0.510000 0.869999 +vt 0.520000 0.869999 +vt 0.530000 0.869999 +vt 0.540000 0.869999 +vt 0.550000 0.869999 +vt 0.560000 0.869999 +vt 0.570000 0.869999 +vt 0.580000 0.869999 +vt 0.590000 0.869999 +vt 0.600000 0.869999 +vt 0.610000 0.869999 +vt 0.620000 0.869999 +vt 0.630000 0.869999 +vt 0.640000 0.869999 +vt 0.650000 0.869999 +vt 0.660000 0.869999 +vt 0.670000 0.869999 +vt 0.680000 0.869999 +vt 0.690000 0.869999 +vt 0.700000 0.869999 +vt 0.710000 0.869999 +vt 0.720000 0.869999 +vt 0.730000 0.869999 +vt 0.740000 0.869999 +vt 0.750000 0.869999 +vt 0.760000 0.869999 +vt 0.770000 0.869999 +vt 0.780000 0.869999 +vt 0.790000 0.869999 +vt 0.800000 0.869999 +vt 0.810000 0.869999 +vt 0.820000 0.869999 +vt 0.830000 0.869999 +vt 0.839999 0.869999 +vt 0.849999 0.869999 +vt 0.859999 0.869999 +vt 0.869999 0.869999 +vt 0.879999 0.869999 +vt 0.889999 0.869999 +vt 0.899999 0.869999 +vt 0.909999 0.869999 +vt 0.919999 0.869999 +vt 0.929999 0.869999 +vt 0.939999 0.869999 +vt 0.949999 0.869999 +vt 0.959999 0.869999 +vt 0.969999 0.869999 +vt 0.979999 0.869999 +vt 0.989999 0.869999 +vt 0.999999 0.869999 +vt 0.000000 0.879999 +vt 0.010000 0.879999 +vt 0.020000 0.879999 +vt 0.030000 0.879999 +vt 0.040000 0.879999 +vt 0.050000 0.879999 +vt 0.060000 0.879999 +vt 0.070000 0.879999 +vt 0.080000 0.879999 +vt 0.090000 0.879999 +vt 0.100000 0.879999 +vt 0.110000 0.879999 +vt 0.120000 0.879999 +vt 0.130000 0.879999 +vt 0.140000 0.879999 +vt 0.150000 0.879999 +vt 0.160000 0.879999 +vt 0.170000 0.879999 +vt 0.180000 0.879999 +vt 0.190000 0.879999 +vt 0.200000 0.879999 +vt 0.210000 0.879999 +vt 0.220000 0.879999 +vt 0.230000 0.879999 +vt 0.240000 0.879999 +vt 0.250000 0.879999 +vt 0.260000 0.879999 +vt 0.270000 0.879999 +vt 0.280000 0.879999 +vt 0.290000 0.879999 +vt 0.300000 0.879999 +vt 0.310000 0.879999 +vt 0.320000 0.879999 +vt 0.330000 0.879999 +vt 0.340000 0.879999 +vt 0.350000 0.879999 +vt 0.360000 0.879999 +vt 0.370000 0.879999 +vt 0.380000 0.879999 +vt 0.390000 0.879999 +vt 0.400000 0.879999 +vt 0.410000 0.879999 +vt 0.420000 0.879999 +vt 0.430000 0.879999 +vt 0.440000 0.879999 +vt 0.450000 0.879999 +vt 0.460000 0.879999 +vt 0.470000 0.879999 +vt 0.480000 0.879999 +vt 0.490000 0.879999 +vt 0.500000 0.879999 +vt 0.510000 0.879999 +vt 0.520000 0.879999 +vt 0.530000 0.879999 +vt 0.540000 0.879999 +vt 0.550000 0.879999 +vt 0.560000 0.879999 +vt 0.570000 0.879999 +vt 0.580000 0.879999 +vt 0.590000 0.879999 +vt 0.600000 0.879999 +vt 0.610000 0.879999 +vt 0.620000 0.879999 +vt 0.630000 0.879999 +vt 0.640000 0.879999 +vt 0.650000 0.879999 +vt 0.660000 0.879999 +vt 0.670000 0.879999 +vt 0.680000 0.879999 +vt 0.690000 0.879999 +vt 0.700000 0.879999 +vt 0.710000 0.879999 +vt 0.720000 0.879999 +vt 0.730000 0.879999 +vt 0.740000 0.879999 +vt 0.750000 0.879999 +vt 0.760000 0.879999 +vt 0.770000 0.879999 +vt 0.780000 0.879999 +vt 0.790000 0.879999 +vt 0.800000 0.879999 +vt 0.810000 0.879999 +vt 0.820000 0.879999 +vt 0.830000 0.879999 +vt 0.839999 0.879999 +vt 0.849999 0.879999 +vt 0.859999 0.879999 +vt 0.869999 0.879999 +vt 0.879999 0.879999 +vt 0.889999 0.879999 +vt 0.899999 0.879999 +vt 0.909999 0.879999 +vt 0.919999 0.879999 +vt 0.929999 0.879999 +vt 0.939999 0.879999 +vt 0.949999 0.879999 +vt 0.959999 0.879999 +vt 0.969999 0.879999 +vt 0.979999 0.879999 +vt 0.989999 0.879999 +vt 0.999999 0.879999 +vt 0.000000 0.889999 +vt 0.010000 0.889999 +vt 0.020000 0.889999 +vt 0.030000 0.889999 +vt 0.040000 0.889999 +vt 0.050000 0.889999 +vt 0.060000 0.889999 +vt 0.070000 0.889999 +vt 0.080000 0.889999 +vt 0.090000 0.889999 +vt 0.100000 0.889999 +vt 0.110000 0.889999 +vt 0.120000 0.889999 +vt 0.130000 0.889999 +vt 0.140000 0.889999 +vt 0.150000 0.889999 +vt 0.160000 0.889999 +vt 0.170000 0.889999 +vt 0.180000 0.889999 +vt 0.190000 0.889999 +vt 0.200000 0.889999 +vt 0.210000 0.889999 +vt 0.220000 0.889999 +vt 0.230000 0.889999 +vt 0.240000 0.889999 +vt 0.250000 0.889999 +vt 0.260000 0.889999 +vt 0.270000 0.889999 +vt 0.280000 0.889999 +vt 0.290000 0.889999 +vt 0.300000 0.889999 +vt 0.310000 0.889999 +vt 0.320000 0.889999 +vt 0.330000 0.889999 +vt 0.340000 0.889999 +vt 0.350000 0.889999 +vt 0.360000 0.889999 +vt 0.370000 0.889999 +vt 0.380000 0.889999 +vt 0.390000 0.889999 +vt 0.400000 0.889999 +vt 0.410000 0.889999 +vt 0.420000 0.889999 +vt 0.430000 0.889999 +vt 0.440000 0.889999 +vt 0.450000 0.889999 +vt 0.460000 0.889999 +vt 0.470000 0.889999 +vt 0.480000 0.889999 +vt 0.490000 0.889999 +vt 0.500000 0.889999 +vt 0.510000 0.889999 +vt 0.520000 0.889999 +vt 0.530000 0.889999 +vt 0.540000 0.889999 +vt 0.550000 0.889999 +vt 0.560000 0.889999 +vt 0.570000 0.889999 +vt 0.580000 0.889999 +vt 0.590000 0.889999 +vt 0.600000 0.889999 +vt 0.610000 0.889999 +vt 0.620000 0.889999 +vt 0.630000 0.889999 +vt 0.640000 0.889999 +vt 0.650000 0.889999 +vt 0.660000 0.889999 +vt 0.670000 0.889999 +vt 0.680000 0.889999 +vt 0.690000 0.889999 +vt 0.700000 0.889999 +vt 0.710000 0.889999 +vt 0.720000 0.889999 +vt 0.730000 0.889999 +vt 0.740000 0.889999 +vt 0.750000 0.889999 +vt 0.760000 0.889999 +vt 0.770000 0.889999 +vt 0.780000 0.889999 +vt 0.790000 0.889999 +vt 0.800000 0.889999 +vt 0.810000 0.889999 +vt 0.820000 0.889999 +vt 0.830000 0.889999 +vt 0.839999 0.889999 +vt 0.849999 0.889999 +vt 0.859999 0.889999 +vt 0.869999 0.889999 +vt 0.879999 0.889999 +vt 0.889999 0.889999 +vt 0.899999 0.889999 +vt 0.909999 0.889999 +vt 0.919999 0.889999 +vt 0.929999 0.889999 +vt 0.939999 0.889999 +vt 0.949999 0.889999 +vt 0.959999 0.889999 +vt 0.969999 0.889999 +vt 0.979999 0.889999 +vt 0.989999 0.889999 +vt 0.999999 0.889999 +vt 0.000000 0.899999 +vt 0.010000 0.899999 +vt 0.020000 0.899999 +vt 0.030000 0.899999 +vt 0.040000 0.899999 +vt 0.050000 0.899999 +vt 0.060000 0.899999 +vt 0.070000 0.899999 +vt 0.080000 0.899999 +vt 0.090000 0.899999 +vt 0.100000 0.899999 +vt 0.110000 0.899999 +vt 0.120000 0.899999 +vt 0.130000 0.899999 +vt 0.140000 0.899999 +vt 0.150000 0.899999 +vt 0.160000 0.899999 +vt 0.170000 0.899999 +vt 0.180000 0.899999 +vt 0.190000 0.899999 +vt 0.200000 0.899999 +vt 0.210000 0.899999 +vt 0.220000 0.899999 +vt 0.230000 0.899999 +vt 0.240000 0.899999 +vt 0.250000 0.899999 +vt 0.260000 0.899999 +vt 0.270000 0.899999 +vt 0.280000 0.899999 +vt 0.290000 0.899999 +vt 0.300000 0.899999 +vt 0.310000 0.899999 +vt 0.320000 0.899999 +vt 0.330000 0.899999 +vt 0.340000 0.899999 +vt 0.350000 0.899999 +vt 0.360000 0.899999 +vt 0.370000 0.899999 +vt 0.380000 0.899999 +vt 0.390000 0.899999 +vt 0.400000 0.899999 +vt 0.410000 0.899999 +vt 0.420000 0.899999 +vt 0.430000 0.899999 +vt 0.440000 0.899999 +vt 0.450000 0.899999 +vt 0.460000 0.899999 +vt 0.470000 0.899999 +vt 0.480000 0.899999 +vt 0.490000 0.899999 +vt 0.500000 0.899999 +vt 0.510000 0.899999 +vt 0.520000 0.899999 +vt 0.530000 0.899999 +vt 0.540000 0.899999 +vt 0.550000 0.899999 +vt 0.560000 0.899999 +vt 0.570000 0.899999 +vt 0.580000 0.899999 +vt 0.590000 0.899999 +vt 0.600000 0.899999 +vt 0.610000 0.899999 +vt 0.620000 0.899999 +vt 0.630000 0.899999 +vt 0.640000 0.899999 +vt 0.650000 0.899999 +vt 0.660000 0.899999 +vt 0.670000 0.899999 +vt 0.680000 0.899999 +vt 0.690000 0.899999 +vt 0.700000 0.899999 +vt 0.710000 0.899999 +vt 0.720000 0.899999 +vt 0.730000 0.899999 +vt 0.740000 0.899999 +vt 0.750000 0.899999 +vt 0.760000 0.899999 +vt 0.770000 0.899999 +vt 0.780000 0.899999 +vt 0.790000 0.899999 +vt 0.800000 0.899999 +vt 0.810000 0.899999 +vt 0.820000 0.899999 +vt 0.830000 0.899999 +vt 0.839999 0.899999 +vt 0.849999 0.899999 +vt 0.859999 0.899999 +vt 0.869999 0.899999 +vt 0.879999 0.899999 +vt 0.889999 0.899999 +vt 0.899999 0.899999 +vt 0.909999 0.899999 +vt 0.919999 0.899999 +vt 0.929999 0.899999 +vt 0.939999 0.899999 +vt 0.949999 0.899999 +vt 0.959999 0.899999 +vt 0.969999 0.899999 +vt 0.979999 0.899999 +vt 0.989999 0.899999 +vt 0.999999 0.899999 +vt 0.000000 0.909999 +vt 0.010000 0.909999 +vt 0.020000 0.909999 +vt 0.030000 0.909999 +vt 0.040000 0.909999 +vt 0.050000 0.909999 +vt 0.060000 0.909999 +vt 0.070000 0.909999 +vt 0.080000 0.909999 +vt 0.090000 0.909999 +vt 0.100000 0.909999 +vt 0.110000 0.909999 +vt 0.120000 0.909999 +vt 0.130000 0.909999 +vt 0.140000 0.909999 +vt 0.150000 0.909999 +vt 0.160000 0.909999 +vt 0.170000 0.909999 +vt 0.180000 0.909999 +vt 0.190000 0.909999 +vt 0.200000 0.909999 +vt 0.210000 0.909999 +vt 0.220000 0.909999 +vt 0.230000 0.909999 +vt 0.240000 0.909999 +vt 0.250000 0.909999 +vt 0.260000 0.909999 +vt 0.270000 0.909999 +vt 0.280000 0.909999 +vt 0.290000 0.909999 +vt 0.300000 0.909999 +vt 0.310000 0.909999 +vt 0.320000 0.909999 +vt 0.330000 0.909999 +vt 0.340000 0.909999 +vt 0.350000 0.909999 +vt 0.360000 0.909999 +vt 0.370000 0.909999 +vt 0.380000 0.909999 +vt 0.390000 0.909999 +vt 0.400000 0.909999 +vt 0.410000 0.909999 +vt 0.420000 0.909999 +vt 0.430000 0.909999 +vt 0.440000 0.909999 +vt 0.450000 0.909999 +vt 0.460000 0.909999 +vt 0.470000 0.909999 +vt 0.480000 0.909999 +vt 0.490000 0.909999 +vt 0.500000 0.909999 +vt 0.510000 0.909999 +vt 0.520000 0.909999 +vt 0.530000 0.909999 +vt 0.540000 0.909999 +vt 0.550000 0.909999 +vt 0.560000 0.909999 +vt 0.570000 0.909999 +vt 0.580000 0.909999 +vt 0.590000 0.909999 +vt 0.600000 0.909999 +vt 0.610000 0.909999 +vt 0.620000 0.909999 +vt 0.630000 0.909999 +vt 0.640000 0.909999 +vt 0.650000 0.909999 +vt 0.660000 0.909999 +vt 0.670000 0.909999 +vt 0.680000 0.909999 +vt 0.690000 0.909999 +vt 0.700000 0.909999 +vt 0.710000 0.909999 +vt 0.720000 0.909999 +vt 0.730000 0.909999 +vt 0.740000 0.909999 +vt 0.750000 0.909999 +vt 0.760000 0.909999 +vt 0.770000 0.909999 +vt 0.780000 0.909999 +vt 0.790000 0.909999 +vt 0.800000 0.909999 +vt 0.810000 0.909999 +vt 0.820000 0.909999 +vt 0.830000 0.909999 +vt 0.839999 0.909999 +vt 0.849999 0.909999 +vt 0.859999 0.909999 +vt 0.869999 0.909999 +vt 0.879999 0.909999 +vt 0.889999 0.909999 +vt 0.899999 0.909999 +vt 0.909999 0.909999 +vt 0.919999 0.909999 +vt 0.929999 0.909999 +vt 0.939999 0.909999 +vt 0.949999 0.909999 +vt 0.959999 0.909999 +vt 0.969999 0.909999 +vt 0.979999 0.909999 +vt 0.989999 0.909999 +vt 0.999999 0.909999 +vt 0.000000 0.919999 +vt 0.010000 0.919999 +vt 0.020000 0.919999 +vt 0.030000 0.919999 +vt 0.040000 0.919999 +vt 0.050000 0.919999 +vt 0.060000 0.919999 +vt 0.070000 0.919999 +vt 0.080000 0.919999 +vt 0.090000 0.919999 +vt 0.100000 0.919999 +vt 0.110000 0.919999 +vt 0.120000 0.919999 +vt 0.130000 0.919999 +vt 0.140000 0.919999 +vt 0.150000 0.919999 +vt 0.160000 0.919999 +vt 0.170000 0.919999 +vt 0.180000 0.919999 +vt 0.190000 0.919999 +vt 0.200000 0.919999 +vt 0.210000 0.919999 +vt 0.220000 0.919999 +vt 0.230000 0.919999 +vt 0.240000 0.919999 +vt 0.250000 0.919999 +vt 0.260000 0.919999 +vt 0.270000 0.919999 +vt 0.280000 0.919999 +vt 0.290000 0.919999 +vt 0.300000 0.919999 +vt 0.310000 0.919999 +vt 0.320000 0.919999 +vt 0.330000 0.919999 +vt 0.340000 0.919999 +vt 0.350000 0.919999 +vt 0.360000 0.919999 +vt 0.370000 0.919999 +vt 0.380000 0.919999 +vt 0.390000 0.919999 +vt 0.400000 0.919999 +vt 0.410000 0.919999 +vt 0.420000 0.919999 +vt 0.430000 0.919999 +vt 0.440000 0.919999 +vt 0.450000 0.919999 +vt 0.460000 0.919999 +vt 0.470000 0.919999 +vt 0.480000 0.919999 +vt 0.490000 0.919999 +vt 0.500000 0.919999 +vt 0.510000 0.919999 +vt 0.520000 0.919999 +vt 0.530000 0.919999 +vt 0.540000 0.919999 +vt 0.550000 0.919999 +vt 0.560000 0.919999 +vt 0.570000 0.919999 +vt 0.580000 0.919999 +vt 0.590000 0.919999 +vt 0.600000 0.919999 +vt 0.610000 0.919999 +vt 0.620000 0.919999 +vt 0.630000 0.919999 +vt 0.640000 0.919999 +vt 0.650000 0.919999 +vt 0.660000 0.919999 +vt 0.670000 0.919999 +vt 0.680000 0.919999 +vt 0.690000 0.919999 +vt 0.700000 0.919999 +vt 0.710000 0.919999 +vt 0.720000 0.919999 +vt 0.730000 0.919999 +vt 0.740000 0.919999 +vt 0.750000 0.919999 +vt 0.760000 0.919999 +vt 0.770000 0.919999 +vt 0.780000 0.919999 +vt 0.790000 0.919999 +vt 0.800000 0.919999 +vt 0.810000 0.919999 +vt 0.820000 0.919999 +vt 0.830000 0.919999 +vt 0.839999 0.919999 +vt 0.849999 0.919999 +vt 0.859999 0.919999 +vt 0.869999 0.919999 +vt 0.879999 0.919999 +vt 0.889999 0.919999 +vt 0.899999 0.919999 +vt 0.909999 0.919999 +vt 0.919999 0.919999 +vt 0.929999 0.919999 +vt 0.939999 0.919999 +vt 0.949999 0.919999 +vt 0.959999 0.919999 +vt 0.969999 0.919999 +vt 0.979999 0.919999 +vt 0.989999 0.919999 +vt 0.999999 0.919999 +vt 0.000000 0.929999 +vt 0.010000 0.929999 +vt 0.020000 0.929999 +vt 0.030000 0.929999 +vt 0.040000 0.929999 +vt 0.050000 0.929999 +vt 0.060000 0.929999 +vt 0.070000 0.929999 +vt 0.080000 0.929999 +vt 0.090000 0.929999 +vt 0.100000 0.929999 +vt 0.110000 0.929999 +vt 0.120000 0.929999 +vt 0.130000 0.929999 +vt 0.140000 0.929999 +vt 0.150000 0.929999 +vt 0.160000 0.929999 +vt 0.170000 0.929999 +vt 0.180000 0.929999 +vt 0.190000 0.929999 +vt 0.200000 0.929999 +vt 0.210000 0.929999 +vt 0.220000 0.929999 +vt 0.230000 0.929999 +vt 0.240000 0.929999 +vt 0.250000 0.929999 +vt 0.260000 0.929999 +vt 0.270000 0.929999 +vt 0.280000 0.929999 +vt 0.290000 0.929999 +vt 0.300000 0.929999 +vt 0.310000 0.929999 +vt 0.320000 0.929999 +vt 0.330000 0.929999 +vt 0.340000 0.929999 +vt 0.350000 0.929999 +vt 0.360000 0.929999 +vt 0.370000 0.929999 +vt 0.380000 0.929999 +vt 0.390000 0.929999 +vt 0.400000 0.929999 +vt 0.410000 0.929999 +vt 0.420000 0.929999 +vt 0.430000 0.929999 +vt 0.440000 0.929999 +vt 0.450000 0.929999 +vt 0.460000 0.929999 +vt 0.470000 0.929999 +vt 0.480000 0.929999 +vt 0.490000 0.929999 +vt 0.500000 0.929999 +vt 0.510000 0.929999 +vt 0.520000 0.929999 +vt 0.530000 0.929999 +vt 0.540000 0.929999 +vt 0.550000 0.929999 +vt 0.560000 0.929999 +vt 0.570000 0.929999 +vt 0.580000 0.929999 +vt 0.590000 0.929999 +vt 0.600000 0.929999 +vt 0.610000 0.929999 +vt 0.620000 0.929999 +vt 0.630000 0.929999 +vt 0.640000 0.929999 +vt 0.650000 0.929999 +vt 0.660000 0.929999 +vt 0.670000 0.929999 +vt 0.680000 0.929999 +vt 0.690000 0.929999 +vt 0.700000 0.929999 +vt 0.710000 0.929999 +vt 0.720000 0.929999 +vt 0.730000 0.929999 +vt 0.740000 0.929999 +vt 0.750000 0.929999 +vt 0.760000 0.929999 +vt 0.770000 0.929999 +vt 0.780000 0.929999 +vt 0.790000 0.929999 +vt 0.800000 0.929999 +vt 0.810000 0.929999 +vt 0.820000 0.929999 +vt 0.830000 0.929999 +vt 0.839999 0.929999 +vt 0.849999 0.929999 +vt 0.859999 0.929999 +vt 0.869999 0.929999 +vt 0.879999 0.929999 +vt 0.889999 0.929999 +vt 0.899999 0.929999 +vt 0.909999 0.929999 +vt 0.919999 0.929999 +vt 0.929999 0.929999 +vt 0.939999 0.929999 +vt 0.949999 0.929999 +vt 0.959999 0.929999 +vt 0.969999 0.929999 +vt 0.979999 0.929999 +vt 0.989999 0.929999 +vt 0.999999 0.929999 +vt 0.000000 0.939999 +vt 0.010000 0.939999 +vt 0.020000 0.939999 +vt 0.030000 0.939999 +vt 0.040000 0.939999 +vt 0.050000 0.939999 +vt 0.060000 0.939999 +vt 0.070000 0.939999 +vt 0.080000 0.939999 +vt 0.090000 0.939999 +vt 0.100000 0.939999 +vt 0.110000 0.939999 +vt 0.120000 0.939999 +vt 0.130000 0.939999 +vt 0.140000 0.939999 +vt 0.150000 0.939999 +vt 0.160000 0.939999 +vt 0.170000 0.939999 +vt 0.180000 0.939999 +vt 0.190000 0.939999 +vt 0.200000 0.939999 +vt 0.210000 0.939999 +vt 0.220000 0.939999 +vt 0.230000 0.939999 +vt 0.240000 0.939999 +vt 0.250000 0.939999 +vt 0.260000 0.939999 +vt 0.270000 0.939999 +vt 0.280000 0.939999 +vt 0.290000 0.939999 +vt 0.300000 0.939999 +vt 0.310000 0.939999 +vt 0.320000 0.939999 +vt 0.330000 0.939999 +vt 0.340000 0.939999 +vt 0.350000 0.939999 +vt 0.360000 0.939999 +vt 0.370000 0.939999 +vt 0.380000 0.939999 +vt 0.390000 0.939999 +vt 0.400000 0.939999 +vt 0.410000 0.939999 +vt 0.420000 0.939999 +vt 0.430000 0.939999 +vt 0.440000 0.939999 +vt 0.450000 0.939999 +vt 0.460000 0.939999 +vt 0.470000 0.939999 +vt 0.480000 0.939999 +vt 0.490000 0.939999 +vt 0.500000 0.939999 +vt 0.510000 0.939999 +vt 0.520000 0.939999 +vt 0.530000 0.939999 +vt 0.540000 0.939999 +vt 0.550000 0.939999 +vt 0.560000 0.939999 +vt 0.570000 0.939999 +vt 0.580000 0.939999 +vt 0.590000 0.939999 +vt 0.600000 0.939999 +vt 0.610000 0.939999 +vt 0.620000 0.939999 +vt 0.630000 0.939999 +vt 0.640000 0.939999 +vt 0.650000 0.939999 +vt 0.660000 0.939999 +vt 0.670000 0.939999 +vt 0.680000 0.939999 +vt 0.690000 0.939999 +vt 0.700000 0.939999 +vt 0.710000 0.939999 +vt 0.720000 0.939999 +vt 0.730000 0.939999 +vt 0.740000 0.939999 +vt 0.750000 0.939999 +vt 0.760000 0.939999 +vt 0.770000 0.939999 +vt 0.780000 0.939999 +vt 0.790000 0.939999 +vt 0.800000 0.939999 +vt 0.810000 0.939999 +vt 0.820000 0.939999 +vt 0.830000 0.939999 +vt 0.839999 0.939999 +vt 0.849999 0.939999 +vt 0.859999 0.939999 +vt 0.869999 0.939999 +vt 0.879999 0.939999 +vt 0.889999 0.939999 +vt 0.899999 0.939999 +vt 0.909999 0.939999 +vt 0.919999 0.939999 +vt 0.929999 0.939999 +vt 0.939999 0.939999 +vt 0.949999 0.939999 +vt 0.959999 0.939999 +vt 0.969999 0.939999 +vt 0.979999 0.939999 +vt 0.989999 0.939999 +vt 0.999999 0.939999 +vt 0.000000 0.949999 +vt 0.010000 0.949999 +vt 0.020000 0.949999 +vt 0.030000 0.949999 +vt 0.040000 0.949999 +vt 0.050000 0.949999 +vt 0.060000 0.949999 +vt 0.070000 0.949999 +vt 0.080000 0.949999 +vt 0.090000 0.949999 +vt 0.100000 0.949999 +vt 0.110000 0.949999 +vt 0.120000 0.949999 +vt 0.130000 0.949999 +vt 0.140000 0.949999 +vt 0.150000 0.949999 +vt 0.160000 0.949999 +vt 0.170000 0.949999 +vt 0.180000 0.949999 +vt 0.190000 0.949999 +vt 0.200000 0.949999 +vt 0.210000 0.949999 +vt 0.220000 0.949999 +vt 0.230000 0.949999 +vt 0.240000 0.949999 +vt 0.250000 0.949999 +vt 0.260000 0.949999 +vt 0.270000 0.949999 +vt 0.280000 0.949999 +vt 0.290000 0.949999 +vt 0.300000 0.949999 +vt 0.310000 0.949999 +vt 0.320000 0.949999 +vt 0.330000 0.949999 +vt 0.340000 0.949999 +vt 0.350000 0.949999 +vt 0.360000 0.949999 +vt 0.370000 0.949999 +vt 0.380000 0.949999 +vt 0.390000 0.949999 +vt 0.400000 0.949999 +vt 0.410000 0.949999 +vt 0.420000 0.949999 +vt 0.430000 0.949999 +vt 0.440000 0.949999 +vt 0.450000 0.949999 +vt 0.460000 0.949999 +vt 0.470000 0.949999 +vt 0.480000 0.949999 +vt 0.490000 0.949999 +vt 0.500000 0.949999 +vt 0.510000 0.949999 +vt 0.520000 0.949999 +vt 0.530000 0.949999 +vt 0.540000 0.949999 +vt 0.550000 0.949999 +vt 0.560000 0.949999 +vt 0.570000 0.949999 +vt 0.580000 0.949999 +vt 0.590000 0.949999 +vt 0.600000 0.949999 +vt 0.610000 0.949999 +vt 0.620000 0.949999 +vt 0.630000 0.949999 +vt 0.640000 0.949999 +vt 0.650000 0.949999 +vt 0.660000 0.949999 +vt 0.670000 0.949999 +vt 0.680000 0.949999 +vt 0.690000 0.949999 +vt 0.700000 0.949999 +vt 0.710000 0.949999 +vt 0.720000 0.949999 +vt 0.730000 0.949999 +vt 0.740000 0.949999 +vt 0.750000 0.949999 +vt 0.760000 0.949999 +vt 0.770000 0.949999 +vt 0.780000 0.949999 +vt 0.790000 0.949999 +vt 0.800000 0.949999 +vt 0.810000 0.949999 +vt 0.820000 0.949999 +vt 0.830000 0.949999 +vt 0.839999 0.949999 +vt 0.849999 0.949999 +vt 0.859999 0.949999 +vt 0.869999 0.949999 +vt 0.879999 0.949999 +vt 0.889999 0.949999 +vt 0.899999 0.949999 +vt 0.909999 0.949999 +vt 0.919999 0.949999 +vt 0.929999 0.949999 +vt 0.939999 0.949999 +vt 0.949999 0.949999 +vt 0.959999 0.949999 +vt 0.969999 0.949999 +vt 0.979999 0.949999 +vt 0.989999 0.949999 +vt 0.999999 0.949999 +vt 0.000000 0.959999 +vt 0.010000 0.959999 +vt 0.020000 0.959999 +vt 0.030000 0.959999 +vt 0.040000 0.959999 +vt 0.050000 0.959999 +vt 0.060000 0.959999 +vt 0.070000 0.959999 +vt 0.080000 0.959999 +vt 0.090000 0.959999 +vt 0.100000 0.959999 +vt 0.110000 0.959999 +vt 0.120000 0.959999 +vt 0.130000 0.959999 +vt 0.140000 0.959999 +vt 0.150000 0.959999 +vt 0.160000 0.959999 +vt 0.170000 0.959999 +vt 0.180000 0.959999 +vt 0.190000 0.959999 +vt 0.200000 0.959999 +vt 0.210000 0.959999 +vt 0.220000 0.959999 +vt 0.230000 0.959999 +vt 0.240000 0.959999 +vt 0.250000 0.959999 +vt 0.260000 0.959999 +vt 0.270000 0.959999 +vt 0.280000 0.959999 +vt 0.290000 0.959999 +vt 0.300000 0.959999 +vt 0.310000 0.959999 +vt 0.320000 0.959999 +vt 0.330000 0.959999 +vt 0.340000 0.959999 +vt 0.350000 0.959999 +vt 0.360000 0.959999 +vt 0.370000 0.959999 +vt 0.380000 0.959999 +vt 0.390000 0.959999 +vt 0.400000 0.959999 +vt 0.410000 0.959999 +vt 0.420000 0.959999 +vt 0.430000 0.959999 +vt 0.440000 0.959999 +vt 0.450000 0.959999 +vt 0.460000 0.959999 +vt 0.470000 0.959999 +vt 0.480000 0.959999 +vt 0.490000 0.959999 +vt 0.500000 0.959999 +vt 0.510000 0.959999 +vt 0.520000 0.959999 +vt 0.530000 0.959999 +vt 0.540000 0.959999 +vt 0.550000 0.959999 +vt 0.560000 0.959999 +vt 0.570000 0.959999 +vt 0.580000 0.959999 +vt 0.590000 0.959999 +vt 0.600000 0.959999 +vt 0.610000 0.959999 +vt 0.620000 0.959999 +vt 0.630000 0.959999 +vt 0.640000 0.959999 +vt 0.650000 0.959999 +vt 0.660000 0.959999 +vt 0.670000 0.959999 +vt 0.680000 0.959999 +vt 0.690000 0.959999 +vt 0.700000 0.959999 +vt 0.710000 0.959999 +vt 0.720000 0.959999 +vt 0.730000 0.959999 +vt 0.740000 0.959999 +vt 0.750000 0.959999 +vt 0.760000 0.959999 +vt 0.770000 0.959999 +vt 0.780000 0.959999 +vt 0.790000 0.959999 +vt 0.800000 0.959999 +vt 0.810000 0.959999 +vt 0.820000 0.959999 +vt 0.830000 0.959999 +vt 0.839999 0.959999 +vt 0.849999 0.959999 +vt 0.859999 0.959999 +vt 0.869999 0.959999 +vt 0.879999 0.959999 +vt 0.889999 0.959999 +vt 0.899999 0.959999 +vt 0.909999 0.959999 +vt 0.919999 0.959999 +vt 0.929999 0.959999 +vt 0.939999 0.959999 +vt 0.949999 0.959999 +vt 0.959999 0.959999 +vt 0.969999 0.959999 +vt 0.979999 0.959999 +vt 0.989999 0.959999 +vt 0.999999 0.959999 +vt 0.000000 0.969999 +vt 0.010000 0.969999 +vt 0.020000 0.969999 +vt 0.030000 0.969999 +vt 0.040000 0.969999 +vt 0.050000 0.969999 +vt 0.060000 0.969999 +vt 0.070000 0.969999 +vt 0.080000 0.969999 +vt 0.090000 0.969999 +vt 0.100000 0.969999 +vt 0.110000 0.969999 +vt 0.120000 0.969999 +vt 0.130000 0.969999 +vt 0.140000 0.969999 +vt 0.150000 0.969999 +vt 0.160000 0.969999 +vt 0.170000 0.969999 +vt 0.180000 0.969999 +vt 0.190000 0.969999 +vt 0.200000 0.969999 +vt 0.210000 0.969999 +vt 0.220000 0.969999 +vt 0.230000 0.969999 +vt 0.240000 0.969999 +vt 0.250000 0.969999 +vt 0.260000 0.969999 +vt 0.270000 0.969999 +vt 0.280000 0.969999 +vt 0.290000 0.969999 +vt 0.300000 0.969999 +vt 0.310000 0.969999 +vt 0.320000 0.969999 +vt 0.330000 0.969999 +vt 0.340000 0.969999 +vt 0.350000 0.969999 +vt 0.360000 0.969999 +vt 0.370000 0.969999 +vt 0.380000 0.969999 +vt 0.390000 0.969999 +vt 0.400000 0.969999 +vt 0.410000 0.969999 +vt 0.420000 0.969999 +vt 0.430000 0.969999 +vt 0.440000 0.969999 +vt 0.450000 0.969999 +vt 0.460000 0.969999 +vt 0.470000 0.969999 +vt 0.480000 0.969999 +vt 0.490000 0.969999 +vt 0.500000 0.969999 +vt 0.510000 0.969999 +vt 0.520000 0.969999 +vt 0.530000 0.969999 +vt 0.540000 0.969999 +vt 0.550000 0.969999 +vt 0.560000 0.969999 +vt 0.570000 0.969999 +vt 0.580000 0.969999 +vt 0.590000 0.969999 +vt 0.600000 0.969999 +vt 0.610000 0.969999 +vt 0.620000 0.969999 +vt 0.630000 0.969999 +vt 0.640000 0.969999 +vt 0.650000 0.969999 +vt 0.660000 0.969999 +vt 0.670000 0.969999 +vt 0.680000 0.969999 +vt 0.690000 0.969999 +vt 0.700000 0.969999 +vt 0.710000 0.969999 +vt 0.720000 0.969999 +vt 0.730000 0.969999 +vt 0.740000 0.969999 +vt 0.750000 0.969999 +vt 0.760000 0.969999 +vt 0.770000 0.969999 +vt 0.780000 0.969999 +vt 0.790000 0.969999 +vt 0.800000 0.969999 +vt 0.810000 0.969999 +vt 0.820000 0.969999 +vt 0.830000 0.969999 +vt 0.839999 0.969999 +vt 0.849999 0.969999 +vt 0.859999 0.969999 +vt 0.869999 0.969999 +vt 0.879999 0.969999 +vt 0.889999 0.969999 +vt 0.899999 0.969999 +vt 0.909999 0.969999 +vt 0.919999 0.969999 +vt 0.929999 0.969999 +vt 0.939999 0.969999 +vt 0.949999 0.969999 +vt 0.959999 0.969999 +vt 0.969999 0.969999 +vt 0.979999 0.969999 +vt 0.989999 0.969999 +vt 0.999999 0.969999 +vt 0.000000 0.979999 +vt 0.010000 0.979999 +vt 0.020000 0.979999 +vt 0.030000 0.979999 +vt 0.040000 0.979999 +vt 0.050000 0.979999 +vt 0.060000 0.979999 +vt 0.070000 0.979999 +vt 0.080000 0.979999 +vt 0.090000 0.979999 +vt 0.100000 0.979999 +vt 0.110000 0.979999 +vt 0.120000 0.979999 +vt 0.130000 0.979999 +vt 0.140000 0.979999 +vt 0.150000 0.979999 +vt 0.160000 0.979999 +vt 0.170000 0.979999 +vt 0.180000 0.979999 +vt 0.190000 0.979999 +vt 0.200000 0.979999 +vt 0.210000 0.979999 +vt 0.220000 0.979999 +vt 0.230000 0.979999 +vt 0.240000 0.979999 +vt 0.250000 0.979999 +vt 0.260000 0.979999 +vt 0.270000 0.979999 +vt 0.280000 0.979999 +vt 0.290000 0.979999 +vt 0.300000 0.979999 +vt 0.310000 0.979999 +vt 0.320000 0.979999 +vt 0.330000 0.979999 +vt 0.340000 0.979999 +vt 0.350000 0.979999 +vt 0.360000 0.979999 +vt 0.370000 0.979999 +vt 0.380000 0.979999 +vt 0.390000 0.979999 +vt 0.400000 0.979999 +vt 0.410000 0.979999 +vt 0.420000 0.979999 +vt 0.430000 0.979999 +vt 0.440000 0.979999 +vt 0.450000 0.979999 +vt 0.460000 0.979999 +vt 0.470000 0.979999 +vt 0.480000 0.979999 +vt 0.490000 0.979999 +vt 0.500000 0.979999 +vt 0.510000 0.979999 +vt 0.520000 0.979999 +vt 0.530000 0.979999 +vt 0.540000 0.979999 +vt 0.550000 0.979999 +vt 0.560000 0.979999 +vt 0.570000 0.979999 +vt 0.580000 0.979999 +vt 0.590000 0.979999 +vt 0.600000 0.979999 +vt 0.610000 0.979999 +vt 0.620000 0.979999 +vt 0.630000 0.979999 +vt 0.640000 0.979999 +vt 0.650000 0.979999 +vt 0.660000 0.979999 +vt 0.670000 0.979999 +vt 0.680000 0.979999 +vt 0.690000 0.979999 +vt 0.700000 0.979999 +vt 0.710000 0.979999 +vt 0.720000 0.979999 +vt 0.730000 0.979999 +vt 0.740000 0.979999 +vt 0.750000 0.979999 +vt 0.760000 0.979999 +vt 0.770000 0.979999 +vt 0.780000 0.979999 +vt 0.790000 0.979999 +vt 0.800000 0.979999 +vt 0.810000 0.979999 +vt 0.820000 0.979999 +vt 0.830000 0.979999 +vt 0.839999 0.979999 +vt 0.849999 0.979999 +vt 0.859999 0.979999 +vt 0.869999 0.979999 +vt 0.879999 0.979999 +vt 0.889999 0.979999 +vt 0.899999 0.979999 +vt 0.909999 0.979999 +vt 0.919999 0.979999 +vt 0.929999 0.979999 +vt 0.939999 0.979999 +vt 0.949999 0.979999 +vt 0.959999 0.979999 +vt 0.969999 0.979999 +vt 0.979999 0.979999 +vt 0.989999 0.979999 +vt 0.999999 0.979999 +vt 0.000000 0.989999 +vt 0.010000 0.989999 +vt 0.020000 0.989999 +vt 0.030000 0.989999 +vt 0.040000 0.989999 +vt 0.050000 0.989999 +vt 0.060000 0.989999 +vt 0.070000 0.989999 +vt 0.080000 0.989999 +vt 0.090000 0.989999 +vt 0.100000 0.989999 +vt 0.110000 0.989999 +vt 0.120000 0.989999 +vt 0.130000 0.989999 +vt 0.140000 0.989999 +vt 0.150000 0.989999 +vt 0.160000 0.989999 +vt 0.170000 0.989999 +vt 0.180000 0.989999 +vt 0.190000 0.989999 +vt 0.200000 0.989999 +vt 0.210000 0.989999 +vt 0.220000 0.989999 +vt 0.230000 0.989999 +vt 0.240000 0.989999 +vt 0.250000 0.989999 +vt 0.260000 0.989999 +vt 0.270000 0.989999 +vt 0.280000 0.989999 +vt 0.290000 0.989999 +vt 0.300000 0.989999 +vt 0.310000 0.989999 +vt 0.320000 0.989999 +vt 0.330000 0.989999 +vt 0.340000 0.989999 +vt 0.350000 0.989999 +vt 0.360000 0.989999 +vt 0.370000 0.989999 +vt 0.380000 0.989999 +vt 0.390000 0.989999 +vt 0.400000 0.989999 +vt 0.410000 0.989999 +vt 0.420000 0.989999 +vt 0.430000 0.989999 +vt 0.440000 0.989999 +vt 0.450000 0.989999 +vt 0.460000 0.989999 +vt 0.470000 0.989999 +vt 0.480000 0.989999 +vt 0.490000 0.989999 +vt 0.500000 0.989999 +vt 0.510000 0.989999 +vt 0.520000 0.989999 +vt 0.530000 0.989999 +vt 0.540000 0.989999 +vt 0.550000 0.989999 +vt 0.560000 0.989999 +vt 0.570000 0.989999 +vt 0.580000 0.989999 +vt 0.590000 0.989999 +vt 0.600000 0.989999 +vt 0.610000 0.989999 +vt 0.620000 0.989999 +vt 0.630000 0.989999 +vt 0.640000 0.989999 +vt 0.650000 0.989999 +vt 0.660000 0.989999 +vt 0.670000 0.989999 +vt 0.680000 0.989999 +vt 0.690000 0.989999 +vt 0.700000 0.989999 +vt 0.710000 0.989999 +vt 0.720000 0.989999 +vt 0.730000 0.989999 +vt 0.740000 0.989999 +vt 0.750000 0.989999 +vt 0.760000 0.989999 +vt 0.770000 0.989999 +vt 0.780000 0.989999 +vt 0.790000 0.989999 +vt 0.800000 0.989999 +vt 0.810000 0.989999 +vt 0.820000 0.989999 +vt 0.830000 0.989999 +vt 0.839999 0.989999 +vt 0.849999 0.989999 +vt 0.859999 0.989999 +vt 0.869999 0.989999 +vt 0.879999 0.989999 +vt 0.889999 0.989999 +vt 0.899999 0.989999 +vt 0.909999 0.989999 +vt 0.919999 0.989999 +vt 0.929999 0.989999 +vt 0.939999 0.989999 +vt 0.949999 0.989999 +vt 0.959999 0.989999 +vt 0.969999 0.989999 +vt 0.979999 0.989999 +vt 0.989999 0.989999 +vt 0.999999 0.989999 +vt 0.005000 0.000000 +vt 0.015000 0.000000 +vt 0.025000 0.000000 +vt 0.035000 0.000000 +vt 0.045000 0.000000 +vt 0.055000 0.000000 +vt 0.065000 0.000000 +vt 0.075000 0.000000 +vt 0.085000 0.000000 +vt 0.095000 0.000000 +vt 0.105000 0.000000 +vt 0.115000 0.000000 +vt 0.125000 0.000000 +vt 0.135000 0.000000 +vt 0.145000 0.000000 +vt 0.155000 0.000000 +vt 0.165000 0.000000 +vt 0.175000 0.000000 +vt 0.185000 0.000000 +vt 0.195000 0.000000 +vt 0.205000 0.000000 +vt 0.215000 0.000000 +vt 0.225000 0.000000 +vt 0.235000 0.000000 +vt 0.245000 0.000000 +vt 0.255000 0.000000 +vt 0.265000 0.000000 +vt 0.275000 0.000000 +vt 0.285000 0.000000 +vt 0.295000 0.000000 +vt 0.305000 0.000000 +vt 0.315000 0.000000 +vt 0.325000 0.000000 +vt 0.335000 0.000000 +vt 0.345000 0.000000 +vt 0.355000 0.000000 +vt 0.365000 0.000000 +vt 0.375000 0.000000 +vt 0.385000 0.000000 +vt 0.395000 0.000000 +vt 0.405000 0.000000 +vt 0.415000 0.000000 +vt 0.425000 0.000000 +vt 0.435000 0.000000 +vt 0.445000 0.000000 +vt 0.455000 0.000000 +vt 0.465000 0.000000 +vt 0.475000 0.000000 +vt 0.485000 0.000000 +vt 0.495000 0.000000 +vt 0.505000 0.000000 +vt 0.515000 0.000000 +vt 0.525000 0.000000 +vt 0.535000 0.000000 +vt 0.545000 0.000000 +vt 0.555000 0.000000 +vt 0.565000 0.000000 +vt 0.575000 0.000000 +vt 0.585000 0.000000 +vt 0.595000 0.000000 +vt 0.605000 0.000000 +vt 0.615000 0.000000 +vt 0.625000 0.000000 +vt 0.635000 0.000000 +vt 0.645000 0.000000 +vt 0.655000 0.000000 +vt 0.665000 0.000000 +vt 0.675000 0.000000 +vt 0.685000 0.000000 +vt 0.695000 0.000000 +vt 0.705000 0.000000 +vt 0.715000 0.000000 +vt 0.725000 0.000000 +vt 0.735000 0.000000 +vt 0.745000 0.000000 +vt 0.755000 0.000000 +vt 0.765000 0.000000 +vt 0.775000 0.000000 +vt 0.785000 0.000000 +vt 0.795000 0.000000 +vt 0.805000 0.000000 +vt 0.815000 0.000000 +vt 0.825000 0.000000 +vt 0.835000 0.000000 +vt 0.845000 0.000000 +vt 0.855000 0.000000 +vt 0.865000 0.000000 +vt 0.875000 0.000000 +vt 0.885000 0.000000 +vt 0.895000 0.000000 +vt 0.905000 0.000000 +vt 0.915000 0.000000 +vt 0.925000 0.000000 +vt 0.935000 0.000000 +vt 0.945000 0.000000 +vt 0.955000 0.000000 +vt 0.965000 0.000000 +vt 0.975000 0.000000 +vt 0.985000 0.000000 +vt 0.995000 0.000000 +vt 0.005000 1.000000 +vt 0.015000 1.000000 +vt 0.025000 1.000000 +vt 0.035000 1.000000 +vt 0.045000 1.000000 +vt 0.055000 1.000000 +vt 0.065000 1.000000 +vt 0.075000 1.000000 +vt 0.085000 1.000000 +vt 0.095000 1.000000 +vt 0.105000 1.000000 +vt 0.115000 1.000000 +vt 0.125000 1.000000 +vt 0.135000 1.000000 +vt 0.145000 1.000000 +vt 0.155000 1.000000 +vt 0.165000 1.000000 +vt 0.175000 1.000000 +vt 0.185000 1.000000 +vt 0.195000 1.000000 +vt 0.205000 1.000000 +vt 0.215000 1.000000 +vt 0.225000 1.000000 +vt 0.235000 1.000000 +vt 0.245000 1.000000 +vt 0.255000 1.000000 +vt 0.265000 1.000000 +vt 0.275000 1.000000 +vt 0.285000 1.000000 +vt 0.295000 1.000000 +vt 0.305000 1.000000 +vt 0.315000 1.000000 +vt 0.325000 1.000000 +vt 0.335000 1.000000 +vt 0.345000 1.000000 +vt 0.355000 1.000000 +vt 0.365000 1.000000 +vt 0.375000 1.000000 +vt 0.385000 1.000000 +vt 0.395000 1.000000 +vt 0.405000 1.000000 +vt 0.415000 1.000000 +vt 0.425000 1.000000 +vt 0.435000 1.000000 +vt 0.445000 1.000000 +vt 0.455000 1.000000 +vt 0.465000 1.000000 +vt 0.475000 1.000000 +vt 0.485000 1.000000 +vt 0.495000 1.000000 +vt 0.505000 1.000000 +vt 0.515000 1.000000 +vt 0.525000 1.000000 +vt 0.535000 1.000000 +vt 0.545000 1.000000 +vt 0.555000 1.000000 +vt 0.565000 1.000000 +vt 0.575000 1.000000 +vt 0.585000 1.000000 +vt 0.595000 1.000000 +vt 0.605000 1.000000 +vt 0.615000 1.000000 +vt 0.625000 1.000000 +vt 0.635000 1.000000 +vt 0.645000 1.000000 +vt 0.655000 1.000000 +vt 0.665000 1.000000 +vt 0.675000 1.000000 +vt 0.685000 1.000000 +vt 0.695000 1.000000 +vt 0.705000 1.000000 +vt 0.715000 1.000000 +vt 0.725000 1.000000 +vt 0.735000 1.000000 +vt 0.745000 1.000000 +vt 0.755000 1.000000 +vt 0.765000 1.000000 +vt 0.775000 1.000000 +vt 0.785000 1.000000 +vt 0.795000 1.000000 +vt 0.805000 1.000000 +vt 0.815000 1.000000 +vt 0.825000 1.000000 +vt 0.835000 1.000000 +vt 0.845000 1.000000 +vt 0.855000 1.000000 +vt 0.865000 1.000000 +vt 0.875000 1.000000 +vt 0.885000 1.000000 +vt 0.895000 1.000000 +vt 0.905000 1.000000 +vt 0.915000 1.000000 +vt 0.925000 1.000000 +vt 0.935000 1.000000 +vt 0.945000 1.000000 +vt 0.955000 1.000000 +vt 0.965000 1.000000 +vt 0.975000 1.000000 +vt 0.985000 1.000000 +vt 0.995000 1.000000 +vn 0.031964 -0.999487 -0.001976 +vn 0.031777 -0.999487 -0.003976 +vn 0.063285 -0.997988 -0.003957 +vn 0.062913 -0.997988 -0.007913 +vn 0.031464 -0.999487 -0.005953 +vn 0.062293 -0.997987 -0.011857 +vn 0.031027 -0.999487 -0.007930 +vn 0.061427 -0.997988 -0.015733 +vn 0.030467 -0.999487 -0.009899 +vn 0.060318 -0.997988 -0.019553 +vn 0.029787 -0.999487 -0.011768 +vn 0.058971 -0.997988 -0.023311 +vn 0.028990 -0.999487 -0.013583 +vn 0.057392 -0.997988 -0.026959 +vn 0.028078 -0.999487 -0.015405 +vn 0.055586 -0.997988 -0.030510 +vn 0.027055 -0.999487 -0.017145 +vn 0.053560 -0.997988 -0.033944 +vn 0.025926 -0.999487 -0.018795 +vn 0.051324 -0.997988 -0.037238 +vn 0.024695 -0.999487 -0.020374 +vn 0.048884 -0.997987 -0.040393 +vn 0.023365 -0.999487 -0.021897 +vn 0.046252 -0.997987 -0.043389 +vn 0.021944 -0.999487 -0.023324 +vn 0.043438 -0.997987 -0.046198 +vn 0.020436 -0.999487 -0.024655 +vn 0.040451 -0.997987 -0.048836 +vn 0.018847 -0.999487 -0.025892 +vn 0.037305 -0.997987 -0.051282 +vn 0.017184 -0.999487 -0.027019 +vn 0.034012 -0.997988 -0.053510 +vn 0.015454 -0.999487 -0.028048 +vn 0.030585 -0.997988 -0.055537 +vn 0.013662 -0.999487 -0.028967 +vn 0.027037 -0.997988 -0.057353 +vn 0.011816 -0.999487 -0.029759 +vn 0.023382 -0.997988 -0.058939 +vn 0.009924 -0.999487 -0.030441 +vn 0.019636 -0.997988 -0.060291 +vn 0.007992 -0.999487 -0.031013 +vn 0.015811 -0.997988 -0.061406 +vn 0.006029 -0.999487 -0.031454 +vn 0.011924 -0.997987 -0.062280 +vn 0.004043 -0.999487 -0.031765 +vn 0.007990 -0.997988 -0.062903 +vn 0.002040 -0.999487 -0.031957 +vn 0.004025 -0.997988 -0.063280 +vn 0.000029 -0.999487 -0.032022 +vn 0.000043 -0.997988 -0.063409 +vn -0.001982 -0.999487 -0.031964 +vn -0.003938 -0.997988 -0.063286 +vn -0.003985 -0.999487 -0.031779 +vn -0.007904 -0.997988 -0.062913 +vn -0.005973 -0.999487 -0.031461 +vn -0.011839 -0.997988 -0.062293 +vn -0.007936 -0.999487 -0.031021 +vn -0.015727 -0.997987 -0.061431 +vn -0.009869 -0.999487 -0.030464 +vn -0.019553 -0.997988 -0.060319 +vn -0.011763 -0.999487 -0.029786 +vn -0.023302 -0.997988 -0.058973 +vn -0.013610 -0.999487 -0.028986 +vn -0.026958 -0.997988 -0.057394 +vn -0.015403 -0.999487 -0.028069 +vn -0.030509 -0.997988 -0.055584 +vn -0.017136 -0.999487 -0.027050 +vn -0.033939 -0.997988 -0.053559 +vn -0.018801 -0.999487 -0.025925 +vn -0.037235 -0.997988 -0.051326 +vn -0.020392 -0.999487 -0.024693 +vn -0.040384 -0.997988 -0.048888 +vn -0.021902 -0.999487 -0.023363 +vn -0.043374 -0.997988 -0.046251 +vn -0.023326 -0.999487 -0.021939 +vn -0.046193 -0.997987 -0.043447 +vn -0.024658 -0.999487 -0.020432 +vn -0.048829 -0.997988 -0.040453 +vn -0.025892 -0.999487 -0.018854 +vn -0.051272 -0.997988 -0.037297 +vn -0.027024 -0.999487 -0.017195 +vn -0.053514 -0.997988 -0.034012 +vn -0.028050 -0.999487 -0.015441 +vn -0.055544 -0.997988 -0.030592 +vn -0.028965 -0.999488 -0.013622 +vn -0.057355 -0.997988 -0.027044 +vn -0.029766 -0.999487 -0.011796 +vn -0.058939 -0.997988 -0.023380 +vn -0.030449 -0.999487 -0.009956 +vn -0.060291 -0.997988 -0.019629 +vn -0.031012 -0.999487 -0.008008 +vn -0.061405 -0.997988 -0.015811 +vn -0.031453 -0.999487 -0.006034 +vn -0.062277 -0.997988 -0.011928 +vn -0.031769 -0.999487 -0.004060 +vn -0.062902 -0.997988 -0.007982 +vn -0.031960 -0.999487 -0.002057 +vn -0.063280 -0.997988 -0.004011 +vn -0.032025 -0.999487 -0.000054 +vn -0.063408 -0.997988 -0.000044 +vn -0.031964 -0.999487 0.001976 +vn -0.063286 -0.997988 0.003926 +vn -0.031777 -0.999487 0.004002 +vn -0.062913 -0.997988 0.007889 +vn -0.031464 -0.999487 0.005977 +vn -0.062293 -0.997988 0.011831 +vn -0.031026 -0.999487 0.007927 +vn -0.061427 -0.997988 0.015720 +vn -0.030467 -0.999487 0.009875 +vn -0.060318 -0.997988 0.019557 +vn -0.029787 -0.999487 0.011742 +vn -0.058971 -0.997987 0.023318 +vn -0.028990 -0.999487 0.013595 +vn -0.057392 -0.997987 0.026971 +vn -0.028078 -0.999487 0.015419 +vn -0.055586 -0.997988 0.030509 +vn -0.027055 -0.999487 0.017145 +vn -0.053560 -0.997988 0.033933 +vn -0.025926 -0.999487 0.018794 +vn -0.051324 -0.997988 0.037232 +vn -0.024695 -0.999487 0.020374 +vn -0.048884 -0.997987 0.040393 +vn -0.023365 -0.999487 0.021897 +vn -0.046252 -0.997987 0.043389 +vn -0.021944 -0.999487 0.023324 +vn -0.043437 -0.997988 0.046194 +vn -0.020436 -0.999487 0.024656 +vn -0.040451 -0.997988 0.048828 +vn -0.018847 -0.999488 0.025878 +vn -0.037305 -0.997988 0.051270 +vn -0.017185 -0.999487 0.027018 +vn -0.034013 -0.997988 0.053509 +vn -0.015454 -0.999487 0.028048 +vn -0.030585 -0.997988 0.055546 +vn -0.013662 -0.999488 0.028949 +vn -0.027037 -0.997987 0.057363 +vn -0.011816 -0.999487 0.029760 +vn -0.023382 -0.997987 0.058948 +vn -0.009924 -0.999487 0.030439 +vn -0.019635 -0.997988 0.060293 +vn -0.007992 -0.999488 0.030998 +vn -0.015811 -0.997988 0.061408 +vn -0.006029 -0.999487 0.031451 +vn -0.011924 -0.997988 0.062277 +vn -0.004043 -0.999487 0.031769 +vn -0.007990 -0.997988 0.062903 +vn -0.002040 -0.999487 0.031955 +vn -0.004025 -0.997988 0.063283 +vn -0.000029 -0.999487 0.032022 +vn -0.000044 -0.997987 0.063412 +vn 0.001982 -0.999487 0.031961 +vn 0.003938 -0.997988 0.063289 +vn 0.003985 -0.999487 0.031775 +vn 0.007904 -0.997988 0.062915 +vn 0.005973 -0.999487 0.031468 +vn 0.011839 -0.997988 0.062295 +vn 0.007936 -0.999487 0.031021 +vn 0.015727 -0.997988 0.061429 +vn 0.009869 -0.999487 0.030464 +vn 0.019553 -0.997988 0.060318 +vn 0.011762 -0.999487 0.029799 +vn 0.023302 -0.997988 0.058966 +vn 0.013610 -0.999487 0.028992 +vn 0.026958 -0.997988 0.057388 +vn 0.015403 -0.999487 0.028069 +vn 0.030509 -0.997988 0.055588 +vn 0.017136 -0.999487 0.027050 +vn 0.033939 -0.997987 0.053572 +vn 0.018801 -0.999487 0.025926 +vn 0.037235 -0.997987 0.051333 +vn 0.020391 -0.999487 0.024692 +vn 0.040384 -0.997988 0.048882 +vn 0.021902 -0.999487 0.023364 +vn 0.043374 -0.997988 0.046255 +vn 0.023326 -0.999487 0.021939 +vn 0.046193 -0.997987 0.043446 +vn 0.024658 -0.999487 0.020432 +vn 0.048829 -0.997988 0.040454 +vn 0.025892 -0.999487 0.018854 +vn 0.051272 -0.997988 0.037309 +vn 0.027025 -0.999487 0.017182 +vn 0.053514 -0.997987 0.034018 +vn 0.028050 -0.999487 0.015455 +vn 0.055544 -0.997988 0.030592 +vn 0.028965 -0.999487 0.013674 +vn 0.057355 -0.997988 0.027044 +vn 0.029766 -0.999487 0.011796 +vn 0.058939 -0.997987 0.023392 +vn 0.030449 -0.999487 0.009905 +vn 0.060291 -0.997988 0.019641 +vn 0.031012 -0.999487 0.007982 +vn 0.061405 -0.997988 0.015805 +vn 0.031453 -0.999487 0.006036 +vn 0.062277 -0.997988 0.011922 +vn 0.031769 -0.999487 0.004060 +vn 0.062902 -0.997988 0.007982 +vn 0.031960 -0.999487 0.002057 +vn 0.063280 -0.997988 0.004017 +vn 0.032025 -0.999487 0.000055 +vn 0.063408 -0.997988 0.000036 +vn 0.094539 -0.995504 -0.005894 +vn 0.093983 -0.995504 -0.011820 +vn 0.093056 -0.995504 -0.017690 +vn 0.091761 -0.995504 -0.023494 +vn 0.090105 -0.995504 -0.029222 +vn 0.088093 -0.995504 -0.034819 +vn 0.085733 -0.995504 -0.040272 +vn 0.083035 -0.995504 -0.045574 +vn 0.080009 -0.995504 -0.050703 +vn 0.076667 -0.995504 -0.055629 +vn 0.073023 -0.995504 -0.060327 +vn 0.069091 -0.995504 -0.064793 +vn 0.064886 -0.995504 -0.069003 +vn 0.060425 -0.995504 -0.072937 +vn 0.055726 -0.995504 -0.076594 +vn 0.050806 -0.995503 -0.079947 +vn 0.045686 -0.995504 -0.082978 +vn 0.040386 -0.995504 -0.085677 +vn 0.034926 -0.995504 -0.088047 +vn 0.029329 -0.995504 -0.090068 +vn 0.023615 -0.995504 -0.091729 +vn 0.017809 -0.995504 -0.093030 +vn 0.011932 -0.995504 -0.093963 +vn 0.006009 -0.995504 -0.094529 +vn 0.000061 -0.995504 -0.094720 +vn -0.005887 -0.995504 -0.094536 +vn -0.011811 -0.995504 -0.093981 +vn -0.017689 -0.995504 -0.093054 +vn -0.023497 -0.995504 -0.091760 +vn -0.029213 -0.995504 -0.090103 +vn -0.034813 -0.995504 -0.088088 +vn -0.040276 -0.995504 -0.085730 +vn -0.045579 -0.995504 -0.083034 +vn -0.050703 -0.995504 -0.080006 +vn -0.055627 -0.995504 -0.076664 +vn -0.060331 -0.995504 -0.073025 +vn -0.064797 -0.995504 -0.069094 +vn -0.069007 -0.995504 -0.064882 +vn -0.072945 -0.995504 -0.060419 +vn -0.076596 -0.995504 -0.055720 +vn -0.079944 -0.995504 -0.050801 +vn -0.082976 -0.995504 -0.045685 +vn -0.085681 -0.995504 -0.040386 +vn -0.088048 -0.995504 -0.034932 +vn -0.090067 -0.995504 -0.029329 +vn -0.091731 -0.995504 -0.023611 +vn -0.093033 -0.995504 -0.017818 +vn -0.093967 -0.995504 -0.011942 +vn -0.094531 -0.995504 -0.006014 +vn -0.094722 -0.995504 -0.000052 +vn -0.094539 -0.995504 0.005901 +vn -0.093983 -0.995504 0.011820 +vn -0.093056 -0.995504 0.017689 +vn -0.091761 -0.995504 0.023486 +vn -0.090105 -0.995504 0.029213 +vn -0.088093 -0.995504 0.034819 +vn -0.085733 -0.995504 0.040267 +vn -0.083035 -0.995504 0.045574 +vn -0.080009 -0.995503 0.050711 +vn -0.076667 -0.995503 0.055634 +vn -0.073023 -0.995504 0.060327 +vn -0.069091 -0.995504 0.064793 +vn -0.064886 -0.995504 0.069003 +vn -0.060425 -0.995504 0.072945 +vn -0.055725 -0.995504 0.076598 +vn -0.050806 -0.995504 0.079944 +vn -0.045686 -0.995504 0.082977 +vn -0.040386 -0.995504 0.085679 +vn -0.034926 -0.995504 0.088044 +vn -0.029329 -0.995504 0.090066 +vn -0.023615 -0.995504 0.091732 +vn -0.017809 -0.995504 0.093032 +vn -0.011932 -0.995504 0.093965 +vn -0.006008 -0.995504 0.094528 +vn -0.000061 -0.995504 0.094718 +vn 0.005887 -0.995504 0.094535 +vn 0.011811 -0.995504 0.093981 +vn 0.017689 -0.995504 0.093055 +vn 0.023497 -0.995504 0.091758 +vn 0.029213 -0.995504 0.090101 +vn 0.034813 -0.995504 0.088090 +vn 0.040276 -0.995504 0.085730 +vn 0.045579 -0.995504 0.083031 +vn 0.050703 -0.995504 0.080004 +vn 0.055627 -0.995504 0.076664 +vn 0.060331 -0.995504 0.073019 +vn 0.064797 -0.995504 0.069088 +vn 0.069008 -0.995504 0.064881 +vn 0.072946 -0.995504 0.060418 +vn 0.076596 -0.995504 0.055720 +vn 0.079944 -0.995504 0.050805 +vn 0.082976 -0.995504 0.045689 +vn 0.085681 -0.995504 0.040383 +vn 0.088048 -0.995504 0.034924 +vn 0.090067 -0.995504 0.029333 +vn 0.091731 -0.995504 0.023619 +vn 0.093033 -0.995504 0.017818 +vn 0.093967 -0.995504 0.011942 +vn 0.094531 -0.995504 0.006014 +vn 0.094722 -0.995504 0.000058 +vn 0.125697 -0.992038 -0.007833 +vn 0.124957 -0.992038 -0.015711 +vn 0.123725 -0.992038 -0.023523 +vn 0.122004 -0.992038 -0.031248 +vn 0.119801 -0.992038 -0.038848 +vn 0.117126 -0.992038 -0.046283 +vn 0.113988 -0.992038 -0.053546 +vn 0.110400 -0.992038 -0.060605 +vn 0.106377 -0.992037 -0.067421 +vn 0.101934 -0.992038 -0.073962 +vn 0.097089 -0.992038 -0.080214 +vn 0.091860 -0.992038 -0.086158 +vn 0.086269 -0.992038 -0.091755 +vn 0.080338 -0.992038 -0.096991 +vn 0.074089 -0.992038 -0.101841 +vn 0.067549 -0.992038 -0.106295 +vn 0.060741 -0.992037 -0.110328 +vn 0.053694 -0.992038 -0.113922 +vn 0.046435 -0.992038 -0.117068 +vn 0.038992 -0.992038 -0.119753 +vn 0.031396 -0.992038 -0.121966 +vn 0.023676 -0.992038 -0.123696 +vn 0.015862 -0.992038 -0.124939 +vn 0.007986 -0.992037 -0.125690 +vn 0.000078 -0.992038 -0.125942 +vn -0.007830 -0.992038 -0.125697 +vn -0.015707 -0.992038 -0.124960 +vn -0.023522 -0.992038 -0.123726 +vn -0.031244 -0.992038 -0.122005 +vn -0.038843 -0.992037 -0.119804 +vn -0.046289 -0.992037 -0.117129 +vn -0.053552 -0.992037 -0.113992 +vn -0.060604 -0.992037 -0.110403 +vn -0.067416 -0.992038 -0.106379 +vn -0.073963 -0.992038 -0.101936 +vn -0.080217 -0.992037 -0.097094 +vn -0.086155 -0.992037 -0.091865 +vn -0.091753 -0.992038 -0.086271 +vn -0.096989 -0.992038 -0.080338 +vn -0.101842 -0.992037 -0.074093 +vn -0.106293 -0.992037 -0.067556 +vn -0.110325 -0.992038 -0.060741 +vn -0.113921 -0.992038 -0.053685 +vn -0.117068 -0.992038 -0.046437 +vn -0.119752 -0.992037 -0.039003 +vn -0.121965 -0.992038 -0.031393 +vn -0.123695 -0.992038 -0.023672 +vn -0.124938 -0.992038 -0.015862 +vn -0.125687 -0.992038 -0.007982 +vn -0.125941 -0.992038 -0.000077 +vn -0.125697 -0.992038 0.007831 +vn -0.124957 -0.992038 0.015711 +vn -0.123725 -0.992038 0.023523 +vn -0.122003 -0.992038 0.031248 +vn -0.119801 -0.992038 0.038848 +vn -0.117126 -0.992038 0.046283 +vn -0.113988 -0.992038 0.053546 +vn -0.110400 -0.992038 0.060605 +vn -0.106377 -0.992038 0.067418 +vn -0.101934 -0.992038 0.073959 +vn -0.097089 -0.992038 0.080214 +vn -0.091860 -0.992038 0.086158 +vn -0.086269 -0.992038 0.091754 +vn -0.080338 -0.992038 0.096988 +vn -0.074089 -0.992038 0.101838 +vn -0.067549 -0.992038 0.106292 +vn -0.060741 -0.992038 0.110325 +vn -0.053694 -0.992037 0.113925 +vn -0.046435 -0.992037 0.117071 +vn -0.038992 -0.992037 0.119755 +vn -0.031396 -0.992038 0.121965 +vn -0.023676 -0.992038 0.123696 +vn -0.015862 -0.992037 0.124941 +vn -0.007986 -0.992037 0.125691 +vn -0.000078 -0.992037 0.125944 +vn 0.007830 -0.992037 0.125700 +vn 0.015707 -0.992037 0.124961 +vn 0.023522 -0.992038 0.123725 +vn 0.031244 -0.992038 0.122005 +vn 0.038843 -0.992038 0.119803 +vn 0.046289 -0.992037 0.117127 +vn 0.053552 -0.992037 0.113991 +vn 0.060604 -0.992037 0.110404 +vn 0.067416 -0.992038 0.106379 +vn 0.073963 -0.992038 0.101935 +vn 0.080217 -0.992038 0.097089 +vn 0.086155 -0.992037 0.091863 +vn 0.091753 -0.992038 0.086272 +vn 0.096989 -0.992038 0.080341 +vn 0.101842 -0.992037 0.074093 +vn 0.106293 -0.992037 0.067555 +vn 0.110325 -0.992038 0.060744 +vn 0.113921 -0.992038 0.053685 +vn 0.117068 -0.992038 0.046430 +vn 0.119752 -0.992037 0.038998 +vn 0.121964 -0.992038 0.031393 +vn 0.123695 -0.992038 0.023672 +vn 0.124938 -0.992038 0.015861 +vn 0.125687 -0.992038 0.007982 +vn 0.125941 -0.992038 0.000076 +vn 0.156732 -0.987593 -0.009761 +vn 0.155810 -0.987593 -0.019582 +vn 0.154273 -0.987593 -0.029332 +vn 0.152127 -0.987593 -0.038960 +vn 0.149380 -0.987593 -0.048436 +vn 0.146044 -0.987593 -0.057716 +vn 0.142132 -0.987593 -0.066776 +vn 0.137658 -0.987593 -0.075567 +vn 0.132642 -0.987593 -0.084056 +vn 0.127101 -0.987593 -0.092224 +vn 0.121060 -0.987593 -0.100025 +vn 0.114540 -0.987593 -0.107430 +vn 0.107568 -0.987592 -0.114412 +vn 0.100172 -0.987593 -0.120940 +vn 0.092381 -0.987593 -0.126987 +vn 0.084225 -0.987593 -0.132539 +vn 0.075736 -0.987592 -0.137569 +vn 0.066949 -0.987593 -0.142052 +vn 0.057898 -0.987593 -0.145975 +vn 0.048618 -0.987593 -0.149321 +vn 0.039146 -0.987593 -0.152079 +vn 0.029519 -0.987593 -0.154235 +vn 0.019776 -0.987593 -0.155784 +vn 0.009956 -0.987593 -0.156719 +vn 0.000095 -0.987593 -0.157035 +vn -0.009765 -0.987593 -0.156732 +vn -0.019587 -0.987593 -0.155809 +vn -0.029332 -0.987593 -0.154272 +vn -0.038961 -0.987593 -0.152125 +vn -0.048436 -0.987593 -0.149379 +vn -0.057720 -0.987593 -0.146043 +vn -0.066777 -0.987593 -0.142131 +vn -0.075569 -0.987593 -0.137660 +vn -0.084064 -0.987593 -0.132641 +vn -0.092227 -0.987593 -0.127100 +vn -0.100025 -0.987593 -0.121058 +vn -0.107429 -0.987593 -0.114539 +vn -0.114409 -0.987593 -0.107566 +vn -0.120938 -0.987593 -0.100171 +vn -0.126989 -0.987593 -0.092382 +vn -0.132539 -0.987593 -0.084226 +vn -0.137566 -0.987593 -0.075739 +vn -0.142050 -0.987593 -0.066949 +vn -0.145974 -0.987593 -0.057896 +vn -0.149321 -0.987593 -0.048616 +vn -0.152079 -0.987593 -0.039147 +vn -0.154237 -0.987593 -0.029518 +vn -0.155786 -0.987593 -0.019777 +vn -0.156721 -0.987593 -0.009955 +vn -0.157036 -0.987593 -0.000095 +vn -0.156733 -0.987593 0.009760 +vn -0.155810 -0.987593 0.019582 +vn -0.154273 -0.987593 0.029332 +vn -0.152127 -0.987593 0.038960 +vn -0.149380 -0.987593 0.048436 +vn -0.146044 -0.987593 0.057721 +vn -0.142131 -0.987593 0.066780 +vn -0.137658 -0.987593 0.075570 +vn -0.132642 -0.987593 0.084058 +vn -0.127101 -0.987593 0.092225 +vn -0.121059 -0.987593 0.100025 +vn -0.114540 -0.987593 0.107430 +vn -0.107568 -0.987592 0.114412 +vn -0.100172 -0.987593 0.120939 +vn -0.092381 -0.987593 0.126987 +vn -0.084225 -0.987593 0.132539 +vn -0.075736 -0.987593 0.137569 +vn -0.066949 -0.987593 0.142050 +vn -0.057898 -0.987593 0.145972 +vn -0.048618 -0.987593 0.149321 +vn -0.039146 -0.987593 0.152079 +vn -0.029519 -0.987593 0.154238 +vn -0.019776 -0.987593 0.155785 +vn -0.009955 -0.987593 0.156719 +vn -0.000095 -0.987593 0.157036 +vn 0.009765 -0.987593 0.156732 +vn 0.019587 -0.987593 0.155809 +vn 0.029332 -0.987593 0.154271 +vn 0.038961 -0.987593 0.152125 +vn 0.048436 -0.987593 0.149379 +vn 0.057720 -0.987593 0.146042 +vn 0.066776 -0.987593 0.142130 +vn 0.075569 -0.987593 0.137659 +vn 0.084064 -0.987593 0.132642 +vn 0.092226 -0.987593 0.127100 +vn 0.100025 -0.987593 0.121058 +vn 0.107429 -0.987593 0.114540 +vn 0.114409 -0.987593 0.107563 +vn 0.120938 -0.987593 0.100169 +vn 0.126989 -0.987593 0.092380 +vn 0.132539 -0.987593 0.084224 +vn 0.137566 -0.987593 0.075739 +vn 0.142050 -0.987593 0.066950 +vn 0.145974 -0.987593 0.057898 +vn 0.149321 -0.987593 0.048619 +vn 0.152079 -0.987593 0.039147 +vn 0.154237 -0.987593 0.029518 +vn 0.155786 -0.987593 0.019777 +vn 0.156720 -0.987593 0.009960 +vn 0.157036 -0.987593 0.000097 +vn 0.187609 -0.982174 -0.011687 +vn 0.186505 -0.982174 -0.023451 +vn 0.184664 -0.982174 -0.035119 +vn 0.182095 -0.982174 -0.046641 +vn 0.178807 -0.982174 -0.057985 +vn 0.174814 -0.982174 -0.069091 +vn 0.170131 -0.982175 -0.079929 +vn 0.164776 -0.982174 -0.090458 +vn 0.158771 -0.982174 -0.100630 +vn 0.152139 -0.982174 -0.110399 +vn 0.144907 -0.982174 -0.119731 +vn 0.137103 -0.982174 -0.128597 +vn 0.128758 -0.982174 -0.136949 +vn 0.119905 -0.982175 -0.144762 +vn 0.110578 -0.982174 -0.152007 +vn 0.100815 -0.982174 -0.158652 +vn 0.090654 -0.982174 -0.164669 +vn 0.080136 -0.982175 -0.170034 +vn 0.069301 -0.982174 -0.174730 +vn 0.058193 -0.982174 -0.178738 +vn 0.046855 -0.982174 -0.182039 +vn 0.035333 -0.982174 -0.184624 +vn 0.023670 -0.982174 -0.186479 +vn 0.011914 -0.982174 -0.187595 +vn 0.000111 -0.982174 -0.187975 +vn -0.011691 -0.982174 -0.187609 +vn -0.023448 -0.982174 -0.186505 +vn -0.035113 -0.982174 -0.184665 +vn -0.046639 -0.982174 -0.182095 +vn -0.057981 -0.982174 -0.178808 +vn -0.069094 -0.982174 -0.174815 +vn -0.079934 -0.982174 -0.170131 +vn -0.090459 -0.982174 -0.164775 +vn -0.100627 -0.982174 -0.158770 +vn -0.110397 -0.982175 -0.152136 +vn -0.119733 -0.982174 -0.144906 +vn -0.128595 -0.982174 -0.137104 +vn -0.136950 -0.982174 -0.128758 +vn -0.144764 -0.982174 -0.119905 +vn -0.152008 -0.982174 -0.110578 +vn -0.158651 -0.982174 -0.100814 +vn -0.164668 -0.982174 -0.090654 +vn -0.170035 -0.982174 -0.080134 +vn -0.174732 -0.982175 -0.069295 +vn -0.178738 -0.982175 -0.058187 +vn -0.182040 -0.982174 -0.046856 +vn -0.184622 -0.982174 -0.035337 +vn -0.186477 -0.982174 -0.023672 +vn -0.187595 -0.982174 -0.011916 +vn -0.187973 -0.982174 -0.000111 +vn -0.187609 -0.982174 0.011691 +vn -0.186505 -0.982174 0.023450 +vn -0.184664 -0.982174 0.035119 +vn -0.182095 -0.982174 0.046641 +vn -0.178807 -0.982174 0.057982 +vn -0.174814 -0.982175 0.069088 +vn -0.170131 -0.982174 0.079932 +vn -0.164776 -0.982174 0.090460 +vn -0.158770 -0.982174 0.100630 +vn -0.152139 -0.982174 0.110399 +vn -0.144907 -0.982174 0.119731 +vn -0.137103 -0.982174 0.128597 +vn -0.128758 -0.982174 0.136949 +vn -0.119905 -0.982175 0.144762 +vn -0.110578 -0.982175 0.152005 +vn -0.100815 -0.982175 0.158648 +vn -0.090655 -0.982174 0.164668 +vn -0.080136 -0.982174 0.170036 +vn -0.069301 -0.982174 0.174731 +vn -0.058193 -0.982175 0.178737 +vn -0.046855 -0.982174 0.182039 +vn -0.035332 -0.982174 0.184621 +vn -0.023670 -0.982174 0.186477 +vn -0.011914 -0.982174 0.187595 +vn -0.000112 -0.982174 0.187973 +vn 0.011691 -0.982174 0.187608 +vn 0.023448 -0.982174 0.186505 +vn 0.035113 -0.982174 0.184665 +vn 0.046639 -0.982174 0.182095 +vn 0.057981 -0.982174 0.178808 +vn 0.069094 -0.982174 0.174814 +vn 0.079934 -0.982174 0.170130 +vn 0.090459 -0.982174 0.164778 +vn 0.100627 -0.982174 0.158773 +vn 0.110398 -0.982174 0.152139 +vn 0.119732 -0.982174 0.144906 +vn 0.128595 -0.982174 0.137103 +vn 0.136950 -0.982174 0.128758 +vn 0.144764 -0.982174 0.119906 +vn 0.152008 -0.982174 0.110578 +vn 0.158651 -0.982174 0.100813 +vn 0.164668 -0.982174 0.090654 +vn 0.170036 -0.982174 0.080134 +vn 0.174732 -0.982174 0.069299 +vn 0.178738 -0.982174 0.058195 +vn 0.182040 -0.982174 0.046859 +vn 0.184623 -0.982174 0.035332 +vn 0.186477 -0.982174 0.023666 +vn 0.187595 -0.982174 0.011912 +vn 0.187973 -0.982174 0.000116 +vn 0.218299 -0.975787 -0.013611 +vn 0.217014 -0.975787 -0.027291 +vn 0.214872 -0.975787 -0.040862 +vn 0.211883 -0.975787 -0.054268 +vn 0.208057 -0.975787 -0.067462 +vn 0.203410 -0.975787 -0.080396 +vn 0.197960 -0.975787 -0.093012 +vn 0.191729 -0.975787 -0.105256 +vn 0.184742 -0.975788 -0.117086 +vn 0.177025 -0.975787 -0.128457 +vn 0.168609 -0.975787 -0.139322 +vn 0.159529 -0.975787 -0.149632 +vn 0.149818 -0.975787 -0.159354 +vn 0.139517 -0.975787 -0.168450 +vn 0.128664 -0.975788 -0.176873 +vn 0.117304 -0.975787 -0.184603 +vn 0.105481 -0.975787 -0.191608 +vn 0.093242 -0.975787 -0.197853 +vn 0.080635 -0.975787 -0.203318 +vn 0.067710 -0.975787 -0.207978 +vn 0.054517 -0.975787 -0.211819 +vn 0.041109 -0.975787 -0.214824 +vn 0.027539 -0.975788 -0.216980 +vn 0.013860 -0.975787 -0.218281 +vn 0.000127 -0.975788 -0.218721 +vn -0.013607 -0.975787 -0.218298 +vn -0.027287 -0.975787 -0.217014 +vn -0.040860 -0.975787 -0.214872 +vn -0.054271 -0.975787 -0.211881 +vn -0.067469 -0.975787 -0.208057 +vn -0.080399 -0.975787 -0.203409 +vn -0.093013 -0.975787 -0.197960 +vn -0.105259 -0.975787 -0.191731 +vn -0.117090 -0.975787 -0.184743 +vn -0.128459 -0.975787 -0.177024 +vn -0.139321 -0.975787 -0.168608 +vn -0.149634 -0.975787 -0.159526 +vn -0.159355 -0.975787 -0.149816 +vn -0.168448 -0.975787 -0.139515 +vn -0.176876 -0.975787 -0.128662 +vn -0.184606 -0.975787 -0.117304 +vn -0.191607 -0.975787 -0.105482 +vn -0.197852 -0.975787 -0.093245 +vn -0.203317 -0.975787 -0.080635 +vn -0.207978 -0.975787 -0.067709 +vn -0.211820 -0.975787 -0.054518 +vn -0.214825 -0.975787 -0.041106 +vn -0.216982 -0.975787 -0.027533 +vn -0.218283 -0.975787 -0.013857 +vn -0.218723 -0.975787 -0.000127 +vn -0.218299 -0.975787 0.013605 +vn -0.217014 -0.975787 0.027291 +vn -0.214872 -0.975787 0.040862 +vn -0.211883 -0.975787 0.054270 +vn -0.208057 -0.975787 0.067465 +vn -0.203410 -0.975787 0.080394 +vn -0.197960 -0.975787 0.093011 +vn -0.191729 -0.975787 0.105259 +vn -0.184742 -0.975787 0.117087 +vn -0.177025 -0.975788 0.128455 +vn -0.168610 -0.975787 0.139320 +vn -0.159529 -0.975787 0.149632 +vn -0.149818 -0.975787 0.159354 +vn -0.139517 -0.975786 0.168452 +vn -0.128665 -0.975787 0.176876 +vn -0.117305 -0.975787 0.184603 +vn -0.105481 -0.975787 0.191608 +vn -0.093242 -0.975787 0.197852 +vn -0.080635 -0.975787 0.203316 +vn -0.067709 -0.975787 0.207979 +vn -0.054517 -0.975787 0.211819 +vn -0.041109 -0.975787 0.214823 +vn -0.027539 -0.975787 0.216982 +vn -0.013860 -0.975787 0.218282 +vn -0.000127 -0.975787 0.218723 +vn 0.013607 -0.975787 0.218298 +vn 0.027287 -0.975787 0.217014 +vn 0.040860 -0.975787 0.214872 +vn 0.054271 -0.975787 0.211883 +vn 0.067469 -0.975787 0.208056 +vn 0.080399 -0.975787 0.203408 +vn 0.093013 -0.975787 0.197959 +vn 0.105259 -0.975787 0.191728 +vn 0.117090 -0.975787 0.184741 +vn 0.128459 -0.975787 0.177024 +vn 0.139321 -0.975787 0.168610 +vn 0.149633 -0.975787 0.159528 +vn 0.159355 -0.975787 0.149816 +vn 0.168448 -0.975787 0.139515 +vn 0.176876 -0.975787 0.128661 +vn 0.184606 -0.975787 0.117305 +vn 0.191607 -0.975787 0.105482 +vn 0.197852 -0.975787 0.093243 +vn 0.203316 -0.975787 0.080634 +vn 0.207978 -0.975787 0.067710 +vn 0.211819 -0.975787 0.054518 +vn 0.214825 -0.975787 0.041106 +vn 0.216982 -0.975787 0.027535 +vn 0.218283 -0.975787 0.013860 +vn 0.218723 -0.975787 0.000123 +vn 0.248775 -0.968437 -0.015509 +vn 0.247310 -0.968437 -0.031097 +vn 0.244869 -0.968437 -0.046566 +vn 0.241462 -0.968437 -0.061853 +vn 0.237102 -0.968437 -0.076892 +vn 0.231806 -0.968437 -0.091628 +vn 0.225595 -0.968437 -0.106004 +vn 0.218494 -0.968437 -0.119959 +vn 0.210531 -0.968437 -0.133440 +vn 0.201737 -0.968437 -0.146397 +vn 0.192146 -0.968437 -0.158775 +vn 0.181798 -0.968437 -0.170528 +vn 0.170732 -0.968437 -0.181604 +vn 0.158992 -0.968437 -0.191966 +vn 0.146624 -0.968437 -0.201571 +vn 0.133678 -0.968436 -0.210383 +vn 0.120204 -0.968437 -0.218360 +vn 0.106256 -0.968437 -0.225475 +vn 0.091889 -0.968437 -0.231703 +vn 0.077159 -0.968437 -0.237016 +vn 0.062125 -0.968437 -0.241393 +vn 0.046845 -0.968437 -0.244818 +vn 0.031380 -0.968437 -0.247277 +vn 0.015792 -0.968436 -0.248760 +vn 0.000141 -0.968437 -0.249260 +vn -0.015510 -0.968436 -0.248778 +vn -0.031100 -0.968437 -0.247312 +vn -0.046568 -0.968437 -0.244871 +vn -0.061851 -0.968437 -0.241463 +vn -0.076891 -0.968437 -0.237103 +vn -0.091627 -0.968437 -0.231806 +vn -0.106001 -0.968437 -0.225596 +vn -0.119957 -0.968437 -0.218496 +vn -0.133440 -0.968437 -0.210532 +vn -0.146396 -0.968437 -0.201738 +vn -0.158774 -0.968437 -0.192149 +vn -0.170525 -0.968437 -0.181800 +vn -0.181604 -0.968437 -0.170734 +vn -0.191966 -0.968437 -0.158993 +vn -0.201571 -0.968437 -0.146626 +vn -0.210380 -0.968437 -0.133680 +vn -0.218358 -0.968437 -0.120205 +vn -0.225475 -0.968437 -0.106258 +vn -0.231702 -0.968437 -0.091889 +vn -0.237015 -0.968437 -0.077160 +vn -0.241392 -0.968437 -0.062126 +vn -0.244816 -0.968437 -0.046843 +vn -0.247274 -0.968437 -0.031384 +vn -0.248757 -0.968437 -0.015796 +vn -0.249258 -0.968437 -0.000141 +vn -0.248775 -0.968437 0.015510 +vn -0.247310 -0.968437 0.031097 +vn -0.244869 -0.968437 0.046564 +vn -0.241462 -0.968437 0.061851 +vn -0.237102 -0.968437 0.076891 +vn -0.231806 -0.968437 0.091628 +vn -0.225595 -0.968437 0.106005 +vn -0.218494 -0.968437 0.119960 +vn -0.210531 -0.968437 0.133440 +vn -0.201736 -0.968437 0.146398 +vn -0.192146 -0.968437 0.158776 +vn -0.181797 -0.968437 0.170529 +vn -0.170731 -0.968437 0.181607 +vn -0.158991 -0.968437 0.191965 +vn -0.146624 -0.968437 0.201570 +vn -0.133678 -0.968437 0.210383 +vn -0.120204 -0.968437 0.218360 +vn -0.106256 -0.968437 0.225474 +vn -0.091889 -0.968437 0.231703 +vn -0.077159 -0.968437 0.237015 +vn -0.062124 -0.968437 0.241392 +vn -0.046844 -0.968437 0.244816 +vn -0.031380 -0.968437 0.247276 +vn -0.015792 -0.968437 0.248758 +vn -0.000141 -0.968437 0.249259 +vn 0.015510 -0.968437 0.248776 +vn 0.031100 -0.968437 0.247312 +vn 0.046568 -0.968437 0.244871 +vn 0.061851 -0.968437 0.241464 +vn 0.076890 -0.968437 0.237103 +vn 0.091627 -0.968437 0.231807 +vn 0.106001 -0.968437 0.225597 +vn 0.119957 -0.968437 0.218495 +vn 0.133440 -0.968437 0.210532 +vn 0.146396 -0.968437 0.201737 +vn 0.158774 -0.968437 0.192149 +vn 0.170526 -0.968437 0.181799 +vn 0.181604 -0.968437 0.170734 +vn 0.191966 -0.968437 0.158995 +vn 0.201571 -0.968437 0.146626 +vn 0.210379 -0.968437 0.133681 +vn 0.218358 -0.968437 0.120204 +vn 0.225475 -0.968437 0.106258 +vn 0.231702 -0.968437 0.091889 +vn 0.237014 -0.968437 0.077158 +vn 0.241391 -0.968437 0.062127 +vn 0.244816 -0.968437 0.046848 +vn 0.247274 -0.968437 0.031381 +vn 0.248757 -0.968437 0.015792 +vn 0.249258 -0.968437 0.000138 +vn 0.279002 -0.960133 -0.017399 +vn 0.277359 -0.960133 -0.034885 +vn 0.274621 -0.960133 -0.052230 +vn 0.270800 -0.960133 -0.069372 +vn 0.265910 -0.960133 -0.086238 +vn 0.259970 -0.960133 -0.102762 +vn 0.253004 -0.960133 -0.118886 +vn 0.245040 -0.960133 -0.134539 +vn 0.236109 -0.960133 -0.149659 +vn 0.226246 -0.960133 -0.164188 +vn 0.215491 -0.960134 -0.178065 +vn 0.203884 -0.960133 -0.191247 +vn 0.191473 -0.960133 -0.203674 +vn 0.178306 -0.960133 -0.215292 +vn 0.164436 -0.960133 -0.226063 +vn 0.149917 -0.960133 -0.235943 +vn 0.134806 -0.960133 -0.244890 +vn 0.119163 -0.960133 -0.252871 +vn 0.103050 -0.960133 -0.259856 +vn 0.086530 -0.960133 -0.265813 +vn 0.069669 -0.960134 -0.270721 +vn 0.052533 -0.960134 -0.274561 +vn 0.035189 -0.960133 -0.277319 +vn 0.017707 -0.960133 -0.278981 +vn 0.000154 -0.960134 -0.279541 +vn -0.017399 -0.960133 -0.279001 +vn -0.034883 -0.960133 -0.277357 +vn -0.052230 -0.960133 -0.274621 +vn -0.069370 -0.960133 -0.270799 +vn -0.086237 -0.960134 -0.265907 +vn -0.102764 -0.960133 -0.259969 +vn -0.118885 -0.960133 -0.253002 +vn -0.134537 -0.960133 -0.245040 +vn -0.149657 -0.960133 -0.236107 +vn -0.164187 -0.960133 -0.226246 +vn -0.178070 -0.960133 -0.215490 +vn -0.191249 -0.960133 -0.203884 +vn -0.203673 -0.960133 -0.191473 +vn -0.215294 -0.960133 -0.178305 +vn -0.226065 -0.960133 -0.164435 +vn -0.235944 -0.960133 -0.149915 +vn -0.244892 -0.960133 -0.134805 +vn -0.252874 -0.960133 -0.119163 +vn -0.259857 -0.960133 -0.103046 +vn -0.265815 -0.960133 -0.086526 +vn -0.270723 -0.960133 -0.069669 +vn -0.274563 -0.960133 -0.052533 +vn -0.277320 -0.960133 -0.035190 +vn -0.278982 -0.960133 -0.017707 +vn -0.279544 -0.960133 -0.000154 +vn -0.279002 -0.960133 0.017399 +vn -0.277359 -0.960133 0.034883 +vn -0.274621 -0.960133 0.052232 +vn -0.270800 -0.960133 0.069372 +vn -0.265910 -0.960133 0.086236 +vn -0.259970 -0.960133 0.102762 +vn -0.253004 -0.960133 0.118883 +vn -0.245040 -0.960133 0.134538 +vn -0.236109 -0.960133 0.149659 +vn -0.226246 -0.960133 0.164187 +vn -0.215490 -0.960134 0.178066 +vn -0.203884 -0.960133 0.191247 +vn -0.191473 -0.960133 0.203673 +vn -0.178307 -0.960134 0.215291 +vn -0.164437 -0.960133 0.226063 +vn -0.149917 -0.960133 0.235944 +vn -0.134806 -0.960133 0.244891 +vn -0.119163 -0.960133 0.252873 +vn -0.103050 -0.960133 0.259856 +vn -0.086530 -0.960133 0.265813 +vn -0.069669 -0.960134 0.270721 +vn -0.052533 -0.960134 0.274561 +vn -0.035189 -0.960134 0.277316 +vn -0.017706 -0.960134 0.278980 +vn -0.000154 -0.960133 0.279542 +vn 0.017399 -0.960133 0.279001 +vn 0.034883 -0.960133 0.277359 +vn 0.052230 -0.960133 0.274620 +vn 0.069371 -0.960134 0.270797 +vn 0.086238 -0.960134 0.265907 +vn 0.102764 -0.960133 0.259969 +vn 0.118885 -0.960133 0.253003 +vn 0.134537 -0.960133 0.245038 +vn 0.149657 -0.960133 0.236108 +vn 0.164187 -0.960133 0.226245 +vn 0.178069 -0.960133 0.215488 +vn 0.191249 -0.960133 0.203883 +vn 0.203673 -0.960133 0.191473 +vn 0.215294 -0.960133 0.178305 +vn 0.226065 -0.960133 0.164434 +vn 0.235944 -0.960133 0.149916 +vn 0.244892 -0.960133 0.134806 +vn 0.252874 -0.960133 0.119163 +vn 0.259857 -0.960133 0.103048 +vn 0.265815 -0.960133 0.086528 +vn 0.270723 -0.960133 0.069667 +vn 0.274563 -0.960133 0.052529 +vn 0.277320 -0.960133 0.035187 +vn 0.278982 -0.960133 0.017707 +vn 0.279544 -0.960133 0.000153 +vn 0.308953 -0.950882 -0.019270 +vn 0.307134 -0.950882 -0.038632 +vn 0.304102 -0.950882 -0.057840 +vn 0.299870 -0.950882 -0.076822 +vn 0.294454 -0.950882 -0.095500 +vn 0.287877 -0.950882 -0.113802 +vn 0.280163 -0.950882 -0.131653 +vn 0.271344 -0.950882 -0.148986 +vn 0.261454 -0.950882 -0.165727 +vn 0.250532 -0.950882 -0.181817 +vn 0.238621 -0.950882 -0.197189 +vn 0.225768 -0.950882 -0.211784 +vn 0.212025 -0.950882 -0.225542 +vn 0.197445 -0.950882 -0.238411 +vn 0.182085 -0.950882 -0.250338 +vn 0.166007 -0.950882 -0.261276 +vn 0.149274 -0.950882 -0.271185 +vn 0.131951 -0.950882 -0.280023 +vn 0.114108 -0.950882 -0.287756 +vn 0.095815 -0.950882 -0.294352 +vn 0.077144 -0.950882 -0.299788 +vn 0.058167 -0.950881 -0.304041 +vn 0.038962 -0.950882 -0.307093 +vn 0.019602 -0.950882 -0.308933 +vn 0.000166 -0.950882 -0.309555 +vn -0.019271 -0.950881 -0.308955 +vn -0.038633 -0.950881 -0.307135 +vn -0.057842 -0.950882 -0.304102 +vn -0.076822 -0.950882 -0.299870 +vn -0.095500 -0.950882 -0.294455 +vn -0.113800 -0.950881 -0.287879 +vn -0.131651 -0.950882 -0.280164 +vn -0.148984 -0.950882 -0.271344 +vn -0.165727 -0.950882 -0.261454 +vn -0.181817 -0.950882 -0.250533 +vn -0.197189 -0.950882 -0.238621 +vn -0.211783 -0.950881 -0.225770 +vn -0.225542 -0.950882 -0.212025 +vn -0.238410 -0.950882 -0.197445 +vn -0.250337 -0.950882 -0.182085 +vn -0.261276 -0.950882 -0.166006 +vn -0.271184 -0.950882 -0.149274 +vn -0.280022 -0.950882 -0.131954 +vn -0.287755 -0.950882 -0.114110 +vn -0.294352 -0.950882 -0.095816 +vn -0.299787 -0.950882 -0.077145 +vn -0.304040 -0.950882 -0.058168 +vn -0.307092 -0.950882 -0.038962 +vn -0.308932 -0.950882 -0.019603 +vn -0.309554 -0.950882 -0.000165 +vn -0.308953 -0.950882 0.019274 +vn -0.307134 -0.950882 0.038634 +vn -0.304102 -0.950882 0.057843 +vn -0.299870 -0.950882 0.076824 +vn -0.294454 -0.950882 0.095501 +vn -0.287877 -0.950882 0.113802 +vn -0.280163 -0.950882 0.131651 +vn -0.271344 -0.950882 0.148985 +vn -0.261454 -0.950882 0.165727 +vn -0.250532 -0.950882 0.181818 +vn -0.238621 -0.950881 0.197192 +vn -0.225768 -0.950881 0.211786 +vn -0.212025 -0.950882 0.225542 +vn -0.197444 -0.950882 0.238411 +vn -0.182085 -0.950882 0.250338 +vn -0.166007 -0.950882 0.261275 +vn -0.149274 -0.950882 0.271184 +vn -0.131951 -0.950882 0.280023 +vn -0.114108 -0.950882 0.287755 +vn -0.095815 -0.950882 0.294353 +vn -0.077143 -0.950882 0.299788 +vn -0.058167 -0.950882 0.304041 +vn -0.038962 -0.950882 0.307091 +vn -0.019602 -0.950881 0.308934 +vn -0.000166 -0.950882 0.309554 +vn 0.019272 -0.950882 0.308954 +vn 0.038633 -0.950881 0.307135 +vn 0.057841 -0.950882 0.304101 +vn 0.076822 -0.950882 0.299870 +vn 0.095500 -0.950882 0.294455 +vn 0.113800 -0.950881 0.287879 +vn 0.131652 -0.950881 0.280165 +vn 0.148984 -0.950882 0.271345 +vn 0.165728 -0.950882 0.261455 +vn 0.181817 -0.950881 0.250533 +vn 0.197189 -0.950882 0.238622 +vn 0.211783 -0.950882 0.225770 +vn 0.225541 -0.950882 0.212025 +vn 0.238410 -0.950882 0.197445 +vn 0.250337 -0.950882 0.182085 +vn 0.261276 -0.950882 0.166008 +vn 0.271184 -0.950882 0.149275 +vn 0.280022 -0.950882 0.131953 +vn 0.287755 -0.950882 0.114109 +vn 0.294352 -0.950882 0.095815 +vn 0.299787 -0.950882 0.077144 +vn 0.304040 -0.950882 0.058170 +vn 0.307092 -0.950882 0.038962 +vn 0.308933 -0.950882 0.019600 +vn 0.309554 -0.950882 0.000165 +vn 0.338601 -0.940693 -0.021130 +vn 0.336607 -0.940693 -0.042346 +vn 0.333283 -0.940693 -0.063398 +vn 0.328645 -0.940693 -0.084200 +vn 0.322710 -0.940693 -0.104669 +vn 0.315500 -0.940693 -0.124725 +vn 0.307046 -0.940693 -0.144290 +vn 0.297380 -0.940693 -0.163286 +vn 0.286541 -0.940693 -0.181633 +vn 0.274570 -0.940693 -0.199270 +vn 0.261516 -0.940692 -0.216119 +vn 0.247430 -0.940692 -0.232112 +vn 0.232368 -0.940693 -0.247189 +vn 0.216388 -0.940692 -0.261293 +vn 0.199554 -0.940693 -0.274364 +vn 0.181933 -0.940693 -0.286353 +vn 0.163594 -0.940693 -0.297211 +vn 0.144609 -0.940692 -0.306897 +vn 0.125054 -0.940693 -0.315371 +vn 0.105005 -0.940693 -0.322601 +vn 0.084541 -0.940693 -0.328558 +vn 0.063744 -0.940693 -0.333217 +vn 0.042695 -0.940693 -0.336562 +vn 0.021478 -0.940692 -0.338580 +vn 0.000176 -0.940692 -0.339261 +vn -0.021126 -0.940693 -0.338602 +vn -0.042346 -0.940692 -0.336608 +vn -0.063398 -0.940693 -0.333283 +vn -0.084200 -0.940693 -0.328646 +vn -0.104670 -0.940692 -0.322711 +vn -0.124726 -0.940693 -0.315501 +vn -0.144290 -0.940692 -0.307048 +vn -0.163285 -0.940693 -0.297381 +vn -0.181636 -0.940692 -0.286542 +vn -0.199269 -0.940692 -0.274571 +vn -0.216116 -0.940693 -0.261516 +vn -0.232111 -0.940693 -0.247431 +vn -0.247189 -0.940693 -0.232368 +vn -0.261292 -0.940693 -0.216388 +vn -0.274363 -0.940693 -0.199554 +vn -0.286352 -0.940693 -0.181934 +vn -0.297210 -0.940693 -0.163595 +vn -0.306896 -0.940693 -0.144610 +vn -0.315371 -0.940693 -0.125053 +vn -0.322601 -0.940693 -0.105003 +vn -0.328557 -0.940693 -0.084541 +vn -0.333217 -0.940693 -0.063743 +vn -0.336562 -0.940693 -0.042695 +vn -0.338579 -0.940693 -0.021478 +vn -0.339259 -0.940693 -0.000176 +vn -0.338601 -0.940693 0.021127 +vn -0.336607 -0.940693 0.042347 +vn -0.333284 -0.940693 0.063399 +vn -0.328645 -0.940693 0.084201 +vn -0.322710 -0.940693 0.104670 +vn -0.315500 -0.940693 0.124727 +vn -0.307046 -0.940693 0.144290 +vn -0.297380 -0.940693 0.163286 +vn -0.286541 -0.940693 0.181634 +vn -0.274570 -0.940692 0.199271 +vn -0.261516 -0.940693 0.216117 +vn -0.247430 -0.940693 0.232111 +vn -0.232368 -0.940693 0.247189 +vn -0.216388 -0.940692 0.261293 +vn -0.199554 -0.940693 0.274364 +vn -0.181933 -0.940692 0.286354 +vn -0.163594 -0.940692 0.297212 +vn -0.144609 -0.940693 0.306897 +vn -0.125054 -0.940693 0.315371 +vn -0.105005 -0.940692 0.322602 +vn -0.084541 -0.940692 0.328558 +vn -0.063744 -0.940692 0.333218 +vn -0.042696 -0.940693 0.336563 +vn -0.021478 -0.940692 0.338581 +vn -0.000176 -0.940692 0.339261 +vn 0.021126 -0.940693 0.338601 +vn 0.042346 -0.940692 0.336608 +vn 0.063398 -0.940693 0.333284 +vn 0.084200 -0.940693 0.328646 +vn 0.104670 -0.940693 0.322710 +vn 0.124726 -0.940693 0.315501 +vn 0.144290 -0.940693 0.307047 +vn 0.163285 -0.940693 0.297381 +vn 0.181636 -0.940693 0.286541 +vn 0.199269 -0.940693 0.274570 +vn 0.216116 -0.940693 0.261516 +vn 0.232111 -0.940693 0.247430 +vn 0.247189 -0.940693 0.232368 +vn 0.261292 -0.940693 0.216389 +vn 0.274363 -0.940693 0.199554 +vn 0.286352 -0.940693 0.181933 +vn 0.297211 -0.940693 0.163594 +vn 0.306896 -0.940693 0.144610 +vn 0.315371 -0.940693 0.125054 +vn 0.322600 -0.940693 0.105004 +vn 0.328557 -0.940693 0.084541 +vn 0.333217 -0.940693 0.063744 +vn 0.336562 -0.940693 0.042696 +vn 0.338579 -0.940693 0.021479 +vn 0.339259 -0.940693 0.000174 +vn 0.367915 -0.929576 -0.022962 +vn 0.365747 -0.929576 -0.046017 +vn 0.362136 -0.929576 -0.068892 +vn 0.357095 -0.929576 -0.091494 +vn 0.350646 -0.929576 -0.113737 +vn 0.342812 -0.929576 -0.135530 +vn 0.333626 -0.929576 -0.156788 +vn 0.323123 -0.929576 -0.177425 +vn 0.311344 -0.929576 -0.197365 +vn 0.298337 -0.929576 -0.216526 +vn 0.284153 -0.929577 -0.234829 +vn 0.268847 -0.929576 -0.252208 +vn 0.252480 -0.929576 -0.268593 +vn 0.235117 -0.929576 -0.283915 +vn 0.216825 -0.929577 -0.298118 +vn 0.197679 -0.929577 -0.311144 +vn 0.177752 -0.929576 -0.322943 +vn 0.157123 -0.929576 -0.333466 +vn 0.135875 -0.929577 -0.342673 +vn 0.114089 -0.929576 -0.350530 +vn 0.091854 -0.929576 -0.357002 +vn 0.069257 -0.929576 -0.362066 +vn 0.046386 -0.929577 -0.365699 +vn 0.023332 -0.929576 -0.367890 +vn 0.000185 -0.929576 -0.368630 +vn -0.022961 -0.929576 -0.367914 +vn -0.046017 -0.929577 -0.365745 +vn -0.068892 -0.929577 -0.362134 +vn -0.091495 -0.929576 -0.357094 +vn -0.113737 -0.929577 -0.350643 +vn -0.135529 -0.929577 -0.342810 +vn -0.156787 -0.929576 -0.333625 +vn -0.177426 -0.929576 -0.323122 +vn -0.197365 -0.929577 -0.311343 +vn -0.216525 -0.929577 -0.298336 +vn -0.234831 -0.929577 -0.284151 +vn -0.252209 -0.929576 -0.268846 +vn -0.268593 -0.929576 -0.252479 +vn -0.283916 -0.929576 -0.235116 +vn -0.298119 -0.929576 -0.216825 +vn -0.311146 -0.929576 -0.197677 +vn -0.322944 -0.929576 -0.177751 +vn -0.333468 -0.929576 -0.157123 +vn -0.342676 -0.929576 -0.135874 +vn -0.350530 -0.929576 -0.114089 +vn -0.357003 -0.929576 -0.091855 +vn -0.362066 -0.929576 -0.069256 +vn -0.365700 -0.929576 -0.046386 +vn -0.367891 -0.929576 -0.023332 +vn -0.368630 -0.929576 -0.000186 +vn -0.367915 -0.929576 0.022960 +vn -0.365747 -0.929576 0.046017 +vn -0.362136 -0.929576 0.068892 +vn -0.357095 -0.929576 0.091495 +vn -0.350646 -0.929576 0.113735 +vn -0.342812 -0.929576 0.135528 +vn -0.333626 -0.929576 0.156786 +vn -0.323122 -0.929576 0.177426 +vn -0.311344 -0.929576 0.197366 +vn -0.298337 -0.929576 0.216526 +vn -0.284153 -0.929576 0.234830 +vn -0.268847 -0.929576 0.252209 +vn -0.252480 -0.929576 0.268592 +vn -0.235117 -0.929576 0.283916 +vn -0.216825 -0.929576 0.298118 +vn -0.197679 -0.929577 0.311143 +vn -0.177752 -0.929576 0.322943 +vn -0.157123 -0.929577 0.333466 +vn -0.135875 -0.929577 0.342673 +vn -0.114090 -0.929576 0.350530 +vn -0.091854 -0.929577 0.357001 +vn -0.069257 -0.929577 0.362065 +vn -0.046386 -0.929577 0.365698 +vn -0.023332 -0.929576 0.367891 +vn -0.000186 -0.929576 0.368630 +vn 0.022961 -0.929577 0.367913 +vn 0.046017 -0.929577 0.365745 +vn 0.068892 -0.929577 0.362133 +vn 0.091495 -0.929577 0.357094 +vn 0.113736 -0.929577 0.350644 +vn 0.135529 -0.929577 0.342811 +vn 0.156787 -0.929576 0.333625 +vn 0.177427 -0.929576 0.323122 +vn 0.197365 -0.929576 0.311344 +vn 0.216525 -0.929576 0.298336 +vn 0.234831 -0.929576 0.284152 +vn 0.252209 -0.929577 0.268845 +vn 0.268593 -0.929577 0.252478 +vn 0.283916 -0.929576 0.235116 +vn 0.298119 -0.929576 0.216825 +vn 0.311145 -0.929576 0.197677 +vn 0.322944 -0.929576 0.177750 +vn 0.333467 -0.929576 0.157121 +vn 0.342675 -0.929576 0.135874 +vn 0.350531 -0.929576 0.114089 +vn 0.357003 -0.929576 0.091855 +vn 0.362066 -0.929576 0.069256 +vn 0.365700 -0.929576 0.046386 +vn 0.367891 -0.929576 0.023333 +vn 0.368630 -0.929576 0.000185 +vn 0.396864 -0.917543 -0.024777 +vn 0.394525 -0.917543 -0.049644 +vn 0.390629 -0.917543 -0.074319 +vn 0.385192 -0.917543 -0.098701 +vn 0.378234 -0.917543 -0.122691 +vn 0.369784 -0.917543 -0.146199 +vn 0.359875 -0.917543 -0.169130 +vn 0.348544 -0.917543 -0.191392 +vn 0.335839 -0.917543 -0.212900 +vn 0.321809 -0.917544 -0.233566 +vn 0.306508 -0.917543 -0.253313 +vn 0.289997 -0.917543 -0.272061 +vn 0.272342 -0.917543 -0.289733 +vn 0.253612 -0.917543 -0.306260 +vn 0.233881 -0.917543 -0.321582 +vn 0.213228 -0.917543 -0.335632 +vn 0.191733 -0.917543 -0.348357 +vn 0.169480 -0.917543 -0.359710 +vn 0.146560 -0.917543 -0.369641 +vn 0.123061 -0.917543 -0.378114 +vn 0.099076 -0.917544 -0.385094 +vn 0.074700 -0.917543 -0.390557 +vn 0.050029 -0.917543 -0.394476 +vn 0.025161 -0.917544 -0.396838 +vn 0.000194 -0.917544 -0.397635 +vn -0.024774 -0.917543 -0.396863 +vn -0.049645 -0.917544 -0.394524 +vn -0.074320 -0.917542 -0.390631 +vn -0.098700 -0.917543 -0.385193 +vn -0.122692 -0.917544 -0.378234 +vn -0.146200 -0.917543 -0.369783 +vn -0.169130 -0.917543 -0.359875 +vn -0.191393 -0.917543 -0.348544 +vn -0.212901 -0.917543 -0.335838 +vn -0.233568 -0.917543 -0.321809 +vn -0.253314 -0.917543 -0.306507 +vn -0.272059 -0.917543 -0.289997 +vn -0.289732 -0.917543 -0.272342 +vn -0.306260 -0.917543 -0.253612 +vn -0.321581 -0.917543 -0.233881 +vn -0.335631 -0.917543 -0.213228 +vn -0.348358 -0.917543 -0.191733 +vn -0.359710 -0.917543 -0.169482 +vn -0.369641 -0.917543 -0.146560 +vn -0.378115 -0.917543 -0.123060 +vn -0.385096 -0.917543 -0.099075 +vn -0.390557 -0.917543 -0.074700 +vn -0.394476 -0.917543 -0.050028 +vn -0.396839 -0.917543 -0.025162 +vn -0.397636 -0.917543 -0.000193 +vn -0.396863 -0.917543 0.024776 +vn -0.394525 -0.917543 0.049644 +vn -0.390629 -0.917543 0.074321 +vn -0.385192 -0.917543 0.098701 +vn -0.378234 -0.917543 0.122693 +vn -0.369784 -0.917543 0.146199 +vn -0.359874 -0.917543 0.169130 +vn -0.348544 -0.917543 0.191394 +vn -0.335839 -0.917543 0.212900 +vn -0.321808 -0.917544 0.233566 +vn -0.306507 -0.917544 0.253312 +vn -0.289997 -0.917543 0.272059 +vn -0.272342 -0.917543 0.289732 +vn -0.253612 -0.917544 0.306258 +vn -0.233881 -0.917544 0.321579 +vn -0.213228 -0.917544 0.335630 +vn -0.191732 -0.917543 0.348359 +vn -0.169480 -0.917543 0.359710 +vn -0.146560 -0.917544 0.369640 +vn -0.123060 -0.917543 0.378114 +vn -0.099076 -0.917544 0.385095 +vn -0.074700 -0.917543 0.390556 +vn -0.050029 -0.917543 0.394476 +vn -0.025161 -0.917543 0.396839 +vn -0.000194 -0.917543 0.397636 +vn 0.024775 -0.917543 0.396863 +vn 0.049645 -0.917543 0.394525 +vn 0.074319 -0.917543 0.390629 +vn 0.098701 -0.917543 0.385191 +vn 0.122692 -0.917543 0.378234 +vn 0.146199 -0.917544 0.369783 +vn 0.169130 -0.917544 0.359873 +vn 0.191393 -0.917544 0.348542 +vn 0.212901 -0.917544 0.335838 +vn 0.233568 -0.917543 0.321809 +vn 0.253313 -0.917543 0.306507 +vn 0.272059 -0.917543 0.289998 +vn 0.289731 -0.917544 0.272341 +vn 0.306260 -0.917544 0.253611 +vn 0.321580 -0.917543 0.233882 +vn 0.335632 -0.917543 0.213227 +vn 0.348358 -0.917543 0.191733 +vn 0.359709 -0.917543 0.169481 +vn 0.369641 -0.917543 0.146560 +vn 0.378114 -0.917543 0.123060 +vn 0.385095 -0.917543 0.099075 +vn 0.390557 -0.917543 0.074700 +vn 0.394476 -0.917544 0.050029 +vn 0.396839 -0.917543 0.025162 +vn 0.397636 -0.917543 0.000191 +vn 0.425420 -0.904606 -0.026566 +vn 0.422913 -0.904606 -0.053224 +vn 0.418736 -0.904606 -0.079675 +vn 0.412907 -0.904606 -0.105811 +vn 0.405449 -0.904606 -0.131529 +vn 0.396390 -0.904606 -0.156729 +vn 0.385767 -0.904606 -0.181308 +vn 0.373621 -0.904606 -0.205170 +vn 0.360001 -0.904606 -0.228225 +vn 0.344960 -0.904606 -0.250380 +vn 0.328558 -0.904606 -0.271547 +vn 0.310859 -0.904606 -0.291640 +vn 0.291934 -0.904606 -0.310584 +vn 0.271856 -0.904607 -0.328301 +vn 0.250705 -0.904606 -0.344725 +vn 0.228564 -0.904606 -0.359786 +vn 0.205522 -0.904606 -0.373427 +vn 0.181669 -0.904606 -0.385596 +vn 0.157099 -0.904606 -0.396242 +vn 0.131909 -0.904606 -0.405325 +vn 0.106198 -0.904607 -0.412806 +vn 0.080068 -0.904606 -0.418661 +vn 0.053622 -0.904606 -0.422863 +vn 0.026965 -0.904606 -0.425395 +vn 0.000201 -0.904606 -0.426249 +vn -0.026564 -0.904606 -0.425420 +vn -0.053224 -0.904606 -0.422913 +vn -0.079674 -0.904605 -0.418738 +vn -0.105809 -0.904606 -0.412906 +vn -0.131527 -0.904606 -0.405449 +vn -0.156726 -0.904606 -0.396390 +vn -0.181306 -0.904606 -0.385767 +vn -0.205171 -0.904606 -0.373621 +vn -0.228226 -0.904606 -0.360001 +vn -0.250380 -0.904606 -0.344961 +vn -0.271546 -0.904606 -0.328559 +vn -0.291641 -0.904606 -0.310860 +vn -0.310585 -0.904606 -0.291933 +vn -0.328303 -0.904606 -0.271856 +vn -0.344725 -0.904606 -0.250705 +vn -0.359786 -0.904606 -0.228565 +vn -0.373428 -0.904606 -0.205522 +vn -0.385596 -0.904606 -0.181670 +vn -0.396242 -0.904606 -0.157099 +vn -0.405325 -0.904606 -0.131909 +vn -0.412808 -0.904606 -0.106199 +vn -0.418661 -0.904606 -0.080069 +vn -0.422862 -0.904606 -0.053622 +vn -0.425395 -0.904606 -0.026965 +vn -0.426249 -0.904606 -0.000200 +vn -0.425420 -0.904606 0.026563 +vn -0.422913 -0.904606 0.053224 +vn -0.418736 -0.904606 0.079675 +vn -0.412907 -0.904606 0.105809 +vn -0.405449 -0.904606 0.131529 +vn -0.396390 -0.904606 0.156727 +vn -0.385767 -0.904606 0.181308 +vn -0.373621 -0.904606 0.205172 +vn -0.360001 -0.904606 0.228226 +vn -0.344960 -0.904606 0.250379 +vn -0.328558 -0.904606 0.271546 +vn -0.310859 -0.904606 0.291641 +vn -0.291933 -0.904606 0.310585 +vn -0.271855 -0.904607 0.328301 +vn -0.250704 -0.904606 0.344725 +vn -0.228564 -0.904606 0.359787 +vn -0.205523 -0.904606 0.373428 +vn -0.181669 -0.904607 0.385594 +vn -0.157099 -0.904606 0.396242 +vn -0.131909 -0.904606 0.405324 +vn -0.106198 -0.904606 0.412808 +vn -0.080068 -0.904606 0.418662 +vn -0.053622 -0.904606 0.422862 +vn -0.026965 -0.904606 0.425395 +vn -0.000201 -0.904606 0.426248 +vn 0.026564 -0.904606 0.425420 +vn 0.053224 -0.904606 0.422913 +vn 0.079674 -0.904606 0.418737 +vn 0.105809 -0.904606 0.412907 +vn 0.131527 -0.904606 0.405448 +vn 0.156726 -0.904606 0.396390 +vn 0.181306 -0.904606 0.385766 +vn 0.205171 -0.904606 0.373621 +vn 0.228226 -0.904606 0.360001 +vn 0.250381 -0.904606 0.344961 +vn 0.271546 -0.904606 0.328559 +vn 0.291641 -0.904606 0.310860 +vn 0.310584 -0.904606 0.291933 +vn 0.328302 -0.904606 0.271856 +vn 0.344725 -0.904606 0.250705 +vn 0.359786 -0.904606 0.228566 +vn 0.373427 -0.904606 0.205523 +vn 0.385596 -0.904606 0.181669 +vn 0.396242 -0.904606 0.157099 +vn 0.405324 -0.904606 0.131909 +vn 0.412807 -0.904606 0.106199 +vn 0.418661 -0.904606 0.080069 +vn 0.422862 -0.904606 0.053622 +vn 0.425395 -0.904606 0.026965 +vn 0.426248 -0.904606 0.000199 +vn 0.453558 -0.890776 -0.028331 +vn 0.450884 -0.890777 -0.056751 +vn 0.446432 -0.890776 -0.084950 +vn 0.440216 -0.890776 -0.112814 +vn 0.432263 -0.890776 -0.140235 +vn 0.422605 -0.890776 -0.167099 +vn 0.411279 -0.890776 -0.193306 +vn 0.398330 -0.890776 -0.218748 +vn 0.383808 -0.890776 -0.243328 +vn 0.367773 -0.890776 -0.266947 +vn 0.350285 -0.890776 -0.289514 +vn 0.331415 -0.890777 -0.310936 +vn 0.311237 -0.890776 -0.331134 +vn 0.289831 -0.890776 -0.350022 +vn 0.267281 -0.890776 -0.367532 +vn 0.243677 -0.890776 -0.383588 +vn 0.219110 -0.890776 -0.398131 +vn 0.193679 -0.890776 -0.411104 +vn 0.167483 -0.890776 -0.422453 +vn 0.140626 -0.890775 -0.432138 +vn 0.113215 -0.890776 -0.440115 +vn 0.085357 -0.890776 -0.446355 +vn 0.057162 -0.890776 -0.450834 +vn 0.028741 -0.890776 -0.453533 +vn 0.000207 -0.890776 -0.454443 +vn -0.028329 -0.890776 -0.453559 +vn -0.056752 -0.890776 -0.450886 +vn -0.084951 -0.890776 -0.446433 +vn -0.112815 -0.890776 -0.440216 +vn -0.140234 -0.890776 -0.432265 +vn -0.167100 -0.890776 -0.422606 +vn -0.193305 -0.890776 -0.411281 +vn -0.218748 -0.890776 -0.398331 +vn -0.243328 -0.890776 -0.383809 +vn -0.266947 -0.890776 -0.367774 +vn -0.289513 -0.890776 -0.350287 +vn -0.310937 -0.890776 -0.331416 +vn -0.331132 -0.890776 -0.311238 +vn -0.350022 -0.890776 -0.289831 +vn -0.367530 -0.890776 -0.267282 +vn -0.383587 -0.890776 -0.243677 +vn -0.398131 -0.890777 -0.219110 +vn -0.411104 -0.890776 -0.193679 +vn -0.422453 -0.890776 -0.167484 +vn -0.432136 -0.890776 -0.140626 +vn -0.440113 -0.890777 -0.113215 +vn -0.446354 -0.890776 -0.085357 +vn -0.450833 -0.890776 -0.057160 +vn -0.453532 -0.890776 -0.028741 +vn -0.454442 -0.890776 -0.000207 +vn -0.453558 -0.890777 0.028329 +vn -0.450884 -0.890776 0.056751 +vn -0.446431 -0.890776 0.084951 +vn -0.440216 -0.890776 0.112814 +vn -0.432264 -0.890776 0.140234 +vn -0.422605 -0.890777 0.167099 +vn -0.411279 -0.890776 0.193306 +vn -0.398329 -0.890776 0.218749 +vn -0.383808 -0.890776 0.243328 +vn -0.367773 -0.890776 0.266947 +vn -0.350285 -0.890776 0.289514 +vn -0.331415 -0.890776 0.310937 +vn -0.311237 -0.890776 0.331134 +vn -0.289831 -0.890776 0.350023 +vn -0.267281 -0.890776 0.367531 +vn -0.243677 -0.890776 0.383588 +vn -0.219110 -0.890776 0.398131 +vn -0.193679 -0.890776 0.411104 +vn -0.167483 -0.890776 0.422455 +vn -0.140626 -0.890776 0.432137 +vn -0.113215 -0.890776 0.440115 +vn -0.085357 -0.890776 0.446354 +vn -0.057162 -0.890776 0.450833 +vn -0.028741 -0.890776 0.453533 +vn -0.000206 -0.890776 0.454443 +vn 0.028329 -0.890776 0.453559 +vn 0.056752 -0.890776 0.450885 +vn 0.084951 -0.890776 0.446432 +vn 0.112815 -0.890776 0.440216 +vn 0.140234 -0.890776 0.432264 +vn 0.167100 -0.890776 0.422605 +vn 0.193306 -0.890776 0.411280 +vn 0.218749 -0.890776 0.398331 +vn 0.243328 -0.890776 0.383809 +vn 0.266947 -0.890776 0.367772 +vn 0.289513 -0.890776 0.350286 +vn 0.310937 -0.890776 0.331416 +vn 0.331132 -0.890776 0.311238 +vn 0.350022 -0.890776 0.289831 +vn 0.367530 -0.890776 0.267281 +vn 0.383587 -0.890776 0.243677 +vn 0.398131 -0.890777 0.219110 +vn 0.411103 -0.890776 0.193679 +vn 0.422453 -0.890776 0.167484 +vn 0.432136 -0.890777 0.140626 +vn 0.440113 -0.890777 0.113215 +vn 0.446354 -0.890777 0.085357 +vn 0.450832 -0.890777 0.057161 +vn 0.453532 -0.890776 0.028741 +vn 0.454442 -0.890776 0.000205 +vn 0.481248 -0.876069 -0.030069 +vn 0.478410 -0.876069 -0.060224 +vn 0.473685 -0.876068 -0.090146 +vn 0.467090 -0.876069 -0.119711 +vn 0.458651 -0.876069 -0.148804 +vn 0.448403 -0.876069 -0.177307 +vn 0.436385 -0.876069 -0.205114 +vn 0.422645 -0.876069 -0.232109 +vn 0.407236 -0.876069 -0.258189 +vn 0.390221 -0.876069 -0.283250 +vn 0.371665 -0.876068 -0.307196 +vn 0.351643 -0.876069 -0.329925 +vn 0.330233 -0.876068 -0.351355 +vn 0.307520 -0.876069 -0.371396 +vn 0.283592 -0.876069 -0.389973 +vn 0.258546 -0.876069 -0.407010 +vn 0.232480 -0.876069 -0.422441 +vn 0.205496 -0.876069 -0.436205 +vn 0.177701 -0.876069 -0.448248 +vn 0.149205 -0.876069 -0.458520 +vn 0.120120 -0.876069 -0.466984 +vn 0.090560 -0.876069 -0.473606 +vn 0.060644 -0.876069 -0.478358 +vn 0.030488 -0.876069 -0.481221 +vn 0.000211 -0.876069 -0.482186 +vn -0.030066 -0.876069 -0.481248 +vn -0.060225 -0.876069 -0.478410 +vn -0.090146 -0.876069 -0.473684 +vn -0.119710 -0.876069 -0.467090 +vn -0.148803 -0.876068 -0.458652 +vn -0.177309 -0.876069 -0.448403 +vn -0.205114 -0.876069 -0.436386 +vn -0.232110 -0.876069 -0.422644 +vn -0.258190 -0.876069 -0.407236 +vn -0.283251 -0.876069 -0.390220 +vn -0.307194 -0.876069 -0.371666 +vn -0.329926 -0.876069 -0.351642 +vn -0.351354 -0.876069 -0.330233 +vn -0.371397 -0.876068 -0.307521 +vn -0.389973 -0.876069 -0.283593 +vn -0.407010 -0.876069 -0.258546 +vn -0.422441 -0.876069 -0.232479 +vn -0.436205 -0.876069 -0.205495 +vn -0.448248 -0.876069 -0.177701 +vn -0.458522 -0.876068 -0.149204 +vn -0.466985 -0.876069 -0.120118 +vn -0.473606 -0.876069 -0.090560 +vn -0.478358 -0.876069 -0.060643 +vn -0.481221 -0.876069 -0.030488 +vn -0.482187 -0.876069 -0.000210 +vn -0.481248 -0.876069 0.030066 +vn -0.478411 -0.876069 0.060225 +vn -0.473685 -0.876069 0.090145 +vn -0.467090 -0.876069 0.119709 +vn -0.458652 -0.876069 0.148803 +vn -0.448403 -0.876069 0.177307 +vn -0.436385 -0.876068 0.205115 +vn -0.422645 -0.876069 0.232109 +vn -0.407237 -0.876069 0.258188 +vn -0.390221 -0.876069 0.283250 +vn -0.371665 -0.876069 0.307195 +vn -0.351643 -0.876069 0.329924 +vn -0.330233 -0.876069 0.351354 +vn -0.307520 -0.876069 0.371396 +vn -0.283592 -0.876069 0.389973 +vn -0.258546 -0.876069 0.407009 +vn -0.232479 -0.876069 0.422442 +vn -0.205495 -0.876069 0.436206 +vn -0.177701 -0.876069 0.448247 +vn -0.149205 -0.876069 0.458520 +vn -0.120120 -0.876069 0.466985 +vn -0.090560 -0.876069 0.473605 +vn -0.060644 -0.876069 0.478357 +vn -0.030488 -0.876069 0.481221 +vn -0.000211 -0.876069 0.482186 +vn 0.030066 -0.876069 0.481247 +vn 0.060224 -0.876069 0.478410 +vn 0.090146 -0.876069 0.473684 +vn 0.119710 -0.876069 0.467090 +vn 0.148803 -0.876069 0.458651 +vn 0.177308 -0.876069 0.448402 +vn 0.205114 -0.876069 0.436385 +vn 0.232110 -0.876069 0.422644 +vn 0.258190 -0.876069 0.407235 +vn 0.283251 -0.876069 0.390220 +vn 0.307195 -0.876069 0.371665 +vn 0.329925 -0.876069 0.351643 +vn 0.351354 -0.876069 0.330233 +vn 0.371396 -0.876069 0.307519 +vn 0.389973 -0.876069 0.283593 +vn 0.407010 -0.876069 0.258546 +vn 0.422442 -0.876069 0.232479 +vn 0.436206 -0.876069 0.205496 +vn 0.448248 -0.876069 0.177702 +vn 0.458522 -0.876069 0.149204 +vn 0.466985 -0.876069 0.120119 +vn 0.473606 -0.876069 0.090559 +vn 0.478358 -0.876069 0.060643 +vn 0.481221 -0.876069 0.030487 +vn 0.482186 -0.876069 0.000208 +vn 0.508463 -0.860497 -0.031777 +vn 0.505465 -0.860497 -0.063638 +vn 0.500472 -0.860497 -0.095251 +vn 0.493503 -0.860497 -0.126488 +vn 0.484588 -0.860497 -0.157226 +vn 0.473759 -0.860497 -0.187344 +vn 0.461061 -0.860496 -0.216723 +vn 0.446543 -0.860497 -0.245245 +vn 0.430263 -0.860497 -0.272798 +vn 0.412285 -0.860497 -0.299276 +vn 0.392679 -0.860497 -0.324575 +vn 0.371524 -0.860497 -0.348589 +vn 0.348903 -0.860497 -0.371230 +vn 0.324905 -0.860496 -0.392406 +vn 0.299624 -0.860497 -0.412032 +vn 0.273162 -0.860497 -0.430032 +vn 0.245621 -0.860497 -0.446336 +vn 0.217110 -0.860497 -0.460878 +vn 0.187743 -0.860497 -0.473601 +vn 0.157635 -0.860497 -0.484454 +vn 0.126905 -0.860497 -0.493397 +vn 0.095674 -0.860497 -0.500392 +vn 0.064065 -0.860497 -0.505411 +vn 0.032204 -0.860497 -0.508436 +vn 0.000214 -0.860497 -0.509455 +vn -0.031775 -0.860497 -0.508464 +vn -0.063638 -0.860497 -0.505465 +vn -0.095251 -0.860497 -0.500472 +vn -0.126488 -0.860497 -0.493504 +vn -0.157226 -0.860497 -0.484588 +vn -0.187343 -0.860497 -0.473759 +vn -0.216721 -0.860497 -0.461061 +vn -0.245244 -0.860497 -0.446543 +vn -0.272799 -0.860497 -0.430263 +vn -0.299276 -0.860497 -0.412285 +vn -0.324573 -0.860497 -0.392680 +vn -0.348590 -0.860497 -0.371523 +vn -0.371230 -0.860497 -0.348903 +vn -0.392405 -0.860497 -0.324905 +vn -0.412032 -0.860497 -0.299624 +vn -0.430033 -0.860497 -0.273161 +vn -0.446336 -0.860497 -0.245620 +vn -0.460878 -0.860497 -0.217110 +vn -0.473601 -0.860497 -0.187743 +vn -0.484455 -0.860497 -0.157635 +vn -0.493397 -0.860497 -0.126904 +vn -0.500391 -0.860497 -0.095674 +vn -0.505411 -0.860497 -0.064064 +vn -0.508437 -0.860497 -0.032203 +vn -0.509456 -0.860497 -0.000215 +vn -0.508464 -0.860497 0.031775 +vn -0.505465 -0.860497 0.063639 +vn -0.500472 -0.860497 0.095251 +vn -0.493504 -0.860497 0.126488 +vn -0.484587 -0.860497 0.157226 +vn -0.473759 -0.860497 0.187344 +vn -0.461061 -0.860497 0.216721 +vn -0.446543 -0.860497 0.245244 +vn -0.430263 -0.860497 0.272798 +vn -0.412285 -0.860497 0.299276 +vn -0.392679 -0.860496 0.324575 +vn -0.371524 -0.860497 0.348590 +vn -0.348903 -0.860497 0.371230 +vn -0.324905 -0.860497 0.392406 +vn -0.299624 -0.860497 0.412031 +vn -0.273162 -0.860497 0.430032 +vn -0.245620 -0.860497 0.446336 +vn -0.217110 -0.860497 0.460877 +vn -0.187743 -0.860497 0.473601 +vn -0.157635 -0.860497 0.484454 +vn -0.126905 -0.860497 0.493397 +vn -0.095673 -0.860497 0.500391 +vn -0.064064 -0.860497 0.505412 +vn -0.032203 -0.860497 0.508436 +vn -0.000214 -0.860497 0.509455 +vn 0.031774 -0.860497 0.508464 +vn 0.063638 -0.860497 0.505466 +vn 0.095252 -0.860497 0.500472 +vn 0.126488 -0.860497 0.493504 +vn 0.157226 -0.860497 0.484588 +vn 0.187343 -0.860497 0.473759 +vn 0.216721 -0.860497 0.461060 +vn 0.245244 -0.860497 0.446543 +vn 0.272799 -0.860497 0.430263 +vn 0.299277 -0.860497 0.412285 +vn 0.324574 -0.860497 0.392679 +vn 0.348590 -0.860497 0.371523 +vn 0.371230 -0.860497 0.348903 +vn 0.392405 -0.860497 0.324905 +vn 0.412032 -0.860497 0.299625 +vn 0.430033 -0.860497 0.273162 +vn 0.446336 -0.860497 0.245620 +vn 0.460878 -0.860497 0.217110 +vn 0.473600 -0.860497 0.187743 +vn 0.484455 -0.860497 0.157634 +vn 0.493396 -0.860497 0.126904 +vn 0.500391 -0.860497 0.095673 +vn 0.505412 -0.860497 0.064064 +vn 0.508436 -0.860497 0.032203 +vn 0.509455 -0.860497 0.000212 +vn 0.535177 -0.844077 -0.033455 +vn 0.532021 -0.844077 -0.066989 +vn 0.526765 -0.844077 -0.100264 +vn 0.519429 -0.844077 -0.133143 +vn 0.510044 -0.844077 -0.165495 +vn 0.498647 -0.844077 -0.197196 +vn 0.485281 -0.844077 -0.228114 +vn 0.470000 -0.844077 -0.258135 +vn 0.452864 -0.844077 -0.287137 +vn 0.433941 -0.844077 -0.315007 +vn 0.413305 -0.844077 -0.341633 +vn 0.391038 -0.844077 -0.366910 +vn 0.367228 -0.844077 -0.390740 +vn 0.341968 -0.844077 -0.413028 +vn 0.315359 -0.844078 -0.433684 +vn 0.287506 -0.844077 -0.452630 +vn 0.258518 -0.844077 -0.469790 +vn 0.228509 -0.844077 -0.485095 +vn 0.197599 -0.844077 -0.498486 +vn 0.165909 -0.844078 -0.509909 +vn 0.133564 -0.844078 -0.519320 +vn 0.100692 -0.844077 -0.526683 +vn 0.067422 -0.844077 -0.531966 +vn 0.033887 -0.844077 -0.535150 +vn 0.000217 -0.844077 -0.536223 +vn -0.033453 -0.844077 -0.535178 +vn -0.066991 -0.844077 -0.532021 +vn -0.100265 -0.844078 -0.526764 +vn -0.133142 -0.844078 -0.519429 +vn -0.165495 -0.844077 -0.510045 +vn -0.197195 -0.844077 -0.498646 +vn -0.228116 -0.844077 -0.485281 +vn -0.258136 -0.844077 -0.470000 +vn -0.287139 -0.844077 -0.452863 +vn -0.315007 -0.844077 -0.433940 +vn -0.341633 -0.844077 -0.413304 +vn -0.366911 -0.844077 -0.391037 +vn -0.390740 -0.844077 -0.367228 +vn -0.413028 -0.844077 -0.341968 +vn -0.433685 -0.844077 -0.315359 +vn -0.452632 -0.844077 -0.287505 +vn -0.469791 -0.844077 -0.258517 +vn -0.485095 -0.844077 -0.228509 +vn -0.498487 -0.844077 -0.197598 +vn -0.509910 -0.844077 -0.165908 +vn -0.519321 -0.844077 -0.133564 +vn -0.526683 -0.844077 -0.100691 +vn -0.531966 -0.844077 -0.067421 +vn -0.535151 -0.844077 -0.033887 +vn -0.536222 -0.844077 -0.000218 +vn -0.535178 -0.844077 0.033453 +vn -0.532021 -0.844077 0.066989 +vn -0.526765 -0.844077 0.100264 +vn -0.519430 -0.844077 0.133141 +vn -0.510045 -0.844077 0.165494 +vn -0.498647 -0.844077 0.197195 +vn -0.485281 -0.844077 0.228116 +vn -0.469999 -0.844077 0.258137 +vn -0.452864 -0.844077 0.287138 +vn -0.433941 -0.844077 0.315007 +vn -0.413305 -0.844077 0.341634 +vn -0.391038 -0.844077 0.366910 +vn -0.367228 -0.844077 0.390740 +vn -0.341968 -0.844077 0.413028 +vn -0.315359 -0.844077 0.433684 +vn -0.287506 -0.844077 0.452630 +vn -0.258517 -0.844077 0.469790 +vn -0.228509 -0.844078 0.485095 +vn -0.197598 -0.844077 0.498487 +vn -0.165908 -0.844078 0.509909 +vn -0.133564 -0.844077 0.519321 +vn -0.100692 -0.844077 0.526683 +vn -0.067422 -0.844077 0.531966 +vn -0.033887 -0.844077 0.535150 +vn -0.000218 -0.844077 0.536222 +vn 0.033453 -0.844077 0.535177 +vn 0.066990 -0.844078 0.532020 +vn 0.100264 -0.844078 0.526763 +vn 0.133142 -0.844077 0.519429 +vn 0.165495 -0.844077 0.510044 +vn 0.197194 -0.844077 0.498646 +vn 0.228115 -0.844077 0.485281 +vn 0.258137 -0.844077 0.469999 +vn 0.287139 -0.844077 0.452863 +vn 0.315008 -0.844077 0.433940 +vn 0.341633 -0.844077 0.413304 +vn 0.366911 -0.844077 0.391037 +vn 0.390740 -0.844077 0.367228 +vn 0.413028 -0.844077 0.341968 +vn 0.433685 -0.844077 0.315359 +vn 0.452631 -0.844077 0.287505 +vn 0.469790 -0.844077 0.258517 +vn 0.485096 -0.844077 0.228509 +vn 0.498486 -0.844077 0.197598 +vn 0.509910 -0.844077 0.165908 +vn 0.519322 -0.844077 0.133564 +vn 0.526683 -0.844077 0.100692 +vn 0.531967 -0.844077 0.067421 +vn 0.535150 -0.844077 0.033887 +vn 0.536222 -0.844077 0.000215 +vn 0.561363 -0.826825 -0.035101 +vn 0.558052 -0.826825 -0.070276 +vn 0.552538 -0.826825 -0.105179 +vn 0.544843 -0.826825 -0.139666 +vn 0.534998 -0.826825 -0.173602 +vn 0.523042 -0.826825 -0.206853 +vn 0.509022 -0.826825 -0.239284 +vn 0.492993 -0.826825 -0.270775 +vn 0.475017 -0.826825 -0.301196 +vn 0.455168 -0.826825 -0.330428 +vn 0.433522 -0.826825 -0.358357 +vn 0.410165 -0.826825 -0.384870 +vn 0.385190 -0.826825 -0.409865 +vn 0.358694 -0.826825 -0.433243 +vn 0.330783 -0.826825 -0.454911 +vn 0.301566 -0.826824 -0.474784 +vn 0.271159 -0.826824 -0.492782 +vn 0.239682 -0.826825 -0.508835 +vn 0.207259 -0.826825 -0.522881 +vn 0.174018 -0.826825 -0.534863 +vn 0.140090 -0.826824 -0.544735 +vn 0.105610 -0.826824 -0.552456 +vn 0.070712 -0.826825 -0.557997 +vn 0.035536 -0.826824 -0.561337 +vn 0.000220 -0.826824 -0.562461 +vn -0.035099 -0.826824 -0.561364 +vn -0.070277 -0.826825 -0.558052 +vn -0.105179 -0.826825 -0.552537 +vn -0.139665 -0.826825 -0.544844 +vn -0.173601 -0.826824 -0.534999 +vn -0.206851 -0.826825 -0.523042 +vn -0.239285 -0.826824 -0.509023 +vn -0.270775 -0.826825 -0.492993 +vn -0.301196 -0.826825 -0.475018 +vn -0.330427 -0.826825 -0.455168 +vn -0.358356 -0.826825 -0.433522 +vn -0.384870 -0.826825 -0.410166 +vn -0.409865 -0.826825 -0.385191 +vn -0.433243 -0.826825 -0.358694 +vn -0.454911 -0.826825 -0.330783 +vn -0.474783 -0.826825 -0.301566 +vn -0.492781 -0.826825 -0.271159 +vn -0.508835 -0.826825 -0.239682 +vn -0.522880 -0.826825 -0.207259 +vn -0.534863 -0.826825 -0.174019 +vn -0.544734 -0.826825 -0.140091 +vn -0.552455 -0.826825 -0.105610 +vn -0.557997 -0.826825 -0.070712 +vn -0.561336 -0.826825 -0.035536 +vn -0.562459 -0.826825 -0.000219 +vn -0.561363 -0.826825 0.035098 +vn -0.558051 -0.826825 0.070276 +vn -0.552538 -0.826825 0.105179 +vn -0.544843 -0.826825 0.139666 +vn -0.534998 -0.826825 0.173601 +vn -0.523042 -0.826825 0.206853 +vn -0.509022 -0.826825 0.239286 +vn -0.492992 -0.826825 0.270774 +vn -0.475017 -0.826825 0.301197 +vn -0.455168 -0.826825 0.330428 +vn -0.433522 -0.826825 0.358357 +vn -0.410165 -0.826825 0.384870 +vn -0.385189 -0.826825 0.409865 +vn -0.358694 -0.826825 0.433243 +vn -0.330782 -0.826825 0.454911 +vn -0.301565 -0.826825 0.474783 +vn -0.271158 -0.826824 0.492783 +vn -0.239681 -0.826826 0.508834 +vn -0.207258 -0.826825 0.522881 +vn -0.174018 -0.826825 0.534862 +vn -0.140090 -0.826824 0.544735 +vn -0.105610 -0.826825 0.552456 +vn -0.070713 -0.826826 0.557996 +vn -0.035536 -0.826825 0.561336 +vn -0.000219 -0.826824 0.562460 +vn 0.035098 -0.826825 0.561364 +vn 0.070277 -0.826826 0.558051 +vn 0.105179 -0.826825 0.552538 +vn 0.139665 -0.826825 0.544843 +vn 0.173601 -0.826825 0.534999 +vn 0.206851 -0.826825 0.523042 +vn 0.239285 -0.826825 0.509022 +vn 0.270775 -0.826825 0.492992 +vn 0.301196 -0.826825 0.475018 +vn 0.330428 -0.826825 0.455168 +vn 0.358356 -0.826825 0.433522 +vn 0.384870 -0.826825 0.410165 +vn 0.409865 -0.826825 0.385191 +vn 0.433243 -0.826825 0.358694 +vn 0.454910 -0.826825 0.330783 +vn 0.474782 -0.826825 0.301566 +vn 0.492781 -0.826825 0.271158 +vn 0.508835 -0.826825 0.239682 +vn 0.522881 -0.826825 0.207259 +vn 0.534863 -0.826825 0.174018 +vn 0.544733 -0.826825 0.140091 +vn 0.552455 -0.826825 0.105609 +vn 0.557996 -0.826825 0.070712 +vn 0.561336 -0.826825 0.035536 +vn 0.562459 -0.826825 0.000217 +vn 0.586995 -0.808758 -0.036713 +vn 0.583532 -0.808758 -0.073495 +vn 0.577766 -0.808758 -0.109990 +vn 0.569720 -0.808757 -0.146052 +vn 0.559424 -0.808758 -0.181537 +vn 0.546922 -0.808757 -0.216305 +vn 0.532260 -0.808758 -0.250220 +vn 0.515499 -0.808757 -0.283148 +vn 0.496703 -0.808757 -0.314957 +vn 0.475947 -0.808757 -0.345524 +vn 0.453312 -0.808758 -0.374726 +vn 0.428888 -0.808758 -0.402450 +vn 0.402771 -0.808757 -0.428588 +vn 0.375065 -0.808757 -0.453031 +vn 0.345879 -0.808757 -0.475688 +vn 0.315328 -0.808758 -0.496467 +vn 0.283532 -0.808758 -0.515287 +vn 0.250618 -0.808758 -0.532072 +vn 0.216714 -0.808757 -0.546760 +vn 0.181955 -0.808758 -0.559288 +vn 0.146478 -0.808757 -0.569611 +vn 0.110423 -0.808757 -0.577683 +vn 0.073932 -0.808757 -0.583478 +vn 0.037150 -0.808757 -0.586968 +vn 0.000220 -0.808757 -0.588142 +vn -0.036710 -0.808758 -0.586995 +vn -0.073495 -0.808758 -0.583532 +vn -0.109991 -0.808758 -0.577765 +vn -0.146052 -0.808758 -0.569719 +vn -0.181537 -0.808757 -0.559425 +vn -0.216306 -0.808758 -0.546921 +vn -0.250220 -0.808758 -0.532260 +vn -0.283147 -0.808757 -0.515499 +vn -0.314957 -0.808757 -0.496703 +vn -0.345523 -0.808757 -0.475947 +vn -0.374726 -0.808757 -0.453312 +vn -0.402451 -0.808758 -0.428887 +vn -0.428586 -0.808758 -0.402771 +vn -0.453032 -0.808758 -0.375065 +vn -0.475688 -0.808758 -0.345879 +vn -0.496467 -0.808757 -0.315328 +vn -0.515287 -0.808757 -0.283533 +vn -0.532073 -0.808758 -0.250618 +vn -0.546760 -0.808758 -0.216714 +vn -0.559289 -0.808757 -0.181955 +vn -0.569610 -0.808758 -0.146478 +vn -0.577683 -0.808758 -0.110423 +vn -0.583478 -0.808757 -0.073933 +vn -0.586967 -0.808758 -0.037149 +vn -0.588142 -0.808758 -0.000220 +vn -0.586995 -0.808758 0.036710 +vn -0.583532 -0.808758 0.073495 +vn -0.577766 -0.808758 0.109990 +vn -0.569719 -0.808757 0.146052 +vn -0.559424 -0.808757 0.181537 +vn -0.546922 -0.808757 0.216305 +vn -0.532261 -0.808757 0.250219 +vn -0.515499 -0.808758 0.283145 +vn -0.496702 -0.808757 0.314958 +vn -0.475946 -0.808758 0.345523 +vn -0.453312 -0.808758 0.374726 +vn -0.428888 -0.808758 0.402450 +vn -0.402771 -0.808757 0.428587 +vn -0.375066 -0.808757 0.453031 +vn -0.345879 -0.808758 0.475687 +vn -0.315328 -0.808757 0.496467 +vn -0.283533 -0.808758 0.515287 +vn -0.250618 -0.808758 0.532073 +vn -0.216715 -0.808757 0.546760 +vn -0.181955 -0.808758 0.559288 +vn -0.146478 -0.808757 0.569611 +vn -0.110423 -0.808758 0.577683 +vn -0.073932 -0.808758 0.583476 +vn -0.037149 -0.808758 0.586968 +vn -0.000220 -0.808758 0.588142 +vn 0.036710 -0.808758 0.586995 +vn 0.073495 -0.808758 0.583532 +vn 0.109991 -0.808758 0.577765 +vn 0.146052 -0.808758 0.569719 +vn 0.181537 -0.808758 0.559423 +vn 0.216305 -0.808758 0.546921 +vn 0.250220 -0.808757 0.532261 +vn 0.283147 -0.808758 0.515499 +vn 0.314956 -0.808758 0.496703 +vn 0.345523 -0.808758 0.475946 +vn 0.374726 -0.808758 0.453311 +vn 0.402451 -0.808758 0.428887 +vn 0.428586 -0.808757 0.402772 +vn 0.453031 -0.808758 0.375065 +vn 0.475687 -0.808758 0.345879 +vn 0.496467 -0.808758 0.315328 +vn 0.515287 -0.808758 0.283532 +vn 0.532073 -0.808758 0.250618 +vn 0.546759 -0.808758 0.216714 +vn 0.559288 -0.808758 0.181955 +vn 0.569610 -0.808757 0.146478 +vn 0.577683 -0.808758 0.110422 +vn 0.583476 -0.808758 0.073931 +vn 0.586968 -0.808758 0.037149 +vn 0.588142 -0.808758 0.000217 +vn 0.612049 -0.789892 -0.038288 +vn 0.608437 -0.789893 -0.076641 +vn 0.602424 -0.789893 -0.114694 +vn 0.594034 -0.789892 -0.152295 +vn 0.583299 -0.789893 -0.189293 +vn 0.570262 -0.789892 -0.225546 +vn 0.554975 -0.789892 -0.260909 +vn 0.537497 -0.789892 -0.295240 +vn 0.517899 -0.789892 -0.328407 +vn 0.496255 -0.789893 -0.360278 +vn 0.472655 -0.789893 -0.390727 +vn 0.447188 -0.789892 -0.419635 +vn 0.419956 -0.789892 -0.446885 +vn 0.391067 -0.789892 -0.472373 +vn 0.360634 -0.789892 -0.495997 +vn 0.328779 -0.789892 -0.517662 +vn 0.295626 -0.789893 -0.537284 +vn 0.261307 -0.789892 -0.554788 +vn 0.225956 -0.789893 -0.570100 +vn 0.189712 -0.789893 -0.583163 +vn 0.152722 -0.789893 -0.593924 +vn 0.115127 -0.789893 -0.602341 +vn 0.077078 -0.789892 -0.608382 +vn 0.038726 -0.789893 -0.612021 +vn 0.000220 -0.789892 -0.613246 +vn -0.038286 -0.789893 -0.612048 +vn -0.076642 -0.789892 -0.608437 +vn -0.114694 -0.789893 -0.602424 +vn -0.152295 -0.789893 -0.594033 +vn -0.189294 -0.789893 -0.583299 +vn -0.225546 -0.789893 -0.570261 +vn -0.260908 -0.789893 -0.554975 +vn -0.295241 -0.789893 -0.537497 +vn -0.328408 -0.789893 -0.517897 +vn -0.360278 -0.789893 -0.496255 +vn -0.390728 -0.789892 -0.472654 +vn -0.419635 -0.789893 -0.447187 +vn -0.446886 -0.789892 -0.419956 +vn -0.472374 -0.789892 -0.391067 +vn -0.495997 -0.789892 -0.360634 +vn -0.517662 -0.789893 -0.328778 +vn -0.537285 -0.789892 -0.295626 +vn -0.554787 -0.789892 -0.261306 +vn -0.570100 -0.789892 -0.225955 +vn -0.583163 -0.789893 -0.189712 +vn -0.593924 -0.789893 -0.152721 +vn -0.602342 -0.789893 -0.115127 +vn -0.608383 -0.789892 -0.077078 +vn -0.612021 -0.789893 -0.038726 +vn -0.613246 -0.789892 -0.000220 +vn -0.612049 -0.789892 0.038286 +vn -0.608437 -0.789893 0.076642 +vn -0.602425 -0.789892 0.114695 +vn -0.594034 -0.789892 0.152295 +vn -0.583299 -0.789893 0.189293 +vn -0.570263 -0.789892 0.225546 +vn -0.554975 -0.789892 0.260908 +vn -0.537497 -0.789893 0.295240 +vn -0.517898 -0.789892 0.328408 +vn -0.496256 -0.789892 0.360278 +vn -0.472654 -0.789893 0.390727 +vn -0.447188 -0.789892 0.419635 +vn -0.419956 -0.789892 0.446886 +vn -0.391067 -0.789892 0.472374 +vn -0.360634 -0.789892 0.495997 +vn -0.328778 -0.789892 0.517663 +vn -0.295626 -0.789893 0.537284 +vn -0.261306 -0.789892 0.554787 +vn -0.225955 -0.789893 0.570100 +vn -0.189712 -0.789893 0.583163 +vn -0.152721 -0.789893 0.593924 +vn -0.115127 -0.789893 0.602341 +vn -0.077078 -0.789893 0.608382 +vn -0.038726 -0.789893 0.612021 +vn -0.000220 -0.789893 0.613245 +vn 0.038286 -0.789893 0.612049 +vn 0.076642 -0.789892 0.608437 +vn 0.114694 -0.789893 0.602424 +vn 0.152295 -0.789892 0.594034 +vn 0.189294 -0.789893 0.583298 +vn 0.225547 -0.789893 0.570261 +vn 0.260909 -0.789892 0.554975 +vn 0.295241 -0.789893 0.537496 +vn 0.328408 -0.789893 0.517897 +vn 0.360279 -0.789893 0.496255 +vn 0.390728 -0.789892 0.472655 +vn 0.419635 -0.789893 0.447186 +vn 0.446885 -0.789892 0.419956 +vn 0.472374 -0.789893 0.391066 +vn 0.495996 -0.789893 0.360634 +vn 0.517663 -0.789892 0.328779 +vn 0.537285 -0.789893 0.295625 +vn 0.554787 -0.789893 0.261306 +vn 0.570100 -0.789892 0.225955 +vn 0.583163 -0.789893 0.189712 +vn 0.593925 -0.789892 0.152721 +vn 0.602341 -0.789893 0.115127 +vn 0.608382 -0.789893 0.077078 +vn 0.612021 -0.789893 0.038725 +vn 0.613245 -0.789893 0.000217 +vn 0.636499 -0.770248 -0.039828 +vn 0.632743 -0.770248 -0.079713 +vn 0.626489 -0.770248 -0.119286 +vn 0.617762 -0.770248 -0.158389 +vn 0.606598 -0.770248 -0.196866 +vn 0.593040 -0.770248 -0.234567 +vn 0.577141 -0.770248 -0.271340 +vn 0.558965 -0.770248 -0.307044 +vn 0.538583 -0.770248 -0.341536 +vn 0.516074 -0.770249 -0.374679 +vn 0.491530 -0.770248 -0.406345 +vn 0.465045 -0.770248 -0.436407 +vn 0.436726 -0.770248 -0.464745 +vn 0.406682 -0.770248 -0.491252 +vn 0.375034 -0.770248 -0.515817 +vn 0.341905 -0.770248 -0.538348 +vn 0.307427 -0.770248 -0.558754 +vn 0.271736 -0.770247 -0.576956 +vn 0.234973 -0.770248 -0.592879 +vn 0.197283 -0.770248 -0.606464 +vn 0.158813 -0.770248 -0.617654 +vn 0.119717 -0.770248 -0.626407 +vn 0.080148 -0.770248 -0.632688 +vn 0.040263 -0.770247 -0.636473 +vn 0.000219 -0.770248 -0.637745 +vn -0.039826 -0.770248 -0.636500 +vn -0.079713 -0.770247 -0.632744 +vn -0.119286 -0.770248 -0.626489 +vn -0.158388 -0.770249 -0.617762 +vn -0.196865 -0.770249 -0.606598 +vn -0.234566 -0.770249 -0.593040 +vn -0.271340 -0.770248 -0.577142 +vn -0.307044 -0.770248 -0.558965 +vn -0.341535 -0.770248 -0.538582 +vn -0.374679 -0.770248 -0.516075 +vn -0.406344 -0.770248 -0.491530 +vn -0.436405 -0.770249 -0.465046 +vn -0.464745 -0.770249 -0.436726 +vn -0.491251 -0.770248 -0.406683 +vn -0.515817 -0.770248 -0.375035 +vn -0.538347 -0.770249 -0.341905 +vn -0.558754 -0.770248 -0.307427 +vn -0.576955 -0.770248 -0.271737 +vn -0.592878 -0.770249 -0.234973 +vn -0.606462 -0.770249 -0.197282 +vn -0.617653 -0.770249 -0.158812 +vn -0.626407 -0.770248 -0.119717 +vn -0.632688 -0.770248 -0.080148 +vn -0.636472 -0.770248 -0.040264 +vn -0.637744 -0.770248 -0.000218 +vn -0.636499 -0.770248 0.039825 +vn -0.632742 -0.770249 0.079713 +vn -0.626489 -0.770248 0.119286 +vn -0.617762 -0.770249 0.158389 +vn -0.606598 -0.770249 0.196865 +vn -0.593040 -0.770248 0.234567 +vn -0.577141 -0.770249 0.271339 +vn -0.558965 -0.770248 0.307045 +vn -0.538583 -0.770248 0.341536 +vn -0.516075 -0.770248 0.374679 +vn -0.491530 -0.770248 0.406345 +vn -0.465045 -0.770248 0.436407 +vn -0.436725 -0.770249 0.464745 +vn -0.406682 -0.770248 0.491251 +vn -0.375034 -0.770249 0.515817 +vn -0.341905 -0.770248 0.538348 +vn -0.307427 -0.770249 0.558754 +vn -0.271736 -0.770248 0.576955 +vn -0.234973 -0.770248 0.592879 +vn -0.197282 -0.770248 0.606463 +vn -0.158813 -0.770249 0.617653 +vn -0.119717 -0.770248 0.626407 +vn -0.080148 -0.770248 0.632688 +vn -0.040263 -0.770248 0.636472 +vn -0.000219 -0.770248 0.637745 +vn 0.039825 -0.770248 0.636499 +vn 0.079713 -0.770249 0.632742 +vn 0.119286 -0.770248 0.626489 +vn 0.158388 -0.770249 0.617762 +vn 0.196865 -0.770248 0.606598 +vn 0.234566 -0.770249 0.593040 +vn 0.271340 -0.770248 0.577142 +vn 0.307043 -0.770248 0.558965 +vn 0.341535 -0.770248 0.538582 +vn 0.374678 -0.770249 0.516075 +vn 0.406344 -0.770248 0.491531 +vn 0.436406 -0.770249 0.465046 +vn 0.464745 -0.770248 0.436727 +vn 0.491251 -0.770248 0.406683 +vn 0.515816 -0.770248 0.375035 +vn 0.538347 -0.770249 0.341905 +vn 0.558754 -0.770248 0.307427 +vn 0.576954 -0.770249 0.271736 +vn 0.592878 -0.770249 0.234972 +vn 0.606462 -0.770249 0.197281 +vn 0.617653 -0.770249 0.158813 +vn 0.626406 -0.770249 0.119717 +vn 0.632687 -0.770249 0.080148 +vn 0.636472 -0.770249 0.040263 +vn 0.637744 -0.770248 0.000216 +vn 0.660320 -0.749847 -0.041328 +vn 0.656422 -0.749847 -0.082706 +vn 0.649933 -0.749847 -0.123760 +vn 0.640880 -0.749847 -0.164325 +vn 0.629297 -0.749847 -0.204242 +vn 0.615231 -0.749847 -0.243353 +vn 0.598736 -0.749847 -0.281503 +vn 0.579879 -0.749847 -0.318544 +vn 0.558734 -0.749847 -0.354325 +vn 0.535383 -0.749847 -0.388708 +vn 0.509919 -0.749847 -0.421559 +vn 0.482443 -0.749847 -0.452746 +vn 0.453063 -0.749847 -0.482144 +vn 0.421895 -0.749847 -0.509641 +vn 0.389061 -0.749847 -0.535127 +vn 0.354692 -0.749847 -0.558501 +vn 0.318924 -0.749847 -0.579670 +vn 0.281897 -0.749846 -0.598552 +vn 0.243757 -0.749847 -0.615071 +vn 0.204656 -0.749847 -0.629162 +vn 0.164747 -0.749847 -0.640772 +vn 0.124187 -0.749847 -0.649851 +vn 0.083138 -0.749847 -0.656367 +vn 0.041761 -0.749847 -0.660293 +vn 0.000217 -0.749847 -0.661612 +vn -0.041326 -0.749847 -0.660319 +vn -0.082705 -0.749847 -0.656422 +vn -0.123760 -0.749847 -0.649933 +vn -0.164326 -0.749847 -0.640879 +vn -0.204243 -0.749847 -0.629296 +vn -0.243354 -0.749847 -0.615230 +vn -0.281504 -0.749848 -0.598735 +vn -0.318543 -0.749848 -0.579878 +vn -0.354326 -0.749847 -0.558733 +vn -0.388709 -0.749847 -0.535383 +vn -0.421559 -0.749847 -0.509919 +vn -0.452745 -0.749848 -0.482442 +vn -0.482145 -0.749847 -0.453063 +vn -0.509642 -0.749847 -0.421895 +vn -0.535127 -0.749847 -0.389062 +vn -0.558501 -0.749847 -0.354692 +vn -0.579670 -0.749847 -0.318923 +vn -0.598551 -0.749847 -0.281897 +vn -0.615071 -0.749847 -0.243758 +vn -0.629162 -0.749847 -0.204656 +vn -0.640771 -0.749847 -0.164747 +vn -0.649852 -0.749847 -0.124188 +vn -0.656367 -0.749847 -0.083138 +vn -0.660292 -0.749847 -0.041760 +vn -0.661611 -0.749847 -0.000218 +vn -0.660319 -0.749848 0.041325 +vn -0.656422 -0.749847 0.082706 +vn -0.649933 -0.749847 0.123760 +vn -0.640880 -0.749847 0.164325 +vn -0.629297 -0.749847 0.204242 +vn -0.615231 -0.749847 0.243353 +vn -0.598736 -0.749847 0.281503 +vn -0.579879 -0.749847 0.318544 +vn -0.558734 -0.749847 0.354325 +vn -0.535383 -0.749847 0.388708 +vn -0.509919 -0.749847 0.421559 +vn -0.482442 -0.749847 0.452746 +vn -0.453063 -0.749847 0.482144 +vn -0.421895 -0.749847 0.509641 +vn -0.389061 -0.749847 0.535127 +vn -0.354692 -0.749847 0.558500 +vn -0.318924 -0.749847 0.579670 +vn -0.281898 -0.749847 0.598550 +vn -0.243757 -0.749847 0.615070 +vn -0.204656 -0.749847 0.629163 +vn -0.164747 -0.749847 0.640771 +vn -0.124187 -0.749848 0.649851 +vn -0.083138 -0.749847 0.656367 +vn -0.041761 -0.749848 0.660291 +vn -0.000217 -0.749846 0.661613 +vn 0.041326 -0.749848 0.660319 +vn 0.082705 -0.749847 0.656421 +vn 0.123760 -0.749847 0.649933 +vn 0.164326 -0.749848 0.640878 +vn 0.204242 -0.749847 0.629297 +vn 0.243354 -0.749847 0.615230 +vn 0.281504 -0.749847 0.598736 +vn 0.318543 -0.749847 0.579879 +vn 0.354326 -0.749847 0.558733 +vn 0.388709 -0.749847 0.535383 +vn 0.421559 -0.749847 0.509918 +vn 0.452746 -0.749847 0.482443 +vn 0.482145 -0.749847 0.453062 +vn 0.509642 -0.749847 0.421894 +vn 0.535127 -0.749847 0.389061 +vn 0.558500 -0.749847 0.354692 +vn 0.579670 -0.749847 0.318923 +vn 0.598551 -0.749847 0.281897 +vn 0.615071 -0.749847 0.243757 +vn 0.629163 -0.749847 0.204656 +vn 0.640771 -0.749847 0.164747 +vn 0.649852 -0.749847 0.124188 +vn 0.656367 -0.749847 0.083138 +vn 0.660292 -0.749847 0.041760 +vn 0.661611 -0.749847 0.000215 +vn 0.683491 -0.728704 -0.042788 +vn 0.679455 -0.728704 -0.085618 +vn 0.672739 -0.728704 -0.128113 +vn 0.663367 -0.728705 -0.170102 +vn 0.651377 -0.728704 -0.211420 +vn 0.636816 -0.728704 -0.251903 +vn 0.619743 -0.728704 -0.291392 +vn 0.600223 -0.728705 -0.329730 +vn 0.578335 -0.728705 -0.366767 +vn 0.554165 -0.728704 -0.402358 +vn 0.527806 -0.728704 -0.436361 +vn 0.499365 -0.728704 -0.468641 +vn 0.468954 -0.728705 -0.499071 +vn 0.436691 -0.728704 -0.527532 +vn 0.402705 -0.728704 -0.553912 +vn 0.367131 -0.728704 -0.578105 +vn 0.330107 -0.728704 -0.600016 +vn 0.291780 -0.728705 -0.619559 +vn 0.252302 -0.728704 -0.636658 +vn 0.211828 -0.728705 -0.651243 +vn 0.170518 -0.728704 -0.663260 +vn 0.128535 -0.728705 -0.672657 +vn 0.086046 -0.728705 -0.679401 +vn 0.043216 -0.728704 -0.683464 +vn 0.000216 -0.728704 -0.684829 +vn -0.042787 -0.728705 -0.683490 +vn -0.085618 -0.728704 -0.679456 +vn -0.128112 -0.728703 -0.672740 +vn -0.170102 -0.728705 -0.663367 +vn -0.211419 -0.728704 -0.651377 +vn -0.251902 -0.728704 -0.636817 +vn -0.291391 -0.728705 -0.619743 +vn -0.329730 -0.728704 -0.600223 +vn -0.366768 -0.728704 -0.578335 +vn -0.402357 -0.728704 -0.554165 +vn -0.436360 -0.728704 -0.527807 +vn -0.468640 -0.728705 -0.499365 +vn -0.499071 -0.728704 -0.468955 +vn -0.527532 -0.728704 -0.436692 +vn -0.553911 -0.728704 -0.402706 +vn -0.578104 -0.728705 -0.367131 +vn -0.600016 -0.728704 -0.330107 +vn -0.619559 -0.728705 -0.291781 +vn -0.636658 -0.728704 -0.252302 +vn -0.651244 -0.728705 -0.211828 +vn -0.663260 -0.728704 -0.170519 +vn -0.672658 -0.728704 -0.128536 +vn -0.679400 -0.728705 -0.086046 +vn -0.683464 -0.728704 -0.043216 +vn -0.684829 -0.728704 -0.000216 +vn -0.683489 -0.728706 0.042786 +vn -0.679456 -0.728703 0.085618 +vn -0.672739 -0.728704 0.128112 +vn -0.663366 -0.728705 0.170101 +vn -0.651377 -0.728704 0.211419 +vn -0.636816 -0.728705 0.251902 +vn -0.619743 -0.728705 0.291391 +vn -0.600223 -0.728705 0.329729 +vn -0.578335 -0.728704 0.366768 +vn -0.554165 -0.728704 0.402358 +vn -0.527806 -0.728704 0.436360 +vn -0.499365 -0.728705 0.468641 +vn -0.468954 -0.728705 0.499071 +vn -0.436691 -0.728704 0.527533 +vn -0.402706 -0.728704 0.553912 +vn -0.367131 -0.728704 0.578105 +vn -0.330106 -0.728704 0.600017 +vn -0.291780 -0.728704 0.619560 +vn -0.252302 -0.728704 0.636658 +vn -0.211828 -0.728704 0.651245 +vn -0.170518 -0.728705 0.663259 +vn -0.128536 -0.728704 0.672658 +vn -0.086046 -0.728705 0.679401 +vn -0.043216 -0.728704 0.683464 +vn -0.000215 -0.728703 0.684830 +vn 0.042785 -0.728705 0.683490 +vn 0.085618 -0.728704 0.679456 +vn 0.128113 -0.728704 0.672739 +vn 0.170102 -0.728704 0.663367 +vn 0.211419 -0.728704 0.651377 +vn 0.251902 -0.728704 0.636817 +vn 0.291391 -0.728704 0.619743 +vn 0.329730 -0.728705 0.600223 +vn 0.366768 -0.728704 0.578335 +vn 0.402357 -0.728704 0.554165 +vn 0.436360 -0.728705 0.527806 +vn 0.468640 -0.728704 0.499366 +vn 0.499070 -0.728705 0.468954 +vn 0.527531 -0.728705 0.436692 +vn 0.553911 -0.728705 0.402706 +vn 0.578104 -0.728705 0.367131 +vn 0.600016 -0.728704 0.330107 +vn 0.619559 -0.728704 0.291781 +vn 0.636658 -0.728704 0.252303 +vn 0.651244 -0.728704 0.211829 +vn 0.663260 -0.728704 0.170518 +vn 0.672659 -0.728704 0.128536 +vn 0.679401 -0.728705 0.086046 +vn 0.683463 -0.728705 0.043216 +vn 0.684828 -0.728704 0.000213 +vn 0.705987 -0.706844 -0.044207 +vn 0.701817 -0.706845 -0.088446 +vn 0.694880 -0.706843 -0.132340 +vn 0.685199 -0.706844 -0.175710 +vn 0.672815 -0.706842 -0.218388 +vn 0.657774 -0.706844 -0.260204 +vn 0.640138 -0.706843 -0.300991 +vn 0.619975 -0.706844 -0.340591 +vn 0.597366 -0.706844 -0.378848 +vn 0.572399 -0.706843 -0.415610 +vn 0.545173 -0.706843 -0.450732 +vn 0.515796 -0.706843 -0.484074 +vn 0.484384 -0.706843 -0.515505 +vn 0.451058 -0.706844 -0.544902 +vn 0.415953 -0.706843 -0.572150 +vn 0.379207 -0.706843 -0.597139 +vn 0.340964 -0.706843 -0.619771 +vn 0.301376 -0.706844 -0.639957 +vn 0.260598 -0.706844 -0.657617 +vn 0.218791 -0.706843 -0.672683 +vn 0.176122 -0.706844 -0.685093 +vn 0.132756 -0.706844 -0.694801 +vn 0.088868 -0.706843 -0.701766 +vn 0.044628 -0.706843 -0.705961 +vn 0.000213 -0.706844 -0.707369 +vn -0.044206 -0.706844 -0.705987 +vn -0.088446 -0.706843 -0.701819 +vn -0.132339 -0.706843 -0.694881 +vn -0.175709 -0.706843 -0.685200 +vn -0.218388 -0.706844 -0.672814 +vn -0.260203 -0.706843 -0.657774 +vn -0.300991 -0.706844 -0.640138 +vn -0.340592 -0.706844 -0.619975 +vn -0.378849 -0.706843 -0.597366 +vn -0.415609 -0.706844 -0.572399 +vn -0.450731 -0.706844 -0.545173 +vn -0.484074 -0.706843 -0.515796 +vn -0.515505 -0.706844 -0.484382 +vn -0.544902 -0.706844 -0.451058 +vn -0.572150 -0.706844 -0.415952 +vn -0.597139 -0.706843 -0.379207 +vn -0.619771 -0.706843 -0.340964 +vn -0.639957 -0.706844 -0.301375 +vn -0.657618 -0.706843 -0.260598 +vn -0.672682 -0.706844 -0.218791 +vn -0.685094 -0.706844 -0.176121 +vn -0.694801 -0.706843 -0.132756 +vn -0.701766 -0.706843 -0.088867 +vn -0.705961 -0.706843 -0.044628 +vn -0.707370 -0.706843 -0.000212 +vn -0.705986 -0.706845 0.044204 +vn -0.701819 -0.706843 0.088446 +vn -0.694880 -0.706844 0.132339 +vn -0.685199 -0.706844 0.175709 +vn -0.672815 -0.706843 0.218387 +vn -0.657773 -0.706845 0.260203 +vn -0.640138 -0.706843 0.300991 +vn -0.619975 -0.706844 0.340592 +vn -0.597365 -0.706844 0.378849 +vn -0.572399 -0.706843 0.415610 +vn -0.545173 -0.706843 0.450731 +vn -0.515796 -0.706844 0.484073 +vn -0.484383 -0.706844 0.515505 +vn -0.451058 -0.706844 0.544903 +vn -0.415953 -0.706844 0.572150 +vn -0.379206 -0.706844 0.597139 +vn -0.340964 -0.706844 0.619770 +vn -0.301376 -0.706844 0.639957 +vn -0.260597 -0.706844 0.657617 +vn -0.218791 -0.706844 0.672683 +vn -0.176121 -0.706844 0.685093 +vn -0.132756 -0.706844 0.694800 +vn -0.088867 -0.706844 0.701765 +vn -0.044628 -0.706844 0.705961 +vn -0.000212 -0.706844 0.707369 +vn 0.044203 -0.706843 0.705988 +vn 0.088446 -0.706844 0.701818 +vn 0.132339 -0.706843 0.694880 +vn 0.175710 -0.706844 0.685199 +vn 0.218387 -0.706844 0.672814 +vn 0.260202 -0.706844 0.657774 +vn 0.300992 -0.706843 0.640138 +vn 0.340593 -0.706844 0.619975 +vn 0.378849 -0.706843 0.597366 +vn 0.415610 -0.706844 0.572399 +vn 0.450731 -0.706844 0.545173 +vn 0.484073 -0.706844 0.515795 +vn 0.515505 -0.706844 0.484382 +vn 0.544903 -0.706843 0.451058 +vn 0.572150 -0.706844 0.415952 +vn 0.597139 -0.706843 0.379207 +vn 0.619771 -0.706843 0.340964 +vn 0.639957 -0.706844 0.301375 +vn 0.657618 -0.706844 0.260598 +vn 0.672683 -0.706844 0.218791 +vn 0.685093 -0.706845 0.176120 +vn 0.694801 -0.706843 0.132756 +vn 0.701765 -0.706844 0.088867 +vn 0.705961 -0.706843 0.044628 +vn 0.707369 -0.706844 0.000210 +vn 0.727788 -0.684285 -0.045583 +vn 0.723490 -0.684285 -0.091188 +vn 0.716337 -0.684285 -0.136437 +vn 0.706356 -0.684286 -0.181146 +vn 0.693588 -0.684286 -0.225142 +vn 0.678082 -0.684287 -0.268248 +vn 0.659902 -0.684285 -0.310295 +vn 0.639116 -0.684286 -0.351119 +vn 0.615807 -0.684286 -0.390557 +vn 0.590069 -0.684285 -0.428453 +vn 0.562002 -0.684285 -0.464658 +vn 0.531717 -0.684285 -0.499030 +vn 0.499334 -0.684286 -0.531431 +vn 0.464979 -0.684285 -0.561737 +vn 0.428790 -0.684285 -0.589825 +vn 0.390908 -0.684285 -0.615585 +vn 0.351484 -0.684285 -0.638915 +vn 0.310672 -0.684286 -0.659724 +vn 0.268635 -0.684286 -0.677929 +vn 0.225538 -0.684285 -0.693460 +vn 0.181551 -0.684285 -0.706253 +vn 0.136846 -0.684286 -0.716259 +vn 0.091602 -0.684285 -0.723438 +vn 0.045996 -0.684285 -0.727762 +vn 0.000209 -0.684285 -0.729215 +vn -0.045580 -0.684285 -0.727788 +vn -0.091187 -0.684286 -0.723490 +vn -0.136436 -0.684285 -0.716337 +vn -0.181145 -0.684285 -0.706357 +vn -0.225142 -0.684285 -0.693589 +vn -0.268248 -0.684286 -0.678083 +vn -0.310295 -0.684285 -0.659902 +vn -0.351119 -0.684285 -0.639116 +vn -0.390557 -0.684285 -0.615808 +vn -0.428452 -0.684286 -0.590069 +vn -0.464658 -0.684285 -0.562003 +vn -0.499030 -0.684285 -0.531717 +vn -0.531431 -0.684285 -0.499334 +vn -0.561736 -0.684285 -0.464980 +vn -0.589824 -0.684285 -0.428790 +vn -0.615584 -0.684285 -0.390908 +vn -0.638915 -0.684285 -0.351485 +vn -0.659724 -0.684286 -0.310673 +vn -0.677929 -0.684285 -0.268636 +vn -0.693459 -0.684286 -0.225538 +vn -0.706253 -0.684286 -0.181550 +vn -0.716259 -0.684285 -0.136846 +vn -0.723438 -0.684285 -0.091602 +vn -0.727761 -0.684287 -0.045996 +vn -0.729214 -0.684286 -0.000208 +vn -0.727788 -0.684286 0.045580 +vn -0.723490 -0.684286 0.091188 +vn -0.716337 -0.684285 0.136437 +vn -0.706356 -0.684286 0.181146 +vn -0.693588 -0.684286 0.225141 +vn -0.678082 -0.684286 0.268248 +vn -0.659901 -0.684286 0.310296 +vn -0.639115 -0.684286 0.351120 +vn -0.615807 -0.684286 0.390557 +vn -0.590069 -0.684285 0.428454 +vn -0.562002 -0.684286 0.464658 +vn -0.531717 -0.684285 0.499029 +vn -0.499333 -0.684286 0.531431 +vn -0.464979 -0.684286 0.561736 +vn -0.428789 -0.684286 0.589824 +vn -0.390908 -0.684285 0.615585 +vn -0.351484 -0.684285 0.638915 +vn -0.310673 -0.684285 0.659724 +vn -0.268636 -0.684286 0.677929 +vn -0.225537 -0.684285 0.693460 +vn -0.181550 -0.684285 0.706253 +vn -0.136846 -0.684286 0.716258 +vn -0.091602 -0.684285 0.723438 +vn -0.045997 -0.684286 0.727762 +vn -0.000208 -0.684286 0.729214 +vn 0.045578 -0.684285 0.727789 +vn 0.091189 -0.684285 0.723490 +vn 0.136435 -0.684285 0.716337 +vn 0.181147 -0.684285 0.706357 +vn 0.225141 -0.684285 0.693588 +vn 0.268248 -0.684285 0.678083 +vn 0.310296 -0.684286 0.659901 +vn 0.351119 -0.684285 0.639116 +vn 0.390556 -0.684285 0.615808 +vn 0.428453 -0.684285 0.590069 +vn 0.464657 -0.684285 0.562003 +vn 0.499029 -0.684286 0.531717 +vn 0.531432 -0.684286 0.499333 +vn 0.561737 -0.684285 0.464979 +vn 0.589824 -0.684286 0.428789 +vn 0.615585 -0.684285 0.390909 +vn 0.638914 -0.684286 0.351485 +vn 0.659724 -0.684286 0.310673 +vn 0.677930 -0.684285 0.268636 +vn 0.693458 -0.684286 0.225538 +vn 0.706253 -0.684285 0.181550 +vn 0.716260 -0.684284 0.136846 +vn 0.723438 -0.684285 0.091601 +vn 0.727762 -0.684285 0.045996 +vn 0.729214 -0.684286 0.000205 +vn 0.748872 -0.661052 -0.046913 +vn 0.744448 -0.661053 -0.093840 +vn 0.737086 -0.661054 -0.140399 +vn 0.726817 -0.661052 -0.186405 +vn 0.713678 -0.661053 -0.231673 +vn 0.697723 -0.661053 -0.276029 +vn 0.679014 -0.661053 -0.319294 +vn 0.657626 -0.661053 -0.361300 +vn 0.633642 -0.661053 -0.401879 +vn 0.607157 -0.661053 -0.440874 +vn 0.578277 -0.661053 -0.478127 +vn 0.547113 -0.661054 -0.513493 +vn 0.513792 -0.661053 -0.546834 +vn 0.478441 -0.661053 -0.578016 +vn 0.441203 -0.661053 -0.606918 +vn 0.402223 -0.661053 -0.633424 +vn 0.361658 -0.661053 -0.657429 +vn 0.319664 -0.661053 -0.678840 +vn 0.276408 -0.661054 -0.697572 +vn 0.232062 -0.661053 -0.713552 +vn 0.186800 -0.661054 -0.726714 +vn 0.140800 -0.661054 -0.737009 +vn 0.094245 -0.661053 -0.744397 +vn 0.047318 -0.661053 -0.748846 +vn 0.000204 -0.661052 -0.750340 +vn -0.046911 -0.661053 -0.748871 +vn -0.093840 -0.661053 -0.744448 +vn -0.140400 -0.661052 -0.737087 +vn -0.186404 -0.661053 -0.726817 +vn -0.231674 -0.661053 -0.713678 +vn -0.276028 -0.661053 -0.697723 +vn -0.319294 -0.661053 -0.679014 +vn -0.361300 -0.661053 -0.657626 +vn -0.401879 -0.661053 -0.633642 +vn -0.440872 -0.661054 -0.607157 +vn -0.478127 -0.661053 -0.578277 +vn -0.513494 -0.661053 -0.547113 +vn -0.546834 -0.661053 -0.513791 +vn -0.578016 -0.661053 -0.478442 +vn -0.606918 -0.661053 -0.441203 +vn -0.633423 -0.661053 -0.402223 +vn -0.657429 -0.661053 -0.361658 +vn -0.678840 -0.661053 -0.319664 +vn -0.697572 -0.661053 -0.276408 +vn -0.713553 -0.661052 -0.232062 +vn -0.726714 -0.661054 -0.186799 +vn -0.737011 -0.661053 -0.140800 +vn -0.744397 -0.661053 -0.094245 +vn -0.748845 -0.661054 -0.047318 +vn -0.750339 -0.661053 -0.000204 +vn -0.748871 -0.661053 0.046910 +vn -0.744447 -0.661054 0.093840 +vn -0.737087 -0.661053 0.140399 +vn -0.726816 -0.661054 0.186403 +vn -0.713678 -0.661054 0.231673 +vn -0.697722 -0.661053 0.276029 +vn -0.679013 -0.661054 0.319294 +vn -0.657626 -0.661053 0.361300 +vn -0.633642 -0.661053 0.401879 +vn -0.607157 -0.661053 0.440874 +vn -0.578277 -0.661053 0.478126 +vn -0.547114 -0.661053 0.513493 +vn -0.513791 -0.661053 0.546834 +vn -0.478441 -0.661053 0.578016 +vn -0.441203 -0.661053 0.606917 +vn -0.402224 -0.661053 0.633423 +vn -0.361658 -0.661053 0.657429 +vn -0.319663 -0.661053 0.678840 +vn -0.276408 -0.661053 0.697572 +vn -0.232061 -0.661053 0.713552 +vn -0.186800 -0.661054 0.726714 +vn -0.140800 -0.661054 0.737010 +vn -0.094245 -0.661054 0.744396 +vn -0.047318 -0.661054 0.748845 +vn -0.000204 -0.661054 0.750338 +vn 0.046910 -0.661053 0.748871 +vn 0.093840 -0.661053 0.744449 +vn 0.140398 -0.661053 0.737087 +vn 0.186405 -0.661053 0.726817 +vn 0.231673 -0.661053 0.713678 +vn 0.276028 -0.661053 0.697723 +vn 0.319294 -0.661054 0.679014 +vn 0.361299 -0.661053 0.657626 +vn 0.401879 -0.661053 0.633642 +vn 0.440874 -0.661053 0.607157 +vn 0.478126 -0.661054 0.578276 +vn 0.513493 -0.661054 0.547113 +vn 0.546833 -0.661054 0.513791 +vn 0.578016 -0.661053 0.478442 +vn 0.606917 -0.661054 0.441203 +vn 0.633423 -0.661053 0.402224 +vn 0.657428 -0.661054 0.361657 +vn 0.678840 -0.661054 0.319663 +vn 0.697572 -0.661053 0.276408 +vn 0.713551 -0.661054 0.232062 +vn 0.726716 -0.661052 0.186799 +vn 0.737011 -0.661053 0.140800 +vn 0.744396 -0.661055 0.094245 +vn 0.748845 -0.661054 0.047318 +vn 0.750339 -0.661053 0.000201 +vn 0.769215 -0.637170 -0.048199 +vn 0.764670 -0.637170 -0.096399 +vn 0.757109 -0.637170 -0.144224 +vn 0.746559 -0.637170 -0.191478 +vn 0.733062 -0.637172 -0.237977 +vn 0.716674 -0.637170 -0.283537 +vn 0.697456 -0.637170 -0.327978 +vn 0.675485 -0.637171 -0.371124 +vn 0.650849 -0.637170 -0.412806 +vn 0.623645 -0.637170 -0.452859 +vn 0.593980 -0.637169 -0.491125 +vn 0.561969 -0.637171 -0.527451 +vn 0.527741 -0.637170 -0.561697 +vn 0.491431 -0.637171 -0.593725 +vn 0.453180 -0.637171 -0.623411 +vn 0.413141 -0.637171 -0.650636 +vn 0.371474 -0.637170 -0.675293 +vn 0.328339 -0.637170 -0.697286 +vn 0.283907 -0.637171 -0.716526 +vn 0.238356 -0.637171 -0.732939 +vn 0.191864 -0.637170 -0.746460 +vn 0.144615 -0.637170 -0.757034 +vn 0.096795 -0.637171 -0.764620 +vn 0.048593 -0.637170 -0.769190 +vn 0.000199 -0.637170 -0.770724 +vn -0.048195 -0.637170 -0.769215 +vn -0.096400 -0.637169 -0.764671 +vn -0.144223 -0.637170 -0.757109 +vn -0.191478 -0.637171 -0.746559 +vn -0.237978 -0.637171 -0.733062 +vn -0.283536 -0.637170 -0.716674 +vn -0.327978 -0.637170 -0.697456 +vn -0.371124 -0.637170 -0.675486 +vn -0.412806 -0.637170 -0.650849 +vn -0.452858 -0.637171 -0.623645 +vn -0.491124 -0.637170 -0.593980 +vn -0.527451 -0.637171 -0.561969 +vn -0.561696 -0.637170 -0.527741 +vn -0.593725 -0.637170 -0.491431 +vn -0.623411 -0.637171 -0.453180 +vn -0.650636 -0.637171 -0.413142 +vn -0.675294 -0.637170 -0.371473 +vn -0.697287 -0.637170 -0.328338 +vn -0.716526 -0.637172 -0.283907 +vn -0.732940 -0.637170 -0.238357 +vn -0.746459 -0.637171 -0.191864 +vn -0.757034 -0.637170 -0.144614 +vn -0.764620 -0.637171 -0.096795 +vn -0.769188 -0.637172 -0.048593 +vn -0.770723 -0.637171 -0.000199 +vn -0.769215 -0.637170 0.048195 +vn -0.764670 -0.637170 0.096400 +vn -0.757109 -0.637170 0.144223 +vn -0.746559 -0.637171 0.191478 +vn -0.733063 -0.637170 0.237977 +vn -0.716674 -0.637169 0.283537 +vn -0.697456 -0.637171 0.327978 +vn -0.675485 -0.637171 0.371124 +vn -0.650849 -0.637170 0.412806 +vn -0.623645 -0.637171 0.452859 +vn -0.593980 -0.637170 0.491124 +vn -0.561969 -0.637171 0.527451 +vn -0.527742 -0.637170 0.561697 +vn -0.491431 -0.637171 0.593725 +vn -0.453181 -0.637171 0.623410 +vn -0.413141 -0.637170 0.650637 +vn -0.371473 -0.637171 0.675293 +vn -0.328338 -0.637170 0.697286 +vn -0.283907 -0.637171 0.716526 +vn -0.238357 -0.637170 0.732939 +vn -0.191864 -0.637171 0.746459 +vn -0.144615 -0.637171 0.757034 +vn -0.096794 -0.637171 0.764620 +vn -0.048594 -0.637171 0.769189 +vn -0.000199 -0.637171 0.770723 +vn 0.048195 -0.637170 0.769215 +vn 0.096399 -0.637170 0.764671 +vn 0.144224 -0.637170 0.757109 +vn 0.191478 -0.637171 0.746558 +vn 0.237978 -0.637171 0.733062 +vn 0.283537 -0.637170 0.716674 +vn 0.327978 -0.637171 0.697455 +vn 0.371124 -0.637170 0.675486 +vn 0.412806 -0.637171 0.650849 +vn 0.452859 -0.637170 0.623645 +vn 0.491123 -0.637171 0.593979 +vn 0.527451 -0.637170 0.561970 +vn 0.561696 -0.637170 0.527742 +vn 0.593725 -0.637170 0.491431 +vn 0.623411 -0.637170 0.453180 +vn 0.650636 -0.637170 0.413142 +vn 0.675293 -0.637171 0.371473 +vn 0.697286 -0.637170 0.328338 +vn 0.716527 -0.637170 0.283907 +vn 0.732939 -0.637171 0.238356 +vn 0.746459 -0.637171 0.191863 +vn 0.757034 -0.637170 0.144615 +vn 0.764620 -0.637171 0.096795 +vn 0.769190 -0.637169 0.048593 +vn 0.770723 -0.637170 0.000196 +vn 0.788801 -0.612658 -0.049436 +vn 0.784140 -0.612658 -0.098864 +vn 0.776386 -0.612657 -0.147907 +vn 0.765566 -0.612658 -0.196363 +vn 0.751725 -0.612658 -0.244047 +vn 0.734919 -0.612657 -0.290767 +vn 0.715211 -0.612658 -0.336338 +vn 0.692680 -0.612659 -0.380583 +vn 0.667416 -0.612659 -0.423326 +vn 0.639519 -0.612658 -0.464398 +vn 0.609098 -0.612657 -0.503638 +vn 0.576272 -0.612658 -0.540889 +vn 0.541172 -0.612658 -0.576006 +vn 0.503936 -0.612658 -0.608850 +vn 0.464711 -0.612658 -0.639292 +vn 0.423652 -0.612659 -0.667209 +vn 0.380923 -0.612658 -0.692494 +vn 0.336690 -0.612658 -0.715045 +vn 0.291126 -0.612657 -0.734776 +vn 0.244416 -0.612658 -0.751606 +vn 0.196739 -0.612658 -0.765470 +vn 0.148287 -0.612658 -0.776313 +vn 0.099250 -0.612658 -0.784092 +vn 0.049819 -0.612658 -0.788777 +vn 0.000194 -0.612657 -0.790348 +vn -0.049432 -0.612658 -0.788801 +vn -0.098865 -0.612658 -0.784140 +vn -0.147906 -0.612658 -0.776385 +vn -0.196364 -0.612658 -0.765566 +vn -0.244047 -0.612658 -0.751725 +vn -0.290766 -0.612658 -0.734918 +vn -0.336339 -0.612658 -0.715211 +vn -0.380583 -0.612658 -0.692680 +vn -0.423326 -0.612658 -0.667417 +vn -0.464398 -0.612658 -0.639519 +vn -0.503638 -0.612657 -0.609098 +vn -0.540889 -0.612658 -0.576271 +vn -0.576007 -0.612658 -0.541172 +vn -0.608850 -0.612659 -0.503936 +vn -0.639292 -0.612658 -0.464711 +vn -0.667209 -0.612658 -0.423653 +vn -0.692495 -0.612657 -0.380923 +vn -0.715046 -0.612658 -0.336689 +vn -0.734775 -0.612659 -0.291127 +vn -0.751605 -0.612659 -0.244416 +vn -0.765470 -0.612657 -0.196739 +vn -0.776313 -0.612658 -0.148287 +vn -0.784091 -0.612659 -0.099249 +vn -0.788776 -0.612659 -0.049820 +vn -0.790348 -0.612658 -0.000193 +vn -0.788802 -0.612657 0.049432 +vn -0.784140 -0.612658 0.098865 +vn -0.776386 -0.612657 0.147906 +vn -0.765566 -0.612658 0.196364 +vn -0.751726 -0.612658 0.244047 +vn -0.734919 -0.612657 0.290767 +vn -0.715211 -0.612658 0.336338 +vn -0.692680 -0.612658 0.380583 +vn -0.667417 -0.612657 0.423327 +vn -0.639519 -0.612658 0.464398 +vn -0.609098 -0.612657 0.503638 +vn -0.576272 -0.612658 0.540889 +vn -0.541172 -0.612658 0.576006 +vn -0.503936 -0.612658 0.608850 +vn -0.464712 -0.612658 0.639291 +vn -0.423653 -0.612658 0.667210 +vn -0.380923 -0.612658 0.692494 +vn -0.336689 -0.612658 0.715046 +vn -0.291126 -0.612658 0.734775 +vn -0.244416 -0.612658 0.751606 +vn -0.196739 -0.612658 0.765470 +vn -0.148287 -0.612658 0.776312 +vn -0.099249 -0.612658 0.784092 +vn -0.049821 -0.612658 0.788776 +vn -0.000194 -0.612659 0.790348 +vn 0.049434 -0.612657 0.788801 +vn 0.098864 -0.612658 0.784140 +vn 0.147907 -0.612658 0.776385 +vn 0.196363 -0.612659 0.765566 +vn 0.244047 -0.612658 0.751726 +vn 0.290766 -0.612658 0.734918 +vn 0.336339 -0.612657 0.715211 +vn 0.380584 -0.612657 0.692681 +vn 0.423326 -0.612659 0.667416 +vn 0.464398 -0.612658 0.639519 +vn 0.503637 -0.612658 0.609098 +vn 0.540890 -0.612658 0.576271 +vn 0.576006 -0.612658 0.541172 +vn 0.608850 -0.612658 0.503936 +vn 0.639291 -0.612658 0.464711 +vn 0.667209 -0.612658 0.423653 +vn 0.692494 -0.612658 0.380923 +vn 0.715046 -0.612657 0.336689 +vn 0.734775 -0.612658 0.291127 +vn 0.751606 -0.612657 0.244416 +vn 0.765469 -0.612659 0.196739 +vn 0.776312 -0.612658 0.148287 +vn 0.784092 -0.612657 0.099249 +vn 0.788777 -0.612657 0.049820 +vn 0.790348 -0.612658 0.000191 +vn 0.807610 -0.587540 -0.050626 +vn 0.802837 -0.587541 -0.101233 +vn 0.794897 -0.587541 -0.151443 +vn 0.783819 -0.587540 -0.201057 +vn 0.769648 -0.587540 -0.249877 +vn 0.752440 -0.587540 -0.297710 +vn 0.732262 -0.587539 -0.344368 +vn 0.709193 -0.587541 -0.389668 +vn 0.683326 -0.587540 -0.433430 +vn 0.654763 -0.587541 -0.475481 +vn 0.623616 -0.587540 -0.515655 +vn 0.590006 -0.587541 -0.553795 +vn 0.554069 -0.587540 -0.589749 +vn 0.515945 -0.587540 -0.623376 +vn 0.475785 -0.587540 -0.654542 +vn 0.433747 -0.587541 -0.683125 +vn 0.389997 -0.587540 -0.709013 +vn 0.344709 -0.587541 -0.732101 +vn 0.298060 -0.587539 -0.752302 +vn 0.250234 -0.587541 -0.769532 +vn 0.201421 -0.587541 -0.783726 +vn 0.151813 -0.587541 -0.794826 +vn 0.101606 -0.587540 -0.802791 +vn 0.050997 -0.587541 -0.807586 +vn 0.000188 -0.587540 -0.809195 +vn -0.050622 -0.587540 -0.807610 +vn -0.101232 -0.587541 -0.802837 +vn -0.151444 -0.587540 -0.794897 +vn -0.201057 -0.587541 -0.783819 +vn -0.249877 -0.587541 -0.769648 +vn -0.297711 -0.587540 -0.752439 +vn -0.344368 -0.587540 -0.732262 +vn -0.389668 -0.587541 -0.709193 +vn -0.433430 -0.587540 -0.683327 +vn -0.475481 -0.587540 -0.654763 +vn -0.515655 -0.587541 -0.623615 +vn -0.553795 -0.587541 -0.590006 +vn -0.589749 -0.587541 -0.554069 +vn -0.623375 -0.587541 -0.515944 +vn -0.654543 -0.587540 -0.475784 +vn -0.683125 -0.587541 -0.433746 +vn -0.709012 -0.587541 -0.389996 +vn -0.732101 -0.587541 -0.344708 +vn -0.752302 -0.587539 -0.298060 +vn -0.769532 -0.587540 -0.250234 +vn -0.783726 -0.587540 -0.201420 +vn -0.794826 -0.587541 -0.151813 +vn -0.802791 -0.587540 -0.101606 +vn -0.807586 -0.587541 -0.050997 +vn -0.809194 -0.587541 -0.000188 +vn -0.807609 -0.587541 0.050622 +vn -0.802838 -0.587540 0.101233 +vn -0.794897 -0.587540 0.151444 +vn -0.783819 -0.587541 0.201056 +vn -0.769648 -0.587540 0.249876 +vn -0.752439 -0.587541 0.297710 +vn -0.732262 -0.587539 0.344369 +vn -0.709193 -0.587541 0.389668 +vn -0.683326 -0.587541 0.433430 +vn -0.654762 -0.587541 0.475481 +vn -0.623615 -0.587541 0.515655 +vn -0.590006 -0.587541 0.553795 +vn -0.554069 -0.587541 0.589749 +vn -0.515945 -0.587541 0.623375 +vn -0.475784 -0.587540 0.654543 +vn -0.433746 -0.587540 0.683126 +vn -0.389998 -0.587540 0.709013 +vn -0.344709 -0.587541 0.732101 +vn -0.298059 -0.587541 0.752301 +vn -0.250234 -0.587540 0.769532 +vn -0.201420 -0.587541 0.783726 +vn -0.151813 -0.587540 0.794827 +vn -0.101606 -0.587540 0.802791 +vn -0.050998 -0.587541 0.807586 +vn -0.000187 -0.587541 0.809194 +vn 0.050623 -0.587540 0.807610 +vn 0.101232 -0.587541 0.802838 +vn 0.151444 -0.587540 0.794897 +vn 0.201056 -0.587541 0.783819 +vn 0.249877 -0.587540 0.769648 +vn 0.297710 -0.587541 0.752439 +vn 0.344369 -0.587540 0.732261 +vn 0.389668 -0.587540 0.709193 +vn 0.433430 -0.587540 0.683326 +vn 0.475481 -0.587540 0.654763 +vn 0.515655 -0.587541 0.623615 +vn 0.553795 -0.587541 0.590006 +vn 0.589749 -0.587541 0.554069 +vn 0.623375 -0.587542 0.515944 +vn 0.654542 -0.587541 0.475784 +vn 0.683125 -0.587540 0.433747 +vn 0.709013 -0.587541 0.389997 +vn 0.732102 -0.587540 0.344708 +vn 0.752300 -0.587541 0.298059 +vn 0.769533 -0.587539 0.250234 +vn 0.783725 -0.587542 0.201420 +vn 0.794826 -0.587541 0.151812 +vn 0.802791 -0.587540 0.101605 +vn 0.807587 -0.587540 0.050998 +vn 0.809195 -0.587541 0.000185 +vn 0.825621 -0.561846 -0.051766 +vn 0.820742 -0.561846 -0.103501 +vn 0.812623 -0.561846 -0.154831 +vn 0.801297 -0.561847 -0.205551 +vn 0.786810 -0.561846 -0.255459 +vn 0.769217 -0.561846 -0.304359 +vn 0.748588 -0.561846 -0.352059 +vn 0.725004 -0.561847 -0.398368 +vn 0.698560 -0.561846 -0.443106 +vn 0.669359 -0.561847 -0.486093 +vn 0.637516 -0.561847 -0.527163 +vn 0.603157 -0.561846 -0.566154 +vn 0.566418 -0.561846 -0.602909 +vn 0.527443 -0.561847 -0.637285 +vn 0.486387 -0.561847 -0.669146 +vn 0.443411 -0.561847 -0.698366 +vn 0.398684 -0.561846 -0.724831 +vn 0.352386 -0.561847 -0.748433 +vn 0.304695 -0.561847 -0.769083 +vn 0.255804 -0.561846 -0.786697 +vn 0.205902 -0.561846 -0.801208 +vn 0.155188 -0.561847 -0.812555 +vn 0.103860 -0.561846 -0.820696 +vn 0.052125 -0.561847 -0.825597 +vn 0.000181 -0.561846 -0.827242 +vn -0.051762 -0.561847 -0.825620 +vn -0.103501 -0.561846 -0.820741 +vn -0.154832 -0.561846 -0.812623 +vn -0.205551 -0.561846 -0.801297 +vn -0.255459 -0.561846 -0.786810 +vn -0.304359 -0.561846 -0.769217 +vn -0.352057 -0.561847 -0.748588 +vn -0.398368 -0.561847 -0.725004 +vn -0.443105 -0.561846 -0.698560 +vn -0.486093 -0.561847 -0.669359 +vn -0.527163 -0.561847 -0.637516 +vn -0.566154 -0.561847 -0.603157 +vn -0.602909 -0.561846 -0.566418 +vn -0.637285 -0.561847 -0.527443 +vn -0.669147 -0.561845 -0.486387 +vn -0.698366 -0.561847 -0.443411 +vn -0.724830 -0.561847 -0.398685 +vn -0.748433 -0.561846 -0.352386 +vn -0.769083 -0.561847 -0.304697 +vn -0.786697 -0.561847 -0.255804 +vn -0.801207 -0.561846 -0.205902 +vn -0.812555 -0.561847 -0.155188 +vn -0.820696 -0.561846 -0.103861 +vn -0.825598 -0.561847 -0.052124 +vn -0.827242 -0.561846 -0.000181 +vn -0.825620 -0.561847 0.051762 +vn -0.820741 -0.561846 0.103501 +vn -0.812622 -0.561847 0.154831 +vn -0.801297 -0.561848 0.205550 +vn -0.786810 -0.561845 0.255459 +vn -0.769216 -0.561846 0.304360 +vn -0.748588 -0.561847 0.352058 +vn -0.725004 -0.561848 0.398367 +vn -0.698560 -0.561847 0.443105 +vn -0.669359 -0.561847 0.486094 +vn -0.637517 -0.561846 0.527164 +vn -0.603157 -0.561847 0.566154 +vn -0.566418 -0.561847 0.602909 +vn -0.527443 -0.561847 0.637285 +vn -0.486386 -0.561847 0.669146 +vn -0.443412 -0.561846 0.698366 +vn -0.398686 -0.561847 0.724829 +vn -0.352386 -0.561847 0.748433 +vn -0.304696 -0.561846 0.769083 +vn -0.255804 -0.561846 0.786698 +vn -0.205902 -0.561847 0.801207 +vn -0.155189 -0.561846 0.812555 +vn -0.103861 -0.561847 0.820696 +vn -0.052124 -0.561847 0.825598 +vn -0.000181 -0.561847 0.827241 +vn 0.051763 -0.561846 0.825620 +vn 0.103500 -0.561846 0.820741 +vn 0.154830 -0.561847 0.812623 +vn 0.205551 -0.561847 0.801297 +vn 0.255460 -0.561846 0.786809 +vn 0.304358 -0.561847 0.769217 +vn 0.352058 -0.561847 0.748588 +vn 0.398369 -0.561846 0.725004 +vn 0.443107 -0.561846 0.698560 +vn 0.486094 -0.561846 0.669359 +vn 0.527163 -0.561847 0.637516 +vn 0.566154 -0.561846 0.603158 +vn 0.602909 -0.561846 0.566418 +vn 0.637285 -0.561846 0.527444 +vn 0.669146 -0.561846 0.486387 +vn 0.698366 -0.561846 0.443412 +vn 0.724829 -0.561848 0.398685 +vn 0.748434 -0.561846 0.352386 +vn 0.769082 -0.561848 0.304696 +vn 0.786698 -0.561845 0.255804 +vn 0.801207 -0.561847 0.205902 +vn 0.812554 -0.561847 0.155188 +vn 0.820696 -0.561847 0.103860 +vn 0.825597 -0.561847 0.052124 +vn 0.827241 -0.561848 0.000178 +vn 0.842818 -0.535597 -0.052855 +vn 0.837835 -0.535599 -0.105667 +vn 0.829548 -0.535597 -0.158067 +vn 0.817986 -0.535598 -0.209843 +vn 0.803196 -0.535596 -0.260792 +vn 0.785235 -0.535598 -0.310709 +vn 0.764176 -0.535597 -0.359402 +vn 0.740101 -0.535598 -0.406676 +vn 0.713106 -0.535597 -0.452344 +vn 0.683297 -0.535597 -0.496227 +vn 0.650789 -0.535597 -0.538153 +vn 0.615714 -0.535597 -0.577955 +vn 0.578210 -0.535597 -0.615475 +vn 0.538422 -0.535597 -0.650567 +vn 0.496510 -0.535598 -0.683091 +vn 0.452638 -0.535598 -0.712919 +vn 0.406981 -0.535597 -0.739934 +vn 0.359717 -0.535598 -0.764028 +vn 0.311034 -0.535597 -0.785107 +vn 0.261123 -0.535597 -0.803088 +vn 0.210181 -0.535597 -0.817900 +vn 0.158410 -0.535598 -0.829483 +vn 0.106014 -0.535598 -0.837793 +vn 0.053200 -0.535598 -0.842796 +vn 0.000174 -0.535598 -0.844473 +vn -0.052850 -0.535598 -0.842818 +vn -0.105668 -0.535597 -0.837837 +vn -0.158067 -0.535598 -0.829548 +vn -0.209844 -0.535598 -0.817986 +vn -0.260791 -0.535598 -0.803195 +vn -0.310710 -0.535598 -0.785235 +vn -0.359401 -0.535598 -0.764177 +vn -0.406676 -0.535597 -0.740102 +vn -0.452344 -0.535598 -0.713106 +vn -0.496227 -0.535598 -0.683296 +vn -0.538153 -0.535597 -0.650789 +vn -0.577954 -0.535597 -0.615714 +vn -0.615475 -0.535598 -0.578209 +vn -0.650567 -0.535598 -0.538422 +vn -0.683091 -0.535598 -0.496509 +vn -0.712919 -0.535598 -0.452638 +vn -0.739933 -0.535598 -0.406980 +vn -0.764028 -0.535598 -0.359717 +vn -0.785107 -0.535597 -0.311034 +vn -0.803088 -0.535597 -0.261123 +vn -0.817900 -0.535597 -0.210181 +vn -0.829483 -0.535598 -0.158410 +vn -0.837793 -0.535596 -0.106014 +vn -0.842796 -0.535598 -0.053199 +vn -0.844473 -0.535599 -0.000175 +vn -0.842817 -0.535598 0.052851 +vn -0.837836 -0.535598 0.105668 +vn -0.829548 -0.535598 0.158067 +vn -0.817986 -0.535598 0.209843 +vn -0.803197 -0.535596 0.260791 +vn -0.785236 -0.535597 0.310710 +vn -0.764176 -0.535599 0.359401 +vn -0.740101 -0.535598 0.406675 +vn -0.713106 -0.535597 0.452345 +vn -0.683296 -0.535597 0.496228 +vn -0.650789 -0.535598 0.538153 +vn -0.615713 -0.535598 0.577954 +vn -0.578209 -0.535598 0.615475 +vn -0.538422 -0.535597 0.650567 +vn -0.496509 -0.535598 0.683091 +vn -0.452639 -0.535598 0.712918 +vn -0.406981 -0.535598 0.739934 +vn -0.359717 -0.535597 0.764029 +vn -0.311034 -0.535597 0.785107 +vn -0.261123 -0.535597 0.803088 +vn -0.210181 -0.535598 0.817899 +vn -0.158410 -0.535598 0.829483 +vn -0.106013 -0.535598 0.837793 +vn -0.053200 -0.535598 0.842796 +vn -0.000174 -0.535598 0.844473 +vn 0.052851 -0.535598 0.842818 +vn 0.105667 -0.535597 0.837837 +vn 0.158067 -0.535597 0.829549 +vn 0.209843 -0.535597 0.817986 +vn 0.260791 -0.535597 0.803196 +vn 0.310709 -0.535598 0.785236 +vn 0.359402 -0.535598 0.764176 +vn 0.406676 -0.535598 0.740101 +vn 0.452345 -0.535598 0.713105 +vn 0.496228 -0.535597 0.683296 +vn 0.538154 -0.535596 0.650789 +vn 0.577955 -0.535597 0.615714 +vn 0.615475 -0.535598 0.578208 +vn 0.650567 -0.535598 0.538422 +vn 0.683091 -0.535597 0.496510 +vn 0.712919 -0.535598 0.452639 +vn 0.739933 -0.535599 0.406980 +vn 0.764028 -0.535598 0.359717 +vn 0.785108 -0.535597 0.311034 +vn 0.803088 -0.535598 0.261122 +vn 0.817900 -0.535596 0.210181 +vn 0.829482 -0.535598 0.158410 +vn 0.837793 -0.535597 0.106014 +vn 0.842796 -0.535597 0.053200 +vn 0.844474 -0.535597 0.000171 +vn 0.859184 -0.508820 -0.053892 +vn 0.854105 -0.508821 -0.107730 +vn 0.845656 -0.508819 -0.161148 +vn 0.833869 -0.508819 -0.213928 +vn 0.818790 -0.508820 -0.265866 +vn 0.800480 -0.508821 -0.316753 +vn 0.779012 -0.508821 -0.366391 +vn 0.754469 -0.508820 -0.414582 +vn 0.726949 -0.508820 -0.461137 +vn 0.696559 -0.508819 -0.505874 +vn 0.663420 -0.508820 -0.548613 +vn 0.627663 -0.508820 -0.589186 +vn 0.589429 -0.508821 -0.627435 +vn 0.548870 -0.508820 -0.663208 +vn 0.506143 -0.508819 -0.696363 +vn 0.461419 -0.508820 -0.726770 +vn 0.414875 -0.508820 -0.754308 +vn 0.366692 -0.508820 -0.778870 +vn 0.317064 -0.508820 -0.800358 +vn 0.266183 -0.508821 -0.818686 +vn 0.214252 -0.508820 -0.833786 +vn 0.161475 -0.508820 -0.845593 +vn 0.108063 -0.508821 -0.854063 +vn 0.054222 -0.508820 -0.859164 +vn 0.000167 -0.508820 -0.860873 +vn -0.053888 -0.508820 -0.859185 +vn -0.107730 -0.508820 -0.854106 +vn -0.161147 -0.508820 -0.845656 +vn -0.213928 -0.508821 -0.833868 +vn -0.265866 -0.508820 -0.818790 +vn -0.316754 -0.508820 -0.800481 +vn -0.366390 -0.508820 -0.779013 +vn -0.414583 -0.508819 -0.754469 +vn -0.461138 -0.508821 -0.726948 +vn -0.505873 -0.508820 -0.696559 +vn -0.548613 -0.508820 -0.663420 +vn -0.589186 -0.508820 -0.627664 +vn -0.627435 -0.508820 -0.589430 +vn -0.663208 -0.508820 -0.548869 +vn -0.696363 -0.508821 -0.506143 +vn -0.726770 -0.508819 -0.461419 +vn -0.754308 -0.508821 -0.414874 +vn -0.778870 -0.508820 -0.366693 +vn -0.800358 -0.508819 -0.317064 +vn -0.818688 -0.508819 -0.266183 +vn -0.833785 -0.508821 -0.214252 +vn -0.845593 -0.508821 -0.161476 +vn -0.854065 -0.508819 -0.108062 +vn -0.859164 -0.508819 -0.054222 +vn -0.860872 -0.508821 -0.000167 +vn -0.859185 -0.508819 0.053888 +vn -0.854107 -0.508819 0.107730 +vn -0.845656 -0.508819 0.161148 +vn -0.833869 -0.508820 0.213928 +vn -0.818790 -0.508820 0.265866 +vn -0.800481 -0.508820 0.316754 +vn -0.779011 -0.508821 0.366390 +vn -0.754469 -0.508820 0.414583 +vn -0.726948 -0.508821 0.461137 +vn -0.696559 -0.508819 0.505874 +vn -0.663420 -0.508821 0.548612 +vn -0.627664 -0.508820 0.589186 +vn -0.589430 -0.508820 0.627435 +vn -0.548869 -0.508819 0.663208 +vn -0.506144 -0.508820 0.696362 +vn -0.461420 -0.508820 0.726770 +vn -0.414874 -0.508820 0.754309 +vn -0.366692 -0.508820 0.778870 +vn -0.317064 -0.508821 0.800357 +vn -0.266183 -0.508820 0.818688 +vn -0.214253 -0.508820 0.833786 +vn -0.161475 -0.508820 0.845593 +vn -0.108062 -0.508820 0.854064 +vn -0.054222 -0.508821 0.859163 +vn -0.000167 -0.508820 0.860873 +vn 0.053888 -0.508820 0.859185 +vn 0.107731 -0.508820 0.854106 +vn 0.161147 -0.508820 0.845656 +vn 0.213929 -0.508820 0.833869 +vn 0.265865 -0.508821 0.818790 +vn 0.316753 -0.508820 0.800481 +vn 0.366390 -0.508820 0.779012 +vn 0.414582 -0.508820 0.754469 +vn 0.461138 -0.508820 0.726948 +vn 0.505873 -0.508820 0.696559 +vn 0.548612 -0.508820 0.663421 +vn 0.589186 -0.508821 0.627663 +vn 0.627435 -0.508821 0.589429 +vn 0.663207 -0.508821 0.548869 +vn 0.696364 -0.508818 0.506144 +vn 0.726769 -0.508821 0.461420 +vn 0.754309 -0.508820 0.414875 +vn 0.778870 -0.508820 0.366693 +vn 0.800359 -0.508818 0.317064 +vn 0.818686 -0.508822 0.266183 +vn 0.833787 -0.508818 0.214252 +vn 0.845593 -0.508821 0.161476 +vn 0.854064 -0.508820 0.108062 +vn 0.859164 -0.508820 0.054222 +vn 0.860873 -0.508820 0.000164 +vn 0.874704 -0.481541 -0.054876 +vn 0.869533 -0.481540 -0.109687 +vn 0.860929 -0.481541 -0.164069 +vn 0.848928 -0.481542 -0.217803 +vn 0.833578 -0.481540 -0.270679 +vn 0.814937 -0.481540 -0.322486 +vn 0.793080 -0.481541 -0.373019 +vn 0.768092 -0.481542 -0.422080 +vn 0.740074 -0.481540 -0.469477 +vn 0.709135 -0.481541 -0.515020 +vn 0.675398 -0.481541 -0.558530 +vn 0.638995 -0.481541 -0.599837 +vn 0.600069 -0.481541 -0.638776 +vn 0.558776 -0.481540 -0.675195 +vn 0.515277 -0.481541 -0.708948 +vn 0.469745 -0.481541 -0.739903 +vn 0.422360 -0.481541 -0.767939 +vn 0.373307 -0.481541 -0.792944 +vn 0.322782 -0.481541 -0.814819 +vn 0.270981 -0.481542 -0.833479 +vn 0.218112 -0.481540 -0.848850 +vn 0.164381 -0.481541 -0.860870 +vn 0.110003 -0.481541 -0.869493 +vn 0.055190 -0.481541 -0.874684 +vn 0.000158 -0.481541 -0.876423 +vn -0.054872 -0.481541 -0.874704 +vn -0.109687 -0.481541 -0.869533 +vn -0.164069 -0.481541 -0.860929 +vn -0.217803 -0.481541 -0.848929 +vn -0.270680 -0.481541 -0.833577 +vn -0.322486 -0.481541 -0.814936 +vn -0.373019 -0.481541 -0.793080 +vn -0.422081 -0.481541 -0.768092 +vn -0.469477 -0.481541 -0.740074 +vn -0.515020 -0.481541 -0.709136 +vn -0.558531 -0.481541 -0.675398 +vn -0.599836 -0.481542 -0.638995 +vn -0.638776 -0.481541 -0.600069 +vn -0.675195 -0.481541 -0.558776 +vn -0.708948 -0.481541 -0.515277 +vn -0.739905 -0.481540 -0.469745 +vn -0.767939 -0.481542 -0.422359 +vn -0.792944 -0.481542 -0.373307 +vn -0.814820 -0.481540 -0.322782 +vn -0.833480 -0.481540 -0.270982 +vn -0.848849 -0.481543 -0.218112 +vn -0.860870 -0.481541 -0.164382 +vn -0.869493 -0.481541 -0.110003 +vn -0.874684 -0.481541 -0.055190 +vn -0.876423 -0.481542 -0.000159 +vn -0.874705 -0.481540 0.054872 +vn -0.869533 -0.481540 0.109687 +vn -0.860929 -0.481541 0.164069 +vn -0.848929 -0.481541 0.217803 +vn -0.833578 -0.481540 0.270679 +vn -0.814937 -0.481540 0.322485 +vn -0.793080 -0.481540 0.373019 +vn -0.768092 -0.481542 0.422081 +vn -0.740074 -0.481542 0.469477 +vn -0.709136 -0.481540 0.515020 +vn -0.675397 -0.481542 0.558531 +vn -0.638994 -0.481540 0.599838 +vn -0.600070 -0.481541 0.638776 +vn -0.558776 -0.481541 0.675195 +vn -0.515278 -0.481541 0.708948 +vn -0.469745 -0.481541 0.739904 +vn -0.422359 -0.481542 0.767939 +vn -0.373307 -0.481542 0.792944 +vn -0.322781 -0.481541 0.814819 +vn -0.270981 -0.481541 0.833479 +vn -0.218112 -0.481541 0.848850 +vn -0.164382 -0.481541 0.860870 +vn -0.110003 -0.481541 0.869493 +vn -0.055190 -0.481541 0.874684 +vn -0.000159 -0.481541 0.876424 +vn 0.054872 -0.481541 0.874704 +vn 0.109687 -0.481542 0.869532 +vn 0.164069 -0.481542 0.860929 +vn 0.217804 -0.481541 0.848928 +vn 0.270678 -0.481542 0.833577 +vn 0.322486 -0.481540 0.814936 +vn 0.373019 -0.481541 0.793079 +vn 0.422081 -0.481541 0.768093 +vn 0.469477 -0.481541 0.740074 +vn 0.515020 -0.481541 0.709135 +vn 0.558530 -0.481541 0.675398 +vn 0.599837 -0.481542 0.638994 +vn 0.638776 -0.481541 0.600069 +vn 0.675194 -0.481541 0.558776 +vn 0.708949 -0.481539 0.515278 +vn 0.739904 -0.481541 0.469745 +vn 0.767940 -0.481541 0.422360 +vn 0.792944 -0.481541 0.373307 +vn 0.814820 -0.481541 0.322781 +vn 0.833479 -0.481542 0.270981 +vn 0.848849 -0.481543 0.218112 +vn 0.860870 -0.481540 0.164382 +vn 0.869492 -0.481542 0.110003 +vn 0.874684 -0.481541 0.055190 +vn 0.876424 -0.481541 0.000156 +vn 0.889362 -0.453786 -0.055806 +vn 0.884102 -0.453788 -0.111536 +vn 0.875354 -0.453788 -0.166829 +vn 0.863152 -0.453787 -0.221464 +vn 0.847543 -0.453787 -0.275225 +vn 0.828589 -0.453787 -0.327899 +vn 0.806366 -0.453786 -0.379279 +vn 0.780958 -0.453788 -0.429163 +vn 0.752470 -0.453787 -0.477353 +vn 0.721012 -0.453787 -0.523659 +vn 0.686709 -0.453787 -0.567899 +vn 0.649695 -0.453787 -0.609896 +vn 0.610117 -0.453787 -0.649488 +vn 0.568131 -0.453787 -0.686516 +vn 0.523903 -0.453788 -0.720834 +vn 0.477608 -0.453787 -0.752309 +vn 0.429428 -0.453787 -0.780813 +vn 0.379553 -0.453787 -0.806236 +vn 0.328180 -0.453786 -0.828478 +vn 0.275511 -0.453787 -0.847450 +vn 0.221757 -0.453787 -0.863076 +vn 0.167126 -0.453787 -0.875298 +vn 0.111836 -0.453787 -0.884065 +vn 0.056104 -0.453787 -0.889342 +vn 0.000151 -0.453787 -0.891110 +vn -0.055802 -0.453787 -0.889361 +vn -0.111535 -0.453787 -0.884102 +vn -0.166829 -0.453787 -0.875354 +vn -0.221464 -0.453786 -0.863152 +vn -0.275225 -0.453787 -0.847543 +vn -0.327899 -0.453787 -0.828589 +vn -0.379280 -0.453787 -0.806365 +vn -0.429163 -0.453787 -0.780959 +vn -0.477354 -0.453787 -0.752470 +vn -0.523659 -0.453788 -0.721012 +vn -0.567899 -0.453787 -0.686708 +vn -0.609896 -0.453787 -0.649695 +vn -0.649488 -0.453787 -0.610117 +vn -0.686517 -0.453786 -0.568132 +vn -0.720835 -0.453786 -0.523903 +vn -0.752309 -0.453787 -0.477608 +vn -0.780813 -0.453787 -0.429428 +vn -0.806237 -0.453786 -0.379553 +vn -0.828478 -0.453786 -0.328181 +vn -0.847449 -0.453788 -0.275512 +vn -0.863077 -0.453787 -0.221756 +vn -0.875298 -0.453786 -0.167126 +vn -0.884064 -0.453788 -0.111836 +vn -0.889342 -0.453788 -0.056104 +vn -0.891110 -0.453788 -0.000151 +vn -0.889362 -0.453786 0.055802 +vn -0.884102 -0.453787 0.111536 +vn -0.875354 -0.453788 0.166829 +vn -0.863152 -0.453787 0.221464 +vn -0.847543 -0.453787 0.275224 +vn -0.828589 -0.453788 0.327899 +vn -0.806365 -0.453787 0.379279 +vn -0.780958 -0.453788 0.429163 +vn -0.752470 -0.453786 0.477354 +vn -0.721012 -0.453788 0.523658 +vn -0.686708 -0.453788 0.567898 +vn -0.649695 -0.453787 0.609897 +vn -0.610117 -0.453787 0.649488 +vn -0.568131 -0.453787 0.686517 +vn -0.523903 -0.453787 0.720834 +vn -0.477608 -0.453787 0.752308 +vn -0.429428 -0.453787 0.780813 +vn -0.379553 -0.453787 0.806236 +vn -0.328180 -0.453787 0.828478 +vn -0.275511 -0.453788 0.847449 +vn -0.221757 -0.453787 0.863077 +vn -0.167126 -0.453787 0.875298 +vn -0.111835 -0.453787 0.884065 +vn -0.056104 -0.453787 0.889342 +vn -0.000151 -0.453787 0.891110 +vn 0.055802 -0.453787 0.889361 +vn 0.111536 -0.453788 0.884102 +vn 0.166829 -0.453788 0.875354 +vn 0.221464 -0.453787 0.863152 +vn 0.275225 -0.453787 0.847543 +vn 0.327899 -0.453787 0.828589 +vn 0.379279 -0.453788 0.806365 +vn 0.429163 -0.453788 0.780958 +vn 0.477354 -0.453788 0.752469 +vn 0.523660 -0.453785 0.721012 +vn 0.567898 -0.453788 0.686708 +vn 0.609897 -0.453787 0.649695 +vn 0.649488 -0.453787 0.610117 +vn 0.686516 -0.453787 0.568131 +vn 0.720834 -0.453788 0.523903 +vn 0.752309 -0.453786 0.477608 +vn 0.780813 -0.453788 0.429428 +vn 0.806237 -0.453786 0.379553 +vn 0.828477 -0.453788 0.328180 +vn 0.847449 -0.453789 0.275511 +vn 0.863077 -0.453787 0.221756 +vn 0.875299 -0.453785 0.167126 +vn 0.884064 -0.453789 0.111836 +vn 0.889342 -0.453787 0.056104 +vn 0.891110 -0.453787 0.000147 +vn 0.903141 -0.425587 -0.056682 +vn 0.897799 -0.425589 -0.113274 +vn 0.888915 -0.425589 -0.169424 +vn 0.876523 -0.425588 -0.224906 +vn 0.860672 -0.425586 -0.279500 +vn 0.841423 -0.425587 -0.332990 +vn 0.818854 -0.425588 -0.385166 +vn 0.793053 -0.425588 -0.435823 +vn 0.764124 -0.425587 -0.484758 +vn 0.732177 -0.425586 -0.531783 +vn 0.697342 -0.425587 -0.576706 +vn 0.659754 -0.425587 -0.619355 +vn 0.619563 -0.425586 -0.659559 +vn 0.576926 -0.425587 -0.697160 +vn 0.532012 -0.425587 -0.732010 +vn 0.485000 -0.425586 -0.763971 +vn 0.436072 -0.425587 -0.792917 +vn 0.385424 -0.425587 -0.818733 +vn 0.333255 -0.425587 -0.841319 +vn 0.279771 -0.425588 -0.860583 +vn 0.225182 -0.425587 -0.876452 +vn 0.169704 -0.425587 -0.888862 +vn 0.113558 -0.425587 -0.897764 +vn 0.056963 -0.425587 -0.903123 +vn 0.000143 -0.425587 -0.904917 +vn -0.056679 -0.425587 -0.903141 +vn -0.113275 -0.425587 -0.897800 +vn -0.169425 -0.425587 -0.888916 +vn -0.224906 -0.425587 -0.876523 +vn -0.279498 -0.425587 -0.860672 +vn -0.332989 -0.425587 -0.841424 +vn -0.385166 -0.425587 -0.818854 +vn -0.435822 -0.425587 -0.793054 +vn -0.484758 -0.425588 -0.764123 +vn -0.531781 -0.425587 -0.732178 +vn -0.576706 -0.425587 -0.697342 +vn -0.619354 -0.425587 -0.659755 +vn -0.659558 -0.425588 -0.619563 +vn -0.697160 -0.425588 -0.576926 +vn -0.732010 -0.425588 -0.532012 +vn -0.763971 -0.425587 -0.484999 +vn -0.792916 -0.425588 -0.436072 +vn -0.818733 -0.425587 -0.385424 +vn -0.841318 -0.425588 -0.333256 +vn -0.860584 -0.425587 -0.279770 +vn -0.876453 -0.425587 -0.225182 +vn -0.888862 -0.425588 -0.169705 +vn -0.897764 -0.425588 -0.113558 +vn -0.903123 -0.425586 -0.056963 +vn -0.904917 -0.425587 -0.000143 +vn -0.903141 -0.425587 0.056678 +vn -0.897799 -0.425589 0.113274 +vn -0.888915 -0.425588 0.169424 +vn -0.876523 -0.425587 0.224906 +vn -0.860671 -0.425588 0.279499 +vn -0.841423 -0.425587 0.332990 +vn -0.818854 -0.425588 0.385166 +vn -0.793054 -0.425587 0.435823 +vn -0.764124 -0.425584 0.484760 +vn -0.732177 -0.425587 0.531781 +vn -0.697342 -0.425588 0.576706 +vn -0.659754 -0.425588 0.619354 +vn -0.619562 -0.425588 0.659559 +vn -0.576925 -0.425588 0.697160 +vn -0.532012 -0.425588 0.732010 +vn -0.485000 -0.425587 0.763970 +vn -0.436072 -0.425587 0.792917 +vn -0.385423 -0.425587 0.818734 +vn -0.333255 -0.425587 0.841319 +vn -0.279770 -0.425588 0.860584 +vn -0.225182 -0.425588 0.876452 +vn -0.169704 -0.425587 0.888862 +vn -0.113557 -0.425587 0.897764 +vn -0.056963 -0.425587 0.903123 +vn -0.000142 -0.425587 0.904917 +vn 0.056679 -0.425587 0.903141 +vn 0.113275 -0.425587 0.897800 +vn 0.169425 -0.425587 0.888916 +vn 0.224905 -0.425587 0.876523 +vn 0.279498 -0.425588 0.860672 +vn 0.332989 -0.425588 0.841424 +vn 0.385166 -0.425587 0.818854 +vn 0.435823 -0.425587 0.793054 +vn 0.484760 -0.425588 0.764122 +vn 0.531782 -0.425587 0.732178 +vn 0.576706 -0.425588 0.697341 +vn 0.619355 -0.425586 0.659755 +vn 0.659559 -0.425587 0.619563 +vn 0.697160 -0.425587 0.576926 +vn 0.732010 -0.425589 0.532011 +vn 0.763971 -0.425586 0.485000 +vn 0.792916 -0.425588 0.436072 +vn 0.818733 -0.425587 0.385424 +vn 0.841317 -0.425589 0.333255 +vn 0.860583 -0.425588 0.279770 +vn 0.876453 -0.425586 0.225182 +vn 0.888862 -0.425587 0.169705 +vn 0.897763 -0.425590 0.113557 +vn 0.903123 -0.425587 0.056963 +vn 0.904917 -0.425588 0.000139 +vn 0.916030 -0.396968 -0.057501 +vn 0.910613 -0.396966 -0.114902 +vn 0.901601 -0.396965 -0.171854 +vn 0.889031 -0.396966 -0.228126 +vn 0.872953 -0.396965 -0.283499 +vn 0.853428 -0.396968 -0.337752 +vn 0.830538 -0.396964 -0.390674 +vn 0.804368 -0.396966 -0.442053 +vn 0.775024 -0.396966 -0.491687 +vn 0.742621 -0.396966 -0.539381 +vn 0.707288 -0.396965 -0.584946 +vn 0.669163 -0.396966 -0.628203 +vn 0.628398 -0.396965 -0.668980 +vn 0.585151 -0.396966 -0.707118 +vn 0.539597 -0.396966 -0.742464 +vn 0.491913 -0.396966 -0.774881 +vn 0.442286 -0.396966 -0.804239 +vn 0.390916 -0.396966 -0.830423 +vn 0.338001 -0.396967 -0.853330 +vn 0.283753 -0.396965 -0.872870 +vn 0.228385 -0.396966 -0.888965 +vn 0.172116 -0.396967 -0.901551 +vn 0.115168 -0.396966 -0.910579 +vn 0.057765 -0.396966 -0.916014 +vn 0.000133 -0.396965 -0.917834 +vn -0.057498 -0.396965 -0.916031 +vn -0.114902 -0.396965 -0.910613 +vn -0.171853 -0.396965 -0.901601 +vn -0.228127 -0.396966 -0.889031 +vn -0.283498 -0.396966 -0.872953 +vn -0.337754 -0.396965 -0.853429 +vn -0.390674 -0.396966 -0.830537 +vn -0.442053 -0.396966 -0.804368 +vn -0.491687 -0.396966 -0.775024 +vn -0.539381 -0.396966 -0.742621 +vn -0.584947 -0.396966 -0.707287 +vn -0.628202 -0.396966 -0.669164 +vn -0.668980 -0.396966 -0.628398 +vn -0.707117 -0.396966 -0.585152 +vn -0.742465 -0.396966 -0.539597 +vn -0.774881 -0.396965 -0.491912 +vn -0.804239 -0.396967 -0.442286 +vn -0.830423 -0.396966 -0.390915 +vn -0.853331 -0.396966 -0.338002 +vn -0.872870 -0.396966 -0.283753 +vn -0.888965 -0.396965 -0.228385 +vn -0.901551 -0.396966 -0.172116 +vn -0.910579 -0.396967 -0.115168 +vn -0.916013 -0.396967 -0.057765 +vn -0.917833 -0.396966 -0.000134 +vn -0.916030 -0.396968 0.057498 +vn -0.910613 -0.396966 0.114902 +vn -0.901602 -0.396965 0.171853 +vn -0.889031 -0.396967 0.228126 +vn -0.872952 -0.396967 0.283499 +vn -0.853429 -0.396967 0.337752 +vn -0.830537 -0.396966 0.390674 +vn -0.804368 -0.396966 0.442053 +vn -0.775024 -0.396966 0.491687 +vn -0.742622 -0.396966 0.539380 +vn -0.707288 -0.396966 0.584946 +vn -0.669163 -0.396965 0.628203 +vn -0.628398 -0.396967 0.668980 +vn -0.585151 -0.396967 0.707117 +vn -0.539596 -0.396966 0.742464 +vn -0.491913 -0.396966 0.774880 +vn -0.442287 -0.396965 0.804239 +vn -0.390915 -0.396966 0.830424 +vn -0.338001 -0.396966 0.853330 +vn -0.283753 -0.396966 0.872870 +vn -0.228385 -0.396966 0.888965 +vn -0.172116 -0.396967 0.901551 +vn -0.115168 -0.396966 0.910579 +vn -0.057765 -0.396967 0.916013 +vn -0.000134 -0.396966 0.917833 +vn 0.057498 -0.396967 0.916030 +vn 0.114901 -0.396967 0.910613 +vn 0.171853 -0.396966 0.901601 +vn 0.228127 -0.396966 0.889031 +vn 0.283498 -0.396966 0.872953 +vn 0.337754 -0.396966 0.853429 +vn 0.390674 -0.396966 0.830537 +vn 0.442053 -0.396966 0.804368 +vn 0.491687 -0.396966 0.775024 +vn 0.539380 -0.396966 0.742622 +vn 0.584946 -0.396966 0.707288 +vn 0.628202 -0.396966 0.669163 +vn 0.668980 -0.396966 0.628398 +vn 0.707118 -0.396965 0.585152 +vn 0.742463 -0.396969 0.539596 +vn 0.774881 -0.396966 0.491913 +vn 0.804239 -0.396966 0.442286 +vn 0.830423 -0.396967 0.390915 +vn 0.853330 -0.396967 0.338001 +vn 0.872870 -0.396967 0.283753 +vn 0.888964 -0.396967 0.228385 +vn 0.901551 -0.396965 0.172117 +vn 0.910579 -0.396967 0.115167 +vn 0.916013 -0.396967 0.057765 +vn 0.917833 -0.396967 0.000130 +vn 0.928016 -0.367955 -0.058265 +vn 0.922527 -0.367954 -0.116416 +vn 0.913397 -0.367954 -0.174113 +vn 0.900662 -0.367954 -0.231122 +vn 0.884372 -0.367955 -0.287219 +vn 0.864592 -0.367955 -0.342182 +vn 0.841402 -0.367952 -0.395796 +vn 0.814888 -0.367955 -0.447846 +vn 0.785160 -0.367954 -0.498130 +vn 0.752333 -0.367955 -0.546447 +vn 0.716537 -0.367954 -0.592609 +vn 0.677913 -0.367954 -0.636431 +vn 0.636613 -0.367953 -0.677742 +vn 0.592801 -0.367954 -0.716378 +vn 0.546649 -0.367955 -0.752186 +vn 0.498340 -0.367954 -0.785027 +vn 0.448065 -0.367955 -0.814768 +vn 0.396021 -0.367954 -0.841295 +vn 0.342414 -0.367954 -0.864501 +vn 0.287457 -0.367954 -0.884295 +vn 0.231364 -0.367955 -0.900600 +vn 0.174358 -0.367955 -0.913350 +vn 0.116664 -0.367954 -0.922496 +vn 0.058510 -0.367955 -0.928001 +vn 0.000124 -0.367953 -0.929844 +vn -0.058260 -0.367955 -0.928017 +vn -0.116416 -0.367955 -0.922527 +vn -0.174113 -0.367953 -0.913397 +vn -0.231122 -0.367954 -0.900662 +vn -0.287219 -0.367954 -0.884373 +vn -0.342184 -0.367954 -0.864593 +vn -0.395795 -0.367956 -0.841400 +vn -0.447846 -0.367955 -0.814888 +vn -0.498131 -0.367954 -0.785160 +vn -0.546447 -0.367955 -0.752333 +vn -0.592609 -0.367954 -0.716537 +vn -0.636431 -0.367953 -0.677913 +vn -0.677742 -0.367954 -0.636613 +vn -0.716378 -0.367954 -0.592801 +vn -0.752187 -0.367955 -0.546649 +vn -0.785027 -0.367953 -0.498340 +vn -0.814768 -0.367956 -0.448064 +vn -0.841294 -0.367956 -0.396021 +vn -0.864501 -0.367953 -0.342415 +vn -0.884295 -0.367955 -0.287456 +vn -0.900600 -0.367954 -0.231363 +vn -0.913350 -0.367955 -0.174358 +vn -0.922496 -0.367955 -0.116664 +vn -0.928001 -0.367955 -0.058510 +vn -0.929843 -0.367955 -0.000125 +vn -0.928017 -0.367955 0.058261 +vn -0.922528 -0.367953 0.116416 +vn -0.913397 -0.367954 0.174113 +vn -0.900662 -0.367954 0.231122 +vn -0.884373 -0.367954 0.287219 +vn -0.864593 -0.367954 0.342182 +vn -0.841401 -0.367954 0.395796 +vn -0.814889 -0.367953 0.447847 +vn -0.785160 -0.367955 0.498130 +vn -0.752333 -0.367954 0.546447 +vn -0.716537 -0.367954 0.592609 +vn -0.677912 -0.367953 0.636432 +vn -0.636613 -0.367955 0.677741 +vn -0.592800 -0.367955 0.716378 +vn -0.546649 -0.367955 0.752186 +vn -0.498341 -0.367954 0.785026 +vn -0.448064 -0.367954 0.814769 +vn -0.396021 -0.367954 0.841295 +vn -0.342415 -0.367955 0.864501 +vn -0.287455 -0.367954 0.884296 +vn -0.231365 -0.367954 0.900600 +vn -0.174357 -0.367955 0.913350 +vn -0.116664 -0.367954 0.922496 +vn -0.058511 -0.367955 0.928001 +vn -0.000124 -0.367954 0.929844 +vn 0.058261 -0.367955 0.928017 +vn 0.116417 -0.367954 0.922527 +vn 0.174113 -0.367954 0.913397 +vn 0.231123 -0.367954 0.900662 +vn 0.287218 -0.367954 0.884373 +vn 0.342183 -0.367954 0.864593 +vn 0.395795 -0.367955 0.841401 +vn 0.447847 -0.367955 0.814888 +vn 0.498130 -0.367955 0.785160 +vn 0.546448 -0.367955 0.752333 +vn 0.592609 -0.367955 0.716536 +vn 0.636431 -0.367955 0.677913 +vn 0.677742 -0.367954 0.636613 +vn 0.716378 -0.367954 0.592800 +vn 0.752187 -0.367953 0.546649 +vn 0.785026 -0.367955 0.498340 +vn 0.814769 -0.367953 0.448065 +vn 0.841294 -0.367956 0.396021 +vn 0.864501 -0.367954 0.342414 +vn 0.884296 -0.367955 0.287456 +vn 0.900600 -0.367954 0.231363 +vn 0.913351 -0.367953 0.174358 +vn 0.922496 -0.367954 0.116664 +vn 0.928001 -0.367955 0.058510 +vn 0.929844 -0.367954 0.000121 +vn 0.939088 -0.338580 -0.058971 +vn 0.933533 -0.338578 -0.117816 +vn 0.924293 -0.338579 -0.176201 +vn 0.911405 -0.338579 -0.233890 +vn 0.894921 -0.338579 -0.290656 +vn 0.874904 -0.338579 -0.346275 +vn 0.851435 -0.338578 -0.400528 +vn 0.824605 -0.338580 -0.453199 +vn 0.794522 -0.338580 -0.504083 +vn 0.761302 -0.338580 -0.552976 +vn 0.725079 -0.338579 -0.599688 +vn 0.685992 -0.338579 -0.644033 +vn 0.644200 -0.338579 -0.685836 +vn 0.599865 -0.338579 -0.724932 +vn 0.553162 -0.338579 -0.761168 +vn 0.504277 -0.338580 -0.794398 +vn 0.453401 -0.338580 -0.824494 +vn 0.400735 -0.338580 -0.851337 +vn 0.346489 -0.338579 -0.874819 +vn 0.290876 -0.338581 -0.894849 +vn 0.234114 -0.338579 -0.911348 +vn 0.176427 -0.338579 -0.924250 +vn 0.118044 -0.338579 -0.933504 +vn 0.059198 -0.338580 -0.939074 +vn 0.000115 -0.338580 -0.940938 +vn -0.058967 -0.338580 -0.939088 +vn -0.117816 -0.338580 -0.933533 +vn -0.176201 -0.338580 -0.924293 +vn -0.233890 -0.338580 -0.911405 +vn -0.290657 -0.338580 -0.894920 +vn -0.346275 -0.338580 -0.874904 +vn -0.400527 -0.338580 -0.851435 +vn -0.453199 -0.338580 -0.824605 +vn -0.504083 -0.338579 -0.794521 +vn -0.552976 -0.338579 -0.761303 +vn -0.599687 -0.338579 -0.725079 +vn -0.644033 -0.338579 -0.685993 +vn -0.685835 -0.338580 -0.644200 +vn -0.724931 -0.338580 -0.599865 +vn -0.761167 -0.338580 -0.553162 +vn -0.794399 -0.338579 -0.504277 +vn -0.824494 -0.338581 -0.453401 +vn -0.851336 -0.338580 -0.400736 +vn -0.874820 -0.338579 -0.346489 +vn -0.894850 -0.338579 -0.290875 +vn -0.911347 -0.338581 -0.234113 +vn -0.924249 -0.338581 -0.176428 +vn -0.933504 -0.338580 -0.118045 +vn -0.939074 -0.338580 -0.059197 +vn -0.940937 -0.338581 -0.000115 +vn -0.939088 -0.338580 0.058967 +vn -0.933533 -0.338578 0.117816 +vn -0.924293 -0.338578 0.176201 +vn -0.911406 -0.338578 0.233890 +vn -0.894921 -0.338579 0.290656 +vn -0.874904 -0.338580 0.346275 +vn -0.851435 -0.338580 0.400527 +vn -0.824605 -0.338579 0.453200 +vn -0.794521 -0.338581 0.504082 +vn -0.761302 -0.338580 0.552976 +vn -0.725078 -0.338580 0.599688 +vn -0.685993 -0.338579 0.644033 +vn -0.644200 -0.338580 0.685835 +vn -0.599865 -0.338580 0.724932 +vn -0.553162 -0.338580 0.761167 +vn -0.504276 -0.338580 0.794398 +vn -0.453400 -0.338580 0.824495 +vn -0.400735 -0.338580 0.851337 +vn -0.346490 -0.338579 0.874819 +vn -0.290874 -0.338579 0.894850 +vn -0.234114 -0.338580 0.911348 +vn -0.176427 -0.338580 0.924250 +vn -0.118045 -0.338579 0.933504 +vn -0.059198 -0.338579 0.939074 +vn -0.000114 -0.338580 0.940938 +vn 0.058967 -0.338579 0.939088 +vn 0.117816 -0.338579 0.933533 +vn 0.176200 -0.338580 0.924293 +vn 0.233890 -0.338580 0.911405 +vn 0.290656 -0.338580 0.894921 +vn 0.346275 -0.338580 0.874904 +vn 0.400528 -0.338579 0.851435 +vn 0.453200 -0.338580 0.824605 +vn 0.504083 -0.338580 0.794521 +vn 0.552976 -0.338579 0.761302 +vn 0.599687 -0.338580 0.725079 +vn 0.644031 -0.338580 0.685994 +vn 0.685835 -0.338580 0.644200 +vn 0.724932 -0.338579 0.599865 +vn 0.761167 -0.338579 0.553163 +vn 0.794398 -0.338580 0.504277 +vn 0.824495 -0.338577 0.453402 +vn 0.851337 -0.338580 0.400736 +vn 0.874819 -0.338580 0.346489 +vn 0.894849 -0.338581 0.290875 +vn 0.911348 -0.338580 0.234113 +vn 0.924249 -0.338580 0.176427 +vn 0.933504 -0.338580 0.118045 +vn 0.939074 -0.338579 0.059197 +vn 0.940938 -0.338580 0.000111 +vn 0.949233 -0.308871 -0.059619 +vn 0.943618 -0.308868 -0.119100 +vn 0.934277 -0.308872 -0.178115 +vn 0.921250 -0.308871 -0.236427 +vn 0.904586 -0.308870 -0.293807 +vn 0.884353 -0.308871 -0.350027 +vn 0.860630 -0.308870 -0.404865 +vn 0.833510 -0.308869 -0.458105 +vn 0.803100 -0.308872 -0.509538 +vn 0.769522 -0.308870 -0.558959 +vn 0.732906 -0.308871 -0.606175 +vn 0.693397 -0.308871 -0.650998 +vn 0.651153 -0.308872 -0.693252 +vn 0.606337 -0.308871 -0.732771 +vn 0.559130 -0.308871 -0.769398 +vn 0.509716 -0.308871 -0.802987 +vn 0.458291 -0.308870 -0.833408 +vn 0.405056 -0.308871 -0.860539 +vn 0.350224 -0.308872 -0.884275 +vn 0.294008 -0.308871 -0.904521 +vn 0.236632 -0.308871 -0.921197 +vn 0.178322 -0.308870 -0.934238 +vn 0.119309 -0.308871 -0.943591 +vn 0.059827 -0.308871 -0.949221 +vn 0.000105 -0.308871 -0.951104 +vn -0.059617 -0.308871 -0.949234 +vn -0.119100 -0.308871 -0.943617 +vn -0.178115 -0.308872 -0.934277 +vn -0.236427 -0.308871 -0.921250 +vn -0.293807 -0.308871 -0.904586 +vn -0.350026 -0.308871 -0.884353 +vn -0.404865 -0.308870 -0.860629 +vn -0.458106 -0.308871 -0.833510 +vn -0.509538 -0.308871 -0.803100 +vn -0.558960 -0.308871 -0.769521 +vn -0.606175 -0.308871 -0.732906 +vn -0.650998 -0.308872 -0.693397 +vn -0.693253 -0.308870 -0.651153 +vn -0.732771 -0.308871 -0.606338 +vn -0.769397 -0.308871 -0.559130 +vn -0.802988 -0.308870 -0.509716 +vn -0.833408 -0.308872 -0.458290 +vn -0.860540 -0.308869 -0.405056 +vn -0.884276 -0.308870 -0.350223 +vn -0.904521 -0.308869 -0.294008 +vn -0.921197 -0.308872 -0.236632 +vn -0.934237 -0.308871 -0.178323 +vn -0.943591 -0.308871 -0.119309 +vn -0.949221 -0.308869 -0.059826 +vn -0.951104 -0.308870 -0.000106 +vn -0.949234 -0.308870 0.059615 +vn -0.943617 -0.308871 0.119100 +vn -0.934277 -0.308871 0.178115 +vn -0.921249 -0.308872 0.236427 +vn -0.904586 -0.308870 0.293807 +vn -0.884353 -0.308872 0.350026 +vn -0.860630 -0.308870 0.404865 +vn -0.833510 -0.308870 0.458106 +vn -0.803100 -0.308872 0.509538 +vn -0.769522 -0.308870 0.558959 +vn -0.732906 -0.308871 0.606175 +vn -0.693397 -0.308871 0.650999 +vn -0.651153 -0.308870 0.693253 +vn -0.606338 -0.308871 0.732771 +vn -0.559130 -0.308872 0.769397 +vn -0.509716 -0.308871 0.802987 +vn -0.458290 -0.308871 0.833408 +vn -0.405056 -0.308872 0.860539 +vn -0.350223 -0.308871 0.884275 +vn -0.294008 -0.308871 0.904521 +vn -0.236633 -0.308871 0.921197 +vn -0.178323 -0.308871 0.934237 +vn -0.119309 -0.308871 0.943591 +vn -0.059827 -0.308871 0.949221 +vn -0.000104 -0.308871 0.951104 +vn 0.059615 -0.308871 0.949234 +vn 0.119100 -0.308872 0.943617 +vn 0.178115 -0.308871 0.934277 +vn 0.236427 -0.308872 0.921249 +vn 0.293807 -0.308872 0.904586 +vn 0.350027 -0.308871 0.884353 +vn 0.404865 -0.308871 0.860629 +vn 0.458105 -0.308871 0.833510 +vn 0.509539 -0.308871 0.803100 +vn 0.558960 -0.308870 0.769521 +vn 0.606175 -0.308872 0.732906 +vn 0.650998 -0.308872 0.693397 +vn 0.693253 -0.308871 0.651152 +vn 0.732771 -0.308872 0.606337 +vn 0.769397 -0.308871 0.559130 +vn 0.802987 -0.308872 0.509716 +vn 0.833409 -0.308869 0.458290 +vn 0.860539 -0.308872 0.405056 +vn 0.884275 -0.308871 0.350223 +vn 0.904521 -0.308872 0.294007 +vn 0.921197 -0.308872 0.236632 +vn 0.934237 -0.308871 0.178323 +vn 0.943591 -0.308872 0.119309 +vn 0.949220 -0.308873 0.059826 +vn 0.951104 -0.308869 0.000102 +vn 0.958443 -0.278860 -0.060208 +vn 0.952772 -0.278858 -0.120267 +vn 0.943340 -0.278860 -0.179854 +vn 0.930185 -0.278858 -0.238732 +vn 0.913359 -0.278860 -0.296668 +vn 0.892930 -0.278857 -0.353434 +vn 0.868975 -0.278860 -0.408803 +vn 0.841592 -0.278858 -0.462560 +vn 0.810886 -0.278860 -0.514491 +vn 0.776981 -0.278859 -0.564391 +vn 0.740009 -0.278861 -0.612064 +vn 0.700117 -0.278859 -0.657323 +vn 0.657462 -0.278860 -0.699986 +vn 0.612212 -0.278860 -0.739888 +vn 0.564546 -0.278860 -0.776869 +vn 0.514652 -0.278859 -0.810785 +vn 0.462727 -0.278858 -0.841500 +vn 0.408977 -0.278858 -0.868894 +vn 0.353611 -0.278859 -0.892859 +vn 0.296850 -0.278859 -0.913301 +vn 0.238917 -0.278860 -0.930138 +vn 0.180042 -0.278860 -0.943304 +vn 0.120458 -0.278859 -0.952747 +vn 0.060396 -0.278859 -0.958431 +vn 0.000095 -0.278859 -0.960332 +vn -0.060205 -0.278859 -0.958443 +vn -0.120266 -0.278859 -0.952771 +vn -0.179853 -0.278860 -0.943340 +vn -0.238733 -0.278859 -0.930185 +vn -0.296668 -0.278859 -0.913359 +vn -0.353433 -0.278859 -0.892929 +vn -0.408803 -0.278859 -0.868975 +vn -0.462560 -0.278859 -0.841591 +vn -0.514491 -0.278859 -0.810886 +vn -0.564392 -0.278860 -0.776981 +vn -0.612064 -0.278860 -0.740010 +vn -0.657323 -0.278860 -0.700117 +vn -0.699986 -0.278858 -0.657463 +vn -0.739888 -0.278857 -0.612213 +vn -0.776869 -0.278860 -0.564546 +vn -0.810785 -0.278858 -0.514652 +vn -0.841499 -0.278860 -0.462727 +vn -0.868894 -0.278860 -0.408976 +vn -0.892859 -0.278860 -0.353611 +vn -0.913301 -0.278859 -0.296850 +vn -0.930137 -0.278861 -0.238918 +vn -0.943304 -0.278860 -0.180042 +vn -0.952748 -0.278859 -0.120456 +vn -0.958431 -0.278859 -0.060396 +vn -0.960332 -0.278859 -0.000096 +vn -0.958443 -0.278857 0.060205 +vn -0.952771 -0.278860 0.120266 +vn -0.943340 -0.278858 0.179854 +vn -0.930185 -0.278861 0.238732 +vn -0.913359 -0.278860 0.296668 +vn -0.892930 -0.278857 0.353433 +vn -0.868975 -0.278858 0.408803 +vn -0.841592 -0.278859 0.462560 +vn -0.810886 -0.278862 0.514490 +vn -0.776981 -0.278858 0.564392 +vn -0.740009 -0.278859 0.612065 +vn -0.700118 -0.278859 0.657323 +vn -0.657463 -0.278858 0.699986 +vn -0.612212 -0.278859 0.739888 +vn -0.564546 -0.278859 0.776869 +vn -0.514652 -0.278859 0.810784 +vn -0.462727 -0.278859 0.841500 +vn -0.408976 -0.278859 0.868894 +vn -0.353611 -0.278859 0.892859 +vn -0.296850 -0.278859 0.913301 +vn -0.238916 -0.278859 0.930138 +vn -0.180042 -0.278859 0.943304 +vn -0.120457 -0.278859 0.952747 +vn -0.060395 -0.278859 0.958431 +vn -0.000095 -0.278859 0.960332 +vn 0.060204 -0.278859 0.958443 +vn 0.120266 -0.278859 0.952771 +vn 0.179853 -0.278859 0.943340 +vn 0.238732 -0.278860 0.930185 +vn 0.296668 -0.278859 0.913359 +vn 0.353434 -0.278858 0.892929 +vn 0.408803 -0.278860 0.868975 +vn 0.462560 -0.278858 0.841591 +vn 0.514492 -0.278859 0.810886 +vn 0.564391 -0.278860 0.776981 +vn 0.612065 -0.278860 0.740010 +vn 0.657323 -0.278860 0.700117 +vn 0.699986 -0.278860 0.657462 +vn 0.739887 -0.278860 0.612212 +vn 0.776869 -0.278858 0.564546 +vn 0.810784 -0.278860 0.514652 +vn 0.841500 -0.278858 0.462727 +vn 0.868893 -0.278862 0.408976 +vn 0.892859 -0.278858 0.353611 +vn 0.913300 -0.278861 0.296850 +vn 0.930138 -0.278857 0.238918 +vn 0.943304 -0.278859 0.180042 +vn 0.952747 -0.278861 0.120456 +vn 0.958431 -0.278860 0.060396 +vn 0.960332 -0.278858 0.000091 +vn 0.966707 -0.248571 -0.060738 +vn 0.960987 -0.248570 -0.121315 +vn 0.951472 -0.248573 -0.181416 +vn 0.938204 -0.248570 -0.240802 +vn 0.921233 -0.248572 -0.299237 +vn 0.900626 -0.248570 -0.356491 +vn 0.876464 -0.248572 -0.412338 +vn 0.848844 -0.248571 -0.466558 +vn 0.817874 -0.248569 -0.518937 +vn 0.783676 -0.248571 -0.569267 +vn 0.746384 -0.248570 -0.617352 +vn 0.706148 -0.248571 -0.662999 +vn 0.663124 -0.248572 -0.706030 +vn 0.617484 -0.248571 -0.746275 +vn 0.569405 -0.248572 -0.783575 +vn 0.519081 -0.248571 -0.817782 +vn 0.466708 -0.248571 -0.848762 +vn 0.412494 -0.248570 -0.876391 +vn 0.356650 -0.248571 -0.900563 +vn 0.299399 -0.248570 -0.921180 +vn 0.240967 -0.248571 -0.938162 +vn 0.181584 -0.248571 -0.951441 +vn 0.121484 -0.248571 -0.960965 +vn 0.060906 -0.248571 -0.966697 +vn 0.000084 -0.248571 -0.968614 +vn -0.060734 -0.248571 -0.966708 +vn -0.121314 -0.248571 -0.960987 +vn -0.181416 -0.248571 -0.951473 +vn -0.240802 -0.248571 -0.938204 +vn -0.299236 -0.248572 -0.921233 +vn -0.356491 -0.248571 -0.900626 +vn -0.412338 -0.248572 -0.876464 +vn -0.466559 -0.248571 -0.848844 +vn -0.518938 -0.248570 -0.817873 +vn -0.569267 -0.248572 -0.783676 +vn -0.617351 -0.248571 -0.746385 +vn -0.663000 -0.248571 -0.706147 +vn -0.706030 -0.248572 -0.663124 +vn -0.746276 -0.248570 -0.617483 +vn -0.783575 -0.248572 -0.569405 +vn -0.817782 -0.248571 -0.519081 +vn -0.848762 -0.248571 -0.466708 +vn -0.876391 -0.248573 -0.412492 +vn -0.900563 -0.248570 -0.356650 +vn -0.921180 -0.248571 -0.299399 +vn -0.938161 -0.248573 -0.240967 +vn -0.951441 -0.248572 -0.181584 +vn -0.960965 -0.248572 -0.121484 +vn -0.966696 -0.248573 -0.060906 +vn -0.968614 -0.248571 -0.000085 +vn -0.966708 -0.248569 0.060734 +vn -0.960987 -0.248570 0.121314 +vn -0.951473 -0.248570 0.181416 +vn -0.938204 -0.248571 0.240802 +vn -0.921232 -0.248573 0.299237 +vn -0.900626 -0.248569 0.356491 +vn -0.876464 -0.248572 0.412338 +vn -0.848844 -0.248572 0.466558 +vn -0.817873 -0.248572 0.518937 +vn -0.783675 -0.248572 0.569268 +vn -0.746385 -0.248569 0.617352 +vn -0.706148 -0.248570 0.662999 +vn -0.663124 -0.248571 0.706030 +vn -0.617483 -0.248570 0.746275 +vn -0.569406 -0.248571 0.783574 +vn -0.519082 -0.248572 0.817781 +vn -0.466708 -0.248571 0.848761 +vn -0.412492 -0.248572 0.876392 +vn -0.356650 -0.248571 0.900563 +vn -0.299400 -0.248571 0.921180 +vn -0.240967 -0.248572 0.938162 +vn -0.181584 -0.248571 0.951441 +vn -0.121485 -0.248571 0.960965 +vn -0.060905 -0.248572 0.966697 +vn -0.000086 -0.248571 0.968614 +vn 0.060734 -0.248572 0.966708 +vn 0.121315 -0.248571 0.960987 +vn 0.181415 -0.248572 0.951473 +vn 0.240802 -0.248570 0.938204 +vn 0.299237 -0.248570 0.921233 +vn 0.356491 -0.248571 0.900626 +vn 0.412338 -0.248571 0.876464 +vn 0.466559 -0.248570 0.848844 +vn 0.518937 -0.248572 0.817873 +vn 0.569268 -0.248572 0.783675 +vn 0.617352 -0.248571 0.746384 +vn 0.662999 -0.248572 0.706148 +vn 0.706030 -0.248572 0.663124 +vn 0.746276 -0.248570 0.617483 +vn 0.783575 -0.248570 0.569405 +vn 0.817782 -0.248571 0.519081 +vn 0.848762 -0.248571 0.466708 +vn 0.876391 -0.248573 0.412493 +vn 0.900563 -0.248570 0.356650 +vn 0.921180 -0.248572 0.299399 +vn 0.938162 -0.248569 0.240967 +vn 0.951441 -0.248571 0.181584 +vn 0.960965 -0.248573 0.121484 +vn 0.966697 -0.248571 0.060905 +vn 0.968614 -0.248571 0.000081 +vn 0.974019 -0.218038 -0.061209 +vn 0.968255 -0.218036 -0.122243 +vn 0.958668 -0.218038 -0.182799 +vn 0.945298 -0.218037 -0.242634 +vn 0.928198 -0.218037 -0.301511 +vn 0.907434 -0.218037 -0.359198 +vn 0.883090 -0.218036 -0.415467 +vn 0.855260 -0.218038 -0.470097 +vn 0.824054 -0.218036 -0.522872 +vn 0.789597 -0.218037 -0.573583 +vn 0.752024 -0.218035 -0.622030 +vn 0.711482 -0.218038 -0.668022 +vn 0.668132 -0.218037 -0.711379 +vn 0.622146 -0.218037 -0.751927 +vn 0.573703 -0.218038 -0.789509 +vn 0.522998 -0.218038 -0.823974 +vn 0.470229 -0.218037 -0.855187 +vn 0.415604 -0.218038 -0.883025 +vn 0.359338 -0.218037 -0.907379 +vn 0.301653 -0.218037 -0.928152 +vn 0.242779 -0.218037 -0.945261 +vn 0.182948 -0.218037 -0.958640 +vn 0.122393 -0.218037 -0.968235 +vn 0.061356 -0.218037 -0.974010 +vn 0.000074 -0.218037 -0.975940 +vn -0.061204 -0.218037 -0.974019 +vn -0.122243 -0.218037 -0.968254 +vn -0.182799 -0.218036 -0.958668 +vn -0.242633 -0.218038 -0.945298 +vn -0.301511 -0.218037 -0.928198 +vn -0.359198 -0.218037 -0.907434 +vn -0.415467 -0.218037 -0.883089 +vn -0.470097 -0.218037 -0.855259 +vn -0.522872 -0.218037 -0.824054 +vn -0.573582 -0.218037 -0.789597 +vn -0.622030 -0.218037 -0.752023 +vn -0.668022 -0.218038 -0.711482 +vn -0.711378 -0.218039 -0.668132 +vn -0.751927 -0.218036 -0.622146 +vn -0.789508 -0.218037 -0.573704 +vn -0.823974 -0.218038 -0.522998 +vn -0.855187 -0.218038 -0.470228 +vn -0.883025 -0.218038 -0.415603 +vn -0.907379 -0.218036 -0.359338 +vn -0.928151 -0.218039 -0.301654 +vn -0.945261 -0.218038 -0.242779 +vn -0.958640 -0.218036 -0.182947 +vn -0.968235 -0.218038 -0.122393 +vn -0.974010 -0.218039 -0.061355 +vn -0.975940 -0.218038 -0.000075 +vn -0.974019 -0.218037 0.061205 +vn -0.968254 -0.218037 0.122243 +vn -0.958668 -0.218035 0.182799 +vn -0.945298 -0.218038 0.242634 +vn -0.928198 -0.218039 0.301511 +vn -0.907434 -0.218037 0.359198 +vn -0.883089 -0.218037 0.415467 +vn -0.855259 -0.218037 0.470097 +vn -0.824054 -0.218037 0.522872 +vn -0.789596 -0.218040 0.573582 +vn -0.752023 -0.218037 0.622030 +vn -0.711481 -0.218038 0.668023 +vn -0.668132 -0.218037 0.711378 +vn -0.622145 -0.218037 0.751928 +vn -0.573704 -0.218038 0.789508 +vn -0.522998 -0.218037 0.823974 +vn -0.470228 -0.218037 0.855187 +vn -0.415603 -0.218037 0.883026 +vn -0.359338 -0.218037 0.907379 +vn -0.301654 -0.218037 0.928151 +vn -0.242779 -0.218038 0.945261 +vn -0.182947 -0.218037 0.958640 +vn -0.122394 -0.218038 0.968235 +vn -0.061355 -0.218037 0.974010 +vn -0.000076 -0.218037 0.975940 +vn 0.061206 -0.218037 0.974019 +vn 0.122243 -0.218037 0.968254 +vn 0.182799 -0.218037 0.958668 +vn 0.242633 -0.218037 0.945298 +vn 0.301511 -0.218038 0.928198 +vn 0.359198 -0.218038 0.907434 +vn 0.415467 -0.218038 0.883089 +vn 0.470097 -0.218038 0.855259 +vn 0.522872 -0.218037 0.824054 +vn 0.573583 -0.218038 0.789596 +vn 0.622030 -0.218037 0.752023 +vn 0.668023 -0.218037 0.711481 +vn 0.711378 -0.218038 0.668132 +vn 0.751927 -0.218038 0.622146 +vn 0.789509 -0.218036 0.573704 +vn 0.823973 -0.218038 0.522999 +vn 0.855187 -0.218038 0.470228 +vn 0.883025 -0.218039 0.415603 +vn 0.907379 -0.218037 0.359338 +vn 0.928151 -0.218038 0.301654 +vn 0.945261 -0.218036 0.242780 +vn 0.958640 -0.218038 0.182947 +vn 0.968235 -0.218039 0.122392 +vn 0.974010 -0.218038 0.061355 +vn 0.975941 -0.218036 0.000071 +vn 0.980370 -0.187289 -0.061619 +vn 0.974567 -0.187288 -0.123051 +vn 0.964918 -0.187289 -0.184002 +vn 0.951460 -0.187292 -0.244226 +vn 0.934247 -0.187289 -0.303488 +vn 0.913347 -0.187290 -0.361551 +vn 0.888843 -0.187291 -0.418186 +vn 0.860831 -0.187291 -0.473172 +vn 0.829422 -0.187289 -0.526291 +vn 0.794739 -0.187290 -0.577332 +vn 0.756921 -0.187287 -0.626094 +vn 0.716114 -0.187291 -0.672387 +vn 0.672481 -0.187289 -0.716025 +vn 0.626194 -0.187290 -0.756838 +vn 0.577436 -0.187291 -0.794663 +vn 0.526400 -0.187291 -0.829352 +vn 0.473286 -0.187291 -0.860768 +vn 0.418303 -0.187291 -0.888788 +vn 0.361671 -0.187290 -0.913300 +vn 0.303610 -0.187291 -0.934207 +vn 0.244352 -0.187290 -0.951428 +vn 0.184130 -0.187290 -0.964893 +vn 0.123180 -0.187290 -0.974551 +vn 0.061743 -0.187291 -0.980362 +vn 0.000064 -0.187291 -0.982305 +vn -0.061614 -0.187291 -0.980370 +vn -0.123051 -0.187290 -0.974567 +vn -0.184000 -0.187290 -0.964918 +vn -0.244227 -0.187290 -0.951460 +vn -0.303487 -0.187290 -0.934247 +vn -0.361550 -0.187292 -0.913347 +vn -0.418187 -0.187291 -0.888843 +vn -0.473172 -0.187290 -0.860831 +vn -0.526291 -0.187290 -0.829422 +vn -0.577331 -0.187290 -0.794740 +vn -0.626095 -0.187290 -0.756920 +vn -0.672387 -0.187290 -0.716114 +vn -0.716025 -0.187292 -0.672481 +vn -0.756838 -0.187288 -0.626194 +vn -0.794664 -0.187289 -0.577436 +vn -0.829353 -0.187290 -0.526399 +vn -0.860769 -0.187290 -0.473285 +vn -0.888789 -0.187290 -0.418303 +vn -0.913300 -0.187291 -0.361671 +vn -0.934207 -0.187291 -0.303611 +vn -0.951427 -0.187291 -0.244352 +vn -0.964894 -0.187287 -0.184129 +vn -0.974551 -0.187290 -0.123180 +vn -0.980362 -0.187291 -0.061744 +vn -0.982304 -0.187291 -0.000065 +vn -0.980370 -0.187293 0.061615 +vn -0.974567 -0.187290 0.123051 +vn -0.964918 -0.187288 0.184002 +vn -0.951460 -0.187291 0.244226 +vn -0.934247 -0.187291 0.303487 +vn -0.913348 -0.187289 0.361550 +vn -0.888843 -0.187290 0.418186 +vn -0.860831 -0.187291 0.473172 +vn -0.829422 -0.187290 0.526291 +vn -0.794739 -0.187290 0.577332 +vn -0.756920 -0.187291 0.626094 +vn -0.716114 -0.187290 0.672386 +vn -0.672481 -0.187291 0.716025 +vn -0.626194 -0.187291 0.756837 +vn -0.577437 -0.187289 0.794663 +vn -0.526399 -0.187290 0.829353 +vn -0.473285 -0.187290 0.860769 +vn -0.418304 -0.187291 0.888788 +vn -0.361671 -0.187290 0.913300 +vn -0.303611 -0.187290 0.934207 +vn -0.244351 -0.187291 0.951428 +vn -0.184130 -0.187290 0.964893 +vn -0.123180 -0.187290 0.974551 +vn -0.061745 -0.187290 0.980362 +vn -0.000065 -0.187290 0.982305 +vn 0.061616 -0.187290 0.980370 +vn 0.123050 -0.187291 0.974567 +vn 0.184002 -0.187290 0.964917 +vn 0.244227 -0.187290 0.951460 +vn 0.303487 -0.187291 0.934247 +vn 0.361550 -0.187291 0.913348 +vn 0.418187 -0.187291 0.888843 +vn 0.473172 -0.187291 0.860831 +vn 0.526291 -0.187290 0.829421 +vn 0.577332 -0.187290 0.794739 +vn 0.626095 -0.187290 0.756920 +vn 0.672387 -0.187290 0.716114 +vn 0.716025 -0.187290 0.672481 +vn 0.756838 -0.187290 0.626194 +vn 0.794663 -0.187289 0.577436 +vn 0.829352 -0.187291 0.526400 +vn 0.860769 -0.187291 0.473285 +vn 0.888788 -0.187291 0.418303 +vn 0.913300 -0.187290 0.361671 +vn 0.934207 -0.187291 0.303610 +vn 0.951428 -0.187289 0.244352 +vn 0.964893 -0.187293 0.184129 +vn 0.974551 -0.187289 0.123180 +vn 0.980362 -0.187291 0.061744 +vn 0.982304 -0.187291 0.000060 +vn 0.985755 -0.156358 -0.061968 +vn 0.979919 -0.156358 -0.123738 +vn 0.970215 -0.156361 -0.185023 +vn 0.956684 -0.156356 -0.245579 +vn 0.939376 -0.156359 -0.305165 +vn 0.918360 -0.156361 -0.363546 +vn 0.893721 -0.156359 -0.420493 +vn 0.865555 -0.156358 -0.475781 +vn 0.833972 -0.156359 -0.529190 +vn 0.799099 -0.156359 -0.580511 +vn 0.761071 -0.156357 -0.629542 +vn 0.720040 -0.156360 -0.676088 +vn 0.676167 -0.156358 -0.719965 +vn 0.629625 -0.156359 -0.761002 +vn 0.580600 -0.156358 -0.799035 +vn 0.529281 -0.156358 -0.833915 +vn 0.475876 -0.156358 -0.865502 +vn 0.420592 -0.156358 -0.893675 +vn 0.363648 -0.156358 -0.918320 +vn 0.305268 -0.156359 -0.939342 +vn 0.245684 -0.156359 -0.956656 +vn 0.185130 -0.156358 -0.970195 +vn 0.123845 -0.156358 -0.979905 +vn 0.062072 -0.156358 -0.985748 +vn 0.000055 -0.156358 -0.987700 +vn -0.061965 -0.156358 -0.985755 +vn -0.123737 -0.156358 -0.979919 +vn -0.185023 -0.156358 -0.970216 +vn -0.245579 -0.156359 -0.956683 +vn -0.305164 -0.156359 -0.939376 +vn -0.363546 -0.156358 -0.918361 +vn -0.420494 -0.156358 -0.893721 +vn -0.475781 -0.156358 -0.865554 +vn -0.529191 -0.156359 -0.833972 +vn -0.580512 -0.156358 -0.799099 +vn -0.629543 -0.156358 -0.761070 +vn -0.676087 -0.156358 -0.720041 +vn -0.719965 -0.156360 -0.676167 +vn -0.761002 -0.156358 -0.629625 +vn -0.799035 -0.156358 -0.580599 +vn -0.833914 -0.156359 -0.529281 +vn -0.865502 -0.156359 -0.475876 +vn -0.893675 -0.156357 -0.420591 +vn -0.918321 -0.156358 -0.363647 +vn -0.939342 -0.156359 -0.305268 +vn -0.956656 -0.156360 -0.245684 +vn -0.970195 -0.156358 -0.185130 +vn -0.979905 -0.156358 -0.123846 +vn -0.985748 -0.156357 -0.062073 +vn -0.987700 -0.156359 -0.000054 +vn -0.985755 -0.156358 0.061964 +vn -0.979919 -0.156361 0.123738 +vn -0.970216 -0.156357 0.185023 +vn -0.956684 -0.156358 0.245578 +vn -0.939376 -0.156359 0.305165 +vn -0.918360 -0.156360 0.363547 +vn -0.893721 -0.156358 0.420493 +vn -0.865554 -0.156359 0.475781 +vn -0.833972 -0.156358 0.529191 +vn -0.799099 -0.156359 0.580511 +vn -0.761071 -0.156360 0.629542 +vn -0.720040 -0.156360 0.676088 +vn -0.676167 -0.156360 0.719965 +vn -0.629626 -0.156359 0.761002 +vn -0.580599 -0.156359 0.799035 +vn -0.529281 -0.156359 0.833914 +vn -0.475876 -0.156358 0.865502 +vn -0.420592 -0.156358 0.893675 +vn -0.363647 -0.156358 0.918321 +vn -0.305268 -0.156359 0.939342 +vn -0.245683 -0.156359 0.956657 +vn -0.185130 -0.156359 0.970195 +vn -0.123845 -0.156358 0.979905 +vn -0.062073 -0.156359 0.985748 +vn -0.000054 -0.156359 0.987700 +vn 0.061964 -0.156359 0.985755 +vn 0.123737 -0.156358 0.979919 +vn 0.185023 -0.156359 0.970216 +vn 0.245579 -0.156359 0.956683 +vn 0.305164 -0.156359 0.939376 +vn 0.363546 -0.156358 0.918361 +vn 0.420494 -0.156358 0.893721 +vn 0.475781 -0.156359 0.865554 +vn 0.529191 -0.156359 0.833972 +vn 0.580512 -0.156358 0.799098 +vn 0.629542 -0.156359 0.761071 +vn 0.676088 -0.156357 0.720040 +vn 0.719966 -0.156357 0.676167 +vn 0.761002 -0.156359 0.629626 +vn 0.799035 -0.156357 0.580599 +vn 0.833914 -0.156359 0.529282 +vn 0.865503 -0.156358 0.475875 +vn 0.893675 -0.156359 0.420591 +vn 0.918320 -0.156360 0.363647 +vn 0.939342 -0.156359 0.305268 +vn 0.956656 -0.156359 0.245684 +vn 0.970195 -0.156359 0.185130 +vn 0.979906 -0.156356 0.123846 +vn 0.985748 -0.156357 0.062072 +vn 0.987700 -0.156360 0.000050 +vn 0.990167 -0.125271 -0.062257 +vn 0.984305 -0.125272 -0.124302 +vn 0.974557 -0.125274 -0.185862 +vn 0.960964 -0.125271 -0.246689 +vn 0.943578 -0.125274 -0.306541 +vn 0.922468 -0.125272 -0.365185 +vn 0.897718 -0.125272 -0.422386 +vn 0.869425 -0.125273 -0.477920 +vn 0.837700 -0.125275 -0.531569 +vn 0.802670 -0.125270 -0.583120 +vn 0.764471 -0.125272 -0.632369 +vn 0.723256 -0.125272 -0.679123 +vn 0.679186 -0.125272 -0.723196 +vn 0.632436 -0.125272 -0.764416 +vn 0.583190 -0.125272 -0.802618 +vn 0.531642 -0.125270 -0.837654 +vn 0.477997 -0.125272 -0.869382 +vn 0.422465 -0.125272 -0.897681 +vn 0.365265 -0.125272 -0.922436 +vn 0.306624 -0.125272 -0.943551 +vn 0.246773 -0.125272 -0.960942 +vn 0.185948 -0.125272 -0.974541 +vn 0.124388 -0.125273 -0.984294 +vn 0.062340 -0.125272 -0.990162 +vn 0.000044 -0.125272 -0.992122 +vn -0.062253 -0.125272 -0.990167 +vn -0.124302 -0.125273 -0.984305 +vn -0.185863 -0.125272 -0.974557 +vn -0.246687 -0.125273 -0.960964 +vn -0.306541 -0.125272 -0.943578 +vn -0.365185 -0.125271 -0.922468 +vn -0.422385 -0.125272 -0.897718 +vn -0.477921 -0.125272 -0.869424 +vn -0.531569 -0.125273 -0.837700 +vn -0.583120 -0.125271 -0.802669 +vn -0.632369 -0.125272 -0.764471 +vn -0.679122 -0.125272 -0.723256 +vn -0.723196 -0.125272 -0.679186 +vn -0.764416 -0.125271 -0.632436 +vn -0.802619 -0.125273 -0.583190 +vn -0.837654 -0.125274 -0.531642 +vn -0.869383 -0.125272 -0.477996 +vn -0.897681 -0.125271 -0.422464 +vn -0.922436 -0.125271 -0.365265 +vn -0.943551 -0.125272 -0.306625 +vn -0.960942 -0.125272 -0.246773 +vn -0.974541 -0.125275 -0.185948 +vn -0.984294 -0.125272 -0.124389 +vn -0.990162 -0.125272 -0.062340 +vn -0.992122 -0.125275 -0.000043 +vn -0.990168 -0.125270 0.062252 +vn -0.984305 -0.125273 0.124303 +vn -0.974557 -0.125271 0.185862 +vn -0.960964 -0.125273 0.246688 +vn -0.943578 -0.125271 0.306541 +vn -0.922468 -0.125275 0.365184 +vn -0.897718 -0.125271 0.422386 +vn -0.869424 -0.125273 0.477921 +vn -0.837700 -0.125272 0.531569 +vn -0.802670 -0.125272 0.583119 +vn -0.764471 -0.125272 0.632369 +vn -0.723256 -0.125272 0.679123 +vn -0.679186 -0.125272 0.723196 +vn -0.632436 -0.125272 0.764416 +vn -0.583190 -0.125272 0.802618 +vn -0.531642 -0.125272 0.837654 +vn -0.477996 -0.125272 0.869383 +vn -0.422464 -0.125272 0.897681 +vn -0.365265 -0.125272 0.922436 +vn -0.306625 -0.125272 0.943551 +vn -0.246772 -0.125271 0.960943 +vn -0.185948 -0.125272 0.974541 +vn -0.124389 -0.125272 0.984294 +vn -0.062340 -0.125273 0.990162 +vn -0.000044 -0.125272 0.992122 +vn 0.062253 -0.125273 0.990167 +vn 0.124302 -0.125272 0.984305 +vn 0.185862 -0.125272 0.974557 +vn 0.246689 -0.125273 0.960964 +vn 0.306541 -0.125272 0.943578 +vn 0.365185 -0.125273 0.922468 +vn 0.422386 -0.125272 0.897718 +vn 0.477921 -0.125272 0.869425 +vn 0.531569 -0.125273 0.837700 +vn 0.583120 -0.125272 0.802669 +vn 0.632369 -0.125272 0.764472 +vn 0.679123 -0.125272 0.723256 +vn 0.723196 -0.125272 0.679186 +vn 0.764416 -0.125274 0.632436 +vn 0.802619 -0.125271 0.583190 +vn 0.837653 -0.125272 0.531642 +vn 0.869383 -0.125272 0.477997 +vn 0.897681 -0.125271 0.422465 +vn 0.922436 -0.125272 0.365265 +vn 0.943551 -0.125270 0.306624 +vn 0.960942 -0.125270 0.246773 +vn 0.974541 -0.125273 0.185948 +vn 0.984294 -0.125272 0.124389 +vn 0.990162 -0.125273 0.062339 +vn 0.992122 -0.125273 0.000039 +vn 0.993604 -0.094058 -0.062484 +vn 0.987720 -0.094063 -0.124745 +vn 0.977938 -0.094062 -0.186518 +vn 0.964297 -0.094062 -0.247555 +vn 0.946850 -0.094061 -0.307616 +vn 0.925666 -0.094062 -0.366463 +vn 0.900829 -0.094063 -0.423862 +vn 0.872437 -0.094062 -0.479589 +vn 0.840602 -0.094064 -0.533424 +vn 0.805449 -0.094061 -0.585153 +vn 0.767118 -0.094063 -0.634572 +vn 0.725759 -0.094062 -0.681488 +vn 0.681536 -0.094064 -0.725714 +vn 0.634622 -0.094062 -0.767077 +vn 0.585205 -0.094064 -0.805411 +vn 0.533479 -0.094062 -0.840567 +vn 0.479646 -0.094063 -0.872406 +vn 0.423921 -0.094063 -0.900801 +vn 0.366523 -0.094062 -0.925642 +vn 0.307679 -0.094063 -0.946829 +vn 0.247619 -0.094063 -0.964281 +vn 0.186583 -0.094062 -0.977926 +vn 0.124811 -0.094062 -0.987712 +vn 0.062546 -0.094063 -0.993600 +vn 0.000032 -0.094063 -0.995566 +vn -0.062479 -0.094063 -0.993604 +vn -0.124745 -0.094064 -0.987720 +vn -0.186518 -0.094063 -0.977938 +vn -0.247556 -0.094062 -0.964297 +vn -0.307617 -0.094063 -0.946850 +vn -0.366463 -0.094063 -0.925666 +vn -0.423862 -0.094063 -0.900829 +vn -0.479590 -0.094063 -0.872437 +vn -0.533424 -0.094063 -0.840601 +vn -0.585153 -0.094063 -0.805449 +vn -0.634572 -0.094062 -0.767118 +vn -0.681488 -0.094063 -0.725759 +vn -0.725714 -0.094062 -0.681537 +vn -0.767076 -0.094062 -0.634623 +vn -0.805411 -0.094063 -0.585205 +vn -0.840567 -0.094063 -0.533478 +vn -0.872406 -0.094064 -0.479646 +vn -0.900801 -0.094064 -0.423921 +vn -0.925642 -0.094064 -0.366523 +vn -0.946830 -0.094062 -0.307678 +vn -0.964281 -0.094062 -0.247619 +vn -0.977926 -0.094065 -0.186583 +vn -0.987712 -0.094065 -0.124811 +vn -0.993600 -0.094064 -0.062545 +vn -0.995566 -0.094062 -0.000033 +vn -0.993604 -0.094062 0.062480 +vn -0.987720 -0.094061 0.124745 +vn -0.977938 -0.094064 0.186518 +vn -0.964297 -0.094064 0.247555 +vn -0.946850 -0.094059 0.307616 +vn -0.925666 -0.094063 0.366462 +vn -0.900829 -0.094063 0.423862 +vn -0.872437 -0.094064 0.479589 +vn -0.840602 -0.094062 0.533424 +vn -0.805449 -0.094063 0.585153 +vn -0.767118 -0.094062 0.634572 +vn -0.725759 -0.094062 0.681488 +vn -0.681536 -0.094063 0.725714 +vn -0.634622 -0.094063 0.767077 +vn -0.585206 -0.094062 0.805411 +vn -0.533478 -0.094063 0.840567 +vn -0.479646 -0.094063 0.872406 +vn -0.423921 -0.094063 0.900801 +vn -0.366522 -0.094063 0.925642 +vn -0.307679 -0.094062 0.946830 +vn -0.247618 -0.094062 0.964281 +vn -0.186584 -0.094063 0.977926 +vn -0.124810 -0.094064 0.987712 +vn -0.062545 -0.094063 0.993600 +vn -0.000033 -0.094063 0.995566 +vn 0.062480 -0.094063 0.993604 +vn 0.124746 -0.094062 0.987720 +vn 0.186519 -0.094063 0.977938 +vn 0.247555 -0.094063 0.964297 +vn 0.307616 -0.094063 0.946850 +vn 0.366463 -0.094063 0.925666 +vn 0.423862 -0.094062 0.900829 +vn 0.479589 -0.094063 0.872437 +vn 0.533424 -0.094062 0.840601 +vn 0.585153 -0.094063 0.805449 +vn 0.634572 -0.094062 0.767118 +vn 0.681488 -0.094063 0.725759 +vn 0.725714 -0.094063 0.681536 +vn 0.767076 -0.094063 0.634623 +vn 0.805411 -0.094062 0.585205 +vn 0.840567 -0.094064 0.533478 +vn 0.872406 -0.094062 0.479646 +vn 0.900802 -0.094061 0.423921 +vn 0.925642 -0.094062 0.366523 +vn 0.946830 -0.094063 0.307678 +vn 0.964281 -0.094062 0.247619 +vn 0.977926 -0.094063 0.186583 +vn 0.987712 -0.094063 0.124810 +vn 0.993600 -0.094064 0.062545 +vn 0.995566 -0.094064 0.000028 +vn 0.996061 -0.062758 -0.062649 +vn 0.990162 -0.062760 -0.125064 +vn 0.980355 -0.062758 -0.186990 +vn 0.966679 -0.062760 -0.248178 +vn 0.949188 -0.062759 -0.308388 +vn 0.927951 -0.062761 -0.367379 +vn 0.903053 -0.062760 -0.424920 +vn 0.874590 -0.062759 -0.480784 +vn 0.842675 -0.062761 -0.534752 +vn 0.807435 -0.062761 -0.586609 +vn 0.769009 -0.062761 -0.636150 +vn 0.727547 -0.062760 -0.683182 +vn 0.683214 -0.062760 -0.727517 +vn 0.636184 -0.062759 -0.768981 +vn 0.586644 -0.062761 -0.807409 +vn 0.534789 -0.062759 -0.842652 +vn 0.480823 -0.062760 -0.874569 +vn 0.424959 -0.062760 -0.903034 +vn 0.367419 -0.062759 -0.927936 +vn 0.308429 -0.062760 -0.949175 +vn 0.248221 -0.062760 -0.966668 +vn 0.187033 -0.062760 -0.980347 +vn 0.125108 -0.062760 -0.990156 +vn 0.062688 -0.062759 -0.996058 +vn 0.000022 -0.062760 -0.998029 +vn -0.062644 -0.062759 -0.996061 +vn -0.125065 -0.062759 -0.990162 +vn -0.186991 -0.062759 -0.980355 +vn -0.248179 -0.062759 -0.966679 +vn -0.308387 -0.062760 -0.949189 +vn -0.367378 -0.062759 -0.927952 +vn -0.424920 -0.062760 -0.903053 +vn -0.480785 -0.062760 -0.874590 +vn -0.534753 -0.062760 -0.842675 +vn -0.586608 -0.062760 -0.807435 +vn -0.636150 -0.062760 -0.769008 +vn -0.683182 -0.062760 -0.727546 +vn -0.727516 -0.062761 -0.683214 +vn -0.768981 -0.062759 -0.636184 +vn -0.807410 -0.062758 -0.586644 +vn -0.842652 -0.062761 -0.534789 +vn -0.874569 -0.062759 -0.480823 +vn -0.903034 -0.062758 -0.424960 +vn -0.927936 -0.062760 -0.367419 +vn -0.949175 -0.062758 -0.308429 +vn -0.966668 -0.062758 -0.248221 +vn -0.980347 -0.062761 -0.187034 +vn -0.990156 -0.062759 -0.125108 +vn -0.996058 -0.062756 -0.062689 +vn -0.998029 -0.062758 -0.000022 +vn -0.996061 -0.062760 0.062645 +vn -0.990162 -0.062759 0.125064 +vn -0.980355 -0.062761 0.186990 +vn -0.966679 -0.062761 0.248178 +vn -0.949188 -0.062759 0.308387 +vn -0.927952 -0.062760 0.367379 +vn -0.903053 -0.062760 0.424920 +vn -0.874589 -0.062759 0.480785 +vn -0.842675 -0.062759 0.534753 +vn -0.807435 -0.062760 0.586608 +vn -0.769008 -0.062758 0.636151 +vn -0.727547 -0.062761 0.683181 +vn -0.683214 -0.062760 0.727516 +vn -0.636184 -0.062759 0.768981 +vn -0.586645 -0.062759 0.807409 +vn -0.534789 -0.062760 0.842652 +vn -0.480823 -0.062760 0.874569 +vn -0.424960 -0.062759 0.903034 +vn -0.367419 -0.062760 0.927936 +vn -0.308429 -0.062760 0.949175 +vn -0.248221 -0.062760 0.966668 +vn -0.187033 -0.062760 0.980347 +vn -0.125108 -0.062760 0.990156 +vn -0.062690 -0.062759 0.996058 +vn -0.000021 -0.062760 0.998029 +vn 0.062645 -0.062759 0.996061 +vn 0.125065 -0.062760 0.990162 +vn 0.186990 -0.062760 0.980355 +vn 0.248179 -0.062760 0.966679 +vn 0.308387 -0.062760 0.949188 +vn 0.367379 -0.062760 0.927951 +vn 0.424920 -0.062760 0.903053 +vn 0.480785 -0.062760 0.874590 +vn 0.534753 -0.062759 0.842674 +vn 0.586609 -0.062761 0.807435 +vn 0.636150 -0.062760 0.769009 +vn 0.683181 -0.062760 0.727547 +vn 0.727517 -0.062759 0.683214 +vn 0.768981 -0.062760 0.636184 +vn 0.807410 -0.062758 0.586644 +vn 0.842652 -0.062762 0.534789 +vn 0.874569 -0.062759 0.480823 +vn 0.903034 -0.062760 0.424960 +vn 0.927935 -0.062758 0.367420 +vn 0.949175 -0.062762 0.308429 +vn 0.966668 -0.062759 0.248221 +vn 0.980347 -0.062759 0.187033 +vn 0.990156 -0.062760 0.125108 +vn 0.996058 -0.062758 0.062689 +vn 0.998028 -0.062764 0.000017 +vn 0.997535 -0.031394 -0.062753 +vn 0.991627 -0.031394 -0.125260 +vn 0.981805 -0.031393 -0.187278 +vn 0.968108 -0.031396 -0.248557 +vn 0.950591 -0.031397 -0.308854 +vn 0.929322 -0.031395 -0.367934 +vn 0.904386 -0.031396 -0.425559 +vn 0.875880 -0.031395 -0.481506 +vn 0.843918 -0.031394 -0.535553 +vn 0.808625 -0.031395 -0.587486 +vn 0.770141 -0.031395 -0.637101 +vn 0.728617 -0.031395 -0.684202 +vn 0.684218 -0.031394 -0.728602 +vn 0.637118 -0.031394 -0.770127 +vn 0.587504 -0.031395 -0.808612 +vn 0.535572 -0.031395 -0.843906 +vn 0.481525 -0.031394 -0.875870 +vn 0.425579 -0.031394 -0.904377 +vn 0.367954 -0.031394 -0.929314 +vn 0.308875 -0.031395 -0.950584 +vn 0.248578 -0.031394 -0.968103 +vn 0.187301 -0.031395 -0.981801 +vn 0.125282 -0.031395 -0.991624 +vn 0.062771 -0.031394 -0.997534 +vn 0.000012 -0.031395 -0.999507 +vn -0.062748 -0.031394 -0.997536 +vn -0.125260 -0.031395 -0.991627 +vn -0.187278 -0.031395 -0.981805 +vn -0.248556 -0.031395 -0.968109 +vn -0.308854 -0.031395 -0.950591 +vn -0.367933 -0.031394 -0.929322 +vn -0.425559 -0.031395 -0.904386 +vn -0.481507 -0.031394 -0.875880 +vn -0.535554 -0.031395 -0.843917 +vn -0.587486 -0.031395 -0.808625 +vn -0.637101 -0.031395 -0.770141 +vn -0.684202 -0.031395 -0.728617 +vn -0.728602 -0.031394 -0.684218 +vn -0.770127 -0.031393 -0.637118 +vn -0.808612 -0.031394 -0.587504 +vn -0.843906 -0.031395 -0.535572 +vn -0.875870 -0.031393 -0.481526 +vn -0.904377 -0.031394 -0.425579 +vn -0.929314 -0.031394 -0.367953 +vn -0.950584 -0.031394 -0.308875 +vn -0.968103 -0.031395 -0.248578 +vn -0.981801 -0.031396 -0.187300 +vn -0.991624 -0.031393 -0.125283 +vn -0.997534 -0.031395 -0.062771 +vn -0.999507 -0.031397 -0.000011 +vn -0.997535 -0.031394 0.062749 +vn -0.991627 -0.031393 0.125260 +vn -0.981805 -0.031392 0.187278 +vn -0.968108 -0.031398 0.248556 +vn -0.950591 -0.031396 0.308854 +vn -0.929322 -0.031393 0.367933 +vn -0.904386 -0.031396 0.425559 +vn -0.875880 -0.031393 0.481507 +vn -0.843917 -0.031395 0.535554 +vn -0.808625 -0.031395 0.587486 +vn -0.770141 -0.031395 0.637101 +vn -0.728617 -0.031395 0.684201 +vn -0.684217 -0.031394 0.728602 +vn -0.637118 -0.031394 0.770127 +vn -0.587505 -0.031395 0.808612 +vn -0.535572 -0.031394 0.843906 +vn -0.481526 -0.031395 0.875869 +vn -0.425579 -0.031394 0.904377 +vn -0.367954 -0.031395 0.929314 +vn -0.308874 -0.031395 0.950585 +vn -0.248578 -0.031395 0.968103 +vn -0.187300 -0.031394 0.981801 +vn -0.125283 -0.031394 0.991624 +vn -0.062771 -0.031394 0.997534 +vn -0.000010 -0.031395 0.999507 +vn 0.062749 -0.031395 0.997535 +vn 0.125260 -0.031395 0.991627 +vn 0.187277 -0.031394 0.981805 +vn 0.248557 -0.031394 0.968108 +vn 0.308854 -0.031395 0.950591 +vn 0.367934 -0.031395 0.929322 +vn 0.425559 -0.031395 0.904386 +vn 0.481507 -0.031395 0.875880 +vn 0.535554 -0.031394 0.843917 +vn 0.587487 -0.031395 0.808625 +vn 0.637101 -0.031394 0.770141 +vn 0.684202 -0.031394 0.728617 +vn 0.728602 -0.031395 0.684218 +vn 0.770127 -0.031394 0.637118 +vn 0.808612 -0.031394 0.587504 +vn 0.843906 -0.031396 0.535572 +vn 0.875870 -0.031393 0.481525 +vn 0.904377 -0.031395 0.425579 +vn 0.929314 -0.031392 0.367954 +vn 0.950584 -0.031395 0.308875 +vn 0.968103 -0.031393 0.248578 +vn 0.981801 -0.031395 0.187300 +vn 0.991624 -0.031394 0.125282 +vn 0.997534 -0.031394 0.062771 +vn 0.999507 -0.031396 0.000007 +vn 0.998026 -0.000000 -0.062795 +vn 0.992115 0.000002 -0.125333 +vn 0.982287 0.000002 -0.187381 +vn 0.968583 -0.000001 -0.248690 +vn 0.951056 -0.000001 -0.309017 +vn 0.929776 0.000002 -0.368125 +vn 0.904827 -0.000001 -0.425779 +vn 0.876307 0.000001 -0.481753 +vn 0.844328 -0.000000 -0.535827 +vn 0.809017 0.000000 -0.587785 +vn 0.770514 -0.000001 -0.637424 +vn 0.728969 0.000000 -0.684547 +vn 0.684547 0.000001 -0.728969 +vn 0.637423 0.000001 -0.770514 +vn 0.587785 0.000000 -0.809017 +vn 0.535827 -0.000001 -0.844328 +vn 0.481753 0.000001 -0.876307 +vn 0.425779 -0.000000 -0.904827 +vn 0.368125 -0.000000 -0.929776 +vn 0.309018 0.000000 -0.951056 +vn 0.248690 -0.000000 -0.968583 +vn 0.187383 -0.000000 -0.982287 +vn 0.125333 -0.000000 -0.992115 +vn 0.062792 -0.000000 -0.998027 +vn 0.000000 -0.000000 -1.000000 +vn -0.062791 -0.000000 -0.998027 +vn -0.125333 -0.000000 -0.992115 +vn -0.187382 0.000000 -0.982287 +vn -0.248690 0.000000 -0.968583 +vn -0.309017 -0.000000 -0.951056 +vn -0.368124 0.000000 -0.929777 +vn -0.425779 -0.000000 -0.904827 +vn -0.481754 -0.000001 -0.876307 +vn -0.535827 0.000000 -0.844328 +vn -0.587785 0.000000 -0.809017 +vn -0.637423 -0.000000 -0.770514 +vn -0.684547 -0.000001 -0.728969 +vn -0.728969 -0.000000 -0.684547 +vn -0.770514 -0.000000 -0.637424 +vn -0.809017 0.000000 -0.587785 +vn -0.844328 -0.000001 -0.535827 +vn -0.876307 0.000001 -0.481753 +vn -0.904827 -0.000002 -0.425779 +vn -0.929776 -0.000000 -0.368125 +vn -0.951056 -0.000000 -0.309017 +vn -0.968583 -0.000002 -0.248690 +vn -0.982287 0.000000 -0.187381 +vn -0.992115 0.000003 -0.125334 +vn -0.998027 -0.000001 -0.062791 +vn -1.000000 -0.000001 -0.000000 +vn -0.998027 0.000003 0.062791 +vn -0.992115 0.000001 0.125333 +vn -0.982287 0.000000 0.187381 +vn -0.968583 -0.000003 0.248689 +vn -0.951057 -0.000000 0.309017 +vn -0.929776 0.000002 0.368125 +vn -0.904827 -0.000002 0.425779 +vn -0.876307 0.000002 0.481754 +vn -0.844328 -0.000001 0.535827 +vn -0.809017 0.000001 0.587785 +vn -0.770514 0.000000 0.637424 +vn -0.728969 0.000000 0.684547 +vn -0.684547 0.000000 0.728969 +vn -0.637424 -0.000000 0.770513 +vn -0.587785 -0.000000 0.809017 +vn -0.535827 0.000000 0.844328 +vn -0.481754 -0.000000 0.876307 +vn -0.425778 0.000000 0.904828 +vn -0.368125 0.000000 0.929776 +vn -0.309017 -0.000000 0.951056 +vn -0.248690 0.000000 0.968583 +vn -0.187382 0.000000 0.982287 +vn -0.125334 -0.000000 0.992115 +vn -0.062791 -0.000000 0.998027 +vn 0.000000 -0.000000 1.000000 +vn 0.062790 0.000000 0.998027 +vn 0.125333 0.000000 0.992115 +vn 0.187381 0.000000 0.982287 +vn 0.248690 -0.000000 0.968583 +vn 0.309018 -0.000000 0.951056 +vn 0.368125 -0.000000 0.929776 +vn 0.425779 0.000000 0.904827 +vn 0.481754 0.000000 0.876307 +vn 0.535828 -0.000000 0.844327 +vn 0.587785 0.000000 0.809017 +vn 0.637424 0.000000 0.770513 +vn 0.684547 0.000000 0.728969 +vn 0.728969 0.000000 0.684547 +vn 0.770513 -0.000001 0.637424 +vn 0.809017 -0.000001 0.587785 +vn 0.844328 -0.000001 0.535827 +vn 0.876307 0.000001 0.481753 +vn 0.904827 -0.000001 0.425779 +vn 0.929776 0.000002 0.368125 +vn 0.951057 -0.000001 0.309017 +vn 0.968583 0.000001 0.248690 +vn 0.982287 -0.000001 0.187382 +vn 0.992115 -0.000000 0.125333 +vn 0.998027 0.000000 0.062791 +vn 1.000000 -0.000002 -0.000004 +vn 0.997534 0.031395 -0.062774 +vn 0.991624 0.031395 -0.125282 +vn 0.981801 0.031396 -0.187300 +vn 0.968103 0.031393 -0.248578 +vn 0.950584 0.031393 -0.308876 +vn 0.929314 0.031395 -0.367954 +vn 0.904376 0.031394 -0.425579 +vn 0.875870 0.031397 -0.481525 +vn 0.843906 0.031394 -0.535572 +vn 0.808612 0.031397 -0.587504 +vn 0.770127 0.031394 -0.637118 +vn 0.728602 0.031394 -0.684218 +vn 0.684202 0.031395 -0.728616 +vn 0.637101 0.031395 -0.770141 +vn 0.587486 0.031394 -0.808625 +vn 0.535553 0.031395 -0.843918 +vn 0.481507 0.031395 -0.875880 +vn 0.425559 0.031394 -0.904386 +vn 0.367933 0.031394 -0.929322 +vn 0.308855 0.031395 -0.950591 +vn 0.248557 0.031394 -0.968108 +vn 0.187279 0.031395 -0.981805 +vn 0.125261 0.031395 -0.991627 +vn 0.062748 0.031395 -0.997536 +vn -0.000012 0.031395 -0.999507 +vn -0.062770 0.031395 -0.997534 +vn -0.125283 0.031395 -0.991624 +vn -0.187299 0.031395 -0.981801 +vn -0.248578 0.031395 -0.968103 +vn -0.308875 0.031395 -0.950584 +vn -0.367953 0.031395 -0.929314 +vn -0.425580 0.031395 -0.904376 +vn -0.481526 0.031394 -0.875869 +vn -0.535572 0.031395 -0.843906 +vn -0.587505 0.031395 -0.808612 +vn -0.637118 0.031395 -0.770127 +vn -0.684218 0.031395 -0.728602 +vn -0.728617 0.031395 -0.684202 +vn -0.770141 0.031394 -0.637101 +vn -0.808625 0.031396 -0.587486 +vn -0.843918 0.031393 -0.535553 +vn -0.875880 0.031395 -0.481506 +vn -0.904386 0.031393 -0.425559 +vn -0.929322 0.031394 -0.367933 +vn -0.950591 0.031395 -0.308855 +vn -0.968108 0.031394 -0.248557 +vn -0.981805 0.031395 -0.187279 +vn -0.991627 0.031396 -0.125261 +vn -0.997535 0.031395 -0.062749 +vn -0.999507 0.031394 0.000011 +vn -0.997534 0.031396 0.062771 +vn -0.991624 0.031393 0.125282 +vn -0.981801 0.031392 0.187299 +vn -0.968103 0.031393 0.248577 +vn -0.950584 0.031396 0.308875 +vn -0.929314 0.031397 0.367954 +vn -0.904377 0.031393 0.425579 +vn -0.875869 0.031395 0.481526 +vn -0.843905 0.031395 0.535573 +vn -0.808612 0.031394 0.587504 +vn -0.770127 0.031393 0.637118 +vn -0.728602 0.031394 0.684217 +vn -0.684202 0.031395 0.728617 +vn -0.637101 0.031394 0.770141 +vn -0.587487 0.031394 0.808625 +vn -0.535554 0.031395 0.843917 +vn -0.481506 0.031395 0.875880 +vn -0.425558 0.031395 0.904386 +vn -0.367933 0.031394 0.929322 +vn -0.308854 0.031395 0.950591 +vn -0.248557 0.031395 0.968108 +vn -0.187279 0.031394 0.981805 +vn -0.125261 0.031394 0.991627 +vn -0.062749 0.031394 0.997535 +vn 0.000010 0.031395 0.999507 +vn 0.062770 0.031394 0.997534 +vn 0.125283 0.031395 0.991624 +vn 0.187300 0.031394 0.981801 +vn 0.248577 0.031394 0.968103 +vn 0.308875 0.031395 0.950584 +vn 0.367953 0.031395 0.929314 +vn 0.425579 0.031395 0.904376 +vn 0.481526 0.031395 0.875869 +vn 0.535572 0.031393 0.843906 +vn 0.587504 0.031395 0.808612 +vn 0.637118 0.031394 0.770127 +vn 0.684217 0.031395 0.728602 +vn 0.728617 0.031394 0.684201 +vn 0.770140 0.031393 0.637101 +vn 0.808625 0.031397 0.587486 +vn 0.843918 0.031394 0.535554 +vn 0.875880 0.031395 0.481506 +vn 0.904386 0.031394 0.425559 +vn 0.929322 0.031395 0.367934 +vn 0.950591 0.031394 0.308854 +vn 0.968108 0.031394 0.248557 +vn 0.981805 0.031396 0.187278 +vn 0.991627 0.031394 0.125260 +vn 0.997535 0.031396 0.062749 +vn 0.999507 0.031392 -0.000015 +vn 0.996058 0.062760 -0.062693 +vn 0.990156 0.062758 -0.125107 +vn 0.980347 0.062763 -0.187033 +vn 0.966668 0.062759 -0.248220 +vn 0.949175 0.062757 -0.308429 +vn 0.927935 0.062761 -0.367420 +vn 0.903034 0.062759 -0.424960 +vn 0.874569 0.062760 -0.480823 +vn 0.842652 0.062757 -0.534789 +vn 0.807409 0.062762 -0.586644 +vn 0.768981 0.062761 -0.636184 +vn 0.727517 0.062760 -0.683213 +vn 0.683182 0.062759 -0.727546 +vn 0.636150 0.062760 -0.769008 +vn 0.586608 0.062759 -0.807436 +vn 0.534752 0.062760 -0.842675 +vn 0.480785 0.062759 -0.874589 +vn 0.424920 0.062759 -0.903053 +vn 0.367380 0.062760 -0.927951 +vn 0.308388 0.062760 -0.949188 +vn 0.248178 0.062760 -0.966679 +vn 0.186990 0.062760 -0.980355 +vn 0.125065 0.062760 -0.990162 +vn 0.062646 0.062759 -0.996061 +vn -0.000022 0.062760 -0.998029 +vn -0.062688 0.062759 -0.996058 +vn -0.125108 0.062759 -0.990156 +vn -0.187033 0.062759 -0.980347 +vn -0.248221 0.062759 -0.966668 +vn -0.308428 0.062760 -0.949175 +vn -0.367419 0.062760 -0.927936 +vn -0.424960 0.062760 -0.903034 +vn -0.480824 0.062759 -0.874568 +vn -0.534789 0.062759 -0.842652 +vn -0.586645 0.062761 -0.807409 +vn -0.636184 0.062760 -0.768981 +vn -0.683213 0.062760 -0.727517 +vn -0.727546 0.062761 -0.683182 +vn -0.769008 0.062758 -0.636151 +vn -0.807435 0.062761 -0.586609 +vn -0.842676 0.062757 -0.534752 +vn -0.874590 0.062760 -0.480785 +vn -0.903053 0.062760 -0.424920 +vn -0.927952 0.062759 -0.367379 +vn -0.949188 0.062759 -0.308387 +vn -0.966679 0.062756 -0.248179 +vn -0.980355 0.062760 -0.186991 +vn -0.990162 0.062760 -0.125065 +vn -0.996061 0.062761 -0.062646 +vn -0.998029 0.062759 0.000022 +vn -0.996058 0.062758 0.062689 +vn -0.990156 0.062759 0.125108 +vn -0.980347 0.062761 0.187033 +vn -0.966668 0.062760 0.248221 +vn -0.949175 0.062759 0.308429 +vn -0.927935 0.062761 0.367419 +vn -0.903034 0.062760 0.424960 +vn -0.874568 0.062759 0.480824 +vn -0.842651 0.062761 0.534790 +vn -0.807410 0.062759 0.586644 +vn -0.768981 0.062759 0.636184 +vn -0.727516 0.062762 0.683214 +vn -0.683182 0.062759 0.727546 +vn -0.636151 0.062758 0.769008 +vn -0.586609 0.062760 0.807435 +vn -0.534752 0.062760 0.842675 +vn -0.480785 0.062759 0.874590 +vn -0.424920 0.062760 0.903053 +vn -0.367379 0.062760 0.927951 +vn -0.308387 0.062760 0.949188 +vn -0.248179 0.062760 0.966679 +vn -0.186991 0.062760 0.980355 +vn -0.125065 0.062760 0.990161 +vn -0.062645 0.062759 0.996061 +vn 0.000021 0.062760 0.998029 +vn 0.062689 0.062759 0.996058 +vn 0.125108 0.062760 0.990156 +vn 0.187032 0.062760 0.980347 +vn 0.248220 0.062760 0.966669 +vn 0.308429 0.062760 0.949175 +vn 0.367420 0.062760 0.927935 +vn 0.424960 0.062760 0.903034 +vn 0.480824 0.062759 0.874568 +vn 0.534790 0.062760 0.842651 +vn 0.586644 0.062760 0.807409 +vn 0.636184 0.062760 0.768980 +vn 0.683213 0.062760 0.727517 +vn 0.727546 0.062760 0.683182 +vn 0.769009 0.062758 0.636150 +vn 0.807435 0.062760 0.586609 +vn 0.842675 0.062758 0.534752 +vn 0.874590 0.062761 0.480785 +vn 0.903053 0.062760 0.424920 +vn 0.927952 0.062758 0.367379 +vn 0.949188 0.062759 0.308387 +vn 0.966679 0.062761 0.248178 +vn 0.980355 0.062760 0.186991 +vn 0.990162 0.062757 0.125065 +vn 0.996060 0.062762 0.062645 +vn 0.998029 0.062758 -0.000026 +vn 0.993600 0.094061 -0.062549 +vn 0.987712 0.094061 -0.124810 +vn 0.977926 0.094061 -0.186582 +vn 0.964281 0.094063 -0.247619 +vn 0.946830 0.094061 -0.307678 +vn 0.925642 0.094062 -0.366523 +vn 0.900801 0.094063 -0.423921 +vn 0.872406 0.094063 -0.479646 +vn 0.840567 0.094061 -0.533479 +vn 0.805411 0.094063 -0.585205 +vn 0.767077 0.094062 -0.634622 +vn 0.725714 0.094063 -0.681536 +vn 0.681488 0.094063 -0.725759 +vn 0.634572 0.094063 -0.767118 +vn 0.585153 0.094061 -0.805450 +vn 0.533423 0.094064 -0.840602 +vn 0.479589 0.094062 -0.872437 +vn 0.423862 0.094063 -0.900829 +vn 0.366463 0.094063 -0.925666 +vn 0.307616 0.094063 -0.946850 +vn 0.247555 0.094063 -0.964297 +vn 0.186518 0.094062 -0.977938 +vn 0.124745 0.094062 -0.987720 +vn 0.062479 0.094063 -0.993604 +vn -0.000032 0.094063 -0.995566 +vn -0.062544 0.094063 -0.993600 +vn -0.124810 0.094063 -0.987712 +vn -0.186582 0.094063 -0.977926 +vn -0.247619 0.094062 -0.964281 +vn -0.307678 0.094063 -0.946830 +vn -0.366522 0.094063 -0.925642 +vn -0.423921 0.094064 -0.900802 +vn -0.479646 0.094063 -0.872406 +vn -0.533479 0.094063 -0.840567 +vn -0.585206 0.094063 -0.805411 +vn -0.634622 0.094062 -0.767077 +vn -0.681536 0.094063 -0.725714 +vn -0.725759 0.094063 -0.681488 +vn -0.767118 0.094062 -0.634572 +vn -0.805449 0.094063 -0.585153 +vn -0.840602 0.094063 -0.533423 +vn -0.872437 0.094063 -0.479589 +vn -0.900829 0.094065 -0.423862 +vn -0.925666 0.094063 -0.366462 +vn -0.946850 0.094062 -0.307616 +vn -0.964297 0.094062 -0.247556 +vn -0.977938 0.094062 -0.186518 +vn -0.987720 0.094063 -0.124746 +vn -0.993604 0.094064 -0.062480 +vn -0.995566 0.094062 0.000033 +vn -0.993600 0.094062 0.062545 +vn -0.987712 0.094061 0.124810 +vn -0.977926 0.094064 0.186582 +vn -0.964281 0.094062 0.247619 +vn -0.946830 0.094060 0.307678 +vn -0.925642 0.094062 0.366523 +vn -0.900801 0.094064 0.423921 +vn -0.872406 0.094062 0.479647 +vn -0.840567 0.094063 0.533479 +vn -0.805411 0.094063 0.585205 +vn -0.767076 0.094062 0.634623 +vn -0.725714 0.094062 0.681536 +vn -0.681489 0.094062 0.725759 +vn -0.634572 0.094062 0.767118 +vn -0.585153 0.094064 0.805449 +vn -0.533424 0.094062 0.840602 +vn -0.479589 0.094063 0.872437 +vn -0.423861 0.094063 0.900830 +vn -0.366461 0.094064 0.925666 +vn -0.307616 0.094063 0.946850 +vn -0.247556 0.094062 0.964297 +vn -0.186518 0.094063 0.977938 +vn -0.124745 0.094063 0.987720 +vn -0.062480 0.094063 0.993604 +vn 0.000033 0.094063 0.995566 +vn 0.062544 0.094063 0.993600 +vn 0.124809 0.094063 0.987712 +vn 0.186581 0.094063 0.977926 +vn 0.247619 0.094063 0.964281 +vn 0.307678 0.094062 0.946830 +vn 0.366523 0.094062 0.925642 +vn 0.423920 0.094062 0.900802 +vn 0.479647 0.094063 0.872406 +vn 0.533479 0.094063 0.840567 +vn 0.585205 0.094062 0.805411 +vn 0.634623 0.094063 0.767076 +vn 0.681536 0.094062 0.725715 +vn 0.725759 0.094064 0.681488 +vn 0.767118 0.094063 0.634572 +vn 0.805449 0.094063 0.585153 +vn 0.840602 0.094062 0.533423 +vn 0.872437 0.094064 0.479589 +vn 0.900829 0.094062 0.423862 +vn 0.925666 0.094061 0.366462 +vn 0.946850 0.094063 0.307616 +vn 0.964297 0.094064 0.247556 +vn 0.977938 0.094061 0.186519 +vn 0.987720 0.094061 0.124745 +vn 0.993604 0.094065 0.062480 +vn 0.995566 0.094062 -0.000037 +vn 0.990162 0.125271 -0.062343 +vn 0.984294 0.125272 -0.124389 +vn 0.974541 0.125269 -0.185948 +vn 0.960942 0.125274 -0.246773 +vn 0.943551 0.125273 -0.306624 +vn 0.922436 0.125273 -0.365265 +vn 0.897681 0.125273 -0.422464 +vn 0.869383 0.125273 -0.477997 +vn 0.837653 0.125271 -0.531643 +vn 0.802618 0.125274 -0.583190 +vn 0.764416 0.125272 -0.632436 +vn 0.723197 0.125272 -0.679186 +vn 0.679123 0.125272 -0.723256 +vn 0.632369 0.125271 -0.764471 +vn 0.583120 0.125271 -0.802670 +vn 0.531569 0.125272 -0.837700 +vn 0.477921 0.125271 -0.869424 +vn 0.422386 0.125272 -0.897718 +vn 0.365184 0.125272 -0.922468 +vn 0.306542 0.125272 -0.943578 +vn 0.246689 0.125272 -0.960964 +vn 0.185864 0.125272 -0.974557 +vn 0.124303 0.125273 -0.984305 +vn 0.062253 0.125272 -0.990167 +vn -0.000044 0.125272 -0.992122 +vn -0.062340 0.125272 -0.990162 +vn -0.124389 0.125273 -0.984294 +vn -0.185946 0.125272 -0.974541 +vn -0.246773 0.125272 -0.960942 +vn -0.306625 0.125272 -0.943551 +vn -0.365265 0.125271 -0.922436 +vn -0.422465 0.125272 -0.897681 +vn -0.477996 0.125272 -0.869383 +vn -0.531643 0.125273 -0.837653 +vn -0.583191 0.125271 -0.802618 +vn -0.632435 0.125273 -0.764416 +vn -0.679186 0.125272 -0.723197 +vn -0.723255 0.125272 -0.679123 +vn -0.764471 0.125271 -0.632370 +vn -0.802670 0.125272 -0.583119 +vn -0.837700 0.125272 -0.531568 +vn -0.869425 0.125272 -0.477920 +vn -0.897717 0.125274 -0.422386 +vn -0.922468 0.125271 -0.365185 +vn -0.943578 0.125271 -0.306542 +vn -0.960964 0.125273 -0.246689 +vn -0.974557 0.125272 -0.185862 +vn -0.984304 0.125274 -0.124303 +vn -0.990167 0.125273 -0.062253 +vn -0.992123 0.125271 0.000043 +vn -0.990162 0.125274 0.062340 +vn -0.984294 0.125269 0.124389 +vn -0.974541 0.125272 0.185948 +vn -0.960942 0.125274 0.246773 +vn -0.943551 0.125270 0.306624 +vn -0.922436 0.125273 0.365265 +vn -0.897681 0.125273 0.422465 +vn -0.869382 0.125271 0.477997 +vn -0.837654 0.125271 0.531643 +vn -0.802619 0.125274 0.583190 +vn -0.764416 0.125273 0.632436 +vn -0.723197 0.125271 0.679186 +vn -0.679123 0.125272 0.723256 +vn -0.632369 0.125271 0.764471 +vn -0.583120 0.125273 0.802669 +vn -0.531569 0.125272 0.837700 +vn -0.477920 0.125272 0.869425 +vn -0.422386 0.125272 0.897718 +vn -0.365184 0.125272 0.922468 +vn -0.306542 0.125272 0.943578 +vn -0.246689 0.125271 0.960964 +vn -0.185863 0.125272 0.974557 +vn -0.124303 0.125272 0.984305 +vn -0.062254 0.125273 0.990167 +vn 0.000044 0.125272 0.992122 +vn 0.062340 0.125273 0.990162 +vn 0.124389 0.125272 0.984294 +vn 0.185948 0.125272 0.974541 +vn 0.246772 0.125272 0.960942 +vn 0.306623 0.125272 0.943551 +vn 0.365265 0.125272 0.922436 +vn 0.422465 0.125272 0.897681 +vn 0.477997 0.125272 0.869383 +vn 0.531643 0.125272 0.837653 +vn 0.583190 0.125271 0.802618 +vn 0.632436 0.125272 0.764416 +vn 0.679186 0.125272 0.723196 +vn 0.723256 0.125272 0.679123 +vn 0.764471 0.125273 0.632369 +vn 0.802669 0.125272 0.583120 +vn 0.837700 0.125271 0.531569 +vn 0.869425 0.125272 0.477920 +vn 0.897718 0.125272 0.422386 +vn 0.922468 0.125271 0.365184 +vn 0.943578 0.125271 0.306541 +vn 0.960964 0.125274 0.246689 +vn 0.974557 0.125272 0.185863 +vn 0.984305 0.125273 0.124302 +vn 0.990168 0.125271 0.062253 +vn 0.992123 0.125270 -0.000048 +vn 0.985747 0.156361 -0.062077 +vn 0.979905 0.156359 -0.123845 +vn 0.970195 0.156359 -0.185129 +vn 0.956656 0.156359 -0.245683 +vn 0.939342 0.156359 -0.305268 +vn 0.918320 0.156359 -0.363647 +vn 0.893675 0.156360 -0.420591 +vn 0.865503 0.156358 -0.475875 +vn 0.833914 0.156358 -0.529282 +vn 0.799035 0.156360 -0.580599 +vn 0.761002 0.156357 -0.629625 +vn 0.719966 0.156359 -0.676166 +vn 0.676088 0.156358 -0.720040 +vn 0.629543 0.156358 -0.761070 +vn 0.580512 0.156359 -0.799098 +vn 0.529190 0.156358 -0.833973 +vn 0.475781 0.156357 -0.865555 +vn 0.420494 0.156358 -0.893721 +vn 0.363547 0.156358 -0.918360 +vn 0.305165 0.156359 -0.939376 +vn 0.245579 0.156359 -0.956683 +vn 0.185023 0.156359 -0.970216 +vn 0.123738 0.156358 -0.979919 +vn 0.061965 0.156358 -0.985755 +vn -0.000055 0.156358 -0.987700 +vn -0.062071 0.156358 -0.985748 +vn -0.123845 0.156358 -0.979905 +vn -0.185129 0.156359 -0.970195 +vn -0.245684 0.156359 -0.956656 +vn -0.305268 0.156359 -0.939342 +vn -0.363647 0.156358 -0.918321 +vn -0.420591 0.156358 -0.893675 +vn -0.475876 0.156359 -0.865502 +vn -0.529282 0.156358 -0.833914 +vn -0.580600 0.156358 -0.799035 +vn -0.629625 0.156358 -0.761002 +vn -0.676167 0.156359 -0.719965 +vn -0.720039 0.156359 -0.676088 +vn -0.761070 0.156360 -0.629542 +vn -0.799099 0.156360 -0.580511 +vn -0.833973 0.156356 -0.529191 +vn -0.865555 0.156357 -0.475781 +vn -0.893721 0.156360 -0.420493 +vn -0.918361 0.156357 -0.363546 +vn -0.939375 0.156359 -0.305165 +vn -0.956683 0.156360 -0.245579 +vn -0.970215 0.156361 -0.185023 +vn -0.979919 0.156359 -0.123738 +vn -0.985755 0.156357 -0.061965 +vn -0.987700 0.156359 0.000054 +vn -0.985748 0.156359 0.062072 +vn -0.979906 0.156357 0.123845 +vn -0.970195 0.156358 0.185130 +vn -0.956656 0.156360 0.245683 +vn -0.939342 0.156358 0.305268 +vn -0.918321 0.156357 0.363647 +vn -0.893675 0.156358 0.420591 +vn -0.865502 0.156357 0.475876 +vn -0.833914 0.156359 0.529282 +vn -0.799035 0.156360 0.580599 +vn -0.761002 0.156360 0.629625 +vn -0.719965 0.156360 0.676167 +vn -0.676088 0.156359 0.720040 +vn -0.629542 0.156359 0.761071 +vn -0.580512 0.156358 0.799098 +vn -0.529190 0.156359 0.833972 +vn -0.475781 0.156358 0.865555 +vn -0.420493 0.156358 0.893721 +vn -0.363547 0.156358 0.918360 +vn -0.305165 0.156359 0.939375 +vn -0.245578 0.156359 0.956683 +vn -0.185023 0.156359 0.970216 +vn -0.123738 0.156358 0.979919 +vn -0.061965 0.156359 0.985755 +vn 0.000054 0.156359 0.987700 +vn 0.062073 0.156359 0.985748 +vn 0.123845 0.156358 0.979905 +vn 0.185130 0.156359 0.970195 +vn 0.245683 0.156358 0.956657 +vn 0.305267 0.156359 0.939342 +vn 0.363648 0.156358 0.918320 +vn 0.420592 0.156358 0.893675 +vn 0.475876 0.156359 0.865502 +vn 0.529282 0.156359 0.833914 +vn 0.580600 0.156359 0.799034 +vn 0.629626 0.156358 0.761002 +vn 0.676167 0.156358 0.719966 +vn 0.720040 0.156355 0.676088 +vn 0.761071 0.156359 0.629542 +vn 0.799098 0.156358 0.580512 +vn 0.833972 0.156358 0.529190 +vn 0.865555 0.156358 0.475781 +vn 0.893721 0.156359 0.420493 +vn 0.918361 0.156358 0.363547 +vn 0.939375 0.156360 0.305165 +vn 0.956683 0.156361 0.245579 +vn 0.970215 0.156361 0.185023 +vn 0.979919 0.156358 0.123738 +vn 0.985755 0.156355 0.061965 +vn 0.987700 0.156358 -0.000059 +vn 0.980362 0.187289 -0.061748 +vn 0.974551 0.187289 -0.123179 +vn 0.964893 0.187292 -0.184129 +vn 0.951428 0.187288 -0.244352 +vn 0.934207 0.187289 -0.303610 +vn 0.913300 0.187291 -0.361671 +vn 0.888788 0.187291 -0.418303 +vn 0.860769 0.187290 -0.473285 +vn 0.829353 0.187291 -0.526400 +vn 0.794663 0.187289 -0.577436 +vn 0.756838 0.187291 -0.626194 +vn 0.716025 0.187290 -0.672481 +vn 0.672387 0.187290 -0.716114 +vn 0.626095 0.187290 -0.756920 +vn 0.577331 0.187291 -0.794740 +vn 0.526290 0.187291 -0.829422 +vn 0.473173 0.187291 -0.860831 +vn 0.418187 0.187291 -0.888843 +vn 0.361550 0.187291 -0.913348 +vn 0.303487 0.187291 -0.934247 +vn 0.244227 0.187290 -0.951460 +vn 0.184002 0.187290 -0.964917 +vn 0.123052 0.187289 -0.974567 +vn 0.061614 0.187291 -0.980370 +vn -0.000064 0.187291 -0.982305 +vn -0.061743 0.187291 -0.980362 +vn -0.123179 0.187291 -0.974551 +vn -0.184129 0.187290 -0.964893 +vn -0.244351 0.187290 -0.951428 +vn -0.303611 0.187290 -0.934207 +vn -0.361671 0.187292 -0.913300 +vn -0.418303 0.187291 -0.888788 +vn -0.473286 0.187290 -0.860769 +vn -0.526400 0.187290 -0.829353 +vn -0.577436 0.187290 -0.794663 +vn -0.626194 0.187290 -0.756838 +vn -0.672481 0.187290 -0.716025 +vn -0.716114 0.187290 -0.672387 +vn -0.756920 0.187291 -0.626094 +vn -0.794739 0.187289 -0.577332 +vn -0.829422 0.187288 -0.526290 +vn -0.860831 0.187289 -0.473172 +vn -0.888844 0.187290 -0.418186 +vn -0.913348 0.187291 -0.361550 +vn -0.934247 0.187290 -0.303488 +vn -0.951460 0.187290 -0.244227 +vn -0.964917 0.187293 -0.184002 +vn -0.974567 0.187292 -0.123051 +vn -0.980370 0.187289 -0.061616 +vn -0.982305 0.187291 0.000065 +vn -0.980362 0.187290 0.061744 +vn -0.974550 0.187292 0.123179 +vn -0.964893 0.187292 0.184129 +vn -0.951428 0.187290 0.244352 +vn -0.934207 0.187291 0.303610 +vn -0.913300 0.187291 0.361671 +vn -0.888788 0.187291 0.418303 +vn -0.860769 0.187289 0.473286 +vn -0.829352 0.187292 0.526400 +vn -0.794663 0.187291 0.577436 +vn -0.756838 0.187288 0.626194 +vn -0.716025 0.187292 0.672481 +vn -0.672388 0.187290 0.716113 +vn -0.626095 0.187290 0.756920 +vn -0.577332 0.187289 0.794739 +vn -0.526291 0.187291 0.829422 +vn -0.473172 0.187290 0.860832 +vn -0.418185 0.187290 0.888844 +vn -0.361550 0.187290 0.913348 +vn -0.303488 0.187290 0.934247 +vn -0.244226 0.187290 0.951460 +vn -0.184002 0.187290 0.964917 +vn -0.123051 0.187290 0.974567 +vn -0.061616 0.187290 0.980370 +vn 0.000065 0.187290 0.982305 +vn 0.061744 0.187290 0.980362 +vn 0.123179 0.187290 0.974551 +vn 0.184129 0.187290 0.964893 +vn 0.244351 0.187290 0.951428 +vn 0.303610 0.187291 0.934207 +vn 0.361671 0.187290 0.913300 +vn 0.418304 0.187291 0.888788 +vn 0.473286 0.187291 0.860768 +vn 0.526400 0.187290 0.829352 +vn 0.577437 0.187290 0.794663 +vn 0.626194 0.187290 0.756838 +vn 0.672481 0.187291 0.716025 +vn 0.716114 0.187288 0.672387 +vn 0.756920 0.187291 0.626094 +vn 0.794739 0.187292 0.577331 +vn 0.829422 0.187291 0.526290 +vn 0.860832 0.187289 0.473172 +vn 0.888843 0.187291 0.418186 +vn 0.913348 0.187290 0.361550 +vn 0.934247 0.187290 0.303487 +vn 0.951460 0.187290 0.244227 +vn 0.964917 0.187290 0.184002 +vn 0.974567 0.187290 0.123051 +vn 0.980370 0.187291 0.061615 +vn 0.982304 0.187292 -0.000069 +vn 0.974010 0.218034 -0.061359 +vn 0.968235 0.218040 -0.122392 +vn 0.958640 0.218037 -0.182947 +vn 0.945261 0.218037 -0.242779 +vn 0.928151 0.218039 -0.301654 +vn 0.907378 0.218038 -0.359338 +vn 0.883026 0.218036 -0.415603 +vn 0.855187 0.218036 -0.470229 +vn 0.823974 0.218037 -0.522998 +vn 0.789509 0.218035 -0.573704 +vn 0.751927 0.218037 -0.622145 +vn 0.711379 0.218036 -0.668132 +vn 0.668022 0.218037 -0.711481 +vn 0.622029 0.218038 -0.752023 +vn 0.573582 0.218037 -0.789597 +vn 0.522871 0.218038 -0.824054 +vn 0.470097 0.218038 -0.855259 +vn 0.415467 0.218038 -0.883089 +vn 0.359198 0.218037 -0.907434 +vn 0.301511 0.218037 -0.928198 +vn 0.242635 0.218037 -0.945298 +vn 0.182799 0.218037 -0.958668 +vn 0.122243 0.218038 -0.968254 +vn 0.061204 0.218037 -0.974019 +vn -0.000074 0.218037 -0.975940 +vn -0.061356 0.218037 -0.974010 +vn -0.122391 0.218036 -0.968236 +vn -0.182947 0.218036 -0.958640 +vn -0.242779 0.218038 -0.945261 +vn -0.301654 0.218037 -0.928151 +vn -0.359337 0.218037 -0.907379 +vn -0.415602 0.218037 -0.883026 +vn -0.470229 0.218038 -0.855187 +vn -0.522998 0.218037 -0.823974 +vn -0.573704 0.218037 -0.789509 +vn -0.622146 0.218038 -0.751927 +vn -0.668132 0.218038 -0.711379 +vn -0.711481 0.218038 -0.668022 +vn -0.752023 0.218038 -0.622030 +vn -0.789596 0.218039 -0.573583 +vn -0.824054 0.218037 -0.522871 +vn -0.855260 0.218037 -0.470097 +vn -0.883090 0.218036 -0.415467 +vn -0.907434 0.218039 -0.359198 +vn -0.928198 0.218036 -0.301511 +vn -0.945298 0.218037 -0.242634 +vn -0.958668 0.218036 -0.182799 +vn -0.968254 0.218037 -0.122244 +vn -0.974020 0.218036 -0.061205 +vn -0.975941 0.218035 0.000075 +vn -0.974010 0.218037 0.061355 +vn -0.968235 0.218039 0.122392 +vn -0.958640 0.218038 0.182947 +vn -0.945261 0.218036 0.242779 +vn -0.928151 0.218038 0.301654 +vn -0.907378 0.218039 0.359338 +vn -0.883025 0.218036 0.415603 +vn -0.855187 0.218038 0.470229 +vn -0.823974 0.218036 0.522999 +vn -0.789508 0.218039 0.573704 +vn -0.751927 0.218035 0.622146 +vn -0.711379 0.218038 0.668132 +vn -0.668022 0.218038 0.711481 +vn -0.622030 0.218037 0.752023 +vn -0.573583 0.218038 0.789596 +vn -0.522872 0.218038 0.824054 +vn -0.470096 0.218038 0.855260 +vn -0.415467 0.218037 0.883090 +vn -0.359198 0.218037 0.907434 +vn -0.301511 0.218037 0.928198 +vn -0.242633 0.218038 0.945298 +vn -0.182799 0.218038 0.958668 +vn -0.122243 0.218037 0.968254 +vn -0.061206 0.218037 0.974019 +vn 0.000076 0.218037 0.975940 +vn 0.061354 0.218037 0.974010 +vn 0.122392 0.218038 0.968235 +vn 0.182947 0.218037 0.958640 +vn 0.242778 0.218037 0.945261 +vn 0.301654 0.218038 0.928151 +vn 0.359338 0.218038 0.907378 +vn 0.415603 0.218038 0.883025 +vn 0.470229 0.218038 0.855187 +vn 0.522999 0.218037 0.823973 +vn 0.573704 0.218037 0.789509 +vn 0.622145 0.218037 0.751928 +vn 0.668132 0.218037 0.711379 +vn 0.711481 0.218037 0.668023 +vn 0.752023 0.218037 0.622030 +vn 0.789596 0.218039 0.573582 +vn 0.824054 0.218037 0.522872 +vn 0.855260 0.218036 0.470097 +vn 0.883089 0.218038 0.415467 +vn 0.907434 0.218038 0.359198 +vn 0.928198 0.218038 0.301511 +vn 0.945298 0.218037 0.242634 +vn 0.958668 0.218037 0.182799 +vn 0.968254 0.218039 0.122243 +vn 0.974019 0.218037 0.061205 +vn 0.975941 0.218037 -0.000079 +vn 0.966697 0.248570 -0.060909 +vn 0.960965 0.248573 -0.121484 +vn 0.951441 0.248570 -0.181584 +vn 0.938162 0.248571 -0.240967 +vn 0.921180 0.248572 -0.299399 +vn 0.900563 0.248571 -0.356650 +vn 0.876392 0.248570 -0.412493 +vn 0.848762 0.248571 -0.466708 +vn 0.817782 0.248570 -0.519081 +vn 0.783575 0.248571 -0.569406 +vn 0.746275 0.248573 -0.617483 +vn 0.706031 0.248571 -0.663124 +vn 0.663000 0.248571 -0.706147 +vn 0.617351 0.248572 -0.746384 +vn 0.569267 0.248571 -0.783676 +vn 0.518937 0.248571 -0.817874 +vn 0.466559 0.248571 -0.848844 +vn 0.412339 0.248571 -0.876464 +vn 0.356492 0.248571 -0.900625 +vn 0.299237 0.248571 -0.921233 +vn 0.240801 0.248571 -0.938204 +vn 0.181416 0.248572 -0.951473 +vn 0.121314 0.248571 -0.960987 +vn 0.060734 0.248571 -0.966708 +vn -0.000084 0.248571 -0.968614 +vn -0.060906 0.248570 -0.966697 +vn -0.121483 0.248571 -0.960965 +vn -0.181585 0.248572 -0.951441 +vn -0.240967 0.248572 -0.938162 +vn -0.299399 0.248572 -0.921180 +vn -0.356650 0.248571 -0.900563 +vn -0.412493 0.248571 -0.876391 +vn -0.466708 0.248572 -0.848761 +vn -0.519081 0.248570 -0.817782 +vn -0.569406 0.248571 -0.783575 +vn -0.617484 0.248571 -0.746275 +vn -0.663124 0.248571 -0.706031 +vn -0.706148 0.248570 -0.663000 +vn -0.746385 0.248570 -0.617351 +vn -0.783675 0.248572 -0.569267 +vn -0.817874 0.248572 -0.518936 +vn -0.848844 0.248572 -0.466558 +vn -0.876464 0.248570 -0.412338 +vn -0.900625 0.248573 -0.356491 +vn -0.921232 0.248572 -0.299237 +vn -0.938204 0.248571 -0.240801 +vn -0.951473 0.248570 -0.181417 +vn -0.960986 0.248572 -0.121315 +vn -0.966707 0.248574 -0.060735 +vn -0.968613 0.248572 0.000085 +vn -0.966697 0.248573 0.060905 +vn -0.960966 0.248570 0.121484 +vn -0.951441 0.248573 0.181583 +vn -0.938161 0.248572 0.240967 +vn -0.921180 0.248569 0.299400 +vn -0.900562 0.248573 0.356650 +vn -0.876392 0.248570 0.412493 +vn -0.848761 0.248572 0.466708 +vn -0.817782 0.248570 0.519082 +vn -0.783574 0.248574 0.569405 +vn -0.746276 0.248570 0.617483 +vn -0.706031 0.248572 0.663124 +vn -0.662999 0.248572 0.706147 +vn -0.617352 0.248570 0.746384 +vn -0.569267 0.248571 0.783676 +vn -0.518937 0.248571 0.817873 +vn -0.466558 0.248571 0.848844 +vn -0.412338 0.248571 0.876464 +vn -0.356491 0.248571 0.900626 +vn -0.299238 0.248571 0.921232 +vn -0.240801 0.248572 0.938204 +vn -0.181417 0.248571 0.951473 +vn -0.121314 0.248571 0.960987 +vn -0.060735 0.248572 0.966708 +vn 0.000086 0.248571 0.968614 +vn 0.060905 0.248572 0.966697 +vn 0.121484 0.248571 0.960965 +vn 0.181584 0.248571 0.951441 +vn 0.240967 0.248571 0.938162 +vn 0.299400 0.248570 0.921180 +vn 0.356650 0.248571 0.900563 +vn 0.412494 0.248571 0.876391 +vn 0.466708 0.248570 0.848762 +vn 0.519082 0.248572 0.817781 +vn 0.569406 0.248572 0.783575 +vn 0.617483 0.248572 0.746276 +vn 0.663124 0.248572 0.706030 +vn 0.706148 0.248571 0.662999 +vn 0.746385 0.248569 0.617352 +vn 0.783675 0.248572 0.569267 +vn 0.817873 0.248572 0.518937 +vn 0.848844 0.248571 0.466558 +vn 0.876464 0.248572 0.412338 +vn 0.900625 0.248573 0.356491 +vn 0.921233 0.248568 0.299237 +vn 0.938204 0.248571 0.240802 +vn 0.951473 0.248571 0.181416 +vn 0.960987 0.248570 0.121315 +vn 0.966707 0.248573 0.060735 +vn 0.968614 0.248571 -0.000090 +vn 0.958431 0.278857 -0.060399 +vn 0.952747 0.278861 -0.120456 +vn 0.943304 0.278859 -0.180042 +vn 0.930138 0.278858 -0.238917 +vn 0.913301 0.278858 -0.296850 +vn 0.892859 0.278858 -0.353611 +vn 0.868893 0.278859 -0.408976 +vn 0.841499 0.278860 -0.462726 +vn 0.810784 0.278859 -0.514652 +vn 0.776869 0.278861 -0.564546 +vn 0.739888 0.278860 -0.612212 +vn 0.699987 0.278859 -0.657462 +vn 0.657323 0.278860 -0.700117 +vn 0.612065 0.278860 -0.740010 +vn 0.564391 0.278859 -0.776981 +vn 0.514491 0.278859 -0.810887 +vn 0.462560 0.278858 -0.841591 +vn 0.408803 0.278859 -0.868975 +vn 0.353434 0.278859 -0.892929 +vn 0.296668 0.278859 -0.913360 +vn 0.238732 0.278860 -0.930185 +vn 0.179855 0.278860 -0.943340 +vn 0.120267 0.278859 -0.952771 +vn 0.060205 0.278859 -0.958443 +vn -0.000095 0.278859 -0.960332 +vn -0.060396 0.278859 -0.958431 +vn -0.120456 0.278859 -0.952748 +vn -0.180042 0.278859 -0.943304 +vn -0.238917 0.278859 -0.930138 +vn -0.296850 0.278859 -0.913301 +vn -0.353611 0.278859 -0.892859 +vn -0.408975 0.278859 -0.868894 +vn -0.462727 0.278859 -0.841499 +vn -0.514653 0.278859 -0.810784 +vn -0.564547 0.278859 -0.776869 +vn -0.612212 0.278860 -0.739888 +vn -0.657462 0.278859 -0.699987 +vn -0.700118 0.278859 -0.657323 +vn -0.740009 0.278859 -0.612065 +vn -0.776981 0.278860 -0.564391 +vn -0.810887 0.278859 -0.514491 +vn -0.841591 0.278860 -0.462560 +vn -0.868975 0.278859 -0.408803 +vn -0.892929 0.278861 -0.353433 +vn -0.913359 0.278859 -0.296668 +vn -0.930185 0.278858 -0.238733 +vn -0.943340 0.278858 -0.179855 +vn -0.952772 0.278859 -0.120267 +vn -0.958443 0.278859 -0.060205 +vn -0.960332 0.278859 0.000096 +vn -0.958431 0.278859 0.060395 +vn -0.952748 0.278856 0.120456 +vn -0.943303 0.278862 0.180042 +vn -0.930137 0.278860 0.238917 +vn -0.913301 0.278857 0.296850 +vn -0.892859 0.278860 0.353611 +vn -0.868894 0.278857 0.408976 +vn -0.841499 0.278860 0.462727 +vn -0.810784 0.278858 0.514652 +vn -0.776869 0.278859 0.564546 +vn -0.739888 0.278858 0.612213 +vn -0.699986 0.278859 0.657462 +vn -0.657324 0.278859 0.700117 +vn -0.612065 0.278859 0.740010 +vn -0.564391 0.278859 0.776981 +vn -0.514491 0.278859 0.810887 +vn -0.462560 0.278859 0.841591 +vn -0.408803 0.278860 0.868975 +vn -0.353434 0.278860 0.892929 +vn -0.296668 0.278859 0.913360 +vn -0.238732 0.278859 0.930185 +vn -0.179856 0.278858 0.943340 +vn -0.120265 0.278859 0.952772 +vn -0.060205 0.278859 0.958443 +vn 0.000095 0.278859 0.960332 +vn 0.060394 0.278859 0.958431 +vn 0.120456 0.278860 0.952747 +vn 0.180041 0.278860 0.943304 +vn 0.238917 0.278859 0.930138 +vn 0.296850 0.278859 0.913301 +vn 0.353610 0.278859 0.892859 +vn 0.408977 0.278859 0.868893 +vn 0.462727 0.278858 0.841500 +vn 0.514653 0.278859 0.810784 +vn 0.564546 0.278860 0.776869 +vn 0.612212 0.278860 0.739888 +vn 0.657462 0.278860 0.699986 +vn 0.700117 0.278859 0.657323 +vn 0.740010 0.278858 0.612065 +vn 0.776981 0.278861 0.564391 +vn 0.810887 0.278858 0.514491 +vn 0.841592 0.278859 0.462559 +vn 0.868975 0.278860 0.408803 +vn 0.892929 0.278860 0.353433 +vn 0.913360 0.278858 0.296668 +vn 0.930185 0.278861 0.238732 +vn 0.943340 0.278859 0.179854 +vn 0.952771 0.278860 0.120267 +vn 0.958442 0.278862 0.060205 +vn 0.960332 0.278859 -0.000100 +vn 0.949221 0.308869 -0.059829 +vn 0.943591 0.308872 -0.119309 +vn 0.934238 0.308869 -0.178322 +vn 0.921197 0.308872 -0.236632 +vn 0.904521 0.308871 -0.294007 +vn 0.884275 0.308872 -0.350223 +vn 0.860540 0.308871 -0.405056 +vn 0.833408 0.308871 -0.458290 +vn 0.802987 0.308871 -0.509716 +vn 0.769398 0.308871 -0.559130 +vn 0.732771 0.308871 -0.606337 +vn 0.693253 0.308873 -0.651152 +vn 0.650999 0.308872 -0.693397 +vn 0.606175 0.308872 -0.732906 +vn 0.558959 0.308871 -0.769521 +vn 0.509538 0.308871 -0.803100 +vn 0.458106 0.308871 -0.833510 +vn 0.404864 0.308871 -0.860630 +vn 0.350027 0.308872 -0.884352 +vn 0.293807 0.308871 -0.904586 +vn 0.236428 0.308871 -0.921250 +vn 0.178115 0.308870 -0.934277 +vn 0.119101 0.308871 -0.943617 +vn 0.059617 0.308870 -0.949234 +vn -0.000105 0.308871 -0.951104 +vn -0.059826 0.308871 -0.949221 +vn -0.119309 0.308871 -0.943591 +vn -0.178323 0.308871 -0.934237 +vn -0.236631 0.308871 -0.921197 +vn -0.294008 0.308871 -0.904521 +vn -0.350223 0.308870 -0.884275 +vn -0.405055 0.308870 -0.860540 +vn -0.458290 0.308871 -0.833408 +vn -0.509717 0.308872 -0.802986 +vn -0.559130 0.308871 -0.769398 +vn -0.606337 0.308872 -0.732771 +vn -0.651153 0.308871 -0.693252 +vn -0.693397 0.308872 -0.650998 +vn -0.732905 0.308871 -0.606175 +vn -0.769522 0.308871 -0.558959 +vn -0.803101 0.308870 -0.509538 +vn -0.833509 0.308873 -0.458105 +vn -0.860630 0.308870 -0.404865 +vn -0.884353 0.308871 -0.350027 +vn -0.904586 0.308870 -0.293807 +vn -0.921250 0.308870 -0.236428 +vn -0.934277 0.308872 -0.178116 +vn -0.943617 0.308872 -0.119100 +vn -0.949234 0.308870 -0.059616 +vn -0.951104 0.308870 0.000106 +vn -0.949221 0.308870 0.059826 +vn -0.943591 0.308870 0.119309 +vn -0.934237 0.308872 0.178322 +vn -0.921197 0.308872 0.236632 +vn -0.904521 0.308870 0.294008 +vn -0.884275 0.308872 0.350223 +vn -0.860540 0.308871 0.405056 +vn -0.833408 0.308871 0.458290 +vn -0.802987 0.308871 0.509716 +vn -0.769398 0.308871 0.559130 +vn -0.732771 0.308871 0.606338 +vn -0.693253 0.308871 0.651152 +vn -0.650999 0.308872 0.693396 +vn -0.606175 0.308871 0.732906 +vn -0.558960 0.308871 0.769521 +vn -0.509538 0.308871 0.803100 +vn -0.458106 0.308871 0.833509 +vn -0.404864 0.308872 0.860630 +vn -0.350028 0.308871 0.884353 +vn -0.293807 0.308871 0.904586 +vn -0.236428 0.308871 0.921250 +vn -0.178115 0.308871 0.934277 +vn -0.119100 0.308871 0.943617 +vn -0.059616 0.308870 0.949234 +vn 0.000104 0.308871 0.951104 +vn 0.059826 0.308871 0.949221 +vn 0.119310 0.308872 0.943591 +vn 0.178322 0.308871 0.934238 +vn 0.236632 0.308872 0.921197 +vn 0.294008 0.308872 0.904521 +vn 0.350222 0.308872 0.884275 +vn 0.405056 0.308871 0.860540 +vn 0.458290 0.308871 0.833408 +vn 0.509717 0.308870 0.802987 +vn 0.559131 0.308871 0.769397 +vn 0.606337 0.308872 0.732771 +vn 0.651152 0.308871 0.693253 +vn 0.693397 0.308872 0.650999 +vn 0.732906 0.308871 0.606175 +vn 0.769521 0.308872 0.558959 +vn 0.803101 0.308870 0.509538 +vn 0.833509 0.308872 0.458105 +vn 0.860629 0.308871 0.404865 +vn 0.884353 0.308872 0.350027 +vn 0.904586 0.308873 0.293807 +vn 0.921249 0.308871 0.236428 +vn 0.934277 0.308872 0.178115 +vn 0.943617 0.308871 0.119100 +vn 0.949233 0.308872 0.059615 +vn 0.951104 0.308872 -0.000109 +vn 0.939074 0.338579 -0.059201 +vn 0.933504 0.338580 -0.118045 +vn 0.924250 0.338580 -0.176427 +vn 0.911348 0.338580 -0.234113 +vn 0.894850 0.338578 -0.290876 +vn 0.874819 0.338580 -0.346490 +vn 0.851337 0.338579 -0.400736 +vn 0.824494 0.338580 -0.453401 +vn 0.794399 0.338579 -0.504277 +vn 0.761168 0.338578 -0.553162 +vn 0.724931 0.338581 -0.599865 +vn 0.685836 0.338578 -0.644200 +vn 0.644033 0.338579 -0.685992 +vn 0.599687 0.338580 -0.725079 +vn 0.552976 0.338579 -0.761303 +vn 0.504082 0.338579 -0.794522 +vn 0.453200 0.338580 -0.824605 +vn 0.400527 0.338580 -0.851435 +vn 0.346276 0.338580 -0.874904 +vn 0.290657 0.338580 -0.894920 +vn 0.233891 0.338579 -0.911405 +vn 0.176201 0.338579 -0.924293 +vn 0.117817 0.338579 -0.933533 +vn 0.058967 0.338580 -0.939088 +vn -0.000115 0.338580 -0.940938 +vn -0.059197 0.338580 -0.939074 +vn -0.118045 0.338580 -0.933503 +vn -0.176427 0.338580 -0.924250 +vn -0.234112 0.338580 -0.911348 +vn -0.290876 0.338579 -0.894849 +vn -0.346489 0.338579 -0.874820 +vn -0.400736 0.338580 -0.851337 +vn -0.453402 0.338580 -0.824494 +vn -0.504277 0.338580 -0.794398 +vn -0.553162 0.338579 -0.761168 +vn -0.599865 0.338579 -0.724932 +vn -0.644200 0.338580 -0.685836 +vn -0.685992 0.338580 -0.644033 +vn -0.725079 0.338579 -0.599688 +vn -0.761303 0.338580 -0.552976 +vn -0.794522 0.338579 -0.504082 +vn -0.824606 0.338579 -0.453199 +vn -0.851435 0.338579 -0.400528 +vn -0.874904 0.338580 -0.346276 +vn -0.894920 0.338580 -0.290657 +vn -0.911405 0.338580 -0.233890 +vn -0.924292 0.338581 -0.176201 +vn -0.933533 0.338579 -0.117817 +vn -0.939088 0.338579 -0.058968 +vn -0.940937 0.338581 0.000115 +vn -0.939074 0.338580 0.059197 +vn -0.933504 0.338579 0.118045 +vn -0.924250 0.338579 0.176427 +vn -0.911348 0.338579 0.234113 +vn -0.894850 0.338578 0.290875 +vn -0.874819 0.338581 0.346489 +vn -0.851337 0.338580 0.400736 +vn -0.824495 0.338580 0.453401 +vn -0.794398 0.338580 0.504277 +vn -0.761167 0.338579 0.553163 +vn -0.724931 0.338580 0.599865 +vn -0.685835 0.338580 0.644200 +vn -0.644033 0.338579 0.685992 +vn -0.599687 0.338579 0.725079 +vn -0.552976 0.338580 0.761302 +vn -0.504082 0.338580 0.794522 +vn -0.453199 0.338579 0.824606 +vn -0.400528 0.338580 0.851435 +vn -0.346275 0.338579 0.874904 +vn -0.290656 0.338580 0.894920 +vn -0.233890 0.338580 0.911405 +vn -0.176201 0.338580 0.924293 +vn -0.117817 0.338579 0.933533 +vn -0.058967 0.338579 0.939088 +vn 0.000114 0.338580 0.940938 +vn 0.059197 0.338579 0.939074 +vn 0.118044 0.338579 0.933504 +vn 0.176427 0.338580 0.924250 +vn 0.234113 0.338580 0.911348 +vn 0.290876 0.338579 0.894849 +vn 0.346489 0.338580 0.874819 +vn 0.400736 0.338579 0.851337 +vn 0.453401 0.338580 0.824494 +vn 0.504278 0.338580 0.794397 +vn 0.553162 0.338580 0.761167 +vn 0.599864 0.338580 0.724932 +vn 0.644200 0.338580 0.685835 +vn 0.685993 0.338580 0.644032 +vn 0.725078 0.338580 0.599687 +vn 0.761303 0.338578 0.552977 +vn 0.794522 0.338578 0.504083 +vn 0.824606 0.338578 0.453200 +vn 0.851435 0.338578 0.400528 +vn 0.874904 0.338580 0.346275 +vn 0.894920 0.338581 0.290656 +vn 0.911405 0.338580 0.233890 +vn 0.924292 0.338582 0.176201 +vn 0.933533 0.338579 0.117817 +vn 0.939088 0.338580 0.058968 +vn 0.940938 0.338579 -0.000119 +vn 0.928001 0.367955 -0.058513 +vn 0.922497 0.367953 -0.116664 +vn 0.913351 0.367954 -0.174358 +vn 0.900599 0.367956 -0.231363 +vn 0.884296 0.367954 -0.287456 +vn 0.864501 0.367954 -0.342414 +vn 0.841295 0.367955 -0.396021 +vn 0.814768 0.367954 -0.448065 +vn 0.785026 0.367954 -0.498341 +vn 0.752186 0.367954 -0.546649 +vn 0.716378 0.367955 -0.592801 +vn 0.677743 0.367953 -0.636613 +vn 0.636431 0.367954 -0.677912 +vn 0.592609 0.367955 -0.716536 +vn 0.546447 0.367954 -0.752333 +vn 0.498130 0.367955 -0.785160 +vn 0.447847 0.367954 -0.814888 +vn 0.395795 0.367954 -0.841401 +vn 0.342183 0.367954 -0.864593 +vn 0.287220 0.367954 -0.884372 +vn 0.231122 0.367955 -0.900662 +vn 0.174113 0.367955 -0.913397 +vn 0.116416 0.367954 -0.922527 +vn 0.058260 0.367955 -0.928017 +vn -0.000124 0.367953 -0.929844 +vn -0.058510 0.367955 -0.928001 +vn -0.116664 0.367954 -0.922496 +vn -0.174358 0.367954 -0.913351 +vn -0.231362 0.367954 -0.900601 +vn -0.287457 0.367954 -0.884295 +vn -0.342414 0.367954 -0.864501 +vn -0.396021 0.367955 -0.841294 +vn -0.448065 0.367954 -0.814768 +vn -0.498340 0.367954 -0.785027 +vn -0.546650 0.367954 -0.752186 +vn -0.592801 0.367954 -0.716378 +vn -0.636613 0.367954 -0.677742 +vn -0.677912 0.367953 -0.636432 +vn -0.716537 0.367954 -0.592609 +vn -0.752333 0.367955 -0.546447 +vn -0.785160 0.367954 -0.498130 +vn -0.814889 0.367954 -0.447846 +vn -0.841401 0.367954 -0.395796 +vn -0.864593 0.367953 -0.342183 +vn -0.884372 0.367956 -0.287219 +vn -0.900663 0.367953 -0.231122 +vn -0.913397 0.367955 -0.174113 +vn -0.922527 0.367955 -0.116417 +vn -0.928017 0.367955 -0.058262 +vn -0.929844 0.367954 0.000125 +vn -0.928001 0.367954 0.058510 +vn -0.922497 0.367953 0.116664 +vn -0.913351 0.367954 0.174358 +vn -0.900600 0.367955 0.231363 +vn -0.884296 0.367954 0.287456 +vn -0.864502 0.367954 0.342414 +vn -0.841295 0.367954 0.396021 +vn -0.814769 0.367952 0.448065 +vn -0.785026 0.367954 0.498341 +vn -0.752186 0.367955 0.546649 +vn -0.716378 0.367954 0.592800 +vn -0.677742 0.367954 0.636612 +vn -0.636432 0.367954 0.677912 +vn -0.592608 0.367955 0.716537 +vn -0.546448 0.367955 0.752333 +vn -0.498129 0.367955 0.785160 +vn -0.447847 0.367954 0.814888 +vn -0.395796 0.367954 0.841401 +vn -0.342182 0.367955 0.864593 +vn -0.287220 0.367954 0.884372 +vn -0.231122 0.367954 0.900662 +vn -0.174112 0.367954 0.913397 +vn -0.116417 0.367954 0.922527 +vn -0.058262 0.367955 0.928017 +vn 0.000124 0.367955 0.929844 +vn 0.058511 0.367955 0.928001 +vn 0.116663 0.367955 0.922496 +vn 0.174358 0.367954 0.913350 +vn 0.231363 0.367954 0.900600 +vn 0.287457 0.367954 0.884295 +vn 0.342414 0.367954 0.864501 +vn 0.396021 0.367955 0.841294 +vn 0.448065 0.367955 0.814768 +vn 0.498341 0.367955 0.785026 +vn 0.546649 0.367954 0.752186 +vn 0.592801 0.367954 0.716377 +vn 0.636613 0.367955 0.677741 +vn 0.677912 0.367954 0.636431 +vn 0.716536 0.367955 0.592609 +vn 0.752333 0.367953 0.546448 +vn 0.785160 0.367954 0.498130 +vn 0.814888 0.367955 0.447846 +vn 0.841401 0.367954 0.395795 +vn 0.864593 0.367953 0.342183 +vn 0.884372 0.367955 0.287219 +vn 0.900663 0.367952 0.231122 +vn 0.913397 0.367954 0.174113 +vn 0.922528 0.367953 0.116417 +vn 0.928017 0.367954 0.058262 +vn 0.929844 0.367955 -0.000128 +vn 0.916013 0.396968 -0.057768 +vn 0.910579 0.396966 -0.115167 +vn 0.901551 0.396967 -0.172116 +vn 0.888964 0.396967 -0.228385 +vn 0.872870 0.396967 -0.283753 +vn 0.853331 0.396965 -0.338001 +vn 0.830424 0.396965 -0.390915 +vn 0.804239 0.396967 -0.442287 +vn 0.774881 0.396965 -0.491913 +vn 0.742465 0.396965 -0.539598 +vn 0.707118 0.396966 -0.585152 +vn 0.668980 0.396966 -0.628397 +vn 0.628203 0.396966 -0.669163 +vn 0.584946 0.396967 -0.707287 +vn 0.539381 0.396965 -0.742622 +vn 0.491687 0.396966 -0.775024 +vn 0.442052 0.396965 -0.804368 +vn 0.390673 0.396966 -0.830537 +vn 0.337753 0.396966 -0.853429 +vn 0.283500 0.396965 -0.872953 +vn 0.228126 0.396966 -0.889031 +vn 0.171855 0.396966 -0.901601 +vn 0.114903 0.396966 -0.910613 +vn 0.057498 0.396966 -0.916031 +vn -0.000133 0.396965 -0.917834 +vn -0.057765 0.396966 -0.916014 +vn -0.115167 0.396966 -0.910579 +vn -0.172116 0.396966 -0.901551 +vn -0.228385 0.396966 -0.888965 +vn -0.283753 0.396966 -0.872870 +vn -0.338002 0.396966 -0.853330 +vn -0.390916 0.396966 -0.830423 +vn -0.442287 0.396965 -0.804239 +vn -0.491913 0.396966 -0.774881 +vn -0.539596 0.396966 -0.742465 +vn -0.585151 0.396966 -0.707118 +vn -0.628398 0.396966 -0.668980 +vn -0.669163 0.396965 -0.628204 +vn -0.707288 0.396967 -0.584945 +vn -0.742621 0.396966 -0.539381 +vn -0.775024 0.396967 -0.491686 +vn -0.804369 0.396965 -0.442052 +vn -0.830537 0.396965 -0.390674 +vn -0.853429 0.396964 -0.337754 +vn -0.872952 0.396967 -0.283499 +vn -0.889032 0.396965 -0.228126 +vn -0.901600 0.396968 -0.171854 +vn -0.910612 0.396967 -0.114903 +vn -0.916030 0.396968 -0.057498 +vn -0.917833 0.396967 0.000134 +vn -0.916013 0.396968 0.057764 +vn -0.910579 0.396967 0.115167 +vn -0.901550 0.396967 0.172116 +vn -0.888965 0.396966 0.228385 +vn -0.872870 0.396967 0.283753 +vn -0.853330 0.396967 0.338001 +vn -0.830424 0.396966 0.390915 +vn -0.804239 0.396965 0.442288 +vn -0.774880 0.396968 0.491912 +vn -0.742465 0.396965 0.539597 +vn -0.707118 0.396966 0.585152 +vn -0.668981 0.396966 0.628397 +vn -0.628203 0.396966 0.669163 +vn -0.584945 0.396968 0.707288 +vn -0.539381 0.396966 0.742621 +vn -0.491686 0.396966 0.775024 +vn -0.442052 0.396966 0.804368 +vn -0.390673 0.396966 0.830537 +vn -0.337753 0.396966 0.853429 +vn -0.283499 0.396966 0.872953 +vn -0.228126 0.396967 0.889031 +vn -0.171854 0.396966 0.901601 +vn -0.114903 0.396966 0.910612 +vn -0.057498 0.396967 0.916030 +vn 0.000134 0.396966 0.917833 +vn 0.057765 0.396967 0.916013 +vn 0.115167 0.396966 0.910579 +vn 0.172116 0.396965 0.901551 +vn 0.228385 0.396966 0.888965 +vn 0.283753 0.396966 0.872870 +vn 0.338001 0.396966 0.853331 +vn 0.390916 0.396967 0.830423 +vn 0.442287 0.396965 0.804239 +vn 0.491914 0.396966 0.774880 +vn 0.539597 0.396966 0.742464 +vn 0.585152 0.396966 0.707118 +vn 0.628397 0.396966 0.668980 +vn 0.669163 0.396966 0.628203 +vn 0.707287 0.396967 0.584946 +vn 0.742622 0.396966 0.539380 +vn 0.775024 0.396967 0.491686 +vn 0.804367 0.396968 0.442051 +vn 0.830537 0.396966 0.390674 +vn 0.853429 0.396965 0.337754 +vn 0.872953 0.396966 0.283499 +vn 0.889031 0.396965 0.228127 +vn 0.901600 0.396968 0.171854 +vn 0.910613 0.396964 0.114903 +vn 0.916030 0.396967 0.057498 +vn 0.917833 0.396967 -0.000137 +vn 0.903122 0.425588 -0.056966 +vn 0.897764 0.425587 -0.113557 +vn 0.888862 0.425587 -0.169704 +vn 0.876453 0.425586 -0.225182 +vn 0.860583 0.425589 -0.279770 +vn 0.841318 0.425588 -0.333255 +vn 0.818733 0.425587 -0.385424 +vn 0.792916 0.425588 -0.436072 +vn 0.763971 0.425587 -0.484999 +vn 0.732010 0.425586 -0.532013 +vn 0.697160 0.425588 -0.576925 +vn 0.659559 0.425587 -0.619562 +vn 0.619354 0.425587 -0.659755 +vn 0.576706 0.425588 -0.697342 +vn 0.531782 0.425586 -0.732178 +vn 0.484759 0.425587 -0.764123 +vn 0.435822 0.425588 -0.793054 +vn 0.385166 0.425587 -0.818855 +vn 0.332991 0.425587 -0.841423 +vn 0.279500 0.425587 -0.860672 +vn 0.224905 0.425587 -0.876523 +vn 0.169425 0.425587 -0.888916 +vn 0.113275 0.425587 -0.897800 +vn 0.056679 0.425587 -0.903141 +vn -0.000143 0.425587 -0.904917 +vn -0.056963 0.425587 -0.903123 +vn -0.113557 0.425587 -0.897764 +vn -0.169705 0.425587 -0.888862 +vn -0.225182 0.425587 -0.876452 +vn -0.279770 0.425587 -0.860584 +vn -0.333255 0.425588 -0.841318 +vn -0.385424 0.425587 -0.818733 +vn -0.436072 0.425587 -0.792917 +vn -0.485000 0.425587 -0.763970 +vn -0.532012 0.425587 -0.732010 +vn -0.576926 0.425587 -0.697160 +vn -0.619563 0.425587 -0.659559 +vn -0.659754 0.425588 -0.619355 +vn -0.697342 0.425588 -0.576706 +vn -0.732178 0.425587 -0.531782 +vn -0.764124 0.425587 -0.484758 +vn -0.793054 0.425587 -0.435822 +vn -0.818854 0.425587 -0.385166 +vn -0.841423 0.425588 -0.332990 +vn -0.860671 0.425588 -0.279499 +vn -0.876523 0.425588 -0.224906 +vn -0.888916 0.425587 -0.169425 +vn -0.897800 0.425586 -0.113275 +vn -0.903141 0.425587 -0.056679 +vn -0.904917 0.425587 0.000143 +vn -0.903123 0.425587 0.056962 +vn -0.897764 0.425587 0.113557 +vn -0.888862 0.425587 0.169704 +vn -0.876453 0.425587 0.225182 +vn -0.860583 0.425588 0.279770 +vn -0.841318 0.425589 0.333255 +vn -0.818733 0.425586 0.385424 +vn -0.792916 0.425587 0.436073 +vn -0.763970 0.425589 0.484999 +vn -0.732010 0.425587 0.532012 +vn -0.697160 0.425588 0.576926 +vn -0.659558 0.425589 0.619562 +vn -0.619355 0.425587 0.659754 +vn -0.576706 0.425588 0.697342 +vn -0.531782 0.425586 0.732178 +vn -0.484759 0.425588 0.764123 +vn -0.435823 0.425587 0.793054 +vn -0.385166 0.425586 0.818855 +vn -0.332991 0.425587 0.841423 +vn -0.279500 0.425587 0.860671 +vn -0.224905 0.425588 0.876523 +vn -0.169425 0.425587 0.888916 +vn -0.113274 0.425588 0.897800 +vn -0.056679 0.425587 0.903141 +vn 0.000142 0.425587 0.904917 +vn 0.056963 0.425587 0.903123 +vn 0.113557 0.425587 0.897764 +vn 0.169705 0.425587 0.888862 +vn 0.225182 0.425587 0.876452 +vn 0.279770 0.425587 0.860584 +vn 0.333255 0.425588 0.841318 +vn 0.385424 0.425587 0.818733 +vn 0.436072 0.425587 0.792916 +vn 0.485000 0.425588 0.763970 +vn 0.532012 0.425588 0.732010 +vn 0.576926 0.425587 0.697161 +vn 0.619563 0.425587 0.659559 +vn 0.659754 0.425587 0.619355 +vn 0.697342 0.425587 0.576706 +vn 0.732178 0.425587 0.531781 +vn 0.764123 0.425588 0.484759 +vn 0.793054 0.425587 0.435822 +vn 0.818854 0.425588 0.385166 +vn 0.841422 0.425589 0.332990 +vn 0.860672 0.425588 0.279499 +vn 0.876523 0.425587 0.224906 +vn 0.888915 0.425588 0.169425 +vn 0.897800 0.425586 0.113275 +vn 0.903140 0.425588 0.056678 +vn 0.904917 0.425587 -0.000146 +vn 0.889342 0.453787 -0.056108 +vn 0.884065 0.453787 -0.111835 +vn 0.875297 0.453788 -0.167126 +vn 0.863077 0.453786 -0.221757 +vn 0.847449 0.453788 -0.275512 +vn 0.828477 0.453788 -0.328180 +vn 0.806237 0.453786 -0.379553 +vn 0.780813 0.453787 -0.429428 +vn 0.752308 0.453788 -0.477608 +vn 0.720835 0.453786 -0.523904 +vn 0.686516 0.453788 -0.568131 +vn 0.649488 0.453787 -0.610117 +vn 0.609897 0.453787 -0.649695 +vn 0.567899 0.453788 -0.686708 +vn 0.523659 0.453787 -0.721013 +vn 0.477353 0.453788 -0.752470 +vn 0.429163 0.453787 -0.780959 +vn 0.379280 0.453787 -0.806365 +vn 0.327900 0.453787 -0.828589 +vn 0.275224 0.453787 -0.847543 +vn 0.221464 0.453787 -0.863152 +vn 0.166829 0.453787 -0.875354 +vn 0.111536 0.453787 -0.884102 +vn 0.055803 0.453787 -0.889361 +vn -0.000151 0.453787 -0.891110 +vn -0.056103 0.453787 -0.889342 +vn -0.111835 0.453788 -0.884064 +vn -0.167126 0.453787 -0.875298 +vn -0.221756 0.453787 -0.863077 +vn -0.275512 0.453787 -0.847449 +vn -0.328180 0.453787 -0.828477 +vn -0.379553 0.453787 -0.806236 +vn -0.429428 0.453788 -0.780813 +vn -0.477608 0.453787 -0.752308 +vn -0.523903 0.453788 -0.720834 +vn -0.568131 0.453788 -0.686516 +vn -0.610117 0.453788 -0.649488 +vn -0.649695 0.453787 -0.609897 +vn -0.686708 0.453788 -0.567899 +vn -0.721012 0.453787 -0.523659 +vn -0.752470 0.453787 -0.477353 +vn -0.780958 0.453788 -0.429163 +vn -0.806365 0.453787 -0.379279 +vn -0.828588 0.453788 -0.327899 +vn -0.847543 0.453787 -0.275224 +vn -0.863152 0.453787 -0.221464 +vn -0.875355 0.453785 -0.166829 +vn -0.884103 0.453786 -0.111536 +vn -0.889361 0.453787 -0.055803 +vn -0.891110 0.453788 0.000151 +vn -0.889342 0.453788 0.056104 +vn -0.884065 0.453786 0.111835 +vn -0.875297 0.453788 0.167126 +vn -0.863077 0.453787 0.221756 +vn -0.847450 0.453786 0.275512 +vn -0.828477 0.453789 0.328180 +vn -0.806237 0.453786 0.379553 +vn -0.780813 0.453787 0.429428 +vn -0.752308 0.453787 0.477608 +vn -0.720835 0.453787 0.523903 +vn -0.686516 0.453787 0.568131 +vn -0.649488 0.453787 0.610117 +vn -0.609897 0.453787 0.649695 +vn -0.567898 0.453787 0.686709 +vn -0.523659 0.453787 0.721013 +vn -0.477353 0.453787 0.752470 +vn -0.429163 0.453787 0.780959 +vn -0.379279 0.453787 0.806365 +vn -0.327899 0.453787 0.828589 +vn -0.275224 0.453788 0.847542 +vn -0.221464 0.453787 0.863152 +vn -0.166829 0.453787 0.875354 +vn -0.111536 0.453787 0.884102 +vn -0.055803 0.453787 0.889361 +vn 0.000151 0.453787 0.891110 +vn 0.056104 0.453787 0.889342 +vn 0.111835 0.453788 0.884064 +vn 0.167125 0.453788 0.875298 +vn 0.221755 0.453787 0.863077 +vn 0.275512 0.453787 0.847449 +vn 0.328180 0.453788 0.828478 +vn 0.379552 0.453787 0.806237 +vn 0.429428 0.453788 0.780813 +vn 0.477608 0.453787 0.752308 +vn 0.523904 0.453787 0.720834 +vn 0.568131 0.453787 0.686516 +vn 0.610117 0.453787 0.649488 +vn 0.649695 0.453787 0.609897 +vn 0.686709 0.453787 0.567898 +vn 0.721013 0.453786 0.523659 +vn 0.752470 0.453787 0.477353 +vn 0.780959 0.453787 0.429163 +vn 0.806365 0.453788 0.379279 +vn 0.828588 0.453788 0.327899 +vn 0.847543 0.453787 0.275224 +vn 0.863152 0.453788 0.221464 +vn 0.875354 0.453787 0.166829 +vn 0.884103 0.453787 0.111536 +vn 0.889361 0.453787 0.055803 +vn 0.891110 0.453788 -0.000155 +vn 0.874685 0.481540 -0.055193 +vn 0.869493 0.481541 -0.110003 +vn 0.860871 0.481540 -0.164382 +vn 0.848850 0.481541 -0.218112 +vn 0.833479 0.481541 -0.270981 +vn 0.814820 0.481540 -0.322781 +vn 0.792944 0.481541 -0.373307 +vn 0.767939 0.481542 -0.422359 +vn 0.739903 0.481541 -0.469746 +vn 0.708948 0.481541 -0.515278 +vn 0.675195 0.481541 -0.558776 +vn 0.638776 0.481542 -0.600069 +vn 0.599837 0.481541 -0.638995 +vn 0.558530 0.481542 -0.675397 +vn 0.515020 0.481541 -0.709136 +vn 0.469476 0.481541 -0.740074 +vn 0.422080 0.481541 -0.768093 +vn 0.373020 0.481541 -0.793079 +vn 0.322485 0.481541 -0.814937 +vn 0.270678 0.481541 -0.833578 +vn 0.217804 0.481541 -0.848929 +vn 0.164069 0.481541 -0.860930 +vn 0.109688 0.481541 -0.869533 +vn 0.054872 0.481541 -0.874704 +vn -0.000158 0.481541 -0.876424 +vn -0.055190 0.481541 -0.874684 +vn -0.110003 0.481541 -0.869493 +vn -0.164382 0.481541 -0.860870 +vn -0.218111 0.481541 -0.848850 +vn -0.270981 0.481540 -0.833480 +vn -0.322781 0.481541 -0.814819 +vn -0.373307 0.481541 -0.792944 +vn -0.422360 0.481540 -0.767939 +vn -0.469746 0.481541 -0.739904 +vn -0.515278 0.481541 -0.708948 +vn -0.558776 0.481540 -0.675195 +vn -0.600069 0.481542 -0.638776 +vn -0.638994 0.481540 -0.599838 +vn -0.675398 0.481541 -0.558530 +vn -0.709136 0.481540 -0.515020 +vn -0.740075 0.481540 -0.469477 +vn -0.768092 0.481542 -0.422081 +vn -0.793080 0.481541 -0.373019 +vn -0.814937 0.481540 -0.322486 +vn -0.833578 0.481540 -0.270679 +vn -0.848928 0.481541 -0.217804 +vn -0.860930 0.481541 -0.164069 +vn -0.869532 0.481542 -0.109687 +vn -0.874705 0.481539 -0.054873 +vn -0.876423 0.481542 0.000159 +vn -0.874685 0.481540 0.055189 +vn -0.869494 0.481539 0.110003 +vn -0.860871 0.481539 0.164382 +vn -0.848850 0.481541 0.218112 +vn -0.833479 0.481542 0.270981 +vn -0.814820 0.481540 0.322781 +vn -0.792944 0.481541 0.373307 +vn -0.767939 0.481541 0.422360 +vn -0.739904 0.481541 0.469745 +vn -0.708948 0.481542 0.515277 +vn -0.675195 0.481540 0.558776 +vn -0.638777 0.481540 0.600069 +vn -0.599838 0.481540 0.638994 +vn -0.558530 0.481541 0.675398 +vn -0.515021 0.481541 0.709135 +vn -0.469477 0.481541 0.740074 +vn -0.422080 0.481541 0.768092 +vn -0.373020 0.481542 0.793079 +vn -0.322485 0.481541 0.814937 +vn -0.270678 0.481542 0.833577 +vn -0.217804 0.481540 0.848929 +vn -0.164069 0.481541 0.860929 +vn -0.109688 0.481541 0.869533 +vn -0.054872 0.481541 0.874704 +vn 0.000159 0.481541 0.876423 +vn 0.055190 0.481541 0.874684 +vn 0.110003 0.481542 0.869492 +vn 0.164381 0.481542 0.860869 +vn 0.218112 0.481541 0.848849 +vn 0.270981 0.481541 0.833479 +vn 0.322780 0.481542 0.814819 +vn 0.373307 0.481541 0.792944 +vn 0.422360 0.481542 0.767939 +vn 0.469746 0.481541 0.739903 +vn 0.515278 0.481541 0.708948 +vn 0.558775 0.481541 0.675195 +vn 0.600069 0.481541 0.638776 +vn 0.638994 0.481541 0.599837 +vn 0.675398 0.481540 0.558531 +vn 0.709135 0.481542 0.515020 +vn 0.740075 0.481540 0.469477 +vn 0.768093 0.481541 0.422081 +vn 0.793080 0.481541 0.373019 +vn 0.814937 0.481540 0.322485 +vn 0.833577 0.481542 0.270678 +vn 0.848928 0.481543 0.217804 +vn 0.860930 0.481540 0.164069 +vn 0.869532 0.481542 0.109687 +vn 0.874704 0.481541 0.054872 +vn 0.876424 0.481541 -0.000163 +vn 0.859163 0.508821 -0.054225 +vn 0.854063 0.508821 -0.108062 +vn 0.845594 0.508819 -0.161476 +vn 0.833785 0.508821 -0.214252 +vn 0.818687 0.508821 -0.266183 +vn 0.800357 0.508821 -0.317064 +vn 0.778870 0.508821 -0.366693 +vn 0.754308 0.508820 -0.414875 +vn 0.726769 0.508821 -0.461419 +vn 0.696363 0.508820 -0.506143 +vn 0.663208 0.508820 -0.548869 +vn 0.627435 0.508821 -0.589429 +vn 0.589186 0.508820 -0.627664 +vn 0.548613 0.508820 -0.663420 +vn 0.505874 0.508819 -0.696560 +vn 0.461138 0.508820 -0.726948 +vn 0.414582 0.508820 -0.754469 +vn 0.366392 0.508820 -0.779012 +vn 0.316753 0.508820 -0.800481 +vn 0.265866 0.508820 -0.818790 +vn 0.213929 0.508820 -0.833869 +vn 0.161148 0.508820 -0.845656 +vn 0.107731 0.508820 -0.854105 +vn 0.053888 0.508820 -0.859185 +vn -0.000167 0.508820 -0.860873 +vn -0.054222 0.508819 -0.859164 +vn -0.108061 0.508820 -0.854064 +vn -0.161476 0.508820 -0.845593 +vn -0.214252 0.508821 -0.833785 +vn -0.266183 0.508820 -0.818687 +vn -0.317063 0.508820 -0.800358 +vn -0.366693 0.508820 -0.778870 +vn -0.414874 0.508820 -0.754309 +vn -0.461420 0.508821 -0.726769 +vn -0.506143 0.508819 -0.696363 +vn -0.548869 0.508820 -0.663208 +vn -0.589429 0.508820 -0.627435 +vn -0.627663 0.508820 -0.589187 +vn -0.663420 0.508820 -0.548612 +vn -0.696559 0.508820 -0.505873 +vn -0.726949 0.508819 -0.461138 +vn -0.754469 0.508820 -0.414582 +vn -0.779012 0.508821 -0.366390 +vn -0.800481 0.508820 -0.316754 +vn -0.818790 0.508821 -0.265866 +vn -0.833868 0.508821 -0.213928 +vn -0.845656 0.508820 -0.161147 +vn -0.854105 0.508821 -0.107731 +vn -0.859186 0.508818 -0.053889 +vn -0.860872 0.508822 0.000167 +vn -0.859164 0.508819 0.054221 +vn -0.854064 0.508820 0.108062 +vn -0.845594 0.508819 0.161476 +vn -0.833786 0.508820 0.214252 +vn -0.818687 0.508821 0.266183 +vn -0.800358 0.508820 0.317064 +vn -0.778870 0.508821 0.366693 +vn -0.754309 0.508820 0.414875 +vn -0.726769 0.508821 0.461420 +vn -0.696362 0.508821 0.506143 +vn -0.663208 0.508820 0.548870 +vn -0.627435 0.508820 0.589430 +vn -0.589187 0.508819 0.627664 +vn -0.548612 0.508821 0.663421 +vn -0.505873 0.508820 0.696559 +vn -0.461137 0.508821 0.726948 +vn -0.414582 0.508820 0.754470 +vn -0.366391 0.508820 0.779012 +vn -0.316753 0.508821 0.800481 +vn -0.265866 0.508820 0.818790 +vn -0.213929 0.508819 0.833869 +vn -0.161148 0.508820 0.845656 +vn -0.107731 0.508821 0.854105 +vn -0.053888 0.508821 0.859184 +vn 0.000167 0.508820 0.860873 +vn 0.054222 0.508821 0.859163 +vn 0.108062 0.508820 0.854064 +vn 0.161475 0.508820 0.845593 +vn 0.214251 0.508820 0.833786 +vn 0.266184 0.508820 0.818687 +vn 0.317063 0.508820 0.800358 +vn 0.366694 0.508820 0.778870 +vn 0.414875 0.508820 0.754308 +vn 0.461420 0.508821 0.726769 +vn 0.506143 0.508820 0.696363 +vn 0.548869 0.508820 0.663208 +vn 0.589430 0.508821 0.627435 +vn 0.627663 0.508820 0.589186 +vn 0.663421 0.508819 0.548613 +vn 0.696558 0.508821 0.505873 +vn 0.726949 0.508819 0.461138 +vn 0.754469 0.508820 0.414583 +vn 0.779012 0.508820 0.366390 +vn 0.800480 0.508821 0.316753 +vn 0.818791 0.508819 0.265866 +vn 0.833868 0.508821 0.213929 +vn 0.845656 0.508819 0.161147 +vn 0.854105 0.508821 0.107730 +vn 0.859186 0.508818 0.053889 +vn 0.860873 0.508820 -0.000170 +vn 0.842795 0.535598 -0.053203 +vn 0.837793 0.535597 -0.106013 +vn 0.829484 0.535596 -0.158410 +vn 0.817900 0.535597 -0.210181 +vn 0.803088 0.535598 -0.261123 +vn 0.785108 0.535597 -0.311034 +vn 0.764028 0.535597 -0.359717 +vn 0.739933 0.535598 -0.406981 +vn 0.712919 0.535598 -0.452638 +vn 0.683091 0.535597 -0.496510 +vn 0.650567 0.535598 -0.538422 +vn 0.615475 0.535598 -0.578209 +vn 0.577954 0.535598 -0.615714 +vn 0.538153 0.535597 -0.650789 +vn 0.496227 0.535597 -0.683296 +vn 0.452344 0.535598 -0.713106 +vn 0.406675 0.535597 -0.740102 +vn 0.359401 0.535598 -0.764176 +vn 0.310709 0.535597 -0.785236 +vn 0.260791 0.535597 -0.803196 +vn 0.209843 0.535598 -0.817986 +vn 0.158067 0.535597 -0.829548 +vn 0.105668 0.535597 -0.837836 +vn 0.052851 0.535598 -0.842818 +vn -0.000174 0.535598 -0.844473 +vn -0.053199 0.535598 -0.842796 +vn -0.106013 0.535598 -0.837792 +vn -0.158410 0.535598 -0.829482 +vn -0.210180 0.535597 -0.817900 +vn -0.261122 0.535598 -0.803088 +vn -0.311034 0.535598 -0.785107 +vn -0.359717 0.535598 -0.764028 +vn -0.406981 0.535598 -0.739933 +vn -0.452639 0.535598 -0.712919 +vn -0.496510 0.535598 -0.683091 +vn -0.538422 0.535598 -0.650567 +vn -0.578209 0.535597 -0.615476 +vn -0.615714 0.535598 -0.577954 +vn -0.650789 0.535598 -0.538153 +vn -0.683296 0.535597 -0.496228 +vn -0.713106 0.535597 -0.452344 +vn -0.740102 0.535597 -0.406676 +vn -0.764177 0.535598 -0.359401 +vn -0.785236 0.535597 -0.310710 +vn -0.803195 0.535599 -0.260791 +vn -0.817986 0.535598 -0.209843 +vn -0.829549 0.535596 -0.158068 +vn -0.837836 0.535599 -0.105668 +vn -0.842818 0.535598 -0.052851 +vn -0.844473 0.535599 0.000175 +vn -0.842796 0.535598 0.053199 +vn -0.837793 0.535597 0.106013 +vn -0.829483 0.535597 0.158410 +vn -0.817900 0.535596 0.210181 +vn -0.803087 0.535600 0.261123 +vn -0.785107 0.535598 0.311034 +vn -0.764029 0.535596 0.359718 +vn -0.739933 0.535598 0.406980 +vn -0.712919 0.535597 0.452639 +vn -0.683091 0.535596 0.496511 +vn -0.650567 0.535598 0.538422 +vn -0.615475 0.535598 0.578208 +vn -0.577955 0.535597 0.615714 +vn -0.538153 0.535598 0.650789 +vn -0.496228 0.535597 0.683296 +vn -0.452344 0.535598 0.713105 +vn -0.406675 0.535597 0.740102 +vn -0.359401 0.535597 0.764177 +vn -0.310710 0.535598 0.785235 +vn -0.260790 0.535597 0.803196 +vn -0.209843 0.535598 0.817986 +vn -0.158067 0.535598 0.829548 +vn -0.105668 0.535598 0.837836 +vn -0.052851 0.535598 0.842818 +vn 0.000174 0.535597 0.844474 +vn 0.053199 0.535598 0.842796 +vn 0.106013 0.535598 0.837793 +vn 0.158409 0.535597 0.829483 +vn 0.210181 0.535597 0.817900 +vn 0.261123 0.535597 0.803088 +vn 0.311033 0.535598 0.785107 +vn 0.359718 0.535598 0.764027 +vn 0.406981 0.535598 0.739933 +vn 0.452640 0.535598 0.712918 +vn 0.496510 0.535597 0.683092 +vn 0.538422 0.535597 0.650567 +vn 0.578209 0.535597 0.615475 +vn 0.615713 0.535598 0.577955 +vn 0.650789 0.535597 0.538153 +vn 0.683296 0.535598 0.496228 +vn 0.713106 0.535598 0.452344 +vn 0.740102 0.535597 0.406676 +vn 0.764176 0.535598 0.359401 +vn 0.785235 0.535598 0.310709 +vn 0.803196 0.535597 0.260791 +vn 0.817985 0.535599 0.209843 +vn 0.829549 0.535596 0.158068 +vn 0.837836 0.535597 0.105668 +vn 0.842818 0.535597 0.052851 +vn 0.844473 0.535598 -0.000178 +vn 0.825598 0.561846 -0.052127 +vn 0.820696 0.561845 -0.103861 +vn 0.812555 0.561846 -0.155187 +vn 0.801206 0.561848 -0.205902 +vn 0.786697 0.561847 -0.255804 +vn 0.769083 0.561847 -0.304697 +vn 0.748433 0.561847 -0.352386 +vn 0.724831 0.561845 -0.398686 +vn 0.698367 0.561846 -0.443411 +vn 0.669146 0.561847 -0.486387 +vn 0.637285 0.561846 -0.527443 +vn 0.602909 0.561847 -0.566417 +vn 0.566154 0.561846 -0.603157 +vn 0.527164 0.561847 -0.637516 +vn 0.486094 0.561846 -0.669359 +vn 0.443105 0.561846 -0.698560 +vn 0.398367 0.561847 -0.725005 +vn 0.352059 0.561846 -0.748588 +vn 0.304360 0.561846 -0.769216 +vn 0.255459 0.561846 -0.786810 +vn 0.205552 0.561846 -0.801297 +vn 0.154831 0.561847 -0.812623 +vn 0.103502 0.561847 -0.820741 +vn 0.051763 0.561847 -0.825620 +vn -0.000181 0.561847 -0.827241 +vn -0.052123 0.561846 -0.825598 +vn -0.103861 0.561847 -0.820696 +vn -0.155188 0.561847 -0.812555 +vn -0.205902 0.561846 -0.801207 +vn -0.255804 0.561846 -0.786697 +vn -0.304697 0.561846 -0.769083 +vn -0.352386 0.561846 -0.748433 +vn -0.398686 0.561846 -0.724830 +vn -0.443411 0.561846 -0.698366 +vn -0.486387 0.561846 -0.669146 +vn -0.527443 0.561847 -0.637285 +vn -0.566418 0.561846 -0.602909 +vn -0.603157 0.561847 -0.566154 +vn -0.637516 0.561846 -0.527164 +vn -0.669359 0.561846 -0.486094 +vn -0.698560 0.561847 -0.443105 +vn -0.725005 0.561845 -0.398368 +vn -0.748587 0.561848 -0.352057 +vn -0.769217 0.561846 -0.304360 +vn -0.786810 0.561846 -0.255460 +vn -0.801297 0.561847 -0.205551 +vn -0.812623 0.561846 -0.154832 +vn -0.820741 0.561846 -0.103501 +vn -0.825621 0.561846 -0.051762 +vn -0.827241 0.561847 0.000181 +vn -0.825597 0.561847 0.052123 +vn -0.820695 0.561847 0.103861 +vn -0.812555 0.561846 0.155188 +vn -0.801208 0.561846 0.205902 +vn -0.786697 0.561848 0.255804 +vn -0.769083 0.561846 0.304697 +vn -0.748434 0.561846 0.352387 +vn -0.724831 0.561846 0.398686 +vn -0.698366 0.561846 0.443411 +vn -0.669146 0.561845 0.486388 +vn -0.637285 0.561847 0.527443 +vn -0.602910 0.561846 0.566418 +vn -0.566154 0.561847 0.603157 +vn -0.527164 0.561847 0.637516 +vn -0.486093 0.561846 0.669359 +vn -0.443105 0.561846 0.698560 +vn -0.398367 0.561847 0.725005 +vn -0.352059 0.561846 0.748588 +vn -0.304360 0.561846 0.769217 +vn -0.255459 0.561847 0.786810 +vn -0.205551 0.561847 0.801297 +vn -0.154832 0.561847 0.812623 +vn -0.103502 0.561846 0.820741 +vn -0.051763 0.561847 0.825620 +vn 0.000181 0.561847 0.827241 +vn 0.052124 0.561847 0.825597 +vn 0.103860 0.561847 0.820696 +vn 0.155187 0.561846 0.812555 +vn 0.205902 0.561846 0.801207 +vn 0.255804 0.561847 0.786697 +vn 0.304697 0.561847 0.769082 +vn 0.352387 0.561847 0.748433 +vn 0.398686 0.561847 0.724830 +vn 0.443412 0.561846 0.698365 +vn 0.486386 0.561846 0.669147 +vn 0.527443 0.561847 0.637285 +vn 0.566418 0.561846 0.602909 +vn 0.603157 0.561847 0.566154 +vn 0.637516 0.561847 0.527164 +vn 0.669359 0.561847 0.486094 +vn 0.698559 0.561848 0.443105 +vn 0.725005 0.561845 0.398368 +vn 0.748587 0.561848 0.352057 +vn 0.769216 0.561847 0.304359 +vn 0.786810 0.561846 0.255459 +vn 0.801297 0.561847 0.205551 +vn 0.812623 0.561846 0.154831 +vn 0.820741 0.561848 0.103501 +vn 0.825620 0.561848 0.051762 +vn 0.827241 0.561848 -0.000184 +vn 0.807586 0.587540 -0.051001 +vn 0.802791 0.587540 -0.101605 +vn 0.794826 0.587542 -0.151812 +vn 0.783726 0.587541 -0.201420 +vn 0.769533 0.587538 -0.250234 +vn 0.752301 0.587541 -0.298059 +vn 0.732101 0.587540 -0.344708 +vn 0.709014 0.587539 -0.389997 +vn 0.683125 0.587540 -0.433747 +vn 0.654542 0.587541 -0.475784 +vn 0.623376 0.587540 -0.515945 +vn 0.589749 0.587541 -0.554068 +vn 0.553795 0.587540 -0.590006 +vn 0.515656 0.587540 -0.623615 +vn 0.475481 0.587540 -0.654763 +vn 0.433429 0.587541 -0.683326 +vn 0.389667 0.587541 -0.709193 +vn 0.344368 0.587541 -0.732261 +vn 0.297710 0.587540 -0.752439 +vn 0.249876 0.587540 -0.769649 +vn 0.201057 0.587540 -0.783819 +vn 0.151443 0.587542 -0.794896 +vn 0.101234 0.587540 -0.802837 +vn 0.050622 0.587540 -0.807610 +vn -0.000188 0.587541 -0.809195 +vn -0.050996 0.587540 -0.807586 +vn -0.101605 0.587541 -0.802790 +vn -0.151812 0.587541 -0.794826 +vn -0.201420 0.587540 -0.783726 +vn -0.250234 0.587540 -0.769532 +vn -0.298058 0.587540 -0.752301 +vn -0.344709 0.587541 -0.732101 +vn -0.389997 0.587540 -0.709013 +vn -0.433747 0.587540 -0.683125 +vn -0.475785 0.587540 -0.654542 +vn -0.515945 0.587541 -0.623375 +vn -0.554069 0.587540 -0.589749 +vn -0.590006 0.587540 -0.553796 +vn -0.623615 0.587540 -0.515656 +vn -0.654763 0.587541 -0.475481 +vn -0.683326 0.587541 -0.433429 +vn -0.709194 0.587540 -0.389668 +vn -0.732261 0.587541 -0.344368 +vn -0.752440 0.587540 -0.297711 +vn -0.769648 0.587541 -0.249876 +vn -0.783819 0.587541 -0.201057 +vn -0.794897 0.587540 -0.151443 +vn -0.802837 0.587541 -0.101233 +vn -0.807610 0.587541 -0.050622 +vn -0.809195 0.587541 0.000188 +vn -0.807586 0.587541 0.050997 +vn -0.802791 0.587540 0.101605 +vn -0.794827 0.587540 0.151812 +vn -0.783726 0.587541 0.201420 +vn -0.769532 0.587541 0.250233 +vn -0.752301 0.587541 0.298059 +vn -0.732102 0.587540 0.344708 +vn -0.709013 0.587539 0.389997 +vn -0.683124 0.587542 0.433747 +vn -0.654542 0.587541 0.475784 +vn -0.623376 0.587541 0.515945 +vn -0.589749 0.587540 0.554069 +vn -0.553795 0.587541 0.590006 +vn -0.515656 0.587541 0.623615 +vn -0.475481 0.587540 0.654763 +vn -0.433429 0.587541 0.683326 +vn -0.389668 0.587540 0.709194 +vn -0.344368 0.587541 0.732261 +vn -0.297710 0.587541 0.752439 +vn -0.249876 0.587541 0.769648 +vn -0.201057 0.587539 0.783820 +vn -0.151444 0.587540 0.794897 +vn -0.101233 0.587541 0.802837 +vn -0.050623 0.587541 0.807609 +vn 0.000187 0.587541 0.809195 +vn 0.050997 0.587541 0.807586 +vn 0.101605 0.587540 0.802791 +vn 0.151812 0.587541 0.794826 +vn 0.201421 0.587541 0.783725 +vn 0.250233 0.587541 0.769532 +vn 0.298059 0.587541 0.752301 +vn 0.344708 0.587541 0.732101 +vn 0.389997 0.587540 0.709013 +vn 0.433747 0.587541 0.683125 +vn 0.475785 0.587541 0.654542 +vn 0.515944 0.587541 0.623375 +vn 0.554069 0.587541 0.589749 +vn 0.590006 0.587540 0.553796 +vn 0.623615 0.587541 0.515655 +vn 0.654763 0.587540 0.475481 +vn 0.683325 0.587542 0.433429 +vn 0.709194 0.587540 0.389668 +vn 0.732261 0.587541 0.344367 +vn 0.752440 0.587539 0.297711 +vn 0.769648 0.587540 0.249877 +vn 0.783818 0.587542 0.201057 +vn 0.794898 0.587539 0.151444 +vn 0.802837 0.587541 0.101232 +vn 0.807610 0.587540 0.050623 +vn 0.809195 0.587541 -0.000191 +vn 0.788776 0.612659 -0.049823 +vn 0.784092 0.612658 -0.099249 +vn 0.776313 0.612658 -0.148287 +vn 0.765469 0.612659 -0.196739 +vn 0.751607 0.612657 -0.244416 +vn 0.734775 0.612658 -0.291127 +vn 0.715046 0.612658 -0.336689 +vn 0.692494 0.612658 -0.380923 +vn 0.667209 0.612658 -0.423653 +vn 0.639292 0.612657 -0.464712 +vn 0.608850 0.612658 -0.503936 +vn 0.576006 0.612658 -0.541172 +vn 0.540890 0.612657 -0.576272 +vn 0.503638 0.612658 -0.609097 +vn 0.464397 0.612658 -0.639520 +vn 0.423326 0.612658 -0.667417 +vn 0.380584 0.612658 -0.692680 +vn 0.336339 0.612658 -0.715210 +vn 0.290768 0.612658 -0.734918 +vn 0.244046 0.612658 -0.751726 +vn 0.196364 0.612658 -0.765566 +vn 0.147907 0.612657 -0.776386 +vn 0.098865 0.612658 -0.784141 +vn 0.049432 0.612657 -0.788801 +vn -0.000194 0.612658 -0.790348 +vn -0.049819 0.612658 -0.788777 +vn -0.099249 0.612658 -0.784092 +vn -0.148287 0.612658 -0.776313 +vn -0.196739 0.612658 -0.765470 +vn -0.244415 0.612659 -0.751605 +vn -0.291127 0.612658 -0.734775 +vn -0.336689 0.612658 -0.715046 +vn -0.380922 0.612657 -0.692495 +vn -0.423654 0.612658 -0.667208 +vn -0.464712 0.612657 -0.639292 +vn -0.503936 0.612658 -0.608850 +vn -0.541172 0.612657 -0.576007 +vn -0.576271 0.612658 -0.540890 +vn -0.609097 0.612658 -0.503638 +vn -0.639519 0.612658 -0.464398 +vn -0.667417 0.612658 -0.423326 +vn -0.692680 0.612658 -0.380583 +vn -0.715211 0.612657 -0.336339 +vn -0.734918 0.612659 -0.290767 +vn -0.751725 0.612658 -0.244047 +vn -0.765567 0.612657 -0.196364 +vn -0.776385 0.612658 -0.147907 +vn -0.784140 0.612659 -0.098865 +vn -0.788801 0.612657 -0.049433 +vn -0.790348 0.612658 0.000193 +vn -0.788776 0.612659 0.049819 +vn -0.784092 0.612657 0.099249 +vn -0.776312 0.612658 0.148287 +vn -0.765469 0.612658 0.196739 +vn -0.751607 0.612657 0.244416 +vn -0.734777 0.612657 0.291127 +vn -0.715047 0.612657 0.336689 +vn -0.692494 0.612657 0.380923 +vn -0.667209 0.612657 0.423654 +vn -0.639291 0.612659 0.464711 +vn -0.608850 0.612658 0.503936 +vn -0.576007 0.612658 0.541172 +vn -0.540889 0.612659 0.576271 +vn -0.503638 0.612658 0.609097 +vn -0.464398 0.612658 0.639519 +vn -0.423326 0.612657 0.667418 +vn -0.380584 0.612657 0.692681 +vn -0.336339 0.612658 0.715211 +vn -0.290766 0.612658 0.734918 +vn -0.244046 0.612658 0.751726 +vn -0.196365 0.612657 0.765566 +vn -0.147906 0.612658 0.776385 +vn -0.098865 0.612658 0.784140 +vn -0.049434 0.612658 0.788801 +vn 0.000194 0.612658 0.790348 +vn 0.049819 0.612657 0.788777 +vn 0.099249 0.612658 0.784091 +vn 0.148287 0.612658 0.776313 +vn 0.196739 0.612658 0.765469 +vn 0.244415 0.612658 0.751606 +vn 0.291127 0.612658 0.734775 +vn 0.336689 0.612658 0.715046 +vn 0.380923 0.612657 0.692495 +vn 0.423654 0.612658 0.667209 +vn 0.464712 0.612658 0.639291 +vn 0.503936 0.612658 0.608850 +vn 0.541172 0.612658 0.576006 +vn 0.576271 0.612658 0.540889 +vn 0.609097 0.612658 0.503638 +vn 0.639519 0.612658 0.464398 +vn 0.667416 0.612659 0.423326 +vn 0.692680 0.612659 0.380583 +vn 0.715211 0.612659 0.336338 +vn 0.734919 0.612657 0.290767 +vn 0.751725 0.612658 0.244047 +vn 0.765566 0.612659 0.196364 +vn 0.776386 0.612657 0.147906 +vn 0.784141 0.612657 0.098865 +vn 0.788801 0.612658 0.049434 +vn 0.790349 0.612657 -0.000197 +vn 0.769189 0.637171 -0.048596 +vn 0.764621 0.637170 -0.096794 +vn 0.757035 0.637169 -0.144615 +vn 0.746459 0.637172 -0.191863 +vn 0.732941 0.637169 -0.238357 +vn 0.716527 0.637170 -0.283907 +vn 0.697287 0.637170 -0.328338 +vn 0.675293 0.637171 -0.371473 +vn 0.650636 0.637170 -0.413142 +vn 0.623411 0.637170 -0.453181 +vn 0.593725 0.637171 -0.491431 +vn 0.561696 0.637171 -0.527741 +vn 0.527451 0.637170 -0.561969 +vn 0.491124 0.637170 -0.593979 +vn 0.452858 0.637171 -0.623645 +vn 0.412805 0.637170 -0.650850 +vn 0.371124 0.637171 -0.675485 +vn 0.327978 0.637170 -0.697456 +vn 0.283538 0.637171 -0.716673 +vn 0.237976 0.637170 -0.733063 +vn 0.191479 0.637170 -0.746559 +vn 0.144224 0.637170 -0.757109 +vn 0.096400 0.637171 -0.764670 +vn 0.048195 0.637170 -0.769215 +vn -0.000199 0.637170 -0.770723 +vn -0.048592 0.637170 -0.769190 +vn -0.096795 0.637170 -0.764621 +vn -0.144614 0.637170 -0.757034 +vn -0.191865 0.637171 -0.746459 +vn -0.238356 0.637171 -0.732939 +vn -0.283908 0.637170 -0.716527 +vn -0.328337 0.637170 -0.697287 +vn -0.371473 0.637170 -0.675294 +vn -0.413142 0.637171 -0.650635 +vn -0.453180 0.637170 -0.623411 +vn -0.491431 0.637171 -0.593725 +vn -0.527741 0.637170 -0.561697 +vn -0.561969 0.637171 -0.527451 +vn -0.593979 0.637171 -0.491124 +vn -0.623645 0.637171 -0.452858 +vn -0.650850 0.637170 -0.412806 +vn -0.675486 0.637171 -0.371124 +vn -0.697456 0.637170 -0.327978 +vn -0.716673 0.637171 -0.283537 +vn -0.733063 0.637170 -0.237977 +vn -0.746559 0.637171 -0.191478 +vn -0.757108 0.637171 -0.144224 +vn -0.764669 0.637172 -0.096399 +vn -0.769215 0.637170 -0.048196 +vn -0.770723 0.637170 0.000199 +vn -0.769189 0.637172 0.048593 +vn -0.764622 0.637169 0.096795 +vn -0.757034 0.637170 0.144615 +vn -0.746460 0.637171 0.191863 +vn -0.732940 0.637169 0.238356 +vn -0.716527 0.637170 0.283907 +vn -0.697286 0.637171 0.328338 +vn -0.675293 0.637171 0.371473 +vn -0.650636 0.637170 0.413143 +vn -0.623411 0.637170 0.453181 +vn -0.593726 0.637170 0.491431 +vn -0.561697 0.637171 0.527741 +vn -0.527451 0.637171 0.561969 +vn -0.491124 0.637170 0.593980 +vn -0.452858 0.637171 0.623645 +vn -0.412805 0.637170 0.650850 +vn -0.371124 0.637171 0.675485 +vn -0.327977 0.637171 0.697456 +vn -0.283537 0.637171 0.716673 +vn -0.237978 0.637170 0.733062 +vn -0.191478 0.637171 0.746558 +vn -0.144224 0.637171 0.757108 +vn -0.096399 0.637171 0.764670 +vn -0.048196 0.637171 0.769214 +vn 0.000199 0.637171 0.770722 +vn 0.048594 0.637171 0.769189 +vn 0.096794 0.637171 0.764621 +vn 0.144615 0.637170 0.757034 +vn 0.191863 0.637171 0.746459 +vn 0.238355 0.637171 0.732939 +vn 0.283907 0.637170 0.716527 +vn 0.328337 0.637170 0.697287 +vn 0.371474 0.637171 0.675293 +vn 0.413143 0.637171 0.650635 +vn 0.453181 0.637170 0.623411 +vn 0.491431 0.637171 0.593725 +vn 0.527741 0.637171 0.561696 +vn 0.561969 0.637171 0.527451 +vn 0.593979 0.637170 0.491124 +vn 0.623645 0.637171 0.452857 +vn 0.650849 0.637171 0.412806 +vn 0.675485 0.637170 0.371124 +vn 0.697456 0.637170 0.327977 +vn 0.716674 0.637170 0.283537 +vn 0.733062 0.637171 0.237977 +vn 0.746559 0.637170 0.191478 +vn 0.757108 0.637170 0.144224 +vn 0.764671 0.637170 0.096400 +vn 0.769214 0.637171 0.048195 +vn 0.770723 0.637171 -0.000202 +vn 0.748846 0.661052 -0.047321 +vn 0.744398 0.661052 -0.094245 +vn 0.737010 0.661054 -0.140800 +vn 0.726716 0.661053 -0.186799 +vn 0.713551 0.661054 -0.232062 +vn 0.697572 0.661054 -0.276408 +vn 0.678842 0.661052 -0.319664 +vn 0.657429 0.661053 -0.361657 +vn 0.633423 0.661053 -0.402224 +vn 0.606917 0.661053 -0.441203 +vn 0.578016 0.661053 -0.478441 +vn 0.546834 0.661054 -0.513791 +vn 0.513494 0.661053 -0.547113 +vn 0.478127 0.661053 -0.578276 +vn 0.440873 0.661053 -0.607157 +vn 0.401879 0.661053 -0.633642 +vn 0.361300 0.661053 -0.657626 +vn 0.319295 0.661053 -0.679014 +vn 0.276028 0.661053 -0.697723 +vn 0.231673 0.661053 -0.713678 +vn 0.186404 0.661053 -0.726817 +vn 0.140399 0.661054 -0.737086 +vn 0.093841 0.661053 -0.744448 +vn 0.046911 0.661053 -0.748871 +vn -0.000204 0.661052 -0.750340 +vn -0.047318 0.661053 -0.748846 +vn -0.094245 0.661053 -0.744397 +vn -0.140800 0.661053 -0.737010 +vn -0.186799 0.661054 -0.726715 +vn -0.232061 0.661052 -0.713553 +vn -0.276408 0.661053 -0.697572 +vn -0.319663 0.661053 -0.678840 +vn -0.361658 0.661053 -0.657428 +vn -0.402224 0.661053 -0.633422 +vn -0.441203 0.661053 -0.606918 +vn -0.478441 0.661052 -0.578017 +vn -0.513792 0.661053 -0.546834 +vn -0.547113 0.661054 -0.513493 +vn -0.578276 0.661053 -0.478127 +vn -0.607157 0.661053 -0.440873 +vn -0.633642 0.661053 -0.401879 +vn -0.657625 0.661053 -0.361300 +vn -0.679014 0.661053 -0.319294 +vn -0.697723 0.661053 -0.276028 +vn -0.713679 0.661052 -0.231674 +vn -0.726816 0.661053 -0.186405 +vn -0.737087 0.661053 -0.140399 +vn -0.744447 0.661054 -0.093840 +vn -0.748871 0.661053 -0.046911 +vn -0.750339 0.661053 0.000204 +vn -0.748845 0.661054 0.047318 +vn -0.744398 0.661052 0.094245 +vn -0.737010 0.661054 0.140800 +vn -0.726714 0.661054 0.186799 +vn -0.713551 0.661054 0.232061 +vn -0.697572 0.661053 0.276408 +vn -0.678840 0.661054 0.319663 +vn -0.657429 0.661053 0.361658 +vn -0.633423 0.661053 0.402225 +vn -0.606918 0.661053 0.441203 +vn -0.578016 0.661053 0.478441 +vn -0.546834 0.661053 0.513791 +vn -0.513494 0.661053 0.547113 +vn -0.478127 0.661053 0.578276 +vn -0.440873 0.661053 0.607157 +vn -0.401879 0.661054 0.633641 +vn -0.361300 0.661053 0.657625 +vn -0.319294 0.661054 0.679014 +vn -0.276029 0.661053 0.697723 +vn -0.231674 0.661053 0.713678 +vn -0.186403 0.661054 0.726816 +vn -0.140399 0.661054 0.737086 +vn -0.093840 0.661053 0.744448 +vn -0.046911 0.661053 0.748871 +vn 0.000204 0.661054 0.750339 +vn 0.047318 0.661053 0.748846 +vn 0.094244 0.661053 0.744397 +vn 0.140800 0.661054 0.737010 +vn 0.186798 0.661053 0.726716 +vn 0.232062 0.661053 0.713552 +vn 0.276409 0.661053 0.697572 +vn 0.319664 0.661054 0.678840 +vn 0.361658 0.661054 0.657428 +vn 0.402224 0.661054 0.633422 +vn 0.441203 0.661053 0.606917 +vn 0.478441 0.661053 0.578016 +vn 0.513791 0.661053 0.546834 +vn 0.547113 0.661054 0.513493 +vn 0.578277 0.661053 0.478126 +vn 0.607157 0.661053 0.440873 +vn 0.633641 0.661053 0.401880 +vn 0.657626 0.661053 0.361299 +vn 0.679014 0.661054 0.319294 +vn 0.697723 0.661053 0.276029 +vn 0.713677 0.661054 0.231673 +vn 0.726817 0.661052 0.186404 +vn 0.737086 0.661053 0.140400 +vn 0.744448 0.661053 0.093840 +vn 0.748871 0.661054 0.046911 +vn 0.750339 0.661053 -0.000207 +vn 0.727762 0.684285 -0.045999 +vn 0.723438 0.684286 -0.091602 +vn 0.716259 0.684285 -0.136846 +vn 0.706253 0.684286 -0.181550 +vn 0.693458 0.684287 -0.225538 +vn 0.677929 0.684286 -0.268636 +vn 0.659724 0.684285 -0.310673 +vn 0.638914 0.684286 -0.351484 +vn 0.615584 0.684286 -0.390908 +vn 0.589824 0.684285 -0.428790 +vn 0.561736 0.684286 -0.464979 +vn 0.531432 0.684286 -0.499333 +vn 0.499030 0.684285 -0.531718 +vn 0.464659 0.684285 -0.562003 +vn 0.428453 0.684285 -0.590070 +vn 0.390556 0.684285 -0.615808 +vn 0.351119 0.684286 -0.639116 +vn 0.310296 0.684285 -0.659902 +vn 0.268248 0.684285 -0.678083 +vn 0.225141 0.684286 -0.693588 +vn 0.181147 0.684285 -0.706357 +vn 0.136437 0.684286 -0.716336 +vn 0.091188 0.684286 -0.723490 +vn 0.045580 0.684286 -0.727787 +vn -0.000209 0.684285 -0.729215 +vn -0.045996 0.684285 -0.727762 +vn -0.091601 0.684285 -0.723438 +vn -0.136845 0.684285 -0.716259 +vn -0.181550 0.684285 -0.706254 +vn -0.225538 0.684284 -0.693461 +vn -0.268636 0.684286 -0.677929 +vn -0.310672 0.684285 -0.659724 +vn -0.351485 0.684285 -0.638915 +vn -0.390909 0.684285 -0.615584 +vn -0.428790 0.684285 -0.589825 +vn -0.464979 0.684285 -0.561737 +vn -0.499333 0.684285 -0.531432 +vn -0.531717 0.684286 -0.499029 +vn -0.562003 0.684285 -0.464658 +vn -0.590069 0.684285 -0.428454 +vn -0.615808 0.684285 -0.390557 +vn -0.639116 0.684286 -0.351118 +vn -0.659902 0.684285 -0.310295 +vn -0.678082 0.684286 -0.268248 +vn -0.693589 0.684285 -0.225143 +vn -0.706357 0.684285 -0.181146 +vn -0.716337 0.684285 -0.136437 +vn -0.723490 0.684286 -0.091189 +vn -0.727788 0.684286 -0.045580 +vn -0.729214 0.684286 0.000208 +vn -0.727761 0.684286 0.045996 +vn -0.723437 0.684287 0.091602 +vn -0.716258 0.684286 0.136845 +vn -0.706252 0.684286 0.181550 +vn -0.693459 0.684286 0.225538 +vn -0.677930 0.684285 0.268636 +vn -0.659723 0.684286 0.310673 +vn -0.638915 0.684285 0.351485 +vn -0.615584 0.684286 0.390909 +vn -0.589824 0.684285 0.428790 +vn -0.561736 0.684285 0.464979 +vn -0.531432 0.684285 0.499333 +vn -0.499030 0.684285 0.531718 +vn -0.464658 0.684286 0.562002 +vn -0.428452 0.684285 0.590070 +vn -0.390556 0.684286 0.615808 +vn -0.351119 0.684285 0.639116 +vn -0.310295 0.684285 0.659902 +vn -0.268248 0.684285 0.678083 +vn -0.225142 0.684286 0.693588 +vn -0.181147 0.684285 0.706357 +vn -0.136436 0.684285 0.716337 +vn -0.091188 0.684286 0.723489 +vn -0.045579 0.684286 0.727788 +vn 0.000208 0.684286 0.729214 +vn 0.045996 0.684286 0.727762 +vn 0.091602 0.684284 0.723439 +vn 0.136846 0.684285 0.716259 +vn 0.181549 0.684285 0.706254 +vn 0.225537 0.684285 0.693461 +vn 0.268636 0.684286 0.677929 +vn 0.310673 0.684285 0.659724 +vn 0.351485 0.684286 0.638915 +vn 0.390908 0.684286 0.615584 +vn 0.428790 0.684286 0.589824 +vn 0.464979 0.684285 0.561736 +vn 0.499333 0.684285 0.531432 +vn 0.531717 0.684286 0.499029 +vn 0.562002 0.684286 0.464658 +vn 0.590069 0.684286 0.428453 +vn 0.615807 0.684286 0.390557 +vn 0.639116 0.684286 0.351118 +vn 0.659901 0.684286 0.310296 +vn 0.678082 0.684287 0.268248 +vn 0.693588 0.684286 0.225142 +vn 0.706356 0.684285 0.181147 +vn 0.716336 0.684286 0.136436 +vn 0.723491 0.684285 0.091188 +vn 0.727789 0.684285 0.045580 +vn 0.729213 0.684287 -0.000211 +vn 0.705961 0.706843 -0.044631 +vn 0.701766 0.706843 -0.088868 +vn 0.694802 0.706843 -0.132756 +vn 0.685093 0.706844 -0.176120 +vn 0.672683 0.706844 -0.218791 +vn 0.657618 0.706843 -0.260597 +vn 0.639957 0.706844 -0.301375 +vn 0.619771 0.706843 -0.340964 +vn 0.597139 0.706844 -0.379206 +vn 0.572150 0.706843 -0.415953 +vn 0.544903 0.706844 -0.451057 +vn 0.515506 0.706843 -0.484383 +vn 0.484074 0.706843 -0.515796 +vn 0.450731 0.706844 -0.545173 +vn 0.415610 0.706843 -0.572400 +vn 0.378848 0.706843 -0.597366 +vn 0.340592 0.706844 -0.619975 +vn 0.300991 0.706843 -0.640138 +vn 0.260203 0.706844 -0.657774 +vn 0.218388 0.706844 -0.672814 +vn 0.175712 0.706844 -0.685199 +vn 0.132339 0.706845 -0.694879 +vn 0.088447 0.706843 -0.701819 +vn 0.044206 0.706844 -0.705987 +vn -0.000213 0.706843 -0.707370 +vn -0.044628 0.706843 -0.705961 +vn -0.088867 0.706843 -0.701766 +vn -0.132755 0.706844 -0.694801 +vn -0.176121 0.706844 -0.685094 +vn -0.218791 0.706843 -0.672683 +vn -0.260597 0.706844 -0.657618 +vn -0.301375 0.706843 -0.639958 +vn -0.340964 0.706843 -0.619771 +vn -0.379208 0.706843 -0.597138 +vn -0.415953 0.706844 -0.572149 +vn -0.451058 0.706844 -0.544902 +vn -0.484383 0.706844 -0.515504 +vn -0.515796 0.706844 -0.484073 +vn -0.545174 0.706843 -0.450731 +vn -0.572399 0.706844 -0.415610 +vn -0.597366 0.706844 -0.378847 +vn -0.619975 0.706844 -0.340592 +vn -0.640138 0.706843 -0.300992 +vn -0.657773 0.706844 -0.260203 +vn -0.672815 0.706843 -0.218388 +vn -0.685199 0.706844 -0.175710 +vn -0.694880 0.706844 -0.132340 +vn -0.701819 0.706843 -0.088447 +vn -0.705987 0.706844 -0.044205 +vn -0.707370 0.706843 0.000212 +vn -0.705961 0.706843 0.044628 +vn -0.701765 0.706844 0.088868 +vn -0.694801 0.706843 0.132756 +vn -0.685095 0.706843 0.176121 +vn -0.672682 0.706845 0.218791 +vn -0.657618 0.706844 0.260597 +vn -0.639957 0.706844 0.301375 +vn -0.619771 0.706843 0.340964 +vn -0.597138 0.706844 0.379206 +vn -0.572150 0.706843 0.415953 +vn -0.544903 0.706844 0.451057 +vn -0.515505 0.706844 0.484382 +vn -0.484074 0.706843 0.515796 +vn -0.450731 0.706844 0.545173 +vn -0.415610 0.706843 0.572399 +vn -0.378848 0.706844 0.597366 +vn -0.340592 0.706844 0.619975 +vn -0.300992 0.706844 0.640138 +vn -0.260203 0.706843 0.657774 +vn -0.218387 0.706844 0.672813 +vn -0.175710 0.706843 0.685199 +vn -0.132339 0.706844 0.694879 +vn -0.088447 0.706844 0.701818 +vn -0.044204 0.706844 0.705987 +vn 0.000212 0.706844 0.707369 +vn 0.044627 0.706843 0.705961 +vn 0.088867 0.706843 0.701766 +vn 0.132756 0.706844 0.694801 +vn 0.176122 0.706844 0.685093 +vn 0.218791 0.706844 0.672682 +vn 0.260598 0.706844 0.657617 +vn 0.301375 0.706844 0.639957 +vn 0.340964 0.706843 0.619771 +vn 0.379207 0.706844 0.597138 +vn 0.415953 0.706844 0.572149 +vn 0.451058 0.706844 0.544903 +vn 0.484383 0.706844 0.515504 +vn 0.515796 0.706844 0.484073 +vn 0.545173 0.706844 0.450731 +vn 0.572399 0.706844 0.415609 +vn 0.597366 0.706844 0.378848 +vn 0.619975 0.706843 0.340592 +vn 0.640138 0.706844 0.300991 +vn 0.657773 0.706844 0.260203 +vn 0.672814 0.706843 0.218388 +vn 0.685200 0.706843 0.175710 +vn 0.694880 0.706844 0.132339 +vn 0.701818 0.706844 0.088447 +vn 0.705989 0.706842 0.044205 +vn 0.707369 0.706845 -0.000215 +vn 0.683463 0.728705 -0.043218 +vn 0.679401 0.728705 -0.086046 +vn 0.672658 0.728704 -0.128536 +vn 0.663259 0.728705 -0.170518 +vn 0.651244 0.728704 -0.211829 +vn 0.636658 0.728704 -0.252303 +vn 0.619560 0.728704 -0.291781 +vn 0.600016 0.728705 -0.330106 +vn 0.578105 0.728704 -0.367131 +vn 0.553912 0.728704 -0.402706 +vn 0.527532 0.728705 -0.436692 +vn 0.499072 0.728704 -0.468955 +vn 0.468640 0.728705 -0.499365 +vn 0.436360 0.728705 -0.527806 +vn 0.402358 0.728704 -0.554165 +vn 0.366768 0.728705 -0.578335 +vn 0.329730 0.728705 -0.600223 +vn 0.291391 0.728704 -0.619744 +vn 0.251902 0.728704 -0.636817 +vn 0.211419 0.728704 -0.651377 +vn 0.170102 0.728705 -0.663367 +vn 0.128112 0.728704 -0.672739 +vn 0.085619 0.728703 -0.679456 +vn 0.042787 0.728705 -0.683490 +vn -0.000216 0.728704 -0.684829 +vn -0.043216 0.728704 -0.683464 +vn -0.086045 0.728704 -0.679402 +vn -0.128535 0.728704 -0.672658 +vn -0.170518 0.728705 -0.663260 +vn -0.211828 0.728704 -0.651245 +vn -0.252302 0.728704 -0.636659 +vn -0.291780 0.728704 -0.619561 +vn -0.330107 0.728705 -0.600016 +vn -0.367131 0.728705 -0.578104 +vn -0.402705 0.728705 -0.553912 +vn -0.436691 0.728704 -0.527533 +vn -0.468954 0.728705 -0.499071 +vn -0.499365 0.728704 -0.468641 +vn -0.527806 0.728704 -0.436360 +vn -0.554164 0.728705 -0.402357 +vn -0.578335 0.728704 -0.366767 +vn -0.600223 0.728705 -0.329730 +vn -0.619742 0.728705 -0.291391 +vn -0.636816 0.728704 -0.251903 +vn -0.651377 0.728704 -0.211420 +vn -0.663366 0.728705 -0.170102 +vn -0.672738 0.728705 -0.128113 +vn -0.679455 0.728705 -0.085619 +vn -0.683490 0.728705 -0.042786 +vn -0.684828 0.728705 0.000215 +vn -0.683463 0.728705 0.043216 +vn -0.679400 0.728705 0.086045 +vn -0.672659 0.728704 0.128535 +vn -0.663261 0.728703 0.170519 +vn -0.651243 0.728705 0.211829 +vn -0.636659 0.728704 0.252303 +vn -0.619559 0.728705 0.291780 +vn -0.600016 0.728705 0.330107 +vn -0.578104 0.728705 0.367131 +vn -0.553911 0.728704 0.402706 +vn -0.527532 0.728704 0.436692 +vn -0.499071 0.728704 0.468955 +vn -0.468641 0.728704 0.499366 +vn -0.436360 0.728705 0.527806 +vn -0.402357 0.728705 0.554165 +vn -0.366767 0.728705 0.578335 +vn -0.329730 0.728704 0.600224 +vn -0.291391 0.728705 0.619743 +vn -0.251902 0.728704 0.636817 +vn -0.211419 0.728705 0.651377 +vn -0.170102 0.728704 0.663367 +vn -0.128113 0.728704 0.672738 +vn -0.085619 0.728704 0.679456 +vn -0.042786 0.728704 0.683490 +vn 0.000215 0.728704 0.684829 +vn 0.043215 0.728704 0.683464 +vn 0.086045 0.728705 0.679401 +vn 0.128536 0.728704 0.672658 +vn 0.170518 0.728704 0.663260 +vn 0.211828 0.728704 0.651244 +vn 0.252302 0.728704 0.636659 +vn 0.291780 0.728704 0.619560 +vn 0.330107 0.728705 0.600016 +vn 0.367131 0.728705 0.578104 +vn 0.402706 0.728705 0.553911 +vn 0.436691 0.728705 0.527532 +vn 0.468954 0.728705 0.499070 +vn 0.499365 0.728704 0.468641 +vn 0.527806 0.728705 0.436360 +vn 0.554164 0.728704 0.402357 +vn 0.578335 0.728704 0.366767 +vn 0.600223 0.728705 0.329730 +vn 0.619743 0.728705 0.291391 +vn 0.636816 0.728705 0.251903 +vn 0.651377 0.728704 0.211420 +vn 0.663367 0.728704 0.170102 +vn 0.672738 0.728705 0.128113 +vn 0.679455 0.728704 0.085619 +vn 0.683491 0.728704 0.042786 +vn 0.684827 0.728705 -0.000219 +vn 0.660292 0.749847 -0.041763 +vn 0.656366 0.749848 -0.083137 +vn 0.649852 0.749846 -0.124187 +vn 0.640771 0.749848 -0.164747 +vn 0.629163 0.749847 -0.204656 +vn 0.615070 0.749847 -0.243757 +vn 0.598551 0.749847 -0.281897 +vn 0.579669 0.749848 -0.318924 +vn 0.558500 0.749847 -0.354692 +vn 0.535127 0.749847 -0.389061 +vn 0.509642 0.749848 -0.421893 +vn 0.482146 0.749847 -0.453063 +vn 0.452745 0.749847 -0.482442 +vn 0.421559 0.749847 -0.509918 +vn 0.388710 0.749847 -0.535383 +vn 0.354326 0.749847 -0.558733 +vn 0.318543 0.749847 -0.579879 +vn 0.281504 0.749847 -0.598736 +vn 0.243353 0.749847 -0.615231 +vn 0.204243 0.749847 -0.629297 +vn 0.164326 0.749847 -0.640880 +vn 0.123760 0.749847 -0.649933 +vn 0.082706 0.749848 -0.656421 +vn 0.041326 0.749848 -0.660318 +vn -0.000217 0.749847 -0.661612 +vn -0.041760 0.749847 -0.660292 +vn -0.083137 0.749847 -0.656367 +vn -0.124187 0.749847 -0.649852 +vn -0.164747 0.749847 -0.640772 +vn -0.204656 0.749847 -0.629162 +vn -0.243757 0.749847 -0.615071 +vn -0.281897 0.749848 -0.598550 +vn -0.318925 0.749847 -0.579669 +vn -0.354693 0.749847 -0.558500 +vn -0.389061 0.749847 -0.535127 +vn -0.421894 0.749847 -0.509642 +vn -0.453063 0.749848 -0.482144 +vn -0.482443 0.749847 -0.452746 +vn -0.509919 0.749847 -0.421559 +vn -0.535383 0.749848 -0.388708 +vn -0.558734 0.749847 -0.354325 +vn -0.579879 0.749847 -0.318543 +vn -0.598737 0.749847 -0.281503 +vn -0.615231 0.749847 -0.243354 +vn -0.629297 0.749847 -0.204242 +vn -0.640880 0.749846 -0.164325 +vn -0.649934 0.749846 -0.123760 +vn -0.656422 0.749847 -0.082706 +vn -0.660320 0.749847 -0.041326 +vn -0.661611 0.749847 0.000218 +vn -0.660292 0.749847 0.041760 +vn -0.656367 0.749847 0.083137 +vn -0.649852 0.749847 0.124187 +vn -0.640772 0.749846 0.164747 +vn -0.629162 0.749848 0.204655 +vn -0.615071 0.749847 0.243758 +vn -0.598551 0.749847 0.281897 +vn -0.579670 0.749847 0.318924 +vn -0.558501 0.749847 0.354692 +vn -0.535128 0.749847 0.389061 +vn -0.509642 0.749848 0.421893 +vn -0.482145 0.749847 0.453062 +vn -0.452746 0.749847 0.482443 +vn -0.421560 0.749847 0.509919 +vn -0.388709 0.749847 0.535382 +vn -0.354325 0.749847 0.558733 +vn -0.318543 0.749847 0.579879 +vn -0.281504 0.749848 0.598735 +vn -0.243354 0.749847 0.615230 +vn -0.204243 0.749847 0.629297 +vn -0.164326 0.749847 0.640880 +vn -0.123760 0.749848 0.649932 +vn -0.082706 0.749848 0.656421 +vn -0.041326 0.749847 0.660319 +vn 0.000217 0.749847 0.661612 +vn 0.041760 0.749847 0.660292 +vn 0.083137 0.749847 0.656367 +vn 0.124187 0.749848 0.649851 +vn 0.164747 0.749847 0.640771 +vn 0.204656 0.749847 0.629163 +vn 0.243757 0.749847 0.615070 +vn 0.281898 0.749848 0.598550 +vn 0.318925 0.749848 0.579668 +vn 0.354693 0.749847 0.558500 +vn 0.389061 0.749847 0.535126 +vn 0.421895 0.749847 0.509641 +vn 0.453063 0.749848 0.482143 +vn 0.482443 0.749847 0.452746 +vn 0.509919 0.749847 0.421558 +vn 0.535383 0.749847 0.388708 +vn 0.558734 0.749847 0.354325 +vn 0.579879 0.749847 0.318544 +vn 0.598737 0.749847 0.281503 +vn 0.615231 0.749847 0.243354 +vn 0.629297 0.749847 0.204242 +vn 0.640880 0.749847 0.164325 +vn 0.649933 0.749847 0.123760 +vn 0.656421 0.749847 0.082706 +vn 0.660319 0.749847 0.041326 +vn 0.661611 0.749847 -0.000221 +vn 0.636472 0.770248 -0.040265 +vn 0.632688 0.770248 -0.080148 +vn 0.626407 0.770248 -0.119717 +vn 0.617653 0.770249 -0.158813 +vn 0.606463 0.770248 -0.197283 +vn 0.592878 0.770248 -0.234973 +vn 0.576955 0.770248 -0.271737 +vn 0.558754 0.770249 -0.307427 +vn 0.538348 0.770248 -0.341906 +vn 0.515817 0.770248 -0.375034 +vn 0.491250 0.770249 -0.406682 +vn 0.464745 0.770249 -0.436725 +vn 0.436405 0.770249 -0.465045 +vn 0.406344 0.770249 -0.491529 +vn 0.374679 0.770249 -0.516075 +vn 0.341535 0.770248 -0.538583 +vn 0.307043 0.770248 -0.558965 +vn 0.271340 0.770249 -0.577141 +vn 0.234566 0.770248 -0.593040 +vn 0.196865 0.770248 -0.606599 +vn 0.158388 0.770248 -0.617763 +vn 0.119286 0.770249 -0.626489 +vn 0.079713 0.770249 -0.632743 +vn 0.039826 0.770248 -0.636500 +vn -0.000219 0.770247 -0.637746 +vn -0.040263 0.770247 -0.636473 +vn -0.080148 0.770249 -0.632687 +vn -0.119716 0.770248 -0.626408 +vn -0.158813 0.770248 -0.617654 +vn -0.197283 0.770249 -0.606462 +vn -0.234973 0.770248 -0.592879 +vn -0.271737 0.770249 -0.576954 +vn -0.307428 0.770248 -0.558754 +vn -0.341905 0.770249 -0.538347 +vn -0.375034 0.770249 -0.515817 +vn -0.406682 0.770248 -0.491251 +vn -0.436726 0.770248 -0.464745 +vn -0.465045 0.770248 -0.436407 +vn -0.491530 0.770248 -0.406345 +vn -0.516074 0.770249 -0.374679 +vn -0.538582 0.770248 -0.341535 +vn -0.558965 0.770248 -0.307045 +vn -0.577142 0.770248 -0.271340 +vn -0.593040 0.770248 -0.234566 +vn -0.606598 0.770248 -0.196865 +vn -0.617762 0.770248 -0.158389 +vn -0.626489 0.770248 -0.119287 +vn -0.632742 0.770249 -0.079714 +vn -0.636499 0.770249 -0.039826 +vn -0.637744 0.770248 0.000218 +vn -0.636472 0.770248 0.040262 +vn -0.632688 0.770249 0.080147 +vn -0.626406 0.770249 0.119717 +vn -0.617653 0.770249 0.158813 +vn -0.606462 0.770249 0.197282 +vn -0.592879 0.770248 0.234974 +vn -0.576955 0.770248 0.271737 +vn -0.558754 0.770249 0.307427 +vn -0.538348 0.770248 0.341906 +vn -0.515816 0.770249 0.375034 +vn -0.491251 0.770248 0.406682 +vn -0.464745 0.770249 0.436725 +vn -0.436406 0.770248 0.465045 +vn -0.406345 0.770248 0.491530 +vn -0.374679 0.770249 0.516074 +vn -0.341535 0.770248 0.538583 +vn -0.307043 0.770248 0.558966 +vn -0.271340 0.770248 0.577142 +vn -0.234565 0.770248 0.593040 +vn -0.196865 0.770248 0.606598 +vn -0.158388 0.770248 0.617763 +vn -0.119286 0.770248 0.626489 +vn -0.079714 0.770249 0.632741 +vn -0.039825 0.770249 0.636499 +vn 0.000219 0.770247 0.637745 +vn 0.040263 0.770249 0.636472 +vn 0.080148 0.770249 0.632687 +vn 0.119716 0.770248 0.626408 +vn 0.158812 0.770248 0.617654 +vn 0.197282 0.770249 0.606462 +vn 0.234973 0.770248 0.592879 +vn 0.271737 0.770248 0.576955 +vn 0.307427 0.770249 0.558754 +vn 0.341906 0.770248 0.538348 +vn 0.375034 0.770248 0.515817 +vn 0.406682 0.770248 0.491251 +vn 0.436726 0.770249 0.464745 +vn 0.465045 0.770248 0.436407 +vn 0.491529 0.770249 0.406344 +vn 0.516075 0.770249 0.374679 +vn 0.538583 0.770248 0.341536 +vn 0.558965 0.770248 0.307044 +vn 0.577141 0.770249 0.271339 +vn 0.593039 0.770249 0.234566 +vn 0.606598 0.770249 0.196864 +vn 0.617762 0.770249 0.158389 +vn 0.626488 0.770249 0.119287 +vn 0.632742 0.770249 0.079713 +vn 0.636499 0.770248 0.039826 +vn 0.637744 0.770248 -0.000222 +vn 0.612022 0.789892 -0.038728 +vn 0.608383 0.789892 -0.077079 +vn 0.602342 0.789892 -0.115127 +vn 0.593924 0.789893 -0.152721 +vn 0.583163 0.789892 -0.189713 +vn 0.570101 0.789892 -0.225956 +vn 0.554788 0.789892 -0.261307 +vn 0.537285 0.789893 -0.295626 +vn 0.517663 0.789892 -0.328779 +vn 0.495997 0.789892 -0.360634 +vn 0.472374 0.789892 -0.391066 +vn 0.446886 0.789892 -0.419956 +vn 0.419635 0.789892 -0.447187 +vn 0.390728 0.789892 -0.472654 +vn 0.360278 0.789893 -0.496255 +vn 0.328408 0.789892 -0.517898 +vn 0.295240 0.789892 -0.537497 +vn 0.260908 0.789893 -0.554974 +vn 0.225546 0.789893 -0.570262 +vn 0.189294 0.789893 -0.583299 +vn 0.152296 0.789893 -0.594033 +vn 0.114695 0.789893 -0.602424 +vn 0.076642 0.789892 -0.608437 +vn 0.038287 0.789892 -0.612049 +vn -0.000220 0.789892 -0.613246 +vn -0.038726 0.789892 -0.612021 +vn -0.077078 0.789893 -0.608382 +vn -0.115127 0.789892 -0.602342 +vn -0.152721 0.789892 -0.593925 +vn -0.189713 0.789893 -0.583162 +vn -0.225956 0.789893 -0.570100 +vn -0.261307 0.789892 -0.554787 +vn -0.295626 0.789892 -0.537285 +vn -0.328780 0.789893 -0.517661 +vn -0.360635 0.789893 -0.495996 +vn -0.391067 0.789892 -0.472374 +vn -0.419956 0.789892 -0.446886 +vn -0.447188 0.789892 -0.419635 +vn -0.472654 0.789893 -0.390727 +vn -0.496255 0.789892 -0.360278 +vn -0.517898 0.789893 -0.328407 +vn -0.537498 0.789892 -0.295239 +vn -0.554974 0.789893 -0.260908 +vn -0.570262 0.789893 -0.225546 +vn -0.583299 0.789893 -0.189293 +vn -0.594033 0.789893 -0.152294 +vn -0.602425 0.789892 -0.114695 +vn -0.608437 0.789893 -0.076641 +vn -0.612049 0.789892 -0.038286 +vn -0.613246 0.789892 0.000219 +vn -0.612022 0.789892 0.038726 +vn -0.608382 0.789892 0.077078 +vn -0.602342 0.789892 0.115127 +vn -0.593925 0.789892 0.152721 +vn -0.583163 0.789893 0.189713 +vn -0.570100 0.789893 0.225955 +vn -0.554787 0.789893 0.261306 +vn -0.537285 0.789892 0.295626 +vn -0.517662 0.789893 0.328779 +vn -0.495997 0.789893 0.360634 +vn -0.472374 0.789893 0.391066 +vn -0.446886 0.789892 0.419956 +vn -0.419635 0.789892 0.447187 +vn -0.390728 0.789892 0.472654 +vn -0.360279 0.789893 0.496255 +vn -0.328408 0.789893 0.517898 +vn -0.295240 0.789892 0.537497 +vn -0.260908 0.789893 0.554974 +vn -0.225547 0.789893 0.570261 +vn -0.189294 0.789893 0.583299 +vn -0.152295 0.789892 0.594034 +vn -0.114695 0.789892 0.602424 +vn -0.076642 0.789893 0.608437 +vn -0.038286 0.789893 0.612049 +vn 0.000220 0.789892 0.613246 +vn 0.038726 0.789893 0.612021 +vn 0.077078 0.789893 0.608382 +vn 0.115127 0.789893 0.602342 +vn 0.152721 0.789893 0.593924 +vn 0.189713 0.789892 0.583163 +vn 0.225955 0.789893 0.570099 +vn 0.261307 0.789893 0.554786 +vn 0.295626 0.789893 0.537284 +vn 0.328779 0.789892 0.517663 +vn 0.360635 0.789892 0.495996 +vn 0.391067 0.789893 0.472373 +vn 0.419955 0.789893 0.446886 +vn 0.447187 0.789892 0.419635 +vn 0.472653 0.789893 0.390727 +vn 0.496255 0.789893 0.360279 +vn 0.517898 0.789893 0.328407 +vn 0.537497 0.789893 0.295239 +vn 0.554975 0.789893 0.260908 +vn 0.570262 0.789893 0.225546 +vn 0.583299 0.789893 0.189292 +vn 0.594034 0.789892 0.152295 +vn 0.602424 0.789893 0.114694 +vn 0.608437 0.789893 0.076642 +vn 0.612049 0.789893 0.038286 +vn 0.613245 0.789892 -0.000223 +vn 0.586968 0.808757 -0.037152 +vn 0.583477 0.808758 -0.073932 +vn 0.577684 0.808757 -0.110423 +vn 0.569610 0.808757 -0.146478 +vn 0.559288 0.808758 -0.181955 +vn 0.546759 0.808758 -0.216714 +vn 0.532073 0.808758 -0.250618 +vn 0.515287 0.808758 -0.283532 +vn 0.496467 0.808757 -0.315329 +vn 0.475688 0.808758 -0.345879 +vn 0.453032 0.808758 -0.375065 +vn 0.428587 0.808757 -0.402772 +vn 0.402450 0.808758 -0.428887 +vn 0.374727 0.808758 -0.453311 +vn 0.345524 0.808757 -0.475947 +vn 0.314957 0.808758 -0.496703 +vn 0.283147 0.808758 -0.515499 +vn 0.250220 0.808758 -0.532260 +vn 0.216305 0.808758 -0.546922 +vn 0.181537 0.808757 -0.559425 +vn 0.146052 0.808758 -0.569719 +vn 0.109991 0.808757 -0.577766 +vn 0.073495 0.808757 -0.583532 +vn 0.036711 0.808757 -0.586996 +vn -0.000220 0.808757 -0.588143 +vn -0.037149 0.808758 -0.586967 +vn -0.073932 0.808758 -0.583476 +vn -0.110423 0.808758 -0.577683 +vn -0.146478 0.808757 -0.569611 +vn -0.181955 0.808757 -0.559289 +vn -0.216714 0.808757 -0.546760 +vn -0.250618 0.808758 -0.532073 +vn -0.283532 0.808758 -0.515287 +vn -0.315328 0.808758 -0.496467 +vn -0.345879 0.808758 -0.475688 +vn -0.375065 0.808758 -0.453031 +vn -0.402771 0.808758 -0.428587 +vn -0.428888 0.808758 -0.402450 +vn -0.453312 0.808758 -0.374726 +vn -0.475947 0.808757 -0.345523 +vn -0.496703 0.808758 -0.314956 +vn -0.515499 0.808758 -0.283146 +vn -0.532261 0.808757 -0.250220 +vn -0.546922 0.808758 -0.216305 +vn -0.559424 0.808758 -0.181536 +vn -0.569719 0.808757 -0.146053 +vn -0.577766 0.808757 -0.109991 +vn -0.583532 0.808758 -0.073495 +vn -0.586995 0.808758 -0.036710 +vn -0.588142 0.808758 0.000220 +vn -0.586968 0.808758 0.037150 +vn -0.583477 0.808758 0.073931 +vn -0.577684 0.808757 0.110422 +vn -0.569610 0.808758 0.146478 +vn -0.559288 0.808758 0.181955 +vn -0.546759 0.808758 0.216714 +vn -0.532073 0.808757 0.250618 +vn -0.515287 0.808757 0.283533 +vn -0.496467 0.808758 0.315328 +vn -0.475688 0.808758 0.345879 +vn -0.453032 0.808758 0.375065 +vn -0.428587 0.808758 0.402772 +vn -0.402451 0.808758 0.428887 +vn -0.374726 0.808758 0.453311 +vn -0.345523 0.808758 0.475946 +vn -0.314956 0.808757 0.496703 +vn -0.283146 0.808758 0.515499 +vn -0.250219 0.808758 0.532261 +vn -0.216305 0.808758 0.546921 +vn -0.181536 0.808758 0.559424 +vn -0.146052 0.808757 0.569719 +vn -0.109991 0.808758 0.577765 +vn -0.073496 0.808758 0.583532 +vn -0.036710 0.808758 0.586995 +vn 0.000220 0.808757 0.588143 +vn 0.037149 0.808757 0.586968 +vn 0.073931 0.808757 0.583478 +vn 0.110422 0.808758 0.577682 +vn 0.146478 0.808758 0.569609 +vn 0.181955 0.808757 0.559289 +vn 0.216714 0.808757 0.546760 +vn 0.250618 0.808758 0.532073 +vn 0.283532 0.808757 0.515287 +vn 0.315328 0.808758 0.496466 +vn 0.345880 0.808758 0.475686 +vn 0.375065 0.808758 0.453030 +vn 0.402771 0.808758 0.428587 +vn 0.428888 0.808758 0.402449 +vn 0.453311 0.808758 0.374726 +vn 0.475946 0.808758 0.345523 +vn 0.496703 0.808758 0.314956 +vn 0.515499 0.808757 0.283147 +vn 0.532260 0.808758 0.250220 +vn 0.546922 0.808757 0.216305 +vn 0.559424 0.808757 0.181537 +vn 0.569718 0.808758 0.146052 +vn 0.577766 0.808758 0.109990 +vn 0.583531 0.808758 0.073496 +vn 0.586995 0.808757 0.036710 +vn 0.588142 0.808758 -0.000222 +vn 0.561336 0.826825 -0.035539 +vn 0.557997 0.826825 -0.070712 +vn 0.552456 0.826825 -0.105610 +vn 0.544734 0.826825 -0.140091 +vn 0.534863 0.826825 -0.174019 +vn 0.522881 0.826825 -0.207260 +vn 0.508835 0.826825 -0.239683 +vn 0.492782 0.826825 -0.271159 +vn 0.474783 0.826824 -0.301567 +vn 0.454910 0.826825 -0.330783 +vn 0.433243 0.826825 -0.358695 +vn 0.409865 0.826825 -0.385190 +vn 0.384870 0.826825 -0.410166 +vn 0.358357 0.826825 -0.433522 +vn 0.330427 0.826825 -0.455169 +vn 0.301195 0.826825 -0.475018 +vn 0.270775 0.826824 -0.492993 +vn 0.239285 0.826825 -0.509022 +vn 0.206851 0.826825 -0.523042 +vn 0.173601 0.826825 -0.534999 +vn 0.139666 0.826825 -0.544844 +vn 0.105179 0.826825 -0.552538 +vn 0.070277 0.826824 -0.558053 +vn 0.035099 0.826824 -0.561365 +vn -0.000220 0.826824 -0.562461 +vn -0.035535 0.826825 -0.561336 +vn -0.070712 0.826825 -0.557997 +vn -0.105609 0.826824 -0.552456 +vn -0.140090 0.826825 -0.544734 +vn -0.174018 0.826825 -0.534862 +vn -0.207259 0.826825 -0.522881 +vn -0.239682 0.826825 -0.508835 +vn -0.271159 0.826824 -0.492782 +vn -0.301566 0.826825 -0.474783 +vn -0.330783 0.826825 -0.454910 +vn -0.358694 0.826825 -0.433243 +vn -0.385189 0.826824 -0.409866 +vn -0.410165 0.826825 -0.384870 +vn -0.433522 0.826824 -0.358357 +vn -0.455168 0.826825 -0.330428 +vn -0.475017 0.826825 -0.301197 +vn -0.492992 0.826825 -0.270775 +vn -0.509022 0.826825 -0.239285 +vn -0.523042 0.826825 -0.206852 +vn -0.534999 0.826825 -0.173602 +vn -0.544843 0.826825 -0.139666 +vn -0.552538 0.826825 -0.105179 +vn -0.558052 0.826825 -0.070276 +vn -0.561363 0.826825 -0.035098 +vn -0.562459 0.826825 0.000219 +vn -0.561336 0.826825 0.035535 +vn -0.557997 0.826825 0.070711 +vn -0.552456 0.826825 0.105610 +vn -0.544734 0.826825 0.140091 +vn -0.534863 0.826825 0.174018 +vn -0.522881 0.826825 0.207260 +vn -0.508835 0.826825 0.239682 +vn -0.492781 0.826825 0.271160 +vn -0.474782 0.826825 0.301566 +vn -0.454910 0.826825 0.330783 +vn -0.433243 0.826825 0.358694 +vn -0.409865 0.826825 0.385190 +vn -0.384870 0.826825 0.410165 +vn -0.358356 0.826825 0.433522 +vn -0.330428 0.826825 0.455168 +vn -0.301196 0.826824 0.475019 +vn -0.270775 0.826825 0.492993 +vn -0.239285 0.826825 0.509022 +vn -0.206852 0.826825 0.523042 +vn -0.173601 0.826824 0.534999 +vn -0.139666 0.826825 0.544843 +vn -0.105179 0.826825 0.552537 +vn -0.070278 0.826824 0.558052 +vn -0.035099 0.826825 0.561363 +vn 0.000219 0.826824 0.562461 +vn 0.035536 0.826825 0.561336 +vn 0.070712 0.826826 0.557996 +vn 0.105610 0.826825 0.552455 +vn 0.140091 0.826824 0.544735 +vn 0.174018 0.826825 0.534863 +vn 0.207259 0.826825 0.522881 +vn 0.239682 0.826825 0.508835 +vn 0.271159 0.826824 0.492782 +vn 0.301566 0.826825 0.474783 +vn 0.330782 0.826825 0.454910 +vn 0.358694 0.826825 0.433243 +vn 0.385190 0.826824 0.409867 +vn 0.410165 0.826825 0.384871 +vn 0.433522 0.826825 0.358357 +vn 0.455168 0.826825 0.330428 +vn 0.475017 0.826825 0.301196 +vn 0.492992 0.826825 0.270776 +vn 0.509022 0.826825 0.239285 +vn 0.523042 0.826825 0.206852 +vn 0.534998 0.826825 0.173602 +vn 0.544843 0.826825 0.139666 +vn 0.552538 0.826825 0.105179 +vn 0.558051 0.826825 0.070277 +vn 0.561363 0.826825 0.035098 +vn 0.562459 0.826825 -0.000221 +vn 0.535151 0.844077 -0.033888 +vn 0.531967 0.844077 -0.067421 +vn 0.526683 0.844077 -0.100691 +vn 0.519322 0.844077 -0.133564 +vn 0.509910 0.844077 -0.165908 +vn 0.498487 0.844077 -0.197598 +vn 0.485096 0.844077 -0.228509 +vn 0.469790 0.844077 -0.258518 +vn 0.452631 0.844077 -0.287506 +vn 0.433685 0.844077 -0.315358 +vn 0.413028 0.844077 -0.341968 +vn 0.390740 0.844077 -0.367228 +vn 0.366911 0.844077 -0.391038 +vn 0.341634 0.844077 -0.413304 +vn 0.315007 0.844077 -0.433940 +vn 0.287139 0.844077 -0.452863 +vn 0.258137 0.844077 -0.469999 +vn 0.228115 0.844077 -0.485281 +vn 0.197194 0.844077 -0.498646 +vn 0.165495 0.844077 -0.510044 +vn 0.133143 0.844077 -0.519430 +vn 0.100265 0.844077 -0.526764 +vn 0.066991 0.844077 -0.532021 +vn 0.033453 0.844078 -0.535177 +vn -0.000217 0.844077 -0.536222 +vn -0.033887 0.844077 -0.535150 +vn -0.067422 0.844077 -0.531967 +vn -0.100691 0.844077 -0.526683 +vn -0.133563 0.844077 -0.519321 +vn -0.165909 0.844077 -0.509910 +vn -0.197599 0.844077 -0.498486 +vn -0.228509 0.844077 -0.485095 +vn -0.258518 0.844077 -0.469790 +vn -0.287506 0.844077 -0.452630 +vn -0.315359 0.844078 -0.433684 +vn -0.341968 0.844077 -0.413028 +vn -0.367228 0.844077 -0.390740 +vn -0.391038 0.844077 -0.366910 +vn -0.413305 0.844077 -0.341634 +vn -0.433941 0.844077 -0.315007 +vn -0.452864 0.844077 -0.287137 +vn -0.470000 0.844077 -0.258136 +vn -0.485281 0.844077 -0.228115 +vn -0.498647 0.844077 -0.197195 +vn -0.510045 0.844077 -0.165495 +vn -0.519430 0.844077 -0.133142 +vn -0.526764 0.844077 -0.100264 +vn -0.532021 0.844077 -0.066990 +vn -0.535178 0.844077 -0.033454 +vn -0.536222 0.844077 0.000218 +vn -0.535151 0.844077 0.033886 +vn -0.531967 0.844077 0.067421 +vn -0.526684 0.844077 0.100691 +vn -0.519322 0.844077 0.133563 +vn -0.509910 0.844077 0.165908 +vn -0.498487 0.844077 0.197598 +vn -0.485095 0.844077 0.228508 +vn -0.469790 0.844077 0.258518 +vn -0.452631 0.844077 0.287506 +vn -0.433685 0.844077 0.315359 +vn -0.413028 0.844077 0.341968 +vn -0.390740 0.844077 0.367228 +vn -0.366910 0.844077 0.391037 +vn -0.341633 0.844077 0.413304 +vn -0.315007 0.844077 0.433940 +vn -0.287138 0.844077 0.452864 +vn -0.258136 0.844077 0.470000 +vn -0.228115 0.844077 0.485280 +vn -0.197195 0.844077 0.498646 +vn -0.165495 0.844077 0.510044 +vn -0.133143 0.844077 0.519429 +vn -0.100265 0.844077 0.526764 +vn -0.066991 0.844077 0.532020 +vn -0.033453 0.844078 0.535176 +vn 0.000218 0.844077 0.536222 +vn 0.033887 0.844077 0.535150 +vn 0.067422 0.844077 0.531966 +vn 0.100691 0.844077 0.526683 +vn 0.133563 0.844078 0.519321 +vn 0.165909 0.844078 0.509909 +vn 0.197599 0.844077 0.498486 +vn 0.228509 0.844078 0.485095 +vn 0.258518 0.844077 0.469790 +vn 0.287506 0.844077 0.452630 +vn 0.315360 0.844078 0.433683 +vn 0.341969 0.844077 0.413028 +vn 0.367228 0.844077 0.390740 +vn 0.391038 0.844077 0.366910 +vn 0.413305 0.844077 0.341634 +vn 0.433941 0.844077 0.315007 +vn 0.452864 0.844077 0.287138 +vn 0.470000 0.844077 0.258137 +vn 0.485281 0.844077 0.228116 +vn 0.498647 0.844077 0.197195 +vn 0.510045 0.844077 0.165494 +vn 0.519429 0.844077 0.133142 +vn 0.526765 0.844077 0.100264 +vn 0.532021 0.844077 0.066990 +vn 0.535177 0.844077 0.033454 +vn 0.536222 0.844077 -0.000220 +vn 0.508437 0.860497 -0.032205 +vn 0.505412 0.860497 -0.064064 +vn 0.500391 0.860498 -0.095673 +vn 0.493397 0.860497 -0.126904 +vn 0.484454 0.860497 -0.157635 +vn 0.473601 0.860497 -0.187743 +vn 0.460878 0.860497 -0.217110 +vn 0.446336 0.860497 -0.245620 +vn 0.430033 0.860497 -0.273162 +vn 0.412032 0.860497 -0.299624 +vn 0.392405 0.860497 -0.324904 +vn 0.371230 0.860497 -0.348904 +vn 0.348590 0.860497 -0.371524 +vn 0.324573 0.860497 -0.392680 +vn 0.299276 0.860497 -0.412285 +vn 0.272798 0.860497 -0.430263 +vn 0.245244 0.860497 -0.446543 +vn 0.216721 0.860497 -0.461062 +vn 0.187343 0.860497 -0.473760 +vn 0.157227 0.860497 -0.484587 +vn 0.126489 0.860497 -0.493504 +vn 0.095252 0.860497 -0.500471 +vn 0.063639 0.860497 -0.505465 +vn 0.031775 0.860497 -0.508464 +vn -0.000214 0.860497 -0.509456 +vn -0.032204 0.860497 -0.508438 +vn -0.064065 0.860496 -0.505413 +vn -0.095673 0.860497 -0.500392 +vn -0.126904 0.860497 -0.493397 +vn -0.157635 0.860497 -0.484455 +vn -0.187743 0.860497 -0.473600 +vn -0.217110 0.860497 -0.460878 +vn -0.245620 0.860496 -0.446337 +vn -0.273161 0.860497 -0.430033 +vn -0.299624 0.860497 -0.412032 +vn -0.324905 0.860497 -0.392406 +vn -0.348903 0.860497 -0.371231 +vn -0.371524 0.860497 -0.348590 +vn -0.392679 0.860497 -0.324575 +vn -0.412284 0.860497 -0.299277 +vn -0.430263 0.860497 -0.272797 +vn -0.446543 0.860497 -0.245244 +vn -0.461061 0.860497 -0.216722 +vn -0.473759 0.860497 -0.187344 +vn -0.484587 0.860497 -0.157225 +vn -0.493504 0.860497 -0.126488 +vn -0.500472 0.860497 -0.095250 +vn -0.505465 0.860497 -0.063639 +vn -0.508464 0.860497 -0.031775 +vn -0.509455 0.860497 0.000215 +vn -0.508437 0.860497 0.032202 +vn -0.505412 0.860497 0.064064 +vn -0.500392 0.860497 0.095673 +vn -0.493397 0.860496 0.126906 +vn -0.484455 0.860497 0.157635 +vn -0.473600 0.860497 0.187743 +vn -0.460878 0.860497 0.217110 +vn -0.446336 0.860497 0.245620 +vn -0.430032 0.860497 0.273162 +vn -0.412032 0.860497 0.299625 +vn -0.392405 0.860497 0.324904 +vn -0.371230 0.860497 0.348903 +vn -0.348590 0.860497 0.371524 +vn -0.324574 0.860497 0.392679 +vn -0.299277 0.860497 0.412285 +vn -0.272798 0.860497 0.430262 +vn -0.245244 0.860497 0.446543 +vn -0.216721 0.860497 0.461060 +vn -0.187343 0.860497 0.473760 +vn -0.157226 0.860497 0.484587 +vn -0.126488 0.860497 0.493503 +vn -0.095252 0.860497 0.500472 +vn -0.063638 0.860497 0.505466 +vn -0.031775 0.860497 0.508463 +vn 0.000214 0.860497 0.509456 +vn 0.032203 0.860497 0.508436 +vn 0.064065 0.860497 0.505411 +vn 0.095673 0.860497 0.500392 +vn 0.126904 0.860497 0.493396 +vn 0.157635 0.860497 0.484455 +vn 0.187743 0.860497 0.473602 +vn 0.217110 0.860496 0.460879 +vn 0.245620 0.860496 0.446338 +vn 0.273161 0.860497 0.430032 +vn 0.299624 0.860497 0.412031 +vn 0.324904 0.860496 0.392407 +vn 0.348903 0.860497 0.371231 +vn 0.371524 0.860497 0.348590 +vn 0.392679 0.860496 0.324575 +vn 0.412285 0.860497 0.299276 +vn 0.430263 0.860497 0.272798 +vn 0.446543 0.860497 0.245244 +vn 0.461061 0.860497 0.216721 +vn 0.473759 0.860497 0.187342 +vn 0.484587 0.860497 0.157226 +vn 0.493503 0.860497 0.126488 +vn 0.500472 0.860497 0.095251 +vn 0.505465 0.860497 0.063639 +vn 0.508464 0.860497 0.031775 +vn 0.509456 0.860497 -0.000217 +vn 0.481221 0.876069 -0.030489 +vn 0.478358 0.876069 -0.060644 +vn 0.473605 0.876069 -0.090559 +vn 0.466985 0.876069 -0.120118 +vn 0.458521 0.876069 -0.149204 +vn 0.448248 0.876069 -0.177701 +vn 0.436206 0.876069 -0.205496 +vn 0.422441 0.876069 -0.232480 +vn 0.407010 0.876069 -0.258546 +vn 0.389973 0.876069 -0.283592 +vn 0.371396 0.876069 -0.307520 +vn 0.351354 0.876069 -0.330233 +vn 0.329926 0.876069 -0.351642 +vn 0.307194 0.876069 -0.371664 +vn 0.283251 0.876069 -0.390221 +vn 0.258190 0.876068 -0.407237 +vn 0.232110 0.876069 -0.422644 +vn 0.205114 0.876069 -0.436385 +vn 0.177308 0.876069 -0.448403 +vn 0.148803 0.876069 -0.458651 +vn 0.119710 0.876069 -0.467090 +vn 0.090145 0.876069 -0.473685 +vn 0.060224 0.876069 -0.478410 +vn 0.030067 0.876069 -0.481247 +vn -0.000211 0.876069 -0.482185 +vn -0.030487 0.876069 -0.481220 +vn -0.060643 0.876069 -0.478356 +vn -0.090560 0.876069 -0.473606 +vn -0.120119 0.876069 -0.466985 +vn -0.149204 0.876069 -0.458521 +vn -0.177701 0.876069 -0.448247 +vn -0.205496 0.876068 -0.436206 +vn -0.232480 0.876069 -0.422441 +vn -0.258547 0.876069 -0.407010 +vn -0.283593 0.876069 -0.389972 +vn -0.307520 0.876069 -0.371396 +vn -0.330233 0.876069 -0.351354 +vn -0.351643 0.876069 -0.329925 +vn -0.371665 0.876069 -0.307195 +vn -0.390221 0.876069 -0.283251 +vn -0.407236 0.876069 -0.258189 +vn -0.422645 0.876068 -0.232111 +vn -0.436385 0.876069 -0.205114 +vn -0.448403 0.876069 -0.177308 +vn -0.458651 0.876069 -0.148804 +vn -0.467090 0.876069 -0.119709 +vn -0.473685 0.876069 -0.090144 +vn -0.478410 0.876069 -0.060225 +vn -0.481248 0.876069 -0.030067 +vn -0.482186 0.876069 0.000210 +vn -0.481221 0.876069 0.030487 +vn -0.478357 0.876069 0.060643 +vn -0.473606 0.876069 0.090559 +vn -0.466985 0.876069 0.120119 +vn -0.458521 0.876069 0.149205 +vn -0.448247 0.876069 0.177702 +vn -0.436205 0.876069 0.205496 +vn -0.422441 0.876069 0.232480 +vn -0.407010 0.876069 0.258546 +vn -0.389973 0.876069 0.283593 +vn -0.371396 0.876069 0.307520 +vn -0.351354 0.876069 0.330233 +vn -0.329926 0.876069 0.351643 +vn -0.307195 0.876069 0.371664 +vn -0.283251 0.876069 0.390220 +vn -0.258190 0.876069 0.407235 +vn -0.232110 0.876069 0.422644 +vn -0.205114 0.876069 0.436384 +vn -0.177309 0.876069 0.448403 +vn -0.148803 0.876069 0.458652 +vn -0.119711 0.876069 0.467090 +vn -0.090145 0.876069 0.473684 +vn -0.060225 0.876069 0.478409 +vn -0.030067 0.876070 0.481246 +vn 0.000211 0.876069 0.482185 +vn 0.030487 0.876070 0.481220 +vn 0.060643 0.876069 0.478358 +vn 0.090560 0.876069 0.473606 +vn 0.120119 0.876069 0.466984 +vn 0.149204 0.876068 0.458522 +vn 0.177701 0.876069 0.448247 +vn 0.205497 0.876069 0.436204 +vn 0.232480 0.876069 0.422441 +vn 0.258547 0.876069 0.407009 +vn 0.283593 0.876069 0.389972 +vn 0.307520 0.876069 0.371397 +vn 0.330233 0.876069 0.351354 +vn 0.351643 0.876069 0.329924 +vn 0.371666 0.876069 0.307193 +vn 0.390221 0.876069 0.283250 +vn 0.407236 0.876069 0.258189 +vn 0.422645 0.876069 0.232108 +vn 0.436385 0.876069 0.205114 +vn 0.448403 0.876069 0.177307 +vn 0.458651 0.876069 0.148804 +vn 0.467090 0.876069 0.119709 +vn 0.473685 0.876069 0.090147 +vn 0.478410 0.876069 0.060225 +vn 0.481248 0.876069 0.030067 +vn 0.482186 0.876069 -0.000212 +vn 0.453532 0.890776 -0.028742 +vn 0.450833 0.890776 -0.057162 +vn 0.446354 0.890776 -0.085356 +vn 0.440114 0.890776 -0.113216 +vn 0.432136 0.890776 -0.140628 +vn 0.422453 0.890776 -0.167485 +vn 0.411103 0.890776 -0.193679 +vn 0.398131 0.890776 -0.219111 +vn 0.383587 0.890776 -0.243677 +vn 0.367530 0.890776 -0.267282 +vn 0.350022 0.890776 -0.289831 +vn 0.331133 0.890776 -0.311239 +vn 0.310937 0.890776 -0.331415 +vn 0.289513 0.890776 -0.350286 +vn 0.266947 0.890776 -0.367774 +vn 0.243327 0.890776 -0.383810 +vn 0.218748 0.890776 -0.398330 +vn 0.193305 0.890776 -0.411280 +vn 0.167100 0.890776 -0.422606 +vn 0.140234 0.890776 -0.432264 +vn 0.112815 0.890776 -0.440217 +vn 0.084951 0.890776 -0.446432 +vn 0.056752 0.890776 -0.450885 +vn 0.028329 0.890776 -0.453560 +vn -0.000207 0.890775 -0.454444 +vn -0.028740 0.890775 -0.453534 +vn -0.057161 0.890775 -0.450835 +vn -0.085357 0.890776 -0.446355 +vn -0.113215 0.890776 -0.440115 +vn -0.140626 0.890776 -0.432137 +vn -0.167483 0.890775 -0.422455 +vn -0.193678 0.890775 -0.411106 +vn -0.219110 0.890777 -0.398131 +vn -0.243676 0.890776 -0.383588 +vn -0.267281 0.890776 -0.367532 +vn -0.289831 0.890776 -0.350022 +vn -0.311237 0.890776 -0.331133 +vn -0.331415 0.890776 -0.310937 +vn -0.350285 0.890776 -0.289514 +vn -0.367773 0.890776 -0.266947 +vn -0.383809 0.890776 -0.243328 +vn -0.398330 0.890776 -0.218748 +vn -0.411279 0.890776 -0.193305 +vn -0.422605 0.890776 -0.167100 +vn -0.432263 0.890776 -0.140235 +vn -0.440216 0.890776 -0.112816 +vn -0.446431 0.890776 -0.084952 +vn -0.450884 0.890776 -0.056753 +vn -0.453558 0.890777 -0.028329 +vn -0.454442 0.890776 0.000207 +vn -0.453532 0.890776 0.028741 +vn -0.450832 0.890776 0.057162 +vn -0.446354 0.890777 0.085356 +vn -0.440113 0.890776 0.113216 +vn -0.432136 0.890776 0.140628 +vn -0.422453 0.890776 0.167485 +vn -0.411103 0.890776 0.193679 +vn -0.398131 0.890776 0.219111 +vn -0.383587 0.890776 0.243677 +vn -0.367530 0.890776 0.267282 +vn -0.350022 0.890776 0.289831 +vn -0.331132 0.890776 0.311237 +vn -0.310936 0.890776 0.331416 +vn -0.289513 0.890776 0.350286 +vn -0.266947 0.890776 0.367774 +vn -0.243327 0.890776 0.383809 +vn -0.218748 0.890776 0.398331 +vn -0.193305 0.890776 0.411280 +vn -0.167100 0.890776 0.422607 +vn -0.140234 0.890776 0.432265 +vn -0.112815 0.890776 0.440216 +vn -0.084951 0.890776 0.446432 +vn -0.056752 0.890776 0.450886 +vn -0.028329 0.890776 0.453559 +vn 0.000206 0.890776 0.454443 +vn 0.028740 0.890776 0.453534 +vn 0.057161 0.890775 0.450835 +vn 0.085356 0.890776 0.446355 +vn 0.113215 0.890776 0.440114 +vn 0.140627 0.890776 0.432138 +vn 0.167483 0.890776 0.422455 +vn 0.193679 0.890776 0.411105 +vn 0.219110 0.890776 0.398132 +vn 0.243677 0.890777 0.383587 +vn 0.267281 0.890777 0.367530 +vn 0.289831 0.890776 0.350022 +vn 0.311237 0.890776 0.331132 +vn 0.331415 0.890776 0.310937 +vn 0.350285 0.890776 0.289513 +vn 0.367772 0.890776 0.266948 +vn 0.383808 0.890777 0.243327 +vn 0.398330 0.890776 0.218748 +vn 0.411279 0.890776 0.193306 +vn 0.422605 0.890776 0.167100 +vn 0.432264 0.890776 0.140235 +vn 0.440216 0.890776 0.112816 +vn 0.446431 0.890776 0.084952 +vn 0.450884 0.890776 0.056752 +vn 0.453558 0.890777 0.028329 +vn 0.454442 0.890776 -0.000208 +vn 0.425395 0.904606 -0.026966 +vn 0.422862 0.904606 -0.053622 +vn 0.418661 0.904606 -0.080067 +vn 0.412808 0.904606 -0.106198 +vn 0.405325 0.904606 -0.131908 +vn 0.396242 0.904606 -0.157099 +vn 0.385596 0.904606 -0.181669 +vn 0.373428 0.904606 -0.205523 +vn 0.359786 0.904606 -0.228566 +vn 0.344725 0.904606 -0.250706 +vn 0.328303 0.904606 -0.271856 +vn 0.310585 0.904606 -0.291934 +vn 0.291641 0.904606 -0.310858 +vn 0.271547 0.904606 -0.328558 +vn 0.250380 0.904606 -0.344961 +vn 0.228226 0.904606 -0.360002 +vn 0.205171 0.904606 -0.373620 +vn 0.181306 0.904606 -0.385767 +vn 0.156726 0.904606 -0.396391 +vn 0.131527 0.904606 -0.405449 +vn 0.105809 0.904606 -0.412908 +vn 0.079674 0.904606 -0.418736 +vn 0.053224 0.904606 -0.422913 +vn 0.026564 0.904606 -0.425420 +vn -0.000201 0.904606 -0.426248 +vn -0.026964 0.904606 -0.425395 +vn -0.053622 0.904606 -0.422862 +vn -0.080068 0.904607 -0.418659 +vn -0.106198 0.904606 -0.412807 +vn -0.131909 0.904606 -0.405325 +vn -0.157099 0.904606 -0.396243 +vn -0.181669 0.904606 -0.385595 +vn -0.205523 0.904606 -0.373427 +vn -0.228565 0.904605 -0.359787 +vn -0.250705 0.904606 -0.344725 +vn -0.271856 0.904606 -0.328302 +vn -0.291933 0.904606 -0.310585 +vn -0.310859 0.904606 -0.291641 +vn -0.328558 0.904606 -0.271547 +vn -0.344960 0.904606 -0.250380 +vn -0.360001 0.904606 -0.228226 +vn -0.373621 0.904606 -0.205170 +vn -0.385767 0.904606 -0.181307 +vn -0.396390 0.904606 -0.156728 +vn -0.405448 0.904606 -0.131528 +vn -0.412907 0.904606 -0.105809 +vn -0.418736 0.904606 -0.079675 +vn -0.422913 0.904606 -0.053224 +vn -0.425420 0.904606 -0.026563 +vn -0.426249 0.904606 0.000200 +vn -0.425395 0.904606 0.026964 +vn -0.422862 0.904606 0.053622 +vn -0.418661 0.904606 0.080067 +vn -0.412807 0.904606 0.106198 +vn -0.405325 0.904606 0.131908 +vn -0.396242 0.904606 0.157099 +vn -0.385596 0.904606 0.181669 +vn -0.373428 0.904606 0.205524 +vn -0.359786 0.904606 0.228566 +vn -0.344725 0.904606 0.250705 +vn -0.328303 0.904606 0.271855 +vn -0.310585 0.904606 0.291933 +vn -0.291641 0.904606 0.310859 +vn -0.271546 0.904606 0.328560 +vn -0.250380 0.904606 0.344962 +vn -0.228226 0.904606 0.360001 +vn -0.205171 0.904606 0.373622 +vn -0.181306 0.904606 0.385767 +vn -0.156726 0.904606 0.396390 +vn -0.131527 0.904606 0.405449 +vn -0.105809 0.904606 0.412907 +vn -0.079674 0.904606 0.418736 +vn -0.053224 0.904606 0.422912 +vn -0.026564 0.904606 0.425420 +vn 0.000201 0.904606 0.426249 +vn 0.026964 0.904606 0.425395 +vn 0.053622 0.904606 0.422863 +vn 0.080068 0.904606 0.418661 +vn 0.106198 0.904606 0.412808 +vn 0.131909 0.904606 0.405325 +vn 0.157099 0.904606 0.396243 +vn 0.181669 0.904606 0.385596 +vn 0.205523 0.904606 0.373429 +vn 0.228565 0.904606 0.359785 +vn 0.250705 0.904606 0.344726 +vn 0.271856 0.904606 0.328302 +vn 0.291934 0.904606 0.310585 +vn 0.310859 0.904606 0.291641 +vn 0.328558 0.904606 0.271545 +vn 0.344961 0.904606 0.250381 +vn 0.360001 0.904606 0.228225 +vn 0.373621 0.904606 0.205172 +vn 0.385767 0.904606 0.181307 +vn 0.396390 0.904606 0.156728 +vn 0.405448 0.904606 0.131528 +vn 0.412907 0.904606 0.105808 +vn 0.418736 0.904606 0.079675 +vn 0.422913 0.904606 0.053224 +vn 0.425420 0.904606 0.026563 +vn 0.426249 0.904606 -0.000202 +vn 0.396839 0.917543 -0.025162 +vn 0.394476 0.917543 -0.050028 +vn 0.390557 0.917543 -0.074699 +vn 0.385096 0.917543 -0.099076 +vn 0.378115 0.917543 -0.123059 +vn 0.369641 0.917543 -0.146560 +vn 0.359710 0.917543 -0.169480 +vn 0.348358 0.917543 -0.191732 +vn 0.335632 0.917543 -0.213228 +vn 0.321581 0.917543 -0.233881 +vn 0.306260 0.917543 -0.253612 +vn 0.289732 0.917543 -0.272341 +vn 0.272059 0.917543 -0.289997 +vn 0.253314 0.917543 -0.306507 +vn 0.233567 0.917543 -0.321809 +vn 0.212901 0.917543 -0.335839 +vn 0.191393 0.917544 -0.348544 +vn 0.169130 0.917543 -0.359874 +vn 0.146200 0.917543 -0.369784 +vn 0.122692 0.917543 -0.378235 +vn 0.098701 0.917543 -0.385192 +vn 0.074319 0.917544 -0.390628 +vn 0.049645 0.917543 -0.394526 +vn 0.024774 0.917543 -0.396864 +vn -0.000194 0.917543 -0.397637 +vn -0.025161 0.917543 -0.396840 +vn -0.050029 0.917543 -0.394476 +vn -0.074700 0.917543 -0.390557 +vn -0.099075 0.917543 -0.385097 +vn -0.123060 0.917543 -0.378115 +vn -0.146560 0.917543 -0.369641 +vn -0.169480 0.917543 -0.359711 +vn -0.191732 0.917542 -0.348360 +vn -0.213227 0.917543 -0.335633 +vn -0.233881 0.917543 -0.321581 +vn -0.253612 0.917543 -0.306260 +vn -0.272342 0.917543 -0.289732 +vn -0.289997 0.917543 -0.272059 +vn -0.306507 0.917544 -0.253312 +vn -0.321809 0.917543 -0.233567 +vn -0.335839 0.917543 -0.212900 +vn -0.348545 0.917543 -0.191394 +vn -0.359874 0.917543 -0.169130 +vn -0.369784 0.917543 -0.146199 +vn -0.378234 0.917543 -0.122691 +vn -0.385192 0.917543 -0.098701 +vn -0.390629 0.917543 -0.074320 +vn -0.394525 0.917543 -0.049645 +vn -0.396863 0.917543 -0.024776 +vn -0.397636 0.917543 0.000193 +vn -0.396839 0.917543 0.025161 +vn -0.394476 0.917543 0.050028 +vn -0.390556 0.917543 0.074699 +vn -0.385095 0.917543 0.099075 +vn -0.378115 0.917543 0.123060 +vn -0.369641 0.917543 0.146560 +vn -0.359709 0.917543 0.169481 +vn -0.348358 0.917543 0.191733 +vn -0.335632 0.917543 0.213228 +vn -0.321580 0.917543 0.233881 +vn -0.306260 0.917543 0.253611 +vn -0.289732 0.917543 0.272342 +vn -0.272060 0.917543 0.289997 +vn -0.253313 0.917543 0.306507 +vn -0.233568 0.917543 0.321808 +vn -0.212900 0.917543 0.335839 +vn -0.191393 0.917543 0.348544 +vn -0.169130 0.917543 0.359874 +vn -0.146200 0.917543 0.369784 +vn -0.122692 0.917543 0.378234 +vn -0.098701 0.917543 0.385193 +vn -0.074319 0.917543 0.390629 +vn -0.049645 0.917543 0.394526 +vn -0.024775 0.917543 0.396864 +vn 0.000194 0.917542 0.397638 +vn 0.025161 0.917543 0.396840 +vn 0.050029 0.917543 0.394476 +vn 0.074699 0.917543 0.390556 +vn 0.099075 0.917543 0.385096 +vn 0.123060 0.917543 0.378115 +vn 0.146559 0.917543 0.369642 +vn 0.169480 0.917543 0.359709 +vn 0.191733 0.917543 0.348358 +vn 0.213228 0.917543 0.335633 +vn 0.233881 0.917543 0.321581 +vn 0.253612 0.917544 0.306259 +vn 0.272341 0.917543 0.289732 +vn 0.289996 0.917544 0.272059 +vn 0.306507 0.917544 0.253313 +vn 0.321808 0.917543 0.233568 +vn 0.335839 0.917543 0.212900 +vn 0.348544 0.917543 0.191394 +vn 0.359874 0.917543 0.169129 +vn 0.369784 0.917543 0.146199 +vn 0.378234 0.917543 0.122691 +vn 0.385192 0.917543 0.098701 +vn 0.390629 0.917543 0.074320 +vn 0.394525 0.917543 0.049645 +vn 0.396863 0.917543 0.024775 +vn 0.397636 0.917543 -0.000195 +vn 0.367891 0.929576 -0.023334 +vn 0.365700 0.929576 -0.046386 +vn 0.362066 0.929576 -0.069257 +vn 0.357003 0.929576 -0.091854 +vn 0.350531 0.929576 -0.114089 +vn 0.342676 0.929576 -0.135874 +vn 0.333468 0.929576 -0.157121 +vn 0.322944 0.929576 -0.177751 +vn 0.311145 0.929576 -0.197679 +vn 0.298119 0.929576 -0.216826 +vn 0.283916 0.929576 -0.235116 +vn 0.268593 0.929576 -0.252479 +vn 0.252210 0.929576 -0.268846 +vn 0.234831 0.929577 -0.284151 +vn 0.216525 0.929576 -0.298337 +vn 0.197365 0.929577 -0.311343 +vn 0.177426 0.929577 -0.323120 +vn 0.156787 0.929576 -0.333625 +vn 0.135530 0.929577 -0.342811 +vn 0.113737 0.929577 -0.350645 +vn 0.091495 0.929577 -0.357093 +vn 0.068892 0.929577 -0.362134 +vn 0.046018 0.929576 -0.365746 +vn 0.022962 0.929577 -0.367912 +vn -0.000185 0.929577 -0.368629 +vn -0.023332 0.929577 -0.367889 +vn -0.046386 0.929577 -0.365698 +vn -0.069256 0.929576 -0.362066 +vn -0.091854 0.929576 -0.357002 +vn -0.114089 0.929576 -0.350530 +vn -0.135874 0.929577 -0.342674 +vn -0.157123 0.929577 -0.333465 +vn -0.177752 0.929577 -0.322941 +vn -0.197679 0.929577 -0.311143 +vn -0.216826 0.929577 -0.298118 +vn -0.235117 0.929577 -0.283914 +vn -0.252480 0.929577 -0.268591 +vn -0.268847 0.929576 -0.252209 +vn -0.284153 0.929576 -0.234830 +vn -0.298337 0.929576 -0.216525 +vn -0.311344 0.929576 -0.197367 +vn -0.323123 0.929576 -0.177427 +vn -0.333626 0.929576 -0.156785 +vn -0.342812 0.929576 -0.135528 +vn -0.350645 0.929576 -0.113735 +vn -0.357095 0.929576 -0.091494 +vn -0.362135 0.929576 -0.068893 +vn -0.365747 0.929576 -0.046018 +vn -0.367915 0.929576 -0.022960 +vn -0.368630 0.929576 0.000186 +vn -0.367891 0.929576 0.023332 +vn -0.365701 0.929576 0.046386 +vn -0.362066 0.929576 0.069256 +vn -0.357003 0.929576 0.091854 +vn -0.350531 0.929576 0.114089 +vn -0.342675 0.929576 0.135873 +vn -0.333468 0.929576 0.157122 +vn -0.322944 0.929576 0.177751 +vn -0.311145 0.929576 0.197678 +vn -0.298119 0.929576 0.216825 +vn -0.283916 0.929576 0.235116 +vn -0.268593 0.929576 0.252479 +vn -0.252210 0.929577 0.268845 +vn -0.234831 0.929577 0.284151 +vn -0.216525 0.929576 0.298336 +vn -0.197365 0.929576 0.311344 +vn -0.177426 0.929577 0.323121 +vn -0.156787 0.929577 0.333624 +vn -0.135529 0.929577 0.342811 +vn -0.113737 0.929577 0.350644 +vn -0.091495 0.929576 0.357095 +vn -0.068892 0.929577 0.362133 +vn -0.046018 0.929576 0.365747 +vn -0.022962 0.929577 0.367912 +vn 0.000186 0.929577 0.368628 +vn 0.023331 0.929577 0.367889 +vn 0.046385 0.929577 0.365699 +vn 0.069257 0.929577 0.362065 +vn 0.091854 0.929577 0.357001 +vn 0.114089 0.929577 0.350530 +vn 0.135875 0.929576 0.342674 +vn 0.157124 0.929577 0.333465 +vn 0.177752 0.929577 0.322941 +vn 0.197679 0.929577 0.311143 +vn 0.216826 0.929577 0.298117 +vn 0.235117 0.929576 0.283916 +vn 0.252480 0.929576 0.268592 +vn 0.268847 0.929577 0.252208 +vn 0.284153 0.929577 0.234830 +vn 0.298337 0.929576 0.216526 +vn 0.311344 0.929576 0.197367 +vn 0.323122 0.929576 0.177428 +vn 0.333625 0.929576 0.156786 +vn 0.342812 0.929576 0.135529 +vn 0.350646 0.929576 0.113735 +vn 0.357095 0.929576 0.091493 +vn 0.362135 0.929576 0.068892 +vn 0.365747 0.929576 0.046018 +vn 0.367914 0.929576 0.022961 +vn 0.368630 0.929576 -0.000188 +vn 0.338579 0.940693 -0.021479 +vn 0.336562 0.940693 -0.042695 +vn 0.333217 0.940693 -0.063744 +vn 0.328557 0.940693 -0.084540 +vn 0.322600 0.940693 -0.105003 +vn 0.315371 0.940693 -0.125053 +vn 0.306896 0.940693 -0.144610 +vn 0.297210 0.940693 -0.163595 +vn 0.286352 0.940693 -0.181935 +vn 0.274363 0.940693 -0.199554 +vn 0.261292 0.940693 -0.216388 +vn 0.247189 0.940693 -0.232367 +vn 0.232111 0.940693 -0.247429 +vn 0.216116 0.940693 -0.261515 +vn 0.199269 0.940693 -0.274571 +vn 0.181635 0.940693 -0.286541 +vn 0.163285 0.940693 -0.297380 +vn 0.144290 0.940693 -0.307047 +vn 0.124726 0.940693 -0.315501 +vn 0.104670 0.940692 -0.322711 +vn 0.084200 0.940693 -0.328645 +vn 0.063398 0.940693 -0.333283 +vn 0.042346 0.940693 -0.336607 +vn 0.021127 0.940692 -0.338602 +vn -0.000176 0.940693 -0.339260 +vn -0.021478 0.940693 -0.338580 +vn -0.042695 0.940693 -0.336563 +vn -0.063744 0.940693 -0.333218 +vn -0.084541 0.940693 -0.328557 +vn -0.105005 0.940692 -0.322601 +vn -0.125054 0.940693 -0.315371 +vn -0.144609 0.940693 -0.306895 +vn -0.163594 0.940693 -0.297209 +vn -0.181933 0.940693 -0.286352 +vn -0.199554 0.940692 -0.274364 +vn -0.216388 0.940692 -0.261294 +vn -0.232367 0.940693 -0.247191 +vn -0.247430 0.940692 -0.232112 +vn -0.261516 0.940693 -0.216117 +vn -0.274570 0.940693 -0.199269 +vn -0.286541 0.940693 -0.181634 +vn -0.297380 0.940693 -0.163284 +vn -0.307046 0.940693 -0.144289 +vn -0.315500 0.940693 -0.124726 +vn -0.322709 0.940693 -0.104669 +vn -0.328645 0.940693 -0.084200 +vn -0.333283 0.940693 -0.063397 +vn -0.336606 0.940693 -0.042345 +vn -0.338601 0.940693 -0.021128 +vn -0.339259 0.940693 0.000175 +vn -0.338579 0.940693 0.021478 +vn -0.336562 0.940693 0.042696 +vn -0.333217 0.940693 0.063745 +vn -0.328557 0.940693 0.084540 +vn -0.322600 0.940693 0.105003 +vn -0.315371 0.940693 0.125052 +vn -0.306896 0.940693 0.144610 +vn -0.297211 0.940693 0.163595 +vn -0.286352 0.940693 0.181933 +vn -0.274363 0.940693 0.199554 +vn -0.261292 0.940693 0.216388 +vn -0.247189 0.940693 0.232368 +vn -0.232110 0.940693 0.247430 +vn -0.216117 0.940693 0.261515 +vn -0.199269 0.940693 0.274571 +vn -0.181636 0.940693 0.286541 +vn -0.163285 0.940693 0.297379 +vn -0.144290 0.940693 0.307047 +vn -0.124726 0.940693 0.315501 +vn -0.104669 0.940693 0.322710 +vn -0.084200 0.940693 0.328645 +vn -0.063398 0.940693 0.333283 +vn -0.042346 0.940692 0.336609 +vn -0.021126 0.940693 0.338601 +vn 0.000176 0.940693 0.339260 +vn 0.021478 0.940693 0.338579 +vn 0.042696 0.940693 0.336563 +vn 0.063744 0.940693 0.333218 +vn 0.084541 0.940693 0.328558 +vn 0.105004 0.940692 0.322602 +vn 0.125053 0.940693 0.315372 +vn 0.144609 0.940692 0.306898 +vn 0.163594 0.940692 0.297213 +vn 0.181933 0.940692 0.286354 +vn 0.199554 0.940693 0.274364 +vn 0.216387 0.940692 0.261294 +vn 0.232367 0.940693 0.247188 +vn 0.247430 0.940693 0.232111 +vn 0.261516 0.940693 0.216116 +vn 0.274570 0.940693 0.199269 +vn 0.286541 0.940693 0.181633 +vn 0.297380 0.940693 0.163284 +vn 0.307046 0.940693 0.144289 +vn 0.315500 0.940693 0.124726 +vn 0.322710 0.940693 0.104671 +vn 0.328645 0.940693 0.084201 +vn 0.333283 0.940693 0.063398 +vn 0.336607 0.940693 0.042346 +vn 0.338601 0.940693 0.021128 +vn 0.339260 0.940693 -0.000178 +vn 0.308933 0.950882 -0.019604 +vn 0.307092 0.950882 -0.038963 +vn 0.304040 0.950882 -0.058168 +vn 0.299787 0.950882 -0.077144 +vn 0.294352 0.950882 -0.095816 +vn 0.287755 0.950882 -0.114110 +vn 0.280022 0.950882 -0.131952 +vn 0.271184 0.950882 -0.149275 +vn 0.261276 0.950882 -0.166009 +vn 0.250337 0.950882 -0.182085 +vn 0.238410 0.950882 -0.197445 +vn 0.225542 0.950881 -0.212027 +vn 0.211783 0.950882 -0.225770 +vn 0.197189 0.950882 -0.238621 +vn 0.181817 0.950882 -0.250533 +vn 0.165727 0.950882 -0.261455 +vn 0.148983 0.950882 -0.271345 +vn 0.131652 0.950882 -0.280164 +vn 0.113800 0.950882 -0.287878 +vn 0.095500 0.950882 -0.294455 +vn 0.076823 0.950882 -0.299870 +vn 0.057842 0.950882 -0.304103 +vn 0.038633 0.950882 -0.307135 +vn 0.019272 0.950882 -0.308954 +vn -0.000166 0.950882 -0.309554 +vn -0.019602 0.950882 -0.308934 +vn -0.038962 0.950882 -0.307091 +vn -0.058167 0.950882 -0.304040 +vn -0.077144 0.950882 -0.299788 +vn -0.095815 0.950882 -0.294352 +vn -0.114108 0.950882 -0.287754 +vn -0.131951 0.950882 -0.280022 +vn -0.149274 0.950882 -0.271183 +vn -0.166007 0.950882 -0.261275 +vn -0.182085 0.950882 -0.250338 +vn -0.197445 0.950881 -0.238413 +vn -0.212025 0.950882 -0.225542 +vn -0.225768 0.950881 -0.211786 +vn -0.238621 0.950882 -0.197191 +vn -0.250532 0.950882 -0.181815 +vn -0.261454 0.950882 -0.165727 +vn -0.271344 0.950882 -0.148983 +vn -0.280163 0.950882 -0.131652 +vn -0.287877 0.950882 -0.113802 +vn -0.294454 0.950882 -0.095500 +vn -0.299870 0.950882 -0.076822 +vn -0.304102 0.950882 -0.057840 +vn -0.307134 0.950882 -0.038633 +vn -0.308953 0.950882 -0.019273 +vn -0.309554 0.950882 0.000164 +vn -0.308932 0.950882 0.019603 +vn -0.307092 0.950882 0.038963 +vn -0.304040 0.950882 0.058169 +vn -0.299787 0.950882 0.077144 +vn -0.294352 0.950882 0.095815 +vn -0.287755 0.950882 0.114109 +vn -0.280022 0.950882 0.131953 +vn -0.271184 0.950882 0.149274 +vn -0.261276 0.950882 0.166007 +vn -0.250337 0.950882 0.182084 +vn -0.238409 0.950882 0.197443 +vn -0.225542 0.950882 0.212025 +vn -0.211784 0.950882 0.225769 +vn -0.197190 0.950882 0.238621 +vn -0.181817 0.950882 0.250533 +vn -0.165727 0.950882 0.261454 +vn -0.148984 0.950882 0.271343 +vn -0.131652 0.950882 0.280163 +vn -0.113800 0.950881 0.287878 +vn -0.095500 0.950882 0.294455 +vn -0.076822 0.950882 0.299870 +vn -0.057842 0.950882 0.304102 +vn -0.038633 0.950881 0.307136 +vn -0.019272 0.950882 0.308953 +vn 0.000166 0.950881 0.309555 +vn 0.019602 0.950882 0.308933 +vn 0.038962 0.950882 0.307092 +vn 0.058167 0.950882 0.304040 +vn 0.077143 0.950881 0.299789 +vn 0.095815 0.950881 0.294354 +vn 0.114108 0.950882 0.287756 +vn 0.131951 0.950882 0.280022 +vn 0.149274 0.950882 0.271183 +vn 0.166007 0.950882 0.261276 +vn 0.182085 0.950882 0.250335 +vn 0.197445 0.950882 0.238409 +vn 0.212025 0.950882 0.225542 +vn 0.225768 0.950881 0.211787 +vn 0.238621 0.950882 0.197189 +vn 0.250532 0.950882 0.181817 +vn 0.261454 0.950882 0.165727 +vn 0.271344 0.950882 0.148985 +vn 0.280163 0.950882 0.131653 +vn 0.287877 0.950882 0.113802 +vn 0.294454 0.950882 0.095501 +vn 0.299870 0.950882 0.076823 +vn 0.304102 0.950882 0.057841 +vn 0.307134 0.950882 0.038634 +vn 0.308953 0.950882 0.019272 +vn 0.309554 0.950882 -0.000167 +vn 0.278983 0.960133 -0.017707 +vn 0.277320 0.960133 -0.035190 +vn 0.274564 0.960133 -0.052533 +vn 0.270723 0.960133 -0.069667 +vn 0.265815 0.960133 -0.086528 +vn 0.259857 0.960133 -0.103047 +vn 0.252873 0.960133 -0.119161 +vn 0.244892 0.960133 -0.134806 +vn 0.235945 0.960133 -0.149917 +vn 0.226065 0.960133 -0.164435 +vn 0.215294 0.960133 -0.178304 +vn 0.203673 0.960133 -0.191471 +vn 0.191249 0.960133 -0.203882 +vn 0.178070 0.960133 -0.215491 +vn 0.164187 0.960133 -0.226246 +vn 0.149657 0.960133 -0.236107 +vn 0.134537 0.960133 -0.245038 +vn 0.118885 0.960133 -0.253003 +vn 0.102764 0.960133 -0.259969 +vn 0.086237 0.960133 -0.265909 +vn 0.069371 0.960133 -0.270799 +vn 0.052230 0.960133 -0.274620 +vn 0.034883 0.960133 -0.277357 +vn 0.017399 0.960133 -0.279001 +vn -0.000154 0.960133 -0.279542 +vn -0.017706 0.960134 -0.278980 +vn -0.035189 0.960133 -0.277319 +vn -0.052532 0.960133 -0.274562 +vn -0.069669 0.960133 -0.270722 +vn -0.086530 0.960133 -0.265813 +vn -0.103050 0.960133 -0.259855 +vn -0.119163 0.960133 -0.252874 +vn -0.134806 0.960133 -0.244892 +vn -0.149917 0.960133 -0.235944 +vn -0.164436 0.960133 -0.226064 +vn -0.178306 0.960134 -0.215291 +vn -0.191473 0.960133 -0.203671 +vn -0.203884 0.960133 -0.191246 +vn -0.215491 0.960134 -0.178066 +vn -0.226246 0.960133 -0.164185 +vn -0.236109 0.960133 -0.149657 +vn -0.245040 0.960133 -0.134537 +vn -0.253004 0.960133 -0.118885 +vn -0.259970 0.960133 -0.102762 +vn -0.265910 0.960133 -0.086237 +vn -0.270800 0.960133 -0.069370 +vn -0.274621 0.960133 -0.052231 +vn -0.277359 0.960133 -0.034887 +vn -0.279002 0.960133 -0.017398 +vn -0.279544 0.960133 0.000154 +vn -0.278983 0.960133 0.017705 +vn -0.277320 0.960133 0.035190 +vn -0.274564 0.960133 0.052531 +vn -0.270723 0.960133 0.069666 +vn -0.265814 0.960133 0.086527 +vn -0.259857 0.960133 0.103049 +vn -0.252873 0.960133 0.119165 +vn -0.244892 0.960133 0.134806 +vn -0.235944 0.960133 0.149916 +vn -0.226065 0.960133 0.164435 +vn -0.215294 0.960133 0.178305 +vn -0.203673 0.960133 0.191472 +vn -0.191249 0.960133 0.203883 +vn -0.178069 0.960133 0.215490 +vn -0.164187 0.960133 0.226245 +vn -0.149657 0.960133 0.236108 +vn -0.134536 0.960133 0.245040 +vn -0.118885 0.960133 0.253003 +vn -0.102764 0.960133 0.259969 +vn -0.086238 0.960133 0.265908 +vn -0.069371 0.960133 0.270799 +vn -0.052230 0.960133 0.274620 +vn -0.034884 0.960133 0.277358 +vn -0.017399 0.960133 0.279000 +vn 0.000154 0.960133 0.279544 +vn 0.017706 0.960133 0.278981 +vn 0.035189 0.960134 0.277318 +vn 0.052532 0.960133 0.274563 +vn 0.069669 0.960133 0.270722 +vn 0.086530 0.960134 0.265811 +vn 0.103050 0.960134 0.259853 +vn 0.119163 0.960133 0.252873 +vn 0.134806 0.960133 0.244891 +vn 0.149918 0.960133 0.235944 +vn 0.164436 0.960133 0.226064 +vn 0.178307 0.960133 0.215294 +vn 0.191473 0.960133 0.203673 +vn 0.203884 0.960133 0.191246 +vn 0.215491 0.960133 0.178067 +vn 0.226246 0.960133 0.164188 +vn 0.236109 0.960133 0.149655 +vn 0.245040 0.960133 0.134537 +vn 0.253004 0.960133 0.118885 +vn 0.259970 0.960133 0.102762 +vn 0.265909 0.960133 0.086239 +vn 0.270800 0.960133 0.069372 +vn 0.274621 0.960133 0.052235 +vn 0.277359 0.960133 0.034886 +vn 0.279002 0.960133 0.017396 +vn 0.279544 0.960133 -0.000157 +vn 0.248757 0.968437 -0.015794 +vn 0.247274 0.968437 -0.031381 +vn 0.244816 0.968437 -0.046844 +vn 0.241392 0.968437 -0.062129 +vn 0.237015 0.968437 -0.077161 +vn 0.231702 0.968437 -0.091889 +vn 0.225475 0.968437 -0.106259 +vn 0.218358 0.968437 -0.120205 +vn 0.210380 0.968437 -0.133679 +vn 0.201571 0.968437 -0.146626 +vn 0.191966 0.968437 -0.158991 +vn 0.181604 0.968437 -0.170731 +vn 0.170526 0.968437 -0.181797 +vn 0.158774 0.968437 -0.192147 +vn 0.146396 0.968437 -0.201738 +vn 0.133440 0.968437 -0.210532 +vn 0.119957 0.968437 -0.218495 +vn 0.106001 0.968437 -0.225597 +vn 0.091627 0.968437 -0.231808 +vn 0.076890 0.968436 -0.237105 +vn 0.061851 0.968437 -0.241464 +vn 0.046568 0.968437 -0.244870 +vn 0.031100 0.968437 -0.247311 +vn 0.015510 0.968437 -0.248776 +vn -0.000141 0.968437 -0.249259 +vn -0.015792 0.968437 -0.248758 +vn -0.031380 0.968437 -0.247277 +vn -0.046845 0.968437 -0.244818 +vn -0.062124 0.968437 -0.241394 +vn -0.077159 0.968437 -0.237016 +vn -0.091889 0.968437 -0.231703 +vn -0.106256 0.968437 -0.225475 +vn -0.120204 0.968437 -0.218361 +vn -0.133678 0.968436 -0.210384 +vn -0.146624 0.968437 -0.201574 +vn -0.158992 0.968436 -0.191970 +vn -0.170732 0.968437 -0.181606 +vn -0.181798 0.968437 -0.170528 +vn -0.192146 0.968437 -0.158775 +vn -0.201736 0.968437 -0.146395 +vn -0.210531 0.968437 -0.133442 +vn -0.218494 0.968437 -0.119958 +vn -0.225595 0.968437 -0.106003 +vn -0.231806 0.968437 -0.091632 +vn -0.237102 0.968437 -0.076895 +vn -0.241462 0.968437 -0.061855 +vn -0.244869 0.968437 -0.046567 +vn -0.247310 0.968437 -0.031098 +vn -0.248775 0.968437 -0.015510 +vn -0.249258 0.968437 0.000141 +vn -0.248757 0.968437 0.015795 +vn -0.247274 0.968437 0.031383 +vn -0.244816 0.968437 0.046847 +vn -0.241392 0.968437 0.062129 +vn -0.237015 0.968437 0.077161 +vn -0.231702 0.968437 0.091889 +vn -0.225475 0.968437 0.106256 +vn -0.218358 0.968437 0.120204 +vn -0.210379 0.968437 0.133680 +vn -0.201571 0.968437 0.146623 +vn -0.191966 0.968437 0.158991 +vn -0.181604 0.968437 0.170732 +vn -0.170526 0.968437 0.181799 +vn -0.158774 0.968437 0.192148 +vn -0.146396 0.968437 0.201737 +vn -0.133440 0.968437 0.210533 +vn -0.119957 0.968437 0.218496 +vn -0.106001 0.968437 0.225596 +vn -0.091626 0.968437 0.231807 +vn -0.076891 0.968437 0.237104 +vn -0.061852 0.968437 0.241462 +vn -0.046568 0.968437 0.244869 +vn -0.031100 0.968437 0.247311 +vn -0.015510 0.968437 0.248776 +vn 0.000141 0.968437 0.249260 +vn 0.015792 0.968437 0.248758 +vn 0.031380 0.968437 0.247276 +vn 0.046845 0.968437 0.244819 +vn 0.062124 0.968437 0.241393 +vn 0.077159 0.968437 0.237016 +vn 0.091889 0.968437 0.231705 +vn 0.106256 0.968437 0.225477 +vn 0.120204 0.968437 0.218360 +vn 0.133678 0.968436 0.210384 +vn 0.146624 0.968437 0.201573 +vn 0.158991 0.968437 0.191970 +vn 0.170731 0.968437 0.181606 +vn 0.181797 0.968437 0.170527 +vn 0.192146 0.968437 0.158775 +vn 0.201737 0.968437 0.146395 +vn 0.210531 0.968437 0.133441 +vn 0.218494 0.968437 0.119958 +vn 0.225595 0.968437 0.106005 +vn 0.231805 0.968437 0.091631 +vn 0.237102 0.968437 0.076893 +vn 0.241462 0.968437 0.061850 +vn 0.244869 0.968437 0.046565 +vn 0.247310 0.968437 0.031099 +vn 0.248774 0.968437 0.015515 +vn 0.249258 0.968437 -0.000139 +vn 0.218283 0.975787 -0.013856 +vn 0.216982 0.975787 -0.027538 +vn 0.214825 0.975787 -0.041113 +vn 0.211819 0.975787 -0.054519 +vn 0.207978 0.975787 -0.067710 +vn 0.203316 0.975787 -0.080635 +vn 0.197852 0.975787 -0.093242 +vn 0.191607 0.975787 -0.105481 +vn 0.184606 0.975787 -0.117305 +vn 0.176876 0.975787 -0.128665 +vn 0.168448 0.975787 -0.139517 +vn 0.159355 0.975787 -0.149818 +vn 0.149634 0.975787 -0.159526 +vn 0.139322 0.975787 -0.168607 +vn 0.128459 0.975787 -0.177023 +vn 0.117090 0.975787 -0.184741 +vn 0.105259 0.975787 -0.191730 +vn 0.093013 0.975787 -0.197961 +vn 0.080399 0.975787 -0.203408 +vn 0.067468 0.975787 -0.208056 +vn 0.054271 0.975787 -0.211883 +vn 0.040860 0.975787 -0.214872 +vn 0.027287 0.975788 -0.217012 +vn 0.013607 0.975787 -0.218299 +vn -0.000127 0.975787 -0.218723 +vn -0.013860 0.975787 -0.218283 +vn -0.027539 0.975787 -0.216983 +vn -0.041109 0.975787 -0.214825 +vn -0.054517 0.975787 -0.211820 +vn -0.067710 0.975787 -0.207979 +vn -0.080635 0.975787 -0.203316 +vn -0.093242 0.975787 -0.197852 +vn -0.105482 0.975787 -0.191608 +vn -0.117304 0.975787 -0.184605 +vn -0.128664 0.975787 -0.176876 +vn -0.139517 0.975787 -0.168450 +vn -0.149818 0.975787 -0.159354 +vn -0.159529 0.975787 -0.149634 +vn -0.168609 0.975787 -0.139321 +vn -0.177025 0.975787 -0.128458 +vn -0.184742 0.975787 -0.117087 +vn -0.191729 0.975787 -0.105257 +vn -0.197960 0.975787 -0.093015 +vn -0.203410 0.975787 -0.080396 +vn -0.208057 0.975787 -0.067466 +vn -0.211883 0.975787 -0.054275 +vn -0.214872 0.975787 -0.040865 +vn -0.217014 0.975787 -0.027290 +vn -0.218299 0.975787 -0.013605 +vn -0.218723 0.975787 0.000127 +vn -0.218283 0.975787 0.013855 +vn -0.216982 0.975787 0.027538 +vn -0.214825 0.975787 0.041113 +vn -0.211819 0.975787 0.054519 +vn -0.207978 0.975787 0.067708 +vn -0.203316 0.975787 0.080634 +vn -0.197852 0.975787 0.093243 +vn -0.191607 0.975787 0.105481 +vn -0.184606 0.975787 0.117304 +vn -0.176876 0.975787 0.128665 +vn -0.168448 0.975787 0.139517 +vn -0.159355 0.975787 0.149816 +vn -0.149634 0.975788 0.159526 +vn -0.139321 0.975788 0.168607 +vn -0.128459 0.975787 0.177023 +vn -0.117090 0.975787 0.184741 +vn -0.105259 0.975787 0.191729 +vn -0.093013 0.975787 0.197960 +vn -0.080399 0.975787 0.203408 +vn -0.067468 0.975787 0.208055 +vn -0.054272 0.975787 0.211882 +vn -0.040860 0.975787 0.214871 +vn -0.027287 0.975787 0.217012 +vn -0.013607 0.975787 0.218298 +vn 0.000127 0.975787 0.218721 +vn 0.013860 0.975787 0.218282 +vn 0.027539 0.975787 0.216981 +vn 0.041109 0.975787 0.214824 +vn 0.054517 0.975787 0.211819 +vn 0.067710 0.975787 0.207978 +vn 0.080635 0.975787 0.203315 +vn 0.093242 0.975787 0.197852 +vn 0.105482 0.975787 0.191609 +vn 0.117305 0.975787 0.184607 +vn 0.128664 0.975787 0.176875 +vn 0.139516 0.975787 0.168449 +vn 0.149818 0.975787 0.159353 +vn 0.159529 0.975788 0.149631 +vn 0.168609 0.975787 0.139319 +vn 0.177025 0.975787 0.128458 +vn 0.184742 0.975788 0.117086 +vn 0.191729 0.975787 0.105257 +vn 0.197960 0.975787 0.093016 +vn 0.203410 0.975787 0.080398 +vn 0.208057 0.975787 0.067468 +vn 0.211882 0.975787 0.054275 +vn 0.214872 0.975787 0.040865 +vn 0.217014 0.975787 0.027287 +vn 0.218299 0.975787 0.013602 +vn 0.218723 0.975787 -0.000127 +vn 0.187595 0.982174 -0.011918 +vn 0.186477 0.982174 -0.023673 +vn 0.184622 0.982174 -0.035333 +vn 0.182040 0.982174 -0.046850 +vn 0.178738 0.982175 -0.058189 +vn 0.174732 0.982174 -0.069300 +vn 0.170036 0.982174 -0.080133 +vn 0.164668 0.982174 -0.090652 +vn 0.158651 0.982174 -0.100813 +vn 0.152008 0.982174 -0.110580 +vn 0.144764 0.982174 -0.119909 +vn 0.136950 0.982174 -0.128760 +vn 0.128595 0.982174 -0.137103 +vn 0.119733 0.982175 -0.144904 +vn 0.110397 0.982175 -0.152137 +vn 0.100627 0.982174 -0.158770 +vn 0.090459 0.982174 -0.164776 +vn 0.079934 0.982174 -0.170130 +vn 0.069094 0.982174 -0.174814 +vn 0.057981 0.982174 -0.178808 +vn 0.046639 0.982174 -0.182095 +vn 0.035113 0.982174 -0.184664 +vn 0.023448 0.982174 -0.186505 +vn 0.011691 0.982174 -0.187608 +vn -0.000111 0.982175 -0.187971 +vn -0.011914 0.982174 -0.187595 +vn -0.023670 0.982174 -0.186478 +vn -0.035332 0.982174 -0.184623 +vn -0.046855 0.982175 -0.182038 +vn -0.058193 0.982175 -0.178737 +vn -0.069301 0.982174 -0.174731 +vn -0.080136 0.982174 -0.170036 +vn -0.090655 0.982174 -0.164670 +vn -0.100815 0.982174 -0.158654 +vn -0.110578 0.982174 -0.152009 +vn -0.119904 0.982175 -0.144760 +vn -0.128758 0.982175 -0.136947 +vn -0.137103 0.982174 -0.128595 +vn -0.144907 0.982174 -0.119731 +vn -0.152139 0.982174 -0.110401 +vn -0.158771 0.982174 -0.100629 +vn -0.164776 0.982174 -0.090458 +vn -0.170130 0.982174 -0.079936 +vn -0.174814 0.982174 -0.069094 +vn -0.178807 0.982174 -0.057981 +vn -0.182095 0.982174 -0.046639 +vn -0.184664 0.982174 -0.035114 +vn -0.186505 0.982174 -0.023451 +vn -0.187609 0.982174 -0.011691 +vn -0.187973 0.982174 0.000111 +vn -0.187595 0.982174 0.011915 +vn -0.186477 0.982174 0.023674 +vn -0.184622 0.982174 0.035333 +vn -0.182040 0.982174 0.046857 +vn -0.178738 0.982174 0.058196 +vn -0.174732 0.982174 0.069300 +vn -0.170035 0.982174 0.080133 +vn -0.164668 0.982174 0.090654 +vn -0.158651 0.982174 0.100815 +vn -0.152008 0.982174 0.110580 +vn -0.144764 0.982174 0.119909 +vn -0.136950 0.982174 0.128759 +vn -0.128595 0.982174 0.137102 +vn -0.119732 0.982175 0.144905 +vn -0.110397 0.982174 0.152140 +vn -0.100627 0.982174 0.158772 +vn -0.090459 0.982174 0.164775 +vn -0.079934 0.982174 0.170131 +vn -0.069094 0.982174 0.174815 +vn -0.057980 0.982174 0.178808 +vn -0.046639 0.982174 0.182095 +vn -0.035113 0.982174 0.184665 +vn -0.023449 0.982174 0.186505 +vn -0.011691 0.982174 0.187609 +vn 0.000112 0.982174 0.187973 +vn 0.011914 0.982174 0.187594 +vn 0.023670 0.982174 0.186477 +vn 0.035332 0.982174 0.184623 +vn 0.046855 0.982174 0.182039 +vn 0.058193 0.982174 0.178737 +vn 0.069301 0.982174 0.174731 +vn 0.080136 0.982174 0.170034 +vn 0.090655 0.982175 0.164664 +vn 0.100815 0.982175 0.158649 +vn 0.110578 0.982174 0.152010 +vn 0.119905 0.982174 0.144766 +vn 0.128758 0.982175 0.136948 +vn 0.137103 0.982174 0.128594 +vn 0.144907 0.982174 0.119733 +vn 0.152139 0.982174 0.110401 +vn 0.158770 0.982174 0.100629 +vn 0.164776 0.982174 0.090458 +vn 0.170130 0.982174 0.079933 +vn 0.174814 0.982175 0.069090 +vn 0.178807 0.982174 0.057981 +vn 0.182095 0.982174 0.046640 +vn 0.184664 0.982174 0.035114 +vn 0.186505 0.982174 0.023446 +vn 0.187609 0.982174 0.011692 +vn 0.187973 0.982174 -0.000108 +vn 0.156721 0.987593 -0.009962 +vn 0.155786 0.987593 -0.019783 +vn 0.154237 0.987593 -0.029521 +vn 0.152079 0.987593 -0.039151 +vn 0.149321 0.987593 -0.048622 +vn 0.145974 0.987593 -0.057896 +vn 0.142050 0.987593 -0.066951 +vn 0.137566 0.987593 -0.075738 +vn 0.132539 0.987593 -0.084225 +vn 0.126989 0.987593 -0.092382 +vn 0.120938 0.987593 -0.100171 +vn 0.114409 0.987593 -0.107566 +vn 0.107429 0.987593 -0.114540 +vn 0.100025 0.987593 -0.121060 +vn 0.092226 0.987593 -0.127101 +vn 0.084064 0.987593 -0.132643 +vn 0.075569 0.987592 -0.137661 +vn 0.066777 0.987593 -0.142133 +vn 0.057720 0.987593 -0.146044 +vn 0.048436 0.987593 -0.149380 +vn 0.038961 0.987593 -0.152126 +vn 0.029332 0.987593 -0.154272 +vn 0.019587 0.987593 -0.155809 +vn 0.009765 0.987593 -0.156731 +vn -0.000095 0.987593 -0.157038 +vn -0.009956 0.987593 -0.156721 +vn -0.019776 0.987593 -0.155784 +vn -0.029519 0.987593 -0.154236 +vn -0.039146 0.987593 -0.152077 +vn -0.048618 0.987593 -0.149320 +vn -0.057898 0.987593 -0.145971 +vn -0.066949 0.987593 -0.142050 +vn -0.075736 0.987592 -0.137569 +vn -0.084225 0.987593 -0.132541 +vn -0.092381 0.987593 -0.126988 +vn -0.100172 0.987593 -0.120937 +vn -0.107568 0.987593 -0.114411 +vn -0.114540 0.987593 -0.107430 +vn -0.121059 0.987593 -0.100026 +vn -0.127101 0.987593 -0.092225 +vn -0.132642 0.987593 -0.084059 +vn -0.137658 0.987593 -0.075571 +vn -0.142131 0.987593 -0.066780 +vn -0.146044 0.987593 -0.057718 +vn -0.149380 0.987593 -0.048434 +vn -0.152127 0.987593 -0.038957 +vn -0.154273 0.987593 -0.029331 +vn -0.155810 0.987593 -0.019589 +vn -0.156733 0.987593 -0.009758 +vn -0.157036 0.987593 0.000095 +vn -0.156721 0.987593 0.009955 +vn -0.155786 0.987593 0.019783 +vn -0.154237 0.987593 0.029518 +vn -0.152079 0.987593 0.039149 +vn -0.149321 0.987593 0.048621 +vn -0.145974 0.987593 0.057897 +vn -0.142050 0.987593 0.066951 +vn -0.137566 0.987593 0.075737 +vn -0.132539 0.987593 0.084222 +vn -0.126989 0.987593 0.092380 +vn -0.120938 0.987593 0.100171 +vn -0.114409 0.987593 0.107566 +vn -0.107430 0.987593 0.114537 +vn -0.100025 0.987593 0.121057 +vn -0.092226 0.987593 0.127101 +vn -0.084064 0.987593 0.132643 +vn -0.075569 0.987592 0.137661 +vn -0.066776 0.987593 0.142133 +vn -0.057720 0.987593 0.146044 +vn -0.048436 0.987593 0.149380 +vn -0.038961 0.987593 0.152125 +vn -0.029332 0.987593 0.154272 +vn -0.019587 0.987593 0.155810 +vn -0.009765 0.987593 0.156732 +vn 0.000095 0.987593 0.157036 +vn 0.009955 0.987593 0.156720 +vn 0.019776 0.987593 0.155786 +vn 0.029519 0.987593 0.154235 +vn 0.039146 0.987593 0.152079 +vn 0.048618 0.987593 0.149322 +vn 0.057898 0.987593 0.145972 +vn 0.066949 0.987593 0.142048 +vn 0.075736 0.987593 0.137566 +vn 0.084225 0.987593 0.132541 +vn 0.092381 0.987593 0.126988 +vn 0.100172 0.987593 0.120935 +vn 0.107568 0.987593 0.114410 +vn 0.114540 0.987592 0.107434 +vn 0.121059 0.987593 0.100028 +vn 0.127101 0.987593 0.092223 +vn 0.132641 0.987593 0.084061 +vn 0.137658 0.987593 0.075573 +vn 0.142131 0.987593 0.066780 +vn 0.146044 0.987593 0.057718 +vn 0.149380 0.987593 0.048434 +vn 0.152127 0.987593 0.038957 +vn 0.154273 0.987593 0.029332 +vn 0.155810 0.987593 0.019588 +vn 0.156733 0.987593 0.009759 +vn 0.157036 0.987593 -0.000103 +vn 0.125687 0.992038 -0.007977 +vn 0.124938 0.992038 -0.015857 +vn 0.123695 0.992038 -0.023668 +vn 0.121964 0.992038 -0.031391 +vn 0.119752 0.992038 -0.038997 +vn 0.117068 0.992038 -0.046429 +vn 0.113921 0.992038 -0.053685 +vn 0.110325 0.992038 -0.060738 +vn 0.106293 0.992038 -0.067550 +vn 0.101842 0.992038 -0.074091 +vn 0.096989 0.992037 -0.080341 +vn 0.091753 0.992037 -0.086274 +vn 0.086155 0.992038 -0.091862 +vn 0.080217 0.992038 -0.097090 +vn 0.073963 0.992038 -0.101935 +vn 0.067416 0.992038 -0.106379 +vn 0.060604 0.992037 -0.110405 +vn 0.053552 0.992037 -0.113992 +vn 0.046289 0.992037 -0.117129 +vn 0.038843 0.992037 -0.119804 +vn 0.031244 0.992038 -0.122005 +vn 0.023522 0.992038 -0.123725 +vn 0.015707 0.992038 -0.124959 +vn 0.007830 0.992037 -0.125700 +vn -0.000078 0.992038 -0.125942 +vn -0.007986 0.992038 -0.125688 +vn -0.015862 0.992037 -0.124941 +vn -0.023676 0.992038 -0.123697 +vn -0.031396 0.992038 -0.121965 +vn -0.038992 0.992037 -0.119756 +vn -0.046435 0.992037 -0.117071 +vn -0.053694 0.992038 -0.113922 +vn -0.060741 0.992038 -0.110323 +vn -0.067549 0.992038 -0.106294 +vn -0.074089 0.992038 -0.101842 +vn -0.080338 0.992038 -0.096990 +vn -0.086269 0.992038 -0.091753 +vn -0.091861 0.992038 -0.086158 +vn -0.097089 0.992038 -0.080217 +vn -0.101934 0.992038 -0.073961 +vn -0.106377 0.992038 -0.067417 +vn -0.110400 0.992038 -0.060602 +vn -0.113988 0.992038 -0.053546 +vn -0.117126 0.992038 -0.046285 +vn -0.119801 0.992037 -0.038851 +vn -0.122003 0.992038 -0.031247 +vn -0.123725 0.992038 -0.023520 +vn -0.124957 0.992038 -0.015706 +vn -0.125697 0.992038 -0.007827 +vn -0.125941 0.992038 0.000077 +vn -0.125687 0.992038 0.007979 +vn -0.124938 0.992038 0.015856 +vn -0.123695 0.992038 0.023668 +vn -0.121964 0.992038 0.031391 +vn -0.119752 0.992038 0.038997 +vn -0.117068 0.992038 0.046429 +vn -0.113921 0.992038 0.053685 +vn -0.110325 0.992038 0.060741 +vn -0.106293 0.992038 0.067552 +vn -0.101842 0.992038 0.074091 +vn -0.096989 0.992038 0.080341 +vn -0.091753 0.992038 0.086271 +vn -0.086155 0.992038 0.091860 +vn -0.080217 0.992038 0.097089 +vn -0.073963 0.992038 0.101932 +vn -0.067416 0.992038 0.106376 +vn -0.060604 0.992038 0.110402 +vn -0.053552 0.992037 0.113992 +vn -0.046289 0.992037 0.117129 +vn -0.038843 0.992037 0.119804 +vn -0.031244 0.992038 0.122005 +vn -0.023522 0.992038 0.123726 +vn -0.015707 0.992037 0.124960 +vn -0.007830 0.992038 0.125699 +vn 0.000078 0.992038 0.125943 +vn 0.007986 0.992037 0.125691 +vn 0.015862 0.992037 0.124942 +vn 0.023676 0.992037 0.123698 +vn 0.031396 0.992037 0.121967 +vn 0.038992 0.992038 0.119752 +vn 0.046435 0.992038 0.117068 +vn 0.053694 0.992037 0.113924 +vn 0.060741 0.992038 0.110327 +vn 0.067549 0.992038 0.106294 +vn 0.074089 0.992038 0.101843 +vn 0.080338 0.992037 0.096992 +vn 0.086269 0.992037 0.091759 +vn 0.091860 0.992038 0.086157 +vn 0.097089 0.992038 0.080219 +vn 0.101934 0.992038 0.073965 +vn 0.106377 0.992038 0.067418 +vn 0.110400 0.992038 0.060602 +vn 0.113988 0.992038 0.053544 +vn 0.117126 0.992038 0.046285 +vn 0.119801 0.992037 0.038851 +vn 0.122003 0.992038 0.031247 +vn 0.123725 0.992038 0.023520 +vn 0.124957 0.992038 0.015706 +vn 0.125697 0.992038 0.007827 +vn 0.125941 0.992038 -0.000077 +vn 0.094531 0.995504 -0.006009 +vn 0.093967 0.995504 -0.011940 +vn 0.093033 0.995504 -0.017820 +vn 0.091731 0.995504 -0.023617 +vn 0.090067 0.995504 -0.029322 +vn 0.088048 0.995504 -0.034926 +vn 0.085681 0.995504 -0.040384 +vn 0.082976 0.995504 -0.045682 +vn 0.079944 0.995504 -0.050798 +vn 0.076596 0.995504 -0.055718 +vn 0.072946 0.995504 -0.060424 +vn 0.069008 0.995504 -0.064885 +vn 0.064797 0.995504 -0.069093 +vn 0.060331 0.995504 -0.073025 +vn 0.055627 0.995504 -0.076668 +vn 0.050703 0.995504 -0.080012 +vn 0.045579 0.995504 -0.083033 +vn 0.040276 0.995504 -0.085726 +vn 0.034813 0.995504 -0.088089 +vn 0.029213 0.995504 -0.090104 +vn 0.023498 0.995504 -0.091762 +vn 0.017689 0.995504 -0.093054 +vn 0.011811 0.995504 -0.093980 +vn 0.005887 0.995504 -0.094537 +vn -0.000061 0.995504 -0.094721 +vn -0.006008 0.995504 -0.094530 +vn -0.011932 0.995504 -0.093964 +vn -0.017809 0.995504 -0.093028 +vn -0.023615 0.995504 -0.091727 +vn -0.029329 0.995504 -0.090064 +vn -0.034926 0.995504 -0.088046 +vn -0.040386 0.995504 -0.085680 +vn -0.045686 0.995504 -0.082976 +vn -0.050806 0.995504 -0.079947 +vn -0.055726 0.995503 -0.076602 +vn -0.060425 0.995504 -0.072947 +vn -0.064886 0.995504 -0.069005 +vn -0.069091 0.995504 -0.064797 +vn -0.073023 0.995504 -0.060334 +vn -0.076667 0.995504 -0.055632 +vn -0.080009 0.995503 -0.050711 +vn -0.083035 0.995504 -0.045583 +vn -0.085733 0.995504 -0.040262 +vn -0.088093 0.995504 -0.034802 +vn -0.090105 0.995504 -0.029206 +vn -0.091761 0.995504 -0.023491 +vn -0.093056 0.995504 -0.017693 +vn -0.093983 0.995504 -0.011809 +vn -0.094539 0.995504 -0.005889 +vn -0.094722 0.995504 0.000052 +vn -0.094531 0.995504 0.006001 +vn -0.093967 0.995504 0.011932 +vn -0.093033 0.995504 0.017820 +vn -0.091731 0.995504 0.023617 +vn -0.090067 0.995504 0.029321 +vn -0.088048 0.995504 0.034926 +vn -0.085681 0.995504 0.040385 +vn -0.082976 0.995504 0.045682 +vn -0.079944 0.995504 0.050802 +vn -0.076596 0.995504 0.055722 +vn -0.072946 0.995504 0.060429 +vn -0.069008 0.995504 0.064889 +vn -0.064797 0.995504 0.069093 +vn -0.060331 0.995504 0.073024 +vn -0.055627 0.995504 0.076663 +vn -0.050703 0.995504 0.080003 +vn -0.045579 0.995504 0.083033 +vn -0.040275 0.995504 0.085730 +vn -0.034813 0.995504 0.088089 +vn -0.029213 0.995504 0.090102 +vn -0.023498 0.995504 0.091759 +vn -0.017689 0.995504 0.093054 +vn -0.011811 0.995504 0.093980 +vn -0.005887 0.995504 0.094537 +vn 0.000061 0.995504 0.094721 +vn 0.006008 0.995504 0.094528 +vn 0.011932 0.995504 0.093963 +vn 0.017809 0.995504 0.093030 +vn 0.023615 0.995504 0.091726 +vn 0.029329 0.995504 0.090063 +vn 0.034926 0.995504 0.088048 +vn 0.040386 0.995504 0.085680 +vn 0.045686 0.995503 0.082982 +vn 0.050806 0.995504 0.079946 +vn 0.055725 0.995504 0.076598 +vn 0.060425 0.995504 0.072946 +vn 0.064886 0.995504 0.069006 +vn 0.069091 0.995504 0.064793 +vn 0.073023 0.995504 0.060333 +vn 0.076667 0.995504 0.055632 +vn 0.080009 0.995504 0.050707 +vn 0.083035 0.995503 0.045591 +vn 0.085733 0.995504 0.040270 +vn 0.088093 0.995504 0.034801 +vn 0.090105 0.995504 0.029215 +vn 0.091761 0.995504 0.023499 +vn 0.093056 0.995504 0.017693 +vn 0.093983 0.995504 0.011809 +vn 0.094539 0.995504 0.005889 +vn 0.094722 0.995504 -0.000051 +vn 0.063280 0.997988 -0.004009 +vn 0.062902 0.997988 -0.007961 +vn 0.062277 0.997988 -0.011915 +vn 0.061405 0.997987 -0.015822 +vn 0.060291 0.997987 -0.019650 +vn 0.058939 0.997988 -0.023387 +vn 0.057355 0.997988 -0.027026 +vn 0.055544 0.997988 -0.030578 +vn 0.053514 0.997988 -0.034010 +vn 0.051272 0.997988 -0.037309 +vn 0.048829 0.997988 -0.040454 +vn 0.046193 0.997988 -0.043437 +vn 0.043374 0.997988 -0.046250 +vn 0.040384 0.997988 -0.048884 +vn 0.037235 0.997987 -0.051331 +vn 0.033939 0.997987 -0.053566 +vn 0.030509 0.997988 -0.055586 +vn 0.026958 0.997987 -0.057397 +vn 0.023302 0.997987 -0.058978 +vn 0.019553 0.997988 -0.060321 +vn 0.015727 0.997987 -0.061431 +vn 0.011839 0.997988 -0.062295 +vn 0.007904 0.997988 -0.062914 +vn 0.003938 0.997988 -0.063287 +vn -0.000043 0.997988 -0.063410 +vn -0.004025 0.997988 -0.063281 +vn -0.007990 0.997988 -0.062904 +vn -0.011924 0.997987 -0.062280 +vn -0.015811 0.997988 -0.061403 +vn -0.019636 0.997988 -0.060286 +vn -0.023383 0.997988 -0.058938 +vn -0.027037 0.997987 -0.057360 +vn -0.030585 0.997987 -0.055550 +vn -0.034012 0.997988 -0.053511 +vn -0.037305 0.997988 -0.051262 +vn -0.040451 0.997989 -0.048812 +vn -0.043438 0.997988 -0.046184 +vn -0.046252 0.997987 -0.043380 +vn -0.048884 0.997987 -0.040393 +vn -0.051324 0.997988 -0.037238 +vn -0.053560 0.997988 -0.033938 +vn -0.055586 0.997988 -0.030513 +vn -0.057392 0.997988 -0.026965 +vn -0.058971 0.997988 -0.023294 +vn -0.060318 0.997988 -0.019554 +vn -0.061427 0.997987 -0.015746 +vn -0.062293 0.997988 -0.011842 +vn -0.062913 0.997988 -0.007893 +vn -0.063286 0.997988 -0.003930 +vn -0.063408 0.997988 0.000043 +vn -0.063280 0.997988 0.004014 +vn -0.062902 0.997988 0.007987 +vn -0.062277 0.997988 0.011928 +vn -0.061405 0.997987 0.015823 +vn -0.060291 0.997987 0.019650 +vn -0.058939 0.997987 0.023393 +vn -0.057355 0.997987 0.027051 +vn -0.055544 0.997988 0.030591 +vn -0.053514 0.997988 0.034011 +vn -0.051273 0.997988 0.037303 +vn -0.048829 0.997988 0.040448 +vn -0.046193 0.997988 0.043437 +vn -0.043374 0.997988 0.046253 +vn -0.040384 0.997988 0.048880 +vn -0.037235 0.997988 0.051321 +vn -0.033939 0.997987 0.053566 +vn -0.030509 0.997987 0.055589 +vn -0.026958 0.997988 0.057393 +vn -0.023301 0.997988 0.058973 +vn -0.019553 0.997988 0.060316 +vn -0.015727 0.997988 0.061428 +vn -0.011839 0.997988 0.062295 +vn -0.007904 0.997988 0.062914 +vn -0.003938 0.997988 0.063285 +vn 0.000044 0.997988 0.063408 +vn 0.004025 0.997988 0.063282 +vn 0.007990 0.997988 0.062905 +vn 0.011924 0.997988 0.062279 +vn 0.015811 0.997988 0.061406 +vn 0.019635 0.997988 0.060291 +vn 0.023383 0.997988 0.058940 +vn 0.027037 0.997988 0.057357 +vn 0.030585 0.997988 0.055538 +vn 0.034012 0.997988 0.053512 +vn 0.037305 0.997988 0.051273 +vn 0.040451 0.997988 0.048819 +vn 0.043437 0.997988 0.046187 +vn 0.046252 0.997988 0.043373 +vn 0.048884 0.997988 0.040381 +vn 0.051324 0.997988 0.037232 +vn 0.053560 0.997988 0.033938 +vn 0.055586 0.997988 0.030508 +vn 0.057392 0.997987 0.026965 +vn 0.058971 0.997988 0.023300 +vn 0.060318 0.997988 0.019543 +vn 0.061427 0.997988 0.015728 +vn 0.062293 0.997988 0.011836 +vn 0.062913 0.997988 0.007893 +vn 0.063285 0.997988 0.003935 +vn 0.063408 0.997988 -0.000035 +vn 0.031960 0.999487 -0.002079 +vn 0.031769 0.999487 -0.004065 +vn 0.031453 0.999487 -0.006036 +vn 0.031012 0.999487 -0.007952 +vn 0.030449 0.999487 -0.009912 +vn 0.029766 0.999487 -0.011830 +vn 0.028965 0.999487 -0.013652 +vn 0.028050 0.999487 -0.015436 +vn 0.027024 0.999487 -0.017180 +vn 0.025892 0.999487 -0.018840 +vn 0.024658 0.999488 -0.020410 +vn 0.023326 0.999487 -0.021934 +vn 0.021902 0.999487 -0.023363 +vn 0.020392 0.999487 -0.024691 +vn 0.018801 0.999487 -0.025928 +vn 0.017136 0.999487 -0.027051 +vn 0.015403 0.999487 -0.028065 +vn 0.013610 0.999487 -0.028988 +vn 0.011762 0.999487 -0.029789 +vn 0.009869 0.999487 -0.030457 +vn 0.007936 0.999487 -0.031021 +vn 0.005973 0.999487 -0.031473 +vn 0.003985 0.999487 -0.031779 +vn 0.001982 0.999487 -0.031960 +vn -0.000029 0.999487 -0.032022 +vn -0.002040 0.999487 -0.031960 +vn -0.004043 0.999487 -0.031770 +vn -0.006029 0.999487 -0.031453 +vn -0.007992 0.999487 -0.031017 +vn -0.009924 0.999487 -0.030456 +vn -0.011816 0.999487 -0.029768 +vn -0.013662 0.999487 -0.028954 +vn -0.015454 0.999487 -0.028040 +vn -0.017185 0.999487 -0.027020 +vn -0.018847 0.999487 -0.025892 +vn -0.020436 0.999487 -0.024680 +vn -0.021944 0.999487 -0.023342 +vn -0.023365 0.999487 -0.021892 +vn -0.024695 0.999487 -0.020373 +vn -0.025926 0.999487 -0.018785 +vn -0.027055 0.999487 -0.017130 +vn -0.028078 0.999487 -0.015412 +vn -0.028990 0.999487 -0.013606 +vn -0.029787 0.999487 -0.011764 +vn -0.030467 0.999487 -0.009878 +vn -0.031027 0.999487 -0.007890 +vn -0.031464 0.999487 -0.005945 +vn -0.031777 0.999487 -0.004010 +vn -0.031964 0.999487 -0.001991 +vn -0.032025 0.999487 0.000054 +vn -0.031960 0.999487 0.002072 +vn -0.031769 0.999487 0.004068 +vn -0.031453 0.999487 0.006043 +vn -0.031012 0.999487 0.007981 +vn -0.030449 0.999487 0.009906 +vn -0.029766 0.999487 0.011794 +vn -0.028965 0.999487 0.013666 +vn -0.028050 0.999487 0.015462 +vn -0.027025 0.999487 0.017173 +vn -0.025892 0.999487 0.018852 +vn -0.024658 0.999487 0.020430 +vn -0.023326 0.999487 0.021934 +vn -0.021902 0.999487 0.023361 +vn -0.020391 0.999487 0.024686 +vn -0.018801 0.999487 0.025914 +vn -0.017136 0.999487 0.027059 +vn -0.015403 0.999487 0.028084 +vn -0.013610 0.999487 0.028991 +vn -0.011762 0.999487 0.029796 +vn -0.009869 0.999487 0.030471 +vn -0.007936 0.999487 0.031022 +vn -0.005973 0.999487 0.031460 +vn -0.003985 0.999487 0.031780 +vn -0.001982 0.999487 0.031968 +vn 0.000029 0.999487 0.032027 +vn 0.002040 0.999487 0.031959 +vn 0.004043 0.999487 0.031765 +vn 0.006029 0.999487 0.031459 +vn 0.007992 0.999487 0.031012 +vn 0.009924 0.999487 0.030438 +vn 0.011816 0.999487 0.029762 +vn 0.013662 0.999487 0.028957 +vn 0.015454 0.999487 0.028044 +vn 0.017185 0.999487 0.027018 +vn 0.018847 0.999487 0.025880 +vn 0.020436 0.999487 0.024662 +vn 0.021944 0.999487 0.023341 +vn 0.023365 0.999487 0.021905 +vn 0.024694 0.999487 0.020385 +vn 0.025926 0.999487 0.018798 +vn 0.027055 0.999487 0.017131 +vn 0.028078 0.999487 0.015405 +vn 0.028990 0.999487 0.013627 +vn 0.029787 0.999487 0.011764 +vn 0.030467 0.999487 0.009876 +vn 0.031026 0.999487 0.007943 +vn 0.031464 0.999487 0.005978 +vn 0.031777 0.999487 0.004003 +vn 0.031964 0.999487 0.002009 +vn 0.032025 0.999487 -0.000033 +vn -0.000000 -1.000000 0.000003 +vn -0.000000 1.000000 0.000002 +f 1/1/1 2/2/2 101/102/3 +f 101/102/3 2/2/2 102/103/4 +f 2/2/2 3/3/5 102/103/4 +f 102/103/4 3/3/5 103/104/6 +f 3/3/5 4/4/7 103/104/6 +f 103/104/6 4/4/7 104/105/8 +f 4/4/7 5/5/9 104/105/8 +f 104/105/8 5/5/9 105/106/10 +f 5/5/9 6/6/11 105/106/10 +f 105/106/10 6/6/11 106/107/12 +f 6/6/11 7/7/13 106/107/12 +f 106/107/12 7/7/13 107/108/14 +f 7/7/13 8/8/15 107/108/14 +f 107/108/14 8/8/15 108/109/16 +f 8/8/15 9/9/17 108/109/16 +f 108/109/16 9/9/17 109/110/18 +f 9/9/17 10/10/19 109/110/18 +f 109/110/18 10/10/19 110/111/20 +f 10/10/19 11/11/21 110/111/20 +f 110/111/20 11/11/21 111/112/22 +f 11/11/21 12/12/23 111/112/22 +f 111/112/22 12/12/23 112/113/24 +f 12/12/23 13/13/25 112/113/24 +f 112/113/24 13/13/25 113/114/26 +f 13/13/25 14/14/27 113/114/26 +f 113/114/26 14/14/27 114/115/28 +f 14/14/27 15/15/29 114/115/28 +f 114/115/28 15/15/29 115/116/30 +f 15/15/29 16/16/31 115/116/30 +f 115/116/30 16/16/31 116/117/32 +f 16/16/31 17/17/33 116/117/32 +f 116/117/32 17/17/33 117/118/34 +f 17/17/33 18/18/35 117/118/34 +f 117/118/34 18/18/35 118/119/36 +f 18/18/35 19/19/37 118/119/36 +f 118/119/36 19/19/37 119/120/38 +f 19/19/37 20/20/39 119/120/38 +f 119/120/38 20/20/39 120/121/40 +f 20/20/39 21/21/41 120/121/40 +f 120/121/40 21/21/41 121/122/42 +f 21/21/41 22/22/43 121/122/42 +f 121/122/42 22/22/43 122/123/44 +f 22/22/43 23/23/45 122/123/44 +f 122/123/44 23/23/45 123/124/46 +f 23/23/45 24/24/47 123/124/46 +f 123/124/46 24/24/47 124/125/48 +f 24/24/47 25/25/49 124/125/48 +f 124/125/48 25/25/49 125/126/50 +f 25/25/49 26/26/51 125/126/50 +f 125/126/50 26/26/51 126/127/52 +f 26/26/51 27/27/53 126/127/52 +f 126/127/52 27/27/53 127/128/54 +f 27/27/53 28/28/55 127/128/54 +f 127/128/54 28/28/55 128/129/56 +f 28/28/55 29/29/57 128/129/56 +f 128/129/56 29/29/57 129/130/58 +f 29/29/57 30/30/59 129/130/58 +f 129/130/58 30/30/59 130/131/60 +f 30/30/59 31/31/61 130/131/60 +f 130/131/60 31/31/61 131/132/62 +f 31/31/61 32/32/63 131/132/62 +f 131/132/62 32/32/63 132/133/64 +f 32/32/63 33/33/65 132/133/64 +f 132/133/64 33/33/65 133/134/66 +f 33/33/65 34/34/67 133/134/66 +f 133/134/66 34/34/67 134/135/68 +f 34/34/67 35/35/69 134/135/68 +f 134/135/68 35/35/69 135/136/70 +f 35/35/69 36/36/71 135/136/70 +f 135/136/70 36/36/71 136/137/72 +f 36/36/71 37/37/73 136/137/72 +f 136/137/72 37/37/73 137/138/74 +f 37/37/73 38/38/75 137/138/74 +f 137/138/74 38/38/75 138/139/76 +f 38/38/75 39/39/77 138/139/76 +f 138/139/76 39/39/77 139/140/78 +f 39/39/77 40/40/79 139/140/78 +f 139/140/78 40/40/79 140/141/80 +f 40/40/79 41/41/81 140/141/80 +f 140/141/80 41/41/81 141/142/82 +f 41/41/81 42/42/83 141/142/82 +f 141/142/82 42/42/83 142/143/84 +f 42/42/83 43/43/85 142/143/84 +f 142/143/84 43/43/85 143/144/86 +f 43/43/85 44/44/87 143/144/86 +f 143/144/86 44/44/87 144/145/88 +f 44/44/87 45/45/89 144/145/88 +f 144/145/88 45/45/89 145/146/90 +f 45/45/89 46/46/91 145/146/90 +f 145/146/90 46/46/91 146/147/92 +f 46/46/91 47/47/93 146/147/92 +f 146/147/92 47/47/93 147/148/94 +f 47/47/93 48/48/95 147/148/94 +f 147/148/94 48/48/95 148/149/96 +f 48/48/95 49/49/97 148/149/96 +f 148/149/96 49/49/97 149/150/98 +f 49/49/97 50/50/99 149/150/98 +f 149/150/98 50/50/99 150/151/100 +f 50/50/99 51/51/101 150/151/100 +f 150/151/100 51/51/101 151/152/102 +f 51/51/101 52/52/103 151/152/102 +f 151/152/102 52/52/103 152/153/104 +f 52/52/103 53/53/105 152/153/104 +f 152/153/104 53/53/105 153/154/106 +f 53/53/105 54/54/107 153/154/106 +f 153/154/106 54/54/107 154/155/108 +f 54/54/107 55/55/109 154/155/108 +f 154/155/108 55/55/109 155/156/110 +f 55/55/109 56/56/111 155/156/110 +f 155/156/110 56/56/111 156/157/112 +f 56/56/111 57/57/113 156/157/112 +f 156/157/112 57/57/113 157/158/114 +f 57/57/113 58/58/115 157/158/114 +f 157/158/114 58/58/115 158/159/116 +f 58/58/115 59/59/117 158/159/116 +f 158/159/116 59/59/117 159/160/118 +f 59/59/117 60/60/119 159/160/118 +f 159/160/118 60/60/119 160/161/120 +f 60/60/119 61/61/121 160/161/120 +f 160/161/120 61/61/121 161/162/122 +f 61/61/121 62/62/123 161/162/122 +f 161/162/122 62/62/123 162/163/124 +f 62/62/123 63/63/125 162/163/124 +f 162/163/124 63/63/125 163/164/126 +f 63/63/125 64/64/127 163/164/126 +f 163/164/126 64/64/127 164/165/128 +f 64/64/127 65/65/129 164/165/128 +f 164/165/128 65/65/129 165/166/130 +f 65/65/129 66/66/131 165/166/130 +f 165/166/130 66/66/131 166/167/132 +f 66/66/131 67/67/133 166/167/132 +f 166/167/132 67/67/133 167/168/134 +f 67/67/133 68/68/135 167/168/134 +f 167/168/134 68/68/135 168/169/136 +f 68/68/135 69/69/137 168/169/136 +f 168/169/136 69/69/137 169/170/138 +f 69/69/137 70/70/139 169/170/138 +f 169/170/138 70/70/139 170/171/140 +f 70/70/139 71/71/141 170/171/140 +f 170/171/140 71/71/141 171/172/142 +f 71/71/141 72/72/143 171/172/142 +f 171/172/142 72/72/143 172/173/144 +f 72/72/143 73/73/145 172/173/144 +f 172/173/144 73/73/145 173/174/146 +f 73/73/145 74/74/147 173/174/146 +f 173/174/146 74/74/147 174/175/148 +f 74/74/147 75/75/149 174/175/148 +f 174/175/148 75/75/149 175/176/150 +f 75/75/149 76/76/151 175/176/150 +f 175/176/150 76/76/151 176/177/152 +f 76/76/151 77/77/153 176/177/152 +f 176/177/152 77/77/153 177/178/154 +f 77/77/153 78/78/155 177/178/154 +f 177/178/154 78/78/155 178/179/156 +f 78/78/155 79/79/157 178/179/156 +f 178/179/156 79/79/157 179/180/158 +f 79/79/157 80/80/159 179/180/158 +f 179/180/158 80/80/159 180/181/160 +f 80/80/159 81/81/161 180/181/160 +f 180/181/160 81/81/161 181/182/162 +f 81/81/161 82/82/163 181/182/162 +f 181/182/162 82/82/163 182/183/164 +f 82/82/163 83/83/165 182/183/164 +f 182/183/164 83/83/165 183/184/166 +f 83/83/165 84/84/167 183/184/166 +f 183/184/166 84/84/167 184/185/168 +f 84/84/167 85/85/169 184/185/168 +f 184/185/168 85/85/169 185/186/170 +f 85/85/169 86/86/171 185/186/170 +f 185/186/170 86/86/171 186/187/172 +f 86/86/171 87/87/173 186/187/172 +f 186/187/172 87/87/173 187/188/174 +f 87/87/173 88/88/175 187/188/174 +f 187/188/174 88/88/175 188/189/176 +f 88/88/175 89/89/177 188/189/176 +f 188/189/176 89/89/177 189/190/178 +f 89/89/177 90/90/179 189/190/178 +f 189/190/178 90/90/179 190/191/180 +f 90/90/179 91/91/181 190/191/180 +f 190/191/180 91/91/181 191/192/182 +f 91/91/181 92/92/183 191/192/182 +f 191/192/182 92/92/183 192/193/184 +f 92/92/183 93/93/185 192/193/184 +f 192/193/184 93/93/185 193/194/186 +f 93/93/185 94/94/187 193/194/186 +f 193/194/186 94/94/187 194/195/188 +f 94/94/187 95/95/189 194/195/188 +f 194/195/188 95/95/189 195/196/190 +f 95/95/189 96/96/191 195/196/190 +f 195/196/190 96/96/191 196/197/192 +f 96/96/191 97/97/193 196/197/192 +f 196/197/192 97/97/193 197/198/194 +f 97/97/193 98/98/195 197/198/194 +f 197/198/194 98/98/195 198/199/196 +f 98/98/195 99/99/197 198/199/196 +f 198/199/196 99/99/197 199/200/198 +f 99/99/197 100/100/199 199/200/198 +f 199/200/198 100/100/199 200/201/200 +f 100/100/199 1/101/1 200/201/200 +f 200/201/200 1/101/1 101/202/3 +f 101/102/3 102/103/4 201/203/201 +f 201/203/201 102/103/4 202/204/202 +f 102/103/4 103/104/6 202/204/202 +f 202/204/202 103/104/6 203/205/203 +f 103/104/6 104/105/8 203/205/203 +f 203/205/203 104/105/8 204/206/204 +f 104/105/8 105/106/10 204/206/204 +f 204/206/204 105/106/10 205/207/205 +f 105/106/10 106/107/12 205/207/205 +f 205/207/205 106/107/12 206/208/206 +f 106/107/12 107/108/14 206/208/206 +f 206/208/206 107/108/14 207/209/207 +f 107/108/14 108/109/16 207/209/207 +f 207/209/207 108/109/16 208/210/208 +f 108/109/16 109/110/18 208/210/208 +f 208/210/208 109/110/18 209/211/209 +f 109/110/18 110/111/20 209/211/209 +f 209/211/209 110/111/20 210/212/210 +f 110/111/20 111/112/22 210/212/210 +f 210/212/210 111/112/22 211/213/211 +f 111/112/22 112/113/24 211/213/211 +f 211/213/211 112/113/24 212/214/212 +f 112/113/24 113/114/26 212/214/212 +f 212/214/212 113/114/26 213/215/213 +f 113/114/26 114/115/28 213/215/213 +f 213/215/213 114/115/28 214/216/214 +f 114/115/28 115/116/30 214/216/214 +f 214/216/214 115/116/30 215/217/215 +f 115/116/30 116/117/32 215/217/215 +f 215/217/215 116/117/32 216/218/216 +f 116/117/32 117/118/34 216/218/216 +f 216/218/216 117/118/34 217/219/217 +f 117/118/34 118/119/36 217/219/217 +f 217/219/217 118/119/36 218/220/218 +f 118/119/36 119/120/38 218/220/218 +f 218/220/218 119/120/38 219/221/219 +f 119/120/38 120/121/40 219/221/219 +f 219/221/219 120/121/40 220/222/220 +f 120/121/40 121/122/42 220/222/220 +f 220/222/220 121/122/42 221/223/221 +f 121/122/42 122/123/44 221/223/221 +f 221/223/221 122/123/44 222/224/222 +f 122/123/44 123/124/46 222/224/222 +f 222/224/222 123/124/46 223/225/223 +f 123/124/46 124/125/48 223/225/223 +f 223/225/223 124/125/48 224/226/224 +f 124/125/48 125/126/50 224/226/224 +f 224/226/224 125/126/50 225/227/225 +f 125/126/50 126/127/52 225/227/225 +f 225/227/225 126/127/52 226/228/226 +f 126/127/52 127/128/54 226/228/226 +f 226/228/226 127/128/54 227/229/227 +f 127/128/54 128/129/56 227/229/227 +f 227/229/227 128/129/56 228/230/228 +f 128/129/56 129/130/58 228/230/228 +f 228/230/228 129/130/58 229/231/229 +f 129/130/58 130/131/60 229/231/229 +f 229/231/229 130/131/60 230/232/230 +f 130/131/60 131/132/62 230/232/230 +f 230/232/230 131/132/62 231/233/231 +f 131/132/62 132/133/64 231/233/231 +f 231/233/231 132/133/64 232/234/232 +f 132/133/64 133/134/66 232/234/232 +f 232/234/232 133/134/66 233/235/233 +f 133/134/66 134/135/68 233/235/233 +f 233/235/233 134/135/68 234/236/234 +f 134/135/68 135/136/70 234/236/234 +f 234/236/234 135/136/70 235/237/235 +f 135/136/70 136/137/72 235/237/235 +f 235/237/235 136/137/72 236/238/236 +f 136/137/72 137/138/74 236/238/236 +f 236/238/236 137/138/74 237/239/237 +f 137/138/74 138/139/76 237/239/237 +f 237/239/237 138/139/76 238/240/238 +f 138/139/76 139/140/78 238/240/238 +f 238/240/238 139/140/78 239/241/239 +f 139/140/78 140/141/80 239/241/239 +f 239/241/239 140/141/80 240/242/240 +f 140/141/80 141/142/82 240/242/240 +f 240/242/240 141/142/82 241/243/241 +f 141/142/82 142/143/84 241/243/241 +f 241/243/241 142/143/84 242/244/242 +f 142/143/84 143/144/86 242/244/242 +f 242/244/242 143/144/86 243/245/243 +f 143/144/86 144/145/88 243/245/243 +f 243/245/243 144/145/88 244/246/244 +f 144/145/88 145/146/90 244/246/244 +f 244/246/244 145/146/90 245/247/245 +f 145/146/90 146/147/92 245/247/245 +f 245/247/245 146/147/92 246/248/246 +f 146/147/92 147/148/94 246/248/246 +f 246/248/246 147/148/94 247/249/247 +f 147/148/94 148/149/96 247/249/247 +f 247/249/247 148/149/96 248/250/248 +f 148/149/96 149/150/98 248/250/248 +f 248/250/248 149/150/98 249/251/249 +f 149/150/98 150/151/100 249/251/249 +f 249/251/249 150/151/100 250/252/250 +f 150/151/100 151/152/102 250/252/250 +f 250/252/250 151/152/102 251/253/251 +f 151/152/102 152/153/104 251/253/251 +f 251/253/251 152/153/104 252/254/252 +f 152/153/104 153/154/106 252/254/252 +f 252/254/252 153/154/106 253/255/253 +f 153/154/106 154/155/108 253/255/253 +f 253/255/253 154/155/108 254/256/254 +f 154/155/108 155/156/110 254/256/254 +f 254/256/254 155/156/110 255/257/255 +f 155/156/110 156/157/112 255/257/255 +f 255/257/255 156/157/112 256/258/256 +f 156/157/112 157/158/114 256/258/256 +f 256/258/256 157/158/114 257/259/257 +f 157/158/114 158/159/116 257/259/257 +f 257/259/257 158/159/116 258/260/258 +f 158/159/116 159/160/118 258/260/258 +f 258/260/258 159/160/118 259/261/259 +f 159/160/118 160/161/120 259/261/259 +f 259/261/259 160/161/120 260/262/260 +f 160/161/120 161/162/122 260/262/260 +f 260/262/260 161/162/122 261/263/261 +f 161/162/122 162/163/124 261/263/261 +f 261/263/261 162/163/124 262/264/262 +f 162/163/124 163/164/126 262/264/262 +f 262/264/262 163/164/126 263/265/263 +f 163/164/126 164/165/128 263/265/263 +f 263/265/263 164/165/128 264/266/264 +f 164/165/128 165/166/130 264/266/264 +f 264/266/264 165/166/130 265/267/265 +f 165/166/130 166/167/132 265/267/265 +f 265/267/265 166/167/132 266/268/266 +f 166/167/132 167/168/134 266/268/266 +f 266/268/266 167/168/134 267/269/267 +f 167/168/134 168/169/136 267/269/267 +f 267/269/267 168/169/136 268/270/268 +f 168/169/136 169/170/138 268/270/268 +f 268/270/268 169/170/138 269/271/269 +f 169/170/138 170/171/140 269/271/269 +f 269/271/269 170/171/140 270/272/270 +f 170/171/140 171/172/142 270/272/270 +f 270/272/270 171/172/142 271/273/271 +f 171/172/142 172/173/144 271/273/271 +f 271/273/271 172/173/144 272/274/272 +f 172/173/144 173/174/146 272/274/272 +f 272/274/272 173/174/146 273/275/273 +f 173/174/146 174/175/148 273/275/273 +f 273/275/273 174/175/148 274/276/274 +f 174/175/148 175/176/150 274/276/274 +f 274/276/274 175/176/150 275/277/275 +f 175/176/150 176/177/152 275/277/275 +f 275/277/275 176/177/152 276/278/276 +f 176/177/152 177/178/154 276/278/276 +f 276/278/276 177/178/154 277/279/277 +f 177/178/154 178/179/156 277/279/277 +f 277/279/277 178/179/156 278/280/278 +f 178/179/156 179/180/158 278/280/278 +f 278/280/278 179/180/158 279/281/279 +f 179/180/158 180/181/160 279/281/279 +f 279/281/279 180/181/160 280/282/280 +f 180/181/160 181/182/162 280/282/280 +f 280/282/280 181/182/162 281/283/281 +f 181/182/162 182/183/164 281/283/281 +f 281/283/281 182/183/164 282/284/282 +f 182/183/164 183/184/166 282/284/282 +f 282/284/282 183/184/166 283/285/283 +f 183/184/166 184/185/168 283/285/283 +f 283/285/283 184/185/168 284/286/284 +f 184/185/168 185/186/170 284/286/284 +f 284/286/284 185/186/170 285/287/285 +f 185/186/170 186/187/172 285/287/285 +f 285/287/285 186/187/172 286/288/286 +f 186/187/172 187/188/174 286/288/286 +f 286/288/286 187/188/174 287/289/287 +f 187/188/174 188/189/176 287/289/287 +f 287/289/287 188/189/176 288/290/288 +f 188/189/176 189/190/178 288/290/288 +f 288/290/288 189/190/178 289/291/289 +f 189/190/178 190/191/180 289/291/289 +f 289/291/289 190/191/180 290/292/290 +f 190/191/180 191/192/182 290/292/290 +f 290/292/290 191/192/182 291/293/291 +f 191/192/182 192/193/184 291/293/291 +f 291/293/291 192/193/184 292/294/292 +f 192/193/184 193/194/186 292/294/292 +f 292/294/292 193/194/186 293/295/293 +f 193/194/186 194/195/188 293/295/293 +f 293/295/293 194/195/188 294/296/294 +f 194/195/188 195/196/190 294/296/294 +f 294/296/294 195/196/190 295/297/295 +f 195/196/190 196/197/192 295/297/295 +f 295/297/295 196/197/192 296/298/296 +f 196/197/192 197/198/194 296/298/296 +f 296/298/296 197/198/194 297/299/297 +f 197/198/194 198/199/196 297/299/297 +f 297/299/297 198/199/196 298/300/298 +f 198/199/196 199/200/198 298/300/298 +f 298/300/298 199/200/198 299/301/299 +f 199/200/198 200/201/200 299/301/299 +f 299/301/299 200/201/200 300/302/300 +f 200/201/200 101/202/3 300/302/300 +f 300/302/300 101/202/3 201/303/201 +f 201/203/201 202/204/202 301/304/301 +f 301/304/301 202/204/202 302/305/302 +f 202/204/202 203/205/203 302/305/302 +f 302/305/302 203/205/203 303/306/303 +f 203/205/203 204/206/204 303/306/303 +f 303/306/303 204/206/204 304/307/304 +f 204/206/204 205/207/205 304/307/304 +f 304/307/304 205/207/205 305/308/305 +f 205/207/205 206/208/206 305/308/305 +f 305/308/305 206/208/206 306/309/306 +f 206/208/206 207/209/207 306/309/306 +f 306/309/306 207/209/207 307/310/307 +f 207/209/207 208/210/208 307/310/307 +f 307/310/307 208/210/208 308/311/308 +f 208/210/208 209/211/209 308/311/308 +f 308/311/308 209/211/209 309/312/309 +f 209/211/209 210/212/210 309/312/309 +f 309/312/309 210/212/210 310/313/310 +f 210/212/210 211/213/211 310/313/310 +f 310/313/310 211/213/211 311/314/311 +f 211/213/211 212/214/212 311/314/311 +f 311/314/311 212/214/212 312/315/312 +f 212/214/212 213/215/213 312/315/312 +f 312/315/312 213/215/213 313/316/313 +f 213/215/213 214/216/214 313/316/313 +f 313/316/313 214/216/214 314/317/314 +f 214/216/214 215/217/215 314/317/314 +f 314/317/314 215/217/215 315/318/315 +f 215/217/215 216/218/216 315/318/315 +f 315/318/315 216/218/216 316/319/316 +f 216/218/216 217/219/217 316/319/316 +f 316/319/316 217/219/217 317/320/317 +f 217/219/217 218/220/218 317/320/317 +f 317/320/317 218/220/218 318/321/318 +f 218/220/218 219/221/219 318/321/318 +f 318/321/318 219/221/219 319/322/319 +f 219/221/219 220/222/220 319/322/319 +f 319/322/319 220/222/220 320/323/320 +f 220/222/220 221/223/221 320/323/320 +f 320/323/320 221/223/221 321/324/321 +f 221/223/221 222/224/222 321/324/321 +f 321/324/321 222/224/222 322/325/322 +f 222/224/222 223/225/223 322/325/322 +f 322/325/322 223/225/223 323/326/323 +f 223/225/223 224/226/224 323/326/323 +f 323/326/323 224/226/224 324/327/324 +f 224/226/224 225/227/225 324/327/324 +f 324/327/324 225/227/225 325/328/325 +f 225/227/225 226/228/226 325/328/325 +f 325/328/325 226/228/226 326/329/326 +f 226/228/226 227/229/227 326/329/326 +f 326/329/326 227/229/227 327/330/327 +f 227/229/227 228/230/228 327/330/327 +f 327/330/327 228/230/228 328/331/328 +f 228/230/228 229/231/229 328/331/328 +f 328/331/328 229/231/229 329/332/329 +f 229/231/229 230/232/230 329/332/329 +f 329/332/329 230/232/230 330/333/330 +f 230/232/230 231/233/231 330/333/330 +f 330/333/330 231/233/231 331/334/331 +f 231/233/231 232/234/232 331/334/331 +f 331/334/331 232/234/232 332/335/332 +f 232/234/232 233/235/233 332/335/332 +f 332/335/332 233/235/233 333/336/333 +f 233/235/233 234/236/234 333/336/333 +f 333/336/333 234/236/234 334/337/334 +f 234/236/234 235/237/235 334/337/334 +f 334/337/334 235/237/235 335/338/335 +f 235/237/235 236/238/236 335/338/335 +f 335/338/335 236/238/236 336/339/336 +f 236/238/236 237/239/237 336/339/336 +f 336/339/336 237/239/237 337/340/337 +f 237/239/237 238/240/238 337/340/337 +f 337/340/337 238/240/238 338/341/338 +f 238/240/238 239/241/239 338/341/338 +f 338/341/338 239/241/239 339/342/339 +f 239/241/239 240/242/240 339/342/339 +f 339/342/339 240/242/240 340/343/340 +f 240/242/240 241/243/241 340/343/340 +f 340/343/340 241/243/241 341/344/341 +f 241/243/241 242/244/242 341/344/341 +f 341/344/341 242/244/242 342/345/342 +f 242/244/242 243/245/243 342/345/342 +f 342/345/342 243/245/243 343/346/343 +f 243/245/243 244/246/244 343/346/343 +f 343/346/343 244/246/244 344/347/344 +f 244/246/244 245/247/245 344/347/344 +f 344/347/344 245/247/245 345/348/345 +f 245/247/245 246/248/246 345/348/345 +f 345/348/345 246/248/246 346/349/346 +f 246/248/246 247/249/247 346/349/346 +f 346/349/346 247/249/247 347/350/347 +f 247/249/247 248/250/248 347/350/347 +f 347/350/347 248/250/248 348/351/348 +f 248/250/248 249/251/249 348/351/348 +f 348/351/348 249/251/249 349/352/349 +f 249/251/249 250/252/250 349/352/349 +f 349/352/349 250/252/250 350/353/350 +f 250/252/250 251/253/251 350/353/350 +f 350/353/350 251/253/251 351/354/351 +f 251/253/251 252/254/252 351/354/351 +f 351/354/351 252/254/252 352/355/352 +f 252/254/252 253/255/253 352/355/352 +f 352/355/352 253/255/253 353/356/353 +f 253/255/253 254/256/254 353/356/353 +f 353/356/353 254/256/254 354/357/354 +f 254/256/254 255/257/255 354/357/354 +f 354/357/354 255/257/255 355/358/355 +f 255/257/255 256/258/256 355/358/355 +f 355/358/355 256/258/256 356/359/356 +f 256/258/256 257/259/257 356/359/356 +f 356/359/356 257/259/257 357/360/357 +f 257/259/257 258/260/258 357/360/357 +f 357/360/357 258/260/258 358/361/358 +f 258/260/258 259/261/259 358/361/358 +f 358/361/358 259/261/259 359/362/359 +f 259/261/259 260/262/260 359/362/359 +f 359/362/359 260/262/260 360/363/360 +f 260/262/260 261/263/261 360/363/360 +f 360/363/360 261/263/261 361/364/361 +f 261/263/261 262/264/262 361/364/361 +f 361/364/361 262/264/262 362/365/362 +f 262/264/262 263/265/263 362/365/362 +f 362/365/362 263/265/263 363/366/363 +f 263/265/263 264/266/264 363/366/363 +f 363/366/363 264/266/264 364/367/364 +f 264/266/264 265/267/265 364/367/364 +f 364/367/364 265/267/265 365/368/365 +f 265/267/265 266/268/266 365/368/365 +f 365/368/365 266/268/266 366/369/366 +f 266/268/266 267/269/267 366/369/366 +f 366/369/366 267/269/267 367/370/367 +f 267/269/267 268/270/268 367/370/367 +f 367/370/367 268/270/268 368/371/368 +f 268/270/268 269/271/269 368/371/368 +f 368/371/368 269/271/269 369/372/369 +f 269/271/269 270/272/270 369/372/369 +f 369/372/369 270/272/270 370/373/370 +f 270/272/270 271/273/271 370/373/370 +f 370/373/370 271/273/271 371/374/371 +f 271/273/271 272/274/272 371/374/371 +f 371/374/371 272/274/272 372/375/372 +f 272/274/272 273/275/273 372/375/372 +f 372/375/372 273/275/273 373/376/373 +f 273/275/273 274/276/274 373/376/373 +f 373/376/373 274/276/274 374/377/374 +f 274/276/274 275/277/275 374/377/374 +f 374/377/374 275/277/275 375/378/375 +f 275/277/275 276/278/276 375/378/375 +f 375/378/375 276/278/276 376/379/376 +f 276/278/276 277/279/277 376/379/376 +f 376/379/376 277/279/277 377/380/377 +f 277/279/277 278/280/278 377/380/377 +f 377/380/377 278/280/278 378/381/378 +f 278/280/278 279/281/279 378/381/378 +f 378/381/378 279/281/279 379/382/379 +f 279/281/279 280/282/280 379/382/379 +f 379/382/379 280/282/280 380/383/380 +f 280/282/280 281/283/281 380/383/380 +f 380/383/380 281/283/281 381/384/381 +f 281/283/281 282/284/282 381/384/381 +f 381/384/381 282/284/282 382/385/382 +f 282/284/282 283/285/283 382/385/382 +f 382/385/382 283/285/283 383/386/383 +f 283/285/283 284/286/284 383/386/383 +f 383/386/383 284/286/284 384/387/384 +f 284/286/284 285/287/285 384/387/384 +f 384/387/384 285/287/285 385/388/385 +f 285/287/285 286/288/286 385/388/385 +f 385/388/385 286/288/286 386/389/386 +f 286/288/286 287/289/287 386/389/386 +f 386/389/386 287/289/287 387/390/387 +f 287/289/287 288/290/288 387/390/387 +f 387/390/387 288/290/288 388/391/388 +f 288/290/288 289/291/289 388/391/388 +f 388/391/388 289/291/289 389/392/389 +f 289/291/289 290/292/290 389/392/389 +f 389/392/389 290/292/290 390/393/390 +f 290/292/290 291/293/291 390/393/390 +f 390/393/390 291/293/291 391/394/391 +f 291/293/291 292/294/292 391/394/391 +f 391/394/391 292/294/292 392/395/392 +f 292/294/292 293/295/293 392/395/392 +f 392/395/392 293/295/293 393/396/393 +f 293/295/293 294/296/294 393/396/393 +f 393/396/393 294/296/294 394/397/394 +f 294/296/294 295/297/295 394/397/394 +f 394/397/394 295/297/295 395/398/395 +f 295/297/295 296/298/296 395/398/395 +f 395/398/395 296/298/296 396/399/396 +f 296/298/296 297/299/297 396/399/396 +f 396/399/396 297/299/297 397/400/397 +f 297/299/297 298/300/298 397/400/397 +f 397/400/397 298/300/298 398/401/398 +f 298/300/298 299/301/299 398/401/398 +f 398/401/398 299/301/299 399/402/399 +f 299/301/299 300/302/300 399/402/399 +f 399/402/399 300/302/300 400/403/400 +f 300/302/300 201/303/201 400/403/400 +f 400/403/400 201/303/201 301/404/301 +f 301/304/301 302/305/302 401/405/401 +f 401/405/401 302/305/302 402/406/402 +f 302/305/302 303/306/303 402/406/402 +f 402/406/402 303/306/303 403/407/403 +f 303/306/303 304/307/304 403/407/403 +f 403/407/403 304/307/304 404/408/404 +f 304/307/304 305/308/305 404/408/404 +f 404/408/404 305/308/305 405/409/405 +f 305/308/305 306/309/306 405/409/405 +f 405/409/405 306/309/306 406/410/406 +f 306/309/306 307/310/307 406/410/406 +f 406/410/406 307/310/307 407/411/407 +f 307/310/307 308/311/308 407/411/407 +f 407/411/407 308/311/308 408/412/408 +f 308/311/308 309/312/309 408/412/408 +f 408/412/408 309/312/309 409/413/409 +f 309/312/309 310/313/310 409/413/409 +f 409/413/409 310/313/310 410/414/410 +f 310/313/310 311/314/311 410/414/410 +f 410/414/410 311/314/311 411/415/411 +f 311/314/311 312/315/312 411/415/411 +f 411/415/411 312/315/312 412/416/412 +f 312/315/312 313/316/313 412/416/412 +f 412/416/412 313/316/313 413/417/413 +f 313/316/313 314/317/314 413/417/413 +f 413/417/413 314/317/314 414/418/414 +f 314/317/314 315/318/315 414/418/414 +f 414/418/414 315/318/315 415/419/415 +f 315/318/315 316/319/316 415/419/415 +f 415/419/415 316/319/316 416/420/416 +f 316/319/316 317/320/317 416/420/416 +f 416/420/416 317/320/317 417/421/417 +f 317/320/317 318/321/318 417/421/417 +f 417/421/417 318/321/318 418/422/418 +f 318/321/318 319/322/319 418/422/418 +f 418/422/418 319/322/319 419/423/419 +f 319/322/319 320/323/320 419/423/419 +f 419/423/419 320/323/320 420/424/420 +f 320/323/320 321/324/321 420/424/420 +f 420/424/420 321/324/321 421/425/421 +f 321/324/321 322/325/322 421/425/421 +f 421/425/421 322/325/322 422/426/422 +f 322/325/322 323/326/323 422/426/422 +f 422/426/422 323/326/323 423/427/423 +f 323/326/323 324/327/324 423/427/423 +f 423/427/423 324/327/324 424/428/424 +f 324/327/324 325/328/325 424/428/424 +f 424/428/424 325/328/325 425/429/425 +f 325/328/325 326/329/326 425/429/425 +f 425/429/425 326/329/326 426/430/426 +f 326/329/326 327/330/327 426/430/426 +f 426/430/426 327/330/327 427/431/427 +f 327/330/327 328/331/328 427/431/427 +f 427/431/427 328/331/328 428/432/428 +f 328/331/328 329/332/329 428/432/428 +f 428/432/428 329/332/329 429/433/429 +f 329/332/329 330/333/330 429/433/429 +f 429/433/429 330/333/330 430/434/430 +f 330/333/330 331/334/331 430/434/430 +f 430/434/430 331/334/331 431/435/431 +f 331/334/331 332/335/332 431/435/431 +f 431/435/431 332/335/332 432/436/432 +f 332/335/332 333/336/333 432/436/432 +f 432/436/432 333/336/333 433/437/433 +f 333/336/333 334/337/334 433/437/433 +f 433/437/433 334/337/334 434/438/434 +f 334/337/334 335/338/335 434/438/434 +f 434/438/434 335/338/335 435/439/435 +f 335/338/335 336/339/336 435/439/435 +f 435/439/435 336/339/336 436/440/436 +f 336/339/336 337/340/337 436/440/436 +f 436/440/436 337/340/337 437/441/437 +f 337/340/337 338/341/338 437/441/437 +f 437/441/437 338/341/338 438/442/438 +f 338/341/338 339/342/339 438/442/438 +f 438/442/438 339/342/339 439/443/439 +f 339/342/339 340/343/340 439/443/439 +f 439/443/439 340/343/340 440/444/440 +f 340/343/340 341/344/341 440/444/440 +f 440/444/440 341/344/341 441/445/441 +f 341/344/341 342/345/342 441/445/441 +f 441/445/441 342/345/342 442/446/442 +f 342/345/342 343/346/343 442/446/442 +f 442/446/442 343/346/343 443/447/443 +f 343/346/343 344/347/344 443/447/443 +f 443/447/443 344/347/344 444/448/444 +f 344/347/344 345/348/345 444/448/444 +f 444/448/444 345/348/345 445/449/445 +f 345/348/345 346/349/346 445/449/445 +f 445/449/445 346/349/346 446/450/446 +f 346/349/346 347/350/347 446/450/446 +f 446/450/446 347/350/347 447/451/447 +f 347/350/347 348/351/348 447/451/447 +f 447/451/447 348/351/348 448/452/448 +f 348/351/348 349/352/349 448/452/448 +f 448/452/448 349/352/349 449/453/449 +f 349/352/349 350/353/350 449/453/449 +f 449/453/449 350/353/350 450/454/450 +f 350/353/350 351/354/351 450/454/450 +f 450/454/450 351/354/351 451/455/451 +f 351/354/351 352/355/352 451/455/451 +f 451/455/451 352/355/352 452/456/452 +f 352/355/352 353/356/353 452/456/452 +f 452/456/452 353/356/353 453/457/453 +f 353/356/353 354/357/354 453/457/453 +f 453/457/453 354/357/354 454/458/454 +f 354/357/354 355/358/355 454/458/454 +f 454/458/454 355/358/355 455/459/455 +f 355/358/355 356/359/356 455/459/455 +f 455/459/455 356/359/356 456/460/456 +f 356/359/356 357/360/357 456/460/456 +f 456/460/456 357/360/357 457/461/457 +f 357/360/357 358/361/358 457/461/457 +f 457/461/457 358/361/358 458/462/458 +f 358/361/358 359/362/359 458/462/458 +f 458/462/458 359/362/359 459/463/459 +f 359/362/359 360/363/360 459/463/459 +f 459/463/459 360/363/360 460/464/460 +f 360/363/360 361/364/361 460/464/460 +f 460/464/460 361/364/361 461/465/461 +f 361/364/361 362/365/362 461/465/461 +f 461/465/461 362/365/362 462/466/462 +f 362/365/362 363/366/363 462/466/462 +f 462/466/462 363/366/363 463/467/463 +f 363/366/363 364/367/364 463/467/463 +f 463/467/463 364/367/364 464/468/464 +f 364/367/364 365/368/365 464/468/464 +f 464/468/464 365/368/365 465/469/465 +f 365/368/365 366/369/366 465/469/465 +f 465/469/465 366/369/366 466/470/466 +f 366/369/366 367/370/367 466/470/466 +f 466/470/466 367/370/367 467/471/467 +f 367/370/367 368/371/368 467/471/467 +f 467/471/467 368/371/368 468/472/468 +f 368/371/368 369/372/369 468/472/468 +f 468/472/468 369/372/369 469/473/469 +f 369/372/369 370/373/370 469/473/469 +f 469/473/469 370/373/370 470/474/470 +f 370/373/370 371/374/371 470/474/470 +f 470/474/470 371/374/371 471/475/471 +f 371/374/371 372/375/372 471/475/471 +f 471/475/471 372/375/372 472/476/472 +f 372/375/372 373/376/373 472/476/472 +f 472/476/472 373/376/373 473/477/473 +f 373/376/373 374/377/374 473/477/473 +f 473/477/473 374/377/374 474/478/474 +f 374/377/374 375/378/375 474/478/474 +f 474/478/474 375/378/375 475/479/475 +f 375/378/375 376/379/376 475/479/475 +f 475/479/475 376/379/376 476/480/476 +f 376/379/376 377/380/377 476/480/476 +f 476/480/476 377/380/377 477/481/477 +f 377/380/377 378/381/378 477/481/477 +f 477/481/477 378/381/378 478/482/478 +f 378/381/378 379/382/379 478/482/478 +f 478/482/478 379/382/379 479/483/479 +f 379/382/379 380/383/380 479/483/479 +f 479/483/479 380/383/380 480/484/480 +f 380/383/380 381/384/381 480/484/480 +f 480/484/480 381/384/381 481/485/481 +f 381/384/381 382/385/382 481/485/481 +f 481/485/481 382/385/382 482/486/482 +f 382/385/382 383/386/383 482/486/482 +f 482/486/482 383/386/383 483/487/483 +f 383/386/383 384/387/384 483/487/483 +f 483/487/483 384/387/384 484/488/484 +f 384/387/384 385/388/385 484/488/484 +f 484/488/484 385/388/385 485/489/485 +f 385/388/385 386/389/386 485/489/485 +f 485/489/485 386/389/386 486/490/486 +f 386/389/386 387/390/387 486/490/486 +f 486/490/486 387/390/387 487/491/487 +f 387/390/387 388/391/388 487/491/487 +f 487/491/487 388/391/388 488/492/488 +f 388/391/388 389/392/389 488/492/488 +f 488/492/488 389/392/389 489/493/489 +f 389/392/389 390/393/390 489/493/489 +f 489/493/489 390/393/390 490/494/490 +f 390/393/390 391/394/391 490/494/490 +f 490/494/490 391/394/391 491/495/491 +f 391/394/391 392/395/392 491/495/491 +f 491/495/491 392/395/392 492/496/492 +f 392/395/392 393/396/393 492/496/492 +f 492/496/492 393/396/393 493/497/493 +f 393/396/393 394/397/394 493/497/493 +f 493/497/493 394/397/394 494/498/494 +f 394/397/394 395/398/395 494/498/494 +f 494/498/494 395/398/395 495/499/495 +f 395/398/395 396/399/396 495/499/495 +f 495/499/495 396/399/396 496/500/496 +f 396/399/396 397/400/397 496/500/496 +f 496/500/496 397/400/397 497/501/497 +f 397/400/397 398/401/398 497/501/497 +f 497/501/497 398/401/398 498/502/498 +f 398/401/398 399/402/399 498/502/498 +f 498/502/498 399/402/399 499/503/499 +f 399/402/399 400/403/400 499/503/499 +f 499/503/499 400/403/400 500/504/500 +f 400/403/400 301/404/301 500/504/500 +f 500/504/500 301/404/301 401/505/401 +f 401/405/401 402/406/402 501/506/501 +f 501/506/501 402/406/402 502/507/502 +f 402/406/402 403/407/403 502/507/502 +f 502/507/502 403/407/403 503/508/503 +f 403/407/403 404/408/404 503/508/503 +f 503/508/503 404/408/404 504/509/504 +f 404/408/404 405/409/405 504/509/504 +f 504/509/504 405/409/405 505/510/505 +f 405/409/405 406/410/406 505/510/505 +f 505/510/505 406/410/406 506/511/506 +f 406/410/406 407/411/407 506/511/506 +f 506/511/506 407/411/407 507/512/507 +f 407/411/407 408/412/408 507/512/507 +f 507/512/507 408/412/408 508/513/508 +f 408/412/408 409/413/409 508/513/508 +f 508/513/508 409/413/409 509/514/509 +f 409/413/409 410/414/410 509/514/509 +f 509/514/509 410/414/410 510/515/510 +f 410/414/410 411/415/411 510/515/510 +f 510/515/510 411/415/411 511/516/511 +f 411/415/411 412/416/412 511/516/511 +f 511/516/511 412/416/412 512/517/512 +f 412/416/412 413/417/413 512/517/512 +f 512/517/512 413/417/413 513/518/513 +f 413/417/413 414/418/414 513/518/513 +f 513/518/513 414/418/414 514/519/514 +f 414/418/414 415/419/415 514/519/514 +f 514/519/514 415/419/415 515/520/515 +f 415/419/415 416/420/416 515/520/515 +f 515/520/515 416/420/416 516/521/516 +f 416/420/416 417/421/417 516/521/516 +f 516/521/516 417/421/417 517/522/517 +f 417/421/417 418/422/418 517/522/517 +f 517/522/517 418/422/418 518/523/518 +f 418/422/418 419/423/419 518/523/518 +f 518/523/518 419/423/419 519/524/519 +f 419/423/419 420/424/420 519/524/519 +f 519/524/519 420/424/420 520/525/520 +f 420/424/420 421/425/421 520/525/520 +f 520/525/520 421/425/421 521/526/521 +f 421/425/421 422/426/422 521/526/521 +f 521/526/521 422/426/422 522/527/522 +f 422/426/422 423/427/423 522/527/522 +f 522/527/522 423/427/423 523/528/523 +f 423/427/423 424/428/424 523/528/523 +f 523/528/523 424/428/424 524/529/524 +f 424/428/424 425/429/425 524/529/524 +f 524/529/524 425/429/425 525/530/525 +f 425/429/425 426/430/426 525/530/525 +f 525/530/525 426/430/426 526/531/526 +f 426/430/426 427/431/427 526/531/526 +f 526/531/526 427/431/427 527/532/527 +f 427/431/427 428/432/428 527/532/527 +f 527/532/527 428/432/428 528/533/528 +f 428/432/428 429/433/429 528/533/528 +f 528/533/528 429/433/429 529/534/529 +f 429/433/429 430/434/430 529/534/529 +f 529/534/529 430/434/430 530/535/530 +f 430/434/430 431/435/431 530/535/530 +f 530/535/530 431/435/431 531/536/531 +f 431/435/431 432/436/432 531/536/531 +f 531/536/531 432/436/432 532/537/532 +f 432/436/432 433/437/433 532/537/532 +f 532/537/532 433/437/433 533/538/533 +f 433/437/433 434/438/434 533/538/533 +f 533/538/533 434/438/434 534/539/534 +f 434/438/434 435/439/435 534/539/534 +f 534/539/534 435/439/435 535/540/535 +f 435/439/435 436/440/436 535/540/535 +f 535/540/535 436/440/436 536/541/536 +f 436/440/436 437/441/437 536/541/536 +f 536/541/536 437/441/437 537/542/537 +f 437/441/437 438/442/438 537/542/537 +f 537/542/537 438/442/438 538/543/538 +f 438/442/438 439/443/439 538/543/538 +f 538/543/538 439/443/439 539/544/539 +f 439/443/439 440/444/440 539/544/539 +f 539/544/539 440/444/440 540/545/540 +f 440/444/440 441/445/441 540/545/540 +f 540/545/540 441/445/441 541/546/541 +f 441/445/441 442/446/442 541/546/541 +f 541/546/541 442/446/442 542/547/542 +f 442/446/442 443/447/443 542/547/542 +f 542/547/542 443/447/443 543/548/543 +f 443/447/443 444/448/444 543/548/543 +f 543/548/543 444/448/444 544/549/544 +f 444/448/444 445/449/445 544/549/544 +f 544/549/544 445/449/445 545/550/545 +f 445/449/445 446/450/446 545/550/545 +f 545/550/545 446/450/446 546/551/546 +f 446/450/446 447/451/447 546/551/546 +f 546/551/546 447/451/447 547/552/547 +f 447/451/447 448/452/448 547/552/547 +f 547/552/547 448/452/448 548/553/548 +f 448/452/448 449/453/449 548/553/548 +f 548/553/548 449/453/449 549/554/549 +f 449/453/449 450/454/450 549/554/549 +f 549/554/549 450/454/450 550/555/550 +f 450/454/450 451/455/451 550/555/550 +f 550/555/550 451/455/451 551/556/551 +f 451/455/451 452/456/452 551/556/551 +f 551/556/551 452/456/452 552/557/552 +f 452/456/452 453/457/453 552/557/552 +f 552/557/552 453/457/453 553/558/553 +f 453/457/453 454/458/454 553/558/553 +f 553/558/553 454/458/454 554/559/554 +f 454/458/454 455/459/455 554/559/554 +f 554/559/554 455/459/455 555/560/555 +f 455/459/455 456/460/456 555/560/555 +f 555/560/555 456/460/456 556/561/556 +f 456/460/456 457/461/457 556/561/556 +f 556/561/556 457/461/457 557/562/557 +f 457/461/457 458/462/458 557/562/557 +f 557/562/557 458/462/458 558/563/558 +f 458/462/458 459/463/459 558/563/558 +f 558/563/558 459/463/459 559/564/559 +f 459/463/459 460/464/460 559/564/559 +f 559/564/559 460/464/460 560/565/560 +f 460/464/460 461/465/461 560/565/560 +f 560/565/560 461/465/461 561/566/561 +f 461/465/461 462/466/462 561/566/561 +f 561/566/561 462/466/462 562/567/562 +f 462/466/462 463/467/463 562/567/562 +f 562/567/562 463/467/463 563/568/563 +f 463/467/463 464/468/464 563/568/563 +f 563/568/563 464/468/464 564/569/564 +f 464/468/464 465/469/465 564/569/564 +f 564/569/564 465/469/465 565/570/565 +f 465/469/465 466/470/466 565/570/565 +f 565/570/565 466/470/466 566/571/566 +f 466/470/466 467/471/467 566/571/566 +f 566/571/566 467/471/467 567/572/567 +f 467/471/467 468/472/468 567/572/567 +f 567/572/567 468/472/468 568/573/568 +f 468/472/468 469/473/469 568/573/568 +f 568/573/568 469/473/469 569/574/569 +f 469/473/469 470/474/470 569/574/569 +f 569/574/569 470/474/470 570/575/570 +f 470/474/470 471/475/471 570/575/570 +f 570/575/570 471/475/471 571/576/571 +f 471/475/471 472/476/472 571/576/571 +f 571/576/571 472/476/472 572/577/572 +f 472/476/472 473/477/473 572/577/572 +f 572/577/572 473/477/473 573/578/573 +f 473/477/473 474/478/474 573/578/573 +f 573/578/573 474/478/474 574/579/574 +f 474/478/474 475/479/475 574/579/574 +f 574/579/574 475/479/475 575/580/575 +f 475/479/475 476/480/476 575/580/575 +f 575/580/575 476/480/476 576/581/576 +f 476/480/476 477/481/477 576/581/576 +f 576/581/576 477/481/477 577/582/577 +f 477/481/477 478/482/478 577/582/577 +f 577/582/577 478/482/478 578/583/578 +f 478/482/478 479/483/479 578/583/578 +f 578/583/578 479/483/479 579/584/579 +f 479/483/479 480/484/480 579/584/579 +f 579/584/579 480/484/480 580/585/580 +f 480/484/480 481/485/481 580/585/580 +f 580/585/580 481/485/481 581/586/581 +f 481/485/481 482/486/482 581/586/581 +f 581/586/581 482/486/482 582/587/582 +f 482/486/482 483/487/483 582/587/582 +f 582/587/582 483/487/483 583/588/583 +f 483/487/483 484/488/484 583/588/583 +f 583/588/583 484/488/484 584/589/584 +f 484/488/484 485/489/485 584/589/584 +f 584/589/584 485/489/485 585/590/585 +f 485/489/485 486/490/486 585/590/585 +f 585/590/585 486/490/486 586/591/586 +f 486/490/486 487/491/487 586/591/586 +f 586/591/586 487/491/487 587/592/587 +f 487/491/487 488/492/488 587/592/587 +f 587/592/587 488/492/488 588/593/588 +f 488/492/488 489/493/489 588/593/588 +f 588/593/588 489/493/489 589/594/589 +f 489/493/489 490/494/490 589/594/589 +f 589/594/589 490/494/490 590/595/590 +f 490/494/490 491/495/491 590/595/590 +f 590/595/590 491/495/491 591/596/591 +f 491/495/491 492/496/492 591/596/591 +f 591/596/591 492/496/492 592/597/592 +f 492/496/492 493/497/493 592/597/592 +f 592/597/592 493/497/493 593/598/593 +f 493/497/493 494/498/494 593/598/593 +f 593/598/593 494/498/494 594/599/594 +f 494/498/494 495/499/495 594/599/594 +f 594/599/594 495/499/495 595/600/595 +f 495/499/495 496/500/496 595/600/595 +f 595/600/595 496/500/496 596/601/596 +f 496/500/496 497/501/497 596/601/596 +f 596/601/596 497/501/497 597/602/597 +f 497/501/497 498/502/498 597/602/597 +f 597/602/597 498/502/498 598/603/598 +f 498/502/498 499/503/499 598/603/598 +f 598/603/598 499/503/499 599/604/599 +f 499/503/499 500/504/500 599/604/599 +f 599/604/599 500/504/500 600/605/600 +f 500/504/500 401/505/401 600/605/600 +f 600/605/600 401/505/401 501/606/501 +f 501/506/501 502/507/502 601/607/601 +f 601/607/601 502/507/502 602/608/602 +f 502/507/502 503/508/503 602/608/602 +f 602/608/602 503/508/503 603/609/603 +f 503/508/503 504/509/504 603/609/603 +f 603/609/603 504/509/504 604/610/604 +f 504/509/504 505/510/505 604/610/604 +f 604/610/604 505/510/505 605/611/605 +f 505/510/505 506/511/506 605/611/605 +f 605/611/605 506/511/506 606/612/606 +f 506/511/506 507/512/507 606/612/606 +f 606/612/606 507/512/507 607/613/607 +f 507/512/507 508/513/508 607/613/607 +f 607/613/607 508/513/508 608/614/608 +f 508/513/508 509/514/509 608/614/608 +f 608/614/608 509/514/509 609/615/609 +f 509/514/509 510/515/510 609/615/609 +f 609/615/609 510/515/510 610/616/610 +f 510/515/510 511/516/511 610/616/610 +f 610/616/610 511/516/511 611/617/611 +f 511/516/511 512/517/512 611/617/611 +f 611/617/611 512/517/512 612/618/612 +f 512/517/512 513/518/513 612/618/612 +f 612/618/612 513/518/513 613/619/613 +f 513/518/513 514/519/514 613/619/613 +f 613/619/613 514/519/514 614/620/614 +f 514/519/514 515/520/515 614/620/614 +f 614/620/614 515/520/515 615/621/615 +f 515/520/515 516/521/516 615/621/615 +f 615/621/615 516/521/516 616/622/616 +f 516/521/516 517/522/517 616/622/616 +f 616/622/616 517/522/517 617/623/617 +f 517/522/517 518/523/518 617/623/617 +f 617/623/617 518/523/518 618/624/618 +f 518/523/518 519/524/519 618/624/618 +f 618/624/618 519/524/519 619/625/619 +f 519/524/519 520/525/520 619/625/619 +f 619/625/619 520/525/520 620/626/620 +f 520/525/520 521/526/521 620/626/620 +f 620/626/620 521/526/521 621/627/621 +f 521/526/521 522/527/522 621/627/621 +f 621/627/621 522/527/522 622/628/622 +f 522/527/522 523/528/523 622/628/622 +f 622/628/622 523/528/523 623/629/623 +f 523/528/523 524/529/524 623/629/623 +f 623/629/623 524/529/524 624/630/624 +f 524/529/524 525/530/525 624/630/624 +f 624/630/624 525/530/525 625/631/625 +f 525/530/525 526/531/526 625/631/625 +f 625/631/625 526/531/526 626/632/626 +f 526/531/526 527/532/527 626/632/626 +f 626/632/626 527/532/527 627/633/627 +f 527/532/527 528/533/528 627/633/627 +f 627/633/627 528/533/528 628/634/628 +f 528/533/528 529/534/529 628/634/628 +f 628/634/628 529/534/529 629/635/629 +f 529/534/529 530/535/530 629/635/629 +f 629/635/629 530/535/530 630/636/630 +f 530/535/530 531/536/531 630/636/630 +f 630/636/630 531/536/531 631/637/631 +f 531/536/531 532/537/532 631/637/631 +f 631/637/631 532/537/532 632/638/632 +f 532/537/532 533/538/533 632/638/632 +f 632/638/632 533/538/533 633/639/633 +f 533/538/533 534/539/534 633/639/633 +f 633/639/633 534/539/534 634/640/634 +f 534/539/534 535/540/535 634/640/634 +f 634/640/634 535/540/535 635/641/635 +f 535/540/535 536/541/536 635/641/635 +f 635/641/635 536/541/536 636/642/636 +f 536/541/536 537/542/537 636/642/636 +f 636/642/636 537/542/537 637/643/637 +f 537/542/537 538/543/538 637/643/637 +f 637/643/637 538/543/538 638/644/638 +f 538/543/538 539/544/539 638/644/638 +f 638/644/638 539/544/539 639/645/639 +f 539/544/539 540/545/540 639/645/639 +f 639/645/639 540/545/540 640/646/640 +f 540/545/540 541/546/541 640/646/640 +f 640/646/640 541/546/541 641/647/641 +f 541/546/541 542/547/542 641/647/641 +f 641/647/641 542/547/542 642/648/642 +f 542/547/542 543/548/543 642/648/642 +f 642/648/642 543/548/543 643/649/643 +f 543/548/543 544/549/544 643/649/643 +f 643/649/643 544/549/544 644/650/644 +f 544/549/544 545/550/545 644/650/644 +f 644/650/644 545/550/545 645/651/645 +f 545/550/545 546/551/546 645/651/645 +f 645/651/645 546/551/546 646/652/646 +f 546/551/546 547/552/547 646/652/646 +f 646/652/646 547/552/547 647/653/647 +f 547/552/547 548/553/548 647/653/647 +f 647/653/647 548/553/548 648/654/648 +f 548/553/548 549/554/549 648/654/648 +f 648/654/648 549/554/549 649/655/649 +f 549/554/549 550/555/550 649/655/649 +f 649/655/649 550/555/550 650/656/650 +f 550/555/550 551/556/551 650/656/650 +f 650/656/650 551/556/551 651/657/651 +f 551/556/551 552/557/552 651/657/651 +f 651/657/651 552/557/552 652/658/652 +f 552/557/552 553/558/553 652/658/652 +f 652/658/652 553/558/553 653/659/653 +f 553/558/553 554/559/554 653/659/653 +f 653/659/653 554/559/554 654/660/654 +f 554/559/554 555/560/555 654/660/654 +f 654/660/654 555/560/555 655/661/655 +f 555/560/555 556/561/556 655/661/655 +f 655/661/655 556/561/556 656/662/656 +f 556/561/556 557/562/557 656/662/656 +f 656/662/656 557/562/557 657/663/657 +f 557/562/557 558/563/558 657/663/657 +f 657/663/657 558/563/558 658/664/658 +f 558/563/558 559/564/559 658/664/658 +f 658/664/658 559/564/559 659/665/659 +f 559/564/559 560/565/560 659/665/659 +f 659/665/659 560/565/560 660/666/660 +f 560/565/560 561/566/561 660/666/660 +f 660/666/660 561/566/561 661/667/661 +f 561/566/561 562/567/562 661/667/661 +f 661/667/661 562/567/562 662/668/662 +f 562/567/562 563/568/563 662/668/662 +f 662/668/662 563/568/563 663/669/663 +f 563/568/563 564/569/564 663/669/663 +f 663/669/663 564/569/564 664/670/664 +f 564/569/564 565/570/565 664/670/664 +f 664/670/664 565/570/565 665/671/665 +f 565/570/565 566/571/566 665/671/665 +f 665/671/665 566/571/566 666/672/666 +f 566/571/566 567/572/567 666/672/666 +f 666/672/666 567/572/567 667/673/667 +f 567/572/567 568/573/568 667/673/667 +f 667/673/667 568/573/568 668/674/668 +f 568/573/568 569/574/569 668/674/668 +f 668/674/668 569/574/569 669/675/669 +f 569/574/569 570/575/570 669/675/669 +f 669/675/669 570/575/570 670/676/670 +f 570/575/570 571/576/571 670/676/670 +f 670/676/670 571/576/571 671/677/671 +f 571/576/571 572/577/572 671/677/671 +f 671/677/671 572/577/572 672/678/672 +f 572/577/572 573/578/573 672/678/672 +f 672/678/672 573/578/573 673/679/673 +f 573/578/573 574/579/574 673/679/673 +f 673/679/673 574/579/574 674/680/674 +f 574/579/574 575/580/575 674/680/674 +f 674/680/674 575/580/575 675/681/675 +f 575/580/575 576/581/576 675/681/675 +f 675/681/675 576/581/576 676/682/676 +f 576/581/576 577/582/577 676/682/676 +f 676/682/676 577/582/577 677/683/677 +f 577/582/577 578/583/578 677/683/677 +f 677/683/677 578/583/578 678/684/678 +f 578/583/578 579/584/579 678/684/678 +f 678/684/678 579/584/579 679/685/679 +f 579/584/579 580/585/580 679/685/679 +f 679/685/679 580/585/580 680/686/680 +f 580/585/580 581/586/581 680/686/680 +f 680/686/680 581/586/581 681/687/681 +f 581/586/581 582/587/582 681/687/681 +f 681/687/681 582/587/582 682/688/682 +f 582/587/582 583/588/583 682/688/682 +f 682/688/682 583/588/583 683/689/683 +f 583/588/583 584/589/584 683/689/683 +f 683/689/683 584/589/584 684/690/684 +f 584/589/584 585/590/585 684/690/684 +f 684/690/684 585/590/585 685/691/685 +f 585/590/585 586/591/586 685/691/685 +f 685/691/685 586/591/586 686/692/686 +f 586/591/586 587/592/587 686/692/686 +f 686/692/686 587/592/587 687/693/687 +f 587/592/587 588/593/588 687/693/687 +f 687/693/687 588/593/588 688/694/688 +f 588/593/588 589/594/589 688/694/688 +f 688/694/688 589/594/589 689/695/689 +f 589/594/589 590/595/590 689/695/689 +f 689/695/689 590/595/590 690/696/690 +f 590/595/590 591/596/591 690/696/690 +f 690/696/690 591/596/591 691/697/691 +f 591/596/591 592/597/592 691/697/691 +f 691/697/691 592/597/592 692/698/692 +f 592/597/592 593/598/593 692/698/692 +f 692/698/692 593/598/593 693/699/693 +f 593/598/593 594/599/594 693/699/693 +f 693/699/693 594/599/594 694/700/694 +f 594/599/594 595/600/595 694/700/694 +f 694/700/694 595/600/595 695/701/695 +f 595/600/595 596/601/596 695/701/695 +f 695/701/695 596/601/596 696/702/696 +f 596/601/596 597/602/597 696/702/696 +f 696/702/696 597/602/597 697/703/697 +f 597/602/597 598/603/598 697/703/697 +f 697/703/697 598/603/598 698/704/698 +f 598/603/598 599/604/599 698/704/698 +f 698/704/698 599/604/599 699/705/699 +f 599/604/599 600/605/600 699/705/699 +f 699/705/699 600/605/600 700/706/700 +f 600/605/600 501/606/501 700/706/700 +f 700/706/700 501/606/501 601/707/601 +f 601/607/601 602/608/602 701/708/701 +f 701/708/701 602/608/602 702/709/702 +f 602/608/602 603/609/603 702/709/702 +f 702/709/702 603/609/603 703/710/703 +f 603/609/603 604/610/604 703/710/703 +f 703/710/703 604/610/604 704/711/704 +f 604/610/604 605/611/605 704/711/704 +f 704/711/704 605/611/605 705/712/705 +f 605/611/605 606/612/606 705/712/705 +f 705/712/705 606/612/606 706/713/706 +f 606/612/606 607/613/607 706/713/706 +f 706/713/706 607/613/607 707/714/707 +f 607/613/607 608/614/608 707/714/707 +f 707/714/707 608/614/608 708/715/708 +f 608/614/608 609/615/609 708/715/708 +f 708/715/708 609/615/609 709/716/709 +f 609/615/609 610/616/610 709/716/709 +f 709/716/709 610/616/610 710/717/710 +f 610/616/610 611/617/611 710/717/710 +f 710/717/710 611/617/611 711/718/711 +f 611/617/611 612/618/612 711/718/711 +f 711/718/711 612/618/612 712/719/712 +f 612/618/612 613/619/613 712/719/712 +f 712/719/712 613/619/613 713/720/713 +f 613/619/613 614/620/614 713/720/713 +f 713/720/713 614/620/614 714/721/714 +f 614/620/614 615/621/615 714/721/714 +f 714/721/714 615/621/615 715/722/715 +f 615/621/615 616/622/616 715/722/715 +f 715/722/715 616/622/616 716/723/716 +f 616/622/616 617/623/617 716/723/716 +f 716/723/716 617/623/617 717/724/717 +f 617/623/617 618/624/618 717/724/717 +f 717/724/717 618/624/618 718/725/718 +f 618/624/618 619/625/619 718/725/718 +f 718/725/718 619/625/619 719/726/719 +f 619/625/619 620/626/620 719/726/719 +f 719/726/719 620/626/620 720/727/720 +f 620/626/620 621/627/621 720/727/720 +f 720/727/720 621/627/621 721/728/721 +f 621/627/621 622/628/622 721/728/721 +f 721/728/721 622/628/622 722/729/722 +f 622/628/622 623/629/623 722/729/722 +f 722/729/722 623/629/623 723/730/723 +f 623/629/623 624/630/624 723/730/723 +f 723/730/723 624/630/624 724/731/724 +f 624/630/624 625/631/625 724/731/724 +f 724/731/724 625/631/625 725/732/725 +f 625/631/625 626/632/626 725/732/725 +f 725/732/725 626/632/626 726/733/726 +f 626/632/626 627/633/627 726/733/726 +f 726/733/726 627/633/627 727/734/727 +f 627/633/627 628/634/628 727/734/727 +f 727/734/727 628/634/628 728/735/728 +f 628/634/628 629/635/629 728/735/728 +f 728/735/728 629/635/629 729/736/729 +f 629/635/629 630/636/630 729/736/729 +f 729/736/729 630/636/630 730/737/730 +f 630/636/630 631/637/631 730/737/730 +f 730/737/730 631/637/631 731/738/731 +f 631/637/631 632/638/632 731/738/731 +f 731/738/731 632/638/632 732/739/732 +f 632/638/632 633/639/633 732/739/732 +f 732/739/732 633/639/633 733/740/733 +f 633/639/633 634/640/634 733/740/733 +f 733/740/733 634/640/634 734/741/734 +f 634/640/634 635/641/635 734/741/734 +f 734/741/734 635/641/635 735/742/735 +f 635/641/635 636/642/636 735/742/735 +f 735/742/735 636/642/636 736/743/736 +f 636/642/636 637/643/637 736/743/736 +f 736/743/736 637/643/637 737/744/737 +f 637/643/637 638/644/638 737/744/737 +f 737/744/737 638/644/638 738/745/738 +f 638/644/638 639/645/639 738/745/738 +f 738/745/738 639/645/639 739/746/739 +f 639/645/639 640/646/640 739/746/739 +f 739/746/739 640/646/640 740/747/740 +f 640/646/640 641/647/641 740/747/740 +f 740/747/740 641/647/641 741/748/741 +f 641/647/641 642/648/642 741/748/741 +f 741/748/741 642/648/642 742/749/742 +f 642/648/642 643/649/643 742/749/742 +f 742/749/742 643/649/643 743/750/743 +f 643/649/643 644/650/644 743/750/743 +f 743/750/743 644/650/644 744/751/744 +f 644/650/644 645/651/645 744/751/744 +f 744/751/744 645/651/645 745/752/745 +f 645/651/645 646/652/646 745/752/745 +f 745/752/745 646/652/646 746/753/746 +f 646/652/646 647/653/647 746/753/746 +f 746/753/746 647/653/647 747/754/747 +f 647/653/647 648/654/648 747/754/747 +f 747/754/747 648/654/648 748/755/748 +f 648/654/648 649/655/649 748/755/748 +f 748/755/748 649/655/649 749/756/749 +f 649/655/649 650/656/650 749/756/749 +f 749/756/749 650/656/650 750/757/750 +f 650/656/650 651/657/651 750/757/750 +f 750/757/750 651/657/651 751/758/751 +f 651/657/651 652/658/652 751/758/751 +f 751/758/751 652/658/652 752/759/752 +f 652/658/652 653/659/653 752/759/752 +f 752/759/752 653/659/653 753/760/753 +f 653/659/653 654/660/654 753/760/753 +f 753/760/753 654/660/654 754/761/754 +f 654/660/654 655/661/655 754/761/754 +f 754/761/754 655/661/655 755/762/755 +f 655/661/655 656/662/656 755/762/755 +f 755/762/755 656/662/656 756/763/756 +f 656/662/656 657/663/657 756/763/756 +f 756/763/756 657/663/657 757/764/757 +f 657/663/657 658/664/658 757/764/757 +f 757/764/757 658/664/658 758/765/758 +f 658/664/658 659/665/659 758/765/758 +f 758/765/758 659/665/659 759/766/759 +f 659/665/659 660/666/660 759/766/759 +f 759/766/759 660/666/660 760/767/760 +f 660/666/660 661/667/661 760/767/760 +f 760/767/760 661/667/661 761/768/761 +f 661/667/661 662/668/662 761/768/761 +f 761/768/761 662/668/662 762/769/762 +f 662/668/662 663/669/663 762/769/762 +f 762/769/762 663/669/663 763/770/763 +f 663/669/663 664/670/664 763/770/763 +f 763/770/763 664/670/664 764/771/764 +f 664/670/664 665/671/665 764/771/764 +f 764/771/764 665/671/665 765/772/765 +f 665/671/665 666/672/666 765/772/765 +f 765/772/765 666/672/666 766/773/766 +f 666/672/666 667/673/667 766/773/766 +f 766/773/766 667/673/667 767/774/767 +f 667/673/667 668/674/668 767/774/767 +f 767/774/767 668/674/668 768/775/768 +f 668/674/668 669/675/669 768/775/768 +f 768/775/768 669/675/669 769/776/769 +f 669/675/669 670/676/670 769/776/769 +f 769/776/769 670/676/670 770/777/770 +f 670/676/670 671/677/671 770/777/770 +f 770/777/770 671/677/671 771/778/771 +f 671/677/671 672/678/672 771/778/771 +f 771/778/771 672/678/672 772/779/772 +f 672/678/672 673/679/673 772/779/772 +f 772/779/772 673/679/673 773/780/773 +f 673/679/673 674/680/674 773/780/773 +f 773/780/773 674/680/674 774/781/774 +f 674/680/674 675/681/675 774/781/774 +f 774/781/774 675/681/675 775/782/775 +f 675/681/675 676/682/676 775/782/775 +f 775/782/775 676/682/676 776/783/776 +f 676/682/676 677/683/677 776/783/776 +f 776/783/776 677/683/677 777/784/777 +f 677/683/677 678/684/678 777/784/777 +f 777/784/777 678/684/678 778/785/778 +f 678/684/678 679/685/679 778/785/778 +f 778/785/778 679/685/679 779/786/779 +f 679/685/679 680/686/680 779/786/779 +f 779/786/779 680/686/680 780/787/780 +f 680/686/680 681/687/681 780/787/780 +f 780/787/780 681/687/681 781/788/781 +f 681/687/681 682/688/682 781/788/781 +f 781/788/781 682/688/682 782/789/782 +f 682/688/682 683/689/683 782/789/782 +f 782/789/782 683/689/683 783/790/783 +f 683/689/683 684/690/684 783/790/783 +f 783/790/783 684/690/684 784/791/784 +f 684/690/684 685/691/685 784/791/784 +f 784/791/784 685/691/685 785/792/785 +f 685/691/685 686/692/686 785/792/785 +f 785/792/785 686/692/686 786/793/786 +f 686/692/686 687/693/687 786/793/786 +f 786/793/786 687/693/687 787/794/787 +f 687/693/687 688/694/688 787/794/787 +f 787/794/787 688/694/688 788/795/788 +f 688/694/688 689/695/689 788/795/788 +f 788/795/788 689/695/689 789/796/789 +f 689/695/689 690/696/690 789/796/789 +f 789/796/789 690/696/690 790/797/790 +f 690/696/690 691/697/691 790/797/790 +f 790/797/790 691/697/691 791/798/791 +f 691/697/691 692/698/692 791/798/791 +f 791/798/791 692/698/692 792/799/792 +f 692/698/692 693/699/693 792/799/792 +f 792/799/792 693/699/693 793/800/793 +f 693/699/693 694/700/694 793/800/793 +f 793/800/793 694/700/694 794/801/794 +f 694/700/694 695/701/695 794/801/794 +f 794/801/794 695/701/695 795/802/795 +f 695/701/695 696/702/696 795/802/795 +f 795/802/795 696/702/696 796/803/796 +f 696/702/696 697/703/697 796/803/796 +f 796/803/796 697/703/697 797/804/797 +f 697/703/697 698/704/698 797/804/797 +f 797/804/797 698/704/698 798/805/798 +f 698/704/698 699/705/699 798/805/798 +f 798/805/798 699/705/699 799/806/799 +f 699/705/699 700/706/700 799/806/799 +f 799/806/799 700/706/700 800/807/800 +f 700/706/700 601/707/601 800/807/800 +f 800/807/800 601/707/601 701/808/701 +f 701/708/701 702/709/702 801/809/801 +f 801/809/801 702/709/702 802/810/802 +f 702/709/702 703/710/703 802/810/802 +f 802/810/802 703/710/703 803/811/803 +f 703/710/703 704/711/704 803/811/803 +f 803/811/803 704/711/704 804/812/804 +f 704/711/704 705/712/705 804/812/804 +f 804/812/804 705/712/705 805/813/805 +f 705/712/705 706/713/706 805/813/805 +f 805/813/805 706/713/706 806/814/806 +f 706/713/706 707/714/707 806/814/806 +f 806/814/806 707/714/707 807/815/807 +f 707/714/707 708/715/708 807/815/807 +f 807/815/807 708/715/708 808/816/808 +f 708/715/708 709/716/709 808/816/808 +f 808/816/808 709/716/709 809/817/809 +f 709/716/709 710/717/710 809/817/809 +f 809/817/809 710/717/710 810/818/810 +f 710/717/710 711/718/711 810/818/810 +f 810/818/810 711/718/711 811/819/811 +f 711/718/711 712/719/712 811/819/811 +f 811/819/811 712/719/712 812/820/812 +f 712/719/712 713/720/713 812/820/812 +f 812/820/812 713/720/713 813/821/813 +f 713/720/713 714/721/714 813/821/813 +f 813/821/813 714/721/714 814/822/814 +f 714/721/714 715/722/715 814/822/814 +f 814/822/814 715/722/715 815/823/815 +f 715/722/715 716/723/716 815/823/815 +f 815/823/815 716/723/716 816/824/816 +f 716/723/716 717/724/717 816/824/816 +f 816/824/816 717/724/717 817/825/817 +f 717/724/717 718/725/718 817/825/817 +f 817/825/817 718/725/718 818/826/818 +f 718/725/718 719/726/719 818/826/818 +f 818/826/818 719/726/719 819/827/819 +f 719/726/719 720/727/720 819/827/819 +f 819/827/819 720/727/720 820/828/820 +f 720/727/720 721/728/721 820/828/820 +f 820/828/820 721/728/721 821/829/821 +f 721/728/721 722/729/722 821/829/821 +f 821/829/821 722/729/722 822/830/822 +f 722/729/722 723/730/723 822/830/822 +f 822/830/822 723/730/723 823/831/823 +f 723/730/723 724/731/724 823/831/823 +f 823/831/823 724/731/724 824/832/824 +f 724/731/724 725/732/725 824/832/824 +f 824/832/824 725/732/725 825/833/825 +f 725/732/725 726/733/726 825/833/825 +f 825/833/825 726/733/726 826/834/826 +f 726/733/726 727/734/727 826/834/826 +f 826/834/826 727/734/727 827/835/827 +f 727/734/727 728/735/728 827/835/827 +f 827/835/827 728/735/728 828/836/828 +f 728/735/728 729/736/729 828/836/828 +f 828/836/828 729/736/729 829/837/829 +f 729/736/729 730/737/730 829/837/829 +f 829/837/829 730/737/730 830/838/830 +f 730/737/730 731/738/731 830/838/830 +f 830/838/830 731/738/731 831/839/831 +f 731/738/731 732/739/732 831/839/831 +f 831/839/831 732/739/732 832/840/832 +f 732/739/732 733/740/733 832/840/832 +f 832/840/832 733/740/733 833/841/833 +f 733/740/733 734/741/734 833/841/833 +f 833/841/833 734/741/734 834/842/834 +f 734/741/734 735/742/735 834/842/834 +f 834/842/834 735/742/735 835/843/835 +f 735/742/735 736/743/736 835/843/835 +f 835/843/835 736/743/736 836/844/836 +f 736/743/736 737/744/737 836/844/836 +f 836/844/836 737/744/737 837/845/837 +f 737/744/737 738/745/738 837/845/837 +f 837/845/837 738/745/738 838/846/838 +f 738/745/738 739/746/739 838/846/838 +f 838/846/838 739/746/739 839/847/839 +f 739/746/739 740/747/740 839/847/839 +f 839/847/839 740/747/740 840/848/840 +f 740/747/740 741/748/741 840/848/840 +f 840/848/840 741/748/741 841/849/841 +f 741/748/741 742/749/742 841/849/841 +f 841/849/841 742/749/742 842/850/842 +f 742/749/742 743/750/743 842/850/842 +f 842/850/842 743/750/743 843/851/843 +f 743/750/743 744/751/744 843/851/843 +f 843/851/843 744/751/744 844/852/844 +f 744/751/744 745/752/745 844/852/844 +f 844/852/844 745/752/745 845/853/845 +f 745/752/745 746/753/746 845/853/845 +f 845/853/845 746/753/746 846/854/846 +f 746/753/746 747/754/747 846/854/846 +f 846/854/846 747/754/747 847/855/847 +f 747/754/747 748/755/748 847/855/847 +f 847/855/847 748/755/748 848/856/848 +f 748/755/748 749/756/749 848/856/848 +f 848/856/848 749/756/749 849/857/849 +f 749/756/749 750/757/750 849/857/849 +f 849/857/849 750/757/750 850/858/850 +f 750/757/750 751/758/751 850/858/850 +f 850/858/850 751/758/751 851/859/851 +f 751/758/751 752/759/752 851/859/851 +f 851/859/851 752/759/752 852/860/852 +f 752/759/752 753/760/753 852/860/852 +f 852/860/852 753/760/753 853/861/853 +f 753/760/753 754/761/754 853/861/853 +f 853/861/853 754/761/754 854/862/854 +f 754/761/754 755/762/755 854/862/854 +f 854/862/854 755/762/755 855/863/855 +f 755/762/755 756/763/756 855/863/855 +f 855/863/855 756/763/756 856/864/856 +f 756/763/756 757/764/757 856/864/856 +f 856/864/856 757/764/757 857/865/857 +f 757/764/757 758/765/758 857/865/857 +f 857/865/857 758/765/758 858/866/858 +f 758/765/758 759/766/759 858/866/858 +f 858/866/858 759/766/759 859/867/859 +f 759/766/759 760/767/760 859/867/859 +f 859/867/859 760/767/760 860/868/860 +f 760/767/760 761/768/761 860/868/860 +f 860/868/860 761/768/761 861/869/861 +f 761/768/761 762/769/762 861/869/861 +f 861/869/861 762/769/762 862/870/862 +f 762/769/762 763/770/763 862/870/862 +f 862/870/862 763/770/763 863/871/863 +f 763/770/763 764/771/764 863/871/863 +f 863/871/863 764/771/764 864/872/864 +f 764/771/764 765/772/765 864/872/864 +f 864/872/864 765/772/765 865/873/865 +f 765/772/765 766/773/766 865/873/865 +f 865/873/865 766/773/766 866/874/866 +f 766/773/766 767/774/767 866/874/866 +f 866/874/866 767/774/767 867/875/867 +f 767/774/767 768/775/768 867/875/867 +f 867/875/867 768/775/768 868/876/868 +f 768/775/768 769/776/769 868/876/868 +f 868/876/868 769/776/769 869/877/869 +f 769/776/769 770/777/770 869/877/869 +f 869/877/869 770/777/770 870/878/870 +f 770/777/770 771/778/771 870/878/870 +f 870/878/870 771/778/771 871/879/871 +f 771/778/771 772/779/772 871/879/871 +f 871/879/871 772/779/772 872/880/872 +f 772/779/772 773/780/773 872/880/872 +f 872/880/872 773/780/773 873/881/873 +f 773/780/773 774/781/774 873/881/873 +f 873/881/873 774/781/774 874/882/874 +f 774/781/774 775/782/775 874/882/874 +f 874/882/874 775/782/775 875/883/875 +f 775/782/775 776/783/776 875/883/875 +f 875/883/875 776/783/776 876/884/876 +f 776/783/776 777/784/777 876/884/876 +f 876/884/876 777/784/777 877/885/877 +f 777/784/777 778/785/778 877/885/877 +f 877/885/877 778/785/778 878/886/878 +f 778/785/778 779/786/779 878/886/878 +f 878/886/878 779/786/779 879/887/879 +f 779/786/779 780/787/780 879/887/879 +f 879/887/879 780/787/780 880/888/880 +f 780/787/780 781/788/781 880/888/880 +f 880/888/880 781/788/781 881/889/881 +f 781/788/781 782/789/782 881/889/881 +f 881/889/881 782/789/782 882/890/882 +f 782/789/782 783/790/783 882/890/882 +f 882/890/882 783/790/783 883/891/883 +f 783/790/783 784/791/784 883/891/883 +f 883/891/883 784/791/784 884/892/884 +f 784/791/784 785/792/785 884/892/884 +f 884/892/884 785/792/785 885/893/885 +f 785/792/785 786/793/786 885/893/885 +f 885/893/885 786/793/786 886/894/886 +f 786/793/786 787/794/787 886/894/886 +f 886/894/886 787/794/787 887/895/887 +f 787/794/787 788/795/788 887/895/887 +f 887/895/887 788/795/788 888/896/888 +f 788/795/788 789/796/789 888/896/888 +f 888/896/888 789/796/789 889/897/889 +f 789/796/789 790/797/790 889/897/889 +f 889/897/889 790/797/790 890/898/890 +f 790/797/790 791/798/791 890/898/890 +f 890/898/890 791/798/791 891/899/891 +f 791/798/791 792/799/792 891/899/891 +f 891/899/891 792/799/792 892/900/892 +f 792/799/792 793/800/793 892/900/892 +f 892/900/892 793/800/793 893/901/893 +f 793/800/793 794/801/794 893/901/893 +f 893/901/893 794/801/794 894/902/894 +f 794/801/794 795/802/795 894/902/894 +f 894/902/894 795/802/795 895/903/895 +f 795/802/795 796/803/796 895/903/895 +f 895/903/895 796/803/796 896/904/896 +f 796/803/796 797/804/797 896/904/896 +f 896/904/896 797/804/797 897/905/897 +f 797/804/797 798/805/798 897/905/897 +f 897/905/897 798/805/798 898/906/898 +f 798/805/798 799/806/799 898/906/898 +f 898/906/898 799/806/799 899/907/899 +f 799/806/799 800/807/800 899/907/899 +f 899/907/899 800/807/800 900/908/900 +f 800/807/800 701/808/701 900/908/900 +f 900/908/900 701/808/701 801/909/801 +f 801/809/801 802/810/802 901/910/901 +f 901/910/901 802/810/802 902/911/902 +f 802/810/802 803/811/803 902/911/902 +f 902/911/902 803/811/803 903/912/903 +f 803/811/803 804/812/804 903/912/903 +f 903/912/903 804/812/804 904/913/904 +f 804/812/804 805/813/805 904/913/904 +f 904/913/904 805/813/805 905/914/905 +f 805/813/805 806/814/806 905/914/905 +f 905/914/905 806/814/806 906/915/906 +f 806/814/806 807/815/807 906/915/906 +f 906/915/906 807/815/807 907/916/907 +f 807/815/807 808/816/808 907/916/907 +f 907/916/907 808/816/808 908/917/908 +f 808/816/808 809/817/809 908/917/908 +f 908/917/908 809/817/809 909/918/909 +f 809/817/809 810/818/810 909/918/909 +f 909/918/909 810/818/810 910/919/910 +f 810/818/810 811/819/811 910/919/910 +f 910/919/910 811/819/811 911/920/911 +f 811/819/811 812/820/812 911/920/911 +f 911/920/911 812/820/812 912/921/912 +f 812/820/812 813/821/813 912/921/912 +f 912/921/912 813/821/813 913/922/913 +f 813/821/813 814/822/814 913/922/913 +f 913/922/913 814/822/814 914/923/914 +f 814/822/814 815/823/815 914/923/914 +f 914/923/914 815/823/815 915/924/915 +f 815/823/815 816/824/816 915/924/915 +f 915/924/915 816/824/816 916/925/916 +f 816/824/816 817/825/817 916/925/916 +f 916/925/916 817/825/817 917/926/917 +f 817/825/817 818/826/818 917/926/917 +f 917/926/917 818/826/818 918/927/918 +f 818/826/818 819/827/819 918/927/918 +f 918/927/918 819/827/819 919/928/919 +f 819/827/819 820/828/820 919/928/919 +f 919/928/919 820/828/820 920/929/920 +f 820/828/820 821/829/821 920/929/920 +f 920/929/920 821/829/821 921/930/921 +f 821/829/821 822/830/822 921/930/921 +f 921/930/921 822/830/822 922/931/922 +f 822/830/822 823/831/823 922/931/922 +f 922/931/922 823/831/823 923/932/923 +f 823/831/823 824/832/824 923/932/923 +f 923/932/923 824/832/824 924/933/924 +f 824/832/824 825/833/825 924/933/924 +f 924/933/924 825/833/825 925/934/925 +f 825/833/825 826/834/826 925/934/925 +f 925/934/925 826/834/826 926/935/926 +f 826/834/826 827/835/827 926/935/926 +f 926/935/926 827/835/827 927/936/927 +f 827/835/827 828/836/828 927/936/927 +f 927/936/927 828/836/828 928/937/928 +f 828/836/828 829/837/829 928/937/928 +f 928/937/928 829/837/829 929/938/929 +f 829/837/829 830/838/830 929/938/929 +f 929/938/929 830/838/830 930/939/930 +f 830/838/830 831/839/831 930/939/930 +f 930/939/930 831/839/831 931/940/931 +f 831/839/831 832/840/832 931/940/931 +f 931/940/931 832/840/832 932/941/932 +f 832/840/832 833/841/833 932/941/932 +f 932/941/932 833/841/833 933/942/933 +f 833/841/833 834/842/834 933/942/933 +f 933/942/933 834/842/834 934/943/934 +f 834/842/834 835/843/835 934/943/934 +f 934/943/934 835/843/835 935/944/935 +f 835/843/835 836/844/836 935/944/935 +f 935/944/935 836/844/836 936/945/936 +f 836/844/836 837/845/837 936/945/936 +f 936/945/936 837/845/837 937/946/937 +f 837/845/837 838/846/838 937/946/937 +f 937/946/937 838/846/838 938/947/938 +f 838/846/838 839/847/839 938/947/938 +f 938/947/938 839/847/839 939/948/939 +f 839/847/839 840/848/840 939/948/939 +f 939/948/939 840/848/840 940/949/940 +f 840/848/840 841/849/841 940/949/940 +f 940/949/940 841/849/841 941/950/941 +f 841/849/841 842/850/842 941/950/941 +f 941/950/941 842/850/842 942/951/942 +f 842/850/842 843/851/843 942/951/942 +f 942/951/942 843/851/843 943/952/943 +f 843/851/843 844/852/844 943/952/943 +f 943/952/943 844/852/844 944/953/944 +f 844/852/844 845/853/845 944/953/944 +f 944/953/944 845/853/845 945/954/945 +f 845/853/845 846/854/846 945/954/945 +f 945/954/945 846/854/846 946/955/946 +f 846/854/846 847/855/847 946/955/946 +f 946/955/946 847/855/847 947/956/947 +f 847/855/847 848/856/848 947/956/947 +f 947/956/947 848/856/848 948/957/948 +f 848/856/848 849/857/849 948/957/948 +f 948/957/948 849/857/849 949/958/949 +f 849/857/849 850/858/850 949/958/949 +f 949/958/949 850/858/850 950/959/950 +f 850/858/850 851/859/851 950/959/950 +f 950/959/950 851/859/851 951/960/951 +f 851/859/851 852/860/852 951/960/951 +f 951/960/951 852/860/852 952/961/952 +f 852/860/852 853/861/853 952/961/952 +f 952/961/952 853/861/853 953/962/953 +f 853/861/853 854/862/854 953/962/953 +f 953/962/953 854/862/854 954/963/954 +f 854/862/854 855/863/855 954/963/954 +f 954/963/954 855/863/855 955/964/955 +f 855/863/855 856/864/856 955/964/955 +f 955/964/955 856/864/856 956/965/956 +f 856/864/856 857/865/857 956/965/956 +f 956/965/956 857/865/857 957/966/957 +f 857/865/857 858/866/858 957/966/957 +f 957/966/957 858/866/858 958/967/958 +f 858/866/858 859/867/859 958/967/958 +f 958/967/958 859/867/859 959/968/959 +f 859/867/859 860/868/860 959/968/959 +f 959/968/959 860/868/860 960/969/960 +f 860/868/860 861/869/861 960/969/960 +f 960/969/960 861/869/861 961/970/961 +f 861/869/861 862/870/862 961/970/961 +f 961/970/961 862/870/862 962/971/962 +f 862/870/862 863/871/863 962/971/962 +f 962/971/962 863/871/863 963/972/963 +f 863/871/863 864/872/864 963/972/963 +f 963/972/963 864/872/864 964/973/964 +f 864/872/864 865/873/865 964/973/964 +f 964/973/964 865/873/865 965/974/965 +f 865/873/865 866/874/866 965/974/965 +f 965/974/965 866/874/866 966/975/966 +f 866/874/866 867/875/867 966/975/966 +f 966/975/966 867/875/867 967/976/967 +f 867/875/867 868/876/868 967/976/967 +f 967/976/967 868/876/868 968/977/968 +f 868/876/868 869/877/869 968/977/968 +f 968/977/968 869/877/869 969/978/969 +f 869/877/869 870/878/870 969/978/969 +f 969/978/969 870/878/870 970/979/970 +f 870/878/870 871/879/871 970/979/970 +f 970/979/970 871/879/871 971/980/971 +f 871/879/871 872/880/872 971/980/971 +f 971/980/971 872/880/872 972/981/972 +f 872/880/872 873/881/873 972/981/972 +f 972/981/972 873/881/873 973/982/973 +f 873/881/873 874/882/874 973/982/973 +f 973/982/973 874/882/874 974/983/974 +f 874/882/874 875/883/875 974/983/974 +f 974/983/974 875/883/875 975/984/975 +f 875/883/875 876/884/876 975/984/975 +f 975/984/975 876/884/876 976/985/976 +f 876/884/876 877/885/877 976/985/976 +f 976/985/976 877/885/877 977/986/977 +f 877/885/877 878/886/878 977/986/977 +f 977/986/977 878/886/878 978/987/978 +f 878/886/878 879/887/879 978/987/978 +f 978/987/978 879/887/879 979/988/979 +f 879/887/879 880/888/880 979/988/979 +f 979/988/979 880/888/880 980/989/980 +f 880/888/880 881/889/881 980/989/980 +f 980/989/980 881/889/881 981/990/981 +f 881/889/881 882/890/882 981/990/981 +f 981/990/981 882/890/882 982/991/982 +f 882/890/882 883/891/883 982/991/982 +f 982/991/982 883/891/883 983/992/983 +f 883/891/883 884/892/884 983/992/983 +f 983/992/983 884/892/884 984/993/984 +f 884/892/884 885/893/885 984/993/984 +f 984/993/984 885/893/885 985/994/985 +f 885/893/885 886/894/886 985/994/985 +f 985/994/985 886/894/886 986/995/986 +f 886/894/886 887/895/887 986/995/986 +f 986/995/986 887/895/887 987/996/987 +f 887/895/887 888/896/888 987/996/987 +f 987/996/987 888/896/888 988/997/988 +f 888/896/888 889/897/889 988/997/988 +f 988/997/988 889/897/889 989/998/989 +f 889/897/889 890/898/890 989/998/989 +f 989/998/989 890/898/890 990/999/990 +f 890/898/890 891/899/891 990/999/990 +f 990/999/990 891/899/891 991/1000/991 +f 891/899/891 892/900/892 991/1000/991 +f 991/1000/991 892/900/892 992/1001/992 +f 892/900/892 893/901/893 992/1001/992 +f 992/1001/992 893/901/893 993/1002/993 +f 893/901/893 894/902/894 993/1002/993 +f 993/1002/993 894/902/894 994/1003/994 +f 894/902/894 895/903/895 994/1003/994 +f 994/1003/994 895/903/895 995/1004/995 +f 895/903/895 896/904/896 995/1004/995 +f 995/1004/995 896/904/896 996/1005/996 +f 896/904/896 897/905/897 996/1005/996 +f 996/1005/996 897/905/897 997/1006/997 +f 897/905/897 898/906/898 997/1006/997 +f 997/1006/997 898/906/898 998/1007/998 +f 898/906/898 899/907/899 998/1007/998 +f 998/1007/998 899/907/899 999/1008/999 +f 899/907/899 900/908/900 999/1008/999 +f 999/1008/999 900/908/900 1000/1009/1000 +f 900/908/900 801/909/801 1000/1009/1000 +f 1000/1009/1000 801/909/801 901/1010/901 +f 901/910/901 902/911/902 1001/1011/1001 +f 1001/1011/1001 902/911/902 1002/1012/1002 +f 902/911/902 903/912/903 1002/1012/1002 +f 1002/1012/1002 903/912/903 1003/1013/1003 +f 903/912/903 904/913/904 1003/1013/1003 +f 1003/1013/1003 904/913/904 1004/1014/1004 +f 904/913/904 905/914/905 1004/1014/1004 +f 1004/1014/1004 905/914/905 1005/1015/1005 +f 905/914/905 906/915/906 1005/1015/1005 +f 1005/1015/1005 906/915/906 1006/1016/1006 +f 906/915/906 907/916/907 1006/1016/1006 +f 1006/1016/1006 907/916/907 1007/1017/1007 +f 907/916/907 908/917/908 1007/1017/1007 +f 1007/1017/1007 908/917/908 1008/1018/1008 +f 908/917/908 909/918/909 1008/1018/1008 +f 1008/1018/1008 909/918/909 1009/1019/1009 +f 909/918/909 910/919/910 1009/1019/1009 +f 1009/1019/1009 910/919/910 1010/1020/1010 +f 910/919/910 911/920/911 1010/1020/1010 +f 1010/1020/1010 911/920/911 1011/1021/1011 +f 911/920/911 912/921/912 1011/1021/1011 +f 1011/1021/1011 912/921/912 1012/1022/1012 +f 912/921/912 913/922/913 1012/1022/1012 +f 1012/1022/1012 913/922/913 1013/1023/1013 +f 913/922/913 914/923/914 1013/1023/1013 +f 1013/1023/1013 914/923/914 1014/1024/1014 +f 914/923/914 915/924/915 1014/1024/1014 +f 1014/1024/1014 915/924/915 1015/1025/1015 +f 915/924/915 916/925/916 1015/1025/1015 +f 1015/1025/1015 916/925/916 1016/1026/1016 +f 916/925/916 917/926/917 1016/1026/1016 +f 1016/1026/1016 917/926/917 1017/1027/1017 +f 917/926/917 918/927/918 1017/1027/1017 +f 1017/1027/1017 918/927/918 1018/1028/1018 +f 918/927/918 919/928/919 1018/1028/1018 +f 1018/1028/1018 919/928/919 1019/1029/1019 +f 919/928/919 920/929/920 1019/1029/1019 +f 1019/1029/1019 920/929/920 1020/1030/1020 +f 920/929/920 921/930/921 1020/1030/1020 +f 1020/1030/1020 921/930/921 1021/1031/1021 +f 921/930/921 922/931/922 1021/1031/1021 +f 1021/1031/1021 922/931/922 1022/1032/1022 +f 922/931/922 923/932/923 1022/1032/1022 +f 1022/1032/1022 923/932/923 1023/1033/1023 +f 923/932/923 924/933/924 1023/1033/1023 +f 1023/1033/1023 924/933/924 1024/1034/1024 +f 924/933/924 925/934/925 1024/1034/1024 +f 1024/1034/1024 925/934/925 1025/1035/1025 +f 925/934/925 926/935/926 1025/1035/1025 +f 1025/1035/1025 926/935/926 1026/1036/1026 +f 926/935/926 927/936/927 1026/1036/1026 +f 1026/1036/1026 927/936/927 1027/1037/1027 +f 927/936/927 928/937/928 1027/1037/1027 +f 1027/1037/1027 928/937/928 1028/1038/1028 +f 928/937/928 929/938/929 1028/1038/1028 +f 1028/1038/1028 929/938/929 1029/1039/1029 +f 929/938/929 930/939/930 1029/1039/1029 +f 1029/1039/1029 930/939/930 1030/1040/1030 +f 930/939/930 931/940/931 1030/1040/1030 +f 1030/1040/1030 931/940/931 1031/1041/1031 +f 931/940/931 932/941/932 1031/1041/1031 +f 1031/1041/1031 932/941/932 1032/1042/1032 +f 932/941/932 933/942/933 1032/1042/1032 +f 1032/1042/1032 933/942/933 1033/1043/1033 +f 933/942/933 934/943/934 1033/1043/1033 +f 1033/1043/1033 934/943/934 1034/1044/1034 +f 934/943/934 935/944/935 1034/1044/1034 +f 1034/1044/1034 935/944/935 1035/1045/1035 +f 935/944/935 936/945/936 1035/1045/1035 +f 1035/1045/1035 936/945/936 1036/1046/1036 +f 936/945/936 937/946/937 1036/1046/1036 +f 1036/1046/1036 937/946/937 1037/1047/1037 +f 937/946/937 938/947/938 1037/1047/1037 +f 1037/1047/1037 938/947/938 1038/1048/1038 +f 938/947/938 939/948/939 1038/1048/1038 +f 1038/1048/1038 939/948/939 1039/1049/1039 +f 939/948/939 940/949/940 1039/1049/1039 +f 1039/1049/1039 940/949/940 1040/1050/1040 +f 940/949/940 941/950/941 1040/1050/1040 +f 1040/1050/1040 941/950/941 1041/1051/1041 +f 941/950/941 942/951/942 1041/1051/1041 +f 1041/1051/1041 942/951/942 1042/1052/1042 +f 942/951/942 943/952/943 1042/1052/1042 +f 1042/1052/1042 943/952/943 1043/1053/1043 +f 943/952/943 944/953/944 1043/1053/1043 +f 1043/1053/1043 944/953/944 1044/1054/1044 +f 944/953/944 945/954/945 1044/1054/1044 +f 1044/1054/1044 945/954/945 1045/1055/1045 +f 945/954/945 946/955/946 1045/1055/1045 +f 1045/1055/1045 946/955/946 1046/1056/1046 +f 946/955/946 947/956/947 1046/1056/1046 +f 1046/1056/1046 947/956/947 1047/1057/1047 +f 947/956/947 948/957/948 1047/1057/1047 +f 1047/1057/1047 948/957/948 1048/1058/1048 +f 948/957/948 949/958/949 1048/1058/1048 +f 1048/1058/1048 949/958/949 1049/1059/1049 +f 949/958/949 950/959/950 1049/1059/1049 +f 1049/1059/1049 950/959/950 1050/1060/1050 +f 950/959/950 951/960/951 1050/1060/1050 +f 1050/1060/1050 951/960/951 1051/1061/1051 +f 951/960/951 952/961/952 1051/1061/1051 +f 1051/1061/1051 952/961/952 1052/1062/1052 +f 952/961/952 953/962/953 1052/1062/1052 +f 1052/1062/1052 953/962/953 1053/1063/1053 +f 953/962/953 954/963/954 1053/1063/1053 +f 1053/1063/1053 954/963/954 1054/1064/1054 +f 954/963/954 955/964/955 1054/1064/1054 +f 1054/1064/1054 955/964/955 1055/1065/1055 +f 955/964/955 956/965/956 1055/1065/1055 +f 1055/1065/1055 956/965/956 1056/1066/1056 +f 956/965/956 957/966/957 1056/1066/1056 +f 1056/1066/1056 957/966/957 1057/1067/1057 +f 957/966/957 958/967/958 1057/1067/1057 +f 1057/1067/1057 958/967/958 1058/1068/1058 +f 958/967/958 959/968/959 1058/1068/1058 +f 1058/1068/1058 959/968/959 1059/1069/1059 +f 959/968/959 960/969/960 1059/1069/1059 +f 1059/1069/1059 960/969/960 1060/1070/1060 +f 960/969/960 961/970/961 1060/1070/1060 +f 1060/1070/1060 961/970/961 1061/1071/1061 +f 961/970/961 962/971/962 1061/1071/1061 +f 1061/1071/1061 962/971/962 1062/1072/1062 +f 962/971/962 963/972/963 1062/1072/1062 +f 1062/1072/1062 963/972/963 1063/1073/1063 +f 963/972/963 964/973/964 1063/1073/1063 +f 1063/1073/1063 964/973/964 1064/1074/1064 +f 964/973/964 965/974/965 1064/1074/1064 +f 1064/1074/1064 965/974/965 1065/1075/1065 +f 965/974/965 966/975/966 1065/1075/1065 +f 1065/1075/1065 966/975/966 1066/1076/1066 +f 966/975/966 967/976/967 1066/1076/1066 +f 1066/1076/1066 967/976/967 1067/1077/1067 +f 967/976/967 968/977/968 1067/1077/1067 +f 1067/1077/1067 968/977/968 1068/1078/1068 +f 968/977/968 969/978/969 1068/1078/1068 +f 1068/1078/1068 969/978/969 1069/1079/1069 +f 969/978/969 970/979/970 1069/1079/1069 +f 1069/1079/1069 970/979/970 1070/1080/1070 +f 970/979/970 971/980/971 1070/1080/1070 +f 1070/1080/1070 971/980/971 1071/1081/1071 +f 971/980/971 972/981/972 1071/1081/1071 +f 1071/1081/1071 972/981/972 1072/1082/1072 +f 972/981/972 973/982/973 1072/1082/1072 +f 1072/1082/1072 973/982/973 1073/1083/1073 +f 973/982/973 974/983/974 1073/1083/1073 +f 1073/1083/1073 974/983/974 1074/1084/1074 +f 974/983/974 975/984/975 1074/1084/1074 +f 1074/1084/1074 975/984/975 1075/1085/1075 +f 975/984/975 976/985/976 1075/1085/1075 +f 1075/1085/1075 976/985/976 1076/1086/1076 +f 976/985/976 977/986/977 1076/1086/1076 +f 1076/1086/1076 977/986/977 1077/1087/1077 +f 977/986/977 978/987/978 1077/1087/1077 +f 1077/1087/1077 978/987/978 1078/1088/1078 +f 978/987/978 979/988/979 1078/1088/1078 +f 1078/1088/1078 979/988/979 1079/1089/1079 +f 979/988/979 980/989/980 1079/1089/1079 +f 1079/1089/1079 980/989/980 1080/1090/1080 +f 980/989/980 981/990/981 1080/1090/1080 +f 1080/1090/1080 981/990/981 1081/1091/1081 +f 981/990/981 982/991/982 1081/1091/1081 +f 1081/1091/1081 982/991/982 1082/1092/1082 +f 982/991/982 983/992/983 1082/1092/1082 +f 1082/1092/1082 983/992/983 1083/1093/1083 +f 983/992/983 984/993/984 1083/1093/1083 +f 1083/1093/1083 984/993/984 1084/1094/1084 +f 984/993/984 985/994/985 1084/1094/1084 +f 1084/1094/1084 985/994/985 1085/1095/1085 +f 985/994/985 986/995/986 1085/1095/1085 +f 1085/1095/1085 986/995/986 1086/1096/1086 +f 986/995/986 987/996/987 1086/1096/1086 +f 1086/1096/1086 987/996/987 1087/1097/1087 +f 987/996/987 988/997/988 1087/1097/1087 +f 1087/1097/1087 988/997/988 1088/1098/1088 +f 988/997/988 989/998/989 1088/1098/1088 +f 1088/1098/1088 989/998/989 1089/1099/1089 +f 989/998/989 990/999/990 1089/1099/1089 +f 1089/1099/1089 990/999/990 1090/1100/1090 +f 990/999/990 991/1000/991 1090/1100/1090 +f 1090/1100/1090 991/1000/991 1091/1101/1091 +f 991/1000/991 992/1001/992 1091/1101/1091 +f 1091/1101/1091 992/1001/992 1092/1102/1092 +f 992/1001/992 993/1002/993 1092/1102/1092 +f 1092/1102/1092 993/1002/993 1093/1103/1093 +f 993/1002/993 994/1003/994 1093/1103/1093 +f 1093/1103/1093 994/1003/994 1094/1104/1094 +f 994/1003/994 995/1004/995 1094/1104/1094 +f 1094/1104/1094 995/1004/995 1095/1105/1095 +f 995/1004/995 996/1005/996 1095/1105/1095 +f 1095/1105/1095 996/1005/996 1096/1106/1096 +f 996/1005/996 997/1006/997 1096/1106/1096 +f 1096/1106/1096 997/1006/997 1097/1107/1097 +f 997/1006/997 998/1007/998 1097/1107/1097 +f 1097/1107/1097 998/1007/998 1098/1108/1098 +f 998/1007/998 999/1008/999 1098/1108/1098 +f 1098/1108/1098 999/1008/999 1099/1109/1099 +f 999/1008/999 1000/1009/1000 1099/1109/1099 +f 1099/1109/1099 1000/1009/1000 1100/1110/1100 +f 1000/1009/1000 901/1010/901 1100/1110/1100 +f 1100/1110/1100 901/1010/901 1001/1111/1001 +f 1001/1011/1001 1002/1012/1002 1101/1112/1101 +f 1101/1112/1101 1002/1012/1002 1102/1113/1102 +f 1002/1012/1002 1003/1013/1003 1102/1113/1102 +f 1102/1113/1102 1003/1013/1003 1103/1114/1103 +f 1003/1013/1003 1004/1014/1004 1103/1114/1103 +f 1103/1114/1103 1004/1014/1004 1104/1115/1104 +f 1004/1014/1004 1005/1015/1005 1104/1115/1104 +f 1104/1115/1104 1005/1015/1005 1105/1116/1105 +f 1005/1015/1005 1006/1016/1006 1105/1116/1105 +f 1105/1116/1105 1006/1016/1006 1106/1117/1106 +f 1006/1016/1006 1007/1017/1007 1106/1117/1106 +f 1106/1117/1106 1007/1017/1007 1107/1118/1107 +f 1007/1017/1007 1008/1018/1008 1107/1118/1107 +f 1107/1118/1107 1008/1018/1008 1108/1119/1108 +f 1008/1018/1008 1009/1019/1009 1108/1119/1108 +f 1108/1119/1108 1009/1019/1009 1109/1120/1109 +f 1009/1019/1009 1010/1020/1010 1109/1120/1109 +f 1109/1120/1109 1010/1020/1010 1110/1121/1110 +f 1010/1020/1010 1011/1021/1011 1110/1121/1110 +f 1110/1121/1110 1011/1021/1011 1111/1122/1111 +f 1011/1021/1011 1012/1022/1012 1111/1122/1111 +f 1111/1122/1111 1012/1022/1012 1112/1123/1112 +f 1012/1022/1012 1013/1023/1013 1112/1123/1112 +f 1112/1123/1112 1013/1023/1013 1113/1124/1113 +f 1013/1023/1013 1014/1024/1014 1113/1124/1113 +f 1113/1124/1113 1014/1024/1014 1114/1125/1114 +f 1014/1024/1014 1015/1025/1015 1114/1125/1114 +f 1114/1125/1114 1015/1025/1015 1115/1126/1115 +f 1015/1025/1015 1016/1026/1016 1115/1126/1115 +f 1115/1126/1115 1016/1026/1016 1116/1127/1116 +f 1016/1026/1016 1017/1027/1017 1116/1127/1116 +f 1116/1127/1116 1017/1027/1017 1117/1128/1117 +f 1017/1027/1017 1018/1028/1018 1117/1128/1117 +f 1117/1128/1117 1018/1028/1018 1118/1129/1118 +f 1018/1028/1018 1019/1029/1019 1118/1129/1118 +f 1118/1129/1118 1019/1029/1019 1119/1130/1119 +f 1019/1029/1019 1020/1030/1020 1119/1130/1119 +f 1119/1130/1119 1020/1030/1020 1120/1131/1120 +f 1020/1030/1020 1021/1031/1021 1120/1131/1120 +f 1120/1131/1120 1021/1031/1021 1121/1132/1121 +f 1021/1031/1021 1022/1032/1022 1121/1132/1121 +f 1121/1132/1121 1022/1032/1022 1122/1133/1122 +f 1022/1032/1022 1023/1033/1023 1122/1133/1122 +f 1122/1133/1122 1023/1033/1023 1123/1134/1123 +f 1023/1033/1023 1024/1034/1024 1123/1134/1123 +f 1123/1134/1123 1024/1034/1024 1124/1135/1124 +f 1024/1034/1024 1025/1035/1025 1124/1135/1124 +f 1124/1135/1124 1025/1035/1025 1125/1136/1125 +f 1025/1035/1025 1026/1036/1026 1125/1136/1125 +f 1125/1136/1125 1026/1036/1026 1126/1137/1126 +f 1026/1036/1026 1027/1037/1027 1126/1137/1126 +f 1126/1137/1126 1027/1037/1027 1127/1138/1127 +f 1027/1037/1027 1028/1038/1028 1127/1138/1127 +f 1127/1138/1127 1028/1038/1028 1128/1139/1128 +f 1028/1038/1028 1029/1039/1029 1128/1139/1128 +f 1128/1139/1128 1029/1039/1029 1129/1140/1129 +f 1029/1039/1029 1030/1040/1030 1129/1140/1129 +f 1129/1140/1129 1030/1040/1030 1130/1141/1130 +f 1030/1040/1030 1031/1041/1031 1130/1141/1130 +f 1130/1141/1130 1031/1041/1031 1131/1142/1131 +f 1031/1041/1031 1032/1042/1032 1131/1142/1131 +f 1131/1142/1131 1032/1042/1032 1132/1143/1132 +f 1032/1042/1032 1033/1043/1033 1132/1143/1132 +f 1132/1143/1132 1033/1043/1033 1133/1144/1133 +f 1033/1043/1033 1034/1044/1034 1133/1144/1133 +f 1133/1144/1133 1034/1044/1034 1134/1145/1134 +f 1034/1044/1034 1035/1045/1035 1134/1145/1134 +f 1134/1145/1134 1035/1045/1035 1135/1146/1135 +f 1035/1045/1035 1036/1046/1036 1135/1146/1135 +f 1135/1146/1135 1036/1046/1036 1136/1147/1136 +f 1036/1046/1036 1037/1047/1037 1136/1147/1136 +f 1136/1147/1136 1037/1047/1037 1137/1148/1137 +f 1037/1047/1037 1038/1048/1038 1137/1148/1137 +f 1137/1148/1137 1038/1048/1038 1138/1149/1138 +f 1038/1048/1038 1039/1049/1039 1138/1149/1138 +f 1138/1149/1138 1039/1049/1039 1139/1150/1139 +f 1039/1049/1039 1040/1050/1040 1139/1150/1139 +f 1139/1150/1139 1040/1050/1040 1140/1151/1140 +f 1040/1050/1040 1041/1051/1041 1140/1151/1140 +f 1140/1151/1140 1041/1051/1041 1141/1152/1141 +f 1041/1051/1041 1042/1052/1042 1141/1152/1141 +f 1141/1152/1141 1042/1052/1042 1142/1153/1142 +f 1042/1052/1042 1043/1053/1043 1142/1153/1142 +f 1142/1153/1142 1043/1053/1043 1143/1154/1143 +f 1043/1053/1043 1044/1054/1044 1143/1154/1143 +f 1143/1154/1143 1044/1054/1044 1144/1155/1144 +f 1044/1054/1044 1045/1055/1045 1144/1155/1144 +f 1144/1155/1144 1045/1055/1045 1145/1156/1145 +f 1045/1055/1045 1046/1056/1046 1145/1156/1145 +f 1145/1156/1145 1046/1056/1046 1146/1157/1146 +f 1046/1056/1046 1047/1057/1047 1146/1157/1146 +f 1146/1157/1146 1047/1057/1047 1147/1158/1147 +f 1047/1057/1047 1048/1058/1048 1147/1158/1147 +f 1147/1158/1147 1048/1058/1048 1148/1159/1148 +f 1048/1058/1048 1049/1059/1049 1148/1159/1148 +f 1148/1159/1148 1049/1059/1049 1149/1160/1149 +f 1049/1059/1049 1050/1060/1050 1149/1160/1149 +f 1149/1160/1149 1050/1060/1050 1150/1161/1150 +f 1050/1060/1050 1051/1061/1051 1150/1161/1150 +f 1150/1161/1150 1051/1061/1051 1151/1162/1151 +f 1051/1061/1051 1052/1062/1052 1151/1162/1151 +f 1151/1162/1151 1052/1062/1052 1152/1163/1152 +f 1052/1062/1052 1053/1063/1053 1152/1163/1152 +f 1152/1163/1152 1053/1063/1053 1153/1164/1153 +f 1053/1063/1053 1054/1064/1054 1153/1164/1153 +f 1153/1164/1153 1054/1064/1054 1154/1165/1154 +f 1054/1064/1054 1055/1065/1055 1154/1165/1154 +f 1154/1165/1154 1055/1065/1055 1155/1166/1155 +f 1055/1065/1055 1056/1066/1056 1155/1166/1155 +f 1155/1166/1155 1056/1066/1056 1156/1167/1156 +f 1056/1066/1056 1057/1067/1057 1156/1167/1156 +f 1156/1167/1156 1057/1067/1057 1157/1168/1157 +f 1057/1067/1057 1058/1068/1058 1157/1168/1157 +f 1157/1168/1157 1058/1068/1058 1158/1169/1158 +f 1058/1068/1058 1059/1069/1059 1158/1169/1158 +f 1158/1169/1158 1059/1069/1059 1159/1170/1159 +f 1059/1069/1059 1060/1070/1060 1159/1170/1159 +f 1159/1170/1159 1060/1070/1060 1160/1171/1160 +f 1060/1070/1060 1061/1071/1061 1160/1171/1160 +f 1160/1171/1160 1061/1071/1061 1161/1172/1161 +f 1061/1071/1061 1062/1072/1062 1161/1172/1161 +f 1161/1172/1161 1062/1072/1062 1162/1173/1162 +f 1062/1072/1062 1063/1073/1063 1162/1173/1162 +f 1162/1173/1162 1063/1073/1063 1163/1174/1163 +f 1063/1073/1063 1064/1074/1064 1163/1174/1163 +f 1163/1174/1163 1064/1074/1064 1164/1175/1164 +f 1064/1074/1064 1065/1075/1065 1164/1175/1164 +f 1164/1175/1164 1065/1075/1065 1165/1176/1165 +f 1065/1075/1065 1066/1076/1066 1165/1176/1165 +f 1165/1176/1165 1066/1076/1066 1166/1177/1166 +f 1066/1076/1066 1067/1077/1067 1166/1177/1166 +f 1166/1177/1166 1067/1077/1067 1167/1178/1167 +f 1067/1077/1067 1068/1078/1068 1167/1178/1167 +f 1167/1178/1167 1068/1078/1068 1168/1179/1168 +f 1068/1078/1068 1069/1079/1069 1168/1179/1168 +f 1168/1179/1168 1069/1079/1069 1169/1180/1169 +f 1069/1079/1069 1070/1080/1070 1169/1180/1169 +f 1169/1180/1169 1070/1080/1070 1170/1181/1170 +f 1070/1080/1070 1071/1081/1071 1170/1181/1170 +f 1170/1181/1170 1071/1081/1071 1171/1182/1171 +f 1071/1081/1071 1072/1082/1072 1171/1182/1171 +f 1171/1182/1171 1072/1082/1072 1172/1183/1172 +f 1072/1082/1072 1073/1083/1073 1172/1183/1172 +f 1172/1183/1172 1073/1083/1073 1173/1184/1173 +f 1073/1083/1073 1074/1084/1074 1173/1184/1173 +f 1173/1184/1173 1074/1084/1074 1174/1185/1174 +f 1074/1084/1074 1075/1085/1075 1174/1185/1174 +f 1174/1185/1174 1075/1085/1075 1175/1186/1175 +f 1075/1085/1075 1076/1086/1076 1175/1186/1175 +f 1175/1186/1175 1076/1086/1076 1176/1187/1176 +f 1076/1086/1076 1077/1087/1077 1176/1187/1176 +f 1176/1187/1176 1077/1087/1077 1177/1188/1177 +f 1077/1087/1077 1078/1088/1078 1177/1188/1177 +f 1177/1188/1177 1078/1088/1078 1178/1189/1178 +f 1078/1088/1078 1079/1089/1079 1178/1189/1178 +f 1178/1189/1178 1079/1089/1079 1179/1190/1179 +f 1079/1089/1079 1080/1090/1080 1179/1190/1179 +f 1179/1190/1179 1080/1090/1080 1180/1191/1180 +f 1080/1090/1080 1081/1091/1081 1180/1191/1180 +f 1180/1191/1180 1081/1091/1081 1181/1192/1181 +f 1081/1091/1081 1082/1092/1082 1181/1192/1181 +f 1181/1192/1181 1082/1092/1082 1182/1193/1182 +f 1082/1092/1082 1083/1093/1083 1182/1193/1182 +f 1182/1193/1182 1083/1093/1083 1183/1194/1183 +f 1083/1093/1083 1084/1094/1084 1183/1194/1183 +f 1183/1194/1183 1084/1094/1084 1184/1195/1184 +f 1084/1094/1084 1085/1095/1085 1184/1195/1184 +f 1184/1195/1184 1085/1095/1085 1185/1196/1185 +f 1085/1095/1085 1086/1096/1086 1185/1196/1185 +f 1185/1196/1185 1086/1096/1086 1186/1197/1186 +f 1086/1096/1086 1087/1097/1087 1186/1197/1186 +f 1186/1197/1186 1087/1097/1087 1187/1198/1187 +f 1087/1097/1087 1088/1098/1088 1187/1198/1187 +f 1187/1198/1187 1088/1098/1088 1188/1199/1188 +f 1088/1098/1088 1089/1099/1089 1188/1199/1188 +f 1188/1199/1188 1089/1099/1089 1189/1200/1189 +f 1089/1099/1089 1090/1100/1090 1189/1200/1189 +f 1189/1200/1189 1090/1100/1090 1190/1201/1190 +f 1090/1100/1090 1091/1101/1091 1190/1201/1190 +f 1190/1201/1190 1091/1101/1091 1191/1202/1191 +f 1091/1101/1091 1092/1102/1092 1191/1202/1191 +f 1191/1202/1191 1092/1102/1092 1192/1203/1192 +f 1092/1102/1092 1093/1103/1093 1192/1203/1192 +f 1192/1203/1192 1093/1103/1093 1193/1204/1193 +f 1093/1103/1093 1094/1104/1094 1193/1204/1193 +f 1193/1204/1193 1094/1104/1094 1194/1205/1194 +f 1094/1104/1094 1095/1105/1095 1194/1205/1194 +f 1194/1205/1194 1095/1105/1095 1195/1206/1195 +f 1095/1105/1095 1096/1106/1096 1195/1206/1195 +f 1195/1206/1195 1096/1106/1096 1196/1207/1196 +f 1096/1106/1096 1097/1107/1097 1196/1207/1196 +f 1196/1207/1196 1097/1107/1097 1197/1208/1197 +f 1097/1107/1097 1098/1108/1098 1197/1208/1197 +f 1197/1208/1197 1098/1108/1098 1198/1209/1198 +f 1098/1108/1098 1099/1109/1099 1198/1209/1198 +f 1198/1209/1198 1099/1109/1099 1199/1210/1199 +f 1099/1109/1099 1100/1110/1100 1199/1210/1199 +f 1199/1210/1199 1100/1110/1100 1200/1211/1200 +f 1100/1110/1100 1001/1111/1001 1200/1211/1200 +f 1200/1211/1200 1001/1111/1001 1101/1212/1101 +f 1101/1112/1101 1102/1113/1102 1201/1213/1201 +f 1201/1213/1201 1102/1113/1102 1202/1214/1202 +f 1102/1113/1102 1103/1114/1103 1202/1214/1202 +f 1202/1214/1202 1103/1114/1103 1203/1215/1203 +f 1103/1114/1103 1104/1115/1104 1203/1215/1203 +f 1203/1215/1203 1104/1115/1104 1204/1216/1204 +f 1104/1115/1104 1105/1116/1105 1204/1216/1204 +f 1204/1216/1204 1105/1116/1105 1205/1217/1205 +f 1105/1116/1105 1106/1117/1106 1205/1217/1205 +f 1205/1217/1205 1106/1117/1106 1206/1218/1206 +f 1106/1117/1106 1107/1118/1107 1206/1218/1206 +f 1206/1218/1206 1107/1118/1107 1207/1219/1207 +f 1107/1118/1107 1108/1119/1108 1207/1219/1207 +f 1207/1219/1207 1108/1119/1108 1208/1220/1208 +f 1108/1119/1108 1109/1120/1109 1208/1220/1208 +f 1208/1220/1208 1109/1120/1109 1209/1221/1209 +f 1109/1120/1109 1110/1121/1110 1209/1221/1209 +f 1209/1221/1209 1110/1121/1110 1210/1222/1210 +f 1110/1121/1110 1111/1122/1111 1210/1222/1210 +f 1210/1222/1210 1111/1122/1111 1211/1223/1211 +f 1111/1122/1111 1112/1123/1112 1211/1223/1211 +f 1211/1223/1211 1112/1123/1112 1212/1224/1212 +f 1112/1123/1112 1113/1124/1113 1212/1224/1212 +f 1212/1224/1212 1113/1124/1113 1213/1225/1213 +f 1113/1124/1113 1114/1125/1114 1213/1225/1213 +f 1213/1225/1213 1114/1125/1114 1214/1226/1214 +f 1114/1125/1114 1115/1126/1115 1214/1226/1214 +f 1214/1226/1214 1115/1126/1115 1215/1227/1215 +f 1115/1126/1115 1116/1127/1116 1215/1227/1215 +f 1215/1227/1215 1116/1127/1116 1216/1228/1216 +f 1116/1127/1116 1117/1128/1117 1216/1228/1216 +f 1216/1228/1216 1117/1128/1117 1217/1229/1217 +f 1117/1128/1117 1118/1129/1118 1217/1229/1217 +f 1217/1229/1217 1118/1129/1118 1218/1230/1218 +f 1118/1129/1118 1119/1130/1119 1218/1230/1218 +f 1218/1230/1218 1119/1130/1119 1219/1231/1219 +f 1119/1130/1119 1120/1131/1120 1219/1231/1219 +f 1219/1231/1219 1120/1131/1120 1220/1232/1220 +f 1120/1131/1120 1121/1132/1121 1220/1232/1220 +f 1220/1232/1220 1121/1132/1121 1221/1233/1221 +f 1121/1132/1121 1122/1133/1122 1221/1233/1221 +f 1221/1233/1221 1122/1133/1122 1222/1234/1222 +f 1122/1133/1122 1123/1134/1123 1222/1234/1222 +f 1222/1234/1222 1123/1134/1123 1223/1235/1223 +f 1123/1134/1123 1124/1135/1124 1223/1235/1223 +f 1223/1235/1223 1124/1135/1124 1224/1236/1224 +f 1124/1135/1124 1125/1136/1125 1224/1236/1224 +f 1224/1236/1224 1125/1136/1125 1225/1237/1225 +f 1125/1136/1125 1126/1137/1126 1225/1237/1225 +f 1225/1237/1225 1126/1137/1126 1226/1238/1226 +f 1126/1137/1126 1127/1138/1127 1226/1238/1226 +f 1226/1238/1226 1127/1138/1127 1227/1239/1227 +f 1127/1138/1127 1128/1139/1128 1227/1239/1227 +f 1227/1239/1227 1128/1139/1128 1228/1240/1228 +f 1128/1139/1128 1129/1140/1129 1228/1240/1228 +f 1228/1240/1228 1129/1140/1129 1229/1241/1229 +f 1129/1140/1129 1130/1141/1130 1229/1241/1229 +f 1229/1241/1229 1130/1141/1130 1230/1242/1230 +f 1130/1141/1130 1131/1142/1131 1230/1242/1230 +f 1230/1242/1230 1131/1142/1131 1231/1243/1231 +f 1131/1142/1131 1132/1143/1132 1231/1243/1231 +f 1231/1243/1231 1132/1143/1132 1232/1244/1232 +f 1132/1143/1132 1133/1144/1133 1232/1244/1232 +f 1232/1244/1232 1133/1144/1133 1233/1245/1233 +f 1133/1144/1133 1134/1145/1134 1233/1245/1233 +f 1233/1245/1233 1134/1145/1134 1234/1246/1234 +f 1134/1145/1134 1135/1146/1135 1234/1246/1234 +f 1234/1246/1234 1135/1146/1135 1235/1247/1235 +f 1135/1146/1135 1136/1147/1136 1235/1247/1235 +f 1235/1247/1235 1136/1147/1136 1236/1248/1236 +f 1136/1147/1136 1137/1148/1137 1236/1248/1236 +f 1236/1248/1236 1137/1148/1137 1237/1249/1237 +f 1137/1148/1137 1138/1149/1138 1237/1249/1237 +f 1237/1249/1237 1138/1149/1138 1238/1250/1238 +f 1138/1149/1138 1139/1150/1139 1238/1250/1238 +f 1238/1250/1238 1139/1150/1139 1239/1251/1239 +f 1139/1150/1139 1140/1151/1140 1239/1251/1239 +f 1239/1251/1239 1140/1151/1140 1240/1252/1240 +f 1140/1151/1140 1141/1152/1141 1240/1252/1240 +f 1240/1252/1240 1141/1152/1141 1241/1253/1241 +f 1141/1152/1141 1142/1153/1142 1241/1253/1241 +f 1241/1253/1241 1142/1153/1142 1242/1254/1242 +f 1142/1153/1142 1143/1154/1143 1242/1254/1242 +f 1242/1254/1242 1143/1154/1143 1243/1255/1243 +f 1143/1154/1143 1144/1155/1144 1243/1255/1243 +f 1243/1255/1243 1144/1155/1144 1244/1256/1244 +f 1144/1155/1144 1145/1156/1145 1244/1256/1244 +f 1244/1256/1244 1145/1156/1145 1245/1257/1245 +f 1145/1156/1145 1146/1157/1146 1245/1257/1245 +f 1245/1257/1245 1146/1157/1146 1246/1258/1246 +f 1146/1157/1146 1147/1158/1147 1246/1258/1246 +f 1246/1258/1246 1147/1158/1147 1247/1259/1247 +f 1147/1158/1147 1148/1159/1148 1247/1259/1247 +f 1247/1259/1247 1148/1159/1148 1248/1260/1248 +f 1148/1159/1148 1149/1160/1149 1248/1260/1248 +f 1248/1260/1248 1149/1160/1149 1249/1261/1249 +f 1149/1160/1149 1150/1161/1150 1249/1261/1249 +f 1249/1261/1249 1150/1161/1150 1250/1262/1250 +f 1150/1161/1150 1151/1162/1151 1250/1262/1250 +f 1250/1262/1250 1151/1162/1151 1251/1263/1251 +f 1151/1162/1151 1152/1163/1152 1251/1263/1251 +f 1251/1263/1251 1152/1163/1152 1252/1264/1252 +f 1152/1163/1152 1153/1164/1153 1252/1264/1252 +f 1252/1264/1252 1153/1164/1153 1253/1265/1253 +f 1153/1164/1153 1154/1165/1154 1253/1265/1253 +f 1253/1265/1253 1154/1165/1154 1254/1266/1254 +f 1154/1165/1154 1155/1166/1155 1254/1266/1254 +f 1254/1266/1254 1155/1166/1155 1255/1267/1255 +f 1155/1166/1155 1156/1167/1156 1255/1267/1255 +f 1255/1267/1255 1156/1167/1156 1256/1268/1256 +f 1156/1167/1156 1157/1168/1157 1256/1268/1256 +f 1256/1268/1256 1157/1168/1157 1257/1269/1257 +f 1157/1168/1157 1158/1169/1158 1257/1269/1257 +f 1257/1269/1257 1158/1169/1158 1258/1270/1258 +f 1158/1169/1158 1159/1170/1159 1258/1270/1258 +f 1258/1270/1258 1159/1170/1159 1259/1271/1259 +f 1159/1170/1159 1160/1171/1160 1259/1271/1259 +f 1259/1271/1259 1160/1171/1160 1260/1272/1260 +f 1160/1171/1160 1161/1172/1161 1260/1272/1260 +f 1260/1272/1260 1161/1172/1161 1261/1273/1261 +f 1161/1172/1161 1162/1173/1162 1261/1273/1261 +f 1261/1273/1261 1162/1173/1162 1262/1274/1262 +f 1162/1173/1162 1163/1174/1163 1262/1274/1262 +f 1262/1274/1262 1163/1174/1163 1263/1275/1263 +f 1163/1174/1163 1164/1175/1164 1263/1275/1263 +f 1263/1275/1263 1164/1175/1164 1264/1276/1264 +f 1164/1175/1164 1165/1176/1165 1264/1276/1264 +f 1264/1276/1264 1165/1176/1165 1265/1277/1265 +f 1165/1176/1165 1166/1177/1166 1265/1277/1265 +f 1265/1277/1265 1166/1177/1166 1266/1278/1266 +f 1166/1177/1166 1167/1178/1167 1266/1278/1266 +f 1266/1278/1266 1167/1178/1167 1267/1279/1267 +f 1167/1178/1167 1168/1179/1168 1267/1279/1267 +f 1267/1279/1267 1168/1179/1168 1268/1280/1268 +f 1168/1179/1168 1169/1180/1169 1268/1280/1268 +f 1268/1280/1268 1169/1180/1169 1269/1281/1269 +f 1169/1180/1169 1170/1181/1170 1269/1281/1269 +f 1269/1281/1269 1170/1181/1170 1270/1282/1270 +f 1170/1181/1170 1171/1182/1171 1270/1282/1270 +f 1270/1282/1270 1171/1182/1171 1271/1283/1271 +f 1171/1182/1171 1172/1183/1172 1271/1283/1271 +f 1271/1283/1271 1172/1183/1172 1272/1284/1272 +f 1172/1183/1172 1173/1184/1173 1272/1284/1272 +f 1272/1284/1272 1173/1184/1173 1273/1285/1273 +f 1173/1184/1173 1174/1185/1174 1273/1285/1273 +f 1273/1285/1273 1174/1185/1174 1274/1286/1274 +f 1174/1185/1174 1175/1186/1175 1274/1286/1274 +f 1274/1286/1274 1175/1186/1175 1275/1287/1275 +f 1175/1186/1175 1176/1187/1176 1275/1287/1275 +f 1275/1287/1275 1176/1187/1176 1276/1288/1276 +f 1176/1187/1176 1177/1188/1177 1276/1288/1276 +f 1276/1288/1276 1177/1188/1177 1277/1289/1277 +f 1177/1188/1177 1178/1189/1178 1277/1289/1277 +f 1277/1289/1277 1178/1189/1178 1278/1290/1278 +f 1178/1189/1178 1179/1190/1179 1278/1290/1278 +f 1278/1290/1278 1179/1190/1179 1279/1291/1279 +f 1179/1190/1179 1180/1191/1180 1279/1291/1279 +f 1279/1291/1279 1180/1191/1180 1280/1292/1280 +f 1180/1191/1180 1181/1192/1181 1280/1292/1280 +f 1280/1292/1280 1181/1192/1181 1281/1293/1281 +f 1181/1192/1181 1182/1193/1182 1281/1293/1281 +f 1281/1293/1281 1182/1193/1182 1282/1294/1282 +f 1182/1193/1182 1183/1194/1183 1282/1294/1282 +f 1282/1294/1282 1183/1194/1183 1283/1295/1283 +f 1183/1194/1183 1184/1195/1184 1283/1295/1283 +f 1283/1295/1283 1184/1195/1184 1284/1296/1284 +f 1184/1195/1184 1185/1196/1185 1284/1296/1284 +f 1284/1296/1284 1185/1196/1185 1285/1297/1285 +f 1185/1196/1185 1186/1197/1186 1285/1297/1285 +f 1285/1297/1285 1186/1197/1186 1286/1298/1286 +f 1186/1197/1186 1187/1198/1187 1286/1298/1286 +f 1286/1298/1286 1187/1198/1187 1287/1299/1287 +f 1187/1198/1187 1188/1199/1188 1287/1299/1287 +f 1287/1299/1287 1188/1199/1188 1288/1300/1288 +f 1188/1199/1188 1189/1200/1189 1288/1300/1288 +f 1288/1300/1288 1189/1200/1189 1289/1301/1289 +f 1189/1200/1189 1190/1201/1190 1289/1301/1289 +f 1289/1301/1289 1190/1201/1190 1290/1302/1290 +f 1190/1201/1190 1191/1202/1191 1290/1302/1290 +f 1290/1302/1290 1191/1202/1191 1291/1303/1291 +f 1191/1202/1191 1192/1203/1192 1291/1303/1291 +f 1291/1303/1291 1192/1203/1192 1292/1304/1292 +f 1192/1203/1192 1193/1204/1193 1292/1304/1292 +f 1292/1304/1292 1193/1204/1193 1293/1305/1293 +f 1193/1204/1193 1194/1205/1194 1293/1305/1293 +f 1293/1305/1293 1194/1205/1194 1294/1306/1294 +f 1194/1205/1194 1195/1206/1195 1294/1306/1294 +f 1294/1306/1294 1195/1206/1195 1295/1307/1295 +f 1195/1206/1195 1196/1207/1196 1295/1307/1295 +f 1295/1307/1295 1196/1207/1196 1296/1308/1296 +f 1196/1207/1196 1197/1208/1197 1296/1308/1296 +f 1296/1308/1296 1197/1208/1197 1297/1309/1297 +f 1197/1208/1197 1198/1209/1198 1297/1309/1297 +f 1297/1309/1297 1198/1209/1198 1298/1310/1298 +f 1198/1209/1198 1199/1210/1199 1298/1310/1298 +f 1298/1310/1298 1199/1210/1199 1299/1311/1299 +f 1199/1210/1199 1200/1211/1200 1299/1311/1299 +f 1299/1311/1299 1200/1211/1200 1300/1312/1300 +f 1200/1211/1200 1101/1212/1101 1300/1312/1300 +f 1300/1312/1300 1101/1212/1101 1201/1313/1201 +f 1201/1213/1201 1202/1214/1202 1301/1314/1301 +f 1301/1314/1301 1202/1214/1202 1302/1315/1302 +f 1202/1214/1202 1203/1215/1203 1302/1315/1302 +f 1302/1315/1302 1203/1215/1203 1303/1316/1303 +f 1203/1215/1203 1204/1216/1204 1303/1316/1303 +f 1303/1316/1303 1204/1216/1204 1304/1317/1304 +f 1204/1216/1204 1205/1217/1205 1304/1317/1304 +f 1304/1317/1304 1205/1217/1205 1305/1318/1305 +f 1205/1217/1205 1206/1218/1206 1305/1318/1305 +f 1305/1318/1305 1206/1218/1206 1306/1319/1306 +f 1206/1218/1206 1207/1219/1207 1306/1319/1306 +f 1306/1319/1306 1207/1219/1207 1307/1320/1307 +f 1207/1219/1207 1208/1220/1208 1307/1320/1307 +f 1307/1320/1307 1208/1220/1208 1308/1321/1308 +f 1208/1220/1208 1209/1221/1209 1308/1321/1308 +f 1308/1321/1308 1209/1221/1209 1309/1322/1309 +f 1209/1221/1209 1210/1222/1210 1309/1322/1309 +f 1309/1322/1309 1210/1222/1210 1310/1323/1310 +f 1210/1222/1210 1211/1223/1211 1310/1323/1310 +f 1310/1323/1310 1211/1223/1211 1311/1324/1311 +f 1211/1223/1211 1212/1224/1212 1311/1324/1311 +f 1311/1324/1311 1212/1224/1212 1312/1325/1312 +f 1212/1224/1212 1213/1225/1213 1312/1325/1312 +f 1312/1325/1312 1213/1225/1213 1313/1326/1313 +f 1213/1225/1213 1214/1226/1214 1313/1326/1313 +f 1313/1326/1313 1214/1226/1214 1314/1327/1314 +f 1214/1226/1214 1215/1227/1215 1314/1327/1314 +f 1314/1327/1314 1215/1227/1215 1315/1328/1315 +f 1215/1227/1215 1216/1228/1216 1315/1328/1315 +f 1315/1328/1315 1216/1228/1216 1316/1329/1316 +f 1216/1228/1216 1217/1229/1217 1316/1329/1316 +f 1316/1329/1316 1217/1229/1217 1317/1330/1317 +f 1217/1229/1217 1218/1230/1218 1317/1330/1317 +f 1317/1330/1317 1218/1230/1218 1318/1331/1318 +f 1218/1230/1218 1219/1231/1219 1318/1331/1318 +f 1318/1331/1318 1219/1231/1219 1319/1332/1319 +f 1219/1231/1219 1220/1232/1220 1319/1332/1319 +f 1319/1332/1319 1220/1232/1220 1320/1333/1320 +f 1220/1232/1220 1221/1233/1221 1320/1333/1320 +f 1320/1333/1320 1221/1233/1221 1321/1334/1321 +f 1221/1233/1221 1222/1234/1222 1321/1334/1321 +f 1321/1334/1321 1222/1234/1222 1322/1335/1322 +f 1222/1234/1222 1223/1235/1223 1322/1335/1322 +f 1322/1335/1322 1223/1235/1223 1323/1336/1323 +f 1223/1235/1223 1224/1236/1224 1323/1336/1323 +f 1323/1336/1323 1224/1236/1224 1324/1337/1324 +f 1224/1236/1224 1225/1237/1225 1324/1337/1324 +f 1324/1337/1324 1225/1237/1225 1325/1338/1325 +f 1225/1237/1225 1226/1238/1226 1325/1338/1325 +f 1325/1338/1325 1226/1238/1226 1326/1339/1326 +f 1226/1238/1226 1227/1239/1227 1326/1339/1326 +f 1326/1339/1326 1227/1239/1227 1327/1340/1327 +f 1227/1239/1227 1228/1240/1228 1327/1340/1327 +f 1327/1340/1327 1228/1240/1228 1328/1341/1328 +f 1228/1240/1228 1229/1241/1229 1328/1341/1328 +f 1328/1341/1328 1229/1241/1229 1329/1342/1329 +f 1229/1241/1229 1230/1242/1230 1329/1342/1329 +f 1329/1342/1329 1230/1242/1230 1330/1343/1330 +f 1230/1242/1230 1231/1243/1231 1330/1343/1330 +f 1330/1343/1330 1231/1243/1231 1331/1344/1331 +f 1231/1243/1231 1232/1244/1232 1331/1344/1331 +f 1331/1344/1331 1232/1244/1232 1332/1345/1332 +f 1232/1244/1232 1233/1245/1233 1332/1345/1332 +f 1332/1345/1332 1233/1245/1233 1333/1346/1333 +f 1233/1245/1233 1234/1246/1234 1333/1346/1333 +f 1333/1346/1333 1234/1246/1234 1334/1347/1334 +f 1234/1246/1234 1235/1247/1235 1334/1347/1334 +f 1334/1347/1334 1235/1247/1235 1335/1348/1335 +f 1235/1247/1235 1236/1248/1236 1335/1348/1335 +f 1335/1348/1335 1236/1248/1236 1336/1349/1336 +f 1236/1248/1236 1237/1249/1237 1336/1349/1336 +f 1336/1349/1336 1237/1249/1237 1337/1350/1337 +f 1237/1249/1237 1238/1250/1238 1337/1350/1337 +f 1337/1350/1337 1238/1250/1238 1338/1351/1338 +f 1238/1250/1238 1239/1251/1239 1338/1351/1338 +f 1338/1351/1338 1239/1251/1239 1339/1352/1339 +f 1239/1251/1239 1240/1252/1240 1339/1352/1339 +f 1339/1352/1339 1240/1252/1240 1340/1353/1340 +f 1240/1252/1240 1241/1253/1241 1340/1353/1340 +f 1340/1353/1340 1241/1253/1241 1341/1354/1341 +f 1241/1253/1241 1242/1254/1242 1341/1354/1341 +f 1341/1354/1341 1242/1254/1242 1342/1355/1342 +f 1242/1254/1242 1243/1255/1243 1342/1355/1342 +f 1342/1355/1342 1243/1255/1243 1343/1356/1343 +f 1243/1255/1243 1244/1256/1244 1343/1356/1343 +f 1343/1356/1343 1244/1256/1244 1344/1357/1344 +f 1244/1256/1244 1245/1257/1245 1344/1357/1344 +f 1344/1357/1344 1245/1257/1245 1345/1358/1345 +f 1245/1257/1245 1246/1258/1246 1345/1358/1345 +f 1345/1358/1345 1246/1258/1246 1346/1359/1346 +f 1246/1258/1246 1247/1259/1247 1346/1359/1346 +f 1346/1359/1346 1247/1259/1247 1347/1360/1347 +f 1247/1259/1247 1248/1260/1248 1347/1360/1347 +f 1347/1360/1347 1248/1260/1248 1348/1361/1348 +f 1248/1260/1248 1249/1261/1249 1348/1361/1348 +f 1348/1361/1348 1249/1261/1249 1349/1362/1349 +f 1249/1261/1249 1250/1262/1250 1349/1362/1349 +f 1349/1362/1349 1250/1262/1250 1350/1363/1350 +f 1250/1262/1250 1251/1263/1251 1350/1363/1350 +f 1350/1363/1350 1251/1263/1251 1351/1364/1351 +f 1251/1263/1251 1252/1264/1252 1351/1364/1351 +f 1351/1364/1351 1252/1264/1252 1352/1365/1352 +f 1252/1264/1252 1253/1265/1253 1352/1365/1352 +f 1352/1365/1352 1253/1265/1253 1353/1366/1353 +f 1253/1265/1253 1254/1266/1254 1353/1366/1353 +f 1353/1366/1353 1254/1266/1254 1354/1367/1354 +f 1254/1266/1254 1255/1267/1255 1354/1367/1354 +f 1354/1367/1354 1255/1267/1255 1355/1368/1355 +f 1255/1267/1255 1256/1268/1256 1355/1368/1355 +f 1355/1368/1355 1256/1268/1256 1356/1369/1356 +f 1256/1268/1256 1257/1269/1257 1356/1369/1356 +f 1356/1369/1356 1257/1269/1257 1357/1370/1357 +f 1257/1269/1257 1258/1270/1258 1357/1370/1357 +f 1357/1370/1357 1258/1270/1258 1358/1371/1358 +f 1258/1270/1258 1259/1271/1259 1358/1371/1358 +f 1358/1371/1358 1259/1271/1259 1359/1372/1359 +f 1259/1271/1259 1260/1272/1260 1359/1372/1359 +f 1359/1372/1359 1260/1272/1260 1360/1373/1360 +f 1260/1272/1260 1261/1273/1261 1360/1373/1360 +f 1360/1373/1360 1261/1273/1261 1361/1374/1361 +f 1261/1273/1261 1262/1274/1262 1361/1374/1361 +f 1361/1374/1361 1262/1274/1262 1362/1375/1362 +f 1262/1274/1262 1263/1275/1263 1362/1375/1362 +f 1362/1375/1362 1263/1275/1263 1363/1376/1363 +f 1263/1275/1263 1264/1276/1264 1363/1376/1363 +f 1363/1376/1363 1264/1276/1264 1364/1377/1364 +f 1264/1276/1264 1265/1277/1265 1364/1377/1364 +f 1364/1377/1364 1265/1277/1265 1365/1378/1365 +f 1265/1277/1265 1266/1278/1266 1365/1378/1365 +f 1365/1378/1365 1266/1278/1266 1366/1379/1366 +f 1266/1278/1266 1267/1279/1267 1366/1379/1366 +f 1366/1379/1366 1267/1279/1267 1367/1380/1367 +f 1267/1279/1267 1268/1280/1268 1367/1380/1367 +f 1367/1380/1367 1268/1280/1268 1368/1381/1368 +f 1268/1280/1268 1269/1281/1269 1368/1381/1368 +f 1368/1381/1368 1269/1281/1269 1369/1382/1369 +f 1269/1281/1269 1270/1282/1270 1369/1382/1369 +f 1369/1382/1369 1270/1282/1270 1370/1383/1370 +f 1270/1282/1270 1271/1283/1271 1370/1383/1370 +f 1370/1383/1370 1271/1283/1271 1371/1384/1371 +f 1271/1283/1271 1272/1284/1272 1371/1384/1371 +f 1371/1384/1371 1272/1284/1272 1372/1385/1372 +f 1272/1284/1272 1273/1285/1273 1372/1385/1372 +f 1372/1385/1372 1273/1285/1273 1373/1386/1373 +f 1273/1285/1273 1274/1286/1274 1373/1386/1373 +f 1373/1386/1373 1274/1286/1274 1374/1387/1374 +f 1274/1286/1274 1275/1287/1275 1374/1387/1374 +f 1374/1387/1374 1275/1287/1275 1375/1388/1375 +f 1275/1287/1275 1276/1288/1276 1375/1388/1375 +f 1375/1388/1375 1276/1288/1276 1376/1389/1376 +f 1276/1288/1276 1277/1289/1277 1376/1389/1376 +f 1376/1389/1376 1277/1289/1277 1377/1390/1377 +f 1277/1289/1277 1278/1290/1278 1377/1390/1377 +f 1377/1390/1377 1278/1290/1278 1378/1391/1378 +f 1278/1290/1278 1279/1291/1279 1378/1391/1378 +f 1378/1391/1378 1279/1291/1279 1379/1392/1379 +f 1279/1291/1279 1280/1292/1280 1379/1392/1379 +f 1379/1392/1379 1280/1292/1280 1380/1393/1380 +f 1280/1292/1280 1281/1293/1281 1380/1393/1380 +f 1380/1393/1380 1281/1293/1281 1381/1394/1381 +f 1281/1293/1281 1282/1294/1282 1381/1394/1381 +f 1381/1394/1381 1282/1294/1282 1382/1395/1382 +f 1282/1294/1282 1283/1295/1283 1382/1395/1382 +f 1382/1395/1382 1283/1295/1283 1383/1396/1383 +f 1283/1295/1283 1284/1296/1284 1383/1396/1383 +f 1383/1396/1383 1284/1296/1284 1384/1397/1384 +f 1284/1296/1284 1285/1297/1285 1384/1397/1384 +f 1384/1397/1384 1285/1297/1285 1385/1398/1385 +f 1285/1297/1285 1286/1298/1286 1385/1398/1385 +f 1385/1398/1385 1286/1298/1286 1386/1399/1386 +f 1286/1298/1286 1287/1299/1287 1386/1399/1386 +f 1386/1399/1386 1287/1299/1287 1387/1400/1387 +f 1287/1299/1287 1288/1300/1288 1387/1400/1387 +f 1387/1400/1387 1288/1300/1288 1388/1401/1388 +f 1288/1300/1288 1289/1301/1289 1388/1401/1388 +f 1388/1401/1388 1289/1301/1289 1389/1402/1389 +f 1289/1301/1289 1290/1302/1290 1389/1402/1389 +f 1389/1402/1389 1290/1302/1290 1390/1403/1390 +f 1290/1302/1290 1291/1303/1291 1390/1403/1390 +f 1390/1403/1390 1291/1303/1291 1391/1404/1391 +f 1291/1303/1291 1292/1304/1292 1391/1404/1391 +f 1391/1404/1391 1292/1304/1292 1392/1405/1392 +f 1292/1304/1292 1293/1305/1293 1392/1405/1392 +f 1392/1405/1392 1293/1305/1293 1393/1406/1393 +f 1293/1305/1293 1294/1306/1294 1393/1406/1393 +f 1393/1406/1393 1294/1306/1294 1394/1407/1394 +f 1294/1306/1294 1295/1307/1295 1394/1407/1394 +f 1394/1407/1394 1295/1307/1295 1395/1408/1395 +f 1295/1307/1295 1296/1308/1296 1395/1408/1395 +f 1395/1408/1395 1296/1308/1296 1396/1409/1396 +f 1296/1308/1296 1297/1309/1297 1396/1409/1396 +f 1396/1409/1396 1297/1309/1297 1397/1410/1397 +f 1297/1309/1297 1298/1310/1298 1397/1410/1397 +f 1397/1410/1397 1298/1310/1298 1398/1411/1398 +f 1298/1310/1298 1299/1311/1299 1398/1411/1398 +f 1398/1411/1398 1299/1311/1299 1399/1412/1399 +f 1299/1311/1299 1300/1312/1300 1399/1412/1399 +f 1399/1412/1399 1300/1312/1300 1400/1413/1400 +f 1300/1312/1300 1201/1313/1201 1400/1413/1400 +f 1400/1413/1400 1201/1313/1201 1301/1414/1301 +f 1301/1314/1301 1302/1315/1302 1401/1415/1401 +f 1401/1415/1401 1302/1315/1302 1402/1416/1402 +f 1302/1315/1302 1303/1316/1303 1402/1416/1402 +f 1402/1416/1402 1303/1316/1303 1403/1417/1403 +f 1303/1316/1303 1304/1317/1304 1403/1417/1403 +f 1403/1417/1403 1304/1317/1304 1404/1418/1404 +f 1304/1317/1304 1305/1318/1305 1404/1418/1404 +f 1404/1418/1404 1305/1318/1305 1405/1419/1405 +f 1305/1318/1305 1306/1319/1306 1405/1419/1405 +f 1405/1419/1405 1306/1319/1306 1406/1420/1406 +f 1306/1319/1306 1307/1320/1307 1406/1420/1406 +f 1406/1420/1406 1307/1320/1307 1407/1421/1407 +f 1307/1320/1307 1308/1321/1308 1407/1421/1407 +f 1407/1421/1407 1308/1321/1308 1408/1422/1408 +f 1308/1321/1308 1309/1322/1309 1408/1422/1408 +f 1408/1422/1408 1309/1322/1309 1409/1423/1409 +f 1309/1322/1309 1310/1323/1310 1409/1423/1409 +f 1409/1423/1409 1310/1323/1310 1410/1424/1410 +f 1310/1323/1310 1311/1324/1311 1410/1424/1410 +f 1410/1424/1410 1311/1324/1311 1411/1425/1411 +f 1311/1324/1311 1312/1325/1312 1411/1425/1411 +f 1411/1425/1411 1312/1325/1312 1412/1426/1412 +f 1312/1325/1312 1313/1326/1313 1412/1426/1412 +f 1412/1426/1412 1313/1326/1313 1413/1427/1413 +f 1313/1326/1313 1314/1327/1314 1413/1427/1413 +f 1413/1427/1413 1314/1327/1314 1414/1428/1414 +f 1314/1327/1314 1315/1328/1315 1414/1428/1414 +f 1414/1428/1414 1315/1328/1315 1415/1429/1415 +f 1315/1328/1315 1316/1329/1316 1415/1429/1415 +f 1415/1429/1415 1316/1329/1316 1416/1430/1416 +f 1316/1329/1316 1317/1330/1317 1416/1430/1416 +f 1416/1430/1416 1317/1330/1317 1417/1431/1417 +f 1317/1330/1317 1318/1331/1318 1417/1431/1417 +f 1417/1431/1417 1318/1331/1318 1418/1432/1418 +f 1318/1331/1318 1319/1332/1319 1418/1432/1418 +f 1418/1432/1418 1319/1332/1319 1419/1433/1419 +f 1319/1332/1319 1320/1333/1320 1419/1433/1419 +f 1419/1433/1419 1320/1333/1320 1420/1434/1420 +f 1320/1333/1320 1321/1334/1321 1420/1434/1420 +f 1420/1434/1420 1321/1334/1321 1421/1435/1421 +f 1321/1334/1321 1322/1335/1322 1421/1435/1421 +f 1421/1435/1421 1322/1335/1322 1422/1436/1422 +f 1322/1335/1322 1323/1336/1323 1422/1436/1422 +f 1422/1436/1422 1323/1336/1323 1423/1437/1423 +f 1323/1336/1323 1324/1337/1324 1423/1437/1423 +f 1423/1437/1423 1324/1337/1324 1424/1438/1424 +f 1324/1337/1324 1325/1338/1325 1424/1438/1424 +f 1424/1438/1424 1325/1338/1325 1425/1439/1425 +f 1325/1338/1325 1326/1339/1326 1425/1439/1425 +f 1425/1439/1425 1326/1339/1326 1426/1440/1426 +f 1326/1339/1326 1327/1340/1327 1426/1440/1426 +f 1426/1440/1426 1327/1340/1327 1427/1441/1427 +f 1327/1340/1327 1328/1341/1328 1427/1441/1427 +f 1427/1441/1427 1328/1341/1328 1428/1442/1428 +f 1328/1341/1328 1329/1342/1329 1428/1442/1428 +f 1428/1442/1428 1329/1342/1329 1429/1443/1429 +f 1329/1342/1329 1330/1343/1330 1429/1443/1429 +f 1429/1443/1429 1330/1343/1330 1430/1444/1430 +f 1330/1343/1330 1331/1344/1331 1430/1444/1430 +f 1430/1444/1430 1331/1344/1331 1431/1445/1431 +f 1331/1344/1331 1332/1345/1332 1431/1445/1431 +f 1431/1445/1431 1332/1345/1332 1432/1446/1432 +f 1332/1345/1332 1333/1346/1333 1432/1446/1432 +f 1432/1446/1432 1333/1346/1333 1433/1447/1433 +f 1333/1346/1333 1334/1347/1334 1433/1447/1433 +f 1433/1447/1433 1334/1347/1334 1434/1448/1434 +f 1334/1347/1334 1335/1348/1335 1434/1448/1434 +f 1434/1448/1434 1335/1348/1335 1435/1449/1435 +f 1335/1348/1335 1336/1349/1336 1435/1449/1435 +f 1435/1449/1435 1336/1349/1336 1436/1450/1436 +f 1336/1349/1336 1337/1350/1337 1436/1450/1436 +f 1436/1450/1436 1337/1350/1337 1437/1451/1437 +f 1337/1350/1337 1338/1351/1338 1437/1451/1437 +f 1437/1451/1437 1338/1351/1338 1438/1452/1438 +f 1338/1351/1338 1339/1352/1339 1438/1452/1438 +f 1438/1452/1438 1339/1352/1339 1439/1453/1439 +f 1339/1352/1339 1340/1353/1340 1439/1453/1439 +f 1439/1453/1439 1340/1353/1340 1440/1454/1440 +f 1340/1353/1340 1341/1354/1341 1440/1454/1440 +f 1440/1454/1440 1341/1354/1341 1441/1455/1441 +f 1341/1354/1341 1342/1355/1342 1441/1455/1441 +f 1441/1455/1441 1342/1355/1342 1442/1456/1442 +f 1342/1355/1342 1343/1356/1343 1442/1456/1442 +f 1442/1456/1442 1343/1356/1343 1443/1457/1443 +f 1343/1356/1343 1344/1357/1344 1443/1457/1443 +f 1443/1457/1443 1344/1357/1344 1444/1458/1444 +f 1344/1357/1344 1345/1358/1345 1444/1458/1444 +f 1444/1458/1444 1345/1358/1345 1445/1459/1445 +f 1345/1358/1345 1346/1359/1346 1445/1459/1445 +f 1445/1459/1445 1346/1359/1346 1446/1460/1446 +f 1346/1359/1346 1347/1360/1347 1446/1460/1446 +f 1446/1460/1446 1347/1360/1347 1447/1461/1447 +f 1347/1360/1347 1348/1361/1348 1447/1461/1447 +f 1447/1461/1447 1348/1361/1348 1448/1462/1448 +f 1348/1361/1348 1349/1362/1349 1448/1462/1448 +f 1448/1462/1448 1349/1362/1349 1449/1463/1449 +f 1349/1362/1349 1350/1363/1350 1449/1463/1449 +f 1449/1463/1449 1350/1363/1350 1450/1464/1450 +f 1350/1363/1350 1351/1364/1351 1450/1464/1450 +f 1450/1464/1450 1351/1364/1351 1451/1465/1451 +f 1351/1364/1351 1352/1365/1352 1451/1465/1451 +f 1451/1465/1451 1352/1365/1352 1452/1466/1452 +f 1352/1365/1352 1353/1366/1353 1452/1466/1452 +f 1452/1466/1452 1353/1366/1353 1453/1467/1453 +f 1353/1366/1353 1354/1367/1354 1453/1467/1453 +f 1453/1467/1453 1354/1367/1354 1454/1468/1454 +f 1354/1367/1354 1355/1368/1355 1454/1468/1454 +f 1454/1468/1454 1355/1368/1355 1455/1469/1455 +f 1355/1368/1355 1356/1369/1356 1455/1469/1455 +f 1455/1469/1455 1356/1369/1356 1456/1470/1456 +f 1356/1369/1356 1357/1370/1357 1456/1470/1456 +f 1456/1470/1456 1357/1370/1357 1457/1471/1457 +f 1357/1370/1357 1358/1371/1358 1457/1471/1457 +f 1457/1471/1457 1358/1371/1358 1458/1472/1458 +f 1358/1371/1358 1359/1372/1359 1458/1472/1458 +f 1458/1472/1458 1359/1372/1359 1459/1473/1459 +f 1359/1372/1359 1360/1373/1360 1459/1473/1459 +f 1459/1473/1459 1360/1373/1360 1460/1474/1460 +f 1360/1373/1360 1361/1374/1361 1460/1474/1460 +f 1460/1474/1460 1361/1374/1361 1461/1475/1461 +f 1361/1374/1361 1362/1375/1362 1461/1475/1461 +f 1461/1475/1461 1362/1375/1362 1462/1476/1462 +f 1362/1375/1362 1363/1376/1363 1462/1476/1462 +f 1462/1476/1462 1363/1376/1363 1463/1477/1463 +f 1363/1376/1363 1364/1377/1364 1463/1477/1463 +f 1463/1477/1463 1364/1377/1364 1464/1478/1464 +f 1364/1377/1364 1365/1378/1365 1464/1478/1464 +f 1464/1478/1464 1365/1378/1365 1465/1479/1465 +f 1365/1378/1365 1366/1379/1366 1465/1479/1465 +f 1465/1479/1465 1366/1379/1366 1466/1480/1466 +f 1366/1379/1366 1367/1380/1367 1466/1480/1466 +f 1466/1480/1466 1367/1380/1367 1467/1481/1467 +f 1367/1380/1367 1368/1381/1368 1467/1481/1467 +f 1467/1481/1467 1368/1381/1368 1468/1482/1468 +f 1368/1381/1368 1369/1382/1369 1468/1482/1468 +f 1468/1482/1468 1369/1382/1369 1469/1483/1469 +f 1369/1382/1369 1370/1383/1370 1469/1483/1469 +f 1469/1483/1469 1370/1383/1370 1470/1484/1470 +f 1370/1383/1370 1371/1384/1371 1470/1484/1470 +f 1470/1484/1470 1371/1384/1371 1471/1485/1471 +f 1371/1384/1371 1372/1385/1372 1471/1485/1471 +f 1471/1485/1471 1372/1385/1372 1472/1486/1472 +f 1372/1385/1372 1373/1386/1373 1472/1486/1472 +f 1472/1486/1472 1373/1386/1373 1473/1487/1473 +f 1373/1386/1373 1374/1387/1374 1473/1487/1473 +f 1473/1487/1473 1374/1387/1374 1474/1488/1474 +f 1374/1387/1374 1375/1388/1375 1474/1488/1474 +f 1474/1488/1474 1375/1388/1375 1475/1489/1475 +f 1375/1388/1375 1376/1389/1376 1475/1489/1475 +f 1475/1489/1475 1376/1389/1376 1476/1490/1476 +f 1376/1389/1376 1377/1390/1377 1476/1490/1476 +f 1476/1490/1476 1377/1390/1377 1477/1491/1477 +f 1377/1390/1377 1378/1391/1378 1477/1491/1477 +f 1477/1491/1477 1378/1391/1378 1478/1492/1478 +f 1378/1391/1378 1379/1392/1379 1478/1492/1478 +f 1478/1492/1478 1379/1392/1379 1479/1493/1479 +f 1379/1392/1379 1380/1393/1380 1479/1493/1479 +f 1479/1493/1479 1380/1393/1380 1480/1494/1480 +f 1380/1393/1380 1381/1394/1381 1480/1494/1480 +f 1480/1494/1480 1381/1394/1381 1481/1495/1481 +f 1381/1394/1381 1382/1395/1382 1481/1495/1481 +f 1481/1495/1481 1382/1395/1382 1482/1496/1482 +f 1382/1395/1382 1383/1396/1383 1482/1496/1482 +f 1482/1496/1482 1383/1396/1383 1483/1497/1483 +f 1383/1396/1383 1384/1397/1384 1483/1497/1483 +f 1483/1497/1483 1384/1397/1384 1484/1498/1484 +f 1384/1397/1384 1385/1398/1385 1484/1498/1484 +f 1484/1498/1484 1385/1398/1385 1485/1499/1485 +f 1385/1398/1385 1386/1399/1386 1485/1499/1485 +f 1485/1499/1485 1386/1399/1386 1486/1500/1486 +f 1386/1399/1386 1387/1400/1387 1486/1500/1486 +f 1486/1500/1486 1387/1400/1387 1487/1501/1487 +f 1387/1400/1387 1388/1401/1388 1487/1501/1487 +f 1487/1501/1487 1388/1401/1388 1488/1502/1488 +f 1388/1401/1388 1389/1402/1389 1488/1502/1488 +f 1488/1502/1488 1389/1402/1389 1489/1503/1489 +f 1389/1402/1389 1390/1403/1390 1489/1503/1489 +f 1489/1503/1489 1390/1403/1390 1490/1504/1490 +f 1390/1403/1390 1391/1404/1391 1490/1504/1490 +f 1490/1504/1490 1391/1404/1391 1491/1505/1491 +f 1391/1404/1391 1392/1405/1392 1491/1505/1491 +f 1491/1505/1491 1392/1405/1392 1492/1506/1492 +f 1392/1405/1392 1393/1406/1393 1492/1506/1492 +f 1492/1506/1492 1393/1406/1393 1493/1507/1493 +f 1393/1406/1393 1394/1407/1394 1493/1507/1493 +f 1493/1507/1493 1394/1407/1394 1494/1508/1494 +f 1394/1407/1394 1395/1408/1395 1494/1508/1494 +f 1494/1508/1494 1395/1408/1395 1495/1509/1495 +f 1395/1408/1395 1396/1409/1396 1495/1509/1495 +f 1495/1509/1495 1396/1409/1396 1496/1510/1496 +f 1396/1409/1396 1397/1410/1397 1496/1510/1496 +f 1496/1510/1496 1397/1410/1397 1497/1511/1497 +f 1397/1410/1397 1398/1411/1398 1497/1511/1497 +f 1497/1511/1497 1398/1411/1398 1498/1512/1498 +f 1398/1411/1398 1399/1412/1399 1498/1512/1498 +f 1498/1512/1498 1399/1412/1399 1499/1513/1499 +f 1399/1412/1399 1400/1413/1400 1499/1513/1499 +f 1499/1513/1499 1400/1413/1400 1500/1514/1500 +f 1400/1413/1400 1301/1414/1301 1500/1514/1500 +f 1500/1514/1500 1301/1414/1301 1401/1515/1401 +f 1401/1415/1401 1402/1416/1402 1501/1516/1501 +f 1501/1516/1501 1402/1416/1402 1502/1517/1502 +f 1402/1416/1402 1403/1417/1403 1502/1517/1502 +f 1502/1517/1502 1403/1417/1403 1503/1518/1503 +f 1403/1417/1403 1404/1418/1404 1503/1518/1503 +f 1503/1518/1503 1404/1418/1404 1504/1519/1504 +f 1404/1418/1404 1405/1419/1405 1504/1519/1504 +f 1504/1519/1504 1405/1419/1405 1505/1520/1505 +f 1405/1419/1405 1406/1420/1406 1505/1520/1505 +f 1505/1520/1505 1406/1420/1406 1506/1521/1506 +f 1406/1420/1406 1407/1421/1407 1506/1521/1506 +f 1506/1521/1506 1407/1421/1407 1507/1522/1507 +f 1407/1421/1407 1408/1422/1408 1507/1522/1507 +f 1507/1522/1507 1408/1422/1408 1508/1523/1508 +f 1408/1422/1408 1409/1423/1409 1508/1523/1508 +f 1508/1523/1508 1409/1423/1409 1509/1524/1509 +f 1409/1423/1409 1410/1424/1410 1509/1524/1509 +f 1509/1524/1509 1410/1424/1410 1510/1525/1510 +f 1410/1424/1410 1411/1425/1411 1510/1525/1510 +f 1510/1525/1510 1411/1425/1411 1511/1526/1511 +f 1411/1425/1411 1412/1426/1412 1511/1526/1511 +f 1511/1526/1511 1412/1426/1412 1512/1527/1512 +f 1412/1426/1412 1413/1427/1413 1512/1527/1512 +f 1512/1527/1512 1413/1427/1413 1513/1528/1513 +f 1413/1427/1413 1414/1428/1414 1513/1528/1513 +f 1513/1528/1513 1414/1428/1414 1514/1529/1514 +f 1414/1428/1414 1415/1429/1415 1514/1529/1514 +f 1514/1529/1514 1415/1429/1415 1515/1530/1515 +f 1415/1429/1415 1416/1430/1416 1515/1530/1515 +f 1515/1530/1515 1416/1430/1416 1516/1531/1516 +f 1416/1430/1416 1417/1431/1417 1516/1531/1516 +f 1516/1531/1516 1417/1431/1417 1517/1532/1517 +f 1417/1431/1417 1418/1432/1418 1517/1532/1517 +f 1517/1532/1517 1418/1432/1418 1518/1533/1518 +f 1418/1432/1418 1419/1433/1419 1518/1533/1518 +f 1518/1533/1518 1419/1433/1419 1519/1534/1519 +f 1419/1433/1419 1420/1434/1420 1519/1534/1519 +f 1519/1534/1519 1420/1434/1420 1520/1535/1520 +f 1420/1434/1420 1421/1435/1421 1520/1535/1520 +f 1520/1535/1520 1421/1435/1421 1521/1536/1521 +f 1421/1435/1421 1422/1436/1422 1521/1536/1521 +f 1521/1536/1521 1422/1436/1422 1522/1537/1522 +f 1422/1436/1422 1423/1437/1423 1522/1537/1522 +f 1522/1537/1522 1423/1437/1423 1523/1538/1523 +f 1423/1437/1423 1424/1438/1424 1523/1538/1523 +f 1523/1538/1523 1424/1438/1424 1524/1539/1524 +f 1424/1438/1424 1425/1439/1425 1524/1539/1524 +f 1524/1539/1524 1425/1439/1425 1525/1540/1525 +f 1425/1439/1425 1426/1440/1426 1525/1540/1525 +f 1525/1540/1525 1426/1440/1426 1526/1541/1526 +f 1426/1440/1426 1427/1441/1427 1526/1541/1526 +f 1526/1541/1526 1427/1441/1427 1527/1542/1527 +f 1427/1441/1427 1428/1442/1428 1527/1542/1527 +f 1527/1542/1527 1428/1442/1428 1528/1543/1528 +f 1428/1442/1428 1429/1443/1429 1528/1543/1528 +f 1528/1543/1528 1429/1443/1429 1529/1544/1529 +f 1429/1443/1429 1430/1444/1430 1529/1544/1529 +f 1529/1544/1529 1430/1444/1430 1530/1545/1530 +f 1430/1444/1430 1431/1445/1431 1530/1545/1530 +f 1530/1545/1530 1431/1445/1431 1531/1546/1531 +f 1431/1445/1431 1432/1446/1432 1531/1546/1531 +f 1531/1546/1531 1432/1446/1432 1532/1547/1532 +f 1432/1446/1432 1433/1447/1433 1532/1547/1532 +f 1532/1547/1532 1433/1447/1433 1533/1548/1533 +f 1433/1447/1433 1434/1448/1434 1533/1548/1533 +f 1533/1548/1533 1434/1448/1434 1534/1549/1534 +f 1434/1448/1434 1435/1449/1435 1534/1549/1534 +f 1534/1549/1534 1435/1449/1435 1535/1550/1535 +f 1435/1449/1435 1436/1450/1436 1535/1550/1535 +f 1535/1550/1535 1436/1450/1436 1536/1551/1536 +f 1436/1450/1436 1437/1451/1437 1536/1551/1536 +f 1536/1551/1536 1437/1451/1437 1537/1552/1537 +f 1437/1451/1437 1438/1452/1438 1537/1552/1537 +f 1537/1552/1537 1438/1452/1438 1538/1553/1538 +f 1438/1452/1438 1439/1453/1439 1538/1553/1538 +f 1538/1553/1538 1439/1453/1439 1539/1554/1539 +f 1439/1453/1439 1440/1454/1440 1539/1554/1539 +f 1539/1554/1539 1440/1454/1440 1540/1555/1540 +f 1440/1454/1440 1441/1455/1441 1540/1555/1540 +f 1540/1555/1540 1441/1455/1441 1541/1556/1541 +f 1441/1455/1441 1442/1456/1442 1541/1556/1541 +f 1541/1556/1541 1442/1456/1442 1542/1557/1542 +f 1442/1456/1442 1443/1457/1443 1542/1557/1542 +f 1542/1557/1542 1443/1457/1443 1543/1558/1543 +f 1443/1457/1443 1444/1458/1444 1543/1558/1543 +f 1543/1558/1543 1444/1458/1444 1544/1559/1544 +f 1444/1458/1444 1445/1459/1445 1544/1559/1544 +f 1544/1559/1544 1445/1459/1445 1545/1560/1545 +f 1445/1459/1445 1446/1460/1446 1545/1560/1545 +f 1545/1560/1545 1446/1460/1446 1546/1561/1546 +f 1446/1460/1446 1447/1461/1447 1546/1561/1546 +f 1546/1561/1546 1447/1461/1447 1547/1562/1547 +f 1447/1461/1447 1448/1462/1448 1547/1562/1547 +f 1547/1562/1547 1448/1462/1448 1548/1563/1548 +f 1448/1462/1448 1449/1463/1449 1548/1563/1548 +f 1548/1563/1548 1449/1463/1449 1549/1564/1549 +f 1449/1463/1449 1450/1464/1450 1549/1564/1549 +f 1549/1564/1549 1450/1464/1450 1550/1565/1550 +f 1450/1464/1450 1451/1465/1451 1550/1565/1550 +f 1550/1565/1550 1451/1465/1451 1551/1566/1551 +f 1451/1465/1451 1452/1466/1452 1551/1566/1551 +f 1551/1566/1551 1452/1466/1452 1552/1567/1552 +f 1452/1466/1452 1453/1467/1453 1552/1567/1552 +f 1552/1567/1552 1453/1467/1453 1553/1568/1553 +f 1453/1467/1453 1454/1468/1454 1553/1568/1553 +f 1553/1568/1553 1454/1468/1454 1554/1569/1554 +f 1454/1468/1454 1455/1469/1455 1554/1569/1554 +f 1554/1569/1554 1455/1469/1455 1555/1570/1555 +f 1455/1469/1455 1456/1470/1456 1555/1570/1555 +f 1555/1570/1555 1456/1470/1456 1556/1571/1556 +f 1456/1470/1456 1457/1471/1457 1556/1571/1556 +f 1556/1571/1556 1457/1471/1457 1557/1572/1557 +f 1457/1471/1457 1458/1472/1458 1557/1572/1557 +f 1557/1572/1557 1458/1472/1458 1558/1573/1558 +f 1458/1472/1458 1459/1473/1459 1558/1573/1558 +f 1558/1573/1558 1459/1473/1459 1559/1574/1559 +f 1459/1473/1459 1460/1474/1460 1559/1574/1559 +f 1559/1574/1559 1460/1474/1460 1560/1575/1560 +f 1460/1474/1460 1461/1475/1461 1560/1575/1560 +f 1560/1575/1560 1461/1475/1461 1561/1576/1561 +f 1461/1475/1461 1462/1476/1462 1561/1576/1561 +f 1561/1576/1561 1462/1476/1462 1562/1577/1562 +f 1462/1476/1462 1463/1477/1463 1562/1577/1562 +f 1562/1577/1562 1463/1477/1463 1563/1578/1563 +f 1463/1477/1463 1464/1478/1464 1563/1578/1563 +f 1563/1578/1563 1464/1478/1464 1564/1579/1564 +f 1464/1478/1464 1465/1479/1465 1564/1579/1564 +f 1564/1579/1564 1465/1479/1465 1565/1580/1565 +f 1465/1479/1465 1466/1480/1466 1565/1580/1565 +f 1565/1580/1565 1466/1480/1466 1566/1581/1566 +f 1466/1480/1466 1467/1481/1467 1566/1581/1566 +f 1566/1581/1566 1467/1481/1467 1567/1582/1567 +f 1467/1481/1467 1468/1482/1468 1567/1582/1567 +f 1567/1582/1567 1468/1482/1468 1568/1583/1568 +f 1468/1482/1468 1469/1483/1469 1568/1583/1568 +f 1568/1583/1568 1469/1483/1469 1569/1584/1569 +f 1469/1483/1469 1470/1484/1470 1569/1584/1569 +f 1569/1584/1569 1470/1484/1470 1570/1585/1570 +f 1470/1484/1470 1471/1485/1471 1570/1585/1570 +f 1570/1585/1570 1471/1485/1471 1571/1586/1571 +f 1471/1485/1471 1472/1486/1472 1571/1586/1571 +f 1571/1586/1571 1472/1486/1472 1572/1587/1572 +f 1472/1486/1472 1473/1487/1473 1572/1587/1572 +f 1572/1587/1572 1473/1487/1473 1573/1588/1573 +f 1473/1487/1473 1474/1488/1474 1573/1588/1573 +f 1573/1588/1573 1474/1488/1474 1574/1589/1574 +f 1474/1488/1474 1475/1489/1475 1574/1589/1574 +f 1574/1589/1574 1475/1489/1475 1575/1590/1575 +f 1475/1489/1475 1476/1490/1476 1575/1590/1575 +f 1575/1590/1575 1476/1490/1476 1576/1591/1576 +f 1476/1490/1476 1477/1491/1477 1576/1591/1576 +f 1576/1591/1576 1477/1491/1477 1577/1592/1577 +f 1477/1491/1477 1478/1492/1478 1577/1592/1577 +f 1577/1592/1577 1478/1492/1478 1578/1593/1578 +f 1478/1492/1478 1479/1493/1479 1578/1593/1578 +f 1578/1593/1578 1479/1493/1479 1579/1594/1579 +f 1479/1493/1479 1480/1494/1480 1579/1594/1579 +f 1579/1594/1579 1480/1494/1480 1580/1595/1580 +f 1480/1494/1480 1481/1495/1481 1580/1595/1580 +f 1580/1595/1580 1481/1495/1481 1581/1596/1581 +f 1481/1495/1481 1482/1496/1482 1581/1596/1581 +f 1581/1596/1581 1482/1496/1482 1582/1597/1582 +f 1482/1496/1482 1483/1497/1483 1582/1597/1582 +f 1582/1597/1582 1483/1497/1483 1583/1598/1583 +f 1483/1497/1483 1484/1498/1484 1583/1598/1583 +f 1583/1598/1583 1484/1498/1484 1584/1599/1584 +f 1484/1498/1484 1485/1499/1485 1584/1599/1584 +f 1584/1599/1584 1485/1499/1485 1585/1600/1585 +f 1485/1499/1485 1486/1500/1486 1585/1600/1585 +f 1585/1600/1585 1486/1500/1486 1586/1601/1586 +f 1486/1500/1486 1487/1501/1487 1586/1601/1586 +f 1586/1601/1586 1487/1501/1487 1587/1602/1587 +f 1487/1501/1487 1488/1502/1488 1587/1602/1587 +f 1587/1602/1587 1488/1502/1488 1588/1603/1588 +f 1488/1502/1488 1489/1503/1489 1588/1603/1588 +f 1588/1603/1588 1489/1503/1489 1589/1604/1589 +f 1489/1503/1489 1490/1504/1490 1589/1604/1589 +f 1589/1604/1589 1490/1504/1490 1590/1605/1590 +f 1490/1504/1490 1491/1505/1491 1590/1605/1590 +f 1590/1605/1590 1491/1505/1491 1591/1606/1591 +f 1491/1505/1491 1492/1506/1492 1591/1606/1591 +f 1591/1606/1591 1492/1506/1492 1592/1607/1592 +f 1492/1506/1492 1493/1507/1493 1592/1607/1592 +f 1592/1607/1592 1493/1507/1493 1593/1608/1593 +f 1493/1507/1493 1494/1508/1494 1593/1608/1593 +f 1593/1608/1593 1494/1508/1494 1594/1609/1594 +f 1494/1508/1494 1495/1509/1495 1594/1609/1594 +f 1594/1609/1594 1495/1509/1495 1595/1610/1595 +f 1495/1509/1495 1496/1510/1496 1595/1610/1595 +f 1595/1610/1595 1496/1510/1496 1596/1611/1596 +f 1496/1510/1496 1497/1511/1497 1596/1611/1596 +f 1596/1611/1596 1497/1511/1497 1597/1612/1597 +f 1497/1511/1497 1498/1512/1498 1597/1612/1597 +f 1597/1612/1597 1498/1512/1498 1598/1613/1598 +f 1498/1512/1498 1499/1513/1499 1598/1613/1598 +f 1598/1613/1598 1499/1513/1499 1599/1614/1599 +f 1499/1513/1499 1500/1514/1500 1599/1614/1599 +f 1599/1614/1599 1500/1514/1500 1600/1615/1600 +f 1500/1514/1500 1401/1515/1401 1600/1615/1600 +f 1600/1615/1600 1401/1515/1401 1501/1616/1501 +f 1501/1516/1501 1502/1517/1502 1601/1617/1601 +f 1601/1617/1601 1502/1517/1502 1602/1618/1602 +f 1502/1517/1502 1503/1518/1503 1602/1618/1602 +f 1602/1618/1602 1503/1518/1503 1603/1619/1603 +f 1503/1518/1503 1504/1519/1504 1603/1619/1603 +f 1603/1619/1603 1504/1519/1504 1604/1620/1604 +f 1504/1519/1504 1505/1520/1505 1604/1620/1604 +f 1604/1620/1604 1505/1520/1505 1605/1621/1605 +f 1505/1520/1505 1506/1521/1506 1605/1621/1605 +f 1605/1621/1605 1506/1521/1506 1606/1622/1606 +f 1506/1521/1506 1507/1522/1507 1606/1622/1606 +f 1606/1622/1606 1507/1522/1507 1607/1623/1607 +f 1507/1522/1507 1508/1523/1508 1607/1623/1607 +f 1607/1623/1607 1508/1523/1508 1608/1624/1608 +f 1508/1523/1508 1509/1524/1509 1608/1624/1608 +f 1608/1624/1608 1509/1524/1509 1609/1625/1609 +f 1509/1524/1509 1510/1525/1510 1609/1625/1609 +f 1609/1625/1609 1510/1525/1510 1610/1626/1610 +f 1510/1525/1510 1511/1526/1511 1610/1626/1610 +f 1610/1626/1610 1511/1526/1511 1611/1627/1611 +f 1511/1526/1511 1512/1527/1512 1611/1627/1611 +f 1611/1627/1611 1512/1527/1512 1612/1628/1612 +f 1512/1527/1512 1513/1528/1513 1612/1628/1612 +f 1612/1628/1612 1513/1528/1513 1613/1629/1613 +f 1513/1528/1513 1514/1529/1514 1613/1629/1613 +f 1613/1629/1613 1514/1529/1514 1614/1630/1614 +f 1514/1529/1514 1515/1530/1515 1614/1630/1614 +f 1614/1630/1614 1515/1530/1515 1615/1631/1615 +f 1515/1530/1515 1516/1531/1516 1615/1631/1615 +f 1615/1631/1615 1516/1531/1516 1616/1632/1616 +f 1516/1531/1516 1517/1532/1517 1616/1632/1616 +f 1616/1632/1616 1517/1532/1517 1617/1633/1617 +f 1517/1532/1517 1518/1533/1518 1617/1633/1617 +f 1617/1633/1617 1518/1533/1518 1618/1634/1618 +f 1518/1533/1518 1519/1534/1519 1618/1634/1618 +f 1618/1634/1618 1519/1534/1519 1619/1635/1619 +f 1519/1534/1519 1520/1535/1520 1619/1635/1619 +f 1619/1635/1619 1520/1535/1520 1620/1636/1620 +f 1520/1535/1520 1521/1536/1521 1620/1636/1620 +f 1620/1636/1620 1521/1536/1521 1621/1637/1621 +f 1521/1536/1521 1522/1537/1522 1621/1637/1621 +f 1621/1637/1621 1522/1537/1522 1622/1638/1622 +f 1522/1537/1522 1523/1538/1523 1622/1638/1622 +f 1622/1638/1622 1523/1538/1523 1623/1639/1623 +f 1523/1538/1523 1524/1539/1524 1623/1639/1623 +f 1623/1639/1623 1524/1539/1524 1624/1640/1624 +f 1524/1539/1524 1525/1540/1525 1624/1640/1624 +f 1624/1640/1624 1525/1540/1525 1625/1641/1625 +f 1525/1540/1525 1526/1541/1526 1625/1641/1625 +f 1625/1641/1625 1526/1541/1526 1626/1642/1626 +f 1526/1541/1526 1527/1542/1527 1626/1642/1626 +f 1626/1642/1626 1527/1542/1527 1627/1643/1627 +f 1527/1542/1527 1528/1543/1528 1627/1643/1627 +f 1627/1643/1627 1528/1543/1528 1628/1644/1628 +f 1528/1543/1528 1529/1544/1529 1628/1644/1628 +f 1628/1644/1628 1529/1544/1529 1629/1645/1629 +f 1529/1544/1529 1530/1545/1530 1629/1645/1629 +f 1629/1645/1629 1530/1545/1530 1630/1646/1630 +f 1530/1545/1530 1531/1546/1531 1630/1646/1630 +f 1630/1646/1630 1531/1546/1531 1631/1647/1631 +f 1531/1546/1531 1532/1547/1532 1631/1647/1631 +f 1631/1647/1631 1532/1547/1532 1632/1648/1632 +f 1532/1547/1532 1533/1548/1533 1632/1648/1632 +f 1632/1648/1632 1533/1548/1533 1633/1649/1633 +f 1533/1548/1533 1534/1549/1534 1633/1649/1633 +f 1633/1649/1633 1534/1549/1534 1634/1650/1634 +f 1534/1549/1534 1535/1550/1535 1634/1650/1634 +f 1634/1650/1634 1535/1550/1535 1635/1651/1635 +f 1535/1550/1535 1536/1551/1536 1635/1651/1635 +f 1635/1651/1635 1536/1551/1536 1636/1652/1636 +f 1536/1551/1536 1537/1552/1537 1636/1652/1636 +f 1636/1652/1636 1537/1552/1537 1637/1653/1637 +f 1537/1552/1537 1538/1553/1538 1637/1653/1637 +f 1637/1653/1637 1538/1553/1538 1638/1654/1638 +f 1538/1553/1538 1539/1554/1539 1638/1654/1638 +f 1638/1654/1638 1539/1554/1539 1639/1655/1639 +f 1539/1554/1539 1540/1555/1540 1639/1655/1639 +f 1639/1655/1639 1540/1555/1540 1640/1656/1640 +f 1540/1555/1540 1541/1556/1541 1640/1656/1640 +f 1640/1656/1640 1541/1556/1541 1641/1657/1641 +f 1541/1556/1541 1542/1557/1542 1641/1657/1641 +f 1641/1657/1641 1542/1557/1542 1642/1658/1642 +f 1542/1557/1542 1543/1558/1543 1642/1658/1642 +f 1642/1658/1642 1543/1558/1543 1643/1659/1643 +f 1543/1558/1543 1544/1559/1544 1643/1659/1643 +f 1643/1659/1643 1544/1559/1544 1644/1660/1644 +f 1544/1559/1544 1545/1560/1545 1644/1660/1644 +f 1644/1660/1644 1545/1560/1545 1645/1661/1645 +f 1545/1560/1545 1546/1561/1546 1645/1661/1645 +f 1645/1661/1645 1546/1561/1546 1646/1662/1646 +f 1546/1561/1546 1547/1562/1547 1646/1662/1646 +f 1646/1662/1646 1547/1562/1547 1647/1663/1647 +f 1547/1562/1547 1548/1563/1548 1647/1663/1647 +f 1647/1663/1647 1548/1563/1548 1648/1664/1648 +f 1548/1563/1548 1549/1564/1549 1648/1664/1648 +f 1648/1664/1648 1549/1564/1549 1649/1665/1649 +f 1549/1564/1549 1550/1565/1550 1649/1665/1649 +f 1649/1665/1649 1550/1565/1550 1650/1666/1650 +f 1550/1565/1550 1551/1566/1551 1650/1666/1650 +f 1650/1666/1650 1551/1566/1551 1651/1667/1651 +f 1551/1566/1551 1552/1567/1552 1651/1667/1651 +f 1651/1667/1651 1552/1567/1552 1652/1668/1652 +f 1552/1567/1552 1553/1568/1553 1652/1668/1652 +f 1652/1668/1652 1553/1568/1553 1653/1669/1653 +f 1553/1568/1553 1554/1569/1554 1653/1669/1653 +f 1653/1669/1653 1554/1569/1554 1654/1670/1654 +f 1554/1569/1554 1555/1570/1555 1654/1670/1654 +f 1654/1670/1654 1555/1570/1555 1655/1671/1655 +f 1555/1570/1555 1556/1571/1556 1655/1671/1655 +f 1655/1671/1655 1556/1571/1556 1656/1672/1656 +f 1556/1571/1556 1557/1572/1557 1656/1672/1656 +f 1656/1672/1656 1557/1572/1557 1657/1673/1657 +f 1557/1572/1557 1558/1573/1558 1657/1673/1657 +f 1657/1673/1657 1558/1573/1558 1658/1674/1658 +f 1558/1573/1558 1559/1574/1559 1658/1674/1658 +f 1658/1674/1658 1559/1574/1559 1659/1675/1659 +f 1559/1574/1559 1560/1575/1560 1659/1675/1659 +f 1659/1675/1659 1560/1575/1560 1660/1676/1660 +f 1560/1575/1560 1561/1576/1561 1660/1676/1660 +f 1660/1676/1660 1561/1576/1561 1661/1677/1661 +f 1561/1576/1561 1562/1577/1562 1661/1677/1661 +f 1661/1677/1661 1562/1577/1562 1662/1678/1662 +f 1562/1577/1562 1563/1578/1563 1662/1678/1662 +f 1662/1678/1662 1563/1578/1563 1663/1679/1663 +f 1563/1578/1563 1564/1579/1564 1663/1679/1663 +f 1663/1679/1663 1564/1579/1564 1664/1680/1664 +f 1564/1579/1564 1565/1580/1565 1664/1680/1664 +f 1664/1680/1664 1565/1580/1565 1665/1681/1665 +f 1565/1580/1565 1566/1581/1566 1665/1681/1665 +f 1665/1681/1665 1566/1581/1566 1666/1682/1666 +f 1566/1581/1566 1567/1582/1567 1666/1682/1666 +f 1666/1682/1666 1567/1582/1567 1667/1683/1667 +f 1567/1582/1567 1568/1583/1568 1667/1683/1667 +f 1667/1683/1667 1568/1583/1568 1668/1684/1668 +f 1568/1583/1568 1569/1584/1569 1668/1684/1668 +f 1668/1684/1668 1569/1584/1569 1669/1685/1669 +f 1569/1584/1569 1570/1585/1570 1669/1685/1669 +f 1669/1685/1669 1570/1585/1570 1670/1686/1670 +f 1570/1585/1570 1571/1586/1571 1670/1686/1670 +f 1670/1686/1670 1571/1586/1571 1671/1687/1671 +f 1571/1586/1571 1572/1587/1572 1671/1687/1671 +f 1671/1687/1671 1572/1587/1572 1672/1688/1672 +f 1572/1587/1572 1573/1588/1573 1672/1688/1672 +f 1672/1688/1672 1573/1588/1573 1673/1689/1673 +f 1573/1588/1573 1574/1589/1574 1673/1689/1673 +f 1673/1689/1673 1574/1589/1574 1674/1690/1674 +f 1574/1589/1574 1575/1590/1575 1674/1690/1674 +f 1674/1690/1674 1575/1590/1575 1675/1691/1675 +f 1575/1590/1575 1576/1591/1576 1675/1691/1675 +f 1675/1691/1675 1576/1591/1576 1676/1692/1676 +f 1576/1591/1576 1577/1592/1577 1676/1692/1676 +f 1676/1692/1676 1577/1592/1577 1677/1693/1677 +f 1577/1592/1577 1578/1593/1578 1677/1693/1677 +f 1677/1693/1677 1578/1593/1578 1678/1694/1678 +f 1578/1593/1578 1579/1594/1579 1678/1694/1678 +f 1678/1694/1678 1579/1594/1579 1679/1695/1679 +f 1579/1594/1579 1580/1595/1580 1679/1695/1679 +f 1679/1695/1679 1580/1595/1580 1680/1696/1680 +f 1580/1595/1580 1581/1596/1581 1680/1696/1680 +f 1680/1696/1680 1581/1596/1581 1681/1697/1681 +f 1581/1596/1581 1582/1597/1582 1681/1697/1681 +f 1681/1697/1681 1582/1597/1582 1682/1698/1682 +f 1582/1597/1582 1583/1598/1583 1682/1698/1682 +f 1682/1698/1682 1583/1598/1583 1683/1699/1683 +f 1583/1598/1583 1584/1599/1584 1683/1699/1683 +f 1683/1699/1683 1584/1599/1584 1684/1700/1684 +f 1584/1599/1584 1585/1600/1585 1684/1700/1684 +f 1684/1700/1684 1585/1600/1585 1685/1701/1685 +f 1585/1600/1585 1586/1601/1586 1685/1701/1685 +f 1685/1701/1685 1586/1601/1586 1686/1702/1686 +f 1586/1601/1586 1587/1602/1587 1686/1702/1686 +f 1686/1702/1686 1587/1602/1587 1687/1703/1687 +f 1587/1602/1587 1588/1603/1588 1687/1703/1687 +f 1687/1703/1687 1588/1603/1588 1688/1704/1688 +f 1588/1603/1588 1589/1604/1589 1688/1704/1688 +f 1688/1704/1688 1589/1604/1589 1689/1705/1689 +f 1589/1604/1589 1590/1605/1590 1689/1705/1689 +f 1689/1705/1689 1590/1605/1590 1690/1706/1690 +f 1590/1605/1590 1591/1606/1591 1690/1706/1690 +f 1690/1706/1690 1591/1606/1591 1691/1707/1691 +f 1591/1606/1591 1592/1607/1592 1691/1707/1691 +f 1691/1707/1691 1592/1607/1592 1692/1708/1692 +f 1592/1607/1592 1593/1608/1593 1692/1708/1692 +f 1692/1708/1692 1593/1608/1593 1693/1709/1693 +f 1593/1608/1593 1594/1609/1594 1693/1709/1693 +f 1693/1709/1693 1594/1609/1594 1694/1710/1694 +f 1594/1609/1594 1595/1610/1595 1694/1710/1694 +f 1694/1710/1694 1595/1610/1595 1695/1711/1695 +f 1595/1610/1595 1596/1611/1596 1695/1711/1695 +f 1695/1711/1695 1596/1611/1596 1696/1712/1696 +f 1596/1611/1596 1597/1612/1597 1696/1712/1696 +f 1696/1712/1696 1597/1612/1597 1697/1713/1697 +f 1597/1612/1597 1598/1613/1598 1697/1713/1697 +f 1697/1713/1697 1598/1613/1598 1698/1714/1698 +f 1598/1613/1598 1599/1614/1599 1698/1714/1698 +f 1698/1714/1698 1599/1614/1599 1699/1715/1699 +f 1599/1614/1599 1600/1615/1600 1699/1715/1699 +f 1699/1715/1699 1600/1615/1600 1700/1716/1700 +f 1600/1615/1600 1501/1616/1501 1700/1716/1700 +f 1700/1716/1700 1501/1616/1501 1601/1717/1601 +f 1601/1617/1601 1602/1618/1602 1701/1718/1701 +f 1701/1718/1701 1602/1618/1602 1702/1719/1702 +f 1602/1618/1602 1603/1619/1603 1702/1719/1702 +f 1702/1719/1702 1603/1619/1603 1703/1720/1703 +f 1603/1619/1603 1604/1620/1604 1703/1720/1703 +f 1703/1720/1703 1604/1620/1604 1704/1721/1704 +f 1604/1620/1604 1605/1621/1605 1704/1721/1704 +f 1704/1721/1704 1605/1621/1605 1705/1722/1705 +f 1605/1621/1605 1606/1622/1606 1705/1722/1705 +f 1705/1722/1705 1606/1622/1606 1706/1723/1706 +f 1606/1622/1606 1607/1623/1607 1706/1723/1706 +f 1706/1723/1706 1607/1623/1607 1707/1724/1707 +f 1607/1623/1607 1608/1624/1608 1707/1724/1707 +f 1707/1724/1707 1608/1624/1608 1708/1725/1708 +f 1608/1624/1608 1609/1625/1609 1708/1725/1708 +f 1708/1725/1708 1609/1625/1609 1709/1726/1709 +f 1609/1625/1609 1610/1626/1610 1709/1726/1709 +f 1709/1726/1709 1610/1626/1610 1710/1727/1710 +f 1610/1626/1610 1611/1627/1611 1710/1727/1710 +f 1710/1727/1710 1611/1627/1611 1711/1728/1711 +f 1611/1627/1611 1612/1628/1612 1711/1728/1711 +f 1711/1728/1711 1612/1628/1612 1712/1729/1712 +f 1612/1628/1612 1613/1629/1613 1712/1729/1712 +f 1712/1729/1712 1613/1629/1613 1713/1730/1713 +f 1613/1629/1613 1614/1630/1614 1713/1730/1713 +f 1713/1730/1713 1614/1630/1614 1714/1731/1714 +f 1614/1630/1614 1615/1631/1615 1714/1731/1714 +f 1714/1731/1714 1615/1631/1615 1715/1732/1715 +f 1615/1631/1615 1616/1632/1616 1715/1732/1715 +f 1715/1732/1715 1616/1632/1616 1716/1733/1716 +f 1616/1632/1616 1617/1633/1617 1716/1733/1716 +f 1716/1733/1716 1617/1633/1617 1717/1734/1717 +f 1617/1633/1617 1618/1634/1618 1717/1734/1717 +f 1717/1734/1717 1618/1634/1618 1718/1735/1718 +f 1618/1634/1618 1619/1635/1619 1718/1735/1718 +f 1718/1735/1718 1619/1635/1619 1719/1736/1719 +f 1619/1635/1619 1620/1636/1620 1719/1736/1719 +f 1719/1736/1719 1620/1636/1620 1720/1737/1720 +f 1620/1636/1620 1621/1637/1621 1720/1737/1720 +f 1720/1737/1720 1621/1637/1621 1721/1738/1721 +f 1621/1637/1621 1622/1638/1622 1721/1738/1721 +f 1721/1738/1721 1622/1638/1622 1722/1739/1722 +f 1622/1638/1622 1623/1639/1623 1722/1739/1722 +f 1722/1739/1722 1623/1639/1623 1723/1740/1723 +f 1623/1639/1623 1624/1640/1624 1723/1740/1723 +f 1723/1740/1723 1624/1640/1624 1724/1741/1724 +f 1624/1640/1624 1625/1641/1625 1724/1741/1724 +f 1724/1741/1724 1625/1641/1625 1725/1742/1725 +f 1625/1641/1625 1626/1642/1626 1725/1742/1725 +f 1725/1742/1725 1626/1642/1626 1726/1743/1726 +f 1626/1642/1626 1627/1643/1627 1726/1743/1726 +f 1726/1743/1726 1627/1643/1627 1727/1744/1727 +f 1627/1643/1627 1628/1644/1628 1727/1744/1727 +f 1727/1744/1727 1628/1644/1628 1728/1745/1728 +f 1628/1644/1628 1629/1645/1629 1728/1745/1728 +f 1728/1745/1728 1629/1645/1629 1729/1746/1729 +f 1629/1645/1629 1630/1646/1630 1729/1746/1729 +f 1729/1746/1729 1630/1646/1630 1730/1747/1730 +f 1630/1646/1630 1631/1647/1631 1730/1747/1730 +f 1730/1747/1730 1631/1647/1631 1731/1748/1731 +f 1631/1647/1631 1632/1648/1632 1731/1748/1731 +f 1731/1748/1731 1632/1648/1632 1732/1749/1732 +f 1632/1648/1632 1633/1649/1633 1732/1749/1732 +f 1732/1749/1732 1633/1649/1633 1733/1750/1733 +f 1633/1649/1633 1634/1650/1634 1733/1750/1733 +f 1733/1750/1733 1634/1650/1634 1734/1751/1734 +f 1634/1650/1634 1635/1651/1635 1734/1751/1734 +f 1734/1751/1734 1635/1651/1635 1735/1752/1735 +f 1635/1651/1635 1636/1652/1636 1735/1752/1735 +f 1735/1752/1735 1636/1652/1636 1736/1753/1736 +f 1636/1652/1636 1637/1653/1637 1736/1753/1736 +f 1736/1753/1736 1637/1653/1637 1737/1754/1737 +f 1637/1653/1637 1638/1654/1638 1737/1754/1737 +f 1737/1754/1737 1638/1654/1638 1738/1755/1738 +f 1638/1654/1638 1639/1655/1639 1738/1755/1738 +f 1738/1755/1738 1639/1655/1639 1739/1756/1739 +f 1639/1655/1639 1640/1656/1640 1739/1756/1739 +f 1739/1756/1739 1640/1656/1640 1740/1757/1740 +f 1640/1656/1640 1641/1657/1641 1740/1757/1740 +f 1740/1757/1740 1641/1657/1641 1741/1758/1741 +f 1641/1657/1641 1642/1658/1642 1741/1758/1741 +f 1741/1758/1741 1642/1658/1642 1742/1759/1742 +f 1642/1658/1642 1643/1659/1643 1742/1759/1742 +f 1742/1759/1742 1643/1659/1643 1743/1760/1743 +f 1643/1659/1643 1644/1660/1644 1743/1760/1743 +f 1743/1760/1743 1644/1660/1644 1744/1761/1744 +f 1644/1660/1644 1645/1661/1645 1744/1761/1744 +f 1744/1761/1744 1645/1661/1645 1745/1762/1745 +f 1645/1661/1645 1646/1662/1646 1745/1762/1745 +f 1745/1762/1745 1646/1662/1646 1746/1763/1746 +f 1646/1662/1646 1647/1663/1647 1746/1763/1746 +f 1746/1763/1746 1647/1663/1647 1747/1764/1747 +f 1647/1663/1647 1648/1664/1648 1747/1764/1747 +f 1747/1764/1747 1648/1664/1648 1748/1765/1748 +f 1648/1664/1648 1649/1665/1649 1748/1765/1748 +f 1748/1765/1748 1649/1665/1649 1749/1766/1749 +f 1649/1665/1649 1650/1666/1650 1749/1766/1749 +f 1749/1766/1749 1650/1666/1650 1750/1767/1750 +f 1650/1666/1650 1651/1667/1651 1750/1767/1750 +f 1750/1767/1750 1651/1667/1651 1751/1768/1751 +f 1651/1667/1651 1652/1668/1652 1751/1768/1751 +f 1751/1768/1751 1652/1668/1652 1752/1769/1752 +f 1652/1668/1652 1653/1669/1653 1752/1769/1752 +f 1752/1769/1752 1653/1669/1653 1753/1770/1753 +f 1653/1669/1653 1654/1670/1654 1753/1770/1753 +f 1753/1770/1753 1654/1670/1654 1754/1771/1754 +f 1654/1670/1654 1655/1671/1655 1754/1771/1754 +f 1754/1771/1754 1655/1671/1655 1755/1772/1755 +f 1655/1671/1655 1656/1672/1656 1755/1772/1755 +f 1755/1772/1755 1656/1672/1656 1756/1773/1756 +f 1656/1672/1656 1657/1673/1657 1756/1773/1756 +f 1756/1773/1756 1657/1673/1657 1757/1774/1757 +f 1657/1673/1657 1658/1674/1658 1757/1774/1757 +f 1757/1774/1757 1658/1674/1658 1758/1775/1758 +f 1658/1674/1658 1659/1675/1659 1758/1775/1758 +f 1758/1775/1758 1659/1675/1659 1759/1776/1759 +f 1659/1675/1659 1660/1676/1660 1759/1776/1759 +f 1759/1776/1759 1660/1676/1660 1760/1777/1760 +f 1660/1676/1660 1661/1677/1661 1760/1777/1760 +f 1760/1777/1760 1661/1677/1661 1761/1778/1761 +f 1661/1677/1661 1662/1678/1662 1761/1778/1761 +f 1761/1778/1761 1662/1678/1662 1762/1779/1762 +f 1662/1678/1662 1663/1679/1663 1762/1779/1762 +f 1762/1779/1762 1663/1679/1663 1763/1780/1763 +f 1663/1679/1663 1664/1680/1664 1763/1780/1763 +f 1763/1780/1763 1664/1680/1664 1764/1781/1764 +f 1664/1680/1664 1665/1681/1665 1764/1781/1764 +f 1764/1781/1764 1665/1681/1665 1765/1782/1765 +f 1665/1681/1665 1666/1682/1666 1765/1782/1765 +f 1765/1782/1765 1666/1682/1666 1766/1783/1766 +f 1666/1682/1666 1667/1683/1667 1766/1783/1766 +f 1766/1783/1766 1667/1683/1667 1767/1784/1767 +f 1667/1683/1667 1668/1684/1668 1767/1784/1767 +f 1767/1784/1767 1668/1684/1668 1768/1785/1768 +f 1668/1684/1668 1669/1685/1669 1768/1785/1768 +f 1768/1785/1768 1669/1685/1669 1769/1786/1769 +f 1669/1685/1669 1670/1686/1670 1769/1786/1769 +f 1769/1786/1769 1670/1686/1670 1770/1787/1770 +f 1670/1686/1670 1671/1687/1671 1770/1787/1770 +f 1770/1787/1770 1671/1687/1671 1771/1788/1771 +f 1671/1687/1671 1672/1688/1672 1771/1788/1771 +f 1771/1788/1771 1672/1688/1672 1772/1789/1772 +f 1672/1688/1672 1673/1689/1673 1772/1789/1772 +f 1772/1789/1772 1673/1689/1673 1773/1790/1773 +f 1673/1689/1673 1674/1690/1674 1773/1790/1773 +f 1773/1790/1773 1674/1690/1674 1774/1791/1774 +f 1674/1690/1674 1675/1691/1675 1774/1791/1774 +f 1774/1791/1774 1675/1691/1675 1775/1792/1775 +f 1675/1691/1675 1676/1692/1676 1775/1792/1775 +f 1775/1792/1775 1676/1692/1676 1776/1793/1776 +f 1676/1692/1676 1677/1693/1677 1776/1793/1776 +f 1776/1793/1776 1677/1693/1677 1777/1794/1777 +f 1677/1693/1677 1678/1694/1678 1777/1794/1777 +f 1777/1794/1777 1678/1694/1678 1778/1795/1778 +f 1678/1694/1678 1679/1695/1679 1778/1795/1778 +f 1778/1795/1778 1679/1695/1679 1779/1796/1779 +f 1679/1695/1679 1680/1696/1680 1779/1796/1779 +f 1779/1796/1779 1680/1696/1680 1780/1797/1780 +f 1680/1696/1680 1681/1697/1681 1780/1797/1780 +f 1780/1797/1780 1681/1697/1681 1781/1798/1781 +f 1681/1697/1681 1682/1698/1682 1781/1798/1781 +f 1781/1798/1781 1682/1698/1682 1782/1799/1782 +f 1682/1698/1682 1683/1699/1683 1782/1799/1782 +f 1782/1799/1782 1683/1699/1683 1783/1800/1783 +f 1683/1699/1683 1684/1700/1684 1783/1800/1783 +f 1783/1800/1783 1684/1700/1684 1784/1801/1784 +f 1684/1700/1684 1685/1701/1685 1784/1801/1784 +f 1784/1801/1784 1685/1701/1685 1785/1802/1785 +f 1685/1701/1685 1686/1702/1686 1785/1802/1785 +f 1785/1802/1785 1686/1702/1686 1786/1803/1786 +f 1686/1702/1686 1687/1703/1687 1786/1803/1786 +f 1786/1803/1786 1687/1703/1687 1787/1804/1787 +f 1687/1703/1687 1688/1704/1688 1787/1804/1787 +f 1787/1804/1787 1688/1704/1688 1788/1805/1788 +f 1688/1704/1688 1689/1705/1689 1788/1805/1788 +f 1788/1805/1788 1689/1705/1689 1789/1806/1789 +f 1689/1705/1689 1690/1706/1690 1789/1806/1789 +f 1789/1806/1789 1690/1706/1690 1790/1807/1790 +f 1690/1706/1690 1691/1707/1691 1790/1807/1790 +f 1790/1807/1790 1691/1707/1691 1791/1808/1791 +f 1691/1707/1691 1692/1708/1692 1791/1808/1791 +f 1791/1808/1791 1692/1708/1692 1792/1809/1792 +f 1692/1708/1692 1693/1709/1693 1792/1809/1792 +f 1792/1809/1792 1693/1709/1693 1793/1810/1793 +f 1693/1709/1693 1694/1710/1694 1793/1810/1793 +f 1793/1810/1793 1694/1710/1694 1794/1811/1794 +f 1694/1710/1694 1695/1711/1695 1794/1811/1794 +f 1794/1811/1794 1695/1711/1695 1795/1812/1795 +f 1695/1711/1695 1696/1712/1696 1795/1812/1795 +f 1795/1812/1795 1696/1712/1696 1796/1813/1796 +f 1696/1712/1696 1697/1713/1697 1796/1813/1796 +f 1796/1813/1796 1697/1713/1697 1797/1814/1797 +f 1697/1713/1697 1698/1714/1698 1797/1814/1797 +f 1797/1814/1797 1698/1714/1698 1798/1815/1798 +f 1698/1714/1698 1699/1715/1699 1798/1815/1798 +f 1798/1815/1798 1699/1715/1699 1799/1816/1799 +f 1699/1715/1699 1700/1716/1700 1799/1816/1799 +f 1799/1816/1799 1700/1716/1700 1800/1817/1800 +f 1700/1716/1700 1601/1717/1601 1800/1817/1800 +f 1800/1817/1800 1601/1717/1601 1701/1818/1701 +f 1701/1718/1701 1702/1719/1702 1801/1819/1801 +f 1801/1819/1801 1702/1719/1702 1802/1820/1802 +f 1702/1719/1702 1703/1720/1703 1802/1820/1802 +f 1802/1820/1802 1703/1720/1703 1803/1821/1803 +f 1703/1720/1703 1704/1721/1704 1803/1821/1803 +f 1803/1821/1803 1704/1721/1704 1804/1822/1804 +f 1704/1721/1704 1705/1722/1705 1804/1822/1804 +f 1804/1822/1804 1705/1722/1705 1805/1823/1805 +f 1705/1722/1705 1706/1723/1706 1805/1823/1805 +f 1805/1823/1805 1706/1723/1706 1806/1824/1806 +f 1706/1723/1706 1707/1724/1707 1806/1824/1806 +f 1806/1824/1806 1707/1724/1707 1807/1825/1807 +f 1707/1724/1707 1708/1725/1708 1807/1825/1807 +f 1807/1825/1807 1708/1725/1708 1808/1826/1808 +f 1708/1725/1708 1709/1726/1709 1808/1826/1808 +f 1808/1826/1808 1709/1726/1709 1809/1827/1809 +f 1709/1726/1709 1710/1727/1710 1809/1827/1809 +f 1809/1827/1809 1710/1727/1710 1810/1828/1810 +f 1710/1727/1710 1711/1728/1711 1810/1828/1810 +f 1810/1828/1810 1711/1728/1711 1811/1829/1811 +f 1711/1728/1711 1712/1729/1712 1811/1829/1811 +f 1811/1829/1811 1712/1729/1712 1812/1830/1812 +f 1712/1729/1712 1713/1730/1713 1812/1830/1812 +f 1812/1830/1812 1713/1730/1713 1813/1831/1813 +f 1713/1730/1713 1714/1731/1714 1813/1831/1813 +f 1813/1831/1813 1714/1731/1714 1814/1832/1814 +f 1714/1731/1714 1715/1732/1715 1814/1832/1814 +f 1814/1832/1814 1715/1732/1715 1815/1833/1815 +f 1715/1732/1715 1716/1733/1716 1815/1833/1815 +f 1815/1833/1815 1716/1733/1716 1816/1834/1816 +f 1716/1733/1716 1717/1734/1717 1816/1834/1816 +f 1816/1834/1816 1717/1734/1717 1817/1835/1817 +f 1717/1734/1717 1718/1735/1718 1817/1835/1817 +f 1817/1835/1817 1718/1735/1718 1818/1836/1818 +f 1718/1735/1718 1719/1736/1719 1818/1836/1818 +f 1818/1836/1818 1719/1736/1719 1819/1837/1819 +f 1719/1736/1719 1720/1737/1720 1819/1837/1819 +f 1819/1837/1819 1720/1737/1720 1820/1838/1820 +f 1720/1737/1720 1721/1738/1721 1820/1838/1820 +f 1820/1838/1820 1721/1738/1721 1821/1839/1821 +f 1721/1738/1721 1722/1739/1722 1821/1839/1821 +f 1821/1839/1821 1722/1739/1722 1822/1840/1822 +f 1722/1739/1722 1723/1740/1723 1822/1840/1822 +f 1822/1840/1822 1723/1740/1723 1823/1841/1823 +f 1723/1740/1723 1724/1741/1724 1823/1841/1823 +f 1823/1841/1823 1724/1741/1724 1824/1842/1824 +f 1724/1741/1724 1725/1742/1725 1824/1842/1824 +f 1824/1842/1824 1725/1742/1725 1825/1843/1825 +f 1725/1742/1725 1726/1743/1726 1825/1843/1825 +f 1825/1843/1825 1726/1743/1726 1826/1844/1826 +f 1726/1743/1726 1727/1744/1727 1826/1844/1826 +f 1826/1844/1826 1727/1744/1727 1827/1845/1827 +f 1727/1744/1727 1728/1745/1728 1827/1845/1827 +f 1827/1845/1827 1728/1745/1728 1828/1846/1828 +f 1728/1745/1728 1729/1746/1729 1828/1846/1828 +f 1828/1846/1828 1729/1746/1729 1829/1847/1829 +f 1729/1746/1729 1730/1747/1730 1829/1847/1829 +f 1829/1847/1829 1730/1747/1730 1830/1848/1830 +f 1730/1747/1730 1731/1748/1731 1830/1848/1830 +f 1830/1848/1830 1731/1748/1731 1831/1849/1831 +f 1731/1748/1731 1732/1749/1732 1831/1849/1831 +f 1831/1849/1831 1732/1749/1732 1832/1850/1832 +f 1732/1749/1732 1733/1750/1733 1832/1850/1832 +f 1832/1850/1832 1733/1750/1733 1833/1851/1833 +f 1733/1750/1733 1734/1751/1734 1833/1851/1833 +f 1833/1851/1833 1734/1751/1734 1834/1852/1834 +f 1734/1751/1734 1735/1752/1735 1834/1852/1834 +f 1834/1852/1834 1735/1752/1735 1835/1853/1835 +f 1735/1752/1735 1736/1753/1736 1835/1853/1835 +f 1835/1853/1835 1736/1753/1736 1836/1854/1836 +f 1736/1753/1736 1737/1754/1737 1836/1854/1836 +f 1836/1854/1836 1737/1754/1737 1837/1855/1837 +f 1737/1754/1737 1738/1755/1738 1837/1855/1837 +f 1837/1855/1837 1738/1755/1738 1838/1856/1838 +f 1738/1755/1738 1739/1756/1739 1838/1856/1838 +f 1838/1856/1838 1739/1756/1739 1839/1857/1839 +f 1739/1756/1739 1740/1757/1740 1839/1857/1839 +f 1839/1857/1839 1740/1757/1740 1840/1858/1840 +f 1740/1757/1740 1741/1758/1741 1840/1858/1840 +f 1840/1858/1840 1741/1758/1741 1841/1859/1841 +f 1741/1758/1741 1742/1759/1742 1841/1859/1841 +f 1841/1859/1841 1742/1759/1742 1842/1860/1842 +f 1742/1759/1742 1743/1760/1743 1842/1860/1842 +f 1842/1860/1842 1743/1760/1743 1843/1861/1843 +f 1743/1760/1743 1744/1761/1744 1843/1861/1843 +f 1843/1861/1843 1744/1761/1744 1844/1862/1844 +f 1744/1761/1744 1745/1762/1745 1844/1862/1844 +f 1844/1862/1844 1745/1762/1745 1845/1863/1845 +f 1745/1762/1745 1746/1763/1746 1845/1863/1845 +f 1845/1863/1845 1746/1763/1746 1846/1864/1846 +f 1746/1763/1746 1747/1764/1747 1846/1864/1846 +f 1846/1864/1846 1747/1764/1747 1847/1865/1847 +f 1747/1764/1747 1748/1765/1748 1847/1865/1847 +f 1847/1865/1847 1748/1765/1748 1848/1866/1848 +f 1748/1765/1748 1749/1766/1749 1848/1866/1848 +f 1848/1866/1848 1749/1766/1749 1849/1867/1849 +f 1749/1766/1749 1750/1767/1750 1849/1867/1849 +f 1849/1867/1849 1750/1767/1750 1850/1868/1850 +f 1750/1767/1750 1751/1768/1751 1850/1868/1850 +f 1850/1868/1850 1751/1768/1751 1851/1869/1851 +f 1751/1768/1751 1752/1769/1752 1851/1869/1851 +f 1851/1869/1851 1752/1769/1752 1852/1870/1852 +f 1752/1769/1752 1753/1770/1753 1852/1870/1852 +f 1852/1870/1852 1753/1770/1753 1853/1871/1853 +f 1753/1770/1753 1754/1771/1754 1853/1871/1853 +f 1853/1871/1853 1754/1771/1754 1854/1872/1854 +f 1754/1771/1754 1755/1772/1755 1854/1872/1854 +f 1854/1872/1854 1755/1772/1755 1855/1873/1855 +f 1755/1772/1755 1756/1773/1756 1855/1873/1855 +f 1855/1873/1855 1756/1773/1756 1856/1874/1856 +f 1756/1773/1756 1757/1774/1757 1856/1874/1856 +f 1856/1874/1856 1757/1774/1757 1857/1875/1857 +f 1757/1774/1757 1758/1775/1758 1857/1875/1857 +f 1857/1875/1857 1758/1775/1758 1858/1876/1858 +f 1758/1775/1758 1759/1776/1759 1858/1876/1858 +f 1858/1876/1858 1759/1776/1759 1859/1877/1859 +f 1759/1776/1759 1760/1777/1760 1859/1877/1859 +f 1859/1877/1859 1760/1777/1760 1860/1878/1860 +f 1760/1777/1760 1761/1778/1761 1860/1878/1860 +f 1860/1878/1860 1761/1778/1761 1861/1879/1861 +f 1761/1778/1761 1762/1779/1762 1861/1879/1861 +f 1861/1879/1861 1762/1779/1762 1862/1880/1862 +f 1762/1779/1762 1763/1780/1763 1862/1880/1862 +f 1862/1880/1862 1763/1780/1763 1863/1881/1863 +f 1763/1780/1763 1764/1781/1764 1863/1881/1863 +f 1863/1881/1863 1764/1781/1764 1864/1882/1864 +f 1764/1781/1764 1765/1782/1765 1864/1882/1864 +f 1864/1882/1864 1765/1782/1765 1865/1883/1865 +f 1765/1782/1765 1766/1783/1766 1865/1883/1865 +f 1865/1883/1865 1766/1783/1766 1866/1884/1866 +f 1766/1783/1766 1767/1784/1767 1866/1884/1866 +f 1866/1884/1866 1767/1784/1767 1867/1885/1867 +f 1767/1784/1767 1768/1785/1768 1867/1885/1867 +f 1867/1885/1867 1768/1785/1768 1868/1886/1868 +f 1768/1785/1768 1769/1786/1769 1868/1886/1868 +f 1868/1886/1868 1769/1786/1769 1869/1887/1869 +f 1769/1786/1769 1770/1787/1770 1869/1887/1869 +f 1869/1887/1869 1770/1787/1770 1870/1888/1870 +f 1770/1787/1770 1771/1788/1771 1870/1888/1870 +f 1870/1888/1870 1771/1788/1771 1871/1889/1871 +f 1771/1788/1771 1772/1789/1772 1871/1889/1871 +f 1871/1889/1871 1772/1789/1772 1872/1890/1872 +f 1772/1789/1772 1773/1790/1773 1872/1890/1872 +f 1872/1890/1872 1773/1790/1773 1873/1891/1873 +f 1773/1790/1773 1774/1791/1774 1873/1891/1873 +f 1873/1891/1873 1774/1791/1774 1874/1892/1874 +f 1774/1791/1774 1775/1792/1775 1874/1892/1874 +f 1874/1892/1874 1775/1792/1775 1875/1893/1875 +f 1775/1792/1775 1776/1793/1776 1875/1893/1875 +f 1875/1893/1875 1776/1793/1776 1876/1894/1876 +f 1776/1793/1776 1777/1794/1777 1876/1894/1876 +f 1876/1894/1876 1777/1794/1777 1877/1895/1877 +f 1777/1794/1777 1778/1795/1778 1877/1895/1877 +f 1877/1895/1877 1778/1795/1778 1878/1896/1878 +f 1778/1795/1778 1779/1796/1779 1878/1896/1878 +f 1878/1896/1878 1779/1796/1779 1879/1897/1879 +f 1779/1796/1779 1780/1797/1780 1879/1897/1879 +f 1879/1897/1879 1780/1797/1780 1880/1898/1880 +f 1780/1797/1780 1781/1798/1781 1880/1898/1880 +f 1880/1898/1880 1781/1798/1781 1881/1899/1881 +f 1781/1798/1781 1782/1799/1782 1881/1899/1881 +f 1881/1899/1881 1782/1799/1782 1882/1900/1882 +f 1782/1799/1782 1783/1800/1783 1882/1900/1882 +f 1882/1900/1882 1783/1800/1783 1883/1901/1883 +f 1783/1800/1783 1784/1801/1784 1883/1901/1883 +f 1883/1901/1883 1784/1801/1784 1884/1902/1884 +f 1784/1801/1784 1785/1802/1785 1884/1902/1884 +f 1884/1902/1884 1785/1802/1785 1885/1903/1885 +f 1785/1802/1785 1786/1803/1786 1885/1903/1885 +f 1885/1903/1885 1786/1803/1786 1886/1904/1886 +f 1786/1803/1786 1787/1804/1787 1886/1904/1886 +f 1886/1904/1886 1787/1804/1787 1887/1905/1887 +f 1787/1804/1787 1788/1805/1788 1887/1905/1887 +f 1887/1905/1887 1788/1805/1788 1888/1906/1888 +f 1788/1805/1788 1789/1806/1789 1888/1906/1888 +f 1888/1906/1888 1789/1806/1789 1889/1907/1889 +f 1789/1806/1789 1790/1807/1790 1889/1907/1889 +f 1889/1907/1889 1790/1807/1790 1890/1908/1890 +f 1790/1807/1790 1791/1808/1791 1890/1908/1890 +f 1890/1908/1890 1791/1808/1791 1891/1909/1891 +f 1791/1808/1791 1792/1809/1792 1891/1909/1891 +f 1891/1909/1891 1792/1809/1792 1892/1910/1892 +f 1792/1809/1792 1793/1810/1793 1892/1910/1892 +f 1892/1910/1892 1793/1810/1793 1893/1911/1893 +f 1793/1810/1793 1794/1811/1794 1893/1911/1893 +f 1893/1911/1893 1794/1811/1794 1894/1912/1894 +f 1794/1811/1794 1795/1812/1795 1894/1912/1894 +f 1894/1912/1894 1795/1812/1795 1895/1913/1895 +f 1795/1812/1795 1796/1813/1796 1895/1913/1895 +f 1895/1913/1895 1796/1813/1796 1896/1914/1896 +f 1796/1813/1796 1797/1814/1797 1896/1914/1896 +f 1896/1914/1896 1797/1814/1797 1897/1915/1897 +f 1797/1814/1797 1798/1815/1798 1897/1915/1897 +f 1897/1915/1897 1798/1815/1798 1898/1916/1898 +f 1798/1815/1798 1799/1816/1799 1898/1916/1898 +f 1898/1916/1898 1799/1816/1799 1899/1917/1899 +f 1799/1816/1799 1800/1817/1800 1899/1917/1899 +f 1899/1917/1899 1800/1817/1800 1900/1918/1900 +f 1800/1817/1800 1701/1818/1701 1900/1918/1900 +f 1900/1918/1900 1701/1818/1701 1801/1919/1801 +f 1801/1819/1801 1802/1820/1802 1901/1920/1901 +f 1901/1920/1901 1802/1820/1802 1902/1921/1902 +f 1802/1820/1802 1803/1821/1803 1902/1921/1902 +f 1902/1921/1902 1803/1821/1803 1903/1922/1903 +f 1803/1821/1803 1804/1822/1804 1903/1922/1903 +f 1903/1922/1903 1804/1822/1804 1904/1923/1904 +f 1804/1822/1804 1805/1823/1805 1904/1923/1904 +f 1904/1923/1904 1805/1823/1805 1905/1924/1905 +f 1805/1823/1805 1806/1824/1806 1905/1924/1905 +f 1905/1924/1905 1806/1824/1806 1906/1925/1906 +f 1806/1824/1806 1807/1825/1807 1906/1925/1906 +f 1906/1925/1906 1807/1825/1807 1907/1926/1907 +f 1807/1825/1807 1808/1826/1808 1907/1926/1907 +f 1907/1926/1907 1808/1826/1808 1908/1927/1908 +f 1808/1826/1808 1809/1827/1809 1908/1927/1908 +f 1908/1927/1908 1809/1827/1809 1909/1928/1909 +f 1809/1827/1809 1810/1828/1810 1909/1928/1909 +f 1909/1928/1909 1810/1828/1810 1910/1929/1910 +f 1810/1828/1810 1811/1829/1811 1910/1929/1910 +f 1910/1929/1910 1811/1829/1811 1911/1930/1911 +f 1811/1829/1811 1812/1830/1812 1911/1930/1911 +f 1911/1930/1911 1812/1830/1812 1912/1931/1912 +f 1812/1830/1812 1813/1831/1813 1912/1931/1912 +f 1912/1931/1912 1813/1831/1813 1913/1932/1913 +f 1813/1831/1813 1814/1832/1814 1913/1932/1913 +f 1913/1932/1913 1814/1832/1814 1914/1933/1914 +f 1814/1832/1814 1815/1833/1815 1914/1933/1914 +f 1914/1933/1914 1815/1833/1815 1915/1934/1915 +f 1815/1833/1815 1816/1834/1816 1915/1934/1915 +f 1915/1934/1915 1816/1834/1816 1916/1935/1916 +f 1816/1834/1816 1817/1835/1817 1916/1935/1916 +f 1916/1935/1916 1817/1835/1817 1917/1936/1917 +f 1817/1835/1817 1818/1836/1818 1917/1936/1917 +f 1917/1936/1917 1818/1836/1818 1918/1937/1918 +f 1818/1836/1818 1819/1837/1819 1918/1937/1918 +f 1918/1937/1918 1819/1837/1819 1919/1938/1919 +f 1819/1837/1819 1820/1838/1820 1919/1938/1919 +f 1919/1938/1919 1820/1838/1820 1920/1939/1920 +f 1820/1838/1820 1821/1839/1821 1920/1939/1920 +f 1920/1939/1920 1821/1839/1821 1921/1940/1921 +f 1821/1839/1821 1822/1840/1822 1921/1940/1921 +f 1921/1940/1921 1822/1840/1822 1922/1941/1922 +f 1822/1840/1822 1823/1841/1823 1922/1941/1922 +f 1922/1941/1922 1823/1841/1823 1923/1942/1923 +f 1823/1841/1823 1824/1842/1824 1923/1942/1923 +f 1923/1942/1923 1824/1842/1824 1924/1943/1924 +f 1824/1842/1824 1825/1843/1825 1924/1943/1924 +f 1924/1943/1924 1825/1843/1825 1925/1944/1925 +f 1825/1843/1825 1826/1844/1826 1925/1944/1925 +f 1925/1944/1925 1826/1844/1826 1926/1945/1926 +f 1826/1844/1826 1827/1845/1827 1926/1945/1926 +f 1926/1945/1926 1827/1845/1827 1927/1946/1927 +f 1827/1845/1827 1828/1846/1828 1927/1946/1927 +f 1927/1946/1927 1828/1846/1828 1928/1947/1928 +f 1828/1846/1828 1829/1847/1829 1928/1947/1928 +f 1928/1947/1928 1829/1847/1829 1929/1948/1929 +f 1829/1847/1829 1830/1848/1830 1929/1948/1929 +f 1929/1948/1929 1830/1848/1830 1930/1949/1930 +f 1830/1848/1830 1831/1849/1831 1930/1949/1930 +f 1930/1949/1930 1831/1849/1831 1931/1950/1931 +f 1831/1849/1831 1832/1850/1832 1931/1950/1931 +f 1931/1950/1931 1832/1850/1832 1932/1951/1932 +f 1832/1850/1832 1833/1851/1833 1932/1951/1932 +f 1932/1951/1932 1833/1851/1833 1933/1952/1933 +f 1833/1851/1833 1834/1852/1834 1933/1952/1933 +f 1933/1952/1933 1834/1852/1834 1934/1953/1934 +f 1834/1852/1834 1835/1853/1835 1934/1953/1934 +f 1934/1953/1934 1835/1853/1835 1935/1954/1935 +f 1835/1853/1835 1836/1854/1836 1935/1954/1935 +f 1935/1954/1935 1836/1854/1836 1936/1955/1936 +f 1836/1854/1836 1837/1855/1837 1936/1955/1936 +f 1936/1955/1936 1837/1855/1837 1937/1956/1937 +f 1837/1855/1837 1838/1856/1838 1937/1956/1937 +f 1937/1956/1937 1838/1856/1838 1938/1957/1938 +f 1838/1856/1838 1839/1857/1839 1938/1957/1938 +f 1938/1957/1938 1839/1857/1839 1939/1958/1939 +f 1839/1857/1839 1840/1858/1840 1939/1958/1939 +f 1939/1958/1939 1840/1858/1840 1940/1959/1940 +f 1840/1858/1840 1841/1859/1841 1940/1959/1940 +f 1940/1959/1940 1841/1859/1841 1941/1960/1941 +f 1841/1859/1841 1842/1860/1842 1941/1960/1941 +f 1941/1960/1941 1842/1860/1842 1942/1961/1942 +f 1842/1860/1842 1843/1861/1843 1942/1961/1942 +f 1942/1961/1942 1843/1861/1843 1943/1962/1943 +f 1843/1861/1843 1844/1862/1844 1943/1962/1943 +f 1943/1962/1943 1844/1862/1844 1944/1963/1944 +f 1844/1862/1844 1845/1863/1845 1944/1963/1944 +f 1944/1963/1944 1845/1863/1845 1945/1964/1945 +f 1845/1863/1845 1846/1864/1846 1945/1964/1945 +f 1945/1964/1945 1846/1864/1846 1946/1965/1946 +f 1846/1864/1846 1847/1865/1847 1946/1965/1946 +f 1946/1965/1946 1847/1865/1847 1947/1966/1947 +f 1847/1865/1847 1848/1866/1848 1947/1966/1947 +f 1947/1966/1947 1848/1866/1848 1948/1967/1948 +f 1848/1866/1848 1849/1867/1849 1948/1967/1948 +f 1948/1967/1948 1849/1867/1849 1949/1968/1949 +f 1849/1867/1849 1850/1868/1850 1949/1968/1949 +f 1949/1968/1949 1850/1868/1850 1950/1969/1950 +f 1850/1868/1850 1851/1869/1851 1950/1969/1950 +f 1950/1969/1950 1851/1869/1851 1951/1970/1951 +f 1851/1869/1851 1852/1870/1852 1951/1970/1951 +f 1951/1970/1951 1852/1870/1852 1952/1971/1952 +f 1852/1870/1852 1853/1871/1853 1952/1971/1952 +f 1952/1971/1952 1853/1871/1853 1953/1972/1953 +f 1853/1871/1853 1854/1872/1854 1953/1972/1953 +f 1953/1972/1953 1854/1872/1854 1954/1973/1954 +f 1854/1872/1854 1855/1873/1855 1954/1973/1954 +f 1954/1973/1954 1855/1873/1855 1955/1974/1955 +f 1855/1873/1855 1856/1874/1856 1955/1974/1955 +f 1955/1974/1955 1856/1874/1856 1956/1975/1956 +f 1856/1874/1856 1857/1875/1857 1956/1975/1956 +f 1956/1975/1956 1857/1875/1857 1957/1976/1957 +f 1857/1875/1857 1858/1876/1858 1957/1976/1957 +f 1957/1976/1957 1858/1876/1858 1958/1977/1958 +f 1858/1876/1858 1859/1877/1859 1958/1977/1958 +f 1958/1977/1958 1859/1877/1859 1959/1978/1959 +f 1859/1877/1859 1860/1878/1860 1959/1978/1959 +f 1959/1978/1959 1860/1878/1860 1960/1979/1960 +f 1860/1878/1860 1861/1879/1861 1960/1979/1960 +f 1960/1979/1960 1861/1879/1861 1961/1980/1961 +f 1861/1879/1861 1862/1880/1862 1961/1980/1961 +f 1961/1980/1961 1862/1880/1862 1962/1981/1962 +f 1862/1880/1862 1863/1881/1863 1962/1981/1962 +f 1962/1981/1962 1863/1881/1863 1963/1982/1963 +f 1863/1881/1863 1864/1882/1864 1963/1982/1963 +f 1963/1982/1963 1864/1882/1864 1964/1983/1964 +f 1864/1882/1864 1865/1883/1865 1964/1983/1964 +f 1964/1983/1964 1865/1883/1865 1965/1984/1965 +f 1865/1883/1865 1866/1884/1866 1965/1984/1965 +f 1965/1984/1965 1866/1884/1866 1966/1985/1966 +f 1866/1884/1866 1867/1885/1867 1966/1985/1966 +f 1966/1985/1966 1867/1885/1867 1967/1986/1967 +f 1867/1885/1867 1868/1886/1868 1967/1986/1967 +f 1967/1986/1967 1868/1886/1868 1968/1987/1968 +f 1868/1886/1868 1869/1887/1869 1968/1987/1968 +f 1968/1987/1968 1869/1887/1869 1969/1988/1969 +f 1869/1887/1869 1870/1888/1870 1969/1988/1969 +f 1969/1988/1969 1870/1888/1870 1970/1989/1970 +f 1870/1888/1870 1871/1889/1871 1970/1989/1970 +f 1970/1989/1970 1871/1889/1871 1971/1990/1971 +f 1871/1889/1871 1872/1890/1872 1971/1990/1971 +f 1971/1990/1971 1872/1890/1872 1972/1991/1972 +f 1872/1890/1872 1873/1891/1873 1972/1991/1972 +f 1972/1991/1972 1873/1891/1873 1973/1992/1973 +f 1873/1891/1873 1874/1892/1874 1973/1992/1973 +f 1973/1992/1973 1874/1892/1874 1974/1993/1974 +f 1874/1892/1874 1875/1893/1875 1974/1993/1974 +f 1974/1993/1974 1875/1893/1875 1975/1994/1975 +f 1875/1893/1875 1876/1894/1876 1975/1994/1975 +f 1975/1994/1975 1876/1894/1876 1976/1995/1976 +f 1876/1894/1876 1877/1895/1877 1976/1995/1976 +f 1976/1995/1976 1877/1895/1877 1977/1996/1977 +f 1877/1895/1877 1878/1896/1878 1977/1996/1977 +f 1977/1996/1977 1878/1896/1878 1978/1997/1978 +f 1878/1896/1878 1879/1897/1879 1978/1997/1978 +f 1978/1997/1978 1879/1897/1879 1979/1998/1979 +f 1879/1897/1879 1880/1898/1880 1979/1998/1979 +f 1979/1998/1979 1880/1898/1880 1980/1999/1980 +f 1880/1898/1880 1881/1899/1881 1980/1999/1980 +f 1980/1999/1980 1881/1899/1881 1981/2000/1981 +f 1881/1899/1881 1882/1900/1882 1981/2000/1981 +f 1981/2000/1981 1882/1900/1882 1982/2001/1982 +f 1882/1900/1882 1883/1901/1883 1982/2001/1982 +f 1982/2001/1982 1883/1901/1883 1983/2002/1983 +f 1883/1901/1883 1884/1902/1884 1983/2002/1983 +f 1983/2002/1983 1884/1902/1884 1984/2003/1984 +f 1884/1902/1884 1885/1903/1885 1984/2003/1984 +f 1984/2003/1984 1885/1903/1885 1985/2004/1985 +f 1885/1903/1885 1886/1904/1886 1985/2004/1985 +f 1985/2004/1985 1886/1904/1886 1986/2005/1986 +f 1886/1904/1886 1887/1905/1887 1986/2005/1986 +f 1986/2005/1986 1887/1905/1887 1987/2006/1987 +f 1887/1905/1887 1888/1906/1888 1987/2006/1987 +f 1987/2006/1987 1888/1906/1888 1988/2007/1988 +f 1888/1906/1888 1889/1907/1889 1988/2007/1988 +f 1988/2007/1988 1889/1907/1889 1989/2008/1989 +f 1889/1907/1889 1890/1908/1890 1989/2008/1989 +f 1989/2008/1989 1890/1908/1890 1990/2009/1990 +f 1890/1908/1890 1891/1909/1891 1990/2009/1990 +f 1990/2009/1990 1891/1909/1891 1991/2010/1991 +f 1891/1909/1891 1892/1910/1892 1991/2010/1991 +f 1991/2010/1991 1892/1910/1892 1992/2011/1992 +f 1892/1910/1892 1893/1911/1893 1992/2011/1992 +f 1992/2011/1992 1893/1911/1893 1993/2012/1993 +f 1893/1911/1893 1894/1912/1894 1993/2012/1993 +f 1993/2012/1993 1894/1912/1894 1994/2013/1994 +f 1894/1912/1894 1895/1913/1895 1994/2013/1994 +f 1994/2013/1994 1895/1913/1895 1995/2014/1995 +f 1895/1913/1895 1896/1914/1896 1995/2014/1995 +f 1995/2014/1995 1896/1914/1896 1996/2015/1996 +f 1896/1914/1896 1897/1915/1897 1996/2015/1996 +f 1996/2015/1996 1897/1915/1897 1997/2016/1997 +f 1897/1915/1897 1898/1916/1898 1997/2016/1997 +f 1997/2016/1997 1898/1916/1898 1998/2017/1998 +f 1898/1916/1898 1899/1917/1899 1998/2017/1998 +f 1998/2017/1998 1899/1917/1899 1999/2018/1999 +f 1899/1917/1899 1900/1918/1900 1999/2018/1999 +f 1999/2018/1999 1900/1918/1900 2000/2019/2000 +f 1900/1918/1900 1801/1919/1801 2000/2019/2000 +f 2000/2019/2000 1801/1919/1801 1901/2020/1901 +f 1901/1920/1901 1902/1921/1902 2001/2021/2001 +f 2001/2021/2001 1902/1921/1902 2002/2022/2002 +f 1902/1921/1902 1903/1922/1903 2002/2022/2002 +f 2002/2022/2002 1903/1922/1903 2003/2023/2003 +f 1903/1922/1903 1904/1923/1904 2003/2023/2003 +f 2003/2023/2003 1904/1923/1904 2004/2024/2004 +f 1904/1923/1904 1905/1924/1905 2004/2024/2004 +f 2004/2024/2004 1905/1924/1905 2005/2025/2005 +f 1905/1924/1905 1906/1925/1906 2005/2025/2005 +f 2005/2025/2005 1906/1925/1906 2006/2026/2006 +f 1906/1925/1906 1907/1926/1907 2006/2026/2006 +f 2006/2026/2006 1907/1926/1907 2007/2027/2007 +f 1907/1926/1907 1908/1927/1908 2007/2027/2007 +f 2007/2027/2007 1908/1927/1908 2008/2028/2008 +f 1908/1927/1908 1909/1928/1909 2008/2028/2008 +f 2008/2028/2008 1909/1928/1909 2009/2029/2009 +f 1909/1928/1909 1910/1929/1910 2009/2029/2009 +f 2009/2029/2009 1910/1929/1910 2010/2030/2010 +f 1910/1929/1910 1911/1930/1911 2010/2030/2010 +f 2010/2030/2010 1911/1930/1911 2011/2031/2011 +f 1911/1930/1911 1912/1931/1912 2011/2031/2011 +f 2011/2031/2011 1912/1931/1912 2012/2032/2012 +f 1912/1931/1912 1913/1932/1913 2012/2032/2012 +f 2012/2032/2012 1913/1932/1913 2013/2033/2013 +f 1913/1932/1913 1914/1933/1914 2013/2033/2013 +f 2013/2033/2013 1914/1933/1914 2014/2034/2014 +f 1914/1933/1914 1915/1934/1915 2014/2034/2014 +f 2014/2034/2014 1915/1934/1915 2015/2035/2015 +f 1915/1934/1915 1916/1935/1916 2015/2035/2015 +f 2015/2035/2015 1916/1935/1916 2016/2036/2016 +f 1916/1935/1916 1917/1936/1917 2016/2036/2016 +f 2016/2036/2016 1917/1936/1917 2017/2037/2017 +f 1917/1936/1917 1918/1937/1918 2017/2037/2017 +f 2017/2037/2017 1918/1937/1918 2018/2038/2018 +f 1918/1937/1918 1919/1938/1919 2018/2038/2018 +f 2018/2038/2018 1919/1938/1919 2019/2039/2019 +f 1919/1938/1919 1920/1939/1920 2019/2039/2019 +f 2019/2039/2019 1920/1939/1920 2020/2040/2020 +f 1920/1939/1920 1921/1940/1921 2020/2040/2020 +f 2020/2040/2020 1921/1940/1921 2021/2041/2021 +f 1921/1940/1921 1922/1941/1922 2021/2041/2021 +f 2021/2041/2021 1922/1941/1922 2022/2042/2022 +f 1922/1941/1922 1923/1942/1923 2022/2042/2022 +f 2022/2042/2022 1923/1942/1923 2023/2043/2023 +f 1923/1942/1923 1924/1943/1924 2023/2043/2023 +f 2023/2043/2023 1924/1943/1924 2024/2044/2024 +f 1924/1943/1924 1925/1944/1925 2024/2044/2024 +f 2024/2044/2024 1925/1944/1925 2025/2045/2025 +f 1925/1944/1925 1926/1945/1926 2025/2045/2025 +f 2025/2045/2025 1926/1945/1926 2026/2046/2026 +f 1926/1945/1926 1927/1946/1927 2026/2046/2026 +f 2026/2046/2026 1927/1946/1927 2027/2047/2027 +f 1927/1946/1927 1928/1947/1928 2027/2047/2027 +f 2027/2047/2027 1928/1947/1928 2028/2048/2028 +f 1928/1947/1928 1929/1948/1929 2028/2048/2028 +f 2028/2048/2028 1929/1948/1929 2029/2049/2029 +f 1929/1948/1929 1930/1949/1930 2029/2049/2029 +f 2029/2049/2029 1930/1949/1930 2030/2050/2030 +f 1930/1949/1930 1931/1950/1931 2030/2050/2030 +f 2030/2050/2030 1931/1950/1931 2031/2051/2031 +f 1931/1950/1931 1932/1951/1932 2031/2051/2031 +f 2031/2051/2031 1932/1951/1932 2032/2052/2032 +f 1932/1951/1932 1933/1952/1933 2032/2052/2032 +f 2032/2052/2032 1933/1952/1933 2033/2053/2033 +f 1933/1952/1933 1934/1953/1934 2033/2053/2033 +f 2033/2053/2033 1934/1953/1934 2034/2054/2034 +f 1934/1953/1934 1935/1954/1935 2034/2054/2034 +f 2034/2054/2034 1935/1954/1935 2035/2055/2035 +f 1935/1954/1935 1936/1955/1936 2035/2055/2035 +f 2035/2055/2035 1936/1955/1936 2036/2056/2036 +f 1936/1955/1936 1937/1956/1937 2036/2056/2036 +f 2036/2056/2036 1937/1956/1937 2037/2057/2037 +f 1937/1956/1937 1938/1957/1938 2037/2057/2037 +f 2037/2057/2037 1938/1957/1938 2038/2058/2038 +f 1938/1957/1938 1939/1958/1939 2038/2058/2038 +f 2038/2058/2038 1939/1958/1939 2039/2059/2039 +f 1939/1958/1939 1940/1959/1940 2039/2059/2039 +f 2039/2059/2039 1940/1959/1940 2040/2060/2040 +f 1940/1959/1940 1941/1960/1941 2040/2060/2040 +f 2040/2060/2040 1941/1960/1941 2041/2061/2041 +f 1941/1960/1941 1942/1961/1942 2041/2061/2041 +f 2041/2061/2041 1942/1961/1942 2042/2062/2042 +f 1942/1961/1942 1943/1962/1943 2042/2062/2042 +f 2042/2062/2042 1943/1962/1943 2043/2063/2043 +f 1943/1962/1943 1944/1963/1944 2043/2063/2043 +f 2043/2063/2043 1944/1963/1944 2044/2064/2044 +f 1944/1963/1944 1945/1964/1945 2044/2064/2044 +f 2044/2064/2044 1945/1964/1945 2045/2065/2045 +f 1945/1964/1945 1946/1965/1946 2045/2065/2045 +f 2045/2065/2045 1946/1965/1946 2046/2066/2046 +f 1946/1965/1946 1947/1966/1947 2046/2066/2046 +f 2046/2066/2046 1947/1966/1947 2047/2067/2047 +f 1947/1966/1947 1948/1967/1948 2047/2067/2047 +f 2047/2067/2047 1948/1967/1948 2048/2068/2048 +f 1948/1967/1948 1949/1968/1949 2048/2068/2048 +f 2048/2068/2048 1949/1968/1949 2049/2069/2049 +f 1949/1968/1949 1950/1969/1950 2049/2069/2049 +f 2049/2069/2049 1950/1969/1950 2050/2070/2050 +f 1950/1969/1950 1951/1970/1951 2050/2070/2050 +f 2050/2070/2050 1951/1970/1951 2051/2071/2051 +f 1951/1970/1951 1952/1971/1952 2051/2071/2051 +f 2051/2071/2051 1952/1971/1952 2052/2072/2052 +f 1952/1971/1952 1953/1972/1953 2052/2072/2052 +f 2052/2072/2052 1953/1972/1953 2053/2073/2053 +f 1953/1972/1953 1954/1973/1954 2053/2073/2053 +f 2053/2073/2053 1954/1973/1954 2054/2074/2054 +f 1954/1973/1954 1955/1974/1955 2054/2074/2054 +f 2054/2074/2054 1955/1974/1955 2055/2075/2055 +f 1955/1974/1955 1956/1975/1956 2055/2075/2055 +f 2055/2075/2055 1956/1975/1956 2056/2076/2056 +f 1956/1975/1956 1957/1976/1957 2056/2076/2056 +f 2056/2076/2056 1957/1976/1957 2057/2077/2057 +f 1957/1976/1957 1958/1977/1958 2057/2077/2057 +f 2057/2077/2057 1958/1977/1958 2058/2078/2058 +f 1958/1977/1958 1959/1978/1959 2058/2078/2058 +f 2058/2078/2058 1959/1978/1959 2059/2079/2059 +f 1959/1978/1959 1960/1979/1960 2059/2079/2059 +f 2059/2079/2059 1960/1979/1960 2060/2080/2060 +f 1960/1979/1960 1961/1980/1961 2060/2080/2060 +f 2060/2080/2060 1961/1980/1961 2061/2081/2061 +f 1961/1980/1961 1962/1981/1962 2061/2081/2061 +f 2061/2081/2061 1962/1981/1962 2062/2082/2062 +f 1962/1981/1962 1963/1982/1963 2062/2082/2062 +f 2062/2082/2062 1963/1982/1963 2063/2083/2063 +f 1963/1982/1963 1964/1983/1964 2063/2083/2063 +f 2063/2083/2063 1964/1983/1964 2064/2084/2064 +f 1964/1983/1964 1965/1984/1965 2064/2084/2064 +f 2064/2084/2064 1965/1984/1965 2065/2085/2065 +f 1965/1984/1965 1966/1985/1966 2065/2085/2065 +f 2065/2085/2065 1966/1985/1966 2066/2086/2066 +f 1966/1985/1966 1967/1986/1967 2066/2086/2066 +f 2066/2086/2066 1967/1986/1967 2067/2087/2067 +f 1967/1986/1967 1968/1987/1968 2067/2087/2067 +f 2067/2087/2067 1968/1987/1968 2068/2088/2068 +f 1968/1987/1968 1969/1988/1969 2068/2088/2068 +f 2068/2088/2068 1969/1988/1969 2069/2089/2069 +f 1969/1988/1969 1970/1989/1970 2069/2089/2069 +f 2069/2089/2069 1970/1989/1970 2070/2090/2070 +f 1970/1989/1970 1971/1990/1971 2070/2090/2070 +f 2070/2090/2070 1971/1990/1971 2071/2091/2071 +f 1971/1990/1971 1972/1991/1972 2071/2091/2071 +f 2071/2091/2071 1972/1991/1972 2072/2092/2072 +f 1972/1991/1972 1973/1992/1973 2072/2092/2072 +f 2072/2092/2072 1973/1992/1973 2073/2093/2073 +f 1973/1992/1973 1974/1993/1974 2073/2093/2073 +f 2073/2093/2073 1974/1993/1974 2074/2094/2074 +f 1974/1993/1974 1975/1994/1975 2074/2094/2074 +f 2074/2094/2074 1975/1994/1975 2075/2095/2075 +f 1975/1994/1975 1976/1995/1976 2075/2095/2075 +f 2075/2095/2075 1976/1995/1976 2076/2096/2076 +f 1976/1995/1976 1977/1996/1977 2076/2096/2076 +f 2076/2096/2076 1977/1996/1977 2077/2097/2077 +f 1977/1996/1977 1978/1997/1978 2077/2097/2077 +f 2077/2097/2077 1978/1997/1978 2078/2098/2078 +f 1978/1997/1978 1979/1998/1979 2078/2098/2078 +f 2078/2098/2078 1979/1998/1979 2079/2099/2079 +f 1979/1998/1979 1980/1999/1980 2079/2099/2079 +f 2079/2099/2079 1980/1999/1980 2080/2100/2080 +f 1980/1999/1980 1981/2000/1981 2080/2100/2080 +f 2080/2100/2080 1981/2000/1981 2081/2101/2081 +f 1981/2000/1981 1982/2001/1982 2081/2101/2081 +f 2081/2101/2081 1982/2001/1982 2082/2102/2082 +f 1982/2001/1982 1983/2002/1983 2082/2102/2082 +f 2082/2102/2082 1983/2002/1983 2083/2103/2083 +f 1983/2002/1983 1984/2003/1984 2083/2103/2083 +f 2083/2103/2083 1984/2003/1984 2084/2104/2084 +f 1984/2003/1984 1985/2004/1985 2084/2104/2084 +f 2084/2104/2084 1985/2004/1985 2085/2105/2085 +f 1985/2004/1985 1986/2005/1986 2085/2105/2085 +f 2085/2105/2085 1986/2005/1986 2086/2106/2086 +f 1986/2005/1986 1987/2006/1987 2086/2106/2086 +f 2086/2106/2086 1987/2006/1987 2087/2107/2087 +f 1987/2006/1987 1988/2007/1988 2087/2107/2087 +f 2087/2107/2087 1988/2007/1988 2088/2108/2088 +f 1988/2007/1988 1989/2008/1989 2088/2108/2088 +f 2088/2108/2088 1989/2008/1989 2089/2109/2089 +f 1989/2008/1989 1990/2009/1990 2089/2109/2089 +f 2089/2109/2089 1990/2009/1990 2090/2110/2090 +f 1990/2009/1990 1991/2010/1991 2090/2110/2090 +f 2090/2110/2090 1991/2010/1991 2091/2111/2091 +f 1991/2010/1991 1992/2011/1992 2091/2111/2091 +f 2091/2111/2091 1992/2011/1992 2092/2112/2092 +f 1992/2011/1992 1993/2012/1993 2092/2112/2092 +f 2092/2112/2092 1993/2012/1993 2093/2113/2093 +f 1993/2012/1993 1994/2013/1994 2093/2113/2093 +f 2093/2113/2093 1994/2013/1994 2094/2114/2094 +f 1994/2013/1994 1995/2014/1995 2094/2114/2094 +f 2094/2114/2094 1995/2014/1995 2095/2115/2095 +f 1995/2014/1995 1996/2015/1996 2095/2115/2095 +f 2095/2115/2095 1996/2015/1996 2096/2116/2096 +f 1996/2015/1996 1997/2016/1997 2096/2116/2096 +f 2096/2116/2096 1997/2016/1997 2097/2117/2097 +f 1997/2016/1997 1998/2017/1998 2097/2117/2097 +f 2097/2117/2097 1998/2017/1998 2098/2118/2098 +f 1998/2017/1998 1999/2018/1999 2098/2118/2098 +f 2098/2118/2098 1999/2018/1999 2099/2119/2099 +f 1999/2018/1999 2000/2019/2000 2099/2119/2099 +f 2099/2119/2099 2000/2019/2000 2100/2120/2100 +f 2000/2019/2000 1901/2020/1901 2100/2120/2100 +f 2100/2120/2100 1901/2020/1901 2001/2121/2001 +f 2001/2021/2001 2002/2022/2002 2101/2122/2101 +f 2101/2122/2101 2002/2022/2002 2102/2123/2102 +f 2002/2022/2002 2003/2023/2003 2102/2123/2102 +f 2102/2123/2102 2003/2023/2003 2103/2124/2103 +f 2003/2023/2003 2004/2024/2004 2103/2124/2103 +f 2103/2124/2103 2004/2024/2004 2104/2125/2104 +f 2004/2024/2004 2005/2025/2005 2104/2125/2104 +f 2104/2125/2104 2005/2025/2005 2105/2126/2105 +f 2005/2025/2005 2006/2026/2006 2105/2126/2105 +f 2105/2126/2105 2006/2026/2006 2106/2127/2106 +f 2006/2026/2006 2007/2027/2007 2106/2127/2106 +f 2106/2127/2106 2007/2027/2007 2107/2128/2107 +f 2007/2027/2007 2008/2028/2008 2107/2128/2107 +f 2107/2128/2107 2008/2028/2008 2108/2129/2108 +f 2008/2028/2008 2009/2029/2009 2108/2129/2108 +f 2108/2129/2108 2009/2029/2009 2109/2130/2109 +f 2009/2029/2009 2010/2030/2010 2109/2130/2109 +f 2109/2130/2109 2010/2030/2010 2110/2131/2110 +f 2010/2030/2010 2011/2031/2011 2110/2131/2110 +f 2110/2131/2110 2011/2031/2011 2111/2132/2111 +f 2011/2031/2011 2012/2032/2012 2111/2132/2111 +f 2111/2132/2111 2012/2032/2012 2112/2133/2112 +f 2012/2032/2012 2013/2033/2013 2112/2133/2112 +f 2112/2133/2112 2013/2033/2013 2113/2134/2113 +f 2013/2033/2013 2014/2034/2014 2113/2134/2113 +f 2113/2134/2113 2014/2034/2014 2114/2135/2114 +f 2014/2034/2014 2015/2035/2015 2114/2135/2114 +f 2114/2135/2114 2015/2035/2015 2115/2136/2115 +f 2015/2035/2015 2016/2036/2016 2115/2136/2115 +f 2115/2136/2115 2016/2036/2016 2116/2137/2116 +f 2016/2036/2016 2017/2037/2017 2116/2137/2116 +f 2116/2137/2116 2017/2037/2017 2117/2138/2117 +f 2017/2037/2017 2018/2038/2018 2117/2138/2117 +f 2117/2138/2117 2018/2038/2018 2118/2139/2118 +f 2018/2038/2018 2019/2039/2019 2118/2139/2118 +f 2118/2139/2118 2019/2039/2019 2119/2140/2119 +f 2019/2039/2019 2020/2040/2020 2119/2140/2119 +f 2119/2140/2119 2020/2040/2020 2120/2141/2120 +f 2020/2040/2020 2021/2041/2021 2120/2141/2120 +f 2120/2141/2120 2021/2041/2021 2121/2142/2121 +f 2021/2041/2021 2022/2042/2022 2121/2142/2121 +f 2121/2142/2121 2022/2042/2022 2122/2143/2122 +f 2022/2042/2022 2023/2043/2023 2122/2143/2122 +f 2122/2143/2122 2023/2043/2023 2123/2144/2123 +f 2023/2043/2023 2024/2044/2024 2123/2144/2123 +f 2123/2144/2123 2024/2044/2024 2124/2145/2124 +f 2024/2044/2024 2025/2045/2025 2124/2145/2124 +f 2124/2145/2124 2025/2045/2025 2125/2146/2125 +f 2025/2045/2025 2026/2046/2026 2125/2146/2125 +f 2125/2146/2125 2026/2046/2026 2126/2147/2126 +f 2026/2046/2026 2027/2047/2027 2126/2147/2126 +f 2126/2147/2126 2027/2047/2027 2127/2148/2127 +f 2027/2047/2027 2028/2048/2028 2127/2148/2127 +f 2127/2148/2127 2028/2048/2028 2128/2149/2128 +f 2028/2048/2028 2029/2049/2029 2128/2149/2128 +f 2128/2149/2128 2029/2049/2029 2129/2150/2129 +f 2029/2049/2029 2030/2050/2030 2129/2150/2129 +f 2129/2150/2129 2030/2050/2030 2130/2151/2130 +f 2030/2050/2030 2031/2051/2031 2130/2151/2130 +f 2130/2151/2130 2031/2051/2031 2131/2152/2131 +f 2031/2051/2031 2032/2052/2032 2131/2152/2131 +f 2131/2152/2131 2032/2052/2032 2132/2153/2132 +f 2032/2052/2032 2033/2053/2033 2132/2153/2132 +f 2132/2153/2132 2033/2053/2033 2133/2154/2133 +f 2033/2053/2033 2034/2054/2034 2133/2154/2133 +f 2133/2154/2133 2034/2054/2034 2134/2155/2134 +f 2034/2054/2034 2035/2055/2035 2134/2155/2134 +f 2134/2155/2134 2035/2055/2035 2135/2156/2135 +f 2035/2055/2035 2036/2056/2036 2135/2156/2135 +f 2135/2156/2135 2036/2056/2036 2136/2157/2136 +f 2036/2056/2036 2037/2057/2037 2136/2157/2136 +f 2136/2157/2136 2037/2057/2037 2137/2158/2137 +f 2037/2057/2037 2038/2058/2038 2137/2158/2137 +f 2137/2158/2137 2038/2058/2038 2138/2159/2138 +f 2038/2058/2038 2039/2059/2039 2138/2159/2138 +f 2138/2159/2138 2039/2059/2039 2139/2160/2139 +f 2039/2059/2039 2040/2060/2040 2139/2160/2139 +f 2139/2160/2139 2040/2060/2040 2140/2161/2140 +f 2040/2060/2040 2041/2061/2041 2140/2161/2140 +f 2140/2161/2140 2041/2061/2041 2141/2162/2141 +f 2041/2061/2041 2042/2062/2042 2141/2162/2141 +f 2141/2162/2141 2042/2062/2042 2142/2163/2142 +f 2042/2062/2042 2043/2063/2043 2142/2163/2142 +f 2142/2163/2142 2043/2063/2043 2143/2164/2143 +f 2043/2063/2043 2044/2064/2044 2143/2164/2143 +f 2143/2164/2143 2044/2064/2044 2144/2165/2144 +f 2044/2064/2044 2045/2065/2045 2144/2165/2144 +f 2144/2165/2144 2045/2065/2045 2145/2166/2145 +f 2045/2065/2045 2046/2066/2046 2145/2166/2145 +f 2145/2166/2145 2046/2066/2046 2146/2167/2146 +f 2046/2066/2046 2047/2067/2047 2146/2167/2146 +f 2146/2167/2146 2047/2067/2047 2147/2168/2147 +f 2047/2067/2047 2048/2068/2048 2147/2168/2147 +f 2147/2168/2147 2048/2068/2048 2148/2169/2148 +f 2048/2068/2048 2049/2069/2049 2148/2169/2148 +f 2148/2169/2148 2049/2069/2049 2149/2170/2149 +f 2049/2069/2049 2050/2070/2050 2149/2170/2149 +f 2149/2170/2149 2050/2070/2050 2150/2171/2150 +f 2050/2070/2050 2051/2071/2051 2150/2171/2150 +f 2150/2171/2150 2051/2071/2051 2151/2172/2151 +f 2051/2071/2051 2052/2072/2052 2151/2172/2151 +f 2151/2172/2151 2052/2072/2052 2152/2173/2152 +f 2052/2072/2052 2053/2073/2053 2152/2173/2152 +f 2152/2173/2152 2053/2073/2053 2153/2174/2153 +f 2053/2073/2053 2054/2074/2054 2153/2174/2153 +f 2153/2174/2153 2054/2074/2054 2154/2175/2154 +f 2054/2074/2054 2055/2075/2055 2154/2175/2154 +f 2154/2175/2154 2055/2075/2055 2155/2176/2155 +f 2055/2075/2055 2056/2076/2056 2155/2176/2155 +f 2155/2176/2155 2056/2076/2056 2156/2177/2156 +f 2056/2076/2056 2057/2077/2057 2156/2177/2156 +f 2156/2177/2156 2057/2077/2057 2157/2178/2157 +f 2057/2077/2057 2058/2078/2058 2157/2178/2157 +f 2157/2178/2157 2058/2078/2058 2158/2179/2158 +f 2058/2078/2058 2059/2079/2059 2158/2179/2158 +f 2158/2179/2158 2059/2079/2059 2159/2180/2159 +f 2059/2079/2059 2060/2080/2060 2159/2180/2159 +f 2159/2180/2159 2060/2080/2060 2160/2181/2160 +f 2060/2080/2060 2061/2081/2061 2160/2181/2160 +f 2160/2181/2160 2061/2081/2061 2161/2182/2161 +f 2061/2081/2061 2062/2082/2062 2161/2182/2161 +f 2161/2182/2161 2062/2082/2062 2162/2183/2162 +f 2062/2082/2062 2063/2083/2063 2162/2183/2162 +f 2162/2183/2162 2063/2083/2063 2163/2184/2163 +f 2063/2083/2063 2064/2084/2064 2163/2184/2163 +f 2163/2184/2163 2064/2084/2064 2164/2185/2164 +f 2064/2084/2064 2065/2085/2065 2164/2185/2164 +f 2164/2185/2164 2065/2085/2065 2165/2186/2165 +f 2065/2085/2065 2066/2086/2066 2165/2186/2165 +f 2165/2186/2165 2066/2086/2066 2166/2187/2166 +f 2066/2086/2066 2067/2087/2067 2166/2187/2166 +f 2166/2187/2166 2067/2087/2067 2167/2188/2167 +f 2067/2087/2067 2068/2088/2068 2167/2188/2167 +f 2167/2188/2167 2068/2088/2068 2168/2189/2168 +f 2068/2088/2068 2069/2089/2069 2168/2189/2168 +f 2168/2189/2168 2069/2089/2069 2169/2190/2169 +f 2069/2089/2069 2070/2090/2070 2169/2190/2169 +f 2169/2190/2169 2070/2090/2070 2170/2191/2170 +f 2070/2090/2070 2071/2091/2071 2170/2191/2170 +f 2170/2191/2170 2071/2091/2071 2171/2192/2171 +f 2071/2091/2071 2072/2092/2072 2171/2192/2171 +f 2171/2192/2171 2072/2092/2072 2172/2193/2172 +f 2072/2092/2072 2073/2093/2073 2172/2193/2172 +f 2172/2193/2172 2073/2093/2073 2173/2194/2173 +f 2073/2093/2073 2074/2094/2074 2173/2194/2173 +f 2173/2194/2173 2074/2094/2074 2174/2195/2174 +f 2074/2094/2074 2075/2095/2075 2174/2195/2174 +f 2174/2195/2174 2075/2095/2075 2175/2196/2175 +f 2075/2095/2075 2076/2096/2076 2175/2196/2175 +f 2175/2196/2175 2076/2096/2076 2176/2197/2176 +f 2076/2096/2076 2077/2097/2077 2176/2197/2176 +f 2176/2197/2176 2077/2097/2077 2177/2198/2177 +f 2077/2097/2077 2078/2098/2078 2177/2198/2177 +f 2177/2198/2177 2078/2098/2078 2178/2199/2178 +f 2078/2098/2078 2079/2099/2079 2178/2199/2178 +f 2178/2199/2178 2079/2099/2079 2179/2200/2179 +f 2079/2099/2079 2080/2100/2080 2179/2200/2179 +f 2179/2200/2179 2080/2100/2080 2180/2201/2180 +f 2080/2100/2080 2081/2101/2081 2180/2201/2180 +f 2180/2201/2180 2081/2101/2081 2181/2202/2181 +f 2081/2101/2081 2082/2102/2082 2181/2202/2181 +f 2181/2202/2181 2082/2102/2082 2182/2203/2182 +f 2082/2102/2082 2083/2103/2083 2182/2203/2182 +f 2182/2203/2182 2083/2103/2083 2183/2204/2183 +f 2083/2103/2083 2084/2104/2084 2183/2204/2183 +f 2183/2204/2183 2084/2104/2084 2184/2205/2184 +f 2084/2104/2084 2085/2105/2085 2184/2205/2184 +f 2184/2205/2184 2085/2105/2085 2185/2206/2185 +f 2085/2105/2085 2086/2106/2086 2185/2206/2185 +f 2185/2206/2185 2086/2106/2086 2186/2207/2186 +f 2086/2106/2086 2087/2107/2087 2186/2207/2186 +f 2186/2207/2186 2087/2107/2087 2187/2208/2187 +f 2087/2107/2087 2088/2108/2088 2187/2208/2187 +f 2187/2208/2187 2088/2108/2088 2188/2209/2188 +f 2088/2108/2088 2089/2109/2089 2188/2209/2188 +f 2188/2209/2188 2089/2109/2089 2189/2210/2189 +f 2089/2109/2089 2090/2110/2090 2189/2210/2189 +f 2189/2210/2189 2090/2110/2090 2190/2211/2190 +f 2090/2110/2090 2091/2111/2091 2190/2211/2190 +f 2190/2211/2190 2091/2111/2091 2191/2212/2191 +f 2091/2111/2091 2092/2112/2092 2191/2212/2191 +f 2191/2212/2191 2092/2112/2092 2192/2213/2192 +f 2092/2112/2092 2093/2113/2093 2192/2213/2192 +f 2192/2213/2192 2093/2113/2093 2193/2214/2193 +f 2093/2113/2093 2094/2114/2094 2193/2214/2193 +f 2193/2214/2193 2094/2114/2094 2194/2215/2194 +f 2094/2114/2094 2095/2115/2095 2194/2215/2194 +f 2194/2215/2194 2095/2115/2095 2195/2216/2195 +f 2095/2115/2095 2096/2116/2096 2195/2216/2195 +f 2195/2216/2195 2096/2116/2096 2196/2217/2196 +f 2096/2116/2096 2097/2117/2097 2196/2217/2196 +f 2196/2217/2196 2097/2117/2097 2197/2218/2197 +f 2097/2117/2097 2098/2118/2098 2197/2218/2197 +f 2197/2218/2197 2098/2118/2098 2198/2219/2198 +f 2098/2118/2098 2099/2119/2099 2198/2219/2198 +f 2198/2219/2198 2099/2119/2099 2199/2220/2199 +f 2099/2119/2099 2100/2120/2100 2199/2220/2199 +f 2199/2220/2199 2100/2120/2100 2200/2221/2200 +f 2100/2120/2100 2001/2121/2001 2200/2221/2200 +f 2200/2221/2200 2001/2121/2001 2101/2222/2101 +f 2101/2122/2101 2102/2123/2102 2201/2223/2201 +f 2201/2223/2201 2102/2123/2102 2202/2224/2202 +f 2102/2123/2102 2103/2124/2103 2202/2224/2202 +f 2202/2224/2202 2103/2124/2103 2203/2225/2203 +f 2103/2124/2103 2104/2125/2104 2203/2225/2203 +f 2203/2225/2203 2104/2125/2104 2204/2226/2204 +f 2104/2125/2104 2105/2126/2105 2204/2226/2204 +f 2204/2226/2204 2105/2126/2105 2205/2227/2205 +f 2105/2126/2105 2106/2127/2106 2205/2227/2205 +f 2205/2227/2205 2106/2127/2106 2206/2228/2206 +f 2106/2127/2106 2107/2128/2107 2206/2228/2206 +f 2206/2228/2206 2107/2128/2107 2207/2229/2207 +f 2107/2128/2107 2108/2129/2108 2207/2229/2207 +f 2207/2229/2207 2108/2129/2108 2208/2230/2208 +f 2108/2129/2108 2109/2130/2109 2208/2230/2208 +f 2208/2230/2208 2109/2130/2109 2209/2231/2209 +f 2109/2130/2109 2110/2131/2110 2209/2231/2209 +f 2209/2231/2209 2110/2131/2110 2210/2232/2210 +f 2110/2131/2110 2111/2132/2111 2210/2232/2210 +f 2210/2232/2210 2111/2132/2111 2211/2233/2211 +f 2111/2132/2111 2112/2133/2112 2211/2233/2211 +f 2211/2233/2211 2112/2133/2112 2212/2234/2212 +f 2112/2133/2112 2113/2134/2113 2212/2234/2212 +f 2212/2234/2212 2113/2134/2113 2213/2235/2213 +f 2113/2134/2113 2114/2135/2114 2213/2235/2213 +f 2213/2235/2213 2114/2135/2114 2214/2236/2214 +f 2114/2135/2114 2115/2136/2115 2214/2236/2214 +f 2214/2236/2214 2115/2136/2115 2215/2237/2215 +f 2115/2136/2115 2116/2137/2116 2215/2237/2215 +f 2215/2237/2215 2116/2137/2116 2216/2238/2216 +f 2116/2137/2116 2117/2138/2117 2216/2238/2216 +f 2216/2238/2216 2117/2138/2117 2217/2239/2217 +f 2117/2138/2117 2118/2139/2118 2217/2239/2217 +f 2217/2239/2217 2118/2139/2118 2218/2240/2218 +f 2118/2139/2118 2119/2140/2119 2218/2240/2218 +f 2218/2240/2218 2119/2140/2119 2219/2241/2219 +f 2119/2140/2119 2120/2141/2120 2219/2241/2219 +f 2219/2241/2219 2120/2141/2120 2220/2242/2220 +f 2120/2141/2120 2121/2142/2121 2220/2242/2220 +f 2220/2242/2220 2121/2142/2121 2221/2243/2221 +f 2121/2142/2121 2122/2143/2122 2221/2243/2221 +f 2221/2243/2221 2122/2143/2122 2222/2244/2222 +f 2122/2143/2122 2123/2144/2123 2222/2244/2222 +f 2222/2244/2222 2123/2144/2123 2223/2245/2223 +f 2123/2144/2123 2124/2145/2124 2223/2245/2223 +f 2223/2245/2223 2124/2145/2124 2224/2246/2224 +f 2124/2145/2124 2125/2146/2125 2224/2246/2224 +f 2224/2246/2224 2125/2146/2125 2225/2247/2225 +f 2125/2146/2125 2126/2147/2126 2225/2247/2225 +f 2225/2247/2225 2126/2147/2126 2226/2248/2226 +f 2126/2147/2126 2127/2148/2127 2226/2248/2226 +f 2226/2248/2226 2127/2148/2127 2227/2249/2227 +f 2127/2148/2127 2128/2149/2128 2227/2249/2227 +f 2227/2249/2227 2128/2149/2128 2228/2250/2228 +f 2128/2149/2128 2129/2150/2129 2228/2250/2228 +f 2228/2250/2228 2129/2150/2129 2229/2251/2229 +f 2129/2150/2129 2130/2151/2130 2229/2251/2229 +f 2229/2251/2229 2130/2151/2130 2230/2252/2230 +f 2130/2151/2130 2131/2152/2131 2230/2252/2230 +f 2230/2252/2230 2131/2152/2131 2231/2253/2231 +f 2131/2152/2131 2132/2153/2132 2231/2253/2231 +f 2231/2253/2231 2132/2153/2132 2232/2254/2232 +f 2132/2153/2132 2133/2154/2133 2232/2254/2232 +f 2232/2254/2232 2133/2154/2133 2233/2255/2233 +f 2133/2154/2133 2134/2155/2134 2233/2255/2233 +f 2233/2255/2233 2134/2155/2134 2234/2256/2234 +f 2134/2155/2134 2135/2156/2135 2234/2256/2234 +f 2234/2256/2234 2135/2156/2135 2235/2257/2235 +f 2135/2156/2135 2136/2157/2136 2235/2257/2235 +f 2235/2257/2235 2136/2157/2136 2236/2258/2236 +f 2136/2157/2136 2137/2158/2137 2236/2258/2236 +f 2236/2258/2236 2137/2158/2137 2237/2259/2237 +f 2137/2158/2137 2138/2159/2138 2237/2259/2237 +f 2237/2259/2237 2138/2159/2138 2238/2260/2238 +f 2138/2159/2138 2139/2160/2139 2238/2260/2238 +f 2238/2260/2238 2139/2160/2139 2239/2261/2239 +f 2139/2160/2139 2140/2161/2140 2239/2261/2239 +f 2239/2261/2239 2140/2161/2140 2240/2262/2240 +f 2140/2161/2140 2141/2162/2141 2240/2262/2240 +f 2240/2262/2240 2141/2162/2141 2241/2263/2241 +f 2141/2162/2141 2142/2163/2142 2241/2263/2241 +f 2241/2263/2241 2142/2163/2142 2242/2264/2242 +f 2142/2163/2142 2143/2164/2143 2242/2264/2242 +f 2242/2264/2242 2143/2164/2143 2243/2265/2243 +f 2143/2164/2143 2144/2165/2144 2243/2265/2243 +f 2243/2265/2243 2144/2165/2144 2244/2266/2244 +f 2144/2165/2144 2145/2166/2145 2244/2266/2244 +f 2244/2266/2244 2145/2166/2145 2245/2267/2245 +f 2145/2166/2145 2146/2167/2146 2245/2267/2245 +f 2245/2267/2245 2146/2167/2146 2246/2268/2246 +f 2146/2167/2146 2147/2168/2147 2246/2268/2246 +f 2246/2268/2246 2147/2168/2147 2247/2269/2247 +f 2147/2168/2147 2148/2169/2148 2247/2269/2247 +f 2247/2269/2247 2148/2169/2148 2248/2270/2248 +f 2148/2169/2148 2149/2170/2149 2248/2270/2248 +f 2248/2270/2248 2149/2170/2149 2249/2271/2249 +f 2149/2170/2149 2150/2171/2150 2249/2271/2249 +f 2249/2271/2249 2150/2171/2150 2250/2272/2250 +f 2150/2171/2150 2151/2172/2151 2250/2272/2250 +f 2250/2272/2250 2151/2172/2151 2251/2273/2251 +f 2151/2172/2151 2152/2173/2152 2251/2273/2251 +f 2251/2273/2251 2152/2173/2152 2252/2274/2252 +f 2152/2173/2152 2153/2174/2153 2252/2274/2252 +f 2252/2274/2252 2153/2174/2153 2253/2275/2253 +f 2153/2174/2153 2154/2175/2154 2253/2275/2253 +f 2253/2275/2253 2154/2175/2154 2254/2276/2254 +f 2154/2175/2154 2155/2176/2155 2254/2276/2254 +f 2254/2276/2254 2155/2176/2155 2255/2277/2255 +f 2155/2176/2155 2156/2177/2156 2255/2277/2255 +f 2255/2277/2255 2156/2177/2156 2256/2278/2256 +f 2156/2177/2156 2157/2178/2157 2256/2278/2256 +f 2256/2278/2256 2157/2178/2157 2257/2279/2257 +f 2157/2178/2157 2158/2179/2158 2257/2279/2257 +f 2257/2279/2257 2158/2179/2158 2258/2280/2258 +f 2158/2179/2158 2159/2180/2159 2258/2280/2258 +f 2258/2280/2258 2159/2180/2159 2259/2281/2259 +f 2159/2180/2159 2160/2181/2160 2259/2281/2259 +f 2259/2281/2259 2160/2181/2160 2260/2282/2260 +f 2160/2181/2160 2161/2182/2161 2260/2282/2260 +f 2260/2282/2260 2161/2182/2161 2261/2283/2261 +f 2161/2182/2161 2162/2183/2162 2261/2283/2261 +f 2261/2283/2261 2162/2183/2162 2262/2284/2262 +f 2162/2183/2162 2163/2184/2163 2262/2284/2262 +f 2262/2284/2262 2163/2184/2163 2263/2285/2263 +f 2163/2184/2163 2164/2185/2164 2263/2285/2263 +f 2263/2285/2263 2164/2185/2164 2264/2286/2264 +f 2164/2185/2164 2165/2186/2165 2264/2286/2264 +f 2264/2286/2264 2165/2186/2165 2265/2287/2265 +f 2165/2186/2165 2166/2187/2166 2265/2287/2265 +f 2265/2287/2265 2166/2187/2166 2266/2288/2266 +f 2166/2187/2166 2167/2188/2167 2266/2288/2266 +f 2266/2288/2266 2167/2188/2167 2267/2289/2267 +f 2167/2188/2167 2168/2189/2168 2267/2289/2267 +f 2267/2289/2267 2168/2189/2168 2268/2290/2268 +f 2168/2189/2168 2169/2190/2169 2268/2290/2268 +f 2268/2290/2268 2169/2190/2169 2269/2291/2269 +f 2169/2190/2169 2170/2191/2170 2269/2291/2269 +f 2269/2291/2269 2170/2191/2170 2270/2292/2270 +f 2170/2191/2170 2171/2192/2171 2270/2292/2270 +f 2270/2292/2270 2171/2192/2171 2271/2293/2271 +f 2171/2192/2171 2172/2193/2172 2271/2293/2271 +f 2271/2293/2271 2172/2193/2172 2272/2294/2272 +f 2172/2193/2172 2173/2194/2173 2272/2294/2272 +f 2272/2294/2272 2173/2194/2173 2273/2295/2273 +f 2173/2194/2173 2174/2195/2174 2273/2295/2273 +f 2273/2295/2273 2174/2195/2174 2274/2296/2274 +f 2174/2195/2174 2175/2196/2175 2274/2296/2274 +f 2274/2296/2274 2175/2196/2175 2275/2297/2275 +f 2175/2196/2175 2176/2197/2176 2275/2297/2275 +f 2275/2297/2275 2176/2197/2176 2276/2298/2276 +f 2176/2197/2176 2177/2198/2177 2276/2298/2276 +f 2276/2298/2276 2177/2198/2177 2277/2299/2277 +f 2177/2198/2177 2178/2199/2178 2277/2299/2277 +f 2277/2299/2277 2178/2199/2178 2278/2300/2278 +f 2178/2199/2178 2179/2200/2179 2278/2300/2278 +f 2278/2300/2278 2179/2200/2179 2279/2301/2279 +f 2179/2200/2179 2180/2201/2180 2279/2301/2279 +f 2279/2301/2279 2180/2201/2180 2280/2302/2280 +f 2180/2201/2180 2181/2202/2181 2280/2302/2280 +f 2280/2302/2280 2181/2202/2181 2281/2303/2281 +f 2181/2202/2181 2182/2203/2182 2281/2303/2281 +f 2281/2303/2281 2182/2203/2182 2282/2304/2282 +f 2182/2203/2182 2183/2204/2183 2282/2304/2282 +f 2282/2304/2282 2183/2204/2183 2283/2305/2283 +f 2183/2204/2183 2184/2205/2184 2283/2305/2283 +f 2283/2305/2283 2184/2205/2184 2284/2306/2284 +f 2184/2205/2184 2185/2206/2185 2284/2306/2284 +f 2284/2306/2284 2185/2206/2185 2285/2307/2285 +f 2185/2206/2185 2186/2207/2186 2285/2307/2285 +f 2285/2307/2285 2186/2207/2186 2286/2308/2286 +f 2186/2207/2186 2187/2208/2187 2286/2308/2286 +f 2286/2308/2286 2187/2208/2187 2287/2309/2287 +f 2187/2208/2187 2188/2209/2188 2287/2309/2287 +f 2287/2309/2287 2188/2209/2188 2288/2310/2288 +f 2188/2209/2188 2189/2210/2189 2288/2310/2288 +f 2288/2310/2288 2189/2210/2189 2289/2311/2289 +f 2189/2210/2189 2190/2211/2190 2289/2311/2289 +f 2289/2311/2289 2190/2211/2190 2290/2312/2290 +f 2190/2211/2190 2191/2212/2191 2290/2312/2290 +f 2290/2312/2290 2191/2212/2191 2291/2313/2291 +f 2191/2212/2191 2192/2213/2192 2291/2313/2291 +f 2291/2313/2291 2192/2213/2192 2292/2314/2292 +f 2192/2213/2192 2193/2214/2193 2292/2314/2292 +f 2292/2314/2292 2193/2214/2193 2293/2315/2293 +f 2193/2214/2193 2194/2215/2194 2293/2315/2293 +f 2293/2315/2293 2194/2215/2194 2294/2316/2294 +f 2194/2215/2194 2195/2216/2195 2294/2316/2294 +f 2294/2316/2294 2195/2216/2195 2295/2317/2295 +f 2195/2216/2195 2196/2217/2196 2295/2317/2295 +f 2295/2317/2295 2196/2217/2196 2296/2318/2296 +f 2196/2217/2196 2197/2218/2197 2296/2318/2296 +f 2296/2318/2296 2197/2218/2197 2297/2319/2297 +f 2197/2218/2197 2198/2219/2198 2297/2319/2297 +f 2297/2319/2297 2198/2219/2198 2298/2320/2298 +f 2198/2219/2198 2199/2220/2199 2298/2320/2298 +f 2298/2320/2298 2199/2220/2199 2299/2321/2299 +f 2199/2220/2199 2200/2221/2200 2299/2321/2299 +f 2299/2321/2299 2200/2221/2200 2300/2322/2300 +f 2200/2221/2200 2101/2222/2101 2300/2322/2300 +f 2300/2322/2300 2101/2222/2101 2201/2323/2201 +f 2201/2223/2201 2202/2224/2202 2301/2324/2301 +f 2301/2324/2301 2202/2224/2202 2302/2325/2302 +f 2202/2224/2202 2203/2225/2203 2302/2325/2302 +f 2302/2325/2302 2203/2225/2203 2303/2326/2303 +f 2203/2225/2203 2204/2226/2204 2303/2326/2303 +f 2303/2326/2303 2204/2226/2204 2304/2327/2304 +f 2204/2226/2204 2205/2227/2205 2304/2327/2304 +f 2304/2327/2304 2205/2227/2205 2305/2328/2305 +f 2205/2227/2205 2206/2228/2206 2305/2328/2305 +f 2305/2328/2305 2206/2228/2206 2306/2329/2306 +f 2206/2228/2206 2207/2229/2207 2306/2329/2306 +f 2306/2329/2306 2207/2229/2207 2307/2330/2307 +f 2207/2229/2207 2208/2230/2208 2307/2330/2307 +f 2307/2330/2307 2208/2230/2208 2308/2331/2308 +f 2208/2230/2208 2209/2231/2209 2308/2331/2308 +f 2308/2331/2308 2209/2231/2209 2309/2332/2309 +f 2209/2231/2209 2210/2232/2210 2309/2332/2309 +f 2309/2332/2309 2210/2232/2210 2310/2333/2310 +f 2210/2232/2210 2211/2233/2211 2310/2333/2310 +f 2310/2333/2310 2211/2233/2211 2311/2334/2311 +f 2211/2233/2211 2212/2234/2212 2311/2334/2311 +f 2311/2334/2311 2212/2234/2212 2312/2335/2312 +f 2212/2234/2212 2213/2235/2213 2312/2335/2312 +f 2312/2335/2312 2213/2235/2213 2313/2336/2313 +f 2213/2235/2213 2214/2236/2214 2313/2336/2313 +f 2313/2336/2313 2214/2236/2214 2314/2337/2314 +f 2214/2236/2214 2215/2237/2215 2314/2337/2314 +f 2314/2337/2314 2215/2237/2215 2315/2338/2315 +f 2215/2237/2215 2216/2238/2216 2315/2338/2315 +f 2315/2338/2315 2216/2238/2216 2316/2339/2316 +f 2216/2238/2216 2217/2239/2217 2316/2339/2316 +f 2316/2339/2316 2217/2239/2217 2317/2340/2317 +f 2217/2239/2217 2218/2240/2218 2317/2340/2317 +f 2317/2340/2317 2218/2240/2218 2318/2341/2318 +f 2218/2240/2218 2219/2241/2219 2318/2341/2318 +f 2318/2341/2318 2219/2241/2219 2319/2342/2319 +f 2219/2241/2219 2220/2242/2220 2319/2342/2319 +f 2319/2342/2319 2220/2242/2220 2320/2343/2320 +f 2220/2242/2220 2221/2243/2221 2320/2343/2320 +f 2320/2343/2320 2221/2243/2221 2321/2344/2321 +f 2221/2243/2221 2222/2244/2222 2321/2344/2321 +f 2321/2344/2321 2222/2244/2222 2322/2345/2322 +f 2222/2244/2222 2223/2245/2223 2322/2345/2322 +f 2322/2345/2322 2223/2245/2223 2323/2346/2323 +f 2223/2245/2223 2224/2246/2224 2323/2346/2323 +f 2323/2346/2323 2224/2246/2224 2324/2347/2324 +f 2224/2246/2224 2225/2247/2225 2324/2347/2324 +f 2324/2347/2324 2225/2247/2225 2325/2348/2325 +f 2225/2247/2225 2226/2248/2226 2325/2348/2325 +f 2325/2348/2325 2226/2248/2226 2326/2349/2326 +f 2226/2248/2226 2227/2249/2227 2326/2349/2326 +f 2326/2349/2326 2227/2249/2227 2327/2350/2327 +f 2227/2249/2227 2228/2250/2228 2327/2350/2327 +f 2327/2350/2327 2228/2250/2228 2328/2351/2328 +f 2228/2250/2228 2229/2251/2229 2328/2351/2328 +f 2328/2351/2328 2229/2251/2229 2329/2352/2329 +f 2229/2251/2229 2230/2252/2230 2329/2352/2329 +f 2329/2352/2329 2230/2252/2230 2330/2353/2330 +f 2230/2252/2230 2231/2253/2231 2330/2353/2330 +f 2330/2353/2330 2231/2253/2231 2331/2354/2331 +f 2231/2253/2231 2232/2254/2232 2331/2354/2331 +f 2331/2354/2331 2232/2254/2232 2332/2355/2332 +f 2232/2254/2232 2233/2255/2233 2332/2355/2332 +f 2332/2355/2332 2233/2255/2233 2333/2356/2333 +f 2233/2255/2233 2234/2256/2234 2333/2356/2333 +f 2333/2356/2333 2234/2256/2234 2334/2357/2334 +f 2234/2256/2234 2235/2257/2235 2334/2357/2334 +f 2334/2357/2334 2235/2257/2235 2335/2358/2335 +f 2235/2257/2235 2236/2258/2236 2335/2358/2335 +f 2335/2358/2335 2236/2258/2236 2336/2359/2336 +f 2236/2258/2236 2237/2259/2237 2336/2359/2336 +f 2336/2359/2336 2237/2259/2237 2337/2360/2337 +f 2237/2259/2237 2238/2260/2238 2337/2360/2337 +f 2337/2360/2337 2238/2260/2238 2338/2361/2338 +f 2238/2260/2238 2239/2261/2239 2338/2361/2338 +f 2338/2361/2338 2239/2261/2239 2339/2362/2339 +f 2239/2261/2239 2240/2262/2240 2339/2362/2339 +f 2339/2362/2339 2240/2262/2240 2340/2363/2340 +f 2240/2262/2240 2241/2263/2241 2340/2363/2340 +f 2340/2363/2340 2241/2263/2241 2341/2364/2341 +f 2241/2263/2241 2242/2264/2242 2341/2364/2341 +f 2341/2364/2341 2242/2264/2242 2342/2365/2342 +f 2242/2264/2242 2243/2265/2243 2342/2365/2342 +f 2342/2365/2342 2243/2265/2243 2343/2366/2343 +f 2243/2265/2243 2244/2266/2244 2343/2366/2343 +f 2343/2366/2343 2244/2266/2244 2344/2367/2344 +f 2244/2266/2244 2245/2267/2245 2344/2367/2344 +f 2344/2367/2344 2245/2267/2245 2345/2368/2345 +f 2245/2267/2245 2246/2268/2246 2345/2368/2345 +f 2345/2368/2345 2246/2268/2246 2346/2369/2346 +f 2246/2268/2246 2247/2269/2247 2346/2369/2346 +f 2346/2369/2346 2247/2269/2247 2347/2370/2347 +f 2247/2269/2247 2248/2270/2248 2347/2370/2347 +f 2347/2370/2347 2248/2270/2248 2348/2371/2348 +f 2248/2270/2248 2249/2271/2249 2348/2371/2348 +f 2348/2371/2348 2249/2271/2249 2349/2372/2349 +f 2249/2271/2249 2250/2272/2250 2349/2372/2349 +f 2349/2372/2349 2250/2272/2250 2350/2373/2350 +f 2250/2272/2250 2251/2273/2251 2350/2373/2350 +f 2350/2373/2350 2251/2273/2251 2351/2374/2351 +f 2251/2273/2251 2252/2274/2252 2351/2374/2351 +f 2351/2374/2351 2252/2274/2252 2352/2375/2352 +f 2252/2274/2252 2253/2275/2253 2352/2375/2352 +f 2352/2375/2352 2253/2275/2253 2353/2376/2353 +f 2253/2275/2253 2254/2276/2254 2353/2376/2353 +f 2353/2376/2353 2254/2276/2254 2354/2377/2354 +f 2254/2276/2254 2255/2277/2255 2354/2377/2354 +f 2354/2377/2354 2255/2277/2255 2355/2378/2355 +f 2255/2277/2255 2256/2278/2256 2355/2378/2355 +f 2355/2378/2355 2256/2278/2256 2356/2379/2356 +f 2256/2278/2256 2257/2279/2257 2356/2379/2356 +f 2356/2379/2356 2257/2279/2257 2357/2380/2357 +f 2257/2279/2257 2258/2280/2258 2357/2380/2357 +f 2357/2380/2357 2258/2280/2258 2358/2381/2358 +f 2258/2280/2258 2259/2281/2259 2358/2381/2358 +f 2358/2381/2358 2259/2281/2259 2359/2382/2359 +f 2259/2281/2259 2260/2282/2260 2359/2382/2359 +f 2359/2382/2359 2260/2282/2260 2360/2383/2360 +f 2260/2282/2260 2261/2283/2261 2360/2383/2360 +f 2360/2383/2360 2261/2283/2261 2361/2384/2361 +f 2261/2283/2261 2262/2284/2262 2361/2384/2361 +f 2361/2384/2361 2262/2284/2262 2362/2385/2362 +f 2262/2284/2262 2263/2285/2263 2362/2385/2362 +f 2362/2385/2362 2263/2285/2263 2363/2386/2363 +f 2263/2285/2263 2264/2286/2264 2363/2386/2363 +f 2363/2386/2363 2264/2286/2264 2364/2387/2364 +f 2264/2286/2264 2265/2287/2265 2364/2387/2364 +f 2364/2387/2364 2265/2287/2265 2365/2388/2365 +f 2265/2287/2265 2266/2288/2266 2365/2388/2365 +f 2365/2388/2365 2266/2288/2266 2366/2389/2366 +f 2266/2288/2266 2267/2289/2267 2366/2389/2366 +f 2366/2389/2366 2267/2289/2267 2367/2390/2367 +f 2267/2289/2267 2268/2290/2268 2367/2390/2367 +f 2367/2390/2367 2268/2290/2268 2368/2391/2368 +f 2268/2290/2268 2269/2291/2269 2368/2391/2368 +f 2368/2391/2368 2269/2291/2269 2369/2392/2369 +f 2269/2291/2269 2270/2292/2270 2369/2392/2369 +f 2369/2392/2369 2270/2292/2270 2370/2393/2370 +f 2270/2292/2270 2271/2293/2271 2370/2393/2370 +f 2370/2393/2370 2271/2293/2271 2371/2394/2371 +f 2271/2293/2271 2272/2294/2272 2371/2394/2371 +f 2371/2394/2371 2272/2294/2272 2372/2395/2372 +f 2272/2294/2272 2273/2295/2273 2372/2395/2372 +f 2372/2395/2372 2273/2295/2273 2373/2396/2373 +f 2273/2295/2273 2274/2296/2274 2373/2396/2373 +f 2373/2396/2373 2274/2296/2274 2374/2397/2374 +f 2274/2296/2274 2275/2297/2275 2374/2397/2374 +f 2374/2397/2374 2275/2297/2275 2375/2398/2375 +f 2275/2297/2275 2276/2298/2276 2375/2398/2375 +f 2375/2398/2375 2276/2298/2276 2376/2399/2376 +f 2276/2298/2276 2277/2299/2277 2376/2399/2376 +f 2376/2399/2376 2277/2299/2277 2377/2400/2377 +f 2277/2299/2277 2278/2300/2278 2377/2400/2377 +f 2377/2400/2377 2278/2300/2278 2378/2401/2378 +f 2278/2300/2278 2279/2301/2279 2378/2401/2378 +f 2378/2401/2378 2279/2301/2279 2379/2402/2379 +f 2279/2301/2279 2280/2302/2280 2379/2402/2379 +f 2379/2402/2379 2280/2302/2280 2380/2403/2380 +f 2280/2302/2280 2281/2303/2281 2380/2403/2380 +f 2380/2403/2380 2281/2303/2281 2381/2404/2381 +f 2281/2303/2281 2282/2304/2282 2381/2404/2381 +f 2381/2404/2381 2282/2304/2282 2382/2405/2382 +f 2282/2304/2282 2283/2305/2283 2382/2405/2382 +f 2382/2405/2382 2283/2305/2283 2383/2406/2383 +f 2283/2305/2283 2284/2306/2284 2383/2406/2383 +f 2383/2406/2383 2284/2306/2284 2384/2407/2384 +f 2284/2306/2284 2285/2307/2285 2384/2407/2384 +f 2384/2407/2384 2285/2307/2285 2385/2408/2385 +f 2285/2307/2285 2286/2308/2286 2385/2408/2385 +f 2385/2408/2385 2286/2308/2286 2386/2409/2386 +f 2286/2308/2286 2287/2309/2287 2386/2409/2386 +f 2386/2409/2386 2287/2309/2287 2387/2410/2387 +f 2287/2309/2287 2288/2310/2288 2387/2410/2387 +f 2387/2410/2387 2288/2310/2288 2388/2411/2388 +f 2288/2310/2288 2289/2311/2289 2388/2411/2388 +f 2388/2411/2388 2289/2311/2289 2389/2412/2389 +f 2289/2311/2289 2290/2312/2290 2389/2412/2389 +f 2389/2412/2389 2290/2312/2290 2390/2413/2390 +f 2290/2312/2290 2291/2313/2291 2390/2413/2390 +f 2390/2413/2390 2291/2313/2291 2391/2414/2391 +f 2291/2313/2291 2292/2314/2292 2391/2414/2391 +f 2391/2414/2391 2292/2314/2292 2392/2415/2392 +f 2292/2314/2292 2293/2315/2293 2392/2415/2392 +f 2392/2415/2392 2293/2315/2293 2393/2416/2393 +f 2293/2315/2293 2294/2316/2294 2393/2416/2393 +f 2393/2416/2393 2294/2316/2294 2394/2417/2394 +f 2294/2316/2294 2295/2317/2295 2394/2417/2394 +f 2394/2417/2394 2295/2317/2295 2395/2418/2395 +f 2295/2317/2295 2296/2318/2296 2395/2418/2395 +f 2395/2418/2395 2296/2318/2296 2396/2419/2396 +f 2296/2318/2296 2297/2319/2297 2396/2419/2396 +f 2396/2419/2396 2297/2319/2297 2397/2420/2397 +f 2297/2319/2297 2298/2320/2298 2397/2420/2397 +f 2397/2420/2397 2298/2320/2298 2398/2421/2398 +f 2298/2320/2298 2299/2321/2299 2398/2421/2398 +f 2398/2421/2398 2299/2321/2299 2399/2422/2399 +f 2299/2321/2299 2300/2322/2300 2399/2422/2399 +f 2399/2422/2399 2300/2322/2300 2400/2423/2400 +f 2300/2322/2300 2201/2323/2201 2400/2423/2400 +f 2400/2423/2400 2201/2323/2201 2301/2424/2301 +f 2301/2324/2301 2302/2325/2302 2401/2425/2401 +f 2401/2425/2401 2302/2325/2302 2402/2426/2402 +f 2302/2325/2302 2303/2326/2303 2402/2426/2402 +f 2402/2426/2402 2303/2326/2303 2403/2427/2403 +f 2303/2326/2303 2304/2327/2304 2403/2427/2403 +f 2403/2427/2403 2304/2327/2304 2404/2428/2404 +f 2304/2327/2304 2305/2328/2305 2404/2428/2404 +f 2404/2428/2404 2305/2328/2305 2405/2429/2405 +f 2305/2328/2305 2306/2329/2306 2405/2429/2405 +f 2405/2429/2405 2306/2329/2306 2406/2430/2406 +f 2306/2329/2306 2307/2330/2307 2406/2430/2406 +f 2406/2430/2406 2307/2330/2307 2407/2431/2407 +f 2307/2330/2307 2308/2331/2308 2407/2431/2407 +f 2407/2431/2407 2308/2331/2308 2408/2432/2408 +f 2308/2331/2308 2309/2332/2309 2408/2432/2408 +f 2408/2432/2408 2309/2332/2309 2409/2433/2409 +f 2309/2332/2309 2310/2333/2310 2409/2433/2409 +f 2409/2433/2409 2310/2333/2310 2410/2434/2410 +f 2310/2333/2310 2311/2334/2311 2410/2434/2410 +f 2410/2434/2410 2311/2334/2311 2411/2435/2411 +f 2311/2334/2311 2312/2335/2312 2411/2435/2411 +f 2411/2435/2411 2312/2335/2312 2412/2436/2412 +f 2312/2335/2312 2313/2336/2313 2412/2436/2412 +f 2412/2436/2412 2313/2336/2313 2413/2437/2413 +f 2313/2336/2313 2314/2337/2314 2413/2437/2413 +f 2413/2437/2413 2314/2337/2314 2414/2438/2414 +f 2314/2337/2314 2315/2338/2315 2414/2438/2414 +f 2414/2438/2414 2315/2338/2315 2415/2439/2415 +f 2315/2338/2315 2316/2339/2316 2415/2439/2415 +f 2415/2439/2415 2316/2339/2316 2416/2440/2416 +f 2316/2339/2316 2317/2340/2317 2416/2440/2416 +f 2416/2440/2416 2317/2340/2317 2417/2441/2417 +f 2317/2340/2317 2318/2341/2318 2417/2441/2417 +f 2417/2441/2417 2318/2341/2318 2418/2442/2418 +f 2318/2341/2318 2319/2342/2319 2418/2442/2418 +f 2418/2442/2418 2319/2342/2319 2419/2443/2419 +f 2319/2342/2319 2320/2343/2320 2419/2443/2419 +f 2419/2443/2419 2320/2343/2320 2420/2444/2420 +f 2320/2343/2320 2321/2344/2321 2420/2444/2420 +f 2420/2444/2420 2321/2344/2321 2421/2445/2421 +f 2321/2344/2321 2322/2345/2322 2421/2445/2421 +f 2421/2445/2421 2322/2345/2322 2422/2446/2422 +f 2322/2345/2322 2323/2346/2323 2422/2446/2422 +f 2422/2446/2422 2323/2346/2323 2423/2447/2423 +f 2323/2346/2323 2324/2347/2324 2423/2447/2423 +f 2423/2447/2423 2324/2347/2324 2424/2448/2424 +f 2324/2347/2324 2325/2348/2325 2424/2448/2424 +f 2424/2448/2424 2325/2348/2325 2425/2449/2425 +f 2325/2348/2325 2326/2349/2326 2425/2449/2425 +f 2425/2449/2425 2326/2349/2326 2426/2450/2426 +f 2326/2349/2326 2327/2350/2327 2426/2450/2426 +f 2426/2450/2426 2327/2350/2327 2427/2451/2427 +f 2327/2350/2327 2328/2351/2328 2427/2451/2427 +f 2427/2451/2427 2328/2351/2328 2428/2452/2428 +f 2328/2351/2328 2329/2352/2329 2428/2452/2428 +f 2428/2452/2428 2329/2352/2329 2429/2453/2429 +f 2329/2352/2329 2330/2353/2330 2429/2453/2429 +f 2429/2453/2429 2330/2353/2330 2430/2454/2430 +f 2330/2353/2330 2331/2354/2331 2430/2454/2430 +f 2430/2454/2430 2331/2354/2331 2431/2455/2431 +f 2331/2354/2331 2332/2355/2332 2431/2455/2431 +f 2431/2455/2431 2332/2355/2332 2432/2456/2432 +f 2332/2355/2332 2333/2356/2333 2432/2456/2432 +f 2432/2456/2432 2333/2356/2333 2433/2457/2433 +f 2333/2356/2333 2334/2357/2334 2433/2457/2433 +f 2433/2457/2433 2334/2357/2334 2434/2458/2434 +f 2334/2357/2334 2335/2358/2335 2434/2458/2434 +f 2434/2458/2434 2335/2358/2335 2435/2459/2435 +f 2335/2358/2335 2336/2359/2336 2435/2459/2435 +f 2435/2459/2435 2336/2359/2336 2436/2460/2436 +f 2336/2359/2336 2337/2360/2337 2436/2460/2436 +f 2436/2460/2436 2337/2360/2337 2437/2461/2437 +f 2337/2360/2337 2338/2361/2338 2437/2461/2437 +f 2437/2461/2437 2338/2361/2338 2438/2462/2438 +f 2338/2361/2338 2339/2362/2339 2438/2462/2438 +f 2438/2462/2438 2339/2362/2339 2439/2463/2439 +f 2339/2362/2339 2340/2363/2340 2439/2463/2439 +f 2439/2463/2439 2340/2363/2340 2440/2464/2440 +f 2340/2363/2340 2341/2364/2341 2440/2464/2440 +f 2440/2464/2440 2341/2364/2341 2441/2465/2441 +f 2341/2364/2341 2342/2365/2342 2441/2465/2441 +f 2441/2465/2441 2342/2365/2342 2442/2466/2442 +f 2342/2365/2342 2343/2366/2343 2442/2466/2442 +f 2442/2466/2442 2343/2366/2343 2443/2467/2443 +f 2343/2366/2343 2344/2367/2344 2443/2467/2443 +f 2443/2467/2443 2344/2367/2344 2444/2468/2444 +f 2344/2367/2344 2345/2368/2345 2444/2468/2444 +f 2444/2468/2444 2345/2368/2345 2445/2469/2445 +f 2345/2368/2345 2346/2369/2346 2445/2469/2445 +f 2445/2469/2445 2346/2369/2346 2446/2470/2446 +f 2346/2369/2346 2347/2370/2347 2446/2470/2446 +f 2446/2470/2446 2347/2370/2347 2447/2471/2447 +f 2347/2370/2347 2348/2371/2348 2447/2471/2447 +f 2447/2471/2447 2348/2371/2348 2448/2472/2448 +f 2348/2371/2348 2349/2372/2349 2448/2472/2448 +f 2448/2472/2448 2349/2372/2349 2449/2473/2449 +f 2349/2372/2349 2350/2373/2350 2449/2473/2449 +f 2449/2473/2449 2350/2373/2350 2450/2474/2450 +f 2350/2373/2350 2351/2374/2351 2450/2474/2450 +f 2450/2474/2450 2351/2374/2351 2451/2475/2451 +f 2351/2374/2351 2352/2375/2352 2451/2475/2451 +f 2451/2475/2451 2352/2375/2352 2452/2476/2452 +f 2352/2375/2352 2353/2376/2353 2452/2476/2452 +f 2452/2476/2452 2353/2376/2353 2453/2477/2453 +f 2353/2376/2353 2354/2377/2354 2453/2477/2453 +f 2453/2477/2453 2354/2377/2354 2454/2478/2454 +f 2354/2377/2354 2355/2378/2355 2454/2478/2454 +f 2454/2478/2454 2355/2378/2355 2455/2479/2455 +f 2355/2378/2355 2356/2379/2356 2455/2479/2455 +f 2455/2479/2455 2356/2379/2356 2456/2480/2456 +f 2356/2379/2356 2357/2380/2357 2456/2480/2456 +f 2456/2480/2456 2357/2380/2357 2457/2481/2457 +f 2357/2380/2357 2358/2381/2358 2457/2481/2457 +f 2457/2481/2457 2358/2381/2358 2458/2482/2458 +f 2358/2381/2358 2359/2382/2359 2458/2482/2458 +f 2458/2482/2458 2359/2382/2359 2459/2483/2459 +f 2359/2382/2359 2360/2383/2360 2459/2483/2459 +f 2459/2483/2459 2360/2383/2360 2460/2484/2460 +f 2360/2383/2360 2361/2384/2361 2460/2484/2460 +f 2460/2484/2460 2361/2384/2361 2461/2485/2461 +f 2361/2384/2361 2362/2385/2362 2461/2485/2461 +f 2461/2485/2461 2362/2385/2362 2462/2486/2462 +f 2362/2385/2362 2363/2386/2363 2462/2486/2462 +f 2462/2486/2462 2363/2386/2363 2463/2487/2463 +f 2363/2386/2363 2364/2387/2364 2463/2487/2463 +f 2463/2487/2463 2364/2387/2364 2464/2488/2464 +f 2364/2387/2364 2365/2388/2365 2464/2488/2464 +f 2464/2488/2464 2365/2388/2365 2465/2489/2465 +f 2365/2388/2365 2366/2389/2366 2465/2489/2465 +f 2465/2489/2465 2366/2389/2366 2466/2490/2466 +f 2366/2389/2366 2367/2390/2367 2466/2490/2466 +f 2466/2490/2466 2367/2390/2367 2467/2491/2467 +f 2367/2390/2367 2368/2391/2368 2467/2491/2467 +f 2467/2491/2467 2368/2391/2368 2468/2492/2468 +f 2368/2391/2368 2369/2392/2369 2468/2492/2468 +f 2468/2492/2468 2369/2392/2369 2469/2493/2469 +f 2369/2392/2369 2370/2393/2370 2469/2493/2469 +f 2469/2493/2469 2370/2393/2370 2470/2494/2470 +f 2370/2393/2370 2371/2394/2371 2470/2494/2470 +f 2470/2494/2470 2371/2394/2371 2471/2495/2471 +f 2371/2394/2371 2372/2395/2372 2471/2495/2471 +f 2471/2495/2471 2372/2395/2372 2472/2496/2472 +f 2372/2395/2372 2373/2396/2373 2472/2496/2472 +f 2472/2496/2472 2373/2396/2373 2473/2497/2473 +f 2373/2396/2373 2374/2397/2374 2473/2497/2473 +f 2473/2497/2473 2374/2397/2374 2474/2498/2474 +f 2374/2397/2374 2375/2398/2375 2474/2498/2474 +f 2474/2498/2474 2375/2398/2375 2475/2499/2475 +f 2375/2398/2375 2376/2399/2376 2475/2499/2475 +f 2475/2499/2475 2376/2399/2376 2476/2500/2476 +f 2376/2399/2376 2377/2400/2377 2476/2500/2476 +f 2476/2500/2476 2377/2400/2377 2477/2501/2477 +f 2377/2400/2377 2378/2401/2378 2477/2501/2477 +f 2477/2501/2477 2378/2401/2378 2478/2502/2478 +f 2378/2401/2378 2379/2402/2379 2478/2502/2478 +f 2478/2502/2478 2379/2402/2379 2479/2503/2479 +f 2379/2402/2379 2380/2403/2380 2479/2503/2479 +f 2479/2503/2479 2380/2403/2380 2480/2504/2480 +f 2380/2403/2380 2381/2404/2381 2480/2504/2480 +f 2480/2504/2480 2381/2404/2381 2481/2505/2481 +f 2381/2404/2381 2382/2405/2382 2481/2505/2481 +f 2481/2505/2481 2382/2405/2382 2482/2506/2482 +f 2382/2405/2382 2383/2406/2383 2482/2506/2482 +f 2482/2506/2482 2383/2406/2383 2483/2507/2483 +f 2383/2406/2383 2384/2407/2384 2483/2507/2483 +f 2483/2507/2483 2384/2407/2384 2484/2508/2484 +f 2384/2407/2384 2385/2408/2385 2484/2508/2484 +f 2484/2508/2484 2385/2408/2385 2485/2509/2485 +f 2385/2408/2385 2386/2409/2386 2485/2509/2485 +f 2485/2509/2485 2386/2409/2386 2486/2510/2486 +f 2386/2409/2386 2387/2410/2387 2486/2510/2486 +f 2486/2510/2486 2387/2410/2387 2487/2511/2487 +f 2387/2410/2387 2388/2411/2388 2487/2511/2487 +f 2487/2511/2487 2388/2411/2388 2488/2512/2488 +f 2388/2411/2388 2389/2412/2389 2488/2512/2488 +f 2488/2512/2488 2389/2412/2389 2489/2513/2489 +f 2389/2412/2389 2390/2413/2390 2489/2513/2489 +f 2489/2513/2489 2390/2413/2390 2490/2514/2490 +f 2390/2413/2390 2391/2414/2391 2490/2514/2490 +f 2490/2514/2490 2391/2414/2391 2491/2515/2491 +f 2391/2414/2391 2392/2415/2392 2491/2515/2491 +f 2491/2515/2491 2392/2415/2392 2492/2516/2492 +f 2392/2415/2392 2393/2416/2393 2492/2516/2492 +f 2492/2516/2492 2393/2416/2393 2493/2517/2493 +f 2393/2416/2393 2394/2417/2394 2493/2517/2493 +f 2493/2517/2493 2394/2417/2394 2494/2518/2494 +f 2394/2417/2394 2395/2418/2395 2494/2518/2494 +f 2494/2518/2494 2395/2418/2395 2495/2519/2495 +f 2395/2418/2395 2396/2419/2396 2495/2519/2495 +f 2495/2519/2495 2396/2419/2396 2496/2520/2496 +f 2396/2419/2396 2397/2420/2397 2496/2520/2496 +f 2496/2520/2496 2397/2420/2397 2497/2521/2497 +f 2397/2420/2397 2398/2421/2398 2497/2521/2497 +f 2497/2521/2497 2398/2421/2398 2498/2522/2498 +f 2398/2421/2398 2399/2422/2399 2498/2522/2498 +f 2498/2522/2498 2399/2422/2399 2499/2523/2499 +f 2399/2422/2399 2400/2423/2400 2499/2523/2499 +f 2499/2523/2499 2400/2423/2400 2500/2524/2500 +f 2400/2423/2400 2301/2424/2301 2500/2524/2500 +f 2500/2524/2500 2301/2424/2301 2401/2525/2401 +f 2401/2425/2401 2402/2426/2402 2501/2526/2501 +f 2501/2526/2501 2402/2426/2402 2502/2527/2502 +f 2402/2426/2402 2403/2427/2403 2502/2527/2502 +f 2502/2527/2502 2403/2427/2403 2503/2528/2503 +f 2403/2427/2403 2404/2428/2404 2503/2528/2503 +f 2503/2528/2503 2404/2428/2404 2504/2529/2504 +f 2404/2428/2404 2405/2429/2405 2504/2529/2504 +f 2504/2529/2504 2405/2429/2405 2505/2530/2505 +f 2405/2429/2405 2406/2430/2406 2505/2530/2505 +f 2505/2530/2505 2406/2430/2406 2506/2531/2506 +f 2406/2430/2406 2407/2431/2407 2506/2531/2506 +f 2506/2531/2506 2407/2431/2407 2507/2532/2507 +f 2407/2431/2407 2408/2432/2408 2507/2532/2507 +f 2507/2532/2507 2408/2432/2408 2508/2533/2508 +f 2408/2432/2408 2409/2433/2409 2508/2533/2508 +f 2508/2533/2508 2409/2433/2409 2509/2534/2509 +f 2409/2433/2409 2410/2434/2410 2509/2534/2509 +f 2509/2534/2509 2410/2434/2410 2510/2535/2510 +f 2410/2434/2410 2411/2435/2411 2510/2535/2510 +f 2510/2535/2510 2411/2435/2411 2511/2536/2511 +f 2411/2435/2411 2412/2436/2412 2511/2536/2511 +f 2511/2536/2511 2412/2436/2412 2512/2537/2512 +f 2412/2436/2412 2413/2437/2413 2512/2537/2512 +f 2512/2537/2512 2413/2437/2413 2513/2538/2513 +f 2413/2437/2413 2414/2438/2414 2513/2538/2513 +f 2513/2538/2513 2414/2438/2414 2514/2539/2514 +f 2414/2438/2414 2415/2439/2415 2514/2539/2514 +f 2514/2539/2514 2415/2439/2415 2515/2540/2515 +f 2415/2439/2415 2416/2440/2416 2515/2540/2515 +f 2515/2540/2515 2416/2440/2416 2516/2541/2516 +f 2416/2440/2416 2417/2441/2417 2516/2541/2516 +f 2516/2541/2516 2417/2441/2417 2517/2542/2517 +f 2417/2441/2417 2418/2442/2418 2517/2542/2517 +f 2517/2542/2517 2418/2442/2418 2518/2543/2518 +f 2418/2442/2418 2419/2443/2419 2518/2543/2518 +f 2518/2543/2518 2419/2443/2419 2519/2544/2519 +f 2419/2443/2419 2420/2444/2420 2519/2544/2519 +f 2519/2544/2519 2420/2444/2420 2520/2545/2520 +f 2420/2444/2420 2421/2445/2421 2520/2545/2520 +f 2520/2545/2520 2421/2445/2421 2521/2546/2521 +f 2421/2445/2421 2422/2446/2422 2521/2546/2521 +f 2521/2546/2521 2422/2446/2422 2522/2547/2522 +f 2422/2446/2422 2423/2447/2423 2522/2547/2522 +f 2522/2547/2522 2423/2447/2423 2523/2548/2523 +f 2423/2447/2423 2424/2448/2424 2523/2548/2523 +f 2523/2548/2523 2424/2448/2424 2524/2549/2524 +f 2424/2448/2424 2425/2449/2425 2524/2549/2524 +f 2524/2549/2524 2425/2449/2425 2525/2550/2525 +f 2425/2449/2425 2426/2450/2426 2525/2550/2525 +f 2525/2550/2525 2426/2450/2426 2526/2551/2526 +f 2426/2450/2426 2427/2451/2427 2526/2551/2526 +f 2526/2551/2526 2427/2451/2427 2527/2552/2527 +f 2427/2451/2427 2428/2452/2428 2527/2552/2527 +f 2527/2552/2527 2428/2452/2428 2528/2553/2528 +f 2428/2452/2428 2429/2453/2429 2528/2553/2528 +f 2528/2553/2528 2429/2453/2429 2529/2554/2529 +f 2429/2453/2429 2430/2454/2430 2529/2554/2529 +f 2529/2554/2529 2430/2454/2430 2530/2555/2530 +f 2430/2454/2430 2431/2455/2431 2530/2555/2530 +f 2530/2555/2530 2431/2455/2431 2531/2556/2531 +f 2431/2455/2431 2432/2456/2432 2531/2556/2531 +f 2531/2556/2531 2432/2456/2432 2532/2557/2532 +f 2432/2456/2432 2433/2457/2433 2532/2557/2532 +f 2532/2557/2532 2433/2457/2433 2533/2558/2533 +f 2433/2457/2433 2434/2458/2434 2533/2558/2533 +f 2533/2558/2533 2434/2458/2434 2534/2559/2534 +f 2434/2458/2434 2435/2459/2435 2534/2559/2534 +f 2534/2559/2534 2435/2459/2435 2535/2560/2535 +f 2435/2459/2435 2436/2460/2436 2535/2560/2535 +f 2535/2560/2535 2436/2460/2436 2536/2561/2536 +f 2436/2460/2436 2437/2461/2437 2536/2561/2536 +f 2536/2561/2536 2437/2461/2437 2537/2562/2537 +f 2437/2461/2437 2438/2462/2438 2537/2562/2537 +f 2537/2562/2537 2438/2462/2438 2538/2563/2538 +f 2438/2462/2438 2439/2463/2439 2538/2563/2538 +f 2538/2563/2538 2439/2463/2439 2539/2564/2539 +f 2439/2463/2439 2440/2464/2440 2539/2564/2539 +f 2539/2564/2539 2440/2464/2440 2540/2565/2540 +f 2440/2464/2440 2441/2465/2441 2540/2565/2540 +f 2540/2565/2540 2441/2465/2441 2541/2566/2541 +f 2441/2465/2441 2442/2466/2442 2541/2566/2541 +f 2541/2566/2541 2442/2466/2442 2542/2567/2542 +f 2442/2466/2442 2443/2467/2443 2542/2567/2542 +f 2542/2567/2542 2443/2467/2443 2543/2568/2543 +f 2443/2467/2443 2444/2468/2444 2543/2568/2543 +f 2543/2568/2543 2444/2468/2444 2544/2569/2544 +f 2444/2468/2444 2445/2469/2445 2544/2569/2544 +f 2544/2569/2544 2445/2469/2445 2545/2570/2545 +f 2445/2469/2445 2446/2470/2446 2545/2570/2545 +f 2545/2570/2545 2446/2470/2446 2546/2571/2546 +f 2446/2470/2446 2447/2471/2447 2546/2571/2546 +f 2546/2571/2546 2447/2471/2447 2547/2572/2547 +f 2447/2471/2447 2448/2472/2448 2547/2572/2547 +f 2547/2572/2547 2448/2472/2448 2548/2573/2548 +f 2448/2472/2448 2449/2473/2449 2548/2573/2548 +f 2548/2573/2548 2449/2473/2449 2549/2574/2549 +f 2449/2473/2449 2450/2474/2450 2549/2574/2549 +f 2549/2574/2549 2450/2474/2450 2550/2575/2550 +f 2450/2474/2450 2451/2475/2451 2550/2575/2550 +f 2550/2575/2550 2451/2475/2451 2551/2576/2551 +f 2451/2475/2451 2452/2476/2452 2551/2576/2551 +f 2551/2576/2551 2452/2476/2452 2552/2577/2552 +f 2452/2476/2452 2453/2477/2453 2552/2577/2552 +f 2552/2577/2552 2453/2477/2453 2553/2578/2553 +f 2453/2477/2453 2454/2478/2454 2553/2578/2553 +f 2553/2578/2553 2454/2478/2454 2554/2579/2554 +f 2454/2478/2454 2455/2479/2455 2554/2579/2554 +f 2554/2579/2554 2455/2479/2455 2555/2580/2555 +f 2455/2479/2455 2456/2480/2456 2555/2580/2555 +f 2555/2580/2555 2456/2480/2456 2556/2581/2556 +f 2456/2480/2456 2457/2481/2457 2556/2581/2556 +f 2556/2581/2556 2457/2481/2457 2557/2582/2557 +f 2457/2481/2457 2458/2482/2458 2557/2582/2557 +f 2557/2582/2557 2458/2482/2458 2558/2583/2558 +f 2458/2482/2458 2459/2483/2459 2558/2583/2558 +f 2558/2583/2558 2459/2483/2459 2559/2584/2559 +f 2459/2483/2459 2460/2484/2460 2559/2584/2559 +f 2559/2584/2559 2460/2484/2460 2560/2585/2560 +f 2460/2484/2460 2461/2485/2461 2560/2585/2560 +f 2560/2585/2560 2461/2485/2461 2561/2586/2561 +f 2461/2485/2461 2462/2486/2462 2561/2586/2561 +f 2561/2586/2561 2462/2486/2462 2562/2587/2562 +f 2462/2486/2462 2463/2487/2463 2562/2587/2562 +f 2562/2587/2562 2463/2487/2463 2563/2588/2563 +f 2463/2487/2463 2464/2488/2464 2563/2588/2563 +f 2563/2588/2563 2464/2488/2464 2564/2589/2564 +f 2464/2488/2464 2465/2489/2465 2564/2589/2564 +f 2564/2589/2564 2465/2489/2465 2565/2590/2565 +f 2465/2489/2465 2466/2490/2466 2565/2590/2565 +f 2565/2590/2565 2466/2490/2466 2566/2591/2566 +f 2466/2490/2466 2467/2491/2467 2566/2591/2566 +f 2566/2591/2566 2467/2491/2467 2567/2592/2567 +f 2467/2491/2467 2468/2492/2468 2567/2592/2567 +f 2567/2592/2567 2468/2492/2468 2568/2593/2568 +f 2468/2492/2468 2469/2493/2469 2568/2593/2568 +f 2568/2593/2568 2469/2493/2469 2569/2594/2569 +f 2469/2493/2469 2470/2494/2470 2569/2594/2569 +f 2569/2594/2569 2470/2494/2470 2570/2595/2570 +f 2470/2494/2470 2471/2495/2471 2570/2595/2570 +f 2570/2595/2570 2471/2495/2471 2571/2596/2571 +f 2471/2495/2471 2472/2496/2472 2571/2596/2571 +f 2571/2596/2571 2472/2496/2472 2572/2597/2572 +f 2472/2496/2472 2473/2497/2473 2572/2597/2572 +f 2572/2597/2572 2473/2497/2473 2573/2598/2573 +f 2473/2497/2473 2474/2498/2474 2573/2598/2573 +f 2573/2598/2573 2474/2498/2474 2574/2599/2574 +f 2474/2498/2474 2475/2499/2475 2574/2599/2574 +f 2574/2599/2574 2475/2499/2475 2575/2600/2575 +f 2475/2499/2475 2476/2500/2476 2575/2600/2575 +f 2575/2600/2575 2476/2500/2476 2576/2601/2576 +f 2476/2500/2476 2477/2501/2477 2576/2601/2576 +f 2576/2601/2576 2477/2501/2477 2577/2602/2577 +f 2477/2501/2477 2478/2502/2478 2577/2602/2577 +f 2577/2602/2577 2478/2502/2478 2578/2603/2578 +f 2478/2502/2478 2479/2503/2479 2578/2603/2578 +f 2578/2603/2578 2479/2503/2479 2579/2604/2579 +f 2479/2503/2479 2480/2504/2480 2579/2604/2579 +f 2579/2604/2579 2480/2504/2480 2580/2605/2580 +f 2480/2504/2480 2481/2505/2481 2580/2605/2580 +f 2580/2605/2580 2481/2505/2481 2581/2606/2581 +f 2481/2505/2481 2482/2506/2482 2581/2606/2581 +f 2581/2606/2581 2482/2506/2482 2582/2607/2582 +f 2482/2506/2482 2483/2507/2483 2582/2607/2582 +f 2582/2607/2582 2483/2507/2483 2583/2608/2583 +f 2483/2507/2483 2484/2508/2484 2583/2608/2583 +f 2583/2608/2583 2484/2508/2484 2584/2609/2584 +f 2484/2508/2484 2485/2509/2485 2584/2609/2584 +f 2584/2609/2584 2485/2509/2485 2585/2610/2585 +f 2485/2509/2485 2486/2510/2486 2585/2610/2585 +f 2585/2610/2585 2486/2510/2486 2586/2611/2586 +f 2486/2510/2486 2487/2511/2487 2586/2611/2586 +f 2586/2611/2586 2487/2511/2487 2587/2612/2587 +f 2487/2511/2487 2488/2512/2488 2587/2612/2587 +f 2587/2612/2587 2488/2512/2488 2588/2613/2588 +f 2488/2512/2488 2489/2513/2489 2588/2613/2588 +f 2588/2613/2588 2489/2513/2489 2589/2614/2589 +f 2489/2513/2489 2490/2514/2490 2589/2614/2589 +f 2589/2614/2589 2490/2514/2490 2590/2615/2590 +f 2490/2514/2490 2491/2515/2491 2590/2615/2590 +f 2590/2615/2590 2491/2515/2491 2591/2616/2591 +f 2491/2515/2491 2492/2516/2492 2591/2616/2591 +f 2591/2616/2591 2492/2516/2492 2592/2617/2592 +f 2492/2516/2492 2493/2517/2493 2592/2617/2592 +f 2592/2617/2592 2493/2517/2493 2593/2618/2593 +f 2493/2517/2493 2494/2518/2494 2593/2618/2593 +f 2593/2618/2593 2494/2518/2494 2594/2619/2594 +f 2494/2518/2494 2495/2519/2495 2594/2619/2594 +f 2594/2619/2594 2495/2519/2495 2595/2620/2595 +f 2495/2519/2495 2496/2520/2496 2595/2620/2595 +f 2595/2620/2595 2496/2520/2496 2596/2621/2596 +f 2496/2520/2496 2497/2521/2497 2596/2621/2596 +f 2596/2621/2596 2497/2521/2497 2597/2622/2597 +f 2497/2521/2497 2498/2522/2498 2597/2622/2597 +f 2597/2622/2597 2498/2522/2498 2598/2623/2598 +f 2498/2522/2498 2499/2523/2499 2598/2623/2598 +f 2598/2623/2598 2499/2523/2499 2599/2624/2599 +f 2499/2523/2499 2500/2524/2500 2599/2624/2599 +f 2599/2624/2599 2500/2524/2500 2600/2625/2600 +f 2500/2524/2500 2401/2525/2401 2600/2625/2600 +f 2600/2625/2600 2401/2525/2401 2501/2626/2501 +f 2501/2526/2501 2502/2527/2502 2601/2627/2601 +f 2601/2627/2601 2502/2527/2502 2602/2628/2602 +f 2502/2527/2502 2503/2528/2503 2602/2628/2602 +f 2602/2628/2602 2503/2528/2503 2603/2629/2603 +f 2503/2528/2503 2504/2529/2504 2603/2629/2603 +f 2603/2629/2603 2504/2529/2504 2604/2630/2604 +f 2504/2529/2504 2505/2530/2505 2604/2630/2604 +f 2604/2630/2604 2505/2530/2505 2605/2631/2605 +f 2505/2530/2505 2506/2531/2506 2605/2631/2605 +f 2605/2631/2605 2506/2531/2506 2606/2632/2606 +f 2506/2531/2506 2507/2532/2507 2606/2632/2606 +f 2606/2632/2606 2507/2532/2507 2607/2633/2607 +f 2507/2532/2507 2508/2533/2508 2607/2633/2607 +f 2607/2633/2607 2508/2533/2508 2608/2634/2608 +f 2508/2533/2508 2509/2534/2509 2608/2634/2608 +f 2608/2634/2608 2509/2534/2509 2609/2635/2609 +f 2509/2534/2509 2510/2535/2510 2609/2635/2609 +f 2609/2635/2609 2510/2535/2510 2610/2636/2610 +f 2510/2535/2510 2511/2536/2511 2610/2636/2610 +f 2610/2636/2610 2511/2536/2511 2611/2637/2611 +f 2511/2536/2511 2512/2537/2512 2611/2637/2611 +f 2611/2637/2611 2512/2537/2512 2612/2638/2612 +f 2512/2537/2512 2513/2538/2513 2612/2638/2612 +f 2612/2638/2612 2513/2538/2513 2613/2639/2613 +f 2513/2538/2513 2514/2539/2514 2613/2639/2613 +f 2613/2639/2613 2514/2539/2514 2614/2640/2614 +f 2514/2539/2514 2515/2540/2515 2614/2640/2614 +f 2614/2640/2614 2515/2540/2515 2615/2641/2615 +f 2515/2540/2515 2516/2541/2516 2615/2641/2615 +f 2615/2641/2615 2516/2541/2516 2616/2642/2616 +f 2516/2541/2516 2517/2542/2517 2616/2642/2616 +f 2616/2642/2616 2517/2542/2517 2617/2643/2617 +f 2517/2542/2517 2518/2543/2518 2617/2643/2617 +f 2617/2643/2617 2518/2543/2518 2618/2644/2618 +f 2518/2543/2518 2519/2544/2519 2618/2644/2618 +f 2618/2644/2618 2519/2544/2519 2619/2645/2619 +f 2519/2544/2519 2520/2545/2520 2619/2645/2619 +f 2619/2645/2619 2520/2545/2520 2620/2646/2620 +f 2520/2545/2520 2521/2546/2521 2620/2646/2620 +f 2620/2646/2620 2521/2546/2521 2621/2647/2621 +f 2521/2546/2521 2522/2547/2522 2621/2647/2621 +f 2621/2647/2621 2522/2547/2522 2622/2648/2622 +f 2522/2547/2522 2523/2548/2523 2622/2648/2622 +f 2622/2648/2622 2523/2548/2523 2623/2649/2623 +f 2523/2548/2523 2524/2549/2524 2623/2649/2623 +f 2623/2649/2623 2524/2549/2524 2624/2650/2624 +f 2524/2549/2524 2525/2550/2525 2624/2650/2624 +f 2624/2650/2624 2525/2550/2525 2625/2651/2625 +f 2525/2550/2525 2526/2551/2526 2625/2651/2625 +f 2625/2651/2625 2526/2551/2526 2626/2652/2626 +f 2526/2551/2526 2527/2552/2527 2626/2652/2626 +f 2626/2652/2626 2527/2552/2527 2627/2653/2627 +f 2527/2552/2527 2528/2553/2528 2627/2653/2627 +f 2627/2653/2627 2528/2553/2528 2628/2654/2628 +f 2528/2553/2528 2529/2554/2529 2628/2654/2628 +f 2628/2654/2628 2529/2554/2529 2629/2655/2629 +f 2529/2554/2529 2530/2555/2530 2629/2655/2629 +f 2629/2655/2629 2530/2555/2530 2630/2656/2630 +f 2530/2555/2530 2531/2556/2531 2630/2656/2630 +f 2630/2656/2630 2531/2556/2531 2631/2657/2631 +f 2531/2556/2531 2532/2557/2532 2631/2657/2631 +f 2631/2657/2631 2532/2557/2532 2632/2658/2632 +f 2532/2557/2532 2533/2558/2533 2632/2658/2632 +f 2632/2658/2632 2533/2558/2533 2633/2659/2633 +f 2533/2558/2533 2534/2559/2534 2633/2659/2633 +f 2633/2659/2633 2534/2559/2534 2634/2660/2634 +f 2534/2559/2534 2535/2560/2535 2634/2660/2634 +f 2634/2660/2634 2535/2560/2535 2635/2661/2635 +f 2535/2560/2535 2536/2561/2536 2635/2661/2635 +f 2635/2661/2635 2536/2561/2536 2636/2662/2636 +f 2536/2561/2536 2537/2562/2537 2636/2662/2636 +f 2636/2662/2636 2537/2562/2537 2637/2663/2637 +f 2537/2562/2537 2538/2563/2538 2637/2663/2637 +f 2637/2663/2637 2538/2563/2538 2638/2664/2638 +f 2538/2563/2538 2539/2564/2539 2638/2664/2638 +f 2638/2664/2638 2539/2564/2539 2639/2665/2639 +f 2539/2564/2539 2540/2565/2540 2639/2665/2639 +f 2639/2665/2639 2540/2565/2540 2640/2666/2640 +f 2540/2565/2540 2541/2566/2541 2640/2666/2640 +f 2640/2666/2640 2541/2566/2541 2641/2667/2641 +f 2541/2566/2541 2542/2567/2542 2641/2667/2641 +f 2641/2667/2641 2542/2567/2542 2642/2668/2642 +f 2542/2567/2542 2543/2568/2543 2642/2668/2642 +f 2642/2668/2642 2543/2568/2543 2643/2669/2643 +f 2543/2568/2543 2544/2569/2544 2643/2669/2643 +f 2643/2669/2643 2544/2569/2544 2644/2670/2644 +f 2544/2569/2544 2545/2570/2545 2644/2670/2644 +f 2644/2670/2644 2545/2570/2545 2645/2671/2645 +f 2545/2570/2545 2546/2571/2546 2645/2671/2645 +f 2645/2671/2645 2546/2571/2546 2646/2672/2646 +f 2546/2571/2546 2547/2572/2547 2646/2672/2646 +f 2646/2672/2646 2547/2572/2547 2647/2673/2647 +f 2547/2572/2547 2548/2573/2548 2647/2673/2647 +f 2647/2673/2647 2548/2573/2548 2648/2674/2648 +f 2548/2573/2548 2549/2574/2549 2648/2674/2648 +f 2648/2674/2648 2549/2574/2549 2649/2675/2649 +f 2549/2574/2549 2550/2575/2550 2649/2675/2649 +f 2649/2675/2649 2550/2575/2550 2650/2676/2650 +f 2550/2575/2550 2551/2576/2551 2650/2676/2650 +f 2650/2676/2650 2551/2576/2551 2651/2677/2651 +f 2551/2576/2551 2552/2577/2552 2651/2677/2651 +f 2651/2677/2651 2552/2577/2552 2652/2678/2652 +f 2552/2577/2552 2553/2578/2553 2652/2678/2652 +f 2652/2678/2652 2553/2578/2553 2653/2679/2653 +f 2553/2578/2553 2554/2579/2554 2653/2679/2653 +f 2653/2679/2653 2554/2579/2554 2654/2680/2654 +f 2554/2579/2554 2555/2580/2555 2654/2680/2654 +f 2654/2680/2654 2555/2580/2555 2655/2681/2655 +f 2555/2580/2555 2556/2581/2556 2655/2681/2655 +f 2655/2681/2655 2556/2581/2556 2656/2682/2656 +f 2556/2581/2556 2557/2582/2557 2656/2682/2656 +f 2656/2682/2656 2557/2582/2557 2657/2683/2657 +f 2557/2582/2557 2558/2583/2558 2657/2683/2657 +f 2657/2683/2657 2558/2583/2558 2658/2684/2658 +f 2558/2583/2558 2559/2584/2559 2658/2684/2658 +f 2658/2684/2658 2559/2584/2559 2659/2685/2659 +f 2559/2584/2559 2560/2585/2560 2659/2685/2659 +f 2659/2685/2659 2560/2585/2560 2660/2686/2660 +f 2560/2585/2560 2561/2586/2561 2660/2686/2660 +f 2660/2686/2660 2561/2586/2561 2661/2687/2661 +f 2561/2586/2561 2562/2587/2562 2661/2687/2661 +f 2661/2687/2661 2562/2587/2562 2662/2688/2662 +f 2562/2587/2562 2563/2588/2563 2662/2688/2662 +f 2662/2688/2662 2563/2588/2563 2663/2689/2663 +f 2563/2588/2563 2564/2589/2564 2663/2689/2663 +f 2663/2689/2663 2564/2589/2564 2664/2690/2664 +f 2564/2589/2564 2565/2590/2565 2664/2690/2664 +f 2664/2690/2664 2565/2590/2565 2665/2691/2665 +f 2565/2590/2565 2566/2591/2566 2665/2691/2665 +f 2665/2691/2665 2566/2591/2566 2666/2692/2666 +f 2566/2591/2566 2567/2592/2567 2666/2692/2666 +f 2666/2692/2666 2567/2592/2567 2667/2693/2667 +f 2567/2592/2567 2568/2593/2568 2667/2693/2667 +f 2667/2693/2667 2568/2593/2568 2668/2694/2668 +f 2568/2593/2568 2569/2594/2569 2668/2694/2668 +f 2668/2694/2668 2569/2594/2569 2669/2695/2669 +f 2569/2594/2569 2570/2595/2570 2669/2695/2669 +f 2669/2695/2669 2570/2595/2570 2670/2696/2670 +f 2570/2595/2570 2571/2596/2571 2670/2696/2670 +f 2670/2696/2670 2571/2596/2571 2671/2697/2671 +f 2571/2596/2571 2572/2597/2572 2671/2697/2671 +f 2671/2697/2671 2572/2597/2572 2672/2698/2672 +f 2572/2597/2572 2573/2598/2573 2672/2698/2672 +f 2672/2698/2672 2573/2598/2573 2673/2699/2673 +f 2573/2598/2573 2574/2599/2574 2673/2699/2673 +f 2673/2699/2673 2574/2599/2574 2674/2700/2674 +f 2574/2599/2574 2575/2600/2575 2674/2700/2674 +f 2674/2700/2674 2575/2600/2575 2675/2701/2675 +f 2575/2600/2575 2576/2601/2576 2675/2701/2675 +f 2675/2701/2675 2576/2601/2576 2676/2702/2676 +f 2576/2601/2576 2577/2602/2577 2676/2702/2676 +f 2676/2702/2676 2577/2602/2577 2677/2703/2677 +f 2577/2602/2577 2578/2603/2578 2677/2703/2677 +f 2677/2703/2677 2578/2603/2578 2678/2704/2678 +f 2578/2603/2578 2579/2604/2579 2678/2704/2678 +f 2678/2704/2678 2579/2604/2579 2679/2705/2679 +f 2579/2604/2579 2580/2605/2580 2679/2705/2679 +f 2679/2705/2679 2580/2605/2580 2680/2706/2680 +f 2580/2605/2580 2581/2606/2581 2680/2706/2680 +f 2680/2706/2680 2581/2606/2581 2681/2707/2681 +f 2581/2606/2581 2582/2607/2582 2681/2707/2681 +f 2681/2707/2681 2582/2607/2582 2682/2708/2682 +f 2582/2607/2582 2583/2608/2583 2682/2708/2682 +f 2682/2708/2682 2583/2608/2583 2683/2709/2683 +f 2583/2608/2583 2584/2609/2584 2683/2709/2683 +f 2683/2709/2683 2584/2609/2584 2684/2710/2684 +f 2584/2609/2584 2585/2610/2585 2684/2710/2684 +f 2684/2710/2684 2585/2610/2585 2685/2711/2685 +f 2585/2610/2585 2586/2611/2586 2685/2711/2685 +f 2685/2711/2685 2586/2611/2586 2686/2712/2686 +f 2586/2611/2586 2587/2612/2587 2686/2712/2686 +f 2686/2712/2686 2587/2612/2587 2687/2713/2687 +f 2587/2612/2587 2588/2613/2588 2687/2713/2687 +f 2687/2713/2687 2588/2613/2588 2688/2714/2688 +f 2588/2613/2588 2589/2614/2589 2688/2714/2688 +f 2688/2714/2688 2589/2614/2589 2689/2715/2689 +f 2589/2614/2589 2590/2615/2590 2689/2715/2689 +f 2689/2715/2689 2590/2615/2590 2690/2716/2690 +f 2590/2615/2590 2591/2616/2591 2690/2716/2690 +f 2690/2716/2690 2591/2616/2591 2691/2717/2691 +f 2591/2616/2591 2592/2617/2592 2691/2717/2691 +f 2691/2717/2691 2592/2617/2592 2692/2718/2692 +f 2592/2617/2592 2593/2618/2593 2692/2718/2692 +f 2692/2718/2692 2593/2618/2593 2693/2719/2693 +f 2593/2618/2593 2594/2619/2594 2693/2719/2693 +f 2693/2719/2693 2594/2619/2594 2694/2720/2694 +f 2594/2619/2594 2595/2620/2595 2694/2720/2694 +f 2694/2720/2694 2595/2620/2595 2695/2721/2695 +f 2595/2620/2595 2596/2621/2596 2695/2721/2695 +f 2695/2721/2695 2596/2621/2596 2696/2722/2696 +f 2596/2621/2596 2597/2622/2597 2696/2722/2696 +f 2696/2722/2696 2597/2622/2597 2697/2723/2697 +f 2597/2622/2597 2598/2623/2598 2697/2723/2697 +f 2697/2723/2697 2598/2623/2598 2698/2724/2698 +f 2598/2623/2598 2599/2624/2599 2698/2724/2698 +f 2698/2724/2698 2599/2624/2599 2699/2725/2699 +f 2599/2624/2599 2600/2625/2600 2699/2725/2699 +f 2699/2725/2699 2600/2625/2600 2700/2726/2700 +f 2600/2625/2600 2501/2626/2501 2700/2726/2700 +f 2700/2726/2700 2501/2626/2501 2601/2727/2601 +f 2601/2627/2601 2602/2628/2602 2701/2728/2701 +f 2701/2728/2701 2602/2628/2602 2702/2729/2702 +f 2602/2628/2602 2603/2629/2603 2702/2729/2702 +f 2702/2729/2702 2603/2629/2603 2703/2730/2703 +f 2603/2629/2603 2604/2630/2604 2703/2730/2703 +f 2703/2730/2703 2604/2630/2604 2704/2731/2704 +f 2604/2630/2604 2605/2631/2605 2704/2731/2704 +f 2704/2731/2704 2605/2631/2605 2705/2732/2705 +f 2605/2631/2605 2606/2632/2606 2705/2732/2705 +f 2705/2732/2705 2606/2632/2606 2706/2733/2706 +f 2606/2632/2606 2607/2633/2607 2706/2733/2706 +f 2706/2733/2706 2607/2633/2607 2707/2734/2707 +f 2607/2633/2607 2608/2634/2608 2707/2734/2707 +f 2707/2734/2707 2608/2634/2608 2708/2735/2708 +f 2608/2634/2608 2609/2635/2609 2708/2735/2708 +f 2708/2735/2708 2609/2635/2609 2709/2736/2709 +f 2609/2635/2609 2610/2636/2610 2709/2736/2709 +f 2709/2736/2709 2610/2636/2610 2710/2737/2710 +f 2610/2636/2610 2611/2637/2611 2710/2737/2710 +f 2710/2737/2710 2611/2637/2611 2711/2738/2711 +f 2611/2637/2611 2612/2638/2612 2711/2738/2711 +f 2711/2738/2711 2612/2638/2612 2712/2739/2712 +f 2612/2638/2612 2613/2639/2613 2712/2739/2712 +f 2712/2739/2712 2613/2639/2613 2713/2740/2713 +f 2613/2639/2613 2614/2640/2614 2713/2740/2713 +f 2713/2740/2713 2614/2640/2614 2714/2741/2714 +f 2614/2640/2614 2615/2641/2615 2714/2741/2714 +f 2714/2741/2714 2615/2641/2615 2715/2742/2715 +f 2615/2641/2615 2616/2642/2616 2715/2742/2715 +f 2715/2742/2715 2616/2642/2616 2716/2743/2716 +f 2616/2642/2616 2617/2643/2617 2716/2743/2716 +f 2716/2743/2716 2617/2643/2617 2717/2744/2717 +f 2617/2643/2617 2618/2644/2618 2717/2744/2717 +f 2717/2744/2717 2618/2644/2618 2718/2745/2718 +f 2618/2644/2618 2619/2645/2619 2718/2745/2718 +f 2718/2745/2718 2619/2645/2619 2719/2746/2719 +f 2619/2645/2619 2620/2646/2620 2719/2746/2719 +f 2719/2746/2719 2620/2646/2620 2720/2747/2720 +f 2620/2646/2620 2621/2647/2621 2720/2747/2720 +f 2720/2747/2720 2621/2647/2621 2721/2748/2721 +f 2621/2647/2621 2622/2648/2622 2721/2748/2721 +f 2721/2748/2721 2622/2648/2622 2722/2749/2722 +f 2622/2648/2622 2623/2649/2623 2722/2749/2722 +f 2722/2749/2722 2623/2649/2623 2723/2750/2723 +f 2623/2649/2623 2624/2650/2624 2723/2750/2723 +f 2723/2750/2723 2624/2650/2624 2724/2751/2724 +f 2624/2650/2624 2625/2651/2625 2724/2751/2724 +f 2724/2751/2724 2625/2651/2625 2725/2752/2725 +f 2625/2651/2625 2626/2652/2626 2725/2752/2725 +f 2725/2752/2725 2626/2652/2626 2726/2753/2726 +f 2626/2652/2626 2627/2653/2627 2726/2753/2726 +f 2726/2753/2726 2627/2653/2627 2727/2754/2727 +f 2627/2653/2627 2628/2654/2628 2727/2754/2727 +f 2727/2754/2727 2628/2654/2628 2728/2755/2728 +f 2628/2654/2628 2629/2655/2629 2728/2755/2728 +f 2728/2755/2728 2629/2655/2629 2729/2756/2729 +f 2629/2655/2629 2630/2656/2630 2729/2756/2729 +f 2729/2756/2729 2630/2656/2630 2730/2757/2730 +f 2630/2656/2630 2631/2657/2631 2730/2757/2730 +f 2730/2757/2730 2631/2657/2631 2731/2758/2731 +f 2631/2657/2631 2632/2658/2632 2731/2758/2731 +f 2731/2758/2731 2632/2658/2632 2732/2759/2732 +f 2632/2658/2632 2633/2659/2633 2732/2759/2732 +f 2732/2759/2732 2633/2659/2633 2733/2760/2733 +f 2633/2659/2633 2634/2660/2634 2733/2760/2733 +f 2733/2760/2733 2634/2660/2634 2734/2761/2734 +f 2634/2660/2634 2635/2661/2635 2734/2761/2734 +f 2734/2761/2734 2635/2661/2635 2735/2762/2735 +f 2635/2661/2635 2636/2662/2636 2735/2762/2735 +f 2735/2762/2735 2636/2662/2636 2736/2763/2736 +f 2636/2662/2636 2637/2663/2637 2736/2763/2736 +f 2736/2763/2736 2637/2663/2637 2737/2764/2737 +f 2637/2663/2637 2638/2664/2638 2737/2764/2737 +f 2737/2764/2737 2638/2664/2638 2738/2765/2738 +f 2638/2664/2638 2639/2665/2639 2738/2765/2738 +f 2738/2765/2738 2639/2665/2639 2739/2766/2739 +f 2639/2665/2639 2640/2666/2640 2739/2766/2739 +f 2739/2766/2739 2640/2666/2640 2740/2767/2740 +f 2640/2666/2640 2641/2667/2641 2740/2767/2740 +f 2740/2767/2740 2641/2667/2641 2741/2768/2741 +f 2641/2667/2641 2642/2668/2642 2741/2768/2741 +f 2741/2768/2741 2642/2668/2642 2742/2769/2742 +f 2642/2668/2642 2643/2669/2643 2742/2769/2742 +f 2742/2769/2742 2643/2669/2643 2743/2770/2743 +f 2643/2669/2643 2644/2670/2644 2743/2770/2743 +f 2743/2770/2743 2644/2670/2644 2744/2771/2744 +f 2644/2670/2644 2645/2671/2645 2744/2771/2744 +f 2744/2771/2744 2645/2671/2645 2745/2772/2745 +f 2645/2671/2645 2646/2672/2646 2745/2772/2745 +f 2745/2772/2745 2646/2672/2646 2746/2773/2746 +f 2646/2672/2646 2647/2673/2647 2746/2773/2746 +f 2746/2773/2746 2647/2673/2647 2747/2774/2747 +f 2647/2673/2647 2648/2674/2648 2747/2774/2747 +f 2747/2774/2747 2648/2674/2648 2748/2775/2748 +f 2648/2674/2648 2649/2675/2649 2748/2775/2748 +f 2748/2775/2748 2649/2675/2649 2749/2776/2749 +f 2649/2675/2649 2650/2676/2650 2749/2776/2749 +f 2749/2776/2749 2650/2676/2650 2750/2777/2750 +f 2650/2676/2650 2651/2677/2651 2750/2777/2750 +f 2750/2777/2750 2651/2677/2651 2751/2778/2751 +f 2651/2677/2651 2652/2678/2652 2751/2778/2751 +f 2751/2778/2751 2652/2678/2652 2752/2779/2752 +f 2652/2678/2652 2653/2679/2653 2752/2779/2752 +f 2752/2779/2752 2653/2679/2653 2753/2780/2753 +f 2653/2679/2653 2654/2680/2654 2753/2780/2753 +f 2753/2780/2753 2654/2680/2654 2754/2781/2754 +f 2654/2680/2654 2655/2681/2655 2754/2781/2754 +f 2754/2781/2754 2655/2681/2655 2755/2782/2755 +f 2655/2681/2655 2656/2682/2656 2755/2782/2755 +f 2755/2782/2755 2656/2682/2656 2756/2783/2756 +f 2656/2682/2656 2657/2683/2657 2756/2783/2756 +f 2756/2783/2756 2657/2683/2657 2757/2784/2757 +f 2657/2683/2657 2658/2684/2658 2757/2784/2757 +f 2757/2784/2757 2658/2684/2658 2758/2785/2758 +f 2658/2684/2658 2659/2685/2659 2758/2785/2758 +f 2758/2785/2758 2659/2685/2659 2759/2786/2759 +f 2659/2685/2659 2660/2686/2660 2759/2786/2759 +f 2759/2786/2759 2660/2686/2660 2760/2787/2760 +f 2660/2686/2660 2661/2687/2661 2760/2787/2760 +f 2760/2787/2760 2661/2687/2661 2761/2788/2761 +f 2661/2687/2661 2662/2688/2662 2761/2788/2761 +f 2761/2788/2761 2662/2688/2662 2762/2789/2762 +f 2662/2688/2662 2663/2689/2663 2762/2789/2762 +f 2762/2789/2762 2663/2689/2663 2763/2790/2763 +f 2663/2689/2663 2664/2690/2664 2763/2790/2763 +f 2763/2790/2763 2664/2690/2664 2764/2791/2764 +f 2664/2690/2664 2665/2691/2665 2764/2791/2764 +f 2764/2791/2764 2665/2691/2665 2765/2792/2765 +f 2665/2691/2665 2666/2692/2666 2765/2792/2765 +f 2765/2792/2765 2666/2692/2666 2766/2793/2766 +f 2666/2692/2666 2667/2693/2667 2766/2793/2766 +f 2766/2793/2766 2667/2693/2667 2767/2794/2767 +f 2667/2693/2667 2668/2694/2668 2767/2794/2767 +f 2767/2794/2767 2668/2694/2668 2768/2795/2768 +f 2668/2694/2668 2669/2695/2669 2768/2795/2768 +f 2768/2795/2768 2669/2695/2669 2769/2796/2769 +f 2669/2695/2669 2670/2696/2670 2769/2796/2769 +f 2769/2796/2769 2670/2696/2670 2770/2797/2770 +f 2670/2696/2670 2671/2697/2671 2770/2797/2770 +f 2770/2797/2770 2671/2697/2671 2771/2798/2771 +f 2671/2697/2671 2672/2698/2672 2771/2798/2771 +f 2771/2798/2771 2672/2698/2672 2772/2799/2772 +f 2672/2698/2672 2673/2699/2673 2772/2799/2772 +f 2772/2799/2772 2673/2699/2673 2773/2800/2773 +f 2673/2699/2673 2674/2700/2674 2773/2800/2773 +f 2773/2800/2773 2674/2700/2674 2774/2801/2774 +f 2674/2700/2674 2675/2701/2675 2774/2801/2774 +f 2774/2801/2774 2675/2701/2675 2775/2802/2775 +f 2675/2701/2675 2676/2702/2676 2775/2802/2775 +f 2775/2802/2775 2676/2702/2676 2776/2803/2776 +f 2676/2702/2676 2677/2703/2677 2776/2803/2776 +f 2776/2803/2776 2677/2703/2677 2777/2804/2777 +f 2677/2703/2677 2678/2704/2678 2777/2804/2777 +f 2777/2804/2777 2678/2704/2678 2778/2805/2778 +f 2678/2704/2678 2679/2705/2679 2778/2805/2778 +f 2778/2805/2778 2679/2705/2679 2779/2806/2779 +f 2679/2705/2679 2680/2706/2680 2779/2806/2779 +f 2779/2806/2779 2680/2706/2680 2780/2807/2780 +f 2680/2706/2680 2681/2707/2681 2780/2807/2780 +f 2780/2807/2780 2681/2707/2681 2781/2808/2781 +f 2681/2707/2681 2682/2708/2682 2781/2808/2781 +f 2781/2808/2781 2682/2708/2682 2782/2809/2782 +f 2682/2708/2682 2683/2709/2683 2782/2809/2782 +f 2782/2809/2782 2683/2709/2683 2783/2810/2783 +f 2683/2709/2683 2684/2710/2684 2783/2810/2783 +f 2783/2810/2783 2684/2710/2684 2784/2811/2784 +f 2684/2710/2684 2685/2711/2685 2784/2811/2784 +f 2784/2811/2784 2685/2711/2685 2785/2812/2785 +f 2685/2711/2685 2686/2712/2686 2785/2812/2785 +f 2785/2812/2785 2686/2712/2686 2786/2813/2786 +f 2686/2712/2686 2687/2713/2687 2786/2813/2786 +f 2786/2813/2786 2687/2713/2687 2787/2814/2787 +f 2687/2713/2687 2688/2714/2688 2787/2814/2787 +f 2787/2814/2787 2688/2714/2688 2788/2815/2788 +f 2688/2714/2688 2689/2715/2689 2788/2815/2788 +f 2788/2815/2788 2689/2715/2689 2789/2816/2789 +f 2689/2715/2689 2690/2716/2690 2789/2816/2789 +f 2789/2816/2789 2690/2716/2690 2790/2817/2790 +f 2690/2716/2690 2691/2717/2691 2790/2817/2790 +f 2790/2817/2790 2691/2717/2691 2791/2818/2791 +f 2691/2717/2691 2692/2718/2692 2791/2818/2791 +f 2791/2818/2791 2692/2718/2692 2792/2819/2792 +f 2692/2718/2692 2693/2719/2693 2792/2819/2792 +f 2792/2819/2792 2693/2719/2693 2793/2820/2793 +f 2693/2719/2693 2694/2720/2694 2793/2820/2793 +f 2793/2820/2793 2694/2720/2694 2794/2821/2794 +f 2694/2720/2694 2695/2721/2695 2794/2821/2794 +f 2794/2821/2794 2695/2721/2695 2795/2822/2795 +f 2695/2721/2695 2696/2722/2696 2795/2822/2795 +f 2795/2822/2795 2696/2722/2696 2796/2823/2796 +f 2696/2722/2696 2697/2723/2697 2796/2823/2796 +f 2796/2823/2796 2697/2723/2697 2797/2824/2797 +f 2697/2723/2697 2698/2724/2698 2797/2824/2797 +f 2797/2824/2797 2698/2724/2698 2798/2825/2798 +f 2698/2724/2698 2699/2725/2699 2798/2825/2798 +f 2798/2825/2798 2699/2725/2699 2799/2826/2799 +f 2699/2725/2699 2700/2726/2700 2799/2826/2799 +f 2799/2826/2799 2700/2726/2700 2800/2827/2800 +f 2700/2726/2700 2601/2727/2601 2800/2827/2800 +f 2800/2827/2800 2601/2727/2601 2701/2828/2701 +f 2701/2728/2701 2702/2729/2702 2801/2829/2801 +f 2801/2829/2801 2702/2729/2702 2802/2830/2802 +f 2702/2729/2702 2703/2730/2703 2802/2830/2802 +f 2802/2830/2802 2703/2730/2703 2803/2831/2803 +f 2703/2730/2703 2704/2731/2704 2803/2831/2803 +f 2803/2831/2803 2704/2731/2704 2804/2832/2804 +f 2704/2731/2704 2705/2732/2705 2804/2832/2804 +f 2804/2832/2804 2705/2732/2705 2805/2833/2805 +f 2705/2732/2705 2706/2733/2706 2805/2833/2805 +f 2805/2833/2805 2706/2733/2706 2806/2834/2806 +f 2706/2733/2706 2707/2734/2707 2806/2834/2806 +f 2806/2834/2806 2707/2734/2707 2807/2835/2807 +f 2707/2734/2707 2708/2735/2708 2807/2835/2807 +f 2807/2835/2807 2708/2735/2708 2808/2836/2808 +f 2708/2735/2708 2709/2736/2709 2808/2836/2808 +f 2808/2836/2808 2709/2736/2709 2809/2837/2809 +f 2709/2736/2709 2710/2737/2710 2809/2837/2809 +f 2809/2837/2809 2710/2737/2710 2810/2838/2810 +f 2710/2737/2710 2711/2738/2711 2810/2838/2810 +f 2810/2838/2810 2711/2738/2711 2811/2839/2811 +f 2711/2738/2711 2712/2739/2712 2811/2839/2811 +f 2811/2839/2811 2712/2739/2712 2812/2840/2812 +f 2712/2739/2712 2713/2740/2713 2812/2840/2812 +f 2812/2840/2812 2713/2740/2713 2813/2841/2813 +f 2713/2740/2713 2714/2741/2714 2813/2841/2813 +f 2813/2841/2813 2714/2741/2714 2814/2842/2814 +f 2714/2741/2714 2715/2742/2715 2814/2842/2814 +f 2814/2842/2814 2715/2742/2715 2815/2843/2815 +f 2715/2742/2715 2716/2743/2716 2815/2843/2815 +f 2815/2843/2815 2716/2743/2716 2816/2844/2816 +f 2716/2743/2716 2717/2744/2717 2816/2844/2816 +f 2816/2844/2816 2717/2744/2717 2817/2845/2817 +f 2717/2744/2717 2718/2745/2718 2817/2845/2817 +f 2817/2845/2817 2718/2745/2718 2818/2846/2818 +f 2718/2745/2718 2719/2746/2719 2818/2846/2818 +f 2818/2846/2818 2719/2746/2719 2819/2847/2819 +f 2719/2746/2719 2720/2747/2720 2819/2847/2819 +f 2819/2847/2819 2720/2747/2720 2820/2848/2820 +f 2720/2747/2720 2721/2748/2721 2820/2848/2820 +f 2820/2848/2820 2721/2748/2721 2821/2849/2821 +f 2721/2748/2721 2722/2749/2722 2821/2849/2821 +f 2821/2849/2821 2722/2749/2722 2822/2850/2822 +f 2722/2749/2722 2723/2750/2723 2822/2850/2822 +f 2822/2850/2822 2723/2750/2723 2823/2851/2823 +f 2723/2750/2723 2724/2751/2724 2823/2851/2823 +f 2823/2851/2823 2724/2751/2724 2824/2852/2824 +f 2724/2751/2724 2725/2752/2725 2824/2852/2824 +f 2824/2852/2824 2725/2752/2725 2825/2853/2825 +f 2725/2752/2725 2726/2753/2726 2825/2853/2825 +f 2825/2853/2825 2726/2753/2726 2826/2854/2826 +f 2726/2753/2726 2727/2754/2727 2826/2854/2826 +f 2826/2854/2826 2727/2754/2727 2827/2855/2827 +f 2727/2754/2727 2728/2755/2728 2827/2855/2827 +f 2827/2855/2827 2728/2755/2728 2828/2856/2828 +f 2728/2755/2728 2729/2756/2729 2828/2856/2828 +f 2828/2856/2828 2729/2756/2729 2829/2857/2829 +f 2729/2756/2729 2730/2757/2730 2829/2857/2829 +f 2829/2857/2829 2730/2757/2730 2830/2858/2830 +f 2730/2757/2730 2731/2758/2731 2830/2858/2830 +f 2830/2858/2830 2731/2758/2731 2831/2859/2831 +f 2731/2758/2731 2732/2759/2732 2831/2859/2831 +f 2831/2859/2831 2732/2759/2732 2832/2860/2832 +f 2732/2759/2732 2733/2760/2733 2832/2860/2832 +f 2832/2860/2832 2733/2760/2733 2833/2861/2833 +f 2733/2760/2733 2734/2761/2734 2833/2861/2833 +f 2833/2861/2833 2734/2761/2734 2834/2862/2834 +f 2734/2761/2734 2735/2762/2735 2834/2862/2834 +f 2834/2862/2834 2735/2762/2735 2835/2863/2835 +f 2735/2762/2735 2736/2763/2736 2835/2863/2835 +f 2835/2863/2835 2736/2763/2736 2836/2864/2836 +f 2736/2763/2736 2737/2764/2737 2836/2864/2836 +f 2836/2864/2836 2737/2764/2737 2837/2865/2837 +f 2737/2764/2737 2738/2765/2738 2837/2865/2837 +f 2837/2865/2837 2738/2765/2738 2838/2866/2838 +f 2738/2765/2738 2739/2766/2739 2838/2866/2838 +f 2838/2866/2838 2739/2766/2739 2839/2867/2839 +f 2739/2766/2739 2740/2767/2740 2839/2867/2839 +f 2839/2867/2839 2740/2767/2740 2840/2868/2840 +f 2740/2767/2740 2741/2768/2741 2840/2868/2840 +f 2840/2868/2840 2741/2768/2741 2841/2869/2841 +f 2741/2768/2741 2742/2769/2742 2841/2869/2841 +f 2841/2869/2841 2742/2769/2742 2842/2870/2842 +f 2742/2769/2742 2743/2770/2743 2842/2870/2842 +f 2842/2870/2842 2743/2770/2743 2843/2871/2843 +f 2743/2770/2743 2744/2771/2744 2843/2871/2843 +f 2843/2871/2843 2744/2771/2744 2844/2872/2844 +f 2744/2771/2744 2745/2772/2745 2844/2872/2844 +f 2844/2872/2844 2745/2772/2745 2845/2873/2845 +f 2745/2772/2745 2746/2773/2746 2845/2873/2845 +f 2845/2873/2845 2746/2773/2746 2846/2874/2846 +f 2746/2773/2746 2747/2774/2747 2846/2874/2846 +f 2846/2874/2846 2747/2774/2747 2847/2875/2847 +f 2747/2774/2747 2748/2775/2748 2847/2875/2847 +f 2847/2875/2847 2748/2775/2748 2848/2876/2848 +f 2748/2775/2748 2749/2776/2749 2848/2876/2848 +f 2848/2876/2848 2749/2776/2749 2849/2877/2849 +f 2749/2776/2749 2750/2777/2750 2849/2877/2849 +f 2849/2877/2849 2750/2777/2750 2850/2878/2850 +f 2750/2777/2750 2751/2778/2751 2850/2878/2850 +f 2850/2878/2850 2751/2778/2751 2851/2879/2851 +f 2751/2778/2751 2752/2779/2752 2851/2879/2851 +f 2851/2879/2851 2752/2779/2752 2852/2880/2852 +f 2752/2779/2752 2753/2780/2753 2852/2880/2852 +f 2852/2880/2852 2753/2780/2753 2853/2881/2853 +f 2753/2780/2753 2754/2781/2754 2853/2881/2853 +f 2853/2881/2853 2754/2781/2754 2854/2882/2854 +f 2754/2781/2754 2755/2782/2755 2854/2882/2854 +f 2854/2882/2854 2755/2782/2755 2855/2883/2855 +f 2755/2782/2755 2756/2783/2756 2855/2883/2855 +f 2855/2883/2855 2756/2783/2756 2856/2884/2856 +f 2756/2783/2756 2757/2784/2757 2856/2884/2856 +f 2856/2884/2856 2757/2784/2757 2857/2885/2857 +f 2757/2784/2757 2758/2785/2758 2857/2885/2857 +f 2857/2885/2857 2758/2785/2758 2858/2886/2858 +f 2758/2785/2758 2759/2786/2759 2858/2886/2858 +f 2858/2886/2858 2759/2786/2759 2859/2887/2859 +f 2759/2786/2759 2760/2787/2760 2859/2887/2859 +f 2859/2887/2859 2760/2787/2760 2860/2888/2860 +f 2760/2787/2760 2761/2788/2761 2860/2888/2860 +f 2860/2888/2860 2761/2788/2761 2861/2889/2861 +f 2761/2788/2761 2762/2789/2762 2861/2889/2861 +f 2861/2889/2861 2762/2789/2762 2862/2890/2862 +f 2762/2789/2762 2763/2790/2763 2862/2890/2862 +f 2862/2890/2862 2763/2790/2763 2863/2891/2863 +f 2763/2790/2763 2764/2791/2764 2863/2891/2863 +f 2863/2891/2863 2764/2791/2764 2864/2892/2864 +f 2764/2791/2764 2765/2792/2765 2864/2892/2864 +f 2864/2892/2864 2765/2792/2765 2865/2893/2865 +f 2765/2792/2765 2766/2793/2766 2865/2893/2865 +f 2865/2893/2865 2766/2793/2766 2866/2894/2866 +f 2766/2793/2766 2767/2794/2767 2866/2894/2866 +f 2866/2894/2866 2767/2794/2767 2867/2895/2867 +f 2767/2794/2767 2768/2795/2768 2867/2895/2867 +f 2867/2895/2867 2768/2795/2768 2868/2896/2868 +f 2768/2795/2768 2769/2796/2769 2868/2896/2868 +f 2868/2896/2868 2769/2796/2769 2869/2897/2869 +f 2769/2796/2769 2770/2797/2770 2869/2897/2869 +f 2869/2897/2869 2770/2797/2770 2870/2898/2870 +f 2770/2797/2770 2771/2798/2771 2870/2898/2870 +f 2870/2898/2870 2771/2798/2771 2871/2899/2871 +f 2771/2798/2771 2772/2799/2772 2871/2899/2871 +f 2871/2899/2871 2772/2799/2772 2872/2900/2872 +f 2772/2799/2772 2773/2800/2773 2872/2900/2872 +f 2872/2900/2872 2773/2800/2773 2873/2901/2873 +f 2773/2800/2773 2774/2801/2774 2873/2901/2873 +f 2873/2901/2873 2774/2801/2774 2874/2902/2874 +f 2774/2801/2774 2775/2802/2775 2874/2902/2874 +f 2874/2902/2874 2775/2802/2775 2875/2903/2875 +f 2775/2802/2775 2776/2803/2776 2875/2903/2875 +f 2875/2903/2875 2776/2803/2776 2876/2904/2876 +f 2776/2803/2776 2777/2804/2777 2876/2904/2876 +f 2876/2904/2876 2777/2804/2777 2877/2905/2877 +f 2777/2804/2777 2778/2805/2778 2877/2905/2877 +f 2877/2905/2877 2778/2805/2778 2878/2906/2878 +f 2778/2805/2778 2779/2806/2779 2878/2906/2878 +f 2878/2906/2878 2779/2806/2779 2879/2907/2879 +f 2779/2806/2779 2780/2807/2780 2879/2907/2879 +f 2879/2907/2879 2780/2807/2780 2880/2908/2880 +f 2780/2807/2780 2781/2808/2781 2880/2908/2880 +f 2880/2908/2880 2781/2808/2781 2881/2909/2881 +f 2781/2808/2781 2782/2809/2782 2881/2909/2881 +f 2881/2909/2881 2782/2809/2782 2882/2910/2882 +f 2782/2809/2782 2783/2810/2783 2882/2910/2882 +f 2882/2910/2882 2783/2810/2783 2883/2911/2883 +f 2783/2810/2783 2784/2811/2784 2883/2911/2883 +f 2883/2911/2883 2784/2811/2784 2884/2912/2884 +f 2784/2811/2784 2785/2812/2785 2884/2912/2884 +f 2884/2912/2884 2785/2812/2785 2885/2913/2885 +f 2785/2812/2785 2786/2813/2786 2885/2913/2885 +f 2885/2913/2885 2786/2813/2786 2886/2914/2886 +f 2786/2813/2786 2787/2814/2787 2886/2914/2886 +f 2886/2914/2886 2787/2814/2787 2887/2915/2887 +f 2787/2814/2787 2788/2815/2788 2887/2915/2887 +f 2887/2915/2887 2788/2815/2788 2888/2916/2888 +f 2788/2815/2788 2789/2816/2789 2888/2916/2888 +f 2888/2916/2888 2789/2816/2789 2889/2917/2889 +f 2789/2816/2789 2790/2817/2790 2889/2917/2889 +f 2889/2917/2889 2790/2817/2790 2890/2918/2890 +f 2790/2817/2790 2791/2818/2791 2890/2918/2890 +f 2890/2918/2890 2791/2818/2791 2891/2919/2891 +f 2791/2818/2791 2792/2819/2792 2891/2919/2891 +f 2891/2919/2891 2792/2819/2792 2892/2920/2892 +f 2792/2819/2792 2793/2820/2793 2892/2920/2892 +f 2892/2920/2892 2793/2820/2793 2893/2921/2893 +f 2793/2820/2793 2794/2821/2794 2893/2921/2893 +f 2893/2921/2893 2794/2821/2794 2894/2922/2894 +f 2794/2821/2794 2795/2822/2795 2894/2922/2894 +f 2894/2922/2894 2795/2822/2795 2895/2923/2895 +f 2795/2822/2795 2796/2823/2796 2895/2923/2895 +f 2895/2923/2895 2796/2823/2796 2896/2924/2896 +f 2796/2823/2796 2797/2824/2797 2896/2924/2896 +f 2896/2924/2896 2797/2824/2797 2897/2925/2897 +f 2797/2824/2797 2798/2825/2798 2897/2925/2897 +f 2897/2925/2897 2798/2825/2798 2898/2926/2898 +f 2798/2825/2798 2799/2826/2799 2898/2926/2898 +f 2898/2926/2898 2799/2826/2799 2899/2927/2899 +f 2799/2826/2799 2800/2827/2800 2899/2927/2899 +f 2899/2927/2899 2800/2827/2800 2900/2928/2900 +f 2800/2827/2800 2701/2828/2701 2900/2928/2900 +f 2900/2928/2900 2701/2828/2701 2801/2929/2801 +f 2801/2829/2801 2802/2830/2802 2901/2930/2901 +f 2901/2930/2901 2802/2830/2802 2902/2931/2902 +f 2802/2830/2802 2803/2831/2803 2902/2931/2902 +f 2902/2931/2902 2803/2831/2803 2903/2932/2903 +f 2803/2831/2803 2804/2832/2804 2903/2932/2903 +f 2903/2932/2903 2804/2832/2804 2904/2933/2904 +f 2804/2832/2804 2805/2833/2805 2904/2933/2904 +f 2904/2933/2904 2805/2833/2805 2905/2934/2905 +f 2805/2833/2805 2806/2834/2806 2905/2934/2905 +f 2905/2934/2905 2806/2834/2806 2906/2935/2906 +f 2806/2834/2806 2807/2835/2807 2906/2935/2906 +f 2906/2935/2906 2807/2835/2807 2907/2936/2907 +f 2807/2835/2807 2808/2836/2808 2907/2936/2907 +f 2907/2936/2907 2808/2836/2808 2908/2937/2908 +f 2808/2836/2808 2809/2837/2809 2908/2937/2908 +f 2908/2937/2908 2809/2837/2809 2909/2938/2909 +f 2809/2837/2809 2810/2838/2810 2909/2938/2909 +f 2909/2938/2909 2810/2838/2810 2910/2939/2910 +f 2810/2838/2810 2811/2839/2811 2910/2939/2910 +f 2910/2939/2910 2811/2839/2811 2911/2940/2911 +f 2811/2839/2811 2812/2840/2812 2911/2940/2911 +f 2911/2940/2911 2812/2840/2812 2912/2941/2912 +f 2812/2840/2812 2813/2841/2813 2912/2941/2912 +f 2912/2941/2912 2813/2841/2813 2913/2942/2913 +f 2813/2841/2813 2814/2842/2814 2913/2942/2913 +f 2913/2942/2913 2814/2842/2814 2914/2943/2914 +f 2814/2842/2814 2815/2843/2815 2914/2943/2914 +f 2914/2943/2914 2815/2843/2815 2915/2944/2915 +f 2815/2843/2815 2816/2844/2816 2915/2944/2915 +f 2915/2944/2915 2816/2844/2816 2916/2945/2916 +f 2816/2844/2816 2817/2845/2817 2916/2945/2916 +f 2916/2945/2916 2817/2845/2817 2917/2946/2917 +f 2817/2845/2817 2818/2846/2818 2917/2946/2917 +f 2917/2946/2917 2818/2846/2818 2918/2947/2918 +f 2818/2846/2818 2819/2847/2819 2918/2947/2918 +f 2918/2947/2918 2819/2847/2819 2919/2948/2919 +f 2819/2847/2819 2820/2848/2820 2919/2948/2919 +f 2919/2948/2919 2820/2848/2820 2920/2949/2920 +f 2820/2848/2820 2821/2849/2821 2920/2949/2920 +f 2920/2949/2920 2821/2849/2821 2921/2950/2921 +f 2821/2849/2821 2822/2850/2822 2921/2950/2921 +f 2921/2950/2921 2822/2850/2822 2922/2951/2922 +f 2822/2850/2822 2823/2851/2823 2922/2951/2922 +f 2922/2951/2922 2823/2851/2823 2923/2952/2923 +f 2823/2851/2823 2824/2852/2824 2923/2952/2923 +f 2923/2952/2923 2824/2852/2824 2924/2953/2924 +f 2824/2852/2824 2825/2853/2825 2924/2953/2924 +f 2924/2953/2924 2825/2853/2825 2925/2954/2925 +f 2825/2853/2825 2826/2854/2826 2925/2954/2925 +f 2925/2954/2925 2826/2854/2826 2926/2955/2926 +f 2826/2854/2826 2827/2855/2827 2926/2955/2926 +f 2926/2955/2926 2827/2855/2827 2927/2956/2927 +f 2827/2855/2827 2828/2856/2828 2927/2956/2927 +f 2927/2956/2927 2828/2856/2828 2928/2957/2928 +f 2828/2856/2828 2829/2857/2829 2928/2957/2928 +f 2928/2957/2928 2829/2857/2829 2929/2958/2929 +f 2829/2857/2829 2830/2858/2830 2929/2958/2929 +f 2929/2958/2929 2830/2858/2830 2930/2959/2930 +f 2830/2858/2830 2831/2859/2831 2930/2959/2930 +f 2930/2959/2930 2831/2859/2831 2931/2960/2931 +f 2831/2859/2831 2832/2860/2832 2931/2960/2931 +f 2931/2960/2931 2832/2860/2832 2932/2961/2932 +f 2832/2860/2832 2833/2861/2833 2932/2961/2932 +f 2932/2961/2932 2833/2861/2833 2933/2962/2933 +f 2833/2861/2833 2834/2862/2834 2933/2962/2933 +f 2933/2962/2933 2834/2862/2834 2934/2963/2934 +f 2834/2862/2834 2835/2863/2835 2934/2963/2934 +f 2934/2963/2934 2835/2863/2835 2935/2964/2935 +f 2835/2863/2835 2836/2864/2836 2935/2964/2935 +f 2935/2964/2935 2836/2864/2836 2936/2965/2936 +f 2836/2864/2836 2837/2865/2837 2936/2965/2936 +f 2936/2965/2936 2837/2865/2837 2937/2966/2937 +f 2837/2865/2837 2838/2866/2838 2937/2966/2937 +f 2937/2966/2937 2838/2866/2838 2938/2967/2938 +f 2838/2866/2838 2839/2867/2839 2938/2967/2938 +f 2938/2967/2938 2839/2867/2839 2939/2968/2939 +f 2839/2867/2839 2840/2868/2840 2939/2968/2939 +f 2939/2968/2939 2840/2868/2840 2940/2969/2940 +f 2840/2868/2840 2841/2869/2841 2940/2969/2940 +f 2940/2969/2940 2841/2869/2841 2941/2970/2941 +f 2841/2869/2841 2842/2870/2842 2941/2970/2941 +f 2941/2970/2941 2842/2870/2842 2942/2971/2942 +f 2842/2870/2842 2843/2871/2843 2942/2971/2942 +f 2942/2971/2942 2843/2871/2843 2943/2972/2943 +f 2843/2871/2843 2844/2872/2844 2943/2972/2943 +f 2943/2972/2943 2844/2872/2844 2944/2973/2944 +f 2844/2872/2844 2845/2873/2845 2944/2973/2944 +f 2944/2973/2944 2845/2873/2845 2945/2974/2945 +f 2845/2873/2845 2846/2874/2846 2945/2974/2945 +f 2945/2974/2945 2846/2874/2846 2946/2975/2946 +f 2846/2874/2846 2847/2875/2847 2946/2975/2946 +f 2946/2975/2946 2847/2875/2847 2947/2976/2947 +f 2847/2875/2847 2848/2876/2848 2947/2976/2947 +f 2947/2976/2947 2848/2876/2848 2948/2977/2948 +f 2848/2876/2848 2849/2877/2849 2948/2977/2948 +f 2948/2977/2948 2849/2877/2849 2949/2978/2949 +f 2849/2877/2849 2850/2878/2850 2949/2978/2949 +f 2949/2978/2949 2850/2878/2850 2950/2979/2950 +f 2850/2878/2850 2851/2879/2851 2950/2979/2950 +f 2950/2979/2950 2851/2879/2851 2951/2980/2951 +f 2851/2879/2851 2852/2880/2852 2951/2980/2951 +f 2951/2980/2951 2852/2880/2852 2952/2981/2952 +f 2852/2880/2852 2853/2881/2853 2952/2981/2952 +f 2952/2981/2952 2853/2881/2853 2953/2982/2953 +f 2853/2881/2853 2854/2882/2854 2953/2982/2953 +f 2953/2982/2953 2854/2882/2854 2954/2983/2954 +f 2854/2882/2854 2855/2883/2855 2954/2983/2954 +f 2954/2983/2954 2855/2883/2855 2955/2984/2955 +f 2855/2883/2855 2856/2884/2856 2955/2984/2955 +f 2955/2984/2955 2856/2884/2856 2956/2985/2956 +f 2856/2884/2856 2857/2885/2857 2956/2985/2956 +f 2956/2985/2956 2857/2885/2857 2957/2986/2957 +f 2857/2885/2857 2858/2886/2858 2957/2986/2957 +f 2957/2986/2957 2858/2886/2858 2958/2987/2958 +f 2858/2886/2858 2859/2887/2859 2958/2987/2958 +f 2958/2987/2958 2859/2887/2859 2959/2988/2959 +f 2859/2887/2859 2860/2888/2860 2959/2988/2959 +f 2959/2988/2959 2860/2888/2860 2960/2989/2960 +f 2860/2888/2860 2861/2889/2861 2960/2989/2960 +f 2960/2989/2960 2861/2889/2861 2961/2990/2961 +f 2861/2889/2861 2862/2890/2862 2961/2990/2961 +f 2961/2990/2961 2862/2890/2862 2962/2991/2962 +f 2862/2890/2862 2863/2891/2863 2962/2991/2962 +f 2962/2991/2962 2863/2891/2863 2963/2992/2963 +f 2863/2891/2863 2864/2892/2864 2963/2992/2963 +f 2963/2992/2963 2864/2892/2864 2964/2993/2964 +f 2864/2892/2864 2865/2893/2865 2964/2993/2964 +f 2964/2993/2964 2865/2893/2865 2965/2994/2965 +f 2865/2893/2865 2866/2894/2866 2965/2994/2965 +f 2965/2994/2965 2866/2894/2866 2966/2995/2966 +f 2866/2894/2866 2867/2895/2867 2966/2995/2966 +f 2966/2995/2966 2867/2895/2867 2967/2996/2967 +f 2867/2895/2867 2868/2896/2868 2967/2996/2967 +f 2967/2996/2967 2868/2896/2868 2968/2997/2968 +f 2868/2896/2868 2869/2897/2869 2968/2997/2968 +f 2968/2997/2968 2869/2897/2869 2969/2998/2969 +f 2869/2897/2869 2870/2898/2870 2969/2998/2969 +f 2969/2998/2969 2870/2898/2870 2970/2999/2970 +f 2870/2898/2870 2871/2899/2871 2970/2999/2970 +f 2970/2999/2970 2871/2899/2871 2971/3000/2971 +f 2871/2899/2871 2872/2900/2872 2971/3000/2971 +f 2971/3000/2971 2872/2900/2872 2972/3001/2972 +f 2872/2900/2872 2873/2901/2873 2972/3001/2972 +f 2972/3001/2972 2873/2901/2873 2973/3002/2973 +f 2873/2901/2873 2874/2902/2874 2973/3002/2973 +f 2973/3002/2973 2874/2902/2874 2974/3003/2974 +f 2874/2902/2874 2875/2903/2875 2974/3003/2974 +f 2974/3003/2974 2875/2903/2875 2975/3004/2975 +f 2875/2903/2875 2876/2904/2876 2975/3004/2975 +f 2975/3004/2975 2876/2904/2876 2976/3005/2976 +f 2876/2904/2876 2877/2905/2877 2976/3005/2976 +f 2976/3005/2976 2877/2905/2877 2977/3006/2977 +f 2877/2905/2877 2878/2906/2878 2977/3006/2977 +f 2977/3006/2977 2878/2906/2878 2978/3007/2978 +f 2878/2906/2878 2879/2907/2879 2978/3007/2978 +f 2978/3007/2978 2879/2907/2879 2979/3008/2979 +f 2879/2907/2879 2880/2908/2880 2979/3008/2979 +f 2979/3008/2979 2880/2908/2880 2980/3009/2980 +f 2880/2908/2880 2881/2909/2881 2980/3009/2980 +f 2980/3009/2980 2881/2909/2881 2981/3010/2981 +f 2881/2909/2881 2882/2910/2882 2981/3010/2981 +f 2981/3010/2981 2882/2910/2882 2982/3011/2982 +f 2882/2910/2882 2883/2911/2883 2982/3011/2982 +f 2982/3011/2982 2883/2911/2883 2983/3012/2983 +f 2883/2911/2883 2884/2912/2884 2983/3012/2983 +f 2983/3012/2983 2884/2912/2884 2984/3013/2984 +f 2884/2912/2884 2885/2913/2885 2984/3013/2984 +f 2984/3013/2984 2885/2913/2885 2985/3014/2985 +f 2885/2913/2885 2886/2914/2886 2985/3014/2985 +f 2985/3014/2985 2886/2914/2886 2986/3015/2986 +f 2886/2914/2886 2887/2915/2887 2986/3015/2986 +f 2986/3015/2986 2887/2915/2887 2987/3016/2987 +f 2887/2915/2887 2888/2916/2888 2987/3016/2987 +f 2987/3016/2987 2888/2916/2888 2988/3017/2988 +f 2888/2916/2888 2889/2917/2889 2988/3017/2988 +f 2988/3017/2988 2889/2917/2889 2989/3018/2989 +f 2889/2917/2889 2890/2918/2890 2989/3018/2989 +f 2989/3018/2989 2890/2918/2890 2990/3019/2990 +f 2890/2918/2890 2891/2919/2891 2990/3019/2990 +f 2990/3019/2990 2891/2919/2891 2991/3020/2991 +f 2891/2919/2891 2892/2920/2892 2991/3020/2991 +f 2991/3020/2991 2892/2920/2892 2992/3021/2992 +f 2892/2920/2892 2893/2921/2893 2992/3021/2992 +f 2992/3021/2992 2893/2921/2893 2993/3022/2993 +f 2893/2921/2893 2894/2922/2894 2993/3022/2993 +f 2993/3022/2993 2894/2922/2894 2994/3023/2994 +f 2894/2922/2894 2895/2923/2895 2994/3023/2994 +f 2994/3023/2994 2895/2923/2895 2995/3024/2995 +f 2895/2923/2895 2896/2924/2896 2995/3024/2995 +f 2995/3024/2995 2896/2924/2896 2996/3025/2996 +f 2896/2924/2896 2897/2925/2897 2996/3025/2996 +f 2996/3025/2996 2897/2925/2897 2997/3026/2997 +f 2897/2925/2897 2898/2926/2898 2997/3026/2997 +f 2997/3026/2997 2898/2926/2898 2998/3027/2998 +f 2898/2926/2898 2899/2927/2899 2998/3027/2998 +f 2998/3027/2998 2899/2927/2899 2999/3028/2999 +f 2899/2927/2899 2900/2928/2900 2999/3028/2999 +f 2999/3028/2999 2900/2928/2900 3000/3029/3000 +f 2900/2928/2900 2801/2929/2801 3000/3029/3000 +f 3000/3029/3000 2801/2929/2801 2901/3030/2901 +f 2901/2930/2901 2902/2931/2902 3001/3031/3001 +f 3001/3031/3001 2902/2931/2902 3002/3032/3002 +f 2902/2931/2902 2903/2932/2903 3002/3032/3002 +f 3002/3032/3002 2903/2932/2903 3003/3033/3003 +f 2903/2932/2903 2904/2933/2904 3003/3033/3003 +f 3003/3033/3003 2904/2933/2904 3004/3034/3004 +f 2904/2933/2904 2905/2934/2905 3004/3034/3004 +f 3004/3034/3004 2905/2934/2905 3005/3035/3005 +f 2905/2934/2905 2906/2935/2906 3005/3035/3005 +f 3005/3035/3005 2906/2935/2906 3006/3036/3006 +f 2906/2935/2906 2907/2936/2907 3006/3036/3006 +f 3006/3036/3006 2907/2936/2907 3007/3037/3007 +f 2907/2936/2907 2908/2937/2908 3007/3037/3007 +f 3007/3037/3007 2908/2937/2908 3008/3038/3008 +f 2908/2937/2908 2909/2938/2909 3008/3038/3008 +f 3008/3038/3008 2909/2938/2909 3009/3039/3009 +f 2909/2938/2909 2910/2939/2910 3009/3039/3009 +f 3009/3039/3009 2910/2939/2910 3010/3040/3010 +f 2910/2939/2910 2911/2940/2911 3010/3040/3010 +f 3010/3040/3010 2911/2940/2911 3011/3041/3011 +f 2911/2940/2911 2912/2941/2912 3011/3041/3011 +f 3011/3041/3011 2912/2941/2912 3012/3042/3012 +f 2912/2941/2912 2913/2942/2913 3012/3042/3012 +f 3012/3042/3012 2913/2942/2913 3013/3043/3013 +f 2913/2942/2913 2914/2943/2914 3013/3043/3013 +f 3013/3043/3013 2914/2943/2914 3014/3044/3014 +f 2914/2943/2914 2915/2944/2915 3014/3044/3014 +f 3014/3044/3014 2915/2944/2915 3015/3045/3015 +f 2915/2944/2915 2916/2945/2916 3015/3045/3015 +f 3015/3045/3015 2916/2945/2916 3016/3046/3016 +f 2916/2945/2916 2917/2946/2917 3016/3046/3016 +f 3016/3046/3016 2917/2946/2917 3017/3047/3017 +f 2917/2946/2917 2918/2947/2918 3017/3047/3017 +f 3017/3047/3017 2918/2947/2918 3018/3048/3018 +f 2918/2947/2918 2919/2948/2919 3018/3048/3018 +f 3018/3048/3018 2919/2948/2919 3019/3049/3019 +f 2919/2948/2919 2920/2949/2920 3019/3049/3019 +f 3019/3049/3019 2920/2949/2920 3020/3050/3020 +f 2920/2949/2920 2921/2950/2921 3020/3050/3020 +f 3020/3050/3020 2921/2950/2921 3021/3051/3021 +f 2921/2950/2921 2922/2951/2922 3021/3051/3021 +f 3021/3051/3021 2922/2951/2922 3022/3052/3022 +f 2922/2951/2922 2923/2952/2923 3022/3052/3022 +f 3022/3052/3022 2923/2952/2923 3023/3053/3023 +f 2923/2952/2923 2924/2953/2924 3023/3053/3023 +f 3023/3053/3023 2924/2953/2924 3024/3054/3024 +f 2924/2953/2924 2925/2954/2925 3024/3054/3024 +f 3024/3054/3024 2925/2954/2925 3025/3055/3025 +f 2925/2954/2925 2926/2955/2926 3025/3055/3025 +f 3025/3055/3025 2926/2955/2926 3026/3056/3026 +f 2926/2955/2926 2927/2956/2927 3026/3056/3026 +f 3026/3056/3026 2927/2956/2927 3027/3057/3027 +f 2927/2956/2927 2928/2957/2928 3027/3057/3027 +f 3027/3057/3027 2928/2957/2928 3028/3058/3028 +f 2928/2957/2928 2929/2958/2929 3028/3058/3028 +f 3028/3058/3028 2929/2958/2929 3029/3059/3029 +f 2929/2958/2929 2930/2959/2930 3029/3059/3029 +f 3029/3059/3029 2930/2959/2930 3030/3060/3030 +f 2930/2959/2930 2931/2960/2931 3030/3060/3030 +f 3030/3060/3030 2931/2960/2931 3031/3061/3031 +f 2931/2960/2931 2932/2961/2932 3031/3061/3031 +f 3031/3061/3031 2932/2961/2932 3032/3062/3032 +f 2932/2961/2932 2933/2962/2933 3032/3062/3032 +f 3032/3062/3032 2933/2962/2933 3033/3063/3033 +f 2933/2962/2933 2934/2963/2934 3033/3063/3033 +f 3033/3063/3033 2934/2963/2934 3034/3064/3034 +f 2934/2963/2934 2935/2964/2935 3034/3064/3034 +f 3034/3064/3034 2935/2964/2935 3035/3065/3035 +f 2935/2964/2935 2936/2965/2936 3035/3065/3035 +f 3035/3065/3035 2936/2965/2936 3036/3066/3036 +f 2936/2965/2936 2937/2966/2937 3036/3066/3036 +f 3036/3066/3036 2937/2966/2937 3037/3067/3037 +f 2937/2966/2937 2938/2967/2938 3037/3067/3037 +f 3037/3067/3037 2938/2967/2938 3038/3068/3038 +f 2938/2967/2938 2939/2968/2939 3038/3068/3038 +f 3038/3068/3038 2939/2968/2939 3039/3069/3039 +f 2939/2968/2939 2940/2969/2940 3039/3069/3039 +f 3039/3069/3039 2940/2969/2940 3040/3070/3040 +f 2940/2969/2940 2941/2970/2941 3040/3070/3040 +f 3040/3070/3040 2941/2970/2941 3041/3071/3041 +f 2941/2970/2941 2942/2971/2942 3041/3071/3041 +f 3041/3071/3041 2942/2971/2942 3042/3072/3042 +f 2942/2971/2942 2943/2972/2943 3042/3072/3042 +f 3042/3072/3042 2943/2972/2943 3043/3073/3043 +f 2943/2972/2943 2944/2973/2944 3043/3073/3043 +f 3043/3073/3043 2944/2973/2944 3044/3074/3044 +f 2944/2973/2944 2945/2974/2945 3044/3074/3044 +f 3044/3074/3044 2945/2974/2945 3045/3075/3045 +f 2945/2974/2945 2946/2975/2946 3045/3075/3045 +f 3045/3075/3045 2946/2975/2946 3046/3076/3046 +f 2946/2975/2946 2947/2976/2947 3046/3076/3046 +f 3046/3076/3046 2947/2976/2947 3047/3077/3047 +f 2947/2976/2947 2948/2977/2948 3047/3077/3047 +f 3047/3077/3047 2948/2977/2948 3048/3078/3048 +f 2948/2977/2948 2949/2978/2949 3048/3078/3048 +f 3048/3078/3048 2949/2978/2949 3049/3079/3049 +f 2949/2978/2949 2950/2979/2950 3049/3079/3049 +f 3049/3079/3049 2950/2979/2950 3050/3080/3050 +f 2950/2979/2950 2951/2980/2951 3050/3080/3050 +f 3050/3080/3050 2951/2980/2951 3051/3081/3051 +f 2951/2980/2951 2952/2981/2952 3051/3081/3051 +f 3051/3081/3051 2952/2981/2952 3052/3082/3052 +f 2952/2981/2952 2953/2982/2953 3052/3082/3052 +f 3052/3082/3052 2953/2982/2953 3053/3083/3053 +f 2953/2982/2953 2954/2983/2954 3053/3083/3053 +f 3053/3083/3053 2954/2983/2954 3054/3084/3054 +f 2954/2983/2954 2955/2984/2955 3054/3084/3054 +f 3054/3084/3054 2955/2984/2955 3055/3085/3055 +f 2955/2984/2955 2956/2985/2956 3055/3085/3055 +f 3055/3085/3055 2956/2985/2956 3056/3086/3056 +f 2956/2985/2956 2957/2986/2957 3056/3086/3056 +f 3056/3086/3056 2957/2986/2957 3057/3087/3057 +f 2957/2986/2957 2958/2987/2958 3057/3087/3057 +f 3057/3087/3057 2958/2987/2958 3058/3088/3058 +f 2958/2987/2958 2959/2988/2959 3058/3088/3058 +f 3058/3088/3058 2959/2988/2959 3059/3089/3059 +f 2959/2988/2959 2960/2989/2960 3059/3089/3059 +f 3059/3089/3059 2960/2989/2960 3060/3090/3060 +f 2960/2989/2960 2961/2990/2961 3060/3090/3060 +f 3060/3090/3060 2961/2990/2961 3061/3091/3061 +f 2961/2990/2961 2962/2991/2962 3061/3091/3061 +f 3061/3091/3061 2962/2991/2962 3062/3092/3062 +f 2962/2991/2962 2963/2992/2963 3062/3092/3062 +f 3062/3092/3062 2963/2992/2963 3063/3093/3063 +f 2963/2992/2963 2964/2993/2964 3063/3093/3063 +f 3063/3093/3063 2964/2993/2964 3064/3094/3064 +f 2964/2993/2964 2965/2994/2965 3064/3094/3064 +f 3064/3094/3064 2965/2994/2965 3065/3095/3065 +f 2965/2994/2965 2966/2995/2966 3065/3095/3065 +f 3065/3095/3065 2966/2995/2966 3066/3096/3066 +f 2966/2995/2966 2967/2996/2967 3066/3096/3066 +f 3066/3096/3066 2967/2996/2967 3067/3097/3067 +f 2967/2996/2967 2968/2997/2968 3067/3097/3067 +f 3067/3097/3067 2968/2997/2968 3068/3098/3068 +f 2968/2997/2968 2969/2998/2969 3068/3098/3068 +f 3068/3098/3068 2969/2998/2969 3069/3099/3069 +f 2969/2998/2969 2970/2999/2970 3069/3099/3069 +f 3069/3099/3069 2970/2999/2970 3070/3100/3070 +f 2970/2999/2970 2971/3000/2971 3070/3100/3070 +f 3070/3100/3070 2971/3000/2971 3071/3101/3071 +f 2971/3000/2971 2972/3001/2972 3071/3101/3071 +f 3071/3101/3071 2972/3001/2972 3072/3102/3072 +f 2972/3001/2972 2973/3002/2973 3072/3102/3072 +f 3072/3102/3072 2973/3002/2973 3073/3103/3073 +f 2973/3002/2973 2974/3003/2974 3073/3103/3073 +f 3073/3103/3073 2974/3003/2974 3074/3104/3074 +f 2974/3003/2974 2975/3004/2975 3074/3104/3074 +f 3074/3104/3074 2975/3004/2975 3075/3105/3075 +f 2975/3004/2975 2976/3005/2976 3075/3105/3075 +f 3075/3105/3075 2976/3005/2976 3076/3106/3076 +f 2976/3005/2976 2977/3006/2977 3076/3106/3076 +f 3076/3106/3076 2977/3006/2977 3077/3107/3077 +f 2977/3006/2977 2978/3007/2978 3077/3107/3077 +f 3077/3107/3077 2978/3007/2978 3078/3108/3078 +f 2978/3007/2978 2979/3008/2979 3078/3108/3078 +f 3078/3108/3078 2979/3008/2979 3079/3109/3079 +f 2979/3008/2979 2980/3009/2980 3079/3109/3079 +f 3079/3109/3079 2980/3009/2980 3080/3110/3080 +f 2980/3009/2980 2981/3010/2981 3080/3110/3080 +f 3080/3110/3080 2981/3010/2981 3081/3111/3081 +f 2981/3010/2981 2982/3011/2982 3081/3111/3081 +f 3081/3111/3081 2982/3011/2982 3082/3112/3082 +f 2982/3011/2982 2983/3012/2983 3082/3112/3082 +f 3082/3112/3082 2983/3012/2983 3083/3113/3083 +f 2983/3012/2983 2984/3013/2984 3083/3113/3083 +f 3083/3113/3083 2984/3013/2984 3084/3114/3084 +f 2984/3013/2984 2985/3014/2985 3084/3114/3084 +f 3084/3114/3084 2985/3014/2985 3085/3115/3085 +f 2985/3014/2985 2986/3015/2986 3085/3115/3085 +f 3085/3115/3085 2986/3015/2986 3086/3116/3086 +f 2986/3015/2986 2987/3016/2987 3086/3116/3086 +f 3086/3116/3086 2987/3016/2987 3087/3117/3087 +f 2987/3016/2987 2988/3017/2988 3087/3117/3087 +f 3087/3117/3087 2988/3017/2988 3088/3118/3088 +f 2988/3017/2988 2989/3018/2989 3088/3118/3088 +f 3088/3118/3088 2989/3018/2989 3089/3119/3089 +f 2989/3018/2989 2990/3019/2990 3089/3119/3089 +f 3089/3119/3089 2990/3019/2990 3090/3120/3090 +f 2990/3019/2990 2991/3020/2991 3090/3120/3090 +f 3090/3120/3090 2991/3020/2991 3091/3121/3091 +f 2991/3020/2991 2992/3021/2992 3091/3121/3091 +f 3091/3121/3091 2992/3021/2992 3092/3122/3092 +f 2992/3021/2992 2993/3022/2993 3092/3122/3092 +f 3092/3122/3092 2993/3022/2993 3093/3123/3093 +f 2993/3022/2993 2994/3023/2994 3093/3123/3093 +f 3093/3123/3093 2994/3023/2994 3094/3124/3094 +f 2994/3023/2994 2995/3024/2995 3094/3124/3094 +f 3094/3124/3094 2995/3024/2995 3095/3125/3095 +f 2995/3024/2995 2996/3025/2996 3095/3125/3095 +f 3095/3125/3095 2996/3025/2996 3096/3126/3096 +f 2996/3025/2996 2997/3026/2997 3096/3126/3096 +f 3096/3126/3096 2997/3026/2997 3097/3127/3097 +f 2997/3026/2997 2998/3027/2998 3097/3127/3097 +f 3097/3127/3097 2998/3027/2998 3098/3128/3098 +f 2998/3027/2998 2999/3028/2999 3098/3128/3098 +f 3098/3128/3098 2999/3028/2999 3099/3129/3099 +f 2999/3028/2999 3000/3029/3000 3099/3129/3099 +f 3099/3129/3099 3000/3029/3000 3100/3130/3100 +f 3000/3029/3000 2901/3030/2901 3100/3130/3100 +f 3100/3130/3100 2901/3030/2901 3001/3131/3001 +f 3001/3031/3001 3002/3032/3002 3101/3132/3101 +f 3101/3132/3101 3002/3032/3002 3102/3133/3102 +f 3002/3032/3002 3003/3033/3003 3102/3133/3102 +f 3102/3133/3102 3003/3033/3003 3103/3134/3103 +f 3003/3033/3003 3004/3034/3004 3103/3134/3103 +f 3103/3134/3103 3004/3034/3004 3104/3135/3104 +f 3004/3034/3004 3005/3035/3005 3104/3135/3104 +f 3104/3135/3104 3005/3035/3005 3105/3136/3105 +f 3005/3035/3005 3006/3036/3006 3105/3136/3105 +f 3105/3136/3105 3006/3036/3006 3106/3137/3106 +f 3006/3036/3006 3007/3037/3007 3106/3137/3106 +f 3106/3137/3106 3007/3037/3007 3107/3138/3107 +f 3007/3037/3007 3008/3038/3008 3107/3138/3107 +f 3107/3138/3107 3008/3038/3008 3108/3139/3108 +f 3008/3038/3008 3009/3039/3009 3108/3139/3108 +f 3108/3139/3108 3009/3039/3009 3109/3140/3109 +f 3009/3039/3009 3010/3040/3010 3109/3140/3109 +f 3109/3140/3109 3010/3040/3010 3110/3141/3110 +f 3010/3040/3010 3011/3041/3011 3110/3141/3110 +f 3110/3141/3110 3011/3041/3011 3111/3142/3111 +f 3011/3041/3011 3012/3042/3012 3111/3142/3111 +f 3111/3142/3111 3012/3042/3012 3112/3143/3112 +f 3012/3042/3012 3013/3043/3013 3112/3143/3112 +f 3112/3143/3112 3013/3043/3013 3113/3144/3113 +f 3013/3043/3013 3014/3044/3014 3113/3144/3113 +f 3113/3144/3113 3014/3044/3014 3114/3145/3114 +f 3014/3044/3014 3015/3045/3015 3114/3145/3114 +f 3114/3145/3114 3015/3045/3015 3115/3146/3115 +f 3015/3045/3015 3016/3046/3016 3115/3146/3115 +f 3115/3146/3115 3016/3046/3016 3116/3147/3116 +f 3016/3046/3016 3017/3047/3017 3116/3147/3116 +f 3116/3147/3116 3017/3047/3017 3117/3148/3117 +f 3017/3047/3017 3018/3048/3018 3117/3148/3117 +f 3117/3148/3117 3018/3048/3018 3118/3149/3118 +f 3018/3048/3018 3019/3049/3019 3118/3149/3118 +f 3118/3149/3118 3019/3049/3019 3119/3150/3119 +f 3019/3049/3019 3020/3050/3020 3119/3150/3119 +f 3119/3150/3119 3020/3050/3020 3120/3151/3120 +f 3020/3050/3020 3021/3051/3021 3120/3151/3120 +f 3120/3151/3120 3021/3051/3021 3121/3152/3121 +f 3021/3051/3021 3022/3052/3022 3121/3152/3121 +f 3121/3152/3121 3022/3052/3022 3122/3153/3122 +f 3022/3052/3022 3023/3053/3023 3122/3153/3122 +f 3122/3153/3122 3023/3053/3023 3123/3154/3123 +f 3023/3053/3023 3024/3054/3024 3123/3154/3123 +f 3123/3154/3123 3024/3054/3024 3124/3155/3124 +f 3024/3054/3024 3025/3055/3025 3124/3155/3124 +f 3124/3155/3124 3025/3055/3025 3125/3156/3125 +f 3025/3055/3025 3026/3056/3026 3125/3156/3125 +f 3125/3156/3125 3026/3056/3026 3126/3157/3126 +f 3026/3056/3026 3027/3057/3027 3126/3157/3126 +f 3126/3157/3126 3027/3057/3027 3127/3158/3127 +f 3027/3057/3027 3028/3058/3028 3127/3158/3127 +f 3127/3158/3127 3028/3058/3028 3128/3159/3128 +f 3028/3058/3028 3029/3059/3029 3128/3159/3128 +f 3128/3159/3128 3029/3059/3029 3129/3160/3129 +f 3029/3059/3029 3030/3060/3030 3129/3160/3129 +f 3129/3160/3129 3030/3060/3030 3130/3161/3130 +f 3030/3060/3030 3031/3061/3031 3130/3161/3130 +f 3130/3161/3130 3031/3061/3031 3131/3162/3131 +f 3031/3061/3031 3032/3062/3032 3131/3162/3131 +f 3131/3162/3131 3032/3062/3032 3132/3163/3132 +f 3032/3062/3032 3033/3063/3033 3132/3163/3132 +f 3132/3163/3132 3033/3063/3033 3133/3164/3133 +f 3033/3063/3033 3034/3064/3034 3133/3164/3133 +f 3133/3164/3133 3034/3064/3034 3134/3165/3134 +f 3034/3064/3034 3035/3065/3035 3134/3165/3134 +f 3134/3165/3134 3035/3065/3035 3135/3166/3135 +f 3035/3065/3035 3036/3066/3036 3135/3166/3135 +f 3135/3166/3135 3036/3066/3036 3136/3167/3136 +f 3036/3066/3036 3037/3067/3037 3136/3167/3136 +f 3136/3167/3136 3037/3067/3037 3137/3168/3137 +f 3037/3067/3037 3038/3068/3038 3137/3168/3137 +f 3137/3168/3137 3038/3068/3038 3138/3169/3138 +f 3038/3068/3038 3039/3069/3039 3138/3169/3138 +f 3138/3169/3138 3039/3069/3039 3139/3170/3139 +f 3039/3069/3039 3040/3070/3040 3139/3170/3139 +f 3139/3170/3139 3040/3070/3040 3140/3171/3140 +f 3040/3070/3040 3041/3071/3041 3140/3171/3140 +f 3140/3171/3140 3041/3071/3041 3141/3172/3141 +f 3041/3071/3041 3042/3072/3042 3141/3172/3141 +f 3141/3172/3141 3042/3072/3042 3142/3173/3142 +f 3042/3072/3042 3043/3073/3043 3142/3173/3142 +f 3142/3173/3142 3043/3073/3043 3143/3174/3143 +f 3043/3073/3043 3044/3074/3044 3143/3174/3143 +f 3143/3174/3143 3044/3074/3044 3144/3175/3144 +f 3044/3074/3044 3045/3075/3045 3144/3175/3144 +f 3144/3175/3144 3045/3075/3045 3145/3176/3145 +f 3045/3075/3045 3046/3076/3046 3145/3176/3145 +f 3145/3176/3145 3046/3076/3046 3146/3177/3146 +f 3046/3076/3046 3047/3077/3047 3146/3177/3146 +f 3146/3177/3146 3047/3077/3047 3147/3178/3147 +f 3047/3077/3047 3048/3078/3048 3147/3178/3147 +f 3147/3178/3147 3048/3078/3048 3148/3179/3148 +f 3048/3078/3048 3049/3079/3049 3148/3179/3148 +f 3148/3179/3148 3049/3079/3049 3149/3180/3149 +f 3049/3079/3049 3050/3080/3050 3149/3180/3149 +f 3149/3180/3149 3050/3080/3050 3150/3181/3150 +f 3050/3080/3050 3051/3081/3051 3150/3181/3150 +f 3150/3181/3150 3051/3081/3051 3151/3182/3151 +f 3051/3081/3051 3052/3082/3052 3151/3182/3151 +f 3151/3182/3151 3052/3082/3052 3152/3183/3152 +f 3052/3082/3052 3053/3083/3053 3152/3183/3152 +f 3152/3183/3152 3053/3083/3053 3153/3184/3153 +f 3053/3083/3053 3054/3084/3054 3153/3184/3153 +f 3153/3184/3153 3054/3084/3054 3154/3185/3154 +f 3054/3084/3054 3055/3085/3055 3154/3185/3154 +f 3154/3185/3154 3055/3085/3055 3155/3186/3155 +f 3055/3085/3055 3056/3086/3056 3155/3186/3155 +f 3155/3186/3155 3056/3086/3056 3156/3187/3156 +f 3056/3086/3056 3057/3087/3057 3156/3187/3156 +f 3156/3187/3156 3057/3087/3057 3157/3188/3157 +f 3057/3087/3057 3058/3088/3058 3157/3188/3157 +f 3157/3188/3157 3058/3088/3058 3158/3189/3158 +f 3058/3088/3058 3059/3089/3059 3158/3189/3158 +f 3158/3189/3158 3059/3089/3059 3159/3190/3159 +f 3059/3089/3059 3060/3090/3060 3159/3190/3159 +f 3159/3190/3159 3060/3090/3060 3160/3191/3160 +f 3060/3090/3060 3061/3091/3061 3160/3191/3160 +f 3160/3191/3160 3061/3091/3061 3161/3192/3161 +f 3061/3091/3061 3062/3092/3062 3161/3192/3161 +f 3161/3192/3161 3062/3092/3062 3162/3193/3162 +f 3062/3092/3062 3063/3093/3063 3162/3193/3162 +f 3162/3193/3162 3063/3093/3063 3163/3194/3163 +f 3063/3093/3063 3064/3094/3064 3163/3194/3163 +f 3163/3194/3163 3064/3094/3064 3164/3195/3164 +f 3064/3094/3064 3065/3095/3065 3164/3195/3164 +f 3164/3195/3164 3065/3095/3065 3165/3196/3165 +f 3065/3095/3065 3066/3096/3066 3165/3196/3165 +f 3165/3196/3165 3066/3096/3066 3166/3197/3166 +f 3066/3096/3066 3067/3097/3067 3166/3197/3166 +f 3166/3197/3166 3067/3097/3067 3167/3198/3167 +f 3067/3097/3067 3068/3098/3068 3167/3198/3167 +f 3167/3198/3167 3068/3098/3068 3168/3199/3168 +f 3068/3098/3068 3069/3099/3069 3168/3199/3168 +f 3168/3199/3168 3069/3099/3069 3169/3200/3169 +f 3069/3099/3069 3070/3100/3070 3169/3200/3169 +f 3169/3200/3169 3070/3100/3070 3170/3201/3170 +f 3070/3100/3070 3071/3101/3071 3170/3201/3170 +f 3170/3201/3170 3071/3101/3071 3171/3202/3171 +f 3071/3101/3071 3072/3102/3072 3171/3202/3171 +f 3171/3202/3171 3072/3102/3072 3172/3203/3172 +f 3072/3102/3072 3073/3103/3073 3172/3203/3172 +f 3172/3203/3172 3073/3103/3073 3173/3204/3173 +f 3073/3103/3073 3074/3104/3074 3173/3204/3173 +f 3173/3204/3173 3074/3104/3074 3174/3205/3174 +f 3074/3104/3074 3075/3105/3075 3174/3205/3174 +f 3174/3205/3174 3075/3105/3075 3175/3206/3175 +f 3075/3105/3075 3076/3106/3076 3175/3206/3175 +f 3175/3206/3175 3076/3106/3076 3176/3207/3176 +f 3076/3106/3076 3077/3107/3077 3176/3207/3176 +f 3176/3207/3176 3077/3107/3077 3177/3208/3177 +f 3077/3107/3077 3078/3108/3078 3177/3208/3177 +f 3177/3208/3177 3078/3108/3078 3178/3209/3178 +f 3078/3108/3078 3079/3109/3079 3178/3209/3178 +f 3178/3209/3178 3079/3109/3079 3179/3210/3179 +f 3079/3109/3079 3080/3110/3080 3179/3210/3179 +f 3179/3210/3179 3080/3110/3080 3180/3211/3180 +f 3080/3110/3080 3081/3111/3081 3180/3211/3180 +f 3180/3211/3180 3081/3111/3081 3181/3212/3181 +f 3081/3111/3081 3082/3112/3082 3181/3212/3181 +f 3181/3212/3181 3082/3112/3082 3182/3213/3182 +f 3082/3112/3082 3083/3113/3083 3182/3213/3182 +f 3182/3213/3182 3083/3113/3083 3183/3214/3183 +f 3083/3113/3083 3084/3114/3084 3183/3214/3183 +f 3183/3214/3183 3084/3114/3084 3184/3215/3184 +f 3084/3114/3084 3085/3115/3085 3184/3215/3184 +f 3184/3215/3184 3085/3115/3085 3185/3216/3185 +f 3085/3115/3085 3086/3116/3086 3185/3216/3185 +f 3185/3216/3185 3086/3116/3086 3186/3217/3186 +f 3086/3116/3086 3087/3117/3087 3186/3217/3186 +f 3186/3217/3186 3087/3117/3087 3187/3218/3187 +f 3087/3117/3087 3088/3118/3088 3187/3218/3187 +f 3187/3218/3187 3088/3118/3088 3188/3219/3188 +f 3088/3118/3088 3089/3119/3089 3188/3219/3188 +f 3188/3219/3188 3089/3119/3089 3189/3220/3189 +f 3089/3119/3089 3090/3120/3090 3189/3220/3189 +f 3189/3220/3189 3090/3120/3090 3190/3221/3190 +f 3090/3120/3090 3091/3121/3091 3190/3221/3190 +f 3190/3221/3190 3091/3121/3091 3191/3222/3191 +f 3091/3121/3091 3092/3122/3092 3191/3222/3191 +f 3191/3222/3191 3092/3122/3092 3192/3223/3192 +f 3092/3122/3092 3093/3123/3093 3192/3223/3192 +f 3192/3223/3192 3093/3123/3093 3193/3224/3193 +f 3093/3123/3093 3094/3124/3094 3193/3224/3193 +f 3193/3224/3193 3094/3124/3094 3194/3225/3194 +f 3094/3124/3094 3095/3125/3095 3194/3225/3194 +f 3194/3225/3194 3095/3125/3095 3195/3226/3195 +f 3095/3125/3095 3096/3126/3096 3195/3226/3195 +f 3195/3226/3195 3096/3126/3096 3196/3227/3196 +f 3096/3126/3096 3097/3127/3097 3196/3227/3196 +f 3196/3227/3196 3097/3127/3097 3197/3228/3197 +f 3097/3127/3097 3098/3128/3098 3197/3228/3197 +f 3197/3228/3197 3098/3128/3098 3198/3229/3198 +f 3098/3128/3098 3099/3129/3099 3198/3229/3198 +f 3198/3229/3198 3099/3129/3099 3199/3230/3199 +f 3099/3129/3099 3100/3130/3100 3199/3230/3199 +f 3199/3230/3199 3100/3130/3100 3200/3231/3200 +f 3100/3130/3100 3001/3131/3001 3200/3231/3200 +f 3200/3231/3200 3001/3131/3001 3101/3232/3101 +f 3101/3132/3101 3102/3133/3102 3201/3233/3201 +f 3201/3233/3201 3102/3133/3102 3202/3234/3202 +f 3102/3133/3102 3103/3134/3103 3202/3234/3202 +f 3202/3234/3202 3103/3134/3103 3203/3235/3203 +f 3103/3134/3103 3104/3135/3104 3203/3235/3203 +f 3203/3235/3203 3104/3135/3104 3204/3236/3204 +f 3104/3135/3104 3105/3136/3105 3204/3236/3204 +f 3204/3236/3204 3105/3136/3105 3205/3237/3205 +f 3105/3136/3105 3106/3137/3106 3205/3237/3205 +f 3205/3237/3205 3106/3137/3106 3206/3238/3206 +f 3106/3137/3106 3107/3138/3107 3206/3238/3206 +f 3206/3238/3206 3107/3138/3107 3207/3239/3207 +f 3107/3138/3107 3108/3139/3108 3207/3239/3207 +f 3207/3239/3207 3108/3139/3108 3208/3240/3208 +f 3108/3139/3108 3109/3140/3109 3208/3240/3208 +f 3208/3240/3208 3109/3140/3109 3209/3241/3209 +f 3109/3140/3109 3110/3141/3110 3209/3241/3209 +f 3209/3241/3209 3110/3141/3110 3210/3242/3210 +f 3110/3141/3110 3111/3142/3111 3210/3242/3210 +f 3210/3242/3210 3111/3142/3111 3211/3243/3211 +f 3111/3142/3111 3112/3143/3112 3211/3243/3211 +f 3211/3243/3211 3112/3143/3112 3212/3244/3212 +f 3112/3143/3112 3113/3144/3113 3212/3244/3212 +f 3212/3244/3212 3113/3144/3113 3213/3245/3213 +f 3113/3144/3113 3114/3145/3114 3213/3245/3213 +f 3213/3245/3213 3114/3145/3114 3214/3246/3214 +f 3114/3145/3114 3115/3146/3115 3214/3246/3214 +f 3214/3246/3214 3115/3146/3115 3215/3247/3215 +f 3115/3146/3115 3116/3147/3116 3215/3247/3215 +f 3215/3247/3215 3116/3147/3116 3216/3248/3216 +f 3116/3147/3116 3117/3148/3117 3216/3248/3216 +f 3216/3248/3216 3117/3148/3117 3217/3249/3217 +f 3117/3148/3117 3118/3149/3118 3217/3249/3217 +f 3217/3249/3217 3118/3149/3118 3218/3250/3218 +f 3118/3149/3118 3119/3150/3119 3218/3250/3218 +f 3218/3250/3218 3119/3150/3119 3219/3251/3219 +f 3119/3150/3119 3120/3151/3120 3219/3251/3219 +f 3219/3251/3219 3120/3151/3120 3220/3252/3220 +f 3120/3151/3120 3121/3152/3121 3220/3252/3220 +f 3220/3252/3220 3121/3152/3121 3221/3253/3221 +f 3121/3152/3121 3122/3153/3122 3221/3253/3221 +f 3221/3253/3221 3122/3153/3122 3222/3254/3222 +f 3122/3153/3122 3123/3154/3123 3222/3254/3222 +f 3222/3254/3222 3123/3154/3123 3223/3255/3223 +f 3123/3154/3123 3124/3155/3124 3223/3255/3223 +f 3223/3255/3223 3124/3155/3124 3224/3256/3224 +f 3124/3155/3124 3125/3156/3125 3224/3256/3224 +f 3224/3256/3224 3125/3156/3125 3225/3257/3225 +f 3125/3156/3125 3126/3157/3126 3225/3257/3225 +f 3225/3257/3225 3126/3157/3126 3226/3258/3226 +f 3126/3157/3126 3127/3158/3127 3226/3258/3226 +f 3226/3258/3226 3127/3158/3127 3227/3259/3227 +f 3127/3158/3127 3128/3159/3128 3227/3259/3227 +f 3227/3259/3227 3128/3159/3128 3228/3260/3228 +f 3128/3159/3128 3129/3160/3129 3228/3260/3228 +f 3228/3260/3228 3129/3160/3129 3229/3261/3229 +f 3129/3160/3129 3130/3161/3130 3229/3261/3229 +f 3229/3261/3229 3130/3161/3130 3230/3262/3230 +f 3130/3161/3130 3131/3162/3131 3230/3262/3230 +f 3230/3262/3230 3131/3162/3131 3231/3263/3231 +f 3131/3162/3131 3132/3163/3132 3231/3263/3231 +f 3231/3263/3231 3132/3163/3132 3232/3264/3232 +f 3132/3163/3132 3133/3164/3133 3232/3264/3232 +f 3232/3264/3232 3133/3164/3133 3233/3265/3233 +f 3133/3164/3133 3134/3165/3134 3233/3265/3233 +f 3233/3265/3233 3134/3165/3134 3234/3266/3234 +f 3134/3165/3134 3135/3166/3135 3234/3266/3234 +f 3234/3266/3234 3135/3166/3135 3235/3267/3235 +f 3135/3166/3135 3136/3167/3136 3235/3267/3235 +f 3235/3267/3235 3136/3167/3136 3236/3268/3236 +f 3136/3167/3136 3137/3168/3137 3236/3268/3236 +f 3236/3268/3236 3137/3168/3137 3237/3269/3237 +f 3137/3168/3137 3138/3169/3138 3237/3269/3237 +f 3237/3269/3237 3138/3169/3138 3238/3270/3238 +f 3138/3169/3138 3139/3170/3139 3238/3270/3238 +f 3238/3270/3238 3139/3170/3139 3239/3271/3239 +f 3139/3170/3139 3140/3171/3140 3239/3271/3239 +f 3239/3271/3239 3140/3171/3140 3240/3272/3240 +f 3140/3171/3140 3141/3172/3141 3240/3272/3240 +f 3240/3272/3240 3141/3172/3141 3241/3273/3241 +f 3141/3172/3141 3142/3173/3142 3241/3273/3241 +f 3241/3273/3241 3142/3173/3142 3242/3274/3242 +f 3142/3173/3142 3143/3174/3143 3242/3274/3242 +f 3242/3274/3242 3143/3174/3143 3243/3275/3243 +f 3143/3174/3143 3144/3175/3144 3243/3275/3243 +f 3243/3275/3243 3144/3175/3144 3244/3276/3244 +f 3144/3175/3144 3145/3176/3145 3244/3276/3244 +f 3244/3276/3244 3145/3176/3145 3245/3277/3245 +f 3145/3176/3145 3146/3177/3146 3245/3277/3245 +f 3245/3277/3245 3146/3177/3146 3246/3278/3246 +f 3146/3177/3146 3147/3178/3147 3246/3278/3246 +f 3246/3278/3246 3147/3178/3147 3247/3279/3247 +f 3147/3178/3147 3148/3179/3148 3247/3279/3247 +f 3247/3279/3247 3148/3179/3148 3248/3280/3248 +f 3148/3179/3148 3149/3180/3149 3248/3280/3248 +f 3248/3280/3248 3149/3180/3149 3249/3281/3249 +f 3149/3180/3149 3150/3181/3150 3249/3281/3249 +f 3249/3281/3249 3150/3181/3150 3250/3282/3250 +f 3150/3181/3150 3151/3182/3151 3250/3282/3250 +f 3250/3282/3250 3151/3182/3151 3251/3283/3251 +f 3151/3182/3151 3152/3183/3152 3251/3283/3251 +f 3251/3283/3251 3152/3183/3152 3252/3284/3252 +f 3152/3183/3152 3153/3184/3153 3252/3284/3252 +f 3252/3284/3252 3153/3184/3153 3253/3285/3253 +f 3153/3184/3153 3154/3185/3154 3253/3285/3253 +f 3253/3285/3253 3154/3185/3154 3254/3286/3254 +f 3154/3185/3154 3155/3186/3155 3254/3286/3254 +f 3254/3286/3254 3155/3186/3155 3255/3287/3255 +f 3155/3186/3155 3156/3187/3156 3255/3287/3255 +f 3255/3287/3255 3156/3187/3156 3256/3288/3256 +f 3156/3187/3156 3157/3188/3157 3256/3288/3256 +f 3256/3288/3256 3157/3188/3157 3257/3289/3257 +f 3157/3188/3157 3158/3189/3158 3257/3289/3257 +f 3257/3289/3257 3158/3189/3158 3258/3290/3258 +f 3158/3189/3158 3159/3190/3159 3258/3290/3258 +f 3258/3290/3258 3159/3190/3159 3259/3291/3259 +f 3159/3190/3159 3160/3191/3160 3259/3291/3259 +f 3259/3291/3259 3160/3191/3160 3260/3292/3260 +f 3160/3191/3160 3161/3192/3161 3260/3292/3260 +f 3260/3292/3260 3161/3192/3161 3261/3293/3261 +f 3161/3192/3161 3162/3193/3162 3261/3293/3261 +f 3261/3293/3261 3162/3193/3162 3262/3294/3262 +f 3162/3193/3162 3163/3194/3163 3262/3294/3262 +f 3262/3294/3262 3163/3194/3163 3263/3295/3263 +f 3163/3194/3163 3164/3195/3164 3263/3295/3263 +f 3263/3295/3263 3164/3195/3164 3264/3296/3264 +f 3164/3195/3164 3165/3196/3165 3264/3296/3264 +f 3264/3296/3264 3165/3196/3165 3265/3297/3265 +f 3165/3196/3165 3166/3197/3166 3265/3297/3265 +f 3265/3297/3265 3166/3197/3166 3266/3298/3266 +f 3166/3197/3166 3167/3198/3167 3266/3298/3266 +f 3266/3298/3266 3167/3198/3167 3267/3299/3267 +f 3167/3198/3167 3168/3199/3168 3267/3299/3267 +f 3267/3299/3267 3168/3199/3168 3268/3300/3268 +f 3168/3199/3168 3169/3200/3169 3268/3300/3268 +f 3268/3300/3268 3169/3200/3169 3269/3301/3269 +f 3169/3200/3169 3170/3201/3170 3269/3301/3269 +f 3269/3301/3269 3170/3201/3170 3270/3302/3270 +f 3170/3201/3170 3171/3202/3171 3270/3302/3270 +f 3270/3302/3270 3171/3202/3171 3271/3303/3271 +f 3171/3202/3171 3172/3203/3172 3271/3303/3271 +f 3271/3303/3271 3172/3203/3172 3272/3304/3272 +f 3172/3203/3172 3173/3204/3173 3272/3304/3272 +f 3272/3304/3272 3173/3204/3173 3273/3305/3273 +f 3173/3204/3173 3174/3205/3174 3273/3305/3273 +f 3273/3305/3273 3174/3205/3174 3274/3306/3274 +f 3174/3205/3174 3175/3206/3175 3274/3306/3274 +f 3274/3306/3274 3175/3206/3175 3275/3307/3275 +f 3175/3206/3175 3176/3207/3176 3275/3307/3275 +f 3275/3307/3275 3176/3207/3176 3276/3308/3276 +f 3176/3207/3176 3177/3208/3177 3276/3308/3276 +f 3276/3308/3276 3177/3208/3177 3277/3309/3277 +f 3177/3208/3177 3178/3209/3178 3277/3309/3277 +f 3277/3309/3277 3178/3209/3178 3278/3310/3278 +f 3178/3209/3178 3179/3210/3179 3278/3310/3278 +f 3278/3310/3278 3179/3210/3179 3279/3311/3279 +f 3179/3210/3179 3180/3211/3180 3279/3311/3279 +f 3279/3311/3279 3180/3211/3180 3280/3312/3280 +f 3180/3211/3180 3181/3212/3181 3280/3312/3280 +f 3280/3312/3280 3181/3212/3181 3281/3313/3281 +f 3181/3212/3181 3182/3213/3182 3281/3313/3281 +f 3281/3313/3281 3182/3213/3182 3282/3314/3282 +f 3182/3213/3182 3183/3214/3183 3282/3314/3282 +f 3282/3314/3282 3183/3214/3183 3283/3315/3283 +f 3183/3214/3183 3184/3215/3184 3283/3315/3283 +f 3283/3315/3283 3184/3215/3184 3284/3316/3284 +f 3184/3215/3184 3185/3216/3185 3284/3316/3284 +f 3284/3316/3284 3185/3216/3185 3285/3317/3285 +f 3185/3216/3185 3186/3217/3186 3285/3317/3285 +f 3285/3317/3285 3186/3217/3186 3286/3318/3286 +f 3186/3217/3186 3187/3218/3187 3286/3318/3286 +f 3286/3318/3286 3187/3218/3187 3287/3319/3287 +f 3187/3218/3187 3188/3219/3188 3287/3319/3287 +f 3287/3319/3287 3188/3219/3188 3288/3320/3288 +f 3188/3219/3188 3189/3220/3189 3288/3320/3288 +f 3288/3320/3288 3189/3220/3189 3289/3321/3289 +f 3189/3220/3189 3190/3221/3190 3289/3321/3289 +f 3289/3321/3289 3190/3221/3190 3290/3322/3290 +f 3190/3221/3190 3191/3222/3191 3290/3322/3290 +f 3290/3322/3290 3191/3222/3191 3291/3323/3291 +f 3191/3222/3191 3192/3223/3192 3291/3323/3291 +f 3291/3323/3291 3192/3223/3192 3292/3324/3292 +f 3192/3223/3192 3193/3224/3193 3292/3324/3292 +f 3292/3324/3292 3193/3224/3193 3293/3325/3293 +f 3193/3224/3193 3194/3225/3194 3293/3325/3293 +f 3293/3325/3293 3194/3225/3194 3294/3326/3294 +f 3194/3225/3194 3195/3226/3195 3294/3326/3294 +f 3294/3326/3294 3195/3226/3195 3295/3327/3295 +f 3195/3226/3195 3196/3227/3196 3295/3327/3295 +f 3295/3327/3295 3196/3227/3196 3296/3328/3296 +f 3196/3227/3196 3197/3228/3197 3296/3328/3296 +f 3296/3328/3296 3197/3228/3197 3297/3329/3297 +f 3197/3228/3197 3198/3229/3198 3297/3329/3297 +f 3297/3329/3297 3198/3229/3198 3298/3330/3298 +f 3198/3229/3198 3199/3230/3199 3298/3330/3298 +f 3298/3330/3298 3199/3230/3199 3299/3331/3299 +f 3199/3230/3199 3200/3231/3200 3299/3331/3299 +f 3299/3331/3299 3200/3231/3200 3300/3332/3300 +f 3200/3231/3200 3101/3232/3101 3300/3332/3300 +f 3300/3332/3300 3101/3232/3101 3201/3333/3201 +f 3201/3233/3201 3202/3234/3202 3301/3334/3301 +f 3301/3334/3301 3202/3234/3202 3302/3335/3302 +f 3202/3234/3202 3203/3235/3203 3302/3335/3302 +f 3302/3335/3302 3203/3235/3203 3303/3336/3303 +f 3203/3235/3203 3204/3236/3204 3303/3336/3303 +f 3303/3336/3303 3204/3236/3204 3304/3337/3304 +f 3204/3236/3204 3205/3237/3205 3304/3337/3304 +f 3304/3337/3304 3205/3237/3205 3305/3338/3305 +f 3205/3237/3205 3206/3238/3206 3305/3338/3305 +f 3305/3338/3305 3206/3238/3206 3306/3339/3306 +f 3206/3238/3206 3207/3239/3207 3306/3339/3306 +f 3306/3339/3306 3207/3239/3207 3307/3340/3307 +f 3207/3239/3207 3208/3240/3208 3307/3340/3307 +f 3307/3340/3307 3208/3240/3208 3308/3341/3308 +f 3208/3240/3208 3209/3241/3209 3308/3341/3308 +f 3308/3341/3308 3209/3241/3209 3309/3342/3309 +f 3209/3241/3209 3210/3242/3210 3309/3342/3309 +f 3309/3342/3309 3210/3242/3210 3310/3343/3310 +f 3210/3242/3210 3211/3243/3211 3310/3343/3310 +f 3310/3343/3310 3211/3243/3211 3311/3344/3311 +f 3211/3243/3211 3212/3244/3212 3311/3344/3311 +f 3311/3344/3311 3212/3244/3212 3312/3345/3312 +f 3212/3244/3212 3213/3245/3213 3312/3345/3312 +f 3312/3345/3312 3213/3245/3213 3313/3346/3313 +f 3213/3245/3213 3214/3246/3214 3313/3346/3313 +f 3313/3346/3313 3214/3246/3214 3314/3347/3314 +f 3214/3246/3214 3215/3247/3215 3314/3347/3314 +f 3314/3347/3314 3215/3247/3215 3315/3348/3315 +f 3215/3247/3215 3216/3248/3216 3315/3348/3315 +f 3315/3348/3315 3216/3248/3216 3316/3349/3316 +f 3216/3248/3216 3217/3249/3217 3316/3349/3316 +f 3316/3349/3316 3217/3249/3217 3317/3350/3317 +f 3217/3249/3217 3218/3250/3218 3317/3350/3317 +f 3317/3350/3317 3218/3250/3218 3318/3351/3318 +f 3218/3250/3218 3219/3251/3219 3318/3351/3318 +f 3318/3351/3318 3219/3251/3219 3319/3352/3319 +f 3219/3251/3219 3220/3252/3220 3319/3352/3319 +f 3319/3352/3319 3220/3252/3220 3320/3353/3320 +f 3220/3252/3220 3221/3253/3221 3320/3353/3320 +f 3320/3353/3320 3221/3253/3221 3321/3354/3321 +f 3221/3253/3221 3222/3254/3222 3321/3354/3321 +f 3321/3354/3321 3222/3254/3222 3322/3355/3322 +f 3222/3254/3222 3223/3255/3223 3322/3355/3322 +f 3322/3355/3322 3223/3255/3223 3323/3356/3323 +f 3223/3255/3223 3224/3256/3224 3323/3356/3323 +f 3323/3356/3323 3224/3256/3224 3324/3357/3324 +f 3224/3256/3224 3225/3257/3225 3324/3357/3324 +f 3324/3357/3324 3225/3257/3225 3325/3358/3325 +f 3225/3257/3225 3226/3258/3226 3325/3358/3325 +f 3325/3358/3325 3226/3258/3226 3326/3359/3326 +f 3226/3258/3226 3227/3259/3227 3326/3359/3326 +f 3326/3359/3326 3227/3259/3227 3327/3360/3327 +f 3227/3259/3227 3228/3260/3228 3327/3360/3327 +f 3327/3360/3327 3228/3260/3228 3328/3361/3328 +f 3228/3260/3228 3229/3261/3229 3328/3361/3328 +f 3328/3361/3328 3229/3261/3229 3329/3362/3329 +f 3229/3261/3229 3230/3262/3230 3329/3362/3329 +f 3329/3362/3329 3230/3262/3230 3330/3363/3330 +f 3230/3262/3230 3231/3263/3231 3330/3363/3330 +f 3330/3363/3330 3231/3263/3231 3331/3364/3331 +f 3231/3263/3231 3232/3264/3232 3331/3364/3331 +f 3331/3364/3331 3232/3264/3232 3332/3365/3332 +f 3232/3264/3232 3233/3265/3233 3332/3365/3332 +f 3332/3365/3332 3233/3265/3233 3333/3366/3333 +f 3233/3265/3233 3234/3266/3234 3333/3366/3333 +f 3333/3366/3333 3234/3266/3234 3334/3367/3334 +f 3234/3266/3234 3235/3267/3235 3334/3367/3334 +f 3334/3367/3334 3235/3267/3235 3335/3368/3335 +f 3235/3267/3235 3236/3268/3236 3335/3368/3335 +f 3335/3368/3335 3236/3268/3236 3336/3369/3336 +f 3236/3268/3236 3237/3269/3237 3336/3369/3336 +f 3336/3369/3336 3237/3269/3237 3337/3370/3337 +f 3237/3269/3237 3238/3270/3238 3337/3370/3337 +f 3337/3370/3337 3238/3270/3238 3338/3371/3338 +f 3238/3270/3238 3239/3271/3239 3338/3371/3338 +f 3338/3371/3338 3239/3271/3239 3339/3372/3339 +f 3239/3271/3239 3240/3272/3240 3339/3372/3339 +f 3339/3372/3339 3240/3272/3240 3340/3373/3340 +f 3240/3272/3240 3241/3273/3241 3340/3373/3340 +f 3340/3373/3340 3241/3273/3241 3341/3374/3341 +f 3241/3273/3241 3242/3274/3242 3341/3374/3341 +f 3341/3374/3341 3242/3274/3242 3342/3375/3342 +f 3242/3274/3242 3243/3275/3243 3342/3375/3342 +f 3342/3375/3342 3243/3275/3243 3343/3376/3343 +f 3243/3275/3243 3244/3276/3244 3343/3376/3343 +f 3343/3376/3343 3244/3276/3244 3344/3377/3344 +f 3244/3276/3244 3245/3277/3245 3344/3377/3344 +f 3344/3377/3344 3245/3277/3245 3345/3378/3345 +f 3245/3277/3245 3246/3278/3246 3345/3378/3345 +f 3345/3378/3345 3246/3278/3246 3346/3379/3346 +f 3246/3278/3246 3247/3279/3247 3346/3379/3346 +f 3346/3379/3346 3247/3279/3247 3347/3380/3347 +f 3247/3279/3247 3248/3280/3248 3347/3380/3347 +f 3347/3380/3347 3248/3280/3248 3348/3381/3348 +f 3248/3280/3248 3249/3281/3249 3348/3381/3348 +f 3348/3381/3348 3249/3281/3249 3349/3382/3349 +f 3249/3281/3249 3250/3282/3250 3349/3382/3349 +f 3349/3382/3349 3250/3282/3250 3350/3383/3350 +f 3250/3282/3250 3251/3283/3251 3350/3383/3350 +f 3350/3383/3350 3251/3283/3251 3351/3384/3351 +f 3251/3283/3251 3252/3284/3252 3351/3384/3351 +f 3351/3384/3351 3252/3284/3252 3352/3385/3352 +f 3252/3284/3252 3253/3285/3253 3352/3385/3352 +f 3352/3385/3352 3253/3285/3253 3353/3386/3353 +f 3253/3285/3253 3254/3286/3254 3353/3386/3353 +f 3353/3386/3353 3254/3286/3254 3354/3387/3354 +f 3254/3286/3254 3255/3287/3255 3354/3387/3354 +f 3354/3387/3354 3255/3287/3255 3355/3388/3355 +f 3255/3287/3255 3256/3288/3256 3355/3388/3355 +f 3355/3388/3355 3256/3288/3256 3356/3389/3356 +f 3256/3288/3256 3257/3289/3257 3356/3389/3356 +f 3356/3389/3356 3257/3289/3257 3357/3390/3357 +f 3257/3289/3257 3258/3290/3258 3357/3390/3357 +f 3357/3390/3357 3258/3290/3258 3358/3391/3358 +f 3258/3290/3258 3259/3291/3259 3358/3391/3358 +f 3358/3391/3358 3259/3291/3259 3359/3392/3359 +f 3259/3291/3259 3260/3292/3260 3359/3392/3359 +f 3359/3392/3359 3260/3292/3260 3360/3393/3360 +f 3260/3292/3260 3261/3293/3261 3360/3393/3360 +f 3360/3393/3360 3261/3293/3261 3361/3394/3361 +f 3261/3293/3261 3262/3294/3262 3361/3394/3361 +f 3361/3394/3361 3262/3294/3262 3362/3395/3362 +f 3262/3294/3262 3263/3295/3263 3362/3395/3362 +f 3362/3395/3362 3263/3295/3263 3363/3396/3363 +f 3263/3295/3263 3264/3296/3264 3363/3396/3363 +f 3363/3396/3363 3264/3296/3264 3364/3397/3364 +f 3264/3296/3264 3265/3297/3265 3364/3397/3364 +f 3364/3397/3364 3265/3297/3265 3365/3398/3365 +f 3265/3297/3265 3266/3298/3266 3365/3398/3365 +f 3365/3398/3365 3266/3298/3266 3366/3399/3366 +f 3266/3298/3266 3267/3299/3267 3366/3399/3366 +f 3366/3399/3366 3267/3299/3267 3367/3400/3367 +f 3267/3299/3267 3268/3300/3268 3367/3400/3367 +f 3367/3400/3367 3268/3300/3268 3368/3401/3368 +f 3268/3300/3268 3269/3301/3269 3368/3401/3368 +f 3368/3401/3368 3269/3301/3269 3369/3402/3369 +f 3269/3301/3269 3270/3302/3270 3369/3402/3369 +f 3369/3402/3369 3270/3302/3270 3370/3403/3370 +f 3270/3302/3270 3271/3303/3271 3370/3403/3370 +f 3370/3403/3370 3271/3303/3271 3371/3404/3371 +f 3271/3303/3271 3272/3304/3272 3371/3404/3371 +f 3371/3404/3371 3272/3304/3272 3372/3405/3372 +f 3272/3304/3272 3273/3305/3273 3372/3405/3372 +f 3372/3405/3372 3273/3305/3273 3373/3406/3373 +f 3273/3305/3273 3274/3306/3274 3373/3406/3373 +f 3373/3406/3373 3274/3306/3274 3374/3407/3374 +f 3274/3306/3274 3275/3307/3275 3374/3407/3374 +f 3374/3407/3374 3275/3307/3275 3375/3408/3375 +f 3275/3307/3275 3276/3308/3276 3375/3408/3375 +f 3375/3408/3375 3276/3308/3276 3376/3409/3376 +f 3276/3308/3276 3277/3309/3277 3376/3409/3376 +f 3376/3409/3376 3277/3309/3277 3377/3410/3377 +f 3277/3309/3277 3278/3310/3278 3377/3410/3377 +f 3377/3410/3377 3278/3310/3278 3378/3411/3378 +f 3278/3310/3278 3279/3311/3279 3378/3411/3378 +f 3378/3411/3378 3279/3311/3279 3379/3412/3379 +f 3279/3311/3279 3280/3312/3280 3379/3412/3379 +f 3379/3412/3379 3280/3312/3280 3380/3413/3380 +f 3280/3312/3280 3281/3313/3281 3380/3413/3380 +f 3380/3413/3380 3281/3313/3281 3381/3414/3381 +f 3281/3313/3281 3282/3314/3282 3381/3414/3381 +f 3381/3414/3381 3282/3314/3282 3382/3415/3382 +f 3282/3314/3282 3283/3315/3283 3382/3415/3382 +f 3382/3415/3382 3283/3315/3283 3383/3416/3383 +f 3283/3315/3283 3284/3316/3284 3383/3416/3383 +f 3383/3416/3383 3284/3316/3284 3384/3417/3384 +f 3284/3316/3284 3285/3317/3285 3384/3417/3384 +f 3384/3417/3384 3285/3317/3285 3385/3418/3385 +f 3285/3317/3285 3286/3318/3286 3385/3418/3385 +f 3385/3418/3385 3286/3318/3286 3386/3419/3386 +f 3286/3318/3286 3287/3319/3287 3386/3419/3386 +f 3386/3419/3386 3287/3319/3287 3387/3420/3387 +f 3287/3319/3287 3288/3320/3288 3387/3420/3387 +f 3387/3420/3387 3288/3320/3288 3388/3421/3388 +f 3288/3320/3288 3289/3321/3289 3388/3421/3388 +f 3388/3421/3388 3289/3321/3289 3389/3422/3389 +f 3289/3321/3289 3290/3322/3290 3389/3422/3389 +f 3389/3422/3389 3290/3322/3290 3390/3423/3390 +f 3290/3322/3290 3291/3323/3291 3390/3423/3390 +f 3390/3423/3390 3291/3323/3291 3391/3424/3391 +f 3291/3323/3291 3292/3324/3292 3391/3424/3391 +f 3391/3424/3391 3292/3324/3292 3392/3425/3392 +f 3292/3324/3292 3293/3325/3293 3392/3425/3392 +f 3392/3425/3392 3293/3325/3293 3393/3426/3393 +f 3293/3325/3293 3294/3326/3294 3393/3426/3393 +f 3393/3426/3393 3294/3326/3294 3394/3427/3394 +f 3294/3326/3294 3295/3327/3295 3394/3427/3394 +f 3394/3427/3394 3295/3327/3295 3395/3428/3395 +f 3295/3327/3295 3296/3328/3296 3395/3428/3395 +f 3395/3428/3395 3296/3328/3296 3396/3429/3396 +f 3296/3328/3296 3297/3329/3297 3396/3429/3396 +f 3396/3429/3396 3297/3329/3297 3397/3430/3397 +f 3297/3329/3297 3298/3330/3298 3397/3430/3397 +f 3397/3430/3397 3298/3330/3298 3398/3431/3398 +f 3298/3330/3298 3299/3331/3299 3398/3431/3398 +f 3398/3431/3398 3299/3331/3299 3399/3432/3399 +f 3299/3331/3299 3300/3332/3300 3399/3432/3399 +f 3399/3432/3399 3300/3332/3300 3400/3433/3400 +f 3300/3332/3300 3201/3333/3201 3400/3433/3400 +f 3400/3433/3400 3201/3333/3201 3301/3434/3301 +f 3301/3334/3301 3302/3335/3302 3401/3435/3401 +f 3401/3435/3401 3302/3335/3302 3402/3436/3402 +f 3302/3335/3302 3303/3336/3303 3402/3436/3402 +f 3402/3436/3402 3303/3336/3303 3403/3437/3403 +f 3303/3336/3303 3304/3337/3304 3403/3437/3403 +f 3403/3437/3403 3304/3337/3304 3404/3438/3404 +f 3304/3337/3304 3305/3338/3305 3404/3438/3404 +f 3404/3438/3404 3305/3338/3305 3405/3439/3405 +f 3305/3338/3305 3306/3339/3306 3405/3439/3405 +f 3405/3439/3405 3306/3339/3306 3406/3440/3406 +f 3306/3339/3306 3307/3340/3307 3406/3440/3406 +f 3406/3440/3406 3307/3340/3307 3407/3441/3407 +f 3307/3340/3307 3308/3341/3308 3407/3441/3407 +f 3407/3441/3407 3308/3341/3308 3408/3442/3408 +f 3308/3341/3308 3309/3342/3309 3408/3442/3408 +f 3408/3442/3408 3309/3342/3309 3409/3443/3409 +f 3309/3342/3309 3310/3343/3310 3409/3443/3409 +f 3409/3443/3409 3310/3343/3310 3410/3444/3410 +f 3310/3343/3310 3311/3344/3311 3410/3444/3410 +f 3410/3444/3410 3311/3344/3311 3411/3445/3411 +f 3311/3344/3311 3312/3345/3312 3411/3445/3411 +f 3411/3445/3411 3312/3345/3312 3412/3446/3412 +f 3312/3345/3312 3313/3346/3313 3412/3446/3412 +f 3412/3446/3412 3313/3346/3313 3413/3447/3413 +f 3313/3346/3313 3314/3347/3314 3413/3447/3413 +f 3413/3447/3413 3314/3347/3314 3414/3448/3414 +f 3314/3347/3314 3315/3348/3315 3414/3448/3414 +f 3414/3448/3414 3315/3348/3315 3415/3449/3415 +f 3315/3348/3315 3316/3349/3316 3415/3449/3415 +f 3415/3449/3415 3316/3349/3316 3416/3450/3416 +f 3316/3349/3316 3317/3350/3317 3416/3450/3416 +f 3416/3450/3416 3317/3350/3317 3417/3451/3417 +f 3317/3350/3317 3318/3351/3318 3417/3451/3417 +f 3417/3451/3417 3318/3351/3318 3418/3452/3418 +f 3318/3351/3318 3319/3352/3319 3418/3452/3418 +f 3418/3452/3418 3319/3352/3319 3419/3453/3419 +f 3319/3352/3319 3320/3353/3320 3419/3453/3419 +f 3419/3453/3419 3320/3353/3320 3420/3454/3420 +f 3320/3353/3320 3321/3354/3321 3420/3454/3420 +f 3420/3454/3420 3321/3354/3321 3421/3455/3421 +f 3321/3354/3321 3322/3355/3322 3421/3455/3421 +f 3421/3455/3421 3322/3355/3322 3422/3456/3422 +f 3322/3355/3322 3323/3356/3323 3422/3456/3422 +f 3422/3456/3422 3323/3356/3323 3423/3457/3423 +f 3323/3356/3323 3324/3357/3324 3423/3457/3423 +f 3423/3457/3423 3324/3357/3324 3424/3458/3424 +f 3324/3357/3324 3325/3358/3325 3424/3458/3424 +f 3424/3458/3424 3325/3358/3325 3425/3459/3425 +f 3325/3358/3325 3326/3359/3326 3425/3459/3425 +f 3425/3459/3425 3326/3359/3326 3426/3460/3426 +f 3326/3359/3326 3327/3360/3327 3426/3460/3426 +f 3426/3460/3426 3327/3360/3327 3427/3461/3427 +f 3327/3360/3327 3328/3361/3328 3427/3461/3427 +f 3427/3461/3427 3328/3361/3328 3428/3462/3428 +f 3328/3361/3328 3329/3362/3329 3428/3462/3428 +f 3428/3462/3428 3329/3362/3329 3429/3463/3429 +f 3329/3362/3329 3330/3363/3330 3429/3463/3429 +f 3429/3463/3429 3330/3363/3330 3430/3464/3430 +f 3330/3363/3330 3331/3364/3331 3430/3464/3430 +f 3430/3464/3430 3331/3364/3331 3431/3465/3431 +f 3331/3364/3331 3332/3365/3332 3431/3465/3431 +f 3431/3465/3431 3332/3365/3332 3432/3466/3432 +f 3332/3365/3332 3333/3366/3333 3432/3466/3432 +f 3432/3466/3432 3333/3366/3333 3433/3467/3433 +f 3333/3366/3333 3334/3367/3334 3433/3467/3433 +f 3433/3467/3433 3334/3367/3334 3434/3468/3434 +f 3334/3367/3334 3335/3368/3335 3434/3468/3434 +f 3434/3468/3434 3335/3368/3335 3435/3469/3435 +f 3335/3368/3335 3336/3369/3336 3435/3469/3435 +f 3435/3469/3435 3336/3369/3336 3436/3470/3436 +f 3336/3369/3336 3337/3370/3337 3436/3470/3436 +f 3436/3470/3436 3337/3370/3337 3437/3471/3437 +f 3337/3370/3337 3338/3371/3338 3437/3471/3437 +f 3437/3471/3437 3338/3371/3338 3438/3472/3438 +f 3338/3371/3338 3339/3372/3339 3438/3472/3438 +f 3438/3472/3438 3339/3372/3339 3439/3473/3439 +f 3339/3372/3339 3340/3373/3340 3439/3473/3439 +f 3439/3473/3439 3340/3373/3340 3440/3474/3440 +f 3340/3373/3340 3341/3374/3341 3440/3474/3440 +f 3440/3474/3440 3341/3374/3341 3441/3475/3441 +f 3341/3374/3341 3342/3375/3342 3441/3475/3441 +f 3441/3475/3441 3342/3375/3342 3442/3476/3442 +f 3342/3375/3342 3343/3376/3343 3442/3476/3442 +f 3442/3476/3442 3343/3376/3343 3443/3477/3443 +f 3343/3376/3343 3344/3377/3344 3443/3477/3443 +f 3443/3477/3443 3344/3377/3344 3444/3478/3444 +f 3344/3377/3344 3345/3378/3345 3444/3478/3444 +f 3444/3478/3444 3345/3378/3345 3445/3479/3445 +f 3345/3378/3345 3346/3379/3346 3445/3479/3445 +f 3445/3479/3445 3346/3379/3346 3446/3480/3446 +f 3346/3379/3346 3347/3380/3347 3446/3480/3446 +f 3446/3480/3446 3347/3380/3347 3447/3481/3447 +f 3347/3380/3347 3348/3381/3348 3447/3481/3447 +f 3447/3481/3447 3348/3381/3348 3448/3482/3448 +f 3348/3381/3348 3349/3382/3349 3448/3482/3448 +f 3448/3482/3448 3349/3382/3349 3449/3483/3449 +f 3349/3382/3349 3350/3383/3350 3449/3483/3449 +f 3449/3483/3449 3350/3383/3350 3450/3484/3450 +f 3350/3383/3350 3351/3384/3351 3450/3484/3450 +f 3450/3484/3450 3351/3384/3351 3451/3485/3451 +f 3351/3384/3351 3352/3385/3352 3451/3485/3451 +f 3451/3485/3451 3352/3385/3352 3452/3486/3452 +f 3352/3385/3352 3353/3386/3353 3452/3486/3452 +f 3452/3486/3452 3353/3386/3353 3453/3487/3453 +f 3353/3386/3353 3354/3387/3354 3453/3487/3453 +f 3453/3487/3453 3354/3387/3354 3454/3488/3454 +f 3354/3387/3354 3355/3388/3355 3454/3488/3454 +f 3454/3488/3454 3355/3388/3355 3455/3489/3455 +f 3355/3388/3355 3356/3389/3356 3455/3489/3455 +f 3455/3489/3455 3356/3389/3356 3456/3490/3456 +f 3356/3389/3356 3357/3390/3357 3456/3490/3456 +f 3456/3490/3456 3357/3390/3357 3457/3491/3457 +f 3357/3390/3357 3358/3391/3358 3457/3491/3457 +f 3457/3491/3457 3358/3391/3358 3458/3492/3458 +f 3358/3391/3358 3359/3392/3359 3458/3492/3458 +f 3458/3492/3458 3359/3392/3359 3459/3493/3459 +f 3359/3392/3359 3360/3393/3360 3459/3493/3459 +f 3459/3493/3459 3360/3393/3360 3460/3494/3460 +f 3360/3393/3360 3361/3394/3361 3460/3494/3460 +f 3460/3494/3460 3361/3394/3361 3461/3495/3461 +f 3361/3394/3361 3362/3395/3362 3461/3495/3461 +f 3461/3495/3461 3362/3395/3362 3462/3496/3462 +f 3362/3395/3362 3363/3396/3363 3462/3496/3462 +f 3462/3496/3462 3363/3396/3363 3463/3497/3463 +f 3363/3396/3363 3364/3397/3364 3463/3497/3463 +f 3463/3497/3463 3364/3397/3364 3464/3498/3464 +f 3364/3397/3364 3365/3398/3365 3464/3498/3464 +f 3464/3498/3464 3365/3398/3365 3465/3499/3465 +f 3365/3398/3365 3366/3399/3366 3465/3499/3465 +f 3465/3499/3465 3366/3399/3366 3466/3500/3466 +f 3366/3399/3366 3367/3400/3367 3466/3500/3466 +f 3466/3500/3466 3367/3400/3367 3467/3501/3467 +f 3367/3400/3367 3368/3401/3368 3467/3501/3467 +f 3467/3501/3467 3368/3401/3368 3468/3502/3468 +f 3368/3401/3368 3369/3402/3369 3468/3502/3468 +f 3468/3502/3468 3369/3402/3369 3469/3503/3469 +f 3369/3402/3369 3370/3403/3370 3469/3503/3469 +f 3469/3503/3469 3370/3403/3370 3470/3504/3470 +f 3370/3403/3370 3371/3404/3371 3470/3504/3470 +f 3470/3504/3470 3371/3404/3371 3471/3505/3471 +f 3371/3404/3371 3372/3405/3372 3471/3505/3471 +f 3471/3505/3471 3372/3405/3372 3472/3506/3472 +f 3372/3405/3372 3373/3406/3373 3472/3506/3472 +f 3472/3506/3472 3373/3406/3373 3473/3507/3473 +f 3373/3406/3373 3374/3407/3374 3473/3507/3473 +f 3473/3507/3473 3374/3407/3374 3474/3508/3474 +f 3374/3407/3374 3375/3408/3375 3474/3508/3474 +f 3474/3508/3474 3375/3408/3375 3475/3509/3475 +f 3375/3408/3375 3376/3409/3376 3475/3509/3475 +f 3475/3509/3475 3376/3409/3376 3476/3510/3476 +f 3376/3409/3376 3377/3410/3377 3476/3510/3476 +f 3476/3510/3476 3377/3410/3377 3477/3511/3477 +f 3377/3410/3377 3378/3411/3378 3477/3511/3477 +f 3477/3511/3477 3378/3411/3378 3478/3512/3478 +f 3378/3411/3378 3379/3412/3379 3478/3512/3478 +f 3478/3512/3478 3379/3412/3379 3479/3513/3479 +f 3379/3412/3379 3380/3413/3380 3479/3513/3479 +f 3479/3513/3479 3380/3413/3380 3480/3514/3480 +f 3380/3413/3380 3381/3414/3381 3480/3514/3480 +f 3480/3514/3480 3381/3414/3381 3481/3515/3481 +f 3381/3414/3381 3382/3415/3382 3481/3515/3481 +f 3481/3515/3481 3382/3415/3382 3482/3516/3482 +f 3382/3415/3382 3383/3416/3383 3482/3516/3482 +f 3482/3516/3482 3383/3416/3383 3483/3517/3483 +f 3383/3416/3383 3384/3417/3384 3483/3517/3483 +f 3483/3517/3483 3384/3417/3384 3484/3518/3484 +f 3384/3417/3384 3385/3418/3385 3484/3518/3484 +f 3484/3518/3484 3385/3418/3385 3485/3519/3485 +f 3385/3418/3385 3386/3419/3386 3485/3519/3485 +f 3485/3519/3485 3386/3419/3386 3486/3520/3486 +f 3386/3419/3386 3387/3420/3387 3486/3520/3486 +f 3486/3520/3486 3387/3420/3387 3487/3521/3487 +f 3387/3420/3387 3388/3421/3388 3487/3521/3487 +f 3487/3521/3487 3388/3421/3388 3488/3522/3488 +f 3388/3421/3388 3389/3422/3389 3488/3522/3488 +f 3488/3522/3488 3389/3422/3389 3489/3523/3489 +f 3389/3422/3389 3390/3423/3390 3489/3523/3489 +f 3489/3523/3489 3390/3423/3390 3490/3524/3490 +f 3390/3423/3390 3391/3424/3391 3490/3524/3490 +f 3490/3524/3490 3391/3424/3391 3491/3525/3491 +f 3391/3424/3391 3392/3425/3392 3491/3525/3491 +f 3491/3525/3491 3392/3425/3392 3492/3526/3492 +f 3392/3425/3392 3393/3426/3393 3492/3526/3492 +f 3492/3526/3492 3393/3426/3393 3493/3527/3493 +f 3393/3426/3393 3394/3427/3394 3493/3527/3493 +f 3493/3527/3493 3394/3427/3394 3494/3528/3494 +f 3394/3427/3394 3395/3428/3395 3494/3528/3494 +f 3494/3528/3494 3395/3428/3395 3495/3529/3495 +f 3395/3428/3395 3396/3429/3396 3495/3529/3495 +f 3495/3529/3495 3396/3429/3396 3496/3530/3496 +f 3396/3429/3396 3397/3430/3397 3496/3530/3496 +f 3496/3530/3496 3397/3430/3397 3497/3531/3497 +f 3397/3430/3397 3398/3431/3398 3497/3531/3497 +f 3497/3531/3497 3398/3431/3398 3498/3532/3498 +f 3398/3431/3398 3399/3432/3399 3498/3532/3498 +f 3498/3532/3498 3399/3432/3399 3499/3533/3499 +f 3399/3432/3399 3400/3433/3400 3499/3533/3499 +f 3499/3533/3499 3400/3433/3400 3500/3534/3500 +f 3400/3433/3400 3301/3434/3301 3500/3534/3500 +f 3500/3534/3500 3301/3434/3301 3401/3535/3401 +f 3401/3435/3401 3402/3436/3402 3501/3536/3501 +f 3501/3536/3501 3402/3436/3402 3502/3537/3502 +f 3402/3436/3402 3403/3437/3403 3502/3537/3502 +f 3502/3537/3502 3403/3437/3403 3503/3538/3503 +f 3403/3437/3403 3404/3438/3404 3503/3538/3503 +f 3503/3538/3503 3404/3438/3404 3504/3539/3504 +f 3404/3438/3404 3405/3439/3405 3504/3539/3504 +f 3504/3539/3504 3405/3439/3405 3505/3540/3505 +f 3405/3439/3405 3406/3440/3406 3505/3540/3505 +f 3505/3540/3505 3406/3440/3406 3506/3541/3506 +f 3406/3440/3406 3407/3441/3407 3506/3541/3506 +f 3506/3541/3506 3407/3441/3407 3507/3542/3507 +f 3407/3441/3407 3408/3442/3408 3507/3542/3507 +f 3507/3542/3507 3408/3442/3408 3508/3543/3508 +f 3408/3442/3408 3409/3443/3409 3508/3543/3508 +f 3508/3543/3508 3409/3443/3409 3509/3544/3509 +f 3409/3443/3409 3410/3444/3410 3509/3544/3509 +f 3509/3544/3509 3410/3444/3410 3510/3545/3510 +f 3410/3444/3410 3411/3445/3411 3510/3545/3510 +f 3510/3545/3510 3411/3445/3411 3511/3546/3511 +f 3411/3445/3411 3412/3446/3412 3511/3546/3511 +f 3511/3546/3511 3412/3446/3412 3512/3547/3512 +f 3412/3446/3412 3413/3447/3413 3512/3547/3512 +f 3512/3547/3512 3413/3447/3413 3513/3548/3513 +f 3413/3447/3413 3414/3448/3414 3513/3548/3513 +f 3513/3548/3513 3414/3448/3414 3514/3549/3514 +f 3414/3448/3414 3415/3449/3415 3514/3549/3514 +f 3514/3549/3514 3415/3449/3415 3515/3550/3515 +f 3415/3449/3415 3416/3450/3416 3515/3550/3515 +f 3515/3550/3515 3416/3450/3416 3516/3551/3516 +f 3416/3450/3416 3417/3451/3417 3516/3551/3516 +f 3516/3551/3516 3417/3451/3417 3517/3552/3517 +f 3417/3451/3417 3418/3452/3418 3517/3552/3517 +f 3517/3552/3517 3418/3452/3418 3518/3553/3518 +f 3418/3452/3418 3419/3453/3419 3518/3553/3518 +f 3518/3553/3518 3419/3453/3419 3519/3554/3519 +f 3419/3453/3419 3420/3454/3420 3519/3554/3519 +f 3519/3554/3519 3420/3454/3420 3520/3555/3520 +f 3420/3454/3420 3421/3455/3421 3520/3555/3520 +f 3520/3555/3520 3421/3455/3421 3521/3556/3521 +f 3421/3455/3421 3422/3456/3422 3521/3556/3521 +f 3521/3556/3521 3422/3456/3422 3522/3557/3522 +f 3422/3456/3422 3423/3457/3423 3522/3557/3522 +f 3522/3557/3522 3423/3457/3423 3523/3558/3523 +f 3423/3457/3423 3424/3458/3424 3523/3558/3523 +f 3523/3558/3523 3424/3458/3424 3524/3559/3524 +f 3424/3458/3424 3425/3459/3425 3524/3559/3524 +f 3524/3559/3524 3425/3459/3425 3525/3560/3525 +f 3425/3459/3425 3426/3460/3426 3525/3560/3525 +f 3525/3560/3525 3426/3460/3426 3526/3561/3526 +f 3426/3460/3426 3427/3461/3427 3526/3561/3526 +f 3526/3561/3526 3427/3461/3427 3527/3562/3527 +f 3427/3461/3427 3428/3462/3428 3527/3562/3527 +f 3527/3562/3527 3428/3462/3428 3528/3563/3528 +f 3428/3462/3428 3429/3463/3429 3528/3563/3528 +f 3528/3563/3528 3429/3463/3429 3529/3564/3529 +f 3429/3463/3429 3430/3464/3430 3529/3564/3529 +f 3529/3564/3529 3430/3464/3430 3530/3565/3530 +f 3430/3464/3430 3431/3465/3431 3530/3565/3530 +f 3530/3565/3530 3431/3465/3431 3531/3566/3531 +f 3431/3465/3431 3432/3466/3432 3531/3566/3531 +f 3531/3566/3531 3432/3466/3432 3532/3567/3532 +f 3432/3466/3432 3433/3467/3433 3532/3567/3532 +f 3532/3567/3532 3433/3467/3433 3533/3568/3533 +f 3433/3467/3433 3434/3468/3434 3533/3568/3533 +f 3533/3568/3533 3434/3468/3434 3534/3569/3534 +f 3434/3468/3434 3435/3469/3435 3534/3569/3534 +f 3534/3569/3534 3435/3469/3435 3535/3570/3535 +f 3435/3469/3435 3436/3470/3436 3535/3570/3535 +f 3535/3570/3535 3436/3470/3436 3536/3571/3536 +f 3436/3470/3436 3437/3471/3437 3536/3571/3536 +f 3536/3571/3536 3437/3471/3437 3537/3572/3537 +f 3437/3471/3437 3438/3472/3438 3537/3572/3537 +f 3537/3572/3537 3438/3472/3438 3538/3573/3538 +f 3438/3472/3438 3439/3473/3439 3538/3573/3538 +f 3538/3573/3538 3439/3473/3439 3539/3574/3539 +f 3439/3473/3439 3440/3474/3440 3539/3574/3539 +f 3539/3574/3539 3440/3474/3440 3540/3575/3540 +f 3440/3474/3440 3441/3475/3441 3540/3575/3540 +f 3540/3575/3540 3441/3475/3441 3541/3576/3541 +f 3441/3475/3441 3442/3476/3442 3541/3576/3541 +f 3541/3576/3541 3442/3476/3442 3542/3577/3542 +f 3442/3476/3442 3443/3477/3443 3542/3577/3542 +f 3542/3577/3542 3443/3477/3443 3543/3578/3543 +f 3443/3477/3443 3444/3478/3444 3543/3578/3543 +f 3543/3578/3543 3444/3478/3444 3544/3579/3544 +f 3444/3478/3444 3445/3479/3445 3544/3579/3544 +f 3544/3579/3544 3445/3479/3445 3545/3580/3545 +f 3445/3479/3445 3446/3480/3446 3545/3580/3545 +f 3545/3580/3545 3446/3480/3446 3546/3581/3546 +f 3446/3480/3446 3447/3481/3447 3546/3581/3546 +f 3546/3581/3546 3447/3481/3447 3547/3582/3547 +f 3447/3481/3447 3448/3482/3448 3547/3582/3547 +f 3547/3582/3547 3448/3482/3448 3548/3583/3548 +f 3448/3482/3448 3449/3483/3449 3548/3583/3548 +f 3548/3583/3548 3449/3483/3449 3549/3584/3549 +f 3449/3483/3449 3450/3484/3450 3549/3584/3549 +f 3549/3584/3549 3450/3484/3450 3550/3585/3550 +f 3450/3484/3450 3451/3485/3451 3550/3585/3550 +f 3550/3585/3550 3451/3485/3451 3551/3586/3551 +f 3451/3485/3451 3452/3486/3452 3551/3586/3551 +f 3551/3586/3551 3452/3486/3452 3552/3587/3552 +f 3452/3486/3452 3453/3487/3453 3552/3587/3552 +f 3552/3587/3552 3453/3487/3453 3553/3588/3553 +f 3453/3487/3453 3454/3488/3454 3553/3588/3553 +f 3553/3588/3553 3454/3488/3454 3554/3589/3554 +f 3454/3488/3454 3455/3489/3455 3554/3589/3554 +f 3554/3589/3554 3455/3489/3455 3555/3590/3555 +f 3455/3489/3455 3456/3490/3456 3555/3590/3555 +f 3555/3590/3555 3456/3490/3456 3556/3591/3556 +f 3456/3490/3456 3457/3491/3457 3556/3591/3556 +f 3556/3591/3556 3457/3491/3457 3557/3592/3557 +f 3457/3491/3457 3458/3492/3458 3557/3592/3557 +f 3557/3592/3557 3458/3492/3458 3558/3593/3558 +f 3458/3492/3458 3459/3493/3459 3558/3593/3558 +f 3558/3593/3558 3459/3493/3459 3559/3594/3559 +f 3459/3493/3459 3460/3494/3460 3559/3594/3559 +f 3559/3594/3559 3460/3494/3460 3560/3595/3560 +f 3460/3494/3460 3461/3495/3461 3560/3595/3560 +f 3560/3595/3560 3461/3495/3461 3561/3596/3561 +f 3461/3495/3461 3462/3496/3462 3561/3596/3561 +f 3561/3596/3561 3462/3496/3462 3562/3597/3562 +f 3462/3496/3462 3463/3497/3463 3562/3597/3562 +f 3562/3597/3562 3463/3497/3463 3563/3598/3563 +f 3463/3497/3463 3464/3498/3464 3563/3598/3563 +f 3563/3598/3563 3464/3498/3464 3564/3599/3564 +f 3464/3498/3464 3465/3499/3465 3564/3599/3564 +f 3564/3599/3564 3465/3499/3465 3565/3600/3565 +f 3465/3499/3465 3466/3500/3466 3565/3600/3565 +f 3565/3600/3565 3466/3500/3466 3566/3601/3566 +f 3466/3500/3466 3467/3501/3467 3566/3601/3566 +f 3566/3601/3566 3467/3501/3467 3567/3602/3567 +f 3467/3501/3467 3468/3502/3468 3567/3602/3567 +f 3567/3602/3567 3468/3502/3468 3568/3603/3568 +f 3468/3502/3468 3469/3503/3469 3568/3603/3568 +f 3568/3603/3568 3469/3503/3469 3569/3604/3569 +f 3469/3503/3469 3470/3504/3470 3569/3604/3569 +f 3569/3604/3569 3470/3504/3470 3570/3605/3570 +f 3470/3504/3470 3471/3505/3471 3570/3605/3570 +f 3570/3605/3570 3471/3505/3471 3571/3606/3571 +f 3471/3505/3471 3472/3506/3472 3571/3606/3571 +f 3571/3606/3571 3472/3506/3472 3572/3607/3572 +f 3472/3506/3472 3473/3507/3473 3572/3607/3572 +f 3572/3607/3572 3473/3507/3473 3573/3608/3573 +f 3473/3507/3473 3474/3508/3474 3573/3608/3573 +f 3573/3608/3573 3474/3508/3474 3574/3609/3574 +f 3474/3508/3474 3475/3509/3475 3574/3609/3574 +f 3574/3609/3574 3475/3509/3475 3575/3610/3575 +f 3475/3509/3475 3476/3510/3476 3575/3610/3575 +f 3575/3610/3575 3476/3510/3476 3576/3611/3576 +f 3476/3510/3476 3477/3511/3477 3576/3611/3576 +f 3576/3611/3576 3477/3511/3477 3577/3612/3577 +f 3477/3511/3477 3478/3512/3478 3577/3612/3577 +f 3577/3612/3577 3478/3512/3478 3578/3613/3578 +f 3478/3512/3478 3479/3513/3479 3578/3613/3578 +f 3578/3613/3578 3479/3513/3479 3579/3614/3579 +f 3479/3513/3479 3480/3514/3480 3579/3614/3579 +f 3579/3614/3579 3480/3514/3480 3580/3615/3580 +f 3480/3514/3480 3481/3515/3481 3580/3615/3580 +f 3580/3615/3580 3481/3515/3481 3581/3616/3581 +f 3481/3515/3481 3482/3516/3482 3581/3616/3581 +f 3581/3616/3581 3482/3516/3482 3582/3617/3582 +f 3482/3516/3482 3483/3517/3483 3582/3617/3582 +f 3582/3617/3582 3483/3517/3483 3583/3618/3583 +f 3483/3517/3483 3484/3518/3484 3583/3618/3583 +f 3583/3618/3583 3484/3518/3484 3584/3619/3584 +f 3484/3518/3484 3485/3519/3485 3584/3619/3584 +f 3584/3619/3584 3485/3519/3485 3585/3620/3585 +f 3485/3519/3485 3486/3520/3486 3585/3620/3585 +f 3585/3620/3585 3486/3520/3486 3586/3621/3586 +f 3486/3520/3486 3487/3521/3487 3586/3621/3586 +f 3586/3621/3586 3487/3521/3487 3587/3622/3587 +f 3487/3521/3487 3488/3522/3488 3587/3622/3587 +f 3587/3622/3587 3488/3522/3488 3588/3623/3588 +f 3488/3522/3488 3489/3523/3489 3588/3623/3588 +f 3588/3623/3588 3489/3523/3489 3589/3624/3589 +f 3489/3523/3489 3490/3524/3490 3589/3624/3589 +f 3589/3624/3589 3490/3524/3490 3590/3625/3590 +f 3490/3524/3490 3491/3525/3491 3590/3625/3590 +f 3590/3625/3590 3491/3525/3491 3591/3626/3591 +f 3491/3525/3491 3492/3526/3492 3591/3626/3591 +f 3591/3626/3591 3492/3526/3492 3592/3627/3592 +f 3492/3526/3492 3493/3527/3493 3592/3627/3592 +f 3592/3627/3592 3493/3527/3493 3593/3628/3593 +f 3493/3527/3493 3494/3528/3494 3593/3628/3593 +f 3593/3628/3593 3494/3528/3494 3594/3629/3594 +f 3494/3528/3494 3495/3529/3495 3594/3629/3594 +f 3594/3629/3594 3495/3529/3495 3595/3630/3595 +f 3495/3529/3495 3496/3530/3496 3595/3630/3595 +f 3595/3630/3595 3496/3530/3496 3596/3631/3596 +f 3496/3530/3496 3497/3531/3497 3596/3631/3596 +f 3596/3631/3596 3497/3531/3497 3597/3632/3597 +f 3497/3531/3497 3498/3532/3498 3597/3632/3597 +f 3597/3632/3597 3498/3532/3498 3598/3633/3598 +f 3498/3532/3498 3499/3533/3499 3598/3633/3598 +f 3598/3633/3598 3499/3533/3499 3599/3634/3599 +f 3499/3533/3499 3500/3534/3500 3599/3634/3599 +f 3599/3634/3599 3500/3534/3500 3600/3635/3600 +f 3500/3534/3500 3401/3535/3401 3600/3635/3600 +f 3600/3635/3600 3401/3535/3401 3501/3636/3501 +f 3501/3536/3501 3502/3537/3502 3601/3637/3601 +f 3601/3637/3601 3502/3537/3502 3602/3638/3602 +f 3502/3537/3502 3503/3538/3503 3602/3638/3602 +f 3602/3638/3602 3503/3538/3503 3603/3639/3603 +f 3503/3538/3503 3504/3539/3504 3603/3639/3603 +f 3603/3639/3603 3504/3539/3504 3604/3640/3604 +f 3504/3539/3504 3505/3540/3505 3604/3640/3604 +f 3604/3640/3604 3505/3540/3505 3605/3641/3605 +f 3505/3540/3505 3506/3541/3506 3605/3641/3605 +f 3605/3641/3605 3506/3541/3506 3606/3642/3606 +f 3506/3541/3506 3507/3542/3507 3606/3642/3606 +f 3606/3642/3606 3507/3542/3507 3607/3643/3607 +f 3507/3542/3507 3508/3543/3508 3607/3643/3607 +f 3607/3643/3607 3508/3543/3508 3608/3644/3608 +f 3508/3543/3508 3509/3544/3509 3608/3644/3608 +f 3608/3644/3608 3509/3544/3509 3609/3645/3609 +f 3509/3544/3509 3510/3545/3510 3609/3645/3609 +f 3609/3645/3609 3510/3545/3510 3610/3646/3610 +f 3510/3545/3510 3511/3546/3511 3610/3646/3610 +f 3610/3646/3610 3511/3546/3511 3611/3647/3611 +f 3511/3546/3511 3512/3547/3512 3611/3647/3611 +f 3611/3647/3611 3512/3547/3512 3612/3648/3612 +f 3512/3547/3512 3513/3548/3513 3612/3648/3612 +f 3612/3648/3612 3513/3548/3513 3613/3649/3613 +f 3513/3548/3513 3514/3549/3514 3613/3649/3613 +f 3613/3649/3613 3514/3549/3514 3614/3650/3614 +f 3514/3549/3514 3515/3550/3515 3614/3650/3614 +f 3614/3650/3614 3515/3550/3515 3615/3651/3615 +f 3515/3550/3515 3516/3551/3516 3615/3651/3615 +f 3615/3651/3615 3516/3551/3516 3616/3652/3616 +f 3516/3551/3516 3517/3552/3517 3616/3652/3616 +f 3616/3652/3616 3517/3552/3517 3617/3653/3617 +f 3517/3552/3517 3518/3553/3518 3617/3653/3617 +f 3617/3653/3617 3518/3553/3518 3618/3654/3618 +f 3518/3553/3518 3519/3554/3519 3618/3654/3618 +f 3618/3654/3618 3519/3554/3519 3619/3655/3619 +f 3519/3554/3519 3520/3555/3520 3619/3655/3619 +f 3619/3655/3619 3520/3555/3520 3620/3656/3620 +f 3520/3555/3520 3521/3556/3521 3620/3656/3620 +f 3620/3656/3620 3521/3556/3521 3621/3657/3621 +f 3521/3556/3521 3522/3557/3522 3621/3657/3621 +f 3621/3657/3621 3522/3557/3522 3622/3658/3622 +f 3522/3557/3522 3523/3558/3523 3622/3658/3622 +f 3622/3658/3622 3523/3558/3523 3623/3659/3623 +f 3523/3558/3523 3524/3559/3524 3623/3659/3623 +f 3623/3659/3623 3524/3559/3524 3624/3660/3624 +f 3524/3559/3524 3525/3560/3525 3624/3660/3624 +f 3624/3660/3624 3525/3560/3525 3625/3661/3625 +f 3525/3560/3525 3526/3561/3526 3625/3661/3625 +f 3625/3661/3625 3526/3561/3526 3626/3662/3626 +f 3526/3561/3526 3527/3562/3527 3626/3662/3626 +f 3626/3662/3626 3527/3562/3527 3627/3663/3627 +f 3527/3562/3527 3528/3563/3528 3627/3663/3627 +f 3627/3663/3627 3528/3563/3528 3628/3664/3628 +f 3528/3563/3528 3529/3564/3529 3628/3664/3628 +f 3628/3664/3628 3529/3564/3529 3629/3665/3629 +f 3529/3564/3529 3530/3565/3530 3629/3665/3629 +f 3629/3665/3629 3530/3565/3530 3630/3666/3630 +f 3530/3565/3530 3531/3566/3531 3630/3666/3630 +f 3630/3666/3630 3531/3566/3531 3631/3667/3631 +f 3531/3566/3531 3532/3567/3532 3631/3667/3631 +f 3631/3667/3631 3532/3567/3532 3632/3668/3632 +f 3532/3567/3532 3533/3568/3533 3632/3668/3632 +f 3632/3668/3632 3533/3568/3533 3633/3669/3633 +f 3533/3568/3533 3534/3569/3534 3633/3669/3633 +f 3633/3669/3633 3534/3569/3534 3634/3670/3634 +f 3534/3569/3534 3535/3570/3535 3634/3670/3634 +f 3634/3670/3634 3535/3570/3535 3635/3671/3635 +f 3535/3570/3535 3536/3571/3536 3635/3671/3635 +f 3635/3671/3635 3536/3571/3536 3636/3672/3636 +f 3536/3571/3536 3537/3572/3537 3636/3672/3636 +f 3636/3672/3636 3537/3572/3537 3637/3673/3637 +f 3537/3572/3537 3538/3573/3538 3637/3673/3637 +f 3637/3673/3637 3538/3573/3538 3638/3674/3638 +f 3538/3573/3538 3539/3574/3539 3638/3674/3638 +f 3638/3674/3638 3539/3574/3539 3639/3675/3639 +f 3539/3574/3539 3540/3575/3540 3639/3675/3639 +f 3639/3675/3639 3540/3575/3540 3640/3676/3640 +f 3540/3575/3540 3541/3576/3541 3640/3676/3640 +f 3640/3676/3640 3541/3576/3541 3641/3677/3641 +f 3541/3576/3541 3542/3577/3542 3641/3677/3641 +f 3641/3677/3641 3542/3577/3542 3642/3678/3642 +f 3542/3577/3542 3543/3578/3543 3642/3678/3642 +f 3642/3678/3642 3543/3578/3543 3643/3679/3643 +f 3543/3578/3543 3544/3579/3544 3643/3679/3643 +f 3643/3679/3643 3544/3579/3544 3644/3680/3644 +f 3544/3579/3544 3545/3580/3545 3644/3680/3644 +f 3644/3680/3644 3545/3580/3545 3645/3681/3645 +f 3545/3580/3545 3546/3581/3546 3645/3681/3645 +f 3645/3681/3645 3546/3581/3546 3646/3682/3646 +f 3546/3581/3546 3547/3582/3547 3646/3682/3646 +f 3646/3682/3646 3547/3582/3547 3647/3683/3647 +f 3547/3582/3547 3548/3583/3548 3647/3683/3647 +f 3647/3683/3647 3548/3583/3548 3648/3684/3648 +f 3548/3583/3548 3549/3584/3549 3648/3684/3648 +f 3648/3684/3648 3549/3584/3549 3649/3685/3649 +f 3549/3584/3549 3550/3585/3550 3649/3685/3649 +f 3649/3685/3649 3550/3585/3550 3650/3686/3650 +f 3550/3585/3550 3551/3586/3551 3650/3686/3650 +f 3650/3686/3650 3551/3586/3551 3651/3687/3651 +f 3551/3586/3551 3552/3587/3552 3651/3687/3651 +f 3651/3687/3651 3552/3587/3552 3652/3688/3652 +f 3552/3587/3552 3553/3588/3553 3652/3688/3652 +f 3652/3688/3652 3553/3588/3553 3653/3689/3653 +f 3553/3588/3553 3554/3589/3554 3653/3689/3653 +f 3653/3689/3653 3554/3589/3554 3654/3690/3654 +f 3554/3589/3554 3555/3590/3555 3654/3690/3654 +f 3654/3690/3654 3555/3590/3555 3655/3691/3655 +f 3555/3590/3555 3556/3591/3556 3655/3691/3655 +f 3655/3691/3655 3556/3591/3556 3656/3692/3656 +f 3556/3591/3556 3557/3592/3557 3656/3692/3656 +f 3656/3692/3656 3557/3592/3557 3657/3693/3657 +f 3557/3592/3557 3558/3593/3558 3657/3693/3657 +f 3657/3693/3657 3558/3593/3558 3658/3694/3658 +f 3558/3593/3558 3559/3594/3559 3658/3694/3658 +f 3658/3694/3658 3559/3594/3559 3659/3695/3659 +f 3559/3594/3559 3560/3595/3560 3659/3695/3659 +f 3659/3695/3659 3560/3595/3560 3660/3696/3660 +f 3560/3595/3560 3561/3596/3561 3660/3696/3660 +f 3660/3696/3660 3561/3596/3561 3661/3697/3661 +f 3561/3596/3561 3562/3597/3562 3661/3697/3661 +f 3661/3697/3661 3562/3597/3562 3662/3698/3662 +f 3562/3597/3562 3563/3598/3563 3662/3698/3662 +f 3662/3698/3662 3563/3598/3563 3663/3699/3663 +f 3563/3598/3563 3564/3599/3564 3663/3699/3663 +f 3663/3699/3663 3564/3599/3564 3664/3700/3664 +f 3564/3599/3564 3565/3600/3565 3664/3700/3664 +f 3664/3700/3664 3565/3600/3565 3665/3701/3665 +f 3565/3600/3565 3566/3601/3566 3665/3701/3665 +f 3665/3701/3665 3566/3601/3566 3666/3702/3666 +f 3566/3601/3566 3567/3602/3567 3666/3702/3666 +f 3666/3702/3666 3567/3602/3567 3667/3703/3667 +f 3567/3602/3567 3568/3603/3568 3667/3703/3667 +f 3667/3703/3667 3568/3603/3568 3668/3704/3668 +f 3568/3603/3568 3569/3604/3569 3668/3704/3668 +f 3668/3704/3668 3569/3604/3569 3669/3705/3669 +f 3569/3604/3569 3570/3605/3570 3669/3705/3669 +f 3669/3705/3669 3570/3605/3570 3670/3706/3670 +f 3570/3605/3570 3571/3606/3571 3670/3706/3670 +f 3670/3706/3670 3571/3606/3571 3671/3707/3671 +f 3571/3606/3571 3572/3607/3572 3671/3707/3671 +f 3671/3707/3671 3572/3607/3572 3672/3708/3672 +f 3572/3607/3572 3573/3608/3573 3672/3708/3672 +f 3672/3708/3672 3573/3608/3573 3673/3709/3673 +f 3573/3608/3573 3574/3609/3574 3673/3709/3673 +f 3673/3709/3673 3574/3609/3574 3674/3710/3674 +f 3574/3609/3574 3575/3610/3575 3674/3710/3674 +f 3674/3710/3674 3575/3610/3575 3675/3711/3675 +f 3575/3610/3575 3576/3611/3576 3675/3711/3675 +f 3675/3711/3675 3576/3611/3576 3676/3712/3676 +f 3576/3611/3576 3577/3612/3577 3676/3712/3676 +f 3676/3712/3676 3577/3612/3577 3677/3713/3677 +f 3577/3612/3577 3578/3613/3578 3677/3713/3677 +f 3677/3713/3677 3578/3613/3578 3678/3714/3678 +f 3578/3613/3578 3579/3614/3579 3678/3714/3678 +f 3678/3714/3678 3579/3614/3579 3679/3715/3679 +f 3579/3614/3579 3580/3615/3580 3679/3715/3679 +f 3679/3715/3679 3580/3615/3580 3680/3716/3680 +f 3580/3615/3580 3581/3616/3581 3680/3716/3680 +f 3680/3716/3680 3581/3616/3581 3681/3717/3681 +f 3581/3616/3581 3582/3617/3582 3681/3717/3681 +f 3681/3717/3681 3582/3617/3582 3682/3718/3682 +f 3582/3617/3582 3583/3618/3583 3682/3718/3682 +f 3682/3718/3682 3583/3618/3583 3683/3719/3683 +f 3583/3618/3583 3584/3619/3584 3683/3719/3683 +f 3683/3719/3683 3584/3619/3584 3684/3720/3684 +f 3584/3619/3584 3585/3620/3585 3684/3720/3684 +f 3684/3720/3684 3585/3620/3585 3685/3721/3685 +f 3585/3620/3585 3586/3621/3586 3685/3721/3685 +f 3685/3721/3685 3586/3621/3586 3686/3722/3686 +f 3586/3621/3586 3587/3622/3587 3686/3722/3686 +f 3686/3722/3686 3587/3622/3587 3687/3723/3687 +f 3587/3622/3587 3588/3623/3588 3687/3723/3687 +f 3687/3723/3687 3588/3623/3588 3688/3724/3688 +f 3588/3623/3588 3589/3624/3589 3688/3724/3688 +f 3688/3724/3688 3589/3624/3589 3689/3725/3689 +f 3589/3624/3589 3590/3625/3590 3689/3725/3689 +f 3689/3725/3689 3590/3625/3590 3690/3726/3690 +f 3590/3625/3590 3591/3626/3591 3690/3726/3690 +f 3690/3726/3690 3591/3626/3591 3691/3727/3691 +f 3591/3626/3591 3592/3627/3592 3691/3727/3691 +f 3691/3727/3691 3592/3627/3592 3692/3728/3692 +f 3592/3627/3592 3593/3628/3593 3692/3728/3692 +f 3692/3728/3692 3593/3628/3593 3693/3729/3693 +f 3593/3628/3593 3594/3629/3594 3693/3729/3693 +f 3693/3729/3693 3594/3629/3594 3694/3730/3694 +f 3594/3629/3594 3595/3630/3595 3694/3730/3694 +f 3694/3730/3694 3595/3630/3595 3695/3731/3695 +f 3595/3630/3595 3596/3631/3596 3695/3731/3695 +f 3695/3731/3695 3596/3631/3596 3696/3732/3696 +f 3596/3631/3596 3597/3632/3597 3696/3732/3696 +f 3696/3732/3696 3597/3632/3597 3697/3733/3697 +f 3597/3632/3597 3598/3633/3598 3697/3733/3697 +f 3697/3733/3697 3598/3633/3598 3698/3734/3698 +f 3598/3633/3598 3599/3634/3599 3698/3734/3698 +f 3698/3734/3698 3599/3634/3599 3699/3735/3699 +f 3599/3634/3599 3600/3635/3600 3699/3735/3699 +f 3699/3735/3699 3600/3635/3600 3700/3736/3700 +f 3600/3635/3600 3501/3636/3501 3700/3736/3700 +f 3700/3736/3700 3501/3636/3501 3601/3737/3601 +f 3601/3637/3601 3602/3638/3602 3701/3738/3701 +f 3701/3738/3701 3602/3638/3602 3702/3739/3702 +f 3602/3638/3602 3603/3639/3603 3702/3739/3702 +f 3702/3739/3702 3603/3639/3603 3703/3740/3703 +f 3603/3639/3603 3604/3640/3604 3703/3740/3703 +f 3703/3740/3703 3604/3640/3604 3704/3741/3704 +f 3604/3640/3604 3605/3641/3605 3704/3741/3704 +f 3704/3741/3704 3605/3641/3605 3705/3742/3705 +f 3605/3641/3605 3606/3642/3606 3705/3742/3705 +f 3705/3742/3705 3606/3642/3606 3706/3743/3706 +f 3606/3642/3606 3607/3643/3607 3706/3743/3706 +f 3706/3743/3706 3607/3643/3607 3707/3744/3707 +f 3607/3643/3607 3608/3644/3608 3707/3744/3707 +f 3707/3744/3707 3608/3644/3608 3708/3745/3708 +f 3608/3644/3608 3609/3645/3609 3708/3745/3708 +f 3708/3745/3708 3609/3645/3609 3709/3746/3709 +f 3609/3645/3609 3610/3646/3610 3709/3746/3709 +f 3709/3746/3709 3610/3646/3610 3710/3747/3710 +f 3610/3646/3610 3611/3647/3611 3710/3747/3710 +f 3710/3747/3710 3611/3647/3611 3711/3748/3711 +f 3611/3647/3611 3612/3648/3612 3711/3748/3711 +f 3711/3748/3711 3612/3648/3612 3712/3749/3712 +f 3612/3648/3612 3613/3649/3613 3712/3749/3712 +f 3712/3749/3712 3613/3649/3613 3713/3750/3713 +f 3613/3649/3613 3614/3650/3614 3713/3750/3713 +f 3713/3750/3713 3614/3650/3614 3714/3751/3714 +f 3614/3650/3614 3615/3651/3615 3714/3751/3714 +f 3714/3751/3714 3615/3651/3615 3715/3752/3715 +f 3615/3651/3615 3616/3652/3616 3715/3752/3715 +f 3715/3752/3715 3616/3652/3616 3716/3753/3716 +f 3616/3652/3616 3617/3653/3617 3716/3753/3716 +f 3716/3753/3716 3617/3653/3617 3717/3754/3717 +f 3617/3653/3617 3618/3654/3618 3717/3754/3717 +f 3717/3754/3717 3618/3654/3618 3718/3755/3718 +f 3618/3654/3618 3619/3655/3619 3718/3755/3718 +f 3718/3755/3718 3619/3655/3619 3719/3756/3719 +f 3619/3655/3619 3620/3656/3620 3719/3756/3719 +f 3719/3756/3719 3620/3656/3620 3720/3757/3720 +f 3620/3656/3620 3621/3657/3621 3720/3757/3720 +f 3720/3757/3720 3621/3657/3621 3721/3758/3721 +f 3621/3657/3621 3622/3658/3622 3721/3758/3721 +f 3721/3758/3721 3622/3658/3622 3722/3759/3722 +f 3622/3658/3622 3623/3659/3623 3722/3759/3722 +f 3722/3759/3722 3623/3659/3623 3723/3760/3723 +f 3623/3659/3623 3624/3660/3624 3723/3760/3723 +f 3723/3760/3723 3624/3660/3624 3724/3761/3724 +f 3624/3660/3624 3625/3661/3625 3724/3761/3724 +f 3724/3761/3724 3625/3661/3625 3725/3762/3725 +f 3625/3661/3625 3626/3662/3626 3725/3762/3725 +f 3725/3762/3725 3626/3662/3626 3726/3763/3726 +f 3626/3662/3626 3627/3663/3627 3726/3763/3726 +f 3726/3763/3726 3627/3663/3627 3727/3764/3727 +f 3627/3663/3627 3628/3664/3628 3727/3764/3727 +f 3727/3764/3727 3628/3664/3628 3728/3765/3728 +f 3628/3664/3628 3629/3665/3629 3728/3765/3728 +f 3728/3765/3728 3629/3665/3629 3729/3766/3729 +f 3629/3665/3629 3630/3666/3630 3729/3766/3729 +f 3729/3766/3729 3630/3666/3630 3730/3767/3730 +f 3630/3666/3630 3631/3667/3631 3730/3767/3730 +f 3730/3767/3730 3631/3667/3631 3731/3768/3731 +f 3631/3667/3631 3632/3668/3632 3731/3768/3731 +f 3731/3768/3731 3632/3668/3632 3732/3769/3732 +f 3632/3668/3632 3633/3669/3633 3732/3769/3732 +f 3732/3769/3732 3633/3669/3633 3733/3770/3733 +f 3633/3669/3633 3634/3670/3634 3733/3770/3733 +f 3733/3770/3733 3634/3670/3634 3734/3771/3734 +f 3634/3670/3634 3635/3671/3635 3734/3771/3734 +f 3734/3771/3734 3635/3671/3635 3735/3772/3735 +f 3635/3671/3635 3636/3672/3636 3735/3772/3735 +f 3735/3772/3735 3636/3672/3636 3736/3773/3736 +f 3636/3672/3636 3637/3673/3637 3736/3773/3736 +f 3736/3773/3736 3637/3673/3637 3737/3774/3737 +f 3637/3673/3637 3638/3674/3638 3737/3774/3737 +f 3737/3774/3737 3638/3674/3638 3738/3775/3738 +f 3638/3674/3638 3639/3675/3639 3738/3775/3738 +f 3738/3775/3738 3639/3675/3639 3739/3776/3739 +f 3639/3675/3639 3640/3676/3640 3739/3776/3739 +f 3739/3776/3739 3640/3676/3640 3740/3777/3740 +f 3640/3676/3640 3641/3677/3641 3740/3777/3740 +f 3740/3777/3740 3641/3677/3641 3741/3778/3741 +f 3641/3677/3641 3642/3678/3642 3741/3778/3741 +f 3741/3778/3741 3642/3678/3642 3742/3779/3742 +f 3642/3678/3642 3643/3679/3643 3742/3779/3742 +f 3742/3779/3742 3643/3679/3643 3743/3780/3743 +f 3643/3679/3643 3644/3680/3644 3743/3780/3743 +f 3743/3780/3743 3644/3680/3644 3744/3781/3744 +f 3644/3680/3644 3645/3681/3645 3744/3781/3744 +f 3744/3781/3744 3645/3681/3645 3745/3782/3745 +f 3645/3681/3645 3646/3682/3646 3745/3782/3745 +f 3745/3782/3745 3646/3682/3646 3746/3783/3746 +f 3646/3682/3646 3647/3683/3647 3746/3783/3746 +f 3746/3783/3746 3647/3683/3647 3747/3784/3747 +f 3647/3683/3647 3648/3684/3648 3747/3784/3747 +f 3747/3784/3747 3648/3684/3648 3748/3785/3748 +f 3648/3684/3648 3649/3685/3649 3748/3785/3748 +f 3748/3785/3748 3649/3685/3649 3749/3786/3749 +f 3649/3685/3649 3650/3686/3650 3749/3786/3749 +f 3749/3786/3749 3650/3686/3650 3750/3787/3750 +f 3650/3686/3650 3651/3687/3651 3750/3787/3750 +f 3750/3787/3750 3651/3687/3651 3751/3788/3751 +f 3651/3687/3651 3652/3688/3652 3751/3788/3751 +f 3751/3788/3751 3652/3688/3652 3752/3789/3752 +f 3652/3688/3652 3653/3689/3653 3752/3789/3752 +f 3752/3789/3752 3653/3689/3653 3753/3790/3753 +f 3653/3689/3653 3654/3690/3654 3753/3790/3753 +f 3753/3790/3753 3654/3690/3654 3754/3791/3754 +f 3654/3690/3654 3655/3691/3655 3754/3791/3754 +f 3754/3791/3754 3655/3691/3655 3755/3792/3755 +f 3655/3691/3655 3656/3692/3656 3755/3792/3755 +f 3755/3792/3755 3656/3692/3656 3756/3793/3756 +f 3656/3692/3656 3657/3693/3657 3756/3793/3756 +f 3756/3793/3756 3657/3693/3657 3757/3794/3757 +f 3657/3693/3657 3658/3694/3658 3757/3794/3757 +f 3757/3794/3757 3658/3694/3658 3758/3795/3758 +f 3658/3694/3658 3659/3695/3659 3758/3795/3758 +f 3758/3795/3758 3659/3695/3659 3759/3796/3759 +f 3659/3695/3659 3660/3696/3660 3759/3796/3759 +f 3759/3796/3759 3660/3696/3660 3760/3797/3760 +f 3660/3696/3660 3661/3697/3661 3760/3797/3760 +f 3760/3797/3760 3661/3697/3661 3761/3798/3761 +f 3661/3697/3661 3662/3698/3662 3761/3798/3761 +f 3761/3798/3761 3662/3698/3662 3762/3799/3762 +f 3662/3698/3662 3663/3699/3663 3762/3799/3762 +f 3762/3799/3762 3663/3699/3663 3763/3800/3763 +f 3663/3699/3663 3664/3700/3664 3763/3800/3763 +f 3763/3800/3763 3664/3700/3664 3764/3801/3764 +f 3664/3700/3664 3665/3701/3665 3764/3801/3764 +f 3764/3801/3764 3665/3701/3665 3765/3802/3765 +f 3665/3701/3665 3666/3702/3666 3765/3802/3765 +f 3765/3802/3765 3666/3702/3666 3766/3803/3766 +f 3666/3702/3666 3667/3703/3667 3766/3803/3766 +f 3766/3803/3766 3667/3703/3667 3767/3804/3767 +f 3667/3703/3667 3668/3704/3668 3767/3804/3767 +f 3767/3804/3767 3668/3704/3668 3768/3805/3768 +f 3668/3704/3668 3669/3705/3669 3768/3805/3768 +f 3768/3805/3768 3669/3705/3669 3769/3806/3769 +f 3669/3705/3669 3670/3706/3670 3769/3806/3769 +f 3769/3806/3769 3670/3706/3670 3770/3807/3770 +f 3670/3706/3670 3671/3707/3671 3770/3807/3770 +f 3770/3807/3770 3671/3707/3671 3771/3808/3771 +f 3671/3707/3671 3672/3708/3672 3771/3808/3771 +f 3771/3808/3771 3672/3708/3672 3772/3809/3772 +f 3672/3708/3672 3673/3709/3673 3772/3809/3772 +f 3772/3809/3772 3673/3709/3673 3773/3810/3773 +f 3673/3709/3673 3674/3710/3674 3773/3810/3773 +f 3773/3810/3773 3674/3710/3674 3774/3811/3774 +f 3674/3710/3674 3675/3711/3675 3774/3811/3774 +f 3774/3811/3774 3675/3711/3675 3775/3812/3775 +f 3675/3711/3675 3676/3712/3676 3775/3812/3775 +f 3775/3812/3775 3676/3712/3676 3776/3813/3776 +f 3676/3712/3676 3677/3713/3677 3776/3813/3776 +f 3776/3813/3776 3677/3713/3677 3777/3814/3777 +f 3677/3713/3677 3678/3714/3678 3777/3814/3777 +f 3777/3814/3777 3678/3714/3678 3778/3815/3778 +f 3678/3714/3678 3679/3715/3679 3778/3815/3778 +f 3778/3815/3778 3679/3715/3679 3779/3816/3779 +f 3679/3715/3679 3680/3716/3680 3779/3816/3779 +f 3779/3816/3779 3680/3716/3680 3780/3817/3780 +f 3680/3716/3680 3681/3717/3681 3780/3817/3780 +f 3780/3817/3780 3681/3717/3681 3781/3818/3781 +f 3681/3717/3681 3682/3718/3682 3781/3818/3781 +f 3781/3818/3781 3682/3718/3682 3782/3819/3782 +f 3682/3718/3682 3683/3719/3683 3782/3819/3782 +f 3782/3819/3782 3683/3719/3683 3783/3820/3783 +f 3683/3719/3683 3684/3720/3684 3783/3820/3783 +f 3783/3820/3783 3684/3720/3684 3784/3821/3784 +f 3684/3720/3684 3685/3721/3685 3784/3821/3784 +f 3784/3821/3784 3685/3721/3685 3785/3822/3785 +f 3685/3721/3685 3686/3722/3686 3785/3822/3785 +f 3785/3822/3785 3686/3722/3686 3786/3823/3786 +f 3686/3722/3686 3687/3723/3687 3786/3823/3786 +f 3786/3823/3786 3687/3723/3687 3787/3824/3787 +f 3687/3723/3687 3688/3724/3688 3787/3824/3787 +f 3787/3824/3787 3688/3724/3688 3788/3825/3788 +f 3688/3724/3688 3689/3725/3689 3788/3825/3788 +f 3788/3825/3788 3689/3725/3689 3789/3826/3789 +f 3689/3725/3689 3690/3726/3690 3789/3826/3789 +f 3789/3826/3789 3690/3726/3690 3790/3827/3790 +f 3690/3726/3690 3691/3727/3691 3790/3827/3790 +f 3790/3827/3790 3691/3727/3691 3791/3828/3791 +f 3691/3727/3691 3692/3728/3692 3791/3828/3791 +f 3791/3828/3791 3692/3728/3692 3792/3829/3792 +f 3692/3728/3692 3693/3729/3693 3792/3829/3792 +f 3792/3829/3792 3693/3729/3693 3793/3830/3793 +f 3693/3729/3693 3694/3730/3694 3793/3830/3793 +f 3793/3830/3793 3694/3730/3694 3794/3831/3794 +f 3694/3730/3694 3695/3731/3695 3794/3831/3794 +f 3794/3831/3794 3695/3731/3695 3795/3832/3795 +f 3695/3731/3695 3696/3732/3696 3795/3832/3795 +f 3795/3832/3795 3696/3732/3696 3796/3833/3796 +f 3696/3732/3696 3697/3733/3697 3796/3833/3796 +f 3796/3833/3796 3697/3733/3697 3797/3834/3797 +f 3697/3733/3697 3698/3734/3698 3797/3834/3797 +f 3797/3834/3797 3698/3734/3698 3798/3835/3798 +f 3698/3734/3698 3699/3735/3699 3798/3835/3798 +f 3798/3835/3798 3699/3735/3699 3799/3836/3799 +f 3699/3735/3699 3700/3736/3700 3799/3836/3799 +f 3799/3836/3799 3700/3736/3700 3800/3837/3800 +f 3700/3736/3700 3601/3737/3601 3800/3837/3800 +f 3800/3837/3800 3601/3737/3601 3701/3838/3701 +f 3701/3738/3701 3702/3739/3702 3801/3839/3801 +f 3801/3839/3801 3702/3739/3702 3802/3840/3802 +f 3702/3739/3702 3703/3740/3703 3802/3840/3802 +f 3802/3840/3802 3703/3740/3703 3803/3841/3803 +f 3703/3740/3703 3704/3741/3704 3803/3841/3803 +f 3803/3841/3803 3704/3741/3704 3804/3842/3804 +f 3704/3741/3704 3705/3742/3705 3804/3842/3804 +f 3804/3842/3804 3705/3742/3705 3805/3843/3805 +f 3705/3742/3705 3706/3743/3706 3805/3843/3805 +f 3805/3843/3805 3706/3743/3706 3806/3844/3806 +f 3706/3743/3706 3707/3744/3707 3806/3844/3806 +f 3806/3844/3806 3707/3744/3707 3807/3845/3807 +f 3707/3744/3707 3708/3745/3708 3807/3845/3807 +f 3807/3845/3807 3708/3745/3708 3808/3846/3808 +f 3708/3745/3708 3709/3746/3709 3808/3846/3808 +f 3808/3846/3808 3709/3746/3709 3809/3847/3809 +f 3709/3746/3709 3710/3747/3710 3809/3847/3809 +f 3809/3847/3809 3710/3747/3710 3810/3848/3810 +f 3710/3747/3710 3711/3748/3711 3810/3848/3810 +f 3810/3848/3810 3711/3748/3711 3811/3849/3811 +f 3711/3748/3711 3712/3749/3712 3811/3849/3811 +f 3811/3849/3811 3712/3749/3712 3812/3850/3812 +f 3712/3749/3712 3713/3750/3713 3812/3850/3812 +f 3812/3850/3812 3713/3750/3713 3813/3851/3813 +f 3713/3750/3713 3714/3751/3714 3813/3851/3813 +f 3813/3851/3813 3714/3751/3714 3814/3852/3814 +f 3714/3751/3714 3715/3752/3715 3814/3852/3814 +f 3814/3852/3814 3715/3752/3715 3815/3853/3815 +f 3715/3752/3715 3716/3753/3716 3815/3853/3815 +f 3815/3853/3815 3716/3753/3716 3816/3854/3816 +f 3716/3753/3716 3717/3754/3717 3816/3854/3816 +f 3816/3854/3816 3717/3754/3717 3817/3855/3817 +f 3717/3754/3717 3718/3755/3718 3817/3855/3817 +f 3817/3855/3817 3718/3755/3718 3818/3856/3818 +f 3718/3755/3718 3719/3756/3719 3818/3856/3818 +f 3818/3856/3818 3719/3756/3719 3819/3857/3819 +f 3719/3756/3719 3720/3757/3720 3819/3857/3819 +f 3819/3857/3819 3720/3757/3720 3820/3858/3820 +f 3720/3757/3720 3721/3758/3721 3820/3858/3820 +f 3820/3858/3820 3721/3758/3721 3821/3859/3821 +f 3721/3758/3721 3722/3759/3722 3821/3859/3821 +f 3821/3859/3821 3722/3759/3722 3822/3860/3822 +f 3722/3759/3722 3723/3760/3723 3822/3860/3822 +f 3822/3860/3822 3723/3760/3723 3823/3861/3823 +f 3723/3760/3723 3724/3761/3724 3823/3861/3823 +f 3823/3861/3823 3724/3761/3724 3824/3862/3824 +f 3724/3761/3724 3725/3762/3725 3824/3862/3824 +f 3824/3862/3824 3725/3762/3725 3825/3863/3825 +f 3725/3762/3725 3726/3763/3726 3825/3863/3825 +f 3825/3863/3825 3726/3763/3726 3826/3864/3826 +f 3726/3763/3726 3727/3764/3727 3826/3864/3826 +f 3826/3864/3826 3727/3764/3727 3827/3865/3827 +f 3727/3764/3727 3728/3765/3728 3827/3865/3827 +f 3827/3865/3827 3728/3765/3728 3828/3866/3828 +f 3728/3765/3728 3729/3766/3729 3828/3866/3828 +f 3828/3866/3828 3729/3766/3729 3829/3867/3829 +f 3729/3766/3729 3730/3767/3730 3829/3867/3829 +f 3829/3867/3829 3730/3767/3730 3830/3868/3830 +f 3730/3767/3730 3731/3768/3731 3830/3868/3830 +f 3830/3868/3830 3731/3768/3731 3831/3869/3831 +f 3731/3768/3731 3732/3769/3732 3831/3869/3831 +f 3831/3869/3831 3732/3769/3732 3832/3870/3832 +f 3732/3769/3732 3733/3770/3733 3832/3870/3832 +f 3832/3870/3832 3733/3770/3733 3833/3871/3833 +f 3733/3770/3733 3734/3771/3734 3833/3871/3833 +f 3833/3871/3833 3734/3771/3734 3834/3872/3834 +f 3734/3771/3734 3735/3772/3735 3834/3872/3834 +f 3834/3872/3834 3735/3772/3735 3835/3873/3835 +f 3735/3772/3735 3736/3773/3736 3835/3873/3835 +f 3835/3873/3835 3736/3773/3736 3836/3874/3836 +f 3736/3773/3736 3737/3774/3737 3836/3874/3836 +f 3836/3874/3836 3737/3774/3737 3837/3875/3837 +f 3737/3774/3737 3738/3775/3738 3837/3875/3837 +f 3837/3875/3837 3738/3775/3738 3838/3876/3838 +f 3738/3775/3738 3739/3776/3739 3838/3876/3838 +f 3838/3876/3838 3739/3776/3739 3839/3877/3839 +f 3739/3776/3739 3740/3777/3740 3839/3877/3839 +f 3839/3877/3839 3740/3777/3740 3840/3878/3840 +f 3740/3777/3740 3741/3778/3741 3840/3878/3840 +f 3840/3878/3840 3741/3778/3741 3841/3879/3841 +f 3741/3778/3741 3742/3779/3742 3841/3879/3841 +f 3841/3879/3841 3742/3779/3742 3842/3880/3842 +f 3742/3779/3742 3743/3780/3743 3842/3880/3842 +f 3842/3880/3842 3743/3780/3743 3843/3881/3843 +f 3743/3780/3743 3744/3781/3744 3843/3881/3843 +f 3843/3881/3843 3744/3781/3744 3844/3882/3844 +f 3744/3781/3744 3745/3782/3745 3844/3882/3844 +f 3844/3882/3844 3745/3782/3745 3845/3883/3845 +f 3745/3782/3745 3746/3783/3746 3845/3883/3845 +f 3845/3883/3845 3746/3783/3746 3846/3884/3846 +f 3746/3783/3746 3747/3784/3747 3846/3884/3846 +f 3846/3884/3846 3747/3784/3747 3847/3885/3847 +f 3747/3784/3747 3748/3785/3748 3847/3885/3847 +f 3847/3885/3847 3748/3785/3748 3848/3886/3848 +f 3748/3785/3748 3749/3786/3749 3848/3886/3848 +f 3848/3886/3848 3749/3786/3749 3849/3887/3849 +f 3749/3786/3749 3750/3787/3750 3849/3887/3849 +f 3849/3887/3849 3750/3787/3750 3850/3888/3850 +f 3750/3787/3750 3751/3788/3751 3850/3888/3850 +f 3850/3888/3850 3751/3788/3751 3851/3889/3851 +f 3751/3788/3751 3752/3789/3752 3851/3889/3851 +f 3851/3889/3851 3752/3789/3752 3852/3890/3852 +f 3752/3789/3752 3753/3790/3753 3852/3890/3852 +f 3852/3890/3852 3753/3790/3753 3853/3891/3853 +f 3753/3790/3753 3754/3791/3754 3853/3891/3853 +f 3853/3891/3853 3754/3791/3754 3854/3892/3854 +f 3754/3791/3754 3755/3792/3755 3854/3892/3854 +f 3854/3892/3854 3755/3792/3755 3855/3893/3855 +f 3755/3792/3755 3756/3793/3756 3855/3893/3855 +f 3855/3893/3855 3756/3793/3756 3856/3894/3856 +f 3756/3793/3756 3757/3794/3757 3856/3894/3856 +f 3856/3894/3856 3757/3794/3757 3857/3895/3857 +f 3757/3794/3757 3758/3795/3758 3857/3895/3857 +f 3857/3895/3857 3758/3795/3758 3858/3896/3858 +f 3758/3795/3758 3759/3796/3759 3858/3896/3858 +f 3858/3896/3858 3759/3796/3759 3859/3897/3859 +f 3759/3796/3759 3760/3797/3760 3859/3897/3859 +f 3859/3897/3859 3760/3797/3760 3860/3898/3860 +f 3760/3797/3760 3761/3798/3761 3860/3898/3860 +f 3860/3898/3860 3761/3798/3761 3861/3899/3861 +f 3761/3798/3761 3762/3799/3762 3861/3899/3861 +f 3861/3899/3861 3762/3799/3762 3862/3900/3862 +f 3762/3799/3762 3763/3800/3763 3862/3900/3862 +f 3862/3900/3862 3763/3800/3763 3863/3901/3863 +f 3763/3800/3763 3764/3801/3764 3863/3901/3863 +f 3863/3901/3863 3764/3801/3764 3864/3902/3864 +f 3764/3801/3764 3765/3802/3765 3864/3902/3864 +f 3864/3902/3864 3765/3802/3765 3865/3903/3865 +f 3765/3802/3765 3766/3803/3766 3865/3903/3865 +f 3865/3903/3865 3766/3803/3766 3866/3904/3866 +f 3766/3803/3766 3767/3804/3767 3866/3904/3866 +f 3866/3904/3866 3767/3804/3767 3867/3905/3867 +f 3767/3804/3767 3768/3805/3768 3867/3905/3867 +f 3867/3905/3867 3768/3805/3768 3868/3906/3868 +f 3768/3805/3768 3769/3806/3769 3868/3906/3868 +f 3868/3906/3868 3769/3806/3769 3869/3907/3869 +f 3769/3806/3769 3770/3807/3770 3869/3907/3869 +f 3869/3907/3869 3770/3807/3770 3870/3908/3870 +f 3770/3807/3770 3771/3808/3771 3870/3908/3870 +f 3870/3908/3870 3771/3808/3771 3871/3909/3871 +f 3771/3808/3771 3772/3809/3772 3871/3909/3871 +f 3871/3909/3871 3772/3809/3772 3872/3910/3872 +f 3772/3809/3772 3773/3810/3773 3872/3910/3872 +f 3872/3910/3872 3773/3810/3773 3873/3911/3873 +f 3773/3810/3773 3774/3811/3774 3873/3911/3873 +f 3873/3911/3873 3774/3811/3774 3874/3912/3874 +f 3774/3811/3774 3775/3812/3775 3874/3912/3874 +f 3874/3912/3874 3775/3812/3775 3875/3913/3875 +f 3775/3812/3775 3776/3813/3776 3875/3913/3875 +f 3875/3913/3875 3776/3813/3776 3876/3914/3876 +f 3776/3813/3776 3777/3814/3777 3876/3914/3876 +f 3876/3914/3876 3777/3814/3777 3877/3915/3877 +f 3777/3814/3777 3778/3815/3778 3877/3915/3877 +f 3877/3915/3877 3778/3815/3778 3878/3916/3878 +f 3778/3815/3778 3779/3816/3779 3878/3916/3878 +f 3878/3916/3878 3779/3816/3779 3879/3917/3879 +f 3779/3816/3779 3780/3817/3780 3879/3917/3879 +f 3879/3917/3879 3780/3817/3780 3880/3918/3880 +f 3780/3817/3780 3781/3818/3781 3880/3918/3880 +f 3880/3918/3880 3781/3818/3781 3881/3919/3881 +f 3781/3818/3781 3782/3819/3782 3881/3919/3881 +f 3881/3919/3881 3782/3819/3782 3882/3920/3882 +f 3782/3819/3782 3783/3820/3783 3882/3920/3882 +f 3882/3920/3882 3783/3820/3783 3883/3921/3883 +f 3783/3820/3783 3784/3821/3784 3883/3921/3883 +f 3883/3921/3883 3784/3821/3784 3884/3922/3884 +f 3784/3821/3784 3785/3822/3785 3884/3922/3884 +f 3884/3922/3884 3785/3822/3785 3885/3923/3885 +f 3785/3822/3785 3786/3823/3786 3885/3923/3885 +f 3885/3923/3885 3786/3823/3786 3886/3924/3886 +f 3786/3823/3786 3787/3824/3787 3886/3924/3886 +f 3886/3924/3886 3787/3824/3787 3887/3925/3887 +f 3787/3824/3787 3788/3825/3788 3887/3925/3887 +f 3887/3925/3887 3788/3825/3788 3888/3926/3888 +f 3788/3825/3788 3789/3826/3789 3888/3926/3888 +f 3888/3926/3888 3789/3826/3789 3889/3927/3889 +f 3789/3826/3789 3790/3827/3790 3889/3927/3889 +f 3889/3927/3889 3790/3827/3790 3890/3928/3890 +f 3790/3827/3790 3791/3828/3791 3890/3928/3890 +f 3890/3928/3890 3791/3828/3791 3891/3929/3891 +f 3791/3828/3791 3792/3829/3792 3891/3929/3891 +f 3891/3929/3891 3792/3829/3792 3892/3930/3892 +f 3792/3829/3792 3793/3830/3793 3892/3930/3892 +f 3892/3930/3892 3793/3830/3793 3893/3931/3893 +f 3793/3830/3793 3794/3831/3794 3893/3931/3893 +f 3893/3931/3893 3794/3831/3794 3894/3932/3894 +f 3794/3831/3794 3795/3832/3795 3894/3932/3894 +f 3894/3932/3894 3795/3832/3795 3895/3933/3895 +f 3795/3832/3795 3796/3833/3796 3895/3933/3895 +f 3895/3933/3895 3796/3833/3796 3896/3934/3896 +f 3796/3833/3796 3797/3834/3797 3896/3934/3896 +f 3896/3934/3896 3797/3834/3797 3897/3935/3897 +f 3797/3834/3797 3798/3835/3798 3897/3935/3897 +f 3897/3935/3897 3798/3835/3798 3898/3936/3898 +f 3798/3835/3798 3799/3836/3799 3898/3936/3898 +f 3898/3936/3898 3799/3836/3799 3899/3937/3899 +f 3799/3836/3799 3800/3837/3800 3899/3937/3899 +f 3899/3937/3899 3800/3837/3800 3900/3938/3900 +f 3800/3837/3800 3701/3838/3701 3900/3938/3900 +f 3900/3938/3900 3701/3838/3701 3801/3939/3801 +f 3801/3839/3801 3802/3840/3802 3901/3940/3901 +f 3901/3940/3901 3802/3840/3802 3902/3941/3902 +f 3802/3840/3802 3803/3841/3803 3902/3941/3902 +f 3902/3941/3902 3803/3841/3803 3903/3942/3903 +f 3803/3841/3803 3804/3842/3804 3903/3942/3903 +f 3903/3942/3903 3804/3842/3804 3904/3943/3904 +f 3804/3842/3804 3805/3843/3805 3904/3943/3904 +f 3904/3943/3904 3805/3843/3805 3905/3944/3905 +f 3805/3843/3805 3806/3844/3806 3905/3944/3905 +f 3905/3944/3905 3806/3844/3806 3906/3945/3906 +f 3806/3844/3806 3807/3845/3807 3906/3945/3906 +f 3906/3945/3906 3807/3845/3807 3907/3946/3907 +f 3807/3845/3807 3808/3846/3808 3907/3946/3907 +f 3907/3946/3907 3808/3846/3808 3908/3947/3908 +f 3808/3846/3808 3809/3847/3809 3908/3947/3908 +f 3908/3947/3908 3809/3847/3809 3909/3948/3909 +f 3809/3847/3809 3810/3848/3810 3909/3948/3909 +f 3909/3948/3909 3810/3848/3810 3910/3949/3910 +f 3810/3848/3810 3811/3849/3811 3910/3949/3910 +f 3910/3949/3910 3811/3849/3811 3911/3950/3911 +f 3811/3849/3811 3812/3850/3812 3911/3950/3911 +f 3911/3950/3911 3812/3850/3812 3912/3951/3912 +f 3812/3850/3812 3813/3851/3813 3912/3951/3912 +f 3912/3951/3912 3813/3851/3813 3913/3952/3913 +f 3813/3851/3813 3814/3852/3814 3913/3952/3913 +f 3913/3952/3913 3814/3852/3814 3914/3953/3914 +f 3814/3852/3814 3815/3853/3815 3914/3953/3914 +f 3914/3953/3914 3815/3853/3815 3915/3954/3915 +f 3815/3853/3815 3816/3854/3816 3915/3954/3915 +f 3915/3954/3915 3816/3854/3816 3916/3955/3916 +f 3816/3854/3816 3817/3855/3817 3916/3955/3916 +f 3916/3955/3916 3817/3855/3817 3917/3956/3917 +f 3817/3855/3817 3818/3856/3818 3917/3956/3917 +f 3917/3956/3917 3818/3856/3818 3918/3957/3918 +f 3818/3856/3818 3819/3857/3819 3918/3957/3918 +f 3918/3957/3918 3819/3857/3819 3919/3958/3919 +f 3819/3857/3819 3820/3858/3820 3919/3958/3919 +f 3919/3958/3919 3820/3858/3820 3920/3959/3920 +f 3820/3858/3820 3821/3859/3821 3920/3959/3920 +f 3920/3959/3920 3821/3859/3821 3921/3960/3921 +f 3821/3859/3821 3822/3860/3822 3921/3960/3921 +f 3921/3960/3921 3822/3860/3822 3922/3961/3922 +f 3822/3860/3822 3823/3861/3823 3922/3961/3922 +f 3922/3961/3922 3823/3861/3823 3923/3962/3923 +f 3823/3861/3823 3824/3862/3824 3923/3962/3923 +f 3923/3962/3923 3824/3862/3824 3924/3963/3924 +f 3824/3862/3824 3825/3863/3825 3924/3963/3924 +f 3924/3963/3924 3825/3863/3825 3925/3964/3925 +f 3825/3863/3825 3826/3864/3826 3925/3964/3925 +f 3925/3964/3925 3826/3864/3826 3926/3965/3926 +f 3826/3864/3826 3827/3865/3827 3926/3965/3926 +f 3926/3965/3926 3827/3865/3827 3927/3966/3927 +f 3827/3865/3827 3828/3866/3828 3927/3966/3927 +f 3927/3966/3927 3828/3866/3828 3928/3967/3928 +f 3828/3866/3828 3829/3867/3829 3928/3967/3928 +f 3928/3967/3928 3829/3867/3829 3929/3968/3929 +f 3829/3867/3829 3830/3868/3830 3929/3968/3929 +f 3929/3968/3929 3830/3868/3830 3930/3969/3930 +f 3830/3868/3830 3831/3869/3831 3930/3969/3930 +f 3930/3969/3930 3831/3869/3831 3931/3970/3931 +f 3831/3869/3831 3832/3870/3832 3931/3970/3931 +f 3931/3970/3931 3832/3870/3832 3932/3971/3932 +f 3832/3870/3832 3833/3871/3833 3932/3971/3932 +f 3932/3971/3932 3833/3871/3833 3933/3972/3933 +f 3833/3871/3833 3834/3872/3834 3933/3972/3933 +f 3933/3972/3933 3834/3872/3834 3934/3973/3934 +f 3834/3872/3834 3835/3873/3835 3934/3973/3934 +f 3934/3973/3934 3835/3873/3835 3935/3974/3935 +f 3835/3873/3835 3836/3874/3836 3935/3974/3935 +f 3935/3974/3935 3836/3874/3836 3936/3975/3936 +f 3836/3874/3836 3837/3875/3837 3936/3975/3936 +f 3936/3975/3936 3837/3875/3837 3937/3976/3937 +f 3837/3875/3837 3838/3876/3838 3937/3976/3937 +f 3937/3976/3937 3838/3876/3838 3938/3977/3938 +f 3838/3876/3838 3839/3877/3839 3938/3977/3938 +f 3938/3977/3938 3839/3877/3839 3939/3978/3939 +f 3839/3877/3839 3840/3878/3840 3939/3978/3939 +f 3939/3978/3939 3840/3878/3840 3940/3979/3940 +f 3840/3878/3840 3841/3879/3841 3940/3979/3940 +f 3940/3979/3940 3841/3879/3841 3941/3980/3941 +f 3841/3879/3841 3842/3880/3842 3941/3980/3941 +f 3941/3980/3941 3842/3880/3842 3942/3981/3942 +f 3842/3880/3842 3843/3881/3843 3942/3981/3942 +f 3942/3981/3942 3843/3881/3843 3943/3982/3943 +f 3843/3881/3843 3844/3882/3844 3943/3982/3943 +f 3943/3982/3943 3844/3882/3844 3944/3983/3944 +f 3844/3882/3844 3845/3883/3845 3944/3983/3944 +f 3944/3983/3944 3845/3883/3845 3945/3984/3945 +f 3845/3883/3845 3846/3884/3846 3945/3984/3945 +f 3945/3984/3945 3846/3884/3846 3946/3985/3946 +f 3846/3884/3846 3847/3885/3847 3946/3985/3946 +f 3946/3985/3946 3847/3885/3847 3947/3986/3947 +f 3847/3885/3847 3848/3886/3848 3947/3986/3947 +f 3947/3986/3947 3848/3886/3848 3948/3987/3948 +f 3848/3886/3848 3849/3887/3849 3948/3987/3948 +f 3948/3987/3948 3849/3887/3849 3949/3988/3949 +f 3849/3887/3849 3850/3888/3850 3949/3988/3949 +f 3949/3988/3949 3850/3888/3850 3950/3989/3950 +f 3850/3888/3850 3851/3889/3851 3950/3989/3950 +f 3950/3989/3950 3851/3889/3851 3951/3990/3951 +f 3851/3889/3851 3852/3890/3852 3951/3990/3951 +f 3951/3990/3951 3852/3890/3852 3952/3991/3952 +f 3852/3890/3852 3853/3891/3853 3952/3991/3952 +f 3952/3991/3952 3853/3891/3853 3953/3992/3953 +f 3853/3891/3853 3854/3892/3854 3953/3992/3953 +f 3953/3992/3953 3854/3892/3854 3954/3993/3954 +f 3854/3892/3854 3855/3893/3855 3954/3993/3954 +f 3954/3993/3954 3855/3893/3855 3955/3994/3955 +f 3855/3893/3855 3856/3894/3856 3955/3994/3955 +f 3955/3994/3955 3856/3894/3856 3956/3995/3956 +f 3856/3894/3856 3857/3895/3857 3956/3995/3956 +f 3956/3995/3956 3857/3895/3857 3957/3996/3957 +f 3857/3895/3857 3858/3896/3858 3957/3996/3957 +f 3957/3996/3957 3858/3896/3858 3958/3997/3958 +f 3858/3896/3858 3859/3897/3859 3958/3997/3958 +f 3958/3997/3958 3859/3897/3859 3959/3998/3959 +f 3859/3897/3859 3860/3898/3860 3959/3998/3959 +f 3959/3998/3959 3860/3898/3860 3960/3999/3960 +f 3860/3898/3860 3861/3899/3861 3960/3999/3960 +f 3960/3999/3960 3861/3899/3861 3961/4000/3961 +f 3861/3899/3861 3862/3900/3862 3961/4000/3961 +f 3961/4000/3961 3862/3900/3862 3962/4001/3962 +f 3862/3900/3862 3863/3901/3863 3962/4001/3962 +f 3962/4001/3962 3863/3901/3863 3963/4002/3963 +f 3863/3901/3863 3864/3902/3864 3963/4002/3963 +f 3963/4002/3963 3864/3902/3864 3964/4003/3964 +f 3864/3902/3864 3865/3903/3865 3964/4003/3964 +f 3964/4003/3964 3865/3903/3865 3965/4004/3965 +f 3865/3903/3865 3866/3904/3866 3965/4004/3965 +f 3965/4004/3965 3866/3904/3866 3966/4005/3966 +f 3866/3904/3866 3867/3905/3867 3966/4005/3966 +f 3966/4005/3966 3867/3905/3867 3967/4006/3967 +f 3867/3905/3867 3868/3906/3868 3967/4006/3967 +f 3967/4006/3967 3868/3906/3868 3968/4007/3968 +f 3868/3906/3868 3869/3907/3869 3968/4007/3968 +f 3968/4007/3968 3869/3907/3869 3969/4008/3969 +f 3869/3907/3869 3870/3908/3870 3969/4008/3969 +f 3969/4008/3969 3870/3908/3870 3970/4009/3970 +f 3870/3908/3870 3871/3909/3871 3970/4009/3970 +f 3970/4009/3970 3871/3909/3871 3971/4010/3971 +f 3871/3909/3871 3872/3910/3872 3971/4010/3971 +f 3971/4010/3971 3872/3910/3872 3972/4011/3972 +f 3872/3910/3872 3873/3911/3873 3972/4011/3972 +f 3972/4011/3972 3873/3911/3873 3973/4012/3973 +f 3873/3911/3873 3874/3912/3874 3973/4012/3973 +f 3973/4012/3973 3874/3912/3874 3974/4013/3974 +f 3874/3912/3874 3875/3913/3875 3974/4013/3974 +f 3974/4013/3974 3875/3913/3875 3975/4014/3975 +f 3875/3913/3875 3876/3914/3876 3975/4014/3975 +f 3975/4014/3975 3876/3914/3876 3976/4015/3976 +f 3876/3914/3876 3877/3915/3877 3976/4015/3976 +f 3976/4015/3976 3877/3915/3877 3977/4016/3977 +f 3877/3915/3877 3878/3916/3878 3977/4016/3977 +f 3977/4016/3977 3878/3916/3878 3978/4017/3978 +f 3878/3916/3878 3879/3917/3879 3978/4017/3978 +f 3978/4017/3978 3879/3917/3879 3979/4018/3979 +f 3879/3917/3879 3880/3918/3880 3979/4018/3979 +f 3979/4018/3979 3880/3918/3880 3980/4019/3980 +f 3880/3918/3880 3881/3919/3881 3980/4019/3980 +f 3980/4019/3980 3881/3919/3881 3981/4020/3981 +f 3881/3919/3881 3882/3920/3882 3981/4020/3981 +f 3981/4020/3981 3882/3920/3882 3982/4021/3982 +f 3882/3920/3882 3883/3921/3883 3982/4021/3982 +f 3982/4021/3982 3883/3921/3883 3983/4022/3983 +f 3883/3921/3883 3884/3922/3884 3983/4022/3983 +f 3983/4022/3983 3884/3922/3884 3984/4023/3984 +f 3884/3922/3884 3885/3923/3885 3984/4023/3984 +f 3984/4023/3984 3885/3923/3885 3985/4024/3985 +f 3885/3923/3885 3886/3924/3886 3985/4024/3985 +f 3985/4024/3985 3886/3924/3886 3986/4025/3986 +f 3886/3924/3886 3887/3925/3887 3986/4025/3986 +f 3986/4025/3986 3887/3925/3887 3987/4026/3987 +f 3887/3925/3887 3888/3926/3888 3987/4026/3987 +f 3987/4026/3987 3888/3926/3888 3988/4027/3988 +f 3888/3926/3888 3889/3927/3889 3988/4027/3988 +f 3988/4027/3988 3889/3927/3889 3989/4028/3989 +f 3889/3927/3889 3890/3928/3890 3989/4028/3989 +f 3989/4028/3989 3890/3928/3890 3990/4029/3990 +f 3890/3928/3890 3891/3929/3891 3990/4029/3990 +f 3990/4029/3990 3891/3929/3891 3991/4030/3991 +f 3891/3929/3891 3892/3930/3892 3991/4030/3991 +f 3991/4030/3991 3892/3930/3892 3992/4031/3992 +f 3892/3930/3892 3893/3931/3893 3992/4031/3992 +f 3992/4031/3992 3893/3931/3893 3993/4032/3993 +f 3893/3931/3893 3894/3932/3894 3993/4032/3993 +f 3993/4032/3993 3894/3932/3894 3994/4033/3994 +f 3894/3932/3894 3895/3933/3895 3994/4033/3994 +f 3994/4033/3994 3895/3933/3895 3995/4034/3995 +f 3895/3933/3895 3896/3934/3896 3995/4034/3995 +f 3995/4034/3995 3896/3934/3896 3996/4035/3996 +f 3896/3934/3896 3897/3935/3897 3996/4035/3996 +f 3996/4035/3996 3897/3935/3897 3997/4036/3997 +f 3897/3935/3897 3898/3936/3898 3997/4036/3997 +f 3997/4036/3997 3898/3936/3898 3998/4037/3998 +f 3898/3936/3898 3899/3937/3899 3998/4037/3998 +f 3998/4037/3998 3899/3937/3899 3999/4038/3999 +f 3899/3937/3899 3900/3938/3900 3999/4038/3999 +f 3999/4038/3999 3900/3938/3900 4000/4039/4000 +f 3900/3938/3900 3801/3939/3801 4000/4039/4000 +f 4000/4039/4000 3801/3939/3801 3901/4040/3901 +f 3901/3940/3901 3902/3941/3902 4001/4041/4001 +f 4001/4041/4001 3902/3941/3902 4002/4042/4002 +f 3902/3941/3902 3903/3942/3903 4002/4042/4002 +f 4002/4042/4002 3903/3942/3903 4003/4043/4003 +f 3903/3942/3903 3904/3943/3904 4003/4043/4003 +f 4003/4043/4003 3904/3943/3904 4004/4044/4004 +f 3904/3943/3904 3905/3944/3905 4004/4044/4004 +f 4004/4044/4004 3905/3944/3905 4005/4045/4005 +f 3905/3944/3905 3906/3945/3906 4005/4045/4005 +f 4005/4045/4005 3906/3945/3906 4006/4046/4006 +f 3906/3945/3906 3907/3946/3907 4006/4046/4006 +f 4006/4046/4006 3907/3946/3907 4007/4047/4007 +f 3907/3946/3907 3908/3947/3908 4007/4047/4007 +f 4007/4047/4007 3908/3947/3908 4008/4048/4008 +f 3908/3947/3908 3909/3948/3909 4008/4048/4008 +f 4008/4048/4008 3909/3948/3909 4009/4049/4009 +f 3909/3948/3909 3910/3949/3910 4009/4049/4009 +f 4009/4049/4009 3910/3949/3910 4010/4050/4010 +f 3910/3949/3910 3911/3950/3911 4010/4050/4010 +f 4010/4050/4010 3911/3950/3911 4011/4051/4011 +f 3911/3950/3911 3912/3951/3912 4011/4051/4011 +f 4011/4051/4011 3912/3951/3912 4012/4052/4012 +f 3912/3951/3912 3913/3952/3913 4012/4052/4012 +f 4012/4052/4012 3913/3952/3913 4013/4053/4013 +f 3913/3952/3913 3914/3953/3914 4013/4053/4013 +f 4013/4053/4013 3914/3953/3914 4014/4054/4014 +f 3914/3953/3914 3915/3954/3915 4014/4054/4014 +f 4014/4054/4014 3915/3954/3915 4015/4055/4015 +f 3915/3954/3915 3916/3955/3916 4015/4055/4015 +f 4015/4055/4015 3916/3955/3916 4016/4056/4016 +f 3916/3955/3916 3917/3956/3917 4016/4056/4016 +f 4016/4056/4016 3917/3956/3917 4017/4057/4017 +f 3917/3956/3917 3918/3957/3918 4017/4057/4017 +f 4017/4057/4017 3918/3957/3918 4018/4058/4018 +f 3918/3957/3918 3919/3958/3919 4018/4058/4018 +f 4018/4058/4018 3919/3958/3919 4019/4059/4019 +f 3919/3958/3919 3920/3959/3920 4019/4059/4019 +f 4019/4059/4019 3920/3959/3920 4020/4060/4020 +f 3920/3959/3920 3921/3960/3921 4020/4060/4020 +f 4020/4060/4020 3921/3960/3921 4021/4061/4021 +f 3921/3960/3921 3922/3961/3922 4021/4061/4021 +f 4021/4061/4021 3922/3961/3922 4022/4062/4022 +f 3922/3961/3922 3923/3962/3923 4022/4062/4022 +f 4022/4062/4022 3923/3962/3923 4023/4063/4023 +f 3923/3962/3923 3924/3963/3924 4023/4063/4023 +f 4023/4063/4023 3924/3963/3924 4024/4064/4024 +f 3924/3963/3924 3925/3964/3925 4024/4064/4024 +f 4024/4064/4024 3925/3964/3925 4025/4065/4025 +f 3925/3964/3925 3926/3965/3926 4025/4065/4025 +f 4025/4065/4025 3926/3965/3926 4026/4066/4026 +f 3926/3965/3926 3927/3966/3927 4026/4066/4026 +f 4026/4066/4026 3927/3966/3927 4027/4067/4027 +f 3927/3966/3927 3928/3967/3928 4027/4067/4027 +f 4027/4067/4027 3928/3967/3928 4028/4068/4028 +f 3928/3967/3928 3929/3968/3929 4028/4068/4028 +f 4028/4068/4028 3929/3968/3929 4029/4069/4029 +f 3929/3968/3929 3930/3969/3930 4029/4069/4029 +f 4029/4069/4029 3930/3969/3930 4030/4070/4030 +f 3930/3969/3930 3931/3970/3931 4030/4070/4030 +f 4030/4070/4030 3931/3970/3931 4031/4071/4031 +f 3931/3970/3931 3932/3971/3932 4031/4071/4031 +f 4031/4071/4031 3932/3971/3932 4032/4072/4032 +f 3932/3971/3932 3933/3972/3933 4032/4072/4032 +f 4032/4072/4032 3933/3972/3933 4033/4073/4033 +f 3933/3972/3933 3934/3973/3934 4033/4073/4033 +f 4033/4073/4033 3934/3973/3934 4034/4074/4034 +f 3934/3973/3934 3935/3974/3935 4034/4074/4034 +f 4034/4074/4034 3935/3974/3935 4035/4075/4035 +f 3935/3974/3935 3936/3975/3936 4035/4075/4035 +f 4035/4075/4035 3936/3975/3936 4036/4076/4036 +f 3936/3975/3936 3937/3976/3937 4036/4076/4036 +f 4036/4076/4036 3937/3976/3937 4037/4077/4037 +f 3937/3976/3937 3938/3977/3938 4037/4077/4037 +f 4037/4077/4037 3938/3977/3938 4038/4078/4038 +f 3938/3977/3938 3939/3978/3939 4038/4078/4038 +f 4038/4078/4038 3939/3978/3939 4039/4079/4039 +f 3939/3978/3939 3940/3979/3940 4039/4079/4039 +f 4039/4079/4039 3940/3979/3940 4040/4080/4040 +f 3940/3979/3940 3941/3980/3941 4040/4080/4040 +f 4040/4080/4040 3941/3980/3941 4041/4081/4041 +f 3941/3980/3941 3942/3981/3942 4041/4081/4041 +f 4041/4081/4041 3942/3981/3942 4042/4082/4042 +f 3942/3981/3942 3943/3982/3943 4042/4082/4042 +f 4042/4082/4042 3943/3982/3943 4043/4083/4043 +f 3943/3982/3943 3944/3983/3944 4043/4083/4043 +f 4043/4083/4043 3944/3983/3944 4044/4084/4044 +f 3944/3983/3944 3945/3984/3945 4044/4084/4044 +f 4044/4084/4044 3945/3984/3945 4045/4085/4045 +f 3945/3984/3945 3946/3985/3946 4045/4085/4045 +f 4045/4085/4045 3946/3985/3946 4046/4086/4046 +f 3946/3985/3946 3947/3986/3947 4046/4086/4046 +f 4046/4086/4046 3947/3986/3947 4047/4087/4047 +f 3947/3986/3947 3948/3987/3948 4047/4087/4047 +f 4047/4087/4047 3948/3987/3948 4048/4088/4048 +f 3948/3987/3948 3949/3988/3949 4048/4088/4048 +f 4048/4088/4048 3949/3988/3949 4049/4089/4049 +f 3949/3988/3949 3950/3989/3950 4049/4089/4049 +f 4049/4089/4049 3950/3989/3950 4050/4090/4050 +f 3950/3989/3950 3951/3990/3951 4050/4090/4050 +f 4050/4090/4050 3951/3990/3951 4051/4091/4051 +f 3951/3990/3951 3952/3991/3952 4051/4091/4051 +f 4051/4091/4051 3952/3991/3952 4052/4092/4052 +f 3952/3991/3952 3953/3992/3953 4052/4092/4052 +f 4052/4092/4052 3953/3992/3953 4053/4093/4053 +f 3953/3992/3953 3954/3993/3954 4053/4093/4053 +f 4053/4093/4053 3954/3993/3954 4054/4094/4054 +f 3954/3993/3954 3955/3994/3955 4054/4094/4054 +f 4054/4094/4054 3955/3994/3955 4055/4095/4055 +f 3955/3994/3955 3956/3995/3956 4055/4095/4055 +f 4055/4095/4055 3956/3995/3956 4056/4096/4056 +f 3956/3995/3956 3957/3996/3957 4056/4096/4056 +f 4056/4096/4056 3957/3996/3957 4057/4097/4057 +f 3957/3996/3957 3958/3997/3958 4057/4097/4057 +f 4057/4097/4057 3958/3997/3958 4058/4098/4058 +f 3958/3997/3958 3959/3998/3959 4058/4098/4058 +f 4058/4098/4058 3959/3998/3959 4059/4099/4059 +f 3959/3998/3959 3960/3999/3960 4059/4099/4059 +f 4059/4099/4059 3960/3999/3960 4060/4100/4060 +f 3960/3999/3960 3961/4000/3961 4060/4100/4060 +f 4060/4100/4060 3961/4000/3961 4061/4101/4061 +f 3961/4000/3961 3962/4001/3962 4061/4101/4061 +f 4061/4101/4061 3962/4001/3962 4062/4102/4062 +f 3962/4001/3962 3963/4002/3963 4062/4102/4062 +f 4062/4102/4062 3963/4002/3963 4063/4103/4063 +f 3963/4002/3963 3964/4003/3964 4063/4103/4063 +f 4063/4103/4063 3964/4003/3964 4064/4104/4064 +f 3964/4003/3964 3965/4004/3965 4064/4104/4064 +f 4064/4104/4064 3965/4004/3965 4065/4105/4065 +f 3965/4004/3965 3966/4005/3966 4065/4105/4065 +f 4065/4105/4065 3966/4005/3966 4066/4106/4066 +f 3966/4005/3966 3967/4006/3967 4066/4106/4066 +f 4066/4106/4066 3967/4006/3967 4067/4107/4067 +f 3967/4006/3967 3968/4007/3968 4067/4107/4067 +f 4067/4107/4067 3968/4007/3968 4068/4108/4068 +f 3968/4007/3968 3969/4008/3969 4068/4108/4068 +f 4068/4108/4068 3969/4008/3969 4069/4109/4069 +f 3969/4008/3969 3970/4009/3970 4069/4109/4069 +f 4069/4109/4069 3970/4009/3970 4070/4110/4070 +f 3970/4009/3970 3971/4010/3971 4070/4110/4070 +f 4070/4110/4070 3971/4010/3971 4071/4111/4071 +f 3971/4010/3971 3972/4011/3972 4071/4111/4071 +f 4071/4111/4071 3972/4011/3972 4072/4112/4072 +f 3972/4011/3972 3973/4012/3973 4072/4112/4072 +f 4072/4112/4072 3973/4012/3973 4073/4113/4073 +f 3973/4012/3973 3974/4013/3974 4073/4113/4073 +f 4073/4113/4073 3974/4013/3974 4074/4114/4074 +f 3974/4013/3974 3975/4014/3975 4074/4114/4074 +f 4074/4114/4074 3975/4014/3975 4075/4115/4075 +f 3975/4014/3975 3976/4015/3976 4075/4115/4075 +f 4075/4115/4075 3976/4015/3976 4076/4116/4076 +f 3976/4015/3976 3977/4016/3977 4076/4116/4076 +f 4076/4116/4076 3977/4016/3977 4077/4117/4077 +f 3977/4016/3977 3978/4017/3978 4077/4117/4077 +f 4077/4117/4077 3978/4017/3978 4078/4118/4078 +f 3978/4017/3978 3979/4018/3979 4078/4118/4078 +f 4078/4118/4078 3979/4018/3979 4079/4119/4079 +f 3979/4018/3979 3980/4019/3980 4079/4119/4079 +f 4079/4119/4079 3980/4019/3980 4080/4120/4080 +f 3980/4019/3980 3981/4020/3981 4080/4120/4080 +f 4080/4120/4080 3981/4020/3981 4081/4121/4081 +f 3981/4020/3981 3982/4021/3982 4081/4121/4081 +f 4081/4121/4081 3982/4021/3982 4082/4122/4082 +f 3982/4021/3982 3983/4022/3983 4082/4122/4082 +f 4082/4122/4082 3983/4022/3983 4083/4123/4083 +f 3983/4022/3983 3984/4023/3984 4083/4123/4083 +f 4083/4123/4083 3984/4023/3984 4084/4124/4084 +f 3984/4023/3984 3985/4024/3985 4084/4124/4084 +f 4084/4124/4084 3985/4024/3985 4085/4125/4085 +f 3985/4024/3985 3986/4025/3986 4085/4125/4085 +f 4085/4125/4085 3986/4025/3986 4086/4126/4086 +f 3986/4025/3986 3987/4026/3987 4086/4126/4086 +f 4086/4126/4086 3987/4026/3987 4087/4127/4087 +f 3987/4026/3987 3988/4027/3988 4087/4127/4087 +f 4087/4127/4087 3988/4027/3988 4088/4128/4088 +f 3988/4027/3988 3989/4028/3989 4088/4128/4088 +f 4088/4128/4088 3989/4028/3989 4089/4129/4089 +f 3989/4028/3989 3990/4029/3990 4089/4129/4089 +f 4089/4129/4089 3990/4029/3990 4090/4130/4090 +f 3990/4029/3990 3991/4030/3991 4090/4130/4090 +f 4090/4130/4090 3991/4030/3991 4091/4131/4091 +f 3991/4030/3991 3992/4031/3992 4091/4131/4091 +f 4091/4131/4091 3992/4031/3992 4092/4132/4092 +f 3992/4031/3992 3993/4032/3993 4092/4132/4092 +f 4092/4132/4092 3993/4032/3993 4093/4133/4093 +f 3993/4032/3993 3994/4033/3994 4093/4133/4093 +f 4093/4133/4093 3994/4033/3994 4094/4134/4094 +f 3994/4033/3994 3995/4034/3995 4094/4134/4094 +f 4094/4134/4094 3995/4034/3995 4095/4135/4095 +f 3995/4034/3995 3996/4035/3996 4095/4135/4095 +f 4095/4135/4095 3996/4035/3996 4096/4136/4096 +f 3996/4035/3996 3997/4036/3997 4096/4136/4096 +f 4096/4136/4096 3997/4036/3997 4097/4137/4097 +f 3997/4036/3997 3998/4037/3998 4097/4137/4097 +f 4097/4137/4097 3998/4037/3998 4098/4138/4098 +f 3998/4037/3998 3999/4038/3999 4098/4138/4098 +f 4098/4138/4098 3999/4038/3999 4099/4139/4099 +f 3999/4038/3999 4000/4039/4000 4099/4139/4099 +f 4099/4139/4099 4000/4039/4000 4100/4140/4100 +f 4000/4039/4000 3901/4040/3901 4100/4140/4100 +f 4100/4140/4100 3901/4040/3901 4001/4141/4001 +f 4001/4041/4001 4002/4042/4002 4101/4142/4101 +f 4101/4142/4101 4002/4042/4002 4102/4143/4102 +f 4002/4042/4002 4003/4043/4003 4102/4143/4102 +f 4102/4143/4102 4003/4043/4003 4103/4144/4103 +f 4003/4043/4003 4004/4044/4004 4103/4144/4103 +f 4103/4144/4103 4004/4044/4004 4104/4145/4104 +f 4004/4044/4004 4005/4045/4005 4104/4145/4104 +f 4104/4145/4104 4005/4045/4005 4105/4146/4105 +f 4005/4045/4005 4006/4046/4006 4105/4146/4105 +f 4105/4146/4105 4006/4046/4006 4106/4147/4106 +f 4006/4046/4006 4007/4047/4007 4106/4147/4106 +f 4106/4147/4106 4007/4047/4007 4107/4148/4107 +f 4007/4047/4007 4008/4048/4008 4107/4148/4107 +f 4107/4148/4107 4008/4048/4008 4108/4149/4108 +f 4008/4048/4008 4009/4049/4009 4108/4149/4108 +f 4108/4149/4108 4009/4049/4009 4109/4150/4109 +f 4009/4049/4009 4010/4050/4010 4109/4150/4109 +f 4109/4150/4109 4010/4050/4010 4110/4151/4110 +f 4010/4050/4010 4011/4051/4011 4110/4151/4110 +f 4110/4151/4110 4011/4051/4011 4111/4152/4111 +f 4011/4051/4011 4012/4052/4012 4111/4152/4111 +f 4111/4152/4111 4012/4052/4012 4112/4153/4112 +f 4012/4052/4012 4013/4053/4013 4112/4153/4112 +f 4112/4153/4112 4013/4053/4013 4113/4154/4113 +f 4013/4053/4013 4014/4054/4014 4113/4154/4113 +f 4113/4154/4113 4014/4054/4014 4114/4155/4114 +f 4014/4054/4014 4015/4055/4015 4114/4155/4114 +f 4114/4155/4114 4015/4055/4015 4115/4156/4115 +f 4015/4055/4015 4016/4056/4016 4115/4156/4115 +f 4115/4156/4115 4016/4056/4016 4116/4157/4116 +f 4016/4056/4016 4017/4057/4017 4116/4157/4116 +f 4116/4157/4116 4017/4057/4017 4117/4158/4117 +f 4017/4057/4017 4018/4058/4018 4117/4158/4117 +f 4117/4158/4117 4018/4058/4018 4118/4159/4118 +f 4018/4058/4018 4019/4059/4019 4118/4159/4118 +f 4118/4159/4118 4019/4059/4019 4119/4160/4119 +f 4019/4059/4019 4020/4060/4020 4119/4160/4119 +f 4119/4160/4119 4020/4060/4020 4120/4161/4120 +f 4020/4060/4020 4021/4061/4021 4120/4161/4120 +f 4120/4161/4120 4021/4061/4021 4121/4162/4121 +f 4021/4061/4021 4022/4062/4022 4121/4162/4121 +f 4121/4162/4121 4022/4062/4022 4122/4163/4122 +f 4022/4062/4022 4023/4063/4023 4122/4163/4122 +f 4122/4163/4122 4023/4063/4023 4123/4164/4123 +f 4023/4063/4023 4024/4064/4024 4123/4164/4123 +f 4123/4164/4123 4024/4064/4024 4124/4165/4124 +f 4024/4064/4024 4025/4065/4025 4124/4165/4124 +f 4124/4165/4124 4025/4065/4025 4125/4166/4125 +f 4025/4065/4025 4026/4066/4026 4125/4166/4125 +f 4125/4166/4125 4026/4066/4026 4126/4167/4126 +f 4026/4066/4026 4027/4067/4027 4126/4167/4126 +f 4126/4167/4126 4027/4067/4027 4127/4168/4127 +f 4027/4067/4027 4028/4068/4028 4127/4168/4127 +f 4127/4168/4127 4028/4068/4028 4128/4169/4128 +f 4028/4068/4028 4029/4069/4029 4128/4169/4128 +f 4128/4169/4128 4029/4069/4029 4129/4170/4129 +f 4029/4069/4029 4030/4070/4030 4129/4170/4129 +f 4129/4170/4129 4030/4070/4030 4130/4171/4130 +f 4030/4070/4030 4031/4071/4031 4130/4171/4130 +f 4130/4171/4130 4031/4071/4031 4131/4172/4131 +f 4031/4071/4031 4032/4072/4032 4131/4172/4131 +f 4131/4172/4131 4032/4072/4032 4132/4173/4132 +f 4032/4072/4032 4033/4073/4033 4132/4173/4132 +f 4132/4173/4132 4033/4073/4033 4133/4174/4133 +f 4033/4073/4033 4034/4074/4034 4133/4174/4133 +f 4133/4174/4133 4034/4074/4034 4134/4175/4134 +f 4034/4074/4034 4035/4075/4035 4134/4175/4134 +f 4134/4175/4134 4035/4075/4035 4135/4176/4135 +f 4035/4075/4035 4036/4076/4036 4135/4176/4135 +f 4135/4176/4135 4036/4076/4036 4136/4177/4136 +f 4036/4076/4036 4037/4077/4037 4136/4177/4136 +f 4136/4177/4136 4037/4077/4037 4137/4178/4137 +f 4037/4077/4037 4038/4078/4038 4137/4178/4137 +f 4137/4178/4137 4038/4078/4038 4138/4179/4138 +f 4038/4078/4038 4039/4079/4039 4138/4179/4138 +f 4138/4179/4138 4039/4079/4039 4139/4180/4139 +f 4039/4079/4039 4040/4080/4040 4139/4180/4139 +f 4139/4180/4139 4040/4080/4040 4140/4181/4140 +f 4040/4080/4040 4041/4081/4041 4140/4181/4140 +f 4140/4181/4140 4041/4081/4041 4141/4182/4141 +f 4041/4081/4041 4042/4082/4042 4141/4182/4141 +f 4141/4182/4141 4042/4082/4042 4142/4183/4142 +f 4042/4082/4042 4043/4083/4043 4142/4183/4142 +f 4142/4183/4142 4043/4083/4043 4143/4184/4143 +f 4043/4083/4043 4044/4084/4044 4143/4184/4143 +f 4143/4184/4143 4044/4084/4044 4144/4185/4144 +f 4044/4084/4044 4045/4085/4045 4144/4185/4144 +f 4144/4185/4144 4045/4085/4045 4145/4186/4145 +f 4045/4085/4045 4046/4086/4046 4145/4186/4145 +f 4145/4186/4145 4046/4086/4046 4146/4187/4146 +f 4046/4086/4046 4047/4087/4047 4146/4187/4146 +f 4146/4187/4146 4047/4087/4047 4147/4188/4147 +f 4047/4087/4047 4048/4088/4048 4147/4188/4147 +f 4147/4188/4147 4048/4088/4048 4148/4189/4148 +f 4048/4088/4048 4049/4089/4049 4148/4189/4148 +f 4148/4189/4148 4049/4089/4049 4149/4190/4149 +f 4049/4089/4049 4050/4090/4050 4149/4190/4149 +f 4149/4190/4149 4050/4090/4050 4150/4191/4150 +f 4050/4090/4050 4051/4091/4051 4150/4191/4150 +f 4150/4191/4150 4051/4091/4051 4151/4192/4151 +f 4051/4091/4051 4052/4092/4052 4151/4192/4151 +f 4151/4192/4151 4052/4092/4052 4152/4193/4152 +f 4052/4092/4052 4053/4093/4053 4152/4193/4152 +f 4152/4193/4152 4053/4093/4053 4153/4194/4153 +f 4053/4093/4053 4054/4094/4054 4153/4194/4153 +f 4153/4194/4153 4054/4094/4054 4154/4195/4154 +f 4054/4094/4054 4055/4095/4055 4154/4195/4154 +f 4154/4195/4154 4055/4095/4055 4155/4196/4155 +f 4055/4095/4055 4056/4096/4056 4155/4196/4155 +f 4155/4196/4155 4056/4096/4056 4156/4197/4156 +f 4056/4096/4056 4057/4097/4057 4156/4197/4156 +f 4156/4197/4156 4057/4097/4057 4157/4198/4157 +f 4057/4097/4057 4058/4098/4058 4157/4198/4157 +f 4157/4198/4157 4058/4098/4058 4158/4199/4158 +f 4058/4098/4058 4059/4099/4059 4158/4199/4158 +f 4158/4199/4158 4059/4099/4059 4159/4200/4159 +f 4059/4099/4059 4060/4100/4060 4159/4200/4159 +f 4159/4200/4159 4060/4100/4060 4160/4201/4160 +f 4060/4100/4060 4061/4101/4061 4160/4201/4160 +f 4160/4201/4160 4061/4101/4061 4161/4202/4161 +f 4061/4101/4061 4062/4102/4062 4161/4202/4161 +f 4161/4202/4161 4062/4102/4062 4162/4203/4162 +f 4062/4102/4062 4063/4103/4063 4162/4203/4162 +f 4162/4203/4162 4063/4103/4063 4163/4204/4163 +f 4063/4103/4063 4064/4104/4064 4163/4204/4163 +f 4163/4204/4163 4064/4104/4064 4164/4205/4164 +f 4064/4104/4064 4065/4105/4065 4164/4205/4164 +f 4164/4205/4164 4065/4105/4065 4165/4206/4165 +f 4065/4105/4065 4066/4106/4066 4165/4206/4165 +f 4165/4206/4165 4066/4106/4066 4166/4207/4166 +f 4066/4106/4066 4067/4107/4067 4166/4207/4166 +f 4166/4207/4166 4067/4107/4067 4167/4208/4167 +f 4067/4107/4067 4068/4108/4068 4167/4208/4167 +f 4167/4208/4167 4068/4108/4068 4168/4209/4168 +f 4068/4108/4068 4069/4109/4069 4168/4209/4168 +f 4168/4209/4168 4069/4109/4069 4169/4210/4169 +f 4069/4109/4069 4070/4110/4070 4169/4210/4169 +f 4169/4210/4169 4070/4110/4070 4170/4211/4170 +f 4070/4110/4070 4071/4111/4071 4170/4211/4170 +f 4170/4211/4170 4071/4111/4071 4171/4212/4171 +f 4071/4111/4071 4072/4112/4072 4171/4212/4171 +f 4171/4212/4171 4072/4112/4072 4172/4213/4172 +f 4072/4112/4072 4073/4113/4073 4172/4213/4172 +f 4172/4213/4172 4073/4113/4073 4173/4214/4173 +f 4073/4113/4073 4074/4114/4074 4173/4214/4173 +f 4173/4214/4173 4074/4114/4074 4174/4215/4174 +f 4074/4114/4074 4075/4115/4075 4174/4215/4174 +f 4174/4215/4174 4075/4115/4075 4175/4216/4175 +f 4075/4115/4075 4076/4116/4076 4175/4216/4175 +f 4175/4216/4175 4076/4116/4076 4176/4217/4176 +f 4076/4116/4076 4077/4117/4077 4176/4217/4176 +f 4176/4217/4176 4077/4117/4077 4177/4218/4177 +f 4077/4117/4077 4078/4118/4078 4177/4218/4177 +f 4177/4218/4177 4078/4118/4078 4178/4219/4178 +f 4078/4118/4078 4079/4119/4079 4178/4219/4178 +f 4178/4219/4178 4079/4119/4079 4179/4220/4179 +f 4079/4119/4079 4080/4120/4080 4179/4220/4179 +f 4179/4220/4179 4080/4120/4080 4180/4221/4180 +f 4080/4120/4080 4081/4121/4081 4180/4221/4180 +f 4180/4221/4180 4081/4121/4081 4181/4222/4181 +f 4081/4121/4081 4082/4122/4082 4181/4222/4181 +f 4181/4222/4181 4082/4122/4082 4182/4223/4182 +f 4082/4122/4082 4083/4123/4083 4182/4223/4182 +f 4182/4223/4182 4083/4123/4083 4183/4224/4183 +f 4083/4123/4083 4084/4124/4084 4183/4224/4183 +f 4183/4224/4183 4084/4124/4084 4184/4225/4184 +f 4084/4124/4084 4085/4125/4085 4184/4225/4184 +f 4184/4225/4184 4085/4125/4085 4185/4226/4185 +f 4085/4125/4085 4086/4126/4086 4185/4226/4185 +f 4185/4226/4185 4086/4126/4086 4186/4227/4186 +f 4086/4126/4086 4087/4127/4087 4186/4227/4186 +f 4186/4227/4186 4087/4127/4087 4187/4228/4187 +f 4087/4127/4087 4088/4128/4088 4187/4228/4187 +f 4187/4228/4187 4088/4128/4088 4188/4229/4188 +f 4088/4128/4088 4089/4129/4089 4188/4229/4188 +f 4188/4229/4188 4089/4129/4089 4189/4230/4189 +f 4089/4129/4089 4090/4130/4090 4189/4230/4189 +f 4189/4230/4189 4090/4130/4090 4190/4231/4190 +f 4090/4130/4090 4091/4131/4091 4190/4231/4190 +f 4190/4231/4190 4091/4131/4091 4191/4232/4191 +f 4091/4131/4091 4092/4132/4092 4191/4232/4191 +f 4191/4232/4191 4092/4132/4092 4192/4233/4192 +f 4092/4132/4092 4093/4133/4093 4192/4233/4192 +f 4192/4233/4192 4093/4133/4093 4193/4234/4193 +f 4093/4133/4093 4094/4134/4094 4193/4234/4193 +f 4193/4234/4193 4094/4134/4094 4194/4235/4194 +f 4094/4134/4094 4095/4135/4095 4194/4235/4194 +f 4194/4235/4194 4095/4135/4095 4195/4236/4195 +f 4095/4135/4095 4096/4136/4096 4195/4236/4195 +f 4195/4236/4195 4096/4136/4096 4196/4237/4196 +f 4096/4136/4096 4097/4137/4097 4196/4237/4196 +f 4196/4237/4196 4097/4137/4097 4197/4238/4197 +f 4097/4137/4097 4098/4138/4098 4197/4238/4197 +f 4197/4238/4197 4098/4138/4098 4198/4239/4198 +f 4098/4138/4098 4099/4139/4099 4198/4239/4198 +f 4198/4239/4198 4099/4139/4099 4199/4240/4199 +f 4099/4139/4099 4100/4140/4100 4199/4240/4199 +f 4199/4240/4199 4100/4140/4100 4200/4241/4200 +f 4100/4140/4100 4001/4141/4001 4200/4241/4200 +f 4200/4241/4200 4001/4141/4001 4101/4242/4101 +f 4101/4142/4101 4102/4143/4102 4201/4243/4201 +f 4201/4243/4201 4102/4143/4102 4202/4244/4202 +f 4102/4143/4102 4103/4144/4103 4202/4244/4202 +f 4202/4244/4202 4103/4144/4103 4203/4245/4203 +f 4103/4144/4103 4104/4145/4104 4203/4245/4203 +f 4203/4245/4203 4104/4145/4104 4204/4246/4204 +f 4104/4145/4104 4105/4146/4105 4204/4246/4204 +f 4204/4246/4204 4105/4146/4105 4205/4247/4205 +f 4105/4146/4105 4106/4147/4106 4205/4247/4205 +f 4205/4247/4205 4106/4147/4106 4206/4248/4206 +f 4106/4147/4106 4107/4148/4107 4206/4248/4206 +f 4206/4248/4206 4107/4148/4107 4207/4249/4207 +f 4107/4148/4107 4108/4149/4108 4207/4249/4207 +f 4207/4249/4207 4108/4149/4108 4208/4250/4208 +f 4108/4149/4108 4109/4150/4109 4208/4250/4208 +f 4208/4250/4208 4109/4150/4109 4209/4251/4209 +f 4109/4150/4109 4110/4151/4110 4209/4251/4209 +f 4209/4251/4209 4110/4151/4110 4210/4252/4210 +f 4110/4151/4110 4111/4152/4111 4210/4252/4210 +f 4210/4252/4210 4111/4152/4111 4211/4253/4211 +f 4111/4152/4111 4112/4153/4112 4211/4253/4211 +f 4211/4253/4211 4112/4153/4112 4212/4254/4212 +f 4112/4153/4112 4113/4154/4113 4212/4254/4212 +f 4212/4254/4212 4113/4154/4113 4213/4255/4213 +f 4113/4154/4113 4114/4155/4114 4213/4255/4213 +f 4213/4255/4213 4114/4155/4114 4214/4256/4214 +f 4114/4155/4114 4115/4156/4115 4214/4256/4214 +f 4214/4256/4214 4115/4156/4115 4215/4257/4215 +f 4115/4156/4115 4116/4157/4116 4215/4257/4215 +f 4215/4257/4215 4116/4157/4116 4216/4258/4216 +f 4116/4157/4116 4117/4158/4117 4216/4258/4216 +f 4216/4258/4216 4117/4158/4117 4217/4259/4217 +f 4117/4158/4117 4118/4159/4118 4217/4259/4217 +f 4217/4259/4217 4118/4159/4118 4218/4260/4218 +f 4118/4159/4118 4119/4160/4119 4218/4260/4218 +f 4218/4260/4218 4119/4160/4119 4219/4261/4219 +f 4119/4160/4119 4120/4161/4120 4219/4261/4219 +f 4219/4261/4219 4120/4161/4120 4220/4262/4220 +f 4120/4161/4120 4121/4162/4121 4220/4262/4220 +f 4220/4262/4220 4121/4162/4121 4221/4263/4221 +f 4121/4162/4121 4122/4163/4122 4221/4263/4221 +f 4221/4263/4221 4122/4163/4122 4222/4264/4222 +f 4122/4163/4122 4123/4164/4123 4222/4264/4222 +f 4222/4264/4222 4123/4164/4123 4223/4265/4223 +f 4123/4164/4123 4124/4165/4124 4223/4265/4223 +f 4223/4265/4223 4124/4165/4124 4224/4266/4224 +f 4124/4165/4124 4125/4166/4125 4224/4266/4224 +f 4224/4266/4224 4125/4166/4125 4225/4267/4225 +f 4125/4166/4125 4126/4167/4126 4225/4267/4225 +f 4225/4267/4225 4126/4167/4126 4226/4268/4226 +f 4126/4167/4126 4127/4168/4127 4226/4268/4226 +f 4226/4268/4226 4127/4168/4127 4227/4269/4227 +f 4127/4168/4127 4128/4169/4128 4227/4269/4227 +f 4227/4269/4227 4128/4169/4128 4228/4270/4228 +f 4128/4169/4128 4129/4170/4129 4228/4270/4228 +f 4228/4270/4228 4129/4170/4129 4229/4271/4229 +f 4129/4170/4129 4130/4171/4130 4229/4271/4229 +f 4229/4271/4229 4130/4171/4130 4230/4272/4230 +f 4130/4171/4130 4131/4172/4131 4230/4272/4230 +f 4230/4272/4230 4131/4172/4131 4231/4273/4231 +f 4131/4172/4131 4132/4173/4132 4231/4273/4231 +f 4231/4273/4231 4132/4173/4132 4232/4274/4232 +f 4132/4173/4132 4133/4174/4133 4232/4274/4232 +f 4232/4274/4232 4133/4174/4133 4233/4275/4233 +f 4133/4174/4133 4134/4175/4134 4233/4275/4233 +f 4233/4275/4233 4134/4175/4134 4234/4276/4234 +f 4134/4175/4134 4135/4176/4135 4234/4276/4234 +f 4234/4276/4234 4135/4176/4135 4235/4277/4235 +f 4135/4176/4135 4136/4177/4136 4235/4277/4235 +f 4235/4277/4235 4136/4177/4136 4236/4278/4236 +f 4136/4177/4136 4137/4178/4137 4236/4278/4236 +f 4236/4278/4236 4137/4178/4137 4237/4279/4237 +f 4137/4178/4137 4138/4179/4138 4237/4279/4237 +f 4237/4279/4237 4138/4179/4138 4238/4280/4238 +f 4138/4179/4138 4139/4180/4139 4238/4280/4238 +f 4238/4280/4238 4139/4180/4139 4239/4281/4239 +f 4139/4180/4139 4140/4181/4140 4239/4281/4239 +f 4239/4281/4239 4140/4181/4140 4240/4282/4240 +f 4140/4181/4140 4141/4182/4141 4240/4282/4240 +f 4240/4282/4240 4141/4182/4141 4241/4283/4241 +f 4141/4182/4141 4142/4183/4142 4241/4283/4241 +f 4241/4283/4241 4142/4183/4142 4242/4284/4242 +f 4142/4183/4142 4143/4184/4143 4242/4284/4242 +f 4242/4284/4242 4143/4184/4143 4243/4285/4243 +f 4143/4184/4143 4144/4185/4144 4243/4285/4243 +f 4243/4285/4243 4144/4185/4144 4244/4286/4244 +f 4144/4185/4144 4145/4186/4145 4244/4286/4244 +f 4244/4286/4244 4145/4186/4145 4245/4287/4245 +f 4145/4186/4145 4146/4187/4146 4245/4287/4245 +f 4245/4287/4245 4146/4187/4146 4246/4288/4246 +f 4146/4187/4146 4147/4188/4147 4246/4288/4246 +f 4246/4288/4246 4147/4188/4147 4247/4289/4247 +f 4147/4188/4147 4148/4189/4148 4247/4289/4247 +f 4247/4289/4247 4148/4189/4148 4248/4290/4248 +f 4148/4189/4148 4149/4190/4149 4248/4290/4248 +f 4248/4290/4248 4149/4190/4149 4249/4291/4249 +f 4149/4190/4149 4150/4191/4150 4249/4291/4249 +f 4249/4291/4249 4150/4191/4150 4250/4292/4250 +f 4150/4191/4150 4151/4192/4151 4250/4292/4250 +f 4250/4292/4250 4151/4192/4151 4251/4293/4251 +f 4151/4192/4151 4152/4193/4152 4251/4293/4251 +f 4251/4293/4251 4152/4193/4152 4252/4294/4252 +f 4152/4193/4152 4153/4194/4153 4252/4294/4252 +f 4252/4294/4252 4153/4194/4153 4253/4295/4253 +f 4153/4194/4153 4154/4195/4154 4253/4295/4253 +f 4253/4295/4253 4154/4195/4154 4254/4296/4254 +f 4154/4195/4154 4155/4196/4155 4254/4296/4254 +f 4254/4296/4254 4155/4196/4155 4255/4297/4255 +f 4155/4196/4155 4156/4197/4156 4255/4297/4255 +f 4255/4297/4255 4156/4197/4156 4256/4298/4256 +f 4156/4197/4156 4157/4198/4157 4256/4298/4256 +f 4256/4298/4256 4157/4198/4157 4257/4299/4257 +f 4157/4198/4157 4158/4199/4158 4257/4299/4257 +f 4257/4299/4257 4158/4199/4158 4258/4300/4258 +f 4158/4199/4158 4159/4200/4159 4258/4300/4258 +f 4258/4300/4258 4159/4200/4159 4259/4301/4259 +f 4159/4200/4159 4160/4201/4160 4259/4301/4259 +f 4259/4301/4259 4160/4201/4160 4260/4302/4260 +f 4160/4201/4160 4161/4202/4161 4260/4302/4260 +f 4260/4302/4260 4161/4202/4161 4261/4303/4261 +f 4161/4202/4161 4162/4203/4162 4261/4303/4261 +f 4261/4303/4261 4162/4203/4162 4262/4304/4262 +f 4162/4203/4162 4163/4204/4163 4262/4304/4262 +f 4262/4304/4262 4163/4204/4163 4263/4305/4263 +f 4163/4204/4163 4164/4205/4164 4263/4305/4263 +f 4263/4305/4263 4164/4205/4164 4264/4306/4264 +f 4164/4205/4164 4165/4206/4165 4264/4306/4264 +f 4264/4306/4264 4165/4206/4165 4265/4307/4265 +f 4165/4206/4165 4166/4207/4166 4265/4307/4265 +f 4265/4307/4265 4166/4207/4166 4266/4308/4266 +f 4166/4207/4166 4167/4208/4167 4266/4308/4266 +f 4266/4308/4266 4167/4208/4167 4267/4309/4267 +f 4167/4208/4167 4168/4209/4168 4267/4309/4267 +f 4267/4309/4267 4168/4209/4168 4268/4310/4268 +f 4168/4209/4168 4169/4210/4169 4268/4310/4268 +f 4268/4310/4268 4169/4210/4169 4269/4311/4269 +f 4169/4210/4169 4170/4211/4170 4269/4311/4269 +f 4269/4311/4269 4170/4211/4170 4270/4312/4270 +f 4170/4211/4170 4171/4212/4171 4270/4312/4270 +f 4270/4312/4270 4171/4212/4171 4271/4313/4271 +f 4171/4212/4171 4172/4213/4172 4271/4313/4271 +f 4271/4313/4271 4172/4213/4172 4272/4314/4272 +f 4172/4213/4172 4173/4214/4173 4272/4314/4272 +f 4272/4314/4272 4173/4214/4173 4273/4315/4273 +f 4173/4214/4173 4174/4215/4174 4273/4315/4273 +f 4273/4315/4273 4174/4215/4174 4274/4316/4274 +f 4174/4215/4174 4175/4216/4175 4274/4316/4274 +f 4274/4316/4274 4175/4216/4175 4275/4317/4275 +f 4175/4216/4175 4176/4217/4176 4275/4317/4275 +f 4275/4317/4275 4176/4217/4176 4276/4318/4276 +f 4176/4217/4176 4177/4218/4177 4276/4318/4276 +f 4276/4318/4276 4177/4218/4177 4277/4319/4277 +f 4177/4218/4177 4178/4219/4178 4277/4319/4277 +f 4277/4319/4277 4178/4219/4178 4278/4320/4278 +f 4178/4219/4178 4179/4220/4179 4278/4320/4278 +f 4278/4320/4278 4179/4220/4179 4279/4321/4279 +f 4179/4220/4179 4180/4221/4180 4279/4321/4279 +f 4279/4321/4279 4180/4221/4180 4280/4322/4280 +f 4180/4221/4180 4181/4222/4181 4280/4322/4280 +f 4280/4322/4280 4181/4222/4181 4281/4323/4281 +f 4181/4222/4181 4182/4223/4182 4281/4323/4281 +f 4281/4323/4281 4182/4223/4182 4282/4324/4282 +f 4182/4223/4182 4183/4224/4183 4282/4324/4282 +f 4282/4324/4282 4183/4224/4183 4283/4325/4283 +f 4183/4224/4183 4184/4225/4184 4283/4325/4283 +f 4283/4325/4283 4184/4225/4184 4284/4326/4284 +f 4184/4225/4184 4185/4226/4185 4284/4326/4284 +f 4284/4326/4284 4185/4226/4185 4285/4327/4285 +f 4185/4226/4185 4186/4227/4186 4285/4327/4285 +f 4285/4327/4285 4186/4227/4186 4286/4328/4286 +f 4186/4227/4186 4187/4228/4187 4286/4328/4286 +f 4286/4328/4286 4187/4228/4187 4287/4329/4287 +f 4187/4228/4187 4188/4229/4188 4287/4329/4287 +f 4287/4329/4287 4188/4229/4188 4288/4330/4288 +f 4188/4229/4188 4189/4230/4189 4288/4330/4288 +f 4288/4330/4288 4189/4230/4189 4289/4331/4289 +f 4189/4230/4189 4190/4231/4190 4289/4331/4289 +f 4289/4331/4289 4190/4231/4190 4290/4332/4290 +f 4190/4231/4190 4191/4232/4191 4290/4332/4290 +f 4290/4332/4290 4191/4232/4191 4291/4333/4291 +f 4191/4232/4191 4192/4233/4192 4291/4333/4291 +f 4291/4333/4291 4192/4233/4192 4292/4334/4292 +f 4192/4233/4192 4193/4234/4193 4292/4334/4292 +f 4292/4334/4292 4193/4234/4193 4293/4335/4293 +f 4193/4234/4193 4194/4235/4194 4293/4335/4293 +f 4293/4335/4293 4194/4235/4194 4294/4336/4294 +f 4194/4235/4194 4195/4236/4195 4294/4336/4294 +f 4294/4336/4294 4195/4236/4195 4295/4337/4295 +f 4195/4236/4195 4196/4237/4196 4295/4337/4295 +f 4295/4337/4295 4196/4237/4196 4296/4338/4296 +f 4196/4237/4196 4197/4238/4197 4296/4338/4296 +f 4296/4338/4296 4197/4238/4197 4297/4339/4297 +f 4197/4238/4197 4198/4239/4198 4297/4339/4297 +f 4297/4339/4297 4198/4239/4198 4298/4340/4298 +f 4198/4239/4198 4199/4240/4199 4298/4340/4298 +f 4298/4340/4298 4199/4240/4199 4299/4341/4299 +f 4199/4240/4199 4200/4241/4200 4299/4341/4299 +f 4299/4341/4299 4200/4241/4200 4300/4342/4300 +f 4200/4241/4200 4101/4242/4101 4300/4342/4300 +f 4300/4342/4300 4101/4242/4101 4201/4343/4201 +f 4201/4243/4201 4202/4244/4202 4301/4344/4301 +f 4301/4344/4301 4202/4244/4202 4302/4345/4302 +f 4202/4244/4202 4203/4245/4203 4302/4345/4302 +f 4302/4345/4302 4203/4245/4203 4303/4346/4303 +f 4203/4245/4203 4204/4246/4204 4303/4346/4303 +f 4303/4346/4303 4204/4246/4204 4304/4347/4304 +f 4204/4246/4204 4205/4247/4205 4304/4347/4304 +f 4304/4347/4304 4205/4247/4205 4305/4348/4305 +f 4205/4247/4205 4206/4248/4206 4305/4348/4305 +f 4305/4348/4305 4206/4248/4206 4306/4349/4306 +f 4206/4248/4206 4207/4249/4207 4306/4349/4306 +f 4306/4349/4306 4207/4249/4207 4307/4350/4307 +f 4207/4249/4207 4208/4250/4208 4307/4350/4307 +f 4307/4350/4307 4208/4250/4208 4308/4351/4308 +f 4208/4250/4208 4209/4251/4209 4308/4351/4308 +f 4308/4351/4308 4209/4251/4209 4309/4352/4309 +f 4209/4251/4209 4210/4252/4210 4309/4352/4309 +f 4309/4352/4309 4210/4252/4210 4310/4353/4310 +f 4210/4252/4210 4211/4253/4211 4310/4353/4310 +f 4310/4353/4310 4211/4253/4211 4311/4354/4311 +f 4211/4253/4211 4212/4254/4212 4311/4354/4311 +f 4311/4354/4311 4212/4254/4212 4312/4355/4312 +f 4212/4254/4212 4213/4255/4213 4312/4355/4312 +f 4312/4355/4312 4213/4255/4213 4313/4356/4313 +f 4213/4255/4213 4214/4256/4214 4313/4356/4313 +f 4313/4356/4313 4214/4256/4214 4314/4357/4314 +f 4214/4256/4214 4215/4257/4215 4314/4357/4314 +f 4314/4357/4314 4215/4257/4215 4315/4358/4315 +f 4215/4257/4215 4216/4258/4216 4315/4358/4315 +f 4315/4358/4315 4216/4258/4216 4316/4359/4316 +f 4216/4258/4216 4217/4259/4217 4316/4359/4316 +f 4316/4359/4316 4217/4259/4217 4317/4360/4317 +f 4217/4259/4217 4218/4260/4218 4317/4360/4317 +f 4317/4360/4317 4218/4260/4218 4318/4361/4318 +f 4218/4260/4218 4219/4261/4219 4318/4361/4318 +f 4318/4361/4318 4219/4261/4219 4319/4362/4319 +f 4219/4261/4219 4220/4262/4220 4319/4362/4319 +f 4319/4362/4319 4220/4262/4220 4320/4363/4320 +f 4220/4262/4220 4221/4263/4221 4320/4363/4320 +f 4320/4363/4320 4221/4263/4221 4321/4364/4321 +f 4221/4263/4221 4222/4264/4222 4321/4364/4321 +f 4321/4364/4321 4222/4264/4222 4322/4365/4322 +f 4222/4264/4222 4223/4265/4223 4322/4365/4322 +f 4322/4365/4322 4223/4265/4223 4323/4366/4323 +f 4223/4265/4223 4224/4266/4224 4323/4366/4323 +f 4323/4366/4323 4224/4266/4224 4324/4367/4324 +f 4224/4266/4224 4225/4267/4225 4324/4367/4324 +f 4324/4367/4324 4225/4267/4225 4325/4368/4325 +f 4225/4267/4225 4226/4268/4226 4325/4368/4325 +f 4325/4368/4325 4226/4268/4226 4326/4369/4326 +f 4226/4268/4226 4227/4269/4227 4326/4369/4326 +f 4326/4369/4326 4227/4269/4227 4327/4370/4327 +f 4227/4269/4227 4228/4270/4228 4327/4370/4327 +f 4327/4370/4327 4228/4270/4228 4328/4371/4328 +f 4228/4270/4228 4229/4271/4229 4328/4371/4328 +f 4328/4371/4328 4229/4271/4229 4329/4372/4329 +f 4229/4271/4229 4230/4272/4230 4329/4372/4329 +f 4329/4372/4329 4230/4272/4230 4330/4373/4330 +f 4230/4272/4230 4231/4273/4231 4330/4373/4330 +f 4330/4373/4330 4231/4273/4231 4331/4374/4331 +f 4231/4273/4231 4232/4274/4232 4331/4374/4331 +f 4331/4374/4331 4232/4274/4232 4332/4375/4332 +f 4232/4274/4232 4233/4275/4233 4332/4375/4332 +f 4332/4375/4332 4233/4275/4233 4333/4376/4333 +f 4233/4275/4233 4234/4276/4234 4333/4376/4333 +f 4333/4376/4333 4234/4276/4234 4334/4377/4334 +f 4234/4276/4234 4235/4277/4235 4334/4377/4334 +f 4334/4377/4334 4235/4277/4235 4335/4378/4335 +f 4235/4277/4235 4236/4278/4236 4335/4378/4335 +f 4335/4378/4335 4236/4278/4236 4336/4379/4336 +f 4236/4278/4236 4237/4279/4237 4336/4379/4336 +f 4336/4379/4336 4237/4279/4237 4337/4380/4337 +f 4237/4279/4237 4238/4280/4238 4337/4380/4337 +f 4337/4380/4337 4238/4280/4238 4338/4381/4338 +f 4238/4280/4238 4239/4281/4239 4338/4381/4338 +f 4338/4381/4338 4239/4281/4239 4339/4382/4339 +f 4239/4281/4239 4240/4282/4240 4339/4382/4339 +f 4339/4382/4339 4240/4282/4240 4340/4383/4340 +f 4240/4282/4240 4241/4283/4241 4340/4383/4340 +f 4340/4383/4340 4241/4283/4241 4341/4384/4341 +f 4241/4283/4241 4242/4284/4242 4341/4384/4341 +f 4341/4384/4341 4242/4284/4242 4342/4385/4342 +f 4242/4284/4242 4243/4285/4243 4342/4385/4342 +f 4342/4385/4342 4243/4285/4243 4343/4386/4343 +f 4243/4285/4243 4244/4286/4244 4343/4386/4343 +f 4343/4386/4343 4244/4286/4244 4344/4387/4344 +f 4244/4286/4244 4245/4287/4245 4344/4387/4344 +f 4344/4387/4344 4245/4287/4245 4345/4388/4345 +f 4245/4287/4245 4246/4288/4246 4345/4388/4345 +f 4345/4388/4345 4246/4288/4246 4346/4389/4346 +f 4246/4288/4246 4247/4289/4247 4346/4389/4346 +f 4346/4389/4346 4247/4289/4247 4347/4390/4347 +f 4247/4289/4247 4248/4290/4248 4347/4390/4347 +f 4347/4390/4347 4248/4290/4248 4348/4391/4348 +f 4248/4290/4248 4249/4291/4249 4348/4391/4348 +f 4348/4391/4348 4249/4291/4249 4349/4392/4349 +f 4249/4291/4249 4250/4292/4250 4349/4392/4349 +f 4349/4392/4349 4250/4292/4250 4350/4393/4350 +f 4250/4292/4250 4251/4293/4251 4350/4393/4350 +f 4350/4393/4350 4251/4293/4251 4351/4394/4351 +f 4251/4293/4251 4252/4294/4252 4351/4394/4351 +f 4351/4394/4351 4252/4294/4252 4352/4395/4352 +f 4252/4294/4252 4253/4295/4253 4352/4395/4352 +f 4352/4395/4352 4253/4295/4253 4353/4396/4353 +f 4253/4295/4253 4254/4296/4254 4353/4396/4353 +f 4353/4396/4353 4254/4296/4254 4354/4397/4354 +f 4254/4296/4254 4255/4297/4255 4354/4397/4354 +f 4354/4397/4354 4255/4297/4255 4355/4398/4355 +f 4255/4297/4255 4256/4298/4256 4355/4398/4355 +f 4355/4398/4355 4256/4298/4256 4356/4399/4356 +f 4256/4298/4256 4257/4299/4257 4356/4399/4356 +f 4356/4399/4356 4257/4299/4257 4357/4400/4357 +f 4257/4299/4257 4258/4300/4258 4357/4400/4357 +f 4357/4400/4357 4258/4300/4258 4358/4401/4358 +f 4258/4300/4258 4259/4301/4259 4358/4401/4358 +f 4358/4401/4358 4259/4301/4259 4359/4402/4359 +f 4259/4301/4259 4260/4302/4260 4359/4402/4359 +f 4359/4402/4359 4260/4302/4260 4360/4403/4360 +f 4260/4302/4260 4261/4303/4261 4360/4403/4360 +f 4360/4403/4360 4261/4303/4261 4361/4404/4361 +f 4261/4303/4261 4262/4304/4262 4361/4404/4361 +f 4361/4404/4361 4262/4304/4262 4362/4405/4362 +f 4262/4304/4262 4263/4305/4263 4362/4405/4362 +f 4362/4405/4362 4263/4305/4263 4363/4406/4363 +f 4263/4305/4263 4264/4306/4264 4363/4406/4363 +f 4363/4406/4363 4264/4306/4264 4364/4407/4364 +f 4264/4306/4264 4265/4307/4265 4364/4407/4364 +f 4364/4407/4364 4265/4307/4265 4365/4408/4365 +f 4265/4307/4265 4266/4308/4266 4365/4408/4365 +f 4365/4408/4365 4266/4308/4266 4366/4409/4366 +f 4266/4308/4266 4267/4309/4267 4366/4409/4366 +f 4366/4409/4366 4267/4309/4267 4367/4410/4367 +f 4267/4309/4267 4268/4310/4268 4367/4410/4367 +f 4367/4410/4367 4268/4310/4268 4368/4411/4368 +f 4268/4310/4268 4269/4311/4269 4368/4411/4368 +f 4368/4411/4368 4269/4311/4269 4369/4412/4369 +f 4269/4311/4269 4270/4312/4270 4369/4412/4369 +f 4369/4412/4369 4270/4312/4270 4370/4413/4370 +f 4270/4312/4270 4271/4313/4271 4370/4413/4370 +f 4370/4413/4370 4271/4313/4271 4371/4414/4371 +f 4271/4313/4271 4272/4314/4272 4371/4414/4371 +f 4371/4414/4371 4272/4314/4272 4372/4415/4372 +f 4272/4314/4272 4273/4315/4273 4372/4415/4372 +f 4372/4415/4372 4273/4315/4273 4373/4416/4373 +f 4273/4315/4273 4274/4316/4274 4373/4416/4373 +f 4373/4416/4373 4274/4316/4274 4374/4417/4374 +f 4274/4316/4274 4275/4317/4275 4374/4417/4374 +f 4374/4417/4374 4275/4317/4275 4375/4418/4375 +f 4275/4317/4275 4276/4318/4276 4375/4418/4375 +f 4375/4418/4375 4276/4318/4276 4376/4419/4376 +f 4276/4318/4276 4277/4319/4277 4376/4419/4376 +f 4376/4419/4376 4277/4319/4277 4377/4420/4377 +f 4277/4319/4277 4278/4320/4278 4377/4420/4377 +f 4377/4420/4377 4278/4320/4278 4378/4421/4378 +f 4278/4320/4278 4279/4321/4279 4378/4421/4378 +f 4378/4421/4378 4279/4321/4279 4379/4422/4379 +f 4279/4321/4279 4280/4322/4280 4379/4422/4379 +f 4379/4422/4379 4280/4322/4280 4380/4423/4380 +f 4280/4322/4280 4281/4323/4281 4380/4423/4380 +f 4380/4423/4380 4281/4323/4281 4381/4424/4381 +f 4281/4323/4281 4282/4324/4282 4381/4424/4381 +f 4381/4424/4381 4282/4324/4282 4382/4425/4382 +f 4282/4324/4282 4283/4325/4283 4382/4425/4382 +f 4382/4425/4382 4283/4325/4283 4383/4426/4383 +f 4283/4325/4283 4284/4326/4284 4383/4426/4383 +f 4383/4426/4383 4284/4326/4284 4384/4427/4384 +f 4284/4326/4284 4285/4327/4285 4384/4427/4384 +f 4384/4427/4384 4285/4327/4285 4385/4428/4385 +f 4285/4327/4285 4286/4328/4286 4385/4428/4385 +f 4385/4428/4385 4286/4328/4286 4386/4429/4386 +f 4286/4328/4286 4287/4329/4287 4386/4429/4386 +f 4386/4429/4386 4287/4329/4287 4387/4430/4387 +f 4287/4329/4287 4288/4330/4288 4387/4430/4387 +f 4387/4430/4387 4288/4330/4288 4388/4431/4388 +f 4288/4330/4288 4289/4331/4289 4388/4431/4388 +f 4388/4431/4388 4289/4331/4289 4389/4432/4389 +f 4289/4331/4289 4290/4332/4290 4389/4432/4389 +f 4389/4432/4389 4290/4332/4290 4390/4433/4390 +f 4290/4332/4290 4291/4333/4291 4390/4433/4390 +f 4390/4433/4390 4291/4333/4291 4391/4434/4391 +f 4291/4333/4291 4292/4334/4292 4391/4434/4391 +f 4391/4434/4391 4292/4334/4292 4392/4435/4392 +f 4292/4334/4292 4293/4335/4293 4392/4435/4392 +f 4392/4435/4392 4293/4335/4293 4393/4436/4393 +f 4293/4335/4293 4294/4336/4294 4393/4436/4393 +f 4393/4436/4393 4294/4336/4294 4394/4437/4394 +f 4294/4336/4294 4295/4337/4295 4394/4437/4394 +f 4394/4437/4394 4295/4337/4295 4395/4438/4395 +f 4295/4337/4295 4296/4338/4296 4395/4438/4395 +f 4395/4438/4395 4296/4338/4296 4396/4439/4396 +f 4296/4338/4296 4297/4339/4297 4396/4439/4396 +f 4396/4439/4396 4297/4339/4297 4397/4440/4397 +f 4297/4339/4297 4298/4340/4298 4397/4440/4397 +f 4397/4440/4397 4298/4340/4298 4398/4441/4398 +f 4298/4340/4298 4299/4341/4299 4398/4441/4398 +f 4398/4441/4398 4299/4341/4299 4399/4442/4399 +f 4299/4341/4299 4300/4342/4300 4399/4442/4399 +f 4399/4442/4399 4300/4342/4300 4400/4443/4400 +f 4300/4342/4300 4201/4343/4201 4400/4443/4400 +f 4400/4443/4400 4201/4343/4201 4301/4444/4301 +f 4301/4344/4301 4302/4345/4302 4401/4445/4401 +f 4401/4445/4401 4302/4345/4302 4402/4446/4402 +f 4302/4345/4302 4303/4346/4303 4402/4446/4402 +f 4402/4446/4402 4303/4346/4303 4403/4447/4403 +f 4303/4346/4303 4304/4347/4304 4403/4447/4403 +f 4403/4447/4403 4304/4347/4304 4404/4448/4404 +f 4304/4347/4304 4305/4348/4305 4404/4448/4404 +f 4404/4448/4404 4305/4348/4305 4405/4449/4405 +f 4305/4348/4305 4306/4349/4306 4405/4449/4405 +f 4405/4449/4405 4306/4349/4306 4406/4450/4406 +f 4306/4349/4306 4307/4350/4307 4406/4450/4406 +f 4406/4450/4406 4307/4350/4307 4407/4451/4407 +f 4307/4350/4307 4308/4351/4308 4407/4451/4407 +f 4407/4451/4407 4308/4351/4308 4408/4452/4408 +f 4308/4351/4308 4309/4352/4309 4408/4452/4408 +f 4408/4452/4408 4309/4352/4309 4409/4453/4409 +f 4309/4352/4309 4310/4353/4310 4409/4453/4409 +f 4409/4453/4409 4310/4353/4310 4410/4454/4410 +f 4310/4353/4310 4311/4354/4311 4410/4454/4410 +f 4410/4454/4410 4311/4354/4311 4411/4455/4411 +f 4311/4354/4311 4312/4355/4312 4411/4455/4411 +f 4411/4455/4411 4312/4355/4312 4412/4456/4412 +f 4312/4355/4312 4313/4356/4313 4412/4456/4412 +f 4412/4456/4412 4313/4356/4313 4413/4457/4413 +f 4313/4356/4313 4314/4357/4314 4413/4457/4413 +f 4413/4457/4413 4314/4357/4314 4414/4458/4414 +f 4314/4357/4314 4315/4358/4315 4414/4458/4414 +f 4414/4458/4414 4315/4358/4315 4415/4459/4415 +f 4315/4358/4315 4316/4359/4316 4415/4459/4415 +f 4415/4459/4415 4316/4359/4316 4416/4460/4416 +f 4316/4359/4316 4317/4360/4317 4416/4460/4416 +f 4416/4460/4416 4317/4360/4317 4417/4461/4417 +f 4317/4360/4317 4318/4361/4318 4417/4461/4417 +f 4417/4461/4417 4318/4361/4318 4418/4462/4418 +f 4318/4361/4318 4319/4362/4319 4418/4462/4418 +f 4418/4462/4418 4319/4362/4319 4419/4463/4419 +f 4319/4362/4319 4320/4363/4320 4419/4463/4419 +f 4419/4463/4419 4320/4363/4320 4420/4464/4420 +f 4320/4363/4320 4321/4364/4321 4420/4464/4420 +f 4420/4464/4420 4321/4364/4321 4421/4465/4421 +f 4321/4364/4321 4322/4365/4322 4421/4465/4421 +f 4421/4465/4421 4322/4365/4322 4422/4466/4422 +f 4322/4365/4322 4323/4366/4323 4422/4466/4422 +f 4422/4466/4422 4323/4366/4323 4423/4467/4423 +f 4323/4366/4323 4324/4367/4324 4423/4467/4423 +f 4423/4467/4423 4324/4367/4324 4424/4468/4424 +f 4324/4367/4324 4325/4368/4325 4424/4468/4424 +f 4424/4468/4424 4325/4368/4325 4425/4469/4425 +f 4325/4368/4325 4326/4369/4326 4425/4469/4425 +f 4425/4469/4425 4326/4369/4326 4426/4470/4426 +f 4326/4369/4326 4327/4370/4327 4426/4470/4426 +f 4426/4470/4426 4327/4370/4327 4427/4471/4427 +f 4327/4370/4327 4328/4371/4328 4427/4471/4427 +f 4427/4471/4427 4328/4371/4328 4428/4472/4428 +f 4328/4371/4328 4329/4372/4329 4428/4472/4428 +f 4428/4472/4428 4329/4372/4329 4429/4473/4429 +f 4329/4372/4329 4330/4373/4330 4429/4473/4429 +f 4429/4473/4429 4330/4373/4330 4430/4474/4430 +f 4330/4373/4330 4331/4374/4331 4430/4474/4430 +f 4430/4474/4430 4331/4374/4331 4431/4475/4431 +f 4331/4374/4331 4332/4375/4332 4431/4475/4431 +f 4431/4475/4431 4332/4375/4332 4432/4476/4432 +f 4332/4375/4332 4333/4376/4333 4432/4476/4432 +f 4432/4476/4432 4333/4376/4333 4433/4477/4433 +f 4333/4376/4333 4334/4377/4334 4433/4477/4433 +f 4433/4477/4433 4334/4377/4334 4434/4478/4434 +f 4334/4377/4334 4335/4378/4335 4434/4478/4434 +f 4434/4478/4434 4335/4378/4335 4435/4479/4435 +f 4335/4378/4335 4336/4379/4336 4435/4479/4435 +f 4435/4479/4435 4336/4379/4336 4436/4480/4436 +f 4336/4379/4336 4337/4380/4337 4436/4480/4436 +f 4436/4480/4436 4337/4380/4337 4437/4481/4437 +f 4337/4380/4337 4338/4381/4338 4437/4481/4437 +f 4437/4481/4437 4338/4381/4338 4438/4482/4438 +f 4338/4381/4338 4339/4382/4339 4438/4482/4438 +f 4438/4482/4438 4339/4382/4339 4439/4483/4439 +f 4339/4382/4339 4340/4383/4340 4439/4483/4439 +f 4439/4483/4439 4340/4383/4340 4440/4484/4440 +f 4340/4383/4340 4341/4384/4341 4440/4484/4440 +f 4440/4484/4440 4341/4384/4341 4441/4485/4441 +f 4341/4384/4341 4342/4385/4342 4441/4485/4441 +f 4441/4485/4441 4342/4385/4342 4442/4486/4442 +f 4342/4385/4342 4343/4386/4343 4442/4486/4442 +f 4442/4486/4442 4343/4386/4343 4443/4487/4443 +f 4343/4386/4343 4344/4387/4344 4443/4487/4443 +f 4443/4487/4443 4344/4387/4344 4444/4488/4444 +f 4344/4387/4344 4345/4388/4345 4444/4488/4444 +f 4444/4488/4444 4345/4388/4345 4445/4489/4445 +f 4345/4388/4345 4346/4389/4346 4445/4489/4445 +f 4445/4489/4445 4346/4389/4346 4446/4490/4446 +f 4346/4389/4346 4347/4390/4347 4446/4490/4446 +f 4446/4490/4446 4347/4390/4347 4447/4491/4447 +f 4347/4390/4347 4348/4391/4348 4447/4491/4447 +f 4447/4491/4447 4348/4391/4348 4448/4492/4448 +f 4348/4391/4348 4349/4392/4349 4448/4492/4448 +f 4448/4492/4448 4349/4392/4349 4449/4493/4449 +f 4349/4392/4349 4350/4393/4350 4449/4493/4449 +f 4449/4493/4449 4350/4393/4350 4450/4494/4450 +f 4350/4393/4350 4351/4394/4351 4450/4494/4450 +f 4450/4494/4450 4351/4394/4351 4451/4495/4451 +f 4351/4394/4351 4352/4395/4352 4451/4495/4451 +f 4451/4495/4451 4352/4395/4352 4452/4496/4452 +f 4352/4395/4352 4353/4396/4353 4452/4496/4452 +f 4452/4496/4452 4353/4396/4353 4453/4497/4453 +f 4353/4396/4353 4354/4397/4354 4453/4497/4453 +f 4453/4497/4453 4354/4397/4354 4454/4498/4454 +f 4354/4397/4354 4355/4398/4355 4454/4498/4454 +f 4454/4498/4454 4355/4398/4355 4455/4499/4455 +f 4355/4398/4355 4356/4399/4356 4455/4499/4455 +f 4455/4499/4455 4356/4399/4356 4456/4500/4456 +f 4356/4399/4356 4357/4400/4357 4456/4500/4456 +f 4456/4500/4456 4357/4400/4357 4457/4501/4457 +f 4357/4400/4357 4358/4401/4358 4457/4501/4457 +f 4457/4501/4457 4358/4401/4358 4458/4502/4458 +f 4358/4401/4358 4359/4402/4359 4458/4502/4458 +f 4458/4502/4458 4359/4402/4359 4459/4503/4459 +f 4359/4402/4359 4360/4403/4360 4459/4503/4459 +f 4459/4503/4459 4360/4403/4360 4460/4504/4460 +f 4360/4403/4360 4361/4404/4361 4460/4504/4460 +f 4460/4504/4460 4361/4404/4361 4461/4505/4461 +f 4361/4404/4361 4362/4405/4362 4461/4505/4461 +f 4461/4505/4461 4362/4405/4362 4462/4506/4462 +f 4362/4405/4362 4363/4406/4363 4462/4506/4462 +f 4462/4506/4462 4363/4406/4363 4463/4507/4463 +f 4363/4406/4363 4364/4407/4364 4463/4507/4463 +f 4463/4507/4463 4364/4407/4364 4464/4508/4464 +f 4364/4407/4364 4365/4408/4365 4464/4508/4464 +f 4464/4508/4464 4365/4408/4365 4465/4509/4465 +f 4365/4408/4365 4366/4409/4366 4465/4509/4465 +f 4465/4509/4465 4366/4409/4366 4466/4510/4466 +f 4366/4409/4366 4367/4410/4367 4466/4510/4466 +f 4466/4510/4466 4367/4410/4367 4467/4511/4467 +f 4367/4410/4367 4368/4411/4368 4467/4511/4467 +f 4467/4511/4467 4368/4411/4368 4468/4512/4468 +f 4368/4411/4368 4369/4412/4369 4468/4512/4468 +f 4468/4512/4468 4369/4412/4369 4469/4513/4469 +f 4369/4412/4369 4370/4413/4370 4469/4513/4469 +f 4469/4513/4469 4370/4413/4370 4470/4514/4470 +f 4370/4413/4370 4371/4414/4371 4470/4514/4470 +f 4470/4514/4470 4371/4414/4371 4471/4515/4471 +f 4371/4414/4371 4372/4415/4372 4471/4515/4471 +f 4471/4515/4471 4372/4415/4372 4472/4516/4472 +f 4372/4415/4372 4373/4416/4373 4472/4516/4472 +f 4472/4516/4472 4373/4416/4373 4473/4517/4473 +f 4373/4416/4373 4374/4417/4374 4473/4517/4473 +f 4473/4517/4473 4374/4417/4374 4474/4518/4474 +f 4374/4417/4374 4375/4418/4375 4474/4518/4474 +f 4474/4518/4474 4375/4418/4375 4475/4519/4475 +f 4375/4418/4375 4376/4419/4376 4475/4519/4475 +f 4475/4519/4475 4376/4419/4376 4476/4520/4476 +f 4376/4419/4376 4377/4420/4377 4476/4520/4476 +f 4476/4520/4476 4377/4420/4377 4477/4521/4477 +f 4377/4420/4377 4378/4421/4378 4477/4521/4477 +f 4477/4521/4477 4378/4421/4378 4478/4522/4478 +f 4378/4421/4378 4379/4422/4379 4478/4522/4478 +f 4478/4522/4478 4379/4422/4379 4479/4523/4479 +f 4379/4422/4379 4380/4423/4380 4479/4523/4479 +f 4479/4523/4479 4380/4423/4380 4480/4524/4480 +f 4380/4423/4380 4381/4424/4381 4480/4524/4480 +f 4480/4524/4480 4381/4424/4381 4481/4525/4481 +f 4381/4424/4381 4382/4425/4382 4481/4525/4481 +f 4481/4525/4481 4382/4425/4382 4482/4526/4482 +f 4382/4425/4382 4383/4426/4383 4482/4526/4482 +f 4482/4526/4482 4383/4426/4383 4483/4527/4483 +f 4383/4426/4383 4384/4427/4384 4483/4527/4483 +f 4483/4527/4483 4384/4427/4384 4484/4528/4484 +f 4384/4427/4384 4385/4428/4385 4484/4528/4484 +f 4484/4528/4484 4385/4428/4385 4485/4529/4485 +f 4385/4428/4385 4386/4429/4386 4485/4529/4485 +f 4485/4529/4485 4386/4429/4386 4486/4530/4486 +f 4386/4429/4386 4387/4430/4387 4486/4530/4486 +f 4486/4530/4486 4387/4430/4387 4487/4531/4487 +f 4387/4430/4387 4388/4431/4388 4487/4531/4487 +f 4487/4531/4487 4388/4431/4388 4488/4532/4488 +f 4388/4431/4388 4389/4432/4389 4488/4532/4488 +f 4488/4532/4488 4389/4432/4389 4489/4533/4489 +f 4389/4432/4389 4390/4433/4390 4489/4533/4489 +f 4489/4533/4489 4390/4433/4390 4490/4534/4490 +f 4390/4433/4390 4391/4434/4391 4490/4534/4490 +f 4490/4534/4490 4391/4434/4391 4491/4535/4491 +f 4391/4434/4391 4392/4435/4392 4491/4535/4491 +f 4491/4535/4491 4392/4435/4392 4492/4536/4492 +f 4392/4435/4392 4393/4436/4393 4492/4536/4492 +f 4492/4536/4492 4393/4436/4393 4493/4537/4493 +f 4393/4436/4393 4394/4437/4394 4493/4537/4493 +f 4493/4537/4493 4394/4437/4394 4494/4538/4494 +f 4394/4437/4394 4395/4438/4395 4494/4538/4494 +f 4494/4538/4494 4395/4438/4395 4495/4539/4495 +f 4395/4438/4395 4396/4439/4396 4495/4539/4495 +f 4495/4539/4495 4396/4439/4396 4496/4540/4496 +f 4396/4439/4396 4397/4440/4397 4496/4540/4496 +f 4496/4540/4496 4397/4440/4397 4497/4541/4497 +f 4397/4440/4397 4398/4441/4398 4497/4541/4497 +f 4497/4541/4497 4398/4441/4398 4498/4542/4498 +f 4398/4441/4398 4399/4442/4399 4498/4542/4498 +f 4498/4542/4498 4399/4442/4399 4499/4543/4499 +f 4399/4442/4399 4400/4443/4400 4499/4543/4499 +f 4499/4543/4499 4400/4443/4400 4500/4544/4500 +f 4400/4443/4400 4301/4444/4301 4500/4544/4500 +f 4500/4544/4500 4301/4444/4301 4401/4545/4401 +f 4401/4445/4401 4402/4446/4402 4501/4546/4501 +f 4501/4546/4501 4402/4446/4402 4502/4547/4502 +f 4402/4446/4402 4403/4447/4403 4502/4547/4502 +f 4502/4547/4502 4403/4447/4403 4503/4548/4503 +f 4403/4447/4403 4404/4448/4404 4503/4548/4503 +f 4503/4548/4503 4404/4448/4404 4504/4549/4504 +f 4404/4448/4404 4405/4449/4405 4504/4549/4504 +f 4504/4549/4504 4405/4449/4405 4505/4550/4505 +f 4405/4449/4405 4406/4450/4406 4505/4550/4505 +f 4505/4550/4505 4406/4450/4406 4506/4551/4506 +f 4406/4450/4406 4407/4451/4407 4506/4551/4506 +f 4506/4551/4506 4407/4451/4407 4507/4552/4507 +f 4407/4451/4407 4408/4452/4408 4507/4552/4507 +f 4507/4552/4507 4408/4452/4408 4508/4553/4508 +f 4408/4452/4408 4409/4453/4409 4508/4553/4508 +f 4508/4553/4508 4409/4453/4409 4509/4554/4509 +f 4409/4453/4409 4410/4454/4410 4509/4554/4509 +f 4509/4554/4509 4410/4454/4410 4510/4555/4510 +f 4410/4454/4410 4411/4455/4411 4510/4555/4510 +f 4510/4555/4510 4411/4455/4411 4511/4556/4511 +f 4411/4455/4411 4412/4456/4412 4511/4556/4511 +f 4511/4556/4511 4412/4456/4412 4512/4557/4512 +f 4412/4456/4412 4413/4457/4413 4512/4557/4512 +f 4512/4557/4512 4413/4457/4413 4513/4558/4513 +f 4413/4457/4413 4414/4458/4414 4513/4558/4513 +f 4513/4558/4513 4414/4458/4414 4514/4559/4514 +f 4414/4458/4414 4415/4459/4415 4514/4559/4514 +f 4514/4559/4514 4415/4459/4415 4515/4560/4515 +f 4415/4459/4415 4416/4460/4416 4515/4560/4515 +f 4515/4560/4515 4416/4460/4416 4516/4561/4516 +f 4416/4460/4416 4417/4461/4417 4516/4561/4516 +f 4516/4561/4516 4417/4461/4417 4517/4562/4517 +f 4417/4461/4417 4418/4462/4418 4517/4562/4517 +f 4517/4562/4517 4418/4462/4418 4518/4563/4518 +f 4418/4462/4418 4419/4463/4419 4518/4563/4518 +f 4518/4563/4518 4419/4463/4419 4519/4564/4519 +f 4419/4463/4419 4420/4464/4420 4519/4564/4519 +f 4519/4564/4519 4420/4464/4420 4520/4565/4520 +f 4420/4464/4420 4421/4465/4421 4520/4565/4520 +f 4520/4565/4520 4421/4465/4421 4521/4566/4521 +f 4421/4465/4421 4422/4466/4422 4521/4566/4521 +f 4521/4566/4521 4422/4466/4422 4522/4567/4522 +f 4422/4466/4422 4423/4467/4423 4522/4567/4522 +f 4522/4567/4522 4423/4467/4423 4523/4568/4523 +f 4423/4467/4423 4424/4468/4424 4523/4568/4523 +f 4523/4568/4523 4424/4468/4424 4524/4569/4524 +f 4424/4468/4424 4425/4469/4425 4524/4569/4524 +f 4524/4569/4524 4425/4469/4425 4525/4570/4525 +f 4425/4469/4425 4426/4470/4426 4525/4570/4525 +f 4525/4570/4525 4426/4470/4426 4526/4571/4526 +f 4426/4470/4426 4427/4471/4427 4526/4571/4526 +f 4526/4571/4526 4427/4471/4427 4527/4572/4527 +f 4427/4471/4427 4428/4472/4428 4527/4572/4527 +f 4527/4572/4527 4428/4472/4428 4528/4573/4528 +f 4428/4472/4428 4429/4473/4429 4528/4573/4528 +f 4528/4573/4528 4429/4473/4429 4529/4574/4529 +f 4429/4473/4429 4430/4474/4430 4529/4574/4529 +f 4529/4574/4529 4430/4474/4430 4530/4575/4530 +f 4430/4474/4430 4431/4475/4431 4530/4575/4530 +f 4530/4575/4530 4431/4475/4431 4531/4576/4531 +f 4431/4475/4431 4432/4476/4432 4531/4576/4531 +f 4531/4576/4531 4432/4476/4432 4532/4577/4532 +f 4432/4476/4432 4433/4477/4433 4532/4577/4532 +f 4532/4577/4532 4433/4477/4433 4533/4578/4533 +f 4433/4477/4433 4434/4478/4434 4533/4578/4533 +f 4533/4578/4533 4434/4478/4434 4534/4579/4534 +f 4434/4478/4434 4435/4479/4435 4534/4579/4534 +f 4534/4579/4534 4435/4479/4435 4535/4580/4535 +f 4435/4479/4435 4436/4480/4436 4535/4580/4535 +f 4535/4580/4535 4436/4480/4436 4536/4581/4536 +f 4436/4480/4436 4437/4481/4437 4536/4581/4536 +f 4536/4581/4536 4437/4481/4437 4537/4582/4537 +f 4437/4481/4437 4438/4482/4438 4537/4582/4537 +f 4537/4582/4537 4438/4482/4438 4538/4583/4538 +f 4438/4482/4438 4439/4483/4439 4538/4583/4538 +f 4538/4583/4538 4439/4483/4439 4539/4584/4539 +f 4439/4483/4439 4440/4484/4440 4539/4584/4539 +f 4539/4584/4539 4440/4484/4440 4540/4585/4540 +f 4440/4484/4440 4441/4485/4441 4540/4585/4540 +f 4540/4585/4540 4441/4485/4441 4541/4586/4541 +f 4441/4485/4441 4442/4486/4442 4541/4586/4541 +f 4541/4586/4541 4442/4486/4442 4542/4587/4542 +f 4442/4486/4442 4443/4487/4443 4542/4587/4542 +f 4542/4587/4542 4443/4487/4443 4543/4588/4543 +f 4443/4487/4443 4444/4488/4444 4543/4588/4543 +f 4543/4588/4543 4444/4488/4444 4544/4589/4544 +f 4444/4488/4444 4445/4489/4445 4544/4589/4544 +f 4544/4589/4544 4445/4489/4445 4545/4590/4545 +f 4445/4489/4445 4446/4490/4446 4545/4590/4545 +f 4545/4590/4545 4446/4490/4446 4546/4591/4546 +f 4446/4490/4446 4447/4491/4447 4546/4591/4546 +f 4546/4591/4546 4447/4491/4447 4547/4592/4547 +f 4447/4491/4447 4448/4492/4448 4547/4592/4547 +f 4547/4592/4547 4448/4492/4448 4548/4593/4548 +f 4448/4492/4448 4449/4493/4449 4548/4593/4548 +f 4548/4593/4548 4449/4493/4449 4549/4594/4549 +f 4449/4493/4449 4450/4494/4450 4549/4594/4549 +f 4549/4594/4549 4450/4494/4450 4550/4595/4550 +f 4450/4494/4450 4451/4495/4451 4550/4595/4550 +f 4550/4595/4550 4451/4495/4451 4551/4596/4551 +f 4451/4495/4451 4452/4496/4452 4551/4596/4551 +f 4551/4596/4551 4452/4496/4452 4552/4597/4552 +f 4452/4496/4452 4453/4497/4453 4552/4597/4552 +f 4552/4597/4552 4453/4497/4453 4553/4598/4553 +f 4453/4497/4453 4454/4498/4454 4553/4598/4553 +f 4553/4598/4553 4454/4498/4454 4554/4599/4554 +f 4454/4498/4454 4455/4499/4455 4554/4599/4554 +f 4554/4599/4554 4455/4499/4455 4555/4600/4555 +f 4455/4499/4455 4456/4500/4456 4555/4600/4555 +f 4555/4600/4555 4456/4500/4456 4556/4601/4556 +f 4456/4500/4456 4457/4501/4457 4556/4601/4556 +f 4556/4601/4556 4457/4501/4457 4557/4602/4557 +f 4457/4501/4457 4458/4502/4458 4557/4602/4557 +f 4557/4602/4557 4458/4502/4458 4558/4603/4558 +f 4458/4502/4458 4459/4503/4459 4558/4603/4558 +f 4558/4603/4558 4459/4503/4459 4559/4604/4559 +f 4459/4503/4459 4460/4504/4460 4559/4604/4559 +f 4559/4604/4559 4460/4504/4460 4560/4605/4560 +f 4460/4504/4460 4461/4505/4461 4560/4605/4560 +f 4560/4605/4560 4461/4505/4461 4561/4606/4561 +f 4461/4505/4461 4462/4506/4462 4561/4606/4561 +f 4561/4606/4561 4462/4506/4462 4562/4607/4562 +f 4462/4506/4462 4463/4507/4463 4562/4607/4562 +f 4562/4607/4562 4463/4507/4463 4563/4608/4563 +f 4463/4507/4463 4464/4508/4464 4563/4608/4563 +f 4563/4608/4563 4464/4508/4464 4564/4609/4564 +f 4464/4508/4464 4465/4509/4465 4564/4609/4564 +f 4564/4609/4564 4465/4509/4465 4565/4610/4565 +f 4465/4509/4465 4466/4510/4466 4565/4610/4565 +f 4565/4610/4565 4466/4510/4466 4566/4611/4566 +f 4466/4510/4466 4467/4511/4467 4566/4611/4566 +f 4566/4611/4566 4467/4511/4467 4567/4612/4567 +f 4467/4511/4467 4468/4512/4468 4567/4612/4567 +f 4567/4612/4567 4468/4512/4468 4568/4613/4568 +f 4468/4512/4468 4469/4513/4469 4568/4613/4568 +f 4568/4613/4568 4469/4513/4469 4569/4614/4569 +f 4469/4513/4469 4470/4514/4470 4569/4614/4569 +f 4569/4614/4569 4470/4514/4470 4570/4615/4570 +f 4470/4514/4470 4471/4515/4471 4570/4615/4570 +f 4570/4615/4570 4471/4515/4471 4571/4616/4571 +f 4471/4515/4471 4472/4516/4472 4571/4616/4571 +f 4571/4616/4571 4472/4516/4472 4572/4617/4572 +f 4472/4516/4472 4473/4517/4473 4572/4617/4572 +f 4572/4617/4572 4473/4517/4473 4573/4618/4573 +f 4473/4517/4473 4474/4518/4474 4573/4618/4573 +f 4573/4618/4573 4474/4518/4474 4574/4619/4574 +f 4474/4518/4474 4475/4519/4475 4574/4619/4574 +f 4574/4619/4574 4475/4519/4475 4575/4620/4575 +f 4475/4519/4475 4476/4520/4476 4575/4620/4575 +f 4575/4620/4575 4476/4520/4476 4576/4621/4576 +f 4476/4520/4476 4477/4521/4477 4576/4621/4576 +f 4576/4621/4576 4477/4521/4477 4577/4622/4577 +f 4477/4521/4477 4478/4522/4478 4577/4622/4577 +f 4577/4622/4577 4478/4522/4478 4578/4623/4578 +f 4478/4522/4478 4479/4523/4479 4578/4623/4578 +f 4578/4623/4578 4479/4523/4479 4579/4624/4579 +f 4479/4523/4479 4480/4524/4480 4579/4624/4579 +f 4579/4624/4579 4480/4524/4480 4580/4625/4580 +f 4480/4524/4480 4481/4525/4481 4580/4625/4580 +f 4580/4625/4580 4481/4525/4481 4581/4626/4581 +f 4481/4525/4481 4482/4526/4482 4581/4626/4581 +f 4581/4626/4581 4482/4526/4482 4582/4627/4582 +f 4482/4526/4482 4483/4527/4483 4582/4627/4582 +f 4582/4627/4582 4483/4527/4483 4583/4628/4583 +f 4483/4527/4483 4484/4528/4484 4583/4628/4583 +f 4583/4628/4583 4484/4528/4484 4584/4629/4584 +f 4484/4528/4484 4485/4529/4485 4584/4629/4584 +f 4584/4629/4584 4485/4529/4485 4585/4630/4585 +f 4485/4529/4485 4486/4530/4486 4585/4630/4585 +f 4585/4630/4585 4486/4530/4486 4586/4631/4586 +f 4486/4530/4486 4487/4531/4487 4586/4631/4586 +f 4586/4631/4586 4487/4531/4487 4587/4632/4587 +f 4487/4531/4487 4488/4532/4488 4587/4632/4587 +f 4587/4632/4587 4488/4532/4488 4588/4633/4588 +f 4488/4532/4488 4489/4533/4489 4588/4633/4588 +f 4588/4633/4588 4489/4533/4489 4589/4634/4589 +f 4489/4533/4489 4490/4534/4490 4589/4634/4589 +f 4589/4634/4589 4490/4534/4490 4590/4635/4590 +f 4490/4534/4490 4491/4535/4491 4590/4635/4590 +f 4590/4635/4590 4491/4535/4491 4591/4636/4591 +f 4491/4535/4491 4492/4536/4492 4591/4636/4591 +f 4591/4636/4591 4492/4536/4492 4592/4637/4592 +f 4492/4536/4492 4493/4537/4493 4592/4637/4592 +f 4592/4637/4592 4493/4537/4493 4593/4638/4593 +f 4493/4537/4493 4494/4538/4494 4593/4638/4593 +f 4593/4638/4593 4494/4538/4494 4594/4639/4594 +f 4494/4538/4494 4495/4539/4495 4594/4639/4594 +f 4594/4639/4594 4495/4539/4495 4595/4640/4595 +f 4495/4539/4495 4496/4540/4496 4595/4640/4595 +f 4595/4640/4595 4496/4540/4496 4596/4641/4596 +f 4496/4540/4496 4497/4541/4497 4596/4641/4596 +f 4596/4641/4596 4497/4541/4497 4597/4642/4597 +f 4497/4541/4497 4498/4542/4498 4597/4642/4597 +f 4597/4642/4597 4498/4542/4498 4598/4643/4598 +f 4498/4542/4498 4499/4543/4499 4598/4643/4598 +f 4598/4643/4598 4499/4543/4499 4599/4644/4599 +f 4499/4543/4499 4500/4544/4500 4599/4644/4599 +f 4599/4644/4599 4500/4544/4500 4600/4645/4600 +f 4500/4544/4500 4401/4545/4401 4600/4645/4600 +f 4600/4645/4600 4401/4545/4401 4501/4646/4501 +f 4501/4546/4501 4502/4547/4502 4601/4647/4601 +f 4601/4647/4601 4502/4547/4502 4602/4648/4602 +f 4502/4547/4502 4503/4548/4503 4602/4648/4602 +f 4602/4648/4602 4503/4548/4503 4603/4649/4603 +f 4503/4548/4503 4504/4549/4504 4603/4649/4603 +f 4603/4649/4603 4504/4549/4504 4604/4650/4604 +f 4504/4549/4504 4505/4550/4505 4604/4650/4604 +f 4604/4650/4604 4505/4550/4505 4605/4651/4605 +f 4505/4550/4505 4506/4551/4506 4605/4651/4605 +f 4605/4651/4605 4506/4551/4506 4606/4652/4606 +f 4506/4551/4506 4507/4552/4507 4606/4652/4606 +f 4606/4652/4606 4507/4552/4507 4607/4653/4607 +f 4507/4552/4507 4508/4553/4508 4607/4653/4607 +f 4607/4653/4607 4508/4553/4508 4608/4654/4608 +f 4508/4553/4508 4509/4554/4509 4608/4654/4608 +f 4608/4654/4608 4509/4554/4509 4609/4655/4609 +f 4509/4554/4509 4510/4555/4510 4609/4655/4609 +f 4609/4655/4609 4510/4555/4510 4610/4656/4610 +f 4510/4555/4510 4511/4556/4511 4610/4656/4610 +f 4610/4656/4610 4511/4556/4511 4611/4657/4611 +f 4511/4556/4511 4512/4557/4512 4611/4657/4611 +f 4611/4657/4611 4512/4557/4512 4612/4658/4612 +f 4512/4557/4512 4513/4558/4513 4612/4658/4612 +f 4612/4658/4612 4513/4558/4513 4613/4659/4613 +f 4513/4558/4513 4514/4559/4514 4613/4659/4613 +f 4613/4659/4613 4514/4559/4514 4614/4660/4614 +f 4514/4559/4514 4515/4560/4515 4614/4660/4614 +f 4614/4660/4614 4515/4560/4515 4615/4661/4615 +f 4515/4560/4515 4516/4561/4516 4615/4661/4615 +f 4615/4661/4615 4516/4561/4516 4616/4662/4616 +f 4516/4561/4516 4517/4562/4517 4616/4662/4616 +f 4616/4662/4616 4517/4562/4517 4617/4663/4617 +f 4517/4562/4517 4518/4563/4518 4617/4663/4617 +f 4617/4663/4617 4518/4563/4518 4618/4664/4618 +f 4518/4563/4518 4519/4564/4519 4618/4664/4618 +f 4618/4664/4618 4519/4564/4519 4619/4665/4619 +f 4519/4564/4519 4520/4565/4520 4619/4665/4619 +f 4619/4665/4619 4520/4565/4520 4620/4666/4620 +f 4520/4565/4520 4521/4566/4521 4620/4666/4620 +f 4620/4666/4620 4521/4566/4521 4621/4667/4621 +f 4521/4566/4521 4522/4567/4522 4621/4667/4621 +f 4621/4667/4621 4522/4567/4522 4622/4668/4622 +f 4522/4567/4522 4523/4568/4523 4622/4668/4622 +f 4622/4668/4622 4523/4568/4523 4623/4669/4623 +f 4523/4568/4523 4524/4569/4524 4623/4669/4623 +f 4623/4669/4623 4524/4569/4524 4624/4670/4624 +f 4524/4569/4524 4525/4570/4525 4624/4670/4624 +f 4624/4670/4624 4525/4570/4525 4625/4671/4625 +f 4525/4570/4525 4526/4571/4526 4625/4671/4625 +f 4625/4671/4625 4526/4571/4526 4626/4672/4626 +f 4526/4571/4526 4527/4572/4527 4626/4672/4626 +f 4626/4672/4626 4527/4572/4527 4627/4673/4627 +f 4527/4572/4527 4528/4573/4528 4627/4673/4627 +f 4627/4673/4627 4528/4573/4528 4628/4674/4628 +f 4528/4573/4528 4529/4574/4529 4628/4674/4628 +f 4628/4674/4628 4529/4574/4529 4629/4675/4629 +f 4529/4574/4529 4530/4575/4530 4629/4675/4629 +f 4629/4675/4629 4530/4575/4530 4630/4676/4630 +f 4530/4575/4530 4531/4576/4531 4630/4676/4630 +f 4630/4676/4630 4531/4576/4531 4631/4677/4631 +f 4531/4576/4531 4532/4577/4532 4631/4677/4631 +f 4631/4677/4631 4532/4577/4532 4632/4678/4632 +f 4532/4577/4532 4533/4578/4533 4632/4678/4632 +f 4632/4678/4632 4533/4578/4533 4633/4679/4633 +f 4533/4578/4533 4534/4579/4534 4633/4679/4633 +f 4633/4679/4633 4534/4579/4534 4634/4680/4634 +f 4534/4579/4534 4535/4580/4535 4634/4680/4634 +f 4634/4680/4634 4535/4580/4535 4635/4681/4635 +f 4535/4580/4535 4536/4581/4536 4635/4681/4635 +f 4635/4681/4635 4536/4581/4536 4636/4682/4636 +f 4536/4581/4536 4537/4582/4537 4636/4682/4636 +f 4636/4682/4636 4537/4582/4537 4637/4683/4637 +f 4537/4582/4537 4538/4583/4538 4637/4683/4637 +f 4637/4683/4637 4538/4583/4538 4638/4684/4638 +f 4538/4583/4538 4539/4584/4539 4638/4684/4638 +f 4638/4684/4638 4539/4584/4539 4639/4685/4639 +f 4539/4584/4539 4540/4585/4540 4639/4685/4639 +f 4639/4685/4639 4540/4585/4540 4640/4686/4640 +f 4540/4585/4540 4541/4586/4541 4640/4686/4640 +f 4640/4686/4640 4541/4586/4541 4641/4687/4641 +f 4541/4586/4541 4542/4587/4542 4641/4687/4641 +f 4641/4687/4641 4542/4587/4542 4642/4688/4642 +f 4542/4587/4542 4543/4588/4543 4642/4688/4642 +f 4642/4688/4642 4543/4588/4543 4643/4689/4643 +f 4543/4588/4543 4544/4589/4544 4643/4689/4643 +f 4643/4689/4643 4544/4589/4544 4644/4690/4644 +f 4544/4589/4544 4545/4590/4545 4644/4690/4644 +f 4644/4690/4644 4545/4590/4545 4645/4691/4645 +f 4545/4590/4545 4546/4591/4546 4645/4691/4645 +f 4645/4691/4645 4546/4591/4546 4646/4692/4646 +f 4546/4591/4546 4547/4592/4547 4646/4692/4646 +f 4646/4692/4646 4547/4592/4547 4647/4693/4647 +f 4547/4592/4547 4548/4593/4548 4647/4693/4647 +f 4647/4693/4647 4548/4593/4548 4648/4694/4648 +f 4548/4593/4548 4549/4594/4549 4648/4694/4648 +f 4648/4694/4648 4549/4594/4549 4649/4695/4649 +f 4549/4594/4549 4550/4595/4550 4649/4695/4649 +f 4649/4695/4649 4550/4595/4550 4650/4696/4650 +f 4550/4595/4550 4551/4596/4551 4650/4696/4650 +f 4650/4696/4650 4551/4596/4551 4651/4697/4651 +f 4551/4596/4551 4552/4597/4552 4651/4697/4651 +f 4651/4697/4651 4552/4597/4552 4652/4698/4652 +f 4552/4597/4552 4553/4598/4553 4652/4698/4652 +f 4652/4698/4652 4553/4598/4553 4653/4699/4653 +f 4553/4598/4553 4554/4599/4554 4653/4699/4653 +f 4653/4699/4653 4554/4599/4554 4654/4700/4654 +f 4554/4599/4554 4555/4600/4555 4654/4700/4654 +f 4654/4700/4654 4555/4600/4555 4655/4701/4655 +f 4555/4600/4555 4556/4601/4556 4655/4701/4655 +f 4655/4701/4655 4556/4601/4556 4656/4702/4656 +f 4556/4601/4556 4557/4602/4557 4656/4702/4656 +f 4656/4702/4656 4557/4602/4557 4657/4703/4657 +f 4557/4602/4557 4558/4603/4558 4657/4703/4657 +f 4657/4703/4657 4558/4603/4558 4658/4704/4658 +f 4558/4603/4558 4559/4604/4559 4658/4704/4658 +f 4658/4704/4658 4559/4604/4559 4659/4705/4659 +f 4559/4604/4559 4560/4605/4560 4659/4705/4659 +f 4659/4705/4659 4560/4605/4560 4660/4706/4660 +f 4560/4605/4560 4561/4606/4561 4660/4706/4660 +f 4660/4706/4660 4561/4606/4561 4661/4707/4661 +f 4561/4606/4561 4562/4607/4562 4661/4707/4661 +f 4661/4707/4661 4562/4607/4562 4662/4708/4662 +f 4562/4607/4562 4563/4608/4563 4662/4708/4662 +f 4662/4708/4662 4563/4608/4563 4663/4709/4663 +f 4563/4608/4563 4564/4609/4564 4663/4709/4663 +f 4663/4709/4663 4564/4609/4564 4664/4710/4664 +f 4564/4609/4564 4565/4610/4565 4664/4710/4664 +f 4664/4710/4664 4565/4610/4565 4665/4711/4665 +f 4565/4610/4565 4566/4611/4566 4665/4711/4665 +f 4665/4711/4665 4566/4611/4566 4666/4712/4666 +f 4566/4611/4566 4567/4612/4567 4666/4712/4666 +f 4666/4712/4666 4567/4612/4567 4667/4713/4667 +f 4567/4612/4567 4568/4613/4568 4667/4713/4667 +f 4667/4713/4667 4568/4613/4568 4668/4714/4668 +f 4568/4613/4568 4569/4614/4569 4668/4714/4668 +f 4668/4714/4668 4569/4614/4569 4669/4715/4669 +f 4569/4614/4569 4570/4615/4570 4669/4715/4669 +f 4669/4715/4669 4570/4615/4570 4670/4716/4670 +f 4570/4615/4570 4571/4616/4571 4670/4716/4670 +f 4670/4716/4670 4571/4616/4571 4671/4717/4671 +f 4571/4616/4571 4572/4617/4572 4671/4717/4671 +f 4671/4717/4671 4572/4617/4572 4672/4718/4672 +f 4572/4617/4572 4573/4618/4573 4672/4718/4672 +f 4672/4718/4672 4573/4618/4573 4673/4719/4673 +f 4573/4618/4573 4574/4619/4574 4673/4719/4673 +f 4673/4719/4673 4574/4619/4574 4674/4720/4674 +f 4574/4619/4574 4575/4620/4575 4674/4720/4674 +f 4674/4720/4674 4575/4620/4575 4675/4721/4675 +f 4575/4620/4575 4576/4621/4576 4675/4721/4675 +f 4675/4721/4675 4576/4621/4576 4676/4722/4676 +f 4576/4621/4576 4577/4622/4577 4676/4722/4676 +f 4676/4722/4676 4577/4622/4577 4677/4723/4677 +f 4577/4622/4577 4578/4623/4578 4677/4723/4677 +f 4677/4723/4677 4578/4623/4578 4678/4724/4678 +f 4578/4623/4578 4579/4624/4579 4678/4724/4678 +f 4678/4724/4678 4579/4624/4579 4679/4725/4679 +f 4579/4624/4579 4580/4625/4580 4679/4725/4679 +f 4679/4725/4679 4580/4625/4580 4680/4726/4680 +f 4580/4625/4580 4581/4626/4581 4680/4726/4680 +f 4680/4726/4680 4581/4626/4581 4681/4727/4681 +f 4581/4626/4581 4582/4627/4582 4681/4727/4681 +f 4681/4727/4681 4582/4627/4582 4682/4728/4682 +f 4582/4627/4582 4583/4628/4583 4682/4728/4682 +f 4682/4728/4682 4583/4628/4583 4683/4729/4683 +f 4583/4628/4583 4584/4629/4584 4683/4729/4683 +f 4683/4729/4683 4584/4629/4584 4684/4730/4684 +f 4584/4629/4584 4585/4630/4585 4684/4730/4684 +f 4684/4730/4684 4585/4630/4585 4685/4731/4685 +f 4585/4630/4585 4586/4631/4586 4685/4731/4685 +f 4685/4731/4685 4586/4631/4586 4686/4732/4686 +f 4586/4631/4586 4587/4632/4587 4686/4732/4686 +f 4686/4732/4686 4587/4632/4587 4687/4733/4687 +f 4587/4632/4587 4588/4633/4588 4687/4733/4687 +f 4687/4733/4687 4588/4633/4588 4688/4734/4688 +f 4588/4633/4588 4589/4634/4589 4688/4734/4688 +f 4688/4734/4688 4589/4634/4589 4689/4735/4689 +f 4589/4634/4589 4590/4635/4590 4689/4735/4689 +f 4689/4735/4689 4590/4635/4590 4690/4736/4690 +f 4590/4635/4590 4591/4636/4591 4690/4736/4690 +f 4690/4736/4690 4591/4636/4591 4691/4737/4691 +f 4591/4636/4591 4592/4637/4592 4691/4737/4691 +f 4691/4737/4691 4592/4637/4592 4692/4738/4692 +f 4592/4637/4592 4593/4638/4593 4692/4738/4692 +f 4692/4738/4692 4593/4638/4593 4693/4739/4693 +f 4593/4638/4593 4594/4639/4594 4693/4739/4693 +f 4693/4739/4693 4594/4639/4594 4694/4740/4694 +f 4594/4639/4594 4595/4640/4595 4694/4740/4694 +f 4694/4740/4694 4595/4640/4595 4695/4741/4695 +f 4595/4640/4595 4596/4641/4596 4695/4741/4695 +f 4695/4741/4695 4596/4641/4596 4696/4742/4696 +f 4596/4641/4596 4597/4642/4597 4696/4742/4696 +f 4696/4742/4696 4597/4642/4597 4697/4743/4697 +f 4597/4642/4597 4598/4643/4598 4697/4743/4697 +f 4697/4743/4697 4598/4643/4598 4698/4744/4698 +f 4598/4643/4598 4599/4644/4599 4698/4744/4698 +f 4698/4744/4698 4599/4644/4599 4699/4745/4699 +f 4599/4644/4599 4600/4645/4600 4699/4745/4699 +f 4699/4745/4699 4600/4645/4600 4700/4746/4700 +f 4600/4645/4600 4501/4646/4501 4700/4746/4700 +f 4700/4746/4700 4501/4646/4501 4601/4747/4601 +f 4601/4647/4601 4602/4648/4602 4701/4748/4701 +f 4701/4748/4701 4602/4648/4602 4702/4749/4702 +f 4602/4648/4602 4603/4649/4603 4702/4749/4702 +f 4702/4749/4702 4603/4649/4603 4703/4750/4703 +f 4603/4649/4603 4604/4650/4604 4703/4750/4703 +f 4703/4750/4703 4604/4650/4604 4704/4751/4704 +f 4604/4650/4604 4605/4651/4605 4704/4751/4704 +f 4704/4751/4704 4605/4651/4605 4705/4752/4705 +f 4605/4651/4605 4606/4652/4606 4705/4752/4705 +f 4705/4752/4705 4606/4652/4606 4706/4753/4706 +f 4606/4652/4606 4607/4653/4607 4706/4753/4706 +f 4706/4753/4706 4607/4653/4607 4707/4754/4707 +f 4607/4653/4607 4608/4654/4608 4707/4754/4707 +f 4707/4754/4707 4608/4654/4608 4708/4755/4708 +f 4608/4654/4608 4609/4655/4609 4708/4755/4708 +f 4708/4755/4708 4609/4655/4609 4709/4756/4709 +f 4609/4655/4609 4610/4656/4610 4709/4756/4709 +f 4709/4756/4709 4610/4656/4610 4710/4757/4710 +f 4610/4656/4610 4611/4657/4611 4710/4757/4710 +f 4710/4757/4710 4611/4657/4611 4711/4758/4711 +f 4611/4657/4611 4612/4658/4612 4711/4758/4711 +f 4711/4758/4711 4612/4658/4612 4712/4759/4712 +f 4612/4658/4612 4613/4659/4613 4712/4759/4712 +f 4712/4759/4712 4613/4659/4613 4713/4760/4713 +f 4613/4659/4613 4614/4660/4614 4713/4760/4713 +f 4713/4760/4713 4614/4660/4614 4714/4761/4714 +f 4614/4660/4614 4615/4661/4615 4714/4761/4714 +f 4714/4761/4714 4615/4661/4615 4715/4762/4715 +f 4615/4661/4615 4616/4662/4616 4715/4762/4715 +f 4715/4762/4715 4616/4662/4616 4716/4763/4716 +f 4616/4662/4616 4617/4663/4617 4716/4763/4716 +f 4716/4763/4716 4617/4663/4617 4717/4764/4717 +f 4617/4663/4617 4618/4664/4618 4717/4764/4717 +f 4717/4764/4717 4618/4664/4618 4718/4765/4718 +f 4618/4664/4618 4619/4665/4619 4718/4765/4718 +f 4718/4765/4718 4619/4665/4619 4719/4766/4719 +f 4619/4665/4619 4620/4666/4620 4719/4766/4719 +f 4719/4766/4719 4620/4666/4620 4720/4767/4720 +f 4620/4666/4620 4621/4667/4621 4720/4767/4720 +f 4720/4767/4720 4621/4667/4621 4721/4768/4721 +f 4621/4667/4621 4622/4668/4622 4721/4768/4721 +f 4721/4768/4721 4622/4668/4622 4722/4769/4722 +f 4622/4668/4622 4623/4669/4623 4722/4769/4722 +f 4722/4769/4722 4623/4669/4623 4723/4770/4723 +f 4623/4669/4623 4624/4670/4624 4723/4770/4723 +f 4723/4770/4723 4624/4670/4624 4724/4771/4724 +f 4624/4670/4624 4625/4671/4625 4724/4771/4724 +f 4724/4771/4724 4625/4671/4625 4725/4772/4725 +f 4625/4671/4625 4626/4672/4626 4725/4772/4725 +f 4725/4772/4725 4626/4672/4626 4726/4773/4726 +f 4626/4672/4626 4627/4673/4627 4726/4773/4726 +f 4726/4773/4726 4627/4673/4627 4727/4774/4727 +f 4627/4673/4627 4628/4674/4628 4727/4774/4727 +f 4727/4774/4727 4628/4674/4628 4728/4775/4728 +f 4628/4674/4628 4629/4675/4629 4728/4775/4728 +f 4728/4775/4728 4629/4675/4629 4729/4776/4729 +f 4629/4675/4629 4630/4676/4630 4729/4776/4729 +f 4729/4776/4729 4630/4676/4630 4730/4777/4730 +f 4630/4676/4630 4631/4677/4631 4730/4777/4730 +f 4730/4777/4730 4631/4677/4631 4731/4778/4731 +f 4631/4677/4631 4632/4678/4632 4731/4778/4731 +f 4731/4778/4731 4632/4678/4632 4732/4779/4732 +f 4632/4678/4632 4633/4679/4633 4732/4779/4732 +f 4732/4779/4732 4633/4679/4633 4733/4780/4733 +f 4633/4679/4633 4634/4680/4634 4733/4780/4733 +f 4733/4780/4733 4634/4680/4634 4734/4781/4734 +f 4634/4680/4634 4635/4681/4635 4734/4781/4734 +f 4734/4781/4734 4635/4681/4635 4735/4782/4735 +f 4635/4681/4635 4636/4682/4636 4735/4782/4735 +f 4735/4782/4735 4636/4682/4636 4736/4783/4736 +f 4636/4682/4636 4637/4683/4637 4736/4783/4736 +f 4736/4783/4736 4637/4683/4637 4737/4784/4737 +f 4637/4683/4637 4638/4684/4638 4737/4784/4737 +f 4737/4784/4737 4638/4684/4638 4738/4785/4738 +f 4638/4684/4638 4639/4685/4639 4738/4785/4738 +f 4738/4785/4738 4639/4685/4639 4739/4786/4739 +f 4639/4685/4639 4640/4686/4640 4739/4786/4739 +f 4739/4786/4739 4640/4686/4640 4740/4787/4740 +f 4640/4686/4640 4641/4687/4641 4740/4787/4740 +f 4740/4787/4740 4641/4687/4641 4741/4788/4741 +f 4641/4687/4641 4642/4688/4642 4741/4788/4741 +f 4741/4788/4741 4642/4688/4642 4742/4789/4742 +f 4642/4688/4642 4643/4689/4643 4742/4789/4742 +f 4742/4789/4742 4643/4689/4643 4743/4790/4743 +f 4643/4689/4643 4644/4690/4644 4743/4790/4743 +f 4743/4790/4743 4644/4690/4644 4744/4791/4744 +f 4644/4690/4644 4645/4691/4645 4744/4791/4744 +f 4744/4791/4744 4645/4691/4645 4745/4792/4745 +f 4645/4691/4645 4646/4692/4646 4745/4792/4745 +f 4745/4792/4745 4646/4692/4646 4746/4793/4746 +f 4646/4692/4646 4647/4693/4647 4746/4793/4746 +f 4746/4793/4746 4647/4693/4647 4747/4794/4747 +f 4647/4693/4647 4648/4694/4648 4747/4794/4747 +f 4747/4794/4747 4648/4694/4648 4748/4795/4748 +f 4648/4694/4648 4649/4695/4649 4748/4795/4748 +f 4748/4795/4748 4649/4695/4649 4749/4796/4749 +f 4649/4695/4649 4650/4696/4650 4749/4796/4749 +f 4749/4796/4749 4650/4696/4650 4750/4797/4750 +f 4650/4696/4650 4651/4697/4651 4750/4797/4750 +f 4750/4797/4750 4651/4697/4651 4751/4798/4751 +f 4651/4697/4651 4652/4698/4652 4751/4798/4751 +f 4751/4798/4751 4652/4698/4652 4752/4799/4752 +f 4652/4698/4652 4653/4699/4653 4752/4799/4752 +f 4752/4799/4752 4653/4699/4653 4753/4800/4753 +f 4653/4699/4653 4654/4700/4654 4753/4800/4753 +f 4753/4800/4753 4654/4700/4654 4754/4801/4754 +f 4654/4700/4654 4655/4701/4655 4754/4801/4754 +f 4754/4801/4754 4655/4701/4655 4755/4802/4755 +f 4655/4701/4655 4656/4702/4656 4755/4802/4755 +f 4755/4802/4755 4656/4702/4656 4756/4803/4756 +f 4656/4702/4656 4657/4703/4657 4756/4803/4756 +f 4756/4803/4756 4657/4703/4657 4757/4804/4757 +f 4657/4703/4657 4658/4704/4658 4757/4804/4757 +f 4757/4804/4757 4658/4704/4658 4758/4805/4758 +f 4658/4704/4658 4659/4705/4659 4758/4805/4758 +f 4758/4805/4758 4659/4705/4659 4759/4806/4759 +f 4659/4705/4659 4660/4706/4660 4759/4806/4759 +f 4759/4806/4759 4660/4706/4660 4760/4807/4760 +f 4660/4706/4660 4661/4707/4661 4760/4807/4760 +f 4760/4807/4760 4661/4707/4661 4761/4808/4761 +f 4661/4707/4661 4662/4708/4662 4761/4808/4761 +f 4761/4808/4761 4662/4708/4662 4762/4809/4762 +f 4662/4708/4662 4663/4709/4663 4762/4809/4762 +f 4762/4809/4762 4663/4709/4663 4763/4810/4763 +f 4663/4709/4663 4664/4710/4664 4763/4810/4763 +f 4763/4810/4763 4664/4710/4664 4764/4811/4764 +f 4664/4710/4664 4665/4711/4665 4764/4811/4764 +f 4764/4811/4764 4665/4711/4665 4765/4812/4765 +f 4665/4711/4665 4666/4712/4666 4765/4812/4765 +f 4765/4812/4765 4666/4712/4666 4766/4813/4766 +f 4666/4712/4666 4667/4713/4667 4766/4813/4766 +f 4766/4813/4766 4667/4713/4667 4767/4814/4767 +f 4667/4713/4667 4668/4714/4668 4767/4814/4767 +f 4767/4814/4767 4668/4714/4668 4768/4815/4768 +f 4668/4714/4668 4669/4715/4669 4768/4815/4768 +f 4768/4815/4768 4669/4715/4669 4769/4816/4769 +f 4669/4715/4669 4670/4716/4670 4769/4816/4769 +f 4769/4816/4769 4670/4716/4670 4770/4817/4770 +f 4670/4716/4670 4671/4717/4671 4770/4817/4770 +f 4770/4817/4770 4671/4717/4671 4771/4818/4771 +f 4671/4717/4671 4672/4718/4672 4771/4818/4771 +f 4771/4818/4771 4672/4718/4672 4772/4819/4772 +f 4672/4718/4672 4673/4719/4673 4772/4819/4772 +f 4772/4819/4772 4673/4719/4673 4773/4820/4773 +f 4673/4719/4673 4674/4720/4674 4773/4820/4773 +f 4773/4820/4773 4674/4720/4674 4774/4821/4774 +f 4674/4720/4674 4675/4721/4675 4774/4821/4774 +f 4774/4821/4774 4675/4721/4675 4775/4822/4775 +f 4675/4721/4675 4676/4722/4676 4775/4822/4775 +f 4775/4822/4775 4676/4722/4676 4776/4823/4776 +f 4676/4722/4676 4677/4723/4677 4776/4823/4776 +f 4776/4823/4776 4677/4723/4677 4777/4824/4777 +f 4677/4723/4677 4678/4724/4678 4777/4824/4777 +f 4777/4824/4777 4678/4724/4678 4778/4825/4778 +f 4678/4724/4678 4679/4725/4679 4778/4825/4778 +f 4778/4825/4778 4679/4725/4679 4779/4826/4779 +f 4679/4725/4679 4680/4726/4680 4779/4826/4779 +f 4779/4826/4779 4680/4726/4680 4780/4827/4780 +f 4680/4726/4680 4681/4727/4681 4780/4827/4780 +f 4780/4827/4780 4681/4727/4681 4781/4828/4781 +f 4681/4727/4681 4682/4728/4682 4781/4828/4781 +f 4781/4828/4781 4682/4728/4682 4782/4829/4782 +f 4682/4728/4682 4683/4729/4683 4782/4829/4782 +f 4782/4829/4782 4683/4729/4683 4783/4830/4783 +f 4683/4729/4683 4684/4730/4684 4783/4830/4783 +f 4783/4830/4783 4684/4730/4684 4784/4831/4784 +f 4684/4730/4684 4685/4731/4685 4784/4831/4784 +f 4784/4831/4784 4685/4731/4685 4785/4832/4785 +f 4685/4731/4685 4686/4732/4686 4785/4832/4785 +f 4785/4832/4785 4686/4732/4686 4786/4833/4786 +f 4686/4732/4686 4687/4733/4687 4786/4833/4786 +f 4786/4833/4786 4687/4733/4687 4787/4834/4787 +f 4687/4733/4687 4688/4734/4688 4787/4834/4787 +f 4787/4834/4787 4688/4734/4688 4788/4835/4788 +f 4688/4734/4688 4689/4735/4689 4788/4835/4788 +f 4788/4835/4788 4689/4735/4689 4789/4836/4789 +f 4689/4735/4689 4690/4736/4690 4789/4836/4789 +f 4789/4836/4789 4690/4736/4690 4790/4837/4790 +f 4690/4736/4690 4691/4737/4691 4790/4837/4790 +f 4790/4837/4790 4691/4737/4691 4791/4838/4791 +f 4691/4737/4691 4692/4738/4692 4791/4838/4791 +f 4791/4838/4791 4692/4738/4692 4792/4839/4792 +f 4692/4738/4692 4693/4739/4693 4792/4839/4792 +f 4792/4839/4792 4693/4739/4693 4793/4840/4793 +f 4693/4739/4693 4694/4740/4694 4793/4840/4793 +f 4793/4840/4793 4694/4740/4694 4794/4841/4794 +f 4694/4740/4694 4695/4741/4695 4794/4841/4794 +f 4794/4841/4794 4695/4741/4695 4795/4842/4795 +f 4695/4741/4695 4696/4742/4696 4795/4842/4795 +f 4795/4842/4795 4696/4742/4696 4796/4843/4796 +f 4696/4742/4696 4697/4743/4697 4796/4843/4796 +f 4796/4843/4796 4697/4743/4697 4797/4844/4797 +f 4697/4743/4697 4698/4744/4698 4797/4844/4797 +f 4797/4844/4797 4698/4744/4698 4798/4845/4798 +f 4698/4744/4698 4699/4745/4699 4798/4845/4798 +f 4798/4845/4798 4699/4745/4699 4799/4846/4799 +f 4699/4745/4699 4700/4746/4700 4799/4846/4799 +f 4799/4846/4799 4700/4746/4700 4800/4847/4800 +f 4700/4746/4700 4601/4747/4601 4800/4847/4800 +f 4800/4847/4800 4601/4747/4601 4701/4848/4701 +f 4701/4748/4701 4702/4749/4702 4801/4849/4801 +f 4801/4849/4801 4702/4749/4702 4802/4850/4802 +f 4702/4749/4702 4703/4750/4703 4802/4850/4802 +f 4802/4850/4802 4703/4750/4703 4803/4851/4803 +f 4703/4750/4703 4704/4751/4704 4803/4851/4803 +f 4803/4851/4803 4704/4751/4704 4804/4852/4804 +f 4704/4751/4704 4705/4752/4705 4804/4852/4804 +f 4804/4852/4804 4705/4752/4705 4805/4853/4805 +f 4705/4752/4705 4706/4753/4706 4805/4853/4805 +f 4805/4853/4805 4706/4753/4706 4806/4854/4806 +f 4706/4753/4706 4707/4754/4707 4806/4854/4806 +f 4806/4854/4806 4707/4754/4707 4807/4855/4807 +f 4707/4754/4707 4708/4755/4708 4807/4855/4807 +f 4807/4855/4807 4708/4755/4708 4808/4856/4808 +f 4708/4755/4708 4709/4756/4709 4808/4856/4808 +f 4808/4856/4808 4709/4756/4709 4809/4857/4809 +f 4709/4756/4709 4710/4757/4710 4809/4857/4809 +f 4809/4857/4809 4710/4757/4710 4810/4858/4810 +f 4710/4757/4710 4711/4758/4711 4810/4858/4810 +f 4810/4858/4810 4711/4758/4711 4811/4859/4811 +f 4711/4758/4711 4712/4759/4712 4811/4859/4811 +f 4811/4859/4811 4712/4759/4712 4812/4860/4812 +f 4712/4759/4712 4713/4760/4713 4812/4860/4812 +f 4812/4860/4812 4713/4760/4713 4813/4861/4813 +f 4713/4760/4713 4714/4761/4714 4813/4861/4813 +f 4813/4861/4813 4714/4761/4714 4814/4862/4814 +f 4714/4761/4714 4715/4762/4715 4814/4862/4814 +f 4814/4862/4814 4715/4762/4715 4815/4863/4815 +f 4715/4762/4715 4716/4763/4716 4815/4863/4815 +f 4815/4863/4815 4716/4763/4716 4816/4864/4816 +f 4716/4763/4716 4717/4764/4717 4816/4864/4816 +f 4816/4864/4816 4717/4764/4717 4817/4865/4817 +f 4717/4764/4717 4718/4765/4718 4817/4865/4817 +f 4817/4865/4817 4718/4765/4718 4818/4866/4818 +f 4718/4765/4718 4719/4766/4719 4818/4866/4818 +f 4818/4866/4818 4719/4766/4719 4819/4867/4819 +f 4719/4766/4719 4720/4767/4720 4819/4867/4819 +f 4819/4867/4819 4720/4767/4720 4820/4868/4820 +f 4720/4767/4720 4721/4768/4721 4820/4868/4820 +f 4820/4868/4820 4721/4768/4721 4821/4869/4821 +f 4721/4768/4721 4722/4769/4722 4821/4869/4821 +f 4821/4869/4821 4722/4769/4722 4822/4870/4822 +f 4722/4769/4722 4723/4770/4723 4822/4870/4822 +f 4822/4870/4822 4723/4770/4723 4823/4871/4823 +f 4723/4770/4723 4724/4771/4724 4823/4871/4823 +f 4823/4871/4823 4724/4771/4724 4824/4872/4824 +f 4724/4771/4724 4725/4772/4725 4824/4872/4824 +f 4824/4872/4824 4725/4772/4725 4825/4873/4825 +f 4725/4772/4725 4726/4773/4726 4825/4873/4825 +f 4825/4873/4825 4726/4773/4726 4826/4874/4826 +f 4726/4773/4726 4727/4774/4727 4826/4874/4826 +f 4826/4874/4826 4727/4774/4727 4827/4875/4827 +f 4727/4774/4727 4728/4775/4728 4827/4875/4827 +f 4827/4875/4827 4728/4775/4728 4828/4876/4828 +f 4728/4775/4728 4729/4776/4729 4828/4876/4828 +f 4828/4876/4828 4729/4776/4729 4829/4877/4829 +f 4729/4776/4729 4730/4777/4730 4829/4877/4829 +f 4829/4877/4829 4730/4777/4730 4830/4878/4830 +f 4730/4777/4730 4731/4778/4731 4830/4878/4830 +f 4830/4878/4830 4731/4778/4731 4831/4879/4831 +f 4731/4778/4731 4732/4779/4732 4831/4879/4831 +f 4831/4879/4831 4732/4779/4732 4832/4880/4832 +f 4732/4779/4732 4733/4780/4733 4832/4880/4832 +f 4832/4880/4832 4733/4780/4733 4833/4881/4833 +f 4733/4780/4733 4734/4781/4734 4833/4881/4833 +f 4833/4881/4833 4734/4781/4734 4834/4882/4834 +f 4734/4781/4734 4735/4782/4735 4834/4882/4834 +f 4834/4882/4834 4735/4782/4735 4835/4883/4835 +f 4735/4782/4735 4736/4783/4736 4835/4883/4835 +f 4835/4883/4835 4736/4783/4736 4836/4884/4836 +f 4736/4783/4736 4737/4784/4737 4836/4884/4836 +f 4836/4884/4836 4737/4784/4737 4837/4885/4837 +f 4737/4784/4737 4738/4785/4738 4837/4885/4837 +f 4837/4885/4837 4738/4785/4738 4838/4886/4838 +f 4738/4785/4738 4739/4786/4739 4838/4886/4838 +f 4838/4886/4838 4739/4786/4739 4839/4887/4839 +f 4739/4786/4739 4740/4787/4740 4839/4887/4839 +f 4839/4887/4839 4740/4787/4740 4840/4888/4840 +f 4740/4787/4740 4741/4788/4741 4840/4888/4840 +f 4840/4888/4840 4741/4788/4741 4841/4889/4841 +f 4741/4788/4741 4742/4789/4742 4841/4889/4841 +f 4841/4889/4841 4742/4789/4742 4842/4890/4842 +f 4742/4789/4742 4743/4790/4743 4842/4890/4842 +f 4842/4890/4842 4743/4790/4743 4843/4891/4843 +f 4743/4790/4743 4744/4791/4744 4843/4891/4843 +f 4843/4891/4843 4744/4791/4744 4844/4892/4844 +f 4744/4791/4744 4745/4792/4745 4844/4892/4844 +f 4844/4892/4844 4745/4792/4745 4845/4893/4845 +f 4745/4792/4745 4746/4793/4746 4845/4893/4845 +f 4845/4893/4845 4746/4793/4746 4846/4894/4846 +f 4746/4793/4746 4747/4794/4747 4846/4894/4846 +f 4846/4894/4846 4747/4794/4747 4847/4895/4847 +f 4747/4794/4747 4748/4795/4748 4847/4895/4847 +f 4847/4895/4847 4748/4795/4748 4848/4896/4848 +f 4748/4795/4748 4749/4796/4749 4848/4896/4848 +f 4848/4896/4848 4749/4796/4749 4849/4897/4849 +f 4749/4796/4749 4750/4797/4750 4849/4897/4849 +f 4849/4897/4849 4750/4797/4750 4850/4898/4850 +f 4750/4797/4750 4751/4798/4751 4850/4898/4850 +f 4850/4898/4850 4751/4798/4751 4851/4899/4851 +f 4751/4798/4751 4752/4799/4752 4851/4899/4851 +f 4851/4899/4851 4752/4799/4752 4852/4900/4852 +f 4752/4799/4752 4753/4800/4753 4852/4900/4852 +f 4852/4900/4852 4753/4800/4753 4853/4901/4853 +f 4753/4800/4753 4754/4801/4754 4853/4901/4853 +f 4853/4901/4853 4754/4801/4754 4854/4902/4854 +f 4754/4801/4754 4755/4802/4755 4854/4902/4854 +f 4854/4902/4854 4755/4802/4755 4855/4903/4855 +f 4755/4802/4755 4756/4803/4756 4855/4903/4855 +f 4855/4903/4855 4756/4803/4756 4856/4904/4856 +f 4756/4803/4756 4757/4804/4757 4856/4904/4856 +f 4856/4904/4856 4757/4804/4757 4857/4905/4857 +f 4757/4804/4757 4758/4805/4758 4857/4905/4857 +f 4857/4905/4857 4758/4805/4758 4858/4906/4858 +f 4758/4805/4758 4759/4806/4759 4858/4906/4858 +f 4858/4906/4858 4759/4806/4759 4859/4907/4859 +f 4759/4806/4759 4760/4807/4760 4859/4907/4859 +f 4859/4907/4859 4760/4807/4760 4860/4908/4860 +f 4760/4807/4760 4761/4808/4761 4860/4908/4860 +f 4860/4908/4860 4761/4808/4761 4861/4909/4861 +f 4761/4808/4761 4762/4809/4762 4861/4909/4861 +f 4861/4909/4861 4762/4809/4762 4862/4910/4862 +f 4762/4809/4762 4763/4810/4763 4862/4910/4862 +f 4862/4910/4862 4763/4810/4763 4863/4911/4863 +f 4763/4810/4763 4764/4811/4764 4863/4911/4863 +f 4863/4911/4863 4764/4811/4764 4864/4912/4864 +f 4764/4811/4764 4765/4812/4765 4864/4912/4864 +f 4864/4912/4864 4765/4812/4765 4865/4913/4865 +f 4765/4812/4765 4766/4813/4766 4865/4913/4865 +f 4865/4913/4865 4766/4813/4766 4866/4914/4866 +f 4766/4813/4766 4767/4814/4767 4866/4914/4866 +f 4866/4914/4866 4767/4814/4767 4867/4915/4867 +f 4767/4814/4767 4768/4815/4768 4867/4915/4867 +f 4867/4915/4867 4768/4815/4768 4868/4916/4868 +f 4768/4815/4768 4769/4816/4769 4868/4916/4868 +f 4868/4916/4868 4769/4816/4769 4869/4917/4869 +f 4769/4816/4769 4770/4817/4770 4869/4917/4869 +f 4869/4917/4869 4770/4817/4770 4870/4918/4870 +f 4770/4817/4770 4771/4818/4771 4870/4918/4870 +f 4870/4918/4870 4771/4818/4771 4871/4919/4871 +f 4771/4818/4771 4772/4819/4772 4871/4919/4871 +f 4871/4919/4871 4772/4819/4772 4872/4920/4872 +f 4772/4819/4772 4773/4820/4773 4872/4920/4872 +f 4872/4920/4872 4773/4820/4773 4873/4921/4873 +f 4773/4820/4773 4774/4821/4774 4873/4921/4873 +f 4873/4921/4873 4774/4821/4774 4874/4922/4874 +f 4774/4821/4774 4775/4822/4775 4874/4922/4874 +f 4874/4922/4874 4775/4822/4775 4875/4923/4875 +f 4775/4822/4775 4776/4823/4776 4875/4923/4875 +f 4875/4923/4875 4776/4823/4776 4876/4924/4876 +f 4776/4823/4776 4777/4824/4777 4876/4924/4876 +f 4876/4924/4876 4777/4824/4777 4877/4925/4877 +f 4777/4824/4777 4778/4825/4778 4877/4925/4877 +f 4877/4925/4877 4778/4825/4778 4878/4926/4878 +f 4778/4825/4778 4779/4826/4779 4878/4926/4878 +f 4878/4926/4878 4779/4826/4779 4879/4927/4879 +f 4779/4826/4779 4780/4827/4780 4879/4927/4879 +f 4879/4927/4879 4780/4827/4780 4880/4928/4880 +f 4780/4827/4780 4781/4828/4781 4880/4928/4880 +f 4880/4928/4880 4781/4828/4781 4881/4929/4881 +f 4781/4828/4781 4782/4829/4782 4881/4929/4881 +f 4881/4929/4881 4782/4829/4782 4882/4930/4882 +f 4782/4829/4782 4783/4830/4783 4882/4930/4882 +f 4882/4930/4882 4783/4830/4783 4883/4931/4883 +f 4783/4830/4783 4784/4831/4784 4883/4931/4883 +f 4883/4931/4883 4784/4831/4784 4884/4932/4884 +f 4784/4831/4784 4785/4832/4785 4884/4932/4884 +f 4884/4932/4884 4785/4832/4785 4885/4933/4885 +f 4785/4832/4785 4786/4833/4786 4885/4933/4885 +f 4885/4933/4885 4786/4833/4786 4886/4934/4886 +f 4786/4833/4786 4787/4834/4787 4886/4934/4886 +f 4886/4934/4886 4787/4834/4787 4887/4935/4887 +f 4787/4834/4787 4788/4835/4788 4887/4935/4887 +f 4887/4935/4887 4788/4835/4788 4888/4936/4888 +f 4788/4835/4788 4789/4836/4789 4888/4936/4888 +f 4888/4936/4888 4789/4836/4789 4889/4937/4889 +f 4789/4836/4789 4790/4837/4790 4889/4937/4889 +f 4889/4937/4889 4790/4837/4790 4890/4938/4890 +f 4790/4837/4790 4791/4838/4791 4890/4938/4890 +f 4890/4938/4890 4791/4838/4791 4891/4939/4891 +f 4791/4838/4791 4792/4839/4792 4891/4939/4891 +f 4891/4939/4891 4792/4839/4792 4892/4940/4892 +f 4792/4839/4792 4793/4840/4793 4892/4940/4892 +f 4892/4940/4892 4793/4840/4793 4893/4941/4893 +f 4793/4840/4793 4794/4841/4794 4893/4941/4893 +f 4893/4941/4893 4794/4841/4794 4894/4942/4894 +f 4794/4841/4794 4795/4842/4795 4894/4942/4894 +f 4894/4942/4894 4795/4842/4795 4895/4943/4895 +f 4795/4842/4795 4796/4843/4796 4895/4943/4895 +f 4895/4943/4895 4796/4843/4796 4896/4944/4896 +f 4796/4843/4796 4797/4844/4797 4896/4944/4896 +f 4896/4944/4896 4797/4844/4797 4897/4945/4897 +f 4797/4844/4797 4798/4845/4798 4897/4945/4897 +f 4897/4945/4897 4798/4845/4798 4898/4946/4898 +f 4798/4845/4798 4799/4846/4799 4898/4946/4898 +f 4898/4946/4898 4799/4846/4799 4899/4947/4899 +f 4799/4846/4799 4800/4847/4800 4899/4947/4899 +f 4899/4947/4899 4800/4847/4800 4900/4948/4900 +f 4800/4847/4800 4701/4848/4701 4900/4948/4900 +f 4900/4948/4900 4701/4848/4701 4801/4949/4801 +f 4801/4849/4801 4802/4850/4802 4901/4950/4901 +f 4901/4950/4901 4802/4850/4802 4902/4951/4902 +f 4802/4850/4802 4803/4851/4803 4902/4951/4902 +f 4902/4951/4902 4803/4851/4803 4903/4952/4903 +f 4803/4851/4803 4804/4852/4804 4903/4952/4903 +f 4903/4952/4903 4804/4852/4804 4904/4953/4904 +f 4804/4852/4804 4805/4853/4805 4904/4953/4904 +f 4904/4953/4904 4805/4853/4805 4905/4954/4905 +f 4805/4853/4805 4806/4854/4806 4905/4954/4905 +f 4905/4954/4905 4806/4854/4806 4906/4955/4906 +f 4806/4854/4806 4807/4855/4807 4906/4955/4906 +f 4906/4955/4906 4807/4855/4807 4907/4956/4907 +f 4807/4855/4807 4808/4856/4808 4907/4956/4907 +f 4907/4956/4907 4808/4856/4808 4908/4957/4908 +f 4808/4856/4808 4809/4857/4809 4908/4957/4908 +f 4908/4957/4908 4809/4857/4809 4909/4958/4909 +f 4809/4857/4809 4810/4858/4810 4909/4958/4909 +f 4909/4958/4909 4810/4858/4810 4910/4959/4910 +f 4810/4858/4810 4811/4859/4811 4910/4959/4910 +f 4910/4959/4910 4811/4859/4811 4911/4960/4911 +f 4811/4859/4811 4812/4860/4812 4911/4960/4911 +f 4911/4960/4911 4812/4860/4812 4912/4961/4912 +f 4812/4860/4812 4813/4861/4813 4912/4961/4912 +f 4912/4961/4912 4813/4861/4813 4913/4962/4913 +f 4813/4861/4813 4814/4862/4814 4913/4962/4913 +f 4913/4962/4913 4814/4862/4814 4914/4963/4914 +f 4814/4862/4814 4815/4863/4815 4914/4963/4914 +f 4914/4963/4914 4815/4863/4815 4915/4964/4915 +f 4815/4863/4815 4816/4864/4816 4915/4964/4915 +f 4915/4964/4915 4816/4864/4816 4916/4965/4916 +f 4816/4864/4816 4817/4865/4817 4916/4965/4916 +f 4916/4965/4916 4817/4865/4817 4917/4966/4917 +f 4817/4865/4817 4818/4866/4818 4917/4966/4917 +f 4917/4966/4917 4818/4866/4818 4918/4967/4918 +f 4818/4866/4818 4819/4867/4819 4918/4967/4918 +f 4918/4967/4918 4819/4867/4819 4919/4968/4919 +f 4819/4867/4819 4820/4868/4820 4919/4968/4919 +f 4919/4968/4919 4820/4868/4820 4920/4969/4920 +f 4820/4868/4820 4821/4869/4821 4920/4969/4920 +f 4920/4969/4920 4821/4869/4821 4921/4970/4921 +f 4821/4869/4821 4822/4870/4822 4921/4970/4921 +f 4921/4970/4921 4822/4870/4822 4922/4971/4922 +f 4822/4870/4822 4823/4871/4823 4922/4971/4922 +f 4922/4971/4922 4823/4871/4823 4923/4972/4923 +f 4823/4871/4823 4824/4872/4824 4923/4972/4923 +f 4923/4972/4923 4824/4872/4824 4924/4973/4924 +f 4824/4872/4824 4825/4873/4825 4924/4973/4924 +f 4924/4973/4924 4825/4873/4825 4925/4974/4925 +f 4825/4873/4825 4826/4874/4826 4925/4974/4925 +f 4925/4974/4925 4826/4874/4826 4926/4975/4926 +f 4826/4874/4826 4827/4875/4827 4926/4975/4926 +f 4926/4975/4926 4827/4875/4827 4927/4976/4927 +f 4827/4875/4827 4828/4876/4828 4927/4976/4927 +f 4927/4976/4927 4828/4876/4828 4928/4977/4928 +f 4828/4876/4828 4829/4877/4829 4928/4977/4928 +f 4928/4977/4928 4829/4877/4829 4929/4978/4929 +f 4829/4877/4829 4830/4878/4830 4929/4978/4929 +f 4929/4978/4929 4830/4878/4830 4930/4979/4930 +f 4830/4878/4830 4831/4879/4831 4930/4979/4930 +f 4930/4979/4930 4831/4879/4831 4931/4980/4931 +f 4831/4879/4831 4832/4880/4832 4931/4980/4931 +f 4931/4980/4931 4832/4880/4832 4932/4981/4932 +f 4832/4880/4832 4833/4881/4833 4932/4981/4932 +f 4932/4981/4932 4833/4881/4833 4933/4982/4933 +f 4833/4881/4833 4834/4882/4834 4933/4982/4933 +f 4933/4982/4933 4834/4882/4834 4934/4983/4934 +f 4834/4882/4834 4835/4883/4835 4934/4983/4934 +f 4934/4983/4934 4835/4883/4835 4935/4984/4935 +f 4835/4883/4835 4836/4884/4836 4935/4984/4935 +f 4935/4984/4935 4836/4884/4836 4936/4985/4936 +f 4836/4884/4836 4837/4885/4837 4936/4985/4936 +f 4936/4985/4936 4837/4885/4837 4937/4986/4937 +f 4837/4885/4837 4838/4886/4838 4937/4986/4937 +f 4937/4986/4937 4838/4886/4838 4938/4987/4938 +f 4838/4886/4838 4839/4887/4839 4938/4987/4938 +f 4938/4987/4938 4839/4887/4839 4939/4988/4939 +f 4839/4887/4839 4840/4888/4840 4939/4988/4939 +f 4939/4988/4939 4840/4888/4840 4940/4989/4940 +f 4840/4888/4840 4841/4889/4841 4940/4989/4940 +f 4940/4989/4940 4841/4889/4841 4941/4990/4941 +f 4841/4889/4841 4842/4890/4842 4941/4990/4941 +f 4941/4990/4941 4842/4890/4842 4942/4991/4942 +f 4842/4890/4842 4843/4891/4843 4942/4991/4942 +f 4942/4991/4942 4843/4891/4843 4943/4992/4943 +f 4843/4891/4843 4844/4892/4844 4943/4992/4943 +f 4943/4992/4943 4844/4892/4844 4944/4993/4944 +f 4844/4892/4844 4845/4893/4845 4944/4993/4944 +f 4944/4993/4944 4845/4893/4845 4945/4994/4945 +f 4845/4893/4845 4846/4894/4846 4945/4994/4945 +f 4945/4994/4945 4846/4894/4846 4946/4995/4946 +f 4846/4894/4846 4847/4895/4847 4946/4995/4946 +f 4946/4995/4946 4847/4895/4847 4947/4996/4947 +f 4847/4895/4847 4848/4896/4848 4947/4996/4947 +f 4947/4996/4947 4848/4896/4848 4948/4997/4948 +f 4848/4896/4848 4849/4897/4849 4948/4997/4948 +f 4948/4997/4948 4849/4897/4849 4949/4998/4949 +f 4849/4897/4849 4850/4898/4850 4949/4998/4949 +f 4949/4998/4949 4850/4898/4850 4950/4999/4950 +f 4850/4898/4850 4851/4899/4851 4950/4999/4950 +f 4950/4999/4950 4851/4899/4851 4951/5000/4951 +f 4851/4899/4851 4852/4900/4852 4951/5000/4951 +f 4951/5000/4951 4852/4900/4852 4952/5001/4952 +f 4852/4900/4852 4853/4901/4853 4952/5001/4952 +f 4952/5001/4952 4853/4901/4853 4953/5002/4953 +f 4853/4901/4853 4854/4902/4854 4953/5002/4953 +f 4953/5002/4953 4854/4902/4854 4954/5003/4954 +f 4854/4902/4854 4855/4903/4855 4954/5003/4954 +f 4954/5003/4954 4855/4903/4855 4955/5004/4955 +f 4855/4903/4855 4856/4904/4856 4955/5004/4955 +f 4955/5004/4955 4856/4904/4856 4956/5005/4956 +f 4856/4904/4856 4857/4905/4857 4956/5005/4956 +f 4956/5005/4956 4857/4905/4857 4957/5006/4957 +f 4857/4905/4857 4858/4906/4858 4957/5006/4957 +f 4957/5006/4957 4858/4906/4858 4958/5007/4958 +f 4858/4906/4858 4859/4907/4859 4958/5007/4958 +f 4958/5007/4958 4859/4907/4859 4959/5008/4959 +f 4859/4907/4859 4860/4908/4860 4959/5008/4959 +f 4959/5008/4959 4860/4908/4860 4960/5009/4960 +f 4860/4908/4860 4861/4909/4861 4960/5009/4960 +f 4960/5009/4960 4861/4909/4861 4961/5010/4961 +f 4861/4909/4861 4862/4910/4862 4961/5010/4961 +f 4961/5010/4961 4862/4910/4862 4962/5011/4962 +f 4862/4910/4862 4863/4911/4863 4962/5011/4962 +f 4962/5011/4962 4863/4911/4863 4963/5012/4963 +f 4863/4911/4863 4864/4912/4864 4963/5012/4963 +f 4963/5012/4963 4864/4912/4864 4964/5013/4964 +f 4864/4912/4864 4865/4913/4865 4964/5013/4964 +f 4964/5013/4964 4865/4913/4865 4965/5014/4965 +f 4865/4913/4865 4866/4914/4866 4965/5014/4965 +f 4965/5014/4965 4866/4914/4866 4966/5015/4966 +f 4866/4914/4866 4867/4915/4867 4966/5015/4966 +f 4966/5015/4966 4867/4915/4867 4967/5016/4967 +f 4867/4915/4867 4868/4916/4868 4967/5016/4967 +f 4967/5016/4967 4868/4916/4868 4968/5017/4968 +f 4868/4916/4868 4869/4917/4869 4968/5017/4968 +f 4968/5017/4968 4869/4917/4869 4969/5018/4969 +f 4869/4917/4869 4870/4918/4870 4969/5018/4969 +f 4969/5018/4969 4870/4918/4870 4970/5019/4970 +f 4870/4918/4870 4871/4919/4871 4970/5019/4970 +f 4970/5019/4970 4871/4919/4871 4971/5020/4971 +f 4871/4919/4871 4872/4920/4872 4971/5020/4971 +f 4971/5020/4971 4872/4920/4872 4972/5021/4972 +f 4872/4920/4872 4873/4921/4873 4972/5021/4972 +f 4972/5021/4972 4873/4921/4873 4973/5022/4973 +f 4873/4921/4873 4874/4922/4874 4973/5022/4973 +f 4973/5022/4973 4874/4922/4874 4974/5023/4974 +f 4874/4922/4874 4875/4923/4875 4974/5023/4974 +f 4974/5023/4974 4875/4923/4875 4975/5024/4975 +f 4875/4923/4875 4876/4924/4876 4975/5024/4975 +f 4975/5024/4975 4876/4924/4876 4976/5025/4976 +f 4876/4924/4876 4877/4925/4877 4976/5025/4976 +f 4976/5025/4976 4877/4925/4877 4977/5026/4977 +f 4877/4925/4877 4878/4926/4878 4977/5026/4977 +f 4977/5026/4977 4878/4926/4878 4978/5027/4978 +f 4878/4926/4878 4879/4927/4879 4978/5027/4978 +f 4978/5027/4978 4879/4927/4879 4979/5028/4979 +f 4879/4927/4879 4880/4928/4880 4979/5028/4979 +f 4979/5028/4979 4880/4928/4880 4980/5029/4980 +f 4880/4928/4880 4881/4929/4881 4980/5029/4980 +f 4980/5029/4980 4881/4929/4881 4981/5030/4981 +f 4881/4929/4881 4882/4930/4882 4981/5030/4981 +f 4981/5030/4981 4882/4930/4882 4982/5031/4982 +f 4882/4930/4882 4883/4931/4883 4982/5031/4982 +f 4982/5031/4982 4883/4931/4883 4983/5032/4983 +f 4883/4931/4883 4884/4932/4884 4983/5032/4983 +f 4983/5032/4983 4884/4932/4884 4984/5033/4984 +f 4884/4932/4884 4885/4933/4885 4984/5033/4984 +f 4984/5033/4984 4885/4933/4885 4985/5034/4985 +f 4885/4933/4885 4886/4934/4886 4985/5034/4985 +f 4985/5034/4985 4886/4934/4886 4986/5035/4986 +f 4886/4934/4886 4887/4935/4887 4986/5035/4986 +f 4986/5035/4986 4887/4935/4887 4987/5036/4987 +f 4887/4935/4887 4888/4936/4888 4987/5036/4987 +f 4987/5036/4987 4888/4936/4888 4988/5037/4988 +f 4888/4936/4888 4889/4937/4889 4988/5037/4988 +f 4988/5037/4988 4889/4937/4889 4989/5038/4989 +f 4889/4937/4889 4890/4938/4890 4989/5038/4989 +f 4989/5038/4989 4890/4938/4890 4990/5039/4990 +f 4890/4938/4890 4891/4939/4891 4990/5039/4990 +f 4990/5039/4990 4891/4939/4891 4991/5040/4991 +f 4891/4939/4891 4892/4940/4892 4991/5040/4991 +f 4991/5040/4991 4892/4940/4892 4992/5041/4992 +f 4892/4940/4892 4893/4941/4893 4992/5041/4992 +f 4992/5041/4992 4893/4941/4893 4993/5042/4993 +f 4893/4941/4893 4894/4942/4894 4993/5042/4993 +f 4993/5042/4993 4894/4942/4894 4994/5043/4994 +f 4894/4942/4894 4895/4943/4895 4994/5043/4994 +f 4994/5043/4994 4895/4943/4895 4995/5044/4995 +f 4895/4943/4895 4896/4944/4896 4995/5044/4995 +f 4995/5044/4995 4896/4944/4896 4996/5045/4996 +f 4896/4944/4896 4897/4945/4897 4996/5045/4996 +f 4996/5045/4996 4897/4945/4897 4997/5046/4997 +f 4897/4945/4897 4898/4946/4898 4997/5046/4997 +f 4997/5046/4997 4898/4946/4898 4998/5047/4998 +f 4898/4946/4898 4899/4947/4899 4998/5047/4998 +f 4998/5047/4998 4899/4947/4899 4999/5048/4999 +f 4899/4947/4899 4900/4948/4900 4999/5048/4999 +f 4999/5048/4999 4900/4948/4900 5000/5049/5000 +f 4900/4948/4900 4801/4949/4801 5000/5049/5000 +f 5000/5049/5000 4801/4949/4801 4901/5050/4901 +f 4901/4950/4901 4902/4951/4902 5001/5051/5001 +f 5001/5051/5001 4902/4951/4902 5002/5052/5002 +f 4902/4951/4902 4903/4952/4903 5002/5052/5002 +f 5002/5052/5002 4903/4952/4903 5003/5053/5003 +f 4903/4952/4903 4904/4953/4904 5003/5053/5003 +f 5003/5053/5003 4904/4953/4904 5004/5054/5004 +f 4904/4953/4904 4905/4954/4905 5004/5054/5004 +f 5004/5054/5004 4905/4954/4905 5005/5055/5005 +f 4905/4954/4905 4906/4955/4906 5005/5055/5005 +f 5005/5055/5005 4906/4955/4906 5006/5056/5006 +f 4906/4955/4906 4907/4956/4907 5006/5056/5006 +f 5006/5056/5006 4907/4956/4907 5007/5057/5007 +f 4907/4956/4907 4908/4957/4908 5007/5057/5007 +f 5007/5057/5007 4908/4957/4908 5008/5058/5008 +f 4908/4957/4908 4909/4958/4909 5008/5058/5008 +f 5008/5058/5008 4909/4958/4909 5009/5059/5009 +f 4909/4958/4909 4910/4959/4910 5009/5059/5009 +f 5009/5059/5009 4910/4959/4910 5010/5060/5010 +f 4910/4959/4910 4911/4960/4911 5010/5060/5010 +f 5010/5060/5010 4911/4960/4911 5011/5061/5011 +f 4911/4960/4911 4912/4961/4912 5011/5061/5011 +f 5011/5061/5011 4912/4961/4912 5012/5062/5012 +f 4912/4961/4912 4913/4962/4913 5012/5062/5012 +f 5012/5062/5012 4913/4962/4913 5013/5063/5013 +f 4913/4962/4913 4914/4963/4914 5013/5063/5013 +f 5013/5063/5013 4914/4963/4914 5014/5064/5014 +f 4914/4963/4914 4915/4964/4915 5014/5064/5014 +f 5014/5064/5014 4915/4964/4915 5015/5065/5015 +f 4915/4964/4915 4916/4965/4916 5015/5065/5015 +f 5015/5065/5015 4916/4965/4916 5016/5066/5016 +f 4916/4965/4916 4917/4966/4917 5016/5066/5016 +f 5016/5066/5016 4917/4966/4917 5017/5067/5017 +f 4917/4966/4917 4918/4967/4918 5017/5067/5017 +f 5017/5067/5017 4918/4967/4918 5018/5068/5018 +f 4918/4967/4918 4919/4968/4919 5018/5068/5018 +f 5018/5068/5018 4919/4968/4919 5019/5069/5019 +f 4919/4968/4919 4920/4969/4920 5019/5069/5019 +f 5019/5069/5019 4920/4969/4920 5020/5070/5020 +f 4920/4969/4920 4921/4970/4921 5020/5070/5020 +f 5020/5070/5020 4921/4970/4921 5021/5071/5021 +f 4921/4970/4921 4922/4971/4922 5021/5071/5021 +f 5021/5071/5021 4922/4971/4922 5022/5072/5022 +f 4922/4971/4922 4923/4972/4923 5022/5072/5022 +f 5022/5072/5022 4923/4972/4923 5023/5073/5023 +f 4923/4972/4923 4924/4973/4924 5023/5073/5023 +f 5023/5073/5023 4924/4973/4924 5024/5074/5024 +f 4924/4973/4924 4925/4974/4925 5024/5074/5024 +f 5024/5074/5024 4925/4974/4925 5025/5075/5025 +f 4925/4974/4925 4926/4975/4926 5025/5075/5025 +f 5025/5075/5025 4926/4975/4926 5026/5076/5026 +f 4926/4975/4926 4927/4976/4927 5026/5076/5026 +f 5026/5076/5026 4927/4976/4927 5027/5077/5027 +f 4927/4976/4927 4928/4977/4928 5027/5077/5027 +f 5027/5077/5027 4928/4977/4928 5028/5078/5028 +f 4928/4977/4928 4929/4978/4929 5028/5078/5028 +f 5028/5078/5028 4929/4978/4929 5029/5079/5029 +f 4929/4978/4929 4930/4979/4930 5029/5079/5029 +f 5029/5079/5029 4930/4979/4930 5030/5080/5030 +f 4930/4979/4930 4931/4980/4931 5030/5080/5030 +f 5030/5080/5030 4931/4980/4931 5031/5081/5031 +f 4931/4980/4931 4932/4981/4932 5031/5081/5031 +f 5031/5081/5031 4932/4981/4932 5032/5082/5032 +f 4932/4981/4932 4933/4982/4933 5032/5082/5032 +f 5032/5082/5032 4933/4982/4933 5033/5083/5033 +f 4933/4982/4933 4934/4983/4934 5033/5083/5033 +f 5033/5083/5033 4934/4983/4934 5034/5084/5034 +f 4934/4983/4934 4935/4984/4935 5034/5084/5034 +f 5034/5084/5034 4935/4984/4935 5035/5085/5035 +f 4935/4984/4935 4936/4985/4936 5035/5085/5035 +f 5035/5085/5035 4936/4985/4936 5036/5086/5036 +f 4936/4985/4936 4937/4986/4937 5036/5086/5036 +f 5036/5086/5036 4937/4986/4937 5037/5087/5037 +f 4937/4986/4937 4938/4987/4938 5037/5087/5037 +f 5037/5087/5037 4938/4987/4938 5038/5088/5038 +f 4938/4987/4938 4939/4988/4939 5038/5088/5038 +f 5038/5088/5038 4939/4988/4939 5039/5089/5039 +f 4939/4988/4939 4940/4989/4940 5039/5089/5039 +f 5039/5089/5039 4940/4989/4940 5040/5090/5040 +f 4940/4989/4940 4941/4990/4941 5040/5090/5040 +f 5040/5090/5040 4941/4990/4941 5041/5091/5041 +f 4941/4990/4941 4942/4991/4942 5041/5091/5041 +f 5041/5091/5041 4942/4991/4942 5042/5092/5042 +f 4942/4991/4942 4943/4992/4943 5042/5092/5042 +f 5042/5092/5042 4943/4992/4943 5043/5093/5043 +f 4943/4992/4943 4944/4993/4944 5043/5093/5043 +f 5043/5093/5043 4944/4993/4944 5044/5094/5044 +f 4944/4993/4944 4945/4994/4945 5044/5094/5044 +f 5044/5094/5044 4945/4994/4945 5045/5095/5045 +f 4945/4994/4945 4946/4995/4946 5045/5095/5045 +f 5045/5095/5045 4946/4995/4946 5046/5096/5046 +f 4946/4995/4946 4947/4996/4947 5046/5096/5046 +f 5046/5096/5046 4947/4996/4947 5047/5097/5047 +f 4947/4996/4947 4948/4997/4948 5047/5097/5047 +f 5047/5097/5047 4948/4997/4948 5048/5098/5048 +f 4948/4997/4948 4949/4998/4949 5048/5098/5048 +f 5048/5098/5048 4949/4998/4949 5049/5099/5049 +f 4949/4998/4949 4950/4999/4950 5049/5099/5049 +f 5049/5099/5049 4950/4999/4950 5050/5100/5050 +f 4950/4999/4950 4951/5000/4951 5050/5100/5050 +f 5050/5100/5050 4951/5000/4951 5051/5101/5051 +f 4951/5000/4951 4952/5001/4952 5051/5101/5051 +f 5051/5101/5051 4952/5001/4952 5052/5102/5052 +f 4952/5001/4952 4953/5002/4953 5052/5102/5052 +f 5052/5102/5052 4953/5002/4953 5053/5103/5053 +f 4953/5002/4953 4954/5003/4954 5053/5103/5053 +f 5053/5103/5053 4954/5003/4954 5054/5104/5054 +f 4954/5003/4954 4955/5004/4955 5054/5104/5054 +f 5054/5104/5054 4955/5004/4955 5055/5105/5055 +f 4955/5004/4955 4956/5005/4956 5055/5105/5055 +f 5055/5105/5055 4956/5005/4956 5056/5106/5056 +f 4956/5005/4956 4957/5006/4957 5056/5106/5056 +f 5056/5106/5056 4957/5006/4957 5057/5107/5057 +f 4957/5006/4957 4958/5007/4958 5057/5107/5057 +f 5057/5107/5057 4958/5007/4958 5058/5108/5058 +f 4958/5007/4958 4959/5008/4959 5058/5108/5058 +f 5058/5108/5058 4959/5008/4959 5059/5109/5059 +f 4959/5008/4959 4960/5009/4960 5059/5109/5059 +f 5059/5109/5059 4960/5009/4960 5060/5110/5060 +f 4960/5009/4960 4961/5010/4961 5060/5110/5060 +f 5060/5110/5060 4961/5010/4961 5061/5111/5061 +f 4961/5010/4961 4962/5011/4962 5061/5111/5061 +f 5061/5111/5061 4962/5011/4962 5062/5112/5062 +f 4962/5011/4962 4963/5012/4963 5062/5112/5062 +f 5062/5112/5062 4963/5012/4963 5063/5113/5063 +f 4963/5012/4963 4964/5013/4964 5063/5113/5063 +f 5063/5113/5063 4964/5013/4964 5064/5114/5064 +f 4964/5013/4964 4965/5014/4965 5064/5114/5064 +f 5064/5114/5064 4965/5014/4965 5065/5115/5065 +f 4965/5014/4965 4966/5015/4966 5065/5115/5065 +f 5065/5115/5065 4966/5015/4966 5066/5116/5066 +f 4966/5015/4966 4967/5016/4967 5066/5116/5066 +f 5066/5116/5066 4967/5016/4967 5067/5117/5067 +f 4967/5016/4967 4968/5017/4968 5067/5117/5067 +f 5067/5117/5067 4968/5017/4968 5068/5118/5068 +f 4968/5017/4968 4969/5018/4969 5068/5118/5068 +f 5068/5118/5068 4969/5018/4969 5069/5119/5069 +f 4969/5018/4969 4970/5019/4970 5069/5119/5069 +f 5069/5119/5069 4970/5019/4970 5070/5120/5070 +f 4970/5019/4970 4971/5020/4971 5070/5120/5070 +f 5070/5120/5070 4971/5020/4971 5071/5121/5071 +f 4971/5020/4971 4972/5021/4972 5071/5121/5071 +f 5071/5121/5071 4972/5021/4972 5072/5122/5072 +f 4972/5021/4972 4973/5022/4973 5072/5122/5072 +f 5072/5122/5072 4973/5022/4973 5073/5123/5073 +f 4973/5022/4973 4974/5023/4974 5073/5123/5073 +f 5073/5123/5073 4974/5023/4974 5074/5124/5074 +f 4974/5023/4974 4975/5024/4975 5074/5124/5074 +f 5074/5124/5074 4975/5024/4975 5075/5125/5075 +f 4975/5024/4975 4976/5025/4976 5075/5125/5075 +f 5075/5125/5075 4976/5025/4976 5076/5126/5076 +f 4976/5025/4976 4977/5026/4977 5076/5126/5076 +f 5076/5126/5076 4977/5026/4977 5077/5127/5077 +f 4977/5026/4977 4978/5027/4978 5077/5127/5077 +f 5077/5127/5077 4978/5027/4978 5078/5128/5078 +f 4978/5027/4978 4979/5028/4979 5078/5128/5078 +f 5078/5128/5078 4979/5028/4979 5079/5129/5079 +f 4979/5028/4979 4980/5029/4980 5079/5129/5079 +f 5079/5129/5079 4980/5029/4980 5080/5130/5080 +f 4980/5029/4980 4981/5030/4981 5080/5130/5080 +f 5080/5130/5080 4981/5030/4981 5081/5131/5081 +f 4981/5030/4981 4982/5031/4982 5081/5131/5081 +f 5081/5131/5081 4982/5031/4982 5082/5132/5082 +f 4982/5031/4982 4983/5032/4983 5082/5132/5082 +f 5082/5132/5082 4983/5032/4983 5083/5133/5083 +f 4983/5032/4983 4984/5033/4984 5083/5133/5083 +f 5083/5133/5083 4984/5033/4984 5084/5134/5084 +f 4984/5033/4984 4985/5034/4985 5084/5134/5084 +f 5084/5134/5084 4985/5034/4985 5085/5135/5085 +f 4985/5034/4985 4986/5035/4986 5085/5135/5085 +f 5085/5135/5085 4986/5035/4986 5086/5136/5086 +f 4986/5035/4986 4987/5036/4987 5086/5136/5086 +f 5086/5136/5086 4987/5036/4987 5087/5137/5087 +f 4987/5036/4987 4988/5037/4988 5087/5137/5087 +f 5087/5137/5087 4988/5037/4988 5088/5138/5088 +f 4988/5037/4988 4989/5038/4989 5088/5138/5088 +f 5088/5138/5088 4989/5038/4989 5089/5139/5089 +f 4989/5038/4989 4990/5039/4990 5089/5139/5089 +f 5089/5139/5089 4990/5039/4990 5090/5140/5090 +f 4990/5039/4990 4991/5040/4991 5090/5140/5090 +f 5090/5140/5090 4991/5040/4991 5091/5141/5091 +f 4991/5040/4991 4992/5041/4992 5091/5141/5091 +f 5091/5141/5091 4992/5041/4992 5092/5142/5092 +f 4992/5041/4992 4993/5042/4993 5092/5142/5092 +f 5092/5142/5092 4993/5042/4993 5093/5143/5093 +f 4993/5042/4993 4994/5043/4994 5093/5143/5093 +f 5093/5143/5093 4994/5043/4994 5094/5144/5094 +f 4994/5043/4994 4995/5044/4995 5094/5144/5094 +f 5094/5144/5094 4995/5044/4995 5095/5145/5095 +f 4995/5044/4995 4996/5045/4996 5095/5145/5095 +f 5095/5145/5095 4996/5045/4996 5096/5146/5096 +f 4996/5045/4996 4997/5046/4997 5096/5146/5096 +f 5096/5146/5096 4997/5046/4997 5097/5147/5097 +f 4997/5046/4997 4998/5047/4998 5097/5147/5097 +f 5097/5147/5097 4998/5047/4998 5098/5148/5098 +f 4998/5047/4998 4999/5048/4999 5098/5148/5098 +f 5098/5148/5098 4999/5048/4999 5099/5149/5099 +f 4999/5048/4999 5000/5049/5000 5099/5149/5099 +f 5099/5149/5099 5000/5049/5000 5100/5150/5100 +f 5000/5049/5000 4901/5050/4901 5100/5150/5100 +f 5100/5150/5100 4901/5050/4901 5001/5151/5001 +f 5001/5051/5001 5002/5052/5002 5101/5152/5101 +f 5101/5152/5101 5002/5052/5002 5102/5153/5102 +f 5002/5052/5002 5003/5053/5003 5102/5153/5102 +f 5102/5153/5102 5003/5053/5003 5103/5154/5103 +f 5003/5053/5003 5004/5054/5004 5103/5154/5103 +f 5103/5154/5103 5004/5054/5004 5104/5155/5104 +f 5004/5054/5004 5005/5055/5005 5104/5155/5104 +f 5104/5155/5104 5005/5055/5005 5105/5156/5105 +f 5005/5055/5005 5006/5056/5006 5105/5156/5105 +f 5105/5156/5105 5006/5056/5006 5106/5157/5106 +f 5006/5056/5006 5007/5057/5007 5106/5157/5106 +f 5106/5157/5106 5007/5057/5007 5107/5158/5107 +f 5007/5057/5007 5008/5058/5008 5107/5158/5107 +f 5107/5158/5107 5008/5058/5008 5108/5159/5108 +f 5008/5058/5008 5009/5059/5009 5108/5159/5108 +f 5108/5159/5108 5009/5059/5009 5109/5160/5109 +f 5009/5059/5009 5010/5060/5010 5109/5160/5109 +f 5109/5160/5109 5010/5060/5010 5110/5161/5110 +f 5010/5060/5010 5011/5061/5011 5110/5161/5110 +f 5110/5161/5110 5011/5061/5011 5111/5162/5111 +f 5011/5061/5011 5012/5062/5012 5111/5162/5111 +f 5111/5162/5111 5012/5062/5012 5112/5163/5112 +f 5012/5062/5012 5013/5063/5013 5112/5163/5112 +f 5112/5163/5112 5013/5063/5013 5113/5164/5113 +f 5013/5063/5013 5014/5064/5014 5113/5164/5113 +f 5113/5164/5113 5014/5064/5014 5114/5165/5114 +f 5014/5064/5014 5015/5065/5015 5114/5165/5114 +f 5114/5165/5114 5015/5065/5015 5115/5166/5115 +f 5015/5065/5015 5016/5066/5016 5115/5166/5115 +f 5115/5166/5115 5016/5066/5016 5116/5167/5116 +f 5016/5066/5016 5017/5067/5017 5116/5167/5116 +f 5116/5167/5116 5017/5067/5017 5117/5168/5117 +f 5017/5067/5017 5018/5068/5018 5117/5168/5117 +f 5117/5168/5117 5018/5068/5018 5118/5169/5118 +f 5018/5068/5018 5019/5069/5019 5118/5169/5118 +f 5118/5169/5118 5019/5069/5019 5119/5170/5119 +f 5019/5069/5019 5020/5070/5020 5119/5170/5119 +f 5119/5170/5119 5020/5070/5020 5120/5171/5120 +f 5020/5070/5020 5021/5071/5021 5120/5171/5120 +f 5120/5171/5120 5021/5071/5021 5121/5172/5121 +f 5021/5071/5021 5022/5072/5022 5121/5172/5121 +f 5121/5172/5121 5022/5072/5022 5122/5173/5122 +f 5022/5072/5022 5023/5073/5023 5122/5173/5122 +f 5122/5173/5122 5023/5073/5023 5123/5174/5123 +f 5023/5073/5023 5024/5074/5024 5123/5174/5123 +f 5123/5174/5123 5024/5074/5024 5124/5175/5124 +f 5024/5074/5024 5025/5075/5025 5124/5175/5124 +f 5124/5175/5124 5025/5075/5025 5125/5176/5125 +f 5025/5075/5025 5026/5076/5026 5125/5176/5125 +f 5125/5176/5125 5026/5076/5026 5126/5177/5126 +f 5026/5076/5026 5027/5077/5027 5126/5177/5126 +f 5126/5177/5126 5027/5077/5027 5127/5178/5127 +f 5027/5077/5027 5028/5078/5028 5127/5178/5127 +f 5127/5178/5127 5028/5078/5028 5128/5179/5128 +f 5028/5078/5028 5029/5079/5029 5128/5179/5128 +f 5128/5179/5128 5029/5079/5029 5129/5180/5129 +f 5029/5079/5029 5030/5080/5030 5129/5180/5129 +f 5129/5180/5129 5030/5080/5030 5130/5181/5130 +f 5030/5080/5030 5031/5081/5031 5130/5181/5130 +f 5130/5181/5130 5031/5081/5031 5131/5182/5131 +f 5031/5081/5031 5032/5082/5032 5131/5182/5131 +f 5131/5182/5131 5032/5082/5032 5132/5183/5132 +f 5032/5082/5032 5033/5083/5033 5132/5183/5132 +f 5132/5183/5132 5033/5083/5033 5133/5184/5133 +f 5033/5083/5033 5034/5084/5034 5133/5184/5133 +f 5133/5184/5133 5034/5084/5034 5134/5185/5134 +f 5034/5084/5034 5035/5085/5035 5134/5185/5134 +f 5134/5185/5134 5035/5085/5035 5135/5186/5135 +f 5035/5085/5035 5036/5086/5036 5135/5186/5135 +f 5135/5186/5135 5036/5086/5036 5136/5187/5136 +f 5036/5086/5036 5037/5087/5037 5136/5187/5136 +f 5136/5187/5136 5037/5087/5037 5137/5188/5137 +f 5037/5087/5037 5038/5088/5038 5137/5188/5137 +f 5137/5188/5137 5038/5088/5038 5138/5189/5138 +f 5038/5088/5038 5039/5089/5039 5138/5189/5138 +f 5138/5189/5138 5039/5089/5039 5139/5190/5139 +f 5039/5089/5039 5040/5090/5040 5139/5190/5139 +f 5139/5190/5139 5040/5090/5040 5140/5191/5140 +f 5040/5090/5040 5041/5091/5041 5140/5191/5140 +f 5140/5191/5140 5041/5091/5041 5141/5192/5141 +f 5041/5091/5041 5042/5092/5042 5141/5192/5141 +f 5141/5192/5141 5042/5092/5042 5142/5193/5142 +f 5042/5092/5042 5043/5093/5043 5142/5193/5142 +f 5142/5193/5142 5043/5093/5043 5143/5194/5143 +f 5043/5093/5043 5044/5094/5044 5143/5194/5143 +f 5143/5194/5143 5044/5094/5044 5144/5195/5144 +f 5044/5094/5044 5045/5095/5045 5144/5195/5144 +f 5144/5195/5144 5045/5095/5045 5145/5196/5145 +f 5045/5095/5045 5046/5096/5046 5145/5196/5145 +f 5145/5196/5145 5046/5096/5046 5146/5197/5146 +f 5046/5096/5046 5047/5097/5047 5146/5197/5146 +f 5146/5197/5146 5047/5097/5047 5147/5198/5147 +f 5047/5097/5047 5048/5098/5048 5147/5198/5147 +f 5147/5198/5147 5048/5098/5048 5148/5199/5148 +f 5048/5098/5048 5049/5099/5049 5148/5199/5148 +f 5148/5199/5148 5049/5099/5049 5149/5200/5149 +f 5049/5099/5049 5050/5100/5050 5149/5200/5149 +f 5149/5200/5149 5050/5100/5050 5150/5201/5150 +f 5050/5100/5050 5051/5101/5051 5150/5201/5150 +f 5150/5201/5150 5051/5101/5051 5151/5202/5151 +f 5051/5101/5051 5052/5102/5052 5151/5202/5151 +f 5151/5202/5151 5052/5102/5052 5152/5203/5152 +f 5052/5102/5052 5053/5103/5053 5152/5203/5152 +f 5152/5203/5152 5053/5103/5053 5153/5204/5153 +f 5053/5103/5053 5054/5104/5054 5153/5204/5153 +f 5153/5204/5153 5054/5104/5054 5154/5205/5154 +f 5054/5104/5054 5055/5105/5055 5154/5205/5154 +f 5154/5205/5154 5055/5105/5055 5155/5206/5155 +f 5055/5105/5055 5056/5106/5056 5155/5206/5155 +f 5155/5206/5155 5056/5106/5056 5156/5207/5156 +f 5056/5106/5056 5057/5107/5057 5156/5207/5156 +f 5156/5207/5156 5057/5107/5057 5157/5208/5157 +f 5057/5107/5057 5058/5108/5058 5157/5208/5157 +f 5157/5208/5157 5058/5108/5058 5158/5209/5158 +f 5058/5108/5058 5059/5109/5059 5158/5209/5158 +f 5158/5209/5158 5059/5109/5059 5159/5210/5159 +f 5059/5109/5059 5060/5110/5060 5159/5210/5159 +f 5159/5210/5159 5060/5110/5060 5160/5211/5160 +f 5060/5110/5060 5061/5111/5061 5160/5211/5160 +f 5160/5211/5160 5061/5111/5061 5161/5212/5161 +f 5061/5111/5061 5062/5112/5062 5161/5212/5161 +f 5161/5212/5161 5062/5112/5062 5162/5213/5162 +f 5062/5112/5062 5063/5113/5063 5162/5213/5162 +f 5162/5213/5162 5063/5113/5063 5163/5214/5163 +f 5063/5113/5063 5064/5114/5064 5163/5214/5163 +f 5163/5214/5163 5064/5114/5064 5164/5215/5164 +f 5064/5114/5064 5065/5115/5065 5164/5215/5164 +f 5164/5215/5164 5065/5115/5065 5165/5216/5165 +f 5065/5115/5065 5066/5116/5066 5165/5216/5165 +f 5165/5216/5165 5066/5116/5066 5166/5217/5166 +f 5066/5116/5066 5067/5117/5067 5166/5217/5166 +f 5166/5217/5166 5067/5117/5067 5167/5218/5167 +f 5067/5117/5067 5068/5118/5068 5167/5218/5167 +f 5167/5218/5167 5068/5118/5068 5168/5219/5168 +f 5068/5118/5068 5069/5119/5069 5168/5219/5168 +f 5168/5219/5168 5069/5119/5069 5169/5220/5169 +f 5069/5119/5069 5070/5120/5070 5169/5220/5169 +f 5169/5220/5169 5070/5120/5070 5170/5221/5170 +f 5070/5120/5070 5071/5121/5071 5170/5221/5170 +f 5170/5221/5170 5071/5121/5071 5171/5222/5171 +f 5071/5121/5071 5072/5122/5072 5171/5222/5171 +f 5171/5222/5171 5072/5122/5072 5172/5223/5172 +f 5072/5122/5072 5073/5123/5073 5172/5223/5172 +f 5172/5223/5172 5073/5123/5073 5173/5224/5173 +f 5073/5123/5073 5074/5124/5074 5173/5224/5173 +f 5173/5224/5173 5074/5124/5074 5174/5225/5174 +f 5074/5124/5074 5075/5125/5075 5174/5225/5174 +f 5174/5225/5174 5075/5125/5075 5175/5226/5175 +f 5075/5125/5075 5076/5126/5076 5175/5226/5175 +f 5175/5226/5175 5076/5126/5076 5176/5227/5176 +f 5076/5126/5076 5077/5127/5077 5176/5227/5176 +f 5176/5227/5176 5077/5127/5077 5177/5228/5177 +f 5077/5127/5077 5078/5128/5078 5177/5228/5177 +f 5177/5228/5177 5078/5128/5078 5178/5229/5178 +f 5078/5128/5078 5079/5129/5079 5178/5229/5178 +f 5178/5229/5178 5079/5129/5079 5179/5230/5179 +f 5079/5129/5079 5080/5130/5080 5179/5230/5179 +f 5179/5230/5179 5080/5130/5080 5180/5231/5180 +f 5080/5130/5080 5081/5131/5081 5180/5231/5180 +f 5180/5231/5180 5081/5131/5081 5181/5232/5181 +f 5081/5131/5081 5082/5132/5082 5181/5232/5181 +f 5181/5232/5181 5082/5132/5082 5182/5233/5182 +f 5082/5132/5082 5083/5133/5083 5182/5233/5182 +f 5182/5233/5182 5083/5133/5083 5183/5234/5183 +f 5083/5133/5083 5084/5134/5084 5183/5234/5183 +f 5183/5234/5183 5084/5134/5084 5184/5235/5184 +f 5084/5134/5084 5085/5135/5085 5184/5235/5184 +f 5184/5235/5184 5085/5135/5085 5185/5236/5185 +f 5085/5135/5085 5086/5136/5086 5185/5236/5185 +f 5185/5236/5185 5086/5136/5086 5186/5237/5186 +f 5086/5136/5086 5087/5137/5087 5186/5237/5186 +f 5186/5237/5186 5087/5137/5087 5187/5238/5187 +f 5087/5137/5087 5088/5138/5088 5187/5238/5187 +f 5187/5238/5187 5088/5138/5088 5188/5239/5188 +f 5088/5138/5088 5089/5139/5089 5188/5239/5188 +f 5188/5239/5188 5089/5139/5089 5189/5240/5189 +f 5089/5139/5089 5090/5140/5090 5189/5240/5189 +f 5189/5240/5189 5090/5140/5090 5190/5241/5190 +f 5090/5140/5090 5091/5141/5091 5190/5241/5190 +f 5190/5241/5190 5091/5141/5091 5191/5242/5191 +f 5091/5141/5091 5092/5142/5092 5191/5242/5191 +f 5191/5242/5191 5092/5142/5092 5192/5243/5192 +f 5092/5142/5092 5093/5143/5093 5192/5243/5192 +f 5192/5243/5192 5093/5143/5093 5193/5244/5193 +f 5093/5143/5093 5094/5144/5094 5193/5244/5193 +f 5193/5244/5193 5094/5144/5094 5194/5245/5194 +f 5094/5144/5094 5095/5145/5095 5194/5245/5194 +f 5194/5245/5194 5095/5145/5095 5195/5246/5195 +f 5095/5145/5095 5096/5146/5096 5195/5246/5195 +f 5195/5246/5195 5096/5146/5096 5196/5247/5196 +f 5096/5146/5096 5097/5147/5097 5196/5247/5196 +f 5196/5247/5196 5097/5147/5097 5197/5248/5197 +f 5097/5147/5097 5098/5148/5098 5197/5248/5197 +f 5197/5248/5197 5098/5148/5098 5198/5249/5198 +f 5098/5148/5098 5099/5149/5099 5198/5249/5198 +f 5198/5249/5198 5099/5149/5099 5199/5250/5199 +f 5099/5149/5099 5100/5150/5100 5199/5250/5199 +f 5199/5250/5199 5100/5150/5100 5200/5251/5200 +f 5100/5150/5100 5001/5151/5001 5200/5251/5200 +f 5200/5251/5200 5001/5151/5001 5101/5252/5101 +f 5101/5152/5101 5102/5153/5102 5201/5253/5201 +f 5201/5253/5201 5102/5153/5102 5202/5254/5202 +f 5102/5153/5102 5103/5154/5103 5202/5254/5202 +f 5202/5254/5202 5103/5154/5103 5203/5255/5203 +f 5103/5154/5103 5104/5155/5104 5203/5255/5203 +f 5203/5255/5203 5104/5155/5104 5204/5256/5204 +f 5104/5155/5104 5105/5156/5105 5204/5256/5204 +f 5204/5256/5204 5105/5156/5105 5205/5257/5205 +f 5105/5156/5105 5106/5157/5106 5205/5257/5205 +f 5205/5257/5205 5106/5157/5106 5206/5258/5206 +f 5106/5157/5106 5107/5158/5107 5206/5258/5206 +f 5206/5258/5206 5107/5158/5107 5207/5259/5207 +f 5107/5158/5107 5108/5159/5108 5207/5259/5207 +f 5207/5259/5207 5108/5159/5108 5208/5260/5208 +f 5108/5159/5108 5109/5160/5109 5208/5260/5208 +f 5208/5260/5208 5109/5160/5109 5209/5261/5209 +f 5109/5160/5109 5110/5161/5110 5209/5261/5209 +f 5209/5261/5209 5110/5161/5110 5210/5262/5210 +f 5110/5161/5110 5111/5162/5111 5210/5262/5210 +f 5210/5262/5210 5111/5162/5111 5211/5263/5211 +f 5111/5162/5111 5112/5163/5112 5211/5263/5211 +f 5211/5263/5211 5112/5163/5112 5212/5264/5212 +f 5112/5163/5112 5113/5164/5113 5212/5264/5212 +f 5212/5264/5212 5113/5164/5113 5213/5265/5213 +f 5113/5164/5113 5114/5165/5114 5213/5265/5213 +f 5213/5265/5213 5114/5165/5114 5214/5266/5214 +f 5114/5165/5114 5115/5166/5115 5214/5266/5214 +f 5214/5266/5214 5115/5166/5115 5215/5267/5215 +f 5115/5166/5115 5116/5167/5116 5215/5267/5215 +f 5215/5267/5215 5116/5167/5116 5216/5268/5216 +f 5116/5167/5116 5117/5168/5117 5216/5268/5216 +f 5216/5268/5216 5117/5168/5117 5217/5269/5217 +f 5117/5168/5117 5118/5169/5118 5217/5269/5217 +f 5217/5269/5217 5118/5169/5118 5218/5270/5218 +f 5118/5169/5118 5119/5170/5119 5218/5270/5218 +f 5218/5270/5218 5119/5170/5119 5219/5271/5219 +f 5119/5170/5119 5120/5171/5120 5219/5271/5219 +f 5219/5271/5219 5120/5171/5120 5220/5272/5220 +f 5120/5171/5120 5121/5172/5121 5220/5272/5220 +f 5220/5272/5220 5121/5172/5121 5221/5273/5221 +f 5121/5172/5121 5122/5173/5122 5221/5273/5221 +f 5221/5273/5221 5122/5173/5122 5222/5274/5222 +f 5122/5173/5122 5123/5174/5123 5222/5274/5222 +f 5222/5274/5222 5123/5174/5123 5223/5275/5223 +f 5123/5174/5123 5124/5175/5124 5223/5275/5223 +f 5223/5275/5223 5124/5175/5124 5224/5276/5224 +f 5124/5175/5124 5125/5176/5125 5224/5276/5224 +f 5224/5276/5224 5125/5176/5125 5225/5277/5225 +f 5125/5176/5125 5126/5177/5126 5225/5277/5225 +f 5225/5277/5225 5126/5177/5126 5226/5278/5226 +f 5126/5177/5126 5127/5178/5127 5226/5278/5226 +f 5226/5278/5226 5127/5178/5127 5227/5279/5227 +f 5127/5178/5127 5128/5179/5128 5227/5279/5227 +f 5227/5279/5227 5128/5179/5128 5228/5280/5228 +f 5128/5179/5128 5129/5180/5129 5228/5280/5228 +f 5228/5280/5228 5129/5180/5129 5229/5281/5229 +f 5129/5180/5129 5130/5181/5130 5229/5281/5229 +f 5229/5281/5229 5130/5181/5130 5230/5282/5230 +f 5130/5181/5130 5131/5182/5131 5230/5282/5230 +f 5230/5282/5230 5131/5182/5131 5231/5283/5231 +f 5131/5182/5131 5132/5183/5132 5231/5283/5231 +f 5231/5283/5231 5132/5183/5132 5232/5284/5232 +f 5132/5183/5132 5133/5184/5133 5232/5284/5232 +f 5232/5284/5232 5133/5184/5133 5233/5285/5233 +f 5133/5184/5133 5134/5185/5134 5233/5285/5233 +f 5233/5285/5233 5134/5185/5134 5234/5286/5234 +f 5134/5185/5134 5135/5186/5135 5234/5286/5234 +f 5234/5286/5234 5135/5186/5135 5235/5287/5235 +f 5135/5186/5135 5136/5187/5136 5235/5287/5235 +f 5235/5287/5235 5136/5187/5136 5236/5288/5236 +f 5136/5187/5136 5137/5188/5137 5236/5288/5236 +f 5236/5288/5236 5137/5188/5137 5237/5289/5237 +f 5137/5188/5137 5138/5189/5138 5237/5289/5237 +f 5237/5289/5237 5138/5189/5138 5238/5290/5238 +f 5138/5189/5138 5139/5190/5139 5238/5290/5238 +f 5238/5290/5238 5139/5190/5139 5239/5291/5239 +f 5139/5190/5139 5140/5191/5140 5239/5291/5239 +f 5239/5291/5239 5140/5191/5140 5240/5292/5240 +f 5140/5191/5140 5141/5192/5141 5240/5292/5240 +f 5240/5292/5240 5141/5192/5141 5241/5293/5241 +f 5141/5192/5141 5142/5193/5142 5241/5293/5241 +f 5241/5293/5241 5142/5193/5142 5242/5294/5242 +f 5142/5193/5142 5143/5194/5143 5242/5294/5242 +f 5242/5294/5242 5143/5194/5143 5243/5295/5243 +f 5143/5194/5143 5144/5195/5144 5243/5295/5243 +f 5243/5295/5243 5144/5195/5144 5244/5296/5244 +f 5144/5195/5144 5145/5196/5145 5244/5296/5244 +f 5244/5296/5244 5145/5196/5145 5245/5297/5245 +f 5145/5196/5145 5146/5197/5146 5245/5297/5245 +f 5245/5297/5245 5146/5197/5146 5246/5298/5246 +f 5146/5197/5146 5147/5198/5147 5246/5298/5246 +f 5246/5298/5246 5147/5198/5147 5247/5299/5247 +f 5147/5198/5147 5148/5199/5148 5247/5299/5247 +f 5247/5299/5247 5148/5199/5148 5248/5300/5248 +f 5148/5199/5148 5149/5200/5149 5248/5300/5248 +f 5248/5300/5248 5149/5200/5149 5249/5301/5249 +f 5149/5200/5149 5150/5201/5150 5249/5301/5249 +f 5249/5301/5249 5150/5201/5150 5250/5302/5250 +f 5150/5201/5150 5151/5202/5151 5250/5302/5250 +f 5250/5302/5250 5151/5202/5151 5251/5303/5251 +f 5151/5202/5151 5152/5203/5152 5251/5303/5251 +f 5251/5303/5251 5152/5203/5152 5252/5304/5252 +f 5152/5203/5152 5153/5204/5153 5252/5304/5252 +f 5252/5304/5252 5153/5204/5153 5253/5305/5253 +f 5153/5204/5153 5154/5205/5154 5253/5305/5253 +f 5253/5305/5253 5154/5205/5154 5254/5306/5254 +f 5154/5205/5154 5155/5206/5155 5254/5306/5254 +f 5254/5306/5254 5155/5206/5155 5255/5307/5255 +f 5155/5206/5155 5156/5207/5156 5255/5307/5255 +f 5255/5307/5255 5156/5207/5156 5256/5308/5256 +f 5156/5207/5156 5157/5208/5157 5256/5308/5256 +f 5256/5308/5256 5157/5208/5157 5257/5309/5257 +f 5157/5208/5157 5158/5209/5158 5257/5309/5257 +f 5257/5309/5257 5158/5209/5158 5258/5310/5258 +f 5158/5209/5158 5159/5210/5159 5258/5310/5258 +f 5258/5310/5258 5159/5210/5159 5259/5311/5259 +f 5159/5210/5159 5160/5211/5160 5259/5311/5259 +f 5259/5311/5259 5160/5211/5160 5260/5312/5260 +f 5160/5211/5160 5161/5212/5161 5260/5312/5260 +f 5260/5312/5260 5161/5212/5161 5261/5313/5261 +f 5161/5212/5161 5162/5213/5162 5261/5313/5261 +f 5261/5313/5261 5162/5213/5162 5262/5314/5262 +f 5162/5213/5162 5163/5214/5163 5262/5314/5262 +f 5262/5314/5262 5163/5214/5163 5263/5315/5263 +f 5163/5214/5163 5164/5215/5164 5263/5315/5263 +f 5263/5315/5263 5164/5215/5164 5264/5316/5264 +f 5164/5215/5164 5165/5216/5165 5264/5316/5264 +f 5264/5316/5264 5165/5216/5165 5265/5317/5265 +f 5165/5216/5165 5166/5217/5166 5265/5317/5265 +f 5265/5317/5265 5166/5217/5166 5266/5318/5266 +f 5166/5217/5166 5167/5218/5167 5266/5318/5266 +f 5266/5318/5266 5167/5218/5167 5267/5319/5267 +f 5167/5218/5167 5168/5219/5168 5267/5319/5267 +f 5267/5319/5267 5168/5219/5168 5268/5320/5268 +f 5168/5219/5168 5169/5220/5169 5268/5320/5268 +f 5268/5320/5268 5169/5220/5169 5269/5321/5269 +f 5169/5220/5169 5170/5221/5170 5269/5321/5269 +f 5269/5321/5269 5170/5221/5170 5270/5322/5270 +f 5170/5221/5170 5171/5222/5171 5270/5322/5270 +f 5270/5322/5270 5171/5222/5171 5271/5323/5271 +f 5171/5222/5171 5172/5223/5172 5271/5323/5271 +f 5271/5323/5271 5172/5223/5172 5272/5324/5272 +f 5172/5223/5172 5173/5224/5173 5272/5324/5272 +f 5272/5324/5272 5173/5224/5173 5273/5325/5273 +f 5173/5224/5173 5174/5225/5174 5273/5325/5273 +f 5273/5325/5273 5174/5225/5174 5274/5326/5274 +f 5174/5225/5174 5175/5226/5175 5274/5326/5274 +f 5274/5326/5274 5175/5226/5175 5275/5327/5275 +f 5175/5226/5175 5176/5227/5176 5275/5327/5275 +f 5275/5327/5275 5176/5227/5176 5276/5328/5276 +f 5176/5227/5176 5177/5228/5177 5276/5328/5276 +f 5276/5328/5276 5177/5228/5177 5277/5329/5277 +f 5177/5228/5177 5178/5229/5178 5277/5329/5277 +f 5277/5329/5277 5178/5229/5178 5278/5330/5278 +f 5178/5229/5178 5179/5230/5179 5278/5330/5278 +f 5278/5330/5278 5179/5230/5179 5279/5331/5279 +f 5179/5230/5179 5180/5231/5180 5279/5331/5279 +f 5279/5331/5279 5180/5231/5180 5280/5332/5280 +f 5180/5231/5180 5181/5232/5181 5280/5332/5280 +f 5280/5332/5280 5181/5232/5181 5281/5333/5281 +f 5181/5232/5181 5182/5233/5182 5281/5333/5281 +f 5281/5333/5281 5182/5233/5182 5282/5334/5282 +f 5182/5233/5182 5183/5234/5183 5282/5334/5282 +f 5282/5334/5282 5183/5234/5183 5283/5335/5283 +f 5183/5234/5183 5184/5235/5184 5283/5335/5283 +f 5283/5335/5283 5184/5235/5184 5284/5336/5284 +f 5184/5235/5184 5185/5236/5185 5284/5336/5284 +f 5284/5336/5284 5185/5236/5185 5285/5337/5285 +f 5185/5236/5185 5186/5237/5186 5285/5337/5285 +f 5285/5337/5285 5186/5237/5186 5286/5338/5286 +f 5186/5237/5186 5187/5238/5187 5286/5338/5286 +f 5286/5338/5286 5187/5238/5187 5287/5339/5287 +f 5187/5238/5187 5188/5239/5188 5287/5339/5287 +f 5287/5339/5287 5188/5239/5188 5288/5340/5288 +f 5188/5239/5188 5189/5240/5189 5288/5340/5288 +f 5288/5340/5288 5189/5240/5189 5289/5341/5289 +f 5189/5240/5189 5190/5241/5190 5289/5341/5289 +f 5289/5341/5289 5190/5241/5190 5290/5342/5290 +f 5190/5241/5190 5191/5242/5191 5290/5342/5290 +f 5290/5342/5290 5191/5242/5191 5291/5343/5291 +f 5191/5242/5191 5192/5243/5192 5291/5343/5291 +f 5291/5343/5291 5192/5243/5192 5292/5344/5292 +f 5192/5243/5192 5193/5244/5193 5292/5344/5292 +f 5292/5344/5292 5193/5244/5193 5293/5345/5293 +f 5193/5244/5193 5194/5245/5194 5293/5345/5293 +f 5293/5345/5293 5194/5245/5194 5294/5346/5294 +f 5194/5245/5194 5195/5246/5195 5294/5346/5294 +f 5294/5346/5294 5195/5246/5195 5295/5347/5295 +f 5195/5246/5195 5196/5247/5196 5295/5347/5295 +f 5295/5347/5295 5196/5247/5196 5296/5348/5296 +f 5196/5247/5196 5197/5248/5197 5296/5348/5296 +f 5296/5348/5296 5197/5248/5197 5297/5349/5297 +f 5197/5248/5197 5198/5249/5198 5297/5349/5297 +f 5297/5349/5297 5198/5249/5198 5298/5350/5298 +f 5198/5249/5198 5199/5250/5199 5298/5350/5298 +f 5298/5350/5298 5199/5250/5199 5299/5351/5299 +f 5199/5250/5199 5200/5251/5200 5299/5351/5299 +f 5299/5351/5299 5200/5251/5200 5300/5352/5300 +f 5200/5251/5200 5101/5252/5101 5300/5352/5300 +f 5300/5352/5300 5101/5252/5101 5201/5353/5201 +f 5201/5253/5201 5202/5254/5202 5301/5354/5301 +f 5301/5354/5301 5202/5254/5202 5302/5355/5302 +f 5202/5254/5202 5203/5255/5203 5302/5355/5302 +f 5302/5355/5302 5203/5255/5203 5303/5356/5303 +f 5203/5255/5203 5204/5256/5204 5303/5356/5303 +f 5303/5356/5303 5204/5256/5204 5304/5357/5304 +f 5204/5256/5204 5205/5257/5205 5304/5357/5304 +f 5304/5357/5304 5205/5257/5205 5305/5358/5305 +f 5205/5257/5205 5206/5258/5206 5305/5358/5305 +f 5305/5358/5305 5206/5258/5206 5306/5359/5306 +f 5206/5258/5206 5207/5259/5207 5306/5359/5306 +f 5306/5359/5306 5207/5259/5207 5307/5360/5307 +f 5207/5259/5207 5208/5260/5208 5307/5360/5307 +f 5307/5360/5307 5208/5260/5208 5308/5361/5308 +f 5208/5260/5208 5209/5261/5209 5308/5361/5308 +f 5308/5361/5308 5209/5261/5209 5309/5362/5309 +f 5209/5261/5209 5210/5262/5210 5309/5362/5309 +f 5309/5362/5309 5210/5262/5210 5310/5363/5310 +f 5210/5262/5210 5211/5263/5211 5310/5363/5310 +f 5310/5363/5310 5211/5263/5211 5311/5364/5311 +f 5211/5263/5211 5212/5264/5212 5311/5364/5311 +f 5311/5364/5311 5212/5264/5212 5312/5365/5312 +f 5212/5264/5212 5213/5265/5213 5312/5365/5312 +f 5312/5365/5312 5213/5265/5213 5313/5366/5313 +f 5213/5265/5213 5214/5266/5214 5313/5366/5313 +f 5313/5366/5313 5214/5266/5214 5314/5367/5314 +f 5214/5266/5214 5215/5267/5215 5314/5367/5314 +f 5314/5367/5314 5215/5267/5215 5315/5368/5315 +f 5215/5267/5215 5216/5268/5216 5315/5368/5315 +f 5315/5368/5315 5216/5268/5216 5316/5369/5316 +f 5216/5268/5216 5217/5269/5217 5316/5369/5316 +f 5316/5369/5316 5217/5269/5217 5317/5370/5317 +f 5217/5269/5217 5218/5270/5218 5317/5370/5317 +f 5317/5370/5317 5218/5270/5218 5318/5371/5318 +f 5218/5270/5218 5219/5271/5219 5318/5371/5318 +f 5318/5371/5318 5219/5271/5219 5319/5372/5319 +f 5219/5271/5219 5220/5272/5220 5319/5372/5319 +f 5319/5372/5319 5220/5272/5220 5320/5373/5320 +f 5220/5272/5220 5221/5273/5221 5320/5373/5320 +f 5320/5373/5320 5221/5273/5221 5321/5374/5321 +f 5221/5273/5221 5222/5274/5222 5321/5374/5321 +f 5321/5374/5321 5222/5274/5222 5322/5375/5322 +f 5222/5274/5222 5223/5275/5223 5322/5375/5322 +f 5322/5375/5322 5223/5275/5223 5323/5376/5323 +f 5223/5275/5223 5224/5276/5224 5323/5376/5323 +f 5323/5376/5323 5224/5276/5224 5324/5377/5324 +f 5224/5276/5224 5225/5277/5225 5324/5377/5324 +f 5324/5377/5324 5225/5277/5225 5325/5378/5325 +f 5225/5277/5225 5226/5278/5226 5325/5378/5325 +f 5325/5378/5325 5226/5278/5226 5326/5379/5326 +f 5226/5278/5226 5227/5279/5227 5326/5379/5326 +f 5326/5379/5326 5227/5279/5227 5327/5380/5327 +f 5227/5279/5227 5228/5280/5228 5327/5380/5327 +f 5327/5380/5327 5228/5280/5228 5328/5381/5328 +f 5228/5280/5228 5229/5281/5229 5328/5381/5328 +f 5328/5381/5328 5229/5281/5229 5329/5382/5329 +f 5229/5281/5229 5230/5282/5230 5329/5382/5329 +f 5329/5382/5329 5230/5282/5230 5330/5383/5330 +f 5230/5282/5230 5231/5283/5231 5330/5383/5330 +f 5330/5383/5330 5231/5283/5231 5331/5384/5331 +f 5231/5283/5231 5232/5284/5232 5331/5384/5331 +f 5331/5384/5331 5232/5284/5232 5332/5385/5332 +f 5232/5284/5232 5233/5285/5233 5332/5385/5332 +f 5332/5385/5332 5233/5285/5233 5333/5386/5333 +f 5233/5285/5233 5234/5286/5234 5333/5386/5333 +f 5333/5386/5333 5234/5286/5234 5334/5387/5334 +f 5234/5286/5234 5235/5287/5235 5334/5387/5334 +f 5334/5387/5334 5235/5287/5235 5335/5388/5335 +f 5235/5287/5235 5236/5288/5236 5335/5388/5335 +f 5335/5388/5335 5236/5288/5236 5336/5389/5336 +f 5236/5288/5236 5237/5289/5237 5336/5389/5336 +f 5336/5389/5336 5237/5289/5237 5337/5390/5337 +f 5237/5289/5237 5238/5290/5238 5337/5390/5337 +f 5337/5390/5337 5238/5290/5238 5338/5391/5338 +f 5238/5290/5238 5239/5291/5239 5338/5391/5338 +f 5338/5391/5338 5239/5291/5239 5339/5392/5339 +f 5239/5291/5239 5240/5292/5240 5339/5392/5339 +f 5339/5392/5339 5240/5292/5240 5340/5393/5340 +f 5240/5292/5240 5241/5293/5241 5340/5393/5340 +f 5340/5393/5340 5241/5293/5241 5341/5394/5341 +f 5241/5293/5241 5242/5294/5242 5341/5394/5341 +f 5341/5394/5341 5242/5294/5242 5342/5395/5342 +f 5242/5294/5242 5243/5295/5243 5342/5395/5342 +f 5342/5395/5342 5243/5295/5243 5343/5396/5343 +f 5243/5295/5243 5244/5296/5244 5343/5396/5343 +f 5343/5396/5343 5244/5296/5244 5344/5397/5344 +f 5244/5296/5244 5245/5297/5245 5344/5397/5344 +f 5344/5397/5344 5245/5297/5245 5345/5398/5345 +f 5245/5297/5245 5246/5298/5246 5345/5398/5345 +f 5345/5398/5345 5246/5298/5246 5346/5399/5346 +f 5246/5298/5246 5247/5299/5247 5346/5399/5346 +f 5346/5399/5346 5247/5299/5247 5347/5400/5347 +f 5247/5299/5247 5248/5300/5248 5347/5400/5347 +f 5347/5400/5347 5248/5300/5248 5348/5401/5348 +f 5248/5300/5248 5249/5301/5249 5348/5401/5348 +f 5348/5401/5348 5249/5301/5249 5349/5402/5349 +f 5249/5301/5249 5250/5302/5250 5349/5402/5349 +f 5349/5402/5349 5250/5302/5250 5350/5403/5350 +f 5250/5302/5250 5251/5303/5251 5350/5403/5350 +f 5350/5403/5350 5251/5303/5251 5351/5404/5351 +f 5251/5303/5251 5252/5304/5252 5351/5404/5351 +f 5351/5404/5351 5252/5304/5252 5352/5405/5352 +f 5252/5304/5252 5253/5305/5253 5352/5405/5352 +f 5352/5405/5352 5253/5305/5253 5353/5406/5353 +f 5253/5305/5253 5254/5306/5254 5353/5406/5353 +f 5353/5406/5353 5254/5306/5254 5354/5407/5354 +f 5254/5306/5254 5255/5307/5255 5354/5407/5354 +f 5354/5407/5354 5255/5307/5255 5355/5408/5355 +f 5255/5307/5255 5256/5308/5256 5355/5408/5355 +f 5355/5408/5355 5256/5308/5256 5356/5409/5356 +f 5256/5308/5256 5257/5309/5257 5356/5409/5356 +f 5356/5409/5356 5257/5309/5257 5357/5410/5357 +f 5257/5309/5257 5258/5310/5258 5357/5410/5357 +f 5357/5410/5357 5258/5310/5258 5358/5411/5358 +f 5258/5310/5258 5259/5311/5259 5358/5411/5358 +f 5358/5411/5358 5259/5311/5259 5359/5412/5359 +f 5259/5311/5259 5260/5312/5260 5359/5412/5359 +f 5359/5412/5359 5260/5312/5260 5360/5413/5360 +f 5260/5312/5260 5261/5313/5261 5360/5413/5360 +f 5360/5413/5360 5261/5313/5261 5361/5414/5361 +f 5261/5313/5261 5262/5314/5262 5361/5414/5361 +f 5361/5414/5361 5262/5314/5262 5362/5415/5362 +f 5262/5314/5262 5263/5315/5263 5362/5415/5362 +f 5362/5415/5362 5263/5315/5263 5363/5416/5363 +f 5263/5315/5263 5264/5316/5264 5363/5416/5363 +f 5363/5416/5363 5264/5316/5264 5364/5417/5364 +f 5264/5316/5264 5265/5317/5265 5364/5417/5364 +f 5364/5417/5364 5265/5317/5265 5365/5418/5365 +f 5265/5317/5265 5266/5318/5266 5365/5418/5365 +f 5365/5418/5365 5266/5318/5266 5366/5419/5366 +f 5266/5318/5266 5267/5319/5267 5366/5419/5366 +f 5366/5419/5366 5267/5319/5267 5367/5420/5367 +f 5267/5319/5267 5268/5320/5268 5367/5420/5367 +f 5367/5420/5367 5268/5320/5268 5368/5421/5368 +f 5268/5320/5268 5269/5321/5269 5368/5421/5368 +f 5368/5421/5368 5269/5321/5269 5369/5422/5369 +f 5269/5321/5269 5270/5322/5270 5369/5422/5369 +f 5369/5422/5369 5270/5322/5270 5370/5423/5370 +f 5270/5322/5270 5271/5323/5271 5370/5423/5370 +f 5370/5423/5370 5271/5323/5271 5371/5424/5371 +f 5271/5323/5271 5272/5324/5272 5371/5424/5371 +f 5371/5424/5371 5272/5324/5272 5372/5425/5372 +f 5272/5324/5272 5273/5325/5273 5372/5425/5372 +f 5372/5425/5372 5273/5325/5273 5373/5426/5373 +f 5273/5325/5273 5274/5326/5274 5373/5426/5373 +f 5373/5426/5373 5274/5326/5274 5374/5427/5374 +f 5274/5326/5274 5275/5327/5275 5374/5427/5374 +f 5374/5427/5374 5275/5327/5275 5375/5428/5375 +f 5275/5327/5275 5276/5328/5276 5375/5428/5375 +f 5375/5428/5375 5276/5328/5276 5376/5429/5376 +f 5276/5328/5276 5277/5329/5277 5376/5429/5376 +f 5376/5429/5376 5277/5329/5277 5377/5430/5377 +f 5277/5329/5277 5278/5330/5278 5377/5430/5377 +f 5377/5430/5377 5278/5330/5278 5378/5431/5378 +f 5278/5330/5278 5279/5331/5279 5378/5431/5378 +f 5378/5431/5378 5279/5331/5279 5379/5432/5379 +f 5279/5331/5279 5280/5332/5280 5379/5432/5379 +f 5379/5432/5379 5280/5332/5280 5380/5433/5380 +f 5280/5332/5280 5281/5333/5281 5380/5433/5380 +f 5380/5433/5380 5281/5333/5281 5381/5434/5381 +f 5281/5333/5281 5282/5334/5282 5381/5434/5381 +f 5381/5434/5381 5282/5334/5282 5382/5435/5382 +f 5282/5334/5282 5283/5335/5283 5382/5435/5382 +f 5382/5435/5382 5283/5335/5283 5383/5436/5383 +f 5283/5335/5283 5284/5336/5284 5383/5436/5383 +f 5383/5436/5383 5284/5336/5284 5384/5437/5384 +f 5284/5336/5284 5285/5337/5285 5384/5437/5384 +f 5384/5437/5384 5285/5337/5285 5385/5438/5385 +f 5285/5337/5285 5286/5338/5286 5385/5438/5385 +f 5385/5438/5385 5286/5338/5286 5386/5439/5386 +f 5286/5338/5286 5287/5339/5287 5386/5439/5386 +f 5386/5439/5386 5287/5339/5287 5387/5440/5387 +f 5287/5339/5287 5288/5340/5288 5387/5440/5387 +f 5387/5440/5387 5288/5340/5288 5388/5441/5388 +f 5288/5340/5288 5289/5341/5289 5388/5441/5388 +f 5388/5441/5388 5289/5341/5289 5389/5442/5389 +f 5289/5341/5289 5290/5342/5290 5389/5442/5389 +f 5389/5442/5389 5290/5342/5290 5390/5443/5390 +f 5290/5342/5290 5291/5343/5291 5390/5443/5390 +f 5390/5443/5390 5291/5343/5291 5391/5444/5391 +f 5291/5343/5291 5292/5344/5292 5391/5444/5391 +f 5391/5444/5391 5292/5344/5292 5392/5445/5392 +f 5292/5344/5292 5293/5345/5293 5392/5445/5392 +f 5392/5445/5392 5293/5345/5293 5393/5446/5393 +f 5293/5345/5293 5294/5346/5294 5393/5446/5393 +f 5393/5446/5393 5294/5346/5294 5394/5447/5394 +f 5294/5346/5294 5295/5347/5295 5394/5447/5394 +f 5394/5447/5394 5295/5347/5295 5395/5448/5395 +f 5295/5347/5295 5296/5348/5296 5395/5448/5395 +f 5395/5448/5395 5296/5348/5296 5396/5449/5396 +f 5296/5348/5296 5297/5349/5297 5396/5449/5396 +f 5396/5449/5396 5297/5349/5297 5397/5450/5397 +f 5297/5349/5297 5298/5350/5298 5397/5450/5397 +f 5397/5450/5397 5298/5350/5298 5398/5451/5398 +f 5298/5350/5298 5299/5351/5299 5398/5451/5398 +f 5398/5451/5398 5299/5351/5299 5399/5452/5399 +f 5299/5351/5299 5300/5352/5300 5399/5452/5399 +f 5399/5452/5399 5300/5352/5300 5400/5453/5400 +f 5300/5352/5300 5201/5353/5201 5400/5453/5400 +f 5400/5453/5400 5201/5353/5201 5301/5454/5301 +f 5301/5354/5301 5302/5355/5302 5401/5455/5401 +f 5401/5455/5401 5302/5355/5302 5402/5456/5402 +f 5302/5355/5302 5303/5356/5303 5402/5456/5402 +f 5402/5456/5402 5303/5356/5303 5403/5457/5403 +f 5303/5356/5303 5304/5357/5304 5403/5457/5403 +f 5403/5457/5403 5304/5357/5304 5404/5458/5404 +f 5304/5357/5304 5305/5358/5305 5404/5458/5404 +f 5404/5458/5404 5305/5358/5305 5405/5459/5405 +f 5305/5358/5305 5306/5359/5306 5405/5459/5405 +f 5405/5459/5405 5306/5359/5306 5406/5460/5406 +f 5306/5359/5306 5307/5360/5307 5406/5460/5406 +f 5406/5460/5406 5307/5360/5307 5407/5461/5407 +f 5307/5360/5307 5308/5361/5308 5407/5461/5407 +f 5407/5461/5407 5308/5361/5308 5408/5462/5408 +f 5308/5361/5308 5309/5362/5309 5408/5462/5408 +f 5408/5462/5408 5309/5362/5309 5409/5463/5409 +f 5309/5362/5309 5310/5363/5310 5409/5463/5409 +f 5409/5463/5409 5310/5363/5310 5410/5464/5410 +f 5310/5363/5310 5311/5364/5311 5410/5464/5410 +f 5410/5464/5410 5311/5364/5311 5411/5465/5411 +f 5311/5364/5311 5312/5365/5312 5411/5465/5411 +f 5411/5465/5411 5312/5365/5312 5412/5466/5412 +f 5312/5365/5312 5313/5366/5313 5412/5466/5412 +f 5412/5466/5412 5313/5366/5313 5413/5467/5413 +f 5313/5366/5313 5314/5367/5314 5413/5467/5413 +f 5413/5467/5413 5314/5367/5314 5414/5468/5414 +f 5314/5367/5314 5315/5368/5315 5414/5468/5414 +f 5414/5468/5414 5315/5368/5315 5415/5469/5415 +f 5315/5368/5315 5316/5369/5316 5415/5469/5415 +f 5415/5469/5415 5316/5369/5316 5416/5470/5416 +f 5316/5369/5316 5317/5370/5317 5416/5470/5416 +f 5416/5470/5416 5317/5370/5317 5417/5471/5417 +f 5317/5370/5317 5318/5371/5318 5417/5471/5417 +f 5417/5471/5417 5318/5371/5318 5418/5472/5418 +f 5318/5371/5318 5319/5372/5319 5418/5472/5418 +f 5418/5472/5418 5319/5372/5319 5419/5473/5419 +f 5319/5372/5319 5320/5373/5320 5419/5473/5419 +f 5419/5473/5419 5320/5373/5320 5420/5474/5420 +f 5320/5373/5320 5321/5374/5321 5420/5474/5420 +f 5420/5474/5420 5321/5374/5321 5421/5475/5421 +f 5321/5374/5321 5322/5375/5322 5421/5475/5421 +f 5421/5475/5421 5322/5375/5322 5422/5476/5422 +f 5322/5375/5322 5323/5376/5323 5422/5476/5422 +f 5422/5476/5422 5323/5376/5323 5423/5477/5423 +f 5323/5376/5323 5324/5377/5324 5423/5477/5423 +f 5423/5477/5423 5324/5377/5324 5424/5478/5424 +f 5324/5377/5324 5325/5378/5325 5424/5478/5424 +f 5424/5478/5424 5325/5378/5325 5425/5479/5425 +f 5325/5378/5325 5326/5379/5326 5425/5479/5425 +f 5425/5479/5425 5326/5379/5326 5426/5480/5426 +f 5326/5379/5326 5327/5380/5327 5426/5480/5426 +f 5426/5480/5426 5327/5380/5327 5427/5481/5427 +f 5327/5380/5327 5328/5381/5328 5427/5481/5427 +f 5427/5481/5427 5328/5381/5328 5428/5482/5428 +f 5328/5381/5328 5329/5382/5329 5428/5482/5428 +f 5428/5482/5428 5329/5382/5329 5429/5483/5429 +f 5329/5382/5329 5330/5383/5330 5429/5483/5429 +f 5429/5483/5429 5330/5383/5330 5430/5484/5430 +f 5330/5383/5330 5331/5384/5331 5430/5484/5430 +f 5430/5484/5430 5331/5384/5331 5431/5485/5431 +f 5331/5384/5331 5332/5385/5332 5431/5485/5431 +f 5431/5485/5431 5332/5385/5332 5432/5486/5432 +f 5332/5385/5332 5333/5386/5333 5432/5486/5432 +f 5432/5486/5432 5333/5386/5333 5433/5487/5433 +f 5333/5386/5333 5334/5387/5334 5433/5487/5433 +f 5433/5487/5433 5334/5387/5334 5434/5488/5434 +f 5334/5387/5334 5335/5388/5335 5434/5488/5434 +f 5434/5488/5434 5335/5388/5335 5435/5489/5435 +f 5335/5388/5335 5336/5389/5336 5435/5489/5435 +f 5435/5489/5435 5336/5389/5336 5436/5490/5436 +f 5336/5389/5336 5337/5390/5337 5436/5490/5436 +f 5436/5490/5436 5337/5390/5337 5437/5491/5437 +f 5337/5390/5337 5338/5391/5338 5437/5491/5437 +f 5437/5491/5437 5338/5391/5338 5438/5492/5438 +f 5338/5391/5338 5339/5392/5339 5438/5492/5438 +f 5438/5492/5438 5339/5392/5339 5439/5493/5439 +f 5339/5392/5339 5340/5393/5340 5439/5493/5439 +f 5439/5493/5439 5340/5393/5340 5440/5494/5440 +f 5340/5393/5340 5341/5394/5341 5440/5494/5440 +f 5440/5494/5440 5341/5394/5341 5441/5495/5441 +f 5341/5394/5341 5342/5395/5342 5441/5495/5441 +f 5441/5495/5441 5342/5395/5342 5442/5496/5442 +f 5342/5395/5342 5343/5396/5343 5442/5496/5442 +f 5442/5496/5442 5343/5396/5343 5443/5497/5443 +f 5343/5396/5343 5344/5397/5344 5443/5497/5443 +f 5443/5497/5443 5344/5397/5344 5444/5498/5444 +f 5344/5397/5344 5345/5398/5345 5444/5498/5444 +f 5444/5498/5444 5345/5398/5345 5445/5499/5445 +f 5345/5398/5345 5346/5399/5346 5445/5499/5445 +f 5445/5499/5445 5346/5399/5346 5446/5500/5446 +f 5346/5399/5346 5347/5400/5347 5446/5500/5446 +f 5446/5500/5446 5347/5400/5347 5447/5501/5447 +f 5347/5400/5347 5348/5401/5348 5447/5501/5447 +f 5447/5501/5447 5348/5401/5348 5448/5502/5448 +f 5348/5401/5348 5349/5402/5349 5448/5502/5448 +f 5448/5502/5448 5349/5402/5349 5449/5503/5449 +f 5349/5402/5349 5350/5403/5350 5449/5503/5449 +f 5449/5503/5449 5350/5403/5350 5450/5504/5450 +f 5350/5403/5350 5351/5404/5351 5450/5504/5450 +f 5450/5504/5450 5351/5404/5351 5451/5505/5451 +f 5351/5404/5351 5352/5405/5352 5451/5505/5451 +f 5451/5505/5451 5352/5405/5352 5452/5506/5452 +f 5352/5405/5352 5353/5406/5353 5452/5506/5452 +f 5452/5506/5452 5353/5406/5353 5453/5507/5453 +f 5353/5406/5353 5354/5407/5354 5453/5507/5453 +f 5453/5507/5453 5354/5407/5354 5454/5508/5454 +f 5354/5407/5354 5355/5408/5355 5454/5508/5454 +f 5454/5508/5454 5355/5408/5355 5455/5509/5455 +f 5355/5408/5355 5356/5409/5356 5455/5509/5455 +f 5455/5509/5455 5356/5409/5356 5456/5510/5456 +f 5356/5409/5356 5357/5410/5357 5456/5510/5456 +f 5456/5510/5456 5357/5410/5357 5457/5511/5457 +f 5357/5410/5357 5358/5411/5358 5457/5511/5457 +f 5457/5511/5457 5358/5411/5358 5458/5512/5458 +f 5358/5411/5358 5359/5412/5359 5458/5512/5458 +f 5458/5512/5458 5359/5412/5359 5459/5513/5459 +f 5359/5412/5359 5360/5413/5360 5459/5513/5459 +f 5459/5513/5459 5360/5413/5360 5460/5514/5460 +f 5360/5413/5360 5361/5414/5361 5460/5514/5460 +f 5460/5514/5460 5361/5414/5361 5461/5515/5461 +f 5361/5414/5361 5362/5415/5362 5461/5515/5461 +f 5461/5515/5461 5362/5415/5362 5462/5516/5462 +f 5362/5415/5362 5363/5416/5363 5462/5516/5462 +f 5462/5516/5462 5363/5416/5363 5463/5517/5463 +f 5363/5416/5363 5364/5417/5364 5463/5517/5463 +f 5463/5517/5463 5364/5417/5364 5464/5518/5464 +f 5364/5417/5364 5365/5418/5365 5464/5518/5464 +f 5464/5518/5464 5365/5418/5365 5465/5519/5465 +f 5365/5418/5365 5366/5419/5366 5465/5519/5465 +f 5465/5519/5465 5366/5419/5366 5466/5520/5466 +f 5366/5419/5366 5367/5420/5367 5466/5520/5466 +f 5466/5520/5466 5367/5420/5367 5467/5521/5467 +f 5367/5420/5367 5368/5421/5368 5467/5521/5467 +f 5467/5521/5467 5368/5421/5368 5468/5522/5468 +f 5368/5421/5368 5369/5422/5369 5468/5522/5468 +f 5468/5522/5468 5369/5422/5369 5469/5523/5469 +f 5369/5422/5369 5370/5423/5370 5469/5523/5469 +f 5469/5523/5469 5370/5423/5370 5470/5524/5470 +f 5370/5423/5370 5371/5424/5371 5470/5524/5470 +f 5470/5524/5470 5371/5424/5371 5471/5525/5471 +f 5371/5424/5371 5372/5425/5372 5471/5525/5471 +f 5471/5525/5471 5372/5425/5372 5472/5526/5472 +f 5372/5425/5372 5373/5426/5373 5472/5526/5472 +f 5472/5526/5472 5373/5426/5373 5473/5527/5473 +f 5373/5426/5373 5374/5427/5374 5473/5527/5473 +f 5473/5527/5473 5374/5427/5374 5474/5528/5474 +f 5374/5427/5374 5375/5428/5375 5474/5528/5474 +f 5474/5528/5474 5375/5428/5375 5475/5529/5475 +f 5375/5428/5375 5376/5429/5376 5475/5529/5475 +f 5475/5529/5475 5376/5429/5376 5476/5530/5476 +f 5376/5429/5376 5377/5430/5377 5476/5530/5476 +f 5476/5530/5476 5377/5430/5377 5477/5531/5477 +f 5377/5430/5377 5378/5431/5378 5477/5531/5477 +f 5477/5531/5477 5378/5431/5378 5478/5532/5478 +f 5378/5431/5378 5379/5432/5379 5478/5532/5478 +f 5478/5532/5478 5379/5432/5379 5479/5533/5479 +f 5379/5432/5379 5380/5433/5380 5479/5533/5479 +f 5479/5533/5479 5380/5433/5380 5480/5534/5480 +f 5380/5433/5380 5381/5434/5381 5480/5534/5480 +f 5480/5534/5480 5381/5434/5381 5481/5535/5481 +f 5381/5434/5381 5382/5435/5382 5481/5535/5481 +f 5481/5535/5481 5382/5435/5382 5482/5536/5482 +f 5382/5435/5382 5383/5436/5383 5482/5536/5482 +f 5482/5536/5482 5383/5436/5383 5483/5537/5483 +f 5383/5436/5383 5384/5437/5384 5483/5537/5483 +f 5483/5537/5483 5384/5437/5384 5484/5538/5484 +f 5384/5437/5384 5385/5438/5385 5484/5538/5484 +f 5484/5538/5484 5385/5438/5385 5485/5539/5485 +f 5385/5438/5385 5386/5439/5386 5485/5539/5485 +f 5485/5539/5485 5386/5439/5386 5486/5540/5486 +f 5386/5439/5386 5387/5440/5387 5486/5540/5486 +f 5486/5540/5486 5387/5440/5387 5487/5541/5487 +f 5387/5440/5387 5388/5441/5388 5487/5541/5487 +f 5487/5541/5487 5388/5441/5388 5488/5542/5488 +f 5388/5441/5388 5389/5442/5389 5488/5542/5488 +f 5488/5542/5488 5389/5442/5389 5489/5543/5489 +f 5389/5442/5389 5390/5443/5390 5489/5543/5489 +f 5489/5543/5489 5390/5443/5390 5490/5544/5490 +f 5390/5443/5390 5391/5444/5391 5490/5544/5490 +f 5490/5544/5490 5391/5444/5391 5491/5545/5491 +f 5391/5444/5391 5392/5445/5392 5491/5545/5491 +f 5491/5545/5491 5392/5445/5392 5492/5546/5492 +f 5392/5445/5392 5393/5446/5393 5492/5546/5492 +f 5492/5546/5492 5393/5446/5393 5493/5547/5493 +f 5393/5446/5393 5394/5447/5394 5493/5547/5493 +f 5493/5547/5493 5394/5447/5394 5494/5548/5494 +f 5394/5447/5394 5395/5448/5395 5494/5548/5494 +f 5494/5548/5494 5395/5448/5395 5495/5549/5495 +f 5395/5448/5395 5396/5449/5396 5495/5549/5495 +f 5495/5549/5495 5396/5449/5396 5496/5550/5496 +f 5396/5449/5396 5397/5450/5397 5496/5550/5496 +f 5496/5550/5496 5397/5450/5397 5497/5551/5497 +f 5397/5450/5397 5398/5451/5398 5497/5551/5497 +f 5497/5551/5497 5398/5451/5398 5498/5552/5498 +f 5398/5451/5398 5399/5452/5399 5498/5552/5498 +f 5498/5552/5498 5399/5452/5399 5499/5553/5499 +f 5399/5452/5399 5400/5453/5400 5499/5553/5499 +f 5499/5553/5499 5400/5453/5400 5500/5554/5500 +f 5400/5453/5400 5301/5454/5301 5500/5554/5500 +f 5500/5554/5500 5301/5454/5301 5401/5555/5401 +f 5401/5455/5401 5402/5456/5402 5501/5556/5501 +f 5501/5556/5501 5402/5456/5402 5502/5557/5502 +f 5402/5456/5402 5403/5457/5403 5502/5557/5502 +f 5502/5557/5502 5403/5457/5403 5503/5558/5503 +f 5403/5457/5403 5404/5458/5404 5503/5558/5503 +f 5503/5558/5503 5404/5458/5404 5504/5559/5504 +f 5404/5458/5404 5405/5459/5405 5504/5559/5504 +f 5504/5559/5504 5405/5459/5405 5505/5560/5505 +f 5405/5459/5405 5406/5460/5406 5505/5560/5505 +f 5505/5560/5505 5406/5460/5406 5506/5561/5506 +f 5406/5460/5406 5407/5461/5407 5506/5561/5506 +f 5506/5561/5506 5407/5461/5407 5507/5562/5507 +f 5407/5461/5407 5408/5462/5408 5507/5562/5507 +f 5507/5562/5507 5408/5462/5408 5508/5563/5508 +f 5408/5462/5408 5409/5463/5409 5508/5563/5508 +f 5508/5563/5508 5409/5463/5409 5509/5564/5509 +f 5409/5463/5409 5410/5464/5410 5509/5564/5509 +f 5509/5564/5509 5410/5464/5410 5510/5565/5510 +f 5410/5464/5410 5411/5465/5411 5510/5565/5510 +f 5510/5565/5510 5411/5465/5411 5511/5566/5511 +f 5411/5465/5411 5412/5466/5412 5511/5566/5511 +f 5511/5566/5511 5412/5466/5412 5512/5567/5512 +f 5412/5466/5412 5413/5467/5413 5512/5567/5512 +f 5512/5567/5512 5413/5467/5413 5513/5568/5513 +f 5413/5467/5413 5414/5468/5414 5513/5568/5513 +f 5513/5568/5513 5414/5468/5414 5514/5569/5514 +f 5414/5468/5414 5415/5469/5415 5514/5569/5514 +f 5514/5569/5514 5415/5469/5415 5515/5570/5515 +f 5415/5469/5415 5416/5470/5416 5515/5570/5515 +f 5515/5570/5515 5416/5470/5416 5516/5571/5516 +f 5416/5470/5416 5417/5471/5417 5516/5571/5516 +f 5516/5571/5516 5417/5471/5417 5517/5572/5517 +f 5417/5471/5417 5418/5472/5418 5517/5572/5517 +f 5517/5572/5517 5418/5472/5418 5518/5573/5518 +f 5418/5472/5418 5419/5473/5419 5518/5573/5518 +f 5518/5573/5518 5419/5473/5419 5519/5574/5519 +f 5419/5473/5419 5420/5474/5420 5519/5574/5519 +f 5519/5574/5519 5420/5474/5420 5520/5575/5520 +f 5420/5474/5420 5421/5475/5421 5520/5575/5520 +f 5520/5575/5520 5421/5475/5421 5521/5576/5521 +f 5421/5475/5421 5422/5476/5422 5521/5576/5521 +f 5521/5576/5521 5422/5476/5422 5522/5577/5522 +f 5422/5476/5422 5423/5477/5423 5522/5577/5522 +f 5522/5577/5522 5423/5477/5423 5523/5578/5523 +f 5423/5477/5423 5424/5478/5424 5523/5578/5523 +f 5523/5578/5523 5424/5478/5424 5524/5579/5524 +f 5424/5478/5424 5425/5479/5425 5524/5579/5524 +f 5524/5579/5524 5425/5479/5425 5525/5580/5525 +f 5425/5479/5425 5426/5480/5426 5525/5580/5525 +f 5525/5580/5525 5426/5480/5426 5526/5581/5526 +f 5426/5480/5426 5427/5481/5427 5526/5581/5526 +f 5526/5581/5526 5427/5481/5427 5527/5582/5527 +f 5427/5481/5427 5428/5482/5428 5527/5582/5527 +f 5527/5582/5527 5428/5482/5428 5528/5583/5528 +f 5428/5482/5428 5429/5483/5429 5528/5583/5528 +f 5528/5583/5528 5429/5483/5429 5529/5584/5529 +f 5429/5483/5429 5430/5484/5430 5529/5584/5529 +f 5529/5584/5529 5430/5484/5430 5530/5585/5530 +f 5430/5484/5430 5431/5485/5431 5530/5585/5530 +f 5530/5585/5530 5431/5485/5431 5531/5586/5531 +f 5431/5485/5431 5432/5486/5432 5531/5586/5531 +f 5531/5586/5531 5432/5486/5432 5532/5587/5532 +f 5432/5486/5432 5433/5487/5433 5532/5587/5532 +f 5532/5587/5532 5433/5487/5433 5533/5588/5533 +f 5433/5487/5433 5434/5488/5434 5533/5588/5533 +f 5533/5588/5533 5434/5488/5434 5534/5589/5534 +f 5434/5488/5434 5435/5489/5435 5534/5589/5534 +f 5534/5589/5534 5435/5489/5435 5535/5590/5535 +f 5435/5489/5435 5436/5490/5436 5535/5590/5535 +f 5535/5590/5535 5436/5490/5436 5536/5591/5536 +f 5436/5490/5436 5437/5491/5437 5536/5591/5536 +f 5536/5591/5536 5437/5491/5437 5537/5592/5537 +f 5437/5491/5437 5438/5492/5438 5537/5592/5537 +f 5537/5592/5537 5438/5492/5438 5538/5593/5538 +f 5438/5492/5438 5439/5493/5439 5538/5593/5538 +f 5538/5593/5538 5439/5493/5439 5539/5594/5539 +f 5439/5493/5439 5440/5494/5440 5539/5594/5539 +f 5539/5594/5539 5440/5494/5440 5540/5595/5540 +f 5440/5494/5440 5441/5495/5441 5540/5595/5540 +f 5540/5595/5540 5441/5495/5441 5541/5596/5541 +f 5441/5495/5441 5442/5496/5442 5541/5596/5541 +f 5541/5596/5541 5442/5496/5442 5542/5597/5542 +f 5442/5496/5442 5443/5497/5443 5542/5597/5542 +f 5542/5597/5542 5443/5497/5443 5543/5598/5543 +f 5443/5497/5443 5444/5498/5444 5543/5598/5543 +f 5543/5598/5543 5444/5498/5444 5544/5599/5544 +f 5444/5498/5444 5445/5499/5445 5544/5599/5544 +f 5544/5599/5544 5445/5499/5445 5545/5600/5545 +f 5445/5499/5445 5446/5500/5446 5545/5600/5545 +f 5545/5600/5545 5446/5500/5446 5546/5601/5546 +f 5446/5500/5446 5447/5501/5447 5546/5601/5546 +f 5546/5601/5546 5447/5501/5447 5547/5602/5547 +f 5447/5501/5447 5448/5502/5448 5547/5602/5547 +f 5547/5602/5547 5448/5502/5448 5548/5603/5548 +f 5448/5502/5448 5449/5503/5449 5548/5603/5548 +f 5548/5603/5548 5449/5503/5449 5549/5604/5549 +f 5449/5503/5449 5450/5504/5450 5549/5604/5549 +f 5549/5604/5549 5450/5504/5450 5550/5605/5550 +f 5450/5504/5450 5451/5505/5451 5550/5605/5550 +f 5550/5605/5550 5451/5505/5451 5551/5606/5551 +f 5451/5505/5451 5452/5506/5452 5551/5606/5551 +f 5551/5606/5551 5452/5506/5452 5552/5607/5552 +f 5452/5506/5452 5453/5507/5453 5552/5607/5552 +f 5552/5607/5552 5453/5507/5453 5553/5608/5553 +f 5453/5507/5453 5454/5508/5454 5553/5608/5553 +f 5553/5608/5553 5454/5508/5454 5554/5609/5554 +f 5454/5508/5454 5455/5509/5455 5554/5609/5554 +f 5554/5609/5554 5455/5509/5455 5555/5610/5555 +f 5455/5509/5455 5456/5510/5456 5555/5610/5555 +f 5555/5610/5555 5456/5510/5456 5556/5611/5556 +f 5456/5510/5456 5457/5511/5457 5556/5611/5556 +f 5556/5611/5556 5457/5511/5457 5557/5612/5557 +f 5457/5511/5457 5458/5512/5458 5557/5612/5557 +f 5557/5612/5557 5458/5512/5458 5558/5613/5558 +f 5458/5512/5458 5459/5513/5459 5558/5613/5558 +f 5558/5613/5558 5459/5513/5459 5559/5614/5559 +f 5459/5513/5459 5460/5514/5460 5559/5614/5559 +f 5559/5614/5559 5460/5514/5460 5560/5615/5560 +f 5460/5514/5460 5461/5515/5461 5560/5615/5560 +f 5560/5615/5560 5461/5515/5461 5561/5616/5561 +f 5461/5515/5461 5462/5516/5462 5561/5616/5561 +f 5561/5616/5561 5462/5516/5462 5562/5617/5562 +f 5462/5516/5462 5463/5517/5463 5562/5617/5562 +f 5562/5617/5562 5463/5517/5463 5563/5618/5563 +f 5463/5517/5463 5464/5518/5464 5563/5618/5563 +f 5563/5618/5563 5464/5518/5464 5564/5619/5564 +f 5464/5518/5464 5465/5519/5465 5564/5619/5564 +f 5564/5619/5564 5465/5519/5465 5565/5620/5565 +f 5465/5519/5465 5466/5520/5466 5565/5620/5565 +f 5565/5620/5565 5466/5520/5466 5566/5621/5566 +f 5466/5520/5466 5467/5521/5467 5566/5621/5566 +f 5566/5621/5566 5467/5521/5467 5567/5622/5567 +f 5467/5521/5467 5468/5522/5468 5567/5622/5567 +f 5567/5622/5567 5468/5522/5468 5568/5623/5568 +f 5468/5522/5468 5469/5523/5469 5568/5623/5568 +f 5568/5623/5568 5469/5523/5469 5569/5624/5569 +f 5469/5523/5469 5470/5524/5470 5569/5624/5569 +f 5569/5624/5569 5470/5524/5470 5570/5625/5570 +f 5470/5524/5470 5471/5525/5471 5570/5625/5570 +f 5570/5625/5570 5471/5525/5471 5571/5626/5571 +f 5471/5525/5471 5472/5526/5472 5571/5626/5571 +f 5571/5626/5571 5472/5526/5472 5572/5627/5572 +f 5472/5526/5472 5473/5527/5473 5572/5627/5572 +f 5572/5627/5572 5473/5527/5473 5573/5628/5573 +f 5473/5527/5473 5474/5528/5474 5573/5628/5573 +f 5573/5628/5573 5474/5528/5474 5574/5629/5574 +f 5474/5528/5474 5475/5529/5475 5574/5629/5574 +f 5574/5629/5574 5475/5529/5475 5575/5630/5575 +f 5475/5529/5475 5476/5530/5476 5575/5630/5575 +f 5575/5630/5575 5476/5530/5476 5576/5631/5576 +f 5476/5530/5476 5477/5531/5477 5576/5631/5576 +f 5576/5631/5576 5477/5531/5477 5577/5632/5577 +f 5477/5531/5477 5478/5532/5478 5577/5632/5577 +f 5577/5632/5577 5478/5532/5478 5578/5633/5578 +f 5478/5532/5478 5479/5533/5479 5578/5633/5578 +f 5578/5633/5578 5479/5533/5479 5579/5634/5579 +f 5479/5533/5479 5480/5534/5480 5579/5634/5579 +f 5579/5634/5579 5480/5534/5480 5580/5635/5580 +f 5480/5534/5480 5481/5535/5481 5580/5635/5580 +f 5580/5635/5580 5481/5535/5481 5581/5636/5581 +f 5481/5535/5481 5482/5536/5482 5581/5636/5581 +f 5581/5636/5581 5482/5536/5482 5582/5637/5582 +f 5482/5536/5482 5483/5537/5483 5582/5637/5582 +f 5582/5637/5582 5483/5537/5483 5583/5638/5583 +f 5483/5537/5483 5484/5538/5484 5583/5638/5583 +f 5583/5638/5583 5484/5538/5484 5584/5639/5584 +f 5484/5538/5484 5485/5539/5485 5584/5639/5584 +f 5584/5639/5584 5485/5539/5485 5585/5640/5585 +f 5485/5539/5485 5486/5540/5486 5585/5640/5585 +f 5585/5640/5585 5486/5540/5486 5586/5641/5586 +f 5486/5540/5486 5487/5541/5487 5586/5641/5586 +f 5586/5641/5586 5487/5541/5487 5587/5642/5587 +f 5487/5541/5487 5488/5542/5488 5587/5642/5587 +f 5587/5642/5587 5488/5542/5488 5588/5643/5588 +f 5488/5542/5488 5489/5543/5489 5588/5643/5588 +f 5588/5643/5588 5489/5543/5489 5589/5644/5589 +f 5489/5543/5489 5490/5544/5490 5589/5644/5589 +f 5589/5644/5589 5490/5544/5490 5590/5645/5590 +f 5490/5544/5490 5491/5545/5491 5590/5645/5590 +f 5590/5645/5590 5491/5545/5491 5591/5646/5591 +f 5491/5545/5491 5492/5546/5492 5591/5646/5591 +f 5591/5646/5591 5492/5546/5492 5592/5647/5592 +f 5492/5546/5492 5493/5547/5493 5592/5647/5592 +f 5592/5647/5592 5493/5547/5493 5593/5648/5593 +f 5493/5547/5493 5494/5548/5494 5593/5648/5593 +f 5593/5648/5593 5494/5548/5494 5594/5649/5594 +f 5494/5548/5494 5495/5549/5495 5594/5649/5594 +f 5594/5649/5594 5495/5549/5495 5595/5650/5595 +f 5495/5549/5495 5496/5550/5496 5595/5650/5595 +f 5595/5650/5595 5496/5550/5496 5596/5651/5596 +f 5496/5550/5496 5497/5551/5497 5596/5651/5596 +f 5596/5651/5596 5497/5551/5497 5597/5652/5597 +f 5497/5551/5497 5498/5552/5498 5597/5652/5597 +f 5597/5652/5597 5498/5552/5498 5598/5653/5598 +f 5498/5552/5498 5499/5553/5499 5598/5653/5598 +f 5598/5653/5598 5499/5553/5499 5599/5654/5599 +f 5499/5553/5499 5500/5554/5500 5599/5654/5599 +f 5599/5654/5599 5500/5554/5500 5600/5655/5600 +f 5500/5554/5500 5401/5555/5401 5600/5655/5600 +f 5600/5655/5600 5401/5555/5401 5501/5656/5501 +f 5501/5556/5501 5502/5557/5502 5601/5657/5601 +f 5601/5657/5601 5502/5557/5502 5602/5658/5602 +f 5502/5557/5502 5503/5558/5503 5602/5658/5602 +f 5602/5658/5602 5503/5558/5503 5603/5659/5603 +f 5503/5558/5503 5504/5559/5504 5603/5659/5603 +f 5603/5659/5603 5504/5559/5504 5604/5660/5604 +f 5504/5559/5504 5505/5560/5505 5604/5660/5604 +f 5604/5660/5604 5505/5560/5505 5605/5661/5605 +f 5505/5560/5505 5506/5561/5506 5605/5661/5605 +f 5605/5661/5605 5506/5561/5506 5606/5662/5606 +f 5506/5561/5506 5507/5562/5507 5606/5662/5606 +f 5606/5662/5606 5507/5562/5507 5607/5663/5607 +f 5507/5562/5507 5508/5563/5508 5607/5663/5607 +f 5607/5663/5607 5508/5563/5508 5608/5664/5608 +f 5508/5563/5508 5509/5564/5509 5608/5664/5608 +f 5608/5664/5608 5509/5564/5509 5609/5665/5609 +f 5509/5564/5509 5510/5565/5510 5609/5665/5609 +f 5609/5665/5609 5510/5565/5510 5610/5666/5610 +f 5510/5565/5510 5511/5566/5511 5610/5666/5610 +f 5610/5666/5610 5511/5566/5511 5611/5667/5611 +f 5511/5566/5511 5512/5567/5512 5611/5667/5611 +f 5611/5667/5611 5512/5567/5512 5612/5668/5612 +f 5512/5567/5512 5513/5568/5513 5612/5668/5612 +f 5612/5668/5612 5513/5568/5513 5613/5669/5613 +f 5513/5568/5513 5514/5569/5514 5613/5669/5613 +f 5613/5669/5613 5514/5569/5514 5614/5670/5614 +f 5514/5569/5514 5515/5570/5515 5614/5670/5614 +f 5614/5670/5614 5515/5570/5515 5615/5671/5615 +f 5515/5570/5515 5516/5571/5516 5615/5671/5615 +f 5615/5671/5615 5516/5571/5516 5616/5672/5616 +f 5516/5571/5516 5517/5572/5517 5616/5672/5616 +f 5616/5672/5616 5517/5572/5517 5617/5673/5617 +f 5517/5572/5517 5518/5573/5518 5617/5673/5617 +f 5617/5673/5617 5518/5573/5518 5618/5674/5618 +f 5518/5573/5518 5519/5574/5519 5618/5674/5618 +f 5618/5674/5618 5519/5574/5519 5619/5675/5619 +f 5519/5574/5519 5520/5575/5520 5619/5675/5619 +f 5619/5675/5619 5520/5575/5520 5620/5676/5620 +f 5520/5575/5520 5521/5576/5521 5620/5676/5620 +f 5620/5676/5620 5521/5576/5521 5621/5677/5621 +f 5521/5576/5521 5522/5577/5522 5621/5677/5621 +f 5621/5677/5621 5522/5577/5522 5622/5678/5622 +f 5522/5577/5522 5523/5578/5523 5622/5678/5622 +f 5622/5678/5622 5523/5578/5523 5623/5679/5623 +f 5523/5578/5523 5524/5579/5524 5623/5679/5623 +f 5623/5679/5623 5524/5579/5524 5624/5680/5624 +f 5524/5579/5524 5525/5580/5525 5624/5680/5624 +f 5624/5680/5624 5525/5580/5525 5625/5681/5625 +f 5525/5580/5525 5526/5581/5526 5625/5681/5625 +f 5625/5681/5625 5526/5581/5526 5626/5682/5626 +f 5526/5581/5526 5527/5582/5527 5626/5682/5626 +f 5626/5682/5626 5527/5582/5527 5627/5683/5627 +f 5527/5582/5527 5528/5583/5528 5627/5683/5627 +f 5627/5683/5627 5528/5583/5528 5628/5684/5628 +f 5528/5583/5528 5529/5584/5529 5628/5684/5628 +f 5628/5684/5628 5529/5584/5529 5629/5685/5629 +f 5529/5584/5529 5530/5585/5530 5629/5685/5629 +f 5629/5685/5629 5530/5585/5530 5630/5686/5630 +f 5530/5585/5530 5531/5586/5531 5630/5686/5630 +f 5630/5686/5630 5531/5586/5531 5631/5687/5631 +f 5531/5586/5531 5532/5587/5532 5631/5687/5631 +f 5631/5687/5631 5532/5587/5532 5632/5688/5632 +f 5532/5587/5532 5533/5588/5533 5632/5688/5632 +f 5632/5688/5632 5533/5588/5533 5633/5689/5633 +f 5533/5588/5533 5534/5589/5534 5633/5689/5633 +f 5633/5689/5633 5534/5589/5534 5634/5690/5634 +f 5534/5589/5534 5535/5590/5535 5634/5690/5634 +f 5634/5690/5634 5535/5590/5535 5635/5691/5635 +f 5535/5590/5535 5536/5591/5536 5635/5691/5635 +f 5635/5691/5635 5536/5591/5536 5636/5692/5636 +f 5536/5591/5536 5537/5592/5537 5636/5692/5636 +f 5636/5692/5636 5537/5592/5537 5637/5693/5637 +f 5537/5592/5537 5538/5593/5538 5637/5693/5637 +f 5637/5693/5637 5538/5593/5538 5638/5694/5638 +f 5538/5593/5538 5539/5594/5539 5638/5694/5638 +f 5638/5694/5638 5539/5594/5539 5639/5695/5639 +f 5539/5594/5539 5540/5595/5540 5639/5695/5639 +f 5639/5695/5639 5540/5595/5540 5640/5696/5640 +f 5540/5595/5540 5541/5596/5541 5640/5696/5640 +f 5640/5696/5640 5541/5596/5541 5641/5697/5641 +f 5541/5596/5541 5542/5597/5542 5641/5697/5641 +f 5641/5697/5641 5542/5597/5542 5642/5698/5642 +f 5542/5597/5542 5543/5598/5543 5642/5698/5642 +f 5642/5698/5642 5543/5598/5543 5643/5699/5643 +f 5543/5598/5543 5544/5599/5544 5643/5699/5643 +f 5643/5699/5643 5544/5599/5544 5644/5700/5644 +f 5544/5599/5544 5545/5600/5545 5644/5700/5644 +f 5644/5700/5644 5545/5600/5545 5645/5701/5645 +f 5545/5600/5545 5546/5601/5546 5645/5701/5645 +f 5645/5701/5645 5546/5601/5546 5646/5702/5646 +f 5546/5601/5546 5547/5602/5547 5646/5702/5646 +f 5646/5702/5646 5547/5602/5547 5647/5703/5647 +f 5547/5602/5547 5548/5603/5548 5647/5703/5647 +f 5647/5703/5647 5548/5603/5548 5648/5704/5648 +f 5548/5603/5548 5549/5604/5549 5648/5704/5648 +f 5648/5704/5648 5549/5604/5549 5649/5705/5649 +f 5549/5604/5549 5550/5605/5550 5649/5705/5649 +f 5649/5705/5649 5550/5605/5550 5650/5706/5650 +f 5550/5605/5550 5551/5606/5551 5650/5706/5650 +f 5650/5706/5650 5551/5606/5551 5651/5707/5651 +f 5551/5606/5551 5552/5607/5552 5651/5707/5651 +f 5651/5707/5651 5552/5607/5552 5652/5708/5652 +f 5552/5607/5552 5553/5608/5553 5652/5708/5652 +f 5652/5708/5652 5553/5608/5553 5653/5709/5653 +f 5553/5608/5553 5554/5609/5554 5653/5709/5653 +f 5653/5709/5653 5554/5609/5554 5654/5710/5654 +f 5554/5609/5554 5555/5610/5555 5654/5710/5654 +f 5654/5710/5654 5555/5610/5555 5655/5711/5655 +f 5555/5610/5555 5556/5611/5556 5655/5711/5655 +f 5655/5711/5655 5556/5611/5556 5656/5712/5656 +f 5556/5611/5556 5557/5612/5557 5656/5712/5656 +f 5656/5712/5656 5557/5612/5557 5657/5713/5657 +f 5557/5612/5557 5558/5613/5558 5657/5713/5657 +f 5657/5713/5657 5558/5613/5558 5658/5714/5658 +f 5558/5613/5558 5559/5614/5559 5658/5714/5658 +f 5658/5714/5658 5559/5614/5559 5659/5715/5659 +f 5559/5614/5559 5560/5615/5560 5659/5715/5659 +f 5659/5715/5659 5560/5615/5560 5660/5716/5660 +f 5560/5615/5560 5561/5616/5561 5660/5716/5660 +f 5660/5716/5660 5561/5616/5561 5661/5717/5661 +f 5561/5616/5561 5562/5617/5562 5661/5717/5661 +f 5661/5717/5661 5562/5617/5562 5662/5718/5662 +f 5562/5617/5562 5563/5618/5563 5662/5718/5662 +f 5662/5718/5662 5563/5618/5563 5663/5719/5663 +f 5563/5618/5563 5564/5619/5564 5663/5719/5663 +f 5663/5719/5663 5564/5619/5564 5664/5720/5664 +f 5564/5619/5564 5565/5620/5565 5664/5720/5664 +f 5664/5720/5664 5565/5620/5565 5665/5721/5665 +f 5565/5620/5565 5566/5621/5566 5665/5721/5665 +f 5665/5721/5665 5566/5621/5566 5666/5722/5666 +f 5566/5621/5566 5567/5622/5567 5666/5722/5666 +f 5666/5722/5666 5567/5622/5567 5667/5723/5667 +f 5567/5622/5567 5568/5623/5568 5667/5723/5667 +f 5667/5723/5667 5568/5623/5568 5668/5724/5668 +f 5568/5623/5568 5569/5624/5569 5668/5724/5668 +f 5668/5724/5668 5569/5624/5569 5669/5725/5669 +f 5569/5624/5569 5570/5625/5570 5669/5725/5669 +f 5669/5725/5669 5570/5625/5570 5670/5726/5670 +f 5570/5625/5570 5571/5626/5571 5670/5726/5670 +f 5670/5726/5670 5571/5626/5571 5671/5727/5671 +f 5571/5626/5571 5572/5627/5572 5671/5727/5671 +f 5671/5727/5671 5572/5627/5572 5672/5728/5672 +f 5572/5627/5572 5573/5628/5573 5672/5728/5672 +f 5672/5728/5672 5573/5628/5573 5673/5729/5673 +f 5573/5628/5573 5574/5629/5574 5673/5729/5673 +f 5673/5729/5673 5574/5629/5574 5674/5730/5674 +f 5574/5629/5574 5575/5630/5575 5674/5730/5674 +f 5674/5730/5674 5575/5630/5575 5675/5731/5675 +f 5575/5630/5575 5576/5631/5576 5675/5731/5675 +f 5675/5731/5675 5576/5631/5576 5676/5732/5676 +f 5576/5631/5576 5577/5632/5577 5676/5732/5676 +f 5676/5732/5676 5577/5632/5577 5677/5733/5677 +f 5577/5632/5577 5578/5633/5578 5677/5733/5677 +f 5677/5733/5677 5578/5633/5578 5678/5734/5678 +f 5578/5633/5578 5579/5634/5579 5678/5734/5678 +f 5678/5734/5678 5579/5634/5579 5679/5735/5679 +f 5579/5634/5579 5580/5635/5580 5679/5735/5679 +f 5679/5735/5679 5580/5635/5580 5680/5736/5680 +f 5580/5635/5580 5581/5636/5581 5680/5736/5680 +f 5680/5736/5680 5581/5636/5581 5681/5737/5681 +f 5581/5636/5581 5582/5637/5582 5681/5737/5681 +f 5681/5737/5681 5582/5637/5582 5682/5738/5682 +f 5582/5637/5582 5583/5638/5583 5682/5738/5682 +f 5682/5738/5682 5583/5638/5583 5683/5739/5683 +f 5583/5638/5583 5584/5639/5584 5683/5739/5683 +f 5683/5739/5683 5584/5639/5584 5684/5740/5684 +f 5584/5639/5584 5585/5640/5585 5684/5740/5684 +f 5684/5740/5684 5585/5640/5585 5685/5741/5685 +f 5585/5640/5585 5586/5641/5586 5685/5741/5685 +f 5685/5741/5685 5586/5641/5586 5686/5742/5686 +f 5586/5641/5586 5587/5642/5587 5686/5742/5686 +f 5686/5742/5686 5587/5642/5587 5687/5743/5687 +f 5587/5642/5587 5588/5643/5588 5687/5743/5687 +f 5687/5743/5687 5588/5643/5588 5688/5744/5688 +f 5588/5643/5588 5589/5644/5589 5688/5744/5688 +f 5688/5744/5688 5589/5644/5589 5689/5745/5689 +f 5589/5644/5589 5590/5645/5590 5689/5745/5689 +f 5689/5745/5689 5590/5645/5590 5690/5746/5690 +f 5590/5645/5590 5591/5646/5591 5690/5746/5690 +f 5690/5746/5690 5591/5646/5591 5691/5747/5691 +f 5591/5646/5591 5592/5647/5592 5691/5747/5691 +f 5691/5747/5691 5592/5647/5592 5692/5748/5692 +f 5592/5647/5592 5593/5648/5593 5692/5748/5692 +f 5692/5748/5692 5593/5648/5593 5693/5749/5693 +f 5593/5648/5593 5594/5649/5594 5693/5749/5693 +f 5693/5749/5693 5594/5649/5594 5694/5750/5694 +f 5594/5649/5594 5595/5650/5595 5694/5750/5694 +f 5694/5750/5694 5595/5650/5595 5695/5751/5695 +f 5595/5650/5595 5596/5651/5596 5695/5751/5695 +f 5695/5751/5695 5596/5651/5596 5696/5752/5696 +f 5596/5651/5596 5597/5652/5597 5696/5752/5696 +f 5696/5752/5696 5597/5652/5597 5697/5753/5697 +f 5597/5652/5597 5598/5653/5598 5697/5753/5697 +f 5697/5753/5697 5598/5653/5598 5698/5754/5698 +f 5598/5653/5598 5599/5654/5599 5698/5754/5698 +f 5698/5754/5698 5599/5654/5599 5699/5755/5699 +f 5599/5654/5599 5600/5655/5600 5699/5755/5699 +f 5699/5755/5699 5600/5655/5600 5700/5756/5700 +f 5600/5655/5600 5501/5656/5501 5700/5756/5700 +f 5700/5756/5700 5501/5656/5501 5601/5757/5601 +f 5601/5657/5601 5602/5658/5602 5701/5758/5701 +f 5701/5758/5701 5602/5658/5602 5702/5759/5702 +f 5602/5658/5602 5603/5659/5603 5702/5759/5702 +f 5702/5759/5702 5603/5659/5603 5703/5760/5703 +f 5603/5659/5603 5604/5660/5604 5703/5760/5703 +f 5703/5760/5703 5604/5660/5604 5704/5761/5704 +f 5604/5660/5604 5605/5661/5605 5704/5761/5704 +f 5704/5761/5704 5605/5661/5605 5705/5762/5705 +f 5605/5661/5605 5606/5662/5606 5705/5762/5705 +f 5705/5762/5705 5606/5662/5606 5706/5763/5706 +f 5606/5662/5606 5607/5663/5607 5706/5763/5706 +f 5706/5763/5706 5607/5663/5607 5707/5764/5707 +f 5607/5663/5607 5608/5664/5608 5707/5764/5707 +f 5707/5764/5707 5608/5664/5608 5708/5765/5708 +f 5608/5664/5608 5609/5665/5609 5708/5765/5708 +f 5708/5765/5708 5609/5665/5609 5709/5766/5709 +f 5609/5665/5609 5610/5666/5610 5709/5766/5709 +f 5709/5766/5709 5610/5666/5610 5710/5767/5710 +f 5610/5666/5610 5611/5667/5611 5710/5767/5710 +f 5710/5767/5710 5611/5667/5611 5711/5768/5711 +f 5611/5667/5611 5612/5668/5612 5711/5768/5711 +f 5711/5768/5711 5612/5668/5612 5712/5769/5712 +f 5612/5668/5612 5613/5669/5613 5712/5769/5712 +f 5712/5769/5712 5613/5669/5613 5713/5770/5713 +f 5613/5669/5613 5614/5670/5614 5713/5770/5713 +f 5713/5770/5713 5614/5670/5614 5714/5771/5714 +f 5614/5670/5614 5615/5671/5615 5714/5771/5714 +f 5714/5771/5714 5615/5671/5615 5715/5772/5715 +f 5615/5671/5615 5616/5672/5616 5715/5772/5715 +f 5715/5772/5715 5616/5672/5616 5716/5773/5716 +f 5616/5672/5616 5617/5673/5617 5716/5773/5716 +f 5716/5773/5716 5617/5673/5617 5717/5774/5717 +f 5617/5673/5617 5618/5674/5618 5717/5774/5717 +f 5717/5774/5717 5618/5674/5618 5718/5775/5718 +f 5618/5674/5618 5619/5675/5619 5718/5775/5718 +f 5718/5775/5718 5619/5675/5619 5719/5776/5719 +f 5619/5675/5619 5620/5676/5620 5719/5776/5719 +f 5719/5776/5719 5620/5676/5620 5720/5777/5720 +f 5620/5676/5620 5621/5677/5621 5720/5777/5720 +f 5720/5777/5720 5621/5677/5621 5721/5778/5721 +f 5621/5677/5621 5622/5678/5622 5721/5778/5721 +f 5721/5778/5721 5622/5678/5622 5722/5779/5722 +f 5622/5678/5622 5623/5679/5623 5722/5779/5722 +f 5722/5779/5722 5623/5679/5623 5723/5780/5723 +f 5623/5679/5623 5624/5680/5624 5723/5780/5723 +f 5723/5780/5723 5624/5680/5624 5724/5781/5724 +f 5624/5680/5624 5625/5681/5625 5724/5781/5724 +f 5724/5781/5724 5625/5681/5625 5725/5782/5725 +f 5625/5681/5625 5626/5682/5626 5725/5782/5725 +f 5725/5782/5725 5626/5682/5626 5726/5783/5726 +f 5626/5682/5626 5627/5683/5627 5726/5783/5726 +f 5726/5783/5726 5627/5683/5627 5727/5784/5727 +f 5627/5683/5627 5628/5684/5628 5727/5784/5727 +f 5727/5784/5727 5628/5684/5628 5728/5785/5728 +f 5628/5684/5628 5629/5685/5629 5728/5785/5728 +f 5728/5785/5728 5629/5685/5629 5729/5786/5729 +f 5629/5685/5629 5630/5686/5630 5729/5786/5729 +f 5729/5786/5729 5630/5686/5630 5730/5787/5730 +f 5630/5686/5630 5631/5687/5631 5730/5787/5730 +f 5730/5787/5730 5631/5687/5631 5731/5788/5731 +f 5631/5687/5631 5632/5688/5632 5731/5788/5731 +f 5731/5788/5731 5632/5688/5632 5732/5789/5732 +f 5632/5688/5632 5633/5689/5633 5732/5789/5732 +f 5732/5789/5732 5633/5689/5633 5733/5790/5733 +f 5633/5689/5633 5634/5690/5634 5733/5790/5733 +f 5733/5790/5733 5634/5690/5634 5734/5791/5734 +f 5634/5690/5634 5635/5691/5635 5734/5791/5734 +f 5734/5791/5734 5635/5691/5635 5735/5792/5735 +f 5635/5691/5635 5636/5692/5636 5735/5792/5735 +f 5735/5792/5735 5636/5692/5636 5736/5793/5736 +f 5636/5692/5636 5637/5693/5637 5736/5793/5736 +f 5736/5793/5736 5637/5693/5637 5737/5794/5737 +f 5637/5693/5637 5638/5694/5638 5737/5794/5737 +f 5737/5794/5737 5638/5694/5638 5738/5795/5738 +f 5638/5694/5638 5639/5695/5639 5738/5795/5738 +f 5738/5795/5738 5639/5695/5639 5739/5796/5739 +f 5639/5695/5639 5640/5696/5640 5739/5796/5739 +f 5739/5796/5739 5640/5696/5640 5740/5797/5740 +f 5640/5696/5640 5641/5697/5641 5740/5797/5740 +f 5740/5797/5740 5641/5697/5641 5741/5798/5741 +f 5641/5697/5641 5642/5698/5642 5741/5798/5741 +f 5741/5798/5741 5642/5698/5642 5742/5799/5742 +f 5642/5698/5642 5643/5699/5643 5742/5799/5742 +f 5742/5799/5742 5643/5699/5643 5743/5800/5743 +f 5643/5699/5643 5644/5700/5644 5743/5800/5743 +f 5743/5800/5743 5644/5700/5644 5744/5801/5744 +f 5644/5700/5644 5645/5701/5645 5744/5801/5744 +f 5744/5801/5744 5645/5701/5645 5745/5802/5745 +f 5645/5701/5645 5646/5702/5646 5745/5802/5745 +f 5745/5802/5745 5646/5702/5646 5746/5803/5746 +f 5646/5702/5646 5647/5703/5647 5746/5803/5746 +f 5746/5803/5746 5647/5703/5647 5747/5804/5747 +f 5647/5703/5647 5648/5704/5648 5747/5804/5747 +f 5747/5804/5747 5648/5704/5648 5748/5805/5748 +f 5648/5704/5648 5649/5705/5649 5748/5805/5748 +f 5748/5805/5748 5649/5705/5649 5749/5806/5749 +f 5649/5705/5649 5650/5706/5650 5749/5806/5749 +f 5749/5806/5749 5650/5706/5650 5750/5807/5750 +f 5650/5706/5650 5651/5707/5651 5750/5807/5750 +f 5750/5807/5750 5651/5707/5651 5751/5808/5751 +f 5651/5707/5651 5652/5708/5652 5751/5808/5751 +f 5751/5808/5751 5652/5708/5652 5752/5809/5752 +f 5652/5708/5652 5653/5709/5653 5752/5809/5752 +f 5752/5809/5752 5653/5709/5653 5753/5810/5753 +f 5653/5709/5653 5654/5710/5654 5753/5810/5753 +f 5753/5810/5753 5654/5710/5654 5754/5811/5754 +f 5654/5710/5654 5655/5711/5655 5754/5811/5754 +f 5754/5811/5754 5655/5711/5655 5755/5812/5755 +f 5655/5711/5655 5656/5712/5656 5755/5812/5755 +f 5755/5812/5755 5656/5712/5656 5756/5813/5756 +f 5656/5712/5656 5657/5713/5657 5756/5813/5756 +f 5756/5813/5756 5657/5713/5657 5757/5814/5757 +f 5657/5713/5657 5658/5714/5658 5757/5814/5757 +f 5757/5814/5757 5658/5714/5658 5758/5815/5758 +f 5658/5714/5658 5659/5715/5659 5758/5815/5758 +f 5758/5815/5758 5659/5715/5659 5759/5816/5759 +f 5659/5715/5659 5660/5716/5660 5759/5816/5759 +f 5759/5816/5759 5660/5716/5660 5760/5817/5760 +f 5660/5716/5660 5661/5717/5661 5760/5817/5760 +f 5760/5817/5760 5661/5717/5661 5761/5818/5761 +f 5661/5717/5661 5662/5718/5662 5761/5818/5761 +f 5761/5818/5761 5662/5718/5662 5762/5819/5762 +f 5662/5718/5662 5663/5719/5663 5762/5819/5762 +f 5762/5819/5762 5663/5719/5663 5763/5820/5763 +f 5663/5719/5663 5664/5720/5664 5763/5820/5763 +f 5763/5820/5763 5664/5720/5664 5764/5821/5764 +f 5664/5720/5664 5665/5721/5665 5764/5821/5764 +f 5764/5821/5764 5665/5721/5665 5765/5822/5765 +f 5665/5721/5665 5666/5722/5666 5765/5822/5765 +f 5765/5822/5765 5666/5722/5666 5766/5823/5766 +f 5666/5722/5666 5667/5723/5667 5766/5823/5766 +f 5766/5823/5766 5667/5723/5667 5767/5824/5767 +f 5667/5723/5667 5668/5724/5668 5767/5824/5767 +f 5767/5824/5767 5668/5724/5668 5768/5825/5768 +f 5668/5724/5668 5669/5725/5669 5768/5825/5768 +f 5768/5825/5768 5669/5725/5669 5769/5826/5769 +f 5669/5725/5669 5670/5726/5670 5769/5826/5769 +f 5769/5826/5769 5670/5726/5670 5770/5827/5770 +f 5670/5726/5670 5671/5727/5671 5770/5827/5770 +f 5770/5827/5770 5671/5727/5671 5771/5828/5771 +f 5671/5727/5671 5672/5728/5672 5771/5828/5771 +f 5771/5828/5771 5672/5728/5672 5772/5829/5772 +f 5672/5728/5672 5673/5729/5673 5772/5829/5772 +f 5772/5829/5772 5673/5729/5673 5773/5830/5773 +f 5673/5729/5673 5674/5730/5674 5773/5830/5773 +f 5773/5830/5773 5674/5730/5674 5774/5831/5774 +f 5674/5730/5674 5675/5731/5675 5774/5831/5774 +f 5774/5831/5774 5675/5731/5675 5775/5832/5775 +f 5675/5731/5675 5676/5732/5676 5775/5832/5775 +f 5775/5832/5775 5676/5732/5676 5776/5833/5776 +f 5676/5732/5676 5677/5733/5677 5776/5833/5776 +f 5776/5833/5776 5677/5733/5677 5777/5834/5777 +f 5677/5733/5677 5678/5734/5678 5777/5834/5777 +f 5777/5834/5777 5678/5734/5678 5778/5835/5778 +f 5678/5734/5678 5679/5735/5679 5778/5835/5778 +f 5778/5835/5778 5679/5735/5679 5779/5836/5779 +f 5679/5735/5679 5680/5736/5680 5779/5836/5779 +f 5779/5836/5779 5680/5736/5680 5780/5837/5780 +f 5680/5736/5680 5681/5737/5681 5780/5837/5780 +f 5780/5837/5780 5681/5737/5681 5781/5838/5781 +f 5681/5737/5681 5682/5738/5682 5781/5838/5781 +f 5781/5838/5781 5682/5738/5682 5782/5839/5782 +f 5682/5738/5682 5683/5739/5683 5782/5839/5782 +f 5782/5839/5782 5683/5739/5683 5783/5840/5783 +f 5683/5739/5683 5684/5740/5684 5783/5840/5783 +f 5783/5840/5783 5684/5740/5684 5784/5841/5784 +f 5684/5740/5684 5685/5741/5685 5784/5841/5784 +f 5784/5841/5784 5685/5741/5685 5785/5842/5785 +f 5685/5741/5685 5686/5742/5686 5785/5842/5785 +f 5785/5842/5785 5686/5742/5686 5786/5843/5786 +f 5686/5742/5686 5687/5743/5687 5786/5843/5786 +f 5786/5843/5786 5687/5743/5687 5787/5844/5787 +f 5687/5743/5687 5688/5744/5688 5787/5844/5787 +f 5787/5844/5787 5688/5744/5688 5788/5845/5788 +f 5688/5744/5688 5689/5745/5689 5788/5845/5788 +f 5788/5845/5788 5689/5745/5689 5789/5846/5789 +f 5689/5745/5689 5690/5746/5690 5789/5846/5789 +f 5789/5846/5789 5690/5746/5690 5790/5847/5790 +f 5690/5746/5690 5691/5747/5691 5790/5847/5790 +f 5790/5847/5790 5691/5747/5691 5791/5848/5791 +f 5691/5747/5691 5692/5748/5692 5791/5848/5791 +f 5791/5848/5791 5692/5748/5692 5792/5849/5792 +f 5692/5748/5692 5693/5749/5693 5792/5849/5792 +f 5792/5849/5792 5693/5749/5693 5793/5850/5793 +f 5693/5749/5693 5694/5750/5694 5793/5850/5793 +f 5793/5850/5793 5694/5750/5694 5794/5851/5794 +f 5694/5750/5694 5695/5751/5695 5794/5851/5794 +f 5794/5851/5794 5695/5751/5695 5795/5852/5795 +f 5695/5751/5695 5696/5752/5696 5795/5852/5795 +f 5795/5852/5795 5696/5752/5696 5796/5853/5796 +f 5696/5752/5696 5697/5753/5697 5796/5853/5796 +f 5796/5853/5796 5697/5753/5697 5797/5854/5797 +f 5697/5753/5697 5698/5754/5698 5797/5854/5797 +f 5797/5854/5797 5698/5754/5698 5798/5855/5798 +f 5698/5754/5698 5699/5755/5699 5798/5855/5798 +f 5798/5855/5798 5699/5755/5699 5799/5856/5799 +f 5699/5755/5699 5700/5756/5700 5799/5856/5799 +f 5799/5856/5799 5700/5756/5700 5800/5857/5800 +f 5700/5756/5700 5601/5757/5601 5800/5857/5800 +f 5800/5857/5800 5601/5757/5601 5701/5858/5701 +f 5701/5758/5701 5702/5759/5702 5801/5859/5801 +f 5801/5859/5801 5702/5759/5702 5802/5860/5802 +f 5702/5759/5702 5703/5760/5703 5802/5860/5802 +f 5802/5860/5802 5703/5760/5703 5803/5861/5803 +f 5703/5760/5703 5704/5761/5704 5803/5861/5803 +f 5803/5861/5803 5704/5761/5704 5804/5862/5804 +f 5704/5761/5704 5705/5762/5705 5804/5862/5804 +f 5804/5862/5804 5705/5762/5705 5805/5863/5805 +f 5705/5762/5705 5706/5763/5706 5805/5863/5805 +f 5805/5863/5805 5706/5763/5706 5806/5864/5806 +f 5706/5763/5706 5707/5764/5707 5806/5864/5806 +f 5806/5864/5806 5707/5764/5707 5807/5865/5807 +f 5707/5764/5707 5708/5765/5708 5807/5865/5807 +f 5807/5865/5807 5708/5765/5708 5808/5866/5808 +f 5708/5765/5708 5709/5766/5709 5808/5866/5808 +f 5808/5866/5808 5709/5766/5709 5809/5867/5809 +f 5709/5766/5709 5710/5767/5710 5809/5867/5809 +f 5809/5867/5809 5710/5767/5710 5810/5868/5810 +f 5710/5767/5710 5711/5768/5711 5810/5868/5810 +f 5810/5868/5810 5711/5768/5711 5811/5869/5811 +f 5711/5768/5711 5712/5769/5712 5811/5869/5811 +f 5811/5869/5811 5712/5769/5712 5812/5870/5812 +f 5712/5769/5712 5713/5770/5713 5812/5870/5812 +f 5812/5870/5812 5713/5770/5713 5813/5871/5813 +f 5713/5770/5713 5714/5771/5714 5813/5871/5813 +f 5813/5871/5813 5714/5771/5714 5814/5872/5814 +f 5714/5771/5714 5715/5772/5715 5814/5872/5814 +f 5814/5872/5814 5715/5772/5715 5815/5873/5815 +f 5715/5772/5715 5716/5773/5716 5815/5873/5815 +f 5815/5873/5815 5716/5773/5716 5816/5874/5816 +f 5716/5773/5716 5717/5774/5717 5816/5874/5816 +f 5816/5874/5816 5717/5774/5717 5817/5875/5817 +f 5717/5774/5717 5718/5775/5718 5817/5875/5817 +f 5817/5875/5817 5718/5775/5718 5818/5876/5818 +f 5718/5775/5718 5719/5776/5719 5818/5876/5818 +f 5818/5876/5818 5719/5776/5719 5819/5877/5819 +f 5719/5776/5719 5720/5777/5720 5819/5877/5819 +f 5819/5877/5819 5720/5777/5720 5820/5878/5820 +f 5720/5777/5720 5721/5778/5721 5820/5878/5820 +f 5820/5878/5820 5721/5778/5721 5821/5879/5821 +f 5721/5778/5721 5722/5779/5722 5821/5879/5821 +f 5821/5879/5821 5722/5779/5722 5822/5880/5822 +f 5722/5779/5722 5723/5780/5723 5822/5880/5822 +f 5822/5880/5822 5723/5780/5723 5823/5881/5823 +f 5723/5780/5723 5724/5781/5724 5823/5881/5823 +f 5823/5881/5823 5724/5781/5724 5824/5882/5824 +f 5724/5781/5724 5725/5782/5725 5824/5882/5824 +f 5824/5882/5824 5725/5782/5725 5825/5883/5825 +f 5725/5782/5725 5726/5783/5726 5825/5883/5825 +f 5825/5883/5825 5726/5783/5726 5826/5884/5826 +f 5726/5783/5726 5727/5784/5727 5826/5884/5826 +f 5826/5884/5826 5727/5784/5727 5827/5885/5827 +f 5727/5784/5727 5728/5785/5728 5827/5885/5827 +f 5827/5885/5827 5728/5785/5728 5828/5886/5828 +f 5728/5785/5728 5729/5786/5729 5828/5886/5828 +f 5828/5886/5828 5729/5786/5729 5829/5887/5829 +f 5729/5786/5729 5730/5787/5730 5829/5887/5829 +f 5829/5887/5829 5730/5787/5730 5830/5888/5830 +f 5730/5787/5730 5731/5788/5731 5830/5888/5830 +f 5830/5888/5830 5731/5788/5731 5831/5889/5831 +f 5731/5788/5731 5732/5789/5732 5831/5889/5831 +f 5831/5889/5831 5732/5789/5732 5832/5890/5832 +f 5732/5789/5732 5733/5790/5733 5832/5890/5832 +f 5832/5890/5832 5733/5790/5733 5833/5891/5833 +f 5733/5790/5733 5734/5791/5734 5833/5891/5833 +f 5833/5891/5833 5734/5791/5734 5834/5892/5834 +f 5734/5791/5734 5735/5792/5735 5834/5892/5834 +f 5834/5892/5834 5735/5792/5735 5835/5893/5835 +f 5735/5792/5735 5736/5793/5736 5835/5893/5835 +f 5835/5893/5835 5736/5793/5736 5836/5894/5836 +f 5736/5793/5736 5737/5794/5737 5836/5894/5836 +f 5836/5894/5836 5737/5794/5737 5837/5895/5837 +f 5737/5794/5737 5738/5795/5738 5837/5895/5837 +f 5837/5895/5837 5738/5795/5738 5838/5896/5838 +f 5738/5795/5738 5739/5796/5739 5838/5896/5838 +f 5838/5896/5838 5739/5796/5739 5839/5897/5839 +f 5739/5796/5739 5740/5797/5740 5839/5897/5839 +f 5839/5897/5839 5740/5797/5740 5840/5898/5840 +f 5740/5797/5740 5741/5798/5741 5840/5898/5840 +f 5840/5898/5840 5741/5798/5741 5841/5899/5841 +f 5741/5798/5741 5742/5799/5742 5841/5899/5841 +f 5841/5899/5841 5742/5799/5742 5842/5900/5842 +f 5742/5799/5742 5743/5800/5743 5842/5900/5842 +f 5842/5900/5842 5743/5800/5743 5843/5901/5843 +f 5743/5800/5743 5744/5801/5744 5843/5901/5843 +f 5843/5901/5843 5744/5801/5744 5844/5902/5844 +f 5744/5801/5744 5745/5802/5745 5844/5902/5844 +f 5844/5902/5844 5745/5802/5745 5845/5903/5845 +f 5745/5802/5745 5746/5803/5746 5845/5903/5845 +f 5845/5903/5845 5746/5803/5746 5846/5904/5846 +f 5746/5803/5746 5747/5804/5747 5846/5904/5846 +f 5846/5904/5846 5747/5804/5747 5847/5905/5847 +f 5747/5804/5747 5748/5805/5748 5847/5905/5847 +f 5847/5905/5847 5748/5805/5748 5848/5906/5848 +f 5748/5805/5748 5749/5806/5749 5848/5906/5848 +f 5848/5906/5848 5749/5806/5749 5849/5907/5849 +f 5749/5806/5749 5750/5807/5750 5849/5907/5849 +f 5849/5907/5849 5750/5807/5750 5850/5908/5850 +f 5750/5807/5750 5751/5808/5751 5850/5908/5850 +f 5850/5908/5850 5751/5808/5751 5851/5909/5851 +f 5751/5808/5751 5752/5809/5752 5851/5909/5851 +f 5851/5909/5851 5752/5809/5752 5852/5910/5852 +f 5752/5809/5752 5753/5810/5753 5852/5910/5852 +f 5852/5910/5852 5753/5810/5753 5853/5911/5853 +f 5753/5810/5753 5754/5811/5754 5853/5911/5853 +f 5853/5911/5853 5754/5811/5754 5854/5912/5854 +f 5754/5811/5754 5755/5812/5755 5854/5912/5854 +f 5854/5912/5854 5755/5812/5755 5855/5913/5855 +f 5755/5812/5755 5756/5813/5756 5855/5913/5855 +f 5855/5913/5855 5756/5813/5756 5856/5914/5856 +f 5756/5813/5756 5757/5814/5757 5856/5914/5856 +f 5856/5914/5856 5757/5814/5757 5857/5915/5857 +f 5757/5814/5757 5758/5815/5758 5857/5915/5857 +f 5857/5915/5857 5758/5815/5758 5858/5916/5858 +f 5758/5815/5758 5759/5816/5759 5858/5916/5858 +f 5858/5916/5858 5759/5816/5759 5859/5917/5859 +f 5759/5816/5759 5760/5817/5760 5859/5917/5859 +f 5859/5917/5859 5760/5817/5760 5860/5918/5860 +f 5760/5817/5760 5761/5818/5761 5860/5918/5860 +f 5860/5918/5860 5761/5818/5761 5861/5919/5861 +f 5761/5818/5761 5762/5819/5762 5861/5919/5861 +f 5861/5919/5861 5762/5819/5762 5862/5920/5862 +f 5762/5819/5762 5763/5820/5763 5862/5920/5862 +f 5862/5920/5862 5763/5820/5763 5863/5921/5863 +f 5763/5820/5763 5764/5821/5764 5863/5921/5863 +f 5863/5921/5863 5764/5821/5764 5864/5922/5864 +f 5764/5821/5764 5765/5822/5765 5864/5922/5864 +f 5864/5922/5864 5765/5822/5765 5865/5923/5865 +f 5765/5822/5765 5766/5823/5766 5865/5923/5865 +f 5865/5923/5865 5766/5823/5766 5866/5924/5866 +f 5766/5823/5766 5767/5824/5767 5866/5924/5866 +f 5866/5924/5866 5767/5824/5767 5867/5925/5867 +f 5767/5824/5767 5768/5825/5768 5867/5925/5867 +f 5867/5925/5867 5768/5825/5768 5868/5926/5868 +f 5768/5825/5768 5769/5826/5769 5868/5926/5868 +f 5868/5926/5868 5769/5826/5769 5869/5927/5869 +f 5769/5826/5769 5770/5827/5770 5869/5927/5869 +f 5869/5927/5869 5770/5827/5770 5870/5928/5870 +f 5770/5827/5770 5771/5828/5771 5870/5928/5870 +f 5870/5928/5870 5771/5828/5771 5871/5929/5871 +f 5771/5828/5771 5772/5829/5772 5871/5929/5871 +f 5871/5929/5871 5772/5829/5772 5872/5930/5872 +f 5772/5829/5772 5773/5830/5773 5872/5930/5872 +f 5872/5930/5872 5773/5830/5773 5873/5931/5873 +f 5773/5830/5773 5774/5831/5774 5873/5931/5873 +f 5873/5931/5873 5774/5831/5774 5874/5932/5874 +f 5774/5831/5774 5775/5832/5775 5874/5932/5874 +f 5874/5932/5874 5775/5832/5775 5875/5933/5875 +f 5775/5832/5775 5776/5833/5776 5875/5933/5875 +f 5875/5933/5875 5776/5833/5776 5876/5934/5876 +f 5776/5833/5776 5777/5834/5777 5876/5934/5876 +f 5876/5934/5876 5777/5834/5777 5877/5935/5877 +f 5777/5834/5777 5778/5835/5778 5877/5935/5877 +f 5877/5935/5877 5778/5835/5778 5878/5936/5878 +f 5778/5835/5778 5779/5836/5779 5878/5936/5878 +f 5878/5936/5878 5779/5836/5779 5879/5937/5879 +f 5779/5836/5779 5780/5837/5780 5879/5937/5879 +f 5879/5937/5879 5780/5837/5780 5880/5938/5880 +f 5780/5837/5780 5781/5838/5781 5880/5938/5880 +f 5880/5938/5880 5781/5838/5781 5881/5939/5881 +f 5781/5838/5781 5782/5839/5782 5881/5939/5881 +f 5881/5939/5881 5782/5839/5782 5882/5940/5882 +f 5782/5839/5782 5783/5840/5783 5882/5940/5882 +f 5882/5940/5882 5783/5840/5783 5883/5941/5883 +f 5783/5840/5783 5784/5841/5784 5883/5941/5883 +f 5883/5941/5883 5784/5841/5784 5884/5942/5884 +f 5784/5841/5784 5785/5842/5785 5884/5942/5884 +f 5884/5942/5884 5785/5842/5785 5885/5943/5885 +f 5785/5842/5785 5786/5843/5786 5885/5943/5885 +f 5885/5943/5885 5786/5843/5786 5886/5944/5886 +f 5786/5843/5786 5787/5844/5787 5886/5944/5886 +f 5886/5944/5886 5787/5844/5787 5887/5945/5887 +f 5787/5844/5787 5788/5845/5788 5887/5945/5887 +f 5887/5945/5887 5788/5845/5788 5888/5946/5888 +f 5788/5845/5788 5789/5846/5789 5888/5946/5888 +f 5888/5946/5888 5789/5846/5789 5889/5947/5889 +f 5789/5846/5789 5790/5847/5790 5889/5947/5889 +f 5889/5947/5889 5790/5847/5790 5890/5948/5890 +f 5790/5847/5790 5791/5848/5791 5890/5948/5890 +f 5890/5948/5890 5791/5848/5791 5891/5949/5891 +f 5791/5848/5791 5792/5849/5792 5891/5949/5891 +f 5891/5949/5891 5792/5849/5792 5892/5950/5892 +f 5792/5849/5792 5793/5850/5793 5892/5950/5892 +f 5892/5950/5892 5793/5850/5793 5893/5951/5893 +f 5793/5850/5793 5794/5851/5794 5893/5951/5893 +f 5893/5951/5893 5794/5851/5794 5894/5952/5894 +f 5794/5851/5794 5795/5852/5795 5894/5952/5894 +f 5894/5952/5894 5795/5852/5795 5895/5953/5895 +f 5795/5852/5795 5796/5853/5796 5895/5953/5895 +f 5895/5953/5895 5796/5853/5796 5896/5954/5896 +f 5796/5853/5796 5797/5854/5797 5896/5954/5896 +f 5896/5954/5896 5797/5854/5797 5897/5955/5897 +f 5797/5854/5797 5798/5855/5798 5897/5955/5897 +f 5897/5955/5897 5798/5855/5798 5898/5956/5898 +f 5798/5855/5798 5799/5856/5799 5898/5956/5898 +f 5898/5956/5898 5799/5856/5799 5899/5957/5899 +f 5799/5856/5799 5800/5857/5800 5899/5957/5899 +f 5899/5957/5899 5800/5857/5800 5900/5958/5900 +f 5800/5857/5800 5701/5858/5701 5900/5958/5900 +f 5900/5958/5900 5701/5858/5701 5801/5959/5801 +f 5801/5859/5801 5802/5860/5802 5901/5960/5901 +f 5901/5960/5901 5802/5860/5802 5902/5961/5902 +f 5802/5860/5802 5803/5861/5803 5902/5961/5902 +f 5902/5961/5902 5803/5861/5803 5903/5962/5903 +f 5803/5861/5803 5804/5862/5804 5903/5962/5903 +f 5903/5962/5903 5804/5862/5804 5904/5963/5904 +f 5804/5862/5804 5805/5863/5805 5904/5963/5904 +f 5904/5963/5904 5805/5863/5805 5905/5964/5905 +f 5805/5863/5805 5806/5864/5806 5905/5964/5905 +f 5905/5964/5905 5806/5864/5806 5906/5965/5906 +f 5806/5864/5806 5807/5865/5807 5906/5965/5906 +f 5906/5965/5906 5807/5865/5807 5907/5966/5907 +f 5807/5865/5807 5808/5866/5808 5907/5966/5907 +f 5907/5966/5907 5808/5866/5808 5908/5967/5908 +f 5808/5866/5808 5809/5867/5809 5908/5967/5908 +f 5908/5967/5908 5809/5867/5809 5909/5968/5909 +f 5809/5867/5809 5810/5868/5810 5909/5968/5909 +f 5909/5968/5909 5810/5868/5810 5910/5969/5910 +f 5810/5868/5810 5811/5869/5811 5910/5969/5910 +f 5910/5969/5910 5811/5869/5811 5911/5970/5911 +f 5811/5869/5811 5812/5870/5812 5911/5970/5911 +f 5911/5970/5911 5812/5870/5812 5912/5971/5912 +f 5812/5870/5812 5813/5871/5813 5912/5971/5912 +f 5912/5971/5912 5813/5871/5813 5913/5972/5913 +f 5813/5871/5813 5814/5872/5814 5913/5972/5913 +f 5913/5972/5913 5814/5872/5814 5914/5973/5914 +f 5814/5872/5814 5815/5873/5815 5914/5973/5914 +f 5914/5973/5914 5815/5873/5815 5915/5974/5915 +f 5815/5873/5815 5816/5874/5816 5915/5974/5915 +f 5915/5974/5915 5816/5874/5816 5916/5975/5916 +f 5816/5874/5816 5817/5875/5817 5916/5975/5916 +f 5916/5975/5916 5817/5875/5817 5917/5976/5917 +f 5817/5875/5817 5818/5876/5818 5917/5976/5917 +f 5917/5976/5917 5818/5876/5818 5918/5977/5918 +f 5818/5876/5818 5819/5877/5819 5918/5977/5918 +f 5918/5977/5918 5819/5877/5819 5919/5978/5919 +f 5819/5877/5819 5820/5878/5820 5919/5978/5919 +f 5919/5978/5919 5820/5878/5820 5920/5979/5920 +f 5820/5878/5820 5821/5879/5821 5920/5979/5920 +f 5920/5979/5920 5821/5879/5821 5921/5980/5921 +f 5821/5879/5821 5822/5880/5822 5921/5980/5921 +f 5921/5980/5921 5822/5880/5822 5922/5981/5922 +f 5822/5880/5822 5823/5881/5823 5922/5981/5922 +f 5922/5981/5922 5823/5881/5823 5923/5982/5923 +f 5823/5881/5823 5824/5882/5824 5923/5982/5923 +f 5923/5982/5923 5824/5882/5824 5924/5983/5924 +f 5824/5882/5824 5825/5883/5825 5924/5983/5924 +f 5924/5983/5924 5825/5883/5825 5925/5984/5925 +f 5825/5883/5825 5826/5884/5826 5925/5984/5925 +f 5925/5984/5925 5826/5884/5826 5926/5985/5926 +f 5826/5884/5826 5827/5885/5827 5926/5985/5926 +f 5926/5985/5926 5827/5885/5827 5927/5986/5927 +f 5827/5885/5827 5828/5886/5828 5927/5986/5927 +f 5927/5986/5927 5828/5886/5828 5928/5987/5928 +f 5828/5886/5828 5829/5887/5829 5928/5987/5928 +f 5928/5987/5928 5829/5887/5829 5929/5988/5929 +f 5829/5887/5829 5830/5888/5830 5929/5988/5929 +f 5929/5988/5929 5830/5888/5830 5930/5989/5930 +f 5830/5888/5830 5831/5889/5831 5930/5989/5930 +f 5930/5989/5930 5831/5889/5831 5931/5990/5931 +f 5831/5889/5831 5832/5890/5832 5931/5990/5931 +f 5931/5990/5931 5832/5890/5832 5932/5991/5932 +f 5832/5890/5832 5833/5891/5833 5932/5991/5932 +f 5932/5991/5932 5833/5891/5833 5933/5992/5933 +f 5833/5891/5833 5834/5892/5834 5933/5992/5933 +f 5933/5992/5933 5834/5892/5834 5934/5993/5934 +f 5834/5892/5834 5835/5893/5835 5934/5993/5934 +f 5934/5993/5934 5835/5893/5835 5935/5994/5935 +f 5835/5893/5835 5836/5894/5836 5935/5994/5935 +f 5935/5994/5935 5836/5894/5836 5936/5995/5936 +f 5836/5894/5836 5837/5895/5837 5936/5995/5936 +f 5936/5995/5936 5837/5895/5837 5937/5996/5937 +f 5837/5895/5837 5838/5896/5838 5937/5996/5937 +f 5937/5996/5937 5838/5896/5838 5938/5997/5938 +f 5838/5896/5838 5839/5897/5839 5938/5997/5938 +f 5938/5997/5938 5839/5897/5839 5939/5998/5939 +f 5839/5897/5839 5840/5898/5840 5939/5998/5939 +f 5939/5998/5939 5840/5898/5840 5940/5999/5940 +f 5840/5898/5840 5841/5899/5841 5940/5999/5940 +f 5940/5999/5940 5841/5899/5841 5941/6000/5941 +f 5841/5899/5841 5842/5900/5842 5941/6000/5941 +f 5941/6000/5941 5842/5900/5842 5942/6001/5942 +f 5842/5900/5842 5843/5901/5843 5942/6001/5942 +f 5942/6001/5942 5843/5901/5843 5943/6002/5943 +f 5843/5901/5843 5844/5902/5844 5943/6002/5943 +f 5943/6002/5943 5844/5902/5844 5944/6003/5944 +f 5844/5902/5844 5845/5903/5845 5944/6003/5944 +f 5944/6003/5944 5845/5903/5845 5945/6004/5945 +f 5845/5903/5845 5846/5904/5846 5945/6004/5945 +f 5945/6004/5945 5846/5904/5846 5946/6005/5946 +f 5846/5904/5846 5847/5905/5847 5946/6005/5946 +f 5946/6005/5946 5847/5905/5847 5947/6006/5947 +f 5847/5905/5847 5848/5906/5848 5947/6006/5947 +f 5947/6006/5947 5848/5906/5848 5948/6007/5948 +f 5848/5906/5848 5849/5907/5849 5948/6007/5948 +f 5948/6007/5948 5849/5907/5849 5949/6008/5949 +f 5849/5907/5849 5850/5908/5850 5949/6008/5949 +f 5949/6008/5949 5850/5908/5850 5950/6009/5950 +f 5850/5908/5850 5851/5909/5851 5950/6009/5950 +f 5950/6009/5950 5851/5909/5851 5951/6010/5951 +f 5851/5909/5851 5852/5910/5852 5951/6010/5951 +f 5951/6010/5951 5852/5910/5852 5952/6011/5952 +f 5852/5910/5852 5853/5911/5853 5952/6011/5952 +f 5952/6011/5952 5853/5911/5853 5953/6012/5953 +f 5853/5911/5853 5854/5912/5854 5953/6012/5953 +f 5953/6012/5953 5854/5912/5854 5954/6013/5954 +f 5854/5912/5854 5855/5913/5855 5954/6013/5954 +f 5954/6013/5954 5855/5913/5855 5955/6014/5955 +f 5855/5913/5855 5856/5914/5856 5955/6014/5955 +f 5955/6014/5955 5856/5914/5856 5956/6015/5956 +f 5856/5914/5856 5857/5915/5857 5956/6015/5956 +f 5956/6015/5956 5857/5915/5857 5957/6016/5957 +f 5857/5915/5857 5858/5916/5858 5957/6016/5957 +f 5957/6016/5957 5858/5916/5858 5958/6017/5958 +f 5858/5916/5858 5859/5917/5859 5958/6017/5958 +f 5958/6017/5958 5859/5917/5859 5959/6018/5959 +f 5859/5917/5859 5860/5918/5860 5959/6018/5959 +f 5959/6018/5959 5860/5918/5860 5960/6019/5960 +f 5860/5918/5860 5861/5919/5861 5960/6019/5960 +f 5960/6019/5960 5861/5919/5861 5961/6020/5961 +f 5861/5919/5861 5862/5920/5862 5961/6020/5961 +f 5961/6020/5961 5862/5920/5862 5962/6021/5962 +f 5862/5920/5862 5863/5921/5863 5962/6021/5962 +f 5962/6021/5962 5863/5921/5863 5963/6022/5963 +f 5863/5921/5863 5864/5922/5864 5963/6022/5963 +f 5963/6022/5963 5864/5922/5864 5964/6023/5964 +f 5864/5922/5864 5865/5923/5865 5964/6023/5964 +f 5964/6023/5964 5865/5923/5865 5965/6024/5965 +f 5865/5923/5865 5866/5924/5866 5965/6024/5965 +f 5965/6024/5965 5866/5924/5866 5966/6025/5966 +f 5866/5924/5866 5867/5925/5867 5966/6025/5966 +f 5966/6025/5966 5867/5925/5867 5967/6026/5967 +f 5867/5925/5867 5868/5926/5868 5967/6026/5967 +f 5967/6026/5967 5868/5926/5868 5968/6027/5968 +f 5868/5926/5868 5869/5927/5869 5968/6027/5968 +f 5968/6027/5968 5869/5927/5869 5969/6028/5969 +f 5869/5927/5869 5870/5928/5870 5969/6028/5969 +f 5969/6028/5969 5870/5928/5870 5970/6029/5970 +f 5870/5928/5870 5871/5929/5871 5970/6029/5970 +f 5970/6029/5970 5871/5929/5871 5971/6030/5971 +f 5871/5929/5871 5872/5930/5872 5971/6030/5971 +f 5971/6030/5971 5872/5930/5872 5972/6031/5972 +f 5872/5930/5872 5873/5931/5873 5972/6031/5972 +f 5972/6031/5972 5873/5931/5873 5973/6032/5973 +f 5873/5931/5873 5874/5932/5874 5973/6032/5973 +f 5973/6032/5973 5874/5932/5874 5974/6033/5974 +f 5874/5932/5874 5875/5933/5875 5974/6033/5974 +f 5974/6033/5974 5875/5933/5875 5975/6034/5975 +f 5875/5933/5875 5876/5934/5876 5975/6034/5975 +f 5975/6034/5975 5876/5934/5876 5976/6035/5976 +f 5876/5934/5876 5877/5935/5877 5976/6035/5976 +f 5976/6035/5976 5877/5935/5877 5977/6036/5977 +f 5877/5935/5877 5878/5936/5878 5977/6036/5977 +f 5977/6036/5977 5878/5936/5878 5978/6037/5978 +f 5878/5936/5878 5879/5937/5879 5978/6037/5978 +f 5978/6037/5978 5879/5937/5879 5979/6038/5979 +f 5879/5937/5879 5880/5938/5880 5979/6038/5979 +f 5979/6038/5979 5880/5938/5880 5980/6039/5980 +f 5880/5938/5880 5881/5939/5881 5980/6039/5980 +f 5980/6039/5980 5881/5939/5881 5981/6040/5981 +f 5881/5939/5881 5882/5940/5882 5981/6040/5981 +f 5981/6040/5981 5882/5940/5882 5982/6041/5982 +f 5882/5940/5882 5883/5941/5883 5982/6041/5982 +f 5982/6041/5982 5883/5941/5883 5983/6042/5983 +f 5883/5941/5883 5884/5942/5884 5983/6042/5983 +f 5983/6042/5983 5884/5942/5884 5984/6043/5984 +f 5884/5942/5884 5885/5943/5885 5984/6043/5984 +f 5984/6043/5984 5885/5943/5885 5985/6044/5985 +f 5885/5943/5885 5886/5944/5886 5985/6044/5985 +f 5985/6044/5985 5886/5944/5886 5986/6045/5986 +f 5886/5944/5886 5887/5945/5887 5986/6045/5986 +f 5986/6045/5986 5887/5945/5887 5987/6046/5987 +f 5887/5945/5887 5888/5946/5888 5987/6046/5987 +f 5987/6046/5987 5888/5946/5888 5988/6047/5988 +f 5888/5946/5888 5889/5947/5889 5988/6047/5988 +f 5988/6047/5988 5889/5947/5889 5989/6048/5989 +f 5889/5947/5889 5890/5948/5890 5989/6048/5989 +f 5989/6048/5989 5890/5948/5890 5990/6049/5990 +f 5890/5948/5890 5891/5949/5891 5990/6049/5990 +f 5990/6049/5990 5891/5949/5891 5991/6050/5991 +f 5891/5949/5891 5892/5950/5892 5991/6050/5991 +f 5991/6050/5991 5892/5950/5892 5992/6051/5992 +f 5892/5950/5892 5893/5951/5893 5992/6051/5992 +f 5992/6051/5992 5893/5951/5893 5993/6052/5993 +f 5893/5951/5893 5894/5952/5894 5993/6052/5993 +f 5993/6052/5993 5894/5952/5894 5994/6053/5994 +f 5894/5952/5894 5895/5953/5895 5994/6053/5994 +f 5994/6053/5994 5895/5953/5895 5995/6054/5995 +f 5895/5953/5895 5896/5954/5896 5995/6054/5995 +f 5995/6054/5995 5896/5954/5896 5996/6055/5996 +f 5896/5954/5896 5897/5955/5897 5996/6055/5996 +f 5996/6055/5996 5897/5955/5897 5997/6056/5997 +f 5897/5955/5897 5898/5956/5898 5997/6056/5997 +f 5997/6056/5997 5898/5956/5898 5998/6057/5998 +f 5898/5956/5898 5899/5957/5899 5998/6057/5998 +f 5998/6057/5998 5899/5957/5899 5999/6058/5999 +f 5899/5957/5899 5900/5958/5900 5999/6058/5999 +f 5999/6058/5999 5900/5958/5900 6000/6059/6000 +f 5900/5958/5900 5801/5959/5801 6000/6059/6000 +f 6000/6059/6000 5801/5959/5801 5901/6060/5901 +f 5901/5960/5901 5902/5961/5902 6001/6061/6001 +f 6001/6061/6001 5902/5961/5902 6002/6062/6002 +f 5902/5961/5902 5903/5962/5903 6002/6062/6002 +f 6002/6062/6002 5903/5962/5903 6003/6063/6003 +f 5903/5962/5903 5904/5963/5904 6003/6063/6003 +f 6003/6063/6003 5904/5963/5904 6004/6064/6004 +f 5904/5963/5904 5905/5964/5905 6004/6064/6004 +f 6004/6064/6004 5905/5964/5905 6005/6065/6005 +f 5905/5964/5905 5906/5965/5906 6005/6065/6005 +f 6005/6065/6005 5906/5965/5906 6006/6066/6006 +f 5906/5965/5906 5907/5966/5907 6006/6066/6006 +f 6006/6066/6006 5907/5966/5907 6007/6067/6007 +f 5907/5966/5907 5908/5967/5908 6007/6067/6007 +f 6007/6067/6007 5908/5967/5908 6008/6068/6008 +f 5908/5967/5908 5909/5968/5909 6008/6068/6008 +f 6008/6068/6008 5909/5968/5909 6009/6069/6009 +f 5909/5968/5909 5910/5969/5910 6009/6069/6009 +f 6009/6069/6009 5910/5969/5910 6010/6070/6010 +f 5910/5969/5910 5911/5970/5911 6010/6070/6010 +f 6010/6070/6010 5911/5970/5911 6011/6071/6011 +f 5911/5970/5911 5912/5971/5912 6011/6071/6011 +f 6011/6071/6011 5912/5971/5912 6012/6072/6012 +f 5912/5971/5912 5913/5972/5913 6012/6072/6012 +f 6012/6072/6012 5913/5972/5913 6013/6073/6013 +f 5913/5972/5913 5914/5973/5914 6013/6073/6013 +f 6013/6073/6013 5914/5973/5914 6014/6074/6014 +f 5914/5973/5914 5915/5974/5915 6014/6074/6014 +f 6014/6074/6014 5915/5974/5915 6015/6075/6015 +f 5915/5974/5915 5916/5975/5916 6015/6075/6015 +f 6015/6075/6015 5916/5975/5916 6016/6076/6016 +f 5916/5975/5916 5917/5976/5917 6016/6076/6016 +f 6016/6076/6016 5917/5976/5917 6017/6077/6017 +f 5917/5976/5917 5918/5977/5918 6017/6077/6017 +f 6017/6077/6017 5918/5977/5918 6018/6078/6018 +f 5918/5977/5918 5919/5978/5919 6018/6078/6018 +f 6018/6078/6018 5919/5978/5919 6019/6079/6019 +f 5919/5978/5919 5920/5979/5920 6019/6079/6019 +f 6019/6079/6019 5920/5979/5920 6020/6080/6020 +f 5920/5979/5920 5921/5980/5921 6020/6080/6020 +f 6020/6080/6020 5921/5980/5921 6021/6081/6021 +f 5921/5980/5921 5922/5981/5922 6021/6081/6021 +f 6021/6081/6021 5922/5981/5922 6022/6082/6022 +f 5922/5981/5922 5923/5982/5923 6022/6082/6022 +f 6022/6082/6022 5923/5982/5923 6023/6083/6023 +f 5923/5982/5923 5924/5983/5924 6023/6083/6023 +f 6023/6083/6023 5924/5983/5924 6024/6084/6024 +f 5924/5983/5924 5925/5984/5925 6024/6084/6024 +f 6024/6084/6024 5925/5984/5925 6025/6085/6025 +f 5925/5984/5925 5926/5985/5926 6025/6085/6025 +f 6025/6085/6025 5926/5985/5926 6026/6086/6026 +f 5926/5985/5926 5927/5986/5927 6026/6086/6026 +f 6026/6086/6026 5927/5986/5927 6027/6087/6027 +f 5927/5986/5927 5928/5987/5928 6027/6087/6027 +f 6027/6087/6027 5928/5987/5928 6028/6088/6028 +f 5928/5987/5928 5929/5988/5929 6028/6088/6028 +f 6028/6088/6028 5929/5988/5929 6029/6089/6029 +f 5929/5988/5929 5930/5989/5930 6029/6089/6029 +f 6029/6089/6029 5930/5989/5930 6030/6090/6030 +f 5930/5989/5930 5931/5990/5931 6030/6090/6030 +f 6030/6090/6030 5931/5990/5931 6031/6091/6031 +f 5931/5990/5931 5932/5991/5932 6031/6091/6031 +f 6031/6091/6031 5932/5991/5932 6032/6092/6032 +f 5932/5991/5932 5933/5992/5933 6032/6092/6032 +f 6032/6092/6032 5933/5992/5933 6033/6093/6033 +f 5933/5992/5933 5934/5993/5934 6033/6093/6033 +f 6033/6093/6033 5934/5993/5934 6034/6094/6034 +f 5934/5993/5934 5935/5994/5935 6034/6094/6034 +f 6034/6094/6034 5935/5994/5935 6035/6095/6035 +f 5935/5994/5935 5936/5995/5936 6035/6095/6035 +f 6035/6095/6035 5936/5995/5936 6036/6096/6036 +f 5936/5995/5936 5937/5996/5937 6036/6096/6036 +f 6036/6096/6036 5937/5996/5937 6037/6097/6037 +f 5937/5996/5937 5938/5997/5938 6037/6097/6037 +f 6037/6097/6037 5938/5997/5938 6038/6098/6038 +f 5938/5997/5938 5939/5998/5939 6038/6098/6038 +f 6038/6098/6038 5939/5998/5939 6039/6099/6039 +f 5939/5998/5939 5940/5999/5940 6039/6099/6039 +f 6039/6099/6039 5940/5999/5940 6040/6100/6040 +f 5940/5999/5940 5941/6000/5941 6040/6100/6040 +f 6040/6100/6040 5941/6000/5941 6041/6101/6041 +f 5941/6000/5941 5942/6001/5942 6041/6101/6041 +f 6041/6101/6041 5942/6001/5942 6042/6102/6042 +f 5942/6001/5942 5943/6002/5943 6042/6102/6042 +f 6042/6102/6042 5943/6002/5943 6043/6103/6043 +f 5943/6002/5943 5944/6003/5944 6043/6103/6043 +f 6043/6103/6043 5944/6003/5944 6044/6104/6044 +f 5944/6003/5944 5945/6004/5945 6044/6104/6044 +f 6044/6104/6044 5945/6004/5945 6045/6105/6045 +f 5945/6004/5945 5946/6005/5946 6045/6105/6045 +f 6045/6105/6045 5946/6005/5946 6046/6106/6046 +f 5946/6005/5946 5947/6006/5947 6046/6106/6046 +f 6046/6106/6046 5947/6006/5947 6047/6107/6047 +f 5947/6006/5947 5948/6007/5948 6047/6107/6047 +f 6047/6107/6047 5948/6007/5948 6048/6108/6048 +f 5948/6007/5948 5949/6008/5949 6048/6108/6048 +f 6048/6108/6048 5949/6008/5949 6049/6109/6049 +f 5949/6008/5949 5950/6009/5950 6049/6109/6049 +f 6049/6109/6049 5950/6009/5950 6050/6110/6050 +f 5950/6009/5950 5951/6010/5951 6050/6110/6050 +f 6050/6110/6050 5951/6010/5951 6051/6111/6051 +f 5951/6010/5951 5952/6011/5952 6051/6111/6051 +f 6051/6111/6051 5952/6011/5952 6052/6112/6052 +f 5952/6011/5952 5953/6012/5953 6052/6112/6052 +f 6052/6112/6052 5953/6012/5953 6053/6113/6053 +f 5953/6012/5953 5954/6013/5954 6053/6113/6053 +f 6053/6113/6053 5954/6013/5954 6054/6114/6054 +f 5954/6013/5954 5955/6014/5955 6054/6114/6054 +f 6054/6114/6054 5955/6014/5955 6055/6115/6055 +f 5955/6014/5955 5956/6015/5956 6055/6115/6055 +f 6055/6115/6055 5956/6015/5956 6056/6116/6056 +f 5956/6015/5956 5957/6016/5957 6056/6116/6056 +f 6056/6116/6056 5957/6016/5957 6057/6117/6057 +f 5957/6016/5957 5958/6017/5958 6057/6117/6057 +f 6057/6117/6057 5958/6017/5958 6058/6118/6058 +f 5958/6017/5958 5959/6018/5959 6058/6118/6058 +f 6058/6118/6058 5959/6018/5959 6059/6119/6059 +f 5959/6018/5959 5960/6019/5960 6059/6119/6059 +f 6059/6119/6059 5960/6019/5960 6060/6120/6060 +f 5960/6019/5960 5961/6020/5961 6060/6120/6060 +f 6060/6120/6060 5961/6020/5961 6061/6121/6061 +f 5961/6020/5961 5962/6021/5962 6061/6121/6061 +f 6061/6121/6061 5962/6021/5962 6062/6122/6062 +f 5962/6021/5962 5963/6022/5963 6062/6122/6062 +f 6062/6122/6062 5963/6022/5963 6063/6123/6063 +f 5963/6022/5963 5964/6023/5964 6063/6123/6063 +f 6063/6123/6063 5964/6023/5964 6064/6124/6064 +f 5964/6023/5964 5965/6024/5965 6064/6124/6064 +f 6064/6124/6064 5965/6024/5965 6065/6125/6065 +f 5965/6024/5965 5966/6025/5966 6065/6125/6065 +f 6065/6125/6065 5966/6025/5966 6066/6126/6066 +f 5966/6025/5966 5967/6026/5967 6066/6126/6066 +f 6066/6126/6066 5967/6026/5967 6067/6127/6067 +f 5967/6026/5967 5968/6027/5968 6067/6127/6067 +f 6067/6127/6067 5968/6027/5968 6068/6128/6068 +f 5968/6027/5968 5969/6028/5969 6068/6128/6068 +f 6068/6128/6068 5969/6028/5969 6069/6129/6069 +f 5969/6028/5969 5970/6029/5970 6069/6129/6069 +f 6069/6129/6069 5970/6029/5970 6070/6130/6070 +f 5970/6029/5970 5971/6030/5971 6070/6130/6070 +f 6070/6130/6070 5971/6030/5971 6071/6131/6071 +f 5971/6030/5971 5972/6031/5972 6071/6131/6071 +f 6071/6131/6071 5972/6031/5972 6072/6132/6072 +f 5972/6031/5972 5973/6032/5973 6072/6132/6072 +f 6072/6132/6072 5973/6032/5973 6073/6133/6073 +f 5973/6032/5973 5974/6033/5974 6073/6133/6073 +f 6073/6133/6073 5974/6033/5974 6074/6134/6074 +f 5974/6033/5974 5975/6034/5975 6074/6134/6074 +f 6074/6134/6074 5975/6034/5975 6075/6135/6075 +f 5975/6034/5975 5976/6035/5976 6075/6135/6075 +f 6075/6135/6075 5976/6035/5976 6076/6136/6076 +f 5976/6035/5976 5977/6036/5977 6076/6136/6076 +f 6076/6136/6076 5977/6036/5977 6077/6137/6077 +f 5977/6036/5977 5978/6037/5978 6077/6137/6077 +f 6077/6137/6077 5978/6037/5978 6078/6138/6078 +f 5978/6037/5978 5979/6038/5979 6078/6138/6078 +f 6078/6138/6078 5979/6038/5979 6079/6139/6079 +f 5979/6038/5979 5980/6039/5980 6079/6139/6079 +f 6079/6139/6079 5980/6039/5980 6080/6140/6080 +f 5980/6039/5980 5981/6040/5981 6080/6140/6080 +f 6080/6140/6080 5981/6040/5981 6081/6141/6081 +f 5981/6040/5981 5982/6041/5982 6081/6141/6081 +f 6081/6141/6081 5982/6041/5982 6082/6142/6082 +f 5982/6041/5982 5983/6042/5983 6082/6142/6082 +f 6082/6142/6082 5983/6042/5983 6083/6143/6083 +f 5983/6042/5983 5984/6043/5984 6083/6143/6083 +f 6083/6143/6083 5984/6043/5984 6084/6144/6084 +f 5984/6043/5984 5985/6044/5985 6084/6144/6084 +f 6084/6144/6084 5985/6044/5985 6085/6145/6085 +f 5985/6044/5985 5986/6045/5986 6085/6145/6085 +f 6085/6145/6085 5986/6045/5986 6086/6146/6086 +f 5986/6045/5986 5987/6046/5987 6086/6146/6086 +f 6086/6146/6086 5987/6046/5987 6087/6147/6087 +f 5987/6046/5987 5988/6047/5988 6087/6147/6087 +f 6087/6147/6087 5988/6047/5988 6088/6148/6088 +f 5988/6047/5988 5989/6048/5989 6088/6148/6088 +f 6088/6148/6088 5989/6048/5989 6089/6149/6089 +f 5989/6048/5989 5990/6049/5990 6089/6149/6089 +f 6089/6149/6089 5990/6049/5990 6090/6150/6090 +f 5990/6049/5990 5991/6050/5991 6090/6150/6090 +f 6090/6150/6090 5991/6050/5991 6091/6151/6091 +f 5991/6050/5991 5992/6051/5992 6091/6151/6091 +f 6091/6151/6091 5992/6051/5992 6092/6152/6092 +f 5992/6051/5992 5993/6052/5993 6092/6152/6092 +f 6092/6152/6092 5993/6052/5993 6093/6153/6093 +f 5993/6052/5993 5994/6053/5994 6093/6153/6093 +f 6093/6153/6093 5994/6053/5994 6094/6154/6094 +f 5994/6053/5994 5995/6054/5995 6094/6154/6094 +f 6094/6154/6094 5995/6054/5995 6095/6155/6095 +f 5995/6054/5995 5996/6055/5996 6095/6155/6095 +f 6095/6155/6095 5996/6055/5996 6096/6156/6096 +f 5996/6055/5996 5997/6056/5997 6096/6156/6096 +f 6096/6156/6096 5997/6056/5997 6097/6157/6097 +f 5997/6056/5997 5998/6057/5998 6097/6157/6097 +f 6097/6157/6097 5998/6057/5998 6098/6158/6098 +f 5998/6057/5998 5999/6058/5999 6098/6158/6098 +f 6098/6158/6098 5999/6058/5999 6099/6159/6099 +f 5999/6058/5999 6000/6059/6000 6099/6159/6099 +f 6099/6159/6099 6000/6059/6000 6100/6160/6100 +f 6000/6059/6000 5901/6060/5901 6100/6160/6100 +f 6100/6160/6100 5901/6060/5901 6001/6161/6001 +f 6001/6061/6001 6002/6062/6002 6101/6162/6101 +f 6101/6162/6101 6002/6062/6002 6102/6163/6102 +f 6002/6062/6002 6003/6063/6003 6102/6163/6102 +f 6102/6163/6102 6003/6063/6003 6103/6164/6103 +f 6003/6063/6003 6004/6064/6004 6103/6164/6103 +f 6103/6164/6103 6004/6064/6004 6104/6165/6104 +f 6004/6064/6004 6005/6065/6005 6104/6165/6104 +f 6104/6165/6104 6005/6065/6005 6105/6166/6105 +f 6005/6065/6005 6006/6066/6006 6105/6166/6105 +f 6105/6166/6105 6006/6066/6006 6106/6167/6106 +f 6006/6066/6006 6007/6067/6007 6106/6167/6106 +f 6106/6167/6106 6007/6067/6007 6107/6168/6107 +f 6007/6067/6007 6008/6068/6008 6107/6168/6107 +f 6107/6168/6107 6008/6068/6008 6108/6169/6108 +f 6008/6068/6008 6009/6069/6009 6108/6169/6108 +f 6108/6169/6108 6009/6069/6009 6109/6170/6109 +f 6009/6069/6009 6010/6070/6010 6109/6170/6109 +f 6109/6170/6109 6010/6070/6010 6110/6171/6110 +f 6010/6070/6010 6011/6071/6011 6110/6171/6110 +f 6110/6171/6110 6011/6071/6011 6111/6172/6111 +f 6011/6071/6011 6012/6072/6012 6111/6172/6111 +f 6111/6172/6111 6012/6072/6012 6112/6173/6112 +f 6012/6072/6012 6013/6073/6013 6112/6173/6112 +f 6112/6173/6112 6013/6073/6013 6113/6174/6113 +f 6013/6073/6013 6014/6074/6014 6113/6174/6113 +f 6113/6174/6113 6014/6074/6014 6114/6175/6114 +f 6014/6074/6014 6015/6075/6015 6114/6175/6114 +f 6114/6175/6114 6015/6075/6015 6115/6176/6115 +f 6015/6075/6015 6016/6076/6016 6115/6176/6115 +f 6115/6176/6115 6016/6076/6016 6116/6177/6116 +f 6016/6076/6016 6017/6077/6017 6116/6177/6116 +f 6116/6177/6116 6017/6077/6017 6117/6178/6117 +f 6017/6077/6017 6018/6078/6018 6117/6178/6117 +f 6117/6178/6117 6018/6078/6018 6118/6179/6118 +f 6018/6078/6018 6019/6079/6019 6118/6179/6118 +f 6118/6179/6118 6019/6079/6019 6119/6180/6119 +f 6019/6079/6019 6020/6080/6020 6119/6180/6119 +f 6119/6180/6119 6020/6080/6020 6120/6181/6120 +f 6020/6080/6020 6021/6081/6021 6120/6181/6120 +f 6120/6181/6120 6021/6081/6021 6121/6182/6121 +f 6021/6081/6021 6022/6082/6022 6121/6182/6121 +f 6121/6182/6121 6022/6082/6022 6122/6183/6122 +f 6022/6082/6022 6023/6083/6023 6122/6183/6122 +f 6122/6183/6122 6023/6083/6023 6123/6184/6123 +f 6023/6083/6023 6024/6084/6024 6123/6184/6123 +f 6123/6184/6123 6024/6084/6024 6124/6185/6124 +f 6024/6084/6024 6025/6085/6025 6124/6185/6124 +f 6124/6185/6124 6025/6085/6025 6125/6186/6125 +f 6025/6085/6025 6026/6086/6026 6125/6186/6125 +f 6125/6186/6125 6026/6086/6026 6126/6187/6126 +f 6026/6086/6026 6027/6087/6027 6126/6187/6126 +f 6126/6187/6126 6027/6087/6027 6127/6188/6127 +f 6027/6087/6027 6028/6088/6028 6127/6188/6127 +f 6127/6188/6127 6028/6088/6028 6128/6189/6128 +f 6028/6088/6028 6029/6089/6029 6128/6189/6128 +f 6128/6189/6128 6029/6089/6029 6129/6190/6129 +f 6029/6089/6029 6030/6090/6030 6129/6190/6129 +f 6129/6190/6129 6030/6090/6030 6130/6191/6130 +f 6030/6090/6030 6031/6091/6031 6130/6191/6130 +f 6130/6191/6130 6031/6091/6031 6131/6192/6131 +f 6031/6091/6031 6032/6092/6032 6131/6192/6131 +f 6131/6192/6131 6032/6092/6032 6132/6193/6132 +f 6032/6092/6032 6033/6093/6033 6132/6193/6132 +f 6132/6193/6132 6033/6093/6033 6133/6194/6133 +f 6033/6093/6033 6034/6094/6034 6133/6194/6133 +f 6133/6194/6133 6034/6094/6034 6134/6195/6134 +f 6034/6094/6034 6035/6095/6035 6134/6195/6134 +f 6134/6195/6134 6035/6095/6035 6135/6196/6135 +f 6035/6095/6035 6036/6096/6036 6135/6196/6135 +f 6135/6196/6135 6036/6096/6036 6136/6197/6136 +f 6036/6096/6036 6037/6097/6037 6136/6197/6136 +f 6136/6197/6136 6037/6097/6037 6137/6198/6137 +f 6037/6097/6037 6038/6098/6038 6137/6198/6137 +f 6137/6198/6137 6038/6098/6038 6138/6199/6138 +f 6038/6098/6038 6039/6099/6039 6138/6199/6138 +f 6138/6199/6138 6039/6099/6039 6139/6200/6139 +f 6039/6099/6039 6040/6100/6040 6139/6200/6139 +f 6139/6200/6139 6040/6100/6040 6140/6201/6140 +f 6040/6100/6040 6041/6101/6041 6140/6201/6140 +f 6140/6201/6140 6041/6101/6041 6141/6202/6141 +f 6041/6101/6041 6042/6102/6042 6141/6202/6141 +f 6141/6202/6141 6042/6102/6042 6142/6203/6142 +f 6042/6102/6042 6043/6103/6043 6142/6203/6142 +f 6142/6203/6142 6043/6103/6043 6143/6204/6143 +f 6043/6103/6043 6044/6104/6044 6143/6204/6143 +f 6143/6204/6143 6044/6104/6044 6144/6205/6144 +f 6044/6104/6044 6045/6105/6045 6144/6205/6144 +f 6144/6205/6144 6045/6105/6045 6145/6206/6145 +f 6045/6105/6045 6046/6106/6046 6145/6206/6145 +f 6145/6206/6145 6046/6106/6046 6146/6207/6146 +f 6046/6106/6046 6047/6107/6047 6146/6207/6146 +f 6146/6207/6146 6047/6107/6047 6147/6208/6147 +f 6047/6107/6047 6048/6108/6048 6147/6208/6147 +f 6147/6208/6147 6048/6108/6048 6148/6209/6148 +f 6048/6108/6048 6049/6109/6049 6148/6209/6148 +f 6148/6209/6148 6049/6109/6049 6149/6210/6149 +f 6049/6109/6049 6050/6110/6050 6149/6210/6149 +f 6149/6210/6149 6050/6110/6050 6150/6211/6150 +f 6050/6110/6050 6051/6111/6051 6150/6211/6150 +f 6150/6211/6150 6051/6111/6051 6151/6212/6151 +f 6051/6111/6051 6052/6112/6052 6151/6212/6151 +f 6151/6212/6151 6052/6112/6052 6152/6213/6152 +f 6052/6112/6052 6053/6113/6053 6152/6213/6152 +f 6152/6213/6152 6053/6113/6053 6153/6214/6153 +f 6053/6113/6053 6054/6114/6054 6153/6214/6153 +f 6153/6214/6153 6054/6114/6054 6154/6215/6154 +f 6054/6114/6054 6055/6115/6055 6154/6215/6154 +f 6154/6215/6154 6055/6115/6055 6155/6216/6155 +f 6055/6115/6055 6056/6116/6056 6155/6216/6155 +f 6155/6216/6155 6056/6116/6056 6156/6217/6156 +f 6056/6116/6056 6057/6117/6057 6156/6217/6156 +f 6156/6217/6156 6057/6117/6057 6157/6218/6157 +f 6057/6117/6057 6058/6118/6058 6157/6218/6157 +f 6157/6218/6157 6058/6118/6058 6158/6219/6158 +f 6058/6118/6058 6059/6119/6059 6158/6219/6158 +f 6158/6219/6158 6059/6119/6059 6159/6220/6159 +f 6059/6119/6059 6060/6120/6060 6159/6220/6159 +f 6159/6220/6159 6060/6120/6060 6160/6221/6160 +f 6060/6120/6060 6061/6121/6061 6160/6221/6160 +f 6160/6221/6160 6061/6121/6061 6161/6222/6161 +f 6061/6121/6061 6062/6122/6062 6161/6222/6161 +f 6161/6222/6161 6062/6122/6062 6162/6223/6162 +f 6062/6122/6062 6063/6123/6063 6162/6223/6162 +f 6162/6223/6162 6063/6123/6063 6163/6224/6163 +f 6063/6123/6063 6064/6124/6064 6163/6224/6163 +f 6163/6224/6163 6064/6124/6064 6164/6225/6164 +f 6064/6124/6064 6065/6125/6065 6164/6225/6164 +f 6164/6225/6164 6065/6125/6065 6165/6226/6165 +f 6065/6125/6065 6066/6126/6066 6165/6226/6165 +f 6165/6226/6165 6066/6126/6066 6166/6227/6166 +f 6066/6126/6066 6067/6127/6067 6166/6227/6166 +f 6166/6227/6166 6067/6127/6067 6167/6228/6167 +f 6067/6127/6067 6068/6128/6068 6167/6228/6167 +f 6167/6228/6167 6068/6128/6068 6168/6229/6168 +f 6068/6128/6068 6069/6129/6069 6168/6229/6168 +f 6168/6229/6168 6069/6129/6069 6169/6230/6169 +f 6069/6129/6069 6070/6130/6070 6169/6230/6169 +f 6169/6230/6169 6070/6130/6070 6170/6231/6170 +f 6070/6130/6070 6071/6131/6071 6170/6231/6170 +f 6170/6231/6170 6071/6131/6071 6171/6232/6171 +f 6071/6131/6071 6072/6132/6072 6171/6232/6171 +f 6171/6232/6171 6072/6132/6072 6172/6233/6172 +f 6072/6132/6072 6073/6133/6073 6172/6233/6172 +f 6172/6233/6172 6073/6133/6073 6173/6234/6173 +f 6073/6133/6073 6074/6134/6074 6173/6234/6173 +f 6173/6234/6173 6074/6134/6074 6174/6235/6174 +f 6074/6134/6074 6075/6135/6075 6174/6235/6174 +f 6174/6235/6174 6075/6135/6075 6175/6236/6175 +f 6075/6135/6075 6076/6136/6076 6175/6236/6175 +f 6175/6236/6175 6076/6136/6076 6176/6237/6176 +f 6076/6136/6076 6077/6137/6077 6176/6237/6176 +f 6176/6237/6176 6077/6137/6077 6177/6238/6177 +f 6077/6137/6077 6078/6138/6078 6177/6238/6177 +f 6177/6238/6177 6078/6138/6078 6178/6239/6178 +f 6078/6138/6078 6079/6139/6079 6178/6239/6178 +f 6178/6239/6178 6079/6139/6079 6179/6240/6179 +f 6079/6139/6079 6080/6140/6080 6179/6240/6179 +f 6179/6240/6179 6080/6140/6080 6180/6241/6180 +f 6080/6140/6080 6081/6141/6081 6180/6241/6180 +f 6180/6241/6180 6081/6141/6081 6181/6242/6181 +f 6081/6141/6081 6082/6142/6082 6181/6242/6181 +f 6181/6242/6181 6082/6142/6082 6182/6243/6182 +f 6082/6142/6082 6083/6143/6083 6182/6243/6182 +f 6182/6243/6182 6083/6143/6083 6183/6244/6183 +f 6083/6143/6083 6084/6144/6084 6183/6244/6183 +f 6183/6244/6183 6084/6144/6084 6184/6245/6184 +f 6084/6144/6084 6085/6145/6085 6184/6245/6184 +f 6184/6245/6184 6085/6145/6085 6185/6246/6185 +f 6085/6145/6085 6086/6146/6086 6185/6246/6185 +f 6185/6246/6185 6086/6146/6086 6186/6247/6186 +f 6086/6146/6086 6087/6147/6087 6186/6247/6186 +f 6186/6247/6186 6087/6147/6087 6187/6248/6187 +f 6087/6147/6087 6088/6148/6088 6187/6248/6187 +f 6187/6248/6187 6088/6148/6088 6188/6249/6188 +f 6088/6148/6088 6089/6149/6089 6188/6249/6188 +f 6188/6249/6188 6089/6149/6089 6189/6250/6189 +f 6089/6149/6089 6090/6150/6090 6189/6250/6189 +f 6189/6250/6189 6090/6150/6090 6190/6251/6190 +f 6090/6150/6090 6091/6151/6091 6190/6251/6190 +f 6190/6251/6190 6091/6151/6091 6191/6252/6191 +f 6091/6151/6091 6092/6152/6092 6191/6252/6191 +f 6191/6252/6191 6092/6152/6092 6192/6253/6192 +f 6092/6152/6092 6093/6153/6093 6192/6253/6192 +f 6192/6253/6192 6093/6153/6093 6193/6254/6193 +f 6093/6153/6093 6094/6154/6094 6193/6254/6193 +f 6193/6254/6193 6094/6154/6094 6194/6255/6194 +f 6094/6154/6094 6095/6155/6095 6194/6255/6194 +f 6194/6255/6194 6095/6155/6095 6195/6256/6195 +f 6095/6155/6095 6096/6156/6096 6195/6256/6195 +f 6195/6256/6195 6096/6156/6096 6196/6257/6196 +f 6096/6156/6096 6097/6157/6097 6196/6257/6196 +f 6196/6257/6196 6097/6157/6097 6197/6258/6197 +f 6097/6157/6097 6098/6158/6098 6197/6258/6197 +f 6197/6258/6197 6098/6158/6098 6198/6259/6198 +f 6098/6158/6098 6099/6159/6099 6198/6259/6198 +f 6198/6259/6198 6099/6159/6099 6199/6260/6199 +f 6099/6159/6099 6100/6160/6100 6199/6260/6199 +f 6199/6260/6199 6100/6160/6100 6200/6261/6200 +f 6100/6160/6100 6001/6161/6001 6200/6261/6200 +f 6200/6261/6200 6001/6161/6001 6101/6262/6101 +f 6101/6162/6101 6102/6163/6102 6201/6263/6201 +f 6201/6263/6201 6102/6163/6102 6202/6264/6202 +f 6102/6163/6102 6103/6164/6103 6202/6264/6202 +f 6202/6264/6202 6103/6164/6103 6203/6265/6203 +f 6103/6164/6103 6104/6165/6104 6203/6265/6203 +f 6203/6265/6203 6104/6165/6104 6204/6266/6204 +f 6104/6165/6104 6105/6166/6105 6204/6266/6204 +f 6204/6266/6204 6105/6166/6105 6205/6267/6205 +f 6105/6166/6105 6106/6167/6106 6205/6267/6205 +f 6205/6267/6205 6106/6167/6106 6206/6268/6206 +f 6106/6167/6106 6107/6168/6107 6206/6268/6206 +f 6206/6268/6206 6107/6168/6107 6207/6269/6207 +f 6107/6168/6107 6108/6169/6108 6207/6269/6207 +f 6207/6269/6207 6108/6169/6108 6208/6270/6208 +f 6108/6169/6108 6109/6170/6109 6208/6270/6208 +f 6208/6270/6208 6109/6170/6109 6209/6271/6209 +f 6109/6170/6109 6110/6171/6110 6209/6271/6209 +f 6209/6271/6209 6110/6171/6110 6210/6272/6210 +f 6110/6171/6110 6111/6172/6111 6210/6272/6210 +f 6210/6272/6210 6111/6172/6111 6211/6273/6211 +f 6111/6172/6111 6112/6173/6112 6211/6273/6211 +f 6211/6273/6211 6112/6173/6112 6212/6274/6212 +f 6112/6173/6112 6113/6174/6113 6212/6274/6212 +f 6212/6274/6212 6113/6174/6113 6213/6275/6213 +f 6113/6174/6113 6114/6175/6114 6213/6275/6213 +f 6213/6275/6213 6114/6175/6114 6214/6276/6214 +f 6114/6175/6114 6115/6176/6115 6214/6276/6214 +f 6214/6276/6214 6115/6176/6115 6215/6277/6215 +f 6115/6176/6115 6116/6177/6116 6215/6277/6215 +f 6215/6277/6215 6116/6177/6116 6216/6278/6216 +f 6116/6177/6116 6117/6178/6117 6216/6278/6216 +f 6216/6278/6216 6117/6178/6117 6217/6279/6217 +f 6117/6178/6117 6118/6179/6118 6217/6279/6217 +f 6217/6279/6217 6118/6179/6118 6218/6280/6218 +f 6118/6179/6118 6119/6180/6119 6218/6280/6218 +f 6218/6280/6218 6119/6180/6119 6219/6281/6219 +f 6119/6180/6119 6120/6181/6120 6219/6281/6219 +f 6219/6281/6219 6120/6181/6120 6220/6282/6220 +f 6120/6181/6120 6121/6182/6121 6220/6282/6220 +f 6220/6282/6220 6121/6182/6121 6221/6283/6221 +f 6121/6182/6121 6122/6183/6122 6221/6283/6221 +f 6221/6283/6221 6122/6183/6122 6222/6284/6222 +f 6122/6183/6122 6123/6184/6123 6222/6284/6222 +f 6222/6284/6222 6123/6184/6123 6223/6285/6223 +f 6123/6184/6123 6124/6185/6124 6223/6285/6223 +f 6223/6285/6223 6124/6185/6124 6224/6286/6224 +f 6124/6185/6124 6125/6186/6125 6224/6286/6224 +f 6224/6286/6224 6125/6186/6125 6225/6287/6225 +f 6125/6186/6125 6126/6187/6126 6225/6287/6225 +f 6225/6287/6225 6126/6187/6126 6226/6288/6226 +f 6126/6187/6126 6127/6188/6127 6226/6288/6226 +f 6226/6288/6226 6127/6188/6127 6227/6289/6227 +f 6127/6188/6127 6128/6189/6128 6227/6289/6227 +f 6227/6289/6227 6128/6189/6128 6228/6290/6228 +f 6128/6189/6128 6129/6190/6129 6228/6290/6228 +f 6228/6290/6228 6129/6190/6129 6229/6291/6229 +f 6129/6190/6129 6130/6191/6130 6229/6291/6229 +f 6229/6291/6229 6130/6191/6130 6230/6292/6230 +f 6130/6191/6130 6131/6192/6131 6230/6292/6230 +f 6230/6292/6230 6131/6192/6131 6231/6293/6231 +f 6131/6192/6131 6132/6193/6132 6231/6293/6231 +f 6231/6293/6231 6132/6193/6132 6232/6294/6232 +f 6132/6193/6132 6133/6194/6133 6232/6294/6232 +f 6232/6294/6232 6133/6194/6133 6233/6295/6233 +f 6133/6194/6133 6134/6195/6134 6233/6295/6233 +f 6233/6295/6233 6134/6195/6134 6234/6296/6234 +f 6134/6195/6134 6135/6196/6135 6234/6296/6234 +f 6234/6296/6234 6135/6196/6135 6235/6297/6235 +f 6135/6196/6135 6136/6197/6136 6235/6297/6235 +f 6235/6297/6235 6136/6197/6136 6236/6298/6236 +f 6136/6197/6136 6137/6198/6137 6236/6298/6236 +f 6236/6298/6236 6137/6198/6137 6237/6299/6237 +f 6137/6198/6137 6138/6199/6138 6237/6299/6237 +f 6237/6299/6237 6138/6199/6138 6238/6300/6238 +f 6138/6199/6138 6139/6200/6139 6238/6300/6238 +f 6238/6300/6238 6139/6200/6139 6239/6301/6239 +f 6139/6200/6139 6140/6201/6140 6239/6301/6239 +f 6239/6301/6239 6140/6201/6140 6240/6302/6240 +f 6140/6201/6140 6141/6202/6141 6240/6302/6240 +f 6240/6302/6240 6141/6202/6141 6241/6303/6241 +f 6141/6202/6141 6142/6203/6142 6241/6303/6241 +f 6241/6303/6241 6142/6203/6142 6242/6304/6242 +f 6142/6203/6142 6143/6204/6143 6242/6304/6242 +f 6242/6304/6242 6143/6204/6143 6243/6305/6243 +f 6143/6204/6143 6144/6205/6144 6243/6305/6243 +f 6243/6305/6243 6144/6205/6144 6244/6306/6244 +f 6144/6205/6144 6145/6206/6145 6244/6306/6244 +f 6244/6306/6244 6145/6206/6145 6245/6307/6245 +f 6145/6206/6145 6146/6207/6146 6245/6307/6245 +f 6245/6307/6245 6146/6207/6146 6246/6308/6246 +f 6146/6207/6146 6147/6208/6147 6246/6308/6246 +f 6246/6308/6246 6147/6208/6147 6247/6309/6247 +f 6147/6208/6147 6148/6209/6148 6247/6309/6247 +f 6247/6309/6247 6148/6209/6148 6248/6310/6248 +f 6148/6209/6148 6149/6210/6149 6248/6310/6248 +f 6248/6310/6248 6149/6210/6149 6249/6311/6249 +f 6149/6210/6149 6150/6211/6150 6249/6311/6249 +f 6249/6311/6249 6150/6211/6150 6250/6312/6250 +f 6150/6211/6150 6151/6212/6151 6250/6312/6250 +f 6250/6312/6250 6151/6212/6151 6251/6313/6251 +f 6151/6212/6151 6152/6213/6152 6251/6313/6251 +f 6251/6313/6251 6152/6213/6152 6252/6314/6252 +f 6152/6213/6152 6153/6214/6153 6252/6314/6252 +f 6252/6314/6252 6153/6214/6153 6253/6315/6253 +f 6153/6214/6153 6154/6215/6154 6253/6315/6253 +f 6253/6315/6253 6154/6215/6154 6254/6316/6254 +f 6154/6215/6154 6155/6216/6155 6254/6316/6254 +f 6254/6316/6254 6155/6216/6155 6255/6317/6255 +f 6155/6216/6155 6156/6217/6156 6255/6317/6255 +f 6255/6317/6255 6156/6217/6156 6256/6318/6256 +f 6156/6217/6156 6157/6218/6157 6256/6318/6256 +f 6256/6318/6256 6157/6218/6157 6257/6319/6257 +f 6157/6218/6157 6158/6219/6158 6257/6319/6257 +f 6257/6319/6257 6158/6219/6158 6258/6320/6258 +f 6158/6219/6158 6159/6220/6159 6258/6320/6258 +f 6258/6320/6258 6159/6220/6159 6259/6321/6259 +f 6159/6220/6159 6160/6221/6160 6259/6321/6259 +f 6259/6321/6259 6160/6221/6160 6260/6322/6260 +f 6160/6221/6160 6161/6222/6161 6260/6322/6260 +f 6260/6322/6260 6161/6222/6161 6261/6323/6261 +f 6161/6222/6161 6162/6223/6162 6261/6323/6261 +f 6261/6323/6261 6162/6223/6162 6262/6324/6262 +f 6162/6223/6162 6163/6224/6163 6262/6324/6262 +f 6262/6324/6262 6163/6224/6163 6263/6325/6263 +f 6163/6224/6163 6164/6225/6164 6263/6325/6263 +f 6263/6325/6263 6164/6225/6164 6264/6326/6264 +f 6164/6225/6164 6165/6226/6165 6264/6326/6264 +f 6264/6326/6264 6165/6226/6165 6265/6327/6265 +f 6165/6226/6165 6166/6227/6166 6265/6327/6265 +f 6265/6327/6265 6166/6227/6166 6266/6328/6266 +f 6166/6227/6166 6167/6228/6167 6266/6328/6266 +f 6266/6328/6266 6167/6228/6167 6267/6329/6267 +f 6167/6228/6167 6168/6229/6168 6267/6329/6267 +f 6267/6329/6267 6168/6229/6168 6268/6330/6268 +f 6168/6229/6168 6169/6230/6169 6268/6330/6268 +f 6268/6330/6268 6169/6230/6169 6269/6331/6269 +f 6169/6230/6169 6170/6231/6170 6269/6331/6269 +f 6269/6331/6269 6170/6231/6170 6270/6332/6270 +f 6170/6231/6170 6171/6232/6171 6270/6332/6270 +f 6270/6332/6270 6171/6232/6171 6271/6333/6271 +f 6171/6232/6171 6172/6233/6172 6271/6333/6271 +f 6271/6333/6271 6172/6233/6172 6272/6334/6272 +f 6172/6233/6172 6173/6234/6173 6272/6334/6272 +f 6272/6334/6272 6173/6234/6173 6273/6335/6273 +f 6173/6234/6173 6174/6235/6174 6273/6335/6273 +f 6273/6335/6273 6174/6235/6174 6274/6336/6274 +f 6174/6235/6174 6175/6236/6175 6274/6336/6274 +f 6274/6336/6274 6175/6236/6175 6275/6337/6275 +f 6175/6236/6175 6176/6237/6176 6275/6337/6275 +f 6275/6337/6275 6176/6237/6176 6276/6338/6276 +f 6176/6237/6176 6177/6238/6177 6276/6338/6276 +f 6276/6338/6276 6177/6238/6177 6277/6339/6277 +f 6177/6238/6177 6178/6239/6178 6277/6339/6277 +f 6277/6339/6277 6178/6239/6178 6278/6340/6278 +f 6178/6239/6178 6179/6240/6179 6278/6340/6278 +f 6278/6340/6278 6179/6240/6179 6279/6341/6279 +f 6179/6240/6179 6180/6241/6180 6279/6341/6279 +f 6279/6341/6279 6180/6241/6180 6280/6342/6280 +f 6180/6241/6180 6181/6242/6181 6280/6342/6280 +f 6280/6342/6280 6181/6242/6181 6281/6343/6281 +f 6181/6242/6181 6182/6243/6182 6281/6343/6281 +f 6281/6343/6281 6182/6243/6182 6282/6344/6282 +f 6182/6243/6182 6183/6244/6183 6282/6344/6282 +f 6282/6344/6282 6183/6244/6183 6283/6345/6283 +f 6183/6244/6183 6184/6245/6184 6283/6345/6283 +f 6283/6345/6283 6184/6245/6184 6284/6346/6284 +f 6184/6245/6184 6185/6246/6185 6284/6346/6284 +f 6284/6346/6284 6185/6246/6185 6285/6347/6285 +f 6185/6246/6185 6186/6247/6186 6285/6347/6285 +f 6285/6347/6285 6186/6247/6186 6286/6348/6286 +f 6186/6247/6186 6187/6248/6187 6286/6348/6286 +f 6286/6348/6286 6187/6248/6187 6287/6349/6287 +f 6187/6248/6187 6188/6249/6188 6287/6349/6287 +f 6287/6349/6287 6188/6249/6188 6288/6350/6288 +f 6188/6249/6188 6189/6250/6189 6288/6350/6288 +f 6288/6350/6288 6189/6250/6189 6289/6351/6289 +f 6189/6250/6189 6190/6251/6190 6289/6351/6289 +f 6289/6351/6289 6190/6251/6190 6290/6352/6290 +f 6190/6251/6190 6191/6252/6191 6290/6352/6290 +f 6290/6352/6290 6191/6252/6191 6291/6353/6291 +f 6191/6252/6191 6192/6253/6192 6291/6353/6291 +f 6291/6353/6291 6192/6253/6192 6292/6354/6292 +f 6192/6253/6192 6193/6254/6193 6292/6354/6292 +f 6292/6354/6292 6193/6254/6193 6293/6355/6293 +f 6193/6254/6193 6194/6255/6194 6293/6355/6293 +f 6293/6355/6293 6194/6255/6194 6294/6356/6294 +f 6194/6255/6194 6195/6256/6195 6294/6356/6294 +f 6294/6356/6294 6195/6256/6195 6295/6357/6295 +f 6195/6256/6195 6196/6257/6196 6295/6357/6295 +f 6295/6357/6295 6196/6257/6196 6296/6358/6296 +f 6196/6257/6196 6197/6258/6197 6296/6358/6296 +f 6296/6358/6296 6197/6258/6197 6297/6359/6297 +f 6197/6258/6197 6198/6259/6198 6297/6359/6297 +f 6297/6359/6297 6198/6259/6198 6298/6360/6298 +f 6198/6259/6198 6199/6260/6199 6298/6360/6298 +f 6298/6360/6298 6199/6260/6199 6299/6361/6299 +f 6199/6260/6199 6200/6261/6200 6299/6361/6299 +f 6299/6361/6299 6200/6261/6200 6300/6362/6300 +f 6200/6261/6200 6101/6262/6101 6300/6362/6300 +f 6300/6362/6300 6101/6262/6101 6201/6363/6201 +f 6201/6263/6201 6202/6264/6202 6301/6364/6301 +f 6301/6364/6301 6202/6264/6202 6302/6365/6302 +f 6202/6264/6202 6203/6265/6203 6302/6365/6302 +f 6302/6365/6302 6203/6265/6203 6303/6366/6303 +f 6203/6265/6203 6204/6266/6204 6303/6366/6303 +f 6303/6366/6303 6204/6266/6204 6304/6367/6304 +f 6204/6266/6204 6205/6267/6205 6304/6367/6304 +f 6304/6367/6304 6205/6267/6205 6305/6368/6305 +f 6205/6267/6205 6206/6268/6206 6305/6368/6305 +f 6305/6368/6305 6206/6268/6206 6306/6369/6306 +f 6206/6268/6206 6207/6269/6207 6306/6369/6306 +f 6306/6369/6306 6207/6269/6207 6307/6370/6307 +f 6207/6269/6207 6208/6270/6208 6307/6370/6307 +f 6307/6370/6307 6208/6270/6208 6308/6371/6308 +f 6208/6270/6208 6209/6271/6209 6308/6371/6308 +f 6308/6371/6308 6209/6271/6209 6309/6372/6309 +f 6209/6271/6209 6210/6272/6210 6309/6372/6309 +f 6309/6372/6309 6210/6272/6210 6310/6373/6310 +f 6210/6272/6210 6211/6273/6211 6310/6373/6310 +f 6310/6373/6310 6211/6273/6211 6311/6374/6311 +f 6211/6273/6211 6212/6274/6212 6311/6374/6311 +f 6311/6374/6311 6212/6274/6212 6312/6375/6312 +f 6212/6274/6212 6213/6275/6213 6312/6375/6312 +f 6312/6375/6312 6213/6275/6213 6313/6376/6313 +f 6213/6275/6213 6214/6276/6214 6313/6376/6313 +f 6313/6376/6313 6214/6276/6214 6314/6377/6314 +f 6214/6276/6214 6215/6277/6215 6314/6377/6314 +f 6314/6377/6314 6215/6277/6215 6315/6378/6315 +f 6215/6277/6215 6216/6278/6216 6315/6378/6315 +f 6315/6378/6315 6216/6278/6216 6316/6379/6316 +f 6216/6278/6216 6217/6279/6217 6316/6379/6316 +f 6316/6379/6316 6217/6279/6217 6317/6380/6317 +f 6217/6279/6217 6218/6280/6218 6317/6380/6317 +f 6317/6380/6317 6218/6280/6218 6318/6381/6318 +f 6218/6280/6218 6219/6281/6219 6318/6381/6318 +f 6318/6381/6318 6219/6281/6219 6319/6382/6319 +f 6219/6281/6219 6220/6282/6220 6319/6382/6319 +f 6319/6382/6319 6220/6282/6220 6320/6383/6320 +f 6220/6282/6220 6221/6283/6221 6320/6383/6320 +f 6320/6383/6320 6221/6283/6221 6321/6384/6321 +f 6221/6283/6221 6222/6284/6222 6321/6384/6321 +f 6321/6384/6321 6222/6284/6222 6322/6385/6322 +f 6222/6284/6222 6223/6285/6223 6322/6385/6322 +f 6322/6385/6322 6223/6285/6223 6323/6386/6323 +f 6223/6285/6223 6224/6286/6224 6323/6386/6323 +f 6323/6386/6323 6224/6286/6224 6324/6387/6324 +f 6224/6286/6224 6225/6287/6225 6324/6387/6324 +f 6324/6387/6324 6225/6287/6225 6325/6388/6325 +f 6225/6287/6225 6226/6288/6226 6325/6388/6325 +f 6325/6388/6325 6226/6288/6226 6326/6389/6326 +f 6226/6288/6226 6227/6289/6227 6326/6389/6326 +f 6326/6389/6326 6227/6289/6227 6327/6390/6327 +f 6227/6289/6227 6228/6290/6228 6327/6390/6327 +f 6327/6390/6327 6228/6290/6228 6328/6391/6328 +f 6228/6290/6228 6229/6291/6229 6328/6391/6328 +f 6328/6391/6328 6229/6291/6229 6329/6392/6329 +f 6229/6291/6229 6230/6292/6230 6329/6392/6329 +f 6329/6392/6329 6230/6292/6230 6330/6393/6330 +f 6230/6292/6230 6231/6293/6231 6330/6393/6330 +f 6330/6393/6330 6231/6293/6231 6331/6394/6331 +f 6231/6293/6231 6232/6294/6232 6331/6394/6331 +f 6331/6394/6331 6232/6294/6232 6332/6395/6332 +f 6232/6294/6232 6233/6295/6233 6332/6395/6332 +f 6332/6395/6332 6233/6295/6233 6333/6396/6333 +f 6233/6295/6233 6234/6296/6234 6333/6396/6333 +f 6333/6396/6333 6234/6296/6234 6334/6397/6334 +f 6234/6296/6234 6235/6297/6235 6334/6397/6334 +f 6334/6397/6334 6235/6297/6235 6335/6398/6335 +f 6235/6297/6235 6236/6298/6236 6335/6398/6335 +f 6335/6398/6335 6236/6298/6236 6336/6399/6336 +f 6236/6298/6236 6237/6299/6237 6336/6399/6336 +f 6336/6399/6336 6237/6299/6237 6337/6400/6337 +f 6237/6299/6237 6238/6300/6238 6337/6400/6337 +f 6337/6400/6337 6238/6300/6238 6338/6401/6338 +f 6238/6300/6238 6239/6301/6239 6338/6401/6338 +f 6338/6401/6338 6239/6301/6239 6339/6402/6339 +f 6239/6301/6239 6240/6302/6240 6339/6402/6339 +f 6339/6402/6339 6240/6302/6240 6340/6403/6340 +f 6240/6302/6240 6241/6303/6241 6340/6403/6340 +f 6340/6403/6340 6241/6303/6241 6341/6404/6341 +f 6241/6303/6241 6242/6304/6242 6341/6404/6341 +f 6341/6404/6341 6242/6304/6242 6342/6405/6342 +f 6242/6304/6242 6243/6305/6243 6342/6405/6342 +f 6342/6405/6342 6243/6305/6243 6343/6406/6343 +f 6243/6305/6243 6244/6306/6244 6343/6406/6343 +f 6343/6406/6343 6244/6306/6244 6344/6407/6344 +f 6244/6306/6244 6245/6307/6245 6344/6407/6344 +f 6344/6407/6344 6245/6307/6245 6345/6408/6345 +f 6245/6307/6245 6246/6308/6246 6345/6408/6345 +f 6345/6408/6345 6246/6308/6246 6346/6409/6346 +f 6246/6308/6246 6247/6309/6247 6346/6409/6346 +f 6346/6409/6346 6247/6309/6247 6347/6410/6347 +f 6247/6309/6247 6248/6310/6248 6347/6410/6347 +f 6347/6410/6347 6248/6310/6248 6348/6411/6348 +f 6248/6310/6248 6249/6311/6249 6348/6411/6348 +f 6348/6411/6348 6249/6311/6249 6349/6412/6349 +f 6249/6311/6249 6250/6312/6250 6349/6412/6349 +f 6349/6412/6349 6250/6312/6250 6350/6413/6350 +f 6250/6312/6250 6251/6313/6251 6350/6413/6350 +f 6350/6413/6350 6251/6313/6251 6351/6414/6351 +f 6251/6313/6251 6252/6314/6252 6351/6414/6351 +f 6351/6414/6351 6252/6314/6252 6352/6415/6352 +f 6252/6314/6252 6253/6315/6253 6352/6415/6352 +f 6352/6415/6352 6253/6315/6253 6353/6416/6353 +f 6253/6315/6253 6254/6316/6254 6353/6416/6353 +f 6353/6416/6353 6254/6316/6254 6354/6417/6354 +f 6254/6316/6254 6255/6317/6255 6354/6417/6354 +f 6354/6417/6354 6255/6317/6255 6355/6418/6355 +f 6255/6317/6255 6256/6318/6256 6355/6418/6355 +f 6355/6418/6355 6256/6318/6256 6356/6419/6356 +f 6256/6318/6256 6257/6319/6257 6356/6419/6356 +f 6356/6419/6356 6257/6319/6257 6357/6420/6357 +f 6257/6319/6257 6258/6320/6258 6357/6420/6357 +f 6357/6420/6357 6258/6320/6258 6358/6421/6358 +f 6258/6320/6258 6259/6321/6259 6358/6421/6358 +f 6358/6421/6358 6259/6321/6259 6359/6422/6359 +f 6259/6321/6259 6260/6322/6260 6359/6422/6359 +f 6359/6422/6359 6260/6322/6260 6360/6423/6360 +f 6260/6322/6260 6261/6323/6261 6360/6423/6360 +f 6360/6423/6360 6261/6323/6261 6361/6424/6361 +f 6261/6323/6261 6262/6324/6262 6361/6424/6361 +f 6361/6424/6361 6262/6324/6262 6362/6425/6362 +f 6262/6324/6262 6263/6325/6263 6362/6425/6362 +f 6362/6425/6362 6263/6325/6263 6363/6426/6363 +f 6263/6325/6263 6264/6326/6264 6363/6426/6363 +f 6363/6426/6363 6264/6326/6264 6364/6427/6364 +f 6264/6326/6264 6265/6327/6265 6364/6427/6364 +f 6364/6427/6364 6265/6327/6265 6365/6428/6365 +f 6265/6327/6265 6266/6328/6266 6365/6428/6365 +f 6365/6428/6365 6266/6328/6266 6366/6429/6366 +f 6266/6328/6266 6267/6329/6267 6366/6429/6366 +f 6366/6429/6366 6267/6329/6267 6367/6430/6367 +f 6267/6329/6267 6268/6330/6268 6367/6430/6367 +f 6367/6430/6367 6268/6330/6268 6368/6431/6368 +f 6268/6330/6268 6269/6331/6269 6368/6431/6368 +f 6368/6431/6368 6269/6331/6269 6369/6432/6369 +f 6269/6331/6269 6270/6332/6270 6369/6432/6369 +f 6369/6432/6369 6270/6332/6270 6370/6433/6370 +f 6270/6332/6270 6271/6333/6271 6370/6433/6370 +f 6370/6433/6370 6271/6333/6271 6371/6434/6371 +f 6271/6333/6271 6272/6334/6272 6371/6434/6371 +f 6371/6434/6371 6272/6334/6272 6372/6435/6372 +f 6272/6334/6272 6273/6335/6273 6372/6435/6372 +f 6372/6435/6372 6273/6335/6273 6373/6436/6373 +f 6273/6335/6273 6274/6336/6274 6373/6436/6373 +f 6373/6436/6373 6274/6336/6274 6374/6437/6374 +f 6274/6336/6274 6275/6337/6275 6374/6437/6374 +f 6374/6437/6374 6275/6337/6275 6375/6438/6375 +f 6275/6337/6275 6276/6338/6276 6375/6438/6375 +f 6375/6438/6375 6276/6338/6276 6376/6439/6376 +f 6276/6338/6276 6277/6339/6277 6376/6439/6376 +f 6376/6439/6376 6277/6339/6277 6377/6440/6377 +f 6277/6339/6277 6278/6340/6278 6377/6440/6377 +f 6377/6440/6377 6278/6340/6278 6378/6441/6378 +f 6278/6340/6278 6279/6341/6279 6378/6441/6378 +f 6378/6441/6378 6279/6341/6279 6379/6442/6379 +f 6279/6341/6279 6280/6342/6280 6379/6442/6379 +f 6379/6442/6379 6280/6342/6280 6380/6443/6380 +f 6280/6342/6280 6281/6343/6281 6380/6443/6380 +f 6380/6443/6380 6281/6343/6281 6381/6444/6381 +f 6281/6343/6281 6282/6344/6282 6381/6444/6381 +f 6381/6444/6381 6282/6344/6282 6382/6445/6382 +f 6282/6344/6282 6283/6345/6283 6382/6445/6382 +f 6382/6445/6382 6283/6345/6283 6383/6446/6383 +f 6283/6345/6283 6284/6346/6284 6383/6446/6383 +f 6383/6446/6383 6284/6346/6284 6384/6447/6384 +f 6284/6346/6284 6285/6347/6285 6384/6447/6384 +f 6384/6447/6384 6285/6347/6285 6385/6448/6385 +f 6285/6347/6285 6286/6348/6286 6385/6448/6385 +f 6385/6448/6385 6286/6348/6286 6386/6449/6386 +f 6286/6348/6286 6287/6349/6287 6386/6449/6386 +f 6386/6449/6386 6287/6349/6287 6387/6450/6387 +f 6287/6349/6287 6288/6350/6288 6387/6450/6387 +f 6387/6450/6387 6288/6350/6288 6388/6451/6388 +f 6288/6350/6288 6289/6351/6289 6388/6451/6388 +f 6388/6451/6388 6289/6351/6289 6389/6452/6389 +f 6289/6351/6289 6290/6352/6290 6389/6452/6389 +f 6389/6452/6389 6290/6352/6290 6390/6453/6390 +f 6290/6352/6290 6291/6353/6291 6390/6453/6390 +f 6390/6453/6390 6291/6353/6291 6391/6454/6391 +f 6291/6353/6291 6292/6354/6292 6391/6454/6391 +f 6391/6454/6391 6292/6354/6292 6392/6455/6392 +f 6292/6354/6292 6293/6355/6293 6392/6455/6392 +f 6392/6455/6392 6293/6355/6293 6393/6456/6393 +f 6293/6355/6293 6294/6356/6294 6393/6456/6393 +f 6393/6456/6393 6294/6356/6294 6394/6457/6394 +f 6294/6356/6294 6295/6357/6295 6394/6457/6394 +f 6394/6457/6394 6295/6357/6295 6395/6458/6395 +f 6295/6357/6295 6296/6358/6296 6395/6458/6395 +f 6395/6458/6395 6296/6358/6296 6396/6459/6396 +f 6296/6358/6296 6297/6359/6297 6396/6459/6396 +f 6396/6459/6396 6297/6359/6297 6397/6460/6397 +f 6297/6359/6297 6298/6360/6298 6397/6460/6397 +f 6397/6460/6397 6298/6360/6298 6398/6461/6398 +f 6298/6360/6298 6299/6361/6299 6398/6461/6398 +f 6398/6461/6398 6299/6361/6299 6399/6462/6399 +f 6299/6361/6299 6300/6362/6300 6399/6462/6399 +f 6399/6462/6399 6300/6362/6300 6400/6463/6400 +f 6300/6362/6300 6201/6363/6201 6400/6463/6400 +f 6400/6463/6400 6201/6363/6201 6301/6464/6301 +f 6301/6364/6301 6302/6365/6302 6401/6465/6401 +f 6401/6465/6401 6302/6365/6302 6402/6466/6402 +f 6302/6365/6302 6303/6366/6303 6402/6466/6402 +f 6402/6466/6402 6303/6366/6303 6403/6467/6403 +f 6303/6366/6303 6304/6367/6304 6403/6467/6403 +f 6403/6467/6403 6304/6367/6304 6404/6468/6404 +f 6304/6367/6304 6305/6368/6305 6404/6468/6404 +f 6404/6468/6404 6305/6368/6305 6405/6469/6405 +f 6305/6368/6305 6306/6369/6306 6405/6469/6405 +f 6405/6469/6405 6306/6369/6306 6406/6470/6406 +f 6306/6369/6306 6307/6370/6307 6406/6470/6406 +f 6406/6470/6406 6307/6370/6307 6407/6471/6407 +f 6307/6370/6307 6308/6371/6308 6407/6471/6407 +f 6407/6471/6407 6308/6371/6308 6408/6472/6408 +f 6308/6371/6308 6309/6372/6309 6408/6472/6408 +f 6408/6472/6408 6309/6372/6309 6409/6473/6409 +f 6309/6372/6309 6310/6373/6310 6409/6473/6409 +f 6409/6473/6409 6310/6373/6310 6410/6474/6410 +f 6310/6373/6310 6311/6374/6311 6410/6474/6410 +f 6410/6474/6410 6311/6374/6311 6411/6475/6411 +f 6311/6374/6311 6312/6375/6312 6411/6475/6411 +f 6411/6475/6411 6312/6375/6312 6412/6476/6412 +f 6312/6375/6312 6313/6376/6313 6412/6476/6412 +f 6412/6476/6412 6313/6376/6313 6413/6477/6413 +f 6313/6376/6313 6314/6377/6314 6413/6477/6413 +f 6413/6477/6413 6314/6377/6314 6414/6478/6414 +f 6314/6377/6314 6315/6378/6315 6414/6478/6414 +f 6414/6478/6414 6315/6378/6315 6415/6479/6415 +f 6315/6378/6315 6316/6379/6316 6415/6479/6415 +f 6415/6479/6415 6316/6379/6316 6416/6480/6416 +f 6316/6379/6316 6317/6380/6317 6416/6480/6416 +f 6416/6480/6416 6317/6380/6317 6417/6481/6417 +f 6317/6380/6317 6318/6381/6318 6417/6481/6417 +f 6417/6481/6417 6318/6381/6318 6418/6482/6418 +f 6318/6381/6318 6319/6382/6319 6418/6482/6418 +f 6418/6482/6418 6319/6382/6319 6419/6483/6419 +f 6319/6382/6319 6320/6383/6320 6419/6483/6419 +f 6419/6483/6419 6320/6383/6320 6420/6484/6420 +f 6320/6383/6320 6321/6384/6321 6420/6484/6420 +f 6420/6484/6420 6321/6384/6321 6421/6485/6421 +f 6321/6384/6321 6322/6385/6322 6421/6485/6421 +f 6421/6485/6421 6322/6385/6322 6422/6486/6422 +f 6322/6385/6322 6323/6386/6323 6422/6486/6422 +f 6422/6486/6422 6323/6386/6323 6423/6487/6423 +f 6323/6386/6323 6324/6387/6324 6423/6487/6423 +f 6423/6487/6423 6324/6387/6324 6424/6488/6424 +f 6324/6387/6324 6325/6388/6325 6424/6488/6424 +f 6424/6488/6424 6325/6388/6325 6425/6489/6425 +f 6325/6388/6325 6326/6389/6326 6425/6489/6425 +f 6425/6489/6425 6326/6389/6326 6426/6490/6426 +f 6326/6389/6326 6327/6390/6327 6426/6490/6426 +f 6426/6490/6426 6327/6390/6327 6427/6491/6427 +f 6327/6390/6327 6328/6391/6328 6427/6491/6427 +f 6427/6491/6427 6328/6391/6328 6428/6492/6428 +f 6328/6391/6328 6329/6392/6329 6428/6492/6428 +f 6428/6492/6428 6329/6392/6329 6429/6493/6429 +f 6329/6392/6329 6330/6393/6330 6429/6493/6429 +f 6429/6493/6429 6330/6393/6330 6430/6494/6430 +f 6330/6393/6330 6331/6394/6331 6430/6494/6430 +f 6430/6494/6430 6331/6394/6331 6431/6495/6431 +f 6331/6394/6331 6332/6395/6332 6431/6495/6431 +f 6431/6495/6431 6332/6395/6332 6432/6496/6432 +f 6332/6395/6332 6333/6396/6333 6432/6496/6432 +f 6432/6496/6432 6333/6396/6333 6433/6497/6433 +f 6333/6396/6333 6334/6397/6334 6433/6497/6433 +f 6433/6497/6433 6334/6397/6334 6434/6498/6434 +f 6334/6397/6334 6335/6398/6335 6434/6498/6434 +f 6434/6498/6434 6335/6398/6335 6435/6499/6435 +f 6335/6398/6335 6336/6399/6336 6435/6499/6435 +f 6435/6499/6435 6336/6399/6336 6436/6500/6436 +f 6336/6399/6336 6337/6400/6337 6436/6500/6436 +f 6436/6500/6436 6337/6400/6337 6437/6501/6437 +f 6337/6400/6337 6338/6401/6338 6437/6501/6437 +f 6437/6501/6437 6338/6401/6338 6438/6502/6438 +f 6338/6401/6338 6339/6402/6339 6438/6502/6438 +f 6438/6502/6438 6339/6402/6339 6439/6503/6439 +f 6339/6402/6339 6340/6403/6340 6439/6503/6439 +f 6439/6503/6439 6340/6403/6340 6440/6504/6440 +f 6340/6403/6340 6341/6404/6341 6440/6504/6440 +f 6440/6504/6440 6341/6404/6341 6441/6505/6441 +f 6341/6404/6341 6342/6405/6342 6441/6505/6441 +f 6441/6505/6441 6342/6405/6342 6442/6506/6442 +f 6342/6405/6342 6343/6406/6343 6442/6506/6442 +f 6442/6506/6442 6343/6406/6343 6443/6507/6443 +f 6343/6406/6343 6344/6407/6344 6443/6507/6443 +f 6443/6507/6443 6344/6407/6344 6444/6508/6444 +f 6344/6407/6344 6345/6408/6345 6444/6508/6444 +f 6444/6508/6444 6345/6408/6345 6445/6509/6445 +f 6345/6408/6345 6346/6409/6346 6445/6509/6445 +f 6445/6509/6445 6346/6409/6346 6446/6510/6446 +f 6346/6409/6346 6347/6410/6347 6446/6510/6446 +f 6446/6510/6446 6347/6410/6347 6447/6511/6447 +f 6347/6410/6347 6348/6411/6348 6447/6511/6447 +f 6447/6511/6447 6348/6411/6348 6448/6512/6448 +f 6348/6411/6348 6349/6412/6349 6448/6512/6448 +f 6448/6512/6448 6349/6412/6349 6449/6513/6449 +f 6349/6412/6349 6350/6413/6350 6449/6513/6449 +f 6449/6513/6449 6350/6413/6350 6450/6514/6450 +f 6350/6413/6350 6351/6414/6351 6450/6514/6450 +f 6450/6514/6450 6351/6414/6351 6451/6515/6451 +f 6351/6414/6351 6352/6415/6352 6451/6515/6451 +f 6451/6515/6451 6352/6415/6352 6452/6516/6452 +f 6352/6415/6352 6353/6416/6353 6452/6516/6452 +f 6452/6516/6452 6353/6416/6353 6453/6517/6453 +f 6353/6416/6353 6354/6417/6354 6453/6517/6453 +f 6453/6517/6453 6354/6417/6354 6454/6518/6454 +f 6354/6417/6354 6355/6418/6355 6454/6518/6454 +f 6454/6518/6454 6355/6418/6355 6455/6519/6455 +f 6355/6418/6355 6356/6419/6356 6455/6519/6455 +f 6455/6519/6455 6356/6419/6356 6456/6520/6456 +f 6356/6419/6356 6357/6420/6357 6456/6520/6456 +f 6456/6520/6456 6357/6420/6357 6457/6521/6457 +f 6357/6420/6357 6358/6421/6358 6457/6521/6457 +f 6457/6521/6457 6358/6421/6358 6458/6522/6458 +f 6358/6421/6358 6359/6422/6359 6458/6522/6458 +f 6458/6522/6458 6359/6422/6359 6459/6523/6459 +f 6359/6422/6359 6360/6423/6360 6459/6523/6459 +f 6459/6523/6459 6360/6423/6360 6460/6524/6460 +f 6360/6423/6360 6361/6424/6361 6460/6524/6460 +f 6460/6524/6460 6361/6424/6361 6461/6525/6461 +f 6361/6424/6361 6362/6425/6362 6461/6525/6461 +f 6461/6525/6461 6362/6425/6362 6462/6526/6462 +f 6362/6425/6362 6363/6426/6363 6462/6526/6462 +f 6462/6526/6462 6363/6426/6363 6463/6527/6463 +f 6363/6426/6363 6364/6427/6364 6463/6527/6463 +f 6463/6527/6463 6364/6427/6364 6464/6528/6464 +f 6364/6427/6364 6365/6428/6365 6464/6528/6464 +f 6464/6528/6464 6365/6428/6365 6465/6529/6465 +f 6365/6428/6365 6366/6429/6366 6465/6529/6465 +f 6465/6529/6465 6366/6429/6366 6466/6530/6466 +f 6366/6429/6366 6367/6430/6367 6466/6530/6466 +f 6466/6530/6466 6367/6430/6367 6467/6531/6467 +f 6367/6430/6367 6368/6431/6368 6467/6531/6467 +f 6467/6531/6467 6368/6431/6368 6468/6532/6468 +f 6368/6431/6368 6369/6432/6369 6468/6532/6468 +f 6468/6532/6468 6369/6432/6369 6469/6533/6469 +f 6369/6432/6369 6370/6433/6370 6469/6533/6469 +f 6469/6533/6469 6370/6433/6370 6470/6534/6470 +f 6370/6433/6370 6371/6434/6371 6470/6534/6470 +f 6470/6534/6470 6371/6434/6371 6471/6535/6471 +f 6371/6434/6371 6372/6435/6372 6471/6535/6471 +f 6471/6535/6471 6372/6435/6372 6472/6536/6472 +f 6372/6435/6372 6373/6436/6373 6472/6536/6472 +f 6472/6536/6472 6373/6436/6373 6473/6537/6473 +f 6373/6436/6373 6374/6437/6374 6473/6537/6473 +f 6473/6537/6473 6374/6437/6374 6474/6538/6474 +f 6374/6437/6374 6375/6438/6375 6474/6538/6474 +f 6474/6538/6474 6375/6438/6375 6475/6539/6475 +f 6375/6438/6375 6376/6439/6376 6475/6539/6475 +f 6475/6539/6475 6376/6439/6376 6476/6540/6476 +f 6376/6439/6376 6377/6440/6377 6476/6540/6476 +f 6476/6540/6476 6377/6440/6377 6477/6541/6477 +f 6377/6440/6377 6378/6441/6378 6477/6541/6477 +f 6477/6541/6477 6378/6441/6378 6478/6542/6478 +f 6378/6441/6378 6379/6442/6379 6478/6542/6478 +f 6478/6542/6478 6379/6442/6379 6479/6543/6479 +f 6379/6442/6379 6380/6443/6380 6479/6543/6479 +f 6479/6543/6479 6380/6443/6380 6480/6544/6480 +f 6380/6443/6380 6381/6444/6381 6480/6544/6480 +f 6480/6544/6480 6381/6444/6381 6481/6545/6481 +f 6381/6444/6381 6382/6445/6382 6481/6545/6481 +f 6481/6545/6481 6382/6445/6382 6482/6546/6482 +f 6382/6445/6382 6383/6446/6383 6482/6546/6482 +f 6482/6546/6482 6383/6446/6383 6483/6547/6483 +f 6383/6446/6383 6384/6447/6384 6483/6547/6483 +f 6483/6547/6483 6384/6447/6384 6484/6548/6484 +f 6384/6447/6384 6385/6448/6385 6484/6548/6484 +f 6484/6548/6484 6385/6448/6385 6485/6549/6485 +f 6385/6448/6385 6386/6449/6386 6485/6549/6485 +f 6485/6549/6485 6386/6449/6386 6486/6550/6486 +f 6386/6449/6386 6387/6450/6387 6486/6550/6486 +f 6486/6550/6486 6387/6450/6387 6487/6551/6487 +f 6387/6450/6387 6388/6451/6388 6487/6551/6487 +f 6487/6551/6487 6388/6451/6388 6488/6552/6488 +f 6388/6451/6388 6389/6452/6389 6488/6552/6488 +f 6488/6552/6488 6389/6452/6389 6489/6553/6489 +f 6389/6452/6389 6390/6453/6390 6489/6553/6489 +f 6489/6553/6489 6390/6453/6390 6490/6554/6490 +f 6390/6453/6390 6391/6454/6391 6490/6554/6490 +f 6490/6554/6490 6391/6454/6391 6491/6555/6491 +f 6391/6454/6391 6392/6455/6392 6491/6555/6491 +f 6491/6555/6491 6392/6455/6392 6492/6556/6492 +f 6392/6455/6392 6393/6456/6393 6492/6556/6492 +f 6492/6556/6492 6393/6456/6393 6493/6557/6493 +f 6393/6456/6393 6394/6457/6394 6493/6557/6493 +f 6493/6557/6493 6394/6457/6394 6494/6558/6494 +f 6394/6457/6394 6395/6458/6395 6494/6558/6494 +f 6494/6558/6494 6395/6458/6395 6495/6559/6495 +f 6395/6458/6395 6396/6459/6396 6495/6559/6495 +f 6495/6559/6495 6396/6459/6396 6496/6560/6496 +f 6396/6459/6396 6397/6460/6397 6496/6560/6496 +f 6496/6560/6496 6397/6460/6397 6497/6561/6497 +f 6397/6460/6397 6398/6461/6398 6497/6561/6497 +f 6497/6561/6497 6398/6461/6398 6498/6562/6498 +f 6398/6461/6398 6399/6462/6399 6498/6562/6498 +f 6498/6562/6498 6399/6462/6399 6499/6563/6499 +f 6399/6462/6399 6400/6463/6400 6499/6563/6499 +f 6499/6563/6499 6400/6463/6400 6500/6564/6500 +f 6400/6463/6400 6301/6464/6301 6500/6564/6500 +f 6500/6564/6500 6301/6464/6301 6401/6565/6401 +f 6401/6465/6401 6402/6466/6402 6501/6566/6501 +f 6501/6566/6501 6402/6466/6402 6502/6567/6502 +f 6402/6466/6402 6403/6467/6403 6502/6567/6502 +f 6502/6567/6502 6403/6467/6403 6503/6568/6503 +f 6403/6467/6403 6404/6468/6404 6503/6568/6503 +f 6503/6568/6503 6404/6468/6404 6504/6569/6504 +f 6404/6468/6404 6405/6469/6405 6504/6569/6504 +f 6504/6569/6504 6405/6469/6405 6505/6570/6505 +f 6405/6469/6405 6406/6470/6406 6505/6570/6505 +f 6505/6570/6505 6406/6470/6406 6506/6571/6506 +f 6406/6470/6406 6407/6471/6407 6506/6571/6506 +f 6506/6571/6506 6407/6471/6407 6507/6572/6507 +f 6407/6471/6407 6408/6472/6408 6507/6572/6507 +f 6507/6572/6507 6408/6472/6408 6508/6573/6508 +f 6408/6472/6408 6409/6473/6409 6508/6573/6508 +f 6508/6573/6508 6409/6473/6409 6509/6574/6509 +f 6409/6473/6409 6410/6474/6410 6509/6574/6509 +f 6509/6574/6509 6410/6474/6410 6510/6575/6510 +f 6410/6474/6410 6411/6475/6411 6510/6575/6510 +f 6510/6575/6510 6411/6475/6411 6511/6576/6511 +f 6411/6475/6411 6412/6476/6412 6511/6576/6511 +f 6511/6576/6511 6412/6476/6412 6512/6577/6512 +f 6412/6476/6412 6413/6477/6413 6512/6577/6512 +f 6512/6577/6512 6413/6477/6413 6513/6578/6513 +f 6413/6477/6413 6414/6478/6414 6513/6578/6513 +f 6513/6578/6513 6414/6478/6414 6514/6579/6514 +f 6414/6478/6414 6415/6479/6415 6514/6579/6514 +f 6514/6579/6514 6415/6479/6415 6515/6580/6515 +f 6415/6479/6415 6416/6480/6416 6515/6580/6515 +f 6515/6580/6515 6416/6480/6416 6516/6581/6516 +f 6416/6480/6416 6417/6481/6417 6516/6581/6516 +f 6516/6581/6516 6417/6481/6417 6517/6582/6517 +f 6417/6481/6417 6418/6482/6418 6517/6582/6517 +f 6517/6582/6517 6418/6482/6418 6518/6583/6518 +f 6418/6482/6418 6419/6483/6419 6518/6583/6518 +f 6518/6583/6518 6419/6483/6419 6519/6584/6519 +f 6419/6483/6419 6420/6484/6420 6519/6584/6519 +f 6519/6584/6519 6420/6484/6420 6520/6585/6520 +f 6420/6484/6420 6421/6485/6421 6520/6585/6520 +f 6520/6585/6520 6421/6485/6421 6521/6586/6521 +f 6421/6485/6421 6422/6486/6422 6521/6586/6521 +f 6521/6586/6521 6422/6486/6422 6522/6587/6522 +f 6422/6486/6422 6423/6487/6423 6522/6587/6522 +f 6522/6587/6522 6423/6487/6423 6523/6588/6523 +f 6423/6487/6423 6424/6488/6424 6523/6588/6523 +f 6523/6588/6523 6424/6488/6424 6524/6589/6524 +f 6424/6488/6424 6425/6489/6425 6524/6589/6524 +f 6524/6589/6524 6425/6489/6425 6525/6590/6525 +f 6425/6489/6425 6426/6490/6426 6525/6590/6525 +f 6525/6590/6525 6426/6490/6426 6526/6591/6526 +f 6426/6490/6426 6427/6491/6427 6526/6591/6526 +f 6526/6591/6526 6427/6491/6427 6527/6592/6527 +f 6427/6491/6427 6428/6492/6428 6527/6592/6527 +f 6527/6592/6527 6428/6492/6428 6528/6593/6528 +f 6428/6492/6428 6429/6493/6429 6528/6593/6528 +f 6528/6593/6528 6429/6493/6429 6529/6594/6529 +f 6429/6493/6429 6430/6494/6430 6529/6594/6529 +f 6529/6594/6529 6430/6494/6430 6530/6595/6530 +f 6430/6494/6430 6431/6495/6431 6530/6595/6530 +f 6530/6595/6530 6431/6495/6431 6531/6596/6531 +f 6431/6495/6431 6432/6496/6432 6531/6596/6531 +f 6531/6596/6531 6432/6496/6432 6532/6597/6532 +f 6432/6496/6432 6433/6497/6433 6532/6597/6532 +f 6532/6597/6532 6433/6497/6433 6533/6598/6533 +f 6433/6497/6433 6434/6498/6434 6533/6598/6533 +f 6533/6598/6533 6434/6498/6434 6534/6599/6534 +f 6434/6498/6434 6435/6499/6435 6534/6599/6534 +f 6534/6599/6534 6435/6499/6435 6535/6600/6535 +f 6435/6499/6435 6436/6500/6436 6535/6600/6535 +f 6535/6600/6535 6436/6500/6436 6536/6601/6536 +f 6436/6500/6436 6437/6501/6437 6536/6601/6536 +f 6536/6601/6536 6437/6501/6437 6537/6602/6537 +f 6437/6501/6437 6438/6502/6438 6537/6602/6537 +f 6537/6602/6537 6438/6502/6438 6538/6603/6538 +f 6438/6502/6438 6439/6503/6439 6538/6603/6538 +f 6538/6603/6538 6439/6503/6439 6539/6604/6539 +f 6439/6503/6439 6440/6504/6440 6539/6604/6539 +f 6539/6604/6539 6440/6504/6440 6540/6605/6540 +f 6440/6504/6440 6441/6505/6441 6540/6605/6540 +f 6540/6605/6540 6441/6505/6441 6541/6606/6541 +f 6441/6505/6441 6442/6506/6442 6541/6606/6541 +f 6541/6606/6541 6442/6506/6442 6542/6607/6542 +f 6442/6506/6442 6443/6507/6443 6542/6607/6542 +f 6542/6607/6542 6443/6507/6443 6543/6608/6543 +f 6443/6507/6443 6444/6508/6444 6543/6608/6543 +f 6543/6608/6543 6444/6508/6444 6544/6609/6544 +f 6444/6508/6444 6445/6509/6445 6544/6609/6544 +f 6544/6609/6544 6445/6509/6445 6545/6610/6545 +f 6445/6509/6445 6446/6510/6446 6545/6610/6545 +f 6545/6610/6545 6446/6510/6446 6546/6611/6546 +f 6446/6510/6446 6447/6511/6447 6546/6611/6546 +f 6546/6611/6546 6447/6511/6447 6547/6612/6547 +f 6447/6511/6447 6448/6512/6448 6547/6612/6547 +f 6547/6612/6547 6448/6512/6448 6548/6613/6548 +f 6448/6512/6448 6449/6513/6449 6548/6613/6548 +f 6548/6613/6548 6449/6513/6449 6549/6614/6549 +f 6449/6513/6449 6450/6514/6450 6549/6614/6549 +f 6549/6614/6549 6450/6514/6450 6550/6615/6550 +f 6450/6514/6450 6451/6515/6451 6550/6615/6550 +f 6550/6615/6550 6451/6515/6451 6551/6616/6551 +f 6451/6515/6451 6452/6516/6452 6551/6616/6551 +f 6551/6616/6551 6452/6516/6452 6552/6617/6552 +f 6452/6516/6452 6453/6517/6453 6552/6617/6552 +f 6552/6617/6552 6453/6517/6453 6553/6618/6553 +f 6453/6517/6453 6454/6518/6454 6553/6618/6553 +f 6553/6618/6553 6454/6518/6454 6554/6619/6554 +f 6454/6518/6454 6455/6519/6455 6554/6619/6554 +f 6554/6619/6554 6455/6519/6455 6555/6620/6555 +f 6455/6519/6455 6456/6520/6456 6555/6620/6555 +f 6555/6620/6555 6456/6520/6456 6556/6621/6556 +f 6456/6520/6456 6457/6521/6457 6556/6621/6556 +f 6556/6621/6556 6457/6521/6457 6557/6622/6557 +f 6457/6521/6457 6458/6522/6458 6557/6622/6557 +f 6557/6622/6557 6458/6522/6458 6558/6623/6558 +f 6458/6522/6458 6459/6523/6459 6558/6623/6558 +f 6558/6623/6558 6459/6523/6459 6559/6624/6559 +f 6459/6523/6459 6460/6524/6460 6559/6624/6559 +f 6559/6624/6559 6460/6524/6460 6560/6625/6560 +f 6460/6524/6460 6461/6525/6461 6560/6625/6560 +f 6560/6625/6560 6461/6525/6461 6561/6626/6561 +f 6461/6525/6461 6462/6526/6462 6561/6626/6561 +f 6561/6626/6561 6462/6526/6462 6562/6627/6562 +f 6462/6526/6462 6463/6527/6463 6562/6627/6562 +f 6562/6627/6562 6463/6527/6463 6563/6628/6563 +f 6463/6527/6463 6464/6528/6464 6563/6628/6563 +f 6563/6628/6563 6464/6528/6464 6564/6629/6564 +f 6464/6528/6464 6465/6529/6465 6564/6629/6564 +f 6564/6629/6564 6465/6529/6465 6565/6630/6565 +f 6465/6529/6465 6466/6530/6466 6565/6630/6565 +f 6565/6630/6565 6466/6530/6466 6566/6631/6566 +f 6466/6530/6466 6467/6531/6467 6566/6631/6566 +f 6566/6631/6566 6467/6531/6467 6567/6632/6567 +f 6467/6531/6467 6468/6532/6468 6567/6632/6567 +f 6567/6632/6567 6468/6532/6468 6568/6633/6568 +f 6468/6532/6468 6469/6533/6469 6568/6633/6568 +f 6568/6633/6568 6469/6533/6469 6569/6634/6569 +f 6469/6533/6469 6470/6534/6470 6569/6634/6569 +f 6569/6634/6569 6470/6534/6470 6570/6635/6570 +f 6470/6534/6470 6471/6535/6471 6570/6635/6570 +f 6570/6635/6570 6471/6535/6471 6571/6636/6571 +f 6471/6535/6471 6472/6536/6472 6571/6636/6571 +f 6571/6636/6571 6472/6536/6472 6572/6637/6572 +f 6472/6536/6472 6473/6537/6473 6572/6637/6572 +f 6572/6637/6572 6473/6537/6473 6573/6638/6573 +f 6473/6537/6473 6474/6538/6474 6573/6638/6573 +f 6573/6638/6573 6474/6538/6474 6574/6639/6574 +f 6474/6538/6474 6475/6539/6475 6574/6639/6574 +f 6574/6639/6574 6475/6539/6475 6575/6640/6575 +f 6475/6539/6475 6476/6540/6476 6575/6640/6575 +f 6575/6640/6575 6476/6540/6476 6576/6641/6576 +f 6476/6540/6476 6477/6541/6477 6576/6641/6576 +f 6576/6641/6576 6477/6541/6477 6577/6642/6577 +f 6477/6541/6477 6478/6542/6478 6577/6642/6577 +f 6577/6642/6577 6478/6542/6478 6578/6643/6578 +f 6478/6542/6478 6479/6543/6479 6578/6643/6578 +f 6578/6643/6578 6479/6543/6479 6579/6644/6579 +f 6479/6543/6479 6480/6544/6480 6579/6644/6579 +f 6579/6644/6579 6480/6544/6480 6580/6645/6580 +f 6480/6544/6480 6481/6545/6481 6580/6645/6580 +f 6580/6645/6580 6481/6545/6481 6581/6646/6581 +f 6481/6545/6481 6482/6546/6482 6581/6646/6581 +f 6581/6646/6581 6482/6546/6482 6582/6647/6582 +f 6482/6546/6482 6483/6547/6483 6582/6647/6582 +f 6582/6647/6582 6483/6547/6483 6583/6648/6583 +f 6483/6547/6483 6484/6548/6484 6583/6648/6583 +f 6583/6648/6583 6484/6548/6484 6584/6649/6584 +f 6484/6548/6484 6485/6549/6485 6584/6649/6584 +f 6584/6649/6584 6485/6549/6485 6585/6650/6585 +f 6485/6549/6485 6486/6550/6486 6585/6650/6585 +f 6585/6650/6585 6486/6550/6486 6586/6651/6586 +f 6486/6550/6486 6487/6551/6487 6586/6651/6586 +f 6586/6651/6586 6487/6551/6487 6587/6652/6587 +f 6487/6551/6487 6488/6552/6488 6587/6652/6587 +f 6587/6652/6587 6488/6552/6488 6588/6653/6588 +f 6488/6552/6488 6489/6553/6489 6588/6653/6588 +f 6588/6653/6588 6489/6553/6489 6589/6654/6589 +f 6489/6553/6489 6490/6554/6490 6589/6654/6589 +f 6589/6654/6589 6490/6554/6490 6590/6655/6590 +f 6490/6554/6490 6491/6555/6491 6590/6655/6590 +f 6590/6655/6590 6491/6555/6491 6591/6656/6591 +f 6491/6555/6491 6492/6556/6492 6591/6656/6591 +f 6591/6656/6591 6492/6556/6492 6592/6657/6592 +f 6492/6556/6492 6493/6557/6493 6592/6657/6592 +f 6592/6657/6592 6493/6557/6493 6593/6658/6593 +f 6493/6557/6493 6494/6558/6494 6593/6658/6593 +f 6593/6658/6593 6494/6558/6494 6594/6659/6594 +f 6494/6558/6494 6495/6559/6495 6594/6659/6594 +f 6594/6659/6594 6495/6559/6495 6595/6660/6595 +f 6495/6559/6495 6496/6560/6496 6595/6660/6595 +f 6595/6660/6595 6496/6560/6496 6596/6661/6596 +f 6496/6560/6496 6497/6561/6497 6596/6661/6596 +f 6596/6661/6596 6497/6561/6497 6597/6662/6597 +f 6497/6561/6497 6498/6562/6498 6597/6662/6597 +f 6597/6662/6597 6498/6562/6498 6598/6663/6598 +f 6498/6562/6498 6499/6563/6499 6598/6663/6598 +f 6598/6663/6598 6499/6563/6499 6599/6664/6599 +f 6499/6563/6499 6500/6564/6500 6599/6664/6599 +f 6599/6664/6599 6500/6564/6500 6600/6665/6600 +f 6500/6564/6500 6401/6565/6401 6600/6665/6600 +f 6600/6665/6600 6401/6565/6401 6501/6666/6501 +f 6501/6566/6501 6502/6567/6502 6601/6667/6601 +f 6601/6667/6601 6502/6567/6502 6602/6668/6602 +f 6502/6567/6502 6503/6568/6503 6602/6668/6602 +f 6602/6668/6602 6503/6568/6503 6603/6669/6603 +f 6503/6568/6503 6504/6569/6504 6603/6669/6603 +f 6603/6669/6603 6504/6569/6504 6604/6670/6604 +f 6504/6569/6504 6505/6570/6505 6604/6670/6604 +f 6604/6670/6604 6505/6570/6505 6605/6671/6605 +f 6505/6570/6505 6506/6571/6506 6605/6671/6605 +f 6605/6671/6605 6506/6571/6506 6606/6672/6606 +f 6506/6571/6506 6507/6572/6507 6606/6672/6606 +f 6606/6672/6606 6507/6572/6507 6607/6673/6607 +f 6507/6572/6507 6508/6573/6508 6607/6673/6607 +f 6607/6673/6607 6508/6573/6508 6608/6674/6608 +f 6508/6573/6508 6509/6574/6509 6608/6674/6608 +f 6608/6674/6608 6509/6574/6509 6609/6675/6609 +f 6509/6574/6509 6510/6575/6510 6609/6675/6609 +f 6609/6675/6609 6510/6575/6510 6610/6676/6610 +f 6510/6575/6510 6511/6576/6511 6610/6676/6610 +f 6610/6676/6610 6511/6576/6511 6611/6677/6611 +f 6511/6576/6511 6512/6577/6512 6611/6677/6611 +f 6611/6677/6611 6512/6577/6512 6612/6678/6612 +f 6512/6577/6512 6513/6578/6513 6612/6678/6612 +f 6612/6678/6612 6513/6578/6513 6613/6679/6613 +f 6513/6578/6513 6514/6579/6514 6613/6679/6613 +f 6613/6679/6613 6514/6579/6514 6614/6680/6614 +f 6514/6579/6514 6515/6580/6515 6614/6680/6614 +f 6614/6680/6614 6515/6580/6515 6615/6681/6615 +f 6515/6580/6515 6516/6581/6516 6615/6681/6615 +f 6615/6681/6615 6516/6581/6516 6616/6682/6616 +f 6516/6581/6516 6517/6582/6517 6616/6682/6616 +f 6616/6682/6616 6517/6582/6517 6617/6683/6617 +f 6517/6582/6517 6518/6583/6518 6617/6683/6617 +f 6617/6683/6617 6518/6583/6518 6618/6684/6618 +f 6518/6583/6518 6519/6584/6519 6618/6684/6618 +f 6618/6684/6618 6519/6584/6519 6619/6685/6619 +f 6519/6584/6519 6520/6585/6520 6619/6685/6619 +f 6619/6685/6619 6520/6585/6520 6620/6686/6620 +f 6520/6585/6520 6521/6586/6521 6620/6686/6620 +f 6620/6686/6620 6521/6586/6521 6621/6687/6621 +f 6521/6586/6521 6522/6587/6522 6621/6687/6621 +f 6621/6687/6621 6522/6587/6522 6622/6688/6622 +f 6522/6587/6522 6523/6588/6523 6622/6688/6622 +f 6622/6688/6622 6523/6588/6523 6623/6689/6623 +f 6523/6588/6523 6524/6589/6524 6623/6689/6623 +f 6623/6689/6623 6524/6589/6524 6624/6690/6624 +f 6524/6589/6524 6525/6590/6525 6624/6690/6624 +f 6624/6690/6624 6525/6590/6525 6625/6691/6625 +f 6525/6590/6525 6526/6591/6526 6625/6691/6625 +f 6625/6691/6625 6526/6591/6526 6626/6692/6626 +f 6526/6591/6526 6527/6592/6527 6626/6692/6626 +f 6626/6692/6626 6527/6592/6527 6627/6693/6627 +f 6527/6592/6527 6528/6593/6528 6627/6693/6627 +f 6627/6693/6627 6528/6593/6528 6628/6694/6628 +f 6528/6593/6528 6529/6594/6529 6628/6694/6628 +f 6628/6694/6628 6529/6594/6529 6629/6695/6629 +f 6529/6594/6529 6530/6595/6530 6629/6695/6629 +f 6629/6695/6629 6530/6595/6530 6630/6696/6630 +f 6530/6595/6530 6531/6596/6531 6630/6696/6630 +f 6630/6696/6630 6531/6596/6531 6631/6697/6631 +f 6531/6596/6531 6532/6597/6532 6631/6697/6631 +f 6631/6697/6631 6532/6597/6532 6632/6698/6632 +f 6532/6597/6532 6533/6598/6533 6632/6698/6632 +f 6632/6698/6632 6533/6598/6533 6633/6699/6633 +f 6533/6598/6533 6534/6599/6534 6633/6699/6633 +f 6633/6699/6633 6534/6599/6534 6634/6700/6634 +f 6534/6599/6534 6535/6600/6535 6634/6700/6634 +f 6634/6700/6634 6535/6600/6535 6635/6701/6635 +f 6535/6600/6535 6536/6601/6536 6635/6701/6635 +f 6635/6701/6635 6536/6601/6536 6636/6702/6636 +f 6536/6601/6536 6537/6602/6537 6636/6702/6636 +f 6636/6702/6636 6537/6602/6537 6637/6703/6637 +f 6537/6602/6537 6538/6603/6538 6637/6703/6637 +f 6637/6703/6637 6538/6603/6538 6638/6704/6638 +f 6538/6603/6538 6539/6604/6539 6638/6704/6638 +f 6638/6704/6638 6539/6604/6539 6639/6705/6639 +f 6539/6604/6539 6540/6605/6540 6639/6705/6639 +f 6639/6705/6639 6540/6605/6540 6640/6706/6640 +f 6540/6605/6540 6541/6606/6541 6640/6706/6640 +f 6640/6706/6640 6541/6606/6541 6641/6707/6641 +f 6541/6606/6541 6542/6607/6542 6641/6707/6641 +f 6641/6707/6641 6542/6607/6542 6642/6708/6642 +f 6542/6607/6542 6543/6608/6543 6642/6708/6642 +f 6642/6708/6642 6543/6608/6543 6643/6709/6643 +f 6543/6608/6543 6544/6609/6544 6643/6709/6643 +f 6643/6709/6643 6544/6609/6544 6644/6710/6644 +f 6544/6609/6544 6545/6610/6545 6644/6710/6644 +f 6644/6710/6644 6545/6610/6545 6645/6711/6645 +f 6545/6610/6545 6546/6611/6546 6645/6711/6645 +f 6645/6711/6645 6546/6611/6546 6646/6712/6646 +f 6546/6611/6546 6547/6612/6547 6646/6712/6646 +f 6646/6712/6646 6547/6612/6547 6647/6713/6647 +f 6547/6612/6547 6548/6613/6548 6647/6713/6647 +f 6647/6713/6647 6548/6613/6548 6648/6714/6648 +f 6548/6613/6548 6549/6614/6549 6648/6714/6648 +f 6648/6714/6648 6549/6614/6549 6649/6715/6649 +f 6549/6614/6549 6550/6615/6550 6649/6715/6649 +f 6649/6715/6649 6550/6615/6550 6650/6716/6650 +f 6550/6615/6550 6551/6616/6551 6650/6716/6650 +f 6650/6716/6650 6551/6616/6551 6651/6717/6651 +f 6551/6616/6551 6552/6617/6552 6651/6717/6651 +f 6651/6717/6651 6552/6617/6552 6652/6718/6652 +f 6552/6617/6552 6553/6618/6553 6652/6718/6652 +f 6652/6718/6652 6553/6618/6553 6653/6719/6653 +f 6553/6618/6553 6554/6619/6554 6653/6719/6653 +f 6653/6719/6653 6554/6619/6554 6654/6720/6654 +f 6554/6619/6554 6555/6620/6555 6654/6720/6654 +f 6654/6720/6654 6555/6620/6555 6655/6721/6655 +f 6555/6620/6555 6556/6621/6556 6655/6721/6655 +f 6655/6721/6655 6556/6621/6556 6656/6722/6656 +f 6556/6621/6556 6557/6622/6557 6656/6722/6656 +f 6656/6722/6656 6557/6622/6557 6657/6723/6657 +f 6557/6622/6557 6558/6623/6558 6657/6723/6657 +f 6657/6723/6657 6558/6623/6558 6658/6724/6658 +f 6558/6623/6558 6559/6624/6559 6658/6724/6658 +f 6658/6724/6658 6559/6624/6559 6659/6725/6659 +f 6559/6624/6559 6560/6625/6560 6659/6725/6659 +f 6659/6725/6659 6560/6625/6560 6660/6726/6660 +f 6560/6625/6560 6561/6626/6561 6660/6726/6660 +f 6660/6726/6660 6561/6626/6561 6661/6727/6661 +f 6561/6626/6561 6562/6627/6562 6661/6727/6661 +f 6661/6727/6661 6562/6627/6562 6662/6728/6662 +f 6562/6627/6562 6563/6628/6563 6662/6728/6662 +f 6662/6728/6662 6563/6628/6563 6663/6729/6663 +f 6563/6628/6563 6564/6629/6564 6663/6729/6663 +f 6663/6729/6663 6564/6629/6564 6664/6730/6664 +f 6564/6629/6564 6565/6630/6565 6664/6730/6664 +f 6664/6730/6664 6565/6630/6565 6665/6731/6665 +f 6565/6630/6565 6566/6631/6566 6665/6731/6665 +f 6665/6731/6665 6566/6631/6566 6666/6732/6666 +f 6566/6631/6566 6567/6632/6567 6666/6732/6666 +f 6666/6732/6666 6567/6632/6567 6667/6733/6667 +f 6567/6632/6567 6568/6633/6568 6667/6733/6667 +f 6667/6733/6667 6568/6633/6568 6668/6734/6668 +f 6568/6633/6568 6569/6634/6569 6668/6734/6668 +f 6668/6734/6668 6569/6634/6569 6669/6735/6669 +f 6569/6634/6569 6570/6635/6570 6669/6735/6669 +f 6669/6735/6669 6570/6635/6570 6670/6736/6670 +f 6570/6635/6570 6571/6636/6571 6670/6736/6670 +f 6670/6736/6670 6571/6636/6571 6671/6737/6671 +f 6571/6636/6571 6572/6637/6572 6671/6737/6671 +f 6671/6737/6671 6572/6637/6572 6672/6738/6672 +f 6572/6637/6572 6573/6638/6573 6672/6738/6672 +f 6672/6738/6672 6573/6638/6573 6673/6739/6673 +f 6573/6638/6573 6574/6639/6574 6673/6739/6673 +f 6673/6739/6673 6574/6639/6574 6674/6740/6674 +f 6574/6639/6574 6575/6640/6575 6674/6740/6674 +f 6674/6740/6674 6575/6640/6575 6675/6741/6675 +f 6575/6640/6575 6576/6641/6576 6675/6741/6675 +f 6675/6741/6675 6576/6641/6576 6676/6742/6676 +f 6576/6641/6576 6577/6642/6577 6676/6742/6676 +f 6676/6742/6676 6577/6642/6577 6677/6743/6677 +f 6577/6642/6577 6578/6643/6578 6677/6743/6677 +f 6677/6743/6677 6578/6643/6578 6678/6744/6678 +f 6578/6643/6578 6579/6644/6579 6678/6744/6678 +f 6678/6744/6678 6579/6644/6579 6679/6745/6679 +f 6579/6644/6579 6580/6645/6580 6679/6745/6679 +f 6679/6745/6679 6580/6645/6580 6680/6746/6680 +f 6580/6645/6580 6581/6646/6581 6680/6746/6680 +f 6680/6746/6680 6581/6646/6581 6681/6747/6681 +f 6581/6646/6581 6582/6647/6582 6681/6747/6681 +f 6681/6747/6681 6582/6647/6582 6682/6748/6682 +f 6582/6647/6582 6583/6648/6583 6682/6748/6682 +f 6682/6748/6682 6583/6648/6583 6683/6749/6683 +f 6583/6648/6583 6584/6649/6584 6683/6749/6683 +f 6683/6749/6683 6584/6649/6584 6684/6750/6684 +f 6584/6649/6584 6585/6650/6585 6684/6750/6684 +f 6684/6750/6684 6585/6650/6585 6685/6751/6685 +f 6585/6650/6585 6586/6651/6586 6685/6751/6685 +f 6685/6751/6685 6586/6651/6586 6686/6752/6686 +f 6586/6651/6586 6587/6652/6587 6686/6752/6686 +f 6686/6752/6686 6587/6652/6587 6687/6753/6687 +f 6587/6652/6587 6588/6653/6588 6687/6753/6687 +f 6687/6753/6687 6588/6653/6588 6688/6754/6688 +f 6588/6653/6588 6589/6654/6589 6688/6754/6688 +f 6688/6754/6688 6589/6654/6589 6689/6755/6689 +f 6589/6654/6589 6590/6655/6590 6689/6755/6689 +f 6689/6755/6689 6590/6655/6590 6690/6756/6690 +f 6590/6655/6590 6591/6656/6591 6690/6756/6690 +f 6690/6756/6690 6591/6656/6591 6691/6757/6691 +f 6591/6656/6591 6592/6657/6592 6691/6757/6691 +f 6691/6757/6691 6592/6657/6592 6692/6758/6692 +f 6592/6657/6592 6593/6658/6593 6692/6758/6692 +f 6692/6758/6692 6593/6658/6593 6693/6759/6693 +f 6593/6658/6593 6594/6659/6594 6693/6759/6693 +f 6693/6759/6693 6594/6659/6594 6694/6760/6694 +f 6594/6659/6594 6595/6660/6595 6694/6760/6694 +f 6694/6760/6694 6595/6660/6595 6695/6761/6695 +f 6595/6660/6595 6596/6661/6596 6695/6761/6695 +f 6695/6761/6695 6596/6661/6596 6696/6762/6696 +f 6596/6661/6596 6597/6662/6597 6696/6762/6696 +f 6696/6762/6696 6597/6662/6597 6697/6763/6697 +f 6597/6662/6597 6598/6663/6598 6697/6763/6697 +f 6697/6763/6697 6598/6663/6598 6698/6764/6698 +f 6598/6663/6598 6599/6664/6599 6698/6764/6698 +f 6698/6764/6698 6599/6664/6599 6699/6765/6699 +f 6599/6664/6599 6600/6665/6600 6699/6765/6699 +f 6699/6765/6699 6600/6665/6600 6700/6766/6700 +f 6600/6665/6600 6501/6666/6501 6700/6766/6700 +f 6700/6766/6700 6501/6666/6501 6601/6767/6601 +f 6601/6667/6601 6602/6668/6602 6701/6768/6701 +f 6701/6768/6701 6602/6668/6602 6702/6769/6702 +f 6602/6668/6602 6603/6669/6603 6702/6769/6702 +f 6702/6769/6702 6603/6669/6603 6703/6770/6703 +f 6603/6669/6603 6604/6670/6604 6703/6770/6703 +f 6703/6770/6703 6604/6670/6604 6704/6771/6704 +f 6604/6670/6604 6605/6671/6605 6704/6771/6704 +f 6704/6771/6704 6605/6671/6605 6705/6772/6705 +f 6605/6671/6605 6606/6672/6606 6705/6772/6705 +f 6705/6772/6705 6606/6672/6606 6706/6773/6706 +f 6606/6672/6606 6607/6673/6607 6706/6773/6706 +f 6706/6773/6706 6607/6673/6607 6707/6774/6707 +f 6607/6673/6607 6608/6674/6608 6707/6774/6707 +f 6707/6774/6707 6608/6674/6608 6708/6775/6708 +f 6608/6674/6608 6609/6675/6609 6708/6775/6708 +f 6708/6775/6708 6609/6675/6609 6709/6776/6709 +f 6609/6675/6609 6610/6676/6610 6709/6776/6709 +f 6709/6776/6709 6610/6676/6610 6710/6777/6710 +f 6610/6676/6610 6611/6677/6611 6710/6777/6710 +f 6710/6777/6710 6611/6677/6611 6711/6778/6711 +f 6611/6677/6611 6612/6678/6612 6711/6778/6711 +f 6711/6778/6711 6612/6678/6612 6712/6779/6712 +f 6612/6678/6612 6613/6679/6613 6712/6779/6712 +f 6712/6779/6712 6613/6679/6613 6713/6780/6713 +f 6613/6679/6613 6614/6680/6614 6713/6780/6713 +f 6713/6780/6713 6614/6680/6614 6714/6781/6714 +f 6614/6680/6614 6615/6681/6615 6714/6781/6714 +f 6714/6781/6714 6615/6681/6615 6715/6782/6715 +f 6615/6681/6615 6616/6682/6616 6715/6782/6715 +f 6715/6782/6715 6616/6682/6616 6716/6783/6716 +f 6616/6682/6616 6617/6683/6617 6716/6783/6716 +f 6716/6783/6716 6617/6683/6617 6717/6784/6717 +f 6617/6683/6617 6618/6684/6618 6717/6784/6717 +f 6717/6784/6717 6618/6684/6618 6718/6785/6718 +f 6618/6684/6618 6619/6685/6619 6718/6785/6718 +f 6718/6785/6718 6619/6685/6619 6719/6786/6719 +f 6619/6685/6619 6620/6686/6620 6719/6786/6719 +f 6719/6786/6719 6620/6686/6620 6720/6787/6720 +f 6620/6686/6620 6621/6687/6621 6720/6787/6720 +f 6720/6787/6720 6621/6687/6621 6721/6788/6721 +f 6621/6687/6621 6622/6688/6622 6721/6788/6721 +f 6721/6788/6721 6622/6688/6622 6722/6789/6722 +f 6622/6688/6622 6623/6689/6623 6722/6789/6722 +f 6722/6789/6722 6623/6689/6623 6723/6790/6723 +f 6623/6689/6623 6624/6690/6624 6723/6790/6723 +f 6723/6790/6723 6624/6690/6624 6724/6791/6724 +f 6624/6690/6624 6625/6691/6625 6724/6791/6724 +f 6724/6791/6724 6625/6691/6625 6725/6792/6725 +f 6625/6691/6625 6626/6692/6626 6725/6792/6725 +f 6725/6792/6725 6626/6692/6626 6726/6793/6726 +f 6626/6692/6626 6627/6693/6627 6726/6793/6726 +f 6726/6793/6726 6627/6693/6627 6727/6794/6727 +f 6627/6693/6627 6628/6694/6628 6727/6794/6727 +f 6727/6794/6727 6628/6694/6628 6728/6795/6728 +f 6628/6694/6628 6629/6695/6629 6728/6795/6728 +f 6728/6795/6728 6629/6695/6629 6729/6796/6729 +f 6629/6695/6629 6630/6696/6630 6729/6796/6729 +f 6729/6796/6729 6630/6696/6630 6730/6797/6730 +f 6630/6696/6630 6631/6697/6631 6730/6797/6730 +f 6730/6797/6730 6631/6697/6631 6731/6798/6731 +f 6631/6697/6631 6632/6698/6632 6731/6798/6731 +f 6731/6798/6731 6632/6698/6632 6732/6799/6732 +f 6632/6698/6632 6633/6699/6633 6732/6799/6732 +f 6732/6799/6732 6633/6699/6633 6733/6800/6733 +f 6633/6699/6633 6634/6700/6634 6733/6800/6733 +f 6733/6800/6733 6634/6700/6634 6734/6801/6734 +f 6634/6700/6634 6635/6701/6635 6734/6801/6734 +f 6734/6801/6734 6635/6701/6635 6735/6802/6735 +f 6635/6701/6635 6636/6702/6636 6735/6802/6735 +f 6735/6802/6735 6636/6702/6636 6736/6803/6736 +f 6636/6702/6636 6637/6703/6637 6736/6803/6736 +f 6736/6803/6736 6637/6703/6637 6737/6804/6737 +f 6637/6703/6637 6638/6704/6638 6737/6804/6737 +f 6737/6804/6737 6638/6704/6638 6738/6805/6738 +f 6638/6704/6638 6639/6705/6639 6738/6805/6738 +f 6738/6805/6738 6639/6705/6639 6739/6806/6739 +f 6639/6705/6639 6640/6706/6640 6739/6806/6739 +f 6739/6806/6739 6640/6706/6640 6740/6807/6740 +f 6640/6706/6640 6641/6707/6641 6740/6807/6740 +f 6740/6807/6740 6641/6707/6641 6741/6808/6741 +f 6641/6707/6641 6642/6708/6642 6741/6808/6741 +f 6741/6808/6741 6642/6708/6642 6742/6809/6742 +f 6642/6708/6642 6643/6709/6643 6742/6809/6742 +f 6742/6809/6742 6643/6709/6643 6743/6810/6743 +f 6643/6709/6643 6644/6710/6644 6743/6810/6743 +f 6743/6810/6743 6644/6710/6644 6744/6811/6744 +f 6644/6710/6644 6645/6711/6645 6744/6811/6744 +f 6744/6811/6744 6645/6711/6645 6745/6812/6745 +f 6645/6711/6645 6646/6712/6646 6745/6812/6745 +f 6745/6812/6745 6646/6712/6646 6746/6813/6746 +f 6646/6712/6646 6647/6713/6647 6746/6813/6746 +f 6746/6813/6746 6647/6713/6647 6747/6814/6747 +f 6647/6713/6647 6648/6714/6648 6747/6814/6747 +f 6747/6814/6747 6648/6714/6648 6748/6815/6748 +f 6648/6714/6648 6649/6715/6649 6748/6815/6748 +f 6748/6815/6748 6649/6715/6649 6749/6816/6749 +f 6649/6715/6649 6650/6716/6650 6749/6816/6749 +f 6749/6816/6749 6650/6716/6650 6750/6817/6750 +f 6650/6716/6650 6651/6717/6651 6750/6817/6750 +f 6750/6817/6750 6651/6717/6651 6751/6818/6751 +f 6651/6717/6651 6652/6718/6652 6751/6818/6751 +f 6751/6818/6751 6652/6718/6652 6752/6819/6752 +f 6652/6718/6652 6653/6719/6653 6752/6819/6752 +f 6752/6819/6752 6653/6719/6653 6753/6820/6753 +f 6653/6719/6653 6654/6720/6654 6753/6820/6753 +f 6753/6820/6753 6654/6720/6654 6754/6821/6754 +f 6654/6720/6654 6655/6721/6655 6754/6821/6754 +f 6754/6821/6754 6655/6721/6655 6755/6822/6755 +f 6655/6721/6655 6656/6722/6656 6755/6822/6755 +f 6755/6822/6755 6656/6722/6656 6756/6823/6756 +f 6656/6722/6656 6657/6723/6657 6756/6823/6756 +f 6756/6823/6756 6657/6723/6657 6757/6824/6757 +f 6657/6723/6657 6658/6724/6658 6757/6824/6757 +f 6757/6824/6757 6658/6724/6658 6758/6825/6758 +f 6658/6724/6658 6659/6725/6659 6758/6825/6758 +f 6758/6825/6758 6659/6725/6659 6759/6826/6759 +f 6659/6725/6659 6660/6726/6660 6759/6826/6759 +f 6759/6826/6759 6660/6726/6660 6760/6827/6760 +f 6660/6726/6660 6661/6727/6661 6760/6827/6760 +f 6760/6827/6760 6661/6727/6661 6761/6828/6761 +f 6661/6727/6661 6662/6728/6662 6761/6828/6761 +f 6761/6828/6761 6662/6728/6662 6762/6829/6762 +f 6662/6728/6662 6663/6729/6663 6762/6829/6762 +f 6762/6829/6762 6663/6729/6663 6763/6830/6763 +f 6663/6729/6663 6664/6730/6664 6763/6830/6763 +f 6763/6830/6763 6664/6730/6664 6764/6831/6764 +f 6664/6730/6664 6665/6731/6665 6764/6831/6764 +f 6764/6831/6764 6665/6731/6665 6765/6832/6765 +f 6665/6731/6665 6666/6732/6666 6765/6832/6765 +f 6765/6832/6765 6666/6732/6666 6766/6833/6766 +f 6666/6732/6666 6667/6733/6667 6766/6833/6766 +f 6766/6833/6766 6667/6733/6667 6767/6834/6767 +f 6667/6733/6667 6668/6734/6668 6767/6834/6767 +f 6767/6834/6767 6668/6734/6668 6768/6835/6768 +f 6668/6734/6668 6669/6735/6669 6768/6835/6768 +f 6768/6835/6768 6669/6735/6669 6769/6836/6769 +f 6669/6735/6669 6670/6736/6670 6769/6836/6769 +f 6769/6836/6769 6670/6736/6670 6770/6837/6770 +f 6670/6736/6670 6671/6737/6671 6770/6837/6770 +f 6770/6837/6770 6671/6737/6671 6771/6838/6771 +f 6671/6737/6671 6672/6738/6672 6771/6838/6771 +f 6771/6838/6771 6672/6738/6672 6772/6839/6772 +f 6672/6738/6672 6673/6739/6673 6772/6839/6772 +f 6772/6839/6772 6673/6739/6673 6773/6840/6773 +f 6673/6739/6673 6674/6740/6674 6773/6840/6773 +f 6773/6840/6773 6674/6740/6674 6774/6841/6774 +f 6674/6740/6674 6675/6741/6675 6774/6841/6774 +f 6774/6841/6774 6675/6741/6675 6775/6842/6775 +f 6675/6741/6675 6676/6742/6676 6775/6842/6775 +f 6775/6842/6775 6676/6742/6676 6776/6843/6776 +f 6676/6742/6676 6677/6743/6677 6776/6843/6776 +f 6776/6843/6776 6677/6743/6677 6777/6844/6777 +f 6677/6743/6677 6678/6744/6678 6777/6844/6777 +f 6777/6844/6777 6678/6744/6678 6778/6845/6778 +f 6678/6744/6678 6679/6745/6679 6778/6845/6778 +f 6778/6845/6778 6679/6745/6679 6779/6846/6779 +f 6679/6745/6679 6680/6746/6680 6779/6846/6779 +f 6779/6846/6779 6680/6746/6680 6780/6847/6780 +f 6680/6746/6680 6681/6747/6681 6780/6847/6780 +f 6780/6847/6780 6681/6747/6681 6781/6848/6781 +f 6681/6747/6681 6682/6748/6682 6781/6848/6781 +f 6781/6848/6781 6682/6748/6682 6782/6849/6782 +f 6682/6748/6682 6683/6749/6683 6782/6849/6782 +f 6782/6849/6782 6683/6749/6683 6783/6850/6783 +f 6683/6749/6683 6684/6750/6684 6783/6850/6783 +f 6783/6850/6783 6684/6750/6684 6784/6851/6784 +f 6684/6750/6684 6685/6751/6685 6784/6851/6784 +f 6784/6851/6784 6685/6751/6685 6785/6852/6785 +f 6685/6751/6685 6686/6752/6686 6785/6852/6785 +f 6785/6852/6785 6686/6752/6686 6786/6853/6786 +f 6686/6752/6686 6687/6753/6687 6786/6853/6786 +f 6786/6853/6786 6687/6753/6687 6787/6854/6787 +f 6687/6753/6687 6688/6754/6688 6787/6854/6787 +f 6787/6854/6787 6688/6754/6688 6788/6855/6788 +f 6688/6754/6688 6689/6755/6689 6788/6855/6788 +f 6788/6855/6788 6689/6755/6689 6789/6856/6789 +f 6689/6755/6689 6690/6756/6690 6789/6856/6789 +f 6789/6856/6789 6690/6756/6690 6790/6857/6790 +f 6690/6756/6690 6691/6757/6691 6790/6857/6790 +f 6790/6857/6790 6691/6757/6691 6791/6858/6791 +f 6691/6757/6691 6692/6758/6692 6791/6858/6791 +f 6791/6858/6791 6692/6758/6692 6792/6859/6792 +f 6692/6758/6692 6693/6759/6693 6792/6859/6792 +f 6792/6859/6792 6693/6759/6693 6793/6860/6793 +f 6693/6759/6693 6694/6760/6694 6793/6860/6793 +f 6793/6860/6793 6694/6760/6694 6794/6861/6794 +f 6694/6760/6694 6695/6761/6695 6794/6861/6794 +f 6794/6861/6794 6695/6761/6695 6795/6862/6795 +f 6695/6761/6695 6696/6762/6696 6795/6862/6795 +f 6795/6862/6795 6696/6762/6696 6796/6863/6796 +f 6696/6762/6696 6697/6763/6697 6796/6863/6796 +f 6796/6863/6796 6697/6763/6697 6797/6864/6797 +f 6697/6763/6697 6698/6764/6698 6797/6864/6797 +f 6797/6864/6797 6698/6764/6698 6798/6865/6798 +f 6698/6764/6698 6699/6765/6699 6798/6865/6798 +f 6798/6865/6798 6699/6765/6699 6799/6866/6799 +f 6699/6765/6699 6700/6766/6700 6799/6866/6799 +f 6799/6866/6799 6700/6766/6700 6800/6867/6800 +f 6700/6766/6700 6601/6767/6601 6800/6867/6800 +f 6800/6867/6800 6601/6767/6601 6701/6868/6701 +f 6701/6768/6701 6702/6769/6702 6801/6869/6801 +f 6801/6869/6801 6702/6769/6702 6802/6870/6802 +f 6702/6769/6702 6703/6770/6703 6802/6870/6802 +f 6802/6870/6802 6703/6770/6703 6803/6871/6803 +f 6703/6770/6703 6704/6771/6704 6803/6871/6803 +f 6803/6871/6803 6704/6771/6704 6804/6872/6804 +f 6704/6771/6704 6705/6772/6705 6804/6872/6804 +f 6804/6872/6804 6705/6772/6705 6805/6873/6805 +f 6705/6772/6705 6706/6773/6706 6805/6873/6805 +f 6805/6873/6805 6706/6773/6706 6806/6874/6806 +f 6706/6773/6706 6707/6774/6707 6806/6874/6806 +f 6806/6874/6806 6707/6774/6707 6807/6875/6807 +f 6707/6774/6707 6708/6775/6708 6807/6875/6807 +f 6807/6875/6807 6708/6775/6708 6808/6876/6808 +f 6708/6775/6708 6709/6776/6709 6808/6876/6808 +f 6808/6876/6808 6709/6776/6709 6809/6877/6809 +f 6709/6776/6709 6710/6777/6710 6809/6877/6809 +f 6809/6877/6809 6710/6777/6710 6810/6878/6810 +f 6710/6777/6710 6711/6778/6711 6810/6878/6810 +f 6810/6878/6810 6711/6778/6711 6811/6879/6811 +f 6711/6778/6711 6712/6779/6712 6811/6879/6811 +f 6811/6879/6811 6712/6779/6712 6812/6880/6812 +f 6712/6779/6712 6713/6780/6713 6812/6880/6812 +f 6812/6880/6812 6713/6780/6713 6813/6881/6813 +f 6713/6780/6713 6714/6781/6714 6813/6881/6813 +f 6813/6881/6813 6714/6781/6714 6814/6882/6814 +f 6714/6781/6714 6715/6782/6715 6814/6882/6814 +f 6814/6882/6814 6715/6782/6715 6815/6883/6815 +f 6715/6782/6715 6716/6783/6716 6815/6883/6815 +f 6815/6883/6815 6716/6783/6716 6816/6884/6816 +f 6716/6783/6716 6717/6784/6717 6816/6884/6816 +f 6816/6884/6816 6717/6784/6717 6817/6885/6817 +f 6717/6784/6717 6718/6785/6718 6817/6885/6817 +f 6817/6885/6817 6718/6785/6718 6818/6886/6818 +f 6718/6785/6718 6719/6786/6719 6818/6886/6818 +f 6818/6886/6818 6719/6786/6719 6819/6887/6819 +f 6719/6786/6719 6720/6787/6720 6819/6887/6819 +f 6819/6887/6819 6720/6787/6720 6820/6888/6820 +f 6720/6787/6720 6721/6788/6721 6820/6888/6820 +f 6820/6888/6820 6721/6788/6721 6821/6889/6821 +f 6721/6788/6721 6722/6789/6722 6821/6889/6821 +f 6821/6889/6821 6722/6789/6722 6822/6890/6822 +f 6722/6789/6722 6723/6790/6723 6822/6890/6822 +f 6822/6890/6822 6723/6790/6723 6823/6891/6823 +f 6723/6790/6723 6724/6791/6724 6823/6891/6823 +f 6823/6891/6823 6724/6791/6724 6824/6892/6824 +f 6724/6791/6724 6725/6792/6725 6824/6892/6824 +f 6824/6892/6824 6725/6792/6725 6825/6893/6825 +f 6725/6792/6725 6726/6793/6726 6825/6893/6825 +f 6825/6893/6825 6726/6793/6726 6826/6894/6826 +f 6726/6793/6726 6727/6794/6727 6826/6894/6826 +f 6826/6894/6826 6727/6794/6727 6827/6895/6827 +f 6727/6794/6727 6728/6795/6728 6827/6895/6827 +f 6827/6895/6827 6728/6795/6728 6828/6896/6828 +f 6728/6795/6728 6729/6796/6729 6828/6896/6828 +f 6828/6896/6828 6729/6796/6729 6829/6897/6829 +f 6729/6796/6729 6730/6797/6730 6829/6897/6829 +f 6829/6897/6829 6730/6797/6730 6830/6898/6830 +f 6730/6797/6730 6731/6798/6731 6830/6898/6830 +f 6830/6898/6830 6731/6798/6731 6831/6899/6831 +f 6731/6798/6731 6732/6799/6732 6831/6899/6831 +f 6831/6899/6831 6732/6799/6732 6832/6900/6832 +f 6732/6799/6732 6733/6800/6733 6832/6900/6832 +f 6832/6900/6832 6733/6800/6733 6833/6901/6833 +f 6733/6800/6733 6734/6801/6734 6833/6901/6833 +f 6833/6901/6833 6734/6801/6734 6834/6902/6834 +f 6734/6801/6734 6735/6802/6735 6834/6902/6834 +f 6834/6902/6834 6735/6802/6735 6835/6903/6835 +f 6735/6802/6735 6736/6803/6736 6835/6903/6835 +f 6835/6903/6835 6736/6803/6736 6836/6904/6836 +f 6736/6803/6736 6737/6804/6737 6836/6904/6836 +f 6836/6904/6836 6737/6804/6737 6837/6905/6837 +f 6737/6804/6737 6738/6805/6738 6837/6905/6837 +f 6837/6905/6837 6738/6805/6738 6838/6906/6838 +f 6738/6805/6738 6739/6806/6739 6838/6906/6838 +f 6838/6906/6838 6739/6806/6739 6839/6907/6839 +f 6739/6806/6739 6740/6807/6740 6839/6907/6839 +f 6839/6907/6839 6740/6807/6740 6840/6908/6840 +f 6740/6807/6740 6741/6808/6741 6840/6908/6840 +f 6840/6908/6840 6741/6808/6741 6841/6909/6841 +f 6741/6808/6741 6742/6809/6742 6841/6909/6841 +f 6841/6909/6841 6742/6809/6742 6842/6910/6842 +f 6742/6809/6742 6743/6810/6743 6842/6910/6842 +f 6842/6910/6842 6743/6810/6743 6843/6911/6843 +f 6743/6810/6743 6744/6811/6744 6843/6911/6843 +f 6843/6911/6843 6744/6811/6744 6844/6912/6844 +f 6744/6811/6744 6745/6812/6745 6844/6912/6844 +f 6844/6912/6844 6745/6812/6745 6845/6913/6845 +f 6745/6812/6745 6746/6813/6746 6845/6913/6845 +f 6845/6913/6845 6746/6813/6746 6846/6914/6846 +f 6746/6813/6746 6747/6814/6747 6846/6914/6846 +f 6846/6914/6846 6747/6814/6747 6847/6915/6847 +f 6747/6814/6747 6748/6815/6748 6847/6915/6847 +f 6847/6915/6847 6748/6815/6748 6848/6916/6848 +f 6748/6815/6748 6749/6816/6749 6848/6916/6848 +f 6848/6916/6848 6749/6816/6749 6849/6917/6849 +f 6749/6816/6749 6750/6817/6750 6849/6917/6849 +f 6849/6917/6849 6750/6817/6750 6850/6918/6850 +f 6750/6817/6750 6751/6818/6751 6850/6918/6850 +f 6850/6918/6850 6751/6818/6751 6851/6919/6851 +f 6751/6818/6751 6752/6819/6752 6851/6919/6851 +f 6851/6919/6851 6752/6819/6752 6852/6920/6852 +f 6752/6819/6752 6753/6820/6753 6852/6920/6852 +f 6852/6920/6852 6753/6820/6753 6853/6921/6853 +f 6753/6820/6753 6754/6821/6754 6853/6921/6853 +f 6853/6921/6853 6754/6821/6754 6854/6922/6854 +f 6754/6821/6754 6755/6822/6755 6854/6922/6854 +f 6854/6922/6854 6755/6822/6755 6855/6923/6855 +f 6755/6822/6755 6756/6823/6756 6855/6923/6855 +f 6855/6923/6855 6756/6823/6756 6856/6924/6856 +f 6756/6823/6756 6757/6824/6757 6856/6924/6856 +f 6856/6924/6856 6757/6824/6757 6857/6925/6857 +f 6757/6824/6757 6758/6825/6758 6857/6925/6857 +f 6857/6925/6857 6758/6825/6758 6858/6926/6858 +f 6758/6825/6758 6759/6826/6759 6858/6926/6858 +f 6858/6926/6858 6759/6826/6759 6859/6927/6859 +f 6759/6826/6759 6760/6827/6760 6859/6927/6859 +f 6859/6927/6859 6760/6827/6760 6860/6928/6860 +f 6760/6827/6760 6761/6828/6761 6860/6928/6860 +f 6860/6928/6860 6761/6828/6761 6861/6929/6861 +f 6761/6828/6761 6762/6829/6762 6861/6929/6861 +f 6861/6929/6861 6762/6829/6762 6862/6930/6862 +f 6762/6829/6762 6763/6830/6763 6862/6930/6862 +f 6862/6930/6862 6763/6830/6763 6863/6931/6863 +f 6763/6830/6763 6764/6831/6764 6863/6931/6863 +f 6863/6931/6863 6764/6831/6764 6864/6932/6864 +f 6764/6831/6764 6765/6832/6765 6864/6932/6864 +f 6864/6932/6864 6765/6832/6765 6865/6933/6865 +f 6765/6832/6765 6766/6833/6766 6865/6933/6865 +f 6865/6933/6865 6766/6833/6766 6866/6934/6866 +f 6766/6833/6766 6767/6834/6767 6866/6934/6866 +f 6866/6934/6866 6767/6834/6767 6867/6935/6867 +f 6767/6834/6767 6768/6835/6768 6867/6935/6867 +f 6867/6935/6867 6768/6835/6768 6868/6936/6868 +f 6768/6835/6768 6769/6836/6769 6868/6936/6868 +f 6868/6936/6868 6769/6836/6769 6869/6937/6869 +f 6769/6836/6769 6770/6837/6770 6869/6937/6869 +f 6869/6937/6869 6770/6837/6770 6870/6938/6870 +f 6770/6837/6770 6771/6838/6771 6870/6938/6870 +f 6870/6938/6870 6771/6838/6771 6871/6939/6871 +f 6771/6838/6771 6772/6839/6772 6871/6939/6871 +f 6871/6939/6871 6772/6839/6772 6872/6940/6872 +f 6772/6839/6772 6773/6840/6773 6872/6940/6872 +f 6872/6940/6872 6773/6840/6773 6873/6941/6873 +f 6773/6840/6773 6774/6841/6774 6873/6941/6873 +f 6873/6941/6873 6774/6841/6774 6874/6942/6874 +f 6774/6841/6774 6775/6842/6775 6874/6942/6874 +f 6874/6942/6874 6775/6842/6775 6875/6943/6875 +f 6775/6842/6775 6776/6843/6776 6875/6943/6875 +f 6875/6943/6875 6776/6843/6776 6876/6944/6876 +f 6776/6843/6776 6777/6844/6777 6876/6944/6876 +f 6876/6944/6876 6777/6844/6777 6877/6945/6877 +f 6777/6844/6777 6778/6845/6778 6877/6945/6877 +f 6877/6945/6877 6778/6845/6778 6878/6946/6878 +f 6778/6845/6778 6779/6846/6779 6878/6946/6878 +f 6878/6946/6878 6779/6846/6779 6879/6947/6879 +f 6779/6846/6779 6780/6847/6780 6879/6947/6879 +f 6879/6947/6879 6780/6847/6780 6880/6948/6880 +f 6780/6847/6780 6781/6848/6781 6880/6948/6880 +f 6880/6948/6880 6781/6848/6781 6881/6949/6881 +f 6781/6848/6781 6782/6849/6782 6881/6949/6881 +f 6881/6949/6881 6782/6849/6782 6882/6950/6882 +f 6782/6849/6782 6783/6850/6783 6882/6950/6882 +f 6882/6950/6882 6783/6850/6783 6883/6951/6883 +f 6783/6850/6783 6784/6851/6784 6883/6951/6883 +f 6883/6951/6883 6784/6851/6784 6884/6952/6884 +f 6784/6851/6784 6785/6852/6785 6884/6952/6884 +f 6884/6952/6884 6785/6852/6785 6885/6953/6885 +f 6785/6852/6785 6786/6853/6786 6885/6953/6885 +f 6885/6953/6885 6786/6853/6786 6886/6954/6886 +f 6786/6853/6786 6787/6854/6787 6886/6954/6886 +f 6886/6954/6886 6787/6854/6787 6887/6955/6887 +f 6787/6854/6787 6788/6855/6788 6887/6955/6887 +f 6887/6955/6887 6788/6855/6788 6888/6956/6888 +f 6788/6855/6788 6789/6856/6789 6888/6956/6888 +f 6888/6956/6888 6789/6856/6789 6889/6957/6889 +f 6789/6856/6789 6790/6857/6790 6889/6957/6889 +f 6889/6957/6889 6790/6857/6790 6890/6958/6890 +f 6790/6857/6790 6791/6858/6791 6890/6958/6890 +f 6890/6958/6890 6791/6858/6791 6891/6959/6891 +f 6791/6858/6791 6792/6859/6792 6891/6959/6891 +f 6891/6959/6891 6792/6859/6792 6892/6960/6892 +f 6792/6859/6792 6793/6860/6793 6892/6960/6892 +f 6892/6960/6892 6793/6860/6793 6893/6961/6893 +f 6793/6860/6793 6794/6861/6794 6893/6961/6893 +f 6893/6961/6893 6794/6861/6794 6894/6962/6894 +f 6794/6861/6794 6795/6862/6795 6894/6962/6894 +f 6894/6962/6894 6795/6862/6795 6895/6963/6895 +f 6795/6862/6795 6796/6863/6796 6895/6963/6895 +f 6895/6963/6895 6796/6863/6796 6896/6964/6896 +f 6796/6863/6796 6797/6864/6797 6896/6964/6896 +f 6896/6964/6896 6797/6864/6797 6897/6965/6897 +f 6797/6864/6797 6798/6865/6798 6897/6965/6897 +f 6897/6965/6897 6798/6865/6798 6898/6966/6898 +f 6798/6865/6798 6799/6866/6799 6898/6966/6898 +f 6898/6966/6898 6799/6866/6799 6899/6967/6899 +f 6799/6866/6799 6800/6867/6800 6899/6967/6899 +f 6899/6967/6899 6800/6867/6800 6900/6968/6900 +f 6800/6867/6800 6701/6868/6701 6900/6968/6900 +f 6900/6968/6900 6701/6868/6701 6801/6969/6801 +f 6801/6869/6801 6802/6870/6802 6901/6970/6901 +f 6901/6970/6901 6802/6870/6802 6902/6971/6902 +f 6802/6870/6802 6803/6871/6803 6902/6971/6902 +f 6902/6971/6902 6803/6871/6803 6903/6972/6903 +f 6803/6871/6803 6804/6872/6804 6903/6972/6903 +f 6903/6972/6903 6804/6872/6804 6904/6973/6904 +f 6804/6872/6804 6805/6873/6805 6904/6973/6904 +f 6904/6973/6904 6805/6873/6805 6905/6974/6905 +f 6805/6873/6805 6806/6874/6806 6905/6974/6905 +f 6905/6974/6905 6806/6874/6806 6906/6975/6906 +f 6806/6874/6806 6807/6875/6807 6906/6975/6906 +f 6906/6975/6906 6807/6875/6807 6907/6976/6907 +f 6807/6875/6807 6808/6876/6808 6907/6976/6907 +f 6907/6976/6907 6808/6876/6808 6908/6977/6908 +f 6808/6876/6808 6809/6877/6809 6908/6977/6908 +f 6908/6977/6908 6809/6877/6809 6909/6978/6909 +f 6809/6877/6809 6810/6878/6810 6909/6978/6909 +f 6909/6978/6909 6810/6878/6810 6910/6979/6910 +f 6810/6878/6810 6811/6879/6811 6910/6979/6910 +f 6910/6979/6910 6811/6879/6811 6911/6980/6911 +f 6811/6879/6811 6812/6880/6812 6911/6980/6911 +f 6911/6980/6911 6812/6880/6812 6912/6981/6912 +f 6812/6880/6812 6813/6881/6813 6912/6981/6912 +f 6912/6981/6912 6813/6881/6813 6913/6982/6913 +f 6813/6881/6813 6814/6882/6814 6913/6982/6913 +f 6913/6982/6913 6814/6882/6814 6914/6983/6914 +f 6814/6882/6814 6815/6883/6815 6914/6983/6914 +f 6914/6983/6914 6815/6883/6815 6915/6984/6915 +f 6815/6883/6815 6816/6884/6816 6915/6984/6915 +f 6915/6984/6915 6816/6884/6816 6916/6985/6916 +f 6816/6884/6816 6817/6885/6817 6916/6985/6916 +f 6916/6985/6916 6817/6885/6817 6917/6986/6917 +f 6817/6885/6817 6818/6886/6818 6917/6986/6917 +f 6917/6986/6917 6818/6886/6818 6918/6987/6918 +f 6818/6886/6818 6819/6887/6819 6918/6987/6918 +f 6918/6987/6918 6819/6887/6819 6919/6988/6919 +f 6819/6887/6819 6820/6888/6820 6919/6988/6919 +f 6919/6988/6919 6820/6888/6820 6920/6989/6920 +f 6820/6888/6820 6821/6889/6821 6920/6989/6920 +f 6920/6989/6920 6821/6889/6821 6921/6990/6921 +f 6821/6889/6821 6822/6890/6822 6921/6990/6921 +f 6921/6990/6921 6822/6890/6822 6922/6991/6922 +f 6822/6890/6822 6823/6891/6823 6922/6991/6922 +f 6922/6991/6922 6823/6891/6823 6923/6992/6923 +f 6823/6891/6823 6824/6892/6824 6923/6992/6923 +f 6923/6992/6923 6824/6892/6824 6924/6993/6924 +f 6824/6892/6824 6825/6893/6825 6924/6993/6924 +f 6924/6993/6924 6825/6893/6825 6925/6994/6925 +f 6825/6893/6825 6826/6894/6826 6925/6994/6925 +f 6925/6994/6925 6826/6894/6826 6926/6995/6926 +f 6826/6894/6826 6827/6895/6827 6926/6995/6926 +f 6926/6995/6926 6827/6895/6827 6927/6996/6927 +f 6827/6895/6827 6828/6896/6828 6927/6996/6927 +f 6927/6996/6927 6828/6896/6828 6928/6997/6928 +f 6828/6896/6828 6829/6897/6829 6928/6997/6928 +f 6928/6997/6928 6829/6897/6829 6929/6998/6929 +f 6829/6897/6829 6830/6898/6830 6929/6998/6929 +f 6929/6998/6929 6830/6898/6830 6930/6999/6930 +f 6830/6898/6830 6831/6899/6831 6930/6999/6930 +f 6930/6999/6930 6831/6899/6831 6931/7000/6931 +f 6831/6899/6831 6832/6900/6832 6931/7000/6931 +f 6931/7000/6931 6832/6900/6832 6932/7001/6932 +f 6832/6900/6832 6833/6901/6833 6932/7001/6932 +f 6932/7001/6932 6833/6901/6833 6933/7002/6933 +f 6833/6901/6833 6834/6902/6834 6933/7002/6933 +f 6933/7002/6933 6834/6902/6834 6934/7003/6934 +f 6834/6902/6834 6835/6903/6835 6934/7003/6934 +f 6934/7003/6934 6835/6903/6835 6935/7004/6935 +f 6835/6903/6835 6836/6904/6836 6935/7004/6935 +f 6935/7004/6935 6836/6904/6836 6936/7005/6936 +f 6836/6904/6836 6837/6905/6837 6936/7005/6936 +f 6936/7005/6936 6837/6905/6837 6937/7006/6937 +f 6837/6905/6837 6838/6906/6838 6937/7006/6937 +f 6937/7006/6937 6838/6906/6838 6938/7007/6938 +f 6838/6906/6838 6839/6907/6839 6938/7007/6938 +f 6938/7007/6938 6839/6907/6839 6939/7008/6939 +f 6839/6907/6839 6840/6908/6840 6939/7008/6939 +f 6939/7008/6939 6840/6908/6840 6940/7009/6940 +f 6840/6908/6840 6841/6909/6841 6940/7009/6940 +f 6940/7009/6940 6841/6909/6841 6941/7010/6941 +f 6841/6909/6841 6842/6910/6842 6941/7010/6941 +f 6941/7010/6941 6842/6910/6842 6942/7011/6942 +f 6842/6910/6842 6843/6911/6843 6942/7011/6942 +f 6942/7011/6942 6843/6911/6843 6943/7012/6943 +f 6843/6911/6843 6844/6912/6844 6943/7012/6943 +f 6943/7012/6943 6844/6912/6844 6944/7013/6944 +f 6844/6912/6844 6845/6913/6845 6944/7013/6944 +f 6944/7013/6944 6845/6913/6845 6945/7014/6945 +f 6845/6913/6845 6846/6914/6846 6945/7014/6945 +f 6945/7014/6945 6846/6914/6846 6946/7015/6946 +f 6846/6914/6846 6847/6915/6847 6946/7015/6946 +f 6946/7015/6946 6847/6915/6847 6947/7016/6947 +f 6847/6915/6847 6848/6916/6848 6947/7016/6947 +f 6947/7016/6947 6848/6916/6848 6948/7017/6948 +f 6848/6916/6848 6849/6917/6849 6948/7017/6948 +f 6948/7017/6948 6849/6917/6849 6949/7018/6949 +f 6849/6917/6849 6850/6918/6850 6949/7018/6949 +f 6949/7018/6949 6850/6918/6850 6950/7019/6950 +f 6850/6918/6850 6851/6919/6851 6950/7019/6950 +f 6950/7019/6950 6851/6919/6851 6951/7020/6951 +f 6851/6919/6851 6852/6920/6852 6951/7020/6951 +f 6951/7020/6951 6852/6920/6852 6952/7021/6952 +f 6852/6920/6852 6853/6921/6853 6952/7021/6952 +f 6952/7021/6952 6853/6921/6853 6953/7022/6953 +f 6853/6921/6853 6854/6922/6854 6953/7022/6953 +f 6953/7022/6953 6854/6922/6854 6954/7023/6954 +f 6854/6922/6854 6855/6923/6855 6954/7023/6954 +f 6954/7023/6954 6855/6923/6855 6955/7024/6955 +f 6855/6923/6855 6856/6924/6856 6955/7024/6955 +f 6955/7024/6955 6856/6924/6856 6956/7025/6956 +f 6856/6924/6856 6857/6925/6857 6956/7025/6956 +f 6956/7025/6956 6857/6925/6857 6957/7026/6957 +f 6857/6925/6857 6858/6926/6858 6957/7026/6957 +f 6957/7026/6957 6858/6926/6858 6958/7027/6958 +f 6858/6926/6858 6859/6927/6859 6958/7027/6958 +f 6958/7027/6958 6859/6927/6859 6959/7028/6959 +f 6859/6927/6859 6860/6928/6860 6959/7028/6959 +f 6959/7028/6959 6860/6928/6860 6960/7029/6960 +f 6860/6928/6860 6861/6929/6861 6960/7029/6960 +f 6960/7029/6960 6861/6929/6861 6961/7030/6961 +f 6861/6929/6861 6862/6930/6862 6961/7030/6961 +f 6961/7030/6961 6862/6930/6862 6962/7031/6962 +f 6862/6930/6862 6863/6931/6863 6962/7031/6962 +f 6962/7031/6962 6863/6931/6863 6963/7032/6963 +f 6863/6931/6863 6864/6932/6864 6963/7032/6963 +f 6963/7032/6963 6864/6932/6864 6964/7033/6964 +f 6864/6932/6864 6865/6933/6865 6964/7033/6964 +f 6964/7033/6964 6865/6933/6865 6965/7034/6965 +f 6865/6933/6865 6866/6934/6866 6965/7034/6965 +f 6965/7034/6965 6866/6934/6866 6966/7035/6966 +f 6866/6934/6866 6867/6935/6867 6966/7035/6966 +f 6966/7035/6966 6867/6935/6867 6967/7036/6967 +f 6867/6935/6867 6868/6936/6868 6967/7036/6967 +f 6967/7036/6967 6868/6936/6868 6968/7037/6968 +f 6868/6936/6868 6869/6937/6869 6968/7037/6968 +f 6968/7037/6968 6869/6937/6869 6969/7038/6969 +f 6869/6937/6869 6870/6938/6870 6969/7038/6969 +f 6969/7038/6969 6870/6938/6870 6970/7039/6970 +f 6870/6938/6870 6871/6939/6871 6970/7039/6970 +f 6970/7039/6970 6871/6939/6871 6971/7040/6971 +f 6871/6939/6871 6872/6940/6872 6971/7040/6971 +f 6971/7040/6971 6872/6940/6872 6972/7041/6972 +f 6872/6940/6872 6873/6941/6873 6972/7041/6972 +f 6972/7041/6972 6873/6941/6873 6973/7042/6973 +f 6873/6941/6873 6874/6942/6874 6973/7042/6973 +f 6973/7042/6973 6874/6942/6874 6974/7043/6974 +f 6874/6942/6874 6875/6943/6875 6974/7043/6974 +f 6974/7043/6974 6875/6943/6875 6975/7044/6975 +f 6875/6943/6875 6876/6944/6876 6975/7044/6975 +f 6975/7044/6975 6876/6944/6876 6976/7045/6976 +f 6876/6944/6876 6877/6945/6877 6976/7045/6976 +f 6976/7045/6976 6877/6945/6877 6977/7046/6977 +f 6877/6945/6877 6878/6946/6878 6977/7046/6977 +f 6977/7046/6977 6878/6946/6878 6978/7047/6978 +f 6878/6946/6878 6879/6947/6879 6978/7047/6978 +f 6978/7047/6978 6879/6947/6879 6979/7048/6979 +f 6879/6947/6879 6880/6948/6880 6979/7048/6979 +f 6979/7048/6979 6880/6948/6880 6980/7049/6980 +f 6880/6948/6880 6881/6949/6881 6980/7049/6980 +f 6980/7049/6980 6881/6949/6881 6981/7050/6981 +f 6881/6949/6881 6882/6950/6882 6981/7050/6981 +f 6981/7050/6981 6882/6950/6882 6982/7051/6982 +f 6882/6950/6882 6883/6951/6883 6982/7051/6982 +f 6982/7051/6982 6883/6951/6883 6983/7052/6983 +f 6883/6951/6883 6884/6952/6884 6983/7052/6983 +f 6983/7052/6983 6884/6952/6884 6984/7053/6984 +f 6884/6952/6884 6885/6953/6885 6984/7053/6984 +f 6984/7053/6984 6885/6953/6885 6985/7054/6985 +f 6885/6953/6885 6886/6954/6886 6985/7054/6985 +f 6985/7054/6985 6886/6954/6886 6986/7055/6986 +f 6886/6954/6886 6887/6955/6887 6986/7055/6986 +f 6986/7055/6986 6887/6955/6887 6987/7056/6987 +f 6887/6955/6887 6888/6956/6888 6987/7056/6987 +f 6987/7056/6987 6888/6956/6888 6988/7057/6988 +f 6888/6956/6888 6889/6957/6889 6988/7057/6988 +f 6988/7057/6988 6889/6957/6889 6989/7058/6989 +f 6889/6957/6889 6890/6958/6890 6989/7058/6989 +f 6989/7058/6989 6890/6958/6890 6990/7059/6990 +f 6890/6958/6890 6891/6959/6891 6990/7059/6990 +f 6990/7059/6990 6891/6959/6891 6991/7060/6991 +f 6891/6959/6891 6892/6960/6892 6991/7060/6991 +f 6991/7060/6991 6892/6960/6892 6992/7061/6992 +f 6892/6960/6892 6893/6961/6893 6992/7061/6992 +f 6992/7061/6992 6893/6961/6893 6993/7062/6993 +f 6893/6961/6893 6894/6962/6894 6993/7062/6993 +f 6993/7062/6993 6894/6962/6894 6994/7063/6994 +f 6894/6962/6894 6895/6963/6895 6994/7063/6994 +f 6994/7063/6994 6895/6963/6895 6995/7064/6995 +f 6895/6963/6895 6896/6964/6896 6995/7064/6995 +f 6995/7064/6995 6896/6964/6896 6996/7065/6996 +f 6896/6964/6896 6897/6965/6897 6996/7065/6996 +f 6996/7065/6996 6897/6965/6897 6997/7066/6997 +f 6897/6965/6897 6898/6966/6898 6997/7066/6997 +f 6997/7066/6997 6898/6966/6898 6998/7067/6998 +f 6898/6966/6898 6899/6967/6899 6998/7067/6998 +f 6998/7067/6998 6899/6967/6899 6999/7068/6999 +f 6899/6967/6899 6900/6968/6900 6999/7068/6999 +f 6999/7068/6999 6900/6968/6900 7000/7069/7000 +f 6900/6968/6900 6801/6969/6801 7000/7069/7000 +f 7000/7069/7000 6801/6969/6801 6901/7070/6901 +f 6901/6970/6901 6902/6971/6902 7001/7071/7001 +f 7001/7071/7001 6902/6971/6902 7002/7072/7002 +f 6902/6971/6902 6903/6972/6903 7002/7072/7002 +f 7002/7072/7002 6903/6972/6903 7003/7073/7003 +f 6903/6972/6903 6904/6973/6904 7003/7073/7003 +f 7003/7073/7003 6904/6973/6904 7004/7074/7004 +f 6904/6973/6904 6905/6974/6905 7004/7074/7004 +f 7004/7074/7004 6905/6974/6905 7005/7075/7005 +f 6905/6974/6905 6906/6975/6906 7005/7075/7005 +f 7005/7075/7005 6906/6975/6906 7006/7076/7006 +f 6906/6975/6906 6907/6976/6907 7006/7076/7006 +f 7006/7076/7006 6907/6976/6907 7007/7077/7007 +f 6907/6976/6907 6908/6977/6908 7007/7077/7007 +f 7007/7077/7007 6908/6977/6908 7008/7078/7008 +f 6908/6977/6908 6909/6978/6909 7008/7078/7008 +f 7008/7078/7008 6909/6978/6909 7009/7079/7009 +f 6909/6978/6909 6910/6979/6910 7009/7079/7009 +f 7009/7079/7009 6910/6979/6910 7010/7080/7010 +f 6910/6979/6910 6911/6980/6911 7010/7080/7010 +f 7010/7080/7010 6911/6980/6911 7011/7081/7011 +f 6911/6980/6911 6912/6981/6912 7011/7081/7011 +f 7011/7081/7011 6912/6981/6912 7012/7082/7012 +f 6912/6981/6912 6913/6982/6913 7012/7082/7012 +f 7012/7082/7012 6913/6982/6913 7013/7083/7013 +f 6913/6982/6913 6914/6983/6914 7013/7083/7013 +f 7013/7083/7013 6914/6983/6914 7014/7084/7014 +f 6914/6983/6914 6915/6984/6915 7014/7084/7014 +f 7014/7084/7014 6915/6984/6915 7015/7085/7015 +f 6915/6984/6915 6916/6985/6916 7015/7085/7015 +f 7015/7085/7015 6916/6985/6916 7016/7086/7016 +f 6916/6985/6916 6917/6986/6917 7016/7086/7016 +f 7016/7086/7016 6917/6986/6917 7017/7087/7017 +f 6917/6986/6917 6918/6987/6918 7017/7087/7017 +f 7017/7087/7017 6918/6987/6918 7018/7088/7018 +f 6918/6987/6918 6919/6988/6919 7018/7088/7018 +f 7018/7088/7018 6919/6988/6919 7019/7089/7019 +f 6919/6988/6919 6920/6989/6920 7019/7089/7019 +f 7019/7089/7019 6920/6989/6920 7020/7090/7020 +f 6920/6989/6920 6921/6990/6921 7020/7090/7020 +f 7020/7090/7020 6921/6990/6921 7021/7091/7021 +f 6921/6990/6921 6922/6991/6922 7021/7091/7021 +f 7021/7091/7021 6922/6991/6922 7022/7092/7022 +f 6922/6991/6922 6923/6992/6923 7022/7092/7022 +f 7022/7092/7022 6923/6992/6923 7023/7093/7023 +f 6923/6992/6923 6924/6993/6924 7023/7093/7023 +f 7023/7093/7023 6924/6993/6924 7024/7094/7024 +f 6924/6993/6924 6925/6994/6925 7024/7094/7024 +f 7024/7094/7024 6925/6994/6925 7025/7095/7025 +f 6925/6994/6925 6926/6995/6926 7025/7095/7025 +f 7025/7095/7025 6926/6995/6926 7026/7096/7026 +f 6926/6995/6926 6927/6996/6927 7026/7096/7026 +f 7026/7096/7026 6927/6996/6927 7027/7097/7027 +f 6927/6996/6927 6928/6997/6928 7027/7097/7027 +f 7027/7097/7027 6928/6997/6928 7028/7098/7028 +f 6928/6997/6928 6929/6998/6929 7028/7098/7028 +f 7028/7098/7028 6929/6998/6929 7029/7099/7029 +f 6929/6998/6929 6930/6999/6930 7029/7099/7029 +f 7029/7099/7029 6930/6999/6930 7030/7100/7030 +f 6930/6999/6930 6931/7000/6931 7030/7100/7030 +f 7030/7100/7030 6931/7000/6931 7031/7101/7031 +f 6931/7000/6931 6932/7001/6932 7031/7101/7031 +f 7031/7101/7031 6932/7001/6932 7032/7102/7032 +f 6932/7001/6932 6933/7002/6933 7032/7102/7032 +f 7032/7102/7032 6933/7002/6933 7033/7103/7033 +f 6933/7002/6933 6934/7003/6934 7033/7103/7033 +f 7033/7103/7033 6934/7003/6934 7034/7104/7034 +f 6934/7003/6934 6935/7004/6935 7034/7104/7034 +f 7034/7104/7034 6935/7004/6935 7035/7105/7035 +f 6935/7004/6935 6936/7005/6936 7035/7105/7035 +f 7035/7105/7035 6936/7005/6936 7036/7106/7036 +f 6936/7005/6936 6937/7006/6937 7036/7106/7036 +f 7036/7106/7036 6937/7006/6937 7037/7107/7037 +f 6937/7006/6937 6938/7007/6938 7037/7107/7037 +f 7037/7107/7037 6938/7007/6938 7038/7108/7038 +f 6938/7007/6938 6939/7008/6939 7038/7108/7038 +f 7038/7108/7038 6939/7008/6939 7039/7109/7039 +f 6939/7008/6939 6940/7009/6940 7039/7109/7039 +f 7039/7109/7039 6940/7009/6940 7040/7110/7040 +f 6940/7009/6940 6941/7010/6941 7040/7110/7040 +f 7040/7110/7040 6941/7010/6941 7041/7111/7041 +f 6941/7010/6941 6942/7011/6942 7041/7111/7041 +f 7041/7111/7041 6942/7011/6942 7042/7112/7042 +f 6942/7011/6942 6943/7012/6943 7042/7112/7042 +f 7042/7112/7042 6943/7012/6943 7043/7113/7043 +f 6943/7012/6943 6944/7013/6944 7043/7113/7043 +f 7043/7113/7043 6944/7013/6944 7044/7114/7044 +f 6944/7013/6944 6945/7014/6945 7044/7114/7044 +f 7044/7114/7044 6945/7014/6945 7045/7115/7045 +f 6945/7014/6945 6946/7015/6946 7045/7115/7045 +f 7045/7115/7045 6946/7015/6946 7046/7116/7046 +f 6946/7015/6946 6947/7016/6947 7046/7116/7046 +f 7046/7116/7046 6947/7016/6947 7047/7117/7047 +f 6947/7016/6947 6948/7017/6948 7047/7117/7047 +f 7047/7117/7047 6948/7017/6948 7048/7118/7048 +f 6948/7017/6948 6949/7018/6949 7048/7118/7048 +f 7048/7118/7048 6949/7018/6949 7049/7119/7049 +f 6949/7018/6949 6950/7019/6950 7049/7119/7049 +f 7049/7119/7049 6950/7019/6950 7050/7120/7050 +f 6950/7019/6950 6951/7020/6951 7050/7120/7050 +f 7050/7120/7050 6951/7020/6951 7051/7121/7051 +f 6951/7020/6951 6952/7021/6952 7051/7121/7051 +f 7051/7121/7051 6952/7021/6952 7052/7122/7052 +f 6952/7021/6952 6953/7022/6953 7052/7122/7052 +f 7052/7122/7052 6953/7022/6953 7053/7123/7053 +f 6953/7022/6953 6954/7023/6954 7053/7123/7053 +f 7053/7123/7053 6954/7023/6954 7054/7124/7054 +f 6954/7023/6954 6955/7024/6955 7054/7124/7054 +f 7054/7124/7054 6955/7024/6955 7055/7125/7055 +f 6955/7024/6955 6956/7025/6956 7055/7125/7055 +f 7055/7125/7055 6956/7025/6956 7056/7126/7056 +f 6956/7025/6956 6957/7026/6957 7056/7126/7056 +f 7056/7126/7056 6957/7026/6957 7057/7127/7057 +f 6957/7026/6957 6958/7027/6958 7057/7127/7057 +f 7057/7127/7057 6958/7027/6958 7058/7128/7058 +f 6958/7027/6958 6959/7028/6959 7058/7128/7058 +f 7058/7128/7058 6959/7028/6959 7059/7129/7059 +f 6959/7028/6959 6960/7029/6960 7059/7129/7059 +f 7059/7129/7059 6960/7029/6960 7060/7130/7060 +f 6960/7029/6960 6961/7030/6961 7060/7130/7060 +f 7060/7130/7060 6961/7030/6961 7061/7131/7061 +f 6961/7030/6961 6962/7031/6962 7061/7131/7061 +f 7061/7131/7061 6962/7031/6962 7062/7132/7062 +f 6962/7031/6962 6963/7032/6963 7062/7132/7062 +f 7062/7132/7062 6963/7032/6963 7063/7133/7063 +f 6963/7032/6963 6964/7033/6964 7063/7133/7063 +f 7063/7133/7063 6964/7033/6964 7064/7134/7064 +f 6964/7033/6964 6965/7034/6965 7064/7134/7064 +f 7064/7134/7064 6965/7034/6965 7065/7135/7065 +f 6965/7034/6965 6966/7035/6966 7065/7135/7065 +f 7065/7135/7065 6966/7035/6966 7066/7136/7066 +f 6966/7035/6966 6967/7036/6967 7066/7136/7066 +f 7066/7136/7066 6967/7036/6967 7067/7137/7067 +f 6967/7036/6967 6968/7037/6968 7067/7137/7067 +f 7067/7137/7067 6968/7037/6968 7068/7138/7068 +f 6968/7037/6968 6969/7038/6969 7068/7138/7068 +f 7068/7138/7068 6969/7038/6969 7069/7139/7069 +f 6969/7038/6969 6970/7039/6970 7069/7139/7069 +f 7069/7139/7069 6970/7039/6970 7070/7140/7070 +f 6970/7039/6970 6971/7040/6971 7070/7140/7070 +f 7070/7140/7070 6971/7040/6971 7071/7141/7071 +f 6971/7040/6971 6972/7041/6972 7071/7141/7071 +f 7071/7141/7071 6972/7041/6972 7072/7142/7072 +f 6972/7041/6972 6973/7042/6973 7072/7142/7072 +f 7072/7142/7072 6973/7042/6973 7073/7143/7073 +f 6973/7042/6973 6974/7043/6974 7073/7143/7073 +f 7073/7143/7073 6974/7043/6974 7074/7144/7074 +f 6974/7043/6974 6975/7044/6975 7074/7144/7074 +f 7074/7144/7074 6975/7044/6975 7075/7145/7075 +f 6975/7044/6975 6976/7045/6976 7075/7145/7075 +f 7075/7145/7075 6976/7045/6976 7076/7146/7076 +f 6976/7045/6976 6977/7046/6977 7076/7146/7076 +f 7076/7146/7076 6977/7046/6977 7077/7147/7077 +f 6977/7046/6977 6978/7047/6978 7077/7147/7077 +f 7077/7147/7077 6978/7047/6978 7078/7148/7078 +f 6978/7047/6978 6979/7048/6979 7078/7148/7078 +f 7078/7148/7078 6979/7048/6979 7079/7149/7079 +f 6979/7048/6979 6980/7049/6980 7079/7149/7079 +f 7079/7149/7079 6980/7049/6980 7080/7150/7080 +f 6980/7049/6980 6981/7050/6981 7080/7150/7080 +f 7080/7150/7080 6981/7050/6981 7081/7151/7081 +f 6981/7050/6981 6982/7051/6982 7081/7151/7081 +f 7081/7151/7081 6982/7051/6982 7082/7152/7082 +f 6982/7051/6982 6983/7052/6983 7082/7152/7082 +f 7082/7152/7082 6983/7052/6983 7083/7153/7083 +f 6983/7052/6983 6984/7053/6984 7083/7153/7083 +f 7083/7153/7083 6984/7053/6984 7084/7154/7084 +f 6984/7053/6984 6985/7054/6985 7084/7154/7084 +f 7084/7154/7084 6985/7054/6985 7085/7155/7085 +f 6985/7054/6985 6986/7055/6986 7085/7155/7085 +f 7085/7155/7085 6986/7055/6986 7086/7156/7086 +f 6986/7055/6986 6987/7056/6987 7086/7156/7086 +f 7086/7156/7086 6987/7056/6987 7087/7157/7087 +f 6987/7056/6987 6988/7057/6988 7087/7157/7087 +f 7087/7157/7087 6988/7057/6988 7088/7158/7088 +f 6988/7057/6988 6989/7058/6989 7088/7158/7088 +f 7088/7158/7088 6989/7058/6989 7089/7159/7089 +f 6989/7058/6989 6990/7059/6990 7089/7159/7089 +f 7089/7159/7089 6990/7059/6990 7090/7160/7090 +f 6990/7059/6990 6991/7060/6991 7090/7160/7090 +f 7090/7160/7090 6991/7060/6991 7091/7161/7091 +f 6991/7060/6991 6992/7061/6992 7091/7161/7091 +f 7091/7161/7091 6992/7061/6992 7092/7162/7092 +f 6992/7061/6992 6993/7062/6993 7092/7162/7092 +f 7092/7162/7092 6993/7062/6993 7093/7163/7093 +f 6993/7062/6993 6994/7063/6994 7093/7163/7093 +f 7093/7163/7093 6994/7063/6994 7094/7164/7094 +f 6994/7063/6994 6995/7064/6995 7094/7164/7094 +f 7094/7164/7094 6995/7064/6995 7095/7165/7095 +f 6995/7064/6995 6996/7065/6996 7095/7165/7095 +f 7095/7165/7095 6996/7065/6996 7096/7166/7096 +f 6996/7065/6996 6997/7066/6997 7096/7166/7096 +f 7096/7166/7096 6997/7066/6997 7097/7167/7097 +f 6997/7066/6997 6998/7067/6998 7097/7167/7097 +f 7097/7167/7097 6998/7067/6998 7098/7168/7098 +f 6998/7067/6998 6999/7068/6999 7098/7168/7098 +f 7098/7168/7098 6999/7068/6999 7099/7169/7099 +f 6999/7068/6999 7000/7069/7000 7099/7169/7099 +f 7099/7169/7099 7000/7069/7000 7100/7170/7100 +f 7000/7069/7000 6901/7070/6901 7100/7170/7100 +f 7100/7170/7100 6901/7070/6901 7001/7171/7001 +f 7001/7071/7001 7002/7072/7002 7101/7172/7101 +f 7101/7172/7101 7002/7072/7002 7102/7173/7102 +f 7002/7072/7002 7003/7073/7003 7102/7173/7102 +f 7102/7173/7102 7003/7073/7003 7103/7174/7103 +f 7003/7073/7003 7004/7074/7004 7103/7174/7103 +f 7103/7174/7103 7004/7074/7004 7104/7175/7104 +f 7004/7074/7004 7005/7075/7005 7104/7175/7104 +f 7104/7175/7104 7005/7075/7005 7105/7176/7105 +f 7005/7075/7005 7006/7076/7006 7105/7176/7105 +f 7105/7176/7105 7006/7076/7006 7106/7177/7106 +f 7006/7076/7006 7007/7077/7007 7106/7177/7106 +f 7106/7177/7106 7007/7077/7007 7107/7178/7107 +f 7007/7077/7007 7008/7078/7008 7107/7178/7107 +f 7107/7178/7107 7008/7078/7008 7108/7179/7108 +f 7008/7078/7008 7009/7079/7009 7108/7179/7108 +f 7108/7179/7108 7009/7079/7009 7109/7180/7109 +f 7009/7079/7009 7010/7080/7010 7109/7180/7109 +f 7109/7180/7109 7010/7080/7010 7110/7181/7110 +f 7010/7080/7010 7011/7081/7011 7110/7181/7110 +f 7110/7181/7110 7011/7081/7011 7111/7182/7111 +f 7011/7081/7011 7012/7082/7012 7111/7182/7111 +f 7111/7182/7111 7012/7082/7012 7112/7183/7112 +f 7012/7082/7012 7013/7083/7013 7112/7183/7112 +f 7112/7183/7112 7013/7083/7013 7113/7184/7113 +f 7013/7083/7013 7014/7084/7014 7113/7184/7113 +f 7113/7184/7113 7014/7084/7014 7114/7185/7114 +f 7014/7084/7014 7015/7085/7015 7114/7185/7114 +f 7114/7185/7114 7015/7085/7015 7115/7186/7115 +f 7015/7085/7015 7016/7086/7016 7115/7186/7115 +f 7115/7186/7115 7016/7086/7016 7116/7187/7116 +f 7016/7086/7016 7017/7087/7017 7116/7187/7116 +f 7116/7187/7116 7017/7087/7017 7117/7188/7117 +f 7017/7087/7017 7018/7088/7018 7117/7188/7117 +f 7117/7188/7117 7018/7088/7018 7118/7189/7118 +f 7018/7088/7018 7019/7089/7019 7118/7189/7118 +f 7118/7189/7118 7019/7089/7019 7119/7190/7119 +f 7019/7089/7019 7020/7090/7020 7119/7190/7119 +f 7119/7190/7119 7020/7090/7020 7120/7191/7120 +f 7020/7090/7020 7021/7091/7021 7120/7191/7120 +f 7120/7191/7120 7021/7091/7021 7121/7192/7121 +f 7021/7091/7021 7022/7092/7022 7121/7192/7121 +f 7121/7192/7121 7022/7092/7022 7122/7193/7122 +f 7022/7092/7022 7023/7093/7023 7122/7193/7122 +f 7122/7193/7122 7023/7093/7023 7123/7194/7123 +f 7023/7093/7023 7024/7094/7024 7123/7194/7123 +f 7123/7194/7123 7024/7094/7024 7124/7195/7124 +f 7024/7094/7024 7025/7095/7025 7124/7195/7124 +f 7124/7195/7124 7025/7095/7025 7125/7196/7125 +f 7025/7095/7025 7026/7096/7026 7125/7196/7125 +f 7125/7196/7125 7026/7096/7026 7126/7197/7126 +f 7026/7096/7026 7027/7097/7027 7126/7197/7126 +f 7126/7197/7126 7027/7097/7027 7127/7198/7127 +f 7027/7097/7027 7028/7098/7028 7127/7198/7127 +f 7127/7198/7127 7028/7098/7028 7128/7199/7128 +f 7028/7098/7028 7029/7099/7029 7128/7199/7128 +f 7128/7199/7128 7029/7099/7029 7129/7200/7129 +f 7029/7099/7029 7030/7100/7030 7129/7200/7129 +f 7129/7200/7129 7030/7100/7030 7130/7201/7130 +f 7030/7100/7030 7031/7101/7031 7130/7201/7130 +f 7130/7201/7130 7031/7101/7031 7131/7202/7131 +f 7031/7101/7031 7032/7102/7032 7131/7202/7131 +f 7131/7202/7131 7032/7102/7032 7132/7203/7132 +f 7032/7102/7032 7033/7103/7033 7132/7203/7132 +f 7132/7203/7132 7033/7103/7033 7133/7204/7133 +f 7033/7103/7033 7034/7104/7034 7133/7204/7133 +f 7133/7204/7133 7034/7104/7034 7134/7205/7134 +f 7034/7104/7034 7035/7105/7035 7134/7205/7134 +f 7134/7205/7134 7035/7105/7035 7135/7206/7135 +f 7035/7105/7035 7036/7106/7036 7135/7206/7135 +f 7135/7206/7135 7036/7106/7036 7136/7207/7136 +f 7036/7106/7036 7037/7107/7037 7136/7207/7136 +f 7136/7207/7136 7037/7107/7037 7137/7208/7137 +f 7037/7107/7037 7038/7108/7038 7137/7208/7137 +f 7137/7208/7137 7038/7108/7038 7138/7209/7138 +f 7038/7108/7038 7039/7109/7039 7138/7209/7138 +f 7138/7209/7138 7039/7109/7039 7139/7210/7139 +f 7039/7109/7039 7040/7110/7040 7139/7210/7139 +f 7139/7210/7139 7040/7110/7040 7140/7211/7140 +f 7040/7110/7040 7041/7111/7041 7140/7211/7140 +f 7140/7211/7140 7041/7111/7041 7141/7212/7141 +f 7041/7111/7041 7042/7112/7042 7141/7212/7141 +f 7141/7212/7141 7042/7112/7042 7142/7213/7142 +f 7042/7112/7042 7043/7113/7043 7142/7213/7142 +f 7142/7213/7142 7043/7113/7043 7143/7214/7143 +f 7043/7113/7043 7044/7114/7044 7143/7214/7143 +f 7143/7214/7143 7044/7114/7044 7144/7215/7144 +f 7044/7114/7044 7045/7115/7045 7144/7215/7144 +f 7144/7215/7144 7045/7115/7045 7145/7216/7145 +f 7045/7115/7045 7046/7116/7046 7145/7216/7145 +f 7145/7216/7145 7046/7116/7046 7146/7217/7146 +f 7046/7116/7046 7047/7117/7047 7146/7217/7146 +f 7146/7217/7146 7047/7117/7047 7147/7218/7147 +f 7047/7117/7047 7048/7118/7048 7147/7218/7147 +f 7147/7218/7147 7048/7118/7048 7148/7219/7148 +f 7048/7118/7048 7049/7119/7049 7148/7219/7148 +f 7148/7219/7148 7049/7119/7049 7149/7220/7149 +f 7049/7119/7049 7050/7120/7050 7149/7220/7149 +f 7149/7220/7149 7050/7120/7050 7150/7221/7150 +f 7050/7120/7050 7051/7121/7051 7150/7221/7150 +f 7150/7221/7150 7051/7121/7051 7151/7222/7151 +f 7051/7121/7051 7052/7122/7052 7151/7222/7151 +f 7151/7222/7151 7052/7122/7052 7152/7223/7152 +f 7052/7122/7052 7053/7123/7053 7152/7223/7152 +f 7152/7223/7152 7053/7123/7053 7153/7224/7153 +f 7053/7123/7053 7054/7124/7054 7153/7224/7153 +f 7153/7224/7153 7054/7124/7054 7154/7225/7154 +f 7054/7124/7054 7055/7125/7055 7154/7225/7154 +f 7154/7225/7154 7055/7125/7055 7155/7226/7155 +f 7055/7125/7055 7056/7126/7056 7155/7226/7155 +f 7155/7226/7155 7056/7126/7056 7156/7227/7156 +f 7056/7126/7056 7057/7127/7057 7156/7227/7156 +f 7156/7227/7156 7057/7127/7057 7157/7228/7157 +f 7057/7127/7057 7058/7128/7058 7157/7228/7157 +f 7157/7228/7157 7058/7128/7058 7158/7229/7158 +f 7058/7128/7058 7059/7129/7059 7158/7229/7158 +f 7158/7229/7158 7059/7129/7059 7159/7230/7159 +f 7059/7129/7059 7060/7130/7060 7159/7230/7159 +f 7159/7230/7159 7060/7130/7060 7160/7231/7160 +f 7060/7130/7060 7061/7131/7061 7160/7231/7160 +f 7160/7231/7160 7061/7131/7061 7161/7232/7161 +f 7061/7131/7061 7062/7132/7062 7161/7232/7161 +f 7161/7232/7161 7062/7132/7062 7162/7233/7162 +f 7062/7132/7062 7063/7133/7063 7162/7233/7162 +f 7162/7233/7162 7063/7133/7063 7163/7234/7163 +f 7063/7133/7063 7064/7134/7064 7163/7234/7163 +f 7163/7234/7163 7064/7134/7064 7164/7235/7164 +f 7064/7134/7064 7065/7135/7065 7164/7235/7164 +f 7164/7235/7164 7065/7135/7065 7165/7236/7165 +f 7065/7135/7065 7066/7136/7066 7165/7236/7165 +f 7165/7236/7165 7066/7136/7066 7166/7237/7166 +f 7066/7136/7066 7067/7137/7067 7166/7237/7166 +f 7166/7237/7166 7067/7137/7067 7167/7238/7167 +f 7067/7137/7067 7068/7138/7068 7167/7238/7167 +f 7167/7238/7167 7068/7138/7068 7168/7239/7168 +f 7068/7138/7068 7069/7139/7069 7168/7239/7168 +f 7168/7239/7168 7069/7139/7069 7169/7240/7169 +f 7069/7139/7069 7070/7140/7070 7169/7240/7169 +f 7169/7240/7169 7070/7140/7070 7170/7241/7170 +f 7070/7140/7070 7071/7141/7071 7170/7241/7170 +f 7170/7241/7170 7071/7141/7071 7171/7242/7171 +f 7071/7141/7071 7072/7142/7072 7171/7242/7171 +f 7171/7242/7171 7072/7142/7072 7172/7243/7172 +f 7072/7142/7072 7073/7143/7073 7172/7243/7172 +f 7172/7243/7172 7073/7143/7073 7173/7244/7173 +f 7073/7143/7073 7074/7144/7074 7173/7244/7173 +f 7173/7244/7173 7074/7144/7074 7174/7245/7174 +f 7074/7144/7074 7075/7145/7075 7174/7245/7174 +f 7174/7245/7174 7075/7145/7075 7175/7246/7175 +f 7075/7145/7075 7076/7146/7076 7175/7246/7175 +f 7175/7246/7175 7076/7146/7076 7176/7247/7176 +f 7076/7146/7076 7077/7147/7077 7176/7247/7176 +f 7176/7247/7176 7077/7147/7077 7177/7248/7177 +f 7077/7147/7077 7078/7148/7078 7177/7248/7177 +f 7177/7248/7177 7078/7148/7078 7178/7249/7178 +f 7078/7148/7078 7079/7149/7079 7178/7249/7178 +f 7178/7249/7178 7079/7149/7079 7179/7250/7179 +f 7079/7149/7079 7080/7150/7080 7179/7250/7179 +f 7179/7250/7179 7080/7150/7080 7180/7251/7180 +f 7080/7150/7080 7081/7151/7081 7180/7251/7180 +f 7180/7251/7180 7081/7151/7081 7181/7252/7181 +f 7081/7151/7081 7082/7152/7082 7181/7252/7181 +f 7181/7252/7181 7082/7152/7082 7182/7253/7182 +f 7082/7152/7082 7083/7153/7083 7182/7253/7182 +f 7182/7253/7182 7083/7153/7083 7183/7254/7183 +f 7083/7153/7083 7084/7154/7084 7183/7254/7183 +f 7183/7254/7183 7084/7154/7084 7184/7255/7184 +f 7084/7154/7084 7085/7155/7085 7184/7255/7184 +f 7184/7255/7184 7085/7155/7085 7185/7256/7185 +f 7085/7155/7085 7086/7156/7086 7185/7256/7185 +f 7185/7256/7185 7086/7156/7086 7186/7257/7186 +f 7086/7156/7086 7087/7157/7087 7186/7257/7186 +f 7186/7257/7186 7087/7157/7087 7187/7258/7187 +f 7087/7157/7087 7088/7158/7088 7187/7258/7187 +f 7187/7258/7187 7088/7158/7088 7188/7259/7188 +f 7088/7158/7088 7089/7159/7089 7188/7259/7188 +f 7188/7259/7188 7089/7159/7089 7189/7260/7189 +f 7089/7159/7089 7090/7160/7090 7189/7260/7189 +f 7189/7260/7189 7090/7160/7090 7190/7261/7190 +f 7090/7160/7090 7091/7161/7091 7190/7261/7190 +f 7190/7261/7190 7091/7161/7091 7191/7262/7191 +f 7091/7161/7091 7092/7162/7092 7191/7262/7191 +f 7191/7262/7191 7092/7162/7092 7192/7263/7192 +f 7092/7162/7092 7093/7163/7093 7192/7263/7192 +f 7192/7263/7192 7093/7163/7093 7193/7264/7193 +f 7093/7163/7093 7094/7164/7094 7193/7264/7193 +f 7193/7264/7193 7094/7164/7094 7194/7265/7194 +f 7094/7164/7094 7095/7165/7095 7194/7265/7194 +f 7194/7265/7194 7095/7165/7095 7195/7266/7195 +f 7095/7165/7095 7096/7166/7096 7195/7266/7195 +f 7195/7266/7195 7096/7166/7096 7196/7267/7196 +f 7096/7166/7096 7097/7167/7097 7196/7267/7196 +f 7196/7267/7196 7097/7167/7097 7197/7268/7197 +f 7097/7167/7097 7098/7168/7098 7197/7268/7197 +f 7197/7268/7197 7098/7168/7098 7198/7269/7198 +f 7098/7168/7098 7099/7169/7099 7198/7269/7198 +f 7198/7269/7198 7099/7169/7099 7199/7270/7199 +f 7099/7169/7099 7100/7170/7100 7199/7270/7199 +f 7199/7270/7199 7100/7170/7100 7200/7271/7200 +f 7100/7170/7100 7001/7171/7001 7200/7271/7200 +f 7200/7271/7200 7001/7171/7001 7101/7272/7101 +f 7101/7172/7101 7102/7173/7102 7201/7273/7201 +f 7201/7273/7201 7102/7173/7102 7202/7274/7202 +f 7102/7173/7102 7103/7174/7103 7202/7274/7202 +f 7202/7274/7202 7103/7174/7103 7203/7275/7203 +f 7103/7174/7103 7104/7175/7104 7203/7275/7203 +f 7203/7275/7203 7104/7175/7104 7204/7276/7204 +f 7104/7175/7104 7105/7176/7105 7204/7276/7204 +f 7204/7276/7204 7105/7176/7105 7205/7277/7205 +f 7105/7176/7105 7106/7177/7106 7205/7277/7205 +f 7205/7277/7205 7106/7177/7106 7206/7278/7206 +f 7106/7177/7106 7107/7178/7107 7206/7278/7206 +f 7206/7278/7206 7107/7178/7107 7207/7279/7207 +f 7107/7178/7107 7108/7179/7108 7207/7279/7207 +f 7207/7279/7207 7108/7179/7108 7208/7280/7208 +f 7108/7179/7108 7109/7180/7109 7208/7280/7208 +f 7208/7280/7208 7109/7180/7109 7209/7281/7209 +f 7109/7180/7109 7110/7181/7110 7209/7281/7209 +f 7209/7281/7209 7110/7181/7110 7210/7282/7210 +f 7110/7181/7110 7111/7182/7111 7210/7282/7210 +f 7210/7282/7210 7111/7182/7111 7211/7283/7211 +f 7111/7182/7111 7112/7183/7112 7211/7283/7211 +f 7211/7283/7211 7112/7183/7112 7212/7284/7212 +f 7112/7183/7112 7113/7184/7113 7212/7284/7212 +f 7212/7284/7212 7113/7184/7113 7213/7285/7213 +f 7113/7184/7113 7114/7185/7114 7213/7285/7213 +f 7213/7285/7213 7114/7185/7114 7214/7286/7214 +f 7114/7185/7114 7115/7186/7115 7214/7286/7214 +f 7214/7286/7214 7115/7186/7115 7215/7287/7215 +f 7115/7186/7115 7116/7187/7116 7215/7287/7215 +f 7215/7287/7215 7116/7187/7116 7216/7288/7216 +f 7116/7187/7116 7117/7188/7117 7216/7288/7216 +f 7216/7288/7216 7117/7188/7117 7217/7289/7217 +f 7117/7188/7117 7118/7189/7118 7217/7289/7217 +f 7217/7289/7217 7118/7189/7118 7218/7290/7218 +f 7118/7189/7118 7119/7190/7119 7218/7290/7218 +f 7218/7290/7218 7119/7190/7119 7219/7291/7219 +f 7119/7190/7119 7120/7191/7120 7219/7291/7219 +f 7219/7291/7219 7120/7191/7120 7220/7292/7220 +f 7120/7191/7120 7121/7192/7121 7220/7292/7220 +f 7220/7292/7220 7121/7192/7121 7221/7293/7221 +f 7121/7192/7121 7122/7193/7122 7221/7293/7221 +f 7221/7293/7221 7122/7193/7122 7222/7294/7222 +f 7122/7193/7122 7123/7194/7123 7222/7294/7222 +f 7222/7294/7222 7123/7194/7123 7223/7295/7223 +f 7123/7194/7123 7124/7195/7124 7223/7295/7223 +f 7223/7295/7223 7124/7195/7124 7224/7296/7224 +f 7124/7195/7124 7125/7196/7125 7224/7296/7224 +f 7224/7296/7224 7125/7196/7125 7225/7297/7225 +f 7125/7196/7125 7126/7197/7126 7225/7297/7225 +f 7225/7297/7225 7126/7197/7126 7226/7298/7226 +f 7126/7197/7126 7127/7198/7127 7226/7298/7226 +f 7226/7298/7226 7127/7198/7127 7227/7299/7227 +f 7127/7198/7127 7128/7199/7128 7227/7299/7227 +f 7227/7299/7227 7128/7199/7128 7228/7300/7228 +f 7128/7199/7128 7129/7200/7129 7228/7300/7228 +f 7228/7300/7228 7129/7200/7129 7229/7301/7229 +f 7129/7200/7129 7130/7201/7130 7229/7301/7229 +f 7229/7301/7229 7130/7201/7130 7230/7302/7230 +f 7130/7201/7130 7131/7202/7131 7230/7302/7230 +f 7230/7302/7230 7131/7202/7131 7231/7303/7231 +f 7131/7202/7131 7132/7203/7132 7231/7303/7231 +f 7231/7303/7231 7132/7203/7132 7232/7304/7232 +f 7132/7203/7132 7133/7204/7133 7232/7304/7232 +f 7232/7304/7232 7133/7204/7133 7233/7305/7233 +f 7133/7204/7133 7134/7205/7134 7233/7305/7233 +f 7233/7305/7233 7134/7205/7134 7234/7306/7234 +f 7134/7205/7134 7135/7206/7135 7234/7306/7234 +f 7234/7306/7234 7135/7206/7135 7235/7307/7235 +f 7135/7206/7135 7136/7207/7136 7235/7307/7235 +f 7235/7307/7235 7136/7207/7136 7236/7308/7236 +f 7136/7207/7136 7137/7208/7137 7236/7308/7236 +f 7236/7308/7236 7137/7208/7137 7237/7309/7237 +f 7137/7208/7137 7138/7209/7138 7237/7309/7237 +f 7237/7309/7237 7138/7209/7138 7238/7310/7238 +f 7138/7209/7138 7139/7210/7139 7238/7310/7238 +f 7238/7310/7238 7139/7210/7139 7239/7311/7239 +f 7139/7210/7139 7140/7211/7140 7239/7311/7239 +f 7239/7311/7239 7140/7211/7140 7240/7312/7240 +f 7140/7211/7140 7141/7212/7141 7240/7312/7240 +f 7240/7312/7240 7141/7212/7141 7241/7313/7241 +f 7141/7212/7141 7142/7213/7142 7241/7313/7241 +f 7241/7313/7241 7142/7213/7142 7242/7314/7242 +f 7142/7213/7142 7143/7214/7143 7242/7314/7242 +f 7242/7314/7242 7143/7214/7143 7243/7315/7243 +f 7143/7214/7143 7144/7215/7144 7243/7315/7243 +f 7243/7315/7243 7144/7215/7144 7244/7316/7244 +f 7144/7215/7144 7145/7216/7145 7244/7316/7244 +f 7244/7316/7244 7145/7216/7145 7245/7317/7245 +f 7145/7216/7145 7146/7217/7146 7245/7317/7245 +f 7245/7317/7245 7146/7217/7146 7246/7318/7246 +f 7146/7217/7146 7147/7218/7147 7246/7318/7246 +f 7246/7318/7246 7147/7218/7147 7247/7319/7247 +f 7147/7218/7147 7148/7219/7148 7247/7319/7247 +f 7247/7319/7247 7148/7219/7148 7248/7320/7248 +f 7148/7219/7148 7149/7220/7149 7248/7320/7248 +f 7248/7320/7248 7149/7220/7149 7249/7321/7249 +f 7149/7220/7149 7150/7221/7150 7249/7321/7249 +f 7249/7321/7249 7150/7221/7150 7250/7322/7250 +f 7150/7221/7150 7151/7222/7151 7250/7322/7250 +f 7250/7322/7250 7151/7222/7151 7251/7323/7251 +f 7151/7222/7151 7152/7223/7152 7251/7323/7251 +f 7251/7323/7251 7152/7223/7152 7252/7324/7252 +f 7152/7223/7152 7153/7224/7153 7252/7324/7252 +f 7252/7324/7252 7153/7224/7153 7253/7325/7253 +f 7153/7224/7153 7154/7225/7154 7253/7325/7253 +f 7253/7325/7253 7154/7225/7154 7254/7326/7254 +f 7154/7225/7154 7155/7226/7155 7254/7326/7254 +f 7254/7326/7254 7155/7226/7155 7255/7327/7255 +f 7155/7226/7155 7156/7227/7156 7255/7327/7255 +f 7255/7327/7255 7156/7227/7156 7256/7328/7256 +f 7156/7227/7156 7157/7228/7157 7256/7328/7256 +f 7256/7328/7256 7157/7228/7157 7257/7329/7257 +f 7157/7228/7157 7158/7229/7158 7257/7329/7257 +f 7257/7329/7257 7158/7229/7158 7258/7330/7258 +f 7158/7229/7158 7159/7230/7159 7258/7330/7258 +f 7258/7330/7258 7159/7230/7159 7259/7331/7259 +f 7159/7230/7159 7160/7231/7160 7259/7331/7259 +f 7259/7331/7259 7160/7231/7160 7260/7332/7260 +f 7160/7231/7160 7161/7232/7161 7260/7332/7260 +f 7260/7332/7260 7161/7232/7161 7261/7333/7261 +f 7161/7232/7161 7162/7233/7162 7261/7333/7261 +f 7261/7333/7261 7162/7233/7162 7262/7334/7262 +f 7162/7233/7162 7163/7234/7163 7262/7334/7262 +f 7262/7334/7262 7163/7234/7163 7263/7335/7263 +f 7163/7234/7163 7164/7235/7164 7263/7335/7263 +f 7263/7335/7263 7164/7235/7164 7264/7336/7264 +f 7164/7235/7164 7165/7236/7165 7264/7336/7264 +f 7264/7336/7264 7165/7236/7165 7265/7337/7265 +f 7165/7236/7165 7166/7237/7166 7265/7337/7265 +f 7265/7337/7265 7166/7237/7166 7266/7338/7266 +f 7166/7237/7166 7167/7238/7167 7266/7338/7266 +f 7266/7338/7266 7167/7238/7167 7267/7339/7267 +f 7167/7238/7167 7168/7239/7168 7267/7339/7267 +f 7267/7339/7267 7168/7239/7168 7268/7340/7268 +f 7168/7239/7168 7169/7240/7169 7268/7340/7268 +f 7268/7340/7268 7169/7240/7169 7269/7341/7269 +f 7169/7240/7169 7170/7241/7170 7269/7341/7269 +f 7269/7341/7269 7170/7241/7170 7270/7342/7270 +f 7170/7241/7170 7171/7242/7171 7270/7342/7270 +f 7270/7342/7270 7171/7242/7171 7271/7343/7271 +f 7171/7242/7171 7172/7243/7172 7271/7343/7271 +f 7271/7343/7271 7172/7243/7172 7272/7344/7272 +f 7172/7243/7172 7173/7244/7173 7272/7344/7272 +f 7272/7344/7272 7173/7244/7173 7273/7345/7273 +f 7173/7244/7173 7174/7245/7174 7273/7345/7273 +f 7273/7345/7273 7174/7245/7174 7274/7346/7274 +f 7174/7245/7174 7175/7246/7175 7274/7346/7274 +f 7274/7346/7274 7175/7246/7175 7275/7347/7275 +f 7175/7246/7175 7176/7247/7176 7275/7347/7275 +f 7275/7347/7275 7176/7247/7176 7276/7348/7276 +f 7176/7247/7176 7177/7248/7177 7276/7348/7276 +f 7276/7348/7276 7177/7248/7177 7277/7349/7277 +f 7177/7248/7177 7178/7249/7178 7277/7349/7277 +f 7277/7349/7277 7178/7249/7178 7278/7350/7278 +f 7178/7249/7178 7179/7250/7179 7278/7350/7278 +f 7278/7350/7278 7179/7250/7179 7279/7351/7279 +f 7179/7250/7179 7180/7251/7180 7279/7351/7279 +f 7279/7351/7279 7180/7251/7180 7280/7352/7280 +f 7180/7251/7180 7181/7252/7181 7280/7352/7280 +f 7280/7352/7280 7181/7252/7181 7281/7353/7281 +f 7181/7252/7181 7182/7253/7182 7281/7353/7281 +f 7281/7353/7281 7182/7253/7182 7282/7354/7282 +f 7182/7253/7182 7183/7254/7183 7282/7354/7282 +f 7282/7354/7282 7183/7254/7183 7283/7355/7283 +f 7183/7254/7183 7184/7255/7184 7283/7355/7283 +f 7283/7355/7283 7184/7255/7184 7284/7356/7284 +f 7184/7255/7184 7185/7256/7185 7284/7356/7284 +f 7284/7356/7284 7185/7256/7185 7285/7357/7285 +f 7185/7256/7185 7186/7257/7186 7285/7357/7285 +f 7285/7357/7285 7186/7257/7186 7286/7358/7286 +f 7186/7257/7186 7187/7258/7187 7286/7358/7286 +f 7286/7358/7286 7187/7258/7187 7287/7359/7287 +f 7187/7258/7187 7188/7259/7188 7287/7359/7287 +f 7287/7359/7287 7188/7259/7188 7288/7360/7288 +f 7188/7259/7188 7189/7260/7189 7288/7360/7288 +f 7288/7360/7288 7189/7260/7189 7289/7361/7289 +f 7189/7260/7189 7190/7261/7190 7289/7361/7289 +f 7289/7361/7289 7190/7261/7190 7290/7362/7290 +f 7190/7261/7190 7191/7262/7191 7290/7362/7290 +f 7290/7362/7290 7191/7262/7191 7291/7363/7291 +f 7191/7262/7191 7192/7263/7192 7291/7363/7291 +f 7291/7363/7291 7192/7263/7192 7292/7364/7292 +f 7192/7263/7192 7193/7264/7193 7292/7364/7292 +f 7292/7364/7292 7193/7264/7193 7293/7365/7293 +f 7193/7264/7193 7194/7265/7194 7293/7365/7293 +f 7293/7365/7293 7194/7265/7194 7294/7366/7294 +f 7194/7265/7194 7195/7266/7195 7294/7366/7294 +f 7294/7366/7294 7195/7266/7195 7295/7367/7295 +f 7195/7266/7195 7196/7267/7196 7295/7367/7295 +f 7295/7367/7295 7196/7267/7196 7296/7368/7296 +f 7196/7267/7196 7197/7268/7197 7296/7368/7296 +f 7296/7368/7296 7197/7268/7197 7297/7369/7297 +f 7197/7268/7197 7198/7269/7198 7297/7369/7297 +f 7297/7369/7297 7198/7269/7198 7298/7370/7298 +f 7198/7269/7198 7199/7270/7199 7298/7370/7298 +f 7298/7370/7298 7199/7270/7199 7299/7371/7299 +f 7199/7270/7199 7200/7271/7200 7299/7371/7299 +f 7299/7371/7299 7200/7271/7200 7300/7372/7300 +f 7200/7271/7200 7101/7272/7101 7300/7372/7300 +f 7300/7372/7300 7101/7272/7101 7201/7373/7201 +f 7201/7273/7201 7202/7274/7202 7301/7374/7301 +f 7301/7374/7301 7202/7274/7202 7302/7375/7302 +f 7202/7274/7202 7203/7275/7203 7302/7375/7302 +f 7302/7375/7302 7203/7275/7203 7303/7376/7303 +f 7203/7275/7203 7204/7276/7204 7303/7376/7303 +f 7303/7376/7303 7204/7276/7204 7304/7377/7304 +f 7204/7276/7204 7205/7277/7205 7304/7377/7304 +f 7304/7377/7304 7205/7277/7205 7305/7378/7305 +f 7205/7277/7205 7206/7278/7206 7305/7378/7305 +f 7305/7378/7305 7206/7278/7206 7306/7379/7306 +f 7206/7278/7206 7207/7279/7207 7306/7379/7306 +f 7306/7379/7306 7207/7279/7207 7307/7380/7307 +f 7207/7279/7207 7208/7280/7208 7307/7380/7307 +f 7307/7380/7307 7208/7280/7208 7308/7381/7308 +f 7208/7280/7208 7209/7281/7209 7308/7381/7308 +f 7308/7381/7308 7209/7281/7209 7309/7382/7309 +f 7209/7281/7209 7210/7282/7210 7309/7382/7309 +f 7309/7382/7309 7210/7282/7210 7310/7383/7310 +f 7210/7282/7210 7211/7283/7211 7310/7383/7310 +f 7310/7383/7310 7211/7283/7211 7311/7384/7311 +f 7211/7283/7211 7212/7284/7212 7311/7384/7311 +f 7311/7384/7311 7212/7284/7212 7312/7385/7312 +f 7212/7284/7212 7213/7285/7213 7312/7385/7312 +f 7312/7385/7312 7213/7285/7213 7313/7386/7313 +f 7213/7285/7213 7214/7286/7214 7313/7386/7313 +f 7313/7386/7313 7214/7286/7214 7314/7387/7314 +f 7214/7286/7214 7215/7287/7215 7314/7387/7314 +f 7314/7387/7314 7215/7287/7215 7315/7388/7315 +f 7215/7287/7215 7216/7288/7216 7315/7388/7315 +f 7315/7388/7315 7216/7288/7216 7316/7389/7316 +f 7216/7288/7216 7217/7289/7217 7316/7389/7316 +f 7316/7389/7316 7217/7289/7217 7317/7390/7317 +f 7217/7289/7217 7218/7290/7218 7317/7390/7317 +f 7317/7390/7317 7218/7290/7218 7318/7391/7318 +f 7218/7290/7218 7219/7291/7219 7318/7391/7318 +f 7318/7391/7318 7219/7291/7219 7319/7392/7319 +f 7219/7291/7219 7220/7292/7220 7319/7392/7319 +f 7319/7392/7319 7220/7292/7220 7320/7393/7320 +f 7220/7292/7220 7221/7293/7221 7320/7393/7320 +f 7320/7393/7320 7221/7293/7221 7321/7394/7321 +f 7221/7293/7221 7222/7294/7222 7321/7394/7321 +f 7321/7394/7321 7222/7294/7222 7322/7395/7322 +f 7222/7294/7222 7223/7295/7223 7322/7395/7322 +f 7322/7395/7322 7223/7295/7223 7323/7396/7323 +f 7223/7295/7223 7224/7296/7224 7323/7396/7323 +f 7323/7396/7323 7224/7296/7224 7324/7397/7324 +f 7224/7296/7224 7225/7297/7225 7324/7397/7324 +f 7324/7397/7324 7225/7297/7225 7325/7398/7325 +f 7225/7297/7225 7226/7298/7226 7325/7398/7325 +f 7325/7398/7325 7226/7298/7226 7326/7399/7326 +f 7226/7298/7226 7227/7299/7227 7326/7399/7326 +f 7326/7399/7326 7227/7299/7227 7327/7400/7327 +f 7227/7299/7227 7228/7300/7228 7327/7400/7327 +f 7327/7400/7327 7228/7300/7228 7328/7401/7328 +f 7228/7300/7228 7229/7301/7229 7328/7401/7328 +f 7328/7401/7328 7229/7301/7229 7329/7402/7329 +f 7229/7301/7229 7230/7302/7230 7329/7402/7329 +f 7329/7402/7329 7230/7302/7230 7330/7403/7330 +f 7230/7302/7230 7231/7303/7231 7330/7403/7330 +f 7330/7403/7330 7231/7303/7231 7331/7404/7331 +f 7231/7303/7231 7232/7304/7232 7331/7404/7331 +f 7331/7404/7331 7232/7304/7232 7332/7405/7332 +f 7232/7304/7232 7233/7305/7233 7332/7405/7332 +f 7332/7405/7332 7233/7305/7233 7333/7406/7333 +f 7233/7305/7233 7234/7306/7234 7333/7406/7333 +f 7333/7406/7333 7234/7306/7234 7334/7407/7334 +f 7234/7306/7234 7235/7307/7235 7334/7407/7334 +f 7334/7407/7334 7235/7307/7235 7335/7408/7335 +f 7235/7307/7235 7236/7308/7236 7335/7408/7335 +f 7335/7408/7335 7236/7308/7236 7336/7409/7336 +f 7236/7308/7236 7237/7309/7237 7336/7409/7336 +f 7336/7409/7336 7237/7309/7237 7337/7410/7337 +f 7237/7309/7237 7238/7310/7238 7337/7410/7337 +f 7337/7410/7337 7238/7310/7238 7338/7411/7338 +f 7238/7310/7238 7239/7311/7239 7338/7411/7338 +f 7338/7411/7338 7239/7311/7239 7339/7412/7339 +f 7239/7311/7239 7240/7312/7240 7339/7412/7339 +f 7339/7412/7339 7240/7312/7240 7340/7413/7340 +f 7240/7312/7240 7241/7313/7241 7340/7413/7340 +f 7340/7413/7340 7241/7313/7241 7341/7414/7341 +f 7241/7313/7241 7242/7314/7242 7341/7414/7341 +f 7341/7414/7341 7242/7314/7242 7342/7415/7342 +f 7242/7314/7242 7243/7315/7243 7342/7415/7342 +f 7342/7415/7342 7243/7315/7243 7343/7416/7343 +f 7243/7315/7243 7244/7316/7244 7343/7416/7343 +f 7343/7416/7343 7244/7316/7244 7344/7417/7344 +f 7244/7316/7244 7245/7317/7245 7344/7417/7344 +f 7344/7417/7344 7245/7317/7245 7345/7418/7345 +f 7245/7317/7245 7246/7318/7246 7345/7418/7345 +f 7345/7418/7345 7246/7318/7246 7346/7419/7346 +f 7246/7318/7246 7247/7319/7247 7346/7419/7346 +f 7346/7419/7346 7247/7319/7247 7347/7420/7347 +f 7247/7319/7247 7248/7320/7248 7347/7420/7347 +f 7347/7420/7347 7248/7320/7248 7348/7421/7348 +f 7248/7320/7248 7249/7321/7249 7348/7421/7348 +f 7348/7421/7348 7249/7321/7249 7349/7422/7349 +f 7249/7321/7249 7250/7322/7250 7349/7422/7349 +f 7349/7422/7349 7250/7322/7250 7350/7423/7350 +f 7250/7322/7250 7251/7323/7251 7350/7423/7350 +f 7350/7423/7350 7251/7323/7251 7351/7424/7351 +f 7251/7323/7251 7252/7324/7252 7351/7424/7351 +f 7351/7424/7351 7252/7324/7252 7352/7425/7352 +f 7252/7324/7252 7253/7325/7253 7352/7425/7352 +f 7352/7425/7352 7253/7325/7253 7353/7426/7353 +f 7253/7325/7253 7254/7326/7254 7353/7426/7353 +f 7353/7426/7353 7254/7326/7254 7354/7427/7354 +f 7254/7326/7254 7255/7327/7255 7354/7427/7354 +f 7354/7427/7354 7255/7327/7255 7355/7428/7355 +f 7255/7327/7255 7256/7328/7256 7355/7428/7355 +f 7355/7428/7355 7256/7328/7256 7356/7429/7356 +f 7256/7328/7256 7257/7329/7257 7356/7429/7356 +f 7356/7429/7356 7257/7329/7257 7357/7430/7357 +f 7257/7329/7257 7258/7330/7258 7357/7430/7357 +f 7357/7430/7357 7258/7330/7258 7358/7431/7358 +f 7258/7330/7258 7259/7331/7259 7358/7431/7358 +f 7358/7431/7358 7259/7331/7259 7359/7432/7359 +f 7259/7331/7259 7260/7332/7260 7359/7432/7359 +f 7359/7432/7359 7260/7332/7260 7360/7433/7360 +f 7260/7332/7260 7261/7333/7261 7360/7433/7360 +f 7360/7433/7360 7261/7333/7261 7361/7434/7361 +f 7261/7333/7261 7262/7334/7262 7361/7434/7361 +f 7361/7434/7361 7262/7334/7262 7362/7435/7362 +f 7262/7334/7262 7263/7335/7263 7362/7435/7362 +f 7362/7435/7362 7263/7335/7263 7363/7436/7363 +f 7263/7335/7263 7264/7336/7264 7363/7436/7363 +f 7363/7436/7363 7264/7336/7264 7364/7437/7364 +f 7264/7336/7264 7265/7337/7265 7364/7437/7364 +f 7364/7437/7364 7265/7337/7265 7365/7438/7365 +f 7265/7337/7265 7266/7338/7266 7365/7438/7365 +f 7365/7438/7365 7266/7338/7266 7366/7439/7366 +f 7266/7338/7266 7267/7339/7267 7366/7439/7366 +f 7366/7439/7366 7267/7339/7267 7367/7440/7367 +f 7267/7339/7267 7268/7340/7268 7367/7440/7367 +f 7367/7440/7367 7268/7340/7268 7368/7441/7368 +f 7268/7340/7268 7269/7341/7269 7368/7441/7368 +f 7368/7441/7368 7269/7341/7269 7369/7442/7369 +f 7269/7341/7269 7270/7342/7270 7369/7442/7369 +f 7369/7442/7369 7270/7342/7270 7370/7443/7370 +f 7270/7342/7270 7271/7343/7271 7370/7443/7370 +f 7370/7443/7370 7271/7343/7271 7371/7444/7371 +f 7271/7343/7271 7272/7344/7272 7371/7444/7371 +f 7371/7444/7371 7272/7344/7272 7372/7445/7372 +f 7272/7344/7272 7273/7345/7273 7372/7445/7372 +f 7372/7445/7372 7273/7345/7273 7373/7446/7373 +f 7273/7345/7273 7274/7346/7274 7373/7446/7373 +f 7373/7446/7373 7274/7346/7274 7374/7447/7374 +f 7274/7346/7274 7275/7347/7275 7374/7447/7374 +f 7374/7447/7374 7275/7347/7275 7375/7448/7375 +f 7275/7347/7275 7276/7348/7276 7375/7448/7375 +f 7375/7448/7375 7276/7348/7276 7376/7449/7376 +f 7276/7348/7276 7277/7349/7277 7376/7449/7376 +f 7376/7449/7376 7277/7349/7277 7377/7450/7377 +f 7277/7349/7277 7278/7350/7278 7377/7450/7377 +f 7377/7450/7377 7278/7350/7278 7378/7451/7378 +f 7278/7350/7278 7279/7351/7279 7378/7451/7378 +f 7378/7451/7378 7279/7351/7279 7379/7452/7379 +f 7279/7351/7279 7280/7352/7280 7379/7452/7379 +f 7379/7452/7379 7280/7352/7280 7380/7453/7380 +f 7280/7352/7280 7281/7353/7281 7380/7453/7380 +f 7380/7453/7380 7281/7353/7281 7381/7454/7381 +f 7281/7353/7281 7282/7354/7282 7381/7454/7381 +f 7381/7454/7381 7282/7354/7282 7382/7455/7382 +f 7282/7354/7282 7283/7355/7283 7382/7455/7382 +f 7382/7455/7382 7283/7355/7283 7383/7456/7383 +f 7283/7355/7283 7284/7356/7284 7383/7456/7383 +f 7383/7456/7383 7284/7356/7284 7384/7457/7384 +f 7284/7356/7284 7285/7357/7285 7384/7457/7384 +f 7384/7457/7384 7285/7357/7285 7385/7458/7385 +f 7285/7357/7285 7286/7358/7286 7385/7458/7385 +f 7385/7458/7385 7286/7358/7286 7386/7459/7386 +f 7286/7358/7286 7287/7359/7287 7386/7459/7386 +f 7386/7459/7386 7287/7359/7287 7387/7460/7387 +f 7287/7359/7287 7288/7360/7288 7387/7460/7387 +f 7387/7460/7387 7288/7360/7288 7388/7461/7388 +f 7288/7360/7288 7289/7361/7289 7388/7461/7388 +f 7388/7461/7388 7289/7361/7289 7389/7462/7389 +f 7289/7361/7289 7290/7362/7290 7389/7462/7389 +f 7389/7462/7389 7290/7362/7290 7390/7463/7390 +f 7290/7362/7290 7291/7363/7291 7390/7463/7390 +f 7390/7463/7390 7291/7363/7291 7391/7464/7391 +f 7291/7363/7291 7292/7364/7292 7391/7464/7391 +f 7391/7464/7391 7292/7364/7292 7392/7465/7392 +f 7292/7364/7292 7293/7365/7293 7392/7465/7392 +f 7392/7465/7392 7293/7365/7293 7393/7466/7393 +f 7293/7365/7293 7294/7366/7294 7393/7466/7393 +f 7393/7466/7393 7294/7366/7294 7394/7467/7394 +f 7294/7366/7294 7295/7367/7295 7394/7467/7394 +f 7394/7467/7394 7295/7367/7295 7395/7468/7395 +f 7295/7367/7295 7296/7368/7296 7395/7468/7395 +f 7395/7468/7395 7296/7368/7296 7396/7469/7396 +f 7296/7368/7296 7297/7369/7297 7396/7469/7396 +f 7396/7469/7396 7297/7369/7297 7397/7470/7397 +f 7297/7369/7297 7298/7370/7298 7397/7470/7397 +f 7397/7470/7397 7298/7370/7298 7398/7471/7398 +f 7298/7370/7298 7299/7371/7299 7398/7471/7398 +f 7398/7471/7398 7299/7371/7299 7399/7472/7399 +f 7299/7371/7299 7300/7372/7300 7399/7472/7399 +f 7399/7472/7399 7300/7372/7300 7400/7473/7400 +f 7300/7372/7300 7201/7373/7201 7400/7473/7400 +f 7400/7473/7400 7201/7373/7201 7301/7474/7301 +f 7301/7374/7301 7302/7375/7302 7401/7475/7401 +f 7401/7475/7401 7302/7375/7302 7402/7476/7402 +f 7302/7375/7302 7303/7376/7303 7402/7476/7402 +f 7402/7476/7402 7303/7376/7303 7403/7477/7403 +f 7303/7376/7303 7304/7377/7304 7403/7477/7403 +f 7403/7477/7403 7304/7377/7304 7404/7478/7404 +f 7304/7377/7304 7305/7378/7305 7404/7478/7404 +f 7404/7478/7404 7305/7378/7305 7405/7479/7405 +f 7305/7378/7305 7306/7379/7306 7405/7479/7405 +f 7405/7479/7405 7306/7379/7306 7406/7480/7406 +f 7306/7379/7306 7307/7380/7307 7406/7480/7406 +f 7406/7480/7406 7307/7380/7307 7407/7481/7407 +f 7307/7380/7307 7308/7381/7308 7407/7481/7407 +f 7407/7481/7407 7308/7381/7308 7408/7482/7408 +f 7308/7381/7308 7309/7382/7309 7408/7482/7408 +f 7408/7482/7408 7309/7382/7309 7409/7483/7409 +f 7309/7382/7309 7310/7383/7310 7409/7483/7409 +f 7409/7483/7409 7310/7383/7310 7410/7484/7410 +f 7310/7383/7310 7311/7384/7311 7410/7484/7410 +f 7410/7484/7410 7311/7384/7311 7411/7485/7411 +f 7311/7384/7311 7312/7385/7312 7411/7485/7411 +f 7411/7485/7411 7312/7385/7312 7412/7486/7412 +f 7312/7385/7312 7313/7386/7313 7412/7486/7412 +f 7412/7486/7412 7313/7386/7313 7413/7487/7413 +f 7313/7386/7313 7314/7387/7314 7413/7487/7413 +f 7413/7487/7413 7314/7387/7314 7414/7488/7414 +f 7314/7387/7314 7315/7388/7315 7414/7488/7414 +f 7414/7488/7414 7315/7388/7315 7415/7489/7415 +f 7315/7388/7315 7316/7389/7316 7415/7489/7415 +f 7415/7489/7415 7316/7389/7316 7416/7490/7416 +f 7316/7389/7316 7317/7390/7317 7416/7490/7416 +f 7416/7490/7416 7317/7390/7317 7417/7491/7417 +f 7317/7390/7317 7318/7391/7318 7417/7491/7417 +f 7417/7491/7417 7318/7391/7318 7418/7492/7418 +f 7318/7391/7318 7319/7392/7319 7418/7492/7418 +f 7418/7492/7418 7319/7392/7319 7419/7493/7419 +f 7319/7392/7319 7320/7393/7320 7419/7493/7419 +f 7419/7493/7419 7320/7393/7320 7420/7494/7420 +f 7320/7393/7320 7321/7394/7321 7420/7494/7420 +f 7420/7494/7420 7321/7394/7321 7421/7495/7421 +f 7321/7394/7321 7322/7395/7322 7421/7495/7421 +f 7421/7495/7421 7322/7395/7322 7422/7496/7422 +f 7322/7395/7322 7323/7396/7323 7422/7496/7422 +f 7422/7496/7422 7323/7396/7323 7423/7497/7423 +f 7323/7396/7323 7324/7397/7324 7423/7497/7423 +f 7423/7497/7423 7324/7397/7324 7424/7498/7424 +f 7324/7397/7324 7325/7398/7325 7424/7498/7424 +f 7424/7498/7424 7325/7398/7325 7425/7499/7425 +f 7325/7398/7325 7326/7399/7326 7425/7499/7425 +f 7425/7499/7425 7326/7399/7326 7426/7500/7426 +f 7326/7399/7326 7327/7400/7327 7426/7500/7426 +f 7426/7500/7426 7327/7400/7327 7427/7501/7427 +f 7327/7400/7327 7328/7401/7328 7427/7501/7427 +f 7427/7501/7427 7328/7401/7328 7428/7502/7428 +f 7328/7401/7328 7329/7402/7329 7428/7502/7428 +f 7428/7502/7428 7329/7402/7329 7429/7503/7429 +f 7329/7402/7329 7330/7403/7330 7429/7503/7429 +f 7429/7503/7429 7330/7403/7330 7430/7504/7430 +f 7330/7403/7330 7331/7404/7331 7430/7504/7430 +f 7430/7504/7430 7331/7404/7331 7431/7505/7431 +f 7331/7404/7331 7332/7405/7332 7431/7505/7431 +f 7431/7505/7431 7332/7405/7332 7432/7506/7432 +f 7332/7405/7332 7333/7406/7333 7432/7506/7432 +f 7432/7506/7432 7333/7406/7333 7433/7507/7433 +f 7333/7406/7333 7334/7407/7334 7433/7507/7433 +f 7433/7507/7433 7334/7407/7334 7434/7508/7434 +f 7334/7407/7334 7335/7408/7335 7434/7508/7434 +f 7434/7508/7434 7335/7408/7335 7435/7509/7435 +f 7335/7408/7335 7336/7409/7336 7435/7509/7435 +f 7435/7509/7435 7336/7409/7336 7436/7510/7436 +f 7336/7409/7336 7337/7410/7337 7436/7510/7436 +f 7436/7510/7436 7337/7410/7337 7437/7511/7437 +f 7337/7410/7337 7338/7411/7338 7437/7511/7437 +f 7437/7511/7437 7338/7411/7338 7438/7512/7438 +f 7338/7411/7338 7339/7412/7339 7438/7512/7438 +f 7438/7512/7438 7339/7412/7339 7439/7513/7439 +f 7339/7412/7339 7340/7413/7340 7439/7513/7439 +f 7439/7513/7439 7340/7413/7340 7440/7514/7440 +f 7340/7413/7340 7341/7414/7341 7440/7514/7440 +f 7440/7514/7440 7341/7414/7341 7441/7515/7441 +f 7341/7414/7341 7342/7415/7342 7441/7515/7441 +f 7441/7515/7441 7342/7415/7342 7442/7516/7442 +f 7342/7415/7342 7343/7416/7343 7442/7516/7442 +f 7442/7516/7442 7343/7416/7343 7443/7517/7443 +f 7343/7416/7343 7344/7417/7344 7443/7517/7443 +f 7443/7517/7443 7344/7417/7344 7444/7518/7444 +f 7344/7417/7344 7345/7418/7345 7444/7518/7444 +f 7444/7518/7444 7345/7418/7345 7445/7519/7445 +f 7345/7418/7345 7346/7419/7346 7445/7519/7445 +f 7445/7519/7445 7346/7419/7346 7446/7520/7446 +f 7346/7419/7346 7347/7420/7347 7446/7520/7446 +f 7446/7520/7446 7347/7420/7347 7447/7521/7447 +f 7347/7420/7347 7348/7421/7348 7447/7521/7447 +f 7447/7521/7447 7348/7421/7348 7448/7522/7448 +f 7348/7421/7348 7349/7422/7349 7448/7522/7448 +f 7448/7522/7448 7349/7422/7349 7449/7523/7449 +f 7349/7422/7349 7350/7423/7350 7449/7523/7449 +f 7449/7523/7449 7350/7423/7350 7450/7524/7450 +f 7350/7423/7350 7351/7424/7351 7450/7524/7450 +f 7450/7524/7450 7351/7424/7351 7451/7525/7451 +f 7351/7424/7351 7352/7425/7352 7451/7525/7451 +f 7451/7525/7451 7352/7425/7352 7452/7526/7452 +f 7352/7425/7352 7353/7426/7353 7452/7526/7452 +f 7452/7526/7452 7353/7426/7353 7453/7527/7453 +f 7353/7426/7353 7354/7427/7354 7453/7527/7453 +f 7453/7527/7453 7354/7427/7354 7454/7528/7454 +f 7354/7427/7354 7355/7428/7355 7454/7528/7454 +f 7454/7528/7454 7355/7428/7355 7455/7529/7455 +f 7355/7428/7355 7356/7429/7356 7455/7529/7455 +f 7455/7529/7455 7356/7429/7356 7456/7530/7456 +f 7356/7429/7356 7357/7430/7357 7456/7530/7456 +f 7456/7530/7456 7357/7430/7357 7457/7531/7457 +f 7357/7430/7357 7358/7431/7358 7457/7531/7457 +f 7457/7531/7457 7358/7431/7358 7458/7532/7458 +f 7358/7431/7358 7359/7432/7359 7458/7532/7458 +f 7458/7532/7458 7359/7432/7359 7459/7533/7459 +f 7359/7432/7359 7360/7433/7360 7459/7533/7459 +f 7459/7533/7459 7360/7433/7360 7460/7534/7460 +f 7360/7433/7360 7361/7434/7361 7460/7534/7460 +f 7460/7534/7460 7361/7434/7361 7461/7535/7461 +f 7361/7434/7361 7362/7435/7362 7461/7535/7461 +f 7461/7535/7461 7362/7435/7362 7462/7536/7462 +f 7362/7435/7362 7363/7436/7363 7462/7536/7462 +f 7462/7536/7462 7363/7436/7363 7463/7537/7463 +f 7363/7436/7363 7364/7437/7364 7463/7537/7463 +f 7463/7537/7463 7364/7437/7364 7464/7538/7464 +f 7364/7437/7364 7365/7438/7365 7464/7538/7464 +f 7464/7538/7464 7365/7438/7365 7465/7539/7465 +f 7365/7438/7365 7366/7439/7366 7465/7539/7465 +f 7465/7539/7465 7366/7439/7366 7466/7540/7466 +f 7366/7439/7366 7367/7440/7367 7466/7540/7466 +f 7466/7540/7466 7367/7440/7367 7467/7541/7467 +f 7367/7440/7367 7368/7441/7368 7467/7541/7467 +f 7467/7541/7467 7368/7441/7368 7468/7542/7468 +f 7368/7441/7368 7369/7442/7369 7468/7542/7468 +f 7468/7542/7468 7369/7442/7369 7469/7543/7469 +f 7369/7442/7369 7370/7443/7370 7469/7543/7469 +f 7469/7543/7469 7370/7443/7370 7470/7544/7470 +f 7370/7443/7370 7371/7444/7371 7470/7544/7470 +f 7470/7544/7470 7371/7444/7371 7471/7545/7471 +f 7371/7444/7371 7372/7445/7372 7471/7545/7471 +f 7471/7545/7471 7372/7445/7372 7472/7546/7472 +f 7372/7445/7372 7373/7446/7373 7472/7546/7472 +f 7472/7546/7472 7373/7446/7373 7473/7547/7473 +f 7373/7446/7373 7374/7447/7374 7473/7547/7473 +f 7473/7547/7473 7374/7447/7374 7474/7548/7474 +f 7374/7447/7374 7375/7448/7375 7474/7548/7474 +f 7474/7548/7474 7375/7448/7375 7475/7549/7475 +f 7375/7448/7375 7376/7449/7376 7475/7549/7475 +f 7475/7549/7475 7376/7449/7376 7476/7550/7476 +f 7376/7449/7376 7377/7450/7377 7476/7550/7476 +f 7476/7550/7476 7377/7450/7377 7477/7551/7477 +f 7377/7450/7377 7378/7451/7378 7477/7551/7477 +f 7477/7551/7477 7378/7451/7378 7478/7552/7478 +f 7378/7451/7378 7379/7452/7379 7478/7552/7478 +f 7478/7552/7478 7379/7452/7379 7479/7553/7479 +f 7379/7452/7379 7380/7453/7380 7479/7553/7479 +f 7479/7553/7479 7380/7453/7380 7480/7554/7480 +f 7380/7453/7380 7381/7454/7381 7480/7554/7480 +f 7480/7554/7480 7381/7454/7381 7481/7555/7481 +f 7381/7454/7381 7382/7455/7382 7481/7555/7481 +f 7481/7555/7481 7382/7455/7382 7482/7556/7482 +f 7382/7455/7382 7383/7456/7383 7482/7556/7482 +f 7482/7556/7482 7383/7456/7383 7483/7557/7483 +f 7383/7456/7383 7384/7457/7384 7483/7557/7483 +f 7483/7557/7483 7384/7457/7384 7484/7558/7484 +f 7384/7457/7384 7385/7458/7385 7484/7558/7484 +f 7484/7558/7484 7385/7458/7385 7485/7559/7485 +f 7385/7458/7385 7386/7459/7386 7485/7559/7485 +f 7485/7559/7485 7386/7459/7386 7486/7560/7486 +f 7386/7459/7386 7387/7460/7387 7486/7560/7486 +f 7486/7560/7486 7387/7460/7387 7487/7561/7487 +f 7387/7460/7387 7388/7461/7388 7487/7561/7487 +f 7487/7561/7487 7388/7461/7388 7488/7562/7488 +f 7388/7461/7388 7389/7462/7389 7488/7562/7488 +f 7488/7562/7488 7389/7462/7389 7489/7563/7489 +f 7389/7462/7389 7390/7463/7390 7489/7563/7489 +f 7489/7563/7489 7390/7463/7390 7490/7564/7490 +f 7390/7463/7390 7391/7464/7391 7490/7564/7490 +f 7490/7564/7490 7391/7464/7391 7491/7565/7491 +f 7391/7464/7391 7392/7465/7392 7491/7565/7491 +f 7491/7565/7491 7392/7465/7392 7492/7566/7492 +f 7392/7465/7392 7393/7466/7393 7492/7566/7492 +f 7492/7566/7492 7393/7466/7393 7493/7567/7493 +f 7393/7466/7393 7394/7467/7394 7493/7567/7493 +f 7493/7567/7493 7394/7467/7394 7494/7568/7494 +f 7394/7467/7394 7395/7468/7395 7494/7568/7494 +f 7494/7568/7494 7395/7468/7395 7495/7569/7495 +f 7395/7468/7395 7396/7469/7396 7495/7569/7495 +f 7495/7569/7495 7396/7469/7396 7496/7570/7496 +f 7396/7469/7396 7397/7470/7397 7496/7570/7496 +f 7496/7570/7496 7397/7470/7397 7497/7571/7497 +f 7397/7470/7397 7398/7471/7398 7497/7571/7497 +f 7497/7571/7497 7398/7471/7398 7498/7572/7498 +f 7398/7471/7398 7399/7472/7399 7498/7572/7498 +f 7498/7572/7498 7399/7472/7399 7499/7573/7499 +f 7399/7472/7399 7400/7473/7400 7499/7573/7499 +f 7499/7573/7499 7400/7473/7400 7500/7574/7500 +f 7400/7473/7400 7301/7474/7301 7500/7574/7500 +f 7500/7574/7500 7301/7474/7301 7401/7575/7401 +f 7401/7475/7401 7402/7476/7402 7501/7576/7501 +f 7501/7576/7501 7402/7476/7402 7502/7577/7502 +f 7402/7476/7402 7403/7477/7403 7502/7577/7502 +f 7502/7577/7502 7403/7477/7403 7503/7578/7503 +f 7403/7477/7403 7404/7478/7404 7503/7578/7503 +f 7503/7578/7503 7404/7478/7404 7504/7579/7504 +f 7404/7478/7404 7405/7479/7405 7504/7579/7504 +f 7504/7579/7504 7405/7479/7405 7505/7580/7505 +f 7405/7479/7405 7406/7480/7406 7505/7580/7505 +f 7505/7580/7505 7406/7480/7406 7506/7581/7506 +f 7406/7480/7406 7407/7481/7407 7506/7581/7506 +f 7506/7581/7506 7407/7481/7407 7507/7582/7507 +f 7407/7481/7407 7408/7482/7408 7507/7582/7507 +f 7507/7582/7507 7408/7482/7408 7508/7583/7508 +f 7408/7482/7408 7409/7483/7409 7508/7583/7508 +f 7508/7583/7508 7409/7483/7409 7509/7584/7509 +f 7409/7483/7409 7410/7484/7410 7509/7584/7509 +f 7509/7584/7509 7410/7484/7410 7510/7585/7510 +f 7410/7484/7410 7411/7485/7411 7510/7585/7510 +f 7510/7585/7510 7411/7485/7411 7511/7586/7511 +f 7411/7485/7411 7412/7486/7412 7511/7586/7511 +f 7511/7586/7511 7412/7486/7412 7512/7587/7512 +f 7412/7486/7412 7413/7487/7413 7512/7587/7512 +f 7512/7587/7512 7413/7487/7413 7513/7588/7513 +f 7413/7487/7413 7414/7488/7414 7513/7588/7513 +f 7513/7588/7513 7414/7488/7414 7514/7589/7514 +f 7414/7488/7414 7415/7489/7415 7514/7589/7514 +f 7514/7589/7514 7415/7489/7415 7515/7590/7515 +f 7415/7489/7415 7416/7490/7416 7515/7590/7515 +f 7515/7590/7515 7416/7490/7416 7516/7591/7516 +f 7416/7490/7416 7417/7491/7417 7516/7591/7516 +f 7516/7591/7516 7417/7491/7417 7517/7592/7517 +f 7417/7491/7417 7418/7492/7418 7517/7592/7517 +f 7517/7592/7517 7418/7492/7418 7518/7593/7518 +f 7418/7492/7418 7419/7493/7419 7518/7593/7518 +f 7518/7593/7518 7419/7493/7419 7519/7594/7519 +f 7419/7493/7419 7420/7494/7420 7519/7594/7519 +f 7519/7594/7519 7420/7494/7420 7520/7595/7520 +f 7420/7494/7420 7421/7495/7421 7520/7595/7520 +f 7520/7595/7520 7421/7495/7421 7521/7596/7521 +f 7421/7495/7421 7422/7496/7422 7521/7596/7521 +f 7521/7596/7521 7422/7496/7422 7522/7597/7522 +f 7422/7496/7422 7423/7497/7423 7522/7597/7522 +f 7522/7597/7522 7423/7497/7423 7523/7598/7523 +f 7423/7497/7423 7424/7498/7424 7523/7598/7523 +f 7523/7598/7523 7424/7498/7424 7524/7599/7524 +f 7424/7498/7424 7425/7499/7425 7524/7599/7524 +f 7524/7599/7524 7425/7499/7425 7525/7600/7525 +f 7425/7499/7425 7426/7500/7426 7525/7600/7525 +f 7525/7600/7525 7426/7500/7426 7526/7601/7526 +f 7426/7500/7426 7427/7501/7427 7526/7601/7526 +f 7526/7601/7526 7427/7501/7427 7527/7602/7527 +f 7427/7501/7427 7428/7502/7428 7527/7602/7527 +f 7527/7602/7527 7428/7502/7428 7528/7603/7528 +f 7428/7502/7428 7429/7503/7429 7528/7603/7528 +f 7528/7603/7528 7429/7503/7429 7529/7604/7529 +f 7429/7503/7429 7430/7504/7430 7529/7604/7529 +f 7529/7604/7529 7430/7504/7430 7530/7605/7530 +f 7430/7504/7430 7431/7505/7431 7530/7605/7530 +f 7530/7605/7530 7431/7505/7431 7531/7606/7531 +f 7431/7505/7431 7432/7506/7432 7531/7606/7531 +f 7531/7606/7531 7432/7506/7432 7532/7607/7532 +f 7432/7506/7432 7433/7507/7433 7532/7607/7532 +f 7532/7607/7532 7433/7507/7433 7533/7608/7533 +f 7433/7507/7433 7434/7508/7434 7533/7608/7533 +f 7533/7608/7533 7434/7508/7434 7534/7609/7534 +f 7434/7508/7434 7435/7509/7435 7534/7609/7534 +f 7534/7609/7534 7435/7509/7435 7535/7610/7535 +f 7435/7509/7435 7436/7510/7436 7535/7610/7535 +f 7535/7610/7535 7436/7510/7436 7536/7611/7536 +f 7436/7510/7436 7437/7511/7437 7536/7611/7536 +f 7536/7611/7536 7437/7511/7437 7537/7612/7537 +f 7437/7511/7437 7438/7512/7438 7537/7612/7537 +f 7537/7612/7537 7438/7512/7438 7538/7613/7538 +f 7438/7512/7438 7439/7513/7439 7538/7613/7538 +f 7538/7613/7538 7439/7513/7439 7539/7614/7539 +f 7439/7513/7439 7440/7514/7440 7539/7614/7539 +f 7539/7614/7539 7440/7514/7440 7540/7615/7540 +f 7440/7514/7440 7441/7515/7441 7540/7615/7540 +f 7540/7615/7540 7441/7515/7441 7541/7616/7541 +f 7441/7515/7441 7442/7516/7442 7541/7616/7541 +f 7541/7616/7541 7442/7516/7442 7542/7617/7542 +f 7442/7516/7442 7443/7517/7443 7542/7617/7542 +f 7542/7617/7542 7443/7517/7443 7543/7618/7543 +f 7443/7517/7443 7444/7518/7444 7543/7618/7543 +f 7543/7618/7543 7444/7518/7444 7544/7619/7544 +f 7444/7518/7444 7445/7519/7445 7544/7619/7544 +f 7544/7619/7544 7445/7519/7445 7545/7620/7545 +f 7445/7519/7445 7446/7520/7446 7545/7620/7545 +f 7545/7620/7545 7446/7520/7446 7546/7621/7546 +f 7446/7520/7446 7447/7521/7447 7546/7621/7546 +f 7546/7621/7546 7447/7521/7447 7547/7622/7547 +f 7447/7521/7447 7448/7522/7448 7547/7622/7547 +f 7547/7622/7547 7448/7522/7448 7548/7623/7548 +f 7448/7522/7448 7449/7523/7449 7548/7623/7548 +f 7548/7623/7548 7449/7523/7449 7549/7624/7549 +f 7449/7523/7449 7450/7524/7450 7549/7624/7549 +f 7549/7624/7549 7450/7524/7450 7550/7625/7550 +f 7450/7524/7450 7451/7525/7451 7550/7625/7550 +f 7550/7625/7550 7451/7525/7451 7551/7626/7551 +f 7451/7525/7451 7452/7526/7452 7551/7626/7551 +f 7551/7626/7551 7452/7526/7452 7552/7627/7552 +f 7452/7526/7452 7453/7527/7453 7552/7627/7552 +f 7552/7627/7552 7453/7527/7453 7553/7628/7553 +f 7453/7527/7453 7454/7528/7454 7553/7628/7553 +f 7553/7628/7553 7454/7528/7454 7554/7629/7554 +f 7454/7528/7454 7455/7529/7455 7554/7629/7554 +f 7554/7629/7554 7455/7529/7455 7555/7630/7555 +f 7455/7529/7455 7456/7530/7456 7555/7630/7555 +f 7555/7630/7555 7456/7530/7456 7556/7631/7556 +f 7456/7530/7456 7457/7531/7457 7556/7631/7556 +f 7556/7631/7556 7457/7531/7457 7557/7632/7557 +f 7457/7531/7457 7458/7532/7458 7557/7632/7557 +f 7557/7632/7557 7458/7532/7458 7558/7633/7558 +f 7458/7532/7458 7459/7533/7459 7558/7633/7558 +f 7558/7633/7558 7459/7533/7459 7559/7634/7559 +f 7459/7533/7459 7460/7534/7460 7559/7634/7559 +f 7559/7634/7559 7460/7534/7460 7560/7635/7560 +f 7460/7534/7460 7461/7535/7461 7560/7635/7560 +f 7560/7635/7560 7461/7535/7461 7561/7636/7561 +f 7461/7535/7461 7462/7536/7462 7561/7636/7561 +f 7561/7636/7561 7462/7536/7462 7562/7637/7562 +f 7462/7536/7462 7463/7537/7463 7562/7637/7562 +f 7562/7637/7562 7463/7537/7463 7563/7638/7563 +f 7463/7537/7463 7464/7538/7464 7563/7638/7563 +f 7563/7638/7563 7464/7538/7464 7564/7639/7564 +f 7464/7538/7464 7465/7539/7465 7564/7639/7564 +f 7564/7639/7564 7465/7539/7465 7565/7640/7565 +f 7465/7539/7465 7466/7540/7466 7565/7640/7565 +f 7565/7640/7565 7466/7540/7466 7566/7641/7566 +f 7466/7540/7466 7467/7541/7467 7566/7641/7566 +f 7566/7641/7566 7467/7541/7467 7567/7642/7567 +f 7467/7541/7467 7468/7542/7468 7567/7642/7567 +f 7567/7642/7567 7468/7542/7468 7568/7643/7568 +f 7468/7542/7468 7469/7543/7469 7568/7643/7568 +f 7568/7643/7568 7469/7543/7469 7569/7644/7569 +f 7469/7543/7469 7470/7544/7470 7569/7644/7569 +f 7569/7644/7569 7470/7544/7470 7570/7645/7570 +f 7470/7544/7470 7471/7545/7471 7570/7645/7570 +f 7570/7645/7570 7471/7545/7471 7571/7646/7571 +f 7471/7545/7471 7472/7546/7472 7571/7646/7571 +f 7571/7646/7571 7472/7546/7472 7572/7647/7572 +f 7472/7546/7472 7473/7547/7473 7572/7647/7572 +f 7572/7647/7572 7473/7547/7473 7573/7648/7573 +f 7473/7547/7473 7474/7548/7474 7573/7648/7573 +f 7573/7648/7573 7474/7548/7474 7574/7649/7574 +f 7474/7548/7474 7475/7549/7475 7574/7649/7574 +f 7574/7649/7574 7475/7549/7475 7575/7650/7575 +f 7475/7549/7475 7476/7550/7476 7575/7650/7575 +f 7575/7650/7575 7476/7550/7476 7576/7651/7576 +f 7476/7550/7476 7477/7551/7477 7576/7651/7576 +f 7576/7651/7576 7477/7551/7477 7577/7652/7577 +f 7477/7551/7477 7478/7552/7478 7577/7652/7577 +f 7577/7652/7577 7478/7552/7478 7578/7653/7578 +f 7478/7552/7478 7479/7553/7479 7578/7653/7578 +f 7578/7653/7578 7479/7553/7479 7579/7654/7579 +f 7479/7553/7479 7480/7554/7480 7579/7654/7579 +f 7579/7654/7579 7480/7554/7480 7580/7655/7580 +f 7480/7554/7480 7481/7555/7481 7580/7655/7580 +f 7580/7655/7580 7481/7555/7481 7581/7656/7581 +f 7481/7555/7481 7482/7556/7482 7581/7656/7581 +f 7581/7656/7581 7482/7556/7482 7582/7657/7582 +f 7482/7556/7482 7483/7557/7483 7582/7657/7582 +f 7582/7657/7582 7483/7557/7483 7583/7658/7583 +f 7483/7557/7483 7484/7558/7484 7583/7658/7583 +f 7583/7658/7583 7484/7558/7484 7584/7659/7584 +f 7484/7558/7484 7485/7559/7485 7584/7659/7584 +f 7584/7659/7584 7485/7559/7485 7585/7660/7585 +f 7485/7559/7485 7486/7560/7486 7585/7660/7585 +f 7585/7660/7585 7486/7560/7486 7586/7661/7586 +f 7486/7560/7486 7487/7561/7487 7586/7661/7586 +f 7586/7661/7586 7487/7561/7487 7587/7662/7587 +f 7487/7561/7487 7488/7562/7488 7587/7662/7587 +f 7587/7662/7587 7488/7562/7488 7588/7663/7588 +f 7488/7562/7488 7489/7563/7489 7588/7663/7588 +f 7588/7663/7588 7489/7563/7489 7589/7664/7589 +f 7489/7563/7489 7490/7564/7490 7589/7664/7589 +f 7589/7664/7589 7490/7564/7490 7590/7665/7590 +f 7490/7564/7490 7491/7565/7491 7590/7665/7590 +f 7590/7665/7590 7491/7565/7491 7591/7666/7591 +f 7491/7565/7491 7492/7566/7492 7591/7666/7591 +f 7591/7666/7591 7492/7566/7492 7592/7667/7592 +f 7492/7566/7492 7493/7567/7493 7592/7667/7592 +f 7592/7667/7592 7493/7567/7493 7593/7668/7593 +f 7493/7567/7493 7494/7568/7494 7593/7668/7593 +f 7593/7668/7593 7494/7568/7494 7594/7669/7594 +f 7494/7568/7494 7495/7569/7495 7594/7669/7594 +f 7594/7669/7594 7495/7569/7495 7595/7670/7595 +f 7495/7569/7495 7496/7570/7496 7595/7670/7595 +f 7595/7670/7595 7496/7570/7496 7596/7671/7596 +f 7496/7570/7496 7497/7571/7497 7596/7671/7596 +f 7596/7671/7596 7497/7571/7497 7597/7672/7597 +f 7497/7571/7497 7498/7572/7498 7597/7672/7597 +f 7597/7672/7597 7498/7572/7498 7598/7673/7598 +f 7498/7572/7498 7499/7573/7499 7598/7673/7598 +f 7598/7673/7598 7499/7573/7499 7599/7674/7599 +f 7499/7573/7499 7500/7574/7500 7599/7674/7599 +f 7599/7674/7599 7500/7574/7500 7600/7675/7600 +f 7500/7574/7500 7401/7575/7401 7600/7675/7600 +f 7600/7675/7600 7401/7575/7401 7501/7676/7501 +f 7501/7576/7501 7502/7577/7502 7601/7677/7601 +f 7601/7677/7601 7502/7577/7502 7602/7678/7602 +f 7502/7577/7502 7503/7578/7503 7602/7678/7602 +f 7602/7678/7602 7503/7578/7503 7603/7679/7603 +f 7503/7578/7503 7504/7579/7504 7603/7679/7603 +f 7603/7679/7603 7504/7579/7504 7604/7680/7604 +f 7504/7579/7504 7505/7580/7505 7604/7680/7604 +f 7604/7680/7604 7505/7580/7505 7605/7681/7605 +f 7505/7580/7505 7506/7581/7506 7605/7681/7605 +f 7605/7681/7605 7506/7581/7506 7606/7682/7606 +f 7506/7581/7506 7507/7582/7507 7606/7682/7606 +f 7606/7682/7606 7507/7582/7507 7607/7683/7607 +f 7507/7582/7507 7508/7583/7508 7607/7683/7607 +f 7607/7683/7607 7508/7583/7508 7608/7684/7608 +f 7508/7583/7508 7509/7584/7509 7608/7684/7608 +f 7608/7684/7608 7509/7584/7509 7609/7685/7609 +f 7509/7584/7509 7510/7585/7510 7609/7685/7609 +f 7609/7685/7609 7510/7585/7510 7610/7686/7610 +f 7510/7585/7510 7511/7586/7511 7610/7686/7610 +f 7610/7686/7610 7511/7586/7511 7611/7687/7611 +f 7511/7586/7511 7512/7587/7512 7611/7687/7611 +f 7611/7687/7611 7512/7587/7512 7612/7688/7612 +f 7512/7587/7512 7513/7588/7513 7612/7688/7612 +f 7612/7688/7612 7513/7588/7513 7613/7689/7613 +f 7513/7588/7513 7514/7589/7514 7613/7689/7613 +f 7613/7689/7613 7514/7589/7514 7614/7690/7614 +f 7514/7589/7514 7515/7590/7515 7614/7690/7614 +f 7614/7690/7614 7515/7590/7515 7615/7691/7615 +f 7515/7590/7515 7516/7591/7516 7615/7691/7615 +f 7615/7691/7615 7516/7591/7516 7616/7692/7616 +f 7516/7591/7516 7517/7592/7517 7616/7692/7616 +f 7616/7692/7616 7517/7592/7517 7617/7693/7617 +f 7517/7592/7517 7518/7593/7518 7617/7693/7617 +f 7617/7693/7617 7518/7593/7518 7618/7694/7618 +f 7518/7593/7518 7519/7594/7519 7618/7694/7618 +f 7618/7694/7618 7519/7594/7519 7619/7695/7619 +f 7519/7594/7519 7520/7595/7520 7619/7695/7619 +f 7619/7695/7619 7520/7595/7520 7620/7696/7620 +f 7520/7595/7520 7521/7596/7521 7620/7696/7620 +f 7620/7696/7620 7521/7596/7521 7621/7697/7621 +f 7521/7596/7521 7522/7597/7522 7621/7697/7621 +f 7621/7697/7621 7522/7597/7522 7622/7698/7622 +f 7522/7597/7522 7523/7598/7523 7622/7698/7622 +f 7622/7698/7622 7523/7598/7523 7623/7699/7623 +f 7523/7598/7523 7524/7599/7524 7623/7699/7623 +f 7623/7699/7623 7524/7599/7524 7624/7700/7624 +f 7524/7599/7524 7525/7600/7525 7624/7700/7624 +f 7624/7700/7624 7525/7600/7525 7625/7701/7625 +f 7525/7600/7525 7526/7601/7526 7625/7701/7625 +f 7625/7701/7625 7526/7601/7526 7626/7702/7626 +f 7526/7601/7526 7527/7602/7527 7626/7702/7626 +f 7626/7702/7626 7527/7602/7527 7627/7703/7627 +f 7527/7602/7527 7528/7603/7528 7627/7703/7627 +f 7627/7703/7627 7528/7603/7528 7628/7704/7628 +f 7528/7603/7528 7529/7604/7529 7628/7704/7628 +f 7628/7704/7628 7529/7604/7529 7629/7705/7629 +f 7529/7604/7529 7530/7605/7530 7629/7705/7629 +f 7629/7705/7629 7530/7605/7530 7630/7706/7630 +f 7530/7605/7530 7531/7606/7531 7630/7706/7630 +f 7630/7706/7630 7531/7606/7531 7631/7707/7631 +f 7531/7606/7531 7532/7607/7532 7631/7707/7631 +f 7631/7707/7631 7532/7607/7532 7632/7708/7632 +f 7532/7607/7532 7533/7608/7533 7632/7708/7632 +f 7632/7708/7632 7533/7608/7533 7633/7709/7633 +f 7533/7608/7533 7534/7609/7534 7633/7709/7633 +f 7633/7709/7633 7534/7609/7534 7634/7710/7634 +f 7534/7609/7534 7535/7610/7535 7634/7710/7634 +f 7634/7710/7634 7535/7610/7535 7635/7711/7635 +f 7535/7610/7535 7536/7611/7536 7635/7711/7635 +f 7635/7711/7635 7536/7611/7536 7636/7712/7636 +f 7536/7611/7536 7537/7612/7537 7636/7712/7636 +f 7636/7712/7636 7537/7612/7537 7637/7713/7637 +f 7537/7612/7537 7538/7613/7538 7637/7713/7637 +f 7637/7713/7637 7538/7613/7538 7638/7714/7638 +f 7538/7613/7538 7539/7614/7539 7638/7714/7638 +f 7638/7714/7638 7539/7614/7539 7639/7715/7639 +f 7539/7614/7539 7540/7615/7540 7639/7715/7639 +f 7639/7715/7639 7540/7615/7540 7640/7716/7640 +f 7540/7615/7540 7541/7616/7541 7640/7716/7640 +f 7640/7716/7640 7541/7616/7541 7641/7717/7641 +f 7541/7616/7541 7542/7617/7542 7641/7717/7641 +f 7641/7717/7641 7542/7617/7542 7642/7718/7642 +f 7542/7617/7542 7543/7618/7543 7642/7718/7642 +f 7642/7718/7642 7543/7618/7543 7643/7719/7643 +f 7543/7618/7543 7544/7619/7544 7643/7719/7643 +f 7643/7719/7643 7544/7619/7544 7644/7720/7644 +f 7544/7619/7544 7545/7620/7545 7644/7720/7644 +f 7644/7720/7644 7545/7620/7545 7645/7721/7645 +f 7545/7620/7545 7546/7621/7546 7645/7721/7645 +f 7645/7721/7645 7546/7621/7546 7646/7722/7646 +f 7546/7621/7546 7547/7622/7547 7646/7722/7646 +f 7646/7722/7646 7547/7622/7547 7647/7723/7647 +f 7547/7622/7547 7548/7623/7548 7647/7723/7647 +f 7647/7723/7647 7548/7623/7548 7648/7724/7648 +f 7548/7623/7548 7549/7624/7549 7648/7724/7648 +f 7648/7724/7648 7549/7624/7549 7649/7725/7649 +f 7549/7624/7549 7550/7625/7550 7649/7725/7649 +f 7649/7725/7649 7550/7625/7550 7650/7726/7650 +f 7550/7625/7550 7551/7626/7551 7650/7726/7650 +f 7650/7726/7650 7551/7626/7551 7651/7727/7651 +f 7551/7626/7551 7552/7627/7552 7651/7727/7651 +f 7651/7727/7651 7552/7627/7552 7652/7728/7652 +f 7552/7627/7552 7553/7628/7553 7652/7728/7652 +f 7652/7728/7652 7553/7628/7553 7653/7729/7653 +f 7553/7628/7553 7554/7629/7554 7653/7729/7653 +f 7653/7729/7653 7554/7629/7554 7654/7730/7654 +f 7554/7629/7554 7555/7630/7555 7654/7730/7654 +f 7654/7730/7654 7555/7630/7555 7655/7731/7655 +f 7555/7630/7555 7556/7631/7556 7655/7731/7655 +f 7655/7731/7655 7556/7631/7556 7656/7732/7656 +f 7556/7631/7556 7557/7632/7557 7656/7732/7656 +f 7656/7732/7656 7557/7632/7557 7657/7733/7657 +f 7557/7632/7557 7558/7633/7558 7657/7733/7657 +f 7657/7733/7657 7558/7633/7558 7658/7734/7658 +f 7558/7633/7558 7559/7634/7559 7658/7734/7658 +f 7658/7734/7658 7559/7634/7559 7659/7735/7659 +f 7559/7634/7559 7560/7635/7560 7659/7735/7659 +f 7659/7735/7659 7560/7635/7560 7660/7736/7660 +f 7560/7635/7560 7561/7636/7561 7660/7736/7660 +f 7660/7736/7660 7561/7636/7561 7661/7737/7661 +f 7561/7636/7561 7562/7637/7562 7661/7737/7661 +f 7661/7737/7661 7562/7637/7562 7662/7738/7662 +f 7562/7637/7562 7563/7638/7563 7662/7738/7662 +f 7662/7738/7662 7563/7638/7563 7663/7739/7663 +f 7563/7638/7563 7564/7639/7564 7663/7739/7663 +f 7663/7739/7663 7564/7639/7564 7664/7740/7664 +f 7564/7639/7564 7565/7640/7565 7664/7740/7664 +f 7664/7740/7664 7565/7640/7565 7665/7741/7665 +f 7565/7640/7565 7566/7641/7566 7665/7741/7665 +f 7665/7741/7665 7566/7641/7566 7666/7742/7666 +f 7566/7641/7566 7567/7642/7567 7666/7742/7666 +f 7666/7742/7666 7567/7642/7567 7667/7743/7667 +f 7567/7642/7567 7568/7643/7568 7667/7743/7667 +f 7667/7743/7667 7568/7643/7568 7668/7744/7668 +f 7568/7643/7568 7569/7644/7569 7668/7744/7668 +f 7668/7744/7668 7569/7644/7569 7669/7745/7669 +f 7569/7644/7569 7570/7645/7570 7669/7745/7669 +f 7669/7745/7669 7570/7645/7570 7670/7746/7670 +f 7570/7645/7570 7571/7646/7571 7670/7746/7670 +f 7670/7746/7670 7571/7646/7571 7671/7747/7671 +f 7571/7646/7571 7572/7647/7572 7671/7747/7671 +f 7671/7747/7671 7572/7647/7572 7672/7748/7672 +f 7572/7647/7572 7573/7648/7573 7672/7748/7672 +f 7672/7748/7672 7573/7648/7573 7673/7749/7673 +f 7573/7648/7573 7574/7649/7574 7673/7749/7673 +f 7673/7749/7673 7574/7649/7574 7674/7750/7674 +f 7574/7649/7574 7575/7650/7575 7674/7750/7674 +f 7674/7750/7674 7575/7650/7575 7675/7751/7675 +f 7575/7650/7575 7576/7651/7576 7675/7751/7675 +f 7675/7751/7675 7576/7651/7576 7676/7752/7676 +f 7576/7651/7576 7577/7652/7577 7676/7752/7676 +f 7676/7752/7676 7577/7652/7577 7677/7753/7677 +f 7577/7652/7577 7578/7653/7578 7677/7753/7677 +f 7677/7753/7677 7578/7653/7578 7678/7754/7678 +f 7578/7653/7578 7579/7654/7579 7678/7754/7678 +f 7678/7754/7678 7579/7654/7579 7679/7755/7679 +f 7579/7654/7579 7580/7655/7580 7679/7755/7679 +f 7679/7755/7679 7580/7655/7580 7680/7756/7680 +f 7580/7655/7580 7581/7656/7581 7680/7756/7680 +f 7680/7756/7680 7581/7656/7581 7681/7757/7681 +f 7581/7656/7581 7582/7657/7582 7681/7757/7681 +f 7681/7757/7681 7582/7657/7582 7682/7758/7682 +f 7582/7657/7582 7583/7658/7583 7682/7758/7682 +f 7682/7758/7682 7583/7658/7583 7683/7759/7683 +f 7583/7658/7583 7584/7659/7584 7683/7759/7683 +f 7683/7759/7683 7584/7659/7584 7684/7760/7684 +f 7584/7659/7584 7585/7660/7585 7684/7760/7684 +f 7684/7760/7684 7585/7660/7585 7685/7761/7685 +f 7585/7660/7585 7586/7661/7586 7685/7761/7685 +f 7685/7761/7685 7586/7661/7586 7686/7762/7686 +f 7586/7661/7586 7587/7662/7587 7686/7762/7686 +f 7686/7762/7686 7587/7662/7587 7687/7763/7687 +f 7587/7662/7587 7588/7663/7588 7687/7763/7687 +f 7687/7763/7687 7588/7663/7588 7688/7764/7688 +f 7588/7663/7588 7589/7664/7589 7688/7764/7688 +f 7688/7764/7688 7589/7664/7589 7689/7765/7689 +f 7589/7664/7589 7590/7665/7590 7689/7765/7689 +f 7689/7765/7689 7590/7665/7590 7690/7766/7690 +f 7590/7665/7590 7591/7666/7591 7690/7766/7690 +f 7690/7766/7690 7591/7666/7591 7691/7767/7691 +f 7591/7666/7591 7592/7667/7592 7691/7767/7691 +f 7691/7767/7691 7592/7667/7592 7692/7768/7692 +f 7592/7667/7592 7593/7668/7593 7692/7768/7692 +f 7692/7768/7692 7593/7668/7593 7693/7769/7693 +f 7593/7668/7593 7594/7669/7594 7693/7769/7693 +f 7693/7769/7693 7594/7669/7594 7694/7770/7694 +f 7594/7669/7594 7595/7670/7595 7694/7770/7694 +f 7694/7770/7694 7595/7670/7595 7695/7771/7695 +f 7595/7670/7595 7596/7671/7596 7695/7771/7695 +f 7695/7771/7695 7596/7671/7596 7696/7772/7696 +f 7596/7671/7596 7597/7672/7597 7696/7772/7696 +f 7696/7772/7696 7597/7672/7597 7697/7773/7697 +f 7597/7672/7597 7598/7673/7598 7697/7773/7697 +f 7697/7773/7697 7598/7673/7598 7698/7774/7698 +f 7598/7673/7598 7599/7674/7599 7698/7774/7698 +f 7698/7774/7698 7599/7674/7599 7699/7775/7699 +f 7599/7674/7599 7600/7675/7600 7699/7775/7699 +f 7699/7775/7699 7600/7675/7600 7700/7776/7700 +f 7600/7675/7600 7501/7676/7501 7700/7776/7700 +f 7700/7776/7700 7501/7676/7501 7601/7777/7601 +f 7601/7677/7601 7602/7678/7602 7701/7778/7701 +f 7701/7778/7701 7602/7678/7602 7702/7779/7702 +f 7602/7678/7602 7603/7679/7603 7702/7779/7702 +f 7702/7779/7702 7603/7679/7603 7703/7780/7703 +f 7603/7679/7603 7604/7680/7604 7703/7780/7703 +f 7703/7780/7703 7604/7680/7604 7704/7781/7704 +f 7604/7680/7604 7605/7681/7605 7704/7781/7704 +f 7704/7781/7704 7605/7681/7605 7705/7782/7705 +f 7605/7681/7605 7606/7682/7606 7705/7782/7705 +f 7705/7782/7705 7606/7682/7606 7706/7783/7706 +f 7606/7682/7606 7607/7683/7607 7706/7783/7706 +f 7706/7783/7706 7607/7683/7607 7707/7784/7707 +f 7607/7683/7607 7608/7684/7608 7707/7784/7707 +f 7707/7784/7707 7608/7684/7608 7708/7785/7708 +f 7608/7684/7608 7609/7685/7609 7708/7785/7708 +f 7708/7785/7708 7609/7685/7609 7709/7786/7709 +f 7609/7685/7609 7610/7686/7610 7709/7786/7709 +f 7709/7786/7709 7610/7686/7610 7710/7787/7710 +f 7610/7686/7610 7611/7687/7611 7710/7787/7710 +f 7710/7787/7710 7611/7687/7611 7711/7788/7711 +f 7611/7687/7611 7612/7688/7612 7711/7788/7711 +f 7711/7788/7711 7612/7688/7612 7712/7789/7712 +f 7612/7688/7612 7613/7689/7613 7712/7789/7712 +f 7712/7789/7712 7613/7689/7613 7713/7790/7713 +f 7613/7689/7613 7614/7690/7614 7713/7790/7713 +f 7713/7790/7713 7614/7690/7614 7714/7791/7714 +f 7614/7690/7614 7615/7691/7615 7714/7791/7714 +f 7714/7791/7714 7615/7691/7615 7715/7792/7715 +f 7615/7691/7615 7616/7692/7616 7715/7792/7715 +f 7715/7792/7715 7616/7692/7616 7716/7793/7716 +f 7616/7692/7616 7617/7693/7617 7716/7793/7716 +f 7716/7793/7716 7617/7693/7617 7717/7794/7717 +f 7617/7693/7617 7618/7694/7618 7717/7794/7717 +f 7717/7794/7717 7618/7694/7618 7718/7795/7718 +f 7618/7694/7618 7619/7695/7619 7718/7795/7718 +f 7718/7795/7718 7619/7695/7619 7719/7796/7719 +f 7619/7695/7619 7620/7696/7620 7719/7796/7719 +f 7719/7796/7719 7620/7696/7620 7720/7797/7720 +f 7620/7696/7620 7621/7697/7621 7720/7797/7720 +f 7720/7797/7720 7621/7697/7621 7721/7798/7721 +f 7621/7697/7621 7622/7698/7622 7721/7798/7721 +f 7721/7798/7721 7622/7698/7622 7722/7799/7722 +f 7622/7698/7622 7623/7699/7623 7722/7799/7722 +f 7722/7799/7722 7623/7699/7623 7723/7800/7723 +f 7623/7699/7623 7624/7700/7624 7723/7800/7723 +f 7723/7800/7723 7624/7700/7624 7724/7801/7724 +f 7624/7700/7624 7625/7701/7625 7724/7801/7724 +f 7724/7801/7724 7625/7701/7625 7725/7802/7725 +f 7625/7701/7625 7626/7702/7626 7725/7802/7725 +f 7725/7802/7725 7626/7702/7626 7726/7803/7726 +f 7626/7702/7626 7627/7703/7627 7726/7803/7726 +f 7726/7803/7726 7627/7703/7627 7727/7804/7727 +f 7627/7703/7627 7628/7704/7628 7727/7804/7727 +f 7727/7804/7727 7628/7704/7628 7728/7805/7728 +f 7628/7704/7628 7629/7705/7629 7728/7805/7728 +f 7728/7805/7728 7629/7705/7629 7729/7806/7729 +f 7629/7705/7629 7630/7706/7630 7729/7806/7729 +f 7729/7806/7729 7630/7706/7630 7730/7807/7730 +f 7630/7706/7630 7631/7707/7631 7730/7807/7730 +f 7730/7807/7730 7631/7707/7631 7731/7808/7731 +f 7631/7707/7631 7632/7708/7632 7731/7808/7731 +f 7731/7808/7731 7632/7708/7632 7732/7809/7732 +f 7632/7708/7632 7633/7709/7633 7732/7809/7732 +f 7732/7809/7732 7633/7709/7633 7733/7810/7733 +f 7633/7709/7633 7634/7710/7634 7733/7810/7733 +f 7733/7810/7733 7634/7710/7634 7734/7811/7734 +f 7634/7710/7634 7635/7711/7635 7734/7811/7734 +f 7734/7811/7734 7635/7711/7635 7735/7812/7735 +f 7635/7711/7635 7636/7712/7636 7735/7812/7735 +f 7735/7812/7735 7636/7712/7636 7736/7813/7736 +f 7636/7712/7636 7637/7713/7637 7736/7813/7736 +f 7736/7813/7736 7637/7713/7637 7737/7814/7737 +f 7637/7713/7637 7638/7714/7638 7737/7814/7737 +f 7737/7814/7737 7638/7714/7638 7738/7815/7738 +f 7638/7714/7638 7639/7715/7639 7738/7815/7738 +f 7738/7815/7738 7639/7715/7639 7739/7816/7739 +f 7639/7715/7639 7640/7716/7640 7739/7816/7739 +f 7739/7816/7739 7640/7716/7640 7740/7817/7740 +f 7640/7716/7640 7641/7717/7641 7740/7817/7740 +f 7740/7817/7740 7641/7717/7641 7741/7818/7741 +f 7641/7717/7641 7642/7718/7642 7741/7818/7741 +f 7741/7818/7741 7642/7718/7642 7742/7819/7742 +f 7642/7718/7642 7643/7719/7643 7742/7819/7742 +f 7742/7819/7742 7643/7719/7643 7743/7820/7743 +f 7643/7719/7643 7644/7720/7644 7743/7820/7743 +f 7743/7820/7743 7644/7720/7644 7744/7821/7744 +f 7644/7720/7644 7645/7721/7645 7744/7821/7744 +f 7744/7821/7744 7645/7721/7645 7745/7822/7745 +f 7645/7721/7645 7646/7722/7646 7745/7822/7745 +f 7745/7822/7745 7646/7722/7646 7746/7823/7746 +f 7646/7722/7646 7647/7723/7647 7746/7823/7746 +f 7746/7823/7746 7647/7723/7647 7747/7824/7747 +f 7647/7723/7647 7648/7724/7648 7747/7824/7747 +f 7747/7824/7747 7648/7724/7648 7748/7825/7748 +f 7648/7724/7648 7649/7725/7649 7748/7825/7748 +f 7748/7825/7748 7649/7725/7649 7749/7826/7749 +f 7649/7725/7649 7650/7726/7650 7749/7826/7749 +f 7749/7826/7749 7650/7726/7650 7750/7827/7750 +f 7650/7726/7650 7651/7727/7651 7750/7827/7750 +f 7750/7827/7750 7651/7727/7651 7751/7828/7751 +f 7651/7727/7651 7652/7728/7652 7751/7828/7751 +f 7751/7828/7751 7652/7728/7652 7752/7829/7752 +f 7652/7728/7652 7653/7729/7653 7752/7829/7752 +f 7752/7829/7752 7653/7729/7653 7753/7830/7753 +f 7653/7729/7653 7654/7730/7654 7753/7830/7753 +f 7753/7830/7753 7654/7730/7654 7754/7831/7754 +f 7654/7730/7654 7655/7731/7655 7754/7831/7754 +f 7754/7831/7754 7655/7731/7655 7755/7832/7755 +f 7655/7731/7655 7656/7732/7656 7755/7832/7755 +f 7755/7832/7755 7656/7732/7656 7756/7833/7756 +f 7656/7732/7656 7657/7733/7657 7756/7833/7756 +f 7756/7833/7756 7657/7733/7657 7757/7834/7757 +f 7657/7733/7657 7658/7734/7658 7757/7834/7757 +f 7757/7834/7757 7658/7734/7658 7758/7835/7758 +f 7658/7734/7658 7659/7735/7659 7758/7835/7758 +f 7758/7835/7758 7659/7735/7659 7759/7836/7759 +f 7659/7735/7659 7660/7736/7660 7759/7836/7759 +f 7759/7836/7759 7660/7736/7660 7760/7837/7760 +f 7660/7736/7660 7661/7737/7661 7760/7837/7760 +f 7760/7837/7760 7661/7737/7661 7761/7838/7761 +f 7661/7737/7661 7662/7738/7662 7761/7838/7761 +f 7761/7838/7761 7662/7738/7662 7762/7839/7762 +f 7662/7738/7662 7663/7739/7663 7762/7839/7762 +f 7762/7839/7762 7663/7739/7663 7763/7840/7763 +f 7663/7739/7663 7664/7740/7664 7763/7840/7763 +f 7763/7840/7763 7664/7740/7664 7764/7841/7764 +f 7664/7740/7664 7665/7741/7665 7764/7841/7764 +f 7764/7841/7764 7665/7741/7665 7765/7842/7765 +f 7665/7741/7665 7666/7742/7666 7765/7842/7765 +f 7765/7842/7765 7666/7742/7666 7766/7843/7766 +f 7666/7742/7666 7667/7743/7667 7766/7843/7766 +f 7766/7843/7766 7667/7743/7667 7767/7844/7767 +f 7667/7743/7667 7668/7744/7668 7767/7844/7767 +f 7767/7844/7767 7668/7744/7668 7768/7845/7768 +f 7668/7744/7668 7669/7745/7669 7768/7845/7768 +f 7768/7845/7768 7669/7745/7669 7769/7846/7769 +f 7669/7745/7669 7670/7746/7670 7769/7846/7769 +f 7769/7846/7769 7670/7746/7670 7770/7847/7770 +f 7670/7746/7670 7671/7747/7671 7770/7847/7770 +f 7770/7847/7770 7671/7747/7671 7771/7848/7771 +f 7671/7747/7671 7672/7748/7672 7771/7848/7771 +f 7771/7848/7771 7672/7748/7672 7772/7849/7772 +f 7672/7748/7672 7673/7749/7673 7772/7849/7772 +f 7772/7849/7772 7673/7749/7673 7773/7850/7773 +f 7673/7749/7673 7674/7750/7674 7773/7850/7773 +f 7773/7850/7773 7674/7750/7674 7774/7851/7774 +f 7674/7750/7674 7675/7751/7675 7774/7851/7774 +f 7774/7851/7774 7675/7751/7675 7775/7852/7775 +f 7675/7751/7675 7676/7752/7676 7775/7852/7775 +f 7775/7852/7775 7676/7752/7676 7776/7853/7776 +f 7676/7752/7676 7677/7753/7677 7776/7853/7776 +f 7776/7853/7776 7677/7753/7677 7777/7854/7777 +f 7677/7753/7677 7678/7754/7678 7777/7854/7777 +f 7777/7854/7777 7678/7754/7678 7778/7855/7778 +f 7678/7754/7678 7679/7755/7679 7778/7855/7778 +f 7778/7855/7778 7679/7755/7679 7779/7856/7779 +f 7679/7755/7679 7680/7756/7680 7779/7856/7779 +f 7779/7856/7779 7680/7756/7680 7780/7857/7780 +f 7680/7756/7680 7681/7757/7681 7780/7857/7780 +f 7780/7857/7780 7681/7757/7681 7781/7858/7781 +f 7681/7757/7681 7682/7758/7682 7781/7858/7781 +f 7781/7858/7781 7682/7758/7682 7782/7859/7782 +f 7682/7758/7682 7683/7759/7683 7782/7859/7782 +f 7782/7859/7782 7683/7759/7683 7783/7860/7783 +f 7683/7759/7683 7684/7760/7684 7783/7860/7783 +f 7783/7860/7783 7684/7760/7684 7784/7861/7784 +f 7684/7760/7684 7685/7761/7685 7784/7861/7784 +f 7784/7861/7784 7685/7761/7685 7785/7862/7785 +f 7685/7761/7685 7686/7762/7686 7785/7862/7785 +f 7785/7862/7785 7686/7762/7686 7786/7863/7786 +f 7686/7762/7686 7687/7763/7687 7786/7863/7786 +f 7786/7863/7786 7687/7763/7687 7787/7864/7787 +f 7687/7763/7687 7688/7764/7688 7787/7864/7787 +f 7787/7864/7787 7688/7764/7688 7788/7865/7788 +f 7688/7764/7688 7689/7765/7689 7788/7865/7788 +f 7788/7865/7788 7689/7765/7689 7789/7866/7789 +f 7689/7765/7689 7690/7766/7690 7789/7866/7789 +f 7789/7866/7789 7690/7766/7690 7790/7867/7790 +f 7690/7766/7690 7691/7767/7691 7790/7867/7790 +f 7790/7867/7790 7691/7767/7691 7791/7868/7791 +f 7691/7767/7691 7692/7768/7692 7791/7868/7791 +f 7791/7868/7791 7692/7768/7692 7792/7869/7792 +f 7692/7768/7692 7693/7769/7693 7792/7869/7792 +f 7792/7869/7792 7693/7769/7693 7793/7870/7793 +f 7693/7769/7693 7694/7770/7694 7793/7870/7793 +f 7793/7870/7793 7694/7770/7694 7794/7871/7794 +f 7694/7770/7694 7695/7771/7695 7794/7871/7794 +f 7794/7871/7794 7695/7771/7695 7795/7872/7795 +f 7695/7771/7695 7696/7772/7696 7795/7872/7795 +f 7795/7872/7795 7696/7772/7696 7796/7873/7796 +f 7696/7772/7696 7697/7773/7697 7796/7873/7796 +f 7796/7873/7796 7697/7773/7697 7797/7874/7797 +f 7697/7773/7697 7698/7774/7698 7797/7874/7797 +f 7797/7874/7797 7698/7774/7698 7798/7875/7798 +f 7698/7774/7698 7699/7775/7699 7798/7875/7798 +f 7798/7875/7798 7699/7775/7699 7799/7876/7799 +f 7699/7775/7699 7700/7776/7700 7799/7876/7799 +f 7799/7876/7799 7700/7776/7700 7800/7877/7800 +f 7700/7776/7700 7601/7777/7601 7800/7877/7800 +f 7800/7877/7800 7601/7777/7601 7701/7878/7701 +f 7701/7778/7701 7702/7779/7702 7801/7879/7801 +f 7801/7879/7801 7702/7779/7702 7802/7880/7802 +f 7702/7779/7702 7703/7780/7703 7802/7880/7802 +f 7802/7880/7802 7703/7780/7703 7803/7881/7803 +f 7703/7780/7703 7704/7781/7704 7803/7881/7803 +f 7803/7881/7803 7704/7781/7704 7804/7882/7804 +f 7704/7781/7704 7705/7782/7705 7804/7882/7804 +f 7804/7882/7804 7705/7782/7705 7805/7883/7805 +f 7705/7782/7705 7706/7783/7706 7805/7883/7805 +f 7805/7883/7805 7706/7783/7706 7806/7884/7806 +f 7706/7783/7706 7707/7784/7707 7806/7884/7806 +f 7806/7884/7806 7707/7784/7707 7807/7885/7807 +f 7707/7784/7707 7708/7785/7708 7807/7885/7807 +f 7807/7885/7807 7708/7785/7708 7808/7886/7808 +f 7708/7785/7708 7709/7786/7709 7808/7886/7808 +f 7808/7886/7808 7709/7786/7709 7809/7887/7809 +f 7709/7786/7709 7710/7787/7710 7809/7887/7809 +f 7809/7887/7809 7710/7787/7710 7810/7888/7810 +f 7710/7787/7710 7711/7788/7711 7810/7888/7810 +f 7810/7888/7810 7711/7788/7711 7811/7889/7811 +f 7711/7788/7711 7712/7789/7712 7811/7889/7811 +f 7811/7889/7811 7712/7789/7712 7812/7890/7812 +f 7712/7789/7712 7713/7790/7713 7812/7890/7812 +f 7812/7890/7812 7713/7790/7713 7813/7891/7813 +f 7713/7790/7713 7714/7791/7714 7813/7891/7813 +f 7813/7891/7813 7714/7791/7714 7814/7892/7814 +f 7714/7791/7714 7715/7792/7715 7814/7892/7814 +f 7814/7892/7814 7715/7792/7715 7815/7893/7815 +f 7715/7792/7715 7716/7793/7716 7815/7893/7815 +f 7815/7893/7815 7716/7793/7716 7816/7894/7816 +f 7716/7793/7716 7717/7794/7717 7816/7894/7816 +f 7816/7894/7816 7717/7794/7717 7817/7895/7817 +f 7717/7794/7717 7718/7795/7718 7817/7895/7817 +f 7817/7895/7817 7718/7795/7718 7818/7896/7818 +f 7718/7795/7718 7719/7796/7719 7818/7896/7818 +f 7818/7896/7818 7719/7796/7719 7819/7897/7819 +f 7719/7796/7719 7720/7797/7720 7819/7897/7819 +f 7819/7897/7819 7720/7797/7720 7820/7898/7820 +f 7720/7797/7720 7721/7798/7721 7820/7898/7820 +f 7820/7898/7820 7721/7798/7721 7821/7899/7821 +f 7721/7798/7721 7722/7799/7722 7821/7899/7821 +f 7821/7899/7821 7722/7799/7722 7822/7900/7822 +f 7722/7799/7722 7723/7800/7723 7822/7900/7822 +f 7822/7900/7822 7723/7800/7723 7823/7901/7823 +f 7723/7800/7723 7724/7801/7724 7823/7901/7823 +f 7823/7901/7823 7724/7801/7724 7824/7902/7824 +f 7724/7801/7724 7725/7802/7725 7824/7902/7824 +f 7824/7902/7824 7725/7802/7725 7825/7903/7825 +f 7725/7802/7725 7726/7803/7726 7825/7903/7825 +f 7825/7903/7825 7726/7803/7726 7826/7904/7826 +f 7726/7803/7726 7727/7804/7727 7826/7904/7826 +f 7826/7904/7826 7727/7804/7727 7827/7905/7827 +f 7727/7804/7727 7728/7805/7728 7827/7905/7827 +f 7827/7905/7827 7728/7805/7728 7828/7906/7828 +f 7728/7805/7728 7729/7806/7729 7828/7906/7828 +f 7828/7906/7828 7729/7806/7729 7829/7907/7829 +f 7729/7806/7729 7730/7807/7730 7829/7907/7829 +f 7829/7907/7829 7730/7807/7730 7830/7908/7830 +f 7730/7807/7730 7731/7808/7731 7830/7908/7830 +f 7830/7908/7830 7731/7808/7731 7831/7909/7831 +f 7731/7808/7731 7732/7809/7732 7831/7909/7831 +f 7831/7909/7831 7732/7809/7732 7832/7910/7832 +f 7732/7809/7732 7733/7810/7733 7832/7910/7832 +f 7832/7910/7832 7733/7810/7733 7833/7911/7833 +f 7733/7810/7733 7734/7811/7734 7833/7911/7833 +f 7833/7911/7833 7734/7811/7734 7834/7912/7834 +f 7734/7811/7734 7735/7812/7735 7834/7912/7834 +f 7834/7912/7834 7735/7812/7735 7835/7913/7835 +f 7735/7812/7735 7736/7813/7736 7835/7913/7835 +f 7835/7913/7835 7736/7813/7736 7836/7914/7836 +f 7736/7813/7736 7737/7814/7737 7836/7914/7836 +f 7836/7914/7836 7737/7814/7737 7837/7915/7837 +f 7737/7814/7737 7738/7815/7738 7837/7915/7837 +f 7837/7915/7837 7738/7815/7738 7838/7916/7838 +f 7738/7815/7738 7739/7816/7739 7838/7916/7838 +f 7838/7916/7838 7739/7816/7739 7839/7917/7839 +f 7739/7816/7739 7740/7817/7740 7839/7917/7839 +f 7839/7917/7839 7740/7817/7740 7840/7918/7840 +f 7740/7817/7740 7741/7818/7741 7840/7918/7840 +f 7840/7918/7840 7741/7818/7741 7841/7919/7841 +f 7741/7818/7741 7742/7819/7742 7841/7919/7841 +f 7841/7919/7841 7742/7819/7742 7842/7920/7842 +f 7742/7819/7742 7743/7820/7743 7842/7920/7842 +f 7842/7920/7842 7743/7820/7743 7843/7921/7843 +f 7743/7820/7743 7744/7821/7744 7843/7921/7843 +f 7843/7921/7843 7744/7821/7744 7844/7922/7844 +f 7744/7821/7744 7745/7822/7745 7844/7922/7844 +f 7844/7922/7844 7745/7822/7745 7845/7923/7845 +f 7745/7822/7745 7746/7823/7746 7845/7923/7845 +f 7845/7923/7845 7746/7823/7746 7846/7924/7846 +f 7746/7823/7746 7747/7824/7747 7846/7924/7846 +f 7846/7924/7846 7747/7824/7747 7847/7925/7847 +f 7747/7824/7747 7748/7825/7748 7847/7925/7847 +f 7847/7925/7847 7748/7825/7748 7848/7926/7848 +f 7748/7825/7748 7749/7826/7749 7848/7926/7848 +f 7848/7926/7848 7749/7826/7749 7849/7927/7849 +f 7749/7826/7749 7750/7827/7750 7849/7927/7849 +f 7849/7927/7849 7750/7827/7750 7850/7928/7850 +f 7750/7827/7750 7751/7828/7751 7850/7928/7850 +f 7850/7928/7850 7751/7828/7751 7851/7929/7851 +f 7751/7828/7751 7752/7829/7752 7851/7929/7851 +f 7851/7929/7851 7752/7829/7752 7852/7930/7852 +f 7752/7829/7752 7753/7830/7753 7852/7930/7852 +f 7852/7930/7852 7753/7830/7753 7853/7931/7853 +f 7753/7830/7753 7754/7831/7754 7853/7931/7853 +f 7853/7931/7853 7754/7831/7754 7854/7932/7854 +f 7754/7831/7754 7755/7832/7755 7854/7932/7854 +f 7854/7932/7854 7755/7832/7755 7855/7933/7855 +f 7755/7832/7755 7756/7833/7756 7855/7933/7855 +f 7855/7933/7855 7756/7833/7756 7856/7934/7856 +f 7756/7833/7756 7757/7834/7757 7856/7934/7856 +f 7856/7934/7856 7757/7834/7757 7857/7935/7857 +f 7757/7834/7757 7758/7835/7758 7857/7935/7857 +f 7857/7935/7857 7758/7835/7758 7858/7936/7858 +f 7758/7835/7758 7759/7836/7759 7858/7936/7858 +f 7858/7936/7858 7759/7836/7759 7859/7937/7859 +f 7759/7836/7759 7760/7837/7760 7859/7937/7859 +f 7859/7937/7859 7760/7837/7760 7860/7938/7860 +f 7760/7837/7760 7761/7838/7761 7860/7938/7860 +f 7860/7938/7860 7761/7838/7761 7861/7939/7861 +f 7761/7838/7761 7762/7839/7762 7861/7939/7861 +f 7861/7939/7861 7762/7839/7762 7862/7940/7862 +f 7762/7839/7762 7763/7840/7763 7862/7940/7862 +f 7862/7940/7862 7763/7840/7763 7863/7941/7863 +f 7763/7840/7763 7764/7841/7764 7863/7941/7863 +f 7863/7941/7863 7764/7841/7764 7864/7942/7864 +f 7764/7841/7764 7765/7842/7765 7864/7942/7864 +f 7864/7942/7864 7765/7842/7765 7865/7943/7865 +f 7765/7842/7765 7766/7843/7766 7865/7943/7865 +f 7865/7943/7865 7766/7843/7766 7866/7944/7866 +f 7766/7843/7766 7767/7844/7767 7866/7944/7866 +f 7866/7944/7866 7767/7844/7767 7867/7945/7867 +f 7767/7844/7767 7768/7845/7768 7867/7945/7867 +f 7867/7945/7867 7768/7845/7768 7868/7946/7868 +f 7768/7845/7768 7769/7846/7769 7868/7946/7868 +f 7868/7946/7868 7769/7846/7769 7869/7947/7869 +f 7769/7846/7769 7770/7847/7770 7869/7947/7869 +f 7869/7947/7869 7770/7847/7770 7870/7948/7870 +f 7770/7847/7770 7771/7848/7771 7870/7948/7870 +f 7870/7948/7870 7771/7848/7771 7871/7949/7871 +f 7771/7848/7771 7772/7849/7772 7871/7949/7871 +f 7871/7949/7871 7772/7849/7772 7872/7950/7872 +f 7772/7849/7772 7773/7850/7773 7872/7950/7872 +f 7872/7950/7872 7773/7850/7773 7873/7951/7873 +f 7773/7850/7773 7774/7851/7774 7873/7951/7873 +f 7873/7951/7873 7774/7851/7774 7874/7952/7874 +f 7774/7851/7774 7775/7852/7775 7874/7952/7874 +f 7874/7952/7874 7775/7852/7775 7875/7953/7875 +f 7775/7852/7775 7776/7853/7776 7875/7953/7875 +f 7875/7953/7875 7776/7853/7776 7876/7954/7876 +f 7776/7853/7776 7777/7854/7777 7876/7954/7876 +f 7876/7954/7876 7777/7854/7777 7877/7955/7877 +f 7777/7854/7777 7778/7855/7778 7877/7955/7877 +f 7877/7955/7877 7778/7855/7778 7878/7956/7878 +f 7778/7855/7778 7779/7856/7779 7878/7956/7878 +f 7878/7956/7878 7779/7856/7779 7879/7957/7879 +f 7779/7856/7779 7780/7857/7780 7879/7957/7879 +f 7879/7957/7879 7780/7857/7780 7880/7958/7880 +f 7780/7857/7780 7781/7858/7781 7880/7958/7880 +f 7880/7958/7880 7781/7858/7781 7881/7959/7881 +f 7781/7858/7781 7782/7859/7782 7881/7959/7881 +f 7881/7959/7881 7782/7859/7782 7882/7960/7882 +f 7782/7859/7782 7783/7860/7783 7882/7960/7882 +f 7882/7960/7882 7783/7860/7783 7883/7961/7883 +f 7783/7860/7783 7784/7861/7784 7883/7961/7883 +f 7883/7961/7883 7784/7861/7784 7884/7962/7884 +f 7784/7861/7784 7785/7862/7785 7884/7962/7884 +f 7884/7962/7884 7785/7862/7785 7885/7963/7885 +f 7785/7862/7785 7786/7863/7786 7885/7963/7885 +f 7885/7963/7885 7786/7863/7786 7886/7964/7886 +f 7786/7863/7786 7787/7864/7787 7886/7964/7886 +f 7886/7964/7886 7787/7864/7787 7887/7965/7887 +f 7787/7864/7787 7788/7865/7788 7887/7965/7887 +f 7887/7965/7887 7788/7865/7788 7888/7966/7888 +f 7788/7865/7788 7789/7866/7789 7888/7966/7888 +f 7888/7966/7888 7789/7866/7789 7889/7967/7889 +f 7789/7866/7789 7790/7867/7790 7889/7967/7889 +f 7889/7967/7889 7790/7867/7790 7890/7968/7890 +f 7790/7867/7790 7791/7868/7791 7890/7968/7890 +f 7890/7968/7890 7791/7868/7791 7891/7969/7891 +f 7791/7868/7791 7792/7869/7792 7891/7969/7891 +f 7891/7969/7891 7792/7869/7792 7892/7970/7892 +f 7792/7869/7792 7793/7870/7793 7892/7970/7892 +f 7892/7970/7892 7793/7870/7793 7893/7971/7893 +f 7793/7870/7793 7794/7871/7794 7893/7971/7893 +f 7893/7971/7893 7794/7871/7794 7894/7972/7894 +f 7794/7871/7794 7795/7872/7795 7894/7972/7894 +f 7894/7972/7894 7795/7872/7795 7895/7973/7895 +f 7795/7872/7795 7796/7873/7796 7895/7973/7895 +f 7895/7973/7895 7796/7873/7796 7896/7974/7896 +f 7796/7873/7796 7797/7874/7797 7896/7974/7896 +f 7896/7974/7896 7797/7874/7797 7897/7975/7897 +f 7797/7874/7797 7798/7875/7798 7897/7975/7897 +f 7897/7975/7897 7798/7875/7798 7898/7976/7898 +f 7798/7875/7798 7799/7876/7799 7898/7976/7898 +f 7898/7976/7898 7799/7876/7799 7899/7977/7899 +f 7799/7876/7799 7800/7877/7800 7899/7977/7899 +f 7899/7977/7899 7800/7877/7800 7900/7978/7900 +f 7800/7877/7800 7701/7878/7701 7900/7978/7900 +f 7900/7978/7900 7701/7878/7701 7801/7979/7801 +f 7801/7879/7801 7802/7880/7802 7901/7980/7901 +f 7901/7980/7901 7802/7880/7802 7902/7981/7902 +f 7802/7880/7802 7803/7881/7803 7902/7981/7902 +f 7902/7981/7902 7803/7881/7803 7903/7982/7903 +f 7803/7881/7803 7804/7882/7804 7903/7982/7903 +f 7903/7982/7903 7804/7882/7804 7904/7983/7904 +f 7804/7882/7804 7805/7883/7805 7904/7983/7904 +f 7904/7983/7904 7805/7883/7805 7905/7984/7905 +f 7805/7883/7805 7806/7884/7806 7905/7984/7905 +f 7905/7984/7905 7806/7884/7806 7906/7985/7906 +f 7806/7884/7806 7807/7885/7807 7906/7985/7906 +f 7906/7985/7906 7807/7885/7807 7907/7986/7907 +f 7807/7885/7807 7808/7886/7808 7907/7986/7907 +f 7907/7986/7907 7808/7886/7808 7908/7987/7908 +f 7808/7886/7808 7809/7887/7809 7908/7987/7908 +f 7908/7987/7908 7809/7887/7809 7909/7988/7909 +f 7809/7887/7809 7810/7888/7810 7909/7988/7909 +f 7909/7988/7909 7810/7888/7810 7910/7989/7910 +f 7810/7888/7810 7811/7889/7811 7910/7989/7910 +f 7910/7989/7910 7811/7889/7811 7911/7990/7911 +f 7811/7889/7811 7812/7890/7812 7911/7990/7911 +f 7911/7990/7911 7812/7890/7812 7912/7991/7912 +f 7812/7890/7812 7813/7891/7813 7912/7991/7912 +f 7912/7991/7912 7813/7891/7813 7913/7992/7913 +f 7813/7891/7813 7814/7892/7814 7913/7992/7913 +f 7913/7992/7913 7814/7892/7814 7914/7993/7914 +f 7814/7892/7814 7815/7893/7815 7914/7993/7914 +f 7914/7993/7914 7815/7893/7815 7915/7994/7915 +f 7815/7893/7815 7816/7894/7816 7915/7994/7915 +f 7915/7994/7915 7816/7894/7816 7916/7995/7916 +f 7816/7894/7816 7817/7895/7817 7916/7995/7916 +f 7916/7995/7916 7817/7895/7817 7917/7996/7917 +f 7817/7895/7817 7818/7896/7818 7917/7996/7917 +f 7917/7996/7917 7818/7896/7818 7918/7997/7918 +f 7818/7896/7818 7819/7897/7819 7918/7997/7918 +f 7918/7997/7918 7819/7897/7819 7919/7998/7919 +f 7819/7897/7819 7820/7898/7820 7919/7998/7919 +f 7919/7998/7919 7820/7898/7820 7920/7999/7920 +f 7820/7898/7820 7821/7899/7821 7920/7999/7920 +f 7920/7999/7920 7821/7899/7821 7921/8000/7921 +f 7821/7899/7821 7822/7900/7822 7921/8000/7921 +f 7921/8000/7921 7822/7900/7822 7922/8001/7922 +f 7822/7900/7822 7823/7901/7823 7922/8001/7922 +f 7922/8001/7922 7823/7901/7823 7923/8002/7923 +f 7823/7901/7823 7824/7902/7824 7923/8002/7923 +f 7923/8002/7923 7824/7902/7824 7924/8003/7924 +f 7824/7902/7824 7825/7903/7825 7924/8003/7924 +f 7924/8003/7924 7825/7903/7825 7925/8004/7925 +f 7825/7903/7825 7826/7904/7826 7925/8004/7925 +f 7925/8004/7925 7826/7904/7826 7926/8005/7926 +f 7826/7904/7826 7827/7905/7827 7926/8005/7926 +f 7926/8005/7926 7827/7905/7827 7927/8006/7927 +f 7827/7905/7827 7828/7906/7828 7927/8006/7927 +f 7927/8006/7927 7828/7906/7828 7928/8007/7928 +f 7828/7906/7828 7829/7907/7829 7928/8007/7928 +f 7928/8007/7928 7829/7907/7829 7929/8008/7929 +f 7829/7907/7829 7830/7908/7830 7929/8008/7929 +f 7929/8008/7929 7830/7908/7830 7930/8009/7930 +f 7830/7908/7830 7831/7909/7831 7930/8009/7930 +f 7930/8009/7930 7831/7909/7831 7931/8010/7931 +f 7831/7909/7831 7832/7910/7832 7931/8010/7931 +f 7931/8010/7931 7832/7910/7832 7932/8011/7932 +f 7832/7910/7832 7833/7911/7833 7932/8011/7932 +f 7932/8011/7932 7833/7911/7833 7933/8012/7933 +f 7833/7911/7833 7834/7912/7834 7933/8012/7933 +f 7933/8012/7933 7834/7912/7834 7934/8013/7934 +f 7834/7912/7834 7835/7913/7835 7934/8013/7934 +f 7934/8013/7934 7835/7913/7835 7935/8014/7935 +f 7835/7913/7835 7836/7914/7836 7935/8014/7935 +f 7935/8014/7935 7836/7914/7836 7936/8015/7936 +f 7836/7914/7836 7837/7915/7837 7936/8015/7936 +f 7936/8015/7936 7837/7915/7837 7937/8016/7937 +f 7837/7915/7837 7838/7916/7838 7937/8016/7937 +f 7937/8016/7937 7838/7916/7838 7938/8017/7938 +f 7838/7916/7838 7839/7917/7839 7938/8017/7938 +f 7938/8017/7938 7839/7917/7839 7939/8018/7939 +f 7839/7917/7839 7840/7918/7840 7939/8018/7939 +f 7939/8018/7939 7840/7918/7840 7940/8019/7940 +f 7840/7918/7840 7841/7919/7841 7940/8019/7940 +f 7940/8019/7940 7841/7919/7841 7941/8020/7941 +f 7841/7919/7841 7842/7920/7842 7941/8020/7941 +f 7941/8020/7941 7842/7920/7842 7942/8021/7942 +f 7842/7920/7842 7843/7921/7843 7942/8021/7942 +f 7942/8021/7942 7843/7921/7843 7943/8022/7943 +f 7843/7921/7843 7844/7922/7844 7943/8022/7943 +f 7943/8022/7943 7844/7922/7844 7944/8023/7944 +f 7844/7922/7844 7845/7923/7845 7944/8023/7944 +f 7944/8023/7944 7845/7923/7845 7945/8024/7945 +f 7845/7923/7845 7846/7924/7846 7945/8024/7945 +f 7945/8024/7945 7846/7924/7846 7946/8025/7946 +f 7846/7924/7846 7847/7925/7847 7946/8025/7946 +f 7946/8025/7946 7847/7925/7847 7947/8026/7947 +f 7847/7925/7847 7848/7926/7848 7947/8026/7947 +f 7947/8026/7947 7848/7926/7848 7948/8027/7948 +f 7848/7926/7848 7849/7927/7849 7948/8027/7948 +f 7948/8027/7948 7849/7927/7849 7949/8028/7949 +f 7849/7927/7849 7850/7928/7850 7949/8028/7949 +f 7949/8028/7949 7850/7928/7850 7950/8029/7950 +f 7850/7928/7850 7851/7929/7851 7950/8029/7950 +f 7950/8029/7950 7851/7929/7851 7951/8030/7951 +f 7851/7929/7851 7852/7930/7852 7951/8030/7951 +f 7951/8030/7951 7852/7930/7852 7952/8031/7952 +f 7852/7930/7852 7853/7931/7853 7952/8031/7952 +f 7952/8031/7952 7853/7931/7853 7953/8032/7953 +f 7853/7931/7853 7854/7932/7854 7953/8032/7953 +f 7953/8032/7953 7854/7932/7854 7954/8033/7954 +f 7854/7932/7854 7855/7933/7855 7954/8033/7954 +f 7954/8033/7954 7855/7933/7855 7955/8034/7955 +f 7855/7933/7855 7856/7934/7856 7955/8034/7955 +f 7955/8034/7955 7856/7934/7856 7956/8035/7956 +f 7856/7934/7856 7857/7935/7857 7956/8035/7956 +f 7956/8035/7956 7857/7935/7857 7957/8036/7957 +f 7857/7935/7857 7858/7936/7858 7957/8036/7957 +f 7957/8036/7957 7858/7936/7858 7958/8037/7958 +f 7858/7936/7858 7859/7937/7859 7958/8037/7958 +f 7958/8037/7958 7859/7937/7859 7959/8038/7959 +f 7859/7937/7859 7860/7938/7860 7959/8038/7959 +f 7959/8038/7959 7860/7938/7860 7960/8039/7960 +f 7860/7938/7860 7861/7939/7861 7960/8039/7960 +f 7960/8039/7960 7861/7939/7861 7961/8040/7961 +f 7861/7939/7861 7862/7940/7862 7961/8040/7961 +f 7961/8040/7961 7862/7940/7862 7962/8041/7962 +f 7862/7940/7862 7863/7941/7863 7962/8041/7962 +f 7962/8041/7962 7863/7941/7863 7963/8042/7963 +f 7863/7941/7863 7864/7942/7864 7963/8042/7963 +f 7963/8042/7963 7864/7942/7864 7964/8043/7964 +f 7864/7942/7864 7865/7943/7865 7964/8043/7964 +f 7964/8043/7964 7865/7943/7865 7965/8044/7965 +f 7865/7943/7865 7866/7944/7866 7965/8044/7965 +f 7965/8044/7965 7866/7944/7866 7966/8045/7966 +f 7866/7944/7866 7867/7945/7867 7966/8045/7966 +f 7966/8045/7966 7867/7945/7867 7967/8046/7967 +f 7867/7945/7867 7868/7946/7868 7967/8046/7967 +f 7967/8046/7967 7868/7946/7868 7968/8047/7968 +f 7868/7946/7868 7869/7947/7869 7968/8047/7968 +f 7968/8047/7968 7869/7947/7869 7969/8048/7969 +f 7869/7947/7869 7870/7948/7870 7969/8048/7969 +f 7969/8048/7969 7870/7948/7870 7970/8049/7970 +f 7870/7948/7870 7871/7949/7871 7970/8049/7970 +f 7970/8049/7970 7871/7949/7871 7971/8050/7971 +f 7871/7949/7871 7872/7950/7872 7971/8050/7971 +f 7971/8050/7971 7872/7950/7872 7972/8051/7972 +f 7872/7950/7872 7873/7951/7873 7972/8051/7972 +f 7972/8051/7972 7873/7951/7873 7973/8052/7973 +f 7873/7951/7873 7874/7952/7874 7973/8052/7973 +f 7973/8052/7973 7874/7952/7874 7974/8053/7974 +f 7874/7952/7874 7875/7953/7875 7974/8053/7974 +f 7974/8053/7974 7875/7953/7875 7975/8054/7975 +f 7875/7953/7875 7876/7954/7876 7975/8054/7975 +f 7975/8054/7975 7876/7954/7876 7976/8055/7976 +f 7876/7954/7876 7877/7955/7877 7976/8055/7976 +f 7976/8055/7976 7877/7955/7877 7977/8056/7977 +f 7877/7955/7877 7878/7956/7878 7977/8056/7977 +f 7977/8056/7977 7878/7956/7878 7978/8057/7978 +f 7878/7956/7878 7879/7957/7879 7978/8057/7978 +f 7978/8057/7978 7879/7957/7879 7979/8058/7979 +f 7879/7957/7879 7880/7958/7880 7979/8058/7979 +f 7979/8058/7979 7880/7958/7880 7980/8059/7980 +f 7880/7958/7880 7881/7959/7881 7980/8059/7980 +f 7980/8059/7980 7881/7959/7881 7981/8060/7981 +f 7881/7959/7881 7882/7960/7882 7981/8060/7981 +f 7981/8060/7981 7882/7960/7882 7982/8061/7982 +f 7882/7960/7882 7883/7961/7883 7982/8061/7982 +f 7982/8061/7982 7883/7961/7883 7983/8062/7983 +f 7883/7961/7883 7884/7962/7884 7983/8062/7983 +f 7983/8062/7983 7884/7962/7884 7984/8063/7984 +f 7884/7962/7884 7885/7963/7885 7984/8063/7984 +f 7984/8063/7984 7885/7963/7885 7985/8064/7985 +f 7885/7963/7885 7886/7964/7886 7985/8064/7985 +f 7985/8064/7985 7886/7964/7886 7986/8065/7986 +f 7886/7964/7886 7887/7965/7887 7986/8065/7986 +f 7986/8065/7986 7887/7965/7887 7987/8066/7987 +f 7887/7965/7887 7888/7966/7888 7987/8066/7987 +f 7987/8066/7987 7888/7966/7888 7988/8067/7988 +f 7888/7966/7888 7889/7967/7889 7988/8067/7988 +f 7988/8067/7988 7889/7967/7889 7989/8068/7989 +f 7889/7967/7889 7890/7968/7890 7989/8068/7989 +f 7989/8068/7989 7890/7968/7890 7990/8069/7990 +f 7890/7968/7890 7891/7969/7891 7990/8069/7990 +f 7990/8069/7990 7891/7969/7891 7991/8070/7991 +f 7891/7969/7891 7892/7970/7892 7991/8070/7991 +f 7991/8070/7991 7892/7970/7892 7992/8071/7992 +f 7892/7970/7892 7893/7971/7893 7992/8071/7992 +f 7992/8071/7992 7893/7971/7893 7993/8072/7993 +f 7893/7971/7893 7894/7972/7894 7993/8072/7993 +f 7993/8072/7993 7894/7972/7894 7994/8073/7994 +f 7894/7972/7894 7895/7973/7895 7994/8073/7994 +f 7994/8073/7994 7895/7973/7895 7995/8074/7995 +f 7895/7973/7895 7896/7974/7896 7995/8074/7995 +f 7995/8074/7995 7896/7974/7896 7996/8075/7996 +f 7896/7974/7896 7897/7975/7897 7996/8075/7996 +f 7996/8075/7996 7897/7975/7897 7997/8076/7997 +f 7897/7975/7897 7898/7976/7898 7997/8076/7997 +f 7997/8076/7997 7898/7976/7898 7998/8077/7998 +f 7898/7976/7898 7899/7977/7899 7998/8077/7998 +f 7998/8077/7998 7899/7977/7899 7999/8078/7999 +f 7899/7977/7899 7900/7978/7900 7999/8078/7999 +f 7999/8078/7999 7900/7978/7900 8000/8079/8000 +f 7900/7978/7900 7801/7979/7801 8000/8079/8000 +f 8000/8079/8000 7801/7979/7801 7901/8080/7901 +f 7901/7980/7901 7902/7981/7902 8001/8081/8001 +f 8001/8081/8001 7902/7981/7902 8002/8082/8002 +f 7902/7981/7902 7903/7982/7903 8002/8082/8002 +f 8002/8082/8002 7903/7982/7903 8003/8083/8003 +f 7903/7982/7903 7904/7983/7904 8003/8083/8003 +f 8003/8083/8003 7904/7983/7904 8004/8084/8004 +f 7904/7983/7904 7905/7984/7905 8004/8084/8004 +f 8004/8084/8004 7905/7984/7905 8005/8085/8005 +f 7905/7984/7905 7906/7985/7906 8005/8085/8005 +f 8005/8085/8005 7906/7985/7906 8006/8086/8006 +f 7906/7985/7906 7907/7986/7907 8006/8086/8006 +f 8006/8086/8006 7907/7986/7907 8007/8087/8007 +f 7907/7986/7907 7908/7987/7908 8007/8087/8007 +f 8007/8087/8007 7908/7987/7908 8008/8088/8008 +f 7908/7987/7908 7909/7988/7909 8008/8088/8008 +f 8008/8088/8008 7909/7988/7909 8009/8089/8009 +f 7909/7988/7909 7910/7989/7910 8009/8089/8009 +f 8009/8089/8009 7910/7989/7910 8010/8090/8010 +f 7910/7989/7910 7911/7990/7911 8010/8090/8010 +f 8010/8090/8010 7911/7990/7911 8011/8091/8011 +f 7911/7990/7911 7912/7991/7912 8011/8091/8011 +f 8011/8091/8011 7912/7991/7912 8012/8092/8012 +f 7912/7991/7912 7913/7992/7913 8012/8092/8012 +f 8012/8092/8012 7913/7992/7913 8013/8093/8013 +f 7913/7992/7913 7914/7993/7914 8013/8093/8013 +f 8013/8093/8013 7914/7993/7914 8014/8094/8014 +f 7914/7993/7914 7915/7994/7915 8014/8094/8014 +f 8014/8094/8014 7915/7994/7915 8015/8095/8015 +f 7915/7994/7915 7916/7995/7916 8015/8095/8015 +f 8015/8095/8015 7916/7995/7916 8016/8096/8016 +f 7916/7995/7916 7917/7996/7917 8016/8096/8016 +f 8016/8096/8016 7917/7996/7917 8017/8097/8017 +f 7917/7996/7917 7918/7997/7918 8017/8097/8017 +f 8017/8097/8017 7918/7997/7918 8018/8098/8018 +f 7918/7997/7918 7919/7998/7919 8018/8098/8018 +f 8018/8098/8018 7919/7998/7919 8019/8099/8019 +f 7919/7998/7919 7920/7999/7920 8019/8099/8019 +f 8019/8099/8019 7920/7999/7920 8020/8100/8020 +f 7920/7999/7920 7921/8000/7921 8020/8100/8020 +f 8020/8100/8020 7921/8000/7921 8021/8101/8021 +f 7921/8000/7921 7922/8001/7922 8021/8101/8021 +f 8021/8101/8021 7922/8001/7922 8022/8102/8022 +f 7922/8001/7922 7923/8002/7923 8022/8102/8022 +f 8022/8102/8022 7923/8002/7923 8023/8103/8023 +f 7923/8002/7923 7924/8003/7924 8023/8103/8023 +f 8023/8103/8023 7924/8003/7924 8024/8104/8024 +f 7924/8003/7924 7925/8004/7925 8024/8104/8024 +f 8024/8104/8024 7925/8004/7925 8025/8105/8025 +f 7925/8004/7925 7926/8005/7926 8025/8105/8025 +f 8025/8105/8025 7926/8005/7926 8026/8106/8026 +f 7926/8005/7926 7927/8006/7927 8026/8106/8026 +f 8026/8106/8026 7927/8006/7927 8027/8107/8027 +f 7927/8006/7927 7928/8007/7928 8027/8107/8027 +f 8027/8107/8027 7928/8007/7928 8028/8108/8028 +f 7928/8007/7928 7929/8008/7929 8028/8108/8028 +f 8028/8108/8028 7929/8008/7929 8029/8109/8029 +f 7929/8008/7929 7930/8009/7930 8029/8109/8029 +f 8029/8109/8029 7930/8009/7930 8030/8110/8030 +f 7930/8009/7930 7931/8010/7931 8030/8110/8030 +f 8030/8110/8030 7931/8010/7931 8031/8111/8031 +f 7931/8010/7931 7932/8011/7932 8031/8111/8031 +f 8031/8111/8031 7932/8011/7932 8032/8112/8032 +f 7932/8011/7932 7933/8012/7933 8032/8112/8032 +f 8032/8112/8032 7933/8012/7933 8033/8113/8033 +f 7933/8012/7933 7934/8013/7934 8033/8113/8033 +f 8033/8113/8033 7934/8013/7934 8034/8114/8034 +f 7934/8013/7934 7935/8014/7935 8034/8114/8034 +f 8034/8114/8034 7935/8014/7935 8035/8115/8035 +f 7935/8014/7935 7936/8015/7936 8035/8115/8035 +f 8035/8115/8035 7936/8015/7936 8036/8116/8036 +f 7936/8015/7936 7937/8016/7937 8036/8116/8036 +f 8036/8116/8036 7937/8016/7937 8037/8117/8037 +f 7937/8016/7937 7938/8017/7938 8037/8117/8037 +f 8037/8117/8037 7938/8017/7938 8038/8118/8038 +f 7938/8017/7938 7939/8018/7939 8038/8118/8038 +f 8038/8118/8038 7939/8018/7939 8039/8119/8039 +f 7939/8018/7939 7940/8019/7940 8039/8119/8039 +f 8039/8119/8039 7940/8019/7940 8040/8120/8040 +f 7940/8019/7940 7941/8020/7941 8040/8120/8040 +f 8040/8120/8040 7941/8020/7941 8041/8121/8041 +f 7941/8020/7941 7942/8021/7942 8041/8121/8041 +f 8041/8121/8041 7942/8021/7942 8042/8122/8042 +f 7942/8021/7942 7943/8022/7943 8042/8122/8042 +f 8042/8122/8042 7943/8022/7943 8043/8123/8043 +f 7943/8022/7943 7944/8023/7944 8043/8123/8043 +f 8043/8123/8043 7944/8023/7944 8044/8124/8044 +f 7944/8023/7944 7945/8024/7945 8044/8124/8044 +f 8044/8124/8044 7945/8024/7945 8045/8125/8045 +f 7945/8024/7945 7946/8025/7946 8045/8125/8045 +f 8045/8125/8045 7946/8025/7946 8046/8126/8046 +f 7946/8025/7946 7947/8026/7947 8046/8126/8046 +f 8046/8126/8046 7947/8026/7947 8047/8127/8047 +f 7947/8026/7947 7948/8027/7948 8047/8127/8047 +f 8047/8127/8047 7948/8027/7948 8048/8128/8048 +f 7948/8027/7948 7949/8028/7949 8048/8128/8048 +f 8048/8128/8048 7949/8028/7949 8049/8129/8049 +f 7949/8028/7949 7950/8029/7950 8049/8129/8049 +f 8049/8129/8049 7950/8029/7950 8050/8130/8050 +f 7950/8029/7950 7951/8030/7951 8050/8130/8050 +f 8050/8130/8050 7951/8030/7951 8051/8131/8051 +f 7951/8030/7951 7952/8031/7952 8051/8131/8051 +f 8051/8131/8051 7952/8031/7952 8052/8132/8052 +f 7952/8031/7952 7953/8032/7953 8052/8132/8052 +f 8052/8132/8052 7953/8032/7953 8053/8133/8053 +f 7953/8032/7953 7954/8033/7954 8053/8133/8053 +f 8053/8133/8053 7954/8033/7954 8054/8134/8054 +f 7954/8033/7954 7955/8034/7955 8054/8134/8054 +f 8054/8134/8054 7955/8034/7955 8055/8135/8055 +f 7955/8034/7955 7956/8035/7956 8055/8135/8055 +f 8055/8135/8055 7956/8035/7956 8056/8136/8056 +f 7956/8035/7956 7957/8036/7957 8056/8136/8056 +f 8056/8136/8056 7957/8036/7957 8057/8137/8057 +f 7957/8036/7957 7958/8037/7958 8057/8137/8057 +f 8057/8137/8057 7958/8037/7958 8058/8138/8058 +f 7958/8037/7958 7959/8038/7959 8058/8138/8058 +f 8058/8138/8058 7959/8038/7959 8059/8139/8059 +f 7959/8038/7959 7960/8039/7960 8059/8139/8059 +f 8059/8139/8059 7960/8039/7960 8060/8140/8060 +f 7960/8039/7960 7961/8040/7961 8060/8140/8060 +f 8060/8140/8060 7961/8040/7961 8061/8141/8061 +f 7961/8040/7961 7962/8041/7962 8061/8141/8061 +f 8061/8141/8061 7962/8041/7962 8062/8142/8062 +f 7962/8041/7962 7963/8042/7963 8062/8142/8062 +f 8062/8142/8062 7963/8042/7963 8063/8143/8063 +f 7963/8042/7963 7964/8043/7964 8063/8143/8063 +f 8063/8143/8063 7964/8043/7964 8064/8144/8064 +f 7964/8043/7964 7965/8044/7965 8064/8144/8064 +f 8064/8144/8064 7965/8044/7965 8065/8145/8065 +f 7965/8044/7965 7966/8045/7966 8065/8145/8065 +f 8065/8145/8065 7966/8045/7966 8066/8146/8066 +f 7966/8045/7966 7967/8046/7967 8066/8146/8066 +f 8066/8146/8066 7967/8046/7967 8067/8147/8067 +f 7967/8046/7967 7968/8047/7968 8067/8147/8067 +f 8067/8147/8067 7968/8047/7968 8068/8148/8068 +f 7968/8047/7968 7969/8048/7969 8068/8148/8068 +f 8068/8148/8068 7969/8048/7969 8069/8149/8069 +f 7969/8048/7969 7970/8049/7970 8069/8149/8069 +f 8069/8149/8069 7970/8049/7970 8070/8150/8070 +f 7970/8049/7970 7971/8050/7971 8070/8150/8070 +f 8070/8150/8070 7971/8050/7971 8071/8151/8071 +f 7971/8050/7971 7972/8051/7972 8071/8151/8071 +f 8071/8151/8071 7972/8051/7972 8072/8152/8072 +f 7972/8051/7972 7973/8052/7973 8072/8152/8072 +f 8072/8152/8072 7973/8052/7973 8073/8153/8073 +f 7973/8052/7973 7974/8053/7974 8073/8153/8073 +f 8073/8153/8073 7974/8053/7974 8074/8154/8074 +f 7974/8053/7974 7975/8054/7975 8074/8154/8074 +f 8074/8154/8074 7975/8054/7975 8075/8155/8075 +f 7975/8054/7975 7976/8055/7976 8075/8155/8075 +f 8075/8155/8075 7976/8055/7976 8076/8156/8076 +f 7976/8055/7976 7977/8056/7977 8076/8156/8076 +f 8076/8156/8076 7977/8056/7977 8077/8157/8077 +f 7977/8056/7977 7978/8057/7978 8077/8157/8077 +f 8077/8157/8077 7978/8057/7978 8078/8158/8078 +f 7978/8057/7978 7979/8058/7979 8078/8158/8078 +f 8078/8158/8078 7979/8058/7979 8079/8159/8079 +f 7979/8058/7979 7980/8059/7980 8079/8159/8079 +f 8079/8159/8079 7980/8059/7980 8080/8160/8080 +f 7980/8059/7980 7981/8060/7981 8080/8160/8080 +f 8080/8160/8080 7981/8060/7981 8081/8161/8081 +f 7981/8060/7981 7982/8061/7982 8081/8161/8081 +f 8081/8161/8081 7982/8061/7982 8082/8162/8082 +f 7982/8061/7982 7983/8062/7983 8082/8162/8082 +f 8082/8162/8082 7983/8062/7983 8083/8163/8083 +f 7983/8062/7983 7984/8063/7984 8083/8163/8083 +f 8083/8163/8083 7984/8063/7984 8084/8164/8084 +f 7984/8063/7984 7985/8064/7985 8084/8164/8084 +f 8084/8164/8084 7985/8064/7985 8085/8165/8085 +f 7985/8064/7985 7986/8065/7986 8085/8165/8085 +f 8085/8165/8085 7986/8065/7986 8086/8166/8086 +f 7986/8065/7986 7987/8066/7987 8086/8166/8086 +f 8086/8166/8086 7987/8066/7987 8087/8167/8087 +f 7987/8066/7987 7988/8067/7988 8087/8167/8087 +f 8087/8167/8087 7988/8067/7988 8088/8168/8088 +f 7988/8067/7988 7989/8068/7989 8088/8168/8088 +f 8088/8168/8088 7989/8068/7989 8089/8169/8089 +f 7989/8068/7989 7990/8069/7990 8089/8169/8089 +f 8089/8169/8089 7990/8069/7990 8090/8170/8090 +f 7990/8069/7990 7991/8070/7991 8090/8170/8090 +f 8090/8170/8090 7991/8070/7991 8091/8171/8091 +f 7991/8070/7991 7992/8071/7992 8091/8171/8091 +f 8091/8171/8091 7992/8071/7992 8092/8172/8092 +f 7992/8071/7992 7993/8072/7993 8092/8172/8092 +f 8092/8172/8092 7993/8072/7993 8093/8173/8093 +f 7993/8072/7993 7994/8073/7994 8093/8173/8093 +f 8093/8173/8093 7994/8073/7994 8094/8174/8094 +f 7994/8073/7994 7995/8074/7995 8094/8174/8094 +f 8094/8174/8094 7995/8074/7995 8095/8175/8095 +f 7995/8074/7995 7996/8075/7996 8095/8175/8095 +f 8095/8175/8095 7996/8075/7996 8096/8176/8096 +f 7996/8075/7996 7997/8076/7997 8096/8176/8096 +f 8096/8176/8096 7997/8076/7997 8097/8177/8097 +f 7997/8076/7997 7998/8077/7998 8097/8177/8097 +f 8097/8177/8097 7998/8077/7998 8098/8178/8098 +f 7998/8077/7998 7999/8078/7999 8098/8178/8098 +f 8098/8178/8098 7999/8078/7999 8099/8179/8099 +f 7999/8078/7999 8000/8079/8000 8099/8179/8099 +f 8099/8179/8099 8000/8079/8000 8100/8180/8100 +f 8000/8079/8000 7901/8080/7901 8100/8180/8100 +f 8100/8180/8100 7901/8080/7901 8001/8181/8001 +f 8001/8081/8001 8002/8082/8002 8101/8182/8101 +f 8101/8182/8101 8002/8082/8002 8102/8183/8102 +f 8002/8082/8002 8003/8083/8003 8102/8183/8102 +f 8102/8183/8102 8003/8083/8003 8103/8184/8103 +f 8003/8083/8003 8004/8084/8004 8103/8184/8103 +f 8103/8184/8103 8004/8084/8004 8104/8185/8104 +f 8004/8084/8004 8005/8085/8005 8104/8185/8104 +f 8104/8185/8104 8005/8085/8005 8105/8186/8105 +f 8005/8085/8005 8006/8086/8006 8105/8186/8105 +f 8105/8186/8105 8006/8086/8006 8106/8187/8106 +f 8006/8086/8006 8007/8087/8007 8106/8187/8106 +f 8106/8187/8106 8007/8087/8007 8107/8188/8107 +f 8007/8087/8007 8008/8088/8008 8107/8188/8107 +f 8107/8188/8107 8008/8088/8008 8108/8189/8108 +f 8008/8088/8008 8009/8089/8009 8108/8189/8108 +f 8108/8189/8108 8009/8089/8009 8109/8190/8109 +f 8009/8089/8009 8010/8090/8010 8109/8190/8109 +f 8109/8190/8109 8010/8090/8010 8110/8191/8110 +f 8010/8090/8010 8011/8091/8011 8110/8191/8110 +f 8110/8191/8110 8011/8091/8011 8111/8192/8111 +f 8011/8091/8011 8012/8092/8012 8111/8192/8111 +f 8111/8192/8111 8012/8092/8012 8112/8193/8112 +f 8012/8092/8012 8013/8093/8013 8112/8193/8112 +f 8112/8193/8112 8013/8093/8013 8113/8194/8113 +f 8013/8093/8013 8014/8094/8014 8113/8194/8113 +f 8113/8194/8113 8014/8094/8014 8114/8195/8114 +f 8014/8094/8014 8015/8095/8015 8114/8195/8114 +f 8114/8195/8114 8015/8095/8015 8115/8196/8115 +f 8015/8095/8015 8016/8096/8016 8115/8196/8115 +f 8115/8196/8115 8016/8096/8016 8116/8197/8116 +f 8016/8096/8016 8017/8097/8017 8116/8197/8116 +f 8116/8197/8116 8017/8097/8017 8117/8198/8117 +f 8017/8097/8017 8018/8098/8018 8117/8198/8117 +f 8117/8198/8117 8018/8098/8018 8118/8199/8118 +f 8018/8098/8018 8019/8099/8019 8118/8199/8118 +f 8118/8199/8118 8019/8099/8019 8119/8200/8119 +f 8019/8099/8019 8020/8100/8020 8119/8200/8119 +f 8119/8200/8119 8020/8100/8020 8120/8201/8120 +f 8020/8100/8020 8021/8101/8021 8120/8201/8120 +f 8120/8201/8120 8021/8101/8021 8121/8202/8121 +f 8021/8101/8021 8022/8102/8022 8121/8202/8121 +f 8121/8202/8121 8022/8102/8022 8122/8203/8122 +f 8022/8102/8022 8023/8103/8023 8122/8203/8122 +f 8122/8203/8122 8023/8103/8023 8123/8204/8123 +f 8023/8103/8023 8024/8104/8024 8123/8204/8123 +f 8123/8204/8123 8024/8104/8024 8124/8205/8124 +f 8024/8104/8024 8025/8105/8025 8124/8205/8124 +f 8124/8205/8124 8025/8105/8025 8125/8206/8125 +f 8025/8105/8025 8026/8106/8026 8125/8206/8125 +f 8125/8206/8125 8026/8106/8026 8126/8207/8126 +f 8026/8106/8026 8027/8107/8027 8126/8207/8126 +f 8126/8207/8126 8027/8107/8027 8127/8208/8127 +f 8027/8107/8027 8028/8108/8028 8127/8208/8127 +f 8127/8208/8127 8028/8108/8028 8128/8209/8128 +f 8028/8108/8028 8029/8109/8029 8128/8209/8128 +f 8128/8209/8128 8029/8109/8029 8129/8210/8129 +f 8029/8109/8029 8030/8110/8030 8129/8210/8129 +f 8129/8210/8129 8030/8110/8030 8130/8211/8130 +f 8030/8110/8030 8031/8111/8031 8130/8211/8130 +f 8130/8211/8130 8031/8111/8031 8131/8212/8131 +f 8031/8111/8031 8032/8112/8032 8131/8212/8131 +f 8131/8212/8131 8032/8112/8032 8132/8213/8132 +f 8032/8112/8032 8033/8113/8033 8132/8213/8132 +f 8132/8213/8132 8033/8113/8033 8133/8214/8133 +f 8033/8113/8033 8034/8114/8034 8133/8214/8133 +f 8133/8214/8133 8034/8114/8034 8134/8215/8134 +f 8034/8114/8034 8035/8115/8035 8134/8215/8134 +f 8134/8215/8134 8035/8115/8035 8135/8216/8135 +f 8035/8115/8035 8036/8116/8036 8135/8216/8135 +f 8135/8216/8135 8036/8116/8036 8136/8217/8136 +f 8036/8116/8036 8037/8117/8037 8136/8217/8136 +f 8136/8217/8136 8037/8117/8037 8137/8218/8137 +f 8037/8117/8037 8038/8118/8038 8137/8218/8137 +f 8137/8218/8137 8038/8118/8038 8138/8219/8138 +f 8038/8118/8038 8039/8119/8039 8138/8219/8138 +f 8138/8219/8138 8039/8119/8039 8139/8220/8139 +f 8039/8119/8039 8040/8120/8040 8139/8220/8139 +f 8139/8220/8139 8040/8120/8040 8140/8221/8140 +f 8040/8120/8040 8041/8121/8041 8140/8221/8140 +f 8140/8221/8140 8041/8121/8041 8141/8222/8141 +f 8041/8121/8041 8042/8122/8042 8141/8222/8141 +f 8141/8222/8141 8042/8122/8042 8142/8223/8142 +f 8042/8122/8042 8043/8123/8043 8142/8223/8142 +f 8142/8223/8142 8043/8123/8043 8143/8224/8143 +f 8043/8123/8043 8044/8124/8044 8143/8224/8143 +f 8143/8224/8143 8044/8124/8044 8144/8225/8144 +f 8044/8124/8044 8045/8125/8045 8144/8225/8144 +f 8144/8225/8144 8045/8125/8045 8145/8226/8145 +f 8045/8125/8045 8046/8126/8046 8145/8226/8145 +f 8145/8226/8145 8046/8126/8046 8146/8227/8146 +f 8046/8126/8046 8047/8127/8047 8146/8227/8146 +f 8146/8227/8146 8047/8127/8047 8147/8228/8147 +f 8047/8127/8047 8048/8128/8048 8147/8228/8147 +f 8147/8228/8147 8048/8128/8048 8148/8229/8148 +f 8048/8128/8048 8049/8129/8049 8148/8229/8148 +f 8148/8229/8148 8049/8129/8049 8149/8230/8149 +f 8049/8129/8049 8050/8130/8050 8149/8230/8149 +f 8149/8230/8149 8050/8130/8050 8150/8231/8150 +f 8050/8130/8050 8051/8131/8051 8150/8231/8150 +f 8150/8231/8150 8051/8131/8051 8151/8232/8151 +f 8051/8131/8051 8052/8132/8052 8151/8232/8151 +f 8151/8232/8151 8052/8132/8052 8152/8233/8152 +f 8052/8132/8052 8053/8133/8053 8152/8233/8152 +f 8152/8233/8152 8053/8133/8053 8153/8234/8153 +f 8053/8133/8053 8054/8134/8054 8153/8234/8153 +f 8153/8234/8153 8054/8134/8054 8154/8235/8154 +f 8054/8134/8054 8055/8135/8055 8154/8235/8154 +f 8154/8235/8154 8055/8135/8055 8155/8236/8155 +f 8055/8135/8055 8056/8136/8056 8155/8236/8155 +f 8155/8236/8155 8056/8136/8056 8156/8237/8156 +f 8056/8136/8056 8057/8137/8057 8156/8237/8156 +f 8156/8237/8156 8057/8137/8057 8157/8238/8157 +f 8057/8137/8057 8058/8138/8058 8157/8238/8157 +f 8157/8238/8157 8058/8138/8058 8158/8239/8158 +f 8058/8138/8058 8059/8139/8059 8158/8239/8158 +f 8158/8239/8158 8059/8139/8059 8159/8240/8159 +f 8059/8139/8059 8060/8140/8060 8159/8240/8159 +f 8159/8240/8159 8060/8140/8060 8160/8241/8160 +f 8060/8140/8060 8061/8141/8061 8160/8241/8160 +f 8160/8241/8160 8061/8141/8061 8161/8242/8161 +f 8061/8141/8061 8062/8142/8062 8161/8242/8161 +f 8161/8242/8161 8062/8142/8062 8162/8243/8162 +f 8062/8142/8062 8063/8143/8063 8162/8243/8162 +f 8162/8243/8162 8063/8143/8063 8163/8244/8163 +f 8063/8143/8063 8064/8144/8064 8163/8244/8163 +f 8163/8244/8163 8064/8144/8064 8164/8245/8164 +f 8064/8144/8064 8065/8145/8065 8164/8245/8164 +f 8164/8245/8164 8065/8145/8065 8165/8246/8165 +f 8065/8145/8065 8066/8146/8066 8165/8246/8165 +f 8165/8246/8165 8066/8146/8066 8166/8247/8166 +f 8066/8146/8066 8067/8147/8067 8166/8247/8166 +f 8166/8247/8166 8067/8147/8067 8167/8248/8167 +f 8067/8147/8067 8068/8148/8068 8167/8248/8167 +f 8167/8248/8167 8068/8148/8068 8168/8249/8168 +f 8068/8148/8068 8069/8149/8069 8168/8249/8168 +f 8168/8249/8168 8069/8149/8069 8169/8250/8169 +f 8069/8149/8069 8070/8150/8070 8169/8250/8169 +f 8169/8250/8169 8070/8150/8070 8170/8251/8170 +f 8070/8150/8070 8071/8151/8071 8170/8251/8170 +f 8170/8251/8170 8071/8151/8071 8171/8252/8171 +f 8071/8151/8071 8072/8152/8072 8171/8252/8171 +f 8171/8252/8171 8072/8152/8072 8172/8253/8172 +f 8072/8152/8072 8073/8153/8073 8172/8253/8172 +f 8172/8253/8172 8073/8153/8073 8173/8254/8173 +f 8073/8153/8073 8074/8154/8074 8173/8254/8173 +f 8173/8254/8173 8074/8154/8074 8174/8255/8174 +f 8074/8154/8074 8075/8155/8075 8174/8255/8174 +f 8174/8255/8174 8075/8155/8075 8175/8256/8175 +f 8075/8155/8075 8076/8156/8076 8175/8256/8175 +f 8175/8256/8175 8076/8156/8076 8176/8257/8176 +f 8076/8156/8076 8077/8157/8077 8176/8257/8176 +f 8176/8257/8176 8077/8157/8077 8177/8258/8177 +f 8077/8157/8077 8078/8158/8078 8177/8258/8177 +f 8177/8258/8177 8078/8158/8078 8178/8259/8178 +f 8078/8158/8078 8079/8159/8079 8178/8259/8178 +f 8178/8259/8178 8079/8159/8079 8179/8260/8179 +f 8079/8159/8079 8080/8160/8080 8179/8260/8179 +f 8179/8260/8179 8080/8160/8080 8180/8261/8180 +f 8080/8160/8080 8081/8161/8081 8180/8261/8180 +f 8180/8261/8180 8081/8161/8081 8181/8262/8181 +f 8081/8161/8081 8082/8162/8082 8181/8262/8181 +f 8181/8262/8181 8082/8162/8082 8182/8263/8182 +f 8082/8162/8082 8083/8163/8083 8182/8263/8182 +f 8182/8263/8182 8083/8163/8083 8183/8264/8183 +f 8083/8163/8083 8084/8164/8084 8183/8264/8183 +f 8183/8264/8183 8084/8164/8084 8184/8265/8184 +f 8084/8164/8084 8085/8165/8085 8184/8265/8184 +f 8184/8265/8184 8085/8165/8085 8185/8266/8185 +f 8085/8165/8085 8086/8166/8086 8185/8266/8185 +f 8185/8266/8185 8086/8166/8086 8186/8267/8186 +f 8086/8166/8086 8087/8167/8087 8186/8267/8186 +f 8186/8267/8186 8087/8167/8087 8187/8268/8187 +f 8087/8167/8087 8088/8168/8088 8187/8268/8187 +f 8187/8268/8187 8088/8168/8088 8188/8269/8188 +f 8088/8168/8088 8089/8169/8089 8188/8269/8188 +f 8188/8269/8188 8089/8169/8089 8189/8270/8189 +f 8089/8169/8089 8090/8170/8090 8189/8270/8189 +f 8189/8270/8189 8090/8170/8090 8190/8271/8190 +f 8090/8170/8090 8091/8171/8091 8190/8271/8190 +f 8190/8271/8190 8091/8171/8091 8191/8272/8191 +f 8091/8171/8091 8092/8172/8092 8191/8272/8191 +f 8191/8272/8191 8092/8172/8092 8192/8273/8192 +f 8092/8172/8092 8093/8173/8093 8192/8273/8192 +f 8192/8273/8192 8093/8173/8093 8193/8274/8193 +f 8093/8173/8093 8094/8174/8094 8193/8274/8193 +f 8193/8274/8193 8094/8174/8094 8194/8275/8194 +f 8094/8174/8094 8095/8175/8095 8194/8275/8194 +f 8194/8275/8194 8095/8175/8095 8195/8276/8195 +f 8095/8175/8095 8096/8176/8096 8195/8276/8195 +f 8195/8276/8195 8096/8176/8096 8196/8277/8196 +f 8096/8176/8096 8097/8177/8097 8196/8277/8196 +f 8196/8277/8196 8097/8177/8097 8197/8278/8197 +f 8097/8177/8097 8098/8178/8098 8197/8278/8197 +f 8197/8278/8197 8098/8178/8098 8198/8279/8198 +f 8098/8178/8098 8099/8179/8099 8198/8279/8198 +f 8198/8279/8198 8099/8179/8099 8199/8280/8199 +f 8099/8179/8099 8100/8180/8100 8199/8280/8199 +f 8199/8280/8199 8100/8180/8100 8200/8281/8200 +f 8100/8180/8100 8001/8181/8001 8200/8281/8200 +f 8200/8281/8200 8001/8181/8001 8101/8282/8101 +f 8101/8182/8101 8102/8183/8102 8201/8283/8201 +f 8201/8283/8201 8102/8183/8102 8202/8284/8202 +f 8102/8183/8102 8103/8184/8103 8202/8284/8202 +f 8202/8284/8202 8103/8184/8103 8203/8285/8203 +f 8103/8184/8103 8104/8185/8104 8203/8285/8203 +f 8203/8285/8203 8104/8185/8104 8204/8286/8204 +f 8104/8185/8104 8105/8186/8105 8204/8286/8204 +f 8204/8286/8204 8105/8186/8105 8205/8287/8205 +f 8105/8186/8105 8106/8187/8106 8205/8287/8205 +f 8205/8287/8205 8106/8187/8106 8206/8288/8206 +f 8106/8187/8106 8107/8188/8107 8206/8288/8206 +f 8206/8288/8206 8107/8188/8107 8207/8289/8207 +f 8107/8188/8107 8108/8189/8108 8207/8289/8207 +f 8207/8289/8207 8108/8189/8108 8208/8290/8208 +f 8108/8189/8108 8109/8190/8109 8208/8290/8208 +f 8208/8290/8208 8109/8190/8109 8209/8291/8209 +f 8109/8190/8109 8110/8191/8110 8209/8291/8209 +f 8209/8291/8209 8110/8191/8110 8210/8292/8210 +f 8110/8191/8110 8111/8192/8111 8210/8292/8210 +f 8210/8292/8210 8111/8192/8111 8211/8293/8211 +f 8111/8192/8111 8112/8193/8112 8211/8293/8211 +f 8211/8293/8211 8112/8193/8112 8212/8294/8212 +f 8112/8193/8112 8113/8194/8113 8212/8294/8212 +f 8212/8294/8212 8113/8194/8113 8213/8295/8213 +f 8113/8194/8113 8114/8195/8114 8213/8295/8213 +f 8213/8295/8213 8114/8195/8114 8214/8296/8214 +f 8114/8195/8114 8115/8196/8115 8214/8296/8214 +f 8214/8296/8214 8115/8196/8115 8215/8297/8215 +f 8115/8196/8115 8116/8197/8116 8215/8297/8215 +f 8215/8297/8215 8116/8197/8116 8216/8298/8216 +f 8116/8197/8116 8117/8198/8117 8216/8298/8216 +f 8216/8298/8216 8117/8198/8117 8217/8299/8217 +f 8117/8198/8117 8118/8199/8118 8217/8299/8217 +f 8217/8299/8217 8118/8199/8118 8218/8300/8218 +f 8118/8199/8118 8119/8200/8119 8218/8300/8218 +f 8218/8300/8218 8119/8200/8119 8219/8301/8219 +f 8119/8200/8119 8120/8201/8120 8219/8301/8219 +f 8219/8301/8219 8120/8201/8120 8220/8302/8220 +f 8120/8201/8120 8121/8202/8121 8220/8302/8220 +f 8220/8302/8220 8121/8202/8121 8221/8303/8221 +f 8121/8202/8121 8122/8203/8122 8221/8303/8221 +f 8221/8303/8221 8122/8203/8122 8222/8304/8222 +f 8122/8203/8122 8123/8204/8123 8222/8304/8222 +f 8222/8304/8222 8123/8204/8123 8223/8305/8223 +f 8123/8204/8123 8124/8205/8124 8223/8305/8223 +f 8223/8305/8223 8124/8205/8124 8224/8306/8224 +f 8124/8205/8124 8125/8206/8125 8224/8306/8224 +f 8224/8306/8224 8125/8206/8125 8225/8307/8225 +f 8125/8206/8125 8126/8207/8126 8225/8307/8225 +f 8225/8307/8225 8126/8207/8126 8226/8308/8226 +f 8126/8207/8126 8127/8208/8127 8226/8308/8226 +f 8226/8308/8226 8127/8208/8127 8227/8309/8227 +f 8127/8208/8127 8128/8209/8128 8227/8309/8227 +f 8227/8309/8227 8128/8209/8128 8228/8310/8228 +f 8128/8209/8128 8129/8210/8129 8228/8310/8228 +f 8228/8310/8228 8129/8210/8129 8229/8311/8229 +f 8129/8210/8129 8130/8211/8130 8229/8311/8229 +f 8229/8311/8229 8130/8211/8130 8230/8312/8230 +f 8130/8211/8130 8131/8212/8131 8230/8312/8230 +f 8230/8312/8230 8131/8212/8131 8231/8313/8231 +f 8131/8212/8131 8132/8213/8132 8231/8313/8231 +f 8231/8313/8231 8132/8213/8132 8232/8314/8232 +f 8132/8213/8132 8133/8214/8133 8232/8314/8232 +f 8232/8314/8232 8133/8214/8133 8233/8315/8233 +f 8133/8214/8133 8134/8215/8134 8233/8315/8233 +f 8233/8315/8233 8134/8215/8134 8234/8316/8234 +f 8134/8215/8134 8135/8216/8135 8234/8316/8234 +f 8234/8316/8234 8135/8216/8135 8235/8317/8235 +f 8135/8216/8135 8136/8217/8136 8235/8317/8235 +f 8235/8317/8235 8136/8217/8136 8236/8318/8236 +f 8136/8217/8136 8137/8218/8137 8236/8318/8236 +f 8236/8318/8236 8137/8218/8137 8237/8319/8237 +f 8137/8218/8137 8138/8219/8138 8237/8319/8237 +f 8237/8319/8237 8138/8219/8138 8238/8320/8238 +f 8138/8219/8138 8139/8220/8139 8238/8320/8238 +f 8238/8320/8238 8139/8220/8139 8239/8321/8239 +f 8139/8220/8139 8140/8221/8140 8239/8321/8239 +f 8239/8321/8239 8140/8221/8140 8240/8322/8240 +f 8140/8221/8140 8141/8222/8141 8240/8322/8240 +f 8240/8322/8240 8141/8222/8141 8241/8323/8241 +f 8141/8222/8141 8142/8223/8142 8241/8323/8241 +f 8241/8323/8241 8142/8223/8142 8242/8324/8242 +f 8142/8223/8142 8143/8224/8143 8242/8324/8242 +f 8242/8324/8242 8143/8224/8143 8243/8325/8243 +f 8143/8224/8143 8144/8225/8144 8243/8325/8243 +f 8243/8325/8243 8144/8225/8144 8244/8326/8244 +f 8144/8225/8144 8145/8226/8145 8244/8326/8244 +f 8244/8326/8244 8145/8226/8145 8245/8327/8245 +f 8145/8226/8145 8146/8227/8146 8245/8327/8245 +f 8245/8327/8245 8146/8227/8146 8246/8328/8246 +f 8146/8227/8146 8147/8228/8147 8246/8328/8246 +f 8246/8328/8246 8147/8228/8147 8247/8329/8247 +f 8147/8228/8147 8148/8229/8148 8247/8329/8247 +f 8247/8329/8247 8148/8229/8148 8248/8330/8248 +f 8148/8229/8148 8149/8230/8149 8248/8330/8248 +f 8248/8330/8248 8149/8230/8149 8249/8331/8249 +f 8149/8230/8149 8150/8231/8150 8249/8331/8249 +f 8249/8331/8249 8150/8231/8150 8250/8332/8250 +f 8150/8231/8150 8151/8232/8151 8250/8332/8250 +f 8250/8332/8250 8151/8232/8151 8251/8333/8251 +f 8151/8232/8151 8152/8233/8152 8251/8333/8251 +f 8251/8333/8251 8152/8233/8152 8252/8334/8252 +f 8152/8233/8152 8153/8234/8153 8252/8334/8252 +f 8252/8334/8252 8153/8234/8153 8253/8335/8253 +f 8153/8234/8153 8154/8235/8154 8253/8335/8253 +f 8253/8335/8253 8154/8235/8154 8254/8336/8254 +f 8154/8235/8154 8155/8236/8155 8254/8336/8254 +f 8254/8336/8254 8155/8236/8155 8255/8337/8255 +f 8155/8236/8155 8156/8237/8156 8255/8337/8255 +f 8255/8337/8255 8156/8237/8156 8256/8338/8256 +f 8156/8237/8156 8157/8238/8157 8256/8338/8256 +f 8256/8338/8256 8157/8238/8157 8257/8339/8257 +f 8157/8238/8157 8158/8239/8158 8257/8339/8257 +f 8257/8339/8257 8158/8239/8158 8258/8340/8258 +f 8158/8239/8158 8159/8240/8159 8258/8340/8258 +f 8258/8340/8258 8159/8240/8159 8259/8341/8259 +f 8159/8240/8159 8160/8241/8160 8259/8341/8259 +f 8259/8341/8259 8160/8241/8160 8260/8342/8260 +f 8160/8241/8160 8161/8242/8161 8260/8342/8260 +f 8260/8342/8260 8161/8242/8161 8261/8343/8261 +f 8161/8242/8161 8162/8243/8162 8261/8343/8261 +f 8261/8343/8261 8162/8243/8162 8262/8344/8262 +f 8162/8243/8162 8163/8244/8163 8262/8344/8262 +f 8262/8344/8262 8163/8244/8163 8263/8345/8263 +f 8163/8244/8163 8164/8245/8164 8263/8345/8263 +f 8263/8345/8263 8164/8245/8164 8264/8346/8264 +f 8164/8245/8164 8165/8246/8165 8264/8346/8264 +f 8264/8346/8264 8165/8246/8165 8265/8347/8265 +f 8165/8246/8165 8166/8247/8166 8265/8347/8265 +f 8265/8347/8265 8166/8247/8166 8266/8348/8266 +f 8166/8247/8166 8167/8248/8167 8266/8348/8266 +f 8266/8348/8266 8167/8248/8167 8267/8349/8267 +f 8167/8248/8167 8168/8249/8168 8267/8349/8267 +f 8267/8349/8267 8168/8249/8168 8268/8350/8268 +f 8168/8249/8168 8169/8250/8169 8268/8350/8268 +f 8268/8350/8268 8169/8250/8169 8269/8351/8269 +f 8169/8250/8169 8170/8251/8170 8269/8351/8269 +f 8269/8351/8269 8170/8251/8170 8270/8352/8270 +f 8170/8251/8170 8171/8252/8171 8270/8352/8270 +f 8270/8352/8270 8171/8252/8171 8271/8353/8271 +f 8171/8252/8171 8172/8253/8172 8271/8353/8271 +f 8271/8353/8271 8172/8253/8172 8272/8354/8272 +f 8172/8253/8172 8173/8254/8173 8272/8354/8272 +f 8272/8354/8272 8173/8254/8173 8273/8355/8273 +f 8173/8254/8173 8174/8255/8174 8273/8355/8273 +f 8273/8355/8273 8174/8255/8174 8274/8356/8274 +f 8174/8255/8174 8175/8256/8175 8274/8356/8274 +f 8274/8356/8274 8175/8256/8175 8275/8357/8275 +f 8175/8256/8175 8176/8257/8176 8275/8357/8275 +f 8275/8357/8275 8176/8257/8176 8276/8358/8276 +f 8176/8257/8176 8177/8258/8177 8276/8358/8276 +f 8276/8358/8276 8177/8258/8177 8277/8359/8277 +f 8177/8258/8177 8178/8259/8178 8277/8359/8277 +f 8277/8359/8277 8178/8259/8178 8278/8360/8278 +f 8178/8259/8178 8179/8260/8179 8278/8360/8278 +f 8278/8360/8278 8179/8260/8179 8279/8361/8279 +f 8179/8260/8179 8180/8261/8180 8279/8361/8279 +f 8279/8361/8279 8180/8261/8180 8280/8362/8280 +f 8180/8261/8180 8181/8262/8181 8280/8362/8280 +f 8280/8362/8280 8181/8262/8181 8281/8363/8281 +f 8181/8262/8181 8182/8263/8182 8281/8363/8281 +f 8281/8363/8281 8182/8263/8182 8282/8364/8282 +f 8182/8263/8182 8183/8264/8183 8282/8364/8282 +f 8282/8364/8282 8183/8264/8183 8283/8365/8283 +f 8183/8264/8183 8184/8265/8184 8283/8365/8283 +f 8283/8365/8283 8184/8265/8184 8284/8366/8284 +f 8184/8265/8184 8185/8266/8185 8284/8366/8284 +f 8284/8366/8284 8185/8266/8185 8285/8367/8285 +f 8185/8266/8185 8186/8267/8186 8285/8367/8285 +f 8285/8367/8285 8186/8267/8186 8286/8368/8286 +f 8186/8267/8186 8187/8268/8187 8286/8368/8286 +f 8286/8368/8286 8187/8268/8187 8287/8369/8287 +f 8187/8268/8187 8188/8269/8188 8287/8369/8287 +f 8287/8369/8287 8188/8269/8188 8288/8370/8288 +f 8188/8269/8188 8189/8270/8189 8288/8370/8288 +f 8288/8370/8288 8189/8270/8189 8289/8371/8289 +f 8189/8270/8189 8190/8271/8190 8289/8371/8289 +f 8289/8371/8289 8190/8271/8190 8290/8372/8290 +f 8190/8271/8190 8191/8272/8191 8290/8372/8290 +f 8290/8372/8290 8191/8272/8191 8291/8373/8291 +f 8191/8272/8191 8192/8273/8192 8291/8373/8291 +f 8291/8373/8291 8192/8273/8192 8292/8374/8292 +f 8192/8273/8192 8193/8274/8193 8292/8374/8292 +f 8292/8374/8292 8193/8274/8193 8293/8375/8293 +f 8193/8274/8193 8194/8275/8194 8293/8375/8293 +f 8293/8375/8293 8194/8275/8194 8294/8376/8294 +f 8194/8275/8194 8195/8276/8195 8294/8376/8294 +f 8294/8376/8294 8195/8276/8195 8295/8377/8295 +f 8195/8276/8195 8196/8277/8196 8295/8377/8295 +f 8295/8377/8295 8196/8277/8196 8296/8378/8296 +f 8196/8277/8196 8197/8278/8197 8296/8378/8296 +f 8296/8378/8296 8197/8278/8197 8297/8379/8297 +f 8197/8278/8197 8198/8279/8198 8297/8379/8297 +f 8297/8379/8297 8198/8279/8198 8298/8380/8298 +f 8198/8279/8198 8199/8280/8199 8298/8380/8298 +f 8298/8380/8298 8199/8280/8199 8299/8381/8299 +f 8199/8280/8199 8200/8281/8200 8299/8381/8299 +f 8299/8381/8299 8200/8281/8200 8300/8382/8300 +f 8200/8281/8200 8101/8282/8101 8300/8382/8300 +f 8300/8382/8300 8101/8282/8101 8201/8383/8201 +f 8201/8283/8201 8202/8284/8202 8301/8384/8301 +f 8301/8384/8301 8202/8284/8202 8302/8385/8302 +f 8202/8284/8202 8203/8285/8203 8302/8385/8302 +f 8302/8385/8302 8203/8285/8203 8303/8386/8303 +f 8203/8285/8203 8204/8286/8204 8303/8386/8303 +f 8303/8386/8303 8204/8286/8204 8304/8387/8304 +f 8204/8286/8204 8205/8287/8205 8304/8387/8304 +f 8304/8387/8304 8205/8287/8205 8305/8388/8305 +f 8205/8287/8205 8206/8288/8206 8305/8388/8305 +f 8305/8388/8305 8206/8288/8206 8306/8389/8306 +f 8206/8288/8206 8207/8289/8207 8306/8389/8306 +f 8306/8389/8306 8207/8289/8207 8307/8390/8307 +f 8207/8289/8207 8208/8290/8208 8307/8390/8307 +f 8307/8390/8307 8208/8290/8208 8308/8391/8308 +f 8208/8290/8208 8209/8291/8209 8308/8391/8308 +f 8308/8391/8308 8209/8291/8209 8309/8392/8309 +f 8209/8291/8209 8210/8292/8210 8309/8392/8309 +f 8309/8392/8309 8210/8292/8210 8310/8393/8310 +f 8210/8292/8210 8211/8293/8211 8310/8393/8310 +f 8310/8393/8310 8211/8293/8211 8311/8394/8311 +f 8211/8293/8211 8212/8294/8212 8311/8394/8311 +f 8311/8394/8311 8212/8294/8212 8312/8395/8312 +f 8212/8294/8212 8213/8295/8213 8312/8395/8312 +f 8312/8395/8312 8213/8295/8213 8313/8396/8313 +f 8213/8295/8213 8214/8296/8214 8313/8396/8313 +f 8313/8396/8313 8214/8296/8214 8314/8397/8314 +f 8214/8296/8214 8215/8297/8215 8314/8397/8314 +f 8314/8397/8314 8215/8297/8215 8315/8398/8315 +f 8215/8297/8215 8216/8298/8216 8315/8398/8315 +f 8315/8398/8315 8216/8298/8216 8316/8399/8316 +f 8216/8298/8216 8217/8299/8217 8316/8399/8316 +f 8316/8399/8316 8217/8299/8217 8317/8400/8317 +f 8217/8299/8217 8218/8300/8218 8317/8400/8317 +f 8317/8400/8317 8218/8300/8218 8318/8401/8318 +f 8218/8300/8218 8219/8301/8219 8318/8401/8318 +f 8318/8401/8318 8219/8301/8219 8319/8402/8319 +f 8219/8301/8219 8220/8302/8220 8319/8402/8319 +f 8319/8402/8319 8220/8302/8220 8320/8403/8320 +f 8220/8302/8220 8221/8303/8221 8320/8403/8320 +f 8320/8403/8320 8221/8303/8221 8321/8404/8321 +f 8221/8303/8221 8222/8304/8222 8321/8404/8321 +f 8321/8404/8321 8222/8304/8222 8322/8405/8322 +f 8222/8304/8222 8223/8305/8223 8322/8405/8322 +f 8322/8405/8322 8223/8305/8223 8323/8406/8323 +f 8223/8305/8223 8224/8306/8224 8323/8406/8323 +f 8323/8406/8323 8224/8306/8224 8324/8407/8324 +f 8224/8306/8224 8225/8307/8225 8324/8407/8324 +f 8324/8407/8324 8225/8307/8225 8325/8408/8325 +f 8225/8307/8225 8226/8308/8226 8325/8408/8325 +f 8325/8408/8325 8226/8308/8226 8326/8409/8326 +f 8226/8308/8226 8227/8309/8227 8326/8409/8326 +f 8326/8409/8326 8227/8309/8227 8327/8410/8327 +f 8227/8309/8227 8228/8310/8228 8327/8410/8327 +f 8327/8410/8327 8228/8310/8228 8328/8411/8328 +f 8228/8310/8228 8229/8311/8229 8328/8411/8328 +f 8328/8411/8328 8229/8311/8229 8329/8412/8329 +f 8229/8311/8229 8230/8312/8230 8329/8412/8329 +f 8329/8412/8329 8230/8312/8230 8330/8413/8330 +f 8230/8312/8230 8231/8313/8231 8330/8413/8330 +f 8330/8413/8330 8231/8313/8231 8331/8414/8331 +f 8231/8313/8231 8232/8314/8232 8331/8414/8331 +f 8331/8414/8331 8232/8314/8232 8332/8415/8332 +f 8232/8314/8232 8233/8315/8233 8332/8415/8332 +f 8332/8415/8332 8233/8315/8233 8333/8416/8333 +f 8233/8315/8233 8234/8316/8234 8333/8416/8333 +f 8333/8416/8333 8234/8316/8234 8334/8417/8334 +f 8234/8316/8234 8235/8317/8235 8334/8417/8334 +f 8334/8417/8334 8235/8317/8235 8335/8418/8335 +f 8235/8317/8235 8236/8318/8236 8335/8418/8335 +f 8335/8418/8335 8236/8318/8236 8336/8419/8336 +f 8236/8318/8236 8237/8319/8237 8336/8419/8336 +f 8336/8419/8336 8237/8319/8237 8337/8420/8337 +f 8237/8319/8237 8238/8320/8238 8337/8420/8337 +f 8337/8420/8337 8238/8320/8238 8338/8421/8338 +f 8238/8320/8238 8239/8321/8239 8338/8421/8338 +f 8338/8421/8338 8239/8321/8239 8339/8422/8339 +f 8239/8321/8239 8240/8322/8240 8339/8422/8339 +f 8339/8422/8339 8240/8322/8240 8340/8423/8340 +f 8240/8322/8240 8241/8323/8241 8340/8423/8340 +f 8340/8423/8340 8241/8323/8241 8341/8424/8341 +f 8241/8323/8241 8242/8324/8242 8341/8424/8341 +f 8341/8424/8341 8242/8324/8242 8342/8425/8342 +f 8242/8324/8242 8243/8325/8243 8342/8425/8342 +f 8342/8425/8342 8243/8325/8243 8343/8426/8343 +f 8243/8325/8243 8244/8326/8244 8343/8426/8343 +f 8343/8426/8343 8244/8326/8244 8344/8427/8344 +f 8244/8326/8244 8245/8327/8245 8344/8427/8344 +f 8344/8427/8344 8245/8327/8245 8345/8428/8345 +f 8245/8327/8245 8246/8328/8246 8345/8428/8345 +f 8345/8428/8345 8246/8328/8246 8346/8429/8346 +f 8246/8328/8246 8247/8329/8247 8346/8429/8346 +f 8346/8429/8346 8247/8329/8247 8347/8430/8347 +f 8247/8329/8247 8248/8330/8248 8347/8430/8347 +f 8347/8430/8347 8248/8330/8248 8348/8431/8348 +f 8248/8330/8248 8249/8331/8249 8348/8431/8348 +f 8348/8431/8348 8249/8331/8249 8349/8432/8349 +f 8249/8331/8249 8250/8332/8250 8349/8432/8349 +f 8349/8432/8349 8250/8332/8250 8350/8433/8350 +f 8250/8332/8250 8251/8333/8251 8350/8433/8350 +f 8350/8433/8350 8251/8333/8251 8351/8434/8351 +f 8251/8333/8251 8252/8334/8252 8351/8434/8351 +f 8351/8434/8351 8252/8334/8252 8352/8435/8352 +f 8252/8334/8252 8253/8335/8253 8352/8435/8352 +f 8352/8435/8352 8253/8335/8253 8353/8436/8353 +f 8253/8335/8253 8254/8336/8254 8353/8436/8353 +f 8353/8436/8353 8254/8336/8254 8354/8437/8354 +f 8254/8336/8254 8255/8337/8255 8354/8437/8354 +f 8354/8437/8354 8255/8337/8255 8355/8438/8355 +f 8255/8337/8255 8256/8338/8256 8355/8438/8355 +f 8355/8438/8355 8256/8338/8256 8356/8439/8356 +f 8256/8338/8256 8257/8339/8257 8356/8439/8356 +f 8356/8439/8356 8257/8339/8257 8357/8440/8357 +f 8257/8339/8257 8258/8340/8258 8357/8440/8357 +f 8357/8440/8357 8258/8340/8258 8358/8441/8358 +f 8258/8340/8258 8259/8341/8259 8358/8441/8358 +f 8358/8441/8358 8259/8341/8259 8359/8442/8359 +f 8259/8341/8259 8260/8342/8260 8359/8442/8359 +f 8359/8442/8359 8260/8342/8260 8360/8443/8360 +f 8260/8342/8260 8261/8343/8261 8360/8443/8360 +f 8360/8443/8360 8261/8343/8261 8361/8444/8361 +f 8261/8343/8261 8262/8344/8262 8361/8444/8361 +f 8361/8444/8361 8262/8344/8262 8362/8445/8362 +f 8262/8344/8262 8263/8345/8263 8362/8445/8362 +f 8362/8445/8362 8263/8345/8263 8363/8446/8363 +f 8263/8345/8263 8264/8346/8264 8363/8446/8363 +f 8363/8446/8363 8264/8346/8264 8364/8447/8364 +f 8264/8346/8264 8265/8347/8265 8364/8447/8364 +f 8364/8447/8364 8265/8347/8265 8365/8448/8365 +f 8265/8347/8265 8266/8348/8266 8365/8448/8365 +f 8365/8448/8365 8266/8348/8266 8366/8449/8366 +f 8266/8348/8266 8267/8349/8267 8366/8449/8366 +f 8366/8449/8366 8267/8349/8267 8367/8450/8367 +f 8267/8349/8267 8268/8350/8268 8367/8450/8367 +f 8367/8450/8367 8268/8350/8268 8368/8451/8368 +f 8268/8350/8268 8269/8351/8269 8368/8451/8368 +f 8368/8451/8368 8269/8351/8269 8369/8452/8369 +f 8269/8351/8269 8270/8352/8270 8369/8452/8369 +f 8369/8452/8369 8270/8352/8270 8370/8453/8370 +f 8270/8352/8270 8271/8353/8271 8370/8453/8370 +f 8370/8453/8370 8271/8353/8271 8371/8454/8371 +f 8271/8353/8271 8272/8354/8272 8371/8454/8371 +f 8371/8454/8371 8272/8354/8272 8372/8455/8372 +f 8272/8354/8272 8273/8355/8273 8372/8455/8372 +f 8372/8455/8372 8273/8355/8273 8373/8456/8373 +f 8273/8355/8273 8274/8356/8274 8373/8456/8373 +f 8373/8456/8373 8274/8356/8274 8374/8457/8374 +f 8274/8356/8274 8275/8357/8275 8374/8457/8374 +f 8374/8457/8374 8275/8357/8275 8375/8458/8375 +f 8275/8357/8275 8276/8358/8276 8375/8458/8375 +f 8375/8458/8375 8276/8358/8276 8376/8459/8376 +f 8276/8358/8276 8277/8359/8277 8376/8459/8376 +f 8376/8459/8376 8277/8359/8277 8377/8460/8377 +f 8277/8359/8277 8278/8360/8278 8377/8460/8377 +f 8377/8460/8377 8278/8360/8278 8378/8461/8378 +f 8278/8360/8278 8279/8361/8279 8378/8461/8378 +f 8378/8461/8378 8279/8361/8279 8379/8462/8379 +f 8279/8361/8279 8280/8362/8280 8379/8462/8379 +f 8379/8462/8379 8280/8362/8280 8380/8463/8380 +f 8280/8362/8280 8281/8363/8281 8380/8463/8380 +f 8380/8463/8380 8281/8363/8281 8381/8464/8381 +f 8281/8363/8281 8282/8364/8282 8381/8464/8381 +f 8381/8464/8381 8282/8364/8282 8382/8465/8382 +f 8282/8364/8282 8283/8365/8283 8382/8465/8382 +f 8382/8465/8382 8283/8365/8283 8383/8466/8383 +f 8283/8365/8283 8284/8366/8284 8383/8466/8383 +f 8383/8466/8383 8284/8366/8284 8384/8467/8384 +f 8284/8366/8284 8285/8367/8285 8384/8467/8384 +f 8384/8467/8384 8285/8367/8285 8385/8468/8385 +f 8285/8367/8285 8286/8368/8286 8385/8468/8385 +f 8385/8468/8385 8286/8368/8286 8386/8469/8386 +f 8286/8368/8286 8287/8369/8287 8386/8469/8386 +f 8386/8469/8386 8287/8369/8287 8387/8470/8387 +f 8287/8369/8287 8288/8370/8288 8387/8470/8387 +f 8387/8470/8387 8288/8370/8288 8388/8471/8388 +f 8288/8370/8288 8289/8371/8289 8388/8471/8388 +f 8388/8471/8388 8289/8371/8289 8389/8472/8389 +f 8289/8371/8289 8290/8372/8290 8389/8472/8389 +f 8389/8472/8389 8290/8372/8290 8390/8473/8390 +f 8290/8372/8290 8291/8373/8291 8390/8473/8390 +f 8390/8473/8390 8291/8373/8291 8391/8474/8391 +f 8291/8373/8291 8292/8374/8292 8391/8474/8391 +f 8391/8474/8391 8292/8374/8292 8392/8475/8392 +f 8292/8374/8292 8293/8375/8293 8392/8475/8392 +f 8392/8475/8392 8293/8375/8293 8393/8476/8393 +f 8293/8375/8293 8294/8376/8294 8393/8476/8393 +f 8393/8476/8393 8294/8376/8294 8394/8477/8394 +f 8294/8376/8294 8295/8377/8295 8394/8477/8394 +f 8394/8477/8394 8295/8377/8295 8395/8478/8395 +f 8295/8377/8295 8296/8378/8296 8395/8478/8395 +f 8395/8478/8395 8296/8378/8296 8396/8479/8396 +f 8296/8378/8296 8297/8379/8297 8396/8479/8396 +f 8396/8479/8396 8297/8379/8297 8397/8480/8397 +f 8297/8379/8297 8298/8380/8298 8397/8480/8397 +f 8397/8480/8397 8298/8380/8298 8398/8481/8398 +f 8298/8380/8298 8299/8381/8299 8398/8481/8398 +f 8398/8481/8398 8299/8381/8299 8399/8482/8399 +f 8299/8381/8299 8300/8382/8300 8399/8482/8399 +f 8399/8482/8399 8300/8382/8300 8400/8483/8400 +f 8300/8382/8300 8201/8383/8201 8400/8483/8400 +f 8400/8483/8400 8201/8383/8201 8301/8484/8301 +f 8301/8384/8301 8302/8385/8302 8401/8485/8401 +f 8401/8485/8401 8302/8385/8302 8402/8486/8402 +f 8302/8385/8302 8303/8386/8303 8402/8486/8402 +f 8402/8486/8402 8303/8386/8303 8403/8487/8403 +f 8303/8386/8303 8304/8387/8304 8403/8487/8403 +f 8403/8487/8403 8304/8387/8304 8404/8488/8404 +f 8304/8387/8304 8305/8388/8305 8404/8488/8404 +f 8404/8488/8404 8305/8388/8305 8405/8489/8405 +f 8305/8388/8305 8306/8389/8306 8405/8489/8405 +f 8405/8489/8405 8306/8389/8306 8406/8490/8406 +f 8306/8389/8306 8307/8390/8307 8406/8490/8406 +f 8406/8490/8406 8307/8390/8307 8407/8491/8407 +f 8307/8390/8307 8308/8391/8308 8407/8491/8407 +f 8407/8491/8407 8308/8391/8308 8408/8492/8408 +f 8308/8391/8308 8309/8392/8309 8408/8492/8408 +f 8408/8492/8408 8309/8392/8309 8409/8493/8409 +f 8309/8392/8309 8310/8393/8310 8409/8493/8409 +f 8409/8493/8409 8310/8393/8310 8410/8494/8410 +f 8310/8393/8310 8311/8394/8311 8410/8494/8410 +f 8410/8494/8410 8311/8394/8311 8411/8495/8411 +f 8311/8394/8311 8312/8395/8312 8411/8495/8411 +f 8411/8495/8411 8312/8395/8312 8412/8496/8412 +f 8312/8395/8312 8313/8396/8313 8412/8496/8412 +f 8412/8496/8412 8313/8396/8313 8413/8497/8413 +f 8313/8396/8313 8314/8397/8314 8413/8497/8413 +f 8413/8497/8413 8314/8397/8314 8414/8498/8414 +f 8314/8397/8314 8315/8398/8315 8414/8498/8414 +f 8414/8498/8414 8315/8398/8315 8415/8499/8415 +f 8315/8398/8315 8316/8399/8316 8415/8499/8415 +f 8415/8499/8415 8316/8399/8316 8416/8500/8416 +f 8316/8399/8316 8317/8400/8317 8416/8500/8416 +f 8416/8500/8416 8317/8400/8317 8417/8501/8417 +f 8317/8400/8317 8318/8401/8318 8417/8501/8417 +f 8417/8501/8417 8318/8401/8318 8418/8502/8418 +f 8318/8401/8318 8319/8402/8319 8418/8502/8418 +f 8418/8502/8418 8319/8402/8319 8419/8503/8419 +f 8319/8402/8319 8320/8403/8320 8419/8503/8419 +f 8419/8503/8419 8320/8403/8320 8420/8504/8420 +f 8320/8403/8320 8321/8404/8321 8420/8504/8420 +f 8420/8504/8420 8321/8404/8321 8421/8505/8421 +f 8321/8404/8321 8322/8405/8322 8421/8505/8421 +f 8421/8505/8421 8322/8405/8322 8422/8506/8422 +f 8322/8405/8322 8323/8406/8323 8422/8506/8422 +f 8422/8506/8422 8323/8406/8323 8423/8507/8423 +f 8323/8406/8323 8324/8407/8324 8423/8507/8423 +f 8423/8507/8423 8324/8407/8324 8424/8508/8424 +f 8324/8407/8324 8325/8408/8325 8424/8508/8424 +f 8424/8508/8424 8325/8408/8325 8425/8509/8425 +f 8325/8408/8325 8326/8409/8326 8425/8509/8425 +f 8425/8509/8425 8326/8409/8326 8426/8510/8426 +f 8326/8409/8326 8327/8410/8327 8426/8510/8426 +f 8426/8510/8426 8327/8410/8327 8427/8511/8427 +f 8327/8410/8327 8328/8411/8328 8427/8511/8427 +f 8427/8511/8427 8328/8411/8328 8428/8512/8428 +f 8328/8411/8328 8329/8412/8329 8428/8512/8428 +f 8428/8512/8428 8329/8412/8329 8429/8513/8429 +f 8329/8412/8329 8330/8413/8330 8429/8513/8429 +f 8429/8513/8429 8330/8413/8330 8430/8514/8430 +f 8330/8413/8330 8331/8414/8331 8430/8514/8430 +f 8430/8514/8430 8331/8414/8331 8431/8515/8431 +f 8331/8414/8331 8332/8415/8332 8431/8515/8431 +f 8431/8515/8431 8332/8415/8332 8432/8516/8432 +f 8332/8415/8332 8333/8416/8333 8432/8516/8432 +f 8432/8516/8432 8333/8416/8333 8433/8517/8433 +f 8333/8416/8333 8334/8417/8334 8433/8517/8433 +f 8433/8517/8433 8334/8417/8334 8434/8518/8434 +f 8334/8417/8334 8335/8418/8335 8434/8518/8434 +f 8434/8518/8434 8335/8418/8335 8435/8519/8435 +f 8335/8418/8335 8336/8419/8336 8435/8519/8435 +f 8435/8519/8435 8336/8419/8336 8436/8520/8436 +f 8336/8419/8336 8337/8420/8337 8436/8520/8436 +f 8436/8520/8436 8337/8420/8337 8437/8521/8437 +f 8337/8420/8337 8338/8421/8338 8437/8521/8437 +f 8437/8521/8437 8338/8421/8338 8438/8522/8438 +f 8338/8421/8338 8339/8422/8339 8438/8522/8438 +f 8438/8522/8438 8339/8422/8339 8439/8523/8439 +f 8339/8422/8339 8340/8423/8340 8439/8523/8439 +f 8439/8523/8439 8340/8423/8340 8440/8524/8440 +f 8340/8423/8340 8341/8424/8341 8440/8524/8440 +f 8440/8524/8440 8341/8424/8341 8441/8525/8441 +f 8341/8424/8341 8342/8425/8342 8441/8525/8441 +f 8441/8525/8441 8342/8425/8342 8442/8526/8442 +f 8342/8425/8342 8343/8426/8343 8442/8526/8442 +f 8442/8526/8442 8343/8426/8343 8443/8527/8443 +f 8343/8426/8343 8344/8427/8344 8443/8527/8443 +f 8443/8527/8443 8344/8427/8344 8444/8528/8444 +f 8344/8427/8344 8345/8428/8345 8444/8528/8444 +f 8444/8528/8444 8345/8428/8345 8445/8529/8445 +f 8345/8428/8345 8346/8429/8346 8445/8529/8445 +f 8445/8529/8445 8346/8429/8346 8446/8530/8446 +f 8346/8429/8346 8347/8430/8347 8446/8530/8446 +f 8446/8530/8446 8347/8430/8347 8447/8531/8447 +f 8347/8430/8347 8348/8431/8348 8447/8531/8447 +f 8447/8531/8447 8348/8431/8348 8448/8532/8448 +f 8348/8431/8348 8349/8432/8349 8448/8532/8448 +f 8448/8532/8448 8349/8432/8349 8449/8533/8449 +f 8349/8432/8349 8350/8433/8350 8449/8533/8449 +f 8449/8533/8449 8350/8433/8350 8450/8534/8450 +f 8350/8433/8350 8351/8434/8351 8450/8534/8450 +f 8450/8534/8450 8351/8434/8351 8451/8535/8451 +f 8351/8434/8351 8352/8435/8352 8451/8535/8451 +f 8451/8535/8451 8352/8435/8352 8452/8536/8452 +f 8352/8435/8352 8353/8436/8353 8452/8536/8452 +f 8452/8536/8452 8353/8436/8353 8453/8537/8453 +f 8353/8436/8353 8354/8437/8354 8453/8537/8453 +f 8453/8537/8453 8354/8437/8354 8454/8538/8454 +f 8354/8437/8354 8355/8438/8355 8454/8538/8454 +f 8454/8538/8454 8355/8438/8355 8455/8539/8455 +f 8355/8438/8355 8356/8439/8356 8455/8539/8455 +f 8455/8539/8455 8356/8439/8356 8456/8540/8456 +f 8356/8439/8356 8357/8440/8357 8456/8540/8456 +f 8456/8540/8456 8357/8440/8357 8457/8541/8457 +f 8357/8440/8357 8358/8441/8358 8457/8541/8457 +f 8457/8541/8457 8358/8441/8358 8458/8542/8458 +f 8358/8441/8358 8359/8442/8359 8458/8542/8458 +f 8458/8542/8458 8359/8442/8359 8459/8543/8459 +f 8359/8442/8359 8360/8443/8360 8459/8543/8459 +f 8459/8543/8459 8360/8443/8360 8460/8544/8460 +f 8360/8443/8360 8361/8444/8361 8460/8544/8460 +f 8460/8544/8460 8361/8444/8361 8461/8545/8461 +f 8361/8444/8361 8362/8445/8362 8461/8545/8461 +f 8461/8545/8461 8362/8445/8362 8462/8546/8462 +f 8362/8445/8362 8363/8446/8363 8462/8546/8462 +f 8462/8546/8462 8363/8446/8363 8463/8547/8463 +f 8363/8446/8363 8364/8447/8364 8463/8547/8463 +f 8463/8547/8463 8364/8447/8364 8464/8548/8464 +f 8364/8447/8364 8365/8448/8365 8464/8548/8464 +f 8464/8548/8464 8365/8448/8365 8465/8549/8465 +f 8365/8448/8365 8366/8449/8366 8465/8549/8465 +f 8465/8549/8465 8366/8449/8366 8466/8550/8466 +f 8366/8449/8366 8367/8450/8367 8466/8550/8466 +f 8466/8550/8466 8367/8450/8367 8467/8551/8467 +f 8367/8450/8367 8368/8451/8368 8467/8551/8467 +f 8467/8551/8467 8368/8451/8368 8468/8552/8468 +f 8368/8451/8368 8369/8452/8369 8468/8552/8468 +f 8468/8552/8468 8369/8452/8369 8469/8553/8469 +f 8369/8452/8369 8370/8453/8370 8469/8553/8469 +f 8469/8553/8469 8370/8453/8370 8470/8554/8470 +f 8370/8453/8370 8371/8454/8371 8470/8554/8470 +f 8470/8554/8470 8371/8454/8371 8471/8555/8471 +f 8371/8454/8371 8372/8455/8372 8471/8555/8471 +f 8471/8555/8471 8372/8455/8372 8472/8556/8472 +f 8372/8455/8372 8373/8456/8373 8472/8556/8472 +f 8472/8556/8472 8373/8456/8373 8473/8557/8473 +f 8373/8456/8373 8374/8457/8374 8473/8557/8473 +f 8473/8557/8473 8374/8457/8374 8474/8558/8474 +f 8374/8457/8374 8375/8458/8375 8474/8558/8474 +f 8474/8558/8474 8375/8458/8375 8475/8559/8475 +f 8375/8458/8375 8376/8459/8376 8475/8559/8475 +f 8475/8559/8475 8376/8459/8376 8476/8560/8476 +f 8376/8459/8376 8377/8460/8377 8476/8560/8476 +f 8476/8560/8476 8377/8460/8377 8477/8561/8477 +f 8377/8460/8377 8378/8461/8378 8477/8561/8477 +f 8477/8561/8477 8378/8461/8378 8478/8562/8478 +f 8378/8461/8378 8379/8462/8379 8478/8562/8478 +f 8478/8562/8478 8379/8462/8379 8479/8563/8479 +f 8379/8462/8379 8380/8463/8380 8479/8563/8479 +f 8479/8563/8479 8380/8463/8380 8480/8564/8480 +f 8380/8463/8380 8381/8464/8381 8480/8564/8480 +f 8480/8564/8480 8381/8464/8381 8481/8565/8481 +f 8381/8464/8381 8382/8465/8382 8481/8565/8481 +f 8481/8565/8481 8382/8465/8382 8482/8566/8482 +f 8382/8465/8382 8383/8466/8383 8482/8566/8482 +f 8482/8566/8482 8383/8466/8383 8483/8567/8483 +f 8383/8466/8383 8384/8467/8384 8483/8567/8483 +f 8483/8567/8483 8384/8467/8384 8484/8568/8484 +f 8384/8467/8384 8385/8468/8385 8484/8568/8484 +f 8484/8568/8484 8385/8468/8385 8485/8569/8485 +f 8385/8468/8385 8386/8469/8386 8485/8569/8485 +f 8485/8569/8485 8386/8469/8386 8486/8570/8486 +f 8386/8469/8386 8387/8470/8387 8486/8570/8486 +f 8486/8570/8486 8387/8470/8387 8487/8571/8487 +f 8387/8470/8387 8388/8471/8388 8487/8571/8487 +f 8487/8571/8487 8388/8471/8388 8488/8572/8488 +f 8388/8471/8388 8389/8472/8389 8488/8572/8488 +f 8488/8572/8488 8389/8472/8389 8489/8573/8489 +f 8389/8472/8389 8390/8473/8390 8489/8573/8489 +f 8489/8573/8489 8390/8473/8390 8490/8574/8490 +f 8390/8473/8390 8391/8474/8391 8490/8574/8490 +f 8490/8574/8490 8391/8474/8391 8491/8575/8491 +f 8391/8474/8391 8392/8475/8392 8491/8575/8491 +f 8491/8575/8491 8392/8475/8392 8492/8576/8492 +f 8392/8475/8392 8393/8476/8393 8492/8576/8492 +f 8492/8576/8492 8393/8476/8393 8493/8577/8493 +f 8393/8476/8393 8394/8477/8394 8493/8577/8493 +f 8493/8577/8493 8394/8477/8394 8494/8578/8494 +f 8394/8477/8394 8395/8478/8395 8494/8578/8494 +f 8494/8578/8494 8395/8478/8395 8495/8579/8495 +f 8395/8478/8395 8396/8479/8396 8495/8579/8495 +f 8495/8579/8495 8396/8479/8396 8496/8580/8496 +f 8396/8479/8396 8397/8480/8397 8496/8580/8496 +f 8496/8580/8496 8397/8480/8397 8497/8581/8497 +f 8397/8480/8397 8398/8481/8398 8497/8581/8497 +f 8497/8581/8497 8398/8481/8398 8498/8582/8498 +f 8398/8481/8398 8399/8482/8399 8498/8582/8498 +f 8498/8582/8498 8399/8482/8399 8499/8583/8499 +f 8399/8482/8399 8400/8483/8400 8499/8583/8499 +f 8499/8583/8499 8400/8483/8400 8500/8584/8500 +f 8400/8483/8400 8301/8484/8301 8500/8584/8500 +f 8500/8584/8500 8301/8484/8301 8401/8585/8401 +f 8401/8485/8401 8402/8486/8402 8501/8586/8501 +f 8501/8586/8501 8402/8486/8402 8502/8587/8502 +f 8402/8486/8402 8403/8487/8403 8502/8587/8502 +f 8502/8587/8502 8403/8487/8403 8503/8588/8503 +f 8403/8487/8403 8404/8488/8404 8503/8588/8503 +f 8503/8588/8503 8404/8488/8404 8504/8589/8504 +f 8404/8488/8404 8405/8489/8405 8504/8589/8504 +f 8504/8589/8504 8405/8489/8405 8505/8590/8505 +f 8405/8489/8405 8406/8490/8406 8505/8590/8505 +f 8505/8590/8505 8406/8490/8406 8506/8591/8506 +f 8406/8490/8406 8407/8491/8407 8506/8591/8506 +f 8506/8591/8506 8407/8491/8407 8507/8592/8507 +f 8407/8491/8407 8408/8492/8408 8507/8592/8507 +f 8507/8592/8507 8408/8492/8408 8508/8593/8508 +f 8408/8492/8408 8409/8493/8409 8508/8593/8508 +f 8508/8593/8508 8409/8493/8409 8509/8594/8509 +f 8409/8493/8409 8410/8494/8410 8509/8594/8509 +f 8509/8594/8509 8410/8494/8410 8510/8595/8510 +f 8410/8494/8410 8411/8495/8411 8510/8595/8510 +f 8510/8595/8510 8411/8495/8411 8511/8596/8511 +f 8411/8495/8411 8412/8496/8412 8511/8596/8511 +f 8511/8596/8511 8412/8496/8412 8512/8597/8512 +f 8412/8496/8412 8413/8497/8413 8512/8597/8512 +f 8512/8597/8512 8413/8497/8413 8513/8598/8513 +f 8413/8497/8413 8414/8498/8414 8513/8598/8513 +f 8513/8598/8513 8414/8498/8414 8514/8599/8514 +f 8414/8498/8414 8415/8499/8415 8514/8599/8514 +f 8514/8599/8514 8415/8499/8415 8515/8600/8515 +f 8415/8499/8415 8416/8500/8416 8515/8600/8515 +f 8515/8600/8515 8416/8500/8416 8516/8601/8516 +f 8416/8500/8416 8417/8501/8417 8516/8601/8516 +f 8516/8601/8516 8417/8501/8417 8517/8602/8517 +f 8417/8501/8417 8418/8502/8418 8517/8602/8517 +f 8517/8602/8517 8418/8502/8418 8518/8603/8518 +f 8418/8502/8418 8419/8503/8419 8518/8603/8518 +f 8518/8603/8518 8419/8503/8419 8519/8604/8519 +f 8419/8503/8419 8420/8504/8420 8519/8604/8519 +f 8519/8604/8519 8420/8504/8420 8520/8605/8520 +f 8420/8504/8420 8421/8505/8421 8520/8605/8520 +f 8520/8605/8520 8421/8505/8421 8521/8606/8521 +f 8421/8505/8421 8422/8506/8422 8521/8606/8521 +f 8521/8606/8521 8422/8506/8422 8522/8607/8522 +f 8422/8506/8422 8423/8507/8423 8522/8607/8522 +f 8522/8607/8522 8423/8507/8423 8523/8608/8523 +f 8423/8507/8423 8424/8508/8424 8523/8608/8523 +f 8523/8608/8523 8424/8508/8424 8524/8609/8524 +f 8424/8508/8424 8425/8509/8425 8524/8609/8524 +f 8524/8609/8524 8425/8509/8425 8525/8610/8525 +f 8425/8509/8425 8426/8510/8426 8525/8610/8525 +f 8525/8610/8525 8426/8510/8426 8526/8611/8526 +f 8426/8510/8426 8427/8511/8427 8526/8611/8526 +f 8526/8611/8526 8427/8511/8427 8527/8612/8527 +f 8427/8511/8427 8428/8512/8428 8527/8612/8527 +f 8527/8612/8527 8428/8512/8428 8528/8613/8528 +f 8428/8512/8428 8429/8513/8429 8528/8613/8528 +f 8528/8613/8528 8429/8513/8429 8529/8614/8529 +f 8429/8513/8429 8430/8514/8430 8529/8614/8529 +f 8529/8614/8529 8430/8514/8430 8530/8615/8530 +f 8430/8514/8430 8431/8515/8431 8530/8615/8530 +f 8530/8615/8530 8431/8515/8431 8531/8616/8531 +f 8431/8515/8431 8432/8516/8432 8531/8616/8531 +f 8531/8616/8531 8432/8516/8432 8532/8617/8532 +f 8432/8516/8432 8433/8517/8433 8532/8617/8532 +f 8532/8617/8532 8433/8517/8433 8533/8618/8533 +f 8433/8517/8433 8434/8518/8434 8533/8618/8533 +f 8533/8618/8533 8434/8518/8434 8534/8619/8534 +f 8434/8518/8434 8435/8519/8435 8534/8619/8534 +f 8534/8619/8534 8435/8519/8435 8535/8620/8535 +f 8435/8519/8435 8436/8520/8436 8535/8620/8535 +f 8535/8620/8535 8436/8520/8436 8536/8621/8536 +f 8436/8520/8436 8437/8521/8437 8536/8621/8536 +f 8536/8621/8536 8437/8521/8437 8537/8622/8537 +f 8437/8521/8437 8438/8522/8438 8537/8622/8537 +f 8537/8622/8537 8438/8522/8438 8538/8623/8538 +f 8438/8522/8438 8439/8523/8439 8538/8623/8538 +f 8538/8623/8538 8439/8523/8439 8539/8624/8539 +f 8439/8523/8439 8440/8524/8440 8539/8624/8539 +f 8539/8624/8539 8440/8524/8440 8540/8625/8540 +f 8440/8524/8440 8441/8525/8441 8540/8625/8540 +f 8540/8625/8540 8441/8525/8441 8541/8626/8541 +f 8441/8525/8441 8442/8526/8442 8541/8626/8541 +f 8541/8626/8541 8442/8526/8442 8542/8627/8542 +f 8442/8526/8442 8443/8527/8443 8542/8627/8542 +f 8542/8627/8542 8443/8527/8443 8543/8628/8543 +f 8443/8527/8443 8444/8528/8444 8543/8628/8543 +f 8543/8628/8543 8444/8528/8444 8544/8629/8544 +f 8444/8528/8444 8445/8529/8445 8544/8629/8544 +f 8544/8629/8544 8445/8529/8445 8545/8630/8545 +f 8445/8529/8445 8446/8530/8446 8545/8630/8545 +f 8545/8630/8545 8446/8530/8446 8546/8631/8546 +f 8446/8530/8446 8447/8531/8447 8546/8631/8546 +f 8546/8631/8546 8447/8531/8447 8547/8632/8547 +f 8447/8531/8447 8448/8532/8448 8547/8632/8547 +f 8547/8632/8547 8448/8532/8448 8548/8633/8548 +f 8448/8532/8448 8449/8533/8449 8548/8633/8548 +f 8548/8633/8548 8449/8533/8449 8549/8634/8549 +f 8449/8533/8449 8450/8534/8450 8549/8634/8549 +f 8549/8634/8549 8450/8534/8450 8550/8635/8550 +f 8450/8534/8450 8451/8535/8451 8550/8635/8550 +f 8550/8635/8550 8451/8535/8451 8551/8636/8551 +f 8451/8535/8451 8452/8536/8452 8551/8636/8551 +f 8551/8636/8551 8452/8536/8452 8552/8637/8552 +f 8452/8536/8452 8453/8537/8453 8552/8637/8552 +f 8552/8637/8552 8453/8537/8453 8553/8638/8553 +f 8453/8537/8453 8454/8538/8454 8553/8638/8553 +f 8553/8638/8553 8454/8538/8454 8554/8639/8554 +f 8454/8538/8454 8455/8539/8455 8554/8639/8554 +f 8554/8639/8554 8455/8539/8455 8555/8640/8555 +f 8455/8539/8455 8456/8540/8456 8555/8640/8555 +f 8555/8640/8555 8456/8540/8456 8556/8641/8556 +f 8456/8540/8456 8457/8541/8457 8556/8641/8556 +f 8556/8641/8556 8457/8541/8457 8557/8642/8557 +f 8457/8541/8457 8458/8542/8458 8557/8642/8557 +f 8557/8642/8557 8458/8542/8458 8558/8643/8558 +f 8458/8542/8458 8459/8543/8459 8558/8643/8558 +f 8558/8643/8558 8459/8543/8459 8559/8644/8559 +f 8459/8543/8459 8460/8544/8460 8559/8644/8559 +f 8559/8644/8559 8460/8544/8460 8560/8645/8560 +f 8460/8544/8460 8461/8545/8461 8560/8645/8560 +f 8560/8645/8560 8461/8545/8461 8561/8646/8561 +f 8461/8545/8461 8462/8546/8462 8561/8646/8561 +f 8561/8646/8561 8462/8546/8462 8562/8647/8562 +f 8462/8546/8462 8463/8547/8463 8562/8647/8562 +f 8562/8647/8562 8463/8547/8463 8563/8648/8563 +f 8463/8547/8463 8464/8548/8464 8563/8648/8563 +f 8563/8648/8563 8464/8548/8464 8564/8649/8564 +f 8464/8548/8464 8465/8549/8465 8564/8649/8564 +f 8564/8649/8564 8465/8549/8465 8565/8650/8565 +f 8465/8549/8465 8466/8550/8466 8565/8650/8565 +f 8565/8650/8565 8466/8550/8466 8566/8651/8566 +f 8466/8550/8466 8467/8551/8467 8566/8651/8566 +f 8566/8651/8566 8467/8551/8467 8567/8652/8567 +f 8467/8551/8467 8468/8552/8468 8567/8652/8567 +f 8567/8652/8567 8468/8552/8468 8568/8653/8568 +f 8468/8552/8468 8469/8553/8469 8568/8653/8568 +f 8568/8653/8568 8469/8553/8469 8569/8654/8569 +f 8469/8553/8469 8470/8554/8470 8569/8654/8569 +f 8569/8654/8569 8470/8554/8470 8570/8655/8570 +f 8470/8554/8470 8471/8555/8471 8570/8655/8570 +f 8570/8655/8570 8471/8555/8471 8571/8656/8571 +f 8471/8555/8471 8472/8556/8472 8571/8656/8571 +f 8571/8656/8571 8472/8556/8472 8572/8657/8572 +f 8472/8556/8472 8473/8557/8473 8572/8657/8572 +f 8572/8657/8572 8473/8557/8473 8573/8658/8573 +f 8473/8557/8473 8474/8558/8474 8573/8658/8573 +f 8573/8658/8573 8474/8558/8474 8574/8659/8574 +f 8474/8558/8474 8475/8559/8475 8574/8659/8574 +f 8574/8659/8574 8475/8559/8475 8575/8660/8575 +f 8475/8559/8475 8476/8560/8476 8575/8660/8575 +f 8575/8660/8575 8476/8560/8476 8576/8661/8576 +f 8476/8560/8476 8477/8561/8477 8576/8661/8576 +f 8576/8661/8576 8477/8561/8477 8577/8662/8577 +f 8477/8561/8477 8478/8562/8478 8577/8662/8577 +f 8577/8662/8577 8478/8562/8478 8578/8663/8578 +f 8478/8562/8478 8479/8563/8479 8578/8663/8578 +f 8578/8663/8578 8479/8563/8479 8579/8664/8579 +f 8479/8563/8479 8480/8564/8480 8579/8664/8579 +f 8579/8664/8579 8480/8564/8480 8580/8665/8580 +f 8480/8564/8480 8481/8565/8481 8580/8665/8580 +f 8580/8665/8580 8481/8565/8481 8581/8666/8581 +f 8481/8565/8481 8482/8566/8482 8581/8666/8581 +f 8581/8666/8581 8482/8566/8482 8582/8667/8582 +f 8482/8566/8482 8483/8567/8483 8582/8667/8582 +f 8582/8667/8582 8483/8567/8483 8583/8668/8583 +f 8483/8567/8483 8484/8568/8484 8583/8668/8583 +f 8583/8668/8583 8484/8568/8484 8584/8669/8584 +f 8484/8568/8484 8485/8569/8485 8584/8669/8584 +f 8584/8669/8584 8485/8569/8485 8585/8670/8585 +f 8485/8569/8485 8486/8570/8486 8585/8670/8585 +f 8585/8670/8585 8486/8570/8486 8586/8671/8586 +f 8486/8570/8486 8487/8571/8487 8586/8671/8586 +f 8586/8671/8586 8487/8571/8487 8587/8672/8587 +f 8487/8571/8487 8488/8572/8488 8587/8672/8587 +f 8587/8672/8587 8488/8572/8488 8588/8673/8588 +f 8488/8572/8488 8489/8573/8489 8588/8673/8588 +f 8588/8673/8588 8489/8573/8489 8589/8674/8589 +f 8489/8573/8489 8490/8574/8490 8589/8674/8589 +f 8589/8674/8589 8490/8574/8490 8590/8675/8590 +f 8490/8574/8490 8491/8575/8491 8590/8675/8590 +f 8590/8675/8590 8491/8575/8491 8591/8676/8591 +f 8491/8575/8491 8492/8576/8492 8591/8676/8591 +f 8591/8676/8591 8492/8576/8492 8592/8677/8592 +f 8492/8576/8492 8493/8577/8493 8592/8677/8592 +f 8592/8677/8592 8493/8577/8493 8593/8678/8593 +f 8493/8577/8493 8494/8578/8494 8593/8678/8593 +f 8593/8678/8593 8494/8578/8494 8594/8679/8594 +f 8494/8578/8494 8495/8579/8495 8594/8679/8594 +f 8594/8679/8594 8495/8579/8495 8595/8680/8595 +f 8495/8579/8495 8496/8580/8496 8595/8680/8595 +f 8595/8680/8595 8496/8580/8496 8596/8681/8596 +f 8496/8580/8496 8497/8581/8497 8596/8681/8596 +f 8596/8681/8596 8497/8581/8497 8597/8682/8597 +f 8497/8581/8497 8498/8582/8498 8597/8682/8597 +f 8597/8682/8597 8498/8582/8498 8598/8683/8598 +f 8498/8582/8498 8499/8583/8499 8598/8683/8598 +f 8598/8683/8598 8499/8583/8499 8599/8684/8599 +f 8499/8583/8499 8500/8584/8500 8599/8684/8599 +f 8599/8684/8599 8500/8584/8500 8600/8685/8600 +f 8500/8584/8500 8401/8585/8401 8600/8685/8600 +f 8600/8685/8600 8401/8585/8401 8501/8686/8501 +f 8501/8586/8501 8502/8587/8502 8601/8687/8601 +f 8601/8687/8601 8502/8587/8502 8602/8688/8602 +f 8502/8587/8502 8503/8588/8503 8602/8688/8602 +f 8602/8688/8602 8503/8588/8503 8603/8689/8603 +f 8503/8588/8503 8504/8589/8504 8603/8689/8603 +f 8603/8689/8603 8504/8589/8504 8604/8690/8604 +f 8504/8589/8504 8505/8590/8505 8604/8690/8604 +f 8604/8690/8604 8505/8590/8505 8605/8691/8605 +f 8505/8590/8505 8506/8591/8506 8605/8691/8605 +f 8605/8691/8605 8506/8591/8506 8606/8692/8606 +f 8506/8591/8506 8507/8592/8507 8606/8692/8606 +f 8606/8692/8606 8507/8592/8507 8607/8693/8607 +f 8507/8592/8507 8508/8593/8508 8607/8693/8607 +f 8607/8693/8607 8508/8593/8508 8608/8694/8608 +f 8508/8593/8508 8509/8594/8509 8608/8694/8608 +f 8608/8694/8608 8509/8594/8509 8609/8695/8609 +f 8509/8594/8509 8510/8595/8510 8609/8695/8609 +f 8609/8695/8609 8510/8595/8510 8610/8696/8610 +f 8510/8595/8510 8511/8596/8511 8610/8696/8610 +f 8610/8696/8610 8511/8596/8511 8611/8697/8611 +f 8511/8596/8511 8512/8597/8512 8611/8697/8611 +f 8611/8697/8611 8512/8597/8512 8612/8698/8612 +f 8512/8597/8512 8513/8598/8513 8612/8698/8612 +f 8612/8698/8612 8513/8598/8513 8613/8699/8613 +f 8513/8598/8513 8514/8599/8514 8613/8699/8613 +f 8613/8699/8613 8514/8599/8514 8614/8700/8614 +f 8514/8599/8514 8515/8600/8515 8614/8700/8614 +f 8614/8700/8614 8515/8600/8515 8615/8701/8615 +f 8515/8600/8515 8516/8601/8516 8615/8701/8615 +f 8615/8701/8615 8516/8601/8516 8616/8702/8616 +f 8516/8601/8516 8517/8602/8517 8616/8702/8616 +f 8616/8702/8616 8517/8602/8517 8617/8703/8617 +f 8517/8602/8517 8518/8603/8518 8617/8703/8617 +f 8617/8703/8617 8518/8603/8518 8618/8704/8618 +f 8518/8603/8518 8519/8604/8519 8618/8704/8618 +f 8618/8704/8618 8519/8604/8519 8619/8705/8619 +f 8519/8604/8519 8520/8605/8520 8619/8705/8619 +f 8619/8705/8619 8520/8605/8520 8620/8706/8620 +f 8520/8605/8520 8521/8606/8521 8620/8706/8620 +f 8620/8706/8620 8521/8606/8521 8621/8707/8621 +f 8521/8606/8521 8522/8607/8522 8621/8707/8621 +f 8621/8707/8621 8522/8607/8522 8622/8708/8622 +f 8522/8607/8522 8523/8608/8523 8622/8708/8622 +f 8622/8708/8622 8523/8608/8523 8623/8709/8623 +f 8523/8608/8523 8524/8609/8524 8623/8709/8623 +f 8623/8709/8623 8524/8609/8524 8624/8710/8624 +f 8524/8609/8524 8525/8610/8525 8624/8710/8624 +f 8624/8710/8624 8525/8610/8525 8625/8711/8625 +f 8525/8610/8525 8526/8611/8526 8625/8711/8625 +f 8625/8711/8625 8526/8611/8526 8626/8712/8626 +f 8526/8611/8526 8527/8612/8527 8626/8712/8626 +f 8626/8712/8626 8527/8612/8527 8627/8713/8627 +f 8527/8612/8527 8528/8613/8528 8627/8713/8627 +f 8627/8713/8627 8528/8613/8528 8628/8714/8628 +f 8528/8613/8528 8529/8614/8529 8628/8714/8628 +f 8628/8714/8628 8529/8614/8529 8629/8715/8629 +f 8529/8614/8529 8530/8615/8530 8629/8715/8629 +f 8629/8715/8629 8530/8615/8530 8630/8716/8630 +f 8530/8615/8530 8531/8616/8531 8630/8716/8630 +f 8630/8716/8630 8531/8616/8531 8631/8717/8631 +f 8531/8616/8531 8532/8617/8532 8631/8717/8631 +f 8631/8717/8631 8532/8617/8532 8632/8718/8632 +f 8532/8617/8532 8533/8618/8533 8632/8718/8632 +f 8632/8718/8632 8533/8618/8533 8633/8719/8633 +f 8533/8618/8533 8534/8619/8534 8633/8719/8633 +f 8633/8719/8633 8534/8619/8534 8634/8720/8634 +f 8534/8619/8534 8535/8620/8535 8634/8720/8634 +f 8634/8720/8634 8535/8620/8535 8635/8721/8635 +f 8535/8620/8535 8536/8621/8536 8635/8721/8635 +f 8635/8721/8635 8536/8621/8536 8636/8722/8636 +f 8536/8621/8536 8537/8622/8537 8636/8722/8636 +f 8636/8722/8636 8537/8622/8537 8637/8723/8637 +f 8537/8622/8537 8538/8623/8538 8637/8723/8637 +f 8637/8723/8637 8538/8623/8538 8638/8724/8638 +f 8538/8623/8538 8539/8624/8539 8638/8724/8638 +f 8638/8724/8638 8539/8624/8539 8639/8725/8639 +f 8539/8624/8539 8540/8625/8540 8639/8725/8639 +f 8639/8725/8639 8540/8625/8540 8640/8726/8640 +f 8540/8625/8540 8541/8626/8541 8640/8726/8640 +f 8640/8726/8640 8541/8626/8541 8641/8727/8641 +f 8541/8626/8541 8542/8627/8542 8641/8727/8641 +f 8641/8727/8641 8542/8627/8542 8642/8728/8642 +f 8542/8627/8542 8543/8628/8543 8642/8728/8642 +f 8642/8728/8642 8543/8628/8543 8643/8729/8643 +f 8543/8628/8543 8544/8629/8544 8643/8729/8643 +f 8643/8729/8643 8544/8629/8544 8644/8730/8644 +f 8544/8629/8544 8545/8630/8545 8644/8730/8644 +f 8644/8730/8644 8545/8630/8545 8645/8731/8645 +f 8545/8630/8545 8546/8631/8546 8645/8731/8645 +f 8645/8731/8645 8546/8631/8546 8646/8732/8646 +f 8546/8631/8546 8547/8632/8547 8646/8732/8646 +f 8646/8732/8646 8547/8632/8547 8647/8733/8647 +f 8547/8632/8547 8548/8633/8548 8647/8733/8647 +f 8647/8733/8647 8548/8633/8548 8648/8734/8648 +f 8548/8633/8548 8549/8634/8549 8648/8734/8648 +f 8648/8734/8648 8549/8634/8549 8649/8735/8649 +f 8549/8634/8549 8550/8635/8550 8649/8735/8649 +f 8649/8735/8649 8550/8635/8550 8650/8736/8650 +f 8550/8635/8550 8551/8636/8551 8650/8736/8650 +f 8650/8736/8650 8551/8636/8551 8651/8737/8651 +f 8551/8636/8551 8552/8637/8552 8651/8737/8651 +f 8651/8737/8651 8552/8637/8552 8652/8738/8652 +f 8552/8637/8552 8553/8638/8553 8652/8738/8652 +f 8652/8738/8652 8553/8638/8553 8653/8739/8653 +f 8553/8638/8553 8554/8639/8554 8653/8739/8653 +f 8653/8739/8653 8554/8639/8554 8654/8740/8654 +f 8554/8639/8554 8555/8640/8555 8654/8740/8654 +f 8654/8740/8654 8555/8640/8555 8655/8741/8655 +f 8555/8640/8555 8556/8641/8556 8655/8741/8655 +f 8655/8741/8655 8556/8641/8556 8656/8742/8656 +f 8556/8641/8556 8557/8642/8557 8656/8742/8656 +f 8656/8742/8656 8557/8642/8557 8657/8743/8657 +f 8557/8642/8557 8558/8643/8558 8657/8743/8657 +f 8657/8743/8657 8558/8643/8558 8658/8744/8658 +f 8558/8643/8558 8559/8644/8559 8658/8744/8658 +f 8658/8744/8658 8559/8644/8559 8659/8745/8659 +f 8559/8644/8559 8560/8645/8560 8659/8745/8659 +f 8659/8745/8659 8560/8645/8560 8660/8746/8660 +f 8560/8645/8560 8561/8646/8561 8660/8746/8660 +f 8660/8746/8660 8561/8646/8561 8661/8747/8661 +f 8561/8646/8561 8562/8647/8562 8661/8747/8661 +f 8661/8747/8661 8562/8647/8562 8662/8748/8662 +f 8562/8647/8562 8563/8648/8563 8662/8748/8662 +f 8662/8748/8662 8563/8648/8563 8663/8749/8663 +f 8563/8648/8563 8564/8649/8564 8663/8749/8663 +f 8663/8749/8663 8564/8649/8564 8664/8750/8664 +f 8564/8649/8564 8565/8650/8565 8664/8750/8664 +f 8664/8750/8664 8565/8650/8565 8665/8751/8665 +f 8565/8650/8565 8566/8651/8566 8665/8751/8665 +f 8665/8751/8665 8566/8651/8566 8666/8752/8666 +f 8566/8651/8566 8567/8652/8567 8666/8752/8666 +f 8666/8752/8666 8567/8652/8567 8667/8753/8667 +f 8567/8652/8567 8568/8653/8568 8667/8753/8667 +f 8667/8753/8667 8568/8653/8568 8668/8754/8668 +f 8568/8653/8568 8569/8654/8569 8668/8754/8668 +f 8668/8754/8668 8569/8654/8569 8669/8755/8669 +f 8569/8654/8569 8570/8655/8570 8669/8755/8669 +f 8669/8755/8669 8570/8655/8570 8670/8756/8670 +f 8570/8655/8570 8571/8656/8571 8670/8756/8670 +f 8670/8756/8670 8571/8656/8571 8671/8757/8671 +f 8571/8656/8571 8572/8657/8572 8671/8757/8671 +f 8671/8757/8671 8572/8657/8572 8672/8758/8672 +f 8572/8657/8572 8573/8658/8573 8672/8758/8672 +f 8672/8758/8672 8573/8658/8573 8673/8759/8673 +f 8573/8658/8573 8574/8659/8574 8673/8759/8673 +f 8673/8759/8673 8574/8659/8574 8674/8760/8674 +f 8574/8659/8574 8575/8660/8575 8674/8760/8674 +f 8674/8760/8674 8575/8660/8575 8675/8761/8675 +f 8575/8660/8575 8576/8661/8576 8675/8761/8675 +f 8675/8761/8675 8576/8661/8576 8676/8762/8676 +f 8576/8661/8576 8577/8662/8577 8676/8762/8676 +f 8676/8762/8676 8577/8662/8577 8677/8763/8677 +f 8577/8662/8577 8578/8663/8578 8677/8763/8677 +f 8677/8763/8677 8578/8663/8578 8678/8764/8678 +f 8578/8663/8578 8579/8664/8579 8678/8764/8678 +f 8678/8764/8678 8579/8664/8579 8679/8765/8679 +f 8579/8664/8579 8580/8665/8580 8679/8765/8679 +f 8679/8765/8679 8580/8665/8580 8680/8766/8680 +f 8580/8665/8580 8581/8666/8581 8680/8766/8680 +f 8680/8766/8680 8581/8666/8581 8681/8767/8681 +f 8581/8666/8581 8582/8667/8582 8681/8767/8681 +f 8681/8767/8681 8582/8667/8582 8682/8768/8682 +f 8582/8667/8582 8583/8668/8583 8682/8768/8682 +f 8682/8768/8682 8583/8668/8583 8683/8769/8683 +f 8583/8668/8583 8584/8669/8584 8683/8769/8683 +f 8683/8769/8683 8584/8669/8584 8684/8770/8684 +f 8584/8669/8584 8585/8670/8585 8684/8770/8684 +f 8684/8770/8684 8585/8670/8585 8685/8771/8685 +f 8585/8670/8585 8586/8671/8586 8685/8771/8685 +f 8685/8771/8685 8586/8671/8586 8686/8772/8686 +f 8586/8671/8586 8587/8672/8587 8686/8772/8686 +f 8686/8772/8686 8587/8672/8587 8687/8773/8687 +f 8587/8672/8587 8588/8673/8588 8687/8773/8687 +f 8687/8773/8687 8588/8673/8588 8688/8774/8688 +f 8588/8673/8588 8589/8674/8589 8688/8774/8688 +f 8688/8774/8688 8589/8674/8589 8689/8775/8689 +f 8589/8674/8589 8590/8675/8590 8689/8775/8689 +f 8689/8775/8689 8590/8675/8590 8690/8776/8690 +f 8590/8675/8590 8591/8676/8591 8690/8776/8690 +f 8690/8776/8690 8591/8676/8591 8691/8777/8691 +f 8591/8676/8591 8592/8677/8592 8691/8777/8691 +f 8691/8777/8691 8592/8677/8592 8692/8778/8692 +f 8592/8677/8592 8593/8678/8593 8692/8778/8692 +f 8692/8778/8692 8593/8678/8593 8693/8779/8693 +f 8593/8678/8593 8594/8679/8594 8693/8779/8693 +f 8693/8779/8693 8594/8679/8594 8694/8780/8694 +f 8594/8679/8594 8595/8680/8595 8694/8780/8694 +f 8694/8780/8694 8595/8680/8595 8695/8781/8695 +f 8595/8680/8595 8596/8681/8596 8695/8781/8695 +f 8695/8781/8695 8596/8681/8596 8696/8782/8696 +f 8596/8681/8596 8597/8682/8597 8696/8782/8696 +f 8696/8782/8696 8597/8682/8597 8697/8783/8697 +f 8597/8682/8597 8598/8683/8598 8697/8783/8697 +f 8697/8783/8697 8598/8683/8598 8698/8784/8698 +f 8598/8683/8598 8599/8684/8599 8698/8784/8698 +f 8698/8784/8698 8599/8684/8599 8699/8785/8699 +f 8599/8684/8599 8600/8685/8600 8699/8785/8699 +f 8699/8785/8699 8600/8685/8600 8700/8786/8700 +f 8600/8685/8600 8501/8686/8501 8700/8786/8700 +f 8700/8786/8700 8501/8686/8501 8601/8787/8601 +f 8601/8687/8601 8602/8688/8602 8701/8788/8701 +f 8701/8788/8701 8602/8688/8602 8702/8789/8702 +f 8602/8688/8602 8603/8689/8603 8702/8789/8702 +f 8702/8789/8702 8603/8689/8603 8703/8790/8703 +f 8603/8689/8603 8604/8690/8604 8703/8790/8703 +f 8703/8790/8703 8604/8690/8604 8704/8791/8704 +f 8604/8690/8604 8605/8691/8605 8704/8791/8704 +f 8704/8791/8704 8605/8691/8605 8705/8792/8705 +f 8605/8691/8605 8606/8692/8606 8705/8792/8705 +f 8705/8792/8705 8606/8692/8606 8706/8793/8706 +f 8606/8692/8606 8607/8693/8607 8706/8793/8706 +f 8706/8793/8706 8607/8693/8607 8707/8794/8707 +f 8607/8693/8607 8608/8694/8608 8707/8794/8707 +f 8707/8794/8707 8608/8694/8608 8708/8795/8708 +f 8608/8694/8608 8609/8695/8609 8708/8795/8708 +f 8708/8795/8708 8609/8695/8609 8709/8796/8709 +f 8609/8695/8609 8610/8696/8610 8709/8796/8709 +f 8709/8796/8709 8610/8696/8610 8710/8797/8710 +f 8610/8696/8610 8611/8697/8611 8710/8797/8710 +f 8710/8797/8710 8611/8697/8611 8711/8798/8711 +f 8611/8697/8611 8612/8698/8612 8711/8798/8711 +f 8711/8798/8711 8612/8698/8612 8712/8799/8712 +f 8612/8698/8612 8613/8699/8613 8712/8799/8712 +f 8712/8799/8712 8613/8699/8613 8713/8800/8713 +f 8613/8699/8613 8614/8700/8614 8713/8800/8713 +f 8713/8800/8713 8614/8700/8614 8714/8801/8714 +f 8614/8700/8614 8615/8701/8615 8714/8801/8714 +f 8714/8801/8714 8615/8701/8615 8715/8802/8715 +f 8615/8701/8615 8616/8702/8616 8715/8802/8715 +f 8715/8802/8715 8616/8702/8616 8716/8803/8716 +f 8616/8702/8616 8617/8703/8617 8716/8803/8716 +f 8716/8803/8716 8617/8703/8617 8717/8804/8717 +f 8617/8703/8617 8618/8704/8618 8717/8804/8717 +f 8717/8804/8717 8618/8704/8618 8718/8805/8718 +f 8618/8704/8618 8619/8705/8619 8718/8805/8718 +f 8718/8805/8718 8619/8705/8619 8719/8806/8719 +f 8619/8705/8619 8620/8706/8620 8719/8806/8719 +f 8719/8806/8719 8620/8706/8620 8720/8807/8720 +f 8620/8706/8620 8621/8707/8621 8720/8807/8720 +f 8720/8807/8720 8621/8707/8621 8721/8808/8721 +f 8621/8707/8621 8622/8708/8622 8721/8808/8721 +f 8721/8808/8721 8622/8708/8622 8722/8809/8722 +f 8622/8708/8622 8623/8709/8623 8722/8809/8722 +f 8722/8809/8722 8623/8709/8623 8723/8810/8723 +f 8623/8709/8623 8624/8710/8624 8723/8810/8723 +f 8723/8810/8723 8624/8710/8624 8724/8811/8724 +f 8624/8710/8624 8625/8711/8625 8724/8811/8724 +f 8724/8811/8724 8625/8711/8625 8725/8812/8725 +f 8625/8711/8625 8626/8712/8626 8725/8812/8725 +f 8725/8812/8725 8626/8712/8626 8726/8813/8726 +f 8626/8712/8626 8627/8713/8627 8726/8813/8726 +f 8726/8813/8726 8627/8713/8627 8727/8814/8727 +f 8627/8713/8627 8628/8714/8628 8727/8814/8727 +f 8727/8814/8727 8628/8714/8628 8728/8815/8728 +f 8628/8714/8628 8629/8715/8629 8728/8815/8728 +f 8728/8815/8728 8629/8715/8629 8729/8816/8729 +f 8629/8715/8629 8630/8716/8630 8729/8816/8729 +f 8729/8816/8729 8630/8716/8630 8730/8817/8730 +f 8630/8716/8630 8631/8717/8631 8730/8817/8730 +f 8730/8817/8730 8631/8717/8631 8731/8818/8731 +f 8631/8717/8631 8632/8718/8632 8731/8818/8731 +f 8731/8818/8731 8632/8718/8632 8732/8819/8732 +f 8632/8718/8632 8633/8719/8633 8732/8819/8732 +f 8732/8819/8732 8633/8719/8633 8733/8820/8733 +f 8633/8719/8633 8634/8720/8634 8733/8820/8733 +f 8733/8820/8733 8634/8720/8634 8734/8821/8734 +f 8634/8720/8634 8635/8721/8635 8734/8821/8734 +f 8734/8821/8734 8635/8721/8635 8735/8822/8735 +f 8635/8721/8635 8636/8722/8636 8735/8822/8735 +f 8735/8822/8735 8636/8722/8636 8736/8823/8736 +f 8636/8722/8636 8637/8723/8637 8736/8823/8736 +f 8736/8823/8736 8637/8723/8637 8737/8824/8737 +f 8637/8723/8637 8638/8724/8638 8737/8824/8737 +f 8737/8824/8737 8638/8724/8638 8738/8825/8738 +f 8638/8724/8638 8639/8725/8639 8738/8825/8738 +f 8738/8825/8738 8639/8725/8639 8739/8826/8739 +f 8639/8725/8639 8640/8726/8640 8739/8826/8739 +f 8739/8826/8739 8640/8726/8640 8740/8827/8740 +f 8640/8726/8640 8641/8727/8641 8740/8827/8740 +f 8740/8827/8740 8641/8727/8641 8741/8828/8741 +f 8641/8727/8641 8642/8728/8642 8741/8828/8741 +f 8741/8828/8741 8642/8728/8642 8742/8829/8742 +f 8642/8728/8642 8643/8729/8643 8742/8829/8742 +f 8742/8829/8742 8643/8729/8643 8743/8830/8743 +f 8643/8729/8643 8644/8730/8644 8743/8830/8743 +f 8743/8830/8743 8644/8730/8644 8744/8831/8744 +f 8644/8730/8644 8645/8731/8645 8744/8831/8744 +f 8744/8831/8744 8645/8731/8645 8745/8832/8745 +f 8645/8731/8645 8646/8732/8646 8745/8832/8745 +f 8745/8832/8745 8646/8732/8646 8746/8833/8746 +f 8646/8732/8646 8647/8733/8647 8746/8833/8746 +f 8746/8833/8746 8647/8733/8647 8747/8834/8747 +f 8647/8733/8647 8648/8734/8648 8747/8834/8747 +f 8747/8834/8747 8648/8734/8648 8748/8835/8748 +f 8648/8734/8648 8649/8735/8649 8748/8835/8748 +f 8748/8835/8748 8649/8735/8649 8749/8836/8749 +f 8649/8735/8649 8650/8736/8650 8749/8836/8749 +f 8749/8836/8749 8650/8736/8650 8750/8837/8750 +f 8650/8736/8650 8651/8737/8651 8750/8837/8750 +f 8750/8837/8750 8651/8737/8651 8751/8838/8751 +f 8651/8737/8651 8652/8738/8652 8751/8838/8751 +f 8751/8838/8751 8652/8738/8652 8752/8839/8752 +f 8652/8738/8652 8653/8739/8653 8752/8839/8752 +f 8752/8839/8752 8653/8739/8653 8753/8840/8753 +f 8653/8739/8653 8654/8740/8654 8753/8840/8753 +f 8753/8840/8753 8654/8740/8654 8754/8841/8754 +f 8654/8740/8654 8655/8741/8655 8754/8841/8754 +f 8754/8841/8754 8655/8741/8655 8755/8842/8755 +f 8655/8741/8655 8656/8742/8656 8755/8842/8755 +f 8755/8842/8755 8656/8742/8656 8756/8843/8756 +f 8656/8742/8656 8657/8743/8657 8756/8843/8756 +f 8756/8843/8756 8657/8743/8657 8757/8844/8757 +f 8657/8743/8657 8658/8744/8658 8757/8844/8757 +f 8757/8844/8757 8658/8744/8658 8758/8845/8758 +f 8658/8744/8658 8659/8745/8659 8758/8845/8758 +f 8758/8845/8758 8659/8745/8659 8759/8846/8759 +f 8659/8745/8659 8660/8746/8660 8759/8846/8759 +f 8759/8846/8759 8660/8746/8660 8760/8847/8760 +f 8660/8746/8660 8661/8747/8661 8760/8847/8760 +f 8760/8847/8760 8661/8747/8661 8761/8848/8761 +f 8661/8747/8661 8662/8748/8662 8761/8848/8761 +f 8761/8848/8761 8662/8748/8662 8762/8849/8762 +f 8662/8748/8662 8663/8749/8663 8762/8849/8762 +f 8762/8849/8762 8663/8749/8663 8763/8850/8763 +f 8663/8749/8663 8664/8750/8664 8763/8850/8763 +f 8763/8850/8763 8664/8750/8664 8764/8851/8764 +f 8664/8750/8664 8665/8751/8665 8764/8851/8764 +f 8764/8851/8764 8665/8751/8665 8765/8852/8765 +f 8665/8751/8665 8666/8752/8666 8765/8852/8765 +f 8765/8852/8765 8666/8752/8666 8766/8853/8766 +f 8666/8752/8666 8667/8753/8667 8766/8853/8766 +f 8766/8853/8766 8667/8753/8667 8767/8854/8767 +f 8667/8753/8667 8668/8754/8668 8767/8854/8767 +f 8767/8854/8767 8668/8754/8668 8768/8855/8768 +f 8668/8754/8668 8669/8755/8669 8768/8855/8768 +f 8768/8855/8768 8669/8755/8669 8769/8856/8769 +f 8669/8755/8669 8670/8756/8670 8769/8856/8769 +f 8769/8856/8769 8670/8756/8670 8770/8857/8770 +f 8670/8756/8670 8671/8757/8671 8770/8857/8770 +f 8770/8857/8770 8671/8757/8671 8771/8858/8771 +f 8671/8757/8671 8672/8758/8672 8771/8858/8771 +f 8771/8858/8771 8672/8758/8672 8772/8859/8772 +f 8672/8758/8672 8673/8759/8673 8772/8859/8772 +f 8772/8859/8772 8673/8759/8673 8773/8860/8773 +f 8673/8759/8673 8674/8760/8674 8773/8860/8773 +f 8773/8860/8773 8674/8760/8674 8774/8861/8774 +f 8674/8760/8674 8675/8761/8675 8774/8861/8774 +f 8774/8861/8774 8675/8761/8675 8775/8862/8775 +f 8675/8761/8675 8676/8762/8676 8775/8862/8775 +f 8775/8862/8775 8676/8762/8676 8776/8863/8776 +f 8676/8762/8676 8677/8763/8677 8776/8863/8776 +f 8776/8863/8776 8677/8763/8677 8777/8864/8777 +f 8677/8763/8677 8678/8764/8678 8777/8864/8777 +f 8777/8864/8777 8678/8764/8678 8778/8865/8778 +f 8678/8764/8678 8679/8765/8679 8778/8865/8778 +f 8778/8865/8778 8679/8765/8679 8779/8866/8779 +f 8679/8765/8679 8680/8766/8680 8779/8866/8779 +f 8779/8866/8779 8680/8766/8680 8780/8867/8780 +f 8680/8766/8680 8681/8767/8681 8780/8867/8780 +f 8780/8867/8780 8681/8767/8681 8781/8868/8781 +f 8681/8767/8681 8682/8768/8682 8781/8868/8781 +f 8781/8868/8781 8682/8768/8682 8782/8869/8782 +f 8682/8768/8682 8683/8769/8683 8782/8869/8782 +f 8782/8869/8782 8683/8769/8683 8783/8870/8783 +f 8683/8769/8683 8684/8770/8684 8783/8870/8783 +f 8783/8870/8783 8684/8770/8684 8784/8871/8784 +f 8684/8770/8684 8685/8771/8685 8784/8871/8784 +f 8784/8871/8784 8685/8771/8685 8785/8872/8785 +f 8685/8771/8685 8686/8772/8686 8785/8872/8785 +f 8785/8872/8785 8686/8772/8686 8786/8873/8786 +f 8686/8772/8686 8687/8773/8687 8786/8873/8786 +f 8786/8873/8786 8687/8773/8687 8787/8874/8787 +f 8687/8773/8687 8688/8774/8688 8787/8874/8787 +f 8787/8874/8787 8688/8774/8688 8788/8875/8788 +f 8688/8774/8688 8689/8775/8689 8788/8875/8788 +f 8788/8875/8788 8689/8775/8689 8789/8876/8789 +f 8689/8775/8689 8690/8776/8690 8789/8876/8789 +f 8789/8876/8789 8690/8776/8690 8790/8877/8790 +f 8690/8776/8690 8691/8777/8691 8790/8877/8790 +f 8790/8877/8790 8691/8777/8691 8791/8878/8791 +f 8691/8777/8691 8692/8778/8692 8791/8878/8791 +f 8791/8878/8791 8692/8778/8692 8792/8879/8792 +f 8692/8778/8692 8693/8779/8693 8792/8879/8792 +f 8792/8879/8792 8693/8779/8693 8793/8880/8793 +f 8693/8779/8693 8694/8780/8694 8793/8880/8793 +f 8793/8880/8793 8694/8780/8694 8794/8881/8794 +f 8694/8780/8694 8695/8781/8695 8794/8881/8794 +f 8794/8881/8794 8695/8781/8695 8795/8882/8795 +f 8695/8781/8695 8696/8782/8696 8795/8882/8795 +f 8795/8882/8795 8696/8782/8696 8796/8883/8796 +f 8696/8782/8696 8697/8783/8697 8796/8883/8796 +f 8796/8883/8796 8697/8783/8697 8797/8884/8797 +f 8697/8783/8697 8698/8784/8698 8797/8884/8797 +f 8797/8884/8797 8698/8784/8698 8798/8885/8798 +f 8698/8784/8698 8699/8785/8699 8798/8885/8798 +f 8798/8885/8798 8699/8785/8699 8799/8886/8799 +f 8699/8785/8699 8700/8786/8700 8799/8886/8799 +f 8799/8886/8799 8700/8786/8700 8800/8887/8800 +f 8700/8786/8700 8601/8787/8601 8800/8887/8800 +f 8800/8887/8800 8601/8787/8601 8701/8888/8701 +f 8701/8788/8701 8702/8789/8702 8801/8889/8801 +f 8801/8889/8801 8702/8789/8702 8802/8890/8802 +f 8702/8789/8702 8703/8790/8703 8802/8890/8802 +f 8802/8890/8802 8703/8790/8703 8803/8891/8803 +f 8703/8790/8703 8704/8791/8704 8803/8891/8803 +f 8803/8891/8803 8704/8791/8704 8804/8892/8804 +f 8704/8791/8704 8705/8792/8705 8804/8892/8804 +f 8804/8892/8804 8705/8792/8705 8805/8893/8805 +f 8705/8792/8705 8706/8793/8706 8805/8893/8805 +f 8805/8893/8805 8706/8793/8706 8806/8894/8806 +f 8706/8793/8706 8707/8794/8707 8806/8894/8806 +f 8806/8894/8806 8707/8794/8707 8807/8895/8807 +f 8707/8794/8707 8708/8795/8708 8807/8895/8807 +f 8807/8895/8807 8708/8795/8708 8808/8896/8808 +f 8708/8795/8708 8709/8796/8709 8808/8896/8808 +f 8808/8896/8808 8709/8796/8709 8809/8897/8809 +f 8709/8796/8709 8710/8797/8710 8809/8897/8809 +f 8809/8897/8809 8710/8797/8710 8810/8898/8810 +f 8710/8797/8710 8711/8798/8711 8810/8898/8810 +f 8810/8898/8810 8711/8798/8711 8811/8899/8811 +f 8711/8798/8711 8712/8799/8712 8811/8899/8811 +f 8811/8899/8811 8712/8799/8712 8812/8900/8812 +f 8712/8799/8712 8713/8800/8713 8812/8900/8812 +f 8812/8900/8812 8713/8800/8713 8813/8901/8813 +f 8713/8800/8713 8714/8801/8714 8813/8901/8813 +f 8813/8901/8813 8714/8801/8714 8814/8902/8814 +f 8714/8801/8714 8715/8802/8715 8814/8902/8814 +f 8814/8902/8814 8715/8802/8715 8815/8903/8815 +f 8715/8802/8715 8716/8803/8716 8815/8903/8815 +f 8815/8903/8815 8716/8803/8716 8816/8904/8816 +f 8716/8803/8716 8717/8804/8717 8816/8904/8816 +f 8816/8904/8816 8717/8804/8717 8817/8905/8817 +f 8717/8804/8717 8718/8805/8718 8817/8905/8817 +f 8817/8905/8817 8718/8805/8718 8818/8906/8818 +f 8718/8805/8718 8719/8806/8719 8818/8906/8818 +f 8818/8906/8818 8719/8806/8719 8819/8907/8819 +f 8719/8806/8719 8720/8807/8720 8819/8907/8819 +f 8819/8907/8819 8720/8807/8720 8820/8908/8820 +f 8720/8807/8720 8721/8808/8721 8820/8908/8820 +f 8820/8908/8820 8721/8808/8721 8821/8909/8821 +f 8721/8808/8721 8722/8809/8722 8821/8909/8821 +f 8821/8909/8821 8722/8809/8722 8822/8910/8822 +f 8722/8809/8722 8723/8810/8723 8822/8910/8822 +f 8822/8910/8822 8723/8810/8723 8823/8911/8823 +f 8723/8810/8723 8724/8811/8724 8823/8911/8823 +f 8823/8911/8823 8724/8811/8724 8824/8912/8824 +f 8724/8811/8724 8725/8812/8725 8824/8912/8824 +f 8824/8912/8824 8725/8812/8725 8825/8913/8825 +f 8725/8812/8725 8726/8813/8726 8825/8913/8825 +f 8825/8913/8825 8726/8813/8726 8826/8914/8826 +f 8726/8813/8726 8727/8814/8727 8826/8914/8826 +f 8826/8914/8826 8727/8814/8727 8827/8915/8827 +f 8727/8814/8727 8728/8815/8728 8827/8915/8827 +f 8827/8915/8827 8728/8815/8728 8828/8916/8828 +f 8728/8815/8728 8729/8816/8729 8828/8916/8828 +f 8828/8916/8828 8729/8816/8729 8829/8917/8829 +f 8729/8816/8729 8730/8817/8730 8829/8917/8829 +f 8829/8917/8829 8730/8817/8730 8830/8918/8830 +f 8730/8817/8730 8731/8818/8731 8830/8918/8830 +f 8830/8918/8830 8731/8818/8731 8831/8919/8831 +f 8731/8818/8731 8732/8819/8732 8831/8919/8831 +f 8831/8919/8831 8732/8819/8732 8832/8920/8832 +f 8732/8819/8732 8733/8820/8733 8832/8920/8832 +f 8832/8920/8832 8733/8820/8733 8833/8921/8833 +f 8733/8820/8733 8734/8821/8734 8833/8921/8833 +f 8833/8921/8833 8734/8821/8734 8834/8922/8834 +f 8734/8821/8734 8735/8822/8735 8834/8922/8834 +f 8834/8922/8834 8735/8822/8735 8835/8923/8835 +f 8735/8822/8735 8736/8823/8736 8835/8923/8835 +f 8835/8923/8835 8736/8823/8736 8836/8924/8836 +f 8736/8823/8736 8737/8824/8737 8836/8924/8836 +f 8836/8924/8836 8737/8824/8737 8837/8925/8837 +f 8737/8824/8737 8738/8825/8738 8837/8925/8837 +f 8837/8925/8837 8738/8825/8738 8838/8926/8838 +f 8738/8825/8738 8739/8826/8739 8838/8926/8838 +f 8838/8926/8838 8739/8826/8739 8839/8927/8839 +f 8739/8826/8739 8740/8827/8740 8839/8927/8839 +f 8839/8927/8839 8740/8827/8740 8840/8928/8840 +f 8740/8827/8740 8741/8828/8741 8840/8928/8840 +f 8840/8928/8840 8741/8828/8741 8841/8929/8841 +f 8741/8828/8741 8742/8829/8742 8841/8929/8841 +f 8841/8929/8841 8742/8829/8742 8842/8930/8842 +f 8742/8829/8742 8743/8830/8743 8842/8930/8842 +f 8842/8930/8842 8743/8830/8743 8843/8931/8843 +f 8743/8830/8743 8744/8831/8744 8843/8931/8843 +f 8843/8931/8843 8744/8831/8744 8844/8932/8844 +f 8744/8831/8744 8745/8832/8745 8844/8932/8844 +f 8844/8932/8844 8745/8832/8745 8845/8933/8845 +f 8745/8832/8745 8746/8833/8746 8845/8933/8845 +f 8845/8933/8845 8746/8833/8746 8846/8934/8846 +f 8746/8833/8746 8747/8834/8747 8846/8934/8846 +f 8846/8934/8846 8747/8834/8747 8847/8935/8847 +f 8747/8834/8747 8748/8835/8748 8847/8935/8847 +f 8847/8935/8847 8748/8835/8748 8848/8936/8848 +f 8748/8835/8748 8749/8836/8749 8848/8936/8848 +f 8848/8936/8848 8749/8836/8749 8849/8937/8849 +f 8749/8836/8749 8750/8837/8750 8849/8937/8849 +f 8849/8937/8849 8750/8837/8750 8850/8938/8850 +f 8750/8837/8750 8751/8838/8751 8850/8938/8850 +f 8850/8938/8850 8751/8838/8751 8851/8939/8851 +f 8751/8838/8751 8752/8839/8752 8851/8939/8851 +f 8851/8939/8851 8752/8839/8752 8852/8940/8852 +f 8752/8839/8752 8753/8840/8753 8852/8940/8852 +f 8852/8940/8852 8753/8840/8753 8853/8941/8853 +f 8753/8840/8753 8754/8841/8754 8853/8941/8853 +f 8853/8941/8853 8754/8841/8754 8854/8942/8854 +f 8754/8841/8754 8755/8842/8755 8854/8942/8854 +f 8854/8942/8854 8755/8842/8755 8855/8943/8855 +f 8755/8842/8755 8756/8843/8756 8855/8943/8855 +f 8855/8943/8855 8756/8843/8756 8856/8944/8856 +f 8756/8843/8756 8757/8844/8757 8856/8944/8856 +f 8856/8944/8856 8757/8844/8757 8857/8945/8857 +f 8757/8844/8757 8758/8845/8758 8857/8945/8857 +f 8857/8945/8857 8758/8845/8758 8858/8946/8858 +f 8758/8845/8758 8759/8846/8759 8858/8946/8858 +f 8858/8946/8858 8759/8846/8759 8859/8947/8859 +f 8759/8846/8759 8760/8847/8760 8859/8947/8859 +f 8859/8947/8859 8760/8847/8760 8860/8948/8860 +f 8760/8847/8760 8761/8848/8761 8860/8948/8860 +f 8860/8948/8860 8761/8848/8761 8861/8949/8861 +f 8761/8848/8761 8762/8849/8762 8861/8949/8861 +f 8861/8949/8861 8762/8849/8762 8862/8950/8862 +f 8762/8849/8762 8763/8850/8763 8862/8950/8862 +f 8862/8950/8862 8763/8850/8763 8863/8951/8863 +f 8763/8850/8763 8764/8851/8764 8863/8951/8863 +f 8863/8951/8863 8764/8851/8764 8864/8952/8864 +f 8764/8851/8764 8765/8852/8765 8864/8952/8864 +f 8864/8952/8864 8765/8852/8765 8865/8953/8865 +f 8765/8852/8765 8766/8853/8766 8865/8953/8865 +f 8865/8953/8865 8766/8853/8766 8866/8954/8866 +f 8766/8853/8766 8767/8854/8767 8866/8954/8866 +f 8866/8954/8866 8767/8854/8767 8867/8955/8867 +f 8767/8854/8767 8768/8855/8768 8867/8955/8867 +f 8867/8955/8867 8768/8855/8768 8868/8956/8868 +f 8768/8855/8768 8769/8856/8769 8868/8956/8868 +f 8868/8956/8868 8769/8856/8769 8869/8957/8869 +f 8769/8856/8769 8770/8857/8770 8869/8957/8869 +f 8869/8957/8869 8770/8857/8770 8870/8958/8870 +f 8770/8857/8770 8771/8858/8771 8870/8958/8870 +f 8870/8958/8870 8771/8858/8771 8871/8959/8871 +f 8771/8858/8771 8772/8859/8772 8871/8959/8871 +f 8871/8959/8871 8772/8859/8772 8872/8960/8872 +f 8772/8859/8772 8773/8860/8773 8872/8960/8872 +f 8872/8960/8872 8773/8860/8773 8873/8961/8873 +f 8773/8860/8773 8774/8861/8774 8873/8961/8873 +f 8873/8961/8873 8774/8861/8774 8874/8962/8874 +f 8774/8861/8774 8775/8862/8775 8874/8962/8874 +f 8874/8962/8874 8775/8862/8775 8875/8963/8875 +f 8775/8862/8775 8776/8863/8776 8875/8963/8875 +f 8875/8963/8875 8776/8863/8776 8876/8964/8876 +f 8776/8863/8776 8777/8864/8777 8876/8964/8876 +f 8876/8964/8876 8777/8864/8777 8877/8965/8877 +f 8777/8864/8777 8778/8865/8778 8877/8965/8877 +f 8877/8965/8877 8778/8865/8778 8878/8966/8878 +f 8778/8865/8778 8779/8866/8779 8878/8966/8878 +f 8878/8966/8878 8779/8866/8779 8879/8967/8879 +f 8779/8866/8779 8780/8867/8780 8879/8967/8879 +f 8879/8967/8879 8780/8867/8780 8880/8968/8880 +f 8780/8867/8780 8781/8868/8781 8880/8968/8880 +f 8880/8968/8880 8781/8868/8781 8881/8969/8881 +f 8781/8868/8781 8782/8869/8782 8881/8969/8881 +f 8881/8969/8881 8782/8869/8782 8882/8970/8882 +f 8782/8869/8782 8783/8870/8783 8882/8970/8882 +f 8882/8970/8882 8783/8870/8783 8883/8971/8883 +f 8783/8870/8783 8784/8871/8784 8883/8971/8883 +f 8883/8971/8883 8784/8871/8784 8884/8972/8884 +f 8784/8871/8784 8785/8872/8785 8884/8972/8884 +f 8884/8972/8884 8785/8872/8785 8885/8973/8885 +f 8785/8872/8785 8786/8873/8786 8885/8973/8885 +f 8885/8973/8885 8786/8873/8786 8886/8974/8886 +f 8786/8873/8786 8787/8874/8787 8886/8974/8886 +f 8886/8974/8886 8787/8874/8787 8887/8975/8887 +f 8787/8874/8787 8788/8875/8788 8887/8975/8887 +f 8887/8975/8887 8788/8875/8788 8888/8976/8888 +f 8788/8875/8788 8789/8876/8789 8888/8976/8888 +f 8888/8976/8888 8789/8876/8789 8889/8977/8889 +f 8789/8876/8789 8790/8877/8790 8889/8977/8889 +f 8889/8977/8889 8790/8877/8790 8890/8978/8890 +f 8790/8877/8790 8791/8878/8791 8890/8978/8890 +f 8890/8978/8890 8791/8878/8791 8891/8979/8891 +f 8791/8878/8791 8792/8879/8792 8891/8979/8891 +f 8891/8979/8891 8792/8879/8792 8892/8980/8892 +f 8792/8879/8792 8793/8880/8793 8892/8980/8892 +f 8892/8980/8892 8793/8880/8793 8893/8981/8893 +f 8793/8880/8793 8794/8881/8794 8893/8981/8893 +f 8893/8981/8893 8794/8881/8794 8894/8982/8894 +f 8794/8881/8794 8795/8882/8795 8894/8982/8894 +f 8894/8982/8894 8795/8882/8795 8895/8983/8895 +f 8795/8882/8795 8796/8883/8796 8895/8983/8895 +f 8895/8983/8895 8796/8883/8796 8896/8984/8896 +f 8796/8883/8796 8797/8884/8797 8896/8984/8896 +f 8896/8984/8896 8797/8884/8797 8897/8985/8897 +f 8797/8884/8797 8798/8885/8798 8897/8985/8897 +f 8897/8985/8897 8798/8885/8798 8898/8986/8898 +f 8798/8885/8798 8799/8886/8799 8898/8986/8898 +f 8898/8986/8898 8799/8886/8799 8899/8987/8899 +f 8799/8886/8799 8800/8887/8800 8899/8987/8899 +f 8899/8987/8899 8800/8887/8800 8900/8988/8900 +f 8800/8887/8800 8701/8888/8701 8900/8988/8900 +f 8900/8988/8900 8701/8888/8701 8801/8989/8801 +f 8801/8889/8801 8802/8890/8802 8901/8990/8901 +f 8901/8990/8901 8802/8890/8802 8902/8991/8902 +f 8802/8890/8802 8803/8891/8803 8902/8991/8902 +f 8902/8991/8902 8803/8891/8803 8903/8992/8903 +f 8803/8891/8803 8804/8892/8804 8903/8992/8903 +f 8903/8992/8903 8804/8892/8804 8904/8993/8904 +f 8804/8892/8804 8805/8893/8805 8904/8993/8904 +f 8904/8993/8904 8805/8893/8805 8905/8994/8905 +f 8805/8893/8805 8806/8894/8806 8905/8994/8905 +f 8905/8994/8905 8806/8894/8806 8906/8995/8906 +f 8806/8894/8806 8807/8895/8807 8906/8995/8906 +f 8906/8995/8906 8807/8895/8807 8907/8996/8907 +f 8807/8895/8807 8808/8896/8808 8907/8996/8907 +f 8907/8996/8907 8808/8896/8808 8908/8997/8908 +f 8808/8896/8808 8809/8897/8809 8908/8997/8908 +f 8908/8997/8908 8809/8897/8809 8909/8998/8909 +f 8809/8897/8809 8810/8898/8810 8909/8998/8909 +f 8909/8998/8909 8810/8898/8810 8910/8999/8910 +f 8810/8898/8810 8811/8899/8811 8910/8999/8910 +f 8910/8999/8910 8811/8899/8811 8911/9000/8911 +f 8811/8899/8811 8812/8900/8812 8911/9000/8911 +f 8911/9000/8911 8812/8900/8812 8912/9001/8912 +f 8812/8900/8812 8813/8901/8813 8912/9001/8912 +f 8912/9001/8912 8813/8901/8813 8913/9002/8913 +f 8813/8901/8813 8814/8902/8814 8913/9002/8913 +f 8913/9002/8913 8814/8902/8814 8914/9003/8914 +f 8814/8902/8814 8815/8903/8815 8914/9003/8914 +f 8914/9003/8914 8815/8903/8815 8915/9004/8915 +f 8815/8903/8815 8816/8904/8816 8915/9004/8915 +f 8915/9004/8915 8816/8904/8816 8916/9005/8916 +f 8816/8904/8816 8817/8905/8817 8916/9005/8916 +f 8916/9005/8916 8817/8905/8817 8917/9006/8917 +f 8817/8905/8817 8818/8906/8818 8917/9006/8917 +f 8917/9006/8917 8818/8906/8818 8918/9007/8918 +f 8818/8906/8818 8819/8907/8819 8918/9007/8918 +f 8918/9007/8918 8819/8907/8819 8919/9008/8919 +f 8819/8907/8819 8820/8908/8820 8919/9008/8919 +f 8919/9008/8919 8820/8908/8820 8920/9009/8920 +f 8820/8908/8820 8821/8909/8821 8920/9009/8920 +f 8920/9009/8920 8821/8909/8821 8921/9010/8921 +f 8821/8909/8821 8822/8910/8822 8921/9010/8921 +f 8921/9010/8921 8822/8910/8822 8922/9011/8922 +f 8822/8910/8822 8823/8911/8823 8922/9011/8922 +f 8922/9011/8922 8823/8911/8823 8923/9012/8923 +f 8823/8911/8823 8824/8912/8824 8923/9012/8923 +f 8923/9012/8923 8824/8912/8824 8924/9013/8924 +f 8824/8912/8824 8825/8913/8825 8924/9013/8924 +f 8924/9013/8924 8825/8913/8825 8925/9014/8925 +f 8825/8913/8825 8826/8914/8826 8925/9014/8925 +f 8925/9014/8925 8826/8914/8826 8926/9015/8926 +f 8826/8914/8826 8827/8915/8827 8926/9015/8926 +f 8926/9015/8926 8827/8915/8827 8927/9016/8927 +f 8827/8915/8827 8828/8916/8828 8927/9016/8927 +f 8927/9016/8927 8828/8916/8828 8928/9017/8928 +f 8828/8916/8828 8829/8917/8829 8928/9017/8928 +f 8928/9017/8928 8829/8917/8829 8929/9018/8929 +f 8829/8917/8829 8830/8918/8830 8929/9018/8929 +f 8929/9018/8929 8830/8918/8830 8930/9019/8930 +f 8830/8918/8830 8831/8919/8831 8930/9019/8930 +f 8930/9019/8930 8831/8919/8831 8931/9020/8931 +f 8831/8919/8831 8832/8920/8832 8931/9020/8931 +f 8931/9020/8931 8832/8920/8832 8932/9021/8932 +f 8832/8920/8832 8833/8921/8833 8932/9021/8932 +f 8932/9021/8932 8833/8921/8833 8933/9022/8933 +f 8833/8921/8833 8834/8922/8834 8933/9022/8933 +f 8933/9022/8933 8834/8922/8834 8934/9023/8934 +f 8834/8922/8834 8835/8923/8835 8934/9023/8934 +f 8934/9023/8934 8835/8923/8835 8935/9024/8935 +f 8835/8923/8835 8836/8924/8836 8935/9024/8935 +f 8935/9024/8935 8836/8924/8836 8936/9025/8936 +f 8836/8924/8836 8837/8925/8837 8936/9025/8936 +f 8936/9025/8936 8837/8925/8837 8937/9026/8937 +f 8837/8925/8837 8838/8926/8838 8937/9026/8937 +f 8937/9026/8937 8838/8926/8838 8938/9027/8938 +f 8838/8926/8838 8839/8927/8839 8938/9027/8938 +f 8938/9027/8938 8839/8927/8839 8939/9028/8939 +f 8839/8927/8839 8840/8928/8840 8939/9028/8939 +f 8939/9028/8939 8840/8928/8840 8940/9029/8940 +f 8840/8928/8840 8841/8929/8841 8940/9029/8940 +f 8940/9029/8940 8841/8929/8841 8941/9030/8941 +f 8841/8929/8841 8842/8930/8842 8941/9030/8941 +f 8941/9030/8941 8842/8930/8842 8942/9031/8942 +f 8842/8930/8842 8843/8931/8843 8942/9031/8942 +f 8942/9031/8942 8843/8931/8843 8943/9032/8943 +f 8843/8931/8843 8844/8932/8844 8943/9032/8943 +f 8943/9032/8943 8844/8932/8844 8944/9033/8944 +f 8844/8932/8844 8845/8933/8845 8944/9033/8944 +f 8944/9033/8944 8845/8933/8845 8945/9034/8945 +f 8845/8933/8845 8846/8934/8846 8945/9034/8945 +f 8945/9034/8945 8846/8934/8846 8946/9035/8946 +f 8846/8934/8846 8847/8935/8847 8946/9035/8946 +f 8946/9035/8946 8847/8935/8847 8947/9036/8947 +f 8847/8935/8847 8848/8936/8848 8947/9036/8947 +f 8947/9036/8947 8848/8936/8848 8948/9037/8948 +f 8848/8936/8848 8849/8937/8849 8948/9037/8948 +f 8948/9037/8948 8849/8937/8849 8949/9038/8949 +f 8849/8937/8849 8850/8938/8850 8949/9038/8949 +f 8949/9038/8949 8850/8938/8850 8950/9039/8950 +f 8850/8938/8850 8851/8939/8851 8950/9039/8950 +f 8950/9039/8950 8851/8939/8851 8951/9040/8951 +f 8851/8939/8851 8852/8940/8852 8951/9040/8951 +f 8951/9040/8951 8852/8940/8852 8952/9041/8952 +f 8852/8940/8852 8853/8941/8853 8952/9041/8952 +f 8952/9041/8952 8853/8941/8853 8953/9042/8953 +f 8853/8941/8853 8854/8942/8854 8953/9042/8953 +f 8953/9042/8953 8854/8942/8854 8954/9043/8954 +f 8854/8942/8854 8855/8943/8855 8954/9043/8954 +f 8954/9043/8954 8855/8943/8855 8955/9044/8955 +f 8855/8943/8855 8856/8944/8856 8955/9044/8955 +f 8955/9044/8955 8856/8944/8856 8956/9045/8956 +f 8856/8944/8856 8857/8945/8857 8956/9045/8956 +f 8956/9045/8956 8857/8945/8857 8957/9046/8957 +f 8857/8945/8857 8858/8946/8858 8957/9046/8957 +f 8957/9046/8957 8858/8946/8858 8958/9047/8958 +f 8858/8946/8858 8859/8947/8859 8958/9047/8958 +f 8958/9047/8958 8859/8947/8859 8959/9048/8959 +f 8859/8947/8859 8860/8948/8860 8959/9048/8959 +f 8959/9048/8959 8860/8948/8860 8960/9049/8960 +f 8860/8948/8860 8861/8949/8861 8960/9049/8960 +f 8960/9049/8960 8861/8949/8861 8961/9050/8961 +f 8861/8949/8861 8862/8950/8862 8961/9050/8961 +f 8961/9050/8961 8862/8950/8862 8962/9051/8962 +f 8862/8950/8862 8863/8951/8863 8962/9051/8962 +f 8962/9051/8962 8863/8951/8863 8963/9052/8963 +f 8863/8951/8863 8864/8952/8864 8963/9052/8963 +f 8963/9052/8963 8864/8952/8864 8964/9053/8964 +f 8864/8952/8864 8865/8953/8865 8964/9053/8964 +f 8964/9053/8964 8865/8953/8865 8965/9054/8965 +f 8865/8953/8865 8866/8954/8866 8965/9054/8965 +f 8965/9054/8965 8866/8954/8866 8966/9055/8966 +f 8866/8954/8866 8867/8955/8867 8966/9055/8966 +f 8966/9055/8966 8867/8955/8867 8967/9056/8967 +f 8867/8955/8867 8868/8956/8868 8967/9056/8967 +f 8967/9056/8967 8868/8956/8868 8968/9057/8968 +f 8868/8956/8868 8869/8957/8869 8968/9057/8968 +f 8968/9057/8968 8869/8957/8869 8969/9058/8969 +f 8869/8957/8869 8870/8958/8870 8969/9058/8969 +f 8969/9058/8969 8870/8958/8870 8970/9059/8970 +f 8870/8958/8870 8871/8959/8871 8970/9059/8970 +f 8970/9059/8970 8871/8959/8871 8971/9060/8971 +f 8871/8959/8871 8872/8960/8872 8971/9060/8971 +f 8971/9060/8971 8872/8960/8872 8972/9061/8972 +f 8872/8960/8872 8873/8961/8873 8972/9061/8972 +f 8972/9061/8972 8873/8961/8873 8973/9062/8973 +f 8873/8961/8873 8874/8962/8874 8973/9062/8973 +f 8973/9062/8973 8874/8962/8874 8974/9063/8974 +f 8874/8962/8874 8875/8963/8875 8974/9063/8974 +f 8974/9063/8974 8875/8963/8875 8975/9064/8975 +f 8875/8963/8875 8876/8964/8876 8975/9064/8975 +f 8975/9064/8975 8876/8964/8876 8976/9065/8976 +f 8876/8964/8876 8877/8965/8877 8976/9065/8976 +f 8976/9065/8976 8877/8965/8877 8977/9066/8977 +f 8877/8965/8877 8878/8966/8878 8977/9066/8977 +f 8977/9066/8977 8878/8966/8878 8978/9067/8978 +f 8878/8966/8878 8879/8967/8879 8978/9067/8978 +f 8978/9067/8978 8879/8967/8879 8979/9068/8979 +f 8879/8967/8879 8880/8968/8880 8979/9068/8979 +f 8979/9068/8979 8880/8968/8880 8980/9069/8980 +f 8880/8968/8880 8881/8969/8881 8980/9069/8980 +f 8980/9069/8980 8881/8969/8881 8981/9070/8981 +f 8881/8969/8881 8882/8970/8882 8981/9070/8981 +f 8981/9070/8981 8882/8970/8882 8982/9071/8982 +f 8882/8970/8882 8883/8971/8883 8982/9071/8982 +f 8982/9071/8982 8883/8971/8883 8983/9072/8983 +f 8883/8971/8883 8884/8972/8884 8983/9072/8983 +f 8983/9072/8983 8884/8972/8884 8984/9073/8984 +f 8884/8972/8884 8885/8973/8885 8984/9073/8984 +f 8984/9073/8984 8885/8973/8885 8985/9074/8985 +f 8885/8973/8885 8886/8974/8886 8985/9074/8985 +f 8985/9074/8985 8886/8974/8886 8986/9075/8986 +f 8886/8974/8886 8887/8975/8887 8986/9075/8986 +f 8986/9075/8986 8887/8975/8887 8987/9076/8987 +f 8887/8975/8887 8888/8976/8888 8987/9076/8987 +f 8987/9076/8987 8888/8976/8888 8988/9077/8988 +f 8888/8976/8888 8889/8977/8889 8988/9077/8988 +f 8988/9077/8988 8889/8977/8889 8989/9078/8989 +f 8889/8977/8889 8890/8978/8890 8989/9078/8989 +f 8989/9078/8989 8890/8978/8890 8990/9079/8990 +f 8890/8978/8890 8891/8979/8891 8990/9079/8990 +f 8990/9079/8990 8891/8979/8891 8991/9080/8991 +f 8891/8979/8891 8892/8980/8892 8991/9080/8991 +f 8991/9080/8991 8892/8980/8892 8992/9081/8992 +f 8892/8980/8892 8893/8981/8893 8992/9081/8992 +f 8992/9081/8992 8893/8981/8893 8993/9082/8993 +f 8893/8981/8893 8894/8982/8894 8993/9082/8993 +f 8993/9082/8993 8894/8982/8894 8994/9083/8994 +f 8894/8982/8894 8895/8983/8895 8994/9083/8994 +f 8994/9083/8994 8895/8983/8895 8995/9084/8995 +f 8895/8983/8895 8896/8984/8896 8995/9084/8995 +f 8995/9084/8995 8896/8984/8896 8996/9085/8996 +f 8896/8984/8896 8897/8985/8897 8996/9085/8996 +f 8996/9085/8996 8897/8985/8897 8997/9086/8997 +f 8897/8985/8897 8898/8986/8898 8997/9086/8997 +f 8997/9086/8997 8898/8986/8898 8998/9087/8998 +f 8898/8986/8898 8899/8987/8899 8998/9087/8998 +f 8998/9087/8998 8899/8987/8899 8999/9088/8999 +f 8899/8987/8899 8900/8988/8900 8999/9088/8999 +f 8999/9088/8999 8900/8988/8900 9000/9089/9000 +f 8900/8988/8900 8801/8989/8801 9000/9089/9000 +f 9000/9089/9000 8801/8989/8801 8901/9090/8901 +f 8901/8990/8901 8902/8991/8902 9001/9091/9001 +f 9001/9091/9001 8902/8991/8902 9002/9092/9002 +f 8902/8991/8902 8903/8992/8903 9002/9092/9002 +f 9002/9092/9002 8903/8992/8903 9003/9093/9003 +f 8903/8992/8903 8904/8993/8904 9003/9093/9003 +f 9003/9093/9003 8904/8993/8904 9004/9094/9004 +f 8904/8993/8904 8905/8994/8905 9004/9094/9004 +f 9004/9094/9004 8905/8994/8905 9005/9095/9005 +f 8905/8994/8905 8906/8995/8906 9005/9095/9005 +f 9005/9095/9005 8906/8995/8906 9006/9096/9006 +f 8906/8995/8906 8907/8996/8907 9006/9096/9006 +f 9006/9096/9006 8907/8996/8907 9007/9097/9007 +f 8907/8996/8907 8908/8997/8908 9007/9097/9007 +f 9007/9097/9007 8908/8997/8908 9008/9098/9008 +f 8908/8997/8908 8909/8998/8909 9008/9098/9008 +f 9008/9098/9008 8909/8998/8909 9009/9099/9009 +f 8909/8998/8909 8910/8999/8910 9009/9099/9009 +f 9009/9099/9009 8910/8999/8910 9010/9100/9010 +f 8910/8999/8910 8911/9000/8911 9010/9100/9010 +f 9010/9100/9010 8911/9000/8911 9011/9101/9011 +f 8911/9000/8911 8912/9001/8912 9011/9101/9011 +f 9011/9101/9011 8912/9001/8912 9012/9102/9012 +f 8912/9001/8912 8913/9002/8913 9012/9102/9012 +f 9012/9102/9012 8913/9002/8913 9013/9103/9013 +f 8913/9002/8913 8914/9003/8914 9013/9103/9013 +f 9013/9103/9013 8914/9003/8914 9014/9104/9014 +f 8914/9003/8914 8915/9004/8915 9014/9104/9014 +f 9014/9104/9014 8915/9004/8915 9015/9105/9015 +f 8915/9004/8915 8916/9005/8916 9015/9105/9015 +f 9015/9105/9015 8916/9005/8916 9016/9106/9016 +f 8916/9005/8916 8917/9006/8917 9016/9106/9016 +f 9016/9106/9016 8917/9006/8917 9017/9107/9017 +f 8917/9006/8917 8918/9007/8918 9017/9107/9017 +f 9017/9107/9017 8918/9007/8918 9018/9108/9018 +f 8918/9007/8918 8919/9008/8919 9018/9108/9018 +f 9018/9108/9018 8919/9008/8919 9019/9109/9019 +f 8919/9008/8919 8920/9009/8920 9019/9109/9019 +f 9019/9109/9019 8920/9009/8920 9020/9110/9020 +f 8920/9009/8920 8921/9010/8921 9020/9110/9020 +f 9020/9110/9020 8921/9010/8921 9021/9111/9021 +f 8921/9010/8921 8922/9011/8922 9021/9111/9021 +f 9021/9111/9021 8922/9011/8922 9022/9112/9022 +f 8922/9011/8922 8923/9012/8923 9022/9112/9022 +f 9022/9112/9022 8923/9012/8923 9023/9113/9023 +f 8923/9012/8923 8924/9013/8924 9023/9113/9023 +f 9023/9113/9023 8924/9013/8924 9024/9114/9024 +f 8924/9013/8924 8925/9014/8925 9024/9114/9024 +f 9024/9114/9024 8925/9014/8925 9025/9115/9025 +f 8925/9014/8925 8926/9015/8926 9025/9115/9025 +f 9025/9115/9025 8926/9015/8926 9026/9116/9026 +f 8926/9015/8926 8927/9016/8927 9026/9116/9026 +f 9026/9116/9026 8927/9016/8927 9027/9117/9027 +f 8927/9016/8927 8928/9017/8928 9027/9117/9027 +f 9027/9117/9027 8928/9017/8928 9028/9118/9028 +f 8928/9017/8928 8929/9018/8929 9028/9118/9028 +f 9028/9118/9028 8929/9018/8929 9029/9119/9029 +f 8929/9018/8929 8930/9019/8930 9029/9119/9029 +f 9029/9119/9029 8930/9019/8930 9030/9120/9030 +f 8930/9019/8930 8931/9020/8931 9030/9120/9030 +f 9030/9120/9030 8931/9020/8931 9031/9121/9031 +f 8931/9020/8931 8932/9021/8932 9031/9121/9031 +f 9031/9121/9031 8932/9021/8932 9032/9122/9032 +f 8932/9021/8932 8933/9022/8933 9032/9122/9032 +f 9032/9122/9032 8933/9022/8933 9033/9123/9033 +f 8933/9022/8933 8934/9023/8934 9033/9123/9033 +f 9033/9123/9033 8934/9023/8934 9034/9124/9034 +f 8934/9023/8934 8935/9024/8935 9034/9124/9034 +f 9034/9124/9034 8935/9024/8935 9035/9125/9035 +f 8935/9024/8935 8936/9025/8936 9035/9125/9035 +f 9035/9125/9035 8936/9025/8936 9036/9126/9036 +f 8936/9025/8936 8937/9026/8937 9036/9126/9036 +f 9036/9126/9036 8937/9026/8937 9037/9127/9037 +f 8937/9026/8937 8938/9027/8938 9037/9127/9037 +f 9037/9127/9037 8938/9027/8938 9038/9128/9038 +f 8938/9027/8938 8939/9028/8939 9038/9128/9038 +f 9038/9128/9038 8939/9028/8939 9039/9129/9039 +f 8939/9028/8939 8940/9029/8940 9039/9129/9039 +f 9039/9129/9039 8940/9029/8940 9040/9130/9040 +f 8940/9029/8940 8941/9030/8941 9040/9130/9040 +f 9040/9130/9040 8941/9030/8941 9041/9131/9041 +f 8941/9030/8941 8942/9031/8942 9041/9131/9041 +f 9041/9131/9041 8942/9031/8942 9042/9132/9042 +f 8942/9031/8942 8943/9032/8943 9042/9132/9042 +f 9042/9132/9042 8943/9032/8943 9043/9133/9043 +f 8943/9032/8943 8944/9033/8944 9043/9133/9043 +f 9043/9133/9043 8944/9033/8944 9044/9134/9044 +f 8944/9033/8944 8945/9034/8945 9044/9134/9044 +f 9044/9134/9044 8945/9034/8945 9045/9135/9045 +f 8945/9034/8945 8946/9035/8946 9045/9135/9045 +f 9045/9135/9045 8946/9035/8946 9046/9136/9046 +f 8946/9035/8946 8947/9036/8947 9046/9136/9046 +f 9046/9136/9046 8947/9036/8947 9047/9137/9047 +f 8947/9036/8947 8948/9037/8948 9047/9137/9047 +f 9047/9137/9047 8948/9037/8948 9048/9138/9048 +f 8948/9037/8948 8949/9038/8949 9048/9138/9048 +f 9048/9138/9048 8949/9038/8949 9049/9139/9049 +f 8949/9038/8949 8950/9039/8950 9049/9139/9049 +f 9049/9139/9049 8950/9039/8950 9050/9140/9050 +f 8950/9039/8950 8951/9040/8951 9050/9140/9050 +f 9050/9140/9050 8951/9040/8951 9051/9141/9051 +f 8951/9040/8951 8952/9041/8952 9051/9141/9051 +f 9051/9141/9051 8952/9041/8952 9052/9142/9052 +f 8952/9041/8952 8953/9042/8953 9052/9142/9052 +f 9052/9142/9052 8953/9042/8953 9053/9143/9053 +f 8953/9042/8953 8954/9043/8954 9053/9143/9053 +f 9053/9143/9053 8954/9043/8954 9054/9144/9054 +f 8954/9043/8954 8955/9044/8955 9054/9144/9054 +f 9054/9144/9054 8955/9044/8955 9055/9145/9055 +f 8955/9044/8955 8956/9045/8956 9055/9145/9055 +f 9055/9145/9055 8956/9045/8956 9056/9146/9056 +f 8956/9045/8956 8957/9046/8957 9056/9146/9056 +f 9056/9146/9056 8957/9046/8957 9057/9147/9057 +f 8957/9046/8957 8958/9047/8958 9057/9147/9057 +f 9057/9147/9057 8958/9047/8958 9058/9148/9058 +f 8958/9047/8958 8959/9048/8959 9058/9148/9058 +f 9058/9148/9058 8959/9048/8959 9059/9149/9059 +f 8959/9048/8959 8960/9049/8960 9059/9149/9059 +f 9059/9149/9059 8960/9049/8960 9060/9150/9060 +f 8960/9049/8960 8961/9050/8961 9060/9150/9060 +f 9060/9150/9060 8961/9050/8961 9061/9151/9061 +f 8961/9050/8961 8962/9051/8962 9061/9151/9061 +f 9061/9151/9061 8962/9051/8962 9062/9152/9062 +f 8962/9051/8962 8963/9052/8963 9062/9152/9062 +f 9062/9152/9062 8963/9052/8963 9063/9153/9063 +f 8963/9052/8963 8964/9053/8964 9063/9153/9063 +f 9063/9153/9063 8964/9053/8964 9064/9154/9064 +f 8964/9053/8964 8965/9054/8965 9064/9154/9064 +f 9064/9154/9064 8965/9054/8965 9065/9155/9065 +f 8965/9054/8965 8966/9055/8966 9065/9155/9065 +f 9065/9155/9065 8966/9055/8966 9066/9156/9066 +f 8966/9055/8966 8967/9056/8967 9066/9156/9066 +f 9066/9156/9066 8967/9056/8967 9067/9157/9067 +f 8967/9056/8967 8968/9057/8968 9067/9157/9067 +f 9067/9157/9067 8968/9057/8968 9068/9158/9068 +f 8968/9057/8968 8969/9058/8969 9068/9158/9068 +f 9068/9158/9068 8969/9058/8969 9069/9159/9069 +f 8969/9058/8969 8970/9059/8970 9069/9159/9069 +f 9069/9159/9069 8970/9059/8970 9070/9160/9070 +f 8970/9059/8970 8971/9060/8971 9070/9160/9070 +f 9070/9160/9070 8971/9060/8971 9071/9161/9071 +f 8971/9060/8971 8972/9061/8972 9071/9161/9071 +f 9071/9161/9071 8972/9061/8972 9072/9162/9072 +f 8972/9061/8972 8973/9062/8973 9072/9162/9072 +f 9072/9162/9072 8973/9062/8973 9073/9163/9073 +f 8973/9062/8973 8974/9063/8974 9073/9163/9073 +f 9073/9163/9073 8974/9063/8974 9074/9164/9074 +f 8974/9063/8974 8975/9064/8975 9074/9164/9074 +f 9074/9164/9074 8975/9064/8975 9075/9165/9075 +f 8975/9064/8975 8976/9065/8976 9075/9165/9075 +f 9075/9165/9075 8976/9065/8976 9076/9166/9076 +f 8976/9065/8976 8977/9066/8977 9076/9166/9076 +f 9076/9166/9076 8977/9066/8977 9077/9167/9077 +f 8977/9066/8977 8978/9067/8978 9077/9167/9077 +f 9077/9167/9077 8978/9067/8978 9078/9168/9078 +f 8978/9067/8978 8979/9068/8979 9078/9168/9078 +f 9078/9168/9078 8979/9068/8979 9079/9169/9079 +f 8979/9068/8979 8980/9069/8980 9079/9169/9079 +f 9079/9169/9079 8980/9069/8980 9080/9170/9080 +f 8980/9069/8980 8981/9070/8981 9080/9170/9080 +f 9080/9170/9080 8981/9070/8981 9081/9171/9081 +f 8981/9070/8981 8982/9071/8982 9081/9171/9081 +f 9081/9171/9081 8982/9071/8982 9082/9172/9082 +f 8982/9071/8982 8983/9072/8983 9082/9172/9082 +f 9082/9172/9082 8983/9072/8983 9083/9173/9083 +f 8983/9072/8983 8984/9073/8984 9083/9173/9083 +f 9083/9173/9083 8984/9073/8984 9084/9174/9084 +f 8984/9073/8984 8985/9074/8985 9084/9174/9084 +f 9084/9174/9084 8985/9074/8985 9085/9175/9085 +f 8985/9074/8985 8986/9075/8986 9085/9175/9085 +f 9085/9175/9085 8986/9075/8986 9086/9176/9086 +f 8986/9075/8986 8987/9076/8987 9086/9176/9086 +f 9086/9176/9086 8987/9076/8987 9087/9177/9087 +f 8987/9076/8987 8988/9077/8988 9087/9177/9087 +f 9087/9177/9087 8988/9077/8988 9088/9178/9088 +f 8988/9077/8988 8989/9078/8989 9088/9178/9088 +f 9088/9178/9088 8989/9078/8989 9089/9179/9089 +f 8989/9078/8989 8990/9079/8990 9089/9179/9089 +f 9089/9179/9089 8990/9079/8990 9090/9180/9090 +f 8990/9079/8990 8991/9080/8991 9090/9180/9090 +f 9090/9180/9090 8991/9080/8991 9091/9181/9091 +f 8991/9080/8991 8992/9081/8992 9091/9181/9091 +f 9091/9181/9091 8992/9081/8992 9092/9182/9092 +f 8992/9081/8992 8993/9082/8993 9092/9182/9092 +f 9092/9182/9092 8993/9082/8993 9093/9183/9093 +f 8993/9082/8993 8994/9083/8994 9093/9183/9093 +f 9093/9183/9093 8994/9083/8994 9094/9184/9094 +f 8994/9083/8994 8995/9084/8995 9094/9184/9094 +f 9094/9184/9094 8995/9084/8995 9095/9185/9095 +f 8995/9084/8995 8996/9085/8996 9095/9185/9095 +f 9095/9185/9095 8996/9085/8996 9096/9186/9096 +f 8996/9085/8996 8997/9086/8997 9096/9186/9096 +f 9096/9186/9096 8997/9086/8997 9097/9187/9097 +f 8997/9086/8997 8998/9087/8998 9097/9187/9097 +f 9097/9187/9097 8998/9087/8998 9098/9188/9098 +f 8998/9087/8998 8999/9088/8999 9098/9188/9098 +f 9098/9188/9098 8999/9088/8999 9099/9189/9099 +f 8999/9088/8999 9000/9089/9000 9099/9189/9099 +f 9099/9189/9099 9000/9089/9000 9100/9190/9100 +f 9000/9089/9000 8901/9090/8901 9100/9190/9100 +f 9100/9190/9100 8901/9090/8901 9001/9191/9001 +f 9001/9091/9001 9002/9092/9002 9101/9192/9101 +f 9101/9192/9101 9002/9092/9002 9102/9193/9102 +f 9002/9092/9002 9003/9093/9003 9102/9193/9102 +f 9102/9193/9102 9003/9093/9003 9103/9194/9103 +f 9003/9093/9003 9004/9094/9004 9103/9194/9103 +f 9103/9194/9103 9004/9094/9004 9104/9195/9104 +f 9004/9094/9004 9005/9095/9005 9104/9195/9104 +f 9104/9195/9104 9005/9095/9005 9105/9196/9105 +f 9005/9095/9005 9006/9096/9006 9105/9196/9105 +f 9105/9196/9105 9006/9096/9006 9106/9197/9106 +f 9006/9096/9006 9007/9097/9007 9106/9197/9106 +f 9106/9197/9106 9007/9097/9007 9107/9198/9107 +f 9007/9097/9007 9008/9098/9008 9107/9198/9107 +f 9107/9198/9107 9008/9098/9008 9108/9199/9108 +f 9008/9098/9008 9009/9099/9009 9108/9199/9108 +f 9108/9199/9108 9009/9099/9009 9109/9200/9109 +f 9009/9099/9009 9010/9100/9010 9109/9200/9109 +f 9109/9200/9109 9010/9100/9010 9110/9201/9110 +f 9010/9100/9010 9011/9101/9011 9110/9201/9110 +f 9110/9201/9110 9011/9101/9011 9111/9202/9111 +f 9011/9101/9011 9012/9102/9012 9111/9202/9111 +f 9111/9202/9111 9012/9102/9012 9112/9203/9112 +f 9012/9102/9012 9013/9103/9013 9112/9203/9112 +f 9112/9203/9112 9013/9103/9013 9113/9204/9113 +f 9013/9103/9013 9014/9104/9014 9113/9204/9113 +f 9113/9204/9113 9014/9104/9014 9114/9205/9114 +f 9014/9104/9014 9015/9105/9015 9114/9205/9114 +f 9114/9205/9114 9015/9105/9015 9115/9206/9115 +f 9015/9105/9015 9016/9106/9016 9115/9206/9115 +f 9115/9206/9115 9016/9106/9016 9116/9207/9116 +f 9016/9106/9016 9017/9107/9017 9116/9207/9116 +f 9116/9207/9116 9017/9107/9017 9117/9208/9117 +f 9017/9107/9017 9018/9108/9018 9117/9208/9117 +f 9117/9208/9117 9018/9108/9018 9118/9209/9118 +f 9018/9108/9018 9019/9109/9019 9118/9209/9118 +f 9118/9209/9118 9019/9109/9019 9119/9210/9119 +f 9019/9109/9019 9020/9110/9020 9119/9210/9119 +f 9119/9210/9119 9020/9110/9020 9120/9211/9120 +f 9020/9110/9020 9021/9111/9021 9120/9211/9120 +f 9120/9211/9120 9021/9111/9021 9121/9212/9121 +f 9021/9111/9021 9022/9112/9022 9121/9212/9121 +f 9121/9212/9121 9022/9112/9022 9122/9213/9122 +f 9022/9112/9022 9023/9113/9023 9122/9213/9122 +f 9122/9213/9122 9023/9113/9023 9123/9214/9123 +f 9023/9113/9023 9024/9114/9024 9123/9214/9123 +f 9123/9214/9123 9024/9114/9024 9124/9215/9124 +f 9024/9114/9024 9025/9115/9025 9124/9215/9124 +f 9124/9215/9124 9025/9115/9025 9125/9216/9125 +f 9025/9115/9025 9026/9116/9026 9125/9216/9125 +f 9125/9216/9125 9026/9116/9026 9126/9217/9126 +f 9026/9116/9026 9027/9117/9027 9126/9217/9126 +f 9126/9217/9126 9027/9117/9027 9127/9218/9127 +f 9027/9117/9027 9028/9118/9028 9127/9218/9127 +f 9127/9218/9127 9028/9118/9028 9128/9219/9128 +f 9028/9118/9028 9029/9119/9029 9128/9219/9128 +f 9128/9219/9128 9029/9119/9029 9129/9220/9129 +f 9029/9119/9029 9030/9120/9030 9129/9220/9129 +f 9129/9220/9129 9030/9120/9030 9130/9221/9130 +f 9030/9120/9030 9031/9121/9031 9130/9221/9130 +f 9130/9221/9130 9031/9121/9031 9131/9222/9131 +f 9031/9121/9031 9032/9122/9032 9131/9222/9131 +f 9131/9222/9131 9032/9122/9032 9132/9223/9132 +f 9032/9122/9032 9033/9123/9033 9132/9223/9132 +f 9132/9223/9132 9033/9123/9033 9133/9224/9133 +f 9033/9123/9033 9034/9124/9034 9133/9224/9133 +f 9133/9224/9133 9034/9124/9034 9134/9225/9134 +f 9034/9124/9034 9035/9125/9035 9134/9225/9134 +f 9134/9225/9134 9035/9125/9035 9135/9226/9135 +f 9035/9125/9035 9036/9126/9036 9135/9226/9135 +f 9135/9226/9135 9036/9126/9036 9136/9227/9136 +f 9036/9126/9036 9037/9127/9037 9136/9227/9136 +f 9136/9227/9136 9037/9127/9037 9137/9228/9137 +f 9037/9127/9037 9038/9128/9038 9137/9228/9137 +f 9137/9228/9137 9038/9128/9038 9138/9229/9138 +f 9038/9128/9038 9039/9129/9039 9138/9229/9138 +f 9138/9229/9138 9039/9129/9039 9139/9230/9139 +f 9039/9129/9039 9040/9130/9040 9139/9230/9139 +f 9139/9230/9139 9040/9130/9040 9140/9231/9140 +f 9040/9130/9040 9041/9131/9041 9140/9231/9140 +f 9140/9231/9140 9041/9131/9041 9141/9232/9141 +f 9041/9131/9041 9042/9132/9042 9141/9232/9141 +f 9141/9232/9141 9042/9132/9042 9142/9233/9142 +f 9042/9132/9042 9043/9133/9043 9142/9233/9142 +f 9142/9233/9142 9043/9133/9043 9143/9234/9143 +f 9043/9133/9043 9044/9134/9044 9143/9234/9143 +f 9143/9234/9143 9044/9134/9044 9144/9235/9144 +f 9044/9134/9044 9045/9135/9045 9144/9235/9144 +f 9144/9235/9144 9045/9135/9045 9145/9236/9145 +f 9045/9135/9045 9046/9136/9046 9145/9236/9145 +f 9145/9236/9145 9046/9136/9046 9146/9237/9146 +f 9046/9136/9046 9047/9137/9047 9146/9237/9146 +f 9146/9237/9146 9047/9137/9047 9147/9238/9147 +f 9047/9137/9047 9048/9138/9048 9147/9238/9147 +f 9147/9238/9147 9048/9138/9048 9148/9239/9148 +f 9048/9138/9048 9049/9139/9049 9148/9239/9148 +f 9148/9239/9148 9049/9139/9049 9149/9240/9149 +f 9049/9139/9049 9050/9140/9050 9149/9240/9149 +f 9149/9240/9149 9050/9140/9050 9150/9241/9150 +f 9050/9140/9050 9051/9141/9051 9150/9241/9150 +f 9150/9241/9150 9051/9141/9051 9151/9242/9151 +f 9051/9141/9051 9052/9142/9052 9151/9242/9151 +f 9151/9242/9151 9052/9142/9052 9152/9243/9152 +f 9052/9142/9052 9053/9143/9053 9152/9243/9152 +f 9152/9243/9152 9053/9143/9053 9153/9244/9153 +f 9053/9143/9053 9054/9144/9054 9153/9244/9153 +f 9153/9244/9153 9054/9144/9054 9154/9245/9154 +f 9054/9144/9054 9055/9145/9055 9154/9245/9154 +f 9154/9245/9154 9055/9145/9055 9155/9246/9155 +f 9055/9145/9055 9056/9146/9056 9155/9246/9155 +f 9155/9246/9155 9056/9146/9056 9156/9247/9156 +f 9056/9146/9056 9057/9147/9057 9156/9247/9156 +f 9156/9247/9156 9057/9147/9057 9157/9248/9157 +f 9057/9147/9057 9058/9148/9058 9157/9248/9157 +f 9157/9248/9157 9058/9148/9058 9158/9249/9158 +f 9058/9148/9058 9059/9149/9059 9158/9249/9158 +f 9158/9249/9158 9059/9149/9059 9159/9250/9159 +f 9059/9149/9059 9060/9150/9060 9159/9250/9159 +f 9159/9250/9159 9060/9150/9060 9160/9251/9160 +f 9060/9150/9060 9061/9151/9061 9160/9251/9160 +f 9160/9251/9160 9061/9151/9061 9161/9252/9161 +f 9061/9151/9061 9062/9152/9062 9161/9252/9161 +f 9161/9252/9161 9062/9152/9062 9162/9253/9162 +f 9062/9152/9062 9063/9153/9063 9162/9253/9162 +f 9162/9253/9162 9063/9153/9063 9163/9254/9163 +f 9063/9153/9063 9064/9154/9064 9163/9254/9163 +f 9163/9254/9163 9064/9154/9064 9164/9255/9164 +f 9064/9154/9064 9065/9155/9065 9164/9255/9164 +f 9164/9255/9164 9065/9155/9065 9165/9256/9165 +f 9065/9155/9065 9066/9156/9066 9165/9256/9165 +f 9165/9256/9165 9066/9156/9066 9166/9257/9166 +f 9066/9156/9066 9067/9157/9067 9166/9257/9166 +f 9166/9257/9166 9067/9157/9067 9167/9258/9167 +f 9067/9157/9067 9068/9158/9068 9167/9258/9167 +f 9167/9258/9167 9068/9158/9068 9168/9259/9168 +f 9068/9158/9068 9069/9159/9069 9168/9259/9168 +f 9168/9259/9168 9069/9159/9069 9169/9260/9169 +f 9069/9159/9069 9070/9160/9070 9169/9260/9169 +f 9169/9260/9169 9070/9160/9070 9170/9261/9170 +f 9070/9160/9070 9071/9161/9071 9170/9261/9170 +f 9170/9261/9170 9071/9161/9071 9171/9262/9171 +f 9071/9161/9071 9072/9162/9072 9171/9262/9171 +f 9171/9262/9171 9072/9162/9072 9172/9263/9172 +f 9072/9162/9072 9073/9163/9073 9172/9263/9172 +f 9172/9263/9172 9073/9163/9073 9173/9264/9173 +f 9073/9163/9073 9074/9164/9074 9173/9264/9173 +f 9173/9264/9173 9074/9164/9074 9174/9265/9174 +f 9074/9164/9074 9075/9165/9075 9174/9265/9174 +f 9174/9265/9174 9075/9165/9075 9175/9266/9175 +f 9075/9165/9075 9076/9166/9076 9175/9266/9175 +f 9175/9266/9175 9076/9166/9076 9176/9267/9176 +f 9076/9166/9076 9077/9167/9077 9176/9267/9176 +f 9176/9267/9176 9077/9167/9077 9177/9268/9177 +f 9077/9167/9077 9078/9168/9078 9177/9268/9177 +f 9177/9268/9177 9078/9168/9078 9178/9269/9178 +f 9078/9168/9078 9079/9169/9079 9178/9269/9178 +f 9178/9269/9178 9079/9169/9079 9179/9270/9179 +f 9079/9169/9079 9080/9170/9080 9179/9270/9179 +f 9179/9270/9179 9080/9170/9080 9180/9271/9180 +f 9080/9170/9080 9081/9171/9081 9180/9271/9180 +f 9180/9271/9180 9081/9171/9081 9181/9272/9181 +f 9081/9171/9081 9082/9172/9082 9181/9272/9181 +f 9181/9272/9181 9082/9172/9082 9182/9273/9182 +f 9082/9172/9082 9083/9173/9083 9182/9273/9182 +f 9182/9273/9182 9083/9173/9083 9183/9274/9183 +f 9083/9173/9083 9084/9174/9084 9183/9274/9183 +f 9183/9274/9183 9084/9174/9084 9184/9275/9184 +f 9084/9174/9084 9085/9175/9085 9184/9275/9184 +f 9184/9275/9184 9085/9175/9085 9185/9276/9185 +f 9085/9175/9085 9086/9176/9086 9185/9276/9185 +f 9185/9276/9185 9086/9176/9086 9186/9277/9186 +f 9086/9176/9086 9087/9177/9087 9186/9277/9186 +f 9186/9277/9186 9087/9177/9087 9187/9278/9187 +f 9087/9177/9087 9088/9178/9088 9187/9278/9187 +f 9187/9278/9187 9088/9178/9088 9188/9279/9188 +f 9088/9178/9088 9089/9179/9089 9188/9279/9188 +f 9188/9279/9188 9089/9179/9089 9189/9280/9189 +f 9089/9179/9089 9090/9180/9090 9189/9280/9189 +f 9189/9280/9189 9090/9180/9090 9190/9281/9190 +f 9090/9180/9090 9091/9181/9091 9190/9281/9190 +f 9190/9281/9190 9091/9181/9091 9191/9282/9191 +f 9091/9181/9091 9092/9182/9092 9191/9282/9191 +f 9191/9282/9191 9092/9182/9092 9192/9283/9192 +f 9092/9182/9092 9093/9183/9093 9192/9283/9192 +f 9192/9283/9192 9093/9183/9093 9193/9284/9193 +f 9093/9183/9093 9094/9184/9094 9193/9284/9193 +f 9193/9284/9193 9094/9184/9094 9194/9285/9194 +f 9094/9184/9094 9095/9185/9095 9194/9285/9194 +f 9194/9285/9194 9095/9185/9095 9195/9286/9195 +f 9095/9185/9095 9096/9186/9096 9195/9286/9195 +f 9195/9286/9195 9096/9186/9096 9196/9287/9196 +f 9096/9186/9096 9097/9187/9097 9196/9287/9196 +f 9196/9287/9196 9097/9187/9097 9197/9288/9197 +f 9097/9187/9097 9098/9188/9098 9197/9288/9197 +f 9197/9288/9197 9098/9188/9098 9198/9289/9198 +f 9098/9188/9098 9099/9189/9099 9198/9289/9198 +f 9198/9289/9198 9099/9189/9099 9199/9290/9199 +f 9099/9189/9099 9100/9190/9100 9199/9290/9199 +f 9199/9290/9199 9100/9190/9100 9200/9291/9200 +f 9100/9190/9100 9001/9191/9001 9200/9291/9200 +f 9200/9291/9200 9001/9191/9001 9101/9292/9101 +f 9101/9192/9101 9102/9193/9102 9201/9293/9201 +f 9201/9293/9201 9102/9193/9102 9202/9294/9202 +f 9102/9193/9102 9103/9194/9103 9202/9294/9202 +f 9202/9294/9202 9103/9194/9103 9203/9295/9203 +f 9103/9194/9103 9104/9195/9104 9203/9295/9203 +f 9203/9295/9203 9104/9195/9104 9204/9296/9204 +f 9104/9195/9104 9105/9196/9105 9204/9296/9204 +f 9204/9296/9204 9105/9196/9105 9205/9297/9205 +f 9105/9196/9105 9106/9197/9106 9205/9297/9205 +f 9205/9297/9205 9106/9197/9106 9206/9298/9206 +f 9106/9197/9106 9107/9198/9107 9206/9298/9206 +f 9206/9298/9206 9107/9198/9107 9207/9299/9207 +f 9107/9198/9107 9108/9199/9108 9207/9299/9207 +f 9207/9299/9207 9108/9199/9108 9208/9300/9208 +f 9108/9199/9108 9109/9200/9109 9208/9300/9208 +f 9208/9300/9208 9109/9200/9109 9209/9301/9209 +f 9109/9200/9109 9110/9201/9110 9209/9301/9209 +f 9209/9301/9209 9110/9201/9110 9210/9302/9210 +f 9110/9201/9110 9111/9202/9111 9210/9302/9210 +f 9210/9302/9210 9111/9202/9111 9211/9303/9211 +f 9111/9202/9111 9112/9203/9112 9211/9303/9211 +f 9211/9303/9211 9112/9203/9112 9212/9304/9212 +f 9112/9203/9112 9113/9204/9113 9212/9304/9212 +f 9212/9304/9212 9113/9204/9113 9213/9305/9213 +f 9113/9204/9113 9114/9205/9114 9213/9305/9213 +f 9213/9305/9213 9114/9205/9114 9214/9306/9214 +f 9114/9205/9114 9115/9206/9115 9214/9306/9214 +f 9214/9306/9214 9115/9206/9115 9215/9307/9215 +f 9115/9206/9115 9116/9207/9116 9215/9307/9215 +f 9215/9307/9215 9116/9207/9116 9216/9308/9216 +f 9116/9207/9116 9117/9208/9117 9216/9308/9216 +f 9216/9308/9216 9117/9208/9117 9217/9309/9217 +f 9117/9208/9117 9118/9209/9118 9217/9309/9217 +f 9217/9309/9217 9118/9209/9118 9218/9310/9218 +f 9118/9209/9118 9119/9210/9119 9218/9310/9218 +f 9218/9310/9218 9119/9210/9119 9219/9311/9219 +f 9119/9210/9119 9120/9211/9120 9219/9311/9219 +f 9219/9311/9219 9120/9211/9120 9220/9312/9220 +f 9120/9211/9120 9121/9212/9121 9220/9312/9220 +f 9220/9312/9220 9121/9212/9121 9221/9313/9221 +f 9121/9212/9121 9122/9213/9122 9221/9313/9221 +f 9221/9313/9221 9122/9213/9122 9222/9314/9222 +f 9122/9213/9122 9123/9214/9123 9222/9314/9222 +f 9222/9314/9222 9123/9214/9123 9223/9315/9223 +f 9123/9214/9123 9124/9215/9124 9223/9315/9223 +f 9223/9315/9223 9124/9215/9124 9224/9316/9224 +f 9124/9215/9124 9125/9216/9125 9224/9316/9224 +f 9224/9316/9224 9125/9216/9125 9225/9317/9225 +f 9125/9216/9125 9126/9217/9126 9225/9317/9225 +f 9225/9317/9225 9126/9217/9126 9226/9318/9226 +f 9126/9217/9126 9127/9218/9127 9226/9318/9226 +f 9226/9318/9226 9127/9218/9127 9227/9319/9227 +f 9127/9218/9127 9128/9219/9128 9227/9319/9227 +f 9227/9319/9227 9128/9219/9128 9228/9320/9228 +f 9128/9219/9128 9129/9220/9129 9228/9320/9228 +f 9228/9320/9228 9129/9220/9129 9229/9321/9229 +f 9129/9220/9129 9130/9221/9130 9229/9321/9229 +f 9229/9321/9229 9130/9221/9130 9230/9322/9230 +f 9130/9221/9130 9131/9222/9131 9230/9322/9230 +f 9230/9322/9230 9131/9222/9131 9231/9323/9231 +f 9131/9222/9131 9132/9223/9132 9231/9323/9231 +f 9231/9323/9231 9132/9223/9132 9232/9324/9232 +f 9132/9223/9132 9133/9224/9133 9232/9324/9232 +f 9232/9324/9232 9133/9224/9133 9233/9325/9233 +f 9133/9224/9133 9134/9225/9134 9233/9325/9233 +f 9233/9325/9233 9134/9225/9134 9234/9326/9234 +f 9134/9225/9134 9135/9226/9135 9234/9326/9234 +f 9234/9326/9234 9135/9226/9135 9235/9327/9235 +f 9135/9226/9135 9136/9227/9136 9235/9327/9235 +f 9235/9327/9235 9136/9227/9136 9236/9328/9236 +f 9136/9227/9136 9137/9228/9137 9236/9328/9236 +f 9236/9328/9236 9137/9228/9137 9237/9329/9237 +f 9137/9228/9137 9138/9229/9138 9237/9329/9237 +f 9237/9329/9237 9138/9229/9138 9238/9330/9238 +f 9138/9229/9138 9139/9230/9139 9238/9330/9238 +f 9238/9330/9238 9139/9230/9139 9239/9331/9239 +f 9139/9230/9139 9140/9231/9140 9239/9331/9239 +f 9239/9331/9239 9140/9231/9140 9240/9332/9240 +f 9140/9231/9140 9141/9232/9141 9240/9332/9240 +f 9240/9332/9240 9141/9232/9141 9241/9333/9241 +f 9141/9232/9141 9142/9233/9142 9241/9333/9241 +f 9241/9333/9241 9142/9233/9142 9242/9334/9242 +f 9142/9233/9142 9143/9234/9143 9242/9334/9242 +f 9242/9334/9242 9143/9234/9143 9243/9335/9243 +f 9143/9234/9143 9144/9235/9144 9243/9335/9243 +f 9243/9335/9243 9144/9235/9144 9244/9336/9244 +f 9144/9235/9144 9145/9236/9145 9244/9336/9244 +f 9244/9336/9244 9145/9236/9145 9245/9337/9245 +f 9145/9236/9145 9146/9237/9146 9245/9337/9245 +f 9245/9337/9245 9146/9237/9146 9246/9338/9246 +f 9146/9237/9146 9147/9238/9147 9246/9338/9246 +f 9246/9338/9246 9147/9238/9147 9247/9339/9247 +f 9147/9238/9147 9148/9239/9148 9247/9339/9247 +f 9247/9339/9247 9148/9239/9148 9248/9340/9248 +f 9148/9239/9148 9149/9240/9149 9248/9340/9248 +f 9248/9340/9248 9149/9240/9149 9249/9341/9249 +f 9149/9240/9149 9150/9241/9150 9249/9341/9249 +f 9249/9341/9249 9150/9241/9150 9250/9342/9250 +f 9150/9241/9150 9151/9242/9151 9250/9342/9250 +f 9250/9342/9250 9151/9242/9151 9251/9343/9251 +f 9151/9242/9151 9152/9243/9152 9251/9343/9251 +f 9251/9343/9251 9152/9243/9152 9252/9344/9252 +f 9152/9243/9152 9153/9244/9153 9252/9344/9252 +f 9252/9344/9252 9153/9244/9153 9253/9345/9253 +f 9153/9244/9153 9154/9245/9154 9253/9345/9253 +f 9253/9345/9253 9154/9245/9154 9254/9346/9254 +f 9154/9245/9154 9155/9246/9155 9254/9346/9254 +f 9254/9346/9254 9155/9246/9155 9255/9347/9255 +f 9155/9246/9155 9156/9247/9156 9255/9347/9255 +f 9255/9347/9255 9156/9247/9156 9256/9348/9256 +f 9156/9247/9156 9157/9248/9157 9256/9348/9256 +f 9256/9348/9256 9157/9248/9157 9257/9349/9257 +f 9157/9248/9157 9158/9249/9158 9257/9349/9257 +f 9257/9349/9257 9158/9249/9158 9258/9350/9258 +f 9158/9249/9158 9159/9250/9159 9258/9350/9258 +f 9258/9350/9258 9159/9250/9159 9259/9351/9259 +f 9159/9250/9159 9160/9251/9160 9259/9351/9259 +f 9259/9351/9259 9160/9251/9160 9260/9352/9260 +f 9160/9251/9160 9161/9252/9161 9260/9352/9260 +f 9260/9352/9260 9161/9252/9161 9261/9353/9261 +f 9161/9252/9161 9162/9253/9162 9261/9353/9261 +f 9261/9353/9261 9162/9253/9162 9262/9354/9262 +f 9162/9253/9162 9163/9254/9163 9262/9354/9262 +f 9262/9354/9262 9163/9254/9163 9263/9355/9263 +f 9163/9254/9163 9164/9255/9164 9263/9355/9263 +f 9263/9355/9263 9164/9255/9164 9264/9356/9264 +f 9164/9255/9164 9165/9256/9165 9264/9356/9264 +f 9264/9356/9264 9165/9256/9165 9265/9357/9265 +f 9165/9256/9165 9166/9257/9166 9265/9357/9265 +f 9265/9357/9265 9166/9257/9166 9266/9358/9266 +f 9166/9257/9166 9167/9258/9167 9266/9358/9266 +f 9266/9358/9266 9167/9258/9167 9267/9359/9267 +f 9167/9258/9167 9168/9259/9168 9267/9359/9267 +f 9267/9359/9267 9168/9259/9168 9268/9360/9268 +f 9168/9259/9168 9169/9260/9169 9268/9360/9268 +f 9268/9360/9268 9169/9260/9169 9269/9361/9269 +f 9169/9260/9169 9170/9261/9170 9269/9361/9269 +f 9269/9361/9269 9170/9261/9170 9270/9362/9270 +f 9170/9261/9170 9171/9262/9171 9270/9362/9270 +f 9270/9362/9270 9171/9262/9171 9271/9363/9271 +f 9171/9262/9171 9172/9263/9172 9271/9363/9271 +f 9271/9363/9271 9172/9263/9172 9272/9364/9272 +f 9172/9263/9172 9173/9264/9173 9272/9364/9272 +f 9272/9364/9272 9173/9264/9173 9273/9365/9273 +f 9173/9264/9173 9174/9265/9174 9273/9365/9273 +f 9273/9365/9273 9174/9265/9174 9274/9366/9274 +f 9174/9265/9174 9175/9266/9175 9274/9366/9274 +f 9274/9366/9274 9175/9266/9175 9275/9367/9275 +f 9175/9266/9175 9176/9267/9176 9275/9367/9275 +f 9275/9367/9275 9176/9267/9176 9276/9368/9276 +f 9176/9267/9176 9177/9268/9177 9276/9368/9276 +f 9276/9368/9276 9177/9268/9177 9277/9369/9277 +f 9177/9268/9177 9178/9269/9178 9277/9369/9277 +f 9277/9369/9277 9178/9269/9178 9278/9370/9278 +f 9178/9269/9178 9179/9270/9179 9278/9370/9278 +f 9278/9370/9278 9179/9270/9179 9279/9371/9279 +f 9179/9270/9179 9180/9271/9180 9279/9371/9279 +f 9279/9371/9279 9180/9271/9180 9280/9372/9280 +f 9180/9271/9180 9181/9272/9181 9280/9372/9280 +f 9280/9372/9280 9181/9272/9181 9281/9373/9281 +f 9181/9272/9181 9182/9273/9182 9281/9373/9281 +f 9281/9373/9281 9182/9273/9182 9282/9374/9282 +f 9182/9273/9182 9183/9274/9183 9282/9374/9282 +f 9282/9374/9282 9183/9274/9183 9283/9375/9283 +f 9183/9274/9183 9184/9275/9184 9283/9375/9283 +f 9283/9375/9283 9184/9275/9184 9284/9376/9284 +f 9184/9275/9184 9185/9276/9185 9284/9376/9284 +f 9284/9376/9284 9185/9276/9185 9285/9377/9285 +f 9185/9276/9185 9186/9277/9186 9285/9377/9285 +f 9285/9377/9285 9186/9277/9186 9286/9378/9286 +f 9186/9277/9186 9187/9278/9187 9286/9378/9286 +f 9286/9378/9286 9187/9278/9187 9287/9379/9287 +f 9187/9278/9187 9188/9279/9188 9287/9379/9287 +f 9287/9379/9287 9188/9279/9188 9288/9380/9288 +f 9188/9279/9188 9189/9280/9189 9288/9380/9288 +f 9288/9380/9288 9189/9280/9189 9289/9381/9289 +f 9189/9280/9189 9190/9281/9190 9289/9381/9289 +f 9289/9381/9289 9190/9281/9190 9290/9382/9290 +f 9190/9281/9190 9191/9282/9191 9290/9382/9290 +f 9290/9382/9290 9191/9282/9191 9291/9383/9291 +f 9191/9282/9191 9192/9283/9192 9291/9383/9291 +f 9291/9383/9291 9192/9283/9192 9292/9384/9292 +f 9192/9283/9192 9193/9284/9193 9292/9384/9292 +f 9292/9384/9292 9193/9284/9193 9293/9385/9293 +f 9193/9284/9193 9194/9285/9194 9293/9385/9293 +f 9293/9385/9293 9194/9285/9194 9294/9386/9294 +f 9194/9285/9194 9195/9286/9195 9294/9386/9294 +f 9294/9386/9294 9195/9286/9195 9295/9387/9295 +f 9195/9286/9195 9196/9287/9196 9295/9387/9295 +f 9295/9387/9295 9196/9287/9196 9296/9388/9296 +f 9196/9287/9196 9197/9288/9197 9296/9388/9296 +f 9296/9388/9296 9197/9288/9197 9297/9389/9297 +f 9197/9288/9197 9198/9289/9198 9297/9389/9297 +f 9297/9389/9297 9198/9289/9198 9298/9390/9298 +f 9198/9289/9198 9199/9290/9199 9298/9390/9298 +f 9298/9390/9298 9199/9290/9199 9299/9391/9299 +f 9199/9290/9199 9200/9291/9200 9299/9391/9299 +f 9299/9391/9299 9200/9291/9200 9300/9392/9300 +f 9200/9291/9200 9101/9292/9101 9300/9392/9300 +f 9300/9392/9300 9101/9292/9101 9201/9393/9201 +f 9201/9293/9201 9202/9294/9202 9301/9394/9301 +f 9301/9394/9301 9202/9294/9202 9302/9395/9302 +f 9202/9294/9202 9203/9295/9203 9302/9395/9302 +f 9302/9395/9302 9203/9295/9203 9303/9396/9303 +f 9203/9295/9203 9204/9296/9204 9303/9396/9303 +f 9303/9396/9303 9204/9296/9204 9304/9397/9304 +f 9204/9296/9204 9205/9297/9205 9304/9397/9304 +f 9304/9397/9304 9205/9297/9205 9305/9398/9305 +f 9205/9297/9205 9206/9298/9206 9305/9398/9305 +f 9305/9398/9305 9206/9298/9206 9306/9399/9306 +f 9206/9298/9206 9207/9299/9207 9306/9399/9306 +f 9306/9399/9306 9207/9299/9207 9307/9400/9307 +f 9207/9299/9207 9208/9300/9208 9307/9400/9307 +f 9307/9400/9307 9208/9300/9208 9308/9401/9308 +f 9208/9300/9208 9209/9301/9209 9308/9401/9308 +f 9308/9401/9308 9209/9301/9209 9309/9402/9309 +f 9209/9301/9209 9210/9302/9210 9309/9402/9309 +f 9309/9402/9309 9210/9302/9210 9310/9403/9310 +f 9210/9302/9210 9211/9303/9211 9310/9403/9310 +f 9310/9403/9310 9211/9303/9211 9311/9404/9311 +f 9211/9303/9211 9212/9304/9212 9311/9404/9311 +f 9311/9404/9311 9212/9304/9212 9312/9405/9312 +f 9212/9304/9212 9213/9305/9213 9312/9405/9312 +f 9312/9405/9312 9213/9305/9213 9313/9406/9313 +f 9213/9305/9213 9214/9306/9214 9313/9406/9313 +f 9313/9406/9313 9214/9306/9214 9314/9407/9314 +f 9214/9306/9214 9215/9307/9215 9314/9407/9314 +f 9314/9407/9314 9215/9307/9215 9315/9408/9315 +f 9215/9307/9215 9216/9308/9216 9315/9408/9315 +f 9315/9408/9315 9216/9308/9216 9316/9409/9316 +f 9216/9308/9216 9217/9309/9217 9316/9409/9316 +f 9316/9409/9316 9217/9309/9217 9317/9410/9317 +f 9217/9309/9217 9218/9310/9218 9317/9410/9317 +f 9317/9410/9317 9218/9310/9218 9318/9411/9318 +f 9218/9310/9218 9219/9311/9219 9318/9411/9318 +f 9318/9411/9318 9219/9311/9219 9319/9412/9319 +f 9219/9311/9219 9220/9312/9220 9319/9412/9319 +f 9319/9412/9319 9220/9312/9220 9320/9413/9320 +f 9220/9312/9220 9221/9313/9221 9320/9413/9320 +f 9320/9413/9320 9221/9313/9221 9321/9414/9321 +f 9221/9313/9221 9222/9314/9222 9321/9414/9321 +f 9321/9414/9321 9222/9314/9222 9322/9415/9322 +f 9222/9314/9222 9223/9315/9223 9322/9415/9322 +f 9322/9415/9322 9223/9315/9223 9323/9416/9323 +f 9223/9315/9223 9224/9316/9224 9323/9416/9323 +f 9323/9416/9323 9224/9316/9224 9324/9417/9324 +f 9224/9316/9224 9225/9317/9225 9324/9417/9324 +f 9324/9417/9324 9225/9317/9225 9325/9418/9325 +f 9225/9317/9225 9226/9318/9226 9325/9418/9325 +f 9325/9418/9325 9226/9318/9226 9326/9419/9326 +f 9226/9318/9226 9227/9319/9227 9326/9419/9326 +f 9326/9419/9326 9227/9319/9227 9327/9420/9327 +f 9227/9319/9227 9228/9320/9228 9327/9420/9327 +f 9327/9420/9327 9228/9320/9228 9328/9421/9328 +f 9228/9320/9228 9229/9321/9229 9328/9421/9328 +f 9328/9421/9328 9229/9321/9229 9329/9422/9329 +f 9229/9321/9229 9230/9322/9230 9329/9422/9329 +f 9329/9422/9329 9230/9322/9230 9330/9423/9330 +f 9230/9322/9230 9231/9323/9231 9330/9423/9330 +f 9330/9423/9330 9231/9323/9231 9331/9424/9331 +f 9231/9323/9231 9232/9324/9232 9331/9424/9331 +f 9331/9424/9331 9232/9324/9232 9332/9425/9332 +f 9232/9324/9232 9233/9325/9233 9332/9425/9332 +f 9332/9425/9332 9233/9325/9233 9333/9426/9333 +f 9233/9325/9233 9234/9326/9234 9333/9426/9333 +f 9333/9426/9333 9234/9326/9234 9334/9427/9334 +f 9234/9326/9234 9235/9327/9235 9334/9427/9334 +f 9334/9427/9334 9235/9327/9235 9335/9428/9335 +f 9235/9327/9235 9236/9328/9236 9335/9428/9335 +f 9335/9428/9335 9236/9328/9236 9336/9429/9336 +f 9236/9328/9236 9237/9329/9237 9336/9429/9336 +f 9336/9429/9336 9237/9329/9237 9337/9430/9337 +f 9237/9329/9237 9238/9330/9238 9337/9430/9337 +f 9337/9430/9337 9238/9330/9238 9338/9431/9338 +f 9238/9330/9238 9239/9331/9239 9338/9431/9338 +f 9338/9431/9338 9239/9331/9239 9339/9432/9339 +f 9239/9331/9239 9240/9332/9240 9339/9432/9339 +f 9339/9432/9339 9240/9332/9240 9340/9433/9340 +f 9240/9332/9240 9241/9333/9241 9340/9433/9340 +f 9340/9433/9340 9241/9333/9241 9341/9434/9341 +f 9241/9333/9241 9242/9334/9242 9341/9434/9341 +f 9341/9434/9341 9242/9334/9242 9342/9435/9342 +f 9242/9334/9242 9243/9335/9243 9342/9435/9342 +f 9342/9435/9342 9243/9335/9243 9343/9436/9343 +f 9243/9335/9243 9244/9336/9244 9343/9436/9343 +f 9343/9436/9343 9244/9336/9244 9344/9437/9344 +f 9244/9336/9244 9245/9337/9245 9344/9437/9344 +f 9344/9437/9344 9245/9337/9245 9345/9438/9345 +f 9245/9337/9245 9246/9338/9246 9345/9438/9345 +f 9345/9438/9345 9246/9338/9246 9346/9439/9346 +f 9246/9338/9246 9247/9339/9247 9346/9439/9346 +f 9346/9439/9346 9247/9339/9247 9347/9440/9347 +f 9247/9339/9247 9248/9340/9248 9347/9440/9347 +f 9347/9440/9347 9248/9340/9248 9348/9441/9348 +f 9248/9340/9248 9249/9341/9249 9348/9441/9348 +f 9348/9441/9348 9249/9341/9249 9349/9442/9349 +f 9249/9341/9249 9250/9342/9250 9349/9442/9349 +f 9349/9442/9349 9250/9342/9250 9350/9443/9350 +f 9250/9342/9250 9251/9343/9251 9350/9443/9350 +f 9350/9443/9350 9251/9343/9251 9351/9444/9351 +f 9251/9343/9251 9252/9344/9252 9351/9444/9351 +f 9351/9444/9351 9252/9344/9252 9352/9445/9352 +f 9252/9344/9252 9253/9345/9253 9352/9445/9352 +f 9352/9445/9352 9253/9345/9253 9353/9446/9353 +f 9253/9345/9253 9254/9346/9254 9353/9446/9353 +f 9353/9446/9353 9254/9346/9254 9354/9447/9354 +f 9254/9346/9254 9255/9347/9255 9354/9447/9354 +f 9354/9447/9354 9255/9347/9255 9355/9448/9355 +f 9255/9347/9255 9256/9348/9256 9355/9448/9355 +f 9355/9448/9355 9256/9348/9256 9356/9449/9356 +f 9256/9348/9256 9257/9349/9257 9356/9449/9356 +f 9356/9449/9356 9257/9349/9257 9357/9450/9357 +f 9257/9349/9257 9258/9350/9258 9357/9450/9357 +f 9357/9450/9357 9258/9350/9258 9358/9451/9358 +f 9258/9350/9258 9259/9351/9259 9358/9451/9358 +f 9358/9451/9358 9259/9351/9259 9359/9452/9359 +f 9259/9351/9259 9260/9352/9260 9359/9452/9359 +f 9359/9452/9359 9260/9352/9260 9360/9453/9360 +f 9260/9352/9260 9261/9353/9261 9360/9453/9360 +f 9360/9453/9360 9261/9353/9261 9361/9454/9361 +f 9261/9353/9261 9262/9354/9262 9361/9454/9361 +f 9361/9454/9361 9262/9354/9262 9362/9455/9362 +f 9262/9354/9262 9263/9355/9263 9362/9455/9362 +f 9362/9455/9362 9263/9355/9263 9363/9456/9363 +f 9263/9355/9263 9264/9356/9264 9363/9456/9363 +f 9363/9456/9363 9264/9356/9264 9364/9457/9364 +f 9264/9356/9264 9265/9357/9265 9364/9457/9364 +f 9364/9457/9364 9265/9357/9265 9365/9458/9365 +f 9265/9357/9265 9266/9358/9266 9365/9458/9365 +f 9365/9458/9365 9266/9358/9266 9366/9459/9366 +f 9266/9358/9266 9267/9359/9267 9366/9459/9366 +f 9366/9459/9366 9267/9359/9267 9367/9460/9367 +f 9267/9359/9267 9268/9360/9268 9367/9460/9367 +f 9367/9460/9367 9268/9360/9268 9368/9461/9368 +f 9268/9360/9268 9269/9361/9269 9368/9461/9368 +f 9368/9461/9368 9269/9361/9269 9369/9462/9369 +f 9269/9361/9269 9270/9362/9270 9369/9462/9369 +f 9369/9462/9369 9270/9362/9270 9370/9463/9370 +f 9270/9362/9270 9271/9363/9271 9370/9463/9370 +f 9370/9463/9370 9271/9363/9271 9371/9464/9371 +f 9271/9363/9271 9272/9364/9272 9371/9464/9371 +f 9371/9464/9371 9272/9364/9272 9372/9465/9372 +f 9272/9364/9272 9273/9365/9273 9372/9465/9372 +f 9372/9465/9372 9273/9365/9273 9373/9466/9373 +f 9273/9365/9273 9274/9366/9274 9373/9466/9373 +f 9373/9466/9373 9274/9366/9274 9374/9467/9374 +f 9274/9366/9274 9275/9367/9275 9374/9467/9374 +f 9374/9467/9374 9275/9367/9275 9375/9468/9375 +f 9275/9367/9275 9276/9368/9276 9375/9468/9375 +f 9375/9468/9375 9276/9368/9276 9376/9469/9376 +f 9276/9368/9276 9277/9369/9277 9376/9469/9376 +f 9376/9469/9376 9277/9369/9277 9377/9470/9377 +f 9277/9369/9277 9278/9370/9278 9377/9470/9377 +f 9377/9470/9377 9278/9370/9278 9378/9471/9378 +f 9278/9370/9278 9279/9371/9279 9378/9471/9378 +f 9378/9471/9378 9279/9371/9279 9379/9472/9379 +f 9279/9371/9279 9280/9372/9280 9379/9472/9379 +f 9379/9472/9379 9280/9372/9280 9380/9473/9380 +f 9280/9372/9280 9281/9373/9281 9380/9473/9380 +f 9380/9473/9380 9281/9373/9281 9381/9474/9381 +f 9281/9373/9281 9282/9374/9282 9381/9474/9381 +f 9381/9474/9381 9282/9374/9282 9382/9475/9382 +f 9282/9374/9282 9283/9375/9283 9382/9475/9382 +f 9382/9475/9382 9283/9375/9283 9383/9476/9383 +f 9283/9375/9283 9284/9376/9284 9383/9476/9383 +f 9383/9476/9383 9284/9376/9284 9384/9477/9384 +f 9284/9376/9284 9285/9377/9285 9384/9477/9384 +f 9384/9477/9384 9285/9377/9285 9385/9478/9385 +f 9285/9377/9285 9286/9378/9286 9385/9478/9385 +f 9385/9478/9385 9286/9378/9286 9386/9479/9386 +f 9286/9378/9286 9287/9379/9287 9386/9479/9386 +f 9386/9479/9386 9287/9379/9287 9387/9480/9387 +f 9287/9379/9287 9288/9380/9288 9387/9480/9387 +f 9387/9480/9387 9288/9380/9288 9388/9481/9388 +f 9288/9380/9288 9289/9381/9289 9388/9481/9388 +f 9388/9481/9388 9289/9381/9289 9389/9482/9389 +f 9289/9381/9289 9290/9382/9290 9389/9482/9389 +f 9389/9482/9389 9290/9382/9290 9390/9483/9390 +f 9290/9382/9290 9291/9383/9291 9390/9483/9390 +f 9390/9483/9390 9291/9383/9291 9391/9484/9391 +f 9291/9383/9291 9292/9384/9292 9391/9484/9391 +f 9391/9484/9391 9292/9384/9292 9392/9485/9392 +f 9292/9384/9292 9293/9385/9293 9392/9485/9392 +f 9392/9485/9392 9293/9385/9293 9393/9486/9393 +f 9293/9385/9293 9294/9386/9294 9393/9486/9393 +f 9393/9486/9393 9294/9386/9294 9394/9487/9394 +f 9294/9386/9294 9295/9387/9295 9394/9487/9394 +f 9394/9487/9394 9295/9387/9295 9395/9488/9395 +f 9295/9387/9295 9296/9388/9296 9395/9488/9395 +f 9395/9488/9395 9296/9388/9296 9396/9489/9396 +f 9296/9388/9296 9297/9389/9297 9396/9489/9396 +f 9396/9489/9396 9297/9389/9297 9397/9490/9397 +f 9297/9389/9297 9298/9390/9298 9397/9490/9397 +f 9397/9490/9397 9298/9390/9298 9398/9491/9398 +f 9298/9390/9298 9299/9391/9299 9398/9491/9398 +f 9398/9491/9398 9299/9391/9299 9399/9492/9399 +f 9299/9391/9299 9300/9392/9300 9399/9492/9399 +f 9399/9492/9399 9300/9392/9300 9400/9493/9400 +f 9300/9392/9300 9201/9393/9201 9400/9493/9400 +f 9400/9493/9400 9201/9393/9201 9301/9494/9301 +f 9301/9394/9301 9302/9395/9302 9401/9495/9401 +f 9401/9495/9401 9302/9395/9302 9402/9496/9402 +f 9302/9395/9302 9303/9396/9303 9402/9496/9402 +f 9402/9496/9402 9303/9396/9303 9403/9497/9403 +f 9303/9396/9303 9304/9397/9304 9403/9497/9403 +f 9403/9497/9403 9304/9397/9304 9404/9498/9404 +f 9304/9397/9304 9305/9398/9305 9404/9498/9404 +f 9404/9498/9404 9305/9398/9305 9405/9499/9405 +f 9305/9398/9305 9306/9399/9306 9405/9499/9405 +f 9405/9499/9405 9306/9399/9306 9406/9500/9406 +f 9306/9399/9306 9307/9400/9307 9406/9500/9406 +f 9406/9500/9406 9307/9400/9307 9407/9501/9407 +f 9307/9400/9307 9308/9401/9308 9407/9501/9407 +f 9407/9501/9407 9308/9401/9308 9408/9502/9408 +f 9308/9401/9308 9309/9402/9309 9408/9502/9408 +f 9408/9502/9408 9309/9402/9309 9409/9503/9409 +f 9309/9402/9309 9310/9403/9310 9409/9503/9409 +f 9409/9503/9409 9310/9403/9310 9410/9504/9410 +f 9310/9403/9310 9311/9404/9311 9410/9504/9410 +f 9410/9504/9410 9311/9404/9311 9411/9505/9411 +f 9311/9404/9311 9312/9405/9312 9411/9505/9411 +f 9411/9505/9411 9312/9405/9312 9412/9506/9412 +f 9312/9405/9312 9313/9406/9313 9412/9506/9412 +f 9412/9506/9412 9313/9406/9313 9413/9507/9413 +f 9313/9406/9313 9314/9407/9314 9413/9507/9413 +f 9413/9507/9413 9314/9407/9314 9414/9508/9414 +f 9314/9407/9314 9315/9408/9315 9414/9508/9414 +f 9414/9508/9414 9315/9408/9315 9415/9509/9415 +f 9315/9408/9315 9316/9409/9316 9415/9509/9415 +f 9415/9509/9415 9316/9409/9316 9416/9510/9416 +f 9316/9409/9316 9317/9410/9317 9416/9510/9416 +f 9416/9510/9416 9317/9410/9317 9417/9511/9417 +f 9317/9410/9317 9318/9411/9318 9417/9511/9417 +f 9417/9511/9417 9318/9411/9318 9418/9512/9418 +f 9318/9411/9318 9319/9412/9319 9418/9512/9418 +f 9418/9512/9418 9319/9412/9319 9419/9513/9419 +f 9319/9412/9319 9320/9413/9320 9419/9513/9419 +f 9419/9513/9419 9320/9413/9320 9420/9514/9420 +f 9320/9413/9320 9321/9414/9321 9420/9514/9420 +f 9420/9514/9420 9321/9414/9321 9421/9515/9421 +f 9321/9414/9321 9322/9415/9322 9421/9515/9421 +f 9421/9515/9421 9322/9415/9322 9422/9516/9422 +f 9322/9415/9322 9323/9416/9323 9422/9516/9422 +f 9422/9516/9422 9323/9416/9323 9423/9517/9423 +f 9323/9416/9323 9324/9417/9324 9423/9517/9423 +f 9423/9517/9423 9324/9417/9324 9424/9518/9424 +f 9324/9417/9324 9325/9418/9325 9424/9518/9424 +f 9424/9518/9424 9325/9418/9325 9425/9519/9425 +f 9325/9418/9325 9326/9419/9326 9425/9519/9425 +f 9425/9519/9425 9326/9419/9326 9426/9520/9426 +f 9326/9419/9326 9327/9420/9327 9426/9520/9426 +f 9426/9520/9426 9327/9420/9327 9427/9521/9427 +f 9327/9420/9327 9328/9421/9328 9427/9521/9427 +f 9427/9521/9427 9328/9421/9328 9428/9522/9428 +f 9328/9421/9328 9329/9422/9329 9428/9522/9428 +f 9428/9522/9428 9329/9422/9329 9429/9523/9429 +f 9329/9422/9329 9330/9423/9330 9429/9523/9429 +f 9429/9523/9429 9330/9423/9330 9430/9524/9430 +f 9330/9423/9330 9331/9424/9331 9430/9524/9430 +f 9430/9524/9430 9331/9424/9331 9431/9525/9431 +f 9331/9424/9331 9332/9425/9332 9431/9525/9431 +f 9431/9525/9431 9332/9425/9332 9432/9526/9432 +f 9332/9425/9332 9333/9426/9333 9432/9526/9432 +f 9432/9526/9432 9333/9426/9333 9433/9527/9433 +f 9333/9426/9333 9334/9427/9334 9433/9527/9433 +f 9433/9527/9433 9334/9427/9334 9434/9528/9434 +f 9334/9427/9334 9335/9428/9335 9434/9528/9434 +f 9434/9528/9434 9335/9428/9335 9435/9529/9435 +f 9335/9428/9335 9336/9429/9336 9435/9529/9435 +f 9435/9529/9435 9336/9429/9336 9436/9530/9436 +f 9336/9429/9336 9337/9430/9337 9436/9530/9436 +f 9436/9530/9436 9337/9430/9337 9437/9531/9437 +f 9337/9430/9337 9338/9431/9338 9437/9531/9437 +f 9437/9531/9437 9338/9431/9338 9438/9532/9438 +f 9338/9431/9338 9339/9432/9339 9438/9532/9438 +f 9438/9532/9438 9339/9432/9339 9439/9533/9439 +f 9339/9432/9339 9340/9433/9340 9439/9533/9439 +f 9439/9533/9439 9340/9433/9340 9440/9534/9440 +f 9340/9433/9340 9341/9434/9341 9440/9534/9440 +f 9440/9534/9440 9341/9434/9341 9441/9535/9441 +f 9341/9434/9341 9342/9435/9342 9441/9535/9441 +f 9441/9535/9441 9342/9435/9342 9442/9536/9442 +f 9342/9435/9342 9343/9436/9343 9442/9536/9442 +f 9442/9536/9442 9343/9436/9343 9443/9537/9443 +f 9343/9436/9343 9344/9437/9344 9443/9537/9443 +f 9443/9537/9443 9344/9437/9344 9444/9538/9444 +f 9344/9437/9344 9345/9438/9345 9444/9538/9444 +f 9444/9538/9444 9345/9438/9345 9445/9539/9445 +f 9345/9438/9345 9346/9439/9346 9445/9539/9445 +f 9445/9539/9445 9346/9439/9346 9446/9540/9446 +f 9346/9439/9346 9347/9440/9347 9446/9540/9446 +f 9446/9540/9446 9347/9440/9347 9447/9541/9447 +f 9347/9440/9347 9348/9441/9348 9447/9541/9447 +f 9447/9541/9447 9348/9441/9348 9448/9542/9448 +f 9348/9441/9348 9349/9442/9349 9448/9542/9448 +f 9448/9542/9448 9349/9442/9349 9449/9543/9449 +f 9349/9442/9349 9350/9443/9350 9449/9543/9449 +f 9449/9543/9449 9350/9443/9350 9450/9544/9450 +f 9350/9443/9350 9351/9444/9351 9450/9544/9450 +f 9450/9544/9450 9351/9444/9351 9451/9545/9451 +f 9351/9444/9351 9352/9445/9352 9451/9545/9451 +f 9451/9545/9451 9352/9445/9352 9452/9546/9452 +f 9352/9445/9352 9353/9446/9353 9452/9546/9452 +f 9452/9546/9452 9353/9446/9353 9453/9547/9453 +f 9353/9446/9353 9354/9447/9354 9453/9547/9453 +f 9453/9547/9453 9354/9447/9354 9454/9548/9454 +f 9354/9447/9354 9355/9448/9355 9454/9548/9454 +f 9454/9548/9454 9355/9448/9355 9455/9549/9455 +f 9355/9448/9355 9356/9449/9356 9455/9549/9455 +f 9455/9549/9455 9356/9449/9356 9456/9550/9456 +f 9356/9449/9356 9357/9450/9357 9456/9550/9456 +f 9456/9550/9456 9357/9450/9357 9457/9551/9457 +f 9357/9450/9357 9358/9451/9358 9457/9551/9457 +f 9457/9551/9457 9358/9451/9358 9458/9552/9458 +f 9358/9451/9358 9359/9452/9359 9458/9552/9458 +f 9458/9552/9458 9359/9452/9359 9459/9553/9459 +f 9359/9452/9359 9360/9453/9360 9459/9553/9459 +f 9459/9553/9459 9360/9453/9360 9460/9554/9460 +f 9360/9453/9360 9361/9454/9361 9460/9554/9460 +f 9460/9554/9460 9361/9454/9361 9461/9555/9461 +f 9361/9454/9361 9362/9455/9362 9461/9555/9461 +f 9461/9555/9461 9362/9455/9362 9462/9556/9462 +f 9362/9455/9362 9363/9456/9363 9462/9556/9462 +f 9462/9556/9462 9363/9456/9363 9463/9557/9463 +f 9363/9456/9363 9364/9457/9364 9463/9557/9463 +f 9463/9557/9463 9364/9457/9364 9464/9558/9464 +f 9364/9457/9364 9365/9458/9365 9464/9558/9464 +f 9464/9558/9464 9365/9458/9365 9465/9559/9465 +f 9365/9458/9365 9366/9459/9366 9465/9559/9465 +f 9465/9559/9465 9366/9459/9366 9466/9560/9466 +f 9366/9459/9366 9367/9460/9367 9466/9560/9466 +f 9466/9560/9466 9367/9460/9367 9467/9561/9467 +f 9367/9460/9367 9368/9461/9368 9467/9561/9467 +f 9467/9561/9467 9368/9461/9368 9468/9562/9468 +f 9368/9461/9368 9369/9462/9369 9468/9562/9468 +f 9468/9562/9468 9369/9462/9369 9469/9563/9469 +f 9369/9462/9369 9370/9463/9370 9469/9563/9469 +f 9469/9563/9469 9370/9463/9370 9470/9564/9470 +f 9370/9463/9370 9371/9464/9371 9470/9564/9470 +f 9470/9564/9470 9371/9464/9371 9471/9565/9471 +f 9371/9464/9371 9372/9465/9372 9471/9565/9471 +f 9471/9565/9471 9372/9465/9372 9472/9566/9472 +f 9372/9465/9372 9373/9466/9373 9472/9566/9472 +f 9472/9566/9472 9373/9466/9373 9473/9567/9473 +f 9373/9466/9373 9374/9467/9374 9473/9567/9473 +f 9473/9567/9473 9374/9467/9374 9474/9568/9474 +f 9374/9467/9374 9375/9468/9375 9474/9568/9474 +f 9474/9568/9474 9375/9468/9375 9475/9569/9475 +f 9375/9468/9375 9376/9469/9376 9475/9569/9475 +f 9475/9569/9475 9376/9469/9376 9476/9570/9476 +f 9376/9469/9376 9377/9470/9377 9476/9570/9476 +f 9476/9570/9476 9377/9470/9377 9477/9571/9477 +f 9377/9470/9377 9378/9471/9378 9477/9571/9477 +f 9477/9571/9477 9378/9471/9378 9478/9572/9478 +f 9378/9471/9378 9379/9472/9379 9478/9572/9478 +f 9478/9572/9478 9379/9472/9379 9479/9573/9479 +f 9379/9472/9379 9380/9473/9380 9479/9573/9479 +f 9479/9573/9479 9380/9473/9380 9480/9574/9480 +f 9380/9473/9380 9381/9474/9381 9480/9574/9480 +f 9480/9574/9480 9381/9474/9381 9481/9575/9481 +f 9381/9474/9381 9382/9475/9382 9481/9575/9481 +f 9481/9575/9481 9382/9475/9382 9482/9576/9482 +f 9382/9475/9382 9383/9476/9383 9482/9576/9482 +f 9482/9576/9482 9383/9476/9383 9483/9577/9483 +f 9383/9476/9383 9384/9477/9384 9483/9577/9483 +f 9483/9577/9483 9384/9477/9384 9484/9578/9484 +f 9384/9477/9384 9385/9478/9385 9484/9578/9484 +f 9484/9578/9484 9385/9478/9385 9485/9579/9485 +f 9385/9478/9385 9386/9479/9386 9485/9579/9485 +f 9485/9579/9485 9386/9479/9386 9486/9580/9486 +f 9386/9479/9386 9387/9480/9387 9486/9580/9486 +f 9486/9580/9486 9387/9480/9387 9487/9581/9487 +f 9387/9480/9387 9388/9481/9388 9487/9581/9487 +f 9487/9581/9487 9388/9481/9388 9488/9582/9488 +f 9388/9481/9388 9389/9482/9389 9488/9582/9488 +f 9488/9582/9488 9389/9482/9389 9489/9583/9489 +f 9389/9482/9389 9390/9483/9390 9489/9583/9489 +f 9489/9583/9489 9390/9483/9390 9490/9584/9490 +f 9390/9483/9390 9391/9484/9391 9490/9584/9490 +f 9490/9584/9490 9391/9484/9391 9491/9585/9491 +f 9391/9484/9391 9392/9485/9392 9491/9585/9491 +f 9491/9585/9491 9392/9485/9392 9492/9586/9492 +f 9392/9485/9392 9393/9486/9393 9492/9586/9492 +f 9492/9586/9492 9393/9486/9393 9493/9587/9493 +f 9393/9486/9393 9394/9487/9394 9493/9587/9493 +f 9493/9587/9493 9394/9487/9394 9494/9588/9494 +f 9394/9487/9394 9395/9488/9395 9494/9588/9494 +f 9494/9588/9494 9395/9488/9395 9495/9589/9495 +f 9395/9488/9395 9396/9489/9396 9495/9589/9495 +f 9495/9589/9495 9396/9489/9396 9496/9590/9496 +f 9396/9489/9396 9397/9490/9397 9496/9590/9496 +f 9496/9590/9496 9397/9490/9397 9497/9591/9497 +f 9397/9490/9397 9398/9491/9398 9497/9591/9497 +f 9497/9591/9497 9398/9491/9398 9498/9592/9498 +f 9398/9491/9398 9399/9492/9399 9498/9592/9498 +f 9498/9592/9498 9399/9492/9399 9499/9593/9499 +f 9399/9492/9399 9400/9493/9400 9499/9593/9499 +f 9499/9593/9499 9400/9493/9400 9500/9594/9500 +f 9400/9493/9400 9301/9494/9301 9500/9594/9500 +f 9500/9594/9500 9301/9494/9301 9401/9595/9401 +f 9401/9495/9401 9402/9496/9402 9501/9596/9501 +f 9501/9596/9501 9402/9496/9402 9502/9597/9502 +f 9402/9496/9402 9403/9497/9403 9502/9597/9502 +f 9502/9597/9502 9403/9497/9403 9503/9598/9503 +f 9403/9497/9403 9404/9498/9404 9503/9598/9503 +f 9503/9598/9503 9404/9498/9404 9504/9599/9504 +f 9404/9498/9404 9405/9499/9405 9504/9599/9504 +f 9504/9599/9504 9405/9499/9405 9505/9600/9505 +f 9405/9499/9405 9406/9500/9406 9505/9600/9505 +f 9505/9600/9505 9406/9500/9406 9506/9601/9506 +f 9406/9500/9406 9407/9501/9407 9506/9601/9506 +f 9506/9601/9506 9407/9501/9407 9507/9602/9507 +f 9407/9501/9407 9408/9502/9408 9507/9602/9507 +f 9507/9602/9507 9408/9502/9408 9508/9603/9508 +f 9408/9502/9408 9409/9503/9409 9508/9603/9508 +f 9508/9603/9508 9409/9503/9409 9509/9604/9509 +f 9409/9503/9409 9410/9504/9410 9509/9604/9509 +f 9509/9604/9509 9410/9504/9410 9510/9605/9510 +f 9410/9504/9410 9411/9505/9411 9510/9605/9510 +f 9510/9605/9510 9411/9505/9411 9511/9606/9511 +f 9411/9505/9411 9412/9506/9412 9511/9606/9511 +f 9511/9606/9511 9412/9506/9412 9512/9607/9512 +f 9412/9506/9412 9413/9507/9413 9512/9607/9512 +f 9512/9607/9512 9413/9507/9413 9513/9608/9513 +f 9413/9507/9413 9414/9508/9414 9513/9608/9513 +f 9513/9608/9513 9414/9508/9414 9514/9609/9514 +f 9414/9508/9414 9415/9509/9415 9514/9609/9514 +f 9514/9609/9514 9415/9509/9415 9515/9610/9515 +f 9415/9509/9415 9416/9510/9416 9515/9610/9515 +f 9515/9610/9515 9416/9510/9416 9516/9611/9516 +f 9416/9510/9416 9417/9511/9417 9516/9611/9516 +f 9516/9611/9516 9417/9511/9417 9517/9612/9517 +f 9417/9511/9417 9418/9512/9418 9517/9612/9517 +f 9517/9612/9517 9418/9512/9418 9518/9613/9518 +f 9418/9512/9418 9419/9513/9419 9518/9613/9518 +f 9518/9613/9518 9419/9513/9419 9519/9614/9519 +f 9419/9513/9419 9420/9514/9420 9519/9614/9519 +f 9519/9614/9519 9420/9514/9420 9520/9615/9520 +f 9420/9514/9420 9421/9515/9421 9520/9615/9520 +f 9520/9615/9520 9421/9515/9421 9521/9616/9521 +f 9421/9515/9421 9422/9516/9422 9521/9616/9521 +f 9521/9616/9521 9422/9516/9422 9522/9617/9522 +f 9422/9516/9422 9423/9517/9423 9522/9617/9522 +f 9522/9617/9522 9423/9517/9423 9523/9618/9523 +f 9423/9517/9423 9424/9518/9424 9523/9618/9523 +f 9523/9618/9523 9424/9518/9424 9524/9619/9524 +f 9424/9518/9424 9425/9519/9425 9524/9619/9524 +f 9524/9619/9524 9425/9519/9425 9525/9620/9525 +f 9425/9519/9425 9426/9520/9426 9525/9620/9525 +f 9525/9620/9525 9426/9520/9426 9526/9621/9526 +f 9426/9520/9426 9427/9521/9427 9526/9621/9526 +f 9526/9621/9526 9427/9521/9427 9527/9622/9527 +f 9427/9521/9427 9428/9522/9428 9527/9622/9527 +f 9527/9622/9527 9428/9522/9428 9528/9623/9528 +f 9428/9522/9428 9429/9523/9429 9528/9623/9528 +f 9528/9623/9528 9429/9523/9429 9529/9624/9529 +f 9429/9523/9429 9430/9524/9430 9529/9624/9529 +f 9529/9624/9529 9430/9524/9430 9530/9625/9530 +f 9430/9524/9430 9431/9525/9431 9530/9625/9530 +f 9530/9625/9530 9431/9525/9431 9531/9626/9531 +f 9431/9525/9431 9432/9526/9432 9531/9626/9531 +f 9531/9626/9531 9432/9526/9432 9532/9627/9532 +f 9432/9526/9432 9433/9527/9433 9532/9627/9532 +f 9532/9627/9532 9433/9527/9433 9533/9628/9533 +f 9433/9527/9433 9434/9528/9434 9533/9628/9533 +f 9533/9628/9533 9434/9528/9434 9534/9629/9534 +f 9434/9528/9434 9435/9529/9435 9534/9629/9534 +f 9534/9629/9534 9435/9529/9435 9535/9630/9535 +f 9435/9529/9435 9436/9530/9436 9535/9630/9535 +f 9535/9630/9535 9436/9530/9436 9536/9631/9536 +f 9436/9530/9436 9437/9531/9437 9536/9631/9536 +f 9536/9631/9536 9437/9531/9437 9537/9632/9537 +f 9437/9531/9437 9438/9532/9438 9537/9632/9537 +f 9537/9632/9537 9438/9532/9438 9538/9633/9538 +f 9438/9532/9438 9439/9533/9439 9538/9633/9538 +f 9538/9633/9538 9439/9533/9439 9539/9634/9539 +f 9439/9533/9439 9440/9534/9440 9539/9634/9539 +f 9539/9634/9539 9440/9534/9440 9540/9635/9540 +f 9440/9534/9440 9441/9535/9441 9540/9635/9540 +f 9540/9635/9540 9441/9535/9441 9541/9636/9541 +f 9441/9535/9441 9442/9536/9442 9541/9636/9541 +f 9541/9636/9541 9442/9536/9442 9542/9637/9542 +f 9442/9536/9442 9443/9537/9443 9542/9637/9542 +f 9542/9637/9542 9443/9537/9443 9543/9638/9543 +f 9443/9537/9443 9444/9538/9444 9543/9638/9543 +f 9543/9638/9543 9444/9538/9444 9544/9639/9544 +f 9444/9538/9444 9445/9539/9445 9544/9639/9544 +f 9544/9639/9544 9445/9539/9445 9545/9640/9545 +f 9445/9539/9445 9446/9540/9446 9545/9640/9545 +f 9545/9640/9545 9446/9540/9446 9546/9641/9546 +f 9446/9540/9446 9447/9541/9447 9546/9641/9546 +f 9546/9641/9546 9447/9541/9447 9547/9642/9547 +f 9447/9541/9447 9448/9542/9448 9547/9642/9547 +f 9547/9642/9547 9448/9542/9448 9548/9643/9548 +f 9448/9542/9448 9449/9543/9449 9548/9643/9548 +f 9548/9643/9548 9449/9543/9449 9549/9644/9549 +f 9449/9543/9449 9450/9544/9450 9549/9644/9549 +f 9549/9644/9549 9450/9544/9450 9550/9645/9550 +f 9450/9544/9450 9451/9545/9451 9550/9645/9550 +f 9550/9645/9550 9451/9545/9451 9551/9646/9551 +f 9451/9545/9451 9452/9546/9452 9551/9646/9551 +f 9551/9646/9551 9452/9546/9452 9552/9647/9552 +f 9452/9546/9452 9453/9547/9453 9552/9647/9552 +f 9552/9647/9552 9453/9547/9453 9553/9648/9553 +f 9453/9547/9453 9454/9548/9454 9553/9648/9553 +f 9553/9648/9553 9454/9548/9454 9554/9649/9554 +f 9454/9548/9454 9455/9549/9455 9554/9649/9554 +f 9554/9649/9554 9455/9549/9455 9555/9650/9555 +f 9455/9549/9455 9456/9550/9456 9555/9650/9555 +f 9555/9650/9555 9456/9550/9456 9556/9651/9556 +f 9456/9550/9456 9457/9551/9457 9556/9651/9556 +f 9556/9651/9556 9457/9551/9457 9557/9652/9557 +f 9457/9551/9457 9458/9552/9458 9557/9652/9557 +f 9557/9652/9557 9458/9552/9458 9558/9653/9558 +f 9458/9552/9458 9459/9553/9459 9558/9653/9558 +f 9558/9653/9558 9459/9553/9459 9559/9654/9559 +f 9459/9553/9459 9460/9554/9460 9559/9654/9559 +f 9559/9654/9559 9460/9554/9460 9560/9655/9560 +f 9460/9554/9460 9461/9555/9461 9560/9655/9560 +f 9560/9655/9560 9461/9555/9461 9561/9656/9561 +f 9461/9555/9461 9462/9556/9462 9561/9656/9561 +f 9561/9656/9561 9462/9556/9462 9562/9657/9562 +f 9462/9556/9462 9463/9557/9463 9562/9657/9562 +f 9562/9657/9562 9463/9557/9463 9563/9658/9563 +f 9463/9557/9463 9464/9558/9464 9563/9658/9563 +f 9563/9658/9563 9464/9558/9464 9564/9659/9564 +f 9464/9558/9464 9465/9559/9465 9564/9659/9564 +f 9564/9659/9564 9465/9559/9465 9565/9660/9565 +f 9465/9559/9465 9466/9560/9466 9565/9660/9565 +f 9565/9660/9565 9466/9560/9466 9566/9661/9566 +f 9466/9560/9466 9467/9561/9467 9566/9661/9566 +f 9566/9661/9566 9467/9561/9467 9567/9662/9567 +f 9467/9561/9467 9468/9562/9468 9567/9662/9567 +f 9567/9662/9567 9468/9562/9468 9568/9663/9568 +f 9468/9562/9468 9469/9563/9469 9568/9663/9568 +f 9568/9663/9568 9469/9563/9469 9569/9664/9569 +f 9469/9563/9469 9470/9564/9470 9569/9664/9569 +f 9569/9664/9569 9470/9564/9470 9570/9665/9570 +f 9470/9564/9470 9471/9565/9471 9570/9665/9570 +f 9570/9665/9570 9471/9565/9471 9571/9666/9571 +f 9471/9565/9471 9472/9566/9472 9571/9666/9571 +f 9571/9666/9571 9472/9566/9472 9572/9667/9572 +f 9472/9566/9472 9473/9567/9473 9572/9667/9572 +f 9572/9667/9572 9473/9567/9473 9573/9668/9573 +f 9473/9567/9473 9474/9568/9474 9573/9668/9573 +f 9573/9668/9573 9474/9568/9474 9574/9669/9574 +f 9474/9568/9474 9475/9569/9475 9574/9669/9574 +f 9574/9669/9574 9475/9569/9475 9575/9670/9575 +f 9475/9569/9475 9476/9570/9476 9575/9670/9575 +f 9575/9670/9575 9476/9570/9476 9576/9671/9576 +f 9476/9570/9476 9477/9571/9477 9576/9671/9576 +f 9576/9671/9576 9477/9571/9477 9577/9672/9577 +f 9477/9571/9477 9478/9572/9478 9577/9672/9577 +f 9577/9672/9577 9478/9572/9478 9578/9673/9578 +f 9478/9572/9478 9479/9573/9479 9578/9673/9578 +f 9578/9673/9578 9479/9573/9479 9579/9674/9579 +f 9479/9573/9479 9480/9574/9480 9579/9674/9579 +f 9579/9674/9579 9480/9574/9480 9580/9675/9580 +f 9480/9574/9480 9481/9575/9481 9580/9675/9580 +f 9580/9675/9580 9481/9575/9481 9581/9676/9581 +f 9481/9575/9481 9482/9576/9482 9581/9676/9581 +f 9581/9676/9581 9482/9576/9482 9582/9677/9582 +f 9482/9576/9482 9483/9577/9483 9582/9677/9582 +f 9582/9677/9582 9483/9577/9483 9583/9678/9583 +f 9483/9577/9483 9484/9578/9484 9583/9678/9583 +f 9583/9678/9583 9484/9578/9484 9584/9679/9584 +f 9484/9578/9484 9485/9579/9485 9584/9679/9584 +f 9584/9679/9584 9485/9579/9485 9585/9680/9585 +f 9485/9579/9485 9486/9580/9486 9585/9680/9585 +f 9585/9680/9585 9486/9580/9486 9586/9681/9586 +f 9486/9580/9486 9487/9581/9487 9586/9681/9586 +f 9586/9681/9586 9487/9581/9487 9587/9682/9587 +f 9487/9581/9487 9488/9582/9488 9587/9682/9587 +f 9587/9682/9587 9488/9582/9488 9588/9683/9588 +f 9488/9582/9488 9489/9583/9489 9588/9683/9588 +f 9588/9683/9588 9489/9583/9489 9589/9684/9589 +f 9489/9583/9489 9490/9584/9490 9589/9684/9589 +f 9589/9684/9589 9490/9584/9490 9590/9685/9590 +f 9490/9584/9490 9491/9585/9491 9590/9685/9590 +f 9590/9685/9590 9491/9585/9491 9591/9686/9591 +f 9491/9585/9491 9492/9586/9492 9591/9686/9591 +f 9591/9686/9591 9492/9586/9492 9592/9687/9592 +f 9492/9586/9492 9493/9587/9493 9592/9687/9592 +f 9592/9687/9592 9493/9587/9493 9593/9688/9593 +f 9493/9587/9493 9494/9588/9494 9593/9688/9593 +f 9593/9688/9593 9494/9588/9494 9594/9689/9594 +f 9494/9588/9494 9495/9589/9495 9594/9689/9594 +f 9594/9689/9594 9495/9589/9495 9595/9690/9595 +f 9495/9589/9495 9496/9590/9496 9595/9690/9595 +f 9595/9690/9595 9496/9590/9496 9596/9691/9596 +f 9496/9590/9496 9497/9591/9497 9596/9691/9596 +f 9596/9691/9596 9497/9591/9497 9597/9692/9597 +f 9497/9591/9497 9498/9592/9498 9597/9692/9597 +f 9597/9692/9597 9498/9592/9498 9598/9693/9598 +f 9498/9592/9498 9499/9593/9499 9598/9693/9598 +f 9598/9693/9598 9499/9593/9499 9599/9694/9599 +f 9499/9593/9499 9500/9594/9500 9599/9694/9599 +f 9599/9694/9599 9500/9594/9500 9600/9695/9600 +f 9500/9594/9500 9401/9595/9401 9600/9695/9600 +f 9600/9695/9600 9401/9595/9401 9501/9696/9501 +f 9501/9596/9501 9502/9597/9502 9601/9697/9601 +f 9601/9697/9601 9502/9597/9502 9602/9698/9602 +f 9502/9597/9502 9503/9598/9503 9602/9698/9602 +f 9602/9698/9602 9503/9598/9503 9603/9699/9603 +f 9503/9598/9503 9504/9599/9504 9603/9699/9603 +f 9603/9699/9603 9504/9599/9504 9604/9700/9604 +f 9504/9599/9504 9505/9600/9505 9604/9700/9604 +f 9604/9700/9604 9505/9600/9505 9605/9701/9605 +f 9505/9600/9505 9506/9601/9506 9605/9701/9605 +f 9605/9701/9605 9506/9601/9506 9606/9702/9606 +f 9506/9601/9506 9507/9602/9507 9606/9702/9606 +f 9606/9702/9606 9507/9602/9507 9607/9703/9607 +f 9507/9602/9507 9508/9603/9508 9607/9703/9607 +f 9607/9703/9607 9508/9603/9508 9608/9704/9608 +f 9508/9603/9508 9509/9604/9509 9608/9704/9608 +f 9608/9704/9608 9509/9604/9509 9609/9705/9609 +f 9509/9604/9509 9510/9605/9510 9609/9705/9609 +f 9609/9705/9609 9510/9605/9510 9610/9706/9610 +f 9510/9605/9510 9511/9606/9511 9610/9706/9610 +f 9610/9706/9610 9511/9606/9511 9611/9707/9611 +f 9511/9606/9511 9512/9607/9512 9611/9707/9611 +f 9611/9707/9611 9512/9607/9512 9612/9708/9612 +f 9512/9607/9512 9513/9608/9513 9612/9708/9612 +f 9612/9708/9612 9513/9608/9513 9613/9709/9613 +f 9513/9608/9513 9514/9609/9514 9613/9709/9613 +f 9613/9709/9613 9514/9609/9514 9614/9710/9614 +f 9514/9609/9514 9515/9610/9515 9614/9710/9614 +f 9614/9710/9614 9515/9610/9515 9615/9711/9615 +f 9515/9610/9515 9516/9611/9516 9615/9711/9615 +f 9615/9711/9615 9516/9611/9516 9616/9712/9616 +f 9516/9611/9516 9517/9612/9517 9616/9712/9616 +f 9616/9712/9616 9517/9612/9517 9617/9713/9617 +f 9517/9612/9517 9518/9613/9518 9617/9713/9617 +f 9617/9713/9617 9518/9613/9518 9618/9714/9618 +f 9518/9613/9518 9519/9614/9519 9618/9714/9618 +f 9618/9714/9618 9519/9614/9519 9619/9715/9619 +f 9519/9614/9519 9520/9615/9520 9619/9715/9619 +f 9619/9715/9619 9520/9615/9520 9620/9716/9620 +f 9520/9615/9520 9521/9616/9521 9620/9716/9620 +f 9620/9716/9620 9521/9616/9521 9621/9717/9621 +f 9521/9616/9521 9522/9617/9522 9621/9717/9621 +f 9621/9717/9621 9522/9617/9522 9622/9718/9622 +f 9522/9617/9522 9523/9618/9523 9622/9718/9622 +f 9622/9718/9622 9523/9618/9523 9623/9719/9623 +f 9523/9618/9523 9524/9619/9524 9623/9719/9623 +f 9623/9719/9623 9524/9619/9524 9624/9720/9624 +f 9524/9619/9524 9525/9620/9525 9624/9720/9624 +f 9624/9720/9624 9525/9620/9525 9625/9721/9625 +f 9525/9620/9525 9526/9621/9526 9625/9721/9625 +f 9625/9721/9625 9526/9621/9526 9626/9722/9626 +f 9526/9621/9526 9527/9622/9527 9626/9722/9626 +f 9626/9722/9626 9527/9622/9527 9627/9723/9627 +f 9527/9622/9527 9528/9623/9528 9627/9723/9627 +f 9627/9723/9627 9528/9623/9528 9628/9724/9628 +f 9528/9623/9528 9529/9624/9529 9628/9724/9628 +f 9628/9724/9628 9529/9624/9529 9629/9725/9629 +f 9529/9624/9529 9530/9625/9530 9629/9725/9629 +f 9629/9725/9629 9530/9625/9530 9630/9726/9630 +f 9530/9625/9530 9531/9626/9531 9630/9726/9630 +f 9630/9726/9630 9531/9626/9531 9631/9727/9631 +f 9531/9626/9531 9532/9627/9532 9631/9727/9631 +f 9631/9727/9631 9532/9627/9532 9632/9728/9632 +f 9532/9627/9532 9533/9628/9533 9632/9728/9632 +f 9632/9728/9632 9533/9628/9533 9633/9729/9633 +f 9533/9628/9533 9534/9629/9534 9633/9729/9633 +f 9633/9729/9633 9534/9629/9534 9634/9730/9634 +f 9534/9629/9534 9535/9630/9535 9634/9730/9634 +f 9634/9730/9634 9535/9630/9535 9635/9731/9635 +f 9535/9630/9535 9536/9631/9536 9635/9731/9635 +f 9635/9731/9635 9536/9631/9536 9636/9732/9636 +f 9536/9631/9536 9537/9632/9537 9636/9732/9636 +f 9636/9732/9636 9537/9632/9537 9637/9733/9637 +f 9537/9632/9537 9538/9633/9538 9637/9733/9637 +f 9637/9733/9637 9538/9633/9538 9638/9734/9638 +f 9538/9633/9538 9539/9634/9539 9638/9734/9638 +f 9638/9734/9638 9539/9634/9539 9639/9735/9639 +f 9539/9634/9539 9540/9635/9540 9639/9735/9639 +f 9639/9735/9639 9540/9635/9540 9640/9736/9640 +f 9540/9635/9540 9541/9636/9541 9640/9736/9640 +f 9640/9736/9640 9541/9636/9541 9641/9737/9641 +f 9541/9636/9541 9542/9637/9542 9641/9737/9641 +f 9641/9737/9641 9542/9637/9542 9642/9738/9642 +f 9542/9637/9542 9543/9638/9543 9642/9738/9642 +f 9642/9738/9642 9543/9638/9543 9643/9739/9643 +f 9543/9638/9543 9544/9639/9544 9643/9739/9643 +f 9643/9739/9643 9544/9639/9544 9644/9740/9644 +f 9544/9639/9544 9545/9640/9545 9644/9740/9644 +f 9644/9740/9644 9545/9640/9545 9645/9741/9645 +f 9545/9640/9545 9546/9641/9546 9645/9741/9645 +f 9645/9741/9645 9546/9641/9546 9646/9742/9646 +f 9546/9641/9546 9547/9642/9547 9646/9742/9646 +f 9646/9742/9646 9547/9642/9547 9647/9743/9647 +f 9547/9642/9547 9548/9643/9548 9647/9743/9647 +f 9647/9743/9647 9548/9643/9548 9648/9744/9648 +f 9548/9643/9548 9549/9644/9549 9648/9744/9648 +f 9648/9744/9648 9549/9644/9549 9649/9745/9649 +f 9549/9644/9549 9550/9645/9550 9649/9745/9649 +f 9649/9745/9649 9550/9645/9550 9650/9746/9650 +f 9550/9645/9550 9551/9646/9551 9650/9746/9650 +f 9650/9746/9650 9551/9646/9551 9651/9747/9651 +f 9551/9646/9551 9552/9647/9552 9651/9747/9651 +f 9651/9747/9651 9552/9647/9552 9652/9748/9652 +f 9552/9647/9552 9553/9648/9553 9652/9748/9652 +f 9652/9748/9652 9553/9648/9553 9653/9749/9653 +f 9553/9648/9553 9554/9649/9554 9653/9749/9653 +f 9653/9749/9653 9554/9649/9554 9654/9750/9654 +f 9554/9649/9554 9555/9650/9555 9654/9750/9654 +f 9654/9750/9654 9555/9650/9555 9655/9751/9655 +f 9555/9650/9555 9556/9651/9556 9655/9751/9655 +f 9655/9751/9655 9556/9651/9556 9656/9752/9656 +f 9556/9651/9556 9557/9652/9557 9656/9752/9656 +f 9656/9752/9656 9557/9652/9557 9657/9753/9657 +f 9557/9652/9557 9558/9653/9558 9657/9753/9657 +f 9657/9753/9657 9558/9653/9558 9658/9754/9658 +f 9558/9653/9558 9559/9654/9559 9658/9754/9658 +f 9658/9754/9658 9559/9654/9559 9659/9755/9659 +f 9559/9654/9559 9560/9655/9560 9659/9755/9659 +f 9659/9755/9659 9560/9655/9560 9660/9756/9660 +f 9560/9655/9560 9561/9656/9561 9660/9756/9660 +f 9660/9756/9660 9561/9656/9561 9661/9757/9661 +f 9561/9656/9561 9562/9657/9562 9661/9757/9661 +f 9661/9757/9661 9562/9657/9562 9662/9758/9662 +f 9562/9657/9562 9563/9658/9563 9662/9758/9662 +f 9662/9758/9662 9563/9658/9563 9663/9759/9663 +f 9563/9658/9563 9564/9659/9564 9663/9759/9663 +f 9663/9759/9663 9564/9659/9564 9664/9760/9664 +f 9564/9659/9564 9565/9660/9565 9664/9760/9664 +f 9664/9760/9664 9565/9660/9565 9665/9761/9665 +f 9565/9660/9565 9566/9661/9566 9665/9761/9665 +f 9665/9761/9665 9566/9661/9566 9666/9762/9666 +f 9566/9661/9566 9567/9662/9567 9666/9762/9666 +f 9666/9762/9666 9567/9662/9567 9667/9763/9667 +f 9567/9662/9567 9568/9663/9568 9667/9763/9667 +f 9667/9763/9667 9568/9663/9568 9668/9764/9668 +f 9568/9663/9568 9569/9664/9569 9668/9764/9668 +f 9668/9764/9668 9569/9664/9569 9669/9765/9669 +f 9569/9664/9569 9570/9665/9570 9669/9765/9669 +f 9669/9765/9669 9570/9665/9570 9670/9766/9670 +f 9570/9665/9570 9571/9666/9571 9670/9766/9670 +f 9670/9766/9670 9571/9666/9571 9671/9767/9671 +f 9571/9666/9571 9572/9667/9572 9671/9767/9671 +f 9671/9767/9671 9572/9667/9572 9672/9768/9672 +f 9572/9667/9572 9573/9668/9573 9672/9768/9672 +f 9672/9768/9672 9573/9668/9573 9673/9769/9673 +f 9573/9668/9573 9574/9669/9574 9673/9769/9673 +f 9673/9769/9673 9574/9669/9574 9674/9770/9674 +f 9574/9669/9574 9575/9670/9575 9674/9770/9674 +f 9674/9770/9674 9575/9670/9575 9675/9771/9675 +f 9575/9670/9575 9576/9671/9576 9675/9771/9675 +f 9675/9771/9675 9576/9671/9576 9676/9772/9676 +f 9576/9671/9576 9577/9672/9577 9676/9772/9676 +f 9676/9772/9676 9577/9672/9577 9677/9773/9677 +f 9577/9672/9577 9578/9673/9578 9677/9773/9677 +f 9677/9773/9677 9578/9673/9578 9678/9774/9678 +f 9578/9673/9578 9579/9674/9579 9678/9774/9678 +f 9678/9774/9678 9579/9674/9579 9679/9775/9679 +f 9579/9674/9579 9580/9675/9580 9679/9775/9679 +f 9679/9775/9679 9580/9675/9580 9680/9776/9680 +f 9580/9675/9580 9581/9676/9581 9680/9776/9680 +f 9680/9776/9680 9581/9676/9581 9681/9777/9681 +f 9581/9676/9581 9582/9677/9582 9681/9777/9681 +f 9681/9777/9681 9582/9677/9582 9682/9778/9682 +f 9582/9677/9582 9583/9678/9583 9682/9778/9682 +f 9682/9778/9682 9583/9678/9583 9683/9779/9683 +f 9583/9678/9583 9584/9679/9584 9683/9779/9683 +f 9683/9779/9683 9584/9679/9584 9684/9780/9684 +f 9584/9679/9584 9585/9680/9585 9684/9780/9684 +f 9684/9780/9684 9585/9680/9585 9685/9781/9685 +f 9585/9680/9585 9586/9681/9586 9685/9781/9685 +f 9685/9781/9685 9586/9681/9586 9686/9782/9686 +f 9586/9681/9586 9587/9682/9587 9686/9782/9686 +f 9686/9782/9686 9587/9682/9587 9687/9783/9687 +f 9587/9682/9587 9588/9683/9588 9687/9783/9687 +f 9687/9783/9687 9588/9683/9588 9688/9784/9688 +f 9588/9683/9588 9589/9684/9589 9688/9784/9688 +f 9688/9784/9688 9589/9684/9589 9689/9785/9689 +f 9589/9684/9589 9590/9685/9590 9689/9785/9689 +f 9689/9785/9689 9590/9685/9590 9690/9786/9690 +f 9590/9685/9590 9591/9686/9591 9690/9786/9690 +f 9690/9786/9690 9591/9686/9591 9691/9787/9691 +f 9591/9686/9591 9592/9687/9592 9691/9787/9691 +f 9691/9787/9691 9592/9687/9592 9692/9788/9692 +f 9592/9687/9592 9593/9688/9593 9692/9788/9692 +f 9692/9788/9692 9593/9688/9593 9693/9789/9693 +f 9593/9688/9593 9594/9689/9594 9693/9789/9693 +f 9693/9789/9693 9594/9689/9594 9694/9790/9694 +f 9594/9689/9594 9595/9690/9595 9694/9790/9694 +f 9694/9790/9694 9595/9690/9595 9695/9791/9695 +f 9595/9690/9595 9596/9691/9596 9695/9791/9695 +f 9695/9791/9695 9596/9691/9596 9696/9792/9696 +f 9596/9691/9596 9597/9692/9597 9696/9792/9696 +f 9696/9792/9696 9597/9692/9597 9697/9793/9697 +f 9597/9692/9597 9598/9693/9598 9697/9793/9697 +f 9697/9793/9697 9598/9693/9598 9698/9794/9698 +f 9598/9693/9598 9599/9694/9599 9698/9794/9698 +f 9698/9794/9698 9599/9694/9599 9699/9795/9699 +f 9599/9694/9599 9600/9695/9600 9699/9795/9699 +f 9699/9795/9699 9600/9695/9600 9700/9796/9700 +f 9600/9695/9600 9501/9696/9501 9700/9796/9700 +f 9700/9796/9700 9501/9696/9501 9601/9797/9601 +f 9601/9697/9601 9602/9698/9602 9701/9798/9701 +f 9701/9798/9701 9602/9698/9602 9702/9799/9702 +f 9602/9698/9602 9603/9699/9603 9702/9799/9702 +f 9702/9799/9702 9603/9699/9603 9703/9800/9703 +f 9603/9699/9603 9604/9700/9604 9703/9800/9703 +f 9703/9800/9703 9604/9700/9604 9704/9801/9704 +f 9604/9700/9604 9605/9701/9605 9704/9801/9704 +f 9704/9801/9704 9605/9701/9605 9705/9802/9705 +f 9605/9701/9605 9606/9702/9606 9705/9802/9705 +f 9705/9802/9705 9606/9702/9606 9706/9803/9706 +f 9606/9702/9606 9607/9703/9607 9706/9803/9706 +f 9706/9803/9706 9607/9703/9607 9707/9804/9707 +f 9607/9703/9607 9608/9704/9608 9707/9804/9707 +f 9707/9804/9707 9608/9704/9608 9708/9805/9708 +f 9608/9704/9608 9609/9705/9609 9708/9805/9708 +f 9708/9805/9708 9609/9705/9609 9709/9806/9709 +f 9609/9705/9609 9610/9706/9610 9709/9806/9709 +f 9709/9806/9709 9610/9706/9610 9710/9807/9710 +f 9610/9706/9610 9611/9707/9611 9710/9807/9710 +f 9710/9807/9710 9611/9707/9611 9711/9808/9711 +f 9611/9707/9611 9612/9708/9612 9711/9808/9711 +f 9711/9808/9711 9612/9708/9612 9712/9809/9712 +f 9612/9708/9612 9613/9709/9613 9712/9809/9712 +f 9712/9809/9712 9613/9709/9613 9713/9810/9713 +f 9613/9709/9613 9614/9710/9614 9713/9810/9713 +f 9713/9810/9713 9614/9710/9614 9714/9811/9714 +f 9614/9710/9614 9615/9711/9615 9714/9811/9714 +f 9714/9811/9714 9615/9711/9615 9715/9812/9715 +f 9615/9711/9615 9616/9712/9616 9715/9812/9715 +f 9715/9812/9715 9616/9712/9616 9716/9813/9716 +f 9616/9712/9616 9617/9713/9617 9716/9813/9716 +f 9716/9813/9716 9617/9713/9617 9717/9814/9717 +f 9617/9713/9617 9618/9714/9618 9717/9814/9717 +f 9717/9814/9717 9618/9714/9618 9718/9815/9718 +f 9618/9714/9618 9619/9715/9619 9718/9815/9718 +f 9718/9815/9718 9619/9715/9619 9719/9816/9719 +f 9619/9715/9619 9620/9716/9620 9719/9816/9719 +f 9719/9816/9719 9620/9716/9620 9720/9817/9720 +f 9620/9716/9620 9621/9717/9621 9720/9817/9720 +f 9720/9817/9720 9621/9717/9621 9721/9818/9721 +f 9621/9717/9621 9622/9718/9622 9721/9818/9721 +f 9721/9818/9721 9622/9718/9622 9722/9819/9722 +f 9622/9718/9622 9623/9719/9623 9722/9819/9722 +f 9722/9819/9722 9623/9719/9623 9723/9820/9723 +f 9623/9719/9623 9624/9720/9624 9723/9820/9723 +f 9723/9820/9723 9624/9720/9624 9724/9821/9724 +f 9624/9720/9624 9625/9721/9625 9724/9821/9724 +f 9724/9821/9724 9625/9721/9625 9725/9822/9725 +f 9625/9721/9625 9626/9722/9626 9725/9822/9725 +f 9725/9822/9725 9626/9722/9626 9726/9823/9726 +f 9626/9722/9626 9627/9723/9627 9726/9823/9726 +f 9726/9823/9726 9627/9723/9627 9727/9824/9727 +f 9627/9723/9627 9628/9724/9628 9727/9824/9727 +f 9727/9824/9727 9628/9724/9628 9728/9825/9728 +f 9628/9724/9628 9629/9725/9629 9728/9825/9728 +f 9728/9825/9728 9629/9725/9629 9729/9826/9729 +f 9629/9725/9629 9630/9726/9630 9729/9826/9729 +f 9729/9826/9729 9630/9726/9630 9730/9827/9730 +f 9630/9726/9630 9631/9727/9631 9730/9827/9730 +f 9730/9827/9730 9631/9727/9631 9731/9828/9731 +f 9631/9727/9631 9632/9728/9632 9731/9828/9731 +f 9731/9828/9731 9632/9728/9632 9732/9829/9732 +f 9632/9728/9632 9633/9729/9633 9732/9829/9732 +f 9732/9829/9732 9633/9729/9633 9733/9830/9733 +f 9633/9729/9633 9634/9730/9634 9733/9830/9733 +f 9733/9830/9733 9634/9730/9634 9734/9831/9734 +f 9634/9730/9634 9635/9731/9635 9734/9831/9734 +f 9734/9831/9734 9635/9731/9635 9735/9832/9735 +f 9635/9731/9635 9636/9732/9636 9735/9832/9735 +f 9735/9832/9735 9636/9732/9636 9736/9833/9736 +f 9636/9732/9636 9637/9733/9637 9736/9833/9736 +f 9736/9833/9736 9637/9733/9637 9737/9834/9737 +f 9637/9733/9637 9638/9734/9638 9737/9834/9737 +f 9737/9834/9737 9638/9734/9638 9738/9835/9738 +f 9638/9734/9638 9639/9735/9639 9738/9835/9738 +f 9738/9835/9738 9639/9735/9639 9739/9836/9739 +f 9639/9735/9639 9640/9736/9640 9739/9836/9739 +f 9739/9836/9739 9640/9736/9640 9740/9837/9740 +f 9640/9736/9640 9641/9737/9641 9740/9837/9740 +f 9740/9837/9740 9641/9737/9641 9741/9838/9741 +f 9641/9737/9641 9642/9738/9642 9741/9838/9741 +f 9741/9838/9741 9642/9738/9642 9742/9839/9742 +f 9642/9738/9642 9643/9739/9643 9742/9839/9742 +f 9742/9839/9742 9643/9739/9643 9743/9840/9743 +f 9643/9739/9643 9644/9740/9644 9743/9840/9743 +f 9743/9840/9743 9644/9740/9644 9744/9841/9744 +f 9644/9740/9644 9645/9741/9645 9744/9841/9744 +f 9744/9841/9744 9645/9741/9645 9745/9842/9745 +f 9645/9741/9645 9646/9742/9646 9745/9842/9745 +f 9745/9842/9745 9646/9742/9646 9746/9843/9746 +f 9646/9742/9646 9647/9743/9647 9746/9843/9746 +f 9746/9843/9746 9647/9743/9647 9747/9844/9747 +f 9647/9743/9647 9648/9744/9648 9747/9844/9747 +f 9747/9844/9747 9648/9744/9648 9748/9845/9748 +f 9648/9744/9648 9649/9745/9649 9748/9845/9748 +f 9748/9845/9748 9649/9745/9649 9749/9846/9749 +f 9649/9745/9649 9650/9746/9650 9749/9846/9749 +f 9749/9846/9749 9650/9746/9650 9750/9847/9750 +f 9650/9746/9650 9651/9747/9651 9750/9847/9750 +f 9750/9847/9750 9651/9747/9651 9751/9848/9751 +f 9651/9747/9651 9652/9748/9652 9751/9848/9751 +f 9751/9848/9751 9652/9748/9652 9752/9849/9752 +f 9652/9748/9652 9653/9749/9653 9752/9849/9752 +f 9752/9849/9752 9653/9749/9653 9753/9850/9753 +f 9653/9749/9653 9654/9750/9654 9753/9850/9753 +f 9753/9850/9753 9654/9750/9654 9754/9851/9754 +f 9654/9750/9654 9655/9751/9655 9754/9851/9754 +f 9754/9851/9754 9655/9751/9655 9755/9852/9755 +f 9655/9751/9655 9656/9752/9656 9755/9852/9755 +f 9755/9852/9755 9656/9752/9656 9756/9853/9756 +f 9656/9752/9656 9657/9753/9657 9756/9853/9756 +f 9756/9853/9756 9657/9753/9657 9757/9854/9757 +f 9657/9753/9657 9658/9754/9658 9757/9854/9757 +f 9757/9854/9757 9658/9754/9658 9758/9855/9758 +f 9658/9754/9658 9659/9755/9659 9758/9855/9758 +f 9758/9855/9758 9659/9755/9659 9759/9856/9759 +f 9659/9755/9659 9660/9756/9660 9759/9856/9759 +f 9759/9856/9759 9660/9756/9660 9760/9857/9760 +f 9660/9756/9660 9661/9757/9661 9760/9857/9760 +f 9760/9857/9760 9661/9757/9661 9761/9858/9761 +f 9661/9757/9661 9662/9758/9662 9761/9858/9761 +f 9761/9858/9761 9662/9758/9662 9762/9859/9762 +f 9662/9758/9662 9663/9759/9663 9762/9859/9762 +f 9762/9859/9762 9663/9759/9663 9763/9860/9763 +f 9663/9759/9663 9664/9760/9664 9763/9860/9763 +f 9763/9860/9763 9664/9760/9664 9764/9861/9764 +f 9664/9760/9664 9665/9761/9665 9764/9861/9764 +f 9764/9861/9764 9665/9761/9665 9765/9862/9765 +f 9665/9761/9665 9666/9762/9666 9765/9862/9765 +f 9765/9862/9765 9666/9762/9666 9766/9863/9766 +f 9666/9762/9666 9667/9763/9667 9766/9863/9766 +f 9766/9863/9766 9667/9763/9667 9767/9864/9767 +f 9667/9763/9667 9668/9764/9668 9767/9864/9767 +f 9767/9864/9767 9668/9764/9668 9768/9865/9768 +f 9668/9764/9668 9669/9765/9669 9768/9865/9768 +f 9768/9865/9768 9669/9765/9669 9769/9866/9769 +f 9669/9765/9669 9670/9766/9670 9769/9866/9769 +f 9769/9866/9769 9670/9766/9670 9770/9867/9770 +f 9670/9766/9670 9671/9767/9671 9770/9867/9770 +f 9770/9867/9770 9671/9767/9671 9771/9868/9771 +f 9671/9767/9671 9672/9768/9672 9771/9868/9771 +f 9771/9868/9771 9672/9768/9672 9772/9869/9772 +f 9672/9768/9672 9673/9769/9673 9772/9869/9772 +f 9772/9869/9772 9673/9769/9673 9773/9870/9773 +f 9673/9769/9673 9674/9770/9674 9773/9870/9773 +f 9773/9870/9773 9674/9770/9674 9774/9871/9774 +f 9674/9770/9674 9675/9771/9675 9774/9871/9774 +f 9774/9871/9774 9675/9771/9675 9775/9872/9775 +f 9675/9771/9675 9676/9772/9676 9775/9872/9775 +f 9775/9872/9775 9676/9772/9676 9776/9873/9776 +f 9676/9772/9676 9677/9773/9677 9776/9873/9776 +f 9776/9873/9776 9677/9773/9677 9777/9874/9777 +f 9677/9773/9677 9678/9774/9678 9777/9874/9777 +f 9777/9874/9777 9678/9774/9678 9778/9875/9778 +f 9678/9774/9678 9679/9775/9679 9778/9875/9778 +f 9778/9875/9778 9679/9775/9679 9779/9876/9779 +f 9679/9775/9679 9680/9776/9680 9779/9876/9779 +f 9779/9876/9779 9680/9776/9680 9780/9877/9780 +f 9680/9776/9680 9681/9777/9681 9780/9877/9780 +f 9780/9877/9780 9681/9777/9681 9781/9878/9781 +f 9681/9777/9681 9682/9778/9682 9781/9878/9781 +f 9781/9878/9781 9682/9778/9682 9782/9879/9782 +f 9682/9778/9682 9683/9779/9683 9782/9879/9782 +f 9782/9879/9782 9683/9779/9683 9783/9880/9783 +f 9683/9779/9683 9684/9780/9684 9783/9880/9783 +f 9783/9880/9783 9684/9780/9684 9784/9881/9784 +f 9684/9780/9684 9685/9781/9685 9784/9881/9784 +f 9784/9881/9784 9685/9781/9685 9785/9882/9785 +f 9685/9781/9685 9686/9782/9686 9785/9882/9785 +f 9785/9882/9785 9686/9782/9686 9786/9883/9786 +f 9686/9782/9686 9687/9783/9687 9786/9883/9786 +f 9786/9883/9786 9687/9783/9687 9787/9884/9787 +f 9687/9783/9687 9688/9784/9688 9787/9884/9787 +f 9787/9884/9787 9688/9784/9688 9788/9885/9788 +f 9688/9784/9688 9689/9785/9689 9788/9885/9788 +f 9788/9885/9788 9689/9785/9689 9789/9886/9789 +f 9689/9785/9689 9690/9786/9690 9789/9886/9789 +f 9789/9886/9789 9690/9786/9690 9790/9887/9790 +f 9690/9786/9690 9691/9787/9691 9790/9887/9790 +f 9790/9887/9790 9691/9787/9691 9791/9888/9791 +f 9691/9787/9691 9692/9788/9692 9791/9888/9791 +f 9791/9888/9791 9692/9788/9692 9792/9889/9792 +f 9692/9788/9692 9693/9789/9693 9792/9889/9792 +f 9792/9889/9792 9693/9789/9693 9793/9890/9793 +f 9693/9789/9693 9694/9790/9694 9793/9890/9793 +f 9793/9890/9793 9694/9790/9694 9794/9891/9794 +f 9694/9790/9694 9695/9791/9695 9794/9891/9794 +f 9794/9891/9794 9695/9791/9695 9795/9892/9795 +f 9695/9791/9695 9696/9792/9696 9795/9892/9795 +f 9795/9892/9795 9696/9792/9696 9796/9893/9796 +f 9696/9792/9696 9697/9793/9697 9796/9893/9796 +f 9796/9893/9796 9697/9793/9697 9797/9894/9797 +f 9697/9793/9697 9698/9794/9698 9797/9894/9797 +f 9797/9894/9797 9698/9794/9698 9798/9895/9798 +f 9698/9794/9698 9699/9795/9699 9798/9895/9798 +f 9798/9895/9798 9699/9795/9699 9799/9896/9799 +f 9699/9795/9699 9700/9796/9700 9799/9896/9799 +f 9799/9896/9799 9700/9796/9700 9800/9897/9800 +f 9700/9796/9700 9601/9797/9601 9800/9897/9800 +f 9800/9897/9800 9601/9797/9601 9701/9898/9701 +f 9701/9798/9701 9702/9799/9702 9801/9899/9801 +f 9801/9899/9801 9702/9799/9702 9802/9900/9802 +f 9702/9799/9702 9703/9800/9703 9802/9900/9802 +f 9802/9900/9802 9703/9800/9703 9803/9901/9803 +f 9703/9800/9703 9704/9801/9704 9803/9901/9803 +f 9803/9901/9803 9704/9801/9704 9804/9902/9804 +f 9704/9801/9704 9705/9802/9705 9804/9902/9804 +f 9804/9902/9804 9705/9802/9705 9805/9903/9805 +f 9705/9802/9705 9706/9803/9706 9805/9903/9805 +f 9805/9903/9805 9706/9803/9706 9806/9904/9806 +f 9706/9803/9706 9707/9804/9707 9806/9904/9806 +f 9806/9904/9806 9707/9804/9707 9807/9905/9807 +f 9707/9804/9707 9708/9805/9708 9807/9905/9807 +f 9807/9905/9807 9708/9805/9708 9808/9906/9808 +f 9708/9805/9708 9709/9806/9709 9808/9906/9808 +f 9808/9906/9808 9709/9806/9709 9809/9907/9809 +f 9709/9806/9709 9710/9807/9710 9809/9907/9809 +f 9809/9907/9809 9710/9807/9710 9810/9908/9810 +f 9710/9807/9710 9711/9808/9711 9810/9908/9810 +f 9810/9908/9810 9711/9808/9711 9811/9909/9811 +f 9711/9808/9711 9712/9809/9712 9811/9909/9811 +f 9811/9909/9811 9712/9809/9712 9812/9910/9812 +f 9712/9809/9712 9713/9810/9713 9812/9910/9812 +f 9812/9910/9812 9713/9810/9713 9813/9911/9813 +f 9713/9810/9713 9714/9811/9714 9813/9911/9813 +f 9813/9911/9813 9714/9811/9714 9814/9912/9814 +f 9714/9811/9714 9715/9812/9715 9814/9912/9814 +f 9814/9912/9814 9715/9812/9715 9815/9913/9815 +f 9715/9812/9715 9716/9813/9716 9815/9913/9815 +f 9815/9913/9815 9716/9813/9716 9816/9914/9816 +f 9716/9813/9716 9717/9814/9717 9816/9914/9816 +f 9816/9914/9816 9717/9814/9717 9817/9915/9817 +f 9717/9814/9717 9718/9815/9718 9817/9915/9817 +f 9817/9915/9817 9718/9815/9718 9818/9916/9818 +f 9718/9815/9718 9719/9816/9719 9818/9916/9818 +f 9818/9916/9818 9719/9816/9719 9819/9917/9819 +f 9719/9816/9719 9720/9817/9720 9819/9917/9819 +f 9819/9917/9819 9720/9817/9720 9820/9918/9820 +f 9720/9817/9720 9721/9818/9721 9820/9918/9820 +f 9820/9918/9820 9721/9818/9721 9821/9919/9821 +f 9721/9818/9721 9722/9819/9722 9821/9919/9821 +f 9821/9919/9821 9722/9819/9722 9822/9920/9822 +f 9722/9819/9722 9723/9820/9723 9822/9920/9822 +f 9822/9920/9822 9723/9820/9723 9823/9921/9823 +f 9723/9820/9723 9724/9821/9724 9823/9921/9823 +f 9823/9921/9823 9724/9821/9724 9824/9922/9824 +f 9724/9821/9724 9725/9822/9725 9824/9922/9824 +f 9824/9922/9824 9725/9822/9725 9825/9923/9825 +f 9725/9822/9725 9726/9823/9726 9825/9923/9825 +f 9825/9923/9825 9726/9823/9726 9826/9924/9826 +f 9726/9823/9726 9727/9824/9727 9826/9924/9826 +f 9826/9924/9826 9727/9824/9727 9827/9925/9827 +f 9727/9824/9727 9728/9825/9728 9827/9925/9827 +f 9827/9925/9827 9728/9825/9728 9828/9926/9828 +f 9728/9825/9728 9729/9826/9729 9828/9926/9828 +f 9828/9926/9828 9729/9826/9729 9829/9927/9829 +f 9729/9826/9729 9730/9827/9730 9829/9927/9829 +f 9829/9927/9829 9730/9827/9730 9830/9928/9830 +f 9730/9827/9730 9731/9828/9731 9830/9928/9830 +f 9830/9928/9830 9731/9828/9731 9831/9929/9831 +f 9731/9828/9731 9732/9829/9732 9831/9929/9831 +f 9831/9929/9831 9732/9829/9732 9832/9930/9832 +f 9732/9829/9732 9733/9830/9733 9832/9930/9832 +f 9832/9930/9832 9733/9830/9733 9833/9931/9833 +f 9733/9830/9733 9734/9831/9734 9833/9931/9833 +f 9833/9931/9833 9734/9831/9734 9834/9932/9834 +f 9734/9831/9734 9735/9832/9735 9834/9932/9834 +f 9834/9932/9834 9735/9832/9735 9835/9933/9835 +f 9735/9832/9735 9736/9833/9736 9835/9933/9835 +f 9835/9933/9835 9736/9833/9736 9836/9934/9836 +f 9736/9833/9736 9737/9834/9737 9836/9934/9836 +f 9836/9934/9836 9737/9834/9737 9837/9935/9837 +f 9737/9834/9737 9738/9835/9738 9837/9935/9837 +f 9837/9935/9837 9738/9835/9738 9838/9936/9838 +f 9738/9835/9738 9739/9836/9739 9838/9936/9838 +f 9838/9936/9838 9739/9836/9739 9839/9937/9839 +f 9739/9836/9739 9740/9837/9740 9839/9937/9839 +f 9839/9937/9839 9740/9837/9740 9840/9938/9840 +f 9740/9837/9740 9741/9838/9741 9840/9938/9840 +f 9840/9938/9840 9741/9838/9741 9841/9939/9841 +f 9741/9838/9741 9742/9839/9742 9841/9939/9841 +f 9841/9939/9841 9742/9839/9742 9842/9940/9842 +f 9742/9839/9742 9743/9840/9743 9842/9940/9842 +f 9842/9940/9842 9743/9840/9743 9843/9941/9843 +f 9743/9840/9743 9744/9841/9744 9843/9941/9843 +f 9843/9941/9843 9744/9841/9744 9844/9942/9844 +f 9744/9841/9744 9745/9842/9745 9844/9942/9844 +f 9844/9942/9844 9745/9842/9745 9845/9943/9845 +f 9745/9842/9745 9746/9843/9746 9845/9943/9845 +f 9845/9943/9845 9746/9843/9746 9846/9944/9846 +f 9746/9843/9746 9747/9844/9747 9846/9944/9846 +f 9846/9944/9846 9747/9844/9747 9847/9945/9847 +f 9747/9844/9747 9748/9845/9748 9847/9945/9847 +f 9847/9945/9847 9748/9845/9748 9848/9946/9848 +f 9748/9845/9748 9749/9846/9749 9848/9946/9848 +f 9848/9946/9848 9749/9846/9749 9849/9947/9849 +f 9749/9846/9749 9750/9847/9750 9849/9947/9849 +f 9849/9947/9849 9750/9847/9750 9850/9948/9850 +f 9750/9847/9750 9751/9848/9751 9850/9948/9850 +f 9850/9948/9850 9751/9848/9751 9851/9949/9851 +f 9751/9848/9751 9752/9849/9752 9851/9949/9851 +f 9851/9949/9851 9752/9849/9752 9852/9950/9852 +f 9752/9849/9752 9753/9850/9753 9852/9950/9852 +f 9852/9950/9852 9753/9850/9753 9853/9951/9853 +f 9753/9850/9753 9754/9851/9754 9853/9951/9853 +f 9853/9951/9853 9754/9851/9754 9854/9952/9854 +f 9754/9851/9754 9755/9852/9755 9854/9952/9854 +f 9854/9952/9854 9755/9852/9755 9855/9953/9855 +f 9755/9852/9755 9756/9853/9756 9855/9953/9855 +f 9855/9953/9855 9756/9853/9756 9856/9954/9856 +f 9756/9853/9756 9757/9854/9757 9856/9954/9856 +f 9856/9954/9856 9757/9854/9757 9857/9955/9857 +f 9757/9854/9757 9758/9855/9758 9857/9955/9857 +f 9857/9955/9857 9758/9855/9758 9858/9956/9858 +f 9758/9855/9758 9759/9856/9759 9858/9956/9858 +f 9858/9956/9858 9759/9856/9759 9859/9957/9859 +f 9759/9856/9759 9760/9857/9760 9859/9957/9859 +f 9859/9957/9859 9760/9857/9760 9860/9958/9860 +f 9760/9857/9760 9761/9858/9761 9860/9958/9860 +f 9860/9958/9860 9761/9858/9761 9861/9959/9861 +f 9761/9858/9761 9762/9859/9762 9861/9959/9861 +f 9861/9959/9861 9762/9859/9762 9862/9960/9862 +f 9762/9859/9762 9763/9860/9763 9862/9960/9862 +f 9862/9960/9862 9763/9860/9763 9863/9961/9863 +f 9763/9860/9763 9764/9861/9764 9863/9961/9863 +f 9863/9961/9863 9764/9861/9764 9864/9962/9864 +f 9764/9861/9764 9765/9862/9765 9864/9962/9864 +f 9864/9962/9864 9765/9862/9765 9865/9963/9865 +f 9765/9862/9765 9766/9863/9766 9865/9963/9865 +f 9865/9963/9865 9766/9863/9766 9866/9964/9866 +f 9766/9863/9766 9767/9864/9767 9866/9964/9866 +f 9866/9964/9866 9767/9864/9767 9867/9965/9867 +f 9767/9864/9767 9768/9865/9768 9867/9965/9867 +f 9867/9965/9867 9768/9865/9768 9868/9966/9868 +f 9768/9865/9768 9769/9866/9769 9868/9966/9868 +f 9868/9966/9868 9769/9866/9769 9869/9967/9869 +f 9769/9866/9769 9770/9867/9770 9869/9967/9869 +f 9869/9967/9869 9770/9867/9770 9870/9968/9870 +f 9770/9867/9770 9771/9868/9771 9870/9968/9870 +f 9870/9968/9870 9771/9868/9771 9871/9969/9871 +f 9771/9868/9771 9772/9869/9772 9871/9969/9871 +f 9871/9969/9871 9772/9869/9772 9872/9970/9872 +f 9772/9869/9772 9773/9870/9773 9872/9970/9872 +f 9872/9970/9872 9773/9870/9773 9873/9971/9873 +f 9773/9870/9773 9774/9871/9774 9873/9971/9873 +f 9873/9971/9873 9774/9871/9774 9874/9972/9874 +f 9774/9871/9774 9775/9872/9775 9874/9972/9874 +f 9874/9972/9874 9775/9872/9775 9875/9973/9875 +f 9775/9872/9775 9776/9873/9776 9875/9973/9875 +f 9875/9973/9875 9776/9873/9776 9876/9974/9876 +f 9776/9873/9776 9777/9874/9777 9876/9974/9876 +f 9876/9974/9876 9777/9874/9777 9877/9975/9877 +f 9777/9874/9777 9778/9875/9778 9877/9975/9877 +f 9877/9975/9877 9778/9875/9778 9878/9976/9878 +f 9778/9875/9778 9779/9876/9779 9878/9976/9878 +f 9878/9976/9878 9779/9876/9779 9879/9977/9879 +f 9779/9876/9779 9780/9877/9780 9879/9977/9879 +f 9879/9977/9879 9780/9877/9780 9880/9978/9880 +f 9780/9877/9780 9781/9878/9781 9880/9978/9880 +f 9880/9978/9880 9781/9878/9781 9881/9979/9881 +f 9781/9878/9781 9782/9879/9782 9881/9979/9881 +f 9881/9979/9881 9782/9879/9782 9882/9980/9882 +f 9782/9879/9782 9783/9880/9783 9882/9980/9882 +f 9882/9980/9882 9783/9880/9783 9883/9981/9883 +f 9783/9880/9783 9784/9881/9784 9883/9981/9883 +f 9883/9981/9883 9784/9881/9784 9884/9982/9884 +f 9784/9881/9784 9785/9882/9785 9884/9982/9884 +f 9884/9982/9884 9785/9882/9785 9885/9983/9885 +f 9785/9882/9785 9786/9883/9786 9885/9983/9885 +f 9885/9983/9885 9786/9883/9786 9886/9984/9886 +f 9786/9883/9786 9787/9884/9787 9886/9984/9886 +f 9886/9984/9886 9787/9884/9787 9887/9985/9887 +f 9787/9884/9787 9788/9885/9788 9887/9985/9887 +f 9887/9985/9887 9788/9885/9788 9888/9986/9888 +f 9788/9885/9788 9789/9886/9789 9888/9986/9888 +f 9888/9986/9888 9789/9886/9789 9889/9987/9889 +f 9789/9886/9789 9790/9887/9790 9889/9987/9889 +f 9889/9987/9889 9790/9887/9790 9890/9988/9890 +f 9790/9887/9790 9791/9888/9791 9890/9988/9890 +f 9890/9988/9890 9791/9888/9791 9891/9989/9891 +f 9791/9888/9791 9792/9889/9792 9891/9989/9891 +f 9891/9989/9891 9792/9889/9792 9892/9990/9892 +f 9792/9889/9792 9793/9890/9793 9892/9990/9892 +f 9892/9990/9892 9793/9890/9793 9893/9991/9893 +f 9793/9890/9793 9794/9891/9794 9893/9991/9893 +f 9893/9991/9893 9794/9891/9794 9894/9992/9894 +f 9794/9891/9794 9795/9892/9795 9894/9992/9894 +f 9894/9992/9894 9795/9892/9795 9895/9993/9895 +f 9795/9892/9795 9796/9893/9796 9895/9993/9895 +f 9895/9993/9895 9796/9893/9796 9896/9994/9896 +f 9796/9893/9796 9797/9894/9797 9896/9994/9896 +f 9896/9994/9896 9797/9894/9797 9897/9995/9897 +f 9797/9894/9797 9798/9895/9798 9897/9995/9897 +f 9897/9995/9897 9798/9895/9798 9898/9996/9898 +f 9798/9895/9798 9799/9896/9799 9898/9996/9898 +f 9898/9996/9898 9799/9896/9799 9899/9997/9899 +f 9799/9896/9799 9800/9897/9800 9899/9997/9899 +f 9899/9997/9899 9800/9897/9800 9900/9998/9900 +f 9800/9897/9800 9701/9898/9701 9900/9998/9900 +f 9900/9998/9900 9701/9898/9701 9801/9999/9801 +f 2/2/2 1/1/1 9901/10000/9901 +f 3/3/5 2/2/2 9901/10001/9901 +f 4/4/7 3/3/5 9901/10002/9901 +f 5/5/9 4/4/7 9901/10003/9901 +f 6/6/11 5/5/9 9901/10004/9901 +f 7/7/13 6/6/11 9901/10005/9901 +f 8/8/15 7/7/13 9901/10006/9901 +f 9/9/17 8/8/15 9901/10007/9901 +f 10/10/19 9/9/17 9901/10008/9901 +f 11/11/21 10/10/19 9901/10009/9901 +f 12/12/23 11/11/21 9901/10010/9901 +f 13/13/25 12/12/23 9901/10011/9901 +f 14/14/27 13/13/25 9901/10012/9901 +f 15/15/29 14/14/27 9901/10013/9901 +f 16/16/31 15/15/29 9901/10014/9901 +f 17/17/33 16/16/31 9901/10015/9901 +f 18/18/35 17/17/33 9901/10016/9901 +f 19/19/37 18/18/35 9901/10017/9901 +f 20/20/39 19/19/37 9901/10018/9901 +f 21/21/41 20/20/39 9901/10019/9901 +f 22/22/43 21/21/41 9901/10020/9901 +f 23/23/45 22/22/43 9901/10021/9901 +f 24/24/47 23/23/45 9901/10022/9901 +f 25/25/49 24/24/47 9901/10023/9901 +f 26/26/51 25/25/49 9901/10024/9901 +f 27/27/53 26/26/51 9901/10025/9901 +f 28/28/55 27/27/53 9901/10026/9901 +f 29/29/57 28/28/55 9901/10027/9901 +f 30/30/59 29/29/57 9901/10028/9901 +f 31/31/61 30/30/59 9901/10029/9901 +f 32/32/63 31/31/61 9901/10030/9901 +f 33/33/65 32/32/63 9901/10031/9901 +f 34/34/67 33/33/65 9901/10032/9901 +f 35/35/69 34/34/67 9901/10033/9901 +f 36/36/71 35/35/69 9901/10034/9901 +f 37/37/73 36/36/71 9901/10035/9901 +f 38/38/75 37/37/73 9901/10036/9901 +f 39/39/77 38/38/75 9901/10037/9901 +f 40/40/79 39/39/77 9901/10038/9901 +f 41/41/81 40/40/79 9901/10039/9901 +f 42/42/83 41/41/81 9901/10040/9901 +f 43/43/85 42/42/83 9901/10041/9901 +f 44/44/87 43/43/85 9901/10042/9901 +f 45/45/89 44/44/87 9901/10043/9901 +f 46/46/91 45/45/89 9901/10044/9901 +f 47/47/93 46/46/91 9901/10045/9901 +f 48/48/95 47/47/93 9901/10046/9901 +f 49/49/97 48/48/95 9901/10047/9901 +f 50/50/99 49/49/97 9901/10048/9901 +f 51/51/101 50/50/99 9901/10049/9901 +f 52/52/103 51/51/101 9901/10050/9901 +f 53/53/105 52/52/103 9901/10051/9901 +f 54/54/107 53/53/105 9901/10052/9901 +f 55/55/109 54/54/107 9901/10053/9901 +f 56/56/111 55/55/109 9901/10054/9901 +f 57/57/113 56/56/111 9901/10055/9901 +f 58/58/115 57/57/113 9901/10056/9901 +f 59/59/117 58/58/115 9901/10057/9901 +f 60/60/119 59/59/117 9901/10058/9901 +f 61/61/121 60/60/119 9901/10059/9901 +f 62/62/123 61/61/121 9901/10060/9901 +f 63/63/125 62/62/123 9901/10061/9901 +f 64/64/127 63/63/125 9901/10062/9901 +f 65/65/129 64/64/127 9901/10063/9901 +f 66/66/131 65/65/129 9901/10064/9901 +f 67/67/133 66/66/131 9901/10065/9901 +f 68/68/135 67/67/133 9901/10066/9901 +f 69/69/137 68/68/135 9901/10067/9901 +f 70/70/139 69/69/137 9901/10068/9901 +f 71/71/141 70/70/139 9901/10069/9901 +f 72/72/143 71/71/141 9901/10070/9901 +f 73/73/145 72/72/143 9901/10071/9901 +f 74/74/147 73/73/145 9901/10072/9901 +f 75/75/149 74/74/147 9901/10073/9901 +f 76/76/151 75/75/149 9901/10074/9901 +f 77/77/153 76/76/151 9901/10075/9901 +f 78/78/155 77/77/153 9901/10076/9901 +f 79/79/157 78/78/155 9901/10077/9901 +f 80/80/159 79/79/157 9901/10078/9901 +f 81/81/161 80/80/159 9901/10079/9901 +f 82/82/163 81/81/161 9901/10080/9901 +f 83/83/165 82/82/163 9901/10081/9901 +f 84/84/167 83/83/165 9901/10082/9901 +f 85/85/169 84/84/167 9901/10083/9901 +f 86/86/171 85/85/169 9901/10084/9901 +f 87/87/173 86/86/171 9901/10085/9901 +f 88/88/175 87/87/173 9901/10086/9901 +f 89/89/177 88/88/175 9901/10087/9901 +f 90/90/179 89/89/177 9901/10088/9901 +f 91/91/181 90/90/179 9901/10089/9901 +f 92/92/183 91/91/181 9901/10090/9901 +f 93/93/185 92/92/183 9901/10091/9901 +f 94/94/187 93/93/185 9901/10092/9901 +f 95/95/189 94/94/187 9901/10093/9901 +f 96/96/191 95/95/189 9901/10094/9901 +f 97/97/193 96/96/191 9901/10095/9901 +f 98/98/195 97/97/193 9901/10096/9901 +f 99/99/197 98/98/195 9901/10097/9901 +f 100/100/199 99/99/197 9901/10098/9901 +f 1/101/1 100/100/199 9901/10099/9901 +f 9801/9899/9801 9802/9900/9802 9902/10100/9902 +f 9802/9900/9802 9803/9901/9803 9902/10101/9902 +f 9803/9901/9803 9804/9902/9804 9902/10102/9902 +f 9804/9902/9804 9805/9903/9805 9902/10103/9902 +f 9805/9903/9805 9806/9904/9806 9902/10104/9902 +f 9806/9904/9806 9807/9905/9807 9902/10105/9902 +f 9807/9905/9807 9808/9906/9808 9902/10106/9902 +f 9808/9906/9808 9809/9907/9809 9902/10107/9902 +f 9809/9907/9809 9810/9908/9810 9902/10108/9902 +f 9810/9908/9810 9811/9909/9811 9902/10109/9902 +f 9811/9909/9811 9812/9910/9812 9902/10110/9902 +f 9812/9910/9812 9813/9911/9813 9902/10111/9902 +f 9813/9911/9813 9814/9912/9814 9902/10112/9902 +f 9814/9912/9814 9815/9913/9815 9902/10113/9902 +f 9815/9913/9815 9816/9914/9816 9902/10114/9902 +f 9816/9914/9816 9817/9915/9817 9902/10115/9902 +f 9817/9915/9817 9818/9916/9818 9902/10116/9902 +f 9818/9916/9818 9819/9917/9819 9902/10117/9902 +f 9819/9917/9819 9820/9918/9820 9902/10118/9902 +f 9820/9918/9820 9821/9919/9821 9902/10119/9902 +f 9821/9919/9821 9822/9920/9822 9902/10120/9902 +f 9822/9920/9822 9823/9921/9823 9902/10121/9902 +f 9823/9921/9823 9824/9922/9824 9902/10122/9902 +f 9824/9922/9824 9825/9923/9825 9902/10123/9902 +f 9825/9923/9825 9826/9924/9826 9902/10124/9902 +f 9826/9924/9826 9827/9925/9827 9902/10125/9902 +f 9827/9925/9827 9828/9926/9828 9902/10126/9902 +f 9828/9926/9828 9829/9927/9829 9902/10127/9902 +f 9829/9927/9829 9830/9928/9830 9902/10128/9902 +f 9830/9928/9830 9831/9929/9831 9902/10129/9902 +f 9831/9929/9831 9832/9930/9832 9902/10130/9902 +f 9832/9930/9832 9833/9931/9833 9902/10131/9902 +f 9833/9931/9833 9834/9932/9834 9902/10132/9902 +f 9834/9932/9834 9835/9933/9835 9902/10133/9902 +f 9835/9933/9835 9836/9934/9836 9902/10134/9902 +f 9836/9934/9836 9837/9935/9837 9902/10135/9902 +f 9837/9935/9837 9838/9936/9838 9902/10136/9902 +f 9838/9936/9838 9839/9937/9839 9902/10137/9902 +f 9839/9937/9839 9840/9938/9840 9902/10138/9902 +f 9840/9938/9840 9841/9939/9841 9902/10139/9902 +f 9841/9939/9841 9842/9940/9842 9902/10140/9902 +f 9842/9940/9842 9843/9941/9843 9902/10141/9902 +f 9843/9941/9843 9844/9942/9844 9902/10142/9902 +f 9844/9942/9844 9845/9943/9845 9902/10143/9902 +f 9845/9943/9845 9846/9944/9846 9902/10144/9902 +f 9846/9944/9846 9847/9945/9847 9902/10145/9902 +f 9847/9945/9847 9848/9946/9848 9902/10146/9902 +f 9848/9946/9848 9849/9947/9849 9902/10147/9902 +f 9849/9947/9849 9850/9948/9850 9902/10148/9902 +f 9850/9948/9850 9851/9949/9851 9902/10149/9902 +f 9851/9949/9851 9852/9950/9852 9902/10150/9902 +f 9852/9950/9852 9853/9951/9853 9902/10151/9902 +f 9853/9951/9853 9854/9952/9854 9902/10152/9902 +f 9854/9952/9854 9855/9953/9855 9902/10153/9902 +f 9855/9953/9855 9856/9954/9856 9902/10154/9902 +f 9856/9954/9856 9857/9955/9857 9902/10155/9902 +f 9857/9955/9857 9858/9956/9858 9902/10156/9902 +f 9858/9956/9858 9859/9957/9859 9902/10157/9902 +f 9859/9957/9859 9860/9958/9860 9902/10158/9902 +f 9860/9958/9860 9861/9959/9861 9902/10159/9902 +f 9861/9959/9861 9862/9960/9862 9902/10160/9902 +f 9862/9960/9862 9863/9961/9863 9902/10161/9902 +f 9863/9961/9863 9864/9962/9864 9902/10162/9902 +f 9864/9962/9864 9865/9963/9865 9902/10163/9902 +f 9865/9963/9865 9866/9964/9866 9902/10164/9902 +f 9866/9964/9866 9867/9965/9867 9902/10165/9902 +f 9867/9965/9867 9868/9966/9868 9902/10166/9902 +f 9868/9966/9868 9869/9967/9869 9902/10167/9902 +f 9869/9967/9869 9870/9968/9870 9902/10168/9902 +f 9870/9968/9870 9871/9969/9871 9902/10169/9902 +f 9871/9969/9871 9872/9970/9872 9902/10170/9902 +f 9872/9970/9872 9873/9971/9873 9902/10171/9902 +f 9873/9971/9873 9874/9972/9874 9902/10172/9902 +f 9874/9972/9874 9875/9973/9875 9902/10173/9902 +f 9875/9973/9875 9876/9974/9876 9902/10174/9902 +f 9876/9974/9876 9877/9975/9877 9902/10175/9902 +f 9877/9975/9877 9878/9976/9878 9902/10176/9902 +f 9878/9976/9878 9879/9977/9879 9902/10177/9902 +f 9879/9977/9879 9880/9978/9880 9902/10178/9902 +f 9880/9978/9880 9881/9979/9881 9902/10179/9902 +f 9881/9979/9881 9882/9980/9882 9902/10180/9902 +f 9882/9980/9882 9883/9981/9883 9902/10181/9902 +f 9883/9981/9883 9884/9982/9884 9902/10182/9902 +f 9884/9982/9884 9885/9983/9885 9902/10183/9902 +f 9885/9983/9885 9886/9984/9886 9902/10184/9902 +f 9886/9984/9886 9887/9985/9887 9902/10185/9902 +f 9887/9985/9887 9888/9986/9888 9902/10186/9902 +f 9888/9986/9888 9889/9987/9889 9902/10187/9902 +f 9889/9987/9889 9890/9988/9890 9902/10188/9902 +f 9890/9988/9890 9891/9989/9891 9902/10189/9902 +f 9891/9989/9891 9892/9990/9892 9902/10190/9902 +f 9892/9990/9892 9893/9991/9893 9902/10191/9902 +f 9893/9991/9893 9894/9992/9894 9902/10192/9902 +f 9894/9992/9894 9895/9993/9895 9902/10193/9902 +f 9895/9993/9895 9896/9994/9896 9902/10194/9902 +f 9896/9994/9896 9897/9995/9897 9902/10195/9902 +f 9897/9995/9897 9898/9996/9898 9902/10196/9902 +f 9898/9996/9898 9899/9997/9899 9902/10197/9902 +f 9899/9997/9899 9900/9998/9900 9902/10198/9902 +f 9900/9998/9900 9801/9999/9801 9902/10199/9902 diff --git a/Sandbox/res/Sponza/arch/albedo.tga b/Sandbox/res/Sponza/arch/albedo.tga new file mode 100644 index 00000000..e267623c Binary files /dev/null and b/Sandbox/res/Sponza/arch/albedo.tga differ diff --git a/Sandbox/res/Sponza/arch/gloss.tga b/Sandbox/res/Sponza/arch/gloss.tga new file mode 100644 index 00000000..5f4d6eaf Binary files /dev/null and b/Sandbox/res/Sponza/arch/gloss.tga differ diff --git a/Sandbox/res/Sponza/arch/model.spm b/Sandbox/res/Sponza/arch/model.spm new file mode 100644 index 00000000..9d84dfea Binary files /dev/null and b/Sandbox/res/Sponza/arch/model.spm differ diff --git a/Sandbox/res/Sponza/arch/normal.tga b/Sandbox/res/Sponza/arch/normal.tga new file mode 100644 index 00000000..0fe0498b Binary files /dev/null and b/Sandbox/res/Sponza/arch/normal.tga differ diff --git a/Sandbox/res/Sponza/arch/specular.tga b/Sandbox/res/Sponza/arch/specular.tga new file mode 100644 index 00000000..51c04ca6 Binary files /dev/null and b/Sandbox/res/Sponza/arch/specular.tga differ diff --git a/Sandbox/res/Sponza/backplate/albedo.tga b/Sandbox/res/Sponza/backplate/albedo.tga new file mode 100644 index 00000000..5ec2326c Binary files /dev/null and b/Sandbox/res/Sponza/backplate/albedo.tga differ diff --git a/Sandbox/res/Sponza/backplate/gloss.tga b/Sandbox/res/Sponza/backplate/gloss.tga new file mode 100644 index 00000000..a2f4bf45 Binary files /dev/null and b/Sandbox/res/Sponza/backplate/gloss.tga differ diff --git a/Sandbox/res/Sponza/backplate/model.spm b/Sandbox/res/Sponza/backplate/model.spm new file mode 100644 index 00000000..77c13885 Binary files /dev/null and b/Sandbox/res/Sponza/backplate/model.spm differ diff --git a/Sandbox/res/Sponza/backplate/normal.tga b/Sandbox/res/Sponza/backplate/normal.tga new file mode 100644 index 00000000..3e431a9b Binary files /dev/null and b/Sandbox/res/Sponza/backplate/normal.tga differ diff --git a/Sandbox/res/Sponza/backplate/specular.tga b/Sandbox/res/Sponza/backplate/specular.tga new file mode 100644 index 00000000..51c04ca6 Binary files /dev/null and b/Sandbox/res/Sponza/backplate/specular.tga differ diff --git a/Sandbox/res/Sponza/ceiling/albedo.tga b/Sandbox/res/Sponza/ceiling/albedo.tga new file mode 100644 index 00000000..85ecc70d Binary files /dev/null and b/Sandbox/res/Sponza/ceiling/albedo.tga differ diff --git a/Sandbox/res/Sponza/ceiling/gloss.tga b/Sandbox/res/Sponza/ceiling/gloss.tga new file mode 100644 index 00000000..ee53e64c Binary files /dev/null and b/Sandbox/res/Sponza/ceiling/gloss.tga differ diff --git a/Sandbox/res/Sponza/ceiling/model.spm b/Sandbox/res/Sponza/ceiling/model.spm new file mode 100644 index 00000000..a5fc0ea9 Binary files /dev/null and b/Sandbox/res/Sponza/ceiling/model.spm differ diff --git a/Sandbox/res/Sponza/ceiling/normal.tga b/Sandbox/res/Sponza/ceiling/normal.tga new file mode 100644 index 00000000..8fb509e3 Binary files /dev/null and b/Sandbox/res/Sponza/ceiling/normal.tga differ diff --git a/Sandbox/res/Sponza/ceiling/specular.tga b/Sandbox/res/Sponza/ceiling/specular.tga new file mode 100644 index 00000000..51c04ca6 Binary files /dev/null and b/Sandbox/res/Sponza/ceiling/specular.tga differ diff --git a/Sandbox/res/Sponza/chain/albedo.tga b/Sandbox/res/Sponza/chain/albedo.tga new file mode 100644 index 00000000..13bcc9e5 Binary files /dev/null and b/Sandbox/res/Sponza/chain/albedo.tga differ diff --git a/Sandbox/res/Sponza/chain/gloss.tga b/Sandbox/res/Sponza/chain/gloss.tga new file mode 100644 index 00000000..577b9534 Binary files /dev/null and b/Sandbox/res/Sponza/chain/gloss.tga differ diff --git a/Sandbox/res/Sponza/chain/model.spm b/Sandbox/res/Sponza/chain/model.spm new file mode 100644 index 00000000..4c82e219 Binary files /dev/null and b/Sandbox/res/Sponza/chain/model.spm differ diff --git a/Sandbox/res/Sponza/chain/normal.tga b/Sandbox/res/Sponza/chain/normal.tga new file mode 100644 index 00000000..6fb740d9 Binary files /dev/null and b/Sandbox/res/Sponza/chain/normal.tga differ diff --git a/Sandbox/res/Sponza/chain/specular.tga b/Sandbox/res/Sponza/chain/specular.tga new file mode 100644 index 00000000..729e6752 Binary files /dev/null and b/Sandbox/res/Sponza/chain/specular.tga differ diff --git a/Sandbox/res/Sponza/column1/albedo.tga b/Sandbox/res/Sponza/column1/albedo.tga new file mode 100644 index 00000000..49e4f8f9 Binary files /dev/null and b/Sandbox/res/Sponza/column1/albedo.tga differ diff --git a/Sandbox/res/Sponza/column1/gloss.tga b/Sandbox/res/Sponza/column1/gloss.tga new file mode 100644 index 00000000..be522ca3 Binary files /dev/null and b/Sandbox/res/Sponza/column1/gloss.tga differ diff --git a/Sandbox/res/Sponza/column1/model.spm b/Sandbox/res/Sponza/column1/model.spm new file mode 100644 index 00000000..101c8c38 Binary files /dev/null and b/Sandbox/res/Sponza/column1/model.spm differ diff --git a/Sandbox/res/Sponza/column1/normal.tga b/Sandbox/res/Sponza/column1/normal.tga new file mode 100644 index 00000000..1d17b7a2 Binary files /dev/null and b/Sandbox/res/Sponza/column1/normal.tga differ diff --git a/Sandbox/res/Sponza/column1/specular.tga b/Sandbox/res/Sponza/column1/specular.tga new file mode 100644 index 00000000..51c04ca6 Binary files /dev/null and b/Sandbox/res/Sponza/column1/specular.tga differ diff --git a/Sandbox/res/Sponza/column2/albedo.tga b/Sandbox/res/Sponza/column2/albedo.tga new file mode 100644 index 00000000..6557edfe Binary files /dev/null and b/Sandbox/res/Sponza/column2/albedo.tga differ diff --git a/Sandbox/res/Sponza/column2/gloss.tga b/Sandbox/res/Sponza/column2/gloss.tga new file mode 100644 index 00000000..c6686d91 Binary files /dev/null and b/Sandbox/res/Sponza/column2/gloss.tga differ diff --git a/Sandbox/res/Sponza/column2/model.spm b/Sandbox/res/Sponza/column2/model.spm new file mode 100644 index 00000000..7e033916 Binary files /dev/null and b/Sandbox/res/Sponza/column2/model.spm differ diff --git a/Sandbox/res/Sponza/column2/normal.tga b/Sandbox/res/Sponza/column2/normal.tga new file mode 100644 index 00000000..41cb144d Binary files /dev/null and b/Sandbox/res/Sponza/column2/normal.tga differ diff --git a/Sandbox/res/Sponza/column2/specular.tga b/Sandbox/res/Sponza/column2/specular.tga new file mode 100644 index 00000000..51c04ca6 Binary files /dev/null and b/Sandbox/res/Sponza/column2/specular.tga differ diff --git a/Sandbox/res/Sponza/column3/albedo.tga b/Sandbox/res/Sponza/column3/albedo.tga new file mode 100644 index 00000000..c145d480 Binary files /dev/null and b/Sandbox/res/Sponza/column3/albedo.tga differ diff --git a/Sandbox/res/Sponza/column3/gloss.tga b/Sandbox/res/Sponza/column3/gloss.tga new file mode 100644 index 00000000..f9db5351 Binary files /dev/null and b/Sandbox/res/Sponza/column3/gloss.tga differ diff --git a/Sandbox/res/Sponza/column3/model.spm b/Sandbox/res/Sponza/column3/model.spm new file mode 100644 index 00000000..a07a2263 Binary files /dev/null and b/Sandbox/res/Sponza/column3/model.spm differ diff --git a/Sandbox/res/Sponza/column3/normal.tga b/Sandbox/res/Sponza/column3/normal.tga new file mode 100644 index 00000000..aa6fde11 Binary files /dev/null and b/Sandbox/res/Sponza/column3/normal.tga differ diff --git a/Sandbox/res/Sponza/column3/specular.tga b/Sandbox/res/Sponza/column3/specular.tga new file mode 100644 index 00000000..51c04ca6 Binary files /dev/null and b/Sandbox/res/Sponza/column3/specular.tga differ diff --git a/Sandbox/res/Sponza/copyright.txt b/Sandbox/res/Sponza/copyright.txt new file mode 100644 index 00000000..a3a15500 --- /dev/null +++ b/Sandbox/res/Sponza/copyright.txt @@ -0,0 +1,30 @@ +Modifed for Sparky engine by Lukᚠ'klukule' Jech + + +Original copyright: + +July 14, 2011 Morgan McGuire modified the model from Crytek's OBJ +export to correct some small errors. He computed bump maps from the +normal maps using normal2bump.cpp (since +MTL files expect height bumps, not normals), put the "mask" textures +into the alpha channel of the associated diffuse texture, cleaned up +noise in the masks, created the missing gi_flag.tga texture, and +removed the long untextured banner floating in the middle of the +atrium that appears in the file but in none of the published images of +the model. The banner is in banner.obj. + + + +http://www.crytek.com/cryengine/cryengine3/downloads + + +Sponza Model +August 19, 2010 +The Atrium Sponza Palace, Dubrovnik, is an elegant and improved model created by Frank Meinl. The original Sponza model was created by Marko Dabrovic in early 2002. Over the years, the Sponza Atrium scene has become one of the most popular 3D scenes for testing global illumination and radiosity due to it's specific architectural structure which is particularly complex for global illumination light. + +However, nowadays it is considered as a simple model, thus it was decided to crate a new model with highly improved appearance and scene complexity. It is donated to the public for radiosity and is represented in several different formats (3ds, Obj) for use with various commercial 3D applications and renderers. + + +Screenshot from the I3D paper +http://crytek.com/sites/default/files/20100301_lpv.pdf diff --git a/Sandbox/res/Sponza/curtain_blue/albedo.tga b/Sandbox/res/Sponza/curtain_blue/albedo.tga new file mode 100644 index 00000000..b2e3be06 Binary files /dev/null and b/Sandbox/res/Sponza/curtain_blue/albedo.tga differ diff --git a/Sandbox/res/Sponza/curtain_blue/gloss.tga b/Sandbox/res/Sponza/curtain_blue/gloss.tga new file mode 100644 index 00000000..369ecb8d Binary files /dev/null and b/Sandbox/res/Sponza/curtain_blue/gloss.tga differ diff --git a/Sandbox/res/Sponza/curtain_blue/model.spm b/Sandbox/res/Sponza/curtain_blue/model.spm new file mode 100644 index 00000000..9284f3de Binary files /dev/null and b/Sandbox/res/Sponza/curtain_blue/model.spm differ diff --git a/Sandbox/res/Sponza/curtain_blue/normal.tga b/Sandbox/res/Sponza/curtain_blue/normal.tga new file mode 100644 index 00000000..22463ec8 Binary files /dev/null and b/Sandbox/res/Sponza/curtain_blue/normal.tga differ diff --git a/Sandbox/res/Sponza/curtain_blue/specular.tga b/Sandbox/res/Sponza/curtain_blue/specular.tga new file mode 100644 index 00000000..17e50cd8 Binary files /dev/null and b/Sandbox/res/Sponza/curtain_blue/specular.tga differ diff --git a/Sandbox/res/Sponza/curtain_green/albedo.tga b/Sandbox/res/Sponza/curtain_green/albedo.tga new file mode 100644 index 00000000..06b8a656 Binary files /dev/null and b/Sandbox/res/Sponza/curtain_green/albedo.tga differ diff --git a/Sandbox/res/Sponza/curtain_green/gloss.tga b/Sandbox/res/Sponza/curtain_green/gloss.tga new file mode 100644 index 00000000..369ecb8d Binary files /dev/null and b/Sandbox/res/Sponza/curtain_green/gloss.tga differ diff --git a/Sandbox/res/Sponza/curtain_green/model.spm b/Sandbox/res/Sponza/curtain_green/model.spm new file mode 100644 index 00000000..f8778b7b Binary files /dev/null and b/Sandbox/res/Sponza/curtain_green/model.spm differ diff --git a/Sandbox/res/Sponza/curtain_green/normal.tga b/Sandbox/res/Sponza/curtain_green/normal.tga new file mode 100644 index 00000000..22463ec8 Binary files /dev/null and b/Sandbox/res/Sponza/curtain_green/normal.tga differ diff --git a/Sandbox/res/Sponza/curtain_green/specular.tga b/Sandbox/res/Sponza/curtain_green/specular.tga new file mode 100644 index 00000000..ce7398d1 Binary files /dev/null and b/Sandbox/res/Sponza/curtain_green/specular.tga differ diff --git a/Sandbox/res/Sponza/curtain_red/albedo.tga b/Sandbox/res/Sponza/curtain_red/albedo.tga new file mode 100644 index 00000000..b7e35072 Binary files /dev/null and b/Sandbox/res/Sponza/curtain_red/albedo.tga differ diff --git a/Sandbox/res/Sponza/curtain_red/gloss.tga b/Sandbox/res/Sponza/curtain_red/gloss.tga new file mode 100644 index 00000000..369ecb8d Binary files /dev/null and b/Sandbox/res/Sponza/curtain_red/gloss.tga differ diff --git a/Sandbox/res/Sponza/curtain_red/model.spm b/Sandbox/res/Sponza/curtain_red/model.spm new file mode 100644 index 00000000..c254b2ee Binary files /dev/null and b/Sandbox/res/Sponza/curtain_red/model.spm differ diff --git a/Sandbox/res/Sponza/curtain_red/normal.tga b/Sandbox/res/Sponza/curtain_red/normal.tga new file mode 100644 index 00000000..22463ec8 Binary files /dev/null and b/Sandbox/res/Sponza/curtain_red/normal.tga differ diff --git a/Sandbox/res/Sponza/curtain_red/specular.tga b/Sandbox/res/Sponza/curtain_red/specular.tga new file mode 100644 index 00000000..c5e56cdb Binary files /dev/null and b/Sandbox/res/Sponza/curtain_red/specular.tga differ diff --git a/Sandbox/res/Sponza/details/albedo.tga b/Sandbox/res/Sponza/details/albedo.tga new file mode 100644 index 00000000..13996123 Binary files /dev/null and b/Sandbox/res/Sponza/details/albedo.tga differ diff --git a/Sandbox/res/Sponza/details/gloss.tga b/Sandbox/res/Sponza/details/gloss.tga new file mode 100644 index 00000000..b7c87faa Binary files /dev/null and b/Sandbox/res/Sponza/details/gloss.tga differ diff --git a/Sandbox/res/Sponza/details/model.spm b/Sandbox/res/Sponza/details/model.spm new file mode 100644 index 00000000..7bb4c48d Binary files /dev/null and b/Sandbox/res/Sponza/details/model.spm differ diff --git a/Sandbox/res/Sponza/details/normal.tga b/Sandbox/res/Sponza/details/normal.tga new file mode 100644 index 00000000..541fc393 Binary files /dev/null and b/Sandbox/res/Sponza/details/normal.tga differ diff --git a/Sandbox/res/Sponza/details/specular.tga b/Sandbox/res/Sponza/details/specular.tga new file mode 100644 index 00000000..4d2f527c Binary files /dev/null and b/Sandbox/res/Sponza/details/specular.tga differ diff --git a/Sandbox/res/Sponza/fabric_blue/albedo.tga b/Sandbox/res/Sponza/fabric_blue/albedo.tga new file mode 100644 index 00000000..bd3a6c92 Binary files /dev/null and b/Sandbox/res/Sponza/fabric_blue/albedo.tga differ diff --git a/Sandbox/res/Sponza/fabric_blue/gloss.tga b/Sandbox/res/Sponza/fabric_blue/gloss.tga new file mode 100644 index 00000000..5c2dfe51 Binary files /dev/null and b/Sandbox/res/Sponza/fabric_blue/gloss.tga differ diff --git a/Sandbox/res/Sponza/fabric_blue/model.spm b/Sandbox/res/Sponza/fabric_blue/model.spm new file mode 100644 index 00000000..7e2fb2b5 Binary files /dev/null and b/Sandbox/res/Sponza/fabric_blue/model.spm differ diff --git a/Sandbox/res/Sponza/fabric_blue/normal.tga b/Sandbox/res/Sponza/fabric_blue/normal.tga new file mode 100644 index 00000000..4c55ce9c Binary files /dev/null and b/Sandbox/res/Sponza/fabric_blue/normal.tga differ diff --git a/Sandbox/res/Sponza/fabric_blue/specular.tga b/Sandbox/res/Sponza/fabric_blue/specular.tga new file mode 100644 index 00000000..b742f1d1 Binary files /dev/null and b/Sandbox/res/Sponza/fabric_blue/specular.tga differ diff --git a/Sandbox/res/Sponza/fabric_green/albedo.tga b/Sandbox/res/Sponza/fabric_green/albedo.tga new file mode 100644 index 00000000..9483a5c6 Binary files /dev/null and b/Sandbox/res/Sponza/fabric_green/albedo.tga differ diff --git a/Sandbox/res/Sponza/fabric_green/gloss.tga b/Sandbox/res/Sponza/fabric_green/gloss.tga new file mode 100644 index 00000000..5c2dfe51 Binary files /dev/null and b/Sandbox/res/Sponza/fabric_green/gloss.tga differ diff --git a/Sandbox/res/Sponza/fabric_green/model.spm b/Sandbox/res/Sponza/fabric_green/model.spm new file mode 100644 index 00000000..cd640c08 Binary files /dev/null and b/Sandbox/res/Sponza/fabric_green/model.spm differ diff --git a/Sandbox/res/Sponza/fabric_green/normal.tga b/Sandbox/res/Sponza/fabric_green/normal.tga new file mode 100644 index 00000000..4c55ce9c Binary files /dev/null and b/Sandbox/res/Sponza/fabric_green/normal.tga differ diff --git a/Sandbox/res/Sponza/fabric_green/specular.tga b/Sandbox/res/Sponza/fabric_green/specular.tga new file mode 100644 index 00000000..61fa9c53 Binary files /dev/null and b/Sandbox/res/Sponza/fabric_green/specular.tga differ diff --git a/Sandbox/res/Sponza/fabric_red/albedo.tga b/Sandbox/res/Sponza/fabric_red/albedo.tga new file mode 100644 index 00000000..aa56a065 Binary files /dev/null and b/Sandbox/res/Sponza/fabric_red/albedo.tga differ diff --git a/Sandbox/res/Sponza/fabric_red/gloss.tga b/Sandbox/res/Sponza/fabric_red/gloss.tga new file mode 100644 index 00000000..5c2dfe51 Binary files /dev/null and b/Sandbox/res/Sponza/fabric_red/gloss.tga differ diff --git a/Sandbox/res/Sponza/fabric_red/model.spm b/Sandbox/res/Sponza/fabric_red/model.spm new file mode 100644 index 00000000..8fe66838 Binary files /dev/null and b/Sandbox/res/Sponza/fabric_red/model.spm differ diff --git a/Sandbox/res/Sponza/fabric_red/normal.tga b/Sandbox/res/Sponza/fabric_red/normal.tga new file mode 100644 index 00000000..4c55ce9c Binary files /dev/null and b/Sandbox/res/Sponza/fabric_red/normal.tga differ diff --git a/Sandbox/res/Sponza/fabric_red/specular.tga b/Sandbox/res/Sponza/fabric_red/specular.tga new file mode 100644 index 00000000..12662883 Binary files /dev/null and b/Sandbox/res/Sponza/fabric_red/specular.tga differ diff --git a/Sandbox/res/Sponza/floor/albedo.tga b/Sandbox/res/Sponza/floor/albedo.tga new file mode 100644 index 00000000..bb24b900 Binary files /dev/null and b/Sandbox/res/Sponza/floor/albedo.tga differ diff --git a/Sandbox/res/Sponza/floor/gloss.tga b/Sandbox/res/Sponza/floor/gloss.tga new file mode 100644 index 00000000..ed4e4c6b Binary files /dev/null and b/Sandbox/res/Sponza/floor/gloss.tga differ diff --git a/Sandbox/res/Sponza/floor/model.spm b/Sandbox/res/Sponza/floor/model.spm new file mode 100644 index 00000000..80b3ea90 Binary files /dev/null and b/Sandbox/res/Sponza/floor/model.spm differ diff --git a/Sandbox/res/Sponza/floor/normal.tga b/Sandbox/res/Sponza/floor/normal.tga new file mode 100644 index 00000000..3064fef7 Binary files /dev/null and b/Sandbox/res/Sponza/floor/normal.tga differ diff --git a/Sandbox/res/Sponza/floor/specular.tga b/Sandbox/res/Sponza/floor/specular.tga new file mode 100644 index 00000000..51c04ca6 Binary files /dev/null and b/Sandbox/res/Sponza/floor/specular.tga differ diff --git a/Sandbox/res/Sponza/floor2/albedo.tga b/Sandbox/res/Sponza/floor2/albedo.tga new file mode 100644 index 00000000..bb24b900 Binary files /dev/null and b/Sandbox/res/Sponza/floor2/albedo.tga differ diff --git a/Sandbox/res/Sponza/floor2/gloss.tga b/Sandbox/res/Sponza/floor2/gloss.tga new file mode 100644 index 00000000..ed4e4c6b Binary files /dev/null and b/Sandbox/res/Sponza/floor2/gloss.tga differ diff --git a/Sandbox/res/Sponza/floor2/model.spm b/Sandbox/res/Sponza/floor2/model.spm new file mode 100644 index 00000000..2c0d1bd1 Binary files /dev/null and b/Sandbox/res/Sponza/floor2/model.spm differ diff --git a/Sandbox/res/Sponza/floor2/normal.tga b/Sandbox/res/Sponza/floor2/normal.tga new file mode 100644 index 00000000..3064fef7 Binary files /dev/null and b/Sandbox/res/Sponza/floor2/normal.tga differ diff --git a/Sandbox/res/Sponza/floor2/specular.tga b/Sandbox/res/Sponza/floor2/specular.tga new file mode 100644 index 00000000..51c04ca6 Binary files /dev/null and b/Sandbox/res/Sponza/floor2/specular.tga differ diff --git a/Sandbox/res/Sponza/flower/albedo.tga b/Sandbox/res/Sponza/flower/albedo.tga new file mode 100644 index 00000000..72a63fff Binary files /dev/null and b/Sandbox/res/Sponza/flower/albedo.tga differ diff --git a/Sandbox/res/Sponza/flower/gloss.tga b/Sandbox/res/Sponza/flower/gloss.tga new file mode 100644 index 00000000..c2fc4d00 Binary files /dev/null and b/Sandbox/res/Sponza/flower/gloss.tga differ diff --git a/Sandbox/res/Sponza/flower/model.spm b/Sandbox/res/Sponza/flower/model.spm new file mode 100644 index 00000000..8a84feb1 Binary files /dev/null and b/Sandbox/res/Sponza/flower/model.spm differ diff --git a/Sandbox/res/Sponza/flower/normal.tga b/Sandbox/res/Sponza/flower/normal.tga new file mode 100644 index 00000000..4add20ef Binary files /dev/null and b/Sandbox/res/Sponza/flower/normal.tga differ diff --git a/Sandbox/res/Sponza/flower/specular.tga b/Sandbox/res/Sponza/flower/specular.tga new file mode 100644 index 00000000..51c04ca6 Binary files /dev/null and b/Sandbox/res/Sponza/flower/specular.tga differ diff --git a/Sandbox/res/Sponza/flower2/albedo.tga b/Sandbox/res/Sponza/flower2/albedo.tga new file mode 100644 index 00000000..86b8b5d5 Binary files /dev/null and b/Sandbox/res/Sponza/flower2/albedo.tga differ diff --git a/Sandbox/res/Sponza/flower2/gloss.tga b/Sandbox/res/Sponza/flower2/gloss.tga new file mode 100644 index 00000000..72a92e62 Binary files /dev/null and b/Sandbox/res/Sponza/flower2/gloss.tga differ diff --git a/Sandbox/res/Sponza/flower2/model.spm b/Sandbox/res/Sponza/flower2/model.spm new file mode 100644 index 00000000..cfe952d3 Binary files /dev/null and b/Sandbox/res/Sponza/flower2/model.spm differ diff --git a/Sandbox/res/Sponza/flower2/normal.tga b/Sandbox/res/Sponza/flower2/normal.tga new file mode 100644 index 00000000..a1018661 Binary files /dev/null and b/Sandbox/res/Sponza/flower2/normal.tga differ diff --git a/Sandbox/res/Sponza/flower2/specular.tga b/Sandbox/res/Sponza/flower2/specular.tga new file mode 100644 index 00000000..51c04ca6 Binary files /dev/null and b/Sandbox/res/Sponza/flower2/specular.tga differ diff --git a/Sandbox/res/Sponza/lion/albedo.tga b/Sandbox/res/Sponza/lion/albedo.tga new file mode 100644 index 00000000..ce2b24e0 Binary files /dev/null and b/Sandbox/res/Sponza/lion/albedo.tga differ diff --git a/Sandbox/res/Sponza/lion/gloss.tga b/Sandbox/res/Sponza/lion/gloss.tga new file mode 100644 index 00000000..f4d999f6 Binary files /dev/null and b/Sandbox/res/Sponza/lion/gloss.tga differ diff --git a/Sandbox/res/Sponza/lion/model.spm b/Sandbox/res/Sponza/lion/model.spm new file mode 100644 index 00000000..24382180 Binary files /dev/null and b/Sandbox/res/Sponza/lion/model.spm differ diff --git a/Sandbox/res/Sponza/lion/normal.tga b/Sandbox/res/Sponza/lion/normal.tga new file mode 100644 index 00000000..2011e84f Binary files /dev/null and b/Sandbox/res/Sponza/lion/normal.tga differ diff --git a/Sandbox/res/Sponza/lion/specular.tga b/Sandbox/res/Sponza/lion/specular.tga new file mode 100644 index 00000000..51c04ca6 Binary files /dev/null and b/Sandbox/res/Sponza/lion/specular.tga differ diff --git a/Sandbox/res/Sponza/pole/albedo.tga b/Sandbox/res/Sponza/pole/albedo.tga new file mode 100644 index 00000000..58f8fd60 Binary files /dev/null and b/Sandbox/res/Sponza/pole/albedo.tga differ diff --git a/Sandbox/res/Sponza/pole/gloss.tga b/Sandbox/res/Sponza/pole/gloss.tga new file mode 100644 index 00000000..d4c27c53 Binary files /dev/null and b/Sandbox/res/Sponza/pole/gloss.tga differ diff --git a/Sandbox/res/Sponza/pole/model.spm b/Sandbox/res/Sponza/pole/model.spm new file mode 100644 index 00000000..3e744e0b Binary files /dev/null and b/Sandbox/res/Sponza/pole/model.spm differ diff --git a/Sandbox/res/Sponza/pole/normal.tga b/Sandbox/res/Sponza/pole/normal.tga new file mode 100644 index 00000000..309f2fb4 Binary files /dev/null and b/Sandbox/res/Sponza/pole/normal.tga differ diff --git a/Sandbox/res/Sponza/pole/specular.tga b/Sandbox/res/Sponza/pole/specular.tga new file mode 100644 index 00000000..58f8fd60 Binary files /dev/null and b/Sandbox/res/Sponza/pole/specular.tga differ diff --git a/Sandbox/res/Sponza/roof/albedo.tga b/Sandbox/res/Sponza/roof/albedo.tga new file mode 100644 index 00000000..dd0f7168 Binary files /dev/null and b/Sandbox/res/Sponza/roof/albedo.tga differ diff --git a/Sandbox/res/Sponza/roof/gloss.tga b/Sandbox/res/Sponza/roof/gloss.tga new file mode 100644 index 00000000..da835f16 Binary files /dev/null and b/Sandbox/res/Sponza/roof/gloss.tga differ diff --git a/Sandbox/res/Sponza/roof/model.spm b/Sandbox/res/Sponza/roof/model.spm new file mode 100644 index 00000000..22de1dd1 Binary files /dev/null and b/Sandbox/res/Sponza/roof/model.spm differ diff --git a/Sandbox/res/Sponza/roof/normal.tga b/Sandbox/res/Sponza/roof/normal.tga new file mode 100644 index 00000000..91cdc3cd Binary files /dev/null and b/Sandbox/res/Sponza/roof/normal.tga differ diff --git a/Sandbox/res/Sponza/roof/specular.tga b/Sandbox/res/Sponza/roof/specular.tga new file mode 100644 index 00000000..51c04ca6 Binary files /dev/null and b/Sandbox/res/Sponza/roof/specular.tga differ diff --git a/Sandbox/res/Sponza/vase/albedo.tga b/Sandbox/res/Sponza/vase/albedo.tga new file mode 100644 index 00000000..314d4ffd Binary files /dev/null and b/Sandbox/res/Sponza/vase/albedo.tga differ diff --git a/Sandbox/res/Sponza/vase/gloss.tga b/Sandbox/res/Sponza/vase/gloss.tga new file mode 100644 index 00000000..2fe74972 Binary files /dev/null and b/Sandbox/res/Sponza/vase/gloss.tga differ diff --git a/Sandbox/res/Sponza/vase/model.spm b/Sandbox/res/Sponza/vase/model.spm new file mode 100644 index 00000000..69c39d9e Binary files /dev/null and b/Sandbox/res/Sponza/vase/model.spm differ diff --git a/Sandbox/res/Sponza/vase/normal.tga b/Sandbox/res/Sponza/vase/normal.tga new file mode 100644 index 00000000..6e5aabb9 Binary files /dev/null and b/Sandbox/res/Sponza/vase/normal.tga differ diff --git a/Sandbox/res/Sponza/vase/specular.tga b/Sandbox/res/Sponza/vase/specular.tga new file mode 100644 index 00000000..51c04ca6 Binary files /dev/null and b/Sandbox/res/Sponza/vase/specular.tga differ diff --git a/Sandbox/res/Sponza/vase_hanging/albedo.tga b/Sandbox/res/Sponza/vase_hanging/albedo.tga new file mode 100644 index 00000000..9f7930ae Binary files /dev/null and b/Sandbox/res/Sponza/vase_hanging/albedo.tga differ diff --git a/Sandbox/res/Sponza/vase_hanging/gloss.tga b/Sandbox/res/Sponza/vase_hanging/gloss.tga new file mode 100644 index 00000000..e3c97921 Binary files /dev/null and b/Sandbox/res/Sponza/vase_hanging/gloss.tga differ diff --git a/Sandbox/res/Sponza/vase_hanging/model.spm b/Sandbox/res/Sponza/vase_hanging/model.spm new file mode 100644 index 00000000..7d64daf5 Binary files /dev/null and b/Sandbox/res/Sponza/vase_hanging/model.spm differ diff --git a/Sandbox/res/Sponza/vase_hanging/normal.tga b/Sandbox/res/Sponza/vase_hanging/normal.tga new file mode 100644 index 00000000..ddd643f6 Binary files /dev/null and b/Sandbox/res/Sponza/vase_hanging/normal.tga differ diff --git a/Sandbox/res/Sponza/vase_hanging/specular.tga b/Sandbox/res/Sponza/vase_hanging/specular.tga new file mode 100644 index 00000000..9f7930ae Binary files /dev/null and b/Sandbox/res/Sponza/vase_hanging/specular.tga differ diff --git a/Sandbox/res/Sponza/vase_round/albedo.tga b/Sandbox/res/Sponza/vase_round/albedo.tga new file mode 100644 index 00000000..e520e3d6 Binary files /dev/null and b/Sandbox/res/Sponza/vase_round/albedo.tga differ diff --git a/Sandbox/res/Sponza/vase_round/gloss.tga b/Sandbox/res/Sponza/vase_round/gloss.tga new file mode 100644 index 00000000..3d9932df Binary files /dev/null and b/Sandbox/res/Sponza/vase_round/gloss.tga differ diff --git a/Sandbox/res/Sponza/vase_round/model.spm b/Sandbox/res/Sponza/vase_round/model.spm new file mode 100644 index 00000000..7167a03d Binary files /dev/null and b/Sandbox/res/Sponza/vase_round/model.spm differ diff --git a/Sandbox/res/Sponza/vase_round/normal.tga b/Sandbox/res/Sponza/vase_round/normal.tga new file mode 100644 index 00000000..63ab558d Binary files /dev/null and b/Sandbox/res/Sponza/vase_round/normal.tga differ diff --git a/Sandbox/res/Sponza/vase_round/specular.tga b/Sandbox/res/Sponza/vase_round/specular.tga new file mode 100644 index 00000000..51c04ca6 Binary files /dev/null and b/Sandbox/res/Sponza/vase_round/specular.tga differ diff --git a/Sandbox/res/Sponza/walls1/albedo.tga b/Sandbox/res/Sponza/walls1/albedo.tga new file mode 100644 index 00000000..25addd59 Binary files /dev/null and b/Sandbox/res/Sponza/walls1/albedo.tga differ diff --git a/Sandbox/res/Sponza/walls1/gloss.tga b/Sandbox/res/Sponza/walls1/gloss.tga new file mode 100644 index 00000000..d477de28 Binary files /dev/null and b/Sandbox/res/Sponza/walls1/gloss.tga differ diff --git a/Sandbox/res/Sponza/walls1/model.spm b/Sandbox/res/Sponza/walls1/model.spm new file mode 100644 index 00000000..646a9635 Binary files /dev/null and b/Sandbox/res/Sponza/walls1/model.spm differ diff --git a/Sandbox/res/Sponza/walls1/normal.tga b/Sandbox/res/Sponza/walls1/normal.tga new file mode 100644 index 00000000..c243f4ab Binary files /dev/null and b/Sandbox/res/Sponza/walls1/normal.tga differ diff --git a/Sandbox/res/Sponza/walls1/specular.tga b/Sandbox/res/Sponza/walls1/specular.tga new file mode 100644 index 00000000..51c04ca6 Binary files /dev/null and b/Sandbox/res/Sponza/walls1/specular.tga differ diff --git a/Sandbox/res/Sponza/walls2/albedo.tga b/Sandbox/res/Sponza/walls2/albedo.tga new file mode 100644 index 00000000..25addd59 Binary files /dev/null and b/Sandbox/res/Sponza/walls2/albedo.tga differ diff --git a/Sandbox/res/Sponza/walls2/gloss.tga b/Sandbox/res/Sponza/walls2/gloss.tga new file mode 100644 index 00000000..d477de28 Binary files /dev/null and b/Sandbox/res/Sponza/walls2/gloss.tga differ diff --git a/Sandbox/res/Sponza/walls2/model.spm b/Sandbox/res/Sponza/walls2/model.spm new file mode 100644 index 00000000..4bd7390e Binary files /dev/null and b/Sandbox/res/Sponza/walls2/model.spm differ diff --git a/Sandbox/res/Sponza/walls2/normal.tga b/Sandbox/res/Sponza/walls2/normal.tga new file mode 100644 index 00000000..c243f4ab Binary files /dev/null and b/Sandbox/res/Sponza/walls2/normal.tga differ diff --git a/Sandbox/res/Sponza/walls2/specular.tga b/Sandbox/res/Sponza/walls2/specular.tga new file mode 100644 index 00000000..51c04ca6 Binary files /dev/null and b/Sandbox/res/Sponza/walls2/specular.tga differ diff --git a/Sandbox/res/Sponza/walls3/albedo.tga b/Sandbox/res/Sponza/walls3/albedo.tga new file mode 100644 index 00000000..25addd59 Binary files /dev/null and b/Sandbox/res/Sponza/walls3/albedo.tga differ diff --git a/Sandbox/res/Sponza/walls3/gloss.tga b/Sandbox/res/Sponza/walls3/gloss.tga new file mode 100644 index 00000000..d477de28 Binary files /dev/null and b/Sandbox/res/Sponza/walls3/gloss.tga differ diff --git a/Sandbox/res/Sponza/walls3/model.spm b/Sandbox/res/Sponza/walls3/model.spm new file mode 100644 index 00000000..1bcc6ff3 Binary files /dev/null and b/Sandbox/res/Sponza/walls3/model.spm differ diff --git a/Sandbox/res/Sponza/walls3/normal.tga b/Sandbox/res/Sponza/walls3/normal.tga new file mode 100644 index 00000000..c243f4ab Binary files /dev/null and b/Sandbox/res/Sponza/walls3/normal.tga differ diff --git a/Sandbox/res/Sponza/walls3/specular.tga b/Sandbox/res/Sponza/walls3/specular.tga new file mode 100644 index 00000000..51c04ca6 Binary files /dev/null and b/Sandbox/res/Sponza/walls3/specular.tga differ diff --git a/Sandbox/res/Texture.png b/Sandbox/res/Texture.png new file mode 100644 index 00000000..e15e3502 Binary files /dev/null and b/Sandbox/res/Texture.png differ diff --git a/Sandbox/res/consola.ttf b/Sandbox/res/consola.ttf new file mode 100644 index 00000000..e4a2494a Binary files /dev/null and b/Sandbox/res/consola.ttf differ diff --git a/Sandbox/res/crate.jpg b/Sandbox/res/crate.jpg new file mode 100644 index 00000000..8ca01b6f Binary files /dev/null and b/Sandbox/res/crate.jpg differ diff --git a/Sandbox/res/mask.png b/Sandbox/res/mask.png new file mode 100644 index 00000000..df67f91d Binary files /dev/null and b/Sandbox/res/mask.png differ diff --git a/Sandbox/res/models/Cube.spm b/Sandbox/res/models/Cube.spm new file mode 100644 index 00000000..4d5d898f Binary files /dev/null and b/Sandbox/res/models/Cube.spm differ diff --git a/Sandbox/res/models/Dagger.spm b/Sandbox/res/models/Dagger.spm new file mode 100644 index 00000000..35af60e1 Binary files /dev/null and b/Sandbox/res/models/Dagger.spm differ diff --git a/Sandbox/res/models/Donut.spm b/Sandbox/res/models/Donut.spm new file mode 100644 index 00000000..e75134d6 Binary files /dev/null and b/Sandbox/res/models/Donut.spm differ diff --git a/Sandbox/res/models/RoundedCube.spm b/Sandbox/res/models/RoundedCube.spm new file mode 100644 index 00000000..805f08c2 Binary files /dev/null and b/Sandbox/res/models/RoundedCube.spm differ diff --git a/Sandbox/res/models/Sphere.spm b/Sandbox/res/models/Sphere.spm new file mode 100644 index 00000000..45bac13b Binary files /dev/null and b/Sandbox/res/models/Sphere.spm differ diff --git a/Sandbox/res/models/Teapot.spm b/Sandbox/res/models/Teapot.spm new file mode 100644 index 00000000..0e513681 Binary files /dev/null and b/Sandbox/res/models/Teapot.spm differ diff --git a/Sandbox/res/pbr/ABSRed/ABSRed_Albedo.tga b/Sandbox/res/pbr/ABSRed/ABSRed_Albedo.tga new file mode 100644 index 00000000..21ec8afd Binary files /dev/null and b/Sandbox/res/pbr/ABSRed/ABSRed_Albedo.tga differ diff --git a/Sandbox/res/pbr/ABSRed/ABSRed_Gloss.tga b/Sandbox/res/pbr/ABSRed/ABSRed_Gloss.tga new file mode 100644 index 00000000..c1572119 Binary files /dev/null and b/Sandbox/res/pbr/ABSRed/ABSRed_Gloss.tga differ diff --git a/Sandbox/res/pbr/ABSRed/ABSRed_Normal.tga b/Sandbox/res/pbr/ABSRed/ABSRed_Normal.tga new file mode 100644 index 00000000..f0d4535b Binary files /dev/null and b/Sandbox/res/pbr/ABSRed/ABSRed_Normal.tga differ diff --git a/Sandbox/res/pbr/ABSRed/ABSRed_Specular.tga b/Sandbox/res/pbr/ABSRed/ABSRed_Specular.tga new file mode 100644 index 00000000..0bdf84ea Binary files /dev/null and b/Sandbox/res/pbr/ABSRed/ABSRed_Specular.tga differ diff --git a/Sandbox/res/pbr/CastIron/CastIron_Albedo.tga b/Sandbox/res/pbr/CastIron/CastIron_Albedo.tga new file mode 100644 index 00000000..553a58ae Binary files /dev/null and b/Sandbox/res/pbr/CastIron/CastIron_Albedo.tga differ diff --git a/Sandbox/res/pbr/CastIron/CastIron_Gloss.tga b/Sandbox/res/pbr/CastIron/CastIron_Gloss.tga new file mode 100644 index 00000000..d8672070 Binary files /dev/null and b/Sandbox/res/pbr/CastIron/CastIron_Gloss.tga differ diff --git a/Sandbox/res/pbr/CastIron/CastIron_Gloss_8bit.tga b/Sandbox/res/pbr/CastIron/CastIron_Gloss_8bit.tga new file mode 100644 index 00000000..5cf3ecf1 Binary files /dev/null and b/Sandbox/res/pbr/CastIron/CastIron_Gloss_8bit.tga differ diff --git a/Sandbox/res/pbr/CastIron/CastIron_Normal.tga b/Sandbox/res/pbr/CastIron/CastIron_Normal.tga new file mode 100644 index 00000000..03e3a923 Binary files /dev/null and b/Sandbox/res/pbr/CastIron/CastIron_Normal.tga differ diff --git a/Sandbox/res/pbr/CastIron/CastIron_Specular.tga b/Sandbox/res/pbr/CastIron/CastIron_Specular.tga new file mode 100644 index 00000000..093a365d Binary files /dev/null and b/Sandbox/res/pbr/CastIron/CastIron_Specular.tga differ diff --git a/Sandbox/res/pbr/Custom/Custom_Albedo.tga b/Sandbox/res/pbr/Custom/Custom_Albedo.tga new file mode 100644 index 00000000..553a58ae Binary files /dev/null and b/Sandbox/res/pbr/Custom/Custom_Albedo.tga differ diff --git a/Sandbox/res/pbr/Custom/Custom_Gloss.tga b/Sandbox/res/pbr/Custom/Custom_Gloss.tga new file mode 100644 index 00000000..38069e26 Binary files /dev/null and b/Sandbox/res/pbr/Custom/Custom_Gloss.tga differ diff --git a/Sandbox/res/pbr/Custom/Custom_Normal.tga b/Sandbox/res/pbr/Custom/Custom_Normal.tga new file mode 100644 index 00000000..866c70e5 Binary files /dev/null and b/Sandbox/res/pbr/Custom/Custom_Normal.tga differ diff --git a/Sandbox/res/pbr/Custom/Custom_Specular.tga b/Sandbox/res/pbr/Custom/Custom_Specular.tga new file mode 100644 index 00000000..cb92976f Binary files /dev/null and b/Sandbox/res/pbr/Custom/Custom_Specular.tga differ diff --git a/Sandbox/res/pbr/GunMetal/GunMetal_Albedo.tga b/Sandbox/res/pbr/GunMetal/GunMetal_Albedo.tga new file mode 100644 index 00000000..1985d641 Binary files /dev/null and b/Sandbox/res/pbr/GunMetal/GunMetal_Albedo.tga differ diff --git a/Sandbox/res/pbr/GunMetal/GunMetal_Gloss.tga b/Sandbox/res/pbr/GunMetal/GunMetal_Gloss.tga new file mode 100644 index 00000000..b745cec8 Binary files /dev/null and b/Sandbox/res/pbr/GunMetal/GunMetal_Gloss.tga differ diff --git a/Sandbox/res/pbr/GunMetal/GunMetal_Normal.tga b/Sandbox/res/pbr/GunMetal/GunMetal_Normal.tga new file mode 100644 index 00000000..c9335441 Binary files /dev/null and b/Sandbox/res/pbr/GunMetal/GunMetal_Normal.tga differ diff --git a/Sandbox/res/pbr/GunMetal/GunMetal_Specular.tga b/Sandbox/res/pbr/GunMetal/GunMetal_Specular.tga new file mode 100644 index 00000000..674d6335 Binary files /dev/null and b/Sandbox/res/pbr/GunMetal/GunMetal_Specular.tga differ diff --git a/Sandbox/res/pbr/NormalMap.tga b/Sandbox/res/pbr/NormalMap.tga new file mode 100644 index 00000000..03e3a923 Binary files /dev/null and b/Sandbox/res/pbr/NormalMap.tga differ diff --git a/Sandbox/res/pbr/PreintegratedFG.bmp b/Sandbox/res/pbr/PreintegratedFG.bmp new file mode 100644 index 00000000..2267f992 Binary files /dev/null and b/Sandbox/res/pbr/PreintegratedFG.bmp differ diff --git a/Sandbox/res/pbr/WornWood/WornWood_Albedo.tga b/Sandbox/res/pbr/WornWood/WornWood_Albedo.tga new file mode 100644 index 00000000..ced5f8bd Binary files /dev/null and b/Sandbox/res/pbr/WornWood/WornWood_Albedo.tga differ diff --git a/Sandbox/res/pbr/WornWood/WornWood_Gloss.tga b/Sandbox/res/pbr/WornWood/WornWood_Gloss.tga new file mode 100644 index 00000000..9e3389fd Binary files /dev/null and b/Sandbox/res/pbr/WornWood/WornWood_Gloss.tga differ diff --git a/Sandbox/res/pbr/WornWood/WornWood_Gloss_8bit.tga b/Sandbox/res/pbr/WornWood/WornWood_Gloss_8bit.tga new file mode 100644 index 00000000..c402e967 Binary files /dev/null and b/Sandbox/res/pbr/WornWood/WornWood_Gloss_8bit.tga differ diff --git a/Sandbox/res/pbr/WornWood/WornWood_Normal.tga b/Sandbox/res/pbr/WornWood/WornWood_Normal.tga new file mode 100644 index 00000000..cc2a4800 Binary files /dev/null and b/Sandbox/res/pbr/WornWood/WornWood_Normal.tga differ diff --git a/Sandbox/res/pbr/WornWood/WornWood_Specular.tga b/Sandbox/res/pbr/WornWood/WornWood_Specular.tga new file mode 100644 index 00000000..0bdf84ea Binary files /dev/null and b/Sandbox/res/pbr/WornWood/WornWood_Specular.tga differ diff --git a/Sandbox/res/pbr/cubemap/CubeMap0.tga b/Sandbox/res/pbr/cubemap/CubeMap0.tga new file mode 100644 index 00000000..db273bd8 Binary files /dev/null and b/Sandbox/res/pbr/cubemap/CubeMap0.tga differ diff --git a/Sandbox/res/pbr/cubemap/CubeMap1.tga b/Sandbox/res/pbr/cubemap/CubeMap1.tga new file mode 100644 index 00000000..454068e9 Binary files /dev/null and b/Sandbox/res/pbr/cubemap/CubeMap1.tga differ diff --git a/Sandbox/res/pbr/cubemap/CubeMap10.tga b/Sandbox/res/pbr/cubemap/CubeMap10.tga new file mode 100644 index 00000000..07a86050 Binary files /dev/null and b/Sandbox/res/pbr/cubemap/CubeMap10.tga differ diff --git a/Sandbox/res/pbr/cubemap/CubeMap2.tga b/Sandbox/res/pbr/cubemap/CubeMap2.tga new file mode 100644 index 00000000..3d7be006 Binary files /dev/null and b/Sandbox/res/pbr/cubemap/CubeMap2.tga differ diff --git a/Sandbox/res/pbr/cubemap/CubeMap3.tga b/Sandbox/res/pbr/cubemap/CubeMap3.tga new file mode 100644 index 00000000..284df4c1 Binary files /dev/null and b/Sandbox/res/pbr/cubemap/CubeMap3.tga differ diff --git a/Sandbox/res/pbr/cubemap/CubeMap4.tga b/Sandbox/res/pbr/cubemap/CubeMap4.tga new file mode 100644 index 00000000..8453ebdc Binary files /dev/null and b/Sandbox/res/pbr/cubemap/CubeMap4.tga differ diff --git a/Sandbox/res/pbr/cubemap/CubeMap5.tga b/Sandbox/res/pbr/cubemap/CubeMap5.tga new file mode 100644 index 00000000..d8ddda3a Binary files /dev/null and b/Sandbox/res/pbr/cubemap/CubeMap5.tga differ diff --git a/Sandbox/res/pbr/cubemap/CubeMap6.tga b/Sandbox/res/pbr/cubemap/CubeMap6.tga new file mode 100644 index 00000000..5ab17987 Binary files /dev/null and b/Sandbox/res/pbr/cubemap/CubeMap6.tga differ diff --git a/Sandbox/res/pbr/cubemap/CubeMap7.tga b/Sandbox/res/pbr/cubemap/CubeMap7.tga new file mode 100644 index 00000000..8f9d7495 Binary files /dev/null and b/Sandbox/res/pbr/cubemap/CubeMap7.tga differ diff --git a/Sandbox/res/pbr/cubemap/CubeMap8.tga b/Sandbox/res/pbr/cubemap/CubeMap8.tga new file mode 100644 index 00000000..d667fbdf Binary files /dev/null and b/Sandbox/res/pbr/cubemap/CubeMap8.tga differ diff --git a/Sandbox/res/pbr/cubemap/CubeMap9.tga b/Sandbox/res/pbr/cubemap/CubeMap9.tga new file mode 100644 index 00000000..706c8459 Binary files /dev/null and b/Sandbox/res/pbr/cubemap/CubeMap9.tga differ diff --git a/Sandbox/res/tb.png b/Sandbox/res/tb.png new file mode 100644 index 00000000..d320c9fd Binary files /dev/null and b/Sandbox/res/tb.png differ diff --git a/Sandbox/shaders/AdvancedLighting.hlsl b/Sandbox/shaders/AdvancedLighting.hlsl new file mode 100644 index 00000000..ed3210ad --- /dev/null +++ b/Sandbox/shaders/AdvancedLighting.hlsl @@ -0,0 +1,346 @@ +// +// PBR Shader +// + +struct VSInput +{ + float4 position : POSITION; + float3 normal : NORMAL; + float2 uv : TEXCOORD; + float3 binormal : BINORMAL; + float3 tangent : TANGENT; +}; + +struct VSOutput +{ + float4 positionCS : SV_POSITION; + float3 cameraPosition : CAMERA_POSITION; + float4 position : POSITION; + float3 normal : NORMAL; + float2 uv : TEXCOORD; + float3 binormal : BINORMAL; + float3 tangent : TANGENT; + float3 color : COLOR; + float4 shadowCoord : SHADOW_POSITION; +}; + +cbuffer VSSystemUniforms : register(b0) +{ + float4x4 sys_ProjectionMatrix; + float4x4 sys_ViewMatrix; + float4x4 sys_ModelMatrix; + float3 sys_CameraPosition; + // float4x4 sys_DepthBiasMatrix; +}; + +VSOutput VSMain(in VSInput input) +{ + float3x3 wsTransform = (float3x3)sys_ModelMatrix; + + VSOutput output; + output.position = mul(input.position, sys_ModelMatrix); + output.positionCS = mul(output.position, mul(sys_ViewMatrix, sys_ProjectionMatrix)); + output.normal = mul(input.normal, wsTransform); + output.binormal = mul(input.binormal, wsTransform); + output.tangent = mul(input.tangent, wsTransform); + output.uv = input.uv; + output.color = float3(1.0f, 1.0f, 1.0f); + output.shadowCoord = float4(0.0f, 0.0f, 0.0f, 0.0f); // output.shadowCoord = mul(output.position, depthBias); + + output.cameraPosition = sys_CameraPosition; + + return output; +} + +struct Light +{ + float4 color; + float3 position; + float p0; + float3 direction; + float p1; + float3 lightVector; + float intensity; +}; + +struct Attributes +{ + float3 position; + float2 uv; + float3 normal; + float3 binormal; + float3 tangent; +}; + +cbuffer PSSystemUniforms : register(b0) +{ + Light sys_Light; +}; + +cbuffer PSUniforms : register(b1) +{ + // PBR Static Inputs + float4 u_AlbedoColor; + float3 u_SpecularColor; + float u_GlossColor; + float3 u_NormalColor; + + // PBR Modes + float u_UsingAlbedoMap; + float u_UsingSpecularMap; + float u_UsingNormalMap; + float u_UsingGlossMap; + float p1; +} + +SamplerState AnisoClamp +{ + Filter = ANISOTROPIC; + AddressU = Clamp; + AddressV = Clamp; +}; + +// PBR Map Inputs +Texture2D u_AlbedoMap : register(t0); +SamplerState u_AlbedoSampler : register(s0); +Texture2D u_SpecularMap : register(t1); +SamplerState u_SpecularSampler : register(s1); +Texture2D u_GlossMap : register(t2); +SamplerState u_GlossSampler : register(s2); +Texture2D u_NormalMap : register(t3); +SamplerState u_NormalSampler : register(s3); + +Texture2D u_PreintegratedFG : register(t4); +SamplerState u_PreintegratedFGSampler : register(s4); + +TextureCube u_EnvironmentMap : register(t5); +SamplerState u_EnvironmentMapSampler : register(s5); + +struct Material +{ + float4 albedo; + float3 specular; + float roughness; + float3 normal; +}; + +#define PI 3.1415926535897932384626433832795f +#define GAMMA 2.2f + +/*float2 poissonDisk[16] = float2[]( + float2(-0.94201624, -0.39906216), + float2(0.94558609, -0.76890725), + float2(-0.094184101, -0.92938870), + float2(0.34495938, 0.29387760), + float2(-0.91588581, 0.45771432), + float2(-0.81544232, -0.87912464), + float2(-0.38277543, 0.27676845), + float2(0.97484398, 0.75648379), + float2(0.44323325, -0.97511554), + float2(0.53742981, -0.47373420), + float2(-0.26496911, -0.41893023), + float2(0.79197514, 0.19090188), + float2(-0.24188840, 0.99706507), + float2(-0.81409955, 0.91437590), + float2(0.19984126, 0.78641367), + float2(0.14383161, -0.14100790) + );*/ + +float4 GammaCorrectTexture(Texture2D t, SamplerState s, float2 uv) +{ + float4 samp = t.Sample(s, uv); + return float4(pow(samp.rgb, GAMMA), samp.a); +} + +float3 GammaCorrectTextureRGB(Texture2D t, SamplerState s, float2 uv) +{ + float4 samp = t.Sample(s, uv); + return float3(pow(samp.rgb, GAMMA)); +} + +float4 GetAlbedo(Attributes attributes) +{ + return (1.0f - u_UsingAlbedoMap) * u_AlbedoColor + u_UsingAlbedoMap * GammaCorrectTexture(u_AlbedoMap, u_AlbedoSampler, attributes.uv); +} + +float3 GetSpecular(Attributes attributes) +{ + return (1.0f - u_UsingSpecularMap) * u_SpecularColor + u_UsingSpecularMap * GammaCorrectTextureRGB(u_SpecularMap, u_SpecularSampler, attributes.uv); +} + +float GetGloss(Attributes attributes) +{ + return (1.0f - u_UsingGlossMap) * u_GlossColor + u_UsingGlossMap * GammaCorrectTextureRGB(u_GlossMap, u_GlossSampler, attributes.uv).r; +} + +float GetRoughness(Attributes attributes) +{ + return 1.0f - GetGloss(attributes); +} + +float3 FinalGamma(float3 color) +{ + return pow(color, 1.0f / GAMMA); +} + +float FresnelSchlick(float f0, float fd90, float view) +{ + return f0 + (fd90 - f0) * pow(max(1.0f - view, 0.1f), 5.0f); +} + +float Disney(Attributes attributes, Light light, Material material, float3 eye) +{ + float3 halfVector = normalize(light.lightVector + eye); + + float NdotL = saturate(dot(attributes.normal, light.lightVector)); + float LdotH = saturate(dot(light.lightVector, halfVector)); + float NdotV = saturate(dot(attributes.normal, eye)); + + float energyBias = lerp(0.0f, 0.5f, material.roughness); + float energyFactor = lerp(1.0f, 1.0f / 1.51f, material.roughness); + float fd90 = energyBias + 2.0f * (LdotH * LdotH) * material.roughness; + float f0 = 1.0f; + + float lightScatter = FresnelSchlick(f0, fd90, NdotL); + float viewScatter = FresnelSchlick(f0, fd90, NdotV); + + return lightScatter * viewScatter * energyFactor; +} + +float3 GGX(Attributes attributes, Light light, Material material, float3 eye) +{ + float3 h = normalize(light.lightVector + eye); + float NdotH = saturate(dot(attributes.normal, h)); + + float rough2 = max(material.roughness * material.roughness, 2.0e-3f); // capped so spec highlights don't disappear + float rough4 = rough2 * rough2; + + float d = (NdotH * rough4 - NdotH) * NdotH + 1.0f; + float D = rough4 / (PI * (d * d)); + + // Fresnel + float3 reflectivity = material.specular; + float fresnel = 1.0; + float NdotL = saturate(dot(attributes.normal, light.lightVector)); + float LdotH = saturate(dot(light.lightVector, h)); + float NdotV = saturate(dot(attributes.normal, eye)); + float3 F = reflectivity + (fresnel - fresnel * reflectivity) * exp2((-5.55473f * LdotH - 6.98316f) * LdotH); + + // geometric / visibility + float k = rough2 * 0.5f; + float G_SmithL = NdotL * (1.0f - k) + k; + float G_SmithV = NdotV * (1.0f - k) + k; + float G = 0.25f / (G_SmithL * G_SmithV); + + return G * D * F; +} + +float3 RadianceIBLIntegration(float NdotV, float roughness, float3 specular) +{ + float2 preintegratedFG = u_PreintegratedFG.Sample(AnisoClamp, float2(roughness, 1.0f - NdotV)).rg; + return specular * preintegratedFG.r + preintegratedFG.g; +} + +float3 IBL(Attributes attributes, Light light, Material material, float3 eye) +{ + // Note: Currently this function assumes a cube texture resolution of 1024x1024 + float NdotV = max(dot(attributes.normal, eye), 0.0f); + + float3 reflectionVector = normalize(reflect(-eye, attributes.normal)); + float smoothness = 1.0f - material.roughness; + float mipLevel = (1.0f - smoothness * smoothness) * 10.0f; + float4 cs = u_EnvironmentMap.SampleLevel(u_EnvironmentMapSampler, reflectionVector, mipLevel); + float3 result = pow(cs.xyz, GAMMA) * RadianceIBLIntegration(NdotV, material.roughness, material.specular); + + float3 diffuseDominantDirection = attributes.normal; + float diffuseLowMip = 9.6; + float3 diffuseImageLighting = u_EnvironmentMap.SampleLevel(u_EnvironmentMapSampler, diffuseDominantDirection, diffuseLowMip).rgb; + diffuseImageLighting = pow(diffuseImageLighting, GAMMA); + + return result + diffuseImageLighting * material.albedo.rgb; +} + +float Diffuse(Attributes attributes, Light light, Material material, float3 eye) +{ + return Disney(attributes, light, material, eye); +} + +float3 Specular(Attributes attributes, Light light, Material material, float3 eye) +{ + return GGX(attributes, light, material, eye); +} + +// TODO: Windowing +float Attenuate(Attributes attributes, Light light) +{ + float3 direction = light.position - float3(attributes.position); + return light.intensity * 1.0 / (dot(direction, direction) + 0.01); // TODO: 4pi +} + +float random(float3 seed, int i) +{ + float4 seed4 = float4(seed, i); + float dot_product = dot(seed4, float4(12.9898, 78.233, 45.164, 94.673)); + return frac(sin(dot_product) * 43758.5453); +} + +float3 NormalMap(Attributes attributes) +{ + float3x3 toWorld = float3x3(attributes.binormal, attributes.tangent, attributes.normal); + float3 normalMap = u_NormalMap.Sample(u_NormalSampler, attributes.uv).rgb * 2.0 - 1.0; + normalMap = mul(normalMap.rgb, toWorld); + normalMap = normalize(normalMap); + return normalMap; +} + +float4 PSMain(in VSOutput input) : SV_TARGET +{ + Attributes attributes; + attributes.position = input.position; + attributes.uv = input.uv; + attributes.normal = normalize(input.normal); + attributes.binormal = normalize(input.binormal); + attributes.tangent = normalize(input.tangent); + + if (u_UsingNormalMap > 0.0) + attributes.normal = NormalMap(attributes); + + float3 eye = normalize(input.cameraPosition - attributes.position); + + Light light = sys_Light; + light.intensity = light.intensity; // Attenuate(light); + light.lightVector = light.direction; // normalize(light.position - float3(fs_in.position)); + + Material material; + material.albedo = GetAlbedo(attributes); + material.specular = GetSpecular(attributes); + material.roughness = GetRoughness(attributes); + + float4 diffuse = float4(0, 0, 0, 0); + float3 specular = float3(0, 0, 0); + + // TODO: Multiple lights + for (int i = 0; i < 1; i++) + { + float NdotL = saturate(dot(attributes.normal, light.lightVector)); + + // Diffuse Calculation + diffuse += NdotL * Diffuse(attributes, light, material, eye) * light.color * light.intensity; + // Specular Calculation + specular += NdotL * Specular(attributes, light, material, eye) * light.color.xyz * light.intensity; + light.intensity /= 2.0; + light.lightVector = -light.lightVector; + } + // Shadows + float bias = 0.005; + float visibility = 1.0; + for (int i = 0; i < 1; i++) + { + // int index = int(16.0 * random(floor(attributes.position.xyz * 1000.0), i)) % 16; + // visibility -= (1.0 / 4.0) * (1.0 - texture(u_ShadowMap, float3(fs_in.shadowCoord.xy + poissonDisk[index] / 700.0, (fs_in.shadowCoord.z - bias) / fs_in.shadowCoord.w))); + } + + float3 finalColor = material.albedo.rgb * diffuse.rgb * visibility + (specular + IBL(attributes, light, material, eye)) * visibility; + finalColor = FinalGamma(finalColor); + return float4(finalColor, material.albedo.a); +} \ No newline at end of file diff --git a/Sandbox/shaders/AdvancedLighting.shader b/Sandbox/shaders/AdvancedLighting.shader new file mode 100644 index 00000000..523139af --- /dev/null +++ b/Sandbox/shaders/AdvancedLighting.shader @@ -0,0 +1,335 @@ +#shader vertex +#version 330 core + +layout(location = 0) in vec4 position; +layout(location = 1) in vec3 normal; +layout(location = 2) in vec2 uv; +layout(location = 3) in vec3 binormal; +layout(location = 4) in vec3 tangent; + +uniform mat4 sys_ProjectionMatrix; +uniform mat4 sys_ViewMatrix; +uniform mat4 sys_ModelMatrix; +uniform vec3 sys_CameraPosition; + +uniform mat4 u_DepthBiasMVP; + +out DATA +{ + vec4 position; + vec3 normal; + vec2 uv; + vec3 binormal; + vec3 tangent; + vec3 color; + vec4 shadowCoord; + vec3 cameraPos; +} vs_out; + +void main() +{ + vec4 pos = sys_ModelMatrix * position; + vs_out.position = pos; + gl_Position = sys_ProjectionMatrix * sys_ViewMatrix * pos; + + mat3 model = mat3(sys_ModelMatrix); + vs_out.normal = model * normal; + vs_out.binormal = model * binormal; + vs_out.tangent = model * tangent; + vs_out.uv = uv; + vs_out.color = vec3(1.0); + vs_out.cameraPos = sys_CameraPosition; + + vs_out.shadowCoord = u_DepthBiasMVP * pos; +} + +#shader fragment +#version 330 core + +layout(location = 0) out vec4 color; + +in DATA +{ + vec4 position; + vec3 normal; + vec2 uv; + vec3 binormal; + vec3 tangent; + vec3 color; + vec4 shadowCoord; + vec3 cameraPos; +} fs_in; + +struct Light +{ + vec4 color; + vec3 position; + float p0; + vec3 direction; + float p1; + vec3 lightVector; + float intensity; +}; + +struct Material +{ + vec4 albedo; + vec3 specular; + float roughness; + vec3 normal; +}; + +struct Attributes +{ + vec3 position; + vec3 normal; + vec3 binormal; + vec3 tangent; +}; + +uniform Light sys_Light; + +// PBR Inputs +uniform sampler2D u_PreintegratedFG; +uniform samplerCube u_EnvironmentMap; + +// PBR Map Inputs +uniform sampler2D u_AlbedoMap; +uniform sampler2D u_SpecularMap; +uniform sampler2D u_GlossMap; +uniform sampler2D u_NormalMap; + +uniform sampler2DShadow u_ShadowMap; + +// PBR Static Inputs +uniform vec4 u_AlbedoColor; +uniform vec3 u_SpecularColor; +uniform float u_GlossColor; +uniform vec3 u_NormalColor; + +// PBR Modes +uniform float u_UsingAlbedoMap; +uniform float u_UsingSpecularMap; +uniform float u_UsingGlossMap; +uniform float u_UsingNormalMap; + +#define PI 3.1415926535897932384626433832795 +#define GAMMA 2.2 + +vec2 poissonDisk[16] = vec2[]( + vec2(-0.94201624, -0.39906216), + vec2(0.94558609, -0.76890725), + vec2(-0.094184101, -0.92938870), + vec2(0.34495938, 0.29387760), + vec2(-0.91588581, 0.45771432), + vec2(-0.81544232, -0.87912464), + vec2(-0.38277543, 0.27676845), + vec2(0.97484398, 0.75648379), + vec2(0.44323325, -0.97511554), + vec2(0.53742981, -0.47373420), + vec2(-0.26496911, -0.41893023), + vec2(0.79197514, 0.19090188), + vec2(-0.24188840, 0.99706507), + vec2(-0.81409955, 0.91437590), + vec2(0.19984126, 0.78641367), + vec2(0.14383161, -0.14100790) + ); + +Attributes g_Attributes; + +vec4 GammaCorrectTexture(sampler2D tex, vec2 uv) +{ + vec4 samp = texture(tex, uv); + return vec4(pow(samp.rgb, vec3(GAMMA)), samp.a); +} + +vec3 GammaCorrectTextureRGB(sampler2D tex, vec2 uv) +{ + vec4 samp = texture(tex, uv); + return vec3(pow(samp.rgb, vec3(GAMMA))); +} + +vec4 GetAlbedo() +{ + return (1.0 - u_UsingAlbedoMap) * u_AlbedoColor + u_UsingAlbedoMap * GammaCorrectTexture(u_AlbedoMap, fs_in.uv); +} + +vec3 GetSpecular() +{ + return (1.0 - u_UsingSpecularMap) * u_SpecularColor + u_UsingSpecularMap * GammaCorrectTextureRGB(u_SpecularMap, fs_in.uv); +} + +float GetGloss() +{ + return (1.0 - u_UsingGlossMap) * u_GlossColor + u_UsingGlossMap * GammaCorrectTextureRGB(u_GlossMap, fs_in.uv).r; +} + +float GetRoughness() +{ + return 1.0 - GetGloss(); +} + +vec3 FinalGamma(vec3 color) +{ + return pow(color, vec3(1.0 / GAMMA)); +} + +float FresnelSchlick(float f0, float fd90, float view) +{ + return f0 + (fd90 - f0) * pow(max(1.0 - view, 0.1), 5.0); +} + +float Disney(Light light, Material material, vec3 eye) +{ + vec3 halfVector = normalize(light.lightVector + eye); + + float NdotL = max(dot(g_Attributes.normal, light.lightVector), 0.0); + float LdotH = max(dot(light.lightVector, halfVector), 0.0); + float NdotV = max(dot(g_Attributes.normal, eye), 0.0); + + float energyBias = mix(0.0, 0.5, material.roughness); + float energyFactor = mix(1.0, 1.0 / 1.51, material.roughness); + float fd90 = energyBias + 2.0 * (LdotH * LdotH) * material.roughness; + float f0 = 1.0; + + float lightScatter = FresnelSchlick(f0, fd90, NdotL); + float viewScatter = FresnelSchlick(f0, fd90, NdotV); + + return lightScatter * viewScatter * energyFactor; +} + +vec3 GGX(Light light, Material material, vec3 eye) +{ + vec3 h = normalize(light.lightVector + eye); + float NdotH = max(dot(g_Attributes.normal, h), 0.0); + + float rough2 = max(material.roughness * material.roughness, 2.0e-3); // capped so spec highlights don't disappear + float rough4 = rough2 * rough2; + + float d = (NdotH * rough4 - NdotH) * NdotH + 1.0; + float D = rough4 / (PI * (d * d)); + + // Fresnel + vec3 reflectivity = material.specular; + float fresnel = 1.0; + float NdotL = clamp(dot(g_Attributes.normal, light.lightVector), 0.0, 1.0); + float LdotH = clamp(dot(light.lightVector, h), 0.0, 1.0); + float NdotV = clamp(dot(g_Attributes.normal, eye), 0.0, 1.0); + vec3 F = reflectivity + (fresnel - fresnel * reflectivity) * exp2((-5.55473 * LdotH - 6.98316) * LdotH); + + // geometric / visibility + float k = rough2 * 0.5; + float G_SmithL = NdotL * (1.0 - k) + k; + float G_SmithV = NdotV * (1.0 - k) + k; + float G = 0.25 / (G_SmithL * G_SmithV); + + return G * D * F; +} + +vec3 RadianceIBLIntegration(float NdotV, float roughness, vec3 specular) +{ + vec2 preintegratedFG = texture(u_PreintegratedFG, vec2(roughness, 1.0 - NdotV)).rg; + return specular * preintegratedFG.r + preintegratedFG.g; +} + +vec3 IBL(Light light, Material material, vec3 eye) +{ + float NdotV = max(dot(g_Attributes.normal, eye), 0.0); + + vec3 reflectionVector = normalize(reflect(-eye, g_Attributes.normal)); + float smoothness = 1.0 - material.roughness; + float mipLevel = (1.0 - smoothness * smoothness) * 10.0; + vec4 cs = textureLod(u_EnvironmentMap, reflectionVector, mipLevel); + vec3 result = pow(cs.xyz, vec3(GAMMA)) * RadianceIBLIntegration(NdotV, material.roughness, material.specular); + + vec3 diffuseDominantDirection = g_Attributes.normal; + float diffuseLowMip = 9.6; + vec3 diffuseImageLighting = textureLod(u_EnvironmentMap, diffuseDominantDirection, diffuseLowMip).rgb; + diffuseImageLighting = pow(diffuseImageLighting, vec3(GAMMA)); + + return result + diffuseImageLighting * material.albedo.rgb; +} + +float Diffuse(Light light, Material material, vec3 eye) +{ + return Disney(light, material, eye); +} + +vec3 Specular(Light light, Material material, vec3 eye) +{ + return GGX(light, material, eye); +} + +// TODO: Windowing +float Attenuate(Light light) +{ + vec3 direction = light.position - vec3(fs_in.position); + return light.intensity * 1.0 / (dot(direction, direction) + 0.01); // TODO: 4pi +} + +float random(vec3 seed, int i) +{ + vec4 seed4 = vec4(seed, i); + float dot_product = dot(seed4, vec4(12.9898, 78.233, 45.164, 94.673)); + return fract(sin(dot_product) * 43758.5453); +} + +vec3 NormalMap() +{ + mat3 toWorld = mat3(g_Attributes.binormal, g_Attributes.tangent, g_Attributes.normal); + vec3 normalMap = texture(u_NormalMap, fs_in.uv).rgb * 2.0 - 1.0; + normalMap = toWorld * normalMap.rgb; + normalMap = normalize(normalMap); + return normalMap; +} + +void main() +{ + g_Attributes.position = fs_in.position.xyz; + // Normalize inputs + g_Attributes.normal = normalize(fs_in.normal); + g_Attributes.tangent = normalize(fs_in.tangent); + g_Attributes.binormal = normalize(fs_in.binormal); + + if (u_UsingNormalMap > 0.0) + g_Attributes.normal = NormalMap(); + + vec3 eye = normalize(fs_in.cameraPos - g_Attributes.position); + + Light light = sys_Light; + light.intensity = light.intensity; // Attenuate(light); + light.lightVector = light.direction; // normalize(light.position - vec3(fs_in.position)); + + Material material; + material.albedo = GetAlbedo(); + material.specular = GetSpecular(); + material.roughness = GetRoughness(); + + vec4 diffuse = vec4(0.0); + vec3 specular = vec3(0.0); + + // TODO: Multiple lights + for (int i = 0; i < 1; i++) + { + float NdotL = clamp(dot(g_Attributes.normal, light.lightVector), 0.0, 1.0); + + // Diffuse Calculation + diffuse += NdotL * Diffuse(light, material, eye) * light.color * light.intensity; + // Specular Calculation + specular += NdotL * Specular(light, material, eye) * light.color.xyz * light.intensity; + light.intensity /= 2.0; + light.lightVector = -light.lightVector; + } + // Shadows + float bias = 0.005; + float visibility = 1.0; + for (int i = 0; i < 1; i++) + { + int index = int(16.0 * random(floor(fs_in.position.xyz * 1000.0), i)) % 16; + visibility -= (1.0 / 4.0) * (1.0 - texture(u_ShadowMap, vec3(fs_in.shadowCoord.xy + poissonDisk[index] / 700.0, (fs_in.shadowCoord.z - bias) / fs_in.shadowCoord.w))); + } + + vec3 finalColor = material.albedo.rgb * diffuse.rgb * visibility + (specular + IBL(light, material, eye)) * visibility; + finalColor = FinalGamma(finalColor); + color = vec4(finalColor, material.albedo.a); +} \ No newline at end of file diff --git a/Sandbox/shaders/Scene.shader b/Sandbox/shaders/Scene.shader new file mode 100644 index 00000000..4d5a77ad --- /dev/null +++ b/Sandbox/shaders/Scene.shader @@ -0,0 +1,54 @@ +#shader vertex +#version 330 core + +layout (location = 0) in vec4 position; +layout (location = 1) in vec3 normal; +layout (location = 2) in vec2 uv; + +uniform mat4 pr_matrix; +uniform mat4 vw_matrix = mat4(1.0); +uniform mat4 ml_matrix = mat4(1.0); + +out DATA +{ + vec4 position; + vec3 normal; + vec2 uv; + vec3 color; +} vs_out; + +void main() +{ + gl_Position = pr_matrix * vw_matrix * ml_matrix * position; + vs_out.position = ml_matrix * position; + vs_out.normal = mat3(ml_matrix) * normal; + vs_out.uv = uv; + vs_out.color = vec3(normal * 0.5 + 0.5); +} + +#shader fragment +#version 330 core + +layout (location = 0) out vec4 color; + +in DATA +{ + vec4 position; + vec3 normal; + vec2 uv; + vec3 color; +} fs_in; + +uniform vec4 u_Color; +uniform vec3 u_LightPosition; +uniform float u_LightAttenuation; +uniform vec4 u_LightColor; + +void main() +{ + vec3 light = u_LightPosition - vec3(fs_in.position); + float face = dot(normalize(light), normalize(fs_in.normal)); + float intensity = (u_LightAttenuation / length(light)) * max(face, 0.0); + intensity = max(intensity, 0.1); + color = vec4(fs_in.color * intensity, 1.0); +} \ No newline at end of file diff --git a/Sandbox/shaders/ShadowPass.shader b/Sandbox/shaders/ShadowPass.shader new file mode 100644 index 00000000..bb931fdd --- /dev/null +++ b/Sandbox/shaders/ShadowPass.shader @@ -0,0 +1,22 @@ +#shader vertex +#version 330 core + +layout(location = 0) in vec4 position; + +uniform mat4 u_DepthMatrix; +uniform mat4 ml_matrix; + +void main() +{ + gl_Position = u_DepthMatrix * ml_matrix * position; +} + +#shader fragment +#version 330 core + +layout(location = 0) out float depth; + +void main() +{ + depth = gl_FragCoord.z; +} \ No newline at end of file diff --git a/Sandbox/shaders/Skybox.hlsl b/Sandbox/shaders/Skybox.hlsl new file mode 100644 index 00000000..9262cd30 --- /dev/null +++ b/Sandbox/shaders/Skybox.hlsl @@ -0,0 +1,72 @@ + +struct VSInput +{ + float4 position : POSITION; + float2 uv : TEXCOORD; +}; + +struct VSOutput +{ + float4 positionCS : SV_POSITION; + float4 position : POSITION; + float2 uv : TEXCOORD; +}; + +cbuffer VSSystemUniforms : register(b0) +{ + float4x4 sys_ProjectionMatrix; + float4x4 sys_ViewMatrix; + float4x4 sys_ModelMatrix; + float3 sys_CameraPosition; +}; + +cbuffer VSUniforms : register(b1) +{ + float4x4 invViewProjMatrix; +} + +VSOutput VSMain(in VSInput input) +{ + VSOutput output; + float4 pos = input.position; + pos.z = 1.0f; + output.positionCS = pos; + output.position = mul(pos, invViewProjMatrix); + output.uv = input.uv; + return output; +} + +struct Light +{ + float4 color; + float3 position; + float p0; + float3 direction; + float p1; + float3 lightVector; + float intensity; +}; + +cbuffer PSSystemUniforms : register(b0) +{ + Light sys_Light; +}; + +struct Attributes +{ + float3 position; + float2 uv; + float3 normal; +}; + +TextureCube u_EnvironmentMap : register(t0); +SamplerState u_EnvironmentMapSampler : register(s0); + +float4 PSMain(in VSOutput input) : SV_TARGET +{ + Attributes attributes; + attributes.position = input.position; + attributes.uv = input.uv; + + return u_EnvironmentMap.SampleLevel(u_EnvironmentMapSampler, input.position, 4); +} \ No newline at end of file diff --git a/Sandbox/shaders/Skybox.shader b/Sandbox/shaders/Skybox.shader new file mode 100644 index 00000000..2f5c89b7 --- /dev/null +++ b/Sandbox/shaders/Skybox.shader @@ -0,0 +1,58 @@ +#shader vertex +#version 330 core + +layout(location = 0) in vec4 position; +layout(location = 1) in vec2 uv; + +uniform mat4 sys_ProjectionMatrix; +uniform mat4 sys_ViewMatrix; +uniform mat4 sys_ModelMatrix; +uniform vec3 sys_CameraPosition; + +uniform mat4 invViewProjMatrix; + +out DATA +{ + vec4 position; + vec2 uv; +} vs_out; + +void main() +{ + vec4 pos = position; + pos.z = 1.0f; + gl_Position = pos; + vs_out.position = invViewProjMatrix * pos; + vs_out.uv = uv; +} + +#shader fragment +#version 330 core + +layout(location = 0) out vec4 color; + +struct Light +{ + vec4 color; + vec3 position; + float p0; + vec3 direction; + float p1; + vec3 lightVector; + float intensity; +}; + +Light sys_Light; + +uniform samplerCube u_EnvironmentMap; + +in DATA +{ + vec4 position; + vec2 uv; +} fs_in; + +void main() +{ + color = textureLod(u_EnvironmentMap, fs_in.position.xyz, 4.0f); +} \ No newline at end of file diff --git a/Sandbox/shaders/StandardLighting.shader b/Sandbox/shaders/StandardLighting.shader new file mode 100644 index 00000000..2be22065 --- /dev/null +++ b/Sandbox/shaders/StandardLighting.shader @@ -0,0 +1,123 @@ +#shader vertex +#version 330 core + +layout(location = 0) in vec4 position; +layout(location = 1) in vec3 normal; +layout(location = 2) in vec2 uv; + +uniform mat4 pr_matrix; +uniform mat4 vw_matrix = mat4(1.0); +uniform mat4 ml_matrix = mat4(1.0); + +out DATA +{ + vec4 position; + vec3 normal; + vec2 uv; + vec3 color; +} vs_out; + +void main() +{ + gl_Position = pr_matrix * vw_matrix * ml_matrix * position; + vs_out.position = ml_matrix * position; + vs_out.normal = mat3(ml_matrix) * normal; + vs_out.uv = uv; + vs_out.color = vec3(normal * 0.5 + 0.5); +} + +#shader fragment +#version 330 core + +layout(location = 0) out vec4 color; + +in DATA +{ + vec4 position; + vec3 normal; + vec2 uv; + vec3 color; +} fs_in; + +// TODO: Replace with struct +uniform vec3 u_LightPosition; +uniform vec4 u_LightColor; +uniform float u_LightIntensity; + +uniform float u_Glossiness; +uniform vec3 u_CameraPos; + +uniform mat4 vw_matrix = mat4(1.0); + +struct Light +{ + vec3 position; + vec4 color; + float intensity; + vec3 lightVector; +}; + +struct Surface +{ + float glossiness; +}; + +float Blinn(Light light, Surface surface, vec3 eye) +{ + vec3 direction = light.lightVector; + float face = max(dot(direction, fs_in.normal), 0.0); + float result = face; + return result; +} + +float Phong(Light light, Surface surface, vec3 eye) +{ + vec3 r = reflect(light.lightVector, fs_in.normal); + float reflecty = pow(max(dot(r, eye), 0.0), surface.glossiness); + return reflecty; +} + +float Diffuse(Light light, Surface surface, vec3 eye) +{ + return Blinn(light, surface, eye); +} + +float Specular(Light light, Surface surface, vec3 eye) +{ + return Phong(light, surface, eye); +} + +// TODO: Windowing +float Attenuate(Light light) +{ + vec3 direction = light.position - vec3(fs_in.position); + return u_LightIntensity * 1.0 / (dot(direction, direction) + 0.01); // TODO: 4pi +} + +void main() +{ + fs_in.normal = normalize(fs_in.normal); + + Light light; + light.position = u_LightPosition; + light.color = u_LightColor; + light.intensity = Attenuate(light); + light.lightVector = normalize(light.position - vec3(fs_in.position)); + + vec3 eye = normalize(fs_in.position.xyz - u_CameraPos); + + Surface surface; + surface.glossiness = u_Glossiness; + + vec4 diffuse = vec4(0.0); + vec4 specular = vec4(0.0); + // TODO: Multiple lights + for (int i = 0; i < 1; i++) + { + diffuse += Diffuse(light, surface, eye) * light.color * light.intensity; + specular += Specular(light, surface, eye) * light.color * light.intensity; + } + color = vec4(fs_in.color, 1.0); + color = color * diffuse + specular; + color.a = 1.0; +} \ No newline at end of file diff --git a/Sandbox/shaders/postfx.shader b/Sandbox/shaders/postfx.shader new file mode 100644 index 00000000..c35182f8 --- /dev/null +++ b/Sandbox/shaders/postfx.shader @@ -0,0 +1,64 @@ +#shader vertex +#version 330 core + +layout (location = 0) in vec4 position; +layout (location = 1) in vec2 uv; +layout (location = 2) in vec2 mask_uv; +layout (location = 3) in float tid; +layout (location = 4) in float mid; +layout (location = 5) in vec4 color; + +uniform mat4 pr_matrix; + +out DATA +{ + vec2 uv; +} vs_out; + +void main() +{ + gl_Position = pr_matrix * position; + vs_out.uv = uv; +} + +#shader fragment +#version 330 core + +layout (location = 0) out vec4 color; + +uniform sampler2D tex; + +in DATA +{ + vec2 uv; +} fs_in; + +float resolution = 960.0; +float radius = 4.0; +vec2 dir = vec2(1.0, 0.0); + +void main() +{ + vec4 sum = vec4(0.0); + vec2 tc = fs_in.uv; + + // Blur amount in pixels + float blur = radius / resolution; + + float hstep = dir.x; + float vstep = dir.y; + + sum += texture(tex, vec2(tc.x - 4.0 * blur * hstep, tc.y - 4.0 * blur * vstep)) * 0.0162162162; + sum += texture(tex, vec2(tc.x - 3.0 * blur * hstep, tc.y - 3.0 * blur * vstep)) * 0.0540540541; + sum += texture(tex, vec2(tc.x - 2.0 * blur * hstep, tc.y - 2.0 * blur * vstep)) * 0.1216216216; + sum += texture(tex, vec2(tc.x - 1.0 * blur * hstep, tc.y - 1.0 * blur * vstep)) * 0.1945945946; + + sum += texture(tex, vec2(tc.x, tc.y)) * 0.2270270270; + + sum += texture(tex, vec2(tc.x + 1.0 * blur * hstep, tc.y + 1.0 * blur * vstep)) * 0.1945945946; + sum += texture(tex, vec2(tc.x + 2.0 * blur * hstep, tc.y + 2.0 * blur * vstep)) * 0.1216216216; + sum += texture(tex, vec2(tc.x + 3.0 * blur * hstep, tc.y + 3.0 * blur * vstep)) * 0.0540540541; + sum += texture(tex, vec2(tc.x + 4.0 * blur * hstep, tc.y + 4.0 * blur * vstep)) * 0.0162162162; + + color = vec4(sum); +} \ No newline at end of file diff --git a/Sandbox/src/DeferredTest.cpp b/Sandbox/src/DeferredTest.cpp new file mode 100644 index 00000000..a60006ae --- /dev/null +++ b/Sandbox/src/DeferredTest.cpp @@ -0,0 +1,108 @@ +#include "DeferredTest.h" + +using namespace sp; +using namespace debug; +using namespace graphics; +using namespace maths; + +using namespace entity; +using namespace component; + +using namespace API; + +#if 0 + +DeferredTest::DeferredTest() + : Layer3D(new Scene()) +{ + m_Rotation = 0.0f; + m_SetUniforms[0] = true; + m_SetUniforms[1] = true; +} + +DeferredTest::~DeferredTest() +{ +} + +static vec3 g_CubeTransform(-4, 0, 0); +static vec3 g_LightDir(0.5f, 2, 2); +static float roughness = 0.5f; +static Material* material; + +static Scene* g_Scene; + +void DeferredTest::OnInit(Renderer3D& renderer, Scene& scene) +{ + g_Scene = &scene; + + Texture* crate = TextureManager::Add(Texture2D::CreateFromFile("Crate", "res/Crate.jpg")); + + m_Scene = &scene; + material = new Material(Shader::CreateFromFile("AdvancedLighting", "shaders/AdvancedLighting.shader")); + + MaterialInstance* cubeMaterial = new MaterialInstance(material); + cubeMaterial->SetUniform("u_Roughness", 0.5f); + + m_Cube = new Entity(); + Model* cubeModel = new Model("res/Cube.obj", cubeMaterial); + m_Cube->AddComponent(new MeshComponent(cubeModel->GetMesh())); + m_Cube->AddComponent(new TransformComponent(mat4::Identity())); + + m_Plane = new Entity(); + m_Plane->AddComponent(new MeshComponent(MeshFactory::CreatePlane(128, 128, vec3(0, 1, 0), new MaterialInstance(material)))); + m_Plane->AddComponent(new TransformComponent(mat4::Identity())); + + m_Scene->Add(m_Cube); + m_Scene->Add(m_Plane); + + Entity* obj = new Entity(); + Model* objModel = new Model("res/Plane.obj", new MaterialInstance(material)); + obj->AddComponent(new MeshComponent(objModel->GetMesh())); + obj->AddComponent(new TransformComponent(mat4::Identity())); + m_Scene->Add(obj); + + LightSetup* lights = new LightSetup(); + lights->Add(new Light(vec3(0.8f))); + m_Scene->PushLightSetup(lights); + + DebugMenu::Add("Cube", &g_CubeTransform, -20.0f, 20.0f); + DebugMenu::Add("LightDir", &g_LightDir, -20.0f, 20.0f); + DebugMenu::Add("Light Pos", &lights->GetLights()[0]->position, -20.0f, 40.0f); + DebugMenu::Add("Light Atten.", &lights->GetLights()[0]->intensity, 0, 100); + DebugMenu::Add("Roughness", &roughness, 0, 1); + + DeferredRenderer& r = (DeferredRenderer&)renderer; +// DebugLayer::GetInstance()->Add(new Sprite(0, 0, 8, 4.5f, new Texture2D(r.GetGBuffer().GetTexture(0)))); +} + +void DeferredTest::OnTick() +{ + Application& app = Application::GetApplication(); + SP_INFO(app.GetUPS(), " ups, ", app.GetFPS(), " fps"); +} + +void DeferredTest::OnUpdate(const Timestep& ts) +{ + material->SetUniform("u_CameraPos", m_Scene->GetCamera()->GetPosition()); + + TransformComponent* cubeTransform = m_Cube->GetComponent(); + // TransformComponent* sphereTransform = m_Sphere->GetComponent(); + + mat4 transform = mat4::Translate(vec3(0, 2.5f, 0)) * mat4::Rotate(m_Rotation, vec3(1, 0, 0)) * mat4::Rotate(m_Rotation, vec3(0, 1, 0)) * mat4::Rotate(m_Rotation, vec3(0, 0, 1)); + cubeTransform->transform = mat4::Translate(g_CubeTransform) * transform * mat4::Scale(vec3(1.4f, 1.4f, 1.4f)); + // sphereTransform->transform = mat4::Translate(vec3(4, 0, 0)) * transform; + //m_Rotation++; + + material->SetUniform("u_Roughness", roughness); +} + +void DeferredTest::OnRender(Renderer3D& renderer) +{ + Layer3D::OnRender(renderer); +} + +void DeferredTest::OnEvent(sp::events::Event& event) +{ +} + +#endif \ No newline at end of file diff --git a/Sandbox/src/DeferredTest.h b/Sandbox/src/DeferredTest.h new file mode 100644 index 00000000..861736a7 --- /dev/null +++ b/Sandbox/src/DeferredTest.h @@ -0,0 +1,25 @@ +#pragma once + +#include + +class DeferredTest : public sp::graphics::Layer3D +{ +private: + sp::graphics::Scene* m_Scene; + sp::entity::Entity* m_Cube; + sp::entity::Entity* m_Sphere; + sp::entity::Entity* m_Plane; + float m_Rotation; + bool m_SetUniforms[2]; +public: + DeferredTest(); + ~DeferredTest(); + + void OnInit(sp::graphics::Renderer3D& renderer, sp::graphics::Scene& scene) override; + + void OnTick() override; + void OnUpdate(const sp::Timestep& ts) override; + void OnEvent(sp::events::Event& event) override; + + void OnRender(sp::graphics::Renderer3D& renderer); +}; \ No newline at end of file diff --git a/Sandbox/src/Sandbox.cpp b/Sandbox/src/Sandbox.cpp new file mode 100644 index 00000000..5cf485a5 --- /dev/null +++ b/Sandbox/src/Sandbox.cpp @@ -0,0 +1,43 @@ +#include + +#include "Test2D.h" +#include "Test3D.h" +#include "DeferredTest.h" +#include "SponzaTest.h" + +using namespace sp; +using namespace graphics; +using namespace maths; + +class Game : public Application +{ +public: + Game() + : Application("Sandbox", { 1280, 720, false, false }, sp::graphics::API::RenderAPI::DIRECT3D) + { + } + + ~Game() + { + } + + void Init() override + { + Application::Init(); + VFS::Get()->Mount("models", "res/models"); + VFS::Get()->Mount("pbr", "res/pbr"); + VFS::Get()->Mount("shaders", "shaders"); + + PushLayer(spnew Test2D()); + // PushLayer(spnew Test3D()); + // PushLayer(spnew SponzaTest()); + // PushLayer(spnew DeferredTest()); // Doesn't work atm + } +}; + +int main() +{ + Game game; + game.Start(); + return 0; +} \ No newline at end of file diff --git a/Sandbox/src/SponzaTest.cpp b/Sandbox/src/SponzaTest.cpp new file mode 100644 index 00000000..70ba26e3 --- /dev/null +++ b/Sandbox/src/SponzaTest.cpp @@ -0,0 +1,128 @@ +#include "SponzaTest.h" + +using namespace sp; +using namespace debug; +using namespace graphics; +using namespace maths; + +using namespace events; +using namespace entity; +using namespace component; + +using namespace API; + +SponzaTest::SponzaTest() + : Layer3D(spnew Scene()) +{ + m_MayaCamera = m_Scene->GetCamera(); + m_FPSCamera = spnew FPSCamera(maths::mat4::Perspective(65.0f, 16.0f / 9.0f, 0.1f, 1000.0f)); +} + +SponzaTest::~SponzaTest() +{ + +} + +void SponzaTest::OnInit(Renderer3D& renderer, Scene& scene) +{ + String environmentFiles[11] = + { + "res/pbr/cubemap/CubeMap0.tga", + "res/pbr/cubemap/CubeMap1.tga", + "res/pbr/cubemap/CubeMap2.tga", + "res/pbr/cubemap/CubeMap3.tga", + "res/pbr/cubemap/CubeMap4.tga", + "res/pbr/cubemap/CubeMap5.tga", + "res/pbr/cubemap/CubeMap6.tga", + "res/pbr/cubemap/CubeMap7.tga", + "res/pbr/cubemap/CubeMap8.tga", + "res/pbr/cubemap/CubeMap9.tga", + "res/pbr/cubemap/CubeMap10.tga" + }; + //ENVIRONMENT MAP + TextureCube* environment = TextureCube::CreateFromVCross(environmentFiles, 11); + + //SKYPLANE + Shader* skybox = Shader::CreateFromFile("Skybox", String("/shaders/Skybox") + (API::Context::GetRenderAPI() == RenderAPI::OPENGL ? ".shader" : ".hlsl")); + Material* skyboxMaterial = spnew Material(skybox); + skyboxMaterial->SetRenderFlag(Material::RenderFlags::DISABLE_DEPTH_TEST); + skybox->Bind(); + m_SkyboxMaterial = spnew MaterialInstance(skyboxMaterial); + m_SkyboxMaterial->SetTexture("u_EnvironmentMap", environment); + Entity* skyboxEntity = spnew Entity(MeshFactory::CreateQuad(-1, -1, 2, 2, m_SkyboxMaterial)); + m_Scene->Add(skyboxEntity); + + //PBR SHADER + Shader* pbrShader = Shader::CreateFromFile("AdvancedLighting", String("/shaders/AdvancedLighting") + (API::Context::GetRenderAPI() == RenderAPI::OPENGL ? ".shader" : ".hlsl")); + ShaderManager::Add(pbrShader); + + + //Models parts + std::vector models = { "arch", "backplate", "walls1", "walls2", "walls3", "ceiling", "column1", "column2", "column3", "curtain_blue", "curtain_green", "curtain_red", "details", + "fabric_blue", "fabric_green", "fabric_red", "floor", "floor2", "chain", "lion", "pole", "roof", "vase", "vase_round", "vase_hanging","flower", "flower2" }; + //Set texture Wrap to work on OpenGL (or there are texture glitches when texture is repeating) + Texture::SetWrap(TextureWrap::REPEAT); + //Loop + for (int i = 0; i < models.size(); i++) { + PBRMaterial* material = spnew PBRMaterial(pbrShader); + material->SetEnviromentMap(environment); + { + TextureLoadOptions options(false, true); + material->SetAlbedoMap(Texture2D::CreateFromFile("res/Sponza/" + models[i] + "/albedo.tga", options)); + material->SetSpecularMap(Texture2D::CreateFromFile("res/Sponza/" + models[i] + "/specular.tga", options)); + material->SetGlossMap(Texture2D::CreateFromFile("res/Sponza/" + models[i] + "/gloss.tga", options)); + material->SetNormalMap(Texture2D::CreateFromFile("res/Sponza/" + models[i] + "/normal.tga", options)); + } + + Model* model = spnew Model("res/Sponza/" + models[i] + "/model.spm", spnew MaterialInstance(material)); + Entity* entity = spnew Entity(model->GetMesh(), mat4::Translate(vec3(0, 0, 0))* mat4::Rotate(-90, vec3::XAxis())); + m_Scene->Add(entity); + } + //Reset it + Texture::SetWrap(TextureWrap::CLAMP); + + //LIGHT(S) + LightSetup* lights = spnew LightSetup(); + lights->Add(spnew Light(vec3(0.8f))); + m_Scene->PushLightSetup(lights); + + DebugMenu::Add("SponzaTest/Light Direction", &lights->GetLights()[0]->direction, -1.0f, 1.0f); + DebugMenu::Add("SponzaTest/Light Intensity", &lights->GetLights()[0]->intensity, 0, 100); +} + +void SponzaTest::OnTick() +{ +} + +void SponzaTest::OnUpdate(const Timestep& ts) +{ + // Still OpenGL maths style (column-major) + mat4 vp = m_Scene->GetCamera()->GetProjectionMatrix() * m_Scene->GetCamera()->GetViewMatrix(); + m_SkyboxMaterial->SetUniform("invViewProjMatrix", mat4::Invert(vp)); +} + +void SponzaTest::OnEvent(sp::events::Event& event) +{ + if (event.GetType() == Event::Type::KEY_PRESSED) + { + KeyPressedEvent* kpe = (KeyPressedEvent*)&event; + if (kpe->GetRepeat() == 0) + { + switch (kpe->GetKeyCode()) + { + case SP_KEY_R: + ShaderManager::Reload("AdvancedLighting"); + break; + case SP_KEY_C: + m_Scene->SetCamera(m_Scene->GetCamera() == m_MayaCamera ? m_FPSCamera : m_MayaCamera); + break; + } + } + } + Layer::OnEvent(event); +} + +void SponzaTest::OnRender(Renderer3D& renderer) +{ + Layer3D::OnRender(renderer); +} diff --git a/Sandbox/src/SponzaTest.h b/Sandbox/src/SponzaTest.h new file mode 100644 index 00000000..6254e47d --- /dev/null +++ b/Sandbox/src/SponzaTest.h @@ -0,0 +1,23 @@ +#pragma once + +#include + +class SponzaTest : public sp::graphics::Layer3D +{ +private: + sp::graphics::Camera* m_MayaCamera; + sp::graphics::Camera* m_FPSCamera; + sp::graphics::MaterialInstance* m_SkyboxMaterial; + +public: + SponzaTest(); + ~SponzaTest(); + + void OnInit(sp::graphics::Renderer3D& renderer, sp::graphics::Scene& scene) override; + + void OnTick() override; + void OnUpdate(const sp::Timestep& ts) override; + void OnEvent(sp::events::Event& event) override; + + void OnRender(sp::graphics::Renderer3D& renderer); +}; \ No newline at end of file diff --git a/Sandbox/src/Test2D.cpp b/Sandbox/src/Test2D.cpp new file mode 100644 index 00000000..ca204e8a --- /dev/null +++ b/Sandbox/src/Test2D.cpp @@ -0,0 +1,111 @@ +#include "Test2D.h" + +using namespace sp; +using namespace graphics; +using namespace events; +using namespace entity; +using namespace component; +using namespace maths; +using namespace API; + +Test2D::Test2D() + : Layer2D(spnew Scene2D(mat4::Orthographic(-16.0f, 16.0f, -9.0f, 9.0f, -1.0f, 1.0f))) +{ + m_Renderer = nullptr; +} + +Test2D::~Test2D() +{ + +} + +void Test2D::OnInit(Renderer2D& renderer, Material& material) +{ + // m_Window->SetVsync(false); + m_Renderer = &renderer; + + renderer.SetRenderTarget(RenderTarget::SCREEN); + //renderer.AddPostEffectsPass(new PostEffectsPass(Shader::CreateFromFile("Horizontal Blur", "shaders/postfx.shader"))); + //renderer.SetPostEffects(false); + + TextureParameters params(TextureFilter::NEAREST); + Add(spnew Sprite(4.0f, 4.0f, 4, 4, Texture2D::CreateFromFile("Tex", "res/tb.png", params))); + Add(spnew Sprite(-5.0f, -5.0f, 3, 3, 0xffff00ff)); + + FontManager::Add(spnew Font("Consolas", "res/consola.ttf", 96)); + FontManager::Add(spnew Font("Brush Script", "res/BrushScriptStd.otf", 96)); + + m_DebugInfo = spnew Label*[10]; + Add(m_DebugInfo[0] = spnew Label("", -15.5f, 8.5f, 0xffffffff)); + Add(m_DebugInfo[1] = spnew Label("", -15.5f, 7.5f, 0xffffffff)); + Add(m_DebugInfo[2] = spnew Label("", -15.5f, 6.5f, 0xffffffff)); + Add(m_DebugInfo[3] = spnew Label("", -15.5f, 5.5f, 0xffffffff)); + Add(m_DebugInfo[4] = spnew Label("", -15.5f, 4.5f, 0xffffffff)); + + Add(spnew Label("Consolas", -15.5f, 0.0f, FontManager::Get("Consolas"), 0xffffffff)); + Add(spnew Label("Brush Script", -15.5f, 2.0f, FontManager::Get("Brush Script"), 0xffffffff)); + + Texture::SetWrap(TextureWrap::CLAMP_TO_BORDER); + Mask* mask = spnew Mask(Texture2D::CreateFromFile("Mask", "res/mask.png")); + mask->transform = mat4::Translate(vec3(-16.0f, -9.0f, 0.0f)) * mat4::Scale(vec3(32, 18, 1)); + SetMask(mask); +} + +void Test2D::OnTick() +{ + using namespace sp::internal; + + Application& app = Application::GetApplication(); + SP_INFO(app.GetUPS(), " ups, ", app.GetFPS(), " fps"); + + m_DebugInfo[2]->SetText("Total Allocs: " + StringFormat::ToString(MemoryManager::Get()->GetMemoryStats().totalAllocations)); + m_DebugInfo[3]->SetText("Total Allocated: " + MemoryManager::BytesToString(MemoryManager::Get()->GetMemoryStats().totalAllocated)); + m_DebugInfo[4]->SetText("Total Freed: " + MemoryManager::BytesToString(MemoryManager::Get()->GetMemoryStats().totalFreed)); +} + +void Test2D::OnUpdate(const Timestep& ts) +{ + +} + +bool Test2D::OnKeyPressedEvent(KeyPressedEvent& event) +{ + if (!m_Renderer) + return false; + + Renderer2D& renderer = *m_Renderer; + + if (event.GetRepeat()) + return false; + + if (event.GetKeyCode() == SP_KEY_T) + { + renderer.SetRenderTarget(renderer.GetRenderTarget() == RenderTarget::SCREEN ? RenderTarget::BUFFER : RenderTarget::SCREEN); + return true; + } + if (event.GetKeyCode() == SP_KEY_P) + { + renderer.SetPostEffects(!renderer.GetPostEffects()); + return true; + } + + return false; +} + +bool Test2D::OnMousePressedEvent(MousePressedEvent& event) +{ + return false; +} + +void Test2D::OnEvent(sp::events::Event& event) +{ + EventDispatcher dispatcher(event); + dispatcher.Dispatch(METHOD(&Test2D::OnKeyPressedEvent)); + dispatcher.Dispatch(METHOD(&Test2D::OnMousePressedEvent)); +} + +void Test2D::OnRender(Renderer2D& renderer) +{ + m_DebugInfo[0]->SetText(String("Target: ") + (renderer.GetRenderTarget() == RenderTarget::SCREEN ? "Screen" : "Buffer")); + m_DebugInfo[1]->SetText(String("PostFX: ") + (renderer.GetPostEffects() ? "On" : "Off")); +} diff --git a/Sandbox/src/Test2D.h b/Sandbox/src/Test2D.h new file mode 100644 index 00000000..d96caf4e --- /dev/null +++ b/Sandbox/src/Test2D.h @@ -0,0 +1,24 @@ +#pragma once + +#include + +class Test2D : public sp::graphics::Layer2D +{ +private: + sp::graphics::Label** m_DebugInfo; + sp::graphics::Renderer2D* m_Renderer; +public: + Test2D(); + ~Test2D(); + + void OnInit(sp::graphics::Renderer2D& renderer, sp::graphics::Material& material) override; + + void OnTick() override; + void OnUpdate(const sp::Timestep& ts) override; + + bool OnKeyPressedEvent(sp::events::KeyPressedEvent& event); + bool OnMousePressedEvent(sp::events::MousePressedEvent& event); + void OnEvent(sp::events::Event& event) override; + + void OnRender(sp::graphics::Renderer2D& renderer) override; +}; \ No newline at end of file diff --git a/Sandbox/src/Test3D.cpp b/Sandbox/src/Test3D.cpp new file mode 100644 index 00000000..e6d01460 --- /dev/null +++ b/Sandbox/src/Test3D.cpp @@ -0,0 +1,339 @@ +#include "Test3D.h" + +using namespace sp; +using namespace graphics; +using namespace maths; + +using namespace events; +using namespace entity; +using namespace component; + +using namespace API; + +#define DEBUG_MENU(name, var, min, max) debug::DebugMenu::Add("Test3D/" ## name, var, min, max) + +Test3D::Test3D() + : Layer3D(spnew Scene()) +{ + m_MayaCamera = m_Scene->GetCamera(); + m_FPSCamera = spnew FPSCamera(maths::mat4::Perspective(65.0f, 16.0f / 9.0f, 0.1f, 1000.0f)); + + m_Rotation = 0.0f; + m_SetUniforms[0] = true; + m_SetUniforms[1] = true; + + mat4 result = mat4::Identity() * mat4::Identity(); +} + +Test3D::~Test3D() +{ +} + +vec3 g_CubeTransform(-10, 10, 0); +vec3 g_DaggerTransform(0, 20, 0); +vec4 g_SphereColor(0.0f, 0.0f, 0.0f, 1.0f); +vec3 g_SphereSpecularColor(1.0f, 1.0f, 0.6f); + +float g_DaggerGloss = 0.5f; + +Shader* shadowPassShader; +FramebufferDepth* g_DepthBuffer; +TextureDepth* g_ShadowMap; + +String materialInputs[5] = +{ + "CastIron", + "WornWood", + "GunMetal", + "ABSRed", + "Custom" +}; + +enum Materials : uint +{ + CAST_IRON = 0, + WORN_WOOD, + GUN_METAL, + ABS_RED, + CUSTOM +}; + +void Test3D::OnInit(Renderer3D& renderer, Scene& scene) +{ + // Enable this to use FPS camera + // scene.SetCamera(m_FPSCamera); + + Timer timer; + String environmentFiles[11] = + { + "/pbr/cubemap/CubeMap0.tga", + "/pbr/cubemap/CubeMap1.tga", + "/pbr/cubemap/CubeMap2.tga", + "/pbr/cubemap/CubeMap3.tga", + "/pbr/cubemap/CubeMap4.tga", + "/pbr/cubemap/CubeMap5.tga", + "/pbr/cubemap/CubeMap6.tga", + "/pbr/cubemap/CubeMap7.tga", + "/pbr/cubemap/CubeMap8.tga", + "/pbr/cubemap/CubeMap9.tga", + "/pbr/cubemap/CubeMap10.tga" + }; + + TextureCube* environment = TextureCube::CreateFromVCross(environmentFiles, 11); + Shader* skybox = Shader::CreateFromFile("Skybox", String("/shaders/Skybox") + (API::Context::GetRenderAPI() == RenderAPI::OPENGL ? ".shader" : ".hlsl")); + Material* skyboxMaterial = spnew Material(skybox); + skyboxMaterial->SetRenderFlag(Material::RenderFlags::DISABLE_DEPTH_TEST); + skybox->Bind(); + m_SkyboxMaterial = spnew MaterialInstance(skyboxMaterial); + m_SkyboxMaterial->SetTexture("u_EnvironmentMap", environment); + Entity* skyboxEntity = spnew Entity(MeshFactory::CreateQuad(-1, -1, 2, 2, m_SkyboxMaterial)); + m_Scene->Add(skyboxEntity); + + Shader* pbrShader = Shader::CreateFromFile("AdvancedLighting", String("/shaders/AdvancedLighting") + (API::Context::GetRenderAPI() == RenderAPI::OPENGL ? ".shader" : ".hlsl")); + ShaderManager::Add(pbrShader); + PBRMaterial* material = spnew PBRMaterial(pbrShader); + + PBRMaterial* castIron = spnew PBRMaterial(pbrShader); + castIron->SetEnviromentMap(environment); + { + String path = materialInputs[CAST_IRON] + "/" + materialInputs[CAST_IRON]; + castIron->SetAlbedoMap(Texture2D::CreateFromFile("/pbr/" + path + "_Albedo.tga")); + castIron->SetSpecularMap(Texture2D::CreateFromFile("/pbr/" + path + "_Specular.tga")); + castIron->SetGlossMap(Texture2D::CreateFromFile("/pbr/" + path + "_Gloss.tga")); + castIron->SetNormalMap(Texture2D::CreateFromFile("/pbr/" + path + "_Normal.tga")); + } + m_Materials.push_back(castIron); + + PBRMaterial* wornWood = spnew PBRMaterial(pbrShader); + wornWood->SetEnviromentMap(environment); + { + String path = materialInputs[WORN_WOOD] + "/" + materialInputs[WORN_WOOD]; + wornWood->SetAlbedoMap(Texture2D::CreateFromFile("/pbr/" + path + "_Albedo.tga")); + wornWood->SetSpecularMap(Texture2D::CreateFromFile("/pbr/" + path + "_Specular.tga")); + wornWood->SetGlossMap(Texture2D::CreateFromFile("/pbr/" + path + "_Gloss.tga")); + wornWood->SetNormalMap(Texture2D::CreateFromFile("/pbr/" + path + "_Normal.tga")); + } + m_Materials.push_back(wornWood); + + PBRMaterial* gunMetal = spnew PBRMaterial(pbrShader); + gunMetal->SetEnviromentMap(environment); + { + String path = materialInputs[GUN_METAL] + "/" + materialInputs[GUN_METAL]; + gunMetal->SetAlbedoMap(Texture2D::CreateFromFile("/pbr/" + path + "_Albedo.tga")); + gunMetal->SetSpecularMap(Texture2D::CreateFromFile("/pbr/" + path + "_Specular.tga")); + gunMetal->SetGlossMap(Texture2D::CreateFromFile("/pbr/" + path + "_Gloss.tga")); + gunMetal->SetNormalMap(Texture2D::CreateFromFile("/pbr/" + path + "_Normal.tga")); + } + m_Materials.push_back(gunMetal); + + + PBRMaterial* absRed = spnew PBRMaterial(pbrShader); + absRed->SetEnviromentMap(environment); + { + String path = materialInputs[ABS_RED] + "/" + materialInputs[ABS_RED]; + absRed->SetAlbedoMap(Texture2D::CreateFromFile("/pbr/" + path + "_Albedo.tga")); + absRed->SetSpecularMap(Texture2D::CreateFromFile("/pbr/" + path + "_Specular.tga")); + absRed->SetGlossMap(Texture2D::CreateFromFile("/pbr/" + path + "_Gloss.tga")); + absRed->SetNormalMap(Texture2D::CreateFromFile("/pbr/" + path + "_Normal.tga")); + } + m_Materials.push_back(absRed); + + PBRMaterial* custom = spnew PBRMaterial(pbrShader); + custom->SetEnviromentMap(environment); + { + String path = materialInputs[CUSTOM] + "/" + materialInputs[CUSTOM]; + custom->SetAlbedoMap(Texture2D::CreateFromFile("/pbr/" + path + "_Albedo.tga")); + custom->SetSpecularMap(Texture2D::CreateFromFile("/pbr/" + path + "_Specular.tga")); + custom->SetGlossMap(Texture2D::CreateFromFile("/pbr/" + path + "_Gloss.tga")); + custom->SetNormalMap(Texture2D::CreateFromFile("/pbr/" + path + "_Normal.tga")); + } + m_Materials.push_back(custom); + + // Texture::SetLoadParameters(0); + m_DaggerMaterial = spnew PBRMaterial(pbrShader); + m_DaggerMaterial->SetEnviromentMap(environment); + { + TextureLoadOptions options(false, true); + m_DaggerMaterial->SetAlbedoMap(Texture2D::CreateFromFile("res/Dagger/Textures/Dagger_Albedo.tga", options)); + m_DaggerMaterial->SetSpecularMap(Texture2D::CreateFromFile("res/Dagger/Textures/Dagger_Specular.tga", options)); + m_DaggerMaterial->SetGlossMap(Texture2D::CreateFromFile("res/Dagger/Textures/Dagger_Gloss.tga", options)); + m_DaggerMaterial->SetNormalMap(Texture2D::CreateFromFile("res/Dagger/Textures/Dagger_Normals.tga", options)); + } + + Model* daggerModel = spnew Model("/models/Dagger.spm", spnew MaterialInstance(m_DaggerMaterial)); + m_Dagger = spnew Entity(daggerModel->GetMesh(), mat4::Translate(g_DaggerTransform)); + m_Scene->Add(m_Dagger); + + PBRMaterial* cubeMaterial = spnew PBRMaterial(pbrShader); + cubeMaterial->SetEnviromentMap(environment); + Model* cubeModel = spnew Model("/models/RoundedCube.spm", spnew MaterialInstance(cubeMaterial)); + m_Cube = spnew Entity(cubeModel->GetMesh(), mat4::Rotate(90.0f, vec3(0, 0, 1)) * mat4::Translate(g_CubeTransform)); + m_Scene->Add(m_Cube); + + Model* sphereModel = spnew Model("/models/Sphere.spm"); + + // Plastics + for (uint x = 0; x < 10; x++) + { + float xx = x * 10.0f; + float zz = 3.0f; + + float roughness = x / 10.0f; + vec3 spec(0.04f); + vec4 diffuse(vec3(1.0f, 0.0f, 0.0f), 1.0f); + + PBRMaterialInstance* m = spnew PBRMaterialInstance(m_Materials[CAST_IRON]); + m->SetAlbedo(diffuse); + m->SetSpecular(spec); + m->SetGloss(1.0f - roughness); + m->UsingNormalMap(false); + + Mesh* mesh = spnew Mesh(sphereModel->GetMesh()); + mesh->SetMaterial(m); + + Entity* sphere = spnew Entity(mesh, mat4::Translate(vec3(-60 + xx, 2.5f, 90 + zz)) * mat4::Scale(vec3(2.0f))); + m_Spheres.push_back(sphere); + m_Scene->Add(sphere); + } + + // Metals + for (uint x = 0; x < 10; x++) + { + float xx = x * 10.0f; + float zz = 0; + + float roughness = x / 10.0f; + vec3 spec(1.0f); + vec4 diffuse(0.0f, 0.0f, 0.0f, 1.0f); + + PBRMaterialInstance* m = spnew PBRMaterialInstance(m_Materials[CAST_IRON]); + m->SetAlbedo(diffuse); + m->SetSpecular(spec); + m->SetGloss(1.0f - roughness); + m->UsingNormalMap(false); + + Mesh* mesh = spnew Mesh(sphereModel->GetMesh()); + mesh->SetMaterial(m); + + Entity* sphere = spnew Entity(mesh, mat4::Translate(vec3(-60 + xx, 2.5f, 80 + zz)) * mat4::Scale(vec3(2.0))); + m_Spheres.push_back(sphere); + m_Scene->Add(sphere); + } + + m_Plane = spnew Entity(MeshFactory::CreatePlane(128, 128, vec3(0, 1, 0), spnew PBRMaterialInstance(m_Materials[CUSTOM]))); + m_Scene->Add(m_Plane); + + LightSetup* lights = spnew LightSetup(); + m_Light = spnew Light(vec3(0.8f)); + lights->Add(m_Light); + m_Scene->PushLightSetup(lights); + + DEBUG_MENU("Cube", &g_CubeTransform, -100.0f, 100.0f); + DEBUG_MENU("Light Direction", &lights->GetLights()[0]->direction, -1.0f, 1.0f); + DEBUG_MENU("Light Intensity", &lights->GetLights()[0]->intensity, 0, 100); + DEBUG_MENU("Dagger", &g_DaggerTransform, -50, 50); + DEBUG_MENU("Dagger Gloss", &g_DaggerGloss, 0.0f, 1.0f); + + // shadowPassShader = Shader::CreateFromFile("Shadow", "shaders/ShadowPass.shader"); + // g_DepthBuffer = FramebufferDepth::Create(2048, 2048); + // g_ShadowMap = (TextureDepth*)g_DepthBuffer->GetTexture(); + + for (uint i = 0; i < 4; i++) + { + // m_Materials[i]->SetTexture(g_ShadowMap, 6); + // m_Materials[i]->SetUniform("u_ShadowMap", 6); + } + + SP_INFO("Init took ", timer.ElapsedMillis(), " ms"); +} + +void Test3D::OnTick() +{ + Application& app = Application::GetApplication(); + SP_INFO(app.GetUPS(), " ups, ", app.GetFPS(), " fps"); +} + +void Test3D::OnUpdate(const Timestep& ts) +{ + TransformComponent* cubeTransform = m_Cube->GetComponent(); + + mat4 transform = mat4::Translate(vec3(0, 2.5f, 0)) * mat4::Rotate(m_Rotation, vec3(1, 0, 0)) * mat4::Rotate(m_Rotation, vec3(0, 1, 0)) * mat4::Rotate(m_Rotation, vec3(0, 0, 1)); + cubeTransform->transform = mat4::Translate(g_CubeTransform) * transform * mat4::Scale(vec3(1.4f, 1.4f, 1.4f)); + + TransformComponent* dagger = m_Dagger->GetComponent(); + dagger->transform = mat4::Translate(g_DaggerTransform); + + for (Entity* sphere : m_Spheres) + { + TransformComponent* sphereTransform = sphere->GetComponent(); + // sphereTransform->transform = sphereTransform->transform * mat4::Rotate(1.0f, vec3(0, 1, 0)); + } + + // Still OpenGL maths style (column-major) + mat4 vp = m_Scene->GetCamera()->GetProjectionMatrix() * m_Scene->GetCamera()->GetViewMatrix(); + m_SkyboxMaterial->SetUniform("invViewProjMatrix", mat4::Invert(vp)); +} + +void Test3D::OnRender(Renderer3D& renderer) +{ +#if 0 + mat4 depthProjectionMatrix = mat4::Orthographic(-10, 10, -10, 10, -10, 20); + mat4 depthViewMatrix = mat4::LookAt(vec3(0.5f, 0.5f, 2.0f), vec3(), vec3::Up()); + mat4 depthMVP = depthProjectionMatrix * depthViewMatrix; + + g_DepthBuffer->Bind(); + g_DepthBuffer->Clear(); + renderer.Begin(); + for (uint i = 0; i < m_Scene->GetEntities().size(); i++) + { + Entity* e = m_Scene->GetEntities()[i]; + RenderCommand command; + command.mesh = e->GetComponent()->mesh; + command.shader = shadowPassShader; + command.uniforms.push_back({ "ml_matrix", (byte*)&e->GetComponent()->transform }); + command.uniforms.push_back({ "u_DepthMatrix", (byte*)&depthMVP }); + renderer.Submit(command); + } + renderer.End(); + renderer.Present(); + + g_DepthBuffer->Unbind(); + + float elements[4 * 4] = { + 0.5, 0.0, 0.0, 0.0, + 0.0, 0.5, 0.0, 0.0, + 0.0, 0.0, 0.5, 0.0, + 0.5, 0.5, 0.5, 1.0 + }; + mat4 biasMatrix(elements); + mat4 depthBiasMVP = biasMatrix * depthMVP; + + for (Material* material : m_Materials) + material->SetUniform("u_DepthBiasMVP", depthBiasMVP); + +#endif + + //DebugLayer::DrawTexture(m_DaggerMaterial->GetGlossMap()); + Layer3D::OnRender(renderer); +} + +void Test3D::OnEvent(Event& event) +{ + if (event.GetType() == Event::Type::KEY_PRESSED) + { + KeyPressedEvent* kpe = (KeyPressedEvent*)&event; + if (kpe->GetRepeat() == 0) + { + switch (kpe->GetKeyCode()) + { + case SP_KEY_R: + ShaderManager::Reload("AdvancedLighting"); + break; + case SP_KEY_C: + m_Scene->SetCamera(m_Scene->GetCamera() == m_MayaCamera ? m_FPSCamera : m_MayaCamera); + break; + } + } + } + Layer::OnEvent(event); +} diff --git a/Sandbox/src/Test3D.h b/Sandbox/src/Test3D.h new file mode 100644 index 00000000..e32b2a9d --- /dev/null +++ b/Sandbox/src/Test3D.h @@ -0,0 +1,32 @@ +#pragma once + +#include + +class Test3D : public sp::graphics::Layer3D +{ +private: + sp::graphics::Camera* m_MayaCamera; + sp::graphics::Camera* m_FPSCamera; + + sp::entity::Entity* m_Cube; + std::vector m_Spheres; + sp::entity::Entity* m_Plane; + sp::entity::Entity* m_Dagger; + sp::graphics::PBRMaterial* m_DaggerMaterial; + sp::graphics::MaterialInstance* m_SkyboxMaterial; + sp::graphics::Light* m_Light; + float m_Rotation; + bool m_SetUniforms[2]; + std::vector m_Materials; +public: + Test3D(); + ~Test3D(); + + void OnInit(sp::graphics::Renderer3D& renderer, sp::graphics::Scene& scene) override; + + void OnTick() override; + void OnUpdate(const sp::Timestep& ts) override; + void OnEvent(sp::events::Event& event) override; + + void OnRender(sp::graphics::Renderer3D& renderer); +}; \ No newline at end of file diff --git a/SandboxCS/App.config b/SandboxCS/App.config new file mode 100644 index 00000000..8e156463 --- /dev/null +++ b/SandboxCS/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/SandboxCS/SandboxCS.csproj b/SandboxCS/SandboxCS.csproj new file mode 100644 index 00000000..ccf623e3 --- /dev/null +++ b/SandboxCS/SandboxCS.csproj @@ -0,0 +1,57 @@ + + + + + Debug + AnyCPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4} + Exe + Properties + SandboxCS + SandboxCS + v4.5 + 512 + + + AnyCPU + true + full + false + ..\bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + ..\bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + {e5d7b37b-2fc1-48a5-ab8d-54fde9b167fa} + SparkyCLI + + + + + \ No newline at end of file diff --git a/SandboxCS/src/Sandbox.cs b/SandboxCS/src/Sandbox.cs new file mode 100644 index 00000000..dadd185c --- /dev/null +++ b/SandboxCS/src/Sandbox.cs @@ -0,0 +1,17 @@ +using System; + +using SparkyCLI; + +public class Sandbox +{ + public static void Main(string[] args) + { + Window window = new Window("Test", 960, 540); + while (!window.Closed()) + { + Vector2 mouse = window.GetMousePosition(); + Console.WriteLine("{0}, {1}", mouse.x, mouse.y); + window.Update(); + } + } +} \ No newline at end of file diff --git a/Sparky-core/SourceCodePro-Light.ttf b/Sparky-core/SourceCodePro-Light.ttf deleted file mode 100644 index 51eb9630..00000000 Binary files a/Sparky-core/SourceCodePro-Light.ttf and /dev/null differ diff --git a/Sparky-core/Sparky-core.vcxproj b/Sparky-core/Sparky-core.vcxproj index 13d5a030..1c27241b 100644 --- a/Sparky-core/Sparky-core.vcxproj +++ b/Sparky-core/Sparky-core.vcxproj @@ -1,263 +1,817 @@ - - - - - Debug - Win32 - - - Emscripten - Win32 - - - Release - Win32 - - - - {C737C239-3A40-4388-9C61-6CF779025785} - Sparkycore - - - - Application - true - v120 - MultiByte - - - Application - false - v120 - true - MultiByte - - - Application - false - v120 - true - MultiByte - - - - - - - - - - - - - - - - $(SolutionDir)Dependencies\libvorbis\include;$(SolutionDir)Dependencies\OpenAL\include;$(ProjectDir)ext\freetype\include;$(SolutionDir)Dependencies\FreeImage\include;$(SolutionDir)Dependencies\GLEW\include;$(SolutionDir)Dependencies\GLFW\include;$(IncludePath) - $(SolutionDir)Dependencies\libogg\bin;$(SolutionDir)Dependencies\OpenAL\libs\Win32;$(SolutionDir)Dependencies\FreeImage\lib;$(SolutionDir)Dependencies\GLEW\lib;$(SolutionDir)Dependencies\GLFW\lib-vc2013;$(SolutionDir)Dependencies\libvorbis\bin;$(LibraryPath) - $(SolutionDir)bin\$(Configuration)\ - $(SolutionDir)bin\$(Configuration)\Intermediates\ - - - C:\Program Files\Emscripten\emscripten\1.30.0\system\include;$(SolutionDir)Dependencies\libvorbis\include;$(SolutionDir)Dependencies\OpenAL\include;$(ProjectDir)ext\freetype\include;$(SolutionDir)Dependencies\FreeImage\include;$(SolutionDir)Dependencies\GLEW\include;$(SolutionDir)Dependencies\GLFW\include;$(IncludePath) - $(SolutionDir)Dependencies\libogg\bin;$(SolutionDir)Dependencies\OpenAL\libs\Win32;$(SolutionDir)Dependencies\FreeImage\lib;$(SolutionDir)Dependencies\GLEW\lib;$(SolutionDir)Dependencies\GLFW\lib-vc2013;$(SolutionDir)Dependencies\libvorbis\bin;$(LibraryPath) - $(SolutionDir)bin\$(Configuration)\ - $(SolutionDir)bin\$(Configuration)\Intermediates\ - - - $(SolutionDir)Dependencies\libvorbis\include;$(SolutionDir)Dependencies\OpenAL\include;$(ProjectDir)ext\freetype\include;$(SolutionDir)Dependencies\FreeImage\include;$(SolutionDir)Dependencies\GLEW\include;$(SolutionDir)Dependencies\GLFW\include;$(IncludePath) - $(SolutionDir)Dependencies\libogg\bin;$(SolutionDir)Dependencies\OpenAL\libs\Win32;$(SolutionDir)Dependencies\FreeImage\lib;$(SolutionDir)Dependencies\GLEW\lib;$(SolutionDir)Dependencies\GLFW\lib-vc2013;$(SolutionDir)Dependencies\libvorbis\bin;$(LibraryPath) - $(SolutionDir)bin\$(Configuration)\ - $(SolutionDir)bin\$(Configuration)\Intermediates\ - - - - Level3 - Disabled - false - GLEW_STATIC;FT2_BUILD_LIBRARY;WIN32;_LIB;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - UninitializedLocalUsageCheck - - - true - glfw3.lib;glew32s.lib;opengl32.lib;FreeImage.lib;OpenAL32.lib;libvorbis.lib;libogg.lib;%(AdditionalDependencies) - - - - - Level3 - MaxSpeed - true - true - false - GLEW_STATIC;FT2_BUILD_LIBRARY;WIN32;_LIB;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - AnySuitable - Speed - StreamingSIMDExtensions2 - Fast - Default - - - true - true - true - glfw3.lib;glew32s.lib;opengl32.lib;FreeImage.lib;OpenAL32.lib;libvorbis.lib;libogg.lib;%(AdditionalDependencies) - Console - - - - - Level3 - MaxSpeed - true - true - false - SPARKY_EMSCRIPTEN;GLEW_STATIC;FT2_BUILD_LIBRARY;WIN32;_LIB;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - AnySuitable - Speed - StreamingSIMDExtensions2 - Fast - Default - - - true - true - true - glfw3.lib;glew32s.lib;opengl32.lib;FreeImage.lib;OpenAL32.lib;libvorbis.lib;libogg.lib;%(AdditionalDependencies) - Console - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Emscripten + Win32 + + + Release + Win32 + + + + {C737C239-3A40-4388-9C61-6CF779025785} + Sparkycore + 10.0.17763.0 + + + + DynamicLibrary + true + v141 + MultiByte + + + DynamicLibrary + false + v141 + true + MultiByte + + + DynamicLibrary + false + v141 + true + MultiByte + + + + + + + + + + + + + + + + $(SolutionDir)Dependencies\Box2D\src;$(SolutionDir)Dependencies\gorilla-audio\src;$(SolutionDir)Dependencies\FreeType;$(SolutionDir)Dependencies\FreeType\include;$(SolutionDir)Dependencies\FreeImage\include;$(SolutionDir)Dependencies\GLEW\include;$(SolutionDir)Dependencies\GLFW\include;$(IncludePath) + $(SolutionDir)Dependencies\libogg\bin;$(SolutionDir)Dependencies\OpenAL\libs\Win32;$(SolutionDir)Dependencies\GLEW\lib;$(SolutionDir)Dependencies\GLFW\lib-vc2013;$(SolutionDir)Dependencies\libvorbis\bin;$(LibraryPath) + $(SolutionDir)bin\Release\ + $(SolutionDir)bin\Release\Intermediates\$(ProjectName)\ + SPCore + + + C:\Program Files\Emscripten\emscripten\1.30.0\system\include;$(SolutionDir)Dependencies\libvorbis\include;$(SolutionDir)Dependencies\OpenAL\include;$(ProjectDir)ext\freetype\include;$(SolutionDir)Dependencies\FreeImage\include;$(SolutionDir)Dependencies\GLEW\include;$(SolutionDir)Dependencies\GLFW\include;$(IncludePath) + $(SolutionDir)Dependencies\libogg\bin;$(SolutionDir)Dependencies\OpenAL\libs\Win32;$(SolutionDir)Dependencies\GLEW\lib;$(SolutionDir)Dependencies\GLFW\lib-vc2013;$(SolutionDir)Dependencies\libvorbis\bin;$(LibraryPath) + $(SolutionDir)bin\$(Configuration)\ + $(SolutionDir)bin\$(Configuration)\Intermediates\$(ProjectName)\ + SPCore + + + $(SolutionDir)Dependencies\Box2D\src;$(SolutionDir)Dependencies\gorilla-audio\src;$(SolutionDir)Dependencies\FreeType;$(SolutionDir)Dependencies\FreeType\include;$(SolutionDir)Dependencies\FreeImage\include;$(SolutionDir)Dependencies\GLEW\include;$(SolutionDir)Dependencies\GLFW\include;$(IncludePath) + $(SolutionDir)Dependencies\libogg\bin;$(SolutionDir)Dependencies\OpenAL\libs\Win32;$(SolutionDir)Dependencies\GLEW\lib;$(SolutionDir)Dependencies\GLFW\lib-vc2013;$(SolutionDir)Dependencies\libvorbis\bin;$(LibraryPath) + $(SolutionDir)bin\Debug\ + $(SolutionDir)bin\Debug\Intermediates\$(ProjectName)\ + SPCore + + + + Level3 + Disabled + false + SP_PLATFORM_WINDOWS;SP_PLATFORM_WIN32;NOGDI;SP_RENDERAPI_OPENGL;SP_CORE_DLL;FREEIMAGE_LIB;OPJ_STATIC;SP_DEBUG;GLEW_STATIC;_WIN32;WIN32;_LIB;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + UninitializedLocalUsageCheck + src + Use + sp/sp.h + + + true + glew32s.lib;opengl32.lib;d3d11.lib;d3dcompiler.lib;%(AdditionalDependencies) + + + + + xcopy /f /y "$(SolutionDir)Dependencies\FreeImage\bin\FreeImage.dll" "$(SolutionDir)bin\$(Configuration)"\* +xcopy /f /y "$(SolutionDir)Dependencies\OpenAL\bin\x86\OpenAL32.dll" "$(SolutionDir)bin\$(Configuration)"\* + Copying dependencies... + + + + + Level2 + MaxSpeed + true + true + false + SP_PLATFORM_WINDOWS;SP_PLATFORM_WIN32;NOGDI;SP_RENDERAPI_OPENGL;SP_CORE_DLL;FREEIMAGE_LIB;OPJ_STATIC;SPARKY_PLATFORM_WIN32;SP_RELEASE;GLEW_STATIC;WIN32;_LIB;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + AnySuitable + Speed + StreamingSIMDExtensions2 + Fast + Default + src + Use + sp/sp.h + + + true + true + true + glew32s.lib;opengl32.lib;d3d11.lib;d3dcompiler.lib;%(AdditionalDependencies) + Console + + + + + xcopy /f /y "$(SolutionDir)Dependencies\FreeImage\bin\FreeImage.dll" "$(SolutionDir)bin\$(Configuration)"\* +xcopy /f /y "$(SolutionDir)Dependencies\OpenAL\bin\x86\OpenAL32.dll" "$(SolutionDir)bin\$(Configuration)"\* + Copying dependencies... + + + + + Level3 + MaxSpeed + true + true + false + SP_PLATFORM_WINDOWS;SP_PLATFORM_WIN32;NOGDI;SP_RENDERAPI_OPENGL;SP_CORE_DLL;FREEIMAGE_LIB;OPJ_STATIC;SPARKY_PLATFORM_WIN32;SPARKY_PLATFORM_WEB;GLEW_STATIC;FT2_BUILD_LIBRARY;WIN32;_LIB;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + AnySuitable + Speed + StreamingSIMDExtensions2 + Fast + Default + src + Use + sp/sp.h + + + true + true + true + glew32s.lib;opengl32.lib;d3d11.lib;d3dcompiler.lib;%(AdditionalDependencies) + Console + + + + + xcopy /f /y "$(SolutionDir)Dependencies\FreeImage\bin\FreeImage.dll" "$(SolutionDir)bin\$(Configuration)"\* +xcopy /f /y $"(SolutionDir)Dependencies\OpenAL\bin\x86\OpenAL32.dll" "$(SolutionDir)bin\$(Configuration)"\* + Copying dependencies... + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + + + + + false + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + + Create + Create + Create + sp/sp.h + sp/sp.h + sp/sp.h + + + Use + sp/sp.h + Use + sp/sp.h + Use + sp/sp.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {bce9869c-cde3-4935-99ab-4522493ce0b3} + + + {6f2ff135-e343-4138-a6fb-2d1f2540a3f8} + + + {1b0bc2c5-1a09-4017-bdf5-9f9c1718bfe7} + + + {e9a0f826-3688-4461-8e49-7ccc543f9e40} + + + + + true + true + true + + + + + \ No newline at end of file diff --git a/Sparky-core/Sparky-core.vcxproj.filters b/Sparky-core/Sparky-core.vcxproj.filters deleted file mode 100644 index 4b67de38..00000000 --- a/Sparky-core/Sparky-core.vcxproj.filters +++ /dev/null @@ -1,464 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - {a0201be5-0538-47db-adf1-5761367e3df5} - - - {56faf7f8-8254-4f6a-9ad1-27e3a63a4304} - - - {240122e8-ff5a-4859-b6ec-cc5a2e677ec7} - - - {6d325892-0f9e-4423-9203-7f29dc240c15} - - - {1002ad61-f9af-4a60-b4cb-5a4a9d84ec9c} - - - {d6c0ad29-0a77-42a1-b0c3-c475c6794d0c} - - - {e284a0c4-13e2-4486-b802-af8b9570a5d2} - - - {3c225e5b-ea3d-4082-823d-d2d774744af4} - - - {94af0ec4-1384-42f5-a526-526441f15917} - - - {67569db1-5f00-4f44-a9a5-1dd9fffa251d} - - - {27cc6734-61b5-4c2f-a5c7-8f96c0c1eea3} - - - {f66c2c91-4e01-418b-b87f-43c177b2f2b6} - - - {1d69eab3-4f0a-4d51-a587-8572d09a09e1} - - - {c9e9f25f-b4fd-4949-803a-82dd774cf9d4} - - - {78a415a0-0a37-4f92-b336-9f277f70a832} - - - {0bec2cda-dbb2-4ccf-9dab-f155ab912342} - - - {205820f6-83de-482c-83f7-3b9a33c3efc4} - - - {f5d75aa6-e830-4863-9ef4-637649c589e7} - - - {2dd91781-8958-4f9b-b48b-e25c47fdc6d7} - - - {dbaa20e3-07d9-4ee9-a591-7217b603e3bd} - - - {51d9a528-15c2-4272-8e4e-309c4fb1458a} - - - {54ecd7b8-7e95-4776-8c0b-a1ce5dcd7bef} - - - {febda883-2525-4101-a89c-e3b28650dcbb} - - - - - Source Files - - - Source Files\ext\freetype - - - Source Files\ext\freetype - - - Source Files\ext\freetype - - - Source Files\ext\freetype - - - Source Files\ext\freetype - - - Source Files\ext\freetype - - - Source Files\ext\freetype - - - Source Files\ext\freetype - - - Source Files\ext\freetype - - - Source Files\ext\freetype - - - Source Files\ext\freetype - - - Source Files\ext\freetype - - - Source Files\ext\freetype - - - Source Files\ext\freetype - - - Source Files\ext\freetype - - - Source Files\ext\freetype - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype\FT_MODULES - - - Source Files\ext\freetype-gl - - - Source Files\ext\freetype-gl - - - Source Files\ext\freetype-gl - - - Source Files\ext\freetype-gl - - - Source Files\maths - - - Source Files\maths - - - Source Files\maths - - - Source Files\maths - - - Source Files\graphics - - - Source Files\graphics - - - Source Files\graphics - - - Source Files\graphics - - - Source Files\graphics\buffers - - - Source Files\graphics\buffers - - - Source Files\graphics\buffers - - - Source Files\graphics\layers - - - Source Files\graphics\layers - - - Source Files\graphics\renderables - - - Source Files\graphics\renderables - - - Source Files\ext\gorilla-audio - - - Source Files\ext\gorilla-audio - - - Source Files\ext\gorilla-audio - - - Source Files\ext\gorilla-audio - - - Source Files\ext\gorilla-audio - - - Source Files\ext\gorilla-audio - - - Source Files\graphics - - - Source Files\graphics - - - Source Files - - - Source Files\audio - - - Source Files\audio - - - Source Files - - - - - Header Files\ext\freetype - - - Header Files\ext\freetype - - - Header Files\ext\freetype - - - Header Files\ext\freetype - - - Header Files\ext\freetype - - - Header Files\ext\freetype - - - Header Files\ext\freetype-gl - - - Header Files\ext\freetype-gl - - - Header Files\ext\freetype-gl - - - Header Files\ext\freetype-gl - - - Header Files\ext\freetype-gl - - - Header Files\ext\freetype-gl - - - Header Files\ext\freetype-gl - - - Header Files\graphics - - - Header Files\graphics - - - Header Files\graphics - - - Header Files\graphics - - - Header Files\graphics - - - Header Files\utils - - - Header Files\utils - - - Header Files\utils - - - Header Files\maths - - - Header Files\maths - - - Header Files\maths - - - Header Files\maths - - - Header Files\maths - - - Header Files\maths - - - Header Files\graphics\buffers - - - Header Files\graphics\buffers - - - Header Files\graphics\buffers - - - Header Files\graphics\layers - - - Header Files\graphics\layers - - - Header Files\graphics\renderables - - - Header Files\graphics\renderables - - - Header Files\graphics\renderables - - - Header Files\ext\gorilla-audio - - - Header Files\ext\gorilla-audio - - - Header Files\ext\gorilla-audio - - - Header Files\ext\gorilla-audio - - - Header Files\ext\gorilla-audio - - - Header Files\ext\gorilla-audio - - - Header Files\ext\gorilla-audio - - - Header Files\graphics - - - Header Files\graphics - - - Header Files - - - Header Files\audio - - - Header Files\audio - - - Header Files\utils - - - Header Files - - - - - Shaders - - - Shaders - - - Shaders - - - Shaders - - - \ No newline at end of file diff --git a/Sparky-core/SparkyCore-TODO.txt b/Sparky-core/SparkyCore-TODO.txt new file mode 100644 index 00000000..e1c878eb --- /dev/null +++ b/Sparky-core/SparkyCore-TODO.txt @@ -0,0 +1,18 @@ +-------------------- + Sparky Core - TODO +-------------------- + +- Complete event system with additional events (focus, close, resize, etc.) +- Custom Allocators / Memory management (in-progress) +- Really need string formatting! +- DirectX for Windows +- Bring back GLFW for OpenGL (at least on Mac/Linux) +- Font metrics +- Eliminate hard coded projection matrices for 2D layers +- SP_DEBUG macros +- mat3 support +- Better logging. Seriously. +- Check for memory leaks. Likely. +- Some kind of Asset Server. This needs to support things like memory mapping and virtual file systems. +- Hash functions for maths classes +- Raw Input instead of Win32 stuff diff --git a/Sparky-core/examples/game.cpp b/Sparky-core/examples/game.cpp deleted file mode 100644 index 34d2aa3a..00000000 --- a/Sparky-core/examples/game.cpp +++ /dev/null @@ -1,80 +0,0 @@ -#include "../src/sparky.h" - -using namespace sparky; -using namespace graphics; - -class Game : public Sparky -{ -private: - Window* window; - Layer* layer; - Label* fps; - Sprite* sprite; - Shader* shader; -public: - Game() - { - - } - - ~Game() - { - delete layer; - } - - void init() override - { - window = createWindow("Test Game", 960, 540); - FontManager::get()->setScale(window->getWidth() / 32.0f, window->getHeight() / 18.0f); -#ifdef SPARKY_EMSCRIPTEN - shader = new Shader("res/shaders/basic.es3.vert", "res/shaders/basic.es3.frag"); -#else - shader = new Shader("src/shaders/basic.vert", "src/shaders/basic.frag"); -#endif - layer = new Layer(new BatchRenderer2D(), shader, maths::mat4::orthographic(-16.0f, 16.0f, -9.0f, 9.0f, -1.0f, 1.0f)); -#ifdef SPARKY_EMSCRIPTEN - sprite = new Sprite(0.0f, 0.0f, 4, 4, new Texture("res/tb.png")); -#else - sprite = new Sprite(0.0f, 0.0f, 4, 4, new Texture("tb.png")); -#endif - layer->add(sprite); - - fps = new Label("", -15.5f, 7.8f, 0xffffffff); - layer->add(fps); - } - - void tick() override - { - fps->text = std::to_string(getFPS()) + " fps"; - std::cout << getUPS() << " ups, " << getFPS() << " fps" << std::endl; - } - - void update() override - { - float speed = 0.5f; - if (window->isKeyPressed(GLFW_KEY_UP)) - sprite->position.y += speed; - else if (window->isKeyPressed(GLFW_KEY_DOWN)) - sprite->position.y -= speed; - if (window->isKeyPressed(GLFW_KEY_LEFT)) - sprite->position.x -= speed; - else if (window->isKeyPressed(GLFW_KEY_RIGHT)) - sprite->position.x += speed; - - double x, y; - window->getMousePosition(x, y); - shader->setUniform2f("light_pos", maths::vec2((float)(x * 32.0f / window->getWidth() - 16.0f), (float)(9.0f - y * 18.0f / window->getHeight()))); - } - - void render() override - { - layer->render(); - } -}; - -int main() -{ - Game game; - game.start(); - return 0; -} \ No newline at end of file diff --git a/Sparky-core/main.cpp b/Sparky-core/main.cpp deleted file mode 100644 index a7ff87f4..00000000 --- a/Sparky-core/main.cpp +++ /dev/null @@ -1,145 +0,0 @@ -#if 0 - -#include "src/graphics/window.h" -#include "src/graphics/shader.h" -#include "src/maths/maths.h" -#include "src/utils/timer.h" - -#include "src/graphics/renderer2d.h" -#include "src/graphics/batchrenderer2d.h" - -#include "src/graphics/sprite.h" - -#include "src/graphics/buffers/buffer.h" -#include "src/graphics/buffers/indexbuffer.h" -#include "src/graphics/buffers/vertexarray.h" - -#include "src/graphics/layers/group.h" - -#include "src/graphics/font_manager.h" -#include "src/graphics/label.h" -#include "src/graphics/texture.h" - -#include "src/audio/sound_manager.h" - -#include "tilelayer.h" - -int main() -{ - using namespace sparky; - using namespace graphics; - using namespace audio; - using namespace maths; - - Window window("Sparky!", 960, 540); - //glClearColor(0.0f, 1.0f, 1.0f, 1.0f); - - mat4 ortho = mat4::orthographic(0.0f, 16.0f, 0.0f, 9.0f, -1.0f, 1.0f); - - Shader* s = new Shader("src/shaders/basic.vert", "src/shaders/basic.frag"); - Shader& shader = *s; - shader.enable(); - shader.setUniform2f("light_pos", vec2(4.0f, 1.5f)); - - TileLayer layer(&shader); - - Texture* textures[] = - { - new Texture("test.png"), - new Texture("tb.png"), - new Texture("tc.png") - }; - - for (float y = -9.0f; y < 9.0f; y++) - { - for (float x = -16.0f; x < 16.0f; x++) - { - // layer.add(new Sprite(x, y, 0.9f, 0.9f, maths::vec4(rand() % 1000 / 1000.0f, 0, 1, 1))); - int r = rand() % 256; - - int col = 0xffff00 << 8 | r; - if (rand() % 4 == 0) - layer.add(new Sprite(x, y, 0.9f, 0.9f, col)); - else - layer.add(new Sprite(x, y, 0.9f, 0.9f, textures[rand() % 3])); - } - } - - Group* g = new Group(maths::mat4::translation(maths::vec3(-15.8f, 7.0f, 0.0f))); - Label* fps = new Label("", 0.4f, 0.4f, 0xffffffff); - g->add(new Sprite(0, 0, 5, 1.5f, 0x505050DD)); - g->add(fps); - - layer.add(g); - - shader.enable(); - shader.setUniformMat4("pr_matrix", maths::mat4::orthographic(-16.0f, 16.0f, -9.0f, 9.0f, -1.0f, 1.0f)); - - SoundManager::add(new Sound("Test", "Cherno.ogg")); - - Timer time; - float timer = 0; - unsigned int frames = 0; - float t = 0.0f; - float gain = 0.5f; - SoundManager::get("Test")->setGain(gain); - while (!window.closed()) - { - t += 0.001f; - window.clear(); - double x, y; - window.getMousePosition(x, y); - shader.setUniform2f("light_pos", vec2((float)(x * 32.0f / window.getWidth() - 16.0f), (float)(9.0f - y * 18.0f / window.getHeight()))); - layer.render(); - - const std::vector& rs = layer.getRenderables(); - for (int i = 0; i < rs.size(); i++) - { - float c = sin(t) / 2 + 0.5f; - rs[i]->setColor(maths::vec4(c, 0, 1, 1)); - } - - if (window.isKeyTyped(GLFW_KEY_P)) - SoundManager::get("Test")->play(); - - if (window.isKeyTyped(GLFW_KEY_L)) - SoundManager::get("Test")->loop(); - - if (window.isKeyTyped(GLFW_KEY_S)) - SoundManager::get("Test")->stop(); - - if (window.isKeyTyped(GLFW_KEY_1)) - SoundManager::get("Test")->pause(); - - if (window.isKeyTyped(GLFW_KEY_2)) - SoundManager::get("Test")->resume(); - - if (window.isKeyTyped(GLFW_KEY_UP)) - { - gain += 0.05f; - SoundManager::get("Test")->setGain(gain); - } - - if (window.isKeyTyped(GLFW_KEY_DOWN)) - { - gain -= 0.05f; - SoundManager::get("Test")->setGain(gain); - } - - window.update(); - frames++; - if (time.elapsed() - timer > 1.0f) - { - timer += 1.0f; - fps->text = std::to_string(frames) + " fps"; - printf("%d fps\n", frames); - frames = 0; - } - } - for (int i = 0; i < 3; i++) - delete textures[i]; - - return 0; -} - -#endif \ No newline at end of file diff --git a/Sparky-core/src/Sparky.h b/Sparky-core/src/Sparky.h new file mode 100644 index 00000000..911efd12 --- /dev/null +++ b/Sparky-core/src/Sparky.h @@ -0,0 +1,95 @@ +#pragma once + +// +// Sparky Engine header file +// + +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include diff --git a/Sparky-core/src/audio/sound.h b/Sparky-core/src/audio/sound.h deleted file mode 100644 index 37d59603..00000000 --- a/Sparky-core/src/audio/sound.h +++ /dev/null @@ -1,58 +0,0 @@ -#pragma once - -#include -#include - -#include "../utils/stringutils.h" - -#ifdef SPARKY_EMSCRIPTEN - #include -#else - #include "../../ext/gorilla-audio/ga.h" - #include "../../ext/gorilla-audio/gau.h" -#endif - -namespace sparky { namespace audio { - - class Sound - { - private: - std::string m_Name; - std::string m_Filename; - -#ifdef SPARKY_EMSCRIPTEN -#else - ga_Sound* m_Sound; - ga_Handle* m_Handle; - gc_int32 m_Position; -#endif - - bool m_Playing; - float m_Gain; - public: - Sound(const std::string& name, const std::string& filename); - ~Sound(); - - - void play(); - void loop(); - void pause(); - void resume(); - void stop(); - - void setGain(float gain); - - inline const bool isPlaying() const { return m_Playing; } - inline const float getGain() const { return m_Gain; } - inline const std::string& getName() const { return m_Name; } - inline const std::string& getFileName() const { return m_Filename; } - -#ifdef SPARKY_EMSCRIPTEN -#else - friend void destroy_on_finish(ga_Handle* in_handle, void* in_context); - friend void loop_on_finish(ga_Handle* in_handle, void* in_context); -#endif - - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/audio/sound_manager.cpp b/Sparky-core/src/audio/sound_manager.cpp deleted file mode 100644 index dccb34e5..00000000 --- a/Sparky-core/src/audio/sound_manager.cpp +++ /dev/null @@ -1,57 +0,0 @@ -#include "sound_manager.h" - -namespace sparky { namespace audio { - -#ifndef SPARKY_EMSCRIPTEN - gau_Manager* SoundManager::m_Manager = nullptr; - ga_Mixer* SoundManager::m_Mixer = nullptr; -#endif - - std::vector SoundManager::m_Sounds; - - void SoundManager::init() - { -#ifdef SPARKY_EMSCRIPTEN -#else - gc_initialize(0); - m_Manager = gau_manager_create(); - m_Mixer = gau_manager_mixer(m_Manager); -#endif - } - - void SoundManager::add(Sound* sound) - { - m_Sounds.push_back(sound); - } - - Sound* SoundManager::get(const std::string& name) - { - for (Sound* sound : m_Sounds) - { - if (sound->getName() == name) - return sound; - } - return nullptr; - } - - void SoundManager::clean() - { - for (int i = 0; i < m_Sounds.size(); i++) - delete m_Sounds[i]; - -#ifdef SPARKY_EMSCRIPTEN -#else - gau_manager_destroy(m_Manager); - gc_shutdown(); -#endif - } - - void SoundManager::update() - { -#ifdef SPARKY_EMSCRIPTEN -#else - gau_manager_update(m_Manager); -#endif - } - -} } \ No newline at end of file diff --git a/Sparky-core/src/audio/sound_manager.h b/Sparky-core/src/audio/sound_manager.h deleted file mode 100644 index 6b4af745..00000000 --- a/Sparky-core/src/audio/sound_manager.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include - -#include "sound.h" - -#define GAU_THREAD_POLICY_MULTI 2 -#include "../../ext/gorilla-audio/ga.h" -#include "../../ext/gorilla-audio/gau.h" - -namespace sparky { namespace audio { - - class SoundManager - { - private: - friend class Sound; - - static gau_Manager* m_Manager; - static ga_Mixer* m_Mixer; - - static std::vector m_Sounds; - public: - static void init(); - static void add(Sound* sound); - static Sound* get(const std::string& name); - static void update(); - static void clean(); - private: - SoundManager() { } - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/BatchRenderer2D.cpp b/Sparky-core/src/graphics/BatchRenderer2D.cpp deleted file mode 100644 index e794bc5c..00000000 --- a/Sparky-core/src/graphics/BatchRenderer2D.cpp +++ /dev/null @@ -1,256 +0,0 @@ -#include "BatchRenderer2D.h" - -namespace sparky { namespace graphics { - - BatchRenderer2D::BatchRenderer2D() - { - init(); - } - - BatchRenderer2D::~BatchRenderer2D() - { - delete m_IBO; - glDeleteBuffers(1, &m_VBO); - } - - void BatchRenderer2D::init() - { - glGenVertexArrays(1, &m_VAO); - glGenBuffers(1, &m_VBO); - - glBindVertexArray(m_VAO); - glBindBuffer(GL_ARRAY_BUFFER, m_VBO); - glBufferData(GL_ARRAY_BUFFER, RENDERER_BUFFER_SIZE, NULL, GL_DYNAMIC_DRAW); - - glEnableVertexAttribArray(SHADER_VERTEX_INDEX); - glEnableVertexAttribArray(SHADER_UV_INDEX); - glEnableVertexAttribArray(SHADER_TID_INDEX); - glEnableVertexAttribArray(SHADER_COLOR_INDEX); - - glVertexAttribPointer(SHADER_VERTEX_INDEX, 3, GL_FLOAT, GL_FALSE, RENDERER_VERTEX_SIZE, (const GLvoid*)0); - glVertexAttribPointer(SHADER_UV_INDEX, 2, GL_FLOAT, GL_FALSE, RENDERER_VERTEX_SIZE, (const GLvoid*)(offsetof(VertexData, uv))); - glVertexAttribPointer(SHADER_TID_INDEX, 1, GL_FLOAT, GL_FALSE, RENDERER_VERTEX_SIZE, (const GLvoid*)(offsetof(VertexData, tid))); - glVertexAttribPointer(SHADER_COLOR_INDEX, 4, GL_UNSIGNED_BYTE, GL_TRUE, RENDERER_VERTEX_SIZE, (const GLvoid*)(offsetof(VertexData, color))); - - glBindBuffer(GL_ARRAY_BUFFER, 0); - - GLuint* indices = new GLuint[RENDERER_INDICES_SIZE]; - - int offset = 0; - for (int i = 0; i < RENDERER_INDICES_SIZE; i += 6) - { - indices[ i ] = offset + 0; - indices[i + 1] = offset + 1; - indices[i + 2] = offset + 2; - - indices[i + 3] = offset + 2; - indices[i + 4] = offset + 3; - indices[i + 5] = offset + 0; - - offset += 4; - } - - m_IBO = new IndexBuffer(indices, RENDERER_INDICES_SIZE); - - glBindVertexArray(0); - -#ifdef SPARKY_EMSCRIPTEN - m_BufferBase = new VertexData[RENDERER_MAX_SPRITES * 4]; -#endif - - } - - void BatchRenderer2D::begin() - { - glBindBuffer(GL_ARRAY_BUFFER, m_VBO); -#ifdef SPARKY_EMSCRIPTEN - m_Buffer = m_BufferBase; -#else - m_Buffer = (VertexData*)glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY); -#endif - } - - void BatchRenderer2D::submit(const Renderable2D* renderable) - { - const maths::vec3& position = renderable->getPosition(); - const maths::vec2& size = renderable->getSize(); - const unsigned int color = renderable->getColor(); - const std::vector& uv = renderable->getUV(); - const GLuint tid = renderable->getTID(); - - float ts = 0.0f; - if (tid > 0) - { - bool found = false; - for (int i = 0; i < m_TextureSlots.size(); i++) - { - if (m_TextureSlots[i] == tid) - { - ts = (float)(i + 1); - found = true; - break; - } - } - - if (!found) - { - if (m_TextureSlots.size() >= RENDERER_MAX_TEXTURES) - { - end(); - flush(); - begin(); - } - m_TextureSlots.push_back(tid); - ts = (float)(m_TextureSlots.size()); - } - } - - m_Buffer->vertex = *m_TransformationBack * position; - m_Buffer->uv = uv[0]; - m_Buffer->tid = ts; - m_Buffer->color = color; - m_Buffer++; - - m_Buffer->vertex = *m_TransformationBack * maths::vec3(position.x, position.y + size.y, position.z); - m_Buffer->uv = uv[1]; - m_Buffer->tid = ts; - m_Buffer->color = color; - m_Buffer++; - - m_Buffer->vertex = *m_TransformationBack * maths::vec3(position.x + size.x, position.y + size.y, position.z); - m_Buffer->uv = uv[2]; - m_Buffer->tid = ts; - m_Buffer->color = color; - m_Buffer++; - - m_Buffer->vertex = *m_TransformationBack * maths::vec3(position.x + size.x, position.y, position.z); - m_Buffer->uv = uv[3]; - m_Buffer->tid = ts; - m_Buffer->color = color; - m_Buffer++; - - m_IndexCount += 6; - } - - void BatchRenderer2D::drawString(const std::string& text, const maths::vec3& position, const Font& font, unsigned int color) - { - using namespace ftgl; - - float ts = 0.0f; - bool found = false; - for (int i = 0; i < m_TextureSlots.size(); i++) - { - if (m_TextureSlots[i] == font.getID()) - { - ts = (float)(i + 1); - found = true; - break; - } - } - - if (!found) - { - if (m_TextureSlots.size() >= 32) - { - end(); - flush(); - begin(); - } - m_TextureSlots.push_back(font.getID()); - ts = (float)(m_TextureSlots.size()); - } - - const maths::vec2& scale = font.getScale(); - - float x = position.x; - - texture_font_t* ftFont = font.getFTFont(); - - for (int i = 0; i < text.length(); i++) - { - char c = text[i]; - texture_glyph_t* glyph = texture_font_get_glyph(ftFont, c); - if (glyph != NULL) - { - - if (i > 0) - { - float kerning = texture_glyph_get_kerning(glyph, text[i - 1]); - x += kerning / scale.x; - } - - float x0 = x + glyph->offset_x / scale.x; - float y0 = position.y + glyph->offset_y / scale.y; - float x1 = x0 + glyph->width / scale.x; - float y1 = y0 - glyph->height / scale.y; - - float u0 = glyph->s0; - float v0 = glyph->t0; - float u1 = glyph->s1; - float v1 = glyph->t1; - - m_Buffer->vertex = *m_TransformationBack * maths::vec3(x0, y0, 0); - m_Buffer->uv = maths::vec2(u0, v0); - m_Buffer->tid = ts; - m_Buffer->color = color; - m_Buffer++; - - m_Buffer->vertex = *m_TransformationBack * maths::vec3(x0, y1, 0); - m_Buffer->uv = maths::vec2(u0, v1); - m_Buffer->tid = ts; - m_Buffer->color = color; - m_Buffer++; - - m_Buffer->vertex = *m_TransformationBack * maths::vec3(x1, y1, 0); - m_Buffer->uv = maths::vec2(u1, v1); - m_Buffer->tid = ts; - m_Buffer->color = color; - m_Buffer++; - - m_Buffer->vertex = *m_TransformationBack * maths::vec3(x1, y0, 0); - m_Buffer->uv = maths::vec2(u1, v0); - m_Buffer->tid = ts; - m_Buffer->color = color; - m_Buffer++; - - m_IndexCount += 6; - - x += glyph->advance_x / scale.x; - } - - } - } - - void BatchRenderer2D::end() - { -#ifdef SPARKY_EMSCRIPTEN - glBindBuffer(GL_ARRAY_BUFFER, m_VBO); - glBufferSubData(GL_ARRAY_BUFFER, 0, (m_Buffer - m_BufferBase) * RENDERER_VERTEX_SIZE, m_BufferBase); - m_Buffer = m_BufferBase; -#else - glUnmapBuffer(GL_ARRAY_BUFFER); -#endif - glBindBuffer(GL_ARRAY_BUFFER, 0); - } - - void BatchRenderer2D::flush() - { - for (int i = 0; i < m_TextureSlots.size(); i++) - { - glActiveTexture(GL_TEXTURE0 + i); - glBindTexture(GL_TEXTURE_2D, m_TextureSlots[i]); - } - - glBindVertexArray(m_VAO); - m_IBO->bind(); - - glDrawElements(GL_TRIANGLES, m_IndexCount, GL_UNSIGNED_INT, NULL); - - m_IBO->unbind(); - glBindVertexArray(0); - - m_IndexCount = 0; - m_TextureSlots.clear(); - } - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/BatchRenderer2D.h b/Sparky-core/src/graphics/BatchRenderer2D.h deleted file mode 100644 index b2c37854..00000000 --- a/Sparky-core/src/graphics/BatchRenderer2D.h +++ /dev/null @@ -1,48 +0,0 @@ -#pragma once - -#include - -#include "renderer2d.h" -#include "renderable2d.h" - -#include "buffers/indexbuffer.h" - -namespace sparky { namespace graphics { - -#define RENDERER_MAX_SPRITES 60000 -#define RENDERER_VERTEX_SIZE sizeof(VertexData) -#define RENDERER_SPRITE_SIZE RENDERER_VERTEX_SIZE * 4 -#define RENDERER_BUFFER_SIZE RENDERER_SPRITE_SIZE * RENDERER_MAX_SPRITES -#define RENDERER_INDICES_SIZE RENDERER_MAX_SPRITES * 6 -#define RENDERER_MAX_TEXTURES 32 - -#define SHADER_VERTEX_INDEX 0 -#define SHADER_UV_INDEX 1 -#define SHADER_TID_INDEX 2 -#define SHADER_COLOR_INDEX 3 - - class BatchRenderer2D : public Renderer2D - { - private: - GLuint m_VAO; - GLuint m_VBO; - IndexBuffer* m_IBO; - GLsizei m_IndexCount; - VertexData* m_Buffer; -#ifdef SPARKY_EMSCRIPTEN - VertexData* m_BufferBase; -#endif - std::vector m_TextureSlots; - public: - BatchRenderer2D(); - ~BatchRenderer2D(); - void begin() override; - void submit(const Renderable2D* renderable) override; - void drawString(const std::string& text, const maths::vec3& position, const Font& font, unsigned int color) override; - void end() override; - void flush() override; - private: - void init(); - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/buffers/buffer.cpp b/Sparky-core/src/graphics/buffers/buffer.cpp deleted file mode 100644 index dca030cf..00000000 --- a/Sparky-core/src/graphics/buffers/buffer.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#include "buffer.h" - -namespace sparky { namespace graphics { - - Buffer::Buffer(GLfloat* data, GLsizei count, GLuint componentCount) - : m_ComponentCount(componentCount) - { - glGenBuffers(1, &m_BufferID); - glBindBuffer(GL_ARRAY_BUFFER, m_BufferID); - glBufferData(GL_ARRAY_BUFFER, count * sizeof(GLfloat), data, GL_STATIC_DRAW); - glBindBuffer(GL_ARRAY_BUFFER, 0); - } - - Buffer::~Buffer() - { - glDeleteBuffers(1, &m_BufferID); - } - - void Buffer::bind() const - { - glBindBuffer(GL_ARRAY_BUFFER, m_BufferID); - } - - void Buffer::unbind() const - { - glBindBuffer(GL_ARRAY_BUFFER, 0); - } - - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/buffers/buffer.h b/Sparky-core/src/graphics/buffers/buffer.h deleted file mode 100644 index a6545da6..00000000 --- a/Sparky-core/src/graphics/buffers/buffer.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#ifdef SPARKY_EMSCRIPTEN - #define GLFW_INCLUDE_ES3 - #include -#else - #include -#endif - -namespace sparky { namespace graphics { - - class Buffer - { - private: - GLuint m_BufferID; - GLuint m_ComponentCount; - public: - Buffer(GLfloat* data, GLsizei count, GLuint componentCount); - ~Buffer(); - void bind() const; - void unbind() const; - - inline GLuint getComponentCount() const { return m_ComponentCount; } - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/buffers/indexbuffer.cpp b/Sparky-core/src/graphics/buffers/indexbuffer.cpp deleted file mode 100644 index 608f0de5..00000000 --- a/Sparky-core/src/graphics/buffers/indexbuffer.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include "indexbuffer.h" - -namespace sparky { namespace graphics { - - IndexBuffer::IndexBuffer(GLushort* data, GLsizei count) - : m_Count(count) - { - glGenBuffers(1, &m_BufferID); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_BufferID); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, count * sizeof(GLushort), data, GL_STATIC_DRAW); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - } - - IndexBuffer::IndexBuffer(GLuint* data, GLsizei count) - : m_Count(count) - { - glGenBuffers(1, &m_BufferID); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_BufferID); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, count * sizeof(GLuint), data, GL_STATIC_DRAW); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - } - - IndexBuffer::~IndexBuffer() - { - glDeleteBuffers(1, &m_BufferID); - } - - void IndexBuffer::bind() const - { - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_BufferID); - } - - void IndexBuffer::unbind() const - { - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - } - - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/buffers/indexbuffer.h b/Sparky-core/src/graphics/buffers/indexbuffer.h deleted file mode 100644 index b29fab74..00000000 --- a/Sparky-core/src/graphics/buffers/indexbuffer.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#ifdef SPARKY_EMSCRIPTEN - #define GLFW_INCLUDE_ES3 - #include -#else - #include -#endif - -namespace sparky { namespace graphics { - - class IndexBuffer - { - private: - GLuint m_BufferID; - GLuint m_Count; - public: - IndexBuffer(GLushort* data, GLsizei count); - IndexBuffer(GLuint* data, GLsizei count); - ~IndexBuffer(); - void bind() const; - void unbind() const; - - inline GLuint getCount() const { return m_Count; } - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/buffers/vertexarray.cpp b/Sparky-core/src/graphics/buffers/vertexarray.cpp deleted file mode 100644 index ed6411c0..00000000 --- a/Sparky-core/src/graphics/buffers/vertexarray.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include "vertexarray.h" - -namespace sparky { namespace graphics { - - VertexArray::VertexArray() - { - glGenVertexArrays(1, &m_ArrayID); - } - - VertexArray::~VertexArray() - { - for (int i = 0; i < m_Buffers.size(); i++) - delete m_Buffers[i]; - - glDeleteVertexArrays(1, &m_ArrayID); - } - - void VertexArray::addBuffer(Buffer* buffer, GLuint index) - { - bind(); - buffer->bind(); - - glEnableVertexAttribArray(index); - glVertexAttribPointer(index, buffer->getComponentCount(), GL_FLOAT, GL_FALSE, 0, 0); - - buffer->unbind(); - unbind(); - - m_Buffers.push_back(buffer); - } - - void VertexArray::bind() const - { - glBindVertexArray(m_ArrayID); - } - - void VertexArray::unbind() const - { - glBindVertexArray(0); - } - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/buffers/vertexarray.h b/Sparky-core/src/graphics/buffers/vertexarray.h deleted file mode 100644 index 62048d2c..00000000 --- a/Sparky-core/src/graphics/buffers/vertexarray.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include -#ifdef SPARKY_EMSCRIPTEN - #define GLFW_INCLUDE_ES3 - #include -#else - #include -#endif - -#include "buffer.h" - -namespace sparky { namespace graphics { - - class VertexArray - { - private: - GLuint m_ArrayID; - std::vector m_Buffers; - public: - VertexArray(); - ~VertexArray(); - - void addBuffer(Buffer* buffer, GLuint index); - void bind() const; - void unbind() const; - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/font.cpp b/Sparky-core/src/graphics/font.cpp deleted file mode 100644 index 5002edfd..00000000 --- a/Sparky-core/src/graphics/font.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#include "font.h" - -namespace sparky { namespace graphics { - - Font::Font(std::string name, std::string filename, int size) - : m_Name(name), m_Filename(filename), m_Size(size) - { - m_FTAtlas = ftgl::texture_atlas_new(512, 512, 2); - m_FTFont = ftgl::texture_font_new_from_file(m_FTAtlas, size, filename.c_str()); - } - - void Font::setScale(float x, float y) - { - m_Scale = maths::vec2(x, y); - } - - - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/font.h b/Sparky-core/src/graphics/font.h deleted file mode 100644 index 85bf7a04..00000000 --- a/Sparky-core/src/graphics/font.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include -#include "../maths/vec2.h" -#include "../../ext/freetype-gl/freetype-gl.h" - -namespace sparky { namespace graphics { - - class Font - { - private: - ftgl::texture_atlas_t* m_FTAtlas; - ftgl::texture_font_t* m_FTFont; - unsigned int m_Size; - maths::vec2 m_Scale; - std::string m_Name; - std::string m_Filename; - public: - Font(std::string name, std::string filename, int size); - - void setScale(float x, float y); - - inline ftgl::texture_font_t* getFTFont() const { return m_FTFont; } - - inline const unsigned int getID() const { return m_FTAtlas->id; } - inline const maths::vec2& getScale() const { return m_Scale; } - inline const std::string& getName() const { return m_Name; } - inline const std::string& getFileName() const { return m_Filename; } - inline const int getSize() const { return m_Size; } - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/font_manager.cpp b/Sparky-core/src/graphics/font_manager.cpp deleted file mode 100644 index 27d03f1f..00000000 --- a/Sparky-core/src/graphics/font_manager.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include "font_manager.h" - -namespace sparky { namespace graphics { - - std::vector FontManager::m_Fonts; - - void FontManager::add(Font* font) - { - m_Fonts.push_back(font); - } - - Font* FontManager::get() - { - return m_Fonts[0]; - } - - Font* FontManager::get(const std::string& name) - { - for (Font* font : m_Fonts) - { - if (font->getName() == name) - return font; - } - // TODO: Maybe return a default font instead? - return nullptr; - } - - Font* FontManager::get(const std::string& name, unsigned int size) - { - for (Font* font : m_Fonts) - { - if (font->getSize() == size && font->getName() == name) - return font; - } - // TODO: Maybe return a default font instead? - return nullptr; - } - - void FontManager::clean() - { - for (int i = 0; i < m_Fonts.size(); i++) - delete m_Fonts[i]; - } - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/font_manager.h b/Sparky-core/src/graphics/font_manager.h deleted file mode 100644 index 066ad50d..00000000 --- a/Sparky-core/src/graphics/font_manager.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include -#include "font.h" - -namespace sparky { namespace graphics { - - class FontManager - { - private: - static std::vector m_Fonts; - public: - static void add(Font* font); - static Font* get(); - static Font* get(const std::string& name); - static Font* get(const std::string& name, unsigned int size); - static void clean(); - private: - FontManager() { } - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/label.cpp b/Sparky-core/src/graphics/label.cpp deleted file mode 100644 index 171594e2..00000000 --- a/Sparky-core/src/graphics/label.cpp +++ /dev/null @@ -1,56 +0,0 @@ -#include "label.h" - -namespace sparky { namespace graphics { - - Label::Label(std::string text, float x, float y, unsigned int color) - : Renderable2D(), text(text), position(m_Position), m_Font(FontManager::get("SourceSansPro")) - { - m_Position = maths::vec3(x, y, 0.0f); - m_Color = color; - } - - Label::Label(std::string text, float x, float y, Font* font, unsigned int color) - : Renderable2D(), text(text), position(m_Position), m_Font(font) - { - m_Position = maths::vec3(x, y, 0.0f); - m_Color = color; - } - - Label::Label(std::string text, float x, float y, const std::string& font, unsigned int color) - : Renderable2D(), text(text), position(m_Position), m_Font(FontManager::get(font)) - { - m_Position = maths::vec3(x, y, 0.0f); - m_Color = color; - - validateFont(font); - } - - Label::Label(std::string text, float x, float y, const std::string& font, unsigned int size, unsigned int color) - : Renderable2D(), text(text), position(m_Position), m_Font(FontManager::get(font, size)) - { - m_Position = maths::vec3(x, y, 0.0f); - m_Color = color; - - validateFont(font, size); - } - - void Label::submit(Renderer2D* renderer) const - { - renderer->drawString(text, position, *m_Font, m_Color); - } - - void Label::validateFont(const std::string& name, int size) - { - if (m_Font != nullptr) - return; - - std::cout << "NULL FONT! Font=" << name; - if (size > 0) - std::cout << ", Size=" << size; - std::cout << std::endl; - - m_Font = FontManager::get("SourceSansPro"); - } - - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/label.h b/Sparky-core/src/graphics/label.h deleted file mode 100644 index cb21f80a..00000000 --- a/Sparky-core/src/graphics/label.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include "renderable2d.h" -#include "font_manager.h" - -namespace sparky { namespace graphics { - - class Label : public Renderable2D - { - public: - Font* m_Font; - std::string text; - maths::vec3& position; - float x, y; - public: - Label(std::string text, float x, float y, unsigned int color); - Label(std::string text, float x, float y, Font* font, unsigned int color); - Label(std::string text, float x, float y, const std::string& font, unsigned int color); - Label(std::string text, float x, float y, const std::string& font, unsigned int size, unsigned int color); - void submit(Renderer2D* renderer) const override; - void validateFont(const std::string& name, int size = -1); - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/layers/group.cpp b/Sparky-core/src/graphics/layers/group.cpp deleted file mode 100644 index 53a291f2..00000000 --- a/Sparky-core/src/graphics/layers/group.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include "group.h" - -namespace sparky { namespace graphics { - - Group::Group(const maths::mat4& transform) - : m_TransformationMatrix(transform) - { - } - - Group::~Group() - { - for (int i = 0; i < m_Renderables.size(); i++) - delete m_Renderables[i]; - } - - void Group::add(Renderable2D* renderable) - { - m_Renderables.push_back(renderable); - } - - void Group::submit(Renderer2D* renderer) const - { - renderer->push(m_TransformationMatrix); - - for (const Renderable2D* renderable : m_Renderables) - renderable->submit(renderer); - - renderer->pop(); - } - - - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/layers/group.h b/Sparky-core/src/graphics/layers/group.h deleted file mode 100644 index bcb7ec56..00000000 --- a/Sparky-core/src/graphics/layers/group.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include "../renderable2d.h" - -namespace sparky { namespace graphics { - - class Group : public Renderable2D - { - private: - std::vector m_Renderables; - maths::mat4 m_TransformationMatrix; - public: - Group(const maths::mat4& transform); - ~Group(); - void add(Renderable2D* renderable); - void submit(Renderer2D* renderer) const override; - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/layers/layer.cpp b/Sparky-core/src/graphics/layers/layer.cpp deleted file mode 100644 index 08de634b..00000000 --- a/Sparky-core/src/graphics/layers/layer.cpp +++ /dev/null @@ -1,60 +0,0 @@ -#include "layer.h" - -namespace sparky { namespace graphics { - - Layer::Layer(Renderer2D* renderer, Shader* shader, maths::mat4 projectionMatrix) - : m_Renderer(renderer), m_Shader(shader), m_ProjectionMatrix(projectionMatrix) - { - m_Shader->enable(); - m_Shader->setUniformMat4("pr_matrix", m_ProjectionMatrix); - -#ifdef SPARKY_EMSCRIPTEN - m_Shader->setUniform1i("texture_0", 0); - m_Shader->setUniform1i("texture_1", 1); - m_Shader->setUniform1i("texture_2", 2); - m_Shader->setUniform1i("texture_3", 3); - m_Shader->setUniform1i("texture_4", 4); - m_Shader->setUniform1i("texture_5", 5); - m_Shader->setUniform1i("texture_6", 6); - m_Shader->setUniform1i("texture_7", 7); -#else - GLint texIDs[] = - { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31 - }; - - m_Shader->setUniform1iv("textures", texIDs, 32); -#endif - m_Shader->disable(); - } - - Layer::~Layer() - { - delete m_Shader; - delete m_Renderer; - - for (int i = 0; i < m_Renderables.size(); i++) - delete m_Renderables[i]; - } - - void Layer::add(Renderable2D* renderable) - { - m_Renderables.push_back(renderable); - } - - void Layer::render() - { - m_Shader->enable(); - m_Renderer->begin(); - - for (const Renderable2D* renderable : m_Renderables) - renderable->submit(m_Renderer); - - m_Renderer->end(); - m_Renderer->flush(); - } - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/layers/layer.h b/Sparky-core/src/graphics/layers/layer.h deleted file mode 100644 index dd18187d..00000000 --- a/Sparky-core/src/graphics/layers/layer.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include "../renderer2d.h" -#include "../renderable2d.h" - -namespace sparky { namespace graphics { - - class Layer - { - protected: - Renderer2D* m_Renderer; - std::vector m_Renderables; - Shader* m_Shader; - maths::mat4 m_ProjectionMatrix; - public: - Layer(Renderer2D* renderer, Shader* shader, maths::mat4 projectionMatrix); - virtual ~Layer(); - virtual void add(Renderable2D* renderable); - virtual void render(); - - inline const std::vector& getRenderables() const { return m_Renderables; } - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/renderable2d.h b/Sparky-core/src/graphics/renderable2d.h deleted file mode 100644 index d2919c2b..00000000 --- a/Sparky-core/src/graphics/renderable2d.h +++ /dev/null @@ -1,72 +0,0 @@ -#pragma once - -#include "buffers/buffer.h" -#include "buffers/indexbuffer.h" -#include "buffers/vertexarray.h" - -#include "renderer2d.h" -#include "texture.h" - -#include "../maths/maths.h" -#include "shader.h" - -namespace sparky { namespace graphics { - - struct VertexData - { - maths::vec3 vertex; - maths::vec2 uv; - float tid; - unsigned int color; - }; - - class Renderable2D - { - protected: - maths::vec3 m_Position; - maths::vec2 m_Size; - unsigned int m_Color; - std::vector m_UV; - Texture* m_Texture; - protected: - Renderable2D() : m_Texture(nullptr) { setUVDefaults(); } - public: - Renderable2D(maths::vec3 position, maths::vec2 size, unsigned int color) - : m_Position(position), m_Size(size), m_Color(color), m_Texture(nullptr) - { setUVDefaults(); } - - virtual ~Renderable2D() { } - - virtual void submit(Renderer2D* renderer) const - { - renderer->submit(this); - } - - void setColor(unsigned int color) { m_Color = color; } - void setColor(const maths::vec4& color) - { - int r = color.x * 255.0f; - int g = color.y * 255.0f; - int b = color.z * 255.0f; - int a = color.w * 255.0f; - - m_Color = a << 24 | b << 16 | g << 8 | r; - } - - inline const maths::vec3& getPosition() const { return m_Position; } - inline const maths::vec2& getSize() const { return m_Size; } - inline const unsigned int getColor() const { return m_Color; } - inline const std::vector& getUV() const { return m_UV; } - - inline const GLuint getTID() const { return m_Texture ? m_Texture->getID() : 0; } - private: - void setUVDefaults() - { - m_UV.push_back(maths::vec2(0, 0)); - m_UV.push_back(maths::vec2(0, 1)); - m_UV.push_back(maths::vec2(1, 1)); - m_UV.push_back(maths::vec2(1, 0)); - } - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/renderer2d.h b/Sparky-core/src/graphics/renderer2d.h deleted file mode 100644 index 7143a184..00000000 --- a/Sparky-core/src/graphics/renderer2d.h +++ /dev/null @@ -1,56 +0,0 @@ -#pragma once - -#include -#ifdef SPARKY_EMSCRIPTEN - #define GLFW_INCLUDE_ES3 - #include -#else - #include -#endif -#include "font.h" -#include "../maths/maths.h" - - -namespace sparky { namespace graphics { - - class Renderable2D; - - class Renderer2D - { - protected: - std::vector m_TransformationStack; - const maths::mat4* m_TransformationBack; - protected: - Renderer2D() - { - m_TransformationStack.push_back(maths::mat4::identity()); - m_TransformationBack = &m_TransformationStack.back(); - } - public: - virtual ~Renderer2D() { } - void push(const maths::mat4& matrix, bool override = false) - { - if (override) - m_TransformationStack.push_back(matrix); - else - m_TransformationStack.push_back(m_TransformationStack.back() * matrix); - - m_TransformationBack = &m_TransformationStack.back(); - } - void pop() - { - // TODO: Add to log! - if (m_TransformationStack.size() > 1) - m_TransformationStack.pop_back(); - - m_TransformationBack = &m_TransformationStack.back(); - } - - virtual void begin() {} - virtual void submit(const Renderable2D* renderable) = 0; - virtual void drawString(const std::string& text, const maths::vec3& position, const Font& font, unsigned int color) { } - virtual void end() {} - virtual void flush() = 0; - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/shader.cpp b/Sparky-core/src/graphics/shader.cpp deleted file mode 100644 index a9012978..00000000 --- a/Sparky-core/src/graphics/shader.cpp +++ /dev/null @@ -1,126 +0,0 @@ -#include "shader.h" - -namespace sparky { namespace graphics { - - Shader::Shader(const char* vertPath, const char* fragPath) - : m_VertPath(vertPath), m_FragPath(fragPath) - { - m_ShaderID = load(); - } - - Shader::~Shader() - { - glDeleteProgram(m_ShaderID); - } - - GLuint Shader::load() - { - GLuint program = glCreateProgram(); - GLuint vertex = glCreateShader(GL_VERTEX_SHADER); - GLuint fragment = glCreateShader(GL_FRAGMENT_SHADER); - - std::string vertSourceString = read_file(m_VertPath); - std::string fragSourceString = read_file(m_FragPath); - - const char* vertSource = vertSourceString.c_str(); - const char* fragSource = fragSourceString.c_str(); - - glShaderSource(vertex, 1, &vertSource, NULL); - glCompileShader(vertex); - - GLint result; - glGetShaderiv(vertex, GL_COMPILE_STATUS, &result); - if (result == GL_FALSE) - { - GLint length; - glGetShaderiv(vertex, GL_INFO_LOG_LENGTH, &length); - std::vector error(length); - glGetShaderInfoLog(vertex, length, &length, &error[0]); - std::cout << "Failed to compile vertex shader!" << std::endl << &error[0] << std::endl; - glDeleteShader(vertex); - return 0; - } - - glShaderSource(fragment, 1, &fragSource, NULL); - glCompileShader(fragment); - - glGetShaderiv(fragment, GL_COMPILE_STATUS, &result); - if (result == GL_FALSE) - { - GLint length; - glGetShaderiv(fragment, GL_INFO_LOG_LENGTH, &length); - std::vector error(length); - glGetShaderInfoLog(fragment, length, &length, &error[0]); - std::cout << "Failed to compile fragment shader!" << std::endl << &error[0] << std::endl; - glDeleteShader(fragment); - return 0; - } - - glAttachShader(program, vertex); - glAttachShader(program, fragment); - - glLinkProgram(program); - glValidateProgram(program); - - glDeleteShader(vertex); - glDeleteShader(fragment); - - return program; - } - - GLint Shader::getUniformLocation(const GLchar* name) - { - return glGetUniformLocation(m_ShaderID, name); - } - - void Shader::setUniform1f(const GLchar* name, float value) - { - glUniform1f(getUniformLocation(name), value); - } - - void Shader::setUniform1fv(const GLchar* name, float* value, int count) - { - glUniform1fv(getUniformLocation(name), count, value); - } - - void Shader::setUniform1i(const GLchar* name, int value) - { - glUniform1i(getUniformLocation(name), value); - } - - void Shader::setUniform1iv(const GLchar* name, int* value, int count) - { - glUniform1iv(getUniformLocation(name), count, value); - } - - void Shader::setUniform2f(const GLchar* name, const maths::vec2& vector) - { - glUniform2f(getUniformLocation(name), vector.x, vector.y); - } - - void Shader::setUniform3f(const GLchar* name, const maths::vec3& vector) - { - glUniform3f(getUniformLocation(name), vector.x, vector.y, vector.z); - } - - void Shader::setUniform4f(const GLchar* name, const maths::vec4& vector) - { - glUniform4f(getUniformLocation(name), vector.x, vector.y, vector.z, vector.w); - } - - void Shader::setUniformMat4(const GLchar* name, const maths::mat4& matrix) - { - glUniformMatrix4fv(getUniformLocation(name), 1, GL_FALSE, matrix.elements); - } - - void Shader::enable() const - { - glUseProgram(m_ShaderID); - } - - void Shader::disable() const - { - glUseProgram(0); - } - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/shader.h b/Sparky-core/src/graphics/shader.h deleted file mode 100644 index 0147ce87..00000000 --- a/Sparky-core/src/graphics/shader.h +++ /dev/null @@ -1,45 +0,0 @@ -#pragma once - -#include -#include - -#ifdef SPARKY_EMSCRIPTEN - #define GLFW_INCLUDE_ES3 - #include -#else - #include -#endif - -#include "../maths/maths.h" -#include "../utils/fileutils.h" - -namespace sparky { namespace graphics { - - class Shader - { - private: - const char* m_VertPath; - const char* m_FragPath; - public: - GLuint m_ShaderID; - Shader(const char* vertPath, const char* fragPath); - ~Shader(); - - - void setUniform1f(const GLchar* name, float value); - void setUniform1fv(const GLchar* name, float* value, int count); - void setUniform1i(const GLchar* name, int value); - void setUniform1iv(const GLchar* name, int* value, int count); - void setUniform2f(const GLchar* name, const maths::vec2& vector); - void setUniform3f(const GLchar* name, const maths::vec3& vector); - void setUniform4f(const GLchar* name, const maths::vec4& vector); - void setUniformMat4(const GLchar* name, const maths::mat4& matrix); - - void enable() const; - void disable() const; - private: - GLuint load(); - GLint getUniformLocation(const GLchar* name); - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/sprite.cpp b/Sparky-core/src/graphics/sprite.cpp deleted file mode 100644 index a0c09d52..00000000 --- a/Sparky-core/src/graphics/sprite.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "sprite.h" - -namespace sparky { namespace graphics { - - Sprite::Sprite(float x, float y, float width, float height, unsigned int color) - : Renderable2D(maths::vec3(x, y, 0), maths::vec2(width, height), color), position(m_Position) - { - - } - - Sprite::Sprite(float x, float y, float width, float height, Texture* texture) - : Renderable2D(maths::vec3(x, y, 0), maths::vec2(width, height), 0xffffffff), position(m_Position) - { - m_Texture = texture; - } - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/sprite.h b/Sparky-core/src/graphics/sprite.h deleted file mode 100644 index 04e8586e..00000000 --- a/Sparky-core/src/graphics/sprite.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include "renderable2d.h" - -namespace sparky { namespace graphics { - - class Sprite : public Renderable2D - { - public: - maths::vec3& position; - public: - Sprite(float x, float y, float width, float height, unsigned int color); - Sprite(float x, float y, float width, float height, Texture* texture); - }; - -} } diff --git a/Sparky-core/src/graphics/texture.cpp b/Sparky-core/src/graphics/texture.cpp deleted file mode 100644 index f525ad89..00000000 --- a/Sparky-core/src/graphics/texture.cpp +++ /dev/null @@ -1,47 +0,0 @@ -#include "texture.h" - -namespace sparky { namespace graphics { - - Texture::Texture(const std::string& filename) - : m_FileName(filename) - { - m_TID = load(); - } - - Texture::~Texture() - { - - } - - GLuint Texture::load() - { - BYTE* pixels = load_image(m_FileName.c_str(), &m_Width, &m_Height); - - GLuint result; - glGenTextures(1, &result); - glBindTexture(GL_TEXTURE_2D, result); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); -#ifdef SPARKY_EMSCRIPTEN - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, m_Width, m_Height, 0, GL_RGB, GL_UNSIGNED_BYTE, pixels); -#else - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, m_Width, m_Height, 0, GL_BGR, GL_UNSIGNED_BYTE, pixels); -#endif - glBindTexture(GL_TEXTURE_2D, 0); - - delete[] pixels; - - return result; - } - - void Texture::bind() const - { - glBindTexture(GL_TEXTURE_2D, m_TID); - } - - void Texture::unbind() const - { - glBindTexture(GL_TEXTURE_2D, 0); - } - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/texture.h b/Sparky-core/src/graphics/texture.h deleted file mode 100644 index b3353afc..00000000 --- a/Sparky-core/src/graphics/texture.h +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once - -#include -#include - -#ifdef SPARKY_EMSCRIPTEN - #define GLFW_INCLUDE_ES3 - #include -#else - #include -#endif - -#include "../utils/ImageLoad.h" - -namespace sparky { namespace graphics{ - - class Texture - { - private: - std::string m_FileName; - GLuint m_TID; - GLsizei m_Width, m_Height; - public: - Texture(const std::string& filename); - ~Texture(); - void bind() const; - void unbind() const; - - inline const unsigned int getID() const { return m_TID; } - inline const unsigned int getWidth() const { return m_Width; } - inline const unsigned int getHeight() const { return m_Height; } - private: - GLuint load(); - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/window.cpp b/Sparky-core/src/graphics/window.cpp deleted file mode 100644 index 3344e2e6..00000000 --- a/Sparky-core/src/graphics/window.cpp +++ /dev/null @@ -1,188 +0,0 @@ -#include "window.h" - -namespace sparky { namespace graphics { - - void window_resize(GLFWwindow* window, int width, int height); - void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods); - void mouse_button_callback(GLFWwindow* window, int button, int action, int mods); - void cursor_position_callback(GLFWwindow* window, double xpos, double ypos); - - Window::Window(const char *title, int width, int height) - { - m_Title = title; - m_Width = width; - m_Height = height; - if (!init()) - glfwTerminate(); - -#ifdef SPARKY_EMSCRIPTEN - FontManager::add(new Font("SourceSansPro", "res/SourceSansPro-Light.ttf", 32)); -#else - FontManager::add(new Font("SourceSansPro", "SourceSansPro-Light.ttf", 32)); -#endif - -#ifdef SPARKY_EMSCRIPTEN - FreeImage_Initialise(); -#endif - - audio::SoundManager::init(); - - for (int i = 0; i < MAX_KEYS; i++) - { - m_Keys[i] = false; - m_KeyState[i] = false; - m_KeyTyped[i] = false; - } - - for (int i = 0; i < MAX_BUTTONS; i++) - { - m_MouseButtons[i] = false; - m_MouseState[i] = false; - m_MouseClicked[i] = false; - } - } - - Window::~Window() - { - FontManager::clean(); - audio::SoundManager::clean(); - glfwTerminate(); - } - - bool Window::init() - { - if (!glfwInit()) - { - std::cout << "Failed to initialize GLFW!" << std::endl; - return false; - } - m_Window = glfwCreateWindow(m_Width, m_Height, m_Title, NULL, NULL); - if (!m_Window) - { - std::cout << "Failed to create GLFW window!" << std::endl; - return false; - } - glfwMakeContextCurrent(m_Window); - glfwSetWindowUserPointer(m_Window, this); - glfwSetFramebufferSizeCallback(m_Window, window_resize); - glfwSetKeyCallback(m_Window, key_callback); - glfwSetMouseButtonCallback(m_Window, mouse_button_callback); - glfwSetCursorPosCallback(m_Window, cursor_position_callback); - glfwSwapInterval(0.0); - -#ifndef SPARKY_EMSCRIPTEN - if (glewInit() != GLEW_OK) - { - std::cout << "Could not initialize GLEW!" << std::endl; - return false; - } -#endif - - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - std::cout << "OpenGL " << glGetString(GL_VERSION) << std::endl; - return true; - } - - bool Window::isKeyPressed(unsigned int keycode) const - { - // TODO: Log this! - if (keycode >= MAX_KEYS) - return false; - - return m_Keys[keycode]; - } - - bool Window::isKeyTyped(unsigned int keycode) const - { - // TODO: Log this! - if (keycode >= MAX_KEYS) - return false; - - return m_KeyTyped[keycode]; - } - - bool Window::isMouseButtonPressed(unsigned int button) const - { - // TODO: Log this! - if (button >= MAX_BUTTONS) - return false; - - return m_MouseButtons[button]; - } - - bool Window::isMouseButtonClicked(unsigned int button) const - { - // TODO: Log this! - if (button >= MAX_BUTTONS) - return false; - - return m_MouseClicked[button]; - } - - void Window::getMousePosition(double& x, double& y) const - { - x = mx; - y = my; - } - - void Window::clear() const - { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - } - - void Window::update() - { - for (int i = 0; i < MAX_KEYS; i++) - m_KeyTyped[i] = m_Keys[i] && !m_KeyState[i]; - - for (int i = 0; i < MAX_BUTTONS; i++) - m_MouseClicked[i] = m_MouseButtons[i] && !m_MouseState[i]; - - memcpy(m_KeyState, m_Keys, MAX_KEYS); - memcpy(m_MouseState, m_MouseButtons, MAX_BUTTONS); - - GLenum error = glGetError(); - if (error != GL_NO_ERROR) - std::cout << "OpenGL Error: " << error << std::endl; - - glfwPollEvents(); - glfwSwapBuffers(m_Window); - - audio::SoundManager::update(); - } - - bool Window::closed() const - { - return glfwWindowShouldClose(m_Window) == 1; - } - - void window_resize(GLFWwindow *window, int width, int height) - { - glViewport(0, 0, width, height); - Window* win = (Window*)glfwGetWindowUserPointer(window); - win->m_Width = width; - win->m_Height = height; - } - - void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) - { - Window* win = (Window*)glfwGetWindowUserPointer(window); - win->m_Keys[key] = action != GLFW_RELEASE; - } - - void mouse_button_callback(GLFWwindow* window, int button, int action, int mods) - { - Window* win = (Window*)glfwGetWindowUserPointer(window); - win->m_MouseButtons[button] = action != GLFW_RELEASE; - } - - void cursor_position_callback(GLFWwindow* window, double xpos, double ypos) - { - Window* win = (Window*)glfwGetWindowUserPointer(window); - win->mx = xpos; - win->my = ypos; - } - -} } \ No newline at end of file diff --git a/Sparky-core/src/graphics/window.h b/Sparky-core/src/graphics/window.h deleted file mode 100644 index 9d3143bb..00000000 --- a/Sparky-core/src/graphics/window.h +++ /dev/null @@ -1,60 +0,0 @@ -#pragma once - -#include - -#ifdef SPARKY_EMSCRIPTEN - #define GLFW_INCLUDE_ES3 - #include -#else - #include -#endif - -#include - -#include "font_manager.h" -#include "../audio/sound_manager.h" - -namespace sparky { namespace graphics { - -#define MAX_KEYS 1024 -#define MAX_BUTTONS 32 - - class Window - { - private: - const char *m_Title; - int m_Width, m_Height; - GLFWwindow *m_Window; - bool m_Closed; - - bool m_Keys[MAX_KEYS]; - bool m_KeyState[MAX_KEYS]; - bool m_KeyTyped[MAX_KEYS]; - bool m_MouseButtons[MAX_BUTTONS]; - bool m_MouseState[MAX_BUTTONS]; - bool m_MouseClicked[MAX_BUTTONS]; - double mx, my; - public: - Window(const char *name, int width, int height); - ~Window(); - void clear() const; - void update(); - bool closed() const; - - inline int getWidth() const { return m_Width; } - inline int getHeight() const { return m_Height; } - - bool isKeyPressed(unsigned int keycode) const; - bool isKeyTyped(unsigned int keycode) const; - bool isMouseButtonPressed(unsigned int button) const; - bool isMouseButtonClicked(unsigned int button) const; - void getMousePosition(double& x, double& y) const; - private: - bool init(); - friend void window_resize(GLFWwindow* window, int width, int height); - friend void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods); - friend void mouse_button_callback(GLFWwindow* window, int button, int action, int mods); - friend void cursor_position_callback(GLFWwindow* window, double xpos, double ypos); - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/maths/mat4.h b/Sparky-core/src/maths/mat4.h deleted file mode 100644 index dbcc40bd..00000000 --- a/Sparky-core/src/maths/mat4.h +++ /dev/null @@ -1,48 +0,0 @@ -#pragma once - -#include "vec3.h" -#include "vec4.h" -#include "maths_func.h" - -namespace sparky { namespace maths { - - struct mat4 - { - union - { - float elements[4 * 4]; - vec4 columns[4]; - }; - - mat4(); - mat4(float diagonal); - - vec4 getColumn(int index) - { - index *= 4; - return vec4(elements[index], elements[index + 1], elements[index + 2], elements[index + 3]); - } - - static mat4 identity(); - - mat4& multiply(const mat4& other); - friend mat4 operator*(mat4 left, const mat4& right); - mat4& operator*=(const mat4& other); - - vec3 multiply(const vec3& other) const; - friend vec3 operator*(const mat4& left, const vec3& right); - - vec4 multiply(const vec4& other) const; - friend vec4 operator*(const mat4& left, const vec4& right); - - mat4& invert(); - - static mat4 orthographic(float left, float right, float bottom, float top, float near, float far); - static mat4 perspective(float fov, float aspectRatio, float near, float far); - - static mat4 translation(const vec3& translation); - static mat4 rotation(float angle, const vec3& axis); - static mat4 scale(const vec3& scale); - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/maths/maths.h b/Sparky-core/src/maths/maths.h deleted file mode 100644 index 141ecf62..00000000 --- a/Sparky-core/src/maths/maths.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -#include -#include "maths_func.h" -#include "vec2.h" -#include "vec3.h" -#include "vec4.h" -#include "mat4.h" \ No newline at end of file diff --git a/Sparky-core/src/maths/maths_func.h b/Sparky-core/src/maths/maths_func.h deleted file mode 100644 index 90ce09e9..00000000 --- a/Sparky-core/src/maths/maths_func.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#define _USE_MATH_DEFINES -#include - -namespace sparky { namespace maths { - - inline float toRadians(float degrees) - { - return degrees * (M_PI / 180.0f); - } - -} } \ No newline at end of file diff --git a/Sparky-core/src/maths/vec2.cpp b/Sparky-core/src/maths/vec2.cpp deleted file mode 100644 index 65f3452d..00000000 --- a/Sparky-core/src/maths/vec2.cpp +++ /dev/null @@ -1,106 +0,0 @@ -#include "vec2.h" - -namespace sparky { namespace maths { - - vec2::vec2() - { - x = 0.0f; - y = 0.0f; - } - - vec2::vec2(const float& x, const float& y) - { - this->x = x; - this->y = y; - } - - vec2& vec2::add(const vec2& other) - { - x += other.x; - y += other.y; - - return *this; - } - - vec2& vec2::subtract(const vec2& other) - { - x -= other.x; - y -= other.y; - - return *this; - } - - vec2& vec2::multiply(const vec2& other) - { - x *= other.x; - y *= other.y; - - return *this; - } - - vec2& vec2::divide(const vec2& other) - { - x /= other.x; - y /= other.y; - - return *this; - } - - vec2 operator+(vec2 left, const vec2& right) - { - return left.add(right); - } - - vec2 operator-(vec2 left, const vec2& right) - { - return left.subtract(right); - } - - vec2 operator*(vec2 left, const vec2& right) - { - return left.multiply(right); - } - - vec2 operator/(vec2 left, const vec2& right) - { - return left.divide(right); - } - - vec2& vec2::operator+=(const vec2& other) - { - return add(other); - } - - vec2& vec2::operator-=(const vec2& other) - { - return subtract(other); - } - - vec2& vec2::operator*=(const vec2& other) - { - return multiply(other); - } - - vec2& vec2::operator/=(const vec2& other) - { - return divide(other); - } - - bool vec2::operator==(const vec2& other) - { - return x == other.x && y == other.y; - } - - bool vec2::operator!=(const vec2& other) - { - return !(*this == other); - } - - std::ostream& operator<<(std::ostream& stream, const vec2& vector) - { - stream << "vec2: (" << vector.x << ", " << vector.y << ")"; - return stream; - } - - -} } \ No newline at end of file diff --git a/Sparky-core/src/maths/vec2.h b/Sparky-core/src/maths/vec2.h deleted file mode 100644 index da76eb45..00000000 --- a/Sparky-core/src/maths/vec2.h +++ /dev/null @@ -1,35 +0,0 @@ -#pragma once - -#include - -namespace sparky { namespace maths { - - struct vec2 - { - float x, y; - - vec2(); - vec2(const float& x, const float& y); - - vec2& add(const vec2& other); - vec2& subtract(const vec2& other); - vec2& multiply(const vec2& other); - vec2& divide(const vec2& other); - - friend vec2 operator+(vec2 left, const vec2& right); - friend vec2 operator-(vec2 left, const vec2& right); - friend vec2 operator*(vec2 left, const vec2& right); - friend vec2 operator/(vec2 left, const vec2& right); - - bool operator==(const vec2& other); - bool operator!=(const vec2& other); - - vec2& operator+=(const vec2& other); - vec2& operator-=(const vec2& other); - vec2& operator*=(const vec2& other); - vec2& operator/=(const vec2& other); - - friend std::ostream& operator<<(std::ostream& stream, const vec2& vector); - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/maths/vec3.cpp b/Sparky-core/src/maths/vec3.cpp deleted file mode 100644 index d7920a80..00000000 --- a/Sparky-core/src/maths/vec3.cpp +++ /dev/null @@ -1,112 +0,0 @@ -#include "vec3.h" - -namespace sparky { namespace maths { - - vec3::vec3() - { - x = 0.0f; - y = 0.0f; - z = 0.0f; - } - - vec3::vec3(const float& x, const float& y, const float& z) - { - this->x = x; - this->y = y; - this->z = z; - } - - vec3& vec3::add(const vec3& other) - { - x += other.x; - y += other.y; - z += other.z; - - return *this; - } - - vec3& vec3::subtract(const vec3& other) - { - x -= other.x; - y -= other.y; - z -= other.z; - - return *this; - } - - vec3& vec3::multiply(const vec3& other) - { - x *= other.x; - y *= other.y; - z *= other.z; - - return *this; - } - - vec3& vec3::divide(const vec3& other) - { - x /= other.x; - y /= other.y; - z /= other.z; - - return *this; - } - - vec3 operator+(vec3 left, const vec3& right) - { - return left.add(right); - } - - vec3 operator-(vec3 left, const vec3& right) - { - return left.subtract(right); - } - - vec3 operator*(vec3 left, const vec3& right) - { - return left.multiply(right); - } - - vec3 operator/(vec3 left, const vec3& right) - { - return left.divide(right); - } - - vec3& vec3::operator+=(const vec3& other) - { - return add(other); - } - - vec3& vec3::operator-=(const vec3& other) - { - return subtract(other); - } - - vec3& vec3::operator*=(const vec3& other) - { - return multiply(other); - } - - vec3& vec3::operator/=(const vec3& other) - { - return divide(other); - } - - bool vec3::operator==(const vec3& other) - { - return x == other.x && y == other.y && z == other.z; - } - - bool vec3::operator!=(const vec3& other) - { - return !(*this == other); - } - - std::ostream& operator<<(std::ostream& stream, const vec3& vector) - { - stream << "vec3: (" << vector.x << ", " << vector.y << ", " << vector.z << ")"; - return stream; - } - - -} } \ No newline at end of file diff --git a/Sparky-core/src/maths/vec3.h b/Sparky-core/src/maths/vec3.h deleted file mode 100644 index 42ff6905..00000000 --- a/Sparky-core/src/maths/vec3.h +++ /dev/null @@ -1,35 +0,0 @@ -#pragma once - -#include - -namespace sparky { namespace maths { - - struct vec3 - { - float x, y, z; - - vec3(); - vec3(const float& x, const float& y, const float& z); - - vec3& add(const vec3& other); - vec3& subtract(const vec3& other); - vec3& multiply(const vec3& other); - vec3& divide(const vec3& other); - - friend vec3 operator+(vec3 left, const vec3& right); - friend vec3 operator-(vec3 left, const vec3& right); - friend vec3 operator*(vec3 left, const vec3& right); - friend vec3 operator/(vec3 left, const vec3& right); - - bool operator==(const vec3& other); - bool operator!=(const vec3& other); - - vec3& operator+=(const vec3& other); - vec3& operator-=(const vec3& other); - vec3& operator*=(const vec3& other); - vec3& operator/=(const vec3& other); - - friend std::ostream& operator<<(std::ostream& stream, const vec3& vector); - }; - -} } \ No newline at end of file diff --git a/Sparky-core/src/maths/vec4.cpp b/Sparky-core/src/maths/vec4.cpp deleted file mode 100644 index c1cb1af9..00000000 --- a/Sparky-core/src/maths/vec4.cpp +++ /dev/null @@ -1,110 +0,0 @@ -#include "vec4.h" - -namespace sparky { namespace maths { - - vec4::vec4(const float& x, const float& y, const float& z, const float& w) - { - this->x = x; - this->y = y; - this->z = z; - this->w = w; - } - - vec4& vec4::add(const vec4& other) - { - x += other.x; - y += other.y; - z += other.z; - w += other.w; - - return *this; - } - - vec4& vec4::subtract(const vec4& other) - { - x -= other.x; - y -= other.y; - z -= other.z; - w -= other.w; - - return *this; - } - - vec4& vec4::multiply(const vec4& other) - { - x *= other.x; - y *= other.y; - z *= other.z; - w *= other.w; - - return *this; - } - - vec4& vec4::divide(const vec4& other) - { - x /= other.x; - y /= other.y; - z /= other.z; - w /= other.w; - - return *this; - } - - vec4 operator+(vec4 left, const vec4& right) - { - return left.add(right); - } - - vec4 operator-(vec4 left, const vec4& right) - { - return left.subtract(right); - } - - vec4 operator*(vec4 left, const vec4& right) - { - return left.multiply(right); - } - - vec4 operator/(vec4 left, const vec4& right) - { - return left.divide(right); - } - - vec4& vec4::operator+=(const vec4& other) - { - return add(other); - } - - vec4& vec4::operator-=(const vec4& other) - { - return subtract(other); - } - - vec4& vec4::operator*=(const vec4& other) - { - return multiply(other); - } - - vec4& vec4::operator/=(const vec4& other) - { - return divide(other); - } - - bool vec4::operator==(const vec4& other) - { - return x == other.x && y == other.y && z == other.z && w == other.w; - } - - bool vec4::operator!=(const vec4& other) - { - return !(*this == other); - } - - std::ostream& operator<<(std::ostream& stream, const vec4& vector) - { - stream << "vec4: (" << vector.x << ", " << vector.y << ", " << vector.z << ", " << vector.w << ")"; - return stream; - } - - -} } \ No newline at end of file diff --git a/Sparky-core/src/shaders/basic.es3.frag b/Sparky-core/src/shaders/basic.es3.frag deleted file mode 100644 index 5666e533..00000000 --- a/Sparky-core/src/shaders/basic.es3.frag +++ /dev/null @@ -1,45 +0,0 @@ -precision highp float; - -uniform highp vec4 colour; -uniform highp vec2 light_pos; - -varying highp vec4 vs_position; -varying highp vec2 vs_uv; -varying highp float vs_tid; -varying highp vec4 vs_color; - -uniform sampler2D texture_0; -uniform sampler2D texture_1; -uniform sampler2D texture_2; -uniform sampler2D texture_3; -uniform sampler2D texture_4; -uniform sampler2D texture_5; -uniform sampler2D texture_6; -uniform sampler2D texture_7; - -void main() -{ - float intensity = 1.0 / length(vs_position.xy - light_pos); - vec4 texColor = vs_color; - if (vs_tid > 0.0) - { - int tid = int(vs_tid - 0.5); - if (tid == 0) - texColor = vs_color * texture2D(texture_0, vs_uv); - else if (tid == 1) - texColor = vs_color * texture2D(texture_1, vs_uv); - else if (tid == 2) - texColor = vs_color * texture2D(texture_2, vs_uv); - else if (tid == 3) - texColor = vs_color * texture2D(texture_3, vs_uv); - else if (tid == 4) - texColor = vs_color * texture2D(texture_4, vs_uv); - else if (tid == 5) - texColor = vs_color * texture2D(texture_5, vs_uv); - else if (tid == 6) - texColor = vs_color * texture2D(texture_6, vs_uv); - else if (tid == 7) - texColor = vs_color * texture2D(texture_7, vs_uv); - } - gl_FragColor = texColor * intensity; -} \ No newline at end of file diff --git a/Sparky-core/src/shaders/basic.es3.vert b/Sparky-core/src/shaders/basic.es3.vert deleted file mode 100644 index e83a489e..00000000 --- a/Sparky-core/src/shaders/basic.es3.vert +++ /dev/null @@ -1,22 +0,0 @@ -attribute highp vec4 position; -attribute highp vec2 uv; -attribute highp float tid; -attribute highp vec4 color; - -uniform highp mat4 pr_matrix; -uniform highp mat4 vw_matrix; -uniform highp mat4 ml_matrix; - -varying highp vec4 vs_position; -varying highp vec2 vs_uv; -varying highp float vs_tid; -varying highp vec4 vs_color; - -void main() -{ - gl_Position = pr_matrix * position; - vs_position = position; - vs_uv = uv; - vs_tid = tid; - vs_color = color; -} \ No newline at end of file diff --git a/Sparky-core/src/shaders/basic.frag b/Sparky-core/src/shaders/basic.frag deleted file mode 100644 index 07d15999..00000000 --- a/Sparky-core/src/shaders/basic.frag +++ /dev/null @@ -1,28 +0,0 @@ -#version 330 core - -layout (location = 0) out vec4 color; - -uniform vec4 colour; -uniform vec2 light_pos; - -in DATA -{ - vec4 position; - vec2 uv; - float tid; - vec4 color; -} fs_in; - -uniform sampler2D textures[32]; - -void main() -{ - float intensity = 1.0 / length(fs_in.position.xy - light_pos); - vec4 texColor = fs_in.color; - if (fs_in.tid > 0.0) - { - int tid = int(fs_in.tid - 0.5); - texColor = fs_in.color * texture(textures[tid], fs_in.uv); - } - color = texColor * intensity; -} \ No newline at end of file diff --git a/Sparky-core/src/shaders/basic.vert b/Sparky-core/src/shaders/basic.vert deleted file mode 100644 index 9ff325ac..00000000 --- a/Sparky-core/src/shaders/basic.vert +++ /dev/null @@ -1,27 +0,0 @@ -#version 330 core - -layout (location = 0) in vec4 position; -layout (location = 1) in vec2 uv; -layout (location = 2) in float tid; -layout (location = 3) in vec4 color; - -uniform mat4 pr_matrix; -uniform mat4 vw_matrix = mat4(1.0); -uniform mat4 ml_matrix = mat4(1.0); - -out DATA -{ - vec4 position; - vec2 uv; - float tid; - vec4 color; -} vs_out; - -void main() -{ - gl_Position = pr_matrix * vw_matrix * ml_matrix * position; - vs_out.position = ml_matrix * position; - vs_out.uv = uv; - vs_out.tid = tid; - vs_out.color = color; -} \ No newline at end of file diff --git a/Sparky-core/src/sp/Common.h b/Sparky-core/src/sp/Common.h new file mode 100644 index 00000000..26c23b17 --- /dev/null +++ b/Sparky-core/src/sp/Common.h @@ -0,0 +1,24 @@ +#pragma once +#pragma warning (disable:4251) + +#ifdef SP_PLATFORM_WINDOWS + #ifdef SP_CORE_DLL + #define SP_API __declspec(dllexport) + #else + #define SP_API __declspec(dllimport) + #endif +#else + #define SP_API +#endif + +// Common defines +#define BIT(x) (1 << x) + +#define METHOD_1(x) std::bind(x, this, std::placeholders::_1) +#define METHOD(x) METHOD_1(x) + +#ifdef SP_DEBUG + #define SP_DEBUG_METHOD_V(x) x; +#else + #define SP_DEBUG_METHOD_V(x) x {} +#endif \ No newline at end of file diff --git a/Sparky-core/src/sp/Scene2D.cpp b/Sparky-core/src/sp/Scene2D.cpp new file mode 100644 index 00000000..a5809a31 --- /dev/null +++ b/Sparky-core/src/sp/Scene2D.cpp @@ -0,0 +1,82 @@ +#include "sp/sp.h" +#include "Scene2D.h" + +#include "app/Application.h" +#include "sp/debug/DebugRenderer.h" + +namespace sp { + + using namespace graphics; + using namespace maths; + + using namespace entity; + using namespace component; + + Scene2D::Scene2D() + { + float width = Application::GetApplication().GetWindowWidth(); + float height = Application::GetApplication().GetWindowHeight(); + float aspect = width / height; + + m_Camera = spnew OrthographicCamera(mat4::Orthographic(-10.0f * aspect, 10.0f * aspect, -10.0f, 10.0f, -1.0f, 1.0f)); + m_Renderer = spnew Renderer2D(width, height); + m_Renderer->SetCamera(m_Camera); + } + + Scene2D::Scene2D(const mat4& projectionMatrix) + : m_Camera(spnew OrthographicCamera(projectionMatrix)) + { + float width = Application::GetApplication().GetWindowWidth(); + float height = Application::GetApplication().GetWindowHeight(); + + m_Renderer = spnew Renderer2D(width, height); + m_Renderer->SetCamera(m_Camera); + } + + Scene2D::~Scene2D() + { + spdel m_Camera; + } + + void Scene2D::Add(Entity* entity) + { + m_Entities.push_back(entity); + } + + void Scene2D::OnUpdate() + { + // for (uint i = 0; i < m_Entities.size(); i++) + // m_Entities[i] + } + + void Scene2D::OnRender(Renderer2D& renderer) + { + + } + + void Scene2D::OnRender() + { + Camera* camera = m_Camera; + camera->Update(); + debug::DebugRenderer::SetCamera(camera); + + m_Renderer->Begin(); + for (uint i = 0; i < m_Entities.size(); i++) + { + Entity* entity = m_Entities[i]; + SpriteComponent* sprite = entity->GetComponent(); + if (sprite) + { + TransformComponent* tc = entity->GetComponent(); + SP_ASSERT(tc, "Sprite does not have transform!"); // Sprites MUST have transforms + sprite->sprite->Submit(m_Renderer); + } + + } + OnRender(*m_Renderer); + + m_Renderer->End(); + m_Renderer->Present(); + } + +} \ No newline at end of file diff --git a/Sparky-core/src/sp/Scene2D.h b/Sparky-core/src/sp/Scene2D.h new file mode 100644 index 00000000..c7312672 --- /dev/null +++ b/Sparky-core/src/sp/Scene2D.h @@ -0,0 +1,33 @@ +#pragma once + +#include "sp/sp.h" +#include "graphics/camera/OrthographicCamera.h" +#include "graphics/Renderer2D.h" +#include "entity/Entity.h" + +namespace sp { + + class SP_API Scene2D + { + private: + graphics::OrthographicCamera* m_Camera; + graphics::Renderer2D* m_Renderer; + + std::vector m_Entities; + public: + Scene2D(); + Scene2D(const maths::mat4& projectionMatrix); + ~Scene2D(); + + void Add(entity::Entity* entity); + + virtual void OnUpdate(); + virtual void OnRender(graphics::Renderer2D& renderer); + + void OnRender(); + + inline graphics::Renderer2D* GetRenderer() { return m_Renderer; } + inline graphics::OrthographicCamera* GetCamera() { return m_Camera; } + }; + +} \ No newline at end of file diff --git a/Sparky-core/src/sp/String.cpp b/Sparky-core/src/sp/String.cpp new file mode 100644 index 00000000..b8382726 --- /dev/null +++ b/Sparky-core/src/sp/String.cpp @@ -0,0 +1,137 @@ +#include "sp/sp.h" +#include "String.h" + +namespace sp { + + char* StringFormat::s_Buffer = new char[STRINGFORMAT_BUFFER_SIZE]; + + std::vector SplitString(const String& string, const String& delimiters) + { + size_t start = 0; + size_t end = string.find_first_of(delimiters); + + std::vector result; + + while (end <= String::npos) + { + String token = string.substr(start, end - start); + if (!token.empty()) + result.push_back(token); + + if (end == String::npos) + break; + + start = end + 1; + end = string.find_first_of(delimiters, start); + } + + return result; + } + + std::vector SplitString(const String& string, const char delimiter) + { + return SplitString(string, String(1, delimiter)); + } + + std::vector Tokenize(const String& string) + { + return SplitString(string, " \t\n"); + } + + std::vector GetLines(const String& string) + { + return SplitString(string, "\n"); + } + + const char* FindToken(const char* str, const String& token) + { + const char* t = str; + while (t = strstr(t, token.c_str())) + { + bool left = str == t || isspace(t[-1]); + bool right = !t[token.size()] || isspace(t[token.size()]); + if (left && right) + return t; + + t += token.size(); + } + return nullptr; + } + + const char* FindToken(const String& string, const String& token) + { + return FindToken(string.c_str(), token); + } + + int32 FindStringPosition(const String& string, const String& search, uint offset) + { + const char* str = string.c_str() + offset; + const char* found = strstr(str, search.c_str()); + if (found == nullptr) + return -1; + return (int32)(found - str) + offset; + } + + String StringRange(const String& string, uint start, uint length) + { + return string.substr(start, length); + } + + String RemoveStringRange(const String& string, uint start, uint length) + { + String result = string; + return result.erase(start, length); + } + + String GetBlock(const char* str, const char** outPosition) + { + const char* end = strstr(str, "}"); + if (!end) + return String(str); + + if (outPosition) + *outPosition = end; + uint length = end - str + 1; + return String(str, length); + } + + String GetBlock(const String& string, uint offset) + { + const char* str = string.c_str() + offset; + return GetBlock(str); + } + + String GetStatement(const char* str, const char** outPosition) + { + const char* end = strstr(str, ";"); + if (!end) + return String(str); + + if (outPosition) + *outPosition = end; + uint length = end - str + 1; + return String(str, length); + } + + bool StringContains(const String& string, const String& chars) + { + return string.find(chars) != String::npos; + } + + bool StartsWith(const String& string, const String& start) + { + return string.find(start) == 0; + } + + int32 NextInt(const String& string) + { + const char* str = string.c_str(); + for (uint i = 0; i < string.size(); i++) + { + if (isdigit(string[i])) + return atoi(&string[i]); + } + return -1; + } + +} diff --git a/Sparky-core/src/sp/String.h b/Sparky-core/src/sp/String.h new file mode 100644 index 00000000..fc7159b7 --- /dev/null +++ b/Sparky-core/src/sp/String.h @@ -0,0 +1,68 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" + +typedef std::string String; + +namespace sp { + +#define STRINGFORMAT_BUFFER_SIZE 10 * 1024 + + class SP_API StringFormat + { + private: + static char* s_Buffer; + public: + template + static String Hex(const T& input) + { + memset(s_Buffer, 0, STRINGFORMAT_BUFFER_SIZE); + sprintf(s_Buffer, "%02x", input); + return String(s_Buffer); + } + + template + static String Hex(const T* input, uint size) + { + memset(s_Buffer, 0, STRINGFORMAT_BUFFER_SIZE); + for (uint i = 0; i < size; i++) + sprintf(s_Buffer + i * 3, "%02x ", input[i]); + return String(s_Buffer); + } + + static String Float(const float input, uint places = 2) + { + memset(s_Buffer, 0, STRINGFORMAT_BUFFER_SIZE); + sprintf(s_Buffer, "%.2f", input); + return String(s_Buffer); + } + + template + static String ToString(const T& input) + { + return std::to_string(input); + } + }; + + std::vector SplitString(const String& string, const String& delimiters); + std::vector SplitString(const String& string, const char delimiter); + std::vector Tokenize(const String& string); + std::vector GetLines(const String& string); + + const char* FindToken(const char* str, const String& token); + const char* FindToken(const String& string, const String& token); + int32 FindStringPosition(const String& string, const String& search, uint offset = 0); + String StringRange(const String& string, uint start, uint length); + String RemoveStringRange(const String& string, uint start, uint length); + + String GetBlock(const char* str, const char** outPosition = nullptr); + String GetBlock(const String& string, uint offset = 0); + + String GetStatement(const char* str, const char** outPosition = nullptr); + + bool StringContains(const String& string, const String& chars); + bool StartsWith(const String& string, const String& start); + int32 NextInt(const String& string); + +} diff --git a/Sparky-core/src/sp/Types.h b/Sparky-core/src/sp/Types.h new file mode 100644 index 00000000..c7fc0bec --- /dev/null +++ b/Sparky-core/src/sp/Types.h @@ -0,0 +1,20 @@ +#pragma once + +typedef int8_t int8; +typedef int16_t int16; +typedef int32_t int32; +typedef int64_t int64; + +typedef uint8_t uint8; +typedef uint16_t uint16; +typedef uint32_t uint32; +typedef uint64_t uint64; + +typedef uint8 byte; +typedef uint32 uint; + +// Sparky Class Forward-Declarations +namespace sp { + namespace graphics { + } +} diff --git a/Sparky-core/src/sp/app/Application.cpp b/Sparky-core/src/sp/app/Application.cpp new file mode 100644 index 00000000..af0e6178 --- /dev/null +++ b/Sparky-core/src/sp/app/Application.cpp @@ -0,0 +1,156 @@ +#include "sp/sp.h" +#include "Application.h" + +#include "sp/debug/DebugLayer.h" +#include "sp/debug/DebugRenderer.h" + +#include "sp/system/System.h" +#include "sp/system/Memory.h" + +namespace sp { + + using namespace graphics; + + Application* Application::s_Instance = nullptr; + + void Application::Init() + { + internal::System::Init(); + PlatformInit(); + + debug::DebugMenu::Init(); + // debug::DebugRenderer::Init(); + + m_DebugLayer = spnew debug::DebugLayer(); + m_DebugLayer->Init(); + } + + void Application::PushLayer(Layer* layer) + { + m_LayerStack.push_back(layer); + layer->Init(); + } + + Layer* Application::PopLayer() + { + Layer* layer = m_LayerStack.back(); + m_LayerStack.pop_back(); + return layer; + } + + Layer* Application::PopLayer(Layer* layer) + { + for (uint i = 0; i < m_LayerStack.size(); i++) + { + if (m_LayerStack[i] == layer) + { + m_LayerStack.erase(m_LayerStack.begin() + i); + break; + } + } + return layer; + } + + + void Application::PushOverlay(Layer* layer) + { + m_OverlayStack.push_back(layer); + layer->Init(); + } + + Layer* Application::PopOverlay() + { + Layer* layer = m_OverlayStack.back(); + m_OverlayStack.pop_back(); + return layer; + } + + Layer* Application::PopOverlay(Layer* layer) + { + for (uint i = 0; i < m_OverlayStack.size(); i++) + { + if (m_OverlayStack[i] == layer) + { + m_OverlayStack.erase(m_OverlayStack.begin() + i); + break; + } + } + return layer; + } + + void Application::OnEvent(events::Event& event) + { + m_DebugLayer->OnEvent(event); + if (event.IsHandled()) // TODO(Yan): Maybe this shouldn't happen + return; + + for (int32 i = m_OverlayStack.size() - 1; i >= 0; i--) + { + m_OverlayStack[i]->OnEvent(event); + if (event.IsHandled()) + return; + } + + for (int32 i = m_LayerStack.size() - 1; i >= 0; i--) + { + m_LayerStack[i]->OnEvent(event); + if (event.IsHandled()) + return; + } + } + + void Application::OnTick() + { + m_DebugLayer->OnTick(); + + for (uint i = 0; i < m_OverlayStack.size(); i++) + m_OverlayStack[i]->OnTick(); + + for (uint i = 0; i < m_LayerStack.size(); i++) + m_LayerStack[i]->OnTick(); + } + + void Application::OnUpdate(const Timestep& ts) + { + m_DebugLayer->OnUpdate(ts); + + for (uint i = 0; i < m_OverlayStack.size(); i++) + m_OverlayStack[i]->OnUpdateInternal(ts); + + for (uint i = 0; i < m_LayerStack.size(); i++) + m_LayerStack[i]->OnUpdateInternal(ts); + } + + void Application::OnRender() + { + for (uint i = 0; i < m_LayerStack.size(); i++) + { + if (m_LayerStack[i]->IsVisible()) + m_LayerStack[i]->OnRender(); + } + + for (uint i = 0; i < m_OverlayStack.size(); i++) + { + if (m_OverlayStack[i]->IsVisible()) + m_OverlayStack[i]->OnRender(); + } + + Layer2D* debugLayer = (Layer2D*)m_DebugLayer; + if (debugLayer->IsVisible()) + debugLayer->OnRender(); + + // debug::DebugRenderer::Present(); + } + + String Application::GetBuildConfiguration() + { +#if defined(SP_DEBUG) + return "Debug"; +#elif defined(SP_RELEASE) + return "Release"; +#else + return "Unknown Build Configuration"; +#endif + + } +} \ No newline at end of file diff --git a/Sparky-core/src/sp/app/Application.h b/Sparky-core/src/sp/app/Application.h new file mode 100644 index 00000000..63ba3c45 --- /dev/null +++ b/Sparky-core/src/sp/app/Application.h @@ -0,0 +1,84 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" +#include "sp/Types.h" + +#include "sp/app/Window.h" +#include "sp/graphics/layers/Layer.h" +#include "sp/utils/Timer.h" +#include "sp/utils/Timestep.h" + +#include "sp/events/Events.h" + +#include "sp/graphics/API/Context.h" + +namespace sp { + + namespace debug { + class DebugLayer; + } + + class SP_API Application + { + private: + static Application* s_Instance; + public: + Window* window; + debug::DebugLayer* m_DebugLayer; + private: + bool m_Running, m_Suspended; + Timer* m_Timer; + uint m_UpdatesPerSecond, m_FramesPerSecond; + float m_Frametime; + + String m_Name; + WindowProperties m_Properties; + + std::vector m_LayerStack; + std::vector m_OverlayStack; + public: + Application(const String& name, const WindowProperties& properties, graphics::API::RenderAPI api = graphics::API::RenderAPI::OPENGL); + virtual ~Application(); + + virtual void Init(); + + void PushLayer(graphics::Layer* layer); + graphics::Layer* PopLayer(); + graphics::Layer* PopLayer(graphics::Layer* layer); + + void PushOverlay(graphics::Layer* layer); + graphics::Layer* PopOverlay(); + graphics::Layer* PopOverlay(graphics::Layer* layer); + + void Start(); + void Suspend(); + void Resume(); + void Stop(); + + inline uint GetFPS() const { return m_FramesPerSecond; } + inline uint GetUPS() const { return m_UpdatesPerSecond; } + inline float GetFrametime() const { return m_Frametime; } + + inline uint GetWindowWidth() const { return window->GetWidth(); } + inline uint GetWindowHeight() const { return window->GetHeight(); } + inline maths::vec2 GetWindowSize() const { return maths::vec2((float)window->GetWidth(), (float)window->GetHeight()); } + + String GetBuildConfiguration(); + String GetPlatform(); // TODO: Return "Platform" object rather than String + private: + void PlatformInit(); + void Run(); + + public: + void OnTick(); + void OnUpdate(const Timestep& ts); + void OnRender(); + private: + void OnEvent(events::Event& event); + public: + inline static Application& GetApplication() { return *s_Instance; } + }; + + +} \ No newline at end of file diff --git a/Sparky-core/src/sp/app/Input.cpp b/Sparky-core/src/sp/app/Input.cpp new file mode 100644 index 00000000..b6910423 --- /dev/null +++ b/Sparky-core/src/sp/app/Input.cpp @@ -0,0 +1,92 @@ +#include "sp/sp.h" +#include "Input.h" + +namespace sp { + + InputManager* Input::s_InputManager = nullptr; + + InputManager::InputManager() + { + ClearKeys(); + ClearMouseButtons(); + + m_MouseGrabbed = true; + + Input::s_InputManager = this; + + // m_KeyState = spnew bool[MAX_KEYS]; + // m_LastKeyState = spnew bool[MAX_KEYS]; + } + + void InputManager::Update() + { + for (int32 i = 0; i < MAX_BUTTONS; i++) + m_MouseClicked[i] = m_MouseButtons[i] && !m_MouseState[i]; + + memcpy(m_LastKeyState, m_KeyState, MAX_KEYS); + memcpy(m_MouseState, m_MouseButtons, MAX_BUTTONS); + } + + void InputManager::ClearKeys() + { + for (int32 i = 0; i < MAX_KEYS; i++) + { + m_KeyState[i] = false; + m_LastKeyState[i] = false; + } + m_KeyModifiers = 0; + } + + void InputManager::ClearMouseButtons() + { + for (int32 i = 0; i < MAX_BUTTONS; i++) + { + m_MouseButtons[i] = false; + m_MouseState[i] = false; + m_MouseClicked[i] = false; + } + } + + bool InputManager::IsKeyPressed(uint keycode) const + { + // TODO: Log this! + if (keycode >= MAX_KEYS) + return false; + + return m_KeyState[keycode]; + } + + bool InputManager::IsMouseButtonPressed(uint button) const + { + // TODO: Log this! + if (button >= MAX_BUTTONS) + return false; + + return m_MouseButtons[button]; + } + + bool InputManager::IsMouseButtonClicked(uint button) const + { + // TODO: Log this! + if (button >= MAX_BUTTONS) + return false; + + return m_MouseClicked[button]; + } + + const maths::vec2& InputManager::GetMousePosition() const + { + return m_MousePosition; + } + + const bool InputManager::IsMouseGrabbed() const + { + return m_MouseGrabbed; + } + + void InputManager::SetMouseGrabbed(bool grabbed) + { + m_MouseGrabbed = grabbed; + } + +} \ No newline at end of file diff --git a/Sparky-core/src/sp/app/Input.h b/Sparky-core/src/sp/app/Input.h new file mode 100644 index 00000000..d87a77f2 --- /dev/null +++ b/Sparky-core/src/sp/app/Input.h @@ -0,0 +1,208 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/maths/maths.h" +#include "sp/events/Event.h" + +namespace sp { + +#define MAX_KEYS 1024 +#define MAX_BUTTONS 32 + + typedef std::function WindowEventCallback; + + class Window; + + class SP_API InputManager + { + private: + friend class Window; + private: + bool m_KeyState[MAX_KEYS]; + bool m_LastKeyState[MAX_KEYS]; + + bool m_MouseButtons[MAX_BUTTONS]; + bool m_MouseState[MAX_BUTTONS]; + bool m_MouseClicked[MAX_BUTTONS]; + bool m_MouseGrabbed; + int32 m_KeyModifiers; + + maths::vec2 m_MousePosition; + WindowEventCallback m_EventCallback; + public: + InputManager(); + + inline void SetEventCallback(const WindowEventCallback& eventCallback) { m_EventCallback = eventCallback; } + + void Update(); + void PlatformUpdate(); + + bool IsKeyPressed(uint keycode) const; + bool IsMouseButtonPressed(uint button) const; + bool IsMouseButtonClicked(uint button) const; + + const maths::vec2& GetMousePosition() const; + void SetMousePosition(const maths::vec2& position); + const bool IsMouseGrabbed() const; + void SetMouseGrabbed(bool grabbed); + void SetMouseCursor(int32 cursor); + + void ClearKeys(); + void ClearMouseButtons(); + private: + friend void KeyCallback(InputManager* inputManager, int32 flags, int32 key, uint message); + friend void MouseButtonCallback(InputManager* inputManager, int32 button, int32 x, int32 y); + }; + + class SP_API Input + { + private: + friend class InputManager; + private: + static InputManager* s_InputManager; + public: + inline static bool IsKeyPressed(uint keycode) { return s_InputManager->IsKeyPressed(keycode); } + inline static bool IsMouseButtonPressed(uint button) { return s_InputManager->IsMouseButtonPressed(button); } + inline static bool IsMouseButtonClicked(uint button) { return s_InputManager->IsMouseButtonClicked(button); } + + inline static const maths::vec2& GetMousePosition() { return s_InputManager->GetMousePosition(); } + + inline static InputManager* GetInputManager() { return s_InputManager; } + }; + +} + + +#define SP_MOUSE_LEFT 0x00 +#define SP_MOUSE_MIDDLE 0x01 +#define SP_MOUSE_RIGHT 0x02 + +#define SP_NO_CURSOR NULL + +#define SP_MODIFIER_LEFT_CONTROL BIT(0) +#define SP_MODIFIER_LEFT_ALT BIT(1) +#define SP_MODIFIER_LEFT_SHIFT BIT(2) +#define SP_MODIFIER_RIGHT_CONTROL BIT(3) +#define SP_MODIFIER_RIGHT_ALT BIT(4) +#define SP_MODIFIER_RIGHT_SHIFT BIT(5) + +#define SP_KEY_TAB 0x09 + +#define SP_KEY_0 0x30 +#define SP_KEY_1 0x31 +#define SP_KEY_2 0x32 +#define SP_KEY_3 0x33 +#define SP_KEY_4 0x34 +#define SP_KEY_5 0x35 +#define SP_KEY_6 0x36 +#define SP_KEY_7 0x37 +#define SP_KEY_8 0x38 +#define SP_KEY_9 0x39 + +#define SP_KEY_A 0x41 +#define SP_KEY_B 0x42 +#define SP_KEY_C 0x43 +#define SP_KEY_D 0x44 +#define SP_KEY_E 0x45 +#define SP_KEY_F 0x46 +#define SP_KEY_G 0x47 +#define SP_KEY_H 0x48 +#define SP_KEY_I 0x49 +#define SP_KEY_J 0x4A +#define SP_KEY_K 0x4B +#define SP_KEY_L 0x4C +#define SP_KEY_M 0x4D +#define SP_KEY_N 0x4E +#define SP_KEY_O 0x4F +#define SP_KEY_P 0x50 +#define SP_KEY_Q 0x51 +#define SP_KEY_R 0x52 +#define SP_KEY_S 0x53 +#define SP_KEY_T 0x54 +#define SP_KEY_U 0x55 +#define SP_KEY_V 0x56 +#define SP_KEY_W 0x57 +#define SP_KEY_X 0x58 +#define SP_KEY_Y 0x59 +#define SP_KEY_Z 0x5A + +#define SP_KEY_LBUTTON 0x01 +#define SP_KEY_RBUTTON 0x02 +#define SP_KEY_CANCEL 0x03 +#define SP_KEY_MBUTTON 0x04 + +#define SP_KEY_ESCAPE 0x1B +#define SP_KEY_SHIFT 0x10 +#define SP_KEY_CONTROL 0x11 +#define SP_KEY_MENU 0x12 +#define SP_KEY_ALT SP_KEY_MENU +#define SP_KEY_PAUSE 0x13 +#define SP_KEY_CAPITAL 0x14 + +#define SP_KEY_SPACE 0x20 +#define SP_KEY_PRIOR 0x21 +#define SP_KEY_NEXT 0x22 +#define SP_KEY_END 0x23 +#define SP_KEY_HOME 0x24 +#define SP_KEY_LEFT 0x25 +#define SP_KEY_UP 0x26 +#define SP_KEY_RIGHT 0x27 +#define SP_KEY_DOWN 0x28 +#define SP_KEY_SELECT 0x29 +#define SP_KEY_PRINT 0x2A +#define SP_KEY_EXECUTE 0x2B +#define SP_KEY_SNAPSHOT 0x2C +#define SP_KEY_INSERT 0x2D +#define SP_KEY_DELETE 0x2E +#define SP_KEY_HELP 0x2F + +#define SP_KEY_NUMPAD0 0x60 +#define SP_KEY_NUMPAD1 0x61 +#define SP_KEY_NUMPAD2 0x62 +#define SP_KEY_NUMPAD3 0x63 +#define SP_KEY_NUMPAD4 0x64 +#define SP_KEY_NUMPAD5 0x65 +#define SP_KEY_NUMPAD6 0x66 +#define SP_KEY_NUMPAD7 0x67 +#define SP_KEY_NUMPAD8 0x68 +#define SP_KEY_NUMPAD9 0x69 +#define SP_KEY_MULTIPLY 0x6A +#define SP_KEY_ADD 0x6B +#define SP_KEY_SEPARATOR 0x6C +#define SP_KEY_SUBTRACT 0x6D +#define SP_KEY_DECIMAL 0x6E +#define SP_KEY_DIVIDE 0x6F +#define SP_KEY_F1 0x70 +#define SP_KEY_F2 0x71 +#define SP_KEY_F3 0x72 +#define SP_KEY_F4 0x73 +#define SP_KEY_F5 0x74 +#define SP_KEY_F6 0x75 +#define SP_KEY_F7 0x76 +#define SP_KEY_F8 0x77 +#define SP_KEY_F9 0x78 +#define SP_KEY_F10 0x79 +#define SP_KEY_F11 0x7A +#define SP_KEY_F12 0x7B +#define SP_KEY_F13 0x7C +#define SP_KEY_F14 0x7D +#define SP_KEY_F15 0x7E +#define SP_KEY_F16 0x7F +#define SP_KEY_F17 0x80 +#define SP_KEY_F18 0x81 +#define SP_KEY_F19 0x82 +#define SP_KEY_F20 0x83 +#define SP_KEY_F21 0x84 +#define SP_KEY_F22 0x85 +#define SP_KEY_F23 0x86 +#define SP_KEY_F24 0x87 + +#define SP_KEY_NUMLOCK 0x90 +#define SP_KEY_SCROLL 0x91 + +#define SP_KEY_LSHIFT 0xA0 +#define SP_KEY_RSHIFT 0xA1 +#define SP_KEY_LCONTROL 0xA2 +#define SP_KEY_RCONTROL 0xA3 +#define SP_KEY_LMENU 0xA4 +#define SP_KEY_RMENU 0xA5 \ No newline at end of file diff --git a/Sparky-core/src/sp/app/Window.cpp b/Sparky-core/src/sp/app/Window.cpp new file mode 100644 index 00000000..6648da96 --- /dev/null +++ b/Sparky-core/src/sp/app/Window.cpp @@ -0,0 +1,102 @@ +#include "sp/sp.h" +#include "Window.h" + +#include "sp/graphics/Renderer.h" + +#include "sp/utils/Log.h" + +#include "sp/embedded/Embedded.h" +#include + +namespace sp { + + using namespace graphics; + + std::map Window::s_Handles; + + Window::Window(const String& title, const WindowProperties& properties) + : m_Title(title), m_Properties(properties), m_Handle(nullptr), m_Closed(false), m_EventCallback(nullptr) + { + if (!Init()) + { + SP_ERROR("Failed base Window initialization!"); + return; + } + +#ifdef SPARKY_PLATFORM_WEB + FontManager::Add(new Font("SourceSansPro", "res/SourceSansPro-Light.ttf", 32)); +#else + FontManager::SetScale(maths::vec2(m_Properties.width / 32.0f, m_Properties.height / 18.0f)); // TODO: Seriously + FontManager::Add(new Font("SourceSansPro", internal::DEFAULT_FONT, internal::DEFAULT_FONT_SIZE, 32)); +#endif + + FreeImage_Initialise(); + + audio::SoundManager::Init(); + m_InputManager = new InputManager(); + } + + Window::~Window() + { + FontManager::Clean(); + TextureManager::Clean(); + audio::SoundManager::Clean(); + } + + bool Window::Init() + { + if (!PlatformInit()) + { + SP_FATAL("Failed to initialize platform!"); + return false; + } + + Renderer::Init(); + + SetTitle(m_Title); + return true; + } + + void Window::SetVsync(bool enabled) + { + // TODO: Not implemented + m_Vsync = enabled; + + } + + void Window::Clear() const + { + Renderer::Clear(RENDERER_BUFFER_COLOR | RENDERER_BUFFER_DEPTH); + } + + void Window::Update() + { + PlatformUpdate(); + audio::SoundManager::Update(); + } + + bool Window::Closed() const + { + return m_Closed; + } + + void Window::SetEventCallback(const WindowEventCallback& callback) + { + m_EventCallback = callback; + m_InputManager->SetEventCallback(m_EventCallback); + } + + void Window::RegisterWindowClass(void* handle, Window* window) + { + s_Handles[handle] = window; + } + + Window* Window::GetWindowClass(void* handle) + { + if (handle == nullptr) + return s_Handles.begin()->second; + + return s_Handles[handle]; + } + +} \ No newline at end of file diff --git a/Sparky-core/src/sp/app/Window.h b/Sparky-core/src/sp/app/Window.h new file mode 100644 index 00000000..90af4a19 --- /dev/null +++ b/Sparky-core/src/sp/app/Window.h @@ -0,0 +1,71 @@ +#pragma once + +#include "sp/sp.h" + +#include "sp/maths/vec2.h" + +#include "sp/audio/SoundManager.h" +#include "sp/events/Events.h" + +#include "sp/graphics/FontManager.h" +#include "sp/graphics/TextureManager.h" + +#include "sp/app/Input.h" + +namespace sp { + + typedef std::function WindowEventCallback; + + struct SP_API WindowProperties + { + uint width, height; + bool fullscreen; + bool vsync; + }; + + class SP_API Window + { + private: + static std::map s_Handles; + private: + String m_Title; + WindowProperties m_Properties; + bool m_Closed; + void* m_Handle; + + bool m_Vsync; + WindowEventCallback m_EventCallback; + InputManager* m_InputManager; + public: + Window(const String& name, const WindowProperties& properties); + ~Window(); + void Clear() const; + void Update(); + bool Closed() const; + + void SetTitle(const String& title); + + inline uint GetWidth() const { return m_Properties.width; } + inline uint GetHeight() const { return m_Properties.height; } + + void SetVsync(bool enabled); + inline bool IsVsync() const { return m_Vsync; } + + inline InputManager* GetInputManager() const { return m_InputManager; } + + void SetEventCallback(const WindowEventCallback& callback); + private: + bool Init(); + + bool PlatformInit(); + void PlatformUpdate(); + + // Window event callbacks (TODO: more platform independent) + friend void ResizeCallback(Window* window, int32 width, int32 height); + friend void FocusCallback(Window* window, bool focused); + public: + static void RegisterWindowClass(void* handle, Window* window); + static Window* GetWindowClass(void* handle); + }; + +} diff --git a/Sparky-core/src/audio/sound.cpp b/Sparky-core/src/sp/audio/Sound.cpp similarity index 59% rename from Sparky-core/src/audio/sound.cpp rename to Sparky-core/src/sp/audio/Sound.cpp index a91eb023..fa5ebdf3 100644 --- a/Sparky-core/src/audio/sound.cpp +++ b/Sparky-core/src/sp/audio/Sound.cpp @@ -1,49 +1,59 @@ -#include "sound.h" -#include "sound_manager.h" +#include "sp/sp.h" +#include "Sound.h" +#include "SoundManager.h" -namespace sparky { namespace audio { +#ifdef SPARKY_PLATFORM_WEB + #include +#else + #include + #include +#endif - Sound::Sound(const std::string& name, const std::string& filename) - : m_Name(name), m_Filename(filename), m_Playing(false) +namespace sp { namespace audio { + + Sound::Sound(const String& name, const String& filename) + : m_Name(name), m_Filename(filename), m_Playing(false), m_Count(0) { - std::vector split = split_string(m_Filename, '.'); + std::vector split = SplitString(m_Filename, '.'); if (split.size() < 2) { std::cout << "[Sound] Invalid file name '" << m_Filename << "'!" << std::endl; return; } -#ifdef SPARKY_EMSCRIPTEN +#ifdef SPARKY_PLATFORM_WEB #else m_Sound = gau_load_sound_file(filename.c_str(), split.back().c_str()); if (m_Sound == nullptr) std::cout << "[Sound] Could not load file '" << m_Filename << "'!" << std::endl; #endif - } Sound::~Sound() { -#ifdef SPARKY_EMSCRIPTEN +#ifdef SPARKY_PLATFORM_WEB #else ga_sound_release(m_Sound); #endif } - void Sound::play() + void Sound::Play() { -#ifdef SPARKY_EMSCRIPTEN +#ifdef SPARKY_PLATFORM_WEB + SoundManagerPlay(m_Name.c_str()); #else gc_int32 quit = 0; m_Handle = gau_create_handle_sound(SoundManager::m_Mixer, m_Sound, &destroy_on_finish, &quit, NULL); m_Handle->sound = this; ga_handle_play(m_Handle); + m_Count++; #endif m_Playing = true; } - void Sound::loop() + void Sound::Loop() { -#ifdef SPARKY_EMSCRIPTEN +#ifdef SPARKY_PLATFORM_WEB + SoundManagerLoop(m_Name.c_str()); #else gc_int32 quit = 0; m_Handle = gau_create_handle_sound(SoundManager::m_Mixer, m_Sound, &loop_on_finish, &quit, NULL); @@ -53,43 +63,46 @@ namespace sparky { namespace audio { m_Playing = true; } - void Sound::resume() + void Sound::Resume() { if (m_Playing) return; m_Playing = true; -#ifdef SPARKY_EMSCRIPTEN +#ifdef SPARKY_PLATFORM_WEB + SoundManagerPlay(m_Name.c_str()); #else ga_handle_play(m_Handle); #endif } - void Sound::pause() + void Sound::Pause() { if (!m_Playing) return; m_Playing = false; -#ifdef SPARKY_EMSCRIPTEN +#ifdef SPARKY_PLATFORM_WEB + SoundManagerPause(m_Name.c_str()); #else ga_handle_stop(m_Handle); #endif } - void Sound::stop() + void Sound::Stop() { if (!m_Playing) return; -#ifdef SPARKY_EMSCRIPTEN +#ifdef SPARKY_PLATFORM_WEB + SoundManagerStop(m_Name.c_str()); #else ga_handle_stop(m_Handle); #endif m_Playing = false; } - void Sound::setGain(float gain) + void Sound::SetGain(float gain) { if (!m_Playing) { @@ -97,24 +110,27 @@ namespace sparky { namespace audio { return; } m_Gain = gain; -#ifdef SPARKY_EMSCRIPTEN +#ifdef SPARKY_PLATFORM_WEB + SoundManagerSetGain(m_Name.c_str(), gain); #else ga_handle_setParamf(m_Handle, GA_HANDLE_PARAM_GAIN, gain); #endif } -#ifdef SPARKY_EMSCRIPTEN +#ifdef SPARKY_PLATFORM_WEB #else void destroy_on_finish(ga_Handle* in_handle, void* in_context) { Sound* sound = (Sound*)in_handle->sound; - sound->stop(); + sound->m_Count--; + if (sound->m_Count == 0) + sound->Stop(); } void loop_on_finish(ga_Handle* in_handle, void* in_context) { Sound* sound = (Sound*) in_handle->sound; - sound->loop(); + sound->Loop(); ga_handle_destroy(in_handle); } #endif diff --git a/Sparky-core/src/sp/audio/Sound.h b/Sparky-core/src/sp/audio/Sound.h new file mode 100644 index 00000000..941fd793 --- /dev/null +++ b/Sparky-core/src/sp/audio/Sound.h @@ -0,0 +1,55 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" +#include "sp/Types.h" +#include "sp/String.h" + +#ifndef SP_PLATFORM_WEB + struct ga_Sound; + struct ga_Handle; +#endif + +namespace sp { namespace audio { + + class SP_API Sound + { + private: + String m_Name; + String m_Filename; + uint m_Count; + + ga_Sound* m_Sound; + ga_Handle* m_Handle; + int32 m_Position; + + + bool m_Playing; + float m_Gain; + public: + Sound(const String& name, const String& filename); + ~Sound(); + + + void Play(); + void Loop(); + void Pause(); + void Resume(); + void Stop(); + + void SetGain(float gain); + + inline const bool IsPlaying() const { return m_Playing; } + inline const float GetGain() const { return m_Gain; } + inline const String& GetName() const { return m_Name; } + inline const String& GetFileName() const { return m_Filename; } + +#ifdef SPARKY_PLATFORM_WEB +#else + friend void destroy_on_finish(ga_Handle* in_handle, void* in_context); + friend void loop_on_finish(ga_Handle* in_handle, void* in_context); +#endif + + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/audio/SoundManager.cpp b/Sparky-core/src/sp/audio/SoundManager.cpp new file mode 100644 index 00000000..0064d8c6 --- /dev/null +++ b/Sparky-core/src/sp/audio/SoundManager.cpp @@ -0,0 +1,82 @@ +#include "sp/sp.h" +#include "SoundManager.h" + +#ifdef SPARKY_PLATFORM_WEB + #include +#else + #define GAU_THREAD_POLICY_MULTI 2 + #include + #include +#endif + +#include "sp/system/Memory.h" + +namespace sp { namespace audio { + +#ifndef SPARKY_PLATFORM_WEB + gau_Manager* SoundManager::m_Manager = nullptr; + ga_Mixer* SoundManager::m_Mixer = nullptr; +#endif + + std::vector SoundManager::m_Sounds; + + void SoundManager::Init() + { +#ifdef SPARKY_PLATFORM_WEB + EM_ASM( + Module.SoundManager = { }; + Module.SoundManager.m_Sounds = { }; + Module.SoundManagerAdd = function(name, filename) { Module.SoundManager.m_Sounds[name] = new Audio(filename); }; + Module.SoundManagerPlay = function(name) { Module.SoundManager.m_Sounds[name].play(); }; + Module.SoundManagerPause = function(name) { Module.SoundManager.m_Sounds[name].pause(); }; + Module.SoundManagerStop = function(name) { Module.SoundManagerPause(name); Module.SoundManager.m_Sounds[name].currentTime = 0; Module.SoundManager.m_Sounds[name].loop = false; }; + Module.SoundManagerLoop = function(name) { Module.SoundManager.m_Sounds[name].play(); Module.SoundManager.m_Sounds[name].loop = true; }; + Module.SoundManagerSetGain = function(name, gain) { Module.SoundManager.m_Sounds[name].volume = gain; }; + ); +#else + gc_initialize(0); + m_Manager = gau_manager_create(); + m_Mixer = gau_manager_mixer(m_Manager); +#endif + } + + Sound* SoundManager::Add(Sound* sound) + { + m_Sounds.push_back(sound); +#ifdef SPARKY_PLATFORM_WEB + SoundManagerAdd(sound->GetName().c_str(), sound->GetFileName().c_str()); +#endif + return sound; + } + + Sound* SoundManager::Get(const String& name) + { + for (Sound* sound : m_Sounds) + { + if (sound->GetName() == name) + return sound; + } + return nullptr; + } + + void SoundManager::Clean() + { + for (uint i = 0; i < m_Sounds.size(); i++) + spdel m_Sounds[i]; + +#ifdef SPARKY_PLATFORM_WEB +#else + gau_manager_destroy(m_Manager); + gc_shutdown(); +#endif + } + + void SoundManager::Update() + { +#ifdef SPARKY_PLATFORM_WEB +#else + gau_manager_update(m_Manager); +#endif + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/audio/SoundManager.h b/Sparky-core/src/sp/audio/SoundManager.h new file mode 100644 index 00000000..ea03cc41 --- /dev/null +++ b/Sparky-core/src/sp/audio/SoundManager.h @@ -0,0 +1,45 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" +#include "Sound.h" + +#ifdef SPARKY_PLATFORM_WEB +extern "C" void SoundManagerAdd(const char* name, const char* filename); +extern "C" void SoundManagerPlay(const char* name); +extern "C" void SoundManagerPause(const char* name); +extern "C" void SoundManagerStop(const char* name); +extern "C" void SoundManagerLoop(const char* name); +extern "C" void SoundManagerSetGain(const char* name, double gain); +#endif + +#ifndef SP_PLATFORM_WEB + struct gau_Manager; + struct ga_Mixer; +#endif + +namespace sp { namespace audio { + + class SP_API SoundManager + { + private: + friend class Sound; + +#ifdef SPARKY_PLATFORM_WEB +#else + static gau_Manager* m_Manager; + static ga_Mixer* m_Mixer; +#endif + + static std::vector m_Sounds; + public: + static void Init(); + static Sound* Add(Sound* sound); + static Sound* Get(const String& name); + static void Update(); + static void Clean(); + private: + SoundManager() { } + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/debug/DebugLayer.cpp b/Sparky-core/src/sp/debug/DebugLayer.cpp new file mode 100644 index 00000000..bd44b246 --- /dev/null +++ b/Sparky-core/src/sp/debug/DebugLayer.cpp @@ -0,0 +1,118 @@ +#include "sp/sp.h" +#include "DebugLayer.h" + +#include "sp/maths/maths.h" +#include "sp/graphics/shaders/ShaderFactory.h" +#include "sp/graphics/Label.h" +#include "sp/graphics/Sprite.h" +#include "sp/system/MemoryManager.h" + +#include "sp/embedded/Embedded.h" + +namespace sp { namespace debug { + + using namespace maths; + using namespace graphics; + using namespace events; + using namespace internal; + + DebugLayer* DebugLayer::s_Instance = nullptr; + + DebugLayer::DebugLayer() + : Layer2D(mat4::Orthographic(0.0f, 32.0f, 0.0f, 18.0f, -1.0f, 1.0f)), m_Application(Application::GetApplication()) + { + s_Instance = this; + } + + DebugLayer::~DebugLayer() + { + } + + void DebugLayer::OnInit(graphics::Renderer2D& renderer, graphics::Material& material) + { + renderer.SetRenderTarget(RenderTarget::SCREEN); + m_FPSLabel = spnew Label("", 31.5f, 17.5f, FontManager::Get(24), 0xffffffff, Label::Alignment::RIGHT); + m_FrametimeLabel = spnew Label("", 31.5f, 16.8f, FontManager::Get(24), 0xffffffff, Label::Alignment::RIGHT); + m_MemoryUsageLabel = spnew Label("", 31.5f, 16.1f, FontManager::Get(24), 0xffffffff, Label::Alignment::RIGHT); + + Add(m_FPSLabel); + Add(m_MemoryUsageLabel); + Add(m_FrametimeLabel); + } + + void DebugLayer::OnTick() + { + m_FPSLabel->SetText(StringFormat::ToString(m_Application.GetFPS()) + " fps"); + m_MemoryUsageLabel->SetText(MemoryManager::BytesToString(MemoryManager().Get()->GetMemoryStats().currentUsed)); + } + + void DebugLayer::OnUpdate(const Timestep& ts) + { + DebugMenu::Get()->OnUpdate(); + + m_FrametimeLabel->SetText(StringFormat::Float(m_Application.GetFrametime()) + " ms"); + } + + void DebugLayer::OnEvent(Event& e) + { + EventDispatcher dispatcher(e); + dispatcher.Dispatch(METHOD(&DebugLayer::OnKeyPressedEvent)); + dispatcher.Dispatch(METHOD(&DebugLayer::OnMousePressedEvent)); + dispatcher.Dispatch(METHOD(&DebugLayer::OnMouseReleasedEvent)); + dispatcher.Dispatch(METHOD(&DebugLayer::OnMouseMovedEvent)); + + Layer::OnEvent(e); + } + + bool DebugLayer::OnMousePressedEvent(events::MousePressedEvent& e) + { + return DebugMenu::IsVisible() ? DebugMenu::Get()->OnMousePressed(e) : false; + } + + bool DebugLayer::OnMouseReleasedEvent(events::MouseReleasedEvent& e) + { + return DebugMenu::IsVisible() ? DebugMenu::Get()->OnMouseReleased(e) : false; + } + + bool DebugLayer::OnKeyPressedEvent(KeyPressedEvent& e) + { + if (e.GetRepeat()) + return false; + + if (e.GetModifiers() == SP_MODIFIER_LEFT_CONTROL && e.GetKeyCode() == SP_KEY_TAB) + { + DebugMenu::SetVisible(!DebugMenu::IsVisible()); + return true; + } + return false; + } + + bool DebugLayer::OnMouseMovedEvent(MouseMovedEvent& e) + { + return false; + } + + void DebugLayer::OnRender(graphics::Renderer2D& renderer) + { + if (DebugMenu::IsVisible()) + DebugMenu::Get()->OnRender(renderer); + + for (uint i = 0; i < m_TempSprites.size(); i++) + spdel m_TempSprites[i]; + + m_TempSprites.clear(); + } + + void DebugLayer::DrawSprite(Sprite* sprite) + { + s_Instance->Submit(sprite); + } + + void DebugLayer::DrawTexture(API::Texture* texture, const maths::vec2& position, const maths::vec2& size) + { + Sprite* sprite = spnew Sprite(position.x, position.y, size.x, size.y, texture); + s_Instance->m_TempSprites.push_back(sprite); + s_Instance->Submit(sprite); + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/debug/DebugLayer.h b/Sparky-core/src/sp/debug/DebugLayer.h new file mode 100644 index 00000000..97d4672b --- /dev/null +++ b/Sparky-core/src/sp/debug/DebugLayer.h @@ -0,0 +1,54 @@ +#pragma once + +#include "sp/graphics/Renderer2D.h" +#include "sp/graphics/Label.h" +#include "sp/graphics/Sprite.h" + +#include "sp/graphics/layers/Layer2D.h" +#include "sp/graphics/shaders/Shader.h" + +#include "sp/events/Events.h" +#include "sp/app/Application.h" + +#include "sp/debug/DebugMenu.h" + +#include "sp/graphics/Sprite.h" +#include "sp/graphics/API/Texture2D.h" + +namespace sp { namespace debug { + + class SP_API DebugLayer : public graphics::Layer2D + { + private: + static DebugLayer* s_Instance; + private: + Application& m_Application; + graphics::Label* m_FPSLabel; + graphics::Label* m_MemoryUsageLabel; + graphics::Label* m_FrametimeLabel; + std::vector m_TempSprites; + public: + DebugLayer(); + ~DebugLayer(); + + void OnInit(graphics::Renderer2D& renderer, graphics::Material& material) override; + + void OnTick() override; + void OnUpdate(const Timestep& ts) override; + + void OnEvent(events::Event& event) override; + bool OnMouseMovedEvent(events::MouseMovedEvent& e); + bool OnMousePressedEvent(events::MousePressedEvent& e); + bool OnMouseReleasedEvent(events::MouseReleasedEvent& e); + bool OnKeyPressedEvent(events::KeyPressedEvent& e); + + void OnRender(graphics::Renderer2D& renderer) override; + + public: + inline static DebugLayer* GetInstance() { return s_Instance; } + + static void DrawSprite(graphics::Sprite* sprite); + static void DrawTexture(graphics::API::Texture* texture, const maths::vec2& position = maths::vec2(), const maths::vec2& size = maths::vec2(8.0f, 8.0f)); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/debug/DebugMenu.cpp b/Sparky-core/src/sp/debug/DebugMenu.cpp new file mode 100644 index 00000000..90026acc --- /dev/null +++ b/Sparky-core/src/sp/debug/DebugMenu.cpp @@ -0,0 +1,329 @@ +#include "sp/sp.h" +#include "DebugMenu.h" + +#include "DebugMenuAction.h" + +#include "sp/app/Window.h" +#include "sp/graphics/ui/Button.h" + +#include "sp/system/Memory.h" + +namespace sp { namespace debug { + + using namespace maths; + using namespace graphics; + using namespace ui; + + DebugMenu* DebugMenu::s_Instance = nullptr; + + DebugMenu::DebugMenu() + : m_Visible(false), m_Slider(nullptr), m_Path(nullptr) + { + s_Instance = this; + + // Default settings + m_Settings.horizontalPadding = 0.4f; + m_Settings.verticalPadding = 0.6f; + m_Settings.fontSize = 20.0f; + + Add("Debug Menu/Horizontal Padding", &m_Settings.horizontalPadding, 0.0f, 4.0f); + Add("Debug Menu/Vertical Padding", &m_Settings.verticalPadding, 0.0f, 4.0f); + Add("Debug Menu/Font Size", &m_Settings.fontSize, 8.0f, 48.0f); + + m_Slider = spnew Slider*[4]; + m_Panel = spnew Panel(); + } + + DebugMenu* DebugMenu::Get() + { + return s_Instance; + } + + void DebugMenu::Init() + { + SP_ASSERT(s_Instance == nullptr); // There should only ever be ONE Debug Menu! + spnew DebugMenu(); + } + + void DebugMenu::Add(const String& path) + { + Add(path, spnew EmptyAction(path)); + } + + void DebugMenu::Add(const String& path, const std::function& function) + { + Add(path, spnew CustomAction(path, function)); + } + + void DebugMenu::Add(const String& path, bool* value) + { + Add(path, spnew BooleanAction(path, [value]() { return *value; }, [value](bool v) { *value = v; })); + } + + void DebugMenu::Add(const String& path, float* value) + { + Add(path, value, 0.0f, 100.0f); + } + + void DebugMenu::Add(const String& path, float* value, float minimum, float maximum) + { + Add(path, spnew FloatAction(path, [value]() { return *value; }, [value](float v) { *value = v; }, minimum, maximum)); + } + + void DebugMenu::Add(const String& path, vec2* value, float minimum, float maximum) + { + Add(path, spnew Vec2Action(path, [value]() { return *value; }, [value](vec2 v) { *value = v; }, vec2(minimum), vec2(maximum))); + } + + void DebugMenu::Add(const String& path, vec3* value, float minimum, float maximum) + { + Add(path, spnew Vec3Action(path, [value]() { return *value; }, [value](vec3 v) { *value = v; }, vec3(minimum), vec3(maximum))); + } + + void DebugMenu::Add(const String& path, vec4* value, float minimum, float maximum) + { + Add(path, spnew Vec4Action(path, [value]() { return *value; }, [value](vec4 v) { *value = v; }, vec4(minimum), vec4(maximum))); + } + + void DebugMenu::Add(const String& path, IAction* action) + { + if (StringContains(path, "/")) + { + std::vector paths = SplitString(path, "/"); + action->name = paths.back(); + paths.pop_back(); + PathAction* pathAction = s_Instance->CreateOrFindPaths(paths); + SP_ASSERT(pathAction); + if (!pathAction->ContainsAction(action->name)) + pathAction->actionList.push_back(action); + else + spdel action; + } + else + { + s_Instance->m_ActionList.push_back(action); + } + s_Instance->Refresh(); + } + + PathAction* DebugMenu::CreateOrFindPaths(std::vector& paths, PathAction* action) + { + if (paths.empty()) + return action; + + String name = paths.front(); + paths.erase(paths.begin()); + + ActionList* actionList = action ? &action->actionList : &m_ActionList; + for (IAction* a : *actionList) + { + if (a->type == IAction::Type::PATH && a->name == name) + return CreateOrFindPaths(paths, (PathAction*)a); + } + + PathAction* pathAction = spnew PathAction(name, action); + actionList->push_back(pathAction); + return CreateOrFindPaths(paths, pathAction); + } + + void DebugMenu::Remove(const String& path) + { + if (StringContains(path, "/")) + { + std::vector paths = SplitString(path, "/"); + String name = paths.back(); + paths.pop_back(); + PathAction* pathAction = s_Instance->CreateOrFindPaths(paths); + SP_ASSERT(pathAction); + if (pathAction->ContainsAction(name)) + { + if (pathAction->actionList.size() == 1) + { + PathAction* parent = pathAction->parent; + if (parent) + { + parent->DeleteChild(pathAction); + } + else + { + for (uint i = 0; i < s_Instance->m_ActionList.size(); i++) + { + if (s_Instance->m_ActionList[i] == pathAction) + { + spdel s_Instance->m_ActionList[i]; + s_Instance->m_ActionList.erase(s_Instance->m_ActionList.begin() + i); + break; + } + } + } + while (parent) + { + spdel pathAction; + pathAction = pathAction->parent; + } + } + else + { + ActionList& actionList = pathAction->actionList; + for (uint i = 0; i < actionList.size(); i++) + { + if (actionList[i]->name == name) + { + actionList.erase(actionList.begin() + i); + break; + } + } + } + } + } + else + { + ActionList& actions = s_Instance->m_ActionList; + for (uint i = 0; i < actions.size(); i++) + { + if (actions[i]->name == path) + { + spdel actions[i]; + actions.erase(actions.begin() + i); + break; + } + } + } + s_Instance->Refresh(); + } + + PathAction* DebugMenu::FindPath(const String& name) + { + for (IAction* action : m_ActionList) + { + if (action->type == IAction::Type::PATH) + { + PathAction* a = (PathAction*)action; + if (a->name == name) + return a; + else + a->FindPath(name); + } + } + return nullptr; + } + + bool DebugMenu::IsVisible() + { + return s_Instance->m_Visible; + } + + void DebugMenu::SetVisible(bool visible) + { + s_Instance->m_Visible = visible; + if (visible) + s_Instance->OnActivate(); + else + s_Instance->OnDeactivate(); + } + + void DebugMenu::SetPath(PathAction* path) + { + s_Instance->m_Path = path; + s_Instance->Refresh(); + } + + DebugMenuSettings& DebugMenu::GetSettings() + { + return s_Instance->m_Settings; + } + + bool DebugMenu::OnMousePressed(events::MousePressedEvent& e) + { + return false; + } + + bool DebugMenu::OnMouseReleased(events::MouseReleasedEvent& e) + { + return false; + } + + void DebugMenu::OnActivate() + { + float maxWidth = 0.0f; + float height = m_Settings.verticalPadding; + float yOffset = height; + + ActionList* actionList = m_Path ? &m_Path->actionList : &m_ActionList; + if (m_Path) + { + DebugMenuItem* item = spnew DebugMenuItem(spnew BackAction(m_Path->parent), Rectangle(0.0f, 18.0f - yOffset, 0.0f, height)); + m_Panel->Add(item); + yOffset += height * 2.0f; + maxWidth = item->GetFont().GetWidth(item->GetAction()->ToString()) * 0.5f; + } + + for (IAction* action : *actionList) + { + float y = 18.0f - yOffset; + DebugMenuItem* item = spnew DebugMenuItem(action, Rectangle(0.0f, y, 0.0f, height)); + m_Panel->Add(item); + yOffset += height * 2.0f; + + const Font& font = item->GetFont(); + float stringWidth = font.GetWidth(item->GetAction()->ToString()) * 0.5f; + if (stringWidth > maxWidth) + maxWidth = stringWidth; + } + + maxWidth += m_Settings.horizontalPadding; + for (Widget* widget : m_Panel->GetWidgets()) + { + DebugMenuItem* item = (DebugMenuItem*)widget; + Rectangle& bounds = item->GetBounds(); + bounds.x = maxWidth; + bounds.width = maxWidth; + } + + const float sliderWidth = 0.75f; + float sliderX = maxWidth * 2.0f + sliderWidth; + for (uint i = 0; i < 4; i++) + { + m_Slider[i] = spnew Slider({ sliderX + i * sliderWidth * 2.0f, 9.0f, sliderWidth, 9.0f }, true); + m_Panel->Add(m_Slider[i])->SetActive(false); + } + } + + void DebugMenu::OnDeactivate() + { + m_Panel->Clear(); + } + + void DebugMenu::Refresh() + { + if (!m_Panel || !IsVisible()) + return; + + OnDeactivate(); + OnActivate(); + } + + void DebugMenu::EditValues(const String& name, float* values, uint count, const Slider::ValueChangedCallback* callbacks) + { + for (uint i = 0; i < 4; i++) + { + m_Slider[i]->SetActive(false); + if (i < count) + { + m_Slider[i]->SetCallback(callbacks[i]); + m_Slider[i]->SetActive(m_LastEditedName != name); + m_Slider[i]->SetValue(values[i]); + } + } + m_LastEditedName = m_LastEditedName != name ? name : ""; + } + + void DebugMenu::OnUpdate() + { + } + + void DebugMenu::OnRender(graphics::Renderer2D& renderer) + { + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/debug/DebugMenu.h b/Sparky-core/src/sp/debug/DebugMenu.h new file mode 100644 index 00000000..378c8baf --- /dev/null +++ b/Sparky-core/src/sp/debug/DebugMenu.h @@ -0,0 +1,77 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/graphics/Renderer2D.h" +#include "sp/graphics/ui/Panel.h" + +#include "DebugMenuItem.h" +#include "DebugMenuSlider.h" +#include "sp/graphics/ui/Slider.h" + +namespace sp { namespace debug { + + struct IAction; + struct PathAction; + typedef std::vector ActionList; + + struct DebugMenuSettings + { + float horizontalPadding, verticalPadding; + float fontSize; + }; + + class SP_API DebugMenu + { + private: + static DebugMenu* s_Instance; + private: + bool m_Visible; + DebugMenuSettings m_Settings; + ActionList m_ActionList; + PathAction* m_Path; + + graphics::ui::Panel* m_Panel; + graphics::ui::Slider** m_Slider; + String m_LastEditedName; + public: + static DebugMenu* Get(); + + static void Init(); + static void Add(const String& path); + static void Add(const String& path, IAction* action); + static void Add(const String& path, const std::function& function); + static void Add(const String& path, bool* value); + static void Add(const String& path, float* value); + static void Add(const String& path, float* value, float mininmum, float maximum); + static void Add(const String& path, maths::vec2* value, float mininmum = 0.0f, float maximum = 100.0f); + static void Add(const String& path, maths::vec3* value, float mininmum = 0.0f, float maximum = 100.0f); + static void Add(const String& path, maths::vec4* value, float mininmum = 0.0f, float maximum = 100.0f); + + static void Remove(const String& path); + + PathAction* FindPath(const String& path); + + static bool IsVisible(); + static void SetVisible(bool visible); + + static void SetPath(PathAction* path); + + static DebugMenuSettings& GetSettings(); + + void OnActivate(); + void OnDeactivate(); + void EditValues(const String& name, float* values, uint count, const graphics::ui::Slider::ValueChangedCallback* callback); + + bool OnMousePressed(events::MousePressedEvent& e); + bool OnMouseReleased(events::MouseReleasedEvent& e); + void OnUpdate(); + void OnRender(graphics::Renderer2D& renderer); + private: + DebugMenu(); + + void Refresh(); + + PathAction* CreateOrFindPaths(std::vector& paths, PathAction* action = nullptr); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/debug/DebugMenuAction.h b/Sparky-core/src/sp/debug/DebugMenuAction.h new file mode 100644 index 00000000..0e9c0158 --- /dev/null +++ b/Sparky-core/src/sp/debug/DebugMenuAction.h @@ -0,0 +1,287 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/String.h" + +#include "DebugMenu.h" +#include "sp/graphics/ui/Slider.h" + +#include "sp/maths/maths.h" + +namespace sp { namespace debug { + + struct IAction + { + enum class Type + { + NONE = 0, EMPTY, PATH, BOOLEAN, VALUE, VEC2, VEC3, VEC4 + }; + + String name; + Type type; + + virtual void OnAction() = 0; + virtual String ToString() const = 0; + }; + + typedef std::vector ActionList; + + struct EmptyAction : public IAction + { + EmptyAction(const String& name) + { + this->name = name; + type = Type::EMPTY; + } + + void OnAction() override {} + String ToString() const override { return name; } + }; + + struct CustomAction : public IAction + { + private: + std::function m_Function; + public: + CustomAction(const String& name, const std::function& function) + : m_Function(function) + { + this->name = name; + } + + void OnAction() override + { + m_Function(); + } + + String ToString() const override + { + return name; + } + }; + + struct BackAction : public IAction + { + PathAction* destination; + + BackAction(PathAction* destination) + { + this->name = ".. "; + this->destination = destination; + type = Type::PATH; + } + + void OnAction() override + { + DebugMenu::SetPath(destination); + } + + String ToString() const override + { + return name; + } + }; + + struct PathAction : public IAction + { + ActionList actionList; + PathAction* parent; + + PathAction(const String& name, PathAction* parent) + { + this->name = name; + this->parent = parent; + type = Type::PATH; + } + + void OnAction() override + { + DebugMenu::SetPath(this); + } + + String ToString() const override + { + return name + " >"; + } + + bool ContainsAction(const String& name) + { + for (IAction* action : actionList) + { + if (action->name == name) + return true; + } + return false; + } + + PathAction* FindPath(const String& name) + { + for (IAction* action : actionList) + { + if (action->type == IAction::Type::PATH) + { + PathAction* a = (PathAction*)action; + if (a->name == name) + return a; + else + a->FindPath(name); + } + } + return nullptr; + } + + bool DeleteChild(PathAction* child) + { + for (uint i = 0; i < actionList.size(); i++) + { + if (actionList[i] == child) + { + spdel actionList[i]; + actionList.erase(actionList.begin() + i); + return true; + } + } + return false; + } + }; + + struct BooleanAction : public IAction + { + using Getter = std::function; + using Setter = std::function; + private: + Getter m_Getter; + Setter m_Setter; + public: + BooleanAction(const String& name, const Getter& getter, const Setter& setter) + : m_Getter(getter), m_Setter(setter) { this->name = name; } + + void OnAction() override + { + m_Setter(!m_Getter()); + } + + String ToString() const override + { + return name + " " + (m_Getter() ? "v" : "x"); + } + }; + + template + struct ValueAction : public IAction + { + using Getter = std::function; + using Setter = std::function; + private: + Getter m_Getter; + Setter m_Setter; + T m_Min, m_Max; + public: + ValueAction(const String& name, const Getter& getter, const Setter& setter, T minValue, T maxValue) + : m_Getter(getter), m_Setter(setter), m_Min(minValue), m_Max(maxValue) { this->name = name; } + + void OnAction() override + { + SP_ASSERT(false, "Not implemented!"); + } + + String ToString() const override + { + return name + " " + StringFormat::ToString(m_Getter()); + } + }; + + template<> + void ValueAction::OnAction() + { + float values[1] = { (m_Getter() - m_Min) / (m_Max - m_Min) }; + graphics::ui::Slider::ValueChangedCallback callback[1] = { [&](float value) { m_Setter(value * (m_Max - m_Min) + m_Min); } }; + DebugMenu::Get()->EditValues(name, values, 1, callback); + } + + template<> + String ValueAction::ToString() const + { + return name + " " + StringFormat::Float(m_Getter()); + } + + template<> + void ValueAction::OnAction() + { + float values[2] = + { + (m_Getter().x - m_Min.x) / (m_Max.x - m_Min.x), + (m_Getter().y - m_Min.y) / (m_Max.y - m_Min.y) + }; + graphics::ui::Slider::ValueChangedCallback callbacks[2] = + { + [&](float value) { m_Setter(maths::vec2(value * (m_Max.x - m_Min.x) + m_Min.x, m_Getter().y)); }, + [&](float value) { m_Setter(maths::vec2(m_Getter().x, value * (m_Max.y - m_Min.y) + m_Min.y)); } + }; + DebugMenu::Get()->EditValues(name, values, 2, callbacks); + } + + template<> + String ValueAction::ToString() const + { + return name + " " + StringFormat::Float(m_Getter().x) + ", " + StringFormat::Float(m_Getter().y); + } + + template<> + void ValueAction::OnAction() + { + float values[3] = + { + (m_Getter().x - m_Min.x) / (m_Max.x - m_Min.x), + (m_Getter().y - m_Min.y) / (m_Max.y - m_Min.y), + (m_Getter().z - m_Min.z) / (m_Max.z - m_Min.z) + }; + graphics::ui::Slider::ValueChangedCallback callbacks[3] = + { + [&](float value) { m_Setter(maths::vec3(value * (m_Max.x - m_Min.x) + m_Min.x, m_Getter().y, m_Getter().z)); }, + [&](float value) { m_Setter(maths::vec3(m_Getter().x, value * (m_Max.y - m_Min.y) + m_Min.y, m_Getter().z)); }, + [&](float value) { m_Setter(maths::vec3(m_Getter().x, m_Getter().y, value * (m_Max.z - m_Min.z) + m_Min.z)); } + }; + DebugMenu::Get()->EditValues(name, values, 3, callbacks); + } + + template<> + String ValueAction::ToString() const + { + return name + " " + StringFormat::Float(m_Getter().x) + ", " + StringFormat::Float(m_Getter().y) + ", " + StringFormat::Float(m_Getter().z); + } + + template<> + void ValueAction::OnAction() + { + float values[4] = + { + (m_Getter().x - m_Min.x) / (m_Max.x - m_Min.x), + (m_Getter().y - m_Min.y) / (m_Max.y - m_Min.y), + (m_Getter().z - m_Min.z) / (m_Max.z - m_Min.z), + (m_Getter().w - m_Min.w) / (m_Max.w - m_Min.w) + }; + graphics::ui::Slider::ValueChangedCallback callbacks[4] = + { + [&](float value) { m_Setter(maths::vec4(value * (m_Max.x - m_Min.x) + m_Min.x, m_Getter().y, m_Getter().z, m_Getter().w)); }, + [&](float value) { m_Setter(maths::vec4(m_Getter().x, value * (m_Max.y - m_Min.y) + m_Min.y, m_Getter().z, m_Getter().w)); }, + [&](float value) { m_Setter(maths::vec4(m_Getter().x, m_Getter().y, value * (m_Max.z - m_Min.z) + m_Min.z, m_Getter().w)); }, + [&](float value) { m_Setter(maths::vec4(m_Getter().x, m_Getter().y, m_Getter().z, value * (m_Max.w - m_Min.w) + m_Min.w)); } + }; + DebugMenu::Get()->EditValues(name, values, 4, callbacks); + } + + template<> + String ValueAction::ToString() const + { + return name + " " + StringFormat::Float(m_Getter().x) + ", " + StringFormat::Float(m_Getter().y) + ", " + StringFormat::Float(m_Getter().z) + ", " + StringFormat::Float(m_Getter().w); + } + + typedef ValueAction IntAction; + typedef ValueAction FloatAction; + + typedef ValueAction Vec2Action; + typedef ValueAction Vec3Action; + typedef ValueAction Vec4Action; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/debug/DebugMenuItem.cpp b/Sparky-core/src/sp/debug/DebugMenuItem.cpp new file mode 100644 index 00000000..1cdad51c --- /dev/null +++ b/Sparky-core/src/sp/debug/DebugMenuItem.cpp @@ -0,0 +1,24 @@ +#include "sp/sp.h" +#include "DebugMenuItem.h" +#include "DebugMenuAction.h" + +#include "sp/graphics/FontManager.h" + +#include "DebugMenu.h" + +namespace sp { namespace debug { + + using namespace graphics; + + DebugMenuItem::DebugMenuItem(IAction* action, const maths::Rectangle& bounds) + : Button(action->ToString(), bounds, [action]() { action->OnAction(); }), m_Action(action) + { + } + + void DebugMenuItem::OnUpdate() + { + m_Label = m_Action->ToString(); + m_Font = FontManager::Get((uint)DebugMenu::Get()->GetSettings().fontSize); + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/debug/DebugMenuItem.h b/Sparky-core/src/sp/debug/DebugMenuItem.h new file mode 100644 index 00000000..33b5c7a9 --- /dev/null +++ b/Sparky-core/src/sp/debug/DebugMenuItem.h @@ -0,0 +1,25 @@ +#pragma once + +#include "sp/sp.h" + +#include "sp/graphics/ui/Button.h" +#include "sp/maths/maths.h" + +namespace sp { namespace debug { + + struct IAction; + + + class DebugMenuItem : public graphics::ui::Button + { + protected: + IAction* m_Action; + public: + DebugMenuItem(IAction* action, const maths::Rectangle& bounds); + + void OnUpdate() override; + + inline const IAction* GetAction() const { return m_Action; } + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/debug/DebugMenuSlider.cpp b/Sparky-core/src/sp/debug/DebugMenuSlider.cpp new file mode 100644 index 00000000..b8128cbd --- /dev/null +++ b/Sparky-core/src/sp/debug/DebugMenuSlider.cpp @@ -0,0 +1,8 @@ +#include "sp/sp.h" +#include "DebugMenuSlider.h" + +namespace sp { namespace debug { + + + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/debug/DebugMenuSlider.h b/Sparky-core/src/sp/debug/DebugMenuSlider.h new file mode 100644 index 00000000..4c02c0c3 --- /dev/null +++ b/Sparky-core/src/sp/debug/DebugMenuSlider.h @@ -0,0 +1,10 @@ +#pragma once + +namespace sp { namespace debug { + + class DebugMenuSlider + { + + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/debug/DebugRenderer.cpp b/Sparky-core/src/sp/debug/DebugRenderer.cpp new file mode 100644 index 00000000..80414419 --- /dev/null +++ b/Sparky-core/src/sp/debug/DebugRenderer.cpp @@ -0,0 +1,146 @@ +#include "sp/sp.h" +#include "DebugRenderer.h" + +#include "sp/graphics/shaders/ShaderFactory.h" + +#ifdef SP_DEBUG +namespace sp { namespace debug { + +#define RENDERER_VERTEX_SIZE sizeof(LineVertex) +#define RENDERER_MAX_LINES 65536 +#define RENDERER_BUFFER_SIZE RENDERER_VERTEX_SIZE * RENDERER_MAX_LINES +#define RENDERER_INDICES_SIZE RENDERER_MAX_LINES * 2 + + using namespace graphics; + using namespace maths; + + struct LineVertex + { + vec3 position; + uint color; + }; + + static API::Shader* s_Shader; + static Camera* s_Camera; + static API::VertexArray* s_VertexArray; + static API::IndexBuffer* s_IndexBuffer; + static LineVertex* s_LineVertexPointer; + static uint s_IndexCount; + + void DebugRenderer::Init() + { + s_Camera = nullptr; + s_Shader = ShaderFactory::DebugShader(); + + API::VertexBuffer* buffer = API::VertexBuffer::Create(API::BufferUsage::DYNAMIC); + buffer->Bind(); + buffer->Resize(RENDERER_BUFFER_SIZE); + + API::BufferLayout layout; + layout.Push("position"); + layout.Push("color", 4, true); + buffer->SetLayout(layout); + + s_VertexArray = API::VertexArray::Create(); + s_VertexArray->PushBuffer(buffer); + + uint* indices = new uint[RENDERER_INDICES_SIZE]; + for (int32 i = 0; i < RENDERER_INDICES_SIZE; i++) + indices[i] = i; + + s_IndexBuffer = API::IndexBuffer::Create(indices, RENDERER_INDICES_SIZE); + buffer->Unbind(); + s_VertexArray->Unbind(); + s_IndexCount = 0; + } + + void DebugRenderer::Shutdown() + { + delete s_Shader; + delete s_VertexArray; + delete s_IndexBuffer; + } + + static void Begin() + { + s_VertexArray->GetBuffer()->Bind(); + s_LineVertexPointer = s_VertexArray->GetBuffer()->GetPointer(); + } + + static void End() + { + s_VertexArray->GetBuffer()->ReleasePointer(); + s_VertexArray->GetBuffer()->Unbind(); + } + + void DebugRenderer::DrawLineInternal(const maths::vec3& start, const maths::vec3& end, uint color) + { + s_LineVertexPointer->position = start; + s_LineVertexPointer->color = color; + s_LineVertexPointer++; + + s_LineVertexPointer->position = end; + s_LineVertexPointer->color = color; + s_LineVertexPointer++; + + s_IndexCount += 2; + + if (s_IndexCount >= RENDERER_INDICES_SIZE) + { + End(); + Present(); + Begin(); + } + } + + void DebugRenderer::DrawLine(const maths::vec3& start, const maths::vec3& end, uint color) + { + Begin(); + DrawLineInternal(start, end, color); + End(); + } + + void DebugRenderer::DrawMesh(const Mesh* mesh, DebugRenderMeshFlags flags, const maths::mat4& transform) + { + Vertex* vertices = nullptr; + uint count = mesh->GetDebugData(vertices); + float scalar = 2.0f; + Begin(); + for (uint i = 0; i < count; i++) + { + Vertex& v = vertices[i]; + vec3 position = transform * v.position; + DrawLineInternal(vec3(position.x, position.y, position.z), vec3(position.x + v.normal.x * scalar, position.y + v.normal.y * scalar, position.z + v.normal.z * scalar), 0xff0000ff); + DrawLineInternal(vec3(position.x, position.y, position.z), vec3(position.x + v.binormal.x * scalar, position.y + v.binormal.y * scalar, position.z + v.binormal.z * scalar), 0xff00ff00); + DrawLineInternal(vec3(position.x, position.y, position.z), vec3(position.x + v.tangent.x * scalar, position.y + v.tangent.y * scalar, position.z + v.tangent.z * scalar), 0xffff0000); + } + End(); + } + + void DebugRenderer::SetCamera(Camera* camera) + { + Present(); + s_Camera = camera; + } + + void DebugRenderer::Present() + { + if (!s_Camera) + return; + + /*GLCall(glEnable(GL_DEPTH_TEST)); + s_Shader->Bind(); + // TODO: set this to use uniform declaration! + s_Shader->SetUniformMat4("pr_matrix", s_Camera->GetProjectionMatrix()); + s_Shader->SetUniformMat4("vw_matrix", s_Camera->GetViewMatrix()); + + s_VertexArray->Bind(); + s_IndexBuffer->Bind(); + s_VertexArray->Draw(s_IndexCount, GL_LINES); + s_IndexBuffer->Unbind(); + s_VertexArray->Unbind(); + s_IndexCount = 0;*/ + } + +} } +#endif \ No newline at end of file diff --git a/Sparky-core/src/sp/debug/DebugRenderer.h b/Sparky-core/src/sp/debug/DebugRenderer.h new file mode 100644 index 00000000..5e99b32e --- /dev/null +++ b/Sparky-core/src/sp/debug/DebugRenderer.h @@ -0,0 +1,37 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/maths/maths.h" +#include "sp/graphics/shaders/Shader.h" +#include "sp/graphics/Mesh.h" +#include "sp/graphics/camera/Camera.h" + +namespace sp { namespace debug { + + enum class DebugRenderMeshFlags + { + NONE = 0, + WIREFRAME = BIT(0), + NORMALS = BIT(1), + BINORMALS = BIT(2), + TANGENTS = BIT(3) + }; + + class DebugRenderer + { + private: + DebugRenderer() {} + public: + SP_DEBUG_METHOD_V(static void Init()) + SP_DEBUG_METHOD_V(static void Shutdown()) + SP_DEBUG_METHOD_V(static void DrawLine(const maths::vec3& start, const maths::vec3& end, uint color = 0xffffffff)) + SP_DEBUG_METHOD_V(static void DrawMesh(const graphics::Mesh* mesh, DebugRenderMeshFlags flags, const maths::mat4& transform = maths::mat4::Identity())) + + SP_DEBUG_METHOD_V(static void SetCamera(graphics::Camera* camera)) + + SP_DEBUG_METHOD_V(static void Present()) + private: + SP_DEBUG_METHOD_V(static void DrawLineInternal(const maths::vec3& start, const maths::vec3& end, uint color)) + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/embedded/Embedded.cpp b/Sparky-core/src/sp/embedded/Embedded.cpp new file mode 100644 index 00000000..24c8dc8b --- /dev/null +++ b/Sparky-core/src/sp/embedded/Embedded.cpp @@ -0,0 +1,14 @@ +#include "sp/sp.h" +#include "Embedded.h" + +namespace sp { namespace internal { + + byte DEFAULT_FONT_ARRAY[] = + { +#include "files/SourceSansPro-Light.embed" + }; + + byte* DEFAULT_FONT = DEFAULT_FONT_ARRAY; + uint DEFAULT_FONT_SIZE = sizeof(DEFAULT_FONT_ARRAY); + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/embedded/Embedded.h b/Sparky-core/src/sp/embedded/Embedded.h new file mode 100644 index 00000000..861645e0 --- /dev/null +++ b/Sparky-core/src/sp/embedded/Embedded.h @@ -0,0 +1,10 @@ +#pragma once + +#include + +namespace sp { namespace internal { + + extern byte* DEFAULT_FONT; + extern uint DEFAULT_FONT_SIZE; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/embedded/files/SourceSansPro-Light.embed b/Sparky-core/src/sp/embedded/files/SourceSansPro-Light.embed new file mode 100644 index 00000000..10ebd804 --- /dev/null +++ b/Sparky-core/src/sp/embedded/files/SourceSansPro-Light.embed @@ -0,0 +1,36663 @@ +0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, +0x00, 0x04, 0x00, 0x30, 0x42, 0x41, 0x53, 0x45, +0x8b, 0x19, 0x94, 0xb1, 0x00, 0x04, 0x60, 0x80, +0x00, 0x00, 0x00, 0x3a, 0x44, 0x53, 0x49, 0x47, +0x70, 0xdd, 0xa0, 0x2f, 0x00, 0x04, 0x60, 0xbc, +0x00, 0x00, 0x18, 0xfc, 0x47, 0x44, 0x45, 0x46, +0x83, 0x24, 0x87, 0xb4, 0x00, 0x03, 0x23, 0x44, +0x00, 0x00, 0x03, 0xc2, 0x47, 0x50, 0x4f, 0x53, +0x77, 0x01, 0xdf, 0xc7, 0x00, 0x03, 0x27, 0x08, +0x00, 0x00, 0xfd, 0x1c, 0x47, 0x53, 0x55, 0x42, +0x92, 0xa2, 0x9d, 0x89, 0x00, 0x04, 0x24, 0x24, +0x00, 0x00, 0x3c, 0x5a, 0x4f, 0x53, 0x2f, 0x32, +0x5d, 0x4c, 0xd6, 0x2d, 0x00, 0x00, 0x01, 0xb8, +0x00, 0x00, 0x00, 0x60, 0x63, 0x6d, 0x61, 0x70, +0x97, 0xc0, 0xf1, 0x5b, 0x00, 0x00, 0x20, 0x78, +0x00, 0x00, 0x36, 0x86, 0x63, 0x76, 0x74, 0x20, +0x00, 0xd6, 0x0d, 0x85, 0x00, 0x00, 0x58, 0xcc, +0x00, 0x00, 0x00, 0x2a, 0x66, 0x70, 0x67, 0x6d, +0x06, 0x59, 0x9c, 0x37, 0x00, 0x00, 0x57, 0x00, +0x00, 0x00, 0x01, 0x73, 0x67, 0x61, 0x73, 0x70, +0xff, 0xff, 0x00, 0x03, 0x00, 0x03, 0x23, 0x3c, +0x00, 0x00, 0x00, 0x08, 0x67, 0x6c, 0x79, 0x66, +0xbd, 0xa4, 0x46, 0x97, 0x00, 0x00, 0x77, 0x5c, +0x00, 0x02, 0x54, 0x24, 0x68, 0x65, 0x61, 0x64, +0x05, 0x6e, 0xcd, 0x46, 0x00, 0x00, 0x01, 0x3c, +0x00, 0x00, 0x00, 0x36, 0x68, 0x68, 0x65, 0x61, +0x0a, 0x86, 0x0d, 0x5b, 0x00, 0x00, 0x01, 0x74, +0x00, 0x00, 0x00, 0x24, 0x68, 0x6d, 0x74, 0x78, +0x0d, 0xbc, 0x33, 0xd6, 0x00, 0x00, 0x02, 0x18, +0x00, 0x00, 0x1e, 0x60, 0x6c, 0x6f, 0x63, 0x61, +0x08, 0x6a, 0x86, 0xf8, 0x00, 0x00, 0x58, 0xf8, +0x00, 0x00, 0x1e, 0x64, 0x6d, 0x61, 0x78, 0x70, +0x09, 0xb7, 0x02, 0x7e, 0x00, 0x00, 0x01, 0x98, +0x00, 0x00, 0x00, 0x20, 0x6e, 0x61, 0x6d, 0x65, +0x87, 0xa8, 0x8e, 0x2c, 0x00, 0x02, 0xcb, 0x80, +0x00, 0x00, 0x0c, 0xae, 0x70, 0x6f, 0x73, 0x74, +0x43, 0x33, 0xa0, 0x6f, 0x00, 0x02, 0xd8, 0x30, +0x00, 0x00, 0x4b, 0x0c, 0x70, 0x72, 0x65, 0x70, +0x32, 0x15, 0xa4, 0x36, 0x00, 0x00, 0x58, 0x74, +0x00, 0x00, 0x00, 0x56, 0x00, 0x01, 0x00, 0x00, +0x00, 0x02, 0x02, 0x8f, 0xc8, 0x6a, 0x48, 0xa0, +0x5f, 0x0f, 0x3c, 0xf5, 0x00, 0x09, 0x03, 0xe8, +0x00, 0x00, 0x00, 0x00, 0xcf, 0xd2, 0x92, 0x65, +0x00, 0x00, 0x00, 0x00, 0xcf, 0xd2, 0xf4, 0xd6, +0xfe, 0x3b, 0xfe, 0xe4, 0x08, 0x70, 0x03, 0xb1, +0x00, 0x00, 0x00, 0x09, 0x00, 0x02, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x03, 0xd8, 0xfe, 0xef, 0x00, 0x00, 0x08, 0x98, +0xfe, 0x3b, 0xfe, 0x3b, 0x08, 0x70, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x98, +0x00, 0x01, 0x00, 0x00, 0x07, 0x98, 0x00, 0x8e, +0x00, 0x0c, 0x00, 0x7b, 0x00, 0x05, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, +0x02, 0x00, 0x01, 0x73, 0x00, 0x03, 0x00, 0x01, +0x00, 0x03, 0x01, 0xd9, 0x01, 0x2c, 0x00, 0x05, +0x00, 0x00, 0x02, 0x8a, 0x02, 0x58, 0x00, 0x00, +0x00, 0x4b, 0x02, 0x8a, 0x02, 0x58, 0x00, 0x00, +0x01, 0x5e, 0x00, 0x32, 0x01, 0x20, 0x00, 0x00, +0x02, 0x0b, 0x04, 0x03, 0x03, 0x04, 0x03, 0x02, +0x02, 0x04, 0x60, 0x00, 0x02, 0xf7, 0x02, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x41, 0x44, 0x42, 0x45, 0x00, 0x00, +0x00, 0x00, 0xff, 0xff, 0x02, 0xee, 0xff, 0x06, +0x00, 0x00, 0x03, 0xd8, 0x01, 0x11, 0x20, 0x00, +0x01, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x02, 0x94, 0x00, 0x00, 0x00, 0x20, 0x00, 0x03, +0x02, 0x78, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, +0x00, 0xc8, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, +0x02, 0x0e, 0x00, 0x08, 0x02, 0x42, 0x00, 0x61, +0x02, 0x34, 0x00, 0x37, 0x02, 0x5c, 0x00, 0x61, +0x02, 0x03, 0x00, 0x61, 0x01, 0xdd, 0x00, 0x61, +0x02, 0x5d, 0x00, 0x37, 0x02, 0x7f, 0x00, 0x61, +0x00, 0xf0, 0x00, 0x61, 0x01, 0xce, 0x00, 0x29, +0x02, 0x2e, 0x00, 0x61, 0x01, 0xd3, 0x00, 0x61, +0x02, 0xc2, 0x00, 0x61, 0x02, 0x7c, 0x00, 0x61, +0x02, 0x8c, 0x00, 0x37, 0x02, 0x25, 0x00, 0x61, +0x02, 0x8c, 0x00, 0x37, 0x02, 0x20, 0x00, 0x61, +0x02, 0x09, 0x00, 0x2e, 0x02, 0x0c, 0x00, 0x1d, +0x02, 0x7a, 0x00, 0x5f, 0x01, 0xeb, 0x00, 0x04, +0x03, 0x02, 0x00, 0x1c, 0x01, 0xe2, 0x00, 0x11, +0x01, 0xbf, 0x00, 0x03, 0x02, 0x1a, 0x00, 0x32, +0x01, 0xeb, 0x00, 0x3a, 0x02, 0x1e, 0x00, 0x5c, +0x01, 0xc1, 0x00, 0x34, 0x02, 0x20, 0x00, 0x34, +0x01, 0xe3, 0x00, 0x34, 0x01, 0x07, 0x00, 0x21, +0x01, 0xe7, 0x00, 0x34, 0x02, 0x10, 0x00, 0x5c, +0x00, 0xe5, 0x00, 0x4b, 0x00, 0xe5, 0xff, 0xdf, +0x01, 0xd0, 0x00, 0x5c, 0x00, 0xed, 0x00, 0x5c, +0x03, 0x2c, 0x00, 0x5c, 0x02, 0x14, 0x00, 0x5c, +0x02, 0x17, 0x00, 0x34, 0x02, 0x20, 0x00, 0x5c, +0x02, 0x20, 0x00, 0x34, 0x01, 0x3d, 0x00, 0x5c, +0x01, 0x95, 0x00, 0x20, 0x01, 0x38, 0x00, 0x1c, +0x02, 0x11, 0x00, 0x55, 0x01, 0xb2, 0x00, 0x0c, +0x02, 0xad, 0x00, 0x18, 0x01, 0x97, 0x00, 0x0e, +0x01, 0xb4, 0x00, 0x0c, 0x01, 0x94, 0x00, 0x1b, +0x02, 0x0e, 0x00, 0x08, 0x02, 0x0e, 0x00, 0x08, +0x02, 0x0e, 0x00, 0x08, 0x02, 0x0e, 0x00, 0x08, +0x02, 0x0e, 0x00, 0x08, 0x02, 0x0e, 0x00, 0x08, +0x02, 0x0e, 0x00, 0x08, 0x02, 0x0e, 0x00, 0x08, +0x02, 0x0e, 0x00, 0x08, 0x02, 0x0e, 0x00, 0x08, +0x02, 0x0e, 0x00, 0x08, 0x02, 0x0e, 0x00, 0x08, +0x02, 0x0e, 0x00, 0x08, 0x02, 0x0e, 0x00, 0x08, +0x02, 0x0e, 0x00, 0x08, 0x02, 0x0e, 0x00, 0x08, +0x02, 0x0e, 0x00, 0x08, 0x02, 0x0e, 0x00, 0x08, +0x02, 0x0e, 0x00, 0x08, 0x02, 0x0e, 0x00, 0x08, +0x02, 0x0e, 0x00, 0x08, 0x02, 0x0e, 0x00, 0x08, +0x03, 0x29, 0x00, 0x15, 0x03, 0x29, 0x00, 0x15, +0x03, 0x29, 0x00, 0x15, 0x02, 0x4c, 0x00, 0x21, +0x02, 0x42, 0x00, 0x61, 0x02, 0x34, 0x00, 0x37, +0x02, 0x34, 0x00, 0x37, 0x02, 0x34, 0x00, 0x37, +0x02, 0x34, 0x00, 0x37, 0x02, 0x34, 0x00, 0x37, +0x02, 0x5c, 0x00, 0x61, 0x02, 0x5c, 0x00, 0x61, +0x02, 0x5c, 0x00, 0x61, 0x02, 0x71, 0x00, 0x25, +0x02, 0x03, 0x00, 0x61, 0x02, 0x03, 0x00, 0x61, +0x02, 0x03, 0x00, 0x61, 0x02, 0x03, 0x00, 0x61, +0x02, 0x03, 0x00, 0x61, 0x02, 0x03, 0x00, 0x61, +0x02, 0x03, 0x00, 0x61, 0x02, 0x03, 0x00, 0x61, +0x02, 0x03, 0x00, 0x61, 0x02, 0x03, 0x00, 0x61, +0x02, 0x03, 0x00, 0x61, 0x02, 0x03, 0x00, 0x61, +0x02, 0x03, 0x00, 0x61, 0x02, 0x03, 0x00, 0x61, +0x02, 0x03, 0x00, 0x61, 0x02, 0x03, 0x00, 0x61, +0x02, 0x03, 0x00, 0x61, 0x02, 0x03, 0x00, 0x61, +0x02, 0x5d, 0x00, 0x37, 0x02, 0x5d, 0x00, 0x37, +0x02, 0x5d, 0x00, 0x37, 0x02, 0x5d, 0x00, 0x37, +0x02, 0x5d, 0x00, 0x37, 0x02, 0x5d, 0x00, 0x37, +0x02, 0x5d, 0x00, 0x37, 0x02, 0x5d, 0x00, 0x37, +0x02, 0x5d, 0x00, 0x37, 0x02, 0x7f, 0x00, 0x61, +0x02, 0x7f, 0x00, 0x61, 0x02, 0x7f, 0x00, 0x61, +0x02, 0xa0, 0x00, 0x24, 0x00, 0xf0, 0x00, 0x08, +0x00, 0xf0, 0x00, 0x4f, 0x00, 0xf0, 0xff, 0xf1, +0x00, 0xf0, 0xff, 0xd3, 0x00, 0xf0, 0xff, 0xf2, +0x00, 0xf0, 0xff, 0xfc, 0x00, 0xf0, 0x00, 0x50, +0x00, 0xf0, 0xff, 0xf1, 0x00, 0xf0, 0x00, 0x41, +0x00, 0xf0, 0x00, 0x53, 0x00, 0xf0, 0x00, 0x2c, +0x00, 0xf0, 0xff, 0xf0, 0x01, 0xce, 0x00, 0x29, +0x02, 0x2e, 0x00, 0x61, 0x02, 0x2e, 0x00, 0x61, +0x02, 0x2e, 0x00, 0x61, 0x01, 0xd3, 0x00, 0x51, +0x01, 0xd3, 0x00, 0x61, 0x01, 0xd3, 0x00, 0x61, +0x01, 0xd3, 0x00, 0x61, 0x01, 0xd3, 0x00, 0x61, +0x01, 0xd3, 0xff, 0xfe, 0x01, 0xd3, 0x00, 0x61, +0x01, 0xd4, 0x00, 0x04, 0x02, 0xc2, 0x00, 0x61, +0x02, 0xc2, 0x00, 0x61, 0x02, 0xc2, 0x00, 0x61, +0x02, 0x7c, 0x00, 0x61, 0x02, 0x7c, 0x00, 0x61, +0x02, 0x7c, 0x00, 0x61, 0x02, 0x7c, 0x00, 0x61, +0x02, 0x7c, 0x00, 0x61, 0x02, 0x7c, 0x00, 0x61, +0x02, 0x7c, 0x00, 0x61, 0x02, 0x7c, 0x00, 0x61, +0x02, 0x8c, 0x00, 0x37, 0x02, 0x8c, 0x00, 0x37, +0x02, 0x8c, 0x00, 0x37, 0x02, 0x8c, 0x00, 0x37, +0x02, 0x8c, 0x00, 0x37, 0x02, 0x8c, 0x00, 0x37, +0x02, 0x8c, 0x00, 0x37, 0x02, 0x8c, 0x00, 0x37, +0x02, 0x8c, 0x00, 0x37, 0x02, 0x8c, 0x00, 0x37, +0x02, 0x8c, 0x00, 0x37, 0x02, 0x8c, 0x00, 0x37, +0x02, 0x8c, 0x00, 0x37, 0x02, 0x8c, 0x00, 0x37, +0x02, 0x8c, 0x00, 0x37, 0x02, 0x8c, 0x00, 0x37, +0x02, 0x8c, 0x00, 0x37, 0x02, 0x8c, 0x00, 0x38, +0x03, 0x41, 0x00, 0x37, 0x02, 0x8c, 0x00, 0x3b, +0x02, 0x8c, 0x00, 0x3b, 0x02, 0x8c, 0x00, 0x3b, +0x02, 0x8c, 0x00, 0x3b, 0x02, 0x8c, 0x00, 0x3b, +0x02, 0x8c, 0x00, 0x3b, 0x02, 0x8c, 0x00, 0x37, +0x02, 0x20, 0x00, 0x61, 0x02, 0x20, 0x00, 0x61, +0x02, 0x20, 0x00, 0x61, 0x02, 0x20, 0x00, 0x61, +0x02, 0x20, 0x00, 0x61, 0x02, 0x20, 0x00, 0x61, +0x02, 0x20, 0x00, 0x61, 0x02, 0x09, 0x00, 0x2e, +0x02, 0x09, 0x00, 0x2e, 0x02, 0x09, 0x00, 0x2e, +0x02, 0x09, 0x00, 0x2e, 0x02, 0x09, 0x00, 0x2e, +0x02, 0x09, 0x00, 0x2e, 0x02, 0x09, 0x00, 0x2e, +0x02, 0x84, 0x00, 0x62, 0x02, 0x0c, 0x00, 0x1d, +0x02, 0x0c, 0x00, 0x1d, 0x02, 0x0c, 0x00, 0x1d, +0x02, 0x0c, 0x00, 0x1d, 0x02, 0x0c, 0x00, 0x1d, +0x02, 0x0c, 0x00, 0x1d, 0x02, 0x7a, 0x00, 0x5f, +0x02, 0x7a, 0x00, 0x5f, 0x02, 0x7a, 0x00, 0x5f, +0x02, 0x7a, 0x00, 0x5f, 0x02, 0x7a, 0x00, 0x5f, +0x02, 0x7a, 0x00, 0x5f, 0x02, 0x7a, 0x00, 0x5f, +0x02, 0x7a, 0x00, 0x5f, 0x02, 0x7a, 0x00, 0x5f, +0x02, 0x7a, 0x00, 0x5f, 0x02, 0x7a, 0x00, 0x5f, +0x02, 0x7a, 0x00, 0x5f, 0x02, 0x7a, 0x00, 0x5f, +0x02, 0x7a, 0x00, 0x5f, 0x02, 0x7a, 0x00, 0x5f, +0x02, 0x7a, 0x00, 0x5f, 0x02, 0x7a, 0x00, 0x5f, +0x02, 0x85, 0x00, 0x5f, 0x02, 0x85, 0x00, 0x5f, +0x02, 0x85, 0x00, 0x5f, 0x02, 0x85, 0x00, 0x5f, +0x02, 0x85, 0x00, 0x5f, 0x02, 0x85, 0x00, 0x5f, +0x03, 0x02, 0x00, 0x1c, 0x03, 0x02, 0x00, 0x1c, +0x03, 0x02, 0x00, 0x1c, 0x03, 0x02, 0x00, 0x1c, +0x01, 0xbf, 0x00, 0x03, 0x01, 0xbf, 0x00, 0x03, +0x01, 0xbf, 0x00, 0x03, 0x01, 0xbf, 0x00, 0x03, +0x01, 0xbf, 0x00, 0x03, 0x01, 0xbf, 0x00, 0x03, +0x01, 0xbf, 0x00, 0x03, 0x01, 0xbf, 0x00, 0x03, +0x02, 0x1a, 0x00, 0x32, 0x02, 0x1a, 0x00, 0x32, +0x02, 0x1a, 0x00, 0x32, 0x02, 0x1a, 0x00, 0x32, +0x02, 0x1a, 0x00, 0x32, 0x02, 0x71, 0x00, 0x25, +0x02, 0x33, 0x00, 0x61, 0x02, 0x88, 0x00, 0x3e, +0x02, 0x69, 0x00, 0x61, 0x01, 0xe1, 0x00, 0x61, +0x01, 0xeb, 0x00, 0x3a, 0x01, 0xeb, 0x00, 0x3a, +0x01, 0xeb, 0x00, 0x3a, 0x01, 0xeb, 0x00, 0x3a, +0x01, 0xeb, 0x00, 0x3a, 0x01, 0xeb, 0x00, 0x3a, +0x01, 0xeb, 0x00, 0x3a, 0x01, 0xeb, 0x00, 0x3a, +0x01, 0xeb, 0x00, 0x3a, 0x01, 0xeb, 0x00, 0x3a, +0x01, 0xeb, 0x00, 0x3a, 0x01, 0xeb, 0x00, 0x3a, +0x01, 0xeb, 0x00, 0x1b, 0x01, 0xeb, 0x00, 0x3a, +0x01, 0xeb, 0x00, 0x3a, 0x01, 0xeb, 0x00, 0x3a, +0x01, 0xeb, 0x00, 0x3a, 0x01, 0xeb, 0x00, 0x3a, +0x01, 0xeb, 0x00, 0x3a, 0x01, 0xeb, 0x00, 0x3a, +0x01, 0xeb, 0x00, 0x3a, 0x01, 0xeb, 0x00, 0x3a, +0x03, 0x10, 0x00, 0x41, 0x03, 0x10, 0x00, 0x41, +0x03, 0x10, 0x00, 0x41, 0x02, 0x10, 0x00, 0x0f, +0x02, 0x1e, 0x00, 0x5c, 0x01, 0xc1, 0x00, 0x34, +0x01, 0xc1, 0x00, 0x34, 0x01, 0xc1, 0x00, 0x34, +0x01, 0xc1, 0x00, 0x34, 0x01, 0xc1, 0x00, 0x34, +0x02, 0x25, 0x00, 0x34, 0x02, 0x20, 0x00, 0x34, +0x02, 0x20, 0x00, 0x34, 0x02, 0x20, 0x00, 0x34, +0x01, 0xe3, 0x00, 0x34, 0x01, 0xe3, 0x00, 0x34, +0x01, 0xe3, 0x00, 0x34, 0x01, 0xe3, 0x00, 0x34, +0x01, 0xe3, 0x00, 0x34, 0x01, 0xe3, 0x00, 0x34, +0x01, 0xe3, 0x00, 0x34, 0x01, 0xe3, 0x00, 0x34, +0x01, 0xe3, 0x00, 0x34, 0x01, 0xe3, 0x00, 0x34, +0x01, 0xe3, 0x00, 0x34, 0x01, 0xe3, 0x00, 0x34, +0x01, 0xe3, 0x00, 0x22, 0x01, 0xe3, 0x00, 0x34, +0x01, 0xe3, 0x00, 0x34, 0x01, 0xe3, 0x00, 0x34, +0x01, 0xe3, 0x00, 0x34, 0x01, 0xe3, 0x00, 0x34, +0x01, 0xe7, 0x00, 0x34, 0x01, 0xe7, 0x00, 0x34, +0x01, 0xe7, 0x00, 0x34, 0x01, 0xe7, 0x00, 0x34, +0x01, 0xe7, 0x00, 0x34, 0x01, 0xe7, 0x00, 0x34, +0x01, 0xe7, 0x00, 0x34, 0x01, 0xe7, 0x00, 0x34, +0x02, 0x10, 0xff, 0xed, 0x02, 0x10, 0x00, 0x5c, +0x02, 0x10, 0x00, 0x5c, 0x02, 0x10, 0x00, 0x5c, +0x02, 0x10, 0x00, 0x0f, 0x00, 0xe5, 0xff, 0xff, +0x00, 0xe5, 0x00, 0x3d, 0x00, 0xe5, 0xff, 0xe8, +0x00, 0xe5, 0xff, 0xce, 0x00, 0xe5, 0xff, 0xf4, +0x00, 0xe5, 0xff, 0xf7, 0x00, 0xe5, 0xff, 0xe8, +0x00, 0xe5, 0x00, 0x3b, 0x00, 0xe5, 0x00, 0x4b, +0x00, 0xe5, 0x00, 0x25, 0x00, 0xe5, 0x00, 0x25, +0x00, 0xe5, 0xff, 0xde, 0x00, 0xe5, 0x00, 0x5c, +0x00, 0xe5, 0xff, 0xdf, 0x01, 0xd0, 0x00, 0x5c, +0x01, 0xd0, 0x00, 0x5c, 0x01, 0xd0, 0x00, 0x5c, +0x01, 0xd0, 0x00, 0x5c, 0x00, 0xed, 0x00, 0x41, +0x00, 0xf1, 0x00, 0x5c, 0x01, 0x34, 0x00, 0x5c, +0x00, 0xed, 0x00, 0x38, 0x00, 0xed, 0x00, 0x5c, +0x00, 0xed, 0xff, 0xf6, 0x00, 0xed, 0x00, 0x11, +0x00, 0xef, 0x00, 0x0a, 0x03, 0x2c, 0x00, 0x5c, +0x03, 0x2c, 0x00, 0x5c, 0x03, 0x2c, 0x00, 0x5c, +0x02, 0x14, 0x00, 0x5c, 0x02, 0x14, 0x00, 0x5c, +0x02, 0x14, 0x00, 0x5c, 0x02, 0x14, 0x00, 0x5c, +0x02, 0x14, 0x00, 0x5c, 0x02, 0x14, 0x00, 0x5c, +0x02, 0x14, 0x00, 0x5c, 0x02, 0x14, 0x00, 0x5c, +0x02, 0xd9, 0x00, 0x3a, 0x02, 0x17, 0x00, 0x34, +0x02, 0x17, 0x00, 0x34, 0x02, 0x17, 0x00, 0x34, +0x02, 0x17, 0x00, 0x34, 0x02, 0x17, 0x00, 0x34, +0x02, 0x17, 0x00, 0x34, 0x02, 0x17, 0x00, 0x34, +0x02, 0x17, 0x00, 0x34, 0x02, 0x17, 0x00, 0x34, +0x02, 0x17, 0x00, 0x34, 0x02, 0x17, 0x00, 0x34, +0x02, 0x17, 0x00, 0x28, 0x02, 0x17, 0x00, 0x34, +0x02, 0x17, 0x00, 0x34, 0x02, 0x17, 0x00, 0x34, +0x02, 0x17, 0x00, 0x34, 0x02, 0x17, 0x00, 0x34, +0x02, 0x17, 0x00, 0x2e, 0x03, 0x50, 0x00, 0x34, +0x02, 0x17, 0x00, 0x34, 0x02, 0x17, 0x00, 0x34, +0x02, 0x17, 0x00, 0x34, 0x02, 0x17, 0x00, 0x34, +0x02, 0x17, 0x00, 0x34, 0x02, 0x17, 0x00, 0x34, +0x02, 0x17, 0x00, 0x34, 0x01, 0x3d, 0x00, 0x5c, +0x01, 0x3d, 0x00, 0x1b, 0x01, 0x3d, 0x00, 0x3e, +0x01, 0x3d, 0x00, 0x5c, 0x01, 0x3d, 0x00, 0x4a, +0x01, 0x3d, 0x00, 0x4a, 0x01, 0x3d, 0xff, 0xf4, +0x01, 0x95, 0x00, 0x20, 0x01, 0x95, 0x00, 0x20, +0x01, 0x95, 0x00, 0x20, 0x01, 0x95, 0x00, 0x20, +0x01, 0x95, 0x00, 0x20, 0x01, 0x95, 0x00, 0x20, +0x01, 0x95, 0x00, 0x20, 0x02, 0x1e, 0x00, 0x5c, +0x01, 0x38, 0x00, 0x1c, 0x01, 0x38, 0x00, 0x1c, +0x01, 0x38, 0x00, 0x1c, 0x01, 0x38, 0x00, 0x1c, +0x01, 0x38, 0x00, 0x1c, 0x01, 0x38, 0x00, 0x04, +0x01, 0x38, 0x00, 0x1c, 0x02, 0x11, 0x00, 0x55, +0x02, 0x11, 0x00, 0x55, 0x02, 0x11, 0x00, 0x55, +0x02, 0x11, 0x00, 0x55, 0x02, 0x11, 0x00, 0x55, +0x02, 0x11, 0x00, 0x55, 0x02, 0x11, 0x00, 0x55, +0x02, 0x11, 0x00, 0x55, 0x02, 0x11, 0x00, 0x55, +0x02, 0x11, 0x00, 0x55, 0x02, 0x11, 0x00, 0x55, +0x02, 0x11, 0x00, 0x55, 0x02, 0x11, 0x00, 0x55, +0x02, 0x11, 0x00, 0x55, 0x02, 0x11, 0x00, 0x55, +0x02, 0x11, 0x00, 0x55, 0x02, 0x11, 0x00, 0x55, +0x02, 0x11, 0x00, 0x55, 0x02, 0x11, 0x00, 0x55, +0x02, 0x11, 0x00, 0x55, 0x02, 0x11, 0x00, 0x55, +0x02, 0x11, 0x00, 0x55, 0x02, 0x11, 0x00, 0x55, +0x02, 0xad, 0x00, 0x18, 0x02, 0xad, 0x00, 0x18, +0x02, 0xad, 0x00, 0x18, 0x02, 0xad, 0x00, 0x18, +0x01, 0xb4, 0x00, 0x0c, 0x01, 0xb4, 0x00, 0x0c, +0x01, 0xb4, 0x00, 0x0c, 0x01, 0xb4, 0x00, 0x0c, +0x01, 0xb4, 0x00, 0x0c, 0x01, 0xb4, 0x00, 0x0c, +0x01, 0xb4, 0x00, 0x0c, 0x01, 0xb4, 0x00, 0x0c, +0x01, 0x94, 0x00, 0x1b, 0x01, 0x94, 0x00, 0x1b, +0x01, 0x94, 0x00, 0x1b, 0x01, 0x94, 0x00, 0x1b, +0x01, 0x94, 0x00, 0x1b, 0x02, 0x17, 0x00, 0x3c, +0x02, 0x20, 0x00, 0x5c, 0x02, 0x14, 0x00, 0x5c, +0x00, 0xe5, 0xff, 0xdf, 0x01, 0xc9, 0x00, 0x4b, +0x01, 0xf3, 0x00, 0x54, 0x02, 0x20, 0x00, 0x5c, +0x02, 0x20, 0x00, 0x5c, 0x01, 0xc1, 0x00, 0x1a, +0x01, 0xc1, 0x00, 0x34, 0x02, 0x20, 0x00, 0x34, +0x02, 0x20, 0x00, 0x34, 0x01, 0xe3, 0x00, 0x26, +0x02, 0x20, 0x00, 0x34, 0x01, 0xf0, 0x00, 0x5c, +0x01, 0xe3, 0x00, 0x26, 0x02, 0x65, 0x00, 0x26, +0x01, 0xab, 0x00, 0x35, 0x01, 0xbc, 0x00, 0x27, +0x02, 0x16, 0x00, 0x35, 0x00, 0xf1, 0xff, 0xe5, +0x02, 0x21, 0x00, 0x35, 0x02, 0x21, 0x00, 0x35, +0x01, 0xe6, 0x00, 0x34, 0x01, 0xb2, 0x00, 0x0c, +0x01, 0xdd, 0x00, 0x10, 0x02, 0x14, 0x00, 0x55, +0x02, 0x10, 0x00, 0x5c, 0x02, 0x10, 0x00, 0x5c, +0x02, 0x26, 0x00, 0x5c, 0x00, 0xf1, 0x00, 0x05, +0x01, 0x36, 0x00, 0x2b, 0x00, 0xef, 0xff, 0x99, +0x01, 0x02, 0xff, 0xfd, 0x00, 0xed, 0x00, 0x5c, +0x02, 0x1c, 0x00, 0x5c, 0x01, 0x8f, 0x00, 0x5c, +0x03, 0x2c, 0x00, 0x55, 0x03, 0x2c, 0x00, 0x55, +0x03, 0x2c, 0x00, 0x5c, 0x02, 0x14, 0xff, 0xf3, +0x02, 0x14, 0x00, 0x5c, 0x02, 0x14, 0x00, 0x5c, +0x02, 0x17, 0x00, 0x34, 0x02, 0xac, 0x00, 0x34, +0x02, 0x87, 0x00, 0x34, 0x01, 0x3d, 0xff, 0xfc, +0x01, 0x3d, 0xff, 0xfc, 0x01, 0x3d, 0xff, 0xfc, +0x01, 0x3d, 0x00, 0x5c, 0x01, 0x32, 0x00, 0x5c, +0x01, 0xda, 0x00, 0x5c, 0x01, 0xda, 0x00, 0x2a, +0x01, 0x95, 0x00, 0x20, 0x00, 0xe5, 0xff, 0xdf, +0x00, 0xf1, 0xff, 0xe5, 0x01, 0x38, 0x00, 0x1c, +0x02, 0x25, 0x00, 0x05, 0x02, 0x14, 0x00, 0x2a, +0x02, 0x05, 0x00, 0x55, 0x01, 0xb2, 0x00, 0x0c, +0x02, 0xad, 0x00, 0x18, 0x01, 0xb4, 0x00, 0x0c, +0x01, 0x81, 0x00, 0x03, 0x01, 0x94, 0x00, 0x1b, +0x01, 0xa2, 0x00, 0x1b, 0x01, 0x94, 0x00, 0x02, +0x01, 0x8f, 0x00, 0x01, 0x01, 0x96, 0x00, 0x18, +0x01, 0xa4, 0x00, 0x05, 0x01, 0xa4, 0x00, 0x14, +0x01, 0x07, 0x00, 0x06, 0x01, 0xfb, 0x00, 0x42, +0x02, 0x12, 0x00, 0x21, 0x02, 0xf7, 0x00, 0x21, +0x02, 0xff, 0x00, 0x21, 0x02, 0x1b, 0x00, 0x21, +0x03, 0x25, 0x00, 0x21, 0x01, 0x38, 0x00, 0x2b, +0x01, 0x38, 0x00, 0x2b, 0x01, 0x38, 0x00, 0x2b, +0x01, 0x38, 0x00, 0x16, 0x01, 0x38, 0xff, 0xf8, +0x01, 0x38, 0x00, 0x17, 0x01, 0x38, 0x00, 0x21, +0x01, 0x38, 0x00, 0x2b, 0x01, 0x38, 0x00, 0x16, +0x01, 0x38, 0x00, 0x2b, 0x01, 0x38, 0x00, 0x2b, +0x01, 0x38, 0x00, 0x2b, 0x01, 0x38, 0x00, 0x15, +0x02, 0x7c, 0x00, 0x61, 0x02, 0x20, 0x00, 0x34, +0x02, 0x20, 0x00, 0x34, 0x02, 0x20, 0x00, 0x34, +0x02, 0x20, 0x00, 0x34, 0x02, 0x20, 0x00, 0x34, +0x02, 0x20, 0x00, 0x34, 0x02, 0x20, 0x00, 0x34, +0x02, 0x20, 0x00, 0x34, 0x02, 0x20, 0x00, 0x34, +0x02, 0x20, 0x00, 0x34, 0x02, 0x20, 0x00, 0x34, +0x02, 0x20, 0x00, 0x34, 0x02, 0x20, 0x00, 0x34, +0x02, 0x20, 0x00, 0x2e, 0x02, 0x20, 0x00, 0x34, +0x02, 0x20, 0x00, 0x34, 0x02, 0x20, 0x00, 0x34, +0x02, 0x20, 0x00, 0x34, 0x02, 0x20, 0x00, 0x34, +0x02, 0x20, 0x00, 0x34, 0x02, 0x20, 0x00, 0x34, +0x02, 0x20, 0x00, 0x34, 0x02, 0x20, 0x00, 0x34, +0x02, 0x21, 0x00, 0x35, 0x02, 0x21, 0x00, 0x35, +0x02, 0x21, 0x00, 0x35, 0x02, 0x21, 0x00, 0x35, +0x02, 0x21, 0x00, 0x35, 0x02, 0x21, 0x00, 0x35, +0x02, 0x21, 0x00, 0x35, 0x02, 0x21, 0x00, 0x35, +0x02, 0x21, 0x00, 0x35, 0x00, 0xe5, 0x00, 0x5c, +0x00, 0xe5, 0x00, 0x43, 0x00, 0xea, 0x00, 0x5c, +0x01, 0x34, 0x00, 0x5c, 0x00, 0xe5, 0x00, 0x1e, +0x00, 0xe5, 0x00, 0x4d, 0x00, 0xe5, 0xff, 0xf7, +0x00, 0xe5, 0xff, 0xf7, 0x00, 0xe7, 0x00, 0x0a, +0x01, 0xfe, 0x00, 0x21, 0x02, 0x0e, 0x00, 0x08, +0x02, 0x42, 0x00, 0x61, 0x01, 0xe5, 0x00, 0x61, +0x02, 0x2d, 0x00, 0x1b, 0x02, 0x03, 0x00, 0x61, +0x02, 0x1a, 0x00, 0x32, 0x02, 0x7f, 0x00, 0x61, +0x02, 0x8c, 0x00, 0x37, 0x00, 0xf0, 0x00, 0x61, +0x02, 0x2e, 0x00, 0x61, 0x01, 0xeb, 0x00, 0x04, +0x02, 0xc2, 0x00, 0x61, 0x02, 0x7c, 0x00, 0x61, +0x01, 0xfe, 0x00, 0x2f, 0x02, 0x8c, 0x00, 0x37, +0x02, 0x7a, 0x00, 0x61, 0x02, 0x25, 0x00, 0x61, +0x02, 0x13, 0x00, 0x2f, 0x02, 0x0c, 0x00, 0x1d, +0x01, 0xbf, 0x00, 0x03, 0x02, 0xb7, 0x00, 0x30, +0x01, 0xe2, 0x00, 0x11, 0x02, 0x9c, 0x00, 0x46, +0x02, 0x93, 0x00, 0x2e, 0x02, 0x14, 0x00, 0x0d, +0x02, 0x23, 0xff, 0xe9, 0x02, 0x9f, 0xff, 0xe9, +0x01, 0x10, 0xff, 0xe9, 0x00, 0xf0, 0xff, 0xf2, +0x02, 0xa0, 0xff, 0xe9, 0x02, 0x1b, 0xff, 0xe9, +0x01, 0xbf, 0x00, 0x03, 0x02, 0xa4, 0xff, 0xe9, +0x02, 0x1c, 0x00, 0x34, 0x02, 0x20, 0x00, 0x59, +0x01, 0xc7, 0x00, 0x0a, 0x02, 0x0a, 0x00, 0x3b, +0x01, 0xb3, 0x00, 0x34, 0x01, 0x8f, 0x00, 0x34, +0x02, 0x11, 0x00, 0x57, 0x01, 0xfa, 0x00, 0x42, +0x00, 0xef, 0x00, 0x5c, 0x01, 0xcf, 0x00, 0x54, +0x01, 0xcd, 0x00, 0x11, 0x02, 0x1f, 0x00, 0x5c, +0x01, 0xbd, 0x00, 0x0a, 0x01, 0x98, 0x00, 0x23, +0x02, 0x0c, 0x00, 0x34, 0x02, 0x2d, 0x00, 0x19, +0x02, 0x1a, 0x00, 0x58, 0x02, 0x12, 0x00, 0x34, +0x01, 0xb9, 0x00, 0x1a, 0x01, 0xf1, 0x00, 0x46, +0x02, 0x87, 0x00, 0x34, 0x01, 0xc6, 0x00, 0x0a, +0x02, 0x8c, 0x00, 0x46, 0x02, 0xa2, 0x00, 0x3a, +0x01, 0xa7, 0x00, 0x34, 0x02, 0x1d, 0x00, 0x57, +0x01, 0xfa, 0x00, 0x4c, 0x02, 0x87, 0x00, 0x34, +0x02, 0x1c, 0x00, 0x34, 0x01, 0xb3, 0x00, 0x34, +0x02, 0x11, 0x00, 0x57, 0x00, 0xef, 0x00, 0x5c, +0x00, 0xef, 0xff, 0xf5, 0x02, 0x0c, 0x00, 0x34, +0x01, 0xf1, 0x00, 0x46, 0x01, 0xf1, 0x00, 0x46, +0x02, 0xa2, 0x00, 0x3a, 0x00, 0xef, 0xff, 0xec, +0x01, 0xf1, 0x00, 0x46, 0x02, 0x18, 0xff, 0xfc, +0x02, 0x16, 0xff, 0xf2, 0x02, 0x14, 0x00, 0x0e, +0x02, 0x14, 0x00, 0x0d, 0x02, 0x8a, 0xff, 0xf3, +0x02, 0x84, 0xff, 0xf2, 0x02, 0x89, 0xff, 0xf3, +0x02, 0x83, 0xff, 0xf2, 0x02, 0x3e, 0xff, 0xe8, +0x02, 0x3e, 0xff, 0xe8, 0x02, 0x0e, 0x00, 0x08, +0x02, 0x0e, 0x00, 0x08, 0x02, 0x5e, 0xff, 0xf3, +0x02, 0x5e, 0xff, 0xf2, 0x02, 0x23, 0xff, 0xea, +0x02, 0x23, 0xff, 0xe9, 0x02, 0xbc, 0xff, 0xf3, +0x02, 0xb7, 0xff, 0xf2, 0x02, 0xbb, 0xff, 0xf3, +0x02, 0xb5, 0xff, 0xf2, 0x02, 0xdb, 0xff, 0xf3, +0x02, 0xdb, 0xff, 0xf2, 0x02, 0x9f, 0xff, 0xea, +0x02, 0x9f, 0xff, 0xe9, 0x03, 0x38, 0xff, 0xf3, +0x03, 0x33, 0xff, 0xf2, 0x03, 0x37, 0xff, 0xf3, +0x03, 0x32, 0xff, 0xf2, 0x03, 0x26, 0xff, 0xe8, +0x03, 0x26, 0xff, 0xe8, 0x01, 0x4c, 0xff, 0xf3, +0x01, 0x4c, 0xff, 0xf2, 0x01, 0x10, 0xff, 0xea, +0x01, 0x10, 0xff, 0xe9, 0x01, 0xaa, 0xff, 0xf3, +0x01, 0xa4, 0xff, 0xf2, 0x01, 0xa9, 0xff, 0xf3, +0x01, 0xa3, 0xff, 0xf2, 0x01, 0x98, 0xff, 0xe8, +0x01, 0x98, 0xff, 0xe8, 0x00, 0xf0, 0xff, 0xf0, +0x00, 0xf0, 0xff, 0xfc, 0x02, 0xd2, 0xff, 0xf3, +0x02, 0xc7, 0xff, 0xf2, 0x02, 0xa2, 0xff, 0xea, +0x02, 0xa0, 0xff, 0xe9, 0x03, 0x3a, 0xff, 0xf3, +0x03, 0x36, 0xff, 0xf2, 0x03, 0x39, 0xff, 0xf3, +0x03, 0x33, 0xff, 0xf2, 0x02, 0x80, 0xff, 0xf2, +0x02, 0x53, 0xff, 0xf2, 0x02, 0x1b, 0xff, 0xea, +0x02, 0x1b, 0xff, 0xe9, 0x02, 0xaf, 0xff, 0xf2, +0x02, 0xae, 0xff, 0xf2, 0x02, 0xa1, 0xff, 0xe8, +0x01, 0xbf, 0x00, 0x03, 0x01, 0xbf, 0x00, 0x03, +0x02, 0xd6, 0xff, 0xf3, 0x02, 0xcb, 0xff, 0xf2, +0x02, 0xa5, 0xff, 0xeb, 0x02, 0xa4, 0xff, 0xe9, +0x03, 0x3e, 0xff, 0xf3, 0x03, 0x39, 0xff, 0xf2, +0x03, 0x3d, 0xff, 0xf3, 0x03, 0x37, 0xff, 0xf2, +0x03, 0x0d, 0xff, 0xe8, 0x03, 0x0d, 0xff, 0xe8, +0x02, 0xfc, 0x00, 0x08, 0x03, 0x06, 0xff, 0xfc, +0x03, 0x04, 0xff, 0xf2, 0x03, 0x78, 0xff, 0xf3, +0x03, 0x72, 0xff, 0xf2, 0x03, 0x76, 0xff, 0xf3, +0x03, 0x71, 0xff, 0xf2, 0x03, 0x2c, 0xff, 0xe8, +0x03, 0x2c, 0xff, 0xe8, 0x03, 0x6d, 0x00, 0x61, +0x03, 0xc8, 0xff, 0xf3, 0x03, 0xc8, 0xff, 0xf2, +0x04, 0x26, 0xff, 0xf3, 0x04, 0x21, 0xff, 0xf2, +0x04, 0x25, 0xff, 0xf3, 0x04, 0x1f, 0xff, 0xf2, +0x04, 0x14, 0xff, 0xe8, 0x04, 0x14, 0xff, 0xe8, +0x03, 0x7d, 0x00, 0x2e, 0x03, 0xc3, 0xff, 0xf3, +0x03, 0xb8, 0xff, 0xf2, 0x04, 0x2c, 0xff, 0xf3, +0x04, 0x26, 0xff, 0xf2, 0x04, 0x2b, 0xff, 0xf3, +0x04, 0x25, 0xff, 0xf2, 0x03, 0xff, 0xff, 0xe8, +0x03, 0xff, 0xff, 0xe8, 0x02, 0x1c, 0x00, 0x34, +0x02, 0x1c, 0x00, 0x34, 0x02, 0x1c, 0x00, 0x34, +0x02, 0x1c, 0x00, 0x34, 0x02, 0x1c, 0x00, 0x34, +0x02, 0x1c, 0x00, 0x34, 0x02, 0x1c, 0x00, 0x34, +0x02, 0x1c, 0x00, 0x34, 0x02, 0x1c, 0x00, 0x34, +0x02, 0x1c, 0x00, 0x34, 0x02, 0x1c, 0x00, 0x34, +0x02, 0x1c, 0x00, 0x34, 0x02, 0x1c, 0x00, 0x34, +0x01, 0xb3, 0x00, 0x34, 0x01, 0xb3, 0x00, 0x34, +0x01, 0xb3, 0x00, 0x34, 0x01, 0xb3, 0x00, 0x34, +0x01, 0xb3, 0x00, 0x34, 0x01, 0xb3, 0x00, 0x34, +0x01, 0xb3, 0x00, 0x34, 0x01, 0xb3, 0x00, 0x34, +0x02, 0x11, 0x00, 0x57, 0x02, 0x11, 0x00, 0x57, +0x02, 0x11, 0x00, 0x57, 0x02, 0x11, 0x00, 0x57, +0x02, 0x11, 0x00, 0x57, 0x02, 0x11, 0x00, 0x57, +0x02, 0x11, 0x00, 0x57, 0x02, 0x11, 0x00, 0x57, +0x02, 0x11, 0x00, 0x57, 0x02, 0x11, 0x00, 0x57, +0x02, 0x11, 0x00, 0x57, 0x00, 0xef, 0x00, 0x3c, +0x00, 0xef, 0x00, 0x2d, 0x00, 0xef, 0x00, 0x00, +0x00, 0xef, 0x00, 0x3e, 0x00, 0xef, 0xff, 0xed, +0x00, 0xef, 0xff, 0xe4, 0x00, 0xef, 0xff, 0xed, +0x00, 0xef, 0xff, 0xee, 0x00, 0xef, 0xff, 0xf0, +0x00, 0xef, 0xff, 0xf0, 0x00, 0xef, 0xff, 0xde, +0x00, 0xef, 0xff, 0xf8, 0x00, 0xef, 0xff, 0xcf, +0x00, 0xef, 0xff, 0xec, 0x00, 0xef, 0xff, 0xec, +0x00, 0xef, 0xff, 0xde, 0x02, 0x0c, 0x00, 0x34, +0x02, 0x0c, 0x00, 0x34, 0x02, 0x0c, 0x00, 0x34, +0x02, 0x0c, 0x00, 0x34, 0x02, 0x0c, 0x00, 0x34, +0x02, 0x0c, 0x00, 0x34, 0x02, 0x0c, 0x00, 0x34, +0x02, 0x0c, 0x00, 0x34, 0x02, 0x1a, 0x00, 0x58, +0x02, 0x1a, 0x00, 0x58, 0x01, 0xf1, 0x00, 0x46, +0x01, 0xf1, 0x00, 0x46, 0x01, 0xf1, 0x00, 0x46, +0x01, 0xf1, 0x00, 0x46, 0x01, 0xf1, 0x00, 0x46, +0x01, 0xf1, 0x00, 0x46, 0x01, 0xf1, 0x00, 0x46, +0x01, 0xf1, 0x00, 0x46, 0x01, 0xf1, 0x00, 0x46, +0x01, 0xf1, 0x00, 0x46, 0x01, 0xf1, 0x00, 0x45, +0x01, 0xf1, 0x00, 0x46, 0x01, 0xf1, 0x00, 0x46, +0x01, 0xf1, 0x00, 0x46, 0x01, 0xf1, 0x00, 0x46, +0x01, 0xf1, 0x00, 0x46, 0x02, 0xa2, 0x00, 0x3a, +0x02, 0xa2, 0x00, 0x3a, 0x02, 0xa2, 0x00, 0x3a, +0x02, 0xa2, 0x00, 0x3a, 0x02, 0xa2, 0x00, 0x3a, +0x02, 0xa2, 0x00, 0x3a, 0x02, 0xa2, 0x00, 0x3a, +0x02, 0xa2, 0x00, 0x3a, 0x02, 0xa2, 0x00, 0x3a, +0x02, 0xa2, 0x00, 0x3a, 0x02, 0xa2, 0x00, 0x3a, +0x02, 0x1c, 0x00, 0x34, 0x02, 0x1c, 0x00, 0x34, +0x02, 0x1c, 0x00, 0x34, 0x02, 0x1c, 0x00, 0x34, +0x02, 0x1c, 0x00, 0x34, 0x02, 0x1c, 0x00, 0x34, +0x02, 0x1c, 0x00, 0x34, 0x02, 0x1c, 0x00, 0x34, +0x02, 0x1c, 0x00, 0x34, 0x02, 0x1c, 0x00, 0x34, +0x02, 0x1c, 0x00, 0x34, 0x02, 0x1c, 0x00, 0x34, +0x02, 0x11, 0x00, 0x57, 0x02, 0x11, 0x00, 0x57, +0x02, 0x11, 0x00, 0x57, 0x02, 0x11, 0x00, 0x57, +0x02, 0x11, 0x00, 0x57, 0x02, 0x11, 0x00, 0x57, +0x02, 0x11, 0x00, 0x57, 0x02, 0x11, 0x00, 0x57, +0x02, 0x11, 0x00, 0x57, 0x02, 0x11, 0x00, 0x57, +0x02, 0x11, 0x00, 0x57, 0x02, 0x11, 0x00, 0x57, +0x02, 0xa2, 0x00, 0x3a, 0x02, 0xa2, 0x00, 0x3a, +0x02, 0xa2, 0x00, 0x3a, 0x02, 0xa2, 0x00, 0x3a, +0x02, 0xa2, 0x00, 0x3a, 0x02, 0xa2, 0x00, 0x3a, +0x02, 0xa2, 0x00, 0x3a, 0x02, 0xa2, 0x00, 0x3a, +0x02, 0xa2, 0x00, 0x3a, 0x02, 0xa2, 0x00, 0x3a, +0x02, 0xa2, 0x00, 0x3a, 0x02, 0xa2, 0x00, 0x3a, +0x01, 0xcf, 0x00, 0x54, 0x02, 0x0c, 0x00, 0x34, +0x01, 0xc3, 0x00, 0x34, 0x01, 0x92, 0x00, 0x5c, +0x01, 0xdc, 0x00, 0x16, 0x00, 0xdb, 0x00, 0x30, +0x00, 0xdb, 0x00, 0x43, 0x00, 0xdb, 0x00, 0x43, +0x00, 0xdb, 0x00, 0x52, 0x00, 0xdb, 0x00, 0x47, +0x02, 0x17, 0x00, 0xf6, 0x00, 0x20, 0xff, 0xe9, +0x02, 0x17, 0x00, 0x8d, 0x02, 0x17, 0x01, 0x01, +0x00, 0xef, 0x00, 0x5c, 0x02, 0x17, 0x00, 0xd4, +0x02, 0x17, 0x00, 0xd4, 0x02, 0x17, 0x00, 0xc5, +0x02, 0x17, 0x00, 0xc2, 0x02, 0x17, 0x00, 0xf6, +0x02, 0x17, 0x00, 0x85, 0x02, 0x17, 0x00, 0x7c, +0x02, 0x17, 0x00, 0x85, 0x02, 0x17, 0x00, 0x86, +0x02, 0x17, 0x00, 0x88, 0x02, 0x17, 0x00, 0x88, +0x02, 0x17, 0x00, 0x67, 0x02, 0x17, 0x00, 0x84, +0x02, 0x17, 0x00, 0x84, 0x02, 0x17, 0x00, 0x76, +0x00, 0x5c, 0xff, 0xf3, 0x00, 0x5c, 0xff, 0xf2, +0x00, 0x20, 0xff, 0xea, 0x00, 0x20, 0xff, 0xe9, +0x00, 0xb9, 0xff, 0xf3, 0x00, 0xb4, 0xff, 0xf2, +0x00, 0xb9, 0xff, 0xf3, 0x00, 0xb3, 0xff, 0xf2, +0x00, 0xa8, 0xff, 0xe8, 0x00, 0xa8, 0xff, 0xe8, +0x02, 0x0e, 0x00, 0x08, 0x02, 0x38, 0x00, 0x61, +0x02, 0x42, 0x00, 0x61, 0x01, 0xe5, 0x00, 0x61, +0x02, 0x6b, 0x00, 0x21, 0x02, 0x03, 0x00, 0x61, +0x03, 0x00, 0x00, 0x09, 0x03, 0x00, 0xff, 0xf3, +0x02, 0xf9, 0x00, 0x0e, 0x02, 0x24, 0x00, 0x2e, +0x02, 0x84, 0x00, 0x61, 0x02, 0x84, 0x00, 0x61, +0x02, 0x2b, 0x00, 0x61, 0x02, 0x2b, 0x00, 0x61, +0x02, 0x2a, 0x00, 0x61, 0x02, 0x66, 0x00, 0x06, +0x02, 0xc2, 0x00, 0x61, 0x02, 0x7f, 0x00, 0x61, +0x02, 0x8c, 0x00, 0x37, 0x02, 0x7a, 0x00, 0x61, +0x02, 0x25, 0x00, 0x61, 0x02, 0x34, 0x00, 0x37, +0x02, 0x0c, 0x00, 0x1d, 0x01, 0xeb, 0x00, 0x07, +0x02, 0xc9, 0x00, 0x30, 0x01, 0xe2, 0x00, 0x11, +0x02, 0x72, 0x00, 0x61, 0x02, 0x43, 0x00, 0x47, +0x03, 0x46, 0x00, 0x61, 0x03, 0x4b, 0x00, 0x61, +0x02, 0xca, 0x00, 0x1d, 0x02, 0xfe, 0x00, 0x61, +0x02, 0x38, 0x00, 0x61, 0x02, 0x34, 0x00, 0x26, +0x03, 0x73, 0x00, 0x61, 0x02, 0x32, 0x00, 0x1c, +0x02, 0x03, 0x00, 0x61, 0x02, 0x03, 0x00, 0x61, +0x02, 0xa7, 0x00, 0x1d, 0x01, 0xe5, 0x00, 0x61, +0x02, 0x34, 0x00, 0x37, 0x02, 0x09, 0x00, 0x2e, +0x00, 0xf0, 0x00, 0x61, 0x00, 0xf0, 0xff, 0xf2, +0x00, 0xf0, 0x00, 0x15, 0x01, 0xce, 0x00, 0x29, +0x03, 0x7e, 0x00, 0x07, 0x03, 0x9f, 0x00, 0x61, +0x02, 0xab, 0x00, 0x1d, 0x02, 0x2b, 0x00, 0x61, +0x02, 0x2a, 0x00, 0x61, 0x02, 0x2a, 0x00, 0x61, +0x02, 0x84, 0x00, 0x61, 0x01, 0xeb, 0x00, 0x07, +0x02, 0x7a, 0x00, 0x61, 0x02, 0x60, 0x00, 0x1d, +0x02, 0x8c, 0x00, 0x37, 0x01, 0xf6, 0x00, 0x04, +0x01, 0xe5, 0x00, 0x61, 0x01, 0xfa, 0x00, 0x25, +0x03, 0x2d, 0x00, 0x09, 0x03, 0x25, 0xff, 0xf4, +0x03, 0x25, 0x00, 0x0f, 0x02, 0x24, 0x00, 0x2e, +0x02, 0x5d, 0x00, 0x61, 0x02, 0x56, 0x00, 0x61, +0x02, 0x56, 0x00, 0x61, 0x02, 0xb9, 0x00, 0x1d, +0x02, 0xc1, 0x00, 0x1d, 0x02, 0xc1, 0x00, 0x1d, +0x02, 0x84, 0x00, 0x61, 0x02, 0x34, 0x00, 0x37, +0x01, 0xbf, 0x00, 0x03, 0x01, 0xbf, 0x00, 0x03, +0x02, 0x08, 0x00, 0x11, 0x02, 0x48, 0x00, 0x47, +0x02, 0x43, 0x00, 0x61, 0x00, 0xf0, 0x00, 0x61, +0x03, 0x00, 0x00, 0x09, 0x02, 0xf9, 0xff, 0xf3, +0x02, 0xf9, 0x00, 0x0e, 0x02, 0x0e, 0x00, 0x08, +0x03, 0x29, 0x00, 0x15, 0x02, 0x03, 0x00, 0x61, +0x02, 0x88, 0x00, 0x3e, 0x02, 0x84, 0x00, 0x61, +0x02, 0x8c, 0x00, 0x37, 0x02, 0x8c, 0x00, 0x37, +0x01, 0xeb, 0x00, 0x07, 0x01, 0xeb, 0x00, 0x07, +0x01, 0xeb, 0x00, 0x3a, 0x02, 0x16, 0x00, 0x3c, +0x01, 0xf0, 0x00, 0x5c, 0x01, 0x8f, 0x00, 0x5c, +0x01, 0xf5, 0x00, 0x18, 0x01, 0xe3, 0x00, 0x34, +0x02, 0x7a, 0x00, 0x11, 0x02, 0x7a, 0xff, 0xfa, +0x02, 0x7b, 0x00, 0x12, 0x01, 0xbc, 0x00, 0x2a, +0x02, 0x2a, 0x00, 0x5c, 0x02, 0x2a, 0x00, 0x5c, +0x01, 0xd6, 0x00, 0x5c, 0x01, 0xd6, 0x00, 0x5c, +0x01, 0xd6, 0x00, 0x5c, 0x01, 0xf9, 0x00, 0x0d, +0x02, 0x6a, 0x00, 0x5c, 0x02, 0x26, 0x00, 0x5c, +0x02, 0x17, 0x00, 0x34, 0x02, 0x1d, 0x00, 0x5c, +0x02, 0x20, 0x00, 0x5c, 0x01, 0xc1, 0x00, 0x34, +0x01, 0xb9, 0x00, 0x1a, 0x01, 0xb4, 0x00, 0x0c, +0x02, 0xc4, 0x00, 0x34, 0x01, 0x97, 0x00, 0x0e, +0x02, 0x13, 0x00, 0x5c, 0x01, 0xea, 0x00, 0x42, +0x02, 0xce, 0x00, 0x5c, 0x02, 0xcc, 0x00, 0x5c, +0x02, 0x44, 0x00, 0x1a, 0x02, 0x7c, 0x00, 0x5c, +0x01, 0xdc, 0x00, 0x5c, 0x01, 0xc1, 0x00, 0x19, +0x02, 0xcc, 0x00, 0x5c, 0x01, 0xf1, 0x00, 0x2a, +0x01, 0xe3, 0x00, 0x34, 0x01, 0xe3, 0x00, 0x34, +0x02, 0x15, 0x00, 0x0f, 0x01, 0x8f, 0x00, 0x5c, +0x01, 0xc1, 0x00, 0x34, 0x01, 0x95, 0x00, 0x20, +0x00, 0xe5, 0x00, 0x4b, 0x00, 0xe5, 0xff, 0xf4, +0x00, 0xe7, 0x00, 0x15, 0x00, 0xe5, 0xff, 0xdf, +0x02, 0xc4, 0x00, 0x0f, 0x02, 0xe5, 0x00, 0x5c, +0x02, 0x10, 0x00, 0x0f, 0x01, 0xd6, 0x00, 0x5c, +0x01, 0xd6, 0x00, 0x5c, 0x01, 0xd6, 0x00, 0x5c, +0x02, 0x2a, 0x00, 0x5c, 0x01, 0xb4, 0x00, 0x0c, +0x02, 0x22, 0x00, 0x5c, 0x02, 0x31, 0x00, 0x1a, +0x02, 0x17, 0x00, 0x34, 0x01, 0xbc, 0x00, 0x0c, +0x01, 0x96, 0x00, 0x5c, 0x01, 0x95, 0x00, 0x21, +0x02, 0x9d, 0x00, 0x11, 0x02, 0x9d, 0xff, 0xfa, +0x02, 0x9d, 0x00, 0x12, 0x01, 0xbc, 0x00, 0x2a, +0x01, 0xf9, 0x00, 0x5c, 0x01, 0xf9, 0x00, 0x5c, +0x01, 0xf9, 0x00, 0x5c, 0x02, 0x4d, 0x00, 0x1a, +0x02, 0x4d, 0x00, 0x1a, 0x02, 0x4d, 0x00, 0x1a, +0x02, 0x24, 0x00, 0x5c, 0x01, 0xc1, 0x00, 0x34, +0x01, 0xb2, 0x00, 0x0c, 0x01, 0xb2, 0x00, 0x0c, +0x01, 0xbb, 0x00, 0x0e, 0x01, 0xe8, 0x00, 0x42, +0x02, 0x10, 0x00, 0x5c, 0x02, 0x7a, 0x00, 0x11, +0x02, 0x7b, 0xff, 0xfa, 0x02, 0x7b, 0x00, 0x12, +0x00, 0xed, 0x00, 0x5c, 0x01, 0xeb, 0x00, 0x3a, +0x03, 0x10, 0x00, 0x41, 0x01, 0xe3, 0x00, 0x34, +0x01, 0xe3, 0x00, 0x26, 0x02, 0x2a, 0x00, 0x5c, +0x02, 0x17, 0x00, 0x34, 0x02, 0x17, 0x00, 0x34, +0x01, 0xb4, 0x00, 0x0c, 0x01, 0xb4, 0x00, 0x0c, +0x02, 0x02, 0x00, 0x34, 0x03, 0x51, 0x00, 0x43, +0x02, 0x3f, 0x00, 0x24, 0x01, 0xdf, 0x00, 0x30, +0x01, 0xdf, 0x00, 0x54, 0x01, 0xdf, 0x00, 0x27, +0x01, 0xdf, 0x00, 0x1d, 0x01, 0xdf, 0x00, 0x10, +0x01, 0xdf, 0x00, 0x1a, 0x01, 0xdf, 0x00, 0x34, +0x01, 0xdf, 0x00, 0x2c, 0x01, 0xdf, 0x00, 0x28, +0x01, 0xdf, 0x00, 0x2b, 0x01, 0xdf, 0x00, 0x30, +0x01, 0xdf, 0x00, 0x30, 0x02, 0x01, 0x00, 0x38, +0x01, 0x59, 0x00, 0x39, 0x01, 0xe6, 0x00, 0x27, +0x01, 0xdf, 0x00, 0x1d, 0x01, 0xef, 0x00, 0x20, +0x01, 0xdf, 0x00, 0x1a, 0x01, 0xf8, 0x00, 0x3f, +0x01, 0xdc, 0x00, 0x2c, 0x01, 0xff, 0x00, 0x39, +0x01, 0xf8, 0x00, 0x34, 0x02, 0x01, 0x00, 0x38, +0x02, 0x01, 0x00, 0x38, 0x01, 0xdf, 0x00, 0x30, +0x01, 0xdf, 0x00, 0x54, 0x01, 0xdf, 0x00, 0x27, +0x01, 0xdf, 0x00, 0x1d, 0x01, 0xdf, 0x00, 0x10, +0x01, 0xdf, 0x00, 0x1a, 0x01, 0xdf, 0x00, 0x36, +0x01, 0xdf, 0x00, 0x2c, 0x01, 0xdf, 0x00, 0x28, +0x01, 0xdf, 0x00, 0x21, 0x01, 0xf6, 0x00, 0x38, +0x01, 0x59, 0x00, 0x39, 0x01, 0xe5, 0x00, 0x2e, +0x01, 0xdf, 0x00, 0x1d, 0x01, 0xf6, 0x00, 0x18, +0x01, 0xdf, 0x00, 0x1a, 0x01, 0xf6, 0x00, 0x3e, +0x01, 0xda, 0x00, 0x2c, 0x01, 0xf6, 0x00, 0x30, +0x01, 0xf6, 0x00, 0x29, 0x01, 0xdf, 0x00, 0x30, +0x01, 0xdf, 0x00, 0x54, 0x01, 0xdf, 0x00, 0x27, +0x01, 0xdf, 0x00, 0x1d, 0x01, 0xdf, 0x00, 0x10, +0x01, 0xdf, 0x00, 0x1a, 0x01, 0xdf, 0x00, 0x36, +0x01, 0xdf, 0x00, 0x2c, 0x01, 0xdf, 0x00, 0x28, +0x01, 0xdf, 0x00, 0x2b, 0x00, 0xdb, 0x00, 0x43, +0x00, 0xdb, 0x00, 0x30, 0x00, 0xdb, 0x00, 0x43, +0x00, 0xdb, 0x00, 0x30, 0x03, 0xa2, 0x00, 0x68, +0x01, 0x03, 0x00, 0x57, 0x01, 0x03, 0x00, 0x57, +0x01, 0x92, 0x00, 0x25, 0x01, 0x92, 0x00, 0x33, +0x00, 0xdb, 0x00, 0x53, 0x01, 0x68, 0x00, 0x53, +0x00, 0xdb, 0x00, 0x3a, 0x00, 0xdb, 0x00, 0x3a, +0x01, 0x68, 0x00, 0x3a, 0x01, 0x68, 0x00, 0x3a, +0x00, 0xdb, 0x00, 0x3a, 0x01, 0x68, 0x00, 0x3a, +0x01, 0x03, 0x00, 0x2b, 0x01, 0x03, 0x00, 0x36, +0x01, 0x90, 0x00, 0x2b, 0x01, 0x90, 0x00, 0x36, +0x01, 0x2b, 0x00, 0x28, 0x01, 0x2b, 0x00, 0x28, +0x01, 0xe0, 0x00, 0x28, 0x03, 0x20, 0x00, 0x28, +0x05, 0xdc, 0x00, 0x28, 0x08, 0x98, 0x00, 0x28, +0x01, 0xdf, 0x00, 0x28, 0x03, 0x20, 0x00, 0x28, +0x00, 0xdb, 0x00, 0x43, 0x01, 0x19, 0x00, 0x28, +0x01, 0xf4, 0x00, 0x0c, 0x01, 0xf4, 0x00, 0x0c, +0x00, 0x00, 0xfe, 0x3b, 0x01, 0x17, 0x00, 0x58, +0x01, 0x17, 0x00, 0x20, 0x01, 0x17, 0x00, 0x62, +0x01, 0x17, 0x00, 0x15, 0x01, 0x17, 0x00, 0x23, +0x01, 0x17, 0x00, 0x15, 0x01, 0x65, 0x00, 0x09, +0x00, 0xe2, 0x00, 0x5f, 0x01, 0x65, 0x00, 0x05, +0x00, 0xe2, 0x00, 0x5f, 0x01, 0x8b, 0x00, 0x46, +0x01, 0xa4, 0x00, 0x3c, 0x01, 0xa4, 0x00, 0x3c, +0x01, 0xdf, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2a, +0x01, 0x62, 0x00, 0x5f, 0x01, 0xfe, 0x00, 0x57, +0x03, 0x0c, 0x00, 0x25, 0x02, 0x7d, 0x00, 0x57, +0x02, 0x7d, 0x00, 0x25, 0x01, 0x94, 0x00, 0x22, +0x01, 0x17, 0x00, 0x62, 0x01, 0x17, 0x00, 0x15, +0x01, 0x17, 0x00, 0x62, 0x01, 0x17, 0x00, 0x15, +0x01, 0x57, 0x00, 0x62, 0x01, 0x57, 0x00, 0x15, +0x01, 0x17, 0x00, 0x62, 0x01, 0x17, 0x00, 0x15, +0x01, 0x17, 0x00, 0x62, 0x01, 0x17, 0x00, 0x15, +0x02, 0xe5, 0x00, 0x33, 0x02, 0xe3, 0x00, 0x33, +0x01, 0x91, 0x00, 0x12, 0x02, 0x62, 0x00, 0x02, +0x02, 0x62, 0x00, 0x20, 0x02, 0x62, 0x00, 0x1f, +0x02, 0x66, 0x00, 0x1f, 0x03, 0x2e, 0x00, 0x34, +0x02, 0xf2, 0x00, 0x34, 0x01, 0xdf, 0x00, 0x24, +0x00, 0xe5, 0x00, 0x4b, 0x01, 0xc3, 0x00, 0x08, +0x02, 0x02, 0x00, 0x61, 0x01, 0xee, 0x00, 0x37, +0x02, 0x1c, 0x00, 0x61, 0x01, 0xcd, 0x00, 0x61, +0x01, 0xa8, 0x00, 0x61, 0x02, 0x16, 0x00, 0x37, +0x02, 0x42, 0x00, 0x61, 0x00, 0xf0, 0x00, 0x61, +0x01, 0xa3, 0x00, 0x29, 0x01, 0xeb, 0x00, 0x61, +0x01, 0xa1, 0x00, 0x61, 0x02, 0x70, 0x00, 0x61, +0x02, 0x3d, 0x00, 0x61, 0x02, 0x3e, 0x00, 0x37, +0x01, 0xf3, 0x00, 0x61, 0x02, 0x3e, 0x00, 0x37, +0x01, 0xf4, 0x00, 0x61, 0x01, 0xc9, 0x00, 0x2e, +0x01, 0xc5, 0x00, 0x1d, 0x02, 0x39, 0x00, 0x5f, +0x01, 0xa5, 0x00, 0x04, 0x02, 0x98, 0x00, 0x1c, +0x01, 0xa4, 0x00, 0x11, 0x01, 0x80, 0x00, 0x03, +0x01, 0xd8, 0x00, 0x32, 0x01, 0xc3, 0x00, 0x08, +0x01, 0xc3, 0x00, 0x08, 0x01, 0xc3, 0x00, 0x08, +0x01, 0xc3, 0x00, 0x08, 0x01, 0xc3, 0x00, 0x08, +0x01, 0xc3, 0x00, 0x08, 0x01, 0xc3, 0x00, 0x08, +0x01, 0xc3, 0x00, 0x08, 0x01, 0xc3, 0x00, 0x08, +0x01, 0xc3, 0x00, 0x08, 0x01, 0xc3, 0x00, 0x08, +0x01, 0xc3, 0x00, 0x08, 0x01, 0xc3, 0x00, 0x08, +0x01, 0xc3, 0x00, 0x08, 0x01, 0xc3, 0x00, 0x08, +0x01, 0xc3, 0x00, 0x08, 0x01, 0xc3, 0x00, 0x08, +0x01, 0xc3, 0x00, 0x08, 0x01, 0xc3, 0x00, 0x08, +0x01, 0xc3, 0x00, 0x08, 0x01, 0xc3, 0x00, 0x08, +0x01, 0xc3, 0x00, 0x08, 0x02, 0xb6, 0x00, 0x15, +0x02, 0xb6, 0x00, 0x15, 0x02, 0xb6, 0x00, 0x15, +0x02, 0x13, 0x00, 0x25, 0x02, 0x02, 0x00, 0x61, +0x01, 0xee, 0x00, 0x37, 0x01, 0xee, 0x00, 0x37, +0x01, 0xee, 0x00, 0x37, 0x01, 0xee, 0x00, 0x37, +0x01, 0xee, 0x00, 0x37, 0x02, 0x1c, 0x00, 0x61, +0x02, 0x1c, 0x00, 0x61, 0x02, 0x1c, 0x00, 0x61, +0x02, 0x2d, 0x00, 0x25, 0x01, 0xcd, 0x00, 0x61, +0x01, 0xcd, 0x00, 0x61, 0x01, 0xcd, 0x00, 0x61, +0x01, 0xcd, 0x00, 0x61, 0x01, 0xcd, 0x00, 0x61, +0x01, 0xcd, 0x00, 0x61, 0x01, 0xcd, 0x00, 0x61, +0x01, 0xcd, 0x00, 0x61, 0x01, 0xcd, 0x00, 0x61, +0x01, 0xcd, 0x00, 0x61, 0x01, 0xcd, 0x00, 0x60, +0x01, 0xcd, 0x00, 0x61, 0x01, 0xcd, 0x00, 0x4c, +0x01, 0xcd, 0x00, 0x61, 0x01, 0xcd, 0x00, 0x61, +0x01, 0xcd, 0x00, 0x61, 0x01, 0xcd, 0x00, 0x61, +0x01, 0xcd, 0x00, 0x61, 0x02, 0x16, 0x00, 0x37, +0x02, 0x16, 0x00, 0x37, 0x02, 0x16, 0x00, 0x37, +0x02, 0x16, 0x00, 0x37, 0x02, 0x16, 0x00, 0x37, +0x02, 0x16, 0x00, 0x37, 0x02, 0x16, 0x00, 0x37, +0x02, 0x16, 0x00, 0x37, 0x02, 0x16, 0x00, 0x37, +0x02, 0x42, 0x00, 0x61, 0x02, 0x42, 0x00, 0x61, +0x02, 0x42, 0x00, 0x61, 0x02, 0x65, 0x00, 0x24, +0x00, 0xf0, 0x00, 0x08, 0x00, 0xf0, 0x00, 0x4f, +0x00, 0xf0, 0xff, 0xf1, 0x00, 0xf0, 0xff, 0xd3, +0x00, 0xf0, 0xff, 0xf2, 0x00, 0xf0, 0xff, 0xfc, +0x00, 0xf0, 0x00, 0x50, 0x00, 0xf0, 0xff, 0xf1, +0x00, 0xf0, 0x00, 0x41, 0x00, 0xf0, 0x00, 0x52, +0x00, 0xf0, 0x00, 0x2c, 0x00, 0xf0, 0xff, 0xf0, +0x01, 0xa3, 0x00, 0x29, 0x01, 0xeb, 0x00, 0x61, +0x01, 0xeb, 0x00, 0x61, 0x01, 0xeb, 0x00, 0x61, +0x01, 0xa1, 0x00, 0x55, 0x01, 0xa1, 0x00, 0x61, +0x01, 0xa1, 0x00, 0x61, 0x01, 0xa1, 0x00, 0x61, +0x01, 0xa1, 0x00, 0x61, 0x01, 0xa1, 0x00, 0x02, +0x01, 0xa1, 0x00, 0x61, 0x01, 0xa1, 0x00, 0x04, +0x02, 0x70, 0x00, 0x61, 0x02, 0x70, 0x00, 0x61, +0x02, 0x70, 0x00, 0x61, 0x02, 0x3d, 0x00, 0x61, +0x02, 0x3d, 0x00, 0x61, 0x02, 0x3d, 0x00, 0x61, +0x02, 0x3d, 0x00, 0x61, 0x02, 0x3d, 0x00, 0x61, +0x02, 0x3d, 0x00, 0x61, 0x02, 0x3d, 0x00, 0x61, +0x02, 0x3d, 0x00, 0x61, 0x02, 0x3e, 0x00, 0x37, +0x02, 0x3e, 0x00, 0x37, 0x02, 0x3e, 0x00, 0x37, +0x02, 0x3e, 0x00, 0x37, 0x02, 0x3e, 0x00, 0x37, +0x02, 0x3e, 0x00, 0x37, 0x02, 0x3e, 0x00, 0x37, +0x02, 0x3e, 0x00, 0x37, 0x02, 0x3e, 0x00, 0x37, +0x02, 0x3e, 0x00, 0x37, 0x02, 0x3e, 0x00, 0x37, +0x02, 0x3e, 0x00, 0x37, 0x02, 0x3e, 0x00, 0x37, +0x02, 0x3e, 0x00, 0x37, 0x02, 0x3e, 0x00, 0x37, +0x02, 0x3e, 0x00, 0x2e, 0x02, 0xcd, 0x00, 0x37, +0x02, 0x3e, 0x00, 0x37, 0x02, 0x3e, 0x00, 0x37, +0x02, 0x3e, 0x00, 0x37, 0x02, 0x3e, 0x00, 0x37, +0x02, 0x3e, 0x00, 0x37, 0x02, 0x3e, 0x00, 0x37, +0x02, 0x3e, 0x00, 0x37, 0x02, 0x3e, 0x00, 0x37, +0x02, 0x3e, 0x00, 0x37, 0x01, 0xf4, 0x00, 0x61, +0x01, 0xf4, 0x00, 0x61, 0x01, 0xf4, 0x00, 0x61, +0x01, 0xf4, 0x00, 0x61, 0x01, 0xf4, 0x00, 0x61, +0x01, 0xf4, 0x00, 0x61, 0x01, 0xf4, 0x00, 0x61, +0x01, 0xc9, 0x00, 0x2e, 0x01, 0xc9, 0x00, 0x2e, +0x01, 0xc9, 0x00, 0x2e, 0x01, 0xc9, 0x00, 0x2e, +0x01, 0xc9, 0x00, 0x2e, 0x01, 0xc9, 0x00, 0x2e, +0x01, 0xc9, 0x00, 0x2e, 0x03, 0x88, 0x00, 0x2e, +0x02, 0x39, 0x00, 0x62, 0x01, 0xc5, 0x00, 0x1d, +0x01, 0xc5, 0x00, 0x1d, 0x01, 0xc5, 0x00, 0x1d, +0x01, 0xc5, 0x00, 0x1d, 0x01, 0xc5, 0x00, 0x1d, +0x01, 0xc5, 0x00, 0x1d, 0x02, 0x39, 0x00, 0x5f, +0x02, 0x39, 0x00, 0x5f, 0x02, 0x39, 0x00, 0x5f, +0x02, 0x39, 0x00, 0x5f, 0x02, 0x39, 0x00, 0x5f, +0x02, 0x39, 0x00, 0x5f, 0x02, 0x39, 0x00, 0x5f, +0x02, 0x39, 0x00, 0x5f, 0x02, 0x39, 0x00, 0x5f, +0x02, 0x39, 0x00, 0x5f, 0x02, 0x39, 0x00, 0x5f, +0x02, 0x39, 0x00, 0x5f, 0x02, 0x39, 0x00, 0x5f, +0x02, 0x39, 0x00, 0x5f, 0x02, 0x39, 0x00, 0x5f, +0x02, 0x39, 0x00, 0x5f, 0x02, 0x39, 0x00, 0x5f, +0x02, 0x44, 0x00, 0x5f, 0x02, 0x44, 0x00, 0x5f, +0x02, 0x44, 0x00, 0x5f, 0x02, 0x44, 0x00, 0x5f, +0x02, 0x44, 0x00, 0x5f, 0x02, 0x44, 0x00, 0x5f, +0x02, 0x98, 0x00, 0x1c, 0x02, 0x98, 0x00, 0x1c, +0x02, 0x98, 0x00, 0x1c, 0x02, 0x98, 0x00, 0x1c, +0x01, 0x80, 0x00, 0x03, 0x01, 0x80, 0x00, 0x03, +0x01, 0x80, 0x00, 0x03, 0x01, 0x80, 0x00, 0x03, +0x01, 0x80, 0x00, 0x03, 0x01, 0x80, 0x00, 0x03, +0x01, 0x80, 0x00, 0x03, 0x01, 0x80, 0x00, 0x03, +0x01, 0xd8, 0x00, 0x32, 0x01, 0xd8, 0x00, 0x32, +0x01, 0xd8, 0x00, 0x32, 0x01, 0xd8, 0x00, 0x32, +0x01, 0xd8, 0x00, 0x32, 0x02, 0x2d, 0x00, 0x25, +0x01, 0xf8, 0x00, 0x61, 0x02, 0x39, 0x00, 0x3e, +0x02, 0x24, 0x00, 0x61, 0x01, 0xe1, 0x00, 0x61, +0x02, 0x3d, 0x00, 0x61, 0x01, 0xc3, 0x00, 0x08, +0x02, 0x02, 0x00, 0x61, 0x01, 0xb1, 0x00, 0x61, +0x01, 0xe1, 0x00, 0x1b, 0x01, 0xcd, 0x00, 0x61, +0x01, 0xd8, 0x00, 0x32, 0x02, 0x42, 0x00, 0x61, +0x02, 0x3e, 0x00, 0x37, 0x00, 0xf0, 0x00, 0x61, +0x01, 0xeb, 0x00, 0x61, 0x01, 0xa4, 0x00, 0x04, +0x02, 0x70, 0x00, 0x61, 0x02, 0x3d, 0x00, 0x61, +0x01, 0xbf, 0x00, 0x2f, 0x02, 0x3e, 0x00, 0x37, +0x02, 0x3c, 0x00, 0x61, 0x01, 0xf3, 0x00, 0x61, +0x01, 0xcd, 0x00, 0x2f, 0x01, 0xc5, 0x00, 0x1d, +0x01, 0x80, 0x00, 0x03, 0x02, 0x71, 0x00, 0x30, +0x01, 0xa4, 0x00, 0x11, 0x02, 0x50, 0x00, 0x46, +0x02, 0x39, 0x00, 0x2c, 0x00, 0xf0, 0xff, 0xf2, +0x01, 0x80, 0x00, 0x03, 0x02, 0xb4, 0x00, 0x08, +0x03, 0x32, 0x00, 0x61, 0x03, 0x29, 0x00, 0x2c, +0x01, 0xc3, 0x00, 0x08, 0x01, 0xf9, 0x00, 0x61, +0x02, 0x02, 0x00, 0x61, 0x01, 0xb1, 0x00, 0x61, +0x02, 0x1a, 0x00, 0x21, 0x01, 0xcd, 0x00, 0x61, +0x02, 0x91, 0x00, 0x09, 0x01, 0xde, 0x00, 0x2f, +0x02, 0x3d, 0x00, 0x61, 0x02, 0x3d, 0x00, 0x61, +0x01, 0xeb, 0x00, 0x61, 0x02, 0x1b, 0x00, 0x06, +0x02, 0x70, 0x00, 0x61, 0x02, 0x42, 0x00, 0x61, +0x02, 0x3e, 0x00, 0x37, 0x02, 0x3c, 0x00, 0x61, +0x01, 0xf3, 0x00, 0x61, 0x01, 0xee, 0x00, 0x37, +0x01, 0xc5, 0x00, 0x1d, 0x01, 0xa3, 0x00, 0x07, +0x02, 0x6a, 0x00, 0x30, 0x01, 0xa4, 0x00, 0x11, +0x02, 0x31, 0x00, 0x61, 0x02, 0x08, 0x00, 0x47, +0x02, 0xe7, 0x00, 0x61, 0x02, 0xe9, 0x00, 0x61, +0x02, 0x64, 0x00, 0x1d, 0x02, 0xad, 0x00, 0x61, +0x01, 0xf9, 0x00, 0x61, 0x01, 0xed, 0x00, 0x26, +0x03, 0x05, 0x00, 0x61, 0x01, 0xf3, 0x00, 0x1c, +0x01, 0xcd, 0x00, 0x61, 0x01, 0xcd, 0x00, 0x61, +0x02, 0x4a, 0x00, 0x1d, 0x01, 0xb1, 0x00, 0x61, +0x01, 0xec, 0x00, 0x37, 0x01, 0xc9, 0x00, 0x2e, +0x00, 0xf0, 0x00, 0x61, 0x00, 0xf0, 0xff, 0xf2, +0x00, 0xf0, 0x00, 0x15, 0x01, 0xa3, 0x00, 0x29, +0x02, 0xf2, 0x00, 0x06, 0x03, 0x21, 0x00, 0x61, +0x02, 0x52, 0x00, 0x1d, 0x01, 0xeb, 0x00, 0x61, +0x02, 0x3d, 0x00, 0x61, 0x01, 0xa3, 0x00, 0x07, +0x02, 0x39, 0x00, 0x61, 0x02, 0x10, 0x00, 0x1d, +0x02, 0x3e, 0x00, 0x37, 0x01, 0xac, 0x00, 0x04, +0x01, 0xb1, 0x00, 0x61, 0x01, 0xc6, 0x00, 0x25, +0x02, 0xbd, 0x00, 0x09, 0x01, 0xde, 0x00, 0x2f, +0x02, 0x1c, 0x00, 0x61, 0x02, 0x68, 0x00, 0x1d, +0x02, 0x44, 0x00, 0x61, 0x01, 0xee, 0x00, 0x37, +0x01, 0x80, 0x00, 0x03, 0x01, 0x80, 0x00, 0x03, +0x01, 0xca, 0x00, 0x11, 0x02, 0x0a, 0x00, 0x47, +0x02, 0x08, 0x00, 0x61, 0x00, 0xf0, 0x00, 0x61, +0x02, 0x91, 0x00, 0x09, 0x01, 0xc3, 0x00, 0x08, +0x02, 0xb6, 0x00, 0x15, 0x01, 0xcd, 0x00, 0x61, +0x02, 0x39, 0x00, 0x3e, 0x02, 0x3d, 0x00, 0x61, +0x02, 0x3e, 0x00, 0x37, 0x02, 0x3e, 0x00, 0x37, +0x01, 0xa3, 0x00, 0x07, 0x01, 0xa3, 0x00, 0x07, +0x01, 0xf2, 0x00, 0x24, 0x01, 0xde, 0x00, 0x38, +0x01, 0x4d, 0x00, 0x39, 0x01, 0xb3, 0x00, 0x26, +0x01, 0xb6, 0x00, 0x18, 0x01, 0xc8, 0x00, 0x23, +0x01, 0xbf, 0x00, 0x23, 0x01, 0xd6, 0x00, 0x43, +0x01, 0x9b, 0x00, 0x21, 0x01, 0xdc, 0x00, 0x3a, +0x01, 0xd2, 0x00, 0x34, 0x01, 0x03, 0x00, 0x57, +0x01, 0x03, 0x00, 0x57, 0x01, 0x92, 0x00, 0x2f, +0x01, 0x92, 0x00, 0x3d, 0x00, 0xdb, 0x00, 0x53, +0x01, 0x68, 0x00, 0x53, 0x00, 0xdb, 0x00, 0x3a, +0x00, 0xdb, 0x00, 0x3a, 0x01, 0x60, 0x00, 0x3a, +0x01, 0x60, 0x00, 0x3a, 0x01, 0x2b, 0x00, 0x28, +0x01, 0x9b, 0x00, 0x28, 0x02, 0xaa, 0x00, 0x28, +0x01, 0x17, 0x00, 0x58, 0x01, 0x17, 0x00, 0x20, +0x01, 0x17, 0x00, 0x62, 0x01, 0x17, 0x00, 0x15, +0x01, 0x17, 0x00, 0x23, 0x01, 0x17, 0x00, 0x15, +0x01, 0x6a, 0x00, 0x28, 0x01, 0x6a, 0x00, 0x5e, +0x01, 0x6a, 0x00, 0x2f, 0x01, 0x6a, 0x00, 0x28, +0x01, 0x6a, 0x00, 0x2e, 0x01, 0x6a, 0x00, 0x28, +0x01, 0x6a, 0x00, 0x32, 0x01, 0x6a, 0x00, 0x32, +0x01, 0x6a, 0x00, 0x31, 0x01, 0x6a, 0x00, 0x29, +0x00, 0xdb, 0x00, 0x42, 0x00, 0xdb, 0x00, 0x29, +0x00, 0x9f, 0x00, 0x2c, 0x00, 0x9f, 0x00, 0x22, +0x01, 0x6a, 0x00, 0x28, 0x01, 0x6a, 0x00, 0x5e, +0x01, 0x6a, 0x00, 0x2f, 0x01, 0x6a, 0x00, 0x28, +0x01, 0x6a, 0x00, 0x2e, 0x01, 0x6a, 0x00, 0x28, +0x01, 0x6a, 0x00, 0x32, 0x01, 0x6a, 0x00, 0x32, +0x01, 0x6a, 0x00, 0x31, 0x01, 0x6a, 0x00, 0x29, +0x00, 0xdb, 0x00, 0x42, 0x00, 0xdb, 0x00, 0x29, +0x00, 0x9f, 0x00, 0x2c, 0x00, 0x9f, 0x00, 0x22, +0x01, 0x6a, 0x00, 0x28, 0x01, 0x6a, 0x00, 0x5e, +0x01, 0x6a, 0x00, 0x2f, 0x01, 0x6a, 0x00, 0x28, +0x01, 0x6a, 0x00, 0x2e, 0x01, 0x6a, 0x00, 0x28, +0x01, 0x6a, 0x00, 0x32, 0x01, 0x6a, 0x00, 0x32, +0x01, 0x6a, 0x00, 0x31, 0x01, 0x6a, 0x00, 0x29, +0x00, 0xdb, 0x00, 0x42, 0x00, 0xdb, 0x00, 0x29, +0x00, 0x9f, 0x00, 0x2c, 0x00, 0x9f, 0x00, 0x22, +0x01, 0x6a, 0x00, 0x28, 0x01, 0x6a, 0x00, 0x5e, +0x01, 0x6a, 0x00, 0x2f, 0x01, 0x6a, 0x00, 0x28, +0x01, 0x6a, 0x00, 0x2e, 0x01, 0x6a, 0x00, 0x28, +0x01, 0x6a, 0x00, 0x32, 0x01, 0x6a, 0x00, 0x32, +0x01, 0x6a, 0x00, 0x31, 0x01, 0x6a, 0x00, 0x29, +0x00, 0xdb, 0x00, 0x42, 0x00, 0xdb, 0x00, 0x29, +0x00, 0x9f, 0x00, 0x2c, 0x00, 0x9f, 0x00, 0x22, +0x01, 0x51, 0x00, 0x2a, 0x01, 0x6f, 0x00, 0x25, +0x01, 0x68, 0x00, 0x21, 0x01, 0x5c, 0x00, 0x02, +0x01, 0x7e, 0x00, 0x3d, 0x01, 0x74, 0x00, 0x22, +0x01, 0x92, 0x00, 0x3d, 0x01, 0x55, 0x00, 0x3d, +0x01, 0x3c, 0x00, 0x3d, 0x01, 0x90, 0x00, 0x22, +0x01, 0xa8, 0x00, 0x3d, 0x00, 0xa1, 0x00, 0x3d, +0x01, 0x34, 0x00, 0x17, 0x01, 0x73, 0x00, 0x3d, +0x01, 0x36, 0x00, 0x3d, 0x01, 0xd5, 0x00, 0x3d, +0x01, 0xa5, 0x00, 0x3d, 0x01, 0xb0, 0x00, 0x22, +0x01, 0x73, 0x00, 0x3d, 0x01, 0xb0, 0x00, 0x21, +0x01, 0x75, 0x00, 0x3d, 0x01, 0x59, 0x00, 0x1c, +0x01, 0x59, 0x00, 0x11, 0x01, 0xa6, 0x00, 0x3c, +0x01, 0x47, 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, +0x01, 0x43, 0x00, 0x09, 0x01, 0x2b, 0xff, 0xfe, +0x01, 0x62, 0x00, 0x1e, 0x01, 0x51, 0x00, 0x2a, +0x01, 0x6f, 0x00, 0x3a, 0x01, 0x2e, 0x00, 0x21, +0x01, 0x6f, 0x00, 0x25, 0x01, 0x4a, 0x00, 0x1f, +0x00, 0xb7, 0x00, 0x15, 0x01, 0x4c, 0x00, 0x22, +0x01, 0x64, 0x00, 0x3a, 0x00, 0x99, 0x00, 0x2e, +0x00, 0x9d, 0xff, 0xea, 0x01, 0x3d, 0x00, 0x3a, +0x00, 0xa2, 0x00, 0x3a, 0x02, 0x24, 0x00, 0x3a, +0x01, 0x67, 0x00, 0x3a, 0x01, 0x68, 0x00, 0x21, +0x01, 0x6f, 0x00, 0x3a, 0x01, 0x6f, 0x00, 0x25, +0x00, 0xdd, 0x00, 0x3a, 0x01, 0x13, 0x00, 0x15, +0x00, 0xd8, 0x00, 0x12, 0x01, 0x6b, 0x00, 0x39, +0x01, 0x2d, 0x00, 0x08, 0x01, 0xd2, 0x00, 0x10, +0x01, 0x1b, 0x00, 0x08, 0x01, 0x2b, 0x00, 0x08, +0x01, 0x15, 0x00, 0x13, 0x01, 0x17, 0x00, 0x12, +0x00, 0xdb, 0x00, 0x36, 0x00, 0xdb, 0x00, 0x36, +0x00, 0x80, 0xff, 0xaa, 0x01, 0x29, 0x00, 0x08, +0x01, 0x4a, 0x00, 0x1f, 0x01, 0x4a, 0x00, 0x1f, +0x01, 0x4a, 0x00, 0x1b, 0x01, 0x6f, 0x00, 0x25, +0x01, 0x6f, 0x00, 0x25, 0x00, 0x99, 0x00, 0x3a, +0x00, 0x9f, 0x00, 0x2c, 0x00, 0xe3, 0x00, 0x28, +0x01, 0x5b, 0x00, 0x28, 0x02, 0x31, 0x00, 0x28, +0x01, 0x37, 0x00, 0x2a, 0x01, 0xdf, 0x00, 0x1f, +0x01, 0xdf, 0x00, 0x3b, 0x01, 0xdf, 0x00, 0x36, +0x01, 0xdf, 0x00, 0x1e, 0x01, 0xdf, 0x00, 0x1e, +0x01, 0xdf, 0x00, 0x18, 0x01, 0xdf, 0x00, 0x3e, +0x01, 0xdf, 0x00, 0x0b, 0x01, 0xdf, 0x00, 0x41, +0x01, 0xdf, 0x00, 0x36, 0x01, 0xdf, 0x00, 0x10, +0x01, 0xdf, 0x00, 0x0e, 0x01, 0xdf, 0xff, 0xf3, +0x01, 0xdf, 0x00, 0x45, 0x01, 0xdf, 0x00, 0x0e, +0x01, 0xdf, 0x00, 0x34, 0x01, 0xdf, 0x00, 0x18, +0x01, 0xdf, 0x00, 0x41, 0x01, 0xdf, 0x00, 0x49, +0x01, 0xdf, 0x00, 0x1c, 0x01, 0xdf, 0x00, 0x22, +0x01, 0xdf, 0x00, 0x22, 0x01, 0xdf, 0x00, 0x0e, +0x00, 0x50, 0xff, 0x5b, 0x00, 0x50, 0xff, 0x5b, +0x00, 0x50, 0xff, 0x5b, 0x03, 0x25, 0x00, 0x28, +0x04, 0x8a, 0x00, 0x28, 0x02, 0xfc, 0x00, 0x4a, +0x03, 0x12, 0x00, 0x4a, 0x03, 0x0f, 0x00, 0x28, +0x03, 0x11, 0x00, 0x4a, 0x03, 0x24, 0x00, 0x2f, +0x03, 0x11, 0x00, 0x4a, 0x03, 0x24, 0x00, 0x2f, +0x03, 0x24, 0x00, 0x28, 0x03, 0x32, 0x00, 0x2e, +0x03, 0x11, 0x00, 0x4a, 0x03, 0x24, 0x00, 0x28, +0x03, 0x11, 0x00, 0x4a, 0x03, 0x11, 0x00, 0x4a, +0x03, 0x24, 0x00, 0x28, 0x03, 0x24, 0x00, 0x28, +0x03, 0x10, 0x00, 0x1f, 0x03, 0x11, 0x00, 0x4a, +0x04, 0x1e, 0x00, 0x49, 0x03, 0x24, 0x00, 0x28, +0x01, 0xdf, 0x00, 0x22, 0x01, 0xdf, 0x00, 0x22, +0x01, 0xdf, 0x00, 0x34, 0x01, 0xdf, 0x00, 0x22, +0x01, 0xe6, 0x00, 0xc3, 0x01, 0xdf, 0x00, 0x22, +0x01, 0xdf, 0x00, 0x22, 0x01, 0xdf, 0x00, 0x22, +0x01, 0xdf, 0x00, 0x22, 0x01, 0xdf, 0x00, 0x22, +0x01, 0xdf, 0x00, 0x22, 0x01, 0xdf, 0x00, 0x42, +0x01, 0xdf, 0x00, 0x22, 0x01, 0xdf, 0x00, 0x28, +0x01, 0xdf, 0x00, 0x28, 0x01, 0xdf, 0x00, 0x22, +0x02, 0xfb, 0x00, 0x29, 0x02, 0x1f, 0x00, 0x5c, +0x01, 0xf3, 0x00, 0x24, 0x01, 0x2b, 0x00, 0x3a, +0x02, 0x1b, 0x00, 0x31, 0x02, 0x2d, 0x00, 0x1b, +0x02, 0x93, 0x00, 0x2e, 0x01, 0xe7, 0x00, 0x13, +0x02, 0x8c, 0x00, 0x5e, 0x01, 0x75, 0x00, 0x1c, +0x03, 0x20, 0x00, 0x2e, 0x02, 0x6c, 0x00, 0x1d, +0x02, 0x6c, 0x00, 0x2b, 0x02, 0x6c, 0x00, 0x26, +0x02, 0x6c, 0x00, 0x2b, 0x03, 0x8a, 0x00, 0x2d, +0x03, 0x8a, 0x00, 0x19, 0x03, 0x8a, 0x00, 0x23, +0x03, 0x8a, 0x00, 0x2d, 0x03, 0x8a, 0x00, 0x36, +0x03, 0x8a, 0x00, 0x36, 0x03, 0x8a, 0x00, 0x2d, +0x03, 0x8a, 0x00, 0x2d, 0x03, 0x8a, 0x00, 0x36, +0x03, 0x8a, 0x00, 0x36, 0x03, 0x8a, 0x00, 0x19, +0x03, 0x8a, 0x00, 0x19, 0x03, 0x1a, 0x00, 0x4a, +0x03, 0x1a, 0x00, 0x4a, 0x02, 0x50, 0xff, 0xfc, +0x01, 0xdf, 0x00, 0x1f, 0x01, 0xf3, 0x00, 0x3b, +0x00, 0xdb, 0x00, 0x52, 0x01, 0x68, 0x00, 0x52, +0x00, 0xdb, 0x00, 0x47, 0x00, 0xdb, 0x00, 0x52, +0x00, 0xdb, 0x00, 0x3a, 0x00, 0xdb, 0x00, 0x3a, +0x00, 0xa0, 0x00, 0x21, 0x00, 0xa0, 0x00, 0x11, +0x02, 0x17, 0x00, 0x98, 0x02, 0x17, 0x00, 0xd6, +0x02, 0x17, 0x00, 0x81, 0x02, 0x17, 0x00, 0x81, +0x00, 0x5f, 0x00, 0x1a, 0x01, 0x03, 0x00, 0x06, +0x00, 0xda, 0x00, 0x36, 0x00, 0xda, 0xff, 0xf8, +0x00, 0x5f, 0x00, 0x1b, 0x02, 0x17, 0x00, 0x67, +0x02, 0x17, 0x00, 0x8d, 0x02, 0x17, 0x00, 0x90, +0x02, 0x17, 0x00, 0x76, 0x02, 0x17, 0x00, 0xaa, +0x02, 0x17, 0x00, 0xbe, 0x02, 0x17, 0x00, 0xe5, +0x02, 0x17, 0x00, 0xc0, 0x02, 0x17, 0x00, 0xd5, +0x02, 0x4e, 0x00, 0x34, 0x00, 0x00, 0xff, 0x8d, +0x00, 0x00, 0xff, 0x90, 0x00, 0x00, 0xff, 0xb7, +0x00, 0x00, 0xff, 0xcb, 0x00, 0x00, 0xff, 0xd7, +0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, 0xff, 0x76, +0x00, 0x00, 0xff, 0x79, 0x00, 0x00, 0xff, 0x5c, +0x00, 0x00, 0xff, 0x5b, 0x00, 0x00, 0xff, 0x85, +0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x85, +0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x6b, +0x00, 0x00, 0xff, 0x6d, 0x00, 0x00, 0xff, 0x78, +0x00, 0x00, 0xff, 0x78, 0x00, 0x00, 0xff, 0xda, +0x00, 0x00, 0xff, 0xd8, 0x00, 0x00, 0xff, 0x82, +0x00, 0x00, 0xff, 0x7a, 0x00, 0x00, 0xff, 0xc9, +0x00, 0x00, 0xff, 0xc9, 0x00, 0x00, 0xff, 0x9f, +0x00, 0x00, 0xff, 0xa8, 0x00, 0x00, 0xff, 0xb3, +0x00, 0x00, 0xff, 0xad, 0x00, 0x00, 0xff, 0x76, +0x00, 0x00, 0xff, 0x79, 0x00, 0x05, 0xff, 0xe2, +0x00, 0x00, 0xff, 0x4e, 0x00, 0x00, 0xff, 0x49, +0x00, 0x00, 0xff, 0x6b, 0x00, 0x00, 0xff, 0x78, +0x00, 0x00, 0xff, 0xd5, 0x00, 0x00, 0xff, 0xba, +0x00, 0x00, 0xff, 0xd6, 0x00, 0x00, 0xff, 0xc9, +0x00, 0x00, 0xff, 0xbb, 0x00, 0x00, 0xff, 0xb3, +0x00, 0x00, 0xff, 0xbb, 0x00, 0x00, 0xff, 0xf8, +0x00, 0x00, 0xff, 0xc4, 0x00, 0x00, 0xff, 0xa7, +0x00, 0x00, 0xff, 0xa7, 0x00, 0x00, 0xff, 0xa7, +0x00, 0x00, 0xff, 0xa7, 0x00, 0x00, 0xff, 0xda, +0x00, 0x00, 0xff, 0x82, 0x00, 0x00, 0xff, 0x9f, +0x00, 0x00, 0xff, 0xac, 0x00, 0x00, 0xff, 0xbc, +0x00, 0x00, 0xff, 0xac, 0x00, 0x00, 0xff, 0xac, +0x00, 0x00, 0xff, 0xca, 0x00, 0x00, 0xff, 0xcb, +0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, 0xff, 0x8b, +0x00, 0x00, 0xff, 0x76, 0x00, 0x00, 0xff, 0x6b, +0x00, 0x00, 0xff, 0x6b, 0x00, 0x00, 0xff, 0x5c, +0x00, 0x00, 0xff, 0x85, 0x00, 0x00, 0xff, 0x5c, +0x00, 0x00, 0xff, 0xce, 0x00, 0x00, 0xff, 0x8b, +0x00, 0x00, 0xff, 0x8b, 0x00, 0x00, 0xff, 0x63, +0x00, 0x00, 0xff, 0xb5, 0x00, 0x00, 0xff, 0x5c, +0x00, 0x00, 0xff, 0x5b, 0x00, 0x00, 0xff, 0xed, +0x00, 0x00, 0xfe, 0x3b, 0x00, 0x00, 0xff, 0x84, +0x00, 0x00, 0xff, 0x7b, 0x00, 0x00, 0xff, 0x79, +0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x7b, +0x00, 0x00, 0xff, 0x79, 0x00, 0x00, 0xff, 0x6b, +0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0x7b, +0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x7b, +0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x8d, +0x00, 0x00, 0xff, 0x1d, 0x00, 0x00, 0xff, 0x47, +0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x8d, +0x00, 0x00, 0xff, 0x7e, 0x00, 0x00, 0xff, 0x74, +0x00, 0x00, 0xff, 0x6b, 0x00, 0x00, 0xff, 0x78, +0x00, 0x00, 0xff, 0x6b, 0x00, 0x00, 0xff, 0x78, +0x00, 0x00, 0xff, 0x6b, 0x00, 0x00, 0xff, 0x78, +0x00, 0x00, 0xff, 0x76, 0x00, 0x00, 0xff, 0x74, +0x00, 0x00, 0xff, 0x85, 0x00, 0x00, 0xff, 0x82, +0x00, 0x00, 0xff, 0x85, 0x00, 0x00, 0xff, 0x84, +0x00, 0x00, 0xff, 0x7b, 0x00, 0x00, 0xff, 0x71, +0x00, 0x00, 0xff, 0x7d, 0x00, 0x00, 0xff, 0x7a, +0x00, 0x00, 0xff, 0x7a, 0x00, 0x00, 0xff, 0x7d, +0x00, 0xc7, 0x00, 0x00, 0x01, 0xdf, 0x00, 0x00, +0x00, 0x85, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, +0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0xfe, 0x00, 0x21, 0x01, 0xf4, 0x00, 0x21, +0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, +0x00, 0x00, 0x02, 0x24, 0x00, 0x00, 0x00, 0x04, +0x00, 0x00, 0x10, 0xea, 0x00, 0x01, 0x00, 0x00, +0x00, 0x00, 0x00, 0x2c, 0x00, 0x03, 0x00, 0x01, +0x00, 0x00, 0x02, 0x24, 0x00, 0x03, 0x00, 0x0a, +0x00, 0x00, 0x10, 0xea, 0x00, 0x06, 0x01, 0xf8, +0x00, 0x00, 0x00, 0x09, 0x00, 0xf7, 0x00, 0x03, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x7c, +0x04, 0x81, 0x04, 0xc1, 0x06, 0xa8, 0x06, 0xc1, +0x04, 0x40, 0x04, 0x80, 0x04, 0x99, 0x04, 0x9a, +0x04, 0xa3, 0x06, 0xd6, 0x04, 0x78, 0x04, 0x8c, +0x04, 0x77, 0x04, 0x9f, 0x04, 0x41, 0x04, 0x42, +0x04, 0x43, 0x04, 0x44, 0x04, 0x45, 0x04, 0x46, +0x04, 0x47, 0x04, 0x48, 0x04, 0x49, 0x04, 0x4a, +0x04, 0x79, 0x04, 0x7a, 0x06, 0xdc, 0x06, 0xdb, +0x06, 0xdd, 0x04, 0x7e, 0x04, 0xbf, 0x00, 0x04, +0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, +0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, +0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, +0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, +0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, +0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, +0x00, 0x1d, 0x04, 0x9b, 0x04, 0xa1, 0x04, 0x9c, +0x06, 0xe1, 0x04, 0x96, 0x07, 0x0e, 0x00, 0x1e, +0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, +0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, +0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, +0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, +0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, +0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, +0x00, 0x37, 0x04, 0x9d, 0x04, 0xa0, 0x04, 0x9e, +0x06, 0xe3, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x3f, +0x00, 0x53, 0x00, 0x5d, 0x00, 0x99, 0x00, 0xa2, +0x00, 0xd1, 0x00, 0xfb, 0x00, 0xfa, 0x00, 0xfc, +0x00, 0xfe, 0x00, 0xfd, 0x01, 0x01, 0x01, 0x15, +0x01, 0x1f, 0x01, 0x1e, 0x01, 0x20, 0x01, 0x22, +0x01, 0x3e, 0x01, 0x3d, 0x01, 0x3f, 0x01, 0x41, +0x01, 0x5d, 0x01, 0x64, 0x01, 0x63, 0x01, 0x65, +0x01, 0x67, 0x01, 0x66, 0x01, 0x94, 0x01, 0x93, +0x01, 0x95, 0x01, 0x97, 0x04, 0xa4, 0x06, 0xa6, +0x06, 0xad, 0x06, 0xa9, 0x04, 0xa6, 0x04, 0x95, +0x04, 0xa7, 0x01, 0x8b, 0x04, 0xba, 0x04, 0xb8, +0x04, 0xbb, 0x07, 0x0f, 0x07, 0x18, 0x06, 0xe2, +0x00, 0x4e, 0x00, 0xaf, 0x06, 0xe6, 0x06, 0xe0, +0x06, 0xde, 0x06, 0xdf, 0x06, 0xaa, 0x06, 0xe7, +0x06, 0xe8, 0x06, 0xed, 0x06, 0xee, 0x02, 0x71, +0x06, 0xe9, 0x06, 0x60, 0x06, 0x62, 0x02, 0x58, +0x01, 0x10, 0x01, 0x74, 0x04, 0x7f, 0x04, 0x7d, +0x06, 0xe5, 0x06, 0xea, 0x06, 0xae, 0x06, 0xe4, +0x06, 0xeb, 0x04, 0x8a, 0x04, 0x8b, 0x04, 0x7b, +0x07, 0x90, 0x00, 0x38, 0x00, 0x3b, 0x00, 0xa1, +0x00, 0xb0, 0x01, 0x75, 0x04, 0x8e, 0x04, 0x8f, +0x04, 0x84, 0x04, 0x85, 0x04, 0x82, 0x04, 0x83, +0x06, 0xd9, 0x07, 0x05, 0x01, 0xb1, 0x00, 0xeb, +0x06, 0xbe, 0x06, 0xac, 0x04, 0x88, 0x04, 0x89, +0x07, 0x96, 0x07, 0x97, 0x04, 0xa5, 0x04, 0x94, +0x04, 0x86, 0x04, 0x87, 0x06, 0xc2, 0x00, 0x3a, +0x00, 0x5e, 0x00, 0x39, 0x00, 0x60, 0x00, 0x5c, +0x00, 0x7c, 0x00, 0x7d, 0x00, 0x7f, 0x00, 0x7b, +0x00, 0x9f, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x9e, +0x00, 0xce, 0x00, 0xcf, 0x00, 0xcd, 0x01, 0x49, +0x07, 0x10, 0x07, 0x17, 0x07, 0x19, 0x07, 0x1a, +0x07, 0x1d, 0x07, 0x1b, 0x07, 0x1e, 0x07, 0x1c, +0x07, 0x1f, 0x07, 0x11, 0x00, 0x04, 0x0e, 0xc6, +0x00, 0x00, 0x01, 0xe4, 0x01, 0x00, 0x00, 0x07, +0x00, 0xe4, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x2f, +0x00, 0x40, 0x00, 0x60, 0x00, 0x7e, 0x00, 0xbf, +0x00, 0xd1, 0x00, 0xdf, 0x00, 0xf1, 0x01, 0x7e, +0x01, 0x80, 0x01, 0x8f, 0x01, 0x93, 0x01, 0xa1, +0x01, 0xb0, 0x01, 0xc2, 0x01, 0xdc, 0x01, 0xe3, +0x01, 0xe7, 0x01, 0xeb, 0x01, 0xf5, 0x01, 0xf9, +0x01, 0xfd, 0x02, 0x1b, 0x02, 0x37, 0x02, 0x43, +0x02, 0x51, 0x02, 0x58, 0x02, 0x5c, 0x02, 0x68, +0x02, 0x6a, 0x02, 0x6e, 0x02, 0x76, 0x02, 0x7b, +0x02, 0x7e, 0x02, 0x84, 0x02, 0x92, 0x02, 0x95, +0x02, 0x99, 0x02, 0x9d, 0x02, 0x9f, 0x02, 0xa2, +0x02, 0xb0, 0x02, 0xb3, 0x02, 0xb9, 0x02, 0xbc, +0x02, 0xbf, 0x02, 0xc1, 0x02, 0xcc, 0x02, 0xd1, +0x02, 0xde, 0x02, 0xe3, 0x03, 0x0c, 0x03, 0x0f, +0x03, 0x13, 0x03, 0x20, 0x03, 0x2a, 0x03, 0x2c, +0x03, 0x31, 0x03, 0x34, 0x03, 0x3d, 0x03, 0x42, +0x03, 0x45, 0x03, 0x61, 0x03, 0x75, 0x03, 0x7a, +0x03, 0x7e, 0x03, 0x8a, 0x03, 0x8c, 0x03, 0x90, +0x03, 0xa1, 0x03, 0xab, 0x03, 0xb0, 0x03, 0xc2, +0x03, 0xce, 0x03, 0xd1, 0x03, 0xd5, 0x03, 0xd7, +0x03, 0xd9, 0x03, 0xdb, 0x03, 0xdd, 0x03, 0xe1, +0x04, 0x07, 0x04, 0x0c, 0x04, 0x0f, 0x04, 0x16, +0x04, 0x1a, 0x04, 0x2f, 0x04, 0x36, 0x04, 0x3a, +0x04, 0x57, 0x04, 0x5c, 0x04, 0x5f, 0x04, 0x63, +0x04, 0x75, 0x04, 0x93, 0x04, 0x9b, 0x04, 0xa3, +0x04, 0xab, 0x04, 0xb3, 0x04, 0xb7, 0x04, 0xbb, +0x04, 0xc2, 0x04, 0xd1, 0x04, 0xd9, 0x04, 0xe3, +0x04, 0xe9, 0x04, 0xef, 0x04, 0xf3, 0x1d, 0x43, +0x1d, 0x49, 0x1d, 0x4d, 0x1d, 0x50, 0x1d, 0x52, +0x1d, 0x58, 0x1d, 0x5b, 0x1d, 0x9c, 0x1d, 0xa0, +0x1d, 0xbb, 0x1e, 0x07, 0x1e, 0x0f, 0x1e, 0x17, +0x1e, 0x21, 0x1e, 0x25, 0x1e, 0x2b, 0x1e, 0x3b, +0x1e, 0x49, 0x1e, 0x53, 0x1e, 0x63, 0x1e, 0x6f, +0x1e, 0x85, 0x1e, 0x8f, 0x1e, 0x97, 0x1e, 0x9e, +0x1e, 0xf9, 0x1f, 0x01, 0x1f, 0x09, 0x1f, 0x11, +0x1f, 0x15, 0x1f, 0x19, 0x1f, 0x1d, 0x1f, 0x21, +0x1f, 0x29, 0x1f, 0x31, 0x1f, 0x39, 0x1f, 0x41, +0x1f, 0x45, 0x1f, 0x49, 0x1f, 0x4d, 0x1f, 0x51, +0x1f, 0x57, 0x1f, 0x59, 0x1f, 0x5b, 0x1f, 0x5d, +0x1f, 0x61, 0x1f, 0x69, 0x1f, 0x7d, 0x1f, 0x81, +0x1f, 0x87, 0x1f, 0x91, 0x1f, 0x97, 0x1f, 0xa1, +0x1f, 0xa7, 0x1f, 0xb4, 0x1f, 0xc4, 0x1f, 0xd3, +0x1f, 0xdb, 0x1f, 0xdf, 0x1f, 0xef, 0x1f, 0xf4, +0x1f, 0xfe, 0x20, 0x07, 0x20, 0x16, 0x20, 0x1a, +0x20, 0x1e, 0x20, 0x22, 0x20, 0x26, 0x20, 0x30, +0x20, 0x33, 0x20, 0x35, 0x20, 0x3a, 0x20, 0x3f, +0x20, 0x44, 0x20, 0x49, 0x20, 0x71, 0x20, 0x79, +0x20, 0x7f, 0x20, 0x89, 0x20, 0x8e, 0x20, 0x94, +0x20, 0xa1, 0x20, 0xa4, 0x20, 0xa7, 0x20, 0xa9, +0x20, 0xac, 0x20, 0xae, 0x20, 0xb2, 0x20, 0xb5, +0x20, 0xba, 0x20, 0xbd, 0x21, 0x13, 0x21, 0x17, +0x21, 0x20, 0x21, 0x22, 0x21, 0x26, 0x21, 0x2e, +0x21, 0x52, 0x21, 0x5a, 0x21, 0x5e, 0x21, 0x89, +0x21, 0x93, 0x22, 0x02, 0x22, 0x06, 0x22, 0x0f, +0x22, 0x12, 0x22, 0x15, 0x22, 0x1a, 0x22, 0x1e, +0x22, 0x2b, 0x22, 0x48, 0x22, 0x60, 0x22, 0x65, +0x23, 0x1f, 0x25, 0xa0, 0x25, 0xb3, 0x25, 0xb7, +0x25, 0xbd, 0x25, 0xc1, 0x25, 0xc6, 0x25, 0xca, +0x25, 0xcc, 0x26, 0x11, 0x26, 0x6a, 0x27, 0x13, +0x27, 0x52, 0x27, 0xe7, 0x2e, 0x25, 0x2e, 0x3b, +0xfb, 0x04, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0d, 0x00, 0x20, 0x00, 0x30, +0x00, 0x41, 0x00, 0x61, 0x00, 0xa0, 0x00, 0xc0, +0x00, 0xd2, 0x00, 0xe0, 0x00, 0xf2, 0x01, 0x80, +0x01, 0x8f, 0x01, 0x92, 0x01, 0xa0, 0x01, 0xaf, +0x01, 0xc2, 0x01, 0xcd, 0x01, 0xe2, 0x01, 0xe6, +0x01, 0xea, 0x01, 0xf4, 0x01, 0xf8, 0x01, 0xfc, +0x02, 0x18, 0x02, 0x37, 0x02, 0x43, 0x02, 0x50, +0x02, 0x52, 0x02, 0x59, 0x02, 0x5e, 0x02, 0x6a, +0x02, 0x6c, 0x02, 0x6f, 0x02, 0x78, 0x02, 0x7d, +0x02, 0x80, 0x02, 0x88, 0x02, 0x94, 0x02, 0x98, +0x02, 0x9c, 0x02, 0x9f, 0x02, 0xa1, 0x02, 0xb0, +0x02, 0xb2, 0x02, 0xb7, 0x02, 0xbb, 0x02, 0xbe, +0x02, 0xc1, 0x02, 0xc6, 0x02, 0xd0, 0x02, 0xd8, +0x02, 0xe0, 0x03, 0x00, 0x03, 0x0f, 0x03, 0x11, +0x03, 0x18, 0x03, 0x23, 0x03, 0x2c, 0x03, 0x2e, +0x03, 0x34, 0x03, 0x39, 0x03, 0x42, 0x03, 0x45, +0x03, 0x61, 0x03, 0x74, 0x03, 0x7a, 0x03, 0x7e, +0x03, 0x84, 0x03, 0x8c, 0x03, 0x8e, 0x03, 0x91, +0x03, 0xa3, 0x03, 0xac, 0x03, 0xb1, 0x03, 0xc3, +0x03, 0xd0, 0x03, 0xd5, 0x03, 0xd7, 0x03, 0xd9, +0x03, 0xdb, 0x03, 0xdd, 0x03, 0xe1, 0x04, 0x00, +0x04, 0x08, 0x04, 0x0d, 0x04, 0x10, 0x04, 0x17, +0x04, 0x1b, 0x04, 0x30, 0x04, 0x37, 0x04, 0x3b, +0x04, 0x58, 0x04, 0x5d, 0x04, 0x62, 0x04, 0x72, +0x04, 0x90, 0x04, 0x96, 0x04, 0xa0, 0x04, 0xaa, +0x04, 0xae, 0x04, 0xb6, 0x04, 0xba, 0x04, 0xc0, +0x04, 0xcf, 0x04, 0xd4, 0x04, 0xe2, 0x04, 0xe6, +0x04, 0xee, 0x04, 0xf2, 0x1d, 0x43, 0x1d, 0x47, +0x1d, 0x4d, 0x1d, 0x4f, 0x1d, 0x52, 0x1d, 0x56, +0x1d, 0x5b, 0x1d, 0x9c, 0x1d, 0xa0, 0x1d, 0xbb, +0x1e, 0x06, 0x1e, 0x0c, 0x1e, 0x16, 0x1e, 0x20, +0x1e, 0x24, 0x1e, 0x2a, 0x1e, 0x32, 0x1e, 0x3e, +0x1e, 0x52, 0x1e, 0x58, 0x1e, 0x6c, 0x1e, 0x80, +0x1e, 0x8e, 0x1e, 0x92, 0x1e, 0x9e, 0x1e, 0xa0, +0x1f, 0x00, 0x1f, 0x02, 0x1f, 0x0a, 0x1f, 0x12, +0x1f, 0x18, 0x1f, 0x1a, 0x1f, 0x20, 0x1f, 0x22, +0x1f, 0x2a, 0x1f, 0x32, 0x1f, 0x3a, 0x1f, 0x42, +0x1f, 0x48, 0x1f, 0x4a, 0x1f, 0x50, 0x1f, 0x52, +0x1f, 0x59, 0x1f, 0x5b, 0x1f, 0x5d, 0x1f, 0x5f, +0x1f, 0x62, 0x1f, 0x6a, 0x1f, 0x80, 0x1f, 0x82, +0x1f, 0x88, 0x1f, 0x92, 0x1f, 0x98, 0x1f, 0xa2, +0x1f, 0xa8, 0x1f, 0xb6, 0x1f, 0xc6, 0x1f, 0xd6, +0x1f, 0xdd, 0x1f, 0xe0, 0x1f, 0xf2, 0x1f, 0xf6, +0x20, 0x07, 0x20, 0x12, 0x20, 0x18, 0x20, 0x1c, +0x20, 0x20, 0x20, 0x26, 0x20, 0x2f, 0x20, 0x32, +0x20, 0x35, 0x20, 0x39, 0x20, 0x3c, 0x20, 0x44, +0x20, 0x47, 0x20, 0x70, 0x20, 0x74, 0x20, 0x7d, +0x20, 0x80, 0x20, 0x8d, 0x20, 0x94, 0x20, 0xa1, +0x20, 0xa4, 0x20, 0xa6, 0x20, 0xa9, 0x20, 0xab, +0x20, 0xae, 0x20, 0xb1, 0x20, 0xb4, 0x20, 0xb8, +0x20, 0xbd, 0x21, 0x13, 0x21, 0x16, 0x21, 0x20, +0x21, 0x22, 0x21, 0x26, 0x21, 0x2e, 0x21, 0x50, +0x21, 0x53, 0x21, 0x5b, 0x21, 0x89, 0x21, 0x90, +0x22, 0x02, 0x22, 0x06, 0x22, 0x0f, 0x22, 0x11, +0x22, 0x15, 0x22, 0x19, 0x22, 0x1e, 0x22, 0x2b, +0x22, 0x48, 0x22, 0x60, 0x22, 0x64, 0x23, 0x1c, +0x25, 0xa0, 0x25, 0xb2, 0x25, 0xb6, 0x25, 0xbc, +0x25, 0xc0, 0x25, 0xc6, 0x25, 0xc9, 0x25, 0xcc, +0x26, 0x10, 0x26, 0x6a, 0x27, 0x13, 0x27, 0x52, +0x27, 0xe6, 0x2e, 0x22, 0x2e, 0x3a, 0xfb, 0x00, +0xfe, 0xff, 0xff, 0xff, 0x00, 0x01, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0x93, 0xff, 0x68, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x87, +0xfe, 0x0e, 0x00, 0x00, 0xff, 0x6f, 0xff, 0x71, +0x00, 0x00, 0xff, 0x70, 0xff, 0x70, 0xff, 0x71, +0xff, 0x70, 0xff, 0x6f, 0xff, 0x6e, 0xff, 0x6b, +0xff, 0x6a, 0x00, 0x00, 0x00, 0x00, 0xff, 0x40, +0xff, 0x5f, 0x03, 0xd4, 0x00, 0x00, 0x00, 0x00, +0x04, 0x4f, 0x04, 0x4e, 0x03, 0xd6, 0x04, 0x4a, +0x03, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x04, 0x31, 0x00, 0x00, 0x04, 0x30, 0x00, 0x00, +0x04, 0x30, 0x04, 0x2f, 0x04, 0x2d, 0x04, 0x29, +0x04, 0x25, 0x04, 0x24, 0x04, 0x09, 0xff, 0xf6, +0xff, 0xf5, 0xff, 0xe9, 0x00, 0x00, 0xfe, 0xd2, +0x00, 0x00, 0xfe, 0xb0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xfe, 0xab, 0xfe, 0xa8, +0xff, 0x8b, 0xff, 0x8a, 0xff, 0x89, 0xff, 0x88, +0xff, 0x85, 0xff, 0xae, 0xff, 0xaf, 0xff, 0xb1, +0xff, 0x7a, 0xff, 0x7c, 0xff, 0x7e, 0xff, 0xb4, +0xff, 0xb6, 0xff, 0xb8, 0xff, 0xb9, 0xff, 0xbb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xe9, 0x3a, 0x00, 0x00, 0xe9, 0x36, 0x00, 0x00, +0xe9, 0x39, 0x00, 0x00, 0xe9, 0x37, 0xe8, 0xe3, +0xe8, 0xe2, 0xe8, 0xdb, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xe2, 0x28, 0x00, 0x00, 0xe3, 0xe9, 0x00, 0x00, +0x00, 0x00, 0xe3, 0xe8, 0xe3, 0x7d, 0xe3, 0x7f, +0xe3, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xe3, 0xdb, 0xe3, 0x6b, 0xe3, 0x6d, +0xe3, 0xd3, 0xe3, 0xd5, 0xe3, 0x63, 0xe3, 0x64, +0xe3, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xe3, 0xbf, 0xe3, 0xc1, 0x00, 0x00, 0xe3, 0xbd, +0x00, 0x00, 0xe3, 0xb9, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xe7, 0x8a, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x55, +0x00, 0x00, 0xe6, 0xd4, 0xe6, 0xd3, 0xe4, 0x4f, +0x00, 0x00, 0xe6, 0x7a, 0x00, 0x00, 0x00, 0x00, +0xe5, 0xb8, 0x00, 0x00, 0xe5, 0xb6, 0xe5, 0xb3, +0xe6, 0x0a, 0xe6, 0x0e, 0xe6, 0x0c, 0xe6, 0x0b, +0xe6, 0x0a, 0x00, 0x00, 0xe6, 0x0d, 0xe6, 0x04, +0xe6, 0x03, 0x00, 0x00, 0xe6, 0x00, 0xe5, 0xdc, +0x00, 0x00, 0xe3, 0x9c, 0xe3, 0x99, 0xe5, 0xc6, +0xe5, 0xc2, 0x00, 0x00, 0xe5, 0x73, 0xe5, 0x74, +0xe5, 0x4c, 0xe5, 0x61, 0xe4, 0xe6, 0xe4, 0xe5, +0xe4, 0xdf, 0x00, 0x00, 0xe4, 0xaa, 0x00, 0x00, +0xe4, 0xc8, 0xe4, 0xbe, 0xe4, 0x9c, 0xe4, 0x82, +0xe4, 0x7a, 0xe1, 0x92, 0xe1, 0x55, 0xe1, 0x47, +0xe1, 0x45, 0xe1, 0x41, 0xe1, 0x3f, 0xe1, 0x30, +0x00, 0x00, 0xe1, 0x54, 0xe0, 0xf1, 0xe0, 0x9a, +0xdf, 0xf0, 0xdf, 0xa6, 0xdc, 0xcc, 0xd6, 0x92, +0xd6, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xfe, +0x02, 0x1e, 0x02, 0x5c, 0x02, 0x96, 0x02, 0xd4, +0x02, 0xf6, 0x03, 0x10, 0x03, 0x32, 0x00, 0x00, +0x00, 0x00, 0x04, 0x46, 0x04, 0x48, 0x04, 0x4a, +0x00, 0x00, 0x04, 0x4a, 0x04, 0x68, 0x04, 0x6a, +0x04, 0x6c, 0x04, 0x6e, 0x04, 0x70, 0x04, 0x72, +0x04, 0x74, 0x00, 0x00, 0x00, 0x00, 0x04, 0x76, +0x00, 0x00, 0x00, 0x00, 0x04, 0x74, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x78, +0x04, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x04, 0x76, 0x04, 0x78, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x72, +0x04, 0x7e, 0x04, 0x84, 0x00, 0x00, 0x04, 0x9a, +0x00, 0x00, 0x04, 0x9c, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x04, 0x96, 0x00, 0x00, 0x04, 0xa0, 0x00, 0x00, +0x04, 0xa2, 0x04, 0xb2, 0x04, 0xba, 0x04, 0xdc, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x04, 0xce, 0x04, 0xd0, +0x04, 0xd6, 0x04, 0xdc, 0x04, 0xe6, 0x04, 0xec, +0x04, 0xee, 0x04, 0xf8, 0x04, 0xfa, 0x04, 0xfc, +0x05, 0x00, 0x05, 0x04, 0x05, 0x0e, 0x05, 0x10, +0x05, 0x16, 0x05, 0x18, 0x00, 0x00, 0x05, 0x18, +0x00, 0x00, 0x05, 0x1a, 0x00, 0x00, 0x05, 0x1a, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x05, 0x16, 0x05, 0x18, 0x05, 0x1e, 0x05, 0x20, +0x05, 0x22, 0x05, 0x24, 0x05, 0x26, 0x05, 0x38, +0x05, 0x4e, 0x05, 0x50, 0x05, 0x66, 0x05, 0x6c, +0x05, 0x76, 0x05, 0x78, 0x00, 0x00, 0x05, 0x80, +0x00, 0x00, 0x06, 0x30, 0x06, 0x3e, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x44, +0x06, 0x52, 0x06, 0x60, 0x06, 0x6e, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x6c, +0x06, 0x70, 0x06, 0x7e, 0x00, 0x00, 0x00, 0x00, +0x06, 0xa0, 0x00, 0x00, 0x06, 0xb0, 0x00, 0x00, +0x06, 0xc0, 0x06, 0xd8, 0x06, 0xf4, 0x07, 0x0e, +0x07, 0x18, 0x07, 0x1c, 0x07, 0x3a, 0x07, 0x3e, +0x00, 0x00, 0x07, 0x4c, 0x07, 0x54, 0x07, 0x58, +0x07, 0x5c, 0x00, 0x00, 0x07, 0x5e, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x07, 0x5a, 0x00, 0x00, +0x07, 0x5e, 0x07, 0x62, 0x00, 0x00, 0x07, 0x62, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x58, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x54, +0x00, 0x00, 0x00, 0x00, 0x07, 0x54, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x4e, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x44, +0x00, 0x00, 0x07, 0x44, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x07, 0x2e, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x20, +0x07, 0x28, 0x00, 0x00, 0x00, 0x03, 0x04, 0x7c, +0x04, 0x81, 0x04, 0xc1, 0x06, 0xa8, 0x06, 0xc1, +0x04, 0x40, 0x04, 0x80, 0x04, 0x99, 0x04, 0x9a, +0x04, 0xa3, 0x06, 0xd6, 0x04, 0x78, 0x04, 0x8c, +0x04, 0x77, 0x04, 0x9f, 0x04, 0x41, 0x04, 0x42, +0x04, 0x43, 0x04, 0x44, 0x04, 0x45, 0x04, 0x46, +0x04, 0x47, 0x04, 0x48, 0x04, 0x49, 0x04, 0x4a, +0x04, 0x79, 0x04, 0x7a, 0x06, 0xdc, 0x06, 0xdb, +0x06, 0xdd, 0x04, 0x7e, 0x04, 0xbf, 0x00, 0x04, +0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, +0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, +0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, +0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, +0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, +0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, +0x00, 0x1d, 0x04, 0x9b, 0x04, 0xa1, 0x04, 0x9c, +0x06, 0xe1, 0x04, 0x96, 0x07, 0x0e, 0x00, 0x1e, +0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, +0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, +0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, +0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, +0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, +0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, +0x00, 0x37, 0x04, 0x9d, 0x04, 0xa0, 0x04, 0x9e, +0x06, 0xe3, 0x07, 0x90, 0x04, 0x7d, 0x06, 0xad, +0x06, 0xa9, 0x06, 0xa7, 0x06, 0xaa, 0x04, 0xa2, +0x04, 0xa6, 0x07, 0x18, 0x04, 0xb8, 0x06, 0x60, +0x04, 0x8a, 0x06, 0xe5, 0x04, 0x8d, 0x04, 0xba, +0x07, 0x19, 0x06, 0xa6, 0x06, 0xe0, 0x06, 0x2a, +0x06, 0x2b, 0x07, 0x0f, 0x06, 0xe7, 0x04, 0xa7, +0x04, 0x94, 0x07, 0x1e, 0x06, 0x29, 0x06, 0x62, +0x04, 0x8b, 0x06, 0xc3, 0x06, 0xc4, 0x06, 0xc5, +0x04, 0x7f, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, +0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3f, 0x00, 0x4e, +0x00, 0x53, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, +0x00, 0x60, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x7d, +0x00, 0x7f, 0x00, 0xf5, 0x00, 0x99, 0x00, 0x9e, +0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, +0x06, 0xd8, 0x00, 0xaf, 0x00, 0xcd, 0x00, 0xce, +0x00, 0xcf, 0x00, 0xd1, 0x00, 0xe9, 0x00, 0xf6, +0x01, 0x8b, 0x00, 0xfa, 0x00, 0xfb, 0x00, 0xfc, +0x00, 0xfd, 0x00, 0xfe, 0x01, 0x01, 0x01, 0x10, +0x01, 0x15, 0x01, 0x1e, 0x01, 0x1f, 0x01, 0x20, +0x01, 0x22, 0x01, 0x3d, 0x01, 0x3e, 0x01, 0x3f, +0x01, 0x41, 0x01, 0xbb, 0x01, 0x5d, 0x01, 0x63, +0x01, 0x64, 0x01, 0x65, 0x01, 0x66, 0x01, 0x67, +0x06, 0xd9, 0x01, 0x74, 0x01, 0x93, 0x01, 0x94, +0x01, 0x95, 0x01, 0x97, 0x01, 0xaf, 0x01, 0xbc, +0x01, 0xb1, 0x00, 0x3d, 0x00, 0xff, 0x00, 0x3e, +0x01, 0x00, 0x00, 0x4d, 0x01, 0x0f, 0x00, 0x54, +0x01, 0x16, 0x00, 0x55, 0x01, 0x17, 0x00, 0x57, +0x01, 0x19, 0x00, 0x56, 0x01, 0x18, 0x00, 0x58, +0x01, 0x1a, 0x00, 0x5b, 0x01, 0x1d, 0x00, 0x61, +0x01, 0x23, 0x00, 0x62, 0x01, 0x24, 0x00, 0x63, +0x01, 0x25, 0x00, 0x6c, 0x01, 0x2e, 0x00, 0x5f, +0x01, 0x21, 0x00, 0x6f, 0x01, 0x31, 0x00, 0x70, +0x01, 0x32, 0x00, 0x71, 0x01, 0x33, 0x00, 0x72, +0x01, 0x34, 0x00, 0x77, 0x01, 0x38, 0x00, 0x7a, +0x01, 0x3c, 0x00, 0x7e, 0x01, 0x40, 0x00, 0x80, +0x01, 0x42, 0x00, 0x86, 0x01, 0x48, 0x00, 0x85, +0x01, 0x46, 0x00, 0x81, 0x01, 0x49, 0x00, 0xf9, +0x01, 0xbf, 0x00, 0x87, 0x01, 0x4a, 0x00, 0x88, +0x01, 0x4b, 0x01, 0x4e, 0x00, 0x8b, 0x01, 0x4f, +0x00, 0x8d, 0x01, 0x52, 0x00, 0x8c, 0x01, 0x50, +0x00, 0x8e, 0x01, 0x51, 0x00, 0x92, 0x01, 0x56, +0x00, 0x96, 0x01, 0x5a, 0x00, 0x9a, 0x01, 0x5e, +0x00, 0x98, 0x01, 0x5c, 0x01, 0x62, 0x00, 0xf8, +0x01, 0xbd, 0x00, 0xa3, 0x01, 0x68, 0x00, 0xad, +0x01, 0x72, 0x00, 0xa4, 0x01, 0x69, 0x00, 0xb0, +0x01, 0x75, 0x00, 0xb8, 0x01, 0x7d, 0x00, 0xbb, +0x01, 0x7e, 0x00, 0xb9, 0x01, 0x7f, 0x00, 0xbf, +0x01, 0x84, 0x00, 0xc0, 0x01, 0x85, 0x00, 0xc2, +0x01, 0x87, 0x00, 0xc1, 0x01, 0x86, 0x00, 0xc8, +0x01, 0x8d, 0x00, 0xc7, 0x01, 0x8c, 0x00, 0xcc, +0x01, 0x92, 0x00, 0xd0, 0x01, 0x96, 0x00, 0xd2, +0x01, 0x98, 0x00, 0xd3, 0x01, 0x99, 0x00, 0xd4, +0x01, 0x9a, 0x00, 0xd5, 0x01, 0x9b, 0x00, 0xdd, +0x01, 0xa3, 0x00, 0xe6, 0x01, 0xac, 0x00, 0xea, +0x01, 0xb0, 0x00, 0xeb, 0x00, 0xf0, 0x01, 0xb6, +0x00, 0xf2, 0x01, 0xb8, 0x00, 0xf1, 0x01, 0xb7, +0x06, 0xae, 0x00, 0x76, 0x00, 0xb1, 0x01, 0x76, +0x00, 0xde, 0x01, 0xa4, 0x00, 0x40, 0x01, 0x02, +0x00, 0x82, 0x01, 0x43, 0x00, 0xa5, 0x01, 0x6a, +0x00, 0xd6, 0x01, 0x9c, 0x00, 0xd7, 0x01, 0x9d, +0x00, 0xd8, 0x01, 0x9e, 0x00, 0xd9, 0x01, 0x9f, +0x00, 0xda, 0x01, 0xa0, 0x00, 0x50, 0x01, 0x12, +0x00, 0x73, 0x01, 0x35, 0x00, 0xb7, 0x01, 0x7c, +0x00, 0x6e, 0x01, 0x30, 0x00, 0x97, 0x01, 0x5b, +0x00, 0x4f, 0x01, 0x11, 0x00, 0xc3, 0x01, 0x88, +0x00, 0xc9, 0x01, 0x8e, 0x01, 0xc0, 0x01, 0xc8, +0x01, 0xce, 0x01, 0xcf, 0x01, 0xd0, 0x01, 0xd1, +0x01, 0xd2, 0x01, 0xd3, 0x01, 0xd4, 0x01, 0xd5, +0x01, 0xd6, 0x01, 0xd7, 0x01, 0xd9, 0x02, 0x03, +0x01, 0xc9, 0x01, 0xd8, 0x01, 0xdb, 0x06, 0x86, +0x06, 0x8e, 0x06, 0x93, 0x06, 0x95, 0x07, 0x09, +0x07, 0x1a, 0x07, 0x1d, 0x07, 0x1b, 0x07, 0x1f, +0x07, 0x17, 0x07, 0x1c, 0x06, 0x9a, 0x06, 0x9b, +0x06, 0x88, 0x06, 0x8f, 0x06, 0x94, 0x07, 0x21, +0x07, 0x24, 0x07, 0x27, 0x07, 0x29, 0x07, 0x2b, +0x07, 0x2d, 0x07, 0x2f, 0x07, 0x33, 0x07, 0x35, +0x07, 0x37, 0x07, 0x39, 0x07, 0x3b, 0x07, 0x3d, +0x07, 0x42, 0x07, 0x44, 0x07, 0x46, 0x07, 0x51, +0x07, 0x52, 0x07, 0x53, 0x07, 0x54, 0x07, 0x56, +0x07, 0x58, 0x07, 0x5a, 0x07, 0x5b, 0x03, 0x6c, +0x03, 0x6e, 0x02, 0x59, 0x03, 0x68, 0x02, 0x5a, +0x02, 0x5b, 0x02, 0x5c, 0x02, 0x5f, 0x02, 0x61, +0x02, 0x87, 0x02, 0x52, 0x02, 0x53, 0x02, 0x54, +0x02, 0x55, 0x02, 0x56, 0x02, 0x57, 0x02, 0x58, +0x02, 0x5d, 0x02, 0x60, 0x02, 0x7e, 0x02, 0x7f, +0x02, 0x80, 0x02, 0x81, 0x02, 0x88, 0x02, 0x62, +0x02, 0x63, 0x02, 0x64, 0x02, 0x65, 0x02, 0x66, +0x02, 0x67, 0x02, 0x68, 0x02, 0x69, 0x02, 0x6a, +0x02, 0x6b, 0x02, 0x6c, 0x02, 0x6d, 0x02, 0x6e, +0x02, 0x6f, 0x02, 0x70, 0x02, 0x71, 0x02, 0x72, +0x02, 0x7a, 0x02, 0x73, 0x02, 0x74, 0x02, 0x75, +0x02, 0x76, 0x02, 0x77, 0x02, 0x78, 0x02, 0x79, +0x02, 0x82, 0x02, 0x85, 0x02, 0x83, 0x02, 0x84, +0x02, 0x86, 0x03, 0xc1, 0x04, 0x1b, 0x03, 0xc2, +0x04, 0x1c, 0x03, 0xc3, 0x04, 0x1d, 0x03, 0xc4, +0x04, 0x1e, 0x03, 0xc5, 0x04, 0x1f, 0x03, 0xc6, +0x04, 0x20, 0x03, 0xc9, 0x04, 0x23, 0x03, 0xca, +0x04, 0x24, 0x03, 0xcd, 0x04, 0x27, 0x03, 0xd0, +0x04, 0x2a, 0x03, 0xd1, 0x04, 0x2b, 0x03, 0xd2, +0x04, 0x2c, 0x03, 0xd3, 0x04, 0x2d, 0x03, 0xd4, +0x04, 0x2e, 0x03, 0xd5, 0x04, 0x2f, 0x03, 0xd6, +0x04, 0x30, 0x03, 0xd7, 0x03, 0xd8, 0x04, 0x31, +0x04, 0x34, 0x03, 0xdb, 0x04, 0x35, 0x03, 0xdc, +0x04, 0x36, 0x03, 0xdd, 0x04, 0x37, 0x03, 0xde, +0x04, 0x38, 0x03, 0xdf, 0x04, 0x39, 0x03, 0xe0, +0x04, 0x3a, 0x03, 0xe1, 0x04, 0x3b, 0x03, 0xe2, +0x04, 0x3c, 0x03, 0xe3, 0x04, 0x3d, 0x06, 0x7e, +0x06, 0x80, 0x06, 0x81, 0x06, 0x87, 0x06, 0x89, +0x06, 0x8c, 0x06, 0x90, 0x06, 0x91, 0x00, 0x52, +0x01, 0x14, 0x00, 0x59, 0x01, 0x1b, 0x00, 0x5a, +0x01, 0x1c, 0x00, 0x6d, 0x01, 0x2f, 0x00, 0x74, +0x01, 0x36, 0x00, 0x78, 0x01, 0x39, 0x00, 0x79, +0x01, 0x3b, 0x00, 0x89, 0x01, 0x4c, 0x00, 0x8a, +0x01, 0x4d, 0x00, 0x8f, 0x01, 0x53, 0x00, 0x90, +0x01, 0x54, 0x00, 0x91, 0x01, 0x55, 0x00, 0x93, +0x01, 0x57, 0x00, 0x94, 0x01, 0x58, 0x00, 0x95, +0x01, 0x59, 0x00, 0x9b, 0x01, 0x5f, 0x00, 0x9c, +0x01, 0x60, 0x00, 0x9d, 0x01, 0x61, 0x00, 0xae, +0x01, 0x73, 0x00, 0xba, 0x01, 0x80, 0x00, 0xbc, +0x01, 0x81, 0x00, 0xbd, 0x01, 0x82, 0x00, 0xbe, +0x01, 0x83, 0x00, 0xc4, 0x01, 0x89, 0x00, 0xc5, +0x01, 0x8a, 0x00, 0xca, 0x01, 0x8f, 0x00, 0xcb, +0x01, 0x90, 0x00, 0xe4, 0x01, 0xaa, 0x00, 0xe5, +0x01, 0xab, 0x00, 0xe7, 0x01, 0xad, 0x00, 0xec, +0x01, 0xb2, 0x00, 0xf3, 0x01, 0xb9, 0x00, 0xf4, +0x01, 0xba, 0x01, 0x3a, 0x01, 0x91, 0x00, 0x41, +0x01, 0x03, 0x00, 0x42, 0x01, 0x04, 0x00, 0x43, +0x01, 0x05, 0x00, 0x44, 0x01, 0x06, 0x00, 0x45, +0x01, 0x07, 0x00, 0x46, 0x01, 0x08, 0x00, 0x47, +0x01, 0x09, 0x00, 0x48, 0x01, 0x0a, 0x00, 0x49, +0x01, 0x0b, 0x00, 0x4a, 0x01, 0x0c, 0x00, 0x4b, +0x01, 0x0d, 0x00, 0x4c, 0x01, 0x0e, 0x00, 0x64, +0x01, 0x26, 0x00, 0x65, 0x01, 0x27, 0x00, 0x66, +0x01, 0x28, 0x00, 0x67, 0x01, 0x29, 0x00, 0x68, +0x01, 0x2a, 0x00, 0x69, 0x01, 0x2b, 0x00, 0x6a, +0x01, 0x2c, 0x00, 0x6b, 0x01, 0x2d, 0x00, 0x83, +0x01, 0x44, 0x00, 0x84, 0x01, 0x45, 0x00, 0xa6, +0x01, 0x6b, 0x00, 0xa7, 0x01, 0x6c, 0x00, 0xa8, +0x01, 0x6d, 0x00, 0xa9, 0x01, 0x6e, 0x00, 0xaa, +0x01, 0x6f, 0x00, 0xab, 0x01, 0x70, 0x00, 0xac, +0x01, 0x71, 0x00, 0xb2, 0x01, 0x77, 0x00, 0xb3, +0x01, 0x78, 0x00, 0xb4, 0x01, 0x79, 0x00, 0xb5, +0x01, 0x7a, 0x00, 0xb6, 0x01, 0x7b, 0x00, 0xdb, +0x01, 0xa1, 0x00, 0xdc, 0x01, 0xa2, 0x00, 0xdf, +0x01, 0xa5, 0x00, 0xe0, 0x01, 0xa6, 0x00, 0xe1, +0x01, 0xa7, 0x00, 0xe2, 0x01, 0xa8, 0x00, 0xe3, +0x01, 0xa9, 0x00, 0xe8, 0x01, 0xae, 0x00, 0xed, +0x01, 0xb3, 0x00, 0xee, 0x01, 0xb4, 0x00, 0xef, +0x01, 0xb5, 0x02, 0xed, 0x02, 0xee, 0x02, 0xef, +0x02, 0xf0, 0x02, 0xf1, 0x02, 0xf2, 0x02, 0x89, +0x02, 0x8a, 0x02, 0x8d, 0x02, 0x8e, 0x02, 0x8f, +0x02, 0x90, 0x02, 0x91, 0x02, 0x92, 0x02, 0xf6, +0x02, 0xf7, 0x03, 0x02, 0x03, 0x03, 0x03, 0x04, +0x03, 0x05, 0x03, 0x06, 0x03, 0x07, 0x02, 0x9d, +0x02, 0x9e, 0x02, 0xa1, 0x02, 0xa2, 0x02, 0xa3, +0x02, 0xa4, 0x02, 0xa5, 0x02, 0xa6, 0x03, 0x09, +0x03, 0x0a, 0x03, 0x0d, 0x03, 0x0e, 0x03, 0x0f, +0x03, 0x10, 0x03, 0x11, 0x03, 0x12, 0x02, 0xa7, +0x02, 0xa8, 0x02, 0xab, 0x02, 0xac, 0x02, 0xad, +0x02, 0xae, 0x02, 0xaf, 0x02, 0xb0, 0x03, 0x19, +0x03, 0x1a, 0x02, 0xc1, 0x03, 0x33, 0x03, 0x34, +0x03, 0x37, 0x03, 0x38, 0x03, 0x39, 0x03, 0x3a, +0x03, 0x3b, 0x03, 0x3c, 0x02, 0xc4, 0x02, 0xc5, +0x02, 0xc8, 0x02, 0xc9, 0x02, 0xca, 0x02, 0xcb, +0x02, 0xcc, 0x02, 0xcd, 0x02, 0xeb, 0x02, 0xec, +0x02, 0xf8, 0x02, 0xf9, 0x03, 0x00, 0x03, 0x01, +0x03, 0x0b, 0x03, 0x0c, 0x03, 0x1b, 0x03, 0x1c, +0x03, 0x25, 0x03, 0x26, 0x03, 0x35, 0x03, 0x36, +0x02, 0xcf, 0x02, 0xd0, 0x02, 0xd1, 0x02, 0xd2, +0x02, 0xd3, 0x02, 0xd4, 0x02, 0xd5, 0x02, 0xd6, +0x03, 0x4b, 0x03, 0x4c, 0x02, 0xd8, 0x02, 0xd9, +0x02, 0xda, 0x02, 0xdb, 0x02, 0xdc, 0x02, 0xdd, +0x02, 0xde, 0x02, 0xdf, 0x03, 0x57, 0x03, 0x58, +0x02, 0xe1, 0x02, 0xe2, 0x02, 0xe3, 0x02, 0xe4, +0x02, 0xe5, 0x02, 0xe6, 0x02, 0xe7, 0x02, 0xe8, +0x02, 0xf3, 0x02, 0xf4, 0x03, 0x41, 0x03, 0x3e, +0x03, 0x42, 0x02, 0xf5, 0x03, 0x49, 0x02, 0x93, +0x02, 0x94, 0x02, 0x8b, 0x02, 0x8c, 0x02, 0xce, +0x03, 0x71, 0x03, 0x70, 0x03, 0x72, 0x03, 0x7c, +0x03, 0x7f, 0x03, 0x4d, 0x03, 0x4a, 0x03, 0x4e, +0x03, 0x08, 0x03, 0x55, 0x02, 0x97, 0x02, 0x98, +0x02, 0x9f, 0x02, 0xa0, 0x02, 0xd7, 0x03, 0x76, +0x03, 0x78, 0x03, 0x7a, 0x03, 0x13, 0x03, 0x14, +0x03, 0x16, 0x03, 0x17, 0x03, 0x15, 0x03, 0x18, +0x02, 0xb1, 0x02, 0xb2, 0x02, 0xa9, 0x02, 0xaa, +0x03, 0x77, 0x03, 0x79, 0x03, 0x7b, 0x03, 0x2e, +0x03, 0x2f, 0x03, 0x30, 0x03, 0x31, 0x03, 0x21, +0x03, 0x22, 0x03, 0x2d, 0x03, 0x32, 0x02, 0xc2, +0x02, 0xc3, 0x02, 0xbd, 0x02, 0xbe, 0x02, 0xbb, +0x03, 0x7d, 0x03, 0x7e, 0x03, 0x74, 0x03, 0x59, +0x03, 0x56, 0x03, 0x5a, 0x03, 0x3d, 0x03, 0x61, +0x02, 0xb5, 0x02, 0xb6, 0x02, 0xc6, 0x02, 0xc7, +0x02, 0xe0, 0x03, 0x75, 0x03, 0x73, 0x04, 0x92, +0x04, 0x8e, 0x04, 0x8f, 0x04, 0x93, 0x04, 0xa8, +0x04, 0x82, 0x04, 0x83, 0x04, 0x86, 0x04, 0x84, +0x04, 0x85, 0x04, 0x87, 0x04, 0xa4, 0x04, 0xa5, +0x04, 0x95, 0x07, 0x94, 0x06, 0xc2, 0x04, 0xa9, +0x04, 0xad, 0x04, 0x97, 0x04, 0x98, 0x04, 0xaa, +0x04, 0xac, 0x04, 0xab, 0x06, 0x28, 0x06, 0x85, +0x06, 0x32, 0x06, 0x33, 0x06, 0x8a, 0x06, 0xb4, +0x06, 0xac, 0x06, 0xbc, 0x06, 0xb9, 0x06, 0xba, +0x04, 0x3f, 0x04, 0xb9, 0x06, 0xce, 0x06, 0xd3, +0x06, 0xd4, 0x06, 0xed, 0x06, 0xd7, 0x06, 0xda, +0x06, 0xea, 0x06, 0xf7, 0x07, 0x05, 0x02, 0x04, +0x07, 0x96, 0x07, 0x97, 0x02, 0x05, 0x02, 0x06, +0x07, 0x95, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, +0x25, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x03, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x00, 0x0d, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, +0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, +0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, +0x00, 0x21, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, +0x04, 0x7c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, +0x00, 0x22, 0x00, 0x00, 0x04, 0x81, 0x00, 0x00, +0x00, 0x23, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, +0x04, 0xc1, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, +0x00, 0x24, 0x00, 0x00, 0x06, 0xa8, 0x00, 0x00, +0x00, 0x25, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, +0x06, 0xc1, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, +0x00, 0x26, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, +0x00, 0x27, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, +0x04, 0x80, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, +0x00, 0x29, 0x00, 0x00, 0x04, 0x99, 0x00, 0x00, +0x00, 0x2a, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, +0x04, 0xa3, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, +0x00, 0x2b, 0x00, 0x00, 0x06, 0xd6, 0x00, 0x00, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, +0x04, 0x78, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, +0x00, 0x2d, 0x00, 0x00, 0x04, 0x8c, 0x00, 0x00, +0x00, 0x2e, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, +0x04, 0x77, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, +0x00, 0x2f, 0x00, 0x00, 0x04, 0x9f, 0x00, 0x00, +0x00, 0x30, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, +0x04, 0x41, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, +0x00, 0x3b, 0x00, 0x00, 0x04, 0x79, 0x00, 0x00, +0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, +0x06, 0xdc, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, +0x00, 0x3d, 0x00, 0x00, 0x06, 0xdb, 0x00, 0x00, +0x00, 0x3e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, +0x06, 0xdd, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, +0x00, 0x3f, 0x00, 0x00, 0x04, 0x7e, 0x00, 0x00, +0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, +0x04, 0xbf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, +0x00, 0x5a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, +0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, +0x04, 0x9b, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, +0x00, 0x5c, 0x00, 0x00, 0x04, 0xa1, 0x00, 0x00, +0x00, 0x5d, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, +0x04, 0x9c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, +0x00, 0x5e, 0x00, 0x00, 0x06, 0xe1, 0x00, 0x00, +0x00, 0x5f, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, +0x04, 0x96, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, +0x00, 0x60, 0x00, 0x00, 0x07, 0x0e, 0x00, 0x00, +0x00, 0x61, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, +0x00, 0x1e, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, +0x00, 0x7b, 0x00, 0x00, 0x04, 0x9d, 0x00, 0x00, +0x00, 0x7c, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, +0x04, 0xa0, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, +0x00, 0x7d, 0x00, 0x00, 0x04, 0x9e, 0x00, 0x00, +0x00, 0x7e, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, +0x06, 0xe3, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, +0x00, 0xa0, 0x00, 0x00, 0x07, 0x90, 0x00, 0x00, +0x00, 0xa1, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, +0x04, 0x7d, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, +0x00, 0xa2, 0x00, 0x00, 0x06, 0xad, 0x00, 0x00, +0x00, 0xa3, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, +0x06, 0xa9, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, +0x00, 0xa4, 0x00, 0x00, 0x06, 0xa7, 0x00, 0x00, +0x00, 0xa5, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, +0x06, 0xaa, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, +0x00, 0xa6, 0x00, 0x00, 0x04, 0xa2, 0x00, 0x00, +0x00, 0xa7, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, +0x04, 0xa6, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, +0x00, 0xa8, 0x00, 0x00, 0x07, 0x18, 0x00, 0x00, +0x00, 0xa9, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, +0x04, 0xb8, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, +0x00, 0xaa, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, +0x00, 0xab, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, +0x04, 0x8a, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, +0x00, 0xac, 0x00, 0x00, 0x06, 0xe5, 0x00, 0x00, +0x00, 0xad, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, +0x04, 0x8d, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, +0x00, 0xae, 0x00, 0x00, 0x04, 0xba, 0x00, 0x00, +0x00, 0xaf, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, +0x07, 0x19, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, +0x00, 0xb0, 0x00, 0x00, 0x06, 0xa6, 0x00, 0x00, +0x00, 0xb1, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, +0x06, 0xe0, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, +0x00, 0xb3, 0x00, 0x00, 0x06, 0x2a, 0x00, 0x00, +0x00, 0xb4, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, +0x07, 0x0f, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, +0x00, 0xb5, 0x00, 0x00, 0x06, 0xe7, 0x00, 0x00, +0x00, 0xb6, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, +0x04, 0xa7, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, +0x00, 0xb7, 0x00, 0x00, 0x04, 0x94, 0x00, 0x00, +0x00, 0xb8, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, +0x07, 0x1e, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, +0x00, 0xb9, 0x00, 0x00, 0x06, 0x29, 0x00, 0x00, +0x00, 0xba, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, +0x06, 0x62, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, +0x00, 0xbb, 0x00, 0x00, 0x04, 0x8b, 0x00, 0x00, +0x00, 0xbc, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, +0x06, 0xc3, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, +0x00, 0xbf, 0x00, 0x00, 0x04, 0x7f, 0x00, 0x00, +0x00, 0xc0, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, +0x00, 0x38, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, +0x00, 0xc5, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, +0x00, 0xc6, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, +0x00, 0x4e, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, +0x00, 0xc7, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, +0x00, 0xc8, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0x5c, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, +0x00, 0xcb, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, +0x00, 0xcc, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, +0x00, 0x7b, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, +0x00, 0xcf, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, +0x00, 0xd0, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, +0x00, 0xf5, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, +0x00, 0xd1, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, +0x00, 0xd2, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, +0x00, 0x9e, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, +0x00, 0xd7, 0x00, 0x00, 0x06, 0xd8, 0x00, 0x00, +0x00, 0xd8, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, +0x00, 0xaf, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, +0x00, 0xdb, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, +0x00, 0xdc, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, +0x00, 0xd1, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, +0x00, 0xdd, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, +0x00, 0xde, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, +0x00, 0xf6, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, +0x00, 0xdf, 0x00, 0x00, 0x01, 0x8b, 0x00, 0x00, +0x00, 0xe0, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, +0x00, 0xfa, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, +0x00, 0xe5, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, +0x00, 0xe6, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, +0x01, 0x10, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, +0x00, 0xe7, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, +0x00, 0xe8, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, +0x01, 0x1e, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, +0x00, 0xeb, 0x00, 0x00, 0x01, 0x22, 0x00, 0x00, +0x00, 0xec, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, +0x01, 0x3d, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, +0x00, 0xef, 0x00, 0x00, 0x01, 0x41, 0x00, 0x00, +0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, +0x01, 0xbb, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, +0x00, 0xf1, 0x00, 0x00, 0x01, 0x5d, 0x00, 0x00, +0x00, 0xf2, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, +0x01, 0x63, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, +0x00, 0xf7, 0x00, 0x00, 0x06, 0xd9, 0x00, 0x00, +0x00, 0xf8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, +0x01, 0x74, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, +0x00, 0xfb, 0x00, 0x00, 0x01, 0x93, 0x00, 0x00, +0x00, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, +0x01, 0x97, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, +0x00, 0xfd, 0x00, 0x00, 0x01, 0xaf, 0x00, 0x00, +0x00, 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, +0x01, 0xbc, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, +0x00, 0xff, 0x00, 0x00, 0x01, 0xb1, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x00, 0x3d, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, +0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, +0x00, 0x3e, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, +0x01, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x01, 0x04, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, +0x00, 0x4d, 0x00, 0x00, 0x01, 0x05, 0x00, 0x00, +0x01, 0x05, 0x00, 0x00, 0x01, 0x0f, 0x00, 0x00, +0x01, 0x06, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, +0x00, 0x54, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, +0x01, 0x07, 0x00, 0x00, 0x01, 0x16, 0x00, 0x00, +0x01, 0x08, 0x00, 0x00, 0x01, 0x08, 0x00, 0x00, +0x00, 0x55, 0x00, 0x00, 0x01, 0x09, 0x00, 0x00, +0x01, 0x09, 0x00, 0x00, 0x01, 0x17, 0x00, 0x00, +0x01, 0x0a, 0x00, 0x00, 0x01, 0x0a, 0x00, 0x00, +0x00, 0x57, 0x00, 0x00, 0x01, 0x0b, 0x00, 0x00, +0x01, 0x0b, 0x00, 0x00, 0x01, 0x19, 0x00, 0x00, +0x01, 0x0c, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, +0x00, 0x56, 0x00, 0x00, 0x01, 0x0d, 0x00, 0x00, +0x01, 0x0d, 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, +0x01, 0x0e, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00, +0x00, 0x58, 0x00, 0x00, 0x01, 0x0f, 0x00, 0x00, +0x01, 0x0f, 0x00, 0x00, 0x01, 0x1a, 0x00, 0x00, +0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, +0x00, 0x5b, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, +0x01, 0x11, 0x00, 0x00, 0x01, 0x1d, 0x00, 0x00, +0x01, 0x12, 0x00, 0x00, 0x01, 0x12, 0x00, 0x00, +0x00, 0x61, 0x00, 0x00, 0x01, 0x13, 0x00, 0x00, +0x01, 0x13, 0x00, 0x00, 0x01, 0x23, 0x00, 0x00, +0x01, 0x14, 0x00, 0x00, 0x01, 0x14, 0x00, 0x00, +0x00, 0x62, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, +0x01, 0x15, 0x00, 0x00, 0x01, 0x24, 0x00, 0x00, +0x01, 0x16, 0x00, 0x00, 0x01, 0x16, 0x00, 0x00, +0x00, 0x63, 0x00, 0x00, 0x01, 0x17, 0x00, 0x00, +0x01, 0x17, 0x00, 0x00, 0x01, 0x25, 0x00, 0x00, +0x01, 0x18, 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, +0x00, 0x6c, 0x00, 0x00, 0x01, 0x19, 0x00, 0x00, +0x01, 0x19, 0x00, 0x00, 0x01, 0x2e, 0x00, 0x00, +0x01, 0x1a, 0x00, 0x00, 0x01, 0x1a, 0x00, 0x00, +0x00, 0x5f, 0x00, 0x00, 0x01, 0x1b, 0x00, 0x00, +0x01, 0x1b, 0x00, 0x00, 0x01, 0x21, 0x00, 0x00, +0x01, 0x1c, 0x00, 0x00, 0x01, 0x1c, 0x00, 0x00, +0x00, 0x6f, 0x00, 0x00, 0x01, 0x1d, 0x00, 0x00, +0x01, 0x1d, 0x00, 0x00, 0x01, 0x31, 0x00, 0x00, +0x01, 0x1e, 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, +0x00, 0x70, 0x00, 0x00, 0x01, 0x1f, 0x00, 0x00, +0x01, 0x1f, 0x00, 0x00, 0x01, 0x32, 0x00, 0x00, +0x01, 0x20, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, +0x00, 0x71, 0x00, 0x00, 0x01, 0x21, 0x00, 0x00, +0x01, 0x21, 0x00, 0x00, 0x01, 0x33, 0x00, 0x00, +0x01, 0x22, 0x00, 0x00, 0x01, 0x22, 0x00, 0x00, +0x00, 0x72, 0x00, 0x00, 0x01, 0x23, 0x00, 0x00, +0x01, 0x23, 0x00, 0x00, 0x01, 0x34, 0x00, 0x00, +0x01, 0x24, 0x00, 0x00, 0x01, 0x24, 0x00, 0x00, +0x00, 0x77, 0x00, 0x00, 0x01, 0x25, 0x00, 0x00, +0x01, 0x25, 0x00, 0x00, 0x01, 0x38, 0x00, 0x00, +0x01, 0x26, 0x00, 0x00, 0x01, 0x26, 0x00, 0x00, +0x00, 0x7a, 0x00, 0x00, 0x01, 0x27, 0x00, 0x00, +0x01, 0x27, 0x00, 0x00, 0x01, 0x3c, 0x00, 0x00, +0x01, 0x28, 0x00, 0x00, 0x01, 0x28, 0x00, 0x00, +0x00, 0x7e, 0x00, 0x00, 0x01, 0x29, 0x00, 0x00, +0x01, 0x29, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, +0x01, 0x2a, 0x00, 0x00, 0x01, 0x2a, 0x00, 0x00, +0x00, 0x80, 0x00, 0x00, 0x01, 0x2b, 0x00, 0x00, +0x01, 0x2b, 0x00, 0x00, 0x01, 0x42, 0x00, 0x00, +0x01, 0x2c, 0x00, 0x00, 0x01, 0x2c, 0x00, 0x00, +0x00, 0x86, 0x00, 0x00, 0x01, 0x2d, 0x00, 0x00, +0x01, 0x2d, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, +0x01, 0x2e, 0x00, 0x00, 0x01, 0x2e, 0x00, 0x00, +0x00, 0x85, 0x00, 0x00, 0x01, 0x2f, 0x00, 0x00, +0x01, 0x2f, 0x00, 0x00, 0x01, 0x46, 0x00, 0x00, +0x01, 0x30, 0x00, 0x00, 0x01, 0x30, 0x00, 0x00, +0x00, 0x81, 0x00, 0x00, 0x01, 0x31, 0x00, 0x00, +0x01, 0x31, 0x00, 0x00, 0x01, 0x49, 0x00, 0x00, +0x01, 0x32, 0x00, 0x00, 0x01, 0x32, 0x00, 0x00, +0x00, 0xf9, 0x00, 0x00, 0x01, 0x33, 0x00, 0x00, +0x01, 0x33, 0x00, 0x00, 0x01, 0xbf, 0x00, 0x00, +0x01, 0x34, 0x00, 0x00, 0x01, 0x34, 0x00, 0x00, +0x00, 0x87, 0x00, 0x00, 0x01, 0x35, 0x00, 0x00, +0x01, 0x35, 0x00, 0x00, 0x01, 0x4a, 0x00, 0x00, +0x01, 0x36, 0x00, 0x00, 0x01, 0x36, 0x00, 0x00, +0x00, 0x88, 0x00, 0x00, 0x01, 0x37, 0x00, 0x00, +0x01, 0x37, 0x00, 0x00, 0x01, 0x4b, 0x00, 0x00, +0x01, 0x38, 0x00, 0x00, 0x01, 0x38, 0x00, 0x00, +0x01, 0x4e, 0x00, 0x00, 0x01, 0x39, 0x00, 0x00, +0x01, 0x39, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, +0x01, 0x3a, 0x00, 0x00, 0x01, 0x3a, 0x00, 0x00, +0x01, 0x4f, 0x00, 0x00, 0x01, 0x3b, 0x00, 0x00, +0x01, 0x3b, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, +0x01, 0x3c, 0x00, 0x00, 0x01, 0x3c, 0x00, 0x00, +0x01, 0x52, 0x00, 0x00, 0x01, 0x3d, 0x00, 0x00, +0x01, 0x3d, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, +0x01, 0x3e, 0x00, 0x00, 0x01, 0x3e, 0x00, 0x00, +0x01, 0x50, 0x00, 0x00, 0x01, 0x3f, 0x00, 0x00, +0x01, 0x3f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, +0x01, 0x40, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, +0x01, 0x51, 0x00, 0x00, 0x01, 0x41, 0x00, 0x00, +0x01, 0x41, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, +0x01, 0x42, 0x00, 0x00, 0x01, 0x42, 0x00, 0x00, +0x01, 0x56, 0x00, 0x00, 0x01, 0x43, 0x00, 0x00, +0x01, 0x43, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, +0x01, 0x44, 0x00, 0x00, 0x01, 0x44, 0x00, 0x00, +0x01, 0x5a, 0x00, 0x00, 0x01, 0x45, 0x00, 0x00, +0x01, 0x45, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, +0x01, 0x46, 0x00, 0x00, 0x01, 0x46, 0x00, 0x00, +0x01, 0x5e, 0x00, 0x00, 0x01, 0x47, 0x00, 0x00, +0x01, 0x47, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, +0x01, 0x48, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, +0x01, 0x5c, 0x00, 0x00, 0x01, 0x49, 0x00, 0x00, +0x01, 0x49, 0x00, 0x00, 0x01, 0x62, 0x00, 0x00, +0x01, 0x4a, 0x00, 0x00, 0x01, 0x4a, 0x00, 0x00, +0x00, 0xf8, 0x00, 0x00, 0x01, 0x4b, 0x00, 0x00, +0x01, 0x4b, 0x00, 0x00, 0x01, 0xbd, 0x00, 0x00, +0x01, 0x4c, 0x00, 0x00, 0x01, 0x4c, 0x00, 0x00, +0x00, 0xa3, 0x00, 0x00, 0x01, 0x4d, 0x00, 0x00, +0x01, 0x4d, 0x00, 0x00, 0x01, 0x68, 0x00, 0x00, +0x01, 0x4e, 0x00, 0x00, 0x01, 0x4e, 0x00, 0x00, +0x00, 0xad, 0x00, 0x00, 0x01, 0x4f, 0x00, 0x00, +0x01, 0x4f, 0x00, 0x00, 0x01, 0x72, 0x00, 0x00, +0x01, 0x50, 0x00, 0x00, 0x01, 0x50, 0x00, 0x00, +0x00, 0xa4, 0x00, 0x00, 0x01, 0x51, 0x00, 0x00, +0x01, 0x51, 0x00, 0x00, 0x01, 0x69, 0x00, 0x00, +0x01, 0x52, 0x00, 0x00, 0x01, 0x52, 0x00, 0x00, +0x00, 0xb0, 0x00, 0x00, 0x01, 0x53, 0x00, 0x00, +0x01, 0x53, 0x00, 0x00, 0x01, 0x75, 0x00, 0x00, +0x01, 0x54, 0x00, 0x00, 0x01, 0x54, 0x00, 0x00, +0x00, 0xb8, 0x00, 0x00, 0x01, 0x55, 0x00, 0x00, +0x01, 0x55, 0x00, 0x00, 0x01, 0x7d, 0x00, 0x00, +0x01, 0x56, 0x00, 0x00, 0x01, 0x56, 0x00, 0x00, +0x00, 0xbb, 0x00, 0x00, 0x01, 0x57, 0x00, 0x00, +0x01, 0x57, 0x00, 0x00, 0x01, 0x7e, 0x00, 0x00, +0x01, 0x58, 0x00, 0x00, 0x01, 0x58, 0x00, 0x00, +0x00, 0xb9, 0x00, 0x00, 0x01, 0x59, 0x00, 0x00, +0x01, 0x59, 0x00, 0x00, 0x01, 0x7f, 0x00, 0x00, +0x01, 0x5a, 0x00, 0x00, 0x01, 0x5a, 0x00, 0x00, +0x00, 0xbf, 0x00, 0x00, 0x01, 0x5b, 0x00, 0x00, +0x01, 0x5b, 0x00, 0x00, 0x01, 0x84, 0x00, 0x00, +0x01, 0x5c, 0x00, 0x00, 0x01, 0x5c, 0x00, 0x00, +0x00, 0xc0, 0x00, 0x00, 0x01, 0x5d, 0x00, 0x00, +0x01, 0x5d, 0x00, 0x00, 0x01, 0x85, 0x00, 0x00, +0x01, 0x5e, 0x00, 0x00, 0x01, 0x5e, 0x00, 0x00, +0x00, 0xc2, 0x00, 0x00, 0x01, 0x5f, 0x00, 0x00, +0x01, 0x5f, 0x00, 0x00, 0x01, 0x87, 0x00, 0x00, +0x01, 0x60, 0x00, 0x00, 0x01, 0x60, 0x00, 0x00, +0x00, 0xc1, 0x00, 0x00, 0x01, 0x61, 0x00, 0x00, +0x01, 0x61, 0x00, 0x00, 0x01, 0x86, 0x00, 0x00, +0x01, 0x62, 0x00, 0x00, 0x01, 0x62, 0x00, 0x00, +0x00, 0xc8, 0x00, 0x00, 0x01, 0x63, 0x00, 0x00, +0x01, 0x63, 0x00, 0x00, 0x01, 0x8d, 0x00, 0x00, +0x01, 0x64, 0x00, 0x00, 0x01, 0x64, 0x00, 0x00, +0x00, 0xc7, 0x00, 0x00, 0x01, 0x65, 0x00, 0x00, +0x01, 0x65, 0x00, 0x00, 0x01, 0x8c, 0x00, 0x00, +0x01, 0x66, 0x00, 0x00, 0x01, 0x66, 0x00, 0x00, +0x00, 0xcc, 0x00, 0x00, 0x01, 0x67, 0x00, 0x00, +0x01, 0x67, 0x00, 0x00, 0x01, 0x92, 0x00, 0x00, +0x01, 0x68, 0x00, 0x00, 0x01, 0x68, 0x00, 0x00, +0x00, 0xd0, 0x00, 0x00, 0x01, 0x69, 0x00, 0x00, +0x01, 0x69, 0x00, 0x00, 0x01, 0x96, 0x00, 0x00, +0x01, 0x6a, 0x00, 0x00, 0x01, 0x6a, 0x00, 0x00, +0x00, 0xd2, 0x00, 0x00, 0x01, 0x6b, 0x00, 0x00, +0x01, 0x6b, 0x00, 0x00, 0x01, 0x98, 0x00, 0x00, +0x01, 0x6c, 0x00, 0x00, 0x01, 0x6c, 0x00, 0x00, +0x00, 0xd3, 0x00, 0x00, 0x01, 0x6d, 0x00, 0x00, +0x01, 0x6d, 0x00, 0x00, 0x01, 0x99, 0x00, 0x00, +0x01, 0x6e, 0x00, 0x00, 0x01, 0x6e, 0x00, 0x00, +0x00, 0xd4, 0x00, 0x00, 0x01, 0x6f, 0x00, 0x00, +0x01, 0x6f, 0x00, 0x00, 0x01, 0x9a, 0x00, 0x00, +0x01, 0x70, 0x00, 0x00, 0x01, 0x70, 0x00, 0x00, +0x00, 0xd5, 0x00, 0x00, 0x01, 0x71, 0x00, 0x00, +0x01, 0x71, 0x00, 0x00, 0x01, 0x9b, 0x00, 0x00, +0x01, 0x72, 0x00, 0x00, 0x01, 0x72, 0x00, 0x00, +0x00, 0xdd, 0x00, 0x00, 0x01, 0x73, 0x00, 0x00, +0x01, 0x73, 0x00, 0x00, 0x01, 0xa3, 0x00, 0x00, +0x01, 0x74, 0x00, 0x00, 0x01, 0x74, 0x00, 0x00, +0x00, 0xe6, 0x00, 0x00, 0x01, 0x75, 0x00, 0x00, +0x01, 0x75, 0x00, 0x00, 0x01, 0xac, 0x00, 0x00, +0x01, 0x76, 0x00, 0x00, 0x01, 0x76, 0x00, 0x00, +0x00, 0xea, 0x00, 0x00, 0x01, 0x77, 0x00, 0x00, +0x01, 0x77, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, +0x01, 0x78, 0x00, 0x00, 0x01, 0x78, 0x00, 0x00, +0x00, 0xeb, 0x00, 0x00, 0x01, 0x79, 0x00, 0x00, +0x01, 0x79, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, +0x01, 0x7a, 0x00, 0x00, 0x01, 0x7a, 0x00, 0x00, +0x01, 0xb6, 0x00, 0x00, 0x01, 0x7b, 0x00, 0x00, +0x01, 0x7b, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, +0x01, 0x7c, 0x00, 0x00, 0x01, 0x7c, 0x00, 0x00, +0x01, 0xb8, 0x00, 0x00, 0x01, 0x7d, 0x00, 0x00, +0x01, 0x7d, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, +0x01, 0x7e, 0x00, 0x00, 0x01, 0x7e, 0x00, 0x00, +0x01, 0xb7, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, +0x01, 0x80, 0x00, 0x00, 0x01, 0x13, 0x00, 0x00, +0x01, 0x8f, 0x00, 0x00, 0x01, 0x8f, 0x00, 0x00, +0x00, 0xf7, 0x00, 0x00, 0x01, 0x92, 0x00, 0x00, +0x01, 0x92, 0x00, 0x00, 0x06, 0xae, 0x00, 0x00, +0x01, 0x93, 0x00, 0x00, 0x01, 0x93, 0x00, 0x00, +0x00, 0x76, 0x00, 0x00, 0x01, 0xa0, 0x00, 0x00, +0x01, 0xa0, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, +0x01, 0xa1, 0x00, 0x00, 0x01, 0xa1, 0x00, 0x00, +0x01, 0x76, 0x00, 0x00, 0x01, 0xaf, 0x00, 0x00, +0x01, 0xaf, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, +0x01, 0xb0, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, +0x01, 0xa4, 0x00, 0x00, 0x01, 0xc2, 0x00, 0x00, +0x01, 0xc2, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, +0x01, 0xcd, 0x00, 0x00, 0x01, 0xcd, 0x00, 0x00, +0x00, 0x40, 0x00, 0x00, 0x01, 0xce, 0x00, 0x00, +0x01, 0xce, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, +0x01, 0xcf, 0x00, 0x00, 0x01, 0xcf, 0x00, 0x00, +0x00, 0x82, 0x00, 0x00, 0x01, 0xd0, 0x00, 0x00, +0x01, 0xd0, 0x00, 0x00, 0x01, 0x43, 0x00, 0x00, +0x01, 0xd1, 0x00, 0x00, 0x01, 0xd1, 0x00, 0x00, +0x00, 0xa5, 0x00, 0x00, 0x01, 0xd2, 0x00, 0x00, +0x01, 0xd2, 0x00, 0x00, 0x01, 0x6a, 0x00, 0x00, +0x01, 0xd3, 0x00, 0x00, 0x01, 0xd3, 0x00, 0x00, +0x00, 0xd6, 0x00, 0x00, 0x01, 0xd4, 0x00, 0x00, +0x01, 0xd4, 0x00, 0x00, 0x01, 0x9c, 0x00, 0x00, +0x01, 0xd5, 0x00, 0x00, 0x01, 0xd5, 0x00, 0x00, +0x00, 0xd7, 0x00, 0x00, 0x01, 0xd6, 0x00, 0x00, +0x01, 0xd6, 0x00, 0x00, 0x01, 0x9d, 0x00, 0x00, +0x01, 0xd7, 0x00, 0x00, 0x01, 0xd7, 0x00, 0x00, +0x00, 0xd8, 0x00, 0x00, 0x01, 0xd8, 0x00, 0x00, +0x01, 0xd8, 0x00, 0x00, 0x01, 0x9e, 0x00, 0x00, +0x01, 0xd9, 0x00, 0x00, 0x01, 0xd9, 0x00, 0x00, +0x00, 0xd9, 0x00, 0x00, 0x01, 0xda, 0x00, 0x00, +0x01, 0xda, 0x00, 0x00, 0x01, 0x9f, 0x00, 0x00, +0x01, 0xdb, 0x00, 0x00, 0x01, 0xdb, 0x00, 0x00, +0x00, 0xda, 0x00, 0x00, 0x01, 0xdc, 0x00, 0x00, +0x01, 0xdc, 0x00, 0x00, 0x01, 0xa0, 0x00, 0x00, +0x01, 0xe2, 0x00, 0x00, 0x01, 0xe2, 0x00, 0x00, +0x00, 0x50, 0x00, 0x00, 0x01, 0xe3, 0x00, 0x00, +0x01, 0xe3, 0x00, 0x00, 0x01, 0x12, 0x00, 0x00, +0x01, 0xe6, 0x00, 0x00, 0x01, 0xe6, 0x00, 0x00, +0x00, 0x73, 0x00, 0x00, 0x01, 0xe7, 0x00, 0x00, +0x01, 0xe7, 0x00, 0x00, 0x01, 0x35, 0x00, 0x00, +0x01, 0xea, 0x00, 0x00, 0x01, 0xea, 0x00, 0x00, +0x00, 0xb7, 0x00, 0x00, 0x01, 0xeb, 0x00, 0x00, +0x01, 0xeb, 0x00, 0x00, 0x01, 0x7c, 0x00, 0x00, +0x01, 0xf4, 0x00, 0x00, 0x01, 0xf4, 0x00, 0x00, +0x00, 0x6e, 0x00, 0x00, 0x01, 0xf5, 0x00, 0x00, +0x01, 0xf5, 0x00, 0x00, 0x01, 0x30, 0x00, 0x00, +0x01, 0xf8, 0x00, 0x00, 0x01, 0xf8, 0x00, 0x00, +0x00, 0x97, 0x00, 0x00, 0x01, 0xf9, 0x00, 0x00, +0x01, 0xf9, 0x00, 0x00, 0x01, 0x5b, 0x00, 0x00, +0x01, 0xfc, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, +0x00, 0x4f, 0x00, 0x00, 0x01, 0xfd, 0x00, 0x00, +0x01, 0xfd, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, +0x02, 0x18, 0x00, 0x00, 0x02, 0x18, 0x00, 0x00, +0x00, 0xc3, 0x00, 0x00, 0x02, 0x19, 0x00, 0x00, +0x02, 0x19, 0x00, 0x00, 0x01, 0x88, 0x00, 0x00, +0x02, 0x1a, 0x00, 0x00, 0x02, 0x1a, 0x00, 0x00, +0x00, 0xc9, 0x00, 0x00, 0x02, 0x1b, 0x00, 0x00, +0x02, 0x1b, 0x00, 0x00, 0x01, 0x8e, 0x00, 0x00, +0x02, 0x37, 0x00, 0x00, 0x02, 0x37, 0x00, 0x00, +0x01, 0xbe, 0x00, 0x00, 0x02, 0x43, 0x00, 0x00, +0x02, 0x43, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, +0x02, 0x50, 0x00, 0x00, 0x02, 0x50, 0x00, 0x00, +0x01, 0xc0, 0x00, 0x00, 0x02, 0x51, 0x00, 0x00, +0x02, 0x51, 0x00, 0x00, 0x01, 0xc8, 0x00, 0x00, +0x02, 0x52, 0x00, 0x00, 0x02, 0x58, 0x00, 0x00, +0x01, 0xc1, 0x00, 0x00, 0x02, 0x59, 0x00, 0x00, +0x02, 0x5c, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x02, 0x5e, 0x00, 0x00, 0x02, 0x67, 0x00, 0x00, +0x01, 0xce, 0x00, 0x00, 0x02, 0x68, 0x00, 0x00, +0x02, 0x68, 0x00, 0x00, 0x01, 0xd9, 0x00, 0x00, +0x02, 0x6a, 0x00, 0x00, 0x02, 0x6a, 0x00, 0x00, +0x01, 0xda, 0x00, 0x00, 0x02, 0x6c, 0x00, 0x00, +0x02, 0x6e, 0x00, 0x00, 0x01, 0xdc, 0x00, 0x00, +0x02, 0x6f, 0x00, 0x00, 0x02, 0x76, 0x00, 0x00, +0x01, 0xe0, 0x00, 0x00, 0x02, 0x78, 0x00, 0x00, +0x02, 0x7b, 0x00, 0x00, 0x01, 0xe8, 0x00, 0x00, +0x02, 0x7d, 0x00, 0x00, 0x02, 0x7e, 0x00, 0x00, +0x01, 0xec, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, +0x02, 0x84, 0x00, 0x00, 0x01, 0xee, 0x00, 0x00, +0x02, 0x88, 0x00, 0x00, 0x02, 0x92, 0x00, 0x00, +0x01, 0xf3, 0x00, 0x00, 0x02, 0x94, 0x00, 0x00, +0x02, 0x95, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, +0x02, 0x98, 0x00, 0x00, 0x02, 0x98, 0x00, 0x00, +0x02, 0x03, 0x00, 0x00, 0x02, 0x99, 0x00, 0x00, +0x02, 0x99, 0x00, 0x00, 0x01, 0xc9, 0x00, 0x00, +0x02, 0x9c, 0x00, 0x00, 0x02, 0x9c, 0x00, 0x00, +0x01, 0xd8, 0x00, 0x00, 0x02, 0x9d, 0x00, 0x00, +0x02, 0x9d, 0x00, 0x00, 0x01, 0xdb, 0x00, 0x00, +0x02, 0x9f, 0x00, 0x00, 0x02, 0x9f, 0x00, 0x00, +0x01, 0xdf, 0x00, 0x00, 0x02, 0xa1, 0x00, 0x00, +0x02, 0xa2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x02, 0xb0, 0x00, 0x00, 0x02, 0xb0, 0x00, 0x00, +0x06, 0x84, 0x00, 0x00, 0x02, 0xb2, 0x00, 0x00, +0x02, 0xb2, 0x00, 0x00, 0x06, 0x86, 0x00, 0x00, +0x02, 0xb3, 0x00, 0x00, 0x02, 0xb3, 0x00, 0x00, +0x06, 0x8e, 0x00, 0x00, 0x02, 0xb7, 0x00, 0x00, +0x02, 0xb7, 0x00, 0x00, 0x06, 0x93, 0x00, 0x00, +0x02, 0xb8, 0x00, 0x00, 0x02, 0xb8, 0x00, 0x00, +0x06, 0x95, 0x00, 0x00, 0x02, 0xb9, 0x00, 0x00, +0x02, 0xb9, 0x00, 0x00, 0x07, 0x09, 0x00, 0x00, +0x02, 0xbb, 0x00, 0x00, 0x02, 0xbc, 0x00, 0x00, +0x07, 0x0a, 0x00, 0x00, 0x02, 0xbe, 0x00, 0x00, +0x02, 0xbf, 0x00, 0x00, 0x07, 0x0c, 0x00, 0x00, +0x02, 0xc1, 0x00, 0x00, 0x02, 0xc1, 0x00, 0x00, +0x06, 0x97, 0x00, 0x00, 0x02, 0xc6, 0x00, 0x00, +0x02, 0xcc, 0x00, 0x00, 0x07, 0x10, 0x00, 0x00, +0x02, 0xd0, 0x00, 0x00, 0x02, 0xd1, 0x00, 0x00, +0x06, 0x98, 0x00, 0x00, 0x02, 0xd8, 0x00, 0x00, +0x02, 0xd8, 0x00, 0x00, 0x07, 0x1a, 0x00, 0x00, +0x02, 0xd9, 0x00, 0x00, 0x02, 0xd9, 0x00, 0x00, +0x07, 0x1d, 0x00, 0x00, 0x02, 0xda, 0x00, 0x00, +0x02, 0xda, 0x00, 0x00, 0x07, 0x1b, 0x00, 0x00, +0x02, 0xdb, 0x00, 0x00, 0x02, 0xdb, 0x00, 0x00, +0x07, 0x1f, 0x00, 0x00, 0x02, 0xdc, 0x00, 0x00, +0x02, 0xdc, 0x00, 0x00, 0x07, 0x17, 0x00, 0x00, +0x02, 0xdd, 0x00, 0x00, 0x02, 0xdd, 0x00, 0x00, +0x07, 0x1c, 0x00, 0x00, 0x02, 0xde, 0x00, 0x00, +0x02, 0xde, 0x00, 0x00, 0x06, 0x9a, 0x00, 0x00, +0x02, 0xe0, 0x00, 0x00, 0x02, 0xe0, 0x00, 0x00, +0x06, 0x9b, 0x00, 0x00, 0x02, 0xe1, 0x00, 0x00, +0x02, 0xe1, 0x00, 0x00, 0x06, 0x88, 0x00, 0x00, +0x02, 0xe2, 0x00, 0x00, 0x02, 0xe2, 0x00, 0x00, +0x06, 0x8f, 0x00, 0x00, 0x02, 0xe3, 0x00, 0x00, +0x02, 0xe3, 0x00, 0x00, 0x06, 0x94, 0x00, 0x00, +0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, +0x07, 0x21, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, +0x03, 0x01, 0x00, 0x00, 0x07, 0x24, 0x00, 0x00, +0x03, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, +0x07, 0x27, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, +0x03, 0x03, 0x00, 0x00, 0x07, 0x29, 0x00, 0x00, +0x03, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, +0x07, 0x2b, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, +0x03, 0x05, 0x00, 0x00, 0x07, 0x2d, 0x00, 0x00, +0x03, 0x06, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, +0x07, 0x2f, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, +0x03, 0x07, 0x00, 0x00, 0x07, 0x33, 0x00, 0x00, +0x03, 0x08, 0x00, 0x00, 0x03, 0x08, 0x00, 0x00, +0x07, 0x35, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, +0x03, 0x09, 0x00, 0x00, 0x07, 0x37, 0x00, 0x00, +0x03, 0x0a, 0x00, 0x00, 0x03, 0x0a, 0x00, 0x00, +0x07, 0x39, 0x00, 0x00, 0x03, 0x0b, 0x00, 0x00, +0x03, 0x0b, 0x00, 0x00, 0x07, 0x3b, 0x00, 0x00, +0x03, 0x0c, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, +0x07, 0x3d, 0x00, 0x00, 0x03, 0x0f, 0x00, 0x00, +0x03, 0x0f, 0x00, 0x00, 0x07, 0x40, 0x00, 0x00, +0x03, 0x11, 0x00, 0x00, 0x03, 0x11, 0x00, 0x00, +0x07, 0x42, 0x00, 0x00, 0x03, 0x12, 0x00, 0x00, +0x03, 0x12, 0x00, 0x00, 0x07, 0x44, 0x00, 0x00, +0x03, 0x13, 0x00, 0x00, 0x03, 0x13, 0x00, 0x00, +0x07, 0x46, 0x00, 0x00, 0x03, 0x18, 0x00, 0x00, +0x03, 0x20, 0x00, 0x00, 0x07, 0x48, 0x00, 0x00, +0x03, 0x23, 0x00, 0x00, 0x03, 0x26, 0x00, 0x00, +0x07, 0x51, 0x00, 0x00, 0x03, 0x27, 0x00, 0x00, +0x03, 0x27, 0x00, 0x00, 0x07, 0x56, 0x00, 0x00, +0x03, 0x28, 0x00, 0x00, 0x03, 0x28, 0x00, 0x00, +0x07, 0x58, 0x00, 0x00, 0x03, 0x29, 0x00, 0x00, +0x03, 0x2a, 0x00, 0x00, 0x07, 0x5a, 0x00, 0x00, +0x03, 0x2c, 0x00, 0x00, 0x03, 0x2c, 0x00, 0x00, +0x07, 0x5c, 0x00, 0x00, 0x03, 0x2e, 0x00, 0x00, +0x03, 0x31, 0x00, 0x00, 0x07, 0x5d, 0x00, 0x00, +0x03, 0x34, 0x00, 0x00, 0x03, 0x34, 0x00, 0x00, +0x07, 0x61, 0x00, 0x00, 0x03, 0x39, 0x00, 0x00, +0x03, 0x3d, 0x00, 0x00, 0x07, 0x62, 0x00, 0x00, +0x03, 0x42, 0x00, 0x00, 0x03, 0x42, 0x00, 0x00, +0x07, 0x67, 0x00, 0x00, 0x03, 0x45, 0x00, 0x00, +0x03, 0x45, 0x00, 0x00, 0x07, 0x69, 0x00, 0x00, +0x03, 0x61, 0x00, 0x00, 0x03, 0x61, 0x00, 0x00, +0x07, 0x6a, 0x00, 0x00, 0x03, 0x74, 0x00, 0x00, +0x03, 0x75, 0x00, 0x00, 0x03, 0x6a, 0x00, 0x00, +0x03, 0x7a, 0x00, 0x00, 0x03, 0x7a, 0x00, 0x00, +0x03, 0x6f, 0x00, 0x00, 0x03, 0x7e, 0x00, 0x00, +0x03, 0x7e, 0x00, 0x00, 0x03, 0x67, 0x00, 0x00, +0x03, 0x84, 0x00, 0x00, 0x03, 0x84, 0x00, 0x00, +0x03, 0x6c, 0x00, 0x00, 0x03, 0x85, 0x00, 0x00, +0x03, 0x85, 0x00, 0x00, 0x03, 0x6e, 0x00, 0x00, +0x03, 0x86, 0x00, 0x00, 0x03, 0x86, 0x00, 0x00, +0x02, 0x59, 0x00, 0x00, 0x03, 0x87, 0x00, 0x00, +0x03, 0x87, 0x00, 0x00, 0x03, 0x68, 0x00, 0x00, +0x03, 0x88, 0x00, 0x00, 0x03, 0x8a, 0x00, 0x00, +0x02, 0x5a, 0x00, 0x00, 0x03, 0x8c, 0x00, 0x00, +0x03, 0x8c, 0x00, 0x00, 0x02, 0x5e, 0x00, 0x00, +0x03, 0x8e, 0x00, 0x00, 0x03, 0x8e, 0x00, 0x00, +0x02, 0x5f, 0x00, 0x00, 0x03, 0x8f, 0x00, 0x00, +0x03, 0x8f, 0x00, 0x00, 0x02, 0x61, 0x00, 0x00, +0x03, 0x90, 0x00, 0x00, 0x03, 0x90, 0x00, 0x00, +0x02, 0x87, 0x00, 0x00, 0x03, 0x91, 0x00, 0x00, +0x03, 0xa1, 0x00, 0x00, 0x02, 0x41, 0x00, 0x00, +0x03, 0xa3, 0x00, 0x00, 0x03, 0xa9, 0x00, 0x00, +0x02, 0x52, 0x00, 0x00, 0x03, 0xaa, 0x00, 0x00, +0x03, 0xaa, 0x00, 0x00, 0x02, 0x5d, 0x00, 0x00, +0x03, 0xab, 0x00, 0x00, 0x03, 0xab, 0x00, 0x00, +0x02, 0x60, 0x00, 0x00, 0x03, 0xac, 0x00, 0x00, +0x03, 0xaf, 0x00, 0x00, 0x02, 0x7e, 0x00, 0x00, +0x03, 0xb0, 0x00, 0x00, 0x03, 0xb0, 0x00, 0x00, +0x02, 0x88, 0x00, 0x00, 0x03, 0xb1, 0x00, 0x00, +0x03, 0xc1, 0x00, 0x00, 0x02, 0x62, 0x00, 0x00, +0x03, 0xc2, 0x00, 0x00, 0x03, 0xc2, 0x00, 0x00, +0x02, 0x7a, 0x00, 0x00, 0x03, 0xc3, 0x00, 0x00, +0x03, 0xc9, 0x00, 0x00, 0x02, 0x73, 0x00, 0x00, +0x03, 0xca, 0x00, 0x00, 0x03, 0xca, 0x00, 0x00, +0x02, 0x82, 0x00, 0x00, 0x03, 0xcb, 0x00, 0x00, +0x03, 0xcb, 0x00, 0x00, 0x02, 0x85, 0x00, 0x00, +0x03, 0xcc, 0x00, 0x00, 0x03, 0xcd, 0x00, 0x00, +0x02, 0x83, 0x00, 0x00, 0x03, 0xce, 0x00, 0x00, +0x03, 0xce, 0x00, 0x00, 0x02, 0x86, 0x00, 0x00, +0x03, 0xd0, 0x00, 0x00, 0x03, 0xd1, 0x00, 0x00, +0x02, 0x7b, 0x00, 0x00, 0x03, 0xd5, 0x00, 0x00, +0x03, 0xd5, 0x00, 0x00, 0x02, 0x7d, 0x00, 0x00, +0x03, 0xd7, 0x00, 0x00, 0x03, 0xd7, 0x00, 0x00, +0x03, 0x62, 0x00, 0x00, 0x03, 0xd9, 0x00, 0x00, +0x03, 0xd9, 0x00, 0x00, 0x03, 0x63, 0x00, 0x00, +0x03, 0xdb, 0x00, 0x00, 0x03, 0xdb, 0x00, 0x00, +0x03, 0x64, 0x00, 0x00, 0x03, 0xdd, 0x00, 0x00, +0x03, 0xdd, 0x00, 0x00, 0x03, 0x65, 0x00, 0x00, +0x03, 0xe1, 0x00, 0x00, 0x03, 0xe1, 0x00, 0x00, +0x03, 0x66, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, +0x04, 0x07, 0x00, 0x00, 0x03, 0xae, 0x00, 0x00, +0x04, 0x08, 0x00, 0x00, 0x04, 0x0c, 0x00, 0x00, +0x03, 0xb7, 0x00, 0x00, 0x04, 0x0d, 0x00, 0x00, +0x04, 0x0f, 0x00, 0x00, 0x03, 0xbe, 0x00, 0x00, +0x04, 0x10, 0x00, 0x00, 0x04, 0x16, 0x00, 0x00, +0x03, 0x8a, 0x00, 0x00, 0x04, 0x17, 0x00, 0x00, +0x04, 0x1a, 0x00, 0x00, 0x03, 0x93, 0x00, 0x00, +0x04, 0x1b, 0x00, 0x00, 0x04, 0x2f, 0x00, 0x00, +0x03, 0x99, 0x00, 0x00, 0x04, 0x30, 0x00, 0x00, +0x04, 0x36, 0x00, 0x00, 0x03, 0xe4, 0x00, 0x00, +0x04, 0x37, 0x00, 0x00, 0x04, 0x3a, 0x00, 0x00, +0x03, 0xed, 0x00, 0x00, 0x04, 0x3b, 0x00, 0x00, +0x04, 0x57, 0x00, 0x00, 0x03, 0xf3, 0x00, 0x00, +0x04, 0x58, 0x00, 0x00, 0x04, 0x5c, 0x00, 0x00, +0x04, 0x11, 0x00, 0x00, 0x04, 0x5d, 0x00, 0x00, +0x04, 0x5f, 0x00, 0x00, 0x04, 0x18, 0x00, 0x00, +0x04, 0x62, 0x00, 0x00, 0x04, 0x62, 0x00, 0x00, +0x03, 0xc1, 0x00, 0x00, 0x04, 0x63, 0x00, 0x00, +0x04, 0x63, 0x00, 0x00, 0x04, 0x1b, 0x00, 0x00, +0x04, 0x72, 0x00, 0x00, 0x04, 0x72, 0x00, 0x00, +0x03, 0xc2, 0x00, 0x00, 0x04, 0x73, 0x00, 0x00, +0x04, 0x73, 0x00, 0x00, 0x04, 0x1c, 0x00, 0x00, +0x04, 0x74, 0x00, 0x00, 0x04, 0x74, 0x00, 0x00, +0x03, 0xc3, 0x00, 0x00, 0x04, 0x75, 0x00, 0x00, +0x04, 0x75, 0x00, 0x00, 0x04, 0x1d, 0x00, 0x00, +0x04, 0x90, 0x00, 0x00, 0x04, 0x90, 0x00, 0x00, +0x03, 0xc4, 0x00, 0x00, 0x04, 0x91, 0x00, 0x00, +0x04, 0x91, 0x00, 0x00, 0x04, 0x1e, 0x00, 0x00, +0x04, 0x92, 0x00, 0x00, 0x04, 0x92, 0x00, 0x00, +0x03, 0xc5, 0x00, 0x00, 0x04, 0x93, 0x00, 0x00, +0x04, 0x93, 0x00, 0x00, 0x04, 0x1f, 0x00, 0x00, +0x04, 0x96, 0x00, 0x00, 0x04, 0x96, 0x00, 0x00, +0x03, 0xc6, 0x00, 0x00, 0x04, 0x97, 0x00, 0x00, +0x04, 0x97, 0x00, 0x00, 0x04, 0x20, 0x00, 0x00, +0x04, 0x98, 0x00, 0x00, 0x04, 0x98, 0x00, 0x00, +0x03, 0xc9, 0x00, 0x00, 0x04, 0x99, 0x00, 0x00, +0x04, 0x99, 0x00, 0x00, 0x04, 0x23, 0x00, 0x00, +0x04, 0x9a, 0x00, 0x00, 0x04, 0x9a, 0x00, 0x00, +0x03, 0xca, 0x00, 0x00, 0x04, 0x9b, 0x00, 0x00, +0x04, 0x9b, 0x00, 0x00, 0x04, 0x24, 0x00, 0x00, +0x04, 0xa0, 0x00, 0x00, 0x04, 0xa0, 0x00, 0x00, +0x03, 0xcd, 0x00, 0x00, 0x04, 0xa1, 0x00, 0x00, +0x04, 0xa1, 0x00, 0x00, 0x04, 0x27, 0x00, 0x00, +0x04, 0xa2, 0x00, 0x00, 0x04, 0xa2, 0x00, 0x00, +0x03, 0xd0, 0x00, 0x00, 0x04, 0xa3, 0x00, 0x00, +0x04, 0xa3, 0x00, 0x00, 0x04, 0x2a, 0x00, 0x00, +0x04, 0xaa, 0x00, 0x00, 0x04, 0xaa, 0x00, 0x00, +0x03, 0xd1, 0x00, 0x00, 0x04, 0xab, 0x00, 0x00, +0x04, 0xab, 0x00, 0x00, 0x04, 0x2b, 0x00, 0x00, +0x04, 0xae, 0x00, 0x00, 0x04, 0xae, 0x00, 0x00, +0x03, 0xd2, 0x00, 0x00, 0x04, 0xaf, 0x00, 0x00, +0x04, 0xaf, 0x00, 0x00, 0x04, 0x2c, 0x00, 0x00, +0x04, 0xb0, 0x00, 0x00, 0x04, 0xb0, 0x00, 0x00, +0x03, 0xd3, 0x00, 0x00, 0x04, 0xb1, 0x00, 0x00, +0x04, 0xb1, 0x00, 0x00, 0x04, 0x2d, 0x00, 0x00, +0x04, 0xb2, 0x00, 0x00, 0x04, 0xb2, 0x00, 0x00, +0x03, 0xd4, 0x00, 0x00, 0x04, 0xb3, 0x00, 0x00, +0x04, 0xb3, 0x00, 0x00, 0x04, 0x2e, 0x00, 0x00, +0x04, 0xb6, 0x00, 0x00, 0x04, 0xb6, 0x00, 0x00, +0x03, 0xd5, 0x00, 0x00, 0x04, 0xb7, 0x00, 0x00, +0x04, 0xb7, 0x00, 0x00, 0x04, 0x2f, 0x00, 0x00, +0x04, 0xba, 0x00, 0x00, 0x04, 0xba, 0x00, 0x00, +0x03, 0xd6, 0x00, 0x00, 0x04, 0xbb, 0x00, 0x00, +0x04, 0xbb, 0x00, 0x00, 0x04, 0x30, 0x00, 0x00, +0x04, 0xc0, 0x00, 0x00, 0x04, 0xc1, 0x00, 0x00, +0x03, 0xd7, 0x00, 0x00, 0x04, 0xc2, 0x00, 0x00, +0x04, 0xc2, 0x00, 0x00, 0x04, 0x31, 0x00, 0x00, +0x04, 0xcf, 0x00, 0x00, 0x04, 0xcf, 0x00, 0x00, +0x04, 0x34, 0x00, 0x00, 0x04, 0xd0, 0x00, 0x00, +0x04, 0xd0, 0x00, 0x00, 0x03, 0xdb, 0x00, 0x00, +0x04, 0xd1, 0x00, 0x00, 0x04, 0xd1, 0x00, 0x00, +0x04, 0x35, 0x00, 0x00, 0x04, 0xd4, 0x00, 0x00, +0x04, 0xd4, 0x00, 0x00, 0x03, 0xdc, 0x00, 0x00, +0x04, 0xd5, 0x00, 0x00, 0x04, 0xd5, 0x00, 0x00, +0x04, 0x36, 0x00, 0x00, 0x04, 0xd6, 0x00, 0x00, +0x04, 0xd6, 0x00, 0x00, 0x03, 0xdd, 0x00, 0x00, +0x04, 0xd7, 0x00, 0x00, 0x04, 0xd7, 0x00, 0x00, +0x04, 0x37, 0x00, 0x00, 0x04, 0xd8, 0x00, 0x00, +0x04, 0xd8, 0x00, 0x00, 0x03, 0xde, 0x00, 0x00, +0x04, 0xd9, 0x00, 0x00, 0x04, 0xd9, 0x00, 0x00, +0x04, 0x38, 0x00, 0x00, 0x04, 0xe2, 0x00, 0x00, +0x04, 0xe2, 0x00, 0x00, 0x03, 0xdf, 0x00, 0x00, +0x04, 0xe3, 0x00, 0x00, 0x04, 0xe3, 0x00, 0x00, +0x04, 0x39, 0x00, 0x00, 0x04, 0xe6, 0x00, 0x00, +0x04, 0xe6, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, +0x04, 0xe7, 0x00, 0x00, 0x04, 0xe7, 0x00, 0x00, +0x04, 0x3a, 0x00, 0x00, 0x04, 0xe8, 0x00, 0x00, +0x04, 0xe8, 0x00, 0x00, 0x03, 0xe1, 0x00, 0x00, +0x04, 0xe9, 0x00, 0x00, 0x04, 0xe9, 0x00, 0x00, +0x04, 0x3b, 0x00, 0x00, 0x04, 0xee, 0x00, 0x00, +0x04, 0xee, 0x00, 0x00, 0x03, 0xe2, 0x00, 0x00, +0x04, 0xef, 0x00, 0x00, 0x04, 0xef, 0x00, 0x00, +0x04, 0x3c, 0x00, 0x00, 0x04, 0xf2, 0x00, 0x00, +0x04, 0xf2, 0x00, 0x00, 0x03, 0xe3, 0x00, 0x00, +0x04, 0xf3, 0x00, 0x00, 0x04, 0xf3, 0x00, 0x00, +0x04, 0x3d, 0x00, 0x00, 0x1d, 0x43, 0x00, 0x00, +0x1d, 0x43, 0x00, 0x00, 0x06, 0x7d, 0x00, 0x00, +0x1d, 0x47, 0x00, 0x00, 0x1d, 0x47, 0x00, 0x00, +0x06, 0x7e, 0x00, 0x00, 0x1d, 0x48, 0x00, 0x00, +0x1d, 0x49, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, +0x1d, 0x4d, 0x00, 0x00, 0x1d, 0x4d, 0x00, 0x00, +0x06, 0x83, 0x00, 0x00, 0x1d, 0x4f, 0x00, 0x00, +0x1d, 0x4f, 0x00, 0x00, 0x06, 0x87, 0x00, 0x00, +0x1d, 0x50, 0x00, 0x00, 0x1d, 0x50, 0x00, 0x00, +0x06, 0x89, 0x00, 0x00, 0x1d, 0x52, 0x00, 0x00, +0x1d, 0x52, 0x00, 0x00, 0x06, 0x8b, 0x00, 0x00, +0x1d, 0x56, 0x00, 0x00, 0x1d, 0x56, 0x00, 0x00, +0x06, 0x8c, 0x00, 0x00, 0x1d, 0x57, 0x00, 0x00, +0x1d, 0x58, 0x00, 0x00, 0x06, 0x90, 0x00, 0x00, +0x1d, 0x5b, 0x00, 0x00, 0x1d, 0x5b, 0x00, 0x00, +0x06, 0x92, 0x00, 0x00, 0x1d, 0x9c, 0x00, 0x00, +0x1d, 0x9c, 0x00, 0x00, 0x06, 0x7f, 0x00, 0x00, +0x1d, 0xa0, 0x00, 0x00, 0x1d, 0xa0, 0x00, 0x00, +0x06, 0x82, 0x00, 0x00, 0x1d, 0xbb, 0x00, 0x00, +0x1d, 0xbb, 0x00, 0x00, 0x06, 0x96, 0x00, 0x00, +0x1e, 0x06, 0x00, 0x00, 0x1e, 0x06, 0x00, 0x00, +0x00, 0x52, 0x00, 0x00, 0x1e, 0x07, 0x00, 0x00, +0x1e, 0x07, 0x00, 0x00, 0x01, 0x14, 0x00, 0x00, +0x1e, 0x0c, 0x00, 0x00, 0x1e, 0x0c, 0x00, 0x00, +0x00, 0x59, 0x00, 0x00, 0x1e, 0x0d, 0x00, 0x00, +0x1e, 0x0d, 0x00, 0x00, 0x01, 0x1b, 0x00, 0x00, +0x1e, 0x0e, 0x00, 0x00, 0x1e, 0x0e, 0x00, 0x00, +0x00, 0x5a, 0x00, 0x00, 0x1e, 0x0f, 0x00, 0x00, +0x1e, 0x0f, 0x00, 0x00, 0x01, 0x1c, 0x00, 0x00, +0x1e, 0x16, 0x00, 0x00, 0x1e, 0x16, 0x00, 0x00, +0x00, 0x6d, 0x00, 0x00, 0x1e, 0x17, 0x00, 0x00, +0x1e, 0x17, 0x00, 0x00, 0x01, 0x2f, 0x00, 0x00, +0x1e, 0x20, 0x00, 0x00, 0x1e, 0x20, 0x00, 0x00, +0x00, 0x74, 0x00, 0x00, 0x1e, 0x21, 0x00, 0x00, +0x1e, 0x21, 0x00, 0x00, 0x01, 0x36, 0x00, 0x00, +0x1e, 0x24, 0x00, 0x00, 0x1e, 0x24, 0x00, 0x00, +0x00, 0x78, 0x00, 0x00, 0x1e, 0x25, 0x00, 0x00, +0x1e, 0x25, 0x00, 0x00, 0x01, 0x39, 0x00, 0x00, +0x1e, 0x2a, 0x00, 0x00, 0x1e, 0x2a, 0x00, 0x00, +0x00, 0x79, 0x00, 0x00, 0x1e, 0x2b, 0x00, 0x00, +0x1e, 0x2b, 0x00, 0x00, 0x01, 0x3b, 0x00, 0x00, +0x1e, 0x32, 0x00, 0x00, 0x1e, 0x32, 0x00, 0x00, +0x00, 0x89, 0x00, 0x00, 0x1e, 0x33, 0x00, 0x00, +0x1e, 0x33, 0x00, 0x00, 0x01, 0x4c, 0x00, 0x00, +0x1e, 0x34, 0x00, 0x00, 0x1e, 0x34, 0x00, 0x00, +0x00, 0x8a, 0x00, 0x00, 0x1e, 0x35, 0x00, 0x00, +0x1e, 0x35, 0x00, 0x00, 0x01, 0x4d, 0x00, 0x00, +0x1e, 0x36, 0x00, 0x00, 0x1e, 0x36, 0x00, 0x00, +0x00, 0x8f, 0x00, 0x00, 0x1e, 0x37, 0x00, 0x00, +0x1e, 0x37, 0x00, 0x00, 0x01, 0x53, 0x00, 0x00, +0x1e, 0x38, 0x00, 0x00, 0x1e, 0x38, 0x00, 0x00, +0x00, 0x90, 0x00, 0x00, 0x1e, 0x39, 0x00, 0x00, +0x1e, 0x39, 0x00, 0x00, 0x01, 0x54, 0x00, 0x00, +0x1e, 0x3a, 0x00, 0x00, 0x1e, 0x3a, 0x00, 0x00, +0x00, 0x91, 0x00, 0x00, 0x1e, 0x3b, 0x00, 0x00, +0x1e, 0x3b, 0x00, 0x00, 0x01, 0x55, 0x00, 0x00, +0x1e, 0x3e, 0x00, 0x00, 0x1e, 0x3e, 0x00, 0x00, +0x00, 0x93, 0x00, 0x00, 0x1e, 0x3f, 0x00, 0x00, +0x1e, 0x3f, 0x00, 0x00, 0x01, 0x57, 0x00, 0x00, +0x1e, 0x40, 0x00, 0x00, 0x1e, 0x40, 0x00, 0x00, +0x00, 0x94, 0x00, 0x00, 0x1e, 0x41, 0x00, 0x00, +0x1e, 0x41, 0x00, 0x00, 0x01, 0x58, 0x00, 0x00, +0x1e, 0x42, 0x00, 0x00, 0x1e, 0x42, 0x00, 0x00, +0x00, 0x95, 0x00, 0x00, 0x1e, 0x43, 0x00, 0x00, +0x1e, 0x43, 0x00, 0x00, 0x01, 0x59, 0x00, 0x00, +0x1e, 0x44, 0x00, 0x00, 0x1e, 0x44, 0x00, 0x00, +0x00, 0x9b, 0x00, 0x00, 0x1e, 0x45, 0x00, 0x00, +0x1e, 0x45, 0x00, 0x00, 0x01, 0x5f, 0x00, 0x00, +0x1e, 0x46, 0x00, 0x00, 0x1e, 0x46, 0x00, 0x00, +0x00, 0x9c, 0x00, 0x00, 0x1e, 0x47, 0x00, 0x00, +0x1e, 0x47, 0x00, 0x00, 0x01, 0x60, 0x00, 0x00, +0x1e, 0x48, 0x00, 0x00, 0x1e, 0x48, 0x00, 0x00, +0x00, 0x9d, 0x00, 0x00, 0x1e, 0x49, 0x00, 0x00, +0x1e, 0x49, 0x00, 0x00, 0x01, 0x61, 0x00, 0x00, +0x1e, 0x52, 0x00, 0x00, 0x1e, 0x52, 0x00, 0x00, +0x00, 0xae, 0x00, 0x00, 0x1e, 0x53, 0x00, 0x00, +0x1e, 0x53, 0x00, 0x00, 0x01, 0x73, 0x00, 0x00, +0x1e, 0x58, 0x00, 0x00, 0x1e, 0x58, 0x00, 0x00, +0x00, 0xba, 0x00, 0x00, 0x1e, 0x59, 0x00, 0x00, +0x1e, 0x59, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, +0x1e, 0x5a, 0x00, 0x00, 0x1e, 0x5a, 0x00, 0x00, +0x00, 0xbc, 0x00, 0x00, 0x1e, 0x5b, 0x00, 0x00, +0x1e, 0x5b, 0x00, 0x00, 0x01, 0x81, 0x00, 0x00, +0x1e, 0x5c, 0x00, 0x00, 0x1e, 0x5c, 0x00, 0x00, +0x00, 0xbd, 0x00, 0x00, 0x1e, 0x5d, 0x00, 0x00, +0x1e, 0x5d, 0x00, 0x00, 0x01, 0x82, 0x00, 0x00, +0x1e, 0x5e, 0x00, 0x00, 0x1e, 0x5e, 0x00, 0x00, +0x00, 0xbe, 0x00, 0x00, 0x1e, 0x5f, 0x00, 0x00, +0x1e, 0x5f, 0x00, 0x00, 0x01, 0x83, 0x00, 0x00, +0x1e, 0x60, 0x00, 0x00, 0x1e, 0x60, 0x00, 0x00, +0x00, 0xc4, 0x00, 0x00, 0x1e, 0x61, 0x00, 0x00, +0x1e, 0x61, 0x00, 0x00, 0x01, 0x89, 0x00, 0x00, +0x1e, 0x62, 0x00, 0x00, 0x1e, 0x62, 0x00, 0x00, +0x00, 0xc5, 0x00, 0x00, 0x1e, 0x63, 0x00, 0x00, +0x1e, 0x63, 0x00, 0x00, 0x01, 0x8a, 0x00, 0x00, +0x1e, 0x6c, 0x00, 0x00, 0x1e, 0x6c, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x1e, 0x6d, 0x00, 0x00, +0x1e, 0x6d, 0x00, 0x00, 0x01, 0x8f, 0x00, 0x00, +0x1e, 0x6e, 0x00, 0x00, 0x1e, 0x6e, 0x00, 0x00, +0x00, 0xcb, 0x00, 0x00, 0x1e, 0x6f, 0x00, 0x00, +0x1e, 0x6f, 0x00, 0x00, 0x01, 0x90, 0x00, 0x00, +0x1e, 0x80, 0x00, 0x00, 0x1e, 0x80, 0x00, 0x00, +0x00, 0xe4, 0x00, 0x00, 0x1e, 0x81, 0x00, 0x00, +0x1e, 0x81, 0x00, 0x00, 0x01, 0xaa, 0x00, 0x00, +0x1e, 0x82, 0x00, 0x00, 0x1e, 0x82, 0x00, 0x00, +0x00, 0xe5, 0x00, 0x00, 0x1e, 0x83, 0x00, 0x00, +0x1e, 0x83, 0x00, 0x00, 0x01, 0xab, 0x00, 0x00, +0x1e, 0x84, 0x00, 0x00, 0x1e, 0x84, 0x00, 0x00, +0x00, 0xe7, 0x00, 0x00, 0x1e, 0x85, 0x00, 0x00, +0x1e, 0x85, 0x00, 0x00, 0x01, 0xad, 0x00, 0x00, +0x1e, 0x8e, 0x00, 0x00, 0x1e, 0x8e, 0x00, 0x00, +0x00, 0xec, 0x00, 0x00, 0x1e, 0x8f, 0x00, 0x00, +0x1e, 0x8f, 0x00, 0x00, 0x01, 0xb2, 0x00, 0x00, +0x1e, 0x92, 0x00, 0x00, 0x1e, 0x92, 0x00, 0x00, +0x00, 0xf3, 0x00, 0x00, 0x1e, 0x93, 0x00, 0x00, +0x1e, 0x93, 0x00, 0x00, 0x01, 0xb9, 0x00, 0x00, +0x1e, 0x94, 0x00, 0x00, 0x1e, 0x94, 0x00, 0x00, +0x00, 0xf4, 0x00, 0x00, 0x1e, 0x95, 0x00, 0x00, +0x1e, 0x95, 0x00, 0x00, 0x01, 0xba, 0x00, 0x00, +0x1e, 0x96, 0x00, 0x00, 0x1e, 0x96, 0x00, 0x00, +0x01, 0x3a, 0x00, 0x00, 0x1e, 0x97, 0x00, 0x00, +0x1e, 0x97, 0x00, 0x00, 0x01, 0x91, 0x00, 0x00, +0x1e, 0x9e, 0x00, 0x00, 0x1e, 0x9e, 0x00, 0x00, +0x00, 0xc6, 0x00, 0x00, 0x1e, 0xa0, 0x00, 0x00, +0x1e, 0xa0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, +0x1e, 0xa1, 0x00, 0x00, 0x1e, 0xa1, 0x00, 0x00, +0x01, 0x03, 0x00, 0x00, 0x1e, 0xa2, 0x00, 0x00, +0x1e, 0xa2, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, +0x1e, 0xa3, 0x00, 0x00, 0x1e, 0xa3, 0x00, 0x00, +0x01, 0x04, 0x00, 0x00, 0x1e, 0xa4, 0x00, 0x00, +0x1e, 0xa4, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, +0x1e, 0xa5, 0x00, 0x00, 0x1e, 0xa5, 0x00, 0x00, +0x01, 0x05, 0x00, 0x00, 0x1e, 0xa6, 0x00, 0x00, +0x1e, 0xa6, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, +0x1e, 0xa7, 0x00, 0x00, 0x1e, 0xa7, 0x00, 0x00, +0x01, 0x06, 0x00, 0x00, 0x1e, 0xa8, 0x00, 0x00, +0x1e, 0xa8, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, +0x1e, 0xa9, 0x00, 0x00, 0x1e, 0xa9, 0x00, 0x00, +0x01, 0x07, 0x00, 0x00, 0x1e, 0xaa, 0x00, 0x00, +0x1e, 0xaa, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, +0x1e, 0xab, 0x00, 0x00, 0x1e, 0xab, 0x00, 0x00, +0x01, 0x08, 0x00, 0x00, 0x1e, 0xac, 0x00, 0x00, +0x1e, 0xac, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, +0x1e, 0xad, 0x00, 0x00, 0x1e, 0xad, 0x00, 0x00, +0x01, 0x09, 0x00, 0x00, 0x1e, 0xae, 0x00, 0x00, +0x1e, 0xae, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, +0x1e, 0xaf, 0x00, 0x00, 0x1e, 0xaf, 0x00, 0x00, +0x01, 0x0a, 0x00, 0x00, 0x1e, 0xb0, 0x00, 0x00, +0x1e, 0xb0, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, +0x1e, 0xb1, 0x00, 0x00, 0x1e, 0xb1, 0x00, 0x00, +0x01, 0x0b, 0x00, 0x00, 0x1e, 0xb2, 0x00, 0x00, +0x1e, 0xb2, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, +0x1e, 0xb3, 0x00, 0x00, 0x1e, 0xb3, 0x00, 0x00, +0x01, 0x0c, 0x00, 0x00, 0x1e, 0xb4, 0x00, 0x00, +0x1e, 0xb4, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, +0x1e, 0xb5, 0x00, 0x00, 0x1e, 0xb5, 0x00, 0x00, +0x01, 0x0d, 0x00, 0x00, 0x1e, 0xb6, 0x00, 0x00, +0x1e, 0xb6, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, +0x1e, 0xb7, 0x00, 0x00, 0x1e, 0xb7, 0x00, 0x00, +0x01, 0x0e, 0x00, 0x00, 0x1e, 0xb8, 0x00, 0x00, +0x1e, 0xb8, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, +0x1e, 0xb9, 0x00, 0x00, 0x1e, 0xb9, 0x00, 0x00, +0x01, 0x26, 0x00, 0x00, 0x1e, 0xba, 0x00, 0x00, +0x1e, 0xba, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, +0x1e, 0xbb, 0x00, 0x00, 0x1e, 0xbb, 0x00, 0x00, +0x01, 0x27, 0x00, 0x00, 0x1e, 0xbc, 0x00, 0x00, +0x1e, 0xbc, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, +0x1e, 0xbd, 0x00, 0x00, 0x1e, 0xbd, 0x00, 0x00, +0x01, 0x28, 0x00, 0x00, 0x1e, 0xbe, 0x00, 0x00, +0x1e, 0xbe, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, +0x1e, 0xbf, 0x00, 0x00, 0x1e, 0xbf, 0x00, 0x00, +0x01, 0x29, 0x00, 0x00, 0x1e, 0xc0, 0x00, 0x00, +0x1e, 0xc0, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, +0x1e, 0xc1, 0x00, 0x00, 0x1e, 0xc1, 0x00, 0x00, +0x01, 0x2a, 0x00, 0x00, 0x1e, 0xc2, 0x00, 0x00, +0x1e, 0xc2, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, +0x1e, 0xc3, 0x00, 0x00, 0x1e, 0xc3, 0x00, 0x00, +0x01, 0x2b, 0x00, 0x00, 0x1e, 0xc4, 0x00, 0x00, +0x1e, 0xc4, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, +0x1e, 0xc5, 0x00, 0x00, 0x1e, 0xc5, 0x00, 0x00, +0x01, 0x2c, 0x00, 0x00, 0x1e, 0xc6, 0x00, 0x00, +0x1e, 0xc6, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, +0x1e, 0xc7, 0x00, 0x00, 0x1e, 0xc7, 0x00, 0x00, +0x01, 0x2d, 0x00, 0x00, 0x1e, 0xc8, 0x00, 0x00, +0x1e, 0xc8, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, +0x1e, 0xc9, 0x00, 0x00, 0x1e, 0xc9, 0x00, 0x00, +0x01, 0x44, 0x00, 0x00, 0x1e, 0xca, 0x00, 0x00, +0x1e, 0xca, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, +0x1e, 0xcb, 0x00, 0x00, 0x1e, 0xcb, 0x00, 0x00, +0x01, 0x45, 0x00, 0x00, 0x1e, 0xcc, 0x00, 0x00, +0x1e, 0xcc, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, +0x1e, 0xcd, 0x00, 0x00, 0x1e, 0xcd, 0x00, 0x00, +0x01, 0x6b, 0x00, 0x00, 0x1e, 0xce, 0x00, 0x00, +0x1e, 0xce, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, +0x1e, 0xcf, 0x00, 0x00, 0x1e, 0xcf, 0x00, 0x00, +0x01, 0x6c, 0x00, 0x00, 0x1e, 0xd0, 0x00, 0x00, +0x1e, 0xd0, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, +0x1e, 0xd1, 0x00, 0x00, 0x1e, 0xd1, 0x00, 0x00, +0x01, 0x6d, 0x00, 0x00, 0x1e, 0xd2, 0x00, 0x00, +0x1e, 0xd2, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, +0x1e, 0xd3, 0x00, 0x00, 0x1e, 0xd3, 0x00, 0x00, +0x01, 0x6e, 0x00, 0x00, 0x1e, 0xd4, 0x00, 0x00, +0x1e, 0xd4, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, +0x1e, 0xd5, 0x00, 0x00, 0x1e, 0xd5, 0x00, 0x00, +0x01, 0x6f, 0x00, 0x00, 0x1e, 0xd6, 0x00, 0x00, +0x1e, 0xd6, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, +0x1e, 0xd7, 0x00, 0x00, 0x1e, 0xd7, 0x00, 0x00, +0x01, 0x70, 0x00, 0x00, 0x1e, 0xd8, 0x00, 0x00, +0x1e, 0xd8, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, +0x1e, 0xd9, 0x00, 0x00, 0x1e, 0xd9, 0x00, 0x00, +0x01, 0x71, 0x00, 0x00, 0x1e, 0xda, 0x00, 0x00, +0x1e, 0xda, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, +0x1e, 0xdb, 0x00, 0x00, 0x1e, 0xdb, 0x00, 0x00, +0x01, 0x77, 0x00, 0x00, 0x1e, 0xdc, 0x00, 0x00, +0x1e, 0xdc, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, +0x1e, 0xdd, 0x00, 0x00, 0x1e, 0xdd, 0x00, 0x00, +0x01, 0x78, 0x00, 0x00, 0x1e, 0xde, 0x00, 0x00, +0x1e, 0xde, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, +0x1e, 0xdf, 0x00, 0x00, 0x1e, 0xdf, 0x00, 0x00, +0x01, 0x79, 0x00, 0x00, 0x1e, 0xe0, 0x00, 0x00, +0x1e, 0xe0, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, +0x1e, 0xe1, 0x00, 0x00, 0x1e, 0xe1, 0x00, 0x00, +0x01, 0x7a, 0x00, 0x00, 0x1e, 0xe2, 0x00, 0x00, +0x1e, 0xe2, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, +0x1e, 0xe3, 0x00, 0x00, 0x1e, 0xe3, 0x00, 0x00, +0x01, 0x7b, 0x00, 0x00, 0x1e, 0xe4, 0x00, 0x00, +0x1e, 0xe4, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, +0x1e, 0xe5, 0x00, 0x00, 0x1e, 0xe5, 0x00, 0x00, +0x01, 0xa1, 0x00, 0x00, 0x1e, 0xe6, 0x00, 0x00, +0x1e, 0xe6, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, +0x1e, 0xe7, 0x00, 0x00, 0x1e, 0xe7, 0x00, 0x00, +0x01, 0xa2, 0x00, 0x00, 0x1e, 0xe8, 0x00, 0x00, +0x1e, 0xe8, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, +0x1e, 0xe9, 0x00, 0x00, 0x1e, 0xe9, 0x00, 0x00, +0x01, 0xa5, 0x00, 0x00, 0x1e, 0xea, 0x00, 0x00, +0x1e, 0xea, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, +0x1e, 0xeb, 0x00, 0x00, 0x1e, 0xeb, 0x00, 0x00, +0x01, 0xa6, 0x00, 0x00, 0x1e, 0xec, 0x00, 0x00, +0x1e, 0xec, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, +0x1e, 0xed, 0x00, 0x00, 0x1e, 0xed, 0x00, 0x00, +0x01, 0xa7, 0x00, 0x00, 0x1e, 0xee, 0x00, 0x00, +0x1e, 0xee, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, +0x1e, 0xef, 0x00, 0x00, 0x1e, 0xef, 0x00, 0x00, +0x01, 0xa8, 0x00, 0x00, 0x1e, 0xf0, 0x00, 0x00, +0x1e, 0xf0, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, +0x1e, 0xf1, 0x00, 0x00, 0x1e, 0xf1, 0x00, 0x00, +0x01, 0xa9, 0x00, 0x00, 0x1e, 0xf2, 0x00, 0x00, +0x1e, 0xf2, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, +0x1e, 0xf3, 0x00, 0x00, 0x1e, 0xf3, 0x00, 0x00, +0x01, 0xae, 0x00, 0x00, 0x1e, 0xf4, 0x00, 0x00, +0x1e, 0xf4, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, +0x1e, 0xf5, 0x00, 0x00, 0x1e, 0xf5, 0x00, 0x00, +0x01, 0xb3, 0x00, 0x00, 0x1e, 0xf6, 0x00, 0x00, +0x1e, 0xf6, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, +0x1e, 0xf7, 0x00, 0x00, 0x1e, 0xf7, 0x00, 0x00, +0x01, 0xb4, 0x00, 0x00, 0x1e, 0xf8, 0x00, 0x00, +0x1e, 0xf8, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, +0x1e, 0xf9, 0x00, 0x00, 0x1e, 0xf9, 0x00, 0x00, +0x01, 0xb5, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, +0x1f, 0x01, 0x00, 0x00, 0x02, 0xe9, 0x00, 0x00, +0x1f, 0x02, 0x00, 0x00, 0x1f, 0x07, 0x00, 0x00, +0x02, 0xed, 0x00, 0x00, 0x1f, 0x08, 0x00, 0x00, +0x1f, 0x09, 0x00, 0x00, 0x02, 0x89, 0x00, 0x00, +0x1f, 0x0a, 0x00, 0x00, 0x1f, 0x0f, 0x00, 0x00, +0x02, 0x8d, 0x00, 0x00, 0x1f, 0x10, 0x00, 0x00, +0x1f, 0x11, 0x00, 0x00, 0x02, 0xf6, 0x00, 0x00, +0x1f, 0x12, 0x00, 0x00, 0x1f, 0x15, 0x00, 0x00, +0x02, 0xfa, 0x00, 0x00, 0x1f, 0x18, 0x00, 0x00, +0x1f, 0x19, 0x00, 0x00, 0x02, 0x95, 0x00, 0x00, +0x1f, 0x1a, 0x00, 0x00, 0x1f, 0x1d, 0x00, 0x00, +0x02, 0x99, 0x00, 0x00, 0x1f, 0x20, 0x00, 0x00, +0x1f, 0x21, 0x00, 0x00, 0x02, 0xfe, 0x00, 0x00, +0x1f, 0x22, 0x00, 0x00, 0x1f, 0x27, 0x00, 0x00, +0x03, 0x02, 0x00, 0x00, 0x1f, 0x28, 0x00, 0x00, +0x1f, 0x29, 0x00, 0x00, 0x02, 0x9d, 0x00, 0x00, +0x1f, 0x2a, 0x00, 0x00, 0x1f, 0x2f, 0x00, 0x00, +0x02, 0xa1, 0x00, 0x00, 0x1f, 0x30, 0x00, 0x00, +0x1f, 0x31, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, +0x1f, 0x32, 0x00, 0x00, 0x1f, 0x37, 0x00, 0x00, +0x03, 0x0d, 0x00, 0x00, 0x1f, 0x38, 0x00, 0x00, +0x1f, 0x39, 0x00, 0x00, 0x02, 0xa7, 0x00, 0x00, +0x1f, 0x3a, 0x00, 0x00, 0x1f, 0x3f, 0x00, 0x00, +0x02, 0xab, 0x00, 0x00, 0x1f, 0x40, 0x00, 0x00, +0x1f, 0x41, 0x00, 0x00, 0x03, 0x19, 0x00, 0x00, +0x1f, 0x42, 0x00, 0x00, 0x1f, 0x45, 0x00, 0x00, +0x03, 0x1d, 0x00, 0x00, 0x1f, 0x48, 0x00, 0x00, +0x1f, 0x49, 0x00, 0x00, 0x02, 0xb3, 0x00, 0x00, +0x1f, 0x4a, 0x00, 0x00, 0x1f, 0x4d, 0x00, 0x00, +0x02, 0xb7, 0x00, 0x00, 0x1f, 0x50, 0x00, 0x00, +0x1f, 0x51, 0x00, 0x00, 0x03, 0x23, 0x00, 0x00, +0x1f, 0x52, 0x00, 0x00, 0x1f, 0x57, 0x00, 0x00, +0x03, 0x27, 0x00, 0x00, 0x1f, 0x59, 0x00, 0x00, +0x1f, 0x59, 0x00, 0x00, 0x02, 0xbc, 0x00, 0x00, +0x1f, 0x5b, 0x00, 0x00, 0x1f, 0x5b, 0x00, 0x00, +0x02, 0xbf, 0x00, 0x00, 0x1f, 0x5d, 0x00, 0x00, +0x1f, 0x5d, 0x00, 0x00, 0x02, 0xc0, 0x00, 0x00, +0x1f, 0x5f, 0x00, 0x00, 0x1f, 0x5f, 0x00, 0x00, +0x02, 0xc1, 0x00, 0x00, 0x1f, 0x60, 0x00, 0x00, +0x1f, 0x61, 0x00, 0x00, 0x03, 0x33, 0x00, 0x00, +0x1f, 0x62, 0x00, 0x00, 0x1f, 0x67, 0x00, 0x00, +0x03, 0x37, 0x00, 0x00, 0x1f, 0x68, 0x00, 0x00, +0x1f, 0x69, 0x00, 0x00, 0x02, 0xc4, 0x00, 0x00, +0x1f, 0x6a, 0x00, 0x00, 0x1f, 0x6f, 0x00, 0x00, +0x02, 0xc8, 0x00, 0x00, 0x1f, 0x70, 0x00, 0x00, +0x1f, 0x71, 0x00, 0x00, 0x02, 0xeb, 0x00, 0x00, +0x1f, 0x72, 0x00, 0x00, 0x1f, 0x73, 0x00, 0x00, +0x02, 0xf8, 0x00, 0x00, 0x1f, 0x74, 0x00, 0x00, +0x1f, 0x75, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, +0x1f, 0x76, 0x00, 0x00, 0x1f, 0x77, 0x00, 0x00, +0x03, 0x0b, 0x00, 0x00, 0x1f, 0x78, 0x00, 0x00, +0x1f, 0x79, 0x00, 0x00, 0x03, 0x1b, 0x00, 0x00, +0x1f, 0x7a, 0x00, 0x00, 0x1f, 0x7b, 0x00, 0x00, +0x03, 0x25, 0x00, 0x00, 0x1f, 0x7c, 0x00, 0x00, +0x1f, 0x7d, 0x00, 0x00, 0x03, 0x35, 0x00, 0x00, +0x1f, 0x80, 0x00, 0x00, 0x1f, 0x81, 0x00, 0x00, +0x03, 0x3f, 0x00, 0x00, 0x1f, 0x82, 0x00, 0x00, +0x1f, 0x87, 0x00, 0x00, 0x03, 0x43, 0x00, 0x00, +0x1f, 0x88, 0x00, 0x00, 0x1f, 0x8f, 0x00, 0x00, +0x02, 0xcf, 0x00, 0x00, 0x1f, 0x90, 0x00, 0x00, +0x1f, 0x91, 0x00, 0x00, 0x03, 0x4b, 0x00, 0x00, +0x1f, 0x92, 0x00, 0x00, 0x1f, 0x97, 0x00, 0x00, +0x03, 0x4f, 0x00, 0x00, 0x1f, 0x98, 0x00, 0x00, +0x1f, 0x9f, 0x00, 0x00, 0x02, 0xd8, 0x00, 0x00, +0x1f, 0xa0, 0x00, 0x00, 0x1f, 0xa1, 0x00, 0x00, +0x03, 0x57, 0x00, 0x00, 0x1f, 0xa2, 0x00, 0x00, +0x1f, 0xa7, 0x00, 0x00, 0x03, 0x5b, 0x00, 0x00, +0x1f, 0xa8, 0x00, 0x00, 0x1f, 0xaf, 0x00, 0x00, +0x02, 0xe1, 0x00, 0x00, 0x1f, 0xb0, 0x00, 0x00, +0x1f, 0xb1, 0x00, 0x00, 0x02, 0xf3, 0x00, 0x00, +0x1f, 0xb2, 0x00, 0x00, 0x1f, 0xb2, 0x00, 0x00, +0x03, 0x41, 0x00, 0x00, 0x1f, 0xb3, 0x00, 0x00, +0x1f, 0xb3, 0x00, 0x00, 0x03, 0x3e, 0x00, 0x00, +0x1f, 0xb4, 0x00, 0x00, 0x1f, 0xb4, 0x00, 0x00, +0x03, 0x42, 0x00, 0x00, 0x1f, 0xb6, 0x00, 0x00, +0x1f, 0xb6, 0x00, 0x00, 0x02, 0xf5, 0x00, 0x00, +0x1f, 0xb7, 0x00, 0x00, 0x1f, 0xb7, 0x00, 0x00, +0x03, 0x49, 0x00, 0x00, 0x1f, 0xb8, 0x00, 0x00, +0x1f, 0xb9, 0x00, 0x00, 0x02, 0x93, 0x00, 0x00, +0x1f, 0xba, 0x00, 0x00, 0x1f, 0xbb, 0x00, 0x00, +0x02, 0x8b, 0x00, 0x00, 0x1f, 0xbc, 0x00, 0x00, +0x1f, 0xbc, 0x00, 0x00, 0x02, 0xce, 0x00, 0x00, +0x1f, 0xbd, 0x00, 0x00, 0x1f, 0xbd, 0x00, 0x00, +0x03, 0x71, 0x00, 0x00, 0x1f, 0xbe, 0x00, 0x00, +0x1f, 0xbe, 0x00, 0x00, 0x03, 0x70, 0x00, 0x00, +0x1f, 0xbf, 0x00, 0x00, 0x1f, 0xbf, 0x00, 0x00, +0x03, 0x72, 0x00, 0x00, 0x1f, 0xc0, 0x00, 0x00, +0x1f, 0xc0, 0x00, 0x00, 0x03, 0x7c, 0x00, 0x00, +0x1f, 0xc1, 0x00, 0x00, 0x1f, 0xc1, 0x00, 0x00, +0x03, 0x7f, 0x00, 0x00, 0x1f, 0xc2, 0x00, 0x00, +0x1f, 0xc2, 0x00, 0x00, 0x03, 0x4d, 0x00, 0x00, +0x1f, 0xc3, 0x00, 0x00, 0x1f, 0xc3, 0x00, 0x00, +0x03, 0x4a, 0x00, 0x00, 0x1f, 0xc4, 0x00, 0x00, +0x1f, 0xc4, 0x00, 0x00, 0x03, 0x4e, 0x00, 0x00, +0x1f, 0xc6, 0x00, 0x00, 0x1f, 0xc6, 0x00, 0x00, +0x03, 0x08, 0x00, 0x00, 0x1f, 0xc7, 0x00, 0x00, +0x1f, 0xc7, 0x00, 0x00, 0x03, 0x55, 0x00, 0x00, +0x1f, 0xc8, 0x00, 0x00, 0x1f, 0xc9, 0x00, 0x00, +0x02, 0x97, 0x00, 0x00, 0x1f, 0xca, 0x00, 0x00, +0x1f, 0xcb, 0x00, 0x00, 0x02, 0x9f, 0x00, 0x00, +0x1f, 0xcc, 0x00, 0x00, 0x1f, 0xcc, 0x00, 0x00, +0x02, 0xd7, 0x00, 0x00, 0x1f, 0xcd, 0x00, 0x00, +0x1f, 0xcd, 0x00, 0x00, 0x03, 0x76, 0x00, 0x00, +0x1f, 0xce, 0x00, 0x00, 0x1f, 0xce, 0x00, 0x00, +0x03, 0x78, 0x00, 0x00, 0x1f, 0xcf, 0x00, 0x00, +0x1f, 0xcf, 0x00, 0x00, 0x03, 0x7a, 0x00, 0x00, +0x1f, 0xd0, 0x00, 0x00, 0x1f, 0xd1, 0x00, 0x00, +0x03, 0x13, 0x00, 0x00, 0x1f, 0xd2, 0x00, 0x00, +0x1f, 0xd3, 0x00, 0x00, 0x03, 0x16, 0x00, 0x00, +0x1f, 0xd6, 0x00, 0x00, 0x1f, 0xd6, 0x00, 0x00, +0x03, 0x15, 0x00, 0x00, 0x1f, 0xd7, 0x00, 0x00, +0x1f, 0xd7, 0x00, 0x00, 0x03, 0x18, 0x00, 0x00, +0x1f, 0xd8, 0x00, 0x00, 0x1f, 0xd9, 0x00, 0x00, +0x02, 0xb1, 0x00, 0x00, 0x1f, 0xda, 0x00, 0x00, +0x1f, 0xdb, 0x00, 0x00, 0x02, 0xa9, 0x00, 0x00, +0x1f, 0xdd, 0x00, 0x00, 0x1f, 0xdd, 0x00, 0x00, +0x03, 0x77, 0x00, 0x00, 0x1f, 0xde, 0x00, 0x00, +0x1f, 0xde, 0x00, 0x00, 0x03, 0x79, 0x00, 0x00, +0x1f, 0xdf, 0x00, 0x00, 0x1f, 0xdf, 0x00, 0x00, +0x03, 0x7b, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, +0x1f, 0xe3, 0x00, 0x00, 0x03, 0x2e, 0x00, 0x00, +0x1f, 0xe4, 0x00, 0x00, 0x1f, 0xe5, 0x00, 0x00, +0x03, 0x21, 0x00, 0x00, 0x1f, 0xe6, 0x00, 0x00, +0x1f, 0xe6, 0x00, 0x00, 0x03, 0x2d, 0x00, 0x00, +0x1f, 0xe7, 0x00, 0x00, 0x1f, 0xe7, 0x00, 0x00, +0x03, 0x32, 0x00, 0x00, 0x1f, 0xe8, 0x00, 0x00, +0x1f, 0xe9, 0x00, 0x00, 0x02, 0xc2, 0x00, 0x00, +0x1f, 0xea, 0x00, 0x00, 0x1f, 0xeb, 0x00, 0x00, +0x02, 0xbd, 0x00, 0x00, 0x1f, 0xec, 0x00, 0x00, +0x1f, 0xec, 0x00, 0x00, 0x02, 0xbb, 0x00, 0x00, +0x1f, 0xed, 0x00, 0x00, 0x1f, 0xee, 0x00, 0x00, +0x03, 0x7d, 0x00, 0x00, 0x1f, 0xef, 0x00, 0x00, +0x1f, 0xef, 0x00, 0x00, 0x03, 0x74, 0x00, 0x00, +0x1f, 0xf2, 0x00, 0x00, 0x1f, 0xf2, 0x00, 0x00, +0x03, 0x59, 0x00, 0x00, 0x1f, 0xf3, 0x00, 0x00, +0x1f, 0xf3, 0x00, 0x00, 0x03, 0x56, 0x00, 0x00, +0x1f, 0xf4, 0x00, 0x00, 0x1f, 0xf4, 0x00, 0x00, +0x03, 0x5a, 0x00, 0x00, 0x1f, 0xf6, 0x00, 0x00, +0x1f, 0xf6, 0x00, 0x00, 0x03, 0x3d, 0x00, 0x00, +0x1f, 0xf7, 0x00, 0x00, 0x1f, 0xf7, 0x00, 0x00, +0x03, 0x61, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, +0x1f, 0xf9, 0x00, 0x00, 0x02, 0xb5, 0x00, 0x00, +0x1f, 0xfa, 0x00, 0x00, 0x1f, 0xfb, 0x00, 0x00, +0x02, 0xc6, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, +0x1f, 0xfc, 0x00, 0x00, 0x02, 0xe0, 0x00, 0x00, +0x1f, 0xfd, 0x00, 0x00, 0x1f, 0xfd, 0x00, 0x00, +0x03, 0x75, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, +0x1f, 0xfe, 0x00, 0x00, 0x03, 0x73, 0x00, 0x00, +0x20, 0x07, 0x00, 0x00, 0x20, 0x07, 0x00, 0x00, +0x07, 0x91, 0x00, 0x00, 0x20, 0x12, 0x00, 0x00, +0x20, 0x12, 0x00, 0x00, 0x04, 0x92, 0x00, 0x00, +0x20, 0x13, 0x00, 0x00, 0x20, 0x14, 0x00, 0x00, +0x04, 0x8e, 0x00, 0x00, 0x20, 0x15, 0x00, 0x00, +0x20, 0x15, 0x00, 0x00, 0x04, 0x93, 0x00, 0x00, +0x20, 0x16, 0x00, 0x00, 0x20, 0x16, 0x00, 0x00, +0x04, 0xa8, 0x00, 0x00, 0x20, 0x18, 0x00, 0x00, +0x20, 0x19, 0x00, 0x00, 0x04, 0x82, 0x00, 0x00, +0x20, 0x1a, 0x00, 0x00, 0x20, 0x1a, 0x00, 0x00, +0x04, 0x86, 0x00, 0x00, 0x20, 0x1c, 0x00, 0x00, +0x20, 0x1d, 0x00, 0x00, 0x04, 0x84, 0x00, 0x00, +0x20, 0x1e, 0x00, 0x00, 0x20, 0x1e, 0x00, 0x00, +0x04, 0x87, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, +0x20, 0x21, 0x00, 0x00, 0x04, 0xa4, 0x00, 0x00, +0x20, 0x22, 0x00, 0x00, 0x20, 0x22, 0x00, 0x00, +0x04, 0x95, 0x00, 0x00, 0x20, 0x26, 0x00, 0x00, +0x20, 0x26, 0x00, 0x00, 0x04, 0x7b, 0x00, 0x00, +0x20, 0x2f, 0x00, 0x00, 0x20, 0x2f, 0x00, 0x00, +0x07, 0x94, 0x00, 0x00, 0x20, 0x30, 0x00, 0x00, +0x20, 0x30, 0x00, 0x00, 0x06, 0xc2, 0x00, 0x00, +0x20, 0x32, 0x00, 0x00, 0x20, 0x33, 0x00, 0x00, +0x07, 0x06, 0x00, 0x00, 0x20, 0x35, 0x00, 0x00, +0x20, 0x35, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, +0x20, 0x39, 0x00, 0x00, 0x20, 0x3a, 0x00, 0x00, +0x04, 0x88, 0x00, 0x00, 0x20, 0x3c, 0x00, 0x00, +0x20, 0x3c, 0x00, 0x00, 0x04, 0xa9, 0x00, 0x00, +0x20, 0x3d, 0x00, 0x00, 0x20, 0x3d, 0x00, 0x00, +0x04, 0xad, 0x00, 0x00, 0x20, 0x3e, 0x00, 0x00, +0x20, 0x3f, 0x00, 0x00, 0x04, 0x97, 0x00, 0x00, +0x20, 0x44, 0x00, 0x00, 0x20, 0x44, 0x00, 0x00, +0x06, 0xbe, 0x00, 0x00, 0x20, 0x47, 0x00, 0x00, +0x20, 0x47, 0x00, 0x00, 0x04, 0xaa, 0x00, 0x00, +0x20, 0x48, 0x00, 0x00, 0x20, 0x48, 0x00, 0x00, +0x04, 0xac, 0x00, 0x00, 0x20, 0x49, 0x00, 0x00, +0x20, 0x49, 0x00, 0x00, 0x04, 0xab, 0x00, 0x00, +0x20, 0x70, 0x00, 0x00, 0x20, 0x70, 0x00, 0x00, +0x06, 0x28, 0x00, 0x00, 0x20, 0x71, 0x00, 0x00, +0x20, 0x71, 0x00, 0x00, 0x06, 0x85, 0x00, 0x00, +0x20, 0x74, 0x00, 0x00, 0x20, 0x79, 0x00, 0x00, +0x06, 0x2c, 0x00, 0x00, 0x20, 0x7d, 0x00, 0x00, +0x20, 0x7e, 0x00, 0x00, 0x06, 0x32, 0x00, 0x00, +0x20, 0x7f, 0x00, 0x00, 0x20, 0x7f, 0x00, 0x00, +0x06, 0x8a, 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, +0x20, 0x89, 0x00, 0x00, 0x06, 0x36, 0x00, 0x00, +0x20, 0x8d, 0x00, 0x00, 0x20, 0x8e, 0x00, 0x00, +0x06, 0x40, 0x00, 0x00, 0x20, 0x94, 0x00, 0x00, +0x20, 0x94, 0x00, 0x00, 0x06, 0x9e, 0x00, 0x00, +0x20, 0xa1, 0x00, 0x00, 0x20, 0xa1, 0x00, 0x00, +0x06, 0xaf, 0x00, 0x00, 0x20, 0xa4, 0x00, 0x00, +0x20, 0xa4, 0x00, 0x00, 0x06, 0xb0, 0x00, 0x00, +0x20, 0xa6, 0x00, 0x00, 0x20, 0xa7, 0x00, 0x00, +0x06, 0xb1, 0x00, 0x00, 0x20, 0xa9, 0x00, 0x00, +0x20, 0xa9, 0x00, 0x00, 0x06, 0xb3, 0x00, 0x00, +0x20, 0xab, 0x00, 0x00, 0x20, 0xab, 0x00, 0x00, +0x06, 0xb4, 0x00, 0x00, 0x20, 0xac, 0x00, 0x00, +0x20, 0xac, 0x00, 0x00, 0x06, 0xac, 0x00, 0x00, +0x20, 0xae, 0x00, 0x00, 0x20, 0xae, 0x00, 0x00, +0x06, 0xbb, 0x00, 0x00, 0x20, 0xb1, 0x00, 0x00, +0x20, 0xb2, 0x00, 0x00, 0x06, 0xb5, 0x00, 0x00, +0x20, 0xb4, 0x00, 0x00, 0x20, 0xb5, 0x00, 0x00, +0x06, 0xb7, 0x00, 0x00, 0x20, 0xb8, 0x00, 0x00, +0x20, 0xb8, 0x00, 0x00, 0x06, 0xbc, 0x00, 0x00, +0x20, 0xb9, 0x00, 0x00, 0x20, 0xba, 0x00, 0x00, +0x06, 0xb9, 0x00, 0x00, 0x20, 0xbd, 0x00, 0x00, +0x20, 0xbd, 0x00, 0x00, 0x06, 0xbd, 0x00, 0x00, +0x21, 0x13, 0x00, 0x00, 0x21, 0x13, 0x00, 0x00, +0x06, 0xef, 0x00, 0x00, 0x21, 0x16, 0x00, 0x00, +0x21, 0x16, 0x00, 0x00, 0x04, 0x3f, 0x00, 0x00, +0x21, 0x17, 0x00, 0x00, 0x21, 0x17, 0x00, 0x00, +0x04, 0xb9, 0x00, 0x00, 0x21, 0x20, 0x00, 0x00, +0x21, 0x20, 0x00, 0x00, 0x04, 0xbc, 0x00, 0x00, +0x21, 0x22, 0x00, 0x00, 0x21, 0x22, 0x00, 0x00, +0x04, 0xbb, 0x00, 0x00, 0x21, 0x26, 0x00, 0x00, +0x21, 0x26, 0x00, 0x00, 0x06, 0xec, 0x00, 0x00, +0x21, 0x2e, 0x00, 0x00, 0x21, 0x2e, 0x00, 0x00, +0x06, 0xf0, 0x00, 0x00, 0x21, 0x50, 0x00, 0x00, +0x21, 0x50, 0x00, 0x00, 0x06, 0xce, 0x00, 0x00, +0x21, 0x51, 0x00, 0x00, 0x21, 0x52, 0x00, 0x00, +0x06, 0xd3, 0x00, 0x00, 0x21, 0x53, 0x00, 0x00, +0x21, 0x5a, 0x00, 0x00, 0x06, 0xc6, 0x00, 0x00, +0x21, 0x5b, 0x00, 0x00, 0x21, 0x5e, 0x00, 0x00, +0x06, 0xcf, 0x00, 0x00, 0x21, 0x89, 0x00, 0x00, +0x21, 0x89, 0x00, 0x00, 0x06, 0xd5, 0x00, 0x00, +0x21, 0x90, 0x00, 0x00, 0x21, 0x93, 0x00, 0x00, +0x06, 0xf1, 0x00, 0x00, 0x22, 0x02, 0x00, 0x00, +0x22, 0x02, 0x00, 0x00, 0x06, 0xe8, 0x00, 0x00, +0x22, 0x06, 0x00, 0x00, 0x22, 0x06, 0x00, 0x00, +0x06, 0xeb, 0x00, 0x00, 0x22, 0x0f, 0x00, 0x00, +0x22, 0x0f, 0x00, 0x00, 0x06, 0xee, 0x00, 0x00, +0x22, 0x11, 0x00, 0x00, 0x22, 0x11, 0x00, 0x00, +0x06, 0xed, 0x00, 0x00, 0x22, 0x12, 0x00, 0x00, +0x22, 0x12, 0x00, 0x00, 0x06, 0xd7, 0x00, 0x00, +0x22, 0x15, 0x00, 0x00, 0x22, 0x15, 0x00, 0x00, +0x06, 0xbf, 0x00, 0x00, 0x22, 0x19, 0x00, 0x00, +0x22, 0x19, 0x00, 0x00, 0x06, 0xda, 0x00, 0x00, +0x22, 0x1a, 0x00, 0x00, 0x22, 0x1a, 0x00, 0x00, +0x06, 0xea, 0x00, 0x00, 0x22, 0x1e, 0x00, 0x00, +0x22, 0x1e, 0x00, 0x00, 0x06, 0xe6, 0x00, 0x00, +0x22, 0x2b, 0x00, 0x00, 0x22, 0x2b, 0x00, 0x00, +0x06, 0xe9, 0x00, 0x00, 0x22, 0x48, 0x00, 0x00, +0x22, 0x48, 0x00, 0x00, 0x06, 0xe4, 0x00, 0x00, +0x22, 0x60, 0x00, 0x00, 0x22, 0x60, 0x00, 0x00, +0x06, 0xe2, 0x00, 0x00, 0x22, 0x64, 0x00, 0x00, +0x22, 0x65, 0x00, 0x00, 0x06, 0xde, 0x00, 0x00, +0x23, 0x1c, 0x00, 0x00, 0x23, 0x1f, 0x00, 0x00, +0x04, 0xae, 0x00, 0x00, 0x25, 0xa0, 0x00, 0x00, +0x25, 0xa0, 0x00, 0x00, 0x06, 0xf5, 0x00, 0x00, +0x25, 0xb2, 0x00, 0x00, 0x25, 0xb3, 0x00, 0x00, +0x06, 0xf9, 0x00, 0x00, 0x25, 0xb6, 0x00, 0x00, +0x25, 0xb7, 0x00, 0x00, 0x06, 0xfb, 0x00, 0x00, +0x25, 0xbc, 0x00, 0x00, 0x25, 0xbd, 0x00, 0x00, +0x06, 0xfd, 0x00, 0x00, 0x25, 0xc0, 0x00, 0x00, +0x25, 0xc1, 0x00, 0x00, 0x06, 0xff, 0x00, 0x00, +0x25, 0xc6, 0x00, 0x00, 0x25, 0xc6, 0x00, 0x00, +0x06, 0xf6, 0x00, 0x00, 0x25, 0xc9, 0x00, 0x00, +0x25, 0xc9, 0x00, 0x00, 0x06, 0xf7, 0x00, 0x00, +0x25, 0xca, 0x00, 0x00, 0x25, 0xca, 0x00, 0x00, +0x07, 0x05, 0x00, 0x00, 0x25, 0xcc, 0x00, 0x00, +0x25, 0xcc, 0x00, 0x00, 0x07, 0x20, 0x00, 0x00, +0x26, 0x10, 0x00, 0x00, 0x26, 0x11, 0x00, 0x00, +0x07, 0x01, 0x00, 0x00, 0x26, 0x6a, 0x00, 0x00, +0x26, 0x6a, 0x00, 0x00, 0x07, 0x04, 0x00, 0x00, +0x27, 0x13, 0x00, 0x00, 0x27, 0x13, 0x00, 0x00, +0x07, 0x03, 0x00, 0x00, 0x27, 0x52, 0x00, 0x00, +0x27, 0x52, 0x00, 0x00, 0x06, 0xf8, 0x00, 0x00, +0x27, 0xe6, 0x00, 0x00, 0x27, 0xe7, 0x00, 0x00, +0x04, 0xb2, 0x00, 0x00, 0x2e, 0x22, 0x00, 0x00, +0x2e, 0x25, 0x00, 0x00, 0x04, 0xb4, 0x00, 0x00, +0x2e, 0x3a, 0x00, 0x00, 0x2e, 0x3b, 0x00, 0x00, +0x04, 0x90, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, +0xfb, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, +0xfb, 0x01, 0x00, 0x00, 0xfb, 0x02, 0x00, 0x00, +0x07, 0x96, 0x00, 0x00, 0xfb, 0x03, 0x00, 0x00, +0xfb, 0x04, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, +0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, +0x07, 0x95, 0x00, 0x01, 0xf1, 0x6a, 0x00, 0x01, +0xf1, 0x6b, 0x00, 0x00, 0x04, 0xbd, 0x00, 0x00, +0xb8, 0x00, 0x00, 0x2c, 0x4b, 0xb8, 0x00, 0x09, +0x50, 0x58, 0xb1, 0x01, 0x01, 0x8e, 0x59, 0xb8, +0x01, 0xff, 0x85, 0xb8, 0x00, 0x44, 0x1d, 0xb9, +0x00, 0x09, 0x00, 0x03, 0x5f, 0x5e, 0x2d, 0xb8, +0x00, 0x01, 0x2c, 0x20, 0x20, 0x45, 0x69, 0x44, +0xb0, 0x01, 0x60, 0x2d, 0xb8, 0x00, 0x02, 0x2c, +0xb8, 0x00, 0x01, 0x2a, 0x21, 0x2d, 0xb8, 0x00, +0x03, 0x2c, 0x20, 0x46, 0xb0, 0x03, 0x25, 0x46, +0x52, 0x58, 0x23, 0x59, 0x20, 0x8a, 0x20, 0x8a, +0x49, 0x64, 0x8a, 0x20, 0x46, 0x20, 0x68, 0x61, +0x64, 0xb0, 0x04, 0x25, 0x46, 0x20, 0x68, 0x61, +0x64, 0x52, 0x58, 0x23, 0x65, 0x8a, 0x59, 0x2f, +0x20, 0xb0, 0x00, 0x53, 0x58, 0x69, 0x20, 0xb0, +0x00, 0x54, 0x58, 0x21, 0xb0, 0x40, 0x59, 0x1b, +0x69, 0x20, 0xb0, 0x00, 0x54, 0x58, 0x21, 0xb0, +0x40, 0x65, 0x59, 0x59, 0x3a, 0x2d, 0xb8, 0x00, +0x04, 0x2c, 0x20, 0x46, 0xb0, 0x04, 0x25, 0x46, +0x52, 0x58, 0x23, 0x8a, 0x59, 0x20, 0x46, 0x20, +0x6a, 0x61, 0x64, 0xb0, 0x04, 0x25, 0x46, 0x20, +0x6a, 0x61, 0x64, 0x52, 0x58, 0x23, 0x8a, 0x59, +0x2f, 0xfd, 0x2d, 0xb8, 0x00, 0x05, 0x2c, 0x4b, +0x20, 0xb0, 0x03, 0x26, 0x50, 0x58, 0x51, 0x58, +0xb0, 0x80, 0x44, 0x1b, 0xb0, 0x40, 0x44, 0x59, +0x1b, 0x21, 0x21, 0x20, 0x45, 0xb0, 0xc0, 0x50, +0x58, 0xb0, 0xc0, 0x44, 0x1b, 0x21, 0x59, 0x59, +0x2d, 0xb8, 0x00, 0x06, 0x2c, 0x20, 0x20, 0x45, +0x69, 0x44, 0xb0, 0x01, 0x60, 0x20, 0x20, 0x45, +0x7d, 0x69, 0x18, 0x44, 0xb0, 0x01, 0x60, 0x2d, +0xb8, 0x00, 0x07, 0x2c, 0xb8, 0x00, 0x06, 0x2a, +0x2d, 0xb8, 0x00, 0x08, 0x2c, 0x4b, 0x20, 0xb0, +0x03, 0x26, 0x53, 0x58, 0xb0, 0x40, 0x1b, 0xb0, +0x00, 0x59, 0x8a, 0x8a, 0x20, 0xb0, 0x03, 0x26, +0x53, 0x58, 0x23, 0x21, 0xb0, 0x80, 0x8a, 0x8a, +0x1b, 0x8a, 0x23, 0x59, 0x20, 0xb0, 0x03, 0x26, +0x53, 0x58, 0x23, 0x21, 0xb8, 0x00, 0xc0, 0x8a, +0x8a, 0x1b, 0x8a, 0x23, 0x59, 0x20, 0xb0, 0x03, +0x26, 0x53, 0x58, 0x23, 0x21, 0xb8, 0x01, 0x00, +0x8a, 0x8a, 0x1b, 0x8a, 0x23, 0x59, 0x20, 0xb0, +0x03, 0x26, 0x53, 0x58, 0x23, 0x21, 0xb8, 0x01, +0x40, 0x8a, 0x8a, 0x1b, 0x8a, 0x23, 0x59, 0x20, +0xb8, 0x00, 0x03, 0x26, 0x53, 0x58, 0xb0, 0x03, +0x25, 0x45, 0xb8, 0x01, 0x80, 0x50, 0x58, 0x23, +0x21, 0xb8, 0x01, 0x80, 0x23, 0x21, 0x1b, 0xb0, +0x03, 0x25, 0x45, 0x23, 0x21, 0x23, 0x21, 0x59, +0x1b, 0x21, 0x59, 0x44, 0x2d, 0xb8, 0x00, 0x09, +0x2c, 0x4b, 0x53, 0x58, 0x45, 0x44, 0x1b, 0x21, +0x21, 0x59, 0x2d, 0x00, 0xb0, 0x00, 0x2b, 0x00, +0xb2, 0x01, 0x02, 0x02, 0x2b, 0x01, 0xb2, 0x03, +0x02, 0x02, 0x2b, 0x01, 0xb7, 0x03, 0x78, 0x5e, +0x54, 0x3c, 0x1e, 0x00, 0x08, 0x2b, 0xb7, 0x04, +0x5b, 0x4a, 0x40, 0x2e, 0x1e, 0x00, 0x08, 0x2b, +0x00, 0xb7, 0x01, 0x90, 0x78, 0x60, 0x3c, 0x2c, +0x00, 0x08, 0x2b, 0xb7, 0x02, 0x90, 0x78, 0x60, +0x3c, 0x2c, 0x00, 0x08, 0x2b, 0x00, 0xb2, 0x05, +0x08, 0x07, 0x2b, 0xb0, 0x00, 0x20, 0x45, 0x7d, +0x69, 0x18, 0x44, 0x4b, 0xb8, 0x00, 0x60, 0x52, +0x58, 0xb0, 0x01, 0x1b, 0xb0, 0x00, 0x59, 0xb0, +0x01, 0x8e, 0x00, 0x00, 0x00, 0x14, 0x00, 0x24, +0x00, 0x24, 0x00, 0x2e, 0x00, 0x3d, 0x00, 0x00, +0x00, 0x0c, 0xff, 0x33, 0x00, 0x0c, 0x01, 0xe6, +0x00, 0x0c, 0x02, 0x06, 0x00, 0x0c, 0x02, 0x3e, +0x00, 0x0c, 0x02, 0x7e, 0x00, 0x0c, 0x02, 0x90, +0x00, 0x0c, 0x02, 0xc8, 0x00, 0x0c, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, +0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xc8, +0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x01, 0x64, +0x00, 0x00, 0x02, 0x2c, 0x00, 0x00, 0x02, 0xcc, +0x00, 0x00, 0x03, 0x54, 0x00, 0x00, 0x03, 0xd0, +0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x05, 0x00, +0x00, 0x00, 0x05, 0x78, 0x00, 0x00, 0x05, 0xb8, +0x00, 0x00, 0x06, 0x20, 0x00, 0x00, 0x06, 0xbc, +0x00, 0x00, 0x07, 0x08, 0x00, 0x00, 0x07, 0xc8, +0x00, 0x00, 0x08, 0x6c, 0x00, 0x00, 0x09, 0x14, +0x00, 0x00, 0x09, 0xa0, 0x00, 0x00, 0x0a, 0x88, +0x00, 0x00, 0x0b, 0x38, 0x00, 0x00, 0x0c, 0x18, +0x00, 0x00, 0x0c, 0x70, 0x00, 0x00, 0x0c, 0xf4, +0x00, 0x00, 0x0d, 0x70, 0x00, 0x00, 0x0e, 0x5c, +0x00, 0x00, 0x0f, 0x14, 0x00, 0x00, 0x0f, 0x94, +0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x11, 0x04, +0x00, 0x00, 0x11, 0xf0, 0x00, 0x00, 0x12, 0x90, +0x00, 0x00, 0x13, 0x7c, 0x00, 0x00, 0x14, 0x40, +0x00, 0x00, 0x14, 0xe0, 0x00, 0x00, 0x16, 0x60, +0x00, 0x00, 0x16, 0xfc, 0x00, 0x00, 0x17, 0x6c, +0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x98, +0x00, 0x00, 0x18, 0xf8, 0x00, 0x00, 0x19, 0xe4, +0x00, 0x00, 0x1a, 0x84, 0x00, 0x00, 0x1b, 0x2c, +0x00, 0x00, 0x1c, 0x18, 0x00, 0x00, 0x1d, 0x08, +0x00, 0x00, 0x1d, 0x94, 0x00, 0x00, 0x1e, 0x70, +0x00, 0x00, 0x1f, 0x14, 0x00, 0x00, 0x1f, 0xac, +0x00, 0x00, 0x20, 0x24, 0x00, 0x00, 0x20, 0xf4, +0x00, 0x00, 0x21, 0x94, 0x00, 0x00, 0x22, 0x3c, +0x00, 0x00, 0x22, 0xb0, 0x00, 0x00, 0x22, 0xc8, +0x00, 0x00, 0x22, 0xe0, 0x00, 0x00, 0x22, 0xf8, +0x00, 0x00, 0x23, 0x10, 0x00, 0x00, 0x23, 0x28, +0x00, 0x00, 0x23, 0x40, 0x00, 0x00, 0x23, 0x58, +0x00, 0x00, 0x23, 0x70, 0x00, 0x00, 0x23, 0x88, +0x00, 0x00, 0x23, 0xa0, 0x00, 0x00, 0x23, 0xb8, +0x00, 0x00, 0x23, 0xd0, 0x00, 0x00, 0x23, 0xe8, +0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x24, 0x18, +0x00, 0x00, 0x24, 0x38, 0x00, 0x00, 0x24, 0x50, +0x00, 0x00, 0x24, 0x68, 0x00, 0x00, 0x24, 0x80, +0x00, 0x00, 0x24, 0x98, 0x00, 0x00, 0x24, 0xb8, +0x00, 0x00, 0x25, 0x8c, 0x00, 0x00, 0x26, 0x58, +0x00, 0x00, 0x26, 0x70, 0x00, 0x00, 0x26, 0x88, +0x00, 0x00, 0x27, 0x64, 0x00, 0x00, 0x27, 0x7c, +0x00, 0x00, 0x27, 0x94, 0x00, 0x00, 0x27, 0xac, +0x00, 0x00, 0x27, 0xc4, 0x00, 0x00, 0x27, 0xdc, +0x00, 0x00, 0x27, 0xf4, 0x00, 0x00, 0x28, 0x0c, +0x00, 0x00, 0x28, 0x24, 0x00, 0x00, 0x28, 0x3c, +0x00, 0x00, 0x28, 0x4c, 0x00, 0x00, 0x28, 0x64, +0x00, 0x00, 0x28, 0x7c, 0x00, 0x00, 0x28, 0x94, +0x00, 0x00, 0x28, 0xac, 0x00, 0x00, 0x28, 0xc4, +0x00, 0x00, 0x28, 0xdc, 0x00, 0x00, 0x28, 0xf4, +0x00, 0x00, 0x29, 0x0c, 0x00, 0x00, 0x29, 0x24, +0x00, 0x00, 0x29, 0x3c, 0x00, 0x00, 0x29, 0x54, +0x00, 0x00, 0x29, 0x6c, 0x00, 0x00, 0x29, 0x84, +0x00, 0x00, 0x29, 0x9c, 0x00, 0x00, 0x29, 0xb4, +0x00, 0x00, 0x29, 0xd4, 0x00, 0x00, 0x2a, 0x98, +0x00, 0x00, 0x2a, 0xb0, 0x00, 0x00, 0x2a, 0xc8, +0x00, 0x00, 0x2a, 0xe0, 0x00, 0x00, 0x2a, 0xf8, +0x00, 0x00, 0x2b, 0x10, 0x00, 0x00, 0x2b, 0x28, +0x00, 0x00, 0x2b, 0x40, 0x00, 0x00, 0x2b, 0x58, +0x00, 0x00, 0x2b, 0x70, 0x00, 0x00, 0x2c, 0x64, +0x00, 0x00, 0x2c, 0x7c, 0x00, 0x00, 0x2c, 0x94, +0x00, 0x00, 0x2c, 0xac, 0x00, 0x00, 0x2d, 0x6c, +0x00, 0x00, 0x2d, 0x84, 0x00, 0x00, 0x2d, 0x9c, +0x00, 0x00, 0x2d, 0xb4, 0x00, 0x00, 0x2d, 0xcc, +0x00, 0x00, 0x2d, 0xe4, 0x00, 0x00, 0x2d, 0xfc, +0x00, 0x00, 0x2e, 0x14, 0x00, 0x00, 0x2e, 0x2c, +0x00, 0x00, 0x2e, 0x44, 0x00, 0x00, 0x2e, 0x5c, +0x00, 0x00, 0x2e, 0xd8, 0x00, 0x00, 0x2e, 0xf0, +0x00, 0x00, 0x2f, 0x08, 0x00, 0x00, 0x2f, 0x20, +0x00, 0x00, 0x2f, 0x38, 0x00, 0x00, 0x2f, 0x50, +0x00, 0x00, 0x2f, 0x68, 0x00, 0x00, 0x2f, 0x80, +0x00, 0x00, 0x2f, 0x98, 0x00, 0x00, 0x2f, 0xb0, +0x00, 0x00, 0x2f, 0xc8, 0x00, 0x00, 0x2f, 0xe8, +0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x84, +0x00, 0x00, 0x30, 0x9c, 0x00, 0x00, 0x30, 0xb4, +0x00, 0x00, 0x30, 0xcc, 0x00, 0x00, 0x30, 0xe4, +0x00, 0x00, 0x30, 0xfc, 0x00, 0x00, 0x31, 0x14, +0x00, 0x00, 0x31, 0x2c, 0x00, 0x00, 0x31, 0x44, +0x00, 0x00, 0x31, 0x5c, 0x00, 0x00, 0x31, 0x74, +0x00, 0x00, 0x31, 0x8c, 0x00, 0x00, 0x31, 0xa4, +0x00, 0x00, 0x31, 0xbc, 0x00, 0x00, 0x31, 0xd4, +0x00, 0x00, 0x31, 0xec, 0x00, 0x00, 0x32, 0x04, +0x00, 0x00, 0x32, 0x1c, 0x00, 0x00, 0x32, 0x34, +0x00, 0x00, 0x32, 0x4c, 0x00, 0x00, 0x32, 0x64, +0x00, 0x00, 0x32, 0x7c, 0x00, 0x00, 0x32, 0x94, +0x00, 0x00, 0x32, 0xac, 0x00, 0x00, 0x32, 0xc4, +0x00, 0x00, 0x32, 0xdc, 0x00, 0x00, 0x32, 0xfc, +0x00, 0x00, 0x33, 0x14, 0x00, 0x00, 0x33, 0x2c, +0x00, 0x00, 0x34, 0x40, 0x00, 0x00, 0x34, 0xfc, +0x00, 0x00, 0x35, 0xd8, 0x00, 0x00, 0x35, 0xf0, +0x00, 0x00, 0x36, 0x08, 0x00, 0x00, 0x36, 0x20, +0x00, 0x00, 0x36, 0x38, 0x00, 0x00, 0x36, 0x50, +0x00, 0x00, 0x37, 0x38, 0x00, 0x00, 0x37, 0x50, +0x00, 0x00, 0x37, 0x68, 0x00, 0x00, 0x37, 0x80, +0x00, 0x00, 0x37, 0x98, 0x00, 0x00, 0x37, 0xb0, +0x00, 0x00, 0x37, 0xd0, 0x00, 0x00, 0x37, 0xe8, +0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x18, +0x00, 0x00, 0x38, 0x30, 0x00, 0x00, 0x38, 0x48, +0x00, 0x00, 0x38, 0x60, 0x00, 0x00, 0x38, 0x78, +0x00, 0x00, 0x38, 0x90, 0x00, 0x00, 0x39, 0x68, +0x00, 0x00, 0x39, 0x80, 0x00, 0x00, 0x39, 0x98, +0x00, 0x00, 0x39, 0xb0, 0x00, 0x00, 0x39, 0xc8, +0x00, 0x00, 0x39, 0xe0, 0x00, 0x00, 0x3a, 0x64, +0x00, 0x00, 0x3a, 0x7c, 0x00, 0x00, 0x3a, 0x94, +0x00, 0x00, 0x3a, 0xac, 0x00, 0x00, 0x3a, 0xc4, +0x00, 0x00, 0x3a, 0xdc, 0x00, 0x00, 0x3a, 0xf4, +0x00, 0x00, 0x3b, 0x0c, 0x00, 0x00, 0x3b, 0x24, +0x00, 0x00, 0x3b, 0x3c, 0x00, 0x00, 0x3b, 0x54, +0x00, 0x00, 0x3b, 0x6c, 0x00, 0x00, 0x3b, 0x84, +0x00, 0x00, 0x3b, 0x9c, 0x00, 0x00, 0x3b, 0xb4, +0x00, 0x00, 0x3b, 0xcc, 0x00, 0x00, 0x3b, 0xe4, +0x00, 0x00, 0x3c, 0xb0, 0x00, 0x00, 0x3d, 0x60, +0x00, 0x00, 0x3d, 0x78, 0x00, 0x00, 0x3d, 0x90, +0x00, 0x00, 0x3d, 0xa8, 0x00, 0x00, 0x3d, 0xc0, +0x00, 0x00, 0x3d, 0xd8, 0x00, 0x00, 0x3d, 0xf0, +0x00, 0x00, 0x3e, 0x08, 0x00, 0x00, 0x3e, 0x20, +0x00, 0x00, 0x3e, 0x38, 0x00, 0x00, 0x3e, 0x50, +0x00, 0x00, 0x3e, 0x68, 0x00, 0x00, 0x3e, 0x80, +0x00, 0x00, 0x3e, 0x98, 0x00, 0x00, 0x3e, 0xb0, +0x00, 0x00, 0x3e, 0xc8, 0x00, 0x00, 0x3e, 0xe0, +0x00, 0x00, 0x3e, 0xf8, 0x00, 0x00, 0x3f, 0x10, +0x00, 0x00, 0x3f, 0x28, 0x00, 0x00, 0x3f, 0x40, +0x00, 0x00, 0x3f, 0x58, 0x00, 0x00, 0x3f, 0x70, +0x00, 0x00, 0x40, 0x30, 0x00, 0x00, 0x40, 0xb4, +0x00, 0x00, 0x41, 0x70, 0x00, 0x00, 0x42, 0x40, +0x00, 0x00, 0x42, 0xc4, 0x00, 0x00, 0x42, 0xdc, +0x00, 0x00, 0x42, 0xf4, 0x00, 0x00, 0x43, 0x0c, +0x00, 0x00, 0x43, 0x24, 0x00, 0x00, 0x43, 0x3c, +0x00, 0x00, 0x43, 0x54, 0x00, 0x00, 0x43, 0x6c, +0x00, 0x00, 0x43, 0x84, 0x00, 0x00, 0x43, 0x9c, +0x00, 0x00, 0x43, 0xb4, 0x00, 0x00, 0x43, 0xcc, +0x00, 0x00, 0x43, 0xe4, 0x00, 0x00, 0x43, 0xfc, +0x00, 0x00, 0x44, 0x14, 0x00, 0x00, 0x44, 0x2c, +0x00, 0x00, 0x44, 0x4c, 0x00, 0x00, 0x44, 0x64, +0x00, 0x00, 0x44, 0x7c, 0x00, 0x00, 0x44, 0x94, +0x00, 0x00, 0x44, 0xac, 0x00, 0x00, 0x44, 0xcc, +0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x47, 0x84, +0x00, 0x00, 0x47, 0x9c, 0x00, 0x00, 0x47, 0xb4, +0x00, 0x00, 0x48, 0xc4, 0x00, 0x00, 0x48, 0xdc, +0x00, 0x00, 0x48, 0xf4, 0x00, 0x00, 0x49, 0x0c, +0x00, 0x00, 0x49, 0x24, 0x00, 0x00, 0x49, 0x3c, +0x00, 0x00, 0x49, 0x54, 0x00, 0x00, 0x49, 0x6c, +0x00, 0x00, 0x49, 0x84, 0x00, 0x00, 0x49, 0x9c, +0x00, 0x00, 0x4a, 0xac, 0x00, 0x00, 0x4a, 0xc4, +0x00, 0x00, 0x4a, 0xdc, 0x00, 0x00, 0x4a, 0xf4, +0x00, 0x00, 0x4b, 0x0c, 0x00, 0x00, 0x4b, 0x24, +0x00, 0x00, 0x4b, 0x3c, 0x00, 0x00, 0x4b, 0x54, +0x00, 0x00, 0x4b, 0x6c, 0x00, 0x00, 0x4b, 0x84, +0x00, 0x00, 0x4b, 0x9c, 0x00, 0x00, 0x4b, 0xb4, +0x00, 0x00, 0x4b, 0xcc, 0x00, 0x00, 0x4b, 0xe4, +0x00, 0x00, 0x4b, 0xfc, 0x00, 0x00, 0x4c, 0x14, +0x00, 0x00, 0x4c, 0x34, 0x00, 0x00, 0x4d, 0x38, +0x00, 0x00, 0x4d, 0x50, 0x00, 0x00, 0x4d, 0x68, +0x00, 0x00, 0x4d, 0x80, 0x00, 0x00, 0x4d, 0x98, +0x00, 0x00, 0x4d, 0xb0, 0x00, 0x00, 0x4d, 0xc8, +0x00, 0x00, 0x4d, 0xe0, 0x00, 0x00, 0x4d, 0xf8, +0x00, 0x00, 0x4e, 0x10, 0x00, 0x00, 0x4e, 0x28, +0x00, 0x00, 0x4e, 0x40, 0x00, 0x00, 0x4e, 0x58, +0x00, 0x00, 0x4e, 0x70, 0x00, 0x00, 0x4f, 0x30, +0x00, 0x00, 0x4f, 0x48, 0x00, 0x00, 0x4f, 0x60, +0x00, 0x00, 0x4f, 0x78, 0x00, 0x00, 0x4f, 0x90, +0x00, 0x00, 0x4f, 0xa8, 0x00, 0x00, 0x4f, 0xc0, +0x00, 0x00, 0x4f, 0xd8, 0x00, 0x00, 0x4f, 0xf0, +0x00, 0x00, 0x50, 0x08, 0x00, 0x00, 0x50, 0xb0, +0x00, 0x00, 0x51, 0x2c, 0x00, 0x00, 0x51, 0x44, +0x00, 0x00, 0x51, 0x84, 0x00, 0x00, 0x51, 0x9c, +0x00, 0x00, 0x51, 0xb4, 0x00, 0x00, 0x51, 0xcc, +0x00, 0x00, 0x51, 0xe4, 0x00, 0x00, 0x52, 0x6c, +0x00, 0x00, 0x52, 0x84, 0x00, 0x00, 0x52, 0x9c, +0x00, 0x00, 0x52, 0xb4, 0x00, 0x00, 0x52, 0xcc, +0x00, 0x00, 0x52, 0xe4, 0x00, 0x00, 0x53, 0x04, +0x00, 0x00, 0x53, 0x1c, 0x00, 0x00, 0x53, 0xb0, +0x00, 0x00, 0x53, 0xc8, 0x00, 0x00, 0x53, 0xe0, +0x00, 0x00, 0x53, 0xf8, 0x00, 0x00, 0x54, 0x10, +0x00, 0x00, 0x54, 0x28, 0x00, 0x00, 0x54, 0x40, +0x00, 0x00, 0x54, 0x58, 0x00, 0x00, 0x54, 0x70, +0x00, 0x00, 0x54, 0x88, 0x00, 0x00, 0x54, 0xa0, +0x00, 0x00, 0x54, 0xb8, 0x00, 0x00, 0x54, 0xd0, +0x00, 0x00, 0x54, 0xe8, 0x00, 0x00, 0x55, 0x00, +0x00, 0x00, 0x55, 0x18, 0x00, 0x00, 0x55, 0x30, +0x00, 0x00, 0x55, 0x48, 0x00, 0x00, 0x55, 0x60, +0x00, 0x00, 0x55, 0x78, 0x00, 0x00, 0x55, 0x90, +0x00, 0x00, 0x55, 0xa8, 0x00, 0x00, 0x55, 0xc0, +0x00, 0x00, 0x55, 0xd8, 0x00, 0x00, 0x55, 0xf0, +0x00, 0x00, 0x56, 0x08, 0x00, 0x00, 0x56, 0x20, +0x00, 0x00, 0x56, 0x40, 0x00, 0x00, 0x56, 0x58, +0x00, 0x00, 0x56, 0x70, 0x00, 0x00, 0x57, 0x80, +0x00, 0x00, 0x58, 0xac, 0x00, 0x00, 0x59, 0x84, +0x00, 0x00, 0x59, 0x9c, 0x00, 0x00, 0x59, 0xb4, +0x00, 0x00, 0x59, 0xcc, 0x00, 0x00, 0x59, 0xe4, +0x00, 0x00, 0x59, 0xfc, 0x00, 0x00, 0x5a, 0xec, +0x00, 0x00, 0x5b, 0x04, 0x00, 0x00, 0x5b, 0x1c, +0x00, 0x00, 0x5b, 0x34, 0x00, 0x00, 0x5b, 0x4c, +0x00, 0x00, 0x5b, 0x64, 0x00, 0x00, 0x5b, 0x84, +0x00, 0x00, 0x5b, 0x9c, 0x00, 0x00, 0x5b, 0xb4, +0x00, 0x00, 0x5b, 0xcc, 0x00, 0x00, 0x5b, 0xe4, +0x00, 0x00, 0x5b, 0xfc, 0x00, 0x00, 0x5c, 0x14, +0x00, 0x00, 0x5c, 0x2c, 0x00, 0x00, 0x5c, 0x44, +0x00, 0x00, 0x5d, 0x4c, 0x00, 0x00, 0x5d, 0x64, +0x00, 0x00, 0x5d, 0x7c, 0x00, 0x00, 0x5d, 0x94, +0x00, 0x00, 0x5d, 0xac, 0x00, 0x00, 0x5d, 0xc4, +0x00, 0x00, 0x5d, 0xdc, 0x00, 0x00, 0x5e, 0xa8, +0x00, 0x00, 0x5e, 0xc0, 0x00, 0x00, 0x5e, 0xd8, +0x00, 0x00, 0x5e, 0xf0, 0x00, 0x00, 0x5f, 0x08, +0x00, 0x00, 0x5f, 0x20, 0x00, 0x00, 0x5f, 0x38, +0x00, 0x00, 0x5f, 0x50, 0x00, 0x00, 0x5f, 0x68, +0x00, 0x00, 0x5f, 0x80, 0x00, 0x00, 0x5f, 0x98, +0x00, 0x00, 0x5f, 0xb0, 0x00, 0x00, 0x5f, 0xc8, +0x00, 0x00, 0x5f, 0xe0, 0x00, 0x00, 0x5f, 0xf8, +0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x60, 0x28, +0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x61, 0xc4, +0x00, 0x00, 0x61, 0xdc, 0x00, 0x00, 0x61, 0xf4, +0x00, 0x00, 0x62, 0x0c, 0x00, 0x00, 0x62, 0x24, +0x00, 0x00, 0x62, 0x3c, 0x00, 0x00, 0x62, 0x54, +0x00, 0x00, 0x62, 0x6c, 0x00, 0x00, 0x62, 0x84, +0x00, 0x00, 0x62, 0x9c, 0x00, 0x00, 0x62, 0xb4, +0x00, 0x00, 0x62, 0xcc, 0x00, 0x00, 0x62, 0xe4, +0x00, 0x00, 0x62, 0xfc, 0x00, 0x00, 0x63, 0x14, +0x00, 0x00, 0x63, 0x2c, 0x00, 0x00, 0x63, 0x44, +0x00, 0x00, 0x63, 0x5c, 0x00, 0x00, 0x63, 0x74, +0x00, 0x00, 0x63, 0x8c, 0x00, 0x00, 0x63, 0xa4, +0x00, 0x00, 0x63, 0xbc, 0x00, 0x00, 0x63, 0xd4, +0x00, 0x00, 0x64, 0xdc, 0x00, 0x00, 0x65, 0xd0, +0x00, 0x00, 0x66, 0x90, 0x00, 0x00, 0x66, 0xf4, +0x00, 0x00, 0x67, 0xdc, 0x00, 0x00, 0x68, 0xd4, +0x00, 0x00, 0x69, 0xbc, 0x00, 0x00, 0x6a, 0xd0, +0x00, 0x00, 0x6b, 0x6c, 0x00, 0x00, 0x6c, 0x6c, +0x00, 0x00, 0x6d, 0x78, 0x00, 0x00, 0x6e, 0x8c, +0x00, 0x00, 0x6f, 0x50, 0x00, 0x00, 0x70, 0x3c, +0x00, 0x00, 0x70, 0x4c, 0x00, 0x00, 0x71, 0x10, +0x00, 0x00, 0x72, 0x10, 0x00, 0x00, 0x72, 0xe8, +0x00, 0x00, 0x73, 0xbc, 0x00, 0x00, 0x74, 0x94, +0x00, 0x00, 0x75, 0x2c, 0x00, 0x00, 0x76, 0x48, +0x00, 0x00, 0x77, 0x4c, 0x00, 0x00, 0x78, 0x04, +0x00, 0x00, 0x78, 0xd8, 0x00, 0x00, 0x79, 0xf0, +0x00, 0x00, 0x7a, 0x98, 0x00, 0x00, 0x7b, 0x5c, +0x00, 0x00, 0x7c, 0x40, 0x00, 0x00, 0x7c, 0xac, +0x00, 0x00, 0x7d, 0x40, 0x00, 0x00, 0x7d, 0xac, +0x00, 0x00, 0x7e, 0xb8, 0x00, 0x00, 0x7f, 0x88, +0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x80, 0xcc, +0x00, 0x00, 0x81, 0x18, 0x00, 0x00, 0x81, 0xfc, +0x00, 0x00, 0x82, 0xec, 0x00, 0x00, 0x83, 0xf4, +0x00, 0x00, 0x84, 0xb0, 0x00, 0x00, 0x85, 0x70, +0x00, 0x00, 0x86, 0x08, 0x00, 0x00, 0x86, 0xcc, +0x00, 0x00, 0x87, 0xa8, 0x00, 0x00, 0x88, 0xa8, +0x00, 0x00, 0x89, 0x34, 0x00, 0x00, 0x89, 0xc0, +0x00, 0x00, 0x8a, 0x70, 0x00, 0x00, 0x8b, 0x18, +0x00, 0x00, 0x8b, 0x84, 0x00, 0x00, 0x8c, 0x1c, +0x00, 0x00, 0x8c, 0xb8, 0x00, 0x00, 0x8d, 0xcc, +0x00, 0x00, 0x8e, 0x60, 0x00, 0x00, 0x8f, 0x28, +0x00, 0x00, 0x8f, 0xb4, 0x00, 0x00, 0x90, 0x94, +0x00, 0x00, 0x91, 0x6c, 0x00, 0x00, 0x92, 0x14, +0x00, 0x00, 0x92, 0x80, 0x00, 0x00, 0x93, 0x4c, +0x00, 0x00, 0x93, 0xf4, 0x00, 0x00, 0x94, 0x68, +0x00, 0x00, 0x95, 0x04, 0x00, 0x00, 0x95, 0xd0, +0x00, 0x00, 0x96, 0x90, 0x00, 0x00, 0x97, 0x18, +0x00, 0x00, 0x97, 0xa0, 0x00, 0x00, 0x98, 0x4c, +0x00, 0x00, 0x98, 0xfc, 0x00, 0x00, 0x99, 0x78, +0x00, 0x00, 0x9a, 0x3c, 0x00, 0x00, 0x9b, 0x30, +0x00, 0x00, 0x9b, 0x48, 0x00, 0x00, 0x9b, 0x60, +0x00, 0x00, 0x9c, 0x5c, 0x00, 0x00, 0x9d, 0xe4, +0x00, 0x00, 0x9e, 0x4c, 0x00, 0x00, 0x9e, 0x64, +0x00, 0x00, 0x9e, 0x7c, 0x00, 0x00, 0x9e, 0x94, +0x00, 0x00, 0x9e, 0xac, 0x00, 0x00, 0x9e, 0xc4, +0x00, 0x00, 0x9e, 0xdc, 0x00, 0x00, 0x9e, 0xf4, +0x00, 0x00, 0x9f, 0x0c, 0x00, 0x00, 0x9f, 0x24, +0x00, 0x00, 0x9f, 0x3c, 0x00, 0x00, 0x9f, 0xec, +0x00, 0x00, 0xa0, 0x04, 0x00, 0x00, 0xa0, 0xc0, +0x00, 0x00, 0xa0, 0xd0, 0x00, 0x00, 0xa0, 0xe8, +0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xa1, 0x18, +0x00, 0x00, 0xa1, 0x30, 0x00, 0x00, 0xa1, 0x48, +0x00, 0x00, 0xa1, 0x60, 0x00, 0x00, 0xa1, 0x78, +0x00, 0x00, 0xa1, 0x90, 0x00, 0x00, 0xa1, 0xa8, +0x00, 0x00, 0xa1, 0xc0, 0x00, 0x00, 0xa1, 0xd8, +0x00, 0x00, 0xa1, 0xf0, 0x00, 0x00, 0xa2, 0x08, +0x00, 0x00, 0xa2, 0x20, 0x00, 0x00, 0xa2, 0x38, +0x00, 0x00, 0xa2, 0x58, 0x00, 0x00, 0xa2, 0x70, +0x00, 0x00, 0xa2, 0x88, 0x00, 0x00, 0xa2, 0xa0, +0x00, 0x00, 0xa2, 0xb8, 0x00, 0x00, 0xa2, 0xd8, +0x00, 0x00, 0xa3, 0xfc, 0x00, 0x00, 0xa4, 0x0c, +0x00, 0x00, 0xa4, 0x24, 0x00, 0x00, 0xa4, 0x3c, +0x00, 0x00, 0xa4, 0x54, 0x00, 0x00, 0xa4, 0x6c, +0x00, 0x00, 0xa4, 0x84, 0x00, 0x00, 0xa4, 0x9c, +0x00, 0x00, 0xa4, 0xb4, 0x00, 0x00, 0xa4, 0xcc, +0x00, 0x00, 0xa5, 0x0c, 0x00, 0x00, 0xa5, 0x24, +0x00, 0x00, 0xa5, 0x3c, 0x00, 0x00, 0xa5, 0x54, +0x00, 0x00, 0xa5, 0x6c, 0x00, 0x00, 0xa5, 0x84, +0x00, 0x00, 0xa5, 0xa4, 0x00, 0x00, 0xa5, 0xbc, +0x00, 0x00, 0xa6, 0x2c, 0x00, 0x00, 0xa6, 0x44, +0x00, 0x00, 0xa6, 0x54, 0x00, 0x00, 0xa6, 0x64, +0x00, 0x00, 0xa6, 0xb4, 0x00, 0x00, 0xa7, 0x20, +0x00, 0x00, 0xa7, 0x30, 0x00, 0x00, 0xa7, 0x40, +0x00, 0x00, 0xa7, 0x50, 0x00, 0x00, 0xa8, 0x14, +0x00, 0x00, 0xa8, 0x24, 0x00, 0x00, 0xa8, 0x34, +0x00, 0x00, 0xa8, 0xa8, 0x00, 0x00, 0xa8, 0xb8, +0x00, 0x00, 0xa8, 0xc8, 0x00, 0x00, 0xa9, 0x40, +0x00, 0x00, 0xa9, 0x50, 0x00, 0x00, 0xa9, 0xb8, +0x00, 0x00, 0xa9, 0xc8, 0x00, 0x00, 0xaa, 0x34, +0x00, 0x00, 0xaa, 0x44, 0x00, 0x00, 0xaa, 0x54, +0x00, 0x00, 0xab, 0x20, 0x00, 0x00, 0xab, 0x30, +0x00, 0x00, 0xab, 0xcc, 0x00, 0x00, 0xac, 0xa8, +0x00, 0x00, 0xac, 0xc0, 0x00, 0x00, 0xac, 0xd8, +0x00, 0x00, 0xac, 0xf0, 0x00, 0x00, 0xad, 0x08, +0x00, 0x00, 0xad, 0x20, 0x00, 0x00, 0xad, 0x38, +0x00, 0x00, 0xad, 0x50, 0x00, 0x00, 0xad, 0x68, +0x00, 0x00, 0xad, 0x80, 0x00, 0x00, 0xae, 0xa4, +0x00, 0x00, 0xaf, 0xa0, 0x00, 0x00, 0xb0, 0x54, +0x00, 0x00, 0xb1, 0x58, 0x00, 0x00, 0xb2, 0x50, +0x00, 0x00, 0xb3, 0x20, 0x00, 0x00, 0xb3, 0xd0, +0x00, 0x00, 0xb4, 0x7c, 0x00, 0x00, 0xb4, 0xdc, +0x00, 0x00, 0xb5, 0xc0, 0x00, 0x00, 0xb6, 0x6c, +0x00, 0x00, 0xb7, 0x44, 0x00, 0x00, 0xb7, 0xe0, +0x00, 0x00, 0xb9, 0x20, 0x00, 0x00, 0xb9, 0xc8, +0x00, 0x00, 0xba, 0x8c, 0x00, 0x00, 0xbb, 0x54, +0x00, 0x00, 0xbc, 0x1c, 0x00, 0x00, 0xbc, 0xa0, +0x00, 0x00, 0xbd, 0x64, 0x00, 0x00, 0xbe, 0x48, +0x00, 0x00, 0xbf, 0x08, 0x00, 0x00, 0xbf, 0xe8, +0x00, 0x00, 0xc0, 0xe4, 0x00, 0x00, 0xc1, 0x94, +0x00, 0x00, 0xc2, 0x90, 0x00, 0x00, 0xc3, 0x78, +0x00, 0x00, 0xc4, 0x6c, 0x00, 0x00, 0xc4, 0x84, +0x00, 0x00, 0xc4, 0x9c, 0x00, 0x00, 0xc4, 0xb4, +0x00, 0x00, 0xc4, 0xcc, 0x00, 0x00, 0xc4, 0xe4, +0x00, 0x00, 0xc4, 0xfc, 0x00, 0x00, 0xc5, 0x14, +0x00, 0x00, 0xc5, 0x2c, 0x00, 0x00, 0xc5, 0x44, +0x00, 0x00, 0xc5, 0x5c, 0x00, 0x00, 0xc5, 0x74, +0x00, 0x00, 0xc5, 0x8c, 0x00, 0x00, 0xc5, 0xa4, +0x00, 0x00, 0xc5, 0xbc, 0x00, 0x00, 0xc5, 0xd4, +0x00, 0x00, 0xc5, 0xec, 0x00, 0x00, 0xc6, 0x04, +0x00, 0x00, 0xc6, 0x1c, 0x00, 0x00, 0xc6, 0x34, +0x00, 0x00, 0xc6, 0x4c, 0x00, 0x00, 0xc6, 0x64, +0x00, 0x00, 0xc6, 0x7c, 0x00, 0x00, 0xc6, 0x94, +0x00, 0x00, 0xc6, 0xac, 0x00, 0x00, 0xc6, 0xc4, +0x00, 0x00, 0xc6, 0xdc, 0x00, 0x00, 0xc6, 0xf4, +0x00, 0x00, 0xc7, 0x0c, 0x00, 0x00, 0xc7, 0x24, +0x00, 0x00, 0xc7, 0x3c, 0x00, 0x00, 0xc7, 0x54, +0x00, 0x00, 0xc7, 0x6c, 0x00, 0x00, 0xc7, 0x84, +0x00, 0x00, 0xc7, 0x9c, 0x00, 0x00, 0xc7, 0xb4, +0x00, 0x00, 0xc7, 0xcc, 0x00, 0x00, 0xc7, 0xe4, +0x00, 0x00, 0xc7, 0xfc, 0x00, 0x00, 0xc8, 0x14, +0x00, 0x00, 0xc8, 0x2c, 0x00, 0x00, 0xc8, 0x44, +0x00, 0x00, 0xc8, 0x5c, 0x00, 0x00, 0xc8, 0x74, +0x00, 0x00, 0xc8, 0x8c, 0x00, 0x00, 0xc8, 0xa4, +0x00, 0x00, 0xc8, 0xbc, 0x00, 0x00, 0xc8, 0xd4, +0x00, 0x00, 0xc8, 0xec, 0x00, 0x00, 0xc9, 0x04, +0x00, 0x00, 0xc9, 0x1c, 0x00, 0x00, 0xc9, 0x34, +0x00, 0x00, 0xc9, 0x4c, 0x00, 0x00, 0xc9, 0x64, +0x00, 0x00, 0xc9, 0x7c, 0x00, 0x00, 0xc9, 0x94, +0x00, 0x00, 0xc9, 0xac, 0x00, 0x00, 0xc9, 0xc4, +0x00, 0x00, 0xc9, 0xdc, 0x00, 0x00, 0xc9, 0xf4, +0x00, 0x00, 0xca, 0x0c, 0x00, 0x00, 0xca, 0x24, +0x00, 0x00, 0xca, 0x3c, 0x00, 0x00, 0xca, 0x54, +0x00, 0x00, 0xca, 0x6c, 0x00, 0x00, 0xca, 0x84, +0x00, 0x00, 0xca, 0x9c, 0x00, 0x00, 0xca, 0xb4, +0x00, 0x00, 0xca, 0xcc, 0x00, 0x00, 0xca, 0xe4, +0x00, 0x00, 0xca, 0xfc, 0x00, 0x00, 0xcb, 0x14, +0x00, 0x00, 0xcb, 0x2c, 0x00, 0x00, 0xcb, 0x44, +0x00, 0x00, 0xcb, 0x5c, 0x00, 0x00, 0xcb, 0x74, +0x00, 0x00, 0xcb, 0x8c, 0x00, 0x00, 0xcb, 0xa4, +0x00, 0x00, 0xcb, 0xbc, 0x00, 0x00, 0xcb, 0xd4, +0x00, 0x00, 0xcb, 0xec, 0x00, 0x00, 0xcc, 0x04, +0x00, 0x00, 0xcc, 0x24, 0x00, 0x00, 0xcc, 0x44, +0x00, 0x00, 0xcc, 0x64, 0x00, 0x00, 0xcc, 0x84, +0x00, 0x00, 0xcc, 0xa4, 0x00, 0x00, 0xcc, 0xc4, +0x00, 0x00, 0xcc, 0xe4, 0x00, 0x00, 0xcd, 0x04, +0x00, 0x00, 0xcd, 0x1c, 0x00, 0x00, 0xcd, 0x3c, +0x00, 0x00, 0xcd, 0x5c, 0x00, 0x00, 0xcd, 0x7c, +0x00, 0x00, 0xcd, 0x9c, 0x00, 0x00, 0xcd, 0xbc, +0x00, 0x00, 0xcd, 0xdc, 0x00, 0x00, 0xcd, 0xfc, +0x00, 0x00, 0xce, 0x1c, 0x00, 0x00, 0xce, 0x34, +0x00, 0x00, 0xce, 0x54, 0x00, 0x00, 0xce, 0x74, +0x00, 0x00, 0xce, 0x94, 0x00, 0x00, 0xce, 0xb4, +0x00, 0x00, 0xce, 0xd4, 0x00, 0x00, 0xce, 0xf4, +0x00, 0x00, 0xcf, 0x14, 0x00, 0x00, 0xcf, 0x34, +0x00, 0x00, 0xcf, 0x4c, 0x00, 0x00, 0xcf, 0x64, +0x00, 0x00, 0xcf, 0x7c, 0x00, 0x00, 0xcf, 0x94, +0x00, 0x00, 0xcf, 0xac, 0x00, 0x00, 0xcf, 0xc4, +0x00, 0x00, 0xcf, 0xdc, 0x00, 0x00, 0xcf, 0xf4, +0x00, 0x00, 0xd0, 0x0c, 0x00, 0x00, 0xd0, 0x24, +0x00, 0x00, 0xd0, 0x3c, 0x00, 0x00, 0xd0, 0x54, +0x00, 0x00, 0xd0, 0x6c, 0x00, 0x00, 0xd0, 0x84, +0x00, 0x00, 0xd0, 0x9c, 0x00, 0x00, 0xd0, 0xb4, +0x00, 0x00, 0xd0, 0xcc, 0x00, 0x00, 0xd0, 0xe4, +0x00, 0x00, 0xd0, 0xfc, 0x00, 0x00, 0xd1, 0x14, +0x00, 0x00, 0xd1, 0x2c, 0x00, 0x00, 0xd1, 0x44, +0x00, 0x00, 0xd1, 0x5c, 0x00, 0x00, 0xd1, 0x74, +0x00, 0x00, 0xd1, 0x8c, 0x00, 0x00, 0xd1, 0xa4, +0x00, 0x00, 0xd1, 0xbc, 0x00, 0x00, 0xd1, 0xd4, +0x00, 0x00, 0xd1, 0xec, 0x00, 0x00, 0xd2, 0x04, +0x00, 0x00, 0xd2, 0x1c, 0x00, 0x00, 0xd2, 0x34, +0x00, 0x00, 0xd2, 0x4c, 0x00, 0x00, 0xd2, 0x64, +0x00, 0x00, 0xd2, 0x7c, 0x00, 0x00, 0xd2, 0x94, +0x00, 0x00, 0xd2, 0xac, 0x00, 0x00, 0xd2, 0xc4, +0x00, 0x00, 0xd2, 0xdc, 0x00, 0x00, 0xd2, 0xf4, +0x00, 0x00, 0xd3, 0x0c, 0x00, 0x00, 0xd3, 0x24, +0x00, 0x00, 0xd3, 0x3c, 0x00, 0x00, 0xd3, 0x54, +0x00, 0x00, 0xd3, 0x6c, 0x00, 0x00, 0xd3, 0x84, +0x00, 0x00, 0xd3, 0x9c, 0x00, 0x00, 0xd3, 0xb4, +0x00, 0x00, 0xd3, 0xcc, 0x00, 0x00, 0xd3, 0xe4, +0x00, 0x00, 0xd3, 0xfc, 0x00, 0x00, 0xd4, 0x14, +0x00, 0x00, 0xd4, 0x2c, 0x00, 0x00, 0xd4, 0x44, +0x00, 0x00, 0xd4, 0x5c, 0x00, 0x00, 0xd4, 0x74, +0x00, 0x00, 0xd4, 0x8c, 0x00, 0x00, 0xd4, 0xa4, +0x00, 0x00, 0xd4, 0xbc, 0x00, 0x00, 0xd4, 0xd4, +0x00, 0x00, 0xd4, 0xec, 0x00, 0x00, 0xd5, 0x04, +0x00, 0x00, 0xd5, 0x1c, 0x00, 0x00, 0xd5, 0x34, +0x00, 0x00, 0xd5, 0x4c, 0x00, 0x00, 0xd5, 0x64, +0x00, 0x00, 0xd5, 0x7c, 0x00, 0x00, 0xd5, 0x94, +0x00, 0x00, 0xd5, 0xac, 0x00, 0x00, 0xd5, 0xc4, +0x00, 0x00, 0xd5, 0xdc, 0x00, 0x00, 0xd5, 0xf4, +0x00, 0x00, 0xd6, 0x0c, 0x00, 0x00, 0xd6, 0x24, +0x00, 0x00, 0xd6, 0x3c, 0x00, 0x00, 0xd6, 0x54, +0x00, 0x00, 0xd6, 0x6c, 0x00, 0x00, 0xd6, 0x84, +0x00, 0x00, 0xd6, 0x9c, 0x00, 0x00, 0xd6, 0xb4, +0x00, 0x00, 0xd6, 0xcc, 0x00, 0x00, 0xd6, 0xe4, +0x00, 0x00, 0xd6, 0xfc, 0x00, 0x00, 0xd7, 0x14, +0x00, 0x00, 0xd7, 0x2c, 0x00, 0x00, 0xd7, 0x44, +0x00, 0x00, 0xd7, 0x64, 0x00, 0x00, 0xd7, 0x84, +0x00, 0x00, 0xd7, 0xa4, 0x00, 0x00, 0xd7, 0xc4, +0x00, 0x00, 0xd7, 0xe4, 0x00, 0x00, 0xd8, 0x04, +0x00, 0x00, 0xd8, 0x24, 0x00, 0x00, 0xd8, 0x44, +0x00, 0x00, 0xd8, 0x64, 0x00, 0x00, 0xd8, 0x84, +0x00, 0x00, 0xd8, 0xa4, 0x00, 0x00, 0xd8, 0xbc, +0x00, 0x00, 0xd8, 0xdc, 0x00, 0x00, 0xd8, 0xfc, +0x00, 0x00, 0xd9, 0x1c, 0x00, 0x00, 0xd9, 0x3c, +0x00, 0x00, 0xd9, 0x5c, 0x00, 0x00, 0xd9, 0x7c, +0x00, 0x00, 0xd9, 0x9c, 0x00, 0x00, 0xd9, 0xbc, +0x00, 0x00, 0xd9, 0xdc, 0x00, 0x00, 0xd9, 0xfc, +0x00, 0x00, 0xda, 0x1c, 0x00, 0x00, 0xda, 0x34, +0x00, 0x00, 0xda, 0x54, 0x00, 0x00, 0xda, 0x74, +0x00, 0x00, 0xda, 0x94, 0x00, 0x00, 0xda, 0xb4, +0x00, 0x00, 0xda, 0xd4, 0x00, 0x00, 0xda, 0xf4, +0x00, 0x00, 0xdb, 0x14, 0x00, 0x00, 0xdb, 0x34, +0x00, 0x00, 0xdb, 0x54, 0x00, 0x00, 0xdb, 0x74, +0x00, 0x00, 0xdb, 0x94, 0x00, 0x00, 0xdc, 0x80, +0x00, 0x00, 0xdd, 0x40, 0x00, 0x00, 0xdd, 0xf4, +0x00, 0x00, 0xde, 0x50, 0x00, 0x00, 0xde, 0xc4, +0x00, 0x00, 0xde, 0xdc, 0x00, 0x00, 0xde, 0xf0, +0x00, 0x00, 0xdf, 0x04, 0x00, 0x00, 0xdf, 0x2c, +0x00, 0x00, 0xdf, 0x60, 0x00, 0x00, 0xdf, 0x74, +0x00, 0x00, 0xdf, 0xa8, 0x00, 0x00, 0xdf, 0xbc, +0x00, 0x00, 0xdf, 0xd0, 0x00, 0x00, 0xe0, 0x28, +0x00, 0x00, 0xe0, 0x3c, 0x00, 0x00, 0xe0, 0x50, +0x00, 0x00, 0xe0, 0x64, 0x00, 0x00, 0xe0, 0x78, +0x00, 0x00, 0xe0, 0x8c, 0x00, 0x00, 0xe0, 0xa0, +0x00, 0x00, 0xe0, 0xb4, 0x00, 0x00, 0xe0, 0xc8, +0x00, 0x00, 0xe0, 0xdc, 0x00, 0x00, 0xe0, 0xf0, +0x00, 0x00, 0xe1, 0x04, 0x00, 0x00, 0xe1, 0x18, +0x00, 0x00, 0xe1, 0x2c, 0x00, 0x00, 0xe1, 0x40, +0x00, 0x00, 0xe1, 0x54, 0x00, 0x00, 0xe1, 0xac, +0x00, 0x00, 0xe2, 0x08, 0x00, 0x00, 0xe2, 0x3c, +0x00, 0x00, 0xe2, 0x4c, 0x00, 0x00, 0xe2, 0xa8, +0x00, 0x00, 0xe3, 0x04, 0x00, 0x00, 0xe3, 0x54, +0x00, 0x00, 0xe3, 0xa4, 0x00, 0x00, 0xe4, 0x80, +0x00, 0x00, 0xe5, 0x58, 0x00, 0x00, 0xe5, 0x68, +0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0xe6, 0x10, +0x00, 0x00, 0xe6, 0x20, 0x00, 0x00, 0xe6, 0xe0, +0x00, 0x00, 0xe6, 0xf0, 0x00, 0x00, 0xe8, 0x0c, +0x00, 0x00, 0xe9, 0x7c, 0x00, 0x00, 0xe9, 0xe8, +0x00, 0x00, 0xea, 0xc8, 0x00, 0x00, 0xeb, 0x58, +0x00, 0x00, 0xeb, 0x70, 0x00, 0x00, 0xec, 0x20, +0x00, 0x00, 0xec, 0xe4, 0x00, 0x00, 0xed, 0x28, +0x00, 0x00, 0xed, 0xc4, 0x00, 0x00, 0xed, 0xd4, +0x00, 0x00, 0xed, 0xe4, 0x00, 0x00, 0xed, 0xf4, +0x00, 0x00, 0xee, 0x04, 0x00, 0x00, 0xee, 0x14, +0x00, 0x00, 0xee, 0x24, 0x00, 0x00, 0xee, 0x34, +0x00, 0x00, 0xee, 0xcc, 0x00, 0x00, 0xef, 0x8c, +0x00, 0x00, 0xef, 0x9c, 0x00, 0x00, 0xf0, 0x0c, +0x00, 0x00, 0xf0, 0x90, 0x00, 0x00, 0xf1, 0x08, +0x00, 0x00, 0xf1, 0x88, 0x00, 0x00, 0xf2, 0x18, +0x00, 0x00, 0xf2, 0xb8, 0x00, 0x00, 0xf3, 0x38, +0x00, 0x00, 0xf3, 0xe8, 0x00, 0x00, 0xf4, 0xd4, +0x00, 0x00, 0xf5, 0x80, 0x00, 0x00, 0xf5, 0x98, +0x00, 0x00, 0xf5, 0xb0, 0x00, 0x00, 0xf6, 0x78, +0x00, 0x00, 0xf6, 0x90, 0x00, 0x00, 0xf7, 0x44, +0x00, 0x00, 0xf7, 0x54, 0x00, 0x00, 0xf7, 0x64, +0x00, 0x00, 0xf7, 0x7c, 0x00, 0x00, 0xf8, 0x10, +0x00, 0x00, 0xf8, 0x20, 0x00, 0x00, 0xf8, 0xfc, +0x00, 0x00, 0xf9, 0xc0, 0x00, 0x00, 0xfa, 0x50, +0x00, 0x00, 0xfa, 0x68, 0x00, 0x00, 0xfb, 0x3c, +0x00, 0x00, 0xfb, 0x8c, 0x00, 0x00, 0xfb, 0xa4, +0x00, 0x00, 0xfb, 0xbc, 0x00, 0x00, 0xfc, 0x2c, +0x00, 0x00, 0xfc, 0xc8, 0x00, 0x00, 0xfd, 0x78, +0x00, 0x00, 0xfe, 0x1c, 0x00, 0x00, 0xfe, 0x78, +0x00, 0x00, 0xff, 0x00, 0x00, 0x01, 0x00, 0x38, +0x00, 0x01, 0x02, 0x04, 0x00, 0x01, 0x02, 0xbc, +0x00, 0x01, 0x03, 0xb4, 0x00, 0x01, 0x04, 0x7c, +0x00, 0x01, 0x05, 0x54, 0x00, 0x01, 0x05, 0xd0, +0x00, 0x01, 0x06, 0x80, 0x00, 0x01, 0x07, 0x84, +0x00, 0x01, 0x07, 0xf4, 0x00, 0x01, 0x08, 0x80, +0x00, 0x01, 0x09, 0x30, 0x00, 0x01, 0x09, 0x40, +0x00, 0x01, 0x09, 0xe4, 0x00, 0x01, 0x0a, 0xb0, +0x00, 0x01, 0x0b, 0x50, 0x00, 0x01, 0x0b, 0xd4, +0x00, 0x01, 0x0b, 0xe4, 0x00, 0x01, 0x0b, 0xfc, +0x00, 0x01, 0x0d, 0xb4, 0x00, 0x01, 0x0e, 0x64, +0x00, 0x01, 0x0e, 0x7c, 0x00, 0x01, 0x0e, 0x8c, +0x00, 0x01, 0x0e, 0xa4, 0x00, 0x01, 0x0e, 0xb4, +0x00, 0x01, 0x0e, 0xcc, 0x00, 0x01, 0x0e, 0xe4, +0x00, 0x01, 0x0e, 0xf4, 0x00, 0x01, 0x0f, 0x0c, +0x00, 0x01, 0x0f, 0x24, 0x00, 0x01, 0x0f, 0x34, +0x00, 0x01, 0x10, 0x28, 0x00, 0x01, 0x10, 0xdc, +0x00, 0x01, 0x11, 0x2c, 0x00, 0x01, 0x11, 0xd8, +0x00, 0x01, 0x11, 0xe8, 0x00, 0x01, 0x12, 0xf0, +0x00, 0x01, 0x14, 0x90, 0x00, 0x01, 0x14, 0xf0, +0x00, 0x01, 0x15, 0xc8, 0x00, 0x01, 0x16, 0x60, +0x00, 0x01, 0x16, 0x78, 0x00, 0x01, 0x17, 0x20, +0x00, 0x01, 0x17, 0xf0, 0x00, 0x01, 0x18, 0x2c, +0x00, 0x01, 0x18, 0xb8, 0x00, 0x01, 0x19, 0x84, +0x00, 0x01, 0x19, 0xf0, 0x00, 0x01, 0x1a, 0x00, +0x00, 0x01, 0x1a, 0x58, 0x00, 0x01, 0x1a, 0x68, +0x00, 0x01, 0x1a, 0x78, 0x00, 0x01, 0x1a, 0xd0, +0x00, 0x01, 0x1a, 0xe0, 0x00, 0x01, 0x1c, 0x78, +0x00, 0x01, 0x1c, 0x88, 0x00, 0x01, 0x1c, 0xf8, +0x00, 0x01, 0x1d, 0x74, 0x00, 0x01, 0x1d, 0xe8, +0x00, 0x01, 0x1e, 0x68, 0x00, 0x01, 0x1e, 0xf0, +0x00, 0x01, 0x1f, 0x88, 0x00, 0x01, 0x20, 0x00, +0x00, 0x01, 0x20, 0xa8, 0x00, 0x01, 0x21, 0x90, +0x00, 0x01, 0x22, 0x2c, 0x00, 0x01, 0x22, 0x44, +0x00, 0x01, 0x22, 0x5c, 0x00, 0x01, 0x23, 0x58, +0x00, 0x01, 0x23, 0x70, 0x00, 0x01, 0x24, 0x18, +0x00, 0x01, 0x24, 0x28, 0x00, 0x01, 0x24, 0x38, +0x00, 0x01, 0x24, 0x50, 0x00, 0x01, 0x24, 0xe8, +0x00, 0x01, 0x24, 0xf8, 0x00, 0x01, 0x25, 0xc8, +0x00, 0x01, 0x26, 0x68, 0x00, 0x01, 0x26, 0x78, +0x00, 0x01, 0x26, 0x90, 0x00, 0x01, 0x27, 0x6c, +0x00, 0x01, 0x27, 0xb8, 0x00, 0x01, 0x27, 0xd0, +0x00, 0x01, 0x27, 0xe8, 0x00, 0x01, 0x28, 0x58, +0x00, 0x01, 0x28, 0xec, 0x00, 0x01, 0x28, 0xfc, +0x00, 0x01, 0x29, 0x98, 0x00, 0x01, 0x29, 0xec, +0x00, 0x01, 0x2a, 0x64, 0x00, 0x01, 0x2b, 0x88, +0x00, 0x01, 0x2d, 0x0c, 0x00, 0x01, 0x2d, 0xb8, +0x00, 0x01, 0x2e, 0xa0, 0x00, 0x01, 0x2f, 0x68, +0x00, 0x01, 0x30, 0x24, 0x00, 0x01, 0x30, 0x98, +0x00, 0x01, 0x31, 0x4c, 0x00, 0x01, 0x32, 0x2c, +0x00, 0x01, 0x32, 0x7c, 0x00, 0x01, 0x33, 0x00, +0x00, 0x01, 0x33, 0xb4, 0x00, 0x01, 0x34, 0x40, +0x00, 0x01, 0x34, 0xe4, 0x00, 0x01, 0x35, 0xac, +0x00, 0x01, 0x36, 0x40, 0x00, 0x01, 0x36, 0x50, +0x00, 0x01, 0x36, 0x68, 0x00, 0x01, 0x38, 0x4c, +0x00, 0x01, 0x38, 0xf4, 0x00, 0x01, 0x39, 0x04, +0x00, 0x01, 0x39, 0x1c, 0x00, 0x01, 0x39, 0x2c, +0x00, 0x01, 0x39, 0x44, 0x00, 0x01, 0x39, 0x54, +0x00, 0x01, 0x39, 0x6c, 0x00, 0x01, 0x39, 0x84, +0x00, 0x01, 0x39, 0x94, 0x00, 0x01, 0x39, 0xac, +0x00, 0x01, 0x39, 0xc4, 0x00, 0x01, 0x3a, 0xcc, +0x00, 0x01, 0x3c, 0x30, 0x00, 0x01, 0x3d, 0x9c, +0x00, 0x01, 0x3e, 0x1c, 0x00, 0x01, 0x3e, 0x90, +0x00, 0x01, 0x3f, 0x2c, 0x00, 0x01, 0x40, 0x18, +0x00, 0x01, 0x40, 0xc0, 0x00, 0x01, 0x41, 0x84, +0x00, 0x01, 0x42, 0x54, 0x00, 0x01, 0x42, 0xc4, +0x00, 0x01, 0x43, 0xe8, 0x00, 0x01, 0x44, 0xb8, +0x00, 0x01, 0x45, 0x68, 0x00, 0x01, 0x46, 0x24, +0x00, 0x01, 0x46, 0xa4, 0x00, 0x01, 0x47, 0x00, +0x00, 0x01, 0x47, 0xa0, 0x00, 0x01, 0x47, 0xb0, +0x00, 0x01, 0x47, 0xc0, 0x00, 0x01, 0x47, 0xd0, +0x00, 0x01, 0x47, 0xe0, 0x00, 0x01, 0x48, 0x50, +0x00, 0x01, 0x48, 0x60, 0x00, 0x01, 0x48, 0x70, +0x00, 0x01, 0x49, 0x24, 0x00, 0x01, 0x49, 0xdc, +0x00, 0x01, 0x4a, 0x5c, 0x00, 0x01, 0x4a, 0xd0, +0x00, 0x01, 0x4b, 0x70, 0x00, 0x01, 0x4c, 0x50, +0x00, 0x01, 0x4c, 0xe4, 0x00, 0x01, 0x4d, 0x98, +0x00, 0x01, 0x4d, 0xa8, 0x00, 0x01, 0x4e, 0x04, +0x00, 0x01, 0x4e, 0x14, 0x00, 0x01, 0x4e, 0xd0, +0x00, 0x01, 0x4e, 0xe0, 0x00, 0x01, 0x4f, 0x3c, +0x00, 0x01, 0x4f, 0xdc, 0x00, 0x01, 0x4f, 0xec, +0x00, 0x01, 0x4f, 0xfc, 0x00, 0x01, 0x50, 0x0c, +0x00, 0x01, 0x50, 0x1c, 0x00, 0x01, 0x50, 0x78, +0x00, 0x01, 0x50, 0x88, 0x00, 0x01, 0x50, 0x98, +0x00, 0x01, 0x51, 0x18, 0x00, 0x01, 0x51, 0x8c, +0x00, 0x01, 0x52, 0x2c, 0x00, 0x01, 0x53, 0x1c, +0x00, 0x01, 0x53, 0xbc, 0x00, 0x01, 0x54, 0x7c, +0x00, 0x01, 0x55, 0x4c, 0x00, 0x01, 0x55, 0xbc, +0x00, 0x01, 0x56, 0xe0, 0x00, 0x01, 0x57, 0xac, +0x00, 0x01, 0x57, 0xf0, 0x00, 0x01, 0x58, 0x44, +0x00, 0x01, 0x58, 0x5c, 0x00, 0x01, 0x58, 0x74, +0x00, 0x01, 0x58, 0x94, 0x00, 0x01, 0x58, 0xf0, +0x00, 0x01, 0x59, 0x4c, 0x00, 0x01, 0x59, 0xf4, +0x00, 0x01, 0x5a, 0x9c, 0x00, 0x01, 0x5a, 0xc8, +0x00, 0x01, 0x5a, 0xe0, 0x00, 0x01, 0x5b, 0x2c, +0x00, 0x01, 0x5b, 0x78, 0x00, 0x01, 0x5b, 0x90, +0x00, 0x01, 0x5b, 0xa8, 0x00, 0x01, 0x5b, 0xbc, +0x00, 0x01, 0x5b, 0xd8, 0x00, 0x01, 0x5c, 0x08, +0x00, 0x01, 0x5c, 0x38, 0x00, 0x01, 0x5c, 0x50, +0x00, 0x01, 0x5c, 0x68, 0x00, 0x01, 0x5c, 0x90, +0x00, 0x01, 0x5c, 0xa0, 0x00, 0x01, 0x5c, 0xc8, +0x00, 0x01, 0x5c, 0xf0, 0x00, 0x01, 0x5d, 0x18, +0x00, 0x01, 0x5d, 0x40, 0x00, 0x01, 0x5d, 0x68, +0x00, 0x01, 0x5d, 0x78, 0x00, 0x01, 0x5d, 0x8c, +0x00, 0x01, 0x5d, 0xd8, 0x00, 0x01, 0x5e, 0x00, +0x00, 0x01, 0x5e, 0x28, 0x00, 0x01, 0x5e, 0x6c, +0x00, 0x01, 0x5e, 0xb0, 0x00, 0x01, 0x5e, 0xf0, +0x00, 0x01, 0x5f, 0x28, 0x00, 0x01, 0x5f, 0x60, +0x00, 0x01, 0x60, 0x20, 0x00, 0x01, 0x60, 0xd4, +0x00, 0x01, 0x61, 0x08, 0x00, 0x01, 0x61, 0x2c, +0x00, 0x01, 0x61, 0x60, 0x00, 0x01, 0x61, 0x90, +0x00, 0x01, 0x61, 0xe0, 0x00, 0x01, 0x62, 0x34, +0x00, 0x01, 0x62, 0xc8, 0x00, 0x01, 0x63, 0xac, +0x00, 0x01, 0x64, 0x10, 0x00, 0x01, 0x64, 0x54, +0x00, 0x01, 0x64, 0x6c, 0x00, 0x01, 0x64, 0x84, +0x00, 0x01, 0x64, 0x9c, 0x00, 0x01, 0x64, 0xb4, +0x00, 0x01, 0x65, 0x78, 0x00, 0x01, 0x65, 0xa4, +0x00, 0x01, 0x65, 0xd0, 0x00, 0x01, 0x65, 0xfc, +0x00, 0x01, 0x66, 0x28, 0x00, 0x01, 0x66, 0x80, +0x00, 0x01, 0x66, 0xd8, 0x00, 0x01, 0x67, 0x04, +0x00, 0x01, 0x67, 0x30, 0x00, 0x01, 0x67, 0x5c, +0x00, 0x01, 0x67, 0x88, 0x00, 0x01, 0x68, 0x90, +0x00, 0x01, 0x69, 0x74, 0x00, 0x01, 0x6a, 0x80, +0x00, 0x01, 0x6b, 0x34, 0x00, 0x01, 0x6c, 0x5c, +0x00, 0x01, 0x6d, 0x38, 0x00, 0x01, 0x6d, 0xfc, +0x00, 0x01, 0x6f, 0x44, 0x00, 0x01, 0x70, 0x9c, +0x00, 0x01, 0x71, 0x94, 0x00, 0x01, 0x71, 0xa4, +0x00, 0x01, 0x72, 0x3c, 0x00, 0x01, 0x73, 0x00, +0x00, 0x01, 0x73, 0x98, 0x00, 0x01, 0x74, 0x18, +0x00, 0x01, 0x74, 0x94, 0x00, 0x01, 0x74, 0xf4, +0x00, 0x01, 0x75, 0xa8, 0x00, 0x01, 0x76, 0x24, +0x00, 0x01, 0x76, 0x64, 0x00, 0x01, 0x76, 0xcc, +0x00, 0x01, 0x77, 0x68, 0x00, 0x01, 0x77, 0xb4, +0x00, 0x01, 0x78, 0x7c, 0x00, 0x01, 0x79, 0x1c, +0x00, 0x01, 0x79, 0xc0, 0x00, 0x01, 0x7a, 0x38, +0x00, 0x01, 0x7b, 0x18, 0x00, 0x01, 0x7b, 0xbc, +0x00, 0x01, 0x7c, 0x94, 0x00, 0x01, 0x7c, 0xec, +0x00, 0x01, 0x7d, 0x70, 0x00, 0x01, 0x7d, 0xe0, +0x00, 0x01, 0x7e, 0xa8, 0x00, 0x01, 0x7f, 0x70, +0x00, 0x01, 0x7f, 0xe4, 0x00, 0x01, 0x80, 0x58, +0x00, 0x01, 0x80, 0x70, 0x00, 0x01, 0x80, 0x88, +0x00, 0x01, 0x80, 0xa0, 0x00, 0x01, 0x80, 0xb8, +0x00, 0x01, 0x80, 0xd0, 0x00, 0x01, 0x80, 0xe8, +0x00, 0x01, 0x81, 0x00, 0x00, 0x01, 0x81, 0x18, +0x00, 0x01, 0x81, 0x30, 0x00, 0x01, 0x81, 0x48, +0x00, 0x01, 0x81, 0x60, 0x00, 0x01, 0x81, 0x78, +0x00, 0x01, 0x81, 0x90, 0x00, 0x01, 0x81, 0xa8, +0x00, 0x01, 0x81, 0xc0, 0x00, 0x01, 0x81, 0xe0, +0x00, 0x01, 0x81, 0xf8, 0x00, 0x01, 0x82, 0x10, +0x00, 0x01, 0x82, 0x28, 0x00, 0x01, 0x82, 0x40, +0x00, 0x01, 0x82, 0x60, 0x00, 0x01, 0x83, 0x30, +0x00, 0x01, 0x83, 0xe8, 0x00, 0x01, 0x84, 0x00, +0x00, 0x01, 0x84, 0x18, 0x00, 0x01, 0x84, 0xfc, +0x00, 0x01, 0x85, 0x14, 0x00, 0x01, 0x85, 0x2c, +0x00, 0x01, 0x85, 0x44, 0x00, 0x01, 0x85, 0x5c, +0x00, 0x01, 0x85, 0x74, 0x00, 0x01, 0x85, 0x8c, +0x00, 0x01, 0x85, 0xa4, 0x00, 0x01, 0x85, 0xbc, +0x00, 0x01, 0x85, 0xd4, 0x00, 0x01, 0x85, 0xe4, +0x00, 0x01, 0x85, 0xfc, 0x00, 0x01, 0x86, 0x14, +0x00, 0x01, 0x86, 0x2c, 0x00, 0x01, 0x86, 0x44, +0x00, 0x01, 0x86, 0x5c, 0x00, 0x01, 0x86, 0x74, +0x00, 0x01, 0x86, 0x8c, 0x00, 0x01, 0x86, 0xa4, +0x00, 0x01, 0x86, 0xbc, 0x00, 0x01, 0x86, 0xd4, +0x00, 0x01, 0x86, 0xec, 0x00, 0x01, 0x87, 0x04, +0x00, 0x01, 0x87, 0x1c, 0x00, 0x01, 0x87, 0x34, +0x00, 0x01, 0x87, 0x4c, 0x00, 0x01, 0x87, 0x6c, +0x00, 0x01, 0x88, 0x2c, 0x00, 0x01, 0x88, 0x44, +0x00, 0x01, 0x88, 0x5c, 0x00, 0x01, 0x88, 0x74, +0x00, 0x01, 0x88, 0x8c, 0x00, 0x01, 0x88, 0xa4, +0x00, 0x01, 0x88, 0xbc, 0x00, 0x01, 0x88, 0xd4, +0x00, 0x01, 0x88, 0xec, 0x00, 0x01, 0x89, 0x04, +0x00, 0x01, 0x89, 0xec, 0x00, 0x01, 0x8a, 0x04, +0x00, 0x01, 0x8a, 0x1c, 0x00, 0x01, 0x8a, 0x34, +0x00, 0x01, 0x8a, 0xf0, 0x00, 0x01, 0x8b, 0x08, +0x00, 0x01, 0x8b, 0x20, 0x00, 0x01, 0x8b, 0x38, +0x00, 0x01, 0x8b, 0x50, 0x00, 0x01, 0x8b, 0x68, +0x00, 0x01, 0x8b, 0x80, 0x00, 0x01, 0x8b, 0x98, +0x00, 0x01, 0x8b, 0xb0, 0x00, 0x01, 0x8b, 0xc8, +0x00, 0x01, 0x8b, 0xe0, 0x00, 0x01, 0x8c, 0x5c, +0x00, 0x01, 0x8c, 0x74, 0x00, 0x01, 0x8c, 0x8c, +0x00, 0x01, 0x8c, 0xa4, 0x00, 0x01, 0x8c, 0xbc, +0x00, 0x01, 0x8c, 0xd4, 0x00, 0x01, 0x8c, 0xec, +0x00, 0x01, 0x8d, 0x04, 0x00, 0x01, 0x8d, 0x1c, +0x00, 0x01, 0x8d, 0x34, 0x00, 0x01, 0x8d, 0x4c, +0x00, 0x01, 0x8d, 0x6c, 0x00, 0x01, 0x8d, 0x84, +0x00, 0x01, 0x8e, 0x18, 0x00, 0x01, 0x8e, 0x30, +0x00, 0x01, 0x8e, 0x48, 0x00, 0x01, 0x8e, 0x60, +0x00, 0x01, 0x8e, 0x78, 0x00, 0x01, 0x8e, 0x90, +0x00, 0x01, 0x8e, 0xa8, 0x00, 0x01, 0x8e, 0xc0, +0x00, 0x01, 0x8e, 0xd8, 0x00, 0x01, 0x8e, 0xf0, +0x00, 0x01, 0x8f, 0x08, 0x00, 0x01, 0x8f, 0x20, +0x00, 0x01, 0x8f, 0x38, 0x00, 0x01, 0x8f, 0x50, +0x00, 0x01, 0x8f, 0x68, 0x00, 0x01, 0x8f, 0x80, +0x00, 0x01, 0x8f, 0x98, 0x00, 0x01, 0x8f, 0xb0, +0x00, 0x01, 0x8f, 0xc8, 0x00, 0x01, 0x8f, 0xe0, +0x00, 0x01, 0x8f, 0xf8, 0x00, 0x01, 0x90, 0x10, +0x00, 0x01, 0x90, 0x28, 0x00, 0x01, 0x90, 0x40, +0x00, 0x01, 0x90, 0x58, 0x00, 0x01, 0x90, 0x70, +0x00, 0x01, 0x90, 0x90, 0x00, 0x01, 0x91, 0xa8, +0x00, 0x01, 0x92, 0x54, 0x00, 0x01, 0x93, 0x2c, +0x00, 0x01, 0x93, 0x44, 0x00, 0x01, 0x93, 0x5c, +0x00, 0x01, 0x93, 0x74, 0x00, 0x01, 0x93, 0x8c, +0x00, 0x01, 0x93, 0xa4, 0x00, 0x01, 0x94, 0x88, +0x00, 0x01, 0x94, 0xa0, 0x00, 0x01, 0x94, 0xb8, +0x00, 0x01, 0x94, 0xd0, 0x00, 0x01, 0x94, 0xe8, +0x00, 0x01, 0x95, 0x00, 0x00, 0x01, 0x95, 0x18, +0x00, 0x01, 0x95, 0x30, 0x00, 0x01, 0x95, 0x50, +0x00, 0x01, 0x95, 0x68, 0x00, 0x01, 0x95, 0x80, +0x00, 0x01, 0x95, 0x98, 0x00, 0x01, 0x95, 0xb0, +0x00, 0x01, 0x95, 0xc8, 0x00, 0x01, 0x95, 0xe0, +0x00, 0x01, 0x95, 0xf8, 0x00, 0x01, 0x96, 0x10, +0x00, 0x01, 0x96, 0x28, 0x00, 0x01, 0x97, 0x08, +0x00, 0x01, 0x97, 0x20, 0x00, 0x01, 0x97, 0x38, +0x00, 0x01, 0x97, 0x50, 0x00, 0x01, 0x97, 0x68, +0x00, 0x01, 0x97, 0x80, 0x00, 0x01, 0x98, 0x08, +0x00, 0x01, 0x98, 0x20, 0x00, 0x01, 0x98, 0x38, +0x00, 0x01, 0x98, 0x50, 0x00, 0x01, 0x98, 0x68, +0x00, 0x01, 0x98, 0x80, 0x00, 0x01, 0x98, 0x98, +0x00, 0x01, 0x98, 0xb0, 0x00, 0x01, 0x98, 0xc8, +0x00, 0x01, 0x98, 0xe0, 0x00, 0x01, 0x98, 0xf8, +0x00, 0x01, 0x99, 0x10, 0x00, 0x01, 0x99, 0x28, +0x00, 0x01, 0x99, 0x40, 0x00, 0x01, 0x99, 0x58, +0x00, 0x01, 0x99, 0x70, 0x00, 0x01, 0x99, 0x88, +0x00, 0x01, 0x9a, 0x48, 0x00, 0x01, 0x9a, 0xfc, +0x00, 0x01, 0x9b, 0x14, 0x00, 0x01, 0x9b, 0x2c, +0x00, 0x01, 0x9b, 0x44, 0x00, 0x01, 0x9b, 0x5c, +0x00, 0x01, 0x9b, 0x74, 0x00, 0x01, 0x9b, 0x8c, +0x00, 0x01, 0x9b, 0xa4, 0x00, 0x01, 0x9b, 0xbc, +0x00, 0x01, 0x9b, 0xd4, 0x00, 0x01, 0x9b, 0xec, +0x00, 0x01, 0x9c, 0x04, 0x00, 0x01, 0x9c, 0x1c, +0x00, 0x01, 0x9c, 0x34, 0x00, 0x01, 0x9c, 0x4c, +0x00, 0x01, 0x9c, 0x64, 0x00, 0x01, 0x9c, 0x7c, +0x00, 0x01, 0x9c, 0x94, 0x00, 0x01, 0x9c, 0xac, +0x00, 0x01, 0x9c, 0xc4, 0x00, 0x01, 0x9c, 0xdc, +0x00, 0x01, 0x9c, 0xf4, 0x00, 0x01, 0x9d, 0x0c, +0x00, 0x01, 0x9d, 0xc0, 0x00, 0x01, 0x9e, 0x3c, +0x00, 0x01, 0x9f, 0x00, 0x00, 0x01, 0x9f, 0xd4, +0x00, 0x01, 0xa0, 0x50, 0x00, 0x01, 0xa1, 0x0c, +0x00, 0x01, 0xa1, 0x1c, 0x00, 0x01, 0xa1, 0x2c, +0x00, 0x01, 0xa1, 0x7c, 0x00, 0x01, 0xa1, 0xe8, +0x00, 0x01, 0xa1, 0xf8, 0x00, 0x01, 0xa2, 0x08, +0x00, 0x01, 0xa2, 0x18, 0x00, 0x01, 0xa2, 0xdc, +0x00, 0x01, 0xa2, 0xec, 0x00, 0x01, 0xa2, 0xfc, +0x00, 0x01, 0xa3, 0x68, 0x00, 0x01, 0xa3, 0x78, +0x00, 0x01, 0xa3, 0x88, 0x00, 0x01, 0xa4, 0x00, +0x00, 0x01, 0xa4, 0x10, 0x00, 0x01, 0xa4, 0x68, +0x00, 0x01, 0xa4, 0x78, 0x00, 0x01, 0xa4, 0xec, +0x00, 0x01, 0xa4, 0xfc, 0x00, 0x01, 0xa5, 0x0c, +0x00, 0x01, 0xa5, 0xc8, 0x00, 0x01, 0xa5, 0xd8, +0x00, 0x01, 0xa6, 0x68, 0x00, 0x01, 0xa7, 0x48, +0x00, 0x01, 0xa7, 0x60, 0x00, 0x01, 0xa7, 0x78, +0x00, 0x01, 0xa8, 0x24, 0x00, 0x01, 0xa8, 0xb0, +0x00, 0x01, 0xa9, 0xa4, 0x00, 0x01, 0xa9, 0xb4, +0x00, 0x01, 0xaa, 0x4c, 0x00, 0x01, 0xaa, 0x5c, +0x00, 0x01, 0xaa, 0x6c, 0x00, 0x01, 0xab, 0x28, +0x00, 0x01, 0xab, 0x38, 0x00, 0x01, 0xac, 0x50, +0x00, 0x01, 0xad, 0x24, 0x00, 0x01, 0xad, 0xb0, +0x00, 0x01, 0xad, 0xc8, 0x00, 0x01, 0xae, 0x74, +0x00, 0x01, 0xaf, 0x0c, 0x00, 0x01, 0xaf, 0x1c, +0x00, 0x01, 0xaf, 0x2c, 0x00, 0x01, 0xaf, 0x3c, +0x00, 0x01, 0xaf, 0x4c, 0x00, 0x01, 0xaf, 0x5c, +0x00, 0x01, 0xaf, 0x6c, 0x00, 0x01, 0xaf, 0x7c, +0x00, 0x01, 0xb0, 0x10, 0x00, 0x01, 0xb0, 0xcc, +0x00, 0x01, 0xb0, 0xdc, 0x00, 0x01, 0xb1, 0x4c, +0x00, 0x01, 0xb1, 0xc8, 0x00, 0x01, 0xb2, 0x3c, +0x00, 0x01, 0xb2, 0xbc, 0x00, 0x01, 0xb3, 0x44, +0x00, 0x01, 0xb3, 0xdc, 0x00, 0x01, 0xb4, 0x54, +0x00, 0x01, 0xb5, 0x00, 0x00, 0x01, 0xb5, 0xec, +0x00, 0x01, 0xb6, 0x8c, 0x00, 0x01, 0xb6, 0xa4, +0x00, 0x01, 0xb6, 0xbc, 0x00, 0x01, 0xb7, 0x84, +0x00, 0x01, 0xb7, 0x9c, 0x00, 0x01, 0xb8, 0x4c, +0x00, 0x01, 0xb8, 0x5c, 0x00, 0x01, 0xb8, 0x6c, +0x00, 0x01, 0xb8, 0x84, 0x00, 0x01, 0xb9, 0x18, +0x00, 0x01, 0xb9, 0x28, 0x00, 0x01, 0xb9, 0xf8, +0x00, 0x01, 0xba, 0xb0, 0x00, 0x01, 0xbb, 0x40, +0x00, 0x01, 0xbb, 0x58, 0x00, 0x01, 0xbb, 0x70, +0x00, 0x01, 0xbb, 0x88, 0x00, 0x01, 0xbb, 0xec, +0x00, 0x01, 0xbc, 0x84, 0x00, 0x01, 0xbd, 0x44, +0x00, 0x01, 0xbd, 0xe4, 0x00, 0x01, 0xbe, 0x40, +0x00, 0x01, 0xbe, 0xc4, 0x00, 0x01, 0xbf, 0xf4, +0x00, 0x01, 0xc0, 0xe8, 0x00, 0x01, 0xc1, 0xac, +0x00, 0x01, 0xc2, 0x70, 0x00, 0x01, 0xc2, 0xf8, +0x00, 0x01, 0xc3, 0xa0, 0x00, 0x01, 0xc3, 0xb0, +0x00, 0x01, 0xc4, 0x50, 0x00, 0x01, 0xc5, 0x1c, +0x00, 0x01, 0xc5, 0xb4, 0x00, 0x01, 0xc6, 0x30, +0x00, 0x01, 0xc6, 0x40, 0x00, 0x01, 0xc6, 0x58, +0x00, 0x01, 0xc6, 0x70, 0x00, 0x01, 0xc6, 0x80, +0x00, 0x01, 0xc6, 0x98, 0x00, 0x01, 0xc6, 0xa8, +0x00, 0x01, 0xc6, 0xc0, 0x00, 0x01, 0xc6, 0xd8, +0x00, 0x01, 0xc6, 0xe8, 0x00, 0x01, 0xc7, 0x00, +0x00, 0x01, 0xc7, 0x18, 0x00, 0x01, 0xc8, 0x80, +0x00, 0x01, 0xc9, 0x00, 0x00, 0x01, 0xc9, 0x5c, +0x00, 0x01, 0xc9, 0xf4, 0x00, 0x01, 0xca, 0xc8, +0x00, 0x01, 0xcb, 0x68, 0x00, 0x01, 0xcc, 0x2c, +0x00, 0x01, 0xcc, 0xfc, 0x00, 0x01, 0xcd, 0x68, +0x00, 0x01, 0xce, 0x7c, 0x00, 0x01, 0xcf, 0x4c, +0x00, 0x01, 0xcf, 0xb8, 0x00, 0x01, 0xd0, 0x2c, +0x00, 0x01, 0xd0, 0xc8, 0x00, 0x01, 0xd1, 0x68, +0x00, 0x01, 0xd1, 0x78, 0x00, 0x01, 0xd1, 0x90, +0x00, 0x01, 0xd1, 0xa0, 0x00, 0x01, 0xd1, 0xb0, +0x00, 0x01, 0xd1, 0xc8, 0x00, 0x01, 0xd1, 0xe0, +0x00, 0x01, 0xd1, 0xf0, 0x00, 0x01, 0xd2, 0x18, +0x00, 0x01, 0xd2, 0x40, 0x00, 0x01, 0xd2, 0x84, +0x00, 0x01, 0xd2, 0xc4, 0x00, 0x01, 0xd2, 0xfc, +0x00, 0x01, 0xd3, 0x34, 0x00, 0x01, 0xd3, 0xf4, +0x00, 0x01, 0xd4, 0xa8, 0x00, 0x01, 0xd4, 0xbc, +0x00, 0x01, 0xd4, 0xd0, 0x00, 0x01, 0xd4, 0xe4, +0x00, 0x01, 0xd4, 0xf8, 0x00, 0x01, 0xd5, 0x0c, +0x00, 0x01, 0xd5, 0x20, 0x00, 0x01, 0xd5, 0x34, +0x00, 0x01, 0xd5, 0x48, 0x00, 0x01, 0xd5, 0x5c, +0x00, 0x01, 0xd5, 0x70, 0x00, 0x01, 0xd5, 0x84, +0x00, 0x01, 0xd5, 0x98, 0x00, 0x01, 0xd5, 0xac, +0x00, 0x01, 0xd5, 0xc0, 0x00, 0x01, 0xd5, 0xd4, +0x00, 0x01, 0xd5, 0xe8, 0x00, 0x01, 0xd5, 0xfc, +0x00, 0x01, 0xd6, 0x10, 0x00, 0x01, 0xd6, 0x24, +0x00, 0x01, 0xd6, 0x38, 0x00, 0x01, 0xd6, 0x4c, +0x00, 0x01, 0xd6, 0x60, 0x00, 0x01, 0xd6, 0x74, +0x00, 0x01, 0xd6, 0x88, 0x00, 0x01, 0xd6, 0x9c, +0x00, 0x01, 0xd6, 0xb0, 0x00, 0x01, 0xd6, 0xc4, +0x00, 0x01, 0xd6, 0xd8, 0x00, 0x01, 0xd7, 0x48, +0x00, 0x01, 0xd7, 0x90, 0x00, 0x01, 0xd8, 0x10, +0x00, 0x01, 0xd8, 0xc8, 0x00, 0x01, 0xd9, 0x50, +0x00, 0x01, 0xd9, 0xe8, 0x00, 0x01, 0xda, 0x98, +0x00, 0x01, 0xda, 0xf8, 0x00, 0x01, 0xdb, 0xe0, +0x00, 0x01, 0xdc, 0x8c, 0x00, 0x01, 0xdc, 0xd0, +0x00, 0x01, 0xdd, 0x10, 0x00, 0x01, 0xdd, 0x58, +0x00, 0x01, 0xdd, 0xc0, 0x00, 0x01, 0xdd, 0xd4, +0x00, 0x01, 0xdd, 0xe8, 0x00, 0x01, 0xdd, 0xfc, +0x00, 0x01, 0xde, 0x10, 0x00, 0x01, 0xde, 0x24, +0x00, 0x01, 0xde, 0x38, 0x00, 0x01, 0xde, 0x4c, +0x00, 0x01, 0xde, 0x60, 0x00, 0x01, 0xde, 0x74, +0x00, 0x01, 0xde, 0x88, 0x00, 0x01, 0xde, 0x9c, +0x00, 0x01, 0xde, 0xb0, 0x00, 0x01, 0xde, 0xc4, +0x00, 0x01, 0xde, 0xd8, 0x00, 0x01, 0xde, 0xe8, +0x00, 0x01, 0xde, 0xf8, 0x00, 0x01, 0xdf, 0x08, +0x00, 0x01, 0xdf, 0x78, 0x00, 0x01, 0xe0, 0x14, +0x00, 0x01, 0xe0, 0x90, 0x00, 0x01, 0xe0, 0xe8, +0x00, 0x01, 0xe1, 0x34, 0x00, 0x01, 0xe1, 0x74, +0x00, 0x01, 0xe2, 0x00, 0x00, 0x01, 0xe2, 0x44, +0x00, 0x01, 0xe2, 0x68, 0x00, 0x01, 0xe2, 0xb8, +0x00, 0x01, 0xe3, 0x1c, 0x00, 0x01, 0xe3, 0x48, +0x00, 0x01, 0xe3, 0xd8, 0x00, 0x01, 0xe4, 0x44, +0x00, 0x01, 0xe4, 0xc0, 0x00, 0x01, 0xe5, 0x1c, +0x00, 0x01, 0xe5, 0xcc, 0x00, 0x01, 0xe6, 0x40, +0x00, 0x01, 0xe6, 0xf8, 0x00, 0x01, 0xe7, 0x30, +0x00, 0x01, 0xe7, 0x98, 0x00, 0x01, 0xe7, 0xe8, +0x00, 0x01, 0xe8, 0x94, 0x00, 0x01, 0xe9, 0x28, +0x00, 0x01, 0xe9, 0x84, 0x00, 0x01, 0xe9, 0xd8, +0x00, 0x01, 0xea, 0x7c, 0x00, 0x01, 0xeb, 0x2c, +0x00, 0x01, 0xeb, 0xa4, 0x00, 0x01, 0xec, 0x4c, +0x00, 0x01, 0xec, 0xf0, 0x00, 0x01, 0xed, 0x64, +0x00, 0x01, 0xee, 0x94, 0x00, 0x01, 0xee, 0xf0, +0x00, 0x01, 0xef, 0x3c, 0x00, 0x01, 0xef, 0xb4, +0x00, 0x01, 0xf0, 0x18, 0x00, 0x01, 0xf0, 0x5c, +0x00, 0x01, 0xf1, 0x04, 0x00, 0x01, 0xf1, 0x74, +0x00, 0x01, 0xf1, 0xec, 0x00, 0x01, 0xf2, 0x98, +0x00, 0x01, 0xf3, 0x40, 0x00, 0x01, 0xf3, 0xa8, +0x00, 0x01, 0xf4, 0x70, 0x00, 0x01, 0xf4, 0xf4, +0x00, 0x01, 0xf5, 0x7c, 0x00, 0x01, 0xf5, 0xcc, +0x00, 0x01, 0xf6, 0x5c, 0x00, 0x01, 0xf6, 0xec, +0x00, 0x01, 0xf7, 0x84, 0x00, 0x01, 0xf7, 0xd4, +0x00, 0x01, 0xf8, 0x30, 0x00, 0x01, 0xf8, 0x78, +0x00, 0x01, 0xf8, 0x9c, 0x00, 0x01, 0xf8, 0xe8, +0x00, 0x01, 0xf9, 0xb0, 0x00, 0x01, 0xfa, 0x6c, +0x00, 0x01, 0xfb, 0x28, 0x00, 0x01, 0xfb, 0xbc, +0x00, 0x01, 0xfc, 0x78, 0x00, 0x01, 0xfd, 0x50, +0x00, 0x01, 0xfd, 0x74, 0x00, 0x01, 0xfd, 0xd4, +0x00, 0x01, 0xfd, 0xf8, 0x00, 0x01, 0xfe, 0x20, +0x00, 0x01, 0xfe, 0x48, 0x00, 0x01, 0xfe, 0xc0, +0x00, 0x01, 0xff, 0xac, 0x00, 0x02, 0x00, 0xc0, +0x00, 0x02, 0x01, 0x9c, 0x00, 0x02, 0x02, 0x60, +0x00, 0x02, 0x02, 0xf8, 0x00, 0x02, 0x04, 0x00, +0x00, 0x02, 0x04, 0xb4, 0x00, 0x02, 0x05, 0x60, +0x00, 0x02, 0x06, 0xb4, 0x00, 0x02, 0x07, 0xc0, +0x00, 0x02, 0x09, 0x28, 0x00, 0x02, 0x09, 0xf8, +0x00, 0x02, 0x0b, 0x20, 0x00, 0x02, 0x0b, 0xf8, +0x00, 0x02, 0x0d, 0x14, 0x00, 0x02, 0x0d, 0xfc, +0x00, 0x02, 0x0f, 0x18, 0x00, 0x02, 0x0f, 0xf0, +0x00, 0x02, 0x10, 0xb4, 0x00, 0x02, 0x11, 0x84, +0x00, 0x02, 0x12, 0x34, 0x00, 0x02, 0x12, 0xa0, +0x00, 0x02, 0x13, 0x70, 0x00, 0x02, 0x13, 0xa4, +0x00, 0x02, 0x13, 0xb4, 0x00, 0x02, 0x13, 0xc4, +0x00, 0x02, 0x13, 0xe8, 0x00, 0x02, 0x15, 0x40, +0x00, 0x02, 0x15, 0x64, 0x00, 0x02, 0x15, 0x88, +0x00, 0x02, 0x15, 0xac, 0x00, 0x02, 0x15, 0xd0, +0x00, 0x02, 0x15, 0xf4, 0x00, 0x02, 0x16, 0x18, +0x00, 0x02, 0x16, 0x3c, 0x00, 0x02, 0x16, 0x60, +0x00, 0x02, 0x16, 0x84, 0x00, 0x02, 0x16, 0xa8, +0x00, 0x02, 0x16, 0xcc, 0x00, 0x02, 0x16, 0xf0, +0x00, 0x02, 0x17, 0x14, 0x00, 0x02, 0x17, 0x38, +0x00, 0x02, 0x17, 0x5c, 0x00, 0x02, 0x17, 0x80, +0x00, 0x02, 0x17, 0xa4, 0x00, 0x02, 0x18, 0x94, +0x00, 0x02, 0x18, 0xb8, 0x00, 0x02, 0x19, 0x00, +0x00, 0x02, 0x19, 0x28, 0x00, 0x02, 0x19, 0x80, +0x00, 0x02, 0x19, 0xfc, 0x00, 0x02, 0x1a, 0x10, +0x00, 0x02, 0x1a, 0x28, 0x00, 0x02, 0x1a, 0x68, +0x00, 0x02, 0x1a, 0xa8, 0x00, 0x02, 0x1a, 0xfc, +0x00, 0x02, 0x1b, 0x4c, 0x00, 0x02, 0x1b, 0xbc, +0x00, 0x02, 0x1c, 0x00, 0x00, 0x02, 0x1c, 0x78, +0x00, 0x02, 0x1c, 0xf4, 0x00, 0x02, 0x1d, 0x0c, +0x00, 0x02, 0x1d, 0x38, 0x00, 0x02, 0x1e, 0x50, +0x00, 0x02, 0x1e, 0x60, 0x00, 0x02, 0x1f, 0x30, +0x00, 0x02, 0x1f, 0xc0, 0x00, 0x02, 0x20, 0x0c, +0x00, 0x02, 0x20, 0x1c, 0x00, 0x02, 0x20, 0x2c, +0x00, 0x02, 0x20, 0x8c, 0x00, 0x02, 0x20, 0xcc, +0x00, 0x02, 0x21, 0x88, 0x00, 0x02, 0x22, 0x64, +0x00, 0x02, 0x22, 0xa0, 0x00, 0x02, 0x22, 0xf4, +0x00, 0x02, 0x23, 0x30, 0x00, 0x02, 0x23, 0x80, +0x00, 0x02, 0x23, 0xa8, 0x00, 0x02, 0x23, 0xd4, +0x00, 0x02, 0x24, 0x94, 0x00, 0x02, 0x24, 0xdc, +0x00, 0x02, 0x25, 0x0c, 0x00, 0x02, 0x25, 0x4c, +0x00, 0x02, 0x25, 0x7c, 0x00, 0x02, 0x25, 0xd8, +0x00, 0x02, 0x26, 0x08, 0x00, 0x02, 0x26, 0x4c, +0x00, 0x02, 0x26, 0x84, 0x00, 0x02, 0x26, 0xe8, +0x00, 0x02, 0x27, 0x50, 0x00, 0x02, 0x28, 0x24, +0x00, 0x02, 0x28, 0x98, 0x00, 0x02, 0x29, 0x20, +0x00, 0x02, 0x29, 0x98, 0x00, 0x02, 0x29, 0xc4, +0x00, 0x02, 0x29, 0xdc, 0x00, 0x02, 0x2a, 0x08, +0x00, 0x02, 0x2a, 0x18, 0x00, 0x02, 0x2a, 0x28, +0x00, 0x02, 0x2a, 0x38, 0x00, 0x02, 0x2a, 0x4c, +0x00, 0x02, 0x2a, 0x60, 0x00, 0x02, 0x2a, 0x74, +0x00, 0x02, 0x2a, 0x88, 0x00, 0x02, 0x2a, 0x9c, +0x00, 0x02, 0x2a, 0xb0, 0x00, 0x02, 0x2a, 0xe4, +0x00, 0x02, 0x2a, 0xf8, 0x00, 0x02, 0x2b, 0x08, +0x00, 0x02, 0x2b, 0x18, 0x00, 0x02, 0x2b, 0x28, +0x00, 0x02, 0x2b, 0x3c, 0x00, 0x02, 0x2b, 0x50, +0x00, 0x02, 0x2b, 0x64, 0x00, 0x02, 0x2b, 0x78, +0x00, 0x02, 0x2b, 0x8c, 0x00, 0x02, 0x2b, 0xa0, +0x00, 0x02, 0x2b, 0xb4, 0x00, 0x02, 0x2b, 0xc8, +0x00, 0x02, 0x2b, 0xdc, 0x00, 0x02, 0x2e, 0x28, +0x00, 0x02, 0x2e, 0x5c, 0x00, 0x02, 0x2e, 0x90, +0x00, 0x02, 0x2e, 0xb8, 0x00, 0x02, 0x2e, 0xec, +0x00, 0x02, 0x2f, 0x20, 0x00, 0x02, 0x2f, 0x48, +0x00, 0x02, 0x2f, 0x98, 0x00, 0x02, 0x2f, 0xe8, +0x00, 0x02, 0x30, 0x70, 0x00, 0x02, 0x30, 0xf0, +0x00, 0x02, 0x31, 0x14, 0x00, 0x02, 0x31, 0x44, +0x00, 0x02, 0x31, 0x54, 0x00, 0x02, 0x31, 0x64, +0x00, 0x02, 0x31, 0xcc, 0x00, 0x02, 0x32, 0x34, +0x00, 0x02, 0x32, 0x94, 0x00, 0x02, 0x32, 0xfc, +0x00, 0x02, 0x33, 0x34, 0x00, 0x02, 0x33, 0x78, +0x00, 0x02, 0x33, 0xe0, 0x00, 0x02, 0x34, 0x54, +0x00, 0x02, 0x34, 0xb0, 0x00, 0x02, 0x35, 0x0c, +0x00, 0x02, 0x35, 0x6c, 0x00, 0x02, 0x35, 0xcc, +0x00, 0x02, 0x36, 0x0c, 0x00, 0x02, 0x36, 0x5c, +0x00, 0x02, 0x36, 0xa8, 0x00, 0x02, 0x36, 0xf4, +0x00, 0x02, 0x37, 0x1c, 0x00, 0x02, 0x37, 0x5c, +0x00, 0x02, 0x37, 0xac, 0x00, 0x02, 0x38, 0x0c, +0x00, 0x02, 0x38, 0x70, 0x00, 0x02, 0x38, 0xb8, +0x00, 0x02, 0x39, 0x04, 0x00, 0x02, 0x39, 0x4c, +0x00, 0x02, 0x39, 0x5c, 0x00, 0x02, 0x39, 0x88, +0x00, 0x02, 0x39, 0xb4, 0x00, 0x02, 0x39, 0xe0, +0x00, 0x02, 0x3a, 0x20, 0x00, 0x02, 0x3a, 0x6c, +0x00, 0x02, 0x3a, 0xa0, 0x00, 0x02, 0x3a, 0xd4, +0x00, 0x02, 0x3b, 0x18, 0x00, 0x02, 0x3b, 0x3c, +0x00, 0x02, 0x3b, 0x50, 0x00, 0x02, 0x3b, 0x64, +0x00, 0x02, 0x3b, 0x78, 0x00, 0x02, 0x3b, 0xc4, +0x00, 0x02, 0x3c, 0x14, 0x00, 0x02, 0x3c, 0x64, +0x00, 0x02, 0x3c, 0xb4, 0x00, 0x02, 0x3d, 0x00, +0x00, 0x02, 0x3d, 0x4c, 0x00, 0x02, 0x3d, 0x70, +0x00, 0x02, 0x3d, 0x9c, 0x00, 0x02, 0x3d, 0xb0, +0x00, 0x02, 0x3d, 0xc4, 0x00, 0x02, 0x3d, 0xd8, +0x00, 0x02, 0x3d, 0xec, 0x00, 0x02, 0x3e, 0x00, +0x00, 0x02, 0x3e, 0x14, 0x00, 0x02, 0x3e, 0x60, +0x00, 0x02, 0x3e, 0x8c, 0x00, 0x02, 0x3e, 0xc8, +0x00, 0x02, 0x3f, 0x74, 0x00, 0x02, 0x3f, 0xcc, +0x00, 0x02, 0x3f, 0xdc, 0x00, 0x02, 0x3f, 0xec, +0x00, 0x02, 0x40, 0x38, 0x00, 0x02, 0x40, 0x7c, +0x00, 0x02, 0x40, 0xfc, 0x00, 0x02, 0x41, 0x8c, +0x00, 0x02, 0x42, 0x0c, 0x00, 0x02, 0x42, 0x88, +0x00, 0x02, 0x43, 0x14, 0x00, 0x02, 0x43, 0x94, +0x00, 0x02, 0x44, 0x58, 0x00, 0x02, 0x44, 0xd8, +0x00, 0x02, 0x45, 0x60, 0x00, 0x02, 0x45, 0xf8, +0x00, 0x02, 0x46, 0x98, 0x00, 0x02, 0x46, 0xec, +0x00, 0x02, 0x47, 0x4c, 0x00, 0x02, 0x47, 0xa0, +0x00, 0x02, 0x48, 0x04, 0x00, 0x02, 0x48, 0x7c, +0x00, 0x02, 0x49, 0x04, 0x00, 0x02, 0x49, 0xa8, +0x00, 0x02, 0x4a, 0x5c, 0x00, 0x02, 0x4a, 0xd8, +0x00, 0x02, 0x4b, 0x5c, 0x00, 0x02, 0x4b, 0xd8, +0x00, 0x02, 0x4c, 0x5c, 0x00, 0x02, 0x4c, 0xfc, +0x00, 0x02, 0x4d, 0xa8, 0x00, 0x02, 0x4e, 0x68, +0x00, 0x02, 0x4f, 0x20, 0x00, 0x02, 0x4f, 0xa4, +0x00, 0x02, 0x50, 0x34, 0x00, 0x02, 0x50, 0x74, +0x00, 0x02, 0x50, 0xbc, 0x00, 0x02, 0x51, 0x34, +0x00, 0x02, 0x51, 0xac, 0x00, 0x02, 0x52, 0x58, +0x00, 0x02, 0x52, 0xd0, 0x00, 0x02, 0x53, 0x48, +0x00, 0x02, 0x53, 0xf4, 0x00, 0x02, 0x53, 0xf4, +0x00, 0x02, 0x53, 0xf4, 0x00, 0x02, 0x53, 0xf4, +0x00, 0x02, 0x53, 0xf4, 0x00, 0x02, 0x53, 0xf4, +0x00, 0x02, 0x53, 0xf4, 0x00, 0x02, 0x54, 0x0c, +0x00, 0x02, 0x54, 0x24, 0x00, 0x05, 0x00, 0x5e, +0x00, 0x00, 0x02, 0x1a, 0x02, 0x94, 0x00, 0x03, +0x00, 0x09, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x15, +0x00, 0x67, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x02, 0x2f, 0x1b, 0xb9, 0x00, +0x02, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x04, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x07, 0x00, 0x02, +0x00, 0x00, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, +0x10, 0xb9, 0x00, 0x0c, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x11, 0x00, 0x02, 0x00, 0x00, 0x11, 0x12, +0x39, 0xba, 0x00, 0x12, 0x00, 0x02, 0x00, 0x00, +0x11, 0x12, 0x39, 0xba, 0x00, 0x13, 0x00, 0x02, +0x00, 0x00, 0x11, 0x12, 0x39, 0xba, 0x00, 0x15, +0x00, 0x02, 0x00, 0x00, 0x11, 0x12, 0x39, 0x30, +0x31, 0x13, 0x21, 0x11, 0x21, 0x25, 0x2f, 0x01, +0x23, 0x0f, 0x01, 0x13, 0x3f, 0x01, 0x21, 0x1f, +0x01, 0x07, 0x03, 0x11, 0x01, 0x03, 0x13, 0x5e, +0x01, 0xbc, 0xfe, 0x44, 0x01, 0x78, 0x5d, 0x3b, +0x04, 0x3d, 0x5f, 0xa0, 0x35, 0x56, 0xfe, 0xe4, +0x57, 0x36, 0x1c, 0x93, 0x01, 0x60, 0x91, 0x91, +0x02, 0x94, 0xfd, 0x6c, 0x27, 0xa4, 0x69, 0x69, +0xa4, 0x01, 0x4d, 0x5c, 0x9b, 0x9b, 0x5c, 0x20, +0x01, 0x04, 0xfd, 0xfc, 0x02, 0x04, 0xfe, 0xfc, +0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x02, 0x93, 0x00, 0x09, +0x00, 0x11, 0x00, 0x54, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0e, 0x2f, 0x1b, 0xb9, +0x00, 0x0e, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0c, 0x2f, 0x1b, +0xb9, 0x00, 0x0c, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x11, 0x2f, +0x1b, 0xb9, 0x00, 0x11, 0x00, 0x05, 0x3e, 0x59, +0xba, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x0e, 0x11, +0x12, 0x39, 0xba, 0x00, 0x0b, 0x00, 0x0c, 0x00, +0x0e, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x0b, 0x2f, +0xb9, 0x00, 0x09, 0x00, 0x01, 0xf4, 0x30, 0x31, +0x01, 0x27, 0x2e, 0x01, 0x27, 0x23, 0x0e, 0x01, +0x0f, 0x01, 0x17, 0x21, 0x07, 0x23, 0x13, 0x33, +0x13, 0x23, 0x01, 0x7c, 0x2a, 0x14, 0x24, 0x11, +0x04, 0x11, 0x24, 0x14, 0x2a, 0xf7, 0xfe, 0xfb, +0x4e, 0x2e, 0xe8, 0x2e, 0xe8, 0x30, 0x01, 0x09, +0x7b, 0x3b, 0x6c, 0x3d, 0x3d, 0x6c, 0x3b, 0x7b, +0x27, 0xe2, 0x02, 0x93, 0xfd, 0x6d, 0x00, 0x00, +0x00, 0x03, 0x00, 0x61, 0x00, 0x00, 0x02, 0x15, +0x02, 0x93, 0x00, 0x11, 0x00, 0x1a, 0x00, 0x23, +0x00, 0x5b, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x11, 0x2f, 0x1b, 0xb9, 0x00, +0x11, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x21, +0x00, 0x00, 0x00, 0x11, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x21, 0x2f, 0xba, 0x00, 0x08, 0x00, 0x21, +0x00, 0x12, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, +0x10, 0xb9, 0x00, 0x19, 0x00, 0x02, 0xf4, 0xb8, +0x00, 0x21, 0x10, 0xb9, 0x00, 0x1a, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x11, 0x10, 0xb9, 0x00, 0x23, +0x00, 0x02, 0xf4, 0x30, 0x31, 0x13, 0x33, 0x32, +0x16, 0x15, 0x14, 0x06, 0x07, 0x15, 0x1e, 0x01, +0x15, 0x14, 0x0e, 0x02, 0x2b, 0x01, 0x13, 0x32, +0x36, 0x35, 0x34, 0x26, 0x2b, 0x01, 0x15, 0x13, +0x32, 0x36, 0x35, 0x34, 0x26, 0x2b, 0x01, 0x11, +0x61, 0xb2, 0x64, 0x76, 0x34, 0x32, 0x40, 0x4e, +0x23, 0x40, 0x5a, 0x38, 0xbf, 0xa0, 0x65, 0x59, +0x5e, 0x5b, 0x77, 0x85, 0x63, 0x71, 0x6e, 0x66, +0x85, 0x02, 0x93, 0x4d, 0x53, 0x34, 0x4d, 0x0f, +0x04, 0x0b, 0x4f, 0x45, 0x30, 0x48, 0x30, 0x18, +0x01, 0x71, 0x43, 0x3a, 0x46, 0x39, 0xfc, 0xfe, +0xb5, 0x4a, 0x4f, 0x48, 0x44, 0xfe, 0xdb, 0x00, +0x00, 0x01, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x0f, +0x02, 0x9f, 0x00, 0x21, 0x00, 0x39, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0a, 0x2f, +0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x0a, 0x10, 0xb9, 0x00, 0x11, +0x00, 0x02, 0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x1b, 0x00, 0x02, 0xf4, 0x30, 0x31, 0x05, +0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, +0x32, 0x16, 0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, +0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, +0x36, 0x37, 0x17, 0x0e, 0x01, 0x01, 0x4b, 0x3d, +0x66, 0x49, 0x28, 0x29, 0x4a, 0x67, 0x3f, 0x3a, +0x58, 0x1a, 0x1b, 0x1b, 0x48, 0x2d, 0x36, 0x57, +0x3d, 0x20, 0x20, 0x3c, 0x55, 0x35, 0x33, 0x50, +0x24, 0x1b, 0x26, 0x5e, 0x0c, 0x30, 0x59, 0x7f, +0x4f, 0x4e, 0x7e, 0x59, 0x2f, 0x30, 0x1f, 0x1f, +0x1f, 0x25, 0x2a, 0x4d, 0x6e, 0x45, 0x45, 0x6f, +0x4e, 0x2b, 0x29, 0x28, 0x1d, 0x2c, 0x32, 0x00, +0x00, 0x02, 0x00, 0x61, 0x00, 0x00, 0x02, 0x25, +0x02, 0x93, 0x00, 0x0c, 0x00, 0x19, 0x00, 0x35, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x11, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0c, 0x2f, 0x1b, 0xb9, 0x00, 0x0c, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x0d, 0x00, 0x02, +0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x17, +0x00, 0x02, 0xf4, 0x30, 0x31, 0x13, 0x33, 0x32, +0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x2b, 0x01, +0x37, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, +0x2b, 0x01, 0x11, 0x61, 0x99, 0x4c, 0x71, 0x4a, +0x24, 0x24, 0x4a, 0x70, 0x4c, 0x9a, 0x94, 0x43, +0x61, 0x3e, 0x1e, 0x1e, 0x3e, 0x61, 0x43, 0x66, +0x02, 0x93, 0x2e, 0x56, 0x78, 0x4b, 0x4b, 0x7b, +0x57, 0x2f, 0x27, 0x2b, 0x4e, 0x6b, 0x41, 0x40, +0x6a, 0x4c, 0x2a, 0xfd, 0xbb, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd4, +0x02, 0x93, 0x00, 0x0b, 0x00, 0x4d, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, +0x2f, 0x1b, 0xb9, 0x00, 0x0b, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x03, +0x00, 0x02, 0xf4, 0xba, 0x00, 0x07, 0x00, 0x00, +0x00, 0x0b, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x07, +0x2f, 0xb9, 0x00, 0x05, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x0b, 0x10, 0xb9, 0x00, 0x08, 0x00, 0x02, +0xf4, 0x30, 0x31, 0x13, 0x21, 0x15, 0x21, 0x15, +0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x61, +0x01, 0x69, 0xfe, 0xc5, 0x01, 0x08, 0xfe, 0xf8, +0x01, 0x45, 0xfe, 0x8d, 0x02, 0x93, 0x28, 0xf9, +0x28, 0xfe, 0xde, 0x28, 0x00, 0x01, 0x00, 0x61, +0x00, 0x00, 0x01, 0xc8, 0x02, 0x93, 0x00, 0x09, +0x00, 0x43, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x09, 0x2f, 0x1b, 0xb9, 0x00, +0x09, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x10, 0xb9, 0x00, 0x03, 0x00, 0x02, 0xf4, 0xba, +0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x07, 0x2f, 0xb9, 0x00, 0x05, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, 0x21, 0x15, +0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x23, 0x61, +0x01, 0x67, 0xfe, 0xc7, 0x01, 0x09, 0xfe, 0xf7, +0x2e, 0x02, 0x93, 0x28, 0xfe, 0xfa, 0x28, 0xfe, +0xc3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x15, 0x02, 0x9f, 0x00, 0x27, +0x00, 0x4d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0a, 0x2f, 0x1b, 0xb9, 0x00, 0x0a, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x0a, +0x10, 0xb9, 0x00, 0x13, 0x00, 0x02, 0xf4, 0xb8, +0x00, 0x00, 0x10, 0xb9, 0x00, 0x1d, 0x00, 0x02, +0xf4, 0xba, 0x00, 0x22, 0x00, 0x0a, 0x00, 0x00, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x22, 0x2f, 0xb9, +0x00, 0x24, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x05, +0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, +0x32, 0x1e, 0x02, 0x17, 0x07, 0x2e, 0x01, 0x23, +0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, +0x32, 0x36, 0x37, 0x35, 0x23, 0x35, 0x33, 0x11, +0x0e, 0x01, 0x01, 0x52, 0x40, 0x68, 0x4a, 0x29, +0x2a, 0x4c, 0x6c, 0x41, 0x21, 0x37, 0x2c, 0x23, +0x0d, 0x1b, 0x1a, 0x48, 0x36, 0x39, 0x5a, 0x3f, +0x22, 0x20, 0x3d, 0x59, 0x38, 0x2d, 0x4f, 0x18, +0x9e, 0xca, 0x1f, 0x63, 0x0c, 0x30, 0x59, 0x7f, +0x4f, 0x4e, 0x7e, 0x59, 0x2f, 0x0e, 0x17, 0x1c, +0x0e, 0x1f, 0x1c, 0x28, 0x2a, 0x4d, 0x6e, 0x45, +0x45, 0x6f, 0x4e, 0x2b, 0x1a, 0x18, 0xcd, 0x27, +0xfe, 0xfb, 0x21, 0x2a, 0x00, 0x01, 0x00, 0x61, +0x00, 0x00, 0x02, 0x1e, 0x02, 0x93, 0x00, 0x0b, +0x00, 0x49, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, +0x0b, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x09, +0x00, 0x00, 0x00, 0x0b, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x09, 0x2f, 0xb9, 0x00, 0x03, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x04, +0xd0, 0xb8, 0x00, 0x0b, 0x10, 0xb8, 0x00, 0x07, +0xd0, 0x30, 0x31, 0x13, 0x33, 0x11, 0x21, 0x11, +0x33, 0x11, 0x23, 0x11, 0x21, 0x11, 0x23, 0x61, +0x2e, 0x01, 0x61, 0x2e, 0x2e, 0xfe, 0x9f, 0x2e, +0x02, 0x93, 0xfe, 0xdf, 0x01, 0x21, 0xfd, 0x6d, +0x01, 0x4a, 0xfe, 0xb6, 0x00, 0x01, 0x00, 0x61, +0x00, 0x00, 0x00, 0x8f, 0x02, 0x93, 0x00, 0x03, +0x00, 0x25, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, +0x03, 0x00, 0x05, 0x3e, 0x59, 0x30, 0x31, 0x13, +0x33, 0x11, 0x23, 0x61, 0x2e, 0x2e, 0x02, 0x93, +0xfd, 0x6d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x29, +0xff, 0xf4, 0x01, 0x6f, 0x02, 0x93, 0x00, 0x11, +0x00, 0x2b, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x07, +0x00, 0x02, 0xf4, 0x30, 0x31, 0x17, 0x22, 0x26, +0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, +0x11, 0x33, 0x11, 0x14, 0x0e, 0x02, 0xcb, 0x37, +0x52, 0x19, 0x23, 0x18, 0x3d, 0x2a, 0x3c, 0x3a, +0x2e, 0x12, 0x27, 0x3e, 0x0c, 0x32, 0x2f, 0x17, +0x2a, 0x24, 0x49, 0x51, 0x01, 0xdb, 0xfe, 0x20, +0x28, 0x45, 0x34, 0x1e, 0x00, 0x01, 0x00, 0x61, +0x00, 0x00, 0x02, 0x24, 0x02, 0x93, 0x00, 0x0c, +0x00, 0x65, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x04, 0x2f, 0x1b, 0xb9, 0x00, +0x04, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0c, 0x2f, 0x1b, 0xb9, +0x00, 0x0c, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, 0x1b, +0xb9, 0x00, 0x08, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x11, 0x12, +0x39, 0xba, 0x00, 0x06, 0x00, 0x04, 0x00, 0x08, +0x11, 0x12, 0x39, 0xba, 0x00, 0x09, 0x00, 0x04, +0x00, 0x08, 0x11, 0x12, 0x39, 0x30, 0x31, 0x13, +0x33, 0x11, 0x33, 0x01, 0x33, 0x07, 0x13, 0x23, +0x03, 0x07, 0x15, 0x23, 0x61, 0x2e, 0x02, 0x01, +0x3f, 0x37, 0xd2, 0xef, 0x35, 0xda, 0x86, 0x2e, +0x02, 0x93, 0xfe, 0x92, 0x01, 0x6e, 0xf4, 0xfe, +0x61, 0x01, 0x7c, 0x99, 0xe3, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x01, 0xbf, +0x02, 0x93, 0x00, 0x05, 0x00, 0x2b, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x05, +0x2f, 0x1b, 0xb9, 0x00, 0x05, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x02, 0x00, 0x02, 0xf4, 0x30, +0x31, 0x13, 0x33, 0x11, 0x21, 0x15, 0x21, 0x61, +0x2e, 0x01, 0x30, 0xfe, 0xa2, 0x02, 0x93, 0xfd, +0x95, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x61, +0x00, 0x00, 0x02, 0x61, 0x02, 0x93, 0x00, 0x1d, +0x00, 0x5d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x1d, 0x2f, 0x1b, 0xb9, 0x00, +0x1d, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x06, +0x00, 0x0c, 0x00, 0x11, 0x11, 0x12, 0x39, 0xba, +0x00, 0x06, 0x00, 0x0b, 0x00, 0x0c, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x0a, +0xd0, 0xb8, 0x00, 0x1d, 0x10, 0xb8, 0x00, 0x0d, +0xd0, 0xba, 0x00, 0x15, 0x00, 0x1d, 0x00, 0x00, +0x11, 0x12, 0x39, 0xba, 0x00, 0x18, 0x00, 0x00, +0x00, 0x1d, 0x11, 0x12, 0x39, 0x30, 0x31, 0x13, +0x33, 0x13, 0x1e, 0x01, 0x17, 0x33, 0x3e, 0x01, +0x37, 0x13, 0x33, 0x11, 0x23, 0x11, 0x34, 0x36, +0x37, 0x23, 0x07, 0x03, 0x23, 0x03, 0x27, 0x23, +0x1e, 0x01, 0x15, 0x11, 0x23, 0x61, 0x41, 0x8a, +0x0d, 0x1a, 0x0d, 0x04, 0x0d, 0x18, 0x0d, 0x89, +0x42, 0x2d, 0x04, 0x02, 0x04, 0x33, 0x8e, 0x28, +0x8f, 0x34, 0x04, 0x02, 0x04, 0x2b, 0x02, 0x93, +0xfe, 0x7d, 0x24, 0x49, 0x25, 0x25, 0x49, 0x24, +0x01, 0x83, 0xfd, 0x6d, 0x01, 0xb1, 0x29, 0x5f, +0x2a, 0x93, 0xfe, 0x78, 0x01, 0x88, 0x93, 0x2a, +0x5f, 0x29, 0xfe, 0x4f, 0x00, 0x01, 0x00, 0x61, +0x00, 0x00, 0x02, 0x1b, 0x02, 0x93, 0x00, 0x13, +0x00, 0x5b, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x08, 0x2f, 0x1b, 0xb9, 0x00, +0x08, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, +0x00, 0x13, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, 0x2f, 0x1b, +0xb9, 0x00, 0x0b, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x04, 0x00, 0x0b, 0x00, 0x08, 0x11, 0x12, +0x39, 0xba, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x13, +0x11, 0x12, 0x39, 0x30, 0x31, 0x13, 0x33, 0x01, +0x17, 0x33, 0x2e, 0x01, 0x35, 0x11, 0x33, 0x11, +0x23, 0x01, 0x27, 0x23, 0x1e, 0x01, 0x15, 0x11, +0x23, 0x61, 0x30, 0x01, 0x16, 0x4a, 0x04, 0x02, +0x04, 0x2c, 0x30, 0xfe, 0xea, 0x4a, 0x04, 0x02, +0x04, 0x2c, 0x02, 0x93, 0xfe, 0x2f, 0x83, 0x30, +0x60, 0x30, 0x01, 0x94, 0xfd, 0x6d, 0x01, 0xd1, +0x83, 0x30, 0x5b, 0x30, 0xfe, 0x67, 0x00, 0x00, +0x00, 0x02, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x02, 0x9f, 0x00, 0x13, 0x00, 0x27, 0x00, 0x35, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0a, 0x2f, 0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x11, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x14, 0x00, 0x02, +0xf4, 0xb8, 0x00, 0x0a, 0x10, 0xb9, 0x00, 0x1e, +0x00, 0x02, 0xf4, 0x30, 0x31, 0x05, 0x22, 0x2e, +0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, +0x02, 0x15, 0x14, 0x0e, 0x02, 0x27, 0x32, 0x3e, +0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, +0x02, 0x15, 0x14, 0x1e, 0x02, 0x01, 0x46, 0x3b, +0x64, 0x48, 0x28, 0x28, 0x48, 0x64, 0x3b, 0x3c, +0x64, 0x48, 0x28, 0x28, 0x48, 0x64, 0x3c, 0x32, +0x52, 0x3b, 0x20, 0x20, 0x3b, 0x52, 0x32, 0x32, +0x53, 0x3a, 0x20, 0x20, 0x3a, 0x53, 0x0c, 0x31, +0x5a, 0x7f, 0x4e, 0x4e, 0x7d, 0x59, 0x2f, 0x2f, +0x59, 0x7d, 0x4e, 0x4e, 0x7f, 0x5a, 0x31, 0x2a, +0x2b, 0x4f, 0x6f, 0x45, 0x44, 0x6e, 0x4d, 0x2a, +0x2a, 0x4d, 0x6e, 0x44, 0x45, 0x6f, 0x4f, 0x2b, +0x00, 0x02, 0x00, 0x61, 0x00, 0x00, 0x01, 0xf6, +0x02, 0x93, 0x00, 0x0c, 0x00, 0x15, 0x00, 0x43, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x11, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0c, 0x2f, 0x1b, 0xb9, 0x00, 0x0c, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x0a, 0x00, 0x00, +0x00, 0x0c, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x0a, +0x2f, 0xb9, 0x00, 0x0d, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x00, 0x10, 0xb9, 0x00, 0x14, 0x00, 0x02, +0xf4, 0x30, 0x31, 0x13, 0x33, 0x32, 0x1e, 0x02, +0x15, 0x14, 0x06, 0x2b, 0x01, 0x11, 0x23, 0x13, +0x32, 0x36, 0x35, 0x34, 0x26, 0x2b, 0x01, 0x11, +0x61, 0xa6, 0x38, 0x59, 0x3d, 0x21, 0x7c, 0x6f, +0x7c, 0x2e, 0x9f, 0x65, 0x62, 0x65, 0x66, 0x6d, +0x02, 0x93, 0x13, 0x2c, 0x46, 0x33, 0x61, 0x5f, +0xfe, 0xe5, 0x01, 0x42, 0x48, 0x51, 0x53, 0x3e, +0xfe, 0xd6, 0x00, 0x00, 0x00, 0x02, 0x00, 0x37, +0xff, 0x64, 0x02, 0x58, 0x02, 0x9f, 0x00, 0x13, +0x00, 0x36, 0x00, 0x4b, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x26, 0x2f, 0x1b, 0xb9, +0x00, 0x26, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x1c, 0x2f, 0x1b, +0xb9, 0x00, 0x1c, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x33, 0x00, 0x02, 0x00, 0x17, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x1c, 0x10, 0xb9, 0x00, 0x05, +0x00, 0x02, 0xf4, 0xb8, 0x00, 0x26, 0x10, 0xb9, +0x00, 0x0f, 0x00, 0x02, 0xf4, 0xb8, 0x00, 0x1c, +0x10, 0xb8, 0x00, 0x30, 0xd0, 0x30, 0x31, 0x13, +0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, +0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x01, +0x0e, 0x01, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x2e, +0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, +0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x1e, 0x01, +0x33, 0x32, 0x36, 0x37, 0x67, 0x20, 0x3a, 0x53, +0x32, 0x32, 0x52, 0x3b, 0x20, 0x20, 0x3b, 0x52, +0x32, 0x32, 0x53, 0x3a, 0x20, 0x01, 0xf1, 0x0d, +0x2b, 0x19, 0x2a, 0x45, 0x37, 0x29, 0x0c, 0x36, +0x5a, 0x41, 0x24, 0x28, 0x48, 0x64, 0x3b, 0x3c, +0x64, 0x48, 0x28, 0x24, 0x41, 0x5b, 0x37, 0x17, +0x57, 0x3e, 0x17, 0x1f, 0x0d, 0x01, 0x4c, 0x45, +0x71, 0x4f, 0x2c, 0x2c, 0x4f, 0x71, 0x45, 0x44, +0x6e, 0x4d, 0x2a, 0x2a, 0x4d, 0x6e, 0xfd, 0xe0, +0x04, 0x08, 0x16, 0x27, 0x35, 0x1f, 0x05, 0x35, +0x59, 0x7a, 0x4a, 0x4e, 0x7d, 0x59, 0x2f, 0x2f, +0x59, 0x7d, 0x4e, 0x4a, 0x7a, 0x59, 0x35, 0x05, +0x32, 0x34, 0x05, 0x03, 0x00, 0x02, 0x00, 0x61, +0x00, 0x00, 0x02, 0x03, 0x02, 0x93, 0x00, 0x08, +0x00, 0x18, 0x00, 0x59, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0e, 0x2f, 0x1b, 0xb9, +0x00, 0x0e, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, 0x2f, 0x1b, +0xb9, 0x00, 0x0d, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x0e, 0x10, 0xb9, 0x00, 0x06, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x0d, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x08, 0x2f, 0xb8, +0x00, 0x0d, 0x10, 0xb8, 0x00, 0x09, 0xd0, 0xb8, +0x00, 0x08, 0x10, 0xb9, 0x00, 0x0a, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x17, 0x00, 0x08, 0x00, 0x0b, +0x11, 0x12, 0x39, 0x30, 0x31, 0x01, 0x32, 0x36, +0x35, 0x34, 0x26, 0x2b, 0x01, 0x11, 0x01, 0x03, +0x23, 0x11, 0x23, 0x11, 0x33, 0x32, 0x1e, 0x02, +0x15, 0x14, 0x06, 0x07, 0x13, 0x01, 0x12, 0x58, +0x5d, 0x5e, 0x57, 0x83, 0x01, 0x3f, 0xb3, 0x8c, +0x2e, 0xbd, 0x31, 0x50, 0x38, 0x1f, 0x5b, 0x4e, +0xb6, 0x01, 0x55, 0x47, 0x49, 0x4a, 0x3d, 0xfe, +0xe9, 0xfe, 0xab, 0x01, 0x2f, 0xfe, 0xd1, 0x02, +0x93, 0x13, 0x2a, 0x42, 0x2f, 0x4f, 0x5a, 0x0a, +0xfe, 0xce, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2e, +0xff, 0xf4, 0x01, 0xe0, 0x02, 0x9f, 0x00, 0x33, +0x00, 0x49, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x1a, 0x2f, 0x1b, 0xb9, 0x00, 0x1a, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x07, +0x00, 0x02, 0xf4, 0xba, 0x00, 0x0f, 0x00, 0x00, +0x00, 0x1a, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x1a, +0x10, 0xb9, 0x00, 0x21, 0x00, 0x02, 0xf4, 0xba, +0x00, 0x29, 0x00, 0x1a, 0x00, 0x00, 0x11, 0x12, +0x39, 0x30, 0x31, 0x05, 0x22, 0x26, 0x27, 0x37, +0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, +0x02, 0x2f, 0x01, 0x2e, 0x03, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, 0x01, +0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x1f, +0x01, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x01, +0x0d, 0x48, 0x70, 0x27, 0x1e, 0x24, 0x64, 0x39, +0x4c, 0x58, 0x13, 0x20, 0x2b, 0x18, 0x64, 0x15, +0x30, 0x27, 0x1a, 0x1d, 0x33, 0x47, 0x29, 0x3c, +0x5d, 0x1e, 0x1a, 0x1d, 0x4e, 0x32, 0x42, 0x50, +0x16, 0x22, 0x28, 0x12, 0x64, 0x1c, 0x32, 0x26, +0x17, 0x1e, 0x37, 0x4e, 0x0c, 0x37, 0x2c, 0x20, +0x29, 0x30, 0x49, 0x3b, 0x1f, 0x2b, 0x1f, 0x16, +0x0b, 0x2d, 0x09, 0x1a, 0x27, 0x35, 0x25, 0x24, +0x3b, 0x2b, 0x18, 0x2f, 0x20, 0x1e, 0x1e, 0x25, +0x40, 0x36, 0x1d, 0x28, 0x1d, 0x15, 0x08, 0x2c, +0x0c, 0x1e, 0x28, 0x37, 0x26, 0x26, 0x41, 0x2f, +0x1b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1d, +0x00, 0x00, 0x01, 0xef, 0x02, 0x93, 0x00, 0x07, +0x00, 0x33, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x02, 0x2f, 0x1b, 0xb9, 0x00, 0x02, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x07, 0x2f, 0x1b, 0xb9, 0x00, +0x07, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x02, +0x10, 0xb9, 0x00, 0x00, 0x00, 0x02, 0xf4, 0xb8, +0x00, 0x05, 0xd0, 0x30, 0x31, 0x13, 0x23, 0x35, +0x21, 0x15, 0x23, 0x11, 0x23, 0xef, 0xd2, 0x01, +0xd2, 0xd2, 0x2e, 0x02, 0x6b, 0x28, 0x28, 0xfd, +0x95, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5f, +0xff, 0xf4, 0x02, 0x1b, 0x02, 0x93, 0x00, 0x19, +0x00, 0x33, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x0d, +0x00, 0x02, 0xf4, 0xb8, 0x00, 0x06, 0x10, 0xb8, +0x00, 0x13, 0xd0, 0x30, 0x31, 0x05, 0x22, 0x2e, +0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, +0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x33, 0x11, +0x14, 0x0e, 0x02, 0x01, 0x3c, 0x2a, 0x50, 0x3e, +0x25, 0x2e, 0x1d, 0x30, 0x3f, 0x23, 0x24, 0x41, +0x31, 0x1e, 0x2b, 0x26, 0x3e, 0x50, 0x0c, 0x19, +0x3d, 0x66, 0x4d, 0x01, 0x96, 0xfe, 0x6f, 0x42, +0x57, 0x35, 0x16, 0x16, 0x35, 0x57, 0x42, 0x01, +0x91, 0xfe, 0x6a, 0x4d, 0x66, 0x3d, 0x19, 0x00, +0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x01, 0xe7, +0x02, 0x93, 0x00, 0x0f, 0x00, 0x40, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0c, +0x2f, 0x1b, 0xb9, 0x00, 0x0c, 0x00, 0x11, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, 0x00, 0x05, +0x3e, 0x59, 0xba, 0x00, 0x05, 0x00, 0x00, 0x00, +0x0f, 0x11, 0x12, 0x39, 0x30, 0x31, 0x13, 0x33, +0x13, 0x1e, 0x01, 0x17, 0x33, 0x3e, 0x03, 0x37, +0x13, 0x33, 0x03, 0x23, 0x04, 0x31, 0x7a, 0x13, +0x1f, 0x14, 0x04, 0x0a, 0x11, 0x10, 0x11, 0x09, +0x7a, 0x2f, 0xd8, 0x31, 0x02, 0x93, 0xfe, 0x7f, +0x3c, 0x65, 0x3c, 0x1e, 0x36, 0x35, 0x36, 0x1e, +0x01, 0x81, 0xfd, 0x6d, 0x00, 0x01, 0x00, 0x1c, +0x00, 0x00, 0x02, 0xe4, 0x02, 0x93, 0x00, 0x21, +0x00, 0x76, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0a, 0x2f, 0x1b, 0xb9, 0x00, +0x0a, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x14, 0x2f, 0x1b, 0xb9, +0x00, 0x14, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x21, 0x2f, 0x1b, +0xb9, 0x00, 0x21, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x17, 0x2f, +0x1b, 0xb9, 0x00, 0x17, 0x00, 0x05, 0x3e, 0x59, +0xba, 0x00, 0x05, 0x00, 0x00, 0x00, 0x21, 0x11, +0x12, 0x39, 0xba, 0x00, 0x0f, 0x00, 0x14, 0x00, +0x17, 0x11, 0x12, 0x39, 0xba, 0x00, 0x1c, 0x00, +0x21, 0x00, 0x0a, 0x11, 0x12, 0x39, 0x30, 0x31, +0x13, 0x33, 0x13, 0x1e, 0x01, 0x17, 0x33, 0x3e, +0x01, 0x37, 0x13, 0x33, 0x13, 0x1e, 0x01, 0x17, +0x33, 0x3e, 0x01, 0x37, 0x13, 0x33, 0x03, 0x23, +0x03, 0x2e, 0x01, 0x27, 0x23, 0x0e, 0x01, 0x07, +0x03, 0x23, 0x1c, 0x30, 0x53, 0x0b, 0x17, 0x0b, +0x04, 0x0c, 0x19, 0x0e, 0x67, 0x2f, 0x67, 0x0e, +0x19, 0x0e, 0x04, 0x0b, 0x15, 0x0b, 0x53, 0x2d, +0x93, 0x33, 0x78, 0x09, 0x12, 0x08, 0x04, 0x08, +0x14, 0x09, 0x76, 0x32, 0x02, 0x93, 0xfe, 0x7c, +0x36, 0x6b, 0x36, 0x36, 0x6b, 0x36, 0x01, 0x84, +0xfe, 0x7c, 0x36, 0x6b, 0x36, 0x36, 0x6b, 0x36, +0x01, 0x84, 0xfd, 0x6d, 0x01, 0xc4, 0x27, 0x47, +0x27, 0x27, 0x47, 0x27, 0xfe, 0x3c, 0x00, 0x00, +0x00, 0x01, 0x00, 0x11, 0x00, 0x00, 0x01, 0xd1, +0x02, 0x93, 0x00, 0x19, 0x00, 0x5b, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x01, 0x2f, +0x1b, 0xb9, 0x00, 0x01, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, +0x2f, 0x1b, 0xb9, 0x00, 0x0b, 0x00, 0x11, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x19, 0x2f, 0x1b, 0xb9, 0x00, 0x19, 0x00, 0x05, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x06, 0x00, 0x01, +0x00, 0x19, 0x11, 0x12, 0x39, 0xba, 0x00, 0x13, +0x00, 0x0f, 0x00, 0x0b, 0x11, 0x12, 0x39, 0x30, +0x31, 0x13, 0x03, 0x33, 0x17, 0x1e, 0x01, 0x17, +0x33, 0x3e, 0x01, 0x3f, 0x01, 0x33, 0x03, 0x13, +0x23, 0x27, 0x2e, 0x01, 0x27, 0x23, 0x0e, 0x01, +0x0f, 0x01, 0x23, 0xd7, 0xb8, 0x32, 0x6c, 0x0e, +0x17, 0x11, 0x04, 0x0e, 0x15, 0x0e, 0x6c, 0x2f, +0xb8, 0xc6, 0x32, 0x73, 0x0e, 0x1d, 0x12, 0x04, +0x10, 0x1a, 0x0e, 0x73, 0x2f, 0x01, 0x55, 0x01, +0x3e, 0xc2, 0x17, 0x28, 0x1b, 0x1b, 0x28, 0x17, +0xc2, 0xfe, 0xc0, 0xfe, 0xad, 0xca, 0x19, 0x32, +0x1e, 0x1e, 0x32, 0x19, 0xca, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x01, 0xbc, +0x02, 0x93, 0x00, 0x0f, 0x00, 0x40, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x01, 0x2f, +0x1b, 0xb9, 0x00, 0x01, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, +0x2f, 0x1b, 0xb9, 0x00, 0x0b, 0x00, 0x11, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, 0x00, 0x05, +0x3e, 0x59, 0xba, 0x00, 0x06, 0x00, 0x01, 0x00, +0x0f, 0x11, 0x12, 0x39, 0x30, 0x31, 0x13, 0x03, +0x33, 0x17, 0x1e, 0x01, 0x17, 0x33, 0x3e, 0x01, +0x3f, 0x01, 0x33, 0x03, 0x11, 0x23, 0xc8, 0xc5, +0x31, 0x64, 0x11, 0x21, 0x14, 0x04, 0x13, 0x24, +0x10, 0x64, 0x2f, 0xc6, 0x2e, 0x01, 0x0b, 0x01, +0x88, 0xce, 0x24, 0x46, 0x24, 0x24, 0x46, 0x24, +0xce, 0xfe, 0x78, 0xfe, 0xf5, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x32, 0x00, 0x00, 0x01, 0xea, +0x02, 0x93, 0x00, 0x09, 0x00, 0x45, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, 0x2f, +0x1b, 0xb9, 0x00, 0x03, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, +0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x06, 0x00, 0x02, 0xf4, 0xb8, +0x00, 0x00, 0xd0, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x03, 0x10, 0xb9, 0x00, 0x01, 0x00, 0x02, +0xf4, 0xb8, 0x00, 0x05, 0xd0, 0xb8, 0x00, 0x05, +0x2f, 0x30, 0x31, 0x37, 0x01, 0x21, 0x35, 0x21, +0x15, 0x01, 0x21, 0x15, 0x21, 0x32, 0x01, 0x7b, +0xfe, 0xa6, 0x01, 0x94, 0xfe, 0x84, 0x01, 0x7f, +0xfe, 0x48, 0x1b, 0x02, 0x50, 0x28, 0x1b, 0xfd, +0xb0, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3a, +0xff, 0xf4, 0x01, 0x9c, 0x01, 0xec, 0x00, 0x21, +0x00, 0x2f, 0x00, 0x71, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x16, 0x2f, 0x1b, 0xb9, +0x00, 0x16, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, +0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x08, 0x00, 0x16, 0x00, 0x00, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x08, 0x2f, 0xb8, 0x00, 0x16, +0x10, 0xb9, 0x00, 0x0d, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x1d, 0xd0, 0xb8, +0x00, 0x1d, 0x2f, 0xba, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x16, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, +0x10, 0xb9, 0x00, 0x22, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x1e, 0x10, 0xb9, 0x00, 0x25, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x08, 0x10, 0xb9, 0x00, 0x26, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, 0x22, 0x2e, +0x02, 0x35, 0x34, 0x36, 0x37, 0x34, 0x2e, 0x02, +0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, 0x03, 0x33, +0x32, 0x1e, 0x02, 0x15, 0x11, 0x23, 0x27, 0x23, +0x0e, 0x01, 0x27, 0x32, 0x36, 0x37, 0x35, 0x0e, +0x03, 0x15, 0x14, 0x1e, 0x02, 0xc5, 0x1d, 0x32, +0x26, 0x16, 0x95, 0xa1, 0x08, 0x1a, 0x2c, 0x24, +0x30, 0x50, 0x19, 0x14, 0x0d, 0x25, 0x2e, 0x36, +0x1d, 0x2a, 0x3a, 0x24, 0x10, 0x26, 0x04, 0x03, +0x25, 0x55, 0x28, 0x2a, 0x4c, 0x2d, 0x4a, 0x66, +0x3e, 0x1b, 0x10, 0x1c, 0x25, 0x0c, 0x10, 0x20, +0x32, 0x22, 0x50, 0x53, 0x12, 0x1b, 0x37, 0x2b, +0x1b, 0x26, 0x12, 0x21, 0x09, 0x16, 0x12, 0x0d, +0x1d, 0x32, 0x43, 0x27, 0xfe, 0xcd, 0x3e, 0x1d, +0x2d, 0x26, 0x28, 0x26, 0xa3, 0x09, 0x1a, 0x24, +0x2e, 0x1c, 0x1a, 0x24, 0x17, 0x0b, 0x00, 0x00, +0x00, 0x02, 0x00, 0x5c, 0xff, 0xf4, 0x01, 0xec, +0x02, 0xcf, 0x00, 0x14, 0x00, 0x25, 0x00, 0x7a, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0d, 0x2f, 0x1b, 0xb9, 0x00, 0x0d, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x07, 0x2f, 0x1b, 0xb9, 0x00, 0x07, 0x00, +0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x04, 0x00, +0x00, 0x00, 0x0d, 0x11, 0x12, 0x39, 0xb8, 0x00, +0x05, 0xd0, 0xb8, 0x00, 0x05, 0x2f, 0xba, 0x00, +0x0a, 0x00, 0x0d, 0x00, 0x00, 0x11, 0x12, 0x39, +0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x15, 0x00, +0x01, 0xf4, 0xb8, 0x00, 0x0d, 0x10, 0xb9, 0x00, +0x1f, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0a, 0x10, +0xb9, 0x00, 0x22, 0x00, 0x01, 0xf4, 0xb8, 0x00, +0x04, 0x10, 0xb9, 0x00, 0x23, 0x00, 0x01, 0xf4, +0x30, 0x31, 0x05, 0x22, 0x26, 0x27, 0x23, 0x07, +0x23, 0x11, 0x33, 0x15, 0x07, 0x3e, 0x01, 0x33, +0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x27, 0x32, +0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, +0x06, 0x07, 0x11, 0x1e, 0x01, 0x01, 0x18, 0x23, +0x4b, 0x22, 0x02, 0x05, 0x25, 0x2c, 0x02, 0x25, +0x54, 0x2d, 0x60, 0x60, 0x22, 0x3b, 0x4d, 0x2c, +0x24, 0x3e, 0x2c, 0x19, 0x11, 0x24, 0x3a, 0x29, +0x24, 0x4e, 0x2b, 0x28, 0x4a, 0x0c, 0x21, 0x1c, +0x31, 0x02, 0xcf, 0xd0, 0x5e, 0x1f, 0x2c, 0x85, +0x70, 0x3d, 0x60, 0x43, 0x23, 0x27, 0x20, 0x3a, +0x51, 0x31, 0x2c, 0x4c, 0x37, 0x1f, 0x29, 0x26, +0xfe, 0xe3, 0x22, 0x1c, 0x00, 0x01, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xa7, 0x01, 0xec, 0x00, 0x21, +0x00, 0x39, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0a, 0x2f, 0x1b, 0xb9, 0x00, 0x0a, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x0a, +0x10, 0xb9, 0x00, 0x11, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x00, 0x10, 0xb9, 0x00, 0x1b, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x05, 0x22, 0x2e, 0x02, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x07, +0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, +0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x17, 0x0e, +0x01, 0x01, 0x0e, 0x2f, 0x4f, 0x3b, 0x21, 0x24, +0x3c, 0x4f, 0x2c, 0x32, 0x42, 0x19, 0x1a, 0x17, +0x38, 0x23, 0x25, 0x3f, 0x2f, 0x1b, 0x19, 0x2d, +0x41, 0x27, 0x26, 0x41, 0x19, 0x17, 0x1f, 0x4c, +0x0c, 0x22, 0x40, 0x5d, 0x3c, 0x3c, 0x5f, 0x40, +0x22, 0x24, 0x17, 0x1f, 0x16, 0x1d, 0x1f, 0x39, +0x4e, 0x30, 0x2f, 0x4e, 0x38, 0x1f, 0x20, 0x17, +0x1f, 0x1b, 0x24, 0x00, 0x00, 0x02, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc4, 0x02, 0xcf, 0x00, 0x14, +0x00, 0x25, 0x00, 0x7a, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, 0x1b, 0xb9, +0x00, 0x08, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, 0x2f, 0x1b, +0xb9, 0x00, 0x0d, 0x00, 0x13, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, +0xba, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x00, 0x11, +0x12, 0x39, 0xb8, 0x00, 0x10, 0xd0, 0xb8, 0x00, +0x10, 0x2f, 0xba, 0x00, 0x11, 0x00, 0x00, 0x00, +0x08, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, 0x10, +0xb9, 0x00, 0x15, 0x00, 0x01, 0xf4, 0xb8, 0x00, +0x11, 0x10, 0xb9, 0x00, 0x18, 0x00, 0x01, 0xf4, +0xb8, 0x00, 0x0b, 0x10, 0xb9, 0x00, 0x19, 0x00, +0x01, 0xf4, 0xb8, 0x00, 0x08, 0x10, 0xb9, 0x00, +0x1c, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, 0x22, +0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, +0x17, 0x27, 0x35, 0x33, 0x11, 0x23, 0x27, 0x23, +0x0e, 0x01, 0x27, 0x32, 0x36, 0x37, 0x11, 0x2e, +0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, +0x02, 0xfb, 0x5b, 0x6c, 0x22, 0x3b, 0x4d, 0x2b, +0x2c, 0x41, 0x24, 0x02, 0x2c, 0x26, 0x04, 0x03, +0x1d, 0x4f, 0x2a, 0x28, 0x49, 0x26, 0x26, 0x43, +0x23, 0x24, 0x3e, 0x2d, 0x1a, 0x15, 0x28, 0x3b, +0x0c, 0x81, 0x7a, 0x3a, 0x5e, 0x42, 0x23, 0x1f, +0x1c, 0x58, 0xc6, 0xfd, 0x31, 0x3e, 0x1d, 0x2d, +0x27, 0x29, 0x26, 0x01, 0x1d, 0x22, 0x1c, 0x21, +0x39, 0x4f, 0x2d, 0x30, 0x4e, 0x37, 0x1f, 0x00, +0x00, 0x02, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xbd, +0x01, 0xec, 0x00, 0x1c, 0x00, 0x25, 0x00, 0x51, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0a, 0x2f, 0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x11, 0x00, 0x0a, +0x00, 0x00, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x11, +0x2f, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x16, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x11, 0x10, 0xb9, +0x00, 0x1d, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0a, +0x10, 0xb9, 0x00, 0x20, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x05, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x32, 0x16, 0x15, 0x1c, 0x01, 0x07, +0x21, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x37, 0x17, +0x0e, 0x01, 0x13, 0x34, 0x26, 0x23, 0x22, 0x0e, +0x02, 0x07, 0x01, 0x12, 0x2e, 0x51, 0x3c, 0x23, +0x23, 0x3b, 0x4b, 0x28, 0x56, 0x62, 0x02, 0xfe, +0xa6, 0x01, 0x1a, 0x2f, 0x42, 0x29, 0x27, 0x3f, +0x1b, 0x12, 0x1d, 0x45, 0x4c, 0x4c, 0x41, 0x1f, +0x38, 0x2d, 0x1d, 0x04, 0x0c, 0x22, 0x41, 0x5d, +0x3b, 0x3b, 0x5e, 0x41, 0x23, 0x74, 0x6a, 0x09, +0x12, 0x09, 0x2d, 0x4d, 0x37, 0x1f, 0x17, 0x14, +0x22, 0x11, 0x1e, 0x01, 0x1a, 0x5d, 0x5b, 0x19, +0x30, 0x44, 0x2b, 0x00, 0x00, 0x01, 0x00, 0x21, +0x00, 0x00, 0x01, 0x20, 0x02, 0xdb, 0x00, 0x16, +0x00, 0x56, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x07, 0x2f, 0x1b, 0xb9, 0x00, 0x07, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x14, 0x2f, 0x1b, 0xb9, 0x00, +0x14, 0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0b, 0x2f, 0x1b, 0xb9, +0x00, 0x0b, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, +0x14, 0x10, 0xb9, 0x00, 0x03, 0x00, 0x01, 0xf4, +0xb8, 0x00, 0x07, 0x10, 0xb9, 0x00, 0x0a, 0x00, +0x01, 0xf4, 0xb8, 0x00, 0x0d, 0xd0, 0xb8, 0x00, +0x07, 0x10, 0xb8, 0x00, 0x10, 0xd0, 0x30, 0x31, +0x01, 0x2e, 0x01, 0x23, 0x22, 0x06, 0x1d, 0x01, +0x33, 0x15, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, +0x37, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x01, +0x14, 0x0f, 0x1d, 0x0e, 0x26, 0x25, 0x6f, 0x6f, +0x2c, 0x42, 0x42, 0x3e, 0x39, 0x23, 0x23, 0x02, +0xa7, 0x08, 0x06, 0x38, 0x35, 0x68, 0x26, 0xfe, +0x46, 0x01, 0xba, 0x22, 0x04, 0x6b, 0x48, 0x48, +0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x34, +0xff, 0x19, 0x01, 0xdc, 0x01, 0xec, 0x00, 0x35, +0x00, 0x49, 0x00, 0x5b, 0x00, 0x87, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x16, 0x2f, +0x1b, 0xb9, 0x00, 0x16, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x07, 0x3e, +0x59, 0xba, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x16, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x2d, 0x2f, 0xb9, +0x00, 0x52, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x07, +0x00, 0x2d, 0x00, 0x52, 0x11, 0x12, 0x39, 0xba, +0x00, 0x24, 0x00, 0x16, 0x00, 0x00, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x24, 0x2f, 0xb9, 0x00, 0x36, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x0e, 0x00, 0x36, +0x00, 0x24, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x16, +0x10, 0xb8, 0x00, 0x1a, 0xd0, 0xb8, 0x00, 0x1a, +0x2f, 0xb9, 0x00, 0x1b, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x16, 0x10, 0xb9, 0x00, 0x40, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x4a, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, 0x22, 0x26, +0x35, 0x34, 0x36, 0x37, 0x35, 0x2e, 0x01, 0x35, +0x34, 0x36, 0x37, 0x35, 0x2e, 0x01, 0x35, 0x34, +0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x33, 0x15, +0x23, 0x1e, 0x01, 0x15, 0x14, 0x0e, 0x02, 0x23, +0x22, 0x26, 0x27, 0x0e, 0x01, 0x15, 0x14, 0x16, +0x3b, 0x01, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, +0x03, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, +0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, +0x13, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x2b, +0x01, 0x22, 0x26, 0x27, 0x0e, 0x01, 0x15, 0x14, +0x16, 0xf9, 0x5b, 0x6a, 0x26, 0x21, 0x12, 0x18, +0x24, 0x10, 0x17, 0x25, 0x1a, 0x2e, 0x3e, 0x23, +0x14, 0x20, 0x0b, 0xa3, 0x70, 0x17, 0x1e, 0x1a, +0x2d, 0x3d, 0x23, 0x14, 0x2b, 0x11, 0x10, 0x17, +0x26, 0x36, 0x67, 0x51, 0x4d, 0x20, 0x3b, 0x54, +0x3b, 0x19, 0x2d, 0x22, 0x14, 0x14, 0x21, 0x2e, +0x19, 0x1a, 0x2d, 0x22, 0x14, 0x14, 0x23, 0x2d, +0x25, 0x28, 0x42, 0x2e, 0x19, 0x39, 0x36, 0x67, +0x08, 0x21, 0x13, 0x21, 0x1e, 0x53, 0xe7, 0x48, +0x3d, 0x20, 0x3c, 0x18, 0x04, 0x0b, 0x26, 0x1c, +0x20, 0x2d, 0x0b, 0x04, 0x14, 0x44, 0x2c, 0x25, +0x3e, 0x2d, 0x19, 0x07, 0x05, 0x25, 0x14, 0x3f, +0x26, 0x25, 0x3e, 0x2d, 0x19, 0x0a, 0x0a, 0x0d, +0x20, 0x18, 0x1a, 0x25, 0x35, 0x39, 0x1f, 0x3b, +0x2d, 0x1b, 0x01, 0xa3, 0x13, 0x24, 0x32, 0x1e, +0x1e, 0x32, 0x22, 0x13, 0x13, 0x22, 0x31, 0x1f, +0x1e, 0x32, 0x24, 0x13, 0xfe, 0x81, 0x15, 0x22, +0x2b, 0x17, 0x28, 0x21, 0x03, 0x05, 0x17, 0x34, +0x1a, 0x2d, 0x38, 0x00, 0x00, 0x01, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xbf, 0x02, 0xcf, 0x00, 0x13, +0x00, 0x58, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, 0x05, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, +0x00, 0x13, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, +0x02, 0x00, 0x05, 0x00, 0x13, 0x11, 0x12, 0x39, +0xb8, 0x00, 0x0a, 0xd0, 0xb8, 0x00, 0x05, 0x10, +0xb9, 0x00, 0x0e, 0x00, 0x01, 0xf4, 0xb8, 0x00, +0x02, 0x10, 0xb9, 0x00, 0x11, 0x00, 0x01, 0xf4, +0x30, 0x31, 0x13, 0x33, 0x11, 0x3e, 0x01, 0x33, +0x32, 0x16, 0x15, 0x11, 0x23, 0x11, 0x34, 0x26, +0x23, 0x22, 0x06, 0x07, 0x11, 0x23, 0x5c, 0x2c, +0x26, 0x4e, 0x32, 0x4b, 0x46, 0x2c, 0x33, 0x3b, +0x2b, 0x46, 0x2c, 0x2c, 0x02, 0xcf, 0xfe, 0xc6, +0x26, 0x31, 0x5a, 0x5e, 0xfe, 0xcc, 0x01, 0x2e, +0x4d, 0x49, 0x2d, 0x2d, 0xfe, 0x96, 0x00, 0x00, +0x00, 0x02, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x9b, +0x02, 0xa3, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x35, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, 0x03, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x04, 0xd0, 0xb8, 0x00, 0x04, 0x2f, 0xb8, +0x00, 0x0a, 0xd0, 0x30, 0x31, 0x13, 0x33, 0x11, +0x23, 0x13, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, +0x32, 0x16, 0x15, 0x14, 0x06, 0x5c, 0x2c, 0x2c, +0x17, 0x11, 0x17, 0x17, 0x11, 0x11, 0x17, 0x17, +0x01, 0xe0, 0xfe, 0x20, 0x02, 0x54, 0x16, 0x11, +0x13, 0x15, 0x15, 0x13, 0x11, 0x16, 0x00, 0x00, +0x00, 0x02, 0xff, 0xdf, 0xff, 0x1b, 0x00, 0x9c, +0x02, 0xa3, 0x00, 0x0f, 0x00, 0x1b, 0x00, 0x3b, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x07, 0x3e, 0x59, 0xb9, 0x00, 0x07, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0b, 0x10, 0xb8, 0x00, 0x10, +0xd0, 0xb8, 0x00, 0x10, 0x2f, 0xb8, 0x00, 0x16, +0xd0, 0x30, 0x31, 0x17, 0x22, 0x26, 0x27, 0x37, +0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, +0x11, 0x14, 0x06, 0x13, 0x22, 0x26, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x1d, +0x11, 0x22, 0x0b, 0x0b, 0x09, 0x1b, 0x0e, 0x28, +0x18, 0x2d, 0x34, 0x1e, 0x10, 0x18, 0x18, 0x10, +0x11, 0x18, 0x18, 0xe5, 0x07, 0x05, 0x24, 0x03, +0x07, 0x3b, 0x2e, 0x02, 0x36, 0xfd, 0xc7, 0x47, +0x45, 0x03, 0x39, 0x16, 0x11, 0x13, 0x15, 0x15, +0x13, 0x11, 0x16, 0x00, 0x00, 0x01, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xc4, 0x02, 0xcf, 0x00, 0x0c, +0x00, 0x65, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x04, 0x2f, 0x1b, 0xb9, 0x00, 0x04, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0c, 0x2f, 0x1b, 0xb9, +0x00, 0x0c, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, 0x1b, +0xb9, 0x00, 0x08, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x11, 0x12, +0x39, 0xba, 0x00, 0x06, 0x00, 0x04, 0x00, 0x08, +0x11, 0x12, 0x39, 0xba, 0x00, 0x09, 0x00, 0x00, +0x00, 0x08, 0x11, 0x12, 0x39, 0x30, 0x31, 0x13, +0x33, 0x11, 0x33, 0x13, 0x33, 0x07, 0x13, 0x23, +0x03, 0x07, 0x15, 0x23, 0x5c, 0x2c, 0x02, 0xed, +0x33, 0x9c, 0xb6, 0x31, 0x9f, 0x6c, 0x2c, 0x02, +0xcf, 0xfd, 0xee, 0x01, 0x23, 0xbe, 0xfe, 0xde, +0x01, 0x01, 0x7e, 0x83, 0x00, 0x01, 0x00, 0x5c, +0xff, 0xf4, 0x00, 0xb7, 0x02, 0xcf, 0x00, 0x0e, +0x00, 0x2b, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, 0x03, +0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x08, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, 0x22, 0x35, +0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x3a, 0x01, +0x37, 0x17, 0x0e, 0x01, 0x97, 0x3b, 0x2c, 0x0c, +0x09, 0x03, 0x07, 0x08, 0x08, 0x07, 0x0e, 0x0c, +0x4c, 0x02, 0x8f, 0xfd, 0x6b, 0x10, 0x0f, 0x02, +0x24, 0x02, 0x03, 0x00, 0x00, 0x01, 0x00, 0x5c, +0x00, 0x00, 0x02, 0xd8, 0x01, 0xec, 0x00, 0x20, +0x00, 0x89, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x20, 0x2f, 0x1b, 0xb9, 0x00, +0x20, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x02, +0x00, 0x00, 0x00, 0x20, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x06, 0xd0, 0xb8, +0x00, 0x06, 0x2f, 0xba, 0x00, 0x09, 0x00, 0x00, +0x00, 0x20, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x0c, +0xd0, 0xb8, 0x00, 0x0c, 0x2f, 0xb8, 0x00, 0x20, +0x10, 0xb8, 0x00, 0x18, 0xd0, 0xb8, 0x00, 0x18, +0x2f, 0xb8, 0x00, 0x10, 0xd0, 0xb8, 0x00, 0x10, +0x2f, 0xb8, 0x00, 0x0c, 0x10, 0xb9, 0x00, 0x14, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x09, 0x10, 0xb9, +0x00, 0x16, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x06, +0x10, 0xb9, 0x00, 0x1c, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x02, 0x10, 0xb9, 0x00, 0x1e, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x13, 0x33, 0x17, 0x33, 0x3e, +0x01, 0x33, 0x32, 0x16, 0x17, 0x3e, 0x01, 0x33, +0x32, 0x15, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, +0x22, 0x07, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, +0x22, 0x07, 0x11, 0x23, 0x5c, 0x26, 0x04, 0x03, +0x20, 0x4f, 0x28, 0x3a, 0x3e, 0x0d, 0x2a, 0x4f, +0x2a, 0x90, 0x2d, 0x34, 0x37, 0x41, 0x4f, 0x2c, +0x34, 0x38, 0x41, 0x4f, 0x2c, 0x01, 0xe0, 0x4a, +0x25, 0x31, 0x35, 0x2d, 0x2d, 0x35, 0xb8, 0xfe, +0xcc, 0x01, 0x2e, 0x4d, 0x49, 0x5a, 0xfe, 0x96, +0x01, 0x2e, 0x4d, 0x49, 0x5a, 0xfe, 0x96, 0x00, +0x00, 0x01, 0x00, 0x5c, 0x00, 0x00, 0x01, 0xbf, +0x01, 0xec, 0x00, 0x14, 0x00, 0x5b, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x14, +0x2f, 0x1b, 0xb9, 0x00, 0x14, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x06, 0xd0, 0xb8, 0x00, 0x06, 0x2f, 0xb8, +0x00, 0x14, 0x10, 0xb8, 0x00, 0x0b, 0xd0, 0xb8, +0x00, 0x0b, 0x2f, 0xb8, 0x00, 0x06, 0x10, 0xb9, +0x00, 0x0f, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x02, +0x10, 0xb9, 0x00, 0x12, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x13, 0x33, 0x17, 0x33, 0x3e, 0x01, 0x33, +0x32, 0x16, 0x15, 0x11, 0x23, 0x11, 0x34, 0x26, +0x23, 0x22, 0x06, 0x07, 0x11, 0x23, 0x5c, 0x26, +0x04, 0x03, 0x25, 0x4e, 0x32, 0x4b, 0x46, 0x2c, +0x33, 0x3b, 0x2b, 0x46, 0x2c, 0x2c, 0x01, 0xe0, +0x4a, 0x25, 0x31, 0x5a, 0x5e, 0xfe, 0xcc, 0x01, +0x2e, 0x4d, 0x49, 0x2d, 0x2d, 0xfe, 0x96, 0x00, +0x00, 0x02, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xe3, +0x01, 0xec, 0x00, 0x13, 0x00, 0x27, 0x00, 0x35, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0a, 0x2f, 0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x14, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0a, 0x10, 0xb9, 0x00, 0x1e, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x05, 0x22, 0x2e, +0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, +0x02, 0x15, 0x14, 0x0e, 0x02, 0x27, 0x32, 0x3e, +0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, +0x02, 0x15, 0x14, 0x1e, 0x02, 0x01, 0x0b, 0x2b, +0x4e, 0x3b, 0x23, 0x23, 0x3b, 0x4e, 0x2b, 0x2b, +0x4f, 0x3b, 0x23, 0x23, 0x3b, 0x4f, 0x2b, 0x24, +0x3f, 0x2d, 0x1a, 0x1a, 0x2d, 0x3f, 0x24, 0x24, +0x3e, 0x2d, 0x1a, 0x1a, 0x2d, 0x3e, 0x0c, 0x22, +0x40, 0x5d, 0x3c, 0x3c, 0x5f, 0x40, 0x22, 0x22, +0x40, 0x5f, 0x3c, 0x3c, 0x5d, 0x40, 0x22, 0x27, +0x1f, 0x38, 0x4e, 0x2f, 0x30, 0x4e, 0x39, 0x1f, +0x1f, 0x39, 0x4e, 0x30, 0x2f, 0x4e, 0x38, 0x1f, +0x00, 0x02, 0x00, 0x5c, 0xff, 0x27, 0x01, 0xec, +0x01, 0xec, 0x00, 0x10, 0x00, 0x24, 0x00, 0x7e, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x17, 0x2f, 0x1b, 0xb9, 0x00, 0x17, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x1f, 0x2f, 0x1b, 0xb9, 0x00, 0x1f, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x24, 0x2f, 0x1b, 0xb9, 0x00, 0x24, +0x00, 0x07, 0x3e, 0x59, 0xba, 0x00, 0x22, 0x00, +0x1f, 0x00, 0x17, 0x11, 0x12, 0x39, 0xb8, 0x00, +0x22, 0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, +0xb8, 0x00, 0x1f, 0x10, 0xb9, 0x00, 0x03, 0x00, +0x01, 0xf4, 0xb8, 0x00, 0x17, 0x10, 0xb9, 0x00, +0x0d, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x13, 0x00, +0x17, 0x00, 0x1f, 0x11, 0x12, 0x39, 0xb8, 0x00, +0x13, 0x10, 0xb9, 0x00, 0x10, 0x00, 0x01, 0xf4, +0xb8, 0x00, 0x17, 0x10, 0xb8, 0x00, 0x11, 0xd0, +0xb8, 0x00, 0x11, 0x2f, 0x30, 0x31, 0x37, 0x1e, +0x01, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, +0x02, 0x23, 0x22, 0x06, 0x07, 0x27, 0x33, 0x17, +0x33, 0x3e, 0x01, 0x33, 0x32, 0x16, 0x15, 0x14, +0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x11, 0x23, +0x88, 0x2a, 0x48, 0x1c, 0x24, 0x3e, 0x2c, 0x19, +0x11, 0x24, 0x3a, 0x29, 0x24, 0x4d, 0x2c, 0x2c, +0x26, 0x04, 0x03, 0x23, 0x53, 0x2d, 0x60, 0x60, +0x22, 0x3b, 0x4d, 0x2a, 0x22, 0x48, 0x26, 0x2c, +0x59, 0x22, 0x1c, 0x20, 0x3a, 0x51, 0x31, 0x2c, +0x4c, 0x37, 0x1f, 0x29, 0x26, 0x6a, 0x3c, 0x1c, +0x2c, 0x85, 0x70, 0x3d, 0x60, 0x43, 0x23, 0x1f, +0x1c, 0xfe, 0xf8, 0x00, 0x00, 0x02, 0x00, 0x34, +0xff, 0x27, 0x01, 0xc4, 0x01, 0xec, 0x00, 0x14, +0x00, 0x25, 0x00, 0x7e, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0c, 0x2f, 0x1b, 0xb9, +0x00, 0x0c, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, 0x1b, +0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x14, 0x2f, +0x1b, 0xb9, 0x00, 0x14, 0x00, 0x07, 0x3e, 0x59, +0xba, 0x00, 0x01, 0x00, 0x04, 0x00, 0x0c, 0x11, +0x12, 0x39, 0xba, 0x00, 0x0f, 0x00, 0x0c, 0x00, +0x04, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x0c, 0x10, +0xb8, 0x00, 0x12, 0xd0, 0xb8, 0x00, 0x12, 0x2f, +0xb8, 0x00, 0x04, 0x10, 0xb9, 0x00, 0x15, 0x00, +0x01, 0xf4, 0xb8, 0x00, 0x01, 0x10, 0xb9, 0x00, +0x18, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0f, 0x10, +0xb9, 0x00, 0x19, 0x00, 0x01, 0xf4, 0xb8, 0x00, +0x0c, 0x10, 0xb9, 0x00, 0x1c, 0x00, 0x01, 0xf4, +0x30, 0x31, 0x05, 0x37, 0x0e, 0x01, 0x23, 0x22, +0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, +0x17, 0x33, 0x37, 0x33, 0x11, 0x23, 0x27, 0x32, +0x36, 0x37, 0x11, 0x2e, 0x01, 0x23, 0x22, 0x0e, +0x02, 0x15, 0x14, 0x1e, 0x02, 0x01, 0x98, 0x02, +0x20, 0x4f, 0x30, 0x5b, 0x6c, 0x22, 0x3b, 0x4d, +0x2b, 0x2c, 0x41, 0x22, 0x02, 0x05, 0x25, 0x2c, +0x97, 0x28, 0x49, 0x26, 0x26, 0x43, 0x23, 0x24, +0x3e, 0x2d, 0x1a, 0x15, 0x28, 0x3b, 0x20, 0x5f, +0x1f, 0x2c, 0x81, 0x7a, 0x3a, 0x5e, 0x42, 0x23, +0x1e, 0x1a, 0x2c, 0xfd, 0x47, 0xf4, 0x29, 0x26, +0x01, 0x1d, 0x22, 0x1c, 0x21, 0x39, 0x4f, 0x2d, +0x30, 0x4e, 0x37, 0x1f, 0x00, 0x01, 0x00, 0x5c, +0x00, 0x00, 0x01, 0x41, 0x01, 0xec, 0x00, 0x12, +0x00, 0x49, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x12, 0x2f, 0x1b, 0xb9, 0x00, +0x12, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x02, +0x00, 0x00, 0x00, 0x12, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x06, 0xd0, 0xb8, +0x00, 0x06, 0x2f, 0xb8, 0x00, 0x0d, 0xdc, 0xb8, +0x00, 0x02, 0x10, 0xb9, 0x00, 0x10, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x13, 0x33, 0x17, 0x33, 0x3e, +0x01, 0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, 0x01, +0x23, 0x22, 0x06, 0x07, 0x11, 0x23, 0x5c, 0x26, +0x04, 0x03, 0x18, 0x45, 0x2b, 0x0e, 0x16, 0x0c, +0x0a, 0x0c, 0x12, 0x0e, 0x20, 0x47, 0x1c, 0x2c, +0x01, 0xe0, 0x59, 0x2d, 0x38, 0x04, 0x06, 0x28, +0x05, 0x03, 0x37, 0x44, 0xfe, 0xb9, 0x00, 0x00, +0x00, 0x01, 0x00, 0x20, 0xff, 0xf4, 0x01, 0x72, +0x01, 0xec, 0x00, 0x33, 0x00, 0x49, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x19, 0x2f, +0x1b, 0xb9, 0x00, 0x19, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x07, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x0f, 0x00, 0x00, 0x00, 0x19, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x19, 0x10, 0xb9, 0x00, 0x20, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x2a, 0x00, 0x19, +0x00, 0x00, 0x11, 0x12, 0x39, 0x30, 0x31, 0x17, +0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, +0x36, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x2e, 0x03, +0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, +0x07, 0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, +0x14, 0x1e, 0x02, 0x17, 0x1e, 0x03, 0x15, 0x14, +0x0e, 0x02, 0xd0, 0x36, 0x5a, 0x20, 0x1a, 0x1f, +0x46, 0x34, 0x39, 0x39, 0x15, 0x22, 0x29, 0x15, +0x1b, 0x37, 0x2c, 0x1b, 0x14, 0x28, 0x39, 0x26, +0x26, 0x49, 0x1a, 0x18, 0x18, 0x36, 0x25, 0x1c, +0x28, 0x1b, 0x0d, 0x13, 0x20, 0x29, 0x15, 0x1c, +0x38, 0x2d, 0x1c, 0x15, 0x2a, 0x3c, 0x0c, 0x27, +0x1b, 0x21, 0x1a, 0x23, 0x39, 0x26, 0x16, 0x22, +0x18, 0x12, 0x08, 0x0a, 0x16, 0x1f, 0x2b, 0x1f, +0x1a, 0x2f, 0x23, 0x14, 0x1c, 0x16, 0x1f, 0x12, +0x19, 0x0f, 0x18, 0x20, 0x10, 0x15, 0x1d, 0x16, +0x11, 0x08, 0x0b, 0x16, 0x20, 0x2f, 0x23, 0x1b, +0x31, 0x25, 0x16, 0x00, 0x00, 0x01, 0x00, 0x1c, +0xff, 0xf4, 0x01, 0x2d, 0x02, 0x6b, 0x00, 0x1b, +0x00, 0x4f, 0x00, 0x7c, 0xb8, 0x00, 0x0b, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x09, 0x2f, 0x1b, 0xb9, 0x00, 0x09, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x09, 0x10, 0xb9, +0x00, 0x06, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x09, +0x10, 0xb8, 0x00, 0x0d, 0xd0, 0xb8, 0x00, 0x06, +0x10, 0xb8, 0x00, 0x0e, 0xd0, 0xb8, 0x00, 0x00, +0x10, 0xb9, 0x00, 0x15, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x17, 0x22, 0x2e, 0x02, 0x35, 0x11, 0x23, +0x35, 0x3f, 0x01, 0x33, 0x15, 0x33, 0x15, 0x23, +0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, +0x17, 0x0e, 0x01, 0xdf, 0x23, 0x2e, 0x1c, 0x0b, +0x4b, 0x4c, 0x06, 0x26, 0x8b, 0x8b, 0x07, 0x12, +0x1f, 0x19, 0x0e, 0x21, 0x0d, 0x0c, 0x15, 0x2a, +0x0c, 0x15, 0x26, 0x36, 0x20, 0x01, 0x35, 0x22, +0x04, 0x8b, 0x8b, 0x26, 0xfe, 0xc7, 0x17, 0x25, +0x1b, 0x0f, 0x09, 0x06, 0x24, 0x08, 0x0a, 0x00, +0x00, 0x01, 0x00, 0x55, 0xff, 0xf4, 0x01, 0xb5, +0x01, 0xe0, 0x00, 0x14, 0x00, 0x53, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, +0x1b, 0xb9, 0x00, 0x04, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x09, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x11, 0x00, 0x04, 0x00, 0x00, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x11, 0x10, 0xb9, 0x00, 0x0c, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x04, 0x10, 0xb8, +0x00, 0x0d, 0xd0, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x0f, 0xd0, 0xb8, 0x00, 0x0f, 0x2f, 0x30, +0x31, 0x17, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, +0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x11, 0x33, +0x11, 0x23, 0x27, 0x23, 0x0e, 0x01, 0xe6, 0x4b, +0x46, 0x2c, 0x33, 0x3a, 0x2b, 0x46, 0x2a, 0x2c, +0x25, 0x05, 0x02, 0x23, 0x4e, 0x0c, 0x5a, 0x5e, +0x01, 0x34, 0xfe, 0xd2, 0x4d, 0x49, 0x2f, 0x33, +0x01, 0x62, 0xfe, 0x20, 0x50, 0x2a, 0x32, 0x00, +0x00, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x01, 0xa6, +0x01, 0xe0, 0x00, 0x0d, 0x00, 0x40, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0a, +0x2f, 0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x09, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0d, 0x2f, 0x1b, 0xb9, 0x00, 0x0d, 0x00, 0x05, +0x3e, 0x59, 0xba, 0x00, 0x05, 0x00, 0x00, 0x00, +0x0d, 0x11, 0x12, 0x39, 0x30, 0x31, 0x13, 0x33, +0x13, 0x1e, 0x01, 0x17, 0x33, 0x3e, 0x01, 0x37, +0x13, 0x33, 0x03, 0x23, 0x0c, 0x30, 0x6c, 0x0b, +0x1a, 0x0b, 0x04, 0x0c, 0x19, 0x0c, 0x6c, 0x2d, +0xb2, 0x34, 0x01, 0xe0, 0xfe, 0xd3, 0x23, 0x46, +0x21, 0x21, 0x46, 0x23, 0x01, 0x2d, 0xfe, 0x20, +0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x02, 0x95, +0x01, 0xe0, 0x00, 0x21, 0x00, 0x5b, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x21, +0x2f, 0x1b, 0xb9, 0x00, 0x21, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x05, 0x00, 0x21, 0x00, 0x00, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x0a, 0xd0, 0xb8, 0x00, 0x21, 0x10, 0xb8, +0x00, 0x17, 0xd0, 0xb8, 0x00, 0x0a, 0x10, 0xb8, +0x00, 0x14, 0xd0, 0xba, 0x00, 0x0f, 0x00, 0x17, +0x00, 0x14, 0x11, 0x12, 0x39, 0xba, 0x00, 0x1c, +0x00, 0x00, 0x00, 0x20, 0x11, 0x12, 0x39, 0x30, +0x31, 0x13, 0x33, 0x13, 0x1e, 0x01, 0x17, 0x33, +0x3e, 0x01, 0x37, 0x13, 0x33, 0x13, 0x1e, 0x01, +0x17, 0x33, 0x3e, 0x01, 0x37, 0x13, 0x33, 0x03, +0x23, 0x03, 0x2e, 0x01, 0x27, 0x23, 0x0e, 0x01, +0x07, 0x03, 0x23, 0x18, 0x30, 0x56, 0x09, 0x10, +0x08, 0x04, 0x08, 0x12, 0x09, 0x57, 0x35, 0x57, +0x09, 0x12, 0x09, 0x04, 0x08, 0x12, 0x08, 0x55, +0x2d, 0x8a, 0x3a, 0x54, 0x0b, 0x0f, 0x0b, 0x04, +0x08, 0x13, 0x0b, 0x53, 0x35, 0x01, 0xe0, 0xfe, +0xc9, 0x21, 0x3f, 0x20, 0x20, 0x3f, 0x21, 0x01, +0x37, 0xfe, 0xc9, 0x21, 0x3f, 0x20, 0x20, 0x3f, +0x21, 0x01, 0x37, 0xfe, 0x20, 0x01, 0x2a, 0x23, +0x43, 0x23, 0x23, 0x45, 0x23, 0xfe, 0xd8, 0x00, +0x00, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x01, 0x89, +0x01, 0xe0, 0x00, 0x19, 0x00, 0x49, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x01, 0x2f, +0x1b, 0xb9, 0x00, 0x01, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x19, +0x2f, 0x1b, 0xb9, 0x00, 0x19, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x01, 0x10, 0xb8, 0x00, 0x0b, +0xd0, 0xb8, 0x00, 0x19, 0x10, 0xb8, 0x00, 0x0f, +0xd0, 0xba, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x0f, +0x11, 0x12, 0x39, 0xba, 0x00, 0x14, 0x00, 0x01, +0x00, 0x19, 0x11, 0x12, 0x39, 0x30, 0x31, 0x37, +0x27, 0x33, 0x17, 0x1e, 0x01, 0x17, 0x33, 0x3e, +0x01, 0x3f, 0x01, 0x33, 0x07, 0x17, 0x23, 0x27, +0x2e, 0x01, 0x27, 0x23, 0x0e, 0x01, 0x0f, 0x01, +0x23, 0xb1, 0x96, 0x31, 0x4e, 0x0c, 0x19, 0x0e, +0x04, 0x0d, 0x17, 0x0d, 0x4b, 0x2e, 0x95, 0xa3, +0x31, 0x55, 0x0e, 0x1c, 0x0f, 0x04, 0x0e, 0x1b, +0x0e, 0x52, 0x2f, 0xfb, 0xe5, 0x7a, 0x14, 0x27, +0x14, 0x14, 0x27, 0x14, 0x7a, 0xe9, 0xf7, 0x83, +0x17, 0x2c, 0x15, 0x15, 0x2c, 0x17, 0x83, 0x00, +0x00, 0x01, 0x00, 0x0c, 0xff, 0x25, 0x01, 0xa8, +0x01, 0xe0, 0x00, 0x1b, 0x00, 0x47, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, 0x2f, +0x1b, 0xb9, 0x00, 0x0b, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x07, 0x3e, +0x59, 0xb9, 0x00, 0x06, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x11, 0x12, +0x39, 0xba, 0x00, 0x10, 0x00, 0x0b, 0x00, 0x00, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x0b, 0x10, 0xb8, +0x00, 0x15, 0xd0, 0x30, 0x31, 0x17, 0x22, 0x27, +0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x3f, 0x01, +0x03, 0x33, 0x13, 0x1e, 0x01, 0x17, 0x33, 0x3e, +0x01, 0x37, 0x13, 0x33, 0x03, 0x0e, 0x03, 0x49, +0x1b, 0x16, 0x0a, 0x08, 0x14, 0x0b, 0x2d, 0x3c, +0x12, 0x0d, 0xc5, 0x30, 0x74, 0x0b, 0x1b, 0x0e, +0x04, 0x0b, 0x17, 0x0a, 0x67, 0x2d, 0xbe, 0x0a, +0x1d, 0x27, 0x33, 0xdb, 0x0a, 0x27, 0x03, 0x05, +0x48, 0x37, 0x2a, 0x01, 0xe9, 0xfe, 0xd2, 0x1e, +0x48, 0x20, 0x20, 0x48, 0x1e, 0x01, 0x2e, 0xfd, +0xe4, 0x1e, 0x3a, 0x2c, 0x1b, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x1b, 0x00, 0x00, 0x01, 0x7a, +0x01, 0xe0, 0x00, 0x09, 0x00, 0x45, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, 0x2f, +0x1b, 0xb9, 0x00, 0x03, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, +0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x06, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x00, 0xd0, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x03, 0x10, 0xb9, 0x00, 0x01, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x05, 0xd0, 0xb8, 0x00, 0x05, +0x2f, 0x30, 0x31, 0x37, 0x01, 0x23, 0x35, 0x21, +0x15, 0x01, 0x21, 0x15, 0x21, 0x1b, 0x01, 0x1c, +0xfd, 0x01, 0x36, 0xfe, 0xe5, 0x01, 0x25, 0xfe, +0xa1, 0x18, 0x01, 0xa2, 0x26, 0x17, 0xfe, 0x5e, +0x27, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x03, 0x54, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x22, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x03, 0x54, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x03, 0x47, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x28, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x03, 0x42, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2a, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x03, 0x1e, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x36, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x03, 0x0b, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2c, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x03, 0x47, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x31, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x03, 0x67, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3a, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x03, 0x49, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3e, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0xff, 0x3e, 0x02, 0x06, 0x02, 0x93, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x07, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x03, 0x5f, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x38, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x03, 0x74, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x77, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x03, 0x74, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x79, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x03, 0x83, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x7b, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x03, 0x9d, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x7d, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0xff, 0x3e, 0x02, 0x06, 0x03, 0x47, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x27, 0x07, 0x28, +0x01, 0x07, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x07, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x03, 0x9d, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x7f, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x03, 0x9d, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x81, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x03, 0xab, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x83, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x03, 0x9e, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x07, 0x85, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0xff, 0x3e, 0x02, 0x06, 0x03, 0x47, 0x02, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x27, 0x07, 0x31, +0x01, 0x07, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x07, 0xfc, 0xea, 0x00, 0x02, 0x00, 0x08, +0xff, 0x33, 0x02, 0x2a, 0x02, 0x93, 0x00, 0x09, +0x00, 0x25, 0x00, 0x57, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x1b, 0x2f, 0x1b, 0xb9, +0x00, 0x1b, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x19, 0x2f, 0x1b, +0xb9, 0x00, 0x19, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x23, 0x00, 0x0d, 0x00, 0x03, 0x2b, 0xba, +0x00, 0x05, 0x00, 0x19, 0x00, 0x1b, 0x11, 0x12, +0x39, 0xba, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1b, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x18, 0x2f, 0xb9, +0x00, 0x09, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x19, +0x10, 0xb8, 0x00, 0x16, 0xd0, 0xb8, 0x00, 0x1d, +0xd0, 0x30, 0x31, 0x01, 0x27, 0x2e, 0x01, 0x27, +0x23, 0x0e, 0x01, 0x0f, 0x01, 0x01, 0x0e, 0x01, +0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x37, +0x23, 0x27, 0x21, 0x07, 0x23, 0x13, 0x33, 0x13, +0x0e, 0x01, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, +0x01, 0x7c, 0x2a, 0x14, 0x24, 0x11, 0x04, 0x11, +0x24, 0x14, 0x2a, 0x01, 0x98, 0x0b, 0x25, 0x11, +0x23, 0x31, 0x0c, 0x14, 0x1a, 0x0d, 0x06, 0x4d, +0xfe, 0xfb, 0x4e, 0x2e, 0xe8, 0x2e, 0xe8, 0x1f, +0x2b, 0x1f, 0x14, 0x19, 0x12, 0x01, 0x09, 0x7b, +0x3b, 0x6c, 0x3d, 0x3d, 0x6c, 0x3b, 0x7b, 0xfe, +0x42, 0x0a, 0x0e, 0x28, 0x2a, 0x13, 0x24, 0x20, +0x1b, 0x09, 0xe2, 0xe2, 0x02, 0x93, 0xfd, 0x6d, +0x14, 0x41, 0x1f, 0x1a, 0x1a, 0x0e, 0x00, 0x00, +0x00, 0x02, 0x00, 0x15, 0x00, 0x00, 0x02, 0xfa, +0x02, 0x93, 0x00, 0x06, 0x00, 0x16, 0x00, 0x7c, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0e, 0x2f, 0x1b, 0xb9, 0x00, 0x0e, 0x00, 0x11, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0d, 0x2f, 0x1b, 0xb9, 0x00, 0x0d, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x09, 0x2f, 0x1b, 0xb9, 0x00, 0x09, +0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x02, 0x00, +0x0e, 0x00, 0x0d, 0x11, 0x12, 0x39, 0xba, 0x00, +0x0a, 0x00, 0x0e, 0x00, 0x0d, 0x11, 0x12, 0x39, +0xb8, 0x00, 0x0a, 0x2f, 0xb9, 0x00, 0x06, 0x00, +0x01, 0xf4, 0xb8, 0x00, 0x09, 0x10, 0xb9, 0x00, +0x07, 0x00, 0x02, 0xf4, 0xb8, 0x00, 0x0e, 0x10, +0xb9, 0x00, 0x10, 0x00, 0x02, 0xf4, 0xba, 0x00, +0x15, 0x00, 0x0e, 0x00, 0x09, 0x11, 0x12, 0x39, +0xb8, 0x00, 0x15, 0x2f, 0xb9, 0x00, 0x13, 0x00, +0x01, 0xf4, 0x30, 0x31, 0x25, 0x11, 0x23, 0x0e, +0x01, 0x0f, 0x01, 0x05, 0x15, 0x21, 0x35, 0x23, +0x07, 0x23, 0x01, 0x21, 0x15, 0x21, 0x15, 0x33, +0x15, 0x23, 0x11, 0x01, 0x9b, 0x04, 0x1f, 0x3d, +0x20, 0x49, 0x02, 0x28, 0xfe, 0xa1, 0xde, 0x77, +0x31, 0x01, 0x6d, 0x01, 0x6e, 0xfe, 0xd9, 0xf5, +0xf5, 0xff, 0x01, 0x6c, 0x38, 0x73, 0x3c, 0x85, +0xd7, 0x28, 0xd9, 0xd9, 0x02, 0x93, 0x28, 0xf9, +0x28, 0xfe, 0xde, 0x00, 0xff, 0xff, 0x00, 0x15, +0x00, 0x00, 0x02, 0xfa, 0x03, 0x56, 0x02, 0x26, +0x00, 0x4e, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x02, 0x44, 0x00, 0x02, 0xff, 0xff, 0x00, 0x15, +0x00, 0x00, 0x02, 0xfa, 0x03, 0x0d, 0x02, 0x26, +0x00, 0x4e, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2c, +0x02, 0x44, 0x00, 0x02, 0x00, 0x03, 0x00, 0x21, +0x00, 0x00, 0x02, 0x23, 0x02, 0x93, 0x00, 0x0c, +0x00, 0x15, 0x00, 0x2b, 0x00, 0x5f, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x24, 0x2f, +0x1b, 0xb9, 0x00, 0x24, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1e, +0x2f, 0x1b, 0xb9, 0x00, 0x1e, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x0a, 0xd0, 0xb8, 0x00, 0x09, 0xd0, 0xb8, +0x00, 0x06, 0xd0, 0xb8, 0x00, 0x0e, 0xd0, 0xb8, +0x00, 0x24, 0x10, 0xb9, 0x00, 0x14, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x16, 0x00, 0x0e, 0x00, 0x06, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x0a, 0x10, 0xb8, +0x00, 0x20, 0xd0, 0xb8, 0x00, 0x09, 0x10, 0xb8, +0x00, 0x23, 0xd0, 0x30, 0x31, 0x25, 0x32, 0x36, +0x35, 0x34, 0x26, 0x2b, 0x01, 0x15, 0x33, 0x15, +0x23, 0x15, 0x11, 0x33, 0x32, 0x36, 0x35, 0x34, +0x26, 0x2b, 0x01, 0x13, 0x1e, 0x01, 0x15, 0x14, +0x0e, 0x02, 0x2b, 0x01, 0x35, 0x23, 0x35, 0x37, +0x11, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, +0x01, 0x22, 0x62, 0x72, 0x6f, 0x65, 0x85, 0xa6, +0xa6, 0x71, 0x66, 0x59, 0x5e, 0x5b, 0x77, 0xe8, +0x49, 0x55, 0x23, 0x40, 0x5a, 0x38, 0xbf, 0x4e, +0x4e, 0xb2, 0x63, 0x76, 0x3a, 0x3b, 0x25, 0x4c, +0x50, 0x48, 0x46, 0x7c, 0x21, 0x8d, 0x01, 0x4d, +0x42, 0x41, 0x40, 0x39, 0xfe, 0xf3, 0x0b, 0x50, +0x45, 0x30, 0x48, 0x30, 0x19, 0xb2, 0x1e, 0x03, +0x01, 0xc0, 0x4e, 0x52, 0x33, 0x4c, 0x0f, 0x00, +0xff, 0xff, 0x00, 0x61, 0xff, 0x61, 0x02, 0x15, +0x02, 0x93, 0x02, 0x26, 0x00, 0x05, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x01, 0x23, 0xfd, 0x03, +0xff, 0xff, 0x00, 0x37, 0xff, 0x25, 0x02, 0x0f, +0x02, 0x9f, 0x02, 0x26, 0x00, 0x06, 0x00, 0x00, +0x00, 0x07, 0x07, 0x57, 0x01, 0x53, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x0f, +0x03, 0x54, 0x02, 0x26, 0x00, 0x06, 0x00, 0x00, +0x00, 0x07, 0x07, 0x25, 0x01, 0x43, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x0f, +0x03, 0x47, 0x02, 0x26, 0x00, 0x06, 0x00, 0x00, +0x00, 0x07, 0x07, 0x28, 0x01, 0x43, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x0f, +0x03, 0x49, 0x02, 0x26, 0x00, 0x06, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3e, 0x01, 0x43, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x0f, +0x03, 0x21, 0x02, 0x26, 0x00, 0x06, 0x00, 0x00, +0x00, 0x07, 0x07, 0x34, 0x01, 0x43, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x02, 0x25, +0x03, 0x49, 0x02, 0x26, 0x00, 0x07, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3e, 0x01, 0x2e, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0xff, 0x3e, 0x02, 0x25, +0x02, 0x93, 0x02, 0x26, 0x00, 0x07, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x2c, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x61, 0xff, 0x61, 0x02, 0x25, +0x02, 0x93, 0x02, 0x26, 0x00, 0x07, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x01, 0x2c, 0xfd, 0x03, +0xff, 0xff, 0x00, 0x25, 0x00, 0x00, 0x02, 0x3a, +0x02, 0x93, 0x02, 0x06, 0x00, 0xf5, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd4, +0x03, 0x54, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, +0x00, 0x07, 0x07, 0x22, 0x01, 0x1a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd4, +0x03, 0x54, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, +0x00, 0x07, 0x07, 0x25, 0x01, 0x1a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd4, +0x03, 0x47, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, +0x00, 0x07, 0x07, 0x28, 0x01, 0x1a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd4, +0x03, 0x49, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3e, 0x01, 0x1a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd4, +0x03, 0x1e, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, +0x00, 0x07, 0x07, 0x36, 0x01, 0x1a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd4, +0x03, 0x0b, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2c, 0x01, 0x1a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd4, +0x03, 0x47, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, +0x00, 0x07, 0x07, 0x31, 0x01, 0x1a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd4, +0x03, 0x21, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, +0x00, 0x07, 0x07, 0x34, 0x01, 0x1a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0xff, 0x3e, 0x01, 0xd4, +0x02, 0x93, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x28, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd4, +0x03, 0x5f, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, +0x00, 0x07, 0x07, 0x38, 0x01, 0x1a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd4, +0x03, 0x42, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2a, 0x01, 0x1a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xe5, +0x03, 0x74, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, +0x00, 0x07, 0x07, 0x77, 0x01, 0x1a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd4, +0x03, 0x74, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, +0x00, 0x07, 0x07, 0x79, 0x01, 0x1a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd4, +0x03, 0x83, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, +0x00, 0x07, 0x07, 0x7b, 0x01, 0x1a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd4, +0x03, 0x9d, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, +0x00, 0x07, 0x07, 0x7d, 0x01, 0x1a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0xff, 0x3e, 0x01, 0xd4, +0x03, 0x47, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, +0x00, 0x27, 0x07, 0x28, 0x01, 0x1a, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x28, 0xfc, 0xea, +0x00, 0x01, 0x00, 0x61, 0xff, 0x33, 0x01, 0xe1, +0x02, 0x93, 0x00, 0x20, 0x00, 0x5d, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, +0x1b, 0xb9, 0x00, 0x08, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, +0x2f, 0x1b, 0xb9, 0x00, 0x07, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x08, 0x10, 0xb9, 0x00, 0x0a, +0x00, 0x02, 0xf4, 0xba, 0x00, 0x0f, 0x00, 0x08, +0x00, 0x07, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x0f, +0x2f, 0xb9, 0x00, 0x0d, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x07, 0x10, 0xb9, 0x00, 0x11, 0x00, 0x02, +0xf4, 0xb8, 0x00, 0x07, 0x10, 0xb8, 0x00, 0x12, +0xd0, 0x30, 0x31, 0x05, 0x22, 0x26, 0x35, 0x34, +0x36, 0x37, 0x21, 0x11, 0x21, 0x15, 0x21, 0x15, +0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x23, 0x0e, +0x03, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x17, +0x0e, 0x01, 0x01, 0x9f, 0x23, 0x31, 0x2c, 0x1d, +0xfe, 0xcd, 0x01, 0x69, 0xfe, 0xc5, 0x01, 0x08, +0xfe, 0xf8, 0x01, 0x45, 0x03, 0x11, 0x21, 0x1b, +0x11, 0x1f, 0x13, 0x19, 0x12, 0x11, 0x0c, 0x25, +0xcd, 0x28, 0x2a, 0x26, 0x42, 0x13, 0x02, 0x93, +0x28, 0xf9, 0x28, 0xfe, 0xde, 0x28, 0x03, 0x15, +0x1f, 0x27, 0x16, 0x1a, 0x1a, 0x0e, 0x1b, 0x0a, +0x0e, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xd4, 0x03, 0xb1, 0x02, 0x26, +0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x07, 0x89, +0x01, 0x17, 0x00, 0x00, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x15, 0x03, 0x54, 0x02, 0x26, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x01, 0x59, 0x00, 0x00, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x15, 0x03, 0x47, 0x02, 0x26, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x07, 0x07, 0x28, +0x01, 0x5a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x15, 0x03, 0x47, 0x02, 0x26, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x07, 0x07, 0x31, +0x01, 0x5a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x15, 0x03, 0x21, 0x02, 0x26, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x07, 0x07, 0x34, +0x01, 0x5a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x37, +0xff, 0x25, 0x02, 0x15, 0x02, 0x9f, 0x02, 0x26, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x07, 0x07, 0x54, +0x01, 0x54, 0x00, 0x00, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x15, 0x03, 0x49, 0x02, 0x26, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3e, +0x01, 0x5a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x15, 0x03, 0x0b, 0x02, 0x26, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2c, +0x01, 0x5a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x15, 0x03, 0x42, 0x02, 0x26, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2a, +0x01, 0x5a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x53, 0x03, 0x1b, 0x00, 0x37, +0x00, 0x57, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0d, 0x2f, 0x1b, 0xb9, 0x00, 0x0d, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, +0x03, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x15, +0x00, 0x01, 0x00, 0x1c, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x0d, 0x10, 0xb9, 0x00, 0x26, 0x00, 0x02, +0xf4, 0xb8, 0x00, 0x03, 0x10, 0xb9, 0x00, 0x30, +0x00, 0x02, 0xf4, 0xba, 0x00, 0x35, 0x00, 0x0d, +0x00, 0x03, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x35, +0x2f, 0xb9, 0x00, 0x37, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x25, 0x0e, 0x01, 0x23, 0x22, 0x2e, 0x02, +0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, +0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, +0x07, 0x2e, 0x01, 0x23, 0x22, 0x06, 0x15, 0x14, +0x16, 0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, 0x0e, +0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, +0x37, 0x35, 0x23, 0x35, 0x33, 0x02, 0x15, 0x1f, +0x63, 0x41, 0x40, 0x68, 0x4a, 0x29, 0x2a, 0x4c, +0x6c, 0x41, 0x25, 0x3b, 0x17, 0x0e, 0x37, 0x28, +0x0e, 0x18, 0x0b, 0x0a, 0x08, 0x12, 0x0b, 0x1c, +0x1c, 0x0f, 0x13, 0x1b, 0x1a, 0x48, 0x36, 0x39, +0x5a, 0x3f, 0x22, 0x20, 0x3d, 0x59, 0x38, 0x2d, +0x4f, 0x18, 0x9e, 0xca, 0x3f, 0x21, 0x2a, 0x30, +0x59, 0x7f, 0x4f, 0x4e, 0x7e, 0x59, 0x2f, 0x0d, +0x0a, 0x1c, 0x1e, 0x2a, 0x2f, 0x07, 0x05, 0x24, +0x03, 0x07, 0x23, 0x16, 0x18, 0x25, 0x1c, 0x1f, +0x14, 0x1d, 0x2a, 0x4d, 0x6e, 0x45, 0x45, 0x6f, +0x4e, 0x2b, 0x1a, 0x18, 0xcd, 0x27, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x02, 0x1e, +0x03, 0x47, 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, +0x00, 0x07, 0x07, 0x28, 0x01, 0x3f, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0xff, 0x3e, 0x02, 0x1e, +0x02, 0x93, 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x3f, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x61, 0xff, 0x1a, 0x02, 0x1e, +0x02, 0x93, 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2f, 0x01, 0x3f, 0xfc, 0xe0, +0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x02, 0x7b, +0x02, 0x93, 0x00, 0x03, 0x00, 0x17, 0x00, 0x73, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x11, 0x2f, 0x1b, 0xb9, 0x00, 0x11, 0x00, 0x11, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0a, 0x2f, 0x1b, 0xb9, 0x00, 0x0a, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x02, 0x00, 0x11, +0x00, 0x0a, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x02, +0x2f, 0xb8, 0x00, 0x01, 0xdc, 0xb8, 0x00, 0x05, +0xd0, 0xb8, 0x00, 0x0a, 0x10, 0xb8, 0x00, 0x06, +0xd0, 0xb8, 0x00, 0x02, 0x10, 0xb9, 0x00, 0x09, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x01, 0x10, 0xb8, +0x00, 0x0c, 0xd0, 0xb8, 0x00, 0x01, 0x10, 0xb9, +0x00, 0x12, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0f, +0xd0, 0xb8, 0x00, 0x11, 0x10, 0xb8, 0x00, 0x15, +0xd0, 0xb8, 0x00, 0x12, 0x10, 0xb8, 0x00, 0x16, +0xd0, 0x30, 0x31, 0x01, 0x21, 0x15, 0x21, 0x37, +0x23, 0x11, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, +0x23, 0x35, 0x37, 0x35, 0x33, 0x15, 0x21, 0x35, +0x33, 0x15, 0x33, 0x02, 0x04, 0xfe, 0x9f, 0x01, +0x61, 0x77, 0x49, 0x2e, 0xfe, 0x9f, 0x2e, 0x51, +0x51, 0x2e, 0x01, 0x61, 0x2e, 0x49, 0x01, 0xef, +0x7d, 0x7d, 0xfe, 0x11, 0x01, 0x4a, 0xfe, 0xb6, +0x01, 0xef, 0x1d, 0x04, 0x83, 0x83, 0x83, 0x83, +0xff, 0xff, 0x00, 0x08, 0x00, 0x00, 0x00, 0xa1, +0x03, 0x54, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, +0x00, 0x06, 0x07, 0x22, 0x78, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xe8, +0x03, 0x54, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, +0x00, 0x06, 0x07, 0x25, 0x78, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf1, 0x00, 0x00, 0x00, 0xff, +0x03, 0x47, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, +0x00, 0x06, 0x07, 0x28, 0x78, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xd3, 0x00, 0x00, 0x01, 0x1d, +0x03, 0x42, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, +0x00, 0x06, 0x07, 0x2a, 0x78, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x00, 0xfe, +0x03, 0x1e, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, +0x00, 0x06, 0x07, 0x36, 0x78, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0xf4, +0x03, 0x0b, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, +0x00, 0x06, 0x07, 0x2c, 0x78, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x50, 0x00, 0x00, 0x00, 0xa0, +0x03, 0x21, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, +0x00, 0x06, 0x07, 0x34, 0x78, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf1, 0x00, 0x00, 0x00, 0xff, +0x03, 0x49, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, +0x00, 0x06, 0x07, 0x3e, 0x78, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x41, 0x00, 0x00, 0x00, 0xbe, +0x03, 0x5f, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, +0x00, 0x06, 0x07, 0x38, 0x78, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x53, 0xff, 0x3e, 0x00, 0x9f, +0x02, 0x93, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x00, 0x79, 0xfc, 0xea, +0x00, 0x01, 0x00, 0x2c, 0xff, 0x33, 0x00, 0xc1, +0x02, 0x93, 0x00, 0x15, 0x00, 0x35, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, +0x1b, 0xb9, 0x00, 0x08, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, +0x2f, 0x1b, 0xb9, 0x00, 0x07, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x07, 0x10, 0xb8, 0x00, 0x0a, +0xd0, 0x30, 0x31, 0x17, 0x22, 0x26, 0x35, 0x34, +0x36, 0x37, 0x23, 0x11, 0x33, 0x11, 0x0e, 0x01, +0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x17, 0x0e, +0x01, 0x80, 0x23, 0x31, 0x24, 0x1a, 0x09, 0x2e, +0x1a, 0x22, 0x20, 0x13, 0x19, 0x12, 0x10, 0x0b, +0x25, 0xcd, 0x28, 0x2a, 0x29, 0x38, 0x1a, 0x02, +0x93, 0xfd, 0x6d, 0x1d, 0x36, 0x21, 0x1a, 0x1a, +0x0e, 0x1b, 0x0a, 0x0e, 0xff, 0xff, 0xff, 0xf0, +0x00, 0x00, 0x01, 0x00, 0x03, 0x47, 0x02, 0x26, +0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x07, 0x31, +0x78, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x29, +0xff, 0xf4, 0x01, 0xdb, 0x03, 0x47, 0x02, 0x26, +0x00, 0x0d, 0x00, 0x00, 0x00, 0x07, 0x07, 0x28, +0x01, 0x54, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0xff, 0x25, 0x02, 0x24, 0x02, 0x93, 0x02, 0x26, +0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x07, 0x54, +0x01, 0x42, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0xff, 0x3e, 0x02, 0x24, 0x02, 0x93, 0x02, 0x26, +0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x45, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x61, +0xff, 0x61, 0x02, 0x24, 0x02, 0x93, 0x02, 0x26, +0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2b, +0x01, 0x42, 0xfd, 0x03, 0xff, 0xff, 0x00, 0x51, +0x00, 0x00, 0x01, 0xbf, 0x03, 0x54, 0x02, 0x26, +0x00, 0x0f, 0x00, 0x00, 0x00, 0x06, 0x07, 0x25, +0x7a, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xbf, 0x02, 0xd4, 0x02, 0x26, +0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3f, +0x01, 0x5d, 0xff, 0xe2, 0xff, 0xff, 0x00, 0x61, +0xff, 0x25, 0x01, 0xbf, 0x02, 0x93, 0x02, 0x26, +0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x07, 0x54, +0x01, 0x1e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xbf, 0x02, 0x93, 0x02, 0x26, +0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x04, 0x77, +0x00, 0xf8, 0x01, 0x22, 0xff, 0xff, 0x00, 0x61, +0xff, 0x3e, 0x01, 0xbf, 0x02, 0x93, 0x02, 0x26, +0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x1e, 0xfc, 0xea, 0xff, 0xff, 0xff, 0xfe, +0xff, 0x3e, 0x01, 0xbf, 0x03, 0x0b, 0x02, 0x26, +0x00, 0x0f, 0x00, 0x00, 0x00, 0x26, 0x07, 0x2c, +0x7a, 0x00, 0x00, 0x07, 0x07, 0x33, 0x01, 0x1e, +0xfc, 0xea, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0xff, 0x61, 0x01, 0xbf, 0x02, 0x93, 0x02, 0x26, +0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2b, +0x01, 0x1e, 0xfd, 0x03, 0x00, 0x01, 0x00, 0x04, +0x00, 0x00, 0x01, 0xc3, 0x02, 0x93, 0x00, 0x0d, +0x00, 0x4d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x08, 0x2f, 0x1b, 0xb9, 0x00, 0x08, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x02, 0x2f, 0x1b, 0xb9, 0x00, +0x02, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x03, +0x00, 0x02, 0x00, 0x08, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x03, 0x2f, 0xb8, 0x00, 0x06, 0xdc, 0xb8, +0x00, 0x09, 0xd0, 0xb8, 0x00, 0x03, 0x10, 0xb8, +0x00, 0x0c, 0xd0, 0xb8, 0x00, 0x02, 0x10, 0xb9, +0x00, 0x0d, 0x00, 0x02, 0xf4, 0x30, 0x31, 0x25, +0x15, 0x21, 0x11, 0x07, 0x27, 0x37, 0x11, 0x33, +0x11, 0x37, 0x17, 0x07, 0x15, 0x01, 0xc3, 0xfe, +0xa2, 0x4e, 0x13, 0x61, 0x2e, 0xbb, 0x12, 0xcd, +0x28, 0x28, 0x01, 0x01, 0x2a, 0x1f, 0x34, 0x01, +0x69, 0xfe, 0xab, 0x63, 0x20, 0x6b, 0xee, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x02, 0x61, +0x03, 0x54, 0x02, 0x26, 0x00, 0x10, 0x00, 0x00, +0x00, 0x07, 0x07, 0x25, 0x01, 0x60, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x02, 0x61, +0x03, 0x21, 0x02, 0x26, 0x00, 0x10, 0x00, 0x00, +0x00, 0x07, 0x07, 0x34, 0x01, 0x60, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0xff, 0x3e, 0x02, 0x61, +0x02, 0x93, 0x02, 0x26, 0x00, 0x10, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x62, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x02, 0x1b, +0x03, 0x54, 0x02, 0x26, 0x00, 0x11, 0x00, 0x00, +0x00, 0x07, 0x07, 0x25, 0x01, 0x43, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x02, 0x1b, +0x03, 0x54, 0x02, 0x26, 0x00, 0x11, 0x00, 0x00, +0x00, 0x07, 0x07, 0x22, 0x01, 0x43, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x02, 0x1b, +0x03, 0x49, 0x02, 0x26, 0x00, 0x11, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3e, 0x01, 0x43, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x02, 0x1b, +0x03, 0x42, 0x02, 0x26, 0x00, 0x11, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2a, 0x01, 0x43, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0xff, 0x25, 0x02, 0x1b, +0x02, 0x93, 0x02, 0x26, 0x00, 0x11, 0x00, 0x00, +0x00, 0x07, 0x07, 0x54, 0x01, 0x3f, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x02, 0x1b, +0x03, 0x21, 0x02, 0x26, 0x00, 0x11, 0x00, 0x00, +0x00, 0x07, 0x07, 0x34, 0x01, 0x43, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0xff, 0x3e, 0x02, 0x1b, +0x02, 0x93, 0x02, 0x26, 0x00, 0x11, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x3f, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x61, 0xff, 0x61, 0x02, 0x1b, +0x02, 0x93, 0x02, 0x26, 0x00, 0x11, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x01, 0x3f, 0xfd, 0x03, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x03, 0x54, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, +0x00, 0x07, 0x07, 0x22, 0x01, 0x46, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x03, 0x54, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, +0x00, 0x07, 0x07, 0x25, 0x01, 0x46, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x03, 0x47, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, +0x00, 0x07, 0x07, 0x28, 0x01, 0x46, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x03, 0x42, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2a, 0x01, 0x46, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x03, 0x1e, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, +0x00, 0x07, 0x07, 0x36, 0x01, 0x46, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x03, 0x0b, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2c, 0x01, 0x46, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x03, 0x65, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3c, 0x01, 0x46, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x03, 0x49, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3e, 0x01, 0x46, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0x3e, 0x02, 0x56, +0x02, 0x9f, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x46, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x03, 0x5f, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, +0x00, 0x07, 0x07, 0x38, 0x01, 0x46, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x03, 0x74, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, +0x00, 0x07, 0x07, 0x77, 0x01, 0x46, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x03, 0x74, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, +0x00, 0x07, 0x07, 0x79, 0x01, 0x46, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x03, 0x83, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, +0x00, 0x07, 0x07, 0x7b, 0x01, 0x46, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x03, 0x9d, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, +0x00, 0x07, 0x07, 0x7d, 0x01, 0x46, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0x3e, 0x02, 0x56, +0x03, 0x47, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, +0x00, 0x27, 0x07, 0x28, 0x01, 0x46, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x46, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x03, 0x47, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, +0x00, 0x07, 0x07, 0x31, 0x01, 0x46, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x03, 0xb1, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, +0x00, 0x07, 0x07, 0x89, 0x01, 0x46, 0x00, 0x00, +0x00, 0x03, 0x00, 0x38, 0xff, 0xe9, 0x02, 0x5a, +0x02, 0xaa, 0x00, 0x0b, 0x00, 0x17, 0x00, 0x33, +0x00, 0x75, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x2e, 0x2f, 0x1b, 0xb9, 0x00, 0x2e, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x20, 0x2f, 0x1b, 0xb9, 0x00, +0x20, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x23, +0x00, 0x2e, 0x00, 0x20, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x23, 0x10, 0xb8, 0x00, 0x00, 0xdc, 0xb8, +0x00, 0x20, 0x10, 0xb9, 0x00, 0x03, 0x00, 0x02, +0xf4, 0xba, 0x00, 0x31, 0x00, 0x2e, 0x00, 0x20, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x31, 0x10, 0xb8, +0x00, 0x18, 0xdc, 0xb8, 0x00, 0x0b, 0xdc, 0xb8, +0x00, 0x31, 0x10, 0xb8, 0x00, 0x0c, 0xdc, 0xb8, +0x00, 0x2e, 0x10, 0xb9, 0x00, 0x0f, 0x00, 0x02, +0xf4, 0xb8, 0x00, 0x23, 0x10, 0xb8, 0x00, 0x26, +0xdc, 0xb8, 0x00, 0x17, 0xdc, 0x30, 0x31, 0x37, +0x1e, 0x01, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, +0x26, 0x2f, 0x01, 0x2e, 0x01, 0x23, 0x22, 0x0e, +0x02, 0x15, 0x14, 0x16, 0x17, 0x01, 0x1e, 0x01, +0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, +0x07, 0x27, 0x37, 0x2e, 0x01, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x32, 0x16, 0x17, 0x37, 0x17, 0xb1, +0x1d, 0x4d, 0x2f, 0x32, 0x52, 0x3b, 0x20, 0x1b, +0x19, 0x17, 0x1d, 0x4a, 0x2d, 0x32, 0x53, 0x3a, +0x20, 0x19, 0x17, 0x01, 0x77, 0x23, 0x25, 0x28, +0x48, 0x64, 0x3c, 0x36, 0x5b, 0x23, 0x42, 0x1c, +0x46, 0x20, 0x23, 0x28, 0x48, 0x64, 0x3b, 0x34, +0x59, 0x23, 0x3c, 0x1d, 0x65, 0x22, 0x25, 0x2b, +0x4f, 0x6f, 0x45, 0x3f, 0x66, 0x26, 0x1e, 0x1f, +0x21, 0x2a, 0x4d, 0x6e, 0x44, 0x3d, 0x65, 0x26, +0x01, 0xba, 0x2d, 0x79, 0x4c, 0x4e, 0x7f, 0x5a, +0x31, 0x28, 0x25, 0x58, 0x16, 0x5e, 0x2d, 0x78, +0x4a, 0x4e, 0x7d, 0x59, 0x2f, 0x24, 0x22, 0x51, +0x16, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x37, +0x00, 0x00, 0x03, 0x12, 0x02, 0x93, 0x00, 0x14, +0x00, 0x21, 0x00, 0x55, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0a, 0x2f, 0x1b, 0xb9, +0x00, 0x0a, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, +0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x0a, 0x10, 0xb9, 0x00, 0x17, 0x00, 0x02, +0xf4, 0xb8, 0x00, 0x0c, 0xd0, 0xba, 0x00, 0x11, +0x00, 0x0a, 0x00, 0x00, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x11, 0x2f, 0xb9, 0x00, 0x0f, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x21, +0x00, 0x02, 0xf4, 0xb8, 0x00, 0x13, 0xd0, 0x30, +0x31, 0x21, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x21, 0x15, 0x21, 0x15, 0x33, 0x15, +0x23, 0x11, 0x21, 0x15, 0x25, 0x11, 0x23, 0x22, +0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x01, +0x6f, 0x4e, 0x75, 0x4e, 0x27, 0x27, 0x4f, 0x75, +0x4e, 0x01, 0x98, 0xfe, 0xd9, 0xf5, 0xf5, 0x01, +0x31, 0xfe, 0xa1, 0x3f, 0x45, 0x65, 0x43, 0x20, +0x20, 0x43, 0x65, 0x45, 0x2f, 0x57, 0x7b, 0x4b, +0x4b, 0x78, 0x56, 0x2e, 0x28, 0xf9, 0x28, 0xfe, +0xde, 0x28, 0x27, 0x02, 0x45, 0x2a, 0x4b, 0x6b, +0x40, 0x41, 0x6b, 0x4e, 0x2b, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x3b, 0xff, 0xf4, 0x02, 0x5a, +0x03, 0x20, 0x00, 0x13, 0x00, 0x32, 0x00, 0x47, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x2b, 0x2f, 0x1b, 0xb9, 0x00, 0x2b, 0x00, 0x11, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x21, 0x2f, 0x1b, 0xb9, 0x00, 0x21, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x00, 0x00, 0x02, +0xf4, 0xb8, 0x00, 0x2b, 0x10, 0xb9, 0x00, 0x0a, +0x00, 0x02, 0xf4, 0xba, 0x00, 0x19, 0x00, 0x2b, +0x00, 0x0a, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x19, +0x10, 0xb8, 0x00, 0x2d, 0xd0, 0x30, 0x31, 0x25, +0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, +0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x01, +0x16, 0x15, 0x14, 0x06, 0x07, 0x1e, 0x01, 0x15, +0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x17, 0x36, 0x35, +0x34, 0x26, 0x27, 0x01, 0x4a, 0x32, 0x52, 0x3b, +0x20, 0x20, 0x3b, 0x52, 0x32, 0x32, 0x53, 0x3a, +0x20, 0x20, 0x3a, 0x53, 0x01, 0x26, 0x14, 0x38, +0x2f, 0x34, 0x3b, 0x28, 0x48, 0x64, 0x3c, 0x3b, +0x64, 0x48, 0x28, 0x28, 0x48, 0x64, 0x3b, 0x45, +0x38, 0x5e, 0x06, 0x08, 0x1e, 0x2b, 0x4f, 0x6f, +0x45, 0x44, 0x6e, 0x4d, 0x2a, 0x2a, 0x4d, 0x6e, +0x44, 0x45, 0x6f, 0x4f, 0x2b, 0x03, 0x02, 0x22, +0x24, 0x2f, 0x37, 0x0e, 0x2b, 0x8f, 0x60, 0x4e, +0x7f, 0x5a, 0x31, 0x31, 0x5a, 0x7f, 0x4e, 0x4e, +0x7d, 0x59, 0x2f, 0x20, 0x10, 0x48, 0x0c, 0x1d, +0x0d, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x3b, +0xff, 0xf4, 0x02, 0x5a, 0x03, 0x54, 0x02, 0x26, +0x00, 0xb1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x01, 0x46, 0x00, 0x00, 0xff, 0xff, 0x00, 0x3b, +0xff, 0xf4, 0x02, 0x5a, 0x03, 0x54, 0x02, 0x26, +0x00, 0xb1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x22, +0x01, 0x46, 0x00, 0x00, 0xff, 0xff, 0x00, 0x3b, +0xff, 0xf4, 0x02, 0x5a, 0x03, 0x5f, 0x02, 0x26, +0x00, 0xb1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x38, +0x01, 0x46, 0x00, 0x00, 0xff, 0xff, 0x00, 0x3b, +0xff, 0xf4, 0x02, 0x5a, 0x03, 0x42, 0x02, 0x26, +0x00, 0xb1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2a, +0x01, 0x44, 0x00, 0x00, 0xff, 0xff, 0x00, 0x3b, +0xff, 0x3e, 0x02, 0x5a, 0x03, 0x20, 0x02, 0x26, +0x00, 0xb1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x46, 0xfc, 0xea, 0x00, 0x02, 0x00, 0x37, +0xff, 0x33, 0x02, 0x56, 0x02, 0x9f, 0x00, 0x23, +0x00, 0x37, 0x00, 0x49, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x10, 0x2f, 0x1b, 0xb9, +0x00, 0x10, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x06, 0x2f, 0x1b, +0xb9, 0x00, 0x06, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x2b, 0xb8, +0x00, 0x06, 0x10, 0xb8, 0x00, 0x18, 0xd0, 0xb8, +0x00, 0x06, 0x10, 0xb9, 0x00, 0x24, 0x00, 0x02, +0xf4, 0xb8, 0x00, 0x10, 0x10, 0xb9, 0x00, 0x2e, +0x00, 0x02, 0xf4, 0x30, 0x31, 0x05, 0x22, 0x26, +0x35, 0x34, 0x36, 0x37, 0x22, 0x2e, 0x02, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, +0x14, 0x06, 0x07, 0x0e, 0x01, 0x15, 0x14, 0x16, +0x33, 0x32, 0x37, 0x17, 0x0e, 0x01, 0x27, 0x32, +0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, +0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x01, 0x65, +0x23, 0x31, 0x20, 0x1d, 0x41, 0x67, 0x48, 0x27, +0x28, 0x48, 0x64, 0x3b, 0x3c, 0x64, 0x48, 0x28, +0x68, 0x63, 0x2b, 0x27, 0x1f, 0x13, 0x19, 0x12, +0x11, 0x0c, 0x25, 0x30, 0x32, 0x52, 0x3b, 0x20, +0x20, 0x3b, 0x52, 0x32, 0x32, 0x53, 0x3a, 0x20, +0x20, 0x3a, 0x53, 0xcd, 0x28, 0x2a, 0x1e, 0x3a, +0x17, 0x31, 0x5a, 0x7f, 0x4e, 0x4e, 0x7d, 0x59, +0x2f, 0x2f, 0x59, 0x7d, 0x4e, 0x84, 0xa3, 0x2d, +0x13, 0x3e, 0x1b, 0x1a, 0x1a, 0x0e, 0x1b, 0x0a, +0x0e, 0xeb, 0x2b, 0x4f, 0x6f, 0x45, 0x44, 0x6e, +0x4d, 0x2a, 0x2a, 0x4d, 0x6e, 0x44, 0x45, 0x6f, +0x4f, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x02, 0x03, 0x03, 0x54, 0x02, 0x26, +0x00, 0x15, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x01, 0x15, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x02, 0x03, 0x03, 0x49, 0x02, 0x26, +0x00, 0x15, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3e, +0x01, 0x15, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x02, 0x03, 0x03, 0x21, 0x02, 0x26, +0x00, 0x15, 0x00, 0x00, 0x00, 0x07, 0x07, 0x34, +0x01, 0x16, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0xff, 0x25, 0x02, 0x03, 0x02, 0x93, 0x02, 0x26, +0x00, 0x15, 0x00, 0x00, 0x00, 0x07, 0x07, 0x54, +0x01, 0x23, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0xff, 0x3e, 0x02, 0x03, 0x02, 0x93, 0x02, 0x26, +0x00, 0x15, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x23, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x61, +0xff, 0x3e, 0x02, 0x03, 0x03, 0x0b, 0x02, 0x26, +0x00, 0x15, 0x00, 0x00, 0x00, 0x27, 0x07, 0x2c, +0x01, 0x15, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x23, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x61, +0xff, 0x61, 0x02, 0x03, 0x02, 0x93, 0x02, 0x26, +0x00, 0x15, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2b, +0x01, 0x23, 0xfd, 0x03, 0xff, 0xff, 0x00, 0x2e, +0xff, 0xf4, 0x01, 0xe0, 0x03, 0x54, 0x02, 0x26, +0x00, 0x16, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x01, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2e, +0xff, 0xf4, 0x01, 0xe0, 0x03, 0x47, 0x02, 0x26, +0x00, 0x16, 0x00, 0x00, 0x00, 0x07, 0x07, 0x28, +0x01, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2e, +0xff, 0xf4, 0x01, 0xe0, 0x03, 0x49, 0x02, 0x26, +0x00, 0x16, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3e, +0x01, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2e, +0xff, 0x25, 0x01, 0xe0, 0x02, 0x9f, 0x02, 0x26, +0x00, 0x16, 0x00, 0x00, 0x00, 0x07, 0x07, 0x57, +0x01, 0x0c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2e, +0xff, 0x25, 0x01, 0xe0, 0x02, 0x9f, 0x02, 0x26, +0x00, 0x16, 0x00, 0x00, 0x00, 0x07, 0x07, 0x54, +0x01, 0x0c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2e, +0xff, 0xf4, 0x01, 0xe0, 0x03, 0x21, 0x02, 0x26, +0x00, 0x16, 0x00, 0x00, 0x00, 0x07, 0x07, 0x34, +0x01, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2e, +0xff, 0x3e, 0x01, 0xe0, 0x02, 0x9f, 0x02, 0x26, +0x00, 0x16, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x0c, 0xfc, 0xea, 0x00, 0x01, 0x00, 0x62, +0xff, 0xf4, 0x02, 0x57, 0x02, 0x9f, 0x00, 0x2c, +0x00, 0x55, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x1f, 0x2f, 0x1b, 0xb9, 0x00, 0x1f, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x07, +0x00, 0x02, 0xf4, 0xba, 0x00, 0x0f, 0x00, 0x1f, +0x00, 0x00, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x1f, +0x10, 0xb9, 0x00, 0x14, 0x00, 0x02, 0xf4, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x19, 0xd0, 0xb8, +0x00, 0x19, 0x2f, 0xba, 0x00, 0x23, 0x00, 0x0f, +0x00, 0x10, 0x11, 0x12, 0x39, 0x30, 0x31, 0x05, +0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, +0x36, 0x35, 0x34, 0x2e, 0x02, 0x2f, 0x01, 0x37, +0x2e, 0x01, 0x23, 0x22, 0x06, 0x15, 0x11, 0x23, +0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, +0x07, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x01, +0xa0, 0x35, 0x5c, 0x20, 0x1f, 0x1f, 0x46, 0x2d, +0x41, 0x46, 0x11, 0x30, 0x55, 0x43, 0x03, 0x9a, +0x13, 0x48, 0x39, 0x59, 0x68, 0x2e, 0x23, 0x40, +0x58, 0x36, 0x4b, 0x5f, 0x1d, 0x9c, 0x3d, 0x53, +0x33, 0x16, 0x1b, 0x31, 0x43, 0x0c, 0x29, 0x26, +0x20, 0x24, 0x22, 0x4d, 0x3c, 0x1c, 0x33, 0x2a, +0x20, 0x0b, 0x23, 0xaa, 0x28, 0x37, 0x6a, 0x73, +0xfe, 0x67, 0x01, 0xa6, 0x3c, 0x5d, 0x3f, 0x21, +0x4b, 0x3f, 0xaa, 0x0a, 0x25, 0x33, 0x3f, 0x23, +0x26, 0x42, 0x30, 0x1b, 0xff, 0xff, 0x00, 0x1d, +0x00, 0x00, 0x01, 0xef, 0x03, 0x49, 0x02, 0x26, +0x00, 0x17, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3e, +0x01, 0x05, 0x00, 0x00, 0xff, 0xff, 0x00, 0x1d, +0xff, 0x25, 0x01, 0xef, 0x02, 0x93, 0x02, 0x26, +0x00, 0x17, 0x00, 0x00, 0x00, 0x07, 0x07, 0x57, +0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x1d, +0xff, 0x25, 0x01, 0xef, 0x02, 0x93, 0x02, 0x26, +0x00, 0x17, 0x00, 0x00, 0x00, 0x07, 0x07, 0x54, +0x01, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x1d, +0xff, 0x3e, 0x01, 0xef, 0x02, 0x93, 0x02, 0x26, +0x00, 0x17, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x07, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x1d, +0xff, 0x61, 0x01, 0xef, 0x02, 0x93, 0x02, 0x26, +0x00, 0x17, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2b, +0x01, 0x07, 0xfd, 0x03, 0x00, 0x01, 0x00, 0x1d, +0x00, 0x00, 0x01, 0xef, 0x02, 0x93, 0x00, 0x10, +0x00, 0x49, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0e, 0x2f, 0x1b, 0xb9, 0x00, 0x0e, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x06, 0x2f, 0x1b, 0xb9, 0x00, +0x06, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x0b, +0x00, 0x01, 0x00, 0x08, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x0b, 0x10, 0xb8, 0x00, 0x02, 0xd0, 0xb8, +0x00, 0x08, 0x10, 0xb8, 0x00, 0x03, 0xd0, 0xb8, +0x00, 0x0e, 0x10, 0xb9, 0x00, 0x10, 0x00, 0x02, +0xf4, 0x30, 0x31, 0x01, 0x11, 0x33, 0x15, 0x23, +0x11, 0x23, 0x11, 0x23, 0x35, 0x37, 0x33, 0x11, +0x23, 0x35, 0x21, 0x15, 0x01, 0x1d, 0x7f, 0x7f, +0x2e, 0x7f, 0x56, 0x29, 0xd2, 0x01, 0xd2, 0x02, +0x6b, 0xff, 0x00, 0x21, 0xfe, 0xb6, 0x01, 0x4a, +0x1f, 0x02, 0x01, 0x00, 0x28, 0x28, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x1b, +0x03, 0x54, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, +0x00, 0x07, 0x07, 0x22, 0x01, 0x3d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x1b, +0x03, 0x54, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, +0x00, 0x07, 0x07, 0x25, 0x01, 0x3d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x1b, +0x03, 0x47, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, +0x00, 0x07, 0x07, 0x28, 0x01, 0x3d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x1b, +0x03, 0x42, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2a, 0x01, 0x3d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x1b, +0x03, 0x1e, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, +0x00, 0x07, 0x07, 0x36, 0x01, 0x3d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x1b, +0x03, 0x0b, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2c, 0x01, 0x3d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x1b, +0x03, 0x47, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, +0x00, 0x07, 0x07, 0x31, 0x01, 0x3d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x1b, +0x03, 0x67, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3a, 0x01, 0x3d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x1b, +0x03, 0x65, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3c, 0x01, 0x3d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x1b, +0x03, 0x49, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3e, 0x01, 0x3d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x1b, +0x03, 0x77, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, +0x00, 0x07, 0x07, 0x73, 0x01, 0x3d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x1b, +0x03, 0xb1, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, +0x00, 0x07, 0x07, 0x6c, 0x01, 0x3d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x1b, +0x03, 0xaf, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, +0x00, 0x07, 0x07, 0x75, 0x01, 0x3d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x1b, +0x03, 0xb1, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, +0x00, 0x07, 0x07, 0x6f, 0x01, 0x3d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5f, 0xff, 0x3e, 0x02, 0x1b, +0x02, 0x93, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x3d, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x1b, +0x03, 0x5f, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, +0x00, 0x07, 0x07, 0x38, 0x01, 0x3d, 0x00, 0x00, +0x00, 0x01, 0x00, 0x5f, 0xff, 0x33, 0x02, 0x1b, +0x02, 0x93, 0x00, 0x2d, 0x00, 0x47, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0e, 0x2f, +0x1b, 0xb9, 0x00, 0x0e, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, +0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x28, 0x00, 0x00, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x08, 0x10, 0xb9, 0x00, 0x15, +0x00, 0x02, 0xf4, 0xb8, 0x00, 0x0e, 0x10, 0xb8, +0x00, 0x1b, 0xd0, 0xb8, 0x00, 0x08, 0x10, 0xb8, +0x00, 0x22, 0xd0, 0x30, 0x31, 0x05, 0x22, 0x26, +0x35, 0x34, 0x3e, 0x02, 0x37, 0x22, 0x2e, 0x02, +0x35, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, +0x32, 0x3e, 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, +0x0e, 0x02, 0x07, 0x0e, 0x01, 0x15, 0x14, 0x16, +0x33, 0x32, 0x37, 0x17, 0x0e, 0x01, 0x01, 0x5a, +0x23, 0x32, 0x0c, 0x12, 0x17, 0x0b, 0x30, 0x54, +0x3e, 0x24, 0x2e, 0x1d, 0x30, 0x3f, 0x23, 0x24, +0x41, 0x31, 0x1e, 0x2b, 0x19, 0x2b, 0x38, 0x1e, +0x28, 0x2c, 0x1f, 0x14, 0x17, 0x14, 0x10, 0x0b, +0x26, 0xcd, 0x28, 0x2a, 0x13, 0x20, 0x1a, 0x17, +0x0b, 0x1a, 0x3e, 0x66, 0x4b, 0x01, 0x96, 0xfe, +0x6f, 0x42, 0x57, 0x35, 0x16, 0x16, 0x35, 0x57, +0x42, 0x01, 0x91, 0xfe, 0x6a, 0x41, 0x56, 0x3a, +0x25, 0x0f, 0x14, 0x3e, 0x1a, 0x1a, 0x1a, 0x0e, +0x1b, 0x0a, 0x0e, 0x00, 0x00, 0x01, 0x00, 0x5f, +0xff, 0xf4, 0x02, 0x85, 0x03, 0x34, 0x00, 0x27, +0x00, 0x3b, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, 0x00, 0x13, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0d, 0x2f, 0x1b, 0xb9, 0x00, +0x0d, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x13, +0x10, 0xb8, 0x00, 0x20, 0xd0, 0xb8, 0x00, 0x07, +0xdc, 0xb8, 0x00, 0x0d, 0x10, 0xb9, 0x00, 0x1a, +0x00, 0x02, 0xf4, 0x30, 0x31, 0x01, 0x16, 0x15, +0x14, 0x0e, 0x02, 0x07, 0x11, 0x14, 0x0e, 0x02, +0x23, 0x22, 0x2e, 0x02, 0x35, 0x11, 0x33, 0x11, +0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, +0x11, 0x33, 0x3e, 0x01, 0x35, 0x34, 0x26, 0x27, +0x02, 0x72, 0x13, 0x12, 0x1e, 0x26, 0x14, 0x26, +0x3e, 0x50, 0x2b, 0x2a, 0x50, 0x3e, 0x25, 0x2e, +0x1d, 0x30, 0x3f, 0x23, 0x24, 0x41, 0x31, 0x1e, +0x0a, 0x30, 0x2e, 0x06, 0x08, 0x03, 0x34, 0x23, +0x23, 0x1b, 0x28, 0x1b, 0x12, 0x05, 0xfe, 0x84, +0x4d, 0x66, 0x3d, 0x19, 0x19, 0x3d, 0x66, 0x4d, +0x01, 0x96, 0xfe, 0x6f, 0x42, 0x57, 0x35, 0x16, +0x16, 0x35, 0x57, 0x42, 0x01, 0x91, 0x07, 0x29, +0x28, 0x0c, 0x1d, 0x0d, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x02, 0x85, 0x03, 0x54, 0x02, 0x26, +0x00, 0xde, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x01, 0x3c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x02, 0x85, 0x03, 0x54, 0x02, 0x26, +0x00, 0xde, 0x00, 0x00, 0x00, 0x07, 0x07, 0x22, +0x01, 0x3c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x02, 0x85, 0x03, 0x5f, 0x02, 0x26, +0x00, 0xde, 0x00, 0x00, 0x00, 0x07, 0x07, 0x38, +0x01, 0x3c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x02, 0x85, 0x03, 0x42, 0x02, 0x26, +0x00, 0xde, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2a, +0x01, 0x3c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5f, +0xff, 0x3e, 0x02, 0x85, 0x03, 0x34, 0x02, 0x26, +0x00, 0xde, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x3c, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x1c, +0x00, 0x00, 0x02, 0xe4, 0x03, 0x54, 0x02, 0x26, +0x00, 0x1a, 0x00, 0x00, 0x00, 0x07, 0x07, 0x22, +0x01, 0x81, 0x00, 0x00, 0xff, 0xff, 0x00, 0x1c, +0x00, 0x00, 0x02, 0xe4, 0x03, 0x54, 0x02, 0x26, +0x00, 0x1a, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x01, 0x81, 0x00, 0x00, 0xff, 0xff, 0x00, 0x1c, +0x00, 0x00, 0x02, 0xe4, 0x03, 0x47, 0x02, 0x26, +0x00, 0x1a, 0x00, 0x00, 0x00, 0x07, 0x07, 0x28, +0x01, 0x81, 0x00, 0x00, 0xff, 0xff, 0x00, 0x1c, +0x00, 0x00, 0x02, 0xe4, 0x03, 0x1e, 0x02, 0x26, +0x00, 0x1a, 0x00, 0x00, 0x00, 0x07, 0x07, 0x36, +0x01, 0x81, 0x00, 0x00, 0xff, 0xff, 0x00, 0x03, +0x00, 0x00, 0x01, 0xbc, 0x03, 0x54, 0x02, 0x26, +0x00, 0x1c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x22, +0x00, 0xdf, 0x00, 0x00, 0xff, 0xff, 0x00, 0x03, +0x00, 0x00, 0x01, 0xbc, 0x03, 0x54, 0x02, 0x26, +0x00, 0x1c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x00, 0xdf, 0x00, 0x00, 0xff, 0xff, 0x00, 0x03, +0x00, 0x00, 0x01, 0xbc, 0x03, 0x47, 0x02, 0x26, +0x00, 0x1c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x28, +0x00, 0xdf, 0x00, 0x00, 0xff, 0xff, 0x00, 0x03, +0x00, 0x00, 0x01, 0xbc, 0x03, 0x1e, 0x02, 0x26, +0x00, 0x1c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x36, +0x00, 0xdf, 0x00, 0x00, 0xff, 0xff, 0x00, 0x03, +0x00, 0x00, 0x01, 0xbc, 0x03, 0x21, 0x02, 0x26, +0x00, 0x1c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x34, +0x00, 0xdf, 0x00, 0x00, 0xff, 0xff, 0x00, 0x03, +0xff, 0x3e, 0x01, 0xbc, 0x02, 0x93, 0x02, 0x26, +0x00, 0x1c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x00, 0xe1, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x03, +0x00, 0x00, 0x01, 0xbc, 0x03, 0x5f, 0x02, 0x26, +0x00, 0x1c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x38, +0x00, 0xdf, 0x00, 0x00, 0xff, 0xff, 0x00, 0x03, +0x00, 0x00, 0x01, 0xbc, 0x03, 0x42, 0x02, 0x26, +0x00, 0x1c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2a, +0x00, 0xdf, 0x00, 0x00, 0xff, 0xff, 0x00, 0x32, +0x00, 0x00, 0x01, 0xea, 0x03, 0x54, 0x02, 0x26, +0x00, 0x1d, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x01, 0x17, 0x00, 0x00, 0xff, 0xff, 0x00, 0x32, +0x00, 0x00, 0x01, 0xea, 0x03, 0x49, 0x02, 0x26, +0x00, 0x1d, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3e, +0x01, 0x17, 0x00, 0x00, 0xff, 0xff, 0x00, 0x32, +0x00, 0x00, 0x01, 0xea, 0x03, 0x21, 0x02, 0x26, +0x00, 0x1d, 0x00, 0x00, 0x00, 0x07, 0x07, 0x34, +0x01, 0x17, 0x00, 0x00, 0xff, 0xff, 0x00, 0x32, +0xff, 0x3e, 0x01, 0xea, 0x02, 0x93, 0x02, 0x26, +0x00, 0x1d, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x19, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x32, +0xff, 0x61, 0x01, 0xea, 0x02, 0x93, 0x02, 0x26, +0x00, 0x1d, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2b, +0x01, 0x1a, 0xfd, 0x03, 0x00, 0x02, 0x00, 0x25, +0x00, 0x00, 0x02, 0x3a, 0x02, 0x93, 0x00, 0x10, +0x00, 0x21, 0x00, 0x59, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x21, 0x2f, 0x1b, 0xb9, +0x00, 0x21, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x1c, 0x2f, 0x1b, +0xb9, 0x00, 0x1c, 0x00, 0x05, 0x3e, 0x59, 0xb9, +0x00, 0x00, 0x00, 0x02, 0xf4, 0xb8, 0x00, 0x21, +0x10, 0xb9, 0x00, 0x0a, 0x00, 0x02, 0xf4, 0xba, +0x00, 0x0e, 0x00, 0x21, 0x00, 0x1c, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x0e, 0x2f, 0xb9, 0x00, 0x0d, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0e, 0x10, 0xb8, +0x00, 0x1e, 0xd0, 0xb8, 0x00, 0x0d, 0x10, 0xb8, +0x00, 0x1f, 0xd0, 0x30, 0x31, 0x25, 0x32, 0x3e, +0x02, 0x35, 0x34, 0x2e, 0x02, 0x2b, 0x01, 0x15, +0x33, 0x15, 0x23, 0x11, 0x13, 0x32, 0x1e, 0x02, +0x15, 0x14, 0x0e, 0x02, 0x2b, 0x01, 0x11, 0x23, +0x35, 0x37, 0x11, 0x01, 0x0a, 0x43, 0x61, 0x3e, +0x1e, 0x1e, 0x3e, 0x61, 0x43, 0x66, 0xa3, 0xa3, +0x6b, 0x4c, 0x71, 0x4a, 0x24, 0x24, 0x4a, 0x70, +0x4c, 0x9a, 0x51, 0x51, 0x27, 0x2b, 0x4e, 0x6b, +0x41, 0x40, 0x6a, 0x4c, 0x2a, 0xff, 0x21, 0xfe, +0xdb, 0x02, 0x6c, 0x2e, 0x56, 0x78, 0x4b, 0x4b, +0x7b, 0x57, 0x2f, 0x01, 0x4c, 0x1f, 0x02, 0x01, +0x26, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x61, +0x00, 0x00, 0x02, 0x00, 0x02, 0x93, 0x00, 0x0e, +0x00, 0x17, 0x00, 0x39, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, +0x00, 0x00, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0e, 0x2f, 0x1b, +0xb9, 0x00, 0x0e, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x17, 0x00, 0x02, 0x00, 0x0c, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x02, 0x00, 0x02, 0x00, 0x16, +0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, 0x33, 0x15, +0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x2b, +0x01, 0x15, 0x23, 0x37, 0x32, 0x36, 0x35, 0x34, +0x26, 0x2b, 0x01, 0x11, 0x61, 0x2e, 0x86, 0x37, +0x57, 0x3d, 0x20, 0x7c, 0x6f, 0x86, 0x2e, 0xa9, +0x65, 0x62, 0x63, 0x64, 0x7b, 0x02, 0x93, 0x75, +0x14, 0x2b, 0x46, 0x33, 0x61, 0x5f, 0xa6, 0xcd, +0x48, 0x51, 0x52, 0x3f, 0xfe, 0xd6, 0x00, 0x00, +0x00, 0x02, 0x00, 0x3e, 0xff, 0xf4, 0x02, 0x51, +0x02, 0x9f, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4b, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0c, 0x2f, 0x1b, 0xb9, 0x00, 0x0c, 0x00, 0x11, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x14, 0x2f, 0x1b, 0xb9, 0x00, 0x14, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x1d, 0x00, 0x0c, +0x00, 0x14, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x1d, +0x2f, 0xb8, 0x00, 0x00, 0xdc, 0xb8, 0x00, 0x14, +0x10, 0xb9, 0x00, 0x05, 0x00, 0x02, 0xf4, 0xb8, +0x00, 0x0c, 0x10, 0xb9, 0x00, 0x20, 0x00, 0x02, +0xf4, 0x30, 0x31, 0x13, 0x1e, 0x03, 0x33, 0x32, +0x36, 0x37, 0x01, 0x3e, 0x01, 0x33, 0x32, 0x16, +0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, +0x35, 0x34, 0x36, 0x35, 0x21, 0x2e, 0x01, 0x23, +0x22, 0x06, 0x07, 0x6d, 0x01, 0x21, 0x37, 0x4d, +0x2f, 0x64, 0x75, 0x07, 0xfe, 0x61, 0x21, 0x63, +0x3f, 0x80, 0x8b, 0x26, 0x47, 0x64, 0x3e, 0x3e, +0x61, 0x42, 0x23, 0x01, 0x01, 0xe4, 0x02, 0x70, +0x6b, 0x33, 0x58, 0x20, 0x01, 0x2b, 0x3e, 0x65, +0x47, 0x26, 0x8f, 0x81, 0x01, 0x29, 0x20, 0x2b, +0xb0, 0xa4, 0x51, 0x7f, 0x59, 0x2e, 0x32, 0x59, +0x7c, 0x4b, 0x02, 0x06, 0x03, 0x8d, 0x9a, 0x25, +0x1e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x61, +0xff, 0xf4, 0x02, 0x32, 0x02, 0x9f, 0x00, 0x29, +0x00, 0x55, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x20, 0x2f, 0x1b, 0xb9, 0x00, 0x20, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x07, +0x00, 0x02, 0xf4, 0xb8, 0x00, 0x20, 0x10, 0xb9, +0x00, 0x11, 0x00, 0x02, 0xf4, 0xba, 0x00, 0x1b, +0x00, 0x00, 0x00, 0x20, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x1b, 0x10, 0xb9, 0x00, 0x16, 0x00, 0x02, +0xf4, 0xb8, 0x00, 0x20, 0x10, 0xb8, 0x00, 0x19, +0xd0, 0xb8, 0x00, 0x19, 0x2f, 0x30, 0x31, 0x05, +0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, +0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, +0x0e, 0x02, 0x07, 0x11, 0x23, 0x11, 0x33, 0x15, +0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, +0x0e, 0x02, 0x01, 0x93, 0x12, 0x28, 0x0e, 0x0e, +0x0c, 0x19, 0x11, 0x17, 0x2a, 0x1f, 0x13, 0x1c, +0x32, 0x45, 0x29, 0x17, 0x32, 0x31, 0x2d, 0x10, +0x2e, 0x2e, 0x11, 0x2c, 0x31, 0x35, 0x1b, 0x31, +0x54, 0x3d, 0x23, 0x19, 0x2c, 0x39, 0x0c, 0x06, +0x07, 0x2b, 0x05, 0x06, 0x1e, 0x47, 0x74, 0x57, +0x55, 0x70, 0x43, 0x1c, 0x11, 0x1d, 0x27, 0x15, +0xfd, 0xf5, 0x02, 0x93, 0x58, 0x14, 0x24, 0x1c, +0x10, 0x23, 0x4f, 0x80, 0x5c, 0x63, 0x85, 0x52, +0x23, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x61, +0xff, 0x64, 0x01, 0x80, 0x02, 0x93, 0x00, 0x03, +0x00, 0x12, 0x00, 0x40, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, +0x00, 0x00, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0f, 0x2f, 0x1b, +0xb9, 0x00, 0x0f, 0x00, 0x11, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x02, 0x2f, +0x1b, 0xb9, 0x00, 0x02, 0x00, 0x05, 0x3e, 0x59, +0xbb, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x04, 0x00, +0x04, 0x2b, 0x30, 0x31, 0x13, 0x33, 0x11, 0x23, +0x17, 0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, +0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, 0x61, +0x2e, 0x2e, 0xb1, 0x11, 0x21, 0x0b, 0x0a, 0x09, +0x1b, 0x0e, 0x28, 0x19, 0x2e, 0x02, 0x93, 0xfd, +0x6d, 0x9c, 0x08, 0x05, 0x27, 0x03, 0x06, 0x3a, +0x2e, 0x02, 0x9c, 0xfd, 0x5e, 0x8d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0x9c, +0x02, 0xf2, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x21, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0x9c, +0x02, 0xf2, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0x9c, +0x02, 0xe1, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x27, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0xa2, +0x02, 0xc6, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x29, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0x9c, +0x02, 0xa0, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x35, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0x9c, +0x02, 0x82, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0x9c, +0x02, 0xd3, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2f, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0x9c, +0x02, 0xe3, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x39, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0x9c, +0x02, 0xe1, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3d, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0x3e, 0x01, 0x9c, +0x01, 0xec, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x00, 0xee, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0x9c, +0x02, 0xe5, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x37, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0xcf, +0x03, 0x03, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x76, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x1b, 0xff, 0xf4, 0x01, 0x9c, +0x03, 0x03, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x78, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0xb4, +0x03, 0x08, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x7a, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0x9c, +0x03, 0x11, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x7c, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0x3e, 0x01, 0x9c, +0x02, 0xe1, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x27, 0x07, 0x27, 0x00, 0xfe, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x00, 0xee, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0x9c, +0x03, 0x21, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x7e, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0x9c, +0x03, 0x21, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x80, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0x9c, +0x03, 0x39, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x82, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0x9c, +0x03, 0x11, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x84, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0x3e, 0x01, 0x9c, +0x02, 0xd3, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x27, 0x07, 0x2f, 0x00, 0xfe, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x00, 0xee, 0xfc, 0xea, +0x00, 0x02, 0x00, 0x3a, 0xff, 0x35, 0x01, 0xb2, +0x01, 0xec, 0x00, 0x34, 0x00, 0x42, 0x00, 0x79, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x23, 0x2f, 0x1b, 0xb9, 0x00, 0x23, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x2f, 0x00, 0x00, +0x00, 0x03, 0x2b, 0xb8, 0x00, 0x0b, 0x10, 0xb8, +0x00, 0x29, 0xd0, 0xb8, 0x00, 0x29, 0x2f, 0xb8, +0x00, 0x06, 0xd0, 0xba, 0x00, 0x07, 0x00, 0x23, +0x00, 0x0b, 0x11, 0x12, 0x39, 0xba, 0x00, 0x15, +0x00, 0x23, 0x00, 0x0b, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x23, 0x10, 0xb9, 0x00, 0x1a, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0b, 0x10, 0xb9, 0x00, 0x35, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x07, 0x10, 0xb9, +0x00, 0x38, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x15, +0x10, 0xb9, 0x00, 0x39, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x05, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, +0x27, 0x23, 0x0e, 0x01, 0x23, 0x22, 0x2e, 0x02, +0x35, 0x34, 0x3e, 0x02, 0x37, 0x34, 0x2e, 0x02, +0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, 0x03, 0x33, +0x32, 0x1e, 0x02, 0x15, 0x11, 0x0e, 0x01, 0x15, +0x14, 0x16, 0x33, 0x32, 0x37, 0x17, 0x0e, 0x01, +0x27, 0x32, 0x36, 0x37, 0x35, 0x0e, 0x03, 0x15, +0x14, 0x1e, 0x02, 0x01, 0x71, 0x23, 0x2f, 0x35, +0x23, 0x05, 0x03, 0x25, 0x55, 0x30, 0x1d, 0x32, +0x26, 0x16, 0x25, 0x4c, 0x75, 0x50, 0x08, 0x1a, +0x2c, 0x24, 0x30, 0x50, 0x19, 0x14, 0x0d, 0x25, +0x2e, 0x36, 0x1d, 0x2a, 0x3a, 0x24, 0x10, 0x26, +0x30, 0x1d, 0x14, 0x17, 0x14, 0x10, 0x0c, 0x25, +0xb4, 0x2a, 0x4c, 0x2d, 0x4a, 0x66, 0x3e, 0x1b, +0x10, 0x1c, 0x25, 0xcb, 0x28, 0x29, 0x26, 0x45, +0x16, 0x37, 0x1d, 0x2d, 0x10, 0x20, 0x31, 0x22, +0x28, 0x3c, 0x2c, 0x1d, 0x09, 0x1b, 0x37, 0x2b, +0x1b, 0x26, 0x12, 0x21, 0x09, 0x16, 0x12, 0x0d, +0x1d, 0x32, 0x43, 0x27, 0xfe, 0xcd, 0x13, 0x41, +0x20, 0x1a, 0x1a, 0x0e, 0x1a, 0x0a, 0x0d, 0xe5, +0x28, 0x26, 0xa3, 0x09, 0x1a, 0x24, 0x2e, 0x1c, +0x1a, 0x24, 0x17, 0x0b, 0x00, 0x03, 0x00, 0x41, +0xff, 0xf4, 0x02, 0xea, 0x01, 0xec, 0x00, 0x38, +0x00, 0x49, 0x00, 0x52, 0x00, 0x9b, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x16, 0x2f, +0x1b, 0xb9, 0x00, 0x16, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x08, 0x00, 0x16, 0x00, 0x00, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x16, 0x10, 0xb9, +0x00, 0x0d, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x31, 0xd0, 0xba, 0x00, 0x19, +0x00, 0x16, 0x00, 0x31, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x16, 0x10, 0xb8, 0x00, 0x1c, 0xd0, 0xba, +0x00, 0x23, 0x00, 0x1c, 0x00, 0x31, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x39, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x28, 0xd0, 0xba, +0x00, 0x36, 0x00, 0x00, 0x00, 0x1c, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x36, 0x10, 0xb9, 0x00, 0x3e, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x08, 0x10, 0xb9, +0x00, 0x42, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x23, +0x10, 0xb9, 0x00, 0x4a, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x0d, 0x10, 0xb8, 0x00, 0x4d, 0xd0, 0x30, +0x31, 0x17, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, +0x37, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, +0x27, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x17, 0x3e, +0x01, 0x33, 0x32, 0x16, 0x15, 0x1c, 0x01, 0x07, +0x21, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, +0x17, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x27, +0x0e, 0x01, 0x27, 0x32, 0x3e, 0x02, 0x37, 0x2e, +0x01, 0x35, 0x27, 0x0e, 0x03, 0x15, 0x14, 0x16, +0x25, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, +0xcd, 0x1d, 0x32, 0x27, 0x16, 0x96, 0x9b, 0x08, +0x19, 0x2d, 0x23, 0x2d, 0x4f, 0x18, 0x14, 0x0d, +0x24, 0x2d, 0x33, 0x1b, 0x3b, 0x45, 0x0c, 0x1a, +0x57, 0x36, 0x55, 0x5d, 0x02, 0xfe, 0xb4, 0x1a, +0x2e, 0x3f, 0x24, 0x27, 0x3b, 0x1b, 0x13, 0x0e, +0x1e, 0x24, 0x2a, 0x1a, 0x20, 0x34, 0x2a, 0x21, +0x0d, 0x30, 0x6d, 0x26, 0x13, 0x2e, 0x2f, 0x2e, +0x15, 0x0b, 0x0a, 0x01, 0x46, 0x62, 0x3e, 0x1c, +0x3c, 0x02, 0x16, 0x49, 0x41, 0x1e, 0x35, 0x29, +0x1b, 0x04, 0x0c, 0x10, 0x20, 0x31, 0x22, 0x50, +0x54, 0x12, 0x1b, 0x37, 0x2b, 0x1b, 0x26, 0x12, +0x21, 0x09, 0x16, 0x12, 0x0d, 0x41, 0x37, 0x37, +0x41, 0x74, 0x6a, 0x09, 0x12, 0x09, 0x2d, 0x4c, +0x37, 0x1f, 0x17, 0x14, 0x23, 0x09, 0x10, 0x0e, +0x08, 0x11, 0x1c, 0x24, 0x12, 0x2e, 0x35, 0x26, +0x0c, 0x18, 0x23, 0x16, 0x16, 0x41, 0x22, 0x1b, +0x09, 0x19, 0x24, 0x2e, 0x1d, 0x34, 0x2c, 0xf2, +0x5d, 0x5d, 0x1b, 0x31, 0x45, 0x29, 0x00, 0x00, +0xff, 0xff, 0x00, 0x41, 0xff, 0xf4, 0x02, 0xea, +0x02, 0xf2, 0x02, 0x26, 0x01, 0x10, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x01, 0x9e, 0x00, 0x00, +0xff, 0xff, 0x00, 0x41, 0xff, 0xf4, 0x02, 0xea, +0x02, 0x82, 0x02, 0x26, 0x01, 0x10, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x01, 0x9e, 0x00, 0x00, +0x00, 0x02, 0x00, 0x0f, 0xff, 0xf4, 0x01, 0xec, +0x02, 0xcf, 0x00, 0x10, 0x00, 0x2d, 0x00, 0x8d, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x27, 0x2f, 0x1b, 0xb9, 0x00, 0x27, 0x00, 0x13, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x1c, 0x2f, 0x1b, 0xb9, 0x00, 0x1c, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x27, 0x10, 0xb8, +0x00, 0x26, 0xdc, 0xb8, 0x00, 0x23, 0xdc, 0xb8, +0x00, 0x14, 0xdc, 0xba, 0x00, 0x20, 0x00, 0x1c, +0x00, 0x14, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x20, +0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x1c, 0x10, 0xb9, 0x00, 0x03, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x14, 0x10, 0xb9, 0x00, 0x0d, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x11, 0x00, 0x14, +0x00, 0x1c, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x11, +0x10, 0xb9, 0x00, 0x10, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x1c, 0x10, 0xb8, 0x00, 0x22, 0xd0, 0xb8, +0x00, 0x22, 0x2f, 0xb8, 0x00, 0x26, 0x10, 0xb8, +0x00, 0x2a, 0xd0, 0xb8, 0x00, 0x23, 0x10, 0xb8, +0x00, 0x2b, 0xd0, 0x30, 0x31, 0x37, 0x1e, 0x01, +0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, +0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, 0x01, 0x33, +0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, +0x26, 0x27, 0x23, 0x07, 0x23, 0x11, 0x23, 0x35, +0x37, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x15, +0x88, 0x28, 0x4a, 0x1c, 0x24, 0x3e, 0x2c, 0x19, +0x11, 0x24, 0x3a, 0x29, 0x24, 0x4e, 0x2b, 0x02, +0x25, 0x54, 0x2d, 0x60, 0x60, 0x22, 0x3b, 0x4d, +0x2a, 0x23, 0x4b, 0x22, 0x02, 0x05, 0x25, 0x4d, +0x4d, 0x2c, 0xbe, 0xbe, 0x59, 0x22, 0x1c, 0x1e, +0x36, 0x4a, 0x2d, 0x28, 0x45, 0x33, 0x1d, 0x29, +0x26, 0x2b, 0x1f, 0x2c, 0x7c, 0x67, 0x39, 0x5b, +0x3e, 0x21, 0x21, 0x1c, 0x31, 0x02, 0x45, 0x1d, +0x04, 0x69, 0x69, 0x21, 0x68, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5c, 0xff, 0x61, 0x01, 0xec, +0x02, 0xcf, 0x02, 0x26, 0x00, 0x1f, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x01, 0x16, 0xfd, 0x03, +0xff, 0xff, 0x00, 0x34, 0xff, 0x25, 0x01, 0xa7, +0x01, 0xec, 0x02, 0x26, 0x00, 0x20, 0x00, 0x00, +0x00, 0x07, 0x07, 0x56, 0x01, 0x09, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xa7, +0x02, 0xf2, 0x02, 0x26, 0x00, 0x20, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x01, 0x0f, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xa7, +0x02, 0xe1, 0x02, 0x26, 0x00, 0x20, 0x00, 0x00, +0x00, 0x07, 0x07, 0x27, 0x01, 0x0f, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xa7, +0x02, 0xe1, 0x02, 0x26, 0x00, 0x20, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3d, 0x01, 0x0f, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xa7, +0x02, 0xa4, 0x02, 0x26, 0x00, 0x20, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x0f, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x28, +0x02, 0xf2, 0x00, 0x26, 0x00, 0x21, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3f, 0x02, 0x20, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0x3e, 0x01, 0xc4, +0x02, 0xcf, 0x02, 0x26, 0x00, 0x21, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x28, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x34, 0xff, 0x61, 0x01, 0xc4, +0x02, 0xcf, 0x02, 0x26, 0x00, 0x21, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x01, 0x27, 0xfd, 0x03, +0x00, 0x02, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x0f, +0x02, 0xcf, 0x00, 0x0e, 0x00, 0x2b, 0x00, 0x8f, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x28, 0x2f, 0x1b, 0xb9, 0x00, 0x28, 0x00, 0x13, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x17, 0x2f, 0x1b, 0xb9, 0x00, 0x17, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x28, 0x10, 0xb8, +0x00, 0x27, 0xdc, 0xb9, 0x00, 0x24, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x1f, 0xdc, 0xba, 0x00, 0x22, +0x00, 0x1f, 0x00, 0x17, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x22, 0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x1f, 0x10, 0xb9, 0x00, 0x03, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x17, 0x10, 0xb9, +0x00, 0x0b, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x13, +0x00, 0x17, 0x00, 0x1f, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x13, 0x10, 0xb9, 0x00, 0x0e, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x24, 0x10, 0xb8, 0x00, 0x10, +0xd0, 0xb8, 0x00, 0x17, 0x10, 0xb8, 0x00, 0x11, +0xd0, 0xb8, 0x00, 0x11, 0x2f, 0xb8, 0x00, 0x27, +0x10, 0xb8, 0x00, 0x2a, 0xd0, 0x30, 0x31, 0x01, +0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, +0x16, 0x33, 0x32, 0x36, 0x37, 0x13, 0x07, 0x11, +0x23, 0x27, 0x23, 0x0e, 0x01, 0x23, 0x22, 0x26, +0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, +0x27, 0x35, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, +0x33, 0x01, 0x98, 0x26, 0x43, 0x23, 0x24, 0x3e, +0x2d, 0x1a, 0x51, 0x4d, 0x28, 0x49, 0x26, 0x77, +0x4b, 0x26, 0x05, 0x02, 0x1d, 0x4f, 0x30, 0x5b, +0x6c, 0x22, 0x3b, 0x4d, 0x2b, 0x2c, 0x41, 0x24, +0x02, 0xaa, 0xaa, 0x2c, 0x4b, 0x01, 0x65, 0x22, +0x1c, 0x1f, 0x35, 0x47, 0x29, 0x58, 0x6c, 0x29, +0x26, 0x01, 0xdf, 0x04, 0xfd, 0xbb, 0x3e, 0x1e, +0x2c, 0x78, 0x72, 0x36, 0x57, 0x3e, 0x21, 0x1f, +0x1c, 0x58, 0x5e, 0x21, 0x69, 0x69, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xbd, +0x02, 0xf2, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x07, 0x07, 0x21, 0x01, 0x05, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xbd, +0x02, 0xf2, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x01, 0x05, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xbd, +0x02, 0xe1, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x07, 0x07, 0x27, 0x01, 0x05, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xbd, +0x02, 0xe1, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3d, 0x01, 0x05, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xbd, +0x02, 0xa0, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x07, 0x07, 0x35, 0x01, 0x05, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xbd, +0x02, 0x82, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x01, 0x05, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xbd, +0x02, 0xd3, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2f, 0x01, 0x05, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xbd, +0x02, 0xa4, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x05, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0x3e, 0x01, 0xbd, +0x01, 0xec, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x02, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xbd, +0x02, 0xe5, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x07, 0x07, 0x37, 0x01, 0x05, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xbd, +0x02, 0xc6, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x07, 0x07, 0x29, 0x01, 0x05, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xd6, +0x03, 0x03, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x07, 0x07, 0x76, 0x01, 0x05, 0x00, 0x00, +0xff, 0xff, 0x00, 0x22, 0xff, 0xf4, 0x01, 0xbd, +0x03, 0x03, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x07, 0x07, 0x78, 0x01, 0x05, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xbd, +0x03, 0x08, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x07, 0x07, 0x7a, 0x01, 0x05, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xbd, +0x03, 0x11, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x07, 0x07, 0x7c, 0x01, 0x05, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0x3e, 0x01, 0xbd, +0x02, 0xe1, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x27, 0x07, 0x27, 0x01, 0x05, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x01, 0xfc, 0xea, +0x00, 0x02, 0x00, 0x34, 0xff, 0x35, 0x01, 0xbd, +0x01, 0xec, 0x00, 0x32, 0x00, 0x3b, 0x00, 0x59, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x15, 0x2f, 0x1b, 0xb9, 0x00, 0x15, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x2d, 0x00, 0x00, +0x00, 0x03, 0x2b, 0xba, 0x00, 0x1c, 0x00, 0x15, +0x00, 0x0b, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x1c, +0x2f, 0xb8, 0x00, 0x0b, 0x10, 0xb9, 0x00, 0x21, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x1c, 0x10, 0xb9, +0x00, 0x33, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x15, +0x10, 0xb9, 0x00, 0x36, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x05, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, +0x37, 0x0e, 0x01, 0x23, 0x22, 0x2e, 0x02, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x15, 0x1c, +0x01, 0x07, 0x21, 0x1e, 0x03, 0x33, 0x32, 0x36, +0x37, 0x17, 0x0e, 0x03, 0x15, 0x14, 0x16, 0x33, +0x32, 0x37, 0x17, 0x0e, 0x01, 0x13, 0x34, 0x26, +0x23, 0x22, 0x0e, 0x02, 0x07, 0x01, 0x63, 0x23, +0x2e, 0x0c, 0x12, 0x16, 0x0b, 0x10, 0x1e, 0x11, +0x2e, 0x51, 0x3c, 0x23, 0x23, 0x3b, 0x4b, 0x28, +0x56, 0x62, 0x02, 0xfe, 0xa6, 0x01, 0x1a, 0x2f, +0x42, 0x29, 0x27, 0x3f, 0x1b, 0x12, 0x20, 0x2c, +0x1a, 0x0b, 0x1d, 0x14, 0x19, 0x12, 0x10, 0x0b, +0x26, 0x20, 0x4c, 0x41, 0x1f, 0x38, 0x2d, 0x1d, +0x04, 0xcb, 0x28, 0x29, 0x13, 0x23, 0x1f, 0x19, +0x09, 0x05, 0x04, 0x22, 0x41, 0x5d, 0x3b, 0x3b, +0x5e, 0x41, 0x23, 0x74, 0x6a, 0x09, 0x12, 0x09, +0x2d, 0x4d, 0x37, 0x1f, 0x17, 0x14, 0x22, 0x18, +0x28, 0x25, 0x22, 0x10, 0x1a, 0x1a, 0x0e, 0x1a, +0x0a, 0x0d, 0x01, 0xd9, 0x5d, 0x5b, 0x19, 0x30, +0x44, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xbd, 0x03, 0x36, 0x02, 0x26, +0x00, 0x22, 0x00, 0x00, 0x00, 0x07, 0x07, 0x88, +0x01, 0x05, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0x19, 0x01, 0xdc, 0x02, 0xf2, 0x02, 0x26, +0x00, 0x24, 0x00, 0x00, 0x00, 0x07, 0x07, 0x24, +0x01, 0x04, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0x19, 0x01, 0xdc, 0x02, 0xe1, 0x02, 0x26, +0x00, 0x24, 0x00, 0x00, 0x00, 0x07, 0x07, 0x27, +0x01, 0x04, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0x19, 0x01, 0xdc, 0x02, 0xd3, 0x02, 0x26, +0x00, 0x24, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2f, +0x01, 0x04, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0x19, 0x01, 0xdc, 0x02, 0xa4, 0x02, 0x26, +0x00, 0x24, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x04, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0x19, 0x01, 0xdc, 0x02, 0xe1, 0x02, 0x26, +0x00, 0x24, 0x00, 0x00, 0x00, 0x07, 0x07, 0x55, +0x01, 0x04, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0x19, 0x01, 0xdc, 0x02, 0xe1, 0x02, 0x26, +0x00, 0x24, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3d, +0x01, 0x04, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0x19, 0x01, 0xdc, 0x02, 0x82, 0x02, 0x26, +0x00, 0x24, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2b, +0x01, 0x04, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0x19, 0x01, 0xdc, 0x02, 0xc6, 0x02, 0x26, +0x00, 0x24, 0x00, 0x00, 0x00, 0x07, 0x07, 0x29, +0x01, 0x04, 0x00, 0x00, 0xff, 0xff, 0xff, 0xed, +0x00, 0x00, 0x01, 0xbf, 0x03, 0x6e, 0x02, 0x26, +0x00, 0x25, 0x00, 0x00, 0x00, 0x06, 0x07, 0x28, +0x74, 0x27, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5c, +0xff, 0x3e, 0x01, 0xbf, 0x02, 0xcf, 0x02, 0x26, +0x00, 0x25, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x1a, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x5c, +0xff, 0x61, 0x01, 0xbf, 0x02, 0xcf, 0x02, 0x26, +0x00, 0x25, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2b, +0x01, 0x1a, 0xfd, 0x03, 0xff, 0xff, 0x00, 0x5c, +0xff, 0x1a, 0x01, 0xbf, 0x02, 0xcf, 0x02, 0x26, +0x00, 0x25, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2f, +0x01, 0x19, 0xfc, 0xe0, 0x00, 0x01, 0x00, 0x0f, +0x00, 0x00, 0x01, 0xbf, 0x02, 0xcf, 0x00, 0x1b, +0x00, 0x6d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x16, 0x2f, 0x1b, 0xb9, 0x00, 0x16, +0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x11, 0x2f, 0x1b, 0xb9, 0x00, +0x11, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x16, +0x10, 0xb8, 0x00, 0x15, 0xdc, 0xb9, 0x00, 0x12, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x03, 0xdc, 0xba, +0x00, 0x00, 0x00, 0x03, 0x00, 0x11, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x11, 0x10, 0xb8, 0x00, 0x08, +0xd0, 0xb8, 0x00, 0x03, 0x10, 0xb9, 0x00, 0x0c, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x0f, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x15, +0x10, 0xb8, 0x00, 0x19, 0xd0, 0xb8, 0x00, 0x12, +0x10, 0xb8, 0x00, 0x1a, 0xd0, 0x30, 0x31, 0x13, +0x3e, 0x01, 0x33, 0x32, 0x16, 0x15, 0x11, 0x23, +0x11, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x11, +0x23, 0x11, 0x23, 0x35, 0x37, 0x35, 0x33, 0x15, +0x33, 0x15, 0x23, 0x88, 0x26, 0x4e, 0x32, 0x4b, +0x46, 0x2c, 0x33, 0x3b, 0x2b, 0x46, 0x2c, 0x2c, +0x4d, 0x4d, 0x2c, 0xbe, 0xbe, 0x01, 0x73, 0x26, +0x31, 0x5a, 0x5e, 0xfe, 0xee, 0x01, 0x0c, 0x4d, +0x49, 0x2d, 0x2d, 0xfe, 0xb8, 0x02, 0x45, 0x1d, +0x04, 0x69, 0x69, 0x21, 0xff, 0xff, 0xff, 0xff, +0x00, 0x00, 0x00, 0xa7, 0x02, 0xf2, 0x02, 0x26, +0x01, 0x49, 0x00, 0x00, 0x00, 0x06, 0x07, 0x21, +0x72, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x3d, +0x00, 0x00, 0x00, 0xe5, 0x02, 0xf2, 0x02, 0x26, +0x01, 0x49, 0x00, 0x00, 0x00, 0x06, 0x07, 0x24, +0x72, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe8, +0x00, 0x00, 0x00, 0xfc, 0x02, 0xe1, 0x02, 0x26, +0x01, 0x49, 0x00, 0x00, 0x00, 0x06, 0x07, 0x27, +0x72, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xce, +0x00, 0x00, 0x01, 0x16, 0x02, 0xc6, 0x02, 0x26, +0x01, 0x49, 0x00, 0x00, 0x00, 0x06, 0x07, 0x29, +0x72, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf4, +0x00, 0x00, 0x00, 0xf0, 0x02, 0xa0, 0x02, 0x26, +0x01, 0x49, 0x00, 0x00, 0x00, 0x06, 0x07, 0x35, +0x72, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf7, +0x00, 0x00, 0x00, 0xed, 0x02, 0x82, 0x02, 0x26, +0x01, 0x49, 0x00, 0x00, 0x00, 0x06, 0x07, 0x2b, +0x72, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe8, +0x00, 0x00, 0x00, 0xfc, 0x02, 0xe1, 0x02, 0x26, +0x01, 0x49, 0x00, 0x00, 0x00, 0x06, 0x07, 0x3d, +0x72, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x3b, +0x00, 0x00, 0x00, 0xb8, 0x02, 0xe5, 0x02, 0x26, +0x01, 0x49, 0x00, 0x00, 0x00, 0x06, 0x07, 0x37, +0x72, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4b, +0xff, 0x3e, 0x00, 0x9b, 0x02, 0xa3, 0x02, 0x26, +0x00, 0x26, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x00, 0x73, 0xfc, 0xea, 0x00, 0x02, 0x00, 0x25, +0xff, 0x35, 0x00, 0xb7, 0x02, 0xa3, 0x00, 0x15, +0x00, 0x21, 0x00, 0x41, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, 0x1b, 0xb9, +0x00, 0x08, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, 0x2f, 0x1b, +0xb9, 0x00, 0x07, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0x2b, 0xb8, +0x00, 0x07, 0x10, 0xb8, 0x00, 0x0a, 0xd0, 0xb8, +0x00, 0x08, 0x10, 0xb8, 0x00, 0x16, 0xdc, 0xb8, +0x00, 0x1c, 0xdc, 0x30, 0x31, 0x17, 0x22, 0x26, +0x35, 0x34, 0x36, 0x37, 0x23, 0x11, 0x33, 0x11, +0x0e, 0x01, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, +0x17, 0x0e, 0x01, 0x03, 0x22, 0x26, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x76, +0x23, 0x2e, 0x28, 0x16, 0x07, 0x2c, 0x18, 0x25, +0x1e, 0x13, 0x17, 0x14, 0x10, 0x0b, 0x26, 0x15, +0x10, 0x18, 0x18, 0x10, 0x11, 0x18, 0x18, 0xcb, +0x28, 0x29, 0x26, 0x3c, 0x18, 0x01, 0xe0, 0xfe, +0x20, 0x1a, 0x3a, 0x20, 0x1a, 0x1a, 0x0e, 0x1a, +0x0a, 0x0d, 0x03, 0x1f, 0x16, 0x11, 0x13, 0x15, +0x15, 0x13, 0x11, 0x16, 0x00, 0x01, 0x00, 0x25, +0xff, 0x35, 0x00, 0xb7, 0x01, 0xe0, 0x00, 0x15, +0x00, 0x35, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x08, 0x2f, 0x1b, 0xb9, 0x00, 0x08, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x07, 0x2f, 0x1b, 0xb9, 0x00, +0x07, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x10, +0x00, 0x00, 0x00, 0x03, 0x2b, 0xb8, 0x00, 0x07, +0x10, 0xb8, 0x00, 0x0a, 0xd0, 0x30, 0x31, 0x17, +0x22, 0x26, 0x35, 0x34, 0x36, 0x37, 0x23, 0x11, +0x33, 0x11, 0x0e, 0x01, 0x15, 0x14, 0x16, 0x33, +0x32, 0x37, 0x17, 0x0e, 0x01, 0x76, 0x23, 0x2e, +0x28, 0x16, 0x07, 0x2c, 0x18, 0x25, 0x1e, 0x13, +0x17, 0x14, 0x10, 0x0b, 0x26, 0xcb, 0x28, 0x29, +0x26, 0x3c, 0x18, 0x01, 0xe0, 0xfe, 0x20, 0x1a, +0x3a, 0x20, 0x1a, 0x1a, 0x0e, 0x1a, 0x0a, 0x0d, +0xff, 0xff, 0xff, 0xde, 0x00, 0x00, 0x01, 0x08, +0x02, 0xd3, 0x02, 0x26, 0x01, 0x49, 0x00, 0x00, +0x00, 0x06, 0x07, 0x2f, 0x73, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x88, +0x01, 0xe0, 0x00, 0x03, 0x00, 0x25, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x02, +0x2f, 0x1b, 0xb9, 0x00, 0x02, 0x00, 0x05, 0x3e, +0x59, 0x30, 0x31, 0x13, 0x33, 0x11, 0x23, 0x5c, +0x2c, 0x2c, 0x01, 0xe0, 0xfe, 0x20, 0x00, 0x00, +0xff, 0xff, 0xff, 0xdf, 0xff, 0x1b, 0x00, 0xfc, +0x02, 0xe1, 0x02, 0x26, 0x01, 0xbe, 0x00, 0x00, +0x00, 0x06, 0x07, 0x27, 0x72, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5c, 0xff, 0x25, 0x01, 0xc4, +0x02, 0xcf, 0x02, 0x26, 0x00, 0x28, 0x00, 0x00, +0x00, 0x07, 0x07, 0x54, 0x01, 0x01, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5c, 0xff, 0x3e, 0x01, 0xc4, +0x02, 0xcf, 0x02, 0x26, 0x00, 0x28, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x01, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x5c, 0xff, 0x61, 0x01, 0xc4, +0x02, 0xcf, 0x02, 0x26, 0x00, 0x28, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x01, 0x01, 0xfd, 0x03, +0x00, 0x01, 0x00, 0x5c, 0x00, 0x00, 0x01, 0xc4, +0x01, 0xe0, 0x00, 0x0c, 0x00, 0x53, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0c, +0x2f, 0x1b, 0xb9, 0x00, 0x0c, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x04, 0xd0, 0xb8, 0x00, 0x0c, 0x10, 0xb8, +0x00, 0x08, 0xd0, 0xba, 0x00, 0x06, 0x00, 0x00, +0x00, 0x08, 0x11, 0x12, 0x39, 0xba, 0x00, 0x09, +0x00, 0x00, 0x00, 0x0c, 0x11, 0x12, 0x39, 0x30, +0x31, 0x13, 0x33, 0x11, 0x33, 0x13, 0x33, 0x07, +0x13, 0x23, 0x03, 0x07, 0x15, 0x23, 0x5c, 0x2c, +0x03, 0xec, 0x33, 0x9c, 0xb6, 0x31, 0x9f, 0x6c, +0x2c, 0x01, 0xe0, 0xfe, 0xdd, 0x01, 0x23, 0xbe, +0xfe, 0xde, 0x01, 0x01, 0x7f, 0x82, 0x00, 0x00, +0xff, 0xff, 0x00, 0x41, 0xff, 0xf4, 0x00, 0xda, +0x03, 0x87, 0x02, 0x26, 0x00, 0x29, 0x00, 0x00, +0x00, 0x06, 0x07, 0x25, 0x6a, 0x33, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5c, 0xff, 0xf4, 0x00, 0xed, +0x02, 0xf2, 0x00, 0x26, 0x00, 0x29, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3f, 0x00, 0xe5, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5c, 0xff, 0xf4, 0x01, 0x36, +0x02, 0xcf, 0x00, 0x26, 0x00, 0x29, 0x00, 0x00, +0x00, 0x07, 0x04, 0x77, 0x00, 0x9e, 0x01, 0x22, +0xff, 0xff, 0x00, 0x38, 0xff, 0x25, 0x00, 0xd0, +0x02, 0xcf, 0x02, 0x26, 0x00, 0x29, 0x00, 0x00, +0x00, 0x07, 0x07, 0x54, 0x00, 0x8c, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5c, 0xff, 0x3e, 0x00, 0xb7, +0x02, 0xcf, 0x02, 0x26, 0x00, 0x29, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x00, 0x8c, 0xfc, 0xea, +0xff, 0xff, 0xff, 0xf6, 0xff, 0x3e, 0x00, 0xec, +0x03, 0x64, 0x02, 0x26, 0x00, 0x29, 0x00, 0x00, +0x00, 0x27, 0x07, 0x2b, 0x00, 0x71, 0x00, 0xe2, +0x00, 0x07, 0x07, 0x33, 0x00, 0x8c, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x11, 0xff, 0x61, 0x01, 0x07, +0x02, 0xcf, 0x02, 0x26, 0x00, 0x29, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x00, 0x8c, 0xfd, 0x03, +0x00, 0x01, 0x00, 0x0a, 0xff, 0xf4, 0x00, 0xd5, +0x02, 0xcf, 0x00, 0x16, 0x00, 0x47, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x11, 0x2f, +0x1b, 0xb9, 0x00, 0x11, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0a, +0x2f, 0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x10, 0x00, 0x0d, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x0a, 0x10, 0xb9, 0x00, 0x03, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x10, 0x10, 0xb8, +0x00, 0x13, 0xd0, 0xb8, 0x00, 0x0d, 0x10, 0xb8, +0x00, 0x16, 0xd0, 0x30, 0x31, 0x37, 0x14, 0x16, +0x33, 0x3a, 0x01, 0x37, 0x17, 0x0e, 0x01, 0x23, +0x22, 0x35, 0x11, 0x07, 0x27, 0x37, 0x11, 0x33, +0x11, 0x37, 0x17, 0x07, 0x89, 0x0c, 0x09, 0x03, +0x07, 0x08, 0x08, 0x07, 0x0e, 0x0b, 0x3b, 0x41, +0x12, 0x53, 0x2c, 0x39, 0x13, 0x4c, 0x3a, 0x10, +0x0f, 0x02, 0x24, 0x02, 0x03, 0x4c, 0x01, 0x2c, +0x2a, 0x1e, 0x36, 0x01, 0x39, 0xfe, 0xe0, 0x26, +0x1e, 0x33, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5c, +0x00, 0x00, 0x02, 0xd8, 0x02, 0xf2, 0x02, 0x26, +0x00, 0x2a, 0x00, 0x00, 0x00, 0x07, 0x07, 0x24, +0x01, 0x98, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5c, +0x00, 0x00, 0x02, 0xd8, 0x02, 0xa4, 0x02, 0x26, +0x00, 0x2a, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x98, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5c, +0xff, 0x3e, 0x02, 0xd8, 0x01, 0xec, 0x02, 0x26, +0x00, 0x2a, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0xa3, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xbf, 0x02, 0xf2, 0x02, 0x26, +0x00, 0x2b, 0x00, 0x00, 0x00, 0x07, 0x07, 0x24, +0x01, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xbf, 0x02, 0xf2, 0x02, 0x26, +0x00, 0x2b, 0x00, 0x00, 0x00, 0x07, 0x07, 0x21, +0x01, 0x1a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xbf, 0x02, 0xe1, 0x02, 0x26, +0x00, 0x2b, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3d, +0x01, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xbf, 0x02, 0xc6, 0x02, 0x26, +0x00, 0x2b, 0x00, 0x00, 0x00, 0x07, 0x07, 0x29, +0x01, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5c, +0xff, 0x25, 0x01, 0xbf, 0x01, 0xec, 0x02, 0x26, +0x00, 0x2b, 0x00, 0x00, 0x00, 0x07, 0x07, 0x54, +0x01, 0x10, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xbf, 0x02, 0xa4, 0x02, 0x26, +0x00, 0x2b, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5c, +0xff, 0x3e, 0x01, 0xbf, 0x01, 0xec, 0x02, 0x26, +0x00, 0x2b, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x11, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x5c, +0xff, 0x61, 0x01, 0xbf, 0x01, 0xec, 0x02, 0x26, +0x00, 0x2b, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2b, +0x01, 0x10, 0xfd, 0x03, 0xff, 0xff, 0x00, 0x3a, +0x00, 0x00, 0x02, 0x7c, 0x02, 0xbc, 0x00, 0x27, +0x00, 0x2b, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x06, +0x04, 0x83, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xe3, 0x02, 0xf2, 0x02, 0x26, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x21, +0x01, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xe3, 0x02, 0xf2, 0x02, 0x26, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x24, +0x01, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xe3, 0x02, 0xe1, 0x02, 0x26, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x27, +0x01, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xe3, 0x02, 0xc6, 0x02, 0x26, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x29, +0x01, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xe3, 0x02, 0xa0, 0x02, 0x26, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x35, +0x01, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xe3, 0x02, 0x82, 0x02, 0x26, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2b, +0x01, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xe3, 0x02, 0xee, 0x02, 0x26, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3b, +0x01, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xe3, 0x02, 0xe1, 0x02, 0x26, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3d, +0x01, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0x3e, 0x01, 0xe3, 0x01, 0xec, 0x02, 0x26, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x0c, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xe3, 0x02, 0xe5, 0x02, 0x26, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x37, +0x01, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xe3, 0x03, 0x03, 0x02, 0x26, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x76, +0x01, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x28, +0xff, 0xf4, 0x01, 0xe3, 0x03, 0x03, 0x02, 0x26, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x78, +0x01, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xe3, 0x03, 0x08, 0x02, 0x26, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x7a, +0x01, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xe3, 0x03, 0x11, 0x02, 0x26, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x7c, +0x01, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0x3e, 0x01, 0xe3, 0x02, 0xe1, 0x02, 0x26, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x27, 0x07, 0x27, +0x01, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x0c, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xe3, 0x02, 0xd3, 0x02, 0x26, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2f, +0x01, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xe3, 0x03, 0x36, 0x02, 0x26, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x88, +0x01, 0x0b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x2e, +0xff, 0xea, 0x01, 0xe9, 0x01, 0xf5, 0x00, 0x09, +0x00, 0x13, 0x00, 0x2e, 0x00, 0x81, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x29, 0x2f, +0x1b, 0xb9, 0x00, 0x29, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1c, +0x2f, 0x1b, 0xb9, 0x00, 0x1c, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x29, +0x11, 0x12, 0x39, 0xb9, 0x00, 0x02, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x0a, 0x00, 0x29, 0x00, 0x1c, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x0a, 0x10, 0xb8, +0x00, 0x09, 0xd0, 0xb8, 0x00, 0x29, 0x10, 0xb9, +0x00, 0x0c, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x13, 0xd0, 0xba, 0x00, 0x14, +0x00, 0x09, 0x00, 0x29, 0x11, 0x12, 0x39, 0xba, +0x00, 0x1e, 0x00, 0x1c, 0x00, 0x13, 0x11, 0x12, +0x39, 0xba, 0x00, 0x21, 0x00, 0x13, 0x00, 0x1c, +0x11, 0x12, 0x39, 0xba, 0x00, 0x2c, 0x00, 0x29, +0x00, 0x09, 0x11, 0x12, 0x39, 0x30, 0x31, 0x37, +0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2f, +0x01, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, +0x17, 0x01, 0x1e, 0x01, 0x15, 0x14, 0x0e, 0x02, +0x23, 0x22, 0x27, 0x07, 0x27, 0x37, 0x2e, 0x01, +0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, +0x37, 0x17, 0x99, 0x2f, 0x43, 0x24, 0x3f, 0x2e, +0x1a, 0x24, 0x14, 0x2e, 0x45, 0x24, 0x3f, 0x2d, +0x1a, 0x24, 0x01, 0x2a, 0x18, 0x1c, 0x23, 0x3b, +0x4f, 0x2b, 0x52, 0x3b, 0x36, 0x1a, 0x3a, 0x18, +0x1c, 0x23, 0x3b, 0x4e, 0x2b, 0x28, 0x49, 0x1d, +0x36, 0x1a, 0x4c, 0x32, 0x1f, 0x38, 0x4e, 0x2f, +0x52, 0x38, 0x1b, 0x33, 0x1f, 0x39, 0x4f, 0x2f, +0x51, 0x38, 0x01, 0x34, 0x20, 0x56, 0x36, 0x3c, +0x5d, 0x40, 0x22, 0x38, 0x42, 0x15, 0x46, 0x20, +0x54, 0x36, 0x3c, 0x5f, 0x40, 0x22, 0x1c, 0x1c, +0x41, 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x34, +0xff, 0xf4, 0x03, 0x2b, 0x01, 0xec, 0x00, 0x27, +0x00, 0x3b, 0x00, 0x44, 0x00, 0x69, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0a, 0x2f, +0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x0a, 0x10, 0xb8, 0x00, 0x10, +0xd0, 0xba, 0x00, 0x16, 0x00, 0x0a, 0x00, 0x00, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x28, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x1b, +0xd0, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x22, +0xd0, 0xb8, 0x00, 0x0a, 0x10, 0xb9, 0x00, 0x32, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x16, 0x10, 0xb9, +0x00, 0x3c, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x32, +0x10, 0xb8, 0x00, 0x3f, 0xd0, 0x30, 0x31, 0x05, +0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, +0x32, 0x16, 0x17, 0x3e, 0x01, 0x33, 0x32, 0x16, +0x15, 0x14, 0x07, 0x21, 0x14, 0x1e, 0x02, 0x33, +0x32, 0x36, 0x37, 0x17, 0x0e, 0x01, 0x23, 0x22, +0x26, 0x27, 0x0e, 0x01, 0x27, 0x32, 0x3e, 0x02, +0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, +0x15, 0x14, 0x1e, 0x02, 0x25, 0x34, 0x26, 0x23, +0x22, 0x0e, 0x02, 0x07, 0x01, 0x07, 0x2a, 0x4c, +0x3b, 0x22, 0x22, 0x3b, 0x4c, 0x2a, 0x3a, 0x66, +0x1a, 0x1a, 0x5f, 0x3a, 0x55, 0x62, 0x03, 0xfe, +0xaf, 0x1b, 0x2e, 0x40, 0x24, 0x27, 0x3e, 0x1b, +0x13, 0x1d, 0x45, 0x36, 0x3f, 0x64, 0x1a, 0x1c, +0x60, 0x3f, 0x24, 0x3d, 0x2b, 0x19, 0x19, 0x2b, +0x3d, 0x24, 0x23, 0x3d, 0x2c, 0x19, 0x19, 0x2c, +0x3d, 0x02, 0x1d, 0x4d, 0x40, 0x1e, 0x36, 0x2a, +0x1b, 0x04, 0x0c, 0x22, 0x40, 0x5d, 0x3c, 0x3c, +0x5f, 0x40, 0x22, 0x47, 0x47, 0x42, 0x4c, 0x74, +0x6a, 0x12, 0x12, 0x2d, 0x4c, 0x37, 0x1f, 0x17, +0x14, 0x23, 0x11, 0x1e, 0x4c, 0x41, 0x46, 0x47, +0x27, 0x1f, 0x38, 0x4e, 0x2f, 0x30, 0x4e, 0x39, +0x1f, 0x1f, 0x39, 0x4e, 0x30, 0x2f, 0x4e, 0x38, +0x1f, 0xf1, 0x5d, 0x5d, 0x1b, 0x31, 0x45, 0x29, +0x00, 0x02, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xf5, +0x02, 0x82, 0x00, 0x13, 0x00, 0x35, 0x00, 0x3f, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x2e, 0x2f, 0x1b, 0xb9, 0x00, 0x2e, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x24, 0x2f, 0x1b, 0xb9, 0x00, 0x24, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x00, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x2e, 0x10, 0xb9, 0x00, 0x0a, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x1c, 0x00, 0x24, +0x00, 0x2e, 0x11, 0x12, 0x39, 0x30, 0x31, 0x25, +0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, +0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x13, +0x1e, 0x01, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x1e, +0x01, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, +0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x17, +0x36, 0x35, 0x34, 0x26, 0x27, 0x01, 0x0b, 0x24, +0x3f, 0x2d, 0x1a, 0x1a, 0x2d, 0x3f, 0x24, 0x24, +0x3e, 0x2d, 0x1a, 0x1a, 0x2d, 0x3e, 0xfa, 0x09, +0x0b, 0x12, 0x1e, 0x26, 0x13, 0x27, 0x30, 0x23, +0x3b, 0x4f, 0x2b, 0x2b, 0x4e, 0x3b, 0x23, 0x23, +0x3b, 0x4e, 0x2b, 0x32, 0x2a, 0x63, 0x07, 0x07, +0x1b, 0x1f, 0x38, 0x4e, 0x2f, 0x30, 0x4e, 0x39, +0x1f, 0x1f, 0x39, 0x4e, 0x30, 0x2f, 0x4e, 0x38, +0x1f, 0x02, 0x67, 0x11, 0x23, 0x12, 0x1c, 0x2a, +0x1e, 0x13, 0x06, 0x20, 0x68, 0x48, 0x3c, 0x5d, +0x40, 0x22, 0x22, 0x40, 0x5d, 0x3c, 0x3c, 0x5f, +0x40, 0x22, 0x15, 0x0f, 0x53, 0x0c, 0x1c, 0x0d, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xf5, +0x02, 0xf2, 0x02, 0x26, 0x01, 0x76, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x01, 0x0b, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xf5, +0x02, 0xf2, 0x02, 0x26, 0x01, 0x76, 0x00, 0x00, +0x00, 0x07, 0x07, 0x21, 0x01, 0x0b, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xf5, +0x02, 0xe5, 0x02, 0x26, 0x01, 0x76, 0x00, 0x00, +0x00, 0x07, 0x07, 0x37, 0x01, 0x0b, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xf5, +0x02, 0xc6, 0x02, 0x26, 0x01, 0x76, 0x00, 0x00, +0x00, 0x07, 0x07, 0x29, 0x01, 0x07, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0x3e, 0x01, 0xf5, +0x02, 0x82, 0x02, 0x26, 0x01, 0x76, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x0c, 0xfc, 0xea, +0x00, 0x02, 0x00, 0x34, 0xff, 0x35, 0x01, 0xe3, +0x01, 0xec, 0x00, 0x27, 0x00, 0x3b, 0x00, 0x49, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x12, 0x2f, 0x1b, 0xb9, 0x00, 0x12, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x08, 0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x22, 0x00, 0x00, +0x00, 0x03, 0x2b, 0xb8, 0x00, 0x08, 0x10, 0xb8, +0x00, 0x1c, 0xd0, 0xb8, 0x00, 0x08, 0x10, 0xb9, +0x00, 0x28, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x12, +0x10, 0xb9, 0x00, 0x32, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x05, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, +0x37, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, +0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, +0x0e, 0x01, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, +0x17, 0x0e, 0x01, 0x27, 0x32, 0x3e, 0x02, 0x35, +0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, +0x14, 0x1e, 0x02, 0x01, 0x26, 0x22, 0x2f, 0x0b, +0x11, 0x14, 0x08, 0x2d, 0x4f, 0x3b, 0x22, 0x23, +0x3b, 0x4e, 0x2b, 0x2b, 0x4f, 0x3b, 0x23, 0x17, +0x29, 0x3a, 0x23, 0x21, 0x2a, 0x1e, 0x13, 0x19, +0x12, 0x10, 0x0b, 0x25, 0x2c, 0x24, 0x3f, 0x2d, +0x1a, 0x1a, 0x2d, 0x3f, 0x24, 0x24, 0x3e, 0x2d, +0x1a, 0x1a, 0x2d, 0x3e, 0xcb, 0x28, 0x29, 0x13, +0x22, 0x1c, 0x16, 0x07, 0x01, 0x22, 0x41, 0x5c, +0x3b, 0x3c, 0x5f, 0x40, 0x22, 0x22, 0x40, 0x5f, +0x3c, 0x33, 0x4e, 0x3b, 0x2a, 0x10, 0x0f, 0x3e, +0x20, 0x1a, 0x1a, 0x0e, 0x1a, 0x0a, 0x0d, 0xe6, +0x1f, 0x38, 0x4e, 0x2f, 0x30, 0x4e, 0x39, 0x1f, +0x1f, 0x39, 0x4e, 0x30, 0x2f, 0x4e, 0x38, 0x1f, +0xff, 0xff, 0x00, 0x5c, 0x00, 0x00, 0x01, 0x41, +0x02, 0xf2, 0x02, 0x26, 0x00, 0x2f, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x00, 0xc8, 0x00, 0x00, +0xff, 0xff, 0x00, 0x1b, 0xff, 0x25, 0x01, 0x41, +0x01, 0xec, 0x02, 0x26, 0x00, 0x2f, 0x00, 0x00, +0x00, 0x06, 0x07, 0x54, 0x6f, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x52, +0x02, 0xe1, 0x02, 0x26, 0x00, 0x2f, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3d, 0x00, 0xc8, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5c, 0x00, 0x00, 0x01, 0x41, +0x02, 0xa4, 0x02, 0x26, 0x00, 0x2f, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x00, 0xc6, 0x00, 0x00, +0xff, 0xff, 0x00, 0x4a, 0xff, 0x3e, 0x01, 0x41, +0x01, 0xec, 0x02, 0x26, 0x00, 0x2f, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x00, 0x70, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x4a, 0xff, 0x3e, 0x01, 0x43, +0x02, 0x82, 0x02, 0x26, 0x00, 0x2f, 0x00, 0x00, +0x00, 0x27, 0x07, 0x2b, 0x00, 0xc8, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x00, 0x70, 0xfc, 0xea, +0xff, 0xff, 0xff, 0xf4, 0xff, 0x61, 0x01, 0x41, +0x01, 0xec, 0x02, 0x26, 0x00, 0x2f, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x00, 0x6f, 0xfd, 0x03, +0xff, 0xff, 0x00, 0x20, 0xff, 0xf4, 0x01, 0x72, +0x02, 0xf2, 0x02, 0x26, 0x00, 0x30, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x00, 0xd2, 0x00, 0x00, +0xff, 0xff, 0x00, 0x20, 0xff, 0xf4, 0x01, 0x72, +0x02, 0xe1, 0x02, 0x26, 0x00, 0x30, 0x00, 0x00, +0x00, 0x07, 0x07, 0x27, 0x00, 0xd2, 0x00, 0x00, +0xff, 0xff, 0x00, 0x20, 0xff, 0xf4, 0x01, 0x72, +0x02, 0xe1, 0x02, 0x26, 0x00, 0x30, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3d, 0x00, 0xd2, 0x00, 0x00, +0xff, 0xff, 0x00, 0x20, 0xff, 0x25, 0x01, 0x72, +0x01, 0xec, 0x02, 0x26, 0x00, 0x30, 0x00, 0x00, +0x00, 0x07, 0x07, 0x56, 0x00, 0xd6, 0x00, 0x00, +0xff, 0xff, 0x00, 0x20, 0xff, 0x25, 0x01, 0x72, +0x01, 0xec, 0x02, 0x26, 0x00, 0x30, 0x00, 0x00, +0x00, 0x07, 0x07, 0x54, 0x00, 0xd9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x20, 0xff, 0xf4, 0x01, 0x72, +0x02, 0xa4, 0x02, 0x26, 0x00, 0x30, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x00, 0xd2, 0x00, 0x00, +0xff, 0xff, 0x00, 0x20, 0xff, 0x3e, 0x01, 0x72, +0x01, 0xec, 0x02, 0x26, 0x00, 0x30, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x00, 0xd9, 0xfc, 0xea, +0x00, 0x01, 0x00, 0x5c, 0xff, 0xf4, 0x02, 0x01, +0x02, 0xd9, 0x00, 0x39, 0x00, 0x69, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x24, 0x2f, +0x1b, 0xb9, 0x00, 0x24, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x07, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x0c, 0x00, 0x24, 0x00, 0x00, 0x11, 0x12, +0x39, 0xba, 0x00, 0x13, 0x00, 0x24, 0x00, 0x00, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x24, 0x10, 0xb9, +0x00, 0x1b, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x20, 0xd0, 0xb8, 0x00, 0x20, +0x2f, 0xba, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x24, +0x11, 0x12, 0x39, 0xba, 0x00, 0x35, 0x00, 0x00, +0x00, 0x24, 0x11, 0x12, 0x39, 0x30, 0x31, 0x05, +0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, +0x3e, 0x02, 0x35, 0x34, 0x2e, 0x04, 0x35, 0x34, +0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, +0x15, 0x11, 0x23, 0x11, 0x34, 0x36, 0x33, 0x32, +0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x15, 0x14, +0x1e, 0x04, 0x15, 0x14, 0x0e, 0x02, 0x01, 0x6f, +0x27, 0x44, 0x1d, 0x16, 0x1d, 0x35, 0x20, 0x19, +0x26, 0x19, 0x0d, 0x1f, 0x2e, 0x37, 0x2e, 0x1f, +0x1f, 0x24, 0x1f, 0x2f, 0x30, 0x39, 0x45, 0x2c, +0x5d, 0x4e, 0x21, 0x33, 0x24, 0x13, 0x1f, 0x25, +0x1f, 0x1f, 0x2f, 0x36, 0x2f, 0x1f, 0x16, 0x27, +0x35, 0x0c, 0x1c, 0x17, 0x21, 0x17, 0x17, 0x11, +0x1b, 0x24, 0x13, 0x23, 0x2c, 0x1f, 0x19, 0x20, +0x2d, 0x24, 0x24, 0x34, 0x2f, 0x31, 0x22, 0x2c, +0x38, 0x54, 0x5a, 0xfd, 0xfb, 0x02, 0x14, 0x5d, +0x68, 0x15, 0x24, 0x31, 0x1c, 0x27, 0x37, 0x2f, +0x2f, 0x1e, 0x1d, 0x24, 0x1b, 0x1a, 0x24, 0x36, +0x2a, 0x1e, 0x32, 0x26, 0x15, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x1c, 0xff, 0xf4, 0x01, 0x2d, +0x02, 0xf2, 0x02, 0x26, 0x00, 0x31, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3f, 0x01, 0x0e, 0x00, 0x00, +0xff, 0xff, 0x00, 0x1c, 0xff, 0x25, 0x01, 0x2d, +0x02, 0x6b, 0x02, 0x26, 0x00, 0x31, 0x00, 0x00, +0x00, 0x07, 0x07, 0x56, 0x00, 0xca, 0x00, 0x00, +0xff, 0xff, 0x00, 0x1c, 0xff, 0x25, 0x01, 0x2d, +0x02, 0x6b, 0x02, 0x26, 0x00, 0x31, 0x00, 0x00, +0x00, 0x07, 0x07, 0x54, 0x00, 0xc8, 0x00, 0x00, +0xff, 0xff, 0x00, 0x1c, 0xff, 0x3e, 0x01, 0x2d, +0x02, 0x6b, 0x02, 0x26, 0x00, 0x31, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x00, 0xc9, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x1c, 0xff, 0x61, 0x01, 0x43, +0x02, 0x6b, 0x02, 0x26, 0x00, 0x31, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x00, 0xc8, 0xfd, 0x03, +0xff, 0xff, 0x00, 0x04, 0xff, 0xf4, 0x01, 0x2d, +0x03, 0x25, 0x02, 0x26, 0x00, 0x31, 0x00, 0x00, +0x00, 0x07, 0x07, 0x35, 0x00, 0x82, 0x00, 0x85, +0x00, 0x01, 0x00, 0x1c, 0xff, 0xf4, 0x01, 0x2d, +0x02, 0x6b, 0x00, 0x23, 0x00, 0x67, 0x00, 0x7c, +0xb8, 0x00, 0x12, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x10, 0x2f, 0x1b, 0xb9, +0x00, 0x10, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, 0x2f, 0x1b, +0xb9, 0x00, 0x03, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x0c, 0x00, 0x09, 0x00, 0x03, 0x2b, 0xb8, +0x00, 0x10, 0x10, 0xb9, 0x00, 0x0d, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x10, 0x10, 0xb8, 0x00, 0x14, +0xd0, 0xb8, 0x00, 0x0d, 0x10, 0xb8, 0x00, 0x15, +0xd0, 0xb8, 0x00, 0x0c, 0x10, 0xb8, 0x00, 0x18, +0xd0, 0xb8, 0x00, 0x09, 0x10, 0xb8, 0x00, 0x19, +0xd0, 0xb8, 0x00, 0x03, 0x10, 0xb9, 0x00, 0x20, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x25, 0x0e, 0x01, +0x23, 0x22, 0x2e, 0x02, 0x3d, 0x01, 0x23, 0x35, +0x37, 0x35, 0x23, 0x35, 0x3f, 0x01, 0x33, 0x15, +0x33, 0x15, 0x23, 0x15, 0x33, 0x15, 0x23, 0x15, +0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x01, +0x2d, 0x15, 0x2a, 0x0f, 0x23, 0x2e, 0x1c, 0x0b, +0x4b, 0x4b, 0x4b, 0x4c, 0x06, 0x26, 0x8b, 0x8b, +0x8b, 0x8b, 0x07, 0x12, 0x1f, 0x19, 0x0e, 0x21, +0x0d, 0x06, 0x08, 0x0a, 0x15, 0x26, 0x36, 0x20, +0x67, 0x1d, 0x04, 0xad, 0x22, 0x04, 0x8b, 0x8b, +0x26, 0xad, 0x21, 0x6b, 0x17, 0x25, 0x1b, 0x0f, +0x09, 0x06, 0x00, 0x00, 0xff, 0xff, 0x00, 0x55, +0xff, 0xf4, 0x01, 0xb5, 0x02, 0xf2, 0x02, 0x26, +0x00, 0x32, 0x00, 0x00, 0x00, 0x07, 0x07, 0x21, +0x01, 0x08, 0x00, 0x00, 0xff, 0xff, 0x00, 0x55, +0xff, 0xf4, 0x01, 0xb5, 0x02, 0xf2, 0x02, 0x26, +0x00, 0x32, 0x00, 0x00, 0x00, 0x07, 0x07, 0x24, +0x01, 0x08, 0x00, 0x00, 0xff, 0xff, 0x00, 0x55, +0xff, 0xf4, 0x01, 0xb5, 0x02, 0xe1, 0x02, 0x26, +0x00, 0x32, 0x00, 0x00, 0x00, 0x07, 0x07, 0x27, +0x01, 0x08, 0x00, 0x00, 0xff, 0xff, 0x00, 0x55, +0xff, 0xf4, 0x01, 0xb5, 0x02, 0xc6, 0x02, 0x26, +0x00, 0x32, 0x00, 0x00, 0x00, 0x07, 0x07, 0x29, +0x01, 0x08, 0x00, 0x00, 0xff, 0xff, 0x00, 0x55, +0xff, 0xf4, 0x01, 0xb5, 0x02, 0xa0, 0x02, 0x26, +0x00, 0x32, 0x00, 0x00, 0x00, 0x07, 0x07, 0x35, +0x01, 0x08, 0x00, 0x00, 0xff, 0xff, 0x00, 0x55, +0xff, 0xf4, 0x01, 0xb5, 0x02, 0x82, 0x02, 0x26, +0x00, 0x32, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2b, +0x01, 0x04, 0x00, 0x00, 0xff, 0xff, 0x00, 0x55, +0xff, 0xf4, 0x01, 0xb5, 0x02, 0xd3, 0x02, 0x26, +0x00, 0x32, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2f, +0x01, 0x08, 0x00, 0x00, 0xff, 0xff, 0x00, 0x55, +0xff, 0xf4, 0x01, 0xb5, 0x02, 0xe3, 0x02, 0x26, +0x00, 0x32, 0x00, 0x00, 0x00, 0x07, 0x07, 0x39, +0x01, 0x08, 0x00, 0x00, 0xff, 0xff, 0x00, 0x55, +0xff, 0xf4, 0x01, 0xba, 0x02, 0xee, 0x02, 0x26, +0x00, 0x32, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3b, +0x01, 0x08, 0x00, 0x00, 0xff, 0xff, 0x00, 0x55, +0xff, 0xf4, 0x01, 0xb5, 0x02, 0xe1, 0x02, 0x26, +0x00, 0x32, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3d, +0x01, 0x08, 0x00, 0x00, 0xff, 0xff, 0x00, 0x55, +0xff, 0xf4, 0x01, 0xb5, 0x03, 0x0c, 0x02, 0x26, +0x00, 0x32, 0x00, 0x00, 0x00, 0x07, 0x07, 0x72, +0x01, 0x08, 0x00, 0x00, 0xff, 0xff, 0x00, 0x55, +0xff, 0xf4, 0x01, 0xb5, 0x03, 0x36, 0x02, 0x26, +0x00, 0x32, 0x00, 0x00, 0x00, 0x07, 0x07, 0x6b, +0x01, 0x08, 0x00, 0x00, 0xff, 0xff, 0x00, 0x55, +0xff, 0xf4, 0x01, 0xb5, 0x03, 0x35, 0x02, 0x26, +0x00, 0x32, 0x00, 0x00, 0x00, 0x07, 0x07, 0x74, +0x01, 0x08, 0x00, 0x00, 0xff, 0xff, 0x00, 0x55, +0xff, 0xf4, 0x01, 0xb5, 0x03, 0x36, 0x02, 0x26, +0x00, 0x32, 0x00, 0x00, 0x00, 0x07, 0x07, 0x6e, +0x01, 0x08, 0x00, 0x00, 0xff, 0xff, 0x00, 0x55, +0xff, 0x3e, 0x01, 0xb5, 0x01, 0xe0, 0x02, 0x26, +0x00, 0x32, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x1a, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x55, +0xff, 0xf4, 0x01, 0xb5, 0x02, 0xe5, 0x02, 0x26, +0x00, 0x32, 0x00, 0x00, 0x00, 0x07, 0x07, 0x37, +0x01, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x55, +0xff, 0x35, 0x01, 0xcb, 0x01, 0xe0, 0x00, 0x25, +0x00, 0x67, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, +0x0b, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x20, +0x00, 0x00, 0x00, 0x03, 0x2b, 0xb8, 0x00, 0x0b, +0x10, 0xb8, 0x00, 0x06, 0xd0, 0xba, 0x00, 0x07, +0x00, 0x0f, 0x00, 0x0b, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x0b, 0x10, 0xb9, 0x00, 0x14, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x07, 0x10, 0xb9, 0x00, 0x17, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0f, 0x10, 0xb8, +0x00, 0x18, 0xd0, 0xb8, 0x00, 0x06, 0x10, 0xb8, +0x00, 0x1a, 0xd0, 0xb8, 0x00, 0x1a, 0x2f, 0x30, +0x31, 0x05, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, +0x27, 0x23, 0x0e, 0x01, 0x23, 0x22, 0x26, 0x35, +0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, +0x37, 0x11, 0x33, 0x11, 0x0e, 0x01, 0x15, 0x14, +0x16, 0x33, 0x32, 0x37, 0x17, 0x0e, 0x01, 0x01, +0x8a, 0x23, 0x2e, 0x30, 0x27, 0x05, 0x02, 0x23, +0x4e, 0x32, 0x4b, 0x46, 0x2c, 0x32, 0x3b, 0x2b, +0x46, 0x2a, 0x2c, 0x2a, 0x2c, 0x1e, 0x13, 0x19, +0x12, 0x10, 0x0b, 0x26, 0xcb, 0x28, 0x29, 0x26, +0x3e, 0x1d, 0x49, 0x2a, 0x32, 0x5a, 0x5e, 0x01, +0x34, 0xfe, 0xd2, 0x4d, 0x49, 0x2f, 0x33, 0x01, +0x62, 0xfe, 0x20, 0x1a, 0x3a, 0x20, 0x1a, 0x1a, +0x0e, 0x1a, 0x0a, 0x0d, 0x00, 0x01, 0x00, 0x55, +0xff, 0xf4, 0x02, 0x11, 0x02, 0x8c, 0x00, 0x22, +0x00, 0x59, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x12, 0x2f, 0x1b, 0xb9, 0x00, 0x12, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x1c, 0x2f, 0x1b, 0xb9, 0x00, +0x1c, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0e, 0x2f, 0x1b, 0xb9, +0x00, 0x0e, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x09, 0x2f, 0x1b, +0xb9, 0x00, 0x09, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x1c, 0x10, 0xb8, 0x00, 0x07, 0xdc, 0xb8, +0x00, 0x0e, 0x10, 0xb9, 0x00, 0x17, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x01, 0x16, 0x15, 0x14, 0x0e, +0x02, 0x07, 0x11, 0x23, 0x27, 0x23, 0x0e, 0x01, +0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, +0x16, 0x33, 0x32, 0x36, 0x37, 0x11, 0x33, 0x3e, +0x01, 0x35, 0x34, 0x26, 0x27, 0x01, 0xfd, 0x14, +0x12, 0x1b, 0x20, 0x0f, 0x25, 0x05, 0x02, 0x23, +0x4e, 0x32, 0x4b, 0x46, 0x2c, 0x33, 0x3a, 0x2b, +0x46, 0x2a, 0x07, 0x27, 0x2f, 0x07, 0x07, 0x02, +0x8c, 0x22, 0x24, 0x1e, 0x2b, 0x1d, 0x12, 0x05, +0xfe, 0x37, 0x50, 0x2a, 0x32, 0x5a, 0x5e, 0x01, +0x34, 0xfe, 0xd2, 0x4d, 0x49, 0x2f, 0x33, 0x01, +0x62, 0x08, 0x2e, 0x2d, 0x0c, 0x1c, 0x0d, 0x00, +0xff, 0xff, 0x00, 0x55, 0xff, 0xf4, 0x02, 0x11, +0x02, 0xf2, 0x02, 0x26, 0x01, 0xa4, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x01, 0x04, 0x00, 0x00, +0xff, 0xff, 0x00, 0x55, 0xff, 0xf4, 0x02, 0x11, +0x02, 0xf2, 0x02, 0x26, 0x01, 0xa4, 0x00, 0x00, +0x00, 0x07, 0x07, 0x21, 0x01, 0x04, 0x00, 0x00, +0xff, 0xff, 0x00, 0x55, 0xff, 0xf4, 0x02, 0x11, +0x02, 0xe5, 0x02, 0x26, 0x01, 0xa4, 0x00, 0x00, +0x00, 0x07, 0x07, 0x37, 0x01, 0x04, 0x00, 0x00, +0xff, 0xff, 0x00, 0x55, 0xff, 0xf4, 0x02, 0x11, +0x02, 0xc6, 0x02, 0x26, 0x01, 0xa4, 0x00, 0x00, +0x00, 0x07, 0x07, 0x29, 0x01, 0x04, 0x00, 0x00, +0xff, 0xff, 0x00, 0x55, 0xff, 0x3e, 0x02, 0x11, +0x02, 0x8c, 0x02, 0x26, 0x01, 0xa4, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x17, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x18, 0x00, 0x00, 0x02, 0x95, +0x02, 0xf2, 0x02, 0x26, 0x00, 0x34, 0x00, 0x00, +0x00, 0x07, 0x07, 0x21, 0x01, 0x57, 0x00, 0x00, +0xff, 0xff, 0x00, 0x18, 0x00, 0x00, 0x02, 0x95, +0x02, 0xf2, 0x02, 0x26, 0x00, 0x34, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x01, 0x57, 0x00, 0x00, +0xff, 0xff, 0x00, 0x18, 0x00, 0x00, 0x02, 0x95, +0x02, 0xe1, 0x02, 0x26, 0x00, 0x34, 0x00, 0x00, +0x00, 0x07, 0x07, 0x27, 0x01, 0x57, 0x00, 0x00, +0xff, 0xff, 0x00, 0x18, 0x00, 0x00, 0x02, 0x95, +0x02, 0xa0, 0x02, 0x26, 0x00, 0x34, 0x00, 0x00, +0x00, 0x07, 0x07, 0x35, 0x01, 0x57, 0x00, 0x00, +0xff, 0xff, 0x00, 0x0c, 0xff, 0x25, 0x01, 0xa8, +0x02, 0xf2, 0x02, 0x26, 0x00, 0x36, 0x00, 0x00, +0x00, 0x07, 0x07, 0x21, 0x00, 0xe5, 0x00, 0x00, +0xff, 0xff, 0x00, 0x0c, 0xff, 0x25, 0x01, 0xa8, +0x02, 0xf2, 0x02, 0x26, 0x00, 0x36, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x00, 0xe5, 0x00, 0x00, +0xff, 0xff, 0x00, 0x0c, 0xff, 0x25, 0x01, 0xa8, +0x02, 0xe1, 0x02, 0x26, 0x00, 0x36, 0x00, 0x00, +0x00, 0x07, 0x07, 0x27, 0x00, 0xe5, 0x00, 0x00, +0xff, 0xff, 0x00, 0x0c, 0xff, 0x25, 0x01, 0xa8, +0x02, 0xa0, 0x02, 0x26, 0x00, 0x36, 0x00, 0x00, +0x00, 0x07, 0x07, 0x35, 0x00, 0xe5, 0x00, 0x00, +0xff, 0xff, 0x00, 0x0c, 0xff, 0x25, 0x01, 0xa8, +0x02, 0xa4, 0x02, 0x26, 0x00, 0x36, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x00, 0xe5, 0x00, 0x00, +0xff, 0xff, 0x00, 0x0c, 0xff, 0x25, 0x01, 0xa8, +0x01, 0xe0, 0x02, 0x26, 0x00, 0x36, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x68, 0xfc, 0xeb, +0xff, 0xff, 0x00, 0x0c, 0xff, 0x25, 0x01, 0xa8, +0x02, 0xe5, 0x02, 0x26, 0x00, 0x36, 0x00, 0x00, +0x00, 0x07, 0x07, 0x37, 0x00, 0xe5, 0x00, 0x00, +0xff, 0xff, 0x00, 0x0c, 0xff, 0x25, 0x01, 0xa8, +0x02, 0xc6, 0x02, 0x26, 0x00, 0x36, 0x00, 0x00, +0x00, 0x07, 0x07, 0x29, 0x00, 0xe5, 0x00, 0x00, +0xff, 0xff, 0x00, 0x1b, 0x00, 0x00, 0x01, 0x7a, +0x02, 0xf2, 0x02, 0x26, 0x00, 0x37, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x00, 0xdb, 0x00, 0x00, +0xff, 0xff, 0x00, 0x1b, 0x00, 0x00, 0x01, 0x7a, +0x02, 0xe1, 0x02, 0x26, 0x00, 0x37, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3d, 0x00, 0xdb, 0x00, 0x00, +0xff, 0xff, 0x00, 0x1b, 0x00, 0x00, 0x01, 0x7a, +0x02, 0xa4, 0x02, 0x26, 0x00, 0x37, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x00, 0xdb, 0x00, 0x00, +0xff, 0xff, 0x00, 0x1b, 0xff, 0x3e, 0x01, 0x7a, +0x01, 0xe0, 0x02, 0x26, 0x00, 0x37, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x00, 0xda, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x1b, 0xff, 0x61, 0x01, 0x7a, +0x01, 0xe0, 0x02, 0x26, 0x00, 0x37, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x00, 0xda, 0xfd, 0x03, +0x00, 0x02, 0x00, 0x3c, 0xff, 0xf4, 0x01, 0xd6, +0x02, 0xd4, 0x00, 0x15, 0x00, 0x3c, 0x00, 0x55, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x37, 0x2f, 0x1b, 0xb9, 0x00, 0x37, 0x00, 0x13, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x20, 0x2f, 0x1b, 0xb9, 0x00, 0x20, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x00, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x37, 0x10, 0xb8, 0x00, 0x33, +0xd0, 0xb8, 0x00, 0x30, 0xdc, 0xb8, 0x00, 0x31, +0xd0, 0xb8, 0x00, 0x2a, 0xd0, 0xb9, 0x00, 0x0c, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x30, 0x10, 0xb8, +0x00, 0x16, 0xd0, 0xb8, 0x00, 0x33, 0x10, 0xb8, +0x00, 0x3a, 0xd0, 0x30, 0x31, 0x25, 0x32, 0x3e, +0x02, 0x35, 0x34, 0x27, 0x2e, 0x03, 0x23, 0x22, +0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x13, 0x1e, +0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, +0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, +0x17, 0x2e, 0x01, 0x27, 0x07, 0x27, 0x37, 0x2e, +0x01, 0x27, 0x37, 0x1e, 0x01, 0x17, 0x37, 0x17, +0x01, 0x0b, 0x29, 0x3b, 0x27, 0x13, 0x03, 0x13, +0x27, 0x26, 0x26, 0x13, 0x29, 0x3d, 0x2a, 0x15, +0x1a, 0x2c, 0x3c, 0x65, 0x1e, 0x31, 0x24, 0x14, +0x1e, 0x35, 0x4b, 0x2d, 0x28, 0x4b, 0x39, 0x23, +0x1e, 0x37, 0x4c, 0x2e, 0x2b, 0x4c, 0x1d, 0x0e, +0x3c, 0x2a, 0x8e, 0x0f, 0x84, 0x1c, 0x3e, 0x21, +0x16, 0x25, 0x45, 0x20, 0x8e, 0x0f, 0x1b, 0x23, +0x3c, 0x52, 0x2f, 0x20, 0x1e, 0x1c, 0x24, 0x14, +0x07, 0x1e, 0x32, 0x44, 0x25, 0x2a, 0x47, 0x33, +0x1c, 0x02, 0x44, 0x1e, 0x49, 0x57, 0x68, 0x3d, +0x3c, 0x62, 0x45, 0x25, 0x20, 0x3b, 0x56, 0x36, +0x31, 0x53, 0x3a, 0x21, 0x26, 0x26, 0x4a, 0x6a, +0x2a, 0x49, 0x1b, 0x44, 0x18, 0x29, 0x13, 0x1e, +0x14, 0x2e, 0x1d, 0x4a, 0x1b, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x5c, 0xff, 0x27, 0x01, 0xec, +0x02, 0xcf, 0x00, 0x10, 0x00, 0x25, 0x00, 0x83, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x11, 0x2f, 0x1b, 0xb9, 0x00, 0x11, 0x00, 0x13, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x16, 0x2f, 0x1b, 0xb9, 0x00, 0x16, 0x00, +0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x25, 0x2f, 0x1b, 0xb9, 0x00, 0x25, +0x00, 0x07, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x20, 0x2f, 0x1b, 0xb9, 0x00, +0x20, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x23, +0x00, 0x20, 0x00, 0x16, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x23, 0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x20, 0x10, 0xb9, 0x00, 0x03, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x16, 0x10, 0xb9, +0x00, 0x0d, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x13, +0x00, 0x16, 0x00, 0x20, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x13, 0x10, 0xb9, 0x00, 0x10, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x37, 0x1e, 0x01, 0x33, 0x32, +0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, +0x06, 0x07, 0x03, 0x33, 0x11, 0x3e, 0x01, 0x33, +0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, +0x22, 0x26, 0x27, 0x11, 0x23, 0x88, 0x2a, 0x48, +0x1c, 0x24, 0x3e, 0x2c, 0x19, 0x11, 0x24, 0x3a, +0x29, 0x24, 0x4d, 0x2c, 0x2c, 0x2c, 0x24, 0x52, +0x2d, 0x30, 0x49, 0x30, 0x18, 0x22, 0x3b, 0x4d, +0x2a, 0x23, 0x47, 0x26, 0x2c, 0x59, 0x22, 0x1c, +0x20, 0x3a, 0x51, 0x31, 0x2c, 0x4c, 0x37, 0x1f, +0x29, 0x26, 0x01, 0x59, 0xfe, 0xd6, 0x1c, 0x2b, +0x23, 0x40, 0x5a, 0x38, 0x3d, 0x60, 0x43, 0x23, +0x1e, 0x1c, 0xfe, 0xf9, 0x00, 0x01, 0x00, 0x5c, +0xff, 0x4b, 0x01, 0xbf, 0x01, 0xec, 0x00, 0x20, +0x00, 0x59, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x1a, 0x2f, 0x1b, 0xb9, 0x00, 0x1a, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, 0x00, +0x13, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x07, +0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x1a, 0x10, 0xb9, 0x00, 0x0e, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x16, 0x00, 0x1a, 0x00, 0x13, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x16, 0x10, 0xb9, +0x00, 0x11, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x1a, +0x10, 0xb8, 0x00, 0x14, 0xd0, 0xb8, 0x00, 0x14, +0x2f, 0x30, 0x31, 0x05, 0x22, 0x26, 0x27, 0x37, +0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, 0x11, 0x34, +0x26, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, 0x11, +0x33, 0x17, 0x33, 0x3e, 0x01, 0x33, 0x32, 0x16, +0x15, 0x11, 0x14, 0x06, 0x01, 0x53, 0x11, 0x21, +0x0b, 0x0a, 0x09, 0x1b, 0x0e, 0x28, 0x19, 0x33, +0x3b, 0x2b, 0x46, 0x2c, 0x2c, 0x26, 0x04, 0x03, +0x25, 0x4e, 0x32, 0x4b, 0x46, 0x33, 0xb5, 0x07, +0x05, 0x24, 0x03, 0x06, 0x3a, 0x2e, 0x01, 0x54, +0x4d, 0x49, 0x2d, 0x2d, 0xfe, 0x96, 0x01, 0xe0, +0x4a, 0x25, 0x31, 0x5a, 0x5e, 0xfe, 0xa3, 0x47, +0x45, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdf, +0xff, 0x1b, 0x00, 0x89, 0x01, 0xe0, 0x00, 0x0f, +0x00, 0x2b, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x07, 0x3e, 0x59, 0xb9, 0x00, 0x07, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, 0x22, 0x26, +0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, +0x11, 0x33, 0x11, 0x14, 0x06, 0x1d, 0x11, 0x22, +0x0b, 0x0b, 0x09, 0x1b, 0x0e, 0x28, 0x18, 0x2d, +0x34, 0xe5, 0x07, 0x05, 0x24, 0x03, 0x07, 0x3b, +0x2e, 0x02, 0x36, 0xfd, 0xc7, 0x47, 0x45, 0x00, +0x00, 0x04, 0x00, 0x4b, 0xff, 0x1b, 0x01, 0x81, +0x02, 0xa3, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x1f, +0x00, 0x2b, 0x00, 0x60, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, +0x00, 0x00, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, 0x2f, 0x1b, +0xb9, 0x00, 0x03, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x10, 0x2f, +0x1b, 0xb9, 0x00, 0x10, 0x00, 0x07, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x04, 0xd0, +0xb8, 0x00, 0x0a, 0xd0, 0xb8, 0x00, 0x10, 0x10, +0xb9, 0x00, 0x17, 0x00, 0x01, 0xf4, 0xb8, 0x00, +0x00, 0x10, 0xb8, 0x00, 0x1b, 0xd0, 0xb8, 0x00, +0x04, 0x10, 0xb8, 0x00, 0x20, 0xd0, 0xb8, 0x00, +0x26, 0xd0, 0x30, 0x31, 0x13, 0x33, 0x11, 0x23, +0x13, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, +0x16, 0x15, 0x14, 0x06, 0x13, 0x22, 0x26, 0x27, +0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, 0x11, +0x33, 0x11, 0x14, 0x06, 0x13, 0x22, 0x26, 0x35, +0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, +0x5c, 0x2c, 0x2c, 0x17, 0x11, 0x17, 0x17, 0x11, +0x11, 0x17, 0x17, 0x7e, 0x11, 0x22, 0x0b, 0x0b, +0x09, 0x1b, 0x0e, 0x28, 0x18, 0x2d, 0x34, 0x1e, +0x10, 0x18, 0x18, 0x10, 0x11, 0x18, 0x18, 0x01, +0xe0, 0xfe, 0x20, 0x02, 0x54, 0x16, 0x11, 0x13, +0x15, 0x15, 0x13, 0x11, 0x16, 0xfc, 0xc7, 0x07, +0x05, 0x24, 0x03, 0x07, 0x3b, 0x2e, 0x02, 0x36, +0xfd, 0xc7, 0x47, 0x45, 0x03, 0x39, 0x16, 0x11, +0x13, 0x15, 0x15, 0x13, 0x11, 0x16, 0x00, 0x00, +0x00, 0x02, 0x00, 0x54, 0xff, 0xf4, 0x01, 0xb6, +0x01, 0xec, 0x00, 0x21, 0x00, 0x2f, 0x00, 0x6d, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0c, 0x2f, 0x1b, 0xb9, 0x00, 0x0c, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x0c, 0x10, 0xb8, +0x00, 0x06, 0xd0, 0xb8, 0x00, 0x06, 0x2f, 0xba, +0x00, 0x09, 0x00, 0x00, 0x00, 0x0c, 0x11, 0x12, +0x39, 0xba, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x00, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x19, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x14, +0x10, 0xb9, 0x00, 0x22, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x0c, 0x10, 0xb9, 0x00, 0x2c, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x09, 0x10, 0xb9, 0x00, 0x2f, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x05, 0x22, 0x2e, +0x02, 0x35, 0x11, 0x33, 0x17, 0x33, 0x3e, 0x01, +0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, +0x06, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x17, +0x0e, 0x03, 0x27, 0x3e, 0x03, 0x35, 0x34, 0x2e, +0x02, 0x23, 0x22, 0x06, 0x07, 0x01, 0x0a, 0x33, +0x46, 0x2b, 0x12, 0x26, 0x05, 0x02, 0x26, 0x5e, +0x31, 0x1b, 0x2e, 0x23, 0x14, 0x95, 0xa0, 0x01, +0x0b, 0x20, 0x37, 0x2c, 0x2e, 0x4b, 0x17, 0x14, +0x0c, 0x23, 0x2b, 0x33, 0xa4, 0x4a, 0x65, 0x3e, +0x1b, 0x0f, 0x19, 0x21, 0x13, 0x28, 0x54, 0x30, +0x0c, 0x1f, 0x35, 0x47, 0x28, 0x01, 0x29, 0x48, +0x26, 0x2e, 0x0e, 0x1e, 0x2e, 0x1f, 0x54, 0x59, +0x13, 0x1a, 0x35, 0x2d, 0x1c, 0x26, 0x12, 0x21, +0x09, 0x16, 0x12, 0x0d, 0xe1, 0x09, 0x1c, 0x26, +0x31, 0x1e, 0x18, 0x21, 0x15, 0x09, 0x29, 0x30, +0x00, 0x02, 0x00, 0x5c, 0xff, 0xf4, 0x01, 0xec, +0x01, 0xec, 0x00, 0x14, 0x00, 0x25, 0x00, 0x75, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0d, 0x2f, 0x1b, 0xb9, 0x00, 0x0d, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x03, 0x00, 0x00, +0x00, 0x0d, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x06, +0xd0, 0xb8, 0x00, 0x06, 0x2f, 0xb8, 0x00, 0x0d, +0x10, 0xb8, 0x00, 0x07, 0xd0, 0xb8, 0x00, 0x07, +0x2f, 0xba, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x00, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x15, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0d, +0x10, 0xb9, 0x00, 0x1f, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x09, 0x10, 0xb9, 0x00, 0x22, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x03, 0x10, 0xb9, 0x00, 0x23, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x05, 0x22, 0x26, +0x27, 0x23, 0x07, 0x23, 0x11, 0x33, 0x17, 0x33, +0x3e, 0x01, 0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, +0x02, 0x27, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, +0x02, 0x23, 0x22, 0x06, 0x07, 0x11, 0x1e, 0x01, +0x01, 0x18, 0x22, 0x49, 0x25, 0x02, 0x03, 0x27, +0x26, 0x04, 0x03, 0x23, 0x53, 0x2d, 0x60, 0x60, +0x22, 0x3b, 0x4d, 0x2c, 0x24, 0x3e, 0x2c, 0x19, +0x11, 0x24, 0x3a, 0x29, 0x24, 0x4d, 0x2c, 0x2a, +0x48, 0x0c, 0x1f, 0x1b, 0x2e, 0x01, 0xe0, 0x3e, +0x1d, 0x2d, 0x85, 0x70, 0x3d, 0x60, 0x43, 0x23, +0x27, 0x20, 0x3a, 0x51, 0x31, 0x2c, 0x4c, 0x37, +0x1f, 0x29, 0x26, 0xfe, 0xe3, 0x22, 0x1c, 0x00, +0x00, 0x02, 0x00, 0x5c, 0xff, 0xf4, 0x01, 0xec, +0x02, 0xdb, 0x00, 0x1d, 0x00, 0x2e, 0x00, 0x88, +0x00, 0xb8, 0x00, 0x03, 0x2f, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x16, 0x2f, 0x1b, 0xb9, +0x00, 0x16, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0a, 0x2f, 0x1b, +0xb9, 0x00, 0x0a, 0x00, 0x13, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, +0xba, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x11, +0x12, 0x39, 0xb8, 0x00, 0x06, 0xd0, 0xb8, 0x00, +0x06, 0x2f, 0xb8, 0x00, 0x0a, 0x10, 0xb9, 0x00, +0x0f, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x13, 0x00, +0x16, 0x00, 0x00, 0x11, 0x12, 0x39, 0xb8, 0x00, +0x00, 0x10, 0xb9, 0x00, 0x1e, 0x00, 0x01, 0xf4, +0xb8, 0x00, 0x16, 0x10, 0xb9, 0x00, 0x28, 0x00, +0x01, 0xf4, 0xb8, 0x00, 0x13, 0x10, 0xb9, 0x00, +0x2b, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x03, 0x10, +0xb9, 0x00, 0x2c, 0x00, 0x01, 0xf4, 0x30, 0x31, +0x05, 0x22, 0x26, 0x27, 0x23, 0x07, 0x23, 0x11, +0x34, 0x36, 0x33, 0x32, 0x17, 0x07, 0x26, 0x23, +0x22, 0x06, 0x0f, 0x01, 0x3e, 0x01, 0x33, 0x32, +0x16, 0x15, 0x14, 0x0e, 0x02, 0x27, 0x32, 0x3e, +0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, +0x07, 0x11, 0x1e, 0x01, 0x01, 0x18, 0x23, 0x4b, +0x22, 0x02, 0x05, 0x25, 0x4d, 0x47, 0x25, 0x23, +0x0e, 0x1c, 0x1d, 0x37, 0x31, 0x01, 0x02, 0x25, +0x54, 0x2d, 0x60, 0x60, 0x22, 0x3b, 0x4d, 0x2c, +0x24, 0x3e, 0x2c, 0x19, 0x11, 0x24, 0x3a, 0x29, +0x24, 0x4e, 0x2b, 0x28, 0x4a, 0x0c, 0x1f, 0x1a, +0x2d, 0x02, 0x2e, 0x52, 0x5b, 0x10, 0x24, 0x0e, +0x4c, 0x3e, 0x8c, 0x1f, 0x2c, 0x85, 0x6f, 0x3d, +0x60, 0x42, 0x23, 0x27, 0x20, 0x3a, 0x51, 0x30, +0x2c, 0x4b, 0x37, 0x1f, 0x29, 0x26, 0xfe, 0xe5, +0x22, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1a, +0xff, 0xf4, 0x01, 0x8d, 0x01, 0xec, 0x00, 0x21, +0x00, 0x35, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x18, 0x2f, 0x1b, 0xb9, 0x00, 0x18, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x07, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x18, 0x10, 0xb9, +0x00, 0x11, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, +0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, +0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, +0x06, 0x07, 0x27, 0x3e, 0x01, 0x33, 0x32, 0x1e, +0x02, 0x15, 0x14, 0x0e, 0x02, 0xb3, 0x2e, 0x4c, +0x1f, 0x16, 0x19, 0x42, 0x26, 0x27, 0x3f, 0x2e, +0x19, 0x19, 0x2d, 0x3c, 0x22, 0x2a, 0x38, 0x19, +0x1a, 0x1b, 0x46, 0x38, 0x29, 0x4b, 0x39, 0x22, +0x22, 0x3b, 0x4f, 0x0c, 0x24, 0x1b, 0x1f, 0x17, +0x20, 0x1f, 0x38, 0x4e, 0x2f, 0x30, 0x4f, 0x38, +0x1f, 0x1c, 0x17, 0x1f, 0x18, 0x23, 0x21, 0x41, +0x5e, 0x3d, 0x3c, 0x5d, 0x40, 0x22, 0x00, 0x00, +0x00, 0x02, 0x00, 0x34, 0xff, 0xbd, 0x01, 0xa3, +0x01, 0xec, 0x00, 0x0a, 0x00, 0x32, 0x00, 0x67, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x2f, 0x2f, 0x1b, 0xb9, 0x00, 0x2f, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x1f, 0x2f, 0x1b, 0xb9, 0x00, 0x1f, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x00, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x06, 0xdc, 0xb9, 0x00, 0x19, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x09, 0x00, 0x19, +0x00, 0x1f, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x2f, +0x10, 0xb9, 0x00, 0x0e, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x16, 0x00, 0x19, 0x00, 0x1f, 0x11, 0x12, +0x39, 0xba, 0x00, 0x21, 0x00, 0x1f, 0x00, 0x19, +0x11, 0x12, 0x39, 0xba, 0x00, 0x27, 0x00, 0x1f, +0x00, 0x19, 0x11, 0x12, 0x39, 0x30, 0x31, 0x25, +0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, +0x07, 0x16, 0x13, 0x2e, 0x01, 0x23, 0x22, 0x0e, +0x02, 0x15, 0x14, 0x16, 0x17, 0x3e, 0x01, 0x33, +0x32, 0x16, 0x15, 0x14, 0x06, 0x23, 0x22, 0x27, +0x06, 0x07, 0x27, 0x3e, 0x01, 0x37, 0x2e, 0x01, +0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, +0x01, 0x16, 0x2b, 0x39, 0x1d, 0x20, 0x21, 0x47, +0x20, 0x2c, 0xa1, 0x17, 0x38, 0x23, 0x25, 0x40, +0x2f, 0x1b, 0x1e, 0x1a, 0x24, 0x55, 0x2d, 0x30, +0x34, 0x4b, 0x42, 0x42, 0x37, 0x1a, 0x10, 0x26, +0x0b, 0x19, 0x0e, 0x23, 0x28, 0x24, 0x3c, 0x4f, +0x2c, 0x32, 0x42, 0x19, 0x1a, 0x22, 0x1b, 0x13, +0x21, 0x2d, 0x26, 0x1e, 0x01, 0x79, 0x16, 0x1d, +0x1f, 0x39, 0x4f, 0x30, 0x31, 0x50, 0x1d, 0x2d, +0x31, 0x31, 0x25, 0x2a, 0x3b, 0x23, 0x29, 0x31, +0x0f, 0x1b, 0x32, 0x15, 0x20, 0x62, 0x3f, 0x3c, +0x5f, 0x40, 0x22, 0x24, 0x17, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x34, 0xff, 0x4b, 0x02, 0x2d, +0x02, 0xdb, 0x00, 0x1f, 0x00, 0x30, 0x00, 0x7c, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x14, 0x2f, 0x1b, 0xb9, 0x00, 0x14, 0x00, +0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x07, 0x2f, 0x1b, 0xb9, 0x00, 0x07, +0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x19, 0x00, +0x01, 0x00, 0x00, 0x00, 0x04, 0x2b, 0xba, 0x00, +0x04, 0x00, 0x07, 0x00, 0x0f, 0x11, 0x12, 0x39, +0xba, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x07, 0x11, +0x12, 0x39, 0xb8, 0x00, 0x07, 0x10, 0xb9, 0x00, +0x20, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x04, 0x10, +0xb9, 0x00, 0x23, 0x00, 0x01, 0xf4, 0xb8, 0x00, +0x12, 0x10, 0xb9, 0x00, 0x24, 0x00, 0x01, 0xf4, +0xb8, 0x00, 0x0f, 0x10, 0xb9, 0x00, 0x27, 0x00, +0x01, 0xf4, 0x30, 0x31, 0x05, 0x22, 0x26, 0x35, +0x37, 0x0e, 0x01, 0x23, 0x22, 0x26, 0x35, 0x34, +0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x27, 0x35, +0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, +0x17, 0x0e, 0x01, 0x25, 0x32, 0x36, 0x37, 0x11, +0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, +0x1e, 0x02, 0x01, 0xf9, 0x32, 0x2f, 0x02, 0x20, +0x4f, 0x30, 0x5b, 0x6c, 0x22, 0x3b, 0x4d, 0x2b, +0x2c, 0x41, 0x24, 0x02, 0x2c, 0x16, 0x20, 0x0c, +0x15, 0x08, 0x0a, 0x08, 0x1e, 0xfe, 0xfa, 0x28, +0x49, 0x26, 0x26, 0x43, 0x23, 0x24, 0x3e, 0x2d, +0x1a, 0x15, 0x28, 0x3b, 0xb5, 0x3e, 0x43, 0x73, +0x1f, 0x2c, 0x81, 0x7a, 0x3a, 0x5e, 0x42, 0x23, +0x1f, 0x1c, 0x58, 0xd2, 0xfc, 0xf9, 0x2d, 0x35, +0x06, 0x03, 0x24, 0x05, 0x07, 0xd0, 0x29, 0x26, +0x01, 0x1d, 0x22, 0x1c, 0x21, 0x39, 0x4f, 0x2d, +0x30, 0x4e, 0x37, 0x1f, 0x00, 0x02, 0x00, 0x34, +0xff, 0xf4, 0x02, 0x32, 0x02, 0xdd, 0x00, 0x1e, +0x00, 0x2f, 0x00, 0x88, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0f, 0x2f, 0x1b, 0xb9, +0x00, 0x0f, 0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, 0x1b, +0xb9, 0x00, 0x08, 0x00, 0x09, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, +0xba, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x00, 0x11, +0x12, 0x39, 0xb8, 0x00, 0x0f, 0x10, 0xb9, 0x00, +0x15, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, 0x10, +0xb8, 0x00, 0x19, 0xd0, 0xb8, 0x00, 0x19, 0x2f, +0xba, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x08, 0x11, +0x12, 0x39, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, +0x1f, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x1b, 0x10, +0xb9, 0x00, 0x22, 0x00, 0x01, 0xf4, 0xb8, 0x00, +0x0b, 0x10, 0xb9, 0x00, 0x23, 0x00, 0x01, 0xf4, +0xb8, 0x00, 0x08, 0x10, 0xb9, 0x00, 0x26, 0x00, +0x01, 0xf4, 0x30, 0x31, 0x17, 0x22, 0x26, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x27, +0x34, 0x36, 0x33, 0x32, 0x17, 0x07, 0x2e, 0x01, +0x23, 0x22, 0x06, 0x15, 0x11, 0x23, 0x27, 0x23, +0x0e, 0x01, 0x27, 0x32, 0x36, 0x37, 0x11, 0x2e, +0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, +0x02, 0xfb, 0x5b, 0x6c, 0x22, 0x3b, 0x4d, 0x2b, +0x2c, 0x41, 0x24, 0x02, 0x37, 0x32, 0x1b, 0x16, +0x0a, 0x08, 0x13, 0x0b, 0x23, 0x1b, 0x26, 0x04, +0x03, 0x1d, 0x4f, 0x2a, 0x28, 0x49, 0x26, 0x26, +0x43, 0x23, 0x24, 0x3e, 0x2d, 0x1a, 0x15, 0x28, +0x3b, 0x0c, 0x81, 0x7a, 0x3a, 0x5e, 0x42, 0x23, +0x1f, 0x1c, 0xa3, 0x46, 0x43, 0x0a, 0x24, 0x03, +0x05, 0x3a, 0x2e, 0xfd, 0xb1, 0x3e, 0x1d, 0x2d, +0x27, 0x29, 0x26, 0x01, 0x1d, 0x22, 0x1c, 0x21, +0x39, 0x4f, 0x2d, 0x30, 0x4e, 0x37, 0x1f, 0x00, +0x00, 0x02, 0x00, 0x26, 0xff, 0xf4, 0x01, 0xaf, +0x01, 0xec, 0x00, 0x1e, 0x00, 0x27, 0x00, 0x4d, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x15, 0x2f, 0x1b, 0xb9, 0x00, 0x15, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x07, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x0c, 0x00, 0x15, 0x00, 0x00, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x0c, 0x2f, 0xb8, +0x00, 0x15, 0x10, 0xb9, 0x00, 0x22, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0c, 0x10, 0xb9, 0x00, 0x27, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, 0x22, 0x26, +0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x3e, 0x02, +0x37, 0x21, 0x26, 0x34, 0x35, 0x34, 0x3e, 0x02, +0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, +0x13, 0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, +0xd5, 0x35, 0x4a, 0x1c, 0x12, 0x1b, 0x43, 0x27, +0x2a, 0x41, 0x2d, 0x18, 0x01, 0xfe, 0xa6, 0x02, +0x1d, 0x33, 0x47, 0x2b, 0x2b, 0x49, 0x35, 0x1e, +0x21, 0x3a, 0x50, 0x7e, 0x08, 0x51, 0x42, 0x20, +0x38, 0x29, 0x17, 0x0c, 0x1e, 0x11, 0x22, 0x14, +0x17, 0x1f, 0x37, 0x4d, 0x2d, 0x09, 0x12, 0x09, +0x35, 0x52, 0x39, 0x1e, 0x23, 0x41, 0x5e, 0x3b, +0x3b, 0x5d, 0x41, 0x22, 0x01, 0x1a, 0x57, 0x61, +0x17, 0x2e, 0x45, 0x2e, 0x00, 0x02, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc4, 0x01, 0xec, 0x00, 0x14, +0x00, 0x25, 0x00, 0x79, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, 0x1b, 0xb9, +0x00, 0x08, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, +0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x0b, 0x00, 0x08, 0x00, 0x00, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x08, 0x10, 0xb8, 0x00, 0x0e, +0xd0, 0xb8, 0x00, 0x0e, 0x2f, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x0f, 0xd0, 0xb8, 0x00, 0x0f, +0x2f, 0xba, 0x00, 0x11, 0x00, 0x00, 0x00, 0x08, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x15, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x11, +0x10, 0xb9, 0x00, 0x18, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x0b, 0x10, 0xb9, 0x00, 0x19, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x08, 0x10, 0xb9, 0x00, 0x1c, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, 0x22, 0x26, +0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, +0x33, 0x37, 0x33, 0x11, 0x23, 0x27, 0x23, 0x0e, +0x01, 0x27, 0x32, 0x36, 0x37, 0x11, 0x2e, 0x01, +0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, +0xfb, 0x5b, 0x6c, 0x23, 0x3a, 0x4e, 0x2b, 0x2b, +0x41, 0x22, 0x02, 0x03, 0x27, 0x26, 0x04, 0x03, +0x1d, 0x4f, 0x2a, 0x28, 0x49, 0x26, 0x26, 0x43, +0x23, 0x24, 0x3e, 0x2d, 0x1a, 0x15, 0x28, 0x3b, +0x0c, 0x81, 0x7a, 0x3a, 0x5e, 0x42, 0x23, 0x1e, +0x1c, 0x2e, 0xfe, 0x20, 0x3e, 0x1d, 0x2d, 0x27, +0x29, 0x26, 0x01, 0x1d, 0x22, 0x1c, 0x21, 0x39, +0x4f, 0x2d, 0x30, 0x4e, 0x37, 0x1f, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5c, 0x00, 0x00, 0x01, 0xc6, +0x01, 0xe0, 0x02, 0x06, 0x03, 0xe6, 0x00, 0x00, +0x00, 0x02, 0x00, 0x26, 0xff, 0xf4, 0x01, 0xaf, +0x01, 0xec, 0x00, 0x1e, 0x00, 0x25, 0x00, 0x51, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x15, 0x2f, 0x1b, 0xb9, 0x00, 0x15, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x09, 0x00, 0x15, +0x00, 0x00, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x09, +0x2f, 0xb8, 0x00, 0x15, 0x10, 0xb9, 0x00, 0x0e, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x1f, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x09, +0x10, 0xb9, 0x00, 0x23, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x17, 0x22, 0x2e, 0x02, 0x35, 0x3c, 0x01, +0x37, 0x21, 0x2e, 0x03, 0x23, 0x22, 0x06, 0x07, +0x27, 0x3e, 0x01, 0x33, 0x32, 0x1e, 0x02, 0x15, +0x14, 0x0e, 0x02, 0x27, 0x32, 0x36, 0x37, 0x21, +0x14, 0x16, 0xe7, 0x2a, 0x47, 0x33, 0x1d, 0x02, +0x01, 0x5a, 0x01, 0x16, 0x2a, 0x3c, 0x27, 0x2a, +0x41, 0x1d, 0x12, 0x1e, 0x4b, 0x36, 0x2c, 0x4b, +0x36, 0x1f, 0x1e, 0x36, 0x49, 0x2c, 0x44, 0x51, +0x07, 0xfe, 0xcd, 0x55, 0x0c, 0x1e, 0x3a, 0x57, +0x38, 0x09, 0x14, 0x09, 0x2a, 0x48, 0x35, 0x1e, +0x1a, 0x14, 0x22, 0x14, 0x1e, 0x21, 0x41, 0x5d, +0x3c, 0x3b, 0x5e, 0x41, 0x23, 0x26, 0x68, 0x5b, +0x65, 0x5e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x26, +0xff, 0xf4, 0x02, 0x79, 0x01, 0xec, 0x00, 0x0a, +0x00, 0x37, 0x00, 0x59, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x2a, 0x2f, 0x1b, 0xb9, +0x00, 0x2a, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x1a, 0x2f, 0x1b, +0xb9, 0x00, 0x1a, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x20, 0x00, 0x0a, 0x00, 0x03, 0x2b, 0xba, +0x00, 0x34, 0x00, 0x0e, 0x00, 0x03, 0x2b, 0xb8, +0x00, 0x1a, 0x10, 0xb9, 0x00, 0x03, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0a, 0x10, 0xb8, 0x00, 0x12, +0xdc, 0xb8, 0x00, 0x2a, 0x10, 0xb9, 0x00, 0x23, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x20, 0x10, 0xb8, +0x00, 0x2d, 0xdc, 0x30, 0x31, 0x37, 0x1e, 0x01, +0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x27, 0x17, +0x0e, 0x01, 0x23, 0x22, 0x26, 0x27, 0x07, 0x1e, +0x01, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, +0x02, 0x27, 0x25, 0x2e, 0x01, 0x23, 0x22, 0x06, +0x07, 0x27, 0x3e, 0x01, 0x33, 0x32, 0x16, 0x17, +0x37, 0x17, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x37, +0x52, 0x0b, 0x56, 0x3f, 0x22, 0x37, 0x25, 0x14, +0x03, 0xf8, 0x0b, 0x1d, 0x14, 0x1a, 0x30, 0x08, +0x3f, 0x02, 0x03, 0x1b, 0x31, 0x47, 0x2c, 0x2d, +0x48, 0x34, 0x1f, 0x04, 0x01, 0x54, 0x11, 0x55, +0x36, 0x2c, 0x3d, 0x1d, 0x12, 0x1d, 0x48, 0x36, +0x45, 0x68, 0x16, 0x4a, 0x1e, 0x03, 0x0a, 0x0d, +0x11, 0x0a, 0x0b, 0x14, 0x07, 0xa6, 0x42, 0x4a, +0x22, 0x3a, 0x4c, 0x2b, 0x19, 0x17, 0x1c, 0x08, +0x10, 0x2a, 0x34, 0x19, 0x0e, 0x20, 0x11, 0x33, +0x5c, 0x44, 0x28, 0x1f, 0x36, 0x48, 0x29, 0x87, +0x43, 0x42, 0x1a, 0x14, 0x22, 0x14, 0x1e, 0x4f, +0x4b, 0x1d, 0x0c, 0x1d, 0x22, 0x12, 0x06, 0x0a, +0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x35, +0xff, 0xf4, 0x01, 0x95, 0x01, 0xec, 0x00, 0x31, +0x00, 0x4d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, 0x00, 0x13, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x23, +0x00, 0x01, 0x00, 0x24, 0x00, 0x04, 0x2b, 0xba, +0x00, 0x0b, 0x00, 0x24, 0x00, 0x23, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x13, 0x10, 0xb9, 0x00, 0x1a, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x2b, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, +0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, +0x35, 0x2e, 0x01, 0x35, 0x34, 0x3e, 0x02, 0x33, +0x32, 0x16, 0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, +0x0e, 0x02, 0x15, 0x14, 0x16, 0x3b, 0x01, 0x15, +0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, +0x36, 0x37, 0x17, 0x0e, 0x01, 0xee, 0x29, 0x43, +0x32, 0x1b, 0x13, 0x1f, 0x27, 0x14, 0x26, 0x2c, +0x1a, 0x2d, 0x3a, 0x21, 0x2c, 0x44, 0x1d, 0x15, +0x1d, 0x39, 0x23, 0x17, 0x2a, 0x20, 0x12, 0x42, +0x48, 0x2f, 0x3d, 0x48, 0x4f, 0x50, 0x41, 0x27, +0x41, 0x23, 0x16, 0x28, 0x4c, 0x0c, 0x14, 0x26, +0x34, 0x20, 0x1b, 0x29, 0x1e, 0x14, 0x05, 0x04, +0x0f, 0x3b, 0x25, 0x1f, 0x2e, 0x1f, 0x10, 0x1b, +0x17, 0x20, 0x14, 0x18, 0x0b, 0x16, 0x22, 0x17, +0x28, 0x36, 0x24, 0x36, 0x30, 0x31, 0x39, 0x18, +0x1c, 0x20, 0x1f, 0x1b, 0x00, 0x01, 0x00, 0x27, +0xff, 0xf4, 0x01, 0x87, 0x01, 0xec, 0x00, 0x2f, +0x00, 0x4d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x1d, 0x2f, 0x1b, 0xb9, 0x00, 0x1d, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x10, +0x00, 0x01, 0x00, 0x0d, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x00, 0x10, 0xb9, 0x00, 0x07, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x1d, 0x10, 0xb9, 0x00, 0x16, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x26, 0x00, 0x0d, +0x00, 0x10, 0x11, 0x12, 0x39, 0x30, 0x31, 0x17, +0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, +0x36, 0x35, 0x34, 0x26, 0x2b, 0x01, 0x35, 0x33, +0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, +0x07, 0x27, 0x3e, 0x01, 0x33, 0x32, 0x1e, 0x02, +0x15, 0x14, 0x06, 0x07, 0x15, 0x1e, 0x03, 0x15, +0x14, 0x0e, 0x02, 0xcf, 0x33, 0x4c, 0x29, 0x16, +0x24, 0x40, 0x28, 0x41, 0x50, 0x50, 0x48, 0x3d, +0x2f, 0x48, 0x42, 0x3e, 0x2f, 0x23, 0x3f, 0x1d, +0x14, 0x1d, 0x49, 0x2d, 0x20, 0x39, 0x2a, 0x18, +0x2c, 0x26, 0x14, 0x27, 0x1f, 0x13, 0x1b, 0x31, +0x44, 0x0c, 0x1b, 0x1f, 0x20, 0x1c, 0x18, 0x39, +0x31, 0x30, 0x36, 0x24, 0x36, 0x28, 0x2e, 0x2c, +0x18, 0x14, 0x20, 0x17, 0x1b, 0x10, 0x1f, 0x2e, +0x1f, 0x25, 0x3b, 0x0f, 0x04, 0x05, 0x14, 0x1e, +0x29, 0x1b, 0x20, 0x34, 0x26, 0x14, 0x00, 0x00, +0x00, 0x02, 0x00, 0x35, 0xff, 0xf4, 0x01, 0xe3, +0x01, 0xec, 0x00, 0x1c, 0x00, 0x31, 0x00, 0x4d, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x13, 0x2f, 0x1b, 0xb9, 0x00, 0x13, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x2a, 0x00, 0x01, +0x00, 0x2b, 0x00, 0x04, 0x2b, 0xba, 0x00, 0x0b, +0x00, 0x2b, 0x00, 0x2a, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x00, 0x10, 0xb9, 0x00, 0x1d, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x13, 0x10, 0xb9, 0x00, 0x23, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, 0x22, 0x2e, +0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x35, 0x2e, +0x01, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, +0x02, 0x15, 0x14, 0x0e, 0x02, 0x27, 0x32, 0x36, +0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, +0x16, 0x3b, 0x01, 0x15, 0x23, 0x22, 0x06, 0x15, +0x14, 0x16, 0xfc, 0x2d, 0x49, 0x34, 0x1d, 0x13, +0x1f, 0x27, 0x14, 0x26, 0x2c, 0x1a, 0x2d, 0x3d, +0x23, 0x32, 0x56, 0x40, 0x24, 0x24, 0x3e, 0x54, +0x2f, 0x54, 0x62, 0x67, 0x55, 0x35, 0x45, 0x41, +0x48, 0x19, 0x27, 0x48, 0x4e, 0x53, 0x0c, 0x14, +0x26, 0x34, 0x20, 0x1b, 0x29, 0x1e, 0x14, 0x05, +0x04, 0x0f, 0x3b, 0x25, 0x1f, 0x2e, 0x1f, 0x10, +0x20, 0x40, 0x5e, 0x3f, 0x3e, 0x5e, 0x3f, 0x20, +0x26, 0x70, 0x65, 0x65, 0x72, 0x2c, 0x2e, 0x28, +0x36, 0x24, 0x36, 0x30, 0x31, 0x39, 0x00, 0x00, +0x00, 0x01, 0xff, 0xe5, 0xff, 0x1b, 0x00, 0xe8, +0x01, 0xe0, 0x00, 0x17, 0x00, 0x4d, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x14, 0x2f, +0x1b, 0xb9, 0x00, 0x14, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x05, +0x2f, 0x1b, 0xb9, 0x00, 0x05, 0x00, 0x07, 0x3e, +0x59, 0xbb, 0x00, 0x17, 0x00, 0x01, 0x00, 0x00, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x05, 0x10, 0xb9, +0x00, 0x0c, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x10, 0xd0, 0xb8, 0x00, 0x17, +0x10, 0xb8, 0x00, 0x12, 0xd0, 0xb8, 0x00, 0x12, +0x2f, 0x30, 0x31, 0x37, 0x23, 0x11, 0x14, 0x06, +0x23, 0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, +0x32, 0x36, 0x35, 0x11, 0x23, 0x35, 0x37, 0x35, +0x33, 0x15, 0x33, 0xe8, 0x59, 0x34, 0x38, 0x11, +0x22, 0x0b, 0x0b, 0x09, 0x1b, 0x0e, 0x28, 0x18, +0x5d, 0x5d, 0x2d, 0x59, 0xec, 0xfe, 0xbb, 0x47, +0x45, 0x07, 0x05, 0x24, 0x03, 0x07, 0x3b, 0x2e, +0x01, 0x42, 0x1d, 0x04, 0xd3, 0xd3, 0x00, 0x00, +0x00, 0x02, 0x00, 0x35, 0xff, 0x1b, 0x02, 0x33, +0x02, 0x67, 0x00, 0x29, 0x00, 0x38, 0x00, 0x75, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x16, 0x2f, 0x1b, 0xb9, 0x00, 0x16, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x07, 0x3e, 0x59, 0xbb, 0x00, 0x23, 0x00, 0x01, +0x00, 0x1d, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x2a, +0x00, 0x01, 0x00, 0x0e, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x00, 0x10, 0xb9, 0x00, 0x07, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x0b, 0x00, 0x0e, 0x00, 0x16, +0x11, 0x12, 0x39, 0xba, 0x00, 0x19, 0x00, 0x16, +0x00, 0x0e, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x0b, +0x10, 0xb9, 0x00, 0x2d, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x19, 0x10, 0xb9, 0x00, 0x2e, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x16, 0x10, 0xb9, 0x00, 0x31, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x05, 0x22, 0x26, +0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, +0x37, 0x0e, 0x01, 0x23, 0x22, 0x26, 0x35, 0x34, +0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x27, 0x34, +0x36, 0x33, 0x32, 0x17, 0x07, 0x2e, 0x01, 0x23, +0x22, 0x06, 0x15, 0x11, 0x14, 0x06, 0x03, 0x32, +0x36, 0x37, 0x11, 0x2e, 0x01, 0x23, 0x22, 0x0e, +0x02, 0x15, 0x14, 0x16, 0x01, 0x02, 0x30, 0x55, +0x23, 0x14, 0x24, 0x4a, 0x26, 0x4b, 0x4b, 0x01, +0x1d, 0x51, 0x30, 0x5b, 0x6b, 0x22, 0x3b, 0x4d, +0x2b, 0x2b, 0x41, 0x24, 0x01, 0x37, 0x32, 0x1a, +0x17, 0x0a, 0x08, 0x13, 0x0b, 0x23, 0x1c, 0x64, +0x5e, 0x28, 0x48, 0x26, 0x26, 0x43, 0x23, 0x24, +0x3d, 0x2e, 0x1a, 0x52, 0xe5, 0x1c, 0x18, 0x23, +0x1a, 0x18, 0x54, 0x49, 0x6d, 0x1d, 0x2d, 0x7f, +0x77, 0x39, 0x5b, 0x40, 0x22, 0x1f, 0x1c, 0x2e, +0x45, 0x43, 0x0a, 0x24, 0x03, 0x05, 0x3b, 0x2d, +0xfd, 0xfd, 0x56, 0x65, 0x01, 0x0c, 0x29, 0x26, +0x01, 0x11, 0x22, 0x1c, 0x20, 0x37, 0x4c, 0x2c, +0x5d, 0x72, 0x00, 0x00, 0x00, 0x02, 0x00, 0x35, +0xff, 0x1b, 0x01, 0xc4, 0x01, 0xec, 0x00, 0x1f, +0x00, 0x2e, 0x00, 0x77, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x16, 0x2f, 0x1b, 0xb9, +0x00, 0x16, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, +0xb9, 0x00, 0x00, 0x00, 0x07, 0x3e, 0x59, 0xbb, +0x00, 0x20, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x07, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x0b, 0x00, 0x16, +0x00, 0x0e, 0x11, 0x12, 0x39, 0xba, 0x00, 0x19, +0x00, 0x16, 0x00, 0x0e, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x16, 0x10, 0xb8, 0x00, 0x1c, 0xd0, 0xb8, +0x00, 0x1c, 0x2f, 0xb8, 0x00, 0x0b, 0x10, 0xb9, +0x00, 0x23, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x19, +0x10, 0xb9, 0x00, 0x24, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x16, 0x10, 0xb9, 0x00, 0x27, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x05, 0x22, 0x26, 0x27, 0x37, +0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, 0x37, 0x0e, +0x01, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, +0x33, 0x32, 0x16, 0x17, 0x33, 0x37, 0x33, 0x11, +0x14, 0x06, 0x03, 0x32, 0x36, 0x37, 0x11, 0x2e, +0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, +0x01, 0x02, 0x30, 0x55, 0x23, 0x14, 0x24, 0x4a, +0x26, 0x4b, 0x4b, 0x01, 0x1d, 0x51, 0x30, 0x5b, +0x6b, 0x22, 0x3b, 0x4d, 0x2b, 0x2b, 0x41, 0x20, +0x03, 0x04, 0x27, 0x64, 0x5e, 0x28, 0x48, 0x26, +0x26, 0x43, 0x23, 0x24, 0x3d, 0x2e, 0x1a, 0x52, +0xe5, 0x1c, 0x18, 0x23, 0x1a, 0x18, 0x54, 0x49, +0x6d, 0x1d, 0x2d, 0x7f, 0x77, 0x39, 0x5b, 0x40, +0x22, 0x1e, 0x1a, 0x2c, 0xfd, 0xf6, 0x56, 0x65, +0x01, 0x0c, 0x29, 0x26, 0x01, 0x11, 0x22, 0x1c, +0x20, 0x37, 0x4c, 0x2c, 0x5d, 0x72, 0x00, 0x00, +0x00, 0x01, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xb0, +0x01, 0xec, 0x00, 0x23, 0x00, 0x4f, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0a, 0x2f, +0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x0a, 0x10, 0xb9, 0x00, 0x11, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x19, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x1e, +0x00, 0x0a, 0x00, 0x00, 0x11, 0x12, 0x39, 0x7d, +0xb8, 0x00, 0x1e, 0x2f, 0x18, 0xb9, 0x00, 0x20, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x05, 0x22, 0x2e, +0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, +0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, +0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x35, +0x23, 0x35, 0x33, 0x15, 0x0e, 0x01, 0x01, 0x14, +0x31, 0x52, 0x3c, 0x21, 0x22, 0x3d, 0x54, 0x32, +0x36, 0x45, 0x17, 0x1a, 0x14, 0x38, 0x2a, 0x29, +0x44, 0x32, 0x1c, 0x64, 0x54, 0x22, 0x3a, 0x12, +0x7a, 0xa4, 0x19, 0x4f, 0x0c, 0x22, 0x42, 0x5f, +0x3c, 0x39, 0x5d, 0x40, 0x23, 0x26, 0x16, 0x1e, +0x14, 0x20, 0x1d, 0x37, 0x4e, 0x31, 0x66, 0x73, +0x17, 0x11, 0x8b, 0x25, 0xc3, 0x18, 0x23, 0x00, +0x00, 0x02, 0x00, 0x0c, 0xff, 0x19, 0x01, 0xa6, +0x01, 0xe0, 0x00, 0x0c, 0x00, 0x25, 0x00, 0x5b, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x1a, 0x2f, 0x1b, 0xb9, 0x00, 0x1a, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x13, 0x2f, 0x1b, 0xb9, 0x00, 0x13, 0x00, +0x07, 0x3e, 0x59, 0xba, 0x00, 0x00, 0x00, 0x13, +0x00, 0x1a, 0x11, 0x12, 0x39, 0xb9, 0x00, 0x06, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x0d, 0x00, 0x00, +0x00, 0x20, 0x11, 0x12, 0x39, 0xba, 0x00, 0x1f, +0x00, 0x1a, 0x00, 0x13, 0x11, 0x12, 0x39, 0xba, +0x00, 0x19, 0x00, 0x1f, 0x00, 0x00, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x1a, 0x10, 0xb8, 0x00, 0x24, +0xd0, 0x30, 0x31, 0x37, 0x0e, 0x01, 0x15, 0x14, +0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, +0x37, 0x1e, 0x01, 0x15, 0x14, 0x06, 0x23, 0x22, +0x26, 0x35, 0x34, 0x36, 0x37, 0x03, 0x33, 0x13, +0x1e, 0x01, 0x17, 0x33, 0x3e, 0x01, 0x37, 0x13, +0x33, 0xd8, 0x11, 0x17, 0x13, 0x17, 0x17, 0x14, +0x17, 0x12, 0x1c, 0x19, 0x1f, 0x2b, 0x2b, 0x2b, +0x2a, 0x1f, 0x19, 0xb1, 0x30, 0x6c, 0x0b, 0x1a, +0x0b, 0x04, 0x0c, 0x19, 0x0c, 0x6c, 0x2d, 0x03, +0x23, 0x4c, 0x1c, 0x19, 0x22, 0x22, 0x19, 0x1e, +0x4a, 0x23, 0x1f, 0x38, 0x4d, 0x22, 0x2c, 0x36, +0x36, 0x2c, 0x22, 0x4d, 0x38, 0x01, 0xbe, 0xfe, +0xdf, 0x22, 0x3b, 0x20, 0x20, 0x3b, 0x22, 0x01, +0x21, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, +0xff, 0xf4, 0x01, 0xcd, 0x01, 0xec, 0x00, 0x26, +0x00, 0x3a, 0x00, 0x71, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x10, 0x2f, 0x1b, 0xb9, +0x00, 0x10, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, +0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x13, 0x00, 0x10, 0x00, 0x00, 0x11, 0x12, +0x39, 0xba, 0x00, 0x31, 0x00, 0x10, 0x00, 0x00, +0x11, 0x12, 0x39, 0xba, 0x00, 0x08, 0x00, 0x13, +0x00, 0x31, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x10, +0x10, 0xb9, 0x00, 0x0b, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x10, 0x10, 0xb8, 0x00, 0x16, 0xd0, 0xb8, +0x00, 0x0b, 0x10, 0xb8, 0x00, 0x1c, 0xd0, 0xba, +0x00, 0x1f, 0x00, 0x31, 0x00, 0x13, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x27, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, 0x22, 0x26, +0x35, 0x34, 0x3e, 0x02, 0x37, 0x2e, 0x01, 0x23, +0x22, 0x07, 0x27, 0x36, 0x33, 0x32, 0x16, 0x17, +0x3e, 0x01, 0x33, 0x32, 0x17, 0x07, 0x2e, 0x01, +0x23, 0x22, 0x06, 0x07, 0x1e, 0x03, 0x15, 0x14, +0x06, 0x27, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, +0x02, 0x27, 0x0e, 0x03, 0x15, 0x14, 0x1e, 0x02, +0xee, 0x51, 0x4e, 0x14, 0x23, 0x2f, 0x1a, 0x20, +0x3f, 0x20, 0x1d, 0x12, 0x11, 0x1d, 0x28, 0x29, +0x4d, 0x23, 0x23, 0x4d, 0x29, 0x29, 0x1d, 0x11, +0x0a, 0x18, 0x0d, 0x21, 0x3f, 0x1f, 0x19, 0x2f, +0x23, 0x15, 0x4e, 0x52, 0x1e, 0x2b, 0x1c, 0x0e, +0x12, 0x20, 0x29, 0x18, 0x17, 0x2a, 0x1f, 0x12, +0x0e, 0x1c, 0x2b, 0x0c, 0x56, 0x49, 0x1e, 0x3c, +0x39, 0x36, 0x19, 0x25, 0x2b, 0x0e, 0x21, 0x14, +0x35, 0x27, 0x27, 0x35, 0x14, 0x21, 0x08, 0x06, +0x2b, 0x25, 0x19, 0x36, 0x39, 0x3c, 0x1e, 0x49, +0x56, 0x27, 0x13, 0x21, 0x2c, 0x19, 0x1b, 0x34, +0x33, 0x31, 0x16, 0x16, 0x31, 0x33, 0x34, 0x1b, +0x19, 0x2c, 0x21, 0x13, 0x00, 0x01, 0x00, 0x55, +0xff, 0x27, 0x01, 0xb7, 0x01, 0xe0, 0x00, 0x16, +0x00, 0x5c, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x08, 0x2f, 0x1b, 0xb9, 0x00, 0x08, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x04, 0x2f, 0x1b, 0xb9, 0x00, +0x04, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x16, 0x2f, 0x1b, 0xb9, +0x00, 0x16, 0x00, 0x07, 0x3e, 0x59, 0xba, 0x00, +0x01, 0x00, 0x08, 0x00, 0x16, 0x11, 0x12, 0x39, +0xb8, 0x00, 0x04, 0x10, 0xb9, 0x00, 0x0d, 0x00, +0x01, 0xf4, 0xb8, 0x00, 0x01, 0x10, 0xb9, 0x00, +0x12, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x08, 0x10, +0xb8, 0x00, 0x13, 0xd0, 0x30, 0x31, 0x05, 0x37, +0x0e, 0x01, 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, +0x11, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, +0x11, 0x33, 0x11, 0x23, 0x01, 0x8b, 0x03, 0x27, +0x4f, 0x32, 0x4b, 0x46, 0x2c, 0x33, 0x3a, 0x15, +0x26, 0x26, 0x26, 0x16, 0x2c, 0x2c, 0x1e, 0x71, +0x2d, 0x32, 0x5a, 0x5e, 0x01, 0x34, 0xfe, 0xd2, +0x4d, 0x49, 0x0b, 0x18, 0x25, 0x1a, 0x01, 0x62, +0xfd, 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xbf, 0x02, 0xdb, 0x00, 0x1d, +0x00, 0x66, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, 0x03, +0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0f, 0x2f, 0x1b, 0xb9, 0x00, +0x0f, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x1d, 0x2f, 0x1b, 0xb9, +0x00, 0x1d, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, +0x03, 0x10, 0xb9, 0x00, 0x08, 0x00, 0x01, 0xf4, +0xba, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x1d, 0x11, +0x12, 0x39, 0xb8, 0x00, 0x1d, 0x10, 0xb8, 0x00, +0x14, 0xd0, 0xb8, 0x00, 0x0f, 0x10, 0xb9, 0x00, +0x18, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0c, 0x10, +0xb9, 0x00, 0x1b, 0x00, 0x01, 0xf4, 0x30, 0x31, +0x13, 0x34, 0x36, 0x33, 0x32, 0x17, 0x07, 0x26, +0x23, 0x22, 0x06, 0x07, 0x15, 0x3e, 0x01, 0x33, +0x32, 0x16, 0x15, 0x11, 0x23, 0x11, 0x34, 0x26, +0x23, 0x22, 0x06, 0x07, 0x11, 0x23, 0x5c, 0x4d, +0x47, 0x25, 0x23, 0x0e, 0x1c, 0x1d, 0x37, 0x31, +0x01, 0x26, 0x4e, 0x32, 0x4b, 0x46, 0x2c, 0x33, +0x3b, 0x2b, 0x46, 0x2c, 0x2c, 0x02, 0x2e, 0x52, +0x5b, 0x10, 0x24, 0x0e, 0x4c, 0x3e, 0x98, 0x26, +0x31, 0x5a, 0x5e, 0xfe, 0xce, 0x01, 0x2c, 0x4d, +0x49, 0x2d, 0x2d, 0xfe, 0x98, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x5c, 0xff, 0x4b, 0x01, 0xbf, +0x02, 0xdb, 0x00, 0x29, 0x00, 0x68, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x17, 0x2f, +0x1b, 0xb9, 0x00, 0x17, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x23, +0x2f, 0x1b, 0xb9, 0x00, 0x23, 0x00, 0x09, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x13, 0x2f, 0x1b, 0xb9, 0x00, 0x13, 0x00, 0x05, +0x3e, 0x59, 0xbb, 0x00, 0x07, 0x00, 0x01, 0x00, +0x00, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x23, 0x10, +0xb9, 0x00, 0x0e, 0x00, 0x01, 0xf4, 0xba, 0x00, +0x20, 0x00, 0x17, 0x00, 0x13, 0x11, 0x12, 0x39, +0xb8, 0x00, 0x20, 0x10, 0xb9, 0x00, 0x11, 0x00, +0x01, 0xf4, 0xb8, 0x00, 0x17, 0x10, 0xb9, 0x00, +0x1c, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x05, 0x22, +0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, +0x35, 0x11, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, +0x11, 0x23, 0x11, 0x34, 0x36, 0x33, 0x32, 0x17, +0x07, 0x26, 0x23, 0x22, 0x06, 0x07, 0x15, 0x3e, +0x01, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x06, +0x01, 0x53, 0x11, 0x21, 0x0b, 0x0a, 0x09, 0x1b, +0x0e, 0x28, 0x19, 0x33, 0x3b, 0x2b, 0x46, 0x2c, +0x2c, 0x4d, 0x47, 0x25, 0x23, 0x0e, 0x1c, 0x1d, +0x37, 0x31, 0x01, 0x26, 0x4e, 0x32, 0x4b, 0x46, +0x33, 0xb5, 0x07, 0x05, 0x24, 0x03, 0x06, 0x3a, +0x2e, 0x01, 0x52, 0x4d, 0x49, 0x2d, 0x2d, 0xfe, +0x98, 0x02, 0x2e, 0x52, 0x5b, 0x10, 0x24, 0x0e, +0x4c, 0x3e, 0x98, 0x26, 0x31, 0x5a, 0x5e, 0xfe, +0xa5, 0x47, 0x45, 0x00, 0x00, 0x01, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xca, 0x01, 0xe0, 0x00, 0x0b, +0x00, 0x3f, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, +0x0b, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x03, +0x00, 0x02, 0x00, 0x08, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x04, 0xd0, 0xb8, +0x00, 0x0b, 0x10, 0xb8, 0x00, 0x07, 0xd0, 0x30, +0x31, 0x13, 0x33, 0x15, 0x21, 0x35, 0x33, 0x11, +0x23, 0x35, 0x21, 0x15, 0x23, 0x5c, 0x2c, 0x01, +0x16, 0x2c, 0x2c, 0xfe, 0xea, 0x2c, 0x01, 0xe0, +0xd0, 0xd0, 0xfe, 0x20, 0xe8, 0xe8, 0x00, 0x00, +0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0xe8, +0x02, 0xa3, 0x00, 0x0b, 0x00, 0x17, 0x00, 0x4b, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x14, 0x2f, 0x1b, 0xb9, 0x00, 0x14, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x10, 0x00, 0x01, +0x00, 0x13, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x14, +0x10, 0xb8, 0x00, 0x00, 0xdc, 0xb8, 0x00, 0x06, +0xdc, 0xb8, 0x00, 0x10, 0x10, 0xb8, 0x00, 0x0c, +0xd0, 0xb8, 0x00, 0x13, 0x10, 0xb8, 0x00, 0x17, +0xd0, 0x30, 0x31, 0x13, 0x22, 0x26, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x13, +0x23, 0x15, 0x23, 0x35, 0x23, 0x35, 0x37, 0x35, +0x33, 0x15, 0x33, 0x79, 0x11, 0x17, 0x17, 0x11, +0x11, 0x17, 0x17, 0x5e, 0x5a, 0x2c, 0x5d, 0x5d, +0x2c, 0x5a, 0x02, 0x54, 0x16, 0x11, 0x13, 0x15, +0x15, 0x13, 0x11, 0x16, 0xfe, 0x98, 0xec, 0xec, +0x1d, 0x04, 0xd3, 0xd3, 0x00, 0x01, 0x00, 0x2b, +0x00, 0x00, 0x01, 0x0b, 0x01, 0xe0, 0x00, 0x0b, +0x00, 0x41, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x04, 0x2f, 0x1b, 0xb9, 0x00, 0x04, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, +0x0b, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x01, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x04, 0x10, 0xb9, +0x00, 0x02, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x06, +0xd0, 0xb8, 0x00, 0x01, 0x10, 0xb8, 0x00, 0x09, +0xd0, 0x30, 0x31, 0x37, 0x33, 0x11, 0x23, 0x35, +0x33, 0x15, 0x23, 0x11, 0x33, 0x15, 0x23, 0x2b, +0x5a, 0x5a, 0xe0, 0x5a, 0x5a, 0xe0, 0x27, 0x01, +0x93, 0x26, 0x26, 0xfe, 0x6d, 0x27, 0x00, 0x00, +0x00, 0x03, 0xff, 0x99, 0xfe, 0xe4, 0x00, 0xf0, +0x02, 0xa3, 0x00, 0x0b, 0x00, 0x16, 0x00, 0x31, +0x00, 0x75, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x2a, 0x2f, 0x1b, 0xb9, 0x00, 0x2a, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x1d, 0x2f, 0x1b, 0xb9, 0x00, +0x1d, 0x00, 0x07, 0x3e, 0x59, 0xb8, 0x00, 0x2a, +0x10, 0xb8, 0x00, 0x00, 0xd0, 0xb8, 0x00, 0x06, +0xd0, 0xb8, 0x00, 0x1d, 0x10, 0xb9, 0x00, 0x0c, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x11, 0xdc, 0xb9, +0x00, 0x25, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x27, +0x00, 0x25, 0x00, 0x1d, 0x11, 0x12, 0x39, 0xba, +0x00, 0x1a, 0x00, 0x1d, 0x00, 0x25, 0x11, 0x12, +0x39, 0xba, 0x00, 0x0f, 0x00, 0x27, 0x00, 0x1a, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x1d, 0x10, 0xb8, +0x00, 0x17, 0xdc, 0xba, 0x00, 0x2e, 0x00, 0x1a, +0x00, 0x27, 0x11, 0x12, 0x39, 0x30, 0x31, 0x13, +0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, +0x15, 0x14, 0x06, 0x03, 0x32, 0x36, 0x37, 0x26, +0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x17, 0x2e, +0x01, 0x27, 0x0e, 0x01, 0x23, 0x22, 0x2e, 0x02, +0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x36, 0x35, +0x11, 0x33, 0x11, 0x14, 0x07, 0x1e, 0x01, 0x17, +0x7d, 0x10, 0x18, 0x18, 0x10, 0x11, 0x18, 0x18, +0x8b, 0x23, 0x28, 0x0b, 0x2c, 0x2d, 0x20, 0x1d, +0x25, 0xe6, 0x17, 0x2a, 0x14, 0x11, 0x3b, 0x2b, +0x18, 0x27, 0x1b, 0x0f, 0x34, 0x33, 0x32, 0x31, +0x03, 0x2d, 0x0a, 0x1a, 0x33, 0x1a, 0x02, 0x54, +0x16, 0x11, 0x13, 0x15, 0x15, 0x13, 0x11, 0x16, +0xfc, 0xed, 0x20, 0x19, 0x26, 0x1a, 0x13, 0x16, +0x1c, 0x5d, 0x24, 0x3c, 0x17, 0x1f, 0x21, 0x0f, +0x19, 0x20, 0x12, 0x23, 0x2c, 0x23, 0x16, 0x15, +0x02, 0x14, 0xfd, 0xf4, 0x2f, 0x24, 0x1a, 0x46, +0x2b, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xfd, +0xff, 0xf4, 0x01, 0x01, 0x02, 0xcf, 0x00, 0x0c, +0x00, 0x2a, 0x00, 0x53, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x26, 0x2f, 0x1b, 0xb9, +0x00, 0x26, 0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x18, 0x2f, 0x1b, +0xb9, 0x00, 0x18, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x28, 0x00, 0x0d, 0x00, 0x03, 0x2b, 0xb8, +0x00, 0x28, 0x10, 0xb8, 0x00, 0x00, 0xd0, 0xb8, +0x00, 0x06, 0xd0, 0xb8, 0x00, 0x18, 0x10, 0xb9, +0x00, 0x11, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0d, +0x10, 0xb8, 0x00, 0x1b, 0xd0, 0xb8, 0x00, 0x06, +0x10, 0xb8, 0x00, 0x22, 0xdc, 0x30, 0x31, 0x13, +0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x15, +0x14, 0x16, 0x33, 0x17, 0x11, 0x14, 0x16, 0x33, +0x3a, 0x01, 0x37, 0x17, 0x0e, 0x01, 0x23, 0x22, +0x35, 0x11, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, +0x33, 0x32, 0x16, 0x17, 0x11, 0x33, 0x11, 0x33, +0x15, 0x7b, 0x05, 0x0c, 0x13, 0x0f, 0x14, 0x11, +0x21, 0x25, 0x3e, 0x0c, 0x09, 0x03, 0x07, 0x08, +0x08, 0x07, 0x0e, 0x0b, 0x3b, 0x0b, 0x3b, 0x38, +0x26, 0x20, 0x14, 0x1b, 0x09, 0x2c, 0x5a, 0x01, +0x6f, 0x09, 0x0d, 0x1a, 0x14, 0x0c, 0x16, 0x0f, +0x11, 0x1a, 0x21, 0xfe, 0xec, 0x10, 0x0f, 0x02, +0x24, 0x02, 0x03, 0x4c, 0x01, 0x0e, 0x2c, 0x22, +0x1d, 0x27, 0x0e, 0x0b, 0x01, 0x08, 0xfe, 0xa0, +0x21, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5c, +0xff, 0x4b, 0x00, 0xf1, 0x02, 0xcf, 0x00, 0x0f, +0x00, 0x1e, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x04, 0x2f, 0x1b, 0xb9, 0x00, 0x04, +0x00, 0x13, 0x3e, 0x59, 0xbb, 0x00, 0x09, 0x00, +0x01, 0x00, 0x00, 0x00, 0x04, 0x2b, 0x30, 0x31, +0x17, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, +0x16, 0x33, 0x32, 0x36, 0x37, 0x17, 0x0e, 0x01, +0xbe, 0x33, 0x2f, 0x2c, 0x17, 0x20, 0x0b, 0x15, +0x08, 0x0a, 0x08, 0x1d, 0xb5, 0x41, 0x45, 0x02, +0xfe, 0xfd, 0x05, 0x2d, 0x35, 0x06, 0x03, 0x24, +0x05, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5c, +0xff, 0x1b, 0x02, 0x0b, 0x02, 0xcf, 0x00, 0x2a, +0x00, 0x6f, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x28, 0x2f, 0x1b, 0xb9, 0x00, 0x28, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x26, 0x2f, 0x1b, 0xb9, 0x00, +0x26, 0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0a, 0x2f, 0x1b, 0xb9, +0x00, 0x0a, 0x00, 0x07, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x25, 0x2f, 0x1b, +0xb9, 0x00, 0x25, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x00, 0x00, 0x0a, 0x00, 0x28, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x0a, 0x10, 0xb9, 0x00, 0x15, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x1d, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x28, +0x10, 0xb9, 0x00, 0x22, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x25, 0x36, 0x1e, 0x02, 0x15, 0x14, 0x0e, +0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x37, 0x1e, +0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, +0x23, 0x22, 0x06, 0x07, 0x27, 0x13, 0x21, 0x11, +0x23, 0x11, 0x33, 0x15, 0x21, 0x15, 0x01, 0x23, +0x35, 0x56, 0x3c, 0x21, 0x21, 0x36, 0x46, 0x25, +0x24, 0x3a, 0x2e, 0x24, 0x0f, 0x1a, 0x0d, 0x20, +0x27, 0x31, 0x1f, 0x1e, 0x36, 0x29, 0x18, 0x4f, +0x4d, 0x16, 0x1b, 0x11, 0x18, 0xd7, 0xfe, 0xca, +0x2c, 0x2c, 0x01, 0x6f, 0xa9, 0x0a, 0x14, 0x32, +0x4d, 0x2f, 0x34, 0x50, 0x36, 0x1c, 0x0d, 0x16, +0x1a, 0x0e, 0x1f, 0x0d, 0x18, 0x13, 0x0b, 0x19, +0x2d, 0x3f, 0x27, 0x48, 0x54, 0x0b, 0x08, 0x1f, +0x01, 0x24, 0xfe, 0x46, 0x02, 0xcf, 0xef, 0x17, +0x00, 0x01, 0x00, 0x5c, 0x00, 0x00, 0x01, 0x75, +0x01, 0xe0, 0x00, 0x05, 0x00, 0x2b, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, +0x2f, 0x1b, 0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x02, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x13, 0x33, 0x11, 0x33, 0x15, 0x21, 0x5c, +0x2c, 0xed, 0xfe, 0xe7, 0x01, 0xe0, 0xfe, 0x47, +0x27, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x55, +0xff, 0xf4, 0x02, 0xd0, 0x01, 0xe0, 0x00, 0x21, +0x00, 0x7f, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, 0x03, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x08, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x1f, 0x00, 0x03, +0x00, 0x00, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x1f, +0x10, 0xb9, 0x00, 0x0b, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x03, 0x10, 0xb8, 0x00, 0x0c, 0xd0, 0xb8, +0x00, 0x08, 0x10, 0xb8, 0x00, 0x11, 0xd0, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x1c, 0xd0, 0xba, +0x00, 0x18, 0x00, 0x0c, 0x00, 0x1c, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x18, 0x10, 0xb9, 0x00, 0x13, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0c, 0x10, 0xb8, +0x00, 0x14, 0xd0, 0xb8, 0x00, 0x1c, 0x10, 0xb8, +0x00, 0x16, 0xd0, 0xb8, 0x00, 0x16, 0x2f, 0x30, +0x31, 0x17, 0x22, 0x35, 0x11, 0x33, 0x11, 0x14, +0x16, 0x33, 0x32, 0x36, 0x37, 0x11, 0x33, 0x11, +0x14, 0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, +0x23, 0x27, 0x23, 0x0e, 0x01, 0x23, 0x22, 0x26, +0x27, 0x0e, 0x01, 0xe5, 0x90, 0x2c, 0x34, 0x38, +0x22, 0x46, 0x28, 0x2c, 0x34, 0x37, 0x40, 0x50, +0x2c, 0x25, 0x05, 0x02, 0x21, 0x4e, 0x29, 0x3a, +0x3d, 0x0d, 0x2a, 0x4f, 0x0c, 0xb8, 0x01, 0x34, +0xfe, 0xd2, 0x4d, 0x49, 0x2d, 0x2d, 0x01, 0x6a, +0xfe, 0xd2, 0x4d, 0x49, 0x5a, 0x01, 0x6a, 0xfe, +0x20, 0x4b, 0x25, 0x32, 0x35, 0x2d, 0x2d, 0x35, +0x00, 0x01, 0x00, 0x55, 0xff, 0x27, 0x02, 0xd0, +0x01, 0xe0, 0x00, 0x21, 0x00, 0x88, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, 0x2f, +0x1b, 0xb9, 0x00, 0x0d, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0a, +0x2f, 0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x21, 0x2f, 0x1b, 0xb9, 0x00, 0x21, 0x00, 0x07, +0x3e, 0x59, 0xb8, 0x00, 0x0d, 0x10, 0xb8, 0x00, +0x16, 0xd0, 0xb8, 0x00, 0x0a, 0x10, 0xb8, 0x00, +0x04, 0xd0, 0xba, 0x00, 0x01, 0x00, 0x16, 0x00, +0x04, 0x11, 0x12, 0x39, 0xba, 0x00, 0x07, 0x00, +0x0d, 0x00, 0x0a, 0x11, 0x12, 0x39, 0xb8, 0x00, +0x0a, 0x10, 0xb9, 0x00, 0x12, 0x00, 0x01, 0xf4, +0xb8, 0x00, 0x07, 0x10, 0xb9, 0x00, 0x15, 0x00, +0x01, 0xf4, 0xb8, 0x00, 0x12, 0x10, 0xb8, 0x00, +0x1b, 0xd0, 0xb8, 0x00, 0x01, 0x10, 0xb9, 0x00, +0x1d, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x16, 0x10, +0xb8, 0x00, 0x1e, 0xd0, 0x30, 0x31, 0x05, 0x37, +0x0e, 0x01, 0x23, 0x22, 0x26, 0x27, 0x0e, 0x01, +0x23, 0x22, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, +0x33, 0x32, 0x36, 0x37, 0x11, 0x33, 0x11, 0x14, +0x16, 0x33, 0x32, 0x37, 0x11, 0x33, 0x11, 0x23, +0x02, 0xa4, 0x03, 0x24, 0x4f, 0x28, 0x3a, 0x3d, +0x0d, 0x2a, 0x4f, 0x2a, 0x90, 0x2c, 0x34, 0x38, +0x22, 0x46, 0x28, 0x2c, 0x34, 0x37, 0x40, 0x50, +0x2c, 0x2c, 0x20, 0x6e, 0x2a, 0x30, 0x35, 0x2d, +0x2d, 0x35, 0xb8, 0x01, 0x34, 0xfe, 0xd2, 0x4d, +0x49, 0x2d, 0x2d, 0x01, 0x6a, 0xfe, 0xd2, 0x4d, +0x49, 0x5a, 0x01, 0x6a, 0xfd, 0x47, 0x00, 0x00, +0x00, 0x01, 0x00, 0x5c, 0xff, 0x4b, 0x02, 0xd8, +0x01, 0xec, 0x00, 0x2e, 0x00, 0x81, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x23, 0x2f, +0x1b, 0xb9, 0x00, 0x23, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1c, +0x2f, 0x1b, 0xb9, 0x00, 0x1c, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x23, 0x10, 0xb9, +0x00, 0x18, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x10, +0xd0, 0xb8, 0x00, 0x23, 0x10, 0xb8, 0x00, 0x29, +0xd0, 0xb8, 0x00, 0x1c, 0x10, 0xb8, 0x00, 0x14, +0xd0, 0xba, 0x00, 0x26, 0x00, 0x29, 0x00, 0x14, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x26, 0x10, 0xb9, +0x00, 0x12, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x1f, +0x00, 0x23, 0x00, 0x1c, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x1f, 0x10, 0xb9, 0x00, 0x1a, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x23, 0x10, 0xb8, 0x00, 0x1d, +0xd0, 0xb8, 0x00, 0x1d, 0x2f, 0x30, 0x31, 0x05, +0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, +0x3e, 0x02, 0x35, 0x11, 0x34, 0x26, 0x23, 0x22, +0x07, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, +0x07, 0x11, 0x23, 0x11, 0x33, 0x17, 0x33, 0x3e, +0x01, 0x33, 0x32, 0x16, 0x17, 0x3e, 0x01, 0x33, +0x32, 0x15, 0x11, 0x14, 0x06, 0x02, 0x6d, 0x11, +0x21, 0x0b, 0x0b, 0x08, 0x1b, 0x0e, 0x14, 0x19, +0x0d, 0x05, 0x34, 0x37, 0x41, 0x4f, 0x2c, 0x34, +0x38, 0x41, 0x4f, 0x2c, 0x26, 0x04, 0x03, 0x20, +0x4f, 0x28, 0x3a, 0x3e, 0x0d, 0x2a, 0x4f, 0x2a, +0x90, 0x33, 0xb5, 0x07, 0x05, 0x24, 0x03, 0x06, +0x0f, 0x1c, 0x26, 0x17, 0x01, 0x54, 0x4d, 0x49, +0x5a, 0xfe, 0x96, 0x01, 0x2e, 0x4d, 0x49, 0x5a, +0xfe, 0x96, 0x01, 0xe0, 0x4a, 0x25, 0x31, 0x35, +0x2d, 0x2d, 0x35, 0xb8, 0xfe, 0xa3, 0x47, 0x45, +0x00, 0x01, 0xff, 0xf3, 0xff, 0x4b, 0x01, 0xbf, +0x01, 0xec, 0x00, 0x20, 0x00, 0x59, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x11, 0x2f, +0x1b, 0xb9, 0x00, 0x11, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x16, +0x2f, 0x1b, 0xb9, 0x00, 0x16, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x11, 0x10, 0xb8, +0x00, 0x0b, 0xd0, 0xb8, 0x00, 0x0b, 0x2f, 0xba, +0x00, 0x0d, 0x00, 0x11, 0x00, 0x16, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x11, 0x10, 0xb9, 0x00, 0x1a, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0d, 0x10, 0xb9, +0x00, 0x1d, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, +0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, +0x36, 0x35, 0x11, 0x33, 0x17, 0x33, 0x3e, 0x01, +0x33, 0x32, 0x16, 0x15, 0x11, 0x23, 0x11, 0x34, +0x26, 0x23, 0x22, 0x06, 0x07, 0x11, 0x14, 0x06, +0x27, 0x0e, 0x1e, 0x08, 0x0a, 0x08, 0x16, 0x0b, +0x20, 0x16, 0x29, 0x01, 0x03, 0x25, 0x4e, 0x32, +0x4b, 0x46, 0x2c, 0x33, 0x3b, 0x2b, 0x46, 0x2c, +0x2e, 0xb5, 0x07, 0x05, 0x24, 0x03, 0x06, 0x35, +0x2d, 0x02, 0x0c, 0x4a, 0x25, 0x31, 0x5a, 0x5e, +0xfe, 0xcc, 0x01, 0x2e, 0x4d, 0x49, 0x2d, 0x2d, +0xfe, 0x67, 0x45, 0x41, 0x00, 0x01, 0x00, 0x5c, +0xff, 0x4b, 0x02, 0x28, 0x01, 0xec, 0x00, 0x20, +0x00, 0x59, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, 0x00, 0x13, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0c, 0x2f, 0x1b, 0xb9, 0x00, +0x0c, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x1a, +0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x13, 0x10, 0xb9, 0x00, 0x07, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x0c, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x0f, 0x10, 0xb9, +0x00, 0x0a, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x13, +0x10, 0xb8, 0x00, 0x0d, 0xd0, 0xb8, 0x00, 0x0d, +0x2f, 0x30, 0x31, 0x05, 0x22, 0x26, 0x35, 0x11, +0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, +0x11, 0x33, 0x17, 0x33, 0x3e, 0x01, 0x33, 0x32, +0x16, 0x15, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, +0x37, 0x17, 0x0e, 0x01, 0x01, 0xf4, 0x33, 0x2e, +0x33, 0x3b, 0x2b, 0x46, 0x2c, 0x2c, 0x26, 0x04, +0x03, 0x25, 0x4e, 0x32, 0x4b, 0x46, 0x16, 0x20, +0x0c, 0x15, 0x08, 0x0a, 0x08, 0x1e, 0xb5, 0x41, +0x45, 0x01, 0x5d, 0x4d, 0x49, 0x2d, 0x2d, 0xfe, +0x96, 0x01, 0xe0, 0x4a, 0x25, 0x31, 0x5a, 0x5e, +0xfe, 0xa0, 0x2d, 0x35, 0x06, 0x03, 0x24, 0x05, +0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xb8, 0x01, 0xe0, 0x00, 0x17, +0x00, 0x49, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x17, 0x2f, 0x1b, 0xb9, 0x00, +0x17, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x0a, 0xd0, 0xb8, 0x00, 0x17, +0x10, 0xb8, 0x00, 0x0d, 0xd0, 0xba, 0x00, 0x06, +0x00, 0x0a, 0x00, 0x0d, 0x11, 0x12, 0x39, 0xba, +0x00, 0x12, 0x00, 0x00, 0x00, 0x17, 0x11, 0x12, +0x39, 0x30, 0x31, 0x13, 0x33, 0x13, 0x1e, 0x01, +0x17, 0x33, 0x2e, 0x01, 0x3d, 0x01, 0x33, 0x11, +0x23, 0x03, 0x2e, 0x01, 0x27, 0x23, 0x1e, 0x01, +0x1d, 0x01, 0x23, 0x5c, 0x2c, 0xc8, 0x0e, 0x22, +0x0e, 0x04, 0x02, 0x03, 0x2b, 0x2b, 0xc9, 0x0e, +0x22, 0x0e, 0x04, 0x02, 0x03, 0x2b, 0x01, 0xe0, +0xfe, 0xc7, 0x17, 0x3a, 0x17, 0x30, 0x5a, 0x27, +0xf0, 0xfe, 0x20, 0x01, 0x3a, 0x16, 0x3b, 0x17, +0x30, 0x5a, 0x28, 0xf0, 0x00, 0x03, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xe3, 0x01, 0xec, 0x00, 0x08, +0x00, 0x11, 0x00, 0x25, 0x00, 0x51, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x12, 0x2f, +0x1b, 0xb9, 0x00, 0x12, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1c, +0x2f, 0x1b, 0xb9, 0x00, 0x1c, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x00, 0x00, 0x12, 0x00, 0x1c, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x1c, 0x10, 0xb9, 0x00, 0x05, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x09, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x12, 0x10, 0xb9, +0x00, 0x0c, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x37, +0x1e, 0x03, 0x33, 0x32, 0x36, 0x37, 0x27, 0x2e, +0x01, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x37, 0x32, +0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, +0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x5f, 0x01, +0x1a, 0x2e, 0x3e, 0x25, 0x4b, 0x60, 0x02, 0x01, +0x08, 0x5f, 0x45, 0x22, 0x3b, 0x2d, 0x1d, 0x04, +0xab, 0x2c, 0x4f, 0x3b, 0x22, 0x22, 0x3b, 0x4f, +0x2c, 0x2c, 0x4e, 0x3b, 0x22, 0x22, 0x3b, 0x4e, +0xea, 0x31, 0x4d, 0x36, 0x1c, 0x6e, 0x62, 0x24, +0x57, 0x61, 0x19, 0x30, 0x44, 0x2b, 0xde, 0x20, +0x40, 0x5e, 0x3f, 0x3e, 0x5e, 0x3f, 0x20, 0x20, +0x3f, 0x5e, 0x3e, 0x3f, 0x5e, 0x40, 0x20, 0x00, +0x00, 0x02, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x9b, +0x01, 0xec, 0x00, 0x1a, 0x00, 0x2b, 0x00, 0x5d, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0a, 0x2f, 0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x0a, 0x10, 0xb9, +0x00, 0x22, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0f, +0xd0, 0xb8, 0x00, 0x0f, 0x2f, 0xba, 0x00, 0x14, +0x00, 0x0a, 0x00, 0x00, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x14, 0x2f, 0xb9, 0x00, 0x12, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x1b, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x16, 0xd0, 0xb8, +0x00, 0x16, 0x2f, 0x30, 0x31, 0x05, 0x22, 0x2e, +0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, +0x17, 0x21, 0x15, 0x23, 0x15, 0x33, 0x15, 0x23, +0x15, 0x33, 0x15, 0x21, 0x0e, 0x01, 0x27, 0x32, +0x36, 0x37, 0x11, 0x2e, 0x01, 0x23, 0x22, 0x0e, +0x02, 0x15, 0x14, 0x1e, 0x02, 0x01, 0x1d, 0x32, +0x56, 0x3e, 0x23, 0x23, 0x3e, 0x56, 0x32, 0x16, +0x2e, 0x1b, 0x01, 0x15, 0xf3, 0xca, 0xca, 0xfd, +0xfe, 0xe1, 0x1b, 0x2e, 0x13, 0x12, 0x2b, 0x13, +0x13, 0x2b, 0x12, 0x29, 0x44, 0x33, 0x1c, 0x1c, +0x33, 0x44, 0x0c, 0x21, 0x41, 0x5e, 0x3d, 0x3d, +0x5d, 0x40, 0x21, 0x04, 0x08, 0x25, 0xad, 0x24, +0xc5, 0x25, 0x08, 0x04, 0x27, 0x09, 0x06, 0x01, +0x8d, 0x05, 0x09, 0x1b, 0x36, 0x4f, 0x34, 0x35, +0x50, 0x36, 0x1b, 0x00, 0x00, 0x03, 0x00, 0x34, +0xff, 0x27, 0x02, 0x53, 0x02, 0xcf, 0x00, 0x0a, +0x00, 0x15, 0x00, 0x2f, 0x00, 0x73, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x2d, 0x2f, +0x1b, 0xb9, 0x00, 0x2d, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x2e, +0x2f, 0x1b, 0xb9, 0x00, 0x2e, 0x00, 0x13, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x23, 0x2f, 0x1b, 0xb9, 0x00, 0x23, 0x00, 0x05, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x22, 0x2f, 0x1b, 0xb9, 0x00, 0x22, 0x00, +0x07, 0x3e, 0x59, 0xb8, 0x00, 0x23, 0x10, 0xb9, +0x00, 0x15, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, +0xd0, 0xb8, 0x00, 0x2d, 0x10, 0xb9, 0x00, 0x0b, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0a, 0xd0, 0xb8, +0x00, 0x2d, 0x10, 0xb8, 0x00, 0x16, 0xd0, 0xb8, +0x00, 0x23, 0x10, 0xb8, 0x00, 0x20, 0xd0, 0x30, +0x31, 0x25, 0x3e, 0x03, 0x35, 0x34, 0x2e, 0x02, +0x27, 0x23, 0x0e, 0x03, 0x15, 0x14, 0x1e, 0x02, +0x17, 0x13, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, +0x07, 0x15, 0x23, 0x35, 0x2e, 0x03, 0x35, 0x34, +0x3e, 0x02, 0x37, 0x35, 0x33, 0x01, 0x59, 0x29, +0x4a, 0x37, 0x21, 0x1f, 0x36, 0x4b, 0x2b, 0x2b, +0x29, 0x4a, 0x38, 0x21, 0x21, 0x38, 0x4a, 0x29, +0x2b, 0x32, 0x5a, 0x45, 0x29, 0x2a, 0x46, 0x5a, +0x30, 0x2b, 0x30, 0x5a, 0x46, 0x2a, 0x2a, 0x46, +0x5a, 0x30, 0x2b, 0x1a, 0x01, 0x20, 0x37, 0x4f, +0x30, 0x30, 0x4e, 0x37, 0x1f, 0x01, 0x01, 0x1f, +0x37, 0x4e, 0x30, 0x30, 0x4f, 0x37, 0x20, 0x01, +0x01, 0xd0, 0x01, 0x22, 0x3f, 0x5c, 0x3b, 0x3b, +0x5d, 0x40, 0x22, 0x01, 0xcf, 0xcf, 0x01, 0x22, +0x40, 0x5d, 0x3b, 0x3b, 0x5c, 0x3f, 0x22, 0x01, +0xe5, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfc, +0xff, 0xf4, 0x00, 0xe1, 0x01, 0xe0, 0x00, 0x12, +0x00, 0x4b, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x07, +0x00, 0x02, 0xf4, 0xba, 0x00, 0x0f, 0x00, 0x0b, +0x00, 0x00, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x0f, +0x10, 0xb9, 0x00, 0x0a, 0x00, 0x02, 0xf4, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x0d, 0xd0, 0xb8, +0x00, 0x0d, 0x2f, 0x30, 0x31, 0x17, 0x22, 0x26, +0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x37, +0x11, 0x33, 0x11, 0x23, 0x27, 0x23, 0x0e, 0x01, +0x2c, 0x0d, 0x17, 0x0c, 0x0a, 0x0d, 0x11, 0x0e, +0x20, 0x47, 0x1c, 0x2c, 0x25, 0x05, 0x02, 0x19, +0x45, 0x0c, 0x04, 0x06, 0x28, 0x05, 0x03, 0x37, +0x45, 0x01, 0x46, 0xfe, 0x20, 0x5a, 0x2d, 0x39, +0x00, 0x01, 0xff, 0xfc, 0xff, 0xf4, 0x00, 0xe1, +0x02, 0xcf, 0x00, 0x12, 0x00, 0x4b, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, 0x2f, +0x1b, 0xb9, 0x00, 0x0b, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x07, 0x00, 0x02, 0xf4, 0xba, +0x00, 0x0f, 0x00, 0x00, 0x00, 0x0b, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x0f, 0x10, 0xb9, 0x00, 0x0a, +0x00, 0x02, 0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x0d, 0xd0, 0xb8, 0x00, 0x0d, 0x2f, 0x30, +0x31, 0x17, 0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, +0x33, 0x32, 0x36, 0x37, 0x11, 0x33, 0x11, 0x23, +0x27, 0x23, 0x0e, 0x01, 0x2c, 0x0d, 0x17, 0x0c, +0x0a, 0x0d, 0x11, 0x0e, 0x20, 0x47, 0x1c, 0x2c, +0x25, 0x05, 0x02, 0x19, 0x45, 0x0c, 0x04, 0x06, +0x28, 0x05, 0x03, 0x37, 0x45, 0x02, 0x35, 0xfd, +0x31, 0x5a, 0x2d, 0x39, 0x00, 0x01, 0xff, 0xfc, +0xff, 0x4b, 0x01, 0x4a, 0x01, 0xe0, 0x00, 0x1e, +0x00, 0x4d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, 0x00, 0x13, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x08, 0x2f, 0x1b, 0xb9, 0x00, +0x08, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x18, +0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x2b, 0xba, +0x00, 0x04, 0x00, 0x08, 0x00, 0x13, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x08, 0x10, 0xb9, 0x00, 0x0f, +0x00, 0x02, 0xf4, 0xb8, 0x00, 0x04, 0x10, 0xb9, +0x00, 0x12, 0x00, 0x02, 0xf4, 0x30, 0x31, 0x05, +0x22, 0x26, 0x3d, 0x01, 0x23, 0x0e, 0x01, 0x23, +0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, +0x36, 0x37, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, +0x32, 0x36, 0x37, 0x17, 0x0e, 0x01, 0x01, 0x16, +0x32, 0x2d, 0x02, 0x19, 0x45, 0x2b, 0x0d, 0x17, +0x0c, 0x0a, 0x0d, 0x11, 0x0e, 0x20, 0x47, 0x1c, +0x2c, 0x16, 0x20, 0x0c, 0x15, 0x08, 0x0a, 0x08, +0x1e, 0xb5, 0x3f, 0x44, 0x8c, 0x2d, 0x39, 0x04, +0x06, 0x28, 0x05, 0x03, 0x37, 0x45, 0x01, 0x46, +0xfd, 0xf4, 0x2d, 0x35, 0x06, 0x03, 0x24, 0x05, +0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5c, +0xff, 0x4b, 0x01, 0x41, 0x01, 0xec, 0x00, 0x1e, +0x00, 0x48, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0a, 0x2f, 0x1b, 0xb9, 0x00, 0x0a, +0x00, 0x09, 0x3e, 0x59, 0xbb, 0x00, 0x18, 0x00, +0x01, 0x00, 0x00, 0x00, 0x04, 0x2b, 0xb8, 0x00, +0x0a, 0x10, 0xb8, 0x00, 0x04, 0xd0, 0xb8, 0x00, +0x04, 0x2f, 0xba, 0x00, 0x06, 0x00, 0x0a, 0x00, +0x00, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x0a, 0x10, +0xb9, 0x00, 0x11, 0x00, 0x02, 0xf4, 0xb8, 0x00, +0x06, 0x10, 0xb9, 0x00, 0x14, 0x00, 0x02, 0xf4, +0x30, 0x31, 0x17, 0x22, 0x26, 0x35, 0x11, 0x33, +0x17, 0x33, 0x3e, 0x01, 0x33, 0x32, 0x16, 0x17, +0x07, 0x2e, 0x01, 0x23, 0x22, 0x06, 0x07, 0x11, +0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x17, 0x0e, +0x01, 0xbe, 0x33, 0x2f, 0x26, 0x04, 0x03, 0x18, +0x45, 0x2b, 0x0e, 0x16, 0x0c, 0x0a, 0x0c, 0x12, +0x0e, 0x20, 0x47, 0x1c, 0x17, 0x20, 0x0b, 0x15, +0x08, 0x0a, 0x08, 0x1d, 0xb5, 0x41, 0x45, 0x02, +0x0f, 0x59, 0x2d, 0x38, 0x04, 0x06, 0x28, 0x05, +0x03, 0x37, 0x44, 0xfe, 0x8d, 0x2d, 0x35, 0x06, +0x03, 0x24, 0x05, 0x07, 0x00, 0x01, 0x00, 0x5c, +0x00, 0x00, 0x01, 0x36, 0x01, 0xec, 0x00, 0x10, +0x00, 0x2f, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, 0x05, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x10, 0x2f, 0x1b, 0xb9, 0x00, +0x10, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x05, +0x10, 0xb9, 0x00, 0x0b, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x13, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x17, +0x07, 0x2e, 0x01, 0x23, 0x22, 0x06, 0x15, 0x11, +0x23, 0x5c, 0x17, 0x28, 0x36, 0x1f, 0x2b, 0x1b, +0x0a, 0x0e, 0x1b, 0x12, 0x2d, 0x3c, 0x2c, 0x01, +0x40, 0x2b, 0x41, 0x2b, 0x15, 0x0e, 0x26, 0x08, +0x04, 0x49, 0x43, 0xfe, 0xc8, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x5c, 0x00, 0x00, 0x01, 0xb0, +0x01, 0xe0, 0x00, 0x08, 0x00, 0x18, 0x00, 0x4b, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0e, 0x2f, 0x1b, 0xb9, 0x00, 0x0e, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0d, 0x2f, 0x1b, 0xb9, 0x00, 0x0d, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x00, 0x00, 0x01, +0x00, 0x0a, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x0e, +0x10, 0xb9, 0x00, 0x06, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x0d, 0x10, 0xb8, 0x00, 0x09, 0xd0, 0xba, +0x00, 0x17, 0x00, 0x0a, 0x00, 0x00, 0x11, 0x12, +0x39, 0x30, 0x31, 0x37, 0x32, 0x36, 0x35, 0x34, +0x26, 0x2b, 0x01, 0x15, 0x17, 0x27, 0x23, 0x15, +0x23, 0x11, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, +0x06, 0x07, 0x17, 0xea, 0x40, 0x49, 0x49, 0x40, +0x62, 0xf6, 0x86, 0x70, 0x2c, 0x99, 0x25, 0x40, +0x2d, 0x1a, 0x48, 0x35, 0x8c, 0xf6, 0x32, 0x33, +0x33, 0x2d, 0xc5, 0xf6, 0xd1, 0xd1, 0x01, 0xe0, +0x0e, 0x1f, 0x33, 0x24, 0x3e, 0x42, 0x08, 0xd4, +0x00, 0x02, 0x00, 0x2a, 0x00, 0x00, 0x01, 0x7e, +0x01, 0xe0, 0x00, 0x08, 0x00, 0x18, 0x00, 0x4b, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x14, 0x2f, 0x1b, 0xb9, 0x00, 0x14, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0a, 0x2f, 0x1b, 0xb9, 0x00, 0x0a, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x17, 0x00, 0x01, +0x00, 0x00, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x0a, +0x10, 0xb9, 0x00, 0x07, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x13, 0x00, 0x00, 0x00, 0x17, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x14, 0x10, 0xb8, 0x00, 0x18, +0xd0, 0x30, 0x31, 0x25, 0x23, 0x22, 0x06, 0x15, +0x14, 0x16, 0x3b, 0x01, 0x13, 0x11, 0x23, 0x22, +0x2e, 0x02, 0x35, 0x34, 0x36, 0x37, 0x27, 0x33, +0x17, 0x33, 0x35, 0x01, 0x52, 0x62, 0x40, 0x49, +0x49, 0x40, 0x62, 0x2c, 0x99, 0x26, 0x3f, 0x2d, +0x1a, 0x48, 0x35, 0x8c, 0x32, 0x86, 0x70, 0xee, +0x34, 0x33, 0x33, 0x2e, 0x01, 0xba, 0xfe, 0x20, +0x0f, 0x20, 0x33, 0x24, 0x3e, 0x43, 0x08, 0xd1, +0xce, 0xce, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, +0xff, 0x4b, 0x01, 0x72, 0x01, 0xec, 0x00, 0x44, +0x00, 0x57, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x41, 0x2f, 0x1b, 0xb9, 0x00, 0x41, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x17, 0x2f, 0x1b, 0xb9, 0x00, +0x17, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x20, +0x00, 0x01, 0x00, 0x27, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x41, 0x10, 0xb9, 0x00, 0x03, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x0d, 0x00, 0x41, 0x00, 0x17, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x17, 0x10, 0xb9, +0x00, 0x2f, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x37, +0x00, 0x17, 0x00, 0x41, 0x11, 0x12, 0x39, 0x30, +0x31, 0x01, 0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, +0x15, 0x14, 0x1e, 0x02, 0x17, 0x1e, 0x03, 0x15, +0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x15, +0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x17, +0x0e, 0x01, 0x23, 0x22, 0x26, 0x3d, 0x01, 0x37, +0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, +0x02, 0x27, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, +0x33, 0x32, 0x16, 0x17, 0x01, 0x43, 0x18, 0x36, +0x25, 0x1c, 0x28, 0x1b, 0x0d, 0x13, 0x20, 0x29, +0x15, 0x1c, 0x38, 0x2d, 0x1c, 0x15, 0x2a, 0x3c, +0x27, 0x26, 0x43, 0x1d, 0x05, 0x0e, 0x1a, 0x14, +0x0e, 0x1b, 0x09, 0x0b, 0x0b, 0x22, 0x11, 0x37, +0x33, 0x1a, 0x1f, 0x46, 0x34, 0x39, 0x39, 0x15, +0x22, 0x29, 0x15, 0x1b, 0x37, 0x2c, 0x1b, 0x14, +0x28, 0x39, 0x26, 0x26, 0x49, 0x1a, 0x01, 0x9b, +0x12, 0x19, 0x0f, 0x18, 0x20, 0x10, 0x15, 0x1d, +0x16, 0x11, 0x08, 0x0b, 0x16, 0x20, 0x2f, 0x23, +0x1b, 0x31, 0x25, 0x16, 0x11, 0x0e, 0x39, 0x17, +0x26, 0x1c, 0x10, 0x07, 0x03, 0x24, 0x05, 0x07, +0x45, 0x47, 0x56, 0x20, 0x16, 0x1d, 0x39, 0x26, +0x16, 0x22, 0x18, 0x12, 0x08, 0x0a, 0x16, 0x1f, +0x2b, 0x1f, 0x1a, 0x2f, 0x23, 0x14, 0x1c, 0x16, +0x00, 0x01, 0xff, 0xdf, 0xff, 0x1b, 0x01, 0x06, +0x02, 0xdd, 0x00, 0x1d, 0x00, 0x35, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0e, 0x2f, +0x1b, 0xb9, 0x00, 0x0e, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x07, 0x3e, +0x59, 0xb9, 0x00, 0x07, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x0e, 0x10, 0xb9, 0x00, 0x15, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x17, 0x22, 0x26, 0x27, 0x37, +0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, 0x11, 0x34, +0x36, 0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, 0x01, +0x23, 0x22, 0x0e, 0x02, 0x15, 0x11, 0x14, 0x06, +0x1d, 0x11, 0x22, 0x0b, 0x0b, 0x09, 0x1b, 0x0e, +0x28, 0x18, 0x39, 0x3d, 0x0e, 0x1c, 0x0a, 0x0b, +0x08, 0x15, 0x0b, 0x17, 0x1d, 0x10, 0x06, 0x34, +0xe5, 0x07, 0x05, 0x24, 0x03, 0x07, 0x3b, 0x2e, +0x02, 0xa7, 0x47, 0x45, 0x07, 0x05, 0x24, 0x03, +0x07, 0x10, 0x1c, 0x26, 0x17, 0xfd, 0x59, 0x47, +0x45, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xe5, +0xff, 0x1b, 0x01, 0x0c, 0x02, 0xdd, 0x00, 0x25, +0x00, 0x55, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x22, 0x2f, 0x1b, 0xb9, 0x00, 0x22, +0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x10, 0x2f, 0x1b, 0xb9, 0x00, +0x10, 0x00, 0x07, 0x3e, 0x59, 0xba, 0x00, 0x0a, +0x00, 0x0b, 0x00, 0x03, 0x2b, 0xb8, 0x00, 0x22, +0x10, 0xb9, 0x00, 0x03, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x10, 0x10, 0xb9, 0x00, 0x17, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0b, 0x10, 0xb8, 0x00, 0x1b, +0xd0, 0xb8, 0x00, 0x0a, 0x10, 0xb8, 0x00, 0x1d, +0xd0, 0xb8, 0x00, 0x1d, 0x2f, 0x30, 0x31, 0x01, +0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x11, +0x33, 0x15, 0x23, 0x11, 0x14, 0x06, 0x23, 0x22, +0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, +0x35, 0x11, 0x23, 0x35, 0x37, 0x11, 0x34, 0x36, +0x33, 0x32, 0x16, 0x17, 0x01, 0x01, 0x08, 0x15, +0x0b, 0x17, 0x1d, 0x10, 0x06, 0x59, 0x59, 0x34, +0x38, 0x11, 0x22, 0x0b, 0x0b, 0x09, 0x1b, 0x0e, +0x28, 0x18, 0x5d, 0x5d, 0x39, 0x3d, 0x0e, 0x1c, +0x0a, 0x02, 0xad, 0x03, 0x07, 0x10, 0x1c, 0x26, +0x17, 0xfe, 0xbf, 0x21, 0xfe, 0xbb, 0x47, 0x45, +0x07, 0x05, 0x24, 0x03, 0x07, 0x3b, 0x2e, 0x01, +0x42, 0x1d, 0x04, 0x01, 0x44, 0x47, 0x45, 0x07, +0x05, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1c, +0xff, 0x49, 0x01, 0x2d, 0x02, 0x6b, 0x00, 0x1b, +0x00, 0x38, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x09, 0x2f, 0x1b, 0xb9, 0x00, 0x09, +0x00, 0x09, 0x3e, 0x59, 0xbb, 0x00, 0x15, 0x00, +0x01, 0x00, 0x00, 0x00, 0x04, 0x2b, 0xb8, 0x00, +0x09, 0x10, 0xb9, 0x00, 0x06, 0x00, 0x01, 0xf4, +0xb8, 0x00, 0x09, 0x10, 0xb8, 0x00, 0x0d, 0xd0, +0xb8, 0x00, 0x06, 0x10, 0xb8, 0x00, 0x0e, 0xd0, +0x30, 0x31, 0x17, 0x22, 0x2e, 0x02, 0x35, 0x11, +0x23, 0x35, 0x3f, 0x01, 0x33, 0x15, 0x33, 0x15, +0x23, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, +0x37, 0x17, 0x0e, 0x01, 0xdf, 0x23, 0x2e, 0x1c, +0x0b, 0x4b, 0x4c, 0x06, 0x26, 0x8b, 0x8b, 0x07, +0x12, 0x1f, 0x19, 0x0e, 0x21, 0x0d, 0x0c, 0x15, +0x2a, 0xb7, 0x15, 0x26, 0x36, 0x20, 0x01, 0xe0, +0x22, 0x04, 0x8b, 0x8b, 0x26, 0xfe, 0x1d, 0x17, +0x26, 0x1b, 0x0f, 0x0a, 0x05, 0x24, 0x07, 0x0b, +0x00, 0x02, 0x00, 0x05, 0xff, 0xf4, 0x02, 0x1c, +0x01, 0xe0, 0x00, 0x08, 0x00, 0x20, 0x00, 0x7f, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x19, 0x2f, 0x1b, 0xb9, 0x00, 0x19, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x11, 0x2f, 0x1b, 0xb9, 0x00, 0x11, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x15, 0x00, 0x18, +0x00, 0x03, 0x2b, 0xb8, 0x00, 0x15, 0x10, 0xb8, +0x00, 0x00, 0xd0, 0xb8, 0x00, 0x11, 0x10, 0xb9, +0x00, 0x05, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x0d, +0x00, 0x19, 0x00, 0x11, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x0d, 0x10, 0xb9, 0x00, 0x08, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x09, +0xd0, 0xb8, 0x00, 0x11, 0x10, 0xb8, 0x00, 0x0b, +0xd0, 0xb8, 0x00, 0x0b, 0x2f, 0xb8, 0x00, 0x18, +0x10, 0xb8, 0x00, 0x1c, 0xd0, 0xb8, 0x00, 0x19, +0x10, 0xb8, 0x00, 0x1d, 0xd0, 0xb8, 0x00, 0x1c, +0x10, 0xb8, 0x00, 0x20, 0xd0, 0x30, 0x31, 0x01, +0x21, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x3f, +0x01, 0x23, 0x11, 0x23, 0x27, 0x23, 0x0e, 0x01, +0x23, 0x22, 0x26, 0x3d, 0x01, 0x23, 0x35, 0x37, +0x35, 0x33, 0x15, 0x21, 0x35, 0x33, 0x15, 0x33, +0x01, 0x97, 0xfe, 0xf8, 0x33, 0x3a, 0x2b, 0x46, +0x2a, 0x85, 0x59, 0x25, 0x05, 0x02, 0x23, 0x4e, +0x32, 0x4b, 0x46, 0x5e, 0x5e, 0x2c, 0x01, 0x08, +0x2c, 0x59, 0x01, 0x03, 0x51, 0x4d, 0x49, 0x2f, +0x33, 0x85, 0xfe, 0xfd, 0x50, 0x2a, 0x32, 0x5a, +0x5e, 0x57, 0x1d, 0x04, 0xbc, 0xbc, 0xbc, 0xbc, +0x00, 0x01, 0x00, 0x2a, 0xff, 0xf4, 0x01, 0xe9, +0x01, 0xe0, 0x00, 0x2d, 0x00, 0x59, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, 0x2f, +0x1b, 0xb9, 0x00, 0x0d, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x0d, 0x10, 0xb9, 0x00, 0x0c, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0f, 0xd0, 0xb8, +0x00, 0x0f, 0x2f, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x17, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0c, +0x10, 0xb8, 0x00, 0x22, 0xd0, 0xb8, 0x00, 0x1f, +0xd0, 0xb8, 0x00, 0x1f, 0x2f, 0xb8, 0x00, 0x0d, +0x10, 0xb8, 0x00, 0x21, 0xd0, 0x30, 0x31, 0x05, +0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, +0x35, 0x23, 0x35, 0x33, 0x15, 0x0e, 0x01, 0x15, +0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, +0x34, 0x26, 0x27, 0x35, 0x33, 0x15, 0x23, 0x15, +0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x01, 0x0a, +0x33, 0x4f, 0x36, 0x1c, 0x11, 0x1b, 0x22, 0x11, +0x6b, 0xa9, 0x30, 0x3f, 0x15, 0x2a, 0x3e, 0x29, +0x28, 0x3e, 0x2a, 0x16, 0x3f, 0x30, 0xa8, 0x6a, +0x11, 0x22, 0x1b, 0x11, 0x1d, 0x36, 0x4f, 0x0c, +0x25, 0x3f, 0x52, 0x2c, 0x29, 0x45, 0x39, 0x2b, +0x10, 0x02, 0x26, 0x1d, 0x21, 0x72, 0x51, 0x27, +0x47, 0x36, 0x20, 0x20, 0x36, 0x47, 0x27, 0x51, +0x72, 0x21, 0x1d, 0x26, 0x02, 0x10, 0x2b, 0x39, +0x45, 0x29, 0x2c, 0x52, 0x3f, 0x25, 0x00, 0x00, +0x00, 0x01, 0x00, 0x55, 0xff, 0xf4, 0x01, 0xcc, +0x01, 0xec, 0x00, 0x21, 0x00, 0x45, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1a, 0x2f, +0x1b, 0xb9, 0x00, 0x1a, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x1a, 0x10, 0xb8, 0x00, 0x06, +0xd0, 0xb8, 0x00, 0x06, 0x2f, 0xb8, 0x00, 0x00, +0x10, 0xb9, 0x00, 0x0d, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x1a, 0x10, 0xb9, 0x00, 0x15, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x17, 0x22, 0x2e, 0x02, 0x35, +0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, +0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, 0x22, 0x07, +0x27, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, +0x02, 0xff, 0x23, 0x3e, 0x2e, 0x1b, 0x2c, 0x15, +0x22, 0x2e, 0x1a, 0x26, 0x3a, 0x28, 0x15, 0x2e, +0x30, 0x11, 0x11, 0x0b, 0x17, 0x1d, 0x41, 0x45, +0x1a, 0x34, 0x4d, 0x0c, 0x17, 0x32, 0x4e, 0x37, +0x01, 0x1e, 0xfe, 0xeb, 0x30, 0x43, 0x2a, 0x13, +0x27, 0x42, 0x5a, 0x33, 0x57, 0x5e, 0x08, 0x26, +0x08, 0x68, 0x6d, 0x3d, 0x6a, 0x4f, 0x2d, 0x00, +0x00, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x01, 0xa6, +0x01, 0xe0, 0x00, 0x0d, 0x00, 0x33, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, +0x2f, 0x1b, 0xb9, 0x00, 0x0d, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x03, 0xd0, 0xba, 0x00, 0x08, +0x00, 0x00, 0x00, 0x03, 0x11, 0x12, 0x39, 0x30, +0x31, 0x13, 0x33, 0x13, 0x23, 0x03, 0x2e, 0x01, +0x27, 0x23, 0x0e, 0x01, 0x07, 0x03, 0x23, 0xbe, +0x34, 0xb4, 0x30, 0x6c, 0x0b, 0x1a, 0x0b, 0x04, +0x0c, 0x19, 0x0c, 0x6c, 0x2d, 0x01, 0xe0, 0xfe, +0x20, 0x01, 0x2d, 0x23, 0x47, 0x20, 0x20, 0x47, +0x23, 0xfe, 0xd3, 0x00, 0x00, 0x01, 0x00, 0x18, +0x00, 0x00, 0x02, 0x95, 0x01, 0xe0, 0x00, 0x21, +0x00, 0x57, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x21, 0x2f, 0x1b, 0xb9, 0x00, +0x21, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x17, +0xd0, 0xba, 0x00, 0x05, 0x00, 0x00, 0x00, 0x17, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x0a, 0xd0, 0xb8, 0x00, 0x17, 0x10, 0xb8, +0x00, 0x0d, 0xd0, 0xba, 0x00, 0x12, 0x00, 0x00, +0x00, 0x0d, 0x11, 0x12, 0x39, 0xba, 0x00, 0x1c, +0x00, 0x00, 0x00, 0x21, 0x11, 0x12, 0x39, 0x30, +0x31, 0x13, 0x33, 0x13, 0x1e, 0x01, 0x17, 0x33, +0x3e, 0x01, 0x37, 0x13, 0x33, 0x13, 0x23, 0x03, +0x2e, 0x01, 0x27, 0x23, 0x0e, 0x01, 0x07, 0x03, +0x23, 0x03, 0x2e, 0x01, 0x27, 0x23, 0x0e, 0x01, +0x07, 0x03, 0x23, 0xa1, 0x3a, 0x55, 0x0a, 0x10, +0x0a, 0x04, 0x09, 0x12, 0x0c, 0x52, 0x36, 0x8e, +0x30, 0x57, 0x08, 0x10, 0x08, 0x04, 0x09, 0x11, +0x09, 0x58, 0x34, 0x58, 0x09, 0x11, 0x09, 0x04, +0x09, 0x11, 0x09, 0x54, 0x2d, 0x01, 0xe0, 0xfe, +0xd6, 0x23, 0x43, 0x23, 0x23, 0x45, 0x23, 0x01, +0x28, 0xfe, 0x20, 0x01, 0x37, 0x21, 0x3f, 0x20, +0x20, 0x3f, 0x21, 0xfe, 0xc9, 0x01, 0x37, 0x21, +0x3f, 0x20, 0x20, 0x3f, 0x21, 0xfe, 0xc9, 0x00, +0x00, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x01, 0xa8, +0x02, 0xdb, 0x00, 0x1b, 0x00, 0x4b, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x05, 0x2f, +0x1b, 0xb9, 0x00, 0x05, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1b, +0x2f, 0x1b, 0xb9, 0x00, 0x1b, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x05, 0x10, 0xb9, 0x00, 0x0b, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x0f, 0x00, 0x1b, +0x00, 0x05, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x1b, +0x10, 0xb8, 0x00, 0x11, 0xd0, 0xba, 0x00, 0x16, +0x00, 0x05, 0x00, 0x1b, 0x11, 0x12, 0x39, 0x30, +0x31, 0x13, 0x3e, 0x03, 0x33, 0x32, 0x17, 0x07, +0x2e, 0x01, 0x23, 0x22, 0x06, 0x0f, 0x01, 0x13, +0x23, 0x03, 0x2e, 0x01, 0x27, 0x23, 0x0e, 0x01, +0x07, 0x03, 0x23, 0xd5, 0x0a, 0x1d, 0x28, 0x33, +0x20, 0x1b, 0x16, 0x0a, 0x08, 0x15, 0x0b, 0x2c, +0x3c, 0x13, 0x18, 0xc5, 0x30, 0x74, 0x0c, 0x1b, +0x0d, 0x04, 0x0b, 0x17, 0x0b, 0x66, 0x2d, 0x02, +0x3d, 0x1e, 0x39, 0x2c, 0x1b, 0x0a, 0x26, 0x03, +0x05, 0x48, 0x37, 0x4b, 0xfe, 0x17, 0x01, 0x2e, +0x1e, 0x49, 0x20, 0x20, 0x48, 0x1f, 0xfe, 0xd2, +0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x01, 0x7f, +0x01, 0xe0, 0x00, 0x0f, 0x00, 0x37, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x01, 0x2f, +0x1b, 0xb9, 0x00, 0x01, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0f, +0x2f, 0x1b, 0xb9, 0x00, 0x0f, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x06, 0x00, 0x01, 0x00, 0x0f, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x01, 0x10, 0xb8, +0x00, 0x0b, 0xd0, 0x30, 0x31, 0x37, 0x03, 0x33, +0x17, 0x1e, 0x01, 0x17, 0x33, 0x3e, 0x01, 0x3f, +0x01, 0x33, 0x03, 0x15, 0x23, 0xab, 0xa8, 0x30, +0x51, 0x0e, 0x1e, 0x10, 0x04, 0x0f, 0x1d, 0x0e, +0x50, 0x31, 0xa8, 0x2c, 0xad, 0x01, 0x33, 0x9b, +0x1d, 0x34, 0x1c, 0x1c, 0x34, 0x1d, 0x9b, 0xfe, +0xcd, 0xad, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1b, +0xff, 0x4b, 0x01, 0xd9, 0x01, 0xe0, 0x00, 0x17, +0x00, 0x4b, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x09, 0x2f, 0x1b, 0xb9, 0x00, 0x09, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x04, 0x2f, 0x1b, 0xb9, 0x00, +0x04, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x11, +0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x04, 0x10, 0xb9, 0x00, 0x0c, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x06, 0xd0, 0xb8, 0x00, 0x09, +0x10, 0xb9, 0x00, 0x07, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x0b, 0xd0, 0x30, 0x31, 0x05, 0x22, 0x26, +0x3d, 0x01, 0x21, 0x35, 0x01, 0x23, 0x35, 0x21, +0x15, 0x01, 0x21, 0x15, 0x14, 0x16, 0x33, 0x32, +0x36, 0x37, 0x17, 0x0e, 0x01, 0x01, 0xa5, 0x33, +0x2e, 0xfe, 0xd7, 0x01, 0x1c, 0xfd, 0x01, 0x36, +0xfe, 0xe5, 0x01, 0x1b, 0x16, 0x20, 0x0c, 0x15, +0x08, 0x0a, 0x08, 0x1e, 0xb5, 0x40, 0x44, 0x31, +0x18, 0x01, 0xa2, 0x26, 0x17, 0xfe, 0x5e, 0x53, +0x2d, 0x35, 0x06, 0x03, 0x24, 0x05, 0x07, 0x00, +0x00, 0x02, 0x00, 0x1b, 0xff, 0xb0, 0x01, 0xb0, +0x01, 0xe0, 0x00, 0x09, 0x00, 0x24, 0x00, 0x59, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x22, 0x2f, 0x1b, 0xb9, 0x00, 0x22, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x1e, 0x2f, 0x1b, 0xb9, 0x00, 0x1e, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x0a, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x09, 0xd0, 0xb8, 0x00, 0x09, +0x2f, 0xb8, 0x00, 0x06, 0xdc, 0xb8, 0x00, 0x0f, +0xdc, 0xb8, 0x00, 0x1e, 0x10, 0xb8, 0x00, 0x16, +0xd0, 0xb8, 0x00, 0x0a, 0x10, 0xb8, 0x00, 0x1f, +0xd0, 0xb8, 0x00, 0x1f, 0x2f, 0xb8, 0x00, 0x22, +0x10, 0xb9, 0x00, 0x20, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x25, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, +0x22, 0x06, 0x07, 0x27, 0x16, 0x32, 0x33, 0x36, +0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x2b, 0x01, +0x0e, 0x01, 0x07, 0x27, 0x3e, 0x01, 0x37, 0x23, +0x35, 0x01, 0x23, 0x35, 0x21, 0x15, 0x01, 0x2b, +0x2e, 0x31, 0x15, 0x1a, 0x1b, 0x37, 0x17, 0x9e, +0x1f, 0x3c, 0x1f, 0x38, 0x57, 0x27, 0x2c, 0x47, +0x48, 0x3d, 0x05, 0x09, 0x05, 0x23, 0x05, 0x09, +0x05, 0xa6, 0x01, 0x1c, 0xfd, 0x01, 0x35, 0x26, +0x2a, 0x1a, 0x14, 0x1b, 0x37, 0x3c, 0x01, 0x01, +0x95, 0x2c, 0x26, 0x2b, 0x3e, 0x12, 0x27, 0x17, +0x07, 0x14, 0x24, 0x11, 0x18, 0x01, 0xa2, 0x26, +0x17, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, +0xff, 0x1b, 0x01, 0x83, 0x01, 0xe0, 0x00, 0x26, +0x00, 0x49, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x1a, 0x2f, 0x1b, 0xb9, 0x00, 0x1a, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x07, 0x3e, 0x59, 0xb9, 0x00, 0x0b, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x13, 0x00, 0x1a, +0x00, 0x00, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x1a, +0x10, 0xb9, 0x00, 0x18, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x13, 0x10, 0xb9, 0x00, 0x1d, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x17, 0x22, 0x2e, 0x02, 0x27, +0x37, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, +0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x27, 0x13, +0x21, 0x35, 0x21, 0x15, 0x03, 0x36, 0x1e, 0x02, +0x15, 0x14, 0x0e, 0x02, 0xc1, 0x24, 0x3a, 0x2e, +0x24, 0x0f, 0x1a, 0x0d, 0x20, 0x27, 0x31, 0x1f, +0x1e, 0x36, 0x29, 0x18, 0x4f, 0x4d, 0x16, 0x1b, +0x11, 0x18, 0xd7, 0xfe, 0xf9, 0x01, 0x40, 0xd4, +0x35, 0x56, 0x3c, 0x21, 0x21, 0x36, 0x46, 0xe5, +0x0d, 0x16, 0x1a, 0x0e, 0x1f, 0x0d, 0x18, 0x13, +0x0b, 0x19, 0x2d, 0x3f, 0x27, 0x48, 0x54, 0x0b, +0x08, 0x1f, 0x01, 0x24, 0x26, 0x17, 0xfe, 0xe0, +0x0a, 0x14, 0x32, 0x4d, 0x2f, 0x34, 0x50, 0x36, +0x1c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, +0x00, 0x00, 0x01, 0x79, 0x02, 0xdb, 0x00, 0x1b, +0x00, 0x2f, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, +0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x1b, 0x2f, 0x1b, 0xb9, 0x00, +0x1b, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x0f, +0x10, 0xb9, 0x00, 0x06, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x13, 0x3e, 0x01, 0x35, 0x34, 0x26, 0x23, +0x22, 0x06, 0x07, 0x27, 0x3e, 0x03, 0x33, 0x32, +0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x11, +0x23, 0x9c, 0x59, 0x56, 0x4a, 0x46, 0x3b, 0x4c, +0x19, 0x1a, 0x0e, 0x23, 0x2e, 0x38, 0x23, 0x28, +0x46, 0x33, 0x1d, 0x1a, 0x2f, 0x41, 0x27, 0x2c, +0x01, 0x48, 0x30, 0x64, 0x48, 0x41, 0x4f, 0x30, +0x1e, 0x1f, 0x0f, 0x1f, 0x19, 0x0f, 0x18, 0x2e, +0x45, 0x2d, 0x2c, 0x45, 0x3a, 0x32, 0x18, 0xfe, +0xd2, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, +0x00, 0x00, 0x01, 0x91, 0x02, 0xdb, 0x00, 0x1b, +0x00, 0x2f, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0a, 0x2f, 0x1b, 0xb9, 0x00, 0x0a, +0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x1b, 0x2f, 0x1b, 0xb9, 0x00, +0x1b, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x0a, +0x10, 0xb9, 0x00, 0x13, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x13, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, +0x33, 0x32, 0x1e, 0x02, 0x17, 0x07, 0x2e, 0x01, +0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x17, 0x11, +0x23, 0xc9, 0x26, 0x41, 0x2f, 0x1b, 0x1f, 0x36, +0x49, 0x2b, 0x21, 0x35, 0x2b, 0x21, 0x0e, 0x1b, +0x17, 0x47, 0x37, 0x4b, 0x50, 0x57, 0x59, 0x2d, +0x01, 0x2e, 0x18, 0x32, 0x3a, 0x45, 0x2c, 0x2d, +0x45, 0x2e, 0x18, 0x0f, 0x19, 0x1f, 0x0f, 0x1f, +0x1e, 0x30, 0x4f, 0x41, 0x48, 0x64, 0x30, 0xfe, +0xb8, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, +0x00, 0x00, 0x01, 0x90, 0x02, 0xdb, 0x00, 0x20, +0x00, 0x49, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, 0x00, 0x13, +0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x20, 0x2f, 0x1b, 0xb9, 0x00, +0x20, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x04, +0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x13, 0x10, 0xb9, 0x00, 0x0a, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x04, 0x10, 0xb8, 0x00, 0x1c, +0xd0, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x1d, +0xd0, 0x30, 0x31, 0x13, 0x23, 0x35, 0x37, 0x33, +0x3e, 0x01, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, +0x07, 0x27, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, +0x15, 0x14, 0x06, 0x07, 0x33, 0x15, 0x23, 0x11, +0x23, 0xa7, 0xa2, 0x4c, 0x61, 0x54, 0x54, 0x4b, +0x46, 0x3b, 0x4b, 0x19, 0x1b, 0x0e, 0x24, 0x2d, +0x38, 0x23, 0x28, 0x46, 0x34, 0x1d, 0x52, 0x3f, +0x99, 0xbd, 0x2c, 0x01, 0x22, 0x22, 0x04, 0x30, +0x6b, 0x41, 0x41, 0x4f, 0x30, 0x1e, 0x1f, 0x0f, +0x1f, 0x19, 0x0f, 0x18, 0x2e, 0x45, 0x2d, 0x45, +0x6c, 0x2a, 0x26, 0xfe, 0xde, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0x01, 0x9f, +0x02, 0xdb, 0x00, 0x22, 0x00, 0x49, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, 0x2f, +0x1b, 0xb9, 0x00, 0x0d, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x22, +0x2f, 0x1b, 0xb9, 0x00, 0x22, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x0d, 0x10, 0xb9, +0x00, 0x16, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x02, +0x10, 0xb8, 0x00, 0x1d, 0xd0, 0xb8, 0x00, 0x01, +0x10, 0xb8, 0x00, 0x1f, 0xd0, 0x30, 0x31, 0x13, +0x23, 0x35, 0x33, 0x2e, 0x03, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x07, 0x2e, +0x01, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x17, +0x33, 0x17, 0x15, 0x23, 0x11, 0x23, 0xd1, 0xbd, +0x98, 0x1f, 0x35, 0x26, 0x16, 0x1f, 0x36, 0x49, +0x2b, 0x21, 0x35, 0x2b, 0x21, 0x0e, 0x1b, 0x17, +0x47, 0x37, 0x4b, 0x50, 0x54, 0x54, 0x61, 0x4c, +0xa2, 0x2c, 0x01, 0x22, 0x26, 0x15, 0x30, 0x36, +0x3d, 0x23, 0x2d, 0x45, 0x2e, 0x18, 0x0f, 0x19, +0x1f, 0x0f, 0x1f, 0x1e, 0x30, 0x4f, 0x41, 0x41, +0x6b, 0x30, 0x04, 0x22, 0xfe, 0xde, 0x00, 0x00, +0x00, 0x01, 0x00, 0x06, 0xff, 0x06, 0x01, 0x01, +0x02, 0xee, 0x00, 0x15, 0x00, 0x37, 0x00, 0xbb, +0x00, 0x10, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x07, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x0b, 0x10, 0xb8, +0x00, 0x02, 0xd0, 0xb8, 0x00, 0x07, 0x10, 0xb8, +0x00, 0x03, 0xd0, 0xb8, 0x00, 0x10, 0x10, 0xb8, +0x00, 0x14, 0xd0, 0xb8, 0x00, 0x0c, 0x10, 0xb8, +0x00, 0x15, 0xd0, 0x30, 0x31, 0x13, 0x15, 0x33, +0x15, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x37, +0x33, 0x35, 0x23, 0x35, 0x37, 0x33, 0x11, 0x33, +0x11, 0x33, 0x15, 0x9c, 0x65, 0x65, 0x24, 0x72, +0x4e, 0x24, 0x72, 0x4e, 0x24, 0x24, 0x65, 0x01, +0x4c, 0x7b, 0x21, 0xfe, 0x56, 0x01, 0xaa, 0x1d, +0x04, 0x7b, 0x1d, 0x04, 0x01, 0x81, 0xfe, 0x7f, +0x21, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x42, +0xff, 0xf4, 0x01, 0xb9, 0x02, 0xdb, 0x00, 0x0f, +0x00, 0x1f, 0x00, 0x2b, 0x00, 0x43, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, +0x1b, 0xb9, 0x00, 0x08, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x26, 0x00, 0x02, 0x00, 0x20, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x10, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x08, +0x10, 0xb9, 0x00, 0x18, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x17, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, +0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x27, +0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, 0x22, +0x06, 0x15, 0x14, 0x1e, 0x02, 0x13, 0x22, 0x26, +0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, +0x06, 0xfd, 0x2c, 0x46, 0x30, 0x19, 0x62, 0x59, +0x5a, 0x62, 0x19, 0x30, 0x46, 0x2d, 0x1f, 0x35, +0x27, 0x15, 0x51, 0x3f, 0x3e, 0x51, 0x15, 0x26, +0x35, 0x1f, 0x0f, 0x16, 0x16, 0x0f, 0x0f, 0x17, +0x17, 0x0c, 0x2b, 0x5b, 0x8e, 0x63, 0xb1, 0xbf, +0xbf, 0xb1, 0x63, 0x8e, 0x5b, 0x2b, 0x27, 0x25, +0x50, 0x80, 0x5b, 0xa4, 0xa5, 0xa6, 0xa3, 0x5b, +0x80, 0x50, 0x25, 0x01, 0x2a, 0x15, 0x11, 0x11, +0x14, 0x14, 0x11, 0x11, 0x15, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x21, 0x00, 0x00, 0x02, 0x2a, +0x02, 0xdb, 0x00, 0x2a, 0x00, 0x7a, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x14, 0x2f, +0x1b, 0xb9, 0x00, 0x14, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x18, +0x2f, 0x1b, 0xb9, 0x00, 0x18, 0x00, 0x13, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x10, 0x2f, 0x1b, 0xb9, 0x00, 0x10, 0x00, 0x05, +0x3e, 0x59, 0xb8, 0x00, 0x18, 0x10, 0xb9, 0x00, +0x1f, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x03, 0xd0, +0xb8, 0x00, 0x03, 0x2f, 0xb8, 0x00, 0x14, 0x10, +0xb8, 0x00, 0x24, 0xd0, 0xb8, 0x00, 0x08, 0xd0, +0xb8, 0x00, 0x14, 0x10, 0xb9, 0x00, 0x11, 0x00, +0x01, 0xf4, 0xb8, 0x00, 0x0d, 0xd0, 0xb8, 0x00, +0x09, 0xd0, 0xb8, 0x00, 0x10, 0x10, 0xb8, 0x00, +0x0c, 0xd0, 0xb8, 0x00, 0x18, 0x10, 0xb8, 0x00, +0x28, 0xd0, 0xb8, 0x00, 0x28, 0x2f, 0x30, 0x31, +0x01, 0x2e, 0x01, 0x23, 0x22, 0x06, 0x1d, 0x01, +0x33, 0x15, 0x23, 0x11, 0x23, 0x11, 0x23, 0x11, +0x23, 0x11, 0x23, 0x35, 0x37, 0x35, 0x34, 0x36, +0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, 0x01, 0x23, +0x22, 0x06, 0x1d, 0x01, 0x33, 0x35, 0x34, 0x36, +0x33, 0x32, 0x17, 0x02, 0x1e, 0x0e, 0x1d, 0x0e, +0x27, 0x24, 0x6f, 0x6f, 0x2c, 0xdf, 0x2c, 0x42, +0x42, 0x44, 0x3e, 0x14, 0x29, 0x14, 0x0c, 0x12, +0x22, 0x11, 0x2b, 0x2b, 0xdf, 0x3d, 0x39, 0x23, +0x23, 0x02, 0xa7, 0x08, 0x06, 0x38, 0x35, 0x68, +0x26, 0xfe, 0x46, 0x01, 0xba, 0xfe, 0x46, 0x01, +0xba, 0x22, 0x04, 0x59, 0x4b, 0x4d, 0x09, 0x09, +0x24, 0x09, 0x07, 0x3d, 0x38, 0x56, 0x6b, 0x48, +0x48, 0x10, 0x00, 0x00, 0xff, 0xff, 0x00, 0x21, +0x00, 0x00, 0x02, 0xad, 0x02, 0xdb, 0x00, 0x26, +0x02, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x26, +0x02, 0x12, 0x00, 0x00, 0xff, 0xff, 0x00, 0x21, +0xff, 0xf4, 0x02, 0xc9, 0x02, 0xdb, 0x00, 0x26, +0x02, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x29, +0x02, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x21, +0xff, 0xf4, 0x02, 0x10, 0x02, 0xdb, 0x00, 0x2e, +0x00, 0x7a, 0x00, 0x7c, 0xb8, 0x00, 0x21, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x10, 0x2f, 0x1b, 0xb9, 0x00, 0x10, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x14, 0x2f, 0x1b, 0xb9, 0x00, 0x14, 0x00, +0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0c, 0x2f, 0x1b, 0xb9, 0x00, 0x0c, +0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x03, 0xd0, +0xb8, 0x00, 0x03, 0x2f, 0xb8, 0x00, 0x10, 0x10, +0xb9, 0x00, 0x0d, 0x00, 0x01, 0xf4, 0xb8, 0x00, +0x09, 0xd0, 0xb8, 0x00, 0x14, 0x10, 0xb9, 0x00, +0x1a, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x10, 0x10, +0xb8, 0x00, 0x1f, 0xd0, 0xb8, 0x00, 0x23, 0xd0, +0xb8, 0x00, 0x09, 0x10, 0xb8, 0x00, 0x24, 0xd0, +0xb8, 0x00, 0x03, 0x10, 0xb9, 0x00, 0x2b, 0x00, +0x01, 0xf4, 0x30, 0x31, 0x25, 0x0e, 0x01, 0x23, +0x22, 0x2e, 0x02, 0x35, 0x11, 0x23, 0x11, 0x23, +0x11, 0x23, 0x35, 0x37, 0x35, 0x34, 0x36, 0x33, +0x32, 0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, 0x06, +0x1d, 0x01, 0x33, 0x37, 0x33, 0x15, 0x33, 0x15, +0x23, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, +0x37, 0x02, 0x10, 0x15, 0x2b, 0x0f, 0x23, 0x2d, +0x1c, 0x0b, 0xbb, 0x2c, 0x42, 0x42, 0x3e, 0x39, +0x23, 0x23, 0x0c, 0x0f, 0x1d, 0x0e, 0x26, 0x25, +0xbc, 0x06, 0x25, 0x8c, 0x8c, 0x07, 0x12, 0x20, +0x19, 0x0e, 0x21, 0x0d, 0x06, 0x08, 0x0a, 0x15, +0x26, 0x36, 0x20, 0x01, 0x35, 0xfe, 0x46, 0x01, +0xba, 0x22, 0x04, 0x6b, 0x48, 0x48, 0x10, 0x24, +0x08, 0x06, 0x38, 0x35, 0x68, 0x8b, 0x8b, 0x26, +0xfe, 0xc7, 0x17, 0x25, 0x1b, 0x0f, 0x09, 0x06, +0x00, 0x01, 0x00, 0x21, 0xff, 0xf4, 0x03, 0x1b, +0x02, 0xdb, 0x00, 0x42, 0x00, 0xd3, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x28, 0x2f, +0x1b, 0xb9, 0x00, 0x28, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x18, +0x2f, 0x1b, 0xb9, 0x00, 0x18, 0x00, 0x13, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x2a, 0x2f, 0x1b, 0xb9, 0x00, 0x2a, 0x00, 0x13, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x13, 0x2f, 0x1b, 0xb9, 0x00, 0x13, 0x00, +0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x23, 0x2f, 0x1b, 0xb9, 0x00, 0x23, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x32, 0x2f, 0x1b, 0xb9, 0x00, +0x32, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x36, 0x2f, 0x1b, 0xb9, +0x00, 0x36, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, 0x2f, 0x1b, +0xb9, 0x00, 0x03, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x36, 0x10, 0xb9, 0x00, 0x09, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0a, 0xd0, 0xb8, 0x00, 0x0d, +0xd0, 0xb8, 0x00, 0x0e, 0xd0, 0xb8, 0x00, 0x11, +0xd0, 0xb8, 0x00, 0x12, 0xd0, 0xb8, 0x00, 0x18, +0x10, 0xb9, 0x00, 0x1f, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x28, 0x10, 0xb9, 0x00, 0x2e, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x12, 0x10, 0xb8, 0x00, 0x38, +0xd0, 0xb8, 0x00, 0x39, 0xd0, 0xb8, 0x00, 0x03, +0x10, 0xb9, 0x00, 0x3f, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x25, 0x0e, 0x01, 0x23, 0x22, 0x2e, 0x02, +0x35, 0x11, 0x23, 0x11, 0x23, 0x11, 0x23, 0x11, +0x23, 0x11, 0x23, 0x35, 0x37, 0x35, 0x34, 0x36, +0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, 0x01, 0x23, +0x22, 0x06, 0x1d, 0x01, 0x33, 0x35, 0x34, 0x36, +0x33, 0x32, 0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, +0x06, 0x1d, 0x01, 0x33, 0x37, 0x33, 0x15, 0x33, +0x15, 0x23, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, +0x36, 0x37, 0x03, 0x1b, 0x15, 0x2b, 0x0f, 0x23, +0x2d, 0x1c, 0x0b, 0xbb, 0x2c, 0xdf, 0x2c, 0x42, +0x42, 0x44, 0x3e, 0x14, 0x29, 0x14, 0x0c, 0x12, +0x22, 0x11, 0x2b, 0x2b, 0xdf, 0x3d, 0x39, 0x23, +0x23, 0x0c, 0x0e, 0x1d, 0x0e, 0x27, 0x24, 0xbc, +0x06, 0x25, 0x8b, 0x8b, 0x07, 0x12, 0x20, 0x19, +0x0e, 0x21, 0x0d, 0x06, 0x08, 0x0a, 0x15, 0x26, +0x36, 0x20, 0x01, 0x35, 0xfe, 0x46, 0x01, 0xba, +0xfe, 0x46, 0x01, 0xba, 0x22, 0x04, 0x59, 0x4b, +0x4d, 0x09, 0x09, 0x24, 0x09, 0x07, 0x3d, 0x38, +0x56, 0x6b, 0x48, 0x48, 0x10, 0x24, 0x08, 0x06, +0x38, 0x35, 0x68, 0x8b, 0x8b, 0x26, 0xfe, 0xc7, +0x17, 0x25, 0x1b, 0x0f, 0x09, 0x06, 0x00, 0x00, +0x00, 0x01, 0x00, 0x2b, 0x00, 0x00, 0x01, 0x0c, +0x02, 0x93, 0x00, 0x0b, 0x00, 0x3d, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, +0x1b, 0xb9, 0x00, 0x04, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, +0x2f, 0x1b, 0xb9, 0x00, 0x0b, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x09, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x00, 0xd0, 0xb8, 0x00, 0x04, 0x10, 0xb9, +0x00, 0x06, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x03, +0xd0, 0x30, 0x31, 0x37, 0x33, 0x11, 0x23, 0x35, +0x33, 0x15, 0x23, 0x11, 0x33, 0x15, 0x23, 0x2b, +0x5a, 0x5a, 0xe1, 0x59, 0x59, 0xe1, 0x28, 0x02, +0x43, 0x28, 0x28, 0xfd, 0xbd, 0x28, 0x00, 0x00, +0xff, 0xff, 0x00, 0x2b, 0x00, 0x00, 0x01, 0x0c, +0x03, 0x54, 0x02, 0x26, 0x02, 0x09, 0x00, 0x00, +0x00, 0x07, 0x07, 0x22, 0x00, 0x9d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x2b, 0x00, 0x00, 0x01, 0x0d, +0x03, 0x54, 0x02, 0x26, 0x02, 0x09, 0x00, 0x00, +0x00, 0x07, 0x07, 0x25, 0x00, 0x9d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x16, 0x00, 0x00, 0x01, 0x24, +0x03, 0x47, 0x02, 0x26, 0x02, 0x09, 0x00, 0x00, +0x00, 0x07, 0x07, 0x28, 0x00, 0x9d, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x01, 0x42, +0x03, 0x42, 0x02, 0x26, 0x02, 0x09, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2a, 0x00, 0x9d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x17, 0x00, 0x00, 0x01, 0x23, +0x03, 0x1e, 0x02, 0x26, 0x02, 0x09, 0x00, 0x00, +0x00, 0x07, 0x07, 0x36, 0x00, 0x9d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x21, 0x00, 0x00, 0x01, 0x19, +0x03, 0x0b, 0x02, 0x26, 0x02, 0x09, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2c, 0x00, 0x9d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x2b, 0x00, 0x00, 0x01, 0x0c, +0x03, 0x21, 0x02, 0x26, 0x02, 0x09, 0x00, 0x00, +0x00, 0x07, 0x07, 0x34, 0x00, 0x9d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x16, 0x00, 0x00, 0x01, 0x24, +0x03, 0x49, 0x02, 0x26, 0x02, 0x09, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3e, 0x00, 0x9d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x2b, 0x00, 0x00, 0x01, 0x0c, +0x03, 0x5f, 0x02, 0x26, 0x02, 0x09, 0x00, 0x00, +0x00, 0x07, 0x07, 0x38, 0x00, 0x9d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x2b, 0xff, 0x3e, 0x01, 0x0c, +0x02, 0x93, 0x02, 0x26, 0x02, 0x09, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x00, 0x9f, 0xfc, 0xea, +0x00, 0x01, 0x00, 0x2b, 0xff, 0x33, 0x01, 0x0c, +0x02, 0x93, 0x00, 0x1e, 0x00, 0x55, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0c, 0x2f, +0x1b, 0xb9, 0x00, 0x0c, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, +0x2f, 0x1b, 0xb9, 0x00, 0x07, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x19, 0x00, 0x00, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x07, 0x10, 0xb9, 0x00, 0x08, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0c, 0x10, 0xb9, +0x00, 0x0b, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0e, +0xd0, 0xb8, 0x00, 0x08, 0x10, 0xb8, 0x00, 0x11, +0xd0, 0xb8, 0x00, 0x07, 0x10, 0xb8, 0x00, 0x12, +0xd0, 0x30, 0x31, 0x17, 0x22, 0x26, 0x35, 0x34, +0x36, 0x37, 0x23, 0x35, 0x33, 0x11, 0x23, 0x35, +0x33, 0x15, 0x23, 0x11, 0x33, 0x15, 0x23, 0x0e, +0x01, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x17, +0x0e, 0x01, 0xa2, 0x23, 0x31, 0x27, 0x1a, 0x64, +0x5a, 0x5a, 0xe1, 0x59, 0x59, 0x53, 0x20, 0x24, +0x1f, 0x14, 0x17, 0x14, 0x10, 0x0b, 0x25, 0xcd, +0x28, 0x2a, 0x26, 0x3f, 0x16, 0x28, 0x02, 0x43, +0x28, 0x28, 0xfd, 0xbd, 0x28, 0x18, 0x3d, 0x1f, +0x1a, 0x1a, 0x0e, 0x1b, 0x0a, 0x0e, 0x00, 0x00, +0xff, 0xff, 0x00, 0x15, 0x00, 0x00, 0x01, 0x25, +0x03, 0x47, 0x02, 0x26, 0x02, 0x09, 0x00, 0x00, +0x00, 0x07, 0x07, 0x31, 0x00, 0x9d, 0x00, 0x00, +0x00, 0x01, 0x00, 0x61, 0xff, 0x64, 0x02, 0x1b, +0x02, 0x93, 0x00, 0x1f, 0x00, 0x53, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x14, 0x2f, +0x1b, 0xb9, 0x00, 0x14, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x13, +0x2f, 0x1b, 0xb9, 0x00, 0x13, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x13, 0x10, 0xb8, +0x00, 0x0b, 0xd0, 0xba, 0x00, 0x0d, 0x00, 0x14, +0x00, 0x13, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x14, +0x10, 0xb8, 0x00, 0x1c, 0xd0, 0xba, 0x00, 0x17, +0x00, 0x1c, 0x00, 0x0a, 0x11, 0x12, 0x39, 0x30, +0x31, 0x05, 0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, +0x33, 0x32, 0x36, 0x35, 0x23, 0x01, 0x27, 0x23, +0x1e, 0x01, 0x15, 0x11, 0x23, 0x11, 0x33, 0x01, +0x17, 0x33, 0x2e, 0x01, 0x35, 0x11, 0x33, 0x11, +0x14, 0x01, 0xb0, 0x11, 0x22, 0x0b, 0x0a, 0x09, +0x1b, 0x0f, 0x28, 0x18, 0x04, 0xfe, 0xea, 0x4a, +0x04, 0x02, 0x04, 0x2c, 0x30, 0x01, 0x16, 0x4a, +0x04, 0x02, 0x04, 0x2c, 0x9c, 0x08, 0x05, 0x27, +0x03, 0x06, 0x3c, 0x35, 0x01, 0xd1, 0x83, 0x30, +0x5b, 0x30, 0xfe, 0x67, 0x02, 0x93, 0xfe, 0x2f, +0x83, 0x30, 0x60, 0x30, 0x01, 0x94, 0xfd, 0x5e, +0x8d, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc4, 0x01, 0xec, 0x02, 0x06, +0x01, 0xc8, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc4, 0x02, 0xf2, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x21, +0x01, 0x11, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc4, 0x02, 0xf2, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x24, +0x01, 0x11, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc4, 0x02, 0xe1, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x27, +0x01, 0x11, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc4, 0x02, 0xc6, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x29, +0x01, 0x11, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc4, 0x02, 0xa0, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x35, +0x01, 0x11, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc4, 0x02, 0x82, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2b, +0x01, 0x11, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc4, 0x02, 0xd3, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2f, +0x01, 0x11, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc4, 0x02, 0xe3, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x39, +0x01, 0x11, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc4, 0x02, 0xe1, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3d, +0x01, 0x11, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0x3e, 0x01, 0xc4, 0x01, 0xec, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x12, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc4, 0x02, 0xe5, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x37, +0x01, 0x11, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xe2, 0x03, 0x03, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x76, +0x01, 0x11, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2e, +0xff, 0xf4, 0x01, 0xc4, 0x03, 0x03, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x78, +0x01, 0x11, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc7, 0x03, 0x08, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x7a, +0x01, 0x11, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc4, 0x03, 0x11, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x7c, +0x01, 0x11, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0x3e, 0x01, 0xc4, 0x02, 0xe1, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x27, 0x07, 0x27, +0x01, 0x11, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x12, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc4, 0x03, 0x21, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x7e, +0x01, 0x11, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc4, 0x03, 0x21, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x80, +0x01, 0x11, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc4, 0x03, 0x39, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x82, +0x01, 0x11, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xc4, 0x03, 0x11, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x84, +0x01, 0x11, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0x3e, 0x01, 0xc4, 0x02, 0xd3, 0x02, 0x26, +0x01, 0xc8, 0x00, 0x00, 0x00, 0x27, 0x07, 0x2f, +0x01, 0x11, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x12, 0xfc, 0xea, 0x00, 0x02, 0x00, 0x34, +0xff, 0x35, 0x01, 0xda, 0x01, 0xec, 0x00, 0x24, +0x00, 0x35, 0x00, 0x89, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, +0x00, 0x13, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, 0x2f, 0x1b, +0xb9, 0x00, 0x0b, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x1f, 0x00, 0x00, 0x00, 0x03, 0x2b, 0xb8, +0x00, 0x0b, 0x10, 0xb8, 0x00, 0x06, 0xd0, 0xba, +0x00, 0x07, 0x00, 0x0b, 0x00, 0x13, 0x11, 0x12, +0x39, 0xba, 0x00, 0x16, 0x00, 0x13, 0x00, 0x0b, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x13, 0x10, 0xb8, +0x00, 0x19, 0xd0, 0xb8, 0x00, 0x19, 0x2f, 0xb8, +0x00, 0x06, 0x10, 0xb8, 0x00, 0x1a, 0xd0, 0xb8, +0x00, 0x1a, 0x2f, 0xb8, 0x00, 0x0b, 0x10, 0xb9, +0x00, 0x25, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x07, +0x10, 0xb9, 0x00, 0x28, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x16, 0x10, 0xb9, 0x00, 0x29, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x13, 0x10, 0xb9, 0x00, 0x2c, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x05, 0x22, 0x26, +0x35, 0x34, 0x36, 0x37, 0x27, 0x23, 0x0e, 0x01, +0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, +0x32, 0x16, 0x17, 0x33, 0x37, 0x33, 0x11, 0x06, +0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x17, 0x0e, +0x01, 0x27, 0x32, 0x36, 0x37, 0x11, 0x2e, 0x01, +0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, +0x01, 0x99, 0x23, 0x2f, 0x30, 0x28, 0x05, 0x03, +0x1d, 0x4f, 0x30, 0x5b, 0x6c, 0x23, 0x3a, 0x4e, +0x2b, 0x2b, 0x41, 0x22, 0x02, 0x03, 0x27, 0x56, +0x1d, 0x14, 0x17, 0x14, 0x10, 0x0c, 0x25, 0xa8, +0x28, 0x49, 0x26, 0x26, 0x43, 0x23, 0x24, 0x3e, +0x2d, 0x1a, 0x15, 0x28, 0x3b, 0xcb, 0x28, 0x29, +0x26, 0x3e, 0x1d, 0x37, 0x1d, 0x2d, 0x81, 0x7a, +0x3a, 0x5e, 0x42, 0x23, 0x1e, 0x1c, 0x2e, 0xfe, +0x20, 0x34, 0x40, 0x1a, 0x1a, 0x0e, 0x1a, 0x0a, +0x0d, 0xe6, 0x29, 0x26, 0x01, 0x1d, 0x22, 0x1c, +0x21, 0x39, 0x4f, 0x2d, 0x30, 0x4e, 0x37, 0x1f, +0xff, 0xff, 0x00, 0x35, 0xff, 0x1b, 0x01, 0xc4, +0x01, 0xec, 0x02, 0x06, 0x01, 0xd1, 0x00, 0x00, +0xff, 0xff, 0x00, 0x35, 0xff, 0x1b, 0x01, 0xc4, +0x02, 0xf2, 0x02, 0x26, 0x01, 0xd1, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x35, 0xff, 0x1b, 0x01, 0xc4, +0x02, 0xe1, 0x02, 0x26, 0x01, 0xd1, 0x00, 0x00, +0x00, 0x07, 0x07, 0x27, 0x01, 0x17, 0x00, 0x00, +0xff, 0xff, 0x00, 0x35, 0xff, 0x1b, 0x01, 0xc4, +0x02, 0xd3, 0x02, 0x26, 0x01, 0xd1, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2f, 0x01, 0x17, 0x00, 0x00, +0xff, 0xff, 0x00, 0x35, 0xff, 0x1b, 0x01, 0xc4, +0x02, 0xa4, 0x02, 0x26, 0x01, 0xd1, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x17, 0x00, 0x00, +0xff, 0xff, 0x00, 0x35, 0xff, 0x1b, 0x01, 0xc4, +0x02, 0xe1, 0x02, 0x26, 0x01, 0xd1, 0x00, 0x00, +0x00, 0x07, 0x07, 0x55, 0x01, 0x17, 0x00, 0x00, +0xff, 0xff, 0x00, 0x35, 0xff, 0x1b, 0x01, 0xc4, +0x02, 0xe1, 0x02, 0x26, 0x01, 0xd1, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3d, 0x01, 0x17, 0x00, 0x00, +0xff, 0xff, 0x00, 0x35, 0xff, 0x1b, 0x01, 0xc4, +0x02, 0x82, 0x02, 0x26, 0x01, 0xd1, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x01, 0x17, 0x00, 0x00, +0xff, 0xff, 0x00, 0x35, 0xff, 0x1b, 0x01, 0xc4, +0x02, 0xc6, 0x02, 0x26, 0x01, 0xd1, 0x00, 0x00, +0x00, 0x07, 0x07, 0x29, 0x01, 0x17, 0x00, 0x00, +0x00, 0x01, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x88, +0x02, 0xcf, 0x00, 0x03, 0x00, 0x25, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x02, +0x2f, 0x1b, 0xb9, 0x00, 0x02, 0x00, 0x05, 0x3e, +0x59, 0x30, 0x31, 0x13, 0x33, 0x11, 0x23, 0x5c, +0x2c, 0x2c, 0x02, 0xcf, 0xfd, 0x31, 0x00, 0x00, +0xff, 0xff, 0x00, 0x43, 0x00, 0x00, 0x00, 0xdc, +0x03, 0x87, 0x02, 0x26, 0x02, 0x37, 0x00, 0x00, +0x00, 0x06, 0x07, 0x25, 0x6c, 0x33, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5c, 0x00, 0x00, 0x00, 0xed, +0x02, 0xf2, 0x00, 0x26, 0x02, 0x37, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3f, 0x00, 0xe5, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5c, 0x00, 0x00, 0x01, 0x37, +0x02, 0xcf, 0x00, 0x26, 0x02, 0x37, 0x00, 0x00, +0x00, 0x07, 0x04, 0x77, 0x00, 0x9f, 0x01, 0x22, +0xff, 0xff, 0x00, 0x1e, 0xff, 0x25, 0x00, 0xb6, +0x02, 0xcf, 0x02, 0x26, 0x02, 0x37, 0x00, 0x00, +0x00, 0x06, 0x07, 0x54, 0x72, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x4d, 0xff, 0x3e, 0x00, 0x99, +0x02, 0xcf, 0x02, 0x26, 0x02, 0x37, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x00, 0x73, 0xfc, 0xea, +0xff, 0xff, 0xff, 0xf7, 0xff, 0x3e, 0x00, 0xed, +0x03, 0x64, 0x02, 0x26, 0x02, 0x37, 0x00, 0x00, +0x00, 0x27, 0x07, 0x2b, 0x00, 0x72, 0x00, 0xe2, +0x00, 0x07, 0x07, 0x33, 0x00, 0x73, 0xfc, 0xea, +0xff, 0xff, 0xff, 0xf7, 0xff, 0x61, 0x00, 0xed, +0x02, 0xcf, 0x02, 0x26, 0x02, 0x37, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x00, 0x72, 0xfd, 0x03, +0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xd5, +0x02, 0xcf, 0x00, 0x0b, 0x00, 0x3f, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, 0x2f, +0x1b, 0xb9, 0x00, 0x07, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x02, +0x2f, 0x1b, 0xb9, 0x00, 0x02, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x06, 0x00, 0x01, 0x00, 0x03, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x03, 0x10, 0xb8, +0x00, 0x00, 0xd0, 0xb8, 0x00, 0x06, 0x10, 0xb8, +0x00, 0x09, 0xd0, 0x30, 0x31, 0x13, 0x11, 0x23, +0x11, 0x07, 0x27, 0x37, 0x11, 0x33, 0x11, 0x37, +0x17, 0x89, 0x2c, 0x41, 0x12, 0x53, 0x2c, 0x39, +0x13, 0x01, 0x84, 0xfe, 0x7c, 0x01, 0x6c, 0x2a, +0x1e, 0x36, 0x01, 0x39, 0xfe, 0xe0, 0x26, 0x1e, +0xff, 0xff, 0x00, 0x21, 0x00, 0x00, 0x01, 0xa1, +0x02, 0xdb, 0x00, 0x26, 0x00, 0x23, 0x00, 0x00, +0x00, 0x07, 0x02, 0x37, 0x01, 0x19, 0x00, 0x00, +0xff, 0xff, 0x00, 0x08, 0x00, 0x00, 0x02, 0x06, +0x02, 0x93, 0x02, 0x06, 0x00, 0x04, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x02, 0x15, +0x02, 0x93, 0x02, 0x06, 0x00, 0x05, 0x00, 0x00, +0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x01, 0xc8, +0x02, 0x93, 0x00, 0x05, 0x00, 0x2f, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, +0x2f, 0x1b, 0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x02, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, 0x21, 0x15, +0x21, 0x11, 0x23, 0x61, 0x01, 0x67, 0xfe, 0xc7, +0x2e, 0x02, 0x93, 0x28, 0xfd, 0x95, 0x00, 0x00, +0x00, 0x02, 0x00, 0x1b, 0x00, 0x00, 0x02, 0x12, +0x02, 0x93, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x35, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x01, 0x2f, 0x1b, 0xb9, 0x00, 0x01, 0x00, 0x11, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x04, 0x2f, 0x1b, 0xb9, 0x00, 0x04, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x06, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x09, 0x00, 0x01, 0x00, 0x04, +0x11, 0x12, 0x39, 0x30, 0x31, 0x37, 0x13, 0x33, +0x13, 0x15, 0x21, 0x25, 0x03, 0x27, 0x23, 0x07, +0x03, 0x1b, 0xe4, 0x30, 0xe3, 0xfe, 0x09, 0x01, +0xc4, 0x7a, 0x4c, 0x04, 0x4d, 0x7a, 0x1b, 0x02, +0x78, 0xfd, 0x88, 0x1b, 0x28, 0x01, 0x5a, 0xdd, +0xdd, 0xfe, 0xa6, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xd4, 0x02, 0x93, 0x02, 0x06, +0x00, 0x08, 0x00, 0x00, 0xff, 0xff, 0x00, 0x32, +0x00, 0x00, 0x01, 0xea, 0x02, 0x93, 0x02, 0x06, +0x00, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x02, 0x1e, 0x02, 0x93, 0x02, 0x06, +0x00, 0x0b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x56, 0x02, 0x9f, 0x00, 0x03, +0x00, 0x17, 0x00, 0x2b, 0x00, 0x43, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0e, 0x2f, +0x1b, 0xb9, 0x00, 0x0e, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, +0x2f, 0x1b, 0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x04, 0x10, 0xb9, +0x00, 0x18, 0x00, 0x02, 0xf4, 0xb8, 0x00, 0x0e, +0x10, 0xb9, 0x00, 0x22, 0x00, 0x02, 0xf4, 0x30, +0x31, 0x13, 0x33, 0x15, 0x23, 0x13, 0x22, 0x2e, +0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, +0x02, 0x15, 0x14, 0x0e, 0x02, 0x27, 0x32, 0x3e, +0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, +0x02, 0x15, 0x14, 0x1e, 0x02, 0xcd, 0xf2, 0xf2, +0x79, 0x3b, 0x64, 0x48, 0x28, 0x28, 0x48, 0x64, +0x3b, 0x3c, 0x64, 0x48, 0x28, 0x28, 0x48, 0x64, +0x3c, 0x32, 0x52, 0x3b, 0x20, 0x20, 0x3b, 0x52, +0x32, 0x32, 0x53, 0x3a, 0x20, 0x20, 0x3a, 0x53, +0x01, 0x72, 0x28, 0xfe, 0xaa, 0x31, 0x5a, 0x7f, +0x4e, 0x4e, 0x7d, 0x59, 0x2f, 0x2f, 0x59, 0x7d, +0x4e, 0x4e, 0x7f, 0x5a, 0x31, 0x2a, 0x2b, 0x4f, +0x6f, 0x45, 0x44, 0x6e, 0x4d, 0x2a, 0x2a, 0x4d, +0x6e, 0x44, 0x45, 0x6f, 0x4f, 0x2b, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x00, 0x8f, +0x02, 0x93, 0x02, 0x06, 0x00, 0x0c, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x02, 0x24, +0x02, 0x93, 0x02, 0x06, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x01, 0xe7, +0x02, 0x93, 0x00, 0x11, 0x00, 0x33, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x11, +0x2f, 0x1b, 0xb9, 0x00, 0x11, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x03, 0xd0, 0xba, 0x00, 0x0a, +0x00, 0x00, 0x00, 0x03, 0x11, 0x12, 0x39, 0x30, +0x31, 0x13, 0x33, 0x13, 0x23, 0x03, 0x2e, 0x03, +0x27, 0x23, 0x0e, 0x03, 0x07, 0x03, 0x23, 0xdc, +0x31, 0xda, 0x31, 0x7a, 0x09, 0x11, 0x11, 0x11, +0x0a, 0x04, 0x0a, 0x11, 0x10, 0x11, 0x09, 0x7a, +0x2f, 0x02, 0x93, 0xfd, 0x6d, 0x01, 0x81, 0x1e, +0x37, 0x34, 0x36, 0x1e, 0x1e, 0x36, 0x34, 0x37, +0x1e, 0xfe, 0x7f, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x02, 0x61, 0x02, 0x93, 0x02, 0x06, +0x00, 0x10, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x02, 0x1b, 0x02, 0x93, 0x02, 0x06, +0x00, 0x11, 0x00, 0x00, 0x00, 0x03, 0x00, 0x2f, +0x00, 0x00, 0x01, 0xd0, 0x02, 0x93, 0x00, 0x03, +0x00, 0x07, 0x00, 0x0b, 0x00, 0x43, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, +0x1b, 0xb9, 0x00, 0x08, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x02, +0x2f, 0x1b, 0xb9, 0x00, 0x02, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x05, 0x00, 0x01, 0x00, 0x06, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x02, 0x10, 0xb9, +0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x08, +0x10, 0xb9, 0x00, 0x0a, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x37, 0x21, 0x15, 0x21, 0x13, 0x21, 0x15, +0x21, 0x03, 0x21, 0x15, 0x21, 0x2f, 0x01, 0xa1, +0xfe, 0x5f, 0x4e, 0x01, 0x04, 0xfe, 0xfc, 0x44, +0x01, 0x8d, 0xfe, 0x73, 0x28, 0x28, 0x01, 0x72, +0x28, 0x01, 0x49, 0x28, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x56, 0x02, 0x9f, 0x02, 0x06, +0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x61, +0x00, 0x00, 0x02, 0x19, 0x02, 0x93, 0x00, 0x07, +0x00, 0x40, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x02, 0x2f, 0x1b, 0xb9, 0x00, +0x02, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x06, 0x2f, 0x1b, 0xb9, +0x00, 0x06, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x10, 0xb9, 0x00, 0x04, 0x00, 0x01, 0xf4, +0x30, 0x31, 0x13, 0x21, 0x11, 0x23, 0x11, 0x21, +0x11, 0x23, 0x61, 0x01, 0xb8, 0x2e, 0xfe, 0xa4, +0x2e, 0x02, 0x93, 0xfd, 0x6d, 0x02, 0x6b, 0xfd, +0x95, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xf6, 0x02, 0x93, 0x02, 0x06, +0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2f, +0x00, 0x00, 0x01, 0xed, 0x02, 0x93, 0x00, 0x0b, +0x00, 0x39, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, 0x03, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0a, 0x2f, 0x1b, 0xb9, 0x00, +0x0a, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x03, +0x10, 0xb9, 0x00, 0x05, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x0a, 0x10, 0xb9, 0x00, 0x08, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x37, 0x13, 0x03, 0x35, 0x21, +0x15, 0x21, 0x13, 0x03, 0x21, 0x15, 0x21, 0x2f, +0xf0, 0xeb, 0x01, 0x9a, 0xfe, 0xa2, 0xdf, 0xe3, +0x01, 0x81, 0xfe, 0x42, 0x1b, 0x01, 0x34, 0x01, +0x29, 0x1b, 0x28, 0xfe, 0xe5, 0xfe, 0xd8, 0x28, +0xff, 0xff, 0x00, 0x1d, 0x00, 0x00, 0x01, 0xef, +0x02, 0x93, 0x02, 0x06, 0x00, 0x17, 0x00, 0x00, +0xff, 0xff, 0x00, 0x03, 0x00, 0x00, 0x01, 0xbc, +0x02, 0x93, 0x02, 0x06, 0x00, 0x1c, 0x00, 0x00, +0x00, 0x03, 0x00, 0x30, 0xff, 0xea, 0x02, 0x87, +0x02, 0xa9, 0x00, 0x0a, 0x00, 0x15, 0x00, 0x2f, +0x00, 0x41, 0x00, 0x7d, 0xb8, 0x00, 0x22, 0x2f, +0x18, 0xb8, 0x00, 0x2e, 0x2f, 0xbb, 0x00, 0x0b, +0x00, 0x01, 0x00, 0x2d, 0x00, 0x04, 0x2b, 0xbb, +0x00, 0x15, 0x00, 0x01, 0x00, 0x23, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x15, 0x10, 0xb8, 0x00, 0x00, +0xd0, 0xb8, 0x00, 0x0b, 0x10, 0xb8, 0x00, 0x0a, +0xd0, 0xb8, 0x00, 0x2d, 0x10, 0xb8, 0x00, 0x16, +0xd0, 0xb8, 0x00, 0x23, 0x10, 0xb8, 0x00, 0x20, +0xd0, 0x30, 0x31, 0x25, 0x3e, 0x03, 0x35, 0x34, +0x2e, 0x02, 0x27, 0x23, 0x0e, 0x03, 0x15, 0x14, +0x1e, 0x02, 0x17, 0x13, 0x1e, 0x03, 0x15, 0x14, +0x0e, 0x02, 0x07, 0x15, 0x23, 0x35, 0x2e, 0x03, +0x35, 0x34, 0x3e, 0x02, 0x37, 0x35, 0x33, 0x01, +0x71, 0x35, 0x56, 0x3c, 0x20, 0x20, 0x3c, 0x56, +0x35, 0x2b, 0x35, 0x56, 0x3c, 0x20, 0x20, 0x3c, +0x56, 0x35, 0x2b, 0x3f, 0x67, 0x48, 0x28, 0x28, +0x48, 0x67, 0x3f, 0x2b, 0x3f, 0x67, 0x48, 0x28, +0x28, 0x48, 0x67, 0x3f, 0x2b, 0x72, 0x01, 0x21, +0x39, 0x4f, 0x30, 0x30, 0x4d, 0x38, 0x1f, 0x01, +0x01, 0x1f, 0x38, 0x4d, 0x30, 0x30, 0x4f, 0x39, +0x21, 0x01, 0x01, 0xd5, 0x01, 0x24, 0x41, 0x5c, +0x39, 0x39, 0x5e, 0x42, 0x26, 0x01, 0x62, 0x62, +0x01, 0x26, 0x42, 0x5e, 0x39, 0x39, 0x5c, 0x41, +0x24, 0x01, 0x62, 0x00, 0xff, 0xff, 0x00, 0x11, +0x00, 0x00, 0x01, 0xd1, 0x02, 0x93, 0x02, 0x06, +0x00, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x46, +0x00, 0x00, 0x02, 0x56, 0x02, 0x93, 0x00, 0x15, +0x00, 0x55, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, +0x05, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x0f, +0x00, 0x0b, 0x00, 0x05, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x0f, 0x10, 0xb9, 0x00, 0x07, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x04, 0xd0, 0xb8, 0x00, 0x0b, +0x10, 0xb8, 0x00, 0x10, 0xd0, 0xb8, 0x00, 0x0f, +0x10, 0xb8, 0x00, 0x12, 0xd0, 0xb8, 0x00, 0x10, +0x10, 0xb8, 0x00, 0x15, 0xd0, 0x30, 0x31, 0x01, +0x15, 0x14, 0x06, 0x07, 0x11, 0x23, 0x11, 0x2e, +0x01, 0x3d, 0x01, 0x33, 0x15, 0x14, 0x17, 0x11, +0x33, 0x11, 0x36, 0x3d, 0x01, 0x02, 0x56, 0x7f, +0x73, 0x2d, 0x73, 0x7e, 0x2d, 0xc4, 0x2d, 0xc4, +0x02, 0x93, 0xa2, 0x79, 0x72, 0x02, 0xfe, 0xfc, +0x01, 0x04, 0x02, 0x72, 0x79, 0xa2, 0xa1, 0xc2, +0x05, 0x01, 0x68, 0xfe, 0x98, 0x03, 0xc4, 0xa1, +0x00, 0x01, 0x00, 0x2e, 0x00, 0x00, 0x02, 0x65, +0x02, 0x9f, 0x00, 0x31, 0x00, 0x57, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0c, 0x2f, +0x1b, 0xb9, 0x00, 0x0c, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x31, +0x2f, 0x1b, 0xb9, 0x00, 0x31, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x31, 0x10, 0xb8, 0x00, 0x1a, 0xd0, 0xb9, +0x00, 0x18, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x1b, +0xd0, 0xb8, 0x00, 0x1b, 0x2f, 0xb8, 0x00, 0x0c, +0x10, 0xb9, 0x00, 0x25, 0x00, 0x02, 0xf4, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x2f, 0xd0, 0xb8, +0x00, 0x2f, 0x2f, 0x30, 0x31, 0x37, 0x33, 0x35, +0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, +0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x15, +0x33, 0x15, 0x23, 0x35, 0x3e, 0x03, 0x35, 0x34, +0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, +0x1e, 0x02, 0x17, 0x15, 0x23, 0x2e, 0x8f, 0x18, +0x2f, 0x25, 0x17, 0x26, 0x47, 0x65, 0x3e, 0x3e, +0x64, 0x47, 0x26, 0x17, 0x25, 0x2f, 0x18, 0x8f, +0xd5, 0x1e, 0x37, 0x2b, 0x19, 0x1e, 0x39, 0x53, +0x35, 0x35, 0x53, 0x3a, 0x1e, 0x19, 0x2b, 0x37, +0x1e, 0xd5, 0x27, 0x04, 0x17, 0x3c, 0x4b, 0x5b, +0x37, 0x46, 0x76, 0x57, 0x31, 0x31, 0x57, 0x76, +0x46, 0x37, 0x5b, 0x4b, 0x3c, 0x17, 0x04, 0x27, +0x22, 0x15, 0x3b, 0x4d, 0x61, 0x3b, 0x3c, 0x67, +0x4c, 0x2b, 0x2b, 0x4c, 0x67, 0x3c, 0x3b, 0x61, +0x4d, 0x3b, 0x15, 0x22, 0xff, 0xff, 0x00, 0x0d, +0x00, 0x00, 0x02, 0x0c, 0x02, 0x9e, 0x00, 0x26, +0x00, 0x04, 0x06, 0x00, 0x00, 0x06, 0x03, 0x6d, +0x24, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe9, +0x00, 0x00, 0x01, 0xf4, 0x02, 0x9e, 0x00, 0x26, +0x00, 0x08, 0x20, 0x00, 0x00, 0x06, 0x03, 0x6d, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe9, +0x00, 0x00, 0x02, 0x3e, 0x02, 0x9e, 0x00, 0x26, +0x00, 0x0b, 0x20, 0x00, 0x00, 0x06, 0x03, 0x6d, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe9, +0x00, 0x00, 0x00, 0xaf, 0x02, 0x9e, 0x00, 0x26, +0x00, 0x0c, 0x20, 0x00, 0x00, 0x06, 0x03, 0x6d, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf2, +0x00, 0x00, 0x00, 0xfe, 0x03, 0x1e, 0x02, 0x26, +0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x07, 0x36, +0x78, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe9, +0xff, 0xf4, 0x02, 0x6a, 0x02, 0x9f, 0x00, 0x26, +0x00, 0x12, 0x14, 0x00, 0x00, 0x06, 0x03, 0x6d, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe9, +0x00, 0x00, 0x02, 0x18, 0x02, 0x9e, 0x00, 0x26, +0x00, 0x1c, 0x5c, 0x00, 0x00, 0x06, 0x03, 0x6d, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x03, +0x00, 0x00, 0x01, 0xbc, 0x03, 0x1e, 0x02, 0x26, +0x00, 0x1c, 0x00, 0x00, 0x00, 0x07, 0x07, 0x36, +0x00, 0xdf, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe9, +0x00, 0x00, 0x02, 0x79, 0x02, 0x9f, 0x00, 0x26, +0x02, 0x58, 0x14, 0x00, 0x00, 0x06, 0x03, 0x6d, +0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x34, +0xff, 0xf4, 0x02, 0x08, 0x01, 0xec, 0x00, 0x26, +0x00, 0x39, 0x00, 0x7f, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0a, 0x2f, 0x1b, 0xb9, +0x00, 0x0a, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, +0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x10, 0x00, 0x0a, 0x00, 0x00, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x0a, 0x10, 0xb8, 0x00, 0x12, +0xd0, 0xb8, 0x00, 0x12, 0x2f, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x21, 0xd0, 0xb8, 0x00, 0x21, +0x2f, 0xb9, 0x00, 0x1a, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x24, 0x00, 0x00, 0x00, 0x0a, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x27, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x24, 0x10, 0xb9, +0x00, 0x2c, 0x00, 0x02, 0xf4, 0xb8, 0x00, 0x10, +0x10, 0xb9, 0x00, 0x2d, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x0a, 0x10, 0xb9, 0x00, 0x32, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x17, 0x22, 0x2e, 0x02, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x17, +0x33, 0x37, 0x33, 0x0e, 0x03, 0x15, 0x14, 0x16, +0x33, 0x32, 0x36, 0x37, 0x17, 0x0e, 0x01, 0x23, +0x22, 0x26, 0x37, 0x23, 0x06, 0x27, 0x32, 0x3e, +0x02, 0x3f, 0x01, 0x2e, 0x03, 0x23, 0x22, 0x0e, +0x02, 0x15, 0x14, 0x16, 0xe8, 0x28, 0x42, 0x30, +0x1a, 0x22, 0x3a, 0x4c, 0x29, 0x18, 0x30, 0x2a, +0x22, 0x09, 0x03, 0x17, 0x2c, 0x0a, 0x15, 0x11, +0x0b, 0x1c, 0x14, 0x09, 0x12, 0x08, 0x08, 0x08, +0x18, 0x11, 0x26, 0x2f, 0x08, 0x03, 0x3b, 0x5e, +0x1c, 0x37, 0x2b, 0x1c, 0x03, 0x08, 0x0c, 0x21, +0x26, 0x28, 0x12, 0x20, 0x3b, 0x2d, 0x1c, 0x4a, +0x0c, 0x1e, 0x3c, 0x5a, 0x3c, 0x3f, 0x62, 0x44, +0x23, 0x0f, 0x22, 0x37, 0x28, 0x84, 0x33, 0x6e, +0x6b, 0x60, 0x24, 0x18, 0x1d, 0x05, 0x03, 0x24, +0x04, 0x07, 0x36, 0x36, 0x6c, 0x27, 0x1c, 0x31, +0x40, 0x24, 0x5e, 0x32, 0x3d, 0x21, 0x0b, 0x1e, +0x39, 0x54, 0x36, 0x5d, 0x6c, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x59, 0xff, 0x4c, 0x01, 0xf0, +0x02, 0xdb, 0x00, 0x1b, 0x00, 0x39, 0x00, 0x59, +0x00, 0x7d, 0xb8, 0x00, 0x39, 0x2f, 0x18, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x21, 0x2f, +0x1b, 0xb9, 0x00, 0x21, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x32, +0x2f, 0x1b, 0xb9, 0x00, 0x32, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x03, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x0b, 0x00, 0x21, 0x00, 0x32, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x0b, 0x10, 0xb9, 0x00, 0x0e, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x21, 0x10, 0xb9, +0x00, 0x18, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x29, +0x00, 0x0e, 0x00, 0x0d, 0x11, 0x12, 0x39, 0x30, +0x31, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x3e, 0x02, +0x35, 0x34, 0x26, 0x23, 0x22, 0x07, 0x27, 0x3e, +0x03, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, +0x07, 0x27, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, +0x02, 0x15, 0x14, 0x06, 0x07, 0x15, 0x1e, 0x01, +0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, +0x1e, 0x01, 0x15, 0x23, 0x84, 0x27, 0x5a, 0x2c, +0x1e, 0x35, 0x27, 0x17, 0x50, 0x52, 0x1c, 0x1c, +0x09, 0x2c, 0x3f, 0x28, 0x12, 0x13, 0x20, 0x2a, +0x18, 0x3f, 0x4b, 0x01, 0x2b, 0x16, 0x2d, 0x44, +0x2e, 0x20, 0x3b, 0x2d, 0x1b, 0x37, 0x32, 0x51, +0x57, 0x1e, 0x33, 0x44, 0x25, 0x31, 0x5d, 0x26, +0x02, 0x01, 0x2c, 0x70, 0x32, 0x23, 0x17, 0x2b, +0x3c, 0x26, 0x45, 0x5b, 0x06, 0x26, 0x0a, 0x26, +0x32, 0x37, 0x1a, 0x21, 0x31, 0x21, 0x10, 0x64, +0x64, 0x0d, 0x31, 0x52, 0x3c, 0x22, 0x15, 0x2a, +0x3e, 0x2a, 0x39, 0x59, 0x1f, 0x04, 0x09, 0x68, +0x51, 0x2e, 0x4a, 0x35, 0x1c, 0x24, 0x2a, 0x3f, +0x77, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, +0xff, 0x4c, 0x01, 0xb1, 0x01, 0xec, 0x00, 0x20, +0x00, 0x50, 0x00, 0x7d, 0xb8, 0x00, 0x00, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0a, 0x2f, 0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, 0x00, +0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x16, 0x2f, 0x1b, 0xb9, 0x00, 0x16, +0x00, 0x09, 0x3e, 0x59, 0xba, 0x00, 0x10, 0x00, +0x0b, 0x00, 0x00, 0x11, 0x12, 0x39, 0xba, 0x00, +0x1c, 0x00, 0x00, 0x00, 0x16, 0x11, 0x12, 0x39, +0x30, 0x31, 0x17, 0x3e, 0x02, 0x34, 0x35, 0x34, +0x2e, 0x02, 0x27, 0x37, 0x1e, 0x03, 0x17, 0x33, +0x3e, 0x03, 0x37, 0x33, 0x0e, 0x03, 0x07, 0x1e, +0x01, 0x15, 0x23, 0xcb, 0x01, 0x01, 0x01, 0x23, +0x38, 0x46, 0x23, 0x2b, 0x1b, 0x37, 0x30, 0x26, +0x09, 0x04, 0x1a, 0x33, 0x2a, 0x1e, 0x05, 0x2d, +0x09, 0x1e, 0x2f, 0x40, 0x2b, 0x05, 0x03, 0x2d, +0xb4, 0x11, 0x1b, 0x19, 0x1a, 0x11, 0x44, 0x9b, +0x94, 0x83, 0x2c, 0x0e, 0x23, 0x65, 0x74, 0x7c, +0x3c, 0x32, 0x69, 0x6b, 0x6c, 0x36, 0x3d, 0x6f, +0x72, 0x7a, 0x48, 0x2a, 0x60, 0x2a, 0x00, 0x00, +0x00, 0x02, 0x00, 0x3b, 0xff, 0xf4, 0x01, 0xd5, +0x02, 0xdb, 0x00, 0x11, 0x00, 0x3e, 0x00, 0x51, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x3b, 0x2f, 0x1b, 0xb9, 0x00, 0x3b, 0x00, 0x13, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x27, 0x2f, 0x1b, 0xb9, 0x00, 0x27, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x00, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x0a, 0x00, 0x3b, 0x00, 0x27, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x3b, 0x10, 0xb9, +0x00, 0x15, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x1d, +0x00, 0x27, 0x00, 0x3b, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x0a, 0x10, 0xb8, 0x00, 0x31, 0xd0, 0x30, +0x31, 0x25, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, +0x02, 0x27, 0x0e, 0x01, 0x15, 0x14, 0x1e, 0x02, +0x13, 0x2e, 0x01, 0x23, 0x22, 0x06, 0x15, 0x14, +0x1e, 0x02, 0x17, 0x1e, 0x03, 0x15, 0x14, 0x0e, +0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, +0x02, 0x37, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, +0x33, 0x32, 0x16, 0x17, 0x01, 0x0b, 0x29, 0x3b, +0x27, 0x12, 0x14, 0x21, 0x2c, 0x19, 0x5e, 0x68, +0x1b, 0x2e, 0x3a, 0xd8, 0x45, 0x59, 0x22, 0x35, +0x2f, 0x18, 0x28, 0x37, 0x1e, 0x1e, 0x3a, 0x2d, +0x1c, 0x1b, 0x34, 0x4b, 0x30, 0x26, 0x4b, 0x3b, +0x24, 0x20, 0x37, 0x4c, 0x2d, 0x1e, 0x37, 0x2b, +0x19, 0x11, 0x24, 0x37, 0x27, 0x2a, 0x5f, 0x42, +0x1b, 0x1d, 0x33, 0x44, 0x28, 0x23, 0x3a, 0x31, +0x2a, 0x13, 0x14, 0x70, 0x4f, 0x29, 0x42, 0x2f, +0x1a, 0x02, 0x71, 0x19, 0x11, 0x28, 0x19, 0x17, +0x29, 0x27, 0x28, 0x16, 0x16, 0x30, 0x3b, 0x48, +0x2e, 0x33, 0x55, 0x3c, 0x21, 0x1e, 0x37, 0x51, +0x33, 0x2e, 0x4e, 0x3d, 0x2b, 0x0b, 0x15, 0x2a, +0x2d, 0x31, 0x1c, 0x14, 0x25, 0x1c, 0x11, 0x11, +0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x34, +0xff, 0xf4, 0x01, 0x9f, 0x01, 0xec, 0x00, 0x33, +0x00, 0x65, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x11, 0x2f, 0x1b, 0xb9, 0x00, 0x11, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x20, +0x00, 0x01, 0x00, 0x27, 0x00, 0x04, 0x2b, 0xba, +0x00, 0x09, 0x00, 0x27, 0x00, 0x20, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x11, 0x10, 0xb9, 0x00, 0x18, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x20, 0x10, 0xb8, +0x00, 0x23, 0xd0, 0xb8, 0x00, 0x23, 0x2f, 0xb8, +0x00, 0x27, 0x10, 0xb8, 0x00, 0x24, 0xd0, 0xb8, +0x00, 0x24, 0x2f, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x2d, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, +0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x35, +0x2e, 0x01, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, +0x16, 0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, 0x0e, +0x02, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, +0x15, 0x26, 0x22, 0x23, 0x22, 0x06, 0x15, 0x14, +0x16, 0x33, 0x32, 0x36, 0x37, 0x17, 0x0e, 0x01, +0xf2, 0x57, 0x67, 0x11, 0x1d, 0x25, 0x14, 0x26, +0x28, 0x1b, 0x2f, 0x3d, 0x23, 0x2c, 0x49, 0x20, +0x14, 0x1f, 0x3e, 0x25, 0x19, 0x2d, 0x21, 0x14, +0x3f, 0x48, 0x0e, 0x17, 0x13, 0x15, 0x20, 0x11, +0x48, 0x4b, 0x50, 0x46, 0x2a, 0x42, 0x26, 0x16, +0x2a, 0x4e, 0x0c, 0x4e, 0x40, 0x1b, 0x29, 0x1e, +0x14, 0x05, 0x04, 0x0e, 0x3c, 0x25, 0x1f, 0x2e, +0x1f, 0x10, 0x1d, 0x19, 0x20, 0x17, 0x19, 0x0b, +0x16, 0x22, 0x17, 0x28, 0x36, 0x01, 0x02, 0x29, +0x02, 0x36, 0x30, 0x31, 0x39, 0x19, 0x20, 0x21, +0x22, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x34, +0xff, 0x49, 0x01, 0x8d, 0x02, 0xcf, 0x00, 0x2f, +0x00, 0x47, 0x00, 0x7d, 0xb8, 0x00, 0x2f, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x1a, 0x2f, 0x1b, 0xb9, 0x00, 0x1a, 0x00, 0x13, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x08, 0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x1a, 0x10, 0xb9, +0x00, 0x14, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x1c, +0xd0, 0xb8, 0x00, 0x1c, 0x2f, 0xb8, 0x00, 0x08, +0x10, 0xb9, 0x00, 0x27, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x05, 0x3e, 0x01, 0x35, 0x34, 0x2e, 0x02, +0x27, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x04, 0x37, +0x22, 0x06, 0x22, 0x06, 0x07, 0x35, 0x21, 0x15, +0x23, 0x0e, 0x03, 0x15, 0x14, 0x1e, 0x02, 0x17, +0x1e, 0x03, 0x15, 0x14, 0x06, 0x07, 0x01, 0x32, +0x1c, 0x15, 0x09, 0x1b, 0x2f, 0x25, 0x26, 0x43, +0x31, 0x1d, 0x1b, 0x2d, 0x3a, 0x40, 0x41, 0x1c, +0x18, 0x43, 0x48, 0x44, 0x19, 0x01, 0x34, 0x04, +0x2d, 0x65, 0x56, 0x38, 0x19, 0x2c, 0x3b, 0x22, +0x21, 0x33, 0x23, 0x11, 0x1a, 0x1d, 0xa2, 0x23, +0x22, 0x14, 0x0c, 0x12, 0x0e, 0x0d, 0x08, 0x07, +0x1d, 0x34, 0x50, 0x3b, 0x2a, 0x5a, 0x59, 0x56, +0x4b, 0x3e, 0x15, 0x01, 0x01, 0x01, 0x26, 0x26, +0x23, 0x6c, 0x7e, 0x85, 0x3b, 0x32, 0x44, 0x2c, +0x17, 0x06, 0x06, 0x0f, 0x15, 0x1f, 0x16, 0x14, +0x3b, 0x26, 0x00, 0x00, 0x00, 0x01, 0x00, 0x57, +0xff, 0x4c, 0x01, 0xbc, 0x01, 0xec, 0x00, 0x1c, +0x00, 0x55, 0x00, 0x7d, 0xb8, 0x00, 0x00, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x17, 0x2f, 0x1b, 0xb9, 0x00, 0x17, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0d, 0x2f, 0x1b, 0xb9, 0x00, 0x0d, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x17, 0x10, 0xb9, +0x00, 0x06, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x13, +0x00, 0x17, 0x00, 0x0d, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x13, 0x10, 0xb9, 0x00, 0x0b, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x17, 0x10, 0xb8, 0x00, 0x11, +0xd0, 0xb8, 0x00, 0x11, 0x2f, 0x30, 0x31, 0x05, +0x3e, 0x01, 0x35, 0x34, 0x26, 0x23, 0x22, 0x0e, +0x02, 0x07, 0x11, 0x23, 0x11, 0x34, 0x26, 0x27, +0x33, 0x17, 0x33, 0x3e, 0x01, 0x33, 0x32, 0x16, +0x15, 0x11, 0x23, 0x01, 0x90, 0x02, 0x01, 0x2b, +0x31, 0x18, 0x2a, 0x28, 0x2c, 0x19, 0x2c, 0x01, +0x04, 0x2b, 0x04, 0x03, 0x29, 0x56, 0x37, 0x42, +0x3b, 0x2c, 0xb4, 0x79, 0xf4, 0x75, 0x4d, 0x49, +0x0c, 0x1e, 0x32, 0x26, 0xfe, 0xbe, 0x01, 0x66, +0x1d, 0x38, 0x25, 0x6e, 0x42, 0x38, 0x5a, 0x5e, +0xfe, 0x18, 0x00, 0x00, 0x00, 0x03, 0x00, 0x42, +0xff, 0xf4, 0x01, 0xb8, 0x02, 0xdb, 0x00, 0x0a, +0x00, 0x11, 0x00, 0x21, 0x00, 0x43, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x12, 0x2f, +0x1b, 0xb9, 0x00, 0x12, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1a, +0x2f, 0x1b, 0xb9, 0x00, 0x1a, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x11, 0x00, 0x01, 0x00, 0x00, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x1a, 0x10, 0xb9, +0x00, 0x05, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x12, +0x10, 0xb9, 0x00, 0x0e, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x13, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, +0x37, 0x35, 0x2e, 0x01, 0x23, 0x22, 0x06, 0x07, +0x13, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, +0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, 0x6f, 0x01, +0x16, 0x25, 0x34, 0x1e, 0x1e, 0x33, 0x26, 0x16, +0x01, 0x03, 0x4f, 0x3c, 0x3c, 0x4f, 0x03, 0x8e, +0x59, 0x62, 0x19, 0x30, 0x46, 0x2c, 0x2c, 0x46, +0x30, 0x19, 0x62, 0x01, 0x5a, 0x57, 0x79, 0x4c, +0x23, 0x23, 0x4c, 0x79, 0x57, 0x25, 0x9b, 0x9a, +0x9a, 0x9b, 0x01, 0x5c, 0xbf, 0xb1, 0x63, 0x8e, +0x5b, 0x2b, 0x2b, 0x5b, 0x8e, 0x63, 0xb1, 0xbf, +0x00, 0x01, 0x00, 0x5c, 0xff, 0xf4, 0x00, 0xc7, +0x01, 0xe0, 0x00, 0x0e, 0x00, 0x2b, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, 0x2f, +0x1b, 0xb9, 0x00, 0x03, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x09, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x17, 0x22, 0x35, 0x11, 0x33, 0x06, 0x15, +0x14, 0x16, 0x33, 0x32, 0x37, 0x17, 0x0e, 0x01, +0x9d, 0x41, 0x2d, 0x03, 0x10, 0x0d, 0x0b, 0x12, +0x07, 0x08, 0x14, 0x0c, 0x52, 0x01, 0x9a, 0xd2, +0xce, 0x13, 0x12, 0x06, 0x24, 0x04, 0x05, 0x00, +0x00, 0x01, 0x00, 0x54, 0xff, 0xf9, 0x01, 0xd2, +0x01, 0xec, 0x00, 0x24, 0x00, 0x71, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x10, 0x2f, +0x1b, 0xb9, 0x00, 0x10, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, +0x2f, 0x1b, 0xb9, 0x00, 0x0b, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x24, 0x2f, 0x1b, 0xb9, 0x00, 0x24, 0x00, 0x05, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x10, 0x10, 0xb8, +0x00, 0x1b, 0xd0, 0xb8, 0x00, 0x1b, 0x2f, 0xba, +0x00, 0x05, 0x00, 0x00, 0x00, 0x1b, 0x11, 0x12, +0x39, 0xba, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1b, +0x11, 0x12, 0x39, 0xba, 0x00, 0x1f, 0x00, 0x1b, +0x00, 0x24, 0x11, 0x12, 0x39, 0x30, 0x31, 0x05, +0x2e, 0x03, 0x27, 0x06, 0x07, 0x0e, 0x01, 0x07, +0x15, 0x23, 0x11, 0x34, 0x26, 0x27, 0x33, 0x1e, +0x01, 0x1d, 0x01, 0x33, 0x3e, 0x03, 0x37, 0x17, +0x0e, 0x01, 0x07, 0x1e, 0x03, 0x17, 0x01, 0xa2, +0x17, 0x32, 0x31, 0x2d, 0x12, 0x22, 0x1f, 0x14, +0x0d, 0x01, 0x2a, 0x02, 0x06, 0x2c, 0x05, 0x03, +0x04, 0x1e, 0x48, 0x4e, 0x50, 0x24, 0x05, 0x2a, +0x5b, 0x30, 0x12, 0x2f, 0x36, 0x3a, 0x1d, 0x07, +0x19, 0x43, 0x49, 0x4b, 0x22, 0x2d, 0x32, 0x1d, +0x4e, 0x2a, 0x17, 0x01, 0x66, 0x1d, 0x40, 0x1d, +0x11, 0x3c, 0x1f, 0xbb, 0x36, 0x64, 0x53, 0x3a, +0x0c, 0x2b, 0x10, 0x4b, 0x39, 0x24, 0x4f, 0x50, +0x4b, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x11, +0xff, 0xf9, 0x01, 0xc3, 0x02, 0xdb, 0x00, 0x16, +0x00, 0x5b, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0c, 0x2f, 0x1b, 0xb9, 0x00, 0x0c, +0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x16, 0x2f, 0x1b, 0xb9, +0x00, 0x16, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x13, 0x2f, 0x1b, +0xb9, 0x00, 0x13, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x0c, 0x10, 0xb9, 0x00, 0x05, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x15, 0x00, 0x16, 0x00, 0x0c, +0x11, 0x12, 0x39, 0x30, 0x31, 0x33, 0x13, 0x27, +0x2e, 0x01, 0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, +0x01, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x13, 0x23, +0x03, 0x23, 0x03, 0x11, 0xd3, 0x08, 0x1b, 0x38, +0x2f, 0x13, 0x1c, 0x0b, 0x0e, 0x0e, 0x24, 0x1a, +0x20, 0x31, 0x27, 0x20, 0x11, 0xbc, 0x2d, 0x9c, +0x04, 0xb7, 0x01, 0xf0, 0x19, 0x53, 0x58, 0x0a, +0x06, 0x27, 0x06, 0x0a, 0x1c, 0x36, 0x4e, 0x33, +0xfd, 0xf8, 0x01, 0xbb, 0xfe, 0x3e, 0x00, 0x00, +0x00, 0x01, 0x00, 0x5c, 0xff, 0x4c, 0x01, 0xf8, +0x01, 0xe0, 0x00, 0x28, 0x00, 0x5f, 0x00, 0x7d, +0xb8, 0x00, 0x28, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, +0x00, 0x00, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x1f, 0x2f, 0x1b, +0xb9, 0x00, 0x1f, 0x00, 0x05, 0x3e, 0x59, 0xb9, +0x00, 0x05, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x1b, +0x00, 0x00, 0x00, 0x1f, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x1b, 0x10, 0xb9, 0x00, 0x0a, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x0b, +0xd0, 0xb8, 0x00, 0x1f, 0x10, 0xb8, 0x00, 0x18, +0xd0, 0xb8, 0x00, 0x18, 0x2f, 0xb9, 0x00, 0x12, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, 0x33, 0x11, +0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x11, +0x33, 0x0e, 0x01, 0x15, 0x14, 0x16, 0x33, 0x32, +0x37, 0x17, 0x0e, 0x01, 0x23, 0x22, 0x26, 0x35, +0x23, 0x0e, 0x01, 0x23, 0x22, 0x26, 0x27, 0x1c, +0x01, 0x1e, 0x01, 0x17, 0x23, 0x5c, 0x2c, 0x31, +0x39, 0x13, 0x25, 0x26, 0x28, 0x15, 0x2c, 0x01, +0x02, 0x11, 0x0d, 0x0b, 0x11, 0x08, 0x08, 0x14, +0x0e, 0x23, 0x1c, 0x03, 0x1f, 0x4c, 0x2c, 0x25, +0x38, 0x14, 0x01, 0x02, 0x02, 0x2d, 0x01, 0xe0, +0xfe, 0xd2, 0x48, 0x4e, 0x07, 0x17, 0x2c, 0x25, +0x01, 0x55, 0x6a, 0xcf, 0x67, 0x13, 0x12, 0x06, +0x24, 0x04, 0x05, 0x2f, 0x36, 0x34, 0x30, 0x17, +0x25, 0x29, 0x3b, 0x32, 0x31, 0x1e, 0x00, 0x00, +0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x01, 0xa7, +0x01, 0xec, 0x00, 0x16, 0x00, 0x51, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x05, 0x2f, +0x1b, 0xb9, 0x00, 0x05, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x11, +0x2f, 0x1b, 0xb9, 0x00, 0x11, 0x00, 0x09, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x0b, 0x00, 0x11, +0x00, 0x00, 0x11, 0x12, 0x39, 0x30, 0x31, 0x33, +0x2e, 0x03, 0x27, 0x37, 0x1e, 0x03, 0x17, 0x33, +0x3e, 0x03, 0x37, 0x33, 0x0e, 0x01, 0x07, 0x23, +0xc8, 0x0f, 0x27, 0x30, 0x38, 0x20, 0x2b, 0x1c, +0x35, 0x2e, 0x25, 0x0c, 0x04, 0x18, 0x30, 0x27, +0x1d, 0x05, 0x2d, 0x11, 0x5a, 0x46, 0x2e, 0x42, +0x82, 0x7b, 0x70, 0x2f, 0x0e, 0x2a, 0x6d, 0x77, +0x79, 0x37, 0x31, 0x6d, 0x70, 0x6f, 0x35, 0x7c, +0xe8, 0x7c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x23, +0xff, 0x49, 0x01, 0x96, 0x02, 0xcf, 0x00, 0x45, +0x00, 0x7f, 0x00, 0x7d, 0xb8, 0x00, 0x45, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x1f, 0x2f, 0x1b, 0xb9, 0x00, 0x1f, 0x00, 0x13, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x08, 0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x2c, 0x00, 0x01, +0x00, 0x33, 0x00, 0x04, 0x2b, 0xba, 0x00, 0x13, +0x00, 0x33, 0x00, 0x2c, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x1f, 0x10, 0xb9, 0x00, 0x19, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x1e, 0xd0, 0xb8, 0x00, 0x1e, +0x2f, 0xb8, 0x00, 0x19, 0x10, 0xb8, 0x00, 0x21, +0xd0, 0xb8, 0x00, 0x21, 0x2f, 0xb8, 0x00, 0x2c, +0x10, 0xb8, 0x00, 0x2f, 0xd0, 0xb8, 0x00, 0x2f, +0x2f, 0xb8, 0x00, 0x33, 0x10, 0xb8, 0x00, 0x30, +0xd0, 0xb8, 0x00, 0x30, 0x2f, 0xb8, 0x00, 0x08, +0x10, 0xb9, 0x00, 0x3d, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x05, 0x3e, 0x01, 0x35, 0x34, 0x2e, 0x02, +0x27, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x37, +0x35, 0x2e, 0x01, 0x35, 0x34, 0x36, 0x37, 0x22, +0x06, 0x22, 0x06, 0x07, 0x35, 0x21, 0x15, 0x23, +0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, +0x32, 0x36, 0x37, 0x15, 0x2e, 0x01, 0x23, 0x22, +0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x1e, +0x03, 0x15, 0x14, 0x06, 0x07, 0x01, 0x3b, 0x1c, +0x15, 0x0a, 0x1b, 0x2f, 0x24, 0x27, 0x45, 0x34, +0x1f, 0x19, 0x2b, 0x39, 0x20, 0x2d, 0x3f, 0x2f, +0x28, 0x17, 0x24, 0x22, 0x25, 0x18, 0x01, 0x6d, +0x70, 0x1a, 0x33, 0x27, 0x18, 0x1c, 0x2b, 0x33, +0x18, 0x12, 0x17, 0x13, 0x11, 0x1c, 0x12, 0x23, +0x44, 0x37, 0x22, 0x1c, 0x30, 0x3e, 0x22, 0x22, +0x32, 0x22, 0x11, 0x19, 0x1d, 0xa2, 0x23, 0x22, +0x14, 0x0c, 0x12, 0x0f, 0x0d, 0x07, 0x07, 0x1a, +0x2d, 0x43, 0x31, 0x26, 0x42, 0x35, 0x24, 0x08, +0x04, 0x14, 0x4a, 0x39, 0x33, 0x47, 0x14, 0x01, +0x01, 0x01, 0x26, 0x26, 0x12, 0x24, 0x34, 0x21, +0x20, 0x34, 0x25, 0x14, 0x01, 0x03, 0x2b, 0x03, +0x01, 0x17, 0x2d, 0x42, 0x2b, 0x2a, 0x38, 0x24, +0x14, 0x06, 0x06, 0x0f, 0x15, 0x1f, 0x16, 0x14, +0x3b, 0x26, 0x00, 0x00, 0x00, 0x02, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xd8, 0x01, 0xec, 0x00, 0x13, +0x00, 0x27, 0x00, 0x35, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0a, 0x2f, 0x1b, 0xb9, +0x00, 0x0a, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, +0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, 0xb9, +0x00, 0x14, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0a, +0x10, 0xb9, 0x00, 0x1e, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x05, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, +0x02, 0x27, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, +0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, +0x02, 0x01, 0x06, 0x2d, 0x4c, 0x39, 0x20, 0x20, +0x39, 0x4c, 0x2d, 0x2d, 0x4c, 0x39, 0x20, 0x20, +0x39, 0x4c, 0x2d, 0x26, 0x3d, 0x2a, 0x17, 0x17, +0x2a, 0x3d, 0x26, 0x26, 0x3d, 0x2a, 0x17, 0x17, +0x2a, 0x3d, 0x0c, 0x21, 0x41, 0x5d, 0x3c, 0x3d, +0x5e, 0x41, 0x21, 0x21, 0x41, 0x5e, 0x3d, 0x3c, +0x5d, 0x41, 0x21, 0x27, 0x1e, 0x38, 0x4e, 0x30, +0x30, 0x4f, 0x38, 0x1f, 0x1f, 0x38, 0x4f, 0x30, +0x30, 0x4e, 0x38, 0x1e, 0x00, 0x01, 0x00, 0x19, +0xff, 0xf4, 0x02, 0x13, 0x01, 0xe0, 0x00, 0x23, +0x00, 0x59, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, 0x00, 0x13, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0d, 0x2f, 0x1b, 0xb9, 0x00, +0x0d, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0xd0, 0xb8, 0x00, 0x00, 0x2f, 0xb8, 0x00, 0x13, +0x10, 0xb9, 0x00, 0x10, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x09, 0xd0, 0xb8, 0x00, 0x0d, 0x10, 0xb8, +0x00, 0x0c, 0xd0, 0xb8, 0x00, 0x0c, 0x2f, 0xb8, +0x00, 0x09, 0x10, 0xb8, 0x00, 0x16, 0xd0, 0xb8, +0x00, 0x00, 0x10, 0xb9, 0x00, 0x1d, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x05, 0x22, 0x26, 0x35, 0x34, +0x3e, 0x02, 0x37, 0x23, 0x14, 0x06, 0x07, 0x27, +0x3e, 0x01, 0x35, 0x23, 0x35, 0x37, 0x21, 0x15, +0x23, 0x0e, 0x03, 0x15, 0x14, 0x33, 0x32, 0x36, +0x37, 0x17, 0x0e, 0x01, 0x01, 0xcf, 0x2a, 0x27, +0x01, 0x02, 0x02, 0x01, 0xcf, 0x12, 0x0b, 0x2e, +0x0f, 0x13, 0x73, 0x43, 0x01, 0xb7, 0x64, 0x02, +0x03, 0x02, 0x01, 0x2e, 0x06, 0x13, 0x10, 0x07, +0x0b, 0x1a, 0x0c, 0x2d, 0x31, 0x17, 0x54, 0x64, +0x6a, 0x2d, 0x6e, 0xe4, 0x69, 0x03, 0x69, 0xe2, +0x6d, 0x24, 0x04, 0x28, 0x2f, 0x6c, 0x66, 0x54, +0x17, 0x31, 0x03, 0x03, 0x24, 0x04, 0x05, 0x00, +0x00, 0x02, 0x00, 0x58, 0xff, 0x4c, 0x01, 0xe6, +0x01, 0xec, 0x00, 0x16, 0x00, 0x29, 0x00, 0x4f, +0x00, 0x7d, 0xb8, 0x00, 0x16, 0x2f, 0x18, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x05, 0x2f, +0x1b, 0xb9, 0x00, 0x05, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, +0x2f, 0x1b, 0xb9, 0x00, 0x0d, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x10, 0x00, 0x0d, 0x00, 0x05, +0x11, 0x12, 0x39, 0xb9, 0x00, 0x17, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x05, 0x10, 0xb9, 0x00, 0x21, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x10, 0x10, 0xb9, +0x00, 0x27, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x37, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x15, 0x14, +0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x1e, 0x01, +0x14, 0x16, 0x15, 0x23, 0x37, 0x32, 0x3e, 0x02, +0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, +0x1d, 0x01, 0x1e, 0x01, 0x58, 0x20, 0x38, 0x48, +0x29, 0x62, 0x63, 0x21, 0x38, 0x47, 0x25, 0x2c, +0x4d, 0x26, 0x01, 0x01, 0x01, 0x2d, 0xc6, 0x20, +0x38, 0x2a, 0x18, 0x11, 0x25, 0x3a, 0x29, 0x1e, +0x39, 0x2b, 0x1a, 0x29, 0x4d, 0xff, 0x3b, 0x59, +0x3b, 0x1e, 0x84, 0x71, 0x3d, 0x60, 0x43, 0x23, +0x21, 0x2c, 0x23, 0x3b, 0x39, 0x3b, 0x23, 0xcf, +0x20, 0x3a, 0x51, 0x31, 0x2c, 0x4c, 0x37, 0x1f, +0x19, 0x33, 0x4e, 0x36, 0x89, 0x33, 0x1e, 0x00, +0x00, 0x02, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x06, +0x01, 0xe0, 0x00, 0x17, 0x00, 0x2b, 0x00, 0x49, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0a, 0x2f, 0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x0a, 0x10, 0xb9, +0x00, 0x22, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0f, +0xd0, 0xb8, 0x00, 0x0f, 0x2f, 0xb8, 0x00, 0x0c, +0xd0, 0xb8, 0x00, 0x0c, 0x2f, 0xb8, 0x00, 0x00, +0x10, 0xb9, 0x00, 0x18, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x05, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x21, 0x15, 0x2e, 0x01, 0x23, 0x15, +0x1e, 0x01, 0x15, 0x14, 0x0e, 0x02, 0x27, 0x32, +0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, +0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x01, 0x04, +0x2a, 0x4b, 0x39, 0x22, 0x23, 0x3a, 0x4c, 0x29, +0x01, 0x00, 0x2a, 0x4d, 0x2a, 0x32, 0x38, 0x20, +0x38, 0x49, 0x2a, 0x22, 0x3a, 0x2a, 0x18, 0x15, +0x28, 0x3a, 0x25, 0x22, 0x3c, 0x2c, 0x1a, 0x19, +0x2c, 0x3b, 0x0c, 0x20, 0x3f, 0x5c, 0x3c, 0x40, +0x5c, 0x3c, 0x1d, 0x29, 0x03, 0x04, 0x04, 0x1c, +0x6a, 0x4c, 0x3b, 0x5a, 0x3f, 0x20, 0x27, 0x1d, +0x36, 0x4d, 0x2f, 0x28, 0x4b, 0x3a, 0x22, 0x1a, +0x34, 0x4d, 0x33, 0x2f, 0x4d, 0x36, 0x1e, 0x00, +0x00, 0x01, 0x00, 0x1a, 0xff, 0xf4, 0x01, 0x9f, +0x01, 0xe0, 0x00, 0x15, 0x00, 0x3d, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, 0x2f, +0x1b, 0xb9, 0x00, 0x07, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x07, 0x10, 0xb9, 0x00, 0x04, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x09, 0xd0, 0xb8, +0x00, 0x00, 0x10, 0xb9, 0x00, 0x0f, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x05, 0x22, 0x26, 0x35, 0x11, +0x23, 0x35, 0x37, 0x21, 0x15, 0x23, 0x06, 0x14, +0x15, 0x14, 0x33, 0x32, 0x36, 0x37, 0x17, 0x0e, +0x01, 0x01, 0x13, 0x2b, 0x22, 0xac, 0x43, 0x01, +0x42, 0xad, 0x02, 0x29, 0x0b, 0x17, 0x0a, 0x08, +0x0a, 0x1f, 0x0c, 0x2d, 0x31, 0x01, 0x68, 0x22, +0x04, 0x26, 0x5e, 0xb5, 0x5b, 0x31, 0x05, 0x03, +0x24, 0x04, 0x07, 0x00, 0x00, 0x01, 0x00, 0x46, +0xff, 0xf4, 0x01, 0xb3, 0x01, 0xec, 0x00, 0x29, +0x00, 0x4d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x22, 0x2f, 0x1b, 0xb9, 0x00, 0x22, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, +0x0b, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x21, 0x2f, 0x1b, 0xb9, +0x00, 0x21, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, +0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, 0xb9, +0x00, 0x19, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, +0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, 0x35, 0x34, +0x26, 0x27, 0x33, 0x1e, 0x01, 0x15, 0x14, 0x0e, +0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, +0x02, 0x35, 0x34, 0x26, 0x27, 0x37, 0x1e, 0x01, +0x15, 0x14, 0x0e, 0x02, 0xf2, 0x24, 0x3e, 0x2d, +0x1a, 0x04, 0x02, 0x05, 0x2c, 0x05, 0x01, 0x02, +0x02, 0x02, 0x15, 0x24, 0x2f, 0x1a, 0x1e, 0x35, +0x27, 0x17, 0x12, 0x1a, 0x2c, 0x18, 0x16, 0x1f, +0x34, 0x46, 0x0c, 0x14, 0x2b, 0x45, 0x31, 0x30, +0x5d, 0x30, 0x1d, 0x38, 0x25, 0x1a, 0x33, 0x1f, +0x18, 0x35, 0x36, 0x33, 0x15, 0x28, 0x37, 0x21, +0x0e, 0x19, 0x33, 0x4d, 0x35, 0x3c, 0x78, 0x43, +0x0c, 0x42, 0x7f, 0x42, 0x3d, 0x5c, 0x3d, 0x1f, +0x00, 0x03, 0x00, 0x34, 0xff, 0x4c, 0x02, 0x53, +0x02, 0x6b, 0x00, 0x0a, 0x00, 0x15, 0x00, 0x2f, +0x00, 0x59, 0x00, 0x7d, 0xb8, 0x00, 0x22, 0x2f, +0x18, 0x7c, 0xb8, 0x00, 0x2f, 0x2f, 0x18, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x2d, 0x2f, +0x1b, 0xb9, 0x00, 0x2d, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x23, +0x2f, 0x1b, 0xb9, 0x00, 0x23, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x15, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x00, 0xd0, 0xb8, 0x00, 0x2d, 0x10, 0xb9, +0x00, 0x0b, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0a, +0xd0, 0xb8, 0x00, 0x2d, 0x10, 0xb8, 0x00, 0x16, +0xd0, 0xb8, 0x00, 0x23, 0x10, 0xb8, 0x00, 0x20, +0xd0, 0x30, 0x31, 0x25, 0x3e, 0x03, 0x35, 0x34, +0x2e, 0x02, 0x27, 0x23, 0x0e, 0x03, 0x15, 0x14, +0x1e, 0x02, 0x17, 0x13, 0x1e, 0x03, 0x15, 0x14, +0x0e, 0x02, 0x07, 0x15, 0x23, 0x35, 0x2e, 0x03, +0x35, 0x34, 0x3e, 0x02, 0x37, 0x35, 0x33, 0x01, +0x59, 0x29, 0x4a, 0x37, 0x21, 0x1f, 0x36, 0x4b, +0x2b, 0x2b, 0x29, 0x4a, 0x38, 0x21, 0x21, 0x38, +0x4a, 0x29, 0x2b, 0x32, 0x5a, 0x45, 0x29, 0x2a, +0x46, 0x5a, 0x30, 0x2b, 0x30, 0x5a, 0x46, 0x2a, +0x2a, 0x46, 0x5a, 0x30, 0x2b, 0x1a, 0x01, 0x20, +0x37, 0x4f, 0x30, 0x30, 0x4e, 0x37, 0x1f, 0x01, +0x01, 0x1f, 0x37, 0x4e, 0x30, 0x30, 0x4f, 0x37, +0x20, 0x01, 0x01, 0xd0, 0x01, 0x22, 0x3f, 0x5c, +0x3b, 0x3b, 0x5d, 0x40, 0x22, 0x01, 0xaa, 0xaa, +0x01, 0x22, 0x40, 0x5d, 0x3b, 0x3b, 0x5c, 0x3f, +0x22, 0x01, 0x81, 0x00, 0x00, 0x01, 0x00, 0x0a, +0xff, 0x40, 0x01, 0xc9, 0x01, 0xec, 0x00, 0x0d, +0x00, 0x82, 0x00, 0x7d, 0xb8, 0x00, 0x00, 0x2f, +0x18, 0x7d, 0xb8, 0x00, 0x09, 0x2f, 0x18, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x02, 0x2f, +0x1b, 0xb9, 0x00, 0x02, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, +0x2f, 0x1b, 0xb9, 0x00, 0x03, 0x00, 0x09, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, 0x09, +0x3e, 0x59, 0xba, 0x00, 0x04, 0x00, 0x03, 0x00, +0x00, 0x11, 0x12, 0x39, 0xba, 0x00, 0x0b, 0x00, +0x06, 0x00, 0x09, 0x11, 0x12, 0x39, 0xba, 0x00, +0x01, 0x00, 0x04, 0x00, 0x0b, 0x11, 0x12, 0x39, +0xba, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x04, 0x11, +0x12, 0x39, 0xb8, 0x00, 0x09, 0x10, 0xb8, 0x00, +0x0a, 0xd0, 0xb8, 0x00, 0x0a, 0x2f, 0xb8, 0x00, +0x00, 0x10, 0xb8, 0x00, 0x0d, 0xd0, 0xb8, 0x00, +0x0d, 0x2f, 0x30, 0x31, 0x17, 0x13, 0x03, 0x37, +0x13, 0x33, 0x13, 0x33, 0x03, 0x13, 0x07, 0x03, +0x23, 0x03, 0x0a, 0xc3, 0xbe, 0x2c, 0xa7, 0x04, +0x92, 0x30, 0xad, 0xce, 0x2a, 0xb9, 0x04, 0xad, +0xb4, 0x01, 0x56, 0x01, 0x3c, 0x0e, 0xfe, 0xe0, +0x01, 0x14, 0xfe, 0xc3, 0xfe, 0xac, 0x0f, 0x01, +0x3c, 0xfe, 0xc4, 0x00, 0x00, 0x01, 0x00, 0x46, +0xff, 0x4c, 0x02, 0x4e, 0x02, 0x6b, 0x00, 0x29, +0x00, 0x65, 0x00, 0x7c, 0xb8, 0x00, 0x1f, 0x2f, +0x18, 0x7d, 0xb8, 0x00, 0x0a, 0x2f, 0x18, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x12, +0x2f, 0x1b, 0xb9, 0x00, 0x12, 0x00, 0x09, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x29, 0x2f, 0x1b, 0xb9, 0x00, 0x29, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x08, 0xd0, 0xb8, +0x00, 0x0b, 0x10, 0xb9, 0x00, 0x1e, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x21, 0xd0, 0x30, 0x31, 0x01, +0x1e, 0x03, 0x15, 0x14, 0x06, 0x07, 0x15, 0x23, +0x35, 0x2e, 0x01, 0x3d, 0x01, 0x34, 0x26, 0x27, +0x33, 0x1e, 0x01, 0x15, 0x14, 0x06, 0x14, 0x06, +0x15, 0x14, 0x16, 0x17, 0x11, 0x33, 0x11, 0x3e, +0x01, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x02, 0x1f, +0x0c, 0x12, 0x0c, 0x05, 0x83, 0x72, 0x2a, 0x70, +0x74, 0x01, 0x04, 0x2c, 0x03, 0x02, 0x01, 0x01, +0x5f, 0x5b, 0x2a, 0x5f, 0x68, 0x04, 0x0a, 0x11, +0x0d, 0x01, 0xec, 0x20, 0x39, 0x38, 0x39, 0x21, +0x7f, 0x8a, 0x04, 0xa8, 0xa8, 0x01, 0x77, 0x6a, +0x90, 0x1d, 0x38, 0x25, 0x1a, 0x33, 0x1f, 0x17, +0x2f, 0x2b, 0x23, 0x0a, 0x59, 0x61, 0x01, 0x02, +0x50, 0xfd, 0xb0, 0x03, 0x73, 0x70, 0x1e, 0x34, +0x35, 0x37, 0x21, 0x00, 0x00, 0x01, 0x00, 0x3a, +0xff, 0xf4, 0x02, 0x68, 0x01, 0xec, 0x00, 0x3f, +0x00, 0x4d, 0x00, 0xb8, 0x00, 0x0b, 0x2f, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0a, 0x2f, +0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x15, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x26, 0xd0, 0xb8, 0x00, 0x0a, 0x10, 0xb8, +0x00, 0x2f, 0xd0, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x39, 0xd0, 0xba, 0x00, 0x3d, 0x00, 0x0a, +0x00, 0x00, 0x11, 0x12, 0x39, 0x30, 0x31, 0x17, +0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, +0x17, 0x0e, 0x03, 0x15, 0x14, 0x1e, 0x02, 0x33, +0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x27, 0x33, +0x0e, 0x01, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, +0x36, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x37, 0x1e, +0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, +0x27, 0x23, 0x0e, 0x01, 0xd3, 0x1f, 0x38, 0x2a, +0x18, 0x0f, 0x1a, 0x23, 0x15, 0x26, 0x16, 0x22, +0x18, 0x0c, 0x12, 0x1f, 0x29, 0x17, 0x13, 0x24, +0x1c, 0x12, 0x02, 0x03, 0x34, 0x03, 0x02, 0x12, +0x1d, 0x25, 0x12, 0x30, 0x3f, 0x0b, 0x15, 0x20, +0x16, 0x27, 0x15, 0x22, 0x19, 0x0d, 0x17, 0x28, +0x39, 0x21, 0x27, 0x44, 0x11, 0x04, 0x11, 0x43, +0x0c, 0x1c, 0x38, 0x55, 0x3a, 0x2b, 0x4c, 0x43, +0x3e, 0x1d, 0x16, 0x1e, 0x39, 0x3e, 0x46, 0x2b, +0x2d, 0x43, 0x2e, 0x17, 0x0d, 0x20, 0x35, 0x28, +0x1c, 0x41, 0x25, 0x25, 0x41, 0x1c, 0x28, 0x35, +0x20, 0x0d, 0x5a, 0x63, 0x29, 0x43, 0x3c, 0x38, +0x20, 0x14, 0x1e, 0x3c, 0x42, 0x4a, 0x2d, 0x3b, +0x57, 0x38, 0x1b, 0x2a, 0x2b, 0x2b, 0x2a, 0x00, +0x00, 0x01, 0x00, 0x34, 0xff, 0x4f, 0x01, 0x84, +0x01, 0xec, 0x00, 0x2b, 0x00, 0x2e, 0x00, 0x7d, +0xb8, 0x00, 0x2b, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x10, 0x2f, 0x1b, 0xb9, +0x00, 0x10, 0x00, 0x09, 0x3e, 0x59, 0xbb, 0x00, +0x23, 0x00, 0x01, 0x00, 0x06, 0x00, 0x04, 0x2b, +0xb8, 0x00, 0x10, 0x10, 0xb9, 0x00, 0x19, 0x00, +0x01, 0xf4, 0x30, 0x31, 0x05, 0x3e, 0x01, 0x35, +0x34, 0x26, 0x27, 0x2e, 0x03, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x07, 0x2e, +0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, +0x02, 0x17, 0x1e, 0x03, 0x15, 0x14, 0x06, 0x07, +0x01, 0x04, 0x1d, 0x1a, 0x1f, 0x31, 0x22, 0x41, +0x34, 0x20, 0x20, 0x37, 0x49, 0x28, 0x19, 0x27, +0x21, 0x1b, 0x0c, 0x1a, 0x17, 0x33, 0x23, 0x21, +0x39, 0x2a, 0x17, 0x1b, 0x2d, 0x3a, 0x1e, 0x1b, +0x26, 0x18, 0x0a, 0x1f, 0x1d, 0x9d, 0x23, 0x2d, +0x17, 0x18, 0x22, 0x0e, 0x0c, 0x20, 0x35, 0x4f, +0x3b, 0x3a, 0x59, 0x3d, 0x1f, 0x0a, 0x11, 0x15, +0x0b, 0x1f, 0x16, 0x1d, 0x1d, 0x34, 0x4a, 0x2d, +0x32, 0x43, 0x2c, 0x1b, 0x09, 0x08, 0x12, 0x18, +0x20, 0x16, 0x18, 0x43, 0x26, 0x00, 0x00, 0x00, +0x00, 0x03, 0x00, 0x57, 0xff, 0xf4, 0x01, 0xed, +0x02, 0xd9, 0x00, 0x12, 0x00, 0x1e, 0x00, 0x3c, +0x00, 0x53, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x34, 0x2f, 0x1b, 0xb9, 0x00, 0x34, +0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x29, 0x2f, 0x1b, 0xb9, 0x00, +0x29, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x05, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x0f, 0x00, 0x34, +0x00, 0x29, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x0f, +0x10, 0xb9, 0x00, 0x13, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x34, 0x10, 0xb9, 0x00, 0x1b, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x1f, 0x00, 0x34, 0x00, 0x29, +0x11, 0x12, 0x39, 0x30, 0x31, 0x37, 0x14, 0x1e, +0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, +0x02, 0x23, 0x22, 0x06, 0x07, 0x35, 0x3e, 0x01, +0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, +0x17, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, +0x22, 0x2e, 0x02, 0x35, 0x11, 0x34, 0x3e, 0x02, +0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, +0x82, 0x24, 0x34, 0x39, 0x15, 0x22, 0x37, 0x28, +0x16, 0x13, 0x28, 0x3d, 0x2b, 0x0e, 0x4a, 0x42, +0x87, 0x76, 0x12, 0x1f, 0x29, 0x18, 0x3f, 0x4b, +0x01, 0xb5, 0x2c, 0x44, 0x2e, 0x18, 0x1e, 0x35, +0x47, 0x2a, 0x22, 0x4a, 0x3e, 0x28, 0x16, 0x2d, +0x43, 0x2e, 0x1f, 0x3a, 0x2d, 0x1b, 0x3b, 0x3a, +0xe4, 0x3e, 0x4e, 0x2c, 0x10, 0x17, 0x29, 0x3a, +0x23, 0x21, 0x3d, 0x2e, 0x1b, 0x0a, 0x11, 0x25, +0x17, 0x69, 0x48, 0x21, 0x2f, 0x20, 0x0f, 0x60, +0x64, 0x6e, 0x03, 0x20, 0x34, 0x46, 0x2a, 0x2c, +0x48, 0x33, 0x1d, 0x17, 0x35, 0x57, 0x41, 0x01, +0x22, 0x31, 0x52, 0x3b, 0x21, 0x14, 0x29, 0x3e, +0x2a, 0x39, 0x5b, 0x1d, 0x00, 0x02, 0x00, 0x4c, +0xff, 0xf4, 0x01, 0xb8, 0x02, 0xdb, 0x00, 0x0c, +0x00, 0x35, 0x00, 0x4d, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x24, 0x2f, 0x1b, 0xb9, +0x00, 0x24, 0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x2b, 0x2f, 0x1b, +0xb9, 0x00, 0x2b, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x1a, 0x00, 0x24, 0x00, 0x2b, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x1a, 0x10, 0xb9, 0x00, 0x05, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x24, 0x10, 0xb9, +0x00, 0x0a, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x2b, +0x10, 0xb9, 0x00, 0x15, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x13, 0x14, 0x1e, 0x02, 0x37, 0x2e, 0x03, +0x23, 0x22, 0x06, 0x13, 0x1e, 0x01, 0x15, 0x14, +0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x06, +0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, +0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, +0x35, 0x3c, 0x01, 0x2e, 0x01, 0x27, 0x7a, 0x19, +0x3d, 0x6a, 0x51, 0x02, 0x17, 0x29, 0x3b, 0x25, +0x2f, 0x40, 0x08, 0x06, 0x01, 0x13, 0x20, 0x29, +0x17, 0x1e, 0x33, 0x27, 0x16, 0x01, 0x5a, 0x7b, +0x4a, 0x20, 0x19, 0x2a, 0x39, 0x20, 0xd0, 0x1e, +0x33, 0x46, 0x28, 0x21, 0x38, 0x29, 0x18, 0x01, +0x03, 0x02, 0x02, 0x2d, 0x25, 0x46, 0x33, 0x16, +0x0c, 0x51, 0x74, 0x49, 0x21, 0x46, 0xfe, 0xba, +0x14, 0x39, 0x31, 0x29, 0x37, 0x21, 0x0e, 0x1d, +0x4a, 0x7e, 0x61, 0x0d, 0x1d, 0x3e, 0x53, 0x2a, +0x29, 0x41, 0x2d, 0x18, 0xfe, 0x93, 0x6f, 0x92, +0x56, 0x23, 0x14, 0x2a, 0x44, 0x30, 0x18, 0x25, +0x1d, 0x1a, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x34, +0xff, 0x4c, 0x02, 0x53, 0x01, 0xed, 0x00, 0x0f, +0x00, 0x37, 0x00, 0x58, 0x00, 0x7d, 0xb8, 0x00, +0x21, 0x2f, 0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, 0x00, 0x13, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x2c, 0x2f, 0x1b, 0xb9, 0x00, +0x2c, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x22, 0x2f, 0x1b, 0xb9, +0x00, 0x22, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, +0x37, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, 0xd0, +0xb8, 0x00, 0x13, 0x10, 0xb9, 0x00, 0x0a, 0x00, +0x01, 0xf4, 0xb8, 0x00, 0x22, 0x10, 0xb8, 0x00, +0x1d, 0xd0, 0x30, 0x31, 0x25, 0x3e, 0x03, 0x35, +0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x15, 0x1c, +0x01, 0x27, 0x34, 0x36, 0x33, 0x32, 0x1e, 0x02, +0x15, 0x14, 0x0e, 0x02, 0x07, 0x14, 0x16, 0x17, +0x23, 0x35, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, +0x37, 0x17, 0x0e, 0x03, 0x15, 0x14, 0x1e, 0x02, +0x17, 0x01, 0x58, 0x2b, 0x4a, 0x37, 0x20, 0x13, +0x22, 0x2e, 0x1a, 0x21, 0x2f, 0x29, 0x45, 0x36, +0x25, 0x3f, 0x2d, 0x19, 0x29, 0x46, 0x5b, 0x31, +0x01, 0x01, 0x2c, 0x30, 0x5a, 0x46, 0x2a, 0x11, +0x1d, 0x28, 0x17, 0x24, 0x18, 0x26, 0x19, 0x0e, +0x22, 0x39, 0x4a, 0x29, 0x1a, 0x01, 0x21, 0x3a, +0x51, 0x30, 0x2d, 0x4b, 0x37, 0x1f, 0x46, 0x49, +0x48, 0x8c, 0xdd, 0x56, 0x57, 0x22, 0x40, 0x5a, +0x38, 0x3c, 0x5f, 0x42, 0x24, 0x01, 0x2b, 0x54, +0x2b, 0xaa, 0x01, 0x1e, 0x3c, 0x5a, 0x3e, 0x29, +0x47, 0x40, 0x39, 0x1b, 0x1a, 0x1b, 0x34, 0x38, +0x41, 0x27, 0x31, 0x4a, 0x33, 0x1b, 0x01, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x08, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x07, 0x07, 0x26, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0x9f, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x66, 0x00, 0x00, +0x00, 0x07, 0x07, 0x26, 0x00, 0xef, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x4c, 0x01, 0xbc, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x07, 0x07, 0x26, 0x01, 0x19, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5c, 0xff, 0xf4, 0x00, 0xc7, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x26, 0x73, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf5, 0xff, 0xf4, 0x00, 0xf1, +0x02, 0xa0, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x35, 0x73, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xd8, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x70, 0x00, 0x00, +0x00, 0x07, 0x07, 0x26, 0x01, 0x06, 0x00, 0x00, +0xff, 0xff, 0x00, 0x46, 0xff, 0xf4, 0x01, 0xb3, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x26, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x46, 0xff, 0xf4, 0x01, 0xb3, +0x02, 0xa0, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x35, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x02, 0x68, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x07, 0x07, 0x26, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0xff, 0xec, 0xff, 0xf4, 0x00, 0xfa, +0x02, 0xf6, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x6d, 0x73, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x46, 0xff, 0xf4, 0x01, 0xb3, +0x02, 0xf6, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x6d, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x02, 0x10, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x04, 0x0a, 0x00, +0x00, 0x06, 0x03, 0x80, 0x09, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x02, 0x0e, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x04, 0x08, 0x00, +0x00, 0x06, 0x03, 0x81, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x0e, 0x00, 0x00, 0x02, 0x0c, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x04, 0x06, 0x00, +0x00, 0x06, 0x03, 0x82, 0x24, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x0d, 0x00, 0x00, 0x02, 0x0c, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x04, 0x06, 0x00, +0x00, 0x06, 0x03, 0x6d, 0x24, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x02, 0x81, +0x02, 0x9f, 0x00, 0x26, 0x00, 0x04, 0x7b, 0x00, +0x00, 0x06, 0x03, 0x84, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x02, 0x7c, +0x02, 0x9f, 0x00, 0x26, 0x00, 0x04, 0x76, 0x00, +0x00, 0x06, 0x03, 0x85, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x02, 0x80, +0x02, 0x9f, 0x00, 0x26, 0x00, 0x04, 0x7a, 0x00, +0x00, 0x06, 0x03, 0x86, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x02, 0x7b, +0x02, 0x9f, 0x00, 0x26, 0x00, 0x04, 0x75, 0x00, +0x00, 0x06, 0x03, 0x87, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe8, 0x00, 0x00, 0x02, 0x36, +0x02, 0xa1, 0x00, 0x26, 0x00, 0x04, 0x30, 0x00, +0x00, 0x06, 0x03, 0x88, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe8, 0x00, 0x00, 0x02, 0x36, +0x02, 0xa1, 0x00, 0x26, 0x00, 0x04, 0x30, 0x00, +0x00, 0x06, 0x03, 0x89, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x08, 0x00, 0x00, 0x02, 0x06, +0x03, 0x47, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, +0x00, 0x07, 0x07, 0x31, 0x01, 0x07, 0x00, 0x00, +0xff, 0xff, 0x00, 0x08, 0x00, 0x00, 0x02, 0x06, +0x03, 0x0b, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2c, 0x01, 0x07, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x02, 0x30, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x08, 0x5c, 0x00, +0x00, 0x06, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x02, 0x30, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x08, 0x5c, 0x00, +0x00, 0x06, 0x03, 0x81, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xea, 0x00, 0x00, 0x01, 0xf4, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x08, 0x20, 0x00, +0x00, 0x06, 0x03, 0x82, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe9, 0x00, 0x00, 0x01, 0xf4, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x08, 0x20, 0x00, +0x00, 0x06, 0x03, 0x6d, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x02, 0x8d, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x08, 0x00, 0xb9, +0x00, 0x00, 0x00, 0x06, 0x03, 0x84, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x02, 0x88, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x08, 0x00, 0xb4, +0x00, 0x00, 0x00, 0x06, 0x03, 0x85, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x02, 0x8c, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x08, 0x00, 0xb8, +0x00, 0x00, 0x00, 0x06, 0x03, 0x86, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x02, 0x87, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x08, 0x00, 0xb3, +0x00, 0x00, 0x00, 0x06, 0x03, 0x87, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x02, 0x7a, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x0b, 0x5c, 0x00, +0x00, 0x06, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x02, 0x7a, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x0b, 0x5c, 0x00, +0x00, 0x06, 0x03, 0x81, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xea, 0x00, 0x00, 0x02, 0x3e, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x0b, 0x20, 0x00, +0x00, 0x06, 0x03, 0x82, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe9, 0x00, 0x00, 0x02, 0x3e, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x0b, 0x20, 0x00, +0x00, 0x06, 0x03, 0x6d, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x02, 0xd7, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x0b, 0x00, 0xb9, +0x00, 0x00, 0x00, 0x06, 0x03, 0x84, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x02, 0xd2, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x0b, 0x00, 0xb4, +0x00, 0x00, 0x00, 0x06, 0x03, 0x85, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x02, 0xd6, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x0b, 0x00, 0xb8, +0x00, 0x00, 0x00, 0x06, 0x03, 0x86, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x02, 0xd1, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x0b, 0x00, 0xb3, +0x00, 0x00, 0x00, 0x06, 0x03, 0x87, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe8, 0x00, 0x00, 0x02, 0xc6, +0x02, 0xa1, 0x00, 0x27, 0x00, 0x0b, 0x00, 0xa8, +0x00, 0x00, 0x00, 0x06, 0x03, 0x88, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe8, 0x00, 0x00, 0x02, 0xc6, +0x02, 0xa1, 0x00, 0x27, 0x00, 0x0b, 0x00, 0xa8, +0x00, 0x00, 0x00, 0x06, 0x03, 0x89, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x00, 0xeb, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x0c, 0x5c, 0x00, +0x00, 0x06, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x00, 0xeb, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x0c, 0x5c, 0x00, +0x00, 0x06, 0x03, 0x81, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xea, 0x00, 0x00, 0x00, 0xaf, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x0c, 0x20, 0x00, +0x00, 0x06, 0x03, 0x82, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe9, 0x00, 0x00, 0x00, 0xaf, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x0c, 0x20, 0x00, +0x00, 0x06, 0x03, 0x6d, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x01, 0x48, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x0c, 0x00, 0xb9, +0x00, 0x00, 0x00, 0x06, 0x03, 0x84, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x01, 0x43, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x0c, 0x00, 0xb4, +0x00, 0x00, 0x00, 0x06, 0x03, 0x85, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x01, 0x47, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x0c, 0x00, 0xb8, +0x00, 0x00, 0x00, 0x06, 0x03, 0x86, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x01, 0x42, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x0c, 0x00, 0xb3, +0x00, 0x00, 0x00, 0x06, 0x03, 0x87, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe8, 0x00, 0x00, 0x01, 0x37, +0x02, 0xa1, 0x00, 0x27, 0x00, 0x0c, 0x00, 0xa8, +0x00, 0x00, 0x00, 0x06, 0x03, 0x88, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe8, 0x00, 0x00, 0x01, 0x37, +0x02, 0xa1, 0x00, 0x27, 0x00, 0x0c, 0x00, 0xa8, +0x00, 0x00, 0x00, 0x06, 0x03, 0x89, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x01, 0x00, +0x03, 0x47, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, +0x00, 0x06, 0x07, 0x31, 0x78, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0xf4, +0x03, 0x0b, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, +0x00, 0x06, 0x07, 0x2c, 0x78, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0xff, 0xf4, 0x02, 0x9c, +0x02, 0x9f, 0x00, 0x26, 0x00, 0x12, 0x46, 0x00, +0x00, 0x06, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0xff, 0xf4, 0x02, 0x91, +0x02, 0x9f, 0x00, 0x26, 0x00, 0x12, 0x3b, 0x00, +0x00, 0x06, 0x03, 0x81, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xea, 0xff, 0xf4, 0x02, 0x6c, +0x02, 0x9f, 0x00, 0x26, 0x00, 0x12, 0x16, 0x00, +0x00, 0x06, 0x03, 0x82, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe9, 0xff, 0xf4, 0x02, 0x6a, +0x02, 0x9f, 0x00, 0x26, 0x00, 0x12, 0x14, 0x00, +0x00, 0x06, 0x03, 0x6d, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0xff, 0xf4, 0x03, 0x05, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x12, 0x00, 0xaf, +0x00, 0x00, 0x00, 0x06, 0x03, 0x84, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0xff, 0xf4, 0x03, 0x00, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x12, 0x00, 0xaa, +0x00, 0x00, 0x00, 0x06, 0x03, 0x85, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0xff, 0xf4, 0x03, 0x02, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x12, 0x00, 0xac, +0x00, 0x00, 0x00, 0x06, 0x03, 0x86, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0xff, 0xf4, 0x02, 0xfd, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x12, 0x00, 0xa7, +0x00, 0x00, 0x00, 0x06, 0x03, 0x87, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x02, 0x52, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x13, 0x5c, 0x00, +0x00, 0x06, 0x03, 0x81, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x02, 0x50, +0x02, 0x9e, 0x00, 0x27, 0x00, 0x1c, 0x00, 0x94, +0x00, 0x00, 0x00, 0x06, 0x03, 0x81, 0x00, 0x00, +0xff, 0xff, 0xff, 0xea, 0x00, 0x00, 0x02, 0x18, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x1c, 0x5c, 0x00, +0x00, 0x06, 0x03, 0x82, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe9, 0x00, 0x00, 0x02, 0x18, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x1c, 0x5c, 0x00, +0x00, 0x06, 0x03, 0x6d, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x02, 0xac, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x1c, 0x00, 0xf0, +0x00, 0x00, 0x00, 0x06, 0x03, 0x85, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x02, 0xab, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x1c, 0x00, 0xef, +0x00, 0x00, 0x00, 0x06, 0x03, 0x87, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe8, 0x00, 0x00, 0x02, 0x9e, +0x02, 0xa1, 0x00, 0x27, 0x00, 0x1c, 0x00, 0xe2, +0x00, 0x00, 0x00, 0x06, 0x03, 0x89, 0x00, 0x00, +0xff, 0xff, 0x00, 0x03, 0x00, 0x00, 0x01, 0xbc, +0x03, 0x47, 0x02, 0x26, 0x00, 0x1c, 0x00, 0x00, +0x00, 0x07, 0x07, 0x31, 0x00, 0xdf, 0x00, 0x00, +0xff, 0xff, 0x00, 0x03, 0x00, 0x00, 0x01, 0xbc, +0x03, 0x0b, 0x02, 0x26, 0x00, 0x1c, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2c, 0x00, 0xdf, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x02, 0xab, +0x02, 0x9f, 0x00, 0x26, 0x02, 0x58, 0x46, 0x00, +0x00, 0x06, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x02, 0xa0, +0x02, 0x9f, 0x00, 0x26, 0x02, 0x58, 0x3b, 0x00, +0x00, 0x06, 0x03, 0x81, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xeb, 0x00, 0x00, 0x02, 0x7a, +0x02, 0x9f, 0x00, 0x26, 0x02, 0x58, 0x15, 0x00, +0x00, 0x06, 0x03, 0x82, 0x01, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe9, 0x00, 0x00, 0x02, 0x79, +0x02, 0x9f, 0x00, 0x26, 0x02, 0x58, 0x14, 0x00, +0x00, 0x06, 0x03, 0x6d, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x03, 0x13, +0x02, 0x9f, 0x00, 0x27, 0x02, 0x58, 0x00, 0xae, +0x00, 0x00, 0x00, 0x06, 0x03, 0x84, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x03, 0x0e, +0x02, 0x9f, 0x00, 0x27, 0x02, 0x58, 0x00, 0xa9, +0x00, 0x00, 0x00, 0x06, 0x03, 0x85, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x03, 0x12, +0x02, 0x9f, 0x00, 0x27, 0x02, 0x58, 0x00, 0xad, +0x00, 0x00, 0x00, 0x06, 0x03, 0x86, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x03, 0x0d, +0x02, 0x9f, 0x00, 0x27, 0x02, 0x58, 0x00, 0xa8, +0x00, 0x00, 0x00, 0x06, 0x03, 0x87, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe8, 0x00, 0x00, 0x02, 0xe3, +0x02, 0xa1, 0x00, 0x26, 0x02, 0x58, 0x7e, 0x00, +0x00, 0x06, 0x03, 0x88, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe8, 0x00, 0x00, 0x02, 0xe3, +0x02, 0xa1, 0x00, 0x26, 0x02, 0x58, 0x7e, 0x00, +0x00, 0x06, 0x03, 0x89, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x08, 0xff, 0xf4, 0x02, 0xd4, +0x02, 0x93, 0x00, 0x26, 0x00, 0x04, 0x00, 0x00, +0x00, 0x07, 0x03, 0x70, 0x02, 0x0d, 0x00, 0x00, +0xff, 0xff, 0xff, 0xfc, 0xff, 0xf4, 0x02, 0xde, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x04, 0x0a, 0x00, +0x00, 0x26, 0x03, 0x80, 0x09, 0x00, 0x00, 0x07, +0x03, 0x70, 0x02, 0x17, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0xff, 0xf4, 0x02, 0xdc, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x04, 0x08, 0x00, +0x00, 0x26, 0x03, 0x81, 0x00, 0x00, 0x00, 0x07, +0x03, 0x70, 0x02, 0x15, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0xff, 0xf4, 0x03, 0x50, +0x02, 0x9f, 0x00, 0x26, 0x00, 0x04, 0x7b, 0x00, +0x00, 0x26, 0x03, 0x84, 0x00, 0x00, 0x00, 0x07, +0x03, 0x70, 0x02, 0x89, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0xff, 0xf4, 0x03, 0x4a, +0x02, 0x9f, 0x00, 0x26, 0x00, 0x04, 0x76, 0x00, +0x00, 0x26, 0x03, 0x85, 0x00, 0x00, 0x00, 0x07, +0x03, 0x70, 0x02, 0x83, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0xff, 0xf4, 0x03, 0x4f, +0x02, 0x9f, 0x00, 0x26, 0x00, 0x04, 0x7a, 0x00, +0x00, 0x26, 0x03, 0x86, 0x00, 0x00, 0x00, 0x07, +0x03, 0x70, 0x02, 0x88, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0xff, 0xf4, 0x03, 0x4a, +0x02, 0x9f, 0x00, 0x26, 0x00, 0x04, 0x75, 0x00, +0x00, 0x26, 0x03, 0x87, 0x00, 0x00, 0x00, 0x07, +0x03, 0x70, 0x02, 0x83, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe8, 0xff, 0xf4, 0x03, 0x04, +0x02, 0xa1, 0x00, 0x26, 0x00, 0x04, 0x30, 0x00, +0x00, 0x26, 0x03, 0x88, 0x00, 0x00, 0x00, 0x07, +0x03, 0x70, 0x02, 0x3d, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe8, 0xff, 0xf4, 0x03, 0x04, +0x02, 0xa1, 0x00, 0x26, 0x00, 0x04, 0x30, 0x00, +0x00, 0x26, 0x03, 0x89, 0x00, 0x00, 0x00, 0x07, +0x03, 0x70, 0x02, 0x3d, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0xff, 0xf4, 0x03, 0x45, +0x02, 0x93, 0x00, 0x26, 0x00, 0x0b, 0x00, 0x00, +0x00, 0x07, 0x03, 0x70, 0x02, 0x7e, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0xff, 0xf4, 0x03, 0xa1, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x0b, 0x5c, 0x00, +0x00, 0x26, 0x03, 0x80, 0x00, 0x00, 0x00, 0x07, +0x03, 0x70, 0x02, 0xda, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0xff, 0xf4, 0x03, 0xa1, +0x02, 0x9e, 0x00, 0x26, 0x00, 0x0b, 0x5c, 0x00, +0x00, 0x26, 0x03, 0x81, 0x00, 0x00, 0x00, 0x07, +0x03, 0x70, 0x02, 0xda, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0xff, 0xf4, 0x03, 0xfe, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x0b, 0x00, 0xb9, +0x00, 0x00, 0x00, 0x26, 0x03, 0x84, 0x00, 0x00, +0x00, 0x07, 0x03, 0x70, 0x03, 0x37, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0xff, 0xf4, 0x03, 0xf9, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x0b, 0x00, 0xb4, +0x00, 0x00, 0x00, 0x26, 0x03, 0x85, 0x00, 0x00, +0x00, 0x07, 0x03, 0x70, 0x03, 0x32, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0xff, 0xf4, 0x03, 0xfd, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x0b, 0x00, 0xb8, +0x00, 0x00, 0x00, 0x26, 0x03, 0x86, 0x00, 0x00, +0x00, 0x07, 0x03, 0x70, 0x03, 0x36, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0xff, 0xf4, 0x03, 0xf8, +0x02, 0x9f, 0x00, 0x27, 0x00, 0x0b, 0x00, 0xb3, +0x00, 0x00, 0x00, 0x26, 0x03, 0x87, 0x00, 0x00, +0x00, 0x07, 0x03, 0x70, 0x03, 0x31, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe8, 0xff, 0xf4, 0x03, 0xec, +0x02, 0xa1, 0x00, 0x27, 0x00, 0x0b, 0x00, 0xa8, +0x00, 0x00, 0x00, 0x26, 0x03, 0x88, 0x00, 0x00, +0x00, 0x07, 0x03, 0x70, 0x03, 0x25, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe8, 0xff, 0xf4, 0x03, 0xec, +0x02, 0xa1, 0x00, 0x27, 0x00, 0x0b, 0x00, 0xa8, +0x00, 0x00, 0x00, 0x26, 0x03, 0x89, 0x00, 0x00, +0x00, 0x07, 0x03, 0x70, 0x03, 0x25, 0x00, 0x00, +0xff, 0xff, 0x00, 0x2e, 0xff, 0xf4, 0x03, 0x58, +0x02, 0x9f, 0x00, 0x26, 0x02, 0x58, 0x00, 0x00, +0x00, 0x07, 0x03, 0x70, 0x02, 0x91, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0xff, 0xf4, 0x03, 0x9c, +0x02, 0x9f, 0x00, 0x26, 0x02, 0x58, 0x46, 0x00, +0x00, 0x26, 0x03, 0x80, 0x00, 0x00, 0x00, 0x07, +0x03, 0x70, 0x02, 0xd5, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0xff, 0xf4, 0x03, 0x91, +0x02, 0x9f, 0x00, 0x26, 0x02, 0x58, 0x3b, 0x00, +0x00, 0x26, 0x03, 0x81, 0x00, 0x00, 0x00, 0x07, +0x03, 0x70, 0x02, 0xca, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0xff, 0xf4, 0x04, 0x04, +0x02, 0x9f, 0x00, 0x27, 0x02, 0x58, 0x00, 0xae, +0x00, 0x00, 0x00, 0x26, 0x03, 0x84, 0x00, 0x00, +0x00, 0x07, 0x03, 0x70, 0x03, 0x3d, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0xff, 0xf4, 0x03, 0xff, +0x02, 0x9f, 0x00, 0x27, 0x02, 0x58, 0x00, 0xa9, +0x00, 0x00, 0x00, 0x26, 0x03, 0x85, 0x00, 0x00, +0x00, 0x07, 0x03, 0x70, 0x03, 0x38, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf3, 0xff, 0xf4, 0x04, 0x03, +0x02, 0x9f, 0x00, 0x27, 0x02, 0x58, 0x00, 0xad, +0x00, 0x00, 0x00, 0x26, 0x03, 0x86, 0x00, 0x00, +0x00, 0x07, 0x03, 0x70, 0x03, 0x3c, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0xff, 0xf4, 0x03, 0xfe, +0x02, 0x9f, 0x00, 0x27, 0x02, 0x58, 0x00, 0xa8, +0x00, 0x00, 0x00, 0x26, 0x03, 0x87, 0x00, 0x00, +0x00, 0x07, 0x03, 0x70, 0x03, 0x37, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe8, 0xff, 0xf4, 0x03, 0xd7, +0x02, 0xa1, 0x00, 0x26, 0x02, 0x58, 0x7e, 0x00, +0x00, 0x26, 0x03, 0x88, 0x00, 0x00, 0x00, 0x07, +0x03, 0x70, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe8, 0xff, 0xf4, 0x03, 0xd7, +0x02, 0xa1, 0x00, 0x26, 0x02, 0x58, 0x7e, 0x00, +0x00, 0x26, 0x03, 0x89, 0x00, 0x00, 0x00, 0x07, +0x03, 0x70, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x08, +0x02, 0xef, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x07, 0x07, 0x37, 0x01, 0x16, 0x00, 0x0a, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x08, +0x02, 0xe4, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x07, 0x07, 0x45, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x08, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x07, 0x07, 0x21, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x08, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x08, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8e, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x08, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8b, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x08, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8d, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x08, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8a, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x08, +0x03, 0x12, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8f, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x08, +0x03, 0x12, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8c, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x08, +0x02, 0xd3, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2f, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x08, +0x02, 0x82, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x08, +0x02, 0xc6, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x07, 0x07, 0x29, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0x9f, +0x02, 0xe5, 0x02, 0x26, 0x02, 0x66, 0x00, 0x00, +0x00, 0x07, 0x07, 0x37, 0x00, 0xef, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0x9f, +0x02, 0xe4, 0x02, 0x26, 0x02, 0x66, 0x00, 0x00, +0x00, 0x07, 0x07, 0x45, 0x00, 0xef, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0x9f, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x66, 0x00, 0x00, +0x00, 0x07, 0x07, 0x21, 0x00, 0xef, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0x9f, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x66, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x00, 0xef, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0x9f, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x66, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8e, 0x00, 0xef, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0x9f, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x66, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8b, 0x00, 0xef, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0x9f, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x66, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8d, 0x00, 0xef, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0x9f, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x66, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8a, 0x00, 0xef, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x4c, 0x01, 0xbc, +0x02, 0xe5, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x07, 0x07, 0x37, 0x01, 0x19, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x4c, 0x01, 0xbc, +0x02, 0xe4, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x07, 0x07, 0x45, 0x01, 0x19, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x4c, 0x01, 0xbc, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x07, 0x07, 0x21, 0x01, 0x19, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x4c, 0x01, 0xbc, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x01, 0x19, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x4c, 0x01, 0xbc, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8e, 0x01, 0x19, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x4c, 0x01, 0xbc, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8b, 0x01, 0x19, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x4c, 0x01, 0xbc, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8d, 0x01, 0x19, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x4c, 0x01, 0xbc, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8a, 0x01, 0x19, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x4c, 0x01, 0xbc, +0x03, 0x12, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8f, 0x01, 0x19, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x4c, 0x01, 0xbc, +0x03, 0x12, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8c, 0x01, 0x19, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x4c, 0x01, 0xbd, +0x02, 0xc6, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x07, 0x07, 0x29, 0x01, 0x19, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3c, 0xff, 0xf4, 0x00, 0xc7, +0x02, 0xef, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x37, 0x73, 0x0a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x2d, 0xff, 0xf4, 0x00, 0xc7, +0x02, 0xe4, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x45, 0x73, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x00, 0xff, 0xf4, 0x00, 0xc7, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x21, 0x73, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3e, 0xff, 0xf4, 0x00, 0xe6, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x24, 0x73, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xed, 0xff, 0xf4, 0x00, 0xd1, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x8e, 0x73, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xe4, 0xff, 0xf4, 0x00, 0xc8, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x8b, 0x73, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xed, 0xff, 0xf4, 0x00, 0xe0, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x8d, 0x73, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xee, 0xff, 0xf4, 0x00, 0xd7, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x8a, 0x73, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf0, 0xff, 0xf4, 0x00, 0xf6, +0x03, 0x12, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x8f, 0x73, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf0, 0xff, 0xf4, 0x00, 0xf6, +0x03, 0x12, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x8c, 0x73, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xde, 0xff, 0xf4, 0x01, 0x08, +0x02, 0xd3, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x2f, 0x73, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf8, 0xff, 0xf4, 0x00, 0xee, +0x02, 0x82, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x2b, 0x73, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xcf, 0xff, 0xf4, 0x01, 0x17, +0x02, 0xc6, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x29, 0x73, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xec, 0xff, 0xf4, 0x00, 0xfa, +0x02, 0xf6, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x70, 0x73, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xec, 0xff, 0xf4, 0x00, 0xfa, +0x02, 0xf6, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x6d, 0x73, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xde, 0xff, 0xf4, 0x01, 0x08, +0x03, 0x13, 0x02, 0x26, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x06, 0x07, 0x71, 0x73, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xd8, +0x02, 0xef, 0x02, 0x26, 0x02, 0x70, 0x00, 0x00, +0x00, 0x07, 0x07, 0x37, 0x01, 0x06, 0x00, 0x0a, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xd8, +0x02, 0xe4, 0x02, 0x26, 0x02, 0x70, 0x00, 0x00, +0x00, 0x07, 0x07, 0x45, 0x01, 0x06, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xd8, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x70, 0x00, 0x00, +0x00, 0x07, 0x07, 0x21, 0x01, 0x06, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xd8, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x70, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x01, 0x06, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xd8, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x70, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8e, 0x01, 0x06, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xd8, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x70, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8b, 0x01, 0x06, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xd8, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x70, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8d, 0x01, 0x06, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xd8, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x70, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8a, 0x01, 0x06, 0x00, 0x00, +0xff, 0xff, 0x00, 0x58, 0xff, 0x4c, 0x01, 0xe6, +0x02, 0xef, 0x02, 0x26, 0x02, 0x72, 0x00, 0x00, +0x00, 0x07, 0x07, 0x37, 0x01, 0x20, 0x00, 0x0a, +0xff, 0xff, 0x00, 0x58, 0xff, 0x4c, 0x01, 0xe6, +0x02, 0xe4, 0x02, 0x26, 0x02, 0x72, 0x00, 0x00, +0x00, 0x07, 0x07, 0x45, 0x01, 0x20, 0x00, 0x00, +0xff, 0xff, 0x00, 0x46, 0xff, 0xf4, 0x01, 0xb3, +0x02, 0xef, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x37, 0x00, 0xe9, 0x00, 0x0a, +0xff, 0xff, 0x00, 0x46, 0xff, 0xf4, 0x01, 0xb3, +0x02, 0xe4, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x45, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x46, 0xff, 0xf4, 0x01, 0xb3, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x21, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x46, 0xff, 0xf4, 0x01, 0xb3, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x46, 0xff, 0xf4, 0x01, 0xb3, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8e, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x46, 0xff, 0xf4, 0x01, 0xb3, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8b, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x46, 0xff, 0xf4, 0x01, 0xb3, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8d, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x46, 0xff, 0xf4, 0x01, 0xb3, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8a, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x46, 0xff, 0xf4, 0x01, 0xb3, +0x03, 0x12, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8f, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x46, 0xff, 0xf4, 0x01, 0xb3, +0x03, 0x12, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8c, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x45, 0xff, 0xf4, 0x01, 0xb3, +0x02, 0xc6, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x29, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x46, 0xff, 0xf4, 0x01, 0xb3, +0x02, 0xd3, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2f, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x46, 0xff, 0xf4, 0x01, 0xb3, +0x02, 0x82, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x46, 0xff, 0xf4, 0x01, 0xb3, +0x02, 0xf6, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x70, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x46, 0xff, 0xf4, 0x01, 0xb3, +0x02, 0xf6, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x6d, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x46, 0xff, 0xf4, 0x01, 0xb3, +0x03, 0x13, 0x02, 0x26, 0x02, 0x75, 0x00, 0x00, +0x00, 0x07, 0x07, 0x71, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x02, 0x68, +0x02, 0xef, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x07, 0x07, 0x37, 0x01, 0x51, 0x00, 0x0a, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x02, 0x68, +0x02, 0xe4, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x07, 0x07, 0x45, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x02, 0x68, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x07, 0x07, 0x21, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x02, 0x68, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x02, 0x68, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8e, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x02, 0x68, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8b, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x02, 0x68, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8d, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x02, 0x68, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8a, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x02, 0x68, +0x03, 0x12, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8f, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x02, 0x68, +0x03, 0x12, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8c, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x02, 0x68, +0x02, 0xc6, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x07, 0x07, 0x29, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0x41, 0x02, 0x08, +0x01, 0xec, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x07, 0x07, 0x69, 0x01, 0x13, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0x41, 0x02, 0x08, +0x02, 0xef, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x13, 0x00, 0x00, +0x00, 0x07, 0x07, 0x37, 0x01, 0x16, 0x00, 0x0a, +0xff, 0xff, 0x00, 0x34, 0xff, 0x41, 0x02, 0x08, +0x02, 0xe4, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x13, 0x00, 0x00, +0x00, 0x07, 0x07, 0x45, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0x41, 0x02, 0x08, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x13, 0x00, 0x00, +0x00, 0x07, 0x07, 0x21, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0x41, 0x02, 0x08, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x13, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0x41, 0x02, 0x08, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x13, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8e, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0x41, 0x02, 0x08, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x13, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8b, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0x41, 0x02, 0x08, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x13, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8d, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0x41, 0x02, 0x08, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x13, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8a, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0x41, 0x02, 0x08, +0x03, 0x12, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x13, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8f, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0x41, 0x02, 0x08, +0x03, 0x12, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x13, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8c, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0x41, 0x02, 0x08, +0x02, 0xc6, 0x02, 0x26, 0x02, 0x62, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x13, 0x00, 0x00, +0x00, 0x07, 0x07, 0x29, 0x01, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x41, 0x01, 0xbc, +0x01, 0xec, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x06, 0x07, 0x69, 0x6a, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x41, 0x01, 0xbc, +0x02, 0xef, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x26, 0x07, 0x69, 0x6a, 0x00, 0x00, 0x07, +0x07, 0x37, 0x01, 0x19, 0x00, 0x0a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x41, 0x01, 0xbc, +0x02, 0xe4, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x26, 0x07, 0x69, 0x6a, 0x00, 0x00, 0x07, +0x07, 0x45, 0x01, 0x19, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x41, 0x01, 0xbc, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x26, 0x07, 0x69, 0x6a, 0x00, 0x00, 0x07, +0x07, 0x21, 0x01, 0x19, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x41, 0x01, 0xbc, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x26, 0x07, 0x69, 0x6a, 0x00, 0x00, 0x07, +0x07, 0x24, 0x01, 0x19, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x41, 0x01, 0xbc, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x26, 0x07, 0x69, 0x6a, 0x00, 0x00, 0x07, +0x07, 0x8e, 0x01, 0x19, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x41, 0x01, 0xbc, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x26, 0x07, 0x69, 0x6a, 0x00, 0x00, 0x07, +0x07, 0x8b, 0x01, 0x19, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x41, 0x01, 0xbc, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x26, 0x07, 0x69, 0x6a, 0x00, 0x00, 0x07, +0x07, 0x8d, 0x01, 0x19, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x41, 0x01, 0xbc, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x26, 0x07, 0x69, 0x6a, 0x00, 0x00, 0x07, +0x07, 0x8a, 0x01, 0x19, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x41, 0x01, 0xbc, +0x03, 0x12, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x26, 0x07, 0x69, 0x6a, 0x00, 0x00, 0x07, +0x07, 0x8f, 0x01, 0x19, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x41, 0x01, 0xbc, +0x03, 0x12, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x26, 0x07, 0x69, 0x6a, 0x00, 0x00, 0x07, +0x07, 0x8c, 0x01, 0x19, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0x41, 0x01, 0xbd, +0x02, 0xc6, 0x02, 0x26, 0x02, 0x68, 0x00, 0x00, +0x00, 0x26, 0x07, 0x69, 0x6a, 0x00, 0x00, 0x07, +0x07, 0x29, 0x01, 0x19, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0x41, 0x02, 0x68, +0x01, 0xec, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x07, 0x07, 0x69, 0x01, 0x48, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0x41, 0x02, 0x68, +0x02, 0xef, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x48, 0x00, 0x00, +0x00, 0x07, 0x07, 0x37, 0x01, 0x51, 0x00, 0x0a, +0xff, 0xff, 0x00, 0x3a, 0xff, 0x41, 0x02, 0x68, +0x02, 0xe4, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x48, 0x00, 0x00, +0x00, 0x07, 0x07, 0x45, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0x41, 0x02, 0x68, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x48, 0x00, 0x00, +0x00, 0x07, 0x07, 0x21, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0x41, 0x02, 0x68, +0x02, 0xf2, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x48, 0x00, 0x00, +0x00, 0x07, 0x07, 0x24, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0x41, 0x02, 0x68, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x48, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8e, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0x41, 0x02, 0x68, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x48, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8b, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0x41, 0x02, 0x68, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x48, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8d, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0x41, 0x02, 0x68, +0x02, 0xf5, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x48, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8a, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0x41, 0x02, 0x68, +0x03, 0x12, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x48, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8f, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0x41, 0x02, 0x68, +0x03, 0x12, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x48, 0x00, 0x00, +0x00, 0x07, 0x07, 0x8c, 0x01, 0x51, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0x41, 0x02, 0x68, +0x02, 0xc6, 0x02, 0x26, 0x02, 0x79, 0x00, 0x00, +0x00, 0x27, 0x07, 0x69, 0x01, 0x48, 0x00, 0x00, +0x00, 0x07, 0x07, 0x29, 0x01, 0x51, 0x00, 0x00, +0x00, 0x01, 0x00, 0x54, 0xff, 0x46, 0x01, 0xd2, +0x01, 0xec, 0x00, 0x2a, 0x00, 0x65, 0x00, 0x7d, +0xb8, 0x00, 0x0b, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x2a, 0x2f, 0x1b, 0xb9, +0x00, 0x2a, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x1b, 0x2f, 0x1b, +0xb9, 0x00, 0x1b, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x2a, 0x10, 0xb8, 0x00, 0x1f, 0xd0, 0xb8, +0x00, 0x1f, 0x2f, 0xba, 0x00, 0x03, 0x00, 0x1f, +0x00, 0x1b, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x1b, +0x10, 0xb8, 0x00, 0x0f, 0xd0, 0xb8, 0x00, 0x08, +0xd0, 0xb8, 0x00, 0x08, 0x2f, 0xba, 0x00, 0x14, +0x00, 0x1b, 0x00, 0x1f, 0x11, 0x12, 0x39, 0xba, +0x00, 0x24, 0x00, 0x1f, 0x00, 0x1b, 0x11, 0x12, +0x39, 0x30, 0x31, 0x01, 0x0e, 0x01, 0x07, 0x1e, +0x03, 0x17, 0x0e, 0x01, 0x07, 0x27, 0x3e, 0x01, +0x37, 0x2e, 0x03, 0x27, 0x06, 0x07, 0x0e, 0x01, +0x07, 0x15, 0x23, 0x11, 0x34, 0x26, 0x27, 0x33, +0x1e, 0x01, 0x1d, 0x01, 0x33, 0x3e, 0x03, 0x37, +0x01, 0xb9, 0x2a, 0x5b, 0x30, 0x12, 0x2f, 0x36, +0x3a, 0x1d, 0x21, 0x49, 0x21, 0x33, 0x29, 0x46, +0x1d, 0x17, 0x31, 0x30, 0x2d, 0x12, 0x22, 0x1f, +0x14, 0x0d, 0x01, 0x2a, 0x02, 0x06, 0x2c, 0x05, +0x03, 0x04, 0x1e, 0x48, 0x4e, 0x50, 0x24, 0x01, +0xc1, 0x10, 0x4b, 0x39, 0x24, 0x4f, 0x50, 0x4b, +0x1f, 0x35, 0x5f, 0x26, 0x06, 0x2a, 0x59, 0x2c, +0x19, 0x43, 0x48, 0x4a, 0x22, 0x2d, 0x32, 0x1d, +0x4e, 0x2a, 0x17, 0x01, 0x66, 0x1d, 0x40, 0x1d, +0x11, 0x3c, 0x1f, 0xbb, 0x36, 0x64, 0x53, 0x3a, +0x0c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x34, +0xff, 0x4c, 0x01, 0xd8, 0x01, 0xec, 0x00, 0x0f, +0x00, 0x2a, 0x00, 0x43, 0x00, 0x7d, 0xb8, 0x00, +0x2a, 0x2f, 0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x1a, 0x2f, 0x1b, 0xb9, 0x00, 0x1a, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x10, 0x2f, 0x1b, 0xb9, 0x00, +0x10, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x00, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x1a, 0x10, 0xb9, +0x00, 0x08, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x10, +0x10, 0xb8, 0x00, 0x24, 0xd0, 0x30, 0x31, 0x25, +0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, +0x0e, 0x02, 0x15, 0x14, 0x16, 0x17, 0x2e, 0x03, +0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, +0x15, 0x14, 0x0e, 0x02, 0x07, 0x14, 0x16, 0x14, +0x16, 0x15, 0x23, 0x01, 0x06, 0x4c, 0x58, 0x17, +0x2a, 0x3d, 0x26, 0x26, 0x3d, 0x2a, 0x17, 0x58, +0x39, 0x29, 0x46, 0x33, 0x1d, 0x20, 0x39, 0x4c, +0x2d, 0x2d, 0x4c, 0x39, 0x20, 0x1c, 0x32, 0x44, +0x28, 0x01, 0x01, 0x2d, 0x1a, 0x74, 0x61, 0x30, +0x4f, 0x38, 0x1f, 0x1f, 0x38, 0x4f, 0x30, 0x61, +0x74, 0x25, 0x03, 0x25, 0x40, 0x59, 0x39, 0x3d, +0x5e, 0x41, 0x21, 0x21, 0x41, 0x5e, 0x3d, 0x38, +0x59, 0x3f, 0x26, 0x04, 0x18, 0x26, 0x24, 0x2a, +0x1d, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x34, +0xff, 0x49, 0x01, 0xa9, 0x01, 0xe0, 0x00, 0x25, +0x00, 0x43, 0x00, 0x7d, 0xb8, 0x00, 0x25, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x12, 0x2f, 0x1b, 0xb9, 0x00, 0x12, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x08, 0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x12, 0x10, 0xb9, +0x00, 0x14, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x17, +0xd0, 0xb8, 0x00, 0x08, 0x10, 0xb9, 0x00, 0x1f, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x05, 0x3e, 0x01, +0x35, 0x34, 0x2e, 0x02, 0x27, 0x2e, 0x03, 0x35, +0x34, 0x3e, 0x02, 0x3b, 0x01, 0x15, 0x26, 0x22, +0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x17, +0x1e, 0x01, 0x15, 0x14, 0x06, 0x07, 0x01, 0x28, +0x1d, 0x15, 0x07, 0x15, 0x28, 0x20, 0x29, 0x46, +0x35, 0x1e, 0x23, 0x3f, 0x54, 0x32, 0x8d, 0x1a, +0x45, 0x2d, 0x56, 0x65, 0x1b, 0x2f, 0x3f, 0x23, +0x40, 0x36, 0x1d, 0x1a, 0xa2, 0x23, 0x22, 0x14, +0x0b, 0x13, 0x12, 0x10, 0x08, 0x0a, 0x22, 0x37, +0x51, 0x38, 0x40, 0x5c, 0x3c, 0x1d, 0x29, 0x02, +0x67, 0x67, 0x30, 0x44, 0x2f, 0x1c, 0x08, 0x0e, +0x2f, 0x29, 0x14, 0x3e, 0x23, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x5c, 0xff, 0x4c, 0x01, 0x78, +0x01, 0xe0, 0x00, 0x0b, 0x00, 0x2e, 0x00, 0x7d, +0xb8, 0x00, 0x0b, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, +0x00, 0x00, 0x00, 0x09, 0x3e, 0x59, 0xbb, 0x00, +0x05, 0x00, 0x01, 0x00, 0x06, 0x00, 0x04, 0x2b, +0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x02, 0x00, +0x01, 0xf4, 0x30, 0x31, 0x13, 0x21, 0x15, 0x23, +0x17, 0x33, 0x15, 0x23, 0x1c, 0x01, 0x17, 0x23, +0x5c, 0x01, 0x1c, 0xf3, 0x02, 0xdd, 0xdc, 0x01, +0x2d, 0x01, 0xe0, 0x26, 0xfc, 0x24, 0x55, 0x9e, +0x5b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x16, +0xff, 0x4e, 0x01, 0xbe, 0x02, 0xac, 0x00, 0x1e, +0x00, 0x0b, 0x00, 0xba, 0x00, 0x00, 0x00, 0x08, +0x00, 0x03, 0x2b, 0x30, 0x31, 0x13, 0x1e, 0x03, +0x15, 0x14, 0x06, 0x07, 0x27, 0x3e, 0x01, 0x35, +0x34, 0x26, 0x27, 0x0e, 0x01, 0x07, 0x27, 0x25, +0x26, 0x27, 0x0e, 0x01, 0x07, 0x27, 0x25, 0x2e, +0x01, 0x27, 0x4f, 0x57, 0x89, 0x5e, 0x31, 0x07, +0x0a, 0x2b, 0x0b, 0x07, 0x08, 0x08, 0x45, 0x82, +0x4b, 0x13, 0x01, 0x1c, 0x12, 0x1e, 0x4a, 0x89, +0x4f, 0x13, 0x01, 0x24, 0x2d, 0x83, 0x55, 0x02, +0xac, 0x31, 0x90, 0xaf, 0xc6, 0x67, 0x33, 0x5e, +0x30, 0x06, 0x30, 0x5c, 0x2f, 0x29, 0x50, 0x27, +0x20, 0x3b, 0x24, 0x25, 0x82, 0x44, 0x41, 0x22, +0x3f, 0x25, 0x24, 0x85, 0x55, 0x89, 0x2d, 0x00, +0xff, 0xff, 0x00, 0x30, 0xff, 0x65, 0x00, 0xa5, +0x01, 0xcd, 0x02, 0x27, 0x04, 0x77, 0x00, 0x00, +0x01, 0x7e, 0x00, 0x06, 0x04, 0x78, 0x00, 0x00, +0xff, 0xff, 0x00, 0x43, 0x01, 0x72, 0x00, 0x98, +0x01, 0xcd, 0x02, 0x07, 0x04, 0x77, 0x00, 0x00, +0x01, 0x7e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x43, +0x02, 0x44, 0x00, 0x98, 0x02, 0x9f, 0x02, 0x07, +0x04, 0x77, 0x00, 0x00, 0x02, 0x50, 0x00, 0x00, +0x00, 0x01, 0x00, 0x52, 0x01, 0xe5, 0x00, 0x94, +0x02, 0xb5, 0x00, 0x04, 0x00, 0x0b, 0x00, 0xba, +0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x2b, 0x30, +0x31, 0x13, 0x33, 0x0f, 0x01, 0x23, 0x69, 0x2b, +0x0a, 0x1b, 0x1d, 0x02, 0xb5, 0x48, 0x88, 0x00, +0x00, 0x01, 0x00, 0x47, 0x00, 0x00, 0x00, 0x89, +0x00, 0xd0, 0x00, 0x04, 0x00, 0x18, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, 0x2f, +0x1b, 0xb9, 0x00, 0x03, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x01, 0xdc, 0x30, 0x31, 0x3f, 0x01, +0x33, 0x07, 0x23, 0x51, 0x1b, 0x1d, 0x17, 0x2b, +0x48, 0x88, 0xd0, 0x00, 0xff, 0xff, 0x00, 0xf6, +0x02, 0x2f, 0x01, 0x59, 0x02, 0xf5, 0x00, 0x07, +0x07, 0x26, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0xff, 0xe9, 0x01, 0xdf, 0x00, 0x36, +0x02, 0x9e, 0x00, 0x03, 0x00, 0x18, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x03, 0xdc, 0x30, 0x31, 0x13, 0x17, +0x07, 0x27, 0x07, 0x2f, 0x2c, 0x21, 0x02, 0x9e, +0x07, 0xb8, 0x07, 0x00, 0xff, 0xff, 0x00, 0x8d, +0x02, 0x31, 0x01, 0x9b, 0x02, 0xf6, 0x00, 0x07, +0x07, 0x6d, 0x01, 0x14, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x01, 0x01, 0xff, 0x41, 0x01, 0x60, +0xff, 0xbe, 0x00, 0x07, 0x07, 0x69, 0x01, 0x14, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5c, +0xff, 0xf4, 0x00, 0xc7, 0x01, 0x90, 0x00, 0x10, +0x00, 0x1e, 0x00, 0xb8, 0x00, 0x03, 0x2f, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, +0xb9, 0x00, 0x0a, 0x00, 0x01, 0xf4, 0x30, 0x31, +0x17, 0x22, 0x35, 0x11, 0x33, 0x0e, 0x01, 0x15, +0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x17, 0x0e, +0x01, 0x9d, 0x41, 0x2d, 0x02, 0x01, 0x10, 0x0e, +0x07, 0x0c, 0x09, 0x07, 0x08, 0x14, 0x0c, 0x52, +0x01, 0x4a, 0x58, 0xa3, 0x55, 0x13, 0x12, 0x03, +0x03, 0x24, 0x04, 0x05, 0xff, 0xff, 0x00, 0xd4, +0x02, 0x3f, 0x01, 0x51, 0x02, 0xe5, 0x00, 0x07, +0x07, 0x37, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0xd4, 0x02, 0x3f, 0x01, 0x51, +0x02, 0xe5, 0x00, 0x07, 0x07, 0x37, 0x01, 0x0b, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xc5, +0x02, 0x41, 0x01, 0x42, 0x02, 0xe4, 0x00, 0x07, +0x07, 0x45, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0xc2, 0x02, 0x2f, 0x01, 0x20, +0x02, 0xf5, 0x00, 0x07, 0x07, 0x23, 0x01, 0x0b, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xf6, +0x02, 0x2f, 0x01, 0x59, 0x02, 0xf5, 0x00, 0x07, +0x07, 0x26, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x85, 0x02, 0x30, 0x01, 0x69, +0x02, 0xf5, 0x00, 0x07, 0x07, 0x8e, 0x01, 0x0b, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x7c, +0x02, 0x30, 0x01, 0x60, 0x02, 0xf5, 0x00, 0x07, +0x07, 0x8b, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x85, 0x02, 0x30, 0x01, 0x78, +0x02, 0xf5, 0x00, 0x07, 0x07, 0x8d, 0x01, 0x0b, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x86, +0x02, 0x30, 0x01, 0x6f, 0x02, 0xf5, 0x00, 0x07, +0x07, 0x8a, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x88, 0x02, 0x32, 0x01, 0x8e, +0x03, 0x12, 0x00, 0x07, 0x07, 0x8f, 0x01, 0x0b, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x88, +0x02, 0x32, 0x01, 0x8e, 0x03, 0x12, 0x00, 0x07, +0x07, 0x8c, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x67, 0x02, 0x43, 0x01, 0xaf, +0x02, 0xc6, 0x00, 0x07, 0x07, 0x29, 0x01, 0x0b, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x84, +0x02, 0x31, 0x01, 0x92, 0x02, 0xf6, 0x00, 0x07, +0x07, 0x70, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x84, 0x02, 0x31, 0x01, 0x92, +0x02, 0xf6, 0x00, 0x07, 0x07, 0x6d, 0x01, 0x0b, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x76, +0x02, 0x56, 0x01, 0xa0, 0x03, 0x13, 0x00, 0x07, +0x07, 0x71, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0xff, 0xf3, 0x01, 0xdf, 0x00, 0x6f, +0x02, 0x9e, 0x00, 0x11, 0x00, 0x1a, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, 0x2f, +0x1b, 0xb9, 0x00, 0x07, 0x00, 0x11, 0x3e, 0x59, +0xb9, 0x00, 0x06, 0x00, 0x01, 0xf4, 0x30, 0x31, +0x13, 0x3e, 0x01, 0x35, 0x34, 0x26, 0x23, 0x37, +0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x08, +0x1c, 0x24, 0x2c, 0x29, 0x03, 0x19, 0x2c, 0x21, +0x13, 0x10, 0x1a, 0x22, 0x12, 0x01, 0xfa, 0x0b, +0x22, 0x1d, 0x1c, 0x1e, 0x20, 0x01, 0x0a, 0x15, +0x1f, 0x15, 0x18, 0x23, 0x19, 0x11, 0x06, 0x00, +0x00, 0x01, 0xff, 0xf2, 0x01, 0xdf, 0x00, 0x6f, +0x02, 0x9e, 0x00, 0x12, 0x00, 0x1a, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0a, 0x2f, +0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x11, 0x3e, 0x59, +0xb9, 0x00, 0x0b, 0x00, 0x01, 0xf4, 0x30, 0x31, +0x13, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x37, +0x17, 0x22, 0x06, 0x15, 0x14, 0x16, 0x17, 0x07, +0x50, 0x12, 0x21, 0x1b, 0x10, 0x13, 0x21, 0x2c, +0x19, 0x04, 0x2a, 0x2c, 0x25, 0x1b, 0x09, 0x01, +0xdf, 0x06, 0x11, 0x19, 0x23, 0x18, 0x15, 0x1f, +0x15, 0x0a, 0x01, 0x20, 0x1e, 0x1c, 0x1d, 0x22, +0x0b, 0x1b, 0x00, 0x00, 0x00, 0x01, 0xff, 0xea, +0x01, 0xdf, 0x00, 0x37, 0x02, 0x9e, 0x00, 0x03, +0x00, 0x18, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x03, 0xdc, +0x30, 0x31, 0x03, 0x37, 0x17, 0x07, 0x16, 0x2f, +0x1e, 0x21, 0x02, 0x97, 0x07, 0xb8, 0x07, 0x00, +0xff, 0xff, 0xff, 0xe9, 0x01, 0xdf, 0x00, 0x36, +0x02, 0x9e, 0x02, 0x06, 0x03, 0x6d, 0x00, 0x00, +0x00, 0x02, 0xff, 0xf3, 0x01, 0xdf, 0x00, 0xd0, +0x02, 0x9f, 0x00, 0x03, 0x00, 0x11, 0x00, 0x19, +0x00, 0xbb, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x0a, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x0b, 0x10, 0xb8, +0x00, 0x01, 0xd0, 0xb8, 0x00, 0x01, 0x2f, 0x30, +0x31, 0x13, 0x37, 0x17, 0x07, 0x27, 0x3e, 0x01, +0x35, 0x34, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x15, +0x14, 0x06, 0x07, 0x83, 0x2f, 0x1e, 0x20, 0xab, +0x14, 0x1c, 0x22, 0x20, 0x03, 0x2a, 0x3b, 0x2e, +0x1c, 0x02, 0x97, 0x07, 0xb8, 0x07, 0x1b, 0x0d, +0x24, 0x16, 0x1e, 0x1e, 0x02, 0x20, 0x02, 0x29, +0x2e, 0x26, 0x32, 0x0e, 0x00, 0x02, 0xff, 0xf2, +0x01, 0xdf, 0x00, 0xcb, 0x02, 0x9f, 0x00, 0x03, +0x00, 0x10, 0x00, 0x19, 0x00, 0xbb, 0x00, 0x0a, +0x00, 0x01, 0x00, 0x0b, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x0a, 0x10, 0xb8, 0x00, 0x01, 0xd0, 0xb8, +0x00, 0x01, 0x2f, 0x30, 0x31, 0x13, 0x37, 0x17, +0x07, 0x27, 0x2e, 0x01, 0x35, 0x34, 0x36, 0x37, +0x17, 0x06, 0x15, 0x14, 0x16, 0x17, 0x7e, 0x2f, +0x1e, 0x21, 0x6e, 0x1b, 0x2f, 0x3b, 0x2a, 0x04, +0x43, 0x1c, 0x14, 0x02, 0x97, 0x07, 0xb8, 0x07, +0x01, 0x0e, 0x32, 0x26, 0x2e, 0x29, 0x02, 0x20, +0x03, 0x3b, 0x16, 0x24, 0x0d, 0x00, 0x00, 0x00, +0x00, 0x02, 0xff, 0xf3, 0x01, 0xdf, 0x00, 0xce, +0x02, 0x9f, 0x00, 0x03, 0x00, 0x11, 0x00, 0x0d, +0x00, 0xbb, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x0a, +0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, 0x17, 0x07, +0x2f, 0x01, 0x3e, 0x01, 0x35, 0x34, 0x26, 0x27, +0x37, 0x1e, 0x01, 0x15, 0x14, 0x06, 0x07, 0xa0, +0x2e, 0x2c, 0x20, 0x7d, 0x14, 0x1c, 0x22, 0x20, +0x03, 0x2a, 0x3b, 0x2e, 0x1c, 0x02, 0x9e, 0x07, +0xb8, 0x07, 0x14, 0x0d, 0x24, 0x16, 0x1e, 0x1e, +0x02, 0x20, 0x02, 0x29, 0x2e, 0x26, 0x32, 0x0e, +0x00, 0x02, 0xff, 0xf2, 0x01, 0xdf, 0x00, 0xc9, +0x02, 0x9f, 0x00, 0x03, 0x00, 0x10, 0x00, 0x0d, +0x00, 0xbb, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x0b, +0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, 0x17, 0x07, +0x27, 0x07, 0x2e, 0x01, 0x35, 0x34, 0x36, 0x37, +0x17, 0x06, 0x15, 0x14, 0x16, 0x17, 0x9a, 0x2f, +0x2c, 0x21, 0x40, 0x1b, 0x2f, 0x3b, 0x2a, 0x04, +0x43, 0x1c, 0x14, 0x02, 0x9e, 0x07, 0xb8, 0x07, +0x06, 0x0e, 0x32, 0x26, 0x2e, 0x29, 0x02, 0x20, +0x03, 0x3b, 0x16, 0x24, 0x0d, 0x00, 0x00, 0x00, +0x00, 0x02, 0xff, 0xe8, 0x01, 0xcc, 0x00, 0xc0, +0x02, 0xa1, 0x00, 0x17, 0x00, 0x26, 0x00, 0x64, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x08, 0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, 0x0f, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x14, 0x2f, 0x1b, 0xb9, 0x00, 0x14, 0x00, +0x0f, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x1e, 0x2f, 0x1b, 0xb9, 0x00, 0x1e, +0x00, 0x0d, 0x3e, 0x59, 0xb8, 0x00, 0x14, 0x10, +0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, 0x00, +0x14, 0x10, 0xb9, 0x00, 0x03, 0x00, 0x01, 0xf4, +0xb8, 0x00, 0x0b, 0xd0, 0xb8, 0x00, 0x0b, 0x2f, +0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x0f, 0xd0, +0xb8, 0x00, 0x1e, 0x10, 0xb9, 0x00, 0x1d, 0x00, +0x01, 0xf4, 0x30, 0x31, 0x03, 0x3e, 0x01, 0x33, +0x32, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x17, +0x0e, 0x01, 0x23, 0x22, 0x2e, 0x02, 0x23, 0x22, +0x06, 0x07, 0x17, 0x3e, 0x01, 0x35, 0x34, 0x27, +0x37, 0x1e, 0x01, 0x15, 0x14, 0x0e, 0x02, 0x07, +0x18, 0x02, 0x1a, 0x1f, 0x13, 0x18, 0x14, 0x13, +0x0d, 0x0d, 0x12, 0x02, 0x1d, 0x02, 0x1b, 0x1f, +0x12, 0x19, 0x13, 0x13, 0x0d, 0x0d, 0x12, 0x02, +0x31, 0x15, 0x1c, 0x47, 0x03, 0x2d, 0x3d, 0x0e, +0x17, 0x1c, 0x0e, 0x02, 0x66, 0x19, 0x22, 0x0b, +0x0d, 0x0b, 0x0d, 0x14, 0x05, 0x19, 0x22, 0x0b, +0x0d, 0x0b, 0x0d, 0x14, 0x7c, 0x06, 0x12, 0x0c, +0x23, 0x01, 0x1c, 0x02, 0x1a, 0x1f, 0x0e, 0x15, +0x10, 0x0b, 0x04, 0x00, 0x00, 0x02, 0xff, 0xe8, +0x01, 0xcc, 0x00, 0xc0, 0x02, 0xa1, 0x00, 0x0e, +0x00, 0x26, 0x00, 0x60, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x17, 0x2f, 0x1b, 0xb9, +0x00, 0x17, 0x00, 0x0f, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x23, 0x2f, 0x1b, +0xb9, 0x00, 0x23, 0x00, 0x0f, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, +0x1b, 0xb9, 0x00, 0x08, 0x00, 0x0d, 0x3e, 0x59, +0xb9, 0x00, 0x09, 0x00, 0x01, 0xf4, 0xb8, 0x00, +0x23, 0x10, 0xb9, 0x00, 0x0f, 0x00, 0x01, 0xf4, +0xb8, 0x00, 0x23, 0x10, 0xb9, 0x00, 0x12, 0x00, +0x01, 0xf4, 0xb8, 0x00, 0x1a, 0xd0, 0xb8, 0x00, +0x1a, 0x2f, 0xb8, 0x00, 0x0f, 0x10, 0xb8, 0x00, +0x1e, 0xd0, 0x30, 0x31, 0x13, 0x2e, 0x03, 0x35, +0x34, 0x36, 0x37, 0x17, 0x06, 0x15, 0x14, 0x16, +0x17, 0x27, 0x3e, 0x01, 0x33, 0x32, 0x1e, 0x02, +0x33, 0x32, 0x36, 0x37, 0x17, 0x0e, 0x01, 0x23, +0x22, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x6a, +0x0e, 0x1d, 0x17, 0x0e, 0x3d, 0x2d, 0x04, 0x48, +0x1c, 0x16, 0x8a, 0x02, 0x1a, 0x1f, 0x13, 0x18, +0x14, 0x13, 0x0d, 0x0d, 0x12, 0x02, 0x1d, 0x02, +0x1b, 0x1f, 0x12, 0x19, 0x13, 0x13, 0x0d, 0x0d, +0x12, 0x02, 0x01, 0xcc, 0x04, 0x0b, 0x10, 0x15, +0x0e, 0x1f, 0x1a, 0x02, 0x1c, 0x01, 0x23, 0x0c, +0x12, 0x06, 0x81, 0x19, 0x22, 0x0b, 0x0d, 0x0b, +0x0d, 0x14, 0x05, 0x19, 0x22, 0x0b, 0x0d, 0x0b, +0x0d, 0x14, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x02, 0x06, 0x02, 0x93, 0x02, 0x06, +0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x61, +0x00, 0x00, 0x02, 0x0c, 0x02, 0x93, 0x00, 0x0e, +0x00, 0x17, 0x00, 0x4d, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, +0x00, 0x00, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, 0x2f, 0x1b, +0xb9, 0x00, 0x0d, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x10, 0xb9, 0x00, 0x02, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x16, 0x00, 0x00, 0x00, 0x0d, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x16, 0x10, 0xb9, +0x00, 0x05, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0d, +0x10, 0xb9, 0x00, 0x0f, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x13, 0x21, 0x15, 0x21, 0x15, 0x33, 0x32, +0x1e, 0x02, 0x15, 0x14, 0x06, 0x2b, 0x01, 0x37, +0x32, 0x36, 0x35, 0x34, 0x26, 0x2b, 0x01, 0x11, +0x61, 0x01, 0x7f, 0xfe, 0xaf, 0x92, 0x35, 0x57, +0x3d, 0x22, 0x77, 0x70, 0xc4, 0xb8, 0x63, 0x62, +0x65, 0x64, 0x86, 0x02, 0x93, 0x28, 0xf9, 0x14, +0x2b, 0x43, 0x2e, 0x61, 0x61, 0x26, 0x4a, 0x50, +0x4b, 0x41, 0xfe, 0xda, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x02, 0x15, 0x02, 0x93, 0x02, 0x06, +0x00, 0x05, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xc8, 0x02, 0x93, 0x02, 0x06, +0x02, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x21, +0xff, 0x44, 0x02, 0x4a, 0x02, 0x93, 0x00, 0x0c, +0x00, 0x23, 0x00, 0x4f, 0x00, 0x7d, 0xb8, 0x00, +0x14, 0x2f, 0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x21, 0x2f, 0x1b, 0xb9, 0x00, 0x21, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x11, 0x2f, 0x1b, 0xb9, 0x00, +0x11, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x16, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0b, 0xd0, 0xb8, +0x00, 0x21, 0x10, 0xb9, 0x00, 0x0c, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0b, 0x10, 0xb8, 0x00, 0x0d, +0xd0, 0xb8, 0x00, 0x14, 0x10, 0xb8, 0x00, 0x10, +0xd0, 0x30, 0x31, 0x13, 0x0e, 0x03, 0x07, 0x0e, +0x03, 0x07, 0x21, 0x11, 0x13, 0x15, 0x07, 0x23, +0x35, 0x21, 0x15, 0x23, 0x27, 0x35, 0x33, 0x3e, +0x03, 0x37, 0x3e, 0x03, 0x37, 0x21, 0x11, 0xfd, +0x09, 0x0d, 0x0c, 0x0e, 0x09, 0x09, 0x13, 0x13, +0x13, 0x09, 0x01, 0x5d, 0x74, 0x07, 0x27, 0xfe, +0x33, 0x27, 0x07, 0x1e, 0x0a, 0x16, 0x16, 0x18, +0x0d, 0x09, 0x10, 0x0e, 0x0e, 0x09, 0x01, 0x2c, +0x02, 0x6b, 0x31, 0x54, 0x52, 0x54, 0x30, 0x34, +0x4c, 0x38, 0x24, 0x0c, 0x02, 0x43, 0xfd, 0xbd, +0x1a, 0xca, 0xbc, 0xbc, 0xca, 0x1a, 0x04, 0x19, +0x36, 0x5a, 0x44, 0x34, 0x5a, 0x57, 0x5d, 0x38, +0xfd, 0x95, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xd4, 0x02, 0x93, 0x02, 0x06, +0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, +0x00, 0x00, 0x02, 0xf7, 0x02, 0x9f, 0x00, 0x33, +0x00, 0x83, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x16, 0x2f, 0x1b, 0xb9, 0x00, 0x16, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x09, 0x2f, 0x1b, 0xb9, 0x00, +0x09, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x1d, +0x00, 0x01, 0x00, 0x06, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x09, 0x10, 0xb8, 0x00, 0x05, 0xd0, 0xb8, +0x00, 0x01, 0xd0, 0xb8, 0x00, 0x06, 0x10, 0xb8, +0x00, 0x02, 0xd0, 0xba, 0x00, 0x0a, 0x00, 0x1d, +0x00, 0x06, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x16, +0x10, 0xb9, 0x00, 0x10, 0x00, 0x02, 0xf4, 0xb8, +0x00, 0x16, 0x10, 0xb8, 0x00, 0x1e, 0xd0, 0xb8, +0x00, 0x1e, 0x2f, 0xb8, 0x00, 0x1d, 0x10, 0xb8, +0x00, 0x21, 0xd0, 0xb8, 0x00, 0x16, 0x10, 0xb8, +0x00, 0x27, 0xd0, 0xb9, 0x00, 0x2d, 0x00, 0x02, +0xf4, 0xba, 0x00, 0x33, 0x00, 0x21, 0x00, 0x02, +0x11, 0x12, 0x39, 0x30, 0x31, 0x21, 0x23, 0x03, +0x23, 0x11, 0x23, 0x11, 0x23, 0x03, 0x23, 0x13, +0x27, 0x2e, 0x03, 0x23, 0x22, 0x06, 0x07, 0x27, +0x36, 0x33, 0x32, 0x1e, 0x02, 0x1f, 0x01, 0x33, +0x11, 0x33, 0x11, 0x33, 0x37, 0x3e, 0x03, 0x33, +0x32, 0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, 0x0e, +0x02, 0x0f, 0x01, 0x02, 0xf7, 0x35, 0xbd, 0x6f, +0x2c, 0x6f, 0xbd, 0x35, 0xcf, 0x4e, 0x0f, 0x19, +0x17, 0x14, 0x0b, 0x05, 0x0b, 0x05, 0x08, 0x0c, +0x0e, 0x13, 0x20, 0x20, 0x20, 0x12, 0x51, 0x6b, +0x2c, 0x6b, 0x50, 0x13, 0x20, 0x20, 0x20, 0x13, +0x0e, 0x0c, 0x09, 0x05, 0x0b, 0x05, 0x0b, 0x14, +0x16, 0x19, 0x0f, 0x4e, 0x01, 0x4b, 0xfe, 0xb5, +0x01, 0x4b, 0xfe, 0xb5, 0x01, 0x62, 0xae, 0x21, +0x26, 0x13, 0x06, 0x02, 0x02, 0x2e, 0x05, 0x09, +0x1b, 0x31, 0x28, 0xb0, 0x01, 0x21, 0xfe, 0xdf, +0xb0, 0x28, 0x31, 0x1b, 0x09, 0x05, 0x2e, 0x02, +0x02, 0x06, 0x13, 0x26, 0x21, 0xae, 0x00, 0x00, +0x00, 0x01, 0xff, 0xf3, 0xff, 0xf4, 0x03, 0x0d, +0x02, 0x9f, 0x00, 0x51, 0x00, 0x8d, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x02, +0x2f, 0x1b, 0xb9, 0x00, 0x02, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x13, 0x2f, 0x1b, 0xb9, 0x00, 0x13, 0x00, 0x05, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x15, 0x2f, 0x1b, 0xb9, 0x00, 0x15, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x2b, 0x00, 0x02, +0x00, 0x25, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x36, +0x00, 0x01, 0x00, 0x08, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x08, 0x10, 0xb8, 0x00, 0x0c, 0xd0, 0xb8, +0x00, 0x13, 0x10, 0xb9, 0x00, 0x19, 0x00, 0x02, +0xf4, 0xb8, 0x00, 0x36, 0x10, 0xb8, 0x00, 0x31, +0xd0, 0xb8, 0x00, 0x2b, 0x10, 0xb8, 0x00, 0x3c, +0xd0, 0xb8, 0x00, 0x25, 0x10, 0xb8, 0x00, 0x42, +0xd0, 0xb8, 0x00, 0x19, 0x10, 0xb8, 0x00, 0x4e, +0xd0, 0x30, 0x31, 0x05, 0x06, 0x23, 0x22, 0x2e, +0x02, 0x2f, 0x01, 0x23, 0x11, 0x23, 0x11, 0x23, +0x07, 0x0e, 0x03, 0x23, 0x22, 0x27, 0x37, 0x1e, +0x01, 0x33, 0x32, 0x3e, 0x02, 0x3f, 0x01, 0x27, +0x2e, 0x03, 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, +0x33, 0x32, 0x1e, 0x02, 0x1f, 0x01, 0x33, 0x11, +0x33, 0x11, 0x33, 0x37, 0x3e, 0x03, 0x33, 0x32, +0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, +0x0f, 0x01, 0x17, 0x1e, 0x03, 0x33, 0x32, 0x36, +0x37, 0x03, 0x0d, 0x0c, 0x10, 0x12, 0x1e, 0x1e, +0x20, 0x14, 0x62, 0x78, 0x2b, 0x77, 0x62, 0x14, +0x20, 0x1e, 0x1f, 0x12, 0x0f, 0x0c, 0x08, 0x05, +0x0b, 0x05, 0x0b, 0x13, 0x15, 0x18, 0x11, 0x61, +0x44, 0x0e, 0x18, 0x17, 0x15, 0x0b, 0x05, 0x0b, +0x05, 0x08, 0x0c, 0x0f, 0x12, 0x21, 0x1f, 0x20, +0x11, 0x45, 0x78, 0x2b, 0x78, 0x45, 0x12, 0x1f, +0x20, 0x21, 0x12, 0x0f, 0x0c, 0x09, 0x05, 0x0b, +0x05, 0x0b, 0x14, 0x17, 0x18, 0x0e, 0x45, 0x61, +0x11, 0x19, 0x15, 0x12, 0x0b, 0x05, 0x0b, 0x05, +0x07, 0x05, 0x09, 0x1b, 0x30, 0x28, 0xdb, 0xfe, +0xb5, 0x01, 0x4b, 0xdb, 0x28, 0x30, 0x1b, 0x09, +0x05, 0x2e, 0x02, 0x02, 0x06, 0x14, 0x26, 0x20, +0xd9, 0xb4, 0x1f, 0x26, 0x15, 0x06, 0x02, 0x02, +0x2e, 0x05, 0x09, 0x1b, 0x31, 0x28, 0xb0, 0x01, +0x21, 0xfe, 0xdf, 0xb0, 0x28, 0x31, 0x1b, 0x09, +0x05, 0x2e, 0x02, 0x02, 0x06, 0x15, 0x26, 0x1f, +0xb3, 0xda, 0x20, 0x26, 0x14, 0x06, 0x02, 0x02, +0x00, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x02, 0xe9, +0x02, 0x93, 0x00, 0x15, 0x00, 0x1d, 0x00, 0xbb, +0x00, 0x08, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x08, 0x10, 0xb8, 0x00, 0x03, +0xd0, 0xb8, 0x00, 0x0e, 0x10, 0xb8, 0x00, 0x12, +0xd0, 0x30, 0x31, 0x13, 0x03, 0x33, 0x13, 0x33, +0x11, 0x33, 0x11, 0x33, 0x13, 0x33, 0x03, 0x13, +0x23, 0x03, 0x23, 0x11, 0x23, 0x11, 0x23, 0x03, +0x23, 0xd9, 0xc6, 0x35, 0xb8, 0x65, 0x2e, 0x65, +0xb7, 0x36, 0xc7, 0xcb, 0x33, 0xbb, 0x68, 0x2e, +0x69, 0xba, 0x34, 0x01, 0x64, 0x01, 0x2f, 0xfe, +0xdf, 0x01, 0x21, 0xfe, 0xdf, 0x01, 0x21, 0xfe, +0xd1, 0xfe, 0x9c, 0x01, 0x4a, 0xfe, 0xb6, 0x01, +0x4a, 0xfe, 0xb6, 0x00, 0x00, 0x01, 0x00, 0x2e, +0xff, 0xf4, 0x01, 0xf8, 0x02, 0x9f, 0x00, 0x33, +0x00, 0x4d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x23, 0x2f, 0x1b, 0xb9, 0x00, 0x23, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x14, +0x00, 0x01, 0x00, 0x11, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x00, 0x10, 0xb9, 0x00, 0x09, 0x00, 0x02, +0xf4, 0xb8, 0x00, 0x23, 0x10, 0xb9, 0x00, 0x1c, +0x00, 0x02, 0xf4, 0xba, 0x00, 0x2c, 0x00, 0x11, +0x00, 0x14, 0x11, 0x12, 0x39, 0x30, 0x31, 0x05, +0x22, 0x26, 0x27, 0x37, 0x1e, 0x03, 0x33, 0x32, +0x3e, 0x02, 0x35, 0x34, 0x26, 0x2b, 0x01, 0x35, +0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, +0x22, 0x06, 0x07, 0x27, 0x3e, 0x01, 0x33, 0x32, +0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, 0x15, 0x1e, +0x01, 0x15, 0x14, 0x0e, 0x02, 0x01, 0x17, 0x4b, +0x6d, 0x31, 0x1d, 0x18, 0x2d, 0x31, 0x36, 0x20, +0x24, 0x41, 0x31, 0x1d, 0x70, 0x63, 0x43, 0x2f, +0x67, 0x5d, 0x17, 0x28, 0x37, 0x20, 0x32, 0x57, +0x1d, 0x1a, 0x1e, 0x66, 0x3c, 0x28, 0x48, 0x34, +0x1f, 0x37, 0x33, 0x3d, 0x51, 0x24, 0x3d, 0x52, +0x0c, 0x2f, 0x34, 0x1f, 0x18, 0x22, 0x15, 0x09, +0x14, 0x27, 0x39, 0x25, 0x4c, 0x48, 0x26, 0x44, +0x44, 0x1e, 0x2e, 0x20, 0x10, 0x25, 0x1e, 0x1f, +0x20, 0x2e, 0x16, 0x2a, 0x3d, 0x27, 0x37, 0x51, +0x10, 0x04, 0x0b, 0x55, 0x48, 0x2d, 0x49, 0x32, +0x1b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x61, +0x00, 0x00, 0x02, 0x23, 0x02, 0x93, 0x00, 0x13, +0x00, 0x49, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, 0x00, +0x13, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x05, +0x00, 0x00, 0x00, 0x13, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x08, 0xd0, 0xb8, +0x00, 0x13, 0x10, 0xb8, 0x00, 0x0b, 0xd0, 0xba, +0x00, 0x0f, 0x00, 0x08, 0x00, 0x0b, 0x11, 0x12, +0x39, 0x30, 0x31, 0x13, 0x33, 0x11, 0x14, 0x06, +0x07, 0x33, 0x37, 0x01, 0x33, 0x11, 0x23, 0x11, +0x34, 0x36, 0x37, 0x23, 0x07, 0x01, 0x23, 0x61, +0x2e, 0x04, 0x02, 0x04, 0x4b, 0x01, 0x1a, 0x31, +0x2e, 0x04, 0x02, 0x04, 0x4a, 0xfe, 0xe5, 0x31, +0x02, 0x93, 0xfe, 0x6c, 0x30, 0x60, 0x30, 0x82, +0x01, 0xd2, 0xfd, 0x6d, 0x01, 0x99, 0x30, 0x5b, +0x30, 0x81, 0xfe, 0x2d, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x02, 0x23, 0x03, 0x47, 0x02, 0x26, +0x03, 0x94, 0x00, 0x00, 0x00, 0x07, 0x07, 0x32, +0x01, 0x46, 0x00, 0x01, 0x00, 0x01, 0x00, 0x61, +0x00, 0x00, 0x02, 0x26, 0x02, 0x9f, 0x00, 0x1b, +0x00, 0x57, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, +0x05, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x08, +0x00, 0x01, 0x00, 0x03, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x05, 0x10, 0xb8, 0x00, 0x01, 0xd0, 0xb8, +0x00, 0x0f, 0x10, 0xb8, 0x00, 0x06, 0xd0, 0xb8, +0x00, 0x06, 0x2f, 0xb8, 0x00, 0x0f, 0x10, 0xb9, +0x00, 0x15, 0x00, 0x02, 0xf4, 0xba, 0x00, 0x1b, +0x00, 0x08, 0x00, 0x03, 0x11, 0x12, 0x39, 0x30, +0x31, 0x21, 0x23, 0x03, 0x23, 0x11, 0x23, 0x11, +0x33, 0x11, 0x33, 0x37, 0x3e, 0x03, 0x33, 0x32, +0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, +0x0f, 0x01, 0x02, 0x26, 0x34, 0xdb, 0x88, 0x2e, +0x2e, 0x8a, 0x60, 0x15, 0x21, 0x1e, 0x1e, 0x13, +0x0e, 0x0c, 0x08, 0x05, 0x0b, 0x05, 0x0b, 0x12, +0x15, 0x1a, 0x12, 0x5f, 0x01, 0x4b, 0xfe, 0xb5, +0x02, 0x93, 0xfe, 0xdf, 0xb0, 0x28, 0x31, 0x1b, +0x09, 0x05, 0x2e, 0x02, 0x02, 0x06, 0x14, 0x26, +0x20, 0xb0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x61, +0xff, 0xf4, 0x02, 0x34, 0x02, 0x9f, 0x00, 0x2a, +0x00, 0x43, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x02, 0x2f, 0x1b, 0xb9, 0x00, +0x02, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x15, +0x00, 0x02, 0x00, 0x1b, 0x00, 0x04, 0x2b, 0xbb, +0x00, 0x0f, 0x00, 0x01, 0x00, 0x08, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x02, 0x10, 0xb9, 0x00, 0x27, +0x00, 0x02, 0xf4, 0x30, 0x31, 0x05, 0x06, 0x23, +0x22, 0x2e, 0x02, 0x2f, 0x01, 0x23, 0x11, 0x23, +0x11, 0x33, 0x11, 0x33, 0x37, 0x3e, 0x03, 0x33, +0x32, 0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, 0x0e, +0x02, 0x0f, 0x01, 0x17, 0x1e, 0x03, 0x33, 0x32, +0x36, 0x37, 0x02, 0x34, 0x0c, 0x10, 0x12, 0x1d, +0x1e, 0x21, 0x15, 0x7c, 0x8a, 0x2e, 0x2e, 0x8a, +0x60, 0x16, 0x21, 0x1d, 0x1e, 0x12, 0x0f, 0x0c, +0x08, 0x05, 0x0b, 0x05, 0x0b, 0x12, 0x15, 0x1a, +0x12, 0x60, 0x7d, 0x12, 0x19, 0x15, 0x12, 0x0b, +0x05, 0x0b, 0x05, 0x07, 0x05, 0x09, 0x1b, 0x30, +0x28, 0xdb, 0xfe, 0xb5, 0x02, 0x93, 0xfe, 0xdf, +0xb0, 0x28, 0x31, 0x1b, 0x09, 0x05, 0x2e, 0x02, +0x02, 0x06, 0x14, 0x26, 0x20, 0xb0, 0xdd, 0x20, +0x26, 0x14, 0x06, 0x02, 0x02, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x02, 0x1e, +0x02, 0x93, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0xbb, +0x00, 0x03, 0x00, 0x01, 0x00, 0x09, 0x00, 0x04, +0x2b, 0x30, 0x31, 0x13, 0x33, 0x11, 0x33, 0x13, +0x33, 0x03, 0x13, 0x23, 0x03, 0x23, 0x11, 0x23, +0x61, 0x2e, 0x72, 0xe1, 0x38, 0xf1, 0xf5, 0x35, +0xe1, 0x79, 0x2e, 0x02, 0x93, 0xfe, 0xdf, 0x01, +0x21, 0xfe, 0xd1, 0xfe, 0x9c, 0x01, 0x4a, 0xfe, +0xb6, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x06, +0xff, 0xf4, 0x02, 0x05, 0x02, 0x93, 0x00, 0x1b, +0x00, 0x41, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x07, +0x00, 0x02, 0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x12, 0xd0, 0xb8, 0x00, 0x12, 0x2f, 0xb8, +0x00, 0x0f, 0x10, 0xb9, 0x00, 0x13, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x17, 0x22, 0x26, 0x27, 0x37, +0x1e, 0x01, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x3e, +0x01, 0x37, 0x21, 0x11, 0x23, 0x11, 0x23, 0x0e, +0x01, 0x07, 0x0e, 0x03, 0x32, 0x0a, 0x16, 0x0c, +0x0c, 0x08, 0x0c, 0x08, 0x0d, 0x18, 0x17, 0x17, +0x0c, 0x14, 0x26, 0x14, 0x01, 0x2a, 0x2e, 0xd7, +0x13, 0x21, 0x13, 0x0d, 0x1c, 0x20, 0x26, 0x0c, +0x03, 0x05, 0x2c, 0x02, 0x03, 0x0c, 0x28, 0x49, +0x3e, 0x6d, 0xd3, 0x75, 0xfd, 0x6d, 0x02, 0x6b, +0x67, 0xc6, 0x65, 0x47, 0x5a, 0x32, 0x12, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x02, 0x61, +0x02, 0x93, 0x02, 0x06, 0x00, 0x10, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x02, 0x1e, +0x02, 0x93, 0x02, 0x06, 0x00, 0x0b, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x02, 0x9f, 0x02, 0x06, 0x00, 0x12, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x02, 0x19, +0x02, 0x93, 0x02, 0x06, 0x02, 0x50, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xf6, +0x02, 0x93, 0x02, 0x06, 0x00, 0x13, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x0f, +0x02, 0x9f, 0x02, 0x06, 0x00, 0x06, 0x00, 0x00, +0xff, 0xff, 0x00, 0x1d, 0x00, 0x00, 0x01, 0xef, +0x02, 0x93, 0x02, 0x06, 0x00, 0x17, 0x00, 0x00, +0x00, 0x01, 0x00, 0x07, 0xff, 0xf4, 0x01, 0xe6, +0x02, 0x93, 0x00, 0x15, 0x00, 0x47, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, 0x2f, +0x1b, 0xb9, 0x00, 0x0b, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x06, 0x00, 0x02, 0xf4, 0xba, +0x00, 0x0f, 0x00, 0x00, 0x00, 0x0b, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x0f, 0x10, 0xb9, 0x00, 0x0a, +0x00, 0x02, 0xf4, 0xb8, 0x00, 0x0b, 0x10, 0xb8, +0x00, 0x11, 0xd0, 0x30, 0x31, 0x17, 0x22, 0x26, +0x27, 0x37, 0x16, 0x33, 0x32, 0x36, 0x3f, 0x01, +0x03, 0x33, 0x13, 0x17, 0x33, 0x37, 0x13, 0x33, +0x03, 0x0e, 0x01, 0x7b, 0x12, 0x17, 0x0d, 0x0c, +0x0f, 0x16, 0x26, 0x2c, 0x10, 0x11, 0xe2, 0x31, +0x96, 0x2f, 0x04, 0x2b, 0x8a, 0x30, 0xdf, 0x15, +0x41, 0x0c, 0x04, 0x05, 0x2b, 0x06, 0x20, 0x23, +0x2b, 0x02, 0x03, 0xfe, 0xa0, 0x71, 0x71, 0x01, +0x60, 0xfd, 0xd3, 0x36, 0x3c, 0x00, 0x00, 0x00, +0x00, 0x03, 0x00, 0x30, 0xff, 0xf4, 0x02, 0x99, +0x02, 0x9f, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x1f, +0x00, 0x59, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x1e, 0x2f, 0x1b, 0xb9, 0x00, 0x1e, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x16, 0x2f, 0x1b, 0xb9, 0x00, +0x16, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x07, +0x00, 0x01, 0x00, 0x1d, 0x00, 0x04, 0x2b, 0xbb, +0x00, 0x17, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x0d, 0x10, 0xb8, 0x00, 0x00, +0xd0, 0xb8, 0x00, 0x07, 0x10, 0xb8, 0x00, 0x06, +0xd0, 0xb8, 0x00, 0x1d, 0x10, 0xb8, 0x00, 0x0e, +0xd0, 0xb8, 0x00, 0x17, 0x10, 0xb8, 0x00, 0x14, +0xd0, 0x30, 0x31, 0x25, 0x3e, 0x01, 0x35, 0x34, +0x26, 0x27, 0x23, 0x0e, 0x01, 0x15, 0x14, 0x16, +0x17, 0x13, 0x1e, 0x01, 0x15, 0x14, 0x06, 0x07, +0x15, 0x23, 0x35, 0x2e, 0x01, 0x35, 0x34, 0x36, +0x37, 0x35, 0x33, 0x01, 0x79, 0x77, 0x7b, 0x7b, +0x77, 0x29, 0x77, 0x7b, 0x7b, 0x77, 0x29, 0x8a, +0x96, 0x96, 0x8a, 0x29, 0x8a, 0x96, 0x96, 0x8a, +0x29, 0x7c, 0x01, 0x70, 0x5f, 0x5e, 0x6c, 0x01, +0x01, 0x6c, 0x5e, 0x5f, 0x70, 0x01, 0x01, 0xc1, +0x02, 0x7e, 0x71, 0x72, 0x82, 0x02, 0x62, 0x62, +0x02, 0x82, 0x72, 0x71, 0x7e, 0x02, 0x62, 0x00, +0xff, 0xff, 0x00, 0x11, 0x00, 0x00, 0x01, 0xd1, +0x02, 0x93, 0x02, 0x06, 0x00, 0x1b, 0x00, 0x00, +0x00, 0x01, 0x00, 0x61, 0xff, 0x44, 0x02, 0x51, +0x02, 0x93, 0x00, 0x0c, 0x00, 0x3d, 0x00, 0x7d, +0xb8, 0x00, 0x03, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x06, 0x2f, 0x1b, 0xb9, +0x00, 0x06, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, +0xb9, 0x00, 0x05, 0x00, 0x05, 0x3e, 0x59, 0xb9, +0x00, 0x09, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, +0xd0, 0xb8, 0x00, 0x06, 0x10, 0xb8, 0x00, 0x0a, +0xd0, 0x30, 0x31, 0x25, 0x15, 0x07, 0x23, 0x35, +0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, +0x02, 0x51, 0x07, 0x27, 0xfe, 0x3e, 0x2e, 0x01, +0x4e, 0x2e, 0x28, 0x1a, 0xca, 0xbc, 0x02, 0x93, +0xfd, 0x95, 0x02, 0x6b, 0xfd, 0x95, 0x00, 0x00, +0x00, 0x01, 0x00, 0x47, 0x00, 0x00, 0x01, 0xe2, +0x02, 0x93, 0x00, 0x17, 0x00, 0x37, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x09, 0x2f, +0x1b, 0xb9, 0x00, 0x09, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x16, +0x2f, 0x1b, 0xb9, 0x00, 0x16, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x10, 0x00, 0x01, 0x00, 0x03, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x09, 0x10, 0xb8, +0x00, 0x14, 0xd0, 0x30, 0x31, 0x01, 0x0e, 0x01, +0x23, 0x22, 0x2e, 0x02, 0x3d, 0x01, 0x33, 0x15, +0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x11, +0x33, 0x11, 0x23, 0x01, 0xb4, 0x1a, 0x3f, 0x2b, +0x36, 0x57, 0x3c, 0x20, 0x2d, 0x1a, 0x31, 0x48, +0x2d, 0x2a, 0x3f, 0x17, 0x2e, 0x2e, 0x01, 0x37, +0x04, 0x07, 0x15, 0x2f, 0x4c, 0x37, 0xa0, 0xa0, +0x2d, 0x3d, 0x25, 0x0f, 0x06, 0x05, 0x01, 0x33, +0xfd, 0x6d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x61, +0x00, 0x00, 0x02, 0xe5, 0x02, 0x93, 0x00, 0x0b, +0x00, 0x47, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0a, 0x2f, 0x1b, 0xb9, 0x00, +0x0a, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x02, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x04, 0xd0, 0xb8, 0x00, 0x02, 0x10, 0xb8, +0x00, 0x06, 0xd0, 0xb8, 0x00, 0x07, 0xd0, 0xb8, +0x00, 0x04, 0x10, 0xb8, 0x00, 0x08, 0xd0, 0x30, +0x31, 0x13, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, +0x33, 0x11, 0x33, 0x11, 0x21, 0x61, 0x2e, 0xfd, +0x2e, 0xfd, 0x2e, 0xfd, 0x7c, 0x02, 0x93, 0xfd, +0x95, 0x02, 0x6b, 0xfd, 0x95, 0x02, 0x6b, 0xfd, +0x6d, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x61, +0xff, 0x44, 0x03, 0x2a, 0x02, 0x93, 0x00, 0x10, +0x00, 0x45, 0x00, 0x7d, 0xb8, 0x00, 0x03, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, 0x11, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, 0x05, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x08, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0c, 0xd0, 0xb8, 0x00, 0x00, +0xd0, 0xb8, 0x00, 0x06, 0x10, 0xb8, 0x00, 0x0a, +0xd0, 0xb8, 0x00, 0x0e, 0xd0, 0x30, 0x31, 0x25, +0x15, 0x07, 0x23, 0x35, 0x21, 0x11, 0x33, 0x11, +0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, +0x03, 0x2a, 0x07, 0x26, 0xfd, 0x64, 0x2e, 0xfd, +0x2e, 0xfd, 0x2e, 0x28, 0x1a, 0xca, 0xbc, 0x02, +0x93, 0xfd, 0x95, 0x02, 0x6b, 0xfd, 0x95, 0x02, +0x6b, 0xfd, 0x95, 0x00, 0x00, 0x02, 0x00, 0x1d, +0x00, 0x00, 0x02, 0x9a, 0x02, 0x93, 0x00, 0x0e, +0x00, 0x17, 0x00, 0x43, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x02, 0x2f, 0x1b, 0xb9, +0x00, 0x02, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, 0x2f, 0x1b, +0xb9, 0x00, 0x0d, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x05, 0x00, 0x01, 0x00, 0x15, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x02, 0x10, 0xb9, 0x00, 0x00, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0d, 0x10, 0xb9, +0x00, 0x0f, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, +0x23, 0x35, 0x21, 0x11, 0x33, 0x32, 0x1e, 0x02, +0x15, 0x14, 0x06, 0x2b, 0x01, 0x37, 0x32, 0x36, +0x35, 0x34, 0x26, 0x2b, 0x01, 0x11, 0xfb, 0xde, +0x01, 0x0c, 0x82, 0x35, 0x58, 0x3f, 0x23, 0x78, +0x6f, 0xb8, 0xac, 0x63, 0x62, 0x69, 0x64, 0x76, +0x02, 0x6b, 0x28, 0xfe, 0xe1, 0x15, 0x2c, 0x42, +0x2e, 0x62, 0x61, 0x27, 0x49, 0x51, 0x48, 0x44, +0xfe, 0xda, 0x00, 0x00, 0x00, 0x03, 0x00, 0x61, +0x00, 0x00, 0x02, 0x9d, 0x02, 0x93, 0x00, 0x0c, +0x00, 0x15, 0x00, 0x19, 0x00, 0x49, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, +0x2f, 0x1b, 0xb9, 0x00, 0x0b, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x03, 0x00, 0x01, 0x00, 0x13, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x0b, 0x10, 0xb9, +0x00, 0x0d, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x16, 0xd0, 0xb8, 0x00, 0x0b, +0x10, 0xb8, 0x00, 0x19, 0xd0, 0x30, 0x31, 0x13, +0x33, 0x11, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, +0x06, 0x2b, 0x01, 0x37, 0x32, 0x36, 0x35, 0x34, +0x26, 0x2b, 0x01, 0x11, 0x01, 0x33, 0x11, 0x23, +0x61, 0x2e, 0x7c, 0x36, 0x56, 0x3e, 0x21, 0x78, +0x70, 0xad, 0xa2, 0x62, 0x63, 0x65, 0x64, 0x70, +0x01, 0xe0, 0x2e, 0x2e, 0x02, 0x93, 0xfe, 0xe1, +0x14, 0x2c, 0x43, 0x2e, 0x62, 0x61, 0x27, 0x49, +0x51, 0x4a, 0x42, 0xfe, 0xda, 0x02, 0x6c, 0xfd, +0x6d, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x61, +0x00, 0x00, 0x02, 0x08, 0x02, 0x93, 0x00, 0x0c, +0x00, 0x15, 0x00, 0x39, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, +0x00, 0x00, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, 0x2f, 0x1b, +0xb9, 0x00, 0x0b, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x03, 0x00, 0x01, 0x00, 0x13, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x0b, 0x10, 0xb9, 0x00, 0x0d, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, 0x33, 0x11, +0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x2b, +0x01, 0x37, 0x32, 0x36, 0x35, 0x34, 0x26, 0x2b, +0x01, 0x11, 0x61, 0x2e, 0x8e, 0x36, 0x56, 0x3e, +0x21, 0x78, 0x70, 0xbf, 0xb4, 0x62, 0x63, 0x65, +0x64, 0x82, 0x02, 0x93, 0xfe, 0xe1, 0x14, 0x2c, +0x43, 0x2e, 0x62, 0x61, 0x27, 0x49, 0x51, 0x4a, +0x42, 0xfe, 0xda, 0x00, 0x00, 0x01, 0x00, 0x26, +0xff, 0xf4, 0x01, 0xfe, 0x02, 0x9f, 0x00, 0x20, +0x00, 0x49, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, 0x03, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0d, 0x2f, 0x1b, 0xb9, 0x00, +0x0d, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x14, +0x00, 0x02, 0xf4, 0xba, 0x00, 0x18, 0x00, 0x03, +0x00, 0x0d, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x18, +0x2f, 0xb9, 0x00, 0x1a, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x03, 0x10, 0xb9, 0x00, 0x1d, 0x00, 0x02, +0xf4, 0x30, 0x31, 0x13, 0x3e, 0x01, 0x33, 0x32, +0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, +0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, +0x37, 0x21, 0x35, 0x21, 0x2e, 0x01, 0x23, 0x22, +0x06, 0x07, 0x39, 0x1c, 0x63, 0x3c, 0x3d, 0x63, +0x45, 0x25, 0x26, 0x46, 0x61, 0x3c, 0x45, 0x62, +0x28, 0x1b, 0x26, 0x54, 0x38, 0x65, 0x76, 0x02, +0xfe, 0xd0, 0x01, 0x2f, 0x07, 0x71, 0x64, 0x2f, +0x53, 0x1d, 0x02, 0x50, 0x1f, 0x30, 0x2d, 0x57, +0x7e, 0x52, 0x52, 0x7f, 0x58, 0x2e, 0x32, 0x2c, +0x1d, 0x28, 0x29, 0x9a, 0x92, 0x28, 0x7b, 0x88, +0x25, 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x61, +0xff, 0xf4, 0x03, 0x3c, 0x02, 0x9f, 0x00, 0x13, +0x00, 0x2e, 0x00, 0x65, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x2c, 0x2f, 0x1b, 0xb9, +0x00, 0x2c, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x19, 0x2f, 0x1b, +0xb9, 0x00, 0x19, 0x00, 0x11, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x2a, 0x2f, +0x1b, 0xb9, 0x00, 0x2a, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x23, +0x2f, 0x1b, 0xb9, 0x00, 0x23, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x14, 0x00, 0x01, 0x00, 0x28, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x23, 0x10, 0xb9, +0x00, 0x00, 0x00, 0x02, 0xf4, 0xb8, 0x00, 0x19, +0x10, 0xb9, 0x00, 0x0a, 0x00, 0x02, 0xf4, 0x30, +0x31, 0x25, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, +0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, +0x02, 0x03, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, +0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, +0x35, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x02, +0x39, 0x30, 0x4e, 0x37, 0x1e, 0x1e, 0x37, 0x4e, +0x30, 0x30, 0x4f, 0x37, 0x1e, 0x1e, 0x37, 0x4f, +0xd1, 0x04, 0x2a, 0x43, 0x5a, 0x36, 0x39, 0x60, +0x44, 0x26, 0x26, 0x44, 0x60, 0x39, 0x39, 0x5f, +0x44, 0x26, 0xa8, 0x2e, 0x2e, 0x1e, 0x2b, 0x4f, +0x6f, 0x45, 0x44, 0x6e, 0x4d, 0x2a, 0x2a, 0x4d, +0x6e, 0x44, 0x45, 0x6f, 0x4f, 0x2b, 0x01, 0x54, +0x46, 0x6f, 0x4e, 0x2a, 0x2f, 0x59, 0x7d, 0x4e, +0x4e, 0x7f, 0x5a, 0x31, 0x30, 0x5a, 0x7e, 0x4e, +0xfe, 0xb6, 0x02, 0x93, 0xfe, 0xdf, 0x00, 0x00, +0x00, 0x02, 0x00, 0x1c, 0x00, 0x00, 0x01, 0xd0, +0x02, 0x93, 0x00, 0x08, 0x00, 0x1a, 0x00, 0x54, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x09, 0x2f, 0x1b, 0xb9, 0x00, 0x09, 0x00, 0x11, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0a, 0x2f, 0x1b, 0xb9, 0x00, 0x0a, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0e, 0x2f, 0x1b, 0xb9, 0x00, 0x0e, +0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x08, 0x00, +0x01, 0x00, 0x0c, 0x00, 0x04, 0x2b, 0xb8, 0x00, +0x09, 0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, +0xba, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x08, 0x11, +0x12, 0x39, 0x30, 0x31, 0x01, 0x23, 0x22, 0x06, +0x15, 0x14, 0x16, 0x3b, 0x01, 0x13, 0x11, 0x23, +0x11, 0x23, 0x03, 0x23, 0x13, 0x2e, 0x03, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x01, 0xa2, 0x82, 0x58, +0x5d, 0x5d, 0x58, 0x82, 0x2e, 0x2e, 0x93, 0xbd, +0x36, 0xc2, 0x24, 0x3b, 0x2c, 0x18, 0x1f, 0x39, +0x50, 0x31, 0x02, 0x6c, 0x3d, 0x4a, 0x49, 0x47, +0x01, 0x3e, 0xfd, 0x6d, 0x01, 0x2f, 0xfe, 0xd1, +0x01, 0x33, 0x05, 0x1b, 0x2c, 0x3e, 0x28, 0x2f, +0x42, 0x2a, 0x13, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xd4, 0x03, 0x54, 0x02, 0x26, +0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x07, 0x22, +0x01, 0x1a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xd4, 0x03, 0x1e, 0x02, 0x26, +0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x07, 0x36, +0x01, 0x1a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1d, +0xff, 0xf4, 0x02, 0x6f, 0x02, 0x93, 0x00, 0x27, +0x00, 0x53, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x17, 0x2f, 0x1b, 0xb9, 0x00, 0x17, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x0f, +0x00, 0x01, 0x00, 0x1e, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x00, 0x10, 0xb9, 0x00, 0x07, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x14, +0xd0, 0xb8, 0x00, 0x14, 0x2f, 0xb8, 0x00, 0x17, +0x10, 0xb9, 0x00, 0x16, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x19, 0xd0, 0x30, 0x31, 0x05, 0x22, 0x26, +0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x3e, 0x02, +0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x11, +0x23, 0x11, 0x23, 0x35, 0x21, 0x15, 0x23, 0x15, +0x3e, 0x01, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, +0x0e, 0x02, 0x01, 0xc1, 0x10, 0x23, 0x0a, 0x0a, +0x07, 0x1d, 0x0b, 0x16, 0x2e, 0x26, 0x19, 0x63, +0x5a, 0x20, 0x42, 0x18, 0x2e, 0xbe, 0x01, 0xdf, +0xf3, 0x1a, 0x42, 0x22, 0x34, 0x56, 0x3d, 0x21, +0x1f, 0x32, 0x3e, 0x0c, 0x07, 0x03, 0x28, 0x03, +0x06, 0x10, 0x26, 0x3e, 0x2f, 0x57, 0x4e, 0x07, +0x05, 0xfe, 0xa7, 0x02, 0x6b, 0x28, 0x28, 0xe9, +0x05, 0x06, 0x18, 0x31, 0x4e, 0x36, 0x3a, 0x4e, +0x30, 0x14, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xc8, 0x03, 0x54, 0x02, 0x26, +0x02, 0x43, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x01, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x0f, 0x02, 0x9f, 0x00, 0x20, +0x00, 0x4d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0d, 0x2f, 0x1b, 0xb9, 0x00, 0x0d, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, +0x03, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x0d, +0x10, 0xb9, 0x00, 0x14, 0x00, 0x02, 0xf4, 0xba, +0x00, 0x19, 0x00, 0x0d, 0x00, 0x03, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x19, 0x2f, 0xb9, 0x00, 0x18, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x03, 0x10, 0xb9, +0x00, 0x1d, 0x00, 0x02, 0xf4, 0x30, 0x31, 0x25, +0x0e, 0x01, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, +0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, +0x01, 0x23, 0x22, 0x06, 0x07, 0x21, 0x15, 0x21, +0x1e, 0x01, 0x33, 0x32, 0x36, 0x37, 0x02, 0x0f, +0x26, 0x5e, 0x40, 0x3f, 0x66, 0x48, 0x27, 0x28, +0x49, 0x67, 0x40, 0x3a, 0x59, 0x1a, 0x1b, 0x1b, +0x4a, 0x2d, 0x68, 0x79, 0x08, 0x01, 0x2e, 0xfe, +0xd1, 0x02, 0x79, 0x6d, 0x33, 0x50, 0x24, 0x52, +0x2c, 0x32, 0x2e, 0x58, 0x7f, 0x52, 0x52, 0x7e, +0x57, 0x2d, 0x30, 0x1f, 0x1f, 0x1f, 0x25, 0x88, +0x7b, 0x28, 0x93, 0x99, 0x29, 0x28, 0x00, 0x00, +0xff, 0xff, 0x00, 0x2e, 0xff, 0xf4, 0x01, 0xe0, +0x02, 0x9f, 0x02, 0x06, 0x00, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x00, 0x8f, +0x02, 0x93, 0x02, 0x06, 0x00, 0x0c, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x00, 0xfe, +0x03, 0x1e, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, +0x00, 0x06, 0x07, 0x36, 0x78, 0x00, 0x00, 0x00, +0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00, 0xdc, +0x03, 0x1e, 0x00, 0x0b, 0x00, 0x17, 0x00, 0x1b, +0x00, 0x3d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x18, 0x2f, 0x1b, 0xb9, 0x00, 0x18, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x1a, 0x2f, 0x1b, 0xb9, 0x00, +0x1a, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x06, +0x00, 0x00, 0x00, 0x03, 0x2b, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x0c, 0xd0, 0xb8, 0x00, 0x06, +0x10, 0xb8, 0x00, 0x12, 0xd0, 0x30, 0x31, 0x13, +0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, +0x15, 0x14, 0x06, 0x33, 0x22, 0x26, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, +0x33, 0x11, 0x23, 0x38, 0x0f, 0x14, 0x14, 0x0f, +0x10, 0x14, 0x14, 0x70, 0x0f, 0x15, 0x15, 0x0f, +0x0f, 0x15, 0x15, 0x66, 0x2e, 0x2e, 0x02, 0xd5, +0x13, 0x11, 0x11, 0x14, 0x14, 0x11, 0x11, 0x13, +0x13, 0x11, 0x11, 0x14, 0x14, 0x11, 0x11, 0x13, +0x42, 0xfd, 0x6d, 0x00, 0xff, 0xff, 0x00, 0x29, +0xff, 0xf4, 0x01, 0x6f, 0x02, 0x93, 0x02, 0x06, +0x00, 0x0d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, +0xff, 0xf4, 0x03, 0x4d, 0x02, 0x93, 0x00, 0x08, +0x00, 0x2c, 0x00, 0x55, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x2a, 0x2f, 0x1b, 0xb9, +0x00, 0x2a, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x1c, 0x2f, 0x1b, +0xb9, 0x00, 0x1c, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x2c, 0x00, 0x01, 0x00, 0x07, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x1c, 0x10, 0xb8, 0x00, 0x12, +0xd0, 0xb8, 0x00, 0x12, 0x2f, 0xb9, 0x00, 0x00, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x2a, 0x10, 0xb9, +0x00, 0x13, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x1c, +0x10, 0xb9, 0x00, 0x22, 0x00, 0x02, 0xf4, 0x30, +0x31, 0x25, 0x32, 0x36, 0x35, 0x34, 0x26, 0x2b, +0x01, 0x11, 0x13, 0x32, 0x1e, 0x02, 0x15, 0x14, +0x06, 0x2b, 0x01, 0x11, 0x23, 0x0e, 0x01, 0x07, +0x0e, 0x03, 0x23, 0x22, 0x27, 0x37, 0x1e, 0x01, +0x33, 0x32, 0x3e, 0x02, 0x37, 0x3e, 0x01, 0x37, +0x21, 0x11, 0x02, 0x5a, 0x63, 0x63, 0x66, 0x64, +0x64, 0x70, 0x36, 0x56, 0x3e, 0x21, 0x78, 0x6f, +0xa2, 0xc2, 0x13, 0x21, 0x13, 0x0d, 0x1c, 0x20, +0x26, 0x18, 0x16, 0x17, 0x0c, 0x08, 0x0c, 0x08, +0x0d, 0x19, 0x16, 0x17, 0x0c, 0x15, 0x26, 0x14, +0x01, 0x15, 0x27, 0x49, 0x51, 0x4a, 0x42, 0xfe, +0xda, 0x01, 0x4d, 0x14, 0x2c, 0x43, 0x2e, 0x62, +0x61, 0x02, 0x6b, 0x67, 0xc8, 0x65, 0x47, 0x59, +0x32, 0x11, 0x08, 0x2c, 0x02, 0x03, 0x0c, 0x28, +0x49, 0x3e, 0x6d, 0xd3, 0x75, 0xfe, 0xe1, 0x00, +0x00, 0x02, 0x00, 0x61, 0x00, 0x00, 0x03, 0x6e, +0x02, 0x93, 0x00, 0x08, 0x00, 0x1d, 0x00, 0x63, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x17, 0x2f, 0x1b, 0xb9, 0x00, 0x17, 0x00, 0x11, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x16, 0x2f, 0x1b, 0xb9, 0x00, 0x16, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x12, 0xd0, 0xb9, +0x00, 0x00, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x14, +0x00, 0x17, 0x00, 0x16, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x14, 0x2f, 0xb8, 0x00, 0x07, 0xd0, 0xb8, +0x00, 0x07, 0x2f, 0xb8, 0x00, 0x14, 0x10, 0xb9, +0x00, 0x19, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x17, +0x10, 0xb8, 0x00, 0x1b, 0xd0, 0xb8, 0x00, 0x19, +0x10, 0xb8, 0x00, 0x1d, 0xd0, 0xb8, 0x00, 0x1d, +0x2f, 0x30, 0x31, 0x25, 0x32, 0x36, 0x35, 0x34, +0x26, 0x2b, 0x01, 0x11, 0x13, 0x32, 0x1e, 0x02, +0x15, 0x14, 0x06, 0x2b, 0x01, 0x11, 0x21, 0x11, +0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, +0x02, 0x7b, 0x63, 0x63, 0x65, 0x64, 0x64, 0x70, +0x35, 0x57, 0x3d, 0x21, 0x78, 0x6f, 0xa1, 0xfe, +0xa9, 0x2e, 0x2e, 0x01, 0x57, 0x2e, 0x27, 0x49, +0x51, 0x4a, 0x42, 0xfe, 0xda, 0x01, 0x4d, 0x14, +0x2c, 0x43, 0x2e, 0x62, 0x61, 0x01, 0x4a, 0xfe, +0xb6, 0x02, 0x93, 0xfe, 0xdf, 0x01, 0x21, 0xfe, +0xe1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1d, +0x00, 0x00, 0x02, 0x64, 0x02, 0x93, 0x00, 0x17, +0x00, 0x45, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x14, 0x2f, 0x1b, 0xb9, 0x00, 0x14, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x11, 0x2f, 0x1b, 0xb9, 0x00, +0x11, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x0c, +0x00, 0x01, 0x00, 0x03, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x11, 0x10, 0xb8, 0x00, 0x08, 0xd0, 0xb8, +0x00, 0x14, 0x10, 0xb9, 0x00, 0x13, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x16, 0xd0, 0x30, 0x31, 0x01, +0x3e, 0x01, 0x33, 0x32, 0x16, 0x1d, 0x01, 0x23, +0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x11, +0x23, 0x11, 0x23, 0x35, 0x21, 0x15, 0x23, 0x01, +0x09, 0x1a, 0x43, 0x20, 0x6a, 0x74, 0x2d, 0x5b, +0x5a, 0x1f, 0x42, 0x18, 0x2e, 0xbe, 0x01, 0xdf, +0xf3, 0x01, 0x82, 0x05, 0x06, 0x5c, 0x69, 0xc8, +0xc8, 0x56, 0x47, 0x07, 0x05, 0xfe, 0xa7, 0x02, +0x6b, 0x28, 0x28, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x02, 0x26, 0x03, 0x55, 0x02, 0x26, +0x03, 0x96, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x01, 0x38, 0x00, 0x01, 0x00, 0x02, 0x00, 0x61, +0xff, 0xf4, 0x02, 0x34, 0x03, 0x55, 0x00, 0x03, +0x00, 0x2e, 0x00, 0x43, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, 0x1b, 0xb9, +0x00, 0x04, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x06, 0x2f, 0x1b, +0xb9, 0x00, 0x06, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x19, 0x00, 0x02, 0x00, 0x1f, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x13, 0x00, 0x01, 0x00, 0x0c, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x06, 0x10, 0xb9, +0x00, 0x2b, 0x00, 0x02, 0xf4, 0x30, 0x31, 0x01, +0x27, 0x37, 0x17, 0x13, 0x06, 0x23, 0x22, 0x2e, +0x02, 0x2f, 0x01, 0x23, 0x11, 0x23, 0x11, 0x33, +0x11, 0x33, 0x37, 0x3e, 0x03, 0x33, 0x32, 0x17, +0x07, 0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, 0x0f, +0x01, 0x17, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x37, +0x01, 0x23, 0x14, 0x7d, 0x1c, 0x8c, 0x0c, 0x10, +0x12, 0x1d, 0x1e, 0x21, 0x15, 0x7c, 0x8a, 0x2e, +0x2e, 0x8a, 0x60, 0x16, 0x21, 0x1d, 0x1e, 0x12, +0x0f, 0x0c, 0x08, 0x05, 0x0b, 0x05, 0x0b, 0x12, +0x15, 0x1a, 0x12, 0x60, 0x7d, 0x12, 0x19, 0x15, +0x12, 0x0b, 0x05, 0x0b, 0x05, 0x02, 0xc3, 0x17, +0x7b, 0x21, 0xfc, 0xc5, 0x05, 0x09, 0x1b, 0x30, +0x28, 0xdb, 0xfe, 0xb5, 0x02, 0x93, 0xfe, 0xdf, +0xb0, 0x28, 0x31, 0x1b, 0x09, 0x05, 0x2e, 0x02, +0x02, 0x06, 0x14, 0x26, 0x20, 0xb0, 0xdd, 0x20, +0x26, 0x14, 0x06, 0x02, 0x02, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x61, 0x00, 0x00, 0x02, 0x1e, +0x03, 0x55, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x0d, +0x00, 0xbb, 0x00, 0x03, 0x00, 0x01, 0x00, 0x09, +0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, 0x33, 0x11, +0x33, 0x13, 0x33, 0x03, 0x13, 0x23, 0x03, 0x23, +0x11, 0x23, 0x13, 0x37, 0x17, 0x07, 0x61, 0x2e, +0x72, 0xe1, 0x38, 0xf1, 0xf5, 0x35, 0xe1, 0x79, +0x2e, 0xae, 0x7d, 0x1c, 0x85, 0x02, 0x93, 0xfe, +0xdf, 0x01, 0x21, 0xfe, 0xd1, 0xfe, 0x9c, 0x01, +0x4a, 0xfe, 0xb6, 0x02, 0xda, 0x7b, 0x21, 0x71, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x02, 0x23, +0x03, 0x55, 0x02, 0x26, 0x03, 0x94, 0x00, 0x00, +0x00, 0x07, 0x07, 0x22, 0x01, 0x46, 0x00, 0x01, +0xff, 0xff, 0x00, 0x07, 0xff, 0xf4, 0x01, 0xe6, +0x03, 0x46, 0x02, 0x26, 0x03, 0xa1, 0x00, 0x00, +0x00, 0x07, 0x07, 0x32, 0x00, 0xef, 0x00, 0x00, +0x00, 0x01, 0x00, 0x61, 0xff, 0x44, 0x02, 0x19, +0x02, 0x93, 0x00, 0x0b, 0x00, 0x41, 0x00, 0x7d, +0xb8, 0x00, 0x03, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x06, 0x2f, 0x1b, 0xb9, +0x00, 0x06, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, 0x1b, +0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0xd0, 0xb8, 0x00, 0x04, 0x10, 0xb9, +0x00, 0x09, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x06, +0x10, 0xb8, 0x00, 0x0a, 0xd0, 0x30, 0x31, 0x21, +0x23, 0x07, 0x23, 0x35, 0x23, 0x11, 0x33, 0x11, +0x21, 0x11, 0x33, 0x02, 0x19, 0xc2, 0x06, 0x27, +0xc9, 0x2e, 0x01, 0x5c, 0x2e, 0xbc, 0xbc, 0x02, +0x93, 0xfd, 0x95, 0x02, 0x6b, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x1d, 0x00, 0x00, 0x02, 0x30, +0x02, 0xbf, 0x00, 0x08, 0x00, 0x1d, 0x00, 0x42, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x12, 0x2f, 0x1b, 0xb9, 0x00, 0x12, 0x00, 0x05, +0x3e, 0x59, 0xbb, 0x00, 0x14, 0x00, 0x01, 0x00, +0x15, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x1d, 0x00, +0x01, 0x00, 0x07, 0x00, 0x04, 0x2b, 0xb8, 0x00, +0x12, 0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, +0xb8, 0x00, 0x15, 0x10, 0xb8, 0x00, 0x1a, 0xd0, +0xb8, 0x00, 0x14, 0x10, 0xb8, 0x00, 0x1b, 0xd0, +0x30, 0x31, 0x25, 0x32, 0x36, 0x35, 0x34, 0x26, +0x2b, 0x01, 0x11, 0x13, 0x32, 0x1e, 0x02, 0x15, +0x14, 0x06, 0x2b, 0x01, 0x11, 0x23, 0x35, 0x33, +0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x15, 0x01, +0x41, 0x62, 0x5f, 0x62, 0x67, 0x58, 0x64, 0x36, +0x57, 0x3d, 0x21, 0x73, 0x70, 0x9a, 0x96, 0x96, +0x2e, 0xf6, 0xf6, 0x26, 0x46, 0x50, 0x48, 0x40, +0xfe, 0xe2, 0x01, 0x44, 0x13, 0x2a, 0x41, 0x2d, +0x62, 0x5d, 0x02, 0x09, 0x27, 0x8f, 0x8f, 0x27, +0x9f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x56, 0x02, 0x9f, 0x00, 0x06, +0x00, 0x0d, 0x00, 0x21, 0x00, 0x43, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0e, 0x2f, +0x1b, 0xb9, 0x00, 0x0e, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x18, +0x2f, 0x1b, 0xb9, 0x00, 0x18, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x00, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x18, 0x10, 0xb9, +0x00, 0x03, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0e, +0x10, 0xb9, 0x00, 0x0a, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x13, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x37, +0x27, 0x2e, 0x01, 0x23, 0x22, 0x06, 0x07, 0x13, +0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, +0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x65, +0x02, 0x79, 0x66, 0x66, 0x7a, 0x02, 0x01, 0x08, +0x78, 0x61, 0x61, 0x77, 0x08, 0xe0, 0x3c, 0x64, +0x48, 0x28, 0x28, 0x48, 0x64, 0x3c, 0x3c, 0x64, +0x47, 0x28, 0x28, 0x47, 0x64, 0x01, 0x4b, 0x92, +0x9c, 0x9c, 0x92, 0x26, 0x7d, 0x88, 0x88, 0x7d, +0x01, 0x2e, 0x2d, 0x57, 0x7e, 0x51, 0x51, 0x80, +0x59, 0x2e, 0x2e, 0x59, 0x80, 0x51, 0x51, 0x7e, +0x57, 0x2d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, +0x00, 0x00, 0x02, 0x15, 0x02, 0x9f, 0x00, 0x1c, +0x00, 0x45, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x11, 0x2f, 0x1b, 0xb9, 0x00, 0x11, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x1c, 0x2f, 0x1b, 0xb9, 0x00, +0x1c, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x11, +0x10, 0xb8, 0x00, 0x00, 0xd0, 0xb8, 0x00, 0x00, +0x2f, 0xba, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1c, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x11, 0x10, 0xb9, +0x00, 0x17, 0x00, 0x02, 0xf4, 0x30, 0x31, 0x13, +0x33, 0x13, 0x1e, 0x03, 0x17, 0x33, 0x3e, 0x03, +0x37, 0x13, 0x3e, 0x01, 0x33, 0x32, 0x17, 0x07, +0x2e, 0x01, 0x23, 0x22, 0x06, 0x07, 0x03, 0x23, +0x04, 0x31, 0x7a, 0x09, 0x11, 0x10, 0x12, 0x0a, +0x04, 0x09, 0x10, 0x0f, 0x10, 0x09, 0x50, 0x11, +0x2e, 0x29, 0x12, 0x11, 0x0c, 0x05, 0x0a, 0x08, +0x16, 0x19, 0x0d, 0xa2, 0x36, 0x02, 0x93, 0xfe, +0x7f, 0x1e, 0x37, 0x34, 0x36, 0x1e, 0x1e, 0x36, +0x34, 0x37, 0x1e, 0x01, 0x16, 0x3f, 0x38, 0x08, +0x2d, 0x03, 0x03, 0x25, 0x2a, 0xfd, 0xdf, 0x00, +0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd1, +0x03, 0x3f, 0x00, 0x07, 0x00, 0x35, 0x00, 0x7c, +0xb8, 0x00, 0x00, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, +0x00, 0x05, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, 0x2f, 0x1b, +0xb9, 0x00, 0x03, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x05, 0x10, 0xb9, 0x00, 0x01, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x01, 0x07, 0x21, 0x11, 0x23, +0x11, 0x21, 0x37, 0x01, 0xd1, 0x09, 0xfe, 0xc7, +0x2e, 0x01, 0x3d, 0x0d, 0x03, 0x3f, 0xd4, 0xfd, +0x95, 0x02, 0x93, 0xac, 0x00, 0x01, 0x00, 0x25, +0x00, 0x00, 0x01, 0xdd, 0x02, 0x93, 0x00, 0x0d, +0x00, 0x55, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, +0x05, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x0b, +0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x03, 0x00, 0x0b, 0x00, 0x05, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x03, 0x2f, 0xb8, 0x00, 0x02, +0xdc, 0xb8, 0x00, 0x03, 0x10, 0xb8, 0x00, 0x07, +0xd0, 0xb8, 0x00, 0x02, 0x10, 0xb8, 0x00, 0x09, +0xd0, 0xb8, 0x00, 0x09, 0x2f, 0x30, 0x31, 0x13, +0x11, 0x33, 0x15, 0x23, 0x11, 0x23, 0x11, 0x23, +0x35, 0x37, 0x11, 0x21, 0x15, 0xa4, 0xa3, 0xa3, +0x2e, 0x51, 0x51, 0x01, 0x67, 0x02, 0x6b, 0xfe, +0xf7, 0x21, 0xfe, 0xbf, 0x01, 0x41, 0x1f, 0x02, +0x01, 0x31, 0x28, 0x00, 0x00, 0x01, 0x00, 0x09, +0xff, 0x44, 0x03, 0x0c, 0x02, 0x9f, 0x00, 0x38, +0x00, 0x91, 0x00, 0x7d, 0xb8, 0x00, 0x03, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x1a, 0x2f, 0x1b, 0xb9, 0x00, 0x1a, 0x00, 0x11, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0d, 0x2f, 0x1b, 0xb9, 0x00, 0x0d, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x20, 0x00, 0x01, +0x00, 0x0b, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x0d, +0x10, 0xb8, 0x00, 0x09, 0xd0, 0xb8, 0x00, 0x05, +0xd0, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x0b, 0x10, 0xb8, 0x00, 0x06, 0xd0, 0xba, +0x00, 0x0e, 0x00, 0x20, 0x00, 0x0b, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x1a, 0x10, 0xb9, 0x00, 0x14, +0x00, 0x02, 0xf4, 0xb8, 0x00, 0x1a, 0x10, 0xb8, +0x00, 0x22, 0xd0, 0xb8, 0x00, 0x22, 0x2f, 0xb8, +0x00, 0x20, 0x10, 0xb8, 0x00, 0x25, 0xd0, 0xb8, +0x00, 0x1a, 0x10, 0xb8, 0x00, 0x2b, 0xd0, 0xb8, +0x00, 0x14, 0x10, 0xb8, 0x00, 0x31, 0xd0, 0xba, +0x00, 0x37, 0x00, 0x06, 0x00, 0x25, 0x11, 0x12, +0x39, 0x30, 0x31, 0x25, 0x15, 0x07, 0x23, 0x35, +0x23, 0x03, 0x23, 0x11, 0x23, 0x11, 0x23, 0x03, +0x23, 0x13, 0x27, 0x2e, 0x03, 0x23, 0x22, 0x06, +0x07, 0x27, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x1f, +0x01, 0x33, 0x11, 0x33, 0x11, 0x33, 0x37, 0x3e, +0x03, 0x33, 0x32, 0x17, 0x07, 0x2e, 0x01, 0x23, +0x22, 0x0e, 0x02, 0x0f, 0x01, 0x13, 0x03, 0x0c, +0x07, 0x27, 0x1c, 0xbd, 0x6f, 0x2c, 0x6f, 0xbd, +0x35, 0xcf, 0x4e, 0x0f, 0x19, 0x17, 0x14, 0x0b, +0x05, 0x0b, 0x05, 0x08, 0x0c, 0x0e, 0x13, 0x20, +0x20, 0x20, 0x12, 0x51, 0x6b, 0x2c, 0x6b, 0x50, +0x13, 0x20, 0x20, 0x20, 0x13, 0x0e, 0x0c, 0x09, +0x05, 0x0b, 0x05, 0x0b, 0x14, 0x16, 0x19, 0x0f, +0x4e, 0xb8, 0x28, 0x1a, 0xca, 0xbc, 0x01, 0x4b, +0xfe, 0xb5, 0x01, 0x4b, 0xfe, 0xb5, 0x01, 0x62, +0xae, 0x21, 0x26, 0x13, 0x06, 0x02, 0x02, 0x2e, +0x05, 0x09, 0x1b, 0x31, 0x28, 0xb0, 0x01, 0x21, +0xfe, 0xdf, 0xb0, 0x28, 0x31, 0x1b, 0x09, 0x05, +0x2e, 0x02, 0x02, 0x06, 0x13, 0x26, 0x21, 0xae, +0xfe, 0xc6, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf4, +0xff, 0x40, 0x03, 0x0e, 0x02, 0x9f, 0x00, 0x54, +0x00, 0xdd, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x02, 0x2f, 0x1b, 0xb9, 0x00, +0x02, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, +0x00, 0x05, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x18, 0x2f, 0x1b, +0xb9, 0x00, 0x18, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1a, 0x2f, +0x1b, 0xb9, 0x00, 0x1a, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, +0x2f, 0x1b, 0xb9, 0x00, 0x07, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x09, 0x2f, 0x1b, 0xb9, 0x00, 0x09, 0x00, 0x05, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x30, 0x00, 0x02, +0x00, 0x2a, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x3b, +0x00, 0x01, 0x00, 0x0d, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x0d, 0x10, 0xb8, 0x00, 0x11, 0xd0, 0xb8, +0x00, 0x18, 0x10, 0xb9, 0x00, 0x1e, 0x00, 0x02, +0xf4, 0xb8, 0x00, 0x3b, 0x10, 0xb8, 0x00, 0x36, +0xd0, 0xb8, 0x00, 0x30, 0x10, 0xb8, 0x00, 0x41, +0xd0, 0xb8, 0x00, 0x2a, 0x10, 0xb8, 0x00, 0x47, +0xd0, 0xb8, 0x00, 0x1e, 0x10, 0xb8, 0x00, 0x51, +0xd0, 0xb8, 0x00, 0x51, 0x2f, 0xb8, 0x00, 0x52, +0xd0, 0xb8, 0x00, 0x52, 0x2f, 0x30, 0x31, 0x05, +0x06, 0x0f, 0x01, 0x23, 0x35, 0x26, 0x27, 0x23, +0x35, 0x2e, 0x01, 0x2f, 0x01, 0x23, 0x11, 0x23, +0x11, 0x23, 0x07, 0x0e, 0x03, 0x23, 0x22, 0x27, +0x37, 0x1e, 0x01, 0x33, 0x32, 0x3e, 0x02, 0x3f, +0x01, 0x27, 0x2e, 0x03, 0x23, 0x22, 0x06, 0x07, +0x27, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x1f, 0x01, +0x33, 0x11, 0x33, 0x11, 0x33, 0x37, 0x3e, 0x03, +0x33, 0x32, 0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, +0x0e, 0x02, 0x0f, 0x01, 0x17, 0x1e, 0x01, 0x17, +0x33, 0x15, 0x33, 0x03, 0x0e, 0x03, 0x08, 0x06, +0x26, 0x0b, 0x0b, 0x03, 0x11, 0x25, 0x18, 0x62, +0x78, 0x2b, 0x77, 0x62, 0x14, 0x20, 0x1e, 0x1f, +0x12, 0x0f, 0x0c, 0x08, 0x05, 0x0b, 0x05, 0x0b, +0x13, 0x15, 0x18, 0x11, 0x61, 0x44, 0x0e, 0x18, +0x17, 0x15, 0x0b, 0x05, 0x0b, 0x05, 0x08, 0x0c, +0x0f, 0x12, 0x21, 0x1f, 0x20, 0x11, 0x45, 0x78, +0x2b, 0x78, 0x45, 0x12, 0x1f, 0x20, 0x21, 0x12, +0x0f, 0x0c, 0x09, 0x05, 0x0b, 0x05, 0x0b, 0x14, +0x17, 0x18, 0x0e, 0x45, 0x61, 0x17, 0x1f, 0x0d, +0x2d, 0x01, 0x07, 0x01, 0x02, 0xb6, 0xb7, 0x03, +0x06, 0x02, 0x0b, 0x33, 0x30, 0xdb, 0xfe, 0xb5, +0x01, 0x4b, 0xdb, 0x28, 0x30, 0x1b, 0x09, 0x05, +0x2e, 0x02, 0x02, 0x06, 0x14, 0x26, 0x20, 0xd9, +0xb4, 0x1f, 0x26, 0x15, 0x06, 0x02, 0x02, 0x2e, +0x05, 0x09, 0x1b, 0x31, 0x28, 0xb0, 0x01, 0x21, +0xfe, 0xdf, 0xb0, 0x28, 0x31, 0x1b, 0x09, 0x05, +0x2e, 0x02, 0x02, 0x06, 0x15, 0x26, 0x1f, 0xb3, +0xda, 0x2d, 0x27, 0x07, 0x01, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x0f, 0xff, 0x40, 0x03, 0x04, +0x02, 0x93, 0x00, 0x1a, 0x00, 0x5a, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, +0x1b, 0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, +0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0c, 0x2f, 0x1b, 0xb9, 0x00, 0x0c, 0x00, 0x05, +0x3e, 0x59, 0xbb, 0x00, 0x16, 0x00, 0x01, 0x00, +0x06, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x04, 0x10, +0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, 0x00, +0x06, 0x10, 0xb8, 0x00, 0x0a, 0xd0, 0xb8, 0x00, +0x16, 0x10, 0xb8, 0x00, 0x11, 0xd0, 0x30, 0x31, +0x25, 0x15, 0x07, 0x23, 0x35, 0x23, 0x03, 0x23, +0x11, 0x23, 0x11, 0x23, 0x03, 0x23, 0x13, 0x03, +0x33, 0x13, 0x33, 0x11, 0x33, 0x11, 0x33, 0x13, +0x33, 0x03, 0x13, 0x03, 0x04, 0x07, 0x26, 0x20, +0xbb, 0x68, 0x2e, 0x69, 0xba, 0x34, 0xcb, 0xc6, +0x35, 0xb8, 0x65, 0x2e, 0x65, 0xb7, 0x36, 0xc7, +0xb4, 0x28, 0x1b, 0xcd, 0xc0, 0x01, 0x4a, 0xfe, +0xb6, 0x01, 0x4a, 0xfe, 0xb6, 0x01, 0x64, 0x01, +0x2f, 0xfe, 0xdf, 0x01, 0x21, 0xfe, 0xdf, 0x01, +0x21, 0xfe, 0xd1, 0xfe, 0xc4, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x2e, 0xff, 0x44, 0x01, 0xf8, +0x02, 0x9f, 0x00, 0x36, 0x00, 0x5b, 0x00, 0x7d, +0xb8, 0x00, 0x0a, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x2e, 0x2f, 0x1b, 0xb9, +0x00, 0x2e, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, 0x2f, 0x1b, +0xb9, 0x00, 0x0b, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x1e, 0x00, 0x01, 0x00, 0x1d, 0x00, 0x04, +0x2b, 0xba, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x1e, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x0b, 0x10, 0xb8, +0x00, 0x08, 0xd0, 0xb8, 0x00, 0x0b, 0x10, 0xb9, +0x00, 0x14, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x2e, +0x10, 0xb9, 0x00, 0x27, 0x00, 0x02, 0xf4, 0x30, +0x31, 0x01, 0x1e, 0x01, 0x15, 0x14, 0x0e, 0x02, +0x0f, 0x01, 0x23, 0x35, 0x2e, 0x01, 0x27, 0x37, +0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, +0x26, 0x2b, 0x01, 0x35, 0x33, 0x32, 0x36, 0x35, +0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, +0x3e, 0x01, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, +0x06, 0x07, 0x01, 0x6a, 0x3d, 0x51, 0x20, 0x37, +0x4a, 0x2a, 0x06, 0x27, 0x42, 0x63, 0x2d, 0x1d, +0x18, 0x2d, 0x31, 0x36, 0x20, 0x24, 0x41, 0x31, +0x1d, 0x70, 0x63, 0x43, 0x2f, 0x67, 0x5d, 0x17, +0x28, 0x37, 0x20, 0x32, 0x57, 0x1d, 0x1a, 0x1e, +0x66, 0x3c, 0x28, 0x48, 0x34, 0x1f, 0x37, 0x33, +0x01, 0x5f, 0x0b, 0x55, 0x48, 0x2b, 0x45, 0x32, +0x1d, 0x03, 0xb1, 0xb1, 0x03, 0x2f, 0x30, 0x1f, +0x18, 0x22, 0x15, 0x09, 0x14, 0x27, 0x39, 0x25, +0x4c, 0x48, 0x26, 0x44, 0x44, 0x1e, 0x2e, 0x20, +0x10, 0x25, 0x1e, 0x1f, 0x20, 0x2e, 0x16, 0x2a, +0x3d, 0x27, 0x37, 0x51, 0x10, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x61, 0xff, 0x44, 0x02, 0x3b, +0x02, 0x9f, 0x00, 0x20, 0x00, 0x63, 0x00, 0x7d, +0xb8, 0x00, 0x03, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, +0x00, 0x13, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x09, 0x2f, 0x1b, +0xb9, 0x00, 0x09, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x0c, 0x00, 0x01, 0x00, 0x07, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x09, 0x10, 0xb8, 0x00, 0x05, +0xd0, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x13, 0x10, 0xb8, 0x00, 0x0a, 0xd0, 0xb8, +0x00, 0x0a, 0x2f, 0xb8, 0x00, 0x13, 0x10, 0xb9, +0x00, 0x19, 0x00, 0x02, 0xf4, 0xba, 0x00, 0x1f, +0x00, 0x0c, 0x00, 0x07, 0x11, 0x12, 0x39, 0x30, +0x31, 0x25, 0x15, 0x07, 0x23, 0x35, 0x23, 0x03, +0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x37, +0x3e, 0x03, 0x33, 0x32, 0x17, 0x07, 0x2e, 0x01, +0x23, 0x22, 0x0e, 0x02, 0x0f, 0x01, 0x13, 0x02, +0x3b, 0x06, 0x27, 0x1c, 0xdb, 0x88, 0x2e, 0x2e, +0x8a, 0x60, 0x15, 0x21, 0x1e, 0x1e, 0x13, 0x0e, +0x0c, 0x08, 0x05, 0x0b, 0x05, 0x0b, 0x12, 0x15, +0x1a, 0x12, 0x5f, 0xce, 0x28, 0x1a, 0xca, 0xbc, +0x01, 0x4b, 0xfe, 0xb5, 0x02, 0x93, 0xfe, 0xdf, +0xb0, 0x28, 0x31, 0x1b, 0x09, 0x05, 0x2e, 0x02, +0x02, 0x06, 0x14, 0x26, 0x20, 0xb0, 0xfe, 0xc8, +0x00, 0x01, 0x00, 0x61, 0xff, 0x40, 0x02, 0x34, +0x02, 0x9f, 0x00, 0x2a, 0x00, 0x58, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x01, 0x2f, +0x1b, 0xb9, 0x00, 0x01, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, +0x2f, 0x1b, 0xb9, 0x00, 0x03, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, 0x05, +0x3e, 0x59, 0xbb, 0x00, 0x19, 0x00, 0x02, 0x00, +0x1f, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x13, 0x00, +0x01, 0x00, 0x0c, 0x00, 0x04, 0x2b, 0xb8, 0x00, +0x06, 0x10, 0xb9, 0x00, 0x29, 0x00, 0x02, 0xf4, +0xb8, 0x00, 0x2a, 0xd0, 0x30, 0x31, 0x25, 0x07, +0x17, 0x23, 0x07, 0x23, 0x35, 0x2e, 0x03, 0x2f, +0x01, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, +0x37, 0x3e, 0x03, 0x33, 0x32, 0x17, 0x07, 0x2e, +0x01, 0x23, 0x22, 0x0e, 0x02, 0x0f, 0x01, 0x17, +0x1e, 0x01, 0x17, 0x33, 0x02, 0x34, 0x01, 0x01, +0x01, 0x06, 0x26, 0x0e, 0x19, 0x1b, 0x1d, 0x13, +0x7c, 0x8a, 0x2e, 0x2e, 0x8a, 0x60, 0x16, 0x21, +0x1d, 0x1e, 0x12, 0x0f, 0x0c, 0x08, 0x05, 0x0b, +0x05, 0x0b, 0x12, 0x15, 0x1a, 0x12, 0x60, 0x7d, +0x18, 0x1f, 0x0d, 0x36, 0x0d, 0x11, 0x03, 0xb9, +0xb5, 0x02, 0x0d, 0x1b, 0x2e, 0x23, 0xdb, 0xfe, +0xb5, 0x02, 0x93, 0xfe, 0xdf, 0xb0, 0x28, 0x31, +0x1b, 0x09, 0x05, 0x2e, 0x02, 0x02, 0x06, 0x14, +0x26, 0x20, 0xb0, 0xdd, 0x2d, 0x27, 0x07, 0x00, +0x00, 0x01, 0x00, 0x61, 0xff, 0x40, 0x02, 0x34, +0x02, 0x93, 0x00, 0x11, 0x00, 0x39, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, +0x1b, 0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, +0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x06, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x04, 0x10, 0xb9, +0x00, 0x00, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x25, +0x15, 0x07, 0x23, 0x35, 0x23, 0x03, 0x23, 0x11, +0x23, 0x11, 0x33, 0x11, 0x33, 0x13, 0x33, 0x03, +0x13, 0x02, 0x34, 0x07, 0x26, 0x1e, 0xe1, 0x79, +0x2e, 0x2e, 0x72, 0xe1, 0x38, 0xf1, 0xd9, 0x28, +0x1b, 0xcd, 0xc0, 0x01, 0x4a, 0xfe, 0xb6, 0x02, +0x93, 0xfe, 0xdf, 0x01, 0x21, 0xfe, 0xd1, 0xfe, +0xc4, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1d, +0x00, 0x00, 0x02, 0xb4, 0x02, 0x9f, 0x00, 0x1d, +0x00, 0x53, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x08, 0x2f, 0x1b, 0xb9, 0x00, 0x08, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, 0x00, +0x13, 0x00, 0x11, 0x3e, 0x59, 0xbb, 0x00, 0x0b, +0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x08, 0x10, 0xb9, 0x00, 0x06, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x17, 0xd0, 0xb8, 0x00, 0x17, +0x2f, 0xb8, 0x00, 0x07, 0xd0, 0xb8, 0x00, 0x07, +0x2f, 0xb8, 0x00, 0x17, 0x10, 0xb9, 0x00, 0x11, +0x00, 0x02, 0xf4, 0x30, 0x31, 0x21, 0x23, 0x03, +0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x21, 0x11, +0x33, 0x37, 0x3e, 0x03, 0x33, 0x32, 0x17, 0x07, +0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, 0x0f, 0x01, +0x02, 0xb4, 0x34, 0xdb, 0x88, 0x2e, 0xd2, 0x01, +0x00, 0x8a, 0x60, 0x15, 0x21, 0x1e, 0x1e, 0x13, +0x0e, 0x0c, 0x08, 0x05, 0x0b, 0x05, 0x0b, 0x12, +0x15, 0x1a, 0x12, 0x5f, 0x01, 0x4b, 0xfe, 0xb5, +0x02, 0x6b, 0x28, 0xfe, 0xdf, 0xb0, 0x28, 0x31, +0x1b, 0x09, 0x05, 0x2e, 0x02, 0x02, 0x06, 0x14, +0x26, 0x20, 0xb0, 0x00, 0x00, 0x01, 0x00, 0x1d, +0xff, 0xf4, 0x02, 0xc2, 0x02, 0x9f, 0x00, 0x2c, +0x00, 0x7f, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0e, 0x2f, 0x1b, 0xb9, 0x00, 0x0e, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x19, 0x2f, 0x1b, 0xb9, 0x00, +0x19, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, +0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x02, 0x2f, 0x1b, +0xb9, 0x00, 0x02, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x11, 0x00, 0x01, 0x00, 0x08, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x0e, 0x10, 0xb9, 0x00, 0x0c, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x1d, 0xd0, 0xb8, +0x00, 0x1d, 0x2f, 0xb8, 0x00, 0x0d, 0xd0, 0xb8, +0x00, 0x0d, 0x2f, 0xb8, 0x00, 0x1d, 0x10, 0xb9, +0x00, 0x17, 0x00, 0x02, 0xf4, 0xb8, 0x00, 0x02, +0x10, 0xb9, 0x00, 0x29, 0x00, 0x02, 0xf4, 0x30, +0x31, 0x05, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x2f, +0x01, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x21, +0x11, 0x33, 0x37, 0x3e, 0x03, 0x33, 0x32, 0x17, +0x07, 0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, 0x0f, +0x01, 0x17, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x37, +0x02, 0xc2, 0x0c, 0x10, 0x12, 0x1d, 0x1e, 0x21, +0x15, 0x7c, 0x8a, 0x2e, 0xd2, 0x01, 0x00, 0x8a, +0x60, 0x16, 0x21, 0x1d, 0x1e, 0x12, 0x0f, 0x0c, +0x08, 0x05, 0x0b, 0x05, 0x0b, 0x12, 0x15, 0x1a, +0x12, 0x60, 0x7d, 0x12, 0x19, 0x15, 0x12, 0x0b, +0x05, 0x0b, 0x05, 0x07, 0x05, 0x09, 0x1b, 0x30, +0x28, 0xdb, 0xfe, 0xb5, 0x02, 0x6b, 0x28, 0xfe, +0xdf, 0xb0, 0x28, 0x31, 0x1b, 0x09, 0x05, 0x2e, +0x02, 0x02, 0x06, 0x14, 0x26, 0x20, 0xb0, 0xdd, +0x20, 0x26, 0x14, 0x06, 0x02, 0x02, 0x00, 0x00, +0x00, 0x01, 0x00, 0x1d, 0x00, 0x00, 0x02, 0xac, +0x02, 0x93, 0x00, 0x0e, 0x00, 0x39, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, +0x1b, 0xb9, 0x00, 0x08, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0c, +0x2f, 0x1b, 0xb9, 0x00, 0x0c, 0x00, 0x11, 0x3e, +0x59, 0xbb, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x02, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x08, 0x10, 0xb9, +0x00, 0x06, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x21, +0x23, 0x03, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, +0x21, 0x11, 0x33, 0x13, 0x33, 0x03, 0x02, 0xac, +0x35, 0xe1, 0x79, 0x2e, 0xd2, 0x01, 0x00, 0x72, +0xe1, 0x38, 0xf1, 0x01, 0x4a, 0xfe, 0xb6, 0x02, +0x6b, 0x28, 0xfe, 0xdf, 0x01, 0x21, 0xfe, 0xd1, +0x00, 0x01, 0x00, 0x61, 0xff, 0x44, 0x02, 0x63, +0x02, 0x93, 0x00, 0x10, 0x00, 0x51, 0x00, 0x7d, +0xb8, 0x00, 0x03, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0a, 0x2f, 0x1b, 0xb9, +0x00, 0x0a, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x09, 0x2f, 0x1b, +0xb9, 0x00, 0x09, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x05, 0xd0, 0xb9, 0x00, 0x00, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x09, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x07, 0x2f, 0xb9, +0x00, 0x0d, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0a, +0x10, 0xb8, 0x00, 0x0e, 0xd0, 0x30, 0x31, 0x25, +0x15, 0x07, 0x23, 0x35, 0x23, 0x11, 0x21, 0x11, +0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, +0x02, 0x63, 0x07, 0x27, 0x45, 0xfe, 0x9f, 0x2e, +0x2e, 0x01, 0x61, 0x2e, 0x28, 0x1a, 0xca, 0xbc, +0x01, 0x4a, 0xfe, 0xb6, 0x02, 0x93, 0xfe, 0xdf, +0x01, 0x21, 0xfd, 0x95, 0x00, 0x01, 0x00, 0x37, +0xff, 0x44, 0x02, 0x0f, 0x02, 0x9f, 0x00, 0x24, +0x00, 0x43, 0x00, 0x7d, 0xb8, 0x00, 0x05, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x10, 0x2f, 0x1b, 0xb9, 0x00, 0x10, 0x00, 0x11, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x03, 0xd0, 0xb8, +0x00, 0x10, 0x10, 0xb9, 0x00, 0x17, 0x00, 0x02, +0xf4, 0xb8, 0x00, 0x06, 0x10, 0xb9, 0x00, 0x21, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x25, 0x0e, 0x01, +0x0f, 0x01, 0x23, 0x35, 0x2e, 0x03, 0x35, 0x34, +0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, +0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, +0x02, 0x33, 0x32, 0x36, 0x37, 0x02, 0x0f, 0x23, +0x53, 0x37, 0x05, 0x27, 0x39, 0x5e, 0x43, 0x25, +0x29, 0x4a, 0x67, 0x3f, 0x3a, 0x58, 0x1a, 0x1b, +0x1b, 0x48, 0x2d, 0x36, 0x57, 0x3d, 0x20, 0x20, +0x3c, 0x55, 0x35, 0x33, 0x50, 0x24, 0x52, 0x28, +0x30, 0x05, 0xb1, 0xb1, 0x04, 0x33, 0x59, 0x7b, +0x4b, 0x4e, 0x7e, 0x59, 0x2f, 0x30, 0x1f, 0x1f, +0x1f, 0x25, 0x2a, 0x4d, 0x6e, 0x45, 0x45, 0x6f, +0x4e, 0x2b, 0x29, 0x28, 0xff, 0xff, 0x00, 0x03, +0x00, 0x00, 0x01, 0xbc, 0x02, 0x93, 0x02, 0x06, +0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, +0x00, 0x00, 0x01, 0xbc, 0x02, 0x93, 0x00, 0x16, +0x00, 0x55, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, +0x05, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x0a, +0x00, 0x0b, 0x00, 0x05, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x0a, 0x2f, 0xb8, 0x00, 0x01, 0xd0, 0xb8, +0x00, 0x0a, 0x10, 0xb8, 0x00, 0x06, 0xdc, 0xb8, +0x00, 0x02, 0xd0, 0xb8, 0x00, 0x0b, 0x10, 0xb8, +0x00, 0x15, 0xd0, 0xba, 0x00, 0x10, 0x00, 0x15, +0x00, 0x05, 0x11, 0x12, 0x39, 0x30, 0x31, 0x01, +0x33, 0x15, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, +0x37, 0x33, 0x03, 0x33, 0x17, 0x1e, 0x01, 0x17, +0x33, 0x3e, 0x01, 0x3f, 0x01, 0x33, 0x01, 0x03, +0x7e, 0x8b, 0x2e, 0x8a, 0x55, 0x28, 0xb8, 0x31, +0x64, 0x11, 0x21, 0x14, 0x04, 0x13, 0x24, 0x10, +0x64, 0x2f, 0x01, 0x25, 0x21, 0xfe, 0xfc, 0x01, +0x04, 0x1f, 0x02, 0x01, 0x6e, 0xce, 0x24, 0x46, +0x24, 0x24, 0x46, 0x24, 0xce, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x11, 0xff, 0x44, 0x01, 0xe7, +0x02, 0x93, 0x00, 0x1e, 0x00, 0x65, 0x00, 0x7d, +0xb8, 0x00, 0x03, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x11, 0x2f, 0x1b, 0xb9, +0x00, 0x11, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0f, 0x2f, 0x1b, +0xb9, 0x00, 0x0f, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x05, 0xd0, 0xb9, 0x00, 0x00, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x0a, 0x00, 0x11, 0x00, 0x0f, +0x11, 0x12, 0x39, 0xba, 0x00, 0x10, 0x00, 0x16, +0x00, 0x09, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x11, +0x10, 0xb8, 0x00, 0x1b, 0xd0, 0xba, 0x00, 0x17, +0x00, 0x05, 0x00, 0x1b, 0x11, 0x12, 0x39, 0xba, +0x00, 0x1d, 0x00, 0x09, 0x00, 0x17, 0x11, 0x12, +0x39, 0x30, 0x31, 0x25, 0x15, 0x07, 0x23, 0x35, +0x23, 0x27, 0x2e, 0x01, 0x27, 0x23, 0x0e, 0x01, +0x0f, 0x01, 0x23, 0x13, 0x03, 0x33, 0x17, 0x1e, +0x01, 0x17, 0x33, 0x3e, 0x01, 0x3f, 0x01, 0x33, +0x03, 0x13, 0x01, 0xe7, 0x07, 0x27, 0x1a, 0x73, +0x0e, 0x1d, 0x12, 0x04, 0x10, 0x1a, 0x0e, 0x73, +0x2f, 0xc6, 0xb8, 0x32, 0x6c, 0x0e, 0x17, 0x11, +0x04, 0x0e, 0x15, 0x0e, 0x6c, 0x2f, 0xb8, 0xaf, +0x28, 0x1a, 0xca, 0xbc, 0xca, 0x19, 0x32, 0x1e, +0x1e, 0x32, 0x19, 0xca, 0x01, 0x55, 0x01, 0x3e, +0xc2, 0x17, 0x28, 0x1b, 0x1b, 0x28, 0x17, 0xc2, +0xfe, 0xc0, 0xfe, 0xd5, 0x00, 0x01, 0x00, 0x47, +0xff, 0x44, 0x02, 0x27, 0x02, 0x93, 0x00, 0x1c, +0x00, 0x47, 0x00, 0x7d, 0xb8, 0x00, 0x03, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, 0x00, 0x11, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x04, 0x2f, 0x1b, 0xb9, 0x00, 0x04, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x16, 0x00, 0x01, +0x00, 0x09, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x04, +0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x0f, 0x10, 0xb8, 0x00, 0x1a, 0xd0, 0x30, +0x31, 0x25, 0x15, 0x07, 0x23, 0x35, 0x23, 0x11, +0x0e, 0x01, 0x23, 0x22, 0x2e, 0x02, 0x3d, 0x01, +0x33, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, +0x37, 0x11, 0x33, 0x11, 0x02, 0x27, 0x07, 0x26, +0x46, 0x1a, 0x3f, 0x2b, 0x36, 0x57, 0x3c, 0x20, +0x2d, 0x1a, 0x31, 0x48, 0x2d, 0x2a, 0x3f, 0x17, +0x2e, 0x28, 0x1a, 0xca, 0xbc, 0x01, 0x37, 0x04, +0x07, 0x15, 0x2f, 0x4c, 0x37, 0xa0, 0xa0, 0x2d, +0x3d, 0x25, 0x0f, 0x06, 0x05, 0x01, 0x33, 0xfd, +0x95, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x61, +0x00, 0x00, 0x01, 0xfc, 0x02, 0x93, 0x00, 0x17, +0x00, 0x37, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x16, 0x2f, 0x1b, 0xb9, 0x00, +0x16, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x05, +0x00, 0x01, 0x00, 0x12, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x16, 0x10, 0xb8, 0x00, 0x0b, 0xd0, 0x30, +0x31, 0x13, 0x33, 0x11, 0x3e, 0x01, 0x33, 0x32, +0x1e, 0x02, 0x1d, 0x01, 0x23, 0x35, 0x34, 0x2e, +0x02, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, 0x61, +0x2e, 0x1a, 0x3f, 0x2b, 0x36, 0x57, 0x3c, 0x20, +0x2d, 0x1a, 0x31, 0x48, 0x2d, 0x2a, 0x3f, 0x17, +0x2e, 0x02, 0x93, 0xfe, 0xf1, 0x05, 0x06, 0x15, +0x2e, 0x4d, 0x37, 0xc8, 0xc8, 0x2d, 0x3d, 0x25, +0x10, 0x07, 0x05, 0xfe, 0xa5, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x00, 0x8f, +0x02, 0x93, 0x02, 0x06, 0x00, 0x0c, 0x00, 0x00, +0xff, 0xff, 0x00, 0x09, 0x00, 0x00, 0x02, 0xf7, +0x03, 0x46, 0x02, 0x26, 0x03, 0x90, 0x00, 0x00, +0x00, 0x07, 0x07, 0x32, 0x01, 0x7f, 0x00, 0x00, +0x00, 0x02, 0xff, 0xf3, 0xff, 0xf4, 0x03, 0x0d, +0x03, 0x46, 0x00, 0x15, 0x00, 0x67, 0x00, 0x97, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x16, 0x2f, 0x1b, 0xb9, 0x00, 0x16, 0x00, 0x05, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x18, 0x2f, 0x1b, 0xb9, 0x00, 0x18, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x29, 0x2f, 0x1b, 0xb9, 0x00, 0x29, +0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x2b, 0x2f, 0x1b, 0xb9, 0x00, +0x2b, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x10, +0x00, 0x01, 0x00, 0x05, 0x00, 0x04, 0x2b, 0xbb, +0x00, 0x41, 0x00, 0x02, 0x00, 0x3b, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x4c, 0x00, 0x01, 0x00, 0x1e, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x1e, 0x10, 0xb8, +0x00, 0x22, 0xd0, 0xb8, 0x00, 0x29, 0x10, 0xb9, +0x00, 0x2f, 0x00, 0x02, 0xf4, 0xb8, 0x00, 0x4c, +0x10, 0xb8, 0x00, 0x47, 0xd0, 0xb8, 0x00, 0x41, +0x10, 0xb8, 0x00, 0x52, 0xd0, 0xb8, 0x00, 0x3b, +0x10, 0xb8, 0x00, 0x58, 0xd0, 0xb8, 0x00, 0x2f, +0x10, 0xb8, 0x00, 0x64, 0xd0, 0x30, 0x31, 0x01, +0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x33, +0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x01, +0x06, 0x23, 0x22, 0x2e, 0x02, 0x2f, 0x01, 0x23, +0x11, 0x23, 0x11, 0x23, 0x07, 0x0e, 0x03, 0x23, +0x22, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x3e, +0x02, 0x3f, 0x01, 0x27, 0x2e, 0x03, 0x23, 0x22, +0x06, 0x07, 0x27, 0x36, 0x33, 0x32, 0x1e, 0x02, +0x1f, 0x01, 0x33, 0x11, 0x33, 0x11, 0x33, 0x37, +0x3e, 0x03, 0x33, 0x32, 0x17, 0x07, 0x2e, 0x01, +0x23, 0x22, 0x0e, 0x02, 0x0f, 0x01, 0x17, 0x1e, +0x03, 0x33, 0x32, 0x36, 0x37, 0x02, 0x04, 0x02, +0x0e, 0x1f, 0x33, 0x26, 0x26, 0x33, 0x1f, 0x0e, +0x02, 0x2a, 0x01, 0x0a, 0x16, 0x23, 0x1a, 0x19, +0x24, 0x16, 0x0a, 0x01, 0x01, 0x33, 0x0c, 0x10, +0x12, 0x1e, 0x1e, 0x20, 0x14, 0x62, 0x78, 0x2b, +0x77, 0x62, 0x14, 0x20, 0x1e, 0x1f, 0x12, 0x0f, +0x0c, 0x08, 0x05, 0x0b, 0x05, 0x0b, 0x13, 0x15, +0x18, 0x11, 0x61, 0x44, 0x0e, 0x18, 0x17, 0x15, +0x0b, 0x05, 0x0b, 0x05, 0x08, 0x0c, 0x0f, 0x12, +0x21, 0x1f, 0x20, 0x11, 0x45, 0x78, 0x2b, 0x78, +0x45, 0x12, 0x1f, 0x20, 0x21, 0x12, 0x0f, 0x0c, +0x09, 0x05, 0x0b, 0x05, 0x0b, 0x14, 0x17, 0x18, +0x0e, 0x45, 0x61, 0x11, 0x19, 0x15, 0x12, 0x0b, +0x05, 0x0b, 0x05, 0x03, 0x46, 0x17, 0x2d, 0x25, +0x17, 0x17, 0x25, 0x2d, 0x17, 0x13, 0x24, 0x1b, +0x10, 0x10, 0x1b, 0x24, 0x13, 0xfc, 0xb3, 0x05, +0x09, 0x1b, 0x30, 0x28, 0xdb, 0xfe, 0xb5, 0x01, +0x4b, 0xdb, 0x28, 0x30, 0x1b, 0x09, 0x05, 0x2e, +0x02, 0x02, 0x06, 0x14, 0x26, 0x20, 0xd9, 0xb4, +0x1f, 0x26, 0x15, 0x06, 0x02, 0x02, 0x2e, 0x05, +0x09, 0x1b, 0x31, 0x28, 0xb0, 0x01, 0x21, 0xfe, +0xdf, 0xb0, 0x28, 0x31, 0x1b, 0x09, 0x05, 0x2e, +0x02, 0x02, 0x06, 0x15, 0x26, 0x1f, 0xb3, 0xda, +0x20, 0x26, 0x14, 0x06, 0x02, 0x02, 0x00, 0x00, +0x00, 0x02, 0x00, 0x0e, 0x00, 0x00, 0x02, 0xe9, +0x03, 0x46, 0x00, 0x15, 0x00, 0x2b, 0x00, 0x27, +0x00, 0xbb, 0x00, 0x21, 0x00, 0x01, 0x00, 0x16, +0x00, 0x04, 0x2b, 0xbb, 0x00, 0x08, 0x00, 0x01, +0x00, 0x0e, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x08, +0x10, 0xb8, 0x00, 0x03, 0xd0, 0xb8, 0x00, 0x0e, +0x10, 0xb8, 0x00, 0x12, 0xd0, 0x30, 0x31, 0x13, +0x03, 0x33, 0x13, 0x33, 0x11, 0x33, 0x11, 0x33, +0x13, 0x33, 0x03, 0x13, 0x23, 0x03, 0x23, 0x11, +0x23, 0x11, 0x23, 0x03, 0x23, 0x01, 0x22, 0x2e, +0x02, 0x27, 0x33, 0x1e, 0x03, 0x33, 0x32, 0x3e, +0x02, 0x37, 0x33, 0x0e, 0x03, 0xd9, 0xc6, 0x35, +0xb8, 0x65, 0x2e, 0x65, 0xb7, 0x36, 0xc7, 0xcb, +0x33, 0xbb, 0x68, 0x2e, 0x69, 0xba, 0x34, 0x01, +0x6e, 0x26, 0x33, 0x1f, 0x0e, 0x02, 0x2a, 0x01, +0x0a, 0x16, 0x23, 0x1a, 0x19, 0x24, 0x16, 0x0a, +0x01, 0x2a, 0x02, 0x0e, 0x1f, 0x33, 0x01, 0x64, +0x01, 0x2f, 0xfe, 0xdf, 0x01, 0x21, 0xfe, 0xdf, +0x01, 0x21, 0xfe, 0xd1, 0xfe, 0x9c, 0x01, 0x4a, +0xfe, 0xb6, 0x01, 0x4a, 0xfe, 0xb6, 0x02, 0xc6, +0x17, 0x25, 0x2d, 0x17, 0x13, 0x24, 0x1b, 0x10, +0x10, 0x1b, 0x24, 0x13, 0x17, 0x2d, 0x25, 0x17, +0xff, 0xff, 0x00, 0x08, 0x00, 0x00, 0x02, 0x06, +0x03, 0x46, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, +0x00, 0x07, 0x07, 0x32, 0x01, 0x07, 0x00, 0x00, +0xff, 0xff, 0x00, 0x15, 0x00, 0x00, 0x02, 0xfa, +0x02, 0x93, 0x02, 0x06, 0x00, 0x4e, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd4, +0x03, 0x46, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, +0x00, 0x07, 0x07, 0x32, 0x01, 0x1a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3e, 0xff, 0xf4, 0x02, 0x51, +0x02, 0x9f, 0x02, 0x06, 0x00, 0xf7, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x02, 0x23, +0x03, 0x0c, 0x02, 0x26, 0x03, 0x94, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2c, 0x01, 0x46, 0x00, 0x01, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x03, 0x1e, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, +0x00, 0x07, 0x07, 0x36, 0x01, 0x46, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x56, +0x02, 0x9f, 0x02, 0x06, 0x03, 0xc2, 0x00, 0x00, +0xff, 0xff, 0x00, 0x07, 0xff, 0xf4, 0x01, 0xe6, +0x03, 0x0b, 0x02, 0x26, 0x03, 0xa1, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2c, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x07, 0xff, 0xf4, 0x01, 0xe6, +0x03, 0x65, 0x02, 0x26, 0x03, 0xa1, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3c, 0x00, 0xe9, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0x9c, +0x01, 0xec, 0x02, 0x06, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x02, 0x00, 0x3c, 0xff, 0xf4, 0x01, 0xe1, +0x02, 0xda, 0x00, 0x12, 0x00, 0x35, 0x00, 0x57, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x30, 0x2f, 0x1b, 0xb9, 0x00, 0x30, 0x00, 0x13, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x28, 0x2f, 0x1b, 0xb9, 0x00, 0x28, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x1e, 0x00, 0x01, +0x00, 0x0a, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x28, +0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x1b, 0x00, 0x30, 0x00, 0x28, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x1b, 0x2f, 0xb9, 0x00, 0x0d, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x30, 0x10, 0xb9, +0x00, 0x16, 0x00, 0x02, 0xf4, 0x30, 0x31, 0x25, +0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, +0x22, 0x06, 0x07, 0x06, 0x14, 0x15, 0x14, 0x16, +0x01, 0x0e, 0x01, 0x07, 0x0e, 0x03, 0x07, 0x3e, +0x01, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, +0x02, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, +0x37, 0x3e, 0x03, 0x37, 0x01, 0x17, 0x21, 0x39, +0x2a, 0x18, 0x14, 0x28, 0x3b, 0x27, 0x29, 0x56, +0x2e, 0x01, 0x57, 0x01, 0x0e, 0x14, 0x2b, 0x1d, +0x3d, 0x5d, 0x41, 0x25, 0x06, 0x25, 0x5d, 0x30, +0x2e, 0x49, 0x33, 0x1b, 0x20, 0x38, 0x49, 0x29, +0x68, 0x73, 0x29, 0x4e, 0x6f, 0x45, 0x13, 0x1a, +0x12, 0x10, 0x0b, 0x1b, 0x1f, 0x38, 0x4f, 0x2f, +0x28, 0x46, 0x32, 0x1d, 0x2c, 0x3b, 0x0b, 0x16, +0x0c, 0x75, 0x89, 0x02, 0x93, 0x0b, 0x0b, 0x05, +0x0a, 0x18, 0x39, 0x69, 0x5a, 0x2f, 0x2f, 0x21, +0x3b, 0x54, 0x33, 0x3a, 0x5d, 0x42, 0x23, 0x99, +0x90, 0x82, 0x9c, 0x56, 0x24, 0x0b, 0x03, 0x05, +0x06, 0x07, 0x05, 0x00, 0x00, 0x03, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xc6, 0x01, 0xe0, 0x00, 0x11, +0x00, 0x1a, 0x00, 0x22, 0x00, 0x4d, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x10, +0x2f, 0x1b, 0xb9, 0x00, 0x10, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x12, 0x00, 0x01, 0x00, 0x20, +0x00, 0x04, 0x2b, 0xba, 0x00, 0x08, 0x00, 0x20, +0x00, 0x12, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, +0x10, 0xb9, 0x00, 0x18, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x10, 0x10, 0xb9, 0x00, 0x1b, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x13, 0x33, 0x32, 0x16, 0x15, +0x14, 0x06, 0x07, 0x15, 0x1e, 0x03, 0x15, 0x14, +0x06, 0x2b, 0x01, 0x13, 0x32, 0x36, 0x35, 0x34, +0x26, 0x2b, 0x01, 0x15, 0x17, 0x32, 0x35, 0x34, +0x26, 0x2b, 0x01, 0x15, 0x5c, 0xad, 0x4e, 0x59, +0x2e, 0x21, 0x13, 0x24, 0x1c, 0x12, 0x63, 0x55, +0xb2, 0x9c, 0x4b, 0x40, 0x3d, 0x45, 0x79, 0x7d, +0x93, 0x4f, 0x4c, 0x75, 0x01, 0xe0, 0x38, 0x3e, +0x2e, 0x30, 0x0b, 0x03, 0x05, 0x11, 0x1d, 0x27, +0x1b, 0x46, 0x43, 0x01, 0x0e, 0x2f, 0x29, 0x2a, +0x2c, 0xae, 0xea, 0x67, 0x2e, 0x31, 0xc6, 0x00, +0x00, 0x01, 0x00, 0x5c, 0x00, 0x00, 0x01, 0x75, +0x01, 0xe0, 0x00, 0x05, 0x00, 0x2f, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, +0x2f, 0x1b, 0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x02, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, 0x21, 0x15, +0x23, 0x11, 0x23, 0x5c, 0x01, 0x19, 0xed, 0x2c, +0x01, 0xe0, 0x26, 0xfe, 0x46, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x18, 0xff, 0x54, 0x01, 0xda, +0x01, 0xe0, 0x00, 0x08, 0x00, 0x1b, 0x00, 0x4f, +0x00, 0x7d, 0xb8, 0x00, 0x10, 0x2f, 0x18, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x19, 0x2f, +0x1b, 0xb9, 0x00, 0x19, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, +0x2f, 0x1b, 0xb9, 0x00, 0x0d, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x12, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x06, 0xd0, 0xb8, 0x00, 0x19, 0x10, 0xb9, +0x00, 0x07, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x06, +0x10, 0xb8, 0x00, 0x09, 0xd0, 0xb8, 0x00, 0x10, +0x10, 0xb8, 0x00, 0x0c, 0xd0, 0x30, 0x31, 0x37, +0x0e, 0x03, 0x07, 0x21, 0x11, 0x23, 0x01, 0x15, +0x07, 0x23, 0x35, 0x21, 0x15, 0x23, 0x27, 0x35, +0x33, 0x3e, 0x03, 0x3f, 0x01, 0x21, 0x11, 0x9e, +0x06, 0x0d, 0x0f, 0x11, 0x08, 0x01, 0x09, 0xb8, +0x01, 0x26, 0x06, 0x26, 0xfe, 0x96, 0x27, 0x05, +0x14, 0x0b, 0x14, 0x12, 0x11, 0x08, 0x1b, 0x01, +0x07, 0xf8, 0x2f, 0x44, 0x32, 0x21, 0x0b, 0x01, +0x93, 0xfe, 0x6d, 0x1a, 0xb9, 0xac, 0xac, 0xb9, +0x1a, 0x06, 0x16, 0x2e, 0x4f, 0x3e, 0xe2, 0xfe, +0x47, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xbd, 0x01, 0xec, 0x02, 0x06, +0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x11, +0x00, 0x00, 0x02, 0x69, 0x01, 0xec, 0x00, 0x2f, +0x00, 0x7f, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x16, 0x2f, 0x1b, 0xb9, 0x00, 0x16, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x09, 0x2f, 0x1b, 0xb9, 0x00, +0x09, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x07, +0x00, 0x01, 0x00, 0x1a, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x09, 0x10, 0xb8, 0x00, 0x05, 0xd0, 0xb8, +0x00, 0x01, 0xd0, 0xb8, 0x00, 0x07, 0x10, 0xb8, +0x00, 0x02, 0xd0, 0xba, 0x00, 0x0a, 0x00, 0x1a, +0x00, 0x07, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x16, +0x10, 0xb9, 0x00, 0x10, 0x00, 0x02, 0xf4, 0xb8, +0x00, 0x16, 0x10, 0xb8, 0x00, 0x23, 0xd0, 0xb8, +0x00, 0x1c, 0xd0, 0xb8, 0x00, 0x1a, 0x10, 0xb8, +0x00, 0x1f, 0xd0, 0xb8, 0x00, 0x23, 0x10, 0xb9, +0x00, 0x29, 0x00, 0x02, 0xf4, 0xba, 0x00, 0x2f, +0x00, 0x02, 0x00, 0x1f, 0x11, 0x12, 0x39, 0x30, +0x31, 0x21, 0x23, 0x27, 0x23, 0x15, 0x23, 0x35, +0x23, 0x07, 0x23, 0x13, 0x27, 0x2e, 0x03, 0x23, +0x2a, 0x01, 0x07, 0x27, 0x36, 0x33, 0x32, 0x16, +0x1f, 0x01, 0x33, 0x35, 0x33, 0x15, 0x33, 0x37, +0x3e, 0x01, 0x33, 0x32, 0x17, 0x07, 0x26, 0x22, +0x23, 0x22, 0x0e, 0x02, 0x0f, 0x01, 0x02, 0x69, +0x31, 0x84, 0x63, 0x28, 0x63, 0x84, 0x31, 0x96, +0x2d, 0x0a, 0x12, 0x12, 0x13, 0x09, 0x05, 0x05, +0x05, 0x0a, 0x0a, 0x0d, 0x1f, 0x36, 0x19, 0x2f, +0x5e, 0x28, 0x5d, 0x30, 0x18, 0x36, 0x20, 0x0c, +0x0a, 0x09, 0x05, 0x05, 0x05, 0x0a, 0x12, 0x12, +0x12, 0x0a, 0x2d, 0xe7, 0xe7, 0xe7, 0xe7, 0x01, +0x01, 0x72, 0x18, 0x1e, 0x11, 0x05, 0x02, 0x2b, +0x04, 0x2b, 0x3d, 0x76, 0xd2, 0xd2, 0x76, 0x3d, +0x2b, 0x04, 0x2b, 0x02, 0x05, 0x11, 0x1e, 0x18, +0x73, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfa, +0xff, 0xf4, 0x02, 0x7f, 0x01, 0xec, 0x00, 0x4f, +0x00, 0xc9, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x27, 0x2f, 0x1b, 0xb9, 0x00, 0x27, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x29, 0x2f, 0x1b, 0xb9, 0x00, +0x29, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x3a, 0x2f, 0x1b, 0xb9, +0x00, 0x3a, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x3c, 0x2f, 0x1b, +0xb9, 0x00, 0x3c, 0x00, 0x09, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x02, +0x2f, 0x1b, 0xb9, 0x00, 0x02, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x13, 0x2f, 0x1b, 0xb9, 0x00, 0x13, 0x00, 0x05, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x15, 0x2f, 0x1b, 0xb9, 0x00, 0x15, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x34, 0x00, 0x01, +0x00, 0x08, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x08, +0x10, 0xb8, 0x00, 0x0c, 0xd0, 0xb8, 0x00, 0x13, +0x10, 0xb9, 0x00, 0x19, 0x00, 0x02, 0xf4, 0xb8, +0x00, 0x29, 0x10, 0xb9, 0x00, 0x23, 0x00, 0x02, +0xf4, 0xb8, 0x00, 0x34, 0x10, 0xb8, 0x00, 0x2f, +0xd0, 0xb8, 0x00, 0x23, 0x10, 0xb8, 0x00, 0x40, +0xd0, 0xb8, 0x00, 0x19, 0x10, 0xb8, 0x00, 0x4c, +0xd0, 0x30, 0x31, 0x05, 0x06, 0x23, 0x22, 0x2e, +0x02, 0x2f, 0x01, 0x23, 0x15, 0x23, 0x35, 0x23, +0x07, 0x0e, 0x03, 0x23, 0x22, 0x27, 0x37, 0x16, +0x32, 0x33, 0x32, 0x36, 0x3f, 0x01, 0x27, 0x2e, +0x03, 0x23, 0x2a, 0x01, 0x07, 0x27, 0x36, 0x33, +0x32, 0x1e, 0x02, 0x1f, 0x01, 0x33, 0x35, 0x33, +0x15, 0x33, 0x37, 0x3e, 0x03, 0x33, 0x32, 0x17, +0x07, 0x26, 0x22, 0x23, 0x22, 0x0e, 0x02, 0x0f, +0x01, 0x17, 0x1e, 0x03, 0x33, 0x3a, 0x01, 0x37, +0x02, 0x7f, 0x0a, 0x0c, 0x0f, 0x1b, 0x1b, 0x1e, +0x10, 0x4a, 0x5b, 0x28, 0x5b, 0x4a, 0x11, 0x1d, +0x1c, 0x1b, 0x0e, 0x0d, 0x0a, 0x0a, 0x05, 0x05, +0x05, 0x10, 0x23, 0x1a, 0x4c, 0x32, 0x0b, 0x12, +0x12, 0x12, 0x0a, 0x05, 0x04, 0x05, 0x0a, 0x0a, +0x0c, 0x10, 0x1c, 0x1b, 0x1a, 0x0e, 0x32, 0x5b, +0x28, 0x5b, 0x32, 0x0d, 0x1a, 0x1b, 0x1c, 0x10, +0x0d, 0x0a, 0x0a, 0x05, 0x05, 0x05, 0x0a, 0x11, +0x12, 0x13, 0x0a, 0x33, 0x4d, 0x0d, 0x15, 0x12, +0x11, 0x08, 0x05, 0x04, 0x05, 0x08, 0x04, 0x09, +0x17, 0x28, 0x20, 0x8b, 0xe7, 0xe7, 0x8b, 0x20, +0x28, 0x17, 0x09, 0x04, 0x2b, 0x02, 0x1c, 0x30, +0x8e, 0x78, 0x19, 0x1e, 0x10, 0x05, 0x02, 0x2b, +0x04, 0x08, 0x17, 0x29, 0x20, 0x76, 0xd2, 0xd2, +0x76, 0x20, 0x29, 0x17, 0x08, 0x04, 0x2b, 0x02, +0x05, 0x10, 0x1e, 0x19, 0x78, 0x8e, 0x18, 0x1e, +0x10, 0x06, 0x02, 0x00, 0x00, 0x01, 0x00, 0x12, +0x00, 0x00, 0x02, 0x6a, 0x01, 0xe0, 0x00, 0x15, +0x00, 0x1d, 0x00, 0xbb, 0x00, 0x08, 0x00, 0x01, +0x00, 0x0e, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x08, +0x10, 0xb8, 0x00, 0x03, 0xd0, 0xb8, 0x00, 0x0e, +0x10, 0xb8, 0x00, 0x12, 0xd0, 0x30, 0x31, 0x37, +0x27, 0x33, 0x17, 0x33, 0x35, 0x33, 0x15, 0x33, +0x37, 0x33, 0x07, 0x17, 0x23, 0x27, 0x23, 0x15, +0x23, 0x35, 0x23, 0x07, 0x23, 0xb5, 0x99, 0x32, +0x8d, 0x4d, 0x2b, 0x4e, 0x8c, 0x33, 0x9a, 0xa4, +0x32, 0x93, 0x52, 0x2b, 0x52, 0x92, 0x32, 0xfe, +0xe2, 0xd2, 0xd2, 0xd2, 0xd2, 0xe2, 0xfe, 0xe7, +0xe7, 0xe7, 0xe7, 0x00, 0x00, 0x01, 0x00, 0x2a, +0xff, 0xf4, 0x01, 0x92, 0x01, 0xec, 0x00, 0x31, +0x00, 0x4d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x1f, 0x2f, 0x1b, 0xb9, 0x00, 0x1f, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x12, +0x00, 0x01, 0x00, 0x0f, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x00, 0x10, 0xb9, 0x00, 0x07, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x1f, 0x10, 0xb9, 0x00, 0x18, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x28, 0x00, 0x0f, +0x00, 0x12, 0x11, 0x12, 0x39, 0x30, 0x31, 0x17, +0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, +0x3e, 0x02, 0x35, 0x34, 0x26, 0x2b, 0x01, 0x35, +0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, +0x06, 0x07, 0x27, 0x3e, 0x01, 0x33, 0x32, 0x1e, +0x02, 0x15, 0x14, 0x06, 0x07, 0x15, 0x1e, 0x03, +0x15, 0x14, 0x0e, 0x02, 0xdd, 0x33, 0x58, 0x28, +0x17, 0x23, 0x4b, 0x2b, 0x1c, 0x32, 0x26, 0x16, +0x50, 0x48, 0x3c, 0x2f, 0x48, 0x48, 0x43, 0x31, +0x30, 0x3f, 0x1e, 0x17, 0x20, 0x4e, 0x37, 0x21, +0x3a, 0x2b, 0x1a, 0x2d, 0x25, 0x15, 0x25, 0x1d, +0x11, 0x1c, 0x32, 0x42, 0x0c, 0x1c, 0x23, 0x1f, +0x20, 0x18, 0x0f, 0x1b, 0x28, 0x18, 0x33, 0x33, +0x24, 0x33, 0x2b, 0x2f, 0x2b, 0x1a, 0x16, 0x1f, +0x17, 0x20, 0x10, 0x1f, 0x2e, 0x1f, 0x27, 0x38, +0x10, 0x04, 0x05, 0x14, 0x1e, 0x29, 0x1b, 0x20, +0x34, 0x26, 0x14, 0x00, 0x00, 0x01, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xce, 0x01, 0xe0, 0x00, 0x17, +0x00, 0x49, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x17, 0x2f, 0x1b, 0xb9, 0x00, +0x17, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x05, +0x00, 0x00, 0x00, 0x17, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x0a, 0xd0, 0xb8, +0x00, 0x17, 0x10, 0xb8, 0x00, 0x0d, 0xd0, 0xba, +0x00, 0x11, 0x00, 0x0d, 0x00, 0x0a, 0x11, 0x12, +0x39, 0x30, 0x31, 0x13, 0x33, 0x15, 0x14, 0x06, +0x07, 0x33, 0x3e, 0x01, 0x37, 0x13, 0x33, 0x11, +0x23, 0x35, 0x34, 0x36, 0x37, 0x23, 0x0e, 0x01, +0x07, 0x03, 0x23, 0x5c, 0x2c, 0x03, 0x02, 0x04, +0x0e, 0x28, 0x0e, 0xd8, 0x2b, 0x2c, 0x03, 0x02, +0x04, 0x0e, 0x28, 0x0e, 0xd8, 0x2b, 0x01, 0xe0, +0xf0, 0x27, 0x5e, 0x30, 0x17, 0x3a, 0x17, 0x01, +0x3d, 0xfe, 0x20, 0xf0, 0x28, 0x5d, 0x30, 0x17, +0x3a, 0x17, 0xfe, 0xc3, 0xff, 0xff, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xce, 0x02, 0xd0, 0x02, 0x26, +0x03, 0xee, 0x00, 0x00, 0x00, 0x07, 0x07, 0x30, +0x01, 0x17, 0x00, 0x02, 0x00, 0x01, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xc6, 0x01, 0xec, 0x00, 0x1b, +0x00, 0x53, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, +0x05, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x03, +0x00, 0x01, 0x00, 0x08, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x05, 0x10, 0xb8, 0x00, 0x01, 0xd0, 0xb8, +0x00, 0x0f, 0x10, 0xb8, 0x00, 0x06, 0xd0, 0xb8, +0x00, 0x0f, 0x10, 0xb9, 0x00, 0x15, 0x00, 0x02, +0xf4, 0xba, 0x00, 0x1b, 0x00, 0x08, 0x00, 0x03, +0x11, 0x12, 0x39, 0x30, 0x31, 0x21, 0x23, 0x27, +0x23, 0x15, 0x23, 0x11, 0x33, 0x15, 0x33, 0x37, +0x3e, 0x03, 0x33, 0x32, 0x17, 0x07, 0x26, 0x22, +0x23, 0x22, 0x0e, 0x02, 0x0f, 0x01, 0x01, 0xc6, +0x32, 0x93, 0x79, 0x2c, 0x2c, 0x78, 0x32, 0x0d, +0x1a, 0x1b, 0x1c, 0x10, 0x0d, 0x0a, 0x0a, 0x05, +0x05, 0x05, 0x09, 0x12, 0x12, 0x13, 0x0a, 0x32, +0xe7, 0xe7, 0x01, 0xe0, 0xd2, 0x76, 0x20, 0x29, +0x17, 0x08, 0x04, 0x2b, 0x02, 0x05, 0x10, 0x1e, +0x19, 0x76, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5c, +0xff, 0xf4, 0x01, 0xd5, 0x01, 0xec, 0x00, 0x22, +0x00, 0x65, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x11, 0x2f, 0x1b, 0xb9, 0x00, 0x11, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, 0x00, +0x13, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, +0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x02, 0x2f, 0x1b, +0xb9, 0x00, 0x02, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x0d, 0x00, 0x01, 0x00, 0x06, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x11, 0x10, 0xb9, 0x00, 0x17, +0x00, 0x02, 0xf4, 0xb8, 0x00, 0x02, 0x10, 0xb9, +0x00, 0x1f, 0x00, 0x02, 0xf4, 0x30, 0x31, 0x05, +0x06, 0x23, 0x22, 0x26, 0x2f, 0x01, 0x23, 0x15, +0x23, 0x11, 0x33, 0x15, 0x33, 0x37, 0x3e, 0x01, +0x33, 0x32, 0x17, 0x07, 0x26, 0x22, 0x23, 0x22, +0x06, 0x0f, 0x01, 0x17, 0x1e, 0x01, 0x33, 0x3a, +0x01, 0x37, 0x01, 0xd5, 0x0a, 0x10, 0x1b, 0x2c, +0x17, 0x5d, 0x78, 0x2c, 0x2c, 0x77, 0x41, 0x14, +0x2e, 0x21, 0x0c, 0x0a, 0x0a, 0x05, 0x03, 0x06, +0x15, 0x1c, 0x0d, 0x41, 0x5e, 0x10, 0x1a, 0x11, +0x05, 0x07, 0x05, 0x08, 0x04, 0x1a, 0x2c, 0xad, +0xe7, 0x01, 0xe0, 0xd2, 0x91, 0x2c, 0x21, 0x04, +0x2b, 0x02, 0x14, 0x1c, 0x95, 0xad, 0x1d, 0x0f, +0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xc6, 0x01, 0xe0, 0x00, 0x0c, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x03, 0x00, 0x01, +0x00, 0x09, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x33, 0x15, 0x33, 0x37, 0x33, 0x07, 0x17, 0x23, +0x27, 0x23, 0x15, 0x23, 0x5c, 0x2c, 0x74, 0x8e, +0x32, 0x9a, 0xa4, 0x32, 0x93, 0x79, 0x2c, 0x01, +0xe0, 0xd2, 0xd2, 0xe2, 0xfe, 0xe7, 0xe7, 0x00, +0x00, 0x01, 0x00, 0x0d, 0xff, 0xf4, 0x01, 0x9d, +0x01, 0xe0, 0x00, 0x16, 0x00, 0x3d, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0c, 0x2f, +0x1b, 0xb9, 0x00, 0x0c, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x06, 0x00, 0x02, 0xf4, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x0f, 0xd0, 0xb8, +0x00, 0x0c, 0x10, 0xb9, 0x00, 0x10, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x17, 0x22, 0x27, 0x37, 0x1e, +0x01, 0x33, 0x32, 0x36, 0x37, 0x3e, 0x01, 0x37, +0x21, 0x11, 0x23, 0x11, 0x23, 0x0e, 0x01, 0x07, +0x0e, 0x01, 0x30, 0x14, 0x0f, 0x0a, 0x05, 0x09, +0x07, 0x1d, 0x23, 0x07, 0x0a, 0x14, 0x09, 0x01, +0x03, 0x2c, 0xb3, 0x09, 0x12, 0x08, 0x0a, 0x35, +0x0c, 0x07, 0x2a, 0x02, 0x02, 0x3a, 0x3e, 0x52, +0xa3, 0x52, 0xfe, 0x20, 0x01, 0xba, 0x4b, 0x94, +0x4b, 0x50, 0x4c, 0x00, 0x00, 0x01, 0x00, 0x5c, +0x00, 0x00, 0x02, 0x0e, 0x01, 0xe0, 0x00, 0x21, +0x00, 0x5d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x21, 0x2f, 0x1b, 0xb9, 0x00, +0x21, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x05, +0x00, 0x21, 0x00, 0x00, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x0a, 0xd0, 0xb8, +0x00, 0x21, 0x10, 0xb8, 0x00, 0x0d, 0xd0, 0xba, +0x00, 0x11, 0x00, 0x0d, 0x00, 0x0a, 0x11, 0x12, +0x39, 0xba, 0x00, 0x17, 0x00, 0x0a, 0x00, 0x0d, +0x11, 0x12, 0x39, 0xba, 0x00, 0x1c, 0x00, 0x00, +0x00, 0x21, 0x11, 0x12, 0x39, 0x30, 0x31, 0x13, +0x33, 0x13, 0x1e, 0x01, 0x17, 0x33, 0x3e, 0x01, +0x37, 0x13, 0x33, 0x11, 0x23, 0x11, 0x34, 0x36, +0x37, 0x23, 0x0e, 0x01, 0x07, 0x03, 0x23, 0x03, +0x2e, 0x01, 0x27, 0x23, 0x1e, 0x01, 0x15, 0x11, +0x23, 0x5c, 0x34, 0x73, 0x0c, 0x19, 0x0b, 0x04, +0x0d, 0x1a, 0x0b, 0x71, 0x34, 0x2b, 0x04, 0x02, +0x04, 0x0b, 0x15, 0x0b, 0x70, 0x28, 0x72, 0x0b, +0x15, 0x0b, 0x04, 0x02, 0x03, 0x2a, 0x01, 0xe0, +0xfe, 0xfb, 0x1f, 0x3d, 0x1f, 0x1f, 0x3d, 0x1f, +0x01, 0x05, 0xfe, 0x20, 0x01, 0x10, 0x1c, 0x4d, +0x23, 0x1a, 0x32, 0x19, 0xfe, 0xf8, 0x01, 0x08, +0x19, 0x32, 0x1a, 0x23, 0x4d, 0x1c, 0xfe, 0xf0, +0x00, 0x01, 0x00, 0x5c, 0x00, 0x00, 0x01, 0xca, +0x01, 0xe0, 0x00, 0x0b, 0x00, 0x3f, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, +0x2f, 0x1b, 0xb9, 0x00, 0x0b, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x04, 0xd0, 0xb8, 0x00, 0x0b, 0x10, 0xb8, +0x00, 0x07, 0xd0, 0x30, 0x31, 0x13, 0x33, 0x15, +0x21, 0x35, 0x33, 0x11, 0x23, 0x35, 0x21, 0x15, +0x23, 0x5c, 0x2c, 0x01, 0x16, 0x2c, 0x2c, 0xfe, +0xea, 0x2c, 0x01, 0xe0, 0xd0, 0xd0, 0xfe, 0x20, +0xe8, 0xe8, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xe3, 0x01, 0xec, 0x02, 0x06, +0x00, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xc0, 0x01, 0xe0, 0x00, 0x07, +0x00, 0x33, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x07, 0x2f, 0x1b, 0xb9, 0x00, +0x07, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x03, +0xd0, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x04, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, 0x21, 0x11, +0x23, 0x11, 0x21, 0x11, 0x23, 0x5c, 0x01, 0x64, +0x2c, 0xfe, 0xf4, 0x2c, 0x01, 0xe0, 0xfe, 0x20, +0x01, 0xba, 0xfe, 0x46, 0xff, 0xff, 0x00, 0x5c, +0xff, 0x27, 0x01, 0xec, 0x01, 0xec, 0x02, 0x06, +0x00, 0x2d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xa7, 0x01, 0xec, 0x02, 0x06, +0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1a, +0x00, 0x00, 0x01, 0x9f, 0x01, 0xe0, 0x00, 0x07, +0x00, 0x33, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x02, 0x2f, 0x1b, 0xb9, 0x00, 0x02, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x07, 0x2f, 0x1b, 0xb9, 0x00, +0x07, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x02, +0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x04, 0xd0, 0x30, 0x31, 0x13, 0x23, 0x35, +0x21, 0x15, 0x23, 0x11, 0x23, 0xc6, 0xac, 0x01, +0x85, 0xac, 0x2d, 0x01, 0xba, 0x26, 0x26, 0xfe, +0x46, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x0c, +0xff, 0x25, 0x01, 0xa8, 0x01, 0xe0, 0x02, 0x06, +0x00, 0x36, 0x00, 0x00, 0x00, 0x03, 0x00, 0x34, +0xff, 0x27, 0x02, 0x90, 0x02, 0xcf, 0x00, 0x25, +0x00, 0x36, 0x00, 0x47, 0x00, 0xcb, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x11, 0x2f, +0x1b, 0xb9, 0x00, 0x11, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0c, +0x2f, 0x1b, 0xb9, 0x00, 0x0c, 0x00, 0x09, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x25, 0x2f, 0x1b, 0xb9, 0x00, 0x25, 0x00, 0x07, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x04, 0x2f, 0x1b, 0xb9, 0x00, 0x04, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x01, 0x00, 0x04, +0x00, 0x0c, 0x11, 0x12, 0x39, 0xba, 0x00, 0x0f, +0x00, 0x0c, 0x00, 0x04, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x0c, 0x10, 0xb8, 0x00, 0x17, 0xd0, 0xb8, +0x00, 0x04, 0x10, 0xb8, 0x00, 0x1f, 0xd0, 0xba, +0x00, 0x14, 0x00, 0x17, 0x00, 0x1f, 0x11, 0x12, +0x39, 0xba, 0x00, 0x22, 0x00, 0x1f, 0x00, 0x17, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x04, 0x10, 0xb9, +0x00, 0x26, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x01, +0x10, 0xb9, 0x00, 0x29, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x0f, 0x10, 0xb9, 0x00, 0x2a, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0c, 0x10, 0xb9, 0x00, 0x2d, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x26, 0x10, 0xb8, +0x00, 0x37, 0xd0, 0xb8, 0x00, 0x2d, 0x10, 0xb8, +0x00, 0x41, 0xd0, 0xb8, 0x00, 0x14, 0x10, 0xb9, +0x00, 0x44, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x22, +0x10, 0xb9, 0x00, 0x45, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x05, 0x37, 0x0e, 0x01, 0x23, 0x22, 0x26, +0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, +0x27, 0x35, 0x33, 0x15, 0x07, 0x3e, 0x01, 0x33, +0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, +0x26, 0x27, 0x17, 0x15, 0x23, 0x27, 0x32, 0x36, +0x37, 0x11, 0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, +0x15, 0x14, 0x1e, 0x02, 0x21, 0x32, 0x3e, 0x02, +0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, +0x11, 0x1e, 0x01, 0x01, 0x4c, 0x01, 0x15, 0x31, +0x1f, 0x52, 0x62, 0x1c, 0x31, 0x41, 0x26, 0x1c, +0x31, 0x18, 0x01, 0x2c, 0x01, 0x18, 0x38, 0x1b, +0x57, 0x57, 0x1d, 0x31, 0x41, 0x25, 0x17, 0x34, +0x1a, 0x01, 0x2c, 0x5e, 0x19, 0x2c, 0x1a, 0x19, +0x31, 0x19, 0x1d, 0x32, 0x24, 0x14, 0x12, 0x24, +0x34, 0x01, 0x0c, 0x1e, 0x32, 0x24, 0x14, 0x0f, +0x20, 0x33, 0x24, 0x17, 0x32, 0x1b, 0x1b, 0x34, +0x2c, 0x49, 0x11, 0x18, 0x81, 0x7a, 0x3a, 0x5e, +0x42, 0x23, 0x16, 0x11, 0x47, 0xc3, 0xc3, 0x48, +0x12, 0x16, 0x85, 0x70, 0x3d, 0x60, 0x43, 0x23, +0x15, 0x13, 0x48, 0xad, 0xf4, 0x13, 0x18, 0x01, +0x56, 0x17, 0x12, 0x21, 0x39, 0x4f, 0x2d, 0x30, +0x4e, 0x37, 0x1f, 0x20, 0x3a, 0x51, 0x31, 0x2c, +0x4c, 0x37, 0x1f, 0x11, 0x18, 0xfe, 0xa8, 0x18, +0x11, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x0e, +0x00, 0x00, 0x01, 0x89, 0x01, 0xe0, 0x02, 0x06, +0x00, 0x35, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5c, +0xff, 0x54, 0x01, 0xfb, 0x01, 0xe0, 0x00, 0x0c, +0x00, 0x3d, 0x00, 0x7d, 0xb8, 0x00, 0x03, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, 0x05, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x09, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x00, 0xd0, 0xb8, 0x00, 0x06, +0x10, 0xb8, 0x00, 0x0a, 0xd0, 0x30, 0x31, 0x25, +0x15, 0x07, 0x23, 0x35, 0x21, 0x11, 0x33, 0x11, +0x21, 0x11, 0x33, 0x11, 0x01, 0xfb, 0x06, 0x26, +0xfe, 0x8d, 0x2c, 0x01, 0x05, 0x2c, 0x27, 0x1a, +0xb9, 0xac, 0x01, 0xe0, 0xfe, 0x47, 0x01, 0xb9, +0xfe, 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, +0x00, 0x00, 0x01, 0x8e, 0x01, 0xe0, 0x00, 0x15, +0x00, 0x37, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x09, 0x2f, 0x1b, 0xb9, 0x00, 0x09, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x14, 0x2f, 0x1b, 0xb9, 0x00, +0x14, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x0e, +0x00, 0x01, 0x00, 0x05, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x09, 0x10, 0xb8, 0x00, 0x12, 0xd0, 0x30, +0x31, 0x25, 0x0e, 0x03, 0x23, 0x22, 0x26, 0x3d, +0x01, 0x33, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, +0x37, 0x35, 0x33, 0x11, 0x23, 0x01, 0x62, 0x0f, +0x16, 0x16, 0x18, 0x11, 0x5e, 0x5e, 0x2c, 0x49, +0x4e, 0x1a, 0x29, 0x1a, 0x2c, 0x2c, 0xd1, 0x03, +0x05, 0x03, 0x01, 0x48, 0x54, 0x7f, 0x7f, 0x3f, +0x36, 0x05, 0x06, 0xe9, 0xfe, 0x20, 0x00, 0x00, +0x00, 0x01, 0x00, 0x5c, 0x00, 0x00, 0x02, 0x72, +0x01, 0xe0, 0x00, 0x0b, 0x00, 0x43, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, +0x2f, 0x1b, 0xb9, 0x00, 0x0b, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x03, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x04, 0xd0, 0xb8, +0x00, 0x03, 0x10, 0xb8, 0x00, 0x07, 0xd0, 0xb8, +0x00, 0x04, 0x10, 0xb8, 0x00, 0x08, 0xd0, 0x30, +0x31, 0x13, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, +0x33, 0x11, 0x33, 0x11, 0x21, 0x5c, 0x2c, 0xc9, +0x2c, 0xc9, 0x2c, 0xfd, 0xea, 0x01, 0xe0, 0xfe, +0x47, 0x01, 0xb9, 0xfe, 0x47, 0x01, 0xb9, 0xfe, +0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5c, +0xff, 0x54, 0x02, 0xb3, 0x01, 0xe0, 0x00, 0x10, +0x00, 0x45, 0x00, 0x7d, 0xb8, 0x00, 0x03, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, 0x05, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x09, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0d, 0xd0, 0xb8, 0x00, 0x00, +0xd0, 0xb8, 0x00, 0x06, 0x10, 0xb8, 0x00, 0x0a, +0xd0, 0xb8, 0x00, 0x0e, 0xd0, 0x30, 0x31, 0x25, +0x15, 0x07, 0x23, 0x35, 0x21, 0x11, 0x33, 0x11, +0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, +0x02, 0xb3, 0x05, 0x26, 0xfd, 0xd4, 0x2c, 0xc9, +0x2c, 0xc9, 0x2c, 0x27, 0x1a, 0xb9, 0xac, 0x01, +0xe0, 0xfe, 0x47, 0x01, 0xb9, 0xfe, 0x47, 0x01, +0xb9, 0xfe, 0x47, 0x00, 0x00, 0x02, 0x00, 0x1a, +0x00, 0x00, 0x02, 0x17, 0x01, 0xe0, 0x00, 0x0c, +0x00, 0x15, 0x00, 0x43, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x02, 0x2f, 0x1b, 0xb9, +0x00, 0x02, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, 0x2f, 0x1b, +0xb9, 0x00, 0x0b, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x05, 0x00, 0x01, 0x00, 0x13, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x02, 0x10, 0xb9, 0x00, 0x00, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0b, 0x10, 0xb9, +0x00, 0x0d, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, +0x23, 0x35, 0x33, 0x15, 0x33, 0x32, 0x16, 0x15, +0x14, 0x06, 0x2b, 0x01, 0x37, 0x32, 0x36, 0x35, +0x34, 0x26, 0x2b, 0x01, 0x15, 0xd3, 0xb9, 0xe5, +0x62, 0x55, 0x61, 0x61, 0x55, 0x8e, 0x84, 0x4b, +0x48, 0x48, 0x4b, 0x58, 0x01, 0xba, 0x26, 0xbf, +0x47, 0x48, 0x49, 0x49, 0x26, 0x33, 0x39, 0x38, +0x31, 0xd5, 0x00, 0x00, 0x00, 0x03, 0x00, 0x5c, +0x00, 0x00, 0x02, 0x20, 0x01, 0xe0, 0x00, 0x0a, +0x00, 0x13, 0x00, 0x17, 0x00, 0x49, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0a, +0x2f, 0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x02, 0x00, 0x01, 0x00, 0x12, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x0a, 0x10, 0xb9, +0x00, 0x0b, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x14, 0xd0, 0xb8, 0x00, 0x0a, +0x10, 0xb8, 0x00, 0x17, 0xd0, 0x30, 0x31, 0x13, +0x33, 0x15, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, +0x2b, 0x01, 0x37, 0x32, 0x36, 0x35, 0x34, 0x26, +0x2b, 0x01, 0x15, 0x01, 0x33, 0x11, 0x23, 0x5c, +0x2c, 0x57, 0x55, 0x62, 0x62, 0x55, 0x83, 0x7a, +0x4b, 0x47, 0x47, 0x4b, 0x4e, 0x01, 0x6c, 0x2c, +0x2c, 0x01, 0xe0, 0xbf, 0x47, 0x48, 0x49, 0x49, +0x26, 0x33, 0x39, 0x38, 0x31, 0xd5, 0x01, 0xba, +0xfe, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xaf, 0x01, 0xe0, 0x00, 0x0a, +0x00, 0x13, 0x00, 0x39, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, +0x00, 0x00, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x09, 0x2f, 0x1b, +0xb9, 0x00, 0x09, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x03, 0x00, 0x01, 0x00, 0x11, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x09, 0x10, 0xb9, 0x00, 0x0b, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, 0x33, 0x15, +0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x2b, 0x01, +0x37, 0x32, 0x36, 0x35, 0x34, 0x26, 0x2b, 0x01, +0x15, 0x5c, 0x2c, 0x71, 0x55, 0x61, 0x61, 0x55, +0x9d, 0x93, 0x4b, 0x48, 0x48, 0x4b, 0x67, 0x01, +0xe0, 0xbf, 0x47, 0x48, 0x49, 0x49, 0x26, 0x33, +0x39, 0x38, 0x31, 0xd5, 0x00, 0x01, 0x00, 0x19, +0xff, 0xf4, 0x01, 0x8d, 0x01, 0xec, 0x00, 0x20, +0x00, 0x43, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, 0x03, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0d, 0x2f, 0x1b, 0xb9, 0x00, +0x0d, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x1a, +0x00, 0x01, 0x00, 0x17, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x0d, 0x10, 0xb9, 0x00, 0x14, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x03, 0x10, 0xb9, 0x00, 0x1d, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, 0x3e, 0x01, +0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, +0x23, 0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, +0x32, 0x36, 0x37, 0x23, 0x35, 0x33, 0x2e, 0x01, +0x23, 0x22, 0x06, 0x07, 0x25, 0x18, 0x47, 0x39, +0x2a, 0x4b, 0x39, 0x22, 0x21, 0x39, 0x50, 0x2e, +0x31, 0x4e, 0x1d, 0x17, 0x19, 0x40, 0x2a, 0x4f, +0x5c, 0x02, 0xed, 0xec, 0x08, 0x5a, 0x42, 0x2b, +0x3b, 0x17, 0x01, 0xb1, 0x17, 0x24, 0x1e, 0x3f, +0x5f, 0x41, 0x3f, 0x5e, 0x3f, 0x1f, 0x24, 0x1b, +0x1e, 0x18, 0x1f, 0x6a, 0x66, 0x24, 0x5b, 0x5d, +0x1d, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x5c, +0xff, 0xf4, 0x02, 0x98, 0x01, 0xec, 0x00, 0x13, +0x00, 0x2e, 0x00, 0x65, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x2c, 0x2f, 0x1b, 0xb9, +0x00, 0x2c, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x19, 0x2f, 0x1b, +0xb9, 0x00, 0x19, 0x00, 0x09, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x2a, 0x2f, +0x1b, 0xb9, 0x00, 0x2a, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x23, +0x2f, 0x1b, 0xb9, 0x00, 0x23, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x14, 0x00, 0x02, 0x00, 0x28, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x23, 0x10, 0xb9, +0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x19, +0x10, 0xb9, 0x00, 0x0a, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x25, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, +0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, +0x02, 0x27, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, +0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, +0x27, 0x23, 0x15, 0x23, 0x11, 0x33, 0x15, 0x01, +0xce, 0x23, 0x39, 0x29, 0x17, 0x17, 0x29, 0x39, +0x23, 0x23, 0x3b, 0x2a, 0x18, 0x18, 0x2a, 0x3b, +0xa7, 0x04, 0x22, 0x36, 0x46, 0x29, 0x2a, 0x49, +0x37, 0x1f, 0x1f, 0x37, 0x49, 0x2a, 0x2a, 0x49, +0x37, 0x21, 0x01, 0x7b, 0x2c, 0x2c, 0x1b, 0x1f, +0x38, 0x4e, 0x2f, 0x30, 0x4e, 0x39, 0x1f, 0x1f, +0x39, 0x4e, 0x30, 0x2f, 0x4e, 0x38, 0x1f, 0xf2, +0x35, 0x53, 0x39, 0x1e, 0x22, 0x40, 0x5f, 0x3c, +0x3c, 0x5d, 0x40, 0x22, 0x21, 0x3d, 0x59, 0x39, +0xe4, 0x01, 0xe0, 0xd3, 0x00, 0x02, 0x00, 0x2a, +0x00, 0x00, 0x01, 0x94, 0x01, 0xe0, 0x00, 0x08, +0x00, 0x19, 0x00, 0x4b, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x09, 0x2f, 0x1b, 0xb9, +0x00, 0x09, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0f, 0x2f, 0x1b, +0xb9, 0x00, 0x0f, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x08, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x09, 0x10, 0xb9, 0x00, 0x00, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0f, 0x10, 0xb8, +0x00, 0x0a, 0xd0, 0xba, 0x00, 0x11, 0x00, 0x0c, +0x00, 0x08, 0x11, 0x12, 0x39, 0x30, 0x31, 0x01, +0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x3b, 0x01, +0x37, 0x11, 0x23, 0x35, 0x2b, 0x01, 0x07, 0x23, +0x37, 0x2e, 0x01, 0x35, 0x34, 0x3e, 0x02, 0x33, +0x01, 0x68, 0x5d, 0x44, 0x4f, 0x4f, 0x44, 0x5d, +0x2c, 0x2c, 0x6e, 0x01, 0x9b, 0x34, 0xa1, 0x37, +0x4a, 0x1b, 0x30, 0x43, 0x28, 0x01, 0xbb, 0x2d, +0x33, 0x33, 0x32, 0xea, 0xfe, 0x20, 0xd1, 0xd1, +0xd5, 0x09, 0x41, 0x3d, 0x24, 0x33, 0x1f, 0x0e, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xbd, +0x02, 0xf2, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x07, 0x07, 0x21, 0x01, 0x05, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xbd, +0x02, 0xa0, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x07, 0x07, 0x35, 0x01, 0x05, 0x00, 0x00, +0x00, 0x01, 0x00, 0x0f, 0xff, 0x1b, 0x01, 0xde, +0x02, 0xcf, 0x00, 0x2c, 0x00, 0x7e, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x26, 0x2f, +0x1b, 0xb9, 0x00, 0x26, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x21, +0x2f, 0x1b, 0xb9, 0x00, 0x21, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, 0x00, 0x07, +0x3e, 0x59, 0xb8, 0x00, 0x26, 0x10, 0xb8, 0x00, +0x25, 0xdc, 0xb8, 0x00, 0x22, 0xdc, 0xb8, 0x00, +0x03, 0xdc, 0xba, 0x00, 0x00, 0x00, 0x03, 0x00, +0x21, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x0b, 0x10, +0xb9, 0x00, 0x12, 0x00, 0x01, 0xf4, 0xb8, 0x00, +0x03, 0x10, 0xb9, 0x00, 0x1c, 0x00, 0x01, 0xf4, +0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x1f, 0x00, +0x01, 0xf4, 0xb8, 0x00, 0x25, 0x10, 0xb8, 0x00, +0x29, 0xd0, 0xb8, 0x00, 0x22, 0x10, 0xb8, 0x00, +0x2a, 0xd0, 0x30, 0x31, 0x13, 0x3e, 0x01, 0x33, +0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, +0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x3e, +0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, +0x07, 0x11, 0x23, 0x11, 0x23, 0x35, 0x37, 0x35, +0x33, 0x15, 0x33, 0x15, 0x23, 0x15, 0x86, 0x26, +0x4f, 0x32, 0x55, 0x5c, 0x1a, 0x30, 0x46, 0x2b, +0x0e, 0x1c, 0x09, 0x0a, 0x08, 0x16, 0x0b, 0x1e, +0x34, 0x25, 0x15, 0x11, 0x23, 0x34, 0x23, 0x29, +0x46, 0x2d, 0x2c, 0x4d, 0x4d, 0x2c, 0xbe, 0xbe, +0x01, 0x76, 0x26, 0x2e, 0x88, 0x9c, 0x75, 0x98, +0x5a, 0x24, 0x07, 0x05, 0x24, 0x03, 0x07, 0x20, +0x4f, 0x89, 0x69, 0x46, 0x61, 0x3d, 0x1c, 0x29, +0x2d, 0xfe, 0xb4, 0x02, 0x45, 0x1d, 0x04, 0x69, +0x69, 0x21, 0x68, 0x00, 0xff, 0xff, 0x00, 0x5c, +0x00, 0x00, 0x01, 0x75, 0x02, 0xf4, 0x02, 0x26, +0x03, 0xe7, 0x00, 0x00, 0x00, 0x07, 0x07, 0x24, +0x00, 0xf9, 0x00, 0x02, 0x00, 0x01, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xa7, 0x01, 0xec, 0x00, 0x20, +0x00, 0x43, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0d, 0x2f, 0x1b, 0xb9, 0x00, 0x0d, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, +0x03, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x18, +0x00, 0x01, 0x00, 0x19, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x0d, 0x10, 0xb9, 0x00, 0x14, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x03, 0x10, 0xb9, 0x00, 0x1d, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x25, 0x0e, 0x01, +0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, +0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, 0x01, 0x23, +0x22, 0x06, 0x07, 0x21, 0x15, 0x21, 0x1e, 0x01, +0x33, 0x32, 0x36, 0x37, 0x01, 0xa7, 0x1f, 0x4c, +0x2e, 0x2f, 0x50, 0x3a, 0x21, 0x23, 0x3c, 0x4f, +0x2d, 0x31, 0x43, 0x19, 0x19, 0x18, 0x38, 0x24, +0x45, 0x60, 0x08, 0x01, 0x02, 0xfe, 0xfd, 0x02, +0x5c, 0x51, 0x26, 0x42, 0x19, 0x33, 0x1b, 0x24, +0x1f, 0x3f, 0x5e, 0x3f, 0x40, 0x5f, 0x3f, 0x1f, +0x24, 0x17, 0x1e, 0x16, 0x1d, 0x5f, 0x59, 0x24, +0x65, 0x6b, 0x21, 0x17, 0xff, 0xff, 0x00, 0x20, +0xff, 0xf4, 0x01, 0x72, 0x01, 0xec, 0x02, 0x06, +0x00, 0x30, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4b, +0x00, 0x00, 0x00, 0x9b, 0x02, 0xa3, 0x02, 0x06, +0x00, 0x26, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf4, +0x00, 0x00, 0x00, 0xf0, 0x02, 0xa0, 0x02, 0x26, +0x01, 0x49, 0x00, 0x00, 0x00, 0x06, 0x07, 0x35, +0x72, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x15, +0x00, 0x00, 0x00, 0xd2, 0x02, 0x9f, 0x00, 0x0b, +0x00, 0x17, 0x00, 0x1b, 0x00, 0x41, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x18, 0x2f, +0x1b, 0xb9, 0x00, 0x18, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1b, +0x2f, 0x1b, 0xb9, 0x00, 0x1b, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x18, 0x10, 0xb8, 0x00, 0x00, +0xdc, 0xb8, 0x00, 0x06, 0xdc, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x0c, 0xd0, 0xb8, 0x00, 0x06, +0x10, 0xb8, 0x00, 0x12, 0xd0, 0x30, 0x31, 0x13, +0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, +0x15, 0x14, 0x06, 0x33, 0x22, 0x26, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, +0x33, 0x11, 0x23, 0x39, 0x0f, 0x15, 0x15, 0x0f, +0x0f, 0x15, 0x15, 0x66, 0x0f, 0x14, 0x14, 0x0f, +0x10, 0x14, 0x14, 0x61, 0x2c, 0x2c, 0x02, 0x56, +0x15, 0x10, 0x0f, 0x15, 0x15, 0x0f, 0x10, 0x15, +0x15, 0x10, 0x0f, 0x15, 0x15, 0x0f, 0x10, 0x15, +0x76, 0xfe, 0x20, 0x00, 0xff, 0xff, 0xff, 0xdf, +0xff, 0x1b, 0x00, 0x9c, 0x02, 0xa3, 0x02, 0x06, +0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0f, +0xff, 0xf4, 0x02, 0x97, 0x01, 0xe0, 0x00, 0x08, +0x00, 0x28, 0x00, 0x55, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x26, 0x2f, 0x1b, 0xb9, +0x00, 0x26, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x1a, 0x2f, 0x1b, +0xb9, 0x00, 0x1a, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x28, 0x00, 0x01, 0x00, 0x07, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x1a, 0x10, 0xb8, 0x00, 0x10, +0xd0, 0xb8, 0x00, 0x10, 0x2f, 0xb9, 0x00, 0x00, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x26, 0x10, 0xb9, +0x00, 0x11, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x1a, +0x10, 0xb9, 0x00, 0x20, 0x00, 0x02, 0xf4, 0x30, +0x31, 0x25, 0x32, 0x36, 0x35, 0x34, 0x26, 0x2b, +0x01, 0x15, 0x37, 0x32, 0x16, 0x15, 0x14, 0x06, +0x2b, 0x01, 0x11, 0x23, 0x0e, 0x01, 0x07, 0x0e, +0x03, 0x23, 0x22, 0x27, 0x37, 0x1e, 0x01, 0x33, +0x32, 0x36, 0x37, 0x3e, 0x01, 0x37, 0x33, 0x15, +0x01, 0xd7, 0x4b, 0x48, 0x48, 0x4b, 0x45, 0x4f, +0x55, 0x61, 0x61, 0x55, 0x7b, 0xaa, 0x04, 0x0a, +0x0a, 0x06, 0x17, 0x1e, 0x24, 0x13, 0x14, 0x0f, +0x0a, 0x05, 0x09, 0x06, 0x1b, 0x29, 0x09, 0x0c, +0x0b, 0x03, 0xfe, 0x26, 0x33, 0x39, 0x38, 0x31, +0xd5, 0xfb, 0x47, 0x48, 0x49, 0x49, 0x01, 0xba, +0x46, 0x9a, 0x4d, 0x29, 0x39, 0x26, 0x11, 0x07, +0x2a, 0x02, 0x02, 0x39, 0x3f, 0x51, 0xa2, 0x54, +0xbf, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x5c, +0x00, 0x00, 0x02, 0xb8, 0x01, 0xe0, 0x00, 0x08, +0x00, 0x1b, 0x00, 0x4f, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x15, 0x2f, 0x1b, 0xb9, +0x00, 0x15, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x14, 0x2f, 0x1b, +0xb9, 0x00, 0x14, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x12, 0x00, 0x02, 0x00, 0x17, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x07, 0x00, 0x01, 0x00, 0x1b, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x14, 0x10, 0xb8, +0x00, 0x10, 0xd0, 0xb9, 0x00, 0x00, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x15, 0x10, 0xb8, 0x00, 0x19, +0xd0, 0x30, 0x31, 0x25, 0x32, 0x36, 0x35, 0x34, +0x26, 0x2b, 0x01, 0x15, 0x37, 0x32, 0x16, 0x15, +0x14, 0x06, 0x2b, 0x01, 0x35, 0x23, 0x15, 0x23, +0x11, 0x33, 0x15, 0x33, 0x35, 0x33, 0x15, 0x01, +0xf8, 0x4b, 0x48, 0x48, 0x4b, 0x45, 0x4f, 0x55, +0x61, 0x61, 0x55, 0x7b, 0xff, 0x2c, 0x2c, 0xff, +0x2c, 0x26, 0x33, 0x39, 0x38, 0x31, 0xd5, 0xfb, +0x47, 0x48, 0x49, 0x49, 0xe8, 0xe8, 0x01, 0xe0, +0xd0, 0xd0, 0xbf, 0x00, 0xff, 0xff, 0x00, 0x0f, +0x00, 0x00, 0x01, 0xbf, 0x02, 0xcf, 0x02, 0x06, +0x01, 0x3c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xc6, 0x02, 0xf4, 0x02, 0x26, +0x03, 0xf0, 0x00, 0x00, 0x00, 0x07, 0x07, 0x24, +0x01, 0x0a, 0x00, 0x02, 0x00, 0x02, 0x00, 0x5c, +0xff, 0xf4, 0x01, 0xd5, 0x02, 0xf4, 0x00, 0x03, +0x00, 0x26, 0x00, 0x65, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x15, 0x2f, 0x1b, 0xb9, +0x00, 0x15, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x17, 0x2f, 0x1b, +0xb9, 0x00, 0x17, 0x00, 0x09, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, +0x1b, 0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x06, +0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x11, 0x00, 0x01, 0x00, 0x0a, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x15, 0x10, 0xb9, +0x00, 0x1b, 0x00, 0x02, 0xf4, 0xb8, 0x00, 0x06, +0x10, 0xb9, 0x00, 0x23, 0x00, 0x02, 0xf4, 0x30, +0x31, 0x13, 0x27, 0x37, 0x17, 0x13, 0x06, 0x23, +0x22, 0x26, 0x2f, 0x01, 0x23, 0x15, 0x23, 0x11, +0x33, 0x15, 0x33, 0x37, 0x3e, 0x01, 0x33, 0x32, +0x17, 0x07, 0x26, 0x22, 0x23, 0x22, 0x06, 0x0f, +0x01, 0x17, 0x1e, 0x01, 0x33, 0x3a, 0x01, 0x37, +0xed, 0x18, 0x86, 0x22, 0x58, 0x0a, 0x10, 0x1b, +0x2c, 0x17, 0x5d, 0x78, 0x2c, 0x2c, 0x77, 0x41, +0x14, 0x2e, 0x21, 0x0c, 0x0a, 0x0a, 0x05, 0x03, +0x06, 0x15, 0x1c, 0x0d, 0x41, 0x5e, 0x10, 0x1a, +0x11, 0x05, 0x07, 0x05, 0x02, 0x40, 0x17, 0x9d, +0x1d, 0xfd, 0x21, 0x04, 0x1a, 0x2c, 0xad, 0xe7, +0x01, 0xe0, 0xd2, 0x91, 0x2c, 0x21, 0x04, 0x2b, +0x02, 0x14, 0x1c, 0x95, 0xad, 0x1d, 0x0f, 0x02, +0x00, 0x02, 0x00, 0x5c, 0x00, 0x00, 0x01, 0xc6, +0x02, 0xf4, 0x00, 0x03, 0x00, 0x10, 0x00, 0x0d, +0x00, 0xbb, 0x00, 0x07, 0x00, 0x01, 0x00, 0x0d, +0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, 0x37, 0x17, +0x0f, 0x01, 0x33, 0x15, 0x33, 0x37, 0x33, 0x07, +0x17, 0x23, 0x27, 0x23, 0x15, 0x23, 0xd5, 0x86, +0x22, 0x90, 0x91, 0x2c, 0x74, 0x8e, 0x32, 0x9a, +0xa4, 0x32, 0x93, 0x79, 0x2c, 0x02, 0x57, 0x9d, +0x1d, 0x97, 0x60, 0xd2, 0xd2, 0xe2, 0xfe, 0xe7, +0xe7, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xce, 0x02, 0xf4, 0x02, 0x26, +0x03, 0xee, 0x00, 0x00, 0x00, 0x07, 0x07, 0x21, +0x01, 0x17, 0x00, 0x02, 0xff, 0xff, 0x00, 0x0c, +0xff, 0x25, 0x01, 0xa8, 0x02, 0xce, 0x02, 0x26, +0x00, 0x36, 0x00, 0x00, 0x00, 0x07, 0x07, 0x30, +0x00, 0xe5, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5c, +0xff, 0x54, 0x01, 0xc6, 0x01, 0xe0, 0x00, 0x0b, +0x00, 0x41, 0x00, 0x7d, 0xb8, 0x00, 0x03, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, 0x05, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0xd0, 0xb8, +0x00, 0x05, 0x10, 0xb9, 0x00, 0x08, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x06, 0x10, 0xb8, 0x00, 0x0a, +0xd0, 0x30, 0x31, 0x21, 0x23, 0x07, 0x23, 0x27, +0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x01, +0xc6, 0x9d, 0x05, 0x25, 0x02, 0xa1, 0x2c, 0x01, +0x12, 0x2c, 0xac, 0xac, 0x01, 0xe0, 0xfe, 0x47, +0x01, 0xb9, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1a, +0x00, 0x00, 0x02, 0x05, 0x02, 0x6b, 0x00, 0x12, +0x00, 0x1b, 0x00, 0x42, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x12, 0x2f, 0x1b, 0xb9, +0x00, 0x12, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, +0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x2b, +0xbb, 0x00, 0x1a, 0x00, 0x01, 0x00, 0x0a, 0x00, +0x04, 0x2b, 0xb8, 0x00, 0x02, 0x10, 0xb8, 0x00, +0x07, 0xd0, 0xb8, 0x00, 0x01, 0x10, 0xb8, 0x00, +0x08, 0xd0, 0xb8, 0x00, 0x12, 0x10, 0xb9, 0x00, +0x13, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, 0x23, +0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, +0x15, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x2b, +0x01, 0x37, 0x32, 0x36, 0x35, 0x34, 0x26, 0x2b, +0x01, 0x15, 0xbf, 0xa5, 0xa5, 0x2c, 0xc8, 0xc8, +0x63, 0x55, 0x62, 0x62, 0x55, 0x8f, 0x86, 0x4b, +0x47, 0x47, 0x4b, 0x5a, 0x01, 0xbf, 0x27, 0x85, +0x85, 0x27, 0x9e, 0x47, 0x48, 0x49, 0x49, 0x26, +0x33, 0x39, 0x38, 0x31, 0xd5, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xe3, +0x01, 0xec, 0x02, 0x06, 0x01, 0xe6, 0x00, 0x00, +0x00, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x01, 0xd2, +0x01, 0xec, 0x00, 0x18, 0x00, 0x45, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, 0x2f, +0x1b, 0xb9, 0x00, 0x0d, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x18, +0x2f, 0x1b, 0xb9, 0x00, 0x18, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x0d, 0x10, 0xb8, 0x00, 0x00, +0xd0, 0xb8, 0x00, 0x00, 0x2f, 0xba, 0x00, 0x05, +0x00, 0x0d, 0x00, 0x18, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x0d, 0x10, 0xb9, 0x00, 0x13, 0x00, 0x02, +0xf4, 0x30, 0x31, 0x13, 0x33, 0x13, 0x1e, 0x01, +0x17, 0x33, 0x3e, 0x01, 0x3f, 0x01, 0x3e, 0x01, +0x33, 0x32, 0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, +0x06, 0x07, 0x03, 0x23, 0x0c, 0x30, 0x6c, 0x0b, +0x1c, 0x0b, 0x04, 0x0b, 0x15, 0x0b, 0x40, 0x13, +0x2b, 0x28, 0x12, 0x11, 0x0c, 0x05, 0x0a, 0x08, +0x15, 0x1a, 0x0e, 0x79, 0x39, 0x01, 0xe0, 0xfe, +0xd3, 0x23, 0x46, 0x21, 0x21, 0x46, 0x23, 0xc2, +0x3d, 0x3a, 0x08, 0x2b, 0x02, 0x04, 0x26, 0x2a, +0xfe, 0x91, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5c, +0x00, 0x00, 0x01, 0x84, 0x02, 0x8c, 0x00, 0x07, +0x00, 0x2f, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, 0x05, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, +0x03, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x05, +0x10, 0xb9, 0x00, 0x01, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x01, 0x07, 0x23, 0x11, 0x23, 0x11, 0x33, +0x37, 0x01, 0x84, 0x08, 0xf4, 0x2c, 0xf7, 0x0d, +0x02, 0x8c, 0xd2, 0xfe, 0x46, 0x01, 0xe0, 0xac, +0x00, 0x01, 0x00, 0x21, 0x00, 0x00, 0x01, 0x7c, +0x01, 0xe0, 0x00, 0x0d, 0x00, 0x49, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, 0x2f, +0x1b, 0xb9, 0x00, 0x0b, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x06, +0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x07, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x0a, 0x10, 0xb8, +0x00, 0x02, 0xd0, 0xb8, 0x00, 0x07, 0x10, 0xb8, +0x00, 0x03, 0xd0, 0xb8, 0x00, 0x0b, 0x10, 0xb9, +0x00, 0x0d, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, +0x15, 0x33, 0x15, 0x23, 0x15, 0x23, 0x35, 0x23, +0x35, 0x37, 0x35, 0x21, 0x15, 0x8f, 0x8d, 0x8d, +0x2c, 0x42, 0x42, 0x01, 0x19, 0x01, 0xba, 0xb9, +0x21, 0xe0, 0xe0, 0x1d, 0x04, 0xdf, 0x26, 0x00, +0x00, 0x01, 0x00, 0x11, 0xff, 0x54, 0x02, 0x84, +0x01, 0xec, 0x00, 0x34, 0x00, 0x91, 0x00, 0x7d, +0xb8, 0x00, 0x03, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x1a, 0x2f, 0x1b, 0xb9, +0x00, 0x1a, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, 0x2f, 0x1b, +0xb9, 0x00, 0x0d, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x1e, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x0d, 0x10, 0xb8, 0x00, 0x09, +0xd0, 0xb8, 0x00, 0x05, 0xd0, 0xb9, 0x00, 0x00, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0b, 0x10, 0xb8, +0x00, 0x06, 0xd0, 0xba, 0x00, 0x0e, 0x00, 0x1e, +0x00, 0x0b, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x1a, +0x10, 0xb9, 0x00, 0x14, 0x00, 0x02, 0xf4, 0xb8, +0x00, 0x1a, 0x10, 0xb8, 0x00, 0x20, 0xd0, 0xb8, +0x00, 0x20, 0x2f, 0xb8, 0x00, 0x1e, 0x10, 0xb8, +0x00, 0x23, 0xd0, 0xb8, 0x00, 0x1a, 0x10, 0xb8, +0x00, 0x27, 0xd0, 0xb8, 0x00, 0x14, 0x10, 0xb8, +0x00, 0x2d, 0xd0, 0xba, 0x00, 0x33, 0x00, 0x06, +0x00, 0x23, 0x11, 0x12, 0x39, 0x30, 0x31, 0x25, +0x15, 0x07, 0x23, 0x35, 0x23, 0x27, 0x23, 0x15, +0x23, 0x35, 0x23, 0x07, 0x23, 0x13, 0x27, 0x2e, +0x03, 0x23, 0x2a, 0x01, 0x07, 0x27, 0x36, 0x33, +0x32, 0x16, 0x1f, 0x01, 0x33, 0x35, 0x33, 0x15, +0x33, 0x37, 0x3e, 0x01, 0x33, 0x32, 0x17, 0x07, +0x26, 0x22, 0x23, 0x22, 0x0e, 0x02, 0x0f, 0x01, +0x17, 0x02, 0x84, 0x05, 0x26, 0x21, 0x84, 0x63, +0x28, 0x63, 0x84, 0x31, 0x96, 0x2d, 0x0a, 0x12, +0x12, 0x13, 0x09, 0x05, 0x05, 0x05, 0x0a, 0x0a, +0x0d, 0x1f, 0x36, 0x19, 0x2f, 0x5e, 0x28, 0x5d, +0x30, 0x18, 0x36, 0x20, 0x0c, 0x0a, 0x09, 0x05, +0x05, 0x05, 0x0a, 0x12, 0x12, 0x12, 0x0a, 0x2d, +0x7f, 0x27, 0x1a, 0xb9, 0xac, 0xe7, 0xe7, 0xe7, +0xe7, 0x01, 0x01, 0x72, 0x18, 0x1e, 0x11, 0x05, +0x02, 0x2b, 0x04, 0x2b, 0x3d, 0x76, 0xd2, 0xd2, +0x76, 0x3d, 0x2b, 0x04, 0x2b, 0x02, 0x05, 0x11, +0x1e, 0x18, 0x73, 0xd9, 0x00, 0x01, 0xff, 0xfa, +0xff, 0x54, 0x02, 0x84, 0x01, 0xec, 0x00, 0x4a, +0x00, 0xb8, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x27, 0x2f, 0x1b, 0xb9, 0x00, 0x27, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x29, 0x2f, 0x1b, 0xb9, 0x00, +0x29, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x3a, 0x2f, 0x1b, 0xb9, +0x00, 0x3a, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x3c, 0x2f, 0x1b, +0xb9, 0x00, 0x3c, 0x00, 0x09, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, +0x1b, 0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x13, +0x2f, 0x1b, 0xb9, 0x00, 0x13, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x15, 0x2f, 0x1b, 0xb9, 0x00, 0x15, 0x00, 0x05, +0x3e, 0x59, 0xbb, 0x00, 0x34, 0x00, 0x01, 0x00, +0x08, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x04, 0x10, +0xb9, 0x00, 0x00, 0x00, 0x02, 0xf4, 0xb8, 0x00, +0x08, 0x10, 0xb8, 0x00, 0x0c, 0xd0, 0xb8, 0x00, +0x00, 0x10, 0xb8, 0x00, 0x19, 0xd0, 0xb8, 0x00, +0x29, 0x10, 0xb9, 0x00, 0x23, 0x00, 0x02, 0xf4, +0xb8, 0x00, 0x34, 0x10, 0xb8, 0x00, 0x2f, 0xd0, +0xb8, 0x00, 0x23, 0x10, 0xb8, 0x00, 0x40, 0xd0, +0x30, 0x31, 0x25, 0x15, 0x07, 0x23, 0x35, 0x2e, +0x01, 0x2f, 0x01, 0x23, 0x15, 0x23, 0x35, 0x23, +0x07, 0x0e, 0x03, 0x23, 0x22, 0x27, 0x37, 0x16, +0x32, 0x33, 0x32, 0x36, 0x3f, 0x01, 0x27, 0x2e, +0x03, 0x23, 0x2a, 0x01, 0x07, 0x27, 0x36, 0x33, +0x32, 0x1e, 0x02, 0x1f, 0x01, 0x33, 0x35, 0x33, +0x15, 0x33, 0x37, 0x3e, 0x03, 0x33, 0x32, 0x17, +0x07, 0x26, 0x22, 0x23, 0x22, 0x0e, 0x02, 0x0f, +0x01, 0x17, 0x1e, 0x01, 0x17, 0x02, 0x84, 0x05, +0x26, 0x18, 0x2e, 0x1d, 0x4a, 0x5b, 0x28, 0x5b, +0x4a, 0x11, 0x1d, 0x1c, 0x1b, 0x0e, 0x0d, 0x0a, +0x0a, 0x05, 0x05, 0x05, 0x10, 0x23, 0x1a, 0x4c, +0x32, 0x0b, 0x12, 0x12, 0x12, 0x0a, 0x05, 0x04, +0x05, 0x0a, 0x0a, 0x0c, 0x10, 0x1c, 0x1b, 0x1a, +0x0e, 0x32, 0x5b, 0x28, 0x5b, 0x32, 0x0d, 0x1a, +0x1b, 0x1c, 0x10, 0x0d, 0x0a, 0x0a, 0x05, 0x05, +0x05, 0x0a, 0x11, 0x12, 0x13, 0x0a, 0x33, 0x4d, +0x11, 0x1a, 0x0b, 0x27, 0x1a, 0xb9, 0xa1, 0x05, +0x2c, 0x36, 0x8b, 0xe7, 0xe7, 0x8b, 0x20, 0x28, +0x17, 0x09, 0x04, 0x2b, 0x02, 0x1c, 0x30, 0x8e, +0x78, 0x19, 0x1e, 0x10, 0x05, 0x02, 0x2b, 0x04, +0x08, 0x17, 0x29, 0x20, 0x76, 0xd2, 0xd2, 0x76, +0x20, 0x29, 0x17, 0x08, 0x04, 0x2b, 0x02, 0x05, +0x10, 0x1e, 0x19, 0x78, 0x8e, 0x20, 0x1f, 0x07, +0x00, 0x01, 0x00, 0x12, 0xff, 0x54, 0x02, 0x84, +0x01, 0xe0, 0x00, 0x1a, 0x00, 0x5a, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, +0x1b, 0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, +0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0c, 0x2f, 0x1b, 0xb9, 0x00, 0x0c, 0x00, 0x05, +0x3e, 0x59, 0xbb, 0x00, 0x16, 0x00, 0x01, 0x00, +0x06, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x04, 0x10, +0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, 0x00, +0x06, 0x10, 0xb8, 0x00, 0x0a, 0xd0, 0xb8, 0x00, +0x16, 0x10, 0xb8, 0x00, 0x11, 0xd0, 0x30, 0x31, +0x25, 0x15, 0x07, 0x23, 0x35, 0x23, 0x27, 0x23, +0x15, 0x23, 0x35, 0x23, 0x07, 0x23, 0x37, 0x27, +0x33, 0x17, 0x33, 0x35, 0x33, 0x15, 0x33, 0x37, +0x33, 0x07, 0x17, 0x02, 0x84, 0x05, 0x26, 0x21, +0x93, 0x52, 0x2b, 0x52, 0x92, 0x32, 0xa3, 0x99, +0x32, 0x8d, 0x4d, 0x2b, 0x4e, 0x8c, 0x33, 0x9a, +0x8b, 0x27, 0x1a, 0xb9, 0xac, 0xe7, 0xe7, 0xe7, +0xe7, 0xfe, 0xe2, 0xd2, 0xd2, 0xd2, 0xd2, 0xe2, +0xd7, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2a, +0xff, 0x54, 0x01, 0x92, 0x01, 0xec, 0x00, 0x34, +0x00, 0x51, 0x00, 0x7d, 0xb8, 0x00, 0x0c, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x2c, 0x2f, 0x1b, 0xb9, 0x00, 0x2c, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0d, 0x2f, 0x1b, 0xb9, 0x00, 0x0d, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x1f, 0x00, 0x01, +0x00, 0x1c, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x0d, +0x10, 0xb8, 0x00, 0x0a, 0xd0, 0xb8, 0x00, 0x0d, +0x10, 0xb9, 0x00, 0x14, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x2c, 0x10, 0xb9, 0x00, 0x25, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x25, 0x1e, 0x03, 0x15, 0x14, +0x0e, 0x02, 0x0f, 0x01, 0x23, 0x27, 0x2e, 0x01, +0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x3e, 0x02, +0x35, 0x34, 0x26, 0x2b, 0x01, 0x35, 0x33, 0x32, +0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, +0x27, 0x3e, 0x01, 0x33, 0x32, 0x1e, 0x02, 0x15, +0x14, 0x06, 0x07, 0x01, 0x2a, 0x15, 0x25, 0x1d, +0x11, 0x19, 0x2c, 0x3b, 0x22, 0x05, 0x24, 0x02, +0x2b, 0x4d, 0x23, 0x17, 0x23, 0x4b, 0x2b, 0x1c, +0x32, 0x26, 0x16, 0x50, 0x48, 0x3c, 0x2f, 0x48, +0x48, 0x43, 0x31, 0x30, 0x3f, 0x1e, 0x17, 0x20, +0x4e, 0x37, 0x21, 0x3a, 0x2b, 0x1a, 0x2d, 0x25, +0xfd, 0x05, 0x14, 0x1e, 0x29, 0x1b, 0x1e, 0x31, +0x25, 0x16, 0x03, 0xa1, 0xa1, 0x02, 0x1d, 0x1f, +0x1f, 0x20, 0x18, 0x0f, 0x1b, 0x28, 0x18, 0x33, +0x33, 0x24, 0x33, 0x2b, 0x2f, 0x2b, 0x1a, 0x16, +0x1f, 0x17, 0x20, 0x10, 0x1f, 0x2e, 0x1f, 0x27, +0x38, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5c, +0xff, 0x54, 0x01, 0xe1, 0x01, 0xec, 0x00, 0x20, +0x00, 0x65, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, 0x00, 0x13, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x15, 0x2f, 0x1b, 0xb9, 0x00, +0x15, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, 0x1b, 0xb9, +0x00, 0x04, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, 0x1b, +0xb9, 0x00, 0x08, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x0d, 0x00, 0x01, 0x00, 0x06, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x04, 0x10, 0xb9, 0x00, 0x00, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x13, 0x10, 0xb9, +0x00, 0x19, 0x00, 0x02, 0xf4, 0x30, 0x31, 0x25, +0x15, 0x07, 0x23, 0x35, 0x23, 0x27, 0x23, 0x15, +0x23, 0x11, 0x33, 0x15, 0x33, 0x37, 0x3e, 0x03, +0x33, 0x32, 0x17, 0x07, 0x26, 0x22, 0x23, 0x22, +0x0e, 0x02, 0x0f, 0x01, 0x17, 0x01, 0xe1, 0x05, +0x26, 0x22, 0x93, 0x79, 0x2c, 0x2c, 0x78, 0x32, +0x0d, 0x1a, 0x1b, 0x1c, 0x10, 0x0d, 0x0a, 0x0a, +0x05, 0x05, 0x05, 0x09, 0x12, 0x12, 0x13, 0x0a, +0x32, 0x8b, 0x27, 0x1a, 0xb9, 0xac, 0xe7, 0xe7, +0x01, 0xe0, 0xd2, 0x76, 0x20, 0x29, 0x17, 0x08, +0x04, 0x2b, 0x02, 0x05, 0x10, 0x1e, 0x19, 0x76, +0xd6, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5c, +0xff, 0x54, 0x01, 0xe1, 0x01, 0xec, 0x00, 0x21, +0x00, 0x54, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, 0x00, 0x13, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x15, 0x2f, 0x1b, 0xb9, 0x00, +0x15, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, 0x1b, 0xb9, +0x00, 0x04, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, +0x0f, 0x00, 0x01, 0x00, 0x08, 0x00, 0x04, 0x2b, +0xb8, 0x00, 0x04, 0x10, 0xb9, 0x00, 0x00, 0x00, +0x02, 0xf4, 0xb8, 0x00, 0x13, 0x10, 0xb9, 0x00, +0x19, 0x00, 0x02, 0xf4, 0x30, 0x31, 0x25, 0x15, +0x07, 0x23, 0x35, 0x2e, 0x01, 0x2f, 0x01, 0x23, +0x15, 0x23, 0x11, 0x33, 0x15, 0x33, 0x37, 0x3e, +0x01, 0x33, 0x32, 0x17, 0x07, 0x26, 0x22, 0x23, +0x22, 0x06, 0x0f, 0x01, 0x17, 0x1e, 0x01, 0x17, +0x01, 0xe1, 0x05, 0x26, 0x1a, 0x28, 0x17, 0x5d, +0x78, 0x2c, 0x2c, 0x77, 0x41, 0x14, 0x2e, 0x21, +0x0c, 0x0a, 0x0a, 0x05, 0x03, 0x06, 0x15, 0x1c, +0x0d, 0x41, 0x5e, 0x09, 0x0f, 0x08, 0x27, 0x1a, +0xb9, 0xa0, 0x01, 0x1b, 0x2a, 0xad, 0xe7, 0x01, +0xe0, 0xd2, 0x91, 0x2c, 0x21, 0x04, 0x2b, 0x02, +0x14, 0x1c, 0x95, 0xad, 0x10, 0x11, 0x05, 0x00, +0x00, 0x01, 0x00, 0x5c, 0xff, 0x54, 0x01, 0xe1, +0x01, 0xe0, 0x00, 0x11, 0x00, 0x39, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, +0x1b, 0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, +0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x06, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x04, 0x10, 0xb9, +0x00, 0x00, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x25, +0x15, 0x07, 0x23, 0x35, 0x23, 0x27, 0x23, 0x15, +0x23, 0x11, 0x33, 0x15, 0x33, 0x37, 0x33, 0x07, +0x17, 0x01, 0xe1, 0x05, 0x26, 0x22, 0x93, 0x79, +0x2c, 0x2c, 0x74, 0x8e, 0x32, 0x9a, 0x8b, 0x27, +0x1a, 0xb9, 0xac, 0xe7, 0xe7, 0x01, 0xe0, 0xd2, +0xd2, 0xe2, 0xd7, 0x00, 0x00, 0x01, 0x00, 0x1a, +0x00, 0x00, 0x02, 0x3d, 0x01, 0xec, 0x00, 0x1d, +0x00, 0x5d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x08, 0x2f, 0x1b, 0xb9, 0x00, 0x08, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, +0x05, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x0a, +0x00, 0x01, 0x00, 0x03, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x05, 0x10, 0xb8, 0x00, 0x01, 0xd0, 0xb8, +0x00, 0x08, 0x10, 0xb9, 0x00, 0x06, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x08, 0x10, 0xb8, 0x00, 0x11, +0xd0, 0xb8, 0x00, 0x11, 0x2f, 0xb9, 0x00, 0x17, +0x00, 0x02, 0xf4, 0xba, 0x00, 0x1d, 0x00, 0x0a, +0x00, 0x03, 0x11, 0x12, 0x39, 0x30, 0x31, 0x21, +0x23, 0x27, 0x23, 0x15, 0x23, 0x11, 0x23, 0x35, +0x33, 0x15, 0x33, 0x37, 0x3e, 0x03, 0x33, 0x32, +0x17, 0x07, 0x26, 0x22, 0x23, 0x22, 0x0e, 0x02, +0x0f, 0x01, 0x02, 0x3d, 0x32, 0x93, 0x79, 0x2c, +0xb9, 0xe5, 0x78, 0x32, 0x0d, 0x1a, 0x1b, 0x1c, +0x10, 0x0d, 0x0a, 0x0a, 0x05, 0x05, 0x05, 0x0a, +0x11, 0x12, 0x13, 0x0a, 0x32, 0xe7, 0xe7, 0x01, +0xba, 0x26, 0xd2, 0x76, 0x20, 0x29, 0x17, 0x08, +0x04, 0x2b, 0x02, 0x05, 0x10, 0x1e, 0x19, 0x76, +0x00, 0x01, 0x00, 0x1a, 0xff, 0xf4, 0x02, 0x4c, +0x01, 0xec, 0x00, 0x24, 0x00, 0x73, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x13, 0x2f, +0x1b, 0xb9, 0x00, 0x13, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x15, +0x2f, 0x1b, 0xb9, 0x00, 0x15, 0x00, 0x09, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x02, 0x2f, 0x1b, 0xb9, 0x00, 0x02, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x0f, 0x00, 0x01, +0x00, 0x06, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x13, +0x10, 0xb9, 0x00, 0x0a, 0x00, 0x02, 0xf4, 0xb9, +0x00, 0x0d, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0a, +0x10, 0xb8, 0x00, 0x19, 0xd0, 0xb8, 0x00, 0x02, +0x10, 0xb9, 0x00, 0x21, 0x00, 0x02, 0xf4, 0x30, +0x31, 0x05, 0x06, 0x23, 0x22, 0x26, 0x2f, 0x01, +0x23, 0x15, 0x23, 0x11, 0x23, 0x35, 0x33, 0x15, +0x33, 0x37, 0x3e, 0x01, 0x33, 0x32, 0x17, 0x07, +0x26, 0x22, 0x23, 0x22, 0x06, 0x0f, 0x01, 0x17, +0x1e, 0x01, 0x33, 0x3a, 0x01, 0x37, 0x02, 0x4c, +0x0a, 0x10, 0x1b, 0x2c, 0x17, 0x5d, 0x78, 0x2c, +0xb9, 0xe5, 0x77, 0x41, 0x14, 0x2e, 0x21, 0x0c, +0x0a, 0x0a, 0x05, 0x03, 0x06, 0x15, 0x1c, 0x0d, +0x41, 0x5e, 0x10, 0x1a, 0x11, 0x05, 0x07, 0x05, +0x08, 0x04, 0x1a, 0x2c, 0xad, 0xe7, 0x01, 0xba, +0x26, 0xd2, 0x91, 0x2c, 0x21, 0x04, 0x2b, 0x02, +0x14, 0x1c, 0x95, 0xad, 0x1d, 0x0f, 0x02, 0x00, +0x00, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x02, 0x3d, +0x01, 0xe0, 0x00, 0x0e, 0x00, 0x1f, 0x00, 0xbb, +0x00, 0x09, 0x00, 0x01, 0x00, 0x06, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x02, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x09, 0x10, 0xb8, +0x00, 0x0c, 0xd0, 0x30, 0x31, 0x21, 0x23, 0x27, +0x23, 0x15, 0x23, 0x11, 0x23, 0x35, 0x33, 0x15, +0x33, 0x37, 0x33, 0x07, 0x02, 0x3d, 0x32, 0x93, +0x79, 0x2c, 0xb9, 0xe5, 0x74, 0x8e, 0x32, 0x9a, +0xe7, 0xe7, 0x01, 0xba, 0x26, 0xd2, 0xd2, 0xe2, +0x00, 0x01, 0x00, 0x5c, 0xff, 0x54, 0x02, 0x0c, +0x01, 0xe0, 0x00, 0x10, 0x00, 0x4b, 0x00, 0x7d, +0xb8, 0x00, 0x03, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0a, 0x2f, 0x1b, 0xb9, +0x00, 0x0a, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x09, 0x2f, 0x1b, +0xb9, 0x00, 0x09, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x0c, 0x00, 0x02, 0x00, 0x07, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x09, 0x10, 0xb8, 0x00, 0x05, +0xd0, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x0a, 0x10, 0xb8, 0x00, 0x0e, 0xd0, 0x30, +0x31, 0x25, 0x15, 0x07, 0x23, 0x35, 0x23, 0x35, +0x21, 0x15, 0x23, 0x11, 0x33, 0x15, 0x21, 0x35, +0x33, 0x11, 0x02, 0x0c, 0x05, 0x26, 0x43, 0xfe, +0xea, 0x2c, 0x2c, 0x01, 0x16, 0x2c, 0x27, 0x1a, +0xb9, 0xac, 0xe8, 0xe8, 0x01, 0xe0, 0xd0, 0xd0, +0xfe, 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, 0x34, +0xff, 0x54, 0x01, 0xa7, 0x01, 0xec, 0x00, 0x24, +0x00, 0x43, 0x00, 0x7d, 0xb8, 0x00, 0x05, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x10, 0x2f, 0x1b, 0xb9, 0x00, 0x10, 0x00, 0x09, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x03, 0xd0, 0xb8, +0x00, 0x10, 0x10, 0xb9, 0x00, 0x17, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x06, 0x10, 0xb9, 0x00, 0x21, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x25, 0x0e, 0x01, +0x0f, 0x01, 0x23, 0x27, 0x2e, 0x03, 0x35, 0x34, +0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, +0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, +0x02, 0x33, 0x32, 0x36, 0x37, 0x01, 0xa7, 0x1c, +0x43, 0x28, 0x05, 0x24, 0x02, 0x2a, 0x46, 0x34, +0x1d, 0x24, 0x3c, 0x4f, 0x2c, 0x32, 0x42, 0x19, +0x1a, 0x17, 0x38, 0x23, 0x25, 0x3f, 0x2f, 0x1b, +0x19, 0x2d, 0x41, 0x27, 0x26, 0x41, 0x19, 0x33, +0x18, 0x22, 0x04, 0xa1, 0xa1, 0x04, 0x26, 0x40, +0x58, 0x38, 0x3c, 0x5f, 0x40, 0x22, 0x24, 0x17, +0x1f, 0x16, 0x1d, 0x1f, 0x39, 0x4e, 0x30, 0x2f, +0x4e, 0x38, 0x1f, 0x20, 0x17, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x0c, 0xff, 0x27, 0x01, 0xa6, +0x01, 0xe0, 0x00, 0x0f, 0x00, 0x50, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x01, 0x2f, +0x1b, 0xb9, 0x00, 0x01, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, 0x00, 0x07, +0x3e, 0x59, 0xba, 0x00, 0x06, 0x00, 0x01, 0x00, +0x0f, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x01, 0x10, +0xb8, 0x00, 0x0b, 0xd0, 0xb8, 0x00, 0x00, 0x10, +0xb8, 0x00, 0x0d, 0xd0, 0x30, 0x31, 0x33, 0x03, +0x33, 0x13, 0x1e, 0x01, 0x17, 0x33, 0x3e, 0x01, +0x37, 0x13, 0x33, 0x03, 0x15, 0x23, 0xc5, 0xb9, +0x30, 0x6c, 0x0b, 0x1a, 0x0b, 0x04, 0x0c, 0x1a, +0x0b, 0x6c, 0x2d, 0xb5, 0x2c, 0x01, 0xe0, 0xfe, +0xdc, 0x23, 0x46, 0x20, 0x20, 0x46, 0x23, 0x01, +0x24, 0xfe, 0x20, 0xd9, 0x00, 0x01, 0x00, 0x0c, +0xff, 0x27, 0x01, 0xa6, 0x01, 0xe0, 0x00, 0x16, +0x00, 0x58, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, +0x05, 0x00, 0x07, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x07, 0x2f, 0x1b, 0xb9, +0x00, 0x07, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, +0x0a, 0xd0, 0xb8, 0x00, 0x01, 0xd0, 0xb8, 0x00, +0x07, 0x10, 0xb8, 0x00, 0x02, 0xd0, 0xba, 0x00, +0x10, 0x00, 0x0b, 0x00, 0x05, 0x11, 0x12, 0x39, +0xb8, 0x00, 0x0b, 0x10, 0xb8, 0x00, 0x15, 0xd0, +0x30, 0x31, 0x37, 0x33, 0x15, 0x23, 0x15, 0x23, +0x35, 0x23, 0x35, 0x37, 0x33, 0x03, 0x33, 0x13, +0x1e, 0x01, 0x17, 0x33, 0x3e, 0x01, 0x37, 0x13, +0x33, 0xfd, 0x87, 0x93, 0x2c, 0x97, 0x4e, 0x3c, +0xac, 0x30, 0x6c, 0x0b, 0x1a, 0x0b, 0x04, 0x0c, +0x1a, 0x0b, 0x6c, 0x2d, 0x21, 0x21, 0xd9, 0xd9, +0x1d, 0x04, 0x01, 0xbf, 0xfe, 0xdc, 0x23, 0x46, +0x20, 0x20, 0x46, 0x23, 0x01, 0x24, 0x00, 0x00, +0x00, 0x01, 0x00, 0x0e, 0xff, 0x54, 0x01, 0xa2, +0x01, 0xe0, 0x00, 0x1e, 0x00, 0x65, 0x00, 0x7d, +0xb8, 0x00, 0x03, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x11, 0x2f, 0x1b, 0xb9, +0x00, 0x11, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0f, 0x2f, 0x1b, +0xb9, 0x00, 0x0f, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x05, 0xd0, 0xb9, 0x00, 0x00, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x11, 0x10, 0xb8, 0x00, 0x1b, +0xd0, 0xba, 0x00, 0x09, 0x00, 0x05, 0x00, 0x1b, +0x11, 0x12, 0x39, 0xba, 0x00, 0x16, 0x00, 0x11, +0x00, 0x0f, 0x11, 0x12, 0x39, 0xba, 0x00, 0x10, +0x00, 0x16, 0x00, 0x09, 0x11, 0x12, 0x39, 0xba, +0x00, 0x1d, 0x00, 0x09, 0x00, 0x16, 0x11, 0x12, +0x39, 0x30, 0x31, 0x25, 0x15, 0x07, 0x23, 0x35, +0x23, 0x27, 0x2e, 0x01, 0x27, 0x23, 0x0e, 0x01, +0x0f, 0x01, 0x23, 0x37, 0x27, 0x33, 0x17, 0x1e, +0x01, 0x17, 0x33, 0x3e, 0x01, 0x3f, 0x01, 0x33, +0x07, 0x17, 0x01, 0xa2, 0x05, 0x26, 0x1f, 0x55, +0x0e, 0x1c, 0x0f, 0x04, 0x0e, 0x1b, 0x0e, 0x52, +0x2f, 0xa3, 0x96, 0x31, 0x4e, 0x0c, 0x19, 0x0e, +0x04, 0x0d, 0x17, 0x0d, 0x4b, 0x2e, 0x95, 0x89, +0x27, 0x1a, 0xb9, 0xac, 0x83, 0x17, 0x2c, 0x15, +0x15, 0x2c, 0x17, 0x83, 0xfb, 0xe5, 0x7a, 0x14, +0x27, 0x14, 0x14, 0x27, 0x14, 0x7a, 0xe9, 0xd0, +0x00, 0x01, 0x00, 0x42, 0xff, 0x54, 0x01, 0xd0, +0x01, 0xe0, 0x00, 0x1a, 0x00, 0x45, 0x00, 0xb8, +0x00, 0x03, 0x2f, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, +0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, +0x05, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x14, +0x00, 0x01, 0x00, 0x0b, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x05, 0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0f, 0x10, 0xb8, 0x00, 0x19, +0xd0, 0x30, 0x31, 0x25, 0x15, 0x07, 0x23, 0x35, +0x23, 0x35, 0x0e, 0x03, 0x23, 0x22, 0x26, 0x3d, +0x01, 0x33, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, +0x37, 0x35, 0x33, 0x11, 0x01, 0xd0, 0x05, 0x26, +0x43, 0x0f, 0x16, 0x16, 0x18, 0x11, 0x5e, 0x5e, +0x2c, 0x49, 0x4e, 0x1a, 0x29, 0x1a, 0x2c, 0x27, +0x1a, 0xb9, 0xac, 0xd1, 0x03, 0x05, 0x03, 0x01, +0x48, 0x54, 0x7f, 0x7f, 0x3f, 0x36, 0x05, 0x06, +0xe9, 0xfe, 0x47, 0x00, 0xff, 0xff, 0x00, 0x5c, +0x00, 0x00, 0x01, 0xbf, 0x02, 0xcf, 0x02, 0x06, +0x00, 0x25, 0x00, 0x00, 0xff, 0xff, 0x00, 0x11, +0x00, 0x00, 0x02, 0x69, 0x02, 0xce, 0x02, 0x26, +0x03, 0xea, 0x00, 0x00, 0x00, 0x07, 0x07, 0x30, +0x01, 0x3e, 0x00, 0x00, 0x00, 0x02, 0xff, 0xfa, +0xff, 0xf4, 0x02, 0x7f, 0x02, 0xce, 0x00, 0x15, +0x00, 0x65, 0x00, 0xd3, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x3d, 0x2f, 0x1b, 0xb9, +0x00, 0x3d, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x3f, 0x2f, 0x1b, +0xb9, 0x00, 0x3f, 0x00, 0x09, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x50, 0x2f, +0x1b, 0xb9, 0x00, 0x50, 0x00, 0x09, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x52, +0x2f, 0x1b, 0xb9, 0x00, 0x52, 0x00, 0x09, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x16, 0x2f, 0x1b, 0xb9, 0x00, 0x16, 0x00, 0x05, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x18, 0x2f, 0x1b, 0xb9, 0x00, 0x18, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x29, 0x2f, 0x1b, 0xb9, 0x00, 0x29, +0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x2b, 0x2f, 0x1b, 0xb9, 0x00, +0x2b, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x10, +0x00, 0x01, 0x00, 0x05, 0x00, 0x04, 0x2b, 0xbb, +0x00, 0x4a, 0x00, 0x01, 0x00, 0x1e, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x1e, 0x10, 0xb8, 0x00, 0x22, +0xd0, 0xb8, 0x00, 0x29, 0x10, 0xb9, 0x00, 0x2f, +0x00, 0x02, 0xf4, 0xb8, 0x00, 0x3f, 0x10, 0xb9, +0x00, 0x39, 0x00, 0x02, 0xf4, 0xb8, 0x00, 0x4a, +0x10, 0xb8, 0x00, 0x45, 0xd0, 0xb8, 0x00, 0x39, +0x10, 0xb8, 0x00, 0x56, 0xd0, 0xb8, 0x00, 0x2f, +0x10, 0xb8, 0x00, 0x62, 0xd0, 0x30, 0x31, 0x01, +0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x33, +0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x13, +0x06, 0x23, 0x22, 0x2e, 0x02, 0x2f, 0x01, 0x23, +0x15, 0x23, 0x35, 0x23, 0x07, 0x0e, 0x03, 0x23, +0x22, 0x27, 0x37, 0x16, 0x32, 0x33, 0x32, 0x36, +0x3f, 0x01, 0x27, 0x2e, 0x03, 0x23, 0x2a, 0x01, +0x07, 0x27, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x1f, +0x01, 0x33, 0x35, 0x33, 0x15, 0x33, 0x37, 0x3e, +0x03, 0x33, 0x32, 0x17, 0x07, 0x26, 0x22, 0x23, +0x22, 0x0e, 0x02, 0x0f, 0x01, 0x17, 0x1e, 0x03, +0x33, 0x3a, 0x01, 0x37, 0x01, 0xd1, 0x02, 0x0f, +0x21, 0x37, 0x2a, 0x2a, 0x37, 0x21, 0x10, 0x01, +0x28, 0x01, 0x0b, 0x19, 0x28, 0x1e, 0x1e, 0x28, +0x19, 0x0b, 0x01, 0xd6, 0x0a, 0x0c, 0x0f, 0x1b, +0x1b, 0x1e, 0x10, 0x4a, 0x5b, 0x28, 0x5b, 0x4a, +0x11, 0x1d, 0x1c, 0x1b, 0x0e, 0x0d, 0x0a, 0x0a, +0x05, 0x05, 0x05, 0x10, 0x23, 0x1a, 0x4c, 0x32, +0x0b, 0x12, 0x12, 0x12, 0x0a, 0x05, 0x04, 0x05, +0x0a, 0x0a, 0x0c, 0x10, 0x1c, 0x1b, 0x1a, 0x0e, +0x32, 0x5b, 0x28, 0x5b, 0x32, 0x0d, 0x1a, 0x1b, +0x1c, 0x10, 0x0d, 0x0a, 0x0a, 0x05, 0x05, 0x05, +0x0a, 0x11, 0x12, 0x13, 0x0a, 0x33, 0x4d, 0x0d, +0x15, 0x12, 0x11, 0x08, 0x05, 0x04, 0x05, 0x02, +0xce, 0x18, 0x34, 0x2a, 0x1c, 0x1c, 0x2a, 0x34, +0x18, 0x15, 0x2a, 0x20, 0x14, 0x14, 0x20, 0x2a, +0x15, 0xfd, 0x2a, 0x04, 0x09, 0x17, 0x28, 0x20, +0x8b, 0xe7, 0xe7, 0x8b, 0x20, 0x28, 0x17, 0x09, +0x04, 0x2b, 0x02, 0x1c, 0x30, 0x8e, 0x78, 0x19, +0x1e, 0x10, 0x05, 0x02, 0x2b, 0x04, 0x08, 0x17, +0x29, 0x20, 0x76, 0xd2, 0xd2, 0x76, 0x20, 0x29, +0x17, 0x08, 0x04, 0x2b, 0x02, 0x05, 0x10, 0x1e, +0x19, 0x78, 0x8e, 0x18, 0x1e, 0x10, 0x06, 0x02, +0x00, 0x02, 0x00, 0x12, 0x00, 0x00, 0x02, 0x6a, +0x02, 0xce, 0x00, 0x15, 0x00, 0x2b, 0x00, 0x27, +0x00, 0xbb, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x00, +0x00, 0x04, 0x2b, 0xbb, 0x00, 0x1e, 0x00, 0x01, +0x00, 0x24, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x1e, +0x10, 0xb8, 0x00, 0x19, 0xd0, 0xb8, 0x00, 0x24, +0x10, 0xb8, 0x00, 0x28, 0xd0, 0x30, 0x31, 0x01, +0x22, 0x2e, 0x02, 0x27, 0x33, 0x1e, 0x03, 0x33, +0x32, 0x3e, 0x02, 0x37, 0x33, 0x0e, 0x03, 0x03, +0x27, 0x33, 0x17, 0x33, 0x35, 0x33, 0x15, 0x33, +0x37, 0x33, 0x07, 0x17, 0x23, 0x27, 0x23, 0x15, +0x23, 0x35, 0x23, 0x07, 0x23, 0x01, 0x3e, 0x2a, +0x37, 0x21, 0x10, 0x01, 0x28, 0x01, 0x0b, 0x19, +0x28, 0x1e, 0x1e, 0x28, 0x19, 0x0b, 0x01, 0x28, +0x02, 0x0f, 0x21, 0x37, 0xb3, 0x99, 0x32, 0x8d, +0x4d, 0x2b, 0x4e, 0x8c, 0x33, 0x9a, 0xa4, 0x32, +0x93, 0x52, 0x2b, 0x52, 0x92, 0x32, 0x02, 0x3c, +0x1c, 0x2a, 0x34, 0x18, 0x15, 0x2a, 0x20, 0x14, +0x14, 0x20, 0x2a, 0x15, 0x18, 0x34, 0x2a, 0x1c, +0xfe, 0xc2, 0xe2, 0xd2, 0xd2, 0xd2, 0xd2, 0xe2, +0xfe, 0xe7, 0xe7, 0xe7, 0xe7, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5c, 0xff, 0xf4, 0x00, 0xb7, +0x02, 0xcf, 0x02, 0x06, 0x00, 0x29, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0xf4, 0x01, 0x9c, +0x02, 0xce, 0x02, 0x26, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x07, 0x07, 0x30, 0x00, 0xfe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x41, 0xff, 0xf4, 0x02, 0xea, +0x01, 0xec, 0x02, 0x06, 0x01, 0x10, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xbd, +0x02, 0xce, 0x02, 0x26, 0x00, 0x22, 0x00, 0x00, +0x00, 0x07, 0x07, 0x30, 0x01, 0x05, 0x00, 0x00, +0xff, 0xff, 0x00, 0x26, 0xff, 0xf4, 0x01, 0xaf, +0x01, 0xec, 0x02, 0x06, 0x01, 0xca, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5c, 0x00, 0x00, 0x01, 0xce, +0x02, 0x84, 0x02, 0x26, 0x03, 0xee, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x01, 0x16, 0x00, 0x02, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xe3, +0x02, 0xa0, 0x02, 0x26, 0x00, 0x2c, 0x00, 0x00, +0x00, 0x07, 0x07, 0x35, 0x01, 0x0b, 0x00, 0x00, +0xff, 0xff, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xe3, +0x01, 0xec, 0x02, 0x06, 0x01, 0xe6, 0x00, 0x00, +0xff, 0xff, 0x00, 0x0c, 0xff, 0x25, 0x01, 0xa8, +0x02, 0x82, 0x02, 0x26, 0x00, 0x36, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x00, 0xe5, 0x00, 0x00, +0xff, 0xff, 0x00, 0x0c, 0xff, 0x25, 0x01, 0xa8, +0x02, 0xee, 0x02, 0x26, 0x00, 0x36, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3b, 0x00, 0xe5, 0x00, 0x00, +0x00, 0x02, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xd0, +0x02, 0xda, 0x00, 0x11, 0x00, 0x40, 0x00, 0x51, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x3b, 0x2f, 0x1b, 0xb9, 0x00, 0x3b, 0x00, 0x13, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x29, 0x2f, 0x1b, 0xb9, 0x00, 0x29, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x00, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x0a, 0x00, 0x3b, 0x00, 0x29, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x3b, 0x10, 0xb9, +0x00, 0x15, 0x00, 0x02, 0xf4, 0xb8, 0x00, 0x0a, +0x10, 0xb9, 0x00, 0x1f, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x0a, 0x10, 0xb8, 0x00, 0x31, 0xd0, 0x30, +0x31, 0x37, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, +0x02, 0x27, 0x0e, 0x01, 0x15, 0x14, 0x1e, 0x02, +0x13, 0x0e, 0x01, 0x07, 0x0e, 0x03, 0x15, 0x14, +0x1e, 0x02, 0x17, 0x1e, 0x03, 0x15, 0x14, 0x0e, +0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, +0x37, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x37, +0x3e, 0x03, 0x37, 0xfe, 0x29, 0x3d, 0x29, 0x14, +0x12, 0x21, 0x2d, 0x1a, 0x5f, 0x67, 0x1a, 0x2b, +0x39, 0xf1, 0x14, 0x2e, 0x1d, 0x36, 0x50, 0x36, +0x1a, 0x1a, 0x29, 0x35, 0x1b, 0x22, 0x3a, 0x2b, +0x19, 0x1d, 0x36, 0x4d, 0x30, 0x26, 0x49, 0x39, +0x22, 0x70, 0x62, 0x1c, 0x36, 0x2b, 0x1b, 0x21, +0x3f, 0x5b, 0x39, 0x16, 0x1d, 0x15, 0x11, 0x0b, +0x1b, 0x1e, 0x34, 0x46, 0x28, 0x23, 0x38, 0x2f, +0x28, 0x14, 0x17, 0x71, 0x51, 0x26, 0x3f, 0x2e, +0x1a, 0x02, 0x93, 0x0b, 0x0b, 0x04, 0x08, 0x08, +0x0e, 0x17, 0x17, 0x0f, 0x1b, 0x1b, 0x1e, 0x14, +0x19, 0x30, 0x39, 0x45, 0x2e, 0x33, 0x55, 0x3e, +0x22, 0x1d, 0x37, 0x4e, 0x31, 0x60, 0x74, 0x1f, +0x13, 0x23, 0x22, 0x23, 0x14, 0x24, 0x28, 0x16, +0x0c, 0x09, 0x03, 0x05, 0x06, 0x07, 0x05, 0x00, +0x00, 0x04, 0x00, 0x43, 0xff, 0xf4, 0x03, 0x46, +0x02, 0x8b, 0x00, 0x2c, 0x00, 0x40, 0x00, 0x4c, +0x00, 0x50, 0x00, 0x87, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x17, 0x2f, 0x1b, 0xb9, +0x00, 0x17, 0x00, 0x0f, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, +0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x4d, 0x00, 0x01, 0x00, 0x50, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x47, 0x00, 0x01, 0x00, 0x37, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x04, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x17, +0x10, 0xb8, 0x00, 0x08, 0xd0, 0xb8, 0x00, 0x08, +0x2f, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x20, +0xd0, 0xb8, 0x00, 0x20, 0x2f, 0xba, 0x00, 0x0d, +0x00, 0x20, 0x00, 0x17, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x17, 0x10, 0xb9, 0x00, 0x1b, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x24, 0x00, 0x08, 0x00, 0x00, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x4d, 0x10, 0xb8, +0x00, 0x2d, 0xdc, 0xb9, 0x00, 0x41, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x17, 0x2a, 0x01, 0x2f, 0x01, +0x32, 0x36, 0x35, 0x11, 0x33, 0x1e, 0x01, 0x1f, +0x01, 0x33, 0x2e, 0x02, 0x34, 0x3d, 0x01, 0x34, +0x36, 0x33, 0x3a, 0x01, 0x1f, 0x01, 0x22, 0x06, +0x15, 0x11, 0x23, 0x2e, 0x01, 0x2f, 0x01, 0x23, +0x1e, 0x02, 0x14, 0x1d, 0x01, 0x14, 0x01, 0x22, +0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, +0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x27, 0x32, +0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, +0x14, 0x16, 0x07, 0x33, 0x15, 0x23, 0x57, 0x05, +0x05, 0x05, 0x05, 0x0e, 0x11, 0x33, 0x31, 0x5e, +0x2f, 0x49, 0x04, 0x03, 0x02, 0x01, 0x1a, 0x1b, +0x05, 0x06, 0x05, 0x05, 0x0f, 0x10, 0x34, 0x30, +0x5e, 0x2f, 0x4a, 0x04, 0x03, 0x02, 0x01, 0x02, +0x27, 0x1e, 0x36, 0x28, 0x17, 0x17, 0x28, 0x36, +0x1e, 0x1e, 0x36, 0x28, 0x17, 0x17, 0x28, 0x36, +0x1e, 0x30, 0x3a, 0x3a, 0x30, 0x30, 0x3a, 0x3a, +0x4b, 0xf6, 0xf6, 0x0c, 0x02, 0x25, 0x11, 0x17, +0x02, 0x3c, 0x67, 0xce, 0x68, 0xa4, 0x30, 0x4f, +0x49, 0x49, 0x2a, 0xc3, 0x2a, 0x25, 0x02, 0x25, +0x11, 0x17, 0xfd, 0xc4, 0x69, 0xcc, 0x6a, 0xa3, +0x31, 0x4f, 0x49, 0x48, 0x2a, 0xc4, 0x4f, 0x01, +0x24, 0x16, 0x28, 0x3b, 0x25, 0x26, 0x3a, 0x28, +0x15, 0x15, 0x28, 0x3a, 0x26, 0x25, 0x3b, 0x28, +0x16, 0x22, 0x44, 0x38, 0x39, 0x42, 0x42, 0x39, +0x38, 0x44, 0x76, 0x22, 0x00, 0x03, 0x00, 0x24, +0xff, 0xf4, 0x02, 0x32, 0x02, 0x9f, 0x00, 0x0f, +0x00, 0x1f, 0x00, 0x4c, 0x00, 0x8c, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x37, 0x2f, +0x1b, 0xb9, 0x00, 0x37, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x25, +0x2f, 0x1b, 0xb9, 0x00, 0x25, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x20, 0x2f, 0x1b, 0xb9, 0x00, 0x20, 0x00, 0x05, +0x3e, 0x59, 0xba, 0x00, 0x42, 0x00, 0x22, 0x00, +0x03, 0x2b, 0xb8, 0x00, 0x25, 0x10, 0xb9, 0x00, +0x03, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x06, 0x00, +0x22, 0x00, 0x42, 0x11, 0x12, 0x39, 0xba, 0x00, +0x0b, 0x00, 0x25, 0x00, 0x37, 0x11, 0x12, 0x39, +0xb8, 0x00, 0x0b, 0x2f, 0xb8, 0x00, 0x13, 0xdc, +0xb8, 0x00, 0x37, 0x10, 0xb9, 0x00, 0x1d, 0x00, +0x01, 0xf4, 0xba, 0x00, 0x2f, 0x00, 0x0b, 0x00, +0x13, 0x11, 0x12, 0x39, 0xba, 0x00, 0x3f, 0x00, +0x0b, 0x00, 0x13, 0x11, 0x12, 0x39, 0xba, 0x00, +0x49, 0x00, 0x22, 0x00, 0x42, 0x11, 0x12, 0x39, +0x30, 0x31, 0x37, 0x32, 0x36, 0x37, 0x2e, 0x01, +0x27, 0x0e, 0x03, 0x15, 0x14, 0x1e, 0x02, 0x03, +0x14, 0x16, 0x17, 0x3e, 0x03, 0x35, 0x34, 0x2e, +0x02, 0x23, 0x22, 0x06, 0x01, 0x26, 0x27, 0x0e, +0x01, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, +0x02, 0x37, 0x2e, 0x01, 0x35, 0x34, 0x3e, 0x02, +0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, +0x1e, 0x01, 0x17, 0x3e, 0x01, 0x37, 0x33, 0x0e, +0x01, 0x07, 0x1e, 0x01, 0x17, 0xe6, 0x29, 0x4a, +0x1f, 0x35, 0x63, 0x23, 0x16, 0x27, 0x1e, 0x11, +0x18, 0x28, 0x37, 0x20, 0x14, 0x11, 0x19, 0x2e, +0x24, 0x15, 0x08, 0x11, 0x1b, 0x14, 0x2c, 0x31, +0x01, 0x7b, 0x41, 0x4c, 0x24, 0x58, 0x38, 0x27, +0x46, 0x33, 0x1e, 0x17, 0x25, 0x31, 0x1a, 0x14, +0x18, 0x14, 0x24, 0x32, 0x1e, 0x36, 0x38, 0x1a, +0x2b, 0x37, 0x1c, 0x23, 0x61, 0x33, 0x23, 0x34, +0x11, 0x2b, 0x14, 0x39, 0x28, 0x23, 0x40, 0x1d, +0x1a, 0x27, 0x20, 0x30, 0x78, 0x40, 0x11, 0x24, +0x27, 0x2b, 0x18, 0x21, 0x35, 0x25, 0x15, 0x01, +0xf4, 0x21, 0x47, 0x24, 0x12, 0x24, 0x28, 0x2b, +0x1a, 0x10, 0x1f, 0x18, 0x0f, 0x40, 0xfd, 0xb9, +0x17, 0x3c, 0x25, 0x2e, 0x19, 0x2f, 0x42, 0x29, +0x21, 0x36, 0x2f, 0x29, 0x13, 0x2a, 0x53, 0x26, +0x20, 0x36, 0x27, 0x16, 0x44, 0x34, 0x20, 0x36, +0x2f, 0x2b, 0x15, 0x3f, 0x76, 0x2d, 0x2d, 0x6d, +0x3f, 0x44, 0x7b, 0x33, 0x1c, 0x25, 0x0b, 0x00, +0x00, 0x02, 0x00, 0x30, 0xff, 0xf4, 0x01, 0xae, +0x02, 0x8b, 0x00, 0x0b, 0x00, 0x17, 0x00, 0x35, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, 0x0f, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x0c, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x06, 0x10, 0xb9, 0x00, 0x12, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, 0x22, 0x26, +0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, +0x06, 0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, +0x22, 0x06, 0x15, 0x14, 0x16, 0xef, 0x5c, 0x63, +0x63, 0x5c, 0x5c, 0x63, 0x63, 0x5c, 0x43, 0x4f, +0x4f, 0x43, 0x42, 0x50, 0x50, 0x0c, 0xad, 0xa1, +0xa0, 0xa9, 0xa9, 0xa0, 0xa1, 0xad, 0x26, 0x95, +0x93, 0x93, 0x90, 0x90, 0x93, 0x93, 0x95, 0x00, +0x00, 0x01, 0x00, 0x54, 0x00, 0x00, 0x01, 0xa2, +0x02, 0x7f, 0x00, 0x0c, 0x00, 0x43, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, 0x2f, +0x1b, 0xb9, 0x00, 0x07, 0x00, 0x0f, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0c, +0x2f, 0x1b, 0xb9, 0x00, 0x0c, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x01, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x07, 0x10, 0xb9, 0x00, 0x04, 0x00, 0x01, +0xf4, 0xb9, 0x00, 0x02, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x01, 0x10, 0xb8, 0x00, 0x09, 0xd0, 0x30, +0x31, 0x37, 0x33, 0x11, 0x23, 0x35, 0x3e, 0x01, +0x37, 0x33, 0x11, 0x33, 0x15, 0x21, 0x54, 0x96, +0x72, 0x27, 0x3d, 0x17, 0x24, 0x8b, 0xfe, 0xb2, +0x27, 0x02, 0x12, 0x1e, 0x07, 0x14, 0x0d, 0xfd, +0xa8, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x27, +0x00, 0x00, 0x01, 0xb1, 0x02, 0x8b, 0x00, 0x1d, +0x00, 0x41, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, +0x00, 0x0f, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x1c, 0x2f, 0x1b, 0xb9, 0x00, +0x1c, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x1a, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x17, 0xd0, 0xb8, +0x00, 0x00, 0xd0, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x0f, 0x10, 0xb9, 0x00, 0x08, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x37, 0x3e, 0x03, 0x35, 0x34, +0x26, 0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, 0x01, +0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, +0x3e, 0x01, 0x3b, 0x01, 0x15, 0x21, 0x29, 0x4f, +0x76, 0x4f, 0x27, 0x43, 0x48, 0x2c, 0x4c, 0x1d, +0x1d, 0x24, 0x57, 0x3b, 0x56, 0x5e, 0x2a, 0x4c, +0x6d, 0x42, 0x1a, 0x37, 0x1a, 0xda, 0xfe, 0x78, +0x1c, 0x50, 0x7f, 0x69, 0x59, 0x2a, 0x3c, 0x52, +0x30, 0x24, 0x1c, 0x28, 0x36, 0x62, 0x51, 0x30, +0x5f, 0x69, 0x77, 0x46, 0x02, 0x03, 0x28, 0x00, +0x00, 0x01, 0x00, 0x1d, 0xff, 0xf4, 0x01, 0xab, +0x02, 0x8b, 0x00, 0x37, 0x00, 0x53, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x25, 0x2f, +0x1b, 0xb9, 0x00, 0x25, 0x00, 0x0f, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x0b, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x15, 0x00, 0x25, 0x00, 0x00, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x15, 0x2f, 0xb9, 0x00, 0x16, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x25, 0x10, 0xb9, +0x00, 0x1e, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x2d, +0x00, 0x15, 0x00, 0x16, 0x11, 0x12, 0x39, 0x30, +0x31, 0x17, 0x22, 0x2e, 0x02, 0x27, 0x37, 0x1e, +0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, +0x02, 0x23, 0x35, 0x32, 0x3e, 0x02, 0x35, 0x34, +0x26, 0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, 0x01, +0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, +0x15, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0xe8, +0x26, 0x3e, 0x31, 0x27, 0x0f, 0x1a, 0x0e, 0x22, +0x2b, 0x35, 0x21, 0x20, 0x37, 0x28, 0x16, 0x19, +0x35, 0x55, 0x3c, 0x37, 0x4d, 0x2f, 0x15, 0x46, +0x3b, 0x2d, 0x4a, 0x1c, 0x1a, 0x21, 0x54, 0x38, +0x25, 0x40, 0x2f, 0x1b, 0x45, 0x35, 0x1e, 0x34, +0x28, 0x17, 0x1e, 0x35, 0x47, 0x0c, 0x10, 0x1a, +0x20, 0x10, 0x1f, 0x10, 0x1d, 0x17, 0x0e, 0x14, +0x25, 0x34, 0x20, 0x21, 0x36, 0x27, 0x16, 0x27, +0x16, 0x25, 0x33, 0x1d, 0x36, 0x41, 0x29, 0x1d, +0x1e, 0x20, 0x2e, 0x15, 0x27, 0x39, 0x25, 0x3f, +0x4d, 0x12, 0x04, 0x06, 0x1d, 0x2a, 0x37, 0x22, +0x2a, 0x43, 0x2f, 0x19, 0x00, 0x02, 0x00, 0x10, +0x00, 0x00, 0x01, 0xc0, 0x02, 0x7f, 0x00, 0x09, +0x00, 0x14, 0x00, 0x5d, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x12, 0x2f, 0x1b, 0xb9, +0x00, 0x12, 0x00, 0x0f, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, 0x2f, 0x1b, +0xb9, 0x00, 0x0d, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x0e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, +0x2b, 0xba, 0x00, 0x04, 0x00, 0x12, 0x00, 0x0d, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x09, 0xd0, 0xb8, 0x00, 0x0e, 0x10, 0xb8, +0x00, 0x0b, 0xd0, 0xb8, 0x00, 0x09, 0x10, 0xb8, +0x00, 0x10, 0xd0, 0xb8, 0x00, 0x10, 0x2f, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x13, 0xd0, 0x30, +0x31, 0x25, 0x35, 0x34, 0x36, 0x37, 0x23, 0x0e, +0x01, 0x07, 0x03, 0x05, 0x23, 0x15, 0x23, 0x35, +0x21, 0x35, 0x01, 0x33, 0x11, 0x33, 0x01, 0x36, +0x02, 0x02, 0x04, 0x0c, 0x1a, 0x0e, 0xbc, 0x01, +0x7a, 0x5f, 0x2b, 0xfe, 0xda, 0x01, 0x29, 0x28, +0x5f, 0xe5, 0xea, 0x16, 0x42, 0x16, 0x14, 0x26, +0x16, 0xfe, 0xf8, 0x26, 0xbf, 0xbf, 0x1a, 0x01, +0xa6, 0xfe, 0x66, 0x00, 0x00, 0x01, 0x00, 0x1a, +0xff, 0xf4, 0x01, 0xaf, 0x02, 0x7f, 0x00, 0x28, +0x00, 0x4d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x18, 0x2f, 0x1b, 0xb9, 0x00, 0x18, +0x00, 0x0f, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x0b, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x13, 0x00, 0x18, +0x00, 0x00, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x13, +0x2f, 0xb8, 0x00, 0x18, 0x10, 0xb9, 0x00, 0x1a, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x13, 0x10, 0xb9, +0x00, 0x1f, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, +0x22, 0x2e, 0x02, 0x27, 0x37, 0x1e, 0x03, 0x33, +0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, 0x22, +0x06, 0x07, 0x27, 0x13, 0x21, 0x15, 0x23, 0x07, +0x3e, 0x01, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, +0x0e, 0x02, 0xe3, 0x26, 0x3d, 0x31, 0x26, 0x0f, +0x19, 0x0e, 0x22, 0x2a, 0x34, 0x21, 0x20, 0x3a, +0x2b, 0x1a, 0x54, 0x48, 0x25, 0x35, 0x1d, 0x1f, +0x17, 0x01, 0x27, 0xff, 0x14, 0x19, 0x36, 0x23, +0x28, 0x48, 0x34, 0x1f, 0x23, 0x39, 0x49, 0x0c, +0x0f, 0x19, 0x1f, 0x0f, 0x1f, 0x0f, 0x1c, 0x16, +0x0d, 0x19, 0x2d, 0x3f, 0x27, 0x4e, 0x57, 0x17, +0x14, 0x13, 0x01, 0x2b, 0x27, 0xe7, 0x0f, 0x13, +0x18, 0x31, 0x4d, 0x34, 0x33, 0x4f, 0x37, 0x1c, +0x00, 0x02, 0x00, 0x34, 0xff, 0xf4, 0x01, 0xb4, +0x02, 0x8b, 0x00, 0x11, 0x00, 0x30, 0x00, 0x43, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x2d, 0x2f, 0x1b, 0xb9, 0x00, 0x2d, 0x00, 0x0f, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x25, 0x2f, 0x1b, 0xb9, 0x00, 0x25, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x1d, 0x00, 0x01, +0x00, 0x0a, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x25, +0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x2d, 0x10, 0xb9, 0x00, 0x15, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x25, 0x32, 0x3e, 0x02, 0x35, +0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x1e, +0x03, 0x13, 0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, +0x07, 0x3e, 0x01, 0x33, 0x32, 0x16, 0x15, 0x14, +0x0e, 0x02, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x32, 0x16, 0x17, 0x01, 0x06, 0x1c, +0x2f, 0x22, 0x14, 0x10, 0x21, 0x35, 0x24, 0x22, +0x52, 0x27, 0x03, 0x17, 0x28, 0x3b, 0xac, 0x15, +0x38, 0x1f, 0x26, 0x44, 0x34, 0x1f, 0x01, 0x21, +0x53, 0x2d, 0x55, 0x5d, 0x1c, 0x30, 0x3f, 0x24, +0x61, 0x70, 0x27, 0x41, 0x55, 0x2e, 0x2d, 0x41, +0x19, 0x1a, 0x19, 0x2c, 0x3b, 0x22, 0x22, 0x3b, +0x2b, 0x18, 0x2b, 0x35, 0x33, 0x53, 0x3b, 0x21, +0x02, 0x15, 0x1a, 0x1b, 0x20, 0x4a, 0x79, 0x58, +0x29, 0x30, 0x65, 0x61, 0x2c, 0x49, 0x35, 0x1e, +0x9c, 0x92, 0x64, 0x8a, 0x56, 0x25, 0x22, 0x1c, +0x00, 0x01, 0x00, 0x2c, 0x00, 0x00, 0x01, 0xb5, +0x02, 0x7f, 0x00, 0x0f, 0x00, 0x37, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, 0x2f, +0x1b, 0xb9, 0x00, 0x07, 0x00, 0x0f, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x07, 0x10, 0xb9, 0x00, 0x05, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x09, 0xd0, 0xb8, +0x00, 0x09, 0x2f, 0x30, 0x31, 0x33, 0x3e, 0x03, +0x37, 0x21, 0x35, 0x21, 0x15, 0x0e, 0x03, 0x07, +0x23, 0xbc, 0x04, 0x19, 0x2e, 0x46, 0x30, 0xfe, +0xaf, 0x01, 0x89, 0x39, 0x4b, 0x2d, 0x14, 0x04, +0x30, 0x61, 0xa1, 0x8f, 0x83, 0x44, 0x27, 0x1a, +0x4c, 0x8c, 0x91, 0x9e, 0x5e, 0x00, 0x00, 0x00, +0x00, 0x03, 0x00, 0x28, 0xff, 0xf4, 0x01, 0xb5, +0x02, 0x8b, 0x00, 0x29, 0x00, 0x3b, 0x00, 0x4d, +0x00, 0x4d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x15, 0x2f, 0x1b, 0xb9, 0x00, 0x15, +0x00, 0x0f, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x2a, +0x00, 0x00, 0x00, 0x15, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x15, 0x10, 0xb9, 0x00, 0x32, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x3c, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x46, 0x00, 0x15, +0x00, 0x00, 0x11, 0x12, 0x39, 0x30, 0x31, 0x17, +0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, +0x35, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, +0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, +0x15, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x13, +0x3e, 0x01, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, +0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x03, 0x32, +0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x0e, +0x01, 0x15, 0x14, 0x1e, 0x02, 0xf3, 0x2c, 0x4a, +0x36, 0x1f, 0x17, 0x25, 0x2d, 0x17, 0x12, 0x21, +0x19, 0x10, 0x1a, 0x2d, 0x3d, 0x23, 0x29, 0x40, +0x2d, 0x17, 0x12, 0x1b, 0x20, 0x0e, 0x15, 0x28, +0x1f, 0x14, 0x1c, 0x33, 0x48, 0x04, 0x29, 0x2b, +0x12, 0x21, 0x31, 0x1f, 0x1b, 0x2d, 0x21, 0x12, +0x1d, 0x30, 0x3d, 0x0f, 0x22, 0x37, 0x27, 0x15, +0x21, 0x37, 0x46, 0x25, 0x31, 0x40, 0x18, 0x2a, +0x3a, 0x0c, 0x1b, 0x2f, 0x40, 0x26, 0x20, 0x38, +0x2d, 0x23, 0x0c, 0x04, 0x0c, 0x1d, 0x25, 0x2b, +0x1a, 0x22, 0x3a, 0x29, 0x17, 0x19, 0x2d, 0x3d, +0x24, 0x1a, 0x31, 0x2a, 0x22, 0x0b, 0x04, 0x0d, +0x1e, 0x26, 0x32, 0x20, 0x23, 0x3d, 0x2d, 0x1a, +0x01, 0x5b, 0x21, 0x49, 0x2a, 0x1b, 0x2f, 0x24, +0x15, 0x12, 0x1f, 0x2c, 0x1a, 0x22, 0x31, 0x25, +0x1c, 0xfe, 0xbe, 0x14, 0x24, 0x30, 0x1b, 0x25, +0x33, 0x27, 0x1d, 0x0f, 0x1d, 0x4f, 0x35, 0x1e, +0x33, 0x26, 0x16, 0x00, 0x00, 0x02, 0x00, 0x2b, +0xff, 0xf4, 0x01, 0xaa, 0x02, 0x8b, 0x00, 0x11, +0x00, 0x30, 0x00, 0x43, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x25, 0x2f, 0x1b, 0xb9, +0x00, 0x25, 0x00, 0x0f, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x2d, 0x2f, 0x1b, +0xb9, 0x00, 0x2d, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x00, 0x00, 0x01, 0x00, 0x1d, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x25, 0x10, 0xb9, 0x00, 0x08, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x2d, 0x10, 0xb9, +0x00, 0x15, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, +0x32, 0x36, 0x37, 0x2e, 0x03, 0x23, 0x22, 0x0e, +0x02, 0x15, 0x14, 0x1e, 0x02, 0x07, 0x1e, 0x01, +0x33, 0x32, 0x3e, 0x02, 0x37, 0x0e, 0x01, 0x23, +0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, +0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, +0x27, 0xe2, 0x22, 0x53, 0x26, 0x03, 0x17, 0x29, +0x3b, 0x27, 0x1b, 0x30, 0x22, 0x14, 0x10, 0x22, +0x34, 0x6a, 0x15, 0x38, 0x20, 0x26, 0x44, 0x34, +0x1f, 0x01, 0x21, 0x54, 0x2d, 0x54, 0x5d, 0x1c, +0x30, 0x3f, 0x24, 0x60, 0x70, 0x27, 0x40, 0x56, +0x2e, 0x2d, 0x42, 0x18, 0x01, 0x23, 0x2c, 0x35, +0x33, 0x53, 0x3b, 0x20, 0x19, 0x2b, 0x3b, 0x22, +0x23, 0x3b, 0x2b, 0x18, 0xd3, 0x1a, 0x1b, 0x20, +0x4a, 0x79, 0x58, 0x28, 0x30, 0x65, 0x61, 0x2b, +0x4a, 0x34, 0x1e, 0x9b, 0x92, 0x65, 0x8a, 0x55, +0x26, 0x22, 0x1c, 0x00, 0x00, 0x03, 0x00, 0x30, +0xff, 0xf4, 0x01, 0xae, 0x02, 0x8b, 0x00, 0x0b, +0x00, 0x17, 0x00, 0x23, 0x00, 0x47, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x06, 0x2f, +0x1b, 0xb9, 0x00, 0x06, 0x00, 0x0f, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x0c, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x06, 0x10, 0xb9, 0x00, 0x12, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x18, 0x10, 0xb8, +0x00, 0x1e, 0xdc, 0x30, 0x31, 0x17, 0x22, 0x26, +0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, +0x06, 0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, +0x22, 0x06, 0x15, 0x14, 0x16, 0x37, 0x22, 0x26, +0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, +0x06, 0xef, 0x5c, 0x63, 0x63, 0x5c, 0x5c, 0x63, +0x63, 0x5c, 0x44, 0x4f, 0x4f, 0x44, 0x43, 0x50, +0x50, 0x43, 0x15, 0x21, 0x21, 0x15, 0x15, 0x22, +0x22, 0x0c, 0xad, 0xa1, 0xa0, 0xa9, 0xa9, 0xa0, +0xa1, 0xad, 0x26, 0x96, 0x92, 0x92, 0x91, 0x91, +0x92, 0x92, 0x96, 0xf1, 0x1f, 0x1d, 0x1d, 0x1f, +0x1f, 0x1d, 0x1d, 0x1f, 0x00, 0x03, 0x00, 0x30, +0xff, 0xf4, 0x01, 0xae, 0x02, 0x8b, 0x00, 0x07, +0x00, 0x11, 0x00, 0x1d, 0x00, 0x5d, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x12, 0x2f, +0x1b, 0xb9, 0x00, 0x12, 0x00, 0x0f, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x18, +0x2f, 0x1b, 0xb9, 0x00, 0x18, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x00, 0x00, 0x18, 0x00, 0x12, +0x11, 0x12, 0x39, 0xb9, 0x00, 0x05, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x07, 0x00, 0x18, 0x00, 0x12, +0x11, 0x12, 0x39, 0xba, 0x00, 0x08, 0x00, 0x18, +0x00, 0x12, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x12, +0x10, 0xb9, 0x00, 0x0e, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x11, 0x00, 0x12, 0x00, 0x18, 0x11, 0x12, +0x39, 0x30, 0x31, 0x13, 0x06, 0x15, 0x14, 0x16, +0x33, 0x32, 0x3f, 0x01, 0x3e, 0x01, 0x35, 0x34, +0x26, 0x23, 0x22, 0x06, 0x07, 0x37, 0x32, 0x16, +0x15, 0x14, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, +0x36, 0x6d, 0x11, 0x50, 0x43, 0x4f, 0x27, 0x0d, +0x08, 0x08, 0x50, 0x43, 0x26, 0x3c, 0x13, 0x75, +0x5c, 0x63, 0x63, 0x5c, 0x5c, 0x63, 0x63, 0x01, +0xde, 0x41, 0x5b, 0x93, 0x96, 0x64, 0x29, 0x20, +0x4d, 0x2f, 0x93, 0x91, 0x30, 0x30, 0x85, 0xa9, +0xa0, 0xa1, 0xad, 0xad, 0xa1, 0xa0, 0xa9, 0x00, +0x00, 0x02, 0x00, 0x38, 0xff, 0xf4, 0x01, 0xca, +0x02, 0x8b, 0x00, 0x0b, 0x00, 0x17, 0x00, 0x35, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, 0x0f, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x0c, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x06, 0x10, 0xb9, 0x00, 0x12, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x05, 0x22, 0x26, +0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, +0x06, 0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, +0x22, 0x06, 0x15, 0x14, 0x16, 0x01, 0x01, 0x61, +0x68, 0x68, 0x61, 0x61, 0x68, 0x68, 0x61, 0x47, +0x54, 0x54, 0x47, 0x48, 0x53, 0x53, 0x0c, 0xae, +0xa0, 0x9f, 0xaa, 0xaa, 0x9f, 0xa0, 0xae, 0x27, +0x95, 0x92, 0x92, 0x90, 0x90, 0x92, 0x92, 0x95, +0x00, 0x01, 0x00, 0x39, 0x00, 0x00, 0x00, 0xd8, +0x02, 0x7f, 0x00, 0x08, 0x00, 0x35, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x06, 0x2f, +0x1b, 0xb9, 0x00, 0x06, 0x00, 0x0f, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, +0x2f, 0x1b, 0xb9, 0x00, 0x07, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x06, 0x10, 0xb9, 0x00, 0x02, +0x00, 0x01, 0xf4, 0xb9, 0x00, 0x00, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x13, 0x23, 0x35, 0x3e, 0x01, +0x37, 0x33, 0x11, 0x23, 0xac, 0x73, 0x28, 0x3c, +0x17, 0x24, 0x2c, 0x02, 0x39, 0x1e, 0x07, 0x14, +0x0d, 0xfd, 0x81, 0x00, 0x00, 0x01, 0x00, 0x27, +0x00, 0x00, 0x01, 0xb0, 0x02, 0x8b, 0x00, 0x1f, +0x00, 0x41, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x11, 0x2f, 0x1b, 0xb9, 0x00, 0x11, +0x00, 0x0f, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x1e, 0x2f, 0x1b, 0xb9, 0x00, +0x1e, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x1c, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x19, 0xd0, 0xb8, +0x00, 0x00, 0xd0, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x11, 0x10, 0xb9, 0x00, 0x0a, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x37, 0x3e, 0x03, 0x35, 0x34, +0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, +0x01, 0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, +0x07, 0x3e, 0x01, 0x3b, 0x01, 0x15, 0x21, 0x2a, +0x4e, 0x76, 0x4f, 0x27, 0x10, 0x22, 0x35, 0x24, +0x2c, 0x4c, 0x1d, 0x1d, 0x27, 0x57, 0x39, 0x55, +0x5e, 0x29, 0x4d, 0x6c, 0x42, 0x1a, 0x37, 0x1a, +0xd8, 0xfe, 0x7a, 0x1c, 0x50, 0x7f, 0x69, 0x59, +0x2a, 0x1e, 0x34, 0x26, 0x16, 0x30, 0x24, 0x1c, +0x2b, 0x33, 0x62, 0x51, 0x30, 0x5f, 0x69, 0x77, +0x46, 0x02, 0x03, 0x28, 0xff, 0xff, 0x00, 0x1d, +0xff, 0xf4, 0x01, 0xab, 0x02, 0x8b, 0x02, 0x06, +0x04, 0x44, 0x00, 0x00, 0xff, 0xff, 0x00, 0x20, +0x00, 0x00, 0x01, 0xd0, 0x02, 0x7f, 0x00, 0x06, +0x04, 0x45, 0x10, 0x00, 0xff, 0xff, 0x00, 0x1a, +0xff, 0xf4, 0x01, 0xaf, 0x02, 0x7f, 0x02, 0x06, +0x04, 0x46, 0x00, 0x00, 0xff, 0xff, 0x00, 0x3f, +0xff, 0xf4, 0x01, 0xbf, 0x02, 0x8b, 0x00, 0x06, +0x04, 0x47, 0x0b, 0x00, 0x00, 0x01, 0x00, 0x2c, +0x00, 0x00, 0x01, 0xa7, 0x02, 0x7f, 0x00, 0x0f, +0x00, 0x37, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x07, 0x2f, 0x1b, 0xb9, 0x00, 0x07, +0x00, 0x0f, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x07, +0x10, 0xb9, 0x00, 0x05, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x09, 0xd0, 0xb8, 0x00, 0x09, 0x2f, 0x30, +0x31, 0x33, 0x3e, 0x03, 0x37, 0x21, 0x35, 0x21, +0x15, 0x0e, 0x03, 0x07, 0x23, 0xb2, 0x04, 0x18, +0x2d, 0x44, 0x30, 0xfe, 0xbd, 0x01, 0x7b, 0x39, +0x49, 0x2b, 0x14, 0x04, 0x30, 0x61, 0xa1, 0x8f, +0x83, 0x44, 0x27, 0x1a, 0x4c, 0x8c, 0x91, 0x9e, +0x5e, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x39, +0xff, 0xf4, 0x01, 0xc6, 0x02, 0x8b, 0x00, 0x06, +0x04, 0x49, 0x11, 0x00, 0xff, 0xff, 0x00, 0x34, +0xff, 0xf4, 0x01, 0xb3, 0x02, 0x8b, 0x00, 0x06, +0x04, 0x4a, 0x09, 0x00, 0x00, 0x03, 0x00, 0x38, +0xff, 0xf4, 0x01, 0xca, 0x02, 0x8b, 0x00, 0x0b, +0x00, 0x17, 0x00, 0x23, 0x00, 0x47, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x06, 0x2f, +0x1b, 0xb9, 0x00, 0x06, 0x00, 0x0f, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x0c, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x06, 0x10, 0xb9, 0x00, 0x12, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x18, 0x10, 0xb8, +0x00, 0x1e, 0xdc, 0x30, 0x31, 0x05, 0x22, 0x26, +0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, +0x06, 0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, +0x22, 0x06, 0x15, 0x14, 0x16, 0x37, 0x22, 0x26, +0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, +0x06, 0x01, 0x01, 0x61, 0x68, 0x68, 0x61, 0x61, +0x68, 0x68, 0x61, 0x48, 0x54, 0x54, 0x48, 0x48, +0x54, 0x54, 0x48, 0x15, 0x22, 0x22, 0x15, 0x15, +0x21, 0x21, 0x0c, 0xae, 0xa0, 0x9f, 0xaa, 0xaa, +0x9f, 0xa0, 0xae, 0x27, 0x95, 0x92, 0x92, 0x90, +0x90, 0x92, 0x92, 0x95, 0xf0, 0x1f, 0x1d, 0x1d, +0x1f, 0x1f, 0x1d, 0x1d, 0x1f, 0x00, 0x00, 0x00, +0x00, 0x03, 0x00, 0x38, 0xff, 0xf4, 0x01, 0xca, +0x02, 0x8b, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x1b, +0x00, 0x5d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x10, 0x2f, 0x1b, 0xb9, 0x00, 0x10, +0x00, 0x0f, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x16, 0x2f, 0x1b, 0xb9, 0x00, +0x16, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x00, +0x00, 0x16, 0x00, 0x10, 0x11, 0x12, 0x39, 0xb9, +0x00, 0x05, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x07, +0x00, 0x16, 0x00, 0x10, 0x11, 0x12, 0x39, 0xba, +0x00, 0x08, 0x00, 0x16, 0x00, 0x10, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x10, 0x10, 0xb9, 0x00, 0x0d, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x0f, 0x00, 0x10, +0x00, 0x16, 0x11, 0x12, 0x39, 0x30, 0x31, 0x13, +0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x3f, 0x01, +0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x07, 0x37, +0x32, 0x16, 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, +0x35, 0x34, 0x36, 0x76, 0x12, 0x55, 0x48, 0x55, +0x29, 0x0d, 0x12, 0x55, 0x48, 0x54, 0x2a, 0x7e, +0x61, 0x68, 0x68, 0x61, 0x61, 0x68, 0x68, 0x01, +0xe0, 0x41, 0x5d, 0x93, 0x96, 0x64, 0x26, 0x40, +0x5f, 0x93, 0x91, 0x60, 0x85, 0xaa, 0x9f, 0xa0, +0xae, 0xae, 0xa0, 0x9f, 0xaa, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x30, 0xff, 0xf4, 0x01, 0xae, +0x02, 0x47, 0x00, 0x0b, 0x00, 0x17, 0x00, 0x35, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, 0x0d, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x0c, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x06, 0x10, 0xb9, 0x00, 0x12, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, 0x22, 0x26, +0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, +0x06, 0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, +0x22, 0x06, 0x15, 0x14, 0x16, 0xef, 0x59, 0x66, +0x66, 0x59, 0x5a, 0x65, 0x66, 0x59, 0x44, 0x4e, +0x4e, 0x44, 0x43, 0x4f, 0x4f, 0x0c, 0x93, 0x97, +0x97, 0x92, 0x92, 0x97, 0x97, 0x93, 0x26, 0x87, +0x7d, 0x7d, 0x86, 0x86, 0x7d, 0x7d, 0x87, 0x00, +0x00, 0x01, 0x00, 0x54, 0x00, 0x00, 0x01, 0xa2, +0x02, 0x3b, 0x00, 0x0c, 0x00, 0x43, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, 0x2f, +0x1b, 0xb9, 0x00, 0x07, 0x00, 0x0d, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0c, +0x2f, 0x1b, 0xb9, 0x00, 0x0c, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x01, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x07, 0x10, 0xb9, 0x00, 0x04, 0x00, 0x01, +0xf4, 0xb9, 0x00, 0x02, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x01, 0x10, 0xb8, 0x00, 0x09, 0xd0, 0x30, +0x31, 0x37, 0x33, 0x11, 0x23, 0x35, 0x3e, 0x01, +0x37, 0x33, 0x11, 0x33, 0x15, 0x21, 0x54, 0x96, +0x72, 0x27, 0x3d, 0x17, 0x24, 0x8b, 0xfe, 0xb2, +0x27, 0x01, 0xcd, 0x1f, 0x06, 0x15, 0x0d, 0xfd, +0xec, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x27, +0x00, 0x00, 0x01, 0xb1, 0x02, 0x45, 0x00, 0x1f, +0x00, 0x41, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x11, 0x2f, 0x1b, 0xb9, 0x00, 0x11, +0x00, 0x0d, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x1e, 0x2f, 0x1b, 0xb9, 0x00, +0x1e, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x1c, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x19, 0xd0, 0xb8, +0x00, 0x00, 0xd0, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x11, 0x10, 0xb9, 0x00, 0x0a, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x37, 0x3e, 0x03, 0x35, 0x34, +0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, +0x01, 0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, +0x07, 0x3e, 0x01, 0x3b, 0x01, 0x15, 0x21, 0x29, +0x4e, 0x76, 0x4e, 0x28, 0x10, 0x22, 0x34, 0x24, +0x2c, 0x4c, 0x1d, 0x1d, 0x24, 0x57, 0x3b, 0x55, +0x5f, 0x2b, 0x4d, 0x69, 0x3e, 0x1b, 0x37, 0x1a, +0xd3, 0xfe, 0x78, 0x1c, 0x42, 0x6a, 0x58, 0x4c, +0x26, 0x1e, 0x33, 0x26, 0x16, 0x30, 0x24, 0x1b, +0x29, 0x36, 0x61, 0x51, 0x2c, 0x52, 0x58, 0x61, +0x39, 0x02, 0x03, 0x28, 0x00, 0x01, 0x00, 0x1d, +0xff, 0xad, 0x01, 0xab, 0x02, 0x47, 0x00, 0x37, +0x00, 0x46, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x25, 0x2f, 0x1b, 0xb9, 0x00, 0x25, +0x00, 0x0d, 0x3e, 0x59, 0xbb, 0x00, 0x0b, 0x00, +0x01, 0x00, 0x00, 0x00, 0x04, 0x2b, 0xba, 0x00, +0x15, 0x00, 0x25, 0x00, 0x00, 0x11, 0x12, 0x39, +0xb8, 0x00, 0x15, 0x2f, 0xb9, 0x00, 0x16, 0x00, +0x01, 0xf4, 0xb8, 0x00, 0x25, 0x10, 0xb9, 0x00, +0x1e, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x2d, 0x00, +0x16, 0x00, 0x15, 0x11, 0x12, 0x39, 0x30, 0x31, +0x17, 0x22, 0x2e, 0x02, 0x27, 0x37, 0x1e, 0x03, +0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, +0x23, 0x35, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, +0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, 0x01, 0x33, +0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, 0x15, +0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0xe8, 0x26, +0x3e, 0x31, 0x27, 0x0f, 0x1a, 0x0e, 0x22, 0x2b, +0x35, 0x21, 0x20, 0x37, 0x28, 0x16, 0x19, 0x35, +0x55, 0x3c, 0x37, 0x4d, 0x2f, 0x15, 0x46, 0x3b, +0x2d, 0x4a, 0x1c, 0x1a, 0x21, 0x54, 0x38, 0x25, +0x40, 0x2f, 0x1b, 0x45, 0x35, 0x1e, 0x34, 0x28, +0x17, 0x1e, 0x35, 0x47, 0x53, 0x10, 0x1a, 0x20, +0x10, 0x1f, 0x10, 0x1d, 0x17, 0x0e, 0x14, 0x26, +0x34, 0x20, 0x21, 0x36, 0x27, 0x16, 0x27, 0x16, +0x26, 0x33, 0x1d, 0x36, 0x41, 0x28, 0x1e, 0x1f, +0x20, 0x2e, 0x15, 0x28, 0x39, 0x25, 0x3f, 0x4e, +0x12, 0x04, 0x06, 0x1c, 0x2b, 0x38, 0x22, 0x2a, +0x43, 0x2f, 0x19, 0x00, 0x00, 0x02, 0x00, 0x10, +0xff, 0xb9, 0x01, 0xc0, 0x02, 0x3b, 0x00, 0x09, +0x00, 0x14, 0x00, 0x48, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x12, 0x2f, 0x1b, 0xb9, +0x00, 0x12, 0x00, 0x0d, 0x3e, 0x59, 0xbb, 0x00, +0x00, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x04, 0x2b, +0xba, 0x00, 0x04, 0x00, 0x12, 0x00, 0x0d, 0x11, +0x12, 0x39, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, +0x09, 0xd0, 0xb8, 0x00, 0x0e, 0x10, 0xb8, 0x00, +0x0b, 0xd0, 0xb8, 0x00, 0x09, 0x10, 0xb8, 0x00, +0x10, 0xd0, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, +0x13, 0xd0, 0x30, 0x31, 0x25, 0x35, 0x34, 0x36, +0x37, 0x23, 0x0e, 0x01, 0x07, 0x03, 0x05, 0x23, +0x15, 0x23, 0x35, 0x21, 0x35, 0x01, 0x33, 0x11, +0x33, 0x01, 0x36, 0x02, 0x02, 0x04, 0x0c, 0x1a, +0x0e, 0xbc, 0x01, 0x7a, 0x5f, 0x2b, 0xfe, 0xda, +0x01, 0x29, 0x28, 0x5f, 0x8c, 0xfe, 0x17, 0x3e, +0x16, 0x16, 0x2d, 0x16, 0xfe, 0xf0, 0x27, 0xac, +0xac, 0x1b, 0x01, 0xbb, 0xfe, 0x51, 0x00, 0x00, +0x00, 0x01, 0x00, 0x1a, 0xff, 0xad, 0x01, 0xaf, +0x02, 0x3b, 0x00, 0x28, 0x00, 0x3c, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x18, 0x2f, +0x1b, 0xb9, 0x00, 0x18, 0x00, 0x0d, 0x3e, 0x59, +0xbb, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x00, 0x00, +0x04, 0x2b, 0xba, 0x00, 0x13, 0x00, 0x18, 0x00, +0x00, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x18, 0x10, +0xb9, 0x00, 0x1b, 0x00, 0x01, 0xf4, 0xb8, 0x00, +0x13, 0x10, 0xb9, 0x00, 0x1f, 0x00, 0x01, 0xf4, +0x30, 0x31, 0x17, 0x22, 0x2e, 0x02, 0x27, 0x37, +0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, +0x26, 0x23, 0x22, 0x06, 0x07, 0x27, 0x13, 0x21, +0x15, 0x23, 0x07, 0x3e, 0x01, 0x33, 0x32, 0x1e, +0x02, 0x15, 0x14, 0x0e, 0x02, 0xe3, 0x26, 0x3d, +0x31, 0x26, 0x0f, 0x19, 0x0e, 0x22, 0x2a, 0x34, +0x21, 0x20, 0x3a, 0x2b, 0x1a, 0x54, 0x48, 0x25, +0x35, 0x1d, 0x1f, 0x17, 0x01, 0x27, 0xff, 0x14, +0x19, 0x36, 0x23, 0x28, 0x48, 0x34, 0x1f, 0x23, +0x39, 0x49, 0x53, 0x0f, 0x19, 0x1f, 0x10, 0x1e, +0x0f, 0x1c, 0x16, 0x0d, 0x19, 0x2e, 0x3f, 0x27, +0x4e, 0x57, 0x17, 0x13, 0x13, 0x01, 0x2c, 0x28, +0xe7, 0x0e, 0x13, 0x18, 0x31, 0x4d, 0x34, 0x33, +0x50, 0x37, 0x1c, 0x00, 0xff, 0xff, 0x00, 0x36, +0xff, 0xf4, 0x01, 0xb6, 0x02, 0x8b, 0x02, 0x06, +0x04, 0x47, 0x02, 0x00, 0x00, 0x01, 0x00, 0x2c, +0xff, 0xb9, 0x01, 0xb5, 0x02, 0x3b, 0x00, 0x0f, +0x00, 0x22, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x07, 0x2f, 0x1b, 0xb9, 0x00, 0x07, +0x00, 0x0d, 0x3e, 0x59, 0xb9, 0x00, 0x05, 0x00, +0x01, 0xf4, 0xb8, 0x00, 0x09, 0xd0, 0xb8, 0x00, +0x09, 0x2f, 0x30, 0x31, 0x17, 0x3e, 0x03, 0x37, +0x21, 0x35, 0x21, 0x15, 0x0e, 0x03, 0x07, 0x23, +0xbc, 0x04, 0x19, 0x2e, 0x46, 0x30, 0xfe, 0xaf, +0x01, 0x89, 0x39, 0x4b, 0x2d, 0x14, 0x04, 0x30, +0x47, 0x61, 0xa1, 0x90, 0x84, 0x44, 0x28, 0x1b, +0x4c, 0x8d, 0x92, 0x9e, 0x5e, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x28, 0xff, 0xf4, 0x01, 0xb5, +0x02, 0x8b, 0x02, 0x06, 0x04, 0x49, 0x00, 0x00, +0x00, 0x02, 0x00, 0x21, 0xff, 0xad, 0x01, 0xab, +0x02, 0x47, 0x00, 0x11, 0x00, 0x2f, 0x00, 0x32, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x24, 0x2f, 0x1b, 0xb9, 0x00, 0x24, 0x00, 0x0d, +0x3e, 0x59, 0xbb, 0x00, 0x14, 0x00, 0x01, 0x00, +0x2c, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x00, 0x00, +0x01, 0x00, 0x1c, 0x00, 0x04, 0x2b, 0xb8, 0x00, +0x24, 0x10, 0xb9, 0x00, 0x08, 0x00, 0x01, 0xf4, +0x30, 0x31, 0x37, 0x32, 0x36, 0x37, 0x2e, 0x03, +0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, +0x07, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x0e, +0x01, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, +0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, +0x22, 0x26, 0x27, 0xdb, 0x26, 0x55, 0x28, 0x02, +0x16, 0x29, 0x3d, 0x28, 0x1e, 0x33, 0x25, 0x15, +0x0f, 0x22, 0x36, 0x63, 0x30, 0x44, 0x24, 0x41, +0x32, 0x20, 0x02, 0x21, 0x56, 0x31, 0x59, 0x5c, +0x1e, 0x32, 0x43, 0x25, 0x63, 0x6f, 0x25, 0x3f, +0x54, 0x2e, 0x2e, 0x43, 0x1b, 0xce, 0x2c, 0x36, +0x36, 0x59, 0x3f, 0x23, 0x1a, 0x2f, 0x3e, 0x24, +0x24, 0x3e, 0x2d, 0x19, 0xc6, 0x34, 0x1f, 0x47, +0x73, 0x54, 0x29, 0x2f, 0x6a, 0x63, 0x2d, 0x4d, +0x38, 0x1f, 0x9f, 0x90, 0x63, 0x8b, 0x56, 0x27, +0x20, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x38, +0xff, 0xf4, 0x01, 0xb6, 0x02, 0x47, 0x00, 0x06, +0x04, 0x59, 0x08, 0x00, 0x00, 0x01, 0x00, 0x39, +0x00, 0x00, 0x00, 0xd8, 0x02, 0x3b, 0x00, 0x08, +0x00, 0x35, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, 0x05, +0x00, 0x0d, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x07, 0x2f, 0x1b, 0xb9, 0x00, +0x07, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x05, +0x10, 0xb9, 0x00, 0x02, 0x00, 0x01, 0xf4, 0xb9, +0x00, 0x00, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, +0x23, 0x35, 0x3e, 0x01, 0x37, 0x33, 0x11, 0x23, +0xac, 0x73, 0x28, 0x3c, 0x17, 0x24, 0x2c, 0x01, +0xf4, 0x1f, 0x06, 0x15, 0x0d, 0xfd, 0xc5, 0x00, +0x00, 0x01, 0x00, 0x2e, 0x00, 0x00, 0x01, 0xaf, +0x02, 0x45, 0x00, 0x1f, 0x00, 0x41, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x11, 0x2f, +0x1b, 0xb9, 0x00, 0x11, 0x00, 0x0d, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1e, +0x2f, 0x1b, 0xb9, 0x00, 0x1e, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x1c, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x19, 0xd0, 0xb8, 0x00, 0x00, 0xd0, 0xb8, +0x00, 0x00, 0x2f, 0xb8, 0x00, 0x11, 0x10, 0xb9, +0x00, 0x0a, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x37, +0x3e, 0x03, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, +0x06, 0x07, 0x27, 0x3e, 0x01, 0x33, 0x32, 0x16, +0x15, 0x14, 0x0e, 0x02, 0x07, 0x3e, 0x01, 0x3b, +0x01, 0x15, 0x21, 0x31, 0x4e, 0x73, 0x4c, 0x25, +0x0f, 0x21, 0x33, 0x24, 0x2c, 0x48, 0x1d, 0x1d, +0x24, 0x53, 0x3b, 0x55, 0x5b, 0x29, 0x49, 0x67, +0x3d, 0x1a, 0x37, 0x1a, 0xca, 0xfe, 0x82, 0x1c, +0x42, 0x6a, 0x58, 0x4c, 0x26, 0x1e, 0x33, 0x26, +0x16, 0x30, 0x24, 0x1b, 0x28, 0x37, 0x61, 0x51, +0x2c, 0x52, 0x58, 0x61, 0x39, 0x02, 0x03, 0x28, +0xff, 0xff, 0x00, 0x1d, 0xff, 0xad, 0x01, 0xab, +0x02, 0x47, 0x02, 0x06, 0x04, 0x5c, 0x00, 0x00, +0xff, 0xff, 0x00, 0x18, 0xff, 0xb9, 0x01, 0xc8, +0x02, 0x3b, 0x00, 0x06, 0x04, 0x5d, 0x08, 0x00, +0xff, 0xff, 0x00, 0x1a, 0xff, 0xad, 0x01, 0xaf, +0x02, 0x3b, 0x02, 0x06, 0x04, 0x5e, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3e, 0xff, 0xf4, 0x01, 0xbe, +0x02, 0x8b, 0x00, 0x06, 0x04, 0x47, 0x0a, 0x00, +0x00, 0x01, 0x00, 0x2c, 0xff, 0xb9, 0x01, 0xa7, +0x02, 0x3b, 0x00, 0x0f, 0x00, 0x22, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, 0x2f, +0x1b, 0xb9, 0x00, 0x07, 0x00, 0x0d, 0x3e, 0x59, +0xb9, 0x00, 0x05, 0x00, 0x01, 0xf4, 0xb8, 0x00, +0x09, 0xd0, 0xb8, 0x00, 0x09, 0x2f, 0x30, 0x31, +0x17, 0x3e, 0x03, 0x37, 0x21, 0x35, 0x21, 0x15, +0x0e, 0x03, 0x07, 0x23, 0xb1, 0x04, 0x19, 0x2d, +0x44, 0x30, 0xfe, 0xbd, 0x01, 0x7b, 0x39, 0x49, +0x2c, 0x14, 0x04, 0x30, 0x47, 0x61, 0xa1, 0x90, +0x84, 0x44, 0x28, 0x1b, 0x4c, 0x8d, 0x91, 0x9f, +0x5e, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x30, +0xff, 0xf4, 0x01, 0xbd, 0x02, 0x8b, 0x00, 0x06, +0x04, 0x49, 0x08, 0x00, 0xff, 0xff, 0x00, 0x29, +0xff, 0xad, 0x01, 0xb3, 0x02, 0x47, 0x00, 0x06, +0x04, 0x62, 0x08, 0x00, 0x00, 0x02, 0x00, 0x30, +0xff, 0xf4, 0x01, 0xae, 0x02, 0x9f, 0x00, 0x0b, +0x00, 0x17, 0x00, 0x35, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x06, 0x2f, 0x1b, 0xb9, +0x00, 0x06, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, +0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, 0xb9, +0x00, 0x0c, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x06, +0x10, 0xb9, 0x00, 0x12, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x17, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, +0x32, 0x16, 0x15, 0x14, 0x06, 0x27, 0x32, 0x36, +0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, +0x16, 0xef, 0x59, 0x66, 0x66, 0x59, 0x59, 0x66, +0x65, 0x5a, 0x43, 0x4f, 0x4f, 0x43, 0x42, 0x50, +0x50, 0x0c, 0xaa, 0xae, 0xac, 0xa7, 0xa7, 0xac, +0xaf, 0xa9, 0x26, 0x9a, 0x98, 0x95, 0x98, 0x98, +0x95, 0x98, 0x9a, 0x00, 0x00, 0x01, 0x00, 0x54, +0x00, 0x00, 0x01, 0xa2, 0x02, 0x93, 0x00, 0x0c, +0x00, 0x43, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x07, 0x2f, 0x1b, 0xb9, 0x00, 0x07, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0c, 0x2f, 0x1b, 0xb9, 0x00, +0x0c, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x00, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x07, 0x10, 0xb9, +0x00, 0x04, 0x00, 0x01, 0xf4, 0xb9, 0x00, 0x02, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x0a, 0xd0, 0x30, 0x31, 0x37, 0x33, 0x11, +0x23, 0x35, 0x3e, 0x01, 0x37, 0x33, 0x11, 0x33, +0x15, 0x21, 0x54, 0x96, 0x72, 0x27, 0x3d, 0x17, +0x24, 0x8b, 0xfe, 0xb2, 0x27, 0x02, 0x25, 0x1f, +0x06, 0x15, 0x0d, 0xfd, 0x94, 0x27, 0x00, 0x00, +0x00, 0x01, 0x00, 0x27, 0x00, 0x00, 0x01, 0xb1, +0x02, 0x9f, 0x00, 0x1f, 0x00, 0x41, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x11, 0x2f, +0x1b, 0xb9, 0x00, 0x11, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1e, +0x2f, 0x1b, 0xb9, 0x00, 0x1e, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x1c, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x19, 0xd0, 0xb8, 0x00, 0x00, 0xd0, 0xb8, +0x00, 0x00, 0x2f, 0xb8, 0x00, 0x11, 0x10, 0xb9, +0x00, 0x0a, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x37, +0x3e, 0x03, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, +0x06, 0x07, 0x27, 0x3e, 0x01, 0x33, 0x32, 0x16, +0x15, 0x14, 0x0e, 0x02, 0x07, 0x3e, 0x01, 0x3b, +0x01, 0x15, 0x21, 0x29, 0x55, 0x78, 0x4b, 0x23, +0x10, 0x23, 0x34, 0x24, 0x2c, 0x4c, 0x1d, 0x1d, +0x24, 0x57, 0x3b, 0x56, 0x5e, 0x27, 0x4b, 0x6b, +0x43, 0x1b, 0x37, 0x1a, 0xd4, 0xfe, 0x78, 0x1c, +0x49, 0x7f, 0x6f, 0x62, 0x2d, 0x1f, 0x37, 0x29, +0x17, 0x2f, 0x24, 0x1b, 0x29, 0x36, 0x67, 0x55, +0x35, 0x6a, 0x6d, 0x75, 0x3f, 0x02, 0x03, 0x28, +0x00, 0x01, 0x00, 0x1d, 0xff, 0xf4, 0x01, 0xab, +0x02, 0xa0, 0x00, 0x37, 0x00, 0x53, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x25, 0x2f, +0x1b, 0xb9, 0x00, 0x25, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x0b, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x15, 0x00, 0x25, 0x00, 0x00, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x15, 0x10, 0xb9, 0x00, 0x16, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x25, 0x10, 0xb9, +0x00, 0x1e, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x2e, +0x00, 0x15, 0x00, 0x16, 0x11, 0x12, 0x39, 0x30, +0x31, 0x17, 0x22, 0x2e, 0x02, 0x27, 0x37, 0x1e, +0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, +0x02, 0x23, 0x35, 0x32, 0x3e, 0x02, 0x35, 0x34, +0x26, 0x27, 0x0e, 0x01, 0x07, 0x27, 0x3e, 0x01, +0x37, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, +0x15, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0xe8, +0x26, 0x3e, 0x31, 0x27, 0x0f, 0x1a, 0x0e, 0x22, +0x2b, 0x35, 0x21, 0x20, 0x37, 0x28, 0x16, 0x19, +0x35, 0x55, 0x3c, 0x37, 0x4d, 0x2f, 0x15, 0x46, +0x3b, 0x2d, 0x4a, 0x1c, 0x1a, 0x21, 0x54, 0x38, +0x25, 0x40, 0x2f, 0x1b, 0x45, 0x35, 0x1e, 0x34, +0x28, 0x17, 0x1e, 0x35, 0x47, 0x0c, 0x10, 0x1a, +0x20, 0x10, 0x1f, 0x10, 0x1d, 0x17, 0x0e, 0x15, +0x26, 0x37, 0x21, 0x22, 0x38, 0x28, 0x16, 0x27, +0x17, 0x27, 0x35, 0x1e, 0x38, 0x42, 0x01, 0x01, +0x28, 0x1d, 0x1f, 0x20, 0x2d, 0x01, 0x16, 0x29, +0x3b, 0x25, 0x42, 0x51, 0x11, 0x04, 0x06, 0x1d, +0x2c, 0x39, 0x23, 0x2b, 0x45, 0x30, 0x1a, 0x00, +0x00, 0x02, 0x00, 0x10, 0x00, 0x00, 0x01, 0xc0, +0x02, 0x93, 0x00, 0x09, 0x00, 0x14, 0x00, 0x55, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x11, 0x2f, 0x1b, 0xb9, 0x00, 0x11, 0x00, 0x11, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0d, 0x2f, 0x1b, 0xb9, 0x00, 0x0d, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x00, 0x00, 0x01, +0x00, 0x0e, 0x00, 0x04, 0x2b, 0xba, 0x00, 0x04, +0x00, 0x11, 0x00, 0x0d, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x0e, 0x10, 0xb8, 0x00, 0x0a, 0xd0, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x10, 0xd0, 0xb8, +0x00, 0x10, 0x2f, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x14, 0xd0, 0x30, 0x31, 0x25, 0x35, 0x34, +0x36, 0x37, 0x23, 0x0e, 0x01, 0x07, 0x03, 0x05, +0x23, 0x15, 0x23, 0x35, 0x21, 0x35, 0x01, 0x33, +0x11, 0x33, 0x01, 0x36, 0x02, 0x02, 0x04, 0x0c, +0x1a, 0x0e, 0xbc, 0x01, 0x7a, 0x5f, 0x2b, 0xfe, +0xda, 0x01, 0x29, 0x28, 0x5f, 0xe5, 0xfd, 0x17, +0x3e, 0x16, 0x16, 0x2d, 0x16, 0xfe, 0xf1, 0x27, +0xbe, 0xbe, 0x1b, 0x01, 0xba, 0xfe, 0x52, 0x00, +0x00, 0x01, 0x00, 0x1a, 0xff, 0xf4, 0x01, 0xaf, +0x02, 0x93, 0x00, 0x28, 0x00, 0x49, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x18, 0x2f, +0x1b, 0xb9, 0x00, 0x18, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x0b, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x13, 0x00, 0x18, 0x00, 0x00, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x18, 0x10, 0xb9, 0x00, 0x1a, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x13, 0x10, 0xb9, +0x00, 0x1f, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, +0x22, 0x2e, 0x02, 0x27, 0x37, 0x1e, 0x03, 0x33, +0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, 0x22, +0x06, 0x07, 0x27, 0x13, 0x21, 0x15, 0x23, 0x07, +0x3e, 0x01, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, +0x0e, 0x02, 0xe3, 0x26, 0x3d, 0x31, 0x26, 0x0f, +0x19, 0x0e, 0x22, 0x2a, 0x34, 0x21, 0x20, 0x3a, +0x2b, 0x1a, 0x54, 0x48, 0x25, 0x35, 0x1d, 0x1f, +0x17, 0x01, 0x27, 0xff, 0x14, 0x19, 0x36, 0x23, +0x28, 0x48, 0x34, 0x1f, 0x23, 0x39, 0x49, 0x0c, +0x0f, 0x19, 0x1f, 0x0f, 0x1f, 0x0f, 0x1c, 0x16, +0x0d, 0x1a, 0x30, 0x43, 0x29, 0x51, 0x5d, 0x16, +0x14, 0x13, 0x01, 0x2b, 0x28, 0xe6, 0x0f, 0x12, +0x19, 0x34, 0x4f, 0x37, 0x36, 0x53, 0x39, 0x1d, +0x00, 0x02, 0x00, 0x36, 0xff, 0xf4, 0x01, 0xb6, +0x02, 0x9f, 0x00, 0x11, 0x00, 0x30, 0x00, 0x43, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x2d, 0x2f, 0x1b, 0xb9, 0x00, 0x2d, 0x00, 0x11, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x25, 0x2f, 0x1b, 0xb9, 0x00, 0x25, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x1d, 0x00, 0x01, +0x00, 0x0a, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x25, +0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x2d, 0x10, 0xb9, 0x00, 0x15, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x25, 0x32, 0x3e, 0x02, 0x35, +0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x1e, +0x03, 0x13, 0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, +0x07, 0x3e, 0x01, 0x33, 0x32, 0x16, 0x15, 0x14, +0x0e, 0x02, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x32, 0x16, 0x17, 0x01, 0x08, 0x1c, +0x2f, 0x22, 0x14, 0x10, 0x21, 0x35, 0x24, 0x22, +0x52, 0x27, 0x03, 0x16, 0x28, 0x3c, 0xac, 0x15, +0x38, 0x1f, 0x26, 0x44, 0x34, 0x1f, 0x01, 0x21, +0x53, 0x2d, 0x55, 0x5d, 0x1c, 0x30, 0x40, 0x23, +0x61, 0x70, 0x27, 0x41, 0x55, 0x2e, 0x2d, 0x41, +0x19, 0x1a, 0x1a, 0x2f, 0x3e, 0x24, 0x25, 0x3e, +0x2e, 0x1a, 0x2c, 0x34, 0x37, 0x5b, 0x40, 0x24, +0x02, 0x29, 0x1a, 0x1b, 0x20, 0x4a, 0x78, 0x58, +0x28, 0x2f, 0x69, 0x67, 0x2d, 0x4d, 0x38, 0x1f, +0xa6, 0x9b, 0x64, 0x8b, 0x55, 0x26, 0x22, 0x1c, +0x00, 0x01, 0x00, 0x2c, 0x00, 0x00, 0x01, 0xb5, +0x02, 0x93, 0x00, 0x0f, 0x00, 0x37, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, 0x2f, +0x1b, 0xb9, 0x00, 0x07, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x07, 0x10, 0xb9, 0x00, 0x05, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x09, 0xd0, 0xb8, +0x00, 0x09, 0x2f, 0x30, 0x31, 0x33, 0x3e, 0x03, +0x37, 0x21, 0x35, 0x21, 0x15, 0x0e, 0x03, 0x07, +0x23, 0xbc, 0x04, 0x18, 0x2e, 0x45, 0x32, 0xfe, +0xaf, 0x01, 0x89, 0x3b, 0x4b, 0x2c, 0x13, 0x04, +0x30, 0x64, 0xa6, 0x94, 0x88, 0x45, 0x28, 0x1b, +0x4d, 0x91, 0x96, 0xa3, 0x61, 0x00, 0x00, 0x00, +0x00, 0x03, 0x00, 0x28, 0xff, 0xf4, 0x01, 0xb5, +0x02, 0x9b, 0x00, 0x29, 0x00, 0x3b, 0x00, 0x4d, +0x00, 0x4d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x15, 0x2f, 0x1b, 0xb9, 0x00, 0x15, +0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x2a, +0x00, 0x00, 0x00, 0x15, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x15, 0x10, 0xb9, 0x00, 0x32, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x3c, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x46, 0x00, 0x15, +0x00, 0x00, 0x11, 0x12, 0x39, 0x30, 0x31, 0x17, +0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, +0x35, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, +0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, +0x15, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x13, +0x3e, 0x01, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, +0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x03, 0x32, +0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x0e, +0x01, 0x15, 0x14, 0x1e, 0x02, 0xf3, 0x2c, 0x4a, +0x36, 0x1f, 0x17, 0x25, 0x2d, 0x17, 0x12, 0x21, +0x19, 0x10, 0x1a, 0x2d, 0x3d, 0x23, 0x29, 0x40, +0x2d, 0x17, 0x12, 0x1b, 0x20, 0x0e, 0x15, 0x28, +0x20, 0x13, 0x1c, 0x33, 0x48, 0x04, 0x29, 0x2b, +0x12, 0x21, 0x31, 0x1f, 0x1b, 0x2d, 0x21, 0x12, +0x1d, 0x30, 0x3d, 0x0f, 0x22, 0x37, 0x27, 0x15, +0x21, 0x37, 0x46, 0x25, 0x32, 0x3f, 0x18, 0x2a, +0x3a, 0x0c, 0x1b, 0x2f, 0x40, 0x26, 0x22, 0x3a, +0x30, 0x25, 0x0c, 0x04, 0x0c, 0x1e, 0x25, 0x2c, +0x1a, 0x24, 0x3b, 0x2a, 0x18, 0x1a, 0x2e, 0x3f, +0x25, 0x1b, 0x31, 0x2b, 0x23, 0x0b, 0x04, 0x0d, +0x1f, 0x29, 0x34, 0x22, 0x23, 0x3d, 0x2d, 0x1a, +0x01, 0x63, 0x21, 0x4c, 0x2a, 0x1b, 0x32, 0x25, +0x16, 0x13, 0x21, 0x2d, 0x1b, 0x23, 0x32, 0x25, +0x1d, 0xfe, 0xb6, 0x14, 0x24, 0x30, 0x1b, 0x27, +0x36, 0x29, 0x1f, 0x0f, 0x1d, 0x56, 0x37, 0x1e, +0x33, 0x26, 0x16, 0x00, 0x00, 0x02, 0x00, 0x2b, +0xff, 0xf4, 0x01, 0xaa, 0x02, 0x9f, 0x00, 0x11, +0x00, 0x2f, 0x00, 0x43, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x24, 0x2f, 0x1b, 0xb9, +0x00, 0x24, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x2c, 0x2f, 0x1b, +0xb9, 0x00, 0x2c, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x00, 0x00, 0x01, 0x00, 0x1c, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x24, 0x10, 0xb9, 0x00, 0x08, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x2c, 0x10, 0xb9, +0x00, 0x14, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, +0x32, 0x36, 0x37, 0x2e, 0x03, 0x23, 0x22, 0x0e, +0x02, 0x15, 0x14, 0x1e, 0x02, 0x07, 0x16, 0x33, +0x32, 0x3e, 0x02, 0x37, 0x0e, 0x01, 0x23, 0x22, +0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, +0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, +0xe0, 0x26, 0x52, 0x26, 0x02, 0x16, 0x28, 0x3d, +0x29, 0x1c, 0x2f, 0x23, 0x13, 0x10, 0x21, 0x34, +0x69, 0x2f, 0x45, 0x23, 0x41, 0x31, 0x20, 0x02, +0x21, 0x52, 0x30, 0x53, 0x5d, 0x1c, 0x30, 0x3f, +0x24, 0x60, 0x70, 0x26, 0x3f, 0x53, 0x2c, 0x30, +0x44, 0x1a, 0x01, 0x23, 0x2e, 0x34, 0x37, 0x5a, +0x40, 0x23, 0x1a, 0x2e, 0x3f, 0x24, 0x24, 0x3f, +0x2e, 0x1a, 0xd3, 0x35, 0x21, 0x4a, 0x78, 0x58, +0x27, 0x31, 0x6b, 0x65, 0x2e, 0x4c, 0x38, 0x1f, +0x9c, 0x93, 0x6a, 0x91, 0x5a, 0x27, 0x22, 0x1c, +0x00, 0x01, 0x00, 0x43, 0xff, 0xf4, 0x00, 0x98, +0x00, 0x4f, 0x00, 0x0b, 0x00, 0x18, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x06, 0xdc, 0x30, 0x31, 0x17, 0x22, +0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, +0x14, 0x06, 0x6e, 0x11, 0x1a, 0x1a, 0x11, 0x11, +0x19, 0x19, 0x0c, 0x18, 0x15, 0x16, 0x18, 0x18, +0x16, 0x15, 0x18, 0x00, 0x00, 0x01, 0x00, 0x30, +0xff, 0x65, 0x00, 0xa5, 0x00, 0x4f, 0x00, 0x11, +0x00, 0x18, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, 0x05, +0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x0b, 0xdc, +0x30, 0x31, 0x17, 0x3e, 0x01, 0x37, 0x06, 0x23, +0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, +0x15, 0x14, 0x06, 0x07, 0x30, 0x22, 0x2a, 0x01, +0x04, 0x08, 0x11, 0x19, 0x1a, 0x11, 0x17, 0x1c, +0x3a, 0x2d, 0x7d, 0x12, 0x3d, 0x2a, 0x01, 0x16, +0x14, 0x14, 0x16, 0x26, 0x21, 0x37, 0x54, 0x18, +0xff, 0xff, 0x00, 0x43, 0xff, 0xf4, 0x00, 0x98, +0x01, 0xcd, 0x02, 0x27, 0x04, 0x77, 0x00, 0x00, +0x01, 0x7e, 0x00, 0x06, 0x04, 0x77, 0x00, 0x00, +0xff, 0xff, 0x00, 0x30, 0xff, 0x65, 0x00, 0xa5, +0x01, 0xcd, 0x02, 0x27, 0x04, 0x77, 0x00, 0x00, +0x01, 0x7e, 0x00, 0x06, 0x04, 0x78, 0x00, 0x00, +0xff, 0xff, 0x00, 0x68, 0xff, 0xf4, 0x03, 0x5f, +0x00, 0x4f, 0x00, 0x26, 0x04, 0x77, 0x25, 0x00, +0x00, 0x27, 0x04, 0x77, 0x01, 0x76, 0x00, 0x00, +0x00, 0x07, 0x04, 0x77, 0x02, 0xc7, 0x00, 0x00, +0x00, 0x02, 0x00, 0x57, 0xff, 0xf4, 0x00, 0xac, +0x02, 0x9e, 0x00, 0x05, 0x00, 0x11, 0x00, 0x1c, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, 0x05, +0x3e, 0x59, 0xb8, 0x00, 0x0c, 0xdc, 0xb8, 0x00, +0x05, 0xdc, 0x30, 0x31, 0x13, 0x35, 0x33, 0x07, +0x03, 0x23, 0x17, 0x22, 0x26, 0x35, 0x34, 0x36, +0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x6b, 0x2e, +0x01, 0x06, 0x21, 0x11, 0x11, 0x1a, 0x1a, 0x11, +0x11, 0x19, 0x19, 0x02, 0x57, 0x47, 0x47, 0xfe, +0x5c, 0xbf, 0x18, 0x15, 0x16, 0x18, 0x18, 0x16, +0x15, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x57, +0xff, 0x42, 0x00, 0xac, 0x01, 0xec, 0x00, 0x05, +0x00, 0x11, 0x00, 0x1c, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0c, 0x2f, 0x1b, 0xb9, +0x00, 0x0c, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x06, 0xdc, 0xb8, 0x00, 0x01, 0xdc, 0x30, 0x31, +0x17, 0x13, 0x33, 0x13, 0x17, 0x23, 0x13, 0x22, +0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, +0x14, 0x06, 0x6b, 0x06, 0x21, 0x06, 0x01, 0x2e, +0x17, 0x11, 0x1a, 0x1a, 0x11, 0x11, 0x19, 0x19, +0x77, 0x01, 0xa4, 0xfe, 0x5c, 0x47, 0x02, 0x4f, +0x18, 0x17, 0x14, 0x18, 0x18, 0x14, 0x17, 0x18, +0x00, 0x02, 0x00, 0x25, 0xff, 0xf4, 0x01, 0x60, +0x02, 0xaa, 0x00, 0x1f, 0x00, 0x2b, 0x00, 0x2a, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x20, 0x2f, 0x1b, 0xb9, 0x00, 0x20, 0x00, 0x05, +0x3e, 0x59, 0xbb, 0x00, 0x13, 0x00, 0x01, 0x00, +0x0c, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x20, 0x10, +0xb8, 0x00, 0x26, 0xdc, 0xb8, 0x00, 0x00, 0xdc, +0x30, 0x31, 0x37, 0x26, 0x3e, 0x04, 0x35, 0x34, +0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, +0x01, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, +0x04, 0x17, 0x07, 0x22, 0x26, 0x35, 0x34, 0x36, +0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0xa3, 0x06, +0x11, 0x20, 0x28, 0x24, 0x18, 0x0d, 0x1c, 0x2b, +0x1d, 0x25, 0x43, 0x19, 0x1b, 0x1d, 0x4f, 0x34, +0x24, 0x3a, 0x28, 0x15, 0x19, 0x24, 0x29, 0x21, +0x13, 0x05, 0x11, 0x11, 0x19, 0x19, 0x11, 0x11, +0x1a, 0x1a, 0xb3, 0x29, 0x43, 0x39, 0x32, 0x31, +0x34, 0x1f, 0x17, 0x2b, 0x20, 0x13, 0x21, 0x1f, +0x19, 0x21, 0x2d, 0x17, 0x29, 0x38, 0x21, 0x22, +0x39, 0x34, 0x33, 0x37, 0x3f, 0x26, 0xbf, 0x18, +0x15, 0x16, 0x18, 0x18, 0x16, 0x15, 0x18, 0x00, +0x00, 0x02, 0x00, 0x33, 0xff, 0x36, 0x01, 0x6e, +0x01, 0xec, 0x00, 0x1f, 0x00, 0x2b, 0x00, 0x2a, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x26, 0x2f, 0x1b, 0xb9, 0x00, 0x26, 0x00, 0x09, +0x3e, 0x59, 0xbb, 0x00, 0x19, 0x00, 0x01, 0x00, +0x00, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x26, 0x10, +0xb8, 0x00, 0x20, 0xdc, 0xb8, 0x00, 0x0c, 0xdc, +0x30, 0x31, 0x17, 0x22, 0x2e, 0x02, 0x35, 0x34, +0x3e, 0x04, 0x27, 0x33, 0x16, 0x0e, 0x04, 0x15, +0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x17, +0x0e, 0x01, 0x03, 0x22, 0x26, 0x35, 0x34, 0x36, +0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0xce, 0x25, +0x39, 0x28, 0x15, 0x19, 0x24, 0x29, 0x21, 0x12, +0x05, 0x29, 0x05, 0x11, 0x20, 0x28, 0x24, 0x18, +0x0d, 0x1c, 0x2b, 0x1e, 0x24, 0x43, 0x19, 0x1c, +0x1d, 0x4f, 0x2a, 0x11, 0x19, 0x19, 0x11, 0x11, +0x19, 0x19, 0xca, 0x17, 0x29, 0x38, 0x21, 0x22, +0x39, 0x35, 0x32, 0x37, 0x3f, 0x26, 0x29, 0x43, +0x39, 0x32, 0x31, 0x34, 0x1f, 0x17, 0x2a, 0x21, +0x13, 0x22, 0x1e, 0x19, 0x20, 0x2e, 0x02, 0x5b, +0x18, 0x17, 0x14, 0x18, 0x18, 0x14, 0x17, 0x18, +0x00, 0x01, 0x00, 0x53, 0x01, 0xdd, 0x00, 0x86, +0x02, 0xb5, 0x00, 0x05, 0x00, 0x0b, 0x00, 0xba, +0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x2b, 0x30, +0x31, 0x13, 0x27, 0x33, 0x15, 0x07, 0x23, 0x54, +0x01, 0x33, 0x09, 0x21, 0x02, 0x70, 0x45, 0x45, +0x93, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x53, +0x01, 0xdd, 0x01, 0x13, 0x02, 0xb5, 0x00, 0x26, +0x04, 0x80, 0x00, 0x00, 0x00, 0x07, 0x04, 0x80, +0x00, 0x8d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3a, +0x01, 0xe0, 0x00, 0xa1, 0x02, 0xbf, 0x00, 0x11, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x05, 0x00, 0x02, +0x00, 0x0b, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x0e, 0x01, 0x15, 0x36, 0x33, 0x32, 0x16, 0x15, +0x14, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, +0x37, 0xa1, 0x21, 0x22, 0x02, 0x06, 0x0f, 0x19, +0x17, 0x11, 0x14, 0x18, 0x2d, 0x28, 0x02, 0xa8, +0x1b, 0x36, 0x2b, 0x01, 0x12, 0x13, 0x13, 0x15, +0x23, 0x20, 0x36, 0x4c, 0x1a, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x3a, 0x01, 0xdd, 0x00, 0xa2, +0x02, 0xbc, 0x00, 0x11, 0x00, 0x0d, 0x00, 0xbb, +0x00, 0x0b, 0x00, 0x02, 0x00, 0x05, 0x00, 0x04, +0x2b, 0x30, 0x31, 0x13, 0x3e, 0x01, 0x35, 0x06, +0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, +0x16, 0x15, 0x14, 0x06, 0x07, 0x3a, 0x21, 0x22, +0x02, 0x06, 0x0e, 0x19, 0x16, 0x11, 0x14, 0x19, +0x2d, 0x29, 0x01, 0xf4, 0x1b, 0x36, 0x2b, 0x01, +0x12, 0x13, 0x13, 0x15, 0x23, 0x20, 0x36, 0x4c, +0x1a, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x3a, +0x01, 0xe0, 0x01, 0x2e, 0x02, 0xbf, 0x00, 0x26, +0x04, 0x82, 0x00, 0x00, 0x00, 0x07, 0x04, 0x82, +0x00, 0x8d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x3a, +0x01, 0xdd, 0x01, 0x2f, 0x02, 0xbc, 0x00, 0x26, +0x04, 0x83, 0x00, 0x00, 0x00, 0x07, 0x04, 0x83, +0x00, 0x8d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x3a, +0xff, 0x7e, 0x00, 0xa2, 0x00, 0x5d, 0x02, 0x07, +0x04, 0x83, 0x00, 0x00, 0xfd, 0xa1, 0x00, 0x00, +0xff, 0xff, 0x00, 0x3a, 0xff, 0x7e, 0x01, 0x2f, +0x00, 0x5d, 0x00, 0x27, 0x04, 0x83, 0x00, 0x00, +0xfd, 0xa1, 0x00, 0x07, 0x04, 0x83, 0x00, 0x8d, +0xfd, 0xa1, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2b, +0x00, 0x48, 0x00, 0xcd, 0x01, 0xb0, 0x00, 0x06, +0x00, 0x0b, 0x00, 0xba, 0x00, 0x02, 0x00, 0x06, +0x00, 0x03, 0x2b, 0x30, 0x31, 0x37, 0x35, 0x37, +0x17, 0x07, 0x17, 0x07, 0x2b, 0x89, 0x19, 0x7b, +0x7b, 0x19, 0xe9, 0x26, 0xa1, 0x15, 0x9f, 0xa1, +0x13, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x36, +0x00, 0x48, 0x00, 0xd8, 0x01, 0xb0, 0x00, 0x06, +0x00, 0x0b, 0x00, 0xba, 0x00, 0x03, 0x00, 0x06, +0x00, 0x03, 0x2b, 0x30, 0x31, 0x3f, 0x01, 0x27, +0x37, 0x17, 0x15, 0x07, 0x36, 0x7a, 0x7a, 0x18, +0x8a, 0x8a, 0x5b, 0xa1, 0x9f, 0x15, 0xa1, 0x26, +0xa1, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2b, +0x00, 0x48, 0x01, 0x5a, 0x01, 0xb0, 0x00, 0x26, +0x04, 0x88, 0x00, 0x00, 0x00, 0x07, 0x04, 0x88, +0x00, 0x8d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x36, +0x00, 0x48, 0x01, 0x65, 0x01, 0xb0, 0x00, 0x26, +0x04, 0x89, 0x00, 0x00, 0x00, 0x07, 0x04, 0x89, +0x00, 0x8d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x28, +0x00, 0xe6, 0x01, 0x04, 0x01, 0x0d, 0x00, 0x03, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x02, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x33, 0x15, 0x23, 0x28, 0xdc, 0xdc, 0x01, 0x0d, +0x27, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x28, +0x00, 0xe6, 0x01, 0x04, 0x01, 0x0d, 0x02, 0x06, +0x04, 0x8c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x28, +0x00, 0xe8, 0x01, 0xb8, 0x01, 0x0c, 0x00, 0x03, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x02, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x21, 0x15, 0x21, 0x28, 0x01, 0x90, 0xfe, 0x70, +0x01, 0x0c, 0x24, 0x00, 0x00, 0x01, 0x00, 0x28, +0x00, 0xe8, 0x02, 0xf8, 0x01, 0x0c, 0x00, 0x03, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x02, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x21, 0x15, 0x21, 0x28, 0x02, 0xd0, 0xfd, 0x30, +0x01, 0x0c, 0x24, 0x00, 0x00, 0x01, 0x00, 0x28, +0x00, 0xe8, 0x05, 0xb4, 0x01, 0x0c, 0x00, 0x03, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x02, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x21, 0x15, 0x21, 0x28, 0x05, 0x8c, 0xfa, 0x74, +0x01, 0x0c, 0x24, 0x00, 0x00, 0x01, 0x00, 0x28, +0x00, 0xe8, 0x08, 0x70, 0x01, 0x0c, 0x00, 0x03, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x03, 0x00, 0x01, +0x00, 0x00, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x25, +0x21, 0x35, 0x21, 0x08, 0x70, 0xf7, 0xb8, 0x08, +0x48, 0xe8, 0x24, 0x00, 0x00, 0x01, 0x00, 0x28, +0x00, 0xe8, 0x01, 0xb8, 0x01, 0x0c, 0x00, 0x03, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x02, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x21, 0x15, 0x21, 0x28, 0x01, 0x90, 0xfe, 0x70, +0x01, 0x0c, 0x24, 0x00, 0xff, 0xff, 0x00, 0x28, +0x00, 0xe8, 0x02, 0xf8, 0x01, 0x0c, 0x02, 0x06, +0x04, 0x8f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x43, +0x01, 0x15, 0x00, 0x98, 0x01, 0x70, 0x02, 0x07, +0x04, 0x77, 0x00, 0x00, 0x01, 0x21, 0x00, 0x00, +0x00, 0x01, 0x00, 0x28, 0x00, 0x9a, 0x00, 0xf1, +0x01, 0x76, 0x00, 0x13, 0x00, 0x0b, 0x00, 0xba, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x03, 0x2b, 0x30, +0x31, 0x37, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, +0x02, 0x8c, 0x13, 0x24, 0x1c, 0x11, 0x11, 0x1c, +0x24, 0x13, 0x13, 0x25, 0x1c, 0x11, 0x11, 0x1c, +0x25, 0x9a, 0x0f, 0x1d, 0x28, 0x1a, 0x19, 0x29, +0x1c, 0x10, 0x10, 0x1c, 0x29, 0x19, 0x1a, 0x28, +0x1d, 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0c, +0xff, 0x8b, 0x01, 0xe8, 0xff, 0xb1, 0x00, 0x03, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x02, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x17, +0x21, 0x15, 0x21, 0x0c, 0x01, 0xdc, 0xfe, 0x24, +0x4f, 0x26, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0c, +0x02, 0x39, 0x01, 0xe8, 0x02, 0x60, 0x00, 0x03, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x02, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x21, 0x15, 0x21, 0x0c, 0x01, 0xdc, 0xfe, 0x24, +0x02, 0x60, 0x27, 0x00, 0x00, 0x01, 0xfe, 0x3b, +0xff, 0x16, 0x01, 0xc5, 0xff, 0xb1, 0x00, 0x0d, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x07, 0x00, 0x01, +0x00, 0x00, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x15, +0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, +0x36, 0x37, 0x17, 0x0e, 0x01, 0x83, 0xde, 0x64, +0x10, 0x5f, 0xe0, 0x76, 0x76, 0xe0, 0x5f, 0x10, +0x64, 0xde, 0xea, 0x43, 0x3f, 0x19, 0x3c, 0x3b, +0x3b, 0x3c, 0x19, 0x3f, 0x43, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x58, 0xff, 0x51, 0x00, 0xf7, +0x02, 0xdb, 0x00, 0x0e, 0x00, 0x0b, 0x00, 0xba, +0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x2b, 0x30, +0x31, 0x17, 0x2e, 0x01, 0x35, 0x34, 0x36, 0x37, +0x17, 0x0e, 0x01, 0x15, 0x14, 0x16, 0x17, 0x07, +0xdc, 0x3e, 0x46, 0x46, 0x3e, 0x1b, 0x3c, 0x3c, +0x3c, 0x3c, 0x1b, 0xaf, 0x64, 0xdd, 0x84, 0x84, +0xdd, 0x64, 0x10, 0x5f, 0xdf, 0x77, 0x77, 0xdf, +0x5f, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, +0xff, 0x51, 0x00, 0xbf, 0x02, 0xdb, 0x00, 0x0d, +0x00, 0x0b, 0x00, 0xba, 0x00, 0x07, 0x00, 0x0d, +0x00, 0x03, 0x2b, 0x30, 0x31, 0x17, 0x3e, 0x01, +0x35, 0x34, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x15, +0x14, 0x06, 0x07, 0x20, 0x3c, 0x3c, 0x3c, 0x3c, +0x1b, 0x3d, 0x47, 0x47, 0x3d, 0x9f, 0x5f, 0xdf, +0x77, 0x77, 0xdf, 0x5f, 0x10, 0x64, 0xdd, 0x84, +0x84, 0xdd, 0x64, 0x00, 0x00, 0x01, 0x00, 0x62, +0xff, 0x68, 0x01, 0x02, 0x02, 0xc4, 0x00, 0x07, +0x00, 0x17, 0x00, 0xbb, 0x00, 0x05, 0x00, 0x01, +0x00, 0x06, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x01, +0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x2b, 0x30, +0x31, 0x13, 0x33, 0x15, 0x23, 0x11, 0x33, 0x15, +0x23, 0x62, 0xa0, 0x7d, 0x7d, 0xa0, 0x02, 0xc4, +0x1d, 0xfc, 0xde, 0x1d, 0x00, 0x01, 0x00, 0x15, +0xff, 0x68, 0x00, 0xb5, 0x02, 0xc4, 0x00, 0x07, +0x00, 0x17, 0x00, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x06, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x05, +0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x2b, 0x30, +0x31, 0x17, 0x33, 0x11, 0x23, 0x35, 0x33, 0x11, +0x23, 0x15, 0x7d, 0x7d, 0xa0, 0xa0, 0x7b, 0x03, +0x22, 0x1d, 0xfc, 0xa4, 0x00, 0x01, 0x00, 0x23, +0xff, 0x68, 0x01, 0x02, 0x02, 0xc4, 0x00, 0x34, +0x00, 0x33, 0x00, 0xbb, 0x00, 0x31, 0x00, 0x01, +0x00, 0x00, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x1c, +0x00, 0x01, 0x00, 0x1d, 0x00, 0x04, 0x2b, 0xbb, +0x00, 0x0e, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x04, +0x2b, 0xba, 0x00, 0x28, 0x00, 0x0d, 0x00, 0x0e, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x33, 0xd0, 0x30, 0x31, 0x17, 0x22, 0x2e, +0x02, 0x35, 0x34, 0x36, 0x35, 0x34, 0x2e, 0x02, +0x23, 0x35, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, +0x35, 0x34, 0x3e, 0x02, 0x3b, 0x01, 0x15, 0x23, +0x22, 0x06, 0x15, 0x14, 0x16, 0x15, 0x14, 0x06, +0x07, 0x15, 0x1e, 0x01, 0x15, 0x14, 0x06, 0x15, +0x14, 0x16, 0x3b, 0x01, 0x15, 0x23, 0xe0, 0x1c, +0x29, 0x1c, 0x0e, 0x08, 0x07, 0x13, 0x22, 0x1a, +0x1a, 0x22, 0x13, 0x07, 0x08, 0x0e, 0x1c, 0x29, +0x1c, 0x22, 0x1f, 0x2e, 0x1f, 0x06, 0x15, 0x1e, +0x1e, 0x15, 0x06, 0x1f, 0x2e, 0x1f, 0x22, 0x98, +0x0c, 0x1d, 0x31, 0x26, 0x38, 0x61, 0x34, 0x0f, +0x1e, 0x16, 0x0e, 0x20, 0x0e, 0x16, 0x1c, 0x0f, +0x36, 0x61, 0x38, 0x26, 0x31, 0x1d, 0x0c, 0x1d, +0x32, 0x35, 0x31, 0x59, 0x36, 0x2d, 0x32, 0x09, +0x04, 0x09, 0x34, 0x2b, 0x36, 0x59, 0x31, 0x35, +0x32, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x15, +0xff, 0x68, 0x00, 0xf4, 0x02, 0xc4, 0x00, 0x33, +0x00, 0x2b, 0x00, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x32, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x17, +0x00, 0x01, 0x00, 0x14, 0x00, 0x04, 0x2b, 0xbb, +0x00, 0x24, 0x00, 0x01, 0x00, 0x25, 0x00, 0x04, +0x2b, 0xba, 0x00, 0x0b, 0x00, 0x25, 0x00, 0x24, +0x11, 0x12, 0x39, 0x30, 0x31, 0x17, 0x33, 0x32, +0x36, 0x35, 0x34, 0x26, 0x35, 0x34, 0x36, 0x37, +0x35, 0x2e, 0x01, 0x35, 0x34, 0x36, 0x35, 0x34, +0x26, 0x2b, 0x01, 0x35, 0x33, 0x32, 0x1e, 0x02, +0x15, 0x14, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x33, +0x15, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x15, +0x14, 0x0e, 0x02, 0x2b, 0x01, 0x15, 0x1f, 0x2e, +0x1f, 0x06, 0x16, 0x1d, 0x1d, 0x16, 0x06, 0x1f, +0x2e, 0x1f, 0x22, 0x1c, 0x29, 0x1c, 0x0e, 0x08, +0x07, 0x13, 0x22, 0x1a, 0x1a, 0x22, 0x13, 0x07, +0x08, 0x0e, 0x1c, 0x29, 0x1c, 0x22, 0x7b, 0x32, +0x35, 0x31, 0x59, 0x36, 0x2b, 0x34, 0x09, 0x04, +0x09, 0x32, 0x2d, 0x36, 0x59, 0x31, 0x35, 0x32, +0x1d, 0x0c, 0x1d, 0x31, 0x26, 0x38, 0x61, 0x36, +0x0f, 0x1c, 0x16, 0x0e, 0x20, 0x0e, 0x16, 0x1e, +0x0f, 0x34, 0x61, 0x38, 0x26, 0x31, 0x1d, 0x0c, +0x00, 0x01, 0x00, 0x09, 0xff, 0x60, 0x01, 0x60, +0x02, 0xc6, 0x00, 0x03, 0x00, 0x18, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x02, 0xdc, 0x30, 0x31, 0x01, 0x33, +0x01, 0x23, 0x01, 0x3a, 0x26, 0xfe, 0xcf, 0x26, +0x02, 0xc6, 0xfc, 0x9a, 0x00, 0x01, 0x00, 0x5f, +0xff, 0x06, 0x00, 0x83, 0x02, 0xee, 0x00, 0x03, +0x00, 0x0b, 0x00, 0xba, 0x00, 0x01, 0x00, 0x02, +0x00, 0x03, 0x2b, 0x30, 0x31, 0x13, 0x33, 0x11, +0x23, 0x5f, 0x24, 0x24, 0x02, 0xee, 0xfc, 0x18, +0x00, 0x01, 0x00, 0x05, 0xff, 0x60, 0x01, 0x5d, +0x02, 0xc6, 0x00, 0x03, 0x00, 0x18, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x02, 0xdc, 0x30, 0x31, 0x13, 0x33, +0x01, 0x23, 0x05, 0x26, 0x01, 0x32, 0x26, 0x02, +0xc6, 0xfc, 0x9a, 0x00, 0x00, 0x02, 0x00, 0x5f, +0xff, 0x06, 0x00, 0x83, 0x02, 0xee, 0x00, 0x03, +0x00, 0x07, 0x00, 0x0b, 0x00, 0xba, 0x00, 0x01, +0x00, 0x06, 0x00, 0x03, 0x2b, 0x30, 0x31, 0x13, +0x33, 0x11, 0x23, 0x15, 0x33, 0x11, 0x23, 0x5f, +0x24, 0x24, 0x24, 0x24, 0x02, 0xee, 0xfe, 0x29, +0x3b, 0xfe, 0x2a, 0x00, 0x00, 0x01, 0x00, 0x46, +0x01, 0xce, 0x01, 0x45, 0x02, 0xc8, 0x00, 0x0e, +0x00, 0x14, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, 0x05, +0x00, 0x13, 0x3e, 0x59, 0x30, 0x31, 0x13, 0x37, +0x27, 0x37, 0x17, 0x37, 0x33, 0x17, 0x37, 0x17, +0x07, 0x17, 0x07, 0x27, 0x07, 0x69, 0x37, 0x5a, +0x0a, 0x5e, 0x07, 0x20, 0x07, 0x5f, 0x0a, 0x5a, +0x36, 0x1b, 0x40, 0x42, 0x01, 0xe2, 0x58, 0x24, +0x1e, 0x1a, 0x66, 0x64, 0x18, 0x1e, 0x24, 0x58, +0x14, 0x53, 0x53, 0x00, 0x00, 0x01, 0x00, 0x3c, +0xff, 0xb0, 0x01, 0x69, 0x02, 0xc8, 0x00, 0x0b, +0x00, 0x21, 0x00, 0xbb, 0x00, 0x02, 0x00, 0x01, +0x00, 0x01, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x02, +0x10, 0xb8, 0x00, 0x06, 0xd0, 0xb8, 0x00, 0x06, +0x2f, 0xb8, 0x00, 0x01, 0x10, 0xb8, 0x00, 0x08, +0xd0, 0x30, 0x31, 0x13, 0x07, 0x35, 0x17, 0x27, +0x33, 0x07, 0x37, 0x15, 0x27, 0x13, 0x23, 0xc0, +0x84, 0x84, 0x03, 0x2a, 0x02, 0x84, 0x84, 0x02, +0x2a, 0x02, 0x0a, 0x02, 0x2a, 0x03, 0x99, 0x99, +0x03, 0x2a, 0x02, 0xfd, 0xa6, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x3c, 0xff, 0xb0, 0x01, 0x69, +0x02, 0xc8, 0x00, 0x15, 0x00, 0x47, 0x00, 0xbb, +0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x07, 0x00, 0x01, 0x00, 0x05, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x07, 0x10, 0xb8, +0x00, 0x0b, 0xd0, 0xb8, 0x00, 0x0b, 0x2f, 0xb8, +0x00, 0x05, 0x10, 0xb8, 0x00, 0x0d, 0xd0, 0xb8, +0x00, 0x0d, 0x2f, 0xb8, 0x00, 0x02, 0x10, 0xb8, +0x00, 0x10, 0xd0, 0xb8, 0x00, 0x10, 0x2f, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x12, 0xd0, 0xb8, +0x00, 0x12, 0x2f, 0x30, 0x31, 0x37, 0x07, 0x35, +0x17, 0x27, 0x37, 0x07, 0x35, 0x17, 0x27, 0x33, +0x07, 0x37, 0x15, 0x27, 0x17, 0x07, 0x37, 0x15, +0x27, 0x17, 0x23, 0xc0, 0x84, 0x84, 0x03, 0x03, +0x84, 0x84, 0x03, 0x2a, 0x02, 0x84, 0x84, 0x02, +0x02, 0x84, 0x84, 0x02, 0x2a, 0x49, 0x03, 0x2a, +0x03, 0xcf, 0xcf, 0x03, 0x2a, 0x03, 0x99, 0x99, +0x03, 0x2a, 0x03, 0xcf, 0xcf, 0x03, 0x2a, 0x03, +0x99, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x32, +0xff, 0xcc, 0x01, 0xad, 0x02, 0xa9, 0x00, 0x0f, +0x00, 0x49, 0x00, 0x17, 0x00, 0xbb, 0x00, 0x31, +0x00, 0x01, 0x00, 0x2a, 0x00, 0x04, 0x2b, 0xbb, +0x00, 0x46, 0x00, 0x01, 0x00, 0x13, 0x00, 0x04, +0x2b, 0x30, 0x31, 0x25, 0x3e, 0x01, 0x35, 0x34, +0x2e, 0x02, 0x27, 0x0e, 0x01, 0x15, 0x14, 0x1e, +0x02, 0x13, 0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, +0x15, 0x14, 0x1e, 0x04, 0x15, 0x14, 0x06, 0x07, +0x1e, 0x01, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, +0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, +0x35, 0x34, 0x2e, 0x04, 0x35, 0x34, 0x36, 0x37, +0x2e, 0x01, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, +0x16, 0x17, 0x01, 0x38, 0x24, 0x27, 0x2d, 0x43, +0x4c, 0x1f, 0x22, 0x2a, 0x2d, 0x43, 0x4c, 0x4d, +0x18, 0x35, 0x26, 0x19, 0x24, 0x16, 0x0b, 0x2a, +0x3e, 0x49, 0x3e, 0x2a, 0x31, 0x26, 0x10, 0x12, +0x17, 0x27, 0x34, 0x1d, 0x34, 0x50, 0x1d, 0x1e, +0x1a, 0x3b, 0x2e, 0x2e, 0x36, 0x2a, 0x3f, 0x49, +0x3f, 0x2a, 0x33, 0x26, 0x0f, 0x12, 0x10, 0x22, +0x32, 0x23, 0x2a, 0x46, 0x1c, 0xb5, 0x11, 0x2a, +0x29, 0x28, 0x33, 0x24, 0x1f, 0x14, 0x14, 0x2e, +0x26, 0x27, 0x31, 0x23, 0x1e, 0x01, 0x8b, 0x14, +0x1a, 0x0d, 0x15, 0x1c, 0x0e, 0x21, 0x29, 0x21, +0x1d, 0x29, 0x3c, 0x2e, 0x32, 0x39, 0x15, 0x10, +0x29, 0x1b, 0x1b, 0x2e, 0x21, 0x12, 0x23, 0x1c, +0x1c, 0x18, 0x1e, 0x32, 0x23, 0x22, 0x2b, 0x20, +0x1d, 0x28, 0x3a, 0x2e, 0x30, 0x3f, 0x14, 0x0f, +0x28, 0x1a, 0x15, 0x2a, 0x21, 0x15, 0x1e, 0x17, +0x00, 0x02, 0x00, 0x2a, 0xff, 0xb0, 0x01, 0xa3, +0x02, 0x93, 0x00, 0x03, 0x00, 0x10, 0x00, 0x25, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x11, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0e, 0x2f, 0x1b, 0xb9, 0x00, 0x0e, 0x00, +0x11, 0x3e, 0x59, 0x30, 0x31, 0x01, 0x33, 0x11, +0x23, 0x03, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, +0x02, 0x3b, 0x01, 0x11, 0x01, 0x75, 0x2e, 0x2e, +0x52, 0x37, 0x5c, 0x42, 0x24, 0x22, 0x3e, 0x56, +0x33, 0x2c, 0x02, 0x93, 0xfd, 0x1d, 0x01, 0x44, +0x17, 0x31, 0x4f, 0x38, 0x38, 0x4f, 0x32, 0x17, +0xfe, 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x5f, +0xff, 0x06, 0x01, 0x03, 0x02, 0xee, 0x00, 0x03, +0x00, 0x07, 0x00, 0x1b, 0x00, 0xba, 0x00, 0x01, +0x00, 0x02, 0x00, 0x03, 0x2b, 0xb8, 0x00, 0x01, +0x10, 0xb8, 0x00, 0x04, 0xd0, 0xb8, 0x00, 0x02, +0x10, 0xb8, 0x00, 0x06, 0xd0, 0x30, 0x31, 0x13, +0x33, 0x11, 0x23, 0x13, 0x33, 0x11, 0x23, 0x5f, +0x24, 0x24, 0x80, 0x24, 0x24, 0x02, 0xee, 0xfc, +0x18, 0x03, 0xe8, 0xfc, 0x18, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0xf4, 0x01, 0xa7, +0x02, 0x9e, 0x00, 0x26, 0x04, 0x7c, 0x00, 0x00, +0x00, 0x07, 0x04, 0x7c, 0x00, 0xfb, 0x00, 0x00, +0xff, 0xff, 0x00, 0x25, 0xff, 0xf4, 0x02, 0xda, +0x02, 0xaa, 0x00, 0x26, 0x04, 0x7e, 0x00, 0x00, +0x00, 0x07, 0x04, 0x7e, 0x01, 0x7a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x57, 0xff, 0xf4, 0x02, 0x4b, +0x02, 0xaa, 0x00, 0x26, 0x04, 0x7c, 0x00, 0x00, +0x00, 0x07, 0x04, 0x7e, 0x00, 0xeb, 0x00, 0x00, +0xff, 0xff, 0x00, 0x25, 0xff, 0xf4, 0x02, 0x26, +0x02, 0xaa, 0x00, 0x26, 0x04, 0x7e, 0x00, 0x00, +0x00, 0x07, 0x04, 0x7c, 0x01, 0x7a, 0x00, 0x00, +0x00, 0x02, 0x00, 0x22, 0xff, 0xf4, 0x01, 0x62, +0x02, 0xaa, 0x00, 0x22, 0x00, 0x2e, 0x00, 0x3c, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x29, 0x2f, 0x1b, 0xb9, 0x00, 0x29, 0x00, 0x05, +0x3e, 0x59, 0xbb, 0x00, 0x11, 0x00, 0x01, 0x00, +0x0a, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x29, 0x10, +0xb8, 0x00, 0x23, 0xdc, 0xb8, 0x00, 0x1e, 0xdc, +0xba, 0x00, 0x00, 0x00, 0x11, 0x00, 0x1e, 0x11, +0x12, 0x39, 0xb8, 0x00, 0x0a, 0x10, 0xb8, 0x00, +0x20, 0xdc, 0x30, 0x31, 0x13, 0x3e, 0x03, 0x35, +0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, +0x3e, 0x01, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, +0x0e, 0x04, 0x17, 0x23, 0x03, 0x27, 0x33, 0x15, +0x03, 0x32, 0x16, 0x15, 0x14, 0x06, 0x23, 0x22, +0x26, 0x35, 0x34, 0x36, 0xc9, 0x0e, 0x26, 0x21, +0x17, 0x0e, 0x1c, 0x2c, 0x1e, 0x26, 0x44, 0x1a, +0x1b, 0x1e, 0x50, 0x34, 0x25, 0x3b, 0x28, 0x16, +0x19, 0x25, 0x2a, 0x22, 0x13, 0x05, 0x20, 0x05, +0x02, 0x2b, 0x14, 0x11, 0x1a, 0x1a, 0x11, 0x11, +0x19, 0x19, 0x01, 0x37, 0x1d, 0x31, 0x32, 0x35, +0x21, 0x18, 0x2b, 0x21, 0x13, 0x22, 0x20, 0x19, +0x23, 0x2c, 0x18, 0x29, 0x37, 0x20, 0x23, 0x3b, +0x35, 0x32, 0x37, 0x3e, 0x25, 0x01, 0x2a, 0x44, +0x3f, 0xfe, 0x6d, 0x18, 0x16, 0x15, 0x18, 0x18, +0x15, 0x16, 0x18, 0x00, 0x00, 0x01, 0x00, 0x62, +0x00, 0x00, 0x01, 0x02, 0x02, 0xb0, 0x00, 0x05, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x02, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x33, 0x15, 0x23, 0x11, 0x23, 0x62, 0xa0, 0x7d, +0x23, 0x02, 0xb0, 0x1c, 0xfd, 0x6c, 0x00, 0x00, +0x00, 0x01, 0x00, 0x15, 0x00, 0x00, 0x00, 0xb5, +0x02, 0xb0, 0x00, 0x05, 0x00, 0x0d, 0x00, 0xbb, +0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, +0x2b, 0x30, 0x31, 0x13, 0x23, 0x35, 0x33, 0x11, +0x23, 0x92, 0x7d, 0xa0, 0x23, 0x02, 0x94, 0x1c, +0xfd, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x62, +0xff, 0xcf, 0x01, 0x02, 0x02, 0x7f, 0x00, 0x05, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x03, 0x00, 0x01, +0x00, 0x04, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x33, 0x11, 0x33, 0x15, 0x23, 0x62, 0x23, 0x7d, +0xa0, 0x02, 0x7f, 0xfd, 0x6d, 0x1d, 0x00, 0x00, +0x00, 0x01, 0x00, 0x15, 0xff, 0xcf, 0x00, 0xb5, +0x02, 0x7f, 0x00, 0x05, 0x00, 0x0d, 0x00, 0xbb, +0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x04, +0x2b, 0x30, 0x31, 0x17, 0x33, 0x11, 0x33, 0x11, +0x23, 0x15, 0x7d, 0x23, 0xa0, 0x14, 0x02, 0x93, +0xfd, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x62, +0xff, 0x68, 0x01, 0x42, 0x02, 0xc4, 0x00, 0x07, +0x00, 0x0b, 0x00, 0x27, 0x00, 0xbb, 0x00, 0x05, +0x00, 0x01, 0x00, 0x06, 0x00, 0x04, 0x2b, 0xbb, +0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x05, 0x10, 0xb8, 0x00, 0x08, +0xd0, 0xb8, 0x00, 0x02, 0x10, 0xb8, 0x00, 0x09, +0xd0, 0x30, 0x31, 0x13, 0x33, 0x15, 0x23, 0x11, +0x33, 0x15, 0x23, 0x37, 0x11, 0x23, 0x11, 0x62, +0xe0, 0x79, 0x79, 0xe0, 0x49, 0x29, 0x02, 0xc4, +0x1d, 0xfc, 0xde, 0x1d, 0x1d, 0x03, 0x22, 0xfc, +0xde, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x15, +0xff, 0x68, 0x00, 0xf5, 0x02, 0xc4, 0x00, 0x07, +0x00, 0x0b, 0x00, 0x27, 0x00, 0xbb, 0x00, 0x08, +0x00, 0x01, 0x00, 0x06, 0x00, 0x04, 0x2b, 0xbb, +0x00, 0x05, 0x00, 0x01, 0x00, 0x09, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x08, 0x10, 0xb8, 0x00, 0x00, +0xd0, 0xb8, 0x00, 0x09, 0x10, 0xb8, 0x00, 0x02, +0xd0, 0x30, 0x31, 0x17, 0x33, 0x11, 0x23, 0x35, +0x33, 0x11, 0x23, 0x37, 0x11, 0x23, 0x11, 0x15, +0x79, 0x79, 0xe0, 0xe0, 0xc0, 0x29, 0x7b, 0x03, +0x22, 0x1d, 0xfc, 0xa4, 0x1d, 0x03, 0x22, 0xfc, +0xde, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x62, +0x01, 0x16, 0x01, 0x02, 0x02, 0xc4, 0x00, 0x05, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x02, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x33, 0x15, 0x23, 0x11, 0x23, 0x62, 0xa0, 0x7d, +0x23, 0x02, 0xc4, 0x1d, 0xfe, 0x6f, 0x00, 0x00, +0x00, 0x01, 0x00, 0x15, 0x01, 0x16, 0x00, 0xb5, +0x02, 0xc4, 0x00, 0x05, 0x00, 0x0d, 0x00, 0xbb, +0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, +0x2b, 0x30, 0x31, 0x13, 0x23, 0x35, 0x33, 0x11, +0x23, 0x92, 0x7d, 0xa0, 0x23, 0x02, 0xa7, 0x1d, +0xfe, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x62, +0xff, 0x68, 0x01, 0x02, 0x01, 0x16, 0x00, 0x05, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x03, 0x00, 0x01, +0x00, 0x04, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x33, 0x11, 0x33, 0x15, 0x23, 0x62, 0x23, 0x7d, +0xa0, 0x01, 0x16, 0xfe, 0x6f, 0x1d, 0x00, 0x00, +0x00, 0x01, 0x00, 0x15, 0xff, 0x68, 0x00, 0xb5, +0x01, 0x16, 0x00, 0x05, 0x00, 0x0d, 0x00, 0xbb, +0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x04, +0x2b, 0x30, 0x31, 0x17, 0x33, 0x11, 0x33, 0x11, +0x23, 0x15, 0x7d, 0x23, 0xa0, 0x7b, 0x01, 0x91, +0xfe, 0x52, 0x00, 0x00, 0x00, 0x03, 0x00, 0x33, +0xff, 0xf4, 0x02, 0xb2, 0x02, 0x8c, 0x00, 0x13, +0x00, 0x27, 0x00, 0x45, 0x00, 0x44, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, +0xbb, 0x00, 0x1e, 0x00, 0x01, 0x00, 0x0a, 0x00, +0x04, 0x2b, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, +0x14, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x28, 0xdc, +0xb8, 0x00, 0x1e, 0x10, 0xb8, 0x00, 0x32, 0xdc, +0xb9, 0x00, 0x39, 0x00, 0x01, 0xf4, 0xb8, 0x00, +0x28, 0x10, 0xb9, 0x00, 0x3f, 0x00, 0x01, 0xf4, +0x30, 0x31, 0x05, 0x22, 0x2e, 0x02, 0x35, 0x34, +0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, +0x0e, 0x02, 0x27, 0x32, 0x3e, 0x02, 0x35, 0x34, +0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, +0x1e, 0x02, 0x37, 0x22, 0x2e, 0x02, 0x35, 0x34, +0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, +0x01, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x33, +0x32, 0x36, 0x37, 0x17, 0x0e, 0x01, 0x01, 0x73, +0x41, 0x74, 0x58, 0x33, 0x33, 0x58, 0x74, 0x41, +0x40, 0x74, 0x58, 0x33, 0x33, 0x58, 0x74, 0x40, +0x39, 0x67, 0x4e, 0x2e, 0x2e, 0x4e, 0x67, 0x39, +0x3a, 0x67, 0x4e, 0x2e, 0x2e, 0x4e, 0x67, 0x3f, +0x24, 0x3f, 0x30, 0x1c, 0x1e, 0x31, 0x41, 0x24, +0x28, 0x38, 0x18, 0x17, 0x17, 0x2d, 0x1e, 0x3c, +0x4c, 0x49, 0x3d, 0x24, 0x38, 0x17, 0x14, 0x1b, +0x3e, 0x0c, 0x30, 0x57, 0x7b, 0x4c, 0x4b, 0x7a, +0x56, 0x2f, 0x2f, 0x56, 0x7a, 0x4b, 0x4c, 0x7b, +0x57, 0x30, 0x1f, 0x2c, 0x4f, 0x70, 0x44, 0x43, +0x6f, 0x4f, 0x2b, 0x2b, 0x4f, 0x6f, 0x43, 0x44, +0x70, 0x4f, 0x2c, 0x69, 0x1b, 0x33, 0x49, 0x2f, +0x2b, 0x46, 0x30, 0x1a, 0x1f, 0x18, 0x1a, 0x16, +0x16, 0x52, 0x44, 0x4b, 0x56, 0x1d, 0x15, 0x1c, +0x18, 0x23, 0x00, 0x00, 0x00, 0x04, 0x00, 0x33, +0xff, 0xf4, 0x02, 0xb2, 0x02, 0x8c, 0x00, 0x13, +0x00, 0x27, 0x00, 0x32, 0x00, 0x3b, 0x00, 0x3c, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, +0x3e, 0x59, 0xbb, 0x00, 0x0a, 0x00, 0x01, 0x00, +0x1e, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x3a, 0x00, +0x01, 0x00, 0x28, 0x00, 0x04, 0x2b, 0xbb, 0x00, +0x33, 0x00, 0x01, 0x00, 0x2f, 0x00, 0x04, 0x2b, +0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x14, 0x00, +0x01, 0xf4, 0x30, 0x31, 0x05, 0x22, 0x2e, 0x02, +0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, +0x15, 0x14, 0x0e, 0x02, 0x27, 0x32, 0x3e, 0x02, +0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, +0x15, 0x14, 0x1e, 0x02, 0x03, 0x33, 0x32, 0x16, +0x15, 0x14, 0x06, 0x2b, 0x01, 0x15, 0x23, 0x37, +0x32, 0x36, 0x35, 0x34, 0x26, 0x2b, 0x01, 0x15, +0x01, 0x73, 0x41, 0x74, 0x58, 0x33, 0x33, 0x58, +0x74, 0x41, 0x40, 0x74, 0x58, 0x33, 0x33, 0x58, +0x74, 0x40, 0x39, 0x67, 0x4e, 0x2e, 0x2e, 0x4e, +0x67, 0x39, 0x3a, 0x67, 0x4e, 0x2e, 0x2e, 0x4e, +0x67, 0x34, 0x86, 0x39, 0x4e, 0x4e, 0x39, 0x5d, +0x29, 0x7a, 0x30, 0x38, 0x38, 0x30, 0x51, 0x0c, +0x30, 0x57, 0x7b, 0x4c, 0x4b, 0x7a, 0x56, 0x2f, +0x2f, 0x56, 0x7a, 0x4b, 0x4c, 0x7b, 0x57, 0x30, +0x1f, 0x2c, 0x4f, 0x70, 0x44, 0x43, 0x6f, 0x4f, +0x2b, 0x2b, 0x4f, 0x6f, 0x43, 0x44, 0x70, 0x4f, +0x2c, 0x01, 0xde, 0x36, 0x37, 0x3c, 0x3f, 0x81, +0xa3, 0x2a, 0x2f, 0x27, 0x24, 0xa4, 0x00, 0x00, +0x00, 0x04, 0x00, 0x12, 0x01, 0x44, 0x01, 0x7e, +0x02, 0xc8, 0x00, 0x13, 0x00, 0x27, 0x00, 0x37, +0x00, 0x40, 0x00, 0x57, 0x00, 0xb8, 0x00, 0x36, +0x2f, 0xb8, 0x00, 0x29, 0x2f, 0xb8, 0x00, 0x36, +0x10, 0xb8, 0x00, 0x14, 0xdc, 0xb9, 0x00, 0x00, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x29, 0x10, 0xb8, +0x00, 0x1e, 0xdc, 0xb9, 0x00, 0x0a, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x34, 0x00, 0x36, 0x00, 0x29, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x34, 0x2f, 0xb9, +0x00, 0x38, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x31, +0x00, 0x38, 0x00, 0x34, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x36, 0x10, 0xb8, 0x00, 0x33, 0xd0, 0xb8, +0x00, 0x29, 0x10, 0xb9, 0x00, 0x3e, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x13, 0x22, 0x2e, 0x02, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, +0x14, 0x0e, 0x02, 0x27, 0x32, 0x3e, 0x02, 0x35, +0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, +0x14, 0x1e, 0x02, 0x03, 0x33, 0x32, 0x1e, 0x02, +0x15, 0x14, 0x06, 0x07, 0x17, 0x23, 0x27, 0x23, +0x15, 0x23, 0x37, 0x32, 0x36, 0x35, 0x34, 0x26, +0x2b, 0x01, 0x15, 0xc8, 0x25, 0x42, 0x32, 0x1d, +0x1d, 0x32, 0x42, 0x25, 0x25, 0x43, 0x31, 0x1d, +0x1d, 0x31, 0x43, 0x25, 0x1f, 0x38, 0x28, 0x18, +0x18, 0x28, 0x38, 0x1f, 0x20, 0x37, 0x28, 0x18, +0x18, 0x28, 0x37, 0x24, 0x45, 0x0f, 0x1b, 0x16, +0x0d, 0x17, 0x11, 0x31, 0x25, 0x27, 0x2f, 0x20, +0x3d, 0x17, 0x1c, 0x15, 0x1b, 0x20, 0x01, 0x44, +0x1c, 0x32, 0x47, 0x2c, 0x2c, 0x48, 0x33, 0x1c, +0x1c, 0x33, 0x48, 0x2c, 0x2c, 0x47, 0x32, 0x1c, +0x1d, 0x19, 0x2b, 0x3c, 0x24, 0x24, 0x3d, 0x2d, +0x19, 0x19, 0x2d, 0x3d, 0x24, 0x24, 0x3c, 0x2b, +0x19, 0x01, 0x0f, 0x06, 0x0f, 0x18, 0x13, 0x13, +0x20, 0x05, 0x56, 0x4c, 0x4c, 0x67, 0x11, 0x14, +0x11, 0x15, 0x4b, 0x00, 0x00, 0x02, 0x00, 0x02, +0x01, 0x71, 0x02, 0x43, 0x02, 0xa4, 0x00, 0x07, +0x00, 0x1b, 0x00, 0x5d, 0x00, 0xb8, 0x00, 0x1a, +0x2f, 0xb8, 0x00, 0x17, 0x2f, 0xb8, 0x00, 0x00, +0xd0, 0xb8, 0x00, 0x1a, 0x10, 0xb8, 0x00, 0x12, +0xd0, 0xba, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x00, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x0e, 0x2f, 0xb9, +0x00, 0x03, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x06, 0xd0, 0xb8, 0x00, 0x12, +0x10, 0xb8, 0x00, 0x09, 0xd0, 0xb8, 0x00, 0x06, +0x10, 0xb9, 0x00, 0x0c, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x00, 0x10, 0xb9, 0x00, 0x10, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x17, 0x10, 0xb9, 0x00, 0x19, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x14, 0xd0, 0x30, +0x31, 0x13, 0x23, 0x35, 0x33, 0x15, 0x23, 0x11, +0x23, 0x13, 0x33, 0x1f, 0x01, 0x33, 0x3f, 0x01, +0x33, 0x11, 0x23, 0x35, 0x37, 0x23, 0x07, 0x23, +0x27, 0x23, 0x17, 0x15, 0x23, 0x6d, 0x6b, 0xfd, +0x6c, 0x26, 0xc6, 0x34, 0x34, 0x1f, 0x04, 0x1f, +0x32, 0x34, 0x25, 0x05, 0x04, 0x53, 0x22, 0x53, +0x04, 0x05, 0x25, 0x02, 0x81, 0x23, 0x23, 0xfe, +0xf0, 0x01, 0x33, 0x7e, 0x56, 0x56, 0x7e, 0xfe, +0xcd, 0xa1, 0x62, 0xd3, 0xd3, 0x62, 0xa1, 0x00, +0x00, 0x02, 0x00, 0x20, 0x01, 0x65, 0x02, 0x43, +0x02, 0xa9, 0x00, 0x27, 0x00, 0x3b, 0x00, 0x7b, +0x00, 0xb8, 0x00, 0x3a, 0x2f, 0xb8, 0x00, 0x28, +0x2f, 0xb8, 0x00, 0x3a, 0x10, 0xb8, 0x00, 0x00, +0xd0, 0xb8, 0x00, 0x00, 0x2f, 0xb9, 0x00, 0x07, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x28, 0x10, 0xb8, +0x00, 0x14, 0xd0, 0xb8, 0x00, 0x14, 0x2f, 0xba, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x14, 0x11, 0x12, +0x39, 0xb9, 0x00, 0x1b, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x1e, 0x00, 0x14, 0x00, 0x00, 0x11, 0x12, +0x39, 0xba, 0x00, 0x36, 0x00, 0x3a, 0x00, 0x28, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x36, 0x2f, 0xb9, +0x00, 0x2b, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x28, +0x10, 0xb8, 0x00, 0x2e, 0xd0, 0xb8, 0x00, 0x3a, +0x10, 0xb8, 0x00, 0x31, 0xd0, 0xb8, 0x00, 0x2e, +0x10, 0xb9, 0x00, 0x34, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x28, 0x10, 0xb9, 0x00, 0x38, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x13, 0x22, 0x26, 0x27, 0x37, +0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, +0x2f, 0x01, 0x2e, 0x01, 0x35, 0x34, 0x36, 0x33, +0x32, 0x16, 0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, +0x06, 0x15, 0x14, 0x16, 0x1f, 0x01, 0x1e, 0x01, +0x15, 0x14, 0x06, 0x13, 0x33, 0x1f, 0x01, 0x33, +0x3f, 0x01, 0x33, 0x11, 0x23, 0x35, 0x37, 0x23, +0x07, 0x23, 0x27, 0x23, 0x17, 0x15, 0x23, 0x8c, +0x21, 0x37, 0x14, 0x18, 0x13, 0x28, 0x1c, 0x1c, +0x1f, 0x16, 0x18, 0x31, 0x15, 0x26, 0x37, 0x2a, +0x19, 0x2e, 0x10, 0x15, 0x0f, 0x23, 0x12, 0x1d, +0x1d, 0x18, 0x15, 0x31, 0x1d, 0x1f, 0x35, 0x79, +0x34, 0x34, 0x1f, 0x04, 0x1f, 0x32, 0x34, 0x25, +0x05, 0x04, 0x53, 0x22, 0x53, 0x04, 0x05, 0x25, +0x01, 0x65, 0x19, 0x15, 0x19, 0x13, 0x14, 0x1b, +0x17, 0x17, 0x12, 0x0d, 0x1a, 0x0b, 0x24, 0x22, +0x26, 0x2b, 0x15, 0x10, 0x1a, 0x0d, 0x12, 0x1c, +0x14, 0x11, 0x18, 0x0a, 0x19, 0x0e, 0x25, 0x22, +0x20, 0x33, 0x01, 0x3f, 0x7e, 0x56, 0x56, 0x7e, +0xfe, 0xcd, 0xa1, 0x62, 0xd3, 0xd3, 0x62, 0xa1, +0x00, 0x02, 0x00, 0x1f, 0x01, 0x65, 0x02, 0x5f, +0x02, 0xa9, 0x00, 0x13, 0x00, 0x31, 0x00, 0x4b, +0x00, 0xbb, 0x00, 0x2b, 0x00, 0x01, 0x00, 0x14, +0x00, 0x04, 0x2b, 0xbb, 0x00, 0x1c, 0x00, 0x01, +0x00, 0x23, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x04, +0x00, 0x02, 0x00, 0x0d, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x1c, 0x10, 0xb8, 0x00, 0x00, 0xd0, 0xb8, +0x00, 0x00, 0x2f, 0xb8, 0x00, 0x1c, 0x10, 0xb8, +0x00, 0x06, 0xd0, 0xb8, 0x00, 0x06, 0x2f, 0xb8, +0x00, 0x01, 0xd0, 0xb8, 0x00, 0x06, 0x10, 0xb9, +0x00, 0x0c, 0x00, 0x02, 0xf4, 0xb8, 0x00, 0x0f, +0xd0, 0x30, 0x31, 0x13, 0x33, 0x1f, 0x01, 0x33, +0x3f, 0x01, 0x33, 0x11, 0x23, 0x35, 0x37, 0x23, +0x07, 0x23, 0x27, 0x23, 0x17, 0x15, 0x23, 0x05, +0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, +0x16, 0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, 0x0e, +0x02, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, +0x17, 0x0e, 0x01, 0x1f, 0x34, 0x34, 0x1f, 0x04, +0x1f, 0x32, 0x34, 0x25, 0x05, 0x04, 0x53, 0x22, +0x53, 0x04, 0x05, 0x25, 0x01, 0xdf, 0x3c, 0x4c, +0x16, 0x25, 0x34, 0x1e, 0x1b, 0x2c, 0x0e, 0x18, +0x0d, 0x1d, 0x14, 0x14, 0x24, 0x1b, 0x11, 0x39, +0x29, 0x17, 0x21, 0x10, 0x17, 0x12, 0x31, 0x02, +0xa4, 0x7e, 0x56, 0x56, 0x7e, 0xfe, 0xcd, 0xa1, +0x62, 0xd3, 0xd3, 0x62, 0xa1, 0x0c, 0x57, 0x4b, +0x25, 0x3c, 0x2a, 0x17, 0x16, 0x0f, 0x19, 0x0e, +0x10, 0x11, 0x21, 0x2f, 0x1f, 0x3f, 0x45, 0x12, +0x11, 0x16, 0x14, 0x19, 0x00, 0x03, 0x00, 0x1f, +0x01, 0x71, 0x02, 0x5f, 0x02, 0xa4, 0x00, 0x13, +0x00, 0x1c, 0x00, 0x25, 0x00, 0x53, 0x00, 0xbb, +0x00, 0x25, 0x00, 0x01, 0x00, 0x1c, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x15, 0x00, 0x01, 0x00, 0x23, +0x00, 0x04, 0x2b, 0xbb, 0x00, 0x04, 0x00, 0x02, +0x00, 0x0d, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x15, +0x10, 0xb8, 0x00, 0x00, 0xd0, 0xb8, 0x00, 0x15, +0x10, 0xb8, 0x00, 0x06, 0xd0, 0xb8, 0x00, 0x01, +0xd0, 0xb8, 0x00, 0x1c, 0x10, 0xb8, 0x00, 0x08, +0xd0, 0xb8, 0x00, 0x06, 0x10, 0xb9, 0x00, 0x0c, +0x00, 0x02, 0xf4, 0xb8, 0x00, 0x0f, 0xd0, 0xb8, +0x00, 0x1c, 0x10, 0xb8, 0x00, 0x12, 0xd0, 0x30, +0x31, 0x13, 0x33, 0x1f, 0x01, 0x33, 0x3f, 0x01, +0x33, 0x11, 0x23, 0x35, 0x37, 0x23, 0x07, 0x23, +0x27, 0x23, 0x17, 0x15, 0x23, 0x01, 0x33, 0x32, +0x16, 0x15, 0x14, 0x06, 0x2b, 0x01, 0x37, 0x32, +0x36, 0x35, 0x34, 0x26, 0x2b, 0x01, 0x15, 0x1f, +0x34, 0x34, 0x1f, 0x04, 0x1f, 0x32, 0x34, 0x25, +0x05, 0x04, 0x53, 0x22, 0x53, 0x04, 0x05, 0x25, +0x01, 0x62, 0x4d, 0x48, 0x49, 0x49, 0x47, 0x4e, +0x4d, 0x35, 0x34, 0x35, 0x36, 0x25, 0x02, 0xa4, +0x7e, 0x56, 0x56, 0x7e, 0xfe, 0xcd, 0xa1, 0x62, +0xd3, 0xd3, 0x62, 0xa1, 0x01, 0x33, 0x52, 0x45, +0x48, 0x54, 0x21, 0x43, 0x38, 0x36, 0x40, 0xf1, +0x00, 0x02, 0x00, 0x34, 0xff, 0x6e, 0x02, 0xfb, +0x02, 0x79, 0x00, 0x46, 0x00, 0x54, 0x00, 0x63, +0x00, 0xbb, 0x00, 0x41, 0x00, 0x01, 0x00, 0x00, +0x00, 0x04, 0x2b, 0xbb, 0x00, 0x47, 0x00, 0x01, +0x00, 0x1b, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x25, +0x00, 0x01, 0x00, 0x4d, 0x00, 0x04, 0x2b, 0xbb, +0x00, 0x0a, 0x00, 0x01, 0x00, 0x37, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x1b, 0x10, 0xb8, 0x00, 0x14, +0xd0, 0xba, 0x00, 0x17, 0x00, 0x1b, 0x00, 0x25, +0x11, 0x12, 0x39, 0xba, 0x00, 0x27, 0x00, 0x25, +0x00, 0x1b, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x47, +0x10, 0xb8, 0x00, 0x2d, 0xd0, 0xb8, 0x00, 0x17, +0x10, 0xb9, 0x00, 0x49, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x27, 0x10, 0xb9, 0x00, 0x4a, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x05, 0x22, 0x2e, 0x02, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, +0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x23, +0x0e, 0x01, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, +0x3e, 0x02, 0x33, 0x32, 0x17, 0x33, 0x37, 0x33, +0x07, 0x06, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, +0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, +0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x17, 0x06, +0x27, 0x32, 0x3f, 0x01, 0x2e, 0x01, 0x23, 0x22, +0x0e, 0x02, 0x15, 0x14, 0x16, 0x01, 0x84, 0x48, +0x7b, 0x5a, 0x33, 0x41, 0x6d, 0x90, 0x4f, 0x48, +0x75, 0x51, 0x2c, 0x22, 0x36, 0x41, 0x1f, 0x28, +0x35, 0x04, 0x02, 0x1a, 0x3d, 0x23, 0x17, 0x2a, +0x1f, 0x12, 0x19, 0x30, 0x45, 0x2c, 0x35, 0x1e, +0x02, 0x09, 0x22, 0x24, 0x22, 0x5e, 0x18, 0x33, +0x29, 0x1b, 0x27, 0x48, 0x67, 0x41, 0x45, 0x80, +0x63, 0x3c, 0x2c, 0x4f, 0x6f, 0x43, 0x32, 0x52, +0x24, 0x10, 0x56, 0x7d, 0x32, 0x3a, 0x1f, 0x12, +0x21, 0x17, 0x22, 0x36, 0x25, 0x14, 0x2e, 0x92, +0x2f, 0x59, 0x81, 0x53, 0x62, 0x9f, 0x71, 0x3d, +0x2e, 0x53, 0x75, 0x47, 0x40, 0x61, 0x42, 0x21, +0x25, 0x27, 0x1d, 0x29, 0x11, 0x22, 0x33, 0x22, +0x24, 0x50, 0x42, 0x2b, 0x30, 0x28, 0xbd, 0x87, +0x1e, 0x39, 0x52, 0x35, 0x40, 0x6a, 0x4a, 0x29, +0x38, 0x67, 0x91, 0x59, 0x49, 0x75, 0x51, 0x2c, +0x1a, 0x16, 0x1e, 0x36, 0xf4, 0x43, 0xad, 0x1c, +0x15, 0x23, 0x36, 0x42, 0x1f, 0x39, 0x2e, 0x00, +0x00, 0x02, 0x00, 0x34, 0xff, 0xee, 0x02, 0xbf, +0x02, 0xa9, 0x00, 0x49, 0x00, 0x57, 0x00, 0x6b, +0x00, 0xbb, 0x00, 0x43, 0x00, 0x01, 0x00, 0x00, +0x00, 0x04, 0x2b, 0xbb, 0x00, 0x0a, 0x00, 0x01, +0x00, 0x39, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x4a, +0x00, 0x01, 0x00, 0x1b, 0x00, 0x04, 0x2b, 0xbb, +0x00, 0x50, 0x00, 0x01, 0x00, 0x25, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x1b, 0x10, 0xb8, 0x00, 0x14, +0xd0, 0xb8, 0x00, 0x14, 0x2f, 0xba, 0x00, 0x17, +0x00, 0x1b, 0x00, 0x25, 0x11, 0x12, 0x39, 0xba, +0x00, 0x28, 0x00, 0x25, 0x00, 0x1b, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x4a, 0x10, 0xb8, 0x00, 0x2f, +0xd0, 0xb8, 0x00, 0x2f, 0x2f, 0xb8, 0x00, 0x17, +0x10, 0xb9, 0x00, 0x4c, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x28, 0x10, 0xb9, 0x00, 0x4d, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x05, 0x22, 0x2e, 0x02, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, +0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x23, +0x0e, 0x01, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, +0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x33, 0x37, +0x33, 0x07, 0x06, 0x16, 0x33, 0x32, 0x3e, 0x02, +0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, +0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, +0x17, 0x0e, 0x01, 0x27, 0x32, 0x3f, 0x01, 0x2e, +0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, +0x01, 0x67, 0x42, 0x70, 0x52, 0x2f, 0x3c, 0x66, +0x87, 0x4a, 0x3e, 0x67, 0x4a, 0x29, 0x1d, 0x30, +0x3c, 0x1f, 0x25, 0x2d, 0x02, 0x02, 0x19, 0x3a, +0x25, 0x15, 0x26, 0x1d, 0x11, 0x17, 0x2d, 0x44, +0x2c, 0x18, 0x28, 0x0e, 0x02, 0x0a, 0x24, 0x25, +0x10, 0x16, 0x29, 0x15, 0x2d, 0x24, 0x17, 0x22, +0x41, 0x5c, 0x3a, 0x40, 0x76, 0x5a, 0x36, 0x28, +0x48, 0x64, 0x3c, 0x25, 0x44, 0x1c, 0x11, 0x23, +0x4c, 0x41, 0x30, 0x3a, 0x1f, 0x12, 0x1f, 0x17, +0x20, 0x33, 0x24, 0x13, 0x2c, 0x12, 0x28, 0x4e, +0x72, 0x4b, 0x58, 0x91, 0x67, 0x38, 0x28, 0x4a, +0x69, 0x42, 0x3b, 0x5a, 0x3d, 0x20, 0x28, 0x24, +0x1d, 0x29, 0x11, 0x21, 0x2f, 0x1d, 0x23, 0x4c, +0x3f, 0x29, 0x18, 0x18, 0x28, 0xa9, 0x48, 0x3f, +0x1b, 0x34, 0x4c, 0x32, 0x3b, 0x5d, 0x41, 0x23, +0x32, 0x5d, 0x83, 0x51, 0x44, 0x67, 0x45, 0x22, +0x11, 0x13, 0x1c, 0x17, 0x14, 0xd6, 0x43, 0x9a, +0x1c, 0x15, 0x20, 0x33, 0x3e, 0x1d, 0x32, 0x2e, +0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x01, 0xc1, +0x02, 0x8a, 0x00, 0x1b, 0x00, 0x1f, 0x00, 0x9b, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x08, 0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, 0x0f, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0c, 0x2f, 0x1b, 0xb9, 0x00, 0x0c, 0x00, +0x0f, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x16, 0x2f, 0x1b, 0xb9, 0x00, 0x16, +0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x1a, 0x2f, 0x1b, 0xb9, 0x00, +0x1a, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x03, +0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x2b, 0xbb, +0x00, 0x07, 0x00, 0x01, 0x00, 0x04, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x07, 0x10, 0xb8, 0x00, 0x0a, +0xd0, 0xb8, 0x00, 0x07, 0x10, 0xb8, 0x00, 0x0e, +0xd0, 0xb8, 0x00, 0x04, 0x10, 0xb8, 0x00, 0x10, +0xd0, 0xb8, 0x00, 0x03, 0x10, 0xb8, 0x00, 0x12, +0xd0, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x14, +0xd0, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x18, +0xd0, 0xb8, 0x00, 0x03, 0x10, 0xb8, 0x00, 0x1c, +0xd0, 0xb8, 0x00, 0x04, 0x10, 0xb8, 0x00, 0x1d, +0xd0, 0x30, 0x31, 0x37, 0x23, 0x35, 0x33, 0x37, +0x23, 0x35, 0x33, 0x37, 0x33, 0x07, 0x33, 0x37, +0x33, 0x07, 0x33, 0x15, 0x23, 0x07, 0x33, 0x15, +0x23, 0x07, 0x23, 0x37, 0x23, 0x07, 0x23, 0x3f, +0x01, 0x23, 0x07, 0x77, 0x53, 0x57, 0x15, 0x58, +0x5c, 0x19, 0x23, 0x19, 0x95, 0x1a, 0x22, 0x19, +0x52, 0x55, 0x15, 0x56, 0x5b, 0x19, 0x23, 0x19, +0x95, 0x1a, 0x23, 0xd7, 0x15, 0x96, 0x15, 0xd6, +0x24, 0xaa, 0x24, 0xc2, 0xc2, 0xc2, 0xc2, 0x24, +0xaa, 0x24, 0xd6, 0xd6, 0xd6, 0xfa, 0xaa, 0xaa, +0xff, 0xff, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x9b, +0x02, 0xa3, 0x02, 0x06, 0x00, 0x26, 0x00, 0x00, +0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x01, 0xbb, +0x02, 0x00, 0x00, 0x09, 0x00, 0x11, 0x00, 0x54, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0e, 0x2f, 0x1b, 0xb9, 0x00, 0x0e, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0c, 0x2f, 0x1b, 0xb9, 0x00, 0x0c, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x10, 0x2f, 0x1b, 0xb9, 0x00, 0x10, +0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x00, 0x00, +0x0e, 0x00, 0x0c, 0x11, 0x12, 0x39, 0xb8, 0x00, +0x00, 0x2f, 0xba, 0x00, 0x05, 0x00, 0x0e, 0x00, +0x0c, 0x11, 0x12, 0x39, 0xb9, 0x00, 0x0b, 0x00, +0x01, 0xf4, 0x30, 0x31, 0x25, 0x27, 0x2e, 0x01, +0x27, 0x23, 0x0e, 0x01, 0x0f, 0x01, 0x17, 0x23, +0x07, 0x23, 0x13, 0x33, 0x13, 0x23, 0x01, 0x41, +0x22, 0x11, 0x1c, 0x0f, 0x04, 0x0f, 0x1b, 0x11, +0x22, 0xcc, 0xda, 0x3e, 0x2e, 0xc2, 0x2f, 0xc2, +0x30, 0xcd, 0x5d, 0x2f, 0x4e, 0x2d, 0x2d, 0x4f, +0x2e, 0x5d, 0x25, 0xa8, 0x02, 0x00, 0xfe, 0x00, +0x00, 0x03, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd5, +0x02, 0x00, 0x00, 0x0f, 0x00, 0x18, 0x00, 0x23, +0x00, 0x57, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0e, 0x2f, 0x1b, 0xb9, 0x00, +0x0e, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x21, +0x00, 0x00, 0x00, 0x0e, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x21, 0x2f, 0xb9, 0x00, 0x10, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x07, 0x00, 0x10, 0x00, 0x21, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x16, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0e, +0x10, 0xb9, 0x00, 0x19, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x13, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, +0x07, 0x15, 0x1e, 0x01, 0x15, 0x14, 0x06, 0x2b, +0x01, 0x13, 0x32, 0x36, 0x35, 0x34, 0x26, 0x2b, +0x01, 0x15, 0x17, 0x32, 0x3e, 0x02, 0x35, 0x34, +0x26, 0x2b, 0x01, 0x15, 0x61, 0x99, 0x54, 0x65, +0x2d, 0x2c, 0x36, 0x45, 0x71, 0x5f, 0xa4, 0x8b, +0x54, 0x48, 0x4d, 0x4b, 0x61, 0x6c, 0x27, 0x40, +0x2e, 0x19, 0x5a, 0x54, 0x6c, 0x02, 0x00, 0x3b, +0x43, 0x27, 0x3a, 0x0c, 0x04, 0x0a, 0x3c, 0x35, +0x4c, 0x4a, 0x01, 0x20, 0x31, 0x30, 0x30, 0x2b, +0xbc, 0xfc, 0x0b, 0x1b, 0x2c, 0x20, 0x36, 0x32, +0xda, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x37, +0xff, 0xf4, 0x01, 0xc8, 0x02, 0x0c, 0x00, 0x1d, +0x00, 0x39, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0a, 0x2f, 0x1b, 0xb9, 0x00, 0x0a, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x0a, +0x10, 0xb9, 0x00, 0x11, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x00, 0x10, 0xb9, 0x00, 0x17, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x05, 0x22, 0x2e, 0x02, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x07, +0x2e, 0x01, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, +0x33, 0x32, 0x36, 0x37, 0x17, 0x0e, 0x01, 0x01, +0x22, 0x34, 0x57, 0x3e, 0x22, 0x23, 0x40, 0x58, +0x36, 0x30, 0x4a, 0x17, 0x1b, 0x17, 0x39, 0x26, +0x5b, 0x66, 0x65, 0x58, 0x2b, 0x41, 0x1d, 0x1b, +0x22, 0x4e, 0x0c, 0x25, 0x46, 0x63, 0x3f, 0x3d, +0x63, 0x46, 0x25, 0x26, 0x19, 0x1e, 0x17, 0x1d, +0x79, 0x69, 0x6a, 0x7a, 0x1e, 0x1f, 0x1c, 0x24, +0x26, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x61, +0x00, 0x00, 0x01, 0xe5, 0x02, 0x00, 0x00, 0x0c, +0x00, 0x17, 0x00, 0x35, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, +0x00, 0x00, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, 0x2f, 0x1b, +0xb9, 0x00, 0x0b, 0x00, 0x05, 0x3e, 0x59, 0xb9, +0x00, 0x0d, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, +0x10, 0xb9, 0x00, 0x15, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x13, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, +0x0e, 0x02, 0x2b, 0x01, 0x37, 0x32, 0x36, 0x35, +0x34, 0x2e, 0x02, 0x2b, 0x01, 0x11, 0x61, 0x83, +0x40, 0x61, 0x40, 0x20, 0x20, 0x40, 0x60, 0x40, +0x84, 0x81, 0x6e, 0x65, 0x19, 0x33, 0x50, 0x37, +0x53, 0x02, 0x00, 0x23, 0x42, 0x5f, 0x3b, 0x3b, +0x5f, 0x43, 0x24, 0x25, 0x74, 0x68, 0x31, 0x50, +0x39, 0x20, 0xfe, 0x4a, 0x00, 0x01, 0x00, 0x61, +0x00, 0x00, 0x01, 0x9e, 0x02, 0x00, 0x00, 0x0b, +0x00, 0x4d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0a, 0x2f, 0x1b, 0xb9, 0x00, +0x0a, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x10, 0xb9, 0x00, 0x02, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x06, 0x00, 0x00, 0x00, 0x0a, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x06, 0x2f, 0xb9, 0x00, 0x04, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0a, 0x10, 0xb9, +0x00, 0x08, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, +0x21, 0x15, 0x21, 0x15, 0x33, 0x15, 0x23, 0x15, +0x21, 0x15, 0x21, 0x61, 0x01, 0x33, 0xfe, 0xfb, +0xdd, 0xdd, 0x01, 0x0f, 0xfe, 0xc3, 0x02, 0x00, +0x26, 0xb8, 0x25, 0xd7, 0x26, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x01, 0x94, +0x02, 0x00, 0x00, 0x09, 0x00, 0x39, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, +0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x05, 0x00, 0x01, 0x00, 0x06, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x02, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, +0x21, 0x15, 0x21, 0x15, 0x33, 0x15, 0x23, 0x15, +0x23, 0x61, 0x01, 0x33, 0xfe, 0xfb, 0xdc, 0xdc, +0x2e, 0x02, 0x00, 0x26, 0xc4, 0x25, 0xf1, 0x00, +0x00, 0x01, 0x00, 0x37, 0xff, 0xf4, 0x01, 0xce, +0x02, 0x0c, 0x00, 0x21, 0x00, 0x4f, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0a, 0x2f, +0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x0a, 0x10, 0xb9, 0x00, 0x11, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x17, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x1c, +0x00, 0x0a, 0x00, 0x00, 0x11, 0x12, 0x39, 0x7d, +0xb8, 0x00, 0x1c, 0x2f, 0x18, 0xb9, 0x00, 0x1e, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x05, 0x22, 0x2e, +0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, +0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, 0x06, 0x15, +0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x35, 0x23, +0x35, 0x33, 0x15, 0x0e, 0x01, 0x01, 0x28, 0x36, +0x59, 0x3f, 0x23, 0x24, 0x42, 0x5b, 0x38, 0x37, +0x49, 0x17, 0x1b, 0x15, 0x3a, 0x2d, 0x5e, 0x6b, +0x67, 0x5e, 0x25, 0x3d, 0x14, 0x80, 0xac, 0x1a, +0x55, 0x0c, 0x25, 0x46, 0x63, 0x3f, 0x3d, 0x63, +0x46, 0x25, 0x27, 0x16, 0x1e, 0x15, 0x1d, 0x78, +0x6a, 0x69, 0x7b, 0x13, 0x11, 0x99, 0x25, 0xd4, +0x17, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x61, +0x00, 0x00, 0x01, 0xe1, 0x02, 0x00, 0x00, 0x0b, +0x00, 0x51, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x04, 0x2f, 0x1b, 0xb9, 0x00, +0x04, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x06, 0x2f, 0x1b, 0xb9, +0x00, 0x06, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0a, 0x2f, 0x1b, +0xb9, 0x00, 0x0a, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x03, 0x00, 0x01, 0x00, 0x08, 0x00, 0x04, +0x2b, 0x30, 0x31, 0x13, 0x33, 0x15, 0x21, 0x35, +0x33, 0x11, 0x23, 0x35, 0x21, 0x15, 0x23, 0x61, +0x2e, 0x01, 0x24, 0x2e, 0x2e, 0xfe, 0xdc, 0x2e, +0x02, 0x00, 0xdc, 0xdc, 0xfe, 0x00, 0xfc, 0xfc, +0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x00, 0x8f, +0x02, 0x00, 0x00, 0x03, 0x00, 0x25, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x02, +0x2f, 0x1b, 0xb9, 0x00, 0x02, 0x00, 0x05, 0x3e, +0x59, 0x30, 0x31, 0x13, 0x33, 0x11, 0x23, 0x61, +0x2e, 0x2e, 0x02, 0x00, 0xfe, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x29, 0xff, 0xf4, 0x01, 0x44, +0x02, 0x00, 0x00, 0x11, 0x00, 0x2b, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, 0x2f, +0x1b, 0xb9, 0x00, 0x0b, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x07, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x17, 0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, +0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, +0x0e, 0x02, 0xb4, 0x30, 0x46, 0x15, 0x21, 0x14, +0x33, 0x22, 0x32, 0x31, 0x2e, 0x10, 0x22, 0x37, +0x0c, 0x2a, 0x25, 0x17, 0x20, 0x1d, 0x37, 0x3e, +0x01, 0x6e, 0xfe, 0x8d, 0x20, 0x37, 0x2a, 0x18, +0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x01, 0xe1, +0x02, 0x00, 0x00, 0x0c, 0x00, 0x65, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, +0x2f, 0x1b, 0xb9, 0x00, 0x04, 0x00, 0x0b, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x07, 0x2f, 0x1b, 0xb9, 0x00, 0x07, 0x00, 0x05, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x03, 0x00, 0x07, +0x00, 0x00, 0x11, 0x12, 0x39, 0xba, 0x00, 0x06, +0x00, 0x00, 0x00, 0x07, 0x11, 0x12, 0x39, 0xba, +0x00, 0x09, 0x00, 0x07, 0x00, 0x00, 0x11, 0x12, +0x39, 0x30, 0x31, 0x13, 0x33, 0x11, 0x33, 0x01, +0x33, 0x07, 0x13, 0x23, 0x03, 0x07, 0x15, 0x23, +0x61, 0x2e, 0x02, 0x01, 0x06, 0x35, 0xb1, 0xc6, +0x33, 0xb0, 0x6f, 0x2e, 0x02, 0x00, 0xfe, 0xec, +0x01, 0x14, 0xbf, 0xfe, 0xbf, 0x01, 0x21, 0x71, +0xb0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x61, +0x00, 0x00, 0x01, 0x8b, 0x02, 0x00, 0x00, 0x05, +0x00, 0x2b, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x04, 0x2f, 0x1b, 0xb9, 0x00, +0x04, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x02, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, 0x33, 0x11, +0x33, 0x15, 0x21, 0x61, 0x2e, 0xfc, 0xfe, 0xd6, +0x02, 0x00, 0xfe, 0x27, 0x27, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x02, 0x0f, +0x02, 0x00, 0x00, 0x19, 0x00, 0x6f, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x06, +0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, 0x0b, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x08, 0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, 0x05, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x18, 0x2f, 0x1b, 0xb9, 0x00, 0x18, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x03, 0x00, 0x00, +0x00, 0x18, 0x11, 0x12, 0x39, 0xba, 0x00, 0x0d, +0x00, 0x08, 0x00, 0x06, 0x11, 0x12, 0x39, 0xba, +0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x11, 0x12, +0x39, 0xba, 0x00, 0x14, 0x00, 0x00, 0x00, 0x18, +0x11, 0x12, 0x39, 0x30, 0x31, 0x13, 0x33, 0x13, +0x17, 0x33, 0x37, 0x13, 0x33, 0x11, 0x23, 0x11, +0x34, 0x36, 0x37, 0x23, 0x07, 0x03, 0x23, 0x03, +0x27, 0x23, 0x1e, 0x01, 0x15, 0x11, 0x23, 0x61, +0x3d, 0x70, 0x28, 0x04, 0x2a, 0x6f, 0x3c, 0x2a, +0x02, 0x02, 0x04, 0x2a, 0x72, 0x22, 0x72, 0x2b, +0x04, 0x02, 0x04, 0x2b, 0x02, 0x00, 0xfe, 0xdb, +0x6f, 0x6f, 0x01, 0x25, 0xfe, 0x00, 0x01, 0x40, +0x20, 0x4e, 0x22, 0x72, 0xfe, 0xd8, 0x01, 0x28, +0x72, 0x21, 0x4f, 0x20, 0xfe, 0xc0, 0x00, 0x00, +0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x01, 0xdb, +0x02, 0x00, 0x00, 0x13, 0x00, 0x5b, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, +0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, 0x0b, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0a, 0x2f, 0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x05, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x12, 0x2f, 0x1b, 0xb9, 0x00, 0x12, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x04, 0x00, 0x0a, +0x00, 0x08, 0x11, 0x12, 0x39, 0xba, 0x00, 0x0e, +0x00, 0x00, 0x00, 0x12, 0x11, 0x12, 0x39, 0x30, +0x31, 0x13, 0x33, 0x13, 0x17, 0x33, 0x2e, 0x01, +0x35, 0x11, 0x33, 0x11, 0x23, 0x03, 0x27, 0x23, +0x1e, 0x01, 0x15, 0x11, 0x23, 0x61, 0x30, 0xe4, +0x3d, 0x04, 0x02, 0x03, 0x2a, 0x2f, 0xe4, 0x3e, +0x04, 0x02, 0x04, 0x2b, 0x02, 0x00, 0xfe, 0xa1, +0x66, 0x26, 0x4e, 0x26, 0x01, 0x2b, 0xfe, 0x00, +0x01, 0x5e, 0x68, 0x26, 0x4b, 0x26, 0xfe, 0xd1, +0x00, 0x02, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x07, +0x02, 0x0c, 0x00, 0x13, 0x00, 0x25, 0x00, 0x35, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0a, 0x2f, 0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x14, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0a, 0x10, 0xb9, 0x00, 0x1e, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x05, 0x22, 0x2e, +0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, +0x02, 0x15, 0x14, 0x0e, 0x02, 0x27, 0x32, 0x3e, +0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, +0x15, 0x14, 0x1e, 0x02, 0x01, 0x1f, 0x33, 0x55, +0x3e, 0x22, 0x22, 0x3e, 0x55, 0x33, 0x33, 0x55, +0x3d, 0x23, 0x23, 0x3d, 0x55, 0x33, 0x29, 0x44, +0x30, 0x1b, 0x1b, 0x30, 0x44, 0x29, 0x54, 0x64, +0x1a, 0x30, 0x44, 0x0c, 0x26, 0x46, 0x63, 0x3e, +0x3e, 0x63, 0x45, 0x25, 0x25, 0x45, 0x63, 0x3e, +0x3e, 0x63, 0x46, 0x26, 0x29, 0x20, 0x3b, 0x54, +0x35, 0x34, 0x54, 0x3b, 0x1f, 0x78, 0x6a, 0x35, +0x54, 0x3b, 0x20, 0x00, 0x00, 0x02, 0x00, 0x61, +0x00, 0x00, 0x01, 0xc5, 0x02, 0x00, 0x00, 0x0a, +0x00, 0x13, 0x00, 0x39, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, +0x00, 0x00, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x09, 0x2f, 0x1b, +0xb9, 0x00, 0x09, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x0b, 0x00, 0x01, 0x00, 0x07, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x11, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, 0x33, 0x32, +0x16, 0x15, 0x14, 0x06, 0x2b, 0x01, 0x15, 0x23, +0x37, 0x32, 0x36, 0x35, 0x34, 0x26, 0x2b, 0x01, +0x15, 0x61, 0x9b, 0x5e, 0x6b, 0x6b, 0x5e, 0x6d, +0x2e, 0x96, 0x53, 0x4c, 0x4f, 0x54, 0x64, 0x02, +0x00, 0x41, 0x51, 0x4e, 0x4a, 0xd6, 0xfa, 0x36, +0x3d, 0x3e, 0x30, 0xe1, 0x00, 0x02, 0x00, 0x37, +0xff, 0x72, 0x02, 0x08, 0x02, 0x0c, 0x00, 0x11, +0x00, 0x32, 0x00, 0x4b, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x22, 0x2f, 0x1b, 0xb9, +0x00, 0x22, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x18, 0x2f, 0x1b, +0xb9, 0x00, 0x18, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x2f, 0x00, 0x01, 0x00, 0x15, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x18, 0x10, 0xb9, 0x00, 0x05, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x22, 0x10, 0xb9, +0x00, 0x0f, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x18, +0x10, 0xb8, 0x00, 0x2c, 0xd0, 0x30, 0x31, 0x13, +0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, +0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x01, 0x0e, +0x01, 0x23, 0x22, 0x26, 0x27, 0x2e, 0x03, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, +0x14, 0x0e, 0x02, 0x07, 0x1e, 0x01, 0x33, 0x32, +0x36, 0x37, 0x67, 0x1a, 0x30, 0x44, 0x2a, 0x29, +0x44, 0x30, 0x1b, 0x1b, 0x30, 0x44, 0x29, 0x54, +0x64, 0x01, 0xa1, 0x0b, 0x26, 0x16, 0x47, 0x5f, +0x16, 0x2e, 0x4c, 0x36, 0x1e, 0x22, 0x3e, 0x55, +0x33, 0x33, 0x55, 0x3d, 0x23, 0x1f, 0x38, 0x4d, +0x2e, 0x13, 0x4a, 0x33, 0x13, 0x1b, 0x0b, 0x01, +0x01, 0x35, 0x55, 0x3c, 0x21, 0x21, 0x3c, 0x55, +0x35, 0x34, 0x54, 0x3b, 0x1f, 0x78, 0xfe, 0x12, +0x05, 0x06, 0x4a, 0x39, 0x05, 0x2a, 0x45, 0x5f, +0x39, 0x3e, 0x63, 0x45, 0x25, 0x25, 0x45, 0x63, +0x3e, 0x3a, 0x5f, 0x46, 0x29, 0x04, 0x2f, 0x2c, +0x05, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x61, +0x00, 0x00, 0x01, 0xc8, 0x02, 0x00, 0x00, 0x07, +0x00, 0x17, 0x00, 0x54, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0d, 0x2f, 0x1b, 0xb9, +0x00, 0x0d, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0c, 0x2f, 0x1b, +0xb9, 0x00, 0x0c, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, +0x1b, 0xb9, 0x00, 0x08, 0x00, 0x05, 0x3e, 0x59, +0xbb, 0x00, 0x01, 0x00, 0x01, 0x00, 0x09, 0x00, +0x04, 0x2b, 0xb8, 0x00, 0x0d, 0x10, 0xb9, 0x00, +0x06, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x16, 0x00, +0x01, 0x00, 0x09, 0x11, 0x12, 0x39, 0x30, 0x31, +0x13, 0x33, 0x32, 0x35, 0x34, 0x26, 0x2b, 0x01, +0x01, 0x27, 0x23, 0x15, 0x23, 0x11, 0x33, 0x32, +0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, 0x17, 0x8f, +0x6a, 0x96, 0x4d, 0x49, 0x6a, 0x01, 0x06, 0x94, +0x72, 0x2e, 0xa2, 0x2a, 0x44, 0x30, 0x1b, 0x4a, +0x40, 0x96, 0x01, 0x08, 0x6c, 0x39, 0x2e, 0xfe, +0x25, 0xe4, 0xe4, 0x02, 0x00, 0x0f, 0x21, 0x35, +0x26, 0x3d, 0x48, 0x09, 0xe7, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x2e, 0xff, 0xf4, 0x01, 0xa0, +0x02, 0x0c, 0x00, 0x31, 0x00, 0x49, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1a, 0x2f, +0x1b, 0xb9, 0x00, 0x1a, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x07, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x10, 0x00, 0x00, 0x00, 0x1a, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x1a, 0x10, 0xb9, 0x00, 0x21, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x28, 0x00, 0x1a, +0x00, 0x00, 0x11, 0x12, 0x39, 0x30, 0x31, 0x17, +0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, +0x36, 0x35, 0x34, 0x2e, 0x02, 0x2f, 0x01, 0x2e, +0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, +0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, 0x06, 0x15, +0x14, 0x16, 0x1f, 0x01, 0x1e, 0x03, 0x15, 0x14, +0x0e, 0x02, 0xed, 0x3f, 0x5d, 0x23, 0x1c, 0x1f, +0x53, 0x32, 0x3e, 0x46, 0x0f, 0x1a, 0x24, 0x15, +0x46, 0x1a, 0x2e, 0x22, 0x14, 0x19, 0x2c, 0x3c, +0x24, 0x35, 0x50, 0x19, 0x1a, 0x19, 0x42, 0x29, +0x36, 0x41, 0x34, 0x2e, 0x47, 0x1c, 0x2f, 0x20, +0x12, 0x19, 0x2f, 0x42, 0x0c, 0x2b, 0x21, 0x21, +0x20, 0x27, 0x36, 0x2d, 0x18, 0x20, 0x17, 0x11, +0x09, 0x1d, 0x0a, 0x1a, 0x20, 0x29, 0x1a, 0x1d, +0x30, 0x22, 0x13, 0x24, 0x19, 0x1e, 0x17, 0x1e, +0x30, 0x2a, 0x27, 0x28, 0x13, 0x1e, 0x0b, 0x17, +0x1f, 0x2c, 0x1f, 0x1e, 0x33, 0x26, 0x15, 0x00, +0x00, 0x01, 0x00, 0x1d, 0x00, 0x00, 0x01, 0xa8, +0x02, 0x00, 0x00, 0x07, 0x00, 0x33, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x02, 0x2f, +0x1b, 0xb9, 0x00, 0x02, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, +0x2f, 0x1b, 0xb9, 0x00, 0x07, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x02, 0x10, 0xb9, 0x00, 0x01, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x04, 0xd0, 0x30, +0x31, 0x13, 0x23, 0x35, 0x21, 0x15, 0x23, 0x11, +0x23, 0xcc, 0xaf, 0x01, 0x8b, 0xae, 0x2e, 0x01, +0xd9, 0x27, 0x27, 0xfe, 0x27, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x5f, 0xff, 0xf4, 0x01, 0xda, +0x02, 0x00, 0x00, 0x19, 0x00, 0x33, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x06, 0x2f, +0x1b, 0xb9, 0x00, 0x06, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x0d, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x06, 0x10, 0xb8, 0x00, 0x13, 0xd0, 0x30, +0x31, 0x05, 0x22, 0x2e, 0x02, 0x35, 0x11, 0x33, +0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, +0x35, 0x11, 0x33, 0x11, 0x14, 0x0e, 0x02, 0x01, +0x1d, 0x25, 0x45, 0x34, 0x20, 0x2e, 0x17, 0x27, +0x35, 0x1d, 0x1d, 0x35, 0x28, 0x18, 0x2b, 0x20, +0x34, 0x44, 0x0c, 0x14, 0x30, 0x51, 0x3d, 0x01, +0x3a, 0xfe, 0xcb, 0x33, 0x43, 0x28, 0x10, 0x10, +0x28, 0x43, 0x33, 0x01, 0x35, 0xfe, 0xc6, 0x3d, +0x51, 0x30, 0x14, 0x00, 0x00, 0x01, 0x00, 0x04, +0x00, 0x00, 0x01, 0xa0, 0x02, 0x00, 0x00, 0x0d, +0x00, 0x37, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0c, 0x2f, 0x1b, 0xb9, 0x00, +0x0c, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x05, +0x00, 0x00, 0x00, 0x0c, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x0a, 0xd0, 0x30, +0x31, 0x13, 0x33, 0x13, 0x1e, 0x01, 0x17, 0x33, +0x3e, 0x01, 0x37, 0x13, 0x33, 0x03, 0x23, 0x04, +0x31, 0x63, 0x10, 0x1b, 0x10, 0x04, 0x10, 0x19, +0x10, 0x62, 0x2e, 0xb4, 0x31, 0x02, 0x00, 0xfe, +0xde, 0x2f, 0x4f, 0x2e, 0x2e, 0x4f, 0x2f, 0x01, +0x22, 0xfe, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1c, +0x00, 0x00, 0x02, 0x7b, 0x02, 0x00, 0x00, 0x21, +0x00, 0x53, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x20, 0x2f, 0x1b, 0xb9, 0x00, +0x20, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x16, +0xd0, 0xba, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x0a, 0xd0, 0xb8, 0x00, 0x14, 0xd0, 0xba, +0x00, 0x0f, 0x00, 0x16, 0x00, 0x14, 0x11, 0x12, +0x39, 0xba, 0x00, 0x1c, 0x00, 0x0a, 0x00, 0x16, +0x11, 0x12, 0x39, 0x30, 0x31, 0x13, 0x33, 0x13, +0x1e, 0x01, 0x17, 0x33, 0x3e, 0x01, 0x37, 0x13, +0x33, 0x13, 0x1e, 0x01, 0x17, 0x33, 0x3e, 0x01, +0x37, 0x13, 0x33, 0x03, 0x23, 0x03, 0x2e, 0x01, +0x27, 0x23, 0x0e, 0x01, 0x07, 0x03, 0x23, 0x1c, +0x2f, 0x43, 0x09, 0x13, 0x0a, 0x03, 0x0a, 0x16, +0x0b, 0x55, 0x2c, 0x54, 0x0b, 0x16, 0x0c, 0x04, +0x09, 0x11, 0x0a, 0x43, 0x2c, 0x7c, 0x31, 0x63, +0x08, 0x0e, 0x07, 0x04, 0x08, 0x0e, 0x08, 0x61, +0x32, 0x02, 0x00, 0xfe, 0xdb, 0x2a, 0x53, 0x2a, +0x2a, 0x53, 0x2a, 0x01, 0x25, 0xfe, 0xdb, 0x2a, +0x53, 0x2a, 0x2a, 0x53, 0x2a, 0x01, 0x25, 0xfe, +0x00, 0x01, 0x52, 0x1f, 0x37, 0x1e, 0x1e, 0x37, +0x1f, 0xfe, 0xae, 0x00, 0x00, 0x01, 0x00, 0x11, +0x00, 0x00, 0x01, 0x93, 0x02, 0x00, 0x00, 0x19, +0x00, 0x6f, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x01, 0x2f, 0x1b, 0xb9, 0x00, 0x01, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, +0x0b, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0e, 0x2f, 0x1b, 0xb9, +0x00, 0x0e, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x18, 0x2f, 0x1b, +0xb9, 0x00, 0x18, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x11, 0x12, +0x39, 0xba, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x01, +0x11, 0x12, 0x39, 0xba, 0x00, 0x0d, 0x00, 0x0e, +0x00, 0x0b, 0x11, 0x12, 0x39, 0xba, 0x00, 0x14, +0x00, 0x0e, 0x00, 0x01, 0x11, 0x12, 0x39, 0x30, +0x31, 0x13, 0x27, 0x33, 0x17, 0x1e, 0x01, 0x17, +0x33, 0x3e, 0x01, 0x3f, 0x01, 0x33, 0x07, 0x13, +0x23, 0x27, 0x2e, 0x01, 0x27, 0x23, 0x0e, 0x01, +0x0f, 0x01, 0x23, 0xb7, 0x9a, 0x31, 0x59, 0x0b, +0x13, 0x0e, 0x04, 0x0b, 0x14, 0x0a, 0x57, 0x30, +0x9a, 0xa6, 0x32, 0x5e, 0x0b, 0x18, 0x0e, 0x04, +0x0e, 0x17, 0x0b, 0x5d, 0x30, 0x01, 0x09, 0xf7, +0x90, 0x11, 0x21, 0x16, 0x16, 0x21, 0x11, 0x90, +0xfa, 0xfe, 0xfa, 0x97, 0x13, 0x27, 0x17, 0x17, +0x27, 0x13, 0x97, 0x00, 0x00, 0x01, 0x00, 0x03, +0x00, 0x00, 0x01, 0x7e, 0x02, 0x00, 0x00, 0x0f, +0x00, 0x37, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x01, 0x2f, 0x1b, 0xb9, 0x00, 0x01, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0e, 0x2f, 0x1b, 0xb9, 0x00, +0x0e, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x07, +0x00, 0x0e, 0x00, 0x01, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x01, 0x10, 0xb8, 0x00, 0x0b, 0xd0, 0x30, +0x31, 0x37, 0x03, 0x33, 0x17, 0x1e, 0x01, 0x17, +0x33, 0x3e, 0x01, 0x3f, 0x01, 0x33, 0x03, 0x15, +0x23, 0xa9, 0xa6, 0x30, 0x51, 0x0e, 0x1e, 0x10, +0x04, 0x0f, 0x1d, 0x0e, 0x50, 0x30, 0xa7, 0x2e, +0xcd, 0x01, 0x33, 0x9a, 0x1d, 0x35, 0x1c, 0x1c, +0x35, 0x1d, 0x9a, 0xfe, 0xcd, 0xcd, 0x00, 0x00, +0x00, 0x01, 0x00, 0x32, 0x00, 0x00, 0x01, 0xa8, +0x02, 0x00, 0x00, 0x09, 0x00, 0x45, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, 0x2f, +0x1b, 0xb9, 0x00, 0x03, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, +0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x06, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x00, 0xd0, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x03, 0x10, 0xb9, 0x00, 0x01, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x05, 0xd0, 0xb8, 0x00, 0x05, +0x2f, 0x30, 0x31, 0x37, 0x01, 0x21, 0x35, 0x21, +0x15, 0x01, 0x21, 0x15, 0x21, 0x32, 0x01, 0x3a, +0xfe, 0xe1, 0x01, 0x57, 0xfe, 0xc7, 0x01, 0x3d, +0xfe, 0x8a, 0x1a, 0x01, 0xc0, 0x26, 0x1a, 0xfe, +0x40, 0x26, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x02, 0xde, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x22, +0x00, 0xe1, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x02, 0xde, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x00, 0xe1, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x02, 0xd1, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x28, +0x00, 0xe1, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x02, 0xcc, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2a, +0x00, 0xe1, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x02, 0xa8, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x36, +0x00, 0xe1, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x02, 0x95, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2c, +0x00, 0xe1, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x02, 0xd1, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x31, +0x00, 0xe1, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x02, 0xf1, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3a, +0x00, 0xe1, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x02, 0xd3, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3e, +0x00, 0xe1, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x08, +0xff, 0x3e, 0x01, 0xbb, 0x02, 0x00, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x00, 0xe1, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x02, 0xe9, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x38, +0x00, 0xe1, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x02, 0xfe, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x77, +0x00, 0xe1, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x02, 0xfe, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x79, +0x00, 0xe1, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x03, 0x0d, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x7b, +0x00, 0xe1, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x03, 0x27, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x7d, +0x00, 0xe1, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x08, +0xff, 0x3e, 0x01, 0xbb, 0x02, 0xd1, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x27, 0x07, 0x28, +0x00, 0xe1, 0xff, 0x8a, 0x00, 0x07, 0x07, 0x33, +0x00, 0xe1, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x03, 0x27, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x7f, +0x00, 0xe1, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x03, 0x27, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x81, +0x00, 0xe1, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x03, 0x35, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x83, +0x00, 0xe1, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x03, 0x28, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x85, +0x00, 0xe1, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x08, +0xff, 0x3e, 0x01, 0xbb, 0x02, 0xd1, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x27, 0x07, 0x31, +0x00, 0xe1, 0xff, 0x8a, 0x00, 0x07, 0x07, 0x33, +0x00, 0xe1, 0xfc, 0xea, 0x00, 0x02, 0x00, 0x08, +0xff, 0x33, 0x01, 0xdf, 0x02, 0x00, 0x00, 0x09, +0x00, 0x24, 0x00, 0x57, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x19, 0x2f, 0x1b, 0xb9, +0x00, 0x19, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x17, 0x2f, 0x1b, +0xb9, 0x00, 0x17, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x21, 0x00, 0x0d, 0x00, 0x03, 0x2b, 0xba, +0x00, 0x05, 0x00, 0x19, 0x00, 0x17, 0x11, 0x12, +0x39, 0xba, 0x00, 0x15, 0x00, 0x19, 0x00, 0x17, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x15, 0x2f, 0xb9, +0x00, 0x09, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x17, +0x10, 0xb8, 0x00, 0x14, 0xd0, 0xb8, 0x00, 0x1b, +0xd0, 0x30, 0x31, 0x25, 0x27, 0x2e, 0x01, 0x27, +0x23, 0x0e, 0x01, 0x0f, 0x01, 0x01, 0x0e, 0x01, +0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, 0x23, +0x27, 0x23, 0x07, 0x23, 0x13, 0x33, 0x13, 0x0e, +0x01, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, +0x01, 0x41, 0x22, 0x11, 0x1c, 0x0f, 0x04, 0x0f, +0x1b, 0x11, 0x22, 0x01, 0x5d, 0x0b, 0x25, 0x11, +0x23, 0x31, 0x2c, 0x1b, 0x06, 0x3d, 0xda, 0x3e, +0x2e, 0xc2, 0x2f, 0xc2, 0x20, 0x2a, 0x1f, 0x13, +0x0e, 0x13, 0x0b, 0xcd, 0x5d, 0x2f, 0x4e, 0x2d, +0x2d, 0x4f, 0x2e, 0x5d, 0xfe, 0x7e, 0x0a, 0x0e, +0x28, 0x2a, 0x26, 0x42, 0x13, 0xa8, 0xa8, 0x02, +0x00, 0xfe, 0x00, 0x14, 0x41, 0x1f, 0x1a, 0x1a, +0x06, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x15, +0x00, 0x00, 0x02, 0x88, 0x02, 0x00, 0x00, 0x06, +0x00, 0x16, 0x00, 0x6b, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0e, 0x2f, 0x1b, 0xb9, +0x00, 0x0e, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0c, 0x2f, 0x1b, +0xb9, 0x00, 0x0c, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x00, 0x00, 0x0e, 0x00, 0x0c, 0x11, 0x12, +0x39, 0xba, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x0c, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x09, 0xd0, 0xb9, +0x00, 0x07, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, +0x10, 0xb9, 0x00, 0x0b, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x0e, 0x10, 0xb9, 0x00, 0x10, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x15, 0x00, 0x0e, 0x00, 0x09, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x15, 0x10, 0xb9, +0x00, 0x13, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x25, +0x11, 0x23, 0x0e, 0x01, 0x0f, 0x01, 0x05, 0x15, +0x21, 0x35, 0x23, 0x07, 0x23, 0x01, 0x21, 0x15, +0x23, 0x15, 0x33, 0x15, 0x23, 0x15, 0x01, 0x5d, +0x03, 0x19, 0x34, 0x1a, 0x3b, 0x01, 0xd0, 0xfe, +0xd5, 0xba, 0x5f, 0x2f, 0x01, 0x30, 0x01, 0x39, +0xf3, 0xca, 0xca, 0xc6, 0x01, 0x15, 0x2a, 0x5a, +0x2d, 0x64, 0xa0, 0x26, 0xa1, 0xa1, 0x02, 0x00, +0x26, 0xb8, 0x25, 0xd7, 0xff, 0xff, 0x00, 0x15, +0x00, 0x00, 0x02, 0x88, 0x02, 0xde, 0x02, 0x26, +0x04, 0xf3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x01, 0xd9, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x15, +0x00, 0x00, 0x02, 0x88, 0x02, 0x95, 0x02, 0x26, +0x04, 0xf3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2c, +0x01, 0xd9, 0xff, 0x8a, 0x00, 0x03, 0x00, 0x25, +0x00, 0x00, 0x01, 0xe6, 0x02, 0x00, 0x00, 0x0e, +0x00, 0x17, 0x00, 0x2b, 0x00, 0x67, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x24, 0x2f, +0x1b, 0xb9, 0x00, 0x24, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1e, +0x2f, 0x1b, 0xb9, 0x00, 0x1e, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x03, +0x2b, 0xba, 0x00, 0x10, 0x00, 0x08, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x1e, 0x10, 0xb9, 0x00, 0x00, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x24, 0x10, 0xb9, +0x00, 0x16, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x18, +0x00, 0x10, 0x00, 0x08, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x0c, 0x10, 0xb8, 0x00, 0x20, 0xd0, 0xb8, +0x00, 0x0b, 0x10, 0xb8, 0x00, 0x22, 0xd0, 0xb8, +0x00, 0x22, 0x2f, 0x30, 0x31, 0x25, 0x32, 0x3e, +0x02, 0x35, 0x34, 0x26, 0x2b, 0x01, 0x15, 0x33, +0x15, 0x23, 0x15, 0x35, 0x33, 0x32, 0x36, 0x35, +0x34, 0x26, 0x2b, 0x01, 0x17, 0x1e, 0x01, 0x15, +0x14, 0x06, 0x2b, 0x01, 0x35, 0x23, 0x35, 0x37, +0x11, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, +0x01, 0x0c, 0x27, 0x40, 0x2e, 0x19, 0x5a, 0x54, +0x6c, 0x91, 0x91, 0x5d, 0x54, 0x48, 0x4d, 0x4b, +0x61, 0xcb, 0x36, 0x45, 0x71, 0x5f, 0xa4, 0x4d, +0x4d, 0x99, 0x54, 0x65, 0x2d, 0x2c, 0x22, 0x0c, +0x1b, 0x2c, 0x20, 0x36, 0x33, 0x5b, 0x1f, 0x62, +0xfe, 0x32, 0x30, 0x31, 0x2b, 0xcd, 0x0a, 0x3c, +0x35, 0x4c, 0x4a, 0x84, 0x1d, 0x02, 0x01, 0x5d, +0x3b, 0x43, 0x27, 0x3a, 0x0c, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0xff, 0x61, 0x01, 0xd5, +0x02, 0x00, 0x02, 0x26, 0x04, 0xc4, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x01, 0x18, 0xfd, 0x03, +0xff, 0xff, 0x00, 0x37, 0xff, 0x25, 0x01, 0xc8, +0x02, 0x0c, 0x02, 0x26, 0x04, 0xc5, 0x00, 0x00, +0x00, 0x07, 0x07, 0x57, 0x01, 0x1f, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x01, 0xc8, +0x02, 0xde, 0x02, 0x26, 0x04, 0xc5, 0x00, 0x00, +0x00, 0x07, 0x07, 0x25, 0x01, 0x20, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x01, 0xc8, +0x02, 0xd1, 0x02, 0x26, 0x04, 0xc5, 0x00, 0x00, +0x00, 0x07, 0x07, 0x28, 0x01, 0x20, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x01, 0xc8, +0x02, 0xd3, 0x02, 0x26, 0x04, 0xc5, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3e, 0x01, 0x20, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x01, 0xc8, +0x02, 0xab, 0x02, 0x26, 0x04, 0xc5, 0x00, 0x00, +0x00, 0x07, 0x07, 0x34, 0x01, 0x20, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xe5, +0x02, 0xd3, 0x02, 0x26, 0x04, 0xc6, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3e, 0x01, 0x14, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x61, 0xff, 0x3e, 0x01, 0xe5, +0x02, 0x00, 0x02, 0x26, 0x04, 0xc6, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x10, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x61, 0xff, 0x61, 0x01, 0xe5, +0x02, 0x00, 0x02, 0x26, 0x04, 0xc6, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x01, 0x10, 0xfd, 0x03, +0xff, 0xff, 0x00, 0x25, 0x00, 0x00, 0x01, 0xf6, +0x02, 0x00, 0x02, 0x06, 0x05, 0x9b, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0x9e, +0x02, 0xde, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x07, 0x07, 0x22, 0x01, 0x05, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0x9e, +0x02, 0xde, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x07, 0x07, 0x25, 0x01, 0x05, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0x9e, +0x02, 0xd1, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x07, 0x07, 0x28, 0x01, 0x05, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0x9e, +0x02, 0xd3, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3e, 0x01, 0x05, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0x9e, +0x02, 0xa8, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x07, 0x07, 0x36, 0x01, 0x05, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0x9e, +0x02, 0x95, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2c, 0x01, 0x05, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0x9e, +0x02, 0xd1, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x07, 0x07, 0x31, 0x01, 0x05, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0x9e, +0x02, 0xab, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x07, 0x07, 0x34, 0x01, 0x05, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x61, 0xff, 0x3e, 0x01, 0x9e, +0x02, 0x00, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x08, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0x9e, +0x02, 0xe9, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x07, 0x07, 0x38, 0x01, 0x05, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x60, 0x00, 0x00, 0x01, 0xaa, +0x02, 0xcc, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2a, 0x01, 0x05, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd0, +0x02, 0xfe, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x07, 0x07, 0x77, 0x01, 0x05, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x4c, 0x00, 0x00, 0x01, 0x9e, +0x02, 0xfe, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x07, 0x07, 0x79, 0x01, 0x05, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xba, +0x03, 0x0d, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x07, 0x07, 0x7b, 0x01, 0x05, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0x9e, +0x03, 0x27, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x07, 0x07, 0x7d, 0x01, 0x05, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x61, 0xff, 0x3e, 0x01, 0x9e, +0x02, 0xd1, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x27, 0x07, 0x28, 0x01, 0x05, 0xff, 0x8a, +0x00, 0x07, 0x07, 0x33, 0x01, 0x08, 0xfc, 0xea, +0x00, 0x01, 0x00, 0x61, 0xff, 0x33, 0x01, 0xab, +0x02, 0x00, 0x00, 0x20, 0x00, 0x5d, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, +0x1b, 0xb9, 0x00, 0x08, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, +0x2f, 0x1b, 0xb9, 0x00, 0x07, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x08, 0x10, 0xb9, 0x00, 0x0a, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x0e, 0x00, 0x08, +0x00, 0x07, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x0e, +0x2f, 0xb9, 0x00, 0x0c, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x07, 0x10, 0xb9, 0x00, 0x11, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x07, 0x10, 0xb8, 0x00, 0x12, +0xd0, 0x30, 0x31, 0x05, 0x22, 0x26, 0x35, 0x34, +0x36, 0x37, 0x23, 0x11, 0x21, 0x15, 0x21, 0x15, +0x33, 0x15, 0x23, 0x15, 0x21, 0x15, 0x23, 0x0e, +0x03, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x17, +0x0e, 0x01, 0x01, 0x6a, 0x23, 0x31, 0x2b, 0x1e, +0xfe, 0x01, 0x33, 0xfe, 0xfb, 0xdd, 0xdd, 0x01, +0x0f, 0x02, 0x11, 0x22, 0x1b, 0x11, 0x20, 0x13, +0x19, 0x12, 0x10, 0x0b, 0x25, 0xcd, 0x28, 0x2a, +0x26, 0x42, 0x13, 0x02, 0x00, 0x26, 0xb8, 0x25, +0xd7, 0x26, 0x03, 0x15, 0x1f, 0x27, 0x16, 0x1a, +0x1a, 0x0e, 0x1b, 0x0a, 0x0e, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0x9e, +0x03, 0x3b, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x07, 0x07, 0x89, 0x01, 0x05, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x01, 0xce, +0x02, 0xde, 0x02, 0x26, 0x04, 0xc9, 0x00, 0x00, +0x00, 0x07, 0x07, 0x25, 0x01, 0x2e, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x01, 0xce, +0x02, 0xd1, 0x02, 0x26, 0x04, 0xc9, 0x00, 0x00, +0x00, 0x07, 0x07, 0x28, 0x01, 0x2e, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x01, 0xce, +0x02, 0xd1, 0x02, 0x26, 0x04, 0xc9, 0x00, 0x00, +0x00, 0x07, 0x07, 0x31, 0x01, 0x2e, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x01, 0xce, +0x02, 0xab, 0x02, 0x26, 0x04, 0xc9, 0x00, 0x00, +0x00, 0x07, 0x07, 0x34, 0x01, 0x2e, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x37, 0xff, 0x25, 0x01, 0xce, +0x02, 0x0c, 0x02, 0x26, 0x04, 0xc9, 0x00, 0x00, +0x00, 0x07, 0x07, 0x54, 0x01, 0x28, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x01, 0xce, +0x02, 0xd3, 0x02, 0x26, 0x04, 0xc9, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3e, 0x01, 0x2e, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x01, 0xce, +0x02, 0x95, 0x02, 0x26, 0x04, 0xc9, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2c, 0x01, 0x2e, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x01, 0xd3, +0x02, 0xcc, 0x02, 0x26, 0x04, 0xc9, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2a, 0x01, 0x2e, 0xff, 0x8a, +0x00, 0x01, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x01, +0x02, 0x6f, 0x00, 0x32, 0x00, 0x59, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, 0x2f, +0x1b, 0xb9, 0x00, 0x0d, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, +0x2f, 0x1b, 0xb9, 0x00, 0x03, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x15, 0x00, 0x01, 0x00, 0x1b, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x0d, 0x10, 0xb9, +0x00, 0x25, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x03, +0x10, 0xb9, 0x00, 0x2b, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x32, 0x00, 0x0d, 0x00, 0x03, 0x11, 0x12, +0x39, 0x7d, 0xb8, 0x00, 0x32, 0x2f, 0x18, 0xb9, +0x00, 0x30, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x25, +0x0e, 0x01, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, +0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x26, 0x35, +0x34, 0x36, 0x33, 0x32, 0x17, 0x07, 0x2e, 0x01, +0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x17, 0x07, +0x2e, 0x01, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, +0x33, 0x32, 0x36, 0x37, 0x35, 0x23, 0x35, 0x33, +0x01, 0xce, 0x1a, 0x55, 0x37, 0x36, 0x59, 0x3f, +0x23, 0x24, 0x42, 0x5b, 0x38, 0x1c, 0x2d, 0x13, +0x09, 0x30, 0x23, 0x17, 0x14, 0x09, 0x07, 0x0d, +0x0b, 0x17, 0x16, 0x0b, 0x10, 0x1b, 0x15, 0x3a, +0x2d, 0x5e, 0x6b, 0x67, 0x5e, 0x25, 0x3d, 0x14, +0x80, 0xac, 0x2b, 0x17, 0x20, 0x25, 0x46, 0x63, +0x3f, 0x3d, 0x63, 0x46, 0x25, 0x0a, 0x08, 0x16, +0x16, 0x22, 0x27, 0x0a, 0x21, 0x02, 0x04, 0x1a, +0x11, 0x12, 0x22, 0x14, 0x1e, 0x11, 0x19, 0x78, +0x6a, 0x69, 0x7b, 0x13, 0x11, 0x99, 0x25, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xe1, +0x02, 0xd1, 0x02, 0x26, 0x04, 0xca, 0x00, 0x00, +0x00, 0x07, 0x07, 0x28, 0x01, 0x21, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x61, 0xff, 0x3e, 0x01, 0xe1, +0x02, 0x00, 0x02, 0x26, 0x04, 0xca, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x21, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x61, 0xff, 0x1a, 0x01, 0xe1, +0x02, 0x00, 0x02, 0x26, 0x04, 0xca, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2f, 0x01, 0x21, 0xfc, 0xe0, +0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x02, 0x40, +0x02, 0x00, 0x00, 0x03, 0x00, 0x17, 0x00, 0x6f, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x10, 0x2f, 0x1b, 0xb9, 0x00, 0x10, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x10, 0x10, 0xb8, +0x00, 0x0f, 0xdc, 0xb8, 0x00, 0x0c, 0xdc, 0xb8, +0x00, 0x00, 0xd0, 0xb8, 0x00, 0x0c, 0x10, 0xb8, +0x00, 0x02, 0xdc, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x04, 0xd0, 0xb8, 0x00, 0x0b, 0x10, 0xb8, +0x00, 0x07, 0xd0, 0xb8, 0x00, 0x02, 0x10, 0xb9, +0x00, 0x09, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0f, +0x10, 0xb8, 0x00, 0x13, 0xd0, 0xb8, 0x00, 0x10, +0x10, 0xb8, 0x00, 0x14, 0xd0, 0xb8, 0x00, 0x13, +0x10, 0xb8, 0x00, 0x17, 0xd0, 0x30, 0x31, 0x01, +0x21, 0x15, 0x21, 0x37, 0x23, 0x11, 0x23, 0x35, +0x21, 0x15, 0x23, 0x11, 0x23, 0x35, 0x37, 0x35, +0x33, 0x15, 0x21, 0x35, 0x33, 0x15, 0x33, 0x01, +0xc7, 0xfe, 0xdc, 0x01, 0x24, 0x79, 0x4b, 0x2e, +0xfe, 0xdc, 0x2e, 0x51, 0x51, 0x2e, 0x01, 0x24, +0x2e, 0x4b, 0x01, 0x7f, 0x5c, 0x5c, 0xfe, 0x81, +0xfd, 0xfd, 0x01, 0x7f, 0x1b, 0x04, 0x62, 0x62, +0x62, 0x62, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x00, 0xa1, 0x02, 0xde, 0x02, 0x26, +0x04, 0xcb, 0x00, 0x00, 0x00, 0x06, 0x07, 0x22, +0x78, 0x8a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4f, +0x00, 0x00, 0x00, 0xe8, 0x02, 0xde, 0x02, 0x26, +0x04, 0xcb, 0x00, 0x00, 0x00, 0x06, 0x07, 0x25, +0x78, 0x8a, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf1, +0x00, 0x00, 0x00, 0xff, 0x02, 0xd1, 0x02, 0x26, +0x04, 0xcb, 0x00, 0x00, 0x00, 0x06, 0x07, 0x28, +0x78, 0x8a, 0x00, 0x00, 0xff, 0xff, 0xff, 0xd3, +0x00, 0x00, 0x01, 0x1d, 0x02, 0xcc, 0x02, 0x26, +0x04, 0xcb, 0x00, 0x00, 0x00, 0x06, 0x07, 0x2a, +0x78, 0x8a, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf2, +0x00, 0x00, 0x00, 0xfe, 0x02, 0xa8, 0x02, 0x26, +0x04, 0xcb, 0x00, 0x00, 0x00, 0x06, 0x07, 0x36, +0x78, 0x8a, 0x00, 0x00, 0xff, 0xff, 0xff, 0xfc, +0x00, 0x00, 0x00, 0xf4, 0x02, 0x95, 0x02, 0x26, +0x04, 0xcb, 0x00, 0x00, 0x00, 0x06, 0x07, 0x2c, +0x78, 0x8a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x50, +0x00, 0x00, 0x00, 0xa0, 0x02, 0xab, 0x02, 0x26, +0x04, 0xcb, 0x00, 0x00, 0x00, 0x06, 0x07, 0x34, +0x78, 0x8a, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf1, +0x00, 0x00, 0x00, 0xff, 0x02, 0xd3, 0x02, 0x26, +0x04, 0xcb, 0x00, 0x00, 0x00, 0x06, 0x07, 0x3e, +0x78, 0x8a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x41, +0x00, 0x00, 0x00, 0xbe, 0x02, 0xe9, 0x02, 0x26, +0x04, 0xcb, 0x00, 0x00, 0x00, 0x06, 0x07, 0x38, +0x78, 0x8a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x52, +0xff, 0x3e, 0x00, 0x9e, 0x02, 0x00, 0x02, 0x26, +0x04, 0xcb, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x00, 0x78, 0xfc, 0xea, 0x00, 0x01, 0x00, 0x2c, +0xff, 0x33, 0x00, 0xc1, 0x02, 0x00, 0x00, 0x15, +0x00, 0x35, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x08, 0x2f, 0x1b, 0xb9, 0x00, 0x08, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x07, 0x2f, 0x1b, 0xb9, 0x00, +0x07, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x10, +0x00, 0x00, 0x00, 0x03, 0x2b, 0xb8, 0x00, 0x07, +0x10, 0xb8, 0x00, 0x0a, 0xd0, 0x30, 0x31, 0x17, +0x22, 0x26, 0x35, 0x34, 0x36, 0x37, 0x23, 0x11, +0x33, 0x11, 0x0e, 0x01, 0x15, 0x14, 0x16, 0x33, +0x32, 0x37, 0x17, 0x0e, 0x01, 0x80, 0x23, 0x31, +0x24, 0x1a, 0x09, 0x2e, 0x1a, 0x22, 0x20, 0x13, +0x19, 0x12, 0x10, 0x0b, 0x25, 0xcd, 0x28, 0x2a, +0x29, 0x38, 0x1a, 0x02, 0x00, 0xfe, 0x00, 0x1d, +0x36, 0x21, 0x1a, 0x1a, 0x0e, 0x1b, 0x0a, 0x0e, +0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x01, 0x00, +0x02, 0xd1, 0x02, 0x26, 0x04, 0xcb, 0x00, 0x00, +0x00, 0x06, 0x07, 0x31, 0x78, 0x8a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x29, 0xff, 0xf4, 0x01, 0xae, +0x02, 0xd1, 0x02, 0x26, 0x04, 0xcc, 0x00, 0x00, +0x00, 0x07, 0x07, 0x28, 0x01, 0x27, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x61, 0xff, 0x25, 0x01, 0xe1, +0x02, 0x00, 0x02, 0x26, 0x04, 0xcd, 0x00, 0x00, +0x00, 0x07, 0x07, 0x54, 0x01, 0x20, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0xff, 0x3e, 0x01, 0xe1, +0x02, 0x00, 0x02, 0x26, 0x04, 0xcd, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x20, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x61, 0xff, 0x61, 0x01, 0xe1, +0x02, 0x00, 0x02, 0x26, 0x04, 0xcd, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x01, 0x20, 0xfd, 0x03, +0xff, 0xff, 0x00, 0x55, 0x00, 0x00, 0x01, 0x8b, +0x02, 0xde, 0x02, 0x26, 0x04, 0xce, 0x00, 0x00, +0x00, 0x06, 0x07, 0x25, 0x7e, 0x8a, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0x8b, +0x02, 0x5e, 0x02, 0x26, 0x04, 0xce, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3f, 0x01, 0x47, 0xff, 0x6c, +0xff, 0xff, 0x00, 0x61, 0xff, 0x25, 0x01, 0x8b, +0x02, 0x00, 0x02, 0x26, 0x04, 0xce, 0x00, 0x00, +0x00, 0x07, 0x07, 0x54, 0x01, 0x01, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0x8b, +0x02, 0x00, 0x02, 0x26, 0x04, 0xce, 0x00, 0x00, +0x00, 0x07, 0x04, 0x77, 0x00, 0xdb, 0x00, 0xec, +0xff, 0xff, 0x00, 0x61, 0xff, 0x3e, 0x01, 0x8b, +0x02, 0x00, 0x02, 0x26, 0x04, 0xce, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x01, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x02, 0xff, 0x3e, 0x01, 0x8b, +0x02, 0x95, 0x02, 0x26, 0x04, 0xce, 0x00, 0x00, +0x00, 0x26, 0x07, 0x2c, 0x7e, 0x8a, 0x00, 0x07, +0x07, 0x33, 0x01, 0x01, 0xfc, 0xea, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0xff, 0x61, 0x01, 0x8b, +0x02, 0x00, 0x02, 0x26, 0x04, 0xce, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x01, 0x01, 0xfd, 0x03, +0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x01, 0x8f, +0x02, 0x00, 0x00, 0x0d, 0x00, 0x5d, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, 0x2f, +0x1b, 0xb9, 0x00, 0x07, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x01, +0x2f, 0x1b, 0xb9, 0x00, 0x01, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, +0x2b, 0xba, 0x00, 0x05, 0x00, 0x04, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x01, 0x10, 0xb9, 0x00, 0x00, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x03, 0x00, 0x01, +0x00, 0x07, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x03, +0x10, 0xb8, 0x00, 0x06, 0xd0, 0xb8, 0x00, 0x03, +0x10, 0xb8, 0x00, 0x0c, 0xd0, 0xb8, 0x00, 0x09, +0xd0, 0x30, 0x31, 0x25, 0x15, 0x21, 0x35, 0x07, +0x27, 0x37, 0x11, 0x33, 0x11, 0x37, 0x17, 0x07, +0x15, 0x01, 0x8f, 0xfe, 0xd6, 0x4e, 0x13, 0x61, +0x2e, 0x9d, 0x12, 0xaf, 0x27, 0x27, 0xbc, 0x2a, +0x1d, 0x35, 0x01, 0x1c, 0xfe, 0xf8, 0x53, 0x1e, +0x5c, 0xaa, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x02, 0x0f, 0x02, 0xde, 0x02, 0x26, +0x04, 0xcf, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x01, 0x38, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x02, 0x0f, 0x02, 0xab, 0x02, 0x26, +0x04, 0xcf, 0x00, 0x00, 0x00, 0x07, 0x07, 0x34, +0x01, 0x38, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x61, +0xff, 0x3e, 0x02, 0x0f, 0x02, 0x00, 0x02, 0x26, +0x04, 0xcf, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x38, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xdb, 0x02, 0xde, 0x02, 0x26, +0x04, 0xd0, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x01, 0x26, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xdb, 0x02, 0xde, 0x02, 0x26, +0x04, 0xd0, 0x00, 0x00, 0x00, 0x07, 0x07, 0x22, +0x01, 0x26, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xdb, 0x02, 0xd3, 0x02, 0x26, +0x04, 0xd0, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3e, +0x01, 0x26, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xdb, 0x02, 0xcc, 0x02, 0x26, +0x04, 0xd0, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2a, +0x01, 0x26, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x61, +0xff, 0x25, 0x01, 0xdb, 0x02, 0x00, 0x02, 0x26, +0x04, 0xd0, 0x00, 0x00, 0x00, 0x07, 0x07, 0x54, +0x01, 0x26, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xdb, 0x02, 0xab, 0x02, 0x26, +0x04, 0xd0, 0x00, 0x00, 0x00, 0x07, 0x07, 0x34, +0x01, 0x26, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x61, +0xff, 0x3e, 0x01, 0xdb, 0x02, 0x00, 0x02, 0x26, +0x04, 0xd0, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x26, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x61, +0xff, 0x61, 0x01, 0xdb, 0x02, 0x00, 0x02, 0x26, +0x04, 0xd0, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2b, +0x01, 0x26, 0xfd, 0x03, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x02, 0xde, 0x02, 0x26, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x22, +0x01, 0x1f, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x02, 0xde, 0x02, 0x26, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x01, 0x1f, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x02, 0xd1, 0x02, 0x26, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x28, +0x01, 0x1f, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x02, 0xcc, 0x02, 0x26, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2a, +0x01, 0x1f, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x02, 0xa8, 0x02, 0x26, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x36, +0x01, 0x1f, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x02, 0x95, 0x02, 0x26, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2c, +0x01, 0x1f, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x02, 0xef, 0x02, 0x26, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3c, +0x01, 0x1f, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x02, 0xd3, 0x02, 0x26, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3e, +0x01, 0x1f, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x37, +0xff, 0x3e, 0x02, 0x07, 0x02, 0x0c, 0x02, 0x26, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x1f, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x02, 0xe9, 0x02, 0x26, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x38, +0x01, 0x1f, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x02, 0xfe, 0x02, 0x26, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x77, +0x01, 0x1f, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x02, 0xfe, 0x02, 0x26, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x79, +0x01, 0x1f, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x03, 0x0d, 0x02, 0x26, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x7b, +0x01, 0x1f, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x03, 0x27, 0x02, 0x26, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x7d, +0x01, 0x1f, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x37, +0xff, 0x3e, 0x02, 0x07, 0x02, 0xd1, 0x02, 0x26, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x27, 0x07, 0x28, +0x01, 0x1f, 0xff, 0x8a, 0x00, 0x07, 0x07, 0x33, +0x01, 0x1f, 0xfc, 0xea, 0x00, 0x03, 0x00, 0x2e, +0xff, 0xea, 0x02, 0x10, 0x02, 0x17, 0x00, 0x09, +0x00, 0x14, 0x00, 0x2f, 0x00, 0x85, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x2b, 0x2f, +0x1b, 0xb9, 0x00, 0x2b, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1d, +0x2f, 0x1b, 0xb9, 0x00, 0x1d, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x2b, +0x11, 0x12, 0x39, 0xb9, 0x00, 0x02, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x09, 0x00, 0x1d, 0x00, 0x2b, +0x11, 0x12, 0x39, 0xba, 0x00, 0x0a, 0x00, 0x2b, +0x00, 0x1d, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x2b, +0x10, 0xb9, 0x00, 0x0d, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x14, 0x00, 0x1d, 0x00, 0x2b, 0x11, 0x12, +0x39, 0xba, 0x00, 0x15, 0x00, 0x2b, 0x00, 0x1d, +0x11, 0x12, 0x39, 0xba, 0x00, 0x20, 0x00, 0x1d, +0x00, 0x2b, 0x11, 0x12, 0x39, 0xba, 0x00, 0x23, +0x00, 0x1d, 0x00, 0x2b, 0x11, 0x12, 0x39, 0xba, +0x00, 0x2d, 0x00, 0x2b, 0x00, 0x1d, 0x11, 0x12, +0x39, 0x30, 0x31, 0x37, 0x16, 0x33, 0x32, 0x3e, +0x02, 0x35, 0x34, 0x2f, 0x01, 0x2e, 0x01, 0x23, +0x22, 0x0e, 0x02, 0x15, 0x14, 0x17, 0x01, 0x1e, +0x01, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, +0x27, 0x07, 0x27, 0x37, 0x2e, 0x01, 0x35, 0x34, +0x3e, 0x02, 0x33, 0x32, 0x17, 0x37, 0x17, 0xa0, +0x32, 0x4d, 0x2a, 0x44, 0x30, 0x1b, 0x25, 0x15, +0x18, 0x40, 0x27, 0x2a, 0x44, 0x31, 0x1a, 0x25, +0x01, 0x45, 0x1a, 0x1d, 0x23, 0x3d, 0x55, 0x33, +0x2f, 0x4e, 0x1e, 0x3c, 0x1a, 0x40, 0x1a, 0x1d, +0x22, 0x3e, 0x55, 0x33, 0x5d, 0x3e, 0x3c, 0x1a, +0x51, 0x35, 0x20, 0x3c, 0x54, 0x35, 0x5a, 0x39, +0x1c, 0x19, 0x1b, 0x1f, 0x3b, 0x54, 0x35, 0x59, +0x3b, 0x01, 0x4a, 0x22, 0x5b, 0x39, 0x3e, 0x63, +0x46, 0x26, 0x1f, 0x1d, 0x46, 0x15, 0x4b, 0x23, +0x5b, 0x39, 0x3e, 0x63, 0x45, 0x25, 0x3c, 0x47, +0x15, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x37, +0x00, 0x00, 0x02, 0x9e, 0x02, 0x00, 0x00, 0x12, +0x00, 0x1d, 0x00, 0x55, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, 0x1b, 0xb9, +0x00, 0x08, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, +0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x08, 0x10, 0xb9, 0x00, 0x15, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0a, 0xd0, 0xba, 0x00, 0x0e, +0x00, 0x08, 0x00, 0x00, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x0e, 0x2f, 0xb9, 0x00, 0x0c, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x1d, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x11, 0xd0, 0x30, +0x31, 0x21, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, +0x33, 0x21, 0x15, 0x23, 0x15, 0x33, 0x15, 0x23, +0x15, 0x33, 0x15, 0x25, 0x11, 0x23, 0x22, 0x06, +0x15, 0x14, 0x1e, 0x02, 0x33, 0x01, 0x41, 0x86, +0x84, 0x21, 0x42, 0x64, 0x42, 0x01, 0x54, 0xf3, +0xca, 0xca, 0xfd, 0xfe, 0xd5, 0x30, 0x73, 0x69, +0x1a, 0x36, 0x53, 0x39, 0x88, 0x77, 0x3b, 0x5f, +0x43, 0x24, 0x26, 0xb8, 0x25, 0xd7, 0x26, 0x26, +0x01, 0xb6, 0x74, 0x69, 0x31, 0x50, 0x39, 0x1f, +0x00, 0x02, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x0c, +0x02, 0x97, 0x00, 0x11, 0x00, 0x31, 0x00, 0x47, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x2a, 0x2f, 0x1b, 0xb9, 0x00, 0x2a, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x20, 0x2f, 0x1b, 0xb9, 0x00, 0x20, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x00, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x2a, 0x10, 0xb9, 0x00, 0x0a, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x18, 0x00, 0x20, +0x00, 0x2a, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x18, +0x10, 0xb8, 0x00, 0x2c, 0xd0, 0x30, 0x31, 0x25, +0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, +0x22, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x01, 0x1e, +0x01, 0x15, 0x14, 0x06, 0x07, 0x1e, 0x01, 0x15, +0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x17, 0x3e, 0x01, +0x35, 0x34, 0x27, 0x01, 0x1f, 0x29, 0x44, 0x30, +0x1b, 0x1b, 0x30, 0x44, 0x29, 0x54, 0x64, 0x1a, +0x30, 0x44, 0x01, 0x04, 0x09, 0x0a, 0x36, 0x2b, +0x2b, 0x31, 0x23, 0x3d, 0x55, 0x33, 0x33, 0x55, +0x3e, 0x22, 0x22, 0x3e, 0x55, 0x33, 0x38, 0x30, +0x2e, 0x2c, 0x0e, 0x1d, 0x20, 0x3b, 0x54, 0x35, +0x34, 0x54, 0x3b, 0x1f, 0x78, 0x6a, 0x35, 0x54, +0x3b, 0x20, 0x02, 0x7a, 0x14, 0x1e, 0x16, 0x2c, +0x38, 0x0d, 0x22, 0x70, 0x4b, 0x3e, 0x63, 0x46, +0x26, 0x26, 0x46, 0x63, 0x3e, 0x3e, 0x63, 0x45, +0x25, 0x17, 0x08, 0x2f, 0x20, 0x1a, 0x1d, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x0c, +0x02, 0xde, 0x02, 0x26, 0x05, 0x54, 0x00, 0x00, +0x00, 0x07, 0x07, 0x25, 0x01, 0x1f, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x0c, +0x02, 0xde, 0x02, 0x26, 0x05, 0x54, 0x00, 0x00, +0x00, 0x07, 0x07, 0x22, 0x01, 0x1f, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x0c, +0x02, 0xe9, 0x02, 0x26, 0x05, 0x54, 0x00, 0x00, +0x00, 0x07, 0x07, 0x38, 0x01, 0x1f, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x0c, +0x02, 0xcc, 0x02, 0x26, 0x05, 0x54, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2a, 0x01, 0x1c, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x37, 0xff, 0x3e, 0x02, 0x0c, +0x02, 0x97, 0x02, 0x26, 0x05, 0x54, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x1f, 0xfc, 0xea, +0x00, 0x02, 0x00, 0x37, 0xff, 0x33, 0x02, 0x07, +0x02, 0x0c, 0x00, 0x23, 0x00, 0x35, 0x00, 0x49, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x10, 0x2f, 0x1b, 0xb9, 0x00, 0x10, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x03, 0x2b, 0xb8, 0x00, 0x06, 0x10, 0xb8, +0x00, 0x18, 0xd0, 0xb8, 0x00, 0x06, 0x10, 0xb9, +0x00, 0x24, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x10, +0x10, 0xb9, 0x00, 0x2e, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x05, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, +0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, +0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, 0x0e, +0x01, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, 0x17, +0x0e, 0x01, 0x27, 0x32, 0x3e, 0x02, 0x35, 0x34, +0x2e, 0x02, 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, +0x02, 0x01, 0x3e, 0x23, 0x31, 0x1f, 0x1d, 0x37, +0x59, 0x3e, 0x21, 0x22, 0x3e, 0x55, 0x33, 0x33, +0x55, 0x3d, 0x23, 0x55, 0x4e, 0x2b, 0x28, 0x20, +0x13, 0x19, 0x12, 0x11, 0x0c, 0x25, 0x30, 0x29, +0x44, 0x30, 0x1b, 0x1b, 0x30, 0x44, 0x29, 0x54, +0x64, 0x1a, 0x30, 0x44, 0xcd, 0x28, 0x2a, 0x1e, +0x3a, 0x17, 0x26, 0x46, 0x63, 0x3e, 0x3e, 0x63, +0x45, 0x25, 0x25, 0x45, 0x63, 0x3e, 0x66, 0x80, +0x23, 0x13, 0x3e, 0x1b, 0x1a, 0x1a, 0x0e, 0x1b, +0x0a, 0x0e, 0xea, 0x20, 0x3b, 0x54, 0x35, 0x34, +0x54, 0x3b, 0x1f, 0x78, 0x6a, 0x35, 0x54, 0x3b, +0x20, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x02, 0xd1, 0x02, 0x26, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x31, +0x01, 0x1f, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x03, 0x3b, 0x02, 0x26, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x89, +0x01, 0x1f, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xc8, 0x02, 0xde, 0x02, 0x26, +0x04, 0xd4, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x01, 0x10, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xc8, 0x02, 0xab, 0x02, 0x26, +0x04, 0xd4, 0x00, 0x00, 0x00, 0x07, 0x07, 0x34, +0x01, 0x10, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xc8, 0x02, 0xd3, 0x02, 0x26, +0x04, 0xd4, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3e, +0x01, 0x10, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x61, +0xff, 0x25, 0x01, 0xc8, 0x02, 0x00, 0x02, 0x26, +0x04, 0xd4, 0x00, 0x00, 0x00, 0x07, 0x07, 0x54, +0x01, 0x12, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0xff, 0x3e, 0x01, 0xc8, 0x02, 0x00, 0x02, 0x26, +0x04, 0xd4, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x12, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x61, +0xff, 0x3e, 0x01, 0xc8, 0x02, 0x95, 0x02, 0x26, +0x04, 0xd4, 0x00, 0x00, 0x00, 0x27, 0x07, 0x2c, +0x01, 0x10, 0xff, 0x8a, 0x00, 0x07, 0x07, 0x33, +0x01, 0x12, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x61, +0xff, 0x61, 0x01, 0xc8, 0x02, 0x00, 0x02, 0x26, +0x04, 0xd4, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2b, +0x01, 0x12, 0xfd, 0x03, 0xff, 0xff, 0x00, 0x2e, +0xff, 0xf4, 0x01, 0xa0, 0x02, 0xde, 0x02, 0x26, +0x04, 0xd5, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x00, 0xf4, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x2e, +0xff, 0xf4, 0x01, 0xa0, 0x02, 0xd1, 0x02, 0x26, +0x04, 0xd5, 0x00, 0x00, 0x00, 0x07, 0x07, 0x28, +0x00, 0xf4, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x2e, +0xff, 0xf4, 0x01, 0xa0, 0x02, 0xd3, 0x02, 0x26, +0x04, 0xd5, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3e, +0x00, 0xf4, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x2e, +0xff, 0x25, 0x01, 0xa0, 0x02, 0x0c, 0x02, 0x26, +0x04, 0xd5, 0x00, 0x00, 0x00, 0x07, 0x07, 0x57, +0x00, 0xee, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2e, +0xff, 0x25, 0x01, 0xa0, 0x02, 0x0c, 0x02, 0x26, +0x04, 0xd5, 0x00, 0x00, 0x00, 0x07, 0x07, 0x54, +0x00, 0xfc, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2e, +0xff, 0xf4, 0x01, 0xa0, 0x02, 0xab, 0x02, 0x26, +0x04, 0xd5, 0x00, 0x00, 0x00, 0x07, 0x07, 0x34, +0x00, 0xf4, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x2e, +0xff, 0x3e, 0x01, 0xa0, 0x02, 0x0c, 0x02, 0x26, +0x04, 0xd5, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x00, 0xfc, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x2e, +0xff, 0xf4, 0x03, 0x5f, 0x02, 0x0c, 0x00, 0x26, +0x04, 0xd5, 0x00, 0x00, 0x00, 0x07, 0x04, 0xd5, +0x01, 0xbf, 0x00, 0x00, 0x00, 0x01, 0x00, 0x62, +0xff, 0xf4, 0x02, 0x0c, 0x02, 0x0c, 0x00, 0x2b, +0x00, 0x5d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x1e, 0x2f, 0x1b, 0xb9, 0x00, 0x1e, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x06, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x0e, 0x00, 0x1e, +0x00, 0x00, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x0e, +0x10, 0xb8, 0x00, 0x0f, 0xdc, 0xb8, 0x00, 0x1e, +0x10, 0xb9, 0x00, 0x13, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x18, 0xd0, 0xb8, +0x00, 0x18, 0x2f, 0xba, 0x00, 0x22, 0x00, 0x0e, +0x00, 0x0f, 0x11, 0x12, 0x39, 0x30, 0x31, 0x05, +0x22, 0x26, 0x27, 0x37, 0x16, 0x33, 0x32, 0x36, +0x35, 0x34, 0x2e, 0x02, 0x2f, 0x01, 0x37, 0x2e, +0x01, 0x23, 0x22, 0x06, 0x15, 0x11, 0x23, 0x11, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x07, +0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x01, 0x72, +0x2d, 0x4f, 0x1b, 0x1c, 0x34, 0x46, 0x34, 0x37, +0x0e, 0x27, 0x45, 0x36, 0x03, 0x7f, 0x10, 0x3b, +0x30, 0x49, 0x54, 0x2e, 0x1e, 0x36, 0x4c, 0x2d, +0x41, 0x52, 0x18, 0x81, 0x32, 0x45, 0x2a, 0x12, +0x17, 0x28, 0x39, 0x0c, 0x22, 0x1c, 0x1f, 0x35, +0x3a, 0x2d, 0x15, 0x25, 0x1f, 0x18, 0x08, 0x1f, +0x7f, 0x1e, 0x2c, 0x52, 0x57, 0xfe, 0xc5, 0x01, +0x46, 0x2e, 0x4a, 0x33, 0x1b, 0x41, 0x32, 0x80, +0x08, 0x1c, 0x27, 0x31, 0x1b, 0x1d, 0x33, 0x27, +0x17, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x1d, +0x00, 0x00, 0x01, 0xa8, 0x02, 0xd3, 0x02, 0x26, +0x04, 0xd6, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3e, +0x00, 0xe2, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x1d, +0xff, 0x25, 0x01, 0xa8, 0x02, 0x00, 0x02, 0x26, +0x04, 0xd6, 0x00, 0x00, 0x00, 0x07, 0x07, 0x57, +0x00, 0xdb, 0x00, 0x00, 0xff, 0xff, 0x00, 0x1d, +0xff, 0x25, 0x01, 0xa8, 0x02, 0x00, 0x02, 0x26, +0x04, 0xd6, 0x00, 0x00, 0x00, 0x07, 0x07, 0x54, +0x00, 0xe2, 0x00, 0x00, 0xff, 0xff, 0x00, 0x1d, +0xff, 0x3e, 0x01, 0xa8, 0x02, 0x00, 0x02, 0x26, +0x04, 0xd6, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x00, 0xe2, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x1d, +0xff, 0x61, 0x01, 0xa8, 0x02, 0x00, 0x02, 0x26, +0x04, 0xd6, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2b, +0x00, 0xe2, 0xfd, 0x03, 0x00, 0x01, 0x00, 0x1d, +0x00, 0x00, 0x01, 0xa8, 0x02, 0x00, 0x00, 0x10, +0x00, 0x51, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0e, 0x2f, 0x1b, 0xb9, 0x00, 0x0e, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x06, 0x2f, 0x1b, 0xb9, 0x00, +0x06, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x07, +0x00, 0x0e, 0x00, 0x06, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x07, 0x10, 0xb8, 0x00, 0x0b, 0xd0, 0xb8, +0x00, 0x02, 0xd0, 0xb8, 0x00, 0x07, 0x10, 0xb8, +0x00, 0x03, 0xd0, 0xb8, 0x00, 0x0e, 0x10, 0xb9, +0x00, 0x0d, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x10, +0xd0, 0x30, 0x31, 0x13, 0x15, 0x33, 0x15, 0x23, +0x15, 0x23, 0x35, 0x23, 0x35, 0x37, 0x33, 0x35, +0x23, 0x35, 0x21, 0x15, 0xfa, 0x7e, 0x7e, 0x2e, +0x7f, 0x55, 0x2a, 0xaf, 0x01, 0x8b, 0x01, 0xd9, +0xbe, 0x21, 0xfa, 0xfa, 0x1f, 0x02, 0xbe, 0x27, +0x27, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x01, 0xda, 0x02, 0xde, 0x02, 0x26, +0x04, 0xd7, 0x00, 0x00, 0x00, 0x07, 0x07, 0x22, +0x01, 0x1c, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x01, 0xda, 0x02, 0xde, 0x02, 0x26, +0x04, 0xd7, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x01, 0x1c, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x01, 0xda, 0x02, 0xd1, 0x02, 0x26, +0x04, 0xd7, 0x00, 0x00, 0x00, 0x07, 0x07, 0x28, +0x01, 0x1c, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x01, 0xda, 0x02, 0xcc, 0x02, 0x26, +0x04, 0xd7, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2a, +0x01, 0x1c, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x01, 0xda, 0x02, 0xa8, 0x02, 0x26, +0x04, 0xd7, 0x00, 0x00, 0x00, 0x07, 0x07, 0x36, +0x01, 0x1c, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x01, 0xda, 0x02, 0x95, 0x02, 0x26, +0x04, 0xd7, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2c, +0x01, 0x1c, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x01, 0xda, 0x02, 0xd1, 0x02, 0x26, +0x04, 0xd7, 0x00, 0x00, 0x00, 0x07, 0x07, 0x31, +0x01, 0x1c, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x01, 0xda, 0x02, 0xf1, 0x02, 0x26, +0x04, 0xd7, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3a, +0x01, 0x1c, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x01, 0xda, 0x02, 0xef, 0x02, 0x26, +0x04, 0xd7, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3c, +0x01, 0x1c, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x01, 0xda, 0x02, 0xd3, 0x02, 0x26, +0x04, 0xd7, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3e, +0x01, 0x1c, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x01, 0xda, 0x03, 0x01, 0x02, 0x26, +0x04, 0xd7, 0x00, 0x00, 0x00, 0x07, 0x07, 0x73, +0x01, 0x1c, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x01, 0xda, 0x03, 0x3b, 0x02, 0x26, +0x04, 0xd7, 0x00, 0x00, 0x00, 0x07, 0x07, 0x6c, +0x01, 0x1c, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x01, 0xda, 0x03, 0x39, 0x02, 0x26, +0x04, 0xd7, 0x00, 0x00, 0x00, 0x07, 0x07, 0x75, +0x01, 0x1c, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x01, 0xda, 0x03, 0x3b, 0x02, 0x26, +0x04, 0xd7, 0x00, 0x00, 0x00, 0x07, 0x07, 0x6f, +0x01, 0x1c, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x5f, +0xff, 0x3e, 0x01, 0xda, 0x02, 0x00, 0x02, 0x26, +0x04, 0xd7, 0x00, 0x00, 0x00, 0x07, 0x07, 0x33, +0x01, 0x1c, 0xfc, 0xea, 0xff, 0xff, 0x00, 0x5f, +0xff, 0xf4, 0x01, 0xda, 0x02, 0xe9, 0x02, 0x26, +0x04, 0xd7, 0x00, 0x00, 0x00, 0x07, 0x07, 0x38, +0x01, 0x1c, 0xff, 0x8a, 0x00, 0x01, 0x00, 0x5f, +0xff, 0x33, 0x01, 0xda, 0x02, 0x00, 0x00, 0x2d, +0x00, 0x3b, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0e, 0x2f, 0x1b, 0xb9, 0x00, 0x0e, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x08, 0x2f, 0x1b, 0xb9, 0x00, +0x08, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x15, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0e, 0x10, 0xb8, +0x00, 0x1b, 0xd0, 0xb8, 0x00, 0x08, 0x10, 0xb8, +0x00, 0x22, 0xd0, 0x30, 0x31, 0x05, 0x22, 0x26, +0x35, 0x34, 0x3e, 0x02, 0x37, 0x22, 0x2e, 0x02, +0x35, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, +0x32, 0x3e, 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, +0x0e, 0x02, 0x07, 0x0e, 0x01, 0x15, 0x14, 0x16, +0x33, 0x32, 0x37, 0x17, 0x0e, 0x01, 0x01, 0x3c, +0x23, 0x31, 0x0b, 0x12, 0x17, 0x0c, 0x2a, 0x4a, +0x36, 0x1f, 0x2e, 0x17, 0x27, 0x35, 0x1d, 0x1d, +0x35, 0x28, 0x18, 0x2b, 0x14, 0x21, 0x2b, 0x17, +0x28, 0x2c, 0x1f, 0x14, 0x17, 0x14, 0x10, 0x0b, +0x25, 0xcd, 0x28, 0x2a, 0x13, 0x20, 0x1a, 0x17, +0x0b, 0x14, 0x31, 0x51, 0x3c, 0x01, 0x3a, 0xfe, +0xcb, 0x33, 0x43, 0x28, 0x10, 0x10, 0x28, 0x43, +0x33, 0x01, 0x35, 0xfe, 0xc6, 0x33, 0x44, 0x2e, +0x1d, 0x0c, 0x14, 0x3e, 0x1a, 0x1a, 0x1a, 0x0e, +0x1b, 0x0a, 0x0e, 0x00, 0x00, 0x01, 0x00, 0x5f, +0xff, 0xf4, 0x02, 0x42, 0x02, 0xa1, 0x00, 0x28, +0x00, 0x3b, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x14, 0x2f, 0x1b, 0xb9, 0x00, 0x14, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0e, 0x2f, 0x1b, 0xb9, 0x00, +0x0e, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x14, +0x10, 0xb8, 0x00, 0x21, 0xd0, 0xb8, 0x00, 0x08, +0xdc, 0xb8, 0x00, 0x0e, 0x10, 0xb9, 0x00, 0x1b, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x01, 0x1e, 0x01, +0x15, 0x14, 0x0e, 0x02, 0x07, 0x11, 0x14, 0x0e, +0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x11, 0x33, +0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, +0x35, 0x11, 0x33, 0x3e, 0x01, 0x35, 0x34, 0x26, +0x27, 0x02, 0x2f, 0x09, 0x0a, 0x12, 0x1d, 0x25, +0x14, 0x20, 0x34, 0x44, 0x25, 0x25, 0x45, 0x34, +0x20, 0x2e, 0x17, 0x27, 0x35, 0x1d, 0x1d, 0x35, +0x28, 0x18, 0x0a, 0x2d, 0x31, 0x06, 0x08, 0x02, +0xa1, 0x11, 0x22, 0x13, 0x1b, 0x28, 0x1b, 0x11, +0x06, 0xfe, 0xe0, 0x3d, 0x51, 0x30, 0x14, 0x14, +0x30, 0x51, 0x3d, 0x01, 0x3a, 0xfe, 0xcb, 0x33, +0x43, 0x28, 0x10, 0x10, 0x28, 0x43, 0x33, 0x01, +0x35, 0x05, 0x2e, 0x25, 0x0c, 0x1b, 0x0e, 0x00, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x42, +0x02, 0xde, 0x02, 0x26, 0x05, 0x84, 0x00, 0x00, +0x00, 0x07, 0x07, 0x25, 0x01, 0x1c, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x42, +0x02, 0xde, 0x02, 0x26, 0x05, 0x84, 0x00, 0x00, +0x00, 0x07, 0x07, 0x22, 0x01, 0x1c, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x42, +0x02, 0xe9, 0x02, 0x26, 0x05, 0x84, 0x00, 0x00, +0x00, 0x07, 0x07, 0x38, 0x01, 0x1c, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x5f, 0xff, 0xf4, 0x02, 0x42, +0x02, 0xcc, 0x02, 0x26, 0x05, 0x84, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2a, 0x01, 0x1c, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x5f, 0xff, 0x3e, 0x02, 0x42, +0x02, 0xa1, 0x02, 0x26, 0x05, 0x84, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x01, 0x1c, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x1c, 0x00, 0x00, 0x02, 0x7b, +0x02, 0xde, 0x02, 0x26, 0x04, 0xd9, 0x00, 0x00, +0x00, 0x07, 0x07, 0x22, 0x01, 0x4c, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x1c, 0x00, 0x00, 0x02, 0x7b, +0x02, 0xde, 0x02, 0x26, 0x04, 0xd9, 0x00, 0x00, +0x00, 0x07, 0x07, 0x25, 0x01, 0x4c, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x1c, 0x00, 0x00, 0x02, 0x7b, +0x02, 0xd1, 0x02, 0x26, 0x04, 0xd9, 0x00, 0x00, +0x00, 0x07, 0x07, 0x28, 0x01, 0x4c, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x1c, 0x00, 0x00, 0x02, 0x7b, +0x02, 0xa8, 0x02, 0x26, 0x04, 0xd9, 0x00, 0x00, +0x00, 0x07, 0x07, 0x36, 0x01, 0x4c, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x03, 0x00, 0x00, 0x01, 0x7e, +0x02, 0xde, 0x02, 0x26, 0x04, 0xdb, 0x00, 0x00, +0x00, 0x07, 0x07, 0x22, 0x00, 0xc2, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x03, 0x00, 0x00, 0x01, 0x7e, +0x02, 0xde, 0x02, 0x26, 0x04, 0xdb, 0x00, 0x00, +0x00, 0x07, 0x07, 0x25, 0x00, 0xc2, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x03, 0x00, 0x00, 0x01, 0x7e, +0x02, 0xd1, 0x02, 0x26, 0x04, 0xdb, 0x00, 0x00, +0x00, 0x07, 0x07, 0x28, 0x00, 0xc2, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x03, 0x00, 0x00, 0x01, 0x7e, +0x02, 0xa8, 0x02, 0x26, 0x04, 0xdb, 0x00, 0x00, +0x00, 0x07, 0x07, 0x36, 0x00, 0xc2, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x03, 0x00, 0x00, 0x01, 0x7e, +0x02, 0xab, 0x02, 0x26, 0x04, 0xdb, 0x00, 0x00, +0x00, 0x07, 0x07, 0x34, 0x00, 0xc2, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x03, 0xff, 0x3e, 0x01, 0x7e, +0x02, 0x00, 0x02, 0x26, 0x04, 0xdb, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x00, 0xc0, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x03, 0x00, 0x00, 0x01, 0x7e, +0x02, 0xe9, 0x02, 0x26, 0x04, 0xdb, 0x00, 0x00, +0x00, 0x07, 0x07, 0x38, 0x00, 0xc2, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x03, 0x00, 0x00, 0x01, 0x7e, +0x02, 0xcc, 0x02, 0x26, 0x04, 0xdb, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2a, 0x00, 0xc2, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x32, 0x00, 0x00, 0x01, 0xa8, +0x02, 0xde, 0x02, 0x26, 0x04, 0xdc, 0x00, 0x00, +0x00, 0x07, 0x07, 0x25, 0x00, 0xf8, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x32, 0x00, 0x00, 0x01, 0xa8, +0x02, 0xd3, 0x02, 0x26, 0x04, 0xdc, 0x00, 0x00, +0x00, 0x07, 0x07, 0x3e, 0x00, 0xf8, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x32, 0x00, 0x00, 0x01, 0xa8, +0x02, 0xab, 0x02, 0x26, 0x04, 0xdc, 0x00, 0x00, +0x00, 0x07, 0x07, 0x34, 0x00, 0xf8, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x32, 0xff, 0x3e, 0x01, 0xa8, +0x02, 0x00, 0x02, 0x26, 0x04, 0xdc, 0x00, 0x00, +0x00, 0x07, 0x07, 0x33, 0x00, 0xfe, 0xfc, 0xea, +0xff, 0xff, 0x00, 0x32, 0xff, 0x61, 0x01, 0xa8, +0x02, 0x00, 0x02, 0x26, 0x04, 0xdc, 0x00, 0x00, +0x00, 0x07, 0x07, 0x2b, 0x00, 0xfe, 0xfd, 0x03, +0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x01, 0xf6, +0x02, 0x00, 0x00, 0x0e, 0x00, 0x1f, 0x00, 0x57, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x19, 0x2f, 0x1b, 0xb9, 0x00, 0x19, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x00, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0f, 0x10, 0xb9, 0x00, 0x08, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x0c, 0x00, 0x0f, +0x00, 0x19, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x0c, +0x2f, 0xb8, 0x00, 0x0b, 0xd0, 0xb8, 0x00, 0x0c, +0x10, 0xb8, 0x00, 0x1c, 0xd0, 0xb8, 0x00, 0x0b, +0x10, 0xb8, 0x00, 0x1d, 0xd0, 0x30, 0x31, 0x37, +0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x2b, 0x01, +0x15, 0x33, 0x15, 0x23, 0x15, 0x13, 0x32, 0x1e, +0x02, 0x15, 0x14, 0x0e, 0x02, 0x2b, 0x01, 0x35, +0x23, 0x35, 0x37, 0x35, 0xf3, 0x6e, 0x65, 0x19, +0x33, 0x50, 0x37, 0x53, 0x91, 0x91, 0x55, 0x40, +0x61, 0x40, 0x20, 0x20, 0x40, 0x60, 0x40, 0x84, +0x4d, 0x4d, 0x25, 0x74, 0x68, 0x31, 0x50, 0x39, +0x20, 0xbb, 0x21, 0xda, 0x01, 0xdb, 0x23, 0x42, +0x5f, 0x3b, 0x3b, 0x5f, 0x43, 0x24, 0xff, 0x1f, +0x02, 0xe0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x61, +0x00, 0x00, 0x01, 0xc5, 0x02, 0x00, 0x00, 0x0c, +0x00, 0x15, 0x00, 0x39, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, +0x00, 0x00, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, 0x2f, 0x1b, +0xb9, 0x00, 0x0b, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x0d, 0x00, 0x01, 0x00, 0x09, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x13, 0x00, 0x01, 0x00, 0x03, +0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, 0x33, 0x15, +0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x2b, 0x01, +0x15, 0x23, 0x37, 0x32, 0x36, 0x35, 0x34, 0x26, +0x2b, 0x01, 0x15, 0x61, 0x2e, 0x6d, 0x5d, 0x6c, +0x6b, 0x5e, 0x6d, 0x2e, 0x92, 0x53, 0x4f, 0x50, +0x52, 0x64, 0x02, 0x00, 0x5a, 0x42, 0x50, 0x4d, +0x4b, 0x7c, 0xa1, 0x36, 0x3d, 0x3e, 0x2e, 0xdf, +0x00, 0x02, 0x00, 0x3e, 0xff, 0xf4, 0x02, 0x02, +0x02, 0x0c, 0x00, 0x0a, 0x00, 0x27, 0x00, 0x4d, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0e, 0x2f, 0x1b, 0xb9, 0x00, 0x0e, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x18, 0x2f, 0x1b, 0xb9, 0x00, 0x18, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x21, 0x00, 0x0e, +0x00, 0x18, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x21, +0x2f, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x18, 0x10, 0xb9, 0x00, 0x05, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0e, 0x10, 0xb9, 0x00, 0x24, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x37, 0x1e, 0x03, +0x33, 0x32, 0x3e, 0x02, 0x37, 0x25, 0x3e, 0x01, +0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, +0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, 0x35, +0x21, 0x2e, 0x01, 0x23, 0x22, 0x06, 0x07, 0x6b, +0x03, 0x1b, 0x2f, 0x3e, 0x25, 0x26, 0x40, 0x30, +0x1e, 0x03, 0xfe, 0xa8, 0x1b, 0x54, 0x36, 0x34, +0x54, 0x3b, 0x20, 0x22, 0x3e, 0x54, 0x33, 0x33, +0x51, 0x3a, 0x1f, 0x01, 0x01, 0x94, 0x02, 0x5e, +0x57, 0x2a, 0x46, 0x1b, 0xe5, 0x2e, 0x4a, 0x35, +0x1c, 0x1c, 0x35, 0x4a, 0x2e, 0xe7, 0x19, 0x27, +0x26, 0x45, 0x63, 0x3d, 0x3d, 0x63, 0x47, 0x26, +0x27, 0x47, 0x61, 0x39, 0x03, 0x07, 0x04, 0x65, +0x75, 0x20, 0x17, 0x00, 0x00, 0x01, 0x00, 0x61, +0xff, 0xf4, 0x01, 0xef, 0x02, 0x0c, 0x00, 0x26, +0x00, 0x61, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x1d, 0x2f, 0x1b, 0xb9, 0x00, 0x1d, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x06, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x1d, 0x10, 0xb9, +0x00, 0x10, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x1a, +0x00, 0x00, 0x00, 0x1d, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x1a, 0x10, 0xb9, 0x00, 0x15, 0x00, 0x02, +0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x17, +0xd0, 0xb8, 0x00, 0x17, 0x2f, 0xb8, 0x00, 0x1d, +0x10, 0xb8, 0x00, 0x18, 0xd0, 0xb8, 0x00, 0x18, +0x2f, 0x30, 0x31, 0x05, 0x22, 0x26, 0x27, 0x37, +0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, +0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x11, 0x23, +0x11, 0x33, 0x15, 0x3e, 0x01, 0x33, 0x32, 0x1e, +0x02, 0x15, 0x14, 0x0e, 0x02, 0x01, 0x65, 0x10, +0x23, 0x0c, 0x0e, 0x12, 0x1b, 0x13, 0x22, 0x1a, +0x0f, 0x16, 0x29, 0x38, 0x22, 0x12, 0x2a, 0x29, +0x25, 0x0d, 0x2e, 0x2e, 0x1d, 0x55, 0x2e, 0x29, +0x47, 0x33, 0x1d, 0x16, 0x25, 0x33, 0x0c, 0x05, +0x05, 0x28, 0x09, 0x17, 0x36, 0x59, 0x42, 0x3f, +0x56, 0x33, 0x16, 0x0e, 0x16, 0x1f, 0x10, 0xfe, +0x70, 0x02, 0x00, 0x44, 0x1f, 0x31, 0x1d, 0x3f, +0x64, 0x47, 0x4c, 0x68, 0x41, 0x1c, 0x00, 0x00, +0x00, 0x02, 0x00, 0x61, 0xff, 0x72, 0x01, 0x80, +0x02, 0x00, 0x00, 0x03, 0x00, 0x12, 0x00, 0x37, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x02, 0x2f, 0x1b, 0xb9, 0x00, 0x02, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x0b, 0x00, 0x01, +0x00, 0x04, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x0f, 0xd0, 0x30, 0x31, 0x13, +0x33, 0x11, 0x23, 0x17, 0x22, 0x26, 0x27, 0x37, +0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, +0x11, 0x14, 0x61, 0x2e, 0x2e, 0xb1, 0x11, 0x21, +0x0b, 0x0a, 0x09, 0x1b, 0x0e, 0x28, 0x19, 0x2e, +0x02, 0x00, 0xfe, 0x00, 0x8e, 0x07, 0x05, 0x28, +0x03, 0x07, 0x3b, 0x2e, 0x01, 0xfb, 0xfd, 0xfe, +0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x61, +0xff, 0x72, 0x01, 0xdb, 0x02, 0x00, 0x00, 0x20, +0x00, 0x53, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x14, 0x2f, 0x1b, 0xb9, 0x00, 0x14, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, 0x00, +0x13, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x07, +0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x13, 0x10, 0xb8, 0x00, 0x0b, 0xd0, 0xba, +0x00, 0x0e, 0x00, 0x14, 0x00, 0x13, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x14, 0x10, 0xb8, 0x00, 0x1c, +0xd0, 0xba, 0x00, 0x18, 0x00, 0x1c, 0x00, 0x0a, +0x11, 0x12, 0x39, 0x30, 0x31, 0x05, 0x22, 0x26, +0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, +0x23, 0x03, 0x27, 0x23, 0x1e, 0x01, 0x15, 0x11, +0x23, 0x11, 0x33, 0x13, 0x17, 0x33, 0x2e, 0x01, +0x35, 0x11, 0x33, 0x11, 0x14, 0x06, 0x01, 0x7d, +0x0f, 0x1d, 0x09, 0x09, 0x08, 0x16, 0x0b, 0x22, +0x14, 0x04, 0xe4, 0x3e, 0x04, 0x02, 0x04, 0x2b, +0x30, 0xe4, 0x3d, 0x04, 0x02, 0x03, 0x2a, 0x2d, +0x8e, 0x06, 0x04, 0x25, 0x02, 0x06, 0x37, 0x30, +0x01, 0x5e, 0x68, 0x26, 0x4b, 0x26, 0xfe, 0xd1, +0x02, 0x00, 0xfe, 0xa1, 0x66, 0x26, 0x4e, 0x26, +0x01, 0x2b, 0xfd, 0xf6, 0x42, 0x42, 0x00, 0x00, +0xff, 0xff, 0x00, 0x08, 0x00, 0x00, 0x01, 0xbb, +0x02, 0x00, 0x02, 0x06, 0x04, 0xc3, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd5, +0x02, 0x00, 0x02, 0x06, 0x04, 0xc4, 0x00, 0x00, +0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x01, 0x95, +0x02, 0x00, 0x00, 0x05, 0x00, 0x2f, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, +0x2f, 0x1b, 0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x02, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, 0x21, 0x15, +0x21, 0x11, 0x23, 0x61, 0x01, 0x34, 0xfe, 0xfa, +0x2e, 0x02, 0x00, 0x27, 0xfe, 0x27, 0x00, 0x00, +0x00, 0x02, 0x00, 0x1b, 0x00, 0x00, 0x01, 0xc7, +0x02, 0x00, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x35, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x01, 0x2f, 0x1b, 0xb9, 0x00, 0x01, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x04, 0x2f, 0x1b, 0xb9, 0x00, 0x04, 0x00, +0x05, 0x3e, 0x59, 0xb9, 0x00, 0x06, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x09, 0x00, 0x04, 0x00, 0x01, +0x11, 0x12, 0x39, 0x30, 0x31, 0x37, 0x13, 0x33, +0x13, 0x15, 0x21, 0x25, 0x03, 0x27, 0x23, 0x07, +0x03, 0x1b, 0xbe, 0x30, 0xbe, 0xfe, 0x54, 0x01, +0x7a, 0x64, 0x3e, 0x03, 0x40, 0x63, 0x1a, 0x01, +0xe6, 0xfe, 0x1a, 0x1a, 0x26, 0x01, 0x01, 0xab, +0xab, 0xfe, 0xff, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0x9e, 0x02, 0x00, 0x02, 0x06, +0x04, 0xc7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x32, +0x00, 0x00, 0x01, 0xa8, 0x02, 0x00, 0x02, 0x06, +0x04, 0xdc, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xe1, 0x02, 0x00, 0x02, 0x06, +0x04, 0xca, 0x00, 0x00, 0x00, 0x03, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x02, 0x0c, 0x00, 0x03, +0x00, 0x17, 0x00, 0x2b, 0x00, 0x43, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0e, 0x2f, +0x1b, 0xb9, 0x00, 0x0e, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, +0x2f, 0x1b, 0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x04, 0x10, 0xb9, +0x00, 0x18, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0e, +0x10, 0xb9, 0x00, 0x22, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x13, 0x33, 0x15, 0x23, 0x13, 0x22, 0x2e, +0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, +0x02, 0x15, 0x14, 0x0e, 0x02, 0x27, 0x32, 0x3e, +0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, +0x02, 0x15, 0x14, 0x1e, 0x02, 0xbc, 0xc6, 0xc6, +0x63, 0x33, 0x55, 0x3e, 0x22, 0x22, 0x3e, 0x55, +0x33, 0x33, 0x55, 0x3d, 0x23, 0x23, 0x3d, 0x55, +0x33, 0x2a, 0x44, 0x30, 0x1b, 0x1b, 0x30, 0x44, +0x2a, 0x2a, 0x44, 0x31, 0x1a, 0x1a, 0x31, 0x44, +0x01, 0x22, 0x25, 0xfe, 0xf7, 0x26, 0x46, 0x63, +0x3e, 0x3e, 0x63, 0x45, 0x25, 0x25, 0x45, 0x63, +0x3e, 0x3e, 0x63, 0x46, 0x26, 0x28, 0x20, 0x3b, +0x55, 0x35, 0x35, 0x54, 0x3b, 0x1f, 0x1f, 0x3b, +0x54, 0x35, 0x35, 0x55, 0x3b, 0x20, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x00, 0x8f, +0x02, 0x00, 0x02, 0x06, 0x04, 0xcb, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xe1, +0x02, 0x00, 0x02, 0x06, 0x04, 0xcd, 0x00, 0x00, +0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x01, 0x9f, +0x02, 0x00, 0x00, 0x0d, 0x00, 0x33, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0c, +0x2f, 0x1b, 0xb9, 0x00, 0x0c, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x02, 0xd0, 0xba, 0x00, 0x08, +0x00, 0x00, 0x00, 0x0c, 0x11, 0x12, 0x39, 0x30, +0x31, 0x13, 0x33, 0x13, 0x23, 0x03, 0x2e, 0x01, +0x27, 0x23, 0x0e, 0x01, 0x07, 0x03, 0x23, 0xb8, +0x33, 0xb4, 0x2f, 0x64, 0x10, 0x18, 0x11, 0x04, +0x11, 0x18, 0x10, 0x64, 0x2e, 0x02, 0x00, 0xfe, +0x00, 0x01, 0x23, 0x2f, 0x4f, 0x2f, 0x2f, 0x4f, +0x2f, 0xfe, 0xdd, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x02, 0x0f, 0x02, 0x00, 0x02, 0x06, +0x04, 0xcf, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xdb, 0x02, 0x00, 0x02, 0x06, +0x04, 0xd0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x2f, +0x00, 0x00, 0x01, 0x90, 0x02, 0x00, 0x00, 0x03, +0x00, 0x07, 0x00, 0x0b, 0x00, 0x43, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, +0x1b, 0xb9, 0x00, 0x08, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x02, +0x2f, 0x1b, 0xb9, 0x00, 0x02, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x05, 0x00, 0x01, 0x00, 0x06, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x02, 0x10, 0xb9, +0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x08, +0x10, 0xb9, 0x00, 0x0a, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x37, 0x21, 0x15, 0x21, 0x13, 0x33, 0x15, +0x23, 0x03, 0x21, 0x15, 0x21, 0x2f, 0x01, 0x61, +0xfe, 0x9f, 0x42, 0xdf, 0xdf, 0x3a, 0x01, 0x51, +0xfe, 0xaf, 0x26, 0x26, 0x01, 0x22, 0x25, 0x01, +0x03, 0x26, 0x00, 0x00, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x02, 0x0c, 0x02, 0x06, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x01, 0x00, 0x61, +0x00, 0x00, 0x01, 0xdb, 0x02, 0x00, 0x00, 0x07, +0x00, 0x33, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x06, 0x2f, 0x1b, 0xb9, 0x00, +0x06, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x02, +0xd0, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x04, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, 0x21, 0x11, +0x23, 0x11, 0x21, 0x11, 0x23, 0x61, 0x01, 0x7a, +0x2e, 0xfe, 0xe2, 0x2e, 0x02, 0x00, 0xfe, 0x00, +0x01, 0xd9, 0xfe, 0x27, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xc5, 0x02, 0x00, 0x02, 0x06, +0x04, 0xd2, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2f, +0x00, 0x00, 0x01, 0xa8, 0x02, 0x00, 0x00, 0x0b, +0x00, 0x45, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, 0x03, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0a, 0x2f, 0x1b, 0xb9, 0x00, +0x0a, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x08, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, 0xd0, 0xb8, +0x00, 0x00, 0x2f, 0xb8, 0x00, 0x03, 0x10, 0xb9, +0x00, 0x05, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x02, +0xd0, 0xb8, 0x00, 0x02, 0x2f, 0x30, 0x31, 0x3f, +0x01, 0x27, 0x35, 0x21, 0x15, 0x21, 0x17, 0x07, +0x21, 0x15, 0x21, 0x2f, 0xc8, 0xc3, 0x01, 0x5b, +0xfe, 0xde, 0xb9, 0xbd, 0x01, 0x3f, 0xfe, 0x87, +0x1a, 0xea, 0xe4, 0x18, 0x24, 0xd7, 0xdf, 0x26, +0xff, 0xff, 0x00, 0x1d, 0x00, 0x00, 0x01, 0xa8, +0x02, 0x00, 0x02, 0x06, 0x04, 0xd6, 0x00, 0x00, +0xff, 0xff, 0x00, 0x03, 0x00, 0x00, 0x01, 0x7e, +0x02, 0x00, 0x02, 0x06, 0x04, 0xdb, 0x00, 0x00, +0x00, 0x03, 0x00, 0x30, 0xff, 0xee, 0x02, 0x41, +0x02, 0x12, 0x00, 0x08, 0x00, 0x0f, 0x00, 0x25, +0x00, 0x47, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x01, +0x00, 0x18, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x10, +0x00, 0x01, 0x00, 0x08, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x08, 0x10, 0xb8, 0x00, 0x09, 0xd0, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x0f, 0xd0, 0xb8, +0x00, 0x18, 0x10, 0xb8, 0x00, 0x1a, 0xdc, 0xb8, +0x00, 0x18, 0x10, 0xb8, 0x00, 0x1b, 0xd0, 0xb8, +0x00, 0x10, 0x10, 0xb8, 0x00, 0x23, 0xd0, 0xb8, +0x00, 0x10, 0x10, 0xb8, 0x00, 0x24, 0xdc, 0x30, +0x31, 0x25, 0x3e, 0x03, 0x35, 0x34, 0x26, 0x27, +0x23, 0x0e, 0x01, 0x15, 0x14, 0x16, 0x17, 0x13, +0x1e, 0x01, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x15, +0x23, 0x35, 0x2e, 0x03, 0x35, 0x34, 0x36, 0x37, +0x35, 0x33, 0x01, 0x4e, 0x2e, 0x49, 0x33, 0x1c, +0x6a, 0x5c, 0x2b, 0x5c, 0x69, 0x69, 0x5c, 0x2b, +0x70, 0x83, 0x22, 0x3f, 0x5a, 0x38, 0x2b, 0x38, +0x5a, 0x3f, 0x22, 0x82, 0x71, 0x2b, 0x5e, 0x01, +0x18, 0x2a, 0x3b, 0x24, 0x4a, 0x55, 0x02, 0x02, +0x55, 0x4a, 0x48, 0x59, 0x01, 0x01, 0x67, 0x02, +0x67, 0x5c, 0x2d, 0x48, 0x33, 0x1d, 0x01, 0x4c, +0x4c, 0x01, 0x1d, 0x33, 0x48, 0x2d, 0x5c, 0x67, +0x02, 0x4d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x11, +0x00, 0x00, 0x01, 0x93, 0x02, 0x00, 0x02, 0x06, +0x04, 0xda, 0x00, 0x00, 0x00, 0x01, 0x00, 0x46, +0x00, 0x00, 0x02, 0x0a, 0x02, 0x00, 0x00, 0x15, +0x00, 0x4b, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, +0x05, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x12, +0x00, 0x01, 0x00, 0x04, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x04, 0x10, 0xb8, 0x00, 0x07, 0xd0, 0xb8, +0x00, 0x12, 0x10, 0xb8, 0x00, 0x0f, 0xd0, 0xb8, +0x00, 0x0b, 0x10, 0xb8, 0x00, 0x10, 0xd0, 0xb8, +0x00, 0x15, 0xd0, 0x30, 0x31, 0x01, 0x15, 0x14, +0x06, 0x07, 0x15, 0x23, 0x35, 0x2e, 0x01, 0x3d, +0x01, 0x33, 0x15, 0x14, 0x17, 0x11, 0x33, 0x11, +0x36, 0x3d, 0x01, 0x02, 0x0a, 0x6b, 0x61, 0x2c, +0x61, 0x6b, 0x2c, 0xa0, 0x2c, 0xa0, 0x02, 0x00, +0x7f, 0x60, 0x59, 0x02, 0xc6, 0xc6, 0x02, 0x59, +0x60, 0x7f, 0x7d, 0x94, 0x05, 0x01, 0x16, 0xfe, +0xea, 0x05, 0x94, 0x7d, 0x00, 0x01, 0x00, 0x2c, +0x00, 0x00, 0x02, 0x0e, 0x02, 0x0c, 0x00, 0x31, +0x00, 0x59, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0c, 0x2f, 0x1b, 0xb9, 0x00, 0x0c, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x31, 0x2f, 0x1b, 0xb9, 0x00, +0x31, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x00, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x18, 0xd0, 0xb8, +0x00, 0x31, 0x10, 0xb8, 0x00, 0x19, 0xd0, 0xb8, +0x00, 0x18, 0x10, 0xb8, 0x00, 0x1b, 0xd0, 0xb8, +0x00, 0x1b, 0x2f, 0xb8, 0x00, 0x0c, 0x10, 0xb9, +0x00, 0x25, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x2f, 0xd0, 0xb8, 0x00, 0x2f, +0x2f, 0x30, 0x31, 0x37, 0x33, 0x35, 0x2e, 0x03, +0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, +0x15, 0x14, 0x0e, 0x02, 0x07, 0x15, 0x33, 0x15, +0x23, 0x35, 0x3e, 0x03, 0x35, 0x34, 0x2e, 0x02, +0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, +0x17, 0x15, 0x23, 0x2c, 0x77, 0x14, 0x27, 0x1f, +0x13, 0x20, 0x3c, 0x55, 0x35, 0x35, 0x56, 0x3c, +0x21, 0x13, 0x1f, 0x27, 0x14, 0x77, 0xb8, 0x19, +0x2e, 0x23, 0x15, 0x19, 0x2f, 0x45, 0x2c, 0x2b, +0x44, 0x2f, 0x19, 0x15, 0x22, 0x2e, 0x19, 0xb7, +0x25, 0x03, 0x12, 0x2d, 0x39, 0x45, 0x29, 0x36, +0x5c, 0x45, 0x27, 0x27, 0x45, 0x5c, 0x36, 0x29, +0x45, 0x39, 0x2d, 0x12, 0x03, 0x25, 0x21, 0x10, +0x2d, 0x3a, 0x49, 0x2c, 0x2d, 0x4f, 0x3b, 0x21, +0x21, 0x3b, 0x4f, 0x2d, 0x2c, 0x49, 0x3a, 0x2d, +0x10, 0x21, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf2, +0x00, 0x00, 0x00, 0xfe, 0x02, 0xa8, 0x02, 0x26, +0x04, 0xcb, 0x00, 0x00, 0x00, 0x06, 0x07, 0x36, +0x78, 0x8a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x03, +0x00, 0x00, 0x01, 0x7e, 0x02, 0xa8, 0x02, 0x26, +0x04, 0xdb, 0x00, 0x00, 0x00, 0x07, 0x07, 0x36, +0x00, 0xc2, 0xff, 0x8a, 0x00, 0x03, 0x00, 0x08, +0x00, 0x00, 0x02, 0x52, 0x02, 0x00, 0x00, 0x09, +0x00, 0x11, 0x00, 0x15, 0x00, 0x55, 0x00, 0x7c, +0xb8, 0x00, 0x15, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x11, 0x2f, 0x1b, 0xb9, +0x00, 0x11, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x10, 0x2f, 0x1b, +0xb9, 0x00, 0x10, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x0c, 0xd0, 0xba, 0x00, 0x03, 0x00, 0x11, +0x00, 0x0c, 0x11, 0x12, 0x39, 0xba, 0x00, 0x09, +0x00, 0x11, 0x00, 0x10, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x09, 0x10, 0xb9, 0x00, 0x0e, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0c, 0x10, 0xb8, 0x00, 0x14, +0xd0, 0x30, 0x31, 0x01, 0x2e, 0x01, 0x27, 0x23, +0x0e, 0x01, 0x0f, 0x01, 0x33, 0x03, 0x13, 0x23, +0x27, 0x23, 0x07, 0x23, 0x13, 0x05, 0x11, 0x23, +0x11, 0x01, 0x1f, 0x11, 0x1c, 0x0f, 0x04, 0x0f, +0x1b, 0x11, 0x22, 0xbf, 0x48, 0xc2, 0x30, 0x3d, +0xda, 0x3e, 0x2e, 0xc2, 0x01, 0x88, 0x2e, 0x01, +0x2a, 0x2f, 0x4e, 0x2d, 0x2d, 0x4f, 0x2e, 0x5d, +0x01, 0x33, 0xfe, 0x00, 0xa8, 0xa8, 0x02, 0x00, +0x66, 0xfe, 0x66, 0x01, 0x9a, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x61, 0x00, 0x00, 0x02, 0xd1, +0x02, 0x00, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x4f, +0x00, 0x7c, 0xb8, 0x00, 0x00, 0x2f, 0x18, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, +0x1b, 0xb9, 0x00, 0x04, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0f, +0x2f, 0x1b, 0xb9, 0x00, 0x0f, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x0b, 0xd0, 0xb8, 0x00, 0x03, +0xd0, 0xba, 0x00, 0x0d, 0x00, 0x04, 0x00, 0x0f, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x0d, 0x2f, 0xb9, +0x00, 0x07, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x04, +0x10, 0xb8, 0x00, 0x08, 0xd0, 0x30, 0x31, 0x01, +0x33, 0x11, 0x23, 0x01, 0x33, 0x15, 0x21, 0x35, +0x33, 0x11, 0x23, 0x35, 0x21, 0x15, 0x23, 0x02, +0xa3, 0x2e, 0x2e, 0xfd, 0xbe, 0x2e, 0x01, 0x24, +0x2e, 0x2e, 0xfe, 0xdc, 0x2e, 0x01, 0x9a, 0xfe, +0x66, 0x02, 0x00, 0xdc, 0xdc, 0xfe, 0x00, 0xfc, +0xfc, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x2c, +0x00, 0x00, 0x02, 0xc8, 0x02, 0x0c, 0x00, 0x03, +0x00, 0x35, 0x00, 0x5f, 0x00, 0x7c, 0xb8, 0x00, +0x00, 0x2f, 0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x10, 0x2f, 0x1b, 0xb9, 0x00, 0x10, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x35, 0x2f, 0x1b, 0xb9, 0x00, +0x35, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x1e, +0xd0, 0xb8, 0x00, 0x03, 0xd0, 0xb8, 0x00, 0x35, +0x10, 0xb9, 0x00, 0x04, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x1c, 0xd0, 0xb8, 0x00, 0x1f, 0xd0, 0xb8, +0x00, 0x1f, 0x2f, 0xb8, 0x00, 0x10, 0x10, 0xb9, +0x00, 0x29, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x04, +0x10, 0xb8, 0x00, 0x33, 0xd0, 0xb8, 0x00, 0x33, +0x2f, 0x30, 0x31, 0x01, 0x33, 0x11, 0x23, 0x25, +0x33, 0x35, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, +0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, +0x07, 0x15, 0x33, 0x15, 0x23, 0x35, 0x3e, 0x03, +0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, +0x15, 0x14, 0x1e, 0x02, 0x17, 0x15, 0x23, 0x02, +0x9a, 0x2e, 0x2e, 0xfd, 0x92, 0x77, 0x14, 0x27, +0x1f, 0x13, 0x20, 0x3c, 0x55, 0x35, 0x35, 0x56, +0x3c, 0x21, 0x13, 0x1f, 0x27, 0x14, 0x77, 0xb8, +0x19, 0x2e, 0x23, 0x15, 0x19, 0x2f, 0x45, 0x2c, +0x2b, 0x44, 0x2f, 0x19, 0x15, 0x22, 0x2e, 0x19, +0xb7, 0x01, 0x9a, 0xfe, 0x66, 0x25, 0x03, 0x12, +0x2d, 0x39, 0x45, 0x29, 0x36, 0x5c, 0x45, 0x27, +0x27, 0x45, 0x5c, 0x36, 0x29, 0x45, 0x39, 0x2d, +0x12, 0x03, 0x25, 0x21, 0x10, 0x2d, 0x3a, 0x49, +0x2c, 0x2d, 0x4f, 0x3b, 0x21, 0x21, 0x3b, 0x4f, +0x2d, 0x2c, 0x49, 0x3a, 0x2d, 0x10, 0x21, 0x00, +0xff, 0xff, 0x00, 0x08, 0x00, 0x00, 0x01, 0xbb, +0x02, 0x00, 0x02, 0x06, 0x04, 0xc3, 0x00, 0x00, +0x00, 0x02, 0x00, 0x61, 0x00, 0x00, 0x01, 0xce, +0x02, 0x00, 0x00, 0x0e, 0x00, 0x17, 0x00, 0x4d, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0d, 0x2f, 0x1b, 0xb9, 0x00, 0x0d, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x02, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x15, +0x00, 0x00, 0x00, 0x0d, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x15, 0x10, 0xb9, 0x00, 0x05, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0d, 0x10, 0xb9, 0x00, 0x0f, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, 0x21, 0x15, +0x21, 0x15, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, +0x06, 0x2b, 0x01, 0x37, 0x32, 0x36, 0x35, 0x34, +0x26, 0x2b, 0x01, 0x15, 0x61, 0x01, 0x47, 0xfe, +0xe7, 0x77, 0x2d, 0x49, 0x35, 0x1d, 0x66, 0x5e, +0xa9, 0x9e, 0x51, 0x51, 0x54, 0x51, 0x6d, 0x02, +0x00, 0x25, 0xbb, 0x0f, 0x20, 0x34, 0x25, 0x4e, +0x4a, 0x24, 0x37, 0x3c, 0x37, 0x30, 0xda, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xd5, +0x02, 0x00, 0x02, 0x06, 0x04, 0xc4, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0x95, +0x02, 0x00, 0x02, 0x06, 0x05, 0xa3, 0x00, 0x00, +0x00, 0x02, 0x00, 0x21, 0xff, 0x54, 0x02, 0x01, +0x02, 0x00, 0x00, 0x0a, 0x00, 0x21, 0x00, 0x4f, +0x00, 0x7d, 0xb8, 0x00, 0x12, 0x2f, 0x18, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1f, 0x2f, +0x1b, 0xb9, 0x00, 0x1f, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0f, +0x2f, 0x1b, 0xb9, 0x00, 0x0f, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x14, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x09, 0xd0, 0xb8, 0x00, 0x1f, 0x10, 0xb9, +0x00, 0x0a, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x09, +0x10, 0xb8, 0x00, 0x0b, 0xd0, 0xb8, 0x00, 0x12, +0x10, 0xb8, 0x00, 0x0e, 0xd0, 0x30, 0x31, 0x13, +0x0e, 0x03, 0x07, 0x0e, 0x01, 0x07, 0x21, 0x11, +0x13, 0x15, 0x07, 0x23, 0x35, 0x21, 0x15, 0x23, +0x27, 0x35, 0x33, 0x3e, 0x03, 0x37, 0x3e, 0x03, +0x37, 0x21, 0x11, 0xdf, 0x07, 0x0b, 0x0a, 0x0c, +0x07, 0x0f, 0x1e, 0x10, 0x01, 0x1e, 0x70, 0x05, +0x26, 0xfe, 0x77, 0x27, 0x05, 0x1b, 0x09, 0x11, +0x13, 0x13, 0x0a, 0x08, 0x0d, 0x0c, 0x0c, 0x08, +0x01, 0x04, 0x01, 0xda, 0x24, 0x3f, 0x3d, 0x3e, +0x24, 0x4a, 0x53, 0x14, 0x01, 0xb3, 0xfe, 0x4d, +0x1a, 0xb9, 0xac, 0xac, 0xb9, 0x1a, 0x04, 0x15, +0x2b, 0x43, 0x33, 0x27, 0x44, 0x42, 0x47, 0x2b, +0xfe, 0x27, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0x9e, 0x02, 0x00, 0x02, 0x06, +0x04, 0xc7, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, +0x00, 0x00, 0x02, 0x88, 0x02, 0x0c, 0x00, 0x34, +0x00, 0x85, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x17, 0x2f, 0x1b, 0xb9, 0x00, 0x17, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x09, 0x2f, 0x1b, 0xb9, 0x00, +0x09, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x07, +0x00, 0x01, 0x00, 0x1d, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x09, 0x10, 0xb8, 0x00, 0x05, 0xd0, 0xb8, +0x00, 0x01, 0xd0, 0xb8, 0x00, 0x07, 0x10, 0xb8, +0x00, 0x02, 0xd0, 0xba, 0x00, 0x0a, 0x00, 0x1d, +0x00, 0x07, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x17, +0x10, 0xb9, 0x00, 0x10, 0x00, 0x02, 0xf4, 0xb8, +0x00, 0x17, 0x10, 0xb8, 0x00, 0x1f, 0xd0, 0xb8, +0x00, 0x1f, 0x2f, 0xb8, 0x00, 0x1d, 0x10, 0xb8, +0x00, 0x22, 0xd0, 0xb8, 0x00, 0x17, 0x10, 0xb8, +0x00, 0x28, 0xd0, 0xb8, 0x00, 0x10, 0x10, 0xb8, +0x00, 0x2e, 0xd0, 0xba, 0x00, 0x34, 0x00, 0x02, +0x00, 0x22, 0x11, 0x12, 0x39, 0x30, 0x31, 0x21, +0x23, 0x27, 0x23, 0x15, 0x23, 0x35, 0x23, 0x07, +0x23, 0x13, 0x27, 0x2e, 0x03, 0x23, 0x2a, 0x01, +0x07, 0x27, 0x3e, 0x01, 0x33, 0x32, 0x1e, 0x02, +0x1f, 0x01, 0x33, 0x35, 0x33, 0x15, 0x33, 0x37, +0x3e, 0x03, 0x33, 0x32, 0x17, 0x07, 0x26, 0x22, +0x23, 0x22, 0x0e, 0x02, 0x0f, 0x01, 0x02, 0x88, +0x32, 0x9e, 0x5a, 0x2b, 0x5a, 0x9e, 0x32, 0xad, +0x40, 0x0b, 0x14, 0x12, 0x12, 0x0a, 0x04, 0x09, +0x05, 0x08, 0x04, 0x0d, 0x07, 0x10, 0x1d, 0x1c, +0x1b, 0x0f, 0x41, 0x58, 0x2b, 0x58, 0x41, 0x0f, +0x1b, 0x1c, 0x1d, 0x10, 0x10, 0x08, 0x07, 0x06, +0x09, 0x04, 0x0a, 0x12, 0x12, 0x14, 0x0b, 0x40, +0xfc, 0xfc, 0xfc, 0xfc, 0x01, 0x14, 0x84, 0x18, +0x1c, 0x0f, 0x05, 0x02, 0x2b, 0x02, 0x01, 0x08, +0x15, 0x26, 0x1e, 0x88, 0xdd, 0xdd, 0x88, 0x1e, +0x26, 0x15, 0x08, 0x03, 0x2b, 0x02, 0x05, 0x0f, +0x1c, 0x18, 0x84, 0x00, 0x00, 0x01, 0x00, 0x2f, +0xff, 0xf4, 0x01, 0xb3, 0x02, 0x0c, 0x00, 0x2f, +0x00, 0x4d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x1f, 0x2f, 0x1b, 0xb9, 0x00, 0x1f, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x12, +0x00, 0x01, 0x00, 0x0f, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x00, 0x10, 0xb9, 0x00, 0x07, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x1f, 0x10, 0xb9, 0x00, 0x18, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x28, 0x00, 0x0f, +0x00, 0x12, 0x11, 0x12, 0x39, 0x30, 0x31, 0x17, +0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, +0x3e, 0x02, 0x35, 0x34, 0x26, 0x2b, 0x01, 0x35, +0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, +0x06, 0x07, 0x27, 0x3e, 0x01, 0x33, 0x32, 0x1e, +0x02, 0x15, 0x14, 0x06, 0x07, 0x15, 0x1e, 0x01, +0x15, 0x14, 0x0e, 0x02, 0xf4, 0x3f, 0x5c, 0x2a, +0x1b, 0x27, 0x4c, 0x37, 0x1d, 0x35, 0x28, 0x17, +0x5b, 0x51, 0x39, 0x29, 0x55, 0x4a, 0x46, 0x35, +0x28, 0x48, 0x18, 0x1a, 0x1a, 0x57, 0x32, 0x23, +0x3d, 0x2d, 0x1a, 0x2f, 0x2a, 0x33, 0x44, 0x1e, +0x34, 0x46, 0x0c, 0x25, 0x27, 0x20, 0x24, 0x20, +0x0f, 0x1d, 0x2b, 0x1c, 0x39, 0x36, 0x22, 0x32, +0x32, 0x2d, 0x33, 0x1d, 0x18, 0x20, 0x1a, 0x23, +0x13, 0x23, 0x30, 0x1e, 0x2b, 0x3e, 0x0c, 0x04, +0x08, 0x41, 0x37, 0x24, 0x39, 0x28, 0x16, 0x00, +0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x01, 0xdb, +0x02, 0x00, 0x00, 0x13, 0x00, 0x45, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0a, 0x2f, +0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x09, +0x2f, 0x1b, 0xb9, 0x00, 0x09, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x01, 0xd0, 0xb8, 0x00, 0x0a, +0x10, 0xb8, 0x00, 0x12, 0xd0, 0xba, 0x00, 0x05, +0x00, 0x12, 0x00, 0x01, 0x11, 0x12, 0x39, 0xba, +0x00, 0x0f, 0x00, 0x0a, 0x00, 0x09, 0x11, 0x12, +0x39, 0x30, 0x31, 0x21, 0x23, 0x11, 0x34, 0x36, +0x37, 0x23, 0x07, 0x03, 0x23, 0x11, 0x33, 0x11, +0x14, 0x06, 0x07, 0x33, 0x37, 0x13, 0x33, 0x01, +0xdb, 0x2a, 0x03, 0x02, 0x04, 0x3d, 0xe4, 0x30, +0x2b, 0x04, 0x02, 0x04, 0x3e, 0xe4, 0x2f, 0x01, +0x2f, 0x26, 0x4b, 0x26, 0x68, 0xfe, 0xa2, 0x02, +0x00, 0xfe, 0xd5, 0x26, 0x4e, 0x26, 0x66, 0x01, +0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xdb, 0x02, 0xb4, 0x02, 0x26, +0x05, 0xc6, 0x00, 0x00, 0x00, 0x07, 0x07, 0x32, +0x01, 0x23, 0xff, 0x6e, 0x00, 0x01, 0x00, 0x61, +0x00, 0x00, 0x01, 0xe5, 0x02, 0x0c, 0x00, 0x1b, +0x00, 0x57, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, +0x05, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x08, +0x00, 0x01, 0x00, 0x03, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x05, 0x10, 0xb8, 0x00, 0x01, 0xd0, 0xb8, +0x00, 0x0f, 0x10, 0xb8, 0x00, 0x06, 0xd0, 0xb8, +0x00, 0x06, 0x2f, 0xb8, 0x00, 0x0f, 0x10, 0xb9, +0x00, 0x15, 0x00, 0x02, 0xf4, 0xba, 0x00, 0x1b, +0x00, 0x03, 0x00, 0x08, 0x11, 0x12, 0x39, 0x30, +0x31, 0x21, 0x23, 0x27, 0x23, 0x15, 0x23, 0x11, +0x33, 0x15, 0x33, 0x37, 0x3e, 0x03, 0x33, 0x32, +0x16, 0x17, 0x07, 0x26, 0x23, 0x22, 0x0e, 0x02, +0x0f, 0x01, 0x01, 0xe5, 0x34, 0xb3, 0x6f, 0x2e, +0x2e, 0x6e, 0x52, 0x12, 0x1c, 0x1a, 0x19, 0x11, +0x06, 0x0e, 0x05, 0x0a, 0x08, 0x09, 0x09, 0x0f, +0x11, 0x15, 0x0f, 0x50, 0xfc, 0xfc, 0x02, 0x00, +0xdd, 0x8a, 0x1d, 0x25, 0x15, 0x08, 0x02, 0x02, +0x2c, 0x04, 0x05, 0x10, 0x1c, 0x18, 0x83, 0x00, +0x00, 0x01, 0x00, 0x06, 0xff, 0xf4, 0x01, 0xba, +0x02, 0x00, 0x00, 0x1a, 0x00, 0x41, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0e, 0x2f, +0x1b, 0xb9, 0x00, 0x0e, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x06, 0x00, 0x02, 0xf4, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x11, 0xd0, 0xb8, +0x00, 0x11, 0x2f, 0xb8, 0x00, 0x0e, 0x10, 0xb9, +0x00, 0x12, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, +0x22, 0x26, 0x27, 0x37, 0x16, 0x33, 0x32, 0x3e, +0x02, 0x37, 0x3e, 0x01, 0x37, 0x21, 0x11, 0x23, +0x11, 0x23, 0x0e, 0x01, 0x07, 0x0e, 0x03, 0x2c, +0x08, 0x16, 0x08, 0x0c, 0x0c, 0x0a, 0x0b, 0x14, +0x13, 0x14, 0x0a, 0x11, 0x20, 0x11, 0x01, 0x00, +0x2e, 0xae, 0x10, 0x1b, 0x10, 0x0c, 0x18, 0x1c, +0x22, 0x0c, 0x03, 0x03, 0x2b, 0x04, 0x0a, 0x1e, +0x39, 0x2f, 0x55, 0xa1, 0x59, 0xfe, 0x00, 0x01, +0xda, 0x4d, 0x95, 0x4b, 0x38, 0x48, 0x29, 0x10, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x02, 0x0f, +0x02, 0x00, 0x02, 0x06, 0x04, 0xcf, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xe1, +0x02, 0x00, 0x02, 0x06, 0x04, 0xca, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x07, +0x02, 0x0c, 0x02, 0x06, 0x04, 0xd1, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xdb, +0x02, 0x00, 0x02, 0x06, 0x05, 0xb0, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0xc5, +0x02, 0x00, 0x02, 0x06, 0x04, 0xd2, 0x00, 0x00, +0xff, 0xff, 0x00, 0x37, 0xff, 0xf4, 0x01, 0xc8, +0x02, 0x0c, 0x02, 0x06, 0x04, 0xc5, 0x00, 0x00, +0xff, 0xff, 0x00, 0x1d, 0x00, 0x00, 0x01, 0xa8, +0x02, 0x00, 0x02, 0x06, 0x04, 0xd6, 0x00, 0x00, +0x00, 0x01, 0x00, 0x07, 0xff, 0xf4, 0x01, 0x9f, +0x02, 0x00, 0x00, 0x14, 0x00, 0x47, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0a, 0x2f, +0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x05, 0x00, 0x02, 0xf4, 0xba, +0x00, 0x09, 0x00, 0x0a, 0x00, 0x00, 0x11, 0x12, +0x39, 0xba, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0a, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x0a, 0x10, 0xb8, +0x00, 0x10, 0xd0, 0x30, 0x31, 0x17, 0x22, 0x27, +0x37, 0x16, 0x33, 0x32, 0x36, 0x3f, 0x01, 0x03, +0x33, 0x13, 0x17, 0x33, 0x37, 0x13, 0x33, 0x03, +0x0e, 0x01, 0x6b, 0x1e, 0x12, 0x0c, 0x0f, 0x12, +0x1e, 0x25, 0x0b, 0x0f, 0xbe, 0x30, 0x79, 0x29, +0x04, 0x24, 0x70, 0x2e, 0xba, 0x13, 0x38, 0x0c, +0x07, 0x29, 0x06, 0x18, 0x19, 0x21, 0x01, 0x90, +0xfe, 0xfa, 0x5a, 0x5a, 0x01, 0x06, 0xfe, 0x51, +0x2c, 0x31, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, +0xff, 0xf4, 0x02, 0x3c, 0x02, 0x0c, 0x00, 0x06, +0x00, 0x0d, 0x00, 0x1f, 0x00, 0x55, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1e, 0x2f, +0x1b, 0xb9, 0x00, 0x1e, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x16, +0x2f, 0x1b, 0xb9, 0x00, 0x16, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x17, 0xdc, 0xb9, 0x00, 0x0d, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, 0xd0, 0xb8, +0x00, 0x1e, 0x10, 0xb8, 0x00, 0x1d, 0xdc, 0xb9, +0x00, 0x07, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x06, +0xd0, 0xb8, 0x00, 0x1d, 0x10, 0xb8, 0x00, 0x0e, +0xd0, 0xb8, 0x00, 0x17, 0x10, 0xb8, 0x00, 0x14, +0xd0, 0x30, 0x31, 0x25, 0x3e, 0x01, 0x35, 0x34, +0x26, 0x27, 0x23, 0x0e, 0x01, 0x15, 0x14, 0x16, +0x17, 0x13, 0x1e, 0x01, 0x15, 0x14, 0x06, 0x07, +0x15, 0x23, 0x35, 0x2e, 0x01, 0x35, 0x34, 0x36, +0x37, 0x35, 0x33, 0x01, 0x4a, 0x61, 0x63, 0x63, +0x61, 0x28, 0x61, 0x63, 0x63, 0x61, 0x28, 0x73, +0x7f, 0x7f, 0x73, 0x28, 0x73, 0x7f, 0x7f, 0x73, +0x28, 0x6a, 0x01, 0x51, 0x47, 0x48, 0x50, 0x01, +0x01, 0x50, 0x48, 0x47, 0x51, 0x01, 0x01, 0x55, +0x02, 0x61, 0x59, 0x58, 0x62, 0x02, 0x53, 0x53, +0x02, 0x62, 0x58, 0x59, 0x61, 0x02, 0x4d, 0x00, +0xff, 0xff, 0x00, 0x11, 0x00, 0x00, 0x01, 0x93, +0x02, 0x00, 0x02, 0x06, 0x04, 0xda, 0x00, 0x00, +0x00, 0x01, 0x00, 0x61, 0xff, 0x54, 0x02, 0x10, +0x02, 0x00, 0x00, 0x0c, 0x00, 0x3d, 0x00, 0x7d, +0xb8, 0x00, 0x03, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x06, 0x2f, 0x1b, 0xb9, +0x00, 0x06, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, +0xb9, 0x00, 0x05, 0x00, 0x05, 0x3e, 0x59, 0xb9, +0x00, 0x08, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, +0xd0, 0xb8, 0x00, 0x06, 0x10, 0xb8, 0x00, 0x0a, +0xd0, 0x30, 0x31, 0x25, 0x15, 0x07, 0x23, 0x35, +0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, +0x02, 0x10, 0x06, 0x26, 0xfe, 0x7d, 0x2e, 0x01, +0x11, 0x2e, 0x27, 0x1a, 0xb9, 0xac, 0x02, 0x00, +0xfe, 0x27, 0x01, 0xd9, 0xfe, 0x27, 0x00, 0x00, +0x00, 0x01, 0x00, 0x47, 0x00, 0x00, 0x01, 0xa7, +0x02, 0x00, 0x00, 0x15, 0x00, 0x37, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x09, 0x2f, +0x1b, 0xb9, 0x00, 0x09, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x14, +0x2f, 0x1b, 0xb9, 0x00, 0x14, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x03, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x09, 0x10, 0xb8, +0x00, 0x12, 0xd0, 0x30, 0x31, 0x25, 0x0e, 0x01, +0x23, 0x22, 0x2e, 0x02, 0x3d, 0x01, 0x33, 0x15, +0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x35, 0x33, +0x11, 0x23, 0x01, 0x79, 0x15, 0x35, 0x23, 0x2e, +0x49, 0x33, 0x1b, 0x2d, 0x53, 0x4a, 0x21, 0x32, +0x15, 0x2e, 0x2e, 0xed, 0x04, 0x05, 0x10, 0x26, +0x3d, 0x2c, 0x7d, 0x7d, 0x44, 0x35, 0x05, 0x05, +0xec, 0xfe, 0x00, 0x00, 0x00, 0x01, 0x00, 0x61, +0x00, 0x00, 0x02, 0x86, 0x02, 0x00, 0x00, 0x0b, +0x00, 0x43, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0a, 0x2f, 0x1b, 0xb9, 0x00, +0x0a, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x02, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x04, 0xd0, 0xb8, 0x00, 0x02, 0x10, 0xb8, +0x00, 0x06, 0xd0, 0xb8, 0x00, 0x04, 0x10, 0xb8, +0x00, 0x08, 0xd0, 0x30, 0x31, 0x13, 0x33, 0x11, +0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, +0x21, 0x61, 0x2d, 0xcf, 0x2d, 0xcf, 0x2d, 0xfd, +0xdb, 0x02, 0x00, 0xfe, 0x27, 0x01, 0xd9, 0xfe, +0x27, 0x01, 0xd9, 0xfe, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x61, 0xff, 0x54, 0x02, 0xc8, +0x02, 0x00, 0x00, 0x10, 0x00, 0x45, 0x00, 0x7d, +0xb8, 0x00, 0x03, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x06, 0x2f, 0x1b, 0xb9, +0x00, 0x06, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, 0x1b, +0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, 0x59, 0xb9, +0x00, 0x08, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0c, +0xd0, 0xb8, 0x00, 0x00, 0xd0, 0xb8, 0x00, 0x06, +0x10, 0xb8, 0x00, 0x0a, 0xd0, 0xb8, 0x00, 0x0e, +0xd0, 0x30, 0x31, 0x25, 0x15, 0x07, 0x23, 0x35, +0x21, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, +0x33, 0x11, 0x33, 0x11, 0x02, 0xc8, 0x06, 0x26, +0xfd, 0xc5, 0x2d, 0xcf, 0x2d, 0xcf, 0x2d, 0x27, +0x1a, 0xb9, 0xac, 0x02, 0x00, 0xfe, 0x27, 0x01, +0xd9, 0xfe, 0x27, 0x01, 0xd9, 0xfe, 0x27, 0x00, +0x00, 0x02, 0x00, 0x1d, 0x00, 0x00, 0x02, 0x37, +0x02, 0x00, 0x00, 0x0c, 0x00, 0x15, 0x00, 0x43, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x02, 0x2f, 0x1b, 0xb9, 0x00, 0x02, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x05, 0x00, 0x01, +0x00, 0x13, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x02, +0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x0b, 0x10, 0xb9, 0x00, 0x0d, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x13, 0x23, 0x35, 0x33, 0x15, +0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x2b, 0x01, +0x37, 0x32, 0x36, 0x35, 0x34, 0x26, 0x2b, 0x01, +0x15, 0xd6, 0xb9, 0xe7, 0x6a, 0x5b, 0x6e, 0x6a, +0x5e, 0x99, 0x90, 0x51, 0x51, 0x52, 0x52, 0x60, +0x01, 0xd9, 0x27, 0xda, 0x42, 0x4b, 0x4e, 0x4b, +0x27, 0x35, 0x3c, 0x38, 0x31, 0xda, 0x00, 0x00, +0x00, 0x03, 0x00, 0x61, 0x00, 0x00, 0x02, 0x4c, +0x02, 0x00, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x17, +0x00, 0x49, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x04, 0x2f, 0x1b, 0xb9, 0x00, 0x04, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0d, 0x2f, 0x1b, 0xb9, 0x00, +0x0d, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x07, +0x00, 0x01, 0x00, 0x15, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x04, 0x10, 0xb8, 0x00, 0x00, 0xd0, 0xb8, +0x00, 0x0d, 0x10, 0xb8, 0x00, 0x03, 0xd0, 0xb8, +0x00, 0x0d, 0x10, 0xb9, 0x00, 0x0f, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x01, 0x33, 0x11, 0x23, 0x01, +0x33, 0x15, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, +0x2b, 0x01, 0x37, 0x32, 0x36, 0x35, 0x34, 0x26, +0x2b, 0x01, 0x15, 0x02, 0x1e, 0x2e, 0x2e, 0xfe, +0x43, 0x2e, 0x61, 0x5b, 0x6e, 0x6a, 0x5e, 0x90, +0x86, 0x51, 0x52, 0x52, 0x52, 0x57, 0x02, 0x00, +0xfe, 0x00, 0x02, 0x00, 0xda, 0x42, 0x4b, 0x4e, +0x4b, 0x27, 0x35, 0x3c, 0x38, 0x31, 0xda, 0x00, +0x00, 0x02, 0x00, 0x61, 0x00, 0x00, 0x01, 0xcd, +0x02, 0x00, 0x00, 0x0a, 0x00, 0x13, 0x00, 0x39, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x09, 0x2f, 0x1b, 0xb9, 0x00, 0x09, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x03, 0x00, 0x01, +0x00, 0x11, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x09, +0x10, 0xb9, 0x00, 0x0b, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x13, 0x33, 0x15, 0x33, 0x32, 0x16, 0x15, +0x14, 0x06, 0x2b, 0x01, 0x37, 0x32, 0x36, 0x35, +0x34, 0x26, 0x2b, 0x01, 0x15, 0x61, 0x2e, 0x75, +0x5b, 0x6e, 0x6a, 0x5e, 0xa4, 0x9a, 0x51, 0x52, +0x52, 0x52, 0x6b, 0x02, 0x00, 0xda, 0x42, 0x4b, +0x4e, 0x4b, 0x27, 0x35, 0x3c, 0x38, 0x31, 0xda, +0x00, 0x01, 0x00, 0x26, 0xff, 0xf4, 0x01, 0xb6, +0x02, 0x0c, 0x00, 0x20, 0x00, 0x49, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, 0x2f, +0x1b, 0xb9, 0x00, 0x03, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, +0x2f, 0x1b, 0xb9, 0x00, 0x0d, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x14, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x17, 0x00, 0x03, 0x00, 0x0d, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x17, 0x2f, 0xb9, 0x00, 0x19, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x03, 0x10, 0xb9, +0x00, 0x1d, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, +0x3e, 0x01, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, +0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x37, 0x1e, +0x01, 0x33, 0x32, 0x36, 0x37, 0x23, 0x35, 0x33, +0x2e, 0x01, 0x23, 0x22, 0x06, 0x07, 0x33, 0x22, +0x4a, 0x36, 0x32, 0x53, 0x3b, 0x21, 0x22, 0x3c, +0x54, 0x33, 0x39, 0x57, 0x1b, 0x1b, 0x1a, 0x49, +0x2e, 0x54, 0x5f, 0x02, 0xf9, 0xf8, 0x08, 0x5d, +0x4e, 0x2a, 0x3e, 0x1d, 0x01, 0xcb, 0x1f, 0x22, +0x25, 0x44, 0x63, 0x3d, 0x42, 0x65, 0x45, 0x23, +0x2d, 0x1d, 0x1e, 0x1c, 0x23, 0x71, 0x6f, 0x25, +0x5b, 0x66, 0x1c, 0x1a, 0x00, 0x02, 0x00, 0x61, +0xff, 0xf4, 0x02, 0xe3, 0x02, 0x0c, 0x00, 0x13, +0x00, 0x2e, 0x00, 0x65, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x2c, 0x2f, 0x1b, 0xb9, +0x00, 0x2c, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x19, 0x2f, 0x1b, +0xb9, 0x00, 0x19, 0x00, 0x0b, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x2a, 0x2f, +0x1b, 0xb9, 0x00, 0x2a, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x23, +0x2f, 0x1b, 0xb9, 0x00, 0x23, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x14, 0x00, 0x01, 0x00, 0x28, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x23, 0x10, 0xb9, +0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x19, +0x10, 0xb9, 0x00, 0x0a, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x25, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, +0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, +0x02, 0x03, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, +0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, +0x27, 0x23, 0x15, 0x23, 0x11, 0x33, 0x15, 0x01, +0xfc, 0x29, 0x44, 0x30, 0x1a, 0x1a, 0x30, 0x44, +0x29, 0x29, 0x44, 0x30, 0x1a, 0x1a, 0x30, 0x44, +0xbc, 0x04, 0x26, 0x3c, 0x50, 0x2f, 0x33, 0x54, +0x3e, 0x22, 0x22, 0x3e, 0x54, 0x33, 0x32, 0x53, +0x3d, 0x23, 0x01, 0x87, 0x2e, 0x2e, 0x1d, 0x20, +0x3b, 0x54, 0x35, 0x35, 0x54, 0x3a, 0x1f, 0x1f, +0x3a, 0x54, 0x35, 0x35, 0x54, 0x3b, 0x20, 0x01, +0x07, 0x36, 0x56, 0x3c, 0x20, 0x25, 0x45, 0x63, +0x3e, 0x3e, 0x63, 0x46, 0x26, 0x25, 0x44, 0x62, +0x3d, 0xfc, 0x02, 0x00, 0xdc, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x1c, 0x00, 0x00, 0x01, 0x91, +0x02, 0x00, 0x00, 0x07, 0x00, 0x17, 0x00, 0x54, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x08, 0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x09, 0x2f, 0x1b, 0xb9, 0x00, 0x09, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0d, 0x2f, 0x1b, 0xb9, 0x00, 0x0d, +0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x07, 0x00, +0x01, 0x00, 0x0b, 0x00, 0x04, 0x2b, 0xb8, 0x00, +0x08, 0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, +0xba, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x07, 0x11, +0x12, 0x39, 0x30, 0x31, 0x01, 0x23, 0x22, 0x06, +0x15, 0x14, 0x3b, 0x01, 0x37, 0x11, 0x23, 0x35, +0x23, 0x07, 0x23, 0x37, 0x2e, 0x01, 0x35, 0x34, +0x3e, 0x02, 0x33, 0x01, 0x63, 0x6a, 0x49, 0x4c, +0x95, 0x6a, 0x2e, 0x2e, 0x79, 0x99, 0x35, 0x9f, +0x3c, 0x48, 0x1a, 0x30, 0x44, 0x2a, 0x01, 0xdb, +0x2d, 0x3a, 0x6c, 0xf8, 0xfe, 0x00, 0xe5, 0xe5, +0xe8, 0x0a, 0x47, 0x3d, 0x26, 0x35, 0x21, 0x0e, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0x9e, +0x02, 0xde, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x07, 0x07, 0x22, 0x01, 0x05, 0xff, 0x8a, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0x9e, +0x02, 0xa8, 0x02, 0x26, 0x04, 0xc7, 0x00, 0x00, +0x00, 0x07, 0x07, 0x36, 0x01, 0x05, 0xff, 0x8a, +0x00, 0x01, 0x00, 0x1d, 0xff, 0xf7, 0x02, 0x14, +0x02, 0x00, 0x00, 0x27, 0x00, 0x53, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x24, 0x2f, +0x1b, 0xb9, 0x00, 0x24, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, +0x2f, 0x1b, 0xb9, 0x00, 0x0d, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x1c, 0x00, 0x01, 0x00, 0x03, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x0d, 0x10, 0xb9, +0x00, 0x14, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0d, +0x10, 0xb8, 0x00, 0x21, 0xd0, 0xb8, 0x00, 0x21, +0x2f, 0xb8, 0x00, 0x24, 0x10, 0xb9, 0x00, 0x23, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x26, 0xd0, 0x30, +0x31, 0x13, 0x3e, 0x01, 0x33, 0x32, 0x1e, 0x02, +0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, +0x37, 0x1e, 0x01, 0x33, 0x32, 0x3e, 0x02, 0x35, +0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, +0x11, 0x23, 0x35, 0x21, 0x15, 0x23, 0xe9, 0x15, +0x32, 0x21, 0x2b, 0x48, 0x34, 0x1c, 0x1a, 0x2a, +0x35, 0x1a, 0x0e, 0x1e, 0x08, 0x09, 0x06, 0x17, +0x09, 0x12, 0x25, 0x1f, 0x14, 0x4f, 0x4a, 0x20, +0x2f, 0x15, 0x2e, 0x9e, 0x01, 0x96, 0xca, 0x01, +0x2a, 0x05, 0x04, 0x12, 0x27, 0x3c, 0x2a, 0x2d, +0x3c, 0x24, 0x10, 0x04, 0x03, 0x26, 0x02, 0x06, +0x0c, 0x1d, 0x2e, 0x22, 0x40, 0x3a, 0x05, 0x04, +0xfe, 0xfa, 0x01, 0xd9, 0x27, 0x27, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x01, 0x95, +0x02, 0xc2, 0x02, 0x26, 0x05, 0xa3, 0x00, 0x00, +0x00, 0x07, 0x07, 0x25, 0x01, 0x0a, 0xff, 0x6e, +0x00, 0x01, 0x00, 0x37, 0xff, 0xf4, 0x01, 0xc8, +0x02, 0x0c, 0x00, 0x20, 0x00, 0x4d, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, 0x2f, +0x1b, 0xb9, 0x00, 0x0d, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, +0x2f, 0x1b, 0xb9, 0x00, 0x03, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x0d, 0x10, 0xb9, 0x00, 0x14, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x19, 0x00, 0x0d, +0x00, 0x03, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x19, +0x2f, 0xb9, 0x00, 0x18, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x03, 0x10, 0xb9, 0x00, 0x1d, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x25, 0x0e, 0x01, 0x23, 0x22, +0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, +0x16, 0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, 0x06, +0x07, 0x33, 0x15, 0x23, 0x1e, 0x01, 0x33, 0x32, +0x36, 0x37, 0x01, 0xc8, 0x22, 0x4e, 0x36, 0x34, +0x57, 0x3e, 0x22, 0x23, 0x3f, 0x58, 0x35, 0x32, +0x4a, 0x17, 0x1b, 0x17, 0x3a, 0x29, 0x51, 0x64, +0x08, 0xf8, 0xf9, 0x02, 0x64, 0x58, 0x2b, 0x41, +0x1d, 0x3e, 0x24, 0x26, 0x25, 0x45, 0x64, 0x40, +0x3f, 0x63, 0x44, 0x24, 0x26, 0x19, 0x1e, 0x17, +0x1d, 0x63, 0x5e, 0x25, 0x6a, 0x76, 0x1e, 0x1f, +0xff, 0xff, 0x00, 0x2e, 0xff, 0xf4, 0x01, 0xa0, +0x02, 0x0c, 0x02, 0x06, 0x04, 0xd5, 0x00, 0x00, +0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x00, 0x8f, +0x02, 0x00, 0x02, 0x06, 0x04, 0xcb, 0x00, 0x00, +0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x00, 0xfe, +0x02, 0xa8, 0x02, 0x26, 0x04, 0xcb, 0x00, 0x00, +0x00, 0x06, 0x07, 0x36, 0x78, 0x8a, 0x00, 0x00, +0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00, 0xdc, +0x02, 0xa7, 0x00, 0x0b, 0x00, 0x17, 0x00, 0x1b, +0x00, 0x3d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x18, 0x2f, 0x1b, 0xb9, 0x00, 0x18, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x1a, 0x2f, 0x1b, 0xb9, 0x00, +0x1a, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x06, +0x00, 0x00, 0x00, 0x03, 0x2b, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x0c, 0xd0, 0xb8, 0x00, 0x06, +0x10, 0xb8, 0x00, 0x12, 0xd0, 0x30, 0x31, 0x13, +0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, +0x15, 0x14, 0x06, 0x33, 0x22, 0x26, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, +0x33, 0x11, 0x23, 0x38, 0x0f, 0x14, 0x14, 0x0f, +0x10, 0x14, 0x14, 0x70, 0x0f, 0x15, 0x15, 0x0f, +0x0f, 0x15, 0x15, 0x66, 0x2e, 0x2e, 0x02, 0x5e, +0x13, 0x11, 0x11, 0x14, 0x14, 0x11, 0x11, 0x13, +0x13, 0x11, 0x11, 0x14, 0x14, 0x11, 0x11, 0x13, +0x5e, 0xfe, 0x00, 0x00, 0xff, 0xff, 0x00, 0x29, +0xff, 0xf4, 0x01, 0x44, 0x02, 0x00, 0x02, 0x06, +0x04, 0xcc, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, +0xff, 0xf4, 0x02, 0xc5, 0x02, 0x00, 0x00, 0x08, +0x00, 0x2a, 0x00, 0x53, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x28, 0x2f, 0x1b, 0xb9, +0x00, 0x28, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x1a, 0x2f, 0x1b, +0xb9, 0x00, 0x1a, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x2a, 0x00, 0x01, 0x00, 0x07, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x1a, 0x10, 0xb9, 0x00, 0x20, +0x00, 0x02, 0xf4, 0xb8, 0x00, 0x08, 0xd0, 0xb8, +0x00, 0x1a, 0x10, 0xb8, 0x00, 0x10, 0xd0, 0xb8, +0x00, 0x10, 0x2f, 0xb8, 0x00, 0x28, 0x10, 0xb9, +0x00, 0x11, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x25, +0x32, 0x36, 0x35, 0x34, 0x26, 0x2b, 0x01, 0x15, +0x37, 0x32, 0x16, 0x15, 0x14, 0x06, 0x2b, 0x01, +0x11, 0x23, 0x0e, 0x01, 0x07, 0x0e, 0x03, 0x23, +0x22, 0x26, 0x27, 0x37, 0x16, 0x33, 0x32, 0x3e, +0x02, 0x37, 0x3e, 0x01, 0x37, 0x33, 0x15, 0x01, +0xf4, 0x51, 0x52, 0x52, 0x53, 0x4c, 0x56, 0x5b, +0x6e, 0x69, 0x5e, 0x86, 0x9a, 0x10, 0x1b, 0x10, +0x0c, 0x18, 0x1c, 0x22, 0x15, 0x08, 0x16, 0x08, +0x0c, 0x0c, 0x0a, 0x0b, 0x14, 0x13, 0x14, 0x0a, +0x11, 0x20, 0x11, 0xec, 0x27, 0x35, 0x3c, 0x38, +0x31, 0xda, 0xff, 0x42, 0x4b, 0x4e, 0x4b, 0x01, +0xda, 0x4d, 0x95, 0x4b, 0x38, 0x48, 0x29, 0x10, +0x03, 0x03, 0x2b, 0x04, 0x0a, 0x1e, 0x39, 0x2f, +0x55, 0xa1, 0x59, 0xda, 0x00, 0x02, 0x00, 0x61, +0x00, 0x00, 0x02, 0xf4, 0x02, 0x00, 0x00, 0x08, +0x00, 0x1b, 0x00, 0x63, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x15, 0x2f, 0x1b, 0xb9, +0x00, 0x15, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x14, 0x2f, 0x1b, +0xb9, 0x00, 0x14, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x10, 0xd0, 0xb9, 0x00, 0x00, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x12, 0x00, 0x15, 0x00, 0x14, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x12, 0x2f, 0xb8, +0x00, 0x07, 0xd0, 0xb8, 0x00, 0x07, 0x2f, 0xb8, +0x00, 0x12, 0x10, 0xb9, 0x00, 0x17, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x15, 0x10, 0xb8, 0x00, 0x19, +0xd0, 0xb8, 0x00, 0x17, 0x10, 0xb8, 0x00, 0x1b, +0xd0, 0xb8, 0x00, 0x1b, 0x2f, 0x30, 0x31, 0x25, +0x32, 0x36, 0x35, 0x34, 0x26, 0x2b, 0x01, 0x15, +0x37, 0x32, 0x16, 0x15, 0x14, 0x06, 0x2b, 0x01, +0x35, 0x21, 0x15, 0x23, 0x11, 0x33, 0x15, 0x21, +0x35, 0x33, 0x15, 0x02, 0x23, 0x51, 0x51, 0x52, +0x52, 0x4d, 0x57, 0x5b, 0x6e, 0x6a, 0x5e, 0x86, +0xfe, 0xe9, 0x2e, 0x2e, 0x01, 0x17, 0x2e, 0x27, +0x35, 0x3c, 0x38, 0x31, 0xda, 0xff, 0x42, 0x4b, +0x4e, 0x4b, 0xfc, 0xfc, 0x02, 0x00, 0xdc, 0xdc, +0xda, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1d, +0x00, 0x00, 0x02, 0x0c, 0x02, 0x00, 0x00, 0x17, +0x00, 0x45, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x14, 0x2f, 0x1b, 0xb9, 0x00, 0x14, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x11, 0x2f, 0x1b, 0xb9, 0x00, +0x11, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x03, +0x00, 0x01, 0x00, 0x0c, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x11, 0x10, 0xb8, 0x00, 0x08, 0xd0, 0xb8, +0x00, 0x14, 0x10, 0xb9, 0x00, 0x13, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x16, 0xd0, 0x30, 0x31, 0x13, +0x3e, 0x01, 0x33, 0x32, 0x16, 0x1d, 0x01, 0x23, +0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x11, +0x23, 0x11, 0x23, 0x35, 0x21, 0x15, 0x23, 0xe9, +0x15, 0x32, 0x21, 0x58, 0x63, 0x2e, 0x4b, 0x46, +0x20, 0x2f, 0x15, 0x2e, 0x9e, 0x01, 0x96, 0xca, +0x01, 0x2a, 0x05, 0x04, 0x46, 0x57, 0x96, 0x96, +0x45, 0x34, 0x05, 0x04, 0xfe, 0xfa, 0x01, 0xd9, +0x27, 0x27, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xe5, 0x02, 0xc2, 0x02, 0x26, +0x05, 0xc8, 0x00, 0x00, 0x00, 0x07, 0x07, 0x25, +0x01, 0x16, 0xff, 0x6e, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xdb, 0x02, 0xc2, 0x02, 0x26, +0x05, 0xc6, 0x00, 0x00, 0x00, 0x07, 0x07, 0x22, +0x01, 0x23, 0xff, 0x6e, 0xff, 0xff, 0x00, 0x07, +0xff, 0xf4, 0x01, 0x9f, 0x02, 0xb4, 0x02, 0x26, +0x05, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x32, +0x00, 0xd2, 0xff, 0x6e, 0x00, 0x01, 0x00, 0x61, +0xff, 0x54, 0x01, 0xda, 0x02, 0x00, 0x00, 0x0b, +0x00, 0x37, 0x00, 0x7d, 0xb8, 0x00, 0x03, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, 0x05, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x01, 0xd0, 0xb8, +0x00, 0x06, 0x10, 0xb8, 0x00, 0x0a, 0xd0, 0x30, +0x31, 0x21, 0x23, 0x07, 0x23, 0x27, 0x23, 0x11, +0x33, 0x11, 0x21, 0x11, 0x33, 0x01, 0xda, 0xa4, +0x06, 0x24, 0x03, 0xa8, 0x2e, 0x01, 0x1d, 0x2e, +0xac, 0xac, 0x02, 0x00, 0xfe, 0x27, 0x01, 0xd9, +0x00, 0x02, 0x00, 0x1d, 0x00, 0x00, 0x01, 0xe2, +0x02, 0x22, 0x00, 0x08, 0x00, 0x1b, 0x00, 0x48, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, 0x00, 0x05, +0x3e, 0x59, 0xba, 0x00, 0x14, 0x00, 0x11, 0x00, +0x03, 0x2b, 0xbb, 0x00, 0x09, 0x00, 0x01, 0x00, +0x06, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x0f, 0x10, +0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, 0x00, +0x14, 0x10, 0xb8, 0x00, 0x15, 0xdc, 0xb8, 0x00, +0x14, 0x10, 0xb8, 0x00, 0x17, 0xd0, 0xb8, 0x00, +0x11, 0x10, 0xb8, 0x00, 0x19, 0xd0, 0x30, 0x31, +0x25, 0x32, 0x36, 0x35, 0x34, 0x26, 0x2b, 0x01, +0x15, 0x37, 0x32, 0x16, 0x15, 0x14, 0x06, 0x2b, +0x01, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, +0x33, 0x15, 0x23, 0x15, 0x01, 0x11, 0x51, 0x52, +0x52, 0x53, 0x48, 0x52, 0x5b, 0x6e, 0x69, 0x5e, +0x82, 0x7c, 0x7c, 0x2e, 0xcd, 0xcd, 0x26, 0x35, +0x3c, 0x38, 0x30, 0xd9, 0xfe, 0x42, 0x4a, 0x4e, +0x4a, 0x01, 0x93, 0x22, 0x6d, 0x6d, 0x22, 0x6f, +0x00, 0x03, 0x00, 0x37, 0xff, 0xf4, 0x02, 0x07, +0x02, 0x0c, 0x00, 0x08, 0x00, 0x0f, 0x00, 0x23, +0x00, 0x51, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x10, 0x2f, 0x1b, 0xb9, 0x00, 0x10, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x1a, 0x2f, 0x1b, 0xb9, 0x00, +0x1a, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x00, +0x00, 0x10, 0x00, 0x1a, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x00, 0x2f, 0xb8, 0x00, 0x1a, 0x10, 0xb9, +0x00, 0x03, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, +0x10, 0xb9, 0x00, 0x09, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x10, 0x10, 0xb9, 0x00, 0x0c, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x37, 0x1e, 0x01, 0x33, 0x32, +0x3e, 0x02, 0x37, 0x27, 0x2e, 0x01, 0x23, 0x22, +0x06, 0x07, 0x37, 0x32, 0x1e, 0x02, 0x15, 0x14, +0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, +0x3e, 0x02, 0x64, 0x02, 0x66, 0x53, 0x29, 0x44, +0x31, 0x1b, 0x01, 0x01, 0x08, 0x63, 0x4e, 0x4e, +0x64, 0x08, 0xba, 0x33, 0x55, 0x3d, 0x23, 0x23, +0x3d, 0x55, 0x33, 0x33, 0x55, 0x3e, 0x22, 0x22, +0x3e, 0x55, 0xfd, 0x6b, 0x76, 0x1e, 0x3a, 0x54, +0x35, 0x25, 0x5e, 0x64, 0x64, 0x5e, 0xea, 0x24, +0x44, 0x63, 0x40, 0x3f, 0x64, 0x45, 0x25, 0x25, +0x45, 0x64, 0x3f, 0x40, 0x63, 0x44, 0x24, 0x00, +0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x01, 0xc6, +0x02, 0x0c, 0x00, 0x1a, 0x00, 0x45, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0f, 0x2f, +0x1b, 0xb9, 0x00, 0x0f, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1a, +0x2f, 0x1b, 0xb9, 0x00, 0x1a, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x0f, 0x10, 0xb8, 0x00, 0x00, +0xd0, 0xb8, 0x00, 0x00, 0x2f, 0xba, 0x00, 0x05, +0x00, 0x00, 0x00, 0x1a, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x0f, 0x10, 0xb9, 0x00, 0x15, 0x00, 0x02, +0xf4, 0x30, 0x31, 0x13, 0x33, 0x13, 0x1e, 0x01, +0x17, 0x33, 0x3e, 0x03, 0x3f, 0x01, 0x3e, 0x01, +0x33, 0x32, 0x16, 0x17, 0x07, 0x26, 0x23, 0x22, +0x06, 0x07, 0x03, 0x23, 0x04, 0x31, 0x64, 0x10, +0x1a, 0x10, 0x04, 0x08, 0x0d, 0x0d, 0x0c, 0x08, +0x40, 0x10, 0x26, 0x23, 0x0a, 0x0e, 0x08, 0x0b, +0x07, 0x0d, 0x11, 0x15, 0x0a, 0x85, 0x38, 0x02, +0x00, 0xfe, 0xdb, 0x2e, 0x4d, 0x2f, 0x18, 0x2a, +0x29, 0x28, 0x17, 0xcd, 0x37, 0x2d, 0x03, 0x03, +0x2a, 0x04, 0x20, 0x20, 0xfe, 0x60, 0x00, 0x00, +0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x01, 0x9d, +0x02, 0xab, 0x00, 0x07, 0x00, 0x35, 0x00, 0x7c, +0xb8, 0x00, 0x07, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, +0x00, 0x05, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, 0x2f, 0x1b, +0xb9, 0x00, 0x03, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x05, 0x10, 0xb9, 0x00, 0x01, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x01, 0x07, 0x21, 0x11, 0x23, +0x11, 0x21, 0x37, 0x01, 0x9d, 0x08, 0xfe, 0xfa, +0x2e, 0x01, 0x0b, 0x0d, 0x02, 0xab, 0xd2, 0xfe, +0x27, 0x02, 0x00, 0xab, 0x00, 0x01, 0x00, 0x25, +0x00, 0x00, 0x01, 0xaa, 0x02, 0x00, 0x00, 0x0d, +0x00, 0x55, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, +0x05, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x0b, +0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x03, 0x00, 0x0b, 0x00, 0x05, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x03, 0x2f, 0xb8, 0x00, 0x02, +0xdc, 0xb8, 0x00, 0x03, 0x10, 0xb8, 0x00, 0x07, +0xd0, 0xb8, 0x00, 0x02, 0x10, 0xb8, 0x00, 0x09, +0xd0, 0xb8, 0x00, 0x09, 0x2f, 0x30, 0x31, 0x13, +0x15, 0x33, 0x15, 0x23, 0x15, 0x23, 0x35, 0x23, +0x35, 0x37, 0x35, 0x21, 0x15, 0xa4, 0xa3, 0xa3, +0x2e, 0x51, 0x51, 0x01, 0x34, 0x01, 0xd9, 0xc4, +0x22, 0xf3, 0xf3, 0x1f, 0x03, 0xeb, 0x27, 0x00, +0x00, 0x01, 0x00, 0x09, 0xff, 0x54, 0x02, 0x9c, +0x02, 0x0c, 0x00, 0x39, 0x00, 0x91, 0x00, 0x7d, +0xb8, 0x00, 0x03, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x1b, 0x2f, 0x1b, 0xb9, +0x00, 0x1b, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, 0x2f, 0x1b, +0xb9, 0x00, 0x0d, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x21, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x0d, 0x10, 0xb8, 0x00, 0x09, +0xd0, 0xb8, 0x00, 0x05, 0xd0, 0xb9, 0x00, 0x00, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0b, 0x10, 0xb8, +0x00, 0x06, 0xd0, 0xba, 0x00, 0x0e, 0x00, 0x21, +0x00, 0x0b, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x1b, +0x10, 0xb9, 0x00, 0x14, 0x00, 0x02, 0xf4, 0xb8, +0x00, 0x1b, 0x10, 0xb8, 0x00, 0x23, 0xd0, 0xb8, +0x00, 0x23, 0x2f, 0xb8, 0x00, 0x21, 0x10, 0xb8, +0x00, 0x26, 0xd0, 0xb8, 0x00, 0x1b, 0x10, 0xb8, +0x00, 0x2c, 0xd0, 0xb8, 0x00, 0x14, 0x10, 0xb8, +0x00, 0x32, 0xd0, 0xba, 0x00, 0x38, 0x00, 0x06, +0x00, 0x26, 0x11, 0x12, 0x39, 0x30, 0x31, 0x25, +0x15, 0x07, 0x23, 0x35, 0x23, 0x27, 0x23, 0x15, +0x23, 0x35, 0x23, 0x07, 0x23, 0x13, 0x27, 0x2e, +0x03, 0x23, 0x2a, 0x01, 0x07, 0x27, 0x3e, 0x01, +0x33, 0x32, 0x1e, 0x02, 0x1f, 0x01, 0x33, 0x35, +0x33, 0x15, 0x33, 0x37, 0x3e, 0x03, 0x33, 0x32, +0x17, 0x07, 0x26, 0x22, 0x23, 0x22, 0x0e, 0x02, +0x0f, 0x01, 0x17, 0x02, 0x9c, 0x05, 0x26, 0x1b, +0x9e, 0x5a, 0x2b, 0x5a, 0x9e, 0x32, 0xad, 0x40, +0x0b, 0x14, 0x12, 0x12, 0x0a, 0x04, 0x09, 0x05, +0x08, 0x04, 0x0d, 0x07, 0x10, 0x1d, 0x1c, 0x1b, +0x0f, 0x41, 0x58, 0x2b, 0x58, 0x41, 0x0f, 0x1b, +0x1c, 0x1d, 0x10, 0x10, 0x08, 0x07, 0x06, 0x09, +0x04, 0x0a, 0x12, 0x12, 0x14, 0x0b, 0x40, 0x94, +0x27, 0x1a, 0xb9, 0xac, 0xfc, 0xfc, 0xfc, 0xfc, +0x01, 0x14, 0x84, 0x18, 0x1c, 0x0f, 0x05, 0x02, +0x2b, 0x02, 0x01, 0x08, 0x15, 0x26, 0x1e, 0x88, +0xdd, 0xdd, 0x88, 0x1e, 0x26, 0x15, 0x08, 0x03, +0x2b, 0x02, 0x05, 0x0f, 0x1c, 0x18, 0x84, 0xed, +0x00, 0x01, 0x00, 0x2f, 0xff, 0x54, 0x01, 0xb3, +0x02, 0x0c, 0x00, 0x32, 0x00, 0x61, 0x00, 0x7d, +0xb8, 0x00, 0x0a, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x2a, 0x2f, 0x1b, 0xb9, +0x00, 0x2a, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0b, 0x2f, 0x1b, +0xb9, 0x00, 0x0b, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x08, 0xd0, 0xb8, 0x00, 0x0b, 0x10, 0xb9, +0x00, 0x12, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x1b, +0x00, 0x2a, 0x00, 0x0b, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x1b, 0x2f, 0xb9, 0x00, 0x1c, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x2a, 0x10, 0xb9, 0x00, 0x23, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x32, 0x00, 0x1c, +0x00, 0x1b, 0x11, 0x12, 0x39, 0x30, 0x31, 0x01, +0x1e, 0x01, 0x15, 0x14, 0x0e, 0x02, 0x0f, 0x01, +0x23, 0x27, 0x2e, 0x01, 0x27, 0x37, 0x1e, 0x01, +0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x2b, +0x01, 0x35, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, +0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, 0x01, 0x33, +0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, 0x01, +0x3c, 0x33, 0x44, 0x1b, 0x2e, 0x40, 0x24, 0x04, +0x25, 0x02, 0x36, 0x50, 0x26, 0x1b, 0x27, 0x4c, +0x37, 0x1d, 0x35, 0x28, 0x17, 0x5b, 0x51, 0x39, +0x29, 0x55, 0x4a, 0x46, 0x35, 0x28, 0x48, 0x18, +0x1a, 0x1a, 0x57, 0x32, 0x23, 0x3d, 0x2d, 0x1a, +0x2f, 0x2a, 0x01, 0x0f, 0x08, 0x41, 0x37, 0x21, +0x37, 0x28, 0x18, 0x02, 0xa1, 0xa1, 0x03, 0x25, +0x23, 0x20, 0x24, 0x20, 0x0f, 0x1d, 0x2b, 0x1c, +0x39, 0x36, 0x22, 0x32, 0x32, 0x2d, 0x33, 0x1d, +0x18, 0x20, 0x1a, 0x23, 0x13, 0x23, 0x30, 0x1e, +0x2b, 0x3e, 0x0c, 0x00, 0x00, 0x01, 0x00, 0x61, +0xff, 0x54, 0x01, 0xfb, 0x02, 0x0c, 0x00, 0x20, +0x00, 0x63, 0x00, 0x7d, 0xb8, 0x00, 0x03, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x13, 0x2f, 0x1b, 0xb9, 0x00, 0x13, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x09, 0x2f, 0x1b, 0xb9, 0x00, 0x09, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x0c, 0x00, 0x01, +0x00, 0x07, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x09, +0x10, 0xb8, 0x00, 0x05, 0xd0, 0xb9, 0x00, 0x00, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x13, 0x10, 0xb8, +0x00, 0x0a, 0xd0, 0xb8, 0x00, 0x0a, 0x2f, 0xb8, +0x00, 0x13, 0x10, 0xb9, 0x00, 0x19, 0x00, 0x02, +0xf4, 0xba, 0x00, 0x1f, 0x00, 0x0c, 0x00, 0x07, +0x11, 0x12, 0x39, 0x30, 0x31, 0x25, 0x15, 0x07, +0x23, 0x35, 0x23, 0x27, 0x23, 0x15, 0x23, 0x11, +0x33, 0x15, 0x33, 0x37, 0x3e, 0x03, 0x33, 0x32, +0x16, 0x17, 0x07, 0x26, 0x23, 0x22, 0x0e, 0x02, +0x0f, 0x01, 0x17, 0x01, 0xfb, 0x05, 0x27, 0x1e, +0xb3, 0x6f, 0x2e, 0x2e, 0x6e, 0x52, 0x12, 0x1c, +0x1a, 0x19, 0x11, 0x06, 0x0e, 0x05, 0x0a, 0x08, +0x09, 0x09, 0x0f, 0x11, 0x15, 0x0f, 0x50, 0xa7, +0x27, 0x1a, 0xb9, 0xac, 0xfc, 0xfc, 0x02, 0x00, +0xdd, 0x8a, 0x1d, 0x25, 0x15, 0x08, 0x02, 0x02, +0x2c, 0x04, 0x05, 0x10, 0x1c, 0x18, 0x83, 0xed, +0x00, 0x01, 0x00, 0x1d, 0x00, 0x00, 0x02, 0x59, +0x02, 0x0c, 0x00, 0x1d, 0x00, 0x69, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x11, 0x2f, +0x1b, 0xb9, 0x00, 0x11, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x14, +0x2f, 0x1b, 0xb9, 0x00, 0x14, 0x00, 0x0b, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x04, 0x2f, 0x1b, 0xb9, 0x00, 0x04, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x0b, 0x00, 0x01, +0x00, 0x02, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x11, +0x10, 0xb9, 0x00, 0x06, 0x00, 0x01, 0xf4, 0xb9, +0x00, 0x09, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x06, +0x10, 0xb8, 0x00, 0x17, 0xd0, 0x30, 0x31, 0x21, +0x23, 0x27, 0x23, 0x15, 0x23, 0x11, 0x23, 0x35, +0x33, 0x15, 0x33, 0x37, 0x3e, 0x03, 0x33, 0x32, +0x16, 0x17, 0x07, 0x26, 0x23, 0x22, 0x0e, 0x02, +0x0f, 0x01, 0x02, 0x59, 0x34, 0xb2, 0x6f, 0x2e, +0xb9, 0xe7, 0x6d, 0x52, 0x12, 0x1c, 0x1a, 0x1a, +0x10, 0x07, 0x0e, 0x05, 0x0a, 0x0a, 0x07, 0x09, +0x10, 0x11, 0x15, 0x0f, 0x50, 0xfc, 0xfc, 0x01, +0xd9, 0x27, 0xdd, 0x8a, 0x1d, 0x25, 0x15, 0x08, +0x02, 0x02, 0x2c, 0x04, 0x05, 0x10, 0x1c, 0x18, +0x84, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x61, +0xff, 0x54, 0x02, 0x23, 0x02, 0x00, 0x00, 0x10, +0x00, 0x51, 0x00, 0x7d, 0xb8, 0x00, 0x03, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0a, 0x2f, 0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x09, 0x2f, 0x1b, 0xb9, 0x00, 0x09, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x05, 0xd0, 0xb9, +0x00, 0x00, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x07, +0x00, 0x0a, 0x00, 0x09, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x07, 0x2f, 0xb9, 0x00, 0x0d, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0a, 0x10, 0xb8, 0x00, 0x0e, +0xd0, 0x30, 0x31, 0x25, 0x15, 0x07, 0x23, 0x35, +0x23, 0x35, 0x21, 0x15, 0x23, 0x11, 0x33, 0x15, +0x21, 0x35, 0x33, 0x11, 0x02, 0x23, 0x06, 0x26, +0x44, 0xfe, 0xdc, 0x2e, 0x2e, 0x01, 0x24, 0x2e, +0x27, 0x1a, 0xb9, 0xac, 0xfc, 0xfc, 0x02, 0x00, +0xdc, 0xdc, 0xfe, 0x27, 0x00, 0x01, 0x00, 0x37, +0xff, 0x54, 0x01, 0xc8, 0x02, 0x0c, 0x00, 0x20, +0x00, 0x43, 0x00, 0x7d, 0xb8, 0x00, 0x05, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x10, 0x2f, 0x1b, 0xb9, 0x00, 0x10, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x03, 0xd0, 0xb8, +0x00, 0x10, 0x10, 0xb9, 0x00, 0x17, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x06, 0x10, 0xb9, 0x00, 0x1d, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x25, 0x0e, 0x01, +0x0f, 0x01, 0x23, 0x27, 0x2e, 0x03, 0x35, 0x34, +0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, +0x01, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x33, +0x32, 0x36, 0x37, 0x01, 0xc8, 0x20, 0x4c, 0x33, +0x04, 0x25, 0x02, 0x2d, 0x49, 0x34, 0x1d, 0x23, +0x40, 0x58, 0x36, 0x30, 0x4a, 0x17, 0x1b, 0x17, +0x39, 0x26, 0x5b, 0x66, 0x65, 0x58, 0x2b, 0x41, +0x1d, 0x3e, 0x23, 0x25, 0x02, 0xa0, 0xa2, 0x06, +0x2b, 0x44, 0x5d, 0x39, 0x3d, 0x63, 0x46, 0x25, +0x26, 0x19, 0x1e, 0x17, 0x1d, 0x79, 0x69, 0x6a, +0x7a, 0x1e, 0x1f, 0x00, 0xff, 0xff, 0x00, 0x03, +0x00, 0x00, 0x01, 0x7e, 0x02, 0x00, 0x02, 0x06, +0x04, 0xdb, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, +0x00, 0x00, 0x01, 0x7e, 0x02, 0x00, 0x00, 0x16, +0x00, 0x55, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0b, 0x2f, 0x1b, 0xb9, 0x00, 0x0b, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, +0x05, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x0a, +0x00, 0x0b, 0x00, 0x05, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x0a, 0x10, 0xb8, 0x00, 0x01, 0xd0, 0xb8, +0x00, 0x0a, 0x10, 0xb8, 0x00, 0x06, 0xdc, 0xb8, +0x00, 0x02, 0xd0, 0xb8, 0x00, 0x0b, 0x10, 0xb8, +0x00, 0x15, 0xd0, 0xba, 0x00, 0x10, 0x00, 0x15, +0x00, 0x05, 0x11, 0x12, 0x39, 0x30, 0x31, 0x37, +0x33, 0x15, 0x23, 0x15, 0x23, 0x35, 0x23, 0x35, +0x37, 0x33, 0x03, 0x33, 0x17, 0x1e, 0x01, 0x17, +0x33, 0x3e, 0x01, 0x3f, 0x01, 0x33, 0xe4, 0x60, +0x6d, 0x2e, 0x6d, 0x55, 0x0c, 0x9a, 0x30, 0x51, +0x0e, 0x1e, 0x10, 0x04, 0x0f, 0x1d, 0x0e, 0x50, +0x30, 0xe4, 0x21, 0xc3, 0xc3, 0x1f, 0x02, 0x01, +0x1c, 0x9a, 0x1d, 0x35, 0x1c, 0x1c, 0x35, 0x1d, +0x9a, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x11, +0xff, 0x54, 0x01, 0xa9, 0x02, 0x00, 0x00, 0x1e, +0x00, 0x65, 0x00, 0x7d, 0xb8, 0x00, 0x03, 0x2f, +0x18, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x11, 0x2f, 0x1b, 0xb9, 0x00, 0x11, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x0f, 0x2f, 0x1b, 0xb9, 0x00, 0x0f, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x05, 0xd0, 0xb9, +0x00, 0x00, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x09, +0x00, 0x11, 0x00, 0x0f, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x11, 0x10, 0xb8, 0x00, 0x1b, 0xd0, 0xba, +0x00, 0x16, 0x00, 0x05, 0x00, 0x1b, 0x11, 0x12, +0x39, 0xba, 0x00, 0x10, 0x00, 0x16, 0x00, 0x09, +0x11, 0x12, 0x39, 0xba, 0x00, 0x1d, 0x00, 0x09, +0x00, 0x16, 0x11, 0x12, 0x39, 0x30, 0x31, 0x25, +0x15, 0x07, 0x23, 0x35, 0x23, 0x27, 0x2e, 0x01, +0x27, 0x23, 0x0e, 0x01, 0x0f, 0x01, 0x23, 0x13, +0x27, 0x33, 0x17, 0x1e, 0x01, 0x17, 0x33, 0x3e, +0x01, 0x3f, 0x01, 0x33, 0x07, 0x17, 0x01, 0xa9, +0x05, 0x26, 0x1d, 0x5e, 0x0b, 0x18, 0x0e, 0x04, +0x0e, 0x17, 0x0b, 0x5d, 0x30, 0xa6, 0x9a, 0x31, +0x59, 0x0b, 0x13, 0x0e, 0x04, 0x0b, 0x14, 0x0a, +0x57, 0x30, 0x9a, 0x8d, 0x27, 0x1a, 0xb9, 0xac, +0x97, 0x13, 0x27, 0x17, 0x17, 0x27, 0x13, 0x97, +0x01, 0x09, 0xf7, 0x90, 0x11, 0x21, 0x16, 0x16, +0x21, 0x11, 0x90, 0xfa, 0xdf, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x47, 0xff, 0x54, 0x01, 0xe8, +0x02, 0x00, 0x00, 0x1a, 0x00, 0x47, 0x00, 0x7d, +0xb8, 0x00, 0x03, 0x2f, 0x18, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0f, 0x2f, 0x1b, 0xb9, +0x00, 0x0f, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, 0x1b, +0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x14, 0x00, 0x01, 0x00, 0x09, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x04, 0x10, 0xb9, 0x00, 0x00, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0f, 0x10, 0xb8, +0x00, 0x18, 0xd0, 0x30, 0x31, 0x25, 0x15, 0x07, +0x23, 0x35, 0x23, 0x35, 0x0e, 0x01, 0x23, 0x22, +0x2e, 0x02, 0x3d, 0x01, 0x33, 0x15, 0x14, 0x16, +0x33, 0x32, 0x36, 0x37, 0x35, 0x33, 0x11, 0x01, +0xe8, 0x05, 0x26, 0x44, 0x15, 0x35, 0x23, 0x2e, +0x49, 0x33, 0x1b, 0x2d, 0x53, 0x4a, 0x21, 0x32, +0x15, 0x2e, 0x27, 0x1a, 0xb9, 0xac, 0xed, 0x04, +0x05, 0x10, 0x26, 0x3d, 0x2c, 0x7d, 0x7d, 0x44, +0x35, 0x05, 0x05, 0xec, 0xfe, 0x27, 0x00, 0x00, +0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x01, 0xc1, +0x02, 0x00, 0x00, 0x15, 0x00, 0x37, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x14, 0x2f, +0x1b, 0xb9, 0x00, 0x14, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x12, +0x2f, 0x1b, 0xb9, 0x00, 0x12, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x03, 0x00, 0x01, 0x00, 0x0e, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x12, 0x10, 0xb8, +0x00, 0x09, 0xd0, 0x30, 0x31, 0x13, 0x3e, 0x01, +0x33, 0x32, 0x1e, 0x02, 0x1d, 0x01, 0x23, 0x35, +0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, +0x11, 0x33, 0x8f, 0x15, 0x34, 0x23, 0x2e, 0x4a, +0x33, 0x1b, 0x2d, 0x53, 0x4a, 0x21, 0x32, 0x15, +0x2e, 0x2e, 0x01, 0x2f, 0x05, 0x05, 0x11, 0x25, +0x3d, 0x2c, 0x9a, 0x9a, 0x44, 0x35, 0x05, 0x05, +0xfe, 0xf7, 0x02, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x00, 0x8f, 0x02, 0x00, 0x02, 0x06, +0x04, 0xcb, 0x00, 0x00, 0xff, 0xff, 0x00, 0x09, +0x00, 0x00, 0x02, 0x88, 0x02, 0xb5, 0x02, 0x26, +0x05, 0xc4, 0x00, 0x00, 0x00, 0x07, 0x07, 0x32, +0x01, 0x48, 0xff, 0x6f, 0xff, 0xff, 0x00, 0x08, +0x00, 0x00, 0x01, 0xbb, 0x02, 0xb5, 0x02, 0x26, +0x04, 0xc3, 0x00, 0x00, 0x00, 0x07, 0x07, 0x32, +0x00, 0xe1, 0xff, 0x6f, 0xff, 0xff, 0x00, 0x15, +0x00, 0x00, 0x02, 0x88, 0x02, 0x00, 0x02, 0x06, +0x04, 0xf3, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0x9e, 0x02, 0xd0, 0x02, 0x26, +0x04, 0xc7, 0x00, 0x00, 0x00, 0x07, 0x07, 0x32, +0x01, 0x05, 0xff, 0x8a, 0xff, 0xff, 0x00, 0x3e, +0xff, 0xf4, 0x02, 0x02, 0x02, 0x0c, 0x02, 0x06, +0x05, 0x9d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x61, +0x00, 0x00, 0x01, 0xdb, 0x02, 0x79, 0x02, 0x26, +0x05, 0xc6, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2c, +0x01, 0x23, 0xff, 0x6e, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x02, 0x8d, 0x02, 0x26, +0x04, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x36, +0x01, 0x1f, 0xff, 0x6f, 0xff, 0xff, 0x00, 0x37, +0xff, 0xf4, 0x02, 0x07, 0x02, 0x0c, 0x02, 0x06, +0x05, 0xf0, 0x00, 0x00, 0xff, 0xff, 0x00, 0x07, +0xff, 0xf4, 0x01, 0x9f, 0x02, 0x79, 0x02, 0x26, +0x05, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x2c, +0x00, 0xd2, 0xff, 0x6e, 0xff, 0xff, 0x00, 0x07, +0xff, 0xf4, 0x01, 0x9f, 0x02, 0xd3, 0x02, 0x26, +0x05, 0xd1, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3c, +0x00, 0xd2, 0xff, 0x6e, 0x00, 0x03, 0x00, 0x24, +0xff, 0xf4, 0x01, 0xe5, 0x02, 0x0c, 0x00, 0x0d, +0x00, 0x1b, 0x00, 0x49, 0x00, 0x8f, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x34, 0x2f, +0x1b, 0xb9, 0x00, 0x34, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x22, +0x2f, 0x1b, 0xb9, 0x00, 0x22, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x05, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x43, 0x00, 0x34, 0x00, 0x22, 0x11, 0x12, +0x39, 0xba, 0x00, 0x3f, 0x00, 0x43, 0x00, 0x22, +0x11, 0x12, 0x39, 0xba, 0x00, 0x1f, 0x00, 0x22, +0x00, 0x43, 0x11, 0x12, 0x39, 0xba, 0x00, 0x08, +0x00, 0x3f, 0x00, 0x1f, 0x11, 0x12, 0x39, 0xba, +0x00, 0x0b, 0x00, 0x22, 0x00, 0x34, 0x11, 0x12, +0x39, 0xba, 0x00, 0x11, 0x00, 0x34, 0x00, 0x22, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x34, 0x10, 0xb9, +0x00, 0x19, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x2c, +0x00, 0x11, 0x00, 0x0b, 0x11, 0x12, 0x39, 0xba, +0x00, 0x3c, 0x00, 0x0b, 0x00, 0x11, 0x11, 0x12, +0x39, 0xba, 0x00, 0x46, 0x00, 0x1f, 0x00, 0x3f, +0x11, 0x12, 0x39, 0x30, 0x31, 0x37, 0x14, 0x1e, +0x02, 0x33, 0x32, 0x36, 0x37, 0x2e, 0x01, 0x27, +0x0e, 0x01, 0x37, 0x14, 0x16, 0x17, 0x3e, 0x03, +0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x01, 0x2e, +0x01, 0x27, 0x0e, 0x01, 0x23, 0x22, 0x2e, 0x02, +0x35, 0x34, 0x3e, 0x02, 0x37, 0x2e, 0x01, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x15, 0x14, +0x0e, 0x02, 0x07, 0x1e, 0x01, 0x17, 0x3e, 0x01, +0x37, 0x33, 0x0e, 0x01, 0x07, 0x1e, 0x01, 0x17, +0x50, 0x13, 0x21, 0x2d, 0x19, 0x20, 0x3d, 0x1a, +0x2d, 0x51, 0x1e, 0x23, 0x32, 0x46, 0x10, 0x0e, +0x15, 0x26, 0x1d, 0x11, 0x19, 0x21, 0x23, 0x2a, +0x01, 0x42, 0x1b, 0x3e, 0x21, 0x1e, 0x4b, 0x2f, +0x22, 0x3b, 0x2c, 0x19, 0x13, 0x1f, 0x28, 0x16, +0x11, 0x13, 0x11, 0x1f, 0x2b, 0x1a, 0x2f, 0x2e, +0x16, 0x24, 0x2d, 0x17, 0x1d, 0x51, 0x2b, 0x1d, +0x2b, 0x0e, 0x29, 0x11, 0x2f, 0x22, 0x1d, 0x37, +0x17, 0x85, 0x18, 0x28, 0x1d, 0x0f, 0x1c, 0x17, +0x24, 0x5b, 0x30, 0x1a, 0x38, 0xec, 0x18, 0x35, +0x1b, 0x0d, 0x1c, 0x1d, 0x21, 0x13, 0x18, 0x29, +0x31, 0xfe, 0x3d, 0x08, 0x20, 0x18, 0x1d, 0x23, +0x15, 0x25, 0x34, 0x20, 0x19, 0x2b, 0x24, 0x1f, +0x0f, 0x20, 0x3f, 0x1d, 0x19, 0x2b, 0x21, 0x13, +0x3a, 0x2a, 0x19, 0x29, 0x25, 0x21, 0x10, 0x2f, +0x58, 0x21, 0x22, 0x53, 0x30, 0x36, 0x5e, 0x27, +0x14, 0x1c, 0x08, 0x00, 0x00, 0x02, 0x00, 0x38, +0xff, 0xf4, 0x01, 0xa6, 0x02, 0x0c, 0x00, 0x0b, +0x00, 0x17, 0x00, 0x35, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x06, 0x2f, 0x1b, 0xb9, +0x00, 0x06, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, +0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, 0xb9, +0x00, 0x0c, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x06, +0x10, 0xb9, 0x00, 0x12, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x17, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, +0x32, 0x16, 0x15, 0x14, 0x06, 0x27, 0x32, 0x36, +0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, +0x16, 0xef, 0x58, 0x5f, 0x5f, 0x58, 0x58, 0x5f, +0x5f, 0x58, 0x3e, 0x4c, 0x4c, 0x3e, 0x3e, 0x4c, +0x4c, 0x0c, 0x90, 0x7d, 0x7e, 0x8d, 0x8d, 0x7e, +0x7d, 0x90, 0x26, 0x77, 0x70, 0x72, 0x73, 0x73, +0x72, 0x70, 0x77, 0x00, 0x00, 0x01, 0x00, 0x39, +0x00, 0x00, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x08, +0x00, 0x33, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, 0x05, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x07, 0x2f, 0x1b, 0xb9, 0x00, +0x07, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x05, +0x10, 0xb8, 0x00, 0x02, 0xdc, 0xb9, 0x00, 0x00, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, 0x23, 0x35, +0x3e, 0x01, 0x37, 0x33, 0x11, 0x23, 0xa0, 0x67, +0x24, 0x36, 0x15, 0x24, 0x2c, 0x01, 0xc0, 0x1f, +0x05, 0x11, 0x0b, 0xfe, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x26, 0x00, 0x00, 0x01, 0x88, +0x02, 0x0c, 0x00, 0x1d, 0x00, 0x3d, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0f, 0x2f, +0x1b, 0xb9, 0x00, 0x0f, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1c, +0x2f, 0x1b, 0xb9, 0x00, 0x1c, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x1a, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x00, 0xd0, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x0f, 0x10, 0xb9, 0x00, 0x08, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x37, 0x3e, 0x03, 0x35, 0x34, +0x26, 0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, 0x01, +0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, +0x3e, 0x01, 0x3b, 0x01, 0x15, 0x21, 0x2a, 0x45, +0x69, 0x46, 0x23, 0x3b, 0x3f, 0x27, 0x44, 0x1a, +0x1c, 0x22, 0x4f, 0x33, 0x4d, 0x57, 0x25, 0x44, +0x5f, 0x3a, 0x17, 0x33, 0x1e, 0xb4, 0xfe, 0xa2, +0x1c, 0x3e, 0x64, 0x53, 0x46, 0x21, 0x30, 0x3f, +0x26, 0x1b, 0x19, 0x24, 0x29, 0x4f, 0x42, 0x26, +0x4d, 0x52, 0x5d, 0x36, 0x02, 0x02, 0x27, 0x00, +0x00, 0x01, 0x00, 0x18, 0xff, 0xf4, 0x01, 0x80, +0x02, 0x0c, 0x00, 0x2f, 0x00, 0x4d, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1d, 0x2f, +0x1b, 0xb9, 0x00, 0x1d, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x0d, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x00, 0x10, 0xb9, +0x00, 0x07, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x1d, +0x10, 0xb9, 0x00, 0x16, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x26, 0x00, 0x0d, 0x00, 0x0e, 0x11, 0x12, +0x39, 0x30, 0x31, 0x17, 0x22, 0x26, 0x27, 0x37, +0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, +0x23, 0x35, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, +0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, 0x01, 0x33, +0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, 0x15, +0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0xcf, 0x44, +0x58, 0x1b, 0x19, 0x19, 0x4a, 0x3b, 0x39, 0x4a, +0x5b, 0x6b, 0x31, 0x43, 0x2a, 0x13, 0x3e, 0x33, +0x26, 0x44, 0x1a, 0x18, 0x1d, 0x4c, 0x33, 0x22, +0x3a, 0x2b, 0x18, 0x3e, 0x2d, 0x1a, 0x2f, 0x23, +0x14, 0x1b, 0x30, 0x41, 0x0c, 0x2e, 0x1b, 0x1e, +0x1a, 0x27, 0x3c, 0x31, 0x34, 0x40, 0x23, 0x11, +0x1d, 0x27, 0x17, 0x2b, 0x32, 0x1e, 0x1a, 0x1d, +0x1c, 0x24, 0x11, 0x21, 0x2f, 0x1e, 0x32, 0x3d, +0x0f, 0x03, 0x05, 0x17, 0x21, 0x2d, 0x1c, 0x21, +0x36, 0x26, 0x15, 0x00, 0x00, 0x02, 0x00, 0x23, +0x00, 0x00, 0x01, 0xa9, 0x02, 0x00, 0x00, 0x09, +0x00, 0x14, 0x00, 0x57, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x11, 0x2f, 0x1b, 0xb9, +0x00, 0x11, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0c, 0x2f, 0x1b, +0xb9, 0x00, 0x0c, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x0a, 0x00, 0x11, 0x00, 0x0c, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x0a, 0x2f, 0xb9, 0x00, 0x14, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x00, 0xd0, 0xba, +0x00, 0x04, 0x00, 0x11, 0x00, 0x0c, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x0a, 0x10, 0xb8, 0x00, 0x0e, +0xd0, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x10, +0xd0, 0x30, 0x31, 0x25, 0x35, 0x34, 0x36, 0x37, +0x23, 0x0e, 0x01, 0x0f, 0x01, 0x05, 0x23, 0x15, +0x23, 0x35, 0x21, 0x35, 0x01, 0x33, 0x11, 0x33, +0x01, 0x2a, 0x01, 0x01, 0x03, 0x0b, 0x15, 0x0e, +0xa2, 0x01, 0x50, 0x54, 0x2b, 0xfe, 0xf9, 0x01, +0x07, 0x2b, 0x54, 0xbb, 0xaf, 0x13, 0x36, 0x13, +0x11, 0x1c, 0x13, 0xcb, 0x24, 0x97, 0x97, 0x1a, +0x01, 0x4f, 0xfe, 0xbb, 0x00, 0x01, 0x00, 0x23, +0xff, 0xf4, 0x01, 0x8d, 0x02, 0x00, 0x00, 0x28, +0x00, 0x4d, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x18, 0x2f, 0x1b, 0xb9, 0x00, 0x18, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, +0x00, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x0b, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x13, 0x00, 0x18, +0x00, 0x00, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x13, +0x2f, 0xb8, 0x00, 0x18, 0x10, 0xb9, 0x00, 0x1a, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x13, 0x10, 0xb9, +0x00, 0x1f, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, +0x22, 0x2e, 0x02, 0x27, 0x37, 0x1e, 0x03, 0x33, +0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, 0x22, +0x06, 0x07, 0x27, 0x37, 0x21, 0x15, 0x23, 0x07, +0x3e, 0x01, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, +0x0e, 0x02, 0xd5, 0x23, 0x36, 0x2a, 0x22, 0x0d, +0x17, 0x0c, 0x1e, 0x25, 0x2e, 0x1d, 0x1c, 0x32, +0x26, 0x16, 0x4a, 0x3d, 0x21, 0x30, 0x19, 0x1c, +0x13, 0x01, 0x0a, 0xe4, 0x0f, 0x15, 0x30, 0x1d, +0x24, 0x40, 0x30, 0x1c, 0x20, 0x33, 0x43, 0x0c, +0x0c, 0x14, 0x19, 0x0c, 0x1e, 0x0b, 0x16, 0x11, +0x0b, 0x13, 0x22, 0x32, 0x1e, 0x3b, 0x45, 0x14, +0x10, 0x11, 0xf4, 0x26, 0xb3, 0x0b, 0x10, 0x13, +0x28, 0x3d, 0x2a, 0x2a, 0x40, 0x2b, 0x17, 0x00, +0x00, 0x02, 0x00, 0x43, 0xff, 0xf4, 0x01, 0xa6, +0x02, 0x0c, 0x00, 0x0d, 0x00, 0x2b, 0x00, 0x4d, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x28, 0x2f, 0x1b, 0xb9, 0x00, 0x28, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x20, 0x2f, 0x1b, 0xb9, 0x00, 0x20, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x18, 0x00, 0x01, +0x00, 0x08, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x20, +0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x28, 0x10, 0xb9, 0x00, 0x10, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x15, 0x00, 0x20, 0x00, 0x28, +0x11, 0x12, 0x39, 0x30, 0x31, 0x25, 0x32, 0x3e, +0x02, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, +0x1e, 0x01, 0x13, 0x26, 0x23, 0x22, 0x0e, 0x02, +0x07, 0x3e, 0x01, 0x33, 0x32, 0x16, 0x15, 0x14, +0x0e, 0x02, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x32, 0x16, 0x17, 0x01, 0x05, 0x18, +0x2b, 0x1f, 0x12, 0x3b, 0x42, 0x1e, 0x4b, 0x23, +0x06, 0x49, 0xbf, 0x28, 0x3d, 0x22, 0x3d, 0x2e, +0x1c, 0x01, 0x1f, 0x4c, 0x2a, 0x4d, 0x55, 0x1a, +0x2c, 0x3b, 0x21, 0x59, 0x68, 0x23, 0x3c, 0x4e, +0x2b, 0x2a, 0x3c, 0x17, 0x1a, 0x12, 0x21, 0x2d, +0x1b, 0x37, 0x46, 0x21, 0x2a, 0x51, 0x5c, 0x01, +0xa1, 0x2b, 0x19, 0x3a, 0x5e, 0x45, 0x20, 0x26, +0x52, 0x4e, 0x24, 0x3b, 0x2b, 0x18, 0x7c, 0x78, +0x50, 0x70, 0x45, 0x1f, 0x1c, 0x17, 0x00, 0x00, +0x00, 0x01, 0x00, 0x21, 0x00, 0x00, 0x01, 0x79, +0x02, 0x00, 0x00, 0x0f, 0x00, 0x33, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, 0x2f, +0x1b, 0xb9, 0x00, 0x07, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x07, 0x10, 0xb9, 0x00, 0x05, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x09, 0xd0, 0x30, +0x31, 0x33, 0x3e, 0x03, 0x37, 0x21, 0x35, 0x21, +0x15, 0x0e, 0x03, 0x07, 0x23, 0x98, 0x04, 0x15, +0x29, 0x3c, 0x2b, 0xfe, 0xe0, 0x01, 0x58, 0x33, +0x42, 0x27, 0x12, 0x04, 0x2f, 0x4c, 0x7f, 0x70, +0x69, 0x36, 0x26, 0x1a, 0x3c, 0x6f, 0x73, 0x7d, +0x4b, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3a, +0xff, 0xf4, 0x01, 0xa5, 0x02, 0x0c, 0x00, 0x25, +0x00, 0x33, 0x00, 0x43, 0x00, 0x57, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x13, 0x2f, +0x1b, 0xb9, 0x00, 0x13, 0x00, 0x0b, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, +0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x26, 0x00, 0x01, 0x00, 0x3c, +0x00, 0x04, 0x2b, 0xba, 0x00, 0x0a, 0x00, 0x26, +0x00, 0x3c, 0x11, 0x12, 0x39, 0xba, 0x00, 0x1b, +0x00, 0x3c, 0x00, 0x26, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x13, 0x10, 0xb9, 0x00, 0x2c, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x34, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, 0x22, 0x2e, +0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x35, 0x2e, +0x01, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, +0x15, 0x14, 0x0e, 0x02, 0x07, 0x15, 0x1e, 0x03, +0x15, 0x14, 0x0e, 0x02, 0x13, 0x3e, 0x01, 0x35, +0x34, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, +0x02, 0x07, 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, +0x27, 0x0e, 0x01, 0x15, 0x14, 0x1e, 0x02, 0xf3, +0x28, 0x44, 0x31, 0x1c, 0x15, 0x21, 0x29, 0x14, +0x1f, 0x34, 0x18, 0x2a, 0x38, 0x20, 0x4b, 0x52, +0x10, 0x18, 0x1c, 0x0d, 0x13, 0x24, 0x1c, 0x12, +0x1a, 0x2f, 0x41, 0x01, 0x24, 0x28, 0x3d, 0x39, +0x30, 0x3d, 0x1a, 0x2a, 0x36, 0x0b, 0x3d, 0x48, +0x1c, 0x30, 0x3e, 0x22, 0x2a, 0x3e, 0x15, 0x26, +0x35, 0x0c, 0x16, 0x25, 0x34, 0x1e, 0x1b, 0x2c, +0x24, 0x1c, 0x0a, 0x04, 0x13, 0x3a, 0x28, 0x1d, +0x2f, 0x22, 0x13, 0x4d, 0x3b, 0x15, 0x27, 0x21, +0x1c, 0x09, 0x03, 0x0a, 0x18, 0x1f, 0x28, 0x1a, +0x1d, 0x31, 0x25, 0x15, 0x01, 0x1a, 0x1a, 0x3b, +0x20, 0x2a, 0x3b, 0x33, 0x2a, 0x1a, 0x27, 0x1c, +0x16, 0xff, 0x38, 0x2c, 0x1c, 0x29, 0x1e, 0x17, +0x0c, 0x15, 0x3f, 0x2a, 0x17, 0x28, 0x1d, 0x10, +0x00, 0x02, 0x00, 0x34, 0xff, 0xf4, 0x01, 0x93, +0x02, 0x0c, 0x00, 0x0d, 0x00, 0x2c, 0x00, 0x4d, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x21, 0x2f, 0x1b, 0xb9, 0x00, 0x21, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x29, 0x2f, 0x1b, 0xb9, 0x00, 0x29, 0x00, +0x05, 0x3e, 0x59, 0xbb, 0x00, 0x00, 0x00, 0x01, +0x00, 0x19, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x21, +0x10, 0xb9, 0x00, 0x06, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x29, 0x10, 0xb9, 0x00, 0x11, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x16, 0x00, 0x29, 0x00, 0x21, +0x11, 0x12, 0x39, 0x30, 0x31, 0x37, 0x32, 0x36, +0x37, 0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, +0x14, 0x16, 0x07, 0x1e, 0x01, 0x33, 0x32, 0x3e, +0x02, 0x37, 0x0e, 0x01, 0x23, 0x22, 0x26, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x15, 0x14, +0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0xdb, 0x1e, +0x4a, 0x22, 0x06, 0x47, 0x46, 0x18, 0x2a, 0x1e, +0x12, 0x3a, 0x41, 0x14, 0x33, 0x1d, 0x22, 0x3c, +0x2f, 0x1b, 0x01, 0x1d, 0x4b, 0x2a, 0x4b, 0x55, +0x19, 0x2c, 0x3a, 0x20, 0x58, 0x68, 0x23, 0x3b, +0x4c, 0x2a, 0x2b, 0x3e, 0x16, 0xee, 0x21, 0x29, +0x50, 0x5f, 0x13, 0x21, 0x2e, 0x1b, 0x37, 0x45, +0xab, 0x14, 0x14, 0x19, 0x3a, 0x5c, 0x44, 0x1f, +0x26, 0x52, 0x4f, 0x24, 0x3b, 0x2b, 0x18, 0x7d, +0x78, 0x50, 0x6f, 0x45, 0x1f, 0x1c, 0x16, 0x00, +0x00, 0x02, 0x00, 0x57, 0xff, 0xf4, 0x00, 0xac, +0x02, 0x00, 0x00, 0x05, 0x00, 0x11, 0x00, 0x2d, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x01, 0x2f, 0x1b, 0xb9, 0x00, 0x01, 0x00, 0x0b, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x0c, 0xdc, 0xb8, +0x00, 0x05, 0xdc, 0x30, 0x31, 0x13, 0x35, 0x33, +0x07, 0x03, 0x23, 0x17, 0x22, 0x26, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x6b, +0x2e, 0x01, 0x06, 0x21, 0x11, 0x11, 0x1a, 0x1a, +0x11, 0x11, 0x19, 0x19, 0x01, 0xbd, 0x43, 0x43, +0xfe, 0xf6, 0xbf, 0x18, 0x15, 0x16, 0x18, 0x18, +0x16, 0x15, 0x18, 0x00, 0x00, 0x02, 0x00, 0x57, +0x00, 0x00, 0x00, 0xac, 0x02, 0x0c, 0x00, 0x05, +0x00, 0x11, 0x00, 0x31, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0c, 0x2f, 0x1b, 0xb9, +0x00, 0x0c, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, 0x1b, +0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x0c, 0x10, 0xb8, 0x00, 0x06, 0xdc, 0xb8, +0x00, 0x01, 0xdc, 0x30, 0x31, 0x37, 0x13, 0x33, +0x13, 0x17, 0x23, 0x13, 0x22, 0x26, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x6b, +0x06, 0x21, 0x06, 0x01, 0x2e, 0x17, 0x11, 0x1a, +0x1a, 0x11, 0x11, 0x19, 0x19, 0x43, 0x01, 0x0a, +0xfe, 0xf6, 0x43, 0x01, 0xb1, 0x18, 0x17, 0x14, +0x18, 0x18, 0x14, 0x17, 0x18, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x2f, 0xff, 0xf4, 0x01, 0x56, +0x02, 0x20, 0x00, 0x1a, 0x00, 0x26, 0x00, 0x2a, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x1b, 0x2f, 0x1b, 0xb9, 0x00, 0x1b, 0x00, 0x05, +0x3e, 0x59, 0xbb, 0x00, 0x0a, 0x00, 0x01, 0x00, +0x10, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x1b, 0x10, +0xb8, 0x00, 0x21, 0xdc, 0xb8, 0x00, 0x00, 0xdc, +0x30, 0x31, 0x37, 0x26, 0x3e, 0x04, 0x35, 0x34, +0x26, 0x23, 0x22, 0x07, 0x27, 0x3e, 0x01, 0x33, +0x32, 0x16, 0x15, 0x14, 0x0e, 0x04, 0x17, 0x07, +0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, +0x15, 0x14, 0x06, 0xa3, 0x05, 0x0f, 0x1e, 0x25, +0x21, 0x17, 0x31, 0x36, 0x46, 0x33, 0x19, 0x1c, +0x49, 0x31, 0x45, 0x4c, 0x17, 0x22, 0x27, 0x1e, +0x12, 0x05, 0x11, 0x11, 0x19, 0x19, 0x11, 0x11, +0x1a, 0x1a, 0xb3, 0x1e, 0x2c, 0x22, 0x1e, 0x21, +0x28, 0x1c, 0x23, 0x35, 0x36, 0x1c, 0x1b, 0x25, +0x46, 0x33, 0x21, 0x2f, 0x24, 0x1e, 0x20, 0x27, +0x1b, 0xbf, 0x18, 0x15, 0x16, 0x18, 0x18, 0x16, +0x15, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3d, +0xff, 0xe0, 0x01, 0x64, 0x02, 0x0c, 0x00, 0x1b, +0x00, 0x27, 0x00, 0x2a, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x22, 0x2f, 0x1b, 0xb9, +0x00, 0x22, 0x00, 0x0b, 0x3e, 0x59, 0xbb, 0x00, +0x15, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x2b, +0xb8, 0x00, 0x22, 0x10, 0xb8, 0x00, 0x1c, 0xdc, +0xb8, 0x00, 0x0a, 0xdc, 0x30, 0x31, 0x17, 0x22, +0x26, 0x35, 0x34, 0x3e, 0x04, 0x27, 0x33, 0x16, +0x0e, 0x04, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, +0x37, 0x17, 0x0e, 0x01, 0x03, 0x22, 0x26, 0x35, +0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, +0xce, 0x45, 0x4c, 0x17, 0x22, 0x26, 0x1f, 0x10, +0x04, 0x29, 0x05, 0x10, 0x1e, 0x25, 0x21, 0x17, +0x32, 0x36, 0x21, 0x3d, 0x1a, 0x1a, 0x1d, 0x48, +0x27, 0x11, 0x19, 0x19, 0x11, 0x11, 0x19, 0x19, +0x20, 0x46, 0x34, 0x21, 0x2f, 0x23, 0x1e, 0x20, +0x27, 0x1b, 0x1e, 0x2c, 0x22, 0x1e, 0x21, 0x28, +0x1c, 0x23, 0x35, 0x1b, 0x1b, 0x1b, 0x1c, 0x25, +0x01, 0xd1, 0x18, 0x17, 0x14, 0x18, 0x18, 0x14, +0x17, 0x18, 0x00, 0x00, 0xff, 0xff, 0x00, 0x53, +0x01, 0x7e, 0x00, 0x86, 0x02, 0x56, 0x02, 0x06, +0x04, 0x80, 0x00, 0xa1, 0xff, 0xff, 0x00, 0x53, +0x01, 0x7e, 0x01, 0x13, 0x02, 0x56, 0x00, 0x26, +0x04, 0x80, 0x00, 0xa1, 0x00, 0x07, 0x04, 0x80, +0x00, 0x8d, 0xff, 0xa1, 0xff, 0xff, 0x00, 0x3a, +0x01, 0x81, 0x00, 0xa1, 0x02, 0x60, 0x02, 0x06, +0x04, 0x82, 0x00, 0xa1, 0xff, 0xff, 0x00, 0x3a, +0x01, 0x7e, 0x00, 0xa2, 0x02, 0x5d, 0x02, 0x06, +0x04, 0x83, 0x00, 0xa1, 0xff, 0xff, 0x00, 0x3a, +0x01, 0x81, 0x01, 0x2e, 0x02, 0x60, 0x00, 0x26, +0x04, 0x82, 0x00, 0xa1, 0x00, 0x07, 0x04, 0x82, +0x00, 0x8d, 0xff, 0xa1, 0xff, 0xff, 0x00, 0x3a, +0x01, 0x7e, 0x01, 0x2f, 0x02, 0x5d, 0x00, 0x26, +0x04, 0x83, 0x00, 0xa1, 0x00, 0x07, 0x04, 0x83, +0x00, 0x8d, 0xff, 0xa1, 0xff, 0xff, 0x00, 0x28, +0x00, 0xfb, 0x01, 0x04, 0x01, 0x22, 0x02, 0x06, +0x04, 0x8c, 0x00, 0x15, 0x00, 0x01, 0x00, 0x28, +0x00, 0xfe, 0x01, 0x71, 0x01, 0x22, 0x00, 0x03, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x02, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x21, 0x15, 0x21, 0x28, 0x01, 0x49, 0xfe, 0xb7, +0x01, 0x22, 0x24, 0x00, 0x00, 0x01, 0x00, 0x28, +0x00, 0xfe, 0x02, 0x82, 0x01, 0x22, 0x00, 0x03, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x02, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x21, 0x15, 0x21, 0x28, 0x02, 0x5a, 0xfd, 0xa6, +0x01, 0x22, 0x24, 0x00, 0x00, 0x01, 0x00, 0x58, +0xff, 0x83, 0x00, 0xf7, 0x02, 0x6f, 0x00, 0x0e, +0x00, 0x0b, 0x00, 0xba, 0x00, 0x06, 0x00, 0x00, +0x00, 0x03, 0x2b, 0x30, 0x31, 0x17, 0x2e, 0x01, +0x35, 0x34, 0x36, 0x37, 0x17, 0x0e, 0x01, 0x15, +0x14, 0x16, 0x17, 0x07, 0xdc, 0x3e, 0x46, 0x46, +0x3e, 0x1b, 0x3c, 0x3c, 0x3c, 0x3c, 0x1b, 0x7d, +0x52, 0xb7, 0x6d, 0x6d, 0xb7, 0x52, 0x10, 0x4d, +0xb9, 0x60, 0x60, 0xb9, 0x4d, 0x10, 0x00, 0x00, +0x00, 0x01, 0x00, 0x20, 0xff, 0x83, 0x00, 0xbf, +0x02, 0x6f, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0xba, +0x00, 0x07, 0x00, 0x0d, 0x00, 0x03, 0x2b, 0x30, +0x31, 0x17, 0x3e, 0x01, 0x35, 0x34, 0x26, 0x27, +0x37, 0x1e, 0x01, 0x15, 0x14, 0x06, 0x07, 0x20, +0x3c, 0x3c, 0x3c, 0x3c, 0x1b, 0x3e, 0x46, 0x46, +0x3e, 0x6d, 0x4d, 0xb9, 0x60, 0x60, 0xb9, 0x4d, +0x10, 0x52, 0xb7, 0x6d, 0x6d, 0xb7, 0x52, 0x00, +0x00, 0x01, 0x00, 0x62, 0xff, 0x9a, 0x01, 0x02, +0x02, 0x58, 0x00, 0x07, 0x00, 0x17, 0x00, 0xbb, +0x00, 0x05, 0x00, 0x01, 0x00, 0x06, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, +0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, 0x33, 0x15, +0x23, 0x11, 0x33, 0x15, 0x23, 0x62, 0xa0, 0x7d, +0x7d, 0xa0, 0x02, 0x58, 0x1d, 0xfd, 0x7c, 0x1d, +0x00, 0x01, 0x00, 0x15, 0xff, 0x9a, 0x00, 0xb5, +0x02, 0x58, 0x00, 0x07, 0x00, 0x17, 0x00, 0xbb, +0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x05, 0x00, 0x01, 0x00, 0x02, +0x00, 0x04, 0x2b, 0x30, 0x31, 0x17, 0x33, 0x11, +0x23, 0x35, 0x33, 0x11, 0x23, 0x15, 0x7d, 0x7d, +0xa0, 0xa0, 0x49, 0x02, 0x84, 0x1d, 0xfd, 0x42, +0x00, 0x01, 0x00, 0x23, 0xff, 0x9a, 0x01, 0x02, +0x02, 0x58, 0x00, 0x34, 0x00, 0x33, 0x00, 0xbb, +0x00, 0x31, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x1c, 0x00, 0x01, 0x00, 0x1d, +0x00, 0x04, 0x2b, 0xbb, 0x00, 0x0e, 0x00, 0x01, +0x00, 0x0d, 0x00, 0x04, 0x2b, 0xba, 0x00, 0x28, +0x00, 0x0d, 0x00, 0x0e, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x33, 0xd0, 0x30, +0x31, 0x17, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, +0x35, 0x34, 0x2e, 0x02, 0x23, 0x35, 0x32, 0x3e, +0x02, 0x35, 0x34, 0x26, 0x35, 0x34, 0x3e, 0x02, +0x3b, 0x01, 0x15, 0x23, 0x22, 0x06, 0x15, 0x14, +0x16, 0x15, 0x14, 0x06, 0x07, 0x15, 0x1e, 0x01, +0x15, 0x14, 0x06, 0x15, 0x14, 0x16, 0x3b, 0x01, +0x15, 0x23, 0xe0, 0x1c, 0x29, 0x1c, 0x0e, 0x08, +0x07, 0x13, 0x22, 0x1a, 0x1a, 0x22, 0x13, 0x07, +0x08, 0x0e, 0x1c, 0x29, 0x1c, 0x22, 0x1f, 0x2e, +0x1f, 0x06, 0x15, 0x1e, 0x1e, 0x15, 0x06, 0x1f, +0x2e, 0x1f, 0x22, 0x66, 0x0a, 0x19, 0x2a, 0x20, +0x27, 0x45, 0x26, 0x0f, 0x1d, 0x17, 0x0d, 0x20, +0x0d, 0x16, 0x1c, 0x0f, 0x27, 0x45, 0x28, 0x20, +0x2a, 0x19, 0x0a, 0x1d, 0x29, 0x2b, 0x23, 0x3d, +0x25, 0x2c, 0x32, 0x09, 0x04, 0x09, 0x34, 0x2a, +0x25, 0x3d, 0x23, 0x2b, 0x29, 0x1d, 0x00, 0x00, +0x00, 0x01, 0x00, 0x15, 0xff, 0x9a, 0x00, 0xf4, +0x02, 0x58, 0x00, 0x33, 0x00, 0x2b, 0x00, 0xbb, +0x00, 0x01, 0x00, 0x01, 0x00, 0x32, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x17, 0x00, 0x01, 0x00, 0x14, +0x00, 0x04, 0x2b, 0xbb, 0x00, 0x24, 0x00, 0x01, +0x00, 0x25, 0x00, 0x04, 0x2b, 0xba, 0x00, 0x0b, +0x00, 0x25, 0x00, 0x24, 0x11, 0x12, 0x39, 0x30, +0x31, 0x17, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, +0x35, 0x34, 0x36, 0x37, 0x35, 0x2e, 0x01, 0x35, +0x34, 0x36, 0x35, 0x34, 0x26, 0x2b, 0x01, 0x35, +0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x15, +0x14, 0x1e, 0x02, 0x33, 0x15, 0x22, 0x0e, 0x02, +0x15, 0x14, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x2b, +0x01, 0x15, 0x1f, 0x2e, 0x1f, 0x06, 0x16, 0x1d, +0x1d, 0x16, 0x06, 0x1f, 0x2e, 0x1f, 0x22, 0x1c, +0x29, 0x1c, 0x0e, 0x08, 0x07, 0x13, 0x22, 0x1a, +0x1a, 0x22, 0x13, 0x07, 0x08, 0x0e, 0x1c, 0x29, +0x1c, 0x22, 0x49, 0x29, 0x2b, 0x23, 0x3d, 0x25, +0x2a, 0x34, 0x09, 0x04, 0x09, 0x32, 0x2c, 0x25, +0x3d, 0x23, 0x2b, 0x29, 0x1d, 0x0a, 0x19, 0x2a, +0x20, 0x28, 0x45, 0x27, 0x0f, 0x1c, 0x16, 0x0d, +0x20, 0x0d, 0x17, 0x1d, 0x0f, 0x26, 0x45, 0x27, +0x20, 0x2a, 0x19, 0x0a, 0xff, 0xff, 0x00, 0x28, +0x01, 0x8a, 0x01, 0x42, 0x03, 0x28, 0x02, 0x07, +0x06, 0x44, 0x00, 0x00, 0x01, 0x96, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5e, 0x01, 0x96, 0x00, 0xd6, +0x03, 0x1c, 0x02, 0x07, 0x06, 0x45, 0x00, 0x00, +0x01, 0x96, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2f, +0x01, 0x96, 0x01, 0x37, 0x03, 0x28, 0x02, 0x07, +0x06, 0x46, 0x00, 0x00, 0x01, 0x96, 0x00, 0x00, +0xff, 0xff, 0x00, 0x28, 0x01, 0x8a, 0x01, 0x34, +0x03, 0x28, 0x02, 0x07, 0x06, 0x47, 0x00, 0x00, +0x01, 0x96, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2e, +0x01, 0x96, 0x01, 0x3d, 0x03, 0x1c, 0x02, 0x07, +0x06, 0x48, 0x00, 0x00, 0x01, 0x96, 0x00, 0x00, +0xff, 0xff, 0x00, 0x28, 0x01, 0x8a, 0x01, 0x39, +0x03, 0x1c, 0x02, 0x07, 0x06, 0x49, 0x00, 0x00, +0x01, 0x96, 0x00, 0x00, 0xff, 0xff, 0x00, 0x32, +0x01, 0x8a, 0x01, 0x3d, 0x03, 0x28, 0x02, 0x07, +0x06, 0x4a, 0x00, 0x00, 0x01, 0x96, 0x00, 0x00, +0xff, 0xff, 0x00, 0x32, 0x01, 0x96, 0x01, 0x37, +0x03, 0x1c, 0x02, 0x07, 0x06, 0x4b, 0x00, 0x00, +0x01, 0x96, 0x00, 0x00, 0xff, 0xff, 0x00, 0x31, +0x01, 0x8a, 0x01, 0x36, 0x03, 0x28, 0x02, 0x07, +0x06, 0x4c, 0x00, 0x00, 0x01, 0x96, 0x00, 0x00, +0xff, 0xff, 0x00, 0x29, 0x01, 0x8a, 0x01, 0x34, +0x03, 0x28, 0x02, 0x07, 0x06, 0x4d, 0x00, 0x00, +0x01, 0x96, 0x00, 0x00, 0xff, 0xff, 0x00, 0x42, +0x01, 0x4e, 0x00, 0xb2, 0x03, 0x61, 0x02, 0x07, +0x06, 0x4e, 0x00, 0x00, 0x01, 0x96, 0x00, 0x00, +0xff, 0xff, 0x00, 0x29, 0x01, 0x4e, 0x00, 0x99, +0x03, 0x61, 0x02, 0x07, 0x06, 0x4f, 0x00, 0x00, +0x01, 0x96, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2c, +0x01, 0x8e, 0x00, 0x73, 0x01, 0xd9, 0x02, 0x07, +0x06, 0x50, 0x00, 0x00, 0x01, 0x96, 0x00, 0x00, +0xff, 0xff, 0x00, 0x22, 0x01, 0x2b, 0x00, 0x7d, +0x01, 0xd9, 0x02, 0x07, 0x06, 0x51, 0x00, 0x00, +0x01, 0x96, 0x00, 0x00, 0xff, 0xff, 0x00, 0x28, +0xff, 0x49, 0x01, 0x42, 0x00, 0xe7, 0x02, 0x07, +0x06, 0x44, 0x00, 0x00, 0xff, 0x55, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5e, 0xff, 0x55, 0x00, 0xd6, +0x00, 0xdb, 0x02, 0x07, 0x06, 0x45, 0x00, 0x00, +0xff, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2f, +0xff, 0x55, 0x01, 0x37, 0x00, 0xe7, 0x02, 0x07, +0x06, 0x46, 0x00, 0x00, 0xff, 0x55, 0x00, 0x00, +0xff, 0xff, 0x00, 0x28, 0xff, 0x49, 0x01, 0x34, +0x00, 0xe7, 0x02, 0x07, 0x06, 0x47, 0x00, 0x00, +0xff, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2e, +0xff, 0x55, 0x01, 0x3d, 0x00, 0xdb, 0x02, 0x07, +0x06, 0x48, 0x00, 0x00, 0xff, 0x55, 0x00, 0x00, +0xff, 0xff, 0x00, 0x28, 0xff, 0x49, 0x01, 0x39, +0x00, 0xdb, 0x02, 0x07, 0x06, 0x49, 0x00, 0x00, +0xff, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x32, +0xff, 0x49, 0x01, 0x3d, 0x00, 0xe7, 0x02, 0x07, +0x06, 0x4a, 0x00, 0x00, 0xff, 0x55, 0x00, 0x00, +0xff, 0xff, 0x00, 0x32, 0xff, 0x55, 0x01, 0x37, +0x00, 0xdb, 0x02, 0x07, 0x06, 0x4b, 0x00, 0x00, +0xff, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x31, +0xff, 0x49, 0x01, 0x36, 0x00, 0xe7, 0x02, 0x07, +0x06, 0x4c, 0x00, 0x00, 0xff, 0x55, 0x00, 0x00, +0xff, 0xff, 0x00, 0x29, 0xff, 0x49, 0x01, 0x34, +0x00, 0xe7, 0x02, 0x07, 0x06, 0x4d, 0x00, 0x00, +0xff, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x42, +0xff, 0x0d, 0x00, 0xb2, 0x01, 0x20, 0x02, 0x07, +0x06, 0x4e, 0x00, 0x00, 0xff, 0x55, 0x00, 0x00, +0xff, 0xff, 0x00, 0x29, 0xff, 0x0d, 0x00, 0x99, +0x01, 0x20, 0x02, 0x07, 0x06, 0x4f, 0x00, 0x00, +0xff, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2c, +0xff, 0x4d, 0x00, 0x73, 0xff, 0x98, 0x02, 0x07, +0x06, 0x50, 0x00, 0x00, 0xff, 0x55, 0x00, 0x00, +0xff, 0xff, 0x00, 0x22, 0xfe, 0xea, 0x00, 0x7d, +0xff, 0x98, 0x02, 0x07, 0x06, 0x51, 0x00, 0x00, +0xff, 0x55, 0x00, 0x00, 0x00, 0x02, 0x00, 0x28, +0xff, 0xf4, 0x01, 0x42, 0x01, 0x92, 0x00, 0x0b, +0x00, 0x17, 0x00, 0x24, 0x00, 0xb8, 0x00, 0x06, +0x2f, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, +0x3e, 0x59, 0xb8, 0x00, 0x0c, 0xdc, 0xb8, 0x00, +0x06, 0x10, 0xb8, 0x00, 0x12, 0xdc, 0x30, 0x31, +0x17, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, +0x16, 0x15, 0x14, 0x06, 0x27, 0x32, 0x36, 0x35, +0x34, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, +0xb5, 0x42, 0x4b, 0x4b, 0x42, 0x42, 0x4b, 0x4b, +0x42, 0x2f, 0x37, 0x37, 0x2f, 0x2f, 0x37, 0x37, +0x0c, 0x6b, 0x65, 0x64, 0x6a, 0x6a, 0x64, 0x65, +0x6b, 0x21, 0x5b, 0x54, 0x54, 0x59, 0x59, 0x54, +0x54, 0x5b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5e, +0x00, 0x00, 0x00, 0xd6, 0x01, 0x86, 0x00, 0x08, +0x00, 0x20, 0x00, 0xb8, 0x00, 0x06, 0x2f, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, +0x1b, 0xb9, 0x00, 0x08, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x06, 0x10, 0xb8, 0x00, 0x00, 0xdc, +0x30, 0x31, 0x13, 0x23, 0x35, 0x3e, 0x01, 0x37, +0x33, 0x11, 0x23, 0xb0, 0x52, 0x1d, 0x29, 0x11, +0x21, 0x26, 0x01, 0x44, 0x1b, 0x06, 0x13, 0x0e, +0xfe, 0x7a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2f, +0x00, 0x00, 0x01, 0x37, 0x01, 0x92, 0x00, 0x1a, +0x00, 0x2c, 0x00, 0xb8, 0x00, 0x0f, 0x2f, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x19, 0x2f, +0x1b, 0xb9, 0x00, 0x19, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x17, 0xdc, 0xb8, 0x00, 0x00, 0xd0, +0xb8, 0x00, 0x00, 0x2f, 0xb8, 0x00, 0x0f, 0x10, +0xb8, 0x00, 0x08, 0xdc, 0x30, 0x31, 0x37, 0x3e, +0x03, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, +0x27, 0x3e, 0x01, 0x33, 0x32, 0x16, 0x15, 0x14, +0x0e, 0x02, 0x07, 0x33, 0x15, 0x23, 0x38, 0x32, +0x49, 0x2f, 0x17, 0x2f, 0x27, 0x1b, 0x2f, 0x11, +0x19, 0x12, 0x41, 0x25, 0x36, 0x43, 0x19, 0x2c, +0x3f, 0x25, 0xc0, 0xff, 0x19, 0x2e, 0x48, 0x3a, +0x31, 0x19, 0x2b, 0x32, 0x24, 0x1a, 0x17, 0x1e, +0x2b, 0x3d, 0x3e, 0x1f, 0x38, 0x3a, 0x3f, 0x25, +0x22, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x28, +0xff, 0xf4, 0x01, 0x34, 0x01, 0x92, 0x00, 0x2a, +0x00, 0x3c, 0x00, 0xb8, 0x00, 0x1b, 0x2f, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, +0xbb, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x0d, 0x00, +0x04, 0x2b, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, +0x07, 0xdc, 0xb8, 0x00, 0x1b, 0x10, 0xb8, 0x00, +0x14, 0xdc, 0xba, 0x00, 0x21, 0x00, 0x0e, 0x00, +0x0d, 0x11, 0x12, 0x39, 0x30, 0x31, 0x17, 0x22, +0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, +0x35, 0x34, 0x26, 0x23, 0x35, 0x32, 0x36, 0x35, +0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, +0x01, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, +0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0xb1, 0x2e, +0x47, 0x14, 0x1d, 0x12, 0x39, 0x22, 0x25, 0x36, +0x4a, 0x40, 0x3b, 0x3f, 0x2d, 0x26, 0x17, 0x2f, +0x13, 0x19, 0x15, 0x3b, 0x26, 0x31, 0x45, 0x2b, +0x20, 0x12, 0x20, 0x1a, 0x0f, 0x14, 0x24, 0x30, +0x0c, 0x2d, 0x1e, 0x16, 0x1d, 0x23, 0x2b, 0x28, +0x26, 0x2a, 0x1c, 0x32, 0x22, 0x20, 0x29, 0x1d, +0x17, 0x16, 0x1b, 0x24, 0x36, 0x31, 0x25, 0x31, +0x0d, 0x03, 0x10, 0x18, 0x21, 0x15, 0x1b, 0x2b, +0x1d, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x2e, +0x00, 0x00, 0x01, 0x3d, 0x01, 0x86, 0x00, 0x05, +0x00, 0x10, 0x00, 0x4e, 0x00, 0xb8, 0x00, 0x0e, +0x2f, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x09, 0x2f, 0x1b, 0xb9, 0x00, 0x09, 0x00, 0x05, +0x3e, 0x59, 0xba, 0x00, 0x00, 0x00, 0x0a, 0x00, +0x03, 0x2b, 0xba, 0x00, 0x02, 0x00, 0x0e, 0x00, +0x09, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, 0x10, +0xb8, 0x00, 0x05, 0xd0, 0xb8, 0x00, 0x0a, 0x10, +0xb8, 0x00, 0x07, 0xd0, 0xb8, 0x00, 0x05, 0x10, +0xb8, 0x00, 0x0c, 0xd0, 0xb8, 0x00, 0x0c, 0x2f, +0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x0f, 0xd0, +0x30, 0x31, 0x37, 0x35, 0x37, 0x23, 0x0f, 0x01, +0x17, 0x23, 0x15, 0x23, 0x35, 0x23, 0x35, 0x37, +0x33, 0x15, 0x33, 0xdf, 0x04, 0x04, 0x38, 0x49, +0xdf, 0x3a, 0x24, 0xb1, 0xb1, 0x24, 0x3a, 0x92, +0x57, 0x68, 0x53, 0x6c, 0x20, 0x72, 0x72, 0x15, +0xff, 0xf4, 0x00, 0x00, 0x00, 0x01, 0x00, 0x28, +0xff, 0xf4, 0x01, 0x39, 0x01, 0x86, 0x00, 0x22, +0x00, 0x30, 0x00, 0xb8, 0x00, 0x12, 0x2f, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, +0xba, 0x00, 0x0d, 0x00, 0x19, 0x00, 0x03, 0x2b, +0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x07, 0xdc, +0xb8, 0x00, 0x12, 0x10, 0xb8, 0x00, 0x14, 0xdc, +0x30, 0x31, 0x17, 0x22, 0x26, 0x27, 0x37, 0x1e, +0x01, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, +0x22, 0x06, 0x07, 0x27, 0x37, 0x33, 0x15, 0x23, +0x07, 0x3e, 0x01, 0x33, 0x32, 0x1e, 0x02, 0x15, +0x14, 0x0e, 0x02, 0xb5, 0x33, 0x44, 0x16, 0x1d, +0x14, 0x36, 0x26, 0x28, 0x35, 0x34, 0x2b, 0x1b, +0x27, 0x10, 0x18, 0x14, 0xc7, 0xa6, 0x0d, 0x0f, +0x23, 0x17, 0x1b, 0x2e, 0x22, 0x14, 0x14, 0x24, +0x30, 0x0c, 0x2d, 0x1e, 0x16, 0x1d, 0x23, 0x39, +0x2d, 0x2f, 0x37, 0x17, 0x0d, 0x10, 0xb9, 0x24, +0x77, 0x08, 0x0c, 0x11, 0x22, 0x31, 0x21, 0x1e, +0x32, 0x23, 0x13, 0x00, 0x00, 0x02, 0x00, 0x32, +0xff, 0xf4, 0x01, 0x3d, 0x01, 0x92, 0x00, 0x0b, +0x00, 0x2a, 0x00, 0x30, 0x00, 0xb8, 0x00, 0x27, +0x2f, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x1f, 0x2f, 0x1b, 0xb9, 0x00, 0x1f, 0x00, 0x05, +0x3e, 0x59, 0xba, 0x00, 0x06, 0x00, 0x17, 0x00, +0x03, 0x2b, 0xb8, 0x00, 0x1f, 0x10, 0xb8, 0x00, +0x00, 0xdc, 0xb8, 0x00, 0x27, 0x10, 0xb8, 0x00, +0x0f, 0xdc, 0x30, 0x31, 0x37, 0x32, 0x36, 0x35, +0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x1e, 0x01, +0x13, 0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, 0x07, +0x3e, 0x01, 0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, +0x02, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, +0x33, 0x32, 0x16, 0x17, 0xc2, 0x26, 0x2f, 0x2c, +0x2d, 0x1a, 0x30, 0x1b, 0x04, 0x37, 0x84, 0x0e, +0x21, 0x15, 0x16, 0x2a, 0x23, 0x17, 0x02, 0x18, +0x35, 0x1e, 0x3c, 0x3e, 0x13, 0x21, 0x2d, 0x1b, +0x40, 0x4f, 0x1b, 0x2d, 0x3b, 0x20, 0x1d, 0x26, +0x11, 0x15, 0x37, 0x29, 0x28, 0x36, 0x16, 0x1d, +0x43, 0x48, 0x01, 0x46, 0x09, 0x0d, 0x13, 0x29, +0x41, 0x2e, 0x16, 0x17, 0x47, 0x37, 0x1b, 0x30, +0x22, 0x14, 0x64, 0x5c, 0x3c, 0x55, 0x35, 0x18, +0x0d, 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x32, +0x00, 0x00, 0x01, 0x37, 0x01, 0x86, 0x00, 0x0f, +0x00, 0x28, 0x00, 0xb8, 0x00, 0x07, 0x2f, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x07, 0x10, 0xb8, 0x00, 0x05, 0xdc, +0xb8, 0x00, 0x09, 0xd0, 0xb8, 0x00, 0x09, 0x2f, +0x30, 0x31, 0x33, 0x3e, 0x03, 0x37, 0x23, 0x35, +0x21, 0x15, 0x0e, 0x03, 0x07, 0x23, 0x8b, 0x04, +0x10, 0x1e, 0x2d, 0x20, 0xd8, 0x01, 0x05, 0x25, +0x30, 0x1e, 0x0e, 0x03, 0x28, 0x36, 0x5d, 0x55, +0x52, 0x2a, 0x22, 0x17, 0x2f, 0x58, 0x58, 0x5c, +0x34, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x31, +0xff, 0xf4, 0x01, 0x36, 0x01, 0x92, 0x00, 0x1f, +0x00, 0x2a, 0x00, 0x39, 0x00, 0x44, 0x00, 0xb8, +0x00, 0x0f, 0x2f, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x20, 0x00, +0x35, 0x00, 0x03, 0x2b, 0xba, 0x00, 0x09, 0x00, +0x20, 0x00, 0x35, 0x11, 0x12, 0x39, 0xba, 0x00, +0x17, 0x00, 0x35, 0x00, 0x20, 0x11, 0x12, 0x39, +0xb8, 0x00, 0x0f, 0x10, 0xb8, 0x00, 0x25, 0xdc, +0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x2b, 0xdc, +0x30, 0x31, 0x17, 0x22, 0x2e, 0x02, 0x35, 0x34, +0x36, 0x37, 0x35, 0x2e, 0x01, 0x35, 0x34, 0x36, +0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, +0x15, 0x1e, 0x01, 0x15, 0x14, 0x0e, 0x02, 0x27, +0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, +0x14, 0x16, 0x17, 0x32, 0x3e, 0x02, 0x35, 0x34, +0x2e, 0x02, 0x27, 0x06, 0x15, 0x14, 0x16, 0xb3, +0x1e, 0x30, 0x22, 0x12, 0x2e, 0x1d, 0x1a, 0x20, +0x41, 0x30, 0x32, 0x43, 0x0c, 0x12, 0x15, 0x09, +0x23, 0x27, 0x14, 0x23, 0x30, 0x01, 0x34, 0x2f, +0x20, 0x1f, 0x2c, 0x3b, 0x10, 0x13, 0x22, 0x19, +0x0f, 0x14, 0x22, 0x2b, 0x17, 0x41, 0x32, 0x0c, +0x11, 0x1e, 0x27, 0x16, 0x27, 0x39, 0x11, 0x04, +0x11, 0x27, 0x20, 0x2d, 0x38, 0x37, 0x2e, 0x13, +0x1e, 0x18, 0x12, 0x07, 0x04, 0x12, 0x2e, 0x23, +0x18, 0x29, 0x1e, 0x11, 0xe1, 0x28, 0x31, 0x1e, +0x24, 0x26, 0x1d, 0x23, 0x27, 0xcf, 0x0d, 0x15, +0x1d, 0x10, 0x16, 0x1c, 0x15, 0x0f, 0x09, 0x24, +0x3b, 0x1e, 0x31, 0x00, 0x00, 0x02, 0x00, 0x29, +0xff, 0xf4, 0x01, 0x34, 0x01, 0x92, 0x00, 0x0b, +0x00, 0x29, 0x00, 0x30, 0x00, 0xb8, 0x00, 0x1e, +0x2f, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x26, 0x2f, 0x1b, 0xb9, 0x00, 0x26, 0x00, 0x05, +0x3e, 0x59, 0xba, 0x00, 0x16, 0x00, 0x00, 0x00, +0x03, 0x2b, 0xb8, 0x00, 0x1e, 0x10, 0xb8, 0x00, +0x06, 0xdc, 0xb8, 0x00, 0x26, 0x10, 0xb8, 0x00, +0x0f, 0xdc, 0x30, 0x31, 0x37, 0x32, 0x36, 0x37, +0x2e, 0x01, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, +0x07, 0x1e, 0x01, 0x33, 0x32, 0x3e, 0x02, 0x37, +0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, +0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, +0x22, 0x26, 0x27, 0xa8, 0x1b, 0x2f, 0x1b, 0x04, +0x36, 0x2f, 0x26, 0x2f, 0x2d, 0x2d, 0x0e, 0x21, +0x15, 0x15, 0x2a, 0x23, 0x17, 0x02, 0x30, 0x3b, +0x3c, 0x3e, 0x13, 0x21, 0x2d, 0x1b, 0x40, 0x4f, +0x1b, 0x2d, 0x3b, 0x1f, 0x1d, 0x27, 0x11, 0xb3, +0x16, 0x1d, 0x43, 0x48, 0x37, 0x29, 0x28, 0x36, +0x88, 0x09, 0x0d, 0x13, 0x29, 0x41, 0x2e, 0x2d, +0x47, 0x37, 0x1b, 0x30, 0x22, 0x14, 0x64, 0x5c, +0x3c, 0x55, 0x35, 0x18, 0x0d, 0x0b, 0x00, 0x00, +0x00, 0x01, 0x00, 0x42, 0xff, 0xb8, 0x00, 0xb2, +0x01, 0xcb, 0x00, 0x0e, 0x00, 0x0b, 0x00, 0xba, +0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x2b, 0x30, +0x31, 0x17, 0x2e, 0x01, 0x35, 0x34, 0x36, 0x37, +0x17, 0x0e, 0x01, 0x15, 0x14, 0x16, 0x17, 0x07, +0x98, 0x2a, 0x2c, 0x2c, 0x2a, 0x1a, 0x2a, 0x20, +0x20, 0x2a, 0x1a, 0x48, 0x3a, 0x7e, 0x52, 0x51, +0x7e, 0x3a, 0x10, 0x3a, 0x7d, 0x42, 0x42, 0x7d, +0x3b, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x29, +0xff, 0xb8, 0x00, 0x99, 0x01, 0xcb, 0x00, 0x0d, +0x00, 0x0b, 0x00, 0xba, 0x00, 0x07, 0x00, 0x0d, +0x00, 0x03, 0x2b, 0x30, 0x31, 0x17, 0x3e, 0x01, +0x35, 0x34, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x15, +0x14, 0x06, 0x07, 0x29, 0x2a, 0x1f, 0x1f, 0x2a, +0x1b, 0x2a, 0x2b, 0x2b, 0x2a, 0x38, 0x3b, 0x7d, +0x42, 0x42, 0x7d, 0x3a, 0x10, 0x3a, 0x7e, 0x51, +0x52, 0x7e, 0x3a, 0x00, 0x00, 0x01, 0x00, 0x2c, +0xff, 0xf8, 0x00, 0x73, 0x00, 0x43, 0x00, 0x0b, +0x00, 0x1a, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x06, 0x00, +0x02, 0xf4, 0x30, 0x31, 0x17, 0x22, 0x26, 0x35, +0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, +0x4f, 0x0f, 0x14, 0x14, 0x0f, 0x10, 0x14, 0x14, +0x08, 0x14, 0x12, 0x11, 0x14, 0x14, 0x11, 0x12, +0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x22, +0xff, 0x95, 0x00, 0x7d, 0x00, 0x43, 0x00, 0x11, +0x00, 0x2b, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, 0x03, +0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, +0x05, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x0b, +0x00, 0x02, 0xf4, 0x30, 0x31, 0x17, 0x3e, 0x01, +0x35, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, +0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, 0x22, +0x19, 0x1f, 0x03, 0x06, 0x0e, 0x16, 0x16, 0x0e, +0x14, 0x18, 0x2b, 0x23, 0x51, 0x0b, 0x28, 0x1d, +0x01, 0x0f, 0x11, 0x12, 0x13, 0x1e, 0x1d, 0x25, +0x3f, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x28, +0x01, 0x01, 0x01, 0x42, 0x02, 0x9f, 0x02, 0x07, +0x06, 0x44, 0x00, 0x00, 0x01, 0x0d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x5e, 0x01, 0x0d, 0x00, 0xd6, +0x02, 0x93, 0x02, 0x07, 0x06, 0x45, 0x00, 0x00, +0x01, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2f, +0x01, 0x0d, 0x01, 0x37, 0x02, 0x9f, 0x02, 0x07, +0x06, 0x46, 0x00, 0x00, 0x01, 0x0d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x28, 0x01, 0x01, 0x01, 0x34, +0x02, 0x9f, 0x02, 0x07, 0x06, 0x47, 0x00, 0x00, +0x01, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2e, +0x01, 0x0d, 0x01, 0x3d, 0x02, 0x93, 0x02, 0x07, +0x06, 0x48, 0x00, 0x00, 0x01, 0x0d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x28, 0x01, 0x01, 0x01, 0x39, +0x02, 0x93, 0x02, 0x07, 0x06, 0x49, 0x00, 0x00, +0x01, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x32, +0x01, 0x01, 0x01, 0x3d, 0x02, 0x9f, 0x02, 0x07, +0x06, 0x4a, 0x00, 0x00, 0x01, 0x0d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x32, 0x01, 0x0d, 0x01, 0x37, +0x02, 0x93, 0x02, 0x07, 0x06, 0x4b, 0x00, 0x00, +0x01, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x31, +0x01, 0x01, 0x01, 0x36, 0x02, 0x9f, 0x02, 0x07, +0x06, 0x4c, 0x00, 0x00, 0x01, 0x0d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x29, 0x01, 0x01, 0x01, 0x34, +0x02, 0x9f, 0x02, 0x07, 0x06, 0x4d, 0x00, 0x00, +0x01, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x42, +0x00, 0xc5, 0x00, 0xb2, 0x02, 0xd8, 0x02, 0x07, +0x06, 0x4e, 0x00, 0x00, 0x01, 0x0d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x29, 0x00, 0xc5, 0x00, 0x99, +0x02, 0xd8, 0x02, 0x07, 0x06, 0x4f, 0x00, 0x00, +0x01, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2c, +0x01, 0x05, 0x00, 0x73, 0x01, 0x50, 0x02, 0x07, +0x06, 0x50, 0x00, 0x00, 0x01, 0x0d, 0x00, 0x00, +0xff, 0xff, 0x00, 0x22, 0x00, 0xa2, 0x00, 0x7d, +0x01, 0x50, 0x02, 0x07, 0x06, 0x51, 0x00, 0x00, +0x01, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2a, +0x01, 0x8e, 0x01, 0x1d, 0x02, 0xdb, 0x02, 0x06, +0x06, 0x7d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x25, +0x01, 0x8e, 0x01, 0x35, 0x02, 0xdb, 0x02, 0x06, +0x06, 0x9f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x21, +0x01, 0x8e, 0x01, 0x45, 0x02, 0xdb, 0x02, 0x06, +0x06, 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, +0x01, 0x96, 0x01, 0x5b, 0x03, 0x46, 0x00, 0x09, +0x00, 0x11, 0x00, 0x2b, 0x00, 0xb8, 0x00, 0x0d, +0x2f, 0xb8, 0x00, 0x10, 0x2f, 0xb8, 0x00, 0x0e, +0x2f, 0xba, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x0d, +0x11, 0x12, 0x39, 0xba, 0x00, 0x0a, 0x00, 0x0e, +0x00, 0x0d, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x0a, +0x10, 0xb8, 0x00, 0x09, 0xdc, 0x30, 0x31, 0x13, +0x27, 0x2e, 0x01, 0x27, 0x23, 0x0e, 0x01, 0x0f, +0x01, 0x17, 0x23, 0x07, 0x23, 0x13, 0x33, 0x13, +0x23, 0xf8, 0x19, 0x0d, 0x17, 0x0c, 0x02, 0x0b, +0x17, 0x0d, 0x1a, 0x9f, 0xaa, 0x31, 0x26, 0x99, +0x29, 0x97, 0x28, 0x02, 0x45, 0x4b, 0x27, 0x47, +0x26, 0x27, 0x47, 0x26, 0x4b, 0x20, 0x8f, 0x01, +0xb0, 0xfe, 0x50, 0x00, 0x00, 0x03, 0x00, 0x3d, +0x01, 0x96, 0x01, 0x64, 0x03, 0x46, 0x00, 0x0f, +0x00, 0x18, 0x00, 0x21, 0x00, 0x37, 0x00, 0xb8, +0x00, 0x01, 0x2f, 0xb8, 0x00, 0x0e, 0x2f, 0xba, +0x00, 0x1f, 0x00, 0x01, 0x00, 0x0e, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x1f, 0x10, 0xb8, 0x00, 0x10, +0xdc, 0xba, 0x00, 0x07, 0x00, 0x1f, 0x00, 0x10, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x01, 0x10, 0xb8, +0x00, 0x16, 0xdc, 0xb8, 0x00, 0x0e, 0x10, 0xb8, +0x00, 0x19, 0xdc, 0x30, 0x31, 0x13, 0x33, 0x32, +0x16, 0x15, 0x14, 0x06, 0x07, 0x15, 0x1e, 0x01, +0x15, 0x14, 0x06, 0x2b, 0x01, 0x37, 0x32, 0x36, +0x35, 0x34, 0x26, 0x2b, 0x01, 0x15, 0x17, 0x32, +0x36, 0x35, 0x34, 0x26, 0x2b, 0x01, 0x15, 0x3d, +0x7b, 0x42, 0x50, 0x27, 0x26, 0x30, 0x37, 0x59, +0x4b, 0x83, 0x70, 0x40, 0x37, 0x3a, 0x3a, 0x4c, +0x54, 0x3f, 0x47, 0x45, 0x41, 0x54, 0x03, 0x46, +0x32, 0x37, 0x21, 0x33, 0x09, 0x03, 0x08, 0x34, +0x2d, 0x3f, 0x3f, 0xf4, 0x28, 0x2a, 0x27, 0x24, +0x9d, 0xd5, 0x2c, 0x33, 0x2d, 0x2b, 0xb7, 0x00, +0x00, 0x01, 0x00, 0x22, 0x01, 0x8e, 0x01, 0x5e, +0x03, 0x4e, 0x00, 0x1f, 0x00, 0x1b, 0x00, 0xb8, +0x00, 0x0a, 0x2f, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x0a, 0x10, 0xb8, 0x00, 0x11, 0xdc, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x19, 0xdc, 0x30, +0x31, 0x13, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, 0x01, +0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, +0x32, 0x36, 0x37, 0x17, 0x0e, 0x01, 0xdc, 0x29, +0x44, 0x32, 0x1b, 0x1c, 0x32, 0x45, 0x2a, 0x27, +0x3b, 0x12, 0x16, 0x12, 0x2e, 0x1d, 0x23, 0x37, +0x27, 0x15, 0x4e, 0x45, 0x21, 0x33, 0x17, 0x16, +0x19, 0x3f, 0x01, 0x8e, 0x1f, 0x3a, 0x53, 0x34, +0x33, 0x53, 0x3b, 0x1f, 0x1f, 0x15, 0x18, 0x14, +0x17, 0x1b, 0x32, 0x45, 0x2b, 0x59, 0x68, 0x1b, +0x19, 0x18, 0x1c, 0x21, 0x00, 0x02, 0x00, 0x3d, +0x01, 0x96, 0x01, 0x6f, 0x03, 0x46, 0x00, 0x08, +0x00, 0x11, 0x00, 0x1b, 0x00, 0xb8, 0x00, 0x07, +0x2f, 0xb8, 0x00, 0x01, 0x2f, 0xb8, 0x00, 0x07, +0x10, 0xb8, 0x00, 0x09, 0xdc, 0xb8, 0x00, 0x01, +0x10, 0xb8, 0x00, 0x0f, 0xdc, 0x30, 0x31, 0x13, +0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x2b, 0x01, +0x37, 0x32, 0x36, 0x35, 0x34, 0x26, 0x2b, 0x01, +0x11, 0x3d, 0x69, 0x65, 0x64, 0x64, 0x64, 0x6a, +0x69, 0x53, 0x4e, 0x4f, 0x55, 0x3f, 0x03, 0x46, +0x73, 0x63, 0x64, 0x76, 0x20, 0x65, 0x55, 0x55, +0x61, 0xfe, 0x90, 0x00, 0x00, 0x01, 0x00, 0x3d, +0x01, 0x96, 0x01, 0x37, 0x03, 0x46, 0x00, 0x0b, +0x00, 0x23, 0x00, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x0b, 0x2f, 0xba, 0x00, 0x05, 0x00, 0x06, +0x00, 0x03, 0x2b, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x02, 0xdc, 0xb8, 0x00, 0x0b, 0x10, 0xb8, +0x00, 0x09, 0xdc, 0x30, 0x31, 0x13, 0x33, 0x15, +0x23, 0x15, 0x33, 0x15, 0x23, 0x15, 0x33, 0x15, +0x23, 0x3d, 0xf4, 0xcd, 0xad, 0xad, 0xd3, 0xfa, +0x03, 0x46, 0x21, 0x99, 0x21, 0xb5, 0x20, 0x00, +0x00, 0x01, 0x00, 0x3d, 0x01, 0x96, 0x01, 0x31, +0x03, 0x46, 0x00, 0x09, 0x00, 0x1b, 0x00, 0xb8, +0x00, 0x09, 0x2f, 0xb8, 0x00, 0x00, 0x2f, 0xba, +0x00, 0x05, 0x00, 0x06, 0x00, 0x03, 0x2b, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x02, 0xdc, 0x30, +0x31, 0x13, 0x33, 0x15, 0x23, 0x15, 0x33, 0x15, +0x23, 0x15, 0x23, 0x3d, 0xf4, 0xcd, 0xad, 0xad, +0x27, 0x03, 0x46, 0x21, 0xa3, 0x21, 0xcb, 0x00, +0x00, 0x01, 0x00, 0x22, 0x01, 0x8e, 0x01, 0x63, +0x03, 0x4e, 0x00, 0x23, 0x00, 0x23, 0x00, 0xb8, +0x00, 0x00, 0x2f, 0xb8, 0x00, 0x0a, 0x2f, 0xba, +0x00, 0x1f, 0x00, 0x1e, 0x00, 0x03, 0x2b, 0xb8, +0x00, 0x0a, 0x10, 0xb8, 0x00, 0x11, 0xdc, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x19, 0xdc, 0x30, +0x31, 0x13, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, 0x01, +0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, +0x32, 0x36, 0x37, 0x35, 0x23, 0x35, 0x33, 0x15, +0x0e, 0x01, 0xe1, 0x2a, 0x47, 0x32, 0x1c, 0x1d, +0x33, 0x48, 0x2c, 0x2d, 0x3a, 0x12, 0x16, 0x11, +0x2f, 0x23, 0x24, 0x3a, 0x28, 0x16, 0x50, 0x4a, +0x1c, 0x32, 0x0e, 0x64, 0x87, 0x14, 0x43, 0x01, +0x8e, 0x1f, 0x3a, 0x53, 0x34, 0x33, 0x53, 0x3b, +0x1f, 0x21, 0x13, 0x18, 0x11, 0x1a, 0x1b, 0x32, +0x45, 0x2b, 0x59, 0x68, 0x11, 0x0e, 0x80, 0x20, +0xb0, 0x14, 0x1c, 0x00, 0x00, 0x01, 0x00, 0x3d, +0x01, 0x96, 0x01, 0x6b, 0x03, 0x46, 0x00, 0x0b, +0x00, 0x1b, 0x00, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x04, 0x2f, 0xb8, 0x00, 0x0b, 0x2f, 0xb8, +0x00, 0x07, 0x2f, 0xba, 0x00, 0x08, 0x00, 0x02, +0x00, 0x03, 0x2b, 0x30, 0x31, 0x13, 0x33, 0x15, +0x33, 0x35, 0x33, 0x11, 0x23, 0x35, 0x23, 0x15, +0x23, 0x3d, 0x27, 0xe1, 0x26, 0x26, 0xe1, 0x27, +0x03, 0x46, 0xba, 0xba, 0xfe, 0x50, 0xd5, 0xd5, +0x00, 0x01, 0x00, 0x3d, 0x01, 0x96, 0x00, 0x64, +0x03, 0x46, 0x00, 0x03, 0x00, 0x0b, 0x00, 0xb8, +0x00, 0x00, 0x2f, 0xb8, 0x00, 0x02, 0x2f, 0x30, +0x31, 0x13, 0x33, 0x11, 0x23, 0x3d, 0x27, 0x27, +0x03, 0x46, 0xfe, 0x50, 0x00, 0x01, 0x00, 0x17, +0x01, 0x8e, 0x00, 0xf8, 0x03, 0x46, 0x00, 0x11, +0x00, 0x0f, 0x00, 0xb8, 0x00, 0x0b, 0x2f, 0xb8, +0x00, 0x00, 0x2f, 0xb8, 0x00, 0x07, 0xdc, 0x30, +0x31, 0x13, 0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, +0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, +0x0e, 0x02, 0x85, 0x26, 0x37, 0x11, 0x1c, 0x10, +0x27, 0x1a, 0x27, 0x27, 0x26, 0x0d, 0x1c, 0x2b, +0x01, 0x8e, 0x22, 0x1f, 0x13, 0x1b, 0x18, 0x30, +0x33, 0x01, 0x34, 0xfe, 0xc8, 0x1b, 0x2e, 0x23, +0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3d, +0x01, 0x96, 0x01, 0x70, 0x03, 0x46, 0x00, 0x0c, +0x00, 0x31, 0x00, 0xb8, 0x00, 0x0c, 0x2f, 0xb8, +0x00, 0x08, 0x2f, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x04, 0x2f, 0xba, 0x00, 0x02, 0x00, 0x00, +0x00, 0x0c, 0x11, 0x12, 0x39, 0xba, 0x00, 0x06, +0x00, 0x00, 0x00, 0x08, 0x11, 0x12, 0x39, 0xba, +0x00, 0x09, 0x00, 0x0c, 0x00, 0x00, 0x11, 0x12, +0x39, 0x30, 0x31, 0x13, 0x33, 0x15, 0x33, 0x37, +0x33, 0x07, 0x13, 0x23, 0x27, 0x07, 0x15, 0x23, +0x3d, 0x27, 0x02, 0xca, 0x2d, 0x8b, 0x9e, 0x2b, +0x8c, 0x55, 0x27, 0x03, 0x46, 0xe9, 0xe9, 0xa1, +0xfe, 0xf1, 0xf2, 0x60, 0x92, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x3d, 0x01, 0x96, 0x01, 0x2a, +0x03, 0x46, 0x00, 0x05, 0x00, 0x0f, 0x00, 0xb8, +0x00, 0x00, 0x2f, 0xb8, 0x00, 0x05, 0x2f, 0xb8, +0x00, 0x03, 0xdc, 0x30, 0x31, 0x13, 0x33, 0x11, +0x33, 0x15, 0x23, 0x3d, 0x27, 0xc6, 0xed, 0x03, +0x46, 0xfe, 0x70, 0x20, 0x00, 0x01, 0x00, 0x3d, +0x01, 0x96, 0x01, 0x99, 0x03, 0x46, 0x00, 0x19, +0x00, 0x3b, 0x00, 0xb8, 0x00, 0x19, 0x2f, 0xb8, +0x00, 0x09, 0x2f, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x07, 0x2f, 0xba, 0x00, 0x04, 0x00, 0x07, +0x00, 0x09, 0x11, 0x12, 0x39, 0xba, 0x00, 0x0d, +0x00, 0x09, 0x00, 0x07, 0x11, 0x12, 0x39, 0xba, +0x00, 0x11, 0x00, 0x19, 0x00, 0x00, 0x11, 0x12, +0x39, 0xba, 0x00, 0x14, 0x00, 0x00, 0x00, 0x19, +0x11, 0x12, 0x39, 0x30, 0x31, 0x13, 0x33, 0x1f, +0x01, 0x33, 0x3f, 0x01, 0x33, 0x11, 0x23, 0x11, +0x34, 0x36, 0x37, 0x23, 0x0f, 0x01, 0x23, 0x2f, +0x01, 0x23, 0x1e, 0x01, 0x15, 0x11, 0x23, 0x3d, +0x33, 0x59, 0x22, 0x03, 0x21, 0x58, 0x32, 0x25, +0x03, 0x02, 0x02, 0x23, 0x5a, 0x1d, 0x5b, 0x23, +0x03, 0x02, 0x03, 0x24, 0x03, 0x46, 0xf5, 0x5e, +0x5e, 0xf5, 0xfe, 0x50, 0x01, 0x0d, 0x1a, 0x41, +0x1b, 0x5e, 0xf9, 0xf9, 0x5e, 0x1b, 0x41, 0x1a, +0xfe, 0xf3, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3d, +0x01, 0x96, 0x01, 0x69, 0x03, 0x46, 0x00, 0x13, +0x00, 0x27, 0x00, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x09, 0x2f, 0xb8, 0x00, 0x0a, 0x2f, 0xb8, +0x00, 0x13, 0x2f, 0xba, 0x00, 0x04, 0x00, 0x0a, +0x00, 0x09, 0x11, 0x12, 0x39, 0xba, 0x00, 0x0e, +0x00, 0x00, 0x00, 0x13, 0x11, 0x12, 0x39, 0x30, +0x31, 0x13, 0x33, 0x13, 0x17, 0x33, 0x2e, 0x01, +0x3d, 0x01, 0x33, 0x11, 0x23, 0x03, 0x27, 0x23, +0x1e, 0x01, 0x15, 0x11, 0x23, 0x3d, 0x2a, 0xaf, +0x31, 0x03, 0x02, 0x02, 0x23, 0x28, 0xb0, 0x32, +0x02, 0x01, 0x03, 0x24, 0x03, 0x46, 0xfe, 0xd9, +0x56, 0x1f, 0x42, 0x20, 0xfc, 0xfe, 0x50, 0x01, +0x27, 0x56, 0x20, 0x3d, 0x20, 0xff, 0x00, 0x00, +0x00, 0x02, 0x00, 0x22, 0x01, 0x8e, 0x01, 0x8f, +0x03, 0x4e, 0x00, 0x13, 0x00, 0x21, 0x00, 0x17, +0x00, 0xb8, 0x00, 0x0a, 0x2f, 0xb8, 0x00, 0x00, +0x2f, 0xb8, 0x00, 0x14, 0xdc, 0xb8, 0x00, 0x0a, +0x10, 0xb8, 0x00, 0x1a, 0xdc, 0x30, 0x31, 0x13, +0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, +0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x27, +0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x0e, +0x02, 0x15, 0x14, 0x16, 0xd8, 0x28, 0x43, 0x30, +0x1b, 0x1b, 0x30, 0x43, 0x28, 0x28, 0x44, 0x30, +0x1b, 0x1b, 0x30, 0x44, 0x28, 0x42, 0x4d, 0x4d, +0x42, 0x20, 0x34, 0x26, 0x14, 0x4e, 0x01, 0x8e, +0x20, 0x3b, 0x53, 0x34, 0x33, 0x53, 0x39, 0x1f, +0x1f, 0x3a, 0x52, 0x33, 0x34, 0x53, 0x3b, 0x20, +0x21, 0x69, 0x58, 0x57, 0x66, 0x1b, 0x31, 0x46, +0x2b, 0x58, 0x69, 0x00, 0x00, 0x02, 0x00, 0x3d, +0x01, 0x96, 0x01, 0x58, 0x03, 0x46, 0x00, 0x0a, +0x00, 0x13, 0x00, 0x1b, 0x00, 0xb8, 0x00, 0x00, +0x2f, 0xb8, 0x00, 0x0a, 0x2f, 0xba, 0x00, 0x0b, +0x00, 0x07, 0x00, 0x03, 0x2b, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x11, 0xdc, 0x30, 0x31, 0x13, +0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x2b, 0x01, +0x15, 0x23, 0x37, 0x32, 0x36, 0x35, 0x34, 0x26, +0x2b, 0x01, 0x15, 0x3d, 0x7d, 0x49, 0x55, 0x56, +0x48, 0x56, 0x27, 0x76, 0x3f, 0x3f, 0x3f, 0x3f, +0x4f, 0x03, 0x46, 0x37, 0x43, 0x42, 0x3f, 0xb5, +0xd5, 0x2d, 0x34, 0x34, 0x26, 0xbb, 0x00, 0x00, +0x00, 0x02, 0x00, 0x21, 0x01, 0x2f, 0x01, 0x92, +0x03, 0x4e, 0x00, 0x0b, 0x00, 0x2c, 0x00, 0x2b, +0x00, 0xb8, 0x00, 0x12, 0x2f, 0xb8, 0x00, 0x1c, +0x2f, 0xba, 0x00, 0x29, 0x00, 0x0f, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x12, 0x10, 0xb8, 0x00, 0x03, +0xdc, 0xb8, 0x00, 0x1c, 0x10, 0xb8, 0x00, 0x09, +0xdc, 0xb8, 0x00, 0x12, 0x10, 0xb8, 0x00, 0x26, +0xd0, 0x30, 0x31, 0x13, 0x14, 0x16, 0x33, 0x32, +0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x01, +0x0e, 0x01, 0x23, 0x22, 0x26, 0x27, 0x2e, 0x03, +0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, +0x15, 0x14, 0x0e, 0x02, 0x07, 0x1e, 0x01, 0x33, +0x32, 0x36, 0x37, 0x49, 0x4e, 0x41, 0x41, 0x4d, +0x4d, 0x41, 0x41, 0x4e, 0x01, 0x49, 0x08, 0x1f, +0x12, 0x39, 0x4b, 0x11, 0x24, 0x3c, 0x2b, 0x18, +0x1b, 0x31, 0x43, 0x28, 0x28, 0x43, 0x30, 0x1b, +0x18, 0x2a, 0x3b, 0x23, 0x0e, 0x3a, 0x27, 0x0f, +0x16, 0x08, 0x02, 0x71, 0x58, 0x6a, 0x6a, 0x58, +0x56, 0x66, 0x66, 0xfe, 0x70, 0x03, 0x05, 0x36, +0x2a, 0x04, 0x23, 0x3b, 0x4f, 0x31, 0x33, 0x52, +0x39, 0x1f, 0x1f, 0x3a, 0x51, 0x33, 0x30, 0x50, +0x3a, 0x24, 0x04, 0x1f, 0x20, 0x04, 0x02, 0x00, +0x00, 0x02, 0x00, 0x3d, 0x01, 0x96, 0x01, 0x5b, +0x03, 0x46, 0x00, 0x08, 0x00, 0x16, 0x00, 0x29, +0x00, 0xb8, 0x00, 0x0d, 0x2f, 0xb8, 0x00, 0x09, +0x2f, 0xb8, 0x00, 0x0e, 0x2f, 0xba, 0x00, 0x01, +0x00, 0x0a, 0x00, 0x03, 0x2b, 0xb8, 0x00, 0x0e, +0x10, 0xb8, 0x00, 0x07, 0xdc, 0xba, 0x00, 0x15, +0x00, 0x01, 0x00, 0x0a, 0x11, 0x12, 0x39, 0x30, +0x31, 0x13, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, +0x2b, 0x01, 0x13, 0x27, 0x23, 0x15, 0x23, 0x11, +0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, 0x17, +0x64, 0x52, 0x39, 0x3b, 0x3b, 0x39, 0x52, 0xcb, +0x72, 0x59, 0x27, 0x81, 0x42, 0x51, 0x3a, 0x31, +0x75, 0x02, 0x77, 0x2c, 0x2f, 0x2f, 0x25, 0xfe, +0x70, 0xc1, 0xc1, 0x01, 0xb0, 0x35, 0x3f, 0x33, +0x3c, 0x09, 0xc4, 0x00, 0x00, 0x01, 0x00, 0x1c, +0x01, 0x8e, 0x01, 0x40, 0x03, 0x4e, 0x00, 0x2f, +0x00, 0x2b, 0x00, 0xb8, 0x00, 0x18, 0x2f, 0xb8, +0x00, 0x00, 0x2f, 0xb8, 0x00, 0x07, 0xdc, 0xba, +0x00, 0x10, 0x00, 0x00, 0x00, 0x18, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x18, 0x10, 0xb8, 0x00, 0x1f, +0xdc, 0xba, 0x00, 0x28, 0x00, 0x18, 0x00, 0x00, +0x11, 0x12, 0x39, 0x30, 0x31, 0x13, 0x22, 0x26, +0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, +0x34, 0x2e, 0x02, 0x2f, 0x01, 0x2e, 0x03, 0x35, +0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, +0x01, 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, 0x02, +0x1f, 0x01, 0x1e, 0x03, 0x15, 0x14, 0x06, 0xb2, +0x30, 0x4a, 0x1c, 0x18, 0x18, 0x42, 0x25, 0x30, +0x37, 0x0c, 0x15, 0x1b, 0x10, 0x42, 0x0f, 0x20, +0x19, 0x11, 0x4a, 0x38, 0x28, 0x3f, 0x16, 0x15, +0x14, 0x33, 0x21, 0x2a, 0x31, 0x0e, 0x15, 0x1a, +0x0c, 0x42, 0x13, 0x21, 0x19, 0x0e, 0x4c, 0x01, +0x8e, 0x24, 0x1d, 0x1a, 0x1c, 0x1d, 0x2c, 0x26, +0x13, 0x1a, 0x14, 0x0e, 0x07, 0x1d, 0x06, 0x12, +0x1a, 0x23, 0x18, 0x30, 0x3c, 0x1e, 0x16, 0x18, +0x14, 0x17, 0x28, 0x21, 0x12, 0x19, 0x13, 0x0d, +0x05, 0x1e, 0x08, 0x13, 0x1a, 0x22, 0x17, 0x36, +0x44, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x11, +0x01, 0x96, 0x01, 0x48, 0x03, 0x46, 0x00, 0x07, +0x00, 0x13, 0x00, 0xb8, 0x00, 0x07, 0x2f, 0xb8, +0x00, 0x02, 0x2f, 0xb8, 0x00, 0x01, 0xdc, 0xb8, +0x00, 0x04, 0xd0, 0x30, 0x31, 0x13, 0x23, 0x35, +0x21, 0x15, 0x23, 0x11, 0x23, 0x9a, 0x89, 0x01, +0x37, 0x88, 0x26, 0x03, 0x25, 0x21, 0x21, 0xfe, +0x71, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3c, +0x01, 0x8e, 0x01, 0x69, 0x03, 0x46, 0x00, 0x19, +0x00, 0x17, 0x00, 0xb8, 0x00, 0x06, 0x2f, 0xb8, +0x00, 0x00, 0x2f, 0xb8, 0x00, 0x0d, 0xdc, 0xb8, +0x00, 0x06, 0x10, 0xb8, 0x00, 0x13, 0xd0, 0x30, +0x31, 0x13, 0x22, 0x2e, 0x02, 0x35, 0x11, 0x33, +0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, +0x35, 0x11, 0x33, 0x11, 0x14, 0x0e, 0x02, 0xd3, +0x1e, 0x37, 0x29, 0x19, 0x26, 0x12, 0x20, 0x28, +0x17, 0x17, 0x2a, 0x1f, 0x13, 0x23, 0x19, 0x29, +0x36, 0x01, 0x8e, 0x11, 0x2a, 0x44, 0x33, 0x01, +0x06, 0xfe, 0xfc, 0x2a, 0x38, 0x23, 0x0e, 0x0e, +0x23, 0x38, 0x2a, 0x01, 0x04, 0xfe, 0xfa, 0x33, +0x44, 0x2a, 0x11, 0x00, 0x00, 0x01, 0x00, 0x00, +0x01, 0x96, 0x01, 0x48, 0x03, 0x46, 0x00, 0x0d, +0x00, 0x19, 0x00, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x0a, 0x2f, 0xb8, 0x00, 0x0d, 0x2f, 0xba, +0x00, 0x05, 0x00, 0x00, 0x00, 0x0d, 0x11, 0x12, +0x39, 0x30, 0x31, 0x11, 0x33, 0x17, 0x1e, 0x01, +0x17, 0x33, 0x3e, 0x01, 0x3f, 0x01, 0x33, 0x03, +0x23, 0x29, 0x4e, 0x0d, 0x13, 0x0e, 0x03, 0x0d, +0x12, 0x0c, 0x4e, 0x27, 0x8e, 0x2a, 0x03, 0x46, +0xf5, 0x28, 0x42, 0x27, 0x27, 0x42, 0x28, 0xf5, +0xfe, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, +0x01, 0x96, 0x01, 0xf0, 0x03, 0x46, 0x00, 0x20, +0x00, 0x3d, 0x00, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x20, 0x2f, 0xba, 0x00, 0x04, 0x00, 0x00, +0x00, 0x20, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x09, 0xd0, 0xb8, 0x00, 0x13, +0xd0, 0xb8, 0x00, 0x20, 0x10, 0xb8, 0x00, 0x16, +0xd0, 0xba, 0x00, 0x0e, 0x00, 0x13, 0x00, 0x16, +0x11, 0x12, 0x39, 0xba, 0x00, 0x1a, 0x00, 0x20, +0x00, 0x09, 0x11, 0x12, 0x39, 0x30, 0x31, 0x13, +0x33, 0x17, 0x16, 0x17, 0x33, 0x3e, 0x01, 0x3f, +0x01, 0x33, 0x17, 0x1e, 0x01, 0x17, 0x33, 0x3e, +0x01, 0x3f, 0x01, 0x33, 0x03, 0x23, 0x03, 0x2e, +0x01, 0x27, 0x23, 0x0e, 0x01, 0x07, 0x03, 0x23, +0x10, 0x28, 0x35, 0x0f, 0x0c, 0x03, 0x08, 0x10, +0x09, 0x42, 0x25, 0x43, 0x09, 0x10, 0x09, 0x03, +0x07, 0x0c, 0x08, 0x35, 0x25, 0x61, 0x2b, 0x4c, +0x07, 0x0a, 0x05, 0x03, 0x06, 0x0b, 0x07, 0x4a, +0x2b, 0x03, 0x46, 0xf7, 0x48, 0x45, 0x23, 0x46, +0x24, 0xf7, 0xf7, 0x24, 0x46, 0x23, 0x23, 0x46, +0x24, 0xf7, 0xfe, 0x50, 0x01, 0x1d, 0x19, 0x2e, +0x1a, 0x1a, 0x2e, 0x19, 0xfe, 0xe3, 0x00, 0x00, +0x00, 0x01, 0x00, 0x09, 0x01, 0x96, 0x01, 0x3a, +0x03, 0x46, 0x00, 0x19, 0x00, 0x3b, 0x00, 0xb8, +0x00, 0x01, 0x2f, 0xb8, 0x00, 0x0c, 0x2f, 0xb8, +0x00, 0x0e, 0x2f, 0xb8, 0x00, 0x19, 0x2f, 0xba, +0x00, 0x00, 0x00, 0x01, 0x00, 0x19, 0x11, 0x12, +0x39, 0xba, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x0c, +0x11, 0x12, 0x39, 0xba, 0x00, 0x0d, 0x00, 0x0e, +0x00, 0x0c, 0x11, 0x12, 0x39, 0xba, 0x00, 0x14, +0x00, 0x01, 0x00, 0x19, 0x11, 0x12, 0x39, 0x30, +0x31, 0x13, 0x27, 0x33, 0x17, 0x1e, 0x01, 0x17, +0x33, 0x3e, 0x01, 0x3f, 0x01, 0x33, 0x07, 0x17, +0x23, 0x27, 0x2e, 0x01, 0x27, 0x23, 0x0e, 0x01, +0x0f, 0x01, 0x23, 0x8c, 0x7a, 0x2a, 0x43, 0x09, +0x0f, 0x0b, 0x03, 0x0a, 0x0e, 0x08, 0x44, 0x28, +0x7a, 0x83, 0x29, 0x48, 0x09, 0x13, 0x0c, 0x03, +0x0a, 0x12, 0x09, 0x48, 0x28, 0x02, 0x76, 0xd0, +0x7a, 0x0f, 0x1b, 0x12, 0x12, 0x1b, 0x0f, 0x7a, +0xd2, 0xde, 0x80, 0x10, 0x20, 0x14, 0x14, 0x20, +0x10, 0x80, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfe, +0x01, 0x96, 0x01, 0x2d, 0x03, 0x46, 0x00, 0x0f, +0x00, 0x1d, 0x00, 0xb8, 0x00, 0x01, 0x2f, 0xb8, +0x00, 0x0f, 0x2f, 0xba, 0x00, 0x06, 0x00, 0x01, +0x00, 0x0f, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x01, +0x10, 0xb8, 0x00, 0x0b, 0xd0, 0x30, 0x31, 0x13, +0x03, 0x33, 0x17, 0x1e, 0x01, 0x17, 0x33, 0x3e, +0x01, 0x3f, 0x01, 0x33, 0x03, 0x15, 0x23, 0x83, +0x85, 0x29, 0x40, 0x0b, 0x17, 0x0c, 0x03, 0x0c, +0x17, 0x0b, 0x3f, 0x28, 0x84, 0x26, 0x02, 0x43, +0x01, 0x03, 0x83, 0x18, 0x2d, 0x19, 0x19, 0x2d, +0x18, 0x83, 0xfe, 0xfd, 0xad, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x1e, 0x01, 0x96, 0x01, 0x46, +0x03, 0x46, 0x00, 0x09, 0x00, 0x27, 0x00, 0xb8, +0x00, 0x03, 0x2f, 0xb8, 0x00, 0x08, 0x2f, 0xb8, +0x00, 0x06, 0xdc, 0xb8, 0x00, 0x00, 0xd0, 0xb8, +0x00, 0x00, 0x2f, 0xb8, 0x00, 0x03, 0x10, 0xb8, +0x00, 0x01, 0xdc, 0xb8, 0x00, 0x05, 0xd0, 0xb8, +0x00, 0x05, 0x2f, 0x30, 0x31, 0x1b, 0x01, 0x23, +0x35, 0x21, 0x15, 0x03, 0x33, 0x15, 0x21, 0x1e, +0xf6, 0xe0, 0x01, 0x0f, 0xf6, 0xf9, 0xfe, 0xd8, +0x01, 0xac, 0x01, 0x79, 0x21, 0x17, 0xfe, 0x87, +0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x2a, +0x01, 0x8e, 0x01, 0x1d, 0x02, 0xdb, 0x00, 0x1b, +0x00, 0x24, 0x00, 0x35, 0x00, 0xb8, 0x00, 0x00, +0x2f, 0xb8, 0x00, 0x12, 0x2f, 0xba, 0x00, 0x06, +0x00, 0x1f, 0x00, 0x03, 0x2b, 0xb8, 0x00, 0x12, +0x10, 0xb8, 0x00, 0x0b, 0xdc, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x17, 0xd0, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x1c, 0xdc, 0xba, 0x00, 0x19, +0x00, 0x00, 0x00, 0x1c, 0x11, 0x12, 0x39, 0x30, +0x31, 0x13, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, +0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, +0x3e, 0x01, 0x33, 0x32, 0x16, 0x1d, 0x01, 0x23, +0x27, 0x23, 0x0e, 0x01, 0x27, 0x32, 0x37, 0x35, +0x0e, 0x01, 0x15, 0x14, 0x16, 0x8b, 0x2b, 0x36, +0x62, 0x6c, 0x07, 0x10, 0x1a, 0x15, 0x1e, 0x3c, +0x11, 0x0f, 0x14, 0x43, 0x27, 0x3a, 0x2d, 0x1e, +0x06, 0x04, 0x15, 0x35, 0x17, 0x30, 0x34, 0x5d, +0x4a, 0x24, 0x01, 0x8e, 0x2f, 0x2c, 0x35, 0x36, +0x0b, 0x13, 0x22, 0x19, 0x0e, 0x19, 0x0c, 0x1b, +0x0d, 0x1d, 0x44, 0x39, 0xc8, 0x27, 0x12, 0x1d, +0x20, 0x31, 0x66, 0x0b, 0x2c, 0x22, 0x20, 0x1e, +0x00, 0x02, 0x00, 0x3a, 0x01, 0x8e, 0x01, 0x4a, +0x03, 0x6e, 0x00, 0x14, 0x00, 0x20, 0x00, 0x4c, +0x00, 0xb8, 0x00, 0x00, 0x2f, 0xb8, 0x00, 0x07, +0x2f, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0d, 0x2f, 0x1b, 0xb9, 0x00, 0x0d, 0x00, 0x13, +0x3e, 0x59, 0xba, 0x00, 0x03, 0x00, 0x00, 0x00, +0x0d, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, 0x10, +0xb8, 0x00, 0x06, 0xd0, 0xb8, 0x00, 0x06, 0x2f, +0xba, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x00, 0x11, +0x12, 0x39, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, +0x15, 0xdc, 0xb8, 0x00, 0x0d, 0x10, 0xb8, 0x00, +0x1b, 0xdc, 0x30, 0x31, 0x13, 0x22, 0x26, 0x27, +0x23, 0x07, 0x23, 0x11, 0x33, 0x15, 0x07, 0x3e, +0x01, 0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, +0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, +0x07, 0x15, 0x1e, 0x01, 0xbe, 0x17, 0x31, 0x17, +0x04, 0x04, 0x1d, 0x25, 0x02, 0x19, 0x33, 0x1f, +0x42, 0x40, 0x16, 0x27, 0x33, 0x1d, 0x2c, 0x3a, +0x2d, 0x33, 0x2f, 0x35, 0x18, 0x32, 0x01, 0x8e, +0x14, 0x12, 0x1e, 0x01, 0xd8, 0x86, 0x3f, 0x15, +0x1d, 0x56, 0x4a, 0x29, 0x40, 0x2d, 0x17, 0x21, +0x4b, 0x40, 0x39, 0x47, 0x32, 0xb2, 0x15, 0x12, +0x00, 0x01, 0x00, 0x21, 0x01, 0x8e, 0x01, 0x1c, +0x02, 0xdb, 0x00, 0x1d, 0x00, 0x1b, 0x00, 0xb8, +0x00, 0x0a, 0x2f, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x0a, 0x10, 0xb8, 0x00, 0x11, 0xdc, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x17, 0xdc, 0x30, +0x31, 0x13, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, 0x01, +0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, +0x36, 0x37, 0x17, 0x0e, 0x01, 0xb7, 0x21, 0x37, +0x28, 0x16, 0x19, 0x29, 0x36, 0x1e, 0x22, 0x2d, +0x10, 0x13, 0x11, 0x21, 0x1a, 0x30, 0x3f, 0x3e, +0x32, 0x1c, 0x27, 0x10, 0x11, 0x12, 0x2f, 0x01, +0x8e, 0x16, 0x2b, 0x3e, 0x28, 0x28, 0x3e, 0x2a, +0x16, 0x16, 0x0d, 0x1a, 0x0e, 0x0f, 0x4b, 0x3b, +0x3c, 0x4a, 0x11, 0x0d, 0x19, 0x0f, 0x17, 0x00, +0x00, 0x02, 0x00, 0x25, 0x01, 0x8e, 0x01, 0x35, +0x03, 0x6e, 0x00, 0x14, 0x00, 0x23, 0x00, 0x3b, +0x00, 0xb8, 0x00, 0x00, 0x2f, 0xb8, 0x00, 0x08, +0x2f, 0xb8, 0x00, 0x0d, 0x2f, 0xb8, 0x00, 0x08, +0x10, 0xb8, 0x00, 0x1c, 0xdc, 0xba, 0x00, 0x0b, +0x00, 0x1c, 0x00, 0x08, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x10, 0xd0, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x15, 0xdc, 0xba, +0x00, 0x12, 0x00, 0x00, 0x00, 0x15, 0x11, 0x12, +0x39, 0x30, 0x31, 0x13, 0x22, 0x26, 0x35, 0x34, +0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x27, 0x35, +0x33, 0x11, 0x23, 0x27, 0x23, 0x0e, 0x01, 0x27, +0x32, 0x36, 0x37, 0x35, 0x2e, 0x01, 0x23, 0x22, +0x0e, 0x02, 0x15, 0x14, 0x16, 0xae, 0x40, 0x49, +0x17, 0x27, 0x33, 0x1c, 0x1b, 0x2e, 0x17, 0x02, +0x25, 0x1e, 0x06, 0x04, 0x14, 0x2d, 0x18, 0x17, +0x2b, 0x1a, 0x18, 0x2f, 0x16, 0x15, 0x25, 0x1d, +0x10, 0x32, 0x01, 0x8e, 0x59, 0x54, 0x25, 0x3b, +0x2a, 0x16, 0x14, 0x11, 0x39, 0x7f, 0xfe, 0x28, +0x25, 0x12, 0x1b, 0x21, 0x1a, 0x17, 0xb3, 0x15, +0x13, 0x13, 0x23, 0x2f, 0x1b, 0x41, 0x4b, 0x00, +0x00, 0x02, 0x00, 0x1f, 0x01, 0x8e, 0x01, 0x2d, +0x02, 0xdb, 0x00, 0x1c, 0x00, 0x25, 0x00, 0x31, +0x00, 0xb8, 0x00, 0x0a, 0x2f, 0xb8, 0x00, 0x00, +0x2f, 0xba, 0x00, 0x13, 0x00, 0x0a, 0x00, 0x00, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x13, 0x2f, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x16, 0xdc, 0xb8, +0x00, 0x13, 0x10, 0xb8, 0x00, 0x1d, 0xdc, 0xb8, +0x00, 0x0a, 0x10, 0xb8, 0x00, 0x22, 0xdc, 0x30, +0x31, 0x13, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x1c, 0x01, +0x07, 0x23, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x37, +0x17, 0x0e, 0x01, 0x37, 0x34, 0x2e, 0x02, 0x23, +0x22, 0x06, 0x07, 0xb6, 0x20, 0x37, 0x28, 0x18, +0x17, 0x27, 0x34, 0x1e, 0x26, 0x31, 0x1c, 0x0b, +0x02, 0xe6, 0x01, 0x3e, 0x35, 0x1a, 0x2d, 0x11, +0x10, 0x14, 0x34, 0x31, 0x09, 0x16, 0x23, 0x19, +0x2c, 0x38, 0x06, 0x01, 0x8e, 0x16, 0x2a, 0x3e, +0x29, 0x26, 0x3e, 0x2b, 0x17, 0x1e, 0x2b, 0x32, +0x13, 0x08, 0x0b, 0x0c, 0x39, 0x47, 0x11, 0x0c, +0x1b, 0x0d, 0x15, 0xbe, 0x13, 0x28, 0x20, 0x14, +0x3c, 0x33, 0x00, 0x00, 0x00, 0x01, 0x00, 0x15, +0x01, 0x96, 0x00, 0xc9, 0x03, 0x77, 0x00, 0x17, +0x00, 0x2b, 0x00, 0xb8, 0x00, 0x14, 0x2f, 0xb8, +0x00, 0x0b, 0x2f, 0xb8, 0x00, 0x07, 0x2f, 0xb8, +0x00, 0x14, 0x10, 0xb8, 0x00, 0x03, 0xdc, 0xb8, +0x00, 0x07, 0x10, 0xb8, 0x00, 0x0a, 0xdc, 0xb8, +0x00, 0x0d, 0xd0, 0xb8, 0x00, 0x07, 0x10, 0xb8, +0x00, 0x10, 0xd0, 0x30, 0x31, 0x13, 0x2e, 0x01, +0x23, 0x22, 0x06, 0x1d, 0x01, 0x33, 0x15, 0x23, +0x11, 0x23, 0x11, 0x23, 0x35, 0x37, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x17, 0xc0, 0x08, 0x12, +0x0d, 0x19, 0x18, 0x4a, 0x4a, 0x25, 0x2e, 0x2e, +0x2a, 0x2a, 0x0e, 0x16, 0x0e, 0x03, 0x4f, 0x03, +0x05, 0x27, 0x1d, 0x40, 0x1e, 0xfe, 0xe1, 0x01, +0x1f, 0x1c, 0x02, 0x3c, 0x30, 0x38, 0x04, 0x06, +0x00, 0x03, 0x00, 0x22, 0x00, 0xff, 0x01, 0x42, +0x02, 0xdb, 0x00, 0x34, 0x00, 0x40, 0x00, 0x4f, +0x00, 0x58, 0x00, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x15, 0x2f, +0x1b, 0xb9, 0x00, 0x15, 0x00, 0x13, 0x3e, 0x59, +0xba, 0x00, 0x48, 0x00, 0x2c, 0x00, 0x03, 0x2b, +0xba, 0x00, 0x35, 0x00, 0x23, 0x00, 0x03, 0x2b, +0xba, 0x00, 0x05, 0x00, 0x2c, 0x00, 0x48, 0x11, +0x12, 0x39, 0xba, 0x00, 0x0c, 0x00, 0x35, 0x00, +0x23, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x15, 0x10, +0xb8, 0x00, 0x19, 0xd0, 0xb8, 0x00, 0x15, 0x10, +0xb8, 0x00, 0x3b, 0xdc, 0xb8, 0x00, 0x1a, 0xd0, +0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x41, 0xdc, +0x30, 0x31, 0x37, 0x22, 0x26, 0x35, 0x34, 0x37, +0x35, 0x2e, 0x01, 0x35, 0x34, 0x36, 0x37, 0x35, +0x2e, 0x01, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, +0x16, 0x17, 0x33, 0x15, 0x23, 0x1e, 0x01, 0x15, +0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x0e, +0x01, 0x15, 0x14, 0x16, 0x3b, 0x01, 0x32, 0x16, +0x15, 0x14, 0x0e, 0x02, 0x03, 0x32, 0x36, 0x35, +0x34, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, +0x17, 0x32, 0x36, 0x35, 0x34, 0x26, 0x2b, 0x01, +0x22, 0x26, 0x27, 0x06, 0x15, 0x14, 0x16, 0xa5, +0x3d, 0x46, 0x2e, 0x0c, 0x10, 0x18, 0x0b, 0x10, +0x19, 0x12, 0x20, 0x2b, 0x18, 0x10, 0x17, 0x0b, +0x69, 0x46, 0x0e, 0x11, 0x12, 0x20, 0x2a, 0x18, +0x0d, 0x1b, 0x0c, 0x0a, 0x0e, 0x1a, 0x22, 0x43, +0x38, 0x34, 0x16, 0x28, 0x3b, 0x26, 0x20, 0x31, +0x31, 0x20, 0x23, 0x2e, 0x2e, 0x2b, 0x33, 0x3f, +0x25, 0x23, 0x40, 0x07, 0x17, 0x0b, 0x27, 0x35, +0xff, 0x2e, 0x2a, 0x2a, 0x1f, 0x04, 0x08, 0x1a, +0x12, 0x14, 0x1d, 0x08, 0x04, 0x0c, 0x2c, 0x1d, +0x19, 0x2a, 0x1e, 0x10, 0x04, 0x05, 0x20, 0x0b, +0x28, 0x15, 0x19, 0x2a, 0x1e, 0x11, 0x06, 0x07, +0x07, 0x14, 0x0e, 0x11, 0x15, 0x23, 0x28, 0x15, +0x27, 0x1e, 0x12, 0x01, 0x18, 0x2e, 0x25, 0x26, +0x2c, 0x2b, 0x27, 0x25, 0x2e, 0xf9, 0x2c, 0x1d, +0x18, 0x13, 0x01, 0x03, 0x18, 0x22, 0x1d, 0x21, +0x00, 0x01, 0x00, 0x3a, 0x01, 0x96, 0x01, 0x32, +0x03, 0x6e, 0x00, 0x14, 0x00, 0x1b, 0x00, 0xb8, +0x00, 0x06, 0x2f, 0xb8, 0x00, 0x13, 0x2f, 0xb8, +0x00, 0x0b, 0x2f, 0xb8, 0x00, 0x01, 0x2f, 0xb8, +0x00, 0x06, 0x10, 0xb8, 0x00, 0x0f, 0xdc, 0x30, +0x31, 0x13, 0x33, 0x15, 0x07, 0x3e, 0x01, 0x33, +0x32, 0x16, 0x1d, 0x01, 0x23, 0x35, 0x34, 0x26, +0x23, 0x22, 0x06, 0x07, 0x15, 0x23, 0x3a, 0x25, +0x01, 0x16, 0x39, 0x20, 0x39, 0x2c, 0x26, 0x1c, +0x2d, 0x16, 0x31, 0x1d, 0x25, 0x03, 0x6e, 0x85, +0x46, 0x17, 0x21, 0x43, 0x36, 0xcc, 0xc5, 0x2b, +0x34, 0x1b, 0x1d, 0xec, 0x00, 0x02, 0x00, 0x2e, +0x01, 0x96, 0x00, 0x6e, 0x03, 0x5a, 0x00, 0x0b, +0x00, 0x0f, 0x00, 0x13, 0x00, 0xb8, 0x00, 0x0e, +0x2f, 0xb8, 0x00, 0x0d, 0x2f, 0xb8, 0x00, 0x00, +0xdc, 0xb8, 0x00, 0x06, 0xdc, 0x30, 0x31, 0x13, +0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, +0x15, 0x14, 0x06, 0x07, 0x33, 0x11, 0x23, 0x4e, +0x0e, 0x12, 0x12, 0x0e, 0x0e, 0x12, 0x12, 0x22, +0x25, 0x25, 0x03, 0x1c, 0x11, 0x0e, 0x0d, 0x12, +0x12, 0x0d, 0x0e, 0x11, 0x49, 0xfe, 0xc3, 0x00, +0x00, 0x02, 0xff, 0xea, 0x01, 0x00, 0x00, 0x70, +0x03, 0x5a, 0x00, 0x0f, 0x00, 0x1b, 0x00, 0x1f, +0x00, 0xb8, 0x00, 0x00, 0x2f, 0xb8, 0x00, 0x0c, +0x2f, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x07, +0xdc, 0xb8, 0x00, 0x0c, 0x10, 0xb8, 0x00, 0x10, +0xdc, 0xb8, 0x00, 0x16, 0xdc, 0x30, 0x31, 0x13, +0x22, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, +0x36, 0x35, 0x11, 0x33, 0x11, 0x14, 0x06, 0x13, +0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, +0x15, 0x14, 0x06, 0x15, 0x0e, 0x11, 0x0c, 0x0a, +0x07, 0x0c, 0x0a, 0x1a, 0x11, 0x25, 0x26, 0x15, +0x0e, 0x12, 0x12, 0x0e, 0x0e, 0x12, 0x12, 0x01, +0x00, 0x03, 0x05, 0x20, 0x03, 0x03, 0x23, 0x1d, +0x01, 0x71, 0xfe, 0x93, 0x35, 0x31, 0x02, 0x1c, +0x11, 0x0e, 0x0d, 0x12, 0x12, 0x0d, 0x0e, 0x11, +0x00, 0x01, 0x00, 0x3a, 0x01, 0x96, 0x01, 0x38, +0x03, 0x6e, 0x00, 0x0c, 0x00, 0x31, 0x00, 0xb8, +0x00, 0x0b, 0x2f, 0xb8, 0x00, 0x08, 0x2f, 0xb8, +0x00, 0x04, 0x2f, 0xb8, 0x00, 0x01, 0x2f, 0xba, +0x00, 0x02, 0x00, 0x0b, 0x00, 0x01, 0x11, 0x12, +0x39, 0xba, 0x00, 0x06, 0x00, 0x01, 0x00, 0x0b, +0x11, 0x12, 0x39, 0xba, 0x00, 0x09, 0x00, 0x0b, +0x00, 0x01, 0x11, 0x12, 0x39, 0x30, 0x31, 0x13, +0x33, 0x11, 0x33, 0x37, 0x33, 0x07, 0x17, 0x23, +0x27, 0x07, 0x15, 0x23, 0x3a, 0x25, 0x04, 0x97, +0x2d, 0x6c, 0x7d, 0x2c, 0x69, 0x44, 0x25, 0x03, +0x6e, 0xfe, 0xb1, 0xb4, 0x7f, 0xbe, 0xa2, 0x50, +0x52, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3a, +0x01, 0x8e, 0x00, 0x84, 0x03, 0x6e, 0x00, 0x0e, +0x00, 0x0f, 0x00, 0xb8, 0x00, 0x04, 0x2f, 0xb8, +0x00, 0x00, 0x2f, 0xb8, 0x00, 0x08, 0xdc, 0x30, +0x31, 0x13, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, +0x14, 0x33, 0x3a, 0x01, 0x37, 0x17, 0x0e, 0x01, +0x6a, 0x1a, 0x16, 0x25, 0x10, 0x03, 0x06, 0x05, +0x07, 0x05, 0x0c, 0x01, 0x8e, 0x1f, 0x1e, 0x01, +0xa3, 0xfe, 0x57, 0x16, 0x02, 0x1f, 0x02, 0x02, +0x00, 0x01, 0x00, 0x3a, 0x01, 0x96, 0x01, 0xee, +0x02, 0xdb, 0x00, 0x22, 0x00, 0x43, 0x00, 0xb8, +0x00, 0x21, 0x2f, 0xb8, 0x00, 0x06, 0x2f, 0xb8, +0x00, 0x01, 0xd0, 0xba, 0x00, 0x02, 0x00, 0x06, +0x00, 0x21, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x06, +0x10, 0xb8, 0x00, 0x0b, 0xd0, 0xba, 0x00, 0x08, +0x00, 0x0b, 0x00, 0x19, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x21, 0x10, 0xb8, 0x00, 0x18, 0xd0, 0xb8, +0x00, 0x0f, 0xd0, 0xb8, 0x00, 0x06, 0x10, 0xb8, +0x00, 0x1d, 0xdc, 0xb8, 0x00, 0x14, 0xd0, 0x30, +0x31, 0x13, 0x33, 0x17, 0x33, 0x3e, 0x01, 0x33, +0x32, 0x17, 0x3e, 0x01, 0x33, 0x32, 0x16, 0x1d, +0x01, 0x23, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, +0x07, 0x15, 0x23, 0x35, 0x34, 0x26, 0x23, 0x22, +0x06, 0x07, 0x15, 0x23, 0x3a, 0x1d, 0x05, 0x04, +0x14, 0x31, 0x20, 0x46, 0x13, 0x17, 0x38, 0x20, +0x35, 0x2c, 0x25, 0x1d, 0x29, 0x15, 0x2b, 0x1c, +0x26, 0x1d, 0x29, 0x15, 0x2a, 0x1d, 0x25, 0x02, +0xd3, 0x2f, 0x17, 0x20, 0x3f, 0x1a, 0x25, 0x43, +0x36, 0xcc, 0xc5, 0x2b, 0x34, 0x1b, 0x1d, 0xec, +0xc5, 0x2b, 0x34, 0x1b, 0x1d, 0xec, 0x00, 0x00, +0x00, 0x01, 0x00, 0x3a, 0x01, 0x96, 0x01, 0x32, +0x02, 0xdb, 0x00, 0x14, 0x00, 0x2d, 0x00, 0xb8, +0x00, 0x06, 0x2f, 0xb8, 0x00, 0x13, 0x2f, 0xb8, +0x00, 0x06, 0x10, 0xb8, 0x00, 0x01, 0xd0, 0xba, +0x00, 0x02, 0x00, 0x06, 0x00, 0x13, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x13, 0x10, 0xb8, 0x00, 0x0a, +0xd0, 0xb8, 0x00, 0x06, 0x10, 0xb8, 0x00, 0x0f, +0xdc, 0x30, 0x31, 0x13, 0x33, 0x17, 0x33, 0x3e, +0x01, 0x33, 0x32, 0x16, 0x1d, 0x01, 0x23, 0x35, +0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x15, 0x23, +0x3a, 0x1d, 0x05, 0x04, 0x16, 0x37, 0x20, 0x39, +0x2c, 0x26, 0x1c, 0x2b, 0x17, 0x32, 0x1d, 0x25, +0x02, 0xd3, 0x2f, 0x17, 0x20, 0x43, 0x36, 0xcc, +0xc5, 0x2b, 0x34, 0x1b, 0x1d, 0xec, 0x00, 0x00, +0x00, 0x02, 0x00, 0x21, 0x01, 0x8e, 0x01, 0x45, +0x02, 0xdb, 0x00, 0x13, 0x00, 0x1f, 0x00, 0x17, +0x00, 0xb8, 0x00, 0x0a, 0x2f, 0xb8, 0x00, 0x00, +0x2f, 0xb8, 0x00, 0x14, 0xdc, 0xb8, 0x00, 0x0a, +0x10, 0xb8, 0x00, 0x1a, 0xdc, 0x30, 0x31, 0x13, +0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, +0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x27, +0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, +0x15, 0x14, 0x16, 0xb3, 0x1e, 0x36, 0x27, 0x17, +0x17, 0x27, 0x36, 0x1e, 0x1e, 0x36, 0x27, 0x17, +0x17, 0x27, 0x36, 0x1e, 0x31, 0x3a, 0x3a, 0x31, +0x30, 0x3b, 0x3b, 0x01, 0x8e, 0x17, 0x2b, 0x3e, +0x27, 0x28, 0x3e, 0x2a, 0x16, 0x16, 0x2a, 0x3e, +0x28, 0x27, 0x3e, 0x2b, 0x17, 0x21, 0x4a, 0x3c, +0x3c, 0x4a, 0x4a, 0x3c, 0x3c, 0x4a, 0x00, 0x00, +0x00, 0x02, 0x00, 0x3a, 0x01, 0x0b, 0x01, 0x4a, +0x02, 0xdb, 0x00, 0x14, 0x00, 0x20, 0x00, 0x48, +0x00, 0xb8, 0x00, 0x14, 0x2f, 0xb8, 0x00, 0x0e, +0x2f, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, 0x00, 0x13, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0xd0, 0xb8, 0x00, +0x00, 0x2f, 0xba, 0x00, 0x02, 0x00, 0x06, 0x00, +0x0e, 0x11, 0x12, 0x39, 0xba, 0x00, 0x11, 0x00, +0x0e, 0x00, 0x06, 0x11, 0x12, 0x39, 0xb8, 0x00, +0x0e, 0x10, 0xb8, 0x00, 0x15, 0xdc, 0xb8, 0x00, +0x06, 0x10, 0xb8, 0x00, 0x1b, 0xdc, 0x30, 0x31, +0x13, 0x33, 0x17, 0x33, 0x3e, 0x01, 0x33, 0x32, +0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, +0x27, 0x17, 0x15, 0x23, 0x37, 0x32, 0x36, 0x35, +0x34, 0x26, 0x23, 0x22, 0x07, 0x15, 0x1e, 0x01, +0x3a, 0x1d, 0x06, 0x04, 0x15, 0x33, 0x1f, 0x42, +0x40, 0x16, 0x27, 0x33, 0x1c, 0x17, 0x34, 0x16, +0x02, 0x25, 0x83, 0x2c, 0x3a, 0x2d, 0x33, 0x2f, +0x35, 0x18, 0x32, 0x02, 0xd3, 0x27, 0x12, 0x1d, +0x56, 0x4a, 0x29, 0x40, 0x2d, 0x17, 0x14, 0x12, +0x3c, 0x6d, 0xa4, 0x4b, 0x40, 0x39, 0x47, 0x32, +0xb2, 0x15, 0x12, 0x00, 0x00, 0x02, 0x00, 0x25, +0x01, 0x0b, 0x01, 0x35, 0x02, 0xdb, 0x00, 0x14, +0x00, 0x22, 0x00, 0x3b, 0x00, 0xb8, 0x00, 0x0c, +0x2f, 0xb8, 0x00, 0x04, 0x2f, 0xb8, 0x00, 0x14, +0x2f, 0xba, 0x00, 0x01, 0x00, 0x04, 0x00, 0x0c, +0x11, 0x12, 0x39, 0xba, 0x00, 0x0f, 0x00, 0x0c, +0x00, 0x04, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x0c, +0x10, 0xb8, 0x00, 0x11, 0xd0, 0xb8, 0x00, 0x04, +0x10, 0xb8, 0x00, 0x15, 0xdc, 0xb8, 0x00, 0x0c, +0x10, 0xb8, 0x00, 0x1b, 0xdc, 0x30, 0x31, 0x01, +0x37, 0x0e, 0x01, 0x23, 0x22, 0x26, 0x35, 0x34, +0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x33, 0x37, +0x33, 0x11, 0x23, 0x27, 0x32, 0x37, 0x35, 0x2e, +0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, +0x01, 0x10, 0x02, 0x14, 0x32, 0x1d, 0x41, 0x49, +0x17, 0x27, 0x33, 0x1c, 0x1b, 0x2f, 0x13, 0x04, +0x05, 0x1d, 0x25, 0x5c, 0x2b, 0x31, 0x18, 0x2f, +0x16, 0x15, 0x25, 0x1d, 0x10, 0x32, 0x01, 0x7c, +0x3d, 0x14, 0x17, 0x58, 0x4f, 0x27, 0x3e, 0x2a, +0x17, 0x14, 0x12, 0x1e, 0xfe, 0x38, 0xa4, 0x2b, +0xb9, 0x15, 0x12, 0x13, 0x23, 0x31, 0x1e, 0x3c, +0x4a, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3a, +0x01, 0x96, 0x00, 0xdf, 0x02, 0xdb, 0x00, 0x12, +0x00, 0x25, 0x00, 0xb8, 0x00, 0x06, 0x2f, 0xb8, +0x00, 0x11, 0x2f, 0xb8, 0x00, 0x06, 0x10, 0xb8, +0x00, 0x01, 0xd0, 0xba, 0x00, 0x02, 0x00, 0x06, +0x00, 0x11, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x06, +0x10, 0xb8, 0x00, 0x0d, 0xdc, 0x30, 0x31, 0x13, +0x33, 0x17, 0x33, 0x3e, 0x01, 0x33, 0x32, 0x16, +0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, 0x06, 0x07, +0x15, 0x23, 0x3a, 0x1d, 0x07, 0x03, 0x13, 0x2b, +0x1d, 0x0a, 0x13, 0x06, 0x09, 0x05, 0x10, 0x08, +0x17, 0x2e, 0x13, 0x27, 0x02, 0xd3, 0x38, 0x1f, +0x21, 0x03, 0x03, 0x23, 0x02, 0x02, 0x21, 0x2b, +0xd4, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x15, +0x01, 0x8e, 0x00, 0xfc, 0x02, 0xdb, 0x00, 0x2f, +0x00, 0x3c, 0x00, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x19, 0x2f, +0x1b, 0xb9, 0x00, 0x19, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x07, 0xdc, +0xba, 0x00, 0x0f, 0x00, 0x19, 0x00, 0x00, 0x11, +0x12, 0x39, 0xb8, 0x00, 0x19, 0x10, 0xb8, 0x00, +0x20, 0xdc, 0xba, 0x00, 0x28, 0x00, 0x00, 0x00, +0x19, 0x11, 0x12, 0x39, 0x30, 0x31, 0x13, 0x22, +0x26, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, +0x35, 0x34, 0x2e, 0x02, 0x27, 0x2e, 0x03, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x07, +0x2e, 0x01, 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, +0x02, 0x17, 0x1e, 0x03, 0x15, 0x14, 0x06, 0x90, +0x25, 0x3f, 0x17, 0x15, 0x16, 0x30, 0x20, 0x21, +0x25, 0x0d, 0x16, 0x1c, 0x0e, 0x12, 0x23, 0x1d, +0x12, 0x0d, 0x1a, 0x26, 0x19, 0x1f, 0x31, 0x13, +0x16, 0x12, 0x21, 0x1a, 0x20, 0x20, 0x0c, 0x15, +0x1b, 0x0f, 0x12, 0x25, 0x1d, 0x12, 0x3c, 0x01, +0x8e, 0x1a, 0x12, 0x1b, 0x11, 0x16, 0x22, 0x17, +0x0d, 0x14, 0x0f, 0x0c, 0x05, 0x07, 0x0f, 0x16, +0x1e, 0x15, 0x10, 0x1e, 0x18, 0x0e, 0x13, 0x0e, +0x1b, 0x0e, 0x0e, 0x1f, 0x13, 0x0e, 0x12, 0x0e, +0x0b, 0x06, 0x07, 0x0e, 0x15, 0x1e, 0x16, 0x2a, +0x34, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x12, +0x01, 0x8e, 0x00, 0xd2, 0x03, 0x30, 0x00, 0x16, +0x00, 0x3c, 0x00, 0xb8, 0x00, 0x00, 0x2f, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, 0x2f, +0x1b, 0xb9, 0x00, 0x07, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x04, 0xdc, 0xb8, 0x00, 0x07, 0x10, +0xb8, 0x00, 0x09, 0xdc, 0xb8, 0x00, 0x07, 0x10, +0xb8, 0x00, 0x0b, 0xd0, 0xb8, 0x00, 0x04, 0x10, +0xb8, 0x00, 0x0c, 0xd0, 0xb8, 0x00, 0x00, 0x10, +0xb8, 0x00, 0x11, 0xdc, 0x30, 0x31, 0x13, 0x22, +0x26, 0x3d, 0x01, 0x23, 0x35, 0x3f, 0x01, 0x33, +0x15, 0x33, 0x15, 0x23, 0x15, 0x14, 0x16, 0x33, +0x32, 0x37, 0x17, 0x0e, 0x01, 0x99, 0x31, 0x24, +0x32, 0x33, 0x05, 0x20, 0x5d, 0x5d, 0x18, 0x1e, +0x12, 0x16, 0x0a, 0x0d, 0x20, 0x01, 0x8e, 0x38, +0x2e, 0xbf, 0x1e, 0x02, 0x5d, 0x5d, 0x20, 0xc1, +0x1f, 0x25, 0x0a, 0x1e, 0x05, 0x07, 0x00, 0x00, +0x00, 0x01, 0x00, 0x39, 0x01, 0x8e, 0x01, 0x31, +0x02, 0xd3, 0x00, 0x16, 0x00, 0x3e, 0x00, 0xb8, +0x00, 0x00, 0x2f, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x04, 0x2f, 0x1b, 0xb9, 0x00, 0x04, +0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x10, +0xb8, 0x00, 0x0b, 0xdc, 0xb8, 0x00, 0x04, 0x10, +0xb8, 0x00, 0x0f, 0xd0, 0xb8, 0x00, 0x00, 0x10, +0xb8, 0x00, 0x11, 0xd0, 0xb8, 0x00, 0x11, 0x2f, +0xba, 0x00, 0x13, 0x00, 0x00, 0x00, 0x04, 0x11, +0x12, 0x39, 0x30, 0x31, 0x13, 0x22, 0x26, 0x3d, +0x01, 0x33, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, +0x36, 0x37, 0x35, 0x33, 0x11, 0x23, 0x27, 0x23, +0x0e, 0x01, 0x9e, 0x39, 0x2c, 0x26, 0x06, 0x10, +0x1b, 0x16, 0x17, 0x32, 0x1d, 0x25, 0x1d, 0x05, +0x04, 0x16, 0x37, 0x01, 0x8e, 0x43, 0x36, 0xcc, +0xc5, 0x15, 0x23, 0x19, 0x0e, 0x1b, 0x1e, 0xeb, +0xfe, 0xc3, 0x2f, 0x17, 0x20, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x08, 0x01, 0x96, 0x01, 0x25, +0x02, 0xd3, 0x00, 0x09, 0x00, 0x26, 0x00, 0xb8, +0x00, 0x09, 0x2f, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x13, 0x3e, 0x59, 0xba, 0x00, 0x03, 0x00, +0x00, 0x00, 0x09, 0x11, 0x12, 0x39, 0xb8, 0x00, +0x06, 0xd0, 0x30, 0x31, 0x13, 0x33, 0x1f, 0x01, +0x33, 0x3f, 0x01, 0x33, 0x03, 0x23, 0x08, 0x27, +0x44, 0x21, 0x04, 0x23, 0x44, 0x26, 0x78, 0x2e, +0x02, 0xd3, 0xbe, 0x5d, 0x5d, 0xbe, 0xfe, 0xc3, +0x00, 0x01, 0x00, 0x10, 0x01, 0x96, 0x01, 0xc2, +0x02, 0xd3, 0x00, 0x15, 0x00, 0x46, 0x00, 0xb8, +0x00, 0x15, 0x2f, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x13, 0x3e, 0x59, 0xba, 0x00, 0x03, 0x00, +0x00, 0x00, 0x15, 0x11, 0x12, 0x39, 0xb8, 0x00, +0x06, 0xd0, 0xb8, 0x00, 0x0c, 0xd0, 0xb8, 0x00, +0x15, 0x10, 0xb8, 0x00, 0x0f, 0xd0, 0xba, 0x00, +0x09, 0x00, 0x0c, 0x00, 0x0f, 0x11, 0x12, 0x39, +0xba, 0x00, 0x12, 0x00, 0x00, 0x00, 0x0f, 0x11, +0x12, 0x39, 0x30, 0x31, 0x13, 0x33, 0x1f, 0x01, +0x33, 0x3f, 0x01, 0x33, 0x1f, 0x01, 0x33, 0x3f, +0x01, 0x33, 0x03, 0x23, 0x2f, 0x01, 0x23, 0x0f, +0x01, 0x23, 0x10, 0x29, 0x34, 0x17, 0x04, 0x17, +0x36, 0x28, 0x38, 0x17, 0x04, 0x19, 0x33, 0x26, +0x5c, 0x30, 0x33, 0x19, 0x02, 0x17, 0x35, 0x2f, +0x02, 0xd3, 0xc5, 0x57, 0x57, 0xc5, 0xc5, 0x57, +0x57, 0xc5, 0xfe, 0xc3, 0xba, 0x5b, 0x5b, 0xba, +0x00, 0x01, 0x00, 0x08, 0x01, 0x96, 0x01, 0x11, +0x02, 0xd3, 0x00, 0x11, 0x00, 0x50, 0x00, 0xb8, +0x00, 0x11, 0x2f, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x01, 0x2f, 0x1b, 0xb9, 0x00, 0x01, +0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x11, 0x10, +0xb8, 0x00, 0x0b, 0xd0, 0xb8, 0x00, 0x01, 0x10, +0xb8, 0x00, 0x07, 0xd0, 0xba, 0x00, 0x04, 0x00, +0x0b, 0x00, 0x07, 0x11, 0x12, 0x39, 0xba, 0x00, +0x0e, 0x00, 0x01, 0x00, 0x11, 0x11, 0x12, 0x39, +0xba, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0e, 0x11, +0x12, 0x39, 0xba, 0x00, 0x09, 0x00, 0x0d, 0x00, +0x04, 0x11, 0x12, 0x39, 0x30, 0x31, 0x13, 0x27, +0x33, 0x1f, 0x01, 0x33, 0x3f, 0x01, 0x33, 0x07, +0x17, 0x23, 0x2f, 0x01, 0x23, 0x0f, 0x01, 0x23, +0x77, 0x65, 0x2b, 0x31, 0x21, 0x04, 0x1f, 0x2e, +0x2a, 0x64, 0x6b, 0x2b, 0x33, 0x25, 0x04, 0x26, +0x33, 0x29, 0x02, 0x3c, 0x97, 0x4a, 0x34, 0x34, +0x4a, 0x9a, 0xa3, 0x50, 0x39, 0x39, 0x50, 0x00, +0x00, 0x01, 0x00, 0x08, 0x01, 0x0a, 0x01, 0x23, +0x02, 0xd3, 0x00, 0x1a, 0x00, 0x3c, 0x00, 0xb8, +0x00, 0x00, 0x2f, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x0a, 0x2f, 0x1b, 0xb9, 0x00, 0x0a, +0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x10, +0xb8, 0x00, 0x05, 0xdc, 0xba, 0x00, 0x09, 0x00, +0x0a, 0x00, 0x00, 0x11, 0x12, 0x39, 0xba, 0x00, +0x0f, 0x00, 0x0a, 0x00, 0x00, 0x11, 0x12, 0x39, +0xb8, 0x00, 0x0a, 0x10, 0xb8, 0x00, 0x14, 0xd0, +0x30, 0x31, 0x13, 0x22, 0x27, 0x37, 0x16, 0x33, +0x32, 0x36, 0x3f, 0x01, 0x03, 0x33, 0x17, 0x1e, +0x01, 0x17, 0x33, 0x3e, 0x01, 0x3f, 0x01, 0x33, +0x03, 0x0e, 0x03, 0x36, 0x14, 0x10, 0x09, 0x0d, +0x0d, 0x1c, 0x28, 0x0b, 0x08, 0x84, 0x27, 0x4a, +0x08, 0x12, 0x09, 0x04, 0x07, 0x10, 0x08, 0x3e, +0x26, 0x7a, 0x08, 0x14, 0x1c, 0x24, 0x01, 0x0a, +0x06, 0x22, 0x06, 0x2c, 0x23, 0x18, 0x01, 0x40, +0xbc, 0x14, 0x30, 0x19, 0x18, 0x2e, 0x17, 0xbc, +0xfe, 0xa5, 0x16, 0x28, 0x1e, 0x12, 0x00, 0x00, +0x00, 0x01, 0x00, 0x13, 0x01, 0x96, 0x01, 0x03, +0x02, 0xd3, 0x00, 0x09, 0x00, 0x27, 0x00, 0xb8, +0x00, 0x03, 0x2f, 0xb8, 0x00, 0x08, 0x2f, 0xb8, +0x00, 0x06, 0xdc, 0xb8, 0x00, 0x00, 0xd0, 0xb8, +0x00, 0x00, 0x2f, 0xb8, 0x00, 0x03, 0x10, 0xb8, +0x00, 0x01, 0xdc, 0xb8, 0x00, 0x05, 0xd0, 0xb8, +0x00, 0x05, 0x2f, 0x30, 0x31, 0x1b, 0x01, 0x23, +0x35, 0x33, 0x15, 0x03, 0x33, 0x15, 0x23, 0x13, +0xb9, 0xa4, 0xd5, 0xb9, 0xbf, 0xf0, 0x01, 0xab, +0x01, 0x08, 0x20, 0x16, 0xfe, 0xf9, 0x20, 0x00, +0x00, 0x01, 0x00, 0x12, 0x01, 0x96, 0x01, 0x12, +0x03, 0x77, 0x00, 0x17, 0x00, 0x11, 0x00, 0xb8, +0x00, 0x17, 0x2f, 0xbb, 0x00, 0x08, 0x00, 0x01, +0x00, 0x0f, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x2e, 0x03, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, +0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, 0x06, 0x15, +0x14, 0x16, 0x17, 0x15, 0x23, 0x87, 0x1a, 0x2a, +0x20, 0x11, 0x4e, 0x3a, 0x2d, 0x39, 0x12, 0x15, +0x10, 0x2e, 0x23, 0x30, 0x34, 0x38, 0x3c, 0x25, +0x02, 0x5a, 0x10, 0x21, 0x26, 0x2d, 0x1d, 0x3d, +0x3f, 0x24, 0x15, 0x19, 0x14, 0x1e, 0x31, 0x2a, +0x2e, 0x40, 0x20, 0xd8, 0x00, 0x02, 0x00, 0x36, +0x00, 0x00, 0x00, 0xa5, 0x01, 0xc0, 0x00, 0x03, +0x00, 0x07, 0x00, 0x24, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x02, 0x2f, 0x1b, 0xb9, +0x00, 0x02, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, +0x05, 0x00, 0x06, 0x00, 0x03, 0x2b, 0xb8, 0x00, +0x02, 0x10, 0xb8, 0x00, 0x00, 0xdc, 0x30, 0x31, +0x37, 0x33, 0x17, 0x23, 0x11, 0x33, 0x07, 0x23, +0x69, 0x09, 0x33, 0x6f, 0x6f, 0x33, 0x09, 0x6b, +0x6b, 0x01, 0xc0, 0x6a, 0x00, 0x01, 0x00, 0x36, +0x01, 0x03, 0x00, 0xa5, 0x01, 0x6d, 0x00, 0x03, +0x00, 0x0b, 0x00, 0xba, 0x00, 0x01, 0x00, 0x02, +0x00, 0x03, 0x2b, 0x30, 0x31, 0x13, 0x33, 0x07, +0x23, 0x36, 0x6f, 0x33, 0x09, 0x01, 0x6d, 0x6a, +0x00, 0x01, 0xff, 0xaa, 0x00, 0xe8, 0x00, 0x94, +0x01, 0x7a, 0x00, 0x11, 0x00, 0x0d, 0x00, 0xbb, +0x00, 0x0b, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, +0x2b, 0x30, 0x31, 0x37, 0x22, 0x26, 0x27, 0x07, +0x35, 0x37, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x37, +0x17, 0x0e, 0x01, 0x5a, 0x1e, 0x2b, 0x0a, 0x5d, +0x79, 0x04, 0x0c, 0x0e, 0x12, 0x0a, 0x0c, 0x13, +0x07, 0x11, 0x0a, 0x1c, 0xe8, 0x2c, 0x33, 0x22, +0x25, 0x30, 0x23, 0x2c, 0x18, 0x08, 0x0a, 0x06, +0x1c, 0x08, 0x0f, 0x00, 0x00, 0x02, 0x00, 0x08, +0x00, 0xfe, 0x01, 0x21, 0x02, 0xd3, 0x00, 0x0c, +0x00, 0x25, 0x00, 0x50, 0x00, 0xb8, 0x00, 0x13, +0x2f, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x1a, 0x2f, 0x1b, 0xb9, 0x00, 0x1a, 0x00, 0x13, +0x3e, 0x59, 0xba, 0x00, 0x00, 0x00, 0x1a, 0x00, +0x13, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x13, 0x10, +0xb8, 0x00, 0x06, 0xdc, 0xba, 0x00, 0x1f, 0x00, +0x13, 0x00, 0x1a, 0x11, 0x12, 0x39, 0xba, 0x00, +0x0d, 0x00, 0x00, 0x00, 0x1f, 0x11, 0x12, 0x39, +0xba, 0x00, 0x19, 0x00, 0x1f, 0x00, 0x00, 0x11, +0x12, 0x39, 0xb8, 0x00, 0x1a, 0x10, 0xb8, 0x00, +0x24, 0xd0, 0x30, 0x31, 0x13, 0x0e, 0x01, 0x15, +0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, +0x27, 0x37, 0x1e, 0x01, 0x15, 0x14, 0x06, 0x23, +0x22, 0x26, 0x35, 0x34, 0x36, 0x37, 0x03, 0x33, +0x17, 0x1e, 0x01, 0x17, 0x33, 0x3e, 0x01, 0x3f, +0x01, 0x33, 0x94, 0x0c, 0x0e, 0x0d, 0x0e, 0x0f, +0x0d, 0x0e, 0x0c, 0x17, 0x11, 0x15, 0x20, 0x1f, +0x1e, 0x20, 0x15, 0x11, 0x75, 0x27, 0x45, 0x08, +0x10, 0x08, 0x03, 0x08, 0x10, 0x08, 0x45, 0x25, +0x01, 0x99, 0x18, 0x30, 0x11, 0x10, 0x16, 0x16, +0x10, 0x13, 0x2e, 0x18, 0x16, 0x25, 0x31, 0x17, +0x1e, 0x26, 0x26, 0x1e, 0x17, 0x31, 0x26, 0x01, +0x23, 0xb9, 0x16, 0x27, 0x15, 0x15, 0x27, 0x16, +0xb9, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1f, +0x01, 0x8c, 0x01, 0x2d, 0x03, 0x8c, 0x00, 0x03, +0x00, 0x20, 0x00, 0x29, 0x00, 0x39, 0x00, 0xb8, +0x00, 0x0e, 0x2f, 0xb8, 0x00, 0x04, 0x2f, 0xba, +0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x2b, 0xba, +0x00, 0x16, 0x00, 0x0e, 0x00, 0x04, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x16, 0x2f, 0xb8, 0x00, 0x04, +0x10, 0xb8, 0x00, 0x1a, 0xdc, 0xb8, 0x00, 0x0e, +0x10, 0xb8, 0x00, 0x26, 0xdc, 0xb8, 0x00, 0x16, +0x10, 0xb8, 0x00, 0x29, 0xdc, 0x30, 0x31, 0x13, +0x37, 0x17, 0x07, 0x03, 0x22, 0x2e, 0x02, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, +0x1c, 0x01, 0x07, 0x23, 0x1e, 0x01, 0x33, 0x32, +0x36, 0x37, 0x17, 0x0e, 0x01, 0x37, 0x34, 0x2e, +0x02, 0x23, 0x22, 0x06, 0x07, 0x59, 0x1d, 0x63, +0x18, 0x0b, 0x20, 0x37, 0x28, 0x18, 0x17, 0x27, +0x34, 0x1e, 0x26, 0x31, 0x1c, 0x0b, 0x02, 0xe6, +0x01, 0x3e, 0x35, 0x1a, 0x2d, 0x11, 0x10, 0x14, +0x34, 0x31, 0x09, 0x16, 0x23, 0x19, 0x2c, 0x38, +0x06, 0x03, 0x74, 0x18, 0x71, 0x15, 0xfe, 0x86, +0x16, 0x2a, 0x3e, 0x29, 0x26, 0x3e, 0x2b, 0x17, +0x1e, 0x2b, 0x32, 0x13, 0x08, 0x0b, 0x0c, 0x39, +0x47, 0x11, 0x0c, 0x1b, 0x0d, 0x15, 0xbe, 0x13, +0x28, 0x20, 0x14, 0x3c, 0x33, 0x00, 0x00, 0x00, +0x00, 0x03, 0x00, 0x1f, 0x01, 0x8e, 0x01, 0x2d, +0x03, 0x8c, 0x00, 0x03, 0x00, 0x20, 0x00, 0x29, +0x00, 0x39, 0x00, 0xb8, 0x00, 0x0e, 0x2f, 0xb8, +0x00, 0x04, 0x2f, 0xba, 0x00, 0x01, 0x00, 0x03, +0x00, 0x03, 0x2b, 0xba, 0x00, 0x16, 0x00, 0x0e, +0x00, 0x04, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x16, +0x2f, 0xb8, 0x00, 0x04, 0x10, 0xb8, 0x00, 0x1a, +0xdc, 0xb8, 0x00, 0x0e, 0x10, 0xb8, 0x00, 0x26, +0xdc, 0xb8, 0x00, 0x16, 0x10, 0xb8, 0x00, 0x29, +0xdc, 0x30, 0x31, 0x13, 0x37, 0x17, 0x07, 0x13, +0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, +0x32, 0x1e, 0x02, 0x15, 0x1c, 0x01, 0x07, 0x23, +0x1e, 0x01, 0x33, 0x32, 0x36, 0x37, 0x17, 0x0e, +0x01, 0x37, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, +0x07, 0x87, 0x63, 0x1d, 0x68, 0x17, 0x20, 0x37, +0x28, 0x18, 0x17, 0x27, 0x34, 0x1e, 0x26, 0x31, +0x1c, 0x0b, 0x02, 0xe6, 0x01, 0x3e, 0x35, 0x1a, +0x2d, 0x11, 0x10, 0x14, 0x34, 0x31, 0x09, 0x16, +0x23, 0x19, 0x2c, 0x38, 0x06, 0x03, 0x1b, 0x71, +0x18, 0x6e, 0xfe, 0x88, 0x16, 0x2a, 0x3e, 0x29, +0x26, 0x3e, 0x2b, 0x17, 0x1e, 0x2b, 0x32, 0x13, +0x08, 0x0b, 0x0c, 0x39, 0x47, 0x11, 0x0c, 0x1b, +0x0d, 0x15, 0xbe, 0x13, 0x28, 0x20, 0x14, 0x3c, +0x33, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1b, +0x01, 0x8e, 0x01, 0x29, 0x02, 0xdb, 0x00, 0x18, +0x00, 0x1f, 0x00, 0x31, 0x00, 0xb8, 0x00, 0x13, +0x2f, 0xb8, 0x00, 0x00, 0x2f, 0xba, 0x00, 0x08, +0x00, 0x13, 0x00, 0x00, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x08, 0x2f, 0xb8, 0x00, 0x13, 0x10, 0xb8, +0x00, 0x0c, 0xdc, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x19, 0xdc, 0xb8, 0x00, 0x08, 0x10, 0xb8, +0x00, 0x1c, 0xdc, 0x30, 0x31, 0x13, 0x22, 0x2e, +0x02, 0x35, 0x34, 0x36, 0x37, 0x33, 0x36, 0x26, +0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, 0x01, 0x33, +0x32, 0x16, 0x15, 0x14, 0x06, 0x27, 0x32, 0x36, +0x37, 0x23, 0x14, 0x16, 0x9d, 0x27, 0x32, 0x1d, +0x0c, 0x01, 0x02, 0xe5, 0x01, 0x35, 0x36, 0x1b, +0x29, 0x12, 0x10, 0x14, 0x30, 0x22, 0x43, 0x4d, +0x4f, 0x3d, 0x2c, 0x37, 0x03, 0xc5, 0x2c, 0x01, +0x8e, 0x1e, 0x2c, 0x34, 0x15, 0x08, 0x0c, 0x0c, +0x35, 0x45, 0x11, 0x0c, 0x1b, 0x0d, 0x15, 0x55, +0x51, 0x4e, 0x59, 0x20, 0x3a, 0x3b, 0x30, 0x45, +0x00, 0x02, 0x00, 0x25, 0x01, 0x8e, 0x01, 0x35, +0x02, 0xdb, 0x00, 0x14, 0x00, 0x23, 0x00, 0x50, +0x00, 0xb8, 0x00, 0x00, 0x2f, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, 0x1b, 0xb9, +0x00, 0x08, 0x00, 0x13, 0x3e, 0x59, 0xba, 0x00, +0x0c, 0x00, 0x08, 0x00, 0x00, 0x11, 0x12, 0x39, +0xb8, 0x00, 0x0e, 0xd0, 0xb8, 0x00, 0x0e, 0x2f, +0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x0f, 0xd0, +0xb8, 0x00, 0x0f, 0x2f, 0xba, 0x00, 0x11, 0x00, +0x00, 0x00, 0x08, 0x11, 0x12, 0x39, 0xb8, 0x00, +0x00, 0x10, 0xb8, 0x00, 0x15, 0xdc, 0xb8, 0x00, +0x08, 0x10, 0xb8, 0x00, 0x1c, 0xdc, 0x30, 0x31, +0x13, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, +0x32, 0x16, 0x17, 0x33, 0x37, 0x33, 0x11, 0x23, +0x27, 0x23, 0x0e, 0x01, 0x27, 0x32, 0x36, 0x37, +0x35, 0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, +0x14, 0x16, 0xae, 0x40, 0x49, 0x17, 0x27, 0x33, +0x1c, 0x1b, 0x2e, 0x14, 0x04, 0x05, 0x1d, 0x1f, +0x05, 0x04, 0x14, 0x2d, 0x18, 0x17, 0x2b, 0x1a, +0x18, 0x2f, 0x16, 0x15, 0x25, 0x1d, 0x10, 0x32, +0x01, 0x8e, 0x59, 0x52, 0x25, 0x3c, 0x2a, 0x17, +0x14, 0x12, 0x1e, 0xfe, 0xc3, 0x25, 0x12, 0x1b, +0x22, 0x19, 0x17, 0xb3, 0x15, 0x13, 0x13, 0x23, +0x2f, 0x1b, 0x41, 0x4a, 0x00, 0x02, 0x00, 0x25, +0x01, 0x00, 0x01, 0x35, 0x02, 0xdb, 0x00, 0x1f, +0x00, 0x2e, 0x00, 0x50, 0x00, 0xb8, 0x00, 0x00, +0x2f, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x17, 0x2f, 0x1b, 0xb9, 0x00, 0x17, 0x00, 0x13, +0x3e, 0x59, 0xba, 0x00, 0x20, 0x00, 0x0f, 0x00, +0x03, 0x2b, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, +0x07, 0xdc, 0xba, 0x00, 0x0c, 0x00, 0x0f, 0x00, +0x17, 0x11, 0x12, 0x39, 0xba, 0x00, 0x19, 0x00, +0x17, 0x00, 0x0f, 0x11, 0x12, 0x39, 0xb8, 0x00, +0x17, 0x10, 0xb8, 0x00, 0x1c, 0xd0, 0xb8, 0x00, +0x1c, 0x2f, 0xb8, 0x00, 0x17, 0x10, 0xb8, 0x00, +0x27, 0xdc, 0x30, 0x31, 0x13, 0x22, 0x26, 0x27, +0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x3d, 0x01, +0x37, 0x0e, 0x01, 0x23, 0x22, 0x26, 0x35, 0x34, +0x3e, 0x02, 0x33, 0x32, 0x17, 0x33, 0x37, 0x33, +0x11, 0x14, 0x06, 0x27, 0x32, 0x36, 0x37, 0x35, +0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, +0x16, 0xac, 0x1f, 0x39, 0x19, 0x10, 0x17, 0x31, +0x1a, 0x30, 0x33, 0x02, 0x18, 0x2e, 0x1d, 0x41, +0x49, 0x17, 0x27, 0x34, 0x1c, 0x32, 0x2b, 0x03, +0x05, 0x1d, 0x48, 0x39, 0x17, 0x2c, 0x19, 0x18, +0x2f, 0x15, 0x15, 0x26, 0x1d, 0x10, 0x32, 0x01, +0x00, 0x13, 0x11, 0x1d, 0x10, 0x0f, 0x36, 0x2d, +0x12, 0x32, 0x14, 0x1c, 0x57, 0x49, 0x25, 0x3c, +0x2a, 0x17, 0x26, 0x1e, 0xfe, 0xae, 0x3b, 0x46, +0xbc, 0x18, 0x17, 0xa8, 0x15, 0x12, 0x13, 0x22, +0x2f, 0x1b, 0x39, 0x46, 0x00, 0x01, 0x00, 0x3a, +0x01, 0x96, 0x00, 0x5f, 0x03, 0x6e, 0x00, 0x03, +0x00, 0x0b, 0x00, 0xb8, 0x00, 0x01, 0x2f, 0xb8, +0x00, 0x02, 0x2f, 0x30, 0x31, 0x13, 0x33, 0x11, +0x23, 0x3a, 0x25, 0x25, 0x03, 0x6e, 0xfe, 0x28, +0x00, 0x02, 0x00, 0x2c, 0x01, 0x8e, 0x00, 0x73, +0x02, 0xc5, 0x00, 0x0b, 0x00, 0x17, 0x00, 0x13, +0x00, 0xba, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, +0x2b, 0xba, 0x00, 0x12, 0x00, 0x0c, 0x00, 0x03, +0x2b, 0x30, 0x31, 0x13, 0x22, 0x26, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x27, +0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, +0x15, 0x14, 0x06, 0x4f, 0x0f, 0x14, 0x14, 0x0f, +0x10, 0x14, 0x14, 0x10, 0x0f, 0x14, 0x14, 0x0f, +0x10, 0x14, 0x14, 0x01, 0x8e, 0x14, 0x12, 0x11, +0x14, 0x14, 0x11, 0x12, 0x14, 0xec, 0x14, 0x12, +0x11, 0x14, 0x14, 0x11, 0x12, 0x14, 0x00, 0x00, +0x00, 0x01, 0x00, 0x28, 0x02, 0x49, 0x00, 0xbe, +0x02, 0x68, 0x00, 0x03, 0x00, 0x0b, 0x00, 0xba, +0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x2b, 0x30, +0x31, 0x13, 0x33, 0x15, 0x23, 0x28, 0x96, 0x96, +0x02, 0x68, 0x1f, 0x00, 0x00, 0x01, 0x00, 0x28, +0x02, 0x4c, 0x01, 0x34, 0x02, 0x68, 0x00, 0x03, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x02, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x21, 0x15, 0x21, 0x28, 0x01, 0x0c, 0xfe, 0xf4, +0x02, 0x68, 0x1c, 0x00, 0x00, 0x01, 0x00, 0x28, +0x02, 0x4c, 0x02, 0x0a, 0x02, 0x68, 0x00, 0x03, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x02, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x21, 0x15, 0x21, 0x28, 0x01, 0xe2, 0xfe, 0x1e, +0x02, 0x68, 0x1c, 0x00, 0x00, 0x02, 0x00, 0x2a, +0x01, 0xbf, 0x01, 0x0e, 0x02, 0xac, 0x00, 0x13, +0x00, 0x1f, 0x00, 0x17, 0x00, 0xbb, 0x00, 0x14, +0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x2b, 0xbb, +0x00, 0x0a, 0x00, 0x01, 0x00, 0x1a, 0x00, 0x04, +0x2b, 0x30, 0x31, 0x13, 0x22, 0x2e, 0x02, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, +0x14, 0x0e, 0x02, 0x27, 0x32, 0x36, 0x35, 0x34, +0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x9c, +0x16, 0x29, 0x20, 0x13, 0x13, 0x20, 0x29, 0x16, +0x16, 0x29, 0x20, 0x13, 0x13, 0x20, 0x29, 0x16, +0x23, 0x2d, 0x2d, 0x23, 0x23, 0x2d, 0x2d, 0x01, +0xbf, 0x10, 0x1e, 0x2c, 0x1c, 0x1c, 0x2c, 0x1f, +0x10, 0x10, 0x1f, 0x2c, 0x1c, 0x1c, 0x2c, 0x1e, +0x10, 0x20, 0x31, 0x25, 0x26, 0x32, 0x32, 0x26, +0x25, 0x31, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1f, +0x00, 0x72, 0x01, 0xc0, 0x02, 0x22, 0x00, 0x22, +0x00, 0x36, 0x00, 0x4a, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, 0x1b, 0xb9, +0x00, 0x08, 0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0d, 0x2f, 0x1b, +0xb9, 0x00, 0x0d, 0x00, 0x0b, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x12, 0x2f, +0x1b, 0xb9, 0x00, 0x12, 0x00, 0x0b, 0x3e, 0x59, +0xbb, 0x00, 0x23, 0x00, 0x01, 0x00, 0x1f, 0x00, +0x04, 0x2b, 0xb8, 0x00, 0x0d, 0x10, 0xb9, 0x00, +0x2d, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x3f, 0x01, +0x2e, 0x01, 0x35, 0x34, 0x36, 0x37, 0x27, 0x37, +0x17, 0x3e, 0x01, 0x33, 0x32, 0x16, 0x17, 0x37, +0x17, 0x07, 0x1e, 0x01, 0x15, 0x14, 0x06, 0x07, +0x17, 0x07, 0x27, 0x0e, 0x01, 0x23, 0x22, 0x27, +0x07, 0x37, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, +0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, +0x02, 0x1f, 0x41, 0x12, 0x14, 0x14, 0x12, 0x41, +0x1a, 0x42, 0x17, 0x3d, 0x20, 0x20, 0x3d, 0x17, +0x43, 0x1a, 0x42, 0x12, 0x14, 0x14, 0x11, 0x41, +0x1a, 0x43, 0x17, 0x3d, 0x20, 0x42, 0x32, 0x42, +0xb6, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, +0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, +0x8e, 0x43, 0x18, 0x3c, 0x23, 0x25, 0x3d, 0x18, +0x44, 0x1c, 0x45, 0x15, 0x17, 0x17, 0x15, 0x45, +0x1c, 0x44, 0x18, 0x3d, 0x25, 0x23, 0x3c, 0x18, +0x43, 0x1c, 0x44, 0x16, 0x17, 0x2d, 0x44, 0x3c, +0x17, 0x28, 0x39, 0x22, 0x22, 0x3a, 0x29, 0x17, +0x17, 0x29, 0x3a, 0x22, 0x22, 0x39, 0x28, 0x17, +0x00, 0x01, 0x00, 0x3b, 0xff, 0x92, 0x01, 0xa3, +0x02, 0xed, 0x00, 0x31, 0x00, 0x87, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x2b, 0x2f, +0x1b, 0xb9, 0x00, 0x2b, 0x00, 0x0f, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x15, +0x2f, 0x1b, 0xb9, 0x00, 0x15, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x2b, 0x10, 0xb9, 0x00, 0x05, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x08, 0x00, 0x15, +0x00, 0x2b, 0x11, 0x12, 0x39, 0xba, 0x00, 0x0f, +0x00, 0x2b, 0x00, 0x15, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x15, 0x10, 0xb8, 0x00, 0x12, 0xd0, 0xb8, +0x00, 0x15, 0x10, 0xb9, 0x00, 0x13, 0x00, 0x02, +0xf4, 0xb8, 0x00, 0x15, 0x10, 0xb9, 0x00, 0x1c, +0x00, 0x01, 0xf4, 0xba, 0x00, 0x1f, 0x00, 0x2b, +0x00, 0x15, 0x11, 0x12, 0x39, 0xba, 0x00, 0x26, +0x00, 0x15, 0x00, 0x2b, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x2b, 0x10, 0xb8, 0x00, 0x2d, 0xd0, 0xb8, +0x00, 0x2d, 0x2f, 0xb8, 0x00, 0x2b, 0x10, 0xb8, +0x00, 0x2e, 0xd0, 0x30, 0x31, 0x01, 0x2e, 0x03, +0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, 0x04, 0x15, +0x14, 0x06, 0x07, 0x15, 0x23, 0x35, 0x2e, 0x01, +0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x35, +0x34, 0x2e, 0x04, 0x35, 0x34, 0x3e, 0x02, 0x37, +0x35, 0x33, 0x15, 0x1e, 0x01, 0x17, 0x01, 0x78, +0x0e, 0x1b, 0x1e, 0x24, 0x17, 0x34, 0x40, 0x2b, +0x40, 0x4b, 0x40, 0x2b, 0x57, 0x43, 0x27, 0x34, +0x56, 0x1d, 0x18, 0x1d, 0x50, 0x34, 0x3f, 0x43, +0x2b, 0x40, 0x4b, 0x40, 0x2b, 0x15, 0x26, 0x34, +0x1e, 0x27, 0x31, 0x3e, 0x1a, 0x02, 0x28, 0x0e, +0x16, 0x10, 0x08, 0x41, 0x32, 0x2c, 0x35, 0x27, +0x21, 0x2f, 0x47, 0x39, 0x48, 0x56, 0x06, 0x63, +0x63, 0x04, 0x2d, 0x1c, 0x1f, 0x1a, 0x2c, 0x44, +0x37, 0x31, 0x3d, 0x2b, 0x22, 0x2c, 0x3f, 0x33, +0x1f, 0x36, 0x29, 0x1a, 0x03, 0x63, 0x63, 0x03, +0x28, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x36, +0x00, 0x00, 0x01, 0xac, 0x02, 0x8b, 0x00, 0x2c, +0x00, 0x5b, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x13, 0x2f, 0x1b, 0xb9, 0x00, 0x13, +0x00, 0x0f, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x02, 0x2f, 0x1b, 0xb9, 0x00, +0x02, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, 0x09, +0x00, 0x01, 0x00, 0x0d, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x02, 0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x03, 0xd0, 0xb8, 0x00, 0x03, +0x2f, 0xb8, 0x00, 0x13, 0x10, 0xb9, 0x00, 0x1a, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0d, 0x10, 0xb8, +0x00, 0x23, 0xd0, 0xb8, 0x00, 0x09, 0x10, 0xb8, +0x00, 0x24, 0xd0, 0x30, 0x31, 0x25, 0x15, 0x21, +0x35, 0x3e, 0x01, 0x35, 0x34, 0x26, 0x27, 0x23, +0x35, 0x37, 0x33, 0x2e, 0x01, 0x35, 0x34, 0x36, +0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, 0x01, 0x23, +0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x17, 0x33, +0x15, 0x23, 0x1e, 0x01, 0x15, 0x14, 0x06, 0x07, +0x15, 0x01, 0xac, 0xfe, 0x8d, 0x38, 0x32, 0x05, +0x04, 0x64, 0x42, 0x18, 0x0b, 0x15, 0x5b, 0x4f, +0x34, 0x45, 0x17, 0x1d, 0x15, 0x36, 0x28, 0x1f, +0x2f, 0x1f, 0x10, 0x15, 0x0b, 0xa5, 0x9d, 0x04, +0x04, 0x26, 0x22, 0x28, 0x28, 0x1b, 0x20, 0x68, +0x3a, 0x13, 0x24, 0x11, 0x21, 0x03, 0x26, 0x4b, +0x27, 0x4f, 0x5b, 0x2a, 0x1d, 0x1b, 0x19, 0x22, +0x14, 0x24, 0x30, 0x1b, 0x28, 0x49, 0x27, 0x24, +0x11, 0x23, 0x14, 0x3e, 0x52, 0x21, 0x04, 0x00, +0x00, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x01, 0xc1, +0x02, 0x7f, 0x00, 0x1d, 0x00, 0x6b, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, +0x1b, 0xb9, 0x00, 0x08, 0x00, 0x0f, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1d, +0x2f, 0x1b, 0xb9, 0x00, 0x1d, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x06, 0x00, 0x05, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x05, 0x10, 0xb8, 0x00, 0x02, +0xd0, 0xb8, 0x00, 0x01, 0xd0, 0xba, 0x00, 0x0d, +0x00, 0x08, 0x00, 0x1d, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x08, 0x10, 0xb8, 0x00, 0x12, 0xd0, 0xb8, +0x00, 0x06, 0x10, 0xb8, 0x00, 0x15, 0xd0, 0xb8, +0x00, 0x05, 0x10, 0xb8, 0x00, 0x16, 0xd0, 0xb8, +0x00, 0x02, 0x10, 0xb8, 0x00, 0x19, 0xd0, 0xb8, +0x00, 0x01, 0x10, 0xb8, 0x00, 0x1a, 0xd0, 0x30, +0x31, 0x37, 0x23, 0x35, 0x33, 0x35, 0x23, 0x35, +0x33, 0x03, 0x33, 0x17, 0x1e, 0x01, 0x17, 0x33, +0x3e, 0x01, 0x3f, 0x01, 0x33, 0x03, 0x33, 0x15, +0x23, 0x15, 0x33, 0x15, 0x23, 0x15, 0x23, 0xd8, +0xa6, 0xa6, 0xa6, 0x98, 0xac, 0x30, 0x5e, 0x10, +0x20, 0x12, 0x04, 0x13, 0x1f, 0x11, 0x5e, 0x2e, +0xae, 0x9a, 0xa8, 0xa8, 0xa8, 0x2d, 0xa5, 0x22, +0x47, 0x21, 0x01, 0x50, 0xc1, 0x21, 0x43, 0x25, +0x25, 0x43, 0x21, 0xc1, 0xfe, 0xb0, 0x21, 0x47, +0x22, 0xa5, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1e, +0x00, 0x00, 0x01, 0xc1, 0x02, 0x7f, 0x00, 0x15, +0x00, 0x4f, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x04, 0x2f, 0x1b, 0xb9, 0x00, 0x04, +0x00, 0x0f, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x15, 0x2f, 0x1b, 0xb9, 0x00, +0x15, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x02, +0x00, 0x01, 0x00, 0x03, 0x2b, 0xba, 0x00, 0x09, +0x00, 0x04, 0x00, 0x15, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x04, 0x10, 0xb8, 0x00, 0x0e, 0xd0, 0xb8, +0x00, 0x02, 0x10, 0xb8, 0x00, 0x11, 0xd0, 0xb8, +0x00, 0x01, 0x10, 0xb8, 0x00, 0x12, 0xd0, 0x30, +0x31, 0x13, 0x23, 0x35, 0x33, 0x03, 0x33, 0x17, +0x1e, 0x01, 0x17, 0x33, 0x3e, 0x01, 0x3f, 0x01, +0x33, 0x03, 0x33, 0x15, 0x23, 0x11, 0x23, 0xd8, +0xa6, 0x9a, 0xae, 0x30, 0x5e, 0x10, 0x20, 0x12, +0x04, 0x13, 0x1f, 0x11, 0x5e, 0x2e, 0xb0, 0x9c, +0xa8, 0x2d, 0x01, 0x0a, 0x22, 0x01, 0x53, 0xc1, +0x21, 0x43, 0x25, 0x25, 0x43, 0x21, 0xc1, 0xfe, +0xad, 0x22, 0xfe, 0xf6, 0x00, 0x01, 0x00, 0x18, +0xff, 0xf4, 0x01, 0xda, 0x02, 0x8b, 0x00, 0x35, +0x00, 0x71, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x19, 0x2f, 0x1b, 0xb9, 0x00, 0x19, +0x00, 0x0f, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, +0x03, 0x00, 0x05, 0x3e, 0x59, 0xba, 0x00, 0x11, +0x00, 0x0b, 0x00, 0x03, 0x2b, 0xb8, 0x00, 0x0b, +0x10, 0xb8, 0x00, 0x08, 0xd0, 0xb8, 0x00, 0x11, +0x10, 0xb8, 0x00, 0x14, 0xd0, 0xb8, 0x00, 0x19, +0x10, 0xb9, 0x00, 0x20, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x14, 0x10, 0xb8, 0x00, 0x24, 0xd0, 0xb8, +0x00, 0x11, 0x10, 0xb8, 0x00, 0x25, 0xd0, 0xb8, +0x00, 0x0b, 0x10, 0xb8, 0x00, 0x2d, 0xd0, 0xb8, +0x00, 0x08, 0x10, 0xb8, 0x00, 0x2e, 0xd0, 0xb8, +0x00, 0x03, 0x10, 0xb9, 0x00, 0x32, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x25, 0x0e, 0x01, 0x23, 0x22, +0x2e, 0x02, 0x27, 0x23, 0x35, 0x37, 0x26, 0x34, +0x35, 0x3c, 0x01, 0x37, 0x23, 0x35, 0x37, 0x3e, +0x03, 0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, 0x01, +0x23, 0x22, 0x06, 0x07, 0x21, 0x15, 0x21, 0x06, +0x14, 0x15, 0x1c, 0x01, 0x17, 0x33, 0x15, 0x23, +0x1e, 0x01, 0x33, 0x32, 0x36, 0x37, 0x01, 0xda, +0x20, 0x4e, 0x38, 0x2c, 0x4a, 0x38, 0x26, 0x07, +0x41, 0x3e, 0x01, 0x01, 0x3e, 0x41, 0x07, 0x26, +0x3c, 0x51, 0x30, 0x2d, 0x4a, 0x16, 0x1d, 0x16, +0x37, 0x23, 0x50, 0x60, 0x0b, 0x01, 0x16, 0xfe, +0xe7, 0x01, 0x01, 0xf1, 0xee, 0x0d, 0x5a, 0x48, +0x2a, 0x3f, 0x1d, 0x52, 0x2c, 0x32, 0x24, 0x43, +0x5f, 0x3c, 0x1d, 0x04, 0x0b, 0x14, 0x0b, 0x09, +0x12, 0x08, 0x1d, 0x04, 0x3d, 0x61, 0x44, 0x24, +0x2e, 0x20, 0x1b, 0x1e, 0x25, 0x77, 0x69, 0x21, +0x08, 0x11, 0x09, 0x0b, 0x15, 0x0b, 0x21, 0x66, +0x76, 0x28, 0x29, 0x00, 0x00, 0x02, 0x00, 0x3e, +0xff, 0xe4, 0x01, 0xb3, 0x02, 0x8c, 0x00, 0x08, +0x00, 0x27, 0x00, 0x37, 0x00, 0xbb, 0x00, 0x19, +0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x2b, 0xbb, +0x00, 0x08, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x0f, 0x10, 0xb8, 0x00, 0x0c, +0xd0, 0xb8, 0x00, 0x19, 0x10, 0xb8, 0x00, 0x1c, +0xd0, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x23, +0xd0, 0xb8, 0x00, 0x08, 0x10, 0xb8, 0x00, 0x24, +0xd0, 0x30, 0x31, 0x13, 0x0e, 0x03, 0x15, 0x14, +0x16, 0x17, 0x37, 0x0e, 0x01, 0x07, 0x15, 0x23, +0x35, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x37, +0x35, 0x33, 0x15, 0x1e, 0x01, 0x17, 0x07, 0x2e, +0x01, 0x27, 0x11, 0x3e, 0x01, 0x37, 0xff, 0x20, +0x37, 0x27, 0x16, 0x4f, 0x45, 0xb4, 0x1d, 0x49, +0x2c, 0x22, 0x2a, 0x47, 0x33, 0x1d, 0x1e, 0x35, +0x46, 0x28, 0x22, 0x30, 0x40, 0x17, 0x18, 0x17, +0x36, 0x22, 0x25, 0x3e, 0x18, 0x01, 0xf6, 0x05, +0x20, 0x31, 0x42, 0x27, 0x4e, 0x66, 0x0a, 0x17, +0x1b, 0x23, 0x02, 0x6c, 0x6d, 0x04, 0x22, 0x3b, +0x52, 0x33, 0x34, 0x51, 0x3b, 0x22, 0x04, 0x6f, +0x6d, 0x02, 0x23, 0x17, 0x1c, 0x14, 0x1b, 0x02, +0xfe, 0x7f, 0x02, 0x1e, 0x16, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x0b, 0xff, 0x9e, 0x01, 0xbb, +0x02, 0x9f, 0x00, 0x28, 0x00, 0x31, 0x00, 0xbb, +0x00, 0x03, 0x00, 0x01, 0x00, 0x25, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x17, 0x00, 0x01, 0x00, 0x12, +0x00, 0x04, 0x2b, 0xbb, 0x00, 0x21, 0x00, 0x01, +0x00, 0x1d, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x21, +0x10, 0xb8, 0x00, 0x0a, 0xd0, 0xb8, 0x00, 0x1d, +0x10, 0xb8, 0x00, 0x0b, 0xd0, 0x30, 0x31, 0x01, +0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, 0x0f, 0x01, +0x33, 0x15, 0x23, 0x03, 0x0e, 0x03, 0x23, 0x22, +0x27, 0x37, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, +0x13, 0x23, 0x35, 0x37, 0x33, 0x37, 0x3e, 0x01, +0x33, 0x32, 0x16, 0x17, 0x01, 0xaf, 0x0c, 0x1d, +0x15, 0x1a, 0x24, 0x17, 0x0e, 0x03, 0x07, 0x8a, +0x8e, 0x1d, 0x05, 0x15, 0x24, 0x35, 0x24, 0x26, +0x1b, 0x0d, 0x18, 0x1c, 0x1b, 0x25, 0x1a, 0x0e, +0x04, 0x1c, 0x5f, 0x43, 0x20, 0x07, 0x0a, 0x44, +0x44, 0x19, 0x23, 0x0e, 0x02, 0x69, 0x05, 0x0a, +0x1b, 0x2d, 0x3a, 0x1e, 0x43, 0x25, 0xfe, 0xf6, +0x2e, 0x4a, 0x34, 0x1c, 0x10, 0x22, 0x0b, 0x19, +0x2c, 0x3c, 0x24, 0x01, 0x06, 0x21, 0x04, 0x3f, +0x5e, 0x6d, 0x0c, 0x06, 0x00, 0x03, 0x00, 0x41, +0xff, 0x92, 0x01, 0xc8, 0x02, 0xed, 0x00, 0x07, +0x00, 0x0e, 0x00, 0x35, 0x00, 0xa9, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x20, 0x2f, +0x1b, 0xb9, 0x00, 0x20, 0x00, 0x0f, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x23, +0x2f, 0x1b, 0xb9, 0x00, 0x23, 0x00, 0x0f, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x26, 0x2f, 0x1b, 0xb9, 0x00, 0x26, 0x00, 0x0f, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x28, 0x2f, 0x1b, 0xb9, 0x00, 0x28, 0x00, +0x0f, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x12, 0x2f, 0x1b, 0xb9, 0x00, 0x12, +0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x15, 0x2f, 0x1b, 0xb9, 0x00, +0x15, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, 0x02, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x26, 0x10, 0xb9, +0x00, 0x05, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x08, +0x00, 0x12, 0x00, 0x26, 0x11, 0x12, 0x39, 0xba, +0x00, 0x0e, 0x00, 0x12, 0x00, 0x26, 0x11, 0x12, +0x39, 0xba, 0x00, 0x17, 0x00, 0x15, 0x00, 0x02, +0x11, 0x12, 0x39, 0xba, 0x00, 0x31, 0x00, 0x12, +0x00, 0x26, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x02, +0x10, 0xb8, 0x00, 0x32, 0xd0, 0x30, 0x31, 0x37, +0x16, 0x17, 0x13, 0x26, 0x23, 0x22, 0x0f, 0x01, +0x0e, 0x01, 0x15, 0x14, 0x16, 0x17, 0x25, 0x0e, +0x01, 0x0f, 0x01, 0x23, 0x37, 0x26, 0x27, 0x07, +0x23, 0x37, 0x2e, 0x01, 0x35, 0x34, 0x36, 0x3f, +0x01, 0x33, 0x07, 0x36, 0x32, 0x33, 0x32, 0x17, +0x37, 0x33, 0x07, 0x1e, 0x01, 0x17, 0x07, 0x26, +0x27, 0x03, 0x3e, 0x01, 0x37, 0xcf, 0x1d, 0x24, +0x45, 0x11, 0x13, 0x10, 0x0f, 0x21, 0x3f, 0x42, +0x23, 0x20, 0x01, 0x15, 0x1e, 0x4c, 0x34, 0x0c, +0x1e, 0x0c, 0x26, 0x1c, 0x0e, 0x1f, 0x10, 0x33, +0x39, 0x60, 0x55, 0x0d, 0x1f, 0x0c, 0x07, 0x0d, +0x07, 0x15, 0x14, 0x0c, 0x1e, 0x0e, 0x17, 0x24, +0x0e, 0x1d, 0x16, 0x1a, 0x44, 0x26, 0x3b, 0x1c, +0x35, 0x16, 0x04, 0x02, 0x44, 0x06, 0x03, 0x08, +0x19, 0x92, 0x6d, 0x51, 0x7c, 0x26, 0x03, 0x2a, +0x32, 0x02, 0x62, 0x63, 0x05, 0x0f, 0x77, 0x89, +0x28, 0x97, 0x67, 0x84, 0xa8, 0x17, 0x69, 0x63, +0x01, 0x06, 0x68, 0x73, 0x0b, 0x20, 0x13, 0x1b, +0x20, 0x11, 0xfd, 0xc8, 0x02, 0x29, 0x26, 0x00, +0x00, 0x01, 0x00, 0x36, 0x00, 0x00, 0x01, 0xac, +0x02, 0x8b, 0x00, 0x39, 0x00, 0x6b, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x1a, 0x2f, +0x1b, 0xb9, 0x00, 0x1a, 0x00, 0x0f, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x02, +0x2f, 0x1b, 0xb9, 0x00, 0x02, 0x00, 0x05, 0x3e, +0x59, 0xb9, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xba, +0x00, 0x2b, 0x00, 0x1a, 0x00, 0x02, 0x11, 0x12, +0x39, 0xb8, 0x00, 0x2b, 0x2f, 0xb8, 0x00, 0x30, +0xd0, 0xb8, 0x00, 0x31, 0xd0, 0xb8, 0x00, 0x0a, +0xd0, 0xb8, 0x00, 0x30, 0x10, 0xb8, 0x00, 0x0b, +0xd0, 0xb8, 0x00, 0x2b, 0x10, 0xb8, 0x00, 0x11, +0xd0, 0xb8, 0x00, 0x2b, 0x10, 0xb8, 0x00, 0x2a, +0xd0, 0xb8, 0x00, 0x12, 0xd0, 0xb8, 0x00, 0x1a, +0x10, 0xb9, 0x00, 0x21, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x25, 0x15, 0x21, 0x35, 0x3e, 0x01, 0x35, +0x3c, 0x01, 0x27, 0x23, 0x35, 0x37, 0x33, 0x2e, +0x01, 0x27, 0x23, 0x35, 0x37, 0x33, 0x2e, 0x01, +0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x07, +0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, +0x16, 0x17, 0x33, 0x15, 0x23, 0x1e, 0x01, 0x17, +0x33, 0x15, 0x23, 0x16, 0x14, 0x15, 0x14, 0x06, +0x07, 0x15, 0x01, 0xac, 0xfe, 0x8d, 0x38, 0x32, +0x01, 0x6c, 0x41, 0x26, 0x04, 0x08, 0x05, 0x56, +0x3f, 0x0c, 0x07, 0x0a, 0x5b, 0x4f, 0x34, 0x45, +0x17, 0x1d, 0x15, 0x36, 0x28, 0x1f, 0x2f, 0x1f, +0x10, 0x0a, 0x08, 0xb3, 0xaa, 0x05, 0x08, 0x03, +0x9a, 0x96, 0x01, 0x26, 0x22, 0x28, 0x28, 0x1b, +0x20, 0x68, 0x3a, 0x06, 0x0d, 0x06, 0x1d, 0x05, +0x11, 0x20, 0x10, 0x1e, 0x04, 0x19, 0x33, 0x1a, +0x4f, 0x5b, 0x2a, 0x1d, 0x1b, 0x19, 0x22, 0x14, +0x24, 0x30, 0x1b, 0x1a, 0x32, 0x1a, 0x22, 0x10, +0x20, 0x11, 0x22, 0x06, 0x0c, 0x07, 0x3e, 0x52, +0x21, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x10, +0x00, 0x00, 0x01, 0xcb, 0x02, 0x7f, 0x00, 0x04, +0x00, 0x08, 0x00, 0x0c, 0x00, 0x11, 0x00, 0x2d, +0x00, 0xe1, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x25, 0x2f, 0x1b, 0xb9, 0x00, 0x25, +0x00, 0x0f, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x29, 0x2f, 0x1b, 0xb9, 0x00, +0x29, 0x00, 0x0f, 0x3e, 0x59, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x17, 0x2f, 0x1b, 0xb9, +0x00, 0x17, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x1b, 0x2f, 0x1b, +0xb9, 0x00, 0x1b, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x28, 0x00, 0x01, 0x00, 0x01, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x17, 0x10, 0xb9, +0x00, 0x07, 0x00, 0x02, 0xf4, 0xb8, 0x00, 0x04, +0x10, 0xb8, 0x00, 0x09, 0xd0, 0xb8, 0x00, 0x01, +0x10, 0xb8, 0x00, 0x0a, 0xd0, 0xb8, 0x00, 0x28, +0x10, 0xb8, 0x00, 0x0d, 0xd0, 0xba, 0x00, 0x0e, +0x00, 0x17, 0x00, 0x25, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x25, 0x10, 0xb9, 0x00, 0x10, 0x00, 0x02, +0xf4, 0xb8, 0x00, 0x01, 0x10, 0xb8, 0x00, 0x12, +0xd0, 0xb8, 0x00, 0x04, 0x10, 0xb8, 0x00, 0x13, +0xd0, 0xb8, 0x00, 0x05, 0x10, 0xb8, 0x00, 0x15, +0xd0, 0xb8, 0x00, 0x05, 0x10, 0xb8, 0x00, 0x19, +0xd0, 0xb8, 0x00, 0x05, 0x10, 0xb8, 0x00, 0x1d, +0xd0, 0xb8, 0x00, 0x04, 0x10, 0xb8, 0x00, 0x1f, +0xd0, 0xb8, 0x00, 0x1f, 0x2f, 0xb8, 0x00, 0x01, +0x10, 0xb8, 0x00, 0x21, 0xd0, 0xb8, 0x00, 0x28, +0x10, 0xb8, 0x00, 0x23, 0xd0, 0xb8, 0x00, 0x23, +0x2f, 0xb8, 0x00, 0x28, 0x10, 0xb8, 0x00, 0x2b, +0xd0, 0x30, 0x31, 0x01, 0x35, 0x23, 0x17, 0x33, +0x17, 0x23, 0x17, 0x33, 0x2f, 0x01, 0x23, 0x15, +0x27, 0x33, 0x2f, 0x01, 0x23, 0x05, 0x15, 0x33, +0x15, 0x23, 0x15, 0x23, 0x27, 0x23, 0x15, 0x23, +0x35, 0x23, 0x35, 0x37, 0x35, 0x23, 0x35, 0x37, +0x11, 0x33, 0x13, 0x33, 0x11, 0x33, 0x11, 0x33, +0x15, 0x01, 0x59, 0x5d, 0x18, 0x45, 0x01, 0x3a, +0x3d, 0x04, 0x77, 0x18, 0x4c, 0x01, 0x42, 0x07, +0x3e, 0x04, 0x01, 0x04, 0x49, 0x49, 0x36, 0x56, +0x70, 0x29, 0x4d, 0x4d, 0x4d, 0x4d, 0x36, 0x5e, +0x68, 0x29, 0x49, 0x01, 0x19, 0x3f, 0x44, 0x21, +0xbd, 0xde, 0x44, 0x44, 0x63, 0x15, 0xbe, 0xf2, +0x44, 0x21, 0xf3, 0xf3, 0xf3, 0xf3, 0x1d, 0x04, +0x44, 0x1b, 0x04, 0x01, 0x08, 0xfe, 0xf8, 0x01, +0x08, 0xfe, 0xf8, 0x1f, 0x00, 0x03, 0x00, 0x0e, +0x00, 0x00, 0x01, 0xd0, 0x02, 0x7f, 0x00, 0x05, +0x00, 0x0b, 0x00, 0x1f, 0x00, 0x6d, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x18, 0x2f, +0x1b, 0xb9, 0x00, 0x18, 0x00, 0x0f, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x13, +0x2f, 0x1b, 0xb9, 0x00, 0x13, 0x00, 0x05, 0x3e, +0x59, 0xbb, 0x00, 0x11, 0x00, 0x01, 0x00, 0x05, +0x00, 0x04, 0x2b, 0xb8, 0x00, 0x18, 0x10, 0xb9, +0x00, 0x06, 0x00, 0x01, 0xf4, 0xba, 0x00, 0x04, +0x00, 0x05, 0x00, 0x06, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x04, 0x2f, 0xb9, 0x00, 0x07, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x04, 0x10, 0xb8, 0x00, 0x0d, +0xd0, 0xb8, 0x00, 0x04, 0x10, 0xb8, 0x00, 0x14, +0xd0, 0xb8, 0x00, 0x07, 0x10, 0xb8, 0x00, 0x17, +0xd0, 0xb8, 0x00, 0x07, 0x10, 0xb8, 0x00, 0x1e, +0xd0, 0x30, 0x31, 0x13, 0x32, 0x36, 0x37, 0x23, +0x15, 0x11, 0x15, 0x33, 0x2e, 0x01, 0x23, 0x05, +0x23, 0x0e, 0x01, 0x2b, 0x01, 0x11, 0x23, 0x11, +0x23, 0x35, 0x37, 0x35, 0x33, 0x32, 0x1e, 0x02, +0x17, 0x33, 0xae, 0x52, 0x5c, 0x05, 0xd8, 0xd8, +0x05, 0x5b, 0x53, 0x01, 0x22, 0x42, 0x06, 0x75, +0x5a, 0x30, 0x2b, 0x50, 0x50, 0x5b, 0x2d, 0x4c, +0x38, 0x21, 0x03, 0x42, 0x01, 0x2b, 0x44, 0x47, +0x8b, 0x01, 0x31, 0x82, 0x48, 0x3a, 0xa6, 0x59, +0x56, 0xfe, 0xf9, 0x01, 0xb6, 0x1f, 0x05, 0xa5, +0x12, 0x28, 0x3e, 0x2d, 0x00, 0x04, 0xff, 0xf3, +0x00, 0x00, 0x01, 0xe8, 0x02, 0x7f, 0x00, 0x05, +0x00, 0x0b, 0x00, 0x11, 0x00, 0x29, 0x00, 0x99, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x1e, 0x2f, 0x1b, 0xb9, 0x00, 0x1e, 0x00, 0x0f, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x19, 0x2f, 0x1b, 0xb9, 0x00, 0x19, 0x00, +0x05, 0x3e, 0x59, 0xba, 0x00, 0x1d, 0x00, 0x1a, +0x00, 0x03, 0x2b, 0xb8, 0x00, 0x1a, 0x10, 0xb8, +0x00, 0x0c, 0xd0, 0xb8, 0x00, 0x16, 0xd0, 0xb8, +0x00, 0x00, 0xd0, 0xb8, 0x00, 0x19, 0x10, 0xb8, +0x00, 0x15, 0xd0, 0xba, 0x00, 0x03, 0x00, 0x15, +0x00, 0x1e, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x1d, +0x10, 0xb8, 0x00, 0x21, 0xd0, 0xb8, 0x00, 0x06, +0xd0, 0xba, 0x00, 0x09, 0x00, 0x19, 0x00, 0x1e, +0x11, 0x12, 0x39, 0xba, 0x00, 0x0f, 0x00, 0x1e, +0x00, 0x19, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x12, 0xd0, 0xba, 0x00, 0x23, +0x00, 0x1e, 0x00, 0x15, 0x11, 0x12, 0x39, 0xb8, +0x00, 0x06, 0x10, 0xb8, 0x00, 0x25, 0xd0, 0xb8, +0x00, 0x1e, 0x10, 0xb8, 0x00, 0x26, 0xd0, 0xb8, +0x00, 0x25, 0x10, 0xb8, 0x00, 0x29, 0xd0, 0x30, +0x31, 0x01, 0x23, 0x1f, 0x01, 0x33, 0x37, 0x2f, +0x02, 0x23, 0x0f, 0x02, 0x23, 0x1f, 0x01, 0x33, +0x37, 0x25, 0x23, 0x03, 0x23, 0x03, 0x23, 0x03, +0x23, 0x03, 0x23, 0x35, 0x37, 0x03, 0x33, 0x13, +0x33, 0x13, 0x33, 0x13, 0x33, 0x13, 0x33, 0x03, +0x33, 0x01, 0x81, 0x4a, 0x17, 0x0f, 0x04, 0x0f, +0x61, 0x0c, 0x12, 0x04, 0x13, 0x0b, 0x24, 0x48, +0x11, 0x0d, 0x04, 0x0f, 0x01, 0x54, 0x43, 0x2b, +0x36, 0x30, 0x4a, 0x2e, 0x33, 0x2d, 0x49, 0x45, +0x2b, 0x2e, 0x24, 0x51, 0x28, 0x32, 0x28, 0x53, +0x22, 0x2b, 0x29, 0x3f, 0x01, 0x36, 0x8f, 0x80, +0x80, 0xb0, 0x4a, 0x90, 0x91, 0x49, 0x21, 0x8f, +0x80, 0x80, 0x8f, 0xfe, 0xca, 0x01, 0x36, 0xfe, +0xca, 0x01, 0x36, 0x1d, 0x04, 0x01, 0x28, 0xfe, +0xd8, 0x01, 0x00, 0xff, 0x00, 0x01, 0x28, 0xfe, +0xd8, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x45, +0x00, 0x00, 0x01, 0xd1, 0x02, 0xa1, 0x00, 0x03, +0x00, 0x12, 0x00, 0x2f, 0x00, 0x4c, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, 0x2f, +0x1b, 0xb9, 0x00, 0x03, 0x00, 0x05, 0x3e, 0x59, +0xba, 0x00, 0x29, 0x00, 0x2c, 0x00, 0x03, 0x2b, +0xb8, 0x00, 0x03, 0x10, 0xb8, 0x00, 0x01, 0xdc, +0xb8, 0x00, 0x29, 0x10, 0xb8, 0x00, 0x24, 0xd0, +0xb8, 0x00, 0x07, 0xdc, 0xb8, 0x00, 0x01, 0x10, +0xb8, 0x00, 0x1c, 0xd0, 0xb8, 0x00, 0x0f, 0xdc, +0xb8, 0x00, 0x29, 0x10, 0xb8, 0x00, 0x15, 0xd0, +0xb8, 0x00, 0x2c, 0x10, 0xb8, 0x00, 0x2f, 0xd0, +0x30, 0x31, 0x37, 0x21, 0x15, 0x21, 0x01, 0x2e, +0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, +0x33, 0x32, 0x36, 0x37, 0x13, 0x15, 0x07, 0x11, +0x23, 0x27, 0x23, 0x0e, 0x01, 0x23, 0x22, 0x26, +0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, +0x27, 0x35, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, +0x50, 0x01, 0x4f, 0xfe, 0xb1, 0x01, 0x07, 0x1d, +0x30, 0x20, 0x1a, 0x2c, 0x20, 0x13, 0x3c, 0x39, +0x1d, 0x37, 0x1d, 0x7a, 0x51, 0x21, 0x05, 0x03, +0x17, 0x3a, 0x26, 0x47, 0x54, 0x1b, 0x2d, 0x3b, +0x20, 0x26, 0x33, 0x1a, 0x04, 0x92, 0x92, 0x29, +0x22, 0x22, 0x01, 0x82, 0x1b, 0x18, 0x16, 0x26, +0x33, 0x1d, 0x47, 0x52, 0x1d, 0x21, 0x01, 0x85, +0x1d, 0x05, 0xfe, 0x44, 0x2f, 0x18, 0x21, 0x60, +0x5c, 0x29, 0x42, 0x2f, 0x19, 0x1c, 0x17, 0x5d, +0x2d, 0x22, 0x4e, 0x4e, 0x00, 0x04, 0x00, 0x0e, +0x00, 0x00, 0x01, 0xd0, 0x02, 0x7f, 0x00, 0x07, +0x00, 0x0d, 0x00, 0x13, 0x00, 0x31, 0x00, 0x8b, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x2c, 0x2f, 0x1b, 0xb9, 0x00, 0x2c, 0x00, 0x0f, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x23, 0x2f, 0x1b, 0xb9, 0x00, 0x23, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x2c, 0x10, 0xb9, +0x00, 0x0e, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x2b, +0xd0, 0xb8, 0x00, 0x28, 0xd0, 0xb8, 0x00, 0x06, +0xd0, 0xb8, 0x00, 0x28, 0x10, 0xb8, 0x00, 0x27, +0xd0, 0xb8, 0x00, 0x07, 0xd0, 0xb8, 0x00, 0x27, +0x10, 0xb8, 0x00, 0x24, 0xd0, 0xb8, 0x00, 0x0c, +0xd0, 0xb8, 0x00, 0x24, 0x10, 0xb8, 0x00, 0x0d, +0xdc, 0xb8, 0x00, 0x2b, 0x10, 0xb8, 0x00, 0x0f, +0xd0, 0xb8, 0x00, 0x06, 0x10, 0xb8, 0x00, 0x14, +0xd0, 0xb8, 0x00, 0x07, 0x10, 0xb8, 0x00, 0x1b, +0xd0, 0xb8, 0x00, 0x0c, 0x10, 0xb8, 0x00, 0x1c, +0xd0, 0xb8, 0x00, 0x0d, 0x10, 0xb8, 0x00, 0x21, +0xdc, 0xb8, 0x00, 0x0f, 0x10, 0xb8, 0x00, 0x31, +0xd0, 0x30, 0x31, 0x01, 0x3e, 0x01, 0x35, 0x34, +0x27, 0x23, 0x15, 0x17, 0x32, 0x36, 0x37, 0x23, +0x15, 0x11, 0x15, 0x33, 0x2e, 0x01, 0x23, 0x05, +0x23, 0x16, 0x15, 0x14, 0x06, 0x07, 0x33, 0x15, +0x23, 0x0e, 0x01, 0x2b, 0x01, 0x11, 0x23, 0x11, +0x23, 0x35, 0x37, 0x35, 0x23, 0x35, 0x37, 0x35, +0x33, 0x32, 0x16, 0x17, 0x33, 0x01, 0x60, 0x01, +0x01, 0x03, 0xd6, 0x25, 0x45, 0x56, 0x10, 0xd0, +0xce, 0x12, 0x55, 0x42, 0x01, 0x22, 0x44, 0x03, +0x01, 0x01, 0x43, 0x49, 0x12, 0x6e, 0x4e, 0x30, +0x2b, 0x50, 0x50, 0x50, 0x50, 0x5b, 0x4c, 0x6c, +0x14, 0x4b, 0x01, 0xab, 0x07, 0x0f, 0x08, 0x14, +0x11, 0x43, 0x80, 0x2f, 0x31, 0x60, 0x01, 0x31, +0x4f, 0x2b, 0x24, 0x6e, 0x12, 0x13, 0x08, 0x0e, +0x08, 0x20, 0x43, 0x41, 0xfe, 0xf9, 0x01, 0x8b, +0x1c, 0x04, 0x43, 0x1b, 0x04, 0x72, 0x34, 0x3e, +0x00, 0x01, 0x00, 0x34, 0xff, 0x92, 0x01, 0xb8, +0x02, 0xed, 0x00, 0x29, 0x00, 0x6d, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0f, 0x2f, +0x1b, 0xb9, 0x00, 0x0f, 0x00, 0x0f, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, +0x2f, 0x1b, 0xb9, 0x00, 0x07, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x28, 0x00, 0x0f, 0x00, 0x07, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x28, 0x2f, 0xb9, +0x00, 0x00, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x07, +0x10, 0xb8, 0x00, 0x04, 0xd0, 0xb8, 0x00, 0x07, +0x10, 0xb8, 0x00, 0x05, 0xdc, 0xb8, 0x00, 0x0f, +0x10, 0xb8, 0x00, 0x11, 0xdc, 0xb8, 0x00, 0x0f, +0x10, 0xb8, 0x00, 0x12, 0xd0, 0xb8, 0x00, 0x0f, +0x10, 0xb9, 0x00, 0x19, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x07, 0x10, 0xb9, 0x00, 0x23, 0x00, 0x01, +0xf4, 0x30, 0x31, 0x01, 0x15, 0x0e, 0x01, 0x07, +0x15, 0x23, 0x35, 0x2e, 0x03, 0x35, 0x34, 0x36, +0x37, 0x35, 0x33, 0x15, 0x1e, 0x01, 0x17, 0x07, +0x2e, 0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, +0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x35, 0x23, +0x35, 0x01, 0xb8, 0x1c, 0x48, 0x2a, 0x26, 0x2f, +0x4d, 0x36, 0x1e, 0x6f, 0x61, 0x26, 0x2c, 0x46, +0x16, 0x1d, 0x17, 0x38, 0x23, 0x2e, 0x47, 0x31, +0x19, 0x18, 0x2e, 0x42, 0x2b, 0x26, 0x40, 0x10, +0x78, 0x01, 0x39, 0xfd, 0x20, 0x23, 0x04, 0x63, +0x63, 0x04, 0x32, 0x56, 0x77, 0x49, 0x8e, 0xad, +0x0d, 0x64, 0x62, 0x02, 0x2e, 0x1e, 0x1b, 0x1e, +0x25, 0x29, 0x4c, 0x6b, 0x43, 0x43, 0x6d, 0x4d, +0x2a, 0x1f, 0x14, 0xc4, 0x27, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x18, 0xff, 0xf4, 0x01, 0xc8, +0x02, 0x8b, 0x00, 0x3d, 0x00, 0x6d, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x33, 0x2f, +0x1b, 0xb9, 0x00, 0x33, 0x00, 0x0f, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x13, +0x2f, 0x1b, 0xb9, 0x00, 0x13, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x1f, 0x00, 0x22, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x1f, 0x10, 0xb8, 0x00, 0x04, +0xd0, 0xb8, 0x00, 0x1f, 0x10, 0xb8, 0x00, 0x1b, +0xd0, 0xb8, 0x00, 0x05, 0xd0, 0xb8, 0x00, 0x13, +0x10, 0xb9, 0x00, 0x0c, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x22, 0x10, 0xb8, 0x00, 0x26, 0xd0, 0xb8, +0x00, 0x33, 0x10, 0xb9, 0x00, 0x2c, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x26, 0x10, 0xb8, 0x00, 0x3c, +0xd0, 0xb8, 0x00, 0x22, 0x10, 0xb8, 0x00, 0x3d, +0xd0, 0x30, 0x31, 0x01, 0x0e, 0x01, 0x07, 0x33, +0x15, 0x21, 0x0e, 0x01, 0x15, 0x14, 0x16, 0x33, +0x32, 0x36, 0x37, 0x17, 0x0e, 0x01, 0x23, 0x22, +0x2e, 0x02, 0x35, 0x34, 0x36, 0x37, 0x23, 0x35, +0x37, 0x33, 0x3e, 0x01, 0x37, 0x23, 0x35, 0x37, +0x33, 0x3e, 0x01, 0x35, 0x34, 0x26, 0x23, 0x22, +0x06, 0x07, 0x27, 0x3e, 0x01, 0x33, 0x32, 0x1e, +0x02, 0x15, 0x14, 0x06, 0x07, 0x33, 0x15, 0x01, +0x2c, 0x17, 0x30, 0x17, 0xfa, 0xfe, 0xe7, 0x14, +0x17, 0x42, 0x3e, 0x2f, 0x46, 0x1a, 0x17, 0x1d, +0x55, 0x34, 0x24, 0x40, 0x2e, 0x1b, 0x11, 0x0f, +0x5f, 0x41, 0x37, 0x14, 0x2d, 0x17, 0xd0, 0x43, +0xb5, 0x1e, 0x28, 0x38, 0x30, 0x2a, 0x35, 0x1a, +0x1a, 0x1a, 0x43, 0x35, 0x21, 0x37, 0x28, 0x17, +0x1e, 0x17, 0x79, 0x01, 0x64, 0x14, 0x25, 0x14, +0x21, 0x17, 0x39, 0x23, 0x2e, 0x3b, 0x2d, 0x1a, +0x1f, 0x1e, 0x30, 0x13, 0x26, 0x36, 0x23, 0x22, +0x37, 0x17, 0x1d, 0x04, 0x16, 0x25, 0x12, 0x1d, +0x04, 0x1a, 0x3c, 0x29, 0x29, 0x38, 0x20, 0x1d, +0x1c, 0x1d, 0x2a, 0x14, 0x25, 0x32, 0x1e, 0x28, +0x3c, 0x19, 0x21, 0x00, 0x00, 0x02, 0x00, 0x41, +0xff, 0x92, 0x01, 0xc8, 0x02, 0xee, 0x00, 0x08, +0x00, 0x27, 0x00, 0x59, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x19, 0x2f, 0x1b, 0xb9, +0x00, 0x19, 0x00, 0x0f, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0f, 0x2f, 0x1b, +0xb9, 0x00, 0x0f, 0x00, 0x05, 0x3e, 0x59, 0xb8, +0x00, 0x19, 0x10, 0xb9, 0x00, 0x00, 0x00, 0x01, +0xf4, 0xb8, 0x00, 0x0f, 0x10, 0xb9, 0x00, 0x08, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x0f, 0x10, 0xb8, +0x00, 0x0c, 0xd0, 0xb8, 0x00, 0x19, 0x10, 0xb8, +0x00, 0x1c, 0xd0, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x23, 0xd0, 0xb8, 0x00, 0x08, 0x10, 0xb8, +0x00, 0x24, 0xd0, 0x30, 0x31, 0x01, 0x0e, 0x01, +0x15, 0x14, 0x1e, 0x02, 0x17, 0x37, 0x0e, 0x01, +0x07, 0x15, 0x23, 0x35, 0x2e, 0x03, 0x35, 0x34, +0x3e, 0x02, 0x37, 0x35, 0x33, 0x15, 0x1e, 0x01, +0x17, 0x07, 0x2e, 0x01, 0x27, 0x11, 0x3e, 0x01, +0x37, 0x01, 0x12, 0x4e, 0x54, 0x16, 0x29, 0x3c, +0x27, 0xb6, 0x1d, 0x45, 0x30, 0x24, 0x30, 0x4d, +0x36, 0x1e, 0x1d, 0x36, 0x4e, 0x30, 0x24, 0x2c, +0x47, 0x15, 0x1d, 0x15, 0x35, 0x21, 0x23, 0x38, +0x1a, 0x02, 0x62, 0x0d, 0x98, 0x7b, 0x3f, 0x69, +0x4d, 0x2e, 0x04, 0x37, 0x27, 0x31, 0x05, 0x63, +0x63, 0x03, 0x32, 0x56, 0x78, 0x49, 0x46, 0x74, +0x54, 0x34, 0x06, 0x65, 0x63, 0x02, 0x2d, 0x1f, +0x1b, 0x1d, 0x24, 0x02, 0xfd, 0xb6, 0x04, 0x28, +0x24, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x49, +0x00, 0x00, 0x01, 0xbb, 0x02, 0x7f, 0x00, 0x1d, +0x00, 0x63, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x1c, 0x2f, 0x1b, 0xb9, 0x00, 0x1c, +0x00, 0x0f, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x0c, 0x2f, 0x1b, 0xb9, 0x00, +0x0c, 0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x1c, +0x10, 0xb9, 0x00, 0x1a, 0x00, 0x01, 0xf4, 0xb8, +0x00, 0x01, 0xd0, 0xb8, 0x00, 0x1a, 0x10, 0xb8, +0x00, 0x17, 0xdc, 0xb8, 0x00, 0x04, 0xd0, 0xb8, +0x00, 0x17, 0x10, 0xb8, 0x00, 0x13, 0xdc, 0xb8, +0x00, 0x07, 0xd0, 0xb8, 0x00, 0x13, 0x10, 0xb8, +0x00, 0x10, 0xdc, 0xb9, 0x00, 0x0d, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x0d, +0x11, 0x12, 0x39, 0x30, 0x31, 0x01, 0x23, 0x1e, +0x01, 0x17, 0x33, 0x15, 0x23, 0x0e, 0x01, 0x07, +0x13, 0x23, 0x03, 0x23, 0x35, 0x33, 0x32, 0x36, +0x37, 0x21, 0x35, 0x37, 0x33, 0x2e, 0x01, 0x2b, +0x01, 0x35, 0x21, 0x01, 0xbb, 0x94, 0x20, 0x2b, +0x07, 0x42, 0x40, 0x02, 0x5f, 0x4d, 0xc9, 0x36, +0xc5, 0x52, 0x4b, 0x57, 0x60, 0x02, 0xfe, 0xfc, +0x43, 0xbf, 0x0b, 0x5e, 0x4e, 0x4b, 0x01, 0x72, +0x02, 0x5e, 0x0f, 0x37, 0x25, 0x22, 0x52, 0x5a, +0x0a, 0xfe, 0xe5, 0x01, 0x19, 0x27, 0x46, 0x4b, +0x1e, 0x04, 0x37, 0x2f, 0x26, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x1c, 0xff, 0xf3, 0x01, 0xbd, +0x02, 0x7f, 0x00, 0x23, 0x00, 0x63, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, +0x1b, 0xb9, 0x00, 0x08, 0x00, 0x0f, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x23, +0x2f, 0x1b, 0xb9, 0x00, 0x23, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x03, 0x10, 0xb8, 0x00, 0x00, +0xd0, 0xb8, 0x00, 0x04, 0x10, 0xb8, 0x00, 0x07, +0xdc, 0xb8, 0x00, 0x0a, 0xd0, 0xb8, 0x00, 0x04, +0x10, 0xb8, 0x00, 0x0d, 0xd0, 0xb8, 0x00, 0x03, +0x10, 0xb8, 0x00, 0x0e, 0xd0, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x11, 0xd0, 0xb8, 0x00, 0x23, +0x10, 0xb9, 0x00, 0x12, 0x00, 0x02, 0xf4, 0x30, +0x31, 0x13, 0x07, 0x35, 0x37, 0x35, 0x07, 0x35, +0x37, 0x35, 0x33, 0x15, 0x37, 0x15, 0x07, 0x15, +0x37, 0x15, 0x07, 0x11, 0x32, 0x3e, 0x02, 0x35, +0x34, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x15, 0x14, +0x0e, 0x02, 0x27, 0x82, 0x66, 0x66, 0x66, 0x66, +0x2e, 0xb0, 0xb0, 0xb0, 0xb0, 0x24, 0x51, 0x43, +0x2c, 0x01, 0x05, 0x28, 0x04, 0x03, 0x34, 0x57, +0x72, 0x3e, 0x01, 0x1d, 0x34, 0x24, 0x34, 0x52, +0x34, 0x24, 0x35, 0xc7, 0xb1, 0x5c, 0x24, 0x5c, +0x52, 0x5c, 0x24, 0x5c, 0xfe, 0xeb, 0x17, 0x2e, +0x44, 0x2f, 0x0b, 0x18, 0x10, 0x0d, 0x14, 0x19, +0x10, 0x3c, 0x58, 0x39, 0x1a, 0x01, 0x00, 0x00, +0x00, 0x01, 0x00, 0x22, 0x00, 0x00, 0x01, 0xb9, +0x02, 0x7f, 0x00, 0x17, 0x00, 0x63, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x15, 0x2f, +0x1b, 0xb9, 0x00, 0x15, 0x00, 0x0f, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x0a, +0x2f, 0x1b, 0xb9, 0x00, 0x0a, 0x00, 0x05, 0x3e, +0x59, 0xba, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x0f, 0x10, 0xb8, 0x00, 0x12, +0xdc, 0xb8, 0x00, 0x01, 0xd0, 0xb8, 0x00, 0x0f, +0x10, 0xb8, 0x00, 0x04, 0xd0, 0xb8, 0x00, 0x0e, +0x10, 0xb8, 0x00, 0x05, 0xd0, 0xb8, 0x00, 0x0e, +0x10, 0xb8, 0x00, 0x0b, 0xdc, 0xb8, 0x00, 0x08, +0xd0, 0xb8, 0x00, 0x15, 0x10, 0xb9, 0x00, 0x14, +0x00, 0x01, 0xf4, 0xb8, 0x00, 0x17, 0xd0, 0x30, +0x31, 0x01, 0x15, 0x37, 0x15, 0x07, 0x15, 0x37, +0x15, 0x07, 0x15, 0x23, 0x35, 0x07, 0x35, 0x37, +0x35, 0x07, 0x35, 0x37, 0x35, 0x23, 0x35, 0x21, +0x15, 0x01, 0x05, 0x8c, 0x8c, 0x8c, 0x8c, 0x2d, +0x8c, 0x8c, 0x8c, 0x8c, 0xb6, 0x01, 0x97, 0x02, +0x5a, 0xc3, 0x49, 0x25, 0x48, 0x52, 0x48, 0x24, +0x48, 0xfd, 0xe6, 0x48, 0x24, 0x48, 0x52, 0x48, +0x24, 0x49, 0xd9, 0x25, 0x25, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x01, 0xb9, +0x02, 0x7f, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x39, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x09, 0x2f, 0x1b, 0xb9, 0x00, 0x09, 0x00, 0x0f, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, +0x00, 0x08, 0x2f, 0x1b, 0xb9, 0x00, 0x08, 0x00, +0x05, 0x3e, 0x59, 0xb8, 0x00, 0x09, 0x10, 0xb8, +0x00, 0x0b, 0xd0, 0xb8, 0x00, 0x03, 0xd0, 0xb8, +0x00, 0x05, 0xd0, 0xb8, 0x00, 0x01, 0xd0, 0x30, +0x31, 0x13, 0x23, 0x35, 0x37, 0x21, 0x15, 0x23, +0x11, 0x23, 0x03, 0x21, 0x15, 0x21, 0xd8, 0xb6, +0x43, 0x01, 0x54, 0xb4, 0x2d, 0xb6, 0x01, 0x97, +0xfe, 0x69, 0x01, 0xf0, 0x1d, 0x04, 0x21, 0xfe, +0x10, 0x02, 0x7f, 0x21, 0x00, 0x02, 0x00, 0x0e, +0x00, 0x00, 0x01, 0x8f, 0x02, 0x7f, 0x00, 0x08, +0x00, 0x23, 0x00, 0x6b, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x18, 0x2f, 0x1b, 0xb9, +0x00, 0x18, 0x00, 0x0f, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x0f, 0x2f, 0x1b, +0xb9, 0x00, 0x0f, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x09, 0x00, 0x18, 0x00, 0x0f, 0x11, 0x12, +0x39, 0x7c, 0xb8, 0x00, 0x09, 0x2f, 0x18, 0xb8, +0x00, 0x00, 0xd0, 0xb8, 0x00, 0x18, 0x10, 0xb9, +0x00, 0x07, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x09, +0x10, 0xb8, 0x00, 0x0a, 0xd0, 0xb8, 0x00, 0x0d, +0xd0, 0xb8, 0x00, 0x10, 0xd0, 0xb8, 0x00, 0x0a, +0x10, 0xb8, 0x00, 0x13, 0xd0, 0xb8, 0x00, 0x09, +0x10, 0xb8, 0x00, 0x14, 0xd0, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x17, 0xd0, 0x30, 0x31, 0x13, +0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x2b, 0x01, +0x11, 0x15, 0x33, 0x15, 0x23, 0x15, 0x23, 0x35, +0x23, 0x35, 0x37, 0x35, 0x23, 0x35, 0x37, 0x11, +0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, +0x23, 0x89, 0x25, 0x58, 0x5c, 0x5d, 0x57, 0x25, +0xcf, 0xcf, 0x2b, 0x50, 0x50, 0x50, 0x50, 0x5b, +0x2f, 0x4f, 0x39, 0x1f, 0x20, 0x39, 0x4e, 0x2f, +0x01, 0x3a, 0x49, 0x4e, 0x4d, 0x3e, 0xfe, 0xbc, +0x43, 0x22, 0xb3, 0xb3, 0x1d, 0x05, 0x43, 0x1d, +0x05, 0x01, 0x45, 0x13, 0x2a, 0x42, 0x2e, 0x30, +0x46, 0x2e, 0x16, 0x00, 0x00, 0x01, 0xff, 0x5b, +0xff, 0xf4, 0x00, 0xf1, 0x02, 0x9f, 0x00, 0x03, +0x00, 0x18, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x02, 0x2f, 0x1b, 0xb9, 0x00, 0x02, +0x00, 0x05, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0xdc, +0x30, 0x31, 0x13, 0x33, 0x01, 0x23, 0xcb, 0x26, +0xfe, 0x91, 0x27, 0x02, 0x9f, 0xfd, 0x55, 0x00, +0xff, 0xff, 0xff, 0x5b, 0xff, 0xf4, 0x00, 0xf1, +0x02, 0x9f, 0x02, 0x06, 0x06, 0xbe, 0x00, 0x00, +0xff, 0xff, 0xff, 0x5b, 0xff, 0xf4, 0x00, 0xf1, +0x02, 0x9f, 0x02, 0x06, 0x06, 0xbe, 0x00, 0x00, +0xff, 0xff, 0x00, 0x28, 0xff, 0xf4, 0x02, 0xfd, +0x02, 0x9f, 0x00, 0x27, 0x06, 0x44, 0x00, 0x00, +0x01, 0x0d, 0x00, 0x27, 0x06, 0xbe, 0x01, 0x6b, +0x00, 0x00, 0x00, 0x07, 0x06, 0x44, 0x01, 0xbb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x28, +0xff, 0xf4, 0x04, 0x62, 0x02, 0x9f, 0x00, 0x0b, +0x00, 0x17, 0x00, 0x23, 0x00, 0x2f, 0x00, 0x3b, +0x00, 0x47, 0x00, 0x4b, 0x00, 0x7e, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x18, 0x2f, +0x1b, 0xb9, 0x00, 0x18, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x30, +0x2f, 0x1b, 0xb9, 0x00, 0x30, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x4a, 0x2f, 0x1b, 0xb9, 0x00, 0x4a, 0x00, 0x05, +0x3e, 0x59, 0xbb, 0x00, 0x06, 0x00, 0x01, 0x00, +0x12, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x0c, 0x00, +0x01, 0x00, 0x00, 0x00, 0x04, 0x2b, 0xbb, 0x00, +0x1e, 0x00, 0x01, 0x00, 0x2a, 0x00, 0x04, 0x2b, +0xb8, 0x00, 0x18, 0x10, 0xb9, 0x00, 0x24, 0x00, +0x01, 0xf4, 0xb8, 0x00, 0x1e, 0x10, 0xb8, 0x00, +0x36, 0xd0, 0xb8, 0x00, 0x24, 0x10, 0xb8, 0x00, +0x3c, 0xd0, 0xb8, 0x00, 0x2a, 0x10, 0xb8, 0x00, +0x42, 0xd0, 0xb8, 0x00, 0x06, 0x10, 0xb8, 0x00, +0x48, 0xd0, 0x30, 0x31, 0x13, 0x22, 0x26, 0x35, +0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, +0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, +0x06, 0x15, 0x14, 0x16, 0x01, 0x22, 0x26, 0x35, +0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, +0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, +0x06, 0x15, 0x14, 0x16, 0x05, 0x22, 0x26, 0x35, +0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, +0x27, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, +0x06, 0x15, 0x14, 0x16, 0x01, 0x33, 0x01, 0x23, +0xb5, 0x42, 0x4b, 0x4b, 0x42, 0x42, 0x4b, 0x4b, +0x42, 0x2f, 0x37, 0x37, 0x2f, 0x2f, 0x37, 0x37, +0x01, 0xe7, 0x42, 0x4b, 0x4b, 0x42, 0x42, 0x4b, +0x4b, 0x42, 0x2f, 0x37, 0x37, 0x2f, 0x2f, 0x37, +0x37, 0x01, 0x97, 0x42, 0x4b, 0x4b, 0x42, 0x42, +0x4b, 0x4b, 0x42, 0x2f, 0x37, 0x37, 0x2f, 0x2f, +0x37, 0x37, 0xfe, 0x8c, 0x26, 0xfe, 0x91, 0x27, +0x01, 0x01, 0x6b, 0x65, 0x64, 0x6a, 0x6a, 0x64, +0x65, 0x6b, 0x21, 0x5b, 0x54, 0x54, 0x59, 0x59, +0x54, 0x54, 0x5b, 0xfe, 0xd2, 0x6b, 0x65, 0x64, +0x6a, 0x6a, 0x64, 0x65, 0x6b, 0x21, 0x5b, 0x54, +0x54, 0x59, 0x59, 0x54, 0x54, 0x5b, 0x21, 0x6b, +0x65, 0x64, 0x6a, 0x6a, 0x64, 0x65, 0x6b, 0x21, +0x5b, 0x54, 0x54, 0x59, 0x59, 0x54, 0x54, 0x5b, +0x02, 0x8a, 0xfd, 0x55, 0xff, 0xff, 0x00, 0x4a, +0xff, 0xf4, 0x02, 0xcf, 0x02, 0x9f, 0x00, 0x27, +0x06, 0x45, 0xff, 0xec, 0x01, 0x0d, 0x00, 0x27, +0x06, 0xbe, 0x01, 0x56, 0x00, 0x00, 0x00, 0x07, +0x06, 0x48, 0x01, 0x92, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x4a, 0xff, 0xf4, 0x02, 0xdf, +0x02, 0x9f, 0x00, 0x27, 0x06, 0x45, 0xff, 0xec, +0x01, 0x0d, 0x00, 0x27, 0x06, 0xbe, 0x01, 0x3f, +0x00, 0x00, 0x00, 0x07, 0x06, 0x46, 0x01, 0xa8, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x28, +0xff, 0xf4, 0x02, 0xe2, 0x02, 0x9f, 0x00, 0x27, +0x06, 0x47, 0x00, 0x00, 0x01, 0x0d, 0x00, 0x27, +0x06, 0xbe, 0x01, 0x85, 0x00, 0x00, 0x00, 0x07, +0x06, 0x48, 0x01, 0xa5, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x4a, 0xff, 0xf4, 0x02, 0xdb, +0x02, 0x9f, 0x00, 0x27, 0x06, 0x45, 0xff, 0xec, +0x01, 0x0d, 0x00, 0x27, 0x06, 0xbe, 0x01, 0x39, +0x00, 0x00, 0x00, 0x07, 0x06, 0x47, 0x01, 0xa7, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2f, +0xff, 0xf4, 0x02, 0xee, 0x02, 0x9f, 0x00, 0x27, +0x06, 0x46, 0x00, 0x00, 0x01, 0x0d, 0x00, 0x27, +0x06, 0xbe, 0x01, 0x6b, 0x00, 0x00, 0x00, 0x07, +0x06, 0x47, 0x01, 0xba, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x4a, 0xff, 0xf4, 0x02, 0xe0, +0x02, 0x9f, 0x00, 0x27, 0x06, 0x45, 0xff, 0xec, +0x01, 0x0d, 0x00, 0x27, 0x06, 0xbe, 0x01, 0x39, +0x00, 0x00, 0x00, 0x07, 0x06, 0x49, 0x01, 0xa7, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2f, +0xff, 0xf4, 0x02, 0xf3, 0x02, 0x9f, 0x00, 0x27, +0x06, 0x46, 0x00, 0x00, 0x01, 0x0d, 0x00, 0x27, +0x06, 0xbe, 0x01, 0x6b, 0x00, 0x00, 0x00, 0x07, +0x06, 0x49, 0x01, 0xba, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x28, 0xff, 0xf4, 0x02, 0xf3, +0x02, 0x9f, 0x00, 0x27, 0x06, 0x47, 0x00, 0x00, +0x01, 0x0d, 0x00, 0x27, 0x06, 0xbe, 0x01, 0x6a, +0x00, 0x00, 0x00, 0x07, 0x06, 0x49, 0x01, 0xba, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2e, +0xff, 0xf4, 0x03, 0x01, 0x02, 0x9f, 0x00, 0x27, +0x06, 0x48, 0x00, 0x00, 0x01, 0x0d, 0x00, 0x27, +0x06, 0xbe, 0x01, 0x78, 0x00, 0x00, 0x00, 0x07, +0x06, 0x49, 0x01, 0xc8, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x4a, 0xff, 0xf4, 0x02, 0xda, +0x02, 0x9f, 0x00, 0x27, 0x06, 0x45, 0xff, 0xec, +0x01, 0x0d, 0x00, 0x27, 0x06, 0xbe, 0x01, 0x43, +0x00, 0x00, 0x00, 0x07, 0x06, 0x4a, 0x01, 0x9d, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x28, +0xff, 0xf4, 0x02, 0xed, 0x02, 0x9f, 0x00, 0x27, +0x06, 0x49, 0x00, 0x00, 0x01, 0x0d, 0x00, 0x27, +0x06, 0xbe, 0x01, 0x6a, 0x00, 0x00, 0x00, 0x07, +0x06, 0x4a, 0x01, 0xb0, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x4a, 0xff, 0xf4, 0x02, 0xde, +0x02, 0x9f, 0x00, 0x27, 0x06, 0x45, 0xff, 0xec, +0x01, 0x0d, 0x00, 0x27, 0x06, 0xbe, 0x01, 0x39, +0x00, 0x00, 0x00, 0x07, 0x06, 0x4b, 0x01, 0xa7, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4a, +0xff, 0xf4, 0x02, 0xdd, 0x02, 0x9f, 0x00, 0x27, +0x06, 0x45, 0xff, 0xec, 0x01, 0x0d, 0x00, 0x27, +0x06, 0xbe, 0x01, 0x43, 0x00, 0x00, 0x00, 0x07, +0x06, 0x4c, 0x01, 0xa7, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x28, 0xff, 0xf4, 0x02, 0xf0, +0x02, 0x9f, 0x00, 0x27, 0x06, 0x47, 0x00, 0x00, +0x01, 0x0d, 0x00, 0x27, 0x06, 0xbe, 0x01, 0x6a, +0x00, 0x00, 0x00, 0x07, 0x06, 0x4c, 0x01, 0xba, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x28, +0xff, 0xf4, 0x02, 0xf0, 0x02, 0x9f, 0x00, 0x27, +0x06, 0x49, 0x00, 0x00, 0x01, 0x0d, 0x00, 0x27, +0x06, 0xbe, 0x01, 0x6a, 0x00, 0x00, 0x00, 0x07, +0x06, 0x4c, 0x01, 0xba, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x1f, 0xff, 0xf4, 0x02, 0xdc, +0x02, 0x9f, 0x00, 0x27, 0x06, 0x4b, 0xff, 0xed, +0x01, 0x0d, 0x00, 0x27, 0x06, 0xbe, 0x01, 0x38, +0x00, 0x00, 0x00, 0x07, 0x06, 0x4c, 0x01, 0xa6, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4a, +0xff, 0xf4, 0x02, 0xe4, 0x02, 0x9f, 0x00, 0x27, +0x06, 0x45, 0xff, 0xec, 0x01, 0x0d, 0x00, 0x27, +0x06, 0xbe, 0x01, 0x43, 0x00, 0x00, 0x00, 0x07, +0x06, 0x4d, 0x01, 0xb0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x05, 0x00, 0x49, 0xff, 0xf4, 0x03, 0xf6, +0x02, 0x9f, 0x00, 0x08, 0x00, 0x11, 0x00, 0x1d, +0x00, 0x29, 0x00, 0x2d, 0x00, 0x5e, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x05, 0x2f, +0x1b, 0xb9, 0x00, 0x05, 0x00, 0x11, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x12, +0x2f, 0x1b, 0xb9, 0x00, 0x12, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x2c, 0x2f, 0x1b, 0xb9, 0x00, 0x2c, 0x00, 0x05, +0x3e, 0x59, 0xbb, 0x00, 0x18, 0x00, 0x01, 0x00, +0x24, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x0e, 0x00, +0x02, 0x00, 0x09, 0x00, 0x04, 0x2b, 0xb8, 0x00, +0x05, 0x10, 0xb9, 0x00, 0x00, 0x00, 0x02, 0xf4, +0xb8, 0x00, 0x12, 0x10, 0xb9, 0x00, 0x1e, 0x00, +0x01, 0xf4, 0x30, 0x31, 0x13, 0x23, 0x35, 0x3e, +0x01, 0x37, 0x33, 0x11, 0x23, 0x25, 0x23, 0x35, +0x3e, 0x01, 0x37, 0x33, 0x11, 0x23, 0x05, 0x22, +0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, +0x14, 0x06, 0x27, 0x32, 0x36, 0x35, 0x34, 0x26, +0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x01, 0x33, +0x01, 0x23, 0x9b, 0x52, 0x1d, 0x29, 0x11, 0x21, +0x26, 0x01, 0xab, 0x52, 0x1d, 0x29, 0x11, 0x21, +0x26, 0x01, 0x23, 0x42, 0x4b, 0x4b, 0x42, 0x42, +0x4b, 0x4b, 0x42, 0x2f, 0x37, 0x37, 0x2f, 0x2f, +0x37, 0x37, 0xfe, 0xd4, 0x26, 0xfe, 0x91, 0x27, +0x02, 0x51, 0x1b, 0x06, 0x13, 0x0e, 0xfe, 0x7a, +0x37, 0x1b, 0x06, 0x13, 0x0e, 0xfe, 0x7a, 0x0c, +0x6b, 0x65, 0x64, 0x6a, 0x6a, 0x64, 0x65, 0x6b, +0x21, 0x5b, 0x54, 0x54, 0x59, 0x59, 0x54, 0x54, +0x5b, 0x02, 0x8a, 0xfd, 0x55, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x28, 0xff, 0xf4, 0x02, 0xee, +0x02, 0x9f, 0x00, 0x27, 0x06, 0x44, 0x00, 0x00, +0x01, 0x0d, 0x00, 0x27, 0x06, 0xbe, 0x01, 0x6a, +0x00, 0x00, 0x00, 0x07, 0x06, 0x47, 0x01, 0xba, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x22, +0x00, 0x6e, 0x01, 0xbd, 0x02, 0x26, 0x00, 0x0b, +0x00, 0x1d, 0x00, 0xbb, 0x00, 0x03, 0x00, 0x01, +0x00, 0x00, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x03, +0x10, 0xb8, 0x00, 0x06, 0xd0, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x08, 0xd0, 0x30, 0x31, 0x13, +0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, +0x23, 0x15, 0x23, 0xdb, 0xb9, 0xb9, 0x29, 0xb9, +0xb9, 0x29, 0x01, 0x37, 0x26, 0xc9, 0xc9, 0x26, +0xc9, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x22, +0x01, 0x37, 0x01, 0xbd, 0x01, 0x5d, 0x00, 0x03, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x02, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x21, 0x15, 0x21, 0x22, 0x01, 0x9b, 0xfe, 0x65, +0x01, 0x5d, 0x26, 0x00, 0x00, 0x01, 0x00, 0x34, +0x00, 0x87, 0x01, 0xab, 0x02, 0x0d, 0x00, 0x0b, +0x00, 0x25, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, 0x03, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0x45, +0x58, 0xb8, 0x00, 0x05, 0x2f, 0x1b, 0xb9, 0x00, +0x05, 0x00, 0x0b, 0x3e, 0x59, 0x30, 0x31, 0x3f, +0x01, 0x27, 0x37, 0x17, 0x37, 0x17, 0x07, 0x17, +0x07, 0x27, 0x07, 0x34, 0xa1, 0xa1, 0x1a, 0xa1, +0xa2, 0x1a, 0xa1, 0xa1, 0x1a, 0xa2, 0xa1, 0xa3, +0xa7, 0xa7, 0x1c, 0xa9, 0xa9, 0x1c, 0xa7, 0xa7, +0x1c, 0xa8, 0xa8, 0x00, 0x00, 0x03, 0x00, 0x22, +0x00, 0x6d, 0x01, 0xbd, 0x02, 0x25, 0x00, 0x03, +0x00, 0x0f, 0x00, 0x1b, 0x00, 0x21, 0x00, 0xbb, +0x00, 0x0a, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x16, 0x00, 0x02, 0x00, 0x10, +0x00, 0x04, 0x2b, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x02, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x21, 0x15, 0x21, 0x17, 0x22, 0x26, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x03, +0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, +0x15, 0x14, 0x06, 0x22, 0x01, 0x9b, 0xfe, 0x65, +0xcd, 0x10, 0x16, 0x16, 0x10, 0x11, 0x15, 0x15, +0x11, 0x10, 0x16, 0x16, 0x10, 0x11, 0x15, 0x15, +0x01, 0x5d, 0x26, 0xca, 0x16, 0x13, 0x11, 0x16, +0x16, 0x11, 0x13, 0x16, 0x01, 0x68, 0x16, 0x13, +0x11, 0x16, 0x16, 0x11, 0x13, 0x16, 0x00, 0x00, +0xff, 0xff, 0x00, 0xc3, 0x01, 0x16, 0x01, 0x18, +0x01, 0x71, 0x00, 0x07, 0x04, 0x77, 0x00, 0x80, +0x01, 0x22, 0x00, 0x00, 0xff, 0xff, 0x00, 0x22, +0x00, 0xd2, 0x01, 0xbd, 0x01, 0xc3, 0x02, 0x26, +0x06, 0xd7, 0x00, 0x66, 0x00, 0x06, 0x06, 0xd7, +0x00, 0x9b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x22, +0x00, 0x92, 0x01, 0xbd, 0x02, 0x06, 0x00, 0x09, +0x00, 0x14, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x02, 0x2f, 0x1b, 0xb9, 0x00, 0x02, +0x00, 0x0b, 0x3e, 0x59, 0x30, 0x31, 0x13, 0x35, +0x25, 0x15, 0x0f, 0x01, 0x15, 0x1f, 0x01, 0x15, +0x22, 0x01, 0x9b, 0xe8, 0x85, 0x85, 0xe8, 0x01, +0x36, 0x2c, 0xa4, 0x2b, 0x5a, 0x33, 0x04, 0x33, +0x5a, 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x22, +0x00, 0x92, 0x01, 0xbd, 0x02, 0x06, 0x00, 0x09, +0x00, 0x14, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, +0x00, 0x0b, 0x3e, 0x59, 0x30, 0x31, 0x3f, 0x02, +0x35, 0x2f, 0x01, 0x35, 0x05, 0x15, 0x05, 0x22, +0xe8, 0x85, 0x85, 0xe8, 0x01, 0x9b, 0xfe, 0x65, +0xbd, 0x5a, 0x33, 0x04, 0x33, 0x5a, 0x2b, 0xa4, +0x2c, 0xa4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x22, +0x00, 0x00, 0x01, 0xbd, 0x02, 0x06, 0x00, 0x09, +0x00, 0x0d, 0x00, 0x1a, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x0c, 0x2f, 0x1b, 0xb9, +0x00, 0x0c, 0x00, 0x05, 0x3e, 0x59, 0xb9, 0x00, +0x0a, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x13, 0x35, +0x25, 0x15, 0x0f, 0x01, 0x15, 0x1f, 0x01, 0x15, +0x05, 0x21, 0x15, 0x21, 0x22, 0x01, 0x9b, 0xe8, +0x85, 0x85, 0xe8, 0xfe, 0x65, 0x01, 0x9b, 0xfe, +0x65, 0x01, 0x38, 0x2e, 0xa0, 0x2b, 0x58, 0x32, +0x04, 0x32, 0x58, 0x2b, 0x73, 0x25, 0x00, 0x00, +0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x01, 0xbd, +0x02, 0x06, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x1a, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0c, 0x2f, 0x1b, 0xb9, 0x00, 0x0c, 0x00, 0x05, +0x3e, 0x59, 0xb9, 0x00, 0x0a, 0x00, 0x01, 0xf4, +0x30, 0x31, 0x3f, 0x02, 0x35, 0x2f, 0x01, 0x35, +0x05, 0x15, 0x05, 0x15, 0x21, 0x15, 0x21, 0x22, +0xe8, 0x85, 0x85, 0xe8, 0x01, 0x9b, 0xfe, 0x65, +0x01, 0x9b, 0xfe, 0x65, 0xc3, 0x58, 0x32, 0x04, +0x32, 0x58, 0x2b, 0xa0, 0x2e, 0xa0, 0x73, 0x25, +0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x01, 0xbd, +0x02, 0x26, 0x00, 0x0b, 0x00, 0x0f, 0x00, 0x38, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0e, 0x2f, 0x1b, 0xb9, 0x00, 0x0e, 0x00, 0x05, +0x3e, 0x59, 0xbb, 0x00, 0x03, 0x00, 0x01, 0x00, +0x00, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x03, 0x10, +0xb8, 0x00, 0x06, 0xd0, 0xb8, 0x00, 0x00, 0x10, +0xb8, 0x00, 0x08, 0xd0, 0xb8, 0x00, 0x0e, 0x10, +0xb9, 0x00, 0x0c, 0x00, 0x01, 0xf4, 0x30, 0x31, +0x13, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, +0x15, 0x23, 0x15, 0x23, 0x07, 0x21, 0x15, 0x21, +0xdb, 0xb9, 0xb9, 0x29, 0xb9, 0xb9, 0x29, 0xb9, +0x01, 0x9b, 0xfe, 0x65, 0x01, 0x36, 0x25, 0xcb, +0xcb, 0x25, 0xc9, 0x48, 0x25, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x42, 0x01, 0x22, 0x01, 0x9d, +0x02, 0x9e, 0x00, 0x09, 0x00, 0x1a, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x11, 0x3e, 0x59, +0xb9, 0x00, 0x05, 0x00, 0x01, 0xf4, 0x30, 0x31, +0x13, 0x33, 0x13, 0x23, 0x2f, 0x01, 0x23, 0x0f, +0x01, 0x23, 0xd8, 0x2e, 0x97, 0x2b, 0x4d, 0x34, +0x04, 0x33, 0x4d, 0x2b, 0x02, 0x9e, 0xfe, 0x84, +0xcb, 0x85, 0x85, 0xcb, 0x00, 0x01, 0x00, 0x22, +0x00, 0x50, 0x01, 0xbd, 0x02, 0x44, 0x00, 0x13, +0x00, 0x37, 0x00, 0xbb, 0x00, 0x03, 0x00, 0x01, +0x00, 0x11, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x07, +0x00, 0x01, 0x00, 0x0d, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x11, 0x10, 0xb8, 0x00, 0x00, 0xd0, 0xb8, +0x00, 0x0d, 0x10, 0xb8, 0x00, 0x04, 0xd0, 0xb8, +0x00, 0x07, 0x10, 0xb8, 0x00, 0x0a, 0xd0, 0xb8, +0x00, 0x03, 0x10, 0xb8, 0x00, 0x0e, 0xd0, 0x30, +0x31, 0x37, 0x23, 0x35, 0x33, 0x37, 0x23, 0x35, +0x21, 0x37, 0x33, 0x07, 0x33, 0x15, 0x23, 0x07, +0x33, 0x15, 0x21, 0x07, 0x23, 0x91, 0x6f, 0x86, +0x66, 0xec, 0x01, 0x03, 0x4f, 0x29, 0x4f, 0x6f, +0x86, 0x66, 0xec, 0xfe, 0xfd, 0x4f, 0x29, 0xd1, +0x26, 0xa6, 0x26, 0x81, 0x81, 0x26, 0xa6, 0x26, +0x81, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x28, +0x01, 0x0a, 0x01, 0xb6, 0x01, 0x8a, 0x00, 0x17, +0x00, 0x2b, 0x00, 0xba, 0x00, 0x0c, 0x00, 0x05, +0x00, 0x03, 0x2b, 0xb8, 0x00, 0x05, 0x10, 0xb8, +0x00, 0x11, 0xd0, 0xb8, 0x00, 0x11, 0x2f, 0xb8, +0x00, 0x00, 0xdc, 0xb8, 0x00, 0x05, 0x10, 0xb8, +0x00, 0x08, 0xdc, 0xb8, 0x00, 0x11, 0x10, 0xb8, +0x00, 0x14, 0xdc, 0x30, 0x31, 0x01, 0x22, 0x2e, +0x02, 0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, 0x01, +0x33, 0x32, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, +0x17, 0x0e, 0x01, 0x01, 0x49, 0x1d, 0x2f, 0x2b, +0x28, 0x16, 0x17, 0x26, 0x12, 0x1d, 0x16, 0x3b, +0x1d, 0x1d, 0x2f, 0x2b, 0x28, 0x16, 0x17, 0x26, +0x12, 0x1c, 0x15, 0x3b, 0x01, 0x0a, 0x1c, 0x22, +0x1c, 0x1c, 0x23, 0x12, 0x2a, 0x29, 0x1c, 0x22, +0x1c, 0x1c, 0x23, 0x14, 0x29, 0x28, 0x00, 0x00, +0xff, 0xff, 0x00, 0x28, 0x00, 0xa5, 0x01, 0xb6, +0x01, 0xf0, 0x02, 0x26, 0x06, 0xe3, 0x00, 0x66, +0x00, 0x06, 0x06, 0xe3, 0x00, 0x9b, 0x00, 0x00, +0x00, 0x01, 0x00, 0x22, 0x00, 0x6e, 0x01, 0xbd, +0x01, 0x5d, 0x00, 0x05, 0x00, 0x0d, 0x00, 0xbb, +0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, +0x2b, 0x30, 0x31, 0x01, 0x21, 0x35, 0x21, 0x15, +0x23, 0x01, 0x94, 0xfe, 0x8e, 0x01, 0x9b, 0x29, +0x01, 0x37, 0x26, 0xef, 0x00, 0x03, 0x00, 0x29, +0x00, 0xa7, 0x02, 0xd2, 0x01, 0xee, 0x00, 0x29, +0x00, 0x35, 0x00, 0x45, 0x00, 0x53, 0x00, 0xbb, +0x00, 0x36, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x20, 0x00, 0x01, 0x00, 0x40, +0x00, 0x04, 0x2b, 0xbb, 0x00, 0x15, 0x00, 0x02, +0x00, 0x30, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x2a, +0x00, 0x01, 0x00, 0x0b, 0x00, 0x04, 0x2b, 0xba, +0x00, 0x06, 0x00, 0x20, 0x00, 0x0b, 0x11, 0x12, +0x39, 0xba, 0x00, 0x1a, 0x00, 0x15, 0x00, 0x00, +0x11, 0x12, 0x39, 0xba, 0x00, 0x2d, 0x00, 0x1a, +0x00, 0x05, 0x11, 0x12, 0x39, 0xba, 0x00, 0x43, +0x00, 0x05, 0x00, 0x1a, 0x11, 0x12, 0x39, 0x30, +0x31, 0x25, 0x22, 0x2e, 0x02, 0x27, 0x23, 0x0e, +0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x33, 0x3e, +0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, +0x02, 0x25, 0x32, 0x36, 0x37, 0x2e, 0x01, 0x23, +0x22, 0x06, 0x15, 0x14, 0x16, 0x05, 0x32, 0x3e, +0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, +0x07, 0x1e, 0x01, 0x02, 0x34, 0x20, 0x36, 0x30, +0x2c, 0x16, 0x04, 0x0d, 0x22, 0x2c, 0x36, 0x21, +0x1c, 0x33, 0x27, 0x17, 0x17, 0x28, 0x36, 0x1f, +0x1f, 0x34, 0x2a, 0x22, 0x0e, 0x04, 0x11, 0x29, +0x30, 0x39, 0x21, 0x24, 0x3b, 0x2a, 0x17, 0x17, +0x2a, 0x3a, 0xfe, 0x64, 0x2f, 0x4d, 0x1d, 0x26, +0x48, 0x2c, 0x2c, 0x3d, 0x3f, 0x01, 0xa6, 0x1b, +0x2b, 0x1e, 0x10, 0x11, 0x1f, 0x2e, 0x1e, 0x31, +0x52, 0x29, 0x31, 0x52, 0xa7, 0x13, 0x21, 0x2e, +0x1b, 0x0e, 0x26, 0x22, 0x18, 0x16, 0x27, 0x36, +0x1f, 0x22, 0x38, 0x27, 0x15, 0x16, 0x21, 0x27, +0x11, 0x17, 0x2d, 0x24, 0x17, 0x18, 0x2a, 0x3b, +0x24, 0x24, 0x3c, 0x2d, 0x19, 0x35, 0x3f, 0x2b, +0x31, 0x3b, 0x35, 0x32, 0x33, 0x3c, 0x09, 0x13, +0x21, 0x2b, 0x19, 0x1b, 0x2e, 0x22, 0x13, 0x41, +0x3a, 0x3f, 0x3c, 0x00, 0xff, 0xff, 0x00, 0x5c, +0xff, 0x4c, 0x01, 0xf8, 0x01, 0xe0, 0x02, 0x06, +0x02, 0x6d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, +0xff, 0xf4, 0x01, 0xcd, 0x02, 0x9f, 0x00, 0x11, +0x00, 0x37, 0x00, 0x32, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x1f, 0x2f, 0x1b, 0xb9, +0x00, 0x1f, 0x00, 0x05, 0x3e, 0x59, 0xbb, 0x00, +0x15, 0x00, 0x01, 0x00, 0x34, 0x00, 0x04, 0x2b, +0xbb, 0x00, 0x29, 0x00, 0x01, 0x00, 0x08, 0x00, +0x04, 0x2b, 0xb8, 0x00, 0x1f, 0x10, 0xb9, 0x00, +0x00, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x37, 0x32, +0x3e, 0x02, 0x37, 0x2e, 0x01, 0x23, 0x22, 0x0e, +0x02, 0x15, 0x14, 0x1e, 0x02, 0x03, 0x3e, 0x01, +0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, +0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, +0x33, 0x32, 0x16, 0x17, 0x36, 0x34, 0x35, 0x34, +0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0xd5, 0x29, +0x42, 0x32, 0x21, 0x08, 0x29, 0x4f, 0x25, 0x2e, +0x42, 0x2a, 0x14, 0x15, 0x25, 0x30, 0x44, 0x1b, +0x4a, 0x2c, 0x2a, 0x49, 0x35, 0x1e, 0x24, 0x42, +0x5d, 0x39, 0x22, 0x3e, 0x30, 0x1d, 0x1c, 0x38, +0x50, 0x35, 0x2d, 0x54, 0x21, 0x01, 0x18, 0x2a, +0x39, 0x22, 0x20, 0x3e, 0x18, 0x1b, 0x25, 0x42, +0x5c, 0x37, 0x2e, 0x25, 0x1e, 0x31, 0x41, 0x24, +0x22, 0x38, 0x29, 0x16, 0x02, 0x45, 0x1d, 0x22, +0x22, 0x4a, 0x75, 0x52, 0x54, 0x8b, 0x63, 0x36, +0x1a, 0x31, 0x46, 0x2c, 0x30, 0x52, 0x3a, 0x21, +0x29, 0x23, 0x0a, 0x14, 0x0b, 0x4b, 0x67, 0x3f, +0x1c, 0x1b, 0x1a, 0x00, 0x00, 0x01, 0x00, 0x3a, +0xff, 0x62, 0x01, 0x12, 0x03, 0x14, 0x00, 0x29, +0x00, 0x17, 0x00, 0xbb, 0x00, 0x06, 0x00, 0x01, +0x00, 0x00, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x15, +0x00, 0x01, 0x00, 0x1b, 0x00, 0x04, 0x2b, 0x30, +0x31, 0x17, 0x22, 0x27, 0x37, 0x1e, 0x01, 0x33, +0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x35, +0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x07, +0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, +0x02, 0x15, 0x14, 0x0e, 0x02, 0x64, 0x1e, 0x0c, +0x07, 0x06, 0x11, 0x0b, 0x16, 0x1b, 0x0f, 0x05, +0x0e, 0x11, 0x0e, 0x09, 0x19, 0x2b, 0x22, 0x0d, +0x16, 0x05, 0x07, 0x0b, 0x17, 0x15, 0x1b, 0x0e, +0x05, 0x0d, 0x11, 0x0d, 0x09, 0x18, 0x2b, 0x9e, +0x06, 0x24, 0x02, 0x02, 0x19, 0x2d, 0x41, 0x29, +0x35, 0x88, 0x8c, 0x86, 0x33, 0x2e, 0x50, 0x3a, +0x22, 0x03, 0x03, 0x24, 0x04, 0x19, 0x2e, 0x42, +0x28, 0x35, 0x87, 0x8c, 0x85, 0x34, 0x2f, 0x4f, +0x3b, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x31, +0xff, 0x97, 0x02, 0x1d, 0x03, 0x34, 0x00, 0x0e, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x07, 0x00, 0x02, +0x00, 0x0e, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x07, 0x27, 0x37, 0x13, 0x16, 0x17, 0x33, 0x3e, +0x01, 0x37, 0x13, 0x33, 0x03, 0x23, 0x85, 0x45, +0x0f, 0x6d, 0x7e, 0x08, 0x07, 0x04, 0x03, 0x04, +0x04, 0xbd, 0x26, 0xd9, 0x29, 0x01, 0x4e, 0x20, +0x1f, 0x33, 0xfe, 0x87, 0x18, 0x1c, 0x0d, 0x1a, +0x0d, 0x03, 0x2d, 0xfc, 0x63, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x1b, 0x00, 0x00, 0x02, 0x12, +0x02, 0x93, 0x02, 0x06, 0x02, 0x44, 0x00, 0x00, +0xff, 0xff, 0x00, 0x2e, 0x00, 0x00, 0x02, 0x65, +0x02, 0x9f, 0x02, 0x06, 0x02, 0x58, 0x00, 0x00, +0x00, 0x01, 0x00, 0x13, 0xff, 0x88, 0x01, 0xe7, +0x02, 0x7f, 0x00, 0x0d, 0x00, 0x28, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, 0x2f, +0x1b, 0xb9, 0x00, 0x03, 0x00, 0x0f, 0x3e, 0x59, +0xbb, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x0c, 0x00, +0x04, 0x2b, 0xb8, 0x00, 0x03, 0x10, 0xb9, 0x00, +0x05, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, 0x01, +0x03, 0x35, 0x21, 0x15, 0x21, 0x15, 0x13, 0x03, +0x15, 0x21, 0x15, 0x21, 0x13, 0x01, 0x01, 0xf5, +0x01, 0xa9, 0xfe, 0x91, 0xef, 0xfa, 0x01, 0x99, +0xfe, 0x2c, 0x57, 0x01, 0x5b, 0x01, 0x5a, 0x21, +0x27, 0x04, 0xfe, 0xb1, 0xfe, 0xaf, 0x04, 0x28, +0x00, 0x01, 0x00, 0x5e, 0xff, 0x88, 0x02, 0x2e, +0x02, 0x7f, 0x00, 0x07, 0x00, 0x1a, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x0f, 0x3e, 0x59, +0xb9, 0x00, 0x04, 0x00, 0x01, 0xf4, 0x30, 0x31, +0x13, 0x21, 0x11, 0x23, 0x11, 0x21, 0x11, 0x23, +0x5e, 0x01, 0xd0, 0x30, 0xfe, 0x8e, 0x2e, 0x02, +0x7f, 0xfd, 0x09, 0x02, 0xcf, 0xfd, 0x31, 0x00, +0x00, 0x02, 0x00, 0x1c, 0xff, 0xf4, 0x01, 0x66, +0x02, 0xdb, 0x00, 0x09, 0x00, 0x31, 0x00, 0x28, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x0d, 0x2f, 0x1b, 0xb9, 0x00, 0x0d, 0x00, 0x05, +0x3e, 0x59, 0xbb, 0x00, 0x20, 0x00, 0x01, 0x00, +0x06, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x0d, 0x10, +0xb9, 0x00, 0x2e, 0x00, 0x01, 0xf4, 0x30, 0x31, +0x13, 0x3e, 0x01, 0x35, 0x34, 0x26, 0x23, 0x22, +0x06, 0x15, 0x13, 0x0e, 0x01, 0x23, 0x22, 0x2e, +0x02, 0x3d, 0x01, 0x0e, 0x01, 0x07, 0x27, 0x3e, +0x01, 0x37, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, +0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x15, 0x14, +0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x96, 0x41, +0x53, 0x28, 0x1e, 0x20, 0x2e, 0xd0, 0x14, 0x39, +0x26, 0x1c, 0x32, 0x25, 0x16, 0x0e, 0x1d, 0x0f, +0x14, 0x14, 0x27, 0x13, 0x13, 0x21, 0x2c, 0x19, +0x31, 0x40, 0x1d, 0x33, 0x46, 0x28, 0x10, 0x1a, +0x23, 0x14, 0x20, 0x29, 0x12, 0x01, 0x0d, 0x45, +0xa3, 0x53, 0x3d, 0x31, 0x4b, 0x4e, 0xfe, 0x0e, +0x14, 0x23, 0x17, 0x2c, 0x42, 0x2c, 0x0b, 0x0c, +0x15, 0x0b, 0x1f, 0x0e, 0x1f, 0x11, 0x01, 0x31, +0x37, 0x4d, 0x30, 0x15, 0x49, 0x48, 0x30, 0x63, +0x5f, 0x59, 0x27, 0x28, 0x29, 0x38, 0x24, 0x10, +0x1b, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x2e, +0xff, 0xf4, 0x02, 0xf2, 0x02, 0x94, 0x00, 0x11, +0x00, 0x32, 0x00, 0x4b, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x1f, 0x2f, 0x1b, 0xb9, +0x00, 0x1f, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x15, 0x2f, 0x1b, +0xb9, 0x00, 0x15, 0x00, 0x05, 0x3e, 0x59, 0xba, +0x00, 0x00, 0x00, 0x25, 0x00, 0x03, 0x2b, 0xb8, +0x00, 0x1f, 0x10, 0xb9, 0x00, 0x08, 0x00, 0x01, +0xf4, 0xba, 0x00, 0x12, 0x00, 0x15, 0x00, 0x1f, +0x11, 0x12, 0x39, 0xb8, 0x00, 0x15, 0x10, 0xb9, +0x00, 0x2f, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x01, +0x32, 0x3d, 0x01, 0x34, 0x27, 0x2e, 0x01, 0x23, +0x22, 0x06, 0x07, 0x0e, 0x01, 0x1d, 0x01, 0x14, +0x33, 0x05, 0x0e, 0x01, 0x23, 0x22, 0x2e, 0x02, +0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, +0x1d, 0x01, 0x21, 0x22, 0x1d, 0x01, 0x14, 0x16, +0x17, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x37, 0x02, +0x6c, 0x06, 0x0a, 0x2a, 0x6e, 0x3e, 0x41, 0x6f, +0x2a, 0x03, 0x05, 0x04, 0x01, 0xf6, 0x32, 0x92, +0x56, 0x4a, 0x81, 0x60, 0x37, 0x37, 0x60, 0x81, +0x4a, 0x49, 0x81, 0x60, 0x38, 0xfd, 0xc2, 0x04, +0x05, 0x03, 0x29, 0x70, 0x41, 0x44, 0x76, 0x2a, +0x01, 0x4e, 0x06, 0xb8, 0x0c, 0x0a, 0x2c, 0x32, +0x35, 0x2d, 0x05, 0x0b, 0x06, 0xb4, 0x06, 0xd6, +0x3c, 0x48, 0x35, 0x5b, 0x7a, 0x46, 0x46, 0x7a, +0x5b, 0x35, 0x35, 0x5b, 0x7a, 0x46, 0x08, 0x04, +0xb8, 0x06, 0x09, 0x05, 0x2f, 0x35, 0x3d, 0x33, +0x00, 0x01, 0x00, 0x1d, 0xff, 0xf2, 0x02, 0x44, +0x02, 0x06, 0x00, 0x09, 0x00, 0x0d, 0x00, 0xbb, +0x00, 0x05, 0x00, 0x01, 0x00, 0x06, 0x00, 0x04, +0x2b, 0x30, 0x31, 0x37, 0x35, 0x01, 0x17, 0x07, +0x21, 0x15, 0x21, 0x17, 0x07, 0x1d, 0x01, 0x0d, +0x1a, 0xe7, 0x01, 0xe7, 0xfe, 0x19, 0xe7, 0x1a, +0xfa, 0x04, 0x01, 0x08, 0x1b, 0xdc, 0x26, 0xdc, +0x1b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2b, +0xff, 0xe8, 0x02, 0x40, 0x02, 0x0e, 0x00, 0x09, +0x00, 0x22, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, 0x03, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x08, 0xdc, +0xba, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x11, +0x12, 0x39, 0x30, 0x31, 0x01, 0x07, 0x27, 0x01, +0x33, 0x01, 0x07, 0x27, 0x11, 0x23, 0x01, 0x22, +0xdb, 0x1c, 0x01, 0x09, 0x04, 0x01, 0x08, 0x1b, +0xdc, 0x27, 0x01, 0xce, 0xe7, 0x1a, 0x01, 0x0d, +0xfe, 0xf3, 0x1a, 0xe7, 0xfe, 0x1a, 0x00, 0x00, +0x00, 0x01, 0x00, 0x26, 0xff, 0xf2, 0x02, 0x4d, +0x02, 0x06, 0x00, 0x09, 0x00, 0x0d, 0x00, 0xbb, +0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, +0x2b, 0x30, 0x31, 0x25, 0x37, 0x21, 0x35, 0x21, +0x27, 0x37, 0x01, 0x15, 0x01, 0x01, 0x26, 0xe6, +0xfe, 0x1a, 0x01, 0xe6, 0xe6, 0x1a, 0x01, 0x0d, +0xfe, 0xf3, 0x0d, 0xdc, 0x26, 0xdc, 0x1b, 0xfe, +0xf8, 0x04, 0xfe, 0xf8, 0x00, 0x01, 0x00, 0x2b, +0xff, 0xe8, 0x02, 0x40, 0x02, 0x0e, 0x00, 0x09, +0x00, 0x22, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, 0x03, +0x00, 0x0b, 0x3e, 0x59, 0xb8, 0x00, 0x08, 0xdc, +0xba, 0x00, 0x05, 0x00, 0x03, 0x00, 0x08, 0x11, +0x12, 0x39, 0x30, 0x31, 0x3f, 0x01, 0x17, 0x11, +0x33, 0x11, 0x37, 0x17, 0x01, 0x23, 0x2b, 0x1c, +0xdb, 0x27, 0xdc, 0x1b, 0xfe, 0xf8, 0x04, 0xf5, +0x1a, 0xe7, 0x01, 0xe6, 0xfe, 0x1a, 0xe7, 0x1a, +0xfe, 0xf3, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2d, +0xff, 0xc4, 0x03, 0x5d, 0x02, 0xf4, 0x00, 0x03, +0x00, 0x0b, 0x00, 0xba, 0x00, 0x01, 0x00, 0x02, +0x00, 0x03, 0x2b, 0x30, 0x31, 0x13, 0x21, 0x11, +0x21, 0x2d, 0x03, 0x30, 0xfc, 0xd0, 0x02, 0xf4, +0xfc, 0xd0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x19, +0xff, 0xb0, 0x03, 0x71, 0x03, 0x08, 0x00, 0x03, +0x00, 0x0b, 0x00, 0xba, 0x00, 0x01, 0x00, 0x03, +0x00, 0x03, 0x2b, 0x30, 0x31, 0x13, 0x09, 0x02, +0x19, 0x01, 0xac, 0x01, 0xac, 0xfe, 0x54, 0x01, +0x5c, 0x01, 0xac, 0xfe, 0x54, 0xfe, 0x54, 0x00, +0x00, 0x03, 0x00, 0x23, 0xff, 0xb5, 0x03, 0x68, +0x03, 0x03, 0x00, 0x13, 0x00, 0x27, 0x00, 0x3b, +0x00, 0x17, 0x00, 0xbb, 0x00, 0x14, 0x00, 0x01, +0x00, 0x00, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x0a, +0x00, 0x01, 0x00, 0x1e, 0x00, 0x04, 0x2b, 0x30, +0x31, 0x05, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, +0x02, 0x27, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, +0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, +0x02, 0x37, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, +0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, +0x02, 0x01, 0xc5, 0x53, 0x98, 0x73, 0x44, 0x44, +0x73, 0x98, 0x53, 0x53, 0x98, 0x73, 0x45, 0x45, +0x73, 0x98, 0x53, 0x48, 0x87, 0x69, 0x40, 0x40, +0x69, 0x87, 0x48, 0x47, 0x87, 0x6a, 0x40, 0x40, +0x6a, 0x87, 0x47, 0x36, 0x65, 0x4c, 0x2e, 0x2e, +0x4c, 0x65, 0x36, 0x36, 0x65, 0x4d, 0x2e, 0x2e, +0x4d, 0x65, 0x4b, 0x38, 0x6c, 0x9e, 0x65, 0x63, +0x9d, 0x6d, 0x3a, 0x3a, 0x6d, 0x9d, 0x63, 0x65, +0x9e, 0x6c, 0x38, 0x25, 0x32, 0x62, 0x90, 0x5e, +0x5e, 0x90, 0x62, 0x32, 0x32, 0x62, 0x90, 0x5e, +0x5e, 0x90, 0x62, 0x32, 0x67, 0x27, 0x49, 0x69, +0x42, 0x41, 0x69, 0x49, 0x28, 0x28, 0x49, 0x69, +0x41, 0x42, 0x69, 0x49, 0x27, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x2d, 0xff, 0xc4, 0x03, 0x5d, +0x02, 0xf4, 0x00, 0x05, 0x00, 0x09, 0x00, 0x17, +0x00, 0xbb, 0x00, 0x06, 0x00, 0x01, 0x00, 0x04, +0x00, 0x04, 0x2b, 0xbb, 0x00, 0x02, 0x00, 0x02, +0x00, 0x07, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x13, +0x37, 0x21, 0x11, 0x07, 0x21, 0x25, 0x11, 0x21, +0x11, 0x2d, 0x38, 0x02, 0xf8, 0x2e, 0xfc, 0xfe, +0x02, 0xec, 0xfd, 0x35, 0x02, 0xc6, 0x2e, 0xfd, +0x08, 0x38, 0x1f, 0x02, 0xcd, 0xfd, 0x33, 0x00, +0x00, 0x01, 0x00, 0x36, 0xff, 0xc4, 0x03, 0x54, +0x03, 0x08, 0x00, 0x05, 0x00, 0x0b, 0x00, 0xba, +0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x2b, 0x30, +0x31, 0x17, 0x01, 0x33, 0x01, 0x15, 0x21, 0x36, +0x01, 0x8d, 0x04, 0x01, 0x8d, 0xfc, 0xe2, 0x3a, +0x03, 0x42, 0xfc, 0xbe, 0x02, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x36, 0xff, 0xc4, 0x03, 0x54, +0x03, 0x08, 0x00, 0x05, 0x00, 0x08, 0x00, 0x0d, +0x00, 0xbb, 0x00, 0x06, 0x00, 0x01, 0x00, 0x04, +0x00, 0x04, 0x2b, 0x30, 0x31, 0x17, 0x01, 0x33, +0x01, 0x15, 0x21, 0x25, 0x09, 0x01, 0x36, 0x01, +0x8d, 0x04, 0x01, 0x8d, 0xfc, 0xe2, 0x02, 0xe3, +0xfe, 0xac, 0xfe, 0xac, 0x3a, 0x03, 0x42, 0xfc, +0xbe, 0x02, 0x24, 0x02, 0xd2, 0xfd, 0x2e, 0x00, +0x00, 0x01, 0x00, 0x2d, 0xff, 0xcd, 0x03, 0x71, +0x02, 0xeb, 0x00, 0x05, 0x00, 0x0b, 0x00, 0xba, +0x00, 0x01, 0x00, 0x04, 0x00, 0x03, 0x2b, 0x30, +0x31, 0x13, 0x33, 0x01, 0x15, 0x01, 0x23, 0x2d, +0x02, 0x03, 0x42, 0xfc, 0xbe, 0x02, 0x02, 0xeb, +0xfe, 0x73, 0x04, 0xfe, 0x73, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x2d, 0xff, 0xcd, 0x03, 0x71, +0x02, 0xeb, 0x00, 0x05, 0x00, 0x08, 0x00, 0x29, +0x00, 0xba, 0x00, 0x01, 0x00, 0x04, 0x00, 0x03, +0x2b, 0xba, 0x00, 0x06, 0x00, 0x04, 0x00, 0x01, +0x11, 0x12, 0x39, 0xba, 0x00, 0x07, 0x00, 0x04, +0x00, 0x01, 0x11, 0x12, 0x39, 0xba, 0x00, 0x08, +0x00, 0x04, 0x00, 0x01, 0x11, 0x12, 0x39, 0x30, +0x31, 0x13, 0x33, 0x01, 0x15, 0x01, 0x23, 0x09, +0x01, 0x11, 0x2d, 0x02, 0x03, 0x42, 0xfc, 0xbe, +0x02, 0x02, 0xf6, 0xfd, 0x30, 0x02, 0xeb, 0xfe, +0x73, 0x04, 0xfe, 0x73, 0x01, 0x8f, 0x01, 0x54, +0xfd, 0x58, 0x00, 0x00, 0x00, 0x01, 0x00, 0x36, +0xff, 0xb0, 0x03, 0x54, 0x02, 0xf4, 0x00, 0x05, +0x00, 0x0b, 0x00, 0xba, 0x00, 0x05, 0x00, 0x01, +0x00, 0x03, 0x2b, 0x30, 0x31, 0x09, 0x01, 0x23, +0x01, 0x35, 0x21, 0x03, 0x54, 0xfe, 0x73, 0x04, +0xfe, 0x73, 0x03, 0x1e, 0x02, 0xf2, 0xfc, 0xbe, +0x03, 0x42, 0x02, 0x00, 0x00, 0x02, 0x00, 0x36, +0xff, 0xb0, 0x03, 0x54, 0x02, 0xf4, 0x00, 0x05, +0x00, 0x08, 0x00, 0x0d, 0x00, 0xbb, 0x00, 0x04, +0x00, 0x01, 0x00, 0x06, 0x00, 0x04, 0x2b, 0x30, +0x31, 0x09, 0x01, 0x23, 0x01, 0x35, 0x21, 0x05, +0x09, 0x01, 0x03, 0x54, 0xfe, 0x73, 0x04, 0xfe, +0x73, 0x03, 0x1e, 0xfd, 0x1d, 0x01, 0x54, 0x01, +0x54, 0x02, 0xf2, 0xfc, 0xbe, 0x03, 0x42, 0x02, +0x24, 0xfd, 0x2e, 0x02, 0xd2, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x19, 0xff, 0xcd, 0x03, 0x5d, +0x02, 0xeb, 0x00, 0x05, 0x00, 0x15, 0x00, 0xba, +0x00, 0x05, 0x00, 0x00, 0x00, 0x03, 0x2b, 0xba, +0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x11, 0x12, +0x39, 0x30, 0x31, 0x05, 0x23, 0x01, 0x35, 0x01, +0x33, 0x03, 0x5d, 0x02, 0xfc, 0xbe, 0x03, 0x42, +0x02, 0x33, 0x01, 0x8d, 0x04, 0x01, 0x8d, 0x00, +0x00, 0x02, 0x00, 0x19, 0xff, 0xcd, 0x03, 0x5d, +0x02, 0xeb, 0x00, 0x05, 0x00, 0x08, 0x00, 0x33, +0x00, 0xba, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, +0x2b, 0xba, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, +0x11, 0x12, 0x39, 0xba, 0x00, 0x06, 0x00, 0x00, +0x00, 0x05, 0x11, 0x12, 0x39, 0xba, 0x00, 0x07, +0x00, 0x00, 0x00, 0x05, 0x11, 0x12, 0x39, 0xba, +0x00, 0x08, 0x00, 0x00, 0x00, 0x05, 0x11, 0x12, +0x39, 0x30, 0x31, 0x05, 0x23, 0x01, 0x35, 0x01, +0x33, 0x09, 0x01, 0x11, 0x03, 0x5d, 0x02, 0xfc, +0xbe, 0x03, 0x42, 0x02, 0xfd, 0x0a, 0x02, 0xd0, +0x33, 0x01, 0x8d, 0x04, 0x01, 0x8d, 0xfe, 0x71, +0xfe, 0xac, 0x02, 0xa8, 0x00, 0x02, 0x00, 0x4a, +0xff, 0xf6, 0x02, 0xd0, 0x02, 0x9d, 0x00, 0x05, +0x00, 0x09, 0x00, 0x35, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x01, 0x2f, 0x1b, 0xb9, +0x00, 0x01, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, 0x1b, +0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, 0x59, 0xb9, +0x00, 0x06, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x01, +0x10, 0xb9, 0x00, 0x07, 0x00, 0x02, 0xf4, 0x30, +0x31, 0x13, 0x37, 0x21, 0x11, 0x07, 0x21, 0x25, +0x11, 0x21, 0x11, 0x4a, 0x35, 0x02, 0x51, 0x2d, +0xfd, 0xa7, 0x02, 0x43, 0xfd, 0xde, 0x02, 0x72, +0x2b, 0xfd, 0x8e, 0x35, 0x21, 0x02, 0x45, 0xfd, +0xbb, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x4a, +0xff, 0xf6, 0x03, 0x23, 0x03, 0x10, 0x00, 0x12, +0x00, 0x1e, 0x00, 0x62, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x15, 0x2f, 0x1b, 0xb9, +0x00, 0x15, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x1a, 0x2f, 0x1b, +0xb9, 0x00, 0x1a, 0x00, 0x11, 0x3e, 0x59, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x17, 0x2f, +0x1b, 0xb9, 0x00, 0x17, 0x00, 0x05, 0x3e, 0x59, +0xbb, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x03, 0x00, +0x04, 0x2b, 0xba, 0x00, 0x00, 0x00, 0x17, 0x00, +0x1a, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x15, 0x10, +0xb9, 0x00, 0x0f, 0x00, 0x02, 0xf4, 0xb8, 0x00, +0x10, 0xd0, 0xb8, 0x00, 0x17, 0x10, 0xb9, 0x00, +0x11, 0x00, 0x01, 0xf4, 0x30, 0x31, 0x01, 0x0e, +0x01, 0x0f, 0x01, 0x2e, 0x01, 0x27, 0x37, 0x1e, +0x01, 0x17, 0x33, 0x3e, 0x01, 0x37, 0x21, 0x11, +0x21, 0x13, 0x06, 0x07, 0x11, 0x07, 0x21, 0x11, +0x37, 0x21, 0x3e, 0x01, 0x37, 0x02, 0x8d, 0x4d, +0x7a, 0x25, 0x38, 0x1b, 0x47, 0x2a, 0x23, 0x26, +0x44, 0x14, 0x04, 0x22, 0x79, 0x4c, 0xfe, 0x02, +0x02, 0x22, 0x96, 0x2a, 0x29, 0x2d, 0xfd, 0xa7, +0x35, 0x02, 0x1b, 0x1a, 0x34, 0x1b, 0x02, 0x47, +0x67, 0xf2, 0x82, 0x07, 0x4e, 0x8d, 0x3e, 0x18, +0x3c, 0x87, 0x43, 0x75, 0xed, 0x6a, 0xfd, 0xbb, +0x02, 0xd9, 0x27, 0x2f, 0xfd, 0x91, 0x35, 0x02, +0x7c, 0x2b, 0x20, 0x39, 0x1a, 0x00, 0x00, 0x00, +0x00, 0x01, 0xff, 0xfc, 0xff, 0xec, 0x02, 0x55, +0x02, 0xa9, 0x00, 0x13, 0x00, 0x2f, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x05, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x12, +0x2f, 0x1b, 0xb9, 0x00, 0x12, 0x00, 0x05, 0x3e, +0x59, 0xb8, 0x00, 0x00, 0x10, 0xb9, 0x00, 0x06, +0x00, 0x01, 0xf4, 0x30, 0x31, 0x17, 0x26, 0x27, +0x37, 0x1e, 0x01, 0x17, 0x33, 0x3e, 0x03, 0x37, +0x17, 0x0e, 0x03, 0x0f, 0x01, 0x8f, 0x39, 0x5a, +0x22, 0x2a, 0x47, 0x17, 0x04, 0x1a, 0x53, 0x67, +0x78, 0x3f, 0x20, 0x40, 0x78, 0x68, 0x54, 0x1b, +0x37, 0x14, 0xa2, 0x83, 0x18, 0x3f, 0x8d, 0x46, +0x59, 0xb6, 0xac, 0x9a, 0x3d, 0x20, 0x3c, 0x95, +0xaa, 0xba, 0x61, 0x07, 0x00, 0x01, 0x00, 0x1f, +0xff, 0xeb, 0x01, 0xc5, 0x02, 0xb6, 0x00, 0x26, +0x00, 0x15, 0x00, 0xba, 0x00, 0x08, 0x00, 0x00, +0x00, 0x03, 0x2b, 0xba, 0x00, 0x0b, 0x00, 0x00, +0x00, 0x08, 0x11, 0x12, 0x39, 0x30, 0x31, 0x17, +0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, +0x16, 0x17, 0x11, 0x33, 0x1e, 0x03, 0x17, 0x1e, +0x03, 0x15, 0x14, 0x06, 0x07, 0x27, 0x3e, 0x01, +0x35, 0x34, 0x26, 0x27, 0x11, 0x14, 0x0e, 0x02, +0x7e, 0x28, 0x37, 0x15, 0x28, 0x37, 0x23, 0x14, +0x22, 0x07, 0x21, 0x04, 0x08, 0x0f, 0x18, 0x13, +0x21, 0x29, 0x18, 0x09, 0x0e, 0x08, 0x1b, 0x08, +0x04, 0x44, 0x41, 0x1c, 0x2c, 0x39, 0x15, 0x25, +0x21, 0x15, 0x27, 0x1e, 0x12, 0x07, 0x05, 0x02, +0x25, 0x0b, 0x10, 0x10, 0x13, 0x0d, 0x18, 0x2e, +0x2e, 0x32, 0x1b, 0x25, 0x3f, 0x16, 0x0a, 0x19, +0x28, 0x1b, 0x31, 0x56, 0x13, 0xfe, 0x4e, 0x25, +0x37, 0x25, 0x12, 0x00, 0x00, 0x02, 0x00, 0x3b, +0xff, 0xf6, 0x01, 0xb8, 0x02, 0x9e, 0x00, 0x05, +0x00, 0x0f, 0x00, 0x35, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x01, 0x2f, 0x1b, 0xb9, +0x00, 0x01, 0x00, 0x11, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, 0x1b, +0xb9, 0x00, 0x04, 0x00, 0x05, 0x3e, 0x59, 0xb9, +0x00, 0x06, 0x00, 0x01, 0xf4, 0xb8, 0x00, 0x01, +0x10, 0xb9, 0x00, 0x0a, 0x00, 0x01, 0xf4, 0x30, +0x31, 0x1b, 0x01, 0x33, 0x13, 0x03, 0x23, 0x3f, +0x02, 0x2f, 0x01, 0x23, 0x0f, 0x01, 0x1f, 0x01, +0x3b, 0xa6, 0x31, 0xa6, 0xa6, 0x31, 0x1a, 0x44, +0x4c, 0x4c, 0x44, 0x04, 0x44, 0x4b, 0x4b, 0x44, +0x01, 0x4a, 0x01, 0x54, 0xfe, 0xac, 0xfe, 0xac, +0x26, 0x8b, 0xa3, 0xa1, 0x8d, 0x8d, 0xa1, 0xa3, +0x8b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x52, +0x01, 0xe5, 0x00, 0x94, 0x02, 0xb5, 0x00, 0x04, +0x00, 0x0b, 0x00, 0xba, 0x00, 0x00, 0x00, 0x03, +0x00, 0x03, 0x2b, 0x30, 0x31, 0x13, 0x17, 0x0f, +0x01, 0x27, 0x69, 0x2b, 0x0a, 0x1b, 0x1d, 0x02, +0xb5, 0x02, 0x46, 0x88, 0x01, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x52, 0x01, 0xe5, 0x01, 0x21, +0x02, 0xb5, 0x00, 0x26, 0x07, 0x06, 0x00, 0x00, +0x00, 0x07, 0x07, 0x06, 0x00, 0x8d, 0x00, 0x00, +0x00, 0x01, 0x00, 0x47, 0x01, 0xe5, 0x00, 0x89, +0x02, 0xb5, 0x00, 0x04, 0x00, 0x0b, 0x00, 0xba, +0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x2b, 0x30, +0x31, 0x13, 0x2f, 0x01, 0x37, 0x17, 0x6c, 0x1b, +0x0a, 0x2b, 0x17, 0x01, 0xe5, 0x88, 0x46, 0x02, +0xcf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x52, +0x01, 0xe5, 0x00, 0x94, 0x02, 0xb5, 0x02, 0x06, +0x07, 0x06, 0x00, 0x00, 0xff, 0xff, 0x00, 0x3a, +0x01, 0xe0, 0x00, 0xa1, 0x02, 0xbf, 0x02, 0x06, +0x04, 0x82, 0x00, 0x00, 0xff, 0xff, 0x00, 0x3a, +0x01, 0xdd, 0x00, 0xa2, 0x02, 0xbc, 0x02, 0x06, +0x04, 0x83, 0x00, 0x00, 0xff, 0xff, 0x00, 0x21, +0x02, 0x22, 0x00, 0x8f, 0x02, 0xe1, 0x00, 0x07, +0x07, 0x62, 0x00, 0x53, 0x03, 0x25, 0x00, 0x00, +0xff, 0xff, 0x00, 0x11, 0x02, 0x22, 0x00, 0x7f, +0x02, 0xe1, 0x00, 0x07, 0x07, 0x4c, 0x00, 0x4d, +0x03, 0x25, 0x00, 0x00, 0xff, 0xff, 0x00, 0x98, +0x02, 0x3e, 0x01, 0x40, 0x02, 0xf2, 0x00, 0x07, +0x07, 0x21, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0xd6, 0x02, 0x3e, 0x01, 0x7e, +0x02, 0xf2, 0x00, 0x07, 0x07, 0x24, 0x01, 0x0b, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x81, +0x02, 0x3c, 0x01, 0x95, 0x02, 0xe1, 0x00, 0x07, +0x07, 0x27, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x81, 0x02, 0x3d, 0x01, 0x95, +0x02, 0xe1, 0x00, 0x07, 0x07, 0x3d, 0x01, 0x0b, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1a, +0x02, 0x11, 0x00, 0x45, 0x02, 0xcf, 0x00, 0x03, +0x00, 0x18, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x02, 0xdc, +0x30, 0x31, 0x13, 0x33, 0x07, 0x23, 0x1a, 0x2b, +0x06, 0x1f, 0x02, 0xcf, 0xbe, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x06, 0x02, 0x5e, 0x00, 0xfc, +0x02, 0x82, 0x00, 0x07, 0x07, 0x2b, 0x00, 0x81, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x36, +0x02, 0x3e, 0x00, 0xde, 0x02, 0xf2, 0x00, 0x06, +0x07, 0x24, 0x6b, 0x00, 0xff, 0xff, 0xff, 0xf8, +0x02, 0x3e, 0x00, 0xa0, 0x02, 0xf2, 0x00, 0x06, +0x07, 0x21, 0x6b, 0x00, 0xff, 0xff, 0x00, 0x1b, +0xfe, 0xf7, 0x00, 0x45, 0xff, 0xb5, 0x00, 0x06, +0x07, 0x5a, 0x30, 0x00, 0xff, 0xff, 0x00, 0x67, +0x02, 0x43, 0x01, 0xaf, 0x02, 0xc6, 0x00, 0x07, +0x07, 0x29, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x8d, 0x02, 0x56, 0x01, 0x89, +0x02, 0xa0, 0x00, 0x07, 0x07, 0x35, 0x01, 0x0b, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x90, +0x02, 0x5e, 0x01, 0x86, 0x02, 0x82, 0x00, 0x07, +0x07, 0x2b, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x76, 0x02, 0x3a, 0x01, 0xa0, +0x02, 0xd3, 0x00, 0x07, 0x07, 0x2f, 0x01, 0x0b, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xaa, +0x02, 0x24, 0x01, 0x6c, 0x02, 0xe3, 0x00, 0x07, +0x07, 0x39, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0xbe, 0x02, 0x39, 0x01, 0xbd, +0x02, 0xee, 0x00, 0x07, 0x07, 0x3b, 0x01, 0x0b, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xe5, +0x02, 0x54, 0x01, 0x31, 0x02, 0xa4, 0x00, 0x07, +0x07, 0x33, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0xc0, 0xff, 0x25, 0x01, 0x58, +0x00, 0x02, 0x00, 0x07, 0x07, 0x56, 0x01, 0x14, +0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xd5, +0xff, 0x35, 0x01, 0x67, 0x00, 0x04, 0x00, 0x07, +0x07, 0x58, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0c, 0x00, 0x34, 0xff, 0xf4, 0x02, 0x1b, +0x01, 0xec, 0x00, 0x0b, 0x00, 0x17, 0x00, 0x23, +0x00, 0x2f, 0x00, 0x3b, 0x00, 0x47, 0x00, 0x53, +0x00, 0x5e, 0x00, 0x6a, 0x00, 0x76, 0x00, 0x82, +0x00, 0x8d, 0x00, 0xcb, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x4e, 0x2f, 0x1b, 0xb9, +0x00, 0x4e, 0x00, 0x09, 0x3e, 0x59, 0xb8, 0x00, +0x00, 0x45, 0x58, 0xb8, 0x00, 0x3c, 0x2f, 0x1b, +0xb9, 0x00, 0x3c, 0x00, 0x05, 0x3e, 0x59, 0xbb, +0x00, 0x2a, 0x00, 0x02, 0x00, 0x24, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x65, 0x00, 0x02, 0x00, 0x5f, +0x00, 0x04, 0x2b, 0xbb, 0x00, 0x06, 0x00, 0x02, +0x00, 0x00, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x89, +0x00, 0x02, 0x00, 0x83, 0x00, 0x04, 0x2b, 0xbb, +0x00, 0x12, 0x00, 0x02, 0x00, 0x0c, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x83, 0x10, 0xb8, 0x00, 0x18, +0xd0, 0xb8, 0x00, 0x18, 0x2f, 0xb8, 0x00, 0x89, +0x10, 0xb8, 0x00, 0x1e, 0xd0, 0xb8, 0x00, 0x1e, +0x2f, 0xb8, 0x00, 0x5f, 0x10, 0xb8, 0x00, 0x30, +0xd0, 0xb8, 0x00, 0x30, 0x2f, 0xb8, 0x00, 0x65, +0x10, 0xb8, 0x00, 0x36, 0xd0, 0xb8, 0x00, 0x36, +0x2f, 0xb8, 0x00, 0x3c, 0x10, 0xb9, 0x00, 0x42, +0x00, 0x02, 0xf4, 0xb8, 0x00, 0x4e, 0x10, 0xb9, +0x00, 0x48, 0x00, 0x02, 0xf4, 0xb8, 0x00, 0x24, +0x10, 0xb8, 0x00, 0x54, 0xd0, 0xb8, 0x00, 0x2a, +0x10, 0xb8, 0x00, 0x5a, 0xd0, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x6b, 0xd0, 0xb8, 0x00, 0x06, +0x10, 0xb8, 0x00, 0x71, 0xd0, 0xb8, 0x00, 0x0c, +0x10, 0xb8, 0x00, 0x77, 0xd0, 0xb8, 0x00, 0x12, +0x10, 0xb8, 0x00, 0x7d, 0xd0, 0x30, 0x31, 0x37, +0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, +0x15, 0x14, 0x06, 0x27, 0x22, 0x26, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x37, +0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, +0x15, 0x14, 0x06, 0x13, 0x22, 0x26, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x03, +0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, +0x15, 0x14, 0x06, 0x13, 0x22, 0x26, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x03, +0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, +0x15, 0x14, 0x06, 0x13, 0x22, 0x26, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x03, 0x22, +0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, +0x14, 0x06, 0x13, 0x22, 0x26, 0x35, 0x34, 0x36, +0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x37, 0x22, +0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, +0x14, 0x06, 0x27, 0x22, 0x26, 0x35, 0x34, 0x36, +0x33, 0x32, 0x16, 0x15, 0x14, 0x6d, 0x0c, 0x12, +0x12, 0x0c, 0x0e, 0x13, 0x12, 0x2b, 0x0b, 0x12, +0x12, 0x0b, 0x0f, 0x13, 0x13, 0x0d, 0x0c, 0x12, +0x12, 0x0c, 0x0e, 0x13, 0x12, 0x40, 0x0c, 0x12, +0x12, 0x0c, 0x0e, 0x12, 0x12, 0x0e, 0x0c, 0x12, +0x12, 0x0c, 0x0e, 0x12, 0x12, 0x5c, 0x0c, 0x12, +0x12, 0x0c, 0x0e, 0x13, 0x13, 0x0e, 0x0c, 0x12, +0x12, 0x0c, 0x0e, 0x13, 0x13, 0x5c, 0x0c, 0x11, +0x11, 0x0c, 0x0e, 0x12, 0x20, 0x0c, 0x11, 0x11, +0x0c, 0x0e, 0x12, 0x11, 0x40, 0x0c, 0x12, 0x12, +0x0c, 0x0e, 0x12, 0x11, 0x0d, 0x0e, 0x11, 0x11, +0x0e, 0x0c, 0x14, 0x12, 0x2a, 0x0c, 0x12, 0x12, +0x0c, 0x0e, 0x12, 0x61, 0x12, 0x0f, 0x11, 0x11, +0x11, 0x11, 0x0f, 0x12, 0x6e, 0x11, 0x10, 0x11, +0x10, 0x10, 0x11, 0x10, 0x11, 0x6f, 0x11, 0x11, +0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0xfe, 0xd1, +0x12, 0x11, 0x0f, 0x10, 0x10, 0x0f, 0x11, 0x12, +0x01, 0x81, 0x11, 0x0f, 0x11, 0x10, 0x10, 0x11, +0x0f, 0x11, 0xfe, 0x64, 0x10, 0x11, 0x10, 0x11, +0x11, 0x10, 0x11, 0x10, 0x01, 0xb6, 0x11, 0x10, +0x10, 0x11, 0x11, 0x10, 0x10, 0x11, 0xfe, 0x65, +0x12, 0x11, 0x0f, 0x10, 0x10, 0x0f, 0x23, 0x01, +0x80, 0x12, 0x0f, 0x11, 0x0f, 0x0f, 0x11, 0x0f, +0x12, 0xfe, 0xd2, 0x12, 0x0f, 0x11, 0x11, 0x11, +0x11, 0x0f, 0x12, 0x6e, 0x11, 0x10, 0x11, 0x10, +0x10, 0x11, 0x10, 0x11, 0x6e, 0x11, 0x10, 0x10, +0x10, 0x10, 0x10, 0x21, 0x00, 0x01, 0xff, 0x8d, +0x02, 0x3e, 0x00, 0x35, 0x02, 0xf2, 0x00, 0x03, +0x00, 0x18, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, 0x03, +0x00, 0x0d, 0x3e, 0x59, 0xb8, 0x00, 0x01, 0xdc, +0x30, 0x31, 0x03, 0x37, 0x17, 0x07, 0x73, 0x22, +0x86, 0x18, 0x02, 0xd5, 0x1d, 0x9d, 0x17, 0x00, +0x00, 0x01, 0xff, 0x90, 0x02, 0xc2, 0x00, 0x29, +0x03, 0x54, 0x00, 0x03, 0x00, 0x18, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, 0x2f, +0x1b, 0xb9, 0x00, 0x03, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x01, 0xdc, 0x30, 0x31, 0x03, 0x37, +0x17, 0x07, 0x70, 0x1c, 0x7d, 0x14, 0x03, 0x33, +0x21, 0x7b, 0x17, 0x00, 0x00, 0x01, 0xff, 0xb7, +0x02, 0x2f, 0x00, 0x15, 0x02, 0xf5, 0x00, 0x03, +0x00, 0x0d, 0x00, 0x7c, 0xb8, 0x00, 0x03, 0x2f, +0x18, 0xb8, 0x00, 0x01, 0xdc, 0x30, 0x31, 0x03, +0x37, 0x17, 0x07, 0x49, 0x33, 0x2b, 0x21, 0x02, +0xeb, 0x0a, 0xbe, 0x08, 0x00, 0x01, 0xff, 0xcb, +0x02, 0x3e, 0x00, 0x73, 0x02, 0xf2, 0x00, 0x03, +0x00, 0x18, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x03, 0x2f, 0x1b, 0xb9, 0x00, 0x03, +0x00, 0x0d, 0x3e, 0x59, 0xb8, 0x00, 0x01, 0xdc, +0x30, 0x31, 0x03, 0x37, 0x17, 0x07, 0x35, 0x86, +0x22, 0x90, 0x02, 0x55, 0x9d, 0x1d, 0x97, 0x00, +0x00, 0x01, 0xff, 0xd7, 0x02, 0xc2, 0x00, 0x70, +0x03, 0x54, 0x00, 0x03, 0x00, 0x18, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, 0x2f, +0x1b, 0xb9, 0x00, 0x03, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x01, 0xdc, 0x30, 0x31, 0x03, 0x37, +0x17, 0x07, 0x29, 0x7d, 0x1c, 0x85, 0x02, 0xd9, +0x7b, 0x21, 0x71, 0x00, 0x00, 0x01, 0xff, 0xeb, +0x02, 0x2f, 0x00, 0x4e, 0x02, 0xf5, 0x00, 0x03, +0x00, 0x0b, 0x00, 0xb8, 0x00, 0x02, 0x2f, 0xb8, +0x00, 0x00, 0xdc, 0x30, 0x31, 0x13, 0x17, 0x07, +0x27, 0x1b, 0x33, 0x42, 0x21, 0x02, 0xf5, 0x0a, +0xbc, 0x08, 0x00, 0x00, 0x00, 0x01, 0xff, 0x76, +0x02, 0x3c, 0x00, 0x8a, 0x02, 0xe1, 0x00, 0x07, +0x00, 0x2a, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, +0x00, 0x0d, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0xdc, +0xb8, 0x00, 0x06, 0x10, 0xb8, 0x00, 0x03, 0xd0, +0xba, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x11, +0x12, 0x39, 0x30, 0x31, 0x03, 0x33, 0x17, 0x07, +0x27, 0x23, 0x07, 0x27, 0x15, 0x2a, 0x75, 0x16, +0x72, 0x04, 0x72, 0x16, 0x02, 0xe1, 0x90, 0x15, +0x7e, 0x7e, 0x15, 0x00, 0x00, 0x01, 0xff, 0x79, +0x02, 0xc3, 0x00, 0x87, 0x03, 0x47, 0x00, 0x07, +0x00, 0x2a, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x06, 0x2f, 0x1b, 0xb9, 0x00, 0x06, +0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0xdc, +0xb8, 0x00, 0x06, 0x10, 0xb8, 0x00, 0x03, 0xd0, +0xba, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x11, +0x12, 0x39, 0x30, 0x31, 0x03, 0x33, 0x17, 0x07, +0x27, 0x23, 0x07, 0x27, 0x16, 0x2c, 0x71, 0x14, +0x71, 0x04, 0x71, 0x14, 0x03, 0x47, 0x71, 0x13, +0x62, 0x62, 0x13, 0x00, 0x00, 0x01, 0xff, 0x5c, +0x02, 0x43, 0x00, 0xa4, 0x02, 0xc6, 0x00, 0x1b, +0x00, 0x30, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x0d, 0x3e, 0x59, 0xb8, 0x00, 0x13, 0xdc, +0xb8, 0x00, 0x05, 0xd0, 0xb8, 0x00, 0x00, 0x10, +0xb8, 0x00, 0x08, 0xd0, 0xb8, 0x00, 0x05, 0x10, +0xb8, 0x00, 0x0e, 0xdc, 0xb8, 0x00, 0x16, 0xd0, +0x30, 0x31, 0x13, 0x22, 0x2e, 0x02, 0x23, 0x22, +0x06, 0x07, 0x27, 0x3e, 0x03, 0x33, 0x32, 0x1e, +0x02, 0x33, 0x32, 0x36, 0x37, 0x17, 0x0e, 0x03, +0x4c, 0x1d, 0x27, 0x20, 0x1f, 0x15, 0x1b, 0x19, +0x02, 0x22, 0x01, 0x0a, 0x15, 0x21, 0x18, 0x1c, +0x27, 0x20, 0x20, 0x15, 0x1a, 0x19, 0x02, 0x22, +0x02, 0x09, 0x15, 0x20, 0x02, 0x43, 0x1e, 0x24, +0x1e, 0x36, 0x27, 0x02, 0x18, 0x2d, 0x23, 0x16, +0x1e, 0x24, 0x1e, 0x37, 0x26, 0x02, 0x17, 0x2d, +0x24, 0x16, 0x00, 0x00, 0x00, 0x01, 0xff, 0x5b, +0x02, 0xce, 0x00, 0xa5, 0x03, 0x42, 0x00, 0x17, +0x00, 0x30, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x11, 0xdc, +0xb8, 0x00, 0x05, 0xd0, 0xb8, 0x00, 0x00, 0x10, +0xb8, 0x00, 0x08, 0xd0, 0xb8, 0x00, 0x05, 0x10, +0xb8, 0x00, 0x0c, 0xdc, 0xb8, 0x00, 0x14, 0xd0, +0x30, 0x31, 0x13, 0x22, 0x2e, 0x02, 0x23, 0x22, +0x06, 0x07, 0x27, 0x3e, 0x01, 0x33, 0x32, 0x1e, +0x02, 0x33, 0x32, 0x36, 0x37, 0x17, 0x0e, 0x01, +0x4d, 0x1d, 0x28, 0x21, 0x1f, 0x15, 0x16, 0x1e, +0x03, 0x21, 0x02, 0x2d, 0x29, 0x1d, 0x28, 0x21, +0x1f, 0x15, 0x16, 0x1c, 0x05, 0x21, 0x02, 0x2d, +0x02, 0xce, 0x19, 0x1d, 0x19, 0x29, 0x23, 0x03, +0x2f, 0x3f, 0x19, 0x1d, 0x19, 0x2a, 0x23, 0x03, +0x2f, 0x40, 0x00, 0x00, 0x00, 0x01, 0xff, 0x85, +0x02, 0x5e, 0x00, 0x7b, 0x02, 0x82, 0x00, 0x03, +0x00, 0x0b, 0x00, 0xb8, 0x00, 0x03, 0x2f, 0xb8, +0x00, 0x01, 0xdc, 0x30, 0x31, 0x03, 0x33, 0x15, +0x23, 0x7b, 0xf6, 0xf6, 0x02, 0x82, 0x24, 0x00, +0x00, 0x01, 0xff, 0x84, 0x02, 0xe7, 0x00, 0x7c, +0x03, 0x0b, 0x00, 0x03, 0x00, 0x18, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, 0x2f, +0x1b, 0xb9, 0x00, 0x03, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0xdc, 0x30, 0x31, 0x03, 0x33, +0x15, 0x23, 0x7c, 0xf8, 0xf8, 0x03, 0x0b, 0x24, +0xff, 0xff, 0xff, 0x85, 0x02, 0x5e, 0x00, 0x7b, +0x02, 0x82, 0x02, 0x06, 0x07, 0x2b, 0x00, 0x00, +0xff, 0xff, 0xff, 0x84, 0x02, 0xe7, 0x00, 0x7c, +0x03, 0x0b, 0x02, 0x06, 0x07, 0x2c, 0x00, 0x00, +0x00, 0x01, 0xff, 0x6b, 0x02, 0x3a, 0x00, 0x95, +0x02, 0xd3, 0x00, 0x15, 0x00, 0x20, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x0d, 0x3e, 0x59, +0xb8, 0x00, 0x0b, 0xdc, 0xb8, 0x00, 0x06, 0xdc, +0xb8, 0x00, 0x10, 0xd0, 0x30, 0x31, 0x11, 0x22, +0x2e, 0x02, 0x27, 0x37, 0x1e, 0x03, 0x33, 0x32, +0x3e, 0x02, 0x37, 0x17, 0x0e, 0x03, 0x26, 0x36, +0x23, 0x13, 0x03, 0x21, 0x03, 0x11, 0x1c, 0x29, +0x1b, 0x1b, 0x29, 0x1c, 0x11, 0x03, 0x21, 0x03, +0x13, 0x23, 0x36, 0x02, 0x3a, 0x1c, 0x2b, 0x34, +0x19, 0x05, 0x15, 0x2a, 0x23, 0x15, 0x15, 0x23, +0x2a, 0x15, 0x05, 0x19, 0x34, 0x2b, 0x1c, 0x00, +0x00, 0x01, 0xff, 0x6d, 0x02, 0x3c, 0x00, 0x93, +0x02, 0xce, 0x00, 0x15, 0x00, 0x20, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x0d, 0x3e, 0x59, +0xb8, 0x00, 0x0b, 0xdc, 0xb8, 0x00, 0x06, 0xdc, +0xb8, 0x00, 0x10, 0xd0, 0x30, 0x31, 0x11, 0x22, +0x2e, 0x02, 0x27, 0x33, 0x1e, 0x03, 0x33, 0x32, +0x3e, 0x02, 0x37, 0x33, 0x0e, 0x03, 0x2a, 0x37, +0x21, 0x10, 0x01, 0x28, 0x01, 0x0b, 0x19, 0x28, +0x1e, 0x1e, 0x28, 0x19, 0x0b, 0x01, 0x28, 0x02, +0x0f, 0x21, 0x37, 0x02, 0x3c, 0x1c, 0x2a, 0x34, +0x18, 0x15, 0x2a, 0x20, 0x14, 0x14, 0x20, 0x2a, +0x15, 0x18, 0x34, 0x2a, 0x1c, 0x00, 0x00, 0x00, +0x00, 0x01, 0xff, 0x78, 0x02, 0xc6, 0x00, 0x88, +0x03, 0x47, 0x00, 0x11, 0x00, 0x20, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x09, 0xdc, 0xb8, 0x00, 0x06, 0xdc, +0xb8, 0x00, 0x0c, 0xd0, 0x30, 0x31, 0x11, 0x22, +0x2e, 0x02, 0x27, 0x37, 0x1e, 0x01, 0x33, 0x32, +0x36, 0x37, 0x17, 0x0e, 0x03, 0x21, 0x31, 0x21, +0x12, 0x03, 0x21, 0x05, 0x32, 0x30, 0x30, 0x32, +0x05, 0x21, 0x03, 0x12, 0x21, 0x31, 0x02, 0xc6, +0x16, 0x24, 0x2c, 0x16, 0x05, 0x26, 0x3a, 0x3a, +0x26, 0x05, 0x16, 0x2c, 0x24, 0x16, 0x00, 0x00, +0x00, 0x01, 0xff, 0x78, 0x02, 0xc6, 0x00, 0x88, +0x03, 0x46, 0x00, 0x15, 0x00, 0x20, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x0b, 0xdc, 0xb8, 0x00, 0x06, 0xdc, +0xb8, 0x00, 0x10, 0xd0, 0x30, 0x31, 0x11, 0x22, +0x2e, 0x02, 0x27, 0x33, 0x1e, 0x03, 0x33, 0x32, +0x3e, 0x02, 0x37, 0x33, 0x0e, 0x03, 0x26, 0x33, +0x1f, 0x0e, 0x02, 0x2a, 0x01, 0x0a, 0x16, 0x23, +0x1a, 0x19, 0x24, 0x16, 0x0a, 0x01, 0x2a, 0x02, +0x0e, 0x1f, 0x33, 0x02, 0xc6, 0x17, 0x25, 0x2d, +0x17, 0x13, 0x24, 0x1b, 0x10, 0x10, 0x1b, 0x24, +0x13, 0x17, 0x2d, 0x25, 0x17, 0x00, 0x00, 0x00, +0x00, 0x01, 0xff, 0xda, 0x02, 0x54, 0x00, 0x26, +0x02, 0xa4, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0xba, +0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x2b, 0x30, +0x31, 0x11, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, +0x32, 0x16, 0x15, 0x14, 0x06, 0x11, 0x15, 0x15, +0x11, 0x11, 0x15, 0x15, 0x02, 0x54, 0x16, 0x13, +0x11, 0x16, 0x16, 0x11, 0x13, 0x16, 0x00, 0x00, +0x00, 0x01, 0xff, 0xd8, 0x02, 0xd1, 0x00, 0x28, +0x03, 0x21, 0x00, 0x0b, 0x00, 0x18, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x06, 0xdc, 0x30, 0x31, 0x11, 0x22, +0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, +0x14, 0x06, 0x11, 0x17, 0x17, 0x11, 0x11, 0x17, +0x17, 0x02, 0xd1, 0x16, 0x13, 0x11, 0x16, 0x16, +0x11, 0x13, 0x16, 0x00, 0x00, 0x02, 0xff, 0x82, +0x02, 0x56, 0x00, 0x7e, 0x02, 0xa0, 0x00, 0x0b, +0x00, 0x17, 0x00, 0x1b, 0x00, 0xba, 0x00, 0x06, +0x00, 0x00, 0x00, 0x03, 0x2b, 0xb8, 0x00, 0x00, +0x10, 0xb8, 0x00, 0x0c, 0xd0, 0xb8, 0x00, 0x06, +0x10, 0xb8, 0x00, 0x12, 0xd0, 0x30, 0x31, 0x03, +0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, +0x15, 0x14, 0x06, 0x33, 0x22, 0x26, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x59, +0x10, 0x15, 0x15, 0x10, 0x10, 0x15, 0x15, 0xa2, +0x10, 0x15, 0x15, 0x10, 0x10, 0x15, 0x15, 0x02, +0x56, 0x15, 0x10, 0x10, 0x15, 0x15, 0x10, 0x10, +0x15, 0x15, 0x10, 0x10, 0x15, 0x15, 0x10, 0x10, +0x15, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7a, +0x02, 0xd5, 0x00, 0x86, 0x03, 0x1e, 0x00, 0x0b, +0x00, 0x17, 0x00, 0x28, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, +0x00, 0x00, 0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, +0x06, 0xdc, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, +0x0c, 0xd0, 0xb8, 0x00, 0x06, 0x10, 0xb8, 0x00, +0x12, 0xd0, 0x30, 0x31, 0x03, 0x22, 0x26, 0x35, +0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, +0x33, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, +0x16, 0x15, 0x14, 0x06, 0x62, 0x10, 0x14, 0x14, +0x10, 0x10, 0x15, 0x15, 0xb4, 0x10, 0x15, 0x15, +0x10, 0x10, 0x14, 0x14, 0x02, 0xd5, 0x13, 0x11, +0x11, 0x14, 0x14, 0x11, 0x11, 0x13, 0x13, 0x11, +0x11, 0x14, 0x14, 0x11, 0x11, 0x13, 0x00, 0x00, +0x00, 0x01, 0xff, 0xc9, 0x02, 0x3f, 0x00, 0x46, +0x02, 0xe5, 0x00, 0x10, 0x00, 0x20, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x10, 0x2f, +0x1b, 0xb9, 0x00, 0x10, 0x00, 0x0d, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0xdc, 0xb8, 0x00, 0x05, 0xdc, +0xb8, 0x00, 0x06, 0xdc, 0x30, 0x31, 0x03, 0x3e, +0x01, 0x35, 0x34, 0x27, 0x37, 0x1e, 0x03, 0x15, +0x14, 0x0e, 0x02, 0x07, 0x21, 0x1b, 0x24, 0x55, +0x03, 0x19, 0x2d, 0x21, 0x13, 0x10, 0x1b, 0x22, +0x12, 0x02, 0x5b, 0x08, 0x19, 0x16, 0x2e, 0x03, +0x22, 0x01, 0x09, 0x13, 0x1d, 0x14, 0x14, 0x1c, +0x15, 0x0e, 0x05, 0x00, 0x00, 0x01, 0xff, 0xc9, +0x02, 0xbe, 0x00, 0x46, 0x03, 0x5f, 0x00, 0x10, +0x00, 0x20, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x10, 0x2f, 0x1b, 0xb9, 0x00, 0x10, +0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x00, 0xdc, +0xb8, 0x00, 0x05, 0xdc, 0xb8, 0x00, 0x06, 0xdc, +0x30, 0x31, 0x03, 0x3e, 0x01, 0x35, 0x34, 0x27, +0x37, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x07, +0x21, 0x1b, 0x24, 0x55, 0x04, 0x19, 0x2c, 0x21, +0x13, 0x10, 0x1b, 0x22, 0x12, 0x02, 0xd9, 0x08, +0x19, 0x15, 0x2d, 0x03, 0x20, 0x01, 0x09, 0x12, +0x1b, 0x13, 0x14, 0x1c, 0x14, 0x0e, 0x05, 0x00, +0x00, 0x02, 0xff, 0x9f, 0x02, 0x24, 0x00, 0x61, +0x02, 0xe3, 0x00, 0x0b, 0x00, 0x17, 0x00, 0x13, +0x00, 0xba, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x03, +0x2b, 0xba, 0x00, 0x06, 0x00, 0x12, 0x00, 0x03, +0x2b, 0x30, 0x31, 0x11, 0x22, 0x26, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x27, +0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, +0x15, 0x14, 0x16, 0x2a, 0x37, 0x37, 0x2a, 0x2a, +0x37, 0x37, 0x2a, 0x1b, 0x26, 0x26, 0x1b, 0x1b, +0x26, 0x26, 0x02, 0x24, 0x35, 0x2a, 0x2b, 0x35, +0x35, 0x2b, 0x2a, 0x35, 0x1a, 0x25, 0x20, 0x20, +0x26, 0x26, 0x20, 0x20, 0x25, 0x00, 0x00, 0x00, +0x00, 0x02, 0xff, 0xa8, 0x02, 0xbc, 0x00, 0x58, +0x03, 0x67, 0x00, 0x0b, 0x00, 0x17, 0x00, 0x13, +0x00, 0xba, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x03, +0x2b, 0xba, 0x00, 0x06, 0x00, 0x12, 0x00, 0x03, +0x2b, 0x30, 0x31, 0x11, 0x22, 0x26, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x27, +0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, +0x15, 0x14, 0x16, 0x26, 0x32, 0x32, 0x26, 0x24, +0x34, 0x34, 0x24, 0x17, 0x21, 0x21, 0x17, 0x18, +0x22, 0x22, 0x02, 0xbc, 0x2f, 0x26, 0x28, 0x2e, +0x2e, 0x28, 0x26, 0x2f, 0x1a, 0x1e, 0x1d, 0x1d, +0x1f, 0x1f, 0x1d, 0x1d, 0x1e, 0x00, 0x00, 0x00, +0x00, 0x02, 0xff, 0xb3, 0x02, 0x39, 0x00, 0xb2, +0x02, 0xee, 0x00, 0x03, 0x00, 0x07, 0x00, 0x17, +0x00, 0xb8, 0x00, 0x03, 0x2f, 0xb8, 0x00, 0x01, +0xdc, 0xb8, 0x00, 0x05, 0xd0, 0xb8, 0x00, 0x03, +0x10, 0xb8, 0x00, 0x07, 0xd0, 0x30, 0x31, 0x03, +0x37, 0x17, 0x07, 0x3f, 0x01, 0x17, 0x07, 0x4d, +0x56, 0x23, 0x5e, 0x6b, 0x56, 0x23, 0x5e, 0x02, +0x46, 0xa8, 0x13, 0xa2, 0x0d, 0xa8, 0x13, 0xa2, +0x00, 0x02, 0xff, 0xad, 0x02, 0xc4, 0x00, 0xb7, +0x03, 0x65, 0x00, 0x03, 0x00, 0x07, 0x00, 0x24, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x02, 0x2f, 0x1b, 0xb9, 0x00, 0x02, 0x00, 0x13, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0xdc, 0xb8, 0x00, +0x04, 0xd0, 0xb8, 0x00, 0x02, 0x10, 0xb8, 0x00, +0x06, 0xd0, 0x30, 0x31, 0x13, 0x17, 0x07, 0x27, +0x37, 0x17, 0x07, 0x27, 0x05, 0x22, 0x60, 0x1a, +0xe8, 0x22, 0x60, 0x1a, 0x03, 0x65, 0x15, 0x8c, +0x0d, 0x94, 0x15, 0x8c, 0x0d, 0x00, 0x00, 0x00, +0x00, 0x01, 0xff, 0x76, 0x02, 0x3d, 0x00, 0x8a, +0x02, 0xe1, 0x00, 0x07, 0x00, 0x26, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x07, 0x2f, +0x1b, 0xb9, 0x00, 0x07, 0x00, 0x0d, 0x3e, 0x59, +0xb8, 0x00, 0x01, 0xdc, 0xba, 0x00, 0x02, 0x00, +0x01, 0x00, 0x07, 0x11, 0x12, 0x39, 0xb8, 0x00, +0x04, 0xd0, 0x30, 0x31, 0x03, 0x37, 0x17, 0x33, +0x37, 0x17, 0x07, 0x23, 0x8a, 0x16, 0x72, 0x04, +0x72, 0x16, 0x75, 0x2a, 0x02, 0xcd, 0x14, 0x7d, +0x7d, 0x14, 0x90, 0x00, 0x00, 0x01, 0xff, 0x79, +0x02, 0xc5, 0x00, 0x87, 0x03, 0x49, 0x00, 0x07, +0x00, 0x26, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x07, 0x2f, 0x1b, 0xb9, 0x00, 0x07, +0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, 0x01, 0xdc, +0xba, 0x00, 0x02, 0x00, 0x01, 0x00, 0x07, 0x11, +0x12, 0x39, 0xb8, 0x00, 0x04, 0xd0, 0x30, 0x31, +0x03, 0x37, 0x17, 0x33, 0x37, 0x17, 0x07, 0x23, +0x87, 0x14, 0x71, 0x04, 0x71, 0x14, 0x71, 0x2c, +0x03, 0x37, 0x12, 0x62, 0x62, 0x12, 0x72, 0x00, +0x00, 0x01, 0xff, 0xe2, 0x02, 0x24, 0x00, 0x08, +0x02, 0xf2, 0x00, 0x04, 0x00, 0x0b, 0x00, 0xba, +0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x2b, 0x30, +0x31, 0x03, 0x33, 0x15, 0x07, 0x23, 0x1e, 0x26, +0x08, 0x1b, 0x02, 0xf2, 0x32, 0x9c, 0x00, 0x00, +0x00, 0x02, 0xff, 0x4e, 0x02, 0x39, 0x00, 0x4d, +0x02, 0xee, 0x00, 0x03, 0x00, 0x07, 0x00, 0x17, +0x00, 0xb8, 0x00, 0x03, 0x2f, 0xb8, 0x00, 0x01, +0xdc, 0xb8, 0x00, 0x05, 0xd0, 0xb8, 0x00, 0x03, +0x10, 0xb8, 0x00, 0x07, 0xd0, 0x30, 0x31, 0x03, +0x37, 0x17, 0x07, 0x3f, 0x01, 0x17, 0x07, 0xb2, +0x23, 0x56, 0x1b, 0x28, 0x23, 0x56, 0x1b, 0x02, +0xdb, 0x13, 0xa8, 0x0d, 0xa2, 0x13, 0xa8, 0x0d, +0x00, 0x02, 0xff, 0x49, 0x02, 0xc4, 0x00, 0x53, +0x03, 0x65, 0x00, 0x03, 0x00, 0x07, 0x00, 0x24, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x03, 0x2f, 0x1b, 0xb9, 0x00, 0x03, 0x00, 0x13, +0x3e, 0x59, 0xb8, 0x00, 0x01, 0xdc, 0xb8, 0x00, +0x05, 0xd0, 0xb8, 0x00, 0x03, 0x10, 0xb8, 0x00, +0x07, 0xd0, 0x30, 0x31, 0x03, 0x37, 0x17, 0x07, +0x3f, 0x01, 0x17, 0x07, 0xb7, 0x22, 0x58, 0x1a, +0x30, 0x22, 0x58, 0x1a, 0x03, 0x50, 0x15, 0x94, +0x0d, 0x8c, 0x15, 0x94, 0x0d, 0x00, 0x00, 0x00, +0x00, 0x01, 0xff, 0x6b, 0x02, 0x39, 0x00, 0x95, +0x02, 0xd2, 0x00, 0x15, 0x00, 0x17, 0x00, 0xb8, +0x00, 0x15, 0x2f, 0xb8, 0x00, 0x10, 0xdc, 0xb8, +0x00, 0x05, 0xdc, 0xb8, 0x00, 0x15, 0x10, 0xb8, +0x00, 0x0b, 0xd0, 0x30, 0x31, 0x03, 0x3e, 0x03, +0x33, 0x32, 0x1e, 0x02, 0x17, 0x07, 0x2e, 0x03, +0x23, 0x22, 0x0e, 0x02, 0x07, 0x95, 0x03, 0x12, +0x23, 0x36, 0x27, 0x27, 0x36, 0x23, 0x12, 0x03, +0x21, 0x03, 0x11, 0x1c, 0x29, 0x1b, 0x1b, 0x29, +0x1c, 0x11, 0x03, 0x02, 0x3f, 0x18, 0x34, 0x2b, +0x1c, 0x1c, 0x2b, 0x34, 0x18, 0x06, 0x15, 0x2b, +0x22, 0x15, 0x15, 0x22, 0x2b, 0x15, 0x00, 0x00, +0x00, 0x01, 0xff, 0x78, 0x02, 0xc6, 0x00, 0x88, +0x03, 0x47, 0x00, 0x11, 0x00, 0x24, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x11, 0x2f, +0x1b, 0xb9, 0x00, 0x11, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x0e, 0xdc, 0xb8, 0x00, 0x05, 0xdc, +0xb8, 0x00, 0x11, 0x10, 0xb8, 0x00, 0x0b, 0xd0, +0x30, 0x31, 0x03, 0x3e, 0x03, 0x33, 0x32, 0x1e, +0x02, 0x17, 0x07, 0x2e, 0x01, 0x23, 0x22, 0x06, +0x07, 0x88, 0x03, 0x12, 0x21, 0x31, 0x21, 0x21, +0x31, 0x21, 0x12, 0x03, 0x21, 0x05, 0x32, 0x30, +0x30, 0x32, 0x05, 0x02, 0xcb, 0x16, 0x2c, 0x24, +0x16, 0x16, 0x24, 0x2c, 0x16, 0x05, 0x26, 0x3a, +0x3a, 0x26, 0x00, 0x00, 0x00, 0x01, 0xff, 0xd5, +0x02, 0x27, 0x00, 0x2a, 0x02, 0xd2, 0x00, 0x10, +0x00, 0x0b, 0x00, 0xba, 0x00, 0x05, 0x00, 0x0b, +0x00, 0x03, 0x2b, 0x30, 0x31, 0x13, 0x0e, 0x01, +0x07, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, +0x23, 0x22, 0x35, 0x34, 0x36, 0x37, 0x2a, 0x1d, +0x18, 0x01, 0x03, 0x05, 0x0c, 0x17, 0x13, 0x0e, +0x29, 0x20, 0x26, 0x02, 0xba, 0x10, 0x28, 0x17, +0x01, 0x0f, 0x11, 0x14, 0x11, 0x3d, 0x20, 0x3a, +0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xba, +0x02, 0x41, 0x00, 0x37, 0x02, 0xe4, 0x00, 0x11, +0x00, 0x0b, 0x00, 0xba, 0x00, 0x0a, 0x00, 0x0b, +0x00, 0x03, 0x2b, 0x30, 0x31, 0x13, 0x2e, 0x03, +0x35, 0x34, 0x3e, 0x02, 0x37, 0x17, 0x06, 0x15, +0x14, 0x16, 0x17, 0x07, 0x19, 0x12, 0x22, 0x1b, +0x10, 0x13, 0x21, 0x2d, 0x19, 0x03, 0x55, 0x24, +0x1b, 0x08, 0x02, 0x41, 0x05, 0x0d, 0x14, 0x1c, +0x14, 0x13, 0x1d, 0x13, 0x09, 0x01, 0x21, 0x03, +0x2e, 0x16, 0x19, 0x08, 0x1a, 0x00, 0x00, 0x00, +0x00, 0x01, 0xff, 0xd6, 0x02, 0x26, 0x00, 0x2b, +0x02, 0xd2, 0x00, 0x10, 0x00, 0x0b, 0x00, 0xba, +0x00, 0x0b, 0x00, 0x05, 0x00, 0x03, 0x2b, 0x30, +0x31, 0x03, 0x3e, 0x01, 0x37, 0x06, 0x23, 0x22, +0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x15, 0x14, +0x06, 0x07, 0x2a, 0x1c, 0x18, 0x01, 0x02, 0x06, +0x0b, 0x17, 0x13, 0x0e, 0x29, 0x20, 0x26, 0x02, +0x3f, 0x0f, 0x29, 0x17, 0x01, 0x0f, 0x11, 0x14, +0x11, 0x3d, 0x20, 0x3b, 0x14, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xc9, 0x02, 0x3f, 0x00, 0x46, +0x02, 0xe5, 0x02, 0x06, 0x07, 0x37, 0x00, 0x00, +0x00, 0x01, 0xff, 0xbb, 0xff, 0x0c, 0x00, 0x4d, +0xff, 0xc3, 0x00, 0x07, 0x00, 0x0d, 0x00, 0xbb, +0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, +0x2b, 0x30, 0x31, 0x17, 0x35, 0x23, 0x35, 0x33, +0x35, 0x33, 0x15, 0x2b, 0x70, 0x70, 0x22, 0xf4, +0x4b, 0x21, 0x4b, 0xb7, 0x00, 0x01, 0xff, 0xb3, +0xff, 0x0c, 0x00, 0x45, 0xff, 0xc3, 0x00, 0x07, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x05, 0x00, 0x01, +0x00, 0x00, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x07, +0x15, 0x23, 0x35, 0x33, 0x15, 0x33, 0x15, 0x2b, +0x22, 0x22, 0x70, 0xa9, 0x4b, 0xb7, 0x4b, 0x21, +0x00, 0x01, 0xff, 0xbb, 0x02, 0x3c, 0x00, 0x4d, +0x02, 0xc4, 0x00, 0x05, 0x00, 0x0d, 0x00, 0xbb, +0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, +0x2b, 0x30, 0x31, 0x13, 0x35, 0x23, 0x35, 0x33, +0x15, 0x2b, 0x70, 0x92, 0x02, 0x3c, 0x67, 0x21, +0x88, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf8, +0x01, 0xb6, 0x00, 0x81, 0x02, 0x77, 0x00, 0x0c, +0x00, 0x0b, 0x00, 0xba, 0x00, 0x00, 0x00, 0x0c, +0x00, 0x03, 0x2b, 0x30, 0x31, 0x03, 0x3e, 0x01, +0x35, 0x34, 0x27, 0x37, 0x1e, 0x01, 0x15, 0x14, +0x06, 0x07, 0x08, 0x30, 0x2e, 0x0e, 0x26, 0x09, +0x0a, 0x4a, 0x39, 0x01, 0xd4, 0x08, 0x2f, 0x21, +0x1a, 0x1d, 0x14, 0x14, 0x1e, 0x16, 0x34, 0x3c, +0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xc4, +0xfe, 0xfd, 0x00, 0x32, 0xff, 0xbc, 0x00, 0x0e, +0x00, 0x17, 0x00, 0xbb, 0x00, 0x0d, 0x00, 0x01, +0x00, 0x00, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x06, +0x00, 0x01, 0x00, 0x07, 0x00, 0x04, 0x2b, 0x30, +0x31, 0x13, 0x06, 0x26, 0x35, 0x34, 0x36, 0x17, +0x15, 0x22, 0x06, 0x15, 0x14, 0x16, 0x37, 0x15, +0x32, 0x33, 0x3b, 0x3b, 0x33, 0x2a, 0x23, 0x23, +0x2a, 0xfe, 0xff, 0x02, 0x33, 0x2d, 0x2d, 0x32, +0x02, 0x18, 0x26, 0x1f, 0x20, 0x26, 0x01, 0x19, +0x00, 0x01, 0xff, 0xa7, 0xff, 0x38, 0x00, 0x59, +0xff, 0xc3, 0x00, 0x07, 0x00, 0x15, 0x00, 0xbb, +0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x01, 0x10, 0xb8, 0x00, 0x05, +0xd0, 0x30, 0x31, 0x07, 0x35, 0x33, 0x35, 0x33, +0x15, 0x33, 0x15, 0x59, 0x48, 0x22, 0x48, 0xc8, +0x21, 0x6a, 0x6a, 0x21, 0x00, 0x01, 0xff, 0xa7, +0xff, 0x0c, 0x00, 0x59, 0xff, 0x97, 0x00, 0x07, +0x00, 0x15, 0x00, 0xbb, 0x00, 0x06, 0x00, 0x01, +0x00, 0x07, 0x00, 0x04, 0x2b, 0xb8, 0x00, 0x07, +0x10, 0xb8, 0x00, 0x03, 0xd0, 0x30, 0x31, 0x17, +0x15, 0x23, 0x35, 0x23, 0x35, 0x33, 0x15, 0x11, +0x22, 0x48, 0xb2, 0x8a, 0x6a, 0x6a, 0x21, 0x21, +0x00, 0x01, 0xff, 0xa7, 0xff, 0x0c, 0x00, 0x59, +0xff, 0xc3, 0x00, 0x0b, 0x00, 0x1d, 0x00, 0xbb, +0x00, 0x09, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, +0x2b, 0xb8, 0x00, 0x00, 0x10, 0xb8, 0x00, 0x03, +0xd0, 0xb8, 0x00, 0x09, 0x10, 0xb8, 0x00, 0x05, +0xd0, 0x30, 0x31, 0x17, 0x15, 0x23, 0x35, 0x23, +0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x11, +0x22, 0x48, 0x48, 0x22, 0x48, 0xa9, 0x4b, 0x4b, +0x21, 0x4b, 0x4b, 0x21, 0x00, 0x01, 0xff, 0xa7, +0xff, 0x57, 0x00, 0x59, 0xff, 0x78, 0x00, 0x03, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x02, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x07, +0x33, 0x15, 0x23, 0x59, 0xb2, 0xb2, 0x88, 0x21, +0xff, 0xff, 0xff, 0xda, 0xff, 0x3e, 0x00, 0x26, +0xff, 0x8e, 0x02, 0x07, 0x07, 0x33, 0x00, 0x00, +0xfc, 0xea, 0x00, 0x00, 0xff, 0xff, 0xff, 0x82, +0xff, 0x41, 0x00, 0x7e, 0xff, 0x8b, 0x02, 0x07, +0x07, 0x35, 0x00, 0x00, 0xfc, 0xeb, 0x00, 0x00, +0xff, 0xff, 0xff, 0x9f, 0xff, 0x00, 0x00, 0x61, +0xff, 0xbf, 0x02, 0x07, 0x07, 0x39, 0x00, 0x00, +0xfc, 0xdc, 0x00, 0x00, 0x00, 0x01, 0xff, 0xac, +0xff, 0x25, 0x00, 0x44, 0xff, 0xc3, 0x00, 0x0d, +0x00, 0x17, 0x00, 0xba, 0x00, 0x06, 0x00, 0x07, +0x00, 0x03, 0x2b, 0xb8, 0x00, 0x06, 0x10, 0xb8, +0x00, 0x00, 0xdc, 0xb8, 0x00, 0x0d, 0xdc, 0x30, +0x31, 0x07, 0x3e, 0x01, 0x35, 0x34, 0x26, 0x27, +0x37, 0x1e, 0x01, 0x15, 0x14, 0x06, 0x07, 0x54, +0x41, 0x30, 0x29, 0x24, 0x0d, 0x39, 0x2e, 0x4a, +0x47, 0xbd, 0x04, 0x1a, 0x16, 0x17, 0x15, 0x03, +0x1d, 0x08, 0x21, 0x20, 0x27, 0x29, 0x05, 0x00, +0x00, 0x01, 0xff, 0xbc, 0x02, 0x43, 0x00, 0x54, +0x02, 0xe1, 0x00, 0x0e, 0x00, 0x17, 0x00, 0xba, +0x00, 0x0d, 0x00, 0x00, 0x00, 0x03, 0x2b, 0xb8, +0x00, 0x0d, 0x10, 0xb8, 0x00, 0x07, 0xdc, 0xb8, +0x00, 0x06, 0xdc, 0x30, 0x31, 0x13, 0x2e, 0x01, +0x35, 0x34, 0x36, 0x37, 0x17, 0x0e, 0x01, 0x15, +0x14, 0x16, 0x17, 0x07, 0x23, 0x39, 0x2e, 0x4a, +0x47, 0x07, 0x41, 0x30, 0x29, 0x24, 0x0d, 0x02, +0x43, 0x08, 0x21, 0x20, 0x27, 0x29, 0x05, 0x1e, +0x05, 0x1a, 0x16, 0x17, 0x14, 0x03, 0x1d, 0x00, +0x00, 0x01, 0xff, 0xac, 0xff, 0x25, 0x00, 0x44, +0x00, 0x02, 0x00, 0x0f, 0x00, 0x17, 0x00, 0xba, +0x00, 0x06, 0x00, 0x09, 0x00, 0x03, 0x2b, 0xb8, +0x00, 0x06, 0x10, 0xb8, 0x00, 0x00, 0xdc, 0xb8, +0x00, 0x0f, 0xdc, 0x30, 0x31, 0x07, 0x3e, 0x01, +0x35, 0x34, 0x26, 0x27, 0x37, 0x33, 0x07, 0x1e, +0x01, 0x15, 0x14, 0x06, 0x07, 0x54, 0x41, 0x30, +0x24, 0x2a, 0x29, 0x23, 0x1e, 0x20, 0x27, 0x4a, +0x47, 0xbd, 0x04, 0x1a, 0x17, 0x16, 0x17, 0x06, +0x57, 0x43, 0x08, 0x1f, 0x1e, 0x27, 0x29, 0x05, +0x00, 0x01, 0xff, 0xac, 0xff, 0x25, 0x00, 0x44, +0x00, 0x02, 0x00, 0x0f, 0x00, 0x17, 0x00, 0xba, +0x00, 0x06, 0x00, 0x09, 0x00, 0x03, 0x2b, 0xb8, +0x00, 0x06, 0x10, 0xb8, 0x00, 0x00, 0xdc, 0xb8, +0x00, 0x0f, 0xdc, 0x30, 0x31, 0x07, 0x3e, 0x01, +0x35, 0x34, 0x26, 0x27, 0x37, 0x33, 0x07, 0x1e, +0x01, 0x15, 0x14, 0x06, 0x07, 0x54, 0x41, 0x30, +0x24, 0x2a, 0x29, 0x23, 0x1e, 0x20, 0x27, 0x4a, +0x47, 0xbd, 0x04, 0x1a, 0x17, 0x16, 0x17, 0x06, +0x57, 0x43, 0x08, 0x1f, 0x1e, 0x27, 0x29, 0x05, +0x00, 0x01, 0xff, 0xca, 0xff, 0x35, 0x00, 0x5c, +0x00, 0x04, 0x00, 0x12, 0x00, 0x0b, 0x00, 0xba, +0x00, 0x0d, 0x00, 0x00, 0x00, 0x03, 0x2b, 0x30, +0x31, 0x17, 0x22, 0x26, 0x35, 0x34, 0x36, 0x37, +0x33, 0x0e, 0x01, 0x15, 0x14, 0x16, 0x33, 0x32, +0x37, 0x17, 0x0e, 0x01, 0x1b, 0x23, 0x2e, 0x2c, +0x1b, 0x2c, 0x23, 0x2a, 0x1e, 0x13, 0x19, 0x12, +0x10, 0x0b, 0x26, 0xcb, 0x28, 0x29, 0x26, 0x42, +0x16, 0x1a, 0x3e, 0x20, 0x1a, 0x1a, 0x0e, 0x1a, +0x0a, 0x0d, 0x00, 0x00, 0x00, 0x01, 0xff, 0xcb, +0xff, 0x33, 0x00, 0x61, 0x00, 0x04, 0x00, 0x12, +0x00, 0x0b, 0x00, 0xba, 0x00, 0x0d, 0x00, 0x00, +0x00, 0x03, 0x2b, 0x30, 0x31, 0x17, 0x22, 0x26, +0x35, 0x34, 0x36, 0x37, 0x33, 0x0e, 0x01, 0x15, +0x14, 0x16, 0x33, 0x32, 0x37, 0x17, 0x0e, 0x01, +0x1f, 0x23, 0x31, 0x2b, 0x1c, 0x2a, 0x23, 0x27, +0x20, 0x13, 0x19, 0x12, 0x11, 0x0c, 0x25, 0xcd, +0x28, 0x2a, 0x27, 0x42, 0x16, 0x1a, 0x3e, 0x20, +0x1a, 0x1a, 0x0e, 0x1b, 0x0a, 0x0e, 0x00, 0x00, +0x00, 0x01, 0xff, 0xeb, 0xfe, 0xf7, 0x00, 0x15, +0xff, 0xb5, 0x00, 0x03, 0x00, 0x0b, 0x00, 0xba, +0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x2b, 0x30, +0x31, 0x07, 0x33, 0x17, 0x23, 0x0f, 0x1e, 0x06, +0x2a, 0x4b, 0xbe, 0x00, 0x00, 0x01, 0xff, 0x8b, +0xff, 0x1b, 0x00, 0x75, 0xff, 0xab, 0x00, 0x07, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x05, 0x00, 0x01, +0x00, 0x00, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x17, +0x23, 0x15, 0x23, 0x35, 0x33, 0x15, 0x23, 0x56, +0xac, 0x1f, 0xea, 0x1f, 0x76, 0x6f, 0x90, 0x90, +0xff, 0xff, 0xff, 0x76, 0xff, 0x23, 0x00, 0x8a, +0xff, 0xc7, 0x02, 0x07, 0x07, 0x3d, 0x00, 0x00, +0xfc, 0xe6, 0x00, 0x00, 0xff, 0xff, 0xff, 0x6b, +0xff, 0x1a, 0x00, 0x95, 0xff, 0xb3, 0x02, 0x07, +0x07, 0x2f, 0x00, 0x00, 0xfc, 0xe0, 0x00, 0x00, +0xff, 0xff, 0xff, 0x6b, 0xff, 0x19, 0x00, 0x95, +0xff, 0xb2, 0x02, 0x07, 0x07, 0x42, 0x00, 0x00, +0xfc, 0xe0, 0x00, 0x00, 0xff, 0xff, 0xff, 0x5c, +0xff, 0x24, 0x00, 0xa4, 0xff, 0xa7, 0x02, 0x07, +0x07, 0x29, 0x00, 0x00, 0xfc, 0xe1, 0x00, 0x00, +0xff, 0xff, 0xff, 0x85, 0xff, 0x61, 0x00, 0x7b, +0xff, 0x85, 0x02, 0x07, 0x07, 0x2b, 0x00, 0x00, +0xfd, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0x5c, +0x00, 0xc3, 0x00, 0xa4, 0x01, 0x46, 0x02, 0x07, +0x07, 0x29, 0x00, 0x00, 0xfe, 0x80, 0x00, 0x00, +0x00, 0x01, 0xff, 0xce, 0xfe, 0xfd, 0x00, 0x3c, +0xff, 0xbc, 0x00, 0x0d, 0x00, 0x17, 0x00, 0xbb, +0x00, 0x00, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x04, +0x2b, 0xbb, 0x00, 0x07, 0x00, 0x01, 0x00, 0x06, +0x00, 0x04, 0x2b, 0x30, 0x31, 0x07, 0x16, 0x36, +0x35, 0x34, 0x26, 0x23, 0x35, 0x36, 0x16, 0x15, +0x14, 0x06, 0x27, 0x32, 0x2a, 0x23, 0x23, 0x2a, +0x33, 0x3b, 0x3b, 0x33, 0xe8, 0x01, 0x26, 0x20, +0x1f, 0x26, 0x18, 0x02, 0x32, 0x2d, 0x2d, 0x33, +0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x8b, +0xff, 0x18, 0x00, 0x75, 0xff, 0xa8, 0x00, 0x07, +0x00, 0x0d, 0x00, 0xbb, 0x00, 0x03, 0x00, 0x01, +0x00, 0x06, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x07, +0x33, 0x15, 0x33, 0x35, 0x33, 0x15, 0x23, 0x75, +0x1f, 0xac, 0x1f, 0xea, 0x58, 0x6e, 0x6e, 0x90, +0x00, 0x02, 0xff, 0x8b, 0xff, 0x14, 0x00, 0x75, +0xff, 0xac, 0x00, 0x03, 0x00, 0x07, 0x00, 0x17, +0x00, 0xbb, 0x00, 0x04, 0x00, 0x01, 0x00, 0x02, +0x00, 0x04, 0x2b, 0xbb, 0x00, 0x01, 0x00, 0x01, +0x00, 0x05, 0x00, 0x04, 0x2b, 0x30, 0x31, 0x07, +0x33, 0x15, 0x23, 0x37, 0x35, 0x23, 0x15, 0x75, +0xea, 0xea, 0xcb, 0xac, 0x54, 0x98, 0x20, 0x59, +0x59, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x63, +0xff, 0x1d, 0x00, 0x9d, 0xff, 0xad, 0x00, 0x20, +0x00, 0x4b, 0x00, 0xbb, 0x00, 0x07, 0x00, 0x02, +0x00, 0x16, 0x00, 0x04, 0x2b, 0xbb, 0x00, 0x0a, +0x00, 0x01, 0x00, 0x13, 0x00, 0x04, 0x2b, 0xb8, +0x00, 0x16, 0x10, 0xb8, 0x00, 0x00, 0xd0, 0xb8, +0x00, 0x00, 0x2f, 0xb8, 0x00, 0x0a, 0x10, 0xb8, +0x00, 0x03, 0xd0, 0xb8, 0x00, 0x16, 0x10, 0xb8, +0x00, 0x0d, 0xd0, 0xb8, 0x00, 0x0d, 0x2f, 0xb8, +0x00, 0x13, 0x10, 0xb8, 0x00, 0x1a, 0xd0, 0xb8, +0x00, 0x16, 0x10, 0xb8, 0x00, 0x1f, 0xd0, 0xb8, +0x00, 0x1f, 0x2f, 0x30, 0x31, 0x07, 0x26, 0x36, +0x33, 0x32, 0x16, 0x17, 0x33, 0x3e, 0x01, 0x33, +0x32, 0x16, 0x0f, 0x01, 0x34, 0x2e, 0x02, 0x23, +0x22, 0x1d, 0x01, 0x23, 0x35, 0x34, 0x23, 0x22, +0x0e, 0x02, 0x15, 0x27, 0x9c, 0x01, 0x2e, 0x28, +0x19, 0x26, 0x07, 0x02, 0x07, 0x27, 0x18, 0x28, +0x2e, 0x01, 0x20, 0x08, 0x0e, 0x15, 0x0c, 0x34, +0x22, 0x34, 0x0c, 0x15, 0x0e, 0x08, 0x20, 0xe0, +0x4d, 0x40, 0x1a, 0x22, 0x22, 0x1a, 0x40, 0x4d, +0x03, 0x22, 0x2b, 0x19, 0x0a, 0x5f, 0x10, 0x10, +0x5f, 0x0a, 0x19, 0x2b, 0x22, 0x03, 0x00, 0x00, +0x00, 0x01, 0xff, 0xb5, 0x02, 0x34, 0x00, 0x4b, +0x02, 0xc9, 0x00, 0x0b, 0x00, 0x25, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x03, 0x2f, +0x1b, 0xb9, 0x00, 0x03, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x05, +0x2f, 0x1b, 0xb9, 0x00, 0x05, 0x00, 0x13, 0x3e, +0x59, 0x30, 0x31, 0x03, 0x37, 0x27, 0x37, 0x17, +0x37, 0x17, 0x07, 0x17, 0x07, 0x27, 0x07, 0x4b, +0x33, 0x33, 0x18, 0x33, 0x33, 0x18, 0x33, 0x33, +0x18, 0x33, 0x33, 0x02, 0x4b, 0x33, 0x33, 0x18, +0x33, 0x33, 0x18, 0x33, 0x33, 0x17, 0x33, 0x33, +0xff, 0xff, 0xff, 0x5c, 0x02, 0x43, 0x00, 0xa4, +0x02, 0xc6, 0x02, 0x06, 0x07, 0x29, 0x00, 0x00, +0xff, 0xff, 0xff, 0x5b, 0x02, 0xce, 0x00, 0xa5, +0x03, 0x42, 0x02, 0x06, 0x07, 0x2a, 0x00, 0x00, +0x00, 0x01, 0xff, 0xed, 0xff, 0x41, 0x00, 0x4c, +0xff, 0xbe, 0x00, 0x11, 0x00, 0x0d, 0x00, 0xbb, +0x00, 0x0b, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, +0x2b, 0x30, 0x31, 0x17, 0x22, 0x26, 0x3d, 0x01, +0x33, 0x0e, 0x01, 0x15, 0x14, 0x16, 0x33, 0x32, +0x36, 0x37, 0x17, 0x0e, 0x01, 0x26, 0x1b, 0x1e, +0x27, 0x01, 0x01, 0x10, 0x0a, 0x05, 0x08, 0x0c, +0x07, 0x0a, 0x0e, 0xbf, 0x21, 0x26, 0x36, 0x0e, +0x21, 0x0d, 0x10, 0x0e, 0x01, 0x03, 0x21, 0x03, +0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x3b, +0x02, 0x2f, 0x01, 0xc5, 0x02, 0xca, 0x00, 0x0d, +0x00, 0x0b, 0x00, 0xba, 0x00, 0x03, 0x00, 0x0a, +0x00, 0x03, 0x2b, 0x30, 0x31, 0x01, 0x3e, 0x01, +0x33, 0x32, 0x16, 0x17, 0x07, 0x2e, 0x01, 0x23, +0x22, 0x06, 0x07, 0xfe, 0x3b, 0x64, 0xde, 0x83, +0x83, 0xde, 0x64, 0x10, 0x5f, 0xe0, 0x76, 0x76, +0xe0, 0x5f, 0x02, 0x49, 0x3e, 0x43, 0x43, 0x3e, +0x1a, 0x3c, 0x3b, 0x3b, 0x3c, 0x00, 0x00, 0x00, +0x00, 0x03, 0xff, 0x84, 0x02, 0x56, 0x00, 0x7c, +0x03, 0x36, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x1b, +0x00, 0x27, 0x00, 0xb8, 0x00, 0x03, 0x2f, 0xba, +0x00, 0x0a, 0x00, 0x04, 0x00, 0x03, 0x2b, 0xb8, +0x00, 0x03, 0x10, 0xb8, 0x00, 0x01, 0xdc, 0xb8, +0x00, 0x04, 0x10, 0xb8, 0x00, 0x10, 0xd0, 0xb8, +0x00, 0x0a, 0x10, 0xb8, 0x00, 0x16, 0xd0, 0x30, +0x31, 0x03, 0x37, 0x17, 0x0f, 0x01, 0x22, 0x26, +0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, +0x06, 0x33, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, +0x32, 0x16, 0x15, 0x14, 0x06, 0x26, 0x55, 0x1f, +0x5d, 0x4a, 0x0f, 0x14, 0x14, 0x0f, 0x0f, 0x15, +0x15, 0xa3, 0x0f, 0x15, 0x15, 0x0f, 0x0f, 0x14, +0x14, 0x02, 0xce, 0x68, 0x18, 0x62, 0x66, 0x15, +0x0f, 0x0f, 0x14, 0x14, 0x0f, 0x0f, 0x15, 0x15, +0x0f, 0x0f, 0x14, 0x14, 0x0f, 0x0f, 0x15, 0x00, +0x00, 0x03, 0xff, 0x7b, 0x02, 0xd5, 0x00, 0x85, +0x03, 0xb1, 0x00, 0x0b, 0x00, 0x0f, 0x00, 0x1b, +0x00, 0x34, 0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, +0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, 0x00, 0x00, +0x00, 0x13, 0x3e, 0x59, 0xba, 0x00, 0x0c, 0x00, +0x0e, 0x00, 0x03, 0x2b, 0xb8, 0x00, 0x00, 0x10, +0xb8, 0x00, 0x06, 0xdc, 0xb8, 0x00, 0x00, 0x10, +0xb8, 0x00, 0x10, 0xd0, 0xb8, 0x00, 0x06, 0x10, +0xb8, 0x00, 0x16, 0xd0, 0x30, 0x31, 0x03, 0x22, +0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, +0x14, 0x06, 0x37, 0x17, 0x07, 0x27, 0x17, 0x22, +0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, +0x14, 0x06, 0x62, 0x0f, 0x14, 0x14, 0x0f, 0x0f, +0x15, 0x15, 0x95, 0x1f, 0x67, 0x16, 0x7e, 0x0f, +0x15, 0x15, 0x0f, 0x0f, 0x14, 0x14, 0x02, 0xd5, +0x12, 0x11, 0x11, 0x13, 0x13, 0x11, 0x11, 0x12, +0xdc, 0x19, 0x62, 0x11, 0x72, 0x12, 0x11, 0x11, +0x13, 0x13, 0x11, 0x11, 0x12, 0x00, 0x00, 0x00, +0x00, 0x03, 0xff, 0x79, 0x02, 0x31, 0x00, 0x87, +0x02, 0xf6, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x1b, +0x00, 0x27, 0x00, 0xb8, 0x00, 0x02, 0x2f, 0xba, +0x00, 0x0a, 0x00, 0x04, 0x00, 0x03, 0x2b, 0xb8, +0x00, 0x02, 0x10, 0xb8, 0x00, 0x00, 0xdc, 0xb8, +0x00, 0x04, 0x10, 0xb8, 0x00, 0x10, 0xd0, 0xb8, +0x00, 0x0a, 0x10, 0xb8, 0x00, 0x16, 0xd0, 0x30, +0x31, 0x13, 0x17, 0x07, 0x2f, 0x01, 0x22, 0x26, +0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, +0x06, 0x33, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, +0x32, 0x16, 0x15, 0x14, 0x06, 0x10, 0x2e, 0x42, +0x1d, 0x45, 0x0f, 0x12, 0x12, 0x0f, 0x0e, 0x13, +0x13, 0xbe, 0x0e, 0x13, 0x13, 0x0e, 0x0f, 0x12, +0x12, 0x02, 0xf6, 0x0a, 0xbb, 0x07, 0x22, 0x12, +0x0f, 0x0f, 0x12, 0x12, 0x0f, 0x0f, 0x12, 0x12, +0x0f, 0x0f, 0x12, 0x12, 0x0f, 0x0f, 0x12, 0x00, +0x00, 0x03, 0xff, 0x84, 0x02, 0x56, 0x00, 0x7c, +0x03, 0x36, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x1b, +0x00, 0x23, 0x00, 0xba, 0x00, 0x0a, 0x00, 0x04, +0x00, 0x03, 0x2b, 0xba, 0x00, 0x03, 0x00, 0x01, +0x00, 0x03, 0x2b, 0xb8, 0x00, 0x04, 0x10, 0xb8, +0x00, 0x10, 0xd0, 0xb8, 0x00, 0x0a, 0x10, 0xb8, +0x00, 0x16, 0xd0, 0x30, 0x31, 0x03, 0x37, 0x17, +0x0f, 0x01, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, +0x32, 0x16, 0x15, 0x14, 0x06, 0x33, 0x22, 0x26, +0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, +0x06, 0x4e, 0x1f, 0x55, 0x17, 0x68, 0x0f, 0x14, +0x14, 0x0f, 0x0f, 0x15, 0x15, 0xa3, 0x0f, 0x15, +0x15, 0x0f, 0x0f, 0x14, 0x14, 0x03, 0x1e, 0x18, +0x68, 0x12, 0x66, 0x15, 0x0f, 0x0f, 0x14, 0x14, +0x0f, 0x0f, 0x15, 0x15, 0x0f, 0x0f, 0x14, 0x14, +0x0f, 0x0f, 0x15, 0x00, 0x00, 0x03, 0xff, 0x7b, +0x02, 0xd5, 0x00, 0x85, 0x03, 0xb1, 0x00, 0x03, +0x00, 0x0f, 0x00, 0x1b, 0x00, 0x34, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, +0x1b, 0xb9, 0x00, 0x04, 0x00, 0x13, 0x3e, 0x59, +0xba, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x2b, +0xb8, 0x00, 0x04, 0x10, 0xb8, 0x00, 0x0a, 0xdc, +0xb8, 0x00, 0x04, 0x10, 0xb8, 0x00, 0x10, 0xd0, +0xb8, 0x00, 0x0a, 0x10, 0xb8, 0x00, 0x16, 0xd0, +0x30, 0x31, 0x13, 0x27, 0x37, 0x17, 0x07, 0x22, +0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, +0x14, 0x06, 0x33, 0x22, 0x26, 0x35, 0x34, 0x36, +0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x06, 0x67, +0x1f, 0x5e, 0x7e, 0x0f, 0x14, 0x14, 0x0f, 0x0f, +0x15, 0x15, 0xb5, 0x0f, 0x15, 0x15, 0x0f, 0x0f, +0x14, 0x14, 0x03, 0x36, 0x62, 0x19, 0x6a, 0x72, +0x12, 0x11, 0x11, 0x13, 0x13, 0x11, 0x11, 0x12, +0x12, 0x11, 0x11, 0x13, 0x13, 0x11, 0x11, 0x12, +0x00, 0x03, 0xff, 0x79, 0x02, 0x31, 0x00, 0x87, +0x02, 0xf6, 0x00, 0x0b, 0x00, 0x0f, 0x00, 0x1b, +0x00, 0x27, 0x00, 0xb8, 0x00, 0x0f, 0x2f, 0xba, +0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x2b, 0xb8, +0x00, 0x0f, 0x10, 0xb8, 0x00, 0x0d, 0xdc, 0xb8, +0x00, 0x00, 0x10, 0xb8, 0x00, 0x10, 0xd0, 0xb8, +0x00, 0x06, 0x10, 0xb8, 0x00, 0x16, 0xd0, 0x30, +0x31, 0x03, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, +0x32, 0x16, 0x15, 0x14, 0x06, 0x3f, 0x01, 0x17, +0x07, 0x37, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, +0x32, 0x16, 0x15, 0x14, 0x06, 0x66, 0x0f, 0x12, +0x12, 0x0f, 0x0e, 0x13, 0x13, 0x20, 0x2e, 0x2b, +0x1d, 0x62, 0x0e, 0x13, 0x13, 0x0e, 0x0f, 0x12, +0x12, 0x02, 0x5a, 0x12, 0x0f, 0x0f, 0x12, 0x12, +0x0f, 0x0f, 0x12, 0x92, 0x0a, 0xbe, 0x07, 0x29, +0x12, 0x0f, 0x0f, 0x12, 0x12, 0x0f, 0x0f, 0x12, +0x00, 0x03, 0xff, 0x6b, 0x02, 0x56, 0x00, 0x95, +0x03, 0x13, 0x00, 0x19, 0x00, 0x25, 0x00, 0x31, +0x00, 0x37, 0x00, 0xba, 0x00, 0x20, 0x00, 0x1a, +0x00, 0x03, 0x2b, 0xb8, 0x00, 0x20, 0x10, 0xb8, +0x00, 0x2c, 0xd0, 0xb8, 0x00, 0x12, 0xdc, 0xb8, +0x00, 0x0a, 0xdc, 0xb8, 0x00, 0x17, 0xd0, 0xb8, +0x00, 0x05, 0xdc, 0xb8, 0x00, 0x0c, 0xd0, 0xb8, +0x00, 0x12, 0x10, 0xb8, 0x00, 0x19, 0xd0, 0xb8, +0x00, 0x1a, 0x10, 0xb8, 0x00, 0x26, 0xd0, 0x30, +0x31, 0x03, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, +0x33, 0x32, 0x37, 0x17, 0x0e, 0x03, 0x23, 0x22, +0x2e, 0x02, 0x23, 0x22, 0x07, 0x17, 0x22, 0x26, +0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, +0x06, 0x33, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, +0x32, 0x16, 0x15, 0x14, 0x06, 0x95, 0x01, 0x09, +0x13, 0x1c, 0x13, 0x1b, 0x25, 0x1e, 0x1e, 0x15, +0x29, 0x08, 0x1c, 0x01, 0x09, 0x13, 0x1c, 0x13, +0x1b, 0x25, 0x1e, 0x1e, 0x15, 0x29, 0x08, 0x20, +0x0f, 0x14, 0x14, 0x0f, 0x0f, 0x15, 0x15, 0xa3, +0x0f, 0x15, 0x15, 0x0f, 0x0f, 0x14, 0x14, 0x02, +0xc3, 0x0e, 0x1d, 0x17, 0x0e, 0x11, 0x13, 0x11, +0x33, 0x03, 0x0e, 0x1d, 0x17, 0x0e, 0x11, 0x13, +0x11, 0x33, 0x6a, 0x15, 0x0f, 0x0f, 0x14, 0x14, +0x0f, 0x0f, 0x15, 0x15, 0x0f, 0x0f, 0x14, 0x14, +0x0f, 0x0f, 0x15, 0x00, 0x00, 0x03, 0xff, 0x83, +0x02, 0x56, 0x00, 0x7c, 0x03, 0x0c, 0x00, 0x0b, +0x00, 0x0f, 0x00, 0x1b, 0x00, 0x27, 0x00, 0xba, +0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x2b, 0xb8, +0x00, 0x06, 0x10, 0xb8, 0x00, 0x0f, 0xdc, 0xb8, +0x00, 0x0c, 0xdc, 0xb8, 0x00, 0x00, 0x10, 0xb8, +0x00, 0x10, 0xd0, 0xb8, 0x00, 0x06, 0x10, 0xb8, +0x00, 0x16, 0xd0, 0x30, 0x31, 0x03, 0x22, 0x26, +0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, +0x06, 0x27, 0x33, 0x15, 0x23, 0x17, 0x22, 0x26, +0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, +0x06, 0x59, 0x0f, 0x14, 0x14, 0x0f, 0x0f, 0x15, +0x15, 0x33, 0xf8, 0xf8, 0xd6, 0x0f, 0x15, 0x15, +0x0f, 0x0f, 0x14, 0x14, 0x02, 0x56, 0x15, 0x0f, +0x0f, 0x14, 0x14, 0x0f, 0x0f, 0x15, 0xb6, 0x21, +0x95, 0x15, 0x0f, 0x0f, 0x14, 0x14, 0x0f, 0x0f, +0x15, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x7b, +0x02, 0xd5, 0x00, 0x85, 0x03, 0x77, 0x00, 0x0b, +0x00, 0x0f, 0x00, 0x1b, 0x00, 0x30, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, +0x1b, 0xb9, 0x00, 0x00, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x06, 0xdc, 0xb8, 0x00, 0x0f, 0xdc, +0xb8, 0x00, 0x0c, 0xdc, 0xb8, 0x00, 0x00, 0x10, +0xb8, 0x00, 0x10, 0xd0, 0xb8, 0x00, 0x06, 0x10, +0xb8, 0x00, 0x16, 0xd0, 0x30, 0x31, 0x03, 0x22, +0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, +0x14, 0x06, 0x27, 0x33, 0x15, 0x23, 0x17, 0x22, +0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, +0x14, 0x06, 0x62, 0x0f, 0x14, 0x14, 0x0f, 0x0f, +0x15, 0x15, 0x29, 0xf8, 0xf8, 0xde, 0x0f, 0x15, +0x15, 0x0f, 0x0f, 0x14, 0x14, 0x02, 0xd5, 0x12, +0x11, 0x11, 0x13, 0x13, 0x11, 0x11, 0x12, 0xa2, +0x21, 0x81, 0x12, 0x11, 0x11, 0x13, 0x13, 0x11, +0x11, 0x12, 0x00, 0x00, 0x00, 0x03, 0xff, 0x84, +0x02, 0x56, 0x00, 0x7c, 0x03, 0x35, 0x00, 0x07, +0x00, 0x13, 0x00, 0x1f, 0x00, 0x35, 0x00, 0xba, +0x00, 0x0e, 0x00, 0x08, 0x00, 0x03, 0x2b, 0xb8, +0x00, 0x0e, 0x10, 0xb8, 0x00, 0x05, 0xdc, 0xb8, +0x00, 0x07, 0xdc, 0xba, 0x00, 0x00, 0x00, 0x07, +0x00, 0x05, 0x11, 0x12, 0x39, 0xb8, 0x00, 0x02, +0xd0, 0xb8, 0x00, 0x08, 0x10, 0xb8, 0x00, 0x14, +0xd0, 0xb8, 0x00, 0x0e, 0x10, 0xb8, 0x00, 0x1a, +0xd0, 0x30, 0x31, 0x03, 0x33, 0x37, 0x17, 0x07, +0x23, 0x27, 0x37, 0x17, 0x22, 0x26, 0x35, 0x34, +0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x33, +0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, +0x15, 0x14, 0x06, 0x02, 0x04, 0x5d, 0x14, 0x60, +0x26, 0x60, 0x14, 0x06, 0x0f, 0x14, 0x14, 0x0f, +0x0f, 0x15, 0x15, 0xa3, 0x0f, 0x15, 0x15, 0x0f, +0x0f, 0x14, 0x14, 0x02, 0xe7, 0x4e, 0x13, 0x5c, +0x5c, 0x13, 0xdf, 0x15, 0x0f, 0x0f, 0x14, 0x14, +0x0f, 0x0f, 0x15, 0x15, 0x0f, 0x0f, 0x14, 0x14, +0x0f, 0x0f, 0x15, 0x00, 0x00, 0x03, 0xff, 0x7b, +0x02, 0xd5, 0x00, 0x85, 0x03, 0xaf, 0x00, 0x07, +0x00, 0x13, 0x00, 0x1f, 0x00, 0x3e, 0x00, 0xb8, +0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, 0x08, 0x2f, +0x1b, 0xb9, 0x00, 0x08, 0x00, 0x13, 0x3e, 0x59, +0xb8, 0x00, 0x0e, 0xdc, 0xb8, 0x00, 0x07, 0xdc, +0xb8, 0x00, 0x01, 0xdc, 0xba, 0x00, 0x02, 0x00, +0x01, 0x00, 0x07, 0x11, 0x12, 0x39, 0xb8, 0x00, +0x04, 0xd0, 0xb8, 0x00, 0x08, 0x10, 0xb8, 0x00, +0x14, 0xd0, 0xb8, 0x00, 0x0e, 0x10, 0xb8, 0x00, +0x1a, 0xd0, 0x30, 0x31, 0x03, 0x37, 0x17, 0x33, +0x37, 0x17, 0x07, 0x23, 0x07, 0x22, 0x26, 0x35, +0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, +0x33, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, +0x16, 0x15, 0x14, 0x06, 0x7c, 0x13, 0x67, 0x04, +0x67, 0x13, 0x68, 0x28, 0x4e, 0x0f, 0x14, 0x14, +0x0f, 0x0f, 0x15, 0x15, 0xb5, 0x0f, 0x15, 0x15, +0x0f, 0x0f, 0x14, 0x14, 0x03, 0x9b, 0x14, 0x4d, +0x4d, 0x14, 0x5e, 0x68, 0x12, 0x11, 0x11, 0x13, +0x13, 0x11, 0x11, 0x12, 0x12, 0x11, 0x11, 0x13, +0x13, 0x11, 0x11, 0x12, 0x00, 0x02, 0xff, 0x84, +0x02, 0x3d, 0x00, 0xd1, 0x03, 0x03, 0x00, 0x07, +0x00, 0x0b, 0x00, 0x1f, 0x00, 0xba, 0x00, 0x08, +0x00, 0x0a, 0x00, 0x03, 0x2b, 0xba, 0x00, 0x06, +0x00, 0x01, 0x00, 0x03, 0x2b, 0xb8, 0x00, 0x06, +0x10, 0xb8, 0x00, 0x00, 0xdc, 0xb8, 0x00, 0x03, +0xd0, 0x30, 0x31, 0x03, 0x37, 0x33, 0x17, 0x07, +0x27, 0x23, 0x07, 0x25, 0x17, 0x07, 0x27, 0x7c, +0x69, 0x26, 0x69, 0x12, 0x68, 0x04, 0x68, 0x01, +0x1d, 0x1e, 0x64, 0x16, 0x02, 0x53, 0x5c, 0x5c, +0x16, 0x4c, 0x4c, 0xc6, 0x18, 0x6f, 0x14, 0x00, +0x00, 0x02, 0xff, 0x8d, 0x02, 0xc3, 0x00, 0xcb, +0x03, 0x74, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x2c, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x07, 0x2f, 0x1b, 0xb9, 0x00, 0x07, 0x00, 0x13, +0x3e, 0x59, 0xb8, 0x00, 0x06, 0xdc, 0xb8, 0x00, +0x01, 0xdc, 0xb8, 0x00, 0x07, 0x10, 0xb8, 0x00, +0x04, 0xd0, 0xb8, 0x00, 0x0b, 0xdc, 0xb8, 0x00, +0x09, 0xdc, 0x30, 0x31, 0x03, 0x37, 0x33, 0x17, +0x07, 0x27, 0x23, 0x07, 0x3f, 0x01, 0x17, 0x07, +0x73, 0x5f, 0x28, 0x5f, 0x13, 0x5e, 0x04, 0x5e, +0xb2, 0x5e, 0x1b, 0x64, 0x02, 0xd6, 0x54, 0x54, +0x13, 0x44, 0x44, 0x50, 0x61, 0x1b, 0x5c, 0x00, +0x00, 0x02, 0xff, 0x1d, 0x02, 0x3d, 0x00, 0x7c, +0x03, 0x03, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x1f, +0x00, 0xba, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x03, +0x2b, 0xba, 0x00, 0x06, 0x00, 0x01, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x06, 0x10, 0xb8, 0x00, 0x00, +0xdc, 0xb8, 0x00, 0x03, 0xd0, 0x30, 0x31, 0x03, +0x37, 0x33, 0x17, 0x07, 0x27, 0x23, 0x07, 0x2f, +0x01, 0x37, 0x17, 0x7c, 0x69, 0x26, 0x69, 0x12, +0x68, 0x04, 0x68, 0x03, 0x76, 0x1e, 0x6e, 0x02, +0x53, 0x5c, 0x5c, 0x16, 0x4c, 0x4c, 0x3f, 0x6c, +0x1b, 0x70, 0x00, 0x00, 0x00, 0x02, 0xff, 0x47, +0x02, 0xc3, 0x00, 0x73, 0x03, 0x74, 0x00, 0x07, +0x00, 0x0b, 0x00, 0x30, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x07, 0x2f, 0x1b, 0xb9, +0x00, 0x07, 0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, +0x06, 0xdc, 0xb8, 0x00, 0x01, 0xdc, 0xb8, 0x00, +0x07, 0x10, 0xb8, 0x00, 0x04, 0xd0, 0xb8, 0x00, +0x07, 0x10, 0xb8, 0x00, 0x08, 0xdc, 0xb8, 0x00, +0x0a, 0xdc, 0x30, 0x31, 0x03, 0x37, 0x33, 0x17, +0x07, 0x27, 0x23, 0x07, 0x2f, 0x01, 0x37, 0x17, +0x73, 0x5f, 0x28, 0x5f, 0x13, 0x5e, 0x04, 0x5e, +0x07, 0x52, 0x1b, 0x4c, 0x02, 0xd6, 0x54, 0x54, +0x13, 0x44, 0x44, 0x3a, 0x60, 0x17, 0x65, 0x00, +0x00, 0x02, 0xff, 0x84, 0x02, 0x3d, 0x00, 0xb6, +0x03, 0x08, 0x00, 0x07, 0x00, 0x16, 0x00, 0x27, +0x00, 0xba, 0x00, 0x06, 0x00, 0x01, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x06, 0x10, 0xb8, 0x00, 0x00, +0xdc, 0xb8, 0x00, 0x03, 0xd0, 0xb8, 0x00, 0x16, +0xdc, 0xb8, 0x00, 0x08, 0xdc, 0xb8, 0x00, 0x0d, +0xdc, 0xb8, 0x00, 0x0e, 0xdc, 0x30, 0x31, 0x03, +0x37, 0x33, 0x17, 0x07, 0x27, 0x23, 0x07, 0x37, +0x3e, 0x01, 0x35, 0x34, 0x27, 0x37, 0x1e, 0x01, +0x15, 0x14, 0x0e, 0x02, 0x07, 0x7c, 0x69, 0x26, +0x69, 0x12, 0x68, 0x04, 0x68, 0xc9, 0x15, 0x1c, +0x47, 0x03, 0x2d, 0x3d, 0x0e, 0x17, 0x1c, 0x0e, +0x02, 0x53, 0x5c, 0x5c, 0x16, 0x4c, 0x4c, 0x52, +0x08, 0x15, 0x11, 0x2b, 0x03, 0x1d, 0x02, 0x20, +0x24, 0x11, 0x19, 0x12, 0x0c, 0x04, 0x00, 0x00, +0x00, 0x02, 0xff, 0x8d, 0x02, 0xc3, 0x00, 0xb5, +0x03, 0x83, 0x00, 0x07, 0x00, 0x17, 0x00, 0x34, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x07, 0x2f, 0x1b, 0xb9, 0x00, 0x07, 0x00, 0x13, +0x3e, 0x59, 0xb8, 0x00, 0x06, 0xdc, 0xb8, 0x00, +0x01, 0xdc, 0xb8, 0x00, 0x07, 0x10, 0xb8, 0x00, +0x04, 0xd0, 0xb8, 0x00, 0x17, 0xdc, 0xb8, 0x00, +0x08, 0xdc, 0xb8, 0x00, 0x0e, 0xdc, 0xb8, 0x00, +0x0f, 0xdc, 0x30, 0x31, 0x03, 0x37, 0x33, 0x17, +0x07, 0x27, 0x23, 0x07, 0x37, 0x3e, 0x01, 0x35, +0x34, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x15, 0x14, +0x0e, 0x02, 0x07, 0x73, 0x5f, 0x28, 0x5f, 0x13, +0x5e, 0x04, 0x5e, 0xbc, 0x15, 0x1e, 0x25, 0x24, +0x05, 0x2d, 0x3d, 0x0e, 0x17, 0x1c, 0x0e, 0x02, +0xd6, 0x54, 0x54, 0x13, 0x44, 0x44, 0x4d, 0x05, +0x14, 0x11, 0x17, 0x11, 0x02, 0x1f, 0x02, 0x1f, +0x23, 0x11, 0x19, 0x12, 0x0b, 0x03, 0x00, 0x00, +0x00, 0x02, 0xff, 0x7e, 0x02, 0x3d, 0x00, 0x82, +0x03, 0x11, 0x00, 0x07, 0x00, 0x23, 0x00, 0x37, +0x00, 0xba, 0x00, 0x06, 0x00, 0x01, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x06, 0x10, 0xb8, 0x00, 0x00, +0xdc, 0xb8, 0x00, 0x03, 0xd0, 0xb8, 0x00, 0x01, +0x10, 0xb8, 0x00, 0x1b, 0xdc, 0xb8, 0x00, 0x12, +0xdc, 0xb8, 0x00, 0x20, 0xd0, 0xb8, 0x00, 0x0d, +0xdc, 0xb8, 0x00, 0x15, 0xd0, 0xb8, 0x00, 0x1b, +0x10, 0xb8, 0x00, 0x23, 0xd0, 0x30, 0x31, 0x03, +0x37, 0x33, 0x17, 0x07, 0x27, 0x23, 0x07, 0x27, +0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x33, 0x32, +0x36, 0x37, 0x17, 0x0e, 0x03, 0x23, 0x22, 0x2e, +0x02, 0x23, 0x22, 0x06, 0x07, 0x7c, 0x69, 0x26, +0x69, 0x12, 0x68, 0x04, 0x68, 0x18, 0x01, 0x07, +0x0e, 0x16, 0x11, 0x17, 0x24, 0x20, 0x1d, 0x11, +0x11, 0x0d, 0x03, 0x1d, 0x01, 0x07, 0x0e, 0x17, +0x10, 0x17, 0x24, 0x20, 0x1e, 0x10, 0x11, 0x0d, +0x03, 0x02, 0x53, 0x5b, 0x5b, 0x16, 0x4b, 0x4b, +0x86, 0x0d, 0x1b, 0x16, 0x0d, 0x0d, 0x10, 0x0d, +0x16, 0x17, 0x03, 0x0e, 0x1a, 0x16, 0x0d, 0x0d, +0x10, 0x0d, 0x16, 0x17, 0x00, 0x02, 0xff, 0x74, +0x02, 0xc3, 0x00, 0x8c, 0x03, 0x9d, 0x00, 0x07, +0x00, 0x23, 0x00, 0x44, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x07, 0x2f, 0x1b, 0xb9, +0x00, 0x07, 0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, +0x06, 0xdc, 0xb8, 0x00, 0x01, 0xdc, 0xb8, 0x00, +0x07, 0x10, 0xb8, 0x00, 0x04, 0xd0, 0xb8, 0x00, +0x01, 0x10, 0xb8, 0x00, 0x1b, 0xdc, 0xb8, 0x00, +0x12, 0xdc, 0xb8, 0x00, 0x20, 0xd0, 0xb8, 0x00, +0x0d, 0xdc, 0xb8, 0x00, 0x15, 0xd0, 0xb8, 0x00, +0x1b, 0x10, 0xb8, 0x00, 0x23, 0xd0, 0x30, 0x31, +0x03, 0x37, 0x33, 0x17, 0x07, 0x27, 0x23, 0x07, +0x27, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x33, +0x32, 0x36, 0x37, 0x17, 0x0e, 0x03, 0x23, 0x22, +0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x73, 0x5f, +0x28, 0x5f, 0x13, 0x5e, 0x04, 0x5e, 0x2c, 0x01, +0x07, 0x10, 0x1b, 0x14, 0x19, 0x24, 0x1e, 0x1d, +0x12, 0x14, 0x12, 0x03, 0x1e, 0x01, 0x07, 0x10, +0x1b, 0x14, 0x1a, 0x23, 0x1e, 0x1d, 0x12, 0x14, +0x12, 0x03, 0x02, 0xd6, 0x53, 0x53, 0x13, 0x43, +0x43, 0x8a, 0x0e, 0x1c, 0x17, 0x0f, 0x11, 0x13, +0x11, 0x1c, 0x17, 0x03, 0x0e, 0x1c, 0x17, 0x0f, +0x11, 0x13, 0x11, 0x1c, 0x17, 0x00, 0x00, 0x00, +0x00, 0x02, 0xff, 0x6b, 0x02, 0x3a, 0x00, 0x95, +0x03, 0x21, 0x00, 0x03, 0x00, 0x19, 0x00, 0x23, +0x00, 0xba, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x0f, 0x10, 0xb8, 0x00, 0x03, +0xdc, 0xb8, 0x00, 0x01, 0xdc, 0xb8, 0x00, 0x0f, +0x10, 0xb8, 0x00, 0x09, 0xdc, 0xb8, 0x00, 0x15, +0xd0, 0x30, 0x31, 0x03, 0x37, 0x17, 0x07, 0x17, +0x22, 0x2e, 0x02, 0x27, 0x37, 0x1e, 0x03, 0x33, +0x32, 0x3e, 0x02, 0x37, 0x17, 0x0e, 0x03, 0x25, +0x54, 0x1f, 0x5b, 0x0d, 0x27, 0x36, 0x23, 0x12, +0x03, 0x20, 0x03, 0x11, 0x1c, 0x2a, 0x1b, 0x1b, +0x2a, 0x1c, 0x11, 0x03, 0x20, 0x03, 0x12, 0x23, +0x36, 0x02, 0xb0, 0x71, 0x19, 0x6c, 0x62, 0x1c, +0x2b, 0x34, 0x19, 0x05, 0x15, 0x2b, 0x23, 0x15, +0x15, 0x23, 0x2b, 0x15, 0x05, 0x19, 0x34, 0x2b, +0x1c, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x78, +0x02, 0xc6, 0x00, 0x88, 0x03, 0x9d, 0x00, 0x03, +0x00, 0x19, 0x00, 0x2c, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, 0x1b, 0xb9, +0x00, 0x04, 0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, +0x0f, 0xdc, 0xb8, 0x00, 0x02, 0xdc, 0xb8, 0x00, +0x00, 0xdc, 0xb8, 0x00, 0x0f, 0x10, 0xb8, 0x00, +0x0a, 0xdc, 0xb8, 0x00, 0x14, 0xd0, 0x30, 0x31, +0x13, 0x17, 0x07, 0x27, 0x17, 0x22, 0x2e, 0x02, +0x27, 0x37, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, +0x37, 0x17, 0x0e, 0x03, 0x42, 0x1f, 0x66, 0x17, +0x1c, 0x21, 0x31, 0x21, 0x12, 0x03, 0x20, 0x03, +0x0e, 0x1a, 0x25, 0x18, 0x18, 0x25, 0x19, 0x0f, +0x03, 0x20, 0x03, 0x12, 0x21, 0x31, 0x03, 0x9d, +0x19, 0x62, 0x12, 0x6e, 0x16, 0x24, 0x2c, 0x16, +0x05, 0x13, 0x23, 0x1b, 0x10, 0x10, 0x1b, 0x23, +0x13, 0x05, 0x16, 0x2c, 0x24, 0x16, 0x00, 0x00, +0x00, 0x02, 0xff, 0x6b, 0x02, 0x3a, 0x00, 0x95, +0x03, 0x21, 0x00, 0x03, 0x00, 0x19, 0x00, 0x23, +0x00, 0xba, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x0f, 0x10, 0xb8, 0x00, 0x03, +0xdc, 0xb8, 0x00, 0x01, 0xdc, 0xb8, 0x00, 0x0f, +0x10, 0xb8, 0x00, 0x09, 0xdc, 0xb8, 0x00, 0x15, +0xd0, 0x30, 0x31, 0x03, 0x37, 0x17, 0x0f, 0x01, +0x22, 0x2e, 0x02, 0x27, 0x37, 0x1e, 0x03, 0x33, +0x32, 0x3e, 0x02, 0x37, 0x17, 0x0e, 0x03, 0x4e, +0x1f, 0x54, 0x18, 0x0d, 0x27, 0x36, 0x23, 0x12, +0x03, 0x20, 0x03, 0x11, 0x1c, 0x2a, 0x1b, 0x1b, +0x2a, 0x1c, 0x11, 0x03, 0x20, 0x03, 0x12, 0x23, +0x36, 0x03, 0x08, 0x19, 0x71, 0x14, 0x62, 0x1c, +0x2b, 0x34, 0x19, 0x05, 0x15, 0x2b, 0x23, 0x15, +0x15, 0x23, 0x2b, 0x15, 0x05, 0x19, 0x34, 0x2b, +0x1c, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x78, +0x02, 0xc6, 0x00, 0x88, 0x03, 0x9d, 0x00, 0x03, +0x00, 0x19, 0x00, 0x2c, 0x00, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x04, 0x2f, 0x1b, 0xb9, +0x00, 0x04, 0x00, 0x13, 0x3e, 0x59, 0xb8, 0x00, +0x0f, 0xdc, 0xb8, 0x00, 0x00, 0xdc, 0xb8, 0x00, +0x02, 0xdc, 0xb8, 0x00, 0x0f, 0x10, 0xb8, 0x00, +0x0a, 0xdc, 0xb8, 0x00, 0x14, 0xd0, 0x30, 0x31, +0x13, 0x27, 0x37, 0x17, 0x07, 0x22, 0x2e, 0x02, +0x27, 0x37, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, +0x37, 0x17, 0x0e, 0x03, 0x05, 0x66, 0x1f, 0x5e, +0x1c, 0x21, 0x31, 0x21, 0x12, 0x03, 0x20, 0x03, +0x0e, 0x1a, 0x25, 0x18, 0x18, 0x25, 0x19, 0x0f, +0x03, 0x20, 0x03, 0x12, 0x21, 0x31, 0x03, 0x22, +0x62, 0x19, 0x69, 0x6e, 0x16, 0x24, 0x2c, 0x16, +0x05, 0x13, 0x23, 0x1b, 0x10, 0x10, 0x1b, 0x23, +0x13, 0x05, 0x16, 0x2c, 0x24, 0x16, 0x00, 0x00, +0x00, 0x02, 0xff, 0x6b, 0x02, 0x3a, 0x00, 0x95, +0x03, 0x39, 0x00, 0x0f, 0x00, 0x25, 0x00, 0x2b, +0x00, 0xba, 0x00, 0x1b, 0x00, 0x10, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x1b, 0x10, 0xb8, 0x00, 0x0f, +0xdc, 0xb8, 0x00, 0x00, 0xdc, 0xb8, 0x00, 0x06, +0xdc, 0xb8, 0x00, 0x07, 0xdc, 0xb8, 0x00, 0x1b, +0x10, 0xb8, 0x00, 0x15, 0xdc, 0xb8, 0x00, 0x21, +0xd0, 0x30, 0x31, 0x03, 0x3e, 0x01, 0x35, 0x34, +0x26, 0x27, 0x37, 0x1e, 0x01, 0x15, 0x14, 0x0e, +0x02, 0x07, 0x17, 0x22, 0x2e, 0x02, 0x27, 0x37, +0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x17, +0x0e, 0x03, 0x1e, 0x19, 0x21, 0x28, 0x2a, 0x04, +0x30, 0x44, 0x10, 0x19, 0x20, 0x0f, 0x16, 0x27, +0x36, 0x23, 0x12, 0x03, 0x20, 0x03, 0x11, 0x1c, +0x2a, 0x1b, 0x1b, 0x2a, 0x1c, 0x11, 0x03, 0x20, +0x03, 0x12, 0x23, 0x36, 0x02, 0xbd, 0x05, 0x17, +0x11, 0x17, 0x15, 0x02, 0x21, 0x02, 0x22, 0x25, +0x12, 0x1b, 0x13, 0x0c, 0x03, 0x67, 0x1c, 0x2b, +0x34, 0x19, 0x05, 0x15, 0x2b, 0x23, 0x15, 0x15, +0x23, 0x2b, 0x15, 0x05, 0x19, 0x34, 0x2b, 0x1c, +0x00, 0x02, 0xff, 0x78, 0x02, 0xc6, 0x00, 0x88, +0x03, 0xab, 0x00, 0x0f, 0x00, 0x25, 0x00, 0x34, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x10, 0x2f, 0x1b, 0xb9, 0x00, 0x10, 0x00, 0x13, +0x3e, 0x59, 0xb8, 0x00, 0x1b, 0xdc, 0xb8, 0x00, +0x0f, 0xdc, 0xb8, 0x00, 0x00, 0xdc, 0xb8, 0x00, +0x06, 0xdc, 0xb8, 0x00, 0x07, 0xdc, 0xb8, 0x00, +0x1b, 0x10, 0xb8, 0x00, 0x16, 0xdc, 0xb8, 0x00, +0x20, 0xd0, 0x30, 0x31, 0x03, 0x3e, 0x01, 0x35, +0x34, 0x26, 0x27, 0x37, 0x1e, 0x01, 0x15, 0x14, +0x0e, 0x02, 0x07, 0x17, 0x22, 0x2e, 0x02, 0x27, +0x37, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x37, +0x17, 0x0e, 0x03, 0x1b, 0x15, 0x1e, 0x25, 0x24, +0x05, 0x2d, 0x3d, 0x0e, 0x17, 0x1c, 0x0e, 0x11, +0x21, 0x31, 0x21, 0x12, 0x03, 0x20, 0x03, 0x0e, +0x1a, 0x25, 0x18, 0x18, 0x25, 0x19, 0x0f, 0x03, +0x20, 0x03, 0x12, 0x21, 0x31, 0x03, 0x38, 0x06, +0x13, 0x11, 0x17, 0x12, 0x02, 0x1e, 0x02, 0x1e, +0x24, 0x11, 0x19, 0x11, 0x0b, 0x04, 0x57, 0x16, +0x24, 0x2c, 0x16, 0x05, 0x13, 0x23, 0x1b, 0x10, +0x10, 0x1b, 0x23, 0x13, 0x05, 0x16, 0x2c, 0x24, +0x16, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x76, +0x02, 0x3a, 0x00, 0x8a, 0x03, 0x11, 0x00, 0x13, +0x00, 0x2f, 0x00, 0x33, 0x00, 0xba, 0x00, 0x09, +0x00, 0x00, 0x00, 0x03, 0x2b, 0xb8, 0x00, 0x09, +0x10, 0xb8, 0x00, 0x05, 0xdc, 0xb8, 0x00, 0x0f, +0xd0, 0xb8, 0x00, 0x27, 0xdc, 0xb8, 0x00, 0x1e, +0xdc, 0xb8, 0x00, 0x2c, 0xd0, 0xb8, 0x00, 0x19, +0xdc, 0xb8, 0x00, 0x21, 0xd0, 0xb8, 0x00, 0x27, +0x10, 0xb8, 0x00, 0x2f, 0xd0, 0x30, 0x31, 0x11, +0x22, 0x2e, 0x02, 0x27, 0x37, 0x1e, 0x01, 0x33, +0x32, 0x3e, 0x02, 0x37, 0x17, 0x0e, 0x03, 0x27, +0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x33, 0x32, +0x36, 0x37, 0x17, 0x0e, 0x03, 0x23, 0x22, 0x2e, +0x02, 0x23, 0x22, 0x06, 0x07, 0x24, 0x32, 0x21, +0x11, 0x02, 0x1f, 0x04, 0x35, 0x32, 0x19, 0x26, +0x1b, 0x0f, 0x02, 0x1f, 0x02, 0x11, 0x21, 0x32, +0xa7, 0x01, 0x07, 0x0e, 0x17, 0x11, 0x17, 0x24, +0x20, 0x1d, 0x11, 0x11, 0x0d, 0x03, 0x1e, 0x01, +0x07, 0x0e, 0x17, 0x11, 0x17, 0x24, 0x20, 0x1e, +0x10, 0x11, 0x0d, 0x03, 0x02, 0x3a, 0x14, 0x1e, +0x25, 0x11, 0x05, 0x1c, 0x31, 0x0e, 0x16, 0x1b, +0x0e, 0x05, 0x11, 0x25, 0x1e, 0x14, 0x89, 0x0d, +0x1b, 0x16, 0x0d, 0x0d, 0x10, 0x0d, 0x16, 0x17, +0x03, 0x0e, 0x1a, 0x16, 0x0d, 0x0d, 0x10, 0x0d, +0x16, 0x17, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, +0x02, 0xc7, 0x00, 0x8c, 0x03, 0x9e, 0x00, 0x11, +0x00, 0x2d, 0x00, 0x2f, 0x00, 0xb8, 0x00, 0x00, +0x2f, 0xb8, 0x00, 0x09, 0xdc, 0xb8, 0x00, 0x06, +0xdc, 0xb8, 0x00, 0x0c, 0xd0, 0xb8, 0x00, 0x25, +0xdc, 0xb8, 0x00, 0x1c, 0xdc, 0xb8, 0x00, 0x2a, +0xd0, 0xb8, 0x00, 0x17, 0xdc, 0xb8, 0x00, 0x1f, +0xd0, 0xb8, 0x00, 0x25, 0x10, 0xb8, 0x00, 0x2d, +0xd0, 0x30, 0x31, 0x11, 0x22, 0x2e, 0x02, 0x27, +0x37, 0x1e, 0x01, 0x33, 0x32, 0x36, 0x37, 0x17, +0x0e, 0x03, 0x27, 0x3e, 0x03, 0x33, 0x32, 0x1e, +0x02, 0x33, 0x32, 0x36, 0x37, 0x17, 0x0e, 0x03, +0x23, 0x22, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, +0x21, 0x31, 0x21, 0x12, 0x02, 0x1f, 0x05, 0x32, +0x31, 0x31, 0x32, 0x05, 0x1f, 0x02, 0x12, 0x21, +0x31, 0xad, 0x01, 0x07, 0x10, 0x1b, 0x14, 0x19, +0x24, 0x1e, 0x1d, 0x12, 0x14, 0x12, 0x03, 0x1e, +0x01, 0x07, 0x10, 0x1b, 0x14, 0x1a, 0x23, 0x1e, +0x1d, 0x12, 0x14, 0x12, 0x03, 0x02, 0xc7, 0x12, +0x1e, 0x25, 0x12, 0x05, 0x1e, 0x2f, 0x2f, 0x1e, +0x05, 0x12, 0x25, 0x1e, 0x12, 0x87, 0x0e, 0x1c, +0x17, 0x0f, 0x11, 0x13, 0x11, 0x1c, 0x17, 0x03, +0x0e, 0x1c, 0x17, 0x0f, 0x11, 0x13, 0x11, 0x1c, +0x17, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x85, +0x02, 0x3d, 0x00, 0x7b, 0x03, 0x13, 0x00, 0x07, +0x00, 0x19, 0x00, 0x2b, 0x00, 0xba, 0x00, 0x06, +0x00, 0x01, 0x00, 0x03, 0x2b, 0xb8, 0x00, 0x06, +0x10, 0xb8, 0x00, 0x00, 0xdc, 0xb8, 0x00, 0x03, +0xd0, 0xb8, 0x00, 0x01, 0x10, 0xb8, 0x00, 0x08, +0xdc, 0xb8, 0x00, 0x11, 0xdc, 0xb8, 0x00, 0x0d, +0xdc, 0xb8, 0x00, 0x15, 0xd0, 0x30, 0x31, 0x03, +0x37, 0x33, 0x17, 0x07, 0x27, 0x23, 0x07, 0x37, +0x22, 0x2e, 0x02, 0x27, 0x37, 0x1e, 0x01, 0x33, +0x32, 0x36, 0x37, 0x17, 0x0e, 0x03, 0x7a, 0x67, +0x26, 0x67, 0x12, 0x66, 0x04, 0x66, 0x68, 0x1e, +0x2d, 0x1e, 0x10, 0x02, 0x1d, 0x05, 0x2c, 0x2d, +0x2d, 0x2c, 0x05, 0x1d, 0x02, 0x10, 0x1e, 0x2d, +0x02, 0x51, 0x4f, 0x4f, 0x14, 0x3f, 0x3f, 0x7c, +0x0f, 0x18, 0x1e, 0x0f, 0x06, 0x18, 0x23, 0x23, +0x18, 0x06, 0x0f, 0x1e, 0x18, 0x0f, 0x00, 0x00, +0x00, 0x02, 0xff, 0x82, 0x02, 0xc3, 0x00, 0x7e, +0x03, 0x9e, 0x00, 0x07, 0x00, 0x19, 0x00, 0x38, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x07, 0x2f, 0x1b, 0xb9, 0x00, 0x07, 0x00, 0x13, +0x3e, 0x59, 0xb8, 0x00, 0x06, 0xdc, 0xb8, 0x00, +0x01, 0xdc, 0xb8, 0x00, 0x07, 0x10, 0xb8, 0x00, +0x04, 0xd0, 0xb8, 0x00, 0x01, 0x10, 0xb8, 0x00, +0x08, 0xdc, 0xb8, 0x00, 0x11, 0xdc, 0xb8, 0x00, +0x0e, 0xdc, 0xb8, 0x00, 0x14, 0xd0, 0x30, 0x31, +0x03, 0x37, 0x33, 0x17, 0x07, 0x27, 0x23, 0x07, +0x37, 0x22, 0x2e, 0x02, 0x27, 0x37, 0x1e, 0x01, +0x33, 0x32, 0x36, 0x37, 0x17, 0x0e, 0x03, 0x73, +0x5f, 0x28, 0x5f, 0x13, 0x5e, 0x04, 0x5e, 0x60, +0x1f, 0x2e, 0x1f, 0x10, 0x02, 0x1f, 0x05, 0x2d, +0x2d, 0x2d, 0x2d, 0x05, 0x1f, 0x02, 0x10, 0x1f, +0x2e, 0x02, 0xd6, 0x53, 0x53, 0x13, 0x44, 0x44, +0x81, 0x0f, 0x19, 0x1e, 0x0f, 0x05, 0x17, 0x24, +0x24, 0x17, 0x05, 0x0f, 0x1e, 0x19, 0x0f, 0x00, +0x00, 0x02, 0xff, 0x85, 0x02, 0x5e, 0x00, 0x7b, +0x03, 0x36, 0x00, 0x03, 0x00, 0x07, 0x00, 0x17, +0x00, 0xba, 0x00, 0x04, 0x00, 0x07, 0x00, 0x03, +0x2b, 0xb8, 0x00, 0x04, 0x10, 0xb8, 0x00, 0x03, +0xdc, 0xb8, 0x00, 0x01, 0xdc, 0x30, 0x31, 0x03, +0x37, 0x17, 0x0f, 0x01, 0x33, 0x15, 0x23, 0x3b, +0x81, 0x1a, 0x85, 0x56, 0xf6, 0xf6, 0x02, 0xd6, +0x60, 0x22, 0x58, 0x3a, 0x24, 0x00, 0x00, 0x00, +0x00, 0x02, 0xff, 0x84, 0x02, 0xe7, 0x00, 0x7c, +0x03, 0xb1, 0x00, 0x03, 0x00, 0x07, 0x00, 0x20, +0x00, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x07, 0x2f, 0x1b, 0xb9, 0x00, 0x07, 0x00, 0x13, +0x3e, 0x59, 0xb8, 0x00, 0x04, 0xdc, 0xb8, 0x00, +0x03, 0xdc, 0xb8, 0x00, 0x01, 0xdc, 0x30, 0x31, +0x03, 0x37, 0x17, 0x0f, 0x01, 0x33, 0x15, 0x23, +0x1f, 0x66, 0x1a, 0x6c, 0x71, 0xf8, 0xf8, 0x03, +0x4c, 0x65, 0x1c, 0x5e, 0x2c, 0x24, 0x00, 0x00, +0x00, 0x02, 0xff, 0x7b, 0x02, 0x30, 0x00, 0x64, +0x02, 0xf5, 0x00, 0x11, 0x00, 0x15, 0x00, 0x2c, +0x00, 0xb8, 0x00, 0x14, 0x2f, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, +0x00, 0x00, 0x00, 0x0d, 0x3e, 0x59, 0xb8, 0x00, +0x11, 0xdc, 0xb8, 0x00, 0x0b, 0xdc, 0xb8, 0x00, +0x0a, 0xdc, 0xb8, 0x00, 0x14, 0x10, 0xb8, 0x00, +0x12, 0xdc, 0x30, 0x31, 0x03, 0x2e, 0x03, 0x35, +0x34, 0x3e, 0x02, 0x37, 0x17, 0x0e, 0x01, 0x15, +0x14, 0x16, 0x17, 0x37, 0x17, 0x07, 0x27, 0x32, +0x10, 0x1e, 0x17, 0x0e, 0x12, 0x1e, 0x28, 0x17, +0x02, 0x24, 0x27, 0x1e, 0x17, 0x5e, 0x30, 0x41, +0x1f, 0x02, 0x42, 0x04, 0x0e, 0x14, 0x1c, 0x14, +0x13, 0x1c, 0x13, 0x09, 0x01, 0x21, 0x02, 0x17, +0x17, 0x16, 0x1a, 0x07, 0x99, 0x0a, 0xbb, 0x07, +0x00, 0x02, 0xff, 0x71, 0x02, 0x30, 0x00, 0x55, +0x02, 0xf5, 0x00, 0x11, 0x00, 0x15, 0x00, 0x2c, +0x00, 0xb8, 0x00, 0x15, 0x2f, 0xb8, 0x00, 0x00, +0x45, 0x58, 0xb8, 0x00, 0x00, 0x2f, 0x1b, 0xb9, +0x00, 0x00, 0x00, 0x0d, 0x3e, 0x59, 0xb8, 0x00, +0x11, 0xdc, 0xb8, 0x00, 0x0b, 0xdc, 0xb8, 0x00, +0x0a, 0xdc, 0xb8, 0x00, 0x15, 0x10, 0xb8, 0x00, +0x13, 0xdc, 0x30, 0x31, 0x03, 0x2e, 0x03, 0x35, +0x34, 0x3e, 0x02, 0x37, 0x17, 0x0e, 0x01, 0x15, +0x14, 0x16, 0x17, 0x3f, 0x01, 0x17, 0x07, 0x3c, +0x10, 0x1e, 0x17, 0x0e, 0x12, 0x1e, 0x28, 0x17, +0x02, 0x24, 0x27, 0x1e, 0x17, 0x2e, 0x30, 0x2b, +0x1f, 0x02, 0x42, 0x04, 0x0e, 0x14, 0x1c, 0x14, +0x13, 0x1c, 0x13, 0x09, 0x01, 0x21, 0x02, 0x17, +0x17, 0x16, 0x1a, 0x07, 0x8f, 0x0a, 0xbe, 0x07, +0x00, 0x02, 0xff, 0x7d, 0x02, 0x32, 0x00, 0x83, +0x03, 0x12, 0x00, 0x0e, 0x00, 0x28, 0x00, 0x2f, +0x00, 0xb8, 0x00, 0x00, 0x2f, 0xb8, 0x00, 0x0e, +0xdc, 0xb8, 0x00, 0x09, 0xdc, 0xb8, 0x00, 0x08, +0xdc, 0xb8, 0x00, 0x20, 0xdc, 0xb8, 0x00, 0x17, +0xdc, 0xb8, 0x00, 0x25, 0xd0, 0xb8, 0x00, 0x12, +0xdc, 0xb8, 0x00, 0x1a, 0xd0, 0xb8, 0x00, 0x20, +0x10, 0xb8, 0x00, 0x28, 0xd0, 0x30, 0x31, 0x13, +0x2e, 0x03, 0x35, 0x34, 0x36, 0x37, 0x17, 0x06, +0x15, 0x14, 0x16, 0x17, 0x27, 0x3e, 0x01, 0x33, +0x32, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x17, +0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x23, 0x22, +0x06, 0x07, 0x16, 0x0e, 0x1d, 0x16, 0x0e, 0x3c, +0x2d, 0x04, 0x47, 0x1b, 0x16, 0xa1, 0x02, 0x1a, +0x22, 0x17, 0x24, 0x20, 0x1d, 0x11, 0x11, 0x0d, +0x03, 0x1e, 0x01, 0x07, 0x0e, 0x17, 0x11, 0x17, +0x24, 0x20, 0x1e, 0x10, 0x11, 0x0d, 0x03, 0x02, +0x32, 0x04, 0x0b, 0x10, 0x15, 0x0e, 0x1f, 0x1a, +0x02, 0x1c, 0x01, 0x23, 0x0c, 0x12, 0x06, 0x79, +0x1c, 0x2f, 0x0d, 0x10, 0x0d, 0x16, 0x17, 0x03, +0x0e, 0x1a, 0x16, 0x0d, 0x0d, 0x10, 0x0d, 0x16, +0x17, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7a, +0x02, 0x30, 0x00, 0x6d, 0x02, 0xf5, 0x00, 0x11, +0x00, 0x15, 0x00, 0x2c, 0x00, 0xb8, 0x00, 0x14, +0x2f, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x11, 0x2f, 0x1b, 0xb9, 0x00, 0x11, 0x00, 0x0d, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0xdc, 0xb8, 0x00, +0x06, 0xdc, 0xb8, 0x00, 0x07, 0xdc, 0xb8, 0x00, +0x14, 0x10, 0xb8, 0x00, 0x12, 0xdc, 0x30, 0x31, +0x03, 0x3e, 0x01, 0x35, 0x34, 0x26, 0x27, 0x37, +0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x37, +0x17, 0x07, 0x27, 0x70, 0x17, 0x1e, 0x27, 0x24, +0x02, 0x16, 0x29, 0x1e, 0x12, 0x0e, 0x17, 0x1e, +0x10, 0xa5, 0x30, 0x41, 0x1f, 0x02, 0x5c, 0x07, +0x1a, 0x16, 0x17, 0x17, 0x02, 0x21, 0x01, 0x09, +0x13, 0x1c, 0x13, 0x14, 0x1c, 0x14, 0x0e, 0x04, +0xb3, 0x0a, 0xbb, 0x07, 0x00, 0x02, 0xff, 0x7a, +0x02, 0x30, 0x00, 0x5e, 0x02, 0xf5, 0x00, 0x11, +0x00, 0x15, 0x00, 0x2c, 0x00, 0xb8, 0x00, 0x15, +0x2f, 0xb8, 0x00, 0x00, 0x45, 0x58, 0xb8, 0x00, +0x11, 0x2f, 0x1b, 0xb9, 0x00, 0x11, 0x00, 0x0d, +0x3e, 0x59, 0xb8, 0x00, 0x00, 0xdc, 0xb8, 0x00, +0x06, 0xdc, 0xb8, 0x00, 0x07, 0xdc, 0xb8, 0x00, +0x15, 0x10, 0xb8, 0x00, 0x13, 0xdc, 0x30, 0x31, +0x03, 0x3e, 0x01, 0x35, 0x34, 0x26, 0x27, 0x37, +0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x3f, +0x01, 0x17, 0x07, 0x70, 0x17, 0x1e, 0x27, 0x24, +0x02, 0x16, 0x29, 0x1e, 0x12, 0x0e, 0x17, 0x1e, +0x10, 0x6b, 0x30, 0x2b, 0x1f, 0x02, 0x5c, 0x07, +0x1a, 0x16, 0x17, 0x17, 0x02, 0x21, 0x01, 0x09, +0x13, 0x1c, 0x13, 0x14, 0x1c, 0x14, 0x0e, 0x04, +0xa9, 0x0a, 0xbe, 0x07, 0x00, 0x02, 0xff, 0x7d, +0x02, 0x32, 0x00, 0x83, 0x03, 0x12, 0x00, 0x19, +0x00, 0x28, 0x00, 0x2f, 0x00, 0xb8, 0x00, 0x28, +0x2f, 0xb8, 0x00, 0x1a, 0xdc, 0xb8, 0x00, 0x1f, +0xdc, 0xb8, 0x00, 0x20, 0xdc, 0xb8, 0x00, 0x11, +0xdc, 0xb8, 0x00, 0x08, 0xdc, 0xb8, 0x00, 0x16, +0xd0, 0xb8, 0x00, 0x03, 0xdc, 0xb8, 0x00, 0x0b, +0xd0, 0xb8, 0x00, 0x11, 0x10, 0xb8, 0x00, 0x19, +0xd0, 0x30, 0x31, 0x03, 0x3e, 0x01, 0x33, 0x32, +0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x17, 0x0e, +0x03, 0x23, 0x22, 0x2e, 0x02, 0x23, 0x22, 0x06, +0x07, 0x17, 0x3e, 0x01, 0x35, 0x34, 0x27, 0x37, +0x1e, 0x01, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x83, +0x02, 0x1a, 0x22, 0x17, 0x24, 0x20, 0x1d, 0x11, +0x11, 0x0d, 0x03, 0x1e, 0x01, 0x07, 0x0e, 0x17, +0x11, 0x17, 0x24, 0x20, 0x1e, 0x10, 0x11, 0x0d, +0x03, 0x47, 0x16, 0x1b, 0x47, 0x04, 0x2d, 0x3c, +0x0e, 0x17, 0x1c, 0x0e, 0x02, 0xc4, 0x1c, 0x2f, +0x0d, 0x10, 0x0d, 0x16, 0x17, 0x03, 0x0e, 0x1a, +0x16, 0x0d, 0x0d, 0x10, 0x0d, 0x16, 0x17, 0x76, +0x06, 0x12, 0x0c, 0x23, 0x01, 0x1c, 0x02, 0x1a, +0x1f, 0x0e, 0x15, 0x10, 0x0b, 0x04, 0x00, 0x00, +0xff, 0xff, 0x00, 0x21, 0x00, 0x00, 0x01, 0xb4, +0x02, 0xdb, 0x00, 0x26, 0x00, 0x23, 0x00, 0x00, +0x00, 0x07, 0x00, 0x26, 0x01, 0x19, 0x00, 0x00, +0xff, 0xff, 0x00, 0x21, 0xff, 0xf4, 0x01, 0xbe, +0x02, 0xdb, 0x00, 0x26, 0x00, 0x23, 0x00, 0x00, +0x00, 0x07, 0x00, 0x29, 0x01, 0x07, 0x00, 0x00, +0x00, 0x00, 0x00, 0x28, 0x01, 0xe6, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x15, 0x00, 0x70, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, +0x00, 0x85, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x03, 0x00, 0x24, 0x00, 0x8c, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x15, +0x00, 0x70, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x05, 0x00, 0x40, 0x00, 0xb0, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x13, +0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x07, 0x00, 0x60, 0x01, 0x03, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1a, +0x01, 0x63, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x09, 0x00, 0x0c, 0x01, 0x7d, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x19, +0x01, 0x89, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0d, 0x01, 0x93, 0x01, 0xa2, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x1a, +0x03, 0x35, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x10, 0x00, 0x0f, 0x03, 0x4f, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x05, +0x03, 0x5e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x0c, 0x03, 0x63, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x0a, +0x03, 0x6f, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x01, 0x02, 0x00, 0x0b, 0x03, 0x79, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x0b, +0x03, 0x84, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x01, 0x04, 0x00, 0x09, 0x03, 0x8f, 0x00, 0x03, +0x00, 0x01, 0x04, 0x09, 0x00, 0x00, 0x00, 0xe0, +0x03, 0x98, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, +0x00, 0x01, 0x00, 0x2a, 0x04, 0x78, 0x00, 0x03, +0x00, 0x01, 0x04, 0x09, 0x00, 0x02, 0x00, 0x0e, +0x04, 0xa2, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, +0x00, 0x03, 0x00, 0x48, 0x04, 0xb0, 0x00, 0x03, +0x00, 0x01, 0x04, 0x09, 0x00, 0x04, 0x00, 0x2a, +0x04, 0x78, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, +0x00, 0x05, 0x00, 0x80, 0x04, 0xf8, 0x00, 0x03, +0x00, 0x01, 0x04, 0x09, 0x00, 0x06, 0x00, 0x26, +0x05, 0x78, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, +0x00, 0x07, 0x00, 0xc0, 0x05, 0x9e, 0x00, 0x03, +0x00, 0x01, 0x04, 0x09, 0x00, 0x08, 0x00, 0x34, +0x06, 0x5e, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, +0x00, 0x09, 0x00, 0x18, 0x06, 0x92, 0x00, 0x03, +0x00, 0x01, 0x04, 0x09, 0x00, 0x0b, 0x00, 0x32, +0x06, 0xaa, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, +0x00, 0x0d, 0x03, 0x26, 0x06, 0xdc, 0x00, 0x03, +0x00, 0x01, 0x04, 0x09, 0x00, 0x0e, 0x00, 0x34, +0x0a, 0x02, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, +0x00, 0x10, 0x00, 0x1e, 0x0a, 0x36, 0x00, 0x03, +0x00, 0x01, 0x04, 0x09, 0x00, 0x11, 0x00, 0x0a, +0x0a, 0x54, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, +0x01, 0x00, 0x00, 0x18, 0x0a, 0x5e, 0x00, 0x03, +0x00, 0x01, 0x04, 0x09, 0x01, 0x01, 0x00, 0x14, +0x0a, 0x76, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, +0x01, 0x02, 0x00, 0x16, 0x0a, 0x8a, 0x00, 0x03, +0x00, 0x01, 0x04, 0x09, 0x01, 0x03, 0x00, 0x16, +0x0a, 0xa0, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, +0x01, 0x04, 0x00, 0x12, 0x0a, 0xb6, 0x43, 0x6f, +0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, +0x32, 0x30, 0x31, 0x30, 0x2c, 0x20, 0x32, 0x30, +0x31, 0x32, 0x2c, 0x20, 0x32, 0x30, 0x31, 0x34, +0x20, 0x41, 0x64, 0x6f, 0x62, 0x65, 0x20, 0x53, +0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x20, 0x49, +0x6e, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, +0x74, 0x65, 0x64, 0x20, 0x28, 0x68, 0x74, 0x74, +0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, +0x61, 0x64, 0x6f, 0x62, 0x65, 0x2e, 0x63, 0x6f, +0x6d, 0x2f, 0x29, 0x2c, 0x20, 0x77, 0x69, 0x74, +0x68, 0x20, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, +0x65, 0x64, 0x20, 0x46, 0x6f, 0x6e, 0x74, 0x20, +0x4e, 0x61, 0x6d, 0x65, 0x20, 0x27, 0x53, 0x6f, +0x75, 0x72, 0x63, 0x65, 0x27, 0x2e, 0x53, 0x6f, +0x75, 0x72, 0x63, 0x65, 0x20, 0x53, 0x61, 0x6e, +0x73, 0x20, 0x50, 0x72, 0x6f, 0x20, 0x4c, 0x69, +0x67, 0x68, 0x74, 0x52, 0x65, 0x67, 0x75, 0x6c, +0x61, 0x72, 0x32, 0x2e, 0x30, 0x31, 0x30, 0x3b, +0x41, 0x44, 0x42, 0x45, 0x3b, 0x53, 0x6f, 0x75, +0x72, 0x63, 0x65, 0x53, 0x61, 0x6e, 0x73, 0x50, +0x72, 0x6f, 0x2d, 0x4c, 0x69, 0x67, 0x68, 0x74, +0x3b, 0x41, 0x44, 0x4f, 0x42, 0x45, 0x56, 0x65, +0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x32, 0x2e, +0x30, 0x31, 0x30, 0x3b, 0x50, 0x53, 0x20, 0x56, +0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x32, +0x2e, 0x30, 0x3b, 0x68, 0x6f, 0x74, 0x63, 0x6f, +0x6e, 0x76, 0x20, 0x31, 0x2e, 0x30, 0x2e, 0x37, +0x38, 0x3b, 0x6d, 0x61, 0x6b, 0x65, 0x6f, 0x74, +0x66, 0x2e, 0x6c, 0x69, 0x62, 0x32, 0x2e, 0x35, +0x2e, 0x36, 0x31, 0x39, 0x33, 0x30, 0x53, 0x6f, +0x75, 0x72, 0x63, 0x65, 0x53, 0x61, 0x6e, 0x73, +0x50, 0x72, 0x6f, 0x2d, 0x4c, 0x69, 0x67, 0x68, +0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, +0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x72, 0x61, +0x64, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x20, 0x6f, +0x66, 0x20, 0x41, 0x64, 0x6f, 0x62, 0x65, 0x20, +0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x20, +0x49, 0x6e, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, +0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, +0x74, 0x68, 0x65, 0x20, 0x55, 0x6e, 0x69, 0x74, +0x65, 0x64, 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, +0x73, 0x20, 0x61, 0x6e, 0x64, 0x2f, 0x6f, 0x72, +0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x63, +0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, +0x2e, 0x41, 0x64, 0x6f, 0x62, 0x65, 0x20, 0x53, +0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x20, 0x49, +0x6e, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, +0x74, 0x65, 0x64, 0x50, 0x61, 0x75, 0x6c, 0x20, +0x44, 0x2e, 0x20, 0x48, 0x75, 0x6e, 0x74, 0x68, +0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, +0x77, 0x2e, 0x61, 0x64, 0x6f, 0x62, 0x65, 0x2e, +0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x79, 0x70, 0x65, +0x54, 0x68, 0x69, 0x73, 0x20, 0x46, 0x6f, 0x6e, +0x74, 0x20, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, +0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6c, 0x69, +0x63, 0x65, 0x6e, 0x73, 0x65, 0x64, 0x20, 0x75, +0x6e, 0x64, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, +0x20, 0x53, 0x49, 0x4c, 0x20, 0x4f, 0x70, 0x65, +0x6e, 0x20, 0x46, 0x6f, 0x6e, 0x74, 0x20, 0x4c, +0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x2c, 0x20, +0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, +0x31, 0x2e, 0x31, 0x2e, 0x0d, 0x0a, 0x0d, 0x0a, +0x54, 0x68, 0x69, 0x73, 0x20, 0x6c, 0x69, 0x63, +0x65, 0x6e, 0x73, 0x65, 0x20, 0x69, 0x73, 0x20, +0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, +0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, +0x20, 0x46, 0x41, 0x51, 0x20, 0x61, 0x74, 0x3a, +0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, +0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x2e, +0x73, 0x69, 0x6c, 0x2e, 0x6f, 0x72, 0x67, 0x2f, +0x4f, 0x46, 0x4c, 0x2e, 0x20, 0x54, 0x68, 0x69, +0x73, 0x20, 0x46, 0x6f, 0x6e, 0x74, 0x20, 0x53, +0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, +0x69, 0x73, 0x20, 0x64, 0x69, 0x73, 0x74, 0x72, +0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x20, 0x6f, +0x6e, 0x20, 0x61, 0x6e, 0x20, 0x27, 0x41, 0x53, +0x20, 0x49, 0x53, 0x27, 0x20, 0x42, 0x41, 0x53, +0x49, 0x53, 0x2c, 0x20, 0x57, 0x49, 0x54, 0x48, +0x4f, 0x55, 0x54, 0x20, 0x57, 0x41, 0x52, 0x52, +0x41, 0x4e, 0x54, 0x49, 0x45, 0x53, 0x20, 0x4f, +0x52, 0x20, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, +0x49, 0x4f, 0x4e, 0x53, 0x20, 0x4f, 0x46, 0x20, +0x41, 0x4e, 0x59, 0x20, 0x4b, 0x49, 0x4e, 0x44, +0x2c, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, +0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, +0x20, 0x6f, 0x72, 0x20, 0x69, 0x6d, 0x70, 0x6c, +0x69, 0x65, 0x64, 0x2e, 0x20, 0x53, 0x65, 0x65, +0x20, 0x74, 0x68, 0x65, 0x20, 0x53, 0x49, 0x4c, +0x20, 0x4f, 0x70, 0x65, 0x6e, 0x20, 0x46, 0x6f, +0x6e, 0x74, 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, +0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, +0x68, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, +0x66, 0x69, 0x63, 0x20, 0x6c, 0x61, 0x6e, 0x67, +0x75, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x70, 0x65, +0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, +0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x69, +0x6d, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, +0x73, 0x20, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, +0x69, 0x6e, 0x67, 0x20, 0x79, 0x6f, 0x75, 0x72, +0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, +0x74, 0x68, 0x69, 0x73, 0x20, 0x46, 0x6f, 0x6e, +0x74, 0x20, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, +0x72, 0x65, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x3a, +0x2f, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, +0x73, 0x2e, 0x73, 0x69, 0x6c, 0x2e, 0x6f, 0x72, +0x67, 0x2f, 0x4f, 0x46, 0x4c, 0x53, 0x6f, 0x75, +0x72, 0x63, 0x65, 0x20, 0x53, 0x61, 0x6e, 0x73, +0x20, 0x50, 0x72, 0x6f, 0x4c, 0x69, 0x67, 0x68, +0x74, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x64, +0x20, 0x7a, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x72, +0x61, 0x69, 0x67, 0x68, 0x74, 0x20, 0x6c, 0x41, +0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, +0x20, 0x61, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, +0x61, 0x74, 0x65, 0x20, 0x67, 0x53, 0x65, 0x72, +0x69, 0x66, 0x65, 0x64, 0x20, 0x49, 0x00, 0x43, +0x00, 0x6f, 0x00, 0x70, 0x00, 0x79, 0x00, 0x72, +0x00, 0x69, 0x00, 0x67, 0x00, 0x68, 0x00, 0x74, +0x00, 0x20, 0x00, 0x32, 0x00, 0x30, 0x00, 0x31, +0x00, 0x30, 0x00, 0x2c, 0x00, 0x20, 0x00, 0x32, +0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x2c, +0x00, 0x20, 0x00, 0x32, 0x00, 0x30, 0x00, 0x31, +0x00, 0x34, 0x00, 0x20, 0x00, 0x41, 0x00, 0x64, +0x00, 0x6f, 0x00, 0x62, 0x00, 0x65, 0x00, 0x20, +0x00, 0x53, 0x00, 0x79, 0x00, 0x73, 0x00, 0x74, +0x00, 0x65, 0x00, 0x6d, 0x00, 0x73, 0x00, 0x20, +0x00, 0x49, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x6f, +0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, +0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, +0x00, 0x20, 0x00, 0x28, 0x00, 0x68, 0x00, 0x74, +0x00, 0x74, 0x00, 0x70, 0x00, 0x3a, 0x00, 0x2f, +0x00, 0x2f, 0x00, 0x77, 0x00, 0x77, 0x00, 0x77, +0x00, 0x2e, 0x00, 0x61, 0x00, 0x64, 0x00, 0x6f, +0x00, 0x62, 0x00, 0x65, 0x00, 0x2e, 0x00, 0x63, +0x00, 0x6f, 0x00, 0x6d, 0x00, 0x2f, 0x00, 0x29, +0x00, 0x2c, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, +0x00, 0x74, 0x00, 0x68, 0x00, 0x20, 0x00, 0x52, +0x00, 0x65, 0x00, 0x73, 0x00, 0x65, 0x00, 0x72, +0x00, 0x76, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, +0x00, 0x46, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, +0x00, 0x20, 0x00, 0x4e, 0x00, 0x61, 0x00, 0x6d, +0x00, 0x65, 0x00, 0x20, 0x00, 0x27, 0x00, 0x53, +0x00, 0x6f, 0x00, 0x75, 0x00, 0x72, 0x00, 0x63, +0x00, 0x65, 0x00, 0x27, 0x00, 0x2e, 0x00, 0x53, +0x00, 0x6f, 0x00, 0x75, 0x00, 0x72, 0x00, 0x63, +0x00, 0x65, 0x00, 0x20, 0x00, 0x53, 0x00, 0x61, +0x00, 0x6e, 0x00, 0x73, 0x00, 0x20, 0x00, 0x50, +0x00, 0x72, 0x00, 0x6f, 0x00, 0x20, 0x00, 0x4c, +0x00, 0x69, 0x00, 0x67, 0x00, 0x68, 0x00, 0x74, +0x00, 0x52, 0x00, 0x65, 0x00, 0x67, 0x00, 0x75, +0x00, 0x6c, 0x00, 0x61, 0x00, 0x72, 0x00, 0x32, +0x00, 0x2e, 0x00, 0x30, 0x00, 0x31, 0x00, 0x30, +0x00, 0x3b, 0x00, 0x41, 0x00, 0x44, 0x00, 0x42, +0x00, 0x45, 0x00, 0x3b, 0x00, 0x53, 0x00, 0x6f, +0x00, 0x75, 0x00, 0x72, 0x00, 0x63, 0x00, 0x65, +0x00, 0x53, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x73, +0x00, 0x50, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x2d, +0x00, 0x4c, 0x00, 0x69, 0x00, 0x67, 0x00, 0x68, +0x00, 0x74, 0x00, 0x3b, 0x00, 0x41, 0x00, 0x44, +0x00, 0x4f, 0x00, 0x42, 0x00, 0x45, 0x00, 0x56, +0x00, 0x65, 0x00, 0x72, 0x00, 0x73, 0x00, 0x69, +0x00, 0x6f, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x32, +0x00, 0x2e, 0x00, 0x30, 0x00, 0x31, 0x00, 0x30, +0x00, 0x3b, 0x00, 0x50, 0x00, 0x53, 0x00, 0x20, +0x00, 0x56, 0x00, 0x65, 0x00, 0x72, 0x00, 0x73, +0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x20, +0x00, 0x32, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x3b, +0x00, 0x68, 0x00, 0x6f, 0x00, 0x74, 0x00, 0x63, +0x00, 0x6f, 0x00, 0x6e, 0x00, 0x76, 0x00, 0x20, +0x00, 0x31, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x2e, +0x00, 0x37, 0x00, 0x38, 0x00, 0x3b, 0x00, 0x6d, +0x00, 0x61, 0x00, 0x6b, 0x00, 0x65, 0x00, 0x6f, +0x00, 0x74, 0x00, 0x66, 0x00, 0x2e, 0x00, 0x6c, +0x00, 0x69, 0x00, 0x62, 0x00, 0x32, 0x00, 0x2e, +0x00, 0x35, 0x00, 0x2e, 0x00, 0x36, 0x00, 0x31, +0x00, 0x39, 0x00, 0x33, 0x00, 0x30, 0x00, 0x53, +0x00, 0x6f, 0x00, 0x75, 0x00, 0x72, 0x00, 0x63, +0x00, 0x65, 0x00, 0x53, 0x00, 0x61, 0x00, 0x6e, +0x00, 0x73, 0x00, 0x50, 0x00, 0x72, 0x00, 0x6f, +0x00, 0x2d, 0x00, 0x4c, 0x00, 0x69, 0x00, 0x67, +0x00, 0x68, 0x00, 0x74, 0x00, 0x53, 0x00, 0x6f, +0x00, 0x75, 0x00, 0x72, 0x00, 0x63, 0x00, 0x65, +0x00, 0x20, 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, +0x00, 0x61, 0x00, 0x20, 0x00, 0x74, 0x00, 0x72, +0x00, 0x61, 0x00, 0x64, 0x00, 0x65, 0x00, 0x6d, +0x00, 0x61, 0x00, 0x72, 0x00, 0x6b, 0x00, 0x20, +0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, 0x00, 0x41, +0x00, 0x64, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x65, +0x00, 0x20, 0x00, 0x53, 0x00, 0x79, 0x00, 0x73, +0x00, 0x74, 0x00, 0x65, 0x00, 0x6d, 0x00, 0x73, +0x00, 0x20, 0x00, 0x49, 0x00, 0x6e, 0x00, 0x63, +0x00, 0x6f, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, +0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, +0x00, 0x64, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6e, +0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, +0x00, 0x20, 0x00, 0x55, 0x00, 0x6e, 0x00, 0x69, +0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, +0x00, 0x53, 0x00, 0x74, 0x00, 0x61, 0x00, 0x74, +0x00, 0x65, 0x00, 0x73, 0x00, 0x20, 0x00, 0x61, +0x00, 0x6e, 0x00, 0x64, 0x00, 0x2f, 0x00, 0x6f, +0x00, 0x72, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x74, +0x00, 0x68, 0x00, 0x65, 0x00, 0x72, 0x00, 0x20, +0x00, 0x63, 0x00, 0x6f, 0x00, 0x75, 0x00, 0x6e, +0x00, 0x74, 0x00, 0x72, 0x00, 0x69, 0x00, 0x65, +0x00, 0x73, 0x00, 0x2e, 0x00, 0x41, 0x00, 0x64, +0x00, 0x6f, 0x00, 0x62, 0x00, 0x65, 0x00, 0x20, +0x00, 0x53, 0x00, 0x79, 0x00, 0x73, 0x00, 0x74, +0x00, 0x65, 0x00, 0x6d, 0x00, 0x73, 0x00, 0x20, +0x00, 0x49, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x6f, +0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, +0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, +0x00, 0x50, 0x00, 0x61, 0x00, 0x75, 0x00, 0x6c, +0x00, 0x20, 0x00, 0x44, 0x00, 0x2e, 0x00, 0x20, +0x00, 0x48, 0x00, 0x75, 0x00, 0x6e, 0x00, 0x74, +0x00, 0x68, 0x00, 0x74, 0x00, 0x74, 0x00, 0x70, +0x00, 0x3a, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x77, +0x00, 0x77, 0x00, 0x77, 0x00, 0x2e, 0x00, 0x61, +0x00, 0x64, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x65, +0x00, 0x2e, 0x00, 0x63, 0x00, 0x6f, 0x00, 0x6d, +0x00, 0x2f, 0x00, 0x74, 0x00, 0x79, 0x00, 0x70, +0x00, 0x65, 0x00, 0x54, 0x00, 0x68, 0x00, 0x69, +0x00, 0x73, 0x00, 0x20, 0x00, 0x46, 0x00, 0x6f, +0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, 0x00, 0x53, +0x00, 0x6f, 0x00, 0x66, 0x00, 0x74, 0x00, 0x77, +0x00, 0x61, 0x00, 0x72, 0x00, 0x65, 0x00, 0x20, +0x00, 0x69, 0x00, 0x73, 0x00, 0x20, 0x00, 0x6c, +0x00, 0x69, 0x00, 0x63, 0x00, 0x65, 0x00, 0x6e, +0x00, 0x73, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, +0x00, 0x75, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x65, +0x00, 0x72, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, +0x00, 0x65, 0x00, 0x20, 0x00, 0x53, 0x00, 0x49, +0x00, 0x4c, 0x00, 0x20, 0x00, 0x4f, 0x00, 0x70, +0x00, 0x65, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x46, +0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, +0x00, 0x4c, 0x00, 0x69, 0x00, 0x63, 0x00, 0x65, +0x00, 0x6e, 0x00, 0x73, 0x00, 0x65, 0x00, 0x2c, +0x00, 0x20, 0x00, 0x56, 0x00, 0x65, 0x00, 0x72, +0x00, 0x73, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, +0x00, 0x20, 0x00, 0x31, 0x00, 0x2e, 0x00, 0x31, +0x00, 0x2e, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0x0d, +0x00, 0x0a, 0x00, 0x54, 0x00, 0x68, 0x00, 0x69, +0x00, 0x73, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x69, +0x00, 0x63, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x73, +0x00, 0x65, 0x00, 0x20, 0x00, 0x69, 0x00, 0x73, +0x00, 0x20, 0x00, 0x61, 0x00, 0x76, 0x00, 0x61, +0x00, 0x69, 0x00, 0x6c, 0x00, 0x61, 0x00, 0x62, +0x00, 0x6c, 0x00, 0x65, 0x00, 0x20, 0x00, 0x77, +0x00, 0x69, 0x00, 0x74, 0x00, 0x68, 0x00, 0x20, +0x00, 0x61, 0x00, 0x20, 0x00, 0x46, 0x00, 0x41, +0x00, 0x51, 0x00, 0x20, 0x00, 0x61, 0x00, 0x74, +0x00, 0x3a, 0x00, 0x20, 0x00, 0x68, 0x00, 0x74, +0x00, 0x74, 0x00, 0x70, 0x00, 0x3a, 0x00, 0x2f, +0x00, 0x2f, 0x00, 0x73, 0x00, 0x63, 0x00, 0x72, +0x00, 0x69, 0x00, 0x70, 0x00, 0x74, 0x00, 0x73, +0x00, 0x2e, 0x00, 0x73, 0x00, 0x69, 0x00, 0x6c, +0x00, 0x2e, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x67, +0x00, 0x2f, 0x00, 0x4f, 0x00, 0x46, 0x00, 0x4c, +0x00, 0x2e, 0x00, 0x20, 0x00, 0x54, 0x00, 0x68, +0x00, 0x69, 0x00, 0x73, 0x00, 0x20, 0x00, 0x46, +0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, +0x00, 0x53, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x74, +0x00, 0x77, 0x00, 0x61, 0x00, 0x72, 0x00, 0x65, +0x00, 0x20, 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, +0x00, 0x64, 0x00, 0x69, 0x00, 0x73, 0x00, 0x74, +0x00, 0x72, 0x00, 0x69, 0x00, 0x62, 0x00, 0x75, +0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, +0x00, 0x6f, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x61, +0x00, 0x6e, 0x00, 0x20, 0x00, 0x27, 0x00, 0x41, +0x00, 0x53, 0x00, 0x20, 0x00, 0x49, 0x00, 0x53, +0x00, 0x27, 0x00, 0x20, 0x00, 0x42, 0x00, 0x41, +0x00, 0x53, 0x00, 0x49, 0x00, 0x53, 0x00, 0x2c, +0x00, 0x20, 0x00, 0x57, 0x00, 0x49, 0x00, 0x54, +0x00, 0x48, 0x00, 0x4f, 0x00, 0x55, 0x00, 0x54, +0x00, 0x20, 0x00, 0x57, 0x00, 0x41, 0x00, 0x52, +0x00, 0x52, 0x00, 0x41, 0x00, 0x4e, 0x00, 0x54, +0x00, 0x49, 0x00, 0x45, 0x00, 0x53, 0x00, 0x20, +0x00, 0x4f, 0x00, 0x52, 0x00, 0x20, 0x00, 0x43, +0x00, 0x4f, 0x00, 0x4e, 0x00, 0x44, 0x00, 0x49, +0x00, 0x54, 0x00, 0x49, 0x00, 0x4f, 0x00, 0x4e, +0x00, 0x53, 0x00, 0x20, 0x00, 0x4f, 0x00, 0x46, +0x00, 0x20, 0x00, 0x41, 0x00, 0x4e, 0x00, 0x59, +0x00, 0x20, 0x00, 0x4b, 0x00, 0x49, 0x00, 0x4e, +0x00, 0x44, 0x00, 0x2c, 0x00, 0x20, 0x00, 0x65, +0x00, 0x69, 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, +0x00, 0x72, 0x00, 0x20, 0x00, 0x65, 0x00, 0x78, +0x00, 0x70, 0x00, 0x72, 0x00, 0x65, 0x00, 0x73, +0x00, 0x73, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x72, +0x00, 0x20, 0x00, 0x69, 0x00, 0x6d, 0x00, 0x70, +0x00, 0x6c, 0x00, 0x69, 0x00, 0x65, 0x00, 0x64, +0x00, 0x2e, 0x00, 0x20, 0x00, 0x53, 0x00, 0x65, +0x00, 0x65, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, +0x00, 0x65, 0x00, 0x20, 0x00, 0x53, 0x00, 0x49, +0x00, 0x4c, 0x00, 0x20, 0x00, 0x4f, 0x00, 0x70, +0x00, 0x65, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x46, +0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, +0x00, 0x4c, 0x00, 0x69, 0x00, 0x63, 0x00, 0x65, +0x00, 0x6e, 0x00, 0x73, 0x00, 0x65, 0x00, 0x20, +0x00, 0x66, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x20, +0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, +0x00, 0x73, 0x00, 0x70, 0x00, 0x65, 0x00, 0x63, +0x00, 0x69, 0x00, 0x66, 0x00, 0x69, 0x00, 0x63, +0x00, 0x20, 0x00, 0x6c, 0x00, 0x61, 0x00, 0x6e, +0x00, 0x67, 0x00, 0x75, 0x00, 0x61, 0x00, 0x67, +0x00, 0x65, 0x00, 0x2c, 0x00, 0x20, 0x00, 0x70, +0x00, 0x65, 0x00, 0x72, 0x00, 0x6d, 0x00, 0x69, +0x00, 0x73, 0x00, 0x73, 0x00, 0x69, 0x00, 0x6f, +0x00, 0x6e, 0x00, 0x73, 0x00, 0x20, 0x00, 0x61, +0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, 0x00, 0x6c, +0x00, 0x69, 0x00, 0x6d, 0x00, 0x69, 0x00, 0x74, +0x00, 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6f, +0x00, 0x6e, 0x00, 0x73, 0x00, 0x20, 0x00, 0x67, +0x00, 0x6f, 0x00, 0x76, 0x00, 0x65, 0x00, 0x72, +0x00, 0x6e, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x67, +0x00, 0x20, 0x00, 0x79, 0x00, 0x6f, 0x00, 0x75, +0x00, 0x72, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, +0x00, 0x65, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, +0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x69, +0x00, 0x73, 0x00, 0x20, 0x00, 0x46, 0x00, 0x6f, +0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, 0x00, 0x53, +0x00, 0x6f, 0x00, 0x66, 0x00, 0x74, 0x00, 0x77, +0x00, 0x61, 0x00, 0x72, 0x00, 0x65, 0x00, 0x2e, +0x00, 0x68, 0x00, 0x74, 0x00, 0x74, 0x00, 0x70, +0x00, 0x3a, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x73, +0x00, 0x63, 0x00, 0x72, 0x00, 0x69, 0x00, 0x70, +0x00, 0x74, 0x00, 0x73, 0x00, 0x2e, 0x00, 0x73, +0x00, 0x69, 0x00, 0x6c, 0x00, 0x2e, 0x00, 0x6f, +0x00, 0x72, 0x00, 0x67, 0x00, 0x2f, 0x00, 0x4f, +0x00, 0x46, 0x00, 0x4c, 0x00, 0x53, 0x00, 0x6f, +0x00, 0x75, 0x00, 0x72, 0x00, 0x63, 0x00, 0x65, +0x00, 0x20, 0x00, 0x53, 0x00, 0x61, 0x00, 0x6e, +0x00, 0x73, 0x00, 0x20, 0x00, 0x50, 0x00, 0x72, +0x00, 0x6f, 0x00, 0x4c, 0x00, 0x69, 0x00, 0x67, +0x00, 0x68, 0x00, 0x74, 0x00, 0x53, 0x00, 0x6c, +0x00, 0x61, 0x00, 0x73, 0x00, 0x68, 0x00, 0x65, +0x00, 0x64, 0x00, 0x20, 0x00, 0x7a, 0x00, 0x65, +0x00, 0x72, 0x00, 0x6f, 0x00, 0x53, 0x00, 0x74, +0x00, 0x72, 0x00, 0x61, 0x00, 0x69, 0x00, 0x67, +0x00, 0x68, 0x00, 0x74, 0x00, 0x20, 0x00, 0x6c, +0x00, 0x41, 0x00, 0x6c, 0x00, 0x74, 0x00, 0x65, +0x00, 0x72, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x74, +0x00, 0x65, 0x00, 0x20, 0x00, 0x61, 0x00, 0x41, +0x00, 0x6c, 0x00, 0x74, 0x00, 0x65, 0x00, 0x72, +0x00, 0x6e, 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, +0x00, 0x20, 0x00, 0x67, 0x00, 0x53, 0x00, 0x65, +0x00, 0x72, 0x00, 0x69, 0x00, 0x66, 0x00, 0x65, +0x00, 0x64, 0x00, 0x20, 0x00, 0x49, 0x00, 0x00, +0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xb5, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x07, 0x98, 0x00, 0x00, 0x01, 0x02, 0x01, 0x03, +0x00, 0x03, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, +0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, +0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, +0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, +0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, +0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, +0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x44, +0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, +0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, +0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, +0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, +0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, +0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, +0x00, 0x5d, 0x00, 0xad, 0x00, 0xc9, 0x00, 0xc7, +0x00, 0xae, 0x00, 0x62, 0x01, 0x04, 0x01, 0x05, +0x00, 0x63, 0x01, 0x06, 0x01, 0x07, 0x01, 0x08, +0x01, 0x09, 0x01, 0x0a, 0x01, 0x0b, 0x01, 0x0c, +0x01, 0x0d, 0x01, 0x0e, 0x01, 0x0f, 0x01, 0x10, +0x01, 0x11, 0x01, 0x12, 0x01, 0x13, 0x00, 0x90, +0x01, 0x14, 0x01, 0x15, 0x01, 0x16, 0x01, 0x17, +0x00, 0x64, 0x00, 0xfd, 0x01, 0x18, 0x00, 0xff, +0x01, 0x19, 0x01, 0x1a, 0x01, 0x1b, 0x01, 0x1c, +0x01, 0x1d, 0x00, 0xcb, 0x00, 0x65, 0x00, 0xc8, +0x01, 0x1e, 0x00, 0xca, 0x01, 0x1f, 0x01, 0x20, +0x01, 0x21, 0x01, 0x22, 0x01, 0x23, 0x01, 0x24, +0x01, 0x25, 0x01, 0x26, 0x01, 0x27, 0x01, 0x28, +0x01, 0x29, 0x01, 0x2a, 0x01, 0x2b, 0x01, 0x2c, +0x01, 0x2d, 0x00, 0xf8, 0x01, 0x2e, 0x01, 0x2f, +0x01, 0x30, 0x01, 0x31, 0x01, 0x32, 0x01, 0x33, +0x01, 0x34, 0x01, 0x35, 0x01, 0x36, 0x01, 0x37, +0x00, 0xcf, 0x00, 0xcc, 0x00, 0xcd, 0x01, 0x38, +0x00, 0xce, 0x01, 0x39, 0x00, 0xfa, 0x01, 0x3a, +0x01, 0x3b, 0x01, 0x3c, 0x01, 0x3d, 0x01, 0x3e, +0x01, 0x3f, 0x01, 0x40, 0x01, 0x41, 0x01, 0x42, +0x01, 0x43, 0x01, 0x44, 0x01, 0x45, 0x01, 0x46, +0x01, 0x47, 0x01, 0x48, 0x01, 0x49, 0x00, 0xe2, +0x01, 0x4a, 0x01, 0x4b, 0x01, 0x4c, 0x01, 0x4d, +0x01, 0x4e, 0x01, 0x4f, 0x00, 0x66, 0x01, 0x50, +0x01, 0x51, 0x01, 0x52, 0x01, 0x53, 0x00, 0xd3, +0x00, 0xd0, 0x00, 0xd1, 0x00, 0xaf, 0x00, 0x67, +0x01, 0x54, 0x01, 0x55, 0x01, 0x56, 0x01, 0x57, +0x01, 0x58, 0x01, 0x59, 0x01, 0x5a, 0x01, 0x5b, +0x01, 0x5c, 0x01, 0x5d, 0x01, 0x5e, 0x01, 0x5f, +0x00, 0x91, 0x00, 0xb0, 0x01, 0x60, 0x01, 0x61, +0x01, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, +0x01, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, +0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x6d, +0x01, 0x6e, 0x01, 0x6f, 0x00, 0xe4, 0x01, 0x70, +0x01, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, +0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, +0x01, 0x79, 0x01, 0x7a, 0x00, 0xd6, 0x00, 0xd4, +0x00, 0xd5, 0x01, 0x7b, 0x00, 0x68, 0x01, 0x7c, +0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, +0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, +0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, +0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, +0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, +0x01, 0x91, 0x01, 0x92, 0x00, 0xeb, 0x01, 0x93, +0x00, 0xbb, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, +0x01, 0x97, 0x01, 0x98, 0x00, 0xe6, 0x01, 0x99, +0x01, 0x9a, 0x01, 0x9b, 0x00, 0xe9, 0x00, 0xed, +0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x00, 0x6a, +0x00, 0x69, 0x00, 0x6b, 0x00, 0x6d, 0x00, 0x6c, +0x01, 0x9f, 0x01, 0xa0, 0x00, 0x6e, 0x01, 0xa1, +0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, +0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, +0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, +0x01, 0xae, 0x00, 0xa0, 0x01, 0xaf, 0x01, 0xb0, +0x01, 0xb1, 0x01, 0xb2, 0x00, 0x6f, 0x00, 0xfe, +0x01, 0xb3, 0x01, 0x00, 0x01, 0xb4, 0x01, 0xb5, +0x01, 0xb6, 0x01, 0xb7, 0x01, 0x01, 0x00, 0x71, +0x00, 0x70, 0x00, 0x72, 0x01, 0xb8, 0x00, 0x73, +0x01, 0xb9, 0x01, 0xba, 0x01, 0xbb, 0x01, 0xbc, +0x01, 0xbd, 0x01, 0xbe, 0x01, 0xbf, 0x01, 0xc0, +0x01, 0xc1, 0x01, 0xc2, 0x01, 0xc3, 0x01, 0xc4, +0x01, 0xc5, 0x01, 0xc6, 0x01, 0xc7, 0x00, 0xf9, +0x01, 0xc8, 0x01, 0xc9, 0x01, 0xca, 0x01, 0xcb, +0x01, 0xcc, 0x01, 0xcd, 0x01, 0xce, 0x01, 0xcf, +0x01, 0xd0, 0x01, 0xd1, 0x00, 0x75, 0x00, 0x74, +0x00, 0x76, 0x01, 0xd2, 0x00, 0x77, 0x01, 0xd3, +0x01, 0xd4, 0x01, 0xd5, 0x01, 0xd6, 0x01, 0xd7, +0x01, 0xd8, 0x01, 0xd9, 0x00, 0xd7, 0x01, 0xda, +0x01, 0xdb, 0x01, 0xdc, 0x01, 0xdd, 0x01, 0xde, +0x01, 0xdf, 0x01, 0xe0, 0x01, 0xe1, 0x01, 0xe2, +0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x00, 0xe3, +0x01, 0xe6, 0x01, 0xe7, 0x01, 0xe8, 0x01, 0xe9, +0x01, 0xea, 0x01, 0xeb, 0x00, 0x78, 0x01, 0xec, +0x01, 0xed, 0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, +0x00, 0x7a, 0x00, 0x79, 0x00, 0x7b, 0x00, 0x7d, +0x00, 0x7c, 0x01, 0xf1, 0x01, 0xf2, 0x01, 0xf3, +0x01, 0xf4, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xf7, +0x01, 0xf8, 0x01, 0xf9, 0x01, 0xfa, 0x01, 0xfb, +0x01, 0xfc, 0x00, 0xa1, 0x00, 0xb1, 0x01, 0xfd, +0x01, 0xfe, 0x01, 0xff, 0x02, 0x00, 0x02, 0x01, +0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, +0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, +0x02, 0x0a, 0x02, 0x0b, 0x02, 0x0c, 0x00, 0xe5, +0x02, 0x0d, 0x02, 0x0e, 0x02, 0x0f, 0x02, 0x10, +0x00, 0x89, 0x02, 0x11, 0x02, 0x12, 0x02, 0x13, +0x02, 0x14, 0x02, 0x15, 0x02, 0x16, 0x02, 0x17, +0x00, 0x7f, 0x00, 0x7e, 0x00, 0x80, 0x02, 0x18, +0x00, 0x81, 0x02, 0x19, 0x02, 0x1a, 0x02, 0x1b, +0x02, 0x1c, 0x02, 0x1d, 0x02, 0x1e, 0x02, 0x1f, +0x02, 0x20, 0x02, 0x21, 0x02, 0x22, 0x02, 0x23, +0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, +0x02, 0x28, 0x02, 0x29, 0x02, 0x2a, 0x02, 0x2b, +0x02, 0x2c, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x2f, +0x00, 0xec, 0x02, 0x30, 0x00, 0xba, 0x02, 0x31, +0x02, 0x32, 0x02, 0x33, 0x02, 0x34, 0x02, 0x35, +0x00, 0xe7, 0x02, 0x36, 0x02, 0x37, 0x02, 0x38, +0x00, 0xea, 0x00, 0xee, 0x02, 0x39, 0x02, 0x3a, +0x02, 0x3b, 0x02, 0x3c, 0x02, 0x3d, 0x02, 0x3e, +0x02, 0x3f, 0x02, 0x40, 0x02, 0x41, 0x02, 0x42, +0x02, 0x43, 0x02, 0x44, 0x02, 0x45, 0x02, 0x46, +0x02, 0x47, 0x02, 0x48, 0x02, 0x49, 0x02, 0x4a, +0x02, 0x4b, 0x02, 0x4c, 0x02, 0x4d, 0x02, 0x4e, +0x02, 0x4f, 0x02, 0x50, 0x02, 0x51, 0x02, 0x52, +0x02, 0x53, 0x02, 0x54, 0x02, 0x55, 0x02, 0x56, +0x02, 0x57, 0x02, 0x58, 0x02, 0x59, 0x02, 0x5a, +0x02, 0x5b, 0x02, 0x5c, 0x02, 0x5d, 0x02, 0x5e, +0x02, 0x5f, 0x02, 0x60, 0x02, 0x61, 0x02, 0x62, +0x02, 0x63, 0x02, 0x64, 0x02, 0x65, 0x02, 0x66, +0x02, 0x67, 0x02, 0x68, 0x02, 0x69, 0x02, 0x6a, +0x02, 0x6b, 0x02, 0x6c, 0x02, 0x6d, 0x02, 0x6e, +0x02, 0x6f, 0x02, 0x70, 0x02, 0x71, 0x02, 0x72, +0x02, 0x73, 0x02, 0x74, 0x02, 0x75, 0x02, 0x76, +0x02, 0x77, 0x02, 0x78, 0x02, 0x79, 0x02, 0x7a, +0x02, 0x7b, 0x02, 0x7c, 0x02, 0x7d, 0x02, 0x7e, +0x02, 0x7f, 0x02, 0x80, 0x02, 0x81, 0x02, 0x82, +0x02, 0x83, 0x02, 0x84, 0x02, 0x85, 0x02, 0x86, +0x02, 0x87, 0x02, 0x88, 0x02, 0x89, 0x02, 0x8a, +0x02, 0x8b, 0x02, 0x8c, 0x02, 0x8d, 0x02, 0x8e, +0x02, 0x8f, 0x02, 0x90, 0x02, 0x91, 0x02, 0x92, +0x02, 0x93, 0x02, 0x94, 0x02, 0x95, 0x02, 0x96, +0x02, 0x97, 0x02, 0x98, 0x02, 0x99, 0x02, 0x9a, +0x02, 0x9b, 0x02, 0x9c, 0x02, 0x9d, 0x02, 0x9e, +0x02, 0x9f, 0x02, 0xa0, 0x02, 0xa1, 0x02, 0xa2, +0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa5, 0x02, 0xa6, +0x02, 0xa7, 0x02, 0xa8, 0x02, 0xa9, 0x02, 0xaa, +0x02, 0xab, 0x02, 0xac, 0x02, 0xad, 0x02, 0xae, +0x02, 0xaf, 0x02, 0xb0, 0x02, 0xb1, 0x02, 0xb2, +0x02, 0xb3, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb6, +0x02, 0xb7, 0x02, 0xb8, 0x02, 0xb9, 0x02, 0xba, +0x02, 0xbb, 0x02, 0xbc, 0x02, 0xbd, 0x02, 0xbe, +0x02, 0xbf, 0x02, 0xc0, 0x02, 0xc1, 0x02, 0xc2, +0x02, 0xc3, 0x02, 0xc4, 0x02, 0xc5, 0x02, 0xc6, +0x02, 0xc7, 0x02, 0xc8, 0x02, 0xc9, 0x02, 0xca, +0x02, 0xcb, 0x02, 0xcc, 0x02, 0xcd, 0x02, 0xce, +0x02, 0xcf, 0x02, 0xd0, 0x02, 0xd1, 0x02, 0xd2, +0x02, 0xd3, 0x02, 0xd4, 0x02, 0xd5, 0x02, 0xd6, +0x02, 0xd7, 0x02, 0xd8, 0x02, 0xd9, 0x02, 0xda, +0x02, 0xdb, 0x02, 0xdc, 0x02, 0xdd, 0x02, 0xde, +0x02, 0xdf, 0x02, 0xe0, 0x02, 0xe1, 0x02, 0xe2, +0x02, 0xe3, 0x02, 0xe4, 0x02, 0xe5, 0x02, 0xe6, +0x02, 0xe7, 0x02, 0xe8, 0x02, 0xe9, 0x02, 0xea, +0x02, 0xeb, 0x02, 0xec, 0x00, 0x9b, 0x02, 0xed, +0x02, 0xee, 0x02, 0xef, 0x02, 0xf0, 0x02, 0xf1, +0x02, 0xf2, 0x02, 0xf3, 0x02, 0xf4, 0x02, 0xf5, +0x02, 0xf6, 0x02, 0xf7, 0x02, 0xf8, 0x02, 0xf9, +0x02, 0xfa, 0x02, 0xfb, 0x02, 0xfc, 0x02, 0xfd, +0x02, 0xfe, 0x02, 0xff, 0x03, 0x00, 0x03, 0x01, +0x03, 0x02, 0x03, 0x03, 0x03, 0x04, 0x03, 0x05, +0x03, 0x06, 0x03, 0x07, 0x03, 0x08, 0x03, 0x09, +0x03, 0x0a, 0x03, 0x0b, 0x03, 0x0c, 0x03, 0x0d, +0x03, 0x0e, 0x03, 0x0f, 0x03, 0x10, 0x03, 0x11, +0x03, 0x12, 0x03, 0x13, 0x03, 0x14, 0x03, 0x15, +0x03, 0x16, 0x03, 0x17, 0x03, 0x18, 0x03, 0x19, +0x03, 0x1a, 0x03, 0x1b, 0x03, 0x1c, 0x03, 0x1d, +0x03, 0x1e, 0x03, 0x1f, 0x03, 0x20, 0x03, 0x21, +0x03, 0x22, 0x03, 0x23, 0x03, 0x24, 0x03, 0x25, +0x03, 0x26, 0x03, 0x27, 0x03, 0x28, 0x03, 0x29, +0x03, 0x2a, 0x03, 0x2b, 0x03, 0x2c, 0x03, 0x2d, +0x03, 0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, 0x31, +0x03, 0x32, 0x03, 0x33, 0x03, 0x34, 0x03, 0x35, +0x03, 0x36, 0x03, 0x37, 0x03, 0x38, 0x03, 0x39, +0x03, 0x3a, 0x03, 0x3b, 0x03, 0x3c, 0x03, 0x3d, +0x03, 0x3e, 0x03, 0x3f, 0x03, 0x40, 0x03, 0x41, +0x03, 0x42, 0x03, 0x43, 0x03, 0x44, 0x03, 0x45, +0x03, 0x46, 0x03, 0x47, 0x03, 0x48, 0x03, 0x49, +0x03, 0x4a, 0x03, 0x4b, 0x03, 0x4c, 0x03, 0x4d, +0x03, 0x4e, 0x03, 0x4f, 0x03, 0x50, 0x03, 0x51, +0x03, 0x52, 0x03, 0x53, 0x03, 0x54, 0x03, 0x55, +0x03, 0x56, 0x03, 0x57, 0x03, 0x58, 0x03, 0x59, +0x03, 0x5a, 0x03, 0x5b, 0x03, 0x5c, 0x03, 0x5d, +0x03, 0x5e, 0x03, 0x5f, 0x03, 0x60, 0x03, 0x61, +0x03, 0x62, 0x03, 0x63, 0x03, 0x64, 0x03, 0x65, +0x03, 0x66, 0x03, 0x67, 0x03, 0x68, 0x03, 0x69, +0x03, 0x6a, 0x03, 0x6b, 0x03, 0x6c, 0x03, 0x6d, +0x03, 0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x71, +0x03, 0x72, 0x03, 0x73, 0x03, 0x74, 0x03, 0x75, +0x03, 0x76, 0x03, 0x77, 0x03, 0x78, 0x03, 0x79, +0x03, 0x7a, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0x7d, +0x03, 0x7e, 0x03, 0x7f, 0x03, 0x80, 0x03, 0x81, +0x03, 0x82, 0x03, 0x83, 0x03, 0x84, 0x03, 0x85, +0x03, 0x86, 0x03, 0x87, 0x03, 0x88, 0x03, 0x89, +0x03, 0x8a, 0x03, 0x8b, 0x03, 0x8c, 0x03, 0x8d, +0x03, 0x8e, 0x03, 0x8f, 0x03, 0x90, 0x03, 0x91, +0x03, 0x92, 0x03, 0x93, 0x03, 0x94, 0x03, 0x95, +0x03, 0x96, 0x03, 0x97, 0x03, 0x98, 0x03, 0x99, +0x03, 0x9a, 0x03, 0x9b, 0x03, 0x9c, 0x03, 0x9d, +0x03, 0x9e, 0x03, 0x9f, 0x03, 0xa0, 0x03, 0xa1, +0x03, 0xa2, 0x03, 0xa3, 0x03, 0xa4, 0x03, 0xa5, +0x03, 0xa6, 0x03, 0xa7, 0x03, 0xa8, 0x03, 0xa9, +0x03, 0xaa, 0x03, 0xab, 0x03, 0xac, 0x03, 0xad, +0x03, 0xae, 0x03, 0xaf, 0x03, 0xb0, 0x03, 0xb1, +0x03, 0xb2, 0x03, 0xb3, 0x03, 0xb4, 0x03, 0xb5, +0x03, 0xb6, 0x03, 0xb7, 0x03, 0xb8, 0x03, 0xb9, +0x03, 0xba, 0x03, 0xbb, 0x03, 0xbc, 0x03, 0xbd, +0x03, 0xbe, 0x03, 0xbf, 0x03, 0xc0, 0x03, 0xc1, +0x03, 0xc2, 0x03, 0xc3, 0x03, 0xc4, 0x03, 0xc5, +0x03, 0xc6, 0x03, 0xc7, 0x03, 0xc8, 0x03, 0xc9, +0x03, 0xca, 0x03, 0xcb, 0x03, 0xcc, 0x03, 0xcd, +0x03, 0xce, 0x03, 0xcf, 0x03, 0xd0, 0x03, 0xd1, +0x03, 0xd2, 0x03, 0xd3, 0x03, 0xd4, 0x03, 0xd5, +0x03, 0xd6, 0x03, 0xd7, 0x03, 0xd8, 0x03, 0xd9, +0x03, 0xda, 0x03, 0xdb, 0x03, 0xdc, 0x03, 0xdd, +0x03, 0xde, 0x03, 0xdf, 0x03, 0xe0, 0x03, 0xe1, +0x03, 0xe2, 0x03, 0xe3, 0x03, 0xe4, 0x03, 0xe5, +0x03, 0xe6, 0x03, 0xe7, 0x03, 0xe8, 0x03, 0xe9, +0x03, 0xea, 0x03, 0xeb, 0x03, 0xec, 0x03, 0xed, +0x03, 0xee, 0x03, 0xef, 0x03, 0xf0, 0x03, 0xf1, +0x03, 0xf2, 0x03, 0xf3, 0x03, 0xf4, 0x03, 0xf5, +0x03, 0xf6, 0x03, 0xf7, 0x03, 0xf8, 0x03, 0xf9, +0x03, 0xfa, 0x03, 0xfb, 0x03, 0xfc, 0x03, 0xfd, +0x03, 0xfe, 0x03, 0xff, 0x04, 0x00, 0x04, 0x01, +0x04, 0x02, 0x04, 0x03, 0x04, 0x04, 0x04, 0x05, +0x04, 0x06, 0x04, 0x07, 0x04, 0x08, 0x04, 0x09, +0x04, 0x0a, 0x04, 0x0b, 0x04, 0x0c, 0x04, 0x0d, +0x04, 0x0e, 0x04, 0x0f, 0x04, 0x10, 0x04, 0x11, +0x04, 0x12, 0x04, 0x13, 0x04, 0x14, 0x04, 0x15, +0x04, 0x16, 0x04, 0x17, 0x04, 0x18, 0x04, 0x19, +0x04, 0x1a, 0x04, 0x1b, 0x04, 0x1c, 0x04, 0x1d, +0x04, 0x1e, 0x04, 0x1f, 0x04, 0x20, 0x04, 0x21, +0x04, 0x22, 0x04, 0x23, 0x04, 0x24, 0x04, 0x25, +0x04, 0x26, 0x04, 0x27, 0x04, 0x28, 0x04, 0x29, +0x04, 0x2a, 0x04, 0x2b, 0x04, 0x2c, 0x04, 0x2d, +0x04, 0x2e, 0x04, 0x2f, 0x04, 0x30, 0x04, 0x31, +0x04, 0x32, 0x04, 0x33, 0x04, 0x34, 0x04, 0x35, +0x04, 0x36, 0x04, 0x37, 0x04, 0x38, 0x04, 0x39, +0x04, 0x3a, 0x04, 0x3b, 0x04, 0x3c, 0x04, 0x3d, +0x04, 0x3e, 0x04, 0x3f, 0x04, 0x40, 0x04, 0x41, +0x04, 0x42, 0x04, 0x43, 0x04, 0x44, 0x04, 0x45, +0x04, 0x46, 0x04, 0x47, 0x04, 0x48, 0x04, 0x49, +0x04, 0x4a, 0x04, 0x4b, 0x04, 0x4c, 0x04, 0x4d, +0x04, 0x4e, 0x04, 0x4f, 0x04, 0x50, 0x04, 0x51, +0x04, 0x52, 0x04, 0x53, 0x04, 0x54, 0x04, 0x55, +0x04, 0x56, 0x04, 0x57, 0x04, 0x58, 0x04, 0x59, +0x04, 0x5a, 0x04, 0x5b, 0x04, 0x5c, 0x04, 0x5d, +0x04, 0x5e, 0x04, 0x5f, 0x04, 0x60, 0x04, 0x61, +0x04, 0x62, 0x04, 0x63, 0x04, 0x64, 0x04, 0x65, +0x04, 0x66, 0x04, 0x67, 0x04, 0x68, 0x04, 0x69, +0x04, 0x6a, 0x04, 0x6b, 0x04, 0x6c, 0x04, 0x6d, +0x04, 0x6e, 0x04, 0x6f, 0x04, 0x70, 0x04, 0x71, +0x04, 0x72, 0x04, 0x73, 0x04, 0x74, 0x04, 0x75, +0x04, 0x76, 0x04, 0x77, 0x04, 0x78, 0x04, 0x79, +0x04, 0x7a, 0x04, 0x7b, 0x04, 0x7c, 0x04, 0x7d, +0x04, 0x7e, 0x04, 0x7f, 0x04, 0x80, 0x04, 0x81, +0x04, 0x82, 0x04, 0x83, 0x04, 0x84, 0x04, 0x85, +0x04, 0x86, 0x04, 0x87, 0x04, 0x88, 0x04, 0x89, +0x04, 0x8a, 0x04, 0x8b, 0x04, 0x8c, 0x04, 0x8d, +0x04, 0x8e, 0x04, 0x8f, 0x04, 0x90, 0x04, 0x91, +0x04, 0x92, 0x04, 0x93, 0x04, 0x94, 0x04, 0x95, +0x04, 0x96, 0x04, 0x97, 0x04, 0x98, 0x04, 0x99, +0x04, 0x9a, 0x04, 0x9b, 0x04, 0x9c, 0x04, 0x9d, +0x04, 0x9e, 0x04, 0x9f, 0x04, 0xa0, 0x04, 0xa1, +0x04, 0xa2, 0x04, 0xa3, 0x04, 0xa4, 0x04, 0xa5, +0x04, 0xa6, 0x04, 0xa7, 0x04, 0xa8, 0x04, 0xa9, +0x04, 0xaa, 0x04, 0xab, 0x04, 0xac, 0x04, 0xad, +0x04, 0xae, 0x04, 0xaf, 0x04, 0xb0, 0x04, 0xb1, +0x04, 0xb2, 0x04, 0xb3, 0x04, 0xb4, 0x04, 0xb5, +0x04, 0xb6, 0x04, 0xb7, 0x04, 0xb8, 0x04, 0xb9, +0x04, 0xba, 0x00, 0x09, 0x00, 0x13, 0x00, 0x14, +0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, +0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, +0x04, 0xbb, 0x04, 0xbc, 0x04, 0xbd, 0x04, 0xbe, +0x04, 0xbf, 0x04, 0xc0, 0x04, 0xc1, 0x04, 0xc2, +0x04, 0xc3, 0x04, 0xc4, 0x04, 0xc5, 0x04, 0xc6, +0x04, 0xc7, 0x04, 0xc8, 0x04, 0xc9, 0x04, 0xca, +0x04, 0xcb, 0x04, 0xcc, 0x04, 0xcd, 0x04, 0xce, +0x04, 0xcf, 0x04, 0xd0, 0x04, 0xd1, 0x04, 0xd2, +0x04, 0xd3, 0x04, 0xd4, 0x04, 0xd5, 0x04, 0xd6, +0x04, 0xd7, 0x04, 0xd8, 0x04, 0xd9, 0x04, 0xda, +0x04, 0xdb, 0x04, 0xdc, 0x04, 0xdd, 0x04, 0xde, +0x04, 0xdf, 0x04, 0xe0, 0x04, 0xe1, 0x04, 0xe2, +0x04, 0xe3, 0x04, 0xe4, 0x04, 0xe5, 0x04, 0xe6, +0x00, 0x11, 0x00, 0x0f, 0x00, 0x1d, 0x00, 0x1e, +0x00, 0xab, 0x00, 0x04, 0x00, 0xa3, 0x00, 0x22, +0x00, 0xa2, 0x00, 0x0a, 0x00, 0x05, 0x00, 0xb6, +0x00, 0xb7, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0xc4, +0x00, 0xc5, 0x00, 0xbe, 0x00, 0xbf, 0x00, 0xa9, +0x00, 0xaa, 0x00, 0x10, 0x04, 0xe7, 0x00, 0xb2, +0x00, 0xb3, 0x04, 0xe8, 0x04, 0xe9, 0x04, 0xea, +0x04, 0xeb, 0x00, 0xc3, 0x00, 0x87, 0x00, 0x42, +0x04, 0xec, 0x04, 0xed, 0x00, 0x0b, 0x00, 0x0c, +0x00, 0x3e, 0x00, 0x40, 0x00, 0x5e, 0x00, 0x60, +0x00, 0x12, 0x00, 0x5f, 0x00, 0x3f, 0x00, 0xe8, +0x00, 0x0d, 0x00, 0x82, 0x00, 0xc2, 0x00, 0x86, +0x00, 0x88, 0x04, 0xee, 0x04, 0xef, 0x04, 0xf0, +0x04, 0xf1, 0x04, 0xf2, 0x04, 0xf3, 0x04, 0xf4, +0x04, 0xf5, 0x04, 0xf6, 0x04, 0xf7, 0x04, 0xf8, +0x04, 0xf9, 0x04, 0xfa, 0x04, 0xfb, 0x04, 0xfc, +0x04, 0xfd, 0x00, 0x8b, 0x04, 0xfe, 0x00, 0x8a, +0x00, 0x8c, 0x04, 0xff, 0x05, 0x00, 0x05, 0x01, +0x00, 0x23, 0x05, 0x02, 0x00, 0x06, 0x05, 0x03, +0x05, 0x04, 0x05, 0x05, 0x05, 0x06, 0x05, 0x07, +0x05, 0x08, 0x05, 0x09, 0x05, 0x0a, 0x05, 0x0b, +0x05, 0x0c, 0x05, 0x0d, 0x05, 0x0e, 0x05, 0x0f, +0x05, 0x10, 0x05, 0x11, 0x05, 0x12, 0x05, 0x13, +0x05, 0x14, 0x05, 0x15, 0x05, 0x16, 0x05, 0x17, +0x05, 0x18, 0x05, 0x19, 0x05, 0x1a, 0x05, 0x1b, +0x05, 0x1c, 0x05, 0x1d, 0x05, 0x1e, 0x05, 0x1f, +0x05, 0x20, 0x05, 0x21, 0x05, 0x22, 0x05, 0x23, +0x05, 0x24, 0x05, 0x25, 0x05, 0x26, 0x05, 0x27, +0x05, 0x28, 0x05, 0x29, 0x05, 0x2a, 0x05, 0x2b, +0x05, 0x2c, 0x05, 0x2d, 0x05, 0x2e, 0x05, 0x2f, +0x05, 0x30, 0x05, 0x31, 0x05, 0x32, 0x05, 0x33, +0x05, 0x34, 0x05, 0x35, 0x05, 0x36, 0x05, 0x37, +0x05, 0x38, 0x05, 0x39, 0x05, 0x3a, 0x05, 0x3b, +0x05, 0x3c, 0x05, 0x3d, 0x05, 0x3e, 0x05, 0x3f, +0x05, 0x40, 0x05, 0x41, 0x05, 0x42, 0x05, 0x43, +0x05, 0x44, 0x05, 0x45, 0x05, 0x46, 0x05, 0x47, +0x05, 0x48, 0x05, 0x49, 0x05, 0x4a, 0x05, 0x4b, +0x05, 0x4c, 0x05, 0x4d, 0x05, 0x4e, 0x05, 0x4f, +0x05, 0x50, 0x05, 0x51, 0x05, 0x52, 0x05, 0x53, +0x05, 0x54, 0x05, 0x55, 0x05, 0x56, 0x05, 0x57, +0x05, 0x58, 0x05, 0x59, 0x05, 0x5a, 0x05, 0x5b, +0x05, 0x5c, 0x05, 0x5d, 0x05, 0x5e, 0x05, 0x5f, +0x05, 0x60, 0x05, 0x61, 0x05, 0x62, 0x05, 0x63, +0x05, 0x64, 0x05, 0x65, 0x05, 0x66, 0x05, 0x67, +0x05, 0x68, 0x05, 0x69, 0x05, 0x6a, 0x05, 0x6b, +0x05, 0x6c, 0x05, 0x6d, 0x05, 0x6e, 0x05, 0x6f, +0x05, 0x70, 0x05, 0x71, 0x05, 0x72, 0x05, 0x73, +0x05, 0x74, 0x05, 0x75, 0x05, 0x76, 0x05, 0x77, +0x05, 0x78, 0x05, 0x79, 0x05, 0x7a, 0x05, 0x7b, +0x05, 0x7c, 0x05, 0x7d, 0x05, 0x7e, 0x05, 0x7f, +0x05, 0x80, 0x05, 0x81, 0x05, 0x82, 0x05, 0x83, +0x05, 0x84, 0x05, 0x85, 0x05, 0x86, 0x05, 0x87, +0x05, 0x88, 0x05, 0x89, 0x05, 0x8a, 0x05, 0x8b, +0x05, 0x8c, 0x05, 0x8d, 0x05, 0x8e, 0x05, 0x8f, +0x05, 0x90, 0x05, 0x91, 0x05, 0x92, 0x05, 0x93, +0x05, 0x94, 0x05, 0x95, 0x05, 0x96, 0x05, 0x97, +0x05, 0x98, 0x05, 0x99, 0x05, 0x9a, 0x05, 0x9b, +0x05, 0x9c, 0x05, 0x9d, 0x05, 0x9e, 0x05, 0x9f, +0x05, 0xa0, 0x05, 0xa1, 0x05, 0xa2, 0x05, 0xa3, +0x05, 0xa4, 0x05, 0xa5, 0x05, 0xa6, 0x05, 0xa7, +0x05, 0xa8, 0x05, 0xa9, 0x05, 0xaa, 0x05, 0xab, +0x05, 0xac, 0x05, 0xad, 0x05, 0xae, 0x05, 0xaf, +0x05, 0xb0, 0x05, 0xb1, 0x05, 0xb2, 0x05, 0xb3, +0x05, 0xb4, 0x05, 0xb5, 0x05, 0xb6, 0x05, 0xb7, +0x05, 0xb8, 0x05, 0xb9, 0x05, 0xba, 0x05, 0xbb, +0x05, 0xbc, 0x05, 0xbd, 0x05, 0xbe, 0x05, 0xbf, +0x05, 0xc0, 0x05, 0xc1, 0x05, 0xc2, 0x05, 0xc3, +0x05, 0xc4, 0x05, 0xc5, 0x05, 0xc6, 0x05, 0xc7, +0x05, 0xc8, 0x05, 0xc9, 0x05, 0xca, 0x05, 0xcb, +0x05, 0xcc, 0x05, 0xcd, 0x05, 0xce, 0x05, 0xcf, +0x05, 0xd0, 0x05, 0xd1, 0x05, 0xd2, 0x05, 0xd3, +0x05, 0xd4, 0x05, 0xd5, 0x05, 0xd6, 0x05, 0xd7, +0x05, 0xd8, 0x05, 0xd9, 0x05, 0xda, 0x05, 0xdb, +0x05, 0xdc, 0x05, 0xdd, 0x05, 0xde, 0x05, 0xdf, +0x05, 0xe0, 0x05, 0xe1, 0x05, 0xe2, 0x05, 0xe3, +0x05, 0xe4, 0x05, 0xe5, 0x05, 0xe6, 0x05, 0xe7, +0x05, 0xe8, 0x05, 0xe9, 0x05, 0xea, 0x05, 0xeb, +0x05, 0xec, 0x05, 0xed, 0x05, 0xee, 0x05, 0xef, +0x05, 0xf0, 0x05, 0xf1, 0x05, 0xf2, 0x05, 0xf3, +0x05, 0xf4, 0x05, 0xf5, 0x05, 0xf6, 0x05, 0xf7, +0x05, 0xf8, 0x05, 0xf9, 0x05, 0xfa, 0x05, 0xfb, +0x05, 0xfc, 0x05, 0xfd, 0x05, 0xfe, 0x05, 0xff, +0x06, 0x00, 0x06, 0x01, 0x06, 0x02, 0x06, 0x03, +0x06, 0x04, 0x06, 0x05, 0x06, 0x06, 0x06, 0x07, +0x06, 0x08, 0x06, 0x09, 0x06, 0x0a, 0x06, 0x0b, +0x06, 0x0c, 0x06, 0x0d, 0x06, 0x0e, 0x06, 0x0f, +0x06, 0x10, 0x06, 0x11, 0x06, 0x12, 0x06, 0x13, +0x06, 0x14, 0x06, 0x15, 0x06, 0x16, 0x06, 0x17, +0x06, 0x18, 0x06, 0x19, 0x06, 0x1a, 0x06, 0x1b, +0x06, 0x1c, 0x06, 0x1d, 0x06, 0x1e, 0x06, 0x1f, +0x06, 0x20, 0x06, 0x21, 0x06, 0x22, 0x06, 0x23, +0x06, 0x24, 0x06, 0x25, 0x06, 0x26, 0x06, 0x27, +0x06, 0x28, 0x06, 0x29, 0x06, 0x2a, 0x06, 0x2b, +0x06, 0x2c, 0x06, 0x2d, 0x06, 0x2e, 0x06, 0x2f, +0x06, 0x30, 0x06, 0x31, 0x06, 0x32, 0x06, 0x33, +0x06, 0x34, 0x06, 0x35, 0x06, 0x36, 0x06, 0x37, +0x06, 0x38, 0x06, 0x39, 0x06, 0x3a, 0x06, 0x3b, +0x06, 0x3c, 0x06, 0x3d, 0x06, 0x3e, 0x06, 0x3f, +0x06, 0x40, 0x06, 0x41, 0x06, 0x42, 0x06, 0x43, +0x06, 0x44, 0x06, 0x45, 0x06, 0x46, 0x06, 0x47, +0x06, 0x48, 0x06, 0x49, 0x06, 0x4a, 0x06, 0x4b, +0x06, 0x4c, 0x06, 0x4d, 0x06, 0x4e, 0x06, 0x4f, +0x06, 0x50, 0x06, 0x51, 0x06, 0x52, 0x06, 0x53, +0x06, 0x54, 0x06, 0x55, 0x06, 0x56, 0x06, 0x57, +0x06, 0x58, 0x06, 0x59, 0x06, 0x5a, 0x06, 0x5b, +0x06, 0x5c, 0x06, 0x5d, 0x06, 0x5e, 0x06, 0x5f, +0x06, 0x60, 0x06, 0x61, 0x06, 0x62, 0x06, 0x63, +0x06, 0x64, 0x06, 0x65, 0x06, 0x66, 0x06, 0x67, +0x06, 0x68, 0x06, 0x69, 0x06, 0x6a, 0x06, 0x6b, +0x06, 0x6c, 0x06, 0x6d, 0x06, 0x6e, 0x06, 0x6f, +0x06, 0x70, 0x06, 0x71, 0x06, 0x72, 0x06, 0x73, +0x06, 0x74, 0x06, 0x75, 0x06, 0x76, 0x06, 0x77, +0x06, 0x78, 0x06, 0x79, 0x06, 0x7a, 0x06, 0x7b, +0x06, 0x7c, 0x06, 0x7d, 0x06, 0x7e, 0x06, 0x7f, +0x06, 0x80, 0x06, 0x81, 0x06, 0x82, 0x06, 0x83, +0x06, 0x84, 0x06, 0x85, 0x06, 0x86, 0x06, 0x87, +0x06, 0x88, 0x06, 0x89, 0x06, 0x8a, 0x06, 0x8b, +0x06, 0x8c, 0x06, 0x8d, 0x06, 0x8e, 0x06, 0x8f, +0x06, 0x90, 0x06, 0x91, 0x06, 0x92, 0x06, 0x93, +0x06, 0x94, 0x06, 0x95, 0x06, 0x96, 0x06, 0x97, +0x06, 0x98, 0x06, 0x99, 0x06, 0x9a, 0x06, 0x9b, +0x06, 0x9c, 0x06, 0x9d, 0x06, 0x9e, 0x06, 0x9f, +0x06, 0xa0, 0x00, 0x9d, 0x06, 0xa1, 0x00, 0x9e, +0x06, 0xa2, 0x06, 0xa3, 0x06, 0xa4, 0x06, 0xa5, +0x06, 0xa6, 0x06, 0xa7, 0x06, 0xa8, 0x06, 0xa9, +0x06, 0xaa, 0x06, 0xab, 0x06, 0xac, 0x06, 0xad, +0x06, 0xae, 0x06, 0xaf, 0x06, 0xb0, 0x06, 0xb1, +0x06, 0xb2, 0x06, 0xb3, 0x06, 0xb4, 0x06, 0xb5, +0x06, 0xb6, 0x06, 0xb7, 0x06, 0xb8, 0x06, 0xb9, +0x06, 0xba, 0x06, 0xbb, 0x06, 0xbc, 0x06, 0xbd, +0x06, 0xbe, 0x06, 0xbf, 0x06, 0xc0, 0x06, 0xc1, +0x06, 0xc2, 0x06, 0xc3, 0x06, 0xc4, 0x06, 0xc5, +0x06, 0xc6, 0x06, 0xc7, 0x06, 0xc8, 0x06, 0xc9, +0x06, 0xca, 0x06, 0xcb, 0x06, 0xcc, 0x06, 0xcd, +0x06, 0xce, 0x06, 0xcf, 0x06, 0xd0, 0x06, 0xd1, +0x06, 0xd2, 0x06, 0xd3, 0x06, 0xd4, 0x06, 0xd5, +0x06, 0xd6, 0x06, 0xd7, 0x06, 0xd8, 0x06, 0xd9, +0x06, 0xda, 0x06, 0xdb, 0x06, 0xdc, 0x06, 0xdd, +0x06, 0xde, 0x06, 0xdf, 0x06, 0xe0, 0x06, 0xe1, +0x06, 0xe2, 0x06, 0xe3, 0x06, 0xe4, 0x00, 0x83, +0x00, 0xbd, 0x00, 0x07, 0x00, 0x85, 0x00, 0x96, +0x06, 0xe5, 0x06, 0xe6, 0x00, 0x84, 0x06, 0xe7, +0x06, 0xe8, 0x06, 0xe9, 0x06, 0xea, 0x06, 0xeb, +0x06, 0xec, 0x06, 0xed, 0x06, 0xee, 0x06, 0xef, +0x06, 0xf0, 0x06, 0xf1, 0x06, 0xf2, 0x06, 0xf3, +0x06, 0xf4, 0x06, 0xf5, 0x06, 0xf6, 0x00, 0xbc, +0x06, 0xf7, 0x06, 0xf8, 0x00, 0x08, 0x00, 0xc6, +0x00, 0xf5, 0x00, 0xf4, 0x00, 0xf6, 0x06, 0xf9, +0x06, 0xfa, 0x06, 0xfb, 0x06, 0xfc, 0x06, 0xfd, +0x06, 0xfe, 0x06, 0xff, 0x07, 0x00, 0x07, 0x01, +0x07, 0x02, 0x07, 0x03, 0x07, 0x04, 0x07, 0x05, +0x07, 0x06, 0x07, 0x07, 0x07, 0x08, 0x00, 0x0e, +0x00, 0xef, 0x00, 0xf0, 0x00, 0xb8, 0x07, 0x09, +0x00, 0x20, 0x00, 0x1f, 0x00, 0x21, 0x00, 0x94, +0x00, 0x95, 0x00, 0x93, 0x00, 0x41, 0x00, 0x8f, +0x00, 0x61, 0x00, 0xa7, 0x00, 0xa4, 0x00, 0x92, +0x07, 0x0a, 0x00, 0x98, 0x00, 0x9c, 0x00, 0xa5, +0x07, 0x0b, 0x07, 0x0c, 0x00, 0x99, 0x00, 0x9a, +0x07, 0x0d, 0x07, 0x0e, 0x07, 0x0f, 0x07, 0x10, +0x07, 0x11, 0x07, 0x12, 0x07, 0x13, 0x07, 0x14, +0x07, 0x15, 0x07, 0x16, 0x07, 0x17, 0x07, 0x18, +0x07, 0x19, 0x07, 0x1a, 0x07, 0x1b, 0x07, 0x1c, +0x07, 0x1d, 0x07, 0x1e, 0x07, 0x1f, 0x07, 0x20, +0x07, 0x21, 0x07, 0x22, 0x00, 0xb9, 0x07, 0x23, +0x07, 0x24, 0x07, 0x25, 0x07, 0x26, 0x07, 0x27, +0x07, 0x28, 0x07, 0x29, 0x07, 0x2a, 0x00, 0x43, +0x00, 0x8d, 0x00, 0xd8, 0x00, 0xe1, 0x07, 0x2b, +0x07, 0x2c, 0x07, 0x2d, 0x07, 0x2e, 0x07, 0x2f, +0x00, 0xd9, 0x00, 0x8e, 0x00, 0xda, 0x00, 0xdb, +0x00, 0xdd, 0x00, 0xdf, 0x00, 0xdc, 0x00, 0xde, +0x00, 0xe0, 0x07, 0x30, 0x07, 0x31, 0x07, 0x32, +0x07, 0x33, 0x07, 0x34, 0x07, 0x35, 0x07, 0x36, +0x07, 0x37, 0x07, 0x38, 0x07, 0x39, 0x07, 0x3a, +0x07, 0x3b, 0x07, 0x3c, 0x07, 0x3d, 0x07, 0x3e, +0x07, 0x3f, 0x07, 0x40, 0x07, 0x41, 0x07, 0x42, +0x07, 0x43, 0x07, 0x44, 0x07, 0x45, 0x07, 0x46, +0x07, 0x47, 0x07, 0x48, 0x07, 0x49, 0x07, 0x4a, +0x07, 0x4b, 0x07, 0x4c, 0x07, 0x4d, 0x07, 0x4e, +0x07, 0x4f, 0x07, 0x50, 0x07, 0x51, 0x07, 0x52, +0x07, 0x53, 0x07, 0x54, 0x07, 0x55, 0x07, 0x56, +0x07, 0x57, 0x07, 0x58, 0x07, 0x59, 0x07, 0x5a, +0x07, 0x5b, 0x07, 0x5c, 0x07, 0x5d, 0x07, 0x5e, +0x07, 0x5f, 0x07, 0x60, 0x07, 0x61, 0x07, 0x62, +0x07, 0x63, 0x07, 0x64, 0x07, 0x65, 0x07, 0x66, +0x07, 0x67, 0x07, 0x68, 0x07, 0x69, 0x07, 0x6a, +0x07, 0x6b, 0x07, 0x6c, 0x07, 0x6d, 0x07, 0x6e, +0x07, 0x6f, 0x07, 0x70, 0x07, 0x71, 0x07, 0x72, +0x07, 0x73, 0x07, 0x74, 0x07, 0x75, 0x07, 0x76, +0x07, 0x77, 0x07, 0x78, 0x07, 0x79, 0x07, 0x7a, +0x07, 0x7b, 0x07, 0x7c, 0x07, 0x7d, 0x07, 0x7e, +0x07, 0x7f, 0x07, 0x80, 0x07, 0x81, 0x07, 0x82, +0x07, 0x83, 0x07, 0x84, 0x07, 0x85, 0x07, 0x86, +0x07, 0x87, 0x07, 0x88, 0x07, 0x89, 0x07, 0x8a, +0x07, 0x8b, 0x07, 0x8c, 0x07, 0x8d, 0x07, 0x8e, +0x07, 0x8f, 0x07, 0x90, 0x07, 0x91, 0x07, 0x92, +0x07, 0x93, 0x07, 0x94, 0x07, 0x95, 0x07, 0x96, +0x07, 0x97, 0x07, 0x98, 0x07, 0x99, 0x07, 0x9a, +0x07, 0x9b, 0x07, 0x9c, 0x07, 0x9d, 0x07, 0x9e, +0x07, 0x9f, 0x07, 0xa0, 0x07, 0xa1, 0x07, 0xa2, +0x07, 0xa3, 0x07, 0xa4, 0x07, 0xa5, 0x00, 0xc0, +0x00, 0xc1, 0x04, 0x4e, 0x55, 0x4c, 0x4c, 0x02, +0x43, 0x52, 0x07, 0x41, 0x6d, 0x61, 0x63, 0x72, +0x6f, 0x6e, 0x06, 0x41, 0x62, 0x72, 0x65, 0x76, +0x65, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x43, +0x44, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x41, +0x30, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x41, +0x32, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x41, +0x34, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x41, +0x36, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x41, +0x38, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x41, +0x41, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x41, +0x43, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x41, +0x45, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x42, +0x30, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x42, +0x32, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x42, +0x34, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x42, +0x36, 0x07, 0x41, 0x6f, 0x67, 0x6f, 0x6e, 0x65, +0x6b, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x46, +0x43, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x45, +0x32, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x34, +0x33, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x30, +0x36, 0x0b, 0x43, 0x63, 0x69, 0x72, 0x63, 0x75, +0x6d, 0x66, 0x6c, 0x65, 0x78, 0x0a, 0x43, 0x64, +0x6f, 0x74, 0x61, 0x63, 0x63, 0x65, 0x6e, 0x74, +0x06, 0x44, 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x30, 0x43, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x30, 0x45, 0x06, +0x44, 0x63, 0x72, 0x6f, 0x61, 0x74, 0x06, 0x45, +0x63, 0x61, 0x72, 0x6f, 0x6e, 0x07, 0x45, 0x6d, +0x61, 0x63, 0x72, 0x6f, 0x6e, 0x06, 0x45, 0x62, +0x72, 0x65, 0x76, 0x65, 0x0a, 0x45, 0x64, 0x6f, +0x74, 0x61, 0x63, 0x63, 0x65, 0x6e, 0x74, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x42, 0x38, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x42, 0x41, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x42, 0x43, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x42, 0x45, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x43, 0x30, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x43, 0x32, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x43, 0x34, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x43, 0x36, 0x07, +0x45, 0x6f, 0x67, 0x6f, 0x6e, 0x65, 0x6b, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x31, 0x36, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x31, 0x46, 0x34, 0x0b, +0x47, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6d, 0x66, +0x6c, 0x65, 0x78, 0x0a, 0x47, 0x64, 0x6f, 0x74, +0x61, 0x63, 0x63, 0x65, 0x6e, 0x74, 0x07, 0x75, +0x6e, 0x69, 0x30, 0x31, 0x32, 0x32, 0x06, 0x47, +0x63, 0x61, 0x72, 0x6f, 0x6e, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x32, 0x30, 0x0b, 0x75, 0x6e, +0x69, 0x30, 0x30, 0x34, 0x37, 0x30, 0x33, 0x30, +0x33, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x39, +0x33, 0x0b, 0x48, 0x63, 0x69, 0x72, 0x63, 0x75, +0x6d, 0x66, 0x6c, 0x65, 0x78, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x32, 0x34, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x32, 0x41, 0x04, 0x48, 0x62, +0x61, 0x72, 0x06, 0x49, 0x74, 0x69, 0x6c, 0x64, +0x65, 0x07, 0x49, 0x6d, 0x61, 0x63, 0x72, 0x6f, +0x6e, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x43, +0x46, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x43, +0x38, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x43, +0x41, 0x07, 0x49, 0x6f, 0x67, 0x6f, 0x6e, 0x65, +0x6b, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x32, +0x43, 0x0b, 0x4a, 0x63, 0x69, 0x72, 0x63, 0x75, +0x6d, 0x66, 0x6c, 0x65, 0x78, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x31, 0x33, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x33, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x33, 0x34, 0x06, 0x4c, 0x61, +0x63, 0x75, 0x74, 0x65, 0x06, 0x4c, 0x63, 0x61, +0x72, 0x6f, 0x6e, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x31, 0x33, 0x42, 0x04, 0x4c, 0x64, 0x6f, 0x74, +0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x33, 0x36, +0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x33, 0x38, +0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x33, 0x41, +0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x33, 0x45, +0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x34, 0x30, +0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x34, 0x32, +0x06, 0x4e, 0x61, 0x63, 0x75, 0x74, 0x65, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x31, 0x46, 0x38, 0x06, +0x4e, 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x07, 0x75, +0x6e, 0x69, 0x30, 0x31, 0x34, 0x35, 0x07, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x34, 0x34, 0x07, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x34, 0x36, 0x07, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x34, 0x38, 0x07, 0x4f, +0x6d, 0x61, 0x63, 0x72, 0x6f, 0x6e, 0x0d, 0x4f, +0x68, 0x75, 0x6e, 0x67, 0x61, 0x72, 0x75, 0x6d, +0x6c, 0x61, 0x75, 0x74, 0x07, 0x75, 0x6e, 0x69, +0x30, 0x31, 0x44, 0x31, 0x07, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x43, 0x43, 0x07, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x43, 0x45, 0x07, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x44, 0x30, 0x07, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x44, 0x32, 0x07, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x44, 0x34, 0x07, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x44, 0x36, 0x07, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x44, 0x38, 0x07, 0x75, 0x6e, 0x69, +0x30, 0x31, 0x34, 0x45, 0x07, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x35, 0x32, 0x05, 0x4f, 0x68, 0x6f, +0x72, 0x6e, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x44, 0x41, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x44, 0x43, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x44, 0x45, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x45, 0x30, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x45, 0x32, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, +0x45, 0x41, 0x06, 0x52, 0x61, 0x63, 0x75, 0x74, +0x65, 0x06, 0x52, 0x63, 0x61, 0x72, 0x6f, 0x6e, +0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x35, 0x38, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x35, 0x36, +0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x35, 0x41, +0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x35, 0x43, +0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x35, 0x45, +0x06, 0x53, 0x61, 0x63, 0x75, 0x74, 0x65, 0x0b, +0x53, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6d, 0x66, +0x6c, 0x65, 0x78, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x31, 0x35, 0x45, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x32, 0x31, 0x38, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x45, 0x36, 0x30, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x45, 0x36, 0x32, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x45, 0x39, 0x45, 0x06, 0x54, 0x63, 0x61, 0x72, +0x6f, 0x6e, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, +0x36, 0x32, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, +0x31, 0x41, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x36, 0x43, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x36, 0x45, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, +0x36, 0x36, 0x06, 0x55, 0x74, 0x69, 0x6c, 0x64, +0x65, 0x07, 0x55, 0x6d, 0x61, 0x63, 0x72, 0x6f, +0x6e, 0x06, 0x55, 0x62, 0x72, 0x65, 0x76, 0x65, +0x05, 0x55, 0x72, 0x69, 0x6e, 0x67, 0x0d, 0x55, +0x68, 0x75, 0x6e, 0x67, 0x61, 0x72, 0x75, 0x6d, +0x6c, 0x61, 0x75, 0x74, 0x07, 0x75, 0x6e, 0x69, +0x30, 0x31, 0x44, 0x33, 0x07, 0x75, 0x6e, 0x69, +0x30, 0x31, 0x44, 0x35, 0x07, 0x75, 0x6e, 0x69, +0x30, 0x31, 0x44, 0x37, 0x07, 0x75, 0x6e, 0x69, +0x30, 0x31, 0x44, 0x39, 0x07, 0x75, 0x6e, 0x69, +0x30, 0x31, 0x44, 0x42, 0x07, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x45, 0x34, 0x07, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x45, 0x36, 0x07, 0x55, 0x6f, 0x67, +0x6f, 0x6e, 0x65, 0x6b, 0x05, 0x55, 0x68, 0x6f, +0x72, 0x6e, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x45, 0x38, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x45, 0x41, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x45, 0x43, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x45, 0x45, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x46, 0x30, 0x06, 0x57, 0x67, 0x72, 0x61, 0x76, +0x65, 0x06, 0x57, 0x61, 0x63, 0x75, 0x74, 0x65, +0x0b, 0x57, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6d, +0x66, 0x6c, 0x65, 0x78, 0x09, 0x57, 0x64, 0x69, +0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x06, 0x59, +0x67, 0x72, 0x61, 0x76, 0x65, 0x0b, 0x59, 0x63, +0x69, 0x72, 0x63, 0x75, 0x6d, 0x66, 0x6c, 0x65, +0x78, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x38, +0x45, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x46, +0x34, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x46, +0x36, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x46, +0x38, 0x06, 0x5a, 0x61, 0x63, 0x75, 0x74, 0x65, +0x0a, 0x5a, 0x64, 0x6f, 0x74, 0x61, 0x63, 0x63, +0x65, 0x6e, 0x74, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x45, 0x39, 0x32, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x45, 0x39, 0x34, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x31, 0x38, 0x46, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x31, 0x34, 0x41, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x31, 0x33, 0x32, 0x07, 0x61, 0x6d, 0x61, 0x63, +0x72, 0x6f, 0x6e, 0x06, 0x61, 0x62, 0x72, 0x65, +0x76, 0x65, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, +0x43, 0x45, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x41, 0x31, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x41, 0x33, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x41, 0x35, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x41, 0x37, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x41, 0x39, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x41, 0x42, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x41, 0x44, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x41, 0x46, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x42, 0x31, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x42, 0x33, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x42, 0x35, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x42, 0x37, 0x07, 0x61, 0x6f, 0x67, 0x6f, 0x6e, +0x65, 0x6b, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, +0x46, 0x44, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, +0x45, 0x33, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, +0x38, 0x30, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x30, 0x37, 0x0b, 0x63, 0x63, 0x69, 0x72, 0x63, +0x75, 0x6d, 0x66, 0x6c, 0x65, 0x78, 0x0a, 0x63, +0x64, 0x6f, 0x74, 0x61, 0x63, 0x63, 0x65, 0x6e, +0x74, 0x06, 0x64, 0x63, 0x61, 0x72, 0x6f, 0x6e, +0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x30, 0x44, +0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x30, 0x46, +0x06, 0x65, 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x07, +0x65, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x6e, 0x06, +0x65, 0x62, 0x72, 0x65, 0x76, 0x65, 0x0a, 0x65, +0x64, 0x6f, 0x74, 0x61, 0x63, 0x63, 0x65, 0x6e, +0x74, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x42, +0x39, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x42, +0x42, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x42, +0x44, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x42, +0x46, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x43, +0x31, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x43, +0x33, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x43, +0x35, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x43, +0x37, 0x07, 0x65, 0x6f, 0x67, 0x6f, 0x6e, 0x65, +0x6b, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x31, +0x37, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x46, +0x35, 0x0b, 0x67, 0x63, 0x69, 0x72, 0x63, 0x75, +0x6d, 0x66, 0x6c, 0x65, 0x78, 0x0a, 0x67, 0x64, +0x6f, 0x74, 0x61, 0x63, 0x63, 0x65, 0x6e, 0x74, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x32, 0x33, +0x06, 0x67, 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x32, 0x31, 0x0b, +0x75, 0x6e, 0x69, 0x30, 0x30, 0x36, 0x37, 0x30, +0x33, 0x30, 0x33, 0x0b, 0x68, 0x63, 0x69, 0x72, +0x63, 0x75, 0x6d, 0x66, 0x6c, 0x65, 0x78, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x32, 0x35, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x39, 0x36, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x32, 0x42, 0x04, +0x68, 0x62, 0x61, 0x72, 0x06, 0x69, 0x74, 0x69, +0x6c, 0x64, 0x65, 0x07, 0x69, 0x6d, 0x61, 0x63, +0x72, 0x6f, 0x6e, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x31, 0x44, 0x30, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x45, 0x43, 0x39, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x45, 0x43, 0x42, 0x07, 0x69, 0x6f, 0x67, 0x6f, +0x6e, 0x65, 0x6b, 0x09, 0x69, 0x6f, 0x67, 0x6f, +0x6e, 0x65, 0x6b, 0x2e, 0x64, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x31, 0x32, 0x44, 0x0b, 0x6a, 0x63, +0x69, 0x72, 0x63, 0x75, 0x6d, 0x66, 0x6c, 0x65, +0x78, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x33, +0x37, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x33, +0x33, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x33, +0x35, 0x0c, 0x6b, 0x67, 0x72, 0x65, 0x65, 0x6e, +0x6c, 0x61, 0x6e, 0x64, 0x69, 0x63, 0x06, 0x6c, +0x61, 0x63, 0x75, 0x74, 0x65, 0x06, 0x6c, 0x63, +0x61, 0x72, 0x6f, 0x6e, 0x04, 0x6c, 0x64, 0x6f, +0x74, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x33, +0x43, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x33, +0x37, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x33, +0x39, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x33, +0x42, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x33, +0x46, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x34, +0x31, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x34, +0x33, 0x06, 0x6e, 0x61, 0x63, 0x75, 0x74, 0x65, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x46, 0x39, +0x06, 0x6e, 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x31, 0x34, 0x36, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x34, 0x35, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x34, 0x37, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x34, 0x39, 0x0b, +0x6e, 0x61, 0x70, 0x6f, 0x73, 0x74, 0x72, 0x6f, +0x70, 0x68, 0x65, 0x07, 0x6f, 0x6d, 0x61, 0x63, +0x72, 0x6f, 0x6e, 0x0d, 0x6f, 0x68, 0x75, 0x6e, +0x67, 0x61, 0x72, 0x75, 0x6d, 0x6c, 0x61, 0x75, +0x74, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x44, +0x32, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x43, +0x44, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x43, +0x46, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x44, +0x31, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x44, +0x33, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x44, +0x35, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x44, +0x37, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x44, +0x39, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x34, +0x46, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x35, +0x33, 0x05, 0x6f, 0x68, 0x6f, 0x72, 0x6e, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x44, 0x42, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x44, 0x44, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x44, 0x46, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x45, 0x31, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x45, 0x33, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x31, 0x45, 0x42, 0x06, +0x72, 0x61, 0x63, 0x75, 0x74, 0x65, 0x07, 0x75, +0x6e, 0x69, 0x30, 0x31, 0x35, 0x37, 0x06, 0x72, +0x63, 0x61, 0x72, 0x6f, 0x6e, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x35, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x35, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x35, 0x44, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x35, 0x46, 0x06, 0x73, 0x61, +0x63, 0x75, 0x74, 0x65, 0x0b, 0x73, 0x63, 0x69, +0x72, 0x63, 0x75, 0x6d, 0x66, 0x6c, 0x65, 0x78, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x35, 0x46, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x31, 0x39, +0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x36, 0x31, +0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x36, 0x33, +0x06, 0x74, 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x31, 0x36, 0x33, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x32, 0x31, 0x42, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x36, 0x44, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x36, 0x46, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x39, 0x37, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x31, 0x36, 0x37, 0x06, +0x75, 0x74, 0x69, 0x6c, 0x64, 0x65, 0x07, 0x75, +0x6d, 0x61, 0x63, 0x72, 0x6f, 0x6e, 0x06, 0x75, +0x62, 0x72, 0x65, 0x76, 0x65, 0x05, 0x75, 0x72, +0x69, 0x6e, 0x67, 0x0d, 0x75, 0x68, 0x75, 0x6e, +0x67, 0x61, 0x72, 0x75, 0x6d, 0x6c, 0x61, 0x75, +0x74, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x44, +0x34, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x44, +0x36, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x44, +0x38, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x44, +0x41, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x44, +0x43, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x45, +0x35, 0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x45, +0x37, 0x07, 0x75, 0x6f, 0x67, 0x6f, 0x6e, 0x65, +0x6b, 0x05, 0x75, 0x68, 0x6f, 0x72, 0x6e, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x45, 0x39, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x45, 0x42, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x45, 0x44, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x45, 0x46, 0x07, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x46, 0x31, 0x06, +0x77, 0x67, 0x72, 0x61, 0x76, 0x65, 0x06, 0x77, +0x61, 0x63, 0x75, 0x74, 0x65, 0x0b, 0x77, 0x63, +0x69, 0x72, 0x63, 0x75, 0x6d, 0x66, 0x6c, 0x65, +0x78, 0x09, 0x77, 0x64, 0x69, 0x65, 0x72, 0x65, +0x73, 0x69, 0x73, 0x06, 0x79, 0x67, 0x72, 0x61, +0x76, 0x65, 0x0b, 0x79, 0x63, 0x69, 0x72, 0x63, +0x75, 0x6d, 0x66, 0x6c, 0x65, 0x78, 0x07, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x38, 0x46, 0x07, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x46, 0x35, 0x07, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x46, 0x37, 0x07, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x46, 0x39, 0x06, 0x7a, +0x61, 0x63, 0x75, 0x74, 0x65, 0x0a, 0x7a, 0x64, +0x6f, 0x74, 0x61, 0x63, 0x63, 0x65, 0x6e, 0x74, +0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x39, 0x33, +0x07, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x39, 0x35, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x34, 0x42, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x33, 0x37, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x33, 0x33, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x35, 0x30, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x35, 0x32, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x35, 0x33, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x35, 0x34, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x35, 0x35, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x35, 0x36, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x35, 0x37, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x35, 0x38, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x35, 0x31, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x39, 0x39, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x35, 0x39, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x35, 0x41, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x35, 0x42, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x35, 0x43, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x35, 0x45, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x35, 0x46, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x36, 0x30, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x36, 0x31, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x36, 0x32, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x36, 0x33, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x36, 0x34, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x36, 0x35, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x36, 0x36, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x36, 0x37, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x39, 0x43, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x36, 0x38, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x36, 0x41, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x39, 0x44, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x36, 0x43, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x36, 0x44, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x36, 0x45, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x39, 0x46, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x36, 0x46, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x37, 0x30, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x37, 0x31, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x37, 0x32, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x37, 0x33, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x37, 0x34, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x37, 0x35, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x37, 0x36, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x37, 0x38, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x37, 0x39, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x37, 0x41, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x37, 0x42, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x37, 0x44, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x37, 0x45, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x38, 0x30, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x38, 0x31, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x38, 0x32, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x38, 0x33, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x38, 0x34, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x38, 0x38, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x38, 0x39, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x38, 0x41, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x38, 0x42, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x38, 0x43, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x38, 0x44, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x38, 0x45, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x38, 0x46, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x39, 0x30, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x39, 0x31, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x39, 0x32, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x39, 0x34, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x39, 0x35, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x41, 0x31, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x41, 0x32, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x43, 0x32, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x39, 0x38, +0x03, 0x66, 0x5f, 0x66, 0x05, 0x66, 0x5f, 0x66, +0x5f, 0x69, 0x05, 0x66, 0x5f, 0x66, 0x5f, 0x6c, +0x03, 0x66, 0x5f, 0x74, 0x05, 0x66, 0x5f, 0x66, +0x5f, 0x74, 0x03, 0x49, 0x2e, 0x61, 0x08, 0x49, +0x67, 0x72, 0x61, 0x76, 0x65, 0x2e, 0x61, 0x08, +0x49, 0x61, 0x63, 0x75, 0x74, 0x65, 0x2e, 0x61, +0x0d, 0x49, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6d, +0x66, 0x6c, 0x65, 0x78, 0x2e, 0x61, 0x08, 0x49, +0x74, 0x69, 0x6c, 0x64, 0x65, 0x2e, 0x61, 0x0b, +0x49, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, +0x73, 0x2e, 0x61, 0x09, 0x49, 0x6d, 0x61, 0x63, +0x72, 0x6f, 0x6e, 0x2e, 0x61, 0x0c, 0x49, 0x64, +0x6f, 0x74, 0x61, 0x63, 0x63, 0x65, 0x6e, 0x74, +0x2e, 0x61, 0x09, 0x75, 0x6e, 0x69, 0x30, 0x31, +0x43, 0x46, 0x2e, 0x61, 0x09, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x43, 0x38, 0x2e, 0x61, 0x09, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x43, 0x41, 0x2e, 0x61, +0x09, 0x49, 0x6f, 0x67, 0x6f, 0x6e, 0x65, 0x6b, +0x2e, 0x61, 0x09, 0x75, 0x6e, 0x69, 0x30, 0x31, +0x32, 0x43, 0x2e, 0x61, 0x09, 0x75, 0x6e, 0x69, +0x30, 0x31, 0x34, 0x41, 0x2e, 0x61, 0x03, 0x61, +0x2e, 0x61, 0x08, 0x61, 0x67, 0x72, 0x61, 0x76, +0x65, 0x2e, 0x61, 0x08, 0x61, 0x61, 0x63, 0x75, +0x74, 0x65, 0x2e, 0x61, 0x0d, 0x61, 0x63, 0x69, +0x72, 0x63, 0x75, 0x6d, 0x66, 0x6c, 0x65, 0x78, +0x2e, 0x61, 0x08, 0x61, 0x74, 0x69, 0x6c, 0x64, +0x65, 0x2e, 0x61, 0x0b, 0x61, 0x64, 0x69, 0x65, +0x72, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x61, 0x09, +0x61, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x6e, 0x2e, +0x61, 0x08, 0x61, 0x62, 0x72, 0x65, 0x76, 0x65, +0x2e, 0x61, 0x07, 0x61, 0x72, 0x69, 0x6e, 0x67, +0x2e, 0x61, 0x09, 0x75, 0x6e, 0x69, 0x30, 0x31, +0x43, 0x45, 0x2e, 0x61, 0x09, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x41, 0x31, 0x2e, 0x61, 0x09, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x41, 0x33, 0x2e, 0x61, +0x09, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x41, 0x35, +0x2e, 0x61, 0x09, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x41, 0x37, 0x2e, 0x61, 0x09, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x41, 0x39, 0x2e, 0x61, 0x09, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x41, 0x42, 0x2e, 0x61, +0x09, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x41, 0x44, +0x2e, 0x61, 0x09, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x41, 0x46, 0x2e, 0x61, 0x09, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x42, 0x31, 0x2e, 0x61, 0x09, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x42, 0x33, 0x2e, 0x61, +0x09, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x42, 0x35, +0x2e, 0x61, 0x09, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x42, 0x37, 0x2e, 0x61, 0x09, 0x61, 0x6f, 0x67, +0x6f, 0x6e, 0x65, 0x6b, 0x2e, 0x61, 0x03, 0x67, +0x2e, 0x61, 0x09, 0x75, 0x6e, 0x69, 0x30, 0x31, +0x46, 0x35, 0x2e, 0x61, 0x0d, 0x67, 0x63, 0x69, +0x72, 0x63, 0x75, 0x6d, 0x66, 0x6c, 0x65, 0x78, +0x2e, 0x61, 0x08, 0x67, 0x62, 0x72, 0x65, 0x76, +0x65, 0x2e, 0x61, 0x0c, 0x67, 0x64, 0x6f, 0x74, +0x61, 0x63, 0x63, 0x65, 0x6e, 0x74, 0x2e, 0x61, +0x09, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x32, 0x33, +0x2e, 0x61, 0x08, 0x67, 0x63, 0x61, 0x72, 0x6f, +0x6e, 0x2e, 0x61, 0x09, 0x75, 0x6e, 0x69, 0x31, +0x45, 0x32, 0x31, 0x2e, 0x61, 0x0d, 0x75, 0x6e, +0x69, 0x30, 0x30, 0x36, 0x37, 0x30, 0x33, 0x30, +0x33, 0x2e, 0x61, 0x03, 0x6c, 0x2e, 0x61, 0x08, +0x6c, 0x61, 0x63, 0x75, 0x74, 0x65, 0x2e, 0x61, +0x08, 0x6c, 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x2e, +0x61, 0x06, 0x6c, 0x64, 0x6f, 0x74, 0x2e, 0x61, +0x09, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x33, 0x43, +0x2e, 0x61, 0x09, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x33, 0x37, 0x2e, 0x61, 0x09, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x33, 0x39, 0x2e, 0x61, 0x09, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x33, 0x42, 0x2e, 0x61, +0x08, 0x6c, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, +0x61, 0x04, 0x66, 0x6c, 0x2e, 0x61, 0x05, 0x41, +0x6c, 0x70, 0x68, 0x61, 0x04, 0x42, 0x65, 0x74, +0x61, 0x05, 0x47, 0x61, 0x6d, 0x6d, 0x61, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x33, 0x39, 0x34, 0x07, +0x45, 0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e, 0x04, +0x5a, 0x65, 0x74, 0x61, 0x03, 0x45, 0x74, 0x61, +0x05, 0x54, 0x68, 0x65, 0x74, 0x61, 0x04, 0x49, +0x6f, 0x74, 0x61, 0x05, 0x4b, 0x61, 0x70, 0x70, +0x61, 0x06, 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61, +0x02, 0x4d, 0x75, 0x02, 0x4e, 0x75, 0x02, 0x58, +0x69, 0x07, 0x4f, 0x6d, 0x69, 0x63, 0x72, 0x6f, +0x6e, 0x02, 0x50, 0x69, 0x03, 0x52, 0x68, 0x6f, +0x05, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x03, 0x54, +0x61, 0x75, 0x07, 0x55, 0x70, 0x73, 0x69, 0x6c, +0x6f, 0x6e, 0x03, 0x50, 0x68, 0x69, 0x03, 0x43, +0x68, 0x69, 0x03, 0x50, 0x73, 0x69, 0x07, 0x75, +0x6e, 0x69, 0x30, 0x33, 0x41, 0x39, 0x0a, 0x41, +0x6c, 0x70, 0x68, 0x61, 0x74, 0x6f, 0x6e, 0x6f, +0x73, 0x0c, 0x45, 0x70, 0x73, 0x69, 0x6c, 0x6f, +0x6e, 0x74, 0x6f, 0x6e, 0x6f, 0x73, 0x08, 0x45, +0x74, 0x61, 0x74, 0x6f, 0x6e, 0x6f, 0x73, 0x09, +0x49, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x6e, 0x6f, +0x73, 0x0c, 0x49, 0x6f, 0x74, 0x61, 0x64, 0x69, +0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x0c, 0x4f, +0x6d, 0x69, 0x63, 0x72, 0x6f, 0x6e, 0x74, 0x6f, +0x6e, 0x6f, 0x73, 0x0c, 0x55, 0x70, 0x73, 0x69, +0x6c, 0x6f, 0x6e, 0x74, 0x6f, 0x6e, 0x6f, 0x73, +0x0f, 0x55, 0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e, +0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, +0x0a, 0x4f, 0x6d, 0x65, 0x67, 0x61, 0x74, 0x6f, +0x6e, 0x6f, 0x73, 0x05, 0x61, 0x6c, 0x70, 0x68, +0x61, 0x04, 0x62, 0x65, 0x74, 0x61, 0x05, 0x67, +0x61, 0x6d, 0x6d, 0x61, 0x05, 0x64, 0x65, 0x6c, +0x74, 0x61, 0x07, 0x65, 0x70, 0x73, 0x69, 0x6c, +0x6f, 0x6e, 0x04, 0x7a, 0x65, 0x74, 0x61, 0x03, +0x65, 0x74, 0x61, 0x05, 0x74, 0x68, 0x65, 0x74, +0x61, 0x04, 0x69, 0x6f, 0x74, 0x61, 0x05, 0x6b, +0x61, 0x70, 0x70, 0x61, 0x06, 0x6c, 0x61, 0x6d, +0x62, 0x64, 0x61, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x33, 0x42, 0x43, 0x02, 0x6e, 0x75, 0x02, 0x78, +0x69, 0x07, 0x6f, 0x6d, 0x69, 0x63, 0x72, 0x6f, +0x6e, 0x03, 0x72, 0x68, 0x6f, 0x05, 0x73, 0x69, +0x67, 0x6d, 0x61, 0x03, 0x74, 0x61, 0x75, 0x07, +0x75, 0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e, 0x03, +0x70, 0x68, 0x69, 0x03, 0x63, 0x68, 0x69, 0x03, +0x70, 0x73, 0x69, 0x05, 0x6f, 0x6d, 0x65, 0x67, +0x61, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x43, +0x32, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x44, +0x30, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x44, +0x31, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x44, +0x35, 0x0a, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x74, +0x6f, 0x6e, 0x6f, 0x73, 0x0c, 0x65, 0x70, 0x73, +0x69, 0x6c, 0x6f, 0x6e, 0x74, 0x6f, 0x6e, 0x6f, +0x73, 0x08, 0x65, 0x74, 0x61, 0x74, 0x6f, 0x6e, +0x6f, 0x73, 0x09, 0x69, 0x6f, 0x74, 0x61, 0x74, +0x6f, 0x6e, 0x6f, 0x73, 0x0c, 0x69, 0x6f, 0x74, +0x61, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, +0x73, 0x0c, 0x6f, 0x6d, 0x69, 0x63, 0x72, 0x6f, +0x6e, 0x74, 0x6f, 0x6e, 0x6f, 0x73, 0x0c, 0x75, +0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e, 0x74, 0x6f, +0x6e, 0x6f, 0x73, 0x0f, 0x75, 0x70, 0x73, 0x69, +0x6c, 0x6f, 0x6e, 0x64, 0x69, 0x65, 0x72, 0x65, +0x73, 0x69, 0x73, 0x0a, 0x6f, 0x6d, 0x65, 0x67, +0x61, 0x74, 0x6f, 0x6e, 0x6f, 0x73, 0x11, 0x69, +0x6f, 0x74, 0x61, 0x64, 0x69, 0x65, 0x72, 0x65, +0x73, 0x69, 0x73, 0x74, 0x6f, 0x6e, 0x6f, 0x73, +0x14, 0x75, 0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e, +0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, +0x74, 0x6f, 0x6e, 0x6f, 0x73, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x30, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x30, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x42, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x42, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x30, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x30, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x30, 0x43, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x30, 0x44, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x30, 0x45, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x30, 0x46, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x42, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x42, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x31, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x31, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x43, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x43, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x31, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x31, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x31, 0x43, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x31, 0x44, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x32, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x32, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x43, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x43, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x32, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x32, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x32, 0x43, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x32, 0x44, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x32, 0x45, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x32, 0x46, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x33, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x33, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x44, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x44, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x33, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x33, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x33, 0x43, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x33, 0x44, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x33, 0x45, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x33, 0x46, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x44, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x44, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x34, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x34, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x46, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x46, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x34, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x34, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x34, 0x43, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x34, 0x44, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x45, 0x43, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x35, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x45, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x45, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x35, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x35, 0x44, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x35, 0x46, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x45, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x45, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x36, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x36, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x46, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x46, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x36, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x36, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x36, 0x43, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x36, 0x44, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x36, 0x45, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x36, 0x46, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x42, 0x43, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x38, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x38, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x38, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x38, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x38, 0x43, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x38, 0x44, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x38, 0x45, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x38, 0x46, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x43, 0x43, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x39, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x39, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x39, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x39, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x39, 0x43, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x39, 0x44, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x39, 0x45, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x39, 0x46, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x46, 0x43, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x41, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x41, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x41, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x41, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x41, 0x43, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x41, 0x44, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x41, 0x45, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x41, 0x46, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x30, 0x30, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x30, 0x31, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x37, 0x30, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x37, 0x31, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x30, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x30, 0x33, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x30, 0x34, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x30, 0x35, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x30, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x30, 0x37, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x42, 0x30, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x42, 0x31, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x42, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x31, 0x30, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x31, 0x31, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x37, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x37, 0x33, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x31, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x31, 0x33, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x31, 0x34, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x31, 0x35, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x32, 0x30, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x32, 0x31, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x37, 0x34, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x37, 0x35, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x32, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x32, 0x33, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x32, 0x34, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x32, 0x35, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x32, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x32, 0x37, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x43, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x33, 0x30, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x33, 0x31, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x37, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x37, 0x37, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x33, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x33, 0x33, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x33, 0x34, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x33, 0x35, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x33, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x33, 0x37, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x44, 0x30, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x44, 0x31, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x44, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x44, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x44, 0x33, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x44, 0x37, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x34, 0x30, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x34, 0x31, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x37, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x37, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x34, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x34, 0x33, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x34, 0x34, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x34, 0x35, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x45, 0x34, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x45, 0x35, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x35, 0x30, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x35, 0x31, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x37, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x37, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x35, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x35, 0x33, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x35, 0x34, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x35, 0x35, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x35, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x35, 0x37, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x45, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x45, 0x30, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x45, 0x31, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x45, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x45, 0x33, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x45, 0x37, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x36, 0x30, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x36, 0x31, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x37, 0x43, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x37, 0x44, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x36, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x36, 0x33, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x36, 0x34, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x36, 0x35, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x36, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x36, 0x37, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x46, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x42, 0x33, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x38, 0x30, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x38, 0x31, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x42, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x42, 0x34, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x38, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x38, 0x33, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x38, 0x34, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x38, 0x35, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x38, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x38, 0x37, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x42, 0x37, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x43, 0x33, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x39, 0x30, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x39, 0x31, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x43, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x43, 0x34, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x39, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x39, 0x33, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x39, 0x34, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x39, 0x35, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x39, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x39, 0x37, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x43, 0x37, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x46, 0x33, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x41, 0x30, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x41, 0x31, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x46, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x46, 0x34, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x41, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x41, 0x33, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x41, 0x34, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x41, 0x35, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x41, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x41, 0x37, 0x07, 0x75, 0x6e, +0x69, 0x31, 0x46, 0x46, 0x37, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x33, 0x44, 0x37, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x33, 0x44, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x33, 0x44, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x33, 0x44, 0x44, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x33, 0x45, 0x31, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x33, 0x37, 0x45, 0x09, 0x61, 0x6e, +0x6f, 0x74, 0x65, 0x6c, 0x65, 0x69, 0x61, 0x0d, +0x61, 0x6e, 0x6f, 0x74, 0x65, 0x6c, 0x65, 0x69, +0x61, 0x2e, 0x63, 0x61, 0x70, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x33, 0x37, 0x34, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x33, 0x37, 0x35, 0x05, 0x74, 0x6f, +0x6e, 0x6f, 0x73, 0x09, 0x74, 0x6f, 0x6e, 0x6f, +0x73, 0x2e, 0x63, 0x61, 0x70, 0x0d, 0x64, 0x69, +0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x74, 0x6f, +0x6e, 0x6f, 0x73, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x33, 0x37, 0x41, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x42, 0x45, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x42, 0x44, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x42, 0x46, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x46, 0x45, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x45, 0x46, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x46, 0x44, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x43, 0x44, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x44, 0x44, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x43, 0x45, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x44, 0x45, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x43, 0x46, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x44, 0x46, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x43, 0x30, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x45, 0x44, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x45, 0x45, 0x07, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x43, 0x31, 0x0b, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x42, 0x44, 0x2e, 0x63, 0x61, 0x70, 0x0b, +0x75, 0x6e, 0x69, 0x31, 0x46, 0x46, 0x45, 0x2e, +0x63, 0x61, 0x70, 0x0b, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x45, 0x46, 0x2e, 0x63, 0x61, 0x70, 0x0b, +0x75, 0x6e, 0x69, 0x31, 0x46, 0x46, 0x44, 0x2e, +0x63, 0x61, 0x70, 0x0b, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x43, 0x44, 0x2e, 0x63, 0x61, 0x70, 0x0b, +0x75, 0x6e, 0x69, 0x31, 0x46, 0x44, 0x44, 0x2e, +0x63, 0x61, 0x70, 0x0b, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x43, 0x45, 0x2e, 0x63, 0x61, 0x70, 0x0b, +0x75, 0x6e, 0x69, 0x31, 0x46, 0x44, 0x45, 0x2e, +0x63, 0x61, 0x70, 0x0b, 0x75, 0x6e, 0x69, 0x31, +0x46, 0x43, 0x46, 0x2e, 0x63, 0x61, 0x70, 0x0b, +0x75, 0x6e, 0x69, 0x31, 0x46, 0x44, 0x46, 0x2e, +0x63, 0x61, 0x70, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x31, 0x30, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x31, 0x31, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x31, 0x32, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x31, 0x33, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x31, 0x34, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x31, 0x35, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x31, 0x36, 0x09, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x31, 0x36, 0x2e, 0x61, 0x09, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x31, 0x36, 0x2e, 0x62, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x31, 0x37, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x31, 0x38, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x31, 0x39, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x31, 0x41, 0x09, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x31, 0x41, 0x2e, +0x61, 0x09, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x31, +0x41, 0x2e, 0x62, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x31, 0x42, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x31, 0x43, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x31, 0x44, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x31, 0x45, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x31, 0x46, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x32, 0x30, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x32, 0x31, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x32, 0x32, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x32, 0x33, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x32, 0x34, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x32, 0x35, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x32, 0x36, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x32, 0x37, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x32, 0x38, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x32, 0x39, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x32, 0x41, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x32, 0x42, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x32, 0x43, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x32, 0x44, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x32, 0x45, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x32, 0x46, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x30, 0x30, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x30, 0x31, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x30, 0x32, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x30, 0x33, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x30, 0x34, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x30, 0x35, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x30, 0x36, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x30, 0x37, 0x09, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x30, 0x37, 0x2e, 0x61, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x30, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x30, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x30, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x30, 0x42, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x30, 0x43, 0x09, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x30, 0x43, 0x2e, 0x61, 0x09, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x30, 0x43, 0x2e, +0x62, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x30, +0x44, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x30, +0x45, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x30, +0x46, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x36, +0x32, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x37, +0x32, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x37, +0x34, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x39, +0x30, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x39, +0x32, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x39, +0x36, 0x09, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x39, +0x36, 0x2e, 0x61, 0x09, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x39, 0x36, 0x2e, 0x62, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x39, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x39, 0x41, 0x09, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x39, 0x41, 0x2e, 0x61, 0x09, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x39, 0x41, 0x2e, +0x62, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x41, +0x30, 0x09, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x41, +0x30, 0x2e, 0x61, 0x09, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x41, 0x30, 0x2e, 0x62, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x41, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x41, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x41, 0x45, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x42, 0x30, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x42, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x42, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x42, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x43, 0x30, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x43, 0x31, 0x09, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x43, 0x31, 0x2e, 0x61, 0x09, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x43, 0x31, 0x2e, +0x62, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x44, +0x30, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x44, +0x34, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x44, +0x36, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x44, +0x38, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x45, +0x32, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x45, +0x36, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x45, +0x38, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x45, +0x45, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x46, +0x32, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x33, +0x30, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x33, +0x31, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x33, +0x32, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x33, +0x33, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x33, +0x34, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x33, +0x35, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x33, +0x36, 0x09, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x33, +0x36, 0x2e, 0x61, 0x09, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x33, 0x36, 0x2e, 0x62, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x33, 0x37, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x33, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x33, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x33, 0x41, 0x09, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x33, 0x41, 0x2e, 0x61, 0x09, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x33, 0x41, 0x2e, +0x62, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x33, +0x42, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x33, +0x43, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x33, +0x44, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x33, +0x45, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x33, +0x46, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x34, +0x30, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x34, +0x31, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x34, +0x32, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x34, +0x33, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x34, +0x34, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x34, +0x35, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x34, +0x36, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x34, +0x37, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x34, +0x38, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x34, +0x39, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x34, +0x41, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x34, +0x42, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x34, +0x43, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x34, +0x44, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x34, +0x45, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x34, +0x46, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x35, +0x30, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x35, +0x31, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x35, +0x32, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x35, +0x33, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x35, +0x34, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x35, +0x35, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x35, +0x36, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x35, +0x37, 0x09, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x35, +0x37, 0x2e, 0x61, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x35, 0x38, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x35, 0x39, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x35, 0x41, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x35, 0x42, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x35, 0x43, 0x09, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x35, 0x43, 0x2e, 0x61, 0x09, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x35, 0x43, 0x2e, 0x62, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x35, 0x44, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x35, 0x45, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x35, 0x46, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x36, 0x33, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x37, 0x33, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x37, 0x35, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x39, 0x31, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x39, 0x33, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x39, 0x37, 0x09, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x39, 0x37, 0x2e, +0x61, 0x09, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x39, +0x37, 0x2e, 0x62, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x39, 0x39, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x39, 0x42, 0x09, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x39, 0x42, 0x2e, 0x61, 0x09, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x39, 0x42, 0x2e, 0x62, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x41, 0x31, 0x09, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x41, 0x31, 0x2e, +0x61, 0x09, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x41, +0x31, 0x2e, 0x62, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x41, 0x33, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x41, 0x42, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x41, 0x46, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x42, 0x31, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x42, 0x33, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x42, 0x37, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x42, 0x42, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x43, 0x32, 0x09, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x43, 0x32, 0x2e, 0x61, 0x09, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x43, 0x32, 0x2e, 0x62, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x43, 0x46, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x44, 0x31, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x44, 0x35, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x44, 0x37, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x44, 0x39, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x45, 0x33, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x45, 0x37, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x45, 0x39, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x45, 0x46, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x46, 0x33, 0x0b, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x33, 0x31, 0x2e, +0x73, 0x72, 0x62, 0x07, 0x75, 0x6e, 0x69, 0x32, +0x31, 0x31, 0x36, 0x06, 0x7a, 0x65, 0x72, 0x6f, +0x2e, 0x30, 0x07, 0x7a, 0x65, 0x72, 0x6f, 0x2e, +0x30, 0x73, 0x09, 0x7a, 0x65, 0x72, 0x6f, 0x2e, +0x70, 0x6e, 0x75, 0x6d, 0x08, 0x6f, 0x6e, 0x65, +0x2e, 0x70, 0x6e, 0x75, 0x6d, 0x08, 0x74, 0x77, +0x6f, 0x2e, 0x70, 0x6e, 0x75, 0x6d, 0x0a, 0x74, +0x68, 0x72, 0x65, 0x65, 0x2e, 0x70, 0x6e, 0x75, +0x6d, 0x09, 0x66, 0x6f, 0x75, 0x72, 0x2e, 0x70, +0x6e, 0x75, 0x6d, 0x09, 0x66, 0x69, 0x76, 0x65, +0x2e, 0x70, 0x6e, 0x75, 0x6d, 0x08, 0x73, 0x69, +0x78, 0x2e, 0x70, 0x6e, 0x75, 0x6d, 0x0a, 0x73, +0x65, 0x76, 0x65, 0x6e, 0x2e, 0x70, 0x6e, 0x75, +0x6d, 0x0a, 0x65, 0x69, 0x67, 0x68, 0x74, 0x2e, +0x70, 0x6e, 0x75, 0x6d, 0x09, 0x6e, 0x69, 0x6e, +0x65, 0x2e, 0x70, 0x6e, 0x75, 0x6d, 0x07, 0x7a, +0x65, 0x72, 0x6f, 0x2e, 0x30, 0x70, 0x08, 0x7a, +0x65, 0x72, 0x6f, 0x2e, 0x30, 0x70, 0x73, 0x09, +0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x74, 0x6e, 0x75, +0x6d, 0x08, 0x6f, 0x6e, 0x65, 0x2e, 0x74, 0x6e, +0x75, 0x6d, 0x08, 0x74, 0x77, 0x6f, 0x2e, 0x74, +0x6e, 0x75, 0x6d, 0x0a, 0x74, 0x68, 0x72, 0x65, +0x65, 0x2e, 0x74, 0x6e, 0x75, 0x6d, 0x09, 0x66, +0x6f, 0x75, 0x72, 0x2e, 0x74, 0x6e, 0x75, 0x6d, +0x09, 0x66, 0x69, 0x76, 0x65, 0x2e, 0x74, 0x6e, +0x75, 0x6d, 0x08, 0x73, 0x69, 0x78, 0x2e, 0x74, +0x6e, 0x75, 0x6d, 0x0a, 0x73, 0x65, 0x76, 0x65, +0x6e, 0x2e, 0x74, 0x6e, 0x75, 0x6d, 0x0a, 0x65, +0x69, 0x67, 0x68, 0x74, 0x2e, 0x74, 0x6e, 0x75, +0x6d, 0x09, 0x6e, 0x69, 0x6e, 0x65, 0x2e, 0x74, +0x6e, 0x75, 0x6d, 0x09, 0x7a, 0x65, 0x72, 0x6f, +0x2e, 0x6f, 0x6e, 0x75, 0x6d, 0x08, 0x6f, 0x6e, +0x65, 0x2e, 0x6f, 0x6e, 0x75, 0x6d, 0x08, 0x74, +0x77, 0x6f, 0x2e, 0x6f, 0x6e, 0x75, 0x6d, 0x0a, +0x74, 0x68, 0x72, 0x65, 0x65, 0x2e, 0x6f, 0x6e, +0x75, 0x6d, 0x09, 0x66, 0x6f, 0x75, 0x72, 0x2e, +0x6f, 0x6e, 0x75, 0x6d, 0x09, 0x66, 0x69, 0x76, +0x65, 0x2e, 0x6f, 0x6e, 0x75, 0x6d, 0x08, 0x73, +0x69, 0x78, 0x2e, 0x6f, 0x6e, 0x75, 0x6d, 0x0a, +0x73, 0x65, 0x76, 0x65, 0x6e, 0x2e, 0x6f, 0x6e, +0x75, 0x6d, 0x0a, 0x65, 0x69, 0x67, 0x68, 0x74, +0x2e, 0x6f, 0x6e, 0x75, 0x6d, 0x09, 0x6e, 0x69, +0x6e, 0x65, 0x2e, 0x6f, 0x6e, 0x75, 0x6d, 0x08, +0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x63, 0x61, 0x70, +0x07, 0x6f, 0x6e, 0x65, 0x2e, 0x63, 0x61, 0x70, +0x07, 0x74, 0x77, 0x6f, 0x2e, 0x63, 0x61, 0x70, +0x09, 0x74, 0x68, 0x72, 0x65, 0x65, 0x2e, 0x63, +0x61, 0x70, 0x08, 0x66, 0x6f, 0x75, 0x72, 0x2e, +0x63, 0x61, 0x70, 0x08, 0x66, 0x69, 0x76, 0x65, +0x2e, 0x63, 0x61, 0x70, 0x07, 0x73, 0x69, 0x78, +0x2e, 0x63, 0x61, 0x70, 0x09, 0x73, 0x65, 0x76, +0x65, 0x6e, 0x2e, 0x63, 0x61, 0x70, 0x09, 0x65, +0x69, 0x67, 0x68, 0x74, 0x2e, 0x63, 0x61, 0x70, +0x08, 0x6e, 0x69, 0x6e, 0x65, 0x2e, 0x63, 0x61, +0x70, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x30, 0x41, +0x44, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x45, 0x33, +0x41, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x45, 0x33, +0x42, 0x0a, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, +0x64, 0x61, 0x73, 0x68, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x30, 0x31, 0x35, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x30, 0x33, 0x45, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x30, 0x33, 0x46, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x30, 0x31, 0x36, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x30, 0x33, 0x43, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x30, 0x34, 0x37, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x30, 0x34, 0x39, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x30, 0x34, 0x38, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x30, 0x33, 0x44, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x33, 0x31, 0x43, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x33, 0x31, 0x44, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x33, 0x31, 0x45, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x33, 0x31, 0x46, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x37, 0x45, 0x36, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x37, 0x45, 0x37, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x45, 0x32, 0x32, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x45, 0x32, 0x33, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x45, 0x32, 0x34, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x45, 0x32, 0x35, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x31, 0x31, 0x37, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x31, 0x32, 0x30, 0x06, 0x75, 0x31, 0x46, +0x31, 0x36, 0x41, 0x06, 0x75, 0x31, 0x46, 0x31, +0x36, 0x42, 0x07, 0x61, 0x74, 0x2e, 0x63, 0x61, +0x73, 0x65, 0x05, 0x69, 0x2e, 0x74, 0x72, 0x6b, +0x04, 0x41, 0x2e, 0x73, 0x63, 0x04, 0x42, 0x2e, +0x73, 0x63, 0x04, 0x43, 0x2e, 0x73, 0x63, 0x04, +0x44, 0x2e, 0x73, 0x63, 0x04, 0x45, 0x2e, 0x73, +0x63, 0x04, 0x46, 0x2e, 0x73, 0x63, 0x04, 0x47, +0x2e, 0x73, 0x63, 0x04, 0x48, 0x2e, 0x73, 0x63, +0x04, 0x49, 0x2e, 0x73, 0x63, 0x04, 0x4a, 0x2e, +0x73, 0x63, 0x04, 0x4b, 0x2e, 0x73, 0x63, 0x04, +0x4c, 0x2e, 0x73, 0x63, 0x04, 0x4d, 0x2e, 0x73, +0x63, 0x04, 0x4e, 0x2e, 0x73, 0x63, 0x04, 0x4f, +0x2e, 0x73, 0x63, 0x04, 0x50, 0x2e, 0x73, 0x63, +0x04, 0x51, 0x2e, 0x73, 0x63, 0x04, 0x52, 0x2e, +0x73, 0x63, 0x04, 0x53, 0x2e, 0x73, 0x63, 0x04, +0x54, 0x2e, 0x73, 0x63, 0x04, 0x55, 0x2e, 0x73, +0x63, 0x04, 0x56, 0x2e, 0x73, 0x63, 0x04, 0x57, +0x2e, 0x73, 0x63, 0x04, 0x58, 0x2e, 0x73, 0x63, +0x04, 0x59, 0x2e, 0x73, 0x63, 0x04, 0x5a, 0x2e, +0x73, 0x63, 0x09, 0x41, 0x67, 0x72, 0x61, 0x76, +0x65, 0x2e, 0x73, 0x63, 0x09, 0x41, 0x61, 0x63, +0x75, 0x74, 0x65, 0x2e, 0x73, 0x63, 0x0e, 0x41, +0x63, 0x69, 0x72, 0x63, 0x75, 0x6d, 0x66, 0x6c, +0x65, 0x78, 0x2e, 0x73, 0x63, 0x09, 0x41, 0x74, +0x69, 0x6c, 0x64, 0x65, 0x2e, 0x73, 0x63, 0x0c, +0x41, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, +0x73, 0x2e, 0x73, 0x63, 0x0a, 0x41, 0x6d, 0x61, +0x63, 0x72, 0x6f, 0x6e, 0x2e, 0x73, 0x63, 0x09, +0x41, 0x62, 0x72, 0x65, 0x76, 0x65, 0x2e, 0x73, +0x63, 0x08, 0x41, 0x72, 0x69, 0x6e, 0x67, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x31, +0x43, 0x44, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x41, 0x30, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x41, 0x32, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, +0x45, 0x41, 0x34, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x41, 0x36, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x41, +0x38, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x41, 0x41, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x41, 0x43, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x41, 0x45, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x42, 0x30, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x42, 0x32, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, +0x45, 0x42, 0x34, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x42, 0x36, 0x2e, 0x73, +0x63, 0x0a, 0x41, 0x6f, 0x67, 0x6f, 0x6e, 0x65, +0x6b, 0x2e, 0x73, 0x63, 0x05, 0x41, 0x45, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x31, +0x46, 0x43, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x30, 0x31, 0x45, 0x32, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x34, 0x33, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, +0x45, 0x30, 0x36, 0x2e, 0x73, 0x63, 0x0b, 0x43, +0x63, 0x65, 0x64, 0x69, 0x6c, 0x6c, 0x61, 0x2e, +0x73, 0x63, 0x09, 0x43, 0x61, 0x63, 0x75, 0x74, +0x65, 0x2e, 0x73, 0x63, 0x0e, 0x43, 0x63, 0x69, +0x72, 0x63, 0x75, 0x6d, 0x66, 0x6c, 0x65, 0x78, +0x2e, 0x73, 0x63, 0x09, 0x43, 0x63, 0x61, 0x72, +0x6f, 0x6e, 0x2e, 0x73, 0x63, 0x0d, 0x43, 0x64, +0x6f, 0x74, 0x61, 0x63, 0x63, 0x65, 0x6e, 0x74, +0x2e, 0x73, 0x63, 0x09, 0x44, 0x63, 0x61, 0x72, +0x6f, 0x6e, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x30, 0x43, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x30, 0x45, +0x2e, 0x73, 0x63, 0x09, 0x44, 0x63, 0x72, 0x6f, +0x61, 0x74, 0x2e, 0x73, 0x63, 0x09, 0x45, 0x67, +0x72, 0x61, 0x76, 0x65, 0x2e, 0x73, 0x63, 0x09, +0x45, 0x61, 0x63, 0x75, 0x74, 0x65, 0x2e, 0x73, +0x63, 0x0e, 0x45, 0x63, 0x69, 0x72, 0x63, 0x75, +0x6d, 0x66, 0x6c, 0x65, 0x78, 0x2e, 0x73, 0x63, +0x09, 0x45, 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x2e, +0x73, 0x63, 0x0c, 0x45, 0x64, 0x69, 0x65, 0x72, +0x65, 0x73, 0x69, 0x73, 0x2e, 0x73, 0x63, 0x0a, +0x45, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x6e, 0x2e, +0x73, 0x63, 0x09, 0x45, 0x62, 0x72, 0x65, 0x76, +0x65, 0x2e, 0x73, 0x63, 0x0d, 0x45, 0x64, 0x6f, +0x74, 0x61, 0x63, 0x63, 0x65, 0x6e, 0x74, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x42, 0x38, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x42, 0x41, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x42, 0x43, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, +0x45, 0x42, 0x45, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x43, 0x30, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x43, +0x32, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x43, 0x34, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x43, 0x36, 0x2e, +0x73, 0x63, 0x0a, 0x45, 0x6f, 0x67, 0x6f, 0x6e, +0x65, 0x6b, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x31, 0x36, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x46, 0x34, +0x2e, 0x73, 0x63, 0x0e, 0x47, 0x63, 0x69, 0x72, +0x63, 0x75, 0x6d, 0x66, 0x6c, 0x65, 0x78, 0x2e, +0x73, 0x63, 0x09, 0x47, 0x62, 0x72, 0x65, 0x76, +0x65, 0x2e, 0x73, 0x63, 0x0d, 0x47, 0x64, 0x6f, +0x74, 0x61, 0x63, 0x63, 0x65, 0x6e, 0x74, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x31, +0x32, 0x32, 0x2e, 0x73, 0x63, 0x09, 0x47, 0x63, +0x61, 0x72, 0x6f, 0x6e, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x32, 0x30, 0x2e, +0x73, 0x63, 0x0e, 0x75, 0x6e, 0x69, 0x30, 0x30, +0x34, 0x37, 0x30, 0x33, 0x30, 0x33, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x39, +0x33, 0x2e, 0x73, 0x63, 0x0e, 0x48, 0x63, 0x69, +0x72, 0x63, 0x75, 0x6d, 0x66, 0x6c, 0x65, 0x78, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, +0x45, 0x32, 0x34, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x32, 0x41, 0x2e, 0x73, +0x63, 0x07, 0x48, 0x62, 0x61, 0x72, 0x2e, 0x73, +0x63, 0x09, 0x49, 0x67, 0x72, 0x61, 0x76, 0x65, +0x2e, 0x73, 0x63, 0x09, 0x49, 0x61, 0x63, 0x75, +0x74, 0x65, 0x2e, 0x73, 0x63, 0x0e, 0x49, 0x63, +0x69, 0x72, 0x63, 0x75, 0x6d, 0x66, 0x6c, 0x65, +0x78, 0x2e, 0x73, 0x63, 0x09, 0x49, 0x74, 0x69, +0x6c, 0x64, 0x65, 0x2e, 0x73, 0x63, 0x0c, 0x49, +0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, +0x2e, 0x73, 0x63, 0x0a, 0x49, 0x6d, 0x61, 0x63, +0x72, 0x6f, 0x6e, 0x2e, 0x73, 0x63, 0x0d, 0x49, +0x64, 0x6f, 0x74, 0x61, 0x63, 0x63, 0x65, 0x6e, +0x74, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, +0x30, 0x31, 0x43, 0x46, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x43, 0x38, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x43, 0x41, 0x2e, 0x73, 0x63, 0x0a, 0x49, 0x6f, +0x67, 0x6f, 0x6e, 0x65, 0x6b, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x32, 0x43, +0x2e, 0x73, 0x63, 0x0e, 0x4a, 0x63, 0x69, 0x72, +0x63, 0x75, 0x6d, 0x66, 0x6c, 0x65, 0x78, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x31, +0x33, 0x36, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x33, 0x32, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x33, 0x34, +0x2e, 0x73, 0x63, 0x09, 0x4c, 0x61, 0x63, 0x75, +0x74, 0x65, 0x2e, 0x73, 0x63, 0x09, 0x4c, 0x63, +0x61, 0x72, 0x6f, 0x6e, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x30, 0x31, 0x33, 0x42, 0x2e, +0x73, 0x63, 0x07, 0x4c, 0x64, 0x6f, 0x74, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x33, 0x36, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x33, 0x38, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x33, 0x41, +0x2e, 0x73, 0x63, 0x09, 0x4c, 0x73, 0x6c, 0x61, +0x73, 0x68, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x33, 0x45, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x34, 0x30, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, +0x45, 0x34, 0x32, 0x2e, 0x73, 0x63, 0x09, 0x4e, +0x61, 0x63, 0x75, 0x74, 0x65, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x46, 0x38, +0x2e, 0x73, 0x63, 0x09, 0x4e, 0x63, 0x61, 0x72, +0x6f, 0x6e, 0x2e, 0x73, 0x63, 0x09, 0x4e, 0x74, +0x69, 0x6c, 0x64, 0x65, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x30, 0x31, 0x34, 0x35, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x34, 0x34, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x34, 0x36, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x34, 0x38, +0x2e, 0x73, 0x63, 0x09, 0x4f, 0x67, 0x72, 0x61, +0x76, 0x65, 0x2e, 0x73, 0x63, 0x09, 0x4f, 0x61, +0x63, 0x75, 0x74, 0x65, 0x2e, 0x73, 0x63, 0x0e, +0x4f, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6d, 0x66, +0x6c, 0x65, 0x78, 0x2e, 0x73, 0x63, 0x09, 0x4f, +0x74, 0x69, 0x6c, 0x64, 0x65, 0x2e, 0x73, 0x63, +0x0c, 0x4f, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, +0x69, 0x73, 0x2e, 0x73, 0x63, 0x0a, 0x4f, 0x6d, +0x61, 0x63, 0x72, 0x6f, 0x6e, 0x2e, 0x73, 0x63, +0x10, 0x4f, 0x68, 0x75, 0x6e, 0x67, 0x61, 0x72, +0x75, 0x6d, 0x6c, 0x61, 0x75, 0x74, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x44, +0x31, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x43, 0x43, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x43, 0x45, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x44, 0x30, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x44, 0x32, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x44, 0x34, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, +0x45, 0x44, 0x36, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x44, 0x38, 0x2e, 0x73, +0x63, 0x09, 0x4f, 0x73, 0x6c, 0x61, 0x73, 0x68, +0x2e, 0x73, 0x63, 0x05, 0x4f, 0x45, 0x2e, 0x73, +0x63, 0x08, 0x4f, 0x68, 0x6f, 0x72, 0x6e, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x44, 0x41, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x44, 0x43, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x44, 0x45, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, +0x45, 0x45, 0x30, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x45, 0x32, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x45, +0x41, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, +0x30, 0x31, 0x34, 0x45, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x35, 0x32, 0x2e, +0x73, 0x63, 0x09, 0x52, 0x61, 0x63, 0x75, 0x74, +0x65, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x35, 0x38, 0x2e, 0x73, 0x63, 0x09, +0x52, 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x35, +0x36, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x35, 0x41, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x35, 0x43, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x35, 0x45, 0x2e, 0x73, 0x63, 0x09, 0x53, 0x61, +0x63, 0x75, 0x74, 0x65, 0x2e, 0x73, 0x63, 0x0e, +0x53, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6d, 0x66, +0x6c, 0x65, 0x78, 0x2e, 0x73, 0x63, 0x09, 0x53, +0x63, 0x61, 0x72, 0x6f, 0x6e, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x35, 0x45, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, +0x32, 0x31, 0x38, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x36, 0x30, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x36, +0x32, 0x2e, 0x73, 0x63, 0x0d, 0x67, 0x65, 0x72, +0x6d, 0x61, 0x6e, 0x64, 0x62, 0x6c, 0x73, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x39, 0x45, 0x2e, 0x73, 0x63, 0x09, 0x54, 0x63, +0x61, 0x72, 0x6f, 0x6e, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x30, 0x31, 0x36, 0x32, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x32, +0x31, 0x41, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x36, 0x43, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x36, 0x45, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, +0x31, 0x36, 0x36, 0x2e, 0x73, 0x63, 0x09, 0x55, +0x67, 0x72, 0x61, 0x76, 0x65, 0x2e, 0x73, 0x63, +0x09, 0x55, 0x61, 0x63, 0x75, 0x74, 0x65, 0x2e, +0x73, 0x63, 0x0e, 0x55, 0x63, 0x69, 0x72, 0x63, +0x75, 0x6d, 0x66, 0x6c, 0x65, 0x78, 0x2e, 0x73, +0x63, 0x09, 0x55, 0x74, 0x69, 0x6c, 0x64, 0x65, +0x2e, 0x73, 0x63, 0x0c, 0x55, 0x64, 0x69, 0x65, +0x72, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x73, 0x63, +0x0a, 0x55, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x6e, +0x2e, 0x73, 0x63, 0x09, 0x55, 0x62, 0x72, 0x65, +0x76, 0x65, 0x2e, 0x73, 0x63, 0x08, 0x55, 0x72, +0x69, 0x6e, 0x67, 0x2e, 0x73, 0x63, 0x10, 0x55, +0x68, 0x75, 0x6e, 0x67, 0x61, 0x72, 0x75, 0x6d, +0x6c, 0x61, 0x75, 0x74, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x30, 0x31, 0x44, 0x33, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x31, +0x44, 0x35, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x30, 0x31, 0x44, 0x37, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x44, 0x39, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, +0x31, 0x44, 0x42, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x45, 0x34, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x45, +0x36, 0x2e, 0x73, 0x63, 0x0a, 0x55, 0x6f, 0x67, +0x6f, 0x6e, 0x65, 0x6b, 0x2e, 0x73, 0x63, 0x08, +0x55, 0x68, 0x6f, 0x72, 0x6e, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x45, 0x38, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, +0x45, 0x45, 0x41, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x31, 0x45, 0x45, 0x43, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x45, +0x45, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, +0x31, 0x45, 0x46, 0x30, 0x2e, 0x73, 0x63, 0x09, +0x57, 0x67, 0x72, 0x61, 0x76, 0x65, 0x2e, 0x73, +0x63, 0x09, 0x57, 0x61, 0x63, 0x75, 0x74, 0x65, +0x2e, 0x73, 0x63, 0x0e, 0x57, 0x63, 0x69, 0x72, +0x63, 0x75, 0x6d, 0x66, 0x6c, 0x65, 0x78, 0x2e, +0x73, 0x63, 0x0c, 0x57, 0x64, 0x69, 0x65, 0x72, +0x65, 0x73, 0x69, 0x73, 0x2e, 0x73, 0x63, 0x09, +0x59, 0x67, 0x72, 0x61, 0x76, 0x65, 0x2e, 0x73, +0x63, 0x09, 0x59, 0x61, 0x63, 0x75, 0x74, 0x65, +0x2e, 0x73, 0x63, 0x0e, 0x59, 0x63, 0x69, 0x72, +0x63, 0x75, 0x6d, 0x66, 0x6c, 0x65, 0x78, 0x2e, +0x73, 0x63, 0x0c, 0x59, 0x64, 0x69, 0x65, 0x72, +0x65, 0x73, 0x69, 0x73, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x31, 0x45, 0x38, 0x45, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, +0x46, 0x34, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x46, 0x36, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x46, 0x38, +0x2e, 0x73, 0x63, 0x09, 0x5a, 0x61, 0x63, 0x75, +0x74, 0x65, 0x2e, 0x73, 0x63, 0x09, 0x5a, 0x63, +0x61, 0x72, 0x6f, 0x6e, 0x2e, 0x73, 0x63, 0x0d, +0x5a, 0x64, 0x6f, 0x74, 0x61, 0x63, 0x63, 0x65, +0x6e, 0x74, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x31, 0x45, 0x39, 0x32, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x31, 0x45, 0x39, 0x34, +0x2e, 0x73, 0x63, 0x06, 0x45, 0x74, 0x68, 0x2e, +0x73, 0x63, 0x08, 0x54, 0x68, 0x6f, 0x72, 0x6e, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, +0x31, 0x38, 0x46, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x30, 0x31, 0x34, 0x41, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x33, +0x32, 0x2e, 0x73, 0x63, 0x0b, 0x75, 0x6e, 0x69, +0x30, 0x31, 0x34, 0x41, 0x2e, 0x73, 0x63, 0x61, +0x08, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x73, +0x63, 0x07, 0x42, 0x65, 0x74, 0x61, 0x2e, 0x73, +0x63, 0x08, 0x47, 0x61, 0x6d, 0x6d, 0x61, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x33, +0x39, 0x34, 0x2e, 0x73, 0x63, 0x0a, 0x45, 0x70, +0x73, 0x69, 0x6c, 0x6f, 0x6e, 0x2e, 0x73, 0x63, +0x07, 0x5a, 0x65, 0x74, 0x61, 0x2e, 0x73, 0x63, +0x06, 0x45, 0x74, 0x61, 0x2e, 0x73, 0x63, 0x08, +0x54, 0x68, 0x65, 0x74, 0x61, 0x2e, 0x73, 0x63, +0x07, 0x49, 0x6f, 0x74, 0x61, 0x2e, 0x73, 0x63, +0x08, 0x4b, 0x61, 0x70, 0x70, 0x61, 0x2e, 0x73, +0x63, 0x09, 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61, +0x2e, 0x73, 0x63, 0x05, 0x4d, 0x75, 0x2e, 0x73, +0x63, 0x05, 0x4e, 0x75, 0x2e, 0x73, 0x63, 0x05, +0x58, 0x69, 0x2e, 0x73, 0x63, 0x0a, 0x4f, 0x6d, +0x69, 0x63, 0x72, 0x6f, 0x6e, 0x2e, 0x73, 0x63, +0x05, 0x50, 0x69, 0x2e, 0x73, 0x63, 0x06, 0x52, +0x68, 0x6f, 0x2e, 0x73, 0x63, 0x08, 0x53, 0x69, +0x67, 0x6d, 0x61, 0x2e, 0x73, 0x63, 0x06, 0x54, +0x61, 0x75, 0x2e, 0x73, 0x63, 0x0a, 0x55, 0x70, +0x73, 0x69, 0x6c, 0x6f, 0x6e, 0x2e, 0x73, 0x63, +0x06, 0x50, 0x68, 0x69, 0x2e, 0x73, 0x63, 0x06, +0x43, 0x68, 0x69, 0x2e, 0x73, 0x63, 0x06, 0x50, +0x73, 0x69, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x30, 0x33, 0x41, 0x39, 0x2e, 0x73, 0x63, +0x0f, 0x49, 0x6f, 0x74, 0x61, 0x64, 0x69, 0x65, +0x72, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x73, 0x63, +0x12, 0x55, 0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e, +0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, +0x2e, 0x73, 0x63, 0x0f, 0x41, 0x6c, 0x70, 0x68, +0x61, 0x69, 0x6f, 0x74, 0x61, 0x73, 0x75, 0x62, +0x2e, 0x73, 0x63, 0x0d, 0x45, 0x74, 0x61, 0x69, +0x6f, 0x74, 0x61, 0x73, 0x75, 0x62, 0x2e, 0x73, +0x63, 0x0f, 0x4f, 0x6d, 0x65, 0x67, 0x61, 0x69, +0x6f, 0x74, 0x61, 0x73, 0x75, 0x62, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x31, +0x30, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, +0x30, 0x34, 0x31, 0x31, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x31, 0x32, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, +0x31, 0x33, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x31, 0x34, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x31, 0x35, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x31, 0x36, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x30, 0x34, 0x31, 0x37, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x31, +0x38, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, +0x30, 0x34, 0x31, 0x39, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x31, 0x41, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, +0x31, 0x42, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x31, 0x43, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x31, 0x44, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x31, 0x45, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x30, 0x34, 0x31, 0x46, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x32, +0x30, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, +0x30, 0x34, 0x32, 0x31, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x32, 0x32, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, +0x32, 0x33, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x32, 0x34, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x32, 0x35, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x32, 0x36, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x30, 0x34, 0x32, 0x37, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x32, +0x38, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, +0x30, 0x34, 0x32, 0x39, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x32, 0x41, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, +0x32, 0x42, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x32, 0x43, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x32, 0x44, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x32, 0x45, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x30, 0x34, 0x32, 0x46, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x30, +0x30, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, +0x30, 0x34, 0x30, 0x31, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x30, 0x32, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, +0x30, 0x33, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x30, 0x34, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x30, 0x35, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x30, 0x36, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x30, 0x34, 0x30, 0x37, 0x2e, 0x73, +0x63, 0x0b, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x30, +0x37, 0x2e, 0x73, 0x63, 0x61, 0x0a, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x30, 0x38, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x30, 0x39, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x30, 0x41, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x30, 0x34, 0x30, 0x42, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x30, +0x43, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, +0x30, 0x34, 0x30, 0x44, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x30, 0x45, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, +0x30, 0x46, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x36, 0x32, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x37, 0x32, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x37, 0x34, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x30, 0x34, 0x39, 0x30, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x39, +0x32, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, +0x30, 0x34, 0x39, 0x36, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x39, 0x38, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, +0x39, 0x41, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x41, 0x30, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x41, 0x32, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x41, 0x41, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x30, 0x34, 0x41, 0x45, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x42, +0x30, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, +0x30, 0x34, 0x42, 0x32, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x42, 0x36, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, +0x42, 0x41, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x43, 0x30, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x43, 0x31, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x44, 0x30, 0x2e, 0x73, 0x63, 0x0a, 0x75, +0x6e, 0x69, 0x30, 0x34, 0x44, 0x34, 0x2e, 0x73, +0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x44, +0x36, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, +0x30, 0x34, 0x44, 0x38, 0x2e, 0x73, 0x63, 0x0a, +0x75, 0x6e, 0x69, 0x30, 0x34, 0x45, 0x32, 0x2e, +0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, +0x45, 0x36, 0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, +0x69, 0x30, 0x34, 0x45, 0x38, 0x2e, 0x73, 0x63, +0x0a, 0x75, 0x6e, 0x69, 0x30, 0x34, 0x45, 0x45, +0x2e, 0x73, 0x63, 0x0a, 0x75, 0x6e, 0x69, 0x30, +0x34, 0x46, 0x32, 0x2e, 0x73, 0x63, 0x0c, 0x61, +0x6d, 0x70, 0x65, 0x72, 0x73, 0x61, 0x6e, 0x64, +0x2e, 0x73, 0x63, 0x07, 0x7a, 0x65, 0x72, 0x6f, +0x2e, 0x73, 0x63, 0x06, 0x6f, 0x6e, 0x65, 0x2e, +0x73, 0x63, 0x06, 0x74, 0x77, 0x6f, 0x2e, 0x73, +0x63, 0x08, 0x74, 0x68, 0x72, 0x65, 0x65, 0x2e, +0x73, 0x63, 0x07, 0x66, 0x6f, 0x75, 0x72, 0x2e, +0x73, 0x63, 0x07, 0x66, 0x69, 0x76, 0x65, 0x2e, +0x73, 0x63, 0x06, 0x73, 0x69, 0x78, 0x2e, 0x73, +0x63, 0x08, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x2e, +0x73, 0x63, 0x08, 0x65, 0x69, 0x67, 0x68, 0x74, +0x2e, 0x73, 0x63, 0x07, 0x6e, 0x69, 0x6e, 0x65, +0x2e, 0x73, 0x63, 0x09, 0x65, 0x78, 0x63, 0x6c, +0x61, 0x6d, 0x2e, 0x73, 0x63, 0x0d, 0x65, 0x78, +0x63, 0x6c, 0x61, 0x6d, 0x64, 0x6f, 0x77, 0x6e, +0x2e, 0x73, 0x63, 0x0b, 0x71, 0x75, 0x65, 0x73, +0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x73, 0x63, 0x0f, +0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, +0x64, 0x6f, 0x77, 0x6e, 0x2e, 0x73, 0x63, 0x0e, +0x71, 0x75, 0x6f, 0x74, 0x65, 0x73, 0x69, 0x6e, +0x67, 0x6c, 0x65, 0x2e, 0x73, 0x63, 0x0b, 0x71, +0x75, 0x6f, 0x74, 0x65, 0x64, 0x62, 0x6c, 0x2e, +0x73, 0x63, 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x65, +0x6c, 0x65, 0x66, 0x74, 0x2e, 0x73, 0x63, 0x0d, +0x71, 0x75, 0x6f, 0x74, 0x65, 0x72, 0x69, 0x67, +0x68, 0x74, 0x2e, 0x73, 0x63, 0x0f, 0x71, 0x75, +0x6f, 0x74, 0x65, 0x64, 0x62, 0x6c, 0x6c, 0x65, +0x66, 0x74, 0x2e, 0x73, 0x63, 0x10, 0x71, 0x75, +0x6f, 0x74, 0x65, 0x64, 0x62, 0x6c, 0x72, 0x69, +0x67, 0x68, 0x74, 0x2e, 0x73, 0x63, 0x09, 0x68, +0x79, 0x70, 0x68, 0x65, 0x6e, 0x2e, 0x73, 0x63, +0x09, 0x65, 0x6e, 0x64, 0x61, 0x73, 0x68, 0x2e, +0x73, 0x63, 0x09, 0x65, 0x6d, 0x64, 0x61, 0x73, +0x68, 0x2e, 0x73, 0x63, 0x0c, 0x70, 0x61, 0x72, +0x65, 0x6e, 0x6c, 0x65, 0x66, 0x74, 0x2e, 0x73, +0x63, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x72, +0x69, 0x67, 0x68, 0x74, 0x2e, 0x73, 0x63, 0x0e, +0x62, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x6c, +0x65, 0x66, 0x74, 0x2e, 0x73, 0x63, 0x0f, 0x62, +0x72, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x72, 0x69, +0x67, 0x68, 0x74, 0x2e, 0x73, 0x63, 0x0c, 0x62, +0x72, 0x61, 0x63, 0x65, 0x6c, 0x65, 0x66, 0x74, +0x2e, 0x73, 0x63, 0x0d, 0x62, 0x72, 0x61, 0x63, +0x65, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x73, +0x63, 0x09, 0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x73, +0x75, 0x70, 0x73, 0x08, 0x6f, 0x6e, 0x65, 0x2e, +0x73, 0x75, 0x70, 0x73, 0x08, 0x74, 0x77, 0x6f, +0x2e, 0x73, 0x75, 0x70, 0x73, 0x0a, 0x74, 0x68, +0x72, 0x65, 0x65, 0x2e, 0x73, 0x75, 0x70, 0x73, +0x09, 0x66, 0x6f, 0x75, 0x72, 0x2e, 0x73, 0x75, +0x70, 0x73, 0x09, 0x66, 0x69, 0x76, 0x65, 0x2e, +0x73, 0x75, 0x70, 0x73, 0x08, 0x73, 0x69, 0x78, +0x2e, 0x73, 0x75, 0x70, 0x73, 0x0a, 0x73, 0x65, +0x76, 0x65, 0x6e, 0x2e, 0x73, 0x75, 0x70, 0x73, +0x0a, 0x65, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x73, +0x75, 0x70, 0x73, 0x09, 0x6e, 0x69, 0x6e, 0x65, +0x2e, 0x73, 0x75, 0x70, 0x73, 0x0e, 0x70, 0x61, +0x72, 0x65, 0x6e, 0x6c, 0x65, 0x66, 0x74, 0x2e, +0x73, 0x75, 0x70, 0x73, 0x0f, 0x70, 0x61, 0x72, +0x65, 0x6e, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2e, +0x73, 0x75, 0x70, 0x73, 0x0b, 0x70, 0x65, 0x72, +0x69, 0x6f, 0x64, 0x2e, 0x73, 0x75, 0x70, 0x73, +0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x2e, 0x73, +0x75, 0x70, 0x73, 0x09, 0x7a, 0x65, 0x72, 0x6f, +0x2e, 0x73, 0x75, 0x62, 0x73, 0x08, 0x6f, 0x6e, +0x65, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x08, 0x74, +0x77, 0x6f, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x0a, +0x74, 0x68, 0x72, 0x65, 0x65, 0x2e, 0x73, 0x75, +0x62, 0x73, 0x09, 0x66, 0x6f, 0x75, 0x72, 0x2e, +0x73, 0x75, 0x62, 0x73, 0x09, 0x66, 0x69, 0x76, +0x65, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x08, 0x73, +0x69, 0x78, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x0a, +0x73, 0x65, 0x76, 0x65, 0x6e, 0x2e, 0x73, 0x75, +0x62, 0x73, 0x0a, 0x65, 0x69, 0x67, 0x68, 0x74, +0x2e, 0x73, 0x75, 0x62, 0x73, 0x09, 0x6e, 0x69, +0x6e, 0x65, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x0e, +0x70, 0x61, 0x72, 0x65, 0x6e, 0x6c, 0x65, 0x66, +0x74, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x0f, 0x70, +0x61, 0x72, 0x65, 0x6e, 0x72, 0x69, 0x67, 0x68, +0x74, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x0b, 0x70, +0x65, 0x72, 0x69, 0x6f, 0x64, 0x2e, 0x73, 0x75, +0x62, 0x73, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x61, +0x2e, 0x73, 0x75, 0x62, 0x73, 0x09, 0x7a, 0x65, +0x72, 0x6f, 0x2e, 0x64, 0x6e, 0x6f, 0x6d, 0x08, +0x6f, 0x6e, 0x65, 0x2e, 0x64, 0x6e, 0x6f, 0x6d, +0x08, 0x74, 0x77, 0x6f, 0x2e, 0x64, 0x6e, 0x6f, +0x6d, 0x0a, 0x74, 0x68, 0x72, 0x65, 0x65, 0x2e, +0x64, 0x6e, 0x6f, 0x6d, 0x09, 0x66, 0x6f, 0x75, +0x72, 0x2e, 0x64, 0x6e, 0x6f, 0x6d, 0x09, 0x66, +0x69, 0x76, 0x65, 0x2e, 0x64, 0x6e, 0x6f, 0x6d, +0x08, 0x73, 0x69, 0x78, 0x2e, 0x64, 0x6e, 0x6f, +0x6d, 0x0a, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x2e, +0x64, 0x6e, 0x6f, 0x6d, 0x0a, 0x65, 0x69, 0x67, +0x68, 0x74, 0x2e, 0x64, 0x6e, 0x6f, 0x6d, 0x09, +0x6e, 0x69, 0x6e, 0x65, 0x2e, 0x64, 0x6e, 0x6f, +0x6d, 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x6c, +0x65, 0x66, 0x74, 0x2e, 0x64, 0x6e, 0x6f, 0x6d, +0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x72, 0x69, +0x67, 0x68, 0x74, 0x2e, 0x64, 0x6e, 0x6f, 0x6d, +0x0b, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x2e, +0x64, 0x6e, 0x6f, 0x6d, 0x0a, 0x63, 0x6f, 0x6d, +0x6d, 0x61, 0x2e, 0x64, 0x6e, 0x6f, 0x6d, 0x09, +0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x6e, 0x75, 0x6d, +0x72, 0x08, 0x6f, 0x6e, 0x65, 0x2e, 0x6e, 0x75, +0x6d, 0x72, 0x08, 0x74, 0x77, 0x6f, 0x2e, 0x6e, +0x75, 0x6d, 0x72, 0x0a, 0x74, 0x68, 0x72, 0x65, +0x65, 0x2e, 0x6e, 0x75, 0x6d, 0x72, 0x09, 0x66, +0x6f, 0x75, 0x72, 0x2e, 0x6e, 0x75, 0x6d, 0x72, +0x09, 0x66, 0x69, 0x76, 0x65, 0x2e, 0x6e, 0x75, +0x6d, 0x72, 0x08, 0x73, 0x69, 0x78, 0x2e, 0x6e, +0x75, 0x6d, 0x72, 0x0a, 0x73, 0x65, 0x76, 0x65, +0x6e, 0x2e, 0x6e, 0x75, 0x6d, 0x72, 0x0a, 0x65, +0x69, 0x67, 0x68, 0x74, 0x2e, 0x6e, 0x75, 0x6d, +0x72, 0x09, 0x6e, 0x69, 0x6e, 0x65, 0x2e, 0x6e, +0x75, 0x6d, 0x72, 0x0e, 0x70, 0x61, 0x72, 0x65, +0x6e, 0x6c, 0x65, 0x66, 0x74, 0x2e, 0x6e, 0x75, +0x6d, 0x72, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, +0x72, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x6e, 0x75, +0x6d, 0x72, 0x0b, 0x70, 0x65, 0x72, 0x69, 0x6f, +0x64, 0x2e, 0x6e, 0x75, 0x6d, 0x72, 0x0a, 0x63, +0x6f, 0x6d, 0x6d, 0x61, 0x2e, 0x6e, 0x75, 0x6d, +0x72, 0x0d, 0x6f, 0x72, 0x64, 0x66, 0x65, 0x6d, +0x69, 0x6e, 0x69, 0x6e, 0x65, 0x2e, 0x61, 0x06, +0x41, 0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, 0x42, +0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, 0x43, 0x2e, +0x73, 0x75, 0x70, 0x73, 0x06, 0x44, 0x2e, 0x73, +0x75, 0x70, 0x73, 0x06, 0x45, 0x2e, 0x73, 0x75, +0x70, 0x73, 0x06, 0x46, 0x2e, 0x73, 0x75, 0x70, +0x73, 0x06, 0x47, 0x2e, 0x73, 0x75, 0x70, 0x73, +0x06, 0x48, 0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, +0x49, 0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, 0x4a, +0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, 0x4b, 0x2e, +0x73, 0x75, 0x70, 0x73, 0x06, 0x4c, 0x2e, 0x73, +0x75, 0x70, 0x73, 0x06, 0x4d, 0x2e, 0x73, 0x75, +0x70, 0x73, 0x06, 0x4e, 0x2e, 0x73, 0x75, 0x70, +0x73, 0x06, 0x4f, 0x2e, 0x73, 0x75, 0x70, 0x73, +0x06, 0x50, 0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, +0x51, 0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, 0x52, +0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, 0x53, 0x2e, +0x73, 0x75, 0x70, 0x73, 0x06, 0x54, 0x2e, 0x73, +0x75, 0x70, 0x73, 0x06, 0x55, 0x2e, 0x73, 0x75, +0x70, 0x73, 0x06, 0x56, 0x2e, 0x73, 0x75, 0x70, +0x73, 0x06, 0x57, 0x2e, 0x73, 0x75, 0x70, 0x73, +0x06, 0x58, 0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, +0x59, 0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, 0x5a, +0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, 0x61, 0x2e, +0x73, 0x75, 0x70, 0x73, 0x06, 0x62, 0x2e, 0x73, +0x75, 0x70, 0x73, 0x06, 0x63, 0x2e, 0x73, 0x75, +0x70, 0x73, 0x06, 0x64, 0x2e, 0x73, 0x75, 0x70, +0x73, 0x06, 0x65, 0x2e, 0x73, 0x75, 0x70, 0x73, +0x06, 0x66, 0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, +0x67, 0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, 0x68, +0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, 0x69, 0x2e, +0x73, 0x75, 0x70, 0x73, 0x06, 0x6a, 0x2e, 0x73, +0x75, 0x70, 0x73, 0x06, 0x6b, 0x2e, 0x73, 0x75, +0x70, 0x73, 0x06, 0x6c, 0x2e, 0x73, 0x75, 0x70, +0x73, 0x06, 0x6d, 0x2e, 0x73, 0x75, 0x70, 0x73, +0x06, 0x6e, 0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, +0x6f, 0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, 0x70, +0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, 0x71, 0x2e, +0x73, 0x75, 0x70, 0x73, 0x06, 0x72, 0x2e, 0x73, +0x75, 0x70, 0x73, 0x06, 0x73, 0x2e, 0x73, 0x75, +0x70, 0x73, 0x06, 0x74, 0x2e, 0x73, 0x75, 0x70, +0x73, 0x06, 0x75, 0x2e, 0x73, 0x75, 0x70, 0x73, +0x06, 0x76, 0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, +0x77, 0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, 0x78, +0x2e, 0x73, 0x75, 0x70, 0x73, 0x06, 0x79, 0x2e, +0x73, 0x75, 0x70, 0x73, 0x06, 0x7a, 0x2e, 0x73, +0x75, 0x70, 0x73, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x32, 0x43, 0x31, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x32, 0x44, 0x30, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x32, 0x44, 0x31, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x32, 0x44, 0x45, 0x07, 0x75, 0x6e, 0x69, 0x30, +0x32, 0x45, 0x30, 0x0b, 0x65, 0x67, 0x72, 0x61, +0x76, 0x65, 0x2e, 0x73, 0x75, 0x70, 0x73, 0x0b, +0x65, 0x61, 0x63, 0x75, 0x74, 0x65, 0x2e, 0x73, +0x75, 0x70, 0x73, 0x0c, 0x75, 0x6e, 0x69, 0x30, +0x32, 0x35, 0x39, 0x2e, 0x73, 0x75, 0x70, 0x73, +0x06, 0x61, 0x2e, 0x73, 0x75, 0x70, 0x61, 0x06, +0x67, 0x2e, 0x73, 0x75, 0x70, 0x61, 0x06, 0x6c, +0x2e, 0x73, 0x75, 0x70, 0x61, 0x0a, 0x63, 0x6f, +0x6c, 0x6f, 0x6e, 0x2e, 0x73, 0x75, 0x70, 0x73, +0x0b, 0x68, 0x79, 0x70, 0x68, 0x65, 0x6e, 0x2e, +0x73, 0x75, 0x70, 0x73, 0x0b, 0x65, 0x6e, 0x64, +0x61, 0x73, 0x68, 0x2e, 0x73, 0x75, 0x70, 0x73, +0x0b, 0x65, 0x6d, 0x64, 0x61, 0x73, 0x68, 0x2e, +0x73, 0x75, 0x70, 0x73, 0x06, 0x79, 0x65, 0x6e, +0x2e, 0x43, 0x4e, 0x04, 0x45, 0x75, 0x72, 0x6f, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x31, 0x39, 0x32, +0x0d, 0x63, 0x6f, 0x6c, 0x6f, 0x6e, 0x6d, 0x6f, +0x6e, 0x65, 0x74, 0x61, 0x72, 0x79, 0x04, 0x6c, +0x69, 0x72, 0x61, 0x07, 0x75, 0x6e, 0x69, 0x32, +0x30, 0x41, 0x36, 0x06, 0x70, 0x65, 0x73, 0x65, +0x74, 0x61, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x30, +0x41, 0x39, 0x04, 0x64, 0x6f, 0x6e, 0x67, 0x07, +0x75, 0x6e, 0x69, 0x32, 0x30, 0x42, 0x31, 0x07, +0x75, 0x6e, 0x69, 0x32, 0x30, 0x42, 0x32, 0x07, +0x75, 0x6e, 0x69, 0x32, 0x30, 0x42, 0x34, 0x07, +0x75, 0x6e, 0x69, 0x32, 0x30, 0x42, 0x35, 0x07, +0x75, 0x6e, 0x69, 0x32, 0x30, 0x42, 0x39, 0x07, +0x75, 0x6e, 0x69, 0x32, 0x30, 0x42, 0x41, 0x07, +0x75, 0x6e, 0x69, 0x32, 0x30, 0x41, 0x45, 0x07, +0x75, 0x6e, 0x69, 0x32, 0x30, 0x42, 0x38, 0x07, +0x75, 0x6e, 0x69, 0x32, 0x30, 0x42, 0x44, 0x07, +0x75, 0x6e, 0x69, 0x32, 0x32, 0x31, 0x35, 0x0a, +0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x66, 0x72, +0x61, 0x63, 0x08, 0x6f, 0x6e, 0x65, 0x74, 0x68, +0x69, 0x72, 0x64, 0x09, 0x74, 0x77, 0x6f, 0x74, +0x68, 0x69, 0x72, 0x64, 0x73, 0x07, 0x75, 0x6e, +0x69, 0x32, 0x31, 0x35, 0x35, 0x07, 0x75, 0x6e, +0x69, 0x32, 0x31, 0x35, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x32, 0x31, 0x35, 0x37, 0x07, 0x75, 0x6e, +0x69, 0x32, 0x31, 0x35, 0x38, 0x07, 0x75, 0x6e, +0x69, 0x32, 0x31, 0x35, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x32, 0x31, 0x35, 0x41, 0x07, 0x75, 0x6e, +0x69, 0x32, 0x31, 0x35, 0x30, 0x09, 0x6f, 0x6e, +0x65, 0x65, 0x69, 0x67, 0x68, 0x74, 0x68, 0x0c, +0x74, 0x68, 0x72, 0x65, 0x65, 0x65, 0x69, 0x67, +0x68, 0x74, 0x68, 0x73, 0x0b, 0x66, 0x69, 0x76, +0x65, 0x65, 0x69, 0x67, 0x68, 0x74, 0x68, 0x73, +0x0c, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x65, 0x69, +0x67, 0x68, 0x74, 0x68, 0x73, 0x07, 0x75, 0x6e, +0x69, 0x32, 0x31, 0x35, 0x31, 0x07, 0x75, 0x6e, +0x69, 0x32, 0x31, 0x35, 0x32, 0x07, 0x75, 0x6e, +0x69, 0x32, 0x31, 0x38, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x32, 0x32, 0x31, 0x39, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x30, 0x42, 0x35, 0x07, 0x75, 0x6e, +0x69, 0x32, 0x32, 0x30, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x32, 0x31, 0x32, 0x36, 0x07, 0x75, 0x6e, +0x69, 0x32, 0x31, 0x31, 0x33, 0x09, 0x65, 0x73, +0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x07, +0x75, 0x6e, 0x69, 0x32, 0x31, 0x39, 0x30, 0x07, +0x61, 0x72, 0x72, 0x6f, 0x77, 0x75, 0x70, 0x07, +0x75, 0x6e, 0x69, 0x32, 0x31, 0x39, 0x32, 0x09, +0x61, 0x72, 0x72, 0x6f, 0x77, 0x64, 0x6f, 0x77, +0x6e, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x35, 0x41, +0x30, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x35, 0x43, +0x36, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x35, 0x43, +0x39, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x37, 0x35, +0x32, 0x07, 0x74, 0x72, 0x69, 0x61, 0x67, 0x75, +0x70, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x35, 0x42, +0x33, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x35, 0x42, +0x36, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x35, 0x42, +0x37, 0x07, 0x74, 0x72, 0x69, 0x61, 0x67, 0x64, +0x6e, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x35, 0x42, +0x44, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x35, 0x43, +0x30, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x35, 0x43, +0x31, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x36, 0x31, +0x30, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x36, 0x31, +0x31, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x37, 0x31, +0x33, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x36, 0x36, +0x41, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x30, 0x33, +0x32, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x30, 0x33, +0x33, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x30, 0x33, +0x35, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x42, +0x39, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x42, +0x42, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x42, +0x43, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x42, +0x45, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x42, +0x46, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x43, +0x38, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x43, +0x39, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x43, +0x41, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x43, +0x42, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x43, +0x43, 0x07, 0x75, 0x6e, 0x69, 0x32, 0x35, 0x43, +0x43, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, +0x30, 0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, +0x30, 0x2e, 0x63, 0x61, 0x70, 0x09, 0x75, 0x6e, +0x69, 0x30, 0x33, 0x30, 0x30, 0x2e, 0x67, 0x07, +0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x31, 0x0b, +0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x31, 0x2e, +0x63, 0x61, 0x70, 0x09, 0x75, 0x6e, 0x69, 0x30, +0x33, 0x30, 0x31, 0x2e, 0x67, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x33, 0x30, 0x32, 0x0b, 0x75, 0x6e, +0x69, 0x30, 0x33, 0x30, 0x32, 0x2e, 0x63, 0x61, +0x70, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, +0x33, 0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, +0x33, 0x2e, 0x63, 0x61, 0x70, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x33, 0x30, 0x34, 0x0b, 0x75, 0x6e, +0x69, 0x30, 0x33, 0x30, 0x34, 0x2e, 0x63, 0x61, +0x70, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, +0x35, 0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, +0x35, 0x2e, 0x63, 0x61, 0x70, 0x07, 0x75, 0x6e, +0x69, 0x30, 0x33, 0x30, 0x36, 0x09, 0x75, 0x6e, +0x69, 0x30, 0x33, 0x30, 0x36, 0x2e, 0x63, 0x0b, +0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x36, 0x2e, +0x63, 0x61, 0x70, 0x0c, 0x75, 0x6e, 0x69, 0x30, +0x33, 0x30, 0x36, 0x2e, 0x63, 0x63, 0x61, 0x70, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x37, +0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x37, +0x2e, 0x63, 0x61, 0x70, 0x07, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x38, 0x0b, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x38, 0x2e, 0x63, 0x61, 0x70, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x39, +0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x39, +0x2e, 0x63, 0x61, 0x70, 0x07, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x41, 0x0b, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x41, 0x2e, 0x63, 0x61, 0x70, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x42, +0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x42, +0x2e, 0x63, 0x61, 0x70, 0x07, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x43, 0x0b, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x43, 0x2e, 0x63, 0x61, 0x70, +0x09, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x43, +0x2e, 0x61, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, +0x30, 0x46, 0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, +0x30, 0x46, 0x2e, 0x63, 0x61, 0x70, 0x07, 0x75, +0x6e, 0x69, 0x30, 0x33, 0x31, 0x31, 0x0b, 0x75, +0x6e, 0x69, 0x30, 0x33, 0x31, 0x31, 0x2e, 0x63, +0x61, 0x70, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, +0x31, 0x32, 0x09, 0x75, 0x6e, 0x69, 0x30, 0x33, +0x31, 0x32, 0x2e, 0x67, 0x07, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x31, 0x33, 0x09, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x31, 0x33, 0x2e, 0x67, 0x07, 0x75, +0x6e, 0x69, 0x30, 0x33, 0x31, 0x38, 0x07, 0x75, +0x6e, 0x69, 0x30, 0x33, 0x31, 0x39, 0x07, 0x75, +0x6e, 0x69, 0x30, 0x33, 0x31, 0x41, 0x07, 0x75, +0x6e, 0x69, 0x30, 0x33, 0x31, 0x42, 0x07, 0x75, +0x6e, 0x69, 0x30, 0x33, 0x31, 0x43, 0x07, 0x75, +0x6e, 0x69, 0x30, 0x33, 0x31, 0x44, 0x07, 0x75, +0x6e, 0x69, 0x30, 0x33, 0x31, 0x45, 0x07, 0x75, +0x6e, 0x69, 0x30, 0x33, 0x31, 0x46, 0x07, 0x75, +0x6e, 0x69, 0x30, 0x33, 0x32, 0x30, 0x07, 0x75, +0x6e, 0x69, 0x30, 0x33, 0x32, 0x33, 0x07, 0x75, +0x6e, 0x69, 0x30, 0x33, 0x32, 0x34, 0x07, 0x75, +0x6e, 0x69, 0x30, 0x33, 0x32, 0x35, 0x07, 0x75, +0x6e, 0x69, 0x30, 0x33, 0x32, 0x36, 0x09, 0x75, +0x6e, 0x69, 0x30, 0x33, 0x32, 0x36, 0x2e, 0x61, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x32, 0x37, +0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x32, 0x37, +0x2e, 0x63, 0x61, 0x70, 0x07, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x32, 0x38, 0x0b, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x32, 0x38, 0x2e, 0x63, 0x61, 0x70, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x32, 0x39, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x32, 0x41, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x32, 0x43, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x32, 0x45, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x32, 0x46, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x33, 0x30, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x33, 0x31, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x33, 0x34, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x33, 0x39, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x33, 0x41, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x33, 0x42, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x33, 0x43, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x33, 0x44, +0x07, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x34, 0x32, +0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x34, 0x32, +0x2e, 0x63, 0x61, 0x70, 0x07, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x34, 0x35, 0x07, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x36, 0x31, 0x0b, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x38, 0x30, 0x33, 0x30, 0x31, +0x0f, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x38, +0x30, 0x33, 0x30, 0x31, 0x2e, 0x63, 0x61, 0x70, +0x0d, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x38, +0x30, 0x33, 0x30, 0x31, 0x2e, 0x67, 0x0b, 0x75, +0x6e, 0x69, 0x30, 0x33, 0x30, 0x38, 0x30, 0x33, +0x30, 0x30, 0x0f, 0x75, 0x6e, 0x69, 0x30, 0x33, +0x30, 0x38, 0x30, 0x33, 0x30, 0x30, 0x2e, 0x63, +0x61, 0x70, 0x0d, 0x75, 0x6e, 0x69, 0x30, 0x33, +0x30, 0x38, 0x30, 0x33, 0x30, 0x30, 0x2e, 0x67, +0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x38, +0x30, 0x33, 0x30, 0x33, 0x0b, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x38, 0x30, 0x33, 0x30, 0x34, +0x0f, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x38, +0x30, 0x33, 0x30, 0x34, 0x2e, 0x63, 0x61, 0x70, +0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x38, +0x30, 0x33, 0x30, 0x43, 0x0f, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x38, 0x30, 0x33, 0x30, 0x43, +0x2e, 0x63, 0x61, 0x70, 0x0b, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x32, 0x30, 0x33, 0x30, 0x31, +0x0f, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x32, +0x30, 0x33, 0x30, 0x31, 0x2e, 0x63, 0x61, 0x70, +0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x32, +0x30, 0x33, 0x30, 0x30, 0x0f, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x32, 0x30, 0x33, 0x30, 0x30, +0x2e, 0x63, 0x61, 0x70, 0x0b, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x32, 0x30, 0x33, 0x30, 0x39, +0x0f, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x32, +0x30, 0x33, 0x30, 0x39, 0x2e, 0x63, 0x61, 0x70, +0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x32, +0x30, 0x33, 0x30, 0x33, 0x0f, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x32, 0x30, 0x33, 0x30, 0x33, +0x2e, 0x63, 0x61, 0x70, 0x0b, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x36, 0x30, 0x33, 0x30, 0x31, +0x0f, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x36, +0x30, 0x33, 0x30, 0x31, 0x2e, 0x63, 0x61, 0x70, +0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x36, +0x30, 0x33, 0x30, 0x30, 0x0f, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x36, 0x30, 0x33, 0x30, 0x30, +0x2e, 0x63, 0x61, 0x70, 0x0b, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x36, 0x30, 0x33, 0x30, 0x39, +0x0f, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x36, +0x30, 0x33, 0x30, 0x39, 0x2e, 0x63, 0x61, 0x70, +0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x36, +0x30, 0x33, 0x30, 0x33, 0x0f, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x36, 0x30, 0x33, 0x30, 0x33, +0x2e, 0x63, 0x61, 0x70, 0x0b, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x32, 0x30, 0x33, 0x30, 0x36, +0x0f, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x32, +0x30, 0x33, 0x30, 0x36, 0x2e, 0x63, 0x61, 0x70, +0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x30, 0x34, +0x30, 0x33, 0x30, 0x31, 0x0f, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x30, 0x34, 0x30, 0x33, 0x30, 0x31, +0x2e, 0x63, 0x61, 0x70, 0x0b, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x31, 0x32, 0x30, 0x33, 0x30, 0x31, +0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x31, 0x32, +0x30, 0x33, 0x30, 0x30, 0x0b, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x31, 0x32, 0x30, 0x33, 0x30, 0x33, +0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x31, 0x33, +0x30, 0x33, 0x30, 0x31, 0x0b, 0x75, 0x6e, 0x69, +0x30, 0x33, 0x31, 0x33, 0x30, 0x33, 0x30, 0x30, +0x0b, 0x75, 0x6e, 0x69, 0x30, 0x33, 0x31, 0x33, +0x30, 0x33, 0x30, 0x33, 0x07, 0x75, 0x6e, 0x69, +0x30, 0x30, 0x41, 0x30, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x30, 0x30, 0x37, 0x0a, 0x73, 0x70, 0x61, +0x63, 0x65, 0x2e, 0x66, 0x72, 0x61, 0x63, 0x0c, +0x6e, 0x62, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, +0x66, 0x72, 0x61, 0x63, 0x07, 0x75, 0x6e, 0x69, +0x32, 0x30, 0x32, 0x46, 0x07, 0x75, 0x6e, 0x69, +0x46, 0x45, 0x46, 0x46, 0x00, 0x00, 0x00, 0x01, +0xff, 0xff, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, +0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x02, 0xf8, +0x00, 0x02, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x37, +0x00, 0x01, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x01, +0x00, 0x6c, 0x00, 0x6c, 0x00, 0x01, 0x00, 0x75, +0x00, 0x75, 0x00, 0x02, 0x00, 0x85, 0x00, 0x85, +0x00, 0x01, 0x00, 0xaf, 0x00, 0xb1, 0x00, 0x01, +0x00, 0xb7, 0x00, 0xb7, 0x00, 0x01, 0x00, 0xdd, +0x00, 0xde, 0x00, 0x01, 0x00, 0xf7, 0x00, 0xf8, +0x00, 0x01, 0x01, 0x0f, 0x01, 0x10, 0x00, 0x01, +0x01, 0x1a, 0x01, 0x1a, 0x00, 0x02, 0x01, 0x2e, +0x01, 0x2e, 0x00, 0x01, 0x01, 0x34, 0x01, 0x34, +0x00, 0x02, 0x01, 0x37, 0x01, 0x37, 0x00, 0x02, +0x01, 0x46, 0x01, 0x46, 0x00, 0x02, 0x01, 0x47, +0x01, 0x47, 0x00, 0x01, 0x01, 0x49, 0x01, 0x49, +0x00, 0x01, 0x01, 0x50, 0x01, 0x50, 0x00, 0x02, +0x01, 0x74, 0x01, 0x76, 0x00, 0x01, 0x01, 0x7c, +0x01, 0x7c, 0x00, 0x01, 0x01, 0x8c, 0x01, 0x8c, +0x00, 0x02, 0x01, 0xa3, 0x01, 0xa4, 0x00, 0x01, +0x01, 0xbc, 0x01, 0xbe, 0x00, 0x01, 0x01, 0xc0, +0x01, 0xc2, 0x00, 0x01, 0x01, 0xc4, 0x01, 0xc4, +0x00, 0x01, 0x01, 0xc6, 0x01, 0xd3, 0x00, 0x01, +0x01, 0xd5, 0x01, 0xd6, 0x00, 0x01, 0x01, 0xda, +0x01, 0xda, 0x00, 0x01, 0x01, 0xdf, 0x01, 0xe7, +0x00, 0x01, 0x01, 0xe9, 0x01, 0xec, 0x00, 0x01, +0x01, 0xee, 0x01, 0xee, 0x00, 0x01, 0x01, 0xf0, +0x01, 0xf0, 0x00, 0x01, 0x01, 0xf3, 0x01, 0xfd, +0x00, 0x01, 0x02, 0x04, 0x02, 0x04, 0x00, 0x02, +0x02, 0x07, 0x02, 0x08, 0x00, 0x02, 0x02, 0x09, +0x02, 0x09, 0x00, 0x01, 0x02, 0x14, 0x02, 0x14, +0x00, 0x01, 0x02, 0x17, 0x02, 0x17, 0x00, 0x01, +0x02, 0x23, 0x02, 0x23, 0x00, 0x01, 0x02, 0x2d, +0x02, 0x2e, 0x00, 0x01, 0x02, 0x33, 0x02, 0x33, +0x00, 0x02, 0x02, 0x37, 0x02, 0x37, 0x00, 0x01, +0x02, 0x41, 0x02, 0x41, 0x00, 0x04, 0x02, 0x45, +0x02, 0x45, 0x00, 0x04, 0x02, 0x47, 0x02, 0x47, +0x00, 0x04, 0x02, 0x49, 0x02, 0x49, 0x00, 0x04, +0x02, 0x4f, 0x02, 0x4f, 0x00, 0x04, 0x02, 0x51, +0x02, 0x51, 0x00, 0x04, 0x02, 0x54, 0x02, 0x54, +0x00, 0x04, 0x02, 0x58, 0x02, 0x58, 0x00, 0x04, +0x02, 0x5d, 0x02, 0x5d, 0x00, 0x02, 0x02, 0x60, +0x02, 0x60, 0x00, 0x02, 0x02, 0x62, 0x02, 0x62, +0x00, 0x01, 0x02, 0x66, 0x02, 0x66, 0x00, 0x01, +0x02, 0x68, 0x02, 0x68, 0x00, 0x01, 0x02, 0x6a, +0x02, 0x6a, 0x00, 0x01, 0x02, 0x70, 0x02, 0x70, +0x00, 0x01, 0x02, 0x72, 0x02, 0x72, 0x00, 0x01, +0x02, 0x75, 0x02, 0x75, 0x00, 0x01, 0x02, 0x79, +0x02, 0x79, 0x00, 0x01, 0x02, 0x82, 0x02, 0x82, +0x00, 0x02, 0x02, 0x85, 0x02, 0x85, 0x00, 0x02, +0x02, 0x89, 0x03, 0x61, 0x00, 0x02, 0x03, 0x63, +0x03, 0x63, 0x00, 0x01, 0x03, 0x65, 0x03, 0x65, +0x00, 0x01, 0x03, 0x70, 0x03, 0x70, 0x00, 0x04, +0x03, 0x72, 0x03, 0x72, 0x00, 0x04, 0x03, 0x78, +0x03, 0x78, 0x00, 0x04, 0x03, 0x7b, 0x03, 0x7b, +0x00, 0x04, 0x03, 0x8a, 0x03, 0x8a, 0x00, 0x01, +0x03, 0x8d, 0x03, 0x8d, 0x00, 0x01, 0x03, 0x8f, +0x03, 0x90, 0x00, 0x01, 0x03, 0x94, 0x03, 0x94, +0x00, 0x01, 0x03, 0x96, 0x03, 0x96, 0x00, 0x01, +0x03, 0x9c, 0x03, 0x9c, 0x00, 0x01, 0x03, 0xa1, +0x03, 0xa1, 0x00, 0x01, 0x03, 0xa4, 0x03, 0xa5, +0x00, 0x01, 0x03, 0xa9, 0x03, 0xa9, 0x00, 0x01, +0x03, 0xab, 0x03, 0xad, 0x00, 0x01, 0x03, 0xc2, +0x03, 0xc2, 0x00, 0x01, 0x03, 0xd2, 0x03, 0xd3, +0x00, 0x01, 0x03, 0xe1, 0x03, 0xe1, 0x00, 0x01, +0x03, 0xe4, 0x03, 0xe4, 0x00, 0x01, 0x03, 0xe7, +0x03, 0xe7, 0x00, 0x01, 0x03, 0xe9, 0x03, 0xea, +0x00, 0x01, 0x03, 0xee, 0x03, 0xee, 0x00, 0x01, +0x03, 0xf0, 0x03, 0xf0, 0x00, 0x01, 0x03, 0xf6, +0x03, 0xf6, 0x00, 0x01, 0x03, 0xfb, 0x03, 0xfb, +0x00, 0x01, 0x03, 0xfe, 0x03, 0xff, 0x00, 0x01, +0x04, 0x03, 0x04, 0x03, 0x00, 0x01, 0x04, 0x05, +0x04, 0x07, 0x00, 0x01, 0x04, 0x0c, 0x04, 0x0c, +0x00, 0x01, 0x04, 0x1c, 0x04, 0x1c, 0x00, 0x01, +0x04, 0x2c, 0x04, 0x2d, 0x00, 0x01, 0x04, 0x3b, +0x04, 0x3b, 0x00, 0x01, 0x04, 0xc3, 0x04, 0xdc, +0x00, 0x01, 0x04, 0xf2, 0x04, 0xf3, 0x00, 0x01, +0x05, 0x11, 0x05, 0x11, 0x00, 0x01, 0x05, 0x2a, +0x05, 0x2a, 0x00, 0x01, 0x05, 0x54, 0x05, 0x54, +0x00, 0x01, 0x05, 0x5a, 0x05, 0x5a, 0x00, 0x01, +0x05, 0x72, 0x05, 0x72, 0x00, 0x01, 0x05, 0x83, +0x05, 0x84, 0x00, 0x01, 0x05, 0x9e, 0x05, 0x9e, +0x00, 0x01, 0x05, 0xa1, 0x05, 0xa2, 0x00, 0x01, +0x05, 0xa5, 0x05, 0xa7, 0x00, 0x01, 0x05, 0xa9, +0x05, 0xaa, 0x00, 0x01, 0x05, 0xac, 0x05, 0xad, +0x00, 0x01, 0x05, 0xaf, 0x05, 0xaf, 0x00, 0x01, +0x05, 0xb1, 0x05, 0xb1, 0x00, 0x01, 0x05, 0xb3, +0x05, 0xb4, 0x00, 0x01, 0x05, 0xb6, 0x05, 0xb6, +0x00, 0x01, 0x05, 0xc1, 0x05, 0xc1, 0x00, 0x01, +0x05, 0xc3, 0x05, 0xc4, 0x00, 0x01, 0x05, 0xc6, +0x05, 0xc6, 0x00, 0x01, 0x05, 0xc8, 0x05, 0xc8, +0x00, 0x01, 0x05, 0xd1, 0x05, 0xd1, 0x00, 0x01, +0x07, 0x10, 0x07, 0x10, 0x00, 0x01, 0x07, 0x1a, +0x07, 0x1a, 0x00, 0x01, 0x07, 0x20, 0x07, 0x20, +0x00, 0x01, 0x07, 0x21, 0x07, 0x3e, 0x00, 0x03, +0x07, 0x40, 0x07, 0x69, 0x00, 0x03, 0x07, 0x6b, +0x07, 0x8f, 0x00, 0x03, 0x00, 0x02, 0x00, 0x21, +0x07, 0x21, 0x07, 0x21, 0x00, 0x01, 0x07, 0x23, +0x07, 0x24, 0x00, 0x01, 0x07, 0x26, 0x07, 0x27, +0x00, 0x01, 0x07, 0x29, 0x07, 0x29, 0x00, 0x01, +0x07, 0x2b, 0x07, 0x2b, 0x00, 0x01, 0x07, 0x2d, +0x07, 0x2d, 0x00, 0x01, 0x07, 0x2f, 0x07, 0x30, +0x00, 0x01, 0x07, 0x33, 0x07, 0x33, 0x00, 0x01, +0x07, 0x35, 0x07, 0x35, 0x00, 0x01, 0x07, 0x37, +0x07, 0x37, 0x00, 0x01, 0x07, 0x39, 0x07, 0x39, +0x00, 0x01, 0x07, 0x3b, 0x07, 0x3b, 0x00, 0x01, +0x07, 0x3d, 0x07, 0x3d, 0x00, 0x01, 0x07, 0x40, +0x07, 0x40, 0x00, 0x01, 0x07, 0x42, 0x07, 0x42, +0x00, 0x01, 0x07, 0x44, 0x07, 0x47, 0x00, 0x01, +0x07, 0x55, 0x07, 0x55, 0x00, 0x01, 0x07, 0x66, +0x07, 0x67, 0x00, 0x01, 0x07, 0x6b, 0x07, 0x6b, +0x00, 0x01, 0x07, 0x6d, 0x07, 0x6e, 0x00, 0x01, +0x07, 0x70, 0x07, 0x72, 0x00, 0x01, 0x07, 0x74, +0x07, 0x74, 0x00, 0x01, 0x07, 0x76, 0x07, 0x76, +0x00, 0x01, 0x07, 0x78, 0x07, 0x78, 0x00, 0x01, +0x07, 0x7a, 0x07, 0x7a, 0x00, 0x01, 0x07, 0x7c, +0x07, 0x7c, 0x00, 0x01, 0x07, 0x7e, 0x07, 0x7e, +0x00, 0x01, 0x07, 0x80, 0x07, 0x80, 0x00, 0x01, +0x07, 0x82, 0x07, 0x82, 0x00, 0x01, 0x07, 0x84, +0x07, 0x84, 0x00, 0x01, 0x07, 0x86, 0x07, 0x86, +0x00, 0x01, 0x07, 0x88, 0x07, 0x88, 0x00, 0x01, +0x07, 0x8a, 0x07, 0x8f, 0x00, 0x01, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xe4, +0x03, 0x52, 0x00, 0x04, 0x44, 0x46, 0x4c, 0x54, +0x00, 0x1a, 0x63, 0x79, 0x72, 0x6c, 0x00, 0x2c, +0x67, 0x72, 0x65, 0x6b, 0x00, 0x52, 0x6c, 0x61, +0x74, 0x6e, 0x00, 0x64, 0x00, 0x04, 0x00, 0x00, +0x00, 0x00, 0xff, 0xff, 0x00, 0x04, 0x00, 0x00, +0x00, 0x0a, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x0a, +0x00, 0x01, 0x53, 0x52, 0x42, 0x20, 0x00, 0x18, +0x00, 0x00, 0xff, 0xff, 0x00, 0x04, 0x00, 0x01, +0x00, 0x0b, 0x00, 0x15, 0x00, 0x1f, 0x00, 0x00, +0xff, 0xff, 0x00, 0x04, 0x00, 0x02, 0x00, 0x0c, +0x00, 0x16, 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, +0x00, 0x00, 0xff, 0xff, 0x00, 0x04, 0x00, 0x03, +0x00, 0x0d, 0x00, 0x17, 0x00, 0x21, 0x00, 0x22, +0x00, 0x05, 0x41, 0x5a, 0x45, 0x20, 0x00, 0x30, +0x43, 0x52, 0x54, 0x20, 0x00, 0x3e, 0x4e, 0x53, +0x4d, 0x20, 0x00, 0x4c, 0x53, 0x4b, 0x53, 0x20, +0x00, 0x5a, 0x54, 0x52, 0x4b, 0x20, 0x00, 0x68, +0x00, 0x00, 0xff, 0xff, 0x00, 0x04, 0x00, 0x04, +0x00, 0x0e, 0x00, 0x18, 0x00, 0x22, 0x00, 0x00, +0xff, 0xff, 0x00, 0x04, 0x00, 0x05, 0x00, 0x0f, +0x00, 0x19, 0x00, 0x23, 0x00, 0x00, 0xff, 0xff, +0x00, 0x04, 0x00, 0x06, 0x00, 0x10, 0x00, 0x1a, +0x00, 0x24, 0x00, 0x00, 0xff, 0xff, 0x00, 0x04, +0x00, 0x07, 0x00, 0x11, 0x00, 0x1b, 0x00, 0x25, +0x00, 0x00, 0xff, 0xff, 0x00, 0x04, 0x00, 0x08, +0x00, 0x12, 0x00, 0x1c, 0x00, 0x26, 0x00, 0x00, +0xff, 0xff, 0x00, 0x04, 0x00, 0x09, 0x00, 0x13, +0x00, 0x1d, 0x00, 0x27, 0x00, 0x28, 0x6b, 0x65, +0x72, 0x6e, 0x00, 0xf2, 0x6b, 0x65, 0x72, 0x6e, +0x00, 0xf8, 0x6b, 0x65, 0x72, 0x6e, 0x00, 0xfe, +0x6b, 0x65, 0x72, 0x6e, 0x01, 0x04, 0x6b, 0x65, +0x72, 0x6e, 0x01, 0x0a, 0x6b, 0x65, 0x72, 0x6e, +0x01, 0x10, 0x6b, 0x65, 0x72, 0x6e, 0x01, 0x16, +0x6b, 0x65, 0x72, 0x6e, 0x01, 0x1c, 0x6b, 0x65, +0x72, 0x6e, 0x01, 0x22, 0x6b, 0x65, 0x72, 0x6e, +0x01, 0x28, 0x6d, 0x61, 0x72, 0x6b, 0x01, 0x2e, +0x6d, 0x61, 0x72, 0x6b, 0x01, 0x44, 0x6d, 0x61, +0x72, 0x6b, 0x01, 0x5a, 0x6d, 0x61, 0x72, 0x6b, +0x01, 0x70, 0x6d, 0x61, 0x72, 0x6b, 0x01, 0x86, +0x6d, 0x61, 0x72, 0x6b, 0x01, 0x9c, 0x6d, 0x61, +0x72, 0x6b, 0x01, 0xb2, 0x6d, 0x61, 0x72, 0x6b, +0x01, 0xc8, 0x6d, 0x61, 0x72, 0x6b, 0x01, 0xde, +0x6d, 0x61, 0x72, 0x6b, 0x01, 0xf4, 0x6d, 0x6b, +0x6d, 0x6b, 0x02, 0x0a, 0x6d, 0x6b, 0x6d, 0x6b, +0x02, 0x10, 0x6d, 0x6b, 0x6d, 0x6b, 0x02, 0x16, +0x6d, 0x6b, 0x6d, 0x6b, 0x02, 0x1c, 0x6d, 0x6b, +0x6d, 0x6b, 0x02, 0x22, 0x6d, 0x6b, 0x6d, 0x6b, +0x02, 0x28, 0x6d, 0x6b, 0x6d, 0x6b, 0x02, 0x2e, +0x6d, 0x6b, 0x6d, 0x6b, 0x02, 0x34, 0x6d, 0x6b, +0x6d, 0x6b, 0x02, 0x3a, 0x6d, 0x6b, 0x6d, 0x6b, +0x02, 0x40, 0x73, 0x69, 0x7a, 0x65, 0x02, 0x46, +0x73, 0x69, 0x7a, 0x65, 0x02, 0x4a, 0x73, 0x69, +0x7a, 0x65, 0x02, 0x4e, 0x73, 0x69, 0x7a, 0x65, +0x02, 0x52, 0x73, 0x69, 0x7a, 0x65, 0x02, 0x56, +0x73, 0x69, 0x7a, 0x65, 0x02, 0x5a, 0x73, 0x69, +0x7a, 0x65, 0x02, 0x5e, 0x73, 0x69, 0x7a, 0x65, +0x02, 0x62, 0x73, 0x69, 0x7a, 0x65, 0x02, 0x66, +0x73, 0x69, 0x7a, 0x65, 0x02, 0x6a, 0x00, 0x00, +0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, +0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, +0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, +0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, +0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, +0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, +0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, +0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, +0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x00, +0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, +0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, +0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, +0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, +0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, +0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, +0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, +0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, +0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, +0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x00, +0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, +0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, +0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, +0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, +0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, +0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, +0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, +0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, +0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, +0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x00, +0x00, 0x01, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, +0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, +0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0x00, 0x00, +0x00, 0x01, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, +0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, +0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0x00, 0x00, +0x00, 0x01, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, +0x00, 0x09, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa4, +0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x9c, +0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x94, +0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x8c, +0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x84, +0x00, 0x00, 0x00, 0x0b, 0x00, 0x18, 0x00, 0x20, +0x00, 0x28, 0x00, 0x30, 0x00, 0x38, 0x00, 0x40, +0x00, 0x48, 0x00, 0x50, 0x00, 0x58, 0x00, 0x60, +0x00, 0x68, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, +0x00, 0x72, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, +0x04, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, +0x07, 0x30, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, +0x07, 0x4a, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, +0x07, 0xb6, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, +0x0b, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, +0x0b, 0x1c, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, +0x0b, 0x66, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, +0x0b, 0xca, 0x00, 0x06, 0x01, 0x00, 0x00, 0x01, +0x0c, 0x32, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, +0x0d, 0x12, 0x23, 0xd4, 0x24, 0xd6, 0x24, 0xf0, +0x25, 0xa0, 0x3e, 0x44, 0x66, 0xc2, 0x85, 0xfe, +0xb9, 0xae, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc5, 0xd0, +0xc6, 0x34, 0x00, 0x01, 0x00, 0x0c, 0x00, 0xce, +0x00, 0x30, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x00, 0x01, 0xca, 0x00, 0x00, +0x01, 0xca, 0x00, 0x83, 0x01, 0x0e, 0x01, 0x14, +0x01, 0x1a, 0x01, 0x20, 0x01, 0x26, 0x01, 0x2c, +0x01, 0x32, 0x01, 0x38, 0x01, 0x3e, 0x01, 0x44, +0x01, 0x14, 0x01, 0x4a, 0x01, 0x50, 0x01, 0x56, +0x01, 0x5c, 0x01, 0x56, 0x01, 0x1a, 0x01, 0x62, +0x01, 0x68, 0x01, 0x6e, 0x01, 0x74, 0x01, 0x7a, +0x01, 0x80, 0x01, 0x86, 0x01, 0x8c, 0x01, 0x92, +0x01, 0x0e, 0x01, 0x98, 0x01, 0x26, 0x01, 0x9e, +0x01, 0x9e, 0x01, 0x5c, 0x01, 0xa4, 0x01, 0x5c, +0x01, 0x5c, 0x01, 0xaa, 0x01, 0xb0, 0x01, 0x14, +0x01, 0x56, 0x01, 0x9e, 0x01, 0xb6, 0x01, 0xbc, +0x01, 0xc2, 0x01, 0xc8, 0x01, 0xb6, 0x01, 0xce, +0x01, 0xd4, 0x01, 0xda, 0x01, 0xc8, 0x01, 0xe0, +0x01, 0xe6, 0x01, 0xec, 0x01, 0xf2, 0x01, 0xf2, +0x01, 0x7a, 0x01, 0x74, 0x01, 0xf8, 0x01, 0x50, +0x01, 0x50, 0x01, 0x50, 0x01, 0x56, 0x01, 0x56, +0x01, 0xfe, 0x01, 0x5c, 0x02, 0x04, 0x02, 0x0a, +0x02, 0x10, 0x02, 0x0a, 0x01, 0x62, 0x01, 0x68, +0x01, 0x6e, 0x02, 0x16, 0x02, 0x1c, 0x01, 0x26, +0x01, 0x7a, 0x01, 0x80, 0x01, 0x8c, 0x02, 0x0a, +0x01, 0x92, 0x01, 0x92, 0x02, 0x22, 0x01, 0xb6, +0x02, 0x28, 0x01, 0xb6, 0x02, 0x16, 0x01, 0x38, +0x02, 0x2e, 0x02, 0x34, 0x02, 0x3a, 0x01, 0x9e, +0x02, 0x40, 0x02, 0x46, 0x01, 0xd4, 0x02, 0x4c, +0x02, 0x40, 0x02, 0x52, 0x01, 0x0e, 0x02, 0x58, +0x01, 0x26, 0x02, 0x5e, 0x02, 0x16, 0x02, 0x1c, +0x01, 0x5c, 0x01, 0x8c, 0x02, 0x64, 0x02, 0x6a, +0x02, 0x70, 0x02, 0x76, 0x02, 0x7c, 0x02, 0x82, +0x01, 0x1a, 0x01, 0x5c, 0x01, 0x7a, 0x01, 0x7a, +0x01, 0x5c, 0x02, 0x88, 0x02, 0x8e, 0x02, 0x94, +0x02, 0x9a, 0x02, 0xa0, 0x02, 0xa6, 0x02, 0xac, +0x02, 0xb2, 0x02, 0xb8, 0x02, 0xbe, 0x02, 0xc4, +0x02, 0xca, 0x02, 0xd0, 0x02, 0xd6, 0x02, 0xdc, +0x02, 0xe2, 0x00, 0x01, 0x00, 0x00, 0x01, 0xf8, +0x00, 0x01, 0x01, 0x07, 0x01, 0xf8, 0x00, 0x01, +0x00, 0x75, 0x02, 0xda, 0x00, 0x01, 0x01, 0x0d, +0x01, 0xf8, 0x00, 0x01, 0x01, 0x7f, 0x02, 0xda, +0x00, 0x01, 0x01, 0x05, 0x01, 0xf8, 0x00, 0x01, +0x00, 0xd6, 0x02, 0xe4, 0x00, 0x01, 0x00, 0xfb, +0x01, 0xf8, 0x00, 0x01, 0x00, 0x73, 0x02, 0xda, +0x00, 0x01, 0x00, 0x71, 0x02, 0xa6, 0x00, 0x01, +0x00, 0x74, 0x02, 0xa6, 0x00, 0x01, 0x00, 0x71, +0x02, 0xda, 0x00, 0x01, 0x01, 0x98, 0x01, 0xf8, +0x00, 0x01, 0x01, 0x1a, 0x01, 0xf8, 0x00, 0x01, +0x01, 0x0b, 0x01, 0xf8, 0x00, 0x01, 0x00, 0xc7, +0x01, 0xf8, 0x00, 0x01, 0x00, 0xd2, 0x01, 0xf8, +0x00, 0x01, 0x00, 0x81, 0x02, 0x79, 0x00, 0x01, +0x01, 0x09, 0x01, 0xf8, 0x00, 0x01, 0x00, 0xda, +0x01, 0xf8, 0x00, 0x01, 0x01, 0x56, 0x01, 0xf8, +0x00, 0x01, 0x00, 0xcb, 0x01, 0xf8, 0x00, 0x01, +0x00, 0xe5, 0x01, 0xf8, 0x00, 0x01, 0x00, 0xdc, +0x01, 0xf8, 0x00, 0x01, 0x01, 0x9e, 0x01, 0xf8, +0x00, 0x01, 0x00, 0x73, 0x01, 0xf8, 0x00, 0x01, +0x01, 0xc1, 0x01, 0xf8, 0x00, 0x01, 0x01, 0x09, +0x01, 0xf6, 0x00, 0x01, 0x01, 0x08, 0x01, 0xf8, +0x00, 0x01, 0x01, 0x10, 0x01, 0xf8, 0x00, 0x01, +0x01, 0x20, 0x01, 0xf8, 0x00, 0x01, 0x01, 0x0e, +0x01, 0xf8, 0x00, 0x01, 0x00, 0xea, 0x01, 0xf8, +0x00, 0x01, 0x00, 0xf4, 0x01, 0xf6, 0x00, 0x01, +0x00, 0xeb, 0x01, 0xf8, 0x00, 0x01, 0x00, 0xe1, +0x01, 0xf8, 0x00, 0x01, 0x00, 0xd6, 0x01, 0xf8, +0x00, 0x01, 0x00, 0xfd, 0x01, 0xf8, 0x00, 0x01, +0x00, 0x79, 0x01, 0xf8, 0x00, 0x01, 0x01, 0x15, +0x01, 0xf8, 0x00, 0x01, 0x00, 0x9c, 0x01, 0xf8, +0x00, 0x01, 0x01, 0x0c, 0x01, 0xf8, 0x00, 0x01, +0x01, 0x9f, 0x01, 0xf8, 0x00, 0x01, 0x00, 0xc1, +0x01, 0xf8, 0x00, 0x01, 0x00, 0x67, 0x01, 0xf8, +0x00, 0x01, 0x01, 0x17, 0x01, 0xf8, 0x00, 0x01, +0x01, 0x0a, 0x01, 0xf8, 0x00, 0x01, 0x00, 0xb2, +0x02, 0x04, 0x00, 0x01, 0x01, 0x0c, 0x01, 0xf6, +0x00, 0x01, 0x01, 0x14, 0x01, 0xf8, 0x00, 0x01, +0x00, 0xef, 0x01, 0xf8, 0x00, 0x01, 0x01, 0x19, +0x01, 0xf8, 0x00, 0x01, 0x01, 0x06, 0x01, 0xf8, +0x00, 0x01, 0x01, 0x21, 0x01, 0xf8, 0x00, 0x01, +0x01, 0x4c, 0x01, 0xf8, 0x00, 0x01, 0x00, 0xf8, +0x01, 0xf8, 0x00, 0x01, 0x00, 0xf9, 0x01, 0xf8, +0x00, 0x01, 0x01, 0x3e, 0x01, 0xf8, 0x00, 0x01, +0x01, 0x0f, 0x01, 0xf8, 0x00, 0x01, 0x00, 0xe7, +0x01, 0xf8, 0x00, 0x01, 0x01, 0x4b, 0x01, 0xf8, +0x00, 0x01, 0x00, 0xc8, 0x01, 0xf8, 0x00, 0x01, +0x01, 0x7b, 0x01, 0xf8, 0x00, 0x01, 0x00, 0xfc, +0x01, 0xf8, 0x00, 0x01, 0x00, 0xe1, 0x02, 0x32, +0x00, 0x01, 0x01, 0x0c, 0x02, 0x32, 0x00, 0x01, +0x01, 0x06, 0x02, 0x32, 0x00, 0x01, 0x00, 0xf7, +0x02, 0x32, 0x00, 0x01, 0x01, 0x21, 0x02, 0x32, +0x00, 0x01, 0x00, 0x78, 0x02, 0x32, 0x00, 0x01, +0x01, 0x19, 0x02, 0x32, 0x00, 0x01, 0x01, 0x38, +0x02, 0x32, 0x00, 0x01, 0x01, 0x26, 0x02, 0x32, +0x00, 0x01, 0x01, 0x1f, 0x02, 0x32, 0x00, 0x01, +0x01, 0x15, 0x02, 0x32, 0x00, 0x01, 0x00, 0xe3, +0x02, 0x32, 0x00, 0x01, 0x00, 0xc2, 0x02, 0x32, +0x00, 0x01, 0x01, 0x0b, 0x02, 0xc5, 0x00, 0x01, +0x01, 0x0b, 0x02, 0xbc, 0x00, 0x01, 0x01, 0x27, +0x01, 0xf8, 0x00, 0x01, 0xc3, 0x88, 0xc3, 0xca, +0x00, 0x01, 0x00, 0x0c, 0x00, 0x8a, 0x00, 0x1f, +0x00, 0x00, 0x01, 0x50, 0x00, 0x00, 0x01, 0x50, +0x00, 0x00, 0x01, 0x50, 0x00, 0x00, 0x01, 0x50, +0x00, 0x00, 0x01, 0x50, 0x00, 0x00, 0x01, 0x50, +0x00, 0x00, 0x01, 0x50, 0x00, 0x00, 0x01, 0x50, +0x00, 0x00, 0x01, 0x50, 0x00, 0x00, 0x01, 0x50, +0x00, 0x00, 0x01, 0x50, 0x00, 0x00, 0x01, 0x50, +0x00, 0x00, 0x01, 0x50, 0x00, 0x00, 0x01, 0x50, +0x00, 0x00, 0x01, 0x50, 0x00, 0x00, 0x01, 0x50, +0x00, 0x00, 0x01, 0x50, 0x00, 0x00, 0x01, 0x50, +0x00, 0x00, 0x01, 0x50, 0x00, 0x00, 0x01, 0x50, +0x00, 0x00, 0x01, 0x50, 0x00, 0x00, 0x01, 0x50, +0x00, 0x00, 0x01, 0x50, 0x00, 0x00, 0x01, 0x50, +0x00, 0x00, 0x01, 0x50, 0x00, 0x00, 0x01, 0x50, +0x00, 0x00, 0x01, 0x50, 0x00, 0x00, 0x01, 0x50, +0x00, 0x00, 0x01, 0x50, 0x00, 0x00, 0x01, 0x50, +0x00, 0x00, 0x01, 0x50, 0x00, 0x68, 0x00, 0xd8, +0x00, 0xde, 0x00, 0xe4, 0x00, 0xea, 0x00, 0xf0, +0x00, 0xf6, 0x00, 0xfc, 0x01, 0x02, 0x01, 0x08, +0x01, 0x0e, 0x01, 0x14, 0x01, 0x1a, 0x01, 0x20, +0x01, 0x26, 0x01, 0x2c, 0x01, 0x32, 0x01, 0x2c, +0x00, 0xf6, 0x01, 0x38, 0x01, 0x3e, 0x01, 0x44, +0x01, 0x4a, 0x01, 0x50, 0x01, 0x56, 0x01, 0x5c, +0x00, 0xde, 0x00, 0xd8, 0x01, 0x62, 0x00, 0xf0, +0x01, 0x08, 0x01, 0x68, 0x01, 0x6e, 0x01, 0x74, +0x01, 0x7a, 0x01, 0x44, 0x01, 0x02, 0x01, 0x80, +0x01, 0x86, 0x01, 0x8c, 0x01, 0x92, 0x01, 0x98, +0x01, 0x9e, 0x01, 0x9e, 0x00, 0xd8, 0x01, 0xa4, +0x00, 0xf0, 0x01, 0xaa, 0x01, 0xb0, 0x01, 0xb6, +0x01, 0x2c, 0x01, 0xbc, 0x01, 0x44, 0x00, 0xf0, +0x01, 0xc2, 0x01, 0x3e, 0x01, 0xc8, 0x01, 0xce, +0x01, 0x2c, 0x01, 0x5c, 0x01, 0x5c, 0x01, 0x2c, +0x01, 0xd4, 0x01, 0xda, 0x01, 0xe0, 0x01, 0xe6, +0x01, 0xec, 0x01, 0xf2, 0x01, 0xf8, 0x01, 0xfe, +0x02, 0x04, 0x02, 0x0a, 0x02, 0x10, 0x02, 0x16, +0x02, 0x1c, 0x02, 0x22, 0x02, 0x28, 0x02, 0x2e, +0x02, 0x28, 0x02, 0x34, 0x02, 0x3a, 0x02, 0x40, +0x02, 0x46, 0x02, 0x4c, 0x02, 0x52, 0x02, 0x58, +0x02, 0x5e, 0x02, 0x64, 0x01, 0xd4, 0x02, 0x6a, +0x01, 0xec, 0x02, 0x04, 0x02, 0x28, 0x02, 0x28, +0x02, 0x40, 0x02, 0x46, 0x02, 0x46, 0x01, 0x86, +0x01, 0xe0, 0x02, 0x70, 0x01, 0xec, 0x02, 0x76, +0x02, 0x7c, 0x02, 0x82, 0x02, 0x88, 0x00, 0x01, +0x00, 0x00, 0x02, 0xa9, 0x00, 0x01, 0x01, 0x07, +0x02, 0xa9, 0x00, 0x01, 0x01, 0x17, 0x02, 0xa9, +0x00, 0x01, 0x01, 0x41, 0x02, 0xa9, 0x00, 0x01, +0x01, 0x2e, 0x02, 0xa9, 0x00, 0x01, 0x01, 0x1b, +0x02, 0xa9, 0x00, 0x01, 0x01, 0x1d, 0x02, 0xa9, +0x00, 0x01, 0x01, 0x59, 0x02, 0xa9, 0x00, 0x01, +0x01, 0x3e, 0x02, 0xa9, 0x00, 0x01, 0x00, 0x78, +0x02, 0xa9, 0x00, 0x01, 0x01, 0x55, 0x02, 0xa9, +0x00, 0x01, 0x01, 0x32, 0x02, 0xa9, 0x00, 0x01, +0x00, 0x79, 0x02, 0xa9, 0x00, 0x01, 0x01, 0x60, +0x02, 0xa9, 0x00, 0x01, 0x01, 0x43, 0x02, 0xa9, +0x00, 0x01, 0x01, 0x46, 0x02, 0xa9, 0x00, 0x01, +0x01, 0x27, 0x02, 0xa9, 0x00, 0x01, 0x01, 0x0f, +0x02, 0xa9, 0x00, 0x01, 0x01, 0x04, 0x02, 0xa9, +0x00, 0x01, 0x01, 0x3c, 0x02, 0xa9, 0x00, 0x01, +0x00, 0xf5, 0x02, 0xa9, 0x00, 0x01, 0x01, 0x81, +0x02, 0xa9, 0x00, 0x01, 0x00, 0xf2, 0x02, 0xa9, +0x00, 0x01, 0x00, 0xdf, 0x02, 0xa9, 0x00, 0x01, +0x02, 0x44, 0x02, 0xb6, 0x00, 0x01, 0x01, 0x45, +0x02, 0xa9, 0x00, 0x01, 0x02, 0x15, 0x02, 0xa9, +0x00, 0x01, 0x01, 0x4a, 0x02, 0xa9, 0x00, 0x01, +0x01, 0x44, 0x02, 0xa9, 0x00, 0x01, 0x01, 0x53, +0x02, 0xa9, 0x00, 0x01, 0x01, 0x4f, 0x02, 0xa9, +0x00, 0x01, 0x01, 0x2d, 0x01, 0xf8, 0x00, 0x01, +0x00, 0x79, 0x02, 0x32, 0x00, 0x01, 0x00, 0xfa, +0x01, 0xf8, 0x00, 0x01, 0x00, 0x9c, 0x02, 0xa9, +0x00, 0x01, 0x01, 0x1f, 0x02, 0xa9, 0x00, 0x01, +0x01, 0x7b, 0x02, 0xa9, 0x00, 0x01, 0x01, 0x46, +0x02, 0xaa, 0x00, 0x01, 0x01, 0x38, 0x02, 0xaa, +0x00, 0x01, 0x00, 0xe9, 0x02, 0xa9, 0x00, 0x01, +0x01, 0x8a, 0x02, 0xa9, 0x00, 0x01, 0x01, 0xa9, +0x02, 0xa9, 0x00, 0x01, 0x01, 0x19, 0x02, 0xa9, +0x00, 0x01, 0x00, 0xe1, 0x02, 0x32, 0x00, 0x01, +0x01, 0x0c, 0x02, 0x32, 0x00, 0x01, 0x01, 0x20, +0x02, 0x44, 0x00, 0x01, 0x01, 0x14, 0x02, 0x32, +0x00, 0x01, 0x01, 0x06, 0x02, 0x32, 0x00, 0x01, +0x01, 0x08, 0x02, 0x32, 0x00, 0x01, 0x01, 0x2e, +0x02, 0x32, 0x00, 0x01, 0x01, 0x21, 0x02, 0x32, +0x00, 0x01, 0x00, 0x78, 0x02, 0x32, 0x00, 0x01, +0x01, 0x27, 0x02, 0x32, 0x00, 0x01, 0x01, 0x19, +0x02, 0x32, 0x00, 0x01, 0x00, 0x7e, 0x02, 0x32, +0x00, 0x01, 0x01, 0x38, 0x02, 0x32, 0x00, 0x01, +0x01, 0x26, 0x02, 0x32, 0x00, 0x01, 0x01, 0x1f, +0x02, 0x32, 0x00, 0x01, 0x01, 0x15, 0x02, 0x32, +0x00, 0x01, 0x01, 0x10, 0x02, 0x32, 0x00, 0x01, +0x00, 0xf4, 0x02, 0x32, 0x00, 0x01, 0x00, 0xe3, +0x02, 0x32, 0x00, 0x01, 0x01, 0x1d, 0x02, 0x32, +0x00, 0x01, 0x00, 0xd5, 0x02, 0x32, 0x00, 0x01, +0x01, 0x4c, 0x02, 0x32, 0x00, 0x01, 0x00, 0xd6, +0x02, 0x32, 0x00, 0x01, 0x00, 0xc2, 0x02, 0x32, +0x00, 0x01, 0x00, 0xf7, 0x02, 0x32, 0x00, 0x01, +0x01, 0xd9, 0x02, 0x32, 0x00, 0x01, 0x01, 0x0b, +0x02, 0x16, 0x00, 0x01, 0x02, 0x29, 0x02, 0xaa, +0x00, 0x01, 0x01, 0x23, 0x02, 0x16, 0x00, 0x01, +0x01, 0x16, 0x02, 0x16, 0x00, 0x01, 0x00, 0xcd, +0x02, 0x16, 0x00, 0x01, 0xc1, 0x86, 0xc1, 0x8c, +0x00, 0x01, 0x00, 0x0c, 0x00, 0x12, 0x00, 0x01, +0x00, 0x00, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x0a, +0x00, 0x01, 0x00, 0x00, 0x01, 0xf8, 0x00, 0x01, +0x01, 0xda, 0x01, 0xf8, 0x00, 0x01, 0xc1, 0x70, +0xc1, 0x78, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x16, +0x00, 0x02, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, +0x00, 0x26, 0x00, 0x0d, 0x00, 0x22, 0x00, 0x28, +0x00, 0x2e, 0x00, 0x34, 0x00, 0x3a, 0x00, 0x40, +0x00, 0x46, 0x00, 0x4c, 0x00, 0x52, 0x00, 0x52, +0x00, 0x52, 0x00, 0x46, 0x00, 0x58, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x53, +0x00, 0x00, 0x00, 0x01, 0x01, 0x0d, 0x00, 0x00, +0x00, 0x01, 0x01, 0x06, 0x00, 0x00, 0x00, 0x01, +0x01, 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0xda, +0x00, 0x00, 0x00, 0x01, 0x00, 0xce, 0x00, 0x00, +0x00, 0x01, 0x01, 0x1f, 0x00, 0x00, 0x00, 0x01, +0x00, 0xee, 0x00, 0x00, 0x00, 0x01, 0x00, 0xdb, +0x00, 0x00, 0x00, 0x01, 0x01, 0x27, 0x00, 0x00, +0x00, 0x01, 0xc1, 0x22, 0xc1, 0x44, 0x00, 0x01, +0x00, 0x0c, 0x00, 0x6a, 0x00, 0x17, 0x00, 0x00, +0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, +0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, +0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, +0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, +0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, +0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, +0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, +0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, +0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, +0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, +0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, +0x01, 0x80, 0x00, 0x90, 0x01, 0x28, 0x01, 0x2e, +0x01, 0x34, 0x01, 0x3a, 0x01, 0x40, 0x01, 0x46, +0x01, 0x34, 0x01, 0x4c, 0x01, 0x52, 0x01, 0x58, +0x01, 0x5e, 0x01, 0x64, 0x01, 0x6a, 0x01, 0x4c, +0x01, 0x70, 0x01, 0x76, 0x01, 0x3a, 0x01, 0x7c, +0x01, 0x82, 0x01, 0x88, 0x01, 0x8e, 0x01, 0x94, +0x01, 0x9a, 0x01, 0xa0, 0x01, 0xa6, 0x01, 0xac, +0x01, 0xb2, 0x01, 0xb8, 0x01, 0xbe, 0x01, 0xc4, +0x01, 0xca, 0x01, 0xd0, 0x01, 0xa6, 0x01, 0xd6, +0x01, 0xdc, 0x01, 0xe2, 0x01, 0xd6, 0x01, 0xe8, +0x01, 0xee, 0x01, 0xb8, 0x01, 0xf4, 0x01, 0xfa, +0x01, 0xd6, 0x02, 0x00, 0x02, 0x06, 0x02, 0x0c, +0x02, 0x00, 0x02, 0x12, 0x02, 0x18, 0x02, 0x1e, +0x02, 0x00, 0x02, 0x24, 0x01, 0x88, 0x01, 0x34, +0x02, 0x2a, 0x01, 0xd6, 0x01, 0xb8, 0x01, 0xa6, +0x01, 0xb2, 0x02, 0x30, 0x01, 0xa6, 0x01, 0xb2, +0x01, 0xbe, 0x02, 0x36, 0x02, 0x3c, 0x02, 0x42, +0x02, 0x48, 0x02, 0x4e, 0x02, 0x00, 0x02, 0x3c, +0x02, 0x54, 0x01, 0xbe, 0x02, 0x00, 0x02, 0x0c, +0x01, 0xa6, 0x02, 0x5a, 0x02, 0x60, 0x01, 0xe8, +0x01, 0xe8, 0x02, 0x66, 0x02, 0x6c, 0x02, 0x6c, +0x02, 0x6c, 0x01, 0xd6, 0x02, 0x3c, 0x02, 0x42, +0x02, 0x72, 0x02, 0x00, 0x02, 0x12, 0x01, 0xa0, +0x02, 0x78, 0x02, 0x7e, 0x02, 0x3c, 0x02, 0x84, +0x02, 0x8a, 0x02, 0x90, 0x01, 0xa6, 0x02, 0x4e, +0x02, 0x90, 0x02, 0x96, 0x01, 0xa0, 0x02, 0x9c, +0x02, 0xa2, 0x01, 0xee, 0x02, 0xa8, 0x01, 0x46, +0x02, 0xae, 0x02, 0xb4, 0x01, 0x52, 0x02, 0xba, +0x01, 0x64, 0x01, 0xe2, 0x02, 0xc0, 0x01, 0xbe, +0x02, 0xa2, 0x01, 0x76, 0x02, 0x30, 0x02, 0xc6, +0x02, 0xcc, 0x02, 0xd2, 0x02, 0xd8, 0x02, 0x96, +0x02, 0xde, 0x02, 0x78, 0x02, 0xe4, 0x02, 0xa2, +0x02, 0xcc, 0x02, 0xd2, 0x01, 0xa0, 0x02, 0x9c, +0x02, 0xa8, 0x02, 0xe4, 0x02, 0xb4, 0x01, 0x52, +0x01, 0x64, 0x02, 0xc0, 0x01, 0xbe, 0x02, 0xa2, +0x01, 0x76, 0x02, 0xcc, 0x02, 0x78, 0x02, 0xa2, +0x02, 0xa8, 0x01, 0x2e, 0x00, 0x01, 0x00, 0x00, +0xff, 0xea, 0x00, 0x01, 0x01, 0x07, 0xff, 0xea, +0x00, 0x01, 0x01, 0x27, 0xff, 0xea, 0x00, 0x01, +0x01, 0x53, 0xff, 0xea, 0x00, 0x01, 0x01, 0x2c, +0xff, 0xea, 0x00, 0x01, 0x01, 0x2b, 0xff, 0xea, +0x00, 0x01, 0x00, 0x79, 0xff, 0xea, 0x00, 0x01, +0x01, 0x3e, 0xff, 0xea, 0x00, 0x01, 0x00, 0x78, +0xff, 0xea, 0x00, 0x01, 0x00, 0xf4, 0xff, 0xea, +0x00, 0x01, 0x01, 0x45, 0xff, 0xea, 0x00, 0x01, +0x01, 0x20, 0xff, 0xea, 0x00, 0x01, 0x01, 0x62, +0xff, 0xea, 0x00, 0x01, 0x01, 0x46, 0xff, 0xea, +0x00, 0x01, 0x00, 0x7b, 0xff, 0xea, 0x00, 0x01, +0x01, 0x0d, 0xff, 0xea, 0x00, 0x01, 0x01, 0x06, +0xff, 0xea, 0x00, 0x01, 0x01, 0x3c, 0xff, 0xea, +0x00, 0x01, 0x00, 0xf8, 0xff, 0xea, 0x00, 0x01, +0x01, 0x85, 0xff, 0xea, 0x00, 0x01, 0x00, 0xef, +0xff, 0xea, 0x00, 0x01, 0x00, 0xe1, 0xff, 0xea, +0x00, 0x01, 0x01, 0x1a, 0xff, 0xea, 0x00, 0x01, +0x00, 0xf5, 0xff, 0xea, 0x00, 0x01, 0x01, 0x16, +0xff, 0xea, 0x00, 0x01, 0x01, 0x0b, 0xff, 0xea, +0x00, 0x01, 0x01, 0x26, 0xff, 0xea, 0x00, 0x01, +0x01, 0x02, 0xff, 0xea, 0x00, 0x01, 0x00, 0x7a, +0xff, 0xea, 0x00, 0x01, 0x00, 0xfa, 0xff, 0x1a, +0x00, 0x01, 0x00, 0x71, 0xff, 0xea, 0x00, 0x01, +0x00, 0x30, 0xff, 0x1b, 0x00, 0x01, 0x01, 0x01, +0xff, 0xea, 0x00, 0x01, 0x01, 0xa1, 0xff, 0xea, +0x00, 0x01, 0x01, 0x0f, 0xff, 0xea, 0x00, 0x01, +0x00, 0x6d, 0xff, 0x26, 0x00, 0x01, 0x01, 0xa7, +0xff, 0x26, 0x00, 0x01, 0x00, 0xda, 0xff, 0xea, +0x00, 0x01, 0x00, 0xc7, 0xff, 0xea, 0x00, 0x01, +0x01, 0x1b, 0xff, 0xea, 0x00, 0x01, 0x01, 0x56, +0xff, 0xea, 0x00, 0x01, 0x00, 0xcb, 0xff, 0xea, +0x00, 0x01, 0x00, 0xb8, 0xff, 0x0e, 0x00, 0x01, +0x01, 0x44, 0xff, 0xea, 0x00, 0x01, 0x01, 0xaa, +0xff, 0xea, 0x00, 0x01, 0x01, 0x12, 0xff, 0xea, +0x00, 0x01, 0x00, 0xf6, 0xff, 0xea, 0x00, 0x01, +0x01, 0x10, 0xff, 0xea, 0x00, 0x01, 0x01, 0x0a, +0xff, 0xea, 0x00, 0x01, 0x00, 0xe9, 0xff, 0xea, +0x00, 0x01, 0x00, 0xf7, 0xff, 0xea, 0x00, 0x01, +0x01, 0x09, 0xff, 0x1f, 0x00, 0x01, 0x00, 0x9c, +0xff, 0xea, 0x00, 0x01, 0x00, 0xfc, 0xff, 0xea, +0x00, 0x01, 0x01, 0xad, 0xff, 0xea, 0x00, 0x01, +0x00, 0x12, 0xff, 0xea, 0x00, 0x01, 0x01, 0x15, +0xff, 0xea, 0x00, 0x01, 0x00, 0xc0, 0xff, 0xea, +0x00, 0x01, 0x00, 0x9e, 0xff, 0xea, 0x00, 0x01, +0x01, 0x0c, 0xff, 0xea, 0x00, 0x01, 0x01, 0xb4, +0xff, 0x26, 0x00, 0x01, 0x00, 0x73, 0xff, 0xea, +0x00, 0x01, 0x01, 0x4c, 0xff, 0xea, 0x00, 0x01, +0x01, 0x17, 0xff, 0xea, 0x00, 0x01, 0x01, 0x1f, +0xff, 0xea, 0x00, 0x01, 0x01, 0x09, 0xff, 0xea, +0x00, 0x01, 0x01, 0x28, 0xff, 0xea, 0x00, 0x01, +0x01, 0x21, 0xff, 0xea, 0x00, 0x01, 0x00, 0xc8, +0xff, 0xea, 0x00, 0x01, 0x01, 0x38, 0xff, 0xea, +0x00, 0x01, 0x00, 0xfd, 0xff, 0xea, 0x00, 0x01, +0x00, 0xe3, 0xff, 0xea, 0x00, 0x01, 0x01, 0x1d, +0xff, 0xea, 0x00, 0x01, 0x00, 0xd5, 0xff, 0xea, +0x00, 0x01, 0x00, 0xde, 0xff, 0xea, 0x00, 0x01, +0x00, 0xfe, 0xff, 0xea, 0x00, 0x01, 0xbf, 0x02, +0xbd, 0xa2, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x12, +0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x01, +0x00, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf1, +0x00, 0x01, 0x01, 0x27, 0x00, 0xf1, 0x00, 0x01, +0xbe, 0xe6, 0xbe, 0xec, 0x00, 0x01, 0x00, 0x0c, +0x00, 0x12, 0x00, 0x01, 0x00, 0x00, 0x00, 0x16, +0x00, 0x07, 0x00, 0x16, 0x00, 0x1c, 0x00, 0x22, +0x00, 0x28, 0x00, 0x2e, 0x00, 0x34, 0x00, 0x3a, +0x00, 0x01, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x01, +0x01, 0xcb, 0x02, 0x89, 0x00, 0x01, 0x02, 0x02, +0x02, 0x9d, 0x00, 0x01, 0x01, 0x68, 0x01, 0xe0, +0x00, 0x01, 0x01, 0x90, 0x01, 0xea, 0x00, 0x01, +0x01, 0x9c, 0x01, 0xee, 0x00, 0x01, 0x01, 0xc1, +0x02, 0x0c, 0x00, 0x01, 0x01, 0x9a, 0x01, 0xe0, +0x00, 0x01, 0xbe, 0xac, 0xbe, 0xb2, 0x00, 0x01, +0x00, 0x0c, 0x00, 0x12, 0x00, 0x01, 0x00, 0x00, +0x00, 0x1e, 0x00, 0x0b, 0x00, 0x1e, 0x00, 0x24, +0x00, 0x2a, 0x00, 0x30, 0x00, 0x36, 0x00, 0x2a, +0x00, 0x3c, 0x00, 0x42, 0x00, 0x48, 0x00, 0x4e, +0x00, 0x54, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x01, 0x97, 0x00, 0x00, 0x00, 0x01, +0x01, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x88, +0x00, 0x00, 0x00, 0x01, 0x01, 0x3a, 0x00, 0x00, +0x00, 0x01, 0x01, 0x9c, 0x00, 0x00, 0x00, 0x01, +0x01, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0xe6, +0x00, 0x00, 0x00, 0x01, 0x00, 0xe9, 0x00, 0x00, +0x00, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, 0x01, +0x01, 0x27, 0x00, 0x00, 0x00, 0x01, 0xbe, 0x60, +0xbe, 0x66, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x12, +0x00, 0x01, 0x00, 0x00, 0x00, 0x22, 0x00, 0x0d, +0x00, 0x22, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x34, +0x00, 0x3a, 0x00, 0x40, 0x00, 0x40, 0x00, 0x46, +0x00, 0x4c, 0x00, 0x2e, 0x00, 0x52, 0x00, 0x58, +0x00, 0x52, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x01, 0xcb, 0x00, 0x00, 0x00, 0x01, +0x01, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5f, +0x00, 0x00, 0x00, 0x01, 0x01, 0x46, 0x00, 0x00, +0x00, 0x01, 0x01, 0x3c, 0x00, 0x00, 0x00, 0x01, +0x00, 0x83, 0x00, 0x00, 0x00, 0x01, 0x01, 0x6c, +0x00, 0x00, 0x00, 0x01, 0x01, 0x45, 0x00, 0x00, +0x00, 0x01, 0x01, 0x1f, 0x00, 0x00, 0x00, 0x01, +0x01, 0x1d, 0x00, 0x00, 0x00, 0x01, 0xb9, 0xc8, +0xbe, 0x14, 0x00, 0x01, 0x00, 0x0c, 0x00, 0xce, +0x00, 0x30, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, +0x00, 0xca, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x14, +0x00, 0x14, 0x00, 0x01, 0x00, 0x00, 0x01, 0xf8, +0x00, 0x01, 0x00, 0x00, 0x02, 0xd9, 0x00, 0x01, +0x00, 0x00, 0x02, 0xa8, 0x00, 0x01, 0xbd, 0x36, +0x00, 0x04, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x22, +0x01, 0x34, 0x01, 0x5e, 0x01, 0x68, 0x01, 0x6e, +0x01, 0x74, 0x01, 0x7a, 0x01, 0x80, 0x01, 0x86, +0x01, 0x8c, 0x02, 0x42, 0x04, 0xe0, 0x06, 0xaa, +0x07, 0xf0, 0x08, 0x3a, 0x08, 0x40, 0x09, 0xca, +0x0b, 0x54, 0x0b, 0x5a, 0x0b, 0x6c, 0x0b, 0x7a, +0x0b, 0x84, 0x0b, 0x8a, 0x0b, 0x90, 0x0b, 0xe6, +0x0b, 0xf8, 0x0c, 0x02, 0x0c, 0x14, 0x0c, 0x42, +0x0c, 0x68, 0x0c, 0x7e, 0x0c, 0x94, 0x0c, 0xba, +0x0c, 0xe0, 0x0c, 0xfe, 0x0d, 0x08, 0x0d, 0x12, +0x0d, 0x18, 0x0d, 0x3e, 0x0d, 0x64, 0x0d, 0x8a, +0x0d, 0xb0, 0x0d, 0xd6, 0x0d, 0xfc, 0x0e, 0x22, +0x0e, 0x48, 0x0e, 0x5a, 0x0e, 0x6c, 0x0e, 0x7e, +0x0e, 0x90, 0x0e, 0xa2, 0x0e, 0xb4, 0x0e, 0xba, +0x0e, 0xc4, 0x0e, 0xca, 0x0e, 0xd0, 0x0e, 0xd6, +0x0e, 0xdc, 0x0e, 0xe6, 0x0e, 0xec, 0x0e, 0xf2, +0x0e, 0xfc, 0x0f, 0x06, 0x0f, 0x0c, 0x0f, 0x12, +0x0f, 0x18, 0x0f, 0x1e, 0x0f, 0x24, 0x0f, 0x2e, +0x0f, 0x34, 0x0f, 0x3a, 0x0f, 0x40, 0x0f, 0x46, +0x0f, 0x70, 0x0f, 0x76, 0x0f, 0x7c, 0x0f, 0x82, +0x0f, 0x88, 0x0f, 0x8e, 0x0f, 0x9c, 0x0f, 0xa2, +0x0f, 0xb4, 0x0f, 0xde, 0x0f, 0xfc, 0x10, 0x16, +0x10, 0x30, 0x10, 0x4e, 0x10, 0x7c, 0x10, 0x92, +0x10, 0xa4, 0x10, 0xb6, 0x10, 0xbc, 0x10, 0xe2, +0x11, 0x00, 0x11, 0x1e, 0x11, 0x3c, 0x11, 0x56, +0x11, 0x80, 0x11, 0x9a, 0x11, 0xb0, 0x11, 0xfe, +0x12, 0x4c, 0x12, 0x52, 0x12, 0x58, 0x12, 0x5e, +0x12, 0x84, 0x12, 0xa6, 0x12, 0xac, 0x12, 0xb2, +0x12, 0xb8, 0x14, 0x22, 0x14, 0x34, 0x14, 0x46, +0x14, 0x4c, 0x14, 0x62, 0x14, 0x74, 0x14, 0x86, +0x14, 0x9c, 0x14, 0xb2, 0x14, 0xb8, 0x14, 0xd2, +0x14, 0xd8, 0x14, 0xde, 0x14, 0xf0, 0x15, 0x06, +0x15, 0x1c, 0x15, 0x32, 0x15, 0x3c, 0x15, 0x5e, +0x15, 0x7c, 0x15, 0x8e, 0x15, 0x9c, 0x15, 0xae, +0x15, 0xd8, 0x15, 0xee, 0x16, 0x00, 0x16, 0x0a, +0x16, 0x34, 0x16, 0x76, 0x16, 0x90, 0x00, 0x04, +0x01, 0x3f, 0x00, 0x25, 0x01, 0x40, 0x00, 0x27, +0x01, 0x41, 0x00, 0x27, 0x01, 0x42, 0x00, 0x25, +0x00, 0x0a, 0x01, 0x3d, 0x00, 0x14, 0x01, 0x3e, +0x00, 0x12, 0x01, 0x3f, 0x00, 0x3a, 0x01, 0x40, +0x00, 0x3d, 0x01, 0x41, 0x00, 0x3d, 0x01, 0x42, +0x00, 0x3a, 0x01, 0x43, 0x00, 0x37, 0x01, 0x44, +0x00, 0x12, 0x01, 0x47, 0x00, 0x12, 0x01, 0x48, +0x00, 0x3a, 0x00, 0x02, 0x04, 0x78, 0x00, 0x02, +0x04, 0x7a, 0x00, 0x02, 0x00, 0x01, 0x04, 0xb1, +0xff, 0xfe, 0x00, 0x01, 0x04, 0xb1, 0xff, 0xfe, +0x00, 0x01, 0x04, 0xb1, 0xff, 0xfe, 0x00, 0x01, +0x04, 0xb1, 0xff, 0xfe, 0x00, 0x01, 0x04, 0xb1, +0xff, 0xfe, 0x00, 0x01, 0x04, 0xb1, 0xff, 0xfe, +0x00, 0x2d, 0x00, 0x17, 0xff, 0xeb, 0x00, 0x19, +0xff, 0xf6, 0x00, 0x1a, 0xff, 0xff, 0x00, 0x1c, +0xff, 0xeb, 0x00, 0x37, 0xff, 0xf7, 0x00, 0xc7, +0xff, 0xeb, 0x00, 0xc8, 0xff, 0xeb, 0x00, 0xc9, +0xff, 0xeb, 0x00, 0xca, 0xff, 0xeb, 0x00, 0xcb, +0xff, 0xeb, 0x00, 0xcc, 0xff, 0xeb, 0x00, 0xe4, +0xff, 0xff, 0x00, 0xe5, 0xff, 0xff, 0x00, 0xe6, +0xff, 0xff, 0x00, 0xe7, 0xff, 0xff, 0x00, 0xe8, +0xff, 0xeb, 0x00, 0xe9, 0xff, 0xeb, 0x00, 0xea, +0xff, 0xeb, 0x00, 0xeb, 0xff, 0xeb, 0x00, 0xec, +0xff, 0xeb, 0x00, 0xed, 0xff, 0xeb, 0x00, 0xee, +0xff, 0xeb, 0x00, 0xef, 0xff, 0xeb, 0x01, 0xb6, +0xff, 0xf7, 0x01, 0xb7, 0xff, 0xf7, 0x01, 0xb8, +0xff, 0xf7, 0x01, 0xb9, 0xff, 0xf7, 0x01, 0xba, +0xff, 0xf7, 0x01, 0xfb, 0xff, 0xf7, 0x01, 0xfc, +0xff, 0xf7, 0x04, 0x7e, 0xff, 0xea, 0x04, 0x83, +0xff, 0xf6, 0x04, 0x85, 0xff, 0xf6, 0x04, 0x8c, +0xff, 0xf6, 0x04, 0x8d, 0xff, 0xf6, 0x04, 0x8e, +0xff, 0xf6, 0x04, 0x8f, 0xff, 0xf6, 0x04, 0x92, +0xff, 0xf6, 0x04, 0x93, 0xff, 0xf6, 0x04, 0xa3, +0xff, 0xc4, 0x04, 0xaa, 0xff, 0xea, 0x04, 0xac, +0xff, 0xea, 0x04, 0xad, 0xff, 0xea, 0x07, 0x0b, +0xff, 0xf6, 0x07, 0x0c, 0xff, 0xf6, 0x00, 0xa7, +0x00, 0x17, 0xff, 0xec, 0x00, 0x19, 0xff, 0xf5, +0x00, 0x1c, 0xff, 0xeb, 0x00, 0x1e, 0xff, 0xf6, +0x00, 0x20, 0xff, 0xfd, 0x00, 0x21, 0xff, 0xfd, +0x00, 0x22, 0xff, 0xfd, 0x00, 0x24, 0xff, 0xf6, +0x00, 0x2c, 0xff, 0xfd, 0x00, 0x2e, 0xff, 0xfd, +0x00, 0x33, 0x00, 0x09, 0x00, 0x34, 0x00, 0x09, +0x00, 0x35, 0x00, 0x0f, 0x00, 0xc7, 0xff, 0xec, +0x00, 0xc8, 0xff, 0xec, 0x00, 0xc9, 0xff, 0xec, +0x00, 0xca, 0xff, 0xec, 0x00, 0xcb, 0xff, 0xec, +0x00, 0xcc, 0xff, 0xec, 0x00, 0xe8, 0xff, 0xeb, +0x00, 0xe9, 0xff, 0xeb, 0x00, 0xea, 0xff, 0xeb, +0x00, 0xeb, 0xff, 0xeb, 0x00, 0xec, 0xff, 0xeb, +0x00, 0xed, 0xff, 0xeb, 0x00, 0xee, 0xff, 0xeb, +0x00, 0xef, 0xff, 0xeb, 0x00, 0xfa, 0xff, 0xf6, +0x00, 0xfb, 0xff, 0xf6, 0x00, 0xfc, 0xff, 0xf6, +0x00, 0xfd, 0xff, 0xf6, 0x00, 0xfe, 0xff, 0xf6, +0x00, 0xff, 0xff, 0xf6, 0x01, 0x00, 0xff, 0xf6, +0x01, 0x01, 0xff, 0xf6, 0x01, 0x02, 0xff, 0xf6, +0x01, 0x03, 0xff, 0xf6, 0x01, 0x04, 0xff, 0xf6, +0x01, 0x05, 0xff, 0xf6, 0x01, 0x06, 0xff, 0xf6, +0x01, 0x07, 0xff, 0xf6, 0x01, 0x08, 0xff, 0xf6, +0x01, 0x09, 0xff, 0xf6, 0x01, 0x0a, 0xff, 0xf6, +0x01, 0x0b, 0xff, 0xf6, 0x01, 0x0c, 0xff, 0xf6, +0x01, 0x0d, 0xff, 0xf6, 0x01, 0x0e, 0xff, 0xf6, +0x01, 0x0f, 0xff, 0xf6, 0x01, 0x10, 0xff, 0xf6, +0x01, 0x11, 0xff, 0xf6, 0x01, 0x12, 0xff, 0xf6, +0x01, 0x15, 0xff, 0xfd, 0x01, 0x16, 0xff, 0xfd, +0x01, 0x17, 0xff, 0xfd, 0x01, 0x18, 0xff, 0xfd, +0x01, 0x19, 0xff, 0xfd, 0x01, 0x1a, 0xff, 0xfd, +0x01, 0x1b, 0xff, 0xfd, 0x01, 0x1c, 0xff, 0xfd, +0x01, 0x1d, 0xff, 0xfd, 0x01, 0x1e, 0xff, 0xfd, +0x01, 0x1f, 0xff, 0xfd, 0x01, 0x20, 0xff, 0xfd, +0x01, 0x21, 0xff, 0xfd, 0x01, 0x22, 0xff, 0xfd, +0x01, 0x23, 0xff, 0xfd, 0x01, 0x24, 0xff, 0xfd, +0x01, 0x25, 0xff, 0xfd, 0x01, 0x26, 0xff, 0xfd, +0x01, 0x27, 0xff, 0xfd, 0x01, 0x28, 0xff, 0xfd, +0x01, 0x29, 0xff, 0xfd, 0x01, 0x2a, 0xff, 0xfd, +0x01, 0x2b, 0xff, 0xfd, 0x01, 0x2c, 0xff, 0xfd, +0x01, 0x2d, 0xff, 0xfd, 0x01, 0x2e, 0xff, 0xfd, +0x01, 0x2f, 0xff, 0xfd, 0x01, 0x30, 0xff, 0xf6, +0x01, 0x31, 0xff, 0xf6, 0x01, 0x32, 0xff, 0xf6, +0x01, 0x33, 0xff, 0xf6, 0x01, 0x34, 0xff, 0xf6, +0x01, 0x35, 0xff, 0xf6, 0x01, 0x36, 0xff, 0xf6, +0x01, 0x37, 0xff, 0xf6, 0x01, 0x63, 0xff, 0xfd, +0x01, 0x64, 0xff, 0xfd, 0x01, 0x65, 0xff, 0xfd, +0x01, 0x66, 0xff, 0xfd, 0x01, 0x67, 0xff, 0xfd, +0x01, 0x68, 0xff, 0xfd, 0x01, 0x69, 0xff, 0xfd, +0x01, 0x6a, 0xff, 0xfd, 0x01, 0x6b, 0xff, 0xfd, +0x01, 0x6c, 0xff, 0xfd, 0x01, 0x6d, 0xff, 0xfd, +0x01, 0x6e, 0xff, 0xfd, 0x01, 0x6f, 0xff, 0xfd, +0x01, 0x70, 0xff, 0xfd, 0x01, 0x71, 0xff, 0xfd, +0x01, 0x72, 0xff, 0xfd, 0x01, 0x73, 0xff, 0xfd, +0x01, 0x74, 0xff, 0xfd, 0x01, 0x75, 0xff, 0xfd, +0x01, 0x76, 0xff, 0xfd, 0x01, 0x77, 0xff, 0xfd, +0x01, 0x78, 0xff, 0xfd, 0x01, 0x79, 0xff, 0xfd, +0x01, 0x7a, 0xff, 0xfd, 0x01, 0x7b, 0xff, 0xfd, +0x01, 0x7c, 0xff, 0xfd, 0x01, 0xaa, 0x00, 0x09, +0x01, 0xab, 0x00, 0x09, 0x01, 0xac, 0x00, 0x09, +0x01, 0xad, 0x00, 0x09, 0x01, 0xc4, 0xff, 0xfd, +0x01, 0xc5, 0xff, 0xfd, 0x01, 0xc6, 0xff, 0xfd, +0x01, 0xc8, 0xff, 0xfd, 0x01, 0xd0, 0xff, 0xfd, +0x01, 0xd1, 0xff, 0xfd, 0x01, 0xd2, 0xff, 0xfd, +0x01, 0xe6, 0xff, 0xfd, 0x01, 0xe7, 0xff, 0xfd, +0x01, 0xe8, 0xff, 0xfd, 0x02, 0x17, 0xff, 0xfd, +0x02, 0x18, 0xff, 0xfd, 0x02, 0x19, 0xff, 0xfd, +0x02, 0x1a, 0xff, 0xfd, 0x02, 0x1b, 0xff, 0xfd, +0x02, 0x1c, 0xff, 0xfd, 0x02, 0x1d, 0xff, 0xfd, +0x02, 0x1e, 0xff, 0xfd, 0x02, 0x1f, 0xff, 0xfd, +0x02, 0x20, 0xff, 0xfd, 0x02, 0x21, 0xff, 0xfd, +0x02, 0x22, 0xff, 0xfd, 0x02, 0x23, 0xff, 0xfd, +0x02, 0x24, 0xff, 0xfd, 0x02, 0x25, 0xff, 0xfd, +0x02, 0x26, 0xff, 0xfd, 0x02, 0x27, 0xff, 0xfd, +0x02, 0x28, 0xff, 0xfd, 0x02, 0x29, 0xff, 0xfd, +0x02, 0x2a, 0xff, 0xfd, 0x02, 0x2b, 0xff, 0xfd, +0x02, 0x2c, 0xff, 0xfd, 0x02, 0x2d, 0xff, 0xfd, +0x02, 0x2e, 0xff, 0xfd, 0x02, 0x2f, 0xff, 0xfd, +0x02, 0x30, 0xff, 0xfd, 0x02, 0x31, 0xff, 0xfd, +0x02, 0x32, 0xff, 0xfd, 0x02, 0x33, 0xff, 0xfd, +0x02, 0x34, 0xff, 0xfd, 0x02, 0x35, 0xff, 0xfd, +0x02, 0x36, 0xff, 0xfd, 0x04, 0x8c, 0xff, 0xf5, +0x04, 0x8d, 0xff, 0xf5, 0x04, 0x8e, 0xff, 0xf5, +0x04, 0x8f, 0xff, 0xf5, 0x04, 0x92, 0xff, 0xf5, +0x04, 0x93, 0xff, 0xf5, 0x04, 0x94, 0xff, 0xf5, +0x04, 0xba, 0x00, 0x1d, 0x00, 0x72, 0x00, 0x0d, +0xff, 0xec, 0x00, 0x16, 0xff, 0xec, 0x00, 0x17, +0xff, 0xeb, 0x00, 0x19, 0xff, 0xf6, 0x00, 0x1a, +0xff, 0xf6, 0x00, 0x1c, 0xff, 0xec, 0x00, 0x1e, +0xff, 0xf1, 0x00, 0x23, 0xff, 0xff, 0x00, 0x24, +0xff, 0xf6, 0x00, 0x31, 0xff, 0xf5, 0x00, 0x33, +0x00, 0x0c, 0x00, 0x34, 0x00, 0x0c, 0x00, 0x35, +0xff, 0xfe, 0x00, 0x37, 0x00, 0x05, 0x00, 0x87, +0xff, 0xec, 0x00, 0xbf, 0xff, 0xec, 0x00, 0xc0, +0xff, 0xec, 0x00, 0xc1, 0xff, 0xec, 0x00, 0xc2, +0xff, 0xec, 0x00, 0xc3, 0xff, 0xec, 0x00, 0xc4, +0xff, 0xec, 0x00, 0xc5, 0xff, 0xec, 0x00, 0xc7, +0xff, 0xeb, 0x00, 0xc8, 0xff, 0xeb, 0x00, 0xc9, +0xff, 0xeb, 0x00, 0xca, 0xff, 0xeb, 0x00, 0xcb, +0xff, 0xeb, 0x00, 0xcc, 0xff, 0xeb, 0x00, 0xe4, +0xff, 0xf6, 0x00, 0xe5, 0xff, 0xf6, 0x00, 0xe6, +0xff, 0xf6, 0x00, 0xe7, 0xff, 0xf6, 0x00, 0xe8, +0xff, 0xec, 0x00, 0xe9, 0xff, 0xec, 0x00, 0xea, +0xff, 0xec, 0x00, 0xeb, 0xff, 0xec, 0x00, 0xec, +0xff, 0xec, 0x00, 0xed, 0xff, 0xec, 0x00, 0xee, +0xff, 0xec, 0x00, 0xef, 0xff, 0xec, 0x00, 0xfa, +0xff, 0xf1, 0x00, 0xfb, 0xff, 0xf1, 0x00, 0xfc, +0xff, 0xf1, 0x00, 0xfd, 0xff, 0xf1, 0x00, 0xfe, +0xff, 0xf1, 0x00, 0xff, 0xff, 0xf1, 0x01, 0x00, +0xff, 0xf1, 0x01, 0x01, 0xff, 0xf1, 0x01, 0x02, +0xff, 0xf1, 0x01, 0x03, 0xff, 0xf1, 0x01, 0x04, +0xff, 0xf1, 0x01, 0x05, 0xff, 0xf1, 0x01, 0x06, +0xff, 0xf1, 0x01, 0x07, 0xff, 0xf1, 0x01, 0x08, +0xff, 0xf1, 0x01, 0x09, 0xff, 0xf1, 0x01, 0x0a, +0xff, 0xf1, 0x01, 0x0b, 0xff, 0xf1, 0x01, 0x0c, +0xff, 0xf1, 0x01, 0x0d, 0xff, 0xf1, 0x01, 0x0e, +0xff, 0xf1, 0x01, 0x0f, 0xff, 0xf1, 0x01, 0x10, +0xff, 0xf1, 0x01, 0x11, 0xff, 0xf1, 0x01, 0x12, +0xff, 0xf1, 0x01, 0x30, 0xff, 0xf6, 0x01, 0x31, +0xff, 0xf6, 0x01, 0x32, 0xff, 0xf6, 0x01, 0x33, +0xff, 0xf6, 0x01, 0x34, 0xff, 0xf6, 0x01, 0x35, +0xff, 0xf6, 0x01, 0x36, 0xff, 0xf6, 0x01, 0x37, +0xff, 0xf6, 0x01, 0x8c, 0xff, 0xf5, 0x01, 0x8d, +0xff, 0xf5, 0x01, 0x8e, 0xff, 0xf5, 0x01, 0x8f, +0xff, 0xf5, 0x01, 0x90, 0xff, 0xf5, 0x01, 0x91, +0xff, 0xf5, 0x01, 0x92, 0xff, 0xf5, 0x01, 0xaa, +0x00, 0x0c, 0x01, 0xab, 0x00, 0x0c, 0x01, 0xac, +0x00, 0x0c, 0x01, 0xad, 0x00, 0x0c, 0x01, 0xb6, +0x00, 0x05, 0x01, 0xb7, 0x00, 0x05, 0x01, 0xb8, +0x00, 0x05, 0x01, 0xb9, 0x00, 0x05, 0x01, 0xba, +0x00, 0x05, 0x01, 0xf3, 0xff, 0xf5, 0x01, 0xfb, +0x00, 0x05, 0x01, 0xfc, 0x00, 0x05, 0x02, 0x04, +0xff, 0xff, 0x02, 0x07, 0xff, 0xff, 0x02, 0x08, +0xff, 0xff, 0x02, 0x40, 0xff, 0xff, 0x04, 0x83, +0xff, 0xf6, 0x04, 0x85, 0xff, 0xf6, 0x04, 0x88, +0x00, 0x07, 0x04, 0x8a, 0x00, 0x07, 0x04, 0x8c, +0x00, 0x09, 0x04, 0x8d, 0x00, 0x09, 0x04, 0x8e, +0x00, 0x09, 0x04, 0x8f, 0x00, 0x09, 0x04, 0x92, +0x00, 0x09, 0x04, 0x93, 0x00, 0x09, 0x04, 0xa1, +0xff, 0xf5, 0x04, 0xa3, 0xff, 0xd8, 0x04, 0xba, +0x00, 0x07, 0x04, 0xbb, 0xff, 0xf4, 0x07, 0x0b, +0xff, 0xf6, 0x07, 0x0c, 0xff, 0xf6, 0x07, 0x96, +0xff, 0xff, 0x07, 0x97, 0xff, 0xff, 0x00, 0x51, +0x00, 0x0d, 0xff, 0xd8, 0x00, 0x17, 0xff, 0xec, +0x00, 0x19, 0xff, 0xff, 0x00, 0x1c, 0xff, 0xfe, +0x00, 0x1d, 0xff, 0xff, 0x00, 0x1e, 0xff, 0xec, +0x00, 0x27, 0xff, 0xf6, 0x00, 0x37, 0xff, 0xeb, +0x00, 0x87, 0xff, 0xd8, 0x00, 0xc7, 0xff, 0xec, +0x00, 0xc8, 0xff, 0xec, 0x00, 0xc9, 0xff, 0xec, +0x00, 0xca, 0xff, 0xec, 0x00, 0xcb, 0xff, 0xec, +0x00, 0xcc, 0xff, 0xec, 0x00, 0xe8, 0xff, 0xfe, +0x00, 0xe9, 0xff, 0xfe, 0x00, 0xea, 0xff, 0xfe, +0x00, 0xeb, 0xff, 0xfe, 0x00, 0xec, 0xff, 0xfe, +0x00, 0xed, 0xff, 0xfe, 0x00, 0xee, 0xff, 0xfe, +0x00, 0xef, 0xff, 0xfe, 0x00, 0xf0, 0xff, 0xff, +0x00, 0xf1, 0xff, 0xff, 0x00, 0xf2, 0xff, 0xff, +0x00, 0xf3, 0xff, 0xff, 0x00, 0xf4, 0xff, 0xff, +0x00, 0xfa, 0xff, 0xec, 0x00, 0xfb, 0xff, 0xec, +0x00, 0xfc, 0xff, 0xec, 0x00, 0xfd, 0xff, 0xec, +0x00, 0xfe, 0xff, 0xec, 0x00, 0xff, 0xff, 0xec, +0x01, 0x00, 0xff, 0xec, 0x01, 0x01, 0xff, 0xec, +0x01, 0x02, 0xff, 0xec, 0x01, 0x03, 0xff, 0xec, +0x01, 0x04, 0xff, 0xec, 0x01, 0x05, 0xff, 0xec, +0x01, 0x06, 0xff, 0xec, 0x01, 0x07, 0xff, 0xec, +0x01, 0x08, 0xff, 0xec, 0x01, 0x09, 0xff, 0xec, +0x01, 0x0a, 0xff, 0xec, 0x01, 0x0b, 0xff, 0xec, +0x01, 0x0c, 0xff, 0xec, 0x01, 0x0d, 0xff, 0xec, +0x01, 0x0e, 0xff, 0xec, 0x01, 0x0f, 0xff, 0xec, +0x01, 0x10, 0xff, 0xec, 0x01, 0x11, 0xff, 0xec, +0x01, 0x12, 0xff, 0xec, 0x01, 0x4a, 0xff, 0xf6, +0x01, 0xb6, 0xff, 0xeb, 0x01, 0xb7, 0xff, 0xeb, +0x01, 0xb8, 0xff, 0xeb, 0x01, 0xb9, 0xff, 0xeb, +0x01, 0xba, 0xff, 0xeb, 0x01, 0xbe, 0xff, 0xf6, +0x01, 0xcf, 0xff, 0xf6, 0x01, 0xe3, 0xff, 0xf6, +0x01, 0xf1, 0xff, 0xf6, 0x01, 0xf2, 0xff, 0xf6, +0x01, 0xfb, 0xff, 0xeb, 0x01, 0xfc, 0xff, 0xeb, +0x04, 0x77, 0xff, 0xec, 0x04, 0x78, 0xff, 0xec, +0x04, 0x7b, 0xff, 0xec, 0x04, 0x86, 0xff, 0xec, +0x04, 0x87, 0xff, 0xec, 0x04, 0x8c, 0xff, 0xfe, +0x04, 0x8d, 0xff, 0xfe, 0x04, 0x8e, 0xff, 0xfe, +0x04, 0x8f, 0xff, 0xfe, 0x04, 0x92, 0xff, 0xfe, +0x04, 0x93, 0xff, 0xfe, 0x04, 0x9f, 0xff, 0xec, +0x04, 0xa3, 0xff, 0xf5, 0x04, 0xba, 0x00, 0x38, +0x04, 0xbb, 0x00, 0x12, 0x00, 0x12, 0x00, 0x17, +0xff, 0xec, 0x00, 0x19, 0xff, 0xf5, 0x00, 0x1c, +0xff, 0xe2, 0x00, 0xc7, 0xff, 0xec, 0x00, 0xc8, +0xff, 0xec, 0x00, 0xc9, 0xff, 0xec, 0x00, 0xca, +0xff, 0xec, 0x00, 0xcb, 0xff, 0xec, 0x00, 0xcc, +0xff, 0xec, 0x00, 0xe8, 0xff, 0xe2, 0x00, 0xe9, +0xff, 0xe2, 0x00, 0xea, 0xff, 0xe2, 0x00, 0xeb, +0xff, 0xe2, 0x00, 0xec, 0xff, 0xe2, 0x00, 0xed, +0xff, 0xe2, 0x00, 0xee, 0xff, 0xe2, 0x00, 0xef, +0xff, 0xe2, 0x04, 0xa3, 0xff, 0xe2, 0x00, 0x01, +0x06, 0x1f, 0xff, 0xec, 0x00, 0x62, 0x00, 0x0d, +0xff, 0xd4, 0x00, 0x1d, 0xff, 0xf6, 0x00, 0x1e, +0xff, 0xe9, 0x00, 0x24, 0xff, 0xf6, 0x00, 0x27, +0xff, 0xf7, 0x00, 0x30, 0xff, 0xf6, 0x00, 0x33, +0x00, 0x1b, 0x00, 0x34, 0x00, 0x12, 0x00, 0x37, +0xff, 0xf6, 0x00, 0x87, 0xff, 0xd4, 0x00, 0xf0, +0xff, 0xf6, 0x00, 0xf1, 0xff, 0xf6, 0x00, 0xf2, +0xff, 0xf6, 0x00, 0xf3, 0xff, 0xf6, 0x00, 0xf4, +0xff, 0xf6, 0x00, 0xfa, 0xff, 0xe9, 0x00, 0xfb, +0xff, 0xe9, 0x00, 0xfc, 0xff, 0xe9, 0x00, 0xfd, +0xff, 0xe9, 0x00, 0xfe, 0xff, 0xe9, 0x00, 0xff, +0xff, 0xe9, 0x01, 0x00, 0xff, 0xe9, 0x01, 0x01, +0xff, 0xe9, 0x01, 0x02, 0xff, 0xe9, 0x01, 0x03, +0xff, 0xe9, 0x01, 0x04, 0xff, 0xe9, 0x01, 0x05, +0xff, 0xe9, 0x01, 0x06, 0xff, 0xe9, 0x01, 0x07, +0xff, 0xe9, 0x01, 0x08, 0xff, 0xe9, 0x01, 0x09, +0xff, 0xe9, 0x01, 0x0a, 0xff, 0xe9, 0x01, 0x0b, +0xff, 0xe9, 0x01, 0x0c, 0xff, 0xe9, 0x01, 0x0d, +0xff, 0xe9, 0x01, 0x0e, 0xff, 0xe9, 0x01, 0x0f, +0xff, 0xe9, 0x01, 0x10, 0xff, 0xe9, 0x01, 0x11, +0xff, 0xe9, 0x01, 0x12, 0xff, 0xe9, 0x01, 0x30, +0xff, 0xf6, 0x01, 0x31, 0xff, 0xf6, 0x01, 0x32, +0xff, 0xf6, 0x01, 0x33, 0xff, 0xf6, 0x01, 0x34, +0xff, 0xf6, 0x01, 0x35, 0xff, 0xf6, 0x01, 0x36, +0xff, 0xf6, 0x01, 0x37, 0xff, 0xf6, 0x01, 0x4a, +0xff, 0xf7, 0x01, 0x84, 0xff, 0xf6, 0x01, 0x85, +0xff, 0xf6, 0x01, 0x86, 0xff, 0xf6, 0x01, 0x87, +0xff, 0xf6, 0x01, 0x88, 0xff, 0xf6, 0x01, 0x89, +0xff, 0xf6, 0x01, 0x8a, 0xff, 0xf6, 0x01, 0xaa, +0x00, 0x12, 0x01, 0xab, 0x00, 0x12, 0x01, 0xac, +0x00, 0x12, 0x01, 0xad, 0x00, 0x12, 0x01, 0xb6, +0xff, 0xf6, 0x01, 0xb7, 0xff, 0xf6, 0x01, 0xb8, +0xff, 0xf6, 0x01, 0xb9, 0xff, 0xf6, 0x01, 0xba, +0xff, 0xf6, 0x01, 0xbe, 0xff, 0xf7, 0x01, 0xcf, +0xff, 0xf7, 0x01, 0xe3, 0xff, 0xf7, 0x01, 0xf0, +0xff, 0xf6, 0x01, 0xf1, 0xff, 0xf7, 0x01, 0xf2, +0xff, 0xf7, 0x01, 0xfb, 0xff, 0xf6, 0x01, 0xfc, +0xff, 0xf6, 0x04, 0x77, 0xff, 0xd9, 0x04, 0x78, +0xff, 0xd9, 0x04, 0x7b, 0xff, 0xd9, 0x04, 0x82, +0x00, 0x28, 0x04, 0x83, 0xff, 0xfe, 0x04, 0x84, +0x00, 0x28, 0x04, 0x85, 0xff, 0xfe, 0x04, 0x86, +0xff, 0xd9, 0x04, 0x87, 0xff, 0xd9, 0x04, 0x88, +0xff, 0xec, 0x04, 0x8a, 0xff, 0xec, 0x04, 0x8c, +0xff, 0xeb, 0x04, 0x8d, 0xff, 0xeb, 0x04, 0x8e, +0xff, 0xeb, 0x04, 0x8f, 0xff, 0xeb, 0x04, 0x92, +0xff, 0xeb, 0x04, 0x93, 0xff, 0xeb, 0x04, 0x94, +0xff, 0xed, 0x04, 0x9f, 0xff, 0xd8, 0x04, 0xa1, +0x00, 0x12, 0x04, 0xba, 0x00, 0x4f, 0x07, 0x0a, +0x00, 0x28, 0x07, 0x0b, 0xff, 0xfe, 0x07, 0x0c, +0xff, 0xfe, 0x07, 0x0d, 0x00, 0x28, 0x00, 0x62, +0x00, 0x0d, 0xff, 0xd4, 0x00, 0x1d, 0xff, 0xf6, +0x00, 0x1e, 0xff, 0xe9, 0x00, 0x24, 0xff, 0xf6, +0x00, 0x27, 0xff, 0xf7, 0x00, 0x30, 0xff, 0xf6, +0x00, 0x33, 0x00, 0x1b, 0x00, 0x34, 0x00, 0x12, +0x00, 0x37, 0xff, 0xf6, 0x00, 0x87, 0xff, 0xd4, +0x00, 0xf0, 0xff, 0xf6, 0x00, 0xf1, 0xff, 0xf6, +0x00, 0xf2, 0xff, 0xf6, 0x00, 0xf3, 0xff, 0xf6, +0x00, 0xf4, 0xff, 0xf6, 0x00, 0xfa, 0xff, 0xe9, +0x00, 0xfb, 0xff, 0xe9, 0x00, 0xfc, 0xff, 0xe9, +0x00, 0xfd, 0xff, 0xe9, 0x00, 0xfe, 0xff, 0xe9, +0x00, 0xff, 0xff, 0xe9, 0x01, 0x00, 0xff, 0xe9, +0x01, 0x01, 0xff, 0xe9, 0x01, 0x02, 0xff, 0xe9, +0x01, 0x03, 0xff, 0xe9, 0x01, 0x04, 0xff, 0xe9, +0x01, 0x05, 0xff, 0xe9, 0x01, 0x06, 0xff, 0xe9, +0x01, 0x07, 0xff, 0xe9, 0x01, 0x08, 0xff, 0xe9, +0x01, 0x09, 0xff, 0xe9, 0x01, 0x0a, 0xff, 0xe9, +0x01, 0x0b, 0xff, 0xe9, 0x01, 0x0c, 0xff, 0xe9, +0x01, 0x0d, 0xff, 0xe9, 0x01, 0x0e, 0xff, 0xe9, +0x01, 0x0f, 0xff, 0xe9, 0x01, 0x10, 0xff, 0xe9, +0x01, 0x11, 0xff, 0xe9, 0x01, 0x12, 0xff, 0xe9, +0x01, 0x30, 0xff, 0xf6, 0x01, 0x31, 0xff, 0xf6, +0x01, 0x32, 0xff, 0xf6, 0x01, 0x33, 0xff, 0xf6, +0x01, 0x34, 0xff, 0xf6, 0x01, 0x35, 0xff, 0xf6, +0x01, 0x36, 0xff, 0xf6, 0x01, 0x37, 0xff, 0xf6, +0x01, 0x4a, 0xff, 0xf7, 0x01, 0x84, 0xff, 0xf6, +0x01, 0x85, 0xff, 0xf6, 0x01, 0x86, 0xff, 0xf6, +0x01, 0x87, 0xff, 0xf6, 0x01, 0x88, 0xff, 0xf6, +0x01, 0x89, 0xff, 0xf6, 0x01, 0x8a, 0xff, 0xf6, +0x01, 0xaa, 0x00, 0x12, 0x01, 0xab, 0x00, 0x12, +0x01, 0xac, 0x00, 0x12, 0x01, 0xad, 0x00, 0x12, +0x01, 0xb6, 0xff, 0xf6, 0x01, 0xb7, 0xff, 0xf6, +0x01, 0xb8, 0xff, 0xf6, 0x01, 0xb9, 0xff, 0xf6, +0x01, 0xba, 0xff, 0xf6, 0x01, 0xbe, 0xff, 0xf7, +0x01, 0xcf, 0xff, 0xf7, 0x01, 0xe3, 0xff, 0xf7, +0x01, 0xf0, 0xff, 0xf6, 0x01, 0xf1, 0xff, 0xf7, +0x01, 0xf2, 0xff, 0xf7, 0x01, 0xfb, 0xff, 0xf6, +0x01, 0xfc, 0xff, 0xf6, 0x04, 0x77, 0xff, 0xd9, +0x04, 0x78, 0xff, 0xd9, 0x04, 0x7b, 0xff, 0xd9, +0x04, 0x82, 0x00, 0x28, 0x04, 0x83, 0xff, 0xfe, +0x04, 0x84, 0x00, 0x28, 0x04, 0x85, 0xff, 0xfe, +0x04, 0x86, 0xff, 0xd9, 0x04, 0x87, 0xff, 0xd9, +0x04, 0x88, 0xff, 0xec, 0x04, 0x8a, 0xff, 0xec, +0x04, 0x8c, 0xff, 0xeb, 0x04, 0x8d, 0xff, 0xeb, +0x04, 0x8e, 0xff, 0xeb, 0x04, 0x8f, 0xff, 0xeb, +0x04, 0x92, 0xff, 0xeb, 0x04, 0x93, 0xff, 0xeb, +0x04, 0x94, 0xff, 0xed, 0x04, 0x9f, 0xff, 0xd8, +0x04, 0xa1, 0x00, 0x12, 0x04, 0xba, 0x00, 0x4f, +0x07, 0x0a, 0x00, 0x28, 0x07, 0x0b, 0xff, 0xfe, +0x07, 0x0c, 0xff, 0xfe, 0x07, 0x0d, 0x00, 0x28, +0x00, 0x01, 0x06, 0x1f, 0xff, 0xf5, 0x00, 0x04, +0x04, 0x9f, 0xff, 0xec, 0x04, 0xa3, 0xff, 0x9e, +0x04, 0xba, 0x00, 0x38, 0x04, 0xbb, 0xff, 0xe6, +0x00, 0x03, 0x04, 0xa3, 0xff, 0xb2, 0x04, 0xba, +0xff, 0xe8, 0x04, 0xbb, 0xff, 0xe8, 0x00, 0x02, +0x04, 0xba, 0x00, 0x38, 0x04, 0xbb, 0x00, 0x36, +0x00, 0x01, 0x06, 0x1f, 0xff, 0xe1, 0x00, 0x01, +0x00, 0x2d, 0x00, 0x26, 0x00, 0x15, 0x02, 0x6a, +0xff, 0xfc, 0x02, 0x81, 0xff, 0xec, 0x02, 0xee, +0xff, 0xa6, 0x02, 0xf0, 0xff, 0xa6, 0x02, 0xfa, +0xff, 0xca, 0x02, 0xfb, 0xff, 0xca, 0x02, 0xfc, +0xff, 0xca, 0x02, 0xfd, 0xff, 0xca, 0x03, 0x09, +0xff, 0xfe, 0x03, 0x0a, 0xff, 0xfe, 0x03, 0x0b, +0x00, 0x14, 0x03, 0x0c, 0xff, 0xea, 0x03, 0x11, +0x00, 0x22, 0x03, 0x12, 0x00, 0x22, 0x03, 0x13, +0x00, 0x04, 0x03, 0x1e, 0xff, 0xa6, 0x03, 0x20, +0xff, 0xa6, 0x03, 0x44, 0xff, 0xa6, 0x03, 0x46, +0xff, 0xa6, 0x03, 0x70, 0xff, 0xfc, 0x04, 0xb1, +0xff, 0xfa, 0x00, 0x04, 0x03, 0x0b, 0x00, 0x02, +0x03, 0x11, 0xff, 0xff, 0x03, 0x12, 0xff, 0xff, +0x03, 0x13, 0x00, 0x02, 0x00, 0x02, 0x03, 0x13, +0x00, 0x02, 0x03, 0x14, 0x00, 0x02, 0x00, 0x04, +0x03, 0x0b, 0xff, 0xff, 0x03, 0x11, 0xff, 0xff, +0x03, 0x12, 0xff, 0xff, 0x03, 0x13, 0xff, 0xff, +0x00, 0x0b, 0x02, 0xfa, 0xff, 0xfc, 0x02, 0xfb, +0xff, 0xfc, 0x02, 0xfc, 0xff, 0xfc, 0x02, 0xfd, +0xff, 0xfc, 0x03, 0x0a, 0xff, 0xfe, 0x03, 0x0b, +0x00, 0x14, 0x03, 0x0c, 0xff, 0xe5, 0x03, 0x11, +0x00, 0x10, 0x03, 0x12, 0x00, 0x10, 0x03, 0x13, +0x00, 0x02, 0x03, 0x14, 0x00, 0x04, 0x00, 0x09, +0x02, 0xfa, 0xff, 0xfc, 0x02, 0xfb, 0xff, 0xfc, +0x02, 0xfc, 0xff, 0xfc, 0x02, 0xfd, 0xff, 0xfc, +0x03, 0x0b, 0x00, 0x28, 0x03, 0x11, 0x00, 0x24, +0x03, 0x12, 0x00, 0x24, 0x03, 0x13, 0x00, 0x06, +0x03, 0x14, 0x00, 0x06, 0x00, 0x05, 0x03, 0x0b, +0x00, 0x14, 0x03, 0x11, 0x00, 0x12, 0x03, 0x12, +0x00, 0x12, 0x03, 0x13, 0x00, 0x04, 0x03, 0x14, +0x00, 0x04, 0x00, 0x05, 0x03, 0x0b, 0x00, 0x13, +0x03, 0x11, 0x00, 0x11, 0x03, 0x12, 0x00, 0x11, +0x03, 0x13, 0x00, 0x02, 0x03, 0x14, 0x00, 0x02, +0x00, 0x09, 0x02, 0xfa, 0xff, 0xfc, 0x02, 0xfb, +0xff, 0xfc, 0x02, 0xfc, 0xff, 0xfc, 0x02, 0xfd, +0xff, 0xfc, 0x03, 0x0b, 0x00, 0x28, 0x03, 0x11, +0x00, 0x24, 0x03, 0x12, 0x00, 0x24, 0x03, 0x13, +0x00, 0x06, 0x03, 0x14, 0x00, 0x06, 0x00, 0x09, +0x02, 0xfa, 0xff, 0xfc, 0x02, 0xfb, 0xff, 0xfc, +0x02, 0xfc, 0xff, 0xfc, 0x02, 0xfd, 0xff, 0xfc, +0x03, 0x0b, 0x00, 0x28, 0x03, 0x11, 0x00, 0x24, +0x03, 0x12, 0x00, 0x24, 0x03, 0x13, 0x00, 0x06, +0x03, 0x14, 0x00, 0x06, 0x00, 0x07, 0x03, 0x09, +0x00, 0x08, 0x03, 0x0a, 0x00, 0x08, 0x03, 0x0b, +0x00, 0x28, 0x03, 0x11, 0xff, 0xff, 0x03, 0x12, +0xff, 0xff, 0x03, 0x13, 0x00, 0x04, 0x04, 0x7a, +0x00, 0x1b, 0x00, 0x02, 0x04, 0x7a, 0x00, 0x1b, +0x04, 0xaf, 0xff, 0xfe, 0x00, 0x02, 0x04, 0x78, +0x00, 0x02, 0x04, 0x7a, 0x00, 0x02, 0x00, 0x01, +0x04, 0xaf, 0xff, 0xfc, 0x00, 0x09, 0x02, 0xfa, +0xff, 0xfc, 0x02, 0xfb, 0xff, 0xfc, 0x02, 0xfc, +0xff, 0xfc, 0x02, 0xfd, 0xff, 0xfc, 0x03, 0x0b, +0x00, 0x28, 0x03, 0x11, 0x00, 0x24, 0x03, 0x12, +0x00, 0x24, 0x03, 0x13, 0x00, 0x06, 0x03, 0x14, +0x00, 0x06, 0x00, 0x09, 0x02, 0xfa, 0xff, 0xfc, +0x02, 0xfb, 0xff, 0xfc, 0x02, 0xfc, 0xff, 0xfc, +0x02, 0xfd, 0xff, 0xfc, 0x03, 0x0b, 0x00, 0x28, +0x03, 0x11, 0x00, 0x24, 0x03, 0x12, 0x00, 0x24, +0x03, 0x13, 0x00, 0x06, 0x03, 0x14, 0x00, 0x06, +0x00, 0x09, 0x02, 0xfa, 0xff, 0xfc, 0x02, 0xfb, +0xff, 0xfc, 0x02, 0xfc, 0xff, 0xfc, 0x02, 0xfd, +0xff, 0xfc, 0x03, 0x0b, 0x00, 0x28, 0x03, 0x11, +0x00, 0x24, 0x03, 0x12, 0x00, 0x24, 0x03, 0x13, +0x00, 0x06, 0x03, 0x14, 0x00, 0x06, 0x00, 0x09, +0x02, 0xfa, 0xff, 0xfc, 0x02, 0xfb, 0xff, 0xfc, +0x02, 0xfc, 0xff, 0xfc, 0x02, 0xfd, 0xff, 0xfc, +0x03, 0x0b, 0x00, 0x28, 0x03, 0x11, 0x00, 0x24, +0x03, 0x12, 0x00, 0x24, 0x03, 0x13, 0x00, 0x06, +0x03, 0x14, 0x00, 0x06, 0x00, 0x09, 0x02, 0xfa, +0xff, 0xfc, 0x02, 0xfb, 0xff, 0xfc, 0x02, 0xfc, +0xff, 0xfc, 0x02, 0xfd, 0xff, 0xfc, 0x03, 0x0b, +0x00, 0x28, 0x03, 0x11, 0x00, 0x24, 0x03, 0x12, +0x00, 0x24, 0x03, 0x13, 0x00, 0x06, 0x03, 0x14, +0x00, 0x06, 0x00, 0x09, 0x02, 0xfa, 0xff, 0xfc, +0x02, 0xfb, 0xff, 0xfc, 0x02, 0xfc, 0xff, 0xfc, +0x02, 0xfd, 0xff, 0xfc, 0x03, 0x0b, 0x00, 0x28, +0x03, 0x11, 0x00, 0x24, 0x03, 0x12, 0x00, 0x24, +0x03, 0x13, 0x00, 0x06, 0x03, 0x14, 0x00, 0x06, +0x00, 0x09, 0x02, 0xfa, 0xff, 0xfc, 0x02, 0xfb, +0xff, 0xfc, 0x02, 0xfc, 0xff, 0xfc, 0x02, 0xfd, +0xff, 0xfc, 0x03, 0x0b, 0x00, 0x28, 0x03, 0x11, +0x00, 0x24, 0x03, 0x12, 0x00, 0x24, 0x03, 0x13, +0x00, 0x06, 0x03, 0x14, 0x00, 0x06, 0x00, 0x09, +0x02, 0xfa, 0xff, 0xfc, 0x02, 0xfb, 0xff, 0xfc, +0x02, 0xfc, 0xff, 0xfc, 0x02, 0xfd, 0xff, 0xfc, +0x03, 0x0b, 0x00, 0x28, 0x03, 0x11, 0x00, 0x24, +0x03, 0x12, 0x00, 0x24, 0x03, 0x13, 0x00, 0x06, +0x03, 0x14, 0x00, 0x06, 0x00, 0x04, 0x04, 0x83, +0xff, 0xfe, 0x04, 0x85, 0xff, 0xfe, 0x07, 0x0b, +0xff, 0xfe, 0x07, 0x0c, 0xff, 0xfe, 0x00, 0x04, +0x04, 0x83, 0xff, 0xfe, 0x04, 0x85, 0xff, 0xfe, +0x07, 0x0b, 0xff, 0xfe, 0x07, 0x0c, 0xff, 0xfe, +0x00, 0x04, 0x04, 0x83, 0xff, 0xfe, 0x04, 0x85, +0xff, 0xfe, 0x07, 0x0b, 0xff, 0xfe, 0x07, 0x0c, +0xff, 0xfe, 0x00, 0x04, 0x04, 0x83, 0xff, 0xfe, +0x04, 0x85, 0xff, 0xfe, 0x07, 0x0b, 0xff, 0xfe, +0x07, 0x0c, 0xff, 0xfe, 0x00, 0x04, 0x04, 0x83, +0xff, 0xfe, 0x04, 0x85, 0xff, 0xfe, 0x07, 0x0b, +0xff, 0xfe, 0x07, 0x0c, 0xff, 0xfe, 0x00, 0x04, +0x04, 0x83, 0xff, 0xfe, 0x04, 0x85, 0xff, 0xfe, +0x07, 0x0b, 0xff, 0xfe, 0x07, 0x0c, 0xff, 0xfe, +0x00, 0x01, 0x02, 0x77, 0x00, 0x24, 0x00, 0x02, +0x04, 0xb1, 0xff, 0xd6, 0x06, 0x01, 0xff, 0xca, +0x00, 0x01, 0x04, 0xaf, 0xff, 0xfc, 0x00, 0x01, +0x04, 0xb1, 0xff, 0xf3, 0x00, 0x01, 0x04, 0xaf, +0xff, 0xfc, 0x00, 0x01, 0x04, 0xaf, 0xff, 0xfc, +0x00, 0x02, 0x04, 0xb1, 0xff, 0xd6, 0x06, 0x01, +0xff, 0xca, 0x00, 0x01, 0x04, 0xb1, 0xff, 0xf3, +0x00, 0x01, 0x04, 0x0f, 0x00, 0x53, 0x00, 0x02, +0x04, 0xb1, 0xff, 0xd6, 0x06, 0x01, 0xff, 0xca, +0x00, 0x02, 0x04, 0xb1, 0xff, 0xd6, 0x06, 0x01, +0xff, 0xca, 0x00, 0x01, 0x04, 0xaf, 0xff, 0xfc, +0x00, 0x01, 0x04, 0xaf, 0xff, 0xfc, 0x00, 0x01, +0x04, 0xb1, 0xff, 0xf3, 0x00, 0x01, 0x04, 0xb1, +0xff, 0xf3, 0x00, 0x01, 0x04, 0xaf, 0xff, 0xfc, +0x00, 0x02, 0x04, 0x78, 0x00, 0x02, 0x04, 0x7a, +0x00, 0x02, 0x00, 0x01, 0x04, 0xaf, 0xff, 0xfc, +0x00, 0x01, 0x04, 0xaf, 0xff, 0xfc, 0x00, 0x01, +0x04, 0x10, 0x00, 0x0b, 0x00, 0x01, 0x04, 0x9a, +0x00, 0x12, 0x00, 0x0a, 0x04, 0x80, 0x00, 0x24, +0x04, 0x81, 0x00, 0x24, 0x04, 0x82, 0x00, 0x36, +0x04, 0x83, 0x00, 0x24, 0x04, 0x84, 0x00, 0x36, +0x04, 0x85, 0x00, 0x24, 0x07, 0x0a, 0x00, 0x36, +0x07, 0x0b, 0x00, 0x24, 0x07, 0x0c, 0x00, 0x24, +0x07, 0x0d, 0x00, 0x36, 0x00, 0x01, 0x03, 0xe8, +0x00, 0x24, 0x00, 0x01, 0x03, 0xe8, 0x00, 0x24, +0x00, 0x01, 0x04, 0xaf, 0xff, 0xfc, 0x00, 0x01, +0x04, 0x1f, 0xff, 0xfd, 0x00, 0x01, 0x04, 0x1f, +0xff, 0xfd, 0x00, 0x03, 0x03, 0xe8, 0x00, 0x24, +0x04, 0x78, 0x00, 0x02, 0x04, 0x7a, 0x00, 0x02, +0x00, 0x01, 0x04, 0xaf, 0xff, 0xfc, 0x00, 0x04, +0x04, 0x4e, 0xff, 0xf6, 0x04, 0x4f, 0xff, 0xf5, +0x04, 0x50, 0xff, 0xf6, 0x04, 0x54, 0xff, 0xeb, +0x00, 0x0a, 0x04, 0x4d, 0xff, 0xf6, 0x04, 0x4e, +0xff, 0xe3, 0x04, 0x4f, 0xff, 0xed, 0x04, 0x50, +0xff, 0xf6, 0x04, 0x51, 0xff, 0xd8, 0x04, 0x52, +0xff, 0xf6, 0x04, 0x53, 0xff, 0xed, 0x04, 0x54, +0xff, 0xe1, 0x04, 0x56, 0xff, 0xec, 0x06, 0xad, +0xff, 0xe1, 0x00, 0x07, 0x04, 0x4e, 0xff, 0xf6, +0x04, 0x4f, 0xff, 0xf6, 0x04, 0x50, 0xff, 0xf5, +0x04, 0x52, 0xff, 0xf6, 0x04, 0x54, 0xff, 0xf5, +0x04, 0x56, 0xff, 0xf6, 0x06, 0xad, 0xff, 0xf5, +0x00, 0x06, 0x04, 0x4e, 0xff, 0xec, 0x04, 0x4f, +0xff, 0xf6, 0x04, 0x50, 0xff, 0xf6, 0x04, 0x52, +0xff, 0xf4, 0x04, 0x54, 0xff, 0xec, 0x04, 0x56, +0xff, 0xf5, 0x00, 0x06, 0x04, 0x4e, 0xff, 0xea, +0x04, 0x4f, 0xff, 0xf6, 0x04, 0x50, 0xff, 0xf5, +0x04, 0x52, 0xff, 0xf6, 0x04, 0x54, 0xff, 0xeb, +0x04, 0x56, 0xff, 0xf5, 0x00, 0x07, 0x04, 0x4e, +0xff, 0xf4, 0x04, 0x4f, 0xff, 0xf5, 0x04, 0x50, +0xff, 0xf5, 0x04, 0x52, 0xff, 0xf6, 0x04, 0x54, +0xff, 0xec, 0x04, 0x56, 0xff, 0xf6, 0x06, 0xad, +0xff, 0xf5, 0x00, 0x0b, 0x04, 0x4d, 0xff, 0xeb, +0x04, 0x4e, 0xff, 0xed, 0x04, 0x4f, 0xff, 0xec, +0x04, 0x50, 0xff, 0xec, 0x04, 0x51, 0xff, 0xa5, +0x04, 0x52, 0xff, 0xe3, 0x04, 0x53, 0xff, 0xe2, +0x04, 0x54, 0xff, 0xed, 0x04, 0x55, 0xff, 0xe2, +0x04, 0x56, 0xff, 0xec, 0x06, 0xad, 0xff, 0xd6, +0x00, 0x05, 0x04, 0x4e, 0xff, 0xeb, 0x04, 0x50, +0xff, 0xf6, 0x04, 0x54, 0xff, 0xeb, 0x04, 0x56, +0xff, 0xeb, 0x06, 0xad, 0xff, 0xf5, 0x00, 0x04, +0x04, 0x4e, 0xff, 0xec, 0x04, 0x4f, 0xff, 0xf6, +0x04, 0x50, 0xff, 0xf5, 0x04, 0x54, 0xff, 0xeb, +0x00, 0x04, 0x04, 0x64, 0xff, 0xee, 0x04, 0x65, +0xff, 0xf6, 0x04, 0x66, 0xff, 0xf5, 0x04, 0x6a, +0xff, 0xec, 0x00, 0x01, 0x04, 0x6a, 0xff, 0xec, +0x00, 0x09, 0x04, 0x63, 0xff, 0xf6, 0x04, 0x64, +0xff, 0xe2, 0x04, 0x65, 0xff, 0xf6, 0x04, 0x66, +0xff, 0xeb, 0x04, 0x67, 0xff, 0xf4, 0x04, 0x68, +0xff, 0xeb, 0x04, 0x6a, 0xff, 0xe2, 0x04, 0x6c, +0xff, 0xf6, 0x06, 0xad, 0xff, 0xf3, 0x00, 0x07, +0x04, 0x64, 0xff, 0xf6, 0x04, 0x65, 0xff, 0xf6, +0x04, 0x66, 0xff, 0xf5, 0x04, 0x68, 0xff, 0xf5, +0x04, 0x6a, 0xff, 0xec, 0x04, 0x6c, 0xff, 0xf3, +0x06, 0xad, 0xff, 0xf5, 0x00, 0x07, 0x04, 0x64, +0xff, 0xeb, 0x04, 0x65, 0xff, 0xf6, 0x04, 0x66, +0xff, 0xeb, 0x04, 0x68, 0xff, 0xeb, 0x04, 0x6a, +0xff, 0xe2, 0x04, 0x6c, 0xff, 0xeb, 0x06, 0xad, +0xff, 0xeb, 0x00, 0x07, 0x04, 0x64, 0xff, 0xe2, +0x04, 0x65, 0xff, 0xf6, 0x04, 0x66, 0xff, 0xf5, +0x04, 0x68, 0xff, 0xf5, 0x04, 0x6a, 0xff, 0xe1, +0x04, 0x6c, 0xff, 0xf5, 0x06, 0xad, 0xff, 0xf6, +0x00, 0x06, 0x04, 0x64, 0xff, 0xeb, 0x04, 0x65, +0xff, 0xf6, 0x04, 0x66, 0xff, 0xf5, 0x04, 0x68, +0xff, 0xf5, 0x04, 0x6a, 0xff, 0xe1, 0x04, 0x6c, +0xff, 0xf6, 0x00, 0x0a, 0x04, 0x63, 0xff, 0xeb, +0x04, 0x64, 0xff, 0xec, 0x04, 0x65, 0xff, 0xf6, +0x04, 0x66, 0xff, 0xf6, 0x04, 0x67, 0xff, 0xd7, +0x04, 0x68, 0xff, 0xeb, 0x04, 0x69, 0xff, 0xf6, +0x04, 0x6a, 0xff, 0xec, 0x04, 0x6c, 0xff, 0xf6, +0x06, 0xad, 0xff, 0xec, 0x00, 0x06, 0x04, 0x64, +0xff, 0xeb, 0x04, 0x65, 0xff, 0xf6, 0x04, 0x66, +0xff, 0xf6, 0x04, 0x68, 0xff, 0xf6, 0x04, 0x6a, +0xff, 0xeb, 0x04, 0x6c, 0xff, 0xf5, 0x00, 0x05, +0x04, 0x64, 0xff, 0xec, 0x04, 0x65, 0xff, 0xf6, +0x04, 0x66, 0xff, 0xf6, 0x04, 0x68, 0xff, 0xf6, +0x04, 0x6a, 0xff, 0xe2, 0x00, 0x13, 0x02, 0x59, +0x00, 0x04, 0x02, 0x5a, 0x00, 0x38, 0x02, 0x5b, +0x00, 0x26, 0x02, 0x5c, 0x00, 0x38, 0x02, 0x5e, +0x00, 0x26, 0x02, 0x5f, 0x00, 0x14, 0x02, 0x61, +0x00, 0x26, 0x02, 0x8c, 0x00, 0x04, 0x02, 0x97, +0x00, 0x24, 0x02, 0x98, 0x00, 0x38, 0x02, 0x9f, +0x00, 0x24, 0x02, 0xa0, 0x00, 0x38, 0x02, 0xa9, +0x00, 0x24, 0x02, 0xaa, 0x00, 0x38, 0x02, 0xb5, +0x00, 0x12, 0x02, 0xb6, 0x00, 0x26, 0x02, 0xbe, +0x00, 0x14, 0x02, 0xc6, 0x00, 0x12, 0x02, 0xc7, +0x00, 0x26, 0x00, 0x13, 0x02, 0x59, 0x00, 0x04, +0x02, 0x5a, 0x00, 0x38, 0x02, 0x5b, 0x00, 0x26, +0x02, 0x5c, 0x00, 0x38, 0x02, 0x5e, 0x00, 0x26, +0x02, 0x5f, 0x00, 0x14, 0x02, 0x61, 0x00, 0x26, +0x02, 0x8c, 0x00, 0x04, 0x02, 0x97, 0x00, 0x24, +0x02, 0x98, 0x00, 0x38, 0x02, 0x9f, 0x00, 0x24, +0x02, 0xa0, 0x00, 0x38, 0x02, 0xa9, 0x00, 0x24, +0x02, 0xaa, 0x00, 0x38, 0x02, 0xb5, 0x00, 0x12, +0x02, 0xb6, 0x00, 0x26, 0x02, 0xbe, 0x00, 0x14, +0x02, 0xc6, 0x00, 0x12, 0x02, 0xc7, 0x00, 0x26, +0x00, 0x01, 0x05, 0xc9, 0xff, 0xfe, 0x00, 0x01, +0x05, 0xc9, 0xff, 0xfe, 0x00, 0x01, 0x05, 0xc9, +0xff, 0xfe, 0x00, 0x09, 0x01, 0x3d, 0x00, 0x04, +0x01, 0x3f, 0x00, 0x4c, 0x01, 0x40, 0x00, 0x4c, +0x01, 0x41, 0x00, 0x4c, 0x01, 0x42, 0x00, 0x4c, +0x01, 0x43, 0x00, 0x4c, 0x01, 0x48, 0x00, 0x4c, +0x01, 0x4a, 0x00, 0x4c, 0x01, 0x91, 0x00, 0x36, +0x00, 0x08, 0x03, 0x8e, 0xff, 0xd8, 0x03, 0x99, +0xff, 0xec, 0x03, 0xb8, 0xff, 0xec, 0x03, 0xe8, +0xff, 0xea, 0x03, 0xf3, 0xff, 0xea, 0x04, 0x12, +0xff, 0xea, 0x05, 0xc2, 0xff, 0xea, 0x05, 0xc9, +0xff, 0xfe, 0x00, 0x01, 0x05, 0xc9, 0xff, 0xfe, +0x00, 0x01, 0x05, 0xc9, 0xff, 0xfe, 0x00, 0x01, +0x04, 0x78, 0x00, 0x02, 0x00, 0x5a, 0x04, 0x77, +0xff, 0xae, 0x04, 0x78, 0xff, 0xae, 0x04, 0x7b, +0xff, 0xae, 0x04, 0x86, 0xff, 0xae, 0x04, 0x87, +0xff, 0xae, 0x04, 0xc3, 0xff, 0xd9, 0x04, 0xc5, +0xff, 0xe3, 0x04, 0xc9, 0xff, 0xe3, 0x04, 0xcc, +0xff, 0x8a, 0x04, 0xd1, 0xff, 0xe3, 0x04, 0xd3, +0xff, 0xe3, 0x04, 0xd5, 0xff, 0xda, 0x04, 0xdc, +0xff, 0xdb, 0x04, 0xdd, 0xff, 0xd9, 0x04, 0xde, +0xff, 0xd9, 0x04, 0xdf, 0xff, 0xd9, 0x04, 0xe0, +0xff, 0xd9, 0x04, 0xe1, 0xff, 0xd9, 0x04, 0xe2, +0xff, 0xd9, 0x04, 0xe3, 0xff, 0xd9, 0x04, 0xe4, +0xff, 0xd9, 0x04, 0xe5, 0xff, 0xd9, 0x04, 0xe6, +0xff, 0xd9, 0x04, 0xe7, 0xff, 0xd9, 0x04, 0xe8, +0xff, 0xd9, 0x04, 0xe9, 0xff, 0xd9, 0x04, 0xea, +0xff, 0xd9, 0x04, 0xeb, 0xff, 0xd9, 0x04, 0xec, +0xff, 0xd9, 0x04, 0xed, 0xff, 0xd9, 0x04, 0xee, +0xff, 0xd9, 0x04, 0xef, 0xff, 0xd9, 0x04, 0xf0, +0xff, 0xd9, 0x04, 0xf1, 0xff, 0xd9, 0x04, 0xf2, +0xff, 0xd9, 0x04, 0xf8, 0xff, 0xe3, 0x04, 0xf9, +0xff, 0xe3, 0x04, 0xfa, 0xff, 0xe3, 0x04, 0xfb, +0xff, 0xe3, 0x04, 0xfc, 0xff, 0xe3, 0x05, 0x13, +0xff, 0xe3, 0x05, 0x14, 0xff, 0xe3, 0x05, 0x15, +0xff, 0xe3, 0x05, 0x16, 0xff, 0xe3, 0x05, 0x17, +0xff, 0xe3, 0x05, 0x18, 0xff, 0xe3, 0x05, 0x19, +0xff, 0xe3, 0x05, 0x1a, 0xff, 0xe3, 0x05, 0x1b, +0xff, 0xe3, 0x05, 0x2c, 0xff, 0x8a, 0x05, 0x43, +0xff, 0xe3, 0x05, 0x44, 0xff, 0xe3, 0x05, 0x45, +0xff, 0xe3, 0x05, 0x46, 0xff, 0xe3, 0x05, 0x47, +0xff, 0xe3, 0x05, 0x48, 0xff, 0xe3, 0x05, 0x49, +0xff, 0xe3, 0x05, 0x4a, 0xff, 0xe3, 0x05, 0x4b, +0xff, 0xe3, 0x05, 0x4c, 0xff, 0xe3, 0x05, 0x4d, +0xff, 0xe3, 0x05, 0x4e, 0xff, 0xe3, 0x05, 0x4f, +0xff, 0xe3, 0x05, 0x50, 0xff, 0xe3, 0x05, 0x51, +0xff, 0xe3, 0x05, 0x52, 0xff, 0xe3, 0x05, 0x53, +0xff, 0xe3, 0x05, 0x54, 0xff, 0xe3, 0x05, 0x55, +0xff, 0xe3, 0x05, 0x56, 0xff, 0xe3, 0x05, 0x57, +0xff, 0xe3, 0x05, 0x58, 0xff, 0xe3, 0x05, 0x59, +0xff, 0xe3, 0x05, 0x5a, 0xff, 0xe3, 0x05, 0x5b, +0xff, 0xe3, 0x05, 0x5c, 0xff, 0xe3, 0x05, 0x64, +0xff, 0xda, 0x05, 0x65, 0xff, 0xda, 0x05, 0x66, +0xff, 0xda, 0x05, 0x67, 0xff, 0xda, 0x05, 0x68, +0xff, 0xda, 0x05, 0x69, 0xff, 0xda, 0x05, 0x6a, +0xff, 0xda, 0x05, 0x6b, 0xff, 0xda, 0x05, 0x96, +0xff, 0xdb, 0x05, 0x97, 0xff, 0xdb, 0x05, 0x98, +0xff, 0xdb, 0x05, 0x99, 0xff, 0xdb, 0x05, 0x9a, +0xff, 0xdb, 0x06, 0x1f, 0xff, 0xcf, 0x00, 0x04, +0x05, 0xd8, 0xff, 0xe1, 0x05, 0xe0, 0xff, 0xe1, +0x05, 0xea, 0xff, 0xe1, 0x05, 0xf7, 0xff, 0xe1, +0x00, 0x04, 0x05, 0xd8, 0xff, 0xe1, 0x05, 0xe0, +0xff, 0xe1, 0x05, 0xea, 0xff, 0xe1, 0x05, 0xf7, +0xff, 0xe1, 0x00, 0x01, 0x04, 0xb1, 0xff, 0xd8, +0x00, 0x05, 0x04, 0xaf, 0xff, 0xfe, 0x05, 0xd8, +0xff, 0xee, 0x05, 0xe0, 0xff, 0xf7, 0x05, 0xea, +0xff, 0xf7, 0x05, 0xf7, 0xff, 0xee, 0x00, 0x04, +0x05, 0xd8, 0xff, 0xe1, 0x05, 0xe0, 0xff, 0xe1, +0x05, 0xea, 0xff, 0xe1, 0x05, 0xf7, 0xff, 0xe1, +0x00, 0x04, 0x05, 0xd8, 0xff, 0xf7, 0x05, 0xe0, +0xff, 0xf7, 0x05, 0xea, 0xff, 0xf7, 0x05, 0xf7, +0xff, 0xf7, 0x00, 0x05, 0x04, 0xaf, 0xff, 0xfe, +0x05, 0xd8, 0xff, 0xee, 0x05, 0xe0, 0xff, 0xf7, +0x05, 0xea, 0xff, 0xf7, 0x05, 0xf7, 0xff, 0xee, +0x00, 0x05, 0x04, 0xaf, 0xff, 0xfe, 0x05, 0xd8, +0xff, 0xee, 0x05, 0xe0, 0xff, 0xf7, 0x05, 0xea, +0xff, 0xf7, 0x05, 0xf7, 0xff, 0xee, 0x00, 0x01, +0x04, 0xb1, 0xff, 0xd8, 0x00, 0x06, 0x04, 0x9a, +0x00, 0x12, 0x04, 0x9c, 0x00, 0x12, 0x04, 0x9e, +0x00, 0x12, 0x04, 0xaf, 0x00, 0x12, 0x04, 0xb1, +0x00, 0x12, 0x04, 0xb3, 0x00, 0x12, 0x00, 0x01, +0x04, 0xb1, 0xff, 0xd8, 0x00, 0x01, 0x04, 0xb1, +0xff, 0xd8, 0x00, 0x04, 0x05, 0xd8, 0xff, 0xe1, +0x05, 0xe0, 0xff, 0xe1, 0x05, 0xea, 0xff, 0xe1, +0x05, 0xf7, 0xff, 0xe1, 0x00, 0x05, 0x04, 0xaf, +0xff, 0xfe, 0x05, 0xd8, 0xff, 0xee, 0x05, 0xe0, +0xff, 0xf7, 0x05, 0xea, 0xff, 0xf7, 0x05, 0xf7, +0xff, 0xee, 0x00, 0x05, 0x05, 0xd8, 0xff, 0xf7, +0x05, 0xe0, 0xff, 0xf7, 0x05, 0xea, 0xff, 0xf7, +0x05, 0xf7, 0xff, 0xf7, 0x06, 0x1b, 0xff, 0xfd, +0x00, 0x05, 0x04, 0xaf, 0xff, 0xfe, 0x05, 0xd8, +0xff, 0xee, 0x05, 0xe0, 0xff, 0xf7, 0x05, 0xea, +0xff, 0xf7, 0x05, 0xf7, 0xff, 0xee, 0x00, 0x02, +0x06, 0x0c, 0xff, 0xf7, 0x06, 0x12, 0xff, 0xf1, +0x00, 0x08, 0x06, 0x0b, 0xff, 0xf7, 0x06, 0x0d, +0xff, 0xf6, 0x06, 0x0e, 0xff, 0xfa, 0x06, 0x0f, +0xff, 0xe7, 0x06, 0x11, 0xff, 0xf0, 0x06, 0x12, +0xff, 0xf4, 0x06, 0x13, 0xff, 0xf2, 0x06, 0x14, +0xff, 0xf0, 0x00, 0x07, 0x06, 0x0c, 0xff, 0xf0, +0x06, 0x0e, 0xff, 0xf6, 0x06, 0x0f, 0xff, 0xdb, +0x06, 0x10, 0xff, 0xf6, 0x06, 0x11, 0xff, 0xf5, +0x06, 0x12, 0xff, 0xed, 0x06, 0x13, 0xff, 0xed, +0x00, 0x04, 0x06, 0x0c, 0xff, 0xf8, 0x06, 0x0e, +0xff, 0xf5, 0x06, 0x11, 0xff, 0xf6, 0x06, 0x12, +0xff, 0xed, 0x00, 0x03, 0x06, 0x0c, 0xff, 0xf4, +0x06, 0x10, 0xff, 0xf6, 0x06, 0x12, 0xff, 0xed, +0x00, 0x04, 0x06, 0x0c, 0xff, 0xf5, 0x06, 0x11, +0xff, 0xf7, 0x06, 0x12, 0xff, 0xf5, 0x06, 0x14, +0xff, 0xf6, 0x00, 0x0a, 0x06, 0x0b, 0xff, 0xf5, +0x06, 0x0c, 0xff, 0xf6, 0x06, 0x0d, 0xff, 0xf5, +0x06, 0x0e, 0xff, 0xf5, 0x06, 0x0f, 0xff, 0xd3, +0x06, 0x10, 0xff, 0xe7, 0x06, 0x11, 0xff, 0xed, +0x06, 0x13, 0xff, 0xed, 0x06, 0x14, 0xff, 0xf6, +0x06, 0x1f, 0xff, 0xf4, 0x00, 0x05, 0x06, 0x0c, +0xff, 0xef, 0x06, 0x0d, 0xff, 0xf6, 0x06, 0x0e, +0xff, 0xf6, 0x06, 0x12, 0xff, 0xf1, 0x06, 0x14, +0xff, 0xf6, 0x00, 0x04, 0x06, 0x0c, 0xff, 0xf0, +0x06, 0x0d, 0xff, 0xf6, 0x06, 0x0e, 0xff, 0xf6, +0x06, 0x12, 0xff, 0xe8, 0x00, 0x02, 0x06, 0x0d, +0xff, 0xf5, 0x06, 0x12, 0xff, 0xf4, 0x00, 0x0a, +0x04, 0x4e, 0xff, 0xea, 0x04, 0x4f, 0xff, 0xf6, +0x04, 0x54, 0xff, 0xde, 0x04, 0x56, 0xff, 0xf3, +0x04, 0x64, 0xff, 0xeb, 0x04, 0x65, 0xff, 0xf4, +0x04, 0x66, 0xff, 0xf3, 0x04, 0x68, 0xff, 0xf3, +0x04, 0x6a, 0xff, 0xd7, 0x04, 0x6c, 0xff, 0xfd, +0x00, 0x10, 0x04, 0x4d, 0xff, 0xf6, 0x04, 0x4e, +0xff, 0xed, 0x04, 0x4f, 0xff, 0xeb, 0x04, 0x50, +0xff, 0xeb, 0x04, 0x51, 0xff, 0x9b, 0x04, 0x52, +0xff, 0xeb, 0x04, 0x53, 0xff, 0xe4, 0x04, 0x54, +0xff, 0xec, 0x04, 0x55, 0xff, 0xed, 0x04, 0x56, +0xff, 0xf6, 0x04, 0x63, 0xff, 0xeb, 0x04, 0x64, +0xff, 0xe2, 0x04, 0x69, 0xff, 0xe2, 0x04, 0x6a, +0xff, 0xe1, 0x04, 0x6b, 0xff, 0xeb, 0x04, 0x6c, +0xff, 0xf6, 0x00, 0x06, 0x04, 0x4f, 0xff, 0xf6, +0x04, 0x50, 0xff, 0xf6, 0x04, 0x65, 0xff, 0xf6, +0x04, 0x66, 0xff, 0xeb, 0x04, 0x68, 0xff, 0xf6, +0x04, 0x6a, 0xff, 0xeb, 0x00, 0x0c, 0x04, 0x4e, +0x00, 0x09, 0x04, 0x4f, 0x00, 0x1e, 0x04, 0x50, +0x00, 0x1e, 0x04, 0x51, 0xff, 0xec, 0x04, 0x52, +0x00, 0x1e, 0x04, 0x64, 0xff, 0xf6, 0x04, 0x65, +0x00, 0x1d, 0x04, 0x66, 0x00, 0x14, 0x04, 0x67, +0x00, 0x14, 0x04, 0x68, 0x00, 0x14, 0x04, 0x6b, +0x00, 0x0a, 0x04, 0x6c, 0xff, 0xf6, 0x00, 0x02, +0xa7, 0x90, 0x00, 0x04, 0x00, 0x00, 0xa9, 0xf2, +0xaa, 0x32, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x00, +0xff, 0xec, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf5, +0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0x00, 0x06, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfa, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, +0x00, 0x02, 0xa6, 0xa8, 0x00, 0x04, 0x00, 0x00, +0xaa, 0x0c, 0xaa, 0x10, 0x00, 0x01, 0x00, 0x05, +0x00, 0x00, 0xff, 0xf5, 0xff, 0xec, 0xff, 0xec, +0xff, 0xed, 0x00, 0x02, 0xa6, 0x94, 0x00, 0x04, +0x00, 0x00, 0xaa, 0x12, 0xaa, 0x2e, 0x00, 0x05, +0x00, 0x10, 0x00, 0x00, 0xff, 0xeb, 0x00, 0x0b, +0x00, 0x0b, 0xff, 0xf4, 0xff, 0xe2, 0xff, 0xf4, +0xff, 0xe2, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0x00, 0x0b, +0x00, 0x0b, 0xff, 0xf4, 0xff, 0xe2, 0xff, 0xf4, +0xff, 0xe2, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xcb, 0xff, 0xc6, 0xff, 0xd8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xf5, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x0f, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xf5, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x0f, 0x00, 0x02, 0xa5, 0xf2, 0x00, 0x04, +0x00, 0x00, 0xaa, 0x60, 0xaa, 0xfa, 0x00, 0x1a, +0x00, 0x79, 0x00, 0x00, 0x00, 0x13, 0xff, 0xf4, +0xff, 0xfa, 0xff, 0xb0, 0xff, 0xe6, 0xff, 0xc8, +0xff, 0xdc, 0xff, 0xc4, 0x00, 0x1b, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xb2, 0xff, 0xb0, 0xff, 0x9e, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0xff, 0xeb, 0xff, 0xe1, +0xff, 0xf5, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xe3, +0xff, 0xec, 0xff, 0xe1, 0xff, 0xd6, 0xff, 0xd4, +0xff, 0xe2, 0xff, 0xd8, 0xff, 0xf5, 0xff, 0xeb, +0x00, 0x07, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xec, +0xff, 0xd6, 0xff, 0xf3, 0xff, 0xf6, 0xff, 0xea, +0xff, 0xf3, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xec, +0xff, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe3, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0xff, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xe3, 0x00, 0x00, 0x00, 0x00, +0x00, 0x08, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf5, +0xff, 0xec, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe2, 0xff, 0xf4, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xb7, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x9e, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0xff, 0xc6, +0x00, 0x4e, 0xff, 0xa0, 0x00, 0x12, 0xff, 0xa0, +0xff, 0xb2, 0xff, 0xdb, 0x00, 0x26, 0xff, 0xeb, +0x00, 0x4e, 0xff, 0xa0, 0xff, 0xdb, 0xff, 0xec, +0xff, 0xc6, 0xff, 0xf6, 0xff, 0xdb, 0x00, 0x12, +0xff, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, +0xff, 0xd8, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xf7, +0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0xff, 0xf5, 0xff, 0xd4, 0xff, 0xe2, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, +0xff, 0xf4, 0xff, 0xf6, 0xff, 0xd4, 0xff, 0xf4, +0xff, 0xd8, 0xff, 0xeb, 0xff, 0xe2, 0xff, 0xf4, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xed, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf7, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xed, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0xff, 0xdb, 0xff, 0xdb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xed, +0x00, 0x00, 0xff, 0xed, 0x00, 0x09, 0x00, 0x00, +0xff, 0xf5, 0xff, 0xd8, 0xff, 0xc8, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0xff, 0xc3, 0x00, 0x00, +0xff, 0xc3, 0xff, 0xd7, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xc3, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd7, 0xff, 0xf6, 0xff, 0xec, +0x00, 0x00, 0xff, 0xd8, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0xff, 0xc8, 0xff, 0xec, 0xff, 0xeb, +0xff, 0xeb, 0xff, 0xec, 0xff, 0xec, 0xff, 0xeb, +0xff, 0xf4, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xec, +0xff, 0xec, 0xff, 0xea, 0xff, 0xf5, 0xff, 0xed, +0xff, 0xd6, 0xff, 0xe1, 0xff, 0xd7, 0xff, 0xeb, +0xff, 0xeb, 0xff, 0xec, 0xff, 0xec, 0xff, 0xd7, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf5, +0xff, 0xf6, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xd7, 0x00, 0x43, +0xff, 0xae, 0x00, 0x00, 0xff, 0xae, 0xff, 0xbc, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +0xff, 0xae, 0xff, 0xe1, 0x00, 0x00, 0xff, 0xd7, +0x00, 0x00, 0xff, 0xe1, 0x00, 0x00, 0xff, 0xbc, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd2, 0xff, 0xec, 0x00, 0x00, +0xff, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd2, 0x00, 0x00, 0xff, 0xe6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd2, 0xff, 0xec, 0x00, 0x00, +0xff, 0xe6, 0x00, 0x00, 0xff, 0xf3, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf3, 0x00, 0x00, 0xff, 0xe8, +0xff, 0xf3, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xe8, +0xff, 0xd2, 0xff, 0xf3, 0xff, 0xeb, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, +0xff, 0xf5, 0xff, 0xec, 0xff, 0xc6, 0xff, 0xf5, +0xff, 0xec, 0xff, 0xec, 0xff, 0xd8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x12, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0xff, 0xc6, 0xff, 0xd8, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xda, 0xff, 0xed, 0xff, 0xec, 0x00, 0x09, +0x00, 0x00, 0x00, 0x1b, 0x00, 0x12, 0x00, 0x12, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xda, 0x00, 0x00, 0xff, 0xed, +0x00, 0x00, 0xff, 0xc6, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x08, +0x00, 0x1b, 0xff, 0xc6, 0x00, 0x08, 0x00, 0x09, +0x00, 0x12, 0xff, 0xec, 0x00, 0x08, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xda, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xda, 0xff, 0xed, 0xff, 0xec, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x26, 0x00, 0x1d, +0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xda, 0x00, 0x00, +0xff, 0xed, 0x00, 0x00, 0xff, 0xb2, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x09, 0x00, 0x26, 0xff, 0xb2, 0x00, 0x09, +0x00, 0x0a, 0x00, 0x1d, 0xff, 0xec, 0x00, 0x09, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xda, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xed, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xd0, 0xff, 0xed, +0xff, 0xec, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1d, +0x00, 0x0b, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd0, +0x00, 0x00, 0xff, 0xed, 0x00, 0x00, 0xff, 0x9e, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x9e, +0x00, 0x00, 0x00, 0x0a, 0x00, 0x0b, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xed, +0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xba, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x24, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xd7, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd7, 0x00, 0x11, 0xff, 0xeb, +0xff, 0xd7, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xeb, +0x00, 0x00, 0xff, 0xd7, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x24, 0xff, 0xb0, 0x00, 0x4a, +0x00, 0x24, 0xff, 0xb0, 0xff, 0xf5, 0x00, 0x11, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe8, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf1, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xd8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0x00, 0x02, +0x8d, 0x86, 0x00, 0x04, 0x00, 0x00, 0x99, 0xc2, +0x9e, 0x40, 0x00, 0x4b, 0x00, 0x45, 0x00, 0x00, +0xff, 0xf5, 0xff, 0xeb, 0xff, 0xf6, 0xff, 0xeb, +0xff, 0xf6, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xbc, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd6, 0x00, 0x00, 0x00, 0x0a, +0xff, 0xf7, 0xff, 0xe2, 0xff, 0xf6, 0xff, 0xf6, +0xff, 0xf7, 0x00, 0x08, 0xff, 0xf6, 0xff, 0xf8, +0x00, 0x14, 0x00, 0x14, 0xff, 0xed, 0xff, 0xea, +0xff, 0xdb, 0xff, 0xd8, 0xff, 0xd0, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0xff, 0xd4, +0xff, 0xf5, 0xff, 0xf5, 0xff, 0xc9, 0xff, 0x9c, +0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x0b, +0x00, 0x13, 0x00, 0x13, 0x00, 0x14, 0x00, 0x12, +0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x1c, 0xff, 0xf7, 0xff, 0xf6, 0x00, 0x14, +0xff, 0xf6, 0x00, 0x1c, 0xff, 0xf7, 0xff, 0xef, +0x00, 0x0a, 0xff, 0xf5, 0xff, 0xec, 0xff, 0xc6, +0xff, 0xd4, 0xff, 0xd8, 0xff, 0xb9, 0xff, 0xd8, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xeb, 0x00, 0x00, 0xff, 0xf5, +0xff, 0xec, 0xff, 0xe2, 0x00, 0x0a, 0x00, 0x05, +0x00, 0x00, 0x00, 0x13, 0x00, 0x0a, 0x00, 0x13, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0xff, 0xfb, +0xff, 0xf1, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf6, +0xff, 0xf6, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xf5, +0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, +0x00, 0x09, 0x00, 0x0f, 0x00, 0x09, 0xff, 0xf6, +0xff, 0xef, 0xff, 0xf5, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf9, 0xff, 0xed, 0xff, 0xfa, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, +0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0xff, 0xfb, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xea, 0xff, 0xec, +0xff, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xea, +0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xe8, 0x00, 0x00, 0xff, 0xf6, +0xff, 0xf5, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, +0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0xff, 0xeb, 0xff, 0xf5, 0xff, 0xf6, 0x00, 0x00, +0xff, 0xf5, 0xff, 0xec, 0x00, 0x00, 0xff, 0xec, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xeb, 0xff, 0xf6, 0xff, 0xec, +0xff, 0xf6, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf1, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x07, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0xff, 0xec, 0x00, 0x0c, 0x00, 0x0c, +0x00, 0x00, 0x00, 0x0c, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x0a, 0x00, 0x07, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0a, 0xff, 0xf5, 0xff, 0xed, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0xff, 0xe9, 0xff, 0xf6, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x31, 0x00, 0x45, 0x00, 0x43, 0x00, 0x28, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd7, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1d, +0x00, 0x28, 0x00, 0x28, 0x00, 0x4f, 0x00, 0x5a, +0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf1, 0xff, 0xf6, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xff, 0xf5, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x39, 0x00, 0x14, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0xff, 0xf5, +0x00, 0x09, 0x00, 0x00, 0x00, 0x11, 0x00, 0x08, +0x00, 0x00, 0x00, 0x11, 0xff, 0xf6, 0x00, 0x00, +0xff, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, +0x00, 0x12, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xa8, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x0a, +0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd8, +0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0xff, 0xc4, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe1, +0xff, 0xdc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0xff, 0xf0, 0xff, 0xf1, 0x00, 0x00, 0xff, 0xeb, +0xff, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x1d, 0x00, 0x36, 0x00, 0x00, +0xff, 0x9c, 0xff, 0x73, 0xff, 0xf0, 0xff, 0xf5, +0xff, 0xf6, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xeb, +0xff, 0xf5, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x0a, 0xff, 0xef, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xaf, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf1, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xdb, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xdd, +0xff, 0xc2, 0xff, 0xec, 0xff, 0xe8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xf5, 0x00, 0x09, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xab, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0xff, 0xda, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf1, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x20, +0x00, 0x14, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xfc, 0xff, 0xfb, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe1, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0c, 0x00, 0x17, 0x00, 0x0e, 0x00, 0x12, +0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, +0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x1b, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xee, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x00, 0x12, +0x00, 0x1b, 0x00, 0x12, 0x00, 0x20, 0x00, 0x29, +0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf4, 0xff, 0xf4, 0x00, 0x00, +0xff, 0xfd, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, +0x00, 0x12, 0x00, 0x12, 0x00, 0x1b, 0x00, 0x12, +0x00, 0x1b, 0x00, 0x1b, 0x00, 0x09, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xea, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x09, 0x00, 0x08, 0x00, 0x12, 0x00, 0x12, +0x00, 0x12, 0x00, 0x12, 0x00, 0x09, 0x00, 0x12, +0x00, 0x09, 0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd9, 0xff, 0xd8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf3, +0xff, 0xe8, 0x00, 0x00, 0xff, 0xf9, 0xff, 0xec, +0xff, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x12, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xeb, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xfd, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, +0xff, 0xf5, 0xff, 0xf6, 0xff, 0xfa, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, +0x00, 0x14, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xea, 0xff, 0xf4, 0xff, 0xf7, +0xff, 0xf6, 0x00, 0x00, 0xff, 0xd8, 0x00, 0x14, +0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, +0x00, 0x0c, 0xff, 0xf5, 0xff, 0xf5, 0x00, 0x08, +0x00, 0x00, 0x00, 0x00, 0xff, 0xd8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x11, 0xff, 0xf0, +0x00, 0x00, 0xff, 0xf1, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf3, +0x00, 0x00, 0x00, 0x13, 0x00, 0x11, 0x00, 0x00, +0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0xff, 0xef, 0xff, 0xf6, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xf5, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf7, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xac, 0x00, 0x00, 0x00, 0x13, +0xff, 0xfa, 0xff, 0xb0, 0xff, 0xe6, 0xff, 0xc8, +0xff, 0xdc, 0x00, 0x00, 0xff, 0xc4, 0x00, 0x00, +0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0xff, 0xe8, +0x00, 0x00, 0xff, 0xae, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xea, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd9, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf0, 0xff, 0x88, +0xff, 0xb5, 0xff, 0xba, 0xff, 0xc3, 0xff, 0x74, +0x00, 0x13, 0x00, 0x00, 0xff, 0xd7, 0x00, 0x00, +0xff, 0xea, 0xff, 0xf5, 0x00, 0x00, 0xff, 0xcd, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x08, 0xff, 0xf5, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xe8, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0xff, 0xc3, +0xff, 0xc5, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xaf, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xed, +0xff, 0xe6, 0xff, 0xe1, 0x00, 0x00, 0xff, 0xe6, +0x00, 0x00, 0xff, 0xf5, 0xff, 0xc4, 0xff, 0xd8, +0x00, 0x00, 0xff, 0xc9, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xeb, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xec, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, +0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0a, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, +0xff, 0xc8, 0xff, 0xee, 0xff, 0xd8, 0xff, 0xec, +0xff, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf1, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0xff, 0xdb, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe3, 0x00, 0x00, 0xff, 0xf8, 0xff, 0xfb, +0xff, 0xf5, 0xff, 0xec, 0xff, 0xf0, 0x00, 0x00, +0xff, 0xea, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0xff, 0xfd, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe3, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0xff, 0xf6, +0xff, 0xec, 0x00, 0x00, 0xff, 0xd8, 0x00, 0x08, +0x00, 0x08, 0x00, 0x09, 0x00, 0x13, 0x00, 0x10, +0x00, 0x16, 0x00, 0x09, 0x00, 0x12, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x09, 0xff, 0xec, 0x00, 0x00, +0xff, 0xeb, 0xff, 0xe1, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd9, 0xff, 0xf8, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, +0xff, 0xd9, 0x00, 0x00, 0xff, 0x93, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xee, 0xff, 0x81, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe2, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0xff, 0xcf, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, +0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0xff, 0x9c, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd0, 0xff, 0xce, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0xff, 0xeb, 0xff, 0xa2, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, +0x00, 0x00, 0x00, 0x00, 0xff, 0x88, 0xff, 0x6b, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0xff, 0xd9, 0xff, 0xe7, 0xff, 0xda, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xa6, 0x00, 0x00, 0x00, 0x00, 0xff, 0xea, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, +0xff, 0xd9, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x12, +0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd4, 0x00, 0x00, 0x00, 0x24, 0x00, 0x1b, +0x00, 0x00, 0x00, 0x24, 0xff, 0xf6, 0xff, 0xf6, +0xff, 0xeb, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xfa, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf3, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0xff, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, +0x00, 0x12, 0x00, 0x12, 0x00, 0x09, 0x00, 0x13, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf8, 0xff, 0xeb, 0xff, 0xf2, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0xff, 0xe0, 0xff, 0xe2, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0xff, 0xeb, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xfd, +0xff, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf7, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xeb, 0xff, 0xec, 0x00, 0x00, +0xff, 0xf5, 0xff, 0xfd, 0xff, 0xed, 0x00, 0x1c, +0x00, 0x00, 0x00, 0x08, 0x00, 0x1b, 0x00, 0x13, +0x00, 0x1c, 0x00, 0x12, 0x00, 0x11, 0x00, 0x09, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd8, 0x00, 0x00, 0xff, 0xeb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb6, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe1, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x12, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xea, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xed, +0x00, 0x00, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xec, +0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe2, 0xff, 0xda, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0xff, 0xf6, 0xff, 0xdb, 0x00, 0x00, +0xff, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, +0x00, 0x09, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xe3, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xcf, 0xff, 0x8a, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xdb, 0xff, 0xd9, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xb4, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0xff, 0xbc, +0xff, 0xbd, 0xff, 0xde, 0xff, 0xc8, 0xff, 0xe3, +0xff, 0xe3, 0xff, 0xe3, 0xff, 0xda, 0xff, 0xc8, +0xff, 0xec, 0xff, 0x9c, 0xff, 0xc3, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb2, +0xff, 0xd8, 0xff, 0xeb, 0xff, 0xc4, 0xff, 0xeb, +0xff, 0xc6, 0xff, 0xcf, 0x00, 0x00, 0xff, 0xec, +0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x14, 0x00, 0x28, 0x00, 0x00, +0xff, 0x88, 0xff, 0x7f, 0xff, 0xd1, 0xff, 0xda, +0xff, 0xd8, 0xff, 0xd1, 0xff, 0xda, 0xff, 0xb2, +0xff, 0xc4, 0xff, 0xb2, 0xff, 0xd6, 0x00, 0x00, +0x00, 0x00, 0xff, 0xae, 0xff, 0xd8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0x9b, 0xff, 0xcf, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xa0, 0xff, 0xc8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, +0x00, 0x2a, 0x00, 0x2c, 0x00, 0x4e, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0a, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0c, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xda, +0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x2a, +0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xfb, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, +0x00, 0x14, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xc3, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0xff, 0xf5, +0xff, 0xe2, 0x00, 0x00, 0xff, 0xe2, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf7, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd9, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0a, +0x00, 0x09, 0x00, 0x09, 0x00, 0x12, 0x00, 0x09, +0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xed, 0x00, 0x00, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xda, 0xff, 0xd6, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0xff, 0xf8, 0xff, 0xf5, +0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x38, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xeb, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xed, +0x00, 0x00, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x14, +0x00, 0x26, 0x00, 0x1b, 0x00, 0x1d, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0xff, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xff, 0xf8, +0x00, 0x13, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x14, +0x00, 0x00, 0x00, 0x00, 0xff, 0xc6, 0xff, 0xf0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf1, 0xff, 0xf5, 0x00, 0x00, 0xff, 0xf7, +0xff, 0xf6, 0xff, 0xf7, 0xff, 0xe2, 0xff, 0xf6, +0x00, 0x00, 0xff, 0xee, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x33, +0x00, 0x00, 0xff, 0xbc, 0xff, 0xb2, 0xff, 0xf6, +0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf3, 0xff, 0xf8, +0xff, 0xea, 0xff, 0xf3, 0xff, 0xee, 0xff, 0xea, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe5, 0xff, 0xf2, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc6, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf7, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xeb, 0xff, 0xf8, 0xff, 0xeb, 0x00, 0x00, +0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf1, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, +0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe2, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf7, 0xff, 0xf7, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0x00, 0x00, +0xff, 0xd0, 0x00, 0x00, 0x00, 0x14, 0x00, 0x1d, +0x00, 0x12, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xfb, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf7, 0xff, 0xbd, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x09, +0x00, 0x00, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x13, +0x00, 0x13, 0x00, 0x13, 0x00, 0x1d, 0x00, 0x00, +0x00, 0x00, 0xff, 0xe1, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xed, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf7, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x2f, 0x00, 0x1f, 0x00, 0x00, +0xff, 0xcf, 0xff, 0xb4, 0xff, 0xf7, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, +0x00, 0x00, 0xff, 0xf6, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xd7, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0xff, 0xda, +0xff, 0xf3, 0xff, 0xe1, 0x00, 0x00, 0xff, 0xe8, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x11, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +0x00, 0x00, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xeb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x08, 0xff, 0xf6, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x13, 0x00, 0x09, +0xff, 0xec, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, +0x00, 0x07, 0x00, 0x10, 0x00, 0x09, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x08, +0xff, 0xf6, 0x00, 0x07, 0xff, 0xf4, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x14, 0x00, 0x16, 0x00, 0x00, 0x00, 0x14, +0x00, 0x07, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf5, +0xff, 0xf6, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0xff, 0xea, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x38, 0x00, 0x12, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0xff, 0xec, 0x00, 0x00, 0xff, 0xb9, 0x00, 0x00, +0x00, 0x26, 0x00, 0x1d, 0x00, 0x12, 0x00, 0x0b, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xeb, 0xff, 0x9e, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf1, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, +0x00, 0x00, 0xff, 0xea, 0xff, 0xe8, 0x00, 0x0a, +0xff, 0xec, 0x00, 0x11, 0x00, 0x08, 0x00, 0x00, +0x00, 0x0b, 0xff, 0xea, 0xff, 0xee, 0xff, 0xb1, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xc2, 0xff, 0xf5, 0x00, 0x00, +0xff, 0xea, 0xff, 0xf5, 0xff, 0xdf, 0xff, 0xe1, +0xff, 0xf6, 0x00, 0x00, 0xff, 0xe3, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, +0x00, 0x31, 0x00, 0x00, 0xff, 0x9c, 0xff, 0x9c, +0xff, 0xf1, 0xff, 0xf5, 0xff, 0xeb, 0xff, 0xe1, +0xff, 0xf5, 0xff, 0xc4, 0xff, 0xdf, 0xff, 0xc4, +0xff, 0xd4, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd6, +0xff, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xb2, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, 0x00, 0x00, +0x00, 0x00, 0xff, 0xe3, 0x00, 0x00, 0xff, 0xdb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe4, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x24, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf7, 0xff, 0xf6, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, +0xff, 0xe3, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf7, +0xff, 0xf7, 0x00, 0x00, 0xff, 0xf7, 0xff, 0xee, +0x00, 0x00, 0x00, 0x00, 0xff, 0xda, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe2, +0xff, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xda, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0xff, 0xf7, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0xff, 0xf8, 0xff, 0xf0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc4, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xed, 0xff, 0xf7, 0xff, 0xec, 0xff, 0xed, +0xff, 0xec, 0x00, 0x00, 0xff, 0xe4, 0xff, 0xf6, +0x00, 0x00, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, +0x00, 0x00, 0x00, 0x00, 0xff, 0xda, 0xff, 0xe2, +0xff, 0xed, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xed, +0xff, 0xf1, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xd8, +0x00, 0x00, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x65, 0xcc, +0x00, 0x04, 0x00, 0x00, 0x7a, 0x0a, 0x7c, 0xae, +0x00, 0x39, 0x00, 0x46, 0x00, 0x00, 0xff, 0xf4, +0x00, 0x09, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0a, 0x00, 0x08, 0xff, 0xec, 0xff, 0xe2, +0xff, 0xbc, 0xff, 0xf6, 0xff, 0xf8, 0x00, 0x14, +0x00, 0x14, 0xff, 0xd6, 0xff, 0xed, 0xff, 0xea, +0xff, 0xdb, 0xff, 0xd8, 0xff, 0xd0, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x14, +0x00, 0x00, 0x00, 0x00, 0xff, 0xd4, 0x00, 0x12, +0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc9, +0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf7, 0x00, 0x0a, 0x00, 0x09, +0xff, 0xcf, 0x00, 0x14, 0xff, 0xf6, 0xff, 0xf5, +0xff, 0xf5, 0xff, 0xf5, 0xff, 0xec, 0xff, 0xc6, +0xff, 0xd4, 0xff, 0x9c, 0xff, 0xd8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xea, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xf5, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xeb, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf7, 0x00, 0x0a, +0x00, 0x00, 0xff, 0xf6, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0xff, 0xe2, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf7, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0xff, 0xf6, 0xff, 0xe3, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xda, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xeb, +0xff, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xe8, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf4, 0xff, 0xed, 0xff, 0xf5, 0xff, 0xec, +0xff, 0xf6, 0xff, 0xea, 0xff, 0xf4, 0xff, 0xed, +0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xeb, +0xff, 0xec, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x08, 0x00, 0x00, 0xff, 0xf3, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x13, 0x00, 0x07, +0x00, 0x00, 0xff, 0xec, 0xff, 0xec, 0x00, 0x10, +0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x07, 0xff, 0xf4, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xf6, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf3, 0x00, 0x00, 0xff, 0xeb, +0x00, 0x00, 0xff, 0xea, 0x00, 0x00, 0xff, 0xf5, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xe9, +0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf4, 0xff, 0xe2, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd4, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xc7, 0xff, 0xea, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xc3, 0x00, 0x00, +0xff, 0xeb, 0xff, 0xeb, 0xff, 0xf3, 0x00, 0x00, +0x00, 0x00, 0xff, 0xc9, 0xff, 0xd4, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf3, 0x00, 0x00, 0xff, 0xc2, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x07, 0xff, 0xf5, 0xff, 0xf5, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, +0x00, 0x00, 0xff, 0xeb, 0x00, 0x0a, 0x00, 0x00, +0x00, 0x00, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe9, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0xff, 0xed, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xeb, +0xff, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x14, 0xff, 0xea, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe8, +0xff, 0xf6, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd8, +0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xc4, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0xff, 0xac, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe3, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc5, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xc4, 0xff, 0xe3, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc8, +0xff, 0xa6, 0xff, 0xc8, 0xff, 0x9e, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0xff, 0x94, 0x00, 0x00, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xc4, 0xff, 0xf4, 0xff, 0xf4, +0x00, 0x00, 0x00, 0x00, 0xff, 0xd9, 0xff, 0xc9, +0x00, 0x00, 0xff, 0xcf, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe2, +0xff, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0x8c, 0xff, 0xed, 0xff, 0xd8, 0xff, 0xa0, +0xff, 0xa2, 0x00, 0x00, 0xff, 0x8c, 0xff, 0xd9, +0xff, 0xbf, 0xff, 0xac, 0x00, 0x00, 0xff, 0xb2, +0xff, 0xb4, 0xff, 0xb7, 0x00, 0x3e, 0xff, 0xa2, +0xff, 0xda, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd9, 0x00, 0x00, 0x00, 0x00, +0xff, 0xb9, 0xff, 0xbd, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xea, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf7, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf3, +0x00, 0x00, 0xff, 0xf3, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x12, 0x00, 0x12, 0xff, 0xec, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf3, +0xff, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xea, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf2, 0xff, 0xf4, 0x00, 0x00, +0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, 0xff, 0xec, +0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, +0x00, 0x14, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xea, +0x00, 0x00, 0xff, 0xea, 0x00, 0x14, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, 0xff, 0xf5, +0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x11, 0xff, 0xf0, 0xff, 0xea, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf3, 0xff, 0xd8, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0xff, 0xef, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0xff, 0xea, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf3, 0x00, 0x00, 0xff, 0xf3, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0x9e, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xe9, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd6, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, +0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe3, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xd9, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xb0, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xd6, 0xff, 0xda, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe9, 0x00, 0x00, +0xff, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0xff, 0xe0, 0xff, 0xec, 0xff, 0xee, +0xff, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe1, 0xff, 0xeb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xe8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xa5, 0x00, 0x00, +0xff, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xcf, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe3, 0x00, 0x00, 0xff, 0xed, 0x00, 0x00, +0xff, 0xe3, 0x00, 0x00, 0xff, 0xec, 0xff, 0xe2, +0xff, 0xf7, 0xff, 0xea, 0xff, 0xe3, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x28, 0xff, 0xed, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0xff, 0xea, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xc3, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd9, 0xff, 0xeb, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0xff, 0xd9, 0x00, 0x00, +0xff, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, +0x00, 0x00, 0x00, 0x09, 0xff, 0xcf, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe2, 0x00, 0x12, +0x00, 0x00, 0x00, 0x00, 0xff, 0x9c, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xce, 0xff, 0xeb, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xa2, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0xff, 0xc7, 0x00, 0x00, 0xff, 0xd8, 0xff, 0xf4, +0xff, 0xe7, 0x00, 0x00, 0xff, 0xeb, 0xff, 0xed, +0x00, 0x00, 0xff, 0xd6, 0xff, 0xe7, 0x00, 0x00, +0x00, 0x00, 0xff, 0xda, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd8, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x31, 0xff, 0xa6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0xff, 0xf0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf4, 0xff, 0xd8, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0xff, 0xdb, 0xff, 0xdc, +0xff, 0xec, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0xff, 0xe3, 0x00, 0x00, 0xff, 0xec, +0xff, 0xf0, 0x00, 0x00, 0xff, 0xea, 0xff, 0xec, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0xff, 0xfd, +0xff, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x08, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, +0xff, 0xeb, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd8, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf3, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, +0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0xff, 0xea, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf7, 0x00, 0x00, 0xff, 0xdc, 0xff, 0xee, +0x00, 0x00, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xee, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, +0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xd9, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe2, 0x00, 0x00, 0xff, 0xcf, 0xff, 0xc5, +0xff, 0xeb, 0xff, 0xec, 0x00, 0x00, 0xff, 0xec, +0xff, 0xee, 0x00, 0x00, 0x00, 0x00, 0xff, 0xea, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0xff, 0xed, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0xff, 0xed, 0xff, 0xd8, +0xff, 0xf6, 0xff, 0xda, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xeb, 0x00, 0x14, 0xff, 0xbb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe4, 0xff, 0xe4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xda, 0x00, 0x00, +0xff, 0xe3, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x12, +0x00, 0x00, 0x00, 0x29, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xee, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x14, 0x00, 0x12, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xed, +0xff, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf7, +0x00, 0x00, 0xff, 0xec, 0xff, 0xf5, 0xff, 0xfa, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0xff, 0xeb, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe2, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0xff, 0xdb, 0x00, 0x00, +0xff, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0a, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe3, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xcf, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdb, +0x00, 0x00, 0xff, 0xd9, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe2, 0xff, 0xe3, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe3, +0xff, 0xe1, 0xff, 0xe3, 0xff, 0xbc, 0xff, 0xe3, +0x00, 0x00, 0xff, 0xde, 0x00, 0x00, 0xff, 0xda, +0xff, 0xc8, 0xff, 0xec, 0xff, 0x9c, 0x00, 0x00, +0xff, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd8, 0xff, 0xec, 0xff, 0xf5, +0x00, 0x00, 0xff, 0xc4, 0xff, 0xeb, 0xff, 0xeb, +0xff, 0xf5, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd1, +0xff, 0xb7, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0xff, 0xc4, 0xff, 0xed, 0xff, 0xd9, 0xff, 0xc2, +0xff, 0xcf, 0xff, 0xf5, 0xff, 0xc4, 0xff, 0xd9, +0xff, 0xc8, 0xff, 0xb2, 0x00, 0x00, 0xff, 0xd6, +0xff, 0xd8, 0xff, 0xc9, 0x00, 0x2a, 0xff, 0xb5, +0xff, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x00, +0xff, 0xcc, 0xff, 0xcf, 0x00, 0x00, 0x00, 0x00, +0x00, 0x24, 0xff, 0x9b, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xed, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf3, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xed, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0xff, 0xf4, 0xff, 0xf6, +0x00, 0x00, 0xff, 0xf6, 0xff, 0xec, 0x00, 0x00, +0xff, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, +0x00, 0x1d, 0x00, 0x12, 0x00, 0x0b, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xea, +0xff, 0xd8, 0xff, 0xf5, 0xff, 0xea, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0a, 0xff, 0xf5, 0x00, 0x0b, +0xff, 0xea, 0xff, 0xee, 0xff, 0xb1, 0x00, 0x11, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0xff, 0xea, 0xff, 0xf5, 0xff, 0xf1, +0x00, 0x00, 0xff, 0xe3, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe1, +0xff, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xdf, 0xff, 0xec, 0xff, 0xe3, 0xff, 0xdf, +0xff, 0xd8, 0xff, 0xfc, 0xff, 0xdf, 0xff, 0xf5, +0xff, 0xd8, 0xff, 0xc4, 0x00, 0x00, 0xff, 0xd4, +0xff, 0xe4, 0xff, 0xe0, 0x00, 0x3e, 0xff, 0xf5, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf3, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x6c, 0xff, 0xb2, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x24, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x2e, 0x00, 0x13, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf9, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, +0xff, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe1, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xe3, 0xff, 0xf6, 0xff, 0xea, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x14, 0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe9, +0xff, 0xf4, 0xff, 0xe9, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x11, +0xff, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xcc, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, +0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe1, 0x00, 0x13, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x26, 0xff, 0xe1, 0xff, 0xea, +0xff, 0xeb, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf7, 0xff, 0xee, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xda, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe2, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xda, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xed, +0x00, 0x00, 0xff, 0xed, 0x00, 0x00, 0xff, 0xf8, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf7, 0x00, 0x00, 0xff, 0xf7, +0xff, 0xee, 0xff, 0xed, 0xff, 0xec, 0xff, 0xf5, +0xff, 0xf5, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, +0x00, 0x00, 0x00, 0x00, 0xff, 0xed, 0x00, 0x00, +0xff, 0xe6, 0x00, 0x00, 0xff, 0xd9, 0xff, 0xed, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe6, 0xff, 0xd9, +0xff, 0xe4, 0xff, 0xd8, 0x00, 0x00, 0xff, 0xd8, +0x00, 0x00, 0xff, 0xe3, 0x00, 0x18, 0xff, 0xe0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xda, +0xff, 0xf7, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x02, 0x46, 0xb8, 0x00, 0x04, 0x00, 0x00, +0x60, 0xdc, 0x64, 0xac, 0x00, 0x3b, 0x00, 0x70, +0x00, 0x00, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xeb, +0xff, 0xea, 0xff, 0xf6, 0xff, 0xc4, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xbc, +0x00, 0x00, 0xff, 0xd6, 0x00, 0x00, 0x00, 0x0a, +0xff, 0xc5, 0xff, 0xf7, 0x00, 0x08, 0xff, 0xf6, +0xff, 0xe2, 0xff, 0xed, 0x00, 0x14, 0x00, 0x14, +0xff, 0xf6, 0xff, 0xed, 0xff, 0xea, 0xff, 0xdb, +0xff, 0xd8, 0xff, 0xd0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xd4, +0xff, 0xd8, 0xff, 0xc9, 0xff, 0x9c, 0x00, 0x00, +0xff, 0xd9, 0x00, 0x14, 0x00, 0x14, 0x00, 0x13, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x12, 0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xff, 0xf7, +0xff, 0xea, 0xff, 0xb0, 0x00, 0x14, 0x00, 0x1c, +0x00, 0x24, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x14, +0xff, 0xf6, 0xff, 0xc6, 0x00, 0x12, 0xff, 0xf6, +0x00, 0x14, 0xff, 0xf6, 0x00, 0x14, 0xff, 0xf5, +0xff, 0xd8, 0x00, 0x0b, 0xff, 0xef, 0xff, 0xf5, +0x00, 0x13, 0xff, 0xf5, 0x00, 0x13, 0x00, 0x14, +0x00, 0x0a, 0xff, 0xf5, 0xff, 0xf5, 0x00, 0x15, +0xff, 0xec, 0xff, 0xc6, 0xff, 0xd4, 0xff, 0xd8, +0xff, 0xb9, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe1, 0x00, 0x00, +0xff, 0xd7, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0xff, 0xef, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe2, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xed, 0x00, 0x00, +0xff, 0xd9, 0xff, 0xda, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xed, 0xff, 0xda, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf7, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd4, 0x00, 0x00, 0x00, 0x00, +0xff, 0xcd, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0xff, 0xc4, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0xff, 0xea, 0x00, 0x00, 0xff, 0xf3, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf3, 0xff, 0xd6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xed, 0xff, 0xf4, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xda, 0xff, 0xd7, 0xff, 0x9c, +0xff, 0xd5, 0xff, 0xc2, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xeb, 0xff, 0xb9, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xb0, 0xff, 0xea, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xeb, 0xff, 0xb1, 0xff, 0xc6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, +0xff, 0xf5, 0x00, 0x00, 0xff, 0xed, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xf5, 0xff, 0xfc, 0xff, 0xea, +0xff, 0xfd, 0xff, 0xea, 0xff, 0xfd, 0xff, 0xea, +0xff, 0xec, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xeb, +0xff, 0xeb, 0xff, 0xfd, 0xff, 0xc3, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0a, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xeb, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x12, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0xff, 0xec, +0xff, 0xe2, 0xff, 0xfd, 0xff, 0xed, 0x00, 0x1c, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x12, 0x00, 0x13, +0x00, 0x08, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xf1, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, +0x00, 0x00, 0xff, 0xea, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf3, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0xff, 0xec, 0xff, 0xf4, 0x00, 0x00, +0xff, 0xd0, 0xff, 0xec, 0x00, 0x00, 0xff, 0xed, +0xff, 0xf5, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xcf, 0x00, 0x00, +0xff, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, +0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0xff, 0xed, +0xff, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb0, +0xff, 0xec, 0xff, 0xda, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0xff, 0xe9, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd6, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0xff, 0xee, 0xff, 0xda, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xc4, 0x00, 0x00, +0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd4, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xd5, +0x00, 0x00, 0xff, 0xe1, 0x00, 0x00, 0x00, 0x09, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0xff, 0xed, +0xff, 0xed, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xe3, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd9, +0x00, 0x00, 0xff, 0xf8, 0xff, 0xeb, 0x00, 0x00, +0xff, 0xec, 0xff, 0xec, 0x00, 0x00, 0xff, 0x93, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xee, 0x00, 0x00, 0xff, 0xc8, +0xff, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe2, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xcf, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x9c, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xd0, 0xff, 0xce, +0x00, 0x00, 0x00, 0x00, 0xff, 0xc7, 0xff, 0xf6, +0x00, 0x00, 0xff, 0xc4, 0xff, 0xeb, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0xff, 0x88, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0xff, 0x6b, +0x00, 0x00, 0xff, 0xfd, 0x00, 0x00, 0xff, 0xc5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xda, +0xff, 0xec, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xa2, +0xff, 0xa2, 0xff, 0xa0, 0xff, 0xa0, 0x00, 0x00, +0x00, 0x00, 0xff, 0xe7, 0xff, 0xa6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xec, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, +0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xef, 0x00, 0x00, 0x00, 0x0f, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xeb, 0xff, 0xf9, 0x00, 0x0d, 0x00, 0x00, +0xff, 0xed, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xea, +0xff, 0xec, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd8, 0xff, 0xf3, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xea, 0xff, 0xeb, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, +0xff, 0xd6, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, +0xff, 0xec, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd8, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe8, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0xff, 0xf5, 0xff, 0xf6, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0xff, 0xf5, 0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xd7, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x9c, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe1, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xc7, 0xff, 0xf5, +0xff, 0xf5, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x4a, 0x00, 0x00, 0xff, 0xf5, 0xff, 0xd0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xc8, +0xff, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd0, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0xff, 0xc4, +0x00, 0x00, 0xff, 0xe2, 0xff, 0xe2, 0x00, 0x11, +0x00, 0x00, 0xff, 0xee, 0x00, 0x00, 0xff, 0xac, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe3, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0x57, 0x00, 0x00, +0xff, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc5, +0x00, 0x00, 0xff, 0xc5, 0x00, 0x00, 0xff, 0xb1, +0xff, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xe2, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xc9, 0x00, 0x00, +0xff, 0xdb, 0x00, 0x00, 0x00, 0x00, 0xff, 0x9e, +0xff, 0xc8, 0xff, 0xb2, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0xff, 0x94, +0x00, 0x00, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0x9e, 0xff, 0xc4, +0xff, 0xbd, 0x00, 0x00, 0xff, 0x8c, 0xff, 0xb3, +0xff, 0xc6, 0xff, 0x8a, 0xff, 0xf4, 0x00, 0x00, +0xff, 0xd9, 0xff, 0xdc, 0xff, 0xb4, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x14, 0x00, 0x00, 0xff, 0xe2, 0xff, 0x8b, +0x00, 0x00, 0x00, 0x00, 0xff, 0x4c, 0x00, 0x00, +0xff, 0xb4, 0xff, 0xc7, 0xff, 0xc8, 0xff, 0x3a, +0xff, 0xc8, 0x00, 0x00, 0xff, 0xd8, 0xff, 0xd8, +0xff, 0xb4, 0x00, 0x00, 0x00, 0x00, 0xff, 0xac, +0xff, 0xb2, 0x00, 0x00, 0xff, 0xcf, 0xff, 0x78, +0xff, 0x78, 0xff, 0x8b, 0xff, 0x8b, 0x00, 0x00, +0x00, 0x00, 0xff, 0x8c, 0x00, 0x00, 0xff, 0xbe, +0x00, 0x00, 0x00, 0x00, 0xff, 0xa2, 0x00, 0x00, +0x00, 0x00, 0xff, 0xb2, 0xff, 0xbd, 0xff, 0xbd, +0xff, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf3, 0xff, 0xeb, 0xff, 0xda, +0xff, 0xe2, 0x00, 0x00, 0xff, 0xe8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, +0x00, 0x0f, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0xff, 0xf7, 0x00, 0x00, +0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, +0xff, 0xea, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x09, +0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xec, +0xff, 0xeb, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x13, +0xff, 0xd6, 0x00, 0x09, 0x00, 0x07, 0x00, 0x08, +0xff, 0xec, 0xff, 0xea, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x08, +0xff, 0xe0, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +0xff, 0xf4, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0xff, 0xf6, 0x00, 0x07, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0xff, 0xea, +0xff, 0xf5, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe9, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xeb, +0xff, 0xea, 0xff, 0xf6, 0xff, 0xd8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf1, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xff, 0xec, +0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, +0x00, 0x07, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, +0xff, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, +0xff, 0xec, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0xff, 0xed, 0xff, 0xda, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe4, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xee, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe9, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xe4, 0xff, 0xf6, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xea, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xff, 0xf6, +0xff, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, +0x00, 0x1d, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0xff, 0xd6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xed, 0x00, 0x00, +0x00, 0x14, 0x00, 0x00, 0xff, 0xed, 0x00, 0x00, +0x00, 0x1c, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x3c, 0x00, 0x26, 0x00, 0x00, +0x00, 0x72, 0x00, 0x00, 0x00, 0x13, 0xff, 0xf6, +0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x14, 0x00, 0x1d, 0x00, 0x00, +0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x09, 0x00, 0x00, 0x00, 0x12, 0xff, 0xf6, +0xff, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x3a, +0x00, 0x28, 0x00, 0x04, 0x00, 0x00, 0xff, 0xc4, +0x00, 0x3a, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xc2, 0x00, 0x3a, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0xff, 0xed, +0xff, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x28, +0xff, 0xf9, 0x00, 0x2a, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf9, 0x00, 0x00, 0xff, 0xed, 0xff, 0xb0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xed, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x13, 0xff, 0xda, 0xff, 0xf6, +0x00, 0x00, 0xff, 0xd8, 0x00, 0x1c, 0x00, 0x00, +0x00, 0x00, 0x00, 0x04, 0xff, 0xed, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x25, 0x00, 0x2a, 0x00, 0x15, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xeb, +0x00, 0x22, 0x00, 0x14, 0xff, 0xb0, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x9c, +0xff, 0xf6, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x3a, 0x00, 0x00, 0xff, 0xda, +0xff, 0xea, 0x00, 0x00, 0x00, 0x00, 0xff, 0xda, +0xff, 0xda, 0xff, 0xda, 0xff, 0xda, 0x00, 0x3a, +0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf7, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x15, 0x00, 0x3a, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xea, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xd8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, +0x00, 0x00, 0x00, 0x08, 0x00, 0x09, 0x00, 0x12, +0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x09, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0xff, 0xd9, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd8, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, +0xff, 0xea, 0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0xff, 0xf4, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, +0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, +0x00, 0x00, 0xff, 0xed, 0x00, 0x00, 0x00, 0x12, +0x00, 0x11, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe2, 0x00, 0x00, +0xff, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xdb, 0xff, 0xda, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xeb, 0xff, 0xed, 0x00, 0x14, 0x00, 0x12, +0x00, 0x25, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xed, 0x00, 0x12, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, +0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xea, +0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe3, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xc8, +0xff, 0xd8, 0xff, 0xec, 0xff, 0xdc, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf1, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0xff, 0xdb, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0xff, 0xed, 0x00, 0x00, 0xff, 0xf5, 0xff, 0xf8, +0xff, 0xe3, 0xff, 0xec, 0x00, 0x00, 0xff, 0xea, +0xff, 0xec, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0xff, 0xfd, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe3, 0x00, 0x00, +0xff, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0xff, 0xeb, +0xff, 0xec, 0x00, 0x00, 0xff, 0xd8, 0x00, 0x08, +0x00, 0x00, 0x00, 0x08, 0x00, 0x09, 0x00, 0x10, +0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, 0x00, 0x16, +0x00, 0x00, 0xff, 0xea, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf4, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x09, 0xff, 0xec, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe1, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe8, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xe4, 0xff, 0xed, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xeb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xf5, 0xff, 0xe1, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xb2, 0x00, 0x00, +0xff, 0xb1, 0xff, 0xb2, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xda, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0xff, 0xb4, 0xff, 0xb0, 0x00, 0x00, +0xff, 0xd4, 0x00, 0x00, 0xff, 0xf5, 0xff, 0xf6, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe0, 0x00, 0x00, +0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xc2, 0x00, 0x00, 0x00, 0x00, +0xff, 0xcd, 0xff, 0xf5, 0x00, 0x00, 0xff, 0xf5, +0xff, 0xcd, 0xff, 0xda, 0x00, 0x00, 0x00, 0x00, +0xff, 0xea, 0xff, 0xed, 0xff, 0xf3, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf3, 0xff, 0xc2, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0xff, 0xf3, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xe4, 0xff, 0xec, 0xff, 0x8a, +0xff, 0xd6, 0xff, 0xb4, 0x00, 0x00, 0x00, 0x00, +0xff, 0xeb, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0xff, 0xeb, 0xff, 0xed, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xb4, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0xff, 0xc6, 0xff, 0xed, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xea, 0xff, 0xb4, 0xff, 0xa0, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, 0xff, 0xed, +0x00, 0x00, 0xff, 0xe9, 0xff, 0xf5, 0xff, 0xeb, +0x00, 0x00, 0xff, 0xe9, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe2, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x00, 0x1b, +0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x12, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xea, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0xf6, +0xff, 0xf6, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x36, 0x00, 0x00, 0xff, 0xed, 0xff, 0xd9, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x13, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe2, +0xff, 0xec, 0xff, 0xda, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0xff, 0xee, 0x00, 0x00, 0xff, 0xae, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, +0x00, 0x09, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe3, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0x8a, 0x00, 0x00, +0xff, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdb, +0xff, 0xd9, 0xff, 0xcf, 0x00, 0x00, 0xff, 0xc7, +0xff, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, +0xff, 0xe5, 0x00, 0x00, 0x00, 0x00, 0xff, 0xbc, +0xff, 0xda, 0xff, 0xbd, 0xff, 0xe3, 0xff, 0xe3, +0xff, 0xde, 0x00, 0x00, 0xff, 0xec, 0xff, 0x9c, +0x00, 0x00, 0xff, 0xc3, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xb2, 0xff, 0xd8, +0xff, 0xd9, 0x00, 0x00, 0xff, 0x9f, 0xff, 0xc6, +0xff, 0xd0, 0xff, 0x9d, 0xff, 0xec, 0xff, 0xc4, +0xff, 0xeb, 0xff, 0xee, 0xff, 0xc7, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xd1, 0xff, 0x9e, +0x00, 0x00, 0x00, 0x00, 0xff, 0x88, 0x00, 0x00, +0xff, 0xc8, 0xff, 0xd1, 0xff, 0xda, 0xff, 0x7f, +0xff, 0xda, 0x00, 0x00, 0xff, 0xec, 0xff, 0xeb, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb2, +0xff, 0xd6, 0x00, 0x00, 0xff, 0xd1, 0xff, 0xa0, +0xff, 0xa0, 0xff, 0xb4, 0xff, 0xb3, 0x00, 0x00, +0x00, 0x00, 0xff, 0xc4, 0xff, 0x9b, 0xff, 0xd1, +0x00, 0x00, 0x00, 0x00, 0xff, 0xb5, 0x00, 0x00, +0x00, 0x00, 0xff, 0xc6, 0xff, 0xcf, 0xff, 0xcf, +0xff, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x26, 0x00, 0x26, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, +0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xec, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x14, 0x00, 0x14, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf4, 0x00, 0x28, 0x00, 0x00, +0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, +0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf7, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xeb, +0xff, 0xea, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd4, 0x00, 0x00, 0x00, 0x00, +0xff, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xc4, 0xff, 0xd9, 0x00, 0x00, 0x00, 0x00, +0xff, 0xea, 0xff, 0xea, 0xff, 0xf3, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf3, 0xff, 0xd4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0xff, 0xda, 0xff, 0xc2, +0xff, 0xd6, 0xff, 0xc2, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf4, 0xff, 0xbb, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xc6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xc4, 0xff, 0xc2, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, 0x00, 0x00, +0xff, 0xf5, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0xff, 0xfd, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd8, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf5, 0x00, 0x07, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc2, +0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0x9c, 0x00, 0x07, +0xff, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0xff, 0xe1, +0xff, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0xff, 0xec, 0x00, 0x13, 0x00, 0x00, 0xff, 0xea, +0xff, 0xeb, 0xff, 0xd7, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0xff, 0xec, 0x00, 0x00, 0xff, 0xae, +0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0xff, 0xd8, +0xff, 0xec, 0xff, 0xf5, 0xff, 0xc4, 0xff, 0xe0, +0xff, 0xf4, 0xff, 0xb0, 0xff, 0xea, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe1, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x12, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0xff, 0xd6, +0x00, 0x14, 0x00, 0x00, 0xff, 0x98, 0x00, 0x00, +0xff, 0xea, 0xff, 0xf5, 0xff, 0xed, 0xff, 0x88, +0xff, 0xed, 0xff, 0xec, 0x00, 0x00, 0xff, 0xeb, +0xff, 0xe8, 0xff, 0xec, 0xff, 0xea, 0xff, 0xd8, +0xff, 0xea, 0x00, 0x00, 0xff, 0xf5, 0xff, 0xc3, +0xff, 0xc3, 0xff, 0xc4, 0xff, 0xc3, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xd8, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, +0x00, 0x00, 0xff, 0xea, 0xff, 0xe2, 0xff, 0xe2, +0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, +0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, +0xff, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0xff, 0xe3, 0x00, 0x00, 0xff, 0xf6, +0xff, 0xf7, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xeb, +0xff, 0xe2, 0xff, 0xec, 0xff, 0xe2, 0x00, 0x0a, +0xff, 0xed, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0a, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xe4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, +0x00, 0x00, 0xff, 0xe4, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0xff, 0xf5, 0xff, 0xf1, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf8, 0xff, 0xf8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd4, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd7, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd8, 0xff, 0xda, 0x00, 0x00, 0x00, 0x00, +0xff, 0xed, 0xff, 0xed, 0xff, 0xf3, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf3, 0xff, 0xd6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0xff, 0xa0, +0xff, 0xd6, 0xff, 0xc6, 0x00, 0x00, 0x00, 0x00, +0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xeb, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0xff, 0xc6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xc4, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe8, 0xff, 0xc8, 0xff, 0xc4, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0xff, 0xf4, +0x00, 0x00, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x02, 0x13, 0xd2, 0x00, 0x04, 0x00, 0x00, +0x37, 0x96, 0x38, 0x2a, 0x00, 0x0b, 0x00, 0x8e, +0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, +0x00, 0x50, 0xff, 0xec, 0x00, 0x12, 0xff, 0xec, +0x00, 0x12, 0x00, 0x50, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, +0x00, 0x28, 0x00, 0x28, 0x00, 0x04, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x26, 0x00, 0x04, +0xff, 0xec, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xc3, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, +0x00, 0x14, 0x00, 0x00, 0xff, 0xec, 0xff, 0xb2, +0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x26, 0x00, 0x28, 0xff, 0xb0, 0xff, 0xf6, +0xff, 0xb0, 0xff, 0x87, 0x00, 0x14, 0xff, 0xe8, +0xff, 0xd6, 0xff, 0xd4, 0xff, 0xed, 0xff, 0xd6, +0xff, 0xec, 0xff, 0xc5, 0xff, 0xc6, 0xff, 0xf4, +0xff, 0xe3, 0xff, 0xdc, 0xff, 0xb3, 0xff, 0x9e, +0xff, 0xec, 0xff, 0xea, 0xff, 0xc6, 0xff, 0xf4, +0x00, 0x14, 0xff, 0xd6, 0xff, 0xa5, 0xff, 0xf4, +0xff, 0xe3, 0xff, 0xdc, 0xff, 0xb3, 0xff, 0x9e, +0xff, 0xba, 0x00, 0x14, 0xff, 0xf4, 0xff, 0xe3, +0xff, 0xdc, 0xff, 0xb3, 0xff, 0x9e, 0xff, 0xec, +0xff, 0xf0, 0xff, 0xec, 0xff, 0xc5, 0xff, 0xc6, +0xff, 0xf1, 0xff, 0xd0, 0xff, 0xe1, 0xff, 0xec, +0xff, 0xba, 0xff, 0xc3, 0xff, 0xaf, 0xff, 0xb3, +0xff, 0xf6, 0xff, 0xf5, 0xff, 0xe2, 0xff, 0xe2, +0xff, 0xea, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xf6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0xff, 0xf6, 0xff, 0xdb, 0x00, 0x00, 0xff, 0xec, +0xff, 0xea, 0xff, 0xd8, 0xff, 0xea, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xdb, +0xff, 0xc4, 0x00, 0x00, 0xff, 0xc4, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xec, +0x00, 0x13, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, +0xff, 0xee, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe3, +0xff, 0xdb, 0xff, 0xd6, 0x00, 0x00, 0xff, 0xf5, +0xff, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe3, +0xff, 0xdb, 0xff, 0xd6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xe3, 0xff, 0xdb, +0xff, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xee, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf4, 0xff, 0xeb, +0xff, 0xf5, 0xff, 0xea, 0xff, 0xf5, 0xff, 0xf6, +0xff, 0xeb, 0xff, 0xf3, 0xff, 0xec, 0xff, 0xeb, +0xff, 0xf5, 0xff, 0xf5, 0xff, 0xea, 0xff, 0xea, +0xff, 0xea, 0xff, 0xec, 0xff, 0xf4, 0xff, 0xf5, +0xff, 0xea, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xea, 0xff, 0xea, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe4, 0xff, 0xf6, 0xff, 0xe4, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0xff, 0xf5, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0xff, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, +0xff, 0xf5, 0xff, 0xd8, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf5, 0xff, 0xf5, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf4, 0x00, 0x00, 0xff, 0xf5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0xff, 0xf5, 0x00, 0x00, 0xff, 0xec, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0x00, 0x00, 0xff, 0xec, 0xff, 0xf5, 0xff, 0xda, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xec, +0xff, 0xf5, 0x00, 0x00, 0xff, 0xf6, 0xff, 0xf5, +0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf5, +0xff, 0xf5, 0xff, 0xe4, 0xff, 0xf5, 0xff, 0xf5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, +0x00, 0x00, 0xff, 0xe2, 0xff, 0xe8, 0x00, 0x00, +0xff, 0xf4, 0x00, 0x00, 0xff, 0xe2, 0x00, 0x00, +0x00, 0x00, 0xff, 0xee, 0xff, 0xd4, 0x00, 0x00, +0xff, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xea, 0x00, 0x00, +0x00, 0x00, 0xff, 0xda, 0xff, 0xd9, 0xff, 0xd8, +0x00, 0x00, 0x00, 0x00, 0xff, 0xc4, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xda, 0xff, 0xd9, 0xff, 0xd8, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xda, 0xff, 0xd9, 0xff, 0xd8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xea, +0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xe2, 0xff, 0xf4, 0xff, 0xeb, 0xff, 0xf5, +0x00, 0x00, 0xff, 0xf5, 0xff, 0xea, 0xff, 0xf5, +0xff, 0xec, 0xff, 0xf5, 0x00, 0x00, 0xff, 0xeb, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, +0xff, 0xe2, 0xff, 0xeb, 0xff, 0xf5, 0xff, 0xeb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xec, 0xff, 0xec, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xda, 0xff, 0xec, +0xff, 0xd9, 0xff, 0xec, 0xff, 0xd9, 0xff, 0xda, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xda, 0xff, 0xbd, 0xff, 0xc4, +0x00, 0x00, 0xff, 0xc0, 0x00, 0x11, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0xff, 0xc0, 0x00, 0x00, +0xff, 0xd8, 0xff, 0xc4, 0x00, 0x11, 0x00, 0x00, +0x00, 0x11, 0x00, 0x00, 0xff, 0xc4, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xec, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xff, 0xda, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xda, +0xff, 0xc4, 0xff, 0xec, 0x00, 0x00, 0xff, 0xda, +0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xc4, 0xff, 0xda, 0xff, 0xec, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, +0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xeb, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd0, 0xff, 0xc9, 0xff, 0xf6, +0x00, 0x38, 0xff, 0xc9, 0xff, 0xee, 0xff, 0xda, +0xff, 0xc4, 0xff, 0xc9, 0xff, 0xda, 0x00, 0x4c, +0xff, 0xec, 0xff, 0xec, 0xff, 0xda, 0x00, 0x4c, +0x00, 0x3a, 0x00, 0x3a, 0xff, 0xec, 0xff, 0xa0, +0xff, 0xd0, 0xff, 0xc9, 0xff, 0xf5, 0xff, 0xda, +0xff, 0xf6, 0xff, 0xc5, 0xff, 0xa0, 0xff, 0xc9, +0xff, 0xc6, 0xff, 0xf5, 0xff, 0x76, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd9, +0xff, 0xbd, 0xff, 0xc4, 0x00, 0x00, 0xff, 0xbe, +0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xbe, 0x00, 0x00, 0xff, 0xd7, 0xff, 0xc4, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0xff, 0xda, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xb6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xb6, 0x00, 0x00, 0xff, 0xda, +0x00, 0x00, 0xff, 0xb6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xeb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd8, 0x00, 0x00, 0xff, 0xb4, +0xff, 0xd3, 0xff, 0xc7, 0x00, 0x3a, 0xff, 0xd3, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xa0, 0xff, 0xb4, 0xff, 0xd3, +0xff, 0xed, 0xff, 0xc8, 0xff, 0xc7, 0xff, 0x88, +0xff, 0xa0, 0xff, 0xc9, 0x00, 0x00, 0xff, 0xf5, +0x00, 0x00, 0xff, 0xee, 0xff, 0xee, 0xff, 0xe3, +0x00, 0x00, 0xff, 0xd8, 0x00, 0x00, 0xff, 0xb0, +0x00, 0x00, 0xff, 0xac, 0x00, 0x09, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xac, 0x00, 0x00, +0xff, 0xd6, 0xff, 0xae, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xda, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdb, +0x00, 0x00, 0xff, 0xda, 0x00, 0x00, 0xff, 0xdb, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xdb, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, +0x00, 0x00, 0xff, 0xda, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xf6, 0x00, 0x00, 0xff, 0xf6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0xd4, 0xff, 0xec, +0x00, 0x00, 0xff, 0xd4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd4, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0xd4, 0x00, 0x00, 0x00, 0x00, +0xff, 0xec, 0xff, 0x98, 0x00, 0x00, 0xff, 0xb6, +0x00, 0x00, 0xff, 0xea, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x30, +0x07, 0x21, 0x07, 0x23, 0x07, 0x24, 0x07, 0x26, +0x07, 0x27, 0x07, 0x29, 0x07, 0x2b, 0x07, 0x2d, +0x07, 0x2f, 0x07, 0x30, 0x07, 0x33, 0x07, 0x35, +0x07, 0x37, 0x07, 0x39, 0x07, 0x3b, 0x07, 0x3d, +0x07, 0x40, 0x07, 0x42, 0x07, 0x44, 0x07, 0x45, +0x07, 0x46, 0x07, 0x47, 0x07, 0x55, 0x07, 0x66, +0x07, 0x67, 0x07, 0x6b, 0x07, 0x6d, 0x07, 0x6e, +0x07, 0x70, 0x07, 0x71, 0x07, 0x72, 0x07, 0x74, +0x07, 0x76, 0x07, 0x78, 0x07, 0x7a, 0x07, 0x7c, +0x07, 0x7e, 0x07, 0x80, 0x07, 0x82, 0x07, 0x84, +0x07, 0x86, 0x07, 0x88, 0x07, 0x8a, 0x07, 0x8b, +0x07, 0x8c, 0x07, 0x8d, 0x07, 0x8e, 0x07, 0x8f, +0x00, 0x01, 0x00, 0x83, 0x00, 0x1e, 0x00, 0x1f, +0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, +0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, +0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, +0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, +0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, +0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, +0x01, 0x0f, 0x01, 0x10, 0x01, 0x2e, 0x01, 0x47, +0x01, 0x49, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, +0x01, 0x7c, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xbc, +0x01, 0xbd, 0x01, 0xbe, 0x01, 0xc0, 0x01, 0xc1, +0x01, 0xc4, 0x01, 0xc7, 0x01, 0xc8, 0x01, 0xc9, +0x01, 0xca, 0x01, 0xcb, 0x01, 0xcc, 0x01, 0xcd, +0x01, 0xce, 0x01, 0xcf, 0x01, 0xd0, 0x01, 0xd1, +0x01, 0xd3, 0x01, 0xd5, 0x01, 0xda, 0x01, 0xe0, +0x01, 0xe1, 0x01, 0xe2, 0x01, 0xe3, 0x01, 0xe4, +0x01, 0xe5, 0x01, 0xe6, 0x01, 0xe7, 0x01, 0xe9, +0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, 0x01, 0xf0, +0x01, 0xf3, 0x01, 0xf4, 0x01, 0xf5, 0x01, 0xf6, +0x01, 0xf7, 0x01, 0xf8, 0x01, 0xf9, 0x01, 0xfa, +0x01, 0xfb, 0x01, 0xfc, 0x01, 0xfd, 0x02, 0x17, +0x02, 0x23, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x37, +0x02, 0x62, 0x02, 0x66, 0x02, 0x68, 0x02, 0x6a, +0x02, 0x70, 0x02, 0x72, 0x02, 0x75, 0x02, 0x79, +0x03, 0x63, 0x03, 0x65, 0x03, 0xe4, 0x03, 0xe7, +0x03, 0xe9, 0x03, 0xea, 0x03, 0xee, 0x03, 0xf0, +0x03, 0xf6, 0x03, 0xfb, 0x03, 0xfe, 0x03, 0xff, +0x04, 0x03, 0x04, 0x05, 0x04, 0x06, 0x04, 0x07, +0x04, 0x0c, 0x04, 0x1c, 0x04, 0x2c, 0x04, 0x2d, +0x04, 0x3b, 0x05, 0xa1, 0x05, 0xa2, 0x05, 0xa5, +0x05, 0xa6, 0x05, 0xa7, 0x05, 0xa9, 0x05, 0xaa, +0x05, 0xac, 0x05, 0xad, 0x05, 0xaf, 0x05, 0xb1, +0x05, 0xb3, 0x05, 0xb4, 0x07, 0x10, 0x07, 0x1a, +0x07, 0x20, 0x00, 0x01, 0x00, 0x1f, 0x07, 0x22, +0x07, 0x25, 0x07, 0x28, 0x07, 0x2a, 0x07, 0x2c, +0x07, 0x2e, 0x07, 0x31, 0x07, 0x32, 0x07, 0x34, +0x07, 0x36, 0x07, 0x38, 0x07, 0x3a, 0x07, 0x3c, +0x07, 0x3e, 0x07, 0x41, 0x07, 0x43, 0x07, 0x68, +0x07, 0x6c, 0x07, 0x6f, 0x07, 0x73, 0x07, 0x75, +0x07, 0x77, 0x07, 0x79, 0x07, 0x7b, 0x07, 0x7d, +0x07, 0x7f, 0x07, 0x81, 0x07, 0x83, 0x07, 0x85, +0x07, 0x87, 0x07, 0x89, 0x00, 0x01, 0x00, 0x68, +0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, +0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, +0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, +0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, +0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, +0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, +0x00, 0x1c, 0x00, 0x1d, 0x00, 0x4d, 0x00, 0x4e, +0x00, 0x6c, 0x00, 0x85, 0x00, 0xaf, 0x00, 0xb0, +0x00, 0xb1, 0x00, 0xb7, 0x00, 0xdd, 0x00, 0xde, +0x00, 0xf7, 0x00, 0xf8, 0x01, 0xd2, 0x01, 0xdf, +0x01, 0xee, 0x02, 0x09, 0x02, 0x14, 0x03, 0x8a, +0x03, 0x8d, 0x03, 0x8f, 0x03, 0x90, 0x03, 0x94, +0x03, 0x96, 0x03, 0x9c, 0x03, 0xa1, 0x03, 0xa4, +0x03, 0xa5, 0x03, 0xa9, 0x03, 0xab, 0x03, 0xac, +0x03, 0xad, 0x03, 0xc2, 0x03, 0xd2, 0x03, 0xd3, +0x03, 0xe1, 0x04, 0xc3, 0x04, 0xc4, 0x04, 0xc5, +0x04, 0xc6, 0x04, 0xc7, 0x04, 0xc8, 0x04, 0xc9, +0x04, 0xca, 0x04, 0xcb, 0x04, 0xcc, 0x04, 0xcd, +0x04, 0xce, 0x04, 0xcf, 0x04, 0xd0, 0x04, 0xd1, +0x04, 0xd2, 0x04, 0xd3, 0x04, 0xd4, 0x04, 0xd5, +0x04, 0xd6, 0x04, 0xd7, 0x04, 0xd8, 0x04, 0xd9, +0x04, 0xda, 0x04, 0xdb, 0x04, 0xdc, 0x04, 0xf2, +0x04, 0xf3, 0x05, 0x11, 0x05, 0x2a, 0x05, 0x54, +0x05, 0x5a, 0x05, 0x72, 0x05, 0x83, 0x05, 0x84, +0x05, 0x9e, 0x05, 0xb6, 0x05, 0xc1, 0x05, 0xc3, +0x05, 0xc4, 0x05, 0xc6, 0x05, 0xc8, 0x05, 0xd1, +0x00, 0x01, 0x00, 0x01, 0x07, 0x4a, 0x00, 0x01, +0x00, 0x01, 0x07, 0x20, 0x00, 0x01, 0x00, 0x02, +0x07, 0x56, 0x07, 0x57, 0x00, 0x01, 0x00, 0x0d, +0x00, 0x06, 0x00, 0x16, 0x00, 0x17, 0x00, 0x20, +0x00, 0x30, 0x00, 0x31, 0x04, 0xc5, 0x04, 0xd5, +0x04, 0xd6, 0x05, 0x72, 0x05, 0xb3, 0x05, 0xb6, +0x07, 0x20, 0x00, 0x02, 0x00, 0x05, 0x07, 0x48, +0x07, 0x49, 0x00, 0x00, 0x07, 0x4c, 0x07, 0x54, +0x00, 0x02, 0x07, 0x5a, 0x07, 0x60, 0x00, 0x0b, +0x07, 0x62, 0x07, 0x65, 0x00, 0x12, 0x07, 0x69, +0x07, 0x69, 0x00, 0x16, 0x00, 0x02, 0x00, 0x2d, +0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x15, +0x00, 0x37, 0x00, 0x10, 0x00, 0xb1, 0x00, 0xb1, +0x00, 0x33, 0x00, 0xde, 0x00, 0xde, 0x00, 0x34, +0x00, 0xf7, 0x00, 0xf7, 0x00, 0x35, 0x01, 0x10, +0x01, 0x10, 0x00, 0x36, 0x01, 0x49, 0x01, 0x49, +0x00, 0x37, 0x01, 0x76, 0x01, 0x76, 0x00, 0x38, +0x01, 0xa4, 0x01, 0xa4, 0x00, 0x39, 0x01, 0xbc, +0x01, 0xbc, 0x00, 0x3a, 0x01, 0xc0, 0x01, 0xc2, +0x00, 0x3b, 0x01, 0xc6, 0x01, 0xca, 0x00, 0x3e, +0x01, 0xcc, 0x01, 0xce, 0x00, 0x43, 0x01, 0xd1, +0x01, 0xd3, 0x00, 0x46, 0x01, 0xd5, 0x01, 0xd6, +0x00, 0x49, 0x01, 0xda, 0x01, 0xda, 0x00, 0x4b, +0x01, 0xdf, 0x01, 0xe1, 0x00, 0x4c, 0x01, 0xe7, +0x01, 0xe7, 0x00, 0x4f, 0x01, 0xe9, 0x01, 0xec, +0x00, 0x50, 0x01, 0xee, 0x01, 0xee, 0x00, 0x54, +0x01, 0xf5, 0x01, 0xfa, 0x00, 0x55, 0x02, 0x09, +0x02, 0x09, 0x00, 0x5b, 0x02, 0x17, 0x02, 0x17, +0x00, 0x5c, 0x02, 0x23, 0x02, 0x23, 0x00, 0x5d, +0x02, 0x2e, 0x02, 0x2e, 0x00, 0x5e, 0x02, 0x37, +0x02, 0x37, 0x00, 0x5f, 0x02, 0x62, 0x02, 0x62, +0x00, 0x60, 0x02, 0x66, 0x02, 0x66, 0x00, 0x61, +0x02, 0x68, 0x02, 0x68, 0x00, 0x62, 0x02, 0x79, +0x02, 0x79, 0x00, 0x63, 0x04, 0xc3, 0x04, 0xd2, +0x00, 0x64, 0x04, 0xd4, 0x04, 0xdc, 0x00, 0x74, +0x05, 0x54, 0x05, 0x54, 0x00, 0x7d, 0x05, 0x72, +0x05, 0x72, 0x00, 0x7e, 0x05, 0x84, 0x05, 0x84, +0x00, 0x7f, 0x05, 0xa1, 0x05, 0xa2, 0x00, 0x80, +0x05, 0xa5, 0x05, 0xa7, 0x00, 0x82, 0x05, 0xa9, +0x05, 0xaa, 0x00, 0x85, 0x05, 0xac, 0x05, 0xad, +0x00, 0x87, 0x05, 0xaf, 0x05, 0xaf, 0x00, 0x89, +0x05, 0xb1, 0x05, 0xb1, 0x00, 0x8a, 0x05, 0xb3, +0x05, 0xb4, 0x00, 0x8b, 0x05, 0xb6, 0x05, 0xb6, +0x00, 0x8d, 0x05, 0xc3, 0x05, 0xc3, 0x00, 0x8e, +0x07, 0x20, 0x07, 0x20, 0x00, 0x8f, 0x00, 0x01, +0x00, 0x01, 0x07, 0x61, 0x00, 0x01, 0x00, 0x01, +0x07, 0x4b, 0x00, 0x01, 0x00, 0x07, 0x00, 0x12, +0x00, 0x18, 0x00, 0x2c, 0x00, 0x32, 0x04, 0xd1, +0x04, 0xd7, 0x07, 0x20, 0x00, 0x01, 0x00, 0x01, +0x07, 0x58, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x1e, +0x00, 0x22, 0x00, 0x26, 0x00, 0x2c, 0x00, 0x32, +0x01, 0x49, 0x01, 0xc0, 0x01, 0xc7, 0x01, 0xca, +0x02, 0x17, 0x07, 0x20, 0x00, 0x01, 0x00, 0x01, +0x07, 0x59, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x04, +0x00, 0x08, 0x00, 0x0c, 0x00, 0x12, 0x00, 0x18, +0x01, 0xda, 0x02, 0x09, 0x04, 0xc3, 0x04, 0xc7, +0x04, 0xcb, 0x04, 0xd1, 0x04, 0xd7, 0x05, 0x54, +0x00, 0x01, 0x00, 0x03, 0x07, 0x27, 0x07, 0x33, +0x07, 0x35, 0x00, 0x01, 0x00, 0x8c, 0x00, 0x09, +0x00, 0x19, 0x00, 0x35, 0x01, 0x76, 0x01, 0x77, +0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, +0x01, 0xc0, 0x01, 0xc4, 0x01, 0xc7, 0x01, 0xd3, +0x01, 0xd5, 0x01, 0xdf, 0x01, 0xe9, 0x01, 0xec, +0x01, 0xee, 0x01, 0xf7, 0x01, 0xf8, 0x01, 0xf9, +0x01, 0xfa, 0x01, 0xfb, 0x02, 0x43, 0x02, 0x46, +0x02, 0x4a, 0x02, 0x52, 0x02, 0x53, 0x02, 0x54, +0x02, 0x56, 0x02, 0x57, 0x02, 0x5f, 0x02, 0x60, +0x02, 0x67, 0x02, 0x6f, 0x02, 0x77, 0x02, 0x7a, +0x02, 0xbc, 0x02, 0xbd, 0x02, 0xbe, 0x02, 0xbf, +0x02, 0xc0, 0x02, 0xc1, 0x02, 0xc2, 0x02, 0xc3, +0x03, 0x0c, 0x03, 0x0d, 0x03, 0x0e, 0x03, 0x0f, +0x03, 0x10, 0x03, 0x14, 0x03, 0x62, 0x03, 0x8d, +0x03, 0x8e, 0x03, 0xa1, 0x03, 0xa4, 0x03, 0xa7, +0x03, 0xb1, 0x03, 0xbf, 0x03, 0xc3, 0x03, 0xc4, +0x03, 0xc5, 0x03, 0xd0, 0x03, 0xd5, 0x03, 0xe2, +0x03, 0xe3, 0x03, 0xe8, 0x03, 0xfd, 0x03, 0xfe, +0x04, 0x01, 0x04, 0x10, 0x04, 0x1d, 0x04, 0x1e, +0x04, 0x20, 0x04, 0x24, 0x04, 0x2a, 0x04, 0x2c, +0x04, 0x2d, 0x04, 0x2e, 0x04, 0x2f, 0x04, 0x4d, +0x04, 0x4f, 0x04, 0x50, 0x04, 0x51, 0x04, 0x52, +0x04, 0x53, 0x04, 0x54, 0x04, 0x55, 0x04, 0x56, +0x04, 0x63, 0x04, 0x64, 0x04, 0x65, 0x04, 0x66, +0x04, 0x67, 0x04, 0x68, 0x04, 0x69, 0x04, 0x6a, +0x04, 0x6b, 0x04, 0x6c, 0x04, 0x88, 0x04, 0x8a, +0x04, 0x99, 0x04, 0x9b, 0x04, 0x9d, 0x04, 0x9f, +0x04, 0xae, 0x04, 0xb0, 0x04, 0xb2, 0x04, 0xd3, +0x05, 0x72, 0x05, 0xbf, 0x05, 0xc0, 0x05, 0xc1, +0x05, 0xc2, 0x05, 0xc5, 0x05, 0xd3, 0x05, 0xd4, +0x05, 0xd7, 0x05, 0xe1, 0x05, 0xf1, 0x05, 0xf2, +0x05, 0xf3, 0x05, 0xf5, 0x05, 0xf8, 0x05, 0xfc, +0x05, 0xfd, 0x06, 0x0b, 0x06, 0x0c, 0x06, 0x0d, +0x06, 0x0e, 0x06, 0x10, 0x06, 0x11, 0x06, 0x12, +0x06, 0x13, 0x06, 0x14, 0x06, 0x1f, 0x06, 0xa8, +0x06, 0xa9, 0x06, 0xaa, 0x06, 0xac, 0x00, 0x01, +0x00, 0x0b, 0x01, 0xda, 0x01, 0xee, 0x03, 0x6d, +0x03, 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x83, +0x03, 0x84, 0x03, 0x85, 0x03, 0x86, 0x03, 0x87, +0x00, 0x01, 0x00, 0x01, 0x04, 0x3e, 0x00, 0x01, +0x00, 0x05, 0x03, 0x97, 0x03, 0x98, 0x03, 0xf1, +0x03, 0xf2, 0x05, 0xfe, 0x00, 0x01, 0x00, 0x1a, +0x01, 0xdf, 0x01, 0xf7, 0x01, 0xf8, 0x01, 0xf9, +0x01, 0xfa, 0x02, 0x71, 0x03, 0xd2, 0x03, 0xd6, +0x04, 0x2c, 0x04, 0x2d, 0x04, 0x54, 0x04, 0x6a, +0x04, 0x7d, 0x04, 0x7f, 0x04, 0x94, 0x04, 0x9f, +0x04, 0xa1, 0x05, 0xfa, 0x06, 0x0c, 0x06, 0x12, +0x06, 0x14, 0x06, 0x18, 0x06, 0x19, 0x06, 0x1b, +0x06, 0x1c, 0x06, 0x1f, 0x00, 0x02, 0x00, 0x20, +0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x22, +0x00, 0x25, 0x00, 0x1d, 0x00, 0x28, 0x01, 0x1a, +0x00, 0x21, 0x01, 0x1e, 0x01, 0x3c, 0x01, 0x14, +0x01, 0x49, 0x01, 0x49, 0x01, 0x33, 0x01, 0x4b, +0x01, 0x50, 0x01, 0x34, 0x01, 0x52, 0x01, 0x55, +0x01, 0x3a, 0x01, 0x57, 0x01, 0xba, 0x01, 0x3e, +0x01, 0xbc, 0x01, 0xbd, 0x01, 0xa2, 0x01, 0xc0, +0x01, 0xc4, 0x01, 0xa4, 0x01, 0xc7, 0x01, 0xc8, +0x01, 0xa9, 0x01, 0xca, 0x01, 0xca, 0x01, 0xab, +0x01, 0xce, 0x01, 0xce, 0x01, 0xac, 0x01, 0xd1, +0x01, 0xd3, 0x01, 0xad, 0x01, 0xd5, 0x01, 0xd8, +0x01, 0xb0, 0x01, 0xe0, 0x01, 0xe3, 0x01, 0xb4, +0x01, 0xe5, 0x01, 0xe6, 0x01, 0xb8, 0x01, 0xe8, +0x01, 0xe9, 0x01, 0xba, 0x01, 0xec, 0x01, 0xed, +0x01, 0xbc, 0x01, 0xef, 0x01, 0xf0, 0x01, 0xbe, +0x01, 0xf3, 0x01, 0xf3, 0x01, 0xc0, 0x01, 0xf6, +0x01, 0xf6, 0x01, 0xc1, 0x01, 0xfb, 0x01, 0xfc, +0x01, 0xc2, 0x02, 0x04, 0x02, 0x04, 0x01, 0xc4, +0x02, 0x07, 0x02, 0x36, 0x01, 0xc5, 0x02, 0x39, +0x02, 0x39, 0x01, 0xf5, 0x04, 0xc3, 0x04, 0xca, +0x01, 0xf6, 0x04, 0xcc, 0x05, 0x1e, 0x01, 0xfe, +0x05, 0x2c, 0x05, 0x30, 0x02, 0x51, 0x05, 0x32, +0x05, 0x9b, 0x02, 0x56, 0x05, 0x9d, 0x05, 0xa0, +0x02, 0xc0, 0x07, 0x97, 0x07, 0x97, 0x02, 0xc4, +0x00, 0x02, 0x00, 0x06, 0x02, 0x41, 0x02, 0x70, +0x00, 0x00, 0x02, 0x72, 0x03, 0x64, 0x00, 0x30, +0x03, 0x66, 0x03, 0x66, 0x01, 0x23, 0x03, 0x70, +0x03, 0x70, 0x01, 0x24, 0x05, 0xa1, 0x05, 0xbd, +0x01, 0x25, 0x06, 0xeb, 0x06, 0xec, 0x01, 0x42, +0x00, 0x02, 0x00, 0x21, 0x03, 0x8a, 0x03, 0x90, +0x00, 0x00, 0x03, 0x93, 0x03, 0x96, 0x00, 0x07, +0x03, 0x99, 0x03, 0xb5, 0x00, 0x0b, 0x03, 0xb7, +0x03, 0xbb, 0x00, 0x28, 0x03, 0xbe, 0x03, 0xc6, +0x00, 0x2d, 0x03, 0xc9, 0x03, 0xca, 0x00, 0x36, +0x03, 0xcd, 0x03, 0xcd, 0x00, 0x38, 0x03, 0xd0, +0x03, 0xd1, 0x00, 0x39, 0x03, 0xd4, 0x03, 0xd5, +0x00, 0x3b, 0x03, 0xd7, 0x03, 0xd8, 0x00, 0x3d, +0x03, 0xdb, 0x03, 0xea, 0x00, 0x3f, 0x03, 0xed, +0x03, 0xf0, 0x00, 0x4f, 0x03, 0xf3, 0x04, 0x0d, +0x00, 0x53, 0x04, 0x12, 0x04, 0x15, 0x00, 0x6e, +0x04, 0x18, 0x04, 0x20, 0x00, 0x72, 0x04, 0x23, +0x04, 0x24, 0x00, 0x7b, 0x04, 0x27, 0x04, 0x27, +0x00, 0x7d, 0x04, 0x2a, 0x04, 0x2b, 0x00, 0x7e, +0x04, 0x2e, 0x04, 0x31, 0x00, 0x80, 0x04, 0x35, +0x04, 0x3d, 0x00, 0x84, 0x05, 0xbe, 0x05, 0xc5, +0x00, 0x8d, 0x05, 0xc8, 0x05, 0xc8, 0x00, 0x95, +0x05, 0xcc, 0x05, 0xcc, 0x00, 0x96, 0x05, 0xce, +0x05, 0xd4, 0x00, 0x97, 0x05, 0xd7, 0x05, 0xd8, +0x00, 0x9e, 0x05, 0xda, 0x05, 0xdc, 0x00, 0xa0, +0x05, 0xde, 0x05, 0xe3, 0x00, 0xa3, 0x05, 0xe7, +0x05, 0xeb, 0x00, 0xa9, 0x05, 0xed, 0x05, 0xed, +0x00, 0xae, 0x05, 0xef, 0x05, 0xf9, 0x00, 0xaf, +0x05, 0xfc, 0x05, 0xfd, 0x00, 0xba, 0x06, 0x00, +0x06, 0x04, 0x00, 0xbc, 0x06, 0x06, 0x06, 0x09, +0x00, 0xc1, 0x00, 0x02, 0x00, 0x0b, 0x04, 0x77, +0x04, 0x7c, 0x00, 0x00, 0x04, 0x7e, 0x04, 0x7e, +0x00, 0x06, 0x04, 0x80, 0x04, 0x8f, 0x00, 0x07, +0x04, 0x92, 0x04, 0x93, 0x00, 0x17, 0x04, 0x99, +0x04, 0x99, 0x00, 0x19, 0x04, 0x9b, 0x04, 0x9b, +0x00, 0x1a, 0x04, 0x9d, 0x04, 0x9d, 0x00, 0x1b, +0x04, 0xa9, 0x04, 0xae, 0x00, 0x1c, 0x04, 0xb0, +0x04, 0xb0, 0x00, 0x22, 0x04, 0xb2, 0x04, 0xb2, +0x00, 0x23, 0x07, 0x0a, 0x07, 0x0d, 0x00, 0x24, +0x00, 0x02, 0x00, 0x0a, 0x01, 0xee, 0x01, 0xee, +0x00, 0x01, 0x03, 0x6d, 0x03, 0x6d, 0x00, 0x09, +0x03, 0x80, 0x03, 0x80, 0x00, 0x05, 0x03, 0x81, +0x03, 0x81, 0x00, 0x02, 0x03, 0x82, 0x03, 0x82, +0x00, 0x0a, 0x03, 0x83, 0x03, 0x83, 0x00, 0x08, +0x03, 0x84, 0x03, 0x84, 0x00, 0x07, 0x03, 0x85, +0x03, 0x85, 0x00, 0x04, 0x03, 0x86, 0x03, 0x86, +0x00, 0x06, 0x03, 0x87, 0x03, 0x87, 0x00, 0x03, +0x00, 0x02, 0x00, 0x24, 0x00, 0x06, 0x00, 0x06, +0x00, 0x04, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x04, +0x00, 0x12, 0x00, 0x12, 0x00, 0x04, 0x00, 0x14, +0x00, 0x14, 0x00, 0x04, 0x00, 0x20, 0x00, 0x22, +0x00, 0x03, 0x00, 0x23, 0x00, 0x23, 0x00, 0x01, +0x00, 0x24, 0x00, 0x24, 0x00, 0x02, 0x00, 0x2c, +0x00, 0x2c, 0x00, 0x03, 0x00, 0x2e, 0x00, 0x2e, +0x00, 0x03, 0x00, 0x31, 0x00, 0x31, 0x00, 0x05, +0x00, 0x33, 0x00, 0x33, 0x00, 0x06, 0x00, 0x34, +0x00, 0x34, 0x00, 0x07, 0x00, 0x36, 0x00, 0x36, +0x00, 0x08, 0x00, 0x53, 0x00, 0x57, 0x00, 0x04, +0x00, 0x6e, 0x00, 0x76, 0x00, 0x04, 0x00, 0x9e, +0x00, 0xb7, 0x00, 0x04, 0x01, 0x15, 0x01, 0x2f, +0x00, 0x03, 0x01, 0x30, 0x01, 0x37, 0x00, 0x02, +0x01, 0x63, 0x01, 0x7c, 0x00, 0x03, 0x01, 0x8c, +0x01, 0x92, 0x00, 0x05, 0x01, 0xaa, 0x01, 0xad, +0x00, 0x07, 0x01, 0xae, 0x01, 0xb5, 0x00, 0x08, +0x01, 0xc4, 0x01, 0xc6, 0x00, 0x03, 0x01, 0xc8, +0x01, 0xc8, 0x00, 0x03, 0x01, 0xd0, 0x01, 0xd2, +0x00, 0x03, 0x01, 0xd3, 0x01, 0xd3, 0x00, 0x08, +0x01, 0xe6, 0x01, 0xe8, 0x00, 0x03, 0x01, 0xf3, +0x01, 0xf3, 0x00, 0x05, 0x02, 0x04, 0x02, 0x04, +0x00, 0x01, 0x02, 0x07, 0x02, 0x08, 0x00, 0x01, +0x02, 0x09, 0x02, 0x15, 0x00, 0x0a, 0x02, 0x17, +0x02, 0x36, 0x00, 0x03, 0x02, 0x40, 0x02, 0x40, +0x00, 0x01, 0x04, 0xdb, 0x04, 0xdb, 0x00, 0x09, +0x05, 0x8e, 0x05, 0x95, 0x00, 0x09, 0x07, 0x96, +0x07, 0x97, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, +0x00, 0x02, 0x00, 0x04, 0x02, 0x64, 0x02, 0x64, +0x00, 0x02, 0x02, 0x6e, 0x02, 0x6e, 0x00, 0x03, +0x02, 0x74, 0x02, 0x74, 0x00, 0x04, 0x02, 0x77, +0x02, 0x77, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, +0x03, 0x98, 0x03, 0x98, 0x00, 0x01, 0x03, 0xf1, +0x03, 0xf1, 0x00, 0x03, 0x03, 0xf2, 0x03, 0xf2, +0x00, 0x04, 0x05, 0xfe, 0x05, 0xfe, 0x00, 0x02, +0x00, 0x02, 0x00, 0x25, 0x03, 0xe4, 0x03, 0xe4, +0x00, 0x0e, 0x03, 0xe5, 0x03, 0xe5, 0x00, 0x09, +0x03, 0xe8, 0x03, 0xe8, 0x00, 0x02, 0x03, 0xe9, +0x03, 0xe9, 0x00, 0x0a, 0x03, 0xf3, 0x03, 0xf3, +0x00, 0x03, 0x03, 0xf6, 0x03, 0xf6, 0x00, 0x0a, +0x03, 0xf9, 0x03, 0xf9, 0x00, 0x0a, 0x03, 0xfa, +0x03, 0xfa, 0x00, 0x05, 0x03, 0xfb, 0x03, 0xfb, +0x00, 0x06, 0x03, 0xfc, 0x03, 0xfc, 0x00, 0x0a, +0x03, 0xff, 0x03, 0xff, 0x00, 0x01, 0x04, 0x02, +0x04, 0x02, 0x00, 0x05, 0x04, 0x05, 0x04, 0x05, +0x00, 0x0f, 0x04, 0x07, 0x04, 0x07, 0x00, 0x08, +0x04, 0x08, 0x04, 0x09, 0x00, 0x0a, 0x04, 0x0c, +0x04, 0x0c, 0x00, 0x0a, 0x04, 0x12, 0x04, 0x12, +0x00, 0x03, 0x04, 0x19, 0x04, 0x19, 0x00, 0x06, +0x04, 0x1b, 0x04, 0x1b, 0x00, 0x07, 0x04, 0x1c, +0x04, 0x1c, 0x00, 0x0a, 0x04, 0x1d, 0x04, 0x1d, +0x00, 0x04, 0x04, 0x27, 0x04, 0x27, 0x00, 0x05, +0x04, 0x2b, 0x04, 0x2b, 0x00, 0x0a, 0x04, 0x2c, +0x04, 0x2d, 0x00, 0x04, 0x04, 0x2f, 0x04, 0x2f, +0x00, 0x01, 0x04, 0x35, 0x04, 0x36, 0x00, 0x0e, +0x04, 0x37, 0x04, 0x37, 0x00, 0x0a, 0x04, 0x3a, +0x04, 0x3b, 0x00, 0x0a, 0x04, 0x3c, 0x04, 0x3d, +0x00, 0x06, 0x05, 0xd0, 0x05, 0xd0, 0x00, 0x0c, +0x05, 0xd5, 0x05, 0xd5, 0x00, 0x0b, 0x05, 0xd8, +0x05, 0xd8, 0x00, 0x0c, 0x05, 0xe0, 0x05, 0xe0, +0x00, 0x0c, 0x05, 0xea, 0x05, 0xea, 0x00, 0x0c, +0x05, 0xef, 0x05, 0xef, 0x00, 0x0d, 0x05, 0xf7, +0x05, 0xf7, 0x00, 0x0c, 0x05, 0xfd, 0x05, 0xfd, +0x00, 0x0b, 0x00, 0x02, 0x00, 0x19, 0x01, 0xf7, +0x01, 0xf7, 0x00, 0x17, 0x01, 0xf8, 0x01, 0xf8, +0x00, 0x18, 0x01, 0xf9, 0x01, 0xf9, 0x00, 0x19, +0x01, 0xfa, 0x01, 0xfa, 0x00, 0x04, 0x02, 0x71, +0x02, 0x71, 0x00, 0x0b, 0x03, 0xd2, 0x03, 0xd2, +0x00, 0x02, 0x03, 0xd6, 0x03, 0xd6, 0x00, 0x01, +0x04, 0x2c, 0x04, 0x2c, 0x00, 0x15, 0x04, 0x2d, +0x04, 0x2d, 0x00, 0x16, 0x04, 0x54, 0x04, 0x54, +0x00, 0x12, 0x04, 0x6a, 0x04, 0x6a, 0x00, 0x11, +0x04, 0x7d, 0x04, 0x7d, 0x00, 0x06, 0x04, 0x7f, +0x04, 0x7f, 0x00, 0x0c, 0x04, 0x94, 0x04, 0x94, +0x00, 0x0a, 0x04, 0x9f, 0x04, 0x9f, 0x00, 0x14, +0x04, 0xa1, 0x04, 0xa1, 0x00, 0x05, 0x05, 0xfa, +0x05, 0xfa, 0x00, 0x03, 0x06, 0x0c, 0x06, 0x0c, +0x00, 0x09, 0x06, 0x12, 0x06, 0x12, 0x00, 0x13, +0x06, 0x14, 0x06, 0x14, 0x00, 0x08, 0x06, 0x18, +0x06, 0x18, 0x00, 0x0d, 0x06, 0x19, 0x06, 0x19, +0x00, 0x10, 0x06, 0x1b, 0x06, 0x1b, 0x00, 0x0e, +0x06, 0x1c, 0x06, 0x1c, 0x00, 0x0f, 0x06, 0x1f, +0x06, 0x1f, 0x00, 0x07, 0x00, 0x02, 0x01, 0x3c, +0x00, 0x04, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x06, +0x00, 0x06, 0x00, 0x6d, 0x00, 0x0a, 0x00, 0x0a, +0x00, 0x6d, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x74, +0x00, 0x12, 0x00, 0x12, 0x00, 0x6d, 0x00, 0x14, +0x00, 0x14, 0x00, 0x6d, 0x00, 0x16, 0x00, 0x16, +0x00, 0x5d, 0x00, 0x17, 0x00, 0x17, 0x00, 0x3b, +0x00, 0x18, 0x00, 0x18, 0x00, 0x3c, 0x00, 0x19, +0x00, 0x19, 0x00, 0x3e, 0x00, 0x1a, 0x00, 0x1a, +0x00, 0x40, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x5f, +0x00, 0x1c, 0x00, 0x1c, 0x00, 0x42, 0x00, 0x1d, +0x00, 0x1d, 0x00, 0x60, 0x00, 0x1e, 0x00, 0x1e, +0x00, 0x6a, 0x00, 0x20, 0x00, 0x22, 0x00, 0x6c, +0x00, 0x23, 0x00, 0x23, 0x00, 0x6b, 0x00, 0x24, +0x00, 0x24, 0x00, 0x38, 0x00, 0x26, 0x00, 0x26, +0x00, 0x73, 0x00, 0x27, 0x00, 0x27, 0x00, 0x3a, +0x00, 0x2c, 0x00, 0x2c, 0x00, 0x6c, 0x00, 0x2e, +0x00, 0x2e, 0x00, 0x6c, 0x00, 0x31, 0x00, 0x31, +0x00, 0x76, 0x00, 0x32, 0x00, 0x32, 0x00, 0x77, +0x00, 0x33, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x34, +0x00, 0x34, 0x00, 0x3f, 0x00, 0x35, 0x00, 0x35, +0x00, 0x5e, 0x00, 0x36, 0x00, 0x36, 0x00, 0x41, +0x00, 0x37, 0x00, 0x37, 0x00, 0x78, 0x00, 0x38, +0x00, 0x4d, 0x00, 0x5c, 0x00, 0x51, 0x00, 0x51, +0x00, 0x37, 0x00, 0x53, 0x00, 0x57, 0x00, 0x6d, +0x00, 0x5b, 0x00, 0x5b, 0x00, 0x37, 0x00, 0x6e, +0x00, 0x76, 0x00, 0x6d, 0x00, 0x7a, 0x00, 0x7a, +0x00, 0x39, 0x00, 0x87, 0x00, 0x87, 0x00, 0x74, +0x00, 0x9e, 0x00, 0xb7, 0x00, 0x6d, 0x00, 0xbf, +0x00, 0xc5, 0x00, 0x5d, 0x00, 0xc7, 0x00, 0xcc, +0x00, 0x3b, 0x00, 0xcd, 0x00, 0xe3, 0x00, 0x3c, +0x00, 0xe4, 0x00, 0xe7, 0x00, 0x40, 0x00, 0xe8, +0x00, 0xef, 0x00, 0x42, 0x00, 0xf0, 0x00, 0xf4, +0x00, 0x60, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0x37, +0x00, 0xf7, 0x00, 0xf7, 0x00, 0x75, 0x00, 0xfa, +0x01, 0x12, 0x00, 0x6a, 0x01, 0x15, 0x01, 0x2f, +0x00, 0x6c, 0x01, 0x30, 0x01, 0x37, 0x00, 0x38, +0x01, 0x3d, 0x01, 0x48, 0x00, 0x73, 0x01, 0x4a, +0x01, 0x4a, 0x00, 0x3a, 0x01, 0x63, 0x01, 0x7c, +0x00, 0x6c, 0x01, 0x8c, 0x01, 0x92, 0x00, 0x76, +0x01, 0x93, 0x01, 0xa9, 0x00, 0x77, 0x01, 0xaa, +0x01, 0xad, 0x00, 0x3f, 0x01, 0xae, 0x01, 0xb5, +0x00, 0x41, 0x01, 0xb6, 0x01, 0xba, 0x00, 0x78, +0x01, 0xbe, 0x01, 0xbe, 0x00, 0x3a, 0x01, 0xbf, +0x01, 0xbf, 0x00, 0x73, 0x01, 0xc0, 0x01, 0xc0, +0x00, 0x77, 0x01, 0xc4, 0x01, 0xc6, 0x00, 0x6c, +0x01, 0xc8, 0x01, 0xc8, 0x00, 0x6c, 0x01, 0xcf, +0x01, 0xcf, 0x00, 0x3a, 0x01, 0xd0, 0x01, 0xd2, +0x00, 0x6c, 0x01, 0xd3, 0x01, 0xd3, 0x00, 0x41, +0x01, 0xd5, 0x01, 0xd5, 0x00, 0x77, 0x01, 0xe0, +0x01, 0xe1, 0x00, 0x77, 0x01, 0xe3, 0x01, 0xe3, +0x00, 0x3a, 0x01, 0xe6, 0x01, 0xe8, 0x00, 0x6c, +0x01, 0xf1, 0x01, 0xf2, 0x00, 0x3a, 0x01, 0xf3, +0x01, 0xf3, 0x00, 0x76, 0x01, 0xf6, 0x01, 0xf6, +0x00, 0x77, 0x01, 0xfb, 0x01, 0xfc, 0x00, 0x78, +0x02, 0x04, 0x02, 0x04, 0x00, 0x6b, 0x02, 0x07, +0x02, 0x08, 0x00, 0x6b, 0x02, 0x17, 0x02, 0x36, +0x00, 0x6c, 0x02, 0x40, 0x02, 0x40, 0x00, 0x6b, +0x02, 0x41, 0x02, 0x41, 0x00, 0x53, 0x02, 0x44, +0x02, 0x44, 0x00, 0x56, 0x02, 0x46, 0x02, 0x46, +0x00, 0x5b, 0x02, 0x48, 0x02, 0x48, 0x00, 0x69, +0x02, 0x4b, 0x02, 0x4b, 0x00, 0x53, 0x02, 0x4e, +0x02, 0x4e, 0x00, 0x5a, 0x02, 0x4f, 0x02, 0x4f, +0x00, 0x69, 0x02, 0x52, 0x02, 0x52, 0x00, 0x59, +0x02, 0x53, 0x02, 0x53, 0x00, 0x35, 0x02, 0x54, +0x02, 0x54, 0x00, 0x36, 0x02, 0x56, 0x02, 0x56, +0x00, 0x55, 0x02, 0x57, 0x02, 0x57, 0x00, 0x58, +0x02, 0x59, 0x02, 0x59, 0x00, 0x72, 0x02, 0x60, +0x02, 0x60, 0x00, 0x36, 0x02, 0x62, 0x02, 0x62, +0x00, 0x61, 0x02, 0x64, 0x02, 0x64, 0x00, 0x62, +0x02, 0x6c, 0x02, 0x6c, 0x00, 0x57, 0x02, 0x6e, +0x02, 0x6e, 0x00, 0x63, 0x02, 0x70, 0x02, 0x70, +0x00, 0x64, 0x02, 0x73, 0x02, 0x73, 0x00, 0x64, +0x02, 0x74, 0x02, 0x74, 0x00, 0x65, 0x02, 0x76, +0x02, 0x76, 0x00, 0x64, 0x02, 0x77, 0x02, 0x77, +0x00, 0x54, 0x02, 0x79, 0x02, 0x7a, 0x00, 0x64, +0x02, 0x7d, 0x02, 0x7d, 0x00, 0x64, 0x02, 0x7e, +0x02, 0x7e, 0x00, 0x61, 0x02, 0x83, 0x02, 0x83, +0x00, 0x64, 0x02, 0x86, 0x02, 0x86, 0x00, 0x64, +0x02, 0x89, 0x02, 0x92, 0x00, 0x72, 0x02, 0x93, +0x02, 0x94, 0x00, 0x53, 0x02, 0xc2, 0x02, 0xc3, +0x00, 0x36, 0x02, 0xce, 0x02, 0xce, 0x00, 0x53, +0x02, 0xcf, 0x02, 0xd6, 0x00, 0x72, 0x02, 0xe9, +0x02, 0xf5, 0x00, 0x61, 0x03, 0x19, 0x03, 0x20, +0x00, 0x64, 0x03, 0x33, 0x03, 0x3d, 0x00, 0x64, +0x03, 0x3e, 0x03, 0x49, 0x00, 0x61, 0x03, 0x56, +0x03, 0x61, 0x00, 0x64, 0x03, 0x63, 0x03, 0x64, +0x00, 0x64, 0x03, 0x8a, 0x03, 0x8a, 0x00, 0x4c, +0x03, 0x8e, 0x03, 0x8e, 0x00, 0x14, 0x03, 0x90, +0x03, 0x90, 0x00, 0x51, 0x03, 0x93, 0x03, 0x93, +0x00, 0x26, 0x03, 0x99, 0x03, 0x99, 0x00, 0x19, +0x03, 0x9c, 0x03, 0x9c, 0x00, 0x68, 0x03, 0x9f, +0x03, 0x9f, 0x00, 0x68, 0x03, 0xa0, 0x03, 0xa0, +0x00, 0x33, 0x03, 0xa1, 0x03, 0xa1, 0x00, 0x1e, +0x03, 0xa2, 0x03, 0xa2, 0x00, 0x16, 0x03, 0xa3, +0x03, 0xa3, 0x00, 0x4f, 0x03, 0xa5, 0x03, 0xa5, +0x00, 0x11, 0x03, 0xa8, 0x03, 0xa8, 0x00, 0x33, +0x03, 0xab, 0x03, 0xab, 0x00, 0x26, 0x03, 0xad, +0x03, 0xad, 0x00, 0x23, 0x03, 0xb0, 0x03, 0xb0, +0x00, 0x33, 0x03, 0xb2, 0x03, 0xb2, 0x00, 0x68, +0x03, 0xb3, 0x03, 0xb3, 0x00, 0x4d, 0x03, 0xb7, +0x03, 0xb7, 0x00, 0x71, 0x03, 0xb8, 0x03, 0xb8, +0x00, 0x19, 0x03, 0xba, 0x03, 0xba, 0x00, 0x33, +0x03, 0xbf, 0x03, 0xbf, 0x00, 0x1e, 0x03, 0xc1, +0x03, 0xc1, 0x00, 0x50, 0x03, 0xc2, 0x03, 0xc2, +0x00, 0x68, 0x03, 0xc3, 0x03, 0xc3, 0x00, 0x31, +0x03, 0xc6, 0x03, 0xc6, 0x00, 0x51, 0x03, 0xc9, +0x03, 0xc9, 0x00, 0x26, 0x03, 0xcd, 0x03, 0xcd, +0x00, 0x33, 0x03, 0xd1, 0x03, 0xd1, 0x00, 0x68, +0x03, 0xd4, 0x03, 0xd4, 0x00, 0x4f, 0x03, 0xd5, +0x03, 0xd5, 0x00, 0x11, 0x03, 0xd8, 0x03, 0xd8, +0x00, 0x51, 0x03, 0xdb, 0x03, 0xdb, 0x00, 0x4c, +0x03, 0xe0, 0x03, 0xe1, 0x00, 0x68, 0x03, 0xe2, +0x03, 0xe3, 0x00, 0x1e, 0x03, 0xe4, 0x03, 0xe4, +0x00, 0x66, 0x03, 0xe5, 0x03, 0xe5, 0x00, 0x0e, +0x03, 0xe6, 0x03, 0xe7, 0x00, 0x1a, 0x03, 0xe8, +0x03, 0xe8, 0x00, 0x12, 0x03, 0xe9, 0x03, 0xe9, +0x00, 0x67, 0x03, 0xea, 0x03, 0xea, 0x00, 0x27, +0x03, 0xed, 0x03, 0xed, 0x00, 0x24, 0x03, 0xee, +0x03, 0xf0, 0x00, 0x1a, 0x03, 0xf3, 0x03, 0xf3, +0x00, 0x17, 0x03, 0xf4, 0x03, 0xf5, 0x00, 0x1a, +0x03, 0xf6, 0x03, 0xf6, 0x00, 0x67, 0x03, 0xf7, +0x03, 0xf7, 0x00, 0x1a, 0x03, 0xf9, 0x03, 0xf9, +0x00, 0x67, 0x03, 0xfa, 0x03, 0xfa, 0x00, 0x1c, +0x03, 0xfb, 0x03, 0xfb, 0x00, 0x34, 0x03, 0xfc, +0x03, 0xfc, 0x00, 0x67, 0x03, 0xfd, 0x03, 0xfd, +0x00, 0x4e, 0x03, 0xfe, 0x03, 0xfe, 0x00, 0x1a, +0x03, 0xff, 0x03, 0xff, 0x00, 0x0f, 0x04, 0x00, +0x04, 0x01, 0x00, 0x1a, 0x04, 0x02, 0x04, 0x02, +0x00, 0x1c, 0x04, 0x03, 0x04, 0x04, 0x00, 0x1a, +0x04, 0x05, 0x04, 0x05, 0x00, 0x15, 0x04, 0x06, +0x04, 0x06, 0x00, 0x1a, 0x04, 0x07, 0x04, 0x07, +0x00, 0x21, 0x04, 0x08, 0x04, 0x09, 0x00, 0x67, +0x04, 0x0b, 0x04, 0x0b, 0x00, 0x1a, 0x04, 0x0c, +0x04, 0x0c, 0x00, 0x67, 0x04, 0x0e, 0x04, 0x0f, +0x00, 0x70, 0x04, 0x11, 0x04, 0x11, 0x00, 0x32, +0x04, 0x12, 0x04, 0x12, 0x00, 0x17, 0x04, 0x13, +0x04, 0x13, 0x00, 0x1a, 0x04, 0x15, 0x04, 0x15, +0x00, 0x1a, 0x04, 0x18, 0x04, 0x18, 0x00, 0x1a, +0x04, 0x19, 0x04, 0x19, 0x00, 0x34, 0x04, 0x1a, +0x04, 0x1a, 0x00, 0x1a, 0x04, 0x1b, 0x04, 0x1b, +0x00, 0x1f, 0x04, 0x1c, 0x04, 0x1c, 0x00, 0x67, +0x04, 0x1d, 0x04, 0x1d, 0x00, 0x30, 0x04, 0x1e, +0x04, 0x1e, 0x00, 0x1a, 0x04, 0x20, 0x04, 0x20, +0x00, 0x27, 0x04, 0x23, 0x04, 0x23, 0x00, 0x24, +0x04, 0x24, 0x04, 0x24, 0x00, 0x1a, 0x04, 0x27, +0x04, 0x27, 0x00, 0x1c, 0x04, 0x2a, 0x04, 0x2a, +0x00, 0x1a, 0x04, 0x2b, 0x04, 0x2b, 0x00, 0x67, +0x04, 0x2c, 0x04, 0x2d, 0x00, 0x30, 0x04, 0x2e, +0x04, 0x2e, 0x00, 0x4e, 0x04, 0x2f, 0x04, 0x2f, +0x00, 0x0f, 0x04, 0x31, 0x04, 0x31, 0x00, 0x27, +0x04, 0x35, 0x04, 0x36, 0x00, 0x66, 0x04, 0x37, +0x04, 0x37, 0x00, 0x67, 0x04, 0x39, 0x04, 0x39, +0x00, 0x1a, 0x04, 0x3a, 0x04, 0x3b, 0x00, 0x67, +0x04, 0x3c, 0x04, 0x3d, 0x00, 0x34, 0x04, 0x77, +0x04, 0x78, 0x00, 0x09, 0x04, 0x7b, 0x04, 0x7b, +0x00, 0x09, 0x04, 0x7e, 0x04, 0x7e, 0x00, 0x0a, +0x04, 0x80, 0x04, 0x81, 0x00, 0x0d, 0x04, 0x82, +0x04, 0x82, 0x00, 0x0b, 0x04, 0x83, 0x04, 0x83, +0x00, 0x0c, 0x04, 0x84, 0x04, 0x84, 0x00, 0x0b, +0x04, 0x85, 0x04, 0x85, 0x00, 0x0c, 0x04, 0x86, +0x04, 0x87, 0x00, 0x09, 0x04, 0x89, 0x04, 0x89, +0x00, 0x29, 0x04, 0x8b, 0x04, 0x8b, 0x00, 0x29, +0x04, 0xaa, 0x04, 0xaa, 0x00, 0x0a, 0x04, 0xac, +0x04, 0xad, 0x00, 0x0a, 0x04, 0xc2, 0x04, 0xc2, +0x00, 0x73, 0x04, 0xc3, 0x04, 0xc3, 0x00, 0x01, +0x04, 0xc5, 0x04, 0xc5, 0x00, 0x02, 0x04, 0xc9, +0x04, 0xc9, 0x00, 0x02, 0x04, 0xcc, 0x04, 0xcc, +0x00, 0x2e, 0x04, 0xd1, 0x04, 0xd1, 0x00, 0x02, +0x04, 0xd3, 0x04, 0xd3, 0x00, 0x02, 0x04, 0xd5, +0x04, 0xd5, 0x00, 0x03, 0x04, 0xd6, 0x04, 0xd6, +0x00, 0x04, 0x04, 0xd7, 0x04, 0xd7, 0x00, 0x05, +0x04, 0xd8, 0x04, 0xd8, 0x00, 0x06, 0x04, 0xd9, +0x04, 0xd9, 0x00, 0x07, 0x04, 0xda, 0x04, 0xda, +0x00, 0x4b, 0x04, 0xdb, 0x04, 0xdb, 0x00, 0x08, +0x04, 0xdc, 0x04, 0xdc, 0x00, 0x2f, 0x04, 0xdd, +0x04, 0xf2, 0x00, 0x01, 0x04, 0xf8, 0x04, 0xfc, +0x00, 0x02, 0x05, 0x13, 0x05, 0x1b, 0x00, 0x02, +0x05, 0x2c, 0x05, 0x2c, 0x00, 0x2e, 0x05, 0x43, +0x05, 0x5c, 0x00, 0x02, 0x05, 0x64, 0x05, 0x6b, +0x00, 0x03, 0x05, 0x6c, 0x05, 0x6c, 0x00, 0x6f, +0x05, 0x6d, 0x05, 0x72, 0x00, 0x04, 0x05, 0x73, +0x05, 0x89, 0x00, 0x05, 0x05, 0x8a, 0x05, 0x8d, +0x00, 0x07, 0x05, 0x8e, 0x05, 0x95, 0x00, 0x08, +0x05, 0x96, 0x05, 0x9a, 0x00, 0x2f, 0x05, 0xa1, +0x05, 0xa1, 0x00, 0x52, 0x05, 0xa6, 0x05, 0xa6, +0x00, 0x4a, 0x05, 0xa8, 0x05, 0xa8, 0x00, 0x6e, +0x05, 0xab, 0x05, 0xab, 0x00, 0x52, 0x05, 0xaf, +0x05, 0xaf, 0x00, 0x6e, 0x05, 0xb3, 0x05, 0xb3, +0x00, 0x48, 0x05, 0xb4, 0x05, 0xb4, 0x00, 0x49, +0x05, 0xb6, 0x05, 0xb6, 0x00, 0x47, 0x05, 0xba, +0x05, 0xba, 0x00, 0x49, 0x05, 0xbb, 0x05, 0xbb, +0x00, 0x52, 0x05, 0xbe, 0x05, 0xbe, 0x00, 0x2a, +0x05, 0xbf, 0x05, 0xc1, 0x00, 0x1b, 0x05, 0xc2, +0x05, 0xc2, 0x00, 0x13, 0x05, 0xc3, 0x05, 0xc3, +0x00, 0x1b, 0x05, 0xc4, 0x05, 0xc4, 0x00, 0x28, +0x05, 0xc5, 0x05, 0xc5, 0x00, 0x25, 0x05, 0xc6, +0x05, 0xc8, 0x00, 0x1b, 0x05, 0xc9, 0x05, 0xc9, +0x00, 0x18, 0x05, 0xca, 0x05, 0xcb, 0x00, 0x1b, +0x05, 0xcc, 0x05, 0xcc, 0x00, 0x2c, 0x05, 0xcd, +0x05, 0xce, 0x00, 0x1b, 0x05, 0xcf, 0x05, 0xcf, +0x00, 0x2c, 0x05, 0xd0, 0x05, 0xd0, 0x00, 0x1d, +0x05, 0xd1, 0x05, 0xd1, 0x00, 0x2d, 0x05, 0xd2, +0x05, 0xd2, 0x00, 0x2b, 0x05, 0xd3, 0x05, 0xd3, +0x00, 0x44, 0x05, 0xd4, 0x05, 0xd4, 0x00, 0x1b, +0x05, 0xd5, 0x05, 0xd5, 0x00, 0x10, 0x05, 0xd6, +0x05, 0xd7, 0x00, 0x1b, 0x05, 0xd8, 0x05, 0xd8, +0x00, 0x1d, 0x05, 0xd9, 0x05, 0xda, 0x00, 0x1b, +0x05, 0xdb, 0x05, 0xdb, 0x00, 0x25, 0x05, 0xdc, +0x05, 0xdc, 0x00, 0x1b, 0x05, 0xdd, 0x05, 0xdd, +0x00, 0x22, 0x05, 0xde, 0x05, 0xdf, 0x00, 0x1b, +0x05, 0xe0, 0x05, 0xe0, 0x00, 0x1d, 0x05, 0xe1, +0x05, 0xe1, 0x00, 0x1b, 0x05, 0xe2, 0x05, 0xe2, +0x00, 0x2c, 0x05, 0xe3, 0x05, 0xe3, 0x00, 0x43, +0x05, 0xe4, 0x05, 0xe5, 0x00, 0x1b, 0x05, 0xe7, +0x05, 0xe7, 0x00, 0x46, 0x05, 0xe8, 0x05, 0xe8, +0x00, 0x18, 0x05, 0xe9, 0x05, 0xe9, 0x00, 0x1b, +0x05, 0xea, 0x05, 0xea, 0x00, 0x1d, 0x05, 0xeb, +0x05, 0xec, 0x00, 0x1b, 0x05, 0xed, 0x05, 0xed, +0x00, 0x2d, 0x05, 0xee, 0x05, 0xee, 0x00, 0x1b, +0x05, 0xef, 0x05, 0xef, 0x00, 0x20, 0x05, 0xf0, +0x05, 0xf0, 0x00, 0x2c, 0x05, 0xf1, 0x05, 0xf1, +0x00, 0x45, 0x05, 0xf2, 0x05, 0xf2, 0x00, 0x1b, +0x05, 0xf4, 0x05, 0xf4, 0x00, 0x28, 0x05, 0xf5, +0x05, 0xf5, 0x00, 0x25, 0x05, 0xf6, 0x05, 0xf6, +0x00, 0x1b, 0x05, 0xf7, 0x05, 0xf7, 0x00, 0x1d, +0x05, 0xf8, 0x05, 0xf8, 0x00, 0x1b, 0x05, 0xf9, +0x05, 0xf9, 0x00, 0x2c, 0x05, 0xfc, 0x05, 0xfc, +0x00, 0x44, 0x05, 0xfd, 0x05, 0xfd, 0x00, 0x10, +0x05, 0xfe, 0x05, 0xff, 0x00, 0x1b, 0x06, 0x00, +0x06, 0x00, 0x00, 0x28, 0x06, 0x01, 0x06, 0x01, +0x00, 0x2a, 0x06, 0x03, 0x06, 0x03, 0x00, 0x1b, +0x06, 0x05, 0x06, 0x05, 0x00, 0x1b, 0x06, 0x06, +0x06, 0x07, 0x00, 0x2c, 0x06, 0x08, 0x06, 0x09, +0x00, 0x2d, 0x06, 0xeb, 0x06, 0xeb, 0x00, 0x56, +0x07, 0x0a, 0x07, 0x0a, 0x00, 0x0b, 0x07, 0x0b, +0x07, 0x0c, 0x00, 0x0c, 0x07, 0x0d, 0x07, 0x0d, +0x00, 0x0b, 0x07, 0x96, 0x07, 0x97, 0x00, 0x6b, +0x00, 0x02, 0x00, 0xbf, 0x00, 0x04, 0x00, 0x04, +0x00, 0x02, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, +0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, +0x00, 0x07, 0x00, 0x29, 0x00, 0x08, 0x00, 0x08, +0x00, 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0d, +0x00, 0x0a, 0x00, 0x0a, 0x00, 0x13, 0x00, 0x0b, +0x00, 0x0b, 0x00, 0x16, 0x00, 0x0c, 0x00, 0x0c, +0x00, 0x18, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x1a, +0x00, 0x0e, 0x00, 0x0e, 0x00, 0x1d, 0x00, 0x0f, +0x00, 0x0f, 0x00, 0x22, 0x00, 0x10, 0x00, 0x11, +0x00, 0x16, 0x00, 0x12, 0x00, 0x12, 0x00, 0x29, +0x00, 0x13, 0x00, 0x13, 0x00, 0x2b, 0x00, 0x14, +0x00, 0x14, 0x00, 0x29, 0x00, 0x15, 0x00, 0x15, +0x00, 0x2e, 0x00, 0x16, 0x00, 0x16, 0x00, 0x31, +0x00, 0x17, 0x00, 0x17, 0x00, 0x35, 0x00, 0x18, +0x00, 0x18, 0x00, 0x3b, 0x00, 0x19, 0x00, 0x19, +0x00, 0x3e, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x41, +0x00, 0x1b, 0x00, 0x1b, 0x00, 0x44, 0x00, 0x1c, +0x00, 0x1c, 0x00, 0x47, 0x00, 0x1d, 0x00, 0x1d, +0x00, 0x4a, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x27, +0x00, 0x20, 0x00, 0x20, 0x00, 0x05, 0x00, 0x22, +0x00, 0x22, 0x00, 0x08, 0x00, 0x23, 0x00, 0x23, +0x00, 0x0b, 0x00, 0x24, 0x00, 0x24, 0x00, 0x11, +0x00, 0x25, 0x00, 0x25, 0x00, 0x23, 0x00, 0x28, +0x00, 0x28, 0x00, 0x1b, 0x00, 0x29, 0x00, 0x29, +0x00, 0x20, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x23, +0x00, 0x2c, 0x00, 0x2d, 0x00, 0x27, 0x00, 0x2e, +0x00, 0x2e, 0x00, 0x39, 0x00, 0x2f, 0x00, 0x2f, +0x00, 0x2c, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, +0x00, 0x31, 0x00, 0x31, 0x00, 0x33, 0x00, 0x32, +0x00, 0x32, 0x00, 0x39, 0x00, 0x33, 0x00, 0x33, +0x00, 0x3c, 0x00, 0x34, 0x00, 0x34, 0x00, 0x3f, +0x00, 0x35, 0x00, 0x35, 0x00, 0x42, 0x00, 0x36, +0x00, 0x36, 0x00, 0x45, 0x00, 0x37, 0x00, 0x37, +0x00, 0x48, 0x00, 0x38, 0x00, 0x4d, 0x00, 0x02, +0x00, 0x4e, 0x00, 0x50, 0x00, 0x0a, 0x00, 0x51, +0x00, 0x52, 0x00, 0x04, 0x00, 0x53, 0x00, 0x57, +0x00, 0x07, 0x00, 0x58, 0x00, 0x5b, 0x00, 0x29, +0x00, 0x5c, 0x00, 0x6d, 0x00, 0x0a, 0x00, 0x6e, +0x00, 0x76, 0x00, 0x13, 0x00, 0x77, 0x00, 0x79, +0x00, 0x16, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0x14, +0x00, 0x7b, 0x00, 0x86, 0x00, 0x18, 0x00, 0x87, +0x00, 0x87, 0x00, 0x1a, 0x00, 0x88, 0x00, 0x8a, +0x00, 0x1d, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x22, +0x00, 0x8c, 0x00, 0x8c, 0x00, 0x1f, 0x00, 0x8d, +0x00, 0x92, 0x00, 0x22, 0x00, 0x93, 0x00, 0x9d, +0x00, 0x16, 0x00, 0x9e, 0x00, 0xaf, 0x00, 0x29, +0x00, 0xb0, 0x00, 0xb0, 0x00, 0x0a, 0x00, 0xb1, +0x00, 0xb6, 0x00, 0x26, 0x00, 0xb7, 0x00, 0xb7, +0x00, 0x29, 0x00, 0xb8, 0x00, 0xbe, 0x00, 0x2e, +0x00, 0xbf, 0x00, 0xc5, 0x00, 0x31, 0x00, 0xc6, +0x00, 0xc6, 0x00, 0x10, 0x00, 0xc7, 0x00, 0xcc, +0x00, 0x35, 0x00, 0xcd, 0x00, 0xdd, 0x00, 0x3b, +0x00, 0xde, 0x00, 0xe3, 0x00, 0x38, 0x00, 0xe4, +0x00, 0xe7, 0x00, 0x41, 0x00, 0xe8, 0x00, 0xef, +0x00, 0x47, 0x00, 0xf0, 0x00, 0xf4, 0x00, 0x4a, +0x00, 0xf5, 0x00, 0xf5, 0x00, 0x29, 0x00, 0xf6, +0x00, 0xf6, 0x00, 0x32, 0x00, 0xf7, 0x00, 0xf8, +0x00, 0x29, 0x00, 0xf9, 0x00, 0xf9, 0x00, 0x18, +0x01, 0x10, 0x01, 0x12, 0x00, 0x08, 0x01, 0x13, +0x01, 0x14, 0x00, 0x27, 0x01, 0x15, 0x01, 0x19, +0x00, 0x05, 0x01, 0x1a, 0x01, 0x1a, 0x00, 0x1e, +0x01, 0x1e, 0x01, 0x2f, 0x00, 0x08, 0x01, 0x30, +0x01, 0x37, 0x00, 0x11, 0x01, 0x38, 0x01, 0x3c, +0x00, 0x23, 0x01, 0x49, 0x01, 0x49, 0x00, 0x39, +0x01, 0x4b, 0x01, 0x4e, 0x00, 0x1b, 0x01, 0x4f, +0x01, 0x4f, 0x00, 0x20, 0x01, 0x50, 0x01, 0x50, +0x00, 0x1e, 0x01, 0x52, 0x01, 0x55, 0x00, 0x20, +0x01, 0x57, 0x01, 0x62, 0x00, 0x23, 0x01, 0x63, +0x01, 0x74, 0x00, 0x27, 0x01, 0x75, 0x01, 0x75, +0x00, 0x08, 0x01, 0x76, 0x01, 0x7b, 0x00, 0x24, +0x01, 0x7c, 0x01, 0x7c, 0x00, 0x27, 0x01, 0x7d, +0x01, 0x83, 0x00, 0x2c, 0x01, 0x84, 0x01, 0x8a, +0x00, 0x2f, 0x01, 0x8b, 0x01, 0x8b, 0x00, 0x0e, +0x01, 0x8c, 0x01, 0x92, 0x00, 0x33, 0x01, 0x93, +0x01, 0xa3, 0x00, 0x39, 0x01, 0xa4, 0x01, 0xa9, +0x00, 0x36, 0x01, 0xaa, 0x01, 0xad, 0x00, 0x3f, +0x01, 0xae, 0x01, 0xb5, 0x00, 0x45, 0x01, 0xb6, +0x01, 0xba, 0x00, 0x48, 0x01, 0xbc, 0x01, 0xbc, +0x00, 0x27, 0x01, 0xbd, 0x01, 0xbd, 0x00, 0x23, +0x01, 0xc0, 0x01, 0xc0, 0x00, 0x08, 0x01, 0xc1, +0x01, 0xc3, 0x00, 0x27, 0x01, 0xc4, 0x01, 0xc4, +0x00, 0x05, 0x01, 0xc7, 0x01, 0xc7, 0x00, 0x27, +0x01, 0xc8, 0x01, 0xc8, 0x00, 0x39, 0x01, 0xca, +0x01, 0xca, 0x00, 0x27, 0x01, 0xce, 0x01, 0xce, +0x00, 0x27, 0x01, 0xd1, 0x01, 0xd1, 0x00, 0x39, +0x01, 0xd2, 0x01, 0xd2, 0x00, 0x05, 0x01, 0xd3, +0x01, 0xd3, 0x00, 0x45, 0x01, 0xd5, 0x01, 0xd5, +0x00, 0x39, 0x01, 0xd6, 0x01, 0xd7, 0x00, 0x23, +0x01, 0xd8, 0x01, 0xd8, 0x00, 0x39, 0x01, 0xe0, +0x01, 0xe1, 0x00, 0x39, 0x01, 0xe2, 0x01, 0xe3, +0x00, 0x23, 0x01, 0xe5, 0x01, 0xe5, 0x00, 0x39, +0x01, 0xe6, 0x01, 0xe6, 0x00, 0x27, 0x01, 0xe8, +0x01, 0xe8, 0x00, 0x27, 0x01, 0xe9, 0x01, 0xe9, +0x00, 0x39, 0x01, 0xec, 0x01, 0xed, 0x00, 0x2c, +0x01, 0xef, 0x01, 0xef, 0x00, 0x39, 0x01, 0xf0, +0x01, 0xf0, 0x00, 0x2f, 0x01, 0xf3, 0x01, 0xf3, +0x00, 0x33, 0x01, 0xf6, 0x01, 0xf6, 0x00, 0x27, +0x01, 0xfb, 0x01, 0xfc, 0x00, 0x48, 0x02, 0x04, +0x02, 0x04, 0x00, 0x0b, 0x02, 0x07, 0x02, 0x08, +0x00, 0x33, 0x02, 0x09, 0x02, 0x15, 0x00, 0x17, +0x02, 0x16, 0x02, 0x16, 0x00, 0x16, 0x02, 0x17, +0x02, 0x36, 0x00, 0x39, 0x02, 0x39, 0x02, 0x39, +0x00, 0x1e, 0x04, 0xc3, 0x04, 0xc3, 0x00, 0x01, +0x04, 0xc4, 0x04, 0xc4, 0x00, 0x03, 0x04, 0xc5, +0x04, 0xc5, 0x00, 0x06, 0x04, 0xc6, 0x04, 0xc6, +0x00, 0x28, 0x04, 0xc7, 0x04, 0xc7, 0x00, 0x09, +0x04, 0xc8, 0x04, 0xc8, 0x00, 0x0c, 0x04, 0xc9, +0x04, 0xc9, 0x00, 0x12, 0x04, 0xca, 0x04, 0xca, +0x00, 0x15, 0x04, 0xcc, 0x04, 0xcc, 0x00, 0x19, +0x04, 0xcd, 0x04, 0xcd, 0x00, 0x1c, 0x04, 0xce, +0x04, 0xce, 0x00, 0x21, 0x04, 0xcf, 0x04, 0xd0, +0x00, 0x15, 0x04, 0xd1, 0x04, 0xd1, 0x00, 0x28, +0x04, 0xd2, 0x04, 0xd2, 0x00, 0x2a, 0x04, 0xd3, +0x04, 0xd3, 0x00, 0x28, 0x04, 0xd4, 0x04, 0xd4, +0x00, 0x2d, 0x04, 0xd5, 0x04, 0xd5, 0x00, 0x30, +0x04, 0xd6, 0x04, 0xd6, 0x00, 0x34, 0x04, 0xd7, +0x04, 0xd7, 0x00, 0x3a, 0x04, 0xd8, 0x04, 0xd8, +0x00, 0x3d, 0x04, 0xd9, 0x04, 0xd9, 0x00, 0x40, +0x04, 0xda, 0x04, 0xda, 0x00, 0x43, 0x04, 0xdb, +0x04, 0xdb, 0x00, 0x46, 0x04, 0xdc, 0x04, 0xdc, +0x00, 0x49, 0x04, 0xdd, 0x04, 0xf2, 0x00, 0x01, +0x04, 0xf3, 0x04, 0xf5, 0x00, 0x09, 0x04, 0xf6, +0x04, 0xf7, 0x00, 0x03, 0x04, 0xf8, 0x04, 0xfc, +0x00, 0x06, 0x04, 0xfd, 0x05, 0x00, 0x00, 0x28, +0x05, 0x01, 0x05, 0x12, 0x00, 0x09, 0x05, 0x13, +0x05, 0x1b, 0x00, 0x12, 0x05, 0x1c, 0x05, 0x1e, +0x00, 0x15, 0x05, 0x2c, 0x05, 0x2c, 0x00, 0x19, +0x05, 0x2d, 0x05, 0x2f, 0x00, 0x1c, 0x05, 0x30, +0x05, 0x30, 0x00, 0x21, 0x05, 0x32, 0x05, 0x37, +0x00, 0x21, 0x05, 0x38, 0x05, 0x42, 0x00, 0x15, +0x05, 0x43, 0x05, 0x52, 0x00, 0x28, 0x05, 0x53, +0x05, 0x53, 0x00, 0x09, 0x05, 0x54, 0x05, 0x59, +0x00, 0x25, 0x05, 0x5a, 0x05, 0x5c, 0x00, 0x28, +0x05, 0x5d, 0x05, 0x63, 0x00, 0x2d, 0x05, 0x64, +0x05, 0x6b, 0x00, 0x30, 0x05, 0x6c, 0x05, 0x6c, +0x00, 0x0f, 0x05, 0x6d, 0x05, 0x72, 0x00, 0x34, +0x05, 0x73, 0x05, 0x83, 0x00, 0x3a, 0x05, 0x84, +0x05, 0x89, 0x00, 0x37, 0x05, 0x8a, 0x05, 0x8d, +0x00, 0x40, 0x05, 0x8e, 0x05, 0x95, 0x00, 0x46, +0x05, 0x96, 0x05, 0x9a, 0x00, 0x49, 0x05, 0x9b, +0x05, 0x9b, 0x00, 0x28, 0x05, 0x9d, 0x05, 0x9e, +0x00, 0x28, 0x05, 0x9f, 0x05, 0xa0, 0x00, 0x15, +0x07, 0x97, 0x07, 0x97, 0x00, 0x20, 0x00, 0x02, +0x00, 0xb6, 0x00, 0x04, 0x00, 0x04, 0x00, 0x18, +0x00, 0x06, 0x00, 0x06, 0x00, 0x1b, 0x00, 0x0a, +0x00, 0x0a, 0x00, 0x1b, 0x00, 0x0d, 0x00, 0x0d, +0x00, 0x29, 0x00, 0x12, 0x00, 0x12, 0x00, 0x1b, +0x00, 0x14, 0x00, 0x14, 0x00, 0x1b, 0x00, 0x16, +0x00, 0x16, 0x00, 0x2a, 0x00, 0x17, 0x00, 0x17, +0x00, 0x02, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1e, +0x00, 0x19, 0x00, 0x19, 0x00, 0x03, 0x00, 0x1a, +0x00, 0x1a, 0x00, 0x34, 0x00, 0x1b, 0x00, 0x1b, +0x00, 0x1f, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x04, +0x00, 0x1d, 0x00, 0x1d, 0x00, 0x20, 0x00, 0x1e, +0x00, 0x1e, 0x00, 0x17, 0x00, 0x20, 0x00, 0x22, +0x00, 0x30, 0x00, 0x23, 0x00, 0x23, 0x00, 0x19, +0x00, 0x24, 0x00, 0x24, 0x00, 0x2f, 0x00, 0x26, +0x00, 0x26, 0x00, 0x42, 0x00, 0x27, 0x00, 0x27, +0x00, 0x37, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x3b, +0x00, 0x2c, 0x00, 0x2c, 0x00, 0x30, 0x00, 0x2d, +0x00, 0x2d, 0x00, 0x3b, 0x00, 0x2e, 0x00, 0x2e, +0x00, 0x30, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x3b, +0x00, 0x30, 0x00, 0x30, 0x00, 0x1c, 0x00, 0x31, +0x00, 0x31, 0x00, 0x01, 0x00, 0x32, 0x00, 0x32, +0x00, 0x1d, 0x00, 0x33, 0x00, 0x33, 0x00, 0x2b, +0x00, 0x34, 0x00, 0x34, 0x00, 0x2c, 0x00, 0x35, +0x00, 0x35, 0x00, 0x2d, 0x00, 0x36, 0x00, 0x36, +0x00, 0x2e, 0x00, 0x37, 0x00, 0x37, 0x00, 0x35, +0x00, 0x38, 0x00, 0x4d, 0x00, 0x18, 0x00, 0x4e, +0x00, 0x50, 0x00, 0x40, 0x00, 0x53, 0x00, 0x57, +0x00, 0x1b, 0x00, 0x6e, 0x00, 0x76, 0x00, 0x1b, +0x00, 0x87, 0x00, 0x87, 0x00, 0x29, 0x00, 0x9e, +0x00, 0xb7, 0x00, 0x1b, 0x00, 0xbf, 0x00, 0xc5, +0x00, 0x2a, 0x00, 0xc7, 0x00, 0xcc, 0x00, 0x02, +0x00, 0xcd, 0x00, 0xe3, 0x00, 0x1e, 0x00, 0xe4, +0x00, 0xe7, 0x00, 0x34, 0x00, 0xe8, 0x00, 0xef, +0x00, 0x04, 0x00, 0xf0, 0x00, 0xf4, 0x00, 0x20, +0x00, 0xfa, 0x01, 0x12, 0x00, 0x17, 0x01, 0x13, +0x01, 0x13, 0x00, 0x3e, 0x01, 0x15, 0x01, 0x2f, +0x00, 0x30, 0x01, 0x30, 0x01, 0x37, 0x00, 0x2f, +0x01, 0x3c, 0x01, 0x3c, 0x00, 0x3e, 0x01, 0x3d, +0x01, 0x48, 0x00, 0x42, 0x01, 0x49, 0x01, 0x49, +0x00, 0x3b, 0x01, 0x4a, 0x01, 0x4a, 0x00, 0x37, +0x01, 0x4e, 0x01, 0x4e, 0x00, 0x3b, 0x01, 0x57, +0x01, 0x61, 0x00, 0x3b, 0x01, 0x63, 0x01, 0x7c, +0x00, 0x30, 0x01, 0x7d, 0x01, 0x83, 0x00, 0x3b, +0x01, 0x84, 0x01, 0x8a, 0x00, 0x1c, 0x01, 0x8c, +0x01, 0x92, 0x00, 0x01, 0x01, 0x93, 0x01, 0xa9, +0x00, 0x1d, 0x01, 0xaa, 0x01, 0xad, 0x00, 0x2c, +0x01, 0xae, 0x01, 0xb5, 0x00, 0x2e, 0x01, 0xb6, +0x01, 0xba, 0x00, 0x35, 0x01, 0xbd, 0x01, 0xbd, +0x00, 0x3b, 0x01, 0xbe, 0x01, 0xbe, 0x00, 0x37, +0x01, 0xbf, 0x01, 0xbf, 0x00, 0x42, 0x01, 0xc0, +0x01, 0xc0, 0x00, 0x1d, 0x01, 0xc1, 0x01, 0xc1, +0x00, 0x3b, 0x01, 0xc4, 0x01, 0xc6, 0x00, 0x30, +0x01, 0xc8, 0x01, 0xc8, 0x00, 0x30, 0x01, 0xc9, +0x01, 0xc9, 0x00, 0x3b, 0x01, 0xcf, 0x01, 0xcf, +0x00, 0x37, 0x01, 0xd0, 0x01, 0xd2, 0x00, 0x30, +0x01, 0xd3, 0x01, 0xd3, 0x00, 0x2e, 0x01, 0xd5, +0x01, 0xd5, 0x00, 0x1d, 0x01, 0xd8, 0x01, 0xd8, +0x00, 0x3b, 0x01, 0xda, 0x01, 0xda, 0x00, 0x43, +0x01, 0xdf, 0x01, 0xdf, 0x00, 0x3b, 0x01, 0xe0, +0x01, 0xe1, 0x00, 0x1d, 0x01, 0xe2, 0x01, 0xe2, +0x00, 0x3b, 0x01, 0xe3, 0x01, 0xe3, 0x00, 0x37, +0x01, 0xe4, 0x01, 0xe5, 0x00, 0x3b, 0x01, 0xe6, +0x01, 0xe8, 0x00, 0x30, 0x01, 0xec, 0x01, 0xec, +0x00, 0x3b, 0x01, 0xee, 0x01, 0xee, 0x00, 0x3b, +0x01, 0xf0, 0x01, 0xf0, 0x00, 0x1c, 0x01, 0xf1, +0x01, 0xf2, 0x00, 0x37, 0x01, 0xf3, 0x01, 0xf3, +0x00, 0x01, 0x01, 0xf6, 0x01, 0xf6, 0x00, 0x1d, +0x01, 0xf8, 0x01, 0xf8, 0x00, 0x44, 0x01, 0xfb, +0x01, 0xfc, 0x00, 0x35, 0x02, 0x04, 0x02, 0x04, +0x00, 0x19, 0x02, 0x07, 0x02, 0x08, 0x00, 0x19, +0x02, 0x09, 0x02, 0x15, 0x00, 0x3d, 0x02, 0x17, +0x02, 0x36, 0x00, 0x30, 0x02, 0x40, 0x02, 0x40, +0x00, 0x19, 0x04, 0x77, 0x04, 0x78, 0x00, 0x11, +0x04, 0x79, 0x04, 0x7a, 0x00, 0x10, 0x04, 0x7b, +0x04, 0x7b, 0x00, 0x11, 0x04, 0x7c, 0x04, 0x7c, +0x00, 0x39, 0x04, 0x7e, 0x04, 0x7e, 0x00, 0x21, +0x04, 0x80, 0x04, 0x81, 0x00, 0x23, 0x04, 0x82, +0x04, 0x82, 0x00, 0x22, 0x04, 0x83, 0x04, 0x83, +0x00, 0x05, 0x04, 0x84, 0x04, 0x84, 0x00, 0x22, +0x04, 0x85, 0x04, 0x85, 0x00, 0x05, 0x04, 0x86, +0x04, 0x87, 0x00, 0x11, 0x04, 0x88, 0x04, 0x88, +0x00, 0x32, 0x04, 0x89, 0x04, 0x89, 0x00, 0x36, +0x04, 0x8a, 0x04, 0x8a, 0x00, 0x32, 0x04, 0x8b, +0x04, 0x8b, 0x00, 0x36, 0x04, 0x8c, 0x04, 0x8f, +0x00, 0x31, 0x04, 0x92, 0x04, 0x93, 0x00, 0x31, +0x04, 0x94, 0x04, 0x94, 0x00, 0x12, 0x04, 0x9a, +0x04, 0x9a, 0x00, 0x38, 0x04, 0x9c, 0x04, 0x9c, +0x00, 0x38, 0x04, 0x9e, 0x04, 0x9e, 0x00, 0x38, +0x04, 0x9f, 0x04, 0x9f, 0x00, 0x3a, 0x04, 0xa1, +0x04, 0xa1, 0x00, 0x24, 0x04, 0xa3, 0x04, 0xa3, +0x00, 0x06, 0x04, 0xa9, 0x04, 0xa9, 0x00, 0x39, +0x04, 0xaa, 0x04, 0xaa, 0x00, 0x21, 0x04, 0xab, +0x04, 0xab, 0x00, 0x39, 0x04, 0xac, 0x04, 0xad, +0x00, 0x21, 0x04, 0xaf, 0x04, 0xaf, 0x00, 0x38, +0x04, 0xb1, 0x04, 0xb1, 0x00, 0x38, 0x04, 0xb3, +0x04, 0xb3, 0x00, 0x38, 0x04, 0xba, 0x04, 0xba, +0x00, 0x25, 0x04, 0xbb, 0x04, 0xbb, 0x00, 0x26, +0x04, 0xc2, 0x04, 0xc2, 0x00, 0x42, 0x04, 0xc3, +0x04, 0xc3, 0x00, 0x07, 0x04, 0xc4, 0x04, 0xc4, +0x00, 0x41, 0x04, 0xc5, 0x04, 0xc5, 0x00, 0x1a, +0x04, 0xc6, 0x04, 0xc8, 0x00, 0x41, 0x04, 0xc9, +0x04, 0xc9, 0x00, 0x1a, 0x04, 0xca, 0x04, 0xca, +0x00, 0x41, 0x04, 0xcc, 0x04, 0xcc, 0x00, 0x28, +0x04, 0xcd, 0x04, 0xd0, 0x00, 0x41, 0x04, 0xd1, +0x04, 0xd1, 0x00, 0x1a, 0x04, 0xd2, 0x04, 0xd2, +0x00, 0x41, 0x04, 0xd3, 0x04, 0xd3, 0x00, 0x1a, +0x04, 0xd4, 0x04, 0xd4, 0x00, 0x41, 0x04, 0xd5, +0x04, 0xd5, 0x00, 0x08, 0x04, 0xd6, 0x04, 0xd6, +0x00, 0x09, 0x04, 0xd7, 0x04, 0xd7, 0x00, 0x0a, +0x04, 0xd8, 0x04, 0xd8, 0x00, 0x0b, 0x04, 0xd9, +0x04, 0xd9, 0x00, 0x0c, 0x04, 0xda, 0x04, 0xda, +0x00, 0x0d, 0x04, 0xdb, 0x04, 0xdb, 0x00, 0x0e, +0x04, 0xdc, 0x04, 0xdc, 0x00, 0x0f, 0x04, 0xdd, +0x04, 0xf2, 0x00, 0x07, 0x04, 0xf3, 0x04, 0xf5, +0x00, 0x3f, 0x04, 0xf7, 0x04, 0xf7, 0x00, 0x41, +0x04, 0xf8, 0x04, 0xfc, 0x00, 0x1a, 0x04, 0xfd, +0x04, 0xff, 0x00, 0x41, 0x05, 0x01, 0x05, 0x12, +0x00, 0x41, 0x05, 0x13, 0x05, 0x1b, 0x00, 0x1a, +0x05, 0x1c, 0x05, 0x1e, 0x00, 0x41, 0x05, 0x2c, +0x05, 0x2c, 0x00, 0x28, 0x05, 0x2d, 0x05, 0x36, +0x00, 0x41, 0x05, 0x38, 0x05, 0x42, 0x00, 0x41, +0x05, 0x43, 0x05, 0x5c, 0x00, 0x1a, 0x05, 0x5d, +0x05, 0x63, 0x00, 0x41, 0x05, 0x64, 0x05, 0x6b, +0x00, 0x08, 0x05, 0x6d, 0x05, 0x72, 0x00, 0x09, +0x05, 0x73, 0x05, 0x89, 0x00, 0x0a, 0x05, 0x8a, +0x05, 0x8d, 0x00, 0x0c, 0x05, 0x8e, 0x05, 0x95, +0x00, 0x0e, 0x05, 0x96, 0x05, 0x9a, 0x00, 0x0f, +0x05, 0x9c, 0x05, 0x9c, 0x00, 0x41, 0x05, 0x9e, +0x05, 0xa0, 0x00, 0x41, 0x06, 0x17, 0x06, 0x17, +0x00, 0x13, 0x06, 0x19, 0x06, 0x19, 0x00, 0x16, +0x06, 0x1b, 0x06, 0x1b, 0x00, 0x14, 0x06, 0x1c, +0x06, 0x1c, 0x00, 0x15, 0x06, 0x1f, 0x06, 0x1f, +0x00, 0x27, 0x06, 0x21, 0x06, 0x21, 0x00, 0x33, +0x06, 0x23, 0x06, 0x23, 0x00, 0x3c, 0x07, 0x0a, +0x07, 0x0a, 0x00, 0x22, 0x07, 0x0b, 0x07, 0x0c, +0x00, 0x05, 0x07, 0x0d, 0x07, 0x0d, 0x00, 0x22, +0x07, 0x96, 0x07, 0x97, 0x00, 0x19, 0x00, 0x02, +0x00, 0x70, 0x02, 0x41, 0x02, 0x41, 0x00, 0x02, +0x02, 0x42, 0x02, 0x42, 0x00, 0x05, 0x02, 0x43, +0x02, 0x43, 0x00, 0x12, 0x02, 0x44, 0x02, 0x44, +0x00, 0x0b, 0x02, 0x45, 0x02, 0x45, 0x00, 0x0e, +0x02, 0x46, 0x02, 0x46, 0x00, 0x38, 0x02, 0x47, +0x02, 0x47, 0x00, 0x2b, 0x02, 0x48, 0x02, 0x48, +0x00, 0x23, 0x02, 0x49, 0x02, 0x49, 0x00, 0x2b, +0x02, 0x4a, 0x02, 0x4a, 0x00, 0x16, 0x02, 0x4b, +0x02, 0x4b, 0x00, 0x02, 0x02, 0x4c, 0x02, 0x4d, +0x00, 0x2b, 0x02, 0x4e, 0x02, 0x4e, 0x00, 0x35, +0x02, 0x4f, 0x02, 0x4f, 0x00, 0x23, 0x02, 0x50, +0x02, 0x50, 0x00, 0x2b, 0x02, 0x51, 0x02, 0x51, +0x00, 0x20, 0x02, 0x52, 0x02, 0x52, 0x00, 0x28, +0x02, 0x53, 0x02, 0x53, 0x00, 0x2e, 0x02, 0x54, +0x02, 0x54, 0x00, 0x32, 0x02, 0x55, 0x02, 0x55, +0x00, 0x1c, 0x02, 0x56, 0x02, 0x56, 0x00, 0x08, +0x02, 0x57, 0x02, 0x57, 0x00, 0x1e, 0x02, 0x58, +0x02, 0x58, 0x00, 0x1a, 0x02, 0x59, 0x02, 0x59, +0x00, 0x02, 0x02, 0x5a, 0x02, 0x5a, 0x00, 0x0e, +0x02, 0x5b, 0x02, 0x5d, 0x00, 0x2b, 0x02, 0x5e, +0x02, 0x5e, 0x00, 0x23, 0x02, 0x5f, 0x02, 0x60, +0x00, 0x32, 0x02, 0x61, 0x02, 0x61, 0x00, 0x1a, +0x02, 0x63, 0x02, 0x63, 0x00, 0x03, 0x02, 0x64, +0x02, 0x64, 0x00, 0x10, 0x02, 0x65, 0x02, 0x65, +0x00, 0x09, 0x02, 0x66, 0x02, 0x66, 0x00, 0x0c, +0x02, 0x67, 0x02, 0x67, 0x00, 0x36, 0x02, 0x68, +0x02, 0x68, 0x00, 0x0f, 0x02, 0x69, 0x02, 0x69, +0x00, 0x2f, 0x02, 0x6a, 0x02, 0x6a, 0x00, 0x13, +0x02, 0x6b, 0x02, 0x6b, 0x00, 0x14, 0x02, 0x6c, +0x02, 0x6c, 0x00, 0x17, 0x02, 0x6d, 0x02, 0x6d, +0x00, 0x13, 0x02, 0x6e, 0x02, 0x6e, 0x00, 0x18, +0x02, 0x6f, 0x02, 0x6f, 0x00, 0x33, 0x02, 0x70, +0x02, 0x70, 0x00, 0x21, 0x02, 0x72, 0x02, 0x72, +0x00, 0x21, 0x02, 0x73, 0x02, 0x73, 0x00, 0x26, +0x02, 0x74, 0x02, 0x74, 0x00, 0x2c, 0x02, 0x75, +0x02, 0x75, 0x00, 0x30, 0x02, 0x76, 0x02, 0x76, +0x00, 0x21, 0x02, 0x77, 0x02, 0x77, 0x00, 0x06, +0x02, 0x78, 0x02, 0x78, 0x00, 0x30, 0x02, 0x79, +0x02, 0x79, 0x00, 0x21, 0x02, 0x7a, 0x02, 0x7a, +0x00, 0x25, 0x02, 0x7b, 0x02, 0x7b, 0x00, 0x03, +0x02, 0x7c, 0x02, 0x7c, 0x00, 0x2f, 0x02, 0x7d, +0x02, 0x7d, 0x00, 0x21, 0x02, 0x7f, 0x02, 0x7f, +0x00, 0x0c, 0x02, 0x80, 0x02, 0x80, 0x00, 0x0f, +0x02, 0x81, 0x02, 0x82, 0x00, 0x13, 0x02, 0x83, +0x02, 0x83, 0x00, 0x21, 0x02, 0x84, 0x02, 0x85, +0x00, 0x30, 0x02, 0x86, 0x02, 0x86, 0x00, 0x21, +0x02, 0x87, 0x02, 0x87, 0x00, 0x13, 0x02, 0x88, +0x02, 0x88, 0x00, 0x30, 0x02, 0x89, 0x02, 0x94, +0x00, 0x02, 0x02, 0x95, 0x02, 0x9c, 0x00, 0x0e, +0x02, 0x9d, 0x02, 0xb2, 0x00, 0x2b, 0x02, 0xb3, +0x02, 0xba, 0x00, 0x23, 0x02, 0xbb, 0x02, 0xbb, +0x00, 0x20, 0x02, 0xbc, 0x02, 0xc3, 0x00, 0x32, +0x02, 0xc4, 0x02, 0xcd, 0x00, 0x1a, 0x02, 0xce, +0x02, 0xe8, 0x00, 0x13, 0x02, 0xf6, 0x02, 0xfd, +0x00, 0x0c, 0x02, 0xfe, 0x03, 0x08, 0x00, 0x0f, +0x03, 0x09, 0x03, 0x18, 0x00, 0x13, 0x03, 0x19, +0x03, 0x22, 0x00, 0x21, 0x03, 0x23, 0x03, 0x32, +0x00, 0x30, 0x03, 0x33, 0x03, 0x3d, 0x00, 0x21, +0x03, 0x4a, 0x03, 0x55, 0x00, 0x0f, 0x03, 0x56, +0x03, 0x61, 0x00, 0x21, 0x03, 0x62, 0x03, 0x62, +0x00, 0x14, 0x03, 0x63, 0x03, 0x63, 0x00, 0x21, +0x03, 0x64, 0x03, 0x64, 0x00, 0x29, 0x03, 0x66, +0x03, 0x66, 0x00, 0x24, 0x03, 0x70, 0x03, 0x70, +0x00, 0x13, 0x05, 0xa1, 0x05, 0xa1, 0x00, 0x01, +0x05, 0xa2, 0x05, 0xa2, 0x00, 0x04, 0x05, 0xa3, +0x05, 0xa3, 0x00, 0x11, 0x05, 0xa4, 0x05, 0xa4, +0x00, 0x0a, 0x05, 0xa5, 0x05, 0xa5, 0x00, 0x0d, +0x05, 0xa6, 0x05, 0xa6, 0x00, 0x37, 0x05, 0xa7, +0x05, 0xa7, 0x00, 0x2a, 0x05, 0xa8, 0x05, 0xa8, +0x00, 0x22, 0x05, 0xa9, 0x05, 0xa9, 0x00, 0x2a, +0x05, 0xaa, 0x05, 0xaa, 0x00, 0x15, 0x05, 0xab, +0x05, 0xab, 0x00, 0x01, 0x05, 0xac, 0x05, 0xad, +0x00, 0x2a, 0x05, 0xae, 0x05, 0xae, 0x00, 0x34, +0x05, 0xaf, 0x05, 0xaf, 0x00, 0x22, 0x05, 0xb0, +0x05, 0xb0, 0x00, 0x2a, 0x05, 0xb1, 0x05, 0xb1, +0x00, 0x1f, 0x05, 0xb2, 0x05, 0xb2, 0x00, 0x27, +0x05, 0xb3, 0x05, 0xb3, 0x00, 0x2d, 0x05, 0xb4, +0x05, 0xb4, 0x00, 0x31, 0x05, 0xb5, 0x05, 0xb5, +0x00, 0x1b, 0x05, 0xb6, 0x05, 0xb6, 0x00, 0x07, +0x05, 0xb7, 0x05, 0xb7, 0x00, 0x1d, 0x05, 0xb8, +0x05, 0xb8, 0x00, 0x19, 0x05, 0xb9, 0x05, 0xb9, +0x00, 0x2a, 0x05, 0xba, 0x05, 0xba, 0x00, 0x31, +0x05, 0xbb, 0x05, 0xbd, 0x00, 0x2a, 0x06, 0xeb, +0x06, 0xeb, 0x00, 0x0b, 0x06, 0xec, 0x06, 0xec, +0x00, 0x1a, 0x00, 0x02, 0x00, 0x91, 0x02, 0x41, +0x02, 0x41, 0x00, 0x13, 0x02, 0x44, 0x02, 0x44, +0x00, 0x3e, 0x02, 0x46, 0x02, 0x46, 0x00, 0x1b, +0x02, 0x48, 0x02, 0x48, 0x00, 0x18, 0x02, 0x4b, +0x02, 0x4b, 0x00, 0x13, 0x02, 0x4e, 0x02, 0x4e, +0x00, 0x25, 0x02, 0x4f, 0x02, 0x4f, 0x00, 0x18, +0x02, 0x52, 0x02, 0x52, 0x00, 0x24, 0x02, 0x53, +0x02, 0x53, 0x00, 0x08, 0x02, 0x54, 0x02, 0x54, +0x00, 0x1a, 0x02, 0x55, 0x02, 0x55, 0x00, 0x35, +0x02, 0x56, 0x02, 0x56, 0x00, 0x14, 0x02, 0x57, +0x02, 0x57, 0x00, 0x16, 0x02, 0x58, 0x02, 0x58, +0x00, 0x15, 0x02, 0x59, 0x02, 0x59, 0x00, 0x42, +0x02, 0x60, 0x02, 0x60, 0x00, 0x1a, 0x02, 0x62, +0x02, 0x62, 0x00, 0x26, 0x02, 0x63, 0x02, 0x63, +0x00, 0x27, 0x02, 0x64, 0x02, 0x64, 0x00, 0x01, +0x02, 0x65, 0x02, 0x65, 0x00, 0x28, 0x02, 0x66, +0x02, 0x66, 0x00, 0x29, 0x02, 0x67, 0x02, 0x67, +0x00, 0x3b, 0x02, 0x68, 0x02, 0x68, 0x00, 0x2a, +0x02, 0x69, 0x02, 0x69, 0x00, 0x2d, 0x02, 0x6a, +0x02, 0x6a, 0x00, 0x02, 0x02, 0x6b, 0x02, 0x6b, +0x00, 0x2a, 0x02, 0x6c, 0x02, 0x6c, 0x00, 0x2b, +0x02, 0x6d, 0x02, 0x6d, 0x00, 0x3f, 0x02, 0x6e, +0x02, 0x6e, 0x00, 0x03, 0x02, 0x6f, 0x02, 0x6f, +0x00, 0x3a, 0x02, 0x70, 0x02, 0x70, 0x00, 0x2c, +0x02, 0x71, 0x02, 0x71, 0x00, 0x33, 0x02, 0x72, +0x02, 0x72, 0x00, 0x22, 0x02, 0x73, 0x02, 0x73, +0x00, 0x2c, 0x02, 0x74, 0x02, 0x74, 0x00, 0x19, +0x02, 0x75, 0x02, 0x75, 0x00, 0x2e, 0x02, 0x76, +0x02, 0x76, 0x00, 0x2c, 0x02, 0x77, 0x02, 0x77, +0x00, 0x21, 0x02, 0x78, 0x02, 0x78, 0x00, 0x2e, +0x02, 0x79, 0x02, 0x7a, 0x00, 0x2c, 0x02, 0x7b, +0x02, 0x7c, 0x00, 0x2d, 0x02, 0x7d, 0x02, 0x7d, +0x00, 0x2c, 0x02, 0x7e, 0x02, 0x7e, 0x00, 0x26, +0x02, 0x7f, 0x02, 0x7f, 0x00, 0x29, 0x02, 0x80, +0x02, 0x80, 0x00, 0x2a, 0x02, 0x81, 0x02, 0x81, +0x00, 0x02, 0x02, 0x82, 0x02, 0x82, 0x00, 0x34, +0x02, 0x83, 0x02, 0x83, 0x00, 0x2c, 0x02, 0x84, +0x02, 0x85, 0x00, 0x2e, 0x02, 0x86, 0x02, 0x86, +0x00, 0x2c, 0x02, 0x87, 0x02, 0x87, 0x00, 0x34, +0x02, 0x88, 0x02, 0x88, 0x00, 0x2e, 0x02, 0x89, +0x02, 0x92, 0x00, 0x42, 0x02, 0x93, 0x02, 0x94, +0x00, 0x13, 0x02, 0xc2, 0x02, 0xc3, 0x00, 0x1a, +0x02, 0xce, 0x02, 0xce, 0x00, 0x13, 0x02, 0xcf, +0x02, 0xd6, 0x00, 0x42, 0x02, 0xe0, 0x02, 0xe0, +0x00, 0x15, 0x02, 0xe9, 0x02, 0xf5, 0x00, 0x26, +0x02, 0xf6, 0x02, 0xfd, 0x00, 0x29, 0x02, 0xfe, +0x03, 0x08, 0x00, 0x2a, 0x03, 0x09, 0x03, 0x0a, +0x00, 0x02, 0x03, 0x0b, 0x03, 0x0b, 0x00, 0x34, +0x03, 0x0c, 0x03, 0x0c, 0x00, 0x02, 0x03, 0x0d, +0x03, 0x18, 0x00, 0x34, 0x03, 0x19, 0x03, 0x20, +0x00, 0x2c, 0x03, 0x21, 0x03, 0x22, 0x00, 0x22, +0x03, 0x23, 0x03, 0x32, 0x00, 0x2e, 0x03, 0x33, +0x03, 0x3d, 0x00, 0x2c, 0x03, 0x3e, 0x03, 0x49, +0x00, 0x26, 0x03, 0x4a, 0x03, 0x55, 0x00, 0x2a, +0x03, 0x56, 0x03, 0x61, 0x00, 0x2c, 0x03, 0x62, +0x03, 0x62, 0x00, 0x2a, 0x03, 0x63, 0x03, 0x64, +0x00, 0x2c, 0x03, 0x65, 0x03, 0x65, 0x00, 0x3f, +0x03, 0x66, 0x03, 0x66, 0x00, 0x39, 0x03, 0x70, +0x03, 0x70, 0x00, 0x02, 0x04, 0x77, 0x04, 0x78, +0x00, 0x0c, 0x04, 0x79, 0x04, 0x7a, 0x00, 0x0b, +0x04, 0x7b, 0x04, 0x7b, 0x00, 0x0c, 0x04, 0x7c, +0x04, 0x7c, 0x00, 0x30, 0x04, 0x7e, 0x04, 0x7e, +0x00, 0x1c, 0x04, 0x80, 0x04, 0x81, 0x00, 0x1e, +0x04, 0x82, 0x04, 0x82, 0x00, 0x1d, 0x04, 0x83, +0x04, 0x83, 0x00, 0x0d, 0x04, 0x84, 0x04, 0x84, +0x00, 0x1d, 0x04, 0x85, 0x04, 0x85, 0x00, 0x0d, +0x04, 0x86, 0x04, 0x87, 0x00, 0x0c, 0x04, 0x88, +0x04, 0x88, 0x00, 0x31, 0x04, 0x89, 0x04, 0x89, +0x00, 0x32, 0x04, 0x8a, 0x04, 0x8a, 0x00, 0x31, +0x04, 0x8b, 0x04, 0x8b, 0x00, 0x32, 0x04, 0x8c, +0x04, 0x8f, 0x00, 0x2f, 0x04, 0x92, 0x04, 0x93, +0x00, 0x2f, 0x04, 0x94, 0x04, 0x94, 0x00, 0x0e, +0x04, 0x9a, 0x04, 0x9a, 0x00, 0x45, 0x04, 0x9c, +0x04, 0x9c, 0x00, 0x45, 0x04, 0x9e, 0x04, 0x9e, +0x00, 0x45, 0x04, 0x9f, 0x04, 0x9f, 0x00, 0x43, +0x04, 0xa1, 0x04, 0xa1, 0x00, 0x20, 0x04, 0xa3, +0x04, 0xa3, 0x00, 0x1f, 0x04, 0xa9, 0x04, 0xa9, +0x00, 0x30, 0x04, 0xaa, 0x04, 0xaa, 0x00, 0x1c, +0x04, 0xab, 0x04, 0xab, 0x00, 0x30, 0x04, 0xac, +0x04, 0xad, 0x00, 0x1c, 0x04, 0xaf, 0x04, 0xaf, +0x00, 0x45, 0x04, 0xb1, 0x04, 0xb1, 0x00, 0x45, +0x04, 0xb3, 0x04, 0xb3, 0x00, 0x45, 0x04, 0xba, +0x04, 0xba, 0x00, 0x37, 0x05, 0xa1, 0x05, 0xa1, +0x00, 0x04, 0x05, 0xa2, 0x05, 0xa3, 0x00, 0x36, +0x05, 0xa4, 0x05, 0xa4, 0x00, 0x3c, 0x05, 0xa5, +0x05, 0xa5, 0x00, 0x36, 0x05, 0xa6, 0x05, 0xa6, +0x00, 0x0a, 0x05, 0xa7, 0x05, 0xa7, 0x00, 0x36, +0x05, 0xa8, 0x05, 0xa8, 0x00, 0x17, 0x05, 0xa9, +0x05, 0xaa, 0x00, 0x36, 0x05, 0xab, 0x05, 0xab, +0x00, 0x04, 0x05, 0xac, 0x05, 0xad, 0x00, 0x36, +0x05, 0xae, 0x05, 0xae, 0x00, 0x40, 0x05, 0xaf, +0x05, 0xaf, 0x00, 0x17, 0x05, 0xb0, 0x05, 0xb1, +0x00, 0x36, 0x05, 0xb2, 0x05, 0xb2, 0x00, 0x41, +0x05, 0xb3, 0x05, 0xb3, 0x00, 0x07, 0x05, 0xb4, +0x05, 0xb4, 0x00, 0x09, 0x05, 0xb5, 0x05, 0xb5, +0x00, 0x38, 0x05, 0xb6, 0x05, 0xb6, 0x00, 0x05, +0x05, 0xb7, 0x05, 0xb7, 0x00, 0x06, 0x05, 0xb8, +0x05, 0xb8, 0x00, 0x3d, 0x05, 0xb9, 0x05, 0xb9, +0x00, 0x36, 0x05, 0xba, 0x05, 0xba, 0x00, 0x09, +0x05, 0xbb, 0x05, 0xbb, 0x00, 0x04, 0x05, 0xbc, +0x05, 0xbc, 0x00, 0x36, 0x05, 0xbd, 0x05, 0xbd, +0x00, 0x3d, 0x06, 0x17, 0x06, 0x17, 0x00, 0x0f, +0x06, 0x19, 0x06, 0x19, 0x00, 0x12, 0x06, 0x1b, +0x06, 0x1b, 0x00, 0x10, 0x06, 0x1c, 0x06, 0x1c, +0x00, 0x11, 0x06, 0x1f, 0x06, 0x1f, 0x00, 0x23, +0x06, 0x23, 0x06, 0x23, 0x00, 0x44, 0x06, 0xeb, +0x06, 0xeb, 0x00, 0x3e, 0x06, 0xec, 0x06, 0xec, +0x00, 0x15, 0x07, 0x0a, 0x07, 0x0a, 0x00, 0x1d, +0x07, 0x0b, 0x07, 0x0c, 0x00, 0x0d, 0x07, 0x0d, +0x07, 0x0d, 0x00, 0x1d, 0x00, 0x02, 0x00, 0xa2, +0x03, 0x8a, 0x03, 0x8a, 0x00, 0x02, 0x03, 0x8b, +0x03, 0x8c, 0x00, 0x38, 0x03, 0x8d, 0x03, 0x8d, +0x00, 0x13, 0x03, 0x8e, 0x03, 0x8e, 0x00, 0x2f, +0x03, 0x8f, 0x03, 0x8f, 0x00, 0x19, 0x03, 0x90, +0x03, 0x90, 0x00, 0x21, 0x03, 0x93, 0x03, 0x93, +0x00, 0x38, 0x03, 0x94, 0x03, 0x95, 0x00, 0x29, +0x03, 0x96, 0x03, 0x96, 0x00, 0x21, 0x03, 0x99, +0x03, 0x9b, 0x00, 0x29, 0x03, 0x9c, 0x03, 0x9c, +0x00, 0x24, 0x03, 0x9d, 0x03, 0x9d, 0x00, 0x29, +0x03, 0x9e, 0x03, 0x9e, 0x00, 0x0d, 0x03, 0x9f, +0x03, 0x9f, 0x00, 0x10, 0x03, 0xa0, 0x03, 0xa0, +0x00, 0x2c, 0x03, 0xa1, 0x03, 0xa1, 0x00, 0x35, +0x03, 0xa2, 0x03, 0xa2, 0x00, 0x0b, 0x03, 0xa3, +0x03, 0xa3, 0x00, 0x16, 0x03, 0xa4, 0x03, 0xa4, +0x00, 0x2f, 0x03, 0xa5, 0x03, 0xa6, 0x00, 0x29, +0x03, 0xa7, 0x03, 0xa7, 0x00, 0x2f, 0x03, 0xa8, +0x03, 0xa8, 0x00, 0x27, 0x03, 0xa9, 0x03, 0xa9, +0x00, 0x29, 0x03, 0xaa, 0x03, 0xaa, 0x00, 0x27, +0x03, 0xab, 0x03, 0xac, 0x00, 0x24, 0x03, 0xad, +0x03, 0xad, 0x00, 0x29, 0x03, 0xae, 0x03, 0xaf, +0x00, 0x19, 0x03, 0xb0, 0x03, 0xb0, 0x00, 0x06, +0x03, 0xb1, 0x03, 0xb1, 0x00, 0x13, 0x03, 0xb2, +0x03, 0xb2, 0x00, 0x10, 0x03, 0xb3, 0x03, 0xb3, +0x00, 0x09, 0x03, 0xb4, 0x03, 0xb5, 0x00, 0x29, +0x03, 0xb7, 0x03, 0xb7, 0x00, 0x1e, 0x03, 0xb8, +0x03, 0xb9, 0x00, 0x27, 0x03, 0xba, 0x03, 0xba, +0x00, 0x32, 0x03, 0xbb, 0x03, 0xbb, 0x00, 0x21, +0x03, 0xbe, 0x03, 0xbe, 0x00, 0x29, 0x03, 0xbf, +0x03, 0xbf, 0x00, 0x35, 0x03, 0xc0, 0x03, 0xc0, +0x00, 0x29, 0x03, 0xc1, 0x03, 0xc1, 0x00, 0x3a, +0x03, 0xc2, 0x03, 0xc2, 0x00, 0x24, 0x03, 0xc3, +0x03, 0xc3, 0x00, 0x1c, 0x03, 0xc4, 0x03, 0xc5, +0x00, 0x13, 0x03, 0xc6, 0x03, 0xc6, 0x00, 0x21, +0x03, 0xc9, 0x03, 0xc9, 0x00, 0x38, 0x03, 0xca, +0x03, 0xca, 0x00, 0x21, 0x03, 0xcd, 0x03, 0xcd, +0x00, 0x21, 0x03, 0xd0, 0x03, 0xd0, 0x00, 0x2f, +0x03, 0xd1, 0x03, 0xd1, 0x00, 0x10, 0x03, 0xd4, +0x03, 0xd4, 0x00, 0x16, 0x03, 0xd5, 0x03, 0xd5, +0x00, 0x2f, 0x03, 0xd7, 0x03, 0xd7, 0x00, 0x29, +0x03, 0xd8, 0x03, 0xd8, 0x00, 0x21, 0x03, 0xdb, +0x03, 0xdb, 0x00, 0x02, 0x03, 0xdc, 0x03, 0xdd, +0x00, 0x19, 0x03, 0xde, 0x03, 0xde, 0x00, 0x24, +0x03, 0xdf, 0x03, 0xdf, 0x00, 0x29, 0x03, 0xe0, +0x03, 0xe1, 0x00, 0x24, 0x03, 0xe2, 0x03, 0xe3, +0x00, 0x35, 0x03, 0xe5, 0x03, 0xe5, 0x00, 0x03, +0x03, 0xe6, 0x03, 0xe6, 0x00, 0x36, 0x03, 0xe7, +0x03, 0xe7, 0x00, 0x11, 0x03, 0xe8, 0x03, 0xe8, +0x00, 0x2d, 0x03, 0xe9, 0x03, 0xe9, 0x00, 0x17, +0x03, 0xea, 0x03, 0xea, 0x00, 0x1f, 0x03, 0xed, +0x03, 0xed, 0x00, 0x36, 0x03, 0xee, 0x03, 0xef, +0x00, 0x28, 0x03, 0xf0, 0x03, 0xf0, 0x00, 0x1f, +0x03, 0xf3, 0x03, 0xf5, 0x00, 0x28, 0x03, 0xf6, +0x03, 0xf6, 0x00, 0x22, 0x03, 0xf7, 0x03, 0xf7, +0x00, 0x28, 0x03, 0xf8, 0x03, 0xf8, 0x00, 0x22, +0x03, 0xf9, 0x03, 0xf9, 0x00, 0x0e, 0x03, 0xfa, +0x03, 0xfa, 0x00, 0x2a, 0x03, 0xfb, 0x03, 0xfb, +0x00, 0x33, 0x03, 0xfc, 0x03, 0xfc, 0x00, 0x22, +0x03, 0xfd, 0x03, 0xfd, 0x00, 0x14, 0x03, 0xfe, +0x03, 0xfe, 0x00, 0x2d, 0x03, 0xff, 0x04, 0x00, +0x00, 0x28, 0x04, 0x01, 0x04, 0x01, 0x00, 0x2d, +0x04, 0x02, 0x04, 0x02, 0x00, 0x25, 0x04, 0x03, +0x04, 0x03, 0x00, 0x28, 0x04, 0x04, 0x04, 0x04, +0x00, 0x25, 0x04, 0x05, 0x04, 0x06, 0x00, 0x22, +0x04, 0x07, 0x04, 0x07, 0x00, 0x28, 0x04, 0x08, +0x04, 0x09, 0x00, 0x17, 0x04, 0x0a, 0x04, 0x0a, +0x00, 0x04, 0x04, 0x0b, 0x04, 0x0b, 0x00, 0x11, +0x04, 0x0c, 0x04, 0x0c, 0x00, 0x0e, 0x04, 0x0d, +0x04, 0x0d, 0x00, 0x07, 0x04, 0x12, 0x04, 0x13, +0x00, 0x25, 0x04, 0x14, 0x04, 0x14, 0x00, 0x30, +0x04, 0x15, 0x04, 0x15, 0x00, 0x1f, 0x04, 0x18, +0x04, 0x18, 0x00, 0x28, 0x04, 0x19, 0x04, 0x19, +0x00, 0x33, 0x04, 0x1a, 0x04, 0x1a, 0x00, 0x28, +0x04, 0x1b, 0x04, 0x1b, 0x00, 0x25, 0x04, 0x1c, +0x04, 0x1c, 0x00, 0x22, 0x04, 0x1d, 0x04, 0x1d, +0x00, 0x1a, 0x04, 0x1e, 0x04, 0x1f, 0x00, 0x11, +0x04, 0x20, 0x04, 0x20, 0x00, 0x1f, 0x04, 0x23, +0x04, 0x23, 0x00, 0x36, 0x04, 0x24, 0x04, 0x24, +0x00, 0x1f, 0x04, 0x27, 0x04, 0x27, 0x00, 0x1f, +0x04, 0x2a, 0x04, 0x2a, 0x00, 0x2d, 0x04, 0x2b, +0x04, 0x2b, 0x00, 0x0e, 0x04, 0x2e, 0x04, 0x2e, +0x00, 0x14, 0x04, 0x2f, 0x04, 0x2f, 0x00, 0x2d, +0x04, 0x30, 0x04, 0x30, 0x00, 0x30, 0x04, 0x31, +0x04, 0x31, 0x00, 0x1f, 0x04, 0x36, 0x04, 0x37, +0x00, 0x17, 0x04, 0x38, 0x04, 0x38, 0x00, 0x22, +0x04, 0x39, 0x04, 0x39, 0x00, 0x28, 0x04, 0x3a, +0x04, 0x3b, 0x00, 0x22, 0x04, 0x3c, 0x04, 0x3d, +0x00, 0x33, 0x05, 0xbe, 0x05, 0xbe, 0x00, 0x01, +0x05, 0xbf, 0x05, 0xc0, 0x00, 0x37, 0x05, 0xc1, +0x05, 0xc1, 0x00, 0x12, 0x05, 0xc2, 0x05, 0xc2, +0x00, 0x2e, 0x05, 0xc3, 0x05, 0xc3, 0x00, 0x18, +0x05, 0xc4, 0x05, 0xc4, 0x00, 0x20, 0x05, 0xc5, +0x05, 0xc5, 0x00, 0x37, 0x05, 0xc8, 0x05, 0xc8, +0x00, 0x20, 0x05, 0xcc, 0x05, 0xcc, 0x00, 0x23, +0x05, 0xce, 0x05, 0xce, 0x00, 0x0c, 0x05, 0xcf, +0x05, 0xcf, 0x00, 0x0f, 0x05, 0xd0, 0x05, 0xd0, +0x00, 0x2b, 0x05, 0xd1, 0x05, 0xd1, 0x00, 0x34, +0x05, 0xd2, 0x05, 0xd2, 0x00, 0x0a, 0x05, 0xd3, +0x05, 0xd3, 0x00, 0x15, 0x05, 0xd4, 0x05, 0xd4, +0x00, 0x2e, 0x05, 0xd7, 0x05, 0xd7, 0x00, 0x2e, +0x05, 0xd8, 0x05, 0xd8, 0x00, 0x26, 0x05, 0xda, +0x05, 0xda, 0x00, 0x26, 0x05, 0xdb, 0x05, 0xdc, +0x00, 0x23, 0x05, 0xde, 0x05, 0xdf, 0x00, 0x18, +0x05, 0xe0, 0x05, 0xe0, 0x00, 0x05, 0x05, 0xe1, +0x05, 0xe1, 0x00, 0x12, 0x05, 0xe2, 0x05, 0xe2, +0x00, 0x0f, 0x05, 0xe3, 0x05, 0xe3, 0x00, 0x08, +0x05, 0xe7, 0x05, 0xe7, 0x00, 0x1d, 0x05, 0xe8, +0x05, 0xe9, 0x00, 0x26, 0x05, 0xea, 0x05, 0xea, +0x00, 0x31, 0x05, 0xeb, 0x05, 0xeb, 0x00, 0x20, +0x05, 0xed, 0x05, 0xed, 0x00, 0x34, 0x05, 0xef, +0x05, 0xef, 0x00, 0x39, 0x05, 0xf0, 0x05, 0xf0, +0x00, 0x23, 0x05, 0xf1, 0x05, 0xf1, 0x00, 0x1b, +0x05, 0xf2, 0x05, 0xf3, 0x00, 0x12, 0x05, 0xf4, +0x05, 0xf4, 0x00, 0x20, 0x05, 0xf5, 0x05, 0xf5, +0x00, 0x37, 0x05, 0xf6, 0x05, 0xf7, 0x00, 0x20, +0x05, 0xf8, 0x05, 0xf8, 0x00, 0x2e, 0x05, 0xf9, +0x05, 0xf9, 0x00, 0x0f, 0x05, 0xfc, 0x05, 0xfc, +0x00, 0x15, 0x05, 0xfd, 0x05, 0xfd, 0x00, 0x2e, +0x06, 0x00, 0x06, 0x00, 0x00, 0x20, 0x06, 0x01, +0x06, 0x01, 0x00, 0x01, 0x06, 0x02, 0x06, 0x03, +0x00, 0x18, 0x06, 0x04, 0x06, 0x04, 0x00, 0x23, +0x06, 0x06, 0x06, 0x07, 0x00, 0x23, 0x06, 0x08, +0x06, 0x09, 0x00, 0x34, 0x00, 0x02, 0x01, 0x19, +0x00, 0x04, 0x00, 0x04, 0x00, 0x68, 0x00, 0x06, +0x00, 0x06, 0x00, 0x25, 0x00, 0x0a, 0x00, 0x0a, +0x00, 0x25, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x6a, +0x00, 0x12, 0x00, 0x12, 0x00, 0x25, 0x00, 0x14, +0x00, 0x14, 0x00, 0x25, 0x00, 0x17, 0x00, 0x17, +0x00, 0x28, 0x00, 0x18, 0x00, 0x18, 0x00, 0x2a, +0x00, 0x19, 0x00, 0x19, 0x00, 0x2d, 0x00, 0x1b, +0x00, 0x1b, 0x00, 0x30, 0x00, 0x1c, 0x00, 0x1c, +0x00, 0x32, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x6b, +0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x31, +0x00, 0x31, 0x00, 0x27, 0x00, 0x33, 0x00, 0x33, +0x00, 0x2b, 0x00, 0x36, 0x00, 0x36, 0x00, 0x31, +0x00, 0x38, 0x00, 0x4d, 0x00, 0x68, 0x00, 0x53, +0x00, 0x57, 0x00, 0x25, 0x00, 0x6e, 0x00, 0x76, +0x00, 0x25, 0x00, 0x87, 0x00, 0x87, 0x00, 0x6a, +0x00, 0x9e, 0x00, 0xb7, 0x00, 0x25, 0x00, 0xc7, +0x00, 0xcc, 0x00, 0x28, 0x00, 0xcd, 0x00, 0xe3, +0x00, 0x2a, 0x00, 0xe8, 0x00, 0xef, 0x00, 0x32, +0x00, 0xf0, 0x00, 0xf4, 0x00, 0x6b, 0x01, 0x8c, +0x01, 0x92, 0x00, 0x27, 0x01, 0xae, 0x01, 0xb5, +0x00, 0x31, 0x01, 0xd3, 0x01, 0xd3, 0x00, 0x31, +0x01, 0xf3, 0x01, 0xf3, 0x00, 0x27, 0x02, 0x04, +0x02, 0x04, 0x00, 0x23, 0x02, 0x07, 0x02, 0x08, +0x00, 0x23, 0x02, 0x09, 0x02, 0x15, 0x00, 0x69, +0x02, 0x40, 0x02, 0x40, 0x00, 0x23, 0x03, 0x8a, +0x03, 0x8a, 0x00, 0x17, 0x03, 0x8b, 0x03, 0x8d, +0x00, 0x6e, 0x03, 0x8e, 0x03, 0x8e, 0x00, 0x51, +0x03, 0x8f, 0x03, 0x8f, 0x00, 0x6e, 0x03, 0x90, +0x03, 0x90, 0x00, 0x53, 0x03, 0x93, 0x03, 0x93, +0x00, 0x47, 0x03, 0x94, 0x03, 0x96, 0x00, 0x6e, +0x03, 0x99, 0x03, 0x99, 0x00, 0x52, 0x03, 0x9a, +0x03, 0x9b, 0x00, 0x6e, 0x03, 0x9c, 0x03, 0x9c, +0x00, 0x20, 0x03, 0x9d, 0x03, 0x9e, 0x00, 0x6e, +0x03, 0x9f, 0x03, 0x9f, 0x00, 0x20, 0x03, 0xa0, +0x03, 0xa0, 0x00, 0x03, 0x03, 0xa1, 0x03, 0xa1, +0x00, 0x45, 0x03, 0xa2, 0x03, 0xa2, 0x00, 0x5a, +0x03, 0xa3, 0x03, 0xa3, 0x00, 0x1e, 0x03, 0xa4, +0x03, 0xa4, 0x00, 0x6e, 0x03, 0xa5, 0x03, 0xa5, +0x00, 0x19, 0x03, 0xa6, 0x03, 0xa7, 0x00, 0x6e, +0x03, 0xa8, 0x03, 0xa8, 0x00, 0x03, 0x03, 0xa9, +0x03, 0xaa, 0x00, 0x6e, 0x03, 0xab, 0x03, 0xab, +0x00, 0x47, 0x03, 0xac, 0x03, 0xac, 0x00, 0x6e, +0x03, 0xad, 0x03, 0xad, 0x00, 0x46, 0x03, 0xae, +0x03, 0xaf, 0x00, 0x6e, 0x03, 0xb0, 0x03, 0xb0, +0x00, 0x03, 0x03, 0xb1, 0x03, 0xb1, 0x00, 0x6e, +0x03, 0xb2, 0x03, 0xb2, 0x00, 0x20, 0x03, 0xb3, +0x03, 0xb3, 0x00, 0x4e, 0x03, 0xb4, 0x03, 0xb5, +0x00, 0x6e, 0x03, 0xb7, 0x03, 0xb7, 0x00, 0x43, +0x03, 0xb8, 0x03, 0xb8, 0x00, 0x52, 0x03, 0xb9, +0x03, 0xb9, 0x00, 0x6e, 0x03, 0xba, 0x03, 0xba, +0x00, 0x03, 0x03, 0xbb, 0x03, 0xbb, 0x00, 0x6e, +0x03, 0xbe, 0x03, 0xbe, 0x00, 0x6e, 0x03, 0xbf, +0x03, 0xbf, 0x00, 0x45, 0x03, 0xc0, 0x03, 0xc0, +0x00, 0x6e, 0x03, 0xc1, 0x03, 0xc1, 0x00, 0x21, +0x03, 0xc2, 0x03, 0xc2, 0x00, 0x20, 0x03, 0xc3, +0x03, 0xc3, 0x00, 0x01, 0x03, 0xc4, 0x03, 0xc4, +0x00, 0x6e, 0x03, 0xc6, 0x03, 0xc6, 0x00, 0x53, +0x03, 0xc9, 0x03, 0xc9, 0x00, 0x47, 0x03, 0xca, +0x03, 0xca, 0x00, 0x6e, 0x03, 0xcd, 0x03, 0xcd, +0x00, 0x03, 0x03, 0xd0, 0x03, 0xd0, 0x00, 0x6e, +0x03, 0xd1, 0x03, 0xd1, 0x00, 0x20, 0x03, 0xd2, +0x03, 0xd2, 0x00, 0x49, 0x03, 0xd4, 0x03, 0xd4, +0x00, 0x1e, 0x03, 0xd5, 0x03, 0xd5, 0x00, 0x19, +0x03, 0xd6, 0x03, 0xd7, 0x00, 0x6e, 0x03, 0xd8, +0x03, 0xd8, 0x00, 0x53, 0x03, 0xdb, 0x03, 0xdb, +0x00, 0x17, 0x03, 0xdc, 0x03, 0xdc, 0x00, 0x6d, +0x03, 0xdd, 0x03, 0xdd, 0x00, 0x6e, 0x03, 0xdf, +0x03, 0xdf, 0x00, 0x6e, 0x03, 0xe0, 0x03, 0xe1, +0x00, 0x20, 0x03, 0xe2, 0x03, 0xe3, 0x00, 0x45, +0x03, 0xe4, 0x03, 0xe4, 0x00, 0x16, 0x03, 0xe5, +0x03, 0xe5, 0x00, 0x41, 0x03, 0xe6, 0x03, 0xe7, +0x00, 0x5f, 0x03, 0xe8, 0x03, 0xe8, 0x00, 0x1a, +0x03, 0xe9, 0x03, 0xe9, 0x00, 0x55, 0x03, 0xea, +0x03, 0xea, 0x00, 0x4a, 0x03, 0xeb, 0x03, 0xeb, +0x00, 0x57, 0x03, 0xed, 0x03, 0xed, 0x00, 0x22, +0x03, 0xee, 0x03, 0xf0, 0x00, 0x5f, 0x03, 0xf3, +0x03, 0xf3, 0x00, 0x1d, 0x03, 0xf4, 0x03, 0xf5, +0x00, 0x5f, 0x03, 0xf6, 0x03, 0xf6, 0x00, 0x55, +0x03, 0xf7, 0x03, 0xf7, 0x00, 0x5f, 0x03, 0xf8, +0x03, 0xf8, 0x00, 0x5e, 0x03, 0xf9, 0x03, 0xf9, +0x00, 0x55, 0x03, 0xfa, 0x03, 0xfa, 0x00, 0x02, +0x03, 0xfb, 0x03, 0xfb, 0x00, 0x44, 0x03, 0xfc, +0x03, 0xfc, 0x00, 0x55, 0x03, 0xfd, 0x03, 0xfd, +0x00, 0x3a, 0x03, 0xfe, 0x03, 0xfe, 0x00, 0x5f, +0x03, 0xff, 0x03, 0xff, 0x00, 0x18, 0x04, 0x00, +0x04, 0x01, 0x00, 0x5f, 0x04, 0x02, 0x04, 0x02, +0x00, 0x02, 0x04, 0x03, 0x04, 0x04, 0x00, 0x5f, +0x04, 0x05, 0x04, 0x05, 0x00, 0x1c, 0x04, 0x06, +0x04, 0x06, 0x00, 0x5f, 0x04, 0x07, 0x04, 0x07, +0x00, 0x3b, 0x04, 0x08, 0x04, 0x09, 0x00, 0x55, +0x04, 0x0a, 0x04, 0x0a, 0x00, 0x3c, 0x04, 0x0b, +0x04, 0x0b, 0x00, 0x5f, 0x04, 0x0c, 0x04, 0x0c, +0x00, 0x55, 0x04, 0x0d, 0x04, 0x0d, 0x00, 0x1b, +0x04, 0x0e, 0x04, 0x0f, 0x00, 0x65, 0x04, 0x11, +0x04, 0x11, 0x00, 0x3d, 0x04, 0x12, 0x04, 0x12, +0x00, 0x1d, 0x04, 0x13, 0x04, 0x13, 0x00, 0x5f, +0x04, 0x14, 0x04, 0x14, 0x00, 0x3c, 0x04, 0x15, +0x04, 0x15, 0x00, 0x5f, 0x04, 0x18, 0x04, 0x18, +0x00, 0x5f, 0x04, 0x19, 0x04, 0x19, 0x00, 0x44, +0x04, 0x1a, 0x04, 0x1a, 0x00, 0x5f, 0x04, 0x1b, +0x04, 0x1b, 0x00, 0x04, 0x04, 0x1c, 0x04, 0x1c, +0x00, 0x55, 0x04, 0x1d, 0x04, 0x1d, 0x00, 0x42, +0x04, 0x1e, 0x04, 0x1e, 0x00, 0x5f, 0x04, 0x1f, +0x04, 0x1f, 0x00, 0x5b, 0x04, 0x20, 0x04, 0x20, +0x00, 0x4a, 0x04, 0x23, 0x04, 0x23, 0x00, 0x22, +0x04, 0x24, 0x04, 0x24, 0x00, 0x5f, 0x04, 0x27, +0x04, 0x27, 0x00, 0x02, 0x04, 0x2a, 0x04, 0x2a, +0x00, 0x5f, 0x04, 0x2b, 0x04, 0x2b, 0x00, 0x55, +0x04, 0x2c, 0x04, 0x2d, 0x00, 0x42, 0x04, 0x2e, +0x04, 0x2e, 0x00, 0x3a, 0x04, 0x2f, 0x04, 0x2f, +0x00, 0x18, 0x04, 0x31, 0x04, 0x31, 0x00, 0x4a, +0x04, 0x35, 0x04, 0x36, 0x00, 0x16, 0x04, 0x37, +0x04, 0x37, 0x00, 0x55, 0x04, 0x38, 0x04, 0x38, +0x00, 0x5c, 0x04, 0x39, 0x04, 0x39, 0x00, 0x5f, +0x04, 0x3a, 0x04, 0x3b, 0x00, 0x55, 0x04, 0x3c, +0x04, 0x3d, 0x00, 0x44, 0x04, 0x77, 0x04, 0x78, +0x00, 0x0f, 0x04, 0x79, 0x04, 0x7a, 0x00, 0x0e, +0x04, 0x7b, 0x04, 0x7b, 0x00, 0x0f, 0x04, 0x7c, +0x04, 0x7c, 0x00, 0x61, 0x04, 0x7e, 0x04, 0x7e, +0x00, 0x34, 0x04, 0x80, 0x04, 0x81, 0x00, 0x36, +0x04, 0x82, 0x04, 0x82, 0x00, 0x35, 0x04, 0x83, +0x04, 0x83, 0x00, 0x05, 0x04, 0x84, 0x04, 0x84, +0x00, 0x35, 0x04, 0x85, 0x04, 0x85, 0x00, 0x05, +0x04, 0x86, 0x04, 0x87, 0x00, 0x0f, 0x04, 0x88, +0x04, 0x88, 0x00, 0x4c, 0x04, 0x89, 0x04, 0x89, +0x00, 0x48, 0x04, 0x8a, 0x04, 0x8a, 0x00, 0x4c, +0x04, 0x8b, 0x04, 0x8b, 0x00, 0x48, 0x04, 0x8c, +0x04, 0x8f, 0x00, 0x4b, 0x04, 0x92, 0x04, 0x93, +0x00, 0x4b, 0x04, 0x94, 0x04, 0x94, 0x00, 0x11, +0x04, 0x9a, 0x04, 0x9a, 0x00, 0x66, 0x04, 0x9c, +0x04, 0x9c, 0x00, 0x66, 0x04, 0x9e, 0x04, 0x9e, +0x00, 0x66, 0x04, 0x9f, 0x04, 0x9f, 0x00, 0x56, +0x04, 0xa1, 0x04, 0xa1, 0x00, 0x37, 0x04, 0xa3, +0x04, 0xa3, 0x00, 0x06, 0x04, 0xa9, 0x04, 0xa9, +0x00, 0x61, 0x04, 0xaa, 0x04, 0xaa, 0x00, 0x34, +0x04, 0xab, 0x04, 0xab, 0x00, 0x61, 0x04, 0xac, +0x04, 0xad, 0x00, 0x34, 0x04, 0xaf, 0x04, 0xaf, +0x00, 0x66, 0x04, 0xb1, 0x04, 0xb1, 0x00, 0x66, +0x04, 0xb3, 0x04, 0xb3, 0x00, 0x66, 0x04, 0xba, +0x04, 0xba, 0x00, 0x38, 0x04, 0xbb, 0x04, 0xbb, +0x00, 0x39, 0x04, 0xc3, 0x04, 0xc3, 0x00, 0x62, +0x04, 0xc5, 0x04, 0xc5, 0x00, 0x24, 0x04, 0xc9, +0x04, 0xc9, 0x00, 0x24, 0x04, 0xcb, 0x04, 0xcb, +0x00, 0x6f, 0x04, 0xcc, 0x04, 0xcc, 0x00, 0x63, +0x04, 0xd1, 0x04, 0xd1, 0x00, 0x24, 0x04, 0xd3, +0x04, 0xd3, 0x00, 0x24, 0x04, 0xd5, 0x04, 0xd5, +0x00, 0x26, 0x04, 0xd6, 0x04, 0xd6, 0x00, 0x64, +0x04, 0xd7, 0x04, 0xd7, 0x00, 0x29, 0x04, 0xd8, +0x04, 0xd8, 0x00, 0x2c, 0x04, 0xd9, 0x04, 0xd9, +0x00, 0x2e, 0x04, 0xda, 0x04, 0xda, 0x00, 0x2f, +0x04, 0xdc, 0x04, 0xdc, 0x00, 0x33, 0x04, 0xdd, +0x04, 0xf2, 0x00, 0x62, 0x04, 0xf8, 0x04, 0xfc, +0x00, 0x24, 0x05, 0x13, 0x05, 0x1b, 0x00, 0x24, +0x05, 0x20, 0x05, 0x2b, 0x00, 0x6f, 0x05, 0x2c, +0x05, 0x2c, 0x00, 0x63, 0x05, 0x43, 0x05, 0x5c, +0x00, 0x24, 0x05, 0x64, 0x05, 0x6b, 0x00, 0x26, +0x05, 0x6d, 0x05, 0x72, 0x00, 0x64, 0x05, 0x73, +0x05, 0x89, 0x00, 0x29, 0x05, 0x8a, 0x05, 0x8d, +0x00, 0x2e, 0x05, 0x96, 0x05, 0x9a, 0x00, 0x33, +0x05, 0xbe, 0x05, 0xbe, 0x00, 0x07, 0x05, 0xbf, +0x05, 0xc1, 0x00, 0x60, 0x05, 0xc2, 0x05, 0xc2, +0x00, 0x4f, 0x05, 0xc3, 0x05, 0xc3, 0x00, 0x60, +0x05, 0xc4, 0x05, 0xc4, 0x00, 0x54, 0x05, 0xc5, +0x05, 0xc5, 0x00, 0x40, 0x05, 0xc6, 0x05, 0xc8, +0x00, 0x60, 0x05, 0xc9, 0x05, 0xc9, 0x00, 0x50, +0x05, 0xca, 0x05, 0xcb, 0x00, 0x60, 0x05, 0xcc, +0x05, 0xcc, 0x00, 0x1f, 0x05, 0xcd, 0x05, 0xce, +0x00, 0x60, 0x05, 0xcf, 0x05, 0xcf, 0x00, 0x1f, +0x05, 0xd0, 0x05, 0xd0, 0x00, 0x0c, 0x05, 0xd1, +0x05, 0xd1, 0x00, 0x3f, 0x05, 0xd2, 0x05, 0xd2, +0x00, 0x58, 0x05, 0xd3, 0x05, 0xd3, 0x00, 0x0a, +0x05, 0xd4, 0x05, 0xd4, 0x00, 0x60, 0x05, 0xd5, +0x05, 0xd5, 0x00, 0x08, 0x05, 0xd6, 0x05, 0xd7, +0x00, 0x60, 0x05, 0xd8, 0x05, 0xd8, 0x00, 0x0c, +0x05, 0xd9, 0x05, 0xda, 0x00, 0x60, 0x05, 0xdb, +0x05, 0xdb, 0x00, 0x40, 0x05, 0xdc, 0x05, 0xdc, +0x00, 0x60, 0x05, 0xdd, 0x05, 0xdd, 0x00, 0x5d, +0x05, 0xde, 0x05, 0xdf, 0x00, 0x60, 0x05, 0xe0, +0x05, 0xe0, 0x00, 0x0c, 0x05, 0xe1, 0x05, 0xe1, +0x00, 0x60, 0x05, 0xe2, 0x05, 0xe2, 0x00, 0x1f, +0x05, 0xe3, 0x05, 0xe3, 0x00, 0x09, 0x05, 0xe4, +0x05, 0xe5, 0x00, 0x60, 0x05, 0xe7, 0x05, 0xe7, +0x00, 0x3e, 0x05, 0xe8, 0x05, 0xe8, 0x00, 0x50, +0x05, 0xe9, 0x05, 0xe9, 0x00, 0x60, 0x05, 0xea, +0x05, 0xea, 0x00, 0x0c, 0x05, 0xeb, 0x05, 0xec, +0x00, 0x60, 0x05, 0xed, 0x05, 0xed, 0x00, 0x3f, +0x05, 0xee, 0x05, 0xee, 0x00, 0x60, 0x05, 0xef, +0x05, 0xef, 0x00, 0x0d, 0x05, 0xf0, 0x05, 0xf0, +0x00, 0x1f, 0x05, 0xf1, 0x05, 0xf1, 0x00, 0x0b, +0x05, 0xf2, 0x05, 0xf2, 0x00, 0x60, 0x05, 0xf4, +0x05, 0xf4, 0x00, 0x54, 0x05, 0xf5, 0x05, 0xf5, +0x00, 0x40, 0x05, 0xf6, 0x05, 0xf6, 0x00, 0x60, +0x05, 0xf7, 0x05, 0xf7, 0x00, 0x0c, 0x05, 0xf8, +0x05, 0xf8, 0x00, 0x60, 0x05, 0xf9, 0x05, 0xf9, +0x00, 0x1f, 0x05, 0xfa, 0x05, 0xfa, 0x00, 0x10, +0x05, 0xfc, 0x05, 0xfc, 0x00, 0x0a, 0x05, 0xfd, +0x05, 0xfd, 0x00, 0x08, 0x05, 0xfe, 0x05, 0xff, +0x00, 0x60, 0x06, 0x00, 0x06, 0x00, 0x00, 0x54, +0x06, 0x01, 0x06, 0x01, 0x00, 0x07, 0x06, 0x02, +0x06, 0x02, 0x00, 0x6c, 0x06, 0x03, 0x06, 0x03, +0x00, 0x60, 0x06, 0x05, 0x06, 0x05, 0x00, 0x60, +0x06, 0x06, 0x06, 0x07, 0x00, 0x1f, 0x06, 0x08, +0x06, 0x09, 0x00, 0x3f, 0x06, 0x17, 0x06, 0x17, +0x00, 0x12, 0x06, 0x19, 0x06, 0x19, 0x00, 0x15, +0x06, 0x1b, 0x06, 0x1b, 0x00, 0x13, 0x06, 0x1c, +0x06, 0x1c, 0x00, 0x14, 0x06, 0x1f, 0x06, 0x1f, +0x00, 0x4d, 0x06, 0x21, 0x06, 0x21, 0x00, 0x59, +0x06, 0x23, 0x06, 0x23, 0x00, 0x67, 0x07, 0x0a, +0x07, 0x0a, 0x00, 0x35, 0x07, 0x0b, 0x07, 0x0c, +0x00, 0x05, 0x07, 0x0d, 0x07, 0x0d, 0x00, 0x35, +0x07, 0x96, 0x07, 0x97, 0x00, 0x23, 0x00, 0x02, +0x00, 0x18, 0x04, 0x77, 0x04, 0x78, 0x00, 0x02, +0x04, 0x79, 0x04, 0x7a, 0x00, 0x01, 0x04, 0x7b, +0x04, 0x7b, 0x00, 0x02, 0x04, 0x7c, 0x04, 0x7c, +0x00, 0x04, 0x04, 0x7e, 0x04, 0x7e, 0x00, 0x07, +0x04, 0x80, 0x04, 0x81, 0x00, 0x0a, 0x04, 0x82, +0x04, 0x82, 0x00, 0x08, 0x04, 0x83, 0x04, 0x83, +0x00, 0x09, 0x04, 0x84, 0x04, 0x84, 0x00, 0x08, +0x04, 0x85, 0x04, 0x85, 0x00, 0x09, 0x04, 0x86, +0x04, 0x87, 0x00, 0x02, 0x04, 0x88, 0x04, 0x88, +0x00, 0x05, 0x04, 0x89, 0x04, 0x89, 0x00, 0x06, +0x04, 0x8a, 0x04, 0x8a, 0x00, 0x05, 0x04, 0x8b, +0x04, 0x8b, 0x00, 0x06, 0x04, 0x8c, 0x04, 0x8f, +0x00, 0x03, 0x04, 0x92, 0x04, 0x93, 0x00, 0x03, +0x04, 0xa9, 0x04, 0xa9, 0x00, 0x04, 0x04, 0xaa, +0x04, 0xab, 0x00, 0x07, 0x04, 0xac, 0x04, 0xac, +0x00, 0x04, 0x04, 0xad, 0x04, 0xad, 0x00, 0x07, +0x07, 0x0a, 0x07, 0x0a, 0x00, 0x08, 0x07, 0x0b, +0x07, 0x0c, 0x00, 0x09, 0x07, 0x0d, 0x07, 0x0d, +0x00, 0x08, 0x00, 0x02, 0x01, 0x41, 0x00, 0x04, +0x00, 0x04, 0x00, 0x81, 0x00, 0x0d, 0x00, 0x0d, +0x00, 0x0a, 0x00, 0x16, 0x00, 0x16, 0x00, 0x58, +0x00, 0x17, 0x00, 0x17, 0x00, 0x32, 0x00, 0x18, +0x00, 0x18, 0x00, 0x34, 0x00, 0x19, 0x00, 0x19, +0x00, 0x37, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x3a, +0x00, 0x1b, 0x00, 0x1b, 0x00, 0x5a, 0x00, 0x1c, +0x00, 0x1c, 0x00, 0x10, 0x00, 0x1d, 0x00, 0x1d, +0x00, 0x5b, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x80, +0x00, 0x20, 0x00, 0x22, 0x00, 0x2e, 0x00, 0x23, +0x00, 0x23, 0x00, 0x82, 0x00, 0x24, 0x00, 0x24, +0x00, 0x83, 0x00, 0x27, 0x00, 0x27, 0x00, 0x09, +0x00, 0x2a, 0x00, 0x2b, 0x00, 0x8c, 0x00, 0x2c, +0x00, 0x2c, 0x00, 0x2e, 0x00, 0x2d, 0x00, 0x2d, +0x00, 0x8c, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x2e, +0x00, 0x2f, 0x00, 0x2f, 0x00, 0x8c, 0x00, 0x30, +0x00, 0x30, 0x00, 0x84, 0x00, 0x31, 0x00, 0x31, +0x00, 0x30, 0x00, 0x33, 0x00, 0x33, 0x00, 0x35, +0x00, 0x34, 0x00, 0x34, 0x00, 0x38, 0x00, 0x35, +0x00, 0x35, 0x00, 0x59, 0x00, 0x36, 0x00, 0x36, +0x00, 0x3b, 0x00, 0x37, 0x00, 0x37, 0x00, 0x8d, +0x00, 0x38, 0x00, 0x4d, 0x00, 0x81, 0x00, 0x4e, +0x00, 0x50, 0x00, 0x7f, 0x00, 0x87, 0x00, 0x87, +0x00, 0x0a, 0x00, 0xbf, 0x00, 0xc5, 0x00, 0x58, +0x00, 0xc7, 0x00, 0xcc, 0x00, 0x32, 0x00, 0xcd, +0x00, 0xe3, 0x00, 0x34, 0x00, 0xe4, 0x00, 0xe7, +0x00, 0x3a, 0x00, 0xe8, 0x00, 0xef, 0x00, 0x10, +0x00, 0xf0, 0x00, 0xf4, 0x00, 0x5b, 0x00, 0xfa, +0x01, 0x12, 0x00, 0x80, 0x01, 0x13, 0x01, 0x13, +0x00, 0x0f, 0x01, 0x15, 0x01, 0x2f, 0x00, 0x2e, +0x01, 0x30, 0x01, 0x37, 0x00, 0x83, 0x01, 0x3c, +0x01, 0x3c, 0x00, 0x0f, 0x01, 0x49, 0x01, 0x49, +0x00, 0x8c, 0x01, 0x4a, 0x01, 0x4a, 0x00, 0x09, +0x01, 0x4e, 0x01, 0x4e, 0x00, 0x8c, 0x01, 0x57, +0x01, 0x61, 0x00, 0x8c, 0x01, 0x63, 0x01, 0x7c, +0x00, 0x2e, 0x01, 0x7d, 0x01, 0x83, 0x00, 0x8c, +0x01, 0x84, 0x01, 0x8a, 0x00, 0x84, 0x01, 0x8c, +0x01, 0x92, 0x00, 0x30, 0x01, 0xaa, 0x01, 0xad, +0x00, 0x38, 0x01, 0xae, 0x01, 0xb5, 0x00, 0x3b, +0x01, 0xb6, 0x01, 0xba, 0x00, 0x8d, 0x01, 0xbd, +0x01, 0xbd, 0x00, 0x8c, 0x01, 0xbe, 0x01, 0xbe, +0x00, 0x09, 0x01, 0xc1, 0x01, 0xc1, 0x00, 0x8c, +0x01, 0xc4, 0x01, 0xc6, 0x00, 0x2e, 0x01, 0xc8, +0x01, 0xc8, 0x00, 0x2e, 0x01, 0xc9, 0x01, 0xc9, +0x00, 0x8c, 0x01, 0xcf, 0x01, 0xcf, 0x00, 0x09, +0x01, 0xd0, 0x01, 0xd2, 0x00, 0x2e, 0x01, 0xd3, +0x01, 0xd3, 0x00, 0x3b, 0x01, 0xd8, 0x01, 0xd8, +0x00, 0x8c, 0x01, 0xdf, 0x01, 0xdf, 0x00, 0x8c, +0x01, 0xe2, 0x01, 0xe2, 0x00, 0x8c, 0x01, 0xe3, +0x01, 0xe3, 0x00, 0x09, 0x01, 0xe4, 0x01, 0xe5, +0x00, 0x8c, 0x01, 0xe6, 0x01, 0xe8, 0x00, 0x2e, +0x01, 0xec, 0x01, 0xec, 0x00, 0x8c, 0x01, 0xee, +0x01, 0xee, 0x00, 0x8c, 0x01, 0xf0, 0x01, 0xf0, +0x00, 0x84, 0x01, 0xf1, 0x01, 0xf2, 0x00, 0x09, +0x01, 0xf3, 0x01, 0xf3, 0x00, 0x30, 0x01, 0xfb, +0x01, 0xfc, 0x00, 0x8d, 0x02, 0x04, 0x02, 0x04, +0x00, 0x82, 0x02, 0x07, 0x02, 0x08, 0x00, 0x82, +0x02, 0x17, 0x02, 0x36, 0x00, 0x2e, 0x02, 0x40, +0x02, 0x40, 0x00, 0x82, 0x02, 0x41, 0x02, 0x41, +0x00, 0x71, 0x02, 0x44, 0x02, 0x44, 0x00, 0x75, +0x02, 0x46, 0x02, 0x46, 0x00, 0x57, 0x02, 0x4b, +0x02, 0x4b, 0x00, 0x71, 0x02, 0x4e, 0x02, 0x4e, +0x00, 0x56, 0x02, 0x52, 0x02, 0x52, 0x00, 0x55, +0x02, 0x53, 0x02, 0x53, 0x00, 0x2b, 0x02, 0x54, +0x02, 0x54, 0x00, 0x0e, 0x02, 0x55, 0x02, 0x55, +0x00, 0x25, 0x02, 0x56, 0x02, 0x56, 0x00, 0x54, +0x02, 0x57, 0x02, 0x57, 0x00, 0x26, 0x02, 0x59, +0x02, 0x59, 0x00, 0x70, 0x02, 0x5a, 0x02, 0x5c, +0x00, 0x7c, 0x02, 0x5e, 0x02, 0x5e, 0x00, 0x7b, +0x02, 0x5f, 0x02, 0x5f, 0x00, 0x7d, 0x02, 0x60, +0x02, 0x60, 0x00, 0x0e, 0x02, 0x61, 0x02, 0x61, +0x00, 0x77, 0x02, 0x62, 0x02, 0x62, 0x00, 0x23, +0x02, 0x63, 0x02, 0x63, 0x00, 0x72, 0x02, 0x64, +0x02, 0x64, 0x00, 0x5c, 0x02, 0x65, 0x02, 0x65, +0x00, 0x73, 0x02, 0x66, 0x02, 0x66, 0x00, 0x76, +0x02, 0x67, 0x02, 0x67, 0x00, 0x7e, 0x02, 0x6c, +0x02, 0x6c, 0x00, 0x5d, 0x02, 0x6e, 0x02, 0x6e, +0x00, 0x5e, 0x02, 0x70, 0x02, 0x70, 0x00, 0x27, +0x02, 0x71, 0x02, 0x71, 0x00, 0x65, 0x02, 0x72, +0x02, 0x72, 0x00, 0x7a, 0x02, 0x73, 0x02, 0x73, +0x00, 0x27, 0x02, 0x74, 0x02, 0x74, 0x00, 0x29, +0x02, 0x76, 0x02, 0x76, 0x00, 0x27, 0x02, 0x77, +0x02, 0x77, 0x00, 0x53, 0x02, 0x79, 0x02, 0x7a, +0x00, 0x27, 0x02, 0x7d, 0x02, 0x7d, 0x00, 0x27, +0x02, 0x7e, 0x02, 0x7e, 0x00, 0x23, 0x02, 0x7f, +0x02, 0x7f, 0x00, 0x76, 0x02, 0x83, 0x02, 0x83, +0x00, 0x27, 0x02, 0x86, 0x02, 0x86, 0x00, 0x27, +0x02, 0x89, 0x02, 0x92, 0x00, 0x70, 0x02, 0x93, +0x02, 0x94, 0x00, 0x71, 0x02, 0x95, 0x02, 0x98, +0x00, 0x7c, 0x02, 0x9d, 0x02, 0xa0, 0x00, 0x7c, +0x02, 0xa7, 0x02, 0xaa, 0x00, 0x7c, 0x02, 0xb3, +0x02, 0xb6, 0x00, 0x7b, 0x02, 0xbb, 0x02, 0xbb, +0x00, 0x7c, 0x02, 0xbc, 0x02, 0xbe, 0x00, 0x7d, +0x02, 0xc2, 0x02, 0xc3, 0x00, 0x0e, 0x02, 0xc4, +0x02, 0xc7, 0x00, 0x77, 0x02, 0xce, 0x02, 0xce, +0x00, 0x71, 0x02, 0xcf, 0x02, 0xd6, 0x00, 0x70, +0x02, 0xd8, 0x02, 0xd9, 0x00, 0x7c, 0x02, 0xe1, +0x02, 0xe2, 0x00, 0x77, 0x02, 0xe9, 0x02, 0xf5, +0x00, 0x23, 0x02, 0xf6, 0x02, 0xfd, 0x00, 0x76, +0x03, 0x19, 0x03, 0x20, 0x00, 0x27, 0x03, 0x21, +0x03, 0x22, 0x00, 0x7a, 0x03, 0x33, 0x03, 0x3d, +0x00, 0x27, 0x03, 0x3e, 0x03, 0x49, 0x00, 0x23, +0x03, 0x56, 0x03, 0x61, 0x00, 0x27, 0x03, 0x63, +0x03, 0x64, 0x00, 0x27, 0x03, 0x8a, 0x03, 0x8a, +0x00, 0x6e, 0x03, 0x8e, 0x03, 0x8e, 0x00, 0x03, +0x03, 0x90, 0x03, 0x90, 0x00, 0x08, 0x03, 0x93, +0x03, 0x93, 0x00, 0x50, 0x03, 0x99, 0x03, 0x99, +0x00, 0x0d, 0x03, 0xa0, 0x03, 0xa0, 0x00, 0x1f, +0x03, 0xa1, 0x03, 0xa1, 0x00, 0x06, 0x03, 0xa2, +0x03, 0xa2, 0x00, 0x17, 0x03, 0xa3, 0x03, 0xa3, +0x00, 0x4b, 0x03, 0xa5, 0x03, 0xa5, 0x00, 0x15, +0x03, 0xa8, 0x03, 0xa8, 0x00, 0x1f, 0x03, 0xab, +0x03, 0xab, 0x00, 0x50, 0x03, 0xad, 0x03, 0xad, +0x00, 0x4e, 0x03, 0xb0, 0x03, 0xb0, 0x00, 0x1f, +0x03, 0xb3, 0x03, 0xb3, 0x00, 0x48, 0x03, 0xb7, +0x03, 0xb7, 0x00, 0x05, 0x03, 0xb8, 0x03, 0xb8, +0x00, 0x0d, 0x03, 0xba, 0x03, 0xba, 0x00, 0x1f, +0x03, 0xbf, 0x03, 0xbf, 0x00, 0x06, 0x03, 0xc1, +0x03, 0xc1, 0x00, 0x22, 0x03, 0xc3, 0x03, 0xc3, +0x00, 0x1a, 0x03, 0xc6, 0x03, 0xc6, 0x00, 0x08, +0x03, 0xc9, 0x03, 0xc9, 0x00, 0x50, 0x03, 0xcd, +0x03, 0xcd, 0x00, 0x1f, 0x03, 0xd2, 0x03, 0xd2, +0x00, 0x63, 0x03, 0xd4, 0x03, 0xd4, 0x00, 0x4b, +0x03, 0xd5, 0x03, 0xd5, 0x00, 0x15, 0x03, 0xd8, +0x03, 0xd8, 0x00, 0x08, 0x03, 0xdb, 0x03, 0xdb, +0x00, 0x6e, 0x03, 0xdc, 0x03, 0xdc, 0x00, 0x86, +0x03, 0xde, 0x03, 0xde, 0x00, 0x87, 0x03, 0xe2, +0x03, 0xe3, 0x00, 0x06, 0x03, 0xe4, 0x03, 0xe4, +0x00, 0x6d, 0x03, 0xe6, 0x03, 0xe7, 0x00, 0x8b, +0x03, 0xe8, 0x03, 0xe8, 0x00, 0x01, 0x03, 0xe9, +0x03, 0xe9, 0x00, 0x1b, 0x03, 0xea, 0x03, 0xea, +0x00, 0x51, 0x03, 0xed, 0x03, 0xed, 0x00, 0x4f, +0x03, 0xee, 0x03, 0xf0, 0x00, 0x8b, 0x03, 0xf3, +0x03, 0xf3, 0x00, 0x0c, 0x03, 0xf4, 0x03, 0xf5, +0x00, 0x8b, 0x03, 0xf6, 0x03, 0xf6, 0x00, 0x1b, +0x03, 0xf7, 0x03, 0xf7, 0x00, 0x8b, 0x03, 0xf9, +0x03, 0xf9, 0x00, 0x1b, 0x03, 0xfa, 0x03, 0xfa, +0x00, 0x1d, 0x03, 0xfb, 0x03, 0xfb, 0x00, 0x20, +0x03, 0xfc, 0x03, 0xfc, 0x00, 0x1b, 0x03, 0xfd, +0x03, 0xfd, 0x00, 0x4a, 0x03, 0xfe, 0x03, 0xfe, +0x00, 0x8b, 0x03, 0xff, 0x03, 0xff, 0x00, 0x13, +0x04, 0x00, 0x04, 0x01, 0x00, 0x8b, 0x04, 0x02, +0x04, 0x02, 0x00, 0x1d, 0x04, 0x03, 0x04, 0x04, +0x00, 0x8b, 0x04, 0x05, 0x04, 0x05, 0x00, 0x49, +0x04, 0x06, 0x04, 0x06, 0x00, 0x8b, 0x04, 0x07, +0x04, 0x07, 0x00, 0x4d, 0x04, 0x08, 0x04, 0x09, +0x00, 0x1b, 0x04, 0x0a, 0x04, 0x0a, 0x00, 0x0b, +0x04, 0x0b, 0x04, 0x0b, 0x00, 0x8b, 0x04, 0x0c, +0x04, 0x0c, 0x00, 0x1b, 0x04, 0x0d, 0x04, 0x0d, +0x00, 0x6f, 0x04, 0x11, 0x04, 0x11, 0x00, 0x04, +0x04, 0x12, 0x04, 0x12, 0x00, 0x0c, 0x04, 0x13, +0x04, 0x13, 0x00, 0x8b, 0x04, 0x14, 0x04, 0x14, +0x00, 0x0b, 0x04, 0x15, 0x04, 0x15, 0x00, 0x8b, +0x04, 0x18, 0x04, 0x18, 0x00, 0x8b, 0x04, 0x19, +0x04, 0x19, 0x00, 0x20, 0x04, 0x1a, 0x04, 0x1a, +0x00, 0x8b, 0x04, 0x1b, 0x04, 0x1b, 0x00, 0x07, +0x04, 0x1c, 0x04, 0x1c, 0x00, 0x1b, 0x04, 0x1d, +0x04, 0x1d, 0x00, 0x18, 0x04, 0x1e, 0x04, 0x1e, +0x00, 0x8b, 0x04, 0x1f, 0x04, 0x1f, 0x00, 0x89, +0x04, 0x20, 0x04, 0x20, 0x00, 0x51, 0x04, 0x23, +0x04, 0x23, 0x00, 0x4f, 0x04, 0x24, 0x04, 0x24, +0x00, 0x8b, 0x04, 0x27, 0x04, 0x27, 0x00, 0x1d, +0x04, 0x2a, 0x04, 0x2a, 0x00, 0x8b, 0x04, 0x2b, +0x04, 0x2b, 0x00, 0x1b, 0x04, 0x2c, 0x04, 0x2d, +0x00, 0x18, 0x04, 0x2e, 0x04, 0x2e, 0x00, 0x4a, +0x04, 0x2f, 0x04, 0x2f, 0x00, 0x13, 0x04, 0x31, +0x04, 0x31, 0x00, 0x51, 0x04, 0x35, 0x04, 0x36, +0x00, 0x6d, 0x04, 0x37, 0x04, 0x37, 0x00, 0x1b, +0x04, 0x39, 0x04, 0x39, 0x00, 0x8b, 0x04, 0x3a, +0x04, 0x3b, 0x00, 0x1b, 0x04, 0x3c, 0x04, 0x3d, +0x00, 0x20, 0x04, 0x4e, 0x04, 0x4e, 0x00, 0x43, +0x04, 0x54, 0x04, 0x54, 0x00, 0x46, 0x04, 0x64, +0x04, 0x64, 0x00, 0x42, 0x04, 0x6a, 0x04, 0x6a, +0x00, 0x45, 0x04, 0x6c, 0x04, 0x6c, 0x00, 0x41, +0x04, 0x77, 0x04, 0x78, 0x00, 0x85, 0x04, 0x7b, +0x04, 0x7b, 0x00, 0x85, 0x04, 0x7d, 0x04, 0x7d, +0x00, 0x88, 0x04, 0x7f, 0x04, 0x7f, 0x00, 0x8a, +0x04, 0x80, 0x04, 0x81, 0x00, 0x3f, 0x04, 0x82, +0x04, 0x82, 0x00, 0x3d, 0x04, 0x83, 0x04, 0x83, +0x00, 0x3e, 0x04, 0x84, 0x04, 0x84, 0x00, 0x3d, +0x04, 0x85, 0x04, 0x85, 0x00, 0x3e, 0x04, 0x86, +0x04, 0x87, 0x00, 0x85, 0x04, 0xa3, 0x04, 0xa3, +0x00, 0x11, 0x04, 0xc3, 0x04, 0xc3, 0x00, 0x2d, +0x04, 0xc5, 0x04, 0xc5, 0x00, 0x2f, 0x04, 0xc9, +0x04, 0xc9, 0x00, 0x2f, 0x04, 0xcc, 0x04, 0xcc, +0x00, 0x6a, 0x04, 0xd1, 0x04, 0xd1, 0x00, 0x2f, +0x04, 0xd3, 0x04, 0xd3, 0x00, 0x2f, 0x04, 0xd5, +0x04, 0xd5, 0x00, 0x6b, 0x04, 0xd6, 0x04, 0xd6, +0x00, 0x31, 0x04, 0xd7, 0x04, 0xd7, 0x00, 0x33, +0x04, 0xd8, 0x04, 0xd8, 0x00, 0x36, 0x04, 0xd9, +0x04, 0xd9, 0x00, 0x39, 0x04, 0xda, 0x04, 0xda, +0x00, 0x6c, 0x04, 0xdb, 0x04, 0xdb, 0x00, 0x3c, +0x04, 0xdc, 0x04, 0xdc, 0x00, 0x62, 0x04, 0xdd, +0x04, 0xf2, 0x00, 0x2d, 0x04, 0xf8, 0x04, 0xfc, +0x00, 0x2f, 0x05, 0x13, 0x05, 0x1b, 0x00, 0x2f, +0x05, 0x2c, 0x05, 0x2c, 0x00, 0x6a, 0x05, 0x43, +0x05, 0x5c, 0x00, 0x2f, 0x05, 0x64, 0x05, 0x6b, +0x00, 0x6b, 0x05, 0x6d, 0x05, 0x72, 0x00, 0x31, +0x05, 0x73, 0x05, 0x89, 0x00, 0x33, 0x05, 0x8a, +0x05, 0x8d, 0x00, 0x39, 0x05, 0x8e, 0x05, 0x95, +0x00, 0x3c, 0x05, 0x96, 0x05, 0x9a, 0x00, 0x62, +0x05, 0xa1, 0x05, 0xa1, 0x00, 0x24, 0x05, 0xa4, +0x05, 0xa4, 0x00, 0x74, 0x05, 0xa6, 0x05, 0xa6, +0x00, 0x61, 0x05, 0xa8, 0x05, 0xa8, 0x00, 0x28, +0x05, 0xab, 0x05, 0xab, 0x00, 0x24, 0x05, 0xae, +0x05, 0xae, 0x00, 0x60, 0x05, 0xaf, 0x05, 0xaf, +0x00, 0x28, 0x05, 0xb2, 0x05, 0xb2, 0x00, 0x5f, +0x05, 0xb3, 0x05, 0xb3, 0x00, 0x2a, 0x05, 0xb4, +0x05, 0xb4, 0x00, 0x2c, 0x05, 0xb5, 0x05, 0xb5, +0x00, 0x79, 0x05, 0xb6, 0x05, 0xb6, 0x00, 0x69, +0x05, 0xb8, 0x05, 0xb8, 0x00, 0x78, 0x05, 0xba, +0x05, 0xba, 0x00, 0x2c, 0x05, 0xbb, 0x05, 0xbb, +0x00, 0x24, 0x05, 0xbd, 0x05, 0xbd, 0x00, 0x78, +0x05, 0xbe, 0x05, 0xbe, 0x00, 0x12, 0x05, 0xc2, +0x05, 0xc2, 0x00, 0x02, 0x05, 0xc4, 0x05, 0xc4, +0x00, 0x52, 0x05, 0xcc, 0x05, 0xcc, 0x00, 0x1c, +0x05, 0xcf, 0x05, 0xcf, 0x00, 0x1c, 0x05, 0xd0, +0x05, 0xd0, 0x00, 0x1e, 0x05, 0xd1, 0x05, 0xd1, +0x00, 0x4c, 0x05, 0xd2, 0x05, 0xd2, 0x00, 0x16, +0x05, 0xd3, 0x05, 0xd3, 0x00, 0x67, 0x05, 0xd5, +0x05, 0xd5, 0x00, 0x14, 0x05, 0xd8, 0x05, 0xd8, +0x00, 0x1e, 0x05, 0xe0, 0x05, 0xe0, 0x00, 0x1e, +0x05, 0xe2, 0x05, 0xe2, 0x00, 0x1c, 0x05, 0xe3, +0x05, 0xe3, 0x00, 0x66, 0x05, 0xe7, 0x05, 0xe7, +0x00, 0x68, 0x05, 0xea, 0x05, 0xea, 0x00, 0x1e, +0x05, 0xed, 0x05, 0xed, 0x00, 0x4c, 0x05, 0xef, +0x05, 0xef, 0x00, 0x21, 0x05, 0xf0, 0x05, 0xf0, +0x00, 0x1c, 0x05, 0xf1, 0x05, 0xf1, 0x00, 0x19, +0x05, 0xf4, 0x05, 0xf4, 0x00, 0x52, 0x05, 0xf7, +0x05, 0xf7, 0x00, 0x1e, 0x05, 0xf9, 0x05, 0xf9, +0x00, 0x1c, 0x05, 0xfa, 0x05, 0xfa, 0x00, 0x64, +0x05, 0xfc, 0x05, 0xfc, 0x00, 0x67, 0x05, 0xfd, +0x05, 0xfd, 0x00, 0x14, 0x06, 0x00, 0x06, 0x00, +0x00, 0x52, 0x06, 0x01, 0x06, 0x01, 0x00, 0x12, +0x06, 0x06, 0x06, 0x07, 0x00, 0x1c, 0x06, 0x08, +0x06, 0x09, 0x00, 0x4c, 0x06, 0x0c, 0x06, 0x0c, +0x00, 0x44, 0x06, 0x0f, 0x06, 0x0f, 0x00, 0x40, +0x06, 0x11, 0x06, 0x11, 0x00, 0x47, 0x06, 0xeb, +0x06, 0xeb, 0x00, 0x75, 0x07, 0x0a, 0x07, 0x0a, +0x00, 0x3d, 0x07, 0x0b, 0x07, 0x0c, 0x00, 0x3e, +0x07, 0x0d, 0x07, 0x0d, 0x00, 0x3d, 0x07, 0x96, +0x07, 0x97, 0x00, 0x82, 0x00, 0x01, 0x00, 0x00, +0x00, 0x0a, 0x02, 0x5c, 0x0f, 0xb8, 0x00, 0x04, +0x44, 0x46, 0x4c, 0x54, 0x00, 0x1a, 0x63, 0x79, +0x72, 0x6c, 0x00, 0x50, 0x67, 0x72, 0x65, 0x6b, +0x00, 0xc2, 0x6c, 0x61, 0x74, 0x6e, 0x00, 0xfa, +0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, +0x00, 0x16, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x14, +0x00, 0x1e, 0x00, 0x28, 0x00, 0x32, 0x00, 0x3c, +0x00, 0x4e, 0x00, 0x58, 0x00, 0x62, 0x00, 0x6c, +0x00, 0x76, 0x00, 0x80, 0x00, 0x8a, 0x00, 0x94, +0x00, 0x9e, 0x00, 0xa8, 0x00, 0xb2, 0x00, 0xbc, +0x00, 0xc6, 0x00, 0xd0, 0x00, 0xda, 0x00, 0x0a, +0x00, 0x01, 0x53, 0x52, 0x42, 0x20, 0x00, 0x3e, +0x00, 0x00, 0xff, 0xff, 0x00, 0x17, 0x00, 0x01, +0x00, 0x0b, 0x00, 0x15, 0x00, 0x1f, 0x00, 0x29, +0x00, 0x33, 0x00, 0x3d, 0x00, 0x46, 0x00, 0x4f, +0x00, 0x59, 0x00, 0x63, 0x00, 0x6d, 0x00, 0x77, +0x00, 0x81, 0x00, 0x8b, 0x00, 0x95, 0x00, 0x9f, +0x00, 0xa9, 0x00, 0xb3, 0x00, 0xbd, 0x00, 0xc7, +0x00, 0xd1, 0x00, 0xdb, 0x00, 0x00, 0xff, 0xff, +0x00, 0x17, 0x00, 0x02, 0x00, 0x0c, 0x00, 0x16, +0x00, 0x20, 0x00, 0x2a, 0x00, 0x34, 0x00, 0x3e, +0x00, 0x47, 0x00, 0x50, 0x00, 0x5a, 0x00, 0x64, +0x00, 0x6e, 0x00, 0x78, 0x00, 0x82, 0x00, 0x8c, +0x00, 0x96, 0x00, 0xa0, 0x00, 0xaa, 0x00, 0xb4, +0x00, 0xbe, 0x00, 0xc8, 0x00, 0xd2, 0x00, 0xdc, +0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, +0x00, 0x17, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x17, +0x00, 0x21, 0x00, 0x2b, 0x00, 0x35, 0x00, 0x3f, +0x00, 0x48, 0x00, 0x51, 0x00, 0x5b, 0x00, 0x65, +0x00, 0x6f, 0x00, 0x79, 0x00, 0x83, 0x00, 0x8d, +0x00, 0x97, 0x00, 0xa1, 0x00, 0xab, 0x00, 0xb5, +0x00, 0xbf, 0x00, 0xc9, 0x00, 0xd3, 0x00, 0xdd, +0x00, 0x22, 0x00, 0x05, 0x41, 0x5a, 0x45, 0x20, +0x00, 0x54, 0x43, 0x52, 0x54, 0x20, 0x00, 0x88, +0x4e, 0x53, 0x4d, 0x20, 0x00, 0xbc, 0x53, 0x4b, +0x53, 0x20, 0x00, 0xf0, 0x54, 0x52, 0x4b, 0x20, +0x01, 0x24, 0x00, 0x00, 0xff, 0xff, 0x00, 0x16, +0x00, 0x04, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x22, +0x00, 0x2c, 0x00, 0x36, 0x00, 0x40, 0x00, 0x52, +0x00, 0x5c, 0x00, 0x66, 0x00, 0x70, 0x00, 0x7a, +0x00, 0x84, 0x00, 0x8e, 0x00, 0x98, 0x00, 0xa2, +0x00, 0xac, 0x00, 0xb6, 0x00, 0xc0, 0x00, 0xca, +0x00, 0xd4, 0x00, 0xde, 0x00, 0x00, 0xff, 0xff, +0x00, 0x17, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x19, +0x00, 0x23, 0x00, 0x2d, 0x00, 0x37, 0x00, 0x41, +0x00, 0x49, 0x00, 0x53, 0x00, 0x5d, 0x00, 0x67, +0x00, 0x71, 0x00, 0x7b, 0x00, 0x85, 0x00, 0x8f, +0x00, 0x99, 0x00, 0xa3, 0x00, 0xad, 0x00, 0xb7, +0x00, 0xc1, 0x00, 0xcb, 0x00, 0xd5, 0x00, 0xdf, +0x00, 0x00, 0xff, 0xff, 0x00, 0x17, 0x00, 0x06, +0x00, 0x10, 0x00, 0x1a, 0x00, 0x24, 0x00, 0x2e, +0x00, 0x38, 0x00, 0x42, 0x00, 0x4a, 0x00, 0x54, +0x00, 0x5e, 0x00, 0x68, 0x00, 0x72, 0x00, 0x7c, +0x00, 0x86, 0x00, 0x90, 0x00, 0x9a, 0x00, 0xa4, +0x00, 0xae, 0x00, 0xb8, 0x00, 0xc2, 0x00, 0xcc, +0x00, 0xd6, 0x00, 0xe0, 0x00, 0x00, 0xff, 0xff, +0x00, 0x17, 0x00, 0x07, 0x00, 0x11, 0x00, 0x1b, +0x00, 0x25, 0x00, 0x2f, 0x00, 0x39, 0x00, 0x43, +0x00, 0x4b, 0x00, 0x55, 0x00, 0x5f, 0x00, 0x69, +0x00, 0x73, 0x00, 0x7d, 0x00, 0x87, 0x00, 0x91, +0x00, 0x9b, 0x00, 0xa5, 0x00, 0xaf, 0x00, 0xb9, +0x00, 0xc3, 0x00, 0xcd, 0x00, 0xd7, 0x00, 0xe1, +0x00, 0x00, 0xff, 0xff, 0x00, 0x17, 0x00, 0x08, +0x00, 0x12, 0x00, 0x1c, 0x00, 0x26, 0x00, 0x30, +0x00, 0x3a, 0x00, 0x44, 0x00, 0x4c, 0x00, 0x56, +0x00, 0x60, 0x00, 0x6a, 0x00, 0x74, 0x00, 0x7e, +0x00, 0x88, 0x00, 0x92, 0x00, 0x9c, 0x00, 0xa6, +0x00, 0xb0, 0x00, 0xba, 0x00, 0xc4, 0x00, 0xce, +0x00, 0xd8, 0x00, 0xe2, 0x00, 0x00, 0xff, 0xff, +0x00, 0x17, 0x00, 0x09, 0x00, 0x13, 0x00, 0x1d, +0x00, 0x27, 0x00, 0x31, 0x00, 0x3b, 0x00, 0x45, +0x00, 0x4d, 0x00, 0x57, 0x00, 0x61, 0x00, 0x6b, +0x00, 0x75, 0x00, 0x7f, 0x00, 0x89, 0x00, 0x93, +0x00, 0x9d, 0x00, 0xa7, 0x00, 0xb1, 0x00, 0xbb, +0x00, 0xc5, 0x00, 0xcf, 0x00, 0xd9, 0x00, 0xe3, +0x00, 0xe4, 0x61, 0x61, 0x6c, 0x74, 0x05, 0x5a, +0x61, 0x61, 0x6c, 0x74, 0x05, 0x62, 0x61, 0x61, +0x6c, 0x74, 0x05, 0x6a, 0x61, 0x61, 0x6c, 0x74, +0x05, 0x72, 0x61, 0x61, 0x6c, 0x74, 0x05, 0x7a, +0x61, 0x61, 0x6c, 0x74, 0x05, 0x82, 0x61, 0x61, +0x6c, 0x74, 0x05, 0x8a, 0x61, 0x61, 0x6c, 0x74, +0x05, 0x92, 0x61, 0x61, 0x6c, 0x74, 0x05, 0x9a, +0x61, 0x61, 0x6c, 0x74, 0x05, 0xa2, 0x63, 0x32, +0x73, 0x63, 0x05, 0xaa, 0x63, 0x32, 0x73, 0x63, +0x05, 0xb4, 0x63, 0x32, 0x73, 0x63, 0x05, 0xbe, +0x63, 0x32, 0x73, 0x63, 0x05, 0xc8, 0x63, 0x32, +0x73, 0x63, 0x05, 0xd2, 0x63, 0x32, 0x73, 0x63, +0x05, 0xdc, 0x63, 0x32, 0x73, 0x63, 0x05, 0xe6, +0x63, 0x32, 0x73, 0x63, 0x05, 0xf0, 0x63, 0x32, +0x73, 0x63, 0x05, 0xfa, 0x63, 0x32, 0x73, 0x63, +0x06, 0x04, 0x63, 0x61, 0x73, 0x65, 0x06, 0x0e, +0x63, 0x61, 0x73, 0x65, 0x06, 0x14, 0x63, 0x61, +0x73, 0x65, 0x06, 0x1a, 0x63, 0x61, 0x73, 0x65, +0x06, 0x20, 0x63, 0x61, 0x73, 0x65, 0x06, 0x26, +0x63, 0x61, 0x73, 0x65, 0x06, 0x2c, 0x63, 0x61, +0x73, 0x65, 0x06, 0x32, 0x63, 0x61, 0x73, 0x65, +0x06, 0x38, 0x63, 0x61, 0x73, 0x65, 0x06, 0x3e, +0x63, 0x61, 0x73, 0x65, 0x06, 0x44, 0x63, 0x63, +0x6d, 0x70, 0x06, 0x4a, 0x63, 0x63, 0x6d, 0x70, +0x06, 0x5c, 0x63, 0x63, 0x6d, 0x70, 0x06, 0x6e, +0x63, 0x63, 0x6d, 0x70, 0x06, 0x80, 0x63, 0x63, +0x6d, 0x70, 0x06, 0x92, 0x63, 0x63, 0x6d, 0x70, +0x06, 0xa4, 0x63, 0x63, 0x6d, 0x70, 0x06, 0xb6, +0x63, 0x63, 0x6d, 0x70, 0x06, 0xc8, 0x63, 0x63, +0x6d, 0x70, 0x06, 0xda, 0x63, 0x63, 0x6d, 0x70, +0x06, 0xec, 0x64, 0x6e, 0x6f, 0x6d, 0x06, 0xfe, +0x64, 0x6e, 0x6f, 0x6d, 0x07, 0x04, 0x64, 0x6e, +0x6f, 0x6d, 0x07, 0x0a, 0x64, 0x6e, 0x6f, 0x6d, +0x07, 0x10, 0x64, 0x6e, 0x6f, 0x6d, 0x07, 0x16, +0x64, 0x6e, 0x6f, 0x6d, 0x07, 0x1c, 0x64, 0x6e, +0x6f, 0x6d, 0x07, 0x22, 0x64, 0x6e, 0x6f, 0x6d, +0x07, 0x28, 0x64, 0x6e, 0x6f, 0x6d, 0x07, 0x2e, +0x64, 0x6e, 0x6f, 0x6d, 0x07, 0x34, 0x66, 0x72, +0x61, 0x63, 0x07, 0x3a, 0x66, 0x72, 0x61, 0x63, +0x07, 0x44, 0x66, 0x72, 0x61, 0x63, 0x07, 0x4e, +0x66, 0x72, 0x61, 0x63, 0x07, 0x58, 0x66, 0x72, +0x61, 0x63, 0x07, 0x62, 0x66, 0x72, 0x61, 0x63, +0x07, 0x6c, 0x66, 0x72, 0x61, 0x63, 0x07, 0x76, +0x66, 0x72, 0x61, 0x63, 0x07, 0x80, 0x66, 0x72, +0x61, 0x63, 0x07, 0x8a, 0x66, 0x72, 0x61, 0x63, +0x07, 0x94, 0x6c, 0x69, 0x67, 0x61, 0x07, 0x9e, +0x6c, 0x69, 0x67, 0x61, 0x07, 0xa4, 0x6c, 0x69, +0x67, 0x61, 0x07, 0xaa, 0x6c, 0x69, 0x67, 0x61, +0x07, 0xb0, 0x6c, 0x69, 0x67, 0x61, 0x07, 0xb6, +0x6c, 0x69, 0x67, 0x61, 0x07, 0xbc, 0x6c, 0x69, +0x67, 0x61, 0x07, 0xc2, 0x6c, 0x69, 0x67, 0x61, +0x07, 0xc8, 0x6c, 0x69, 0x67, 0x61, 0x07, 0xce, +0x6c, 0x69, 0x67, 0x61, 0x07, 0xd4, 0x6c, 0x6f, +0x63, 0x6c, 0x07, 0xda, 0x6c, 0x6f, 0x63, 0x6c, +0x07, 0xe0, 0x6c, 0x6f, 0x63, 0x6c, 0x07, 0xe8, +0x6c, 0x6f, 0x63, 0x6c, 0x07, 0xee, 0x6c, 0x6f, +0x63, 0x6c, 0x07, 0xf4, 0x6c, 0x6f, 0x63, 0x6c, +0x07, 0xfa, 0x6c, 0x6f, 0x63, 0x6c, 0x08, 0x00, +0x6c, 0x6f, 0x63, 0x6c, 0x08, 0x06, 0x6e, 0x75, +0x6d, 0x72, 0x08, 0x0c, 0x6e, 0x75, 0x6d, 0x72, +0x08, 0x12, 0x6e, 0x75, 0x6d, 0x72, 0x08, 0x18, +0x6e, 0x75, 0x6d, 0x72, 0x08, 0x1e, 0x6e, 0x75, +0x6d, 0x72, 0x08, 0x24, 0x6e, 0x75, 0x6d, 0x72, +0x08, 0x2a, 0x6e, 0x75, 0x6d, 0x72, 0x08, 0x30, +0x6e, 0x75, 0x6d, 0x72, 0x08, 0x36, 0x6e, 0x75, +0x6d, 0x72, 0x08, 0x3c, 0x6e, 0x75, 0x6d, 0x72, +0x08, 0x42, 0x6f, 0x6e, 0x75, 0x6d, 0x08, 0x48, +0x6f, 0x6e, 0x75, 0x6d, 0x08, 0x4e, 0x6f, 0x6e, +0x75, 0x6d, 0x08, 0x54, 0x6f, 0x6e, 0x75, 0x6d, +0x08, 0x5a, 0x6f, 0x6e, 0x75, 0x6d, 0x08, 0x60, +0x6f, 0x6e, 0x75, 0x6d, 0x08, 0x66, 0x6f, 0x6e, +0x75, 0x6d, 0x08, 0x6c, 0x6f, 0x6e, 0x75, 0x6d, +0x08, 0x72, 0x6f, 0x6e, 0x75, 0x6d, 0x08, 0x78, +0x6f, 0x6e, 0x75, 0x6d, 0x08, 0x7e, 0x6f, 0x72, +0x64, 0x6e, 0x08, 0x84, 0x6f, 0x72, 0x64, 0x6e, +0x08, 0x8a, 0x6f, 0x72, 0x64, 0x6e, 0x08, 0x90, +0x6f, 0x72, 0x64, 0x6e, 0x08, 0x96, 0x6f, 0x72, +0x64, 0x6e, 0x08, 0x9c, 0x6f, 0x72, 0x64, 0x6e, +0x08, 0xa2, 0x6f, 0x72, 0x64, 0x6e, 0x08, 0xa8, +0x6f, 0x72, 0x64, 0x6e, 0x08, 0xae, 0x6f, 0x72, +0x64, 0x6e, 0x08, 0xb4, 0x6f, 0x72, 0x64, 0x6e, +0x08, 0xba, 0x70, 0x6e, 0x75, 0x6d, 0x08, 0xc0, +0x70, 0x6e, 0x75, 0x6d, 0x08, 0xc6, 0x70, 0x6e, +0x75, 0x6d, 0x08, 0xcc, 0x70, 0x6e, 0x75, 0x6d, +0x08, 0xd2, 0x70, 0x6e, 0x75, 0x6d, 0x08, 0xd8, +0x70, 0x6e, 0x75, 0x6d, 0x08, 0xde, 0x70, 0x6e, +0x75, 0x6d, 0x08, 0xe4, 0x70, 0x6e, 0x75, 0x6d, +0x08, 0xea, 0x70, 0x6e, 0x75, 0x6d, 0x08, 0xf0, +0x70, 0x6e, 0x75, 0x6d, 0x08, 0xf6, 0x73, 0x61, +0x6c, 0x74, 0x08, 0xfc, 0x73, 0x61, 0x6c, 0x74, +0x09, 0x16, 0x73, 0x61, 0x6c, 0x74, 0x09, 0x30, +0x73, 0x61, 0x6c, 0x74, 0x09, 0x4a, 0x73, 0x61, +0x6c, 0x74, 0x09, 0x64, 0x73, 0x61, 0x6c, 0x74, +0x09, 0x7e, 0x73, 0x61, 0x6c, 0x74, 0x09, 0x98, +0x73, 0x61, 0x6c, 0x74, 0x09, 0xb2, 0x73, 0x61, +0x6c, 0x74, 0x09, 0xcc, 0x73, 0x61, 0x6c, 0x74, +0x09, 0xe6, 0x73, 0x69, 0x6e, 0x66, 0x0a, 0x00, +0x73, 0x69, 0x6e, 0x66, 0x0a, 0x06, 0x73, 0x69, +0x6e, 0x66, 0x0a, 0x0c, 0x73, 0x69, 0x6e, 0x66, +0x0a, 0x12, 0x73, 0x69, 0x6e, 0x66, 0x0a, 0x18, +0x73, 0x69, 0x6e, 0x66, 0x0a, 0x1e, 0x73, 0x69, +0x6e, 0x66, 0x0a, 0x24, 0x73, 0x69, 0x6e, 0x66, +0x0a, 0x2a, 0x73, 0x69, 0x6e, 0x66, 0x0a, 0x30, +0x73, 0x69, 0x6e, 0x66, 0x0a, 0x36, 0x73, 0x6d, +0x63, 0x70, 0x0a, 0x3c, 0x73, 0x6d, 0x63, 0x70, +0x0a, 0x4a, 0x73, 0x6d, 0x63, 0x70, 0x0a, 0x58, +0x73, 0x6d, 0x63, 0x70, 0x0a, 0x66, 0x73, 0x6d, +0x63, 0x70, 0x0a, 0x74, 0x73, 0x6d, 0x63, 0x70, +0x0a, 0x82, 0x73, 0x6d, 0x63, 0x70, 0x0a, 0x90, +0x73, 0x6d, 0x63, 0x70, 0x0a, 0x9e, 0x73, 0x6d, +0x63, 0x70, 0x0a, 0xac, 0x73, 0x6d, 0x63, 0x70, +0x0a, 0xba, 0x73, 0x73, 0x30, 0x31, 0x0a, 0xc8, +0x73, 0x73, 0x30, 0x31, 0x0a, 0xd2, 0x73, 0x73, +0x30, 0x31, 0x0a, 0xdc, 0x73, 0x73, 0x30, 0x31, +0x0a, 0xe6, 0x73, 0x73, 0x30, 0x31, 0x0a, 0xf0, +0x73, 0x73, 0x30, 0x31, 0x0a, 0xfa, 0x73, 0x73, +0x30, 0x31, 0x0b, 0x04, 0x73, 0x73, 0x30, 0x31, +0x0b, 0x0e, 0x73, 0x73, 0x30, 0x31, 0x0b, 0x18, +0x73, 0x73, 0x30, 0x31, 0x0b, 0x22, 0x73, 0x73, +0x30, 0x32, 0x0b, 0x2c, 0x73, 0x73, 0x30, 0x32, +0x0b, 0x34, 0x73, 0x73, 0x30, 0x32, 0x0b, 0x3c, +0x73, 0x73, 0x30, 0x32, 0x0b, 0x44, 0x73, 0x73, +0x30, 0x32, 0x0b, 0x4c, 0x73, 0x73, 0x30, 0x32, +0x0b, 0x54, 0x73, 0x73, 0x30, 0x32, 0x0b, 0x5c, +0x73, 0x73, 0x30, 0x32, 0x0b, 0x64, 0x73, 0x73, +0x30, 0x32, 0x0b, 0x6c, 0x73, 0x73, 0x30, 0x32, +0x0b, 0x74, 0x73, 0x73, 0x30, 0x33, 0x0b, 0x7c, +0x73, 0x73, 0x30, 0x33, 0x0b, 0x84, 0x73, 0x73, +0x30, 0x33, 0x0b, 0x8c, 0x73, 0x73, 0x30, 0x33, +0x0b, 0x94, 0x73, 0x73, 0x30, 0x33, 0x0b, 0x9c, +0x73, 0x73, 0x30, 0x33, 0x0b, 0xa4, 0x73, 0x73, +0x30, 0x33, 0x0b, 0xac, 0x73, 0x73, 0x30, 0x33, +0x0b, 0xb4, 0x73, 0x73, 0x30, 0x33, 0x0b, 0xbc, +0x73, 0x73, 0x30, 0x33, 0x0b, 0xc4, 0x73, 0x73, +0x30, 0x34, 0x0b, 0xcc, 0x73, 0x73, 0x30, 0x34, +0x0b, 0xd6, 0x73, 0x73, 0x30, 0x34, 0x0b, 0xe0, +0x73, 0x73, 0x30, 0x34, 0x0b, 0xea, 0x73, 0x73, +0x30, 0x34, 0x0b, 0xf4, 0x73, 0x73, 0x30, 0x34, +0x0b, 0xfe, 0x73, 0x73, 0x30, 0x34, 0x0c, 0x08, +0x73, 0x73, 0x30, 0x34, 0x0c, 0x12, 0x73, 0x73, +0x30, 0x34, 0x0c, 0x1c, 0x73, 0x73, 0x30, 0x34, +0x0c, 0x26, 0x73, 0x73, 0x30, 0x35, 0x0c, 0x30, +0x73, 0x73, 0x30, 0x35, 0x0c, 0x36, 0x73, 0x73, +0x30, 0x35, 0x0c, 0x3c, 0x73, 0x73, 0x30, 0x35, +0x0c, 0x42, 0x73, 0x73, 0x30, 0x35, 0x0c, 0x48, +0x73, 0x73, 0x30, 0x35, 0x0c, 0x4e, 0x73, 0x73, +0x30, 0x35, 0x0c, 0x54, 0x73, 0x73, 0x30, 0x35, +0x0c, 0x5a, 0x73, 0x73, 0x30, 0x35, 0x0c, 0x60, +0x73, 0x73, 0x30, 0x35, 0x0c, 0x66, 0x73, 0x75, +0x62, 0x73, 0x0c, 0x6c, 0x73, 0x75, 0x62, 0x73, +0x0c, 0x72, 0x73, 0x75, 0x62, 0x73, 0x0c, 0x78, +0x73, 0x75, 0x62, 0x73, 0x0c, 0x7e, 0x73, 0x75, +0x62, 0x73, 0x0c, 0x84, 0x73, 0x75, 0x62, 0x73, +0x0c, 0x8a, 0x73, 0x75, 0x62, 0x73, 0x0c, 0x90, +0x73, 0x75, 0x62, 0x73, 0x0c, 0x96, 0x73, 0x75, +0x62, 0x73, 0x0c, 0x9c, 0x73, 0x75, 0x62, 0x73, +0x0c, 0xa2, 0x73, 0x75, 0x70, 0x73, 0x0c, 0xa8, +0x73, 0x75, 0x70, 0x73, 0x0c, 0xb4, 0x73, 0x75, +0x70, 0x73, 0x0c, 0xc0, 0x73, 0x75, 0x70, 0x73, +0x0c, 0xcc, 0x73, 0x75, 0x70, 0x73, 0x0c, 0xd8, +0x73, 0x75, 0x70, 0x73, 0x0c, 0xe4, 0x73, 0x75, +0x70, 0x73, 0x0c, 0xf0, 0x73, 0x75, 0x70, 0x73, +0x0c, 0xfc, 0x73, 0x75, 0x70, 0x73, 0x0d, 0x08, +0x73, 0x75, 0x70, 0x73, 0x0d, 0x14, 0x7a, 0x65, +0x72, 0x6f, 0x0d, 0x20, 0x7a, 0x65, 0x72, 0x6f, +0x0d, 0x26, 0x7a, 0x65, 0x72, 0x6f, 0x0d, 0x2c, +0x7a, 0x65, 0x72, 0x6f, 0x0d, 0x32, 0x7a, 0x65, +0x72, 0x6f, 0x0d, 0x38, 0x7a, 0x65, 0x72, 0x6f, +0x0d, 0x3e, 0x7a, 0x65, 0x72, 0x6f, 0x0d, 0x44, +0x7a, 0x65, 0x72, 0x6f, 0x0d, 0x4a, 0x7a, 0x65, +0x72, 0x6f, 0x0d, 0x50, 0x7a, 0x65, 0x72, 0x6f, +0x0d, 0x56, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x11, +0x00, 0x12, 0x00, 0x13, 0x00, 0x00, 0x00, 0x03, +0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x00, +0x00, 0x03, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, +0x00, 0x00, 0x00, 0x03, 0x00, 0x11, 0x00, 0x12, +0x00, 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x11, +0x00, 0x12, 0x00, 0x13, 0x00, 0x00, 0x00, 0x03, +0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x00, +0x00, 0x03, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, +0x00, 0x00, 0x00, 0x03, 0x00, 0x11, 0x00, 0x12, +0x00, 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x11, +0x00, 0x12, 0x00, 0x13, 0x00, 0x00, 0x00, 0x03, +0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x00, +0x00, 0x01, 0x00, 0x23, 0x00, 0x00, 0x00, 0x01, +0x00, 0x23, 0x00, 0x00, 0x00, 0x01, 0x00, 0x23, +0x00, 0x00, 0x00, 0x01, 0x00, 0x23, 0x00, 0x00, +0x00, 0x01, 0x00, 0x23, 0x00, 0x00, 0x00, 0x01, +0x00, 0x23, 0x00, 0x00, 0x00, 0x01, 0x00, 0x23, +0x00, 0x00, 0x00, 0x01, 0x00, 0x23, 0x00, 0x00, +0x00, 0x01, 0x00, 0x23, 0x00, 0x00, 0x00, 0x01, +0x00, 0x23, 0x00, 0x00, 0x00, 0x07, 0x00, 0x08, +0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, +0x00, 0x0d, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, +0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, +0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, +0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, +0x00, 0x00, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, +0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, +0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x08, +0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, +0x00, 0x0d, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, +0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, +0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, +0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, +0x00, 0x00, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, +0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, +0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x08, +0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, +0x00, 0x0d, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, +0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, +0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x01, 0x00, 0x17, 0x00, 0x00, 0x00, 0x01, +0x00, 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x17, +0x00, 0x00, 0x00, 0x01, 0x00, 0x17, 0x00, 0x00, +0x00, 0x01, 0x00, 0x17, 0x00, 0x00, 0x00, 0x01, +0x00, 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x17, +0x00, 0x00, 0x00, 0x01, 0x00, 0x17, 0x00, 0x00, +0x00, 0x01, 0x00, 0x17, 0x00, 0x00, 0x00, 0x01, +0x00, 0x17, 0x00, 0x00, 0x00, 0x03, 0x00, 0x16, +0x00, 0x18, 0x00, 0x19, 0x00, 0x00, 0x00, 0x03, +0x00, 0x16, 0x00, 0x18, 0x00, 0x19, 0x00, 0x00, +0x00, 0x03, 0x00, 0x16, 0x00, 0x18, 0x00, 0x19, +0x00, 0x00, 0x00, 0x03, 0x00, 0x16, 0x00, 0x18, +0x00, 0x19, 0x00, 0x00, 0x00, 0x03, 0x00, 0x16, +0x00, 0x18, 0x00, 0x19, 0x00, 0x00, 0x00, 0x03, +0x00, 0x16, 0x00, 0x18, 0x00, 0x19, 0x00, 0x00, +0x00, 0x03, 0x00, 0x16, 0x00, 0x18, 0x00, 0x19, +0x00, 0x00, 0x00, 0x03, 0x00, 0x16, 0x00, 0x18, +0x00, 0x19, 0x00, 0x00, 0x00, 0x03, 0x00, 0x16, +0x00, 0x18, 0x00, 0x19, 0x00, 0x00, 0x00, 0x03, +0x00, 0x16, 0x00, 0x18, 0x00, 0x19, 0x00, 0x00, +0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x01, +0x00, 0x2f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2f, +0x00, 0x00, 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, +0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x01, +0x00, 0x2f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2f, +0x00, 0x00, 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, +0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x01, +0x00, 0x2f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, +0x00, 0x00, 0x00, 0x02, 0x00, 0x05, 0x00, 0x06, +0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, +0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, +0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, +0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, +0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, +0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x16, +0x00, 0x00, 0x00, 0x01, 0x00, 0x16, 0x00, 0x00, +0x00, 0x01, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, +0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x16, +0x00, 0x00, 0x00, 0x01, 0x00, 0x16, 0x00, 0x00, +0x00, 0x01, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, +0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x16, +0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, +0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, +0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, +0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, +0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, +0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, +0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, +0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, +0x00, 0x1a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1a, +0x00, 0x00, 0x00, 0x01, 0x00, 0x1a, 0x00, 0x00, +0x00, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x01, +0x00, 0x1a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1a, +0x00, 0x00, 0x00, 0x01, 0x00, 0x1a, 0x00, 0x00, +0x00, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x01, +0x00, 0x1a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1a, +0x00, 0x00, 0x00, 0x01, 0x00, 0x1f, 0x00, 0x00, +0x00, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x01, +0x00, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1f, +0x00, 0x00, 0x00, 0x01, 0x00, 0x1f, 0x00, 0x00, +0x00, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x01, +0x00, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1f, +0x00, 0x00, 0x00, 0x01, 0x00, 0x1f, 0x00, 0x00, +0x00, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x0b, +0x00, 0x03, 0x00, 0x24, 0x00, 0x25, 0x00, 0x27, +0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, +0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x00, +0x00, 0x0b, 0x00, 0x03, 0x00, 0x24, 0x00, 0x25, +0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, +0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, +0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x24, +0x00, 0x25, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, +0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, +0x00, 0x2e, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, +0x00, 0x24, 0x00, 0x25, 0x00, 0x27, 0x00, 0x28, +0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, +0x00, 0x2d, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x0b, +0x00, 0x03, 0x00, 0x24, 0x00, 0x25, 0x00, 0x27, +0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, +0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x00, +0x00, 0x0b, 0x00, 0x03, 0x00, 0x24, 0x00, 0x25, +0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, +0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, +0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x24, +0x00, 0x25, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, +0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, +0x00, 0x2e, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, +0x00, 0x24, 0x00, 0x25, 0x00, 0x27, 0x00, 0x28, +0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, +0x00, 0x2d, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x0b, +0x00, 0x03, 0x00, 0x24, 0x00, 0x25, 0x00, 0x27, +0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, +0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x00, +0x00, 0x0b, 0x00, 0x03, 0x00, 0x24, 0x00, 0x25, +0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, +0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, +0x00, 0x00, 0x00, 0x01, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, +0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1e, +0x00, 0x00, 0x00, 0x01, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, +0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1e, +0x00, 0x00, 0x00, 0x01, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x05, +0x00, 0x0f, 0x00, 0x10, 0x00, 0x12, 0x00, 0x14, +0x00, 0x15, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0f, +0x00, 0x10, 0x00, 0x12, 0x00, 0x14, 0x00, 0x15, +0x00, 0x00, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x10, +0x00, 0x12, 0x00, 0x14, 0x00, 0x15, 0x00, 0x00, +0x00, 0x05, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x12, +0x00, 0x14, 0x00, 0x15, 0x00, 0x00, 0x00, 0x05, +0x00, 0x0f, 0x00, 0x10, 0x00, 0x12, 0x00, 0x14, +0x00, 0x15, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0f, +0x00, 0x10, 0x00, 0x12, 0x00, 0x14, 0x00, 0x15, +0x00, 0x00, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x10, +0x00, 0x12, 0x00, 0x14, 0x00, 0x15, 0x00, 0x00, +0x00, 0x05, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x12, +0x00, 0x14, 0x00, 0x15, 0x00, 0x00, 0x00, 0x05, +0x00, 0x0f, 0x00, 0x10, 0x00, 0x12, 0x00, 0x14, +0x00, 0x15, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0f, +0x00, 0x10, 0x00, 0x12, 0x00, 0x14, 0x00, 0x15, +0x1b, 0x86, 0x00, 0x03, 0x00, 0x24, 0x00, 0x25, +0x00, 0x26, 0x1b, 0x7c, 0x00, 0x03, 0x00, 0x24, +0x00, 0x25, 0x00, 0x26, 0x1b, 0x72, 0x00, 0x03, +0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x1b, 0x68, +0x00, 0x03, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, +0x1b, 0x5e, 0x00, 0x03, 0x00, 0x24, 0x00, 0x25, +0x00, 0x26, 0x1b, 0x54, 0x00, 0x03, 0x00, 0x24, +0x00, 0x25, 0x00, 0x26, 0x1b, 0x4a, 0x00, 0x03, +0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x1b, 0x40, +0x00, 0x03, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, +0x1b, 0x36, 0x00, 0x03, 0x00, 0x24, 0x00, 0x25, +0x00, 0x26, 0x1b, 0x2c, 0x00, 0x03, 0x00, 0x24, +0x00, 0x25, 0x00, 0x26, 0x1b, 0x4e, 0x00, 0x02, +0x00, 0x27, 0x00, 0x28, 0x1b, 0x46, 0x00, 0x02, +0x00, 0x27, 0x00, 0x28, 0x1b, 0x3e, 0x00, 0x02, +0x00, 0x27, 0x00, 0x28, 0x1b, 0x36, 0x00, 0x02, +0x00, 0x27, 0x00, 0x28, 0x1b, 0x2e, 0x00, 0x02, +0x00, 0x27, 0x00, 0x28, 0x1b, 0x26, 0x00, 0x02, +0x00, 0x27, 0x00, 0x28, 0x1b, 0x1e, 0x00, 0x02, +0x00, 0x27, 0x00, 0x28, 0x1b, 0x16, 0x00, 0x02, +0x00, 0x27, 0x00, 0x28, 0x1b, 0x0e, 0x00, 0x02, +0x00, 0x27, 0x00, 0x28, 0x1b, 0x06, 0x00, 0x02, +0x00, 0x27, 0x00, 0x28, 0x1b, 0x40, 0x00, 0x02, +0x00, 0x29, 0x00, 0x2a, 0x1b, 0x38, 0x00, 0x02, +0x00, 0x29, 0x00, 0x2a, 0x1b, 0x30, 0x00, 0x02, +0x00, 0x29, 0x00, 0x2a, 0x1b, 0x28, 0x00, 0x02, +0x00, 0x29, 0x00, 0x2a, 0x1b, 0x20, 0x00, 0x02, +0x00, 0x29, 0x00, 0x2a, 0x1b, 0x18, 0x00, 0x02, +0x00, 0x29, 0x00, 0x2a, 0x1b, 0x10, 0x00, 0x02, +0x00, 0x29, 0x00, 0x2a, 0x1b, 0x08, 0x00, 0x02, +0x00, 0x29, 0x00, 0x2a, 0x1b, 0x00, 0x00, 0x02, +0x00, 0x29, 0x00, 0x2a, 0x1a, 0xf8, 0x00, 0x02, +0x00, 0x29, 0x00, 0x2a, 0x1b, 0x14, 0x00, 0x03, +0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x1b, 0x0a, +0x00, 0x03, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, +0x1b, 0x00, 0x00, 0x03, 0x00, 0x2b, 0x00, 0x2c, +0x00, 0x2d, 0x1a, 0xf6, 0x00, 0x03, 0x00, 0x2b, +0x00, 0x2c, 0x00, 0x2d, 0x1a, 0xec, 0x00, 0x03, +0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x1a, 0xe2, +0x00, 0x03, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, +0x1a, 0xd8, 0x00, 0x03, 0x00, 0x2b, 0x00, 0x2c, +0x00, 0x2d, 0x1a, 0xce, 0x00, 0x03, 0x00, 0x2b, +0x00, 0x2c, 0x00, 0x2d, 0x1a, 0xc4, 0x00, 0x03, +0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x1a, 0xba, +0x00, 0x03, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, +0x19, 0xa4, 0x00, 0x01, 0x00, 0x21, 0x19, 0x9e, +0x00, 0x01, 0x00, 0x21, 0x19, 0x98, 0x00, 0x01, +0x00, 0x21, 0x19, 0x92, 0x00, 0x01, 0x00, 0x21, +0x19, 0x8c, 0x00, 0x01, 0x00, 0x21, 0x19, 0x86, +0x00, 0x01, 0x00, 0x21, 0x19, 0x80, 0x00, 0x01, +0x00, 0x21, 0x19, 0x7a, 0x00, 0x01, 0x00, 0x21, +0x19, 0x74, 0x00, 0x01, 0x00, 0x21, 0x19, 0x6e, +0x00, 0x01, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, +0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1e, +0x00, 0x00, 0x00, 0x01, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, +0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1e, +0x00, 0x00, 0x00, 0x01, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, +0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1e, +0x00, 0x00, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x1b, +0x00, 0x1c, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x04, +0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, +0x00, 0x00, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x1b, +0x00, 0x1c, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x04, +0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, +0x00, 0x00, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x1b, +0x00, 0x1c, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x04, +0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, +0x00, 0x00, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x1b, +0x00, 0x1c, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x04, +0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, +0x00, 0x00, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x1b, +0x00, 0x1c, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x04, +0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, +0x00, 0x00, 0x00, 0x01, 0x00, 0x22, 0x00, 0x00, +0x00, 0x01, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, +0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x22, +0x00, 0x00, 0x00, 0x01, 0x00, 0x22, 0x00, 0x00, +0x00, 0x01, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, +0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x22, +0x00, 0x00, 0x00, 0x01, 0x00, 0x22, 0x00, 0x00, +0x00, 0x01, 0x00, 0x22, 0x00, 0x32, 0x00, 0x66, +0x00, 0x6e, 0x00, 0x76, 0x00, 0x7e, 0x00, 0x86, +0x00, 0x8e, 0x00, 0x96, 0x00, 0x9e, 0x00, 0xa6, +0x00, 0xb2, 0x00, 0xbc, 0x00, 0xc4, 0x00, 0xcc, +0x00, 0xd4, 0x00, 0xde, 0x00, 0xf0, 0x00, 0xf8, +0x01, 0x00, 0x01, 0x08, 0x01, 0x10, 0x01, 0x18, +0x01, 0x20, 0x01, 0x28, 0x01, 0x30, 0x01, 0x38, +0x01, 0x40, 0x01, 0x4c, 0x01, 0x54, 0x01, 0x5c, +0x01, 0x64, 0x01, 0x6c, 0x01, 0x74, 0x01, 0x7c, +0x01, 0x84, 0x01, 0x8c, 0x01, 0x94, 0x01, 0x9c, +0x01, 0xa4, 0x01, 0xac, 0x01, 0xb4, 0x01, 0xbc, +0x01, 0xc4, 0x01, 0xcc, 0x01, 0xd4, 0x01, 0xdc, +0x01, 0xe4, 0x01, 0xec, 0x01, 0xf4, 0x01, 0xfc, +0x02, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x19, 0xd6, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, +0x1f, 0x2c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x01, 0x96, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x01, 0x94, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x01, 0x92, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x01, 0x98, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x01, 0x96, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, +0x01, 0x94, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, +0x01, 0xe2, 0x01, 0xf4, 0x02, 0x06, 0x00, 0x06, +0x00, 0x00, 0x00, 0x02, 0x02, 0x0c, 0x02, 0x20, +0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x02, 0x28, +0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x03, 0x2a, +0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x03, 0xf0, +0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x70, +0x0e, 0x82, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, +0x0e, 0x8a, 0x0e, 0x9c, 0x0e, 0xae, 0x0e, 0xc0, +0x0e, 0xd2, 0x0e, 0xe4, 0x00, 0x01, 0x00, 0x00, +0x00, 0x01, 0x0e, 0xe4, 0x00, 0x01, 0x00, 0x00, +0x00, 0x01, 0x0f, 0x2a, 0x00, 0x01, 0x00, 0x00, +0x00, 0x01, 0x10, 0x1a, 0x00, 0x01, 0x00, 0x00, +0x00, 0x01, 0x13, 0x68, 0x00, 0x01, 0x00, 0x00, +0x00, 0x01, 0x13, 0x66, 0x00, 0x01, 0x00, 0x00, +0x00, 0x01, 0x13, 0x8c, 0x00, 0x01, 0x00, 0x00, +0x00, 0x01, 0x15, 0x44, 0x00, 0x01, 0x00, 0x00, +0x00, 0x01, 0x15, 0xda, 0x00, 0x01, 0x00, 0x00, +0x00, 0x01, 0x15, 0xf4, 0x00, 0x01, 0x00, 0x00, +0x00, 0x01, 0x16, 0x0e, 0x00, 0x06, 0x00, 0x00, +0x00, 0x03, 0x16, 0x0c, 0x16, 0x1e, 0x16, 0x30, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x16, 0x38, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x16, 0x70, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x16, 0x6e, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x16, 0x88, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x16, 0x8e, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x16, 0xa8, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x16, 0xce, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x16, 0xf8, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x16, 0xf6, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x16, 0xf4, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x17, 0x5a, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x17, 0x6e, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x17, 0x6c, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x17, 0x6e, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x17, 0x9e, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x17, 0xa0, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x17, 0xb2, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x17, 0xb4, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x17, 0xcc, +0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x17, 0xd0, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x18, 0x26, +0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x18, 0x24, +0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x22, 0xa2, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x22, 0xac, +0x00, 0x01, 0x23, 0x0a, 0x04, 0x9c, 0x00, 0x01, +0x23, 0x0a, 0x01, 0x1e, 0x00, 0x02, 0x23, 0x0a, +0x00, 0x04, 0x07, 0x23, 0x07, 0x26, 0x07, 0x45, +0x07, 0x47, 0x00, 0x01, 0x23, 0x08, 0x00, 0x01, +0x00, 0x01, 0x23, 0x0a, 0x00, 0x59, 0x00, 0x01, +0x23, 0x0a, 0x00, 0x0a, 0x00, 0x1a, 0x00, 0x20, +0x00, 0x26, 0x00, 0x2c, 0x00, 0x32, 0x00, 0x38, +0x00, 0x3e, 0x00, 0x44, 0x00, 0x4a, 0x00, 0x50, +0x00, 0x02, 0x00, 0x08, 0x07, 0x27, 0x00, 0x02, +0x00, 0x08, 0x07, 0x2b, 0x00, 0x02, 0x00, 0x12, +0x07, 0x27, 0x00, 0x02, 0x00, 0x12, 0x07, 0x2b, +0x00, 0x02, 0x00, 0x22, 0x07, 0x27, 0x00, 0x02, +0x00, 0x22, 0x07, 0x2b, 0x00, 0x02, 0x00, 0x2c, +0x07, 0x27, 0x00, 0x02, 0x00, 0x2c, 0x07, 0x2b, +0x00, 0x02, 0x00, 0x0c, 0x07, 0x35, 0x00, 0x02, +0x01, 0x49, 0x07, 0x35, 0x00, 0x03, 0x00, 0x00, +0x00, 0x01, 0x22, 0xcc, 0x00, 0x01, 0x22, 0xd8, +0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x03, +0x00, 0x00, 0x00, 0x01, 0x22, 0xcc, 0x00, 0x01, +0x22, 0xd8, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, +0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x22, 0xcc, +0x00, 0x01, 0x22, 0xc6, 0x00, 0x01, 0x00, 0x00, +0x00, 0x07, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, +0x22, 0x58, 0x22, 0xc2, 0x00, 0x01, 0x22, 0xb4, +0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x03, +0x00, 0x00, 0x00, 0x01, 0x22, 0xb4, 0x00, 0x01, +0x22, 0xa0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, +0x00, 0x01, 0x22, 0xa8, 0x00, 0x05, 0x00, 0x10, +0x00, 0x3a, 0x00, 0x64, 0x00, 0xa6, 0x00, 0xd8, +0x00, 0x05, 0x00, 0x0c, 0x00, 0x12, 0x00, 0x18, +0x00, 0x1e, 0x00, 0x24, 0x07, 0x78, 0x00, 0x02, +0x07, 0x21, 0x07, 0x76, 0x00, 0x02, 0x07, 0x24, +0x07, 0x7c, 0x00, 0x02, 0x07, 0x29, 0x07, 0x86, +0x00, 0x02, 0x07, 0x2f, 0x07, 0x7a, 0x00, 0x02, +0x07, 0x37, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x12, +0x00, 0x18, 0x00, 0x1e, 0x00, 0x24, 0x07, 0x80, +0x00, 0x02, 0x07, 0x21, 0x07, 0x7e, 0x00, 0x02, +0x07, 0x24, 0x07, 0x84, 0x00, 0x02, 0x07, 0x29, +0x07, 0x82, 0x00, 0x02, 0x07, 0x37, 0x07, 0x84, +0x00, 0x02, 0x07, 0x67, 0x00, 0x08, 0x00, 0x12, +0x00, 0x18, 0x00, 0x1e, 0x00, 0x24, 0x00, 0x2a, +0x00, 0x30, 0x00, 0x36, 0x00, 0x3c, 0x07, 0x6e, +0x00, 0x02, 0x07, 0x21, 0x07, 0x70, 0x00, 0x02, +0x07, 0x23, 0x07, 0x6b, 0x00, 0x02, 0x07, 0x24, +0x07, 0x6d, 0x00, 0x02, 0x07, 0x26, 0x07, 0x71, +0x00, 0x02, 0x07, 0x29, 0x07, 0x72, 0x00, 0x02, +0x07, 0x2b, 0x07, 0x74, 0x00, 0x02, 0x07, 0x3d, +0x07, 0x71, 0x00, 0x02, 0x07, 0x67, 0x00, 0x06, +0x00, 0x0e, 0x00, 0x14, 0x00, 0x1a, 0x00, 0x20, +0x00, 0x26, 0x00, 0x2c, 0x07, 0x8b, 0x00, 0x02, +0x07, 0x21, 0x07, 0x8b, 0x00, 0x02, 0x07, 0x23, +0x07, 0x8a, 0x00, 0x02, 0x07, 0x24, 0x07, 0x8a, +0x00, 0x02, 0x07, 0x26, 0x07, 0x8c, 0x00, 0x02, +0x07, 0x29, 0x07, 0x8c, 0x00, 0x02, 0x07, 0x67, +0x00, 0x06, 0x00, 0x0e, 0x00, 0x14, 0x00, 0x1a, +0x00, 0x20, 0x00, 0x26, 0x00, 0x2c, 0x07, 0x8e, +0x00, 0x02, 0x07, 0x21, 0x07, 0x8e, 0x00, 0x02, +0x07, 0x23, 0x07, 0x8d, 0x00, 0x02, 0x07, 0x24, +0x07, 0x8d, 0x00, 0x02, 0x07, 0x26, 0x07, 0x8f, +0x00, 0x02, 0x07, 0x29, 0x07, 0x8f, 0x00, 0x02, +0x07, 0x67, 0x00, 0x01, 0x21, 0xac, 0x00, 0x10, +0x00, 0x26, 0x00, 0x30, 0x00, 0x3a, 0x00, 0x44, +0x00, 0x4e, 0x00, 0x58, 0x00, 0x62, 0x00, 0x6c, +0x00, 0x76, 0x00, 0x80, 0x00, 0x92, 0x00, 0x9c, +0x00, 0xa6, 0x00, 0xb0, 0x00, 0xba, 0x00, 0xc4, +0x00, 0x01, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x02, +0x07, 0x58, 0x00, 0x01, 0x00, 0x04, 0x00, 0x6c, +0x00, 0x02, 0x07, 0x58, 0x00, 0x01, 0x00, 0x04, +0x00, 0x75, 0x00, 0x02, 0x07, 0x29, 0x00, 0x01, +0x00, 0x04, 0x00, 0x85, 0x00, 0x02, 0x07, 0x58, +0x00, 0x01, 0x00, 0x04, 0x00, 0xb7, 0x00, 0x02, +0x07, 0x58, 0x00, 0x01, 0x00, 0x04, 0x00, 0xdd, +0x00, 0x02, 0x07, 0x58, 0x00, 0x01, 0x00, 0x04, +0x01, 0x0f, 0x00, 0x02, 0x07, 0x58, 0x00, 0x01, +0x00, 0x04, 0x01, 0x1a, 0x00, 0x02, 0x07, 0x3d, +0x00, 0x01, 0x00, 0x04, 0x01, 0x2e, 0x00, 0x02, +0x07, 0x58, 0x00, 0x02, 0x00, 0x06, 0x00, 0x0c, +0x01, 0x37, 0x00, 0x02, 0x07, 0x29, 0x01, 0x34, +0x00, 0x02, 0x07, 0x56, 0x00, 0x01, 0x00, 0x04, +0x01, 0x46, 0x00, 0x02, 0x07, 0x58, 0x00, 0x01, +0x00, 0x04, 0x01, 0x50, 0x00, 0x02, 0x07, 0x3d, +0x00, 0x01, 0x00, 0x04, 0x01, 0x7c, 0x00, 0x02, +0x07, 0x58, 0x00, 0x01, 0x00, 0x04, 0x01, 0x8c, +0x00, 0x02, 0x07, 0x3d, 0x00, 0x01, 0x00, 0x04, +0x01, 0xa3, 0x00, 0x02, 0x07, 0x58, 0x00, 0x01, +0x00, 0x04, 0x02, 0x33, 0x00, 0x02, 0x07, 0x56, +0x00, 0x01, 0x21, 0x02, 0x00, 0x16, 0x00, 0x32, +0x01, 0x44, 0x01, 0x86, 0x02, 0x88, 0x02, 0xf2, +0x03, 0x34, 0x03, 0x3e, 0x03, 0x88, 0x04, 0x8a, +0x05, 0x6a, 0x05, 0xac, 0x06, 0x7c, 0x07, 0x06, +0x07, 0x48, 0x07, 0x5a, 0x07, 0xe4, 0x08, 0xb4, +0x08, 0xf6, 0x09, 0x38, 0x09, 0x7a, 0x09, 0xd4, +0x0a, 0x2e, 0x00, 0x1e, 0x00, 0x3e, 0x00, 0x46, +0x00, 0x4e, 0x00, 0x56, 0x00, 0x5e, 0x00, 0x66, +0x00, 0x6e, 0x00, 0x76, 0x00, 0x7e, 0x00, 0x86, +0x00, 0x8e, 0x00, 0x96, 0x00, 0x9e, 0x00, 0xa6, +0x00, 0xae, 0x00, 0xb6, 0x00, 0xbe, 0x00, 0xc4, +0x00, 0xca, 0x00, 0xd0, 0x00, 0xd6, 0x00, 0xdc, +0x00, 0xe2, 0x00, 0xe8, 0x00, 0xee, 0x00, 0xf4, +0x00, 0xfa, 0x01, 0x00, 0x01, 0x06, 0x01, 0x0c, +0x02, 0xd0, 0x00, 0x03, 0x03, 0x70, 0x07, 0x45, +0x02, 0xcf, 0x00, 0x03, 0x03, 0x70, 0x07, 0x47, +0x02, 0xd4, 0x00, 0x03, 0x03, 0x70, 0x07, 0x8a, +0x02, 0xd2, 0x00, 0x03, 0x03, 0x70, 0x07, 0x8b, +0x02, 0xd6, 0x00, 0x03, 0x03, 0x70, 0x07, 0x8c, +0x02, 0xd3, 0x00, 0x03, 0x03, 0x70, 0x07, 0x8d, +0x02, 0xd1, 0x00, 0x03, 0x03, 0x70, 0x07, 0x8e, +0x02, 0xd5, 0x00, 0x03, 0x03, 0x70, 0x07, 0x8f, +0x02, 0xd0, 0x00, 0x03, 0x07, 0x69, 0x07, 0x45, +0x02, 0xcf, 0x00, 0x03, 0x07, 0x69, 0x07, 0x47, +0x02, 0xd4, 0x00, 0x03, 0x07, 0x69, 0x07, 0x8a, +0x02, 0xd2, 0x00, 0x03, 0x07, 0x69, 0x07, 0x8b, +0x02, 0xd6, 0x00, 0x03, 0x07, 0x69, 0x07, 0x8c, +0x02, 0xd3, 0x00, 0x03, 0x07, 0x69, 0x07, 0x8d, +0x02, 0xd1, 0x00, 0x03, 0x07, 0x69, 0x07, 0x8e, +0x02, 0xd5, 0x00, 0x03, 0x07, 0x69, 0x07, 0x8f, +0x02, 0xce, 0x00, 0x02, 0x03, 0x70, 0x02, 0x8b, +0x00, 0x02, 0x07, 0x21, 0x02, 0x8c, 0x00, 0x02, +0x07, 0x24, 0x02, 0x94, 0x00, 0x02, 0x07, 0x2b, +0x02, 0x93, 0x00, 0x02, 0x07, 0x2f, 0x02, 0x8a, +0x00, 0x02, 0x07, 0x45, 0x02, 0x89, 0x00, 0x02, +0x07, 0x47, 0x02, 0xce, 0x00, 0x02, 0x07, 0x69, +0x02, 0x90, 0x00, 0x02, 0x07, 0x8a, 0x02, 0x8e, +0x00, 0x02, 0x07, 0x8b, 0x02, 0x92, 0x00, 0x02, +0x07, 0x8c, 0x02, 0x8f, 0x00, 0x02, 0x07, 0x8d, +0x02, 0x8d, 0x00, 0x02, 0x07, 0x8e, 0x02, 0x91, +0x00, 0x02, 0x07, 0x8f, 0x00, 0x08, 0x00, 0x12, +0x00, 0x18, 0x00, 0x1e, 0x00, 0x24, 0x00, 0x2a, +0x00, 0x30, 0x00, 0x36, 0x00, 0x3c, 0x02, 0x97, +0x00, 0x02, 0x07, 0x21, 0x02, 0x98, 0x00, 0x02, +0x07, 0x24, 0x02, 0x96, 0x00, 0x02, 0x07, 0x45, +0x02, 0x95, 0x00, 0x02, 0x07, 0x47, 0x02, 0x9c, +0x00, 0x02, 0x07, 0x8a, 0x02, 0x9a, 0x00, 0x02, +0x07, 0x8b, 0x02, 0x9b, 0x00, 0x02, 0x07, 0x8d, +0x02, 0x99, 0x00, 0x02, 0x07, 0x8e, 0x00, 0x1c, +0x00, 0x3a, 0x00, 0x42, 0x00, 0x4a, 0x00, 0x52, +0x00, 0x5a, 0x00, 0x62, 0x00, 0x6a, 0x00, 0x72, +0x00, 0x7a, 0x00, 0x82, 0x00, 0x8a, 0x00, 0x92, +0x00, 0x9a, 0x00, 0xa2, 0x00, 0xaa, 0x00, 0xb2, +0x00, 0xba, 0x00, 0xc0, 0x00, 0xc6, 0x00, 0xcc, +0x00, 0xd2, 0x00, 0xd8, 0x00, 0xde, 0x00, 0xe4, +0x00, 0xea, 0x00, 0xf0, 0x00, 0xf6, 0x00, 0xfc, +0x02, 0xd9, 0x00, 0x03, 0x03, 0x70, 0x07, 0x45, +0x02, 0xd8, 0x00, 0x03, 0x03, 0x70, 0x07, 0x47, +0x02, 0xdd, 0x00, 0x03, 0x03, 0x70, 0x07, 0x8a, +0x02, 0xdb, 0x00, 0x03, 0x03, 0x70, 0x07, 0x8b, +0x02, 0xdf, 0x00, 0x03, 0x03, 0x70, 0x07, 0x8c, +0x02, 0xdc, 0x00, 0x03, 0x03, 0x70, 0x07, 0x8d, +0x02, 0xda, 0x00, 0x03, 0x03, 0x70, 0x07, 0x8e, +0x02, 0xde, 0x00, 0x03, 0x03, 0x70, 0x07, 0x8f, +0x02, 0xd9, 0x00, 0x03, 0x07, 0x69, 0x07, 0x45, +0x02, 0xd8, 0x00, 0x03, 0x07, 0x69, 0x07, 0x47, +0x02, 0xdd, 0x00, 0x03, 0x07, 0x69, 0x07, 0x8a, +0x02, 0xdb, 0x00, 0x03, 0x07, 0x69, 0x07, 0x8b, +0x02, 0xdf, 0x00, 0x03, 0x07, 0x69, 0x07, 0x8c, +0x02, 0xdc, 0x00, 0x03, 0x07, 0x69, 0x07, 0x8d, +0x02, 0xda, 0x00, 0x03, 0x07, 0x69, 0x07, 0x8e, +0x02, 0xde, 0x00, 0x03, 0x07, 0x69, 0x07, 0x8f, +0x02, 0xd7, 0x00, 0x02, 0x03, 0x70, 0x02, 0x9f, +0x00, 0x02, 0x07, 0x21, 0x02, 0xa0, 0x00, 0x02, +0x07, 0x24, 0x02, 0x9e, 0x00, 0x02, 0x07, 0x45, +0x02, 0x9d, 0x00, 0x02, 0x07, 0x47, 0x02, 0xd7, +0x00, 0x02, 0x07, 0x69, 0x02, 0xa4, 0x00, 0x02, +0x07, 0x8a, 0x02, 0xa2, 0x00, 0x02, 0x07, 0x8b, +0x02, 0xa6, 0x00, 0x02, 0x07, 0x8c, 0x02, 0xa3, +0x00, 0x02, 0x07, 0x8d, 0x02, 0xa1, 0x00, 0x02, +0x07, 0x8e, 0x02, 0xa5, 0x00, 0x02, 0x07, 0x8f, +0x00, 0x0d, 0x00, 0x1c, 0x00, 0x22, 0x00, 0x28, +0x00, 0x2e, 0x00, 0x34, 0x00, 0x3a, 0x00, 0x40, +0x00, 0x46, 0x00, 0x4c, 0x00, 0x52, 0x00, 0x58, +0x00, 0x5e, 0x00, 0x64, 0x02, 0xb0, 0x00, 0x02, +0x03, 0x7b, 0x02, 0xa9, 0x00, 0x02, 0x07, 0x21, +0x02, 0xaa, 0x00, 0x02, 0x07, 0x24, 0x02, 0xb2, +0x00, 0x02, 0x07, 0x2b, 0x02, 0xb1, 0x00, 0x02, +0x07, 0x2f, 0x02, 0x5d, 0x00, 0x02, 0x07, 0x35, +0x02, 0xa8, 0x00, 0x02, 0x07, 0x45, 0x02, 0xa7, +0x00, 0x02, 0x07, 0x47, 0x02, 0xae, 0x00, 0x02, +0x07, 0x8a, 0x02, 0xac, 0x00, 0x02, 0x07, 0x8b, +0x02, 0xad, 0x00, 0x02, 0x07, 0x8d, 0x02, 0xab, +0x00, 0x02, 0x07, 0x8e, 0x02, 0xaf, 0x00, 0x02, +0x07, 0x8f, 0x00, 0x08, 0x00, 0x12, 0x00, 0x18, +0x00, 0x1e, 0x00, 0x24, 0x00, 0x2a, 0x00, 0x30, +0x00, 0x36, 0x00, 0x3c, 0x02, 0xb5, 0x00, 0x02, +0x07, 0x21, 0x02, 0xb6, 0x00, 0x02, 0x07, 0x24, +0x02, 0xb4, 0x00, 0x02, 0x07, 0x45, 0x02, 0xb3, +0x00, 0x02, 0x07, 0x47, 0x02, 0xba, 0x00, 0x02, +0x07, 0x8a, 0x02, 0xb8, 0x00, 0x02, 0x07, 0x8b, +0x02, 0xb9, 0x00, 0x02, 0x07, 0x8d, 0x02, 0xb7, +0x00, 0x02, 0x07, 0x8e, 0x00, 0x01, 0x00, 0x04, +0x02, 0xbb, 0x00, 0x02, 0x07, 0x45, 0x00, 0x09, +0x00, 0x14, 0x00, 0x1a, 0x00, 0x20, 0x00, 0x26, +0x00, 0x2c, 0x00, 0x32, 0x00, 0x38, 0x00, 0x3e, +0x00, 0x44, 0x02, 0xbd, 0x00, 0x02, 0x07, 0x21, +0x02, 0xbe, 0x00, 0x02, 0x07, 0x24, 0x02, 0xc3, +0x00, 0x02, 0x07, 0x2b, 0x02, 0xc2, 0x00, 0x02, +0x07, 0x2f, 0x02, 0x60, 0x00, 0x02, 0x07, 0x35, +0x02, 0xbc, 0x00, 0x02, 0x07, 0x45, 0x02, 0xc0, +0x00, 0x02, 0x07, 0x8a, 0x02, 0xbf, 0x00, 0x02, +0x07, 0x8b, 0x02, 0xc1, 0x00, 0x02, 0x07, 0x8c, +0x00, 0x1c, 0x00, 0x3a, 0x00, 0x42, 0x00, 0x4a, +0x00, 0x52, 0x00, 0x5a, 0x00, 0x62, 0x00, 0x6a, +0x00, 0x72, 0x00, 0x7a, 0x00, 0x82, 0x00, 0x8a, +0x00, 0x92, 0x00, 0x9a, 0x00, 0xa2, 0x00, 0xaa, +0x00, 0xb2, 0x00, 0xba, 0x00, 0xc0, 0x00, 0xc6, +0x00, 0xcc, 0x00, 0xd2, 0x00, 0xd8, 0x00, 0xde, +0x00, 0xe4, 0x00, 0xea, 0x00, 0xf0, 0x00, 0xf6, +0x00, 0xfc, 0x02, 0xe2, 0x00, 0x03, 0x03, 0x70, +0x07, 0x45, 0x02, 0xe1, 0x00, 0x03, 0x03, 0x70, +0x07, 0x47, 0x02, 0xe6, 0x00, 0x03, 0x03, 0x70, +0x07, 0x8a, 0x02, 0xe4, 0x00, 0x03, 0x03, 0x70, +0x07, 0x8b, 0x02, 0xe8, 0x00, 0x03, 0x03, 0x70, +0x07, 0x8c, 0x02, 0xe5, 0x00, 0x03, 0x03, 0x70, +0x07, 0x8d, 0x02, 0xe3, 0x00, 0x03, 0x03, 0x70, +0x07, 0x8e, 0x02, 0xe7, 0x00, 0x03, 0x03, 0x70, +0x07, 0x8f, 0x02, 0xe2, 0x00, 0x03, 0x07, 0x69, +0x07, 0x45, 0x02, 0xe1, 0x00, 0x03, 0x07, 0x69, +0x07, 0x47, 0x02, 0xe6, 0x00, 0x03, 0x07, 0x69, +0x07, 0x8a, 0x02, 0xe4, 0x00, 0x03, 0x07, 0x69, +0x07, 0x8b, 0x02, 0xe8, 0x00, 0x03, 0x07, 0x69, +0x07, 0x8c, 0x02, 0xe5, 0x00, 0x03, 0x07, 0x69, +0x07, 0x8d, 0x02, 0xe3, 0x00, 0x03, 0x07, 0x69, +0x07, 0x8e, 0x02, 0xe7, 0x00, 0x03, 0x07, 0x69, +0x07, 0x8f, 0x02, 0xe0, 0x00, 0x02, 0x03, 0x70, +0x02, 0xc4, 0x00, 0x02, 0x03, 0x72, 0x02, 0xca, +0x00, 0x02, 0x03, 0x78, 0x02, 0xc6, 0x00, 0x02, +0x07, 0x21, 0x02, 0xc7, 0x00, 0x02, 0x07, 0x24, +0x02, 0xc5, 0x00, 0x02, 0x07, 0x45, 0x02, 0xe0, +0x00, 0x02, 0x07, 0x69, 0x02, 0xcb, 0x00, 0x02, +0x07, 0x8a, 0x02, 0xc9, 0x00, 0x02, 0x07, 0x8b, +0x02, 0xcd, 0x00, 0x02, 0x07, 0x8c, 0x02, 0xc8, +0x00, 0x02, 0x07, 0x8e, 0x02, 0xcc, 0x00, 0x02, +0x07, 0x8f, 0x00, 0x19, 0x00, 0x34, 0x00, 0x3c, +0x00, 0x44, 0x00, 0x4c, 0x00, 0x54, 0x00, 0x5c, +0x00, 0x64, 0x00, 0x6c, 0x00, 0x74, 0x00, 0x7c, +0x00, 0x84, 0x00, 0x8c, 0x00, 0x92, 0x00, 0x98, +0x00, 0x9e, 0x00, 0xa4, 0x00, 0xaa, 0x00, 0xb0, +0x00, 0xb6, 0x00, 0xbc, 0x00, 0xc2, 0x00, 0xc8, +0x00, 0xce, 0x00, 0xd4, 0x00, 0xda, 0x03, 0x41, +0x00, 0x03, 0x07, 0x69, 0x07, 0x21, 0x03, 0x42, +0x00, 0x03, 0x07, 0x69, 0x07, 0x24, 0x03, 0x40, +0x00, 0x03, 0x07, 0x69, 0x07, 0x45, 0x03, 0x3f, +0x00, 0x03, 0x07, 0x69, 0x07, 0x47, 0x03, 0x49, +0x00, 0x03, 0x07, 0x69, 0x07, 0x67, 0x03, 0x46, +0x00, 0x03, 0x07, 0x69, 0x07, 0x8a, 0x03, 0x44, +0x00, 0x03, 0x07, 0x69, 0x07, 0x8b, 0x03, 0x48, +0x00, 0x03, 0x07, 0x69, 0x07, 0x8c, 0x03, 0x45, +0x00, 0x03, 0x07, 0x69, 0x07, 0x8d, 0x03, 0x43, +0x00, 0x03, 0x07, 0x69, 0x07, 0x8e, 0x03, 0x47, +0x00, 0x03, 0x07, 0x69, 0x07, 0x8f, 0x02, 0xeb, +0x00, 0x02, 0x07, 0x21, 0x02, 0xec, 0x00, 0x02, +0x07, 0x24, 0x02, 0xf4, 0x00, 0x02, 0x07, 0x2b, +0x02, 0xf3, 0x00, 0x02, 0x07, 0x2f, 0x02, 0xea, +0x00, 0x02, 0x07, 0x45, 0x02, 0xe9, 0x00, 0x02, +0x07, 0x47, 0x02, 0xf5, 0x00, 0x02, 0x07, 0x67, +0x03, 0x3e, 0x00, 0x02, 0x07, 0x69, 0x02, 0xf0, +0x00, 0x02, 0x07, 0x8a, 0x02, 0xee, 0x00, 0x02, +0x07, 0x8b, 0x02, 0xf2, 0x00, 0x02, 0x07, 0x8c, +0x02, 0xef, 0x00, 0x02, 0x07, 0x8d, 0x02, 0xed, +0x00, 0x02, 0x07, 0x8e, 0x02, 0xf1, 0x00, 0x02, +0x07, 0x8f, 0x00, 0x08, 0x00, 0x12, 0x00, 0x18, +0x00, 0x1e, 0x00, 0x24, 0x00, 0x2a, 0x00, 0x30, +0x00, 0x36, 0x00, 0x3c, 0x02, 0xf8, 0x00, 0x02, +0x07, 0x21, 0x02, 0xf9, 0x00, 0x02, 0x07, 0x24, +0x02, 0xf7, 0x00, 0x02, 0x07, 0x45, 0x02, 0xf6, +0x00, 0x02, 0x07, 0x47, 0x02, 0xfd, 0x00, 0x02, +0x07, 0x8a, 0x02, 0xfb, 0x00, 0x02, 0x07, 0x8b, +0x02, 0xfc, 0x00, 0x02, 0x07, 0x8d, 0x02, 0xfa, +0x00, 0x02, 0x07, 0x8e, 0x00, 0x17, 0x00, 0x30, +0x00, 0x38, 0x00, 0x40, 0x00, 0x48, 0x00, 0x50, +0x00, 0x58, 0x00, 0x60, 0x00, 0x68, 0x00, 0x70, +0x00, 0x78, 0x00, 0x80, 0x00, 0x88, 0x00, 0x8e, +0x00, 0x94, 0x00, 0x9a, 0x00, 0xa0, 0x00, 0xa6, +0x00, 0xac, 0x00, 0xb2, 0x00, 0xb8, 0x00, 0xbe, +0x00, 0xc4, 0x00, 0xca, 0x03, 0x4d, 0x00, 0x03, +0x07, 0x69, 0x07, 0x21, 0x03, 0x4e, 0x00, 0x03, +0x07, 0x69, 0x07, 0x24, 0x03, 0x4c, 0x00, 0x03, +0x07, 0x69, 0x07, 0x45, 0x03, 0x4b, 0x00, 0x03, +0x07, 0x69, 0x07, 0x47, 0x03, 0x55, 0x00, 0x03, +0x07, 0x69, 0x07, 0x67, 0x03, 0x52, 0x00, 0x03, +0x07, 0x69, 0x07, 0x8a, 0x03, 0x50, 0x00, 0x03, +0x07, 0x69, 0x07, 0x8b, 0x03, 0x54, 0x00, 0x03, +0x07, 0x69, 0x07, 0x8c, 0x03, 0x51, 0x00, 0x03, +0x07, 0x69, 0x07, 0x8d, 0x03, 0x4f, 0x00, 0x03, +0x07, 0x69, 0x07, 0x8e, 0x03, 0x53, 0x00, 0x03, +0x07, 0x69, 0x07, 0x8f, 0x03, 0x00, 0x00, 0x02, +0x07, 0x21, 0x03, 0x01, 0x00, 0x02, 0x07, 0x24, +0x02, 0xff, 0x00, 0x02, 0x07, 0x45, 0x02, 0xfe, +0x00, 0x02, 0x07, 0x47, 0x03, 0x08, 0x00, 0x02, +0x07, 0x67, 0x03, 0x4a, 0x00, 0x02, 0x07, 0x69, +0x03, 0x05, 0x00, 0x02, 0x07, 0x8a, 0x03, 0x03, +0x00, 0x02, 0x07, 0x8b, 0x03, 0x07, 0x00, 0x02, +0x07, 0x8c, 0x03, 0x04, 0x00, 0x02, 0x07, 0x8d, +0x03, 0x02, 0x00, 0x02, 0x07, 0x8e, 0x03, 0x06, +0x00, 0x02, 0x07, 0x8f, 0x00, 0x11, 0x00, 0x24, +0x00, 0x2a, 0x00, 0x30, 0x00, 0x36, 0x00, 0x3c, +0x00, 0x42, 0x00, 0x48, 0x00, 0x4e, 0x00, 0x54, +0x00, 0x5a, 0x00, 0x60, 0x00, 0x66, 0x00, 0x6c, +0x00, 0x72, 0x00, 0x78, 0x00, 0x7e, 0x00, 0x84, +0x03, 0x0b, 0x00, 0x02, 0x07, 0x21, 0x03, 0x0c, +0x00, 0x02, 0x07, 0x24, 0x03, 0x14, 0x00, 0x02, +0x07, 0x2b, 0x03, 0x13, 0x00, 0x02, 0x07, 0x2f, +0x02, 0x82, 0x00, 0x02, 0x07, 0x35, 0x03, 0x0a, +0x00, 0x02, 0x07, 0x45, 0x03, 0x09, 0x00, 0x02, +0x07, 0x47, 0x03, 0x15, 0x00, 0x02, 0x07, 0x67, +0x03, 0x17, 0x00, 0x02, 0x07, 0x6b, 0x03, 0x16, +0x00, 0x02, 0x07, 0x6e, 0x03, 0x18, 0x00, 0x02, +0x07, 0x71, 0x03, 0x10, 0x00, 0x02, 0x07, 0x8a, +0x03, 0x0e, 0x00, 0x02, 0x07, 0x8b, 0x03, 0x12, +0x00, 0x02, 0x07, 0x8c, 0x03, 0x0f, 0x00, 0x02, +0x07, 0x8d, 0x03, 0x0d, 0x00, 0x02, 0x07, 0x8e, +0x03, 0x11, 0x00, 0x02, 0x07, 0x8f, 0x00, 0x08, +0x00, 0x12, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x24, +0x00, 0x2a, 0x00, 0x30, 0x00, 0x36, 0x00, 0x3c, +0x03, 0x1b, 0x00, 0x02, 0x07, 0x21, 0x03, 0x1c, +0x00, 0x02, 0x07, 0x24, 0x03, 0x1a, 0x00, 0x02, +0x07, 0x45, 0x03, 0x19, 0x00, 0x02, 0x07, 0x47, +0x03, 0x20, 0x00, 0x02, 0x07, 0x8a, 0x03, 0x1e, +0x00, 0x02, 0x07, 0x8b, 0x03, 0x1f, 0x00, 0x02, +0x07, 0x8d, 0x03, 0x1d, 0x00, 0x02, 0x07, 0x8e, +0x00, 0x02, 0x00, 0x06, 0x00, 0x0c, 0x03, 0x22, +0x00, 0x02, 0x07, 0x45, 0x03, 0x21, 0x00, 0x02, +0x07, 0x47, 0x00, 0x11, 0x00, 0x24, 0x00, 0x2a, +0x00, 0x30, 0x00, 0x36, 0x00, 0x3c, 0x00, 0x42, +0x00, 0x48, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x5a, +0x00, 0x60, 0x00, 0x66, 0x00, 0x6c, 0x00, 0x72, +0x00, 0x78, 0x00, 0x7e, 0x00, 0x84, 0x03, 0x25, +0x00, 0x02, 0x07, 0x21, 0x03, 0x26, 0x00, 0x02, +0x07, 0x24, 0x03, 0x2f, 0x00, 0x02, 0x07, 0x2b, +0x03, 0x2e, 0x00, 0x02, 0x07, 0x2f, 0x02, 0x85, +0x00, 0x02, 0x07, 0x35, 0x03, 0x24, 0x00, 0x02, +0x07, 0x45, 0x03, 0x23, 0x00, 0x02, 0x07, 0x47, +0x03, 0x2d, 0x00, 0x02, 0x07, 0x67, 0x03, 0x31, +0x00, 0x02, 0x07, 0x6b, 0x03, 0x30, 0x00, 0x02, +0x07, 0x6e, 0x03, 0x32, 0x00, 0x02, 0x07, 0x71, +0x03, 0x2a, 0x00, 0x02, 0x07, 0x8a, 0x03, 0x28, +0x00, 0x02, 0x07, 0x8b, 0x03, 0x2c, 0x00, 0x02, +0x07, 0x8c, 0x03, 0x29, 0x00, 0x02, 0x07, 0x8d, +0x03, 0x27, 0x00, 0x02, 0x07, 0x8e, 0x03, 0x2b, +0x00, 0x02, 0x07, 0x8f, 0x00, 0x17, 0x00, 0x30, +0x00, 0x38, 0x00, 0x40, 0x00, 0x48, 0x00, 0x50, +0x00, 0x58, 0x00, 0x60, 0x00, 0x68, 0x00, 0x70, +0x00, 0x78, 0x00, 0x80, 0x00, 0x88, 0x00, 0x8e, +0x00, 0x94, 0x00, 0x9a, 0x00, 0xa0, 0x00, 0xa6, +0x00, 0xac, 0x00, 0xb2, 0x00, 0xb8, 0x00, 0xbe, +0x00, 0xc4, 0x00, 0xca, 0x03, 0x59, 0x00, 0x03, +0x07, 0x69, 0x07, 0x21, 0x03, 0x5a, 0x00, 0x03, +0x07, 0x69, 0x07, 0x24, 0x03, 0x58, 0x00, 0x03, +0x07, 0x69, 0x07, 0x45, 0x03, 0x57, 0x00, 0x03, +0x07, 0x69, 0x07, 0x47, 0x03, 0x61, 0x00, 0x03, +0x07, 0x69, 0x07, 0x67, 0x03, 0x5e, 0x00, 0x03, +0x07, 0x69, 0x07, 0x8a, 0x03, 0x5c, 0x00, 0x03, +0x07, 0x69, 0x07, 0x8b, 0x03, 0x60, 0x00, 0x03, +0x07, 0x69, 0x07, 0x8c, 0x03, 0x5d, 0x00, 0x03, +0x07, 0x69, 0x07, 0x8d, 0x03, 0x5b, 0x00, 0x03, +0x07, 0x69, 0x07, 0x8e, 0x03, 0x5f, 0x00, 0x03, +0x07, 0x69, 0x07, 0x8f, 0x03, 0x35, 0x00, 0x02, +0x07, 0x21, 0x03, 0x36, 0x00, 0x02, 0x07, 0x24, +0x03, 0x34, 0x00, 0x02, 0x07, 0x45, 0x03, 0x33, +0x00, 0x02, 0x07, 0x47, 0x03, 0x3d, 0x00, 0x02, +0x07, 0x67, 0x03, 0x56, 0x00, 0x02, 0x07, 0x69, +0x03, 0x3a, 0x00, 0x02, 0x07, 0x8a, 0x03, 0x38, +0x00, 0x02, 0x07, 0x8b, 0x03, 0x3c, 0x00, 0x02, +0x07, 0x8c, 0x03, 0x39, 0x00, 0x02, 0x07, 0x8d, +0x03, 0x37, 0x00, 0x02, 0x07, 0x8e, 0x03, 0x3b, +0x00, 0x02, 0x07, 0x8f, 0x00, 0x08, 0x00, 0x12, +0x00, 0x18, 0x00, 0x1e, 0x00, 0x24, 0x00, 0x2a, +0x00, 0x30, 0x00, 0x36, 0x00, 0x3c, 0x02, 0xd0, +0x00, 0x02, 0x07, 0x45, 0x02, 0xcf, 0x00, 0x02, +0x07, 0x47, 0x02, 0xd4, 0x00, 0x02, 0x07, 0x8a, +0x02, 0xd2, 0x00, 0x02, 0x07, 0x8b, 0x02, 0xd6, +0x00, 0x02, 0x07, 0x8c, 0x02, 0xd3, 0x00, 0x02, +0x07, 0x8d, 0x02, 0xd1, 0x00, 0x02, 0x07, 0x8e, +0x02, 0xd5, 0x00, 0x02, 0x07, 0x8f, 0x00, 0x08, +0x00, 0x12, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x24, +0x00, 0x2a, 0x00, 0x30, 0x00, 0x36, 0x00, 0x3c, +0x02, 0xd9, 0x00, 0x02, 0x07, 0x45, 0x02, 0xd8, +0x00, 0x02, 0x07, 0x47, 0x02, 0xdd, 0x00, 0x02, +0x07, 0x8a, 0x02, 0xdb, 0x00, 0x02, 0x07, 0x8b, +0x02, 0xdf, 0x00, 0x02, 0x07, 0x8c, 0x02, 0xdc, +0x00, 0x02, 0x07, 0x8d, 0x02, 0xda, 0x00, 0x02, +0x07, 0x8e, 0x02, 0xde, 0x00, 0x02, 0x07, 0x8f, +0x00, 0x08, 0x00, 0x12, 0x00, 0x18, 0x00, 0x1e, +0x00, 0x24, 0x00, 0x2a, 0x00, 0x30, 0x00, 0x36, +0x00, 0x3c, 0x02, 0xe2, 0x00, 0x02, 0x07, 0x45, +0x02, 0xe1, 0x00, 0x02, 0x07, 0x47, 0x02, 0xe6, +0x00, 0x02, 0x07, 0x8a, 0x02, 0xe4, 0x00, 0x02, +0x07, 0x8b, 0x02, 0xe8, 0x00, 0x02, 0x07, 0x8c, +0x02, 0xe5, 0x00, 0x02, 0x07, 0x8d, 0x02, 0xe3, +0x00, 0x02, 0x07, 0x8e, 0x02, 0xe7, 0x00, 0x02, +0x07, 0x8f, 0x00, 0x0b, 0x00, 0x18, 0x00, 0x1e, +0x00, 0x24, 0x00, 0x2a, 0x00, 0x30, 0x00, 0x36, +0x00, 0x3c, 0x00, 0x42, 0x00, 0x48, 0x00, 0x4e, +0x00, 0x54, 0x03, 0x41, 0x00, 0x02, 0x07, 0x21, +0x03, 0x42, 0x00, 0x02, 0x07, 0x24, 0x03, 0x40, +0x00, 0x02, 0x07, 0x45, 0x03, 0x3f, 0x00, 0x02, +0x07, 0x47, 0x03, 0x49, 0x00, 0x02, 0x07, 0x67, +0x03, 0x46, 0x00, 0x02, 0x07, 0x8a, 0x03, 0x44, +0x00, 0x02, 0x07, 0x8b, 0x03, 0x48, 0x00, 0x02, +0x07, 0x8c, 0x03, 0x45, 0x00, 0x02, 0x07, 0x8d, +0x03, 0x43, 0x00, 0x02, 0x07, 0x8e, 0x03, 0x47, +0x00, 0x02, 0x07, 0x8f, 0x00, 0x0b, 0x00, 0x18, +0x00, 0x1e, 0x00, 0x24, 0x00, 0x2a, 0x00, 0x30, +0x00, 0x36, 0x00, 0x3c, 0x00, 0x42, 0x00, 0x48, +0x00, 0x4e, 0x00, 0x54, 0x03, 0x4d, 0x00, 0x02, +0x07, 0x21, 0x03, 0x4e, 0x00, 0x02, 0x07, 0x24, +0x03, 0x4c, 0x00, 0x02, 0x07, 0x45, 0x03, 0x4b, +0x00, 0x02, 0x07, 0x47, 0x03, 0x55, 0x00, 0x02, +0x07, 0x67, 0x03, 0x52, 0x00, 0x02, 0x07, 0x8a, +0x03, 0x50, 0x00, 0x02, 0x07, 0x8b, 0x03, 0x54, +0x00, 0x02, 0x07, 0x8c, 0x03, 0x51, 0x00, 0x02, +0x07, 0x8d, 0x03, 0x4f, 0x00, 0x02, 0x07, 0x8e, +0x03, 0x53, 0x00, 0x02, 0x07, 0x8f, 0x00, 0x0b, +0x00, 0x18, 0x00, 0x1e, 0x00, 0x24, 0x00, 0x2a, +0x00, 0x30, 0x00, 0x36, 0x00, 0x3c, 0x00, 0x42, +0x00, 0x48, 0x00, 0x4e, 0x00, 0x54, 0x03, 0x59, +0x00, 0x02, 0x07, 0x21, 0x03, 0x5a, 0x00, 0x02, +0x07, 0x24, 0x03, 0x58, 0x00, 0x02, 0x07, 0x45, +0x03, 0x57, 0x00, 0x02, 0x07, 0x47, 0x03, 0x61, +0x00, 0x02, 0x07, 0x67, 0x03, 0x5e, 0x00, 0x02, +0x07, 0x8a, 0x03, 0x5c, 0x00, 0x02, 0x07, 0x8b, +0x03, 0x60, 0x00, 0x02, 0x07, 0x8c, 0x03, 0x5d, +0x00, 0x02, 0x07, 0x8d, 0x03, 0x5b, 0x00, 0x02, +0x07, 0x8e, 0x03, 0x5f, 0x00, 0x02, 0x07, 0x8f, +0x00, 0x03, 0x00, 0x01, 0x16, 0xaa, 0x00, 0x01, +0x17, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x00, 0x31, 0x00, 0x03, 0x00, 0x01, 0x17, 0x4a, +0x00, 0x01, 0x17, 0x0e, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x31, 0x00, 0x03, 0x00, 0x00, +0x00, 0x01, 0x17, 0x74, 0x00, 0x01, 0x17, 0x74, +0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x03, +0x00, 0x00, 0x00, 0x01, 0x17, 0x68, 0x00, 0x01, +0x17, 0x68, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, +0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x17, 0x5c, +0x00, 0x01, 0x17, 0x5c, 0x00, 0x01, 0x00, 0x00, +0x00, 0x31, 0x00, 0x03, 0x00, 0x01, 0x17, 0x50, +0x00, 0x01, 0x17, 0x3e, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x31, 0x00, 0x03, 0x00, 0x01, +0x17, 0x46, 0x00, 0x01, 0x17, 0x32, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x03, +0x00, 0x01, 0x17, 0x3a, 0x00, 0x01, 0x17, 0x26, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, +0x00, 0x02, 0x17, 0x2e, 0x00, 0x24, 0x05, 0xa1, +0x05, 0xa2, 0x05, 0xa3, 0x05, 0xa4, 0x05, 0xa5, +0x05, 0xa6, 0x05, 0xa7, 0x05, 0xa8, 0x05, 0xa9, +0x05, 0xaa, 0x05, 0xab, 0x05, 0xac, 0x05, 0xad, +0x05, 0xae, 0x05, 0xaf, 0x05, 0xb0, 0x05, 0xb1, +0x05, 0xb2, 0x05, 0xb3, 0x05, 0xb4, 0x05, 0xb5, +0x05, 0xb6, 0x05, 0xb7, 0x05, 0xb8, 0x05, 0xb2, +0x05, 0xa1, 0x05, 0xa5, 0x05, 0xa7, 0x05, 0xa9, +0x05, 0xb9, 0x05, 0xaf, 0x05, 0xb4, 0x05, 0xba, +0x05, 0xb8, 0x05, 0xb9, 0x05, 0xba, 0x00, 0x02, +0x16, 0xf0, 0x00, 0x79, 0x05, 0xa1, 0x05, 0xa1, +0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, +0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, +0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa5, +0x05, 0xa5, 0x05, 0xa5, 0x05, 0xa5, 0x05, 0xa5, +0x05, 0xa5, 0x05, 0xa5, 0x05, 0xa5, 0x05, 0xa7, +0x05, 0xa7, 0x05, 0xa7, 0x05, 0xa7, 0x05, 0xa7, +0x05, 0xa7, 0x05, 0xa7, 0x05, 0xa7, 0x05, 0xa7, +0x05, 0xa7, 0x05, 0xa7, 0x05, 0xa9, 0x05, 0xa9, +0x05, 0xa9, 0x05, 0xa9, 0x05, 0xa9, 0x05, 0xa9, +0x05, 0xa9, 0x05, 0xa9, 0x05, 0xa9, 0x05, 0xa9, +0x05, 0xa9, 0x05, 0xa9, 0x05, 0xa9, 0x05, 0xb9, +0x05, 0xb9, 0x05, 0xb9, 0x05, 0xaf, 0x05, 0xaf, +0x05, 0xaf, 0x05, 0xaf, 0x05, 0xaf, 0x05, 0xaf, +0x05, 0xaf, 0x05, 0xaf, 0x05, 0xb1, 0x05, 0xb1, +0x05, 0xb4, 0x05, 0xb4, 0x05, 0xb4, 0x05, 0xb4, +0x05, 0xb4, 0x05, 0xb4, 0x05, 0xb4, 0x05, 0xb4, +0x05, 0xb4, 0x05, 0xb4, 0x05, 0xb4, 0x05, 0xb4, +0x05, 0xb4, 0x05, 0xba, 0x05, 0xba, 0x05, 0xba, +0x05, 0xb8, 0x05, 0xb8, 0x05, 0xb8, 0x05, 0xb8, +0x05, 0xb8, 0x05, 0xb8, 0x05, 0xb8, 0x05, 0xb8, +0x05, 0xb8, 0x05, 0xb8, 0x05, 0xb8, 0x05, 0xbb, +0x05, 0xbb, 0x05, 0xbb, 0x05, 0xbb, 0x05, 0xbb, +0x05, 0xbb, 0x05, 0xbb, 0x05, 0xbb, 0x05, 0xbb, +0x05, 0xbb, 0x05, 0xbb, 0x05, 0xbb, 0x05, 0xbc, +0x05, 0xbc, 0x05, 0xbc, 0x05, 0xbc, 0x05, 0xbc, +0x05, 0xbc, 0x05, 0xbc, 0x05, 0xbc, 0x05, 0xbc, +0x05, 0xbc, 0x05, 0xbc, 0x05, 0xbc, 0x05, 0xbd, +0x05, 0xbd, 0x05, 0xbd, 0x05, 0xbd, 0x05, 0xbd, +0x05, 0xbd, 0x05, 0xbd, 0x05, 0xbd, 0x05, 0xbd, +0x05, 0xbd, 0x05, 0xbd, 0x05, 0xbd, 0x00, 0x02, +0x16, 0x02, 0x01, 0xa8, 0x04, 0xc3, 0x04, 0xc4, +0x04, 0xc5, 0x04, 0xc6, 0x04, 0xc7, 0x04, 0xc8, +0x04, 0xc9, 0x04, 0xca, 0x04, 0xcb, 0x04, 0xcc, +0x04, 0xcd, 0x04, 0xce, 0x04, 0xcf, 0x04, 0xd0, +0x04, 0xd1, 0x04, 0xd2, 0x04, 0xd3, 0x04, 0xd4, +0x04, 0xd5, 0x04, 0xd6, 0x04, 0xd7, 0x04, 0xd8, +0x04, 0xd9, 0x04, 0xda, 0x04, 0xdb, 0x04, 0xdc, +0x04, 0xdd, 0x04, 0xde, 0x04, 0xdf, 0x04, 0xe0, +0x04, 0xe1, 0x04, 0xe2, 0x04, 0xe3, 0x04, 0xe4, +0x04, 0xe5, 0x04, 0xe6, 0x04, 0xe7, 0x04, 0xe8, +0x04, 0xe9, 0x04, 0xea, 0x04, 0xeb, 0x04, 0xec, +0x04, 0xed, 0x04, 0xee, 0x04, 0xef, 0x04, 0xf0, +0x04, 0xf1, 0x04, 0xf2, 0x04, 0xf3, 0x04, 0xf4, +0x04, 0xf5, 0x04, 0xf6, 0x04, 0xf7, 0x04, 0xf8, +0x04, 0xf9, 0x04, 0xfa, 0x04, 0xfb, 0x04, 0xfc, +0x04, 0xfd, 0x04, 0xfe, 0x04, 0xff, 0x05, 0x00, +0x05, 0x01, 0x05, 0x02, 0x05, 0x03, 0x05, 0x04, +0x05, 0x05, 0x05, 0x06, 0x05, 0x07, 0x05, 0x08, +0x05, 0x09, 0x05, 0x0a, 0x05, 0x0b, 0x05, 0x0c, +0x05, 0x0d, 0x05, 0x0e, 0x05, 0x0f, 0x05, 0x10, +0x05, 0x11, 0x05, 0x12, 0x05, 0x13, 0x05, 0x14, +0x05, 0x15, 0x05, 0x16, 0x05, 0x17, 0x05, 0x18, +0x05, 0x19, 0x05, 0x1a, 0x05, 0x1b, 0x05, 0x1c, +0x05, 0x1d, 0x05, 0x1e, 0x05, 0x1f, 0x05, 0x20, +0x05, 0x21, 0x05, 0x22, 0x05, 0x23, 0x05, 0x24, +0x05, 0x25, 0x05, 0x26, 0x05, 0x27, 0x05, 0x28, +0x05, 0x29, 0x05, 0x2a, 0x05, 0x2b, 0x05, 0x2c, +0x05, 0x2d, 0x05, 0x2e, 0x05, 0x2f, 0x05, 0x30, +0x05, 0x31, 0x05, 0x32, 0x05, 0x33, 0x05, 0x34, +0x05, 0x35, 0x05, 0x36, 0x05, 0x37, 0x05, 0x38, +0x05, 0x39, 0x05, 0x3a, 0x05, 0x3b, 0x05, 0x3c, +0x05, 0x3d, 0x05, 0x3e, 0x05, 0x3f, 0x05, 0x40, +0x05, 0x41, 0x05, 0x42, 0x05, 0x43, 0x05, 0x44, +0x05, 0x45, 0x05, 0x46, 0x05, 0x47, 0x05, 0x48, +0x05, 0x49, 0x05, 0x4a, 0x05, 0x4b, 0x05, 0x4c, +0x05, 0x4d, 0x05, 0x4e, 0x05, 0x4f, 0x05, 0x50, +0x05, 0x51, 0x05, 0x5b, 0x05, 0x5c, 0x05, 0x52, +0x05, 0x53, 0x05, 0x54, 0x05, 0x55, 0x05, 0x56, +0x05, 0x57, 0x05, 0x58, 0x05, 0x59, 0x05, 0x5a, +0x05, 0x5d, 0x05, 0x5f, 0x05, 0x5e, 0x05, 0x60, +0x05, 0x61, 0x05, 0x62, 0x05, 0x63, 0x05, 0x64, +0x05, 0x65, 0x05, 0x66, 0x05, 0x67, 0x05, 0x68, +0x05, 0x69, 0x05, 0x6a, 0x05, 0x6c, 0x05, 0x6d, +0x05, 0x6e, 0x05, 0x6f, 0x05, 0x70, 0x05, 0x71, +0x05, 0x72, 0x05, 0x73, 0x05, 0x74, 0x05, 0x75, +0x05, 0x76, 0x05, 0x77, 0x05, 0x78, 0x05, 0x79, +0x05, 0x7a, 0x05, 0x7b, 0x05, 0x7c, 0x05, 0x7d, +0x05, 0x7e, 0x05, 0x7f, 0x05, 0x80, 0x05, 0x81, +0x05, 0x82, 0x05, 0x83, 0x05, 0x84, 0x05, 0x85, +0x05, 0x86, 0x05, 0x87, 0x05, 0x88, 0x05, 0x89, +0x05, 0x8a, 0x05, 0x8b, 0x05, 0x8c, 0x05, 0x8d, +0x05, 0x8e, 0x05, 0x8f, 0x05, 0x90, 0x05, 0x91, +0x05, 0x92, 0x05, 0x93, 0x05, 0x94, 0x05, 0x95, +0x05, 0x96, 0x05, 0x97, 0x05, 0x98, 0x05, 0x99, +0x05, 0x9a, 0x05, 0x9b, 0x05, 0x9c, 0x05, 0x9d, +0x05, 0x9e, 0x05, 0x9f, 0x05, 0xa1, 0x05, 0xa2, +0x05, 0xa3, 0x05, 0xa4, 0x05, 0xa5, 0x05, 0xa6, +0x05, 0xa7, 0x05, 0xa8, 0x05, 0xa9, 0x05, 0xaa, +0x05, 0xab, 0x05, 0xac, 0x05, 0xad, 0x05, 0xae, +0x05, 0xaf, 0x05, 0xb0, 0x05, 0xb1, 0x05, 0xb2, +0x05, 0xb3, 0x05, 0xb4, 0x05, 0xb5, 0x05, 0xb6, +0x05, 0xb7, 0x05, 0xb8, 0x05, 0xa1, 0x05, 0xa5, +0x05, 0xa7, 0x05, 0xa9, 0x05, 0xb9, 0x05, 0xaf, +0x05, 0xb4, 0x05, 0xba, 0x05, 0xb8, 0x05, 0xa1, +0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, +0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, +0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa5, +0x05, 0xa5, 0x05, 0xa5, 0x05, 0xa5, 0x05, 0xa5, +0x05, 0xa5, 0x05, 0xa5, 0x05, 0xa5, 0x05, 0xa7, +0x05, 0xa7, 0x05, 0xa7, 0x05, 0xa7, 0x05, 0xa7, +0x05, 0xa7, 0x05, 0xa7, 0x05, 0xa7, 0x05, 0xa7, +0x05, 0xa7, 0x05, 0xa9, 0x05, 0xa9, 0x05, 0xa9, +0x05, 0xa9, 0x05, 0xa9, 0x05, 0xa9, 0x05, 0xa9, +0x05, 0xa9, 0x05, 0xa9, 0x05, 0xa9, 0x05, 0xa9, +0x05, 0xa9, 0x05, 0xaf, 0x05, 0xaf, 0x05, 0xaf, +0x05, 0xaf, 0x05, 0xaf, 0x05, 0xaf, 0x05, 0xaf, +0x05, 0xaf, 0x05, 0xb1, 0x05, 0xb4, 0x05, 0xb4, +0x05, 0xb4, 0x05, 0xb4, 0x05, 0xb4, 0x05, 0xb4, +0x05, 0xb4, 0x05, 0xb4, 0x05, 0xb8, 0x05, 0xb8, +0x05, 0xb8, 0x05, 0xb8, 0x05, 0xb8, 0x05, 0xb8, +0x05, 0xb8, 0x05, 0xb8, 0x05, 0xb8, 0x05, 0xb8, +0x05, 0xbb, 0x05, 0xbb, 0x05, 0xbb, 0x05, 0xbb, +0x05, 0xbb, 0x05, 0xbb, 0x05, 0xbb, 0x05, 0xbb, +0x05, 0xbb, 0x05, 0xbc, 0x05, 0xbc, 0x05, 0xbc, +0x05, 0xbc, 0x05, 0xbc, 0x05, 0xbc, 0x05, 0xbc, +0x05, 0xbc, 0x05, 0xbc, 0x05, 0xbd, 0x05, 0xbd, +0x05, 0xbd, 0x05, 0xbd, 0x05, 0xbd, 0x05, 0xbd, +0x05, 0xbd, 0x05, 0xbd, 0x05, 0xbd, 0x05, 0xbe, +0x05, 0xbf, 0x05, 0xc0, 0x05, 0xc1, 0x05, 0xc2, +0x05, 0xc3, 0x05, 0xc4, 0x05, 0xc5, 0x05, 0xc6, +0x05, 0xc7, 0x05, 0xc8, 0x05, 0xc9, 0x05, 0xca, +0x05, 0xcb, 0x05, 0xcc, 0x05, 0xcd, 0x05, 0xce, +0x05, 0xcf, 0x05, 0xd0, 0x05, 0xd1, 0x05, 0xd2, +0x05, 0xd3, 0x05, 0xd4, 0x05, 0xd5, 0x05, 0xd6, +0x05, 0xd7, 0x05, 0xd8, 0x05, 0xd9, 0x05, 0xda, +0x05, 0xdb, 0x05, 0xdc, 0x05, 0xdd, 0x05, 0xde, +0x05, 0xdf, 0x05, 0xe0, 0x05, 0xe1, 0x05, 0xe2, +0x05, 0xe3, 0x05, 0xe4, 0x05, 0xe5, 0x05, 0xe7, +0x05, 0xe8, 0x05, 0xe9, 0x05, 0xea, 0x05, 0xeb, +0x05, 0xec, 0x05, 0xed, 0x05, 0xee, 0x05, 0xef, +0x05, 0xf0, 0x05, 0xf1, 0x05, 0xf2, 0x05, 0xf3, +0x05, 0xf4, 0x05, 0xf5, 0x05, 0xf6, 0x05, 0xf7, +0x05, 0xf8, 0x05, 0xf9, 0x05, 0xfa, 0x05, 0xfb, +0x05, 0xfc, 0x05, 0xfd, 0x05, 0xfe, 0x05, 0xff, +0x06, 0x00, 0x06, 0x01, 0x06, 0x02, 0x06, 0x03, +0x06, 0x04, 0x06, 0x05, 0x06, 0x06, 0x06, 0x07, +0x06, 0x08, 0x06, 0x09, 0x00, 0x01, 0x12, 0xfe, +0x01, 0xca, 0x00, 0x02, 0x13, 0x02, 0x00, 0x14, +0x06, 0x0a, 0x06, 0x15, 0x06, 0x16, 0x06, 0x17, +0x04, 0x7f, 0x06, 0x19, 0x06, 0x1a, 0x06, 0x1b, +0x06, 0x1c, 0x06, 0x1d, 0x06, 0x1e, 0x06, 0x1f, +0x06, 0x20, 0x06, 0x21, 0x06, 0x22, 0x06, 0x23, +0x06, 0x24, 0x06, 0x25, 0x06, 0x26, 0x06, 0x27, +0x00, 0x02, 0x12, 0xf6, 0x00, 0xdd, 0x04, 0xc3, +0x04, 0xc4, 0x04, 0xc5, 0x04, 0xc6, 0x04, 0xc7, +0x04, 0xc8, 0x04, 0xc9, 0x04, 0xca, 0x04, 0xcb, +0x04, 0xcc, 0x04, 0xcd, 0x04, 0xce, 0x04, 0xcf, +0x04, 0xd0, 0x04, 0xd1, 0x04, 0xd2, 0x04, 0xd3, +0x04, 0xd4, 0x04, 0xd5, 0x04, 0xd6, 0x04, 0xd7, +0x04, 0xd8, 0x04, 0xd9, 0x04, 0xda, 0x04, 0xdb, +0x04, 0xdc, 0x04, 0xdd, 0x04, 0xde, 0x04, 0xdf, +0x04, 0xe0, 0x04, 0xe1, 0x04, 0xe2, 0x04, 0xe3, +0x04, 0xe4, 0x04, 0xe5, 0x04, 0xe6, 0x04, 0xe7, +0x04, 0xe8, 0x04, 0xe9, 0x04, 0xea, 0x04, 0xeb, +0x04, 0xec, 0x04, 0xed, 0x04, 0xee, 0x04, 0xef, +0x04, 0xf0, 0x04, 0xf1, 0x04, 0xf2, 0x04, 0xf3, +0x04, 0xf4, 0x04, 0xf5, 0x04, 0xf6, 0x04, 0xf7, +0x04, 0xf8, 0x04, 0xf9, 0x04, 0xfa, 0x04, 0xfb, +0x04, 0xfc, 0x04, 0xfd, 0x04, 0xfe, 0x04, 0xff, +0x05, 0x00, 0x05, 0x01, 0x05, 0x02, 0x05, 0x03, +0x05, 0x04, 0x05, 0x05, 0x05, 0x06, 0x05, 0x07, +0x05, 0x08, 0x05, 0x09, 0x05, 0x0a, 0x05, 0x0b, +0x05, 0x0c, 0x05, 0x0d, 0x05, 0x0e, 0x05, 0x0f, +0x05, 0x10, 0x05, 0x11, 0x05, 0x12, 0x05, 0x13, +0x05, 0x14, 0x05, 0x15, 0x05, 0x16, 0x05, 0x17, +0x05, 0x18, 0x05, 0x19, 0x05, 0x1a, 0x05, 0x1c, +0x05, 0x1d, 0x05, 0x1e, 0x05, 0x1f, 0x05, 0x20, +0x05, 0x21, 0x05, 0x22, 0x05, 0x23, 0x05, 0x24, +0x05, 0x25, 0x05, 0x27, 0x05, 0x28, 0x05, 0x29, +0x05, 0x2a, 0x05, 0x2a, 0x05, 0x2b, 0x05, 0x2c, +0x05, 0x2d, 0x05, 0x2e, 0x05, 0x2f, 0x05, 0x30, +0x05, 0x31, 0x05, 0x33, 0x05, 0x32, 0x05, 0x34, +0x05, 0x35, 0x05, 0x36, 0x05, 0x37, 0x05, 0x38, +0x05, 0x39, 0x05, 0x3a, 0x05, 0x3b, 0x05, 0x3c, +0x05, 0x3d, 0x05, 0x3e, 0x05, 0x3f, 0x05, 0x40, +0x05, 0x41, 0x05, 0x42, 0x05, 0x43, 0x05, 0x44, +0x05, 0x45, 0x05, 0x46, 0x05, 0x47, 0x05, 0x48, +0x05, 0x49, 0x05, 0x4a, 0x05, 0x4b, 0x05, 0x4c, +0x05, 0x4d, 0x05, 0x4e, 0x05, 0x4f, 0x05, 0x50, +0x05, 0x51, 0x05, 0x5b, 0x05, 0x5c, 0x05, 0x52, +0x05, 0x53, 0x05, 0x54, 0x05, 0x55, 0x05, 0x56, +0x05, 0x57, 0x05, 0x58, 0x05, 0x59, 0x05, 0x5a, +0x05, 0x5d, 0x05, 0x60, 0x05, 0x5f, 0x05, 0x5e, +0x05, 0x61, 0x05, 0x62, 0x05, 0x63, 0x05, 0x64, +0x05, 0x65, 0x05, 0x66, 0x05, 0x67, 0x05, 0x68, +0x05, 0x69, 0x05, 0x6a, 0x05, 0x6c, 0x05, 0x6d, +0x05, 0x6e, 0x05, 0x6f, 0x05, 0x70, 0x05, 0x71, +0x05, 0x72, 0x05, 0x73, 0x05, 0x74, 0x05, 0x75, +0x05, 0x76, 0x05, 0x77, 0x05, 0x78, 0x05, 0x79, +0x05, 0x7a, 0x05, 0x7b, 0x05, 0x7c, 0x05, 0x7d, +0x05, 0x7e, 0x05, 0x7f, 0x05, 0x80, 0x05, 0x81, +0x05, 0x82, 0x05, 0x83, 0x05, 0x84, 0x05, 0x85, +0x05, 0x86, 0x05, 0x87, 0x05, 0x88, 0x05, 0x89, +0x05, 0x8a, 0x05, 0x8b, 0x05, 0x8c, 0x05, 0x8d, +0x05, 0x8e, 0x05, 0x8f, 0x05, 0x90, 0x05, 0x91, +0x05, 0x92, 0x05, 0x93, 0x05, 0x94, 0x05, 0x95, +0x05, 0x96, 0x05, 0x97, 0x05, 0x98, 0x05, 0x99, +0x05, 0x9a, 0x05, 0x9b, 0x05, 0x9c, 0x05, 0x9e, +0x05, 0x9f, 0x05, 0x9d, 0x05, 0x1b, 0x05, 0x26, +0x00, 0x02, 0x11, 0x7c, 0x00, 0x4c, 0x05, 0xbe, +0x05, 0xbf, 0x05, 0xc0, 0x05, 0xc1, 0x05, 0xc2, +0x05, 0xc3, 0x05, 0xc4, 0x05, 0xc5, 0x05, 0xc6, +0x05, 0xc7, 0x05, 0xc8, 0x05, 0xc9, 0x05, 0xca, +0x05, 0xcb, 0x05, 0xcc, 0x05, 0xcd, 0x05, 0xce, +0x05, 0xcf, 0x05, 0xd0, 0x05, 0xd1, 0x05, 0xd2, +0x05, 0xd3, 0x05, 0xd4, 0x05, 0xd5, 0x05, 0xd6, +0x05, 0xd7, 0x05, 0xd8, 0x05, 0xd9, 0x05, 0xda, +0x05, 0xdb, 0x05, 0xdc, 0x05, 0xdd, 0x05, 0xde, +0x05, 0xdf, 0x05, 0xe0, 0x05, 0xe1, 0x05, 0xe2, +0x05, 0xe3, 0x05, 0xe4, 0x05, 0xe5, 0x05, 0xe7, +0x05, 0xe8, 0x05, 0xe9, 0x05, 0xea, 0x05, 0xeb, +0x05, 0xec, 0x05, 0xed, 0x05, 0xee, 0x05, 0xef, +0x05, 0xf0, 0x05, 0xf1, 0x05, 0xf2, 0x05, 0xf3, +0x05, 0xf4, 0x05, 0xf5, 0x05, 0xf6, 0x05, 0xf7, +0x05, 0xf8, 0x05, 0xf9, 0x05, 0xfa, 0x05, 0xfb, +0x05, 0xfc, 0x05, 0xfd, 0x05, 0xfe, 0x06, 0x00, +0x05, 0xff, 0x06, 0x01, 0x06, 0x02, 0x06, 0x03, +0x06, 0x04, 0x06, 0x05, 0x06, 0x06, 0x06, 0x07, +0x06, 0x08, 0x06, 0x09, 0x05, 0xbf, 0x00, 0x02, +0x11, 0x18, 0x00, 0x0e, 0x06, 0x52, 0x06, 0x53, +0x06, 0x54, 0x06, 0x55, 0x06, 0x56, 0x06, 0x57, +0x06, 0x58, 0x06, 0x59, 0x06, 0x5a, 0x06, 0x5b, +0x06, 0x5e, 0x06, 0x5f, 0x06, 0x5c, 0x06, 0x5d, +0x00, 0x02, 0x10, 0xf6, 0x00, 0x0e, 0x06, 0x44, +0x06, 0x45, 0x06, 0x46, 0x06, 0x47, 0x06, 0x48, +0x06, 0x49, 0x06, 0x4a, 0x06, 0x4b, 0x06, 0x4c, +0x06, 0x4d, 0x06, 0x50, 0x06, 0x51, 0x06, 0x4e, +0x06, 0x4f, 0x00, 0x01, 0x10, 0xea, 0x02, 0x21, +0x00, 0x03, 0x00, 0x01, 0x10, 0xea, 0x00, 0x01, +0x10, 0xf4, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x00, 0x31, 0x00, 0x03, 0x00, 0x01, 0x10, 0xea, +0x00, 0x01, 0x10, 0xfa, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x31, 0x00, 0x03, 0x00, 0x02, +0x10, 0xfc, 0x10, 0xf2, 0x00, 0x01, 0x10, 0xe8, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, +0x00, 0x02, 0x10, 0xf0, 0x00, 0x1d, 0x06, 0x7d, +0x06, 0x7e, 0x06, 0x7f, 0x06, 0x80, 0x06, 0x81, +0x06, 0x82, 0x06, 0x83, 0x06, 0x84, 0x06, 0x85, +0x06, 0x86, 0x06, 0x87, 0x06, 0x88, 0x06, 0x89, +0x06, 0x8a, 0x06, 0x8b, 0x06, 0x8c, 0x06, 0x8d, +0x06, 0x8e, 0x06, 0x8f, 0x06, 0x90, 0x06, 0x91, +0x06, 0x92, 0x06, 0x93, 0x06, 0x94, 0x06, 0x95, +0x06, 0x96, 0x06, 0x9c, 0x06, 0x9d, 0x06, 0x9e, +0x00, 0x01, 0x10, 0xc6, 0x06, 0x5f, 0x00, 0x02, +0x10, 0x50, 0x00, 0x0e, 0x06, 0x28, 0x06, 0x29, +0x06, 0x2a, 0x06, 0x2b, 0x06, 0x2c, 0x06, 0x2d, +0x06, 0x2e, 0x06, 0x2f, 0x06, 0x30, 0x06, 0x31, +0x06, 0x34, 0x06, 0x35, 0x06, 0x32, 0x06, 0x33, +0x00, 0x02, 0x10, 0xa8, 0x00, 0x04, 0x06, 0xa2, +0x06, 0xa3, 0x06, 0xa4, 0x06, 0xa5, 0x00, 0x02, +0x10, 0x20, 0x00, 0x0e, 0x06, 0x36, 0x06, 0x37, +0x06, 0x38, 0x06, 0x39, 0x06, 0x3a, 0x06, 0x3b, +0x06, 0x3c, 0x06, 0x3d, 0x06, 0x3e, 0x06, 0x3f, +0x06, 0x42, 0x06, 0x43, 0x06, 0x40, 0x06, 0x41, +0x00, 0x02, 0x10, 0x84, 0x00, 0x14, 0x04, 0x4d, +0x04, 0x4e, 0x04, 0x4f, 0x04, 0x50, 0x04, 0x51, +0x04, 0x52, 0x04, 0x53, 0x04, 0x54, 0x04, 0x55, +0x04, 0x56, 0x04, 0x63, 0x04, 0x64, 0x04, 0x65, +0x04, 0x66, 0x04, 0x67, 0x04, 0x68, 0x04, 0x69, +0x04, 0x6a, 0x04, 0x6b, 0x04, 0x6c, 0x00, 0x02, +0x10, 0x66, 0x00, 0x14, 0x04, 0x59, 0x04, 0x5a, +0x04, 0x5b, 0x04, 0x5c, 0x04, 0x5d, 0x04, 0x5e, +0x04, 0x5f, 0x04, 0x60, 0x04, 0x61, 0x04, 0x62, +0x04, 0x63, 0x04, 0x64, 0x04, 0x65, 0x04, 0x66, +0x04, 0x67, 0x04, 0x68, 0x04, 0x69, 0x04, 0x6a, +0x04, 0x6b, 0x04, 0x6c, 0x00, 0x00, 0x01, 0x00, +0x00, 0x01, 0x10, 0x44, 0x00, 0x0b, 0x00, 0x01, +0x10, 0x3e, 0x00, 0x0a, 0x00, 0x02, 0x10, 0x40, +0x00, 0x32, 0x03, 0x69, 0x04, 0x41, 0x04, 0x42, +0x04, 0x43, 0x04, 0x44, 0x04, 0x45, 0x04, 0x46, +0x04, 0x47, 0x04, 0x48, 0x04, 0x49, 0x04, 0x4a, +0x04, 0x4d, 0x04, 0x4e, 0x04, 0x4f, 0x04, 0x50, +0x04, 0x51, 0x04, 0x52, 0x04, 0x53, 0x04, 0x54, +0x04, 0x55, 0x04, 0x56, 0x04, 0xc0, 0x07, 0x22, +0x07, 0x25, 0x07, 0x28, 0x07, 0x2a, 0x07, 0x2c, +0x07, 0x31, 0x07, 0x34, 0x07, 0x36, 0x07, 0x38, +0x07, 0x3a, 0x07, 0x3c, 0x07, 0x3e, 0x07, 0x41, +0x07, 0x57, 0x07, 0x59, 0x07, 0x6c, 0x07, 0x6f, +0x07, 0x73, 0x07, 0x75, 0x07, 0x77, 0x07, 0x79, +0x07, 0x7b, 0x07, 0x7d, 0x07, 0x7f, 0x07, 0x81, +0x07, 0x83, 0x07, 0x85, 0x07, 0x87, 0x00, 0x00, +0x01, 0x01, 0x00, 0x02, 0x10, 0x3a, 0x00, 0x0b, +0x02, 0x37, 0x02, 0x38, 0x02, 0x39, 0x02, 0x3a, +0x02, 0x3b, 0x02, 0x3c, 0x02, 0x3d, 0x02, 0x3e, +0x02, 0x3f, 0x06, 0xa1, 0x02, 0x40, 0x00, 0x01, +0x10, 0x38, 0x00, 0x07, 0x00, 0x01, 0x10, 0x38, +0xfe, 0x03, 0x00, 0x00, 0x01, 0x02, 0x00, 0x02, +0x10, 0x34, 0x00, 0x19, 0x02, 0x17, 0x02, 0x18, +0x02, 0x19, 0x02, 0x1a, 0x02, 0x1b, 0x02, 0x1c, +0x02, 0x1d, 0x02, 0x1e, 0x02, 0x1f, 0x02, 0x20, +0x02, 0x21, 0x02, 0x22, 0x02, 0x23, 0x02, 0x24, +0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, +0x02, 0x29, 0x02, 0x2a, 0x02, 0x2b, 0x02, 0x2c, +0x02, 0x2d, 0x06, 0x61, 0x06, 0x9f, 0x00, 0x01, +0x10, 0x18, 0x00, 0x18, 0x00, 0x00, 0x01, 0x03, +0x00, 0x02, 0x10, 0x14, 0x00, 0x0a, 0x02, 0x2e, +0x02, 0x2f, 0x02, 0x30, 0x02, 0x31, 0x02, 0x32, +0x02, 0x33, 0x02, 0x34, 0x02, 0x35, 0x02, 0x36, +0x06, 0xa0, 0x00, 0x01, 0x10, 0x10, 0x00, 0x13, +0x00, 0x00, 0x01, 0x04, 0x00, 0x02, 0x10, 0x0c, +0x00, 0x0d, 0x02, 0x09, 0x02, 0x0a, 0x02, 0x0b, +0x02, 0x0c, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0x0f, +0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x02, 0x13, +0x02, 0x14, 0x02, 0x15, 0x00, 0x02, 0x0f, 0xfc, +0x00, 0x03, 0x02, 0x09, 0x02, 0x15, 0x02, 0x0f, +0x00, 0x01, 0x0f, 0xfa, 0x00, 0x0b, 0x00, 0x1c, +0x00, 0x22, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x34, +0x00, 0x3a, 0x00, 0x40, 0x00, 0x46, 0x00, 0x4c, +0x00, 0x52, 0x00, 0x58, 0x00, 0x02, 0x03, 0x6d, +0x02, 0x09, 0x00, 0x02, 0x03, 0x80, 0x02, 0x09, +0x00, 0x02, 0x03, 0x81, 0x02, 0x09, 0x00, 0x02, +0x03, 0x82, 0x02, 0x09, 0x00, 0x02, 0x03, 0x6d, +0x02, 0x09, 0x00, 0x02, 0x03, 0x84, 0x02, 0x09, +0x00, 0x02, 0x03, 0x85, 0x02, 0x09, 0x00, 0x02, +0x03, 0x86, 0x02, 0x09, 0x00, 0x02, 0x03, 0x87, +0x02, 0x09, 0x00, 0x02, 0x03, 0x88, 0x02, 0x09, +0x00, 0x02, 0x03, 0x89, 0x02, 0x09, 0x00, 0x01, +0x0f, 0xac, 0x00, 0x01, 0x00, 0x01, 0x0f, 0xae, +0x00, 0x01, 0x00, 0x08, 0x00, 0x03, 0x00, 0x08, +0x00, 0x10, 0x00, 0x16, 0x02, 0x08, 0x00, 0x03, +0x00, 0x23, 0x00, 0x31, 0x02, 0x04, 0x00, 0x02, +0x00, 0x23, 0x02, 0x07, 0x00, 0x02, 0x00, 0x31, +0x00, 0x02, 0x0f, 0x90, 0x02, 0xac, 0x04, 0xdd, +0x04, 0xde, 0x04, 0xdf, 0x04, 0xe0, 0x04, 0xe1, +0x04, 0xe2, 0x04, 0xe3, 0x04, 0xe4, 0x04, 0xe5, +0x04, 0xe6, 0x04, 0xe7, 0x04, 0xe8, 0x04, 0xe9, +0x04, 0xea, 0x04, 0xeb, 0x04, 0xec, 0x04, 0xed, +0x04, 0xee, 0x04, 0xef, 0x04, 0xf0, 0x04, 0xf1, +0x04, 0xf2, 0x04, 0xf3, 0x04, 0xf4, 0x04, 0xf5, +0x04, 0xf6, 0x04, 0xf7, 0x04, 0xf8, 0x04, 0xf9, +0x04, 0xfa, 0x04, 0xfb, 0x04, 0xfc, 0x04, 0xfd, +0x04, 0xfe, 0x04, 0xff, 0x05, 0x00, 0x05, 0x01, +0x05, 0x02, 0x05, 0x03, 0x05, 0x04, 0x05, 0x05, +0x05, 0x06, 0x05, 0x07, 0x05, 0x08, 0x05, 0x09, +0x05, 0x0a, 0x05, 0x0b, 0x05, 0x0c, 0x05, 0x0d, +0x05, 0x0e, 0x05, 0x0f, 0x05, 0x10, 0x05, 0x11, +0x05, 0x12, 0x05, 0x13, 0x05, 0x14, 0x05, 0x15, +0x05, 0x16, 0x05, 0x17, 0x05, 0x18, 0x05, 0x19, +0x05, 0x1a, 0x05, 0x1b, 0x05, 0x1c, 0x05, 0x1d, +0x05, 0x1e, 0x05, 0x1f, 0x05, 0x2c, 0x05, 0x2d, +0x05, 0x2e, 0x05, 0x2f, 0x05, 0x30, 0x05, 0x31, +0x05, 0x32, 0x05, 0x33, 0x05, 0x34, 0x05, 0x35, +0x05, 0x36, 0x05, 0x37, 0x05, 0x38, 0x05, 0x39, +0x05, 0x3a, 0x05, 0x3b, 0x05, 0x3c, 0x05, 0x3d, +0x05, 0x3e, 0x05, 0x3f, 0x05, 0x40, 0x05, 0x41, +0x05, 0x42, 0x05, 0x43, 0x05, 0x44, 0x05, 0x45, +0x05, 0x46, 0x05, 0x47, 0x05, 0x48, 0x05, 0x49, +0x05, 0x4a, 0x05, 0x4b, 0x05, 0x4c, 0x05, 0x4d, +0x05, 0x4e, 0x05, 0x4f, 0x05, 0x50, 0x05, 0x51, +0x05, 0x5b, 0x05, 0x5c, 0x05, 0x52, 0x05, 0x53, +0x05, 0x54, 0x05, 0x55, 0x05, 0x56, 0x05, 0x57, +0x05, 0x58, 0x05, 0x59, 0x05, 0x5a, 0x05, 0x5d, +0x05, 0x5f, 0x05, 0x5e, 0x05, 0x60, 0x05, 0x61, +0x05, 0x62, 0x05, 0x63, 0x05, 0x64, 0x05, 0x65, +0x05, 0x66, 0x05, 0x67, 0x05, 0x68, 0x05, 0x69, +0x05, 0x6a, 0x05, 0x6c, 0x05, 0x6d, 0x05, 0x6e, +0x05, 0x6f, 0x05, 0x70, 0x05, 0x71, 0x05, 0x72, +0x05, 0x73, 0x05, 0x74, 0x05, 0x75, 0x05, 0x76, +0x05, 0x77, 0x05, 0x78, 0x05, 0x79, 0x05, 0x7a, +0x05, 0x7b, 0x05, 0x7c, 0x05, 0x7d, 0x05, 0x7e, +0x05, 0x7f, 0x05, 0x80, 0x05, 0x81, 0x05, 0x82, +0x05, 0x83, 0x05, 0x84, 0x05, 0x85, 0x05, 0x86, +0x05, 0x87, 0x05, 0x88, 0x05, 0x89, 0x05, 0x8a, +0x05, 0x8b, 0x05, 0x8c, 0x05, 0x8d, 0x05, 0x8e, +0x05, 0x8f, 0x05, 0x90, 0x05, 0x91, 0x05, 0x92, +0x05, 0x93, 0x05, 0x94, 0x05, 0x95, 0x05, 0x96, +0x05, 0x97, 0x05, 0x98, 0x05, 0x99, 0x05, 0x9a, +0x05, 0x9b, 0x05, 0x9c, 0x05, 0x9d, 0x05, 0x9f, +0x04, 0xf3, 0x04, 0xf4, 0x04, 0xf5, 0x04, 0xf6, +0x04, 0xf7, 0x04, 0xf8, 0x04, 0xf9, 0x04, 0xfa, +0x04, 0xfb, 0x04, 0xfc, 0x04, 0xfd, 0x04, 0xfe, +0x04, 0xff, 0x05, 0x00, 0x05, 0x03, 0x05, 0x04, +0x05, 0x05, 0x05, 0x06, 0x05, 0x07, 0x05, 0x08, +0x05, 0x09, 0x05, 0x0a, 0x05, 0x0b, 0x05, 0x0c, +0x05, 0x0d, 0x05, 0x0e, 0x05, 0x0f, 0x05, 0x10, +0x05, 0x11, 0x05, 0x12, 0x05, 0x1c, 0x05, 0x1d, +0x05, 0x1e, 0x05, 0x1f, 0x05, 0x20, 0x05, 0x21, +0x05, 0x22, 0x05, 0x23, 0x05, 0x24, 0x05, 0x25, +0x05, 0x27, 0x05, 0x28, 0x05, 0x29, 0x05, 0x2a, +0x05, 0x2a, 0x05, 0x2b, 0x05, 0x2c, 0x05, 0x2d, +0x05, 0x2e, 0x05, 0x2f, 0x05, 0x38, 0x05, 0x39, +0x05, 0x3a, 0x05, 0x3b, 0x05, 0x3c, 0x05, 0x3d, +0x05, 0x3e, 0x05, 0x3f, 0x05, 0x40, 0x05, 0x41, +0x05, 0x42, 0x05, 0x43, 0x05, 0x44, 0x05, 0x45, +0x05, 0x46, 0x05, 0x47, 0x05, 0x48, 0x05, 0x49, +0x05, 0x4a, 0x05, 0x4b, 0x05, 0x4c, 0x05, 0x4d, +0x05, 0x4e, 0x05, 0x4f, 0x05, 0x50, 0x05, 0x51, +0x05, 0x5b, 0x05, 0x5c, 0x05, 0x52, 0x05, 0x53, +0x05, 0x54, 0x05, 0x55, 0x05, 0x56, 0x05, 0x57, +0x05, 0x58, 0x05, 0x59, 0x05, 0x5a, 0x05, 0x5d, +0x05, 0x60, 0x05, 0x5f, 0x05, 0x5e, 0x05, 0x61, +0x05, 0x62, 0x05, 0x63, 0x05, 0x64, 0x05, 0x65, +0x05, 0x66, 0x05, 0x67, 0x05, 0x68, 0x05, 0x69, +0x05, 0x6a, 0x05, 0x6c, 0x05, 0x6d, 0x05, 0x6e, +0x05, 0x6f, 0x05, 0x70, 0x05, 0x71, 0x05, 0x72, +0x05, 0x73, 0x05, 0x74, 0x05, 0x75, 0x05, 0x76, +0x05, 0x77, 0x05, 0x78, 0x05, 0x79, 0x05, 0x7a, +0x05, 0x7b, 0x05, 0x7c, 0x05, 0x7d, 0x05, 0x7e, +0x05, 0x7f, 0x05, 0x80, 0x05, 0x81, 0x05, 0x82, +0x05, 0x83, 0x05, 0x84, 0x05, 0x85, 0x05, 0x86, +0x05, 0x87, 0x05, 0x88, 0x05, 0x89, 0x05, 0x8a, +0x05, 0x8b, 0x05, 0x8c, 0x05, 0x8d, 0x05, 0x8e, +0x05, 0x8f, 0x05, 0x90, 0x05, 0x91, 0x05, 0x92, +0x05, 0x93, 0x05, 0x94, 0x05, 0x95, 0x05, 0x96, +0x05, 0x97, 0x05, 0x98, 0x05, 0x99, 0x05, 0x9a, +0x05, 0x9b, 0x05, 0x9c, 0x05, 0x9e, 0x05, 0x9f, +0x05, 0x1b, 0x05, 0xa1, 0x05, 0xa2, 0x05, 0xa3, +0x05, 0xa4, 0x05, 0xa5, 0x05, 0xa6, 0x05, 0xa7, +0x05, 0xa8, 0x05, 0xaa, 0x05, 0xab, 0x05, 0xac, +0x05, 0xad, 0x05, 0xae, 0x05, 0xaf, 0x05, 0xb0, +0x05, 0xb1, 0x05, 0xb2, 0x05, 0xb3, 0x05, 0xb4, +0x05, 0xb5, 0x05, 0xb6, 0x05, 0xb7, 0x05, 0xb8, +0x05, 0xa1, 0x05, 0xa5, 0x05, 0xa7, 0x05, 0xa9, +0x05, 0xb9, 0x05, 0xaf, 0x05, 0xb4, 0x05, 0xba, +0x05, 0xb8, 0x02, 0x7b, 0x02, 0x7c, 0x02, 0x7d, +0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, +0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, +0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, +0x05, 0xa5, 0x05, 0xa5, 0x05, 0xa5, 0x05, 0xa5, +0x05, 0xa5, 0x05, 0xa5, 0x05, 0xa5, 0x05, 0xa5, +0x05, 0xa7, 0x05, 0xa7, 0x05, 0xa7, 0x05, 0xa7, +0x05, 0xa7, 0x05, 0xa7, 0x05, 0xa7, 0x05, 0xa7, +0x05, 0xa7, 0x05, 0xa7, 0x05, 0xa9, 0x05, 0xa9, +0x05, 0xa9, 0x05, 0xa9, 0x05, 0xa9, 0x05, 0xa9, +0x05, 0xa9, 0x05, 0xa9, 0x05, 0xa9, 0x05, 0xa9, +0x05, 0xaf, 0x05, 0xaf, 0x05, 0xaf, 0x05, 0xaf, +0x05, 0xaf, 0x05, 0xaf, 0x05, 0xaf, 0x05, 0xaf, +0x05, 0xb1, 0x05, 0xb4, 0x05, 0xb4, 0x05, 0xb4, +0x05, 0xb4, 0x05, 0xb4, 0x05, 0xb4, 0x05, 0xb4, +0x05, 0xb4, 0x05, 0xb8, 0x05, 0xb8, 0x05, 0xb8, +0x05, 0xb8, 0x05, 0xb8, 0x05, 0xb8, 0x05, 0xb8, +0x05, 0xb8, 0x05, 0xb8, 0x05, 0xb8, 0x05, 0xbb, +0x05, 0xbb, 0x05, 0xbb, 0x05, 0xbb, 0x05, 0xbb, +0x05, 0xbb, 0x05, 0xbb, 0x05, 0xbb, 0x05, 0xbb, +0x05, 0xbc, 0x05, 0xbc, 0x05, 0xbc, 0x05, 0xbc, +0x05, 0xbc, 0x05, 0xbc, 0x05, 0xbc, 0x05, 0xbc, +0x05, 0xbc, 0x05, 0xbd, 0x05, 0xbd, 0x05, 0xbd, +0x05, 0xbd, 0x05, 0xbd, 0x05, 0xbd, 0x05, 0xbd, +0x05, 0xbd, 0x05, 0xbd, 0x03, 0x69, 0x05, 0xbe, +0x05, 0xbf, 0x05, 0xc0, 0x05, 0xc1, 0x05, 0xc2, +0x05, 0xc3, 0x05, 0xc4, 0x05, 0xc5, 0x05, 0xc6, +0x05, 0xc7, 0x05, 0xc8, 0x05, 0xc9, 0x05, 0xca, +0x05, 0xcb, 0x05, 0xcc, 0x05, 0xcd, 0x05, 0xce, +0x05, 0xcf, 0x05, 0xd0, 0x05, 0xd1, 0x05, 0xd2, +0x05, 0xd3, 0x05, 0xd4, 0x05, 0xd5, 0x05, 0xd6, +0x05, 0xd7, 0x05, 0xd8, 0x05, 0xd9, 0x05, 0xda, +0x05, 0xdb, 0x05, 0xdc, 0x05, 0xdd, 0x05, 0xde, +0x05, 0xdf, 0x05, 0xe0, 0x05, 0xe1, 0x05, 0xe2, +0x05, 0xe3, 0x05, 0xe4, 0x05, 0xe5, 0x05, 0xe7, +0x05, 0xe8, 0x05, 0xe9, 0x05, 0xea, 0x05, 0xeb, +0x05, 0xec, 0x05, 0xed, 0x05, 0xee, 0x05, 0xef, +0x05, 0xf0, 0x05, 0xf1, 0x05, 0xf2, 0x05, 0xf3, +0x05, 0xf4, 0x05, 0xf5, 0x05, 0xf6, 0x05, 0xf7, +0x05, 0xf8, 0x05, 0xf9, 0x05, 0xfa, 0x05, 0xfb, +0x05, 0xfc, 0x05, 0xfd, 0x05, 0xfe, 0x05, 0xff, +0x06, 0x00, 0x06, 0x01, 0x06, 0x02, 0x06, 0x03, +0x06, 0x04, 0x06, 0x05, 0x06, 0x06, 0x06, 0x07, +0x06, 0x08, 0x06, 0x09, 0x05, 0xbe, 0x05, 0xc0, +0x05, 0xc1, 0x05, 0xc2, 0x05, 0xc3, 0x05, 0xc4, +0x05, 0xc5, 0x05, 0xc6, 0x05, 0xc7, 0x05, 0xc8, +0x05, 0xc9, 0x05, 0xca, 0x05, 0xcb, 0x05, 0xcc, +0x05, 0xcd, 0x05, 0xce, 0x05, 0xcf, 0x05, 0xd0, +0x05, 0xd1, 0x05, 0xd2, 0x05, 0xd3, 0x05, 0xd4, +0x05, 0xd5, 0x05, 0xd6, 0x05, 0xd7, 0x05, 0xd8, +0x05, 0xd9, 0x05, 0xda, 0x05, 0xdb, 0x05, 0xdc, +0x05, 0xdd, 0x05, 0xde, 0x05, 0xdf, 0x05, 0xe0, +0x05, 0xe1, 0x05, 0xe2, 0x05, 0xe3, 0x05, 0xe4, +0x05, 0xe5, 0x05, 0xe7, 0x05, 0xe8, 0x05, 0xe9, +0x05, 0xea, 0x05, 0xeb, 0x05, 0xec, 0x05, 0xed, +0x05, 0xee, 0x05, 0xef, 0x05, 0xf0, 0x05, 0xf1, +0x05, 0xf2, 0x05, 0xf3, 0x05, 0xf4, 0x05, 0xf5, +0x05, 0xf6, 0x05, 0xf7, 0x05, 0xf8, 0x05, 0xf9, +0x05, 0xfa, 0x05, 0xfb, 0x05, 0xfc, 0x05, 0xfd, +0x05, 0xfe, 0x06, 0x00, 0x06, 0x01, 0x06, 0x02, +0x06, 0x03, 0x06, 0x04, 0x06, 0x05, 0x06, 0x06, +0x06, 0x07, 0x06, 0x08, 0x06, 0x09, 0x05, 0xbf, +0x06, 0x0a, 0x04, 0x4c, 0x04, 0x64, 0x04, 0x65, +0x04, 0x66, 0x04, 0x67, 0x04, 0x68, 0x04, 0x69, +0x04, 0x6a, 0x04, 0x6b, 0x04, 0x6c, 0x04, 0x58, +0x04, 0x4e, 0x04, 0x4f, 0x04, 0x50, 0x04, 0x51, +0x04, 0x52, 0x04, 0x53, 0x04, 0x54, 0x04, 0x55, +0x04, 0x56, 0x06, 0xa2, 0x06, 0x15, 0x06, 0x16, +0x06, 0x17, 0x04, 0x7f, 0x06, 0x19, 0x06, 0x1a, +0x06, 0x1b, 0x06, 0x1c, 0x06, 0x1d, 0x06, 0x1e, +0x06, 0x24, 0x06, 0x25, 0x06, 0x26, 0x06, 0x27, +0x04, 0xc0, 0x05, 0x26, 0x06, 0x61, 0x06, 0x9f, +0x06, 0xa0, 0x06, 0xa1, 0x07, 0x28, 0x07, 0x2a, +0x07, 0x2c, 0x07, 0x32, 0x07, 0x34, 0x07, 0x36, +0x07, 0x38, 0x07, 0x3a, 0x07, 0x3c, 0x07, 0x3e, +0x07, 0x41, 0x07, 0x45, 0x07, 0x47, 0x07, 0x57, +0x07, 0x59, 0x07, 0x6c, 0x07, 0x6f, 0x07, 0x73, +0x07, 0x75, 0x07, 0x77, 0x07, 0x79, 0x07, 0x7b, +0x07, 0x7d, 0x07, 0x7f, 0x07, 0x81, 0x07, 0x83, +0x07, 0x85, 0x07, 0x87, 0x02, 0x40, 0x00, 0x01, +0x0c, 0x1c, 0x00, 0x8f, 0x01, 0x24, 0x01, 0x2a, +0x01, 0x30, 0x01, 0x36, 0x01, 0x3c, 0x01, 0x42, +0x01, 0x48, 0x01, 0x4e, 0x01, 0x54, 0x01, 0x5c, +0x01, 0x62, 0x01, 0x68, 0x01, 0x6e, 0x01, 0x74, +0x01, 0x7a, 0x01, 0x80, 0x01, 0x86, 0x01, 0x8c, +0x01, 0x92, 0x01, 0x98, 0x01, 0x9e, 0x01, 0xa4, +0x01, 0xaa, 0x01, 0xb0, 0x01, 0xb6, 0x01, 0xbc, +0x01, 0xc2, 0x01, 0xca, 0x01, 0xd0, 0x01, 0xd6, +0x01, 0xdc, 0x01, 0xe2, 0x01, 0xe8, 0x01, 0xf0, +0x01, 0xf6, 0x01, 0xfe, 0x02, 0x04, 0x02, 0x0a, +0x02, 0x12, 0x02, 0x18, 0x02, 0x1e, 0x02, 0x24, +0x02, 0x2a, 0x02, 0x30, 0x02, 0x36, 0x02, 0x3c, +0x02, 0x42, 0x02, 0x48, 0x02, 0x4e, 0x02, 0x54, +0x02, 0x5a, 0x02, 0x60, 0x02, 0x66, 0x02, 0x6c, +0x02, 0x72, 0x02, 0x78, 0x02, 0x7e, 0x02, 0x84, +0x02, 0x8a, 0x02, 0x90, 0x02, 0x96, 0x02, 0x9c, +0x02, 0xa2, 0x02, 0xa8, 0x02, 0xae, 0x02, 0xb4, +0x02, 0xba, 0x02, 0xc0, 0x02, 0xc6, 0x02, 0xcc, +0x02, 0xd2, 0x02, 0xd8, 0x02, 0xde, 0x02, 0xe4, +0x02, 0xea, 0x02, 0xf0, 0x02, 0xf6, 0x02, 0xfc, +0x03, 0x02, 0x03, 0x08, 0x03, 0x0e, 0x03, 0x14, +0x03, 0x1a, 0x03, 0x20, 0x03, 0x26, 0x03, 0x2c, +0x03, 0x32, 0x03, 0x38, 0x03, 0x3e, 0x03, 0x44, +0x03, 0x4a, 0x03, 0x50, 0x03, 0x56, 0x03, 0x5c, +0x03, 0x62, 0x03, 0x68, 0x03, 0x6e, 0x03, 0x74, +0x03, 0x7a, 0x03, 0x80, 0x03, 0x86, 0x03, 0x8c, +0x03, 0x92, 0x03, 0x98, 0x03, 0x9e, 0x03, 0xa4, +0x03, 0xaa, 0x03, 0xb0, 0x03, 0xb6, 0x03, 0xbc, +0x03, 0xc2, 0x03, 0xc8, 0x03, 0xdc, 0x03, 0xec, +0x03, 0xfc, 0x04, 0x0c, 0x04, 0x1c, 0x04, 0x2c, +0x04, 0x3c, 0x04, 0x4c, 0x04, 0x5c, 0x04, 0x6c, +0x04, 0x74, 0x04, 0x7a, 0x04, 0x80, 0x04, 0x86, +0x04, 0x8c, 0x04, 0x92, 0x04, 0x98, 0x04, 0x9e, +0x04, 0xa4, 0x04, 0xaa, 0x04, 0xb0, 0x04, 0xb4, +0x04, 0xbe, 0x04, 0xc8, 0x04, 0xce, 0x04, 0xd4, +0x04, 0xda, 0x04, 0xe6, 0x04, 0xf2, 0x04, 0xf8, +0x04, 0xfe, 0x00, 0x02, 0x04, 0xc3, 0x06, 0x63, +0x00, 0x02, 0x04, 0xc4, 0x06, 0x64, 0x00, 0x02, +0x04, 0xc5, 0x06, 0x65, 0x00, 0x02, 0x04, 0xc6, +0x06, 0x66, 0x00, 0x02, 0x04, 0xc7, 0x06, 0x67, +0x00, 0x02, 0x04, 0xc8, 0x06, 0x68, 0x00, 0x02, +0x04, 0xc9, 0x06, 0x69, 0x00, 0x02, 0x04, 0xca, +0x06, 0x6a, 0x00, 0x03, 0x04, 0xcb, 0x06, 0x6b, +0x02, 0x09, 0x00, 0x02, 0x04, 0xcc, 0x06, 0x6c, +0x00, 0x02, 0x04, 0xcd, 0x06, 0x6d, 0x00, 0x02, +0x04, 0xce, 0x06, 0x6e, 0x00, 0x02, 0x04, 0xcf, +0x06, 0x6f, 0x00, 0x02, 0x04, 0xd0, 0x06, 0x70, +0x00, 0x02, 0x04, 0xd1, 0x06, 0x71, 0x00, 0x02, +0x04, 0xd2, 0x06, 0x72, 0x00, 0x02, 0x04, 0xd3, +0x06, 0x73, 0x00, 0x02, 0x04, 0xd4, 0x06, 0x74, +0x00, 0x02, 0x04, 0xd5, 0x06, 0x75, 0x00, 0x02, +0x04, 0xd6, 0x06, 0x76, 0x00, 0x02, 0x04, 0xd7, +0x06, 0x77, 0x00, 0x02, 0x04, 0xd8, 0x06, 0x78, +0x00, 0x02, 0x04, 0xd9, 0x06, 0x79, 0x00, 0x02, +0x04, 0xda, 0x06, 0x7a, 0x00, 0x02, 0x04, 0xdb, +0x06, 0x7b, 0x00, 0x02, 0x04, 0xdc, 0x06, 0x7c, +0x00, 0x03, 0x04, 0xc3, 0x06, 0x7d, 0x02, 0x17, +0x00, 0x02, 0x04, 0xc4, 0x06, 0x7e, 0x00, 0x02, +0x04, 0xc5, 0x06, 0x7f, 0x00, 0x02, 0x04, 0xc6, +0x06, 0x80, 0x00, 0x02, 0x04, 0xc7, 0x06, 0x81, +0x00, 0x02, 0x04, 0xc8, 0x06, 0x82, 0x00, 0x03, +0x04, 0xc9, 0x06, 0x83, 0x02, 0x2e, 0x00, 0x02, +0x04, 0xca, 0x06, 0x84, 0x00, 0x03, 0x04, 0xc2, +0x04, 0xcb, 0x06, 0x85, 0x00, 0x02, 0x04, 0xcc, +0x06, 0x86, 0x00, 0x02, 0x04, 0xcd, 0x06, 0x87, +0x00, 0x03, 0x04, 0xce, 0x06, 0x88, 0x02, 0x37, +0x00, 0x02, 0x04, 0xcf, 0x06, 0x89, 0x00, 0x02, +0x04, 0xd0, 0x06, 0x8a, 0x00, 0x02, 0x04, 0xd1, +0x06, 0x8b, 0x00, 0x02, 0x04, 0xd2, 0x06, 0x8c, +0x00, 0x02, 0x04, 0xd3, 0x06, 0x8d, 0x00, 0x02, +0x04, 0xd4, 0x06, 0x8e, 0x00, 0x02, 0x04, 0xd5, +0x06, 0x8f, 0x00, 0x02, 0x04, 0xd6, 0x06, 0x90, +0x00, 0x02, 0x04, 0xd7, 0x06, 0x91, 0x00, 0x02, +0x04, 0xd8, 0x06, 0x92, 0x00, 0x02, 0x04, 0xd9, +0x06, 0x93, 0x00, 0x02, 0x04, 0xda, 0x06, 0x94, +0x00, 0x02, 0x04, 0xdb, 0x06, 0x95, 0x00, 0x02, +0x04, 0xdc, 0x06, 0x96, 0x00, 0x02, 0x05, 0x20, +0x02, 0x0a, 0x00, 0x02, 0x05, 0x21, 0x02, 0x0b, +0x00, 0x02, 0x05, 0x22, 0x02, 0x0c, 0x00, 0x02, +0x05, 0x23, 0x02, 0x0d, 0x00, 0x02, 0x05, 0x24, +0x02, 0x0e, 0x00, 0x02, 0x05, 0x25, 0x02, 0x0f, +0x00, 0x02, 0x05, 0x26, 0x02, 0x10, 0x00, 0x02, +0x05, 0x27, 0x02, 0x11, 0x00, 0x02, 0x05, 0x28, +0x02, 0x12, 0x00, 0x02, 0x05, 0x29, 0x02, 0x13, +0x00, 0x02, 0x05, 0x2a, 0x02, 0x14, 0x00, 0x02, +0x05, 0x2b, 0x02, 0x15, 0x00, 0x02, 0x02, 0x16, +0x05, 0x9e, 0x00, 0x02, 0x04, 0xdd, 0x02, 0x18, +0x00, 0x02, 0x04, 0xde, 0x02, 0x19, 0x00, 0x02, +0x04, 0xdf, 0x02, 0x1a, 0x00, 0x02, 0x04, 0xe0, +0x02, 0x1b, 0x00, 0x02, 0x04, 0xe1, 0x02, 0x1c, +0x00, 0x02, 0x04, 0xe2, 0x02, 0x1d, 0x00, 0x02, +0x04, 0xe3, 0x02, 0x1e, 0x00, 0x02, 0x04, 0xe4, +0x02, 0x1f, 0x00, 0x02, 0x04, 0xe5, 0x02, 0x20, +0x00, 0x02, 0x04, 0xe6, 0x02, 0x21, 0x00, 0x02, +0x04, 0xe7, 0x02, 0x22, 0x00, 0x02, 0x04, 0xe8, +0x02, 0x23, 0x00, 0x02, 0x04, 0xe9, 0x02, 0x24, +0x00, 0x02, 0x04, 0xea, 0x02, 0x25, 0x00, 0x02, +0x04, 0xeb, 0x02, 0x26, 0x00, 0x02, 0x04, 0xec, +0x02, 0x27, 0x00, 0x02, 0x04, 0xed, 0x02, 0x28, +0x00, 0x02, 0x04, 0xee, 0x02, 0x29, 0x00, 0x02, +0x04, 0xef, 0x02, 0x2a, 0x00, 0x02, 0x04, 0xf0, +0x02, 0x2b, 0x00, 0x02, 0x04, 0xf1, 0x02, 0x2c, +0x00, 0x02, 0x04, 0xf2, 0x02, 0x2d, 0x00, 0x02, +0x05, 0x01, 0x06, 0x9c, 0x00, 0x02, 0x05, 0x02, +0x06, 0x9d, 0x00, 0x02, 0x05, 0x13, 0x02, 0x2f, +0x00, 0x02, 0x05, 0x14, 0x02, 0x30, 0x00, 0x02, +0x05, 0x15, 0x02, 0x31, 0x00, 0x02, 0x05, 0x16, +0x02, 0x32, 0x00, 0x02, 0x05, 0x17, 0x02, 0x33, +0x00, 0x02, 0x05, 0x18, 0x02, 0x34, 0x00, 0x02, +0x05, 0x19, 0x02, 0x35, 0x00, 0x02, 0x05, 0x1a, +0x02, 0x36, 0x00, 0x02, 0x05, 0x30, 0x02, 0x38, +0x00, 0x02, 0x05, 0x31, 0x02, 0x39, 0x00, 0x02, +0x05, 0x33, 0x02, 0x3a, 0x00, 0x02, 0x05, 0x32, +0x02, 0x3b, 0x00, 0x02, 0x05, 0x34, 0x02, 0x3c, +0x00, 0x02, 0x05, 0x35, 0x02, 0x3d, 0x00, 0x02, +0x05, 0x36, 0x02, 0x3e, 0x00, 0x02, 0x05, 0x37, +0x02, 0x3f, 0x00, 0x02, 0x05, 0x9d, 0x06, 0x9e, +0x00, 0x02, 0x05, 0xa9, 0x02, 0x09, 0x00, 0x02, +0x05, 0xa9, 0x02, 0x15, 0x00, 0x02, 0x05, 0xa9, +0x02, 0x0f, 0x00, 0x02, 0x04, 0x3e, 0x05, 0xbf, +0x00, 0x02, 0x05, 0xff, 0x02, 0x37, 0x00, 0x09, +0x06, 0x0b, 0x06, 0x52, 0x06, 0x44, 0x06, 0x28, +0x06, 0x36, 0x04, 0x4d, 0x04, 0x59, 0x04, 0x4c, +0x04, 0x4b, 0x00, 0x07, 0x06, 0x0c, 0x06, 0x53, +0x06, 0x45, 0x06, 0x29, 0x06, 0x37, 0x04, 0x4e, +0x04, 0x5a, 0x00, 0x07, 0x06, 0x0d, 0x06, 0x54, +0x06, 0x46, 0x06, 0x2a, 0x06, 0x38, 0x04, 0x4f, +0x04, 0x5b, 0x00, 0x07, 0x06, 0x0e, 0x06, 0x55, +0x06, 0x47, 0x06, 0x2b, 0x06, 0x39, 0x04, 0x50, +0x04, 0x5c, 0x00, 0x07, 0x06, 0x0f, 0x06, 0x56, +0x06, 0x48, 0x06, 0x2c, 0x06, 0x3a, 0x04, 0x51, +0x04, 0x5d, 0x00, 0x07, 0x06, 0x10, 0x06, 0x57, +0x06, 0x49, 0x06, 0x2d, 0x06, 0x3b, 0x04, 0x52, +0x04, 0x5e, 0x00, 0x07, 0x06, 0x11, 0x06, 0x58, +0x06, 0x4a, 0x06, 0x2e, 0x06, 0x3c, 0x04, 0x53, +0x04, 0x5f, 0x00, 0x07, 0x06, 0x12, 0x06, 0x59, +0x06, 0x4b, 0x06, 0x2f, 0x06, 0x3d, 0x04, 0x54, +0x04, 0x60, 0x00, 0x07, 0x06, 0x13, 0x06, 0x5a, +0x06, 0x4c, 0x06, 0x30, 0x06, 0x3e, 0x04, 0x55, +0x04, 0x61, 0x00, 0x07, 0x06, 0x14, 0x06, 0x5b, +0x06, 0x4d, 0x06, 0x31, 0x06, 0x3f, 0x04, 0x56, +0x04, 0x62, 0x00, 0x03, 0x04, 0x63, 0x04, 0x58, +0x04, 0x57, 0x00, 0x02, 0x04, 0x63, 0x04, 0x41, +0x00, 0x02, 0x04, 0x64, 0x04, 0x42, 0x00, 0x02, +0x04, 0x65, 0x04, 0x43, 0x00, 0x02, 0x04, 0x66, +0x04, 0x44, 0x00, 0x02, 0x04, 0x67, 0x04, 0x45, +0x00, 0x02, 0x04, 0x68, 0x04, 0x46, 0x00, 0x02, +0x04, 0x69, 0x04, 0x47, 0x00, 0x02, 0x04, 0x6a, +0x04, 0x48, 0x00, 0x02, 0x04, 0x6b, 0x04, 0x49, +0x00, 0x02, 0x04, 0x6c, 0x04, 0x4a, 0x00, 0x01, +0x04, 0x4d, 0x00, 0x04, 0x06, 0x5e, 0x06, 0x50, +0x06, 0x34, 0x06, 0x42, 0x00, 0x04, 0x06, 0x5f, +0x06, 0x51, 0x06, 0x35, 0x06, 0x43, 0x00, 0x02, +0x06, 0x1f, 0x06, 0xa3, 0x00, 0x02, 0x06, 0x20, +0x06, 0xa4, 0x00, 0x02, 0x06, 0x21, 0x06, 0xa5, +0x00, 0x05, 0x06, 0x22, 0x06, 0x5c, 0x06, 0x4e, +0x06, 0x32, 0x06, 0x40, 0x00, 0x05, 0x06, 0x23, +0x06, 0x5d, 0x06, 0x4f, 0x06, 0x33, 0x06, 0x41, +0x00, 0x02, 0x07, 0x23, 0x07, 0x22, 0x00, 0x02, +0x07, 0x26, 0x07, 0x25, 0x00, 0x02, 0x07, 0x30, +0x07, 0x31, 0x00, 0x01, 0x00, 0x78, 0x00, 0x01, +0x00, 0x08, 0x00, 0x01, 0x00, 0x04, 0x01, 0x47, +0x00, 0x02, 0x07, 0x58, 0x00, 0x02, 0x07, 0x8e, +0x00, 0x30, 0x07, 0x92, 0x01, 0x47, 0x03, 0xb6, +0x04, 0x10, 0x05, 0xe6, 0x06, 0x44, 0x06, 0x45, +0x06, 0x46, 0x06, 0x47, 0x06, 0x48, 0x06, 0x49, +0x06, 0x4a, 0x06, 0x4b, 0x06, 0x4c, 0x06, 0x4d, +0x06, 0x4e, 0x06, 0x4f, 0x06, 0x50, 0x06, 0x51, +0x07, 0x22, 0x07, 0x25, 0x07, 0x28, 0x07, 0x2a, +0x07, 0x2c, 0x07, 0x31, 0x07, 0x34, 0x07, 0x36, +0x07, 0x38, 0x07, 0x3a, 0x07, 0x3c, 0x07, 0x3e, +0x07, 0x41, 0x07, 0x57, 0x07, 0x59, 0x07, 0x6c, +0x07, 0x6f, 0x07, 0x73, 0x07, 0x75, 0x07, 0x77, +0x07, 0x79, 0x07, 0x7b, 0x07, 0x7d, 0x07, 0x7f, +0x07, 0x81, 0x07, 0x83, 0x07, 0x85, 0x07, 0x87, +0x07, 0x93, 0x00, 0x01, 0x00, 0x01, 0x00, 0x26, +0x00, 0x01, 0x00, 0x01, 0x00, 0xf8, 0x00, 0x01, +0x00, 0x04, 0x07, 0x21, 0x07, 0x24, 0x07, 0x44, +0x07, 0x46, 0x00, 0x01, 0x00, 0x02, 0x07, 0x2f, +0x07, 0x31, 0x00, 0x01, 0x00, 0x01, 0x03, 0xe5, +0x00, 0x01, 0x00, 0x0a, 0x00, 0x5e, 0x00, 0x61, +0x00, 0xa0, 0x00, 0xa3, 0x01, 0x20, 0x01, 0x23, +0x01, 0x65, 0x01, 0x68, 0x03, 0xb5, 0x04, 0x0f, +0x00, 0x01, 0x00, 0x04, 0x00, 0x5e, 0x00, 0xa0, +0x01, 0x20, 0x01, 0x65, 0x00, 0x01, 0x00, 0x01, +0x07, 0x2f, 0x00, 0x01, 0x00, 0x04, 0x00, 0x61, +0x00, 0xa3, 0x01, 0x23, 0x01, 0x68, 0x00, 0x01, +0x00, 0x01, 0x07, 0x24, 0x00, 0x01, 0x00, 0x02, +0x03, 0xb5, 0x04, 0x0f, 0x00, 0x01, 0x00, 0x01, +0x07, 0x58, 0x00, 0x01, 0x00, 0x01, 0x01, 0x46, +0x00, 0x01, 0x00, 0x05, 0x07, 0x27, 0x07, 0x2f, +0x07, 0x35, 0x07, 0x45, 0x07, 0x47, 0x00, 0x01, +0x00, 0x10, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0a, +0x00, 0x0c, 0x00, 0x12, 0x00, 0x18, 0x00, 0x1e, +0x00, 0x21, 0x00, 0x22, 0x00, 0x24, 0x00, 0x26, +0x00, 0x29, 0x00, 0x2c, 0x00, 0x31, 0x00, 0x32, +0x02, 0x2e, 0x00, 0x01, 0x00, 0x16, 0x02, 0x41, +0x02, 0x45, 0x02, 0x47, 0x02, 0x49, 0x02, 0x4f, +0x02, 0x51, 0x02, 0x54, 0x02, 0x58, 0x02, 0x62, +0x02, 0x66, 0x02, 0x68, 0x02, 0x6a, 0x02, 0x70, +0x02, 0x72, 0x02, 0x75, 0x02, 0x79, 0x02, 0xce, +0x02, 0xd7, 0x02, 0xe0, 0x03, 0x3e, 0x03, 0x4a, +0x03, 0x56, 0x00, 0x02, 0x00, 0x13, 0x00, 0x04, +0x00, 0x1d, 0x00, 0x00, 0x00, 0x38, 0x00, 0xc5, +0x00, 0x1a, 0x00, 0xc7, 0x00, 0xf9, 0x00, 0xa8, +0x02, 0x41, 0x02, 0x61, 0x00, 0xdb, 0x02, 0x89, +0x02, 0xe8, 0x00, 0xfc, 0x03, 0x8a, 0x03, 0x90, +0x01, 0x5c, 0x03, 0x93, 0x03, 0x96, 0x01, 0x63, +0x03, 0x99, 0x03, 0xb5, 0x01, 0x67, 0x03, 0xb7, +0x03, 0xbb, 0x01, 0x84, 0x03, 0xbe, 0x03, 0xc6, +0x01, 0x89, 0x03, 0xc9, 0x03, 0xca, 0x01, 0x92, +0x03, 0xcd, 0x03, 0xcd, 0x01, 0x94, 0x03, 0xd0, +0x03, 0xd8, 0x01, 0x95, 0x03, 0xdb, 0x03, 0xe3, +0x01, 0x9e, 0x04, 0xc3, 0x05, 0x6a, 0x01, 0xa7, +0x05, 0x6d, 0x05, 0x9f, 0x02, 0x4f, 0x05, 0xa1, +0x05, 0xba, 0x02, 0x82, 0x05, 0xbe, 0x05, 0xe5, +0x02, 0x9c, 0x05, 0xe7, 0x06, 0x09, 0x02, 0xc4, +0x00, 0x01, 0x00, 0x1c, 0x07, 0x21, 0x07, 0x24, +0x07, 0x27, 0x07, 0x29, 0x07, 0x2b, 0x07, 0x2f, +0x07, 0x33, 0x07, 0x35, 0x07, 0x37, 0x07, 0x39, +0x07, 0x3b, 0x07, 0x3d, 0x07, 0x40, 0x07, 0x56, +0x07, 0x58, 0x07, 0x6b, 0x07, 0x6e, 0x07, 0x72, +0x07, 0x74, 0x07, 0x76, 0x07, 0x78, 0x07, 0x7a, +0x07, 0x7c, 0x07, 0x7e, 0x07, 0x80, 0x07, 0x82, +0x07, 0x84, 0x07, 0x86, 0x00, 0x01, 0x00, 0x1c, +0x07, 0x22, 0x07, 0x25, 0x07, 0x28, 0x07, 0x2a, +0x07, 0x2c, 0x07, 0x31, 0x07, 0x34, 0x07, 0x36, +0x07, 0x38, 0x07, 0x3a, 0x07, 0x3c, 0x07, 0x3e, +0x07, 0x41, 0x07, 0x57, 0x07, 0x59, 0x07, 0x6c, +0x07, 0x6f, 0x07, 0x73, 0x07, 0x75, 0x07, 0x77, +0x07, 0x79, 0x07, 0x7b, 0x07, 0x7d, 0x07, 0x7f, +0x07, 0x81, 0x07, 0x83, 0x07, 0x85, 0x07, 0x87, +0x00, 0x01, 0x00, 0x01, 0x04, 0x0f, 0x00, 0x01, +0x00, 0x01, 0x03, 0xb5, 0x00, 0x01, 0x00, 0x01, +0x05, 0xe5, 0x00, 0x01, 0x00, 0x02, 0x04, 0x0e, +0x04, 0x10, 0x00, 0x01, 0x00, 0x01, 0x03, 0xb6, +0x00, 0x01, 0x00, 0x01, 0x05, 0xe6, 0x00, 0x02, +0x00, 0x02, 0x02, 0x62, 0x02, 0x7a, 0x00, 0x00, +0x02, 0x7e, 0x02, 0x88, 0x00, 0x19, 0x00, 0x02, +0x00, 0x01, 0x02, 0xe9, 0x03, 0x61, 0x00, 0x00, +0x00, 0x02, 0x00, 0x0d, 0x00, 0x04, 0x00, 0x1d, +0x00, 0x00, 0x00, 0x38, 0x00, 0xf9, 0x00, 0x1a, +0x02, 0x41, 0x02, 0x61, 0x00, 0xdc, 0x02, 0x89, +0x02, 0xe8, 0x00, 0xfd, 0x03, 0x8a, 0x03, 0x90, +0x01, 0x5d, 0x03, 0x93, 0x03, 0x96, 0x01, 0x64, +0x03, 0x99, 0x03, 0xb5, 0x01, 0x68, 0x03, 0xb7, +0x03, 0xbb, 0x01, 0x85, 0x03, 0xbe, 0x03, 0xc6, +0x01, 0x8a, 0x03, 0xc9, 0x03, 0xca, 0x01, 0x93, +0x03, 0xcd, 0x03, 0xcd, 0x01, 0x95, 0x03, 0xd0, +0x03, 0xd8, 0x01, 0x96, 0x03, 0xdb, 0x03, 0xe3, +0x01, 0x9f, 0x00, 0x02, 0x00, 0x01, 0x04, 0x41, +0x04, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05, +0x04, 0x40, 0x04, 0x40, 0x00, 0x00, 0x04, 0x7c, +0x04, 0x85, 0x00, 0x01, 0x04, 0x8c, 0x04, 0x8c, +0x00, 0x0b, 0x04, 0x8e, 0x04, 0x8f, 0x00, 0x0c, +0x04, 0x99, 0x04, 0x9e, 0x00, 0x0e, 0x00, 0x02, +0x00, 0x0b, 0x00, 0x1e, 0x00, 0x37, 0x00, 0x00, +0x00, 0xfa, 0x01, 0x39, 0x00, 0x1a, 0x01, 0x3b, +0x01, 0x48, 0x00, 0x5a, 0x01, 0x4a, 0x01, 0x4d, +0x00, 0x68, 0x01, 0x4f, 0x01, 0x61, 0x00, 0x6c, +0x01, 0x63, 0x01, 0x90, 0x00, 0x7f, 0x01, 0x92, +0x01, 0xbd, 0x00, 0xad, 0x01, 0xbf, 0x01, 0xbf, +0x00, 0xd9, 0x01, 0xca, 0x01, 0xca, 0x00, 0xda, +0x01, 0xd0, 0x01, 0xd0, 0x00, 0xdb, 0x04, 0xc2, +0x04, 0xc2, 0x00, 0xdc, 0x00, 0x02, 0x00, 0x09, +0x03, 0xe4, 0x03, 0xea, 0x00, 0x00, 0x03, 0xed, +0x03, 0xf0, 0x00, 0x07, 0x03, 0xf3, 0x04, 0x0f, +0x00, 0x0b, 0x04, 0x11, 0x04, 0x15, 0x00, 0x28, +0x04, 0x18, 0x04, 0x20, 0x00, 0x2d, 0x04, 0x23, +0x04, 0x24, 0x00, 0x36, 0x04, 0x27, 0x04, 0x27, +0x00, 0x38, 0x04, 0x2a, 0x04, 0x31, 0x00, 0x39, +0x04, 0x34, 0x04, 0x3e, 0x00, 0x41, 0x00, 0x02, +0x00, 0x03, 0x04, 0x41, 0x04, 0x4a, 0x00, 0x00, +0x04, 0x77, 0x04, 0x78, 0x00, 0x0a, 0x04, 0x99, +0x04, 0x9a, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, +0x04, 0x9f, 0x00, 0x02, 0x00, 0x01, 0x06, 0x52, +0x06, 0x5b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, +0x00, 0x03, 0x07, 0x90, 0x00, 0x02, 0x00, 0x02, +0x06, 0x44, 0x06, 0x51, 0x00, 0x00, 0x06, 0xbe, +0x06, 0xc0, 0x00, 0x0e, 0x00, 0x02, 0x00, 0x01, +0x06, 0x52, 0x06, 0x5f, 0x00, 0x00, 0x00, 0x02, +0x00, 0x01, 0x06, 0x44, 0x06, 0x4d, 0x00, 0x00, +0x00, 0x01, 0x00, 0x02, 0x07, 0x92, 0x07, 0x93, +0x00, 0x02, 0x00, 0x03, 0x00, 0x1e, 0x00, 0x37, +0x00, 0x00, 0x01, 0x1e, 0x01, 0x1f, 0x00, 0x1a, +0x01, 0xca, 0x01, 0xca, 0x00, 0x1c, 0x00, 0x02, +0x00, 0x01, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, +0x00, 0x01, 0x00, 0x04, 0x04, 0x79, 0x04, 0x8c, +0x04, 0x8e, 0x04, 0x8f, 0x00, 0x02, 0x00, 0x02, +0x04, 0x41, 0x04, 0x4a, 0x00, 0x00, 0x04, 0x59, +0x04, 0x62, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x02, +0x04, 0x41, 0x04, 0x4a, 0x00, 0x00, 0x04, 0x4d, +0x04, 0x56, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x02, +0x04, 0x41, 0x04, 0x4d, 0x00, 0x01, 0x00, 0x32, +0x03, 0x68, 0x04, 0x59, 0x04, 0x5a, 0x04, 0x5b, +0x04, 0x5c, 0x04, 0x5d, 0x04, 0x5e, 0x04, 0x5f, +0x04, 0x60, 0x04, 0x61, 0x04, 0x62, 0x04, 0x63, +0x04, 0x64, 0x04, 0x65, 0x04, 0x66, 0x04, 0x67, +0x04, 0x68, 0x04, 0x69, 0x04, 0x6a, 0x04, 0x6b, +0x04, 0x6c, 0x04, 0xbf, 0x07, 0x21, 0x07, 0x24, +0x07, 0x27, 0x07, 0x29, 0x07, 0x2b, 0x07, 0x2f, +0x07, 0x33, 0x07, 0x35, 0x07, 0x37, 0x07, 0x39, +0x07, 0x3b, 0x07, 0x3d, 0x07, 0x40, 0x07, 0x56, +0x07, 0x58, 0x07, 0x6b, 0x07, 0x6e, 0x07, 0x72, +0x07, 0x74, 0x07, 0x76, 0x07, 0x78, 0x07, 0x7a, +0x07, 0x7c, 0x07, 0x7e, 0x07, 0x80, 0x07, 0x82, +0x07, 0x84, 0x07, 0x86, 0x00, 0x01, 0x00, 0x0b, +0x00, 0x29, 0x01, 0x4f, 0x01, 0x50, 0x01, 0x51, +0x01, 0x52, 0x01, 0x53, 0x01, 0x54, 0x01, 0x55, +0x01, 0x56, 0x06, 0x88, 0x07, 0x97, 0x00, 0x01, +0x00, 0x01, 0x02, 0x76, 0x00, 0x01, 0x00, 0x01, +0x04, 0x34, 0x00, 0x02, 0x00, 0x04, 0x00, 0x1e, +0x00, 0x1e, 0x00, 0x00, 0x00, 0xfa, 0x01, 0x0f, +0x00, 0x01, 0x06, 0x60, 0x06, 0x60, 0x00, 0x17, +0x06, 0x7d, 0x06, 0x7d, 0x00, 0x18, 0x00, 0x01, +0x00, 0x01, 0x02, 0x63, 0x00, 0x02, 0x00, 0x03, +0x00, 0x24, 0x00, 0x24, 0x00, 0x00, 0x01, 0x30, +0x01, 0x37, 0x00, 0x01, 0x06, 0x83, 0x06, 0x83, +0x00, 0x09, 0x00, 0x01, 0x00, 0x01, 0x02, 0x69, +0x00, 0x02, 0x00, 0x02, 0x00, 0x0c, 0x00, 0x0c, +0x00, 0x00, 0x00, 0x7b, 0x00, 0x86, 0x00, 0x01, +0x00, 0x01, 0x00, 0x03, 0x02, 0x49, 0x02, 0xb1, +0x02, 0xb2, 0x00, 0x02, 0x00, 0x02, 0x02, 0x5c, +0x02, 0x5c, 0x00, 0x00, 0x02, 0xa7, 0x02, 0xb0, +0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x04, 0x4b, +0x04, 0x57, 0x00, 0x01, 0x00, 0x01, 0x00, 0x23, +0x00, 0x02, 0x00, 0x51, 0x00, 0x38, 0x00, 0x7a, +0x00, 0x00, 0x00, 0x87, 0x00, 0xf7, 0x00, 0x43, +0x00, 0xf9, 0x00, 0xf9, 0x00, 0xb4, 0x01, 0x10, +0x01, 0x1d, 0x00, 0xb5, 0x01, 0x20, 0x01, 0x2f, +0x00, 0xc3, 0x01, 0x38, 0x01, 0x39, 0x00, 0xd3, +0x01, 0x3b, 0x01, 0x48, 0x00, 0xd5, 0x01, 0x4a, +0x01, 0x4d, 0x00, 0xe3, 0x01, 0x57, 0x01, 0x61, +0x00, 0xe7, 0x01, 0x63, 0x01, 0x90, 0x00, 0xf2, +0x01, 0x92, 0x01, 0xbd, 0x01, 0x20, 0x01, 0xbf, +0x01, 0xbf, 0x01, 0x4c, 0x01, 0xd0, 0x01, 0xd0, +0x01, 0x4d, 0x02, 0x41, 0x02, 0x48, 0x01, 0x4e, +0x02, 0x4a, 0x02, 0x61, 0x01, 0x56, 0x02, 0x63, +0x02, 0x63, 0x01, 0x6e, 0x02, 0x69, 0x02, 0x69, +0x01, 0x6f, 0x02, 0x76, 0x02, 0x76, 0x01, 0x70, +0x02, 0x89, 0x02, 0xb0, 0x01, 0x71, 0x02, 0xb3, +0x02, 0xe8, 0x01, 0x99, 0x03, 0x68, 0x03, 0x68, +0x01, 0xcf, 0x03, 0x8a, 0x03, 0x90, 0x01, 0xd0, +0x03, 0x93, 0x03, 0x96, 0x01, 0xd7, 0x03, 0x99, +0x03, 0xb5, 0x01, 0xdb, 0x03, 0xb7, 0x03, 0xbb, +0x01, 0xf8, 0x03, 0xbe, 0x03, 0xc6, 0x01, 0xfd, +0x03, 0xc9, 0x03, 0xca, 0x02, 0x06, 0x03, 0xcd, +0x03, 0xcd, 0x02, 0x08, 0x03, 0xd0, 0x03, 0xd8, +0x02, 0x09, 0x03, 0xdb, 0x03, 0xe4, 0x02, 0x12, +0x03, 0xe6, 0x03, 0xea, 0x02, 0x1c, 0x03, 0xed, +0x03, 0xf0, 0x02, 0x21, 0x03, 0xf3, 0x04, 0x0f, +0x02, 0x25, 0x04, 0x11, 0x04, 0x15, 0x02, 0x42, +0x04, 0x18, 0x04, 0x20, 0x02, 0x47, 0x04, 0x23, +0x04, 0x24, 0x02, 0x50, 0x04, 0x27, 0x04, 0x27, +0x02, 0x52, 0x04, 0x2a, 0x04, 0x31, 0x02, 0x53, +0x04, 0x35, 0x04, 0x3e, 0x02, 0x5b, 0x04, 0x40, +0x04, 0x40, 0x02, 0x65, 0x04, 0x4b, 0x04, 0x4b, +0x02, 0x66, 0x04, 0x4e, 0x04, 0x57, 0x02, 0x67, +0x04, 0x64, 0x04, 0x6c, 0x02, 0x71, 0x04, 0x79, +0x04, 0x79, 0x02, 0x7a, 0x04, 0x7c, 0x04, 0x85, +0x02, 0x7b, 0x04, 0x9b, 0x04, 0x9e, 0x02, 0x85, +0x04, 0xbf, 0x04, 0xbf, 0x02, 0x89, 0x04, 0xc2, +0x04, 0xc2, 0x02, 0x8a, 0x06, 0x60, 0x06, 0x60, +0x02, 0x8b, 0x06, 0x7d, 0x06, 0x7d, 0x02, 0x8c, +0x06, 0x83, 0x06, 0x83, 0x02, 0x8d, 0x06, 0x88, +0x06, 0x88, 0x02, 0x8e, 0x07, 0x27, 0x07, 0x27, +0x02, 0x8f, 0x07, 0x29, 0x07, 0x29, 0x02, 0x90, +0x07, 0x2b, 0x07, 0x2b, 0x02, 0x91, 0x07, 0x31, +0x07, 0x31, 0x02, 0x92, 0x07, 0x33, 0x07, 0x33, +0x02, 0x93, 0x07, 0x35, 0x07, 0x35, 0x02, 0x94, +0x07, 0x37, 0x07, 0x37, 0x02, 0x95, 0x07, 0x39, +0x07, 0x39, 0x02, 0x96, 0x07, 0x3b, 0x07, 0x3b, +0x02, 0x97, 0x07, 0x3d, 0x07, 0x3d, 0x02, 0x98, +0x07, 0x40, 0x07, 0x40, 0x02, 0x99, 0x07, 0x44, +0x07, 0x44, 0x02, 0x9a, 0x07, 0x46, 0x07, 0x46, +0x02, 0x9b, 0x07, 0x56, 0x07, 0x56, 0x02, 0x9c, +0x07, 0x58, 0x07, 0x58, 0x02, 0x9d, 0x07, 0x6b, +0x07, 0x6b, 0x02, 0x9e, 0x07, 0x6e, 0x07, 0x6e, +0x02, 0x9f, 0x07, 0x72, 0x07, 0x72, 0x02, 0xa0, +0x07, 0x74, 0x07, 0x74, 0x02, 0xa1, 0x07, 0x76, +0x07, 0x76, 0x02, 0xa2, 0x07, 0x78, 0x07, 0x78, +0x02, 0xa3, 0x07, 0x7a, 0x07, 0x7a, 0x02, 0xa4, +0x07, 0x7c, 0x07, 0x7c, 0x02, 0xa5, 0x07, 0x7e, +0x07, 0x7e, 0x02, 0xa6, 0x07, 0x80, 0x07, 0x80, +0x02, 0xa7, 0x07, 0x82, 0x07, 0x82, 0x02, 0xa8, +0x07, 0x84, 0x07, 0x84, 0x02, 0xa9, 0x07, 0x86, +0x07, 0x86, 0x02, 0xaa, 0x07, 0x97, 0x07, 0x97, +0x02, 0xab, 0x00, 0x02, 0x00, 0x16, 0x00, 0x04, +0x00, 0x37, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x86, +0x00, 0x34, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x40, +0x00, 0xfa, 0x01, 0x0f, 0x00, 0x41, 0x01, 0x1e, +0x01, 0x1f, 0x00, 0x57, 0x01, 0x30, 0x01, 0x37, +0x00, 0x59, 0x01, 0x4f, 0x01, 0x56, 0x00, 0x61, +0x01, 0xca, 0x01, 0xca, 0x00, 0x69, 0x02, 0x49, +0x02, 0x49, 0x00, 0x6a, 0x02, 0xb1, 0x02, 0xb2, +0x00, 0x6b, 0x03, 0xe5, 0x03, 0xe5, 0x00, 0x6d, +0x04, 0x34, 0x04, 0x34, 0x00, 0x6e, 0x04, 0x41, +0x04, 0x4a, 0x00, 0x6f, 0x04, 0x4d, 0x04, 0x4d, +0x00, 0x79, 0x04, 0x59, 0x04, 0x63, 0x00, 0x7a, +0x04, 0x77, 0x04, 0x78, 0x00, 0x85, 0x04, 0x8c, +0x04, 0x8c, 0x00, 0x87, 0x04, 0x8e, 0x04, 0x8f, +0x00, 0x88, 0x04, 0x99, 0x04, 0x9a, 0x00, 0x8a, +0x07, 0x21, 0x07, 0x21, 0x00, 0x8c, 0x07, 0x24, +0x07, 0x24, 0x00, 0x8d, 0x07, 0x2f, 0x07, 0x2f, +0x00, 0x8e, 0x00, 0x01, 0x00, 0x30, 0x00, 0x03, +0x01, 0x46, 0x03, 0xb5, 0x04, 0x0f, 0x05, 0xe5, +0x06, 0x52, 0x06, 0x53, 0x06, 0x54, 0x06, 0x55, +0x06, 0x56, 0x06, 0x57, 0x06, 0x58, 0x06, 0x59, +0x06, 0x5a, 0x06, 0x5b, 0x06, 0x5c, 0x06, 0x5d, +0x06, 0x5e, 0x06, 0x5f, 0x07, 0x21, 0x07, 0x24, +0x07, 0x27, 0x07, 0x29, 0x07, 0x2b, 0x07, 0x2f, +0x07, 0x33, 0x07, 0x35, 0x07, 0x37, 0x07, 0x39, +0x07, 0x3b, 0x07, 0x3d, 0x07, 0x40, 0x07, 0x56, +0x07, 0x58, 0x07, 0x6b, 0x07, 0x6e, 0x07, 0x72, +0x07, 0x74, 0x07, 0x76, 0x07, 0x78, 0x07, 0x7a, +0x07, 0x7c, 0x07, 0x7e, 0x07, 0x80, 0x07, 0x82, +0x07, 0x84, 0x07, 0x86, 0x07, 0x90, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, +0x00, 0x04, 0x00, 0x0e, 0x00, 0x02, 0x69, 0x64, +0x65, 0x6f, 0x72, 0x6f, 0x6d, 0x6e, 0x00, 0x02, +0x44, 0x46, 0x4c, 0x54, 0x00, 0x0e, 0x6c, 0x61, +0x74, 0x6e, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x08, +0x00, 0x0c, 0x00, 0x01, 0xff, 0x56, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x18, 0xe7, 0x00, 0x00, 0x00, 0x14, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xdf, +0x30, 0x82, 0x18, 0xdb, 0x06, 0x09, 0x2a, 0x86, +0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, +0x82, 0x18, 0xcc, 0x30, 0x82, 0x18, 0xc8, 0x02, +0x01, 0x01, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x05, +0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0x30, +0x61, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, +0x82, 0x37, 0x02, 0x01, 0x04, 0xa0, 0x53, 0x30, +0x51, 0x30, 0x2c, 0x06, 0x0a, 0x2b, 0x06, 0x01, +0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x1c, 0xa2, +0x1e, 0x80, 0x1c, 0x00, 0x3c, 0x00, 0x3c, 0x00, +0x3c, 0x00, 0x4f, 0x00, 0x62, 0x00, 0x73, 0x00, +0x6f, 0x00, 0x6c, 0x00, 0x65, 0x00, 0x74, 0x00, +0x65, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x30, +0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, +0x02, 0x1a, 0x05, 0x00, 0x04, 0x14, 0x8c, 0xcd, +0x77, 0xed, 0xec, 0xa5, 0xaa, 0x00, 0x8f, 0x2c, +0x49, 0x8a, 0xec, 0x39, 0xbf, 0x7a, 0xdb, 0x2b, +0x29, 0xff, 0xa0, 0x82, 0x13, 0x94, 0x30, 0x82, +0x03, 0xee, 0x30, 0x82, 0x03, 0x57, 0xa0, 0x03, +0x02, 0x01, 0x02, 0x02, 0x10, 0x7e, 0x93, 0xeb, +0xfb, 0x7c, 0xc6, 0x4e, 0x59, 0xea, 0x4b, 0x9a, +0x77, 0xd4, 0x06, 0xfc, 0x3b, 0x30, 0x0d, 0x06, +0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, +0x01, 0x05, 0x05, 0x00, 0x30, 0x81, 0x8b, 0x31, +0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, +0x13, 0x02, 0x5a, 0x41, 0x31, 0x15, 0x30, 0x13, +0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0c, 0x57, +0x65, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x43, +0x61, 0x70, 0x65, 0x31, 0x14, 0x30, 0x12, 0x06, +0x03, 0x55, 0x04, 0x07, 0x13, 0x0b, 0x44, 0x75, +0x72, 0x62, 0x61, 0x6e, 0x76, 0x69, 0x6c, 0x6c, +0x65, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, +0x04, 0x0a, 0x13, 0x06, 0x54, 0x68, 0x61, 0x77, +0x74, 0x65, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, +0x55, 0x04, 0x0b, 0x13, 0x14, 0x54, 0x68, 0x61, +0x77, 0x74, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, +0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, +0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, +0x04, 0x03, 0x13, 0x16, 0x54, 0x68, 0x61, 0x77, +0x74, 0x65, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x73, +0x74, 0x61, 0x6d, 0x70, 0x69, 0x6e, 0x67, 0x20, +0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x32, +0x31, 0x32, 0x32, 0x31, 0x30, 0x30, 0x30, 0x30, +0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, +0x32, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, +0x39, 0x5a, 0x30, 0x5e, 0x31, 0x0b, 0x30, 0x09, +0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, +0x53, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, +0x04, 0x0a, 0x13, 0x14, 0x53, 0x79, 0x6d, 0x61, +0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6f, 0x72, +0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, +0x31, 0x30, 0x30, 0x2e, 0x06, 0x03, 0x55, 0x04, +0x03, 0x13, 0x27, 0x53, 0x79, 0x6d, 0x61, 0x6e, +0x74, 0x65, 0x63, 0x20, 0x54, 0x69, 0x6d, 0x65, +0x20, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x69, 0x6e, +0x67, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, +0x65, 0x73, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, +0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, +0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, +0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, +0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, +0x01, 0x01, 0x00, 0xb1, 0xac, 0xb3, 0x49, 0x54, +0x4b, 0x97, 0x1c, 0x12, 0x0a, 0xd8, 0x25, 0x79, +0x91, 0x22, 0x57, 0x2a, 0x6f, 0xdc, 0xb8, 0x26, +0xc4, 0x43, 0x73, 0x6b, 0xc2, 0xbf, 0x2e, 0x50, +0x5a, 0xfb, 0x14, 0xc2, 0x76, 0x8e, 0x43, 0x01, +0x25, 0x43, 0xb4, 0xa1, 0xe2, 0x45, 0xf4, 0xe8, +0xb7, 0x7b, 0xc3, 0x74, 0xcc, 0x22, 0xd7, 0xb4, +0x94, 0x00, 0x02, 0xf7, 0x4d, 0xed, 0xbf, 0xb4, +0xb7, 0x44, 0x24, 0x6b, 0xcd, 0x5f, 0x45, 0x3b, +0xd1, 0x44, 0xce, 0x43, 0x12, 0x73, 0x17, 0x82, +0x8b, 0x69, 0xb4, 0x2b, 0xcb, 0x99, 0x1e, 0xac, +0x72, 0x1b, 0x26, 0x4d, 0x71, 0x1f, 0xb1, 0x31, +0xdd, 0xfb, 0x51, 0x61, 0x02, 0x53, 0xa6, 0xaa, +0xf5, 0x49, 0x2c, 0x05, 0x78, 0x45, 0xa5, 0x2f, +0x89, 0xce, 0xe7, 0x99, 0xe7, 0xfe, 0x8c, 0xe2, +0x57, 0x3f, 0x3d, 0xc6, 0x92, 0xdc, 0x4a, 0xf8, +0x7b, 0x33, 0xe4, 0x79, 0x0a, 0xfb, 0xf0, 0x75, +0x88, 0x41, 0x9c, 0xff, 0xc5, 0x03, 0x51, 0x99, +0xaa, 0xd7, 0x6c, 0x9f, 0x93, 0x69, 0x87, 0x65, +0x29, 0x83, 0x85, 0xc2, 0x60, 0x14, 0xc4, 0xc8, +0xc9, 0x3b, 0x14, 0xda, 0xc0, 0x81, 0xf0, 0x1f, +0x0d, 0x74, 0xde, 0x92, 0x22, 0xab, 0xca, 0xf7, +0xfb, 0x74, 0x7c, 0x27, 0xe6, 0xf7, 0x4a, 0x1b, +0x7f, 0xa7, 0xc3, 0x9e, 0x2d, 0xae, 0x8a, 0xea, +0xa6, 0xe6, 0xaa, 0x27, 0x16, 0x7d, 0x61, 0xf7, +0x98, 0x71, 0x11, 0xbc, 0xe2, 0x50, 0xa1, 0x4b, +0xe5, 0x5d, 0xfa, 0xe5, 0x0e, 0xa7, 0x2c, 0x9f, +0xaa, 0x65, 0x20, 0xd3, 0xd8, 0x96, 0xe8, 0xc8, +0x7c, 0xa5, 0x4e, 0x48, 0x44, 0xff, 0x19, 0xe2, +0x44, 0x07, 0x92, 0x0b, 0xd7, 0x68, 0x84, 0x80, +0x5d, 0x6a, 0x78, 0x64, 0x45, 0xcd, 0x60, 0x46, +0x7e, 0x54, 0xc1, 0x13, 0x7c, 0xc5, 0x79, 0xf1, +0xc9, 0xc1, 0x71, 0x02, 0x03, 0x01, 0x00, 0x01, +0xa3, 0x81, 0xfa, 0x30, 0x81, 0xf7, 0x30, 0x1d, +0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, +0x14, 0x5f, 0x9a, 0xf5, 0x6e, 0x5c, 0xcc, 0xcc, +0x74, 0x9a, 0xd4, 0xdd, 0x7d, 0xef, 0x3f, 0xdb, +0xec, 0x4c, 0x80, 0x2e, 0xdd, 0x30, 0x32, 0x06, +0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, +0x01, 0x04, 0x26, 0x30, 0x24, 0x30, 0x22, 0x06, +0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, +0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70, 0x3a, +0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x74, +0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, +0x6d, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, +0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, +0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x3f, 0x06, +0x03, 0x55, 0x1d, 0x1f, 0x04, 0x38, 0x30, 0x36, +0x30, 0x34, 0xa0, 0x32, 0xa0, 0x30, 0x86, 0x2e, +0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, +0x72, 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, +0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, +0x61, 0x77, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, +0x73, 0x74, 0x61, 0x6d, 0x70, 0x69, 0x6e, 0x67, +0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x13, +0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x0c, 0x30, +0x0a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, +0x07, 0x03, 0x08, 0x30, 0x0e, 0x06, 0x03, 0x55, +0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, +0x02, 0x01, 0x06, 0x30, 0x28, 0x06, 0x03, 0x55, +0x1d, 0x11, 0x04, 0x21, 0x30, 0x1f, 0xa4, 0x1d, +0x30, 0x1b, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, +0x55, 0x04, 0x03, 0x13, 0x10, 0x54, 0x69, 0x6d, +0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x2d, 0x32, +0x30, 0x34, 0x38, 0x2d, 0x31, 0x30, 0x0d, 0x06, +0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, +0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, +0x03, 0x09, 0x9b, 0x8f, 0x79, 0xef, 0x7f, 0x59, +0x30, 0xaa, 0xef, 0x68, 0xb5, 0xfa, 0xe3, 0x09, +0x1d, 0xbb, 0x4f, 0x82, 0x06, 0x5d, 0x37, 0x5f, +0xa6, 0x52, 0x9f, 0x16, 0x8d, 0xea, 0x1c, 0x92, +0x09, 0x44, 0x6e, 0xf5, 0x6d, 0xeb, 0x58, 0x7c, +0x30, 0xe8, 0xf9, 0x69, 0x8d, 0x23, 0x73, 0x0b, +0x12, 0x6f, 0x47, 0xa9, 0xae, 0x39, 0x11, 0xf8, +0x2a, 0xb1, 0x9b, 0xb0, 0x1a, 0xc3, 0x8e, 0xeb, +0x59, 0x96, 0x00, 0xad, 0xce, 0x0c, 0x4d, 0xb2, +0xd0, 0x31, 0xa6, 0x08, 0x5c, 0x2a, 0x7a, 0xfc, +0xe2, 0x7a, 0x1d, 0x57, 0x4c, 0xa8, 0x65, 0x18, +0xe9, 0x79, 0x40, 0x62, 0x25, 0x96, 0x6e, 0xc7, +0xc7, 0x37, 0x6a, 0x83, 0x21, 0x08, 0x8e, 0x41, +0xea, 0xdd, 0xd9, 0x57, 0x3f, 0x1d, 0x77, 0x49, +0x87, 0x2a, 0x16, 0x06, 0x5e, 0xa6, 0x38, 0x6a, +0x22, 0x12, 0xa3, 0x51, 0x19, 0x83, 0x7e, 0xb6, +0x30, 0x82, 0x04, 0xa3, 0x30, 0x82, 0x03, 0x8b, +0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x0e, +0xcf, 0xf4, 0x38, 0xc8, 0xfe, 0xbf, 0x35, 0x6e, +0x04, 0xd8, 0x6a, 0x98, 0x1b, 0x1a, 0x50, 0x30, +0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, +0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5e, +0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, +0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1d, 0x30, +0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, +0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, +0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, +0x74, 0x69, 0x6f, 0x6e, 0x31, 0x30, 0x30, 0x2e, +0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x27, 0x53, +0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, +0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, +0x6d, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x53, 0x65, +0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x43, +0x41, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x1e, +0x17, 0x0d, 0x31, 0x32, 0x31, 0x30, 0x31, 0x38, +0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, +0x0d, 0x32, 0x30, 0x31, 0x32, 0x32, 0x39, 0x32, +0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x62, +0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, +0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1d, 0x30, +0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, +0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, +0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, +0x74, 0x69, 0x6f, 0x6e, 0x31, 0x34, 0x30, 0x32, +0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2b, 0x53, +0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, +0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, +0x6d, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x53, 0x65, +0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x53, +0x69, 0x67, 0x6e, 0x65, 0x72, 0x20, 0x2d, 0x20, +0x47, 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, +0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, +0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, +0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, +0x01, 0x01, 0x00, 0xa2, 0x63, 0x0b, 0x39, 0x44, +0xb8, 0xbb, 0x23, 0xa7, 0x44, 0x49, 0xbb, 0x0e, +0xff, 0xa1, 0xf0, 0x61, 0x0a, 0x53, 0x93, 0xb0, +0x98, 0xdb, 0xad, 0x2c, 0x0f, 0x4a, 0xc5, 0x6e, +0xff, 0x86, 0x3c, 0x53, 0x55, 0x0f, 0x15, 0xce, +0x04, 0x3f, 0x2b, 0xfd, 0xa9, 0x96, 0x96, 0xd9, +0xbe, 0x61, 0x79, 0x0b, 0x5b, 0xc9, 0x4c, 0x86, +0x76, 0xe5, 0xe0, 0x43, 0x4b, 0x22, 0x95, 0xee, +0xc2, 0x2b, 0x43, 0xc1, 0x9f, 0xd8, 0x68, 0xb4, +0x8e, 0x40, 0x4f, 0xee, 0x85, 0x38, 0xb9, 0x11, +0xc5, 0x23, 0xf2, 0x64, 0x58, 0xf0, 0x15, 0x32, +0x6f, 0x4e, 0x57, 0xa1, 0xae, 0x88, 0xa4, 0x02, +0xd7, 0x2a, 0x1e, 0xcd, 0x4b, 0xe1, 0xdd, 0x63, +0xd5, 0x17, 0x89, 0x32, 0x5b, 0xb0, 0x5e, 0x99, +0x5a, 0xa8, 0x9d, 0x28, 0x50, 0x0e, 0x17, 0xee, +0x96, 0xdb, 0x61, 0x3b, 0x45, 0x51, 0x1d, 0xcf, +0x12, 0x56, 0x0b, 0x92, 0x47, 0xfc, 0xab, 0xae, +0xf6, 0x66, 0x3d, 0x47, 0xac, 0x70, 0x72, 0xe7, +0x92, 0xe7, 0x5f, 0xcd, 0x10, 0xb9, 0xc4, 0x83, +0x64, 0x94, 0x19, 0xbd, 0x25, 0x80, 0xe1, 0xe8, +0xd2, 0x22, 0xa5, 0xd0, 0xba, 0x02, 0x7a, 0xa1, +0x77, 0x93, 0x5b, 0x65, 0xc3, 0xee, 0x17, 0x74, +0xbc, 0x41, 0x86, 0x2a, 0xdc, 0x08, 0x4c, 0x8c, +0x92, 0x8c, 0x91, 0x2d, 0x9e, 0x77, 0x44, 0x1f, +0x68, 0xd6, 0xa8, 0x74, 0x77, 0xdb, 0x0e, 0x5b, +0x32, 0x8b, 0x56, 0x8b, 0x33, 0xbd, 0xd9, 0x63, +0xc8, 0x49, 0x9d, 0x3a, 0xc5, 0xc5, 0xea, 0x33, +0x0b, 0xd2, 0xf1, 0xa3, 0x1b, 0xf4, 0x8b, 0xbe, +0xd9, 0xb3, 0x57, 0x8b, 0x3b, 0xde, 0x04, 0xa7, +0x7a, 0x22, 0xb2, 0x24, 0xae, 0x2e, 0xc7, 0x70, +0xc5, 0xbe, 0x4e, 0x83, 0x26, 0x08, 0xfb, 0x0b, +0xbd, 0xa9, 0x4f, 0x99, 0x08, 0xe1, 0x10, 0x28, +0x72, 0xaa, 0xcd, 0x02, 0x03, 0x01, 0x00, 0x01, +0xa3, 0x82, 0x01, 0x57, 0x30, 0x82, 0x01, 0x53, +0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, +0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x16, +0x06, 0x03, 0x55, 0x1d, 0x25, 0x01, 0x01, 0xff, +0x04, 0x0c, 0x30, 0x0a, 0x06, 0x08, 0x2b, 0x06, +0x01, 0x05, 0x05, 0x07, 0x03, 0x08, 0x30, 0x0e, +0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, +0x04, 0x04, 0x03, 0x02, 0x07, 0x80, 0x30, 0x73, +0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, +0x01, 0x01, 0x04, 0x67, 0x30, 0x65, 0x30, 0x2a, +0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, +0x30, 0x01, 0x86, 0x1e, 0x68, 0x74, 0x74, 0x70, +0x3a, 0x2f, 0x2f, 0x74, 0x73, 0x2d, 0x6f, 0x63, +0x73, 0x70, 0x2e, 0x77, 0x73, 0x2e, 0x73, 0x79, +0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x2e, 0x63, +0x6f, 0x6d, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, +0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2b, +0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x74, +0x73, 0x2d, 0x61, 0x69, 0x61, 0x2e, 0x77, 0x73, +0x2e, 0x73, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, +0x63, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x73, +0x73, 0x2d, 0x63, 0x61, 0x2d, 0x67, 0x32, 0x2e, +0x63, 0x65, 0x72, 0x30, 0x3c, 0x06, 0x03, 0x55, +0x1d, 0x1f, 0x04, 0x35, 0x30, 0x33, 0x30, 0x31, +0xa0, 0x2f, 0xa0, 0x2d, 0x86, 0x2b, 0x68, 0x74, +0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x74, 0x73, 0x2d, +0x63, 0x72, 0x6c, 0x2e, 0x77, 0x73, 0x2e, 0x73, +0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x2e, +0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x73, 0x73, 0x2d, +0x63, 0x61, 0x2d, 0x67, 0x32, 0x2e, 0x63, 0x72, +0x6c, 0x30, 0x28, 0x06, 0x03, 0x55, 0x1d, 0x11, +0x04, 0x21, 0x30, 0x1f, 0xa4, 0x1d, 0x30, 0x1b, +0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, +0x03, 0x13, 0x10, 0x54, 0x69, 0x6d, 0x65, 0x53, +0x74, 0x61, 0x6d, 0x70, 0x2d, 0x32, 0x30, 0x34, +0x38, 0x2d, 0x32, 0x30, 0x1d, 0x06, 0x03, 0x55, +0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x46, 0xc6, +0x69, 0xa3, 0x0e, 0x4a, 0x14, 0x1e, 0xd5, 0x4c, +0xda, 0x52, 0x63, 0x17, 0x3f, 0x5e, 0x36, 0xbc, +0x0d, 0xe6, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, +0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x5f, +0x9a, 0xf5, 0x6e, 0x5c, 0xcc, 0xcc, 0x74, 0x9a, +0xd4, 0xdd, 0x7d, 0xef, 0x3f, 0xdb, 0xec, 0x4c, +0x80, 0x2e, 0xdd, 0x30, 0x0d, 0x06, 0x09, 0x2a, +0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, +0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x78, +0x3b, 0xb4, 0x91, 0x2a, 0x00, 0x4c, 0xf0, 0x8f, +0x62, 0x30, 0x37, 0x78, 0xa3, 0x84, 0x27, 0x07, +0x6f, 0x18, 0xb2, 0xde, 0x25, 0xdc, 0xa0, 0xd4, +0x94, 0x03, 0xaa, 0x86, 0x4e, 0x25, 0x9f, 0x9a, +0x40, 0x03, 0x1c, 0xdd, 0xce, 0xe3, 0x79, 0xcb, +0x21, 0x68, 0x06, 0xda, 0xb6, 0x32, 0xb4, 0x6d, +0xbf, 0xf4, 0x2c, 0x26, 0x63, 0x33, 0xe4, 0x49, +0x64, 0x6d, 0x0d, 0xe6, 0xc3, 0x67, 0x0e, 0xf7, +0x05, 0xa4, 0x35, 0x6c, 0x7c, 0x89, 0x16, 0xc6, +0xe9, 0xb2, 0xdf, 0xb2, 0xe9, 0xdd, 0x20, 0xc6, +0x71, 0x0f, 0xcd, 0x95, 0x74, 0xdc, 0xb6, 0x5c, +0xde, 0xbd, 0x37, 0x1f, 0x43, 0x78, 0xe6, 0x78, +0xb5, 0xcd, 0x28, 0x04, 0x20, 0xa3, 0xaa, 0xf1, +0x4b, 0xc4, 0x88, 0x29, 0x91, 0x0e, 0x80, 0xd1, +0x11, 0xfc, 0xdd, 0x5c, 0x76, 0x6e, 0x4f, 0x5e, +0x0e, 0x45, 0x46, 0x41, 0x6e, 0x0d, 0xb0, 0xea, +0x38, 0x9a, 0xb1, 0x3a, 0xda, 0x09, 0x71, 0x10, +0xfc, 0x1c, 0x79, 0xb4, 0x80, 0x7b, 0xac, 0x69, +0xf4, 0xfd, 0x9c, 0xb6, 0x0c, 0x16, 0x2b, 0xf1, +0x7f, 0x5b, 0x09, 0x3d, 0x9b, 0x5b, 0xe2, 0x16, +0xca, 0x13, 0x81, 0x6d, 0x00, 0x2e, 0x38, 0x0d, +0xa8, 0x29, 0x8f, 0x2c, 0xe1, 0xb2, 0xf4, 0x5a, +0xa9, 0x01, 0xaf, 0x15, 0x9c, 0x2c, 0x2f, 0x49, +0x1b, 0xdb, 0x22, 0xbb, 0xc3, 0xfe, 0x78, 0x94, +0x51, 0xc3, 0x86, 0xb1, 0x82, 0x88, 0x5d, 0xf0, +0x3d, 0xb4, 0x51, 0xa1, 0x79, 0x33, 0x2b, 0x2e, +0x7b, 0xb9, 0xdc, 0x20, 0x09, 0x13, 0x71, 0xeb, +0x6a, 0x19, 0x5b, 0xcf, 0xe8, 0xa5, 0x30, 0x57, +0x2c, 0x89, 0x49, 0x3f, 0xb9, 0xcf, 0x7f, 0xc9, +0xbf, 0x3e, 0x22, 0x68, 0x63, 0x53, 0x9a, 0xbd, +0x69, 0x74, 0xac, 0xc5, 0x1d, 0x3c, 0x7f, 0x92, +0xe0, 0xc3, 0xbc, 0x1c, 0xd8, 0x04, 0x75, 0x30, +0x82, 0x05, 0x6a, 0x30, 0x82, 0x04, 0x52, 0xa0, +0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x6c, 0x59, +0xef, 0xa9, 0xe1, 0x00, 0xe1, 0x0e, 0xe3, 0x06, +0xba, 0x8f, 0xe0, 0x29, 0x25, 0x59, 0x30, 0x0d, +0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, +0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, 0xca, +0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, +0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, +0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, +0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, +0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1f, +0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, +0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, +0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, +0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, +0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, +0x13, 0x31, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, +0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, +0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, +0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, +0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, +0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, +0x6e, 0x6c, 0x79, 0x31, 0x45, 0x30, 0x43, 0x06, +0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, 0x65, +0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, +0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, +0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, +0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, +0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, +0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, +0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, +0x47, 0x35, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x32, +0x30, 0x36, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, +0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x32, 0x30, +0x36, 0x30, 0x36, 0x32, 0x33, 0x35, 0x39, 0x35, +0x39, 0x5a, 0x30, 0x81, 0x8c, 0x31, 0x0b, 0x30, +0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, +0x55, 0x53, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, +0x55, 0x04, 0x0a, 0x13, 0x14, 0x53, 0x79, 0x6d, +0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6f, +0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, +0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, +0x04, 0x0b, 0x13, 0x16, 0x53, 0x79, 0x6d, 0x61, +0x6e, 0x74, 0x65, 0x63, 0x20, 0x54, 0x72, 0x75, +0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, +0x72, 0x6b, 0x31, 0x3d, 0x30, 0x3b, 0x06, 0x03, +0x55, 0x04, 0x03, 0x13, 0x34, 0x53, 0x79, 0x6d, +0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6c, +0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x45, 0x78, +0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x56, +0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, +0x6e, 0x20, 0x43, 0x6f, 0x64, 0x65, 0x20, 0x53, +0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x43, +0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, +0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, +0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, +0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, +0x01, 0x00, 0x8b, 0x43, 0xaf, 0xa1, 0xc4, 0xa8, +0x4d, 0xcd, 0xd0, 0xee, 0xc7, 0x36, 0xc0, 0xa0, +0x8a, 0x79, 0x73, 0x28, 0xd8, 0x77, 0xe5, 0xc0, +0x54, 0xc7, 0x35, 0xf7, 0xbb, 0xed, 0x1b, 0x9f, +0xea, 0x57, 0x70, 0xd3, 0x55, 0x1b, 0x27, 0x19, +0xa9, 0xcb, 0xe0, 0x01, 0x05, 0xae, 0x05, 0xf2, +0xad, 0xe7, 0x06, 0x1d, 0xd1, 0x06, 0xa8, 0xad, +0x87, 0xb9, 0x18, 0x84, 0x2f, 0x1e, 0x1d, 0x09, +0x62, 0xd3, 0xdd, 0x0d, 0xf5, 0x17, 0xb4, 0x30, +0x6f, 0x5e, 0x52, 0x76, 0x16, 0x8c, 0x56, 0x7b, +0xc5, 0x90, 0x3a, 0x82, 0x7d, 0xb5, 0xad, 0x58, +0xe6, 0x00, 0xe7, 0x18, 0x05, 0x36, 0xed, 0x30, +0x20, 0xa1, 0xf0, 0xec, 0xc3, 0x62, 0xf4, 0x99, +0x10, 0x1a, 0x94, 0xf6, 0xf0, 0x57, 0x68, 0xc9, +0x72, 0x36, 0xbd, 0x7c, 0x90, 0xa8, 0x16, 0x16, +0x20, 0xa5, 0x49, 0x01, 0x51, 0x32, 0xa0, 0x96, +0xf3, 0x8a, 0x30, 0x38, 0xab, 0x86, 0xa1, 0x15, +0xa3, 0xf2, 0x1c, 0x20, 0x57, 0x50, 0x4b, 0xb8, +0x64, 0xd2, 0xb1, 0x6c, 0xe6, 0xe4, 0x3c, 0xb6, +0x08, 0x21, 0xc4, 0x4b, 0x40, 0x96, 0x17, 0xb3, +0xcb, 0x67, 0xdb, 0x86, 0x41, 0xd9, 0x5b, 0xfe, +0x98, 0x1d, 0x44, 0x24, 0x3a, 0xe8, 0x69, 0xa1, +0x1a, 0x24, 0x6b, 0xb3, 0x48, 0x14, 0xf3, 0xf4, +0x0e, 0x83, 0xc5, 0x4d, 0x31, 0xfb, 0xbd, 0xaf, +0xae, 0x21, 0x3c, 0x62, 0xeb, 0xea, 0xda, 0xd8, +0x9d, 0xd7, 0xec, 0x91, 0x1e, 0xb3, 0xc3, 0x44, +0x1e, 0x54, 0x1d, 0x82, 0x9b, 0xed, 0x59, 0x13, +0xee, 0x30, 0x70, 0xe3, 0x6c, 0x94, 0xe1, 0x2c, +0x07, 0xd3, 0x8f, 0x8c, 0xea, 0x61, 0xc9, 0x5c, +0xab, 0x4b, 0x98, 0x2a, 0x87, 0xb9, 0xda, 0x3e, +0x37, 0x83, 0x0a, 0x30, 0xba, 0xb5, 0x44, 0x98, +0xfd, 0xef, 0xbd, 0xaa, 0x80, 0x35, 0xb1, 0x5c, +0xad, 0xf7, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, +0x82, 0x01, 0x86, 0x30, 0x82, 0x01, 0x82, 0x30, +0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, +0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, +0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, +0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, +0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, +0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, +0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, +0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, +0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, +0x00, 0x30, 0x65, 0x06, 0x03, 0x55, 0x1d, 0x20, +0x04, 0x5e, 0x30, 0x5c, 0x30, 0x5a, 0x06, 0x04, +0x55, 0x1d, 0x20, 0x00, 0x30, 0x52, 0x30, 0x26, +0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, +0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, +0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, +0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x63, +0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x28, +0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, +0x02, 0x02, 0x30, 0x1c, 0x1a, 0x1a, 0x68, 0x74, +0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, +0x2e, 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, +0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, 0x61, +0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, +0x2d, 0x30, 0x2b, 0x30, 0x29, 0xa0, 0x27, 0xa0, +0x25, 0x86, 0x23, 0x68, 0x74, 0x74, 0x70, 0x3a, +0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, +0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, +0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, 0x2d, +0x67, 0x35, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x1d, +0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, +0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, +0x07, 0x03, 0x02, 0x06, 0x08, 0x2b, 0x06, 0x01, +0x05, 0x05, 0x07, 0x03, 0x03, 0x30, 0x0e, 0x06, +0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, +0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2a, 0x06, +0x03, 0x55, 0x1d, 0x11, 0x04, 0x23, 0x30, 0x21, +0xa4, 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, +0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x56, +0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, +0x50, 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x32, 0x31, +0x34, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, +0x04, 0x16, 0x04, 0x14, 0xa3, 0x8e, 0xcf, 0x19, +0x42, 0x3d, 0x31, 0xe1, 0xab, 0x21, 0x89, 0x84, +0x6d, 0xcb, 0xd9, 0x79, 0xa2, 0xb2, 0xb2, 0x5a, +0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, +0x18, 0x30, 0x16, 0x80, 0x14, 0x7f, 0xd3, 0x65, +0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, +0xf3, 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, +0x33, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, +0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, +0x03, 0x82, 0x01, 0x01, 0x00, 0x6a, 0xf3, 0x1d, +0xbc, 0x5f, 0x4d, 0xde, 0x03, 0xf9, 0x49, 0x49, +0x1d, 0xad, 0x3d, 0x76, 0x1c, 0x96, 0xba, 0x1b, +0x43, 0xe6, 0xf4, 0x86, 0x02, 0x42, 0x75, 0x78, +0xc7, 0x0c, 0xc2, 0xe5, 0x9d, 0xc4, 0x34, 0x4f, +0x0e, 0xa9, 0xe9, 0x4a, 0xb4, 0xbe, 0x41, 0x84, +0x87, 0xea, 0xf4, 0x87, 0xb4, 0x4c, 0xdb, 0x10, +0x49, 0x3b, 0xf7, 0xdf, 0x15, 0x90, 0xba, 0x84, +0xf8, 0xb7, 0x47, 0xeb, 0x5b, 0x65, 0x50, 0xf3, +0xa3, 0x4a, 0x71, 0x10, 0x16, 0x7b, 0x1c, 0xe1, +0xf5, 0xd6, 0xed, 0xbf, 0x50, 0x56, 0x6f, 0xf8, +0x99, 0xb3, 0xa9, 0x51, 0xb6, 0x46, 0xae, 0xc6, +0x97, 0xe0, 0xe7, 0x9b, 0x0c, 0x15, 0x3e, 0xbb, +0x28, 0x7b, 0x31, 0xa3, 0x00, 0xf3, 0x2e, 0x8b, +0x87, 0x48, 0x12, 0x89, 0x82, 0xef, 0x09, 0x5f, +0x49, 0x0c, 0x90, 0x9e, 0xc8, 0xf6, 0x96, 0xa3, +0x7b, 0x9a, 0x75, 0x13, 0xc8, 0x47, 0xf0, 0x3e, +0x3f, 0x6f, 0x0b, 0x50, 0x29, 0x6c, 0x2b, 0x78, +0x4c, 0x30, 0xfc, 0xe4, 0x60, 0x0c, 0x13, 0x40, +0xd6, 0x38, 0x75, 0xa9, 0x07, 0x79, 0x64, 0xfd, +0xca, 0x3c, 0xe4, 0xef, 0x48, 0x93, 0x0b, 0xe0, +0x0a, 0x48, 0xff, 0x07, 0x6b, 0x3b, 0x02, 0x83, +0xd1, 0x66, 0xd5, 0xb9, 0xe1, 0x98, 0xf4, 0x0e, +0x9f, 0x69, 0xc4, 0x2e, 0x55, 0x2e, 0x01, 0x96, +0x7d, 0x7e, 0x84, 0x0c, 0x80, 0x76, 0x75, 0x36, +0xcb, 0xfd, 0x46, 0x61, 0xf4, 0x69, 0xcc, 0x1a, +0x9d, 0x64, 0x2b, 0xba, 0x04, 0x6e, 0xe9, 0x11, +0x52, 0xda, 0x12, 0x99, 0xa1, 0x5a, 0xb0, 0x83, +0xc4, 0xbc, 0x47, 0x80, 0xa6, 0x27, 0x4d, 0x00, +0x7a, 0x36, 0x03, 0x3c, 0xbe, 0x61, 0x98, 0x63, +0xcb, 0x9f, 0x05, 0xee, 0x80, 0x85, 0xee, 0xdd, +0x95, 0x92, 0xf7, 0xee, 0x50, 0xd4, 0x63, 0xdc, +0x8f, 0xa4, 0x24, 0x79, 0xbf, 0x30, 0x82, 0x05, +0x89, 0x30, 0x82, 0x04, 0x71, 0xa0, 0x03, 0x02, +0x01, 0x02, 0x02, 0x10, 0x02, 0x8e, 0xa7, 0xa0, +0x11, 0x58, 0xe6, 0x71, 0xfa, 0x83, 0x9d, 0x4d, +0x18, 0xd3, 0x27, 0xc3, 0x30, 0x0d, 0x06, 0x09, +0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, +0x05, 0x05, 0x00, 0x30, 0x81, 0x8c, 0x31, 0x0b, +0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, +0x02, 0x55, 0x53, 0x31, 0x1d, 0x30, 0x1b, 0x06, +0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x53, 0x79, +0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, +0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, +0x6f, 0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, +0x55, 0x04, 0x0b, 0x13, 0x16, 0x53, 0x79, 0x6d, +0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x54, 0x72, +0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, +0x6f, 0x72, 0x6b, 0x31, 0x3d, 0x30, 0x3b, 0x06, +0x03, 0x55, 0x04, 0x03, 0x13, 0x34, 0x53, 0x79, +0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, +0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x45, +0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, +0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, +0x6f, 0x6e, 0x20, 0x43, 0x6f, 0x64, 0x65, 0x20, +0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x20, +0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, +0x30, 0x37, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, +0x30, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x30, +0x37, 0x32, 0x35, 0x32, 0x33, 0x35, 0x39, 0x35, +0x39, 0x5a, 0x30, 0x81, 0xf4, 0x31, 0x13, 0x30, +0x11, 0x06, 0x0b, 0x2b, 0x06, 0x01, 0x04, 0x01, +0x82, 0x37, 0x3c, 0x02, 0x01, 0x03, 0x13, 0x02, +0x55, 0x53, 0x31, 0x19, 0x30, 0x17, 0x06, 0x0b, +0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x3c, +0x02, 0x01, 0x02, 0x14, 0x08, 0x44, 0x65, 0x6c, +0x61, 0x77, 0x61, 0x72, 0x65, 0x31, 0x1d, 0x30, +0x1b, 0x06, 0x03, 0x55, 0x04, 0x0f, 0x13, 0x14, +0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, +0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, +0x74, 0x69, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, +0x06, 0x03, 0x55, 0x04, 0x05, 0x13, 0x07, 0x32, +0x37, 0x34, 0x38, 0x31, 0x32, 0x39, 0x31, 0x0b, +0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, +0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, +0x03, 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x43, 0x61, +0x6c, 0x69, 0x66, 0x6f, 0x72, 0x6e, 0x69, 0x61, +0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, +0x07, 0x0c, 0x08, 0x53, 0x61, 0x6e, 0x20, 0x4a, +0x6f, 0x73, 0x65, 0x31, 0x23, 0x30, 0x21, 0x06, +0x03, 0x55, 0x04, 0x0a, 0x0c, 0x1a, 0x41, 0x64, +0x6f, 0x62, 0x65, 0x20, 0x53, 0x79, 0x73, 0x74, +0x65, 0x6d, 0x73, 0x20, 0x49, 0x6e, 0x63, 0x6f, +0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, +0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, +0x0b, 0x0c, 0x09, 0x54, 0x79, 0x70, 0x65, 0x20, +0x46, 0x6f, 0x6e, 0x74, 0x31, 0x23, 0x30, 0x21, +0x06, 0x03, 0x55, 0x04, 0x03, 0x14, 0x1a, 0x41, +0x64, 0x6f, 0x62, 0x65, 0x20, 0x53, 0x79, 0x73, +0x74, 0x65, 0x6d, 0x73, 0x20, 0x49, 0x6e, 0x63, +0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x65, +0x64, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, +0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, +0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, +0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, +0x01, 0x00, 0xdf, 0x36, 0x9b, 0xf1, 0xe1, 0x1f, +0x3f, 0xf9, 0x1a, 0x46, 0xfa, 0xe0, 0xdb, 0xaa, +0xf7, 0x2c, 0x0b, 0xca, 0x6f, 0x59, 0xa1, 0x42, +0xef, 0xe3, 0x7e, 0x6d, 0xc9, 0x98, 0xba, 0xcb, +0x14, 0x87, 0xf6, 0x54, 0x9d, 0x5a, 0xf1, 0xe5, +0xac, 0xb3, 0x2d, 0x95, 0xf5, 0x4c, 0x09, 0x99, +0x18, 0x0b, 0x57, 0xe0, 0x31, 0x46, 0xe3, 0x52, +0x13, 0x98, 0x19, 0x50, 0x3b, 0x1f, 0x06, 0xe3, +0xab, 0x62, 0x8c, 0xc8, 0xb1, 0xd9, 0xcd, 0x4d, +0xba, 0x24, 0xac, 0x0a, 0x1d, 0xef, 0xcf, 0x51, +0xb9, 0xb7, 0xff, 0x56, 0x1e, 0xa7, 0x12, 0xdf, +0x27, 0x75, 0x4b, 0x52, 0xde, 0xe8, 0x18, 0x48, +0x79, 0x7c, 0x51, 0x0f, 0x2f, 0x05, 0x28, 0xd2, +0x16, 0x65, 0x4d, 0x32, 0xf3, 0xda, 0x12, 0x35, +0x12, 0x67, 0x26, 0xb9, 0x60, 0x6f, 0xf5, 0x63, +0x65, 0x8b, 0x3c, 0x37, 0x62, 0xf1, 0xbb, 0xf5, +0x47, 0xcc, 0x39, 0x22, 0x40, 0xa7, 0xd4, 0x0a, +0xde, 0x56, 0xb0, 0xf9, 0x0e, 0x8a, 0x16, 0x84, +0x5a, 0x29, 0xd6, 0x63, 0x07, 0x6f, 0x4e, 0x88, +0x55, 0xf6, 0x41, 0xab, 0x76, 0x1b, 0xcb, 0x88, +0x25, 0xf4, 0xcc, 0x9b, 0xb5, 0xed, 0x4d, 0x6b, +0xe5, 0xd4, 0x94, 0xbd, 0xd8, 0xcb, 0xee, 0xbc, +0x8c, 0xe2, 0x29, 0x5a, 0xe9, 0x02, 0xe8, 0xd7, +0xde, 0x09, 0x2b, 0x80, 0x69, 0x42, 0x89, 0xc0, +0xfb, 0x93, 0x94, 0x3b, 0x90, 0x5e, 0x44, 0x94, +0x55, 0x2d, 0x5e, 0x82, 0xd4, 0x16, 0xf3, 0x90, +0xb5, 0xc6, 0xa1, 0x83, 0x9e, 0xfa, 0x8a, 0x13, +0x39, 0x07, 0x28, 0x06, 0x62, 0x4e, 0x99, 0xb6, +0x9b, 0x39, 0x39, 0x15, 0x25, 0x94, 0xff, 0xa4, +0xf4, 0x3f, 0x77, 0xc5, 0x8d, 0xe6, 0xef, 0xb6, +0x85, 0x99, 0xf8, 0x34, 0xd7, 0x59, 0x4b, 0x9c, +0x56, 0x0b, 0x6a, 0x7d, 0x84, 0xbf, 0x6b, 0x96, +0x07, 0xe5, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, +0x82, 0x01, 0x7b, 0x30, 0x82, 0x01, 0x77, 0x30, +0x2e, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x27, +0x30, 0x25, 0xa0, 0x23, 0x06, 0x08, 0x2b, 0x06, +0x01, 0x05, 0x05, 0x07, 0x08, 0x03, 0xa0, 0x17, +0x30, 0x15, 0x0c, 0x13, 0x55, 0x53, 0x2d, 0x44, +0x65, 0x6c, 0x61, 0x77, 0x61, 0x72, 0x65, 0x2d, +0x32, 0x37, 0x34, 0x38, 0x31, 0x32, 0x39, 0x30, +0x09, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x02, +0x30, 0x00, 0x30, 0x42, 0x06, 0x03, 0x55, 0x1d, +0x20, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37, 0x06, +0x0b, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, +0x01, 0x07, 0x17, 0x06, 0x30, 0x28, 0x30, 0x26, +0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, +0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, +0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, +0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x63, +0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x39, +0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x32, 0x30, +0x30, 0x30, 0x2e, 0xa0, 0x2c, 0xa0, 0x2a, 0x86, +0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, +0x65, 0x76, 0x63, 0x73, 0x2d, 0x63, 0x72, 0x6c, +0x2e, 0x77, 0x73, 0x2e, 0x73, 0x79, 0x6d, 0x61, +0x6e, 0x74, 0x65, 0x63, 0x2e, 0x63, 0x6f, 0x6d, +0x2f, 0x65, 0x76, 0x63, 0x73, 0x2e, 0x63, 0x72, +0x6c, 0x30, 0x16, 0x06, 0x03, 0x55, 0x1d, 0x25, +0x01, 0x01, 0xff, 0x04, 0x0c, 0x30, 0x0a, 0x06, +0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, +0x03, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, +0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x07, +0x80, 0x30, 0x72, 0x06, 0x08, 0x2b, 0x06, 0x01, +0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x66, 0x30, +0x64, 0x30, 0x2c, 0x06, 0x08, 0x2b, 0x06, 0x01, +0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x20, 0x68, +0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x65, 0x76, +0x63, 0x73, 0x2d, 0x6f, 0x63, 0x73, 0x70, 0x2e, +0x77, 0x73, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x6e, +0x74, 0x65, 0x63, 0x2e, 0x63, 0x6f, 0x6d, 0x30, +0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, +0x07, 0x30, 0x02, 0x86, 0x28, 0x68, 0x74, 0x74, +0x70, 0x3a, 0x2f, 0x2f, 0x65, 0x76, 0x63, 0x73, +0x2d, 0x61, 0x69, 0x61, 0x2e, 0x77, 0x73, 0x2e, +0x73, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, +0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x76, 0x63, +0x73, 0x2e, 0x63, 0x65, 0x72, 0x30, 0x1f, 0x06, +0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, +0x80, 0x14, 0xa3, 0x8e, 0xcf, 0x19, 0x42, 0x3d, +0x31, 0xe1, 0xab, 0x21, 0x89, 0x84, 0x6d, 0xcb, +0xd9, 0x79, 0xa2, 0xb2, 0xb2, 0x5a, 0x30, 0x0d, +0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, +0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, +0x01, 0x00, 0x77, 0x2a, 0xbc, 0x2d, 0x6f, 0xfe, +0x87, 0x18, 0xae, 0xfb, 0x36, 0x7f, 0x44, 0xbe, +0x64, 0x48, 0xc5, 0xc1, 0x6d, 0x84, 0xb0, 0x4b, +0x62, 0x83, 0x12, 0x54, 0xd7, 0x3b, 0xca, 0x2a, +0x5a, 0x5f, 0x25, 0xc5, 0x18, 0xb9, 0xdd, 0x3c, +0x58, 0xfa, 0xd6, 0x56, 0xd8, 0x91, 0xd4, 0x62, +0xe0, 0xf4, 0xdc, 0x77, 0x89, 0xa8, 0xc5, 0xe5, +0x6c, 0x80, 0x35, 0x5d, 0x1c, 0xe0, 0x74, 0x0d, +0x64, 0x81, 0x43, 0x52, 0x56, 0x2f, 0x15, 0x57, +0x56, 0xe0, 0x02, 0x3b, 0x98, 0x44, 0x78, 0xa8, +0x28, 0x69, 0xca, 0xe1, 0xd4, 0x48, 0xd7, 0xf1, +0xab, 0x70, 0xa6, 0x09, 0x64, 0x36, 0xd1, 0x45, +0x03, 0xde, 0x64, 0xf4, 0xf2, 0x35, 0x2f, 0x9f, +0x98, 0xf5, 0x72, 0x9e, 0xac, 0x72, 0x84, 0x96, +0xd5, 0x06, 0xd8, 0x7a, 0x83, 0xf6, 0xcc, 0x63, +0xcf, 0x1c, 0xef, 0x64, 0x8f, 0x8c, 0x02, 0xe1, +0x8a, 0x35, 0x7a, 0x09, 0x9a, 0xd6, 0xcf, 0xc0, +0x51, 0x01, 0x46, 0x4e, 0x96, 0x2a, 0x28, 0xbe, +0x85, 0x41, 0xf5, 0xde, 0xf0, 0xdf, 0x79, 0x9c, +0x53, 0x79, 0x5f, 0x06, 0xdf, 0x92, 0xb2, 0x51, +0xf7, 0xd5, 0x97, 0x29, 0x26, 0x2a, 0x6e, 0x41, +0xea, 0x11, 0x81, 0x88, 0x88, 0x40, 0x47, 0xae, +0x2c, 0x89, 0x7c, 0x63, 0x5c, 0xcb, 0x49, 0xbe, +0xea, 0x43, 0x51, 0xd5, 0x83, 0x85, 0xf4, 0x68, +0xb3, 0xef, 0x41, 0x94, 0x91, 0xdf, 0x20, 0xb1, +0xbd, 0x66, 0x74, 0xf7, 0xb0, 0x1c, 0x07, 0xdd, +0x15, 0x3d, 0xb4, 0xe1, 0xca, 0xa9, 0x61, 0xb3, +0x74, 0x52, 0x4e, 0x27, 0xf3, 0x0f, 0xb6, 0x79, +0x4e, 0x07, 0x57, 0xe2, 0x17, 0x22, 0xbd, 0x1d, +0xfb, 0xe0, 0x1e, 0x7d, 0xfc, 0xd4, 0x96, 0x9c, +0x88, 0x65, 0xfb, 0xc1, 0x46, 0xda, 0x5d, 0xc6, +0x93, 0xe2, 0x24, 0xe3, 0xa2, 0x07, 0xc1, 0x58, +0x31, 0x75, 0x31, 0x82, 0x04, 0xb9, 0x30, 0x82, +0x04, 0xb5, 0x02, 0x01, 0x01, 0x30, 0x81, 0xa1, +0x30, 0x81, 0x8c, 0x31, 0x0b, 0x30, 0x09, 0x06, +0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, +0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, +0x0a, 0x13, 0x14, 0x53, 0x79, 0x6d, 0x61, 0x6e, +0x74, 0x65, 0x63, 0x20, 0x43, 0x6f, 0x72, 0x70, +0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, +0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, +0x13, 0x16, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, +0x65, 0x63, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, +0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, +0x31, 0x3d, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x04, +0x03, 0x13, 0x34, 0x53, 0x79, 0x6d, 0x61, 0x6e, +0x74, 0x65, 0x63, 0x20, 0x43, 0x6c, 0x61, 0x73, +0x73, 0x20, 0x33, 0x20, 0x45, 0x78, 0x74, 0x65, +0x6e, 0x64, 0x65, 0x64, 0x20, 0x56, 0x61, 0x6c, +0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, +0x43, 0x6f, 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, +0x6e, 0x69, 0x6e, 0x67, 0x20, 0x43, 0x41, 0x02, +0x10, 0x02, 0x8e, 0xa7, 0xa0, 0x11, 0x58, 0xe6, +0x71, 0xfa, 0x83, 0x9d, 0x4d, 0x18, 0xd3, 0x27, +0xc3, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, +0x02, 0x1a, 0x05, 0x00, 0xa0, 0x81, 0xde, 0x30, +0x19, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, +0x0d, 0x01, 0x09, 0x03, 0x31, 0x0c, 0x06, 0x0a, +0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, +0x01, 0x04, 0x30, 0x1c, 0x06, 0x0a, 0x2b, 0x06, +0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0b, +0x31, 0x0e, 0x30, 0x0c, 0x06, 0x0a, 0x2b, 0x06, +0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x15, +0x30, 0x23, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, +0xf7, 0x0d, 0x01, 0x09, 0x04, 0x31, 0x16, 0x04, +0x14, 0x5a, 0x0b, 0x9a, 0x4d, 0x8e, 0x35, 0x2b, +0x1b, 0x96, 0x1f, 0xf9, 0xe2, 0x06, 0xf8, 0x34, +0xed, 0xff, 0xbc, 0x3c, 0x05, 0x30, 0x7e, 0x06, +0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, +0x02, 0x01, 0x0c, 0x31, 0x70, 0x30, 0x6e, 0xa0, +0x6c, 0x80, 0x6a, 0x00, 0x53, 0x00, 0x6f, 0x00, +0x75, 0x00, 0x72, 0x00, 0x63, 0x00, 0x65, 0x00, +0x20, 0x00, 0x53, 0x00, 0x61, 0x00, 0x6e, 0x00, +0x73, 0x00, 0x20, 0x00, 0x50, 0x00, 0x72, 0x00, +0x6f, 0x00, 0x20, 0x00, 0x66, 0x00, 0x61, 0x00, +0x6d, 0x00, 0x69, 0x00, 0x6c, 0x00, 0x79, 0x00, +0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x74, 0x00, +0x68, 0x00, 0x20, 0x00, 0x47, 0x00, 0x72, 0x00, +0x65, 0x00, 0x65, 0x00, 0x6b, 0x00, 0x20, 0x00, +0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, 0x00, +0x43, 0x00, 0x79, 0x00, 0x72, 0x00, 0x69, 0x00, +0x6c, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x63, 0x00, +0x20, 0x00, 0x52, 0x00, 0x6f, 0x00, 0x6d, 0x00, +0x61, 0x00, 0x6e, 0x00, 0x73, 0x30, 0x0d, 0x06, +0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, +0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, +0x86, 0xc8, 0x17, 0xe3, 0x16, 0x07, 0x8d, 0x48, +0x05, 0x72, 0xcb, 0x68, 0x5d, 0xa3, 0x02, 0xfb, +0x27, 0x5b, 0x76, 0x7f, 0xbf, 0x5a, 0x4f, 0x52, +0x62, 0x26, 0x7a, 0xff, 0x9a, 0x44, 0x8a, 0xdb, +0x82, 0xd3, 0xd3, 0x79, 0x34, 0x01, 0x02, 0x78, +0xb0, 0x80, 0x77, 0xfc, 0xf9, 0xf9, 0x17, 0xd4, +0x0f, 0x8a, 0x06, 0x4b, 0xd9, 0xc4, 0x0d, 0xca, +0x92, 0xbf, 0xae, 0x17, 0xd7, 0x78, 0x44, 0xae, +0xd3, 0xcd, 0x36, 0xa3, 0xc7, 0x90, 0xaf, 0xaa, +0xb8, 0x69, 0xbe, 0x59, 0xd7, 0x1d, 0x1c, 0x34, +0x31, 0x7b, 0x9c, 0xaf, 0x74, 0xae, 0xff, 0xf8, +0x87, 0x30, 0x0b, 0xb3, 0xae, 0x5a, 0xdb, 0xb4, +0x07, 0xcf, 0x26, 0x8d, 0xfd, 0xdf, 0x7e, 0x32, +0xdd, 0x82, 0xb4, 0x37, 0x9f, 0x26, 0x76, 0xae, +0x30, 0x48, 0xa6, 0xd3, 0xc2, 0x02, 0xdc, 0xcd, +0x34, 0x18, 0x9a, 0xb1, 0x02, 0xa8, 0xe8, 0x04, +0x4e, 0xc5, 0xa8, 0xd5, 0x71, 0xda, 0x9c, 0x0e, +0xa2, 0x26, 0xd3, 0xca, 0x39, 0x4e, 0x78, 0x58, +0xaf, 0x2e, 0x52, 0xa4, 0xed, 0xc1, 0x4c, 0x20, +0x03, 0xc0, 0x4d, 0xd2, 0xef, 0xed, 0xf6, 0x58, +0x5f, 0x30, 0x88, 0xf5, 0x79, 0xc4, 0xdd, 0x66, +0xdb, 0xa7, 0xe2, 0x76, 0xe2, 0xb5, 0x31, 0x67, +0xc7, 0xc0, 0x0d, 0x28, 0xe6, 0x52, 0x75, 0x1a, +0x69, 0x8d, 0x1d, 0xfe, 0xa2, 0xa3, 0x53, 0xda, +0xc4, 0x81, 0xef, 0xa7, 0x41, 0x6e, 0xb1, 0x07, +0xbb, 0x9a, 0x74, 0x63, 0xa9, 0xdc, 0x4b, 0x87, +0x31, 0xa3, 0x18, 0xdf, 0x11, 0xa4, 0x6b, 0x05, +0xa2, 0xe2, 0xc4, 0x7d, 0x6b, 0x37, 0xc0, 0x84, +0x5a, 0xae, 0xa7, 0x1f, 0x85, 0x30, 0x97, 0x49, +0x16, 0x76, 0x5e, 0xfc, 0xcd, 0x1a, 0xe5, 0x90, +0x58, 0x4f, 0x45, 0xbd, 0xe7, 0xda, 0xb1, 0xae, +0x05, 0xf1, 0xa8, 0x91, 0xb3, 0xbd, 0xf3, 0x88, +0xa1, 0x82, 0x02, 0x0b, 0x30, 0x82, 0x02, 0x07, +0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, +0x01, 0x09, 0x06, 0x31, 0x82, 0x01, 0xf8, 0x30, +0x82, 0x01, 0xf4, 0x02, 0x01, 0x01, 0x30, 0x72, +0x30, 0x5e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, +0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, +0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, +0x13, 0x14, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, +0x65, 0x63, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, +0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x30, +0x30, 0x2e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, +0x27, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, +0x63, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, +0x74, 0x61, 0x6d, 0x70, 0x69, 0x6e, 0x67, 0x20, +0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, +0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x32, +0x02, 0x10, 0x0e, 0xcf, 0xf4, 0x38, 0xc8, 0xfe, +0xbf, 0x35, 0x6e, 0x04, 0xd8, 0x6a, 0x98, 0x1b, +0x1a, 0x50, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, +0x03, 0x02, 0x1a, 0x05, 0x00, 0xa0, 0x5d, 0x30, +0x18, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, +0x0d, 0x01, 0x09, 0x03, 0x31, 0x0b, 0x06, 0x09, +0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, +0x01, 0x30, 0x1c, 0x06, 0x09, 0x2a, 0x86, 0x48, +0x86, 0xf7, 0x0d, 0x01, 0x09, 0x05, 0x31, 0x0f, +0x17, 0x0d, 0x31, 0x34, 0x30, 0x37, 0x30, 0x37, +0x31, 0x37, 0x35, 0x36, 0x33, 0x37, 0x5a, 0x30, +0x23, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, +0x0d, 0x01, 0x09, 0x04, 0x31, 0x16, 0x04, 0x14, +0x8a, 0xc0, 0xee, 0x10, 0x5c, 0x23, 0x61, 0xf7, +0x0a, 0xe9, 0x1c, 0xda, 0x30, 0x63, 0x7b, 0x7a, +0x46, 0x4a, 0x62, 0x2f, 0x30, 0x0d, 0x06, 0x09, +0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, +0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x56, +0xc7, 0xec, 0xea, 0xab, 0x2c, 0x86, 0x8e, 0xaa, +0xa8, 0x12, 0xab, 0x1b, 0xb9, 0x7c, 0x80, 0x7f, +0xf5, 0x94, 0x49, 0xf9, 0xf8, 0x5d, 0x5b, 0xe4, +0x2b, 0x7a, 0x4c, 0x77, 0x17, 0x0e, 0x71, 0xaf, +0x05, 0x9d, 0x7d, 0xf9, 0x5e, 0xd5, 0x50, 0xeb, +0xf7, 0x6c, 0x6a, 0x8f, 0x64, 0xd0, 0x4d, 0x6f, +0x75, 0x9e, 0x34, 0x26, 0x34, 0xff, 0x2e, 0xbc, +0x7d, 0x56, 0x86, 0x00, 0x67, 0xf1, 0x41, 0xa3, +0x95, 0x92, 0xa0, 0xf1, 0x6d, 0x9b, 0xc5, 0x5b, +0x26, 0x34, 0xf8, 0x3a, 0xec, 0xc6, 0x56, 0x28, +0x57, 0x99, 0xa8, 0xfd, 0xbb, 0x3b, 0xec, 0xd3, +0x40, 0x9b, 0xfd, 0xc2, 0x6d, 0xcd, 0x97, 0x4e, +0xb6, 0x0f, 0xe1, 0x3b, 0x0e, 0xc1, 0xf1, 0x85, +0xe3, 0x10, 0x8a, 0x39, 0x85, 0xcd, 0x7a, 0xe0, +0x4f, 0xb7, 0x6a, 0xd4, 0xd9, 0x83, 0x64, 0x72, +0x9a, 0xb1, 0xfb, 0xe6, 0x3c, 0xca, 0xbb, 0x47, +0x4d, 0xab, 0xf8, 0x62, 0x44, 0xad, 0xd9, 0x96, +0x1f, 0xfa, 0x9a, 0x39, 0xd7, 0xc0, 0xa2, 0x07, +0x14, 0x9d, 0x49, 0xb9, 0x92, 0x92, 0x0a, 0x74, +0xcd, 0xa5, 0x24, 0xc4, 0x46, 0x33, 0x0d, 0x57, +0xf9, 0x99, 0x26, 0xf2, 0xae, 0xf7, 0x0c, 0xba, +0xf6, 0xec, 0xc1, 0x8a, 0xee, 0x2f, 0xde, 0x3a, +0x89, 0x9b, 0x4c, 0x57, 0x9d, 0xd3, 0xc9, 0xc3, +0xc5, 0xce, 0x72, 0x02, 0xb5, 0xf7, 0x7d, 0x5c, +0x57, 0xa2, 0x42, 0xd8, 0xde, 0xc0, 0xee, 0xc3, +0x1a, 0x82, 0x28, 0x59, 0x36, 0xa8, 0xe2, 0x85, +0x98, 0xf8, 0x54, 0xc2, 0x04, 0xa4, 0x74, 0xe6, +0x45, 0x40, 0xdb, 0xce, 0x6e, 0x93, 0x50, 0xd0, +0x20, 0x7f, 0x4f, 0x46, 0xd4, 0xd1, 0x13, 0xd0, +0x57, 0x3b, 0xc2, 0x4b, 0x1d, 0x13, 0x3e, 0x6e, +0x4e, 0x09, 0x82, 0x33, 0x73, 0x60, 0x77, 0x33, +0x93, 0xff, 0x23, 0x6a, 0xd0, 0xc8, 0x9b, 0x00 \ No newline at end of file diff --git a/Sparky-core/src/sp/entity/Entity.cpp b/Sparky-core/src/sp/entity/Entity.cpp new file mode 100644 index 00000000..9ff7d641 --- /dev/null +++ b/Sparky-core/src/sp/entity/Entity.cpp @@ -0,0 +1,30 @@ +#include "sp/sp.h" +#include "Entity.h" + +namespace sp { namespace entity { + + using namespace component; + + Entity::Entity() + { + } + + Entity::Entity(graphics::Sprite* sprite, const maths::mat4& transform) + { + AddComponent(spnew SpriteComponent(sprite)); + AddComponent(spnew TransformComponent(transform)); + } + + Entity::Entity(graphics::Mesh* mesh, const maths::mat4& transform) + { + AddComponent(spnew MeshComponent(mesh)); + AddComponent(spnew TransformComponent(transform)); + } + + void Entity::AddComponent(component::Component* component) + { + SP_ASSERT(component->GetType()); + m_Components[component->GetType()] = component; + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/entity/Entity.h b/Sparky-core/src/sp/entity/Entity.h new file mode 100644 index 00000000..284d737e --- /dev/null +++ b/Sparky-core/src/sp/entity/Entity.h @@ -0,0 +1,44 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" + +#include "component/Components.h" + +namespace sp { namespace entity { + + class SP_API Entity + { + protected: + std::unordered_map m_Components; + public: + Entity(); + Entity(graphics::Sprite* sprite, const maths::mat4& transform = maths::mat4::Identity()); + Entity(graphics::Mesh* mesh, const maths::mat4& transform = maths::mat4::Identity()); + + void AddComponent(component::Component* component); + + template + const T* GetComponent() const + { + return GetComponentInternal(); + } + + template + T* GetComponent() + { + return (T*)GetComponentInternal(); + } + private: + template + const T* GetComponentInternal() const + { + component::ComponentType* type = T::GetStaticType(); + auto it = m_Components.find(type); + if (it == m_Components.end()) + return nullptr; + return (T*)it->second; // TODO: ... + } + }; + +} } diff --git a/Sparky-core/src/sp/entity/Scene2D.cpp b/Sparky-core/src/sp/entity/Scene2D.cpp new file mode 100644 index 00000000..b1e1bf61 --- /dev/null +++ b/Sparky-core/src/sp/entity/Scene2D.cpp @@ -0,0 +1,2 @@ +#include "sp/sp.h" +#include "Scene2D.h" \ No newline at end of file diff --git a/Sparky-core/src/sp/entity/Scene2D.h b/Sparky-core/src/sp/entity/Scene2D.h new file mode 100644 index 00000000..68571fad --- /dev/null +++ b/Sparky-core/src/sp/entity/Scene2D.h @@ -0,0 +1,25 @@ +#pragma once + +namespace sp { + + class Scene2D + { + private: + std::vector m_Entities; + Camera* m_Camera; + public: + Scene2D(); + Scene2D(Camera* camera); + ~Scene2D(); + + void Add(entity::Entity* entity); + void SetCamera(Camera* camera); + + void Update(); + void Render(Renderer2D& renderer); + + inline Camera* GetCamera() const { return m_Camera; } + inline const std::vector& GetEntities() const { return m_Entities; } + }; + +} \ No newline at end of file diff --git a/Sparky-core/src/sp/entity/component/Component.cpp b/Sparky-core/src/sp/entity/component/Component.cpp new file mode 100644 index 00000000..d19ca285 --- /dev/null +++ b/Sparky-core/src/sp/entity/component/Component.cpp @@ -0,0 +1,8 @@ +#include "sp/sp.h" +#include "Component.h" + +namespace sp { namespace entity { namespace component { + + + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/entity/component/Component.h b/Sparky-core/src/sp/entity/component/Component.h new file mode 100644 index 00000000..1136c157 --- /dev/null +++ b/Sparky-core/src/sp/entity/component/Component.h @@ -0,0 +1,27 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/Types.h" +#include "sp/String.h" + +namespace sp { namespace entity { + class Entity; +} } + +namespace sp { namespace entity { namespace component { + + struct SP_API ComponentType + { + String name; + }; + + class SP_API Component + { + protected: + Entity* m_Entity; + public: + virtual Entity* GetEntity() { return m_Entity; } + virtual ComponentType* GetType() const { return nullptr; } + }; + +} } } diff --git a/Sparky-core/src/sp/entity/component/Components.h b/Sparky-core/src/sp/entity/component/Components.h new file mode 100644 index 00000000..66595a36 --- /dev/null +++ b/Sparky-core/src/sp/entity/component/Components.h @@ -0,0 +1,8 @@ +#pragma once + +// Header file with all component includes + +#include "Component.h" +#include "TransformComponent.h" +#include "MeshComponent.h" +#include "SpriteComponent.h" diff --git a/Sparky-core/src/sp/entity/component/MeshComponent.cpp b/Sparky-core/src/sp/entity/component/MeshComponent.cpp new file mode 100644 index 00000000..2540e5f7 --- /dev/null +++ b/Sparky-core/src/sp/entity/component/MeshComponent.cpp @@ -0,0 +1,11 @@ +#include "sp/sp.h" +#include "MeshComponent.h" + +namespace sp { namespace entity { namespace component { + + MeshComponent::MeshComponent(graphics::Mesh* mesh) + : mesh(mesh) + { + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/entity/component/MeshComponent.h b/Sparky-core/src/sp/entity/component/MeshComponent.h new file mode 100644 index 00000000..9f61469e --- /dev/null +++ b/Sparky-core/src/sp/entity/component/MeshComponent.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Component.h" + +#include "sp/Common.h" +#include "sp/graphics/Mesh.h" + +namespace sp { namespace entity { namespace component { + + class SP_API MeshComponent : public Component + { + public: + graphics::Mesh* mesh; + public: + MeshComponent(graphics::Mesh* mesh); + + static ComponentType* GetStaticType() + { + static ComponentType type({ "Mesh" }); + return &type; + } + + inline virtual ComponentType* GetType() const override { return GetStaticType(); } + }; + +} } } diff --git a/Sparky-core/src/sp/entity/component/SpriteComponent.cpp b/Sparky-core/src/sp/entity/component/SpriteComponent.cpp new file mode 100644 index 00000000..26b35f8d --- /dev/null +++ b/Sparky-core/src/sp/entity/component/SpriteComponent.cpp @@ -0,0 +1,11 @@ +#include "sp/sp.h" +#include "SpriteComponent.h" + +namespace sp { namespace entity { namespace component { + + SpriteComponent::SpriteComponent(graphics::Sprite* sprite) + : sprite(sprite) + { + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/entity/component/SpriteComponent.h b/Sparky-core/src/sp/entity/component/SpriteComponent.h new file mode 100644 index 00000000..2bbbb4a0 --- /dev/null +++ b/Sparky-core/src/sp/entity/component/SpriteComponent.h @@ -0,0 +1,27 @@ +#pragma once + +#include "Component.h" + +#include "sp/Common.h" +#include "sp/graphics/Sprite.h" + +namespace sp { namespace entity { namespace component { + + class SP_API SpriteComponent : public Component + { + public: + graphics::Sprite* sprite; + public: + SpriteComponent(graphics::Sprite* sprite); + + static ComponentType* GetStaticType() + { + static ComponentType type({ "Sprite" }); + return &type; + } + + inline virtual ComponentType* GetType() const override { return GetStaticType(); } + }; + +} } } + diff --git a/Sparky-core/src/sp/entity/component/TransformComponent.cpp b/Sparky-core/src/sp/entity/component/TransformComponent.cpp new file mode 100644 index 00000000..1b0a04bc --- /dev/null +++ b/Sparky-core/src/sp/entity/component/TransformComponent.cpp @@ -0,0 +1,11 @@ +#include "sp/sp.h" +#include "TransformComponent.h" + +namespace sp { namespace entity { namespace component { + + TransformComponent::TransformComponent(const maths::mat4& transform) + : transform(transform) + { + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/entity/component/TransformComponent.h b/Sparky-core/src/sp/entity/component/TransformComponent.h new file mode 100644 index 00000000..f1b32fe6 --- /dev/null +++ b/Sparky-core/src/sp/entity/component/TransformComponent.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Component.h" + +#include "sp/Common.h" +#include + +namespace sp { namespace entity { namespace component { + + class SP_API TransformComponent : public Component + { + public: + maths::mat4 transform; + public: + TransformComponent(const maths::mat4& transform); + + static ComponentType* GetStaticType() + { + static ComponentType type({ "Transform" }); + return &type; + } + + inline virtual ComponentType* GetType() const override { return GetStaticType(); } + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/events/Event.cpp b/Sparky-core/src/sp/events/Event.cpp new file mode 100644 index 00000000..8d8573cf --- /dev/null +++ b/Sparky-core/src/sp/events/Event.cpp @@ -0,0 +1,34 @@ +#include "sp/sp.h" +#include "Event.h" + +namespace sp { namespace events { + + Event::Event(Type type) + : m_Type(type), m_Handled(false) + { + } + + String Event::ToString() const + { + return "Event: "; + } + + String Event::TypeToString(Type type) + { + switch (type) + { + case Type::KEY_PRESSED: + return "KEY_PRESSED"; + case Type::KEY_RELEASED: + return "KEY_RELEASED"; + case Type::MOUSE_PRESSED: + return "MOUSE_PRESSED"; + case Type::MOUSE_RELEASED: + return "MOUSE_RELEASED"; + case Type::MOUSE_MOVED: + return "MOUSE_MOVED"; + } + return "INVALID"; + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/events/Event.h b/Sparky-core/src/sp/events/Event.h new file mode 100644 index 00000000..5c632722 --- /dev/null +++ b/Sparky-core/src/sp/events/Event.h @@ -0,0 +1,44 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/String.h" + +namespace sp { namespace events { + +#undef MOUSE_PRESSED +#undef MOUSE_RELEASED +#undef MOUSE_MOVED +#undef KEY_PRESSED +#undef KEY_RELEASED + + class SP_API Event + { + private: + friend class EventDispatcher; + public: + enum class Type + { + KEY_PRESSED = BIT(0), + KEY_RELEASED = BIT(1), + + MOUSE_PRESSED = BIT(2), + MOUSE_RELEASED = BIT(3), + MOUSE_MOVED = BIT(4), + + WINDOW_RESIZE = BIT(5) + }; + protected: + bool m_Handled; + Type m_Type; + protected: + Event(Type type); + public: + inline Type GetType() const { return m_Type; } + inline bool IsHandled() const { return m_Handled; } + + virtual String ToString() const; + + static String TypeToString(Type type); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/events/EventDispatcher.h b/Sparky-core/src/sp/events/EventDispatcher.h new file mode 100644 index 00000000..be724ec7 --- /dev/null +++ b/Sparky-core/src/sp/events/EventDispatcher.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Events.h" +#include + +namespace sp { namespace events { + + class EventDispatcher + { + private: + Event& m_Event; + public: + EventDispatcher(Event& event) + : m_Event(event) {} + + template + void Dispatch(std::function func) + { + if ((int32)m_Event.GetType() & (int32)T::GetStaticType()) + m_Event.m_Handled = func(*(T*)&m_Event); + } + }; + +} } diff --git a/Sparky-core/src/sp/events/Events.h b/Sparky-core/src/sp/events/Events.h new file mode 100644 index 00000000..3d904939 --- /dev/null +++ b/Sparky-core/src/sp/events/Events.h @@ -0,0 +1,9 @@ +#pragma once + +#include "Event.h" +#include "IEventListener.h" +#include "KeyEvent.h" +#include "MouseEvent.h" +#include "WindowEvent.h" + +#include "EventDispatcher.h" \ No newline at end of file diff --git a/Sparky-core/src/sp/events/IEventListener.h b/Sparky-core/src/sp/events/IEventListener.h new file mode 100644 index 00000000..f66edf74 --- /dev/null +++ b/Sparky-core/src/sp/events/IEventListener.h @@ -0,0 +1,13 @@ +#pragma once + +#include "Event.h" + +namespace sp { namespace events { + + class SP_API IEventListener + { + public: + virtual void OnEvent(Event& event) = 0; + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/events/KeyEvent.cpp b/Sparky-core/src/sp/events/KeyEvent.cpp new file mode 100644 index 00000000..08a9e90e --- /dev/null +++ b/Sparky-core/src/sp/events/KeyEvent.cpp @@ -0,0 +1,21 @@ +#include "sp/sp.h" +#include "KeyEvent.h" + +namespace sp { namespace events { + + KeyEvent::KeyEvent(int32 keyCode, Event::Type type) + : Event(type), m_KeyCode(keyCode) + { + } + + KeyPressedEvent::KeyPressedEvent(int32 button, int32 repeat, int32 modifiers) + : KeyEvent(button, KeyPressedEvent::GetStaticType()), m_Repeat(repeat), m_Modifiers(modifiers) + { + } + + KeyReleasedEvent::KeyReleasedEvent(int32 button) + : KeyEvent(button, KeyReleasedEvent::GetStaticType()) + { + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/events/KeyEvent.h b/Sparky-core/src/sp/events/KeyEvent.h new file mode 100644 index 00000000..0d853db3 --- /dev/null +++ b/Sparky-core/src/sp/events/KeyEvent.h @@ -0,0 +1,46 @@ +#pragma once + +#include "Event.h" + + +namespace sp { namespace events { + + class SP_API KeyEvent : public Event + { + protected: + int32 m_KeyCode; + int32 m_Count; + public: + KeyEvent(int32 keyCode, Event::Type type); + + inline int32 GetKeyCode() const { return m_KeyCode; } + + inline static int32 GetStaticType() { return (int32)Event::Type::KEY_PRESSED | (int32)Event::Type::KEY_RELEASED; } + }; + +#pragma warning(disable : 4800) + class SP_API KeyPressedEvent : public KeyEvent + { + private: + int32 m_Repeat; + int32 m_Modifiers; + public: + KeyPressedEvent(int32 button, int32 repeat, int32 modifiers); + + inline int32 GetRepeat() const { return m_Repeat; } + inline int32 GetModifiers() const { return m_Modifiers; } + inline bool IsModifier(int32 modifier) const { return (bool)(m_Modifiers & modifier); } + + inline static Type GetStaticType() { return Event::Type::KEY_PRESSED; } + }; +#pragma warning(default : 4800) + + class SP_API KeyReleasedEvent : public KeyEvent + { + public: + KeyReleasedEvent(int32 button); + + inline static Type GetStaticType() { return Event::Type::KEY_RELEASED; } + }; + +} } diff --git a/Sparky-core/src/sp/events/MouseEvent.cpp b/Sparky-core/src/sp/events/MouseEvent.cpp new file mode 100644 index 00000000..e0256d6f --- /dev/null +++ b/Sparky-core/src/sp/events/MouseEvent.cpp @@ -0,0 +1,33 @@ +#include "sp/sp.h" +#include "MouseEvent.h" + +namespace sp { namespace events { + + MouseButtonEvent::MouseButtonEvent(int32 button, float x, float y, Type type) + : Event(type), m_Button(button), m_Position(maths::vec2(x, y)) + { + } + + MousePressedEvent::MousePressedEvent(int32 button, float x, float y) + : MouseButtonEvent(button, x, y, MousePressedEvent::GetStaticType()) + { + } + + String MousePressedEvent::ToString() const + { + char buffer[256]; + sprintf(buffer, "MouseReleasedEvent: (%d, %f, %f)", GetButton(), GetX(), GetY()); + return String(buffer); + } + + MouseReleasedEvent::MouseReleasedEvent(int32 button, float x, float y) + : MouseButtonEvent(button, x, y, MouseReleasedEvent::GetStaticType()) + { + } + + MouseMovedEvent::MouseMovedEvent(float x, float y, bool dragged) + : Event(MouseMovedEvent::GetStaticType()), m_Position(maths::vec2(x, y)), m_Dragged(dragged) + { + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/events/MouseEvent.h b/Sparky-core/src/sp/events/MouseEvent.h new file mode 100644 index 00000000..1af49d3e --- /dev/null +++ b/Sparky-core/src/sp/events/MouseEvent.h @@ -0,0 +1,58 @@ +#pragma once + +#include "Event.h" +#include "../maths/vec2.h" + +namespace sp { namespace events { + + class SP_API MouseButtonEvent : public Event + { + protected: + int32 m_Button; + maths::vec2 m_Position; + protected: + MouseButtonEvent(int32 button, float x, float y, Event::Type type); + public: + inline const int32 GetButton() const { return m_Button; } + inline const float GetX() const { return m_Position.x; } + inline const float GetY() const { return m_Position.y; } + inline const maths::vec2& GetPosition() const { return m_Position; } + + inline static int32 GetStaticType() { return (int32)Event::Type::MOUSE_PRESSED | (int32)Event::Type::MOUSE_RELEASED; } + }; + + class SP_API MousePressedEvent : public MouseButtonEvent + { + public: + MousePressedEvent(int32 button, float x, float y); + + String ToString() const override; + + inline static Type GetStaticType() { return Event::Type::MOUSE_PRESSED; } + }; + + class SP_API MouseReleasedEvent : public MouseButtonEvent + { + public: + MouseReleasedEvent(int32 button, float x, float y); + + inline static Type GetStaticType() { return Event::Type::MOUSE_RELEASED; } + }; + + class SP_API MouseMovedEvent : public Event + { + private: + maths::vec2 m_Position; + bool m_Dragged; + public: + MouseMovedEvent(float x, float y, bool dragged); + + inline const float GetX() const { return m_Position.x; } + inline const float GetY() const { return m_Position.y; } + inline const maths::vec2& GetPosition() const { return m_Position; } + inline const bool IsDragged() const { return m_Dragged; } + + inline static Type GetStaticType() { return Event::Type::MOUSE_MOVED; } + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/events/WindowEvent.cpp b/Sparky-core/src/sp/events/WindowEvent.cpp new file mode 100644 index 00000000..34f14f25 --- /dev/null +++ b/Sparky-core/src/sp/events/WindowEvent.cpp @@ -0,0 +1,11 @@ +#include "sp/sp.h" +#include "WindowEvent.h" + +namespace sp { namespace events { + + ResizeWindowEvent::ResizeWindowEvent(uint width, uint height) + : Event(ResizeWindowEvent::GetStaticType()), m_Size(maths::tvec2(width, height)) + { + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/events/WindowEvent.h b/Sparky-core/src/sp/events/WindowEvent.h new file mode 100644 index 00000000..bd5ce8e9 --- /dev/null +++ b/Sparky-core/src/sp/events/WindowEvent.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Event.h" +#include "sp/maths/tvec2.h" + +namespace sp { namespace events { + + class SP_API ResizeWindowEvent : public Event + { + protected: + maths::tvec2 m_Size; + public: + ResizeWindowEvent(uint width, uint height); + + inline const maths::tvec2& GetSize() const { return m_Size; } + inline const uint GetWidth() const { return m_Size.x; } + inline const uint GetHeight() const { return m_Size.y; } + public: + inline static Type GetStaticType() { return Event::Type::WINDOW_RESIZE; } + }; + +} } diff --git a/Sparky-core/src/sp/graphics/API/BufferLayout.cpp b/Sparky-core/src/sp/graphics/API/BufferLayout.cpp new file mode 100644 index 00000000..802c65ac --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/BufferLayout.cpp @@ -0,0 +1,17 @@ +#include "sp/sp.h" +#include "BufferLayout.h" + +namespace sp { namespace graphics { namespace API { + + BufferLayout::BufferLayout() + : m_Size(0) + { + } + + void BufferLayout::Push(const String& name, uint type, uint size, uint count, bool normalized) + { + m_Layout.push_back({ name, type, size, count, m_Size, normalized }); + m_Size += size * count; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/BufferLayout.h b/Sparky-core/src/sp/graphics/API/BufferLayout.h new file mode 100644 index 00000000..d98e5ded --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/BufferLayout.h @@ -0,0 +1,130 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" +#include "sp/Types.h" +#include "sp/maths/maths.h" + +#include "Context.h" + +#include "sp/platform/opengl/GLTypes.h" +#include "sp/platform/directx/DXTypes.h" + +namespace sp { namespace graphics { namespace API { + + struct SP_API BufferElement + { + String name; + uint type; + uint size; + uint count; + uint offset; + bool normalized; + }; + + class SP_API BufferLayout + { + private: + uint m_Size; + std::vector m_Layout; + public: + BufferLayout(); + + template + void Push(const String& name, uint count = 1, bool normalized = false) + { + SP_ASSERT(false, "Unkown type!"); + } + + template<> + void Push(const String& name, uint count, bool normalized) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: + Push(name, GL_FLOAT, sizeof(float), count, normalized); + break; + case RenderAPI::DIRECT3D: + Push(name, DX_TYPE_R32_FLOAT, sizeof(float), count, normalized); + break; + } + } + + template<> + void Push(const String& name, uint count, bool normalized) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: + Push(name, GL_UNSIGNED_INT, sizeof(uint), count, normalized); + break; + case RenderAPI::DIRECT3D: + Push(name, DX_TYPE_R32_UINT, sizeof(uint), count, normalized); + break; + } + } + + template<> + void Push(const String& name, uint count, bool normalized) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: + Push(name, GL_UNSIGNED_BYTE, sizeof(byte), count, normalized); + break; + case RenderAPI::DIRECT3D: + Push(name, DX_TYPE_R8G8B8A8_UNORM, sizeof(byte) * 4, 1, normalized); + break; + } + } + + template<> + void Push(const String& name, uint count, bool normalized) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: + Push(name, GL_FLOAT, sizeof(float), 2, normalized); + break; + case RenderAPI::DIRECT3D: + Push(name, DX_TYPE_R32G32_FLOAT, sizeof(maths::vec2), count, normalized); + break; + } + } + + template<> + void Push(const String& name, uint count, bool normalized) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: + Push(name, GL_FLOAT, sizeof(float), 3, normalized); + break; + case RenderAPI::DIRECT3D: + Push(name, DX_TYPE_R32G32B32_FLOAT, sizeof(maths::vec3), count, normalized); + break; + } + } + + template<> + void Push(const String& name, uint count, bool normalized) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: + Push(name, GL_FLOAT, sizeof(float), 4, normalized); + break; + case RenderAPI::DIRECT3D: + Push(name, DX_TYPE_R32G32B32A32_FLOAT, sizeof(maths::vec4), count, normalized); + break; + } + } + + inline const std::vector& GetLayout() const { return m_Layout; } + inline uint GetStride() const { return m_Size; } + private: + void Push(const String& name, uint type, uint size, uint count, bool normalized); + }; + + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/Context.cpp b/Sparky-core/src/sp/graphics/API/Context.cpp new file mode 100644 index 00000000..cf267cdd --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/Context.cpp @@ -0,0 +1,23 @@ +#include "sp/sp.h" +#include "Context.h" + +#include "sp/platform/opengl/GLContext.h" +#include "sp/platform/directx/DXContext.h" + +#include "sp/system/Memory.h" + +namespace sp { namespace graphics { namespace API { + + Context* Context::s_Context = nullptr; + RenderAPI Context::s_RenderAPI = RenderAPI::NONE; + + void Context::Create(WindowProperties properties, void* deviceContext) + { + switch (GetRenderAPI()) + { + case RenderAPI::OPENGL: s_Context = spnew GLContext(properties, deviceContext); break; + case RenderAPI::DIRECT3D: s_Context = spnew D3DContext(properties, deviceContext); break; + } + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/Context.h b/Sparky-core/src/sp/graphics/API/Context.h new file mode 100644 index 00000000..ee79e5de --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/Context.h @@ -0,0 +1,25 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/app/Window.h" + +namespace sp { namespace graphics { namespace API { + + enum class SP_API RenderAPI + { + NONE, OPENGL, DIRECT3D + }; + + class SP_API Context + { + protected: + static Context* s_Context; + static RenderAPI s_RenderAPI; + public: + static void Create(WindowProperties properties, void* deviceContext); + + static RenderAPI GetRenderAPI() { return s_RenderAPI; } + static void SetRenderAPI(RenderAPI api) { s_RenderAPI = api; } + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/Framebuffer.cpp b/Sparky-core/src/sp/graphics/API/Framebuffer.cpp new file mode 100644 index 00000000..28658f64 --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/Framebuffer.cpp @@ -0,0 +1,8 @@ +#include "sp/sp.h" +#include "Framebuffer.h" + +namespace sp { namespace graphics { + + + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/Framebuffer.h b/Sparky-core/src/sp/graphics/API/Framebuffer.h new file mode 100644 index 00000000..428020f9 --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/Framebuffer.h @@ -0,0 +1,27 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/Types.h" + +#include "sp/maths/vec4.h" +#include "sp/maths/tvec2.h" + +#include "Texture.h" + +namespace sp { namespace graphics { + + class SP_API Framebuffer + { + public: + virtual void Bind() const = 0; + virtual void Unbind() const = 0; + virtual void Clear() = 0; + + virtual uint GetWidth() const = 0; + virtual uint GetHeight() const = 0; + virtual API::Texture* GetTexture() const = 0; + protected: + virtual void Init() {}; + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/Framebuffer2D.cpp b/Sparky-core/src/sp/graphics/API/Framebuffer2D.cpp new file mode 100644 index 00000000..c1f65ca2 --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/Framebuffer2D.cpp @@ -0,0 +1,23 @@ +#include "sp/sp.h" +#include "Framebuffer2D.h" + +#include "Context.h" + +#include "sp/platform/opengl/GLFramebuffer2D.h" +#include "sp/platform/directx/DXFramebuffer2D.h" + +#include "sp/system/Memory.h" + +namespace sp { namespace graphics { + + Framebuffer2D* Framebuffer2D::Create(uint width, uint height) + { + switch (API::Context::GetRenderAPI()) + { + case API::RenderAPI::OPENGL: return spnew GLFramebuffer2D(width, height); + case API::RenderAPI::DIRECT3D: return spnew D3DFramebuffer2D(width, height); + } + return nullptr; + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/Framebuffer2D.h b/Sparky-core/src/sp/graphics/API/Framebuffer2D.h new file mode 100644 index 00000000..53cc0009 --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/Framebuffer2D.h @@ -0,0 +1,15 @@ +#pragma once + +#include "Framebuffer.h" + +namespace sp { namespace graphics { + + class SP_API Framebuffer2D : public Framebuffer + { + public: + virtual void SetClearColor(const maths::vec4& color) = 0; + public: + static Framebuffer2D* Create(uint width, uint height); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/FramebufferDepth.cpp b/Sparky-core/src/sp/graphics/API/FramebufferDepth.cpp new file mode 100644 index 00000000..a82d77d2 --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/FramebufferDepth.cpp @@ -0,0 +1,24 @@ +#include "sp/sp.h" +#include "FramebufferDepth.h" + +#include "Context.h" + +#include "sp/platform/opengl/GLFramebufferDepth.h" +#include "sp/platform/directx/DXFramebufferDepth.h" + +#include "sp/system/Memory.h" + +namespace sp { namespace graphics { + + FramebufferDepth* FramebufferDepth::Create(uint width, uint height) + { + switch (API::Context::GetRenderAPI()) + { + case API::RenderAPI::OPENGL: return spnew GLFramebufferDepth(width, height); + case API::RenderAPI::DIRECT3D: return spnew D3DFramebufferDepth(width, height); + } + return nullptr; + } + + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/FramebufferDepth.h b/Sparky-core/src/sp/graphics/API/FramebufferDepth.h new file mode 100644 index 00000000..f2069325 --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/FramebufferDepth.h @@ -0,0 +1,13 @@ +#pragma once + +#include "Framebuffer.h" + +namespace sp { namespace graphics { + + class SP_API FramebufferDepth : public Framebuffer + { + public: + static FramebufferDepth* Create(uint width, uint height); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/IndexBuffer.cpp b/Sparky-core/src/sp/graphics/API/IndexBuffer.cpp new file mode 100644 index 00000000..31ae6083 --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/IndexBuffer.cpp @@ -0,0 +1,31 @@ +#include "sp/sp.h" +#include "IndexBuffer.h" + +#include "sp/platform/opengl/GLIndexBuffer.h" +#include "sp/platform/directx/DXIndexBuffer.h" + +#include "sp/graphics/API/Context.h" + +namespace sp { namespace graphics { namespace API { + + IndexBuffer* IndexBuffer::Create(uint16* data, uint count) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: return spnew GLIndexBuffer(data, count); + case RenderAPI::DIRECT3D: return spnew D3DIndexBuffer(data, count); + } + return nullptr; + } + + IndexBuffer* IndexBuffer::Create(uint* data, uint count) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: return spnew GLIndexBuffer(data, count); + case RenderAPI::DIRECT3D: return spnew D3DIndexBuffer(data, count); + } + return nullptr; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/IndexBuffer.h b/Sparky-core/src/sp/graphics/API/IndexBuffer.h new file mode 100644 index 00000000..ab064933 --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/IndexBuffer.h @@ -0,0 +1,22 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/Types.h" + +#include "sp/graphics/API/VertexBuffer.h" + +namespace sp { namespace graphics { namespace API { + + class SP_API IndexBuffer + { + public: + virtual void Bind() const = 0; + virtual void Unbind() const = 0; + + virtual uint GetCount() const = 0; + public: + static IndexBuffer* Create(uint16* data, uint count); + static IndexBuffer* Create(uint* data, uint count); + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/Texture.cpp b/Sparky-core/src/sp/graphics/API/Texture.cpp new file mode 100644 index 00000000..5e0432fe --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/Texture.cpp @@ -0,0 +1,20 @@ +#include "sp/sp.h" +#include "Texture.h" + +namespace sp { namespace graphics { namespace API { + + TextureWrap Texture::s_WrapMode = TextureWrap::CLAMP; + TextureFilter Texture::s_FilterMode = TextureFilter::LINEAR; + + byte Texture::GetStrideFromFormat(TextureFormat format) + { + switch (format) + { + case TextureFormat::RGB: return 3; + case TextureFormat::RGBA: return 4; + case TextureFormat::LUMINANCE_ALPHA: return 4; + } + return 0; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/Texture.h b/Sparky-core/src/sp/graphics/API/Texture.h new file mode 100644 index 00000000..146b8b45 --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/Texture.h @@ -0,0 +1,100 @@ +#pragma once + +#include "sp/Types.h" +#include "sp/String.h" + +namespace sp { namespace graphics { namespace API { + + enum class SP_API TextureWrap + { + NONE = 0, + REPEAT, + CLAMP, + MIRRORED_REPEAT, + CLAMP_TO_EDGE, + CLAMP_TO_BORDER + }; + + enum class SP_API TextureFilter + { + NONE = 0, + LINEAR, + NEAREST + }; + + enum class SP_API TextureFormat + { + NONE = 0, + RGB, + RGBA, + LUMINANCE, + LUMINANCE_ALPHA + }; + + struct SP_API TextureParameters + { + TextureFormat format; + TextureFilter filter; + TextureWrap wrap; + + TextureParameters() + { + format = TextureFormat::RGBA; + filter = TextureFilter::LINEAR; + wrap = TextureWrap::CLAMP; + } + + TextureParameters(TextureFormat format, TextureFilter filter, TextureWrap wrap) + : format(format), filter(filter), wrap(wrap) + { + } + + TextureParameters(TextureFilter filter) + : format(TextureFormat::RGBA), filter(filter), wrap(TextureWrap::CLAMP) + { + } + + TextureParameters(TextureFilter filter, TextureWrap wrap) + : format(TextureFormat::RGBA), filter(filter), wrap(wrap) + { + } + }; + + struct SP_API TextureLoadOptions + { + bool flipX; + bool flipY; + + TextureLoadOptions() + { + flipX = false; + flipY = false; + } + + TextureLoadOptions(bool flipX, bool flipY) + : flipX(flipX), flipY(flipY) + { + } + }; + + class SP_API Texture + { + protected: + static TextureWrap s_WrapMode; + static TextureFilter s_FilterMode; + public: + virtual ~Texture() {} + + virtual void Bind(uint slot = 0) const = 0; + virtual void Unbind(uint slot = 0) const = 0; + + virtual const String& GetName() const = 0; + virtual const String& GetFilepath() const = 0; + public: + inline static void SetWrap(TextureWrap mode) { s_WrapMode = mode; } + inline static void SetFilter(TextureFilter mode) { s_FilterMode = mode; } + public: + static byte GetStrideFromFormat(TextureFormat format); + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/Texture2D.cpp b/Sparky-core/src/sp/graphics/API/Texture2D.cpp new file mode 100644 index 00000000..56a27bac --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/Texture2D.cpp @@ -0,0 +1,63 @@ +#include "sp/sp.h" +#include "Texture2D.h" + +#include "sp/system/Memory.h" + +#include "sp/platform/opengl/GLTexture2D.h" +#include "sp/platform/directx/DXTexture2D.h" + +#include "sp/graphics/API/Context.h" + +namespace sp { namespace graphics { namespace API { + + Texture2D* Texture2D::Create(uint width, uint height, TextureParameters parameters, TextureLoadOptions loadOptions) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: return spnew GLTexture2D(width, height, parameters, loadOptions); + case RenderAPI::DIRECT3D: return spnew D3DTexture2D(width, height, parameters, loadOptions); + } + return nullptr; + } + + Texture2D* Texture2D::CreateFromFile(const String& filepath, TextureParameters parameters, TextureLoadOptions loadOptions) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: return spnew GLTexture2D(filepath, filepath, parameters, loadOptions); + case RenderAPI::DIRECT3D: return spnew D3DTexture2D(filepath, filepath, parameters, loadOptions); + } + return nullptr; + } + + Texture2D* Texture2D::CreateFromFile(const String& filepath, TextureLoadOptions loadOptions) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: return spnew GLTexture2D(filepath, filepath, TextureParameters(), loadOptions); + case RenderAPI::DIRECT3D: return spnew D3DTexture2D(filepath, filepath, TextureParameters(), loadOptions); + } + return nullptr; + } + + Texture2D* Texture2D::CreateFromFile(const String& name, const String& filepath, TextureParameters parameters, TextureLoadOptions loadOptions) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: return spnew GLTexture2D(name, filepath, parameters, loadOptions); + case RenderAPI::DIRECT3D: return spnew D3DTexture2D(name, filepath, parameters, loadOptions); + } + return nullptr; + } + + Texture2D* Texture2D::CreateFromFile(const String& name, const String& filepath, TextureLoadOptions loadOptions) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: return spnew GLTexture2D(name, filepath, TextureParameters(), loadOptions); + case RenderAPI::DIRECT3D: return spnew D3DTexture2D(name, filepath, TextureParameters(), loadOptions); + } + return nullptr; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/Texture2D.h b/Sparky-core/src/sp/graphics/API/Texture2D.h new file mode 100644 index 00000000..496292b6 --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/Texture2D.h @@ -0,0 +1,23 @@ +#pragma once + +#include "Texture.h" + +namespace sp { namespace graphics { namespace API { + + class SP_API Texture2D : public Texture + { + public: + virtual void SetData(const void* pixels) = 0; + virtual void SetData(uint color) = 0; + + virtual uint GetWidth() const = 0; + virtual uint GetHeight() const = 0; + public: + static Texture2D* Create(uint width, uint height, TextureParameters parameters = TextureParameters(), TextureLoadOptions loadOptions = TextureLoadOptions()); + static Texture2D* CreateFromFile(const String& filepath, TextureParameters parameters = TextureParameters(), TextureLoadOptions loadOptions = TextureLoadOptions()); + static Texture2D* CreateFromFile(const String& filepath, TextureLoadOptions loadOptions); + static Texture2D* CreateFromFile(const String& name, const String& filepath, TextureParameters parameters = TextureParameters(), TextureLoadOptions loadOptions = TextureLoadOptions()); + static Texture2D* CreateFromFile(const String& name, const String& filepath, TextureLoadOptions loadOptions); + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/TextureCube.cpp b/Sparky-core/src/sp/graphics/API/TextureCube.cpp new file mode 100644 index 00000000..a882b246 --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/TextureCube.cpp @@ -0,0 +1,43 @@ +#include "sp/sp.h" +#include "TextureCube.h" + +#include "sp/system/Memory.h" + +#include "sp/platform/opengl/GLTextureCube.h" +#include "sp/platform/directx/DXTextureCube.h" + +#include "sp/graphics/API/Context.h" + +namespace sp { namespace graphics { namespace API { + + TextureCube* TextureCube::CreateFromFile(const String& filepath) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: return spnew GLTextureCube(filepath, filepath); + case RenderAPI::DIRECT3D: return spnew D3DTextureCube(filepath, filepath); + } + return nullptr; + } + + TextureCube* TextureCube::CreateFromFiles(const String* files) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: return spnew GLTextureCube(files[0], files); + case RenderAPI::DIRECT3D: return spnew D3DTextureCube(files[0], files); + } + return nullptr; + } + + TextureCube* TextureCube::CreateFromVCross(const String* files, int32 mips) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: return spnew GLTextureCube(files[0], files, mips, InputFormat::VERTICAL_CROSS); + case RenderAPI::DIRECT3D: return spnew D3DTextureCube(files[0], files, mips, InputFormat::VERTICAL_CROSS); + } + return nullptr; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/TextureCube.h b/Sparky-core/src/sp/graphics/API/TextureCube.h new file mode 100644 index 00000000..a0c3b25a --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/TextureCube.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Texture.h" + +namespace sp { namespace graphics { namespace API { + + class SP_API TextureCube : public Texture + { + protected: + enum class InputFormat + { + VERTICAL_CROSS, + HORIZONTAL_CROSS + }; + public: + static TextureCube* CreateFromFile(const String& filepath); + static TextureCube* CreateFromFiles(const String* files); + static TextureCube* CreateFromVCross(const String* files, int32 mips); + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/TextureDepth.cpp b/Sparky-core/src/sp/graphics/API/TextureDepth.cpp new file mode 100644 index 00000000..39216257 --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/TextureDepth.cpp @@ -0,0 +1,23 @@ +#include "sp/sp.h" +#include "TextureDepth.h" + +#include "sp/platform/opengl/GLTextureDepth.h" +#include "sp/platform/directx/DXTextureDepth.h" + +#include "sp/graphics/API/Context.h" + +#include "sp/system/Memory.h" + +namespace sp { namespace graphics { namespace API { + + TextureDepth* TextureDepth::Create(uint width, uint height) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: return spnew GLTextureDepth(width, height); + case RenderAPI::DIRECT3D: return spnew D3DTextureDepth(width, height); + } + return nullptr; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/TextureDepth.h b/Sparky-core/src/sp/graphics/API/TextureDepth.h new file mode 100644 index 00000000..c1b71ca3 --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/TextureDepth.h @@ -0,0 +1,13 @@ +#pragma once + +#include "Texture.h" + +namespace sp { namespace graphics { namespace API { + + class SP_API TextureDepth : public Texture + { + public: + static TextureDepth* Create(uint width, uint height); + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/VertexArray.cpp b/Sparky-core/src/sp/graphics/API/VertexArray.cpp new file mode 100644 index 00000000..e38bb21b --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/VertexArray.cpp @@ -0,0 +1,22 @@ +#include "sp/sp.h" +#include "VertexArray.h" + +#include "sp/platform/opengl/GLVertexArray.h" +#include "sp/platform/directx/DXVertexArray.h" + +#include "sp/graphics/API/Context.h" +#include "sp/system/Memory.h" + +namespace sp { namespace graphics { namespace API { + + VertexArray* VertexArray::Create() + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: return spnew GLVertexArray(); + case RenderAPI::DIRECT3D: return spnew D3DVertexArray(); + } + return nullptr; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/VertexArray.h b/Sparky-core/src/sp/graphics/API/VertexArray.h new file mode 100644 index 00000000..6a16f9d5 --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/VertexArray.h @@ -0,0 +1,28 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" +#include "sp/Types.h" + +#include "VertexBuffer.h" + +namespace sp { namespace graphics { namespace API { + + class SP_API VertexArray + { + private: + uint m_ID; + std::vector m_Buffers; + public: + virtual API::VertexBuffer* GetBuffer(uint index = 0) = 0; + virtual void PushBuffer(API::VertexBuffer* buffer) = 0; + + virtual void Bind() const = 0; + virtual void Unbind() const = 0; + + virtual void Draw(uint count) const = 0; + public: + static VertexArray* Create(); + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/VertexBuffer.cpp b/Sparky-core/src/sp/graphics/API/VertexBuffer.cpp new file mode 100644 index 00000000..3105aad2 --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/VertexBuffer.cpp @@ -0,0 +1,21 @@ +#include "sp/sp.h" +#include "VertexBuffer.h" + +#include "sp/platform/opengl/GLVertexBuffer.h" +#include "sp/platform/directx/DXVertexBuffer.h" + +#include "sp/graphics/API/Context.h" + +namespace sp { namespace graphics { namespace API { + + VertexBuffer* VertexBuffer::Create(BufferUsage usage) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: return spnew GLVertexBuffer(usage); + case RenderAPI::DIRECT3D: return spnew D3DVertexBuffer(usage); + } + return nullptr; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/API/VertexBuffer.h b/Sparky-core/src/sp/graphics/API/VertexBuffer.h new file mode 100644 index 00000000..57710302 --- /dev/null +++ b/Sparky-core/src/sp/graphics/API/VertexBuffer.h @@ -0,0 +1,38 @@ +#pragma once + +#include "sp/Types.h" +#include "sp/graphics/API/BufferLayout.h" +#include "sp/system/Memory.h" + +namespace sp { namespace graphics { namespace API { + + enum class BufferUsage + { + STATIC, DYNAMIC + }; + + class VertexBuffer + { + public: + virtual void Resize(uint size) = 0; + virtual void SetLayout(const BufferLayout& layout) = 0; + virtual void SetData(uint size, const void* data) = 0; + + virtual void ReleasePointer() = 0; + + virtual void Bind() = 0; + virtual void Unbind() = 0; + + template + T* GetPointer() + { + return (T*)GetPointerInternal(); + } + protected: + virtual void* GetPointerInternal() = 0; + public: + static VertexBuffer* Create(BufferUsage usage = BufferUsage::STATIC); + }; + + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/DeferredRenderer.cpp b/Sparky-core/src/sp/graphics/DeferredRenderer.cpp new file mode 100644 index 00000000..9d8ff6ff --- /dev/null +++ b/Sparky-core/src/sp/graphics/DeferredRenderer.cpp @@ -0,0 +1,151 @@ +#include "sp/sp.h" +#include "DeferredRenderer.h" + +#include "sp/graphics/shaders/ShaderFactory.h" + +namespace sp { namespace graphics { + +#if 0 + DeferredRenderer::DeferredRenderer(uint width, uint height) + : m_Width(width), m_Height(height) + { + Init(); + } + + DeferredRenderer::~DeferredRenderer() + { + spdel m_GBuffer; + spdel m_GeometryPassShader; + } + + void DeferredRenderer::Init() + { + m_GBuffer = new GBuffer(m_Width, m_Height); + m_GeometryPassShader = ShaderFactory::GeometryPassShader(); + } + + void DeferredRenderer::Begin() + { + m_CommandQueue.clear(); + m_SystemUniforms.clear(); + } + + void DeferredRenderer::BeginScene(Camera* camera) + { + } + + void DeferredRenderer::Submit(const RenderCommand& command) + { + m_CommandQueue.push_back(command); + } + + void DeferredRenderer::SubmitMesh(Mesh* mesh, const maths::mat4& transform) + { + // Not implemented + SP_ASSERT(false); + } + + void DeferredRenderer::SubmitLightSetup(const LightSetup& lightSetup) + { + auto lights = lightSetup.GetLights(); + SP_ASSERT(lights.size() <= 1, "Only one light is supported at the moment!"); + for (uint i = 0; i < lights.size(); i++) + m_SystemUniforms.push_back({ "u_Light", (byte*)lights[i] }); + } + + void DeferredRenderer::EndScene() + { + } + + void DeferredRenderer::End() + { + } + + void DeferredRenderer::SetRequiredUniforms(API::Shader* shader, const std::vector& uniforms) + { + // for (uint i = 0; i < uniforms.size(); i++) + // shader->SetUniform(uniforms[i].uniform, uniforms[i].value); + } + + void DeferredRenderer::SetSystemUniforms(API::Shader* shader) + { + const SystemUniformList& uniforms = m_SystemUniforms; + // for (uint i = 0; i < uniforms.size(); i++) + // shader->SetUniform(uniforms[i].uniform, uniforms[i].value); + } + + void DeferredRenderer::Present() + { + // TODO: Setup renderer state properly + GLCall(glEnable(GL_DEPTH_TEST)); + GLCall(glDepthFunc(GL_LEQUAL)); + + + + // Geometry pass ------------------------------------------------ + GLCall(glDisable(GL_BLEND)); + m_GeometryPassShader->Bind(); + m_GBuffer->Bind(1); + API::Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + for (uint i = 0; i < m_CommandQueue.size(); i++) + { + m_GeometryPassShader->Bind(); + const RenderCommand& command = m_CommandQueue[i]; + SetRequiredUniforms(m_GeometryPassShader, command.uniforms); + command.mesh->Render(*this); + } +// GLCall(glDepthMask(GL_FALSE)); +// GLCall(glDisable(GL_DEPTH_TEST)); + // --------------------------------------------------------------- + + + // Begin Light Passes -------------------------------------------- +// GLCall(glEnable(GL_BLEND)); +// GLCall(glBlendEquation(GL_FUNC_ADD)); +// GLCall(glBlendFunc(GL_ONE, GL_ONE)); +// m_GBuffer->Bind(0); +// GLCall(glClear(GL_COLOR_BUFFER_BIT)); + // --------------------------------------------------------------- + + // Light Pass ---------------------------------------------------- + + // --------------------------------------------------------------- + + + + // --------------------------------------------------------------- + + + // --------------------------------------------------------------- + API::BindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); + API::Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + m_GBuffer->Bind(0); + uint halfWidth = m_Width / 2; + uint halfHeight = m_Height / 2; + + m_GBuffer->SetReadBuffer(GBuffer::TextureType::Position); + API::BlitFramebuffer(0, 0, m_Width, m_Height, 0, 0, halfWidth, halfHeight, GL_COLOR_BUFFER_BIT, GL_LINEAR); + + m_GBuffer->SetReadBuffer(GBuffer::TextureType::Diffuse); + API::BlitFramebuffer(0, 0, m_Width, m_Height, 0, halfHeight, halfWidth, m_Height, GL_COLOR_BUFFER_BIT, GL_LINEAR); + + m_GBuffer->SetReadBuffer(GBuffer::TextureType::Normal); + API::BlitFramebuffer(0, 0, m_Width, m_Height, halfWidth, halfHeight, m_Width, m_Height, GL_COLOR_BUFFER_BIT, GL_LINEAR); + + m_GBuffer->SetReadBuffer(GBuffer::TextureType::TextureCoord); + API::BlitFramebuffer(0, 0, m_Width, m_Height, halfWidth, 0, m_Width, halfHeight, GL_COLOR_BUFFER_BIT, GL_LINEAR); + + /*for (uint i = 0; i < m_CommandQueue.size(); i++) + { + const RenderCommand& command = m_CommandQueue[i]; + command.shader->Bind(); + SetRequiredUniforms(command.shader, command.uniforms); + SetSystemUniforms(command.shader); + command.mesh->Render(*this); + }*/ + } + +#endif + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/DeferredRenderer.h b/Sparky-core/src/sp/graphics/DeferredRenderer.h new file mode 100644 index 00000000..59d03eb3 --- /dev/null +++ b/Sparky-core/src/sp/graphics/DeferredRenderer.h @@ -0,0 +1,36 @@ +#pragma once + +#include "sp/Common.h" +#include "Renderer3D.h" + +#include "GBuffer.h" + +namespace sp { namespace graphics { + + class DeferredRenderer : public Renderer3D + { + private: + GBuffer* m_GBuffer; + uint m_Width, m_Height; + API::Shader* m_GeometryPassShader; + public: + DeferredRenderer(uint width, uint height); + ~DeferredRenderer(); + + void Init() override; + void Begin() override; + void BeginScene(Camera* camera) override; + void Submit(const RenderCommand& command) override; + void SubmitMesh(Mesh* mesh, const maths::mat4& transform) override; + void SubmitLightSetup(const LightSetup& lightSetup); + void EndScene() override; + void End() override; + void Present() override; + + inline const GBuffer& GetGBuffer() const { return *m_GBuffer; } + private: + void SetRequiredUniforms(API::Shader* shader, const std::vector& uniforms); + void SetSystemUniforms(API::Shader* shader); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/Font.cpp b/Sparky-core/src/sp/graphics/Font.cpp new file mode 100644 index 00000000..eb7da806 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Font.cpp @@ -0,0 +1,135 @@ +#include "sp/sp.h" +#include "Font.h" + +#include "sp/utils/Log.h" +#include + +namespace sp { namespace graphics { + + Font::Font(const String& name, const String& filename, float size) + : m_Name(name), m_Filename(filename), m_Size(size), m_Scale(maths::vec2(1.0f, 1.0f)), m_Texture(nullptr) + { + using namespace API; + + m_FTAtlas = ftgl::texture_atlas_new(512, 512, 2); + m_FTFont = ftgl::texture_font_new_from_file(m_FTAtlas, size, filename.c_str()); + + TextureParameters parameters = { TextureFormat::LUMINANCE_ALPHA, TextureFilter::LINEAR, TextureWrap::CLAMP_TO_EDGE }; + m_Texture = Texture2D::Create(512, 512, parameters); + m_Texture->SetData(m_FTAtlas->data); + + SP_ASSERT(m_FTFont, "Failed to load font '", filename.c_str(), "'!"); + } + + Font::Font(const String& name, const byte* data, uint datasize, float size) + : m_Name(name), m_Filename("NULL"), m_Size(size), m_Scale(maths::vec2(1.0f, 1.0f)), m_Texture(nullptr) + { + using namespace API; + + m_FTAtlas = ftgl::texture_atlas_new(512, 512, 2); + m_FTFont = ftgl::texture_font_new_from_memory(m_FTAtlas, size, data, datasize); + + TextureParameters parameters = { TextureFormat::LUMINANCE_ALPHA, TextureFilter::LINEAR, TextureWrap::CLAMP_TO_EDGE }; + m_Texture = Texture2D::Create(512, 512, parameters); + m_Texture->SetData(m_FTAtlas->data); + + SP_ASSERT(m_FTFont, "Failed to load font from data!"); + } + + void Font::SetScale(float x, float y) + { + m_Scale = maths::vec2(x, y); + } + + API::Texture2D* Font::GetTexture() const + { + UpdateAtlas(); + return m_Texture; + } + + void Font::UpdateAtlas() const + { + if (m_FTAtlas->dirty) + { + m_Texture->SetData(m_FTAtlas->data); + m_FTAtlas->dirty = false; + } + } + + maths::vec2 Font::GetOffsets(const String& text) const + { + using namespace ftgl; + + if (text.empty()) + return maths::vec2(0.0f, 0.0f); + + texture_glyph_t* glyph = texture_font_get_glyph(m_FTFont, text[0]); + SP_ASSERT(glyph); + + float yo = 0.0f; + const maths::vec2& scale = m_Scale; + for (int i = 0; i < text.size(); i++) + { + texture_glyph_t* glyph = texture_font_get_glyph(m_FTFont, text[i]); + SP_ASSERT(glyph); + float height = glyph->height / scale.y; + float offset = glyph->offset_y / scale.y - height; + if (offset < yo) + yo = offset; + } + + return maths::vec2(glyph->offset_x / scale.x, yo); + } + + float Font::GetWidth(const String& text) const + { + using namespace ftgl; + + float width = 0.0f; + const maths::vec2& scale = m_Scale; + for (int i = 0; i < text.size(); i++) + { + texture_glyph_t* glyph = texture_font_get_glyph(m_FTFont, text[i]); + SP_ASSERT(glyph); + if (i > 0) + { + float kerning = texture_glyph_get_kerning(glyph, text[i - 1]); + width += kerning / scale.x; + } + width += glyph->advance_x / scale.x; + } + return width; + } + + float Font::GetHeight(const String& text) const + { + using namespace ftgl; + + const maths::vec2& scale = m_Scale; + float min = 0.0f; + float max = 0.0f; + for (int i = 0; i < text.size(); i++) + { + texture_glyph_t* glyph = texture_font_get_glyph(m_FTFont, text[i]); + SP_ASSERT(glyph); + float height = glyph->height / scale.y; + float offset = glyph->offset_y / scale.y - height; + if (offset < min) + min = offset; + if (height > max) + max = height; + } + return abs(min) + abs(max); + } + + maths::vec2 Font::GetSize(const String& text) const + { + return maths::vec2(GetWidth(text), GetHeight(text)); + } + + maths::Rectangle Font::GetBounds(const String& text) const + { + return maths::Rectangle(0.0f, 0.0f, GetWidth(text), GetHeight(text)); + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/Font.h b/Sparky-core/src/sp/graphics/Font.h new file mode 100644 index 00000000..3c978251 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Font.h @@ -0,0 +1,52 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/Types.h" +#include "sp/maths/vec2.h" +#include "sp/maths/Rectangle.h" +#include "sp/graphics/API/Texture2D.h" + +namespace ftgl { + struct texture_atlas_t; + struct texture_font_t; +} + +namespace sp { namespace graphics { + + class SP_API Font + { + private: + ftgl::texture_atlas_t* m_FTAtlas; + ftgl::texture_font_t* m_FTFont; + float m_Size; + maths::vec2 m_Scale; + String m_Name; + String m_Filename; + mutable API::Texture2D* m_Texture; // TODO: Replace with array + public: + Font(const String& name, const String& filename, float size); + Font(const String& name, const byte* data, uint datasize, float size); + + void SetScale(float x, float y); + + inline void SetScale(const maths::vec2& scale) { m_Scale = scale; } + inline const maths::vec2& GetScale() const { return m_Scale; } + + inline ftgl::texture_font_t* GetFTFont() const { return m_FTFont; } + inline const String& GetName() const { return m_Name; } + inline const String& GetFileName() const { return m_Filename; } + inline float GetFontSize() const { return m_Size; } + + maths::vec2 GetOffsets(const String& text) const; + float GetWidth(const String& text) const; + float GetHeight(const String& text) const; + maths::vec2 GetSize(const String& text) const; + + maths::Rectangle GetBounds(const String& text) const; + + API::Texture2D* GetTexture() const; + private: + void UpdateAtlas() const; + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/FontManager.cpp b/Sparky-core/src/sp/graphics/FontManager.cpp new file mode 100644 index 00000000..1fb933fd --- /dev/null +++ b/Sparky-core/src/sp/graphics/FontManager.cpp @@ -0,0 +1,68 @@ +#include "sp/sp.h" +#include "FontManager.h" + +#include "sp/embedded/Embedded.h" + +namespace sp { namespace graphics { + + std::vector FontManager::s_Fonts; + maths::vec2 FontManager::s_Scale = maths::vec2(1, 1); + + void FontManager::SetScale(const maths::vec2& scale) + { + s_Scale = scale; + } + + void FontManager::Add(Font* font) + { + font->SetScale(s_Scale); + s_Fonts.push_back(font); + } + + Font* FontManager::Get() + { + return s_Fonts[0]; + } + + Font* FontManager::Get(const String& name) + { + for (Font* font : s_Fonts) + { + if (font->GetName() == name) + return font; + } + // TODO: Maybe return a default font instead? + return nullptr; + } + + Font* FontManager::Get(uint size) + { + for (Font* font : s_Fonts) + { + if (font->GetFontSize() == size) + return font; + } + Font* result = new Font("SourceSansPro", internal::DEFAULT_FONT, internal::DEFAULT_FONT_SIZE, (float)size); + result->SetScale(s_Scale); + Add(result); + return result; + } + + Font* FontManager::Get(const String& name, uint size) + { + for (Font* font : s_Fonts) + { + if (font->GetFontSize() == size && font->GetName() == name) + return font; + } + // TODO: Maybe return a default font instead? + return nullptr; + } + + void FontManager::Clean() + { + for (uint i = 0; i < s_Fonts.size(); i++) + delete s_Fonts[i]; + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/FontManager.h b/Sparky-core/src/sp/graphics/FontManager.h new file mode 100644 index 00000000..c531b9b2 --- /dev/null +++ b/Sparky-core/src/sp/graphics/FontManager.h @@ -0,0 +1,30 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" +#include "sp/Types.h" + +#include "Font.h" + +namespace sp { namespace graphics { + + class SP_API FontManager + { + private: + static std::vector s_Fonts; + static maths::vec2 s_Scale; + public: + static void SetScale(const maths::vec2& scale); + static inline const maths::vec2& GetScale() { return s_Scale; } + + static void Add(Font* font); + static Font* Get(); + static Font* Get(const String& name); + static Font* Get(uint size); + static Font* Get(const String& name, uint size); + static void Clean(); + private: + FontManager() { } + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/ForwardRenderer.cpp b/Sparky-core/src/sp/graphics/ForwardRenderer.cpp new file mode 100644 index 00000000..f8ce505b --- /dev/null +++ b/Sparky-core/src/sp/graphics/ForwardRenderer.cpp @@ -0,0 +1,152 @@ +#include "sp/sp.h" +#include "ForwardRenderer.h" + +#include "sp/app/Application.h" +#include "sp/graphics/Renderer.h" + +namespace sp { namespace graphics { + + using namespace maths; + + enum VSSystemUniformIndices : int32 + { + VSSystemUniformIndex_ProjectionMatrix = 0, + VSSystemUniformIndex_ViewMatrix = 1, + VSSystemUniformIndex_ModelMatrix = 2, + VSSystemUniformIndex_CameraPosition = 3, + VSSystemUniformIndex_Size + }; + + enum PSSystemUniformIndices : int32 + { + PSSystemUniformIndex_Lights = 0, + PSSystemUniformIndex_Size + }; + + ForwardRenderer::ForwardRenderer() + { + SetScreenBufferSize(Application::GetApplication().GetWindowWidth(), Application::GetApplication().GetWindowHeight()); + Init(); + } + + ForwardRenderer::ForwardRenderer(uint width, uint height) + { + SetScreenBufferSize(width, height); + Init(); + } + + void ForwardRenderer::Init() + { + m_CommandQueue.reserve(1000); + + // + // Vertex shader system uniforms + // + m_VSSystemUniformBufferSize = sizeof(mat4) + sizeof(mat4) + sizeof(vec3) + sizeof(mat4); + m_VSSystemUniformBuffer = spnew byte[m_VSSystemUniformBufferSize]; + memset(m_VSSystemUniformBuffer, 0, m_VSSystemUniformBufferSize); + m_VSSystemUniformBufferOffsets.resize(VSSystemUniformIndex_Size); + + // Per Scene System Uniforms + m_VSSystemUniformBufferOffsets[VSSystemUniformIndex_ProjectionMatrix] = 0; + m_VSSystemUniformBufferOffsets[VSSystemUniformIndex_ViewMatrix] = m_VSSystemUniformBufferOffsets[VSSystemUniformIndex_ProjectionMatrix] + sizeof(mat4); + m_VSSystemUniformBufferOffsets[VSSystemUniformIndex_ModelMatrix] = m_VSSystemUniformBufferOffsets[VSSystemUniformIndex_ViewMatrix] + sizeof(mat4); + + // Per Mesh System Uniforms + // Note: Model Matrix should be here instead of camera position; this will get sorted when it gets moved to a separate buffer + m_VSSystemUniformBufferOffsets[VSSystemUniformIndex_CameraPosition] = m_VSSystemUniformBufferOffsets[VSSystemUniformIndex_ModelMatrix] + sizeof(mat4); + + // + // Pixel/fragment shader system uniforms + // + m_PSSystemUniformBufferSize = sizeof(Light); + m_PSSystemUniformBuffer = spnew byte[m_PSSystemUniformBufferSize]; + memset(m_PSSystemUniformBuffer, 0, m_PSSystemUniformBufferSize); + m_PSSystemUniformBufferOffsets.resize(PSSystemUniformIndex_Size); + + // Per Scene System Uniforms + m_PSSystemUniformBufferOffsets[PSSystemUniformIndex_Lights] = 0; + + } + + void ForwardRenderer::Begin() + { + Renderer::SetViewport(0, 0, m_ScreenBufferWidth, m_ScreenBufferHeight); + + m_CommandQueue.clear(); + m_SystemUniforms.clear(); + } + + void ForwardRenderer::BeginScene(Camera* camera) + { + memcpy(m_VSSystemUniformBuffer + m_VSSystemUniformBufferOffsets[VSSystemUniformIndex_ProjectionMatrix], &camera->GetProjectionMatrix(), sizeof(mat4)); + memcpy(m_VSSystemUniformBuffer + m_VSSystemUniformBufferOffsets[VSSystemUniformIndex_ViewMatrix], &camera->GetViewMatrix(), sizeof(mat4)); + memcpy(m_VSSystemUniformBuffer + m_VSSystemUniformBufferOffsets[VSSystemUniformIndex_CameraPosition], &camera->GetPosition(), sizeof(vec3)); + } + + void ForwardRenderer::Submit(const RenderCommand& command) + { + m_CommandQueue.push_back(command); + } + + void ForwardRenderer::SubmitMesh(Mesh* mesh, const maths::mat4& transform) + { + RenderCommand command; + command.mesh = mesh; + command.transform = transform; // TODO: Come up with a better solution to per-mesh system uniforms + command.shader = mesh->GetMaterialInstance()->GetMaterial()->GetShader(); + Submit(command); + } + + void ForwardRenderer::SubmitLightSetup(const LightSetup& lightSetup) + { + const auto& lights = lightSetup.GetLights(); + SP_ASSERT(lights.size() <= 1, "Only one light is supported at the moment!"); + for (uint i = 0; i < lights.size(); i++) + memcpy(m_PSSystemUniformBuffer + m_PSSystemUniformBufferOffsets[PSSystemUniformIndex_Lights], lights[i], sizeof(Light)); + } + + void ForwardRenderer::EndScene() + { + } + + void ForwardRenderer::End() + { + // TODO: Batching and sorting + } + + void ForwardRenderer::SetSystemUniforms(API::Shader* shader) + { + // TODO: Set per-mesh buffer to slot 1 + shader->SetVSSystemUniformBuffer(m_VSSystemUniformBuffer, m_VSSystemUniformBufferSize, 0); + shader->SetPSSystemUniformBuffer(m_PSSystemUniformBuffer, m_PSSystemUniformBufferSize, 0); + } + + void ForwardRenderer::Present() + { + // TODO: Shader binding, texture sorting, visibility testing, etc. + for (uint i = 0; i < m_CommandQueue.size(); i++) + { + RenderCommand& command = m_CommandQueue[i]; + MaterialInstance* material = command.mesh->GetMaterialInstance(); + int materialRenderFlags = material->GetRenderFlags(); + Renderer::SetDepthTesting((materialRenderFlags & (int)Material::RenderFlags::DISABLE_DEPTH_TEST) == 0); + memcpy(m_VSSystemUniformBuffer + m_VSSystemUniformBufferOffsets[VSSystemUniformIndex_ModelMatrix], &command.transform, sizeof(mat4)); + SetSystemUniforms(command.shader); + command.mesh->Render(*this); + +#if defined(SP_DEBUG) && 0 + uint j; + for (j = 0; j < command.uniforms.size(); j++) + { + if (command.uniforms[j].uniform == "ml_matrix") + { + command.mesh->DebugRender(*(maths::mat4*)command.uniforms[j].value); + break; + } + } +#endif + } + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/ForwardRenderer.h b/Sparky-core/src/sp/graphics/ForwardRenderer.h new file mode 100644 index 00000000..8744b161 --- /dev/null +++ b/Sparky-core/src/sp/graphics/ForwardRenderer.h @@ -0,0 +1,36 @@ +#pragma once + +#include "sp/Common.h" +#include "Renderer3D.h" +#include"shaders/Shader.h" + +namespace sp { namespace graphics { + + class SP_API ForwardRenderer : public Renderer3D + { + private: + byte* m_VSSystemUniformBuffer; + uint m_VSSystemUniformBufferSize; + byte* m_PSSystemUniformBuffer; + uint m_PSSystemUniformBufferSize; + + std::vector m_VSSystemUniformBufferOffsets; + std::vector m_PSSystemUniformBufferOffsets; + public: + ForwardRenderer(); + ForwardRenderer(uint width, uint height); + + void Init() override; + void Begin() override; + void BeginScene(Camera* camera) override; + void Submit(const RenderCommand& command) override; + void SubmitMesh(Mesh* mesh, const maths::mat4& transform) override; + void SubmitLightSetup(const LightSetup& lightSetup); + void EndScene() override; + void End() override; + void Present() override; + private: + void SetSystemUniforms(API::Shader* shader); + }; + +} } diff --git a/Sparky-core/src/sp/graphics/GBuffer.cpp b/Sparky-core/src/sp/graphics/GBuffer.cpp new file mode 100644 index 00000000..963bb569 --- /dev/null +++ b/Sparky-core/src/sp/graphics/GBuffer.cpp @@ -0,0 +1,66 @@ +#include "sp/sp.h" + +#include "GBuffer.h" + +namespace sp { namespace graphics { + +#if 0 + GBuffer::GBuffer(uint width, uint height) + : m_Width(width), m_Height(height) + { + Init(); + } + + GBuffer::~GBuffer() + { + API::FreeFramebuffer(m_Framebuffer); + API::FreeTextures(4, m_Textures); + API::FreeTexture(m_DepthTexture); + } + + void GBuffer::Init() + { + m_Framebuffer = API::CreateFramebuffer(); + API::BindFramebuffer(GL_FRAMEBUFFER, m_Framebuffer); + + m_DepthTexture = API::CreateTexture(); + for (uint i = 0; i < 4; i++) + { + m_Textures[i] = API::CreateTexture(); + API::BindTexture(GL_TEXTURE_2D, m_Textures[i]); + API::SetTextureData(GL_TEXTURE_2D, GL_RGBA, m_Width, m_Height, GL_RGBA, GL_UNSIGNED_BYTE, NULL); + API::FramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + i, GL_TEXTURE_2D, m_Textures[i], 0); + } + + API::BindTexture(GL_TEXTURE_2D, m_DepthTexture); + API::SetTextureData(GL_TEXTURE_2D, GL_DEPTH_COMPONENT32F, m_Width, m_Height, GL_DEPTH_COMPONENT, GL_FLOAT, NULL); + API::FramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, m_DepthTexture, 0); + + uint drawBuffers[4] = + { + GL_COLOR_ATTACHMENT0, + GL_COLOR_ATTACHMENT1, + GL_COLOR_ATTACHMENT2, + GL_COLOR_ATTACHMENT3 + }; + + API::SetDrawBuffers(drawBuffers, 4); + SP_ASSERT(API::CheckFramebufferStatus(GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE); + API::BindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); + } + + void GBuffer::Bind(int32 mode) + { + if (mode) + API::BindFramebuffer(GL_DRAW_FRAMEBUFFER, m_Framebuffer); + else + API::BindFramebuffer(GL_READ_FRAMEBUFFER, m_Framebuffer); + } + + void GBuffer::SetReadBuffer(TextureType type) + { + API::ReadBuffer(GL_COLOR_ATTACHMENT0 + (uint)type); + } +#endif + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/GBuffer.h b/Sparky-core/src/sp/graphics/GBuffer.h new file mode 100644 index 00000000..33d846d3 --- /dev/null +++ b/Sparky-core/src/sp/graphics/GBuffer.h @@ -0,0 +1,34 @@ +#pragma once + +#include "sp/graphics/API/Framebuffer.h" + +namespace sp { namespace graphics { + + class SP_API GBuffer + { + public: + enum class TextureType + { + Position = 0, Diffuse, Normal, TextureCoord + }; + private: + uint m_Framebuffer; + uint m_Textures[4]; + uint m_DepthTexture; + uint m_Width, m_Height; + public: + GBuffer(uint width, uint height); + ~GBuffer(); + + void Bind(int32 mode = 0); + void SetReadBuffer(TextureType type); + + inline uint GetWidth() const { return m_Width; } + inline uint GetHeight() const { return m_Height; } + + inline uint GetTexture(uint index) const { return m_Textures[index]; } + private: + void Init(); + }; + +} } diff --git a/Sparky-core/src/sp/graphics/IRenderable.h b/Sparky-core/src/sp/graphics/IRenderable.h new file mode 100644 index 00000000..80d6e3c0 --- /dev/null +++ b/Sparky-core/src/sp/graphics/IRenderable.h @@ -0,0 +1,15 @@ +#pragma once + +#include "sp/Common.h" + +namespace sp { namespace graphics { + + class Renderer3D; + + class SP_API IRenderable + { + public: + virtual void Render(Renderer3D& renderer) = 0; + }; + +} } diff --git a/Sparky-core/src/sp/graphics/Label.cpp b/Sparky-core/src/sp/graphics/Label.cpp new file mode 100644 index 00000000..1b4d3e96 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Label.cpp @@ -0,0 +1,98 @@ +#include "sp/sp.h" +#include "Label.h" + +#include "Renderer2D.h" + +namespace sp { namespace graphics { + + Label::Label(const String& text, float x, float y, uint color, Alignment alignment) + : Sprite(), m_Font(FontManager::Get("SourceSansPro")) + { + SetPosition(maths::vec3(x, y, 0.0f)); + SetText(text); + SetAlignment(alignment); + m_Color = color; + } + + Label::Label(const String& text, float x, float y, Font* font, uint color, Alignment alignment) + : Sprite(), m_Font(font) + { + SetPosition(maths::vec3(x, y, 0.0f)); + SetText(text); + SetAlignment(alignment); + m_Color = color; + } + + Label::Label(const String& text, float x, float y, const String& font, uint color, Alignment alignment) + : Sprite(), m_Font(FontManager::Get(font)) + { + SetPosition(maths::vec3(x, y, 0.0f)); + SetText(text); + SetAlignment(alignment); + m_Color = color; + + ValidateFont(font); + } + + Label::Label(const String& text, float x, float y, const String& font, uint size, uint color, Alignment alignment) + : Sprite(), m_Font(FontManager::Get(font, size)) + { + SetPosition(maths::vec3(x, y, 0.0f)); + SetText(text); + SetAlignment(alignment); + m_Color = color; + + ValidateFont(font, size); + } + + void Label::Submit(Renderer2D* renderer) const + { + renderer->DrawString(m_Text, m_Bounds.GetMinimumBound() + m_AlignmentOffset, *m_Font, m_Color); + } + + void Label::ValidateFont(const String& name, int32 size) + { + if (m_Font != nullptr) + return; + + std::cout << "NULL FONT! Font=" << name; + if (size > 0) + std::cout << ", Size=" << size; + std::cout << std::endl; + + m_Font = FontManager::Get("SourceSansPro"); + } + + void Label::SetAlignment(Alignment alignment) + { + m_Alignment = alignment; + UpdateBounds(); + } + + void Label::SetText(const String& text) + { + m_Text = text; + UpdateBounds(); + } + + void Label::UpdateBounds() + { + using namespace maths; + + vec2 size = m_Font->GetSize(m_Text) * 0.5f; + m_Bounds.size = size; + switch (m_Alignment) + { + case Alignment::LEFT: + m_AlignmentOffset.x = size.x; + break; + case Alignment::CENTER: + m_AlignmentOffset.x = 0.0f; + break; + case Alignment::RIGHT: + m_AlignmentOffset.x = -size.x; + break; + } + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/Label.h b/Sparky-core/src/sp/graphics/Label.h new file mode 100644 index 00000000..6ae12dbb --- /dev/null +++ b/Sparky-core/src/sp/graphics/Label.h @@ -0,0 +1,39 @@ +#pragma once + +#include "sp/Common.h" +#include "Sprite.h" +#include "FontManager.h" + +namespace sp { namespace graphics { + + class SP_API Label : public Sprite + { + public: + enum class Alignment + { + NONE = 0, LEFT, CENTER, RIGHT + }; + private: + Font* m_Font; + Alignment m_Alignment; + maths::vec2 m_AlignmentOffset; + String m_Text; + public: + Label(const String& text, float x, float y, uint color, Alignment alignment = Alignment::LEFT); + Label(const String& text, float x, float y, Font* font, uint color, Alignment alignment = Alignment::LEFT); + Label(const String& text, float x, float y, const String& font, uint color, Alignment alignment = Alignment::LEFT); + Label(const String& text, float x, float y, const String& font, uint size, uint color, Alignment alignment = Alignment::LEFT); + void Submit(Renderer2D* renderer) const override; + void ValidateFont(const String& name, int32 size = -1); + + void SetAlignment(Alignment alignment); + void SetText(const String& text); + + inline const Font& GetFont() const { return *m_Font; } + inline Alignment GetAlignment() const { return m_Alignment; } + inline const String& GetText() const { return m_Text; } + private: + void UpdateBounds(); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/Light.cpp b/Sparky-core/src/sp/graphics/Light.cpp new file mode 100644 index 00000000..85882433 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Light.cpp @@ -0,0 +1,11 @@ +#include "sp/sp.h" +#include "LightSetup.h" + +namespace sp { namespace graphics { + + Light::Light(const maths::vec3& direction, float intensity, const maths::vec4& color) + : direction(direction), intensity(intensity), color(color), p0(0.0f), p1(0.0f), position(maths::vec3(0.0f)), lightVector(maths::vec3(0.0f)) + { + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/Light.h b/Sparky-core/src/sp/graphics/Light.h new file mode 100644 index 00000000..e7d3e2a9 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Light.h @@ -0,0 +1,21 @@ +#pragma once + +#include "sp/Types.h" +#include "sp/maths/maths.h" + +namespace sp { namespace graphics { + + __declspec(align(16)) struct SP_API Light + { + maths::vec4 color; + maths::vec3 position; + float p0; + maths::vec3 direction; + float p1; + maths::vec3 lightVector; + float intensity; + + Light(const maths::vec3& direction, float intensity = 1.0f, const maths::vec4& color = maths::vec4(1.0f)); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/LightSetup.cpp b/Sparky-core/src/sp/graphics/LightSetup.cpp new file mode 100644 index 00000000..6862ed09 --- /dev/null +++ b/Sparky-core/src/sp/graphics/LightSetup.cpp @@ -0,0 +1,35 @@ +#include "sp/sp.h" +#include "LightSetup.h" + +namespace sp { namespace graphics { + + LightSetup::LightSetup() + { + + } + + LightSetup::~LightSetup() + { + for (uint i = 0; i < m_Lights.size(); i++) + delete m_Lights[i]; + } + + Light* LightSetup::Add(Light* light) + { + m_Lights.push_back(light); + return light; + } + + void LightSetup::Remove(Light* light) + { + for (uint i = 0; i < m_Lights.size(); i++) + { + if (m_Lights[i] == light) + { + m_Lights.erase(m_Lights.begin() + i); + break; + } + } + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/LightSetup.h b/Sparky-core/src/sp/graphics/LightSetup.h new file mode 100644 index 00000000..96ed824d --- /dev/null +++ b/Sparky-core/src/sp/graphics/LightSetup.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Light.h" + +namespace sp { namespace graphics { + + class SP_API LightSetup + { + private: + std::vector m_Lights; + public: + LightSetup(); + ~LightSetup(); + + Light* Add(Light* light); + void Remove(Light* light); + + inline const std::vector& GetLights() const { return m_Lights; } + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/Mask.h b/Sparky-core/src/sp/graphics/Mask.h new file mode 100644 index 00000000..2baf3683 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Mask.h @@ -0,0 +1,22 @@ +#pragma once + +#include "sp/Common.h" +#include "../maths/maths.h" +#include "API/Texture2D.h" + +namespace sp { namespace graphics { + + struct SP_API Mask + { + API::Texture* texture; + maths::mat4 transform; + + Mask(API::Texture2D* texture, const maths::mat4& transform = maths::mat4::Identity()) + : texture(texture), transform(transform) + { + this->transform = maths::mat4::Scale(maths::vec3((float)texture->GetWidth() / (float)texture->GetHeight(), 1.0f, 1.0f)); + } + + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/Material.cpp b/Sparky-core/src/sp/graphics/Material.cpp new file mode 100644 index 00000000..ddb94863 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Material.cpp @@ -0,0 +1,255 @@ +#include "sp/sp.h" +#include "Material.h" + +#include "sp/graphics/API/Texture2D.h" + +#include "sp/system/Memory.h" +#include "sp/graphics/shaders/ShaderResource.h" + +#include + +namespace sp { namespace graphics { + + using namespace API; + + Material::Material(API::Shader* shader) + : m_Shader(shader) + { + AllocateStorage(); + m_Resources = &shader->GetResources(); + } + + Material::~Material() + { + spdel[] m_VSUserUniformBuffer; + spdel[] m_PSUserUniformBuffer; + } + + void Material::AllocateStorage() + { + m_VSUserUniformBuffer = nullptr; + m_VSUserUniformBufferSize = 0; + + m_PSUserUniformBuffer = nullptr; + m_PSUserUniformBufferSize = 0; + + m_VSUserUniforms = nullptr; + m_PSUserUniforms = nullptr; + + const ShaderUniformBufferDeclaration* vsBuffer = m_Shader->GetVSUserUniformBuffer(); + if (vsBuffer) + { + m_VSUserUniformBufferSize = vsBuffer->GetSize(); + m_VSUserUniformBuffer = spnew byte[m_VSUserUniformBufferSize]; + memset(m_VSUserUniformBuffer, 0, m_VSUserUniformBufferSize); + m_VSUserUniforms = &vsBuffer->GetUniformDeclarations(); + } + + const ShaderUniformBufferDeclaration* psBuffer = m_Shader->GetPSUserUniformBuffer(); + if (psBuffer) + { + m_PSUserUniformBufferSize = psBuffer->GetSize(); + m_PSUserUniformBuffer = spnew byte[m_PSUserUniformBufferSize]; + memset(m_PSUserUniformBuffer, 0, m_PSUserUniformBufferSize); + m_PSUserUniforms = &psBuffer->GetUniformDeclarations(); + } + } + + void Material::Bind() + { + m_Shader->Bind(); + + // TODO: Don't do this if a MaterialInstance is being used + if (m_VSUserUniformBuffer) + m_Shader->SetVSUserUniformBuffer(m_VSUserUniformBuffer, m_VSUserUniformBufferSize); + if (m_PSUserUniformBuffer) + m_Shader->SetPSUserUniformBuffer(m_PSUserUniformBuffer, m_PSUserUniformBufferSize); + + for (uint i = 0; i < m_Textures.size(); i++) + { + Texture* texture = m_Textures[i]; + if (texture) + texture->Bind(i); + } + } + + void Material::Unbind() + { + for (uint i = 0; i < m_Textures.size(); i++) + { + Texture* texture = m_Textures[i]; + if (texture) + texture->Unbind(i); + } + } + + void Material::SetUniformData(const String& uniform, byte* data) + { + byte* buffer; + ShaderUniformDeclaration* declaration = FindUniformDeclaration(uniform, &buffer); + memcpy(buffer + declaration->GetOffset(), data, declaration->GetSize()); + } + + void Material::SetTexture(const String& name, Texture* texture) + { + ShaderResourceDeclaration* declaration = FindResourceDeclaration(name); + SP_ASSERT(declaration); + uint slot = declaration->GetRegister(); + if (m_Textures.size() <= slot) + m_Textures.resize(slot + 1); + m_Textures[slot] = texture; + } + + ShaderUniformDeclaration* Material::FindUniformDeclaration(const String& name, byte** outBuffer) + { + if (m_VSUserUniforms) + { + for (ShaderUniformDeclaration* uniform : *m_VSUserUniforms) + { + if (uniform->GetName() == name) + { + *outBuffer = m_VSUserUniformBuffer; + return uniform; + } + } + } + if (m_PSUserUniforms) + { + for (ShaderUniformDeclaration* uniform : *m_PSUserUniforms) + { + if (uniform->GetName() == name) + { + *outBuffer = m_PSUserUniformBuffer; + return uniform; + } + } + } + return nullptr; + } + + ShaderResourceDeclaration* Material::FindResourceDeclaration(const String& name) + { + for (ShaderResourceDeclaration* resource : *m_Resources) + { + if (resource->GetName() == name) + return resource; + } + return nullptr; + } + + + MaterialInstance::MaterialInstance(Material* material) + : m_Material(material) + { + AllocateStorage(); + memcpy(m_VSUserUniformBuffer, m_Material->m_VSUserUniformBuffer, m_VSUserUniformBufferSize); + memcpy(m_PSUserUniformBuffer, m_Material->m_PSUserUniformBuffer, m_PSUserUniformBufferSize); + + m_Resources = &m_Material->GetShader()->GetResources(); + m_RenderFlags = material->m_RenderFlags; + } + + void MaterialInstance::AllocateStorage() + { + const ShaderUniformBufferDeclaration* vsBuffer = m_Material->m_Shader->GetVSUserUniformBuffer(); + if (vsBuffer) + { + m_VSUserUniformBufferSize = vsBuffer->GetSize(); + m_VSUserUniformBuffer = new byte[m_VSUserUniformBufferSize]; + m_VSUserUniforms = &vsBuffer->GetUniformDeclarations(); + } + + const ShaderUniformBufferDeclaration* psBuffer = m_Material->m_Shader->GetPSUserUniformBuffer(); + if (psBuffer) + { + m_PSUserUniformBufferSize = psBuffer->GetSize(); + m_PSUserUniformBuffer = new byte[m_PSUserUniformBufferSize]; + m_PSUserUniforms = &psBuffer->GetUniformDeclarations(); + } + } + + void MaterialInstance::Bind() + { + m_Material->Bind(); + + if (m_VSUserUniformBuffer) + m_Material->m_Shader->SetVSUserUniformBuffer(m_VSUserUniformBuffer, m_VSUserUniformBufferSize); + if (m_PSUserUniformBuffer) + m_Material->m_Shader->SetPSUserUniformBuffer(m_PSUserUniformBuffer, m_PSUserUniformBufferSize); + + for (uint i = 0; i < m_Textures.size(); i++) + { + Texture* texture = m_Textures[i]; + if (texture) + texture->Bind(i); + } + } + + void MaterialInstance::Unbind() + { + m_Material->Unbind(); + + for (uint i = 0; i < m_Textures.size(); i++) + { + Texture* texture = m_Textures[i]; + if (texture) + texture->Unbind(i); + } + } + + void MaterialInstance::SetUniformData(const String& uniform, byte* data) + { + byte* buffer; + ShaderUniformDeclaration* declaration = FindUniformDeclaration(uniform, &buffer); + SP_ASSERT(buffer); + memcpy(buffer + declaration->GetOffset(), data, declaration->GetSize()); + } + + void MaterialInstance::SetTexture(const String& name, Texture* texture) + { + ShaderResourceDeclaration* declaration = FindResourceDeclaration(name); + uint slot = declaration->GetRegister(); + if (m_Textures.size() <= slot) + m_Textures.resize(slot + 1); + m_Textures[slot] = texture; + } + + ShaderUniformDeclaration* MaterialInstance::FindUniformDeclaration(const String& name, byte** outBuffer) + { + if (m_VSUserUniforms) + { + for (ShaderUniformDeclaration* uniform : *m_VSUserUniforms) + { + if (uniform->GetName() == name) + { + *outBuffer = m_VSUserUniformBuffer; + return uniform; + } + } + } + if (m_PSUserUniforms) + { + for (ShaderUniformDeclaration* uniform : *m_PSUserUniforms) + { + if (uniform->GetName() == name) + { + *outBuffer = m_PSUserUniformBuffer; + return uniform; + } + } + } + return nullptr; + } + + ShaderResourceDeclaration* MaterialInstance::FindResourceDeclaration(const String& name) + { + for (ShaderResourceDeclaration* resource : *m_Resources) + { + if (resource->GetName() == name) + return resource; + } + return nullptr; + } + + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/Material.h b/Sparky-core/src/sp/graphics/Material.h new file mode 100644 index 00000000..010f4211 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Material.h @@ -0,0 +1,140 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" + +#include "sp/Types.h" + +#include "sp/graphics/API/Texture.h" +#include "sp/graphics/API/Texture2D.h" +#include "sp/graphics/API/TextureCube.h" + +#include "sp/graphics/shaders/Shader.h" + +namespace sp { namespace graphics { + + class SP_API Material + { + public: + enum class RenderFlags + { + NONE = 0, + DISABLE_DEPTH_TEST = BIT(0), + WIREFRAME = BIT(1) + }; + private: + friend class MaterialInstance; + protected: + API::Shader* m_Shader; + + byte* m_VSUserUniformBuffer; + uint m_VSUserUniformBufferSize; + + byte* m_PSUserUniformBuffer; + uint m_PSUserUniformBufferSize; + + std::vector m_Textures; + + const API::ShaderUniformList* m_VSUserUniforms; + const API::ShaderUniformList* m_PSUserUniforms; + const API::ShaderResourceList* m_Resources; + + int m_RenderFlags; + public: + Material(API::Shader* shader); + ~Material(); + + void Bind(); + void Unbind(); + void SetUniformData(const String& uniform, byte* data); + void SetTexture(const String& name, API::Texture* texture); + + inline int GetRenderFlags() const { return m_RenderFlags; } + void SetRenderFlags(int flags) { m_RenderFlags = flags; } + void SetRenderFlag(Material::RenderFlags flag) { m_RenderFlags |= (int)flag; } + + inline API::Shader* GetShader() { return m_Shader; } + + template + void SetUniform(const String& name, const T& data) + { + byte* buffer; + API::ShaderUniformDeclaration* declaration = FindUniformDeclaration(name, &buffer); + if (!declaration) + { + SP_ERROR("Could not find uniform with name '", name, "'!"); + return; + } + memcpy(buffer + declaration->GetOffset(), &data, declaration->GetSize()); + } + + template + const T* GetUniform(const String& name) const + { + return GetUniform(GetUniformDeclaration(name)); + } + + template + const T* GetUniform(const API::ShaderUniformDeclaration* uniform) const + { + return (T*)&m_UniformData[uniform->GetOffset()]; + } + protected: + void AllocateStorage(); + API::ShaderUniformDeclaration* FindUniformDeclaration(const String& name, byte** outBuffer = nullptr); + API::ShaderResourceDeclaration* FindResourceDeclaration(const String& name); + }; + + class SP_API MaterialInstance + { + private: + Material* m_Material; + + byte* m_VSUserUniformBuffer; + uint m_VSUserUniformBufferSize; + + byte* m_PSUserUniformBuffer; + uint m_PSUserUniformBufferSize; + + std::vector m_Textures; + + const API::ShaderUniformList* m_VSUserUniforms; + const API::ShaderUniformList* m_PSUserUniforms; + const API::ShaderResourceList* m_Resources; + + int m_RenderFlags; + public: + MaterialInstance(Material* material); + + inline Material* GetMaterial() const { return m_Material; } + + void Bind(); + void Unbind(); + void SetUniformData(const String& uniform, byte* data); + void SetTexture(const String& name, API::Texture* texture); + + inline int GetRenderFlags() const { return m_RenderFlags; } + void SetRenderFlags(int flags) { m_RenderFlags = flags; } + void SetRenderFlag(Material::RenderFlags flag) { m_RenderFlags |= (int)flag; } + + template + void SetUniform(const String& name, const T& data) + { + byte* buffer; + API::ShaderUniformDeclaration* declaration = FindUniformDeclaration(name, &buffer); + SP_ASSERT(declaration); + memcpy(buffer + declaration->GetOffset(), &data, declaration->GetSize()); + } + + template + const T* GetUniform(const String& name) const + { + return GetUniform(GetUniformDeclaration(name)); + } + private: + void AllocateStorage(); + API::ShaderUniformDeclaration* FindUniformDeclaration(const String& name, byte** outBuffer = nullptr); + API::ShaderResourceDeclaration* FindResourceDeclaration(const String& name); + }; + +} } diff --git a/Sparky-core/src/sp/graphics/Mesh.cpp b/Sparky-core/src/sp/graphics/Mesh.cpp new file mode 100644 index 00000000..1b1d06b0 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Mesh.cpp @@ -0,0 +1,66 @@ +#include "sp/sp.h" +#include "Mesh.h" + +#include "Renderer3D.h" + +#include + +#include "sp/debug/DebugRenderer.h" + +namespace sp { namespace graphics { + + Mesh::Mesh(API::VertexArray* vertexArray, API::IndexBuffer* indexBuffer, MaterialInstance* materialInstance) + : m_VertexArray(vertexArray), m_IndexBuffer(indexBuffer), m_MaterialInstance(materialInstance) + { +#ifdef SP_DEBUG + m_DebugVertexData = nullptr; + m_DebugVertexDataCount = 0; + m_DebugDraw = false; +#endif + } + + Mesh::Mesh(const Mesh* mesh) + : m_VertexArray(mesh->m_VertexArray), m_IndexBuffer(mesh->m_IndexBuffer), m_MaterialInstance(mesh->m_MaterialInstance) + { +#ifdef SP_DEBUG + m_DebugVertexData = mesh->m_DebugVertexData; + m_DebugVertexDataCount = mesh->m_DebugVertexDataCount; + m_DebugDraw = mesh->m_DebugDraw; +#endif + } + + Mesh::~Mesh() + { + delete m_VertexArray; + delete m_IndexBuffer; + delete m_MaterialInstance; + +#ifdef SP_DEBUG + delete[] m_DebugVertexData; +#endif + } + + void Mesh::Render(Renderer3D& renderer) + { + m_MaterialInstance->Bind(); + + m_VertexArray->Bind(); + m_IndexBuffer->Bind(); + m_VertexArray->Draw(m_IndexBuffer->GetCount()); + m_IndexBuffer->Unbind(); + m_VertexArray->Unbind(); + + m_MaterialInstance->Unbind(); + } + +#ifdef SP_DEBUG + void Mesh::DebugRender(const maths::mat4& transform) + { + if (!m_DebugDraw) + return; + + debug::DebugRenderer::DrawMesh(this, debug::DebugRenderMeshFlags::NONE, transform); + } +#endif + +} } diff --git a/Sparky-core/src/sp/graphics/Mesh.h b/Sparky-core/src/sp/graphics/Mesh.h new file mode 100644 index 00000000..58a91aa5 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Mesh.h @@ -0,0 +1,55 @@ +#pragma once + +#include "sp/Common.h" +#include "API/VertexArray.h" +#include "API/IndexBuffer.h" +#include "Material.h" + +#include "IRenderable.h" + +namespace sp { namespace graphics { + + class Renderer3D; + + struct SP_API Vertex + { + maths::vec3 position; + maths::vec3 normal; + maths::vec2 uv; + maths::vec3 binormal; + maths::vec3 tangent; + }; + + class SP_API Mesh : public IRenderable + { + private: + API::VertexArray* m_VertexArray; + API::IndexBuffer* m_IndexBuffer; + MaterialInstance* m_MaterialInstance; + +#ifdef SP_DEBUG + Vertex* m_DebugVertexData; + uint m_DebugVertexDataCount; + bool m_DebugDraw; +#endif + public: + Mesh(API::VertexArray* vertexArray, API::IndexBuffer* indexBuffer, MaterialInstance* materialInstance); + Mesh(const Mesh* mesh); + ~Mesh(); + + inline void SetMaterial(MaterialInstance* materialInstance) { m_MaterialInstance = materialInstance; } + inline MaterialInstance* GetMaterialInstance() const { return m_MaterialInstance; } + + void Render(Renderer3D& renderer) override; + +#ifdef SP_DEBUG + void DebugRender(const maths::mat4& transform); + + inline void SetDebugData(Vertex* vertices, uint count) { m_DebugVertexData = vertices; m_DebugVertexDataCount = count; } + inline uint GetDebugData(Vertex*& vertices) const { vertices = m_DebugVertexData; return m_DebugVertexDataCount; } + + inline void SetDebugDraw(bool debug) { m_DebugDraw = debug; } +#endif + }; + +} } diff --git a/Sparky-core/src/sp/graphics/MeshFactory.cpp b/Sparky-core/src/sp/graphics/MeshFactory.cpp new file mode 100644 index 00000000..56819369 --- /dev/null +++ b/Sparky-core/src/sp/graphics/MeshFactory.cpp @@ -0,0 +1,170 @@ +#include "sp/sp.h" +#include "MeshFactory.h" + +#include "sp/graphics/Renderer2D.h" + +#include "sp/graphics/Renderable2D.h" +#include "sp/graphics/shaders/Shader.h" + +#include + +namespace sp { namespace graphics { namespace MeshFactory { + + Mesh* CreateQuad(float x, float y, float width, float height, MaterialInstance* material) + { + using namespace maths; + + struct QuadVertex + { + maths::vec3 position; + maths::vec2 uv; + }; + + QuadVertex data[4]; + + data[0].position = maths::vec3(x, y, 0); + data[0].uv = maths::vec2(0, 1); + + data[1].position = maths::vec3(x + width, y, 0); + data[1].uv = maths::vec2(0, 0); + + data[2].position = maths::vec3(x + width, y + height, 0); + data[2].uv = maths::vec2(1, 0); + + data[3].position = maths::vec3(x, y + height, 0); + data[3].uv = maths::vec2(1, 1); + + API::VertexBuffer* buffer = API::VertexBuffer::Create(API::BufferUsage::STATIC); + buffer->SetData(sizeof(QuadVertex) * 4, data); + + API::BufferLayout layout; + layout.Push("POSITION"); + layout.Push("TEXCOORD"); + buffer->SetLayout(layout); + + API::VertexArray* va = API::VertexArray::Create(); + va->PushBuffer(buffer); + uint* indices = new uint[6] { 0, 1, 2, 2, 3, 0, }; + API::IndexBuffer* ib = API::IndexBuffer::Create(indices, 6); + return new Mesh(va, ib, material); + } + + Mesh* CreateQuad(const maths::vec2& position, const maths::vec2& size, MaterialInstance* material) + { + return CreateQuad(position.x, position.y, size.x, size.y, material); + } + + Mesh* CreateCube(float size, MaterialInstance* material) + { + // TODO: Do this ~properly~! Current lazy cube. + + using namespace maths; + + Vertex data[8]; + + memset(data, 0, 8 * sizeof(Vertex)); + + data[0].position = vec3(-size / 2.0f, -size / 2.0f, size / 2.0f); + data[1].position = vec3(size / 2.0f, -size / 2.0f, size / 2.0f); + data[2].position = vec3(size / 2.0f, size / 2.0f, size / 2.0f); + data[3].position = vec3(-size / 2.0f, size / 2.0f, size / 2.0f); + data[4].position = vec3(-size / 2.0f, -size / 2.0f, -size / 2.0f); + data[5].position = vec3(size / 2.0f, -size / 2.0f, -size / 2.0f); + data[6].position = vec3(size / 2.0f, size / 2.0f, -size / 2.0f); + data[7].position = vec3(-size / 2.0f, size / 2.0f, -size / 2.0f); + + data[0].normal = vec3(-1.0f, -1.0f, 1.0f); + data[1].normal = vec3(1.0f, -1.0f, 1.0f); + data[2].normal = vec3(1.0f, 1.0f, 1.0f); + data[3].normal = vec3(-1.0f, 1.0f, 1.0f); + data[4].normal = vec3(-1.0f, -1.0f, -1.0f); + data[5].normal = vec3(1.0f, -1.0f, -1.0f); + data[6].normal = vec3(1.0f, 1.0f, -1.0f); + data[7].normal = vec3(-1.0f, 1.0f, -1.0f); + + API::VertexBuffer* buffer = API::VertexBuffer::Create(API::BufferUsage::STATIC); + buffer->SetData(8 * sizeof(Vertex), data); + + API::BufferLayout layout; + layout.Push("position"); + layout.Push("normal"); + layout.Push("uv"); + buffer->SetLayout(layout); + + API::VertexArray* va = API::VertexArray::Create(); + va->Bind(); + va->PushBuffer(buffer); + + uint* indices = new uint[36] + { + 0, 1, 2, 2, 3, 0, + 3, 2, 6, 6, 7, 3, + 7, 6, 5, 5, 4, 7, + 4, 0, 3, 3, 7, 4, + 0, 1, 5, 5, 4, 0, + 1, 5, 6, 6, 2, 1 + }; + + API::IndexBuffer* ib = API::IndexBuffer::Create(indices, 36); + return new Mesh(va, ib, material); + } + + Mesh* CreatePlane(float width, float height, const maths::vec3& normal, MaterialInstance* material) + { + using namespace maths; + + vec3 vec = normal * 90.0f; + mat4 rotation = mat4::Rotate(vec.z, vec3(1, 0, 0)) * mat4::Rotate(vec.y, vec3(0, 1, 0)) * mat4::Rotate(vec.x, vec3(0, 0, 1)); + + Vertex data[4]; + memset(data, 0, 4 * sizeof(Vertex)); + + data[0].position = rotation * vec3(-width / 2.0f, 0.0f, -height / 2.0f); + data[0].normal = normal; + data[0].uv = vec2(0.0f, 0.0f); + data[0].binormal = mat4::Rotate(90.0f, vec3(0, 1, 0)) * normal; + data[0].tangent = mat4::Rotate(90.0f, vec3(0, 0, 1)) * normal; + + data[1].position = rotation * vec3(-width / 2.0f, 0.0f, height / 2.0f); + data[1].normal = normal; + data[1].uv = vec2(0.0f, 1.0f); + data[1].binormal = mat4::Rotate(90.0f, vec3(0, 1, 0)) * normal; + data[1].tangent = mat4::Rotate(90.0f, vec3(0, 0, 1)) * normal; + + data[2].position = rotation * vec3( width / 2.0f, 0.0f, height / 2.0f); + data[2].normal = normal; + data[2].uv = vec2(1.0f, 1.0f); + data[2].binormal = mat4::Rotate(90.0f, vec3(0, 1, 0)) * normal; + data[2].tangent = mat4::Rotate(90.0f, vec3(0, 0, 1)) * normal; + + data[3].position = rotation * vec3( width / 2.0f, 0.0f, -height / 2.0f); + data[3].normal = normal; + data[3].uv = vec2(1.0f, 0.0f); + data[3].binormal = mat4::Rotate(90.0f, vec3(0, 1, 0)) * normal; + data[3].tangent = mat4::Rotate(90.0f, vec3(0, 0, 1)) * normal; + + API::VertexBuffer* buffer = API::VertexBuffer::Create(API::BufferUsage::STATIC); + buffer->SetData(8 * sizeof(Vertex), data); + + API::BufferLayout layout; + layout.Push("POSITION"); + layout.Push("NORMAL"); + layout.Push("TEXCOORD"); + layout.Push("BINORMAL"); + layout.Push("TANGENT"); + buffer->SetLayout(layout); + + API::VertexArray* va = API::VertexArray::Create(); + va->PushBuffer(buffer); + + uint* indices = new uint[6] + { + 0, 1, 2, + 2, 3, 0 + }; + + API::IndexBuffer* ib = API::IndexBuffer::Create(indices, 6); + return new Mesh(va, ib, material); + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/MeshFactory.h b/Sparky-core/src/sp/graphics/MeshFactory.h new file mode 100644 index 00000000..9b0f83ab --- /dev/null +++ b/Sparky-core/src/sp/graphics/MeshFactory.h @@ -0,0 +1,23 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/Types.h" +#include "sp/maths/maths.h" + +#include "sp/graphics/Mesh.h" +#include "sp/graphics/Material.h" +#include "sp/graphics/API/VertexArray.h" + +namespace sp { namespace graphics { namespace MeshFactory { + + // + // TODO: Return a Mesh instead of a VertexArray + // + + SP_API Mesh* CreateQuad(float x, float y, float width, float height, MaterialInstance* material); + SP_API Mesh* CreateQuad(const maths::vec2& position, const maths::vec2& size, MaterialInstance* material); + + SP_API Mesh* CreateCube(float size, MaterialInstance* material); + SP_API Mesh* CreatePlane(float width, float height, const maths::vec3& normal, MaterialInstance* material); + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/Model.cpp b/Sparky-core/src/sp/graphics/Model.cpp new file mode 100644 index 00000000..8ae06142 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Model.cpp @@ -0,0 +1,145 @@ +#include "sp/sp.h" +#include "Model.h" + +#include + +#include "sp/system/Memory.h" +#include "sp/graphics/shaders/ShaderManager.h" +#include "sp/system/VFS.h" + +namespace sp { namespace graphics { + + using namespace maths; + + enum VertexAttribute + { + POSITION = BIT(0), + NORMAL = BIT(1), + UV = BIT(2), + BINORMAL = BIT(3), + TANGENT = BIT(4), + }; + + struct SPMFormat + { + char* header = "SPMF"; + byte nameLength; + char* name; + uint attributes; + uint vertexBufferSize; + byte* vertexData; + uint indexBufferSize; + byte* indexData; + char* footer = "1234"; + }; + + Model::Model(const String& path, MaterialInstance* materialInstance) + { + Load(path); + m_Mesh->SetMaterial(materialInstance); + } + + Model::~Model() + { + delete m_Mesh; + } + + byte* ReadBytes(FILE* file, byte* buffer, uint size) + { + fread(buffer, 1, size, file); + return buffer; + } + + void Model::Load(const String& path) + { + // TODO: Change to VFS::OpenMemoryMap() + String physicalPath; + VFS::Get()->ResolvePhysicalPath(path, physicalPath); + SPMFormat format; + FILE* f = fopen(physicalPath.c_str(), "rb"); + SP_ASSERT(f); + { + byte header[4]; + ReadBytes(f, header, 4); + SP_ASSERT(memcmp(header, format.header, 4) == 0); + } + + { + byte buffer[1]; + ReadBytes(f, buffer, 1); + format.nameLength = *buffer; + } + + { + format.name = new char[format.nameLength + 1]; + ReadBytes(f, (byte*)format.name, format.nameLength); + format.name[format.nameLength] = '\0'; + } + + { + byte buffer[4]; + ReadBytes(f, buffer, 4); + format.attributes = *(uint*)buffer; + } + + { + byte buffer[4]; + ReadBytes(f, buffer, 4); + format.vertexBufferSize = *(uint*)buffer; + } + + { + format.vertexData = spnew byte[format.vertexBufferSize]; + ReadBytes(f, format.vertexData, format.vertexBufferSize); + } + + { + byte buffer[4]; + ReadBytes(f, buffer, 4); + format.indexBufferSize = *(uint*)buffer; + } + + { + format.indexData = spnew byte[format.indexBufferSize]; + ReadBytes(f, format.indexData, format.indexBufferSize); + } + + { + byte footer[4]; + ReadBytes(f, footer, 4); + SP_ASSERT(memcmp(footer, format.footer, 4) == 0); + } + + fclose(f); + + ShaderManager::Get("AdvancedLighting")->Bind(); + + API::VertexBuffer* buffer = API::VertexBuffer::Create(API::BufferUsage::STATIC); + buffer->SetData(format.vertexBufferSize, format.vertexData); + + API::BufferLayout layout; + layout.Push("POSITION"); + layout.Push("NORMAL"); + layout.Push("TEXCOORD"); + layout.Push("BINORMAL"); + layout.Push("TANGENT"); + buffer->SetLayout(layout); + + API::VertexArray* va = API::VertexArray::Create(); + va->PushBuffer(buffer); + + API::IndexBuffer* ib = API::IndexBuffer::Create((uint*)format.indexData, format.indexBufferSize / sizeof(uint)); + m_Mesh = spnew Mesh(va, ib, nullptr); + +#ifdef SP_DEBUG + m_Mesh->SetDebugData((Vertex*)format.vertexData, format.vertexBufferSize / sizeof(Vertex)); +#else +#endif + } + + void Model::Render(Renderer3D& renderer) + { + m_Mesh->Render(renderer); + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/Model.h b/Sparky-core/src/sp/graphics/Model.h new file mode 100644 index 00000000..054dc7bc --- /dev/null +++ b/Sparky-core/src/sp/graphics/Model.h @@ -0,0 +1,50 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" +#include "sp/Types.h" +#include "sp/maths/maths.h" + +#include "Mesh.h" + +namespace sp { namespace graphics { + + class SP_API Model : public IRenderable + { + private: + Mesh* m_Mesh; + public: + // This eventually needs to be replaced by a global Asset Server. + Model(const String& path, MaterialInstance* materialInstance = nullptr); + ~Model(); + + void Render(Renderer3D& renderer) override; + + inline Mesh* GetMesh() const { return m_Mesh; } + private: + struct VertexSet + { + std::vector positions, normals; + std::vector uvs; + }; + + // TODO: Replace with uvec3, whenever that begins to exist + struct IndexSet + { + uint position; + uint uv; + uint normal; + + bool operator==(const IndexSet& other) const + { + return position == other.position && uv == other.uv && normal == other.normal; + } + }; + + friend struct std::hash; + + void Load(const String& path); + void InsertVertex(std::vector& vertices, std::vector& indices, std::unordered_map& mapping, VertexSet& inputVertices, IndexSet& indexSet); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/OBJModel.cpp b/Sparky-core/src/sp/graphics/OBJModel.cpp new file mode 100644 index 00000000..db859962 --- /dev/null +++ b/Sparky-core/src/sp/graphics/OBJModel.cpp @@ -0,0 +1,133 @@ +#include "sp/sp.h" +#if 0 +#include "Model.h" + +#include +#include +#include + +#include + +template<> +struct std::hash +{ + const size_t operator()(const sp::graphics::Model::IndexSet& key) const + { + return (key.position) ^ (key.normal << 14) ^ (key.uv << 23); + } +}; + +namespace sp { namespace graphics { + + using namespace maths; + + Model::Model(const String& path, MaterialInstance* materialInstance) + { + Load(path); + m_Mesh->SetMaterial(materialInstance); + } + + Model::~Model() + { + delete m_Mesh; + } + + void Model::Load(const String& path) + { + std::vector lines = utils::SplitString(utils::ReadFile(path), '\n'); + VertexSet inputVertices; + std::vector vertices; + std::vector indices; + std::unordered_map mapping; + + uint i = 0; + for (String line : lines) + { + const char* cstr = line.c_str(); + if (strstr(cstr, "#")) // Comment + { + continue; + } + else if (strstr(cstr, "v")) + { + if (strstr(cstr, "vt")) + { + vec2 uv; + int32 result = sscanf(cstr, "%*s %f %f", &uv.x, &uv.y); + if (result == 0) + continue; + inputVertices.uvs.push_back(uv); + } + else if (strstr(cstr, "vn")) + { + vec3 normal; + int32 result = sscanf(cstr, "%*s %f %f %f", &normal.x, &normal.y, &normal.z); + if (result == 0) + continue; + inputVertices.normals.push_back(normal); + } + else + { + vec3 position; + int32 result = sscanf(cstr, "%*s %f %f %f", &position.x, &position.y, &position.z); + if (result == 0) + continue; + inputVertices.positions.push_back(position); + } + } + else if (strstr(cstr, "f")) + { + IndexSet indexSet[3]; + int32 result = sscanf(cstr, "%*s %d/%d/%d %d/%d/%d %d/%d/%d", &indexSet[0].position, &indexSet[0].uv, &indexSet[0].normal, &indexSet[1].position, &indexSet[1].uv, &indexSet[1].normal, &indexSet[2].position, &indexSet[2].uv, &indexSet[2].normal); + if (result == 0) + continue; + + InsertVertex(vertices, indices, mapping, inputVertices, indexSet[0]); + InsertVertex(vertices, indices, mapping, inputVertices, indexSet[1]); + InsertVertex(vertices, indices, mapping, inputVertices, indexSet[2]); + } + if (i++ % 1000 == 0) + SP_INFO((int32)((i / (float)lines.size()) * 100.0f), "%"); + } + SP_INFO("100%"); + SP_INFO("Loaded ", path); + + API::Buffer* buffer = new API::Buffer(GL_ARRAY_BUFFER, GL_STATIC_DRAW); + buffer->Bind(); + buffer->SetData(vertices.size() * sizeof(Vertex), &vertices[0]); + + buffer->layout.Push("position"); + buffer->layout.Push("normal"); + buffer->layout.Push("uv"); + + VertexArray* va = new VertexArray(); + va->Bind(); + va->PushBuffer(buffer); + + IndexBuffer* ib = new IndexBuffer(&indices[0], indices.size()); + m_Mesh = new Mesh(va, ib, nullptr); + } + + void Model::InsertVertex(std::vector& vertices, std::vector& indices, std::unordered_map& mapping, VertexSet& inputVertices, IndexSet& indexSet) + { + auto lookup = mapping.find(indexSet); + if (lookup != mapping.end()) + { + indices.push_back(lookup->second); + } + else + { + mapping[indexSet] = (int32)vertices.size(); + indices.push_back(vertices.size()); + Vertex vertex = { inputVertices.positions[indexSet.position - 1], inputVertices.normals[indexSet.normal - 1], inputVertices.uvs[indexSet.uv - 1] }; + vertices.push_back(vertex); + } + } + + void Model::Render(Renderer3D& renderer) + { + m_Mesh->Render(renderer); + } + +} } +#endif \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/PBRMaterial.cpp b/Sparky-core/src/sp/graphics/PBRMaterial.cpp new file mode 100644 index 00000000..7074e222 --- /dev/null +++ b/Sparky-core/src/sp/graphics/PBRMaterial.cpp @@ -0,0 +1,183 @@ +#include "sp/sp.h" +#include "PBRMaterial.h" + +#include "sp/system/Memory.h" +#include "sp/graphics/shaders/ShaderResource.h" + +namespace sp { namespace graphics { + + using namespace API; + + API::Texture2D* PBRMaterial::s_PreintegratedFG = nullptr; + + // TODO: Shader should be selected automatically + PBRMaterial::PBRMaterial(API::Shader* shader) + : Material(shader) + { + if (s_PreintegratedFG == nullptr) + s_PreintegratedFG = API::Texture2D::CreateFromFile("PreintegratedFG", "res/pbr/PreintegratedFG.bmp"); // TODO: Embed into engine! + + SetTexture("u_PreintegratedFG", s_PreintegratedFG); + SetUniform("u_UsingNormalMap", 0.0f); + + // Default parameters for PBR material + SetUniform("u_UsingAlbedoMap", 0.0f); + SetUniform("u_AlbedoColor", maths::vec4(0.0f, 0.0f, 0.0f, 1.0f)); + + SetUniform("u_SpecularColor", maths::vec3(1.0f, 1.0f, 1.0f)); + SetUniform("u_UsingSpecularMap", 0.0f); + + SetUniform("u_GlossColor", 0.8f); + SetUniform("u_UsingGlossMap", 0.0f); + + SetUniform("u_UsingNormalMap", 0.0f); + } + + PBRMaterial::~PBRMaterial() + { + spdel m_Shader; + } + + void PBRMaterial::SetEnviromentMap(API::TextureCube* texture) + { + SetTexture("u_EnvironmentMap", texture); + } + + void PBRMaterial::SetAlbedo(const maths::vec4& color) + { + SetUniform("u_AlbedoColor", color); + SetUniform("u_UsingAlbedoMap", 0.0f); + } + + void PBRMaterial::SetSpecular(const maths::vec3& color) + { + SetUniform("u_SpecularColor", color); + SetUniform("u_UsingSpecularMap", 0.0f); + } + + void PBRMaterial::SetGloss(float value) + { + SetUniform("u_GlossColor", value); + SetUniform("u_UsingGlossMap", 0.0f); + } + + void PBRMaterial::UsingNormalMap(bool value) + { + SetUniform("u_UsingNormalMap", value ? 1.0f : 0.0f); + } + + void PBRMaterial::SetAlbedoMap(API::Texture2D* texture) + { + SetTexture("u_AlbedoMap", texture); + SetUniform("u_UsingAlbedoMap", 1.0f); + } + + void PBRMaterial::SetSpecularMap(API::Texture2D* texture) + { + SetTexture("u_SpecularMap", texture); + SetUniform("u_UsingSpecularMap", 1.0f); + } + + void PBRMaterial::SetNormalMap(API::Texture2D* texture) + { + SetTexture("u_NormalMap", texture); + SetUniform("u_UsingNormalMap", 1.0f); + } + + void PBRMaterial::SetGlossMap(API::Texture2D* texture) + { + SetTexture("u_GlossMap", texture); + SetUniform("u_UsingGlossMap", 1.0f); + } + + API::Texture* PBRMaterial::GetAlbedoMap() + { + ShaderResourceDeclaration* declaration = FindResourceDeclaration("u_AlbedoMap"); + SP_ASSERT(declaration); + uint slot = declaration->GetRegister(); + return m_Textures.size() > slot ? m_Textures[slot] : nullptr; + } + + API::Texture* PBRMaterial::GetSpecularMap() + { + ShaderResourceDeclaration* declaration = FindResourceDeclaration("u_SpecularMap"); + SP_ASSERT(declaration); + uint slot = declaration->GetRegister(); + return m_Textures.size() > slot ? m_Textures[slot] : nullptr; + } + + API::Texture* PBRMaterial::GetNormalMap() + { + ShaderResourceDeclaration* declaration = FindResourceDeclaration("u_NormalMap"); + SP_ASSERT(declaration); + uint slot = declaration->GetRegister(); + return m_Textures.size() > slot ? m_Textures[slot] : nullptr; + } + + API::Texture* PBRMaterial::GetGlossMap() + { + ShaderResourceDeclaration* declaration = FindResourceDeclaration("u_GlossMap"); + SP_ASSERT(declaration); + uint slot = declaration->GetRegister(); + return m_Textures.size() > slot ? m_Textures[slot] : nullptr; + } + + PBRMaterialInstance::PBRMaterialInstance(PBRMaterial* material) + : MaterialInstance(material) + { + } + + void PBRMaterialInstance::SetEnviromentMap(API::TextureCube* texture) + { + SetTexture("u_EnvironmentMap", texture); + } + + void PBRMaterialInstance::SetAlbedo(const maths::vec4& color) + { + SetUniform("u_AlbedoColor", color); + SetUniform("u_UsingAlbedoMap", 0.0f); + } + + void PBRMaterialInstance::SetSpecular(const maths::vec3& color) + { + SetUniform("u_SpecularColor", color); + SetUniform("u_UsingSpecularMap", 0.0f); + } + + void PBRMaterialInstance::SetGloss(float value) + { + SetUniform("u_GlossColor", value); + SetUniform("u_UsingGlossMap", 0.0f); + } + + void PBRMaterialInstance::UsingNormalMap(bool value) + { + SetUniform("u_UsingNormalMap", value ? 1.0f : 0.0f); + } + + void PBRMaterialInstance::SetAlbedoMap(API::Texture2D* texture) + { + SetTexture("u_AlbedoMap", texture); + SetUniform("u_UsingAlbedoMap", 1.0f); + } + + void PBRMaterialInstance::SetSpecularMap(API::Texture2D* texture) + { + SetTexture("u_SpecularMap", texture); + SetUniform("u_UsingSpecularMap", 1.0f); + } + + void PBRMaterialInstance::SetNormalMap(API::Texture2D* texture) + { + SetTexture("u_NormalMap", texture); + SetUniform("u_UsingNormalMap", 1.0f); + } + + void PBRMaterialInstance::SetGlossMap(API::Texture2D* texture) + { + SetUniform("u_GlossMap", texture); + SetUniform("u_UsingGlossMap", 1.0f); + } + + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/PBRMaterial.h b/Sparky-core/src/sp/graphics/PBRMaterial.h new file mode 100644 index 00000000..50c3aab3 --- /dev/null +++ b/Sparky-core/src/sp/graphics/PBRMaterial.h @@ -0,0 +1,55 @@ +#pragma once + +#include "Material.h" + +namespace sp { namespace graphics { + + class SP_API PBRMaterial : public Material + { + private: + static API::Texture2D* s_PreintegratedFG; + public: + PBRMaterial(API::Shader* shader); + ~PBRMaterial(); + + void SetEnviromentMap(API::TextureCube* texture); + + // PBR Statics + void SetAlbedo(const maths::vec4& color); + void SetSpecular(const maths::vec3& color); + void SetGloss(float value); + void UsingNormalMap(bool value); + + // PBR Maps + void SetAlbedoMap(API::Texture2D* texture); + void SetSpecularMap(API::Texture2D* texture); + void SetNormalMap(API::Texture2D* texture); + void SetGlossMap(API::Texture2D* texture); // TODO: Grayscale texture + + API::Texture* GetAlbedoMap(); + API::Texture* GetSpecularMap(); + API::Texture* GetNormalMap(); + API::Texture* GetGlossMap(); + }; + + class SP_API PBRMaterialInstance : public MaterialInstance + { + public: + PBRMaterialInstance(PBRMaterial* material); + + void SetEnviromentMap(API::TextureCube* texture); + + // PBR Statics + void SetAlbedo(const maths::vec4& color); + void SetSpecular(const maths::vec3& color); + void SetGloss(float value); + void UsingNormalMap(bool value); + + // PBR Maps + void SetAlbedoMap(API::Texture2D* texture); + void SetSpecularMap(API::Texture2D* texture); + void SetNormalMap(API::Texture2D* texture); + void SetGlossMap(API::Texture2D* texture); // TODO: Grayscale texture + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/RenderCommand.h b/Sparky-core/src/sp/graphics/RenderCommand.h new file mode 100644 index 00000000..5d378689 --- /dev/null +++ b/Sparky-core/src/sp/graphics/RenderCommand.h @@ -0,0 +1,22 @@ +#pragma once + +#include "sp/Common.h" +#include "Mesh.h" + +namespace sp { namespace graphics { + + struct SP_API RendererUniform + { + String uniform; + byte* value; + }; + + struct SP_API RenderCommand + { + Mesh* mesh; + maths::mat4 transform; + API::Shader* shader; + std::vector uniforms; + }; + +} } diff --git a/Sparky-core/src/sp/graphics/Renderable2D.cpp b/Sparky-core/src/sp/graphics/Renderable2D.cpp new file mode 100644 index 00000000..477900e4 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Renderable2D.cpp @@ -0,0 +1,54 @@ +#include "sp/sp.h" +#include "Renderable2D.h" + +#include "Renderer2D.h" + +namespace sp { namespace graphics { + + using namespace maths; + + Renderable2D::Renderable2D() + : m_Texture(nullptr) + { + m_UVs = GetDefaultUVs(); + } + + Renderable2D::Renderable2D(const maths::vec2& position, const maths::vec2& size, uint color) + : m_Bounds(position, size), m_Color(color), m_Texture(nullptr), m_Visible(true) + { + m_UVs = GetDefaultUVs(); + } + + Renderable2D::~Renderable2D() + { + } + + void Renderable2D::Submit(Renderer2D* renderer) const + { + renderer->Submit(this); + } + + void Renderable2D::SetColor(const vec4& color) + { + uint r = (uint)(color.x * 255.0f); + uint g = (uint)(color.y * 255.0f); + uint b = (uint)(color.z * 255.0f); + uint a = (uint)(color.w * 255.0f); + + m_Color = a << 24 | b << 16 | g << 8 | r; + } + + const std::vector& Renderable2D::GetDefaultUVs() + { + static std::vector results; + if (!results.size()) + { + results.push_back(maths::vec2(0, 1)); + results.push_back(maths::vec2(1, 1)); + results.push_back(maths::vec2(1, 0)); + results.push_back(maths::vec2(0, 0)); + } + return results; + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/Renderable2D.h b/Sparky-core/src/sp/graphics/Renderable2D.h new file mode 100644 index 00000000..8a246301 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Renderable2D.h @@ -0,0 +1,77 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/Types.h" + +#include "API/Texture.h" + +#include "API/VertexBuffer.h" +#include "API/IndexBuffer.h" +#include "shaders/Shader.h" + +#include "../maths/maths.h" + +namespace sp { namespace graphics { + + class Renderer2D; + + struct SP_API VertexData + { + maths::vec3 vertex; + maths::vec2 uv; + maths::vec2 mask_uv; + float tid; + float mid; + uint color; + }; + +#define RENDERER_VERTEX_SIZE sizeof(VertexData) + + /// + /// Renderable2D + /// + /// Base class for 2D renderables, such as Sprites and Labels. + /// Note that positions are stored as center points with size + /// being half-width and half-height extents. AABBs in Sparky + /// on the other hand are min and max coordinates. + class SP_API Renderable2D + { + protected: + maths::Rectangle m_Bounds; + uint m_Color; + std::vector m_UVs; + API::Texture* m_Texture; + bool m_Visible; + protected: + Renderable2D(); + public: + Renderable2D(const maths::vec2& position, const maths::vec2& size, uint color); + virtual ~Renderable2D(); + + virtual void Submit(Renderer2D* renderer) const; + + inline const maths::vec2& GetPosition() const { return m_Bounds.position; } + inline const maths::vec2& GetSize() const { return m_Bounds.size; } + + inline const maths::Rectangle& GetBounds() const { return m_Bounds; } + inline maths::Rectangle& GetBounds() { return m_Bounds; } + + inline maths::AABB GetBoundingBox() const { return m_Bounds; } + inline const uint GetColor() const { return m_Color; } + + inline API::Texture* GetTexture() const { return m_Texture; } + inline const std::vector& GetUVs() const { return m_UVs; } + + inline bool IsVisible() const { return m_Visible; } + + inline void SetPosition(const maths::vec2& position) { m_Bounds.position = position; } + inline void SetSize(const maths::vec2& size) { m_Bounds.size = size; } + inline void SetColor(uint color) { m_Color = color; } + void SetColor(const maths::vec4& color); + + inline void SetVisible(bool visible) { m_Visible = visible; } + public: + static const std::vector& GetDefaultUVs(); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/Renderer.cpp b/Sparky-core/src/sp/graphics/Renderer.cpp new file mode 100644 index 00000000..fb9918ae --- /dev/null +++ b/Sparky-core/src/sp/graphics/Renderer.cpp @@ -0,0 +1,24 @@ +#include "sp/sp.h" +#include "Renderer.h" + +#include "sp/platform/opengl/GLRenderer.h" +#include "sp/platform/directx/DXRenderer.h" + +#include "API/Context.h" +#include "sp/system/Memory.h" + +namespace sp { namespace graphics { + + Renderer* Renderer::s_Instance = nullptr; + + void Renderer::Init() + { + switch (API::Context::GetRenderAPI()) + { + case API::RenderAPI::OPENGL: s_Instance = spnew GLRenderer(); break; + case API::RenderAPI::DIRECT3D: s_Instance = spnew D3DRenderer(); break; + } + s_Instance->InitInternal(); + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/Renderer.h b/Sparky-core/src/sp/graphics/Renderer.h new file mode 100644 index 00000000..3c7f8719 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Renderer.h @@ -0,0 +1,68 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/String.h" + +namespace sp { namespace graphics { + + enum SP_API RendererBufferType + { + RENDERER_BUFFER_NONE = 0, + RENDERER_BUFFER_COLOR = BIT(0), + RENDERER_BUFFER_DEPTH = BIT(1), + RENDERER_BUFFER_STENCIL = BIT(2) + }; + + enum class SP_API RendererBlendFunction + { + NONE, + ZERO, + ONE, + SOURCE_ALPHA, + DESTINATION_ALPHA, + ONE_MINUS_SOURCE_ALPHA + }; + + enum class SP_API RendererBlendEquation + { + NONE, + ADD, + SUBTRACT + }; + + class SP_API Renderer + { + private: + static Renderer* s_Instance; + protected: + virtual void InitInternal() = 0; + + virtual void ClearInternal(uint buffer) = 0; + virtual void PresentInternal() = 0; + + virtual void SetDepthTestingInternal(bool enabled) = 0; + virtual void SetBlendInternal(bool enabled) = 0; + virtual void SetViewportInternal(uint x, uint y, uint width, uint height) = 0; + + virtual void SetBlendFunctionInternal(RendererBlendFunction source, RendererBlendFunction destination) = 0; + virtual void SetBlendEquationInternal(RendererBlendFunction blendEquation) = 0; + + virtual const String& GetTitleInternal() const = 0; + public: + inline static void Clear(uint buffer) { s_Instance->ClearInternal(buffer); } + inline static void Present() { s_Instance->PresentInternal(); } + + inline static void SetDepthTesting(bool enabled) { s_Instance->SetDepthTestingInternal(enabled); } + inline static void SetBlend(bool enabled) { s_Instance->SetBlendInternal(enabled); } + inline static void SetViewport(uint x, uint y, uint width, uint height) { s_Instance->SetViewportInternal(x, y, width, height); } + + inline static void SetBlendFunction(RendererBlendFunction source, RendererBlendFunction destination) { s_Instance->SetBlendFunctionInternal(source, destination); } + inline static void SetBlendEquation(RendererBlendFunction blendEquation) { s_Instance->SetBlendEquationInternal(blendEquation); } + + inline static const String& GetTitle() { return s_Instance->GetTitleInternal(); } + public: + static void Init(); + inline static Renderer* GetRenderer() { return s_Instance; } + }; + +} } diff --git a/Sparky-core/src/sp/graphics/Renderer2D.cpp b/Sparky-core/src/sp/graphics/Renderer2D.cpp new file mode 100644 index 00000000..e2108898 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Renderer2D.cpp @@ -0,0 +1,571 @@ +#include "sp/sp.h" + +#include "shaders/ShaderFactory.h" +#include "MeshFactory.h" + +#include "API/VertexBuffer.h" +#include "API/VertexArray.h" +#include "API/BufferLayout.h" + +#include "sp/utils/Log.h" + +#include "Renderer.h" +#include "sp/debug/DebugMenu.h" + +#include + +namespace sp { namespace graphics { + +#define RENDERER_MAX_SPRITES 60000 +#define RENDERER_SPRITE_SIZE RENDERER_VERTEX_SIZE * 4 +#define RENDERER_BUFFER_SIZE RENDERER_SPRITE_SIZE * RENDERER_MAX_SPRITES +#define RENDERER_INDICES_SIZE RENDERER_MAX_SPRITES * 6 +#define RENDERER_MAX_TEXTURES 32 - 1 + + using namespace maths; + + bool Renderer2D::s_PostEffectsEnabled = true; + bool Renderer2D::s_MaskEnabled = true; + + const uint g_RequiredSystemUniformsCount = 2; + const String g_RequiredSystemUniforms[g_RequiredSystemUniformsCount] = + { + "sys_ProjectionMatrix", + "sys_ViewMatrix" + }; + + const uint sys_ProjectionMatrixIndex = 0; + const uint sys_ViewMatrixIndex = 1; + + Renderer2D::Renderer2D(uint width, uint height) + : m_IndexCount(0), m_ScreenSize(tvec2(width, height)), m_ViewportSize(tvec2(width, height)), m_Mask(nullptr), m_PostEffectsEnabled(false) + { + Init(); + } + + Renderer2D::Renderer2D(const tvec2& screenSize) + : m_IndexCount(0), m_ScreenSize(screenSize), m_ViewportSize(screenSize), m_Mask(nullptr), m_PostEffectsEnabled(false) + { + Init(); + } + + Renderer2D::~Renderer2D() + { + spdel m_IndexBuffer; + spdel m_VertexArray; + spdel m_ScreenQuad; + } + + void Renderer2D::Init() + { + m_TransformationStack.push_back(maths::mat4::Identity()); + m_TransformationBack = &m_TransformationStack.back(); + m_Target = RenderTarget::SCREEN; + + m_SystemUniforms.resize(g_RequiredSystemUniformsCount); + + m_Shader = ShaderFactory::BatchRendererShader(); + const API::ShaderUniformBufferList& vssu = m_Shader->GetVSSystemUniforms(); + SP_ASSERT(vssu.size()); + for (uint i = 0; i < vssu.size(); i++) + { + API::ShaderUniformBufferDeclaration* ub = vssu[i]; + UniformBuffer buffer(spnew byte[ub->GetSize()], ub->GetSize()); + m_SystemUniformBuffers.push_back(buffer); + for (API::ShaderUniformDeclaration* decl : ub->GetUniformDeclarations()) + { + for (uint j = 0; j < g_RequiredSystemUniformsCount; j++) + { + if (decl->GetName() == g_RequiredSystemUniforms[j]) + m_SystemUniforms[j] = BR2DSystemUniform(buffer, decl->GetOffset()); + } + } + } + + SetCamera(spnew Camera(mat4::Orthographic(-16.0f, 16.0f, -9.0f, 9.0f, -1.0f, 1.0f))); + + m_Shader->Bind(); + + API::VertexBuffer* buffer = API::VertexBuffer::Create(API::BufferUsage::DYNAMIC); + buffer->Resize(RENDERER_BUFFER_SIZE); + + API::BufferLayout layout; + layout.Push("POSITION"); // Position + layout.Push("TEXCOORD"); // UV + layout.Push("MASKUV"); // Mask UV + layout.Push("ID"); // Texture Index + layout.Push("MASKID"); // Mask Index + layout.Push("COLOR", 4, true); // Color + buffer->SetLayout(layout); + + m_VertexArray = API::VertexArray::Create(); + m_VertexArray->PushBuffer(buffer); + + uint* indices = spnew uint[RENDERER_INDICES_SIZE]; + + int32 offset = 0; + for (int32 i = 0; i < RENDERER_INDICES_SIZE; i += 6) + { + indices[i] = offset + 0; + indices[i + 1] = offset + 1; + indices[i + 2] = offset + 2; + + indices[i + 3] = offset + 2; + indices[i + 4] = offset + 3; + indices[i + 5] = offset + 0; + + offset += 4; + } + + m_IndexBuffer = API::IndexBuffer::Create(indices, RENDERER_INDICES_SIZE); + m_VertexArray->Unbind(); + +#if 0 + m_Framebuffer = Framebuffer2D::Create(m_ViewportSize.x, m_ViewportSize.y); + // Setup Framebuffer + m_FramebufferMaterial = sonew Material(ShaderFactory::SimpleShader()); + m_FramebufferMaterial->SetUniform("pr_matrix", maths::mat4::Orthographic(0, (float)m_ScreenSize.x, (float)m_ScreenSize.y, 0, -1.0f, 1.0f)); + m_FramebufferMaterial->SetTexture("u_Texture", m_Framebuffer->GetTexture()); + m_ScreenQuad = MeshFactory::CreateQuad(0, 0, (float)m_ScreenSize.x, (float)m_ScreenSize.y); + + m_PostEffects = spnew PostEffects(); + m_PostEffectsBuffer = Framebuffer2D::Create(m_ViewportSize.x, m_ViewportSize.y); +#endif + + debug::DebugMenu::Add(String("Renderer2D/Post Effects"), &s_PostEffectsEnabled); + debug::DebugMenu::Add(String("Renderer2D/Mask"), &s_MaskEnabled); + } + + void Renderer2D::Push(const maths::mat4& matrix, bool override) + { + if (override) + m_TransformationStack.push_back(matrix); + else + m_TransformationStack.push_back(m_TransformationStack.back() * matrix); + + m_TransformationBack = &m_TransformationStack.back(); + } + void Renderer2D::Pop() + { + // TODO: Add to log! + if (m_TransformationStack.size() > 1) + m_TransformationStack.pop_back(); + + m_TransformationBack = &m_TransformationStack.back(); + } + + + float Renderer2D::SubmitTexture(API::Texture* texture) + { +#if 0 + if (!textureID) + SP_WARN("Invalid texture ID submitted!"); +#endif + float result = 0.0f; + bool found = false; + for (uint i = 0; i < m_Textures.size(); i++) + { + if (m_Textures[i] == texture) + { + result = (float)(i + 1); + found = true; + break; + } + } + + if (!found) + { + if (m_Textures.size() >= RENDERER_MAX_TEXTURES) + { + End(); + Present(); + Begin(); + } + m_Textures.push_back(texture); + result = (float)(m_Textures.size()); + } + return result; + } + + void Renderer2D::SetCamera(Camera* camera) + { + m_Camera = camera; + + memcpy(m_SystemUniforms[sys_ProjectionMatrixIndex].buffer.buffer + m_SystemUniforms[sys_ProjectionMatrixIndex].offset, &camera->GetProjectionMatrix(), sizeof(mat4)); + memcpy(m_SystemUniforms[sys_ViewMatrixIndex].buffer.buffer + m_SystemUniforms[sys_ViewMatrixIndex].offset, &camera->GetViewMatrix(), sizeof(mat4)); + } + + void Renderer2D::Begin() + { + if (m_Target == RenderTarget::BUFFER) + { + SP_ASSERT(false); // Currently Unsupported +#if 0 + if (m_ViewportSize != m_Framebuffer->GetSize()) + { + delete m_Framebuffer; + m_Framebuffer = spnew API::Framebuffer2D(m_ViewportSize); + + if (m_PostEffectsEnabled) + { + delete m_PostEffectsBuffer; + m_PostEffectsBuffer = spnew API::Framebuffer2D(m_ViewportSize); + } + } + + if (m_PostEffectsEnabled) + { + m_PostEffectsBuffer->Bind(); + m_PostEffectsBuffer->Clear(); + } + + m_Framebuffer->Bind(); + m_Framebuffer->Clear(); // TODO: Clear somewhere else, since this basically limits to one draw call + Renderer::SetBlendFunction(RendererBlendFunction::ONE, RendererBlendFunction::ZERO); +#endif + } + else + { + // GLCall(glBindFramebuffer(GL_FRAMEBUFFER, m_ScreenBuffer)); + Renderer::SetViewport(0, 0, m_ScreenSize.x, m_ScreenSize.y); + } + m_VertexArray->Bind(); + m_Buffer = m_VertexArray->GetBuffer()->GetPointer(); + } + + void Renderer2D::Submit(const Renderable2D* renderable) + { + if (!renderable->IsVisible()) + return; + + const Rectangle& bounds = renderable->GetBounds(); + const vec3 min = bounds.GetMinimumBound(); + const vec3 max = bounds.GetMaximumBound(); + + const uint color = renderable->GetColor(); + const std::vector& uv = renderable->GetUVs(); + const API::Texture* texture = renderable->GetTexture(); + + float textureSlot = 0.0f; + if (texture) + textureSlot = SubmitTexture(renderable->GetTexture()); + + mat4 maskTransform = mat4::Identity(); + float mid = m_Mask ? SubmitTexture(m_Mask->texture) : 0.0f; + float ms = 0.0f; + + if (s_MaskEnabled && m_Mask != nullptr) + { + maskTransform = mat4::Invert(m_Mask->transform); + ms = SubmitTexture(m_Mask->texture); + } + + vec3 vertex = *m_TransformationBack * min; + m_Buffer->vertex = vertex; + m_Buffer->uv = uv[0]; + m_Buffer->mask_uv = maskTransform * vertex; + m_Buffer->tid = textureSlot; + m_Buffer->mid = ms; + m_Buffer->color = color; + m_Buffer++; + + vertex = *m_TransformationBack * vec3(max.x, min.y); + m_Buffer->vertex = vertex; + m_Buffer->uv = uv[1]; + m_Buffer->mask_uv = maskTransform * vertex; + m_Buffer->tid = textureSlot; + m_Buffer->mid = ms; + m_Buffer->color = color; + m_Buffer++; + + vertex = *m_TransformationBack * max; + m_Buffer->vertex = vertex; + m_Buffer->uv = uv[2]; + m_Buffer->mask_uv = maskTransform * vertex; + m_Buffer->tid = textureSlot; + m_Buffer->mid = ms; + m_Buffer->color = color; + m_Buffer++; + + vertex = *m_TransformationBack * vec3(min.x, max.y); + m_Buffer->vertex = vertex; + m_Buffer->uv = uv[3]; + m_Buffer->mask_uv = maskTransform * vertex; + m_Buffer->tid = textureSlot; + m_Buffer->mid = ms; + m_Buffer->color = color; + m_Buffer++; + + m_IndexCount += 6; + } + + void Renderer2D::DrawLine(float x0, float y0, float x1, float y1, uint color, float thickness) + { + const std::vector& uv = Renderable2D::GetDefaultUVs(); + float ts = 0.0f; + mat4 maskTransform = mat4::Identity(); + float mid = m_Mask ? SubmitTexture(m_Mask->texture) : 0.0f; + + float ms = 0.0f; + if (s_MaskEnabled && m_Mask != nullptr) + { + maskTransform = mat4::Invert(m_Mask->transform); + ms = SubmitTexture(m_Mask->texture); + } + + vec2 normal = vec2(y1 - y0, -(x1 - x0)).Normalise() * thickness; + + vec3 vertex = *m_TransformationBack * vec3(x0 + normal.x, y0 + normal.y, 0.0f); + m_Buffer->vertex = vertex; + m_Buffer->uv = uv[0]; + m_Buffer->mask_uv = maskTransform * vertex; + m_Buffer->tid = ts; + m_Buffer->mid = ms; + m_Buffer->color = color; + m_Buffer++; + + vertex = *m_TransformationBack * vec3(x1 + normal.x, y1 + normal.y, 0.0f); + m_Buffer->vertex = vertex; + m_Buffer->uv = uv[1]; + m_Buffer->mask_uv = maskTransform * vertex; + m_Buffer->tid = ts; + m_Buffer->mid = ms; + m_Buffer->color = color; + m_Buffer++; + + vertex = *m_TransformationBack * vec3(x1 - normal.x, y1 - normal.y, 0.0f); + m_Buffer->vertex = vertex; + m_Buffer->uv = uv[2]; + m_Buffer->mask_uv = maskTransform * vertex; + m_Buffer->tid = ts; + m_Buffer->mid = ms; + m_Buffer->color = color; + m_Buffer++; + + vertex = *m_TransformationBack * vec3(x0 - normal.x, y0 - normal.y, 0.0f); + m_Buffer->vertex = vertex; + m_Buffer->uv = uv[3]; + m_Buffer->mask_uv = maskTransform * vertex; + m_Buffer->tid = ts; + m_Buffer->mid = ms; + m_Buffer->color = color; + m_Buffer++; + + m_IndexCount += 6; + } + + void Renderer2D::DrawLine(const maths::vec2& start, const maths::vec2& end, uint color, float thickness) + { + DrawLine(start.x, start.y, end.x, end.y, color, thickness); + } + + void Renderer2D::DrawRect(float x, float y, float width, float height, uint color) + { + DrawLine(x, y, x + width, y, color); + DrawLine(x + width, y, x + width, y + height, color); + DrawLine(x + width, y + height, x, y + height, color); + DrawLine(x, y + height, x, y, color); + } + + void Renderer2D::DrawRect(const maths::vec2& position, const maths::vec2& size, uint color) + { + DrawRect(position.x, position.y, size.x, size.y, color); + } + + void Renderer2D::DrawRect(const Rectangle& rectangle, uint color) + { + DrawRect(rectangle.GetMinimumBound(), rectangle.size * 2.0f, color); + } + + void Renderer2D::DrawString(const String& text, const maths::vec2& position, const Font& font, uint color) + { + using namespace ftgl; + + API::Texture2D* texture = font.GetTexture(); + SP_ASSERT(texture); + float ts = SubmitTexture(texture); + + const vec2& scale = font.GetScale(); + + float x = position.x; + + texture_font_t* ftFont = font.GetFTFont(); + + for (uint i = 0; i < text.length(); i++) + { + char c = text[i]; + texture_glyph_t* glyph = texture_font_get_glyph(ftFont, c); + if (glyph) + { + if (i > 0) + { + float kerning = texture_glyph_get_kerning(glyph, text[i - 1]); + x += kerning / scale.x; + } + + float x0 = x + glyph->offset_x / scale.x; + float y0 = position.y + glyph->offset_y / scale.y; + float x1 = x0 + glyph->width / scale.x; + float y1 = y0 - glyph->height / scale.y; + + float u0 = glyph->s0; + float v0 = glyph->t0; + float u1 = glyph->s1; + float v1 = glyph->t1; + + m_Buffer->vertex = *m_TransformationBack * vec3(x0, y0, 0); + m_Buffer->uv = vec2(u0, v0); + m_Buffer->tid = ts; + m_Buffer->color = color; + m_Buffer++; + + m_Buffer->vertex = *m_TransformationBack * vec3(x0, y1, 0); + m_Buffer->uv = vec2(u0, v1); + m_Buffer->tid = ts; + m_Buffer->color = color; + m_Buffer++; + + m_Buffer->vertex = *m_TransformationBack * vec3(x1, y1, 0); + m_Buffer->uv = vec2(u1, v1); + m_Buffer->tid = ts; + m_Buffer->color = color; + m_Buffer++; + + m_Buffer->vertex = *m_TransformationBack * vec3(x1, y0, 0); + m_Buffer->uv = vec2(u1, v0); + m_Buffer->tid = ts; + m_Buffer->color = color; + m_Buffer++; + + m_IndexCount += 6; + + x += glyph->advance_x / scale.x; + } + } + } + + void Renderer2D::FillRect(float x, float y, float width, float height, uint color) + { + vec3 position(x, y, 0.0f); + vec2 size(width, height); + const std::vector& uv = Renderable2D::GetDefaultUVs(); + float ts = 0.0f; + mat4 maskTransform = mat4::Identity(); + float mid = m_Mask ? SubmitTexture(m_Mask->texture) : 0.0f; + + float ms = 0.0f; + if (s_MaskEnabled && m_Mask != nullptr) + { + maskTransform = mat4::Invert(m_Mask->transform); + ms = SubmitTexture(m_Mask->texture); + } + + vec3 vertex = *m_TransformationBack * position; + m_Buffer->vertex = vertex; + m_Buffer->uv = uv[0]; + m_Buffer->mask_uv = maskTransform * vertex; + m_Buffer->tid = ts; + m_Buffer->mid = ms; + m_Buffer->color = color; + m_Buffer++; + + vertex = *m_TransformationBack * vec3(position.x + size.x, position.y, position.z); + m_Buffer->vertex = vertex; + m_Buffer->uv = uv[1]; + m_Buffer->mask_uv = maskTransform * vertex; + m_Buffer->tid = ts; + m_Buffer->mid = ms; + m_Buffer->color = color; + m_Buffer++; + + vertex = *m_TransformationBack * vec3(position.x + size.x, position.y + size.y, position.z); + m_Buffer->vertex = vertex; + m_Buffer->uv = uv[2]; + m_Buffer->mask_uv = maskTransform * vertex; + m_Buffer->tid = ts; + m_Buffer->mid = ms; + m_Buffer->color = color; + m_Buffer++; + + vertex = *m_TransformationBack * vec3(position.x, position.y + size.y, position.z); + m_Buffer->vertex = vertex; + m_Buffer->uv = uv[3]; + m_Buffer->mask_uv = maskTransform * vertex; + m_Buffer->tid = ts; + m_Buffer->mid = ms; + m_Buffer->color = color; + m_Buffer++; + + m_IndexCount += 6; + } + + void Renderer2D::FillRect(const maths::vec2& position, const maths::vec2& size, uint color) + { + FillRect(position.x, position.y, size.x, size.y, color); + } + + void Renderer2D::FillRect(const Rectangle& rectangle, uint color) + { + FillRect(rectangle.GetMinimumBound(), rectangle.size * 2.0f, color); + } + + void Renderer2D::End() + { + m_VertexArray->GetBuffer()->ReleasePointer(); + m_VertexArray->Unbind(); + } + + void Renderer2D::Present() + { + Renderer::SetDepthTesting(false); + + m_Shader->Bind(); + for (uint i = 0; i < m_SystemUniformBuffers.size(); i++) + m_Shader->SetVSSystemUniformBuffer(m_SystemUniformBuffers[i].buffer, m_SystemUniformBuffers[i].size, i); + + for (uint i = 0; i < m_Textures.size(); i++) + m_Textures[i]->Bind(i); + + m_VertexArray->Bind(); + m_IndexBuffer->Bind(); + m_VertexArray->Draw(m_IndexCount); + m_IndexBuffer->Unbind(); + m_VertexArray->Unbind(); + + for (uint i = 0; i < m_Textures.size(); i++) + m_Textures[i]->Unbind(i); + + m_IndexCount = 0; + m_Textures.clear(); + + if (m_Target == RenderTarget::BUFFER) + { + SP_ASSERT(false); // Currently unsupported +#if 0 + // Post Effects pass should go here! + if (s_PostEffectsEnabled && m_PostEffectsEnabled) + m_PostEffects->RenderPostEffects(m_Framebuffer, m_PostEffectsBuffer, m_ScreenQuad, m_IBO); + + // Display Framebuffer - potentially move to Framebuffer class + GLCall(glBindFramebuffer(GL_FRAMEBUFFER, m_ScreenBuffer)); + Renderer::SetViewport(0, 0, m_ScreenSize.x, m_ScreenSize.y); + Renderer::SetBlendFunction(RendererBlendFunction::SOURCE_ALPHA, RendererBlendFunction::ONE_MINUS_SOURCE_ALPHA)); + m_FramebufferMaterial->Bind(); + + // TODO: None of this should be done here + GLCall(glActiveTexture(GL_TEXTURE0)); + if (m_PostEffectsEnabled) + m_PostEffectsBuffer->GetTexture()->Bind(m_FramebufferMaterial->GetShader()); + else + m_Framebuffer->GetTexture()->Bind(m_FramebufferMaterial->GetShader()); + + m_ScreenQuad->Bind(); + m_IBO->Bind(); + GLCall(glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, NULL)); + m_IBO->Unbind(); + m_ScreenQuad->Unbind(); +#endif + } + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/Renderer2D.h b/Sparky-core/src/sp/graphics/Renderer2D.h new file mode 100644 index 00000000..5820386b --- /dev/null +++ b/Sparky-core/src/sp/graphics/Renderer2D.h @@ -0,0 +1,124 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" +#include "sp/Types.h" + +#include "Renderable2D.h" +#include "API/Framebuffer2D.h" +#include "FontManager.h" +#include "Mask.h" +#include "camera/Camera.h" +#include "postfx/PostEffects.h" + +#include "API/VertexArray.h" +#include "API/IndexBuffer.h" + +namespace sp { namespace graphics { + + enum class SP_API RenderTarget + { + SCREEN = 0, + BUFFER = 1 + }; + + struct UniformBuffer + { + byte* buffer; + uint size; + + UniformBuffer() {} + UniformBuffer(byte* buffer, uint size) + : buffer(buffer), size(size) + { + memset(buffer, 0, size); + } + }; + + struct BR2DSystemUniform + { + UniformBuffer buffer; + uint offset; + + BR2DSystemUniform() {} + BR2DSystemUniform(const UniformBuffer& buffer, uint offset) + : buffer(buffer), offset(offset) + { + } + }; + + class SP_API Renderer2D + { + private: + static bool s_PostEffectsEnabled; + static bool s_MaskEnabled; + private: + std::vector m_TransformationStack; + const maths::mat4* m_TransformationBack; + const Mask* m_Mask; + RenderTarget m_Target; + PostEffects* m_PostEffects; + bool m_PostEffectsEnabled; + + API::Shader* m_Shader; + std::vector m_SystemUniforms; + std::vector m_SystemUniformBuffers; + + API::VertexArray* m_VertexArray; + API::IndexBuffer* m_IndexBuffer; + API::IndexBuffer* m_LineIBO; + uint m_IndexCount, m_LineIndexCount; + VertexData* m_Buffer; + std::vector m_Textures; + Framebuffer2D* m_Framebuffer; + Framebuffer2D* m_PostEffectsBuffer; + maths::tvec2 m_ViewportSize, m_ScreenSize; + Material* m_FramebufferMaterial; + API::VertexArray* m_ScreenQuad; + Camera* m_Camera; + public: + Renderer2D(uint width, uint height); + Renderer2D(const maths::tvec2& screenSize); + ~Renderer2D(); + + void Push(const maths::mat4& matrix, bool override = false); + void Pop(); + + void SetCamera(Camera* camera); + + // Staging Functions + void Begin(); + void Submit(const Renderable2D* renderable); + void End(); + void Present(); + + // Drawing Functions + void DrawLine(float x0, float y0, float x1, float y1, uint color = 0xffffffff, float thickness = 0.02f); + void DrawLine(const maths::vec2& start, const maths::vec2& end, uint color = 0xffffffff, float thickness = 0.02f); + void DrawRect(float x, float y, float width, float height, uint color = 0xffffffff); + void DrawRect(const maths::vec2& position, const maths::vec2& size, uint color = 0xffffffff); + void DrawRect(const maths::Rectangle& rectangle, uint color = 0xffffffff); + void DrawString(const String& text, const maths::vec2& position, const Font& font = *FontManager::Get(), uint color = 0xffffffff); + + void FillRect(float x, float y, float width, float height, uint color = 0xffffffff); + void FillRect(const maths::vec2& position, const maths::vec2& size, uint color = 0xffffffff); + void FillRect(const maths::Rectangle& rectangle, uint color = 0xffffffff); + + inline void SetRenderTarget(RenderTarget target) { m_Target = target; } + inline const RenderTarget GetRenderTarget() const { return m_Target; } + + inline void SetMask(const Mask* mask) { m_Mask = mask; } + inline void SetPostEffects(bool enabled) { m_PostEffectsEnabled = enabled; } + inline bool GetPostEffects() const { return m_PostEffectsEnabled; } + inline void AddPostEffectsPass(PostEffectsPass* pass) { m_PostEffects->Push(pass); } + + inline void SetScreenSize(const maths::tvec2& size) { m_ScreenSize = size; } + inline const maths::tvec2& GetScreenSize() const { return m_ScreenSize; } + inline void SetViewportSize(const maths::tvec2& size) { m_ViewportSize = size; } + inline const maths::tvec2& GetViewportSize() const { return m_ViewportSize; } + private: + void Init(); + float SubmitTexture(API::Texture* texture); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/Renderer3D.h b/Sparky-core/src/sp/graphics/Renderer3D.h new file mode 100644 index 00000000..91e465c8 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Renderer3D.h @@ -0,0 +1,45 @@ +#pragma once + +#include "Mesh.h" +#include "RenderCommand.h" +#include "camera/Camera.h" + +#include "LightSetup.h" + +namespace sp { namespace graphics { + + typedef std::vector CommandQueue; + typedef std::vector SystemUniformList; + + // + // Base class for all 3D renderers. + // + // Implementations: + // - ForwardRenderer.h (WIP) + // - DeferredRenderer.h (WIP) + // + class SP_API Renderer3D + { + protected: + uint m_ScreenBufferWidth, m_ScreenBufferHeight; // TODO: Probably make a screen buffer (fb) class + + CommandQueue m_CommandQueue; + SystemUniformList m_SystemUniforms; + public: + virtual ~Renderer3D() {} + + virtual void Init() = 0; + virtual void Begin() = 0; + virtual void BeginScene(Camera* camera) = 0; + // TODO: Submit needs to be replaced by some sort of macro + virtual void Submit(const RenderCommand& command) = 0; + virtual void SubmitMesh(Mesh* mesh, const maths::mat4& transform) = 0; + virtual void SubmitLightSetup(const LightSetup& lightSetup) = 0; + virtual void EndScene() = 0; + virtual void End() = 0; + virtual void Present() = 0; + + virtual void SetScreenBufferSize(uint width, uint height) { m_ScreenBufferWidth = width; m_ScreenBufferHeight = height; } + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/Scene.cpp b/Sparky-core/src/sp/graphics/Scene.cpp new file mode 100644 index 00000000..67b802f1 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Scene.cpp @@ -0,0 +1,92 @@ +#include "sp/sp.h" +#include "Scene.h" + +#include "Renderer3D.h" + +#include "camera/MayaCamera.h" +#include "camera/FPSCamera.h" + +#include "sp/debug/DebugRenderer.h" + +namespace sp { namespace graphics { + + using namespace entity; + using namespace component; + + Scene::Scene() + : m_Camera(spnew MayaCamera(maths::mat4::Perspective(65.0f, 16.0f / 9.0f, 0.1f, 1000.0f))) + { + } + + Scene::Scene(Camera* camera) + : m_Camera(camera) + { + } + + Scene::~Scene() + { + for (uint i = 0; i < m_Entities.size(); i++) + spdel m_Entities[i]; + + m_Entities.clear(); + spdel m_Camera; + } + + void Scene::Add(Entity* entity) + { + m_Entities.push_back(entity); + if (!entity->GetComponent()) + { + SP_WARN("Entity does not have Transform, creating..."); + entity->AddComponent(new TransformComponent(maths::mat4::Identity())); + } + } + + void Scene::PushLightSetup(LightSetup* lightSetup) + { + m_LightSetupStack.push_back(lightSetup); + } + + LightSetup* Scene::PopLightSetup() + { + LightSetup* result = m_LightSetupStack.back(); + m_LightSetupStack.pop_back(); + return result; + } + + void Scene::SetCamera(Camera* camera) + { + m_Camera = camera; + m_Camera->Focus(); + } + + void Scene::Update() + { + } + + void Scene::Render(Renderer3D& renderer) + { + Camera* camera = m_Camera; + camera->Update(); + debug::DebugRenderer::SetCamera(camera); + + renderer.Begin(); + renderer.BeginScene(camera); + for (uint i = 0; i < m_LightSetupStack.size(); i++) + renderer.SubmitLightSetup(*m_LightSetupStack[i]); + + for (Entity* entity : m_Entities) + { + MeshComponent* mesh = entity->GetComponent(); + if (mesh) + { + TransformComponent* tc = entity->GetComponent(); + SP_ASSERT(tc, "Mesh does not have transform!"); // Meshes MUST have transforms + renderer.SubmitMesh(mesh->mesh, tc->transform); + } + } + renderer.EndScene(); + renderer.End(); + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/Scene.h b/Sparky-core/src/sp/graphics/Scene.h new file mode 100644 index 00000000..b567efa9 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Scene.h @@ -0,0 +1,39 @@ +#pragma once + +#include + +#include +#include + +#include "camera/Camera.h" +#include "LightSetup.h" + +namespace sp { namespace graphics { + + class Renderer3D; + + // TODO: This probably shouldn't be in graphics. + class SP_API Scene + { + private: + std::vector m_Entities; + Camera* m_Camera; + std::vector m_LightSetupStack; + public: + Scene(); + Scene(Camera* camera); + ~Scene(); + + void Add(entity::Entity* entity); + void PushLightSetup(LightSetup* lightSetup); + LightSetup* PopLightSetup(); + void SetCamera(Camera* camera); + + void Update(); + void Render(Renderer3D& renderer); + + inline Camera* GetCamera() const { return m_Camera; } + inline const std::vector& GetEntities() const { return m_Entities; } + }; + +} } diff --git a/Sparky-core/src/sp/graphics/Sprite.cpp b/Sparky-core/src/sp/graphics/Sprite.cpp new file mode 100644 index 00000000..df78d081 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Sprite.cpp @@ -0,0 +1,45 @@ +#include "sp/sp.h" +#include "Sprite.h" + +namespace sp { namespace graphics { + + Sprite::Sprite() + : Renderable2D() + { + } + + Sprite::Sprite(API::Texture2D* texture) + : Renderable2D(maths::vec3(0.0f, 0.0f, 0.0f), maths::vec2((float)texture->GetWidth(), (float)texture->GetHeight()), 0xffffffff) + { + m_Texture = texture; + } + + Sprite::Sprite(float x, float y, API::Texture2D* texture) + : Renderable2D(maths::vec3(x, y, 0.0f), maths::vec2((float)texture->GetWidth(), (float)texture->GetHeight()), 0xffffffff) + { + m_Texture = texture; + } + + Sprite::Sprite(float x, float y, float width, float height, uint color) + : Renderable2D(maths::vec3(x, y, 0.0f), maths::vec2(width, height), color) + { + } + + Sprite::Sprite(float x, float y, float width, float height, const maths::vec4& color) + : Renderable2D(maths::vec3(x, y, 0.0f), maths::vec2(width, height), 0xffffffff) + { + SetColor(color); + } + + Sprite::Sprite(float x, float y, float width, float height, API::Texture* texture) + : Renderable2D(maths::vec3(x, y, 0.0f), maths::vec2(width, height), 0xffffffff) + { + m_Texture = texture; + } + + void Sprite::SetUV(const std::vector& uv) + { + m_UVs = uv; + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/Sprite.h b/Sparky-core/src/sp/graphics/Sprite.h new file mode 100644 index 00000000..a9431238 --- /dev/null +++ b/Sparky-core/src/sp/graphics/Sprite.h @@ -0,0 +1,23 @@ +#pragma once + +#include "Renderable2D.h" + +namespace sp { namespace graphics { + + class SP_API Sprite : public Renderable2D + { + protected: + Sprite(); + public: + Sprite(API::Texture2D* texture); + Sprite(float x, float y, API::Texture2D* texture); + Sprite(float x, float y, float width, float height, uint color); + Sprite(float x, float y, float width, float height, const maths::vec4& color); + Sprite(float x, float y, float width, float height, API::Texture* texture); + + void SetUV(const std::vector& uv); + + inline void SetTexture(API::Texture2D* texture) { m_Texture = texture; } + }; + +} } diff --git a/Sparky-core/src/sp/graphics/TextureManager.cpp b/Sparky-core/src/sp/graphics/TextureManager.cpp new file mode 100644 index 00000000..59a12229 --- /dev/null +++ b/Sparky-core/src/sp/graphics/TextureManager.cpp @@ -0,0 +1,32 @@ +#include "sp/sp.h" +#include "sp/Common.h" + +#include "TextureManager.h" + +namespace sp { namespace graphics { + + std::vector TextureManager::m_Textures; + + API::Texture* TextureManager::Add(API::Texture* texture) + { + m_Textures.push_back(texture); + return texture; + } + + API::Texture* TextureManager::Get(const String& name) + { + for (API::Texture* texture : m_Textures) + { + if (texture->GetName() == name) + return texture; + } + return nullptr; + } + + void TextureManager::Clean() + { + for (uint i = 0; i < m_Textures.size(); i++) + delete m_Textures[i]; + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/TextureManager.h b/Sparky-core/src/sp/graphics/TextureManager.h new file mode 100644 index 00000000..a7672a0c --- /dev/null +++ b/Sparky-core/src/sp/graphics/TextureManager.h @@ -0,0 +1,21 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Types.h" +#include "sp/graphics/API/Texture.h" + +namespace sp { namespace graphics { + + class SP_API TextureManager + { + private: + static std::vector m_Textures; + public: + static API::Texture* Add(API::Texture* texture); + static API::Texture* Get(const String& name); + static void Clean(); + private: + TextureManager() { } + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/camera/Camera.cpp b/Sparky-core/src/sp/graphics/camera/Camera.cpp new file mode 100644 index 00000000..3cd9eeb5 --- /dev/null +++ b/Sparky-core/src/sp/graphics/camera/Camera.cpp @@ -0,0 +1,14 @@ +#include "sp/sp.h" +#include "Camera.h" + +namespace sp { namespace graphics { + + Camera::Camera(const maths::mat4& projectionMatrix) + : m_ProjectionMatrix(projectionMatrix) + { + m_ViewMatrix = maths::mat4::Identity(); + m_Position = maths::vec3(); + m_Rotation = maths::vec3(); + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/camera/Camera.h b/Sparky-core/src/sp/graphics/camera/Camera.h new file mode 100644 index 00000000..18b49d8b --- /dev/null +++ b/Sparky-core/src/sp/graphics/camera/Camera.h @@ -0,0 +1,40 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/maths/maths.h" + +namespace sp { namespace graphics { + + class SP_API Camera + { + protected: + maths::mat4 m_ProjectionMatrix, m_ViewMatrix; + maths::vec3 m_Position, m_Rotation, m_FocalPoint; + public: + Camera(const maths::mat4& projectionMatrix); + + virtual void Focus() { } + virtual void Update() { } + + inline const maths::vec3& GetPosition() const { return m_Position; } + inline void SetPosition(const maths::vec3& position) { m_Position = position; } + + inline const maths::vec3& GetRotation() const { return m_Rotation; } + inline void SetRotation(const maths::vec3& rotation) { m_Rotation = rotation; } + + inline const maths::mat4& GetProjectionMatrix() const { return m_ProjectionMatrix; } + inline void SetProjectionMatrix(const maths::mat4& projectionMatrix) { m_ProjectionMatrix = projectionMatrix; } + + inline void Translate(const maths::vec3& translation) { m_Position += translation; } + inline void Rotate(const maths::vec3& rotation) { m_Rotation += rotation; } + + inline void Translate(float x, float y, float z) { m_Position += maths::vec3(x, y, z); } + inline void Rotate(float x, float y, float z) { m_Rotation += maths::vec3(x, y, z); } + + inline const maths::vec3& GetFocalPoint() const { return m_FocalPoint; } + + inline const maths::mat4& GetViewMatrix() { return m_ViewMatrix; } + + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/camera/FPSCamera.cpp b/Sparky-core/src/sp/graphics/camera/FPSCamera.cpp new file mode 100644 index 00000000..8ec96663 --- /dev/null +++ b/Sparky-core/src/sp/graphics/camera/FPSCamera.cpp @@ -0,0 +1,119 @@ +#include "sp/sp.h" +#include "FPSCamera.h" + +#include "sp/app/Input.h" +#include "sp/utils/Log.h" + +#include "sp/app/Application.h" +#include "sp/debug/DebugMenu.h" + +namespace sp { namespace graphics { + + using namespace maths; + + FPSCamera::FPSCamera(const maths::mat4& projectionMatrix) + : Camera(projectionMatrix), m_MouseSensitivity(0.002f), m_Speed(0.4f), m_SprintSpeed(m_Speed * 4.0f), m_MouseWasGrabbed(false) + { + m_Position = vec3(0.0f, 25.0f, -25.0f); + m_Rotation = vec3(90.0f, 0.0f, 0.0f); + m_Yaw = 2.4f; + m_Pitch = 0.7f; + + debug::DebugMenu::Add("Camera/FPS Camera Speed", &m_Speed); + debug::DebugMenu::Add("Camera/FPS Camera Sprint Speed", &m_SprintSpeed); + } + + FPSCamera::~FPSCamera() + { + debug::DebugMenu::Remove("Camera/FPS Camera Speed"); + debug::DebugMenu::Remove("Camera/FPS Camera Sprint Speed"); + } + + void FPSCamera::Focus() + { + Input::GetInputManager()->SetMouseCursor(SP_NO_CURSOR); + } + + void FPSCamera::Update() + { + vec2 windowSize = Application::GetApplication().GetWindowSize(); + vec2 windowCenter = vec2((float)(int32)(windowSize.x / 2.0f), (float)(int32)(windowSize.y / 2.0f)); + + if (Input::IsMouseButtonPressed(SP_MOUSE_RIGHT)) + { + if (!Input::GetInputManager()->IsMouseGrabbed()) + { + Input::GetInputManager()->SetMouseGrabbed(true); + Input::GetInputManager()->SetMouseCursor(SP_NO_CURSOR); + } + } + + if (Input::GetInputManager()->IsMouseGrabbed()) + { + vec2 mouse = Input::GetInputManager()->GetMousePosition(); + mouse.x -= windowCenter.x; + mouse.y -= windowCenter.y; + if (m_MouseWasGrabbed) + { + m_Yaw += mouse.x * m_MouseSensitivity; + m_Pitch += mouse.y * m_MouseSensitivity; + } + m_MouseWasGrabbed = true; + Input::GetInputManager()->SetMousePosition(windowCenter); + + Quaternion orientation = GetOrientation(); + m_Rotation = orientation.ToEulerAngles() * (180.0f / SP_PI); + + vec3 forward = GetForwardDirection(orientation); + vec3 right = GetRightDirection(orientation); + vec3 up = vec3::YAxis(); + float speed = Input::IsKeyPressed(SP_KEY_SHIFT) ? m_SprintSpeed : m_Speed; + if (Input::IsKeyPressed(SP_KEY_W)) + m_Position += forward * speed; + else if (Input::IsKeyPressed(SP_KEY_S)) + m_Position -= forward * speed; + + if (Input::IsKeyPressed(SP_KEY_A)) + m_Position -= right * speed; + else if (Input::IsKeyPressed(SP_KEY_D)) + m_Position += right * speed; + + if (Input::IsKeyPressed(SP_KEY_SPACE)) + m_Position += up * speed; + if (Input::IsKeyPressed(SP_KEY_CONTROL)) + m_Position -= up * speed; + + mat4 rotation = mat4::Rotate(orientation.Conjugate()); + mat4 translation = mat4::Translate(-m_Position); + m_ViewMatrix = rotation * translation; + } + + if (Input::IsKeyPressed(SP_KEY_ESCAPE)) + { + Input::GetInputManager()->SetMouseGrabbed(false); + Input::GetInputManager()->SetMouseCursor(1); + m_MouseWasGrabbed = false; + } + } + + Quaternion FPSCamera::GetOrientation() const + { + return Quaternion::RotationY(-m_Yaw) * Quaternion::RotationX(-m_Pitch); + } + + vec3 FPSCamera::GetForwardDirection(const Quaternion& orientation) const + { + return Quaternion::Rotate(orientation, -vec3::ZAxis()); + } + + vec3 FPSCamera::GetUpDirection(const Quaternion& orientation) const + { + return Quaternion::Rotate(orientation, vec3::YAxis()); + } + + vec3 FPSCamera::GetRightDirection(const Quaternion& orientation) const + { + return Quaternion::Rotate(orientation, vec3::XAxis()); + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/camera/FPSCamera.h b/Sparky-core/src/sp/graphics/camera/FPSCamera.h new file mode 100644 index 00000000..2c7a1f65 --- /dev/null +++ b/Sparky-core/src/sp/graphics/camera/FPSCamera.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Camera.h" + +namespace sp { namespace graphics { + + class SP_API FPSCamera : public Camera + { + private: + float m_MouseSensitivity; + float m_Speed, m_SprintSpeed; + float m_Pitch, m_Yaw; + bool m_MouseWasGrabbed; + public: + FPSCamera(const maths::mat4& projectionMatrix); + ~FPSCamera(); + void Focus() override; + void Update() override; + private: + maths::Quaternion GetOrientation() const; + maths::vec3 GetForwardDirection(const maths::Quaternion& orientation) const; + maths::vec3 FPSCamera::GetUpDirection(const maths::Quaternion& orientation) const; + maths::vec3 FPSCamera::GetRightDirection(const maths::Quaternion& orientation) const; + }; + +} } diff --git a/Sparky-core/src/sp/graphics/camera/MayaCamera.cpp b/Sparky-core/src/sp/graphics/camera/MayaCamera.cpp new file mode 100644 index 00000000..c50f5993 --- /dev/null +++ b/Sparky-core/src/sp/graphics/camera/MayaCamera.cpp @@ -0,0 +1,110 @@ +#include "sp/sp.h" +#include "MayaCamera.h" + +#include "sp/app/Window.h" +#include "sp/app/Input.h" + +#include "sp/utils/Log.h" + +namespace sp { namespace graphics { + + using namespace maths; + + MayaCamera::MayaCamera(const maths::mat4& projectionMatrix) + : Camera(projectionMatrix) + { + // Sensible defaults + m_PanSpeed = 0.0015f; + m_RotationSpeed = 0.002f; + m_ZoomSpeed = 0.2f; + + m_Position = vec3(0.0f, 25.0f, -25.0f); + m_Rotation = vec3(90.0f, 0.0f, 0.0f); + + m_FocalPoint = vec3::Zero(); + m_Distance = m_Position.Distance(m_FocalPoint); + + m_Yaw = 3.0f * SP_PI / 4.0f; + m_Pitch = SP_PI / 4.0f; + } + + void MayaCamera::Focus() + { + Input::GetInputManager()->SetMouseCursor(1); + } + + void MayaCamera::Update() + { + if (Input::IsKeyPressed(SP_KEY_ALT)) + { + const vec2& mouse = Input::GetMousePosition(); + vec2 delta = mouse - m_InitialMousePosition; + m_InitialMousePosition = mouse; + + if (Input::IsMouseButtonPressed(SP_MOUSE_MIDDLE)) + MousePan(delta); + else if (Input::IsMouseButtonPressed(SP_MOUSE_LEFT)) + MouseRotate(delta); + else if (Input::IsMouseButtonPressed(SP_MOUSE_RIGHT)) + MouseZoom(delta.y); + } + + // MouseZoom(window->GetMouseScrollPosition().y); + + m_Position = CalculatePosition(); + + Quaternion orientation = GetOrientation(); + m_Rotation = orientation.ToEulerAngles() * (180.0f / SP_PI); + + m_ViewMatrix = mat4::Translate(vec3(0, 0, 1)) * mat4::Rotate(orientation.Conjugate()) * mat4::Translate(-m_Position); + } + + void MayaCamera::MousePan(const maths::vec2& delta) + { + m_FocalPoint += -GetRightDirection() * delta.x * m_PanSpeed * m_Distance; + m_FocalPoint += GetUpDirection() * delta.y * m_PanSpeed * m_Distance; + } + + void MayaCamera::MouseRotate(const maths::vec2& delta) + { + float yawSign = GetUpDirection().y < 0 ? -1.0f : 1.0f; + m_Yaw += yawSign * delta.x * m_RotationSpeed; + m_Pitch += delta.y * m_RotationSpeed; + } + + void MayaCamera::MouseZoom(float delta) + { + m_Distance -= delta * m_ZoomSpeed; + if (m_Distance < 1.0f) + { + m_FocalPoint += GetForwardDirection(); + m_Distance = 1.0f; + } + } + + vec3 MayaCamera::GetUpDirection() + { + return Quaternion::Rotate(GetOrientation(), vec3::YAxis()); + } + + vec3 MayaCamera::GetRightDirection() + { + return Quaternion::Rotate(GetOrientation(), vec3::XAxis()); + } + + vec3 MayaCamera::GetForwardDirection() + { + return Quaternion::Rotate(GetOrientation(), -vec3::ZAxis()); + } + + vec3 MayaCamera::CalculatePosition() + { + return m_FocalPoint - GetForwardDirection() * m_Distance; + } + + Quaternion MayaCamera::GetOrientation() + { + return Quaternion::RotationY(-m_Yaw) * Quaternion::RotationX(-m_Pitch); + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/camera/MayaCamera.h b/Sparky-core/src/sp/graphics/camera/MayaCamera.h new file mode 100644 index 00000000..a9cdaa91 --- /dev/null +++ b/Sparky-core/src/sp/graphics/camera/MayaCamera.h @@ -0,0 +1,40 @@ +#pragma once + +#include "Camera.h" +#include "sp/Common.h" + +namespace sp { namespace graphics { + + class SP_API MayaCamera : public Camera + { + private: + bool m_Panning, m_Rotating; + maths::vec2 m_InitialMousePosition; + maths::vec3 m_InitialFocalPoint, m_InitialRotation; + + float m_Distance; + float m_PanSpeed, m_RotationSpeed, m_ZoomSpeed; + + float m_Pitch, m_Yaw; + public: + MayaCamera(const maths::mat4& projectionMatrix); + void Focus() override; + void Update() override; + + inline float GetDistance() const { return m_Distance; } + inline void SetDistance(float distance) { m_Distance = distance; } + private: + void MousePan(const maths::vec2& delta); + void MouseRotate(const maths::vec2& delta); + void MouseZoom(float delta); + + // TODO: Move up to camera class + maths::vec3 GetUpDirection(); + maths::vec3 GetRightDirection(); + maths::vec3 GetForwardDirection(); + + maths::vec3 CalculatePosition(); + maths::Quaternion GetOrientation(); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/camera/OrthographicCamera.cpp b/Sparky-core/src/sp/graphics/camera/OrthographicCamera.cpp new file mode 100644 index 00000000..f48ee756 --- /dev/null +++ b/Sparky-core/src/sp/graphics/camera/OrthographicCamera.cpp @@ -0,0 +1,27 @@ +#include "sp/sp.h" +#include "OrthographicCamera.h" + +namespace sp { namespace graphics { + + OrthographicCamera::OrthographicCamera(const maths::mat4& projectionMatrix) + : Camera(projectionMatrix) + { + + } + + OrthographicCamera::~OrthographicCamera() + { + + } + + void OrthographicCamera::Focus() + { + + } + + void OrthographicCamera::Update() + { + + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/camera/OrthographicCamera.h b/Sparky-core/src/sp/graphics/camera/OrthographicCamera.h new file mode 100644 index 00000000..d291f945 --- /dev/null +++ b/Sparky-core/src/sp/graphics/camera/OrthographicCamera.h @@ -0,0 +1,19 @@ +#pragma once + +#include "Camera.h" + +namespace sp { namespace graphics { + + class SP_API OrthographicCamera : public Camera + { + private: + + public: + OrthographicCamera(const maths::mat4& projectionMatrix); + ~OrthographicCamera(); + void Focus() override; + void Update() override; + + }; + +} } diff --git a/Sparky-core/src/sp/graphics/layers/Group.cpp b/Sparky-core/src/sp/graphics/layers/Group.cpp new file mode 100644 index 00000000..f4d964ef --- /dev/null +++ b/Sparky-core/src/sp/graphics/layers/Group.cpp @@ -0,0 +1,36 @@ +#include "sp/sp.h" +#include "Group.h" + +#include "sp/graphics/Renderer2D.h" + +namespace sp { namespace graphics { + + Group::Group(const maths::mat4& transform) + : m_TransformationMatrix(transform) + { + } + + Group::~Group() + { + for (uint i = 0; i < m_Renderables.size(); i++) + spdel m_Renderables[i]; + } + + void Group::Add(Renderable2D* renderable) + { + m_Renderables.push_back(renderable); + } + + void Group::Submit(Renderer2D* renderer) const + { + renderer->Push(m_TransformationMatrix); + + for (const Renderable2D* renderable : m_Renderables) + renderable->Submit(renderer); + + renderer->Pop(); + } + + + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/layers/Group.h b/Sparky-core/src/sp/graphics/layers/Group.h new file mode 100644 index 00000000..d66be07e --- /dev/null +++ b/Sparky-core/src/sp/graphics/layers/Group.h @@ -0,0 +1,22 @@ +#pragma once + +#include "../Renderable2D.h" +#include "sp/Common.h" + +namespace sp { namespace graphics { + + class SP_API Group : public Renderable2D + { + private: + std::vector m_Renderables; + maths::mat4 m_TransformationMatrix; + public: + Group(const maths::mat4& transform); + ~Group(); + void Add(Renderable2D* renderable); + void Submit(Renderer2D* renderer) const override; + + maths::mat4& GetTransformRef() { return m_TransformationMatrix; } + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/layers/Layer.cpp b/Sparky-core/src/sp/graphics/layers/Layer.cpp new file mode 100644 index 00000000..a8e53ca9 --- /dev/null +++ b/Sparky-core/src/sp/graphics/layers/Layer.cpp @@ -0,0 +1,49 @@ +#include "sp/sp.h" +#include "Layer.h" + +#include "sp/events/Events.h" +#include "sp/utils/Log.h" + +namespace sp { namespace graphics { + + Layer::Layer() + : m_Window(Window::GetWindowClass(nullptr)), m_Visible(true) + { + } + + Layer::~Layer() + { + } + + void Layer::Init() + { + } + + void Layer::OnEvent(events::Event& event) + { + events::EventDispatcher dispatcher(event); + dispatcher.Dispatch([this](events::ResizeWindowEvent& e) { return OnResize(e.GetWidth(), e.GetHeight()); }); + } + + bool Layer::OnResize(uint width, uint height) + { + return false; + } + + void Layer::OnTick() + { + } + + void Layer::OnUpdate(const Timestep& ts) + { + } + + void Layer::OnUpdateInternal(const Timestep& ts) + { + } + + void Layer::OnRender() + { + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/layers/Layer.h b/Sparky-core/src/sp/graphics/layers/Layer.h new file mode 100644 index 00000000..8fa3e9de --- /dev/null +++ b/Sparky-core/src/sp/graphics/layers/Layer.h @@ -0,0 +1,36 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/Types.h" + +#include "../../events/Event.h" +#include "../../events/IEventListener.h" + +#include "sp/app/Window.h" +#include "sp/utils/Timestep.h" + +namespace sp { namespace graphics { + + class SP_API Layer : public events::IEventListener + { + protected: + Window* m_Window; + bool m_Visible; + public: + Layer(); + virtual ~Layer(); + + inline bool IsVisible() const { return m_Visible; } + inline void SetVisible(bool visible) { m_Visible = visible; } + + virtual void Init(); + virtual void OnEvent(events::Event& event); + virtual void OnTick(); + virtual void OnUpdate(const Timestep& ts); + virtual void OnUpdateInternal(const Timestep& ts); + virtual void OnRender(); + protected: + virtual bool OnResize(uint width, uint height); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/layers/Layer2D.cpp b/Sparky-core/src/sp/graphics/layers/Layer2D.cpp new file mode 100644 index 00000000..0eee4051 --- /dev/null +++ b/Sparky-core/src/sp/graphics/layers/Layer2D.cpp @@ -0,0 +1,90 @@ +#include "sp/sp.h" +#include "Layer2D.h" + +#include "../Renderer2D.h" +#include "sp/app/Window.h" +#include "sp/app/Application.h" + +namespace sp { namespace graphics { + + Layer2D::Layer2D(const maths::mat4& projectionMatrix) + { + float width = Application::GetApplication().GetWindowWidth(); + float height = Application::GetApplication().GetWindowHeight(); + + m_Renderer = spnew Renderer2D(width, height); + m_Scene = spnew Scene2D(projectionMatrix); + m_Renderer->SetCamera(m_Scene->GetCamera()); + } + + Layer2D::Layer2D(Scene2D* scene) + : m_Scene(scene) + { + float width = Application::GetApplication().GetWindowWidth(); + float height = Application::GetApplication().GetWindowHeight(); + + m_Renderer = spnew Renderer2D(width, height); + m_Renderer->SetCamera(m_Scene->GetCamera()); + } + + Layer2D::~Layer2D() + { + spdel m_Material; + spdel m_Renderer; + } + + void Layer2D::Init() + { + OnInit(*m_Renderer, *m_Material); + } + + void Layer2D::OnInit(Renderer2D& renderer, Material& material) + { + } + + Sprite* Layer2D::Add(Sprite* sprite) + { + m_Scene->Add(spnew entity::Entity(sprite, maths::mat4::Translate(sprite->GetPosition()))); + return sprite; + } + + Renderable2D* Layer2D::Submit(Renderable2D* renderable) + { + m_SubmittedRenderables.push_back(renderable); + return renderable; + } + + bool Layer2D::OnResize(uint width, uint height) + { + m_Renderer->SetScreenSize(maths::tvec2(width, height)); + m_Scene->GetRenderer()->SetScreenSize(maths::tvec2(width, height)); + return false; + } + + void Layer2D::OnUpdateInternal(const Timestep& ts) + { + OnUpdate(ts); + } + + void Layer2D::OnRender() + { + m_Scene->OnRender(); + + m_Renderer->Begin(); + + for (const Renderable2D* renderable : m_SubmittedRenderables) + renderable->Submit(m_Renderer); + + m_Renderer->End(); + m_Renderer->Present(); + + OnRender(*m_Renderer); + + m_SubmittedRenderables.clear(); + } + + void Layer2D::OnRender(Renderer2D& renderer) + { + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/layers/Layer2D.h b/Sparky-core/src/sp/graphics/layers/Layer2D.h new file mode 100644 index 00000000..328b4913 --- /dev/null +++ b/Sparky-core/src/sp/graphics/layers/Layer2D.h @@ -0,0 +1,43 @@ +#pragma once + +#include "Layer.h" + +#include "sp/Common.h" +#include "sp/Scene2D.h" +#include "sp/events/Event.h" +#include "sp/graphics/Renderable2D.h" +#include "sp/graphics/Mask.h" + +namespace sp { namespace graphics { + + class SP_API Layer2D : public Layer + { + private: + Renderer2D* m_Renderer; + protected: + Material* m_Material; + Scene2D* m_Scene; + std::vector m_SubmittedRenderables; + public: + Layer2D(const maths::mat4& projectionMatrix); + Layer2D(Scene2D* scene); + virtual ~Layer2D(); + + virtual void Init(); + virtual void OnInit(Renderer2D& renderer, Material& material); + + inline void SetMask(const Mask* mask) const { m_Renderer->SetMask(mask); } + virtual Sprite* Add(Sprite* sprite); + inline Scene2D* GetScene() { return m_Scene; } + + virtual Renderable2D* Submit(Renderable2D* renderable); + + void OnUpdateInternal(const Timestep& ts) override; + virtual void OnRender(Renderer2D& renderer); + void OnRender() override; + protected: + bool OnResize(uint width, uint height) override; + }; + +} } + diff --git a/Sparky-core/src/sp/graphics/layers/Layer3D.cpp b/Sparky-core/src/sp/graphics/layers/Layer3D.cpp new file mode 100644 index 00000000..2130fe93 --- /dev/null +++ b/Sparky-core/src/sp/graphics/layers/Layer3D.cpp @@ -0,0 +1,50 @@ +#include "sp/sp.h" +#include "Layer3D.h" + +#include "../DeferredRenderer.h" + +namespace sp { namespace graphics { + + Layer3D::Layer3D(Scene* scene, Renderer3D* renderer) + : m_Scene(scene), m_Renderer(renderer) + { + } + + Layer3D::~Layer3D() + { + delete m_Scene; + delete m_Renderer; + } + + void Layer3D::Init() + { + OnInit(*m_Renderer, *m_Scene); + } + + void Layer3D::OnInit(Renderer3D& renderer, Scene& scene) + { + } + + bool Layer3D::OnResize(uint width, uint height) + { + m_Renderer->SetScreenBufferSize(width, height); + return false; + } + + void Layer3D::OnUpdateInternal(const Timestep& ts) + { + OnUpdate(ts); + } + + void Layer3D::OnRender() + { + OnRender(*m_Renderer); + } + + void Layer3D::OnRender(Renderer3D& renderer) + { + m_Scene->Render(renderer); + renderer.Present(); + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/layers/Layer3D.h b/Sparky-core/src/sp/graphics/layers/Layer3D.h new file mode 100644 index 00000000..df807aae --- /dev/null +++ b/Sparky-core/src/sp/graphics/layers/Layer3D.h @@ -0,0 +1,33 @@ +#pragma once + +#include "sp/Common.h" + +#include "Layer.h" +#include "../Scene.h" + +#include "../ForwardRenderer.h" + +namespace sp { namespace graphics { + + class SP_API Layer3D : public Layer + { + protected: + Scene* m_Scene; + Renderer3D* m_Renderer; + public: + Layer3D(Scene* scene, Renderer3D* renderer = new ForwardRenderer()); + ~Layer3D(); + + virtual void Init(); + virtual void OnInit(Renderer3D& renderer, Scene& scene); + + inline Scene* GetScene() const { return m_Scene; } + + void OnUpdateInternal(const Timestep& ts) override; + void OnRender() override; + virtual void OnRender(Renderer3D& renderer); + protected: + virtual bool OnResize(uint width, uint height) override; + }; + +} } diff --git a/Sparky-core/src/sp/graphics/postfx/PostEffects.cpp b/Sparky-core/src/sp/graphics/postfx/PostEffects.cpp new file mode 100644 index 00000000..2bbdb090 --- /dev/null +++ b/Sparky-core/src/sp/graphics/postfx/PostEffects.cpp @@ -0,0 +1,42 @@ +#include "sp/sp.h" +#include "PostEffects.h" + +namespace sp { namespace graphics { + + PostEffects::PostEffects() + { + + } + + PostEffects::~PostEffects() + { + + } + + void PostEffects::Push(PostEffectsPass* pass) + { + m_Passes.push_back(pass); + } + + void PostEffects::Pop() + { + m_Passes.pop_back(); + } + + void PostEffects::RenderPostEffects(Framebuffer* source, Framebuffer* target, API::VertexArray* quad, API::IndexBuffer* indices) + { + target->Bind(); + // API::SetActiveTexture(GL_TEXTURE0); + // source->GetTexture()->Bind(nullptr); + + quad->Bind(); + indices->Bind(); + + for (PostEffectsPass* pass : m_Passes) + pass->RenderPass(target); + + indices->Unbind(); + quad->Unbind(); + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/postfx/PostEffects.h b/Sparky-core/src/sp/graphics/postfx/PostEffects.h new file mode 100644 index 00000000..e531d405 --- /dev/null +++ b/Sparky-core/src/sp/graphics/postfx/PostEffects.h @@ -0,0 +1,27 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" + +#include "sp/graphics/API/Framebuffer.h" +#include "sp/graphics/API/VertexArray.h" +#include "sp/graphics/API/IndexBuffer.h" +#include "PostEffectsPass.h" + +namespace sp { namespace graphics { + + // The Post Effects pipeline + class SP_API PostEffects + { + private: + std::vector m_Passes; + public: + PostEffects(); + ~PostEffects(); + void Push(PostEffectsPass* pass); + void Pop(); + + void RenderPostEffects(Framebuffer* source, Framebuffer* target, API::VertexArray* quad, API::IndexBuffer* indices); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/postfx/PostEffectsPass.cpp b/Sparky-core/src/sp/graphics/postfx/PostEffectsPass.cpp new file mode 100644 index 00000000..f2872e89 --- /dev/null +++ b/Sparky-core/src/sp/graphics/postfx/PostEffectsPass.cpp @@ -0,0 +1,32 @@ +#include "sp/sp.h" +#include "PostEffectsPass.h" + +#include "sp/system/Memory.h" + +namespace sp { namespace graphics { + + struct PostEffectsPassShader + { + maths::mat4 pr_matrix; + API::Texture* texture; + }; + + PostEffectsPass::PostEffectsPass(API::Shader* shader) + { + m_Material = spnew Material(shader); + // m_Material->SetTexture("tex", 0); + } + + PostEffectsPass::~PostEffectsPass() + { + + } + + void PostEffectsPass::RenderPass(Framebuffer* target) + { + m_Material->SetUniform("pr_matrix", maths::mat4::Orthographic(0.0f, (float)target->GetWidth(), (float)target->GetHeight(), 0.0f, -1.0f, 1.0f)); + m_Material->Bind(); + // API::DrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, NULL); + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/postfx/PostEffectsPass.h b/Sparky-core/src/sp/graphics/postfx/PostEffectsPass.h new file mode 100644 index 00000000..ca647078 --- /dev/null +++ b/Sparky-core/src/sp/graphics/postfx/PostEffectsPass.h @@ -0,0 +1,20 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/graphics/API/Framebuffer.h" +#include "../Material.h" + +namespace sp { namespace graphics { + + class SP_API PostEffectsPass + { + private: + Material* m_Material; + public: + PostEffectsPass(API::Shader* shader); + ~PostEffectsPass(); + + void RenderPass(Framebuffer* target); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/shaders/Shader.cpp b/Sparky-core/src/sp/graphics/shaders/Shader.cpp new file mode 100644 index 00000000..0761a701 --- /dev/null +++ b/Sparky-core/src/sp/graphics/shaders/Shader.cpp @@ -0,0 +1,64 @@ +#include "sp/sp.h" +#include "Shader.h" + +#include "sp/platform/opengl/GLShader.h" +#include "sp/platform/directx/DXShader.h" + +#include "sp/graphics/API/Context.h" + +#include "sp/system/Memory.h" + +namespace sp { namespace graphics { namespace API { + + const Shader* Shader::s_CurrentlyBound = nullptr; + + Shader* Shader::CreateFromFile(const String& name, const String& filepath, void* address) + { + String source = VFS::Get()->ReadTextFile(filepath); + + // TODO: Fix dynamic shader reloading + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: + { + GLShader* result = address ? new(address) GLShader(name, source) : spnew GLShader(name, source); + result->m_Path = filepath; + return result; + } + case RenderAPI::DIRECT3D: + { + D3DShader* result = address ? new(address) D3DShader(name, source) : spnew D3DShader(name, source); + result->m_FilePath = filepath; + return result; + } + } + return nullptr; + } + + Shader* Shader::CreateFromSource(const String& name, const String& source) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: return spnew GLShader(name, source); + case RenderAPI::DIRECT3D: return spnew D3DShader(name, source); + } + return nullptr; + } + + bool Shader::TryCompile(const String& source, String& error) + { + switch (Context::GetRenderAPI()) + { + case RenderAPI::OPENGL: return GLShader::TryCompile(source, error); + case RenderAPI::DIRECT3D: return D3DShader::TryCompile(source, error); + } + return nullptr; + } + + bool Shader::TryCompileFromFile(const String& filepath, String& error) + { + String source = VFS::Get()->ReadTextFile(filepath); + return TryCompile(source, error); + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/shaders/Shader.h b/Sparky-core/src/sp/graphics/shaders/Shader.h new file mode 100644 index 00000000..db432145 --- /dev/null +++ b/Sparky-core/src/sp/graphics/shaders/Shader.h @@ -0,0 +1,61 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" +#include "sp/Types.h" + +#include "sp/maths/maths.h" +#include "sp/system/VFS.h" + +#include "ShaderUniform.h" +#include "ShaderResource.h" + +namespace sp { namespace graphics { namespace API { + +#define SHADER_VERTEX_INDEX 0 +#define SHADER_UV_INDEX 1 +#define SHADER_MASK_UV_INDEX 2 +#define SHADER_TID_INDEX 3 +#define SHADER_MID_INDEX 4 +#define SHADER_COLOR_INDEX 5 + +#define SHADER_UNIFORM_PROJECTION_MATRIX_NAME "sys_ProjectionMatrix" +#define SHADER_UNIFORM_VIEW_MATRIX_NAME "sys_ViewMatrix" +#define SHADER_UNIFORM_MODEL_MATRIX_NAME "sys_ModelMatrix" + + class SP_API Shader + { + public: + static const Shader* s_CurrentlyBound; + public: + virtual void Bind() const = 0; + virtual void Unbind() const = 0; + + virtual void SetVSSystemUniformBuffer(byte* data, uint size, uint slot = 0) = 0; + virtual void SetPSSystemUniformBuffer(byte* data, uint size, uint slot = 0) = 0; + + virtual void SetVSUserUniformBuffer(byte* data, uint size) = 0; + virtual void SetPSUserUniformBuffer(byte* data, uint size) = 0; + + virtual const ShaderUniformBufferList& GetVSSystemUniforms() const = 0; + virtual const ShaderUniformBufferList& GetPSSystemUniforms() const = 0; + virtual const ShaderUniformBufferDeclaration* GetVSUserUniformBuffer() const = 0; + virtual const ShaderUniformBufferDeclaration* GetPSUserUniformBuffer() const = 0; + + virtual const ShaderResourceList& GetResources() const = 0; + + virtual const String& GetName() const = 0; + virtual const String& GetFilePath() const = 0; + + // virtual void SetData(byte* data, uint size) = 0; + + // bool HasUniform(const String& name) const = 0; + public: + static Shader* CreateFromFile(const String& name, const String& filepath, void* address = nullptr); // TODO: Temp, implement properly + static Shader* CreateFromSource(const String& name, const String& source); + + static bool TryCompile(const String& source, String& error); + static bool TryCompileFromFile(const String& filepath, String& error); + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/shaders/ShaderFactory.cpp b/Sparky-core/src/sp/graphics/shaders/ShaderFactory.cpp new file mode 100644 index 00000000..0f72fe0f --- /dev/null +++ b/Sparky-core/src/sp/graphics/shaders/ShaderFactory.cpp @@ -0,0 +1,67 @@ +#include "sp/sp.h" +#include "ShaderFactory.h" + +#include "sp/graphics/API/Context.h" + +namespace sp { namespace graphics { namespace ShaderFactory { + +#if defined(SP_PLATFORM_WINDOWS) + + static const char* s_BatchRendererShaderGL = +#include "sp/platform/opengl/shaders/BatchRenderer.shader" + ; + + static const char* s_BatchRendererShaderD3D = + #include "sp/platform/directx/shaders/BatchRenderer.hlsl" + ; + + static const char* s_SimpleShader = +#include "default/Simple.shader" + ; + + static const char* s_BasicLightShader = +#include "default/BasicLight.shader" + ; + + static const char* s_GeometryPassShader = +#include "default/GeometryPass.shader" + ; + + static const char* s_DebugShader = +#include "default/Debug.shader" + ; +#else +#error TODO: GLES shaders! +#endif + + API::Shader* BatchRendererShader() + { + switch (API::Context::GetRenderAPI()) + { + case API::RenderAPI::OPENGL: return API::Shader::CreateFromSource("BatchRenderer", s_BatchRendererShaderGL); + case API::RenderAPI::DIRECT3D: return API::Shader::CreateFromSource("BatchRenderer", s_BatchRendererShaderD3D); + } + return nullptr; + } + + API::Shader* SimpleShader() + { + return API::Shader::CreateFromSource("Simple Shader", s_SimpleShader); + } + + API::Shader* BasicLightShader() + { + return API::Shader::CreateFromSource("Basic Light Shader", s_BasicLightShader); + } + + API::Shader* GeometryPassShader() + { + return API::Shader::CreateFromSource("Geometry Pass Shader", s_GeometryPassShader); + } + + API::Shader* DebugShader() + { + return API::Shader::CreateFromSource("Debug Shader", s_DebugShader); + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/shaders/ShaderFactory.h b/Sparky-core/src/sp/graphics/shaders/ShaderFactory.h new file mode 100644 index 00000000..a8c4928e --- /dev/null +++ b/Sparky-core/src/sp/graphics/shaders/ShaderFactory.h @@ -0,0 +1,16 @@ +#pragma once + +#include "sp/Common.h" +#include "Shader.h" + +namespace sp { namespace graphics { namespace ShaderFactory { + + SP_API API::Shader* BatchRendererShader(); + SP_API API::Shader* SimpleShader(); + SP_API API::Shader* BasicLightShader(); + + SP_API API::Shader* GeometryPassShader(); + + SP_API API::Shader* DebugShader(); + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/shaders/ShaderManager.cpp b/Sparky-core/src/sp/graphics/shaders/ShaderManager.cpp new file mode 100644 index 00000000..d73beacf --- /dev/null +++ b/Sparky-core/src/sp/graphics/shaders/ShaderManager.cpp @@ -0,0 +1,72 @@ +#include "sp/sp.h" +#include "ShaderManager.h" + +#include "sp/system/Memory.h" + +namespace sp { namespace graphics { + + std::vector ShaderManager::s_Shaders; + + void ShaderManager::Add(API::Shader* shader) + { + s_Shaders.push_back(shader); + } + + API::Shader* ShaderManager::Get(const String& name) + { + for (API::Shader* shader : s_Shaders) + { + if (shader->GetName() == name) + return shader; + } + return nullptr; + } + + void ShaderManager::Clean() + { + for (uint i = 0; i < s_Shaders.size(); i++) + spdel s_Shaders[i]; + } + + void ShaderManager::Reload(const String& name) + { + for (uint i = 0; i < s_Shaders.size(); i++) + { + if (s_Shaders[i]->GetName() == name) + { + String path = s_Shaders[i]->GetFilePath(); + String error; + if (!API::Shader::TryCompileFromFile(path, error)) + { + SP_ERROR(error); + } + else + { + s_Shaders[i]->~Shader(); + s_Shaders[i] = API::Shader::CreateFromFile(name, path, s_Shaders[i]); + SP_INFO("Reloaded shader: " + name); + } + return; + } + } + SP_WARN("Could not find '", name, "' shader to reload."); + } + + void ShaderManager::Reload(const API::Shader* shader) + { + for (uint i = 0; i < s_Shaders.size(); i++) + { + if (s_Shaders[i] == shader) + { + String name = shader->GetName(); + String path = shader->GetFilePath(); + s_Shaders[i]->~Shader(); + s_Shaders[i] = API::Shader::CreateFromFile(name, path, s_Shaders[i]); + return; + } + } + SP_WARN("Could not find specified shader to reload."); + } + + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/shaders/ShaderManager.h b/Sparky-core/src/sp/graphics/shaders/ShaderManager.h new file mode 100644 index 00000000..387d65c4 --- /dev/null +++ b/Sparky-core/src/sp/graphics/shaders/ShaderManager.h @@ -0,0 +1,26 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" +#include "sp/Types.h" + +#include "Shader.h" + +namespace sp { namespace graphics { + + class SP_API ShaderManager + { + private: + static std::vector s_Shaders; + public: + static void Add(API::Shader* shader); + static API::Shader* Get(const String& name); + static void Clean(); + + static void Reload(const String& name); + static void Reload(const API::Shader* shader); + private: + ShaderManager() { } + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/shaders/ShaderResource.h b/Sparky-core/src/sp/graphics/shaders/ShaderResource.h new file mode 100644 index 00000000..a893be95 --- /dev/null +++ b/Sparky-core/src/sp/graphics/shaders/ShaderResource.h @@ -0,0 +1,18 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/Types.h" + +namespace sp { namespace graphics { namespace API { + + class ShaderResourceDeclaration + { + public: + virtual const String& GetName() const = 0; + virtual uint GetRegister() const = 0; + virtual uint GetCount() const = 0; + }; + + typedef std::vector ShaderResourceList; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/shaders/ShaderUniform.cpp b/Sparky-core/src/sp/graphics/shaders/ShaderUniform.cpp new file mode 100644 index 00000000..008f199c --- /dev/null +++ b/Sparky-core/src/sp/graphics/shaders/ShaderUniform.cpp @@ -0,0 +1,8 @@ +#include "sp/sp.h" +#include "ShaderUniform.h" + +#include "Shader.h" + +namespace sp { namespace graphics { + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/shaders/ShaderUniform.h b/Sparky-core/src/sp/graphics/shaders/ShaderUniform.h new file mode 100644 index 00000000..6dd9006c --- /dev/null +++ b/Sparky-core/src/sp/graphics/shaders/ShaderUniform.h @@ -0,0 +1,80 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/Types.h" +#include "sp/String.h" +#include "sp/utils/Log.h" + +namespace sp { namespace graphics { namespace API { + + class SP_API ShaderUniformDeclaration + { + private: + friend class Shader; + friend class GLShader; + friend class DXShader; + friend class ShaderStruct; + public: + virtual const String& GetName() const = 0; + virtual uint GetSize() const = 0; + virtual uint GetCount() const = 0; + virtual uint GetOffset() const = 0; + protected: + virtual void SetOffset(uint offset) = 0; + }; + + typedef std::vector ShaderUniformList; + + class ShaderUniformBufferDeclaration + { + public: + virtual const String& GetName() const = 0; + virtual uint GetRegister() const = 0; + virtual uint GetShaderType() const = 0; + virtual uint GetSize() const = 0; + virtual const ShaderUniformList& GetUniformDeclarations() const = 0; + + virtual ShaderUniformDeclaration* FindUniform(const String& name) = 0; + }; + + typedef std::vector ShaderUniformBufferList; + + class ShaderStruct + { + private: + friend class Shader; + private: + String m_Name; + std::vector m_Fields; + uint m_Size; + uint m_Offset; + public: + ShaderStruct(const String& name) + : m_Name(name), m_Size(0), m_Offset(0) + { + } + + void AddField(ShaderUniformDeclaration* field) + { + m_Size += field->GetSize(); + uint offset = 0; + if (m_Fields.size()) + { + ShaderUniformDeclaration* previous = m_Fields.back(); + offset = previous->GetOffset() + previous->GetSize(); + } + field->SetOffset(offset); + m_Fields.push_back(field); + } + + inline void SetOffset(uint offset) { m_Offset = offset; } + + inline const String& GetName() const { return m_Name; } + inline uint GetSize() const { return m_Size; } + inline uint GetOffset() const { return m_Offset; } + inline const std::vector& GetFields() const { return m_Fields; } + }; + + typedef std::vector ShaderStructList; + +} } } diff --git a/Sparky-core/src/sp/graphics/shaders/default/BasicLight.shader b/Sparky-core/src/sp/graphics/shaders/default/BasicLight.shader new file mode 100644 index 00000000..b69c3f91 --- /dev/null +++ b/Sparky-core/src/sp/graphics/shaders/default/BasicLight.shader @@ -0,0 +1,60 @@ +R"( +#shader vertex +#version 330 core + +layout (location = 0) in vec4 position; +layout (location = 1) in vec2 uv; +layout (location = 2) in float tid; +layout (location = 3) in vec4 color; + +uniform mat4 pr_matrix; +uniform mat4 vw_matrix = mat4(1.0); +uniform mat4 ml_matrix = mat4(1.0); + +out DATA +{ + vec4 position; + vec2 uv; + float tid; + vec4 color; +} vs_out; + +void main() +{ + gl_Position = pr_matrix * vw_matrix * ml_matrix * position; + vs_out.position = ml_matrix * position; + vs_out.uv = uv; + vs_out.tid = tid; + vs_out.color = color; +}; + +#shader fragment +#version 330 core + +layout (location = 0) out vec4 color; + +uniform vec4 colour; +uniform vec2 light_pos; + +in DATA +{ + vec4 position; + vec2 uv; + float tid; + vec4 color; +} fs_in; + +uniform sampler2D textures[32]; + +void main() +{ + float intensity = 1.0 / length(fs_in.position.xy - light_pos); + vec4 texColor = fs_in.color; + if (fs_in.tid > 0.0) + { + int32 tid = int32(fs_in.tid - 0.5); + texColor = fs_in.color * texture(textures[tid], fs_in.uv); + } + color = texColor * intensity; +}; +)" \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/shaders/default/Debug.shader b/Sparky-core/src/sp/graphics/shaders/default/Debug.shader new file mode 100644 index 00000000..3dd5d92a --- /dev/null +++ b/Sparky-core/src/sp/graphics/shaders/default/Debug.shader @@ -0,0 +1,36 @@ +R"( +#shader vertex +#version 330 core + +layout (location = 0) in vec4 position; +layout (location = 1) in vec4 color; + +uniform mat4 pr_matrix; +uniform mat4 vw_matrix; + +out DATA +{ + vec4 color; +} vs_out; + +void main() +{ + gl_Position = pr_matrix * vw_matrix * position; + vs_out.color = color; +}; + +#shader fragment +#version 330 core + +layout (location = 0) out vec4 color; + +in DATA +{ + vec4 color; +} fs_in; + +void main() +{ + color = fs_in.color; +}; +)" \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/shaders/default/Default.shader b/Sparky-core/src/sp/graphics/shaders/default/Default.shader new file mode 100644 index 00000000..50f8f377 --- /dev/null +++ b/Sparky-core/src/sp/graphics/shaders/default/Default.shader @@ -0,0 +1,69 @@ +R"( +#shader vertex +#version 330 core + +layout (location = 0) in vec4 position; +layout (location = 1) in vec2 uv; +layout (location = 2) in vec2 mask_uv; +layout (location = 3) in float tid; +layout (location = 4) in float mid; +layout (location = 5) in vec4 color; + +uniform mat4 pr_matrix; +uniform mat4 mask_matrix; + +out DATA +{ + vec4 position; + vec2 uv; + vec2 mask_uv; + float tid; + float mid; + vec4 color; +} vs_out; + +void main() +{ + gl_Position = pr_matrix * position; + vs_out.position = position; + vs_out.uv = uv; + vs_out.tid = tid; + vs_out.mid = mid; + vs_out.color = color; + vs_out.mask_uv = mask_uv; +}; + +#shader fragment +#version 330 core + +layout (location = 0) out vec4 color; + +in DATA +{ + vec4 position; + vec2 uv; + vec2 mask_uv; + float tid; + float mid; + vec4 color; +} fs_in; + +uniform sampler2D textures[32]; + +void main() +{ + vec4 texColor = fs_in.color; + vec4 maskColor = vec4(1.0, 1.0, 1.0, 1.0); + if (fs_in.tid > 0.0) + { + int tid = int(fs_in.tid - 0.5); + texColor = fs_in.color * texture(textures[tid], fs_in.uv); + } + if (fs_in.mid > 0.0) + { + int mid = int(fs_in.mid - 0.5); + maskColor = texture(textures[mid], fs_in.mask_uv); + } + color = texColor /* maskColor*/; // vec4(1.0 - maskColor.x, 1.0 - maskColor.y, 1.0 - maskColor.z, 1.0); +}; +)" \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/shaders/default/GeometryPass.shader b/Sparky-core/src/sp/graphics/shaders/default/GeometryPass.shader new file mode 100644 index 00000000..e6ba9024 --- /dev/null +++ b/Sparky-core/src/sp/graphics/shaders/default/GeometryPass.shader @@ -0,0 +1,52 @@ +R"( +#shader vertex +#version 330 core + +layout(location = 0) in vec4 position; +layout(location = 1) in vec3 normal; +layout(location = 2) in vec2 uv; + +uniform mat4 pr_matrix; +uniform mat4 vw_matrix = mat4(1.0); +uniform mat4 ml_matrix = mat4(1.0); + +out DATA +{ + vec3 position; + vec3 normal; + vec2 uv; +} vs_out; + +void main() +{ + gl_Position = pr_matrix * vw_matrix * ml_matrix * position; + vs_out.position = vec3(ml_matrix * position); + vs_out.normal = vec3(ml_matrix * vec4(normal, 0.0)); + vs_out.uv = uv; +}; + +#shader fragment +#version 330 core + +layout(location = 0) out vec3 position; +layout(location = 1) out vec3 diffuse; +layout(location = 2) out vec3 normal; +layout(location = 3) out vec3 uv; + +uniform sampler2D u_Texture; + +in DATA +{ + vec3 position; + vec3 normal; + vec2 uv; +} fs_in; + +void main() +{ + position = fs_in.position; + diffuse = vec3(texture(u_Texture, fs_in.uv)); + normal = normalize(fs_in.normal); + uv = vec3(fs_in.uv, 0.0); +}; +)" \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/shaders/default/Simple.shader b/Sparky-core/src/sp/graphics/shaders/default/Simple.shader new file mode 100644 index 00000000..cb0bdf17 --- /dev/null +++ b/Sparky-core/src/sp/graphics/shaders/default/Simple.shader @@ -0,0 +1,41 @@ +R"( +#shader vertex +#version 330 core + +layout (location = 0) in vec4 position; +layout (location = 1) in vec2 uv; +layout (location = 2) in vec2 mask_uv; +layout (location = 3) in float tid; +layout (location = 4) in float mid; +layout (location = 5) in vec4 color; + +uniform mat4 pr_matrix; + +out DATA +{ + vec2 uv; +} vs_out; + +void main() +{ + gl_Position = pr_matrix * position; + vs_out.uv = uv; +}; + +#shader fragment +#version 330 core + +layout (location = 0) out vec4 color; + +uniform sampler2D u_Texture; + +in DATA +{ + vec2 uv; +} fs_in; + +void main() +{ + color = texture(u_Texture, fs_in.uv); +}; +)" \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/shaders/default/gles/Default.shader b/Sparky-core/src/sp/graphics/shaders/default/gles/Default.shader new file mode 100644 index 00000000..e69de29b diff --git a/Sparky-core/src/sp/graphics/shaders/default/gles/Simple.shader b/Sparky-core/src/sp/graphics/shaders/default/gles/Simple.shader new file mode 100644 index 00000000..e69de29b diff --git a/Sparky-core/src/sp/graphics/ui/Button.cpp b/Sparky-core/src/sp/graphics/ui/Button.cpp new file mode 100644 index 00000000..077cdfd6 --- /dev/null +++ b/Sparky-core/src/sp/graphics/ui/Button.cpp @@ -0,0 +1,60 @@ +#include "sp/sp.h" +#include "Button.h" +#include "sp/debug/DebugMenu.h" + +#include "sp/graphics/FontManager.h" + +namespace sp { namespace graphics { namespace ui { + + using namespace maths; + + Button::Button(const String& label, const maths::Rectangle& bounds, const ActionHandler& handler) + : Widget(bounds), m_Label(label), m_ActionHandler(handler), m_State(ButtonState::UNPRESSED) + { + m_Font = FontManager::Get(24); + } + + bool Button::OnMousePressed(events::MousePressedEvent& e) + { + m_State = ButtonState::PRESSED; + return true; + } + + bool Button::OnMouseReleased(events::MouseReleasedEvent& e) + { + if (m_State == ButtonState::PRESSED) + OnAction(); + + m_State = ButtonState::UNPRESSED; + return true; + } + + bool Button::OnMouseMoved(events::MouseMovedEvent& e) + { + // TODO: Remove these hard coded mouse maths throughout the engine + vec2 mouse(e.GetX() * (32.0f / Window::GetWindowClass(nullptr)->GetWidth()), 18.0f - e.GetY() * (18.0f / Window::GetWindowClass(nullptr)->GetHeight())); + if (m_State == ButtonState::PRESSED && !m_Bounds.Contains(mouse)) + m_State = ButtonState::UNPRESSED; + + return false; + } + + void Button::OnAction() + { + m_ActionHandler(); + } + + void Button::OnUpdate() + { + } + + void Button::OnRender(Renderer2D& renderer) + { + float horizontalPadding = debug::DebugMenu::GetSettings().horizontalPadding * 0.5f; + + renderer.DrawRect(m_Bounds); + renderer.FillRect(m_Bounds, m_State == ButtonState::PRESSED ? 0xcfbbbbbb : 0xcf5f5f5f); + renderer.DrawString(m_Label, m_Bounds.position - vec2(m_Bounds.width - horizontalPadding, m_Font->GetHeight(m_Label) * 0.5f), *m_Font); // TODO: Actually use a Label + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/ui/Button.h b/Sparky-core/src/sp/graphics/ui/Button.h new file mode 100644 index 00000000..b711a6dc --- /dev/null +++ b/Sparky-core/src/sp/graphics/ui/Button.h @@ -0,0 +1,47 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/String.h" + +#include "Widget.h" + +namespace sp { namespace graphics { namespace ui { + + class Button : public Widget + { + public: + using ActionHandler = std::function; + private: + enum class ButtonState + { + UNPRESSED, PRESSED + }; + protected: + String m_Label; + ButtonState m_State; + ActionHandler m_ActionHandler; + Font* m_Font; + public: + Button(const String& label, const maths::Rectangle& bounds, const ActionHandler& handler = &Button::NoAction); + + bool OnMousePressed(events::MousePressedEvent& e) override; + bool OnMouseReleased(events::MouseReleasedEvent& e) override; + bool OnMouseMoved(events::MouseMovedEvent& e) override; + + virtual void OnAction(); + virtual void OnUpdate() override; + virtual void OnRender(Renderer2D& renderer) override; + + inline void SetLabel(const String& label) { m_Label = label; } + inline const String& GetLabel() const { return m_Label; } + + inline void SetFont(Font* font) { m_Font = font; } + inline const Font& GetFont() const { return *m_Font; } + + inline void SetAction(const ActionHandler& action) { m_ActionHandler = action; } + private: + static void NoAction() {} + }; + + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/ui/Panel.cpp b/Sparky-core/src/sp/graphics/ui/Panel.cpp new file mode 100644 index 00000000..a0911439 --- /dev/null +++ b/Sparky-core/src/sp/graphics/ui/Panel.cpp @@ -0,0 +1,128 @@ +#include "sp/sp.h" +#include "Panel.h" + +#include "Widget.h" + +#include "sp/app/Application.h" +#include "sp/maths/maths.h" +#include "sp/graphics/shaders/ShaderFactory.h" + +namespace sp { namespace graphics { namespace ui { + + using namespace events; + using namespace maths; + + Panel::Panel() + : Layer2D(maths::mat4::Orthographic(0.0f, 32.0f, 0.0f, 18.0f, -1.0f, 1.0f)) + { + Application::GetApplication().PushOverlay(this); + } + + Panel::~Panel() + { + for (uint i = 0; i < m_Widgets.size(); i++) + delete m_Widgets[i]; + + Application::GetApplication().PopOverlay(this); + } + + Widget* Panel::Add(Widget* widget) + { + m_Widgets.push_back(widget); + return widget; + } + + void Panel::Remove(Widget* widget) + { + int32 index = 0; + for (uint i = 0; i < m_Widgets.size(); i++) + { + if (m_Widgets[i] == widget) + { + m_Widgets.erase(m_Widgets.begin() + i); + delete m_Widgets[i]; + break; + } + } + } + + void Panel::Clear() + { + for (uint i = 0; i < m_Widgets.size(); i++) + spdel m_Widgets[i]; + + m_Widgets.clear(); + } + + void Panel::OnEvent(events::Event& event) + { + EventDispatcher dispatcher(event); + dispatcher.Dispatch(METHOD(&Panel::OnMousePressedEvent)); + dispatcher.Dispatch(METHOD(&Panel::OnMouseReleasedEvent)); + dispatcher.Dispatch(METHOD(&Panel::OnMouseMovedEvent)); + + // TODO: Temporary fix + dispatcher.Dispatch([this](events::ResizeWindowEvent& e) { return Layer2D::OnResize(e.GetWidth(), e.GetHeight()); }); + } + + bool Panel::OnMousePressedEvent(events::MousePressedEvent& e) + { + vec2 mouse(e.GetX() * (32.0f / Window::GetWindowClass(nullptr)->GetWidth()), 18.0f - e.GetY() * (18.0f / Window::GetWindowClass(nullptr)->GetHeight())); + for (uint i = 0; i < m_Widgets.size(); i++) + { + Widget* widget = m_Widgets[i]; + if (widget->GetBounds().Contains(mouse)) + { + if (widget->OnMousePressed(e)) + return true; + } + } + return false; + } + + bool Panel::OnMouseReleasedEvent(events::MouseReleasedEvent& e) + { + vec2 mouse(e.GetX() * (32.0f / Window::GetWindowClass(nullptr)->GetWidth()), 18.0f - e.GetY() * (18.0f / Window::GetWindowClass(nullptr)->GetHeight())); + for (uint i = 0; i < m_Widgets.size(); i++) + { + Widget* widget = m_Widgets[i]; + if (widget->GetBounds().Contains(mouse)) + { + if (widget->OnMouseReleased(e)) + return true; + } + } + return false; + } + + bool Panel::OnMouseMovedEvent(events::MouseMovedEvent& e) + { + for (uint i = 0; i < m_Widgets.size(); i++) + { + Widget* widget = m_Widgets[i]; + if (widget->OnMouseMoved(e)) + return true; + } + return false; + } + + void Panel::OnUpdate(const Timestep& ts) + { + for (Widget* widget : m_Widgets) + { + if (widget->IsActive()) + widget->OnUpdate(); + } + } + + void Panel::OnRender(Renderer2D& renderer) + { + for (Widget* widget : m_Widgets) + { + if (widget->IsActive()) + widget->OnRender(renderer); + } + + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/ui/Panel.h b/Sparky-core/src/sp/graphics/ui/Panel.h new file mode 100644 index 00000000..8d1a26eb --- /dev/null +++ b/Sparky-core/src/sp/graphics/ui/Panel.h @@ -0,0 +1,34 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/graphics/Renderer2D.h" +#include "sp/graphics/layers/Layer2D.h" + +namespace sp { namespace graphics { namespace ui { + + class Widget; + + class Panel : public Layer2D + { + private: + std::vector m_Widgets; + public: + Panel(); + ~Panel(); + + Widget* Add(Widget* widget); + void Remove(Widget* widget); + void Clear(); + + void OnEvent(events::Event& e) override; + bool OnMousePressedEvent(events::MousePressedEvent& e); + bool OnMouseReleasedEvent(events::MouseReleasedEvent& e); + bool OnMouseMovedEvent(events::MouseMovedEvent& e); + + void OnUpdate(const Timestep& ts) override; + void OnRender(Renderer2D& renderer) override; + + inline const std::vector& GetWidgets() const { return m_Widgets; } + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/ui/Slider.cpp b/Sparky-core/src/sp/graphics/ui/Slider.cpp new file mode 100644 index 00000000..cddac485 --- /dev/null +++ b/Sparky-core/src/sp/graphics/ui/Slider.cpp @@ -0,0 +1,91 @@ +#include "sp/sp.h" +#include "Slider.h" + +namespace sp { namespace graphics { namespace ui { + + using namespace maths; + + Slider::Slider(const maths::Rectangle& bounds, bool vertical) + : Widget(bounds), m_Value(0.0f), m_State(SliderState::UNPRESSED), m_HeadOffset(0.0f), + m_Callback(&Slider::NoCallback), m_Vertical(vertical) + { + float size = vertical ? bounds.width : bounds.height; + m_HeadBounds = Rectangle(bounds.x, bounds.y, size, size); + } + + Slider::Slider(const maths::Rectangle& bounds, float value, const ValueChangedCallback& callback, bool vertical) + : Widget(bounds), m_Value(value), m_State(SliderState::UNPRESSED), m_HeadOffset(0.0f), + m_Callback(callback), m_Vertical(vertical) + { + float size = vertical ? bounds.width : bounds.height; + m_HeadBounds = Rectangle(bounds.x, bounds.y, size, size); + } + + bool Slider::OnMousePressed(events::MousePressedEvent& e) + { + // TODO: Remove these hard coded mouse maths throughout the engine + vec2 mouse(e.GetX() * (32.0f / Window::GetWindowClass(nullptr)->GetWidth()), 18.0f - e.GetY() * (18.0f / Window::GetWindowClass(nullptr)->GetHeight())); + if (m_HeadBounds.Contains(mouse)) + { + m_State = SliderState::PRESSEDHEAD; + m_HeadOffset = m_Vertical ? (mouse.y - m_HeadBounds.y) : (mouse.x - m_HeadBounds.x); + } + else + { + m_State = SliderState::PRESSED; + } + return true; + } + + bool Slider::OnMouseReleased(events::MouseReleasedEvent& e) + { + m_State = SliderState::UNPRESSED; + return true; + } + + bool Slider::OnMouseMoved(events::MouseMovedEvent& e) + { + // TODO: Remove these hard coded mouse maths throughout the engine + vec2 mouse(e.GetX() * (32.0f / Window::GetWindowClass(nullptr)->GetWidth()), 18.0f - e.GetY() * (18.0f / Window::GetWindowClass(nullptr)->GetHeight())); + if (m_State == SliderState::PRESSEDHEAD) + { + if (m_Vertical) + SetValue((mouse.y - m_Bounds.GetMinimumBound().y - m_HeadOffset) / (m_Bounds.GetMaximumBound().y)); + else + SetValue((mouse.x - m_Bounds.GetMinimumBound().x - m_HeadOffset) / (m_Bounds.GetMaximumBound().x)); + } + + return false; + } + + void Slider::OnUpdate() + { + if (!Input::IsMouseButtonPressed(SP_MOUSE_LEFT)) + m_State = SliderState::UNPRESSED; + + if (m_Vertical) + m_HeadBounds.y = m_Bounds.GetMinimumBound().y + m_HeadBounds.height + m_Value * (m_Bounds.height * 2.0f - m_HeadBounds.height * 2.0f); + else + m_HeadBounds.x = m_Bounds.GetMinimumBound().x + m_HeadBounds.width + m_Value * (m_Bounds.width * 2.0f - m_HeadBounds.width * 2.0f); + } + + void Slider::OnRender(Renderer2D& renderer) + { + renderer.FillRect(m_Bounds, 0xcf7f7f7f); + renderer.DrawRect(m_Bounds); + + renderer.FillRect(m_HeadBounds, 0xcfbfbfbf); + renderer.DrawRect(m_HeadBounds); + + vec2 offset = m_Vertical ? vec2(0, m_Bounds.size.y) : vec2(m_Bounds.size.x, 0); + renderer.DrawLine(m_Bounds.position - offset, m_Bounds.position + offset); + } + + void Slider::SetValue(float value) + { + value = clamp(value, 0.0f, 1.0f); + m_Value = value; + m_Callback(value); + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/ui/Slider.h b/Sparky-core/src/sp/graphics/ui/Slider.h new file mode 100644 index 00000000..d752e5ff --- /dev/null +++ b/Sparky-core/src/sp/graphics/ui/Slider.h @@ -0,0 +1,46 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/maths/maths.h" + +#include "Widget.h" + +namespace sp { namespace graphics { namespace ui { + + class SP_API Slider : public Widget + { + public: + using ValueChangedCallback = std::function; + private: + enum class SliderState + { + UNPRESSED, PRESSED, PRESSEDHEAD + }; + private: + maths::Rectangle m_HeadBounds; + float m_Value; + float m_HeadOffset; + SliderState m_State; + ValueChangedCallback m_Callback; + bool m_Vertical; + public: + Slider(const maths::Rectangle& bounds, bool vertical = false); + Slider(const maths::Rectangle& bounds, float value = 0.0f, const ValueChangedCallback& callback = &Slider::NoCallback, bool vertical = false); + + bool OnMousePressed(events::MousePressedEvent& e) override; + bool OnMouseReleased(events::MouseReleasedEvent& e) override; + bool OnMouseMoved(events::MouseMovedEvent& e) override; + + void OnUpdate() override; + void OnRender(Renderer2D& renderer) override; + + inline void SetCallback(const ValueChangedCallback& callback) { m_Callback = callback; } + inline const ValueChangedCallback& GetCallback() const { return m_Callback; } + + inline float GetValue() const { return m_Value; } + void SetValue(float value); + private: + static void NoCallback(float) {} + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/ui/Widget.cpp b/Sparky-core/src/sp/graphics/ui/Widget.cpp new file mode 100644 index 00000000..dbb285ff --- /dev/null +++ b/Sparky-core/src/sp/graphics/ui/Widget.cpp @@ -0,0 +1,34 @@ +#include "sp/sp.h" +#include "Widget.h" + +namespace sp { namespace graphics { namespace ui { + + Widget::Widget(const maths::Rectangle& bounds) + : m_Bounds(bounds), m_Active(true), m_Focused(false) + { + } + + bool Widget::OnMousePressed(events::MousePressedEvent& e) + { + return false; + } + + bool Widget::OnMouseReleased(events::MouseReleasedEvent& e) + { + return false; + } + + bool Widget::OnMouseMoved(events::MouseMovedEvent& e) + { + return false; + } + + void Widget::OnUpdate() + { + } + + void Widget::OnRender(Renderer2D& renderer) + { + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/graphics/ui/Widget.h b/Sparky-core/src/sp/graphics/ui/Widget.h new file mode 100644 index 00000000..808749bc --- /dev/null +++ b/Sparky-core/src/sp/graphics/ui/Widget.h @@ -0,0 +1,38 @@ +#pragma once + +#include "sp/sp.h" +#include "Panel.h" + +#include "sp/maths/maths.h" + +namespace sp { namespace graphics { namespace ui { + + class SP_API Widget + { + protected: + bool m_Active; + bool m_Focused; + + Panel* m_Panel; + maths::Rectangle m_Bounds; + private: + Widget() {} + protected: + Widget(const maths::Rectangle& bounds); + public: + virtual bool OnMousePressed(events::MousePressedEvent& e); + virtual bool OnMouseReleased(events::MouseReleasedEvent& e); + virtual bool OnMouseMoved(events::MouseMovedEvent& e); + + virtual void OnUpdate(); + virtual void OnRender(Renderer2D& renderer); + + inline const maths::Rectangle& GetBounds() const { return m_Bounds; } + inline maths::Rectangle& GetBounds() { return m_Bounds; } + inline void SetBounds(const maths::Rectangle& bounds) { m_Bounds = bounds; } + + inline bool IsActive() const { return m_Active; } + inline void SetActive(bool active) { m_Active = active; } + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/maths/AABB.cpp b/Sparky-core/src/sp/maths/AABB.cpp new file mode 100644 index 00000000..78e9682a --- /dev/null +++ b/Sparky-core/src/sp/maths/AABB.cpp @@ -0,0 +1,78 @@ +#include "sp/sp.h" +#include "AABB.h" + +#include "Rectangle.h" + +namespace sp { namespace maths { + + AABB::AABB() + : min(vec3()), max(vec3()) + { + } + + AABB::AABB(const Rectangle& rectangle) + : min(rectangle.GetMinimumBound()), max(rectangle.GetMaximumBound()) + { + } + + AABB::AABB(const vec2& min, const vec2& max) + : min(vec3(min)), max(vec3(max)) + { + } + + AABB::AABB(const vec3& min, const vec3& max) + : min(min), max(max) + { + } + + AABB::AABB(float x, float y, float width, float height) + : min(vec3(x, y, 0.0f)), max(vec3(width, height, 0.0f)) + { + } + + AABB::AABB(float x, float y, float z, float width, float height, float depth) + : min(vec3(x, y, z)), max(vec3(width, height, depth)) + { + } + + bool AABB::Intersects(const AABB& other) const + { + return (max > other.min && min < other.max) || (min > other.max && max < other.min); + } + + bool AABB::Contains(const vec2& point) const + { + return vec3(point) > min && vec3(point) < max; + } + + bool AABB::Contains(const vec3& point) const + { + return point > min && point < max; + } + + vec3 AABB::Center() const + { + return (max + min) * 0.5f; + } + + bool AABB::operator==(const AABB& other) const + { + return min == other.min && max == other.max; + } + + bool AABB::operator!=(const AABB& other) const + { + return !(*this == other); + } + + bool AABB::operator<(const AABB& other) const + { + return max < other.min; + } + + bool AABB::operator>(const AABB& other) const + { + return min > other.max; + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/maths/AABB.h b/Sparky-core/src/sp/maths/AABB.h new file mode 100644 index 00000000..a697b478 --- /dev/null +++ b/Sparky-core/src/sp/maths/AABB.h @@ -0,0 +1,42 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" + +#include "vec2.h" +#include "vec3.h" + +namespace sp { namespace maths { + + struct Rectangle; + + struct SP_API AABB + { + vec3 min; + vec3 max; + + AABB(); + AABB(const Rectangle& rectangle); + AABB(const vec2& min, const vec2& max); + AABB(const vec3& min, const vec3& max); + AABB(float x, float y, float width, float height); + AABB(float x, float y, float z, float width, float height, float depth); + + bool Intersects(const AABB& other) const; + bool Contains(const vec2& point) const; + bool Contains(const vec3& point) const; + + vec3 Center() const; + + bool operator==(const AABB& other) const; + bool operator!=(const AABB& other) const; + + bool operator<(const AABB& other) const; + bool operator>(const AABB& other) const; + + friend std::ostream& operator<<(std::ostream& stream, const AABB& aabb); + + inline vec3 GetSize() const { return vec3(abs(max.x - min.x), abs(max.y - min.y), abs(max.z - min.z)); } + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/maths/Quaternion.cpp b/Sparky-core/src/sp/maths/Quaternion.cpp new file mode 100644 index 00000000..690bc1cd --- /dev/null +++ b/Sparky-core/src/sp/maths/Quaternion.cpp @@ -0,0 +1,239 @@ +#include "sp/sp.h" +#include "Quaternion.h" + +namespace sp { namespace maths { + +#define _VECTORMATH_SLERP_TOL 0.999f + + Quaternion::Quaternion() + : x(0), y(0), z(0), w(1) + { + } + + Quaternion::Quaternion(const Quaternion& Quaternion) + { + x = Quaternion.x; + y = Quaternion.y; + z = Quaternion.z; + w = Quaternion.w; + } + + Quaternion::Quaternion(float x, float y, float z, float w) + : x(x), y(y), z(z), w(w) + { + } + + Quaternion::Quaternion(const vec4& vec) + { + x = vec.x; + y = vec.y; + z = vec.z; + w = vec.w; + } + + Quaternion::Quaternion(float scalar) + { + x = scalar; + y = scalar; + z = scalar; + w = scalar; + } + + Quaternion::Quaternion(const vec3& xyz, float w) + { + this->SetXYZ(xyz); + this->w = w; + } + + Quaternion Quaternion::Identity() + { + return Quaternion(0.0f, 0.0f, 0.0f, 1.0f); + } + + Quaternion Quaternion::FromEulerAngles(const vec3& angles) + { + Quaternion pitch(vec3(1.0, 0.0, 0.0), angles.x); + Quaternion yaw(vec3(0.0, 1.0, 0.0), angles.y); + Quaternion roll(vec3(0.0, 0.0, 1.0), angles.z); + return pitch * yaw * roll; + } + + Quaternion& Quaternion::operator =(const Quaternion & Quaternion) + { + x = Quaternion.x; + y = Quaternion.y; + z = Quaternion.z; + w = Quaternion.w; + return *this; + } + + Quaternion& Quaternion::SetXYZ(const vec3 & vec) + { + x = vec.x; + y = vec.y; + z = vec.z; + return *this; + } + + const vec3 Quaternion::GetXYZ() const + { + return vec3(x, y, z); + } + + Quaternion& Quaternion::SetElem(int32 idx, float value) + { + *(&x + idx) = value; + return *this; + } + + float Quaternion::GetElem(int32 idx) const + { + return *(&x + idx); + } + + float Quaternion::operator [](int32 idx) const + { + return *(&x + idx); + } + + vec3 Quaternion::GetAxis() const + { + float x = 1.0f - w * w; + if (x < 0.0000001f) // Divide by zero safety check + return vec3::XAxis(); + + float x2 = x * x; + return GetXYZ() / x2; + } + + vec3 Quaternion::ToEulerAngles() const + { + return vec3(atan2(2 * x * w - 2 * y * z, 1 - 2 * x * x - 2 * z * z), + atan2(2 * y * w - 2 * x * z, 1 - 2 * y * y - 2 * z * z), + asin(2 * x * y + 2 * z * w)); + } + + const Quaternion Quaternion::operator+(const Quaternion& quaternion) const + { + return Quaternion(x + quaternion.x, y + quaternion.y, z + quaternion.z, w + quaternion.w); + } + + const Quaternion Quaternion::operator-(const Quaternion& quaternion) const + { + return Quaternion(x - quaternion.x, y - quaternion.y, z - quaternion.z, w - quaternion.w); + } + + const Quaternion Quaternion::operator*(float scalar) const + { + return Quaternion(x * scalar, y * scalar, z * scalar, w * scalar); + } + + const Quaternion Quaternion::operator/(float scalar) const + { + return Quaternion(x / scalar, y / scalar, z / scalar, w / scalar); + } + + const Quaternion Quaternion::operator-() const + { + return Quaternion(-x, -y, -z, -w); + } + + bool Quaternion::operator ==(const Quaternion & Quaternion) const + { + return (x == Quaternion.x) && (y == Quaternion.y) && (z == Quaternion.z) && (w == Quaternion.w); + } + + bool Quaternion::operator !=(const Quaternion & Quaternion) const + { + return !(*this == Quaternion); + } + + float Norm(const Quaternion& quaternion) + { + float result; + result = (quaternion.x * quaternion.x); + result = (result + (quaternion.y * quaternion.y)); + result = (result + (quaternion.z * quaternion.z)); + result = (result + (quaternion.w * quaternion.w)); + return result; + } + + float Length(const Quaternion& quaternion) + { + return sqrt(Norm(quaternion)); + } + + const Quaternion Normalize(const Quaternion& quaternion) + { + float lenSqr, lenInv; + lenSqr = Norm(quaternion); + lenInv = rsqrt(lenSqr); + return quaternion * lenInv; + } + + const Quaternion NormalizeEst(const Quaternion& quaternion) + { + float lenSqr, lenInv; + lenSqr = Norm(quaternion); + lenInv = rsqrt(lenSqr); + return quaternion * lenInv; + } + + const Quaternion Quaternion::Rotation(const vec3& unitVec0, const vec3& unitVec1) + { + float cosHalfAngleX2, recipCosHalfAngleX2; + cosHalfAngleX2 = sqrt((2.0f * (1.0f + unitVec0.Dot(unitVec1)))); + recipCosHalfAngleX2 = (1.0f / cosHalfAngleX2); + return Quaternion((unitVec0.Cross(unitVec1) * recipCosHalfAngleX2), (cosHalfAngleX2 * 0.5f)); + } + + const Quaternion Quaternion::Rotation(float radians, const vec3 & unitVec) + { + float angle = radians * 0.5f; + return Quaternion((unitVec * sin(angle)), cos(angle)); + } + + const Quaternion Quaternion::operator*(const Quaternion& quat) const + { + return Normalize(Quaternion( + (((w * quat.x) + (x * quat.w)) + (y * quat.z)) - (z * quat.y), + (((w * quat.y) + (y * quat.w)) + (z * quat.x)) - (x * quat.z), + (((w * quat.z) + (z * quat.w)) + (x * quat.y)) - (y * quat.x), + (((w * quat.w) - (x * quat.x)) - (y * quat.y)) - (z * quat.z) + )); + } + + vec3 Quaternion::Rotate(const Quaternion& quat, const vec3& vec) + { + float tmpX, tmpY, tmpZ, tmpW; + tmpX = (((quat.w * vec.x) + (quat.y * vec.z)) - (quat.z * vec.y)); + tmpY = (((quat.w * vec.y) + (quat.z * vec.x)) - (quat.x * vec.z)); + tmpZ = (((quat.w * vec.z) + (quat.x * vec.y)) - (quat.y * vec.x)); + tmpW = (((quat.x * vec.x) + (quat.y * vec.y)) + (quat.z * vec.z)); + return vec3( + ((((tmpW * quat.x) + (tmpX * quat.w)) - (tmpY * quat.z)) + (tmpZ * quat.y)), + ((((tmpW * quat.y) + (tmpY * quat.w)) - (tmpZ * quat.x)) + (tmpX * quat.z)), + ((((tmpW * quat.z) + (tmpZ * quat.w)) - (tmpX * quat.y)) + (tmpY * quat.x)) + ); + } + + Quaternion Quaternion::Conjugate() const + { + return Quaternion(-x, -y, -z, w); + } + + const Quaternion Select(const Quaternion& quat0, const Quaternion& quat1, bool select1) + { + return Quaternion(select1 ? quat1.x : quat0.x, select1 ? quat1.y : quat0.y, select1 ? quat1.z : quat0.z, select1 ? quat1.w : quat0.w); + } + + float Quaternion::Dot(const Quaternion& other) const + { + float result = (x * other.x); + result = (result + (y * other.y)); + result = (result + (z * other.z)); + result = (result + (w * other.w)); + return result; + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/maths/Quaternion.h b/Sparky-core/src/sp/maths/Quaternion.h new file mode 100644 index 00000000..c941a0ac --- /dev/null +++ b/Sparky-core/src/sp/maths/Quaternion.h @@ -0,0 +1,101 @@ +#pragma once + +#include "sp/Common.h" + +#include "mat4.h" + +namespace sp { namespace maths { + + struct SP_API Quaternion + { + float x, y, z, w; + + Quaternion(); + Quaternion(const Quaternion& quaternion); + Quaternion(float x, float y, float z, float w); + Quaternion(const vec3& xyz, float w); + Quaternion(const vec4& vec); + Quaternion(float scalar); + + Quaternion& operator=(const Quaternion& quat); + + Quaternion& SetXYZ(const vec3& vec); + const vec3 GetXYZ() const; + + Quaternion& SetElem(int32 idx, float value); + float GetElem(int32 idx) const; + vec3 GetAxis() const; + vec3 ToEulerAngles() const; + + const Quaternion operator+(const Quaternion& Quaternion) const; + const Quaternion operator-(const Quaternion& Quaternion) const; + const Quaternion operator*(const Quaternion& Quaternion) const; + const Quaternion operator*(float scalar) const; + const Quaternion operator/(float scalar) const; + float operator[](int32 idx) const; + + Quaternion& operator+=(const Quaternion& Quaternion) + { + *this = *this + Quaternion; + return *this; + } + + Quaternion& operator-=(const Quaternion& Quaternion) + { + *this = *this - Quaternion; + return *this; + } + + Quaternion& operator*=(const Quaternion& Quaternion) + { + *this = *this * Quaternion; + return *this; + } + + Quaternion& operator*=(float scalar) + { + *this = *this * scalar; + return *this; + } + + Quaternion& operator/=(float scalar) + { + *this = *this / scalar; + return *this; + } + + const Quaternion operator-() const; + bool operator==(const Quaternion& quaternion) const; + bool operator!=(const Quaternion& quaternion) const; + static Quaternion Identity(); + static Quaternion FromEulerAngles(const vec3& angles); + + static vec3 Rotate(const Quaternion & quat, const vec3 & vec); + + static const Quaternion Rotation(const vec3& unitVec0, const vec3& unitVec1); + static const Quaternion Rotation(float radians, const vec3& unitVec); + + static const Quaternion RotationX(float radians) + { + float angle = radians * 0.5f; + return Quaternion(sin(angle), 0.0f, 0.0f, cos(angle)); + } + + static const Quaternion RotationY(float radians) + { + float angle = radians * 0.5f; + return Quaternion(0.0f, sin(angle), 0.0f, cos(angle)); + } + + static const Quaternion RotationZ(float radians) + { + float angle = radians * 0.5f; + return Quaternion(0.0f, 0.0f, sin(angle), cos(angle)); + } + + float Dot(const Quaternion& other) const; + Quaternion Conjugate() const; + + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/maths/Rectangle.cpp b/Sparky-core/src/sp/maths/Rectangle.cpp new file mode 100644 index 00000000..3d0630d8 --- /dev/null +++ b/Sparky-core/src/sp/maths/Rectangle.cpp @@ -0,0 +1,63 @@ +#include "sp/sp.h" +#include "Rectangle.h" + +#include "AABB.h" + +namespace sp { namespace maths { + + Rectangle::Rectangle() + : position(vec2()), size(vec2()) + { + } + + Rectangle::Rectangle(const AABB& aabb) + : position(vec2(aabb.min)), size(vec2(aabb.GetSize())) + { + } + + Rectangle::Rectangle(const vec2& position, const vec2& size) + : position(position), size(size) + { + } + + Rectangle::Rectangle(float x, float y, float width, float height) + : position(vec2(x, y)), size(vec2(width, height)) + { + } + + bool Rectangle::Intersects(const Rectangle& other) const + { + return (size > other.position && position < other.size) || (position > other.size && size < other.position); + } + + bool Rectangle::Contains(const vec2& point) const + { + return point > GetMinimumBound() && point < GetMaximumBound(); + } + + bool Rectangle::Contains(const vec3& point) const + { + return Contains(vec2(point)); + } + + bool Rectangle::operator==(const Rectangle& other) const + { + return position == other.position && size == other.size; + } + + bool Rectangle::operator!=(const Rectangle& other) const + { + return !(*this == other); + } + + bool Rectangle::operator<(const Rectangle& other) const + { + return size < other.size; + } + + bool Rectangle::operator>(const Rectangle& other) const + { + return size > other.size; + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/maths/Rectangle.h b/Sparky-core/src/sp/maths/Rectangle.h new file mode 100644 index 00000000..166bcc02 --- /dev/null +++ b/Sparky-core/src/sp/maths/Rectangle.h @@ -0,0 +1,60 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" + +#include "vec2.h" +#include "vec3.h" + +namespace sp { namespace maths { + + struct AABB; + + /// + /// Rectangle + /// + /// Note that position is stored as a center point, and size is + /// half-width and half-height extents. + struct SP_API Rectangle + { + union + { + vec2 position; + struct + { + float x; + float y; + }; + }; + union + { + vec2 size; + struct + { + float width; + float height; + }; + }; + + Rectangle(); + Rectangle(const AABB& aabb); + Rectangle(const vec2& position, const vec2& size); + Rectangle(float x, float y, float width, float height); + + bool Intersects(const Rectangle& other) const; + bool Contains(const vec2& point) const; + bool Contains(const vec3& point) const; + + inline vec2 GetMinimumBound() const { return position - size; } + inline vec2 GetMaximumBound() const { return position + size; } + + bool operator==(const Rectangle& other) const; + bool operator!=(const Rectangle& other) const; + + bool operator<(const Rectangle& other) const; + bool operator>(const Rectangle& other) const; + + friend std::ostream& operator<<(std::ostream& stream, const Rectangle& Rectangle); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/maths/mat4.cpp b/Sparky-core/src/sp/maths/mat4.cpp similarity index 53% rename from Sparky-core/src/maths/mat4.cpp rename to Sparky-core/src/sp/maths/mat4.cpp index ca87fd4c..021d6eb7 100644 --- a/Sparky-core/src/maths/mat4.cpp +++ b/Sparky-core/src/sp/maths/mat4.cpp @@ -1,297 +1,391 @@ -#include "mat4.h" - -namespace sparky { namespace maths { - - mat4::mat4() - { - for (int i = 0; i < 4 * 4; i++) - elements[i] = 0.0f; - } - - mat4::mat4(float diagonal) - { - for (int i = 0; i < 4 * 4; i++) - elements[i] = 0.0f; - - elements[0 + 0 * 4] = diagonal; - elements[1 + 1 * 4] = diagonal; - elements[2 + 2 * 4] = diagonal; - elements[3 + 3 * 4] = diagonal; - } - - mat4 mat4::identity() - { - return mat4(1.0f); - } - - mat4& mat4::multiply(const mat4& other) - { - float data[16]; - for (int y = 0; y < 4; y++) - { - for (int x = 0; x < 4; x++) - { - float sum = 0.0f; - for (int e = 0; e < 4; e++) - { - sum += elements[x + e * 4] * other.elements[e + y * 4]; - } - data[x + y * 4] = sum; - } - } - memcpy(elements, data, 4 * 4 * sizeof(float)); - - return *this; - } - - vec3 mat4::multiply(const vec3& other) const - { - return vec3( - columns[0].x * other.x + columns[1].x * other.y + columns[2].x * other.z + columns[3].x, - columns[0].y * other.x + columns[1].y * other.y + columns[2].y * other.z + columns[3].y, - columns[0].z * other.x + columns[1].z * other.y + columns[2].z * other.z + columns[3].z - ); - } - - vec4 mat4::multiply(const vec4& other) const - { - return vec4( - columns[0].x * other.x + columns[1].x * other.y + columns[2].x * other.z + columns[3].x * other.w, - columns[0].y * other.x + columns[1].y * other.y + columns[2].y * other.z + columns[3].y * other.w, - columns[0].z * other.x + columns[1].z * other.y + columns[2].z * other.z + columns[3].z * other.w, - columns[0].w * other.x + columns[1].w * other.y + columns[2].w * other.z + columns[3].w * other.w - ); - } - - mat4 operator*(mat4 left, const mat4& right) - { - return left.multiply(right); - } - - mat4& mat4::operator*=(const mat4& other) - { - return multiply(other); - } - - vec3 operator*(const mat4& left, const vec3& right) - { - return left.multiply(right); - } - - vec4 operator*(const mat4& left, const vec4& right) - { - return left.multiply(right); - } - - mat4& mat4::invert() - { - double temp[16]; - - temp[0] = elements[5] * elements[10] * elements[15] - - elements[5] * elements[11] * elements[14] - - elements[9] * elements[6] * elements[15] + - elements[9] * elements[7] * elements[14] + - elements[13] * elements[6] * elements[11] - - elements[13] * elements[7] * elements[10]; - - temp[4] = -elements[4] * elements[10] * elements[15] + - elements[4] * elements[11] * elements[14] + - elements[8] * elements[6] * elements[15] - - elements[8] * elements[7] * elements[14] - - elements[12] * elements[6] * elements[11] + - elements[12] * elements[7] * elements[10]; - - temp[8] = elements[4] * elements[9] * elements[15] - - elements[4] * elements[11] * elements[13] - - elements[8] * elements[5] * elements[15] + - elements[8] * elements[7] * elements[13] + - elements[12] * elements[5] * elements[11] - - elements[12] * elements[7] * elements[9]; - - temp[12] = -elements[4] * elements[9] * elements[14] + - elements[4] * elements[10] * elements[13] + - elements[8] * elements[5] * elements[14] - - elements[8] * elements[6] * elements[13] - - elements[12] * elements[5] * elements[10] + - elements[12] * elements[6] * elements[9]; - - temp[1] = -elements[1] * elements[10] * elements[15] + - elements[1] * elements[11] * elements[14] + - elements[9] * elements[2] * elements[15] - - elements[9] * elements[3] * elements[14] - - elements[13] * elements[2] * elements[11] + - elements[13] * elements[3] * elements[10]; - - temp[5] = elements[0] * elements[10] * elements[15] - - elements[0] * elements[11] * elements[14] - - elements[8] * elements[2] * elements[15] + - elements[8] * elements[3] * elements[14] + - elements[12] * elements[2] * elements[11] - - elements[12] * elements[3] * elements[10]; - - temp[9] = -elements[0] * elements[9] * elements[15] + - elements[0] * elements[11] * elements[13] + - elements[8] * elements[1] * elements[15] - - elements[8] * elements[3] * elements[13] - - elements[12] * elements[1] * elements[11] + - elements[12] * elements[3] * elements[9]; - - temp[13] = elements[0] * elements[9] * elements[14] - - elements[0] * elements[10] * elements[13] - - elements[8] * elements[1] * elements[14] + - elements[8] * elements[2] * elements[13] + - elements[12] * elements[1] * elements[10] - - elements[12] * elements[2] * elements[9]; - - temp[2] = elements[1] * elements[6] * elements[15] - - elements[1] * elements[7] * elements[14] - - elements[5] * elements[2] * elements[15] + - elements[5] * elements[3] * elements[14] + - elements[13] * elements[2] * elements[7] - - elements[13] * elements[3] * elements[6]; - - temp[6] = -elements[0] * elements[6] * elements[15] + - elements[0] * elements[7] * elements[14] + - elements[4] * elements[2] * elements[15] - - elements[4] * elements[3] * elements[14] - - elements[12] * elements[2] * elements[7] + - elements[12] * elements[3] * elements[6]; - - temp[10] = elements[0] * elements[5] * elements[15] - - elements[0] * elements[7] * elements[13] - - elements[4] * elements[1] * elements[15] + - elements[4] * elements[3] * elements[13] + - elements[12] * elements[1] * elements[7] - - elements[12] * elements[3] * elements[5]; - - temp[14] = -elements[0] * elements[5] * elements[14] + - elements[0] * elements[6] * elements[13] + - elements[4] * elements[1] * elements[14] - - elements[4] * elements[2] * elements[13] - - elements[12] * elements[1] * elements[6] + - elements[12] * elements[2] * elements[5]; - - temp[3] = -elements[1] * elements[6] * elements[11] + - elements[1] * elements[7] * elements[10] + - elements[5] * elements[2] * elements[11] - - elements[5] * elements[3] * elements[10] - - elements[9] * elements[2] * elements[7] + - elements[9] * elements[3] * elements[6]; - - temp[7] = elements[0] * elements[6] * elements[11] - - elements[0] * elements[7] * elements[10] - - elements[4] * elements[2] * elements[11] + - elements[4] * elements[3] * elements[10] + - elements[8] * elements[2] * elements[7] - - elements[8] * elements[3] * elements[6]; - - temp[11] = -elements[0] * elements[5] * elements[11] + - elements[0] * elements[7] * elements[9] + - elements[4] * elements[1] * elements[11] - - elements[4] * elements[3] * elements[9] - - elements[8] * elements[1] * elements[7] + - elements[8] * elements[3] * elements[5]; - - temp[15] = elements[0] * elements[5] * elements[10] - - elements[0] * elements[6] * elements[9] - - elements[4] * elements[1] * elements[10] + - elements[4] * elements[2] * elements[9] + - elements[8] * elements[1] * elements[6] - - elements[8] * elements[2] * elements[5]; - - double determinant = elements[0] * temp[0] + elements[1] * temp[4] + elements[2] * temp[8] + elements[3] * temp[12]; - determinant = 1.0 / determinant; - - for (int i = 0; i < 4 * 4; i++) - elements[i] = temp[i] * determinant; - - return *this; - } - - mat4 mat4::orthographic(float left, float right, float bottom, float top, float near, float far) - { - mat4 result(1.0f); - - result.elements[0 + 0 * 4] = 2.0f / (right - left); - - result.elements[1 + 1 * 4] = 2.0f / (top - bottom); - - result.elements[2 + 2 * 4] = 2.0f / (near - far); - - result.elements[0 + 3 * 4] = (left + right) / (left - right); - result.elements[1 + 3 * 4] = (bottom + top) / (bottom - top); - result.elements[2 + 3 * 4] = (far + near) / (far - near); - - return result; - } - - mat4 mat4::perspective(float fov, float aspectRatio, float near, float far) - { - mat4 result(1.0f); - - float q = 1.0f / tan(toRadians(0.5f * fov)); - float a = q / aspectRatio; - - float b = (near + far) / (near - far); - float c = (2.0f * near * far) / (near - far); - - result.elements[0 + 0 * 4] = a; - result.elements[1 + 1 * 4] = q; - result.elements[2 + 2 * 4] = b; - result.elements[3 + 2 * 4] = -1.0f; - result.elements[2 + 3 * 4] = c; - - return result; - } - - mat4 mat4::translation(const vec3& translation) - { - mat4 result(1.0f); - - result.elements[0 + 3 * 4] = translation.x; - result.elements[1 + 3 * 4] = translation.y; - result.elements[2 + 3 * 4] = translation.z; - - return result; - } - - mat4 mat4::rotation(float angle, const vec3& axis) - { - mat4 result(1.0f); - - float r = toRadians(angle); - float c = cos(r); - float s = sin(r); - float omc = 1.0f - c; - - float x = axis.x; - float y = axis.y; - float z = axis.z; - - result.elements[0 + 0 * 4] = x * omc + c; - result.elements[1 + 0 * 4] = y * x * omc + z * s; - result.elements[2 + 0 * 4] = x * z * omc - y * s; - - result.elements[0 + 1 * 4] = x * y * omc - z * s; - result.elements[1 + 1 * 4] = y * omc + c; - result.elements[2 + 1 * 4] = y * z * omc + x * s; - - result.elements[0 + 2 * 4] = x * z * omc + y * s; - result.elements[1 + 2 * 4] = y * z * omc - x * s; - result.elements[2 + 2 * 4] = z * omc + c; - - return result; - } - - mat4 mat4::scale(const vec3& scale) - { - mat4 result(1.0f); - - result.elements[0 + 0 * 4] = scale.x; - result.elements[1 + 1 * 4] = scale.y; - result.elements[2 + 2 * 4] = scale.z; - - return result; - } - +#include "sp/sp.h" +#include "mat4.h" + +#include + +#include "Quaternion.h" + +namespace sp { namespace maths { + + mat4::mat4() + { + memset(elements, 0, 4 * 4 * sizeof(float)); + } + + mat4::mat4(float diagonal) + { + memset(elements, 0, 4 * 4 * sizeof(float)); + elements[0 + 0 * 4] = diagonal; + elements[1 + 1 * 4] = diagonal; + elements[2 + 2 * 4] = diagonal; + elements[3 + 3 * 4] = diagonal; + } + + mat4::mat4(float* elements) + { + memcpy(this->elements, elements, 4 * 4 * sizeof(float)); + } + + mat4::mat4(const vec4& row0, const vec4& row1, const vec4& row2, const vec4& row3) + { + rows[0] = row0; + rows[1] = row1; + rows[2] = row2; + rows[3] = row3; + } + + mat4 mat4::Identity() + { + return mat4(1.0f); + } + + mat4& mat4::Multiply(const mat4& other) + { + float data[16]; + for (int32 row = 0; row < 4; row++) + { + for (int32 col = 0; col < 4; col++) + { + float sum = 0.0f; + for (int32 e = 0; e < 4; e++) + { + sum += elements[e + row * 4] * other.elements[col + e * 4]; + } + data[col + row * 4] = sum; + } + } + memcpy(elements, data, 4 * 4 * sizeof(float)); + return *this; + } + + vec3 mat4::Multiply(const vec3& other) const + { + return other.Multiply(*this); + } + + vec4 mat4::Multiply(const vec4& other) const + { + return other.Multiply(*this); + } + + mat4 operator*(mat4 left, const mat4& right) + { + return left.Multiply(right); + } + + mat4& mat4::operator*=(const mat4& other) + { + return Multiply(other); + } + + vec3 operator*(const mat4& left, const vec3& right) + { + return left.Multiply(right); + } + + vec4 operator*(const mat4& left, const vec4& right) + { + return left.Multiply(right); + } + + mat4& mat4::Invert() + { + float temp[16]; + + temp[0] = elements[5] * elements[10] * elements[15] - + elements[5] * elements[11] * elements[14] - + elements[9] * elements[6] * elements[15] + + elements[9] * elements[7] * elements[14] + + elements[13] * elements[6] * elements[11] - + elements[13] * elements[7] * elements[10]; + + temp[4] = -elements[4] * elements[10] * elements[15] + + elements[4] * elements[11] * elements[14] + + elements[8] * elements[6] * elements[15] - + elements[8] * elements[7] * elements[14] - + elements[12] * elements[6] * elements[11] + + elements[12] * elements[7] * elements[10]; + + temp[8] = elements[4] * elements[9] * elements[15] - + elements[4] * elements[11] * elements[13] - + elements[8] * elements[5] * elements[15] + + elements[8] * elements[7] * elements[13] + + elements[12] * elements[5] * elements[11] - + elements[12] * elements[7] * elements[9]; + + temp[12] = -elements[4] * elements[9] * elements[14] + + elements[4] * elements[10] * elements[13] + + elements[8] * elements[5] * elements[14] - + elements[8] * elements[6] * elements[13] - + elements[12] * elements[5] * elements[10] + + elements[12] * elements[6] * elements[9]; + + temp[1] = -elements[1] * elements[10] * elements[15] + + elements[1] * elements[11] * elements[14] + + elements[9] * elements[2] * elements[15] - + elements[9] * elements[3] * elements[14] - + elements[13] * elements[2] * elements[11] + + elements[13] * elements[3] * elements[10]; + + temp[5] = elements[0] * elements[10] * elements[15] - + elements[0] * elements[11] * elements[14] - + elements[8] * elements[2] * elements[15] + + elements[8] * elements[3] * elements[14] + + elements[12] * elements[2] * elements[11] - + elements[12] * elements[3] * elements[10]; + + temp[9] = -elements[0] * elements[9] * elements[15] + + elements[0] * elements[11] * elements[13] + + elements[8] * elements[1] * elements[15] - + elements[8] * elements[3] * elements[13] - + elements[12] * elements[1] * elements[11] + + elements[12] * elements[3] * elements[9]; + + temp[13] = elements[0] * elements[9] * elements[14] - + elements[0] * elements[10] * elements[13] - + elements[8] * elements[1] * elements[14] + + elements[8] * elements[2] * elements[13] + + elements[12] * elements[1] * elements[10] - + elements[12] * elements[2] * elements[9]; + + temp[2] = elements[1] * elements[6] * elements[15] - + elements[1] * elements[7] * elements[14] - + elements[5] * elements[2] * elements[15] + + elements[5] * elements[3] * elements[14] + + elements[13] * elements[2] * elements[7] - + elements[13] * elements[3] * elements[6]; + + temp[6] = -elements[0] * elements[6] * elements[15] + + elements[0] * elements[7] * elements[14] + + elements[4] * elements[2] * elements[15] - + elements[4] * elements[3] * elements[14] - + elements[12] * elements[2] * elements[7] + + elements[12] * elements[3] * elements[6]; + + temp[10] = elements[0] * elements[5] * elements[15] - + elements[0] * elements[7] * elements[13] - + elements[4] * elements[1] * elements[15] + + elements[4] * elements[3] * elements[13] + + elements[12] * elements[1] * elements[7] - + elements[12] * elements[3] * elements[5]; + + temp[14] = -elements[0] * elements[5] * elements[14] + + elements[0] * elements[6] * elements[13] + + elements[4] * elements[1] * elements[14] - + elements[4] * elements[2] * elements[13] - + elements[12] * elements[1] * elements[6] + + elements[12] * elements[2] * elements[5]; + + temp[3] = -elements[1] * elements[6] * elements[11] + + elements[1] * elements[7] * elements[10] + + elements[5] * elements[2] * elements[11] - + elements[5] * elements[3] * elements[10] - + elements[9] * elements[2] * elements[7] + + elements[9] * elements[3] * elements[6]; + + temp[7] = elements[0] * elements[6] * elements[11] - + elements[0] * elements[7] * elements[10] - + elements[4] * elements[2] * elements[11] + + elements[4] * elements[3] * elements[10] + + elements[8] * elements[2] * elements[7] - + elements[8] * elements[3] * elements[6]; + + temp[11] = -elements[0] * elements[5] * elements[11] + + elements[0] * elements[7] * elements[9] + + elements[4] * elements[1] * elements[11] - + elements[4] * elements[3] * elements[9] - + elements[8] * elements[1] * elements[7] + + elements[8] * elements[3] * elements[5]; + + temp[15] = elements[0] * elements[5] * elements[10] - + elements[0] * elements[6] * elements[9] - + elements[4] * elements[1] * elements[10] + + elements[4] * elements[2] * elements[9] + + elements[8] * elements[1] * elements[6] - + elements[8] * elements[2] * elements[5]; + + float determinant = elements[0] * temp[0] + elements[1] * temp[4] + elements[2] * temp[8] + elements[3] * temp[12]; + determinant = 1.0f / determinant; + + for (int32 i = 0; i < 4 * 4; i++) + elements[i] = temp[i] * determinant; + + return *this; + } + + vec4 mat4::GetColumn(int index) const + { + return vec4(elements[index + 0 * 4], elements[index + 1 * 4], elements[index + 2 * 4], elements[index + 3 * 4]); + } + + void mat4::SetColumn(uint index, const vec4& column) + { + elements[index + 0 * 4] = column.x; + elements[index + 1 * 4] = column.y; + elements[index + 2 * 4] = column.z; + elements[index + 3 * 4] = column.w; + } + + mat4 mat4::Orthographic(float left, float right, float bottom, float top, float near, float far) + { + mat4 result(1.0f); + + result.elements[0 + 0 * 4] = 2.0f / (right - left); + + result.elements[1 + 1 * 4] = 2.0f / (top - bottom); + + result.elements[2 + 2 * 4] = 2.0f / (near - far); + + result.elements[3 + 0 * 4] = (left + right) / (left - right); + result.elements[3 + 1 * 4] = (bottom + top) / (bottom - top); + result.elements[3 + 2 * 4] = (far + near) / (far - near); + + return result; + } + + mat4 mat4::Perspective(float fov, float aspectRatio, float near, float far) + { + mat4 result(1.0f); + + float q = 1.0f / tan(toRadians(0.5f * fov)); + float a = q / aspectRatio; + + float b = (near + far) / (near - far); + float c = (2.0f * near * far) / (near - far); + + result.elements[0 + 0 * 4] = a; + result.elements[1 + 1 * 4] = q; + result.elements[2 + 2 * 4] = b; + result.elements[2 + 3 * 4] = -1.0f; + result.elements[3 + 2 * 4] = c; + + return result; + } + + mat4 mat4::LookAt(const vec3& camera, const vec3& object, const vec3& up) + { + mat4 result = Identity(); + vec3 f = (object - camera).Normalize(); + vec3 s = f.Cross(up.Normalize()); + vec3 u = s.Cross(f); + + result.elements[0 + 0 * 4] = s.x; + result.elements[0 + 1 * 4] = s.y; + result.elements[0 + 2 * 4] = s.z; + + result.elements[1 + 0 * 4] = u.x; + result.elements[1 + 1 * 4] = u.y; + result.elements[1 + 2 * 4] = u.z; + + result.elements[2 + 0 * 4] = -f.x; + result.elements[2 + 1 * 4] = -f.y; + result.elements[2 + 2 * 4] = -f.z; + + return result * Translate(vec3(-camera.x, -camera.y, -camera.z)); + } + + mat4 mat4::Translate(const vec3& translation) + { + mat4 result(1.0f); + + result.elements[3 + 0 * 4] = translation.x; + result.elements[3 + 1 * 4] = translation.y; + result.elements[3 + 2 * 4] = translation.z; + + return result; + } + + mat4 mat4::Rotate(float angle, const vec3& axis) + { + mat4 result(1.0f); + + float r = toRadians(angle); + float c = cos(r); + float s = sin(r); + float omc = 1.0f - c; + + float x = axis.x; + float y = axis.y; + float z = axis.z; + + result.elements[0 + 0 * 4] = x * x * omc + c; + result.elements[0 + 1 * 4] = y * x * omc + z * s; + result.elements[0 + 2 * 4] = x * z * omc - y * s; + + result.elements[1 + 0 * 4] = x * y * omc - z * s; + result.elements[1 + 1 * 4] = y * y * omc + c; + result.elements[1 + 2 * 4] = y * z * omc + x * s; + + result.elements[2 + 0 * 4] = x * z * omc + y * s; + result.elements[2 + 1 * 4] = y * z * omc - x * s; + result.elements[2 + 2 * 4] = z * z * omc + c; + + return result; + } + + mat4 mat4::Rotate(const Quaternion& quat) + { + mat4 result = Identity(); + + float qx, qy, qz, qw, qx2, qy2, qz2, qxqx2, qyqy2, qzqz2, qxqy2, qyqz2, qzqw2, qxqz2, qyqw2, qxqw2; + qx = quat.x; + qy = quat.y; + qz = quat.z; + qw = quat.w; + qx2 = (qx + qx); + qy2 = (qy + qy); + qz2 = (qz + qz); + qxqx2 = (qx * qx2); + qxqy2 = (qx * qy2); + qxqz2 = (qx * qz2); + qxqw2 = (qw * qx2); + qyqy2 = (qy * qy2); + qyqz2 = (qy * qz2); + qyqw2 = (qw * qy2); + qzqz2 = (qz * qz2); + qzqw2 = (qw * qz2); + + result.rows[0] = vec4(((1.0f - qyqy2) - qzqz2), (qxqy2 - qzqw2), (qxqz2 + qyqw2), 0.0f); + result.rows[1] = vec4((qxqy2 + qzqw2), ((1.0f - qxqx2) - qzqz2), (qyqz2 - qxqw2), 0.0f); + result.rows[2] = vec4((qxqz2 - qyqw2), (qyqz2 + qxqw2), ((1.0f - qxqx2) - qyqy2), 0.0f); + return result; + } + + mat4 mat4::Scale(const vec3& scale) + { + mat4 result(1.0f); + + result.elements[0 + 0 * 4] = scale.x; + result.elements[1 + 1 * 4] = scale.y; + result.elements[2 + 2 * 4] = scale.z; + + return result; + } + + mat4 mat4::Invert(const mat4& matrix) + { + mat4 result = matrix; + return result.Invert(); + } + + mat4 mat4::Transpose(const mat4& matrix) + { + return mat4( + vec4(matrix.rows[0].x, matrix.rows[1].x, matrix.rows[2].x, matrix.rows[3].x), + vec4(matrix.rows[0].y, matrix.rows[1].y, matrix.rows[2].y, matrix.rows[3].y), + vec4(matrix.rows[0].z, matrix.rows[1].z, matrix.rows[2].z, matrix.rows[3].z), + vec4(matrix.rows[0].w, matrix.rows[1].w, matrix.rows[2].w, matrix.rows[3].w) + ); + } + + String mat4::ToString() const + { + std::stringstream result; + result << "mat4: (" << rows[0].x << ", " << rows[1].x << ", " << rows[2].x << ", " << rows[3].x << "), "; + result << "(" << rows[0].y << ", " << rows[1].y << ", " << rows[2].y << ", " << rows[3].y << "), "; + result << "(" << rows[0].z << ", " << rows[1].z << ", " << rows[2].z << ", " << rows[3].z << "), "; + result << "(" << rows[0].w << ", " << rows[1].w << ", " << rows[2].w << ", " << rows[3].w << ")"; + return result.str(); + } + } } \ No newline at end of file diff --git a/Sparky-core/src/sp/maths/mat4.h b/Sparky-core/src/sp/maths/mat4.h new file mode 100644 index 00000000..b6eadede --- /dev/null +++ b/Sparky-core/src/sp/maths/mat4.h @@ -0,0 +1,62 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/String.h" + +#include "vec3.h" +#include "vec4.h" +#include "maths_func.h" + +namespace sp { namespace maths { + + struct Quaternion; + + struct SP_API mat4 + { + union + { + // [row + col * 4] + float elements[4 * 4]; + vec4 rows[4]; + }; + + mat4(); + mat4(float diagonal); + mat4(float* elements); + mat4(const vec4& row0, const vec4& row1, const vec4& row2, const vec4& row3); + + static mat4 Identity(); + + mat4& Multiply(const mat4& other); + friend SP_API mat4 operator*(mat4 left, const mat4& right); + mat4& operator*=(const mat4& other); + + vec3 Multiply(const vec3& other) const; + friend SP_API vec3 operator*(const mat4& left, const vec3& right); + + vec4 Multiply(const vec4& other) const; + friend SP_API vec4 operator*(const mat4& left, const vec4& right); + + mat4& Invert(); + + vec4 GetColumn(int index) const; + void SetColumn(uint index, const vec4& column); + inline vec3 GetPosition() const { return vec3(GetColumn(3)); } + inline void SetPosition(const vec3& position) { SetColumn(3, vec4(position, 1.0f)); } + + static mat4 Orthographic(float left, float right, float bottom, float top, float near, float far); + static mat4 Perspective(float fov, float aspectRatio, float near, float far); + static mat4 LookAt(const vec3& camera, const vec3& object, const vec3& up); + + static mat4 Translate(const vec3& translation); + static mat4 Rotate(float angle, const vec3& axis); + static mat4 Rotate(const Quaternion& quat); + static mat4 Scale(const vec3& scale); + static mat4 Invert(const mat4& matrix); + + static mat4 Transpose(const mat4& matrix); + + String ToString() const; + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/maths/maths.h b/Sparky-core/src/sp/maths/maths.h new file mode 100644 index 00000000..837f7761 --- /dev/null +++ b/Sparky-core/src/sp/maths/maths.h @@ -0,0 +1,24 @@ +#pragma once + +#include +#include "maths_func.h" + +#include "vec2.h" +#include "vec3.h" +#include "vec4.h" + +#include "AABB.h" +#include "Rectangle.h" + +#include "tvec2.h" + +#include "mat4.h" + +#include "Quaternion.h" + +namespace sp { namespace maths { + + typedef tvec2 ivec2; + typedef tvec2 uvec2; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/maths/maths_func.h b/Sparky-core/src/sp/maths/maths_func.h new file mode 100644 index 00000000..d8954db8 --- /dev/null +++ b/Sparky-core/src/sp/maths/maths_func.h @@ -0,0 +1,86 @@ +#pragma once + +#include "sp/Common.h" + +#include + +#define SP_PI 3.14159265358f + +namespace sp { namespace maths { + + SP_API inline float toRadians(float degrees) + { + return (float)(degrees * (SP_PI / 180.0f)); + } + + SP_API inline float toDegrees(float radians) + { + return (float)(radians * (180.0f / SP_PI)); + } + + SP_API inline int32 sign(float value) + { + return (value > 0) - (value < 0); + } + + SP_API inline float sin(float angle) + { + return ::sin(angle); + } + + SP_API inline float cos(float angle) + { + return ::cos(angle); + } + + SP_API inline float tan(float angle) + { + return ::tan(angle); + } + + SP_API inline float sqrt(float value) + { + return ::sqrt(value); + } + + SP_API inline float rsqrt(float value) + { + return 1.0f / ::sqrt(value); + } + + SP_API inline float asin(float value) + { + return ::asin(value); + } + + SP_API inline float acos(float value) + { + return ::acos(value); + } + + SP_API inline float atan(float value) + { + return ::atan(value); + } + + SP_API inline float atan2(float y, float x) + { + return ::atan2(y, x); + } + + SP_API inline float _min(float value, float minimum) + { + return (value < minimum) ? minimum : value; + } + + SP_API inline float _max(float value, float maximum) + { + return (value > maximum) ? maximum : value; + } + + SP_API inline float clamp(float value, float minimum, float maximum) + { + return (value > minimum) ? (value < maximum) ? value : maximum : minimum; + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/maths/tvec2.h b/Sparky-core/src/sp/maths/tvec2.h new file mode 100644 index 00000000..4104aafe --- /dev/null +++ b/Sparky-core/src/sp/maths/tvec2.h @@ -0,0 +1,154 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" + +namespace sp { namespace maths { + + template + struct tvec2 + { + T x, y; + + tvec2(); + tvec2(const T& x, const T& y); + + tvec2& Add(const tvec2& other); + tvec2& Subtract(const tvec2& other); + tvec2& Multiply(const tvec2& other); + tvec2& Divide(const tvec2& other); + + friend tvec2 operator+(tvec2 left, const tvec2& right); + friend tvec2 operator-(tvec2 left, const tvec2& right); + friend tvec2 operator*(tvec2 left, const tvec2& right); + friend tvec2 operator/(tvec2 left, const tvec2& right); + + bool operator==(const tvec2& other); + bool operator!=(const tvec2& other); + + tvec2& operator+=(const tvec2& other); + tvec2& operator-=(const tvec2& other); + tvec2& operator*=(const tvec2& other); + tvec2& operator/=(const tvec2& other); + + friend std::ostream& operator<<(std::ostream& stream, const tvec2& vector); + }; + + template + tvec2::tvec2() + { + x = 0; + y = 0; + } + + template + tvec2::tvec2(const T& x, const T& y) + { + this->x = x; + this->y = y; + } + + template + tvec2& tvec2::Add(const tvec2& other) + { + x += other.x; + y += other.y; + + return *this; + } + + template + tvec2& tvec2::Subtract(const tvec2& other) + { + x -= other.x; + y -= other.y; + + return *this; + } + + template + tvec2& tvec2::Multiply(const tvec2& other) + { + x *= other.x; + y *= other.y; + + return *this; + } + + template + tvec2& tvec2::Divide(const tvec2& other) + { + x /= other.x; + y /= other.y; + + return *this; + } + + template + tvec2 operator+(tvec2 left, const tvec2& right) + { + return left.Add(right); + } + + template + tvec2 operator-(tvec2 left, const tvec2& right) + { + return left.Subtract(right); + } + + template + tvec2 operator*(tvec2 left, const tvec2& right) + { + return left.Multiply(right); + } + + template + tvec2 operator/(tvec2 left, const tvec2& right) + { + return left.Divide(right); + } + + template + tvec2& tvec2::operator+=(const tvec2& other) + { + return Add(other); + } + + template + tvec2& tvec2::operator-=(const tvec2& other) + { + return Subtract(other); + } + + template + tvec2& tvec2::operator*=(const tvec2& other) + { + return Multiply(other); + } + + template + tvec2& tvec2::operator/=(const tvec2& other) + { + return Divide(other); + } + + template + bool tvec2::operator==(const tvec2& other) + { + return x == other.x && y == other.y; + } + + template + bool tvec2::operator!=(const tvec2& other) + { + return !(*this == other); + } + + template + std::ostream& operator<<(std::ostream& stream, const tvec2& vector) + { + stream << "tvec2: (" << vector.x << ", " << vector.y << ")"; + return stream; + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/maths/vec2.cpp b/Sparky-core/src/sp/maths/vec2.cpp new file mode 100644 index 00000000..771b6475 --- /dev/null +++ b/Sparky-core/src/sp/maths/vec2.cpp @@ -0,0 +1,239 @@ +#include "sp/sp.h" +#include "vec2.h" + +#include + +namespace sp { namespace maths { + + vec2::vec2() + : x(0.0f), y(0.0f) + { + } + + vec2::vec2(float scalar) + : x(scalar), y(scalar) + { + } + + vec2::vec2(float x, float y) + : x(x), y(y) + { + } + + vec2::vec2(const vec3& vector) + { + this->x = vector.x; + this->y = vector.y; + } + + vec2& vec2::Add(const vec2& other) + { + x += other.x; + y += other.y; + + return *this; + } + + vec2& vec2::Subtract(const vec2& other) + { + x -= other.x; + y -= other.y; + + return *this; + } + + vec2& vec2::Multiply(const vec2& other) + { + x *= other.x; + y *= other.y; + + return *this; + } + + vec2& vec2::Divide(const vec2& other) + { + x /= other.x; + y /= other.y; + + return *this; + } + + vec2& vec2::Add(float value) + { + x += value; + y += value; + + return *this; + } + + vec2& vec2::Subtract(float value) + { + x -= value; + y -= value; + + return *this; + } + + vec2& vec2::Multiply(float value) + { + x *= value; + y *= value; + + return *this; + } + + vec2& vec2::Divide(float value) + { + x /= value; + y /= value; + + return *this; + } + + vec2 operator+(vec2 left, const vec2& right) + { + return left.Add(right); + } + + vec2 operator-(vec2 left, const vec2& right) + { + return left.Subtract(right); + } + + vec2 operator*(vec2 left, const vec2& right) + { + return left.Multiply(right); + } + + vec2 operator/(vec2 left, const vec2& right) + { + return left.Divide(right); + } + + vec2 operator+(vec2 left, float value) + { + return vec2(left.x + value, left.y + value); + } + + vec2 operator-(vec2 left, float value) + { + return vec2(left.x - value, left.y - value); + } + + vec2 operator*(vec2 left, float value) + { + return vec2(left.x * value, left.y * value); + } + + vec2 operator/(vec2 left, float value) + { + return vec2(left.x / value, left.y / value); + } + + vec2& vec2::operator+=(const vec2& other) + { + return Add(other); + } + + vec2& vec2::operator-=(const vec2& other) + { + return Subtract(other); + } + + vec2& vec2::operator*=(const vec2& other) + { + return Multiply(other); + } + + vec2& vec2::operator/=(const vec2& other) + { + return Divide(other); + } + + vec2& vec2::operator+=(float value) + { + return Add(value); + } + + vec2& vec2::operator-=(float value) + { + return Subtract(value); + } + + vec2& vec2::operator*=(float value) + { + return Multiply(value); + } + + vec2& vec2::operator/=(float value) + { + return Divide(value); + } + + bool vec2::operator==(const vec2& other) const + { + return x == other.x && y == other.y; + } + + bool vec2::operator!=(const vec2& other) const + { + return !(*this == other); + } + + bool vec2::operator<(const vec2& other) const + { + return x < other.x && y < other.y; + } + + bool vec2::operator<=(const vec2& other) const + { + return x <= other.x && y <= other.y; + } + + bool vec2::operator>(const vec2& other) const + { + return x > other.x && y > other.y; + } + + bool vec2::operator>=(const vec2& other) const + { + return x >= other.x && y >= other.y; + } + + float vec2::Distance(const vec2& other) const + { + float a = x - other.x; + float b = y - other.y; + return sqrt(a * a + b * b); + } + + float vec2::Dot(const vec2& other) const + { + return x * other.x + y * other.y; + } + + float vec2::Magnitude() const + { + return sqrt(x * x + y * y); + } + + vec2 vec2::Normalise() const + { + float length = Magnitude(); + return vec2(x / length, y / length); + } + + String vec2::ToString() const + { + std::stringstream result; + result << "vec2: (" << x << ", " << y << ")"; + return result.str(); + } + + std::ostream& operator<<(std::ostream& stream, const vec2& vector) + { + stream << vector.ToString(); + return stream; + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/maths/vec2.h b/Sparky-core/src/sp/maths/vec2.h new file mode 100644 index 00000000..ebeed5ec --- /dev/null +++ b/Sparky-core/src/sp/maths/vec2.h @@ -0,0 +1,68 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" +#include "sp/String.h" + +#include "vec3.h" + +namespace sp { namespace maths { + + struct SP_API vec2 + { + float x, y; + + vec2(); + vec2(float scalar); + vec2(float x, float y); + vec2(const vec3& vector); + + vec2& Add(const vec2& other); + vec2& Subtract(const vec2& other); + vec2& Multiply(const vec2& other); + vec2& Divide(const vec2& other); + + vec2& Add(float value); + vec2& Subtract(float value); + vec2& Multiply(float value); + vec2& Divide(float value); + + friend vec2 operator+(vec2 left, const vec2& right); + friend vec2 operator-(vec2 left, const vec2& right); + friend vec2 operator*(vec2 left, const vec2& right); + friend vec2 operator/(vec2 left, const vec2& right); + + friend vec2 operator+(vec2 left, float value); + friend vec2 operator-(vec2 left, float value); + friend vec2 operator*(vec2 left, float value); + friend vec2 operator/(vec2 left, float value); + + bool operator==(const vec2& other) const; + bool operator!=(const vec2& other) const; + + vec2& operator+=(const vec2& other); + vec2& operator-=(const vec2& other); + vec2& operator*=(const vec2& other); + vec2& operator/=(const vec2& other); + + vec2& operator+=(float value); + vec2& operator-=(float value); + vec2& operator*=(float value); + vec2& operator/=(float value); + + bool operator<(const vec2& other) const; + bool operator<=(const vec2& other) const; + bool operator>(const vec2& other) const; + bool operator>=(const vec2& other) const; + + float Magnitude() const; + vec2 Normalise() const; + float Distance(const vec2& other) const; + float Dot(const vec2& other) const; + + String ToString() const; + + friend std::ostream& operator<<(std::ostream& stream, const vec2& vector); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/maths/vec3.cpp b/Sparky-core/src/sp/maths/vec3.cpp new file mode 100644 index 00000000..64645815 --- /dev/null +++ b/Sparky-core/src/sp/maths/vec3.cpp @@ -0,0 +1,312 @@ +#include "sp/sp.h" +#include "vec3.h" + +#include "vec2.h" +#include "vec4.h" +#include "mat4.h" + +namespace sp { namespace maths { + + vec3::vec3() + : x(0.0f), y(0.0f), z(0.0f) + { + } + + vec3::vec3(float scalar) + : x(scalar), y(scalar), z(scalar) + { + } + + vec3::vec3(float x, float y, float z) + : x(x), y(y), z(z) + { + } + + vec3::vec3(const vec2& other) + : x(other.x), y(other.y), z(0.0f) + { + } + + vec3::vec3(float x, float y) + : x(x), y(y), z(0.0f) + { + } + + vec3::vec3(const vec4& other) + : x(other.x), y(other.y), z(other.z) + { + } + + vec3 vec3::Up() + { + return vec3(0.0f, 1.0f, 0.0f); + } + + vec3 vec3::Down() + { + return vec3(0.0f, -1.0f, 0.0f); + } + + vec3 vec3::Left() + { + return vec3(-1.0f, 0.0f, 0.0f); + } + + vec3 vec3::Right() + { + return vec3(1.0f, 1.0f, 0.0f); + } + + vec3 vec3::Zero() + { + return vec3(0.0f, 0.0f, 0.0f); + } + + vec3 vec3::XAxis() + { + return vec3(1.0f, 0.0f, 0.0f); + } + + vec3 vec3::YAxis() + { + return vec3(0.0f, 1.0f, 0.0f); + } + + vec3 vec3::ZAxis() + { + return vec3(0.0f, 0.0f, 1.0f); + } + + vec3& vec3::Add(const vec3& other) + { + x += other.x; + y += other.y; + z += other.z; + + return *this; + } + + vec3& vec3::Subtract(const vec3& other) + { + x -= other.x; + y -= other.y; + z -= other.z; + + return *this; + } + + vec3& vec3::Multiply(const vec3& other) + { + x *= other.x; + y *= other.y; + z *= other.z; + + return *this; + } + + vec3& vec3::Divide(const vec3& other) + { + x /= other.x; + y /= other.y; + z /= other.z; + + return *this; + } + + vec3& vec3::Add(float other) + { + x += other; + y += other; + z += other; + + return *this; + } + + vec3& vec3::Subtract(float other) + { + x -= other; + y -= other; + z -= other; + + return *this; + } + + vec3& vec3::Multiply(float other) + { + x *= other; + y *= other; + z *= other; + + return *this; + } + + vec3& vec3::Divide(float other) + { + x /= other; + y /= other; + z /= other; + + return *this; + } + + vec3 vec3::Multiply(const mat4& transform) const + { + return vec3( + transform.rows[0].x * x + transform.rows[0].y * y + transform.rows[0].z * z + transform.rows[0].w, + transform.rows[1].x * x + transform.rows[1].y * y + transform.rows[1].z * z + transform.rows[1].w, + transform.rows[2].x * x + transform.rows[2].y * y + transform.rows[2].z * z + transform.rows[2].w + ); + } + + vec3 operator+(vec3 left, const vec3& right) + { + return left.Add(right); + } + + vec3 operator-(vec3 left, const vec3& right) + { + return left.Subtract(right); + } + + vec3 operator*(vec3 left, const vec3& right) + { + return left.Multiply(right); + } + + vec3 operator/(vec3 left, const vec3& right) + { + return left.Divide(right); + } + + vec3 operator+(vec3 left, float right) + { + return left.Add(right); + } + + vec3 operator-(vec3 left, float right) + { + return left.Subtract(right); + } + + vec3 operator*(vec3 left, float right) + { + return left.Multiply(right); + } + + vec3 operator/(vec3 left, float right) + { + return left.Divide(right); + } + + vec3& vec3::operator+=(const vec3& other) + { + return Add(other); + } + + vec3& vec3::operator-=(const vec3& other) + { + return Subtract(other); + } + + vec3& vec3::operator*=(const vec3& other) + { + return Multiply(other); + } + + vec3& vec3::operator/=(const vec3& other) + { + return Divide(other); + } + + vec3& vec3::operator+=(float other) + { + return Add(other); + } + + vec3& vec3::operator-=(float other) + { + return Subtract(other); + } + + vec3& vec3::operator*=(float other) + { + return Multiply(other); + } + + vec3& vec3::operator/=(float other) + { + return Divide(other); + } + + bool vec3::operator<(const vec3& other) const + { + return x < other.x && y < other.y && z < other.z; + } + + bool vec3::operator<=(const vec3& other) const + { + return x <= other.x && y <= other.y && z <= other.z; + } + + bool vec3::operator>(const vec3& other) const + { + return x > other.x && y > other.y && z > other.z; + } + + bool vec3::operator>=(const vec3& other) const + { + return x >= other.x && y >= other.y && z >= other.z; + } + + bool vec3::operator==(const vec3& other) const + { + return x == other.x && y == other.y && z == other.z; + } + + bool vec3::operator!=(const vec3& other) const + { + return !(*this == other); + } + + vec3 operator-(const vec3& vector) + { + return vec3(-vector.x, -vector.y, -vector.z); + } + + vec3 vec3::Cross(const vec3& other) const + { + return vec3(y * other.z - z * other.y, z * other.x - x * other.z, x * other.y - y * other.x); + } + + float vec3::Dot(const vec3& other) const + { + return x * other.x + y * other.y + z * other.z; + } + + float vec3::Magnitude() const + { + return sqrt(x * x + y * y + z * z); + } + + vec3 vec3::Normalize() const + { + float length = Magnitude(); + return vec3(x / length, y / length, z / length); + } + + float vec3::Distance(const vec3& other) const + { + float a = x - other.x; + float b = y - other.y; + float c = z - other.z; + return sqrt(a * a + b * b + c * c); + } + + std::ostream& operator<<(std::ostream& stream, const vec3& vector) + { + stream << "vec3: (" << vector.x << ", " << vector.y << ", " << vector.z << ")"; + return stream; + } + + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/maths/vec3.h b/Sparky-core/src/sp/maths/vec3.h new file mode 100644 index 00000000..14561ae4 --- /dev/null +++ b/Sparky-core/src/sp/maths/vec3.h @@ -0,0 +1,87 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/Common.h" + +#include "sp/Types.h" + +namespace sp { namespace maths { + + struct vec2; + struct vec4; + struct mat4; + + struct SP_API vec3 + { + float x, y, z; + + vec3(); + vec3(float scalar); + vec3(float x, float y, float z); + vec3(const vec2& other); + vec3(float x, float y); + vec3(const vec4& other); + + static vec3 Up(); + static vec3 Down(); + static vec3 Left(); + static vec3 Right(); + static vec3 Zero(); + + static vec3 XAxis(); + static vec3 YAxis(); + static vec3 ZAxis(); + + vec3& Add(const vec3& other); + vec3& Subtract(const vec3& other); + vec3& Multiply(const vec3& other); + vec3& Divide(const vec3& other); + + vec3& Add(float other); + vec3& Subtract(float other); + vec3& Multiply(float other); + vec3& Divide(float other); + + vec3 Multiply(const mat4& transform) const; + + friend vec3 operator+(vec3 left, const vec3& right); + friend vec3 operator-(vec3 left, const vec3& right); + friend vec3 operator*(vec3 left, const vec3& right); + friend vec3 operator/(vec3 left, const vec3& right); + + friend vec3 operator+(vec3 left, float right); + friend vec3 operator-(vec3 left, float right); + friend vec3 operator*(vec3 left, float right); + friend vec3 operator/(vec3 left, float right); + + bool operator==(const vec3& other) const; + bool operator!=(const vec3& other) const; + + vec3& operator+=(const vec3& other); + vec3& operator-=(const vec3& other); + vec3& operator*=(const vec3& other); + vec3& operator/=(const vec3& other); + + vec3& operator+=(float other); + vec3& operator-=(float other); + vec3& operator*=(float other); + vec3& operator/=(float other); + + bool operator<(const vec3& other) const; + bool operator<=(const vec3& other) const; + bool operator>(const vec3& other) const; + bool operator>=(const vec3& other) const; + + friend vec3 operator-(const vec3& vector); + + vec3 Cross(const vec3& other) const; + float Dot(const vec3& other) const; + + float Magnitude() const; + vec3 Normalize() const; + float Distance(const vec3& other) const; + + friend std::ostream& operator<<(std::ostream& stream, const vec3& vector); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/maths/vec4.cpp b/Sparky-core/src/sp/maths/vec4.cpp new file mode 100644 index 00000000..b7c921fe --- /dev/null +++ b/Sparky-core/src/sp/maths/vec4.cpp @@ -0,0 +1,135 @@ +#include "sp/sp.h" +#include "vec4.h" + +#include "mat4.h" + +namespace sp { namespace maths { + + vec4::vec4(float scalar) + : x(scalar), y(scalar), z(scalar), w(scalar) + { + } + + vec4::vec4(float x, float y, float z, float w) + : x(x), y(y), z(z), w(w) + { + } + + vec4::vec4(const vec3& xyz, float w) + : x(xyz.x), y(xyz.y), z(xyz.z), w(w) + { + } + + vec4& vec4::Add(const vec4& other) + { + x += other.x; + y += other.y; + z += other.z; + w += other.w; + + return *this; + } + + vec4& vec4::Subtract(const vec4& other) + { + x -= other.x; + y -= other.y; + z -= other.z; + w -= other.w; + + return *this; + } + + vec4& vec4::Multiply(const vec4& other) + { + x *= other.x; + y *= other.y; + z *= other.z; + w *= other.w; + + return *this; + } + + vec4& vec4::Divide(const vec4& other) + { + x /= other.x; + y /= other.y; + z /= other.z; + w /= other.w; + + return *this; + } + + vec4 vec4::Multiply(const mat4& transform) const + { + return vec4( + transform.rows[0].x * x + transform.rows[0].y * y + transform.rows[0].z * z + transform.rows[0].w * w, + transform.rows[1].x * x + transform.rows[1].y * y + transform.rows[1].z * z + transform.rows[1].w * w, + transform.rows[2].x * x + transform.rows[2].y * y + transform.rows[2].z * z + transform.rows[2].w * w, + transform.rows[3].x * x + transform.rows[3].y * y + transform.rows[3].z * z + transform.rows[3].w * w + ); + } + + vec4 operator+(vec4 left, const vec4& right) + { + return left.Add(right); + } + + vec4 operator-(vec4 left, const vec4& right) + { + return left.Subtract(right); + } + + vec4 operator*(vec4 left, const vec4& right) + { + return left.Multiply(right); + } + + vec4 operator/(vec4 left, const vec4& right) + { + return left.Divide(right); + } + + vec4& vec4::operator+=(const vec4& other) + { + return Add(other); + } + + vec4& vec4::operator-=(const vec4& other) + { + return Subtract(other); + } + + vec4& vec4::operator*=(const vec4& other) + { + return Multiply(other); + } + + vec4& vec4::operator/=(const vec4& other) + { + return Divide(other); + } + + bool vec4::operator==(const vec4& other) + { + return x == other.x && y == other.y && z == other.z && w == other.w; + } + + bool vec4::operator!=(const vec4& other) + { + return !(*this == other); + } + + float vec4::Dot(const vec4& other) + { + return x * other.x + y * other.y + z * other.z + w * other.w; + } + + std::ostream& operator<<(std::ostream& stream, const vec4& vector) + { + stream << "vec4: (" << vector.x << ", " << vector.y << ", " << vector.z << ", " << vector.w << ")"; + return stream; + } + + +} } \ No newline at end of file diff --git a/Sparky-core/src/maths/vec4.h b/Sparky-core/src/sp/maths/vec4.h similarity index 57% rename from Sparky-core/src/maths/vec4.h rename to Sparky-core/src/sp/maths/vec4.h index 852b123e..f7c40845 100644 --- a/Sparky-core/src/maths/vec4.h +++ b/Sparky-core/src/sp/maths/vec4.h @@ -1,20 +1,29 @@ #pragma once -#include +#include "sp/sp.h" +#include "sp/Common.h" -namespace sparky { namespace maths { +#include "vec3.h" - struct vec4 +namespace sp { namespace maths { + + struct mat4; + + struct SP_API vec4 { float x, y, z, w; vec4() = default; - vec4(const float& x, const float& y, const float& z, const float& w); + vec4(float scalar); + vec4(float x, float y, float z, float w); + vec4(const vec3& xyz, float w); - vec4& add(const vec4& other); - vec4& subtract(const vec4& other); - vec4& multiply(const vec4& other); - vec4& divide(const vec4& other); + vec4& Add(const vec4& other); + vec4& Subtract(const vec4& other); + vec4& Multiply(const vec4& other); + vec4& Divide(const vec4& other); + + vec4 Multiply(const mat4& transform) const; friend vec4 operator+(vec4 left, const vec4& right); friend vec4 operator-(vec4 left, const vec4& right); @@ -29,6 +38,8 @@ namespace sparky { namespace maths { vec4& operator*=(const vec4& other); vec4& operator/=(const vec4& other); + float Dot(const vec4& other); + friend std::ostream& operator<<(std::ostream& stream, const vec4& vector); }; diff --git a/Sparky-core/src/sp/platform/directx/DXCommon.h b/Sparky-core/src/sp/platform/directx/DXCommon.h new file mode 100644 index 00000000..6c5ce3ad --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXCommon.h @@ -0,0 +1,47 @@ +#pragma once + +#include +#include + +static bool CheckD3DError(HRESULT result) +{ + if (result == S_OK) + return true; + + switch (result) + { + case D3D11_ERROR_FILE_NOT_FOUND: + break; + case D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS: + break; + case D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS: + break; + case D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD: + break; + case DXGI_ERROR_INVALID_CALL: + break; + case DXGI_ERROR_WAS_STILL_DRAWING: + break; + case E_FAIL: + break; + case E_INVALIDARG: + break; + case E_OUTOFMEMORY: + break; + case E_NOTIMPL: + break; + case S_FALSE: + break; + } + + return false; +} + +#ifdef SP_DEBUG + #define DXCall(x) do { \ + HRESULT __hr = x; \ + SP_ASSERT(CheckD3DError(__hr)); \ + } while(false) +#else + #define DXCall(x) x +#endif \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/directx/DXContext.cpp b/Sparky-core/src/sp/platform/directx/DXContext.cpp new file mode 100644 index 00000000..5ddfda67 --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXContext.cpp @@ -0,0 +1,168 @@ +#include "sp/sp.h" +#include "DXContext.h" + +#include +#include + +#include "sp/utils/Log.h" + +namespace sp { namespace graphics { namespace API { + +#define ReleaseCOM(x) \ + if (x) \ + { \ + x->Release(); \ + x = nullptr; \ + } + + D3DContext::D3DContext(WindowProperties properties, void* deviceContext) + : m_DebugLayerEnabled(true) + { + m_RenderTargetView = nullptr; + m_DepthStencilView = nullptr; + m_DepthStencilBuffer = nullptr; + + m_Properties = properties; + InitD3D((HWND)deviceContext); + } + + void D3DContext::InitD3D(HWND hWnd) + { + m_MSAAEnabled = true; + + HRESULT hr = D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, m_DebugLayerEnabled ? D3D11_CREATE_DEVICE_DEBUG : D3D11_CREATE_DEVICE_SINGLETHREADED, NULL, NULL, D3D11_SDK_VERSION, &dev, &m_D3DFeatureLevel, &devcon); + dev->CheckMultisampleQualityLevels(DXGI_FORMAT_R8G8B8A8_UNORM, 4, &m_MSAAQuality); + // assert(m_MSAAQuality > 0); + + DXGI_SWAP_CHAIN_DESC scd; + ZeroMemory(&scd, sizeof(DXGI_SWAP_CHAIN_DESC)); + + scd.BufferDesc.Width = m_Properties.width; + scd.BufferDesc.Height = m_Properties.height; + scd.BufferDesc.RefreshRate.Numerator = 60; + scd.BufferDesc.RefreshRate.Denominator = 1; + scd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; + + scd.SampleDesc.Count = m_MSAAEnabled ? 4 : 1; + scd.SampleDesc.Quality = m_MSAAEnabled ? (m_MSAAQuality - 1) : 0; + + scd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + scd.BufferCount = 3; + scd.OutputWindow = hWnd; + scd.Windowed = !m_Properties.fullscreen; + scd.SwapEffect = DXGI_SWAP_EFFECT_DISCARD; + scd.Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH; + + IDXGIDevice* dxgiDevice = 0; + IDXGIAdapter* dxgiAdapter = 0; + IDXGIFactory* dxgiFactory = 0; + + dev->QueryInterface(__uuidof(IDXGIDevice), (void**)&dxgiDevice); + dxgiDevice->GetParent(__uuidof(IDXGIAdapter), (void**)&dxgiAdapter); + dxgiAdapter->GetParent(__uuidof(IDXGIFactory), (void**)&dxgiFactory); + dxgiFactory->CreateSwapChain(dev, &scd, &swapchain); + + dxgiFactory->Release(); + dxgiAdapter->Release(); + dxgiDevice->Release(); + + if (m_DebugLayerEnabled) + { + dev->QueryInterface(__uuidof(ID3D11Debug), reinterpret_cast(&m_DebugLayer)); + m_DebugLayer->ReportLiveDeviceObjects(D3D11_RLDO_SUMMARY); + + ID3D11InfoQueue* infoQueue; + dev->QueryInterface(__uuidof(ID3D11InfoQueue), reinterpret_cast(&infoQueue)); + D3D11_MESSAGE_ID hide[] = { D3D11_MESSAGE_ID_DEVICE_DRAW_SAMPLER_NOT_SET }; + D3D11_INFO_QUEUE_FILTER filter; + memset(&filter, 0, sizeof(filter)); + filter.DenyList.NumIDs = 1; + filter.DenyList.pIDList = hide; + infoQueue->AddStorageFilterEntries(&filter); + } + + Resize(); + } + + void D3DContext::Resize() + { + uint width = m_Properties.width; + uint height = m_Properties.height; + + ReleaseCOM(m_RenderTargetView); + ReleaseCOM(m_DepthStencilView); + ReleaseCOM(m_DepthStencilBuffer); + + swapchain->ResizeBuffers(1, width, height, DXGI_FORMAT_R8G8B8A8_UNORM, 0); + + ID3D11Texture2D *backBuffer; + swapchain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&backBuffer); + dev->CreateRenderTargetView(backBuffer, NULL, &m_RenderTargetView); + backBuffer->Release(); + + D3D11_TEXTURE2D_DESC depthStencilDesc; + depthStencilDesc.Width = width; + depthStencilDesc.Height = height; + depthStencilDesc.MipLevels = 1; + depthStencilDesc.ArraySize = 1; + depthStencilDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT; + + depthStencilDesc.SampleDesc.Count = m_MSAAEnabled ? 4 : 1; + depthStencilDesc.SampleDesc.Quality = m_MSAAEnabled ? (m_MSAAQuality - 1) : 0; + depthStencilDesc.Usage = D3D11_USAGE_DEFAULT; + depthStencilDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL; + depthStencilDesc.CPUAccessFlags = 0; + depthStencilDesc.MiscFlags = 0; + + dev->CreateTexture2D(&depthStencilDesc, 0, &m_DepthStencilBuffer); + dev->CreateDepthStencilView(m_DepthStencilBuffer, 0, &m_DepthStencilView); + SetRenderTargets(m_RenderTargetView, m_DepthStencilView); + + m_ScreenViewport.TopLeftX = 0; + m_ScreenViewport.TopLeftY = 0; + m_ScreenViewport.Width = (float)width; + m_ScreenViewport.Height = (float)height; + m_ScreenViewport.MinDepth = 0.0f; + m_ScreenViewport.MaxDepth = 1.0f; + devcon->RSSetViewports(1, &m_ScreenViewport); + + D3D11_RASTERIZER_DESC rasterDesc; + rasterDesc.AntialiasedLineEnable = false; + rasterDesc.CullMode = D3D11_CULL_NONE; + rasterDesc.DepthBias = 0; + rasterDesc.DepthBiasClamp = 0.0f; + rasterDesc.DepthClipEnable = true; + rasterDesc.FillMode = D3D11_FILL_SOLID; + rasterDesc.FrontCounterClockwise = true; + rasterDesc.MultisampleEnable = false; + rasterDesc.ScissorEnable = false; + rasterDesc.SlopeScaledDepthBias = 0.0f; + + ID3D11RasterizerState* rs; + dev->CreateRasterizerState(&rasterDesc, &rs); + devcon->RSSetState(rs); + ReleaseCOM(rs); + } + + void D3DContext::SetRenderTargets(ID3D11RenderTargetView* target, ID3D11DepthStencilView* view) + { + devcon->OMSetRenderTargets(1, &target, view); + } + + void D3DContext::Present() + { + swapchain->Present(m_Properties.vsync, 0); + } + + String D3DContext::GetD3DVersionStringInternal() const + { + switch (m_D3DFeatureLevel) + { + case D3D_FEATURE_LEVEL_11_0: return "11"; + case D3D_FEATURE_LEVEL_10_1: return "10.1"; + case D3D_FEATURE_LEVEL_10_0: return "10"; + } + return "Unknown"; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/directx/DXContext.h b/Sparky-core/src/sp/platform/directx/DXContext.h new file mode 100644 index 00000000..b98382ca --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXContext.h @@ -0,0 +1,56 @@ +#pragma once + +#include "sp/graphics/API/Context.h" +#include "DXCommon.h" + +namespace sp { namespace graphics { namespace API { + + class D3DContext : public Context + { + public: + IDXGISwapChain* swapchain; + ID3D11Device* dev; + ID3D11DeviceContext* devcon; + ID3D11RenderTargetView* backbuffer; + private: + D3D_FEATURE_LEVEL m_D3DFeatureLevel; + uint m_MSAAQuality; + bool m_MSAAEnabled; + bool m_DebugLayerEnabled; + + ID3D11RenderTargetView* m_RenderTargetView; + ID3D11DepthStencilView* m_DepthStencilView; + D3D11_VIEWPORT m_ScreenViewport; + ID3D11Texture2D* m_DepthStencilBuffer; + + ID3D11Debug* m_DebugLayer; + + // Temp + WindowProperties m_Properties; + public: + D3DContext(WindowProperties properties, void* deviceContext); + + void Present(); + private: + void InitD3D(HWND hWnd); + void Resize(); + + void SetRenderTargets(ID3D11RenderTargetView* target, ID3D11DepthStencilView* view); + + String GetD3DVersionStringInternal() const; + public: + inline static D3DContext* GetContext() { return (D3DContext*)s_Context; } + + inline static IDXGISwapChain* GetSwapChain() { return GetContext()->swapchain; } + inline static ID3D11Device* GetDevice() { return GetContext()->dev; } + inline static ID3D11DeviceContext* GetDeviceContext() { return GetContext()->devcon; } + inline static ID3D11RenderTargetView* GetBackBuffer() { return GetContext()->m_RenderTargetView; } + + inline static ID3D11DepthStencilView* GetDepthStencilBuffer() { return GetContext()->m_DepthStencilView; } + + inline static String GetD3DVersionString() { return Get()->GetD3DVersionStringInternal(); } + public: + inline static D3DContext* Get() { return (D3DContext*)s_Context; } + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/directx/DXFramebuffer2D.cpp b/Sparky-core/src/sp/platform/directx/DXFramebuffer2D.cpp new file mode 100644 index 00000000..c008428b --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXFramebuffer2D.cpp @@ -0,0 +1,42 @@ +#include "sp/sp.h" +#include "DXFramebuffer2D.h" + +#include "sp/system/Memory.h" +#include "sp/utils/Log.h" + +namespace sp { namespace graphics { + + using namespace API; + + D3DFramebuffer2D::D3DFramebuffer2D(uint width, uint height) + : m_Width(width), m_Height(height) + { + Init(); + } + + D3DFramebuffer2D::~D3DFramebuffer2D() + { + + } + + void D3DFramebuffer2D::Init() + { + + } + + void D3DFramebuffer2D::Bind() const + { + + } + + void D3DFramebuffer2D::Unbind() const + { + + } + + void D3DFramebuffer2D::Clear() + { + + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/directx/DXFramebuffer2D.h b/Sparky-core/src/sp/platform/directx/DXFramebuffer2D.h new file mode 100644 index 00000000..b3181f7b --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXFramebuffer2D.h @@ -0,0 +1,29 @@ +#pragma once + +#include "sp/graphics/API/Framebuffer2D.h" + +namespace sp { namespace graphics { + + class D3DFramebuffer2D : public Framebuffer2D + { + private: + uint m_Width, m_Height; + maths::vec4 m_ClearColor; + public: + D3DFramebuffer2D(uint width, uint height); + ~D3DFramebuffer2D(); + + void Bind() const override; + void Unbind() const override; + void Clear() override; + + inline uint GetWidth() const override { return m_Width; } + inline uint GetHeight() const override { return m_Height; } + + inline API::Texture* GetTexture() const { return nullptr; } + inline void SetClearColor(const maths::vec4& color) override { m_ClearColor = color; } + private: + void Init(); + }; + +} } diff --git a/Sparky-core/src/sp/platform/directx/DXFramebufferDepth.cpp b/Sparky-core/src/sp/platform/directx/DXFramebufferDepth.cpp new file mode 100644 index 00000000..ee44ed19 --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXFramebufferDepth.cpp @@ -0,0 +1,33 @@ +#include "sp/sp.h" +#include "DXFramebufferDepth.h" + +namespace sp { namespace graphics { + + D3DFramebufferDepth::D3DFramebufferDepth(uint width, uint height) + : m_Width(width), m_Height(height) + { + Init(); + } + + D3DFramebufferDepth::~D3DFramebufferDepth() + { + } + + void D3DFramebufferDepth::Init() + { + + } + + void D3DFramebufferDepth::Bind() const + { + } + + void D3DFramebufferDepth::Unbind() const + { + } + + void D3DFramebufferDepth::Clear() + { + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/directx/DXFramebufferDepth.h b/Sparky-core/src/sp/platform/directx/DXFramebufferDepth.h new file mode 100644 index 00000000..e420a48f --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXFramebufferDepth.h @@ -0,0 +1,27 @@ +#pragma once + +#include "sp/graphics/API/FramebufferDepth.h" + +namespace sp { namespace graphics { + + class D3DFramebufferDepth : public FramebufferDepth + { + private: + uint m_Width, m_Height; + public: + D3DFramebufferDepth(uint width, uint height); + ~D3DFramebufferDepth(); + + void Bind() const override; + void Unbind() const override; + void Clear() override; + + inline uint GetWidth() const override { return m_Width; } + inline uint GetHeight() const override { return m_Height; } + + inline API::Texture* GetTexture() const override { return nullptr; } + private: + void Init(); + }; + +} } diff --git a/Sparky-core/src/sp/platform/directx/DXIndexBuffer.cpp b/Sparky-core/src/sp/platform/directx/DXIndexBuffer.cpp new file mode 100644 index 00000000..e53e1ba9 --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXIndexBuffer.cpp @@ -0,0 +1,61 @@ +#include "sp/sp.h" +#include "DXIndexBuffer.h" + +#include "DXContext.h" + +namespace sp { namespace graphics { namespace API { + + D3DIndexBuffer::D3DIndexBuffer(uint16* data, uint count) + : m_Count(count) + { + D3D11_BUFFER_DESC ibd; + ZeroMemory(&ibd, sizeof(D3D11_BUFFER_DESC)); + ibd.Usage = D3D11_USAGE_IMMUTABLE; + ibd.ByteWidth = count * sizeof(uint16); + ibd.BindFlags = D3D11_BIND_INDEX_BUFFER; + ibd.CPUAccessFlags = 0; + ibd.MiscFlags = 0; + + D3D11_SUBRESOURCE_DATA ibInitData; + ibInitData.pSysMem = data; + HRESULT hr = D3DContext::GetDevice()->CreateBuffer(&ibd, &ibInitData, &m_Handle); + } + + D3DIndexBuffer::D3DIndexBuffer(uint* data, uint count) + : m_Count(count) + { + D3D11_BUFFER_DESC ibd; + ZeroMemory(&ibd, sizeof(D3D11_BUFFER_DESC)); + ibd.Usage = D3D11_USAGE_IMMUTABLE; + ibd.ByteWidth = count * sizeof(uint); + ibd.BindFlags = D3D11_BIND_INDEX_BUFFER; + ibd.CPUAccessFlags = 0; + ibd.MiscFlags = 0; + + D3D11_SUBRESOURCE_DATA ibInitData; + ibInitData.pSysMem = data; + HRESULT hr = D3DContext::GetDevice()->CreateBuffer(&ibd, &ibInitData, &m_Handle); + } + + D3DIndexBuffer::~D3DIndexBuffer() + { + // TODO + } + + void D3DIndexBuffer::Bind() const + { + D3DContext::GetDeviceContext()->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); + D3DContext::GetDeviceContext()->IASetIndexBuffer(m_Handle, DXGI_FORMAT_R32_UINT, 0); + } + + void D3DIndexBuffer::Unbind() const + { + // TODO + } + + uint D3DIndexBuffer::GetCount() const + { + return m_Count; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/directx/DXIndexBuffer.h b/Sparky-core/src/sp/platform/directx/DXIndexBuffer.h new file mode 100644 index 00000000..732562ce --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXIndexBuffer.h @@ -0,0 +1,26 @@ +#pragma once + +#include "sp/graphics/API/IndexBuffer.h" + +#include "DXCommon.h" + +namespace sp { namespace graphics { namespace API { + + class D3DIndexBuffer : public IndexBuffer + { + private: + ID3D11Buffer* m_Handle; + uint m_Count; + public: + D3DIndexBuffer(uint16* data, uint count); + D3DIndexBuffer(uint* data, uint count); + ~D3DIndexBuffer(); + + void Bind() const; + void Unbind() const; + + uint GetCount() const; + }; + + +} } } diff --git a/Sparky-core/src/sp/platform/directx/DXRenderer.cpp b/Sparky-core/src/sp/platform/directx/DXRenderer.cpp new file mode 100644 index 00000000..957b190e --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXRenderer.cpp @@ -0,0 +1,172 @@ +#include "sp/sp.h" +#include "DXRenderer.h" + +#include "sp/utils/Log.h" +#include "sp/system/MemoryManager.h" + +namespace sp { namespace graphics { + + using namespace API; + + std::vector D3DRenderer::s_BlendStates; + std::vector D3DRenderer::s_DepthStencilStates; + + D3DRenderer::D3DRenderer() + { + m_Context = API::D3DContext::Get(); + } + + void D3DRenderer::InitInternal() + { + CreateBlendStates(); + CreateDepthStencilStates(); + + SetDepthTesting(true); + SetBlendFunction(RendererBlendFunction::SOURCE_ALPHA, RendererBlendFunction::ONE_MINUS_SOURCE_ALPHA); + SetBlend(true); + + IDXGIDevice* dxgiDev; + D3DContext::GetDevice()->QueryInterface(__uuidof(IDXGIDevice), (void**)&dxgiDev); + IDXGIAdapter* adapter; + dxgiDev->GetAdapter(&adapter); + DXGI_ADAPTER_DESC desc; + adapter->GetDesc(&desc); + SP_WARN("----------------------------------"); + SP_WARN(" Direct3D ", D3DContext::GetD3DVersionString(), ":"); + SP_WARN(" ", desc.Description); + SP_WARN(" ", "VRAM: ", internal::MemoryManager::BytesToString(desc.DedicatedVideoMemory)); + SP_WARN("----------------------------------"); + + m_RendererTitle = "Direct3D " + D3DContext::GetD3DVersionString(); + } + + void D3DRenderer::CreateBlendStates() + { + { + D3D11_BLEND_DESC desc; + ZeroMemory(&desc, sizeof(D3D11_BLEND_DESC)); + desc.RenderTarget[0].BlendEnable = false; + desc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL; + + ID3D11BlendState* state; + DXCall(D3DContext::GetDevice()->CreateBlendState(&desc, &state)); + s_BlendStates.push_back(state); + } + { + D3D11_BLEND_DESC desc; + ZeroMemory(&desc, sizeof(D3D11_BLEND_DESC)); + desc.AlphaToCoverageEnable = false; + desc.IndependentBlendEnable = false; + + desc.RenderTarget[0].BlendEnable = true; + + desc.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA; + desc.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA; + desc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD; + desc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_SRC_ALPHA; + desc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_INV_SRC_ALPHA; + desc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD; + desc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL; + + ID3D11BlendState* state; + DXCall(D3DContext::GetDevice()->CreateBlendState(&desc, &state)); + s_BlendStates.push_back(state); + } + } + + void D3DRenderer::CreateDepthStencilStates() + { + { + D3D11_DEPTH_STENCIL_DESC desc; + desc.DepthEnable = true; + desc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ALL; + desc.DepthFunc = D3D11_COMPARISON_LESS_EQUAL; + desc.StencilEnable = true; + desc.StencilReadMask = 0xff; + desc.StencilWriteMask = 0xff; + + desc.FrontFace.StencilFailOp = D3D11_STENCIL_OP_KEEP; + desc.FrontFace.StencilDepthFailOp = D3D11_STENCIL_OP_KEEP; + desc.FrontFace.StencilPassOp = D3D11_STENCIL_OP_INCR_SAT; + desc.FrontFace.StencilFunc = D3D11_COMPARISON_ALWAYS; + + desc.BackFace.StencilFailOp = D3D11_STENCIL_OP_KEEP; + desc.BackFace.StencilDepthFailOp = D3D11_STENCIL_OP_KEEP; + desc.BackFace.StencilPassOp = D3D11_STENCIL_OP_KEEP; + desc.BackFace.StencilFunc = D3D11_COMPARISON_NEVER; + + ID3D11DepthStencilState* state; + DXCall(D3DContext::GetDevice()->CreateDepthStencilState(&desc, &state)); + s_DepthStencilStates.push_back(state); + } + { + D3D11_DEPTH_STENCIL_DESC desc; + desc.DepthEnable = false; + desc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ZERO; + desc.DepthFunc = D3D11_COMPARISON_ALWAYS; + desc.StencilEnable = true; + desc.StencilReadMask = 0xff; + desc.StencilWriteMask = 0xff; + + desc.FrontFace.StencilFailOp = D3D11_STENCIL_OP_KEEP; + desc.FrontFace.StencilDepthFailOp = D3D11_STENCIL_OP_KEEP; + desc.FrontFace.StencilPassOp = D3D11_STENCIL_OP_INCR_SAT; + desc.FrontFace.StencilFunc = D3D11_COMPARISON_ALWAYS; + + desc.BackFace.StencilFailOp = D3D11_STENCIL_OP_KEEP; + desc.BackFace.StencilDepthFailOp = D3D11_STENCIL_OP_KEEP; + desc.BackFace.StencilPassOp = D3D11_STENCIL_OP_KEEP; + desc.BackFace.StencilFunc = D3D11_COMPARISON_NEVER; + + ID3D11DepthStencilState* state; + DXCall(D3DContext::GetDevice()->CreateDepthStencilState(&desc, &state)); + s_DepthStencilStates.push_back(state); + } + } + + void D3DRenderer::ClearInternal(uint buffer) + { + float color[4] = { 0.0f, 0.0f, 0.0f, 1.0f }; + + if (buffer & RendererBufferType::RENDERER_BUFFER_COLOR) + D3DContext::GetDeviceContext()->ClearRenderTargetView(D3DContext::GetBackBuffer(), color); + if (buffer & RendererBufferType::RENDERER_BUFFER_DEPTH) + D3DContext::GetDeviceContext()->ClearDepthStencilView(D3DContext::GetDepthStencilBuffer(), D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0); + } + + void D3DRenderer::PresentInternal() + { + m_Context->Present(); + } + + void D3DRenderer::SetDepthTestingInternal(bool enabled) + { + D3DContext::GetDeviceContext()->OMSetDepthStencilState(enabled ? s_DepthStencilStates[0] : s_DepthStencilStates[1], NULL); + } + + void D3DRenderer::SetBlendInternal(bool enabled) + { + D3DContext::GetDeviceContext()->OMSetBlendState(enabled ? s_BlendStates[1] : s_BlendStates[0], NULL, 0xffffffff); + } + + void D3DRenderer::SetBlendFunctionInternal(RendererBlendFunction source, RendererBlendFunction destination) + { + // D3DContext::GetDeviceContext()->OMSetBlendState(s_BlendStates.front(), NULL, 0xffffffff); + } + + void D3DRenderer::SetBlendEquationInternal(RendererBlendFunction blendEquation) + { + + } + + void D3DRenderer::SetViewportInternal(uint x, uint y, uint width, uint height) + { + + } + + const String& D3DRenderer::GetTitleInternal() const + { + return m_RendererTitle; + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/directx/DXRenderer.h b/Sparky-core/src/sp/platform/directx/DXRenderer.h new file mode 100644 index 00000000..c4dfbfa1 --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXRenderer.h @@ -0,0 +1,38 @@ +#pragma once + +#include "sp/graphics/Renderer.h" +#include "DXContext.h" + +namespace sp { namespace graphics { + + class D3DRenderer : public Renderer + { + private: + static std::vector s_BlendStates; + static std::vector s_DepthStencilStates; + private: + API::D3DContext* m_Context; + String m_RendererTitle; + public: + D3DRenderer(); + protected: + void InitInternal() override; + + void ClearInternal(uint buffer) override; + void PresentInternal() override; + + void SetDepthTestingInternal(bool enabled) override; + void SetBlendInternal(bool enabled) override; + void SetViewportInternal(uint x, uint y, uint width, uint height) override; + + void SetBlendFunctionInternal(RendererBlendFunction source, RendererBlendFunction destination) override; + void SetBlendEquationInternal(RendererBlendFunction blendEquation) override; + + const String& GetTitleInternal() const override; + private: + void CreateBlendStates(); + void CreateDepthStencilStates(); + }; + + +} } diff --git a/Sparky-core/src/sp/platform/directx/DXShader.cpp b/Sparky-core/src/sp/platform/directx/DXShader.cpp new file mode 100644 index 00000000..e069283e --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXShader.cpp @@ -0,0 +1,445 @@ +#include "sp/sp.h" +#include "DXShader.h" + +#include "sp/system/Memory.h" +#include "sp/utils/Log.h" +#include "sp/utils/FileUtils.h" + +#include "DXContext.h" + +namespace sp { namespace graphics { namespace API { + + const D3DShader* D3DShader::s_CurrentlyBound = nullptr; + + bool D3DShader::TryCompile(const String& source, String& error) + { + D3DShaderErrorInfo info; + + if ( !Compile(source, "vs_4_0", "VSMain", info) ) + { + error += info.message; + return false; + } + + if ( !Compile(source, "ps_4_0", "PSMain", info) ) + { + error += info.message; + return false; + } + return true; + } + + bool D3DShader::TryCompileFromFile(const String& filepath, String& error) + { + String source = VFS::Get()->ReadTextFile(filepath); + return TryCompile(source, error); + } + + D3DShader::D3DShader(const String& name, const String& source) + : m_Name(name) + { + m_VSUserUniformBuffer = nullptr; + m_PSUserUniformBuffer = nullptr; + + Load(source); + Parse(source); + CreateBuffers(); + } + + D3DShader::~D3DShader() + { + m_Data.vertexShader->Release(); + m_Data.pixelShader->Release(); + } + + void D3DShader::Load(const String& source) + { + D3DShaderErrorInfo info; + m_Data.vs = Compile(source, "vs_4_0", "VSMain", info); + SP_ASSERT(m_Data.vs, info.profile, info.message); + m_Data.ps = Compile(source, "ps_4_0", "PSMain", info); + SP_ASSERT(m_Data.ps, info.profile, info.message); + D3DContext::GetDevice()->CreateVertexShader(m_Data.vs->GetBufferPointer(), m_Data.vs->GetBufferSize(), NULL, &m_Data.vertexShader); + D3DContext::GetDevice()->CreatePixelShader(m_Data.ps->GetBufferPointer(), m_Data.ps->GetBufferSize(), NULL, &m_Data.pixelShader); + } + + ID3DBlob* D3DShader::Compile(const String& source, const String& profile, const String& main, D3DShaderErrorInfo& info) + { + ID3DBlob* shaderBlob; + ID3DBlob* errorBlob; + HRESULT status = D3DCompile(source.c_str(), source.size(), NULL, NULL, NULL, main.c_str(), profile.c_str(), D3DCOMPILE_DEBUG, 0, &shaderBlob, &errorBlob); + if (status != S_OK) + info.message = "Unable to compile shader from source\n"; + if (errorBlob) + { + info.profile += profile + "\n"; + if (errorBlob->GetBufferSize()) + std::cout << "Shader Compile Errors" << std::endl << (const char*)errorBlob->GetBufferPointer() << std::endl; + errorBlob->Release(); + } + if (status == S_OK) + return shaderBlob; + return NULL; + } + + String D3DShader::RemoveComments(const String& source) + { + const char* str = source.c_str(); + + String result = source; + int32 startPos; + while ((startPos = FindStringPosition(result, "/*")) != -1) + { + int32 endPos = FindStringPosition(result, "*/"); + SP_ASSERT(endPos != -1); + result = RemoveStringRange(result, startPos, endPos - startPos + 2); + } + + while ((startPos = FindStringPosition(result, "//")) != -1) + { + int32 endPos = FindStringPosition(result, "\n", startPos); + SP_ASSERT(endPos != -1); + result = RemoveStringRange(result, startPos, endPos - startPos + 1); + } + + return result; + } + + void D3DShader::Parse(const String& source) + { + const char* token; + const char* str; + + String src = RemoveComments(source); + + str = src.c_str(); + while (token = FindToken(str, "struct")) + ParseStruct(GetBlock(token, &str)); + + str = src.c_str(); + while (token = FindToken(str, "cbuffer")) + ParseCBuffer(GetBlock(token, &str)); + + str = src.c_str(); + while (token = FindToken(str, "Texture2D")) + ParseTexture(GetStatement(token, &str)); + + str = src.c_str(); + while (token = FindToken(str, "TextureCube")) + ParseTexture(GetStatement(token, &str)); + + str = src.c_str(); + while (token = FindToken(str, "SamplerState")) + ParseSamplerState(GetStatement(token, &str)); + } + + void D3DShader::ParseStruct(const String& block) + { + std::vector tokens = Tokenize(block); + uint index = 0; + index++; // struct + String structName = tokens[index++]; + ShaderStruct* shaderStruct = spnew ShaderStruct(structName); + index++; // { + while (index < tokens.size()) + { + if (tokens[index] == "}") + break; + + String type = tokens[index++]; + String name = tokens[index++]; + + if (type == ":") // TODO: Temp + continue; + + // Strip ; from name if present + if (const char* s = strstr(name.c_str(), ";")) + name = String(name.c_str(), s - name.c_str()); + + ShaderUniformDeclaration* field = spnew D3DShaderUniformDeclaration(D3DShaderUniformDeclaration::StringToType(type), name); + shaderStruct->AddField(field); + } + m_Structs.push_back(shaderStruct); + } + + void D3DShader::ParseCBuffer(const String& block) + { + std::vector tokens = Tokenize(block); + + uint index = 1; + String bufferName = tokens[index++]; + uint reg = 0; + if (tokens[index++] == ":") // Register specified + { + String cbRegister = tokens[index++]; + reg = NextInt(cbRegister); + } + + D3DShaderUniformBufferDeclaration* buffer = nullptr; + + uint shaderType; + if (StartsWith(bufferName, "VS")) + shaderType = 0; + else if (StartsWith(bufferName, "PS")) + shaderType = 1; + else + SP_ASSERT(false); + + index++; // { + while (index < tokens.size()) + { + if (tokens[index] == "}") + break; + + String type = tokens[index++]; + String name = tokens[index++]; + + // Strip ; from name if present + if (const char* s = strstr(name.c_str(), ";")) + name = String(name.c_str(), s - name.c_str()); + + // TODO: Debug mode validation: make sure every single uniform in a system uniform buffer starts with sys_! + + if (buffer == nullptr) + { + buffer = new D3DShaderUniformBufferDeclaration(bufferName, reg, shaderType); + if (StartsWith(name, "sys_")) + { + switch (shaderType) + { + case 0: + m_VSUniformBuffers.push_back(buffer); + break; + case 1: + m_PSUniformBuffers.push_back(buffer); + break; + } + } + else + { + switch (shaderType) + { + case 0: + SP_ASSERT(m_VSUserUniformBuffer == nullptr); + m_VSUserUniformBuffer = buffer; + break; + case 1: + SP_ASSERT(m_PSUserUniformBuffer == nullptr); + m_PSUserUniformBuffer = buffer; + break; + } + } + } + D3DShaderUniformDeclaration::Type t = D3DShaderUniformDeclaration::StringToType(type); + D3DShaderUniformDeclaration* declaration = nullptr; + if (t == D3DShaderUniformDeclaration::Type::NONE) + { + // Find struct + ShaderStruct* s = FindStruct(type); + SP_ASSERT(s); + declaration = new D3DShaderUniformDeclaration(s, name); + } + else + { + declaration = new D3DShaderUniformDeclaration(t, name); + } + buffer->PushUniform(declaration); + } + buffer->Align(); + } + + void D3DShader::ParseTexture(const String& statement) + { + std::vector tokens = Tokenize(statement); + // Support Texture2D and TextureCube for now + uint index = 0; + + uint reg = 0; + String type = tokens[index++]; + String name = tokens[index++]; + if (tokens[index++] == ":") // Register specified + { + String texRegister = tokens[index++]; + reg = NextInt(texRegister); + } + + D3DShaderResourceDeclaration* declaration = spnew D3DShaderResourceDeclaration(D3DShaderResourceDeclaration::StringToType(type), name); + declaration->m_Register = reg; + m_Resources.push_back(declaration); + } + + void D3DShader::ParseSamplerState(const String& statement) + { + std::vector tokens = Tokenize(statement); + SP_ASSERT(tokens.front() == "SamplerState"); + + uint reg = 0; + uint index = 1; + String name = tokens[index++]; + if (tokens[index++] == ":") // Register specified + { + String sampRegister = tokens[index++]; + reg = NextInt(sampRegister); + } + } + + void D3DShader::CreateBuffers() + { + // Note: We only support a single uniform buffer per shader + m_VSConstantBuffersCount = m_VSUniformBuffers.size() + (m_VSUserUniformBuffer ? 1 : 0); + m_VSConstantBuffers = new ID3D11Buffer*[m_VSConstantBuffersCount]; + + for (uint i = 0; i < m_VSUniformBuffers.size(); i++) + { + D3DShaderUniformBufferDeclaration* decl = (D3DShaderUniformBufferDeclaration*)m_VSUniformBuffers[i]; + + D3D11_BUFFER_DESC desc; + ZeroMemory(&desc, sizeof(D3D11_BUFFER_DESC)); + desc.ByteWidth = decl->GetSize(); + desc.Usage = D3D11_USAGE_DYNAMIC; + desc.BindFlags = D3D11_BIND_CONSTANT_BUFFER; + desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; + + D3D11_SUBRESOURCE_DATA data; + data.pSysMem = new byte[desc.ByteWidth]; + data.SysMemPitch = 0; + data.SysMemSlicePitch = 0; + D3DContext::GetDevice()->CreateBuffer(&desc, &data, &m_VSConstantBuffers[decl->GetRegister()]); + } + + if (m_VSUserUniformBuffer) + { + D3DShaderUniformBufferDeclaration* decl = m_VSUserUniformBuffer; + + D3D11_BUFFER_DESC desc; + ZeroMemory(&desc, sizeof(D3D11_BUFFER_DESC)); + desc.ByteWidth = decl->GetSize(); + desc.Usage = D3D11_USAGE_DYNAMIC; + desc.BindFlags = D3D11_BIND_CONSTANT_BUFFER; + desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; + + D3D11_SUBRESOURCE_DATA data; + data.pSysMem = new byte[desc.ByteWidth]; + data.SysMemPitch = 0; + data.SysMemSlicePitch = 0; + D3DContext::GetDevice()->CreateBuffer(&desc, &data, &m_VSConstantBuffers[decl->GetRegister()]); + } + + m_PSConstantBuffersCount = m_PSUniformBuffers.size() + (m_PSUserUniformBuffer ? 1 : 0); + m_PSConstantBuffers = new ID3D11Buffer*[m_PSConstantBuffersCount]; + + for (uint i = 0; i < m_PSUniformBuffers.size(); i++) + { + D3DShaderUniformBufferDeclaration* decl = (D3DShaderUniformBufferDeclaration*)m_PSUniformBuffers[i]; + + D3D11_BUFFER_DESC desc; + ZeroMemory(&desc, sizeof(D3D11_BUFFER_DESC)); + desc.ByteWidth = decl->GetSize(); + desc.Usage = D3D11_USAGE_DYNAMIC; + desc.BindFlags = D3D11_BIND_CONSTANT_BUFFER; + desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; + + D3D11_SUBRESOURCE_DATA data; + data.pSysMem = new byte[desc.ByteWidth]; + data.SysMemPitch = 0; + data.SysMemSlicePitch = 0; + D3DContext::GetDevice()->CreateBuffer(&desc, &data, &m_PSConstantBuffers[decl->GetRegister()]); + } + + if (m_PSUserUniformBuffer) + { + D3DShaderUniformBufferDeclaration* decl = m_PSUserUniformBuffer; + + D3D11_BUFFER_DESC desc; + ZeroMemory(&desc, sizeof(D3D11_BUFFER_DESC)); + desc.ByteWidth = decl->GetSize(); + desc.Usage = D3D11_USAGE_DYNAMIC; + desc.BindFlags = D3D11_BIND_CONSTANT_BUFFER; + desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; + + D3D11_SUBRESOURCE_DATA data; + data.pSysMem = new byte[desc.ByteWidth]; + data.SysMemPitch = 0; + data.SysMemSlicePitch = 0; + D3DContext::GetDevice()->CreateBuffer(&desc, &data, &m_PSConstantBuffers[decl->GetRegister()]); + } + } + + void D3DShader::SetVSSystemUniformBuffer(byte* data, uint size, uint slot) + { + if (m_VSUserUniformBuffer) + SP_ASSERT(slot != m_VSUserUniformBuffer->GetRegister()); + ID3D11Buffer* cbuffer = m_VSConstantBuffers[slot]; + + D3D11_MAPPED_SUBRESOURCE msr; + memset(&msr, 0, sizeof(D3D11_MAPPED_SUBRESOURCE)); + + D3DContext::GetDeviceContext()->Map(cbuffer, NULL, D3D11_MAP_WRITE_DISCARD, NULL, &msr); + memcpy(msr.pData, data, size); + D3DContext::GetDeviceContext()->Unmap(cbuffer, NULL); + } + + void D3DShader::SetPSSystemUniformBuffer(byte* data, uint size, uint slot) + { + SP_ASSERT(!m_PSUserUniformBuffer || slot != m_PSUserUniformBuffer->GetRegister()); + ID3D11Buffer* cbuffer = m_PSConstantBuffers[slot]; + + D3D11_MAPPED_SUBRESOURCE msr; + memset(&msr, 0, sizeof(D3D11_MAPPED_SUBRESOURCE)); + + D3DContext::GetDeviceContext()->Map(cbuffer, NULL, D3D11_MAP_WRITE_DISCARD, NULL, &msr); + memcpy(msr.pData, data, size); + D3DContext::GetDeviceContext()->Unmap(cbuffer, NULL); + } + + void D3DShader::SetVSUserUniformBuffer(byte* data, uint size) + { + ID3D11Buffer* cbuffer = m_VSConstantBuffers[m_VSUserUniformBuffer->GetRegister()]; + + D3D11_MAPPED_SUBRESOURCE msr; + memset(&msr, 0, sizeof(D3D11_MAPPED_SUBRESOURCE)); + + D3DContext::GetDeviceContext()->Map(cbuffer, NULL, D3D11_MAP_WRITE_DISCARD, NULL, &msr); + memcpy(msr.pData, data, size); + D3DContext::GetDeviceContext()->Unmap(cbuffer, NULL); + } + + void D3DShader::SetPSUserUniformBuffer(byte* data, uint size) + { + ID3D11Buffer* cbuffer = m_PSConstantBuffers[m_PSUserUniformBuffer->GetRegister()]; + + D3D11_MAPPED_SUBRESOURCE msr; + memset(&msr, 0, sizeof(D3D11_MAPPED_SUBRESOURCE)); + + D3DContext::GetDeviceContext()->Map(cbuffer, NULL, D3D11_MAP_WRITE_DISCARD, NULL, &msr); + memcpy(msr.pData, data, size); + D3DContext::GetDeviceContext()->Unmap(cbuffer, NULL); + } + + void D3DShader::Bind() const + { + s_CurrentlyBound = this; + + D3DContext::GetDeviceContext()->VSSetShader(m_Data.vertexShader, NULL, 0); + D3DContext::GetDeviceContext()->PSSetShader(m_Data.pixelShader, NULL, 0); + + D3DContext::GetDeviceContext()->VSSetConstantBuffers(0, m_VSConstantBuffersCount, m_VSConstantBuffers); + D3DContext::GetDeviceContext()->PSSetConstantBuffers(0, m_PSConstantBuffersCount, m_PSConstantBuffers); + } + + void D3DShader::Unbind() const + { + + } + + ShaderStruct* D3DShader::FindStruct(const String& name) + { + for (ShaderStruct* s : m_Structs) + { + if (s->GetName() == name) + return s; + } + return nullptr; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/directx/DXShader.h b/Sparky-core/src/sp/platform/directx/DXShader.h new file mode 100644 index 00000000..e313bc58 --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXShader.h @@ -0,0 +1,95 @@ +#pragma once + +#include "sp/String.h" +#include "sp/graphics/shaders/Shader.h" +#include "DXCommon.h" + +#include "DXShaderResource.h" +#include "DXShaderUniform.h" + +namespace sp { namespace graphics { namespace API { + + struct D3DShaderErrorInfo + { + String profile; + String message; + }; + + class D3DShader : public Shader + { + private: + friend class Shader; + friend class ShaderManager; + private: + struct Data + { + ID3D11VertexShader* vertexShader; + ID3D11PixelShader* pixelShader; + ID3DBlob* vs; + ID3DBlob* ps; + }; + private: + static const D3DShader* s_CurrentlyBound; + private: + String m_Name; + String m_FilePath; + mutable Data m_Data; + + ShaderUniformBufferList m_VSUniformBuffers; + ShaderUniformBufferList m_PSUniformBuffers; + D3DShaderUniformBufferDeclaration* m_VSUserUniformBuffer; + D3DShaderUniformBufferDeclaration* m_PSUserUniformBuffer; + ShaderResourceList m_Resources; + ShaderStructList m_Structs; + + ID3D11Buffer** m_VSConstantBuffers; + uint m_VSConstantBuffersCount; + + ID3D11Buffer** m_PSConstantBuffers; + uint m_PSConstantBuffersCount; + public: + D3DShader(const String& name, const String& source); + ~D3DShader(); + + inline Data& GetData() const { return m_Data; } + + void Bind() const override; + void Unbind() const override; + + void SetVSSystemUniformBuffer(byte* data, uint size, uint slot = 0) override; + void SetPSSystemUniformBuffer(byte* data, uint size, uint slot = 0) override; + + void SetVSUserUniformBuffer(byte* data, uint size) override; + void SetPSUserUniformBuffer(byte* data, uint size) override; + + inline const String& GetName() const override { return m_Name; } + inline const String& GetFilePath() const override { return m_FilePath; } + + inline const ShaderUniformBufferList& GetVSSystemUniforms() const override { return m_VSUniformBuffers; } + inline const ShaderUniformBufferList& GetPSSystemUniforms() const override { return m_PSUniformBuffers; } + inline const ShaderUniformBufferDeclaration* GetVSUserUniformBuffer() const override { return m_VSUserUniformBuffer; } + inline const ShaderUniformBufferDeclaration* GetPSUserUniformBuffer() const override { return m_PSUserUniformBuffer; } + inline const ShaderResourceList& GetResources() const override { return m_Resources; } + private: + static ID3DBlob* Compile(const String& source, const String& profile, const String& main, D3DShaderErrorInfo& info); + void Load(const String& source); + + String RemoveComments(const String& source); + void Parse(const String& source); + void ParseCBuffer(const String& block); + void ParseTexture(const String& statement); + void ParseSamplerState(const String& statement); + void ParseStruct(const String& block); + + void CreateBuffers(); + ShaderStruct* FindStruct(const String& name); + public: + static bool TryCompile(const String& source, String& error); + static bool TryCompileFromFile(const String& filepath, String& error); + static D3DShader* FromFile(const String& name, const String& filepath, void* address); + static D3DShader* FromSource(const String& name, const String& source); + public: + static const D3DShader* CurrentlyBound() { return s_CurrentlyBound; } + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/directx/DXShaderResource.cpp b/Sparky-core/src/sp/platform/directx/DXShaderResource.cpp new file mode 100644 index 00000000..93cfb382 --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXShaderResource.cpp @@ -0,0 +1,31 @@ +#include "sp/sp.h" +#include "DXShaderResource.h" + +namespace sp { namespace graphics { namespace API { + + D3DShaderResourceDeclaration::D3DShaderResourceDeclaration(Type type, const String& name, uint count) + : m_Type(type), m_Name(name), m_Count(count) + { + } + + D3DShaderResourceDeclaration::Type D3DShaderResourceDeclaration::StringToType(const String& type) + { + if (type == "Texture2D") return D3DShaderResourceDeclaration::Type::TEXTURE2D; + if (type == "TextureCube") return D3DShaderResourceDeclaration::Type::TEXTURECUBE; + if (type == "SamplerState") return D3DShaderResourceDeclaration::Type::SAMPLERSTATE; + + return D3DShaderResourceDeclaration::Type::NONE; + } + + String D3DShaderResourceDeclaration::TypeToString(D3DShaderResourceDeclaration::Type type) + { + switch (type) + { + case D3DShaderResourceDeclaration::Type::TEXTURE2D: return "Texture2D"; + case D3DShaderResourceDeclaration::Type::TEXTURECUBE: return "TextureCube"; + case D3DShaderResourceDeclaration::Type::SAMPLERSTATE: return "SamplerState"; + } + return ""; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/directx/DXShaderResource.h b/Sparky-core/src/sp/platform/directx/DXShaderResource.h new file mode 100644 index 00000000..2e47216c --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXShaderResource.h @@ -0,0 +1,39 @@ +#pragma once + +#include "DXCommon.h" +#include "sp/Common.h" +#include "sp/Types.h" +#include "sp/String.h" + +#include "sp/graphics/shaders/ShaderResource.h" + +namespace sp { namespace graphics { namespace API { + + class D3DShaderResourceDeclaration : public ShaderResourceDeclaration + { + private: + friend class D3DShader; + public: + enum class Type + { + NONE, TEXTURE2D, TEXTURECUBE, SAMPLERSTATE + }; + private: + Type m_Type; + String m_Name; + uint m_Count; + uint m_Register; + public: + D3DShaderResourceDeclaration(Type type, const String& name, uint count = 1); + + inline const String& GetName() const override { return m_Name; } + inline uint GetRegister() const override { return m_Register; } + + inline Type GetType() const { return m_Type; } + inline uint GetCount() const { return m_Count; } + public: + static Type StringToType(const String& type); + static String TypeToString(Type type); + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/directx/DXShaderUniform.cpp b/Sparky-core/src/sp/platform/directx/DXShaderUniform.cpp new file mode 100644 index 00000000..58ce1ac9 --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXShaderUniform.cpp @@ -0,0 +1,103 @@ +#include "sp/sp.h" +#include "DXShaderUniform.h" + +namespace sp { namespace graphics { namespace API { + + #define BUFFER_ALIGNMENT 16 + + D3DShaderUniformDeclaration::D3DShaderUniformDeclaration(Type type, const String& name, uint count) + : m_Type(type) + { + m_Size = SizeOfUniformType(type) * count; + m_Name = name; + m_Count = count; + m_Offset = 0; + } + + D3DShaderUniformDeclaration::D3DShaderUniformDeclaration(ShaderStruct* shaderStruct, const String& name, uint count) + : m_Type(Type::NONE), m_Struct(shaderStruct) + { + m_Size = m_Struct->GetSize(); + m_Name = name; + m_Count = count; + m_Offset = 0; + } + + D3DShaderUniformDeclaration::Type D3DShaderUniformDeclaration::StringToType(const String& type) + { + if (type == "float") return D3DShaderUniformDeclaration::Type::FLOAT32; + if (type == "float2") return D3DShaderUniformDeclaration::Type::VEC2; + if (type == "float3") return D3DShaderUniformDeclaration::Type::VEC3; + if (type == "float4") return D3DShaderUniformDeclaration::Type::VEC4; + if (type == "float3x3") return D3DShaderUniformDeclaration::Type::MAT3; + if (type == "float4x4") return D3DShaderUniformDeclaration::Type::MAT4; + if (type == "int32") return D3DShaderUniformDeclaration::Type::FLOAT32; + + return D3DShaderUniformDeclaration::Type::NONE; + } + + String D3DShaderUniformDeclaration::TypeToString(D3DShaderUniformDeclaration::Type type) + { + switch (type) + { + case D3DShaderUniformDeclaration::Type::FLOAT32: return "float"; + case D3DShaderUniformDeclaration::Type::VEC2: return "float2"; + case D3DShaderUniformDeclaration::Type::VEC3: return "float3"; + case D3DShaderUniformDeclaration::Type::VEC4: return "float4"; + case D3DShaderUniformDeclaration::Type::MAT3: return "float3x3"; + case D3DShaderUniformDeclaration::Type::MAT4: return "float4x4"; + case D3DShaderUniformDeclaration::Type::INT32: return "int32"; + } + return ""; + } + + uint D3DShaderUniformDeclaration::SizeOfUniformType(Type type) + { + switch (type) + { + case D3DShaderUniformDeclaration::Type::FLOAT32: return 4; + case D3DShaderUniformDeclaration::Type::INT32: return 4; + case D3DShaderUniformDeclaration::Type::VEC2: return 4 * 2; + case D3DShaderUniformDeclaration::Type::VEC3: return 4 * 3; + case D3DShaderUniformDeclaration::Type::VEC4: return 4 * 4; + case D3DShaderUniformDeclaration::Type::MAT3: return 4 * 3 * 3; + case D3DShaderUniformDeclaration::Type::MAT4: return 4 * 4 * 4; + } + SP_ASSERT(false); + return 0; + } + + D3DShaderUniformBufferDeclaration::D3DShaderUniformBufferDeclaration(const String& name, uint bufferRegister, uint shaderType) + : m_Name(name), m_Register(bufferRegister), m_ShaderType(shaderType), m_Size(0) + { + } + + void D3DShaderUniformBufferDeclaration::PushUniform(D3DShaderUniformDeclaration* uniform) + { + uint offset = 0; + if (m_Uniforms.size()) + { + D3DShaderUniformDeclaration* previous = (D3DShaderUniformDeclaration*)m_Uniforms.back(); + offset = previous->m_Offset + previous->m_Size; + } + uniform->m_Offset = offset; + m_Size += uniform->GetSize(); + m_Uniforms.push_back(uniform); + } + + void D3DShaderUniformBufferDeclaration::Align() + { + m_Size = (m_Size + (BUFFER_ALIGNMENT - 1)) / BUFFER_ALIGNMENT * BUFFER_ALIGNMENT; + } + + ShaderUniformDeclaration* D3DShaderUniformBufferDeclaration::FindUniform(const String& name) + { + for (ShaderUniformDeclaration* uniform : m_Uniforms) + { + if (uniform->GetName() == name) + return uniform; + } + return nullptr; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/directx/DXShaderUniform.h b/Sparky-core/src/sp/platform/directx/DXShaderUniform.h new file mode 100644 index 00000000..dfba916e --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXShaderUniform.h @@ -0,0 +1,78 @@ +#pragma once + +#include "DXCommon.h" +#include "sp/Common.h" +#include "sp/Types.h" +#include "sp/String.h" +#include "sp/graphics/shaders/ShaderUniform.h" +#include + +namespace sp { namespace graphics { namespace API { + + class D3DShaderUniformDeclaration : public ShaderUniformDeclaration + { + private: + friend class D3DShaderUniformBufferDeclaration; + public: + enum class Type + { + NONE, FLOAT32, VEC2, VEC3, VEC4, MAT3, MAT4, INT32 + }; + private: + friend class D3DShader; + friend class ShaderUniformBufferDeclaration; + private: + String m_Name; + uint m_Size; + uint m_Count; + uint m_Offset; + Type m_Type; + uint m_Register; // TODO: Maybe we can remove this? + + ShaderStruct* m_Struct; + public: + D3DShaderUniformDeclaration(Type type, const String& name, uint count = 1); + D3DShaderUniformDeclaration(ShaderStruct* shaderStruct, const String& name, uint count = 1); + + inline const String& GetName() const override { return m_Name; } + inline uint GetSize() const override { return m_Size; } + inline uint GetCount() const override { return m_Count; } + inline uint GetOffset() const override { return m_Offset; } + + inline Type GetType() const { return m_Type; } + inline uint GetRegister() const { return m_Register; } + inline const ShaderStruct* GetStruct() const { return m_Struct; } + protected: + inline void SetOffset(uint offset) override { m_Offset = offset; } + public: + static Type StringToType(const String& type); + static String TypeToString(Type type); + static uint SizeOfUniformType(Type type); + }; + + class D3DShaderUniformBufferDeclaration : public ShaderUniformBufferDeclaration + { + private: + friend class Shader; + private: + String m_Name; + ShaderUniformList m_Uniforms; + uint m_Register; + uint m_Size; + uint m_ShaderType; // 0 = VS, 1 = PS + public: + D3DShaderUniformBufferDeclaration(const String& name, uint bufferRegister, uint shaderType); + + void PushUniform(D3DShaderUniformDeclaration* uniform); + void Align(); + + inline const String& GetName() const override { return m_Name; } + inline uint GetRegister() const override { return m_Register; } + inline uint GetShaderType() const override { return m_ShaderType; } + inline uint GetSize() const override { return m_Size; } + inline const ShaderUniformList& GetUniformDeclarations() const override { return m_Uniforms; } + + ShaderUniformDeclaration* FindUniform(const String& name); + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/directx/DXTexture2D.cpp b/Sparky-core/src/sp/platform/directx/DXTexture2D.cpp new file mode 100644 index 00000000..a275aa5f --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXTexture2D.cpp @@ -0,0 +1,205 @@ +#include "sp/sp.h" +#include "DXTexture2D.h" + +#include "DXCommon.h" +#include "DXContext.h" +#include "DXTextureHandle.h" + +#include "sp/utils/ImageLoad.h" +#include "sp/utils/Log.h" +#include "sp/system/Memory.h" + +#include "sp/utils/ImageLoad.h" + + +namespace sp { namespace graphics { namespace API { + + D3DTexture2D::D3DTexture2D(uint width, uint height, TextureParameters parameters, TextureLoadOptions loadOptions) + : m_FileName("NULL") + { + m_Width = width; + m_Height = height; + m_Parameters = parameters; + m_LoadOptions = loadOptions; + Load(); + } + + D3DTexture2D::D3DTexture2D(uint width, uint height, uint color, TextureParameters parameters, TextureLoadOptions loadOptions) + : m_FileName("NULL") + { + m_Width = width; + m_Height = height; + m_Parameters = parameters; + m_LoadOptions = loadOptions; + Load(); + + SetData(color); + } + + D3DTexture2D::D3DTexture2D(const String& name, const String& filename, TextureParameters parameters, TextureLoadOptions loadOptions) + : m_Name(name), m_FileName(filename) + { + m_Parameters = parameters; + m_LoadOptions = loadOptions; + Load(); + } + + D3DTexture2D::~D3DTexture2D() + { + // GLCall(glDeleteTextures(1, &m_TID)); + } + + D3DTexture2D* D3DTexture2D::FromFile(const String& filepath) + { + // TODO: Set name to filename + return spnew D3DTexture2D(filepath, filepath); + } + + void D3DTexture2D::Load() + { + byte* data = nullptr; + if (m_FileName != "NULL") + { + data = LoadImage(m_FileName, &m_Width, &m_Height, &m_BitsPerPixel, !m_LoadOptions.flipY); // FreeImage loads bottom->top + m_Parameters.format = m_BitsPerPixel == 24 ? TextureFormat::RGB : TextureFormat::RGBA; + } + + bool generateMips = data != nullptr; + + uint stride = 4;// GetStrideFromFormat(m_Parameters.format); + + D3D11_SUBRESOURCE_DATA initData; + initData.pSysMem = data; + initData.SysMemPitch = stride * m_Width; + initData.SysMemSlicePitch = m_Width * m_Height * stride; + + D3D11_SUBRESOURCE_DATA* initDataPtr = nullptr; + uint miplevels = 1; + + if (generateMips) + { + uint width = m_Width; + uint height = m_Height; + + while (width > 1 && height > 1) + { + width = max(width / 2, 1u); + height = max(height / 2, 1u); + ++miplevels; + } + } + else + { + if (data) initDataPtr = &initData; + } + + DXGI_FORMAT format = SPTextureFormatToD3D(m_Parameters.format); + + uint fmtSupport = 0; + D3DContext::GetDevice()->CheckFormatSupport(format, &fmtSupport); + SP_ASSERT(fmtSupport & D3D11_FORMAT_SUPPORT_MIP_AUTOGEN); + + ZeroMemory(&m_Desc, sizeof(D3D11_TEXTURE2D_DESC)); + m_Desc.Width = m_Width; + m_Desc.Height = m_Height; + m_Desc.MipLevels = miplevels; + m_Desc.ArraySize = 1; + m_Desc.Format = format; + m_Desc.CPUAccessFlags = 0; + m_Desc.Usage = generateMips ? D3D11_USAGE_DEFAULT : D3D11_USAGE_DYNAMIC; + m_Desc.CPUAccessFlags = m_Desc.Usage == D3D11_USAGE_DYNAMIC ? D3D11_CPU_ACCESS_WRITE : 0; + m_Desc.BindFlags = D3D11_BIND_SHADER_RESOURCE; + if (generateMips) + m_Desc.BindFlags |= D3D11_BIND_RENDER_TARGET; + m_Desc.MiscFlags = generateMips ? D3D11_RESOURCE_MISC_GENERATE_MIPS : 0; + m_Desc.SampleDesc.Count = 1; + m_Desc.SampleDesc.Quality = 0; + + DXCall(D3DContext::GetDevice()->CreateTexture2D(&m_Desc, initDataPtr, &m_Texture)); + // SP_ASSERT(hr); + // SP_ASSERT(result->texture); + + D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc; + ZeroMemory(&srvDesc, sizeof(D3D11_SHADER_RESOURCE_VIEW_DESC)); + srvDesc.Format = m_Desc.Format; + srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D; + srvDesc.Texture2D.MipLevels = m_Desc.MipLevels; + + DXCall(D3DContext::GetDevice()->CreateShaderResourceView(m_Texture, &srvDesc, &m_ResourceView)); + if (generateMips) + { + D3DContext::GetDeviceContext()->UpdateSubresource(m_Texture, 0, nullptr, initData.pSysMem, initData.SysMemPitch, initData.SysMemSlicePitch); + D3DContext::GetDeviceContext()->GenerateMips(m_ResourceView); + } + + m_Desc.Usage = D3D11_USAGE_DEFAULT; + m_Desc.CPUAccessFlags = 0; + m_Desc.BindFlags = D3D11_BIND_SHADER_RESOURCE; + + ZeroMemory(&m_SamplerDesc, sizeof(D3D11_SAMPLER_DESC)); + m_SamplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP; + m_SamplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP; + m_SamplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP; + m_SamplerDesc.MinLOD = 0; + m_SamplerDesc.MaxLOD = 11; + m_SamplerDesc.Filter = m_Parameters.filter == TextureFilter::LINEAR ? D3D11_FILTER_MIN_MAG_MIP_LINEAR : D3D11_FILTER_MIN_MAG_MIP_POINT; + m_SamplerDesc.ComparisonFunc = D3D11_COMPARISON_NEVER; + m_SamplerDesc.MaxLOD = D3D11_FLOAT32_MAX; + + DXCall(D3DContext::GetDevice()->CreateSamplerState(&m_SamplerDesc, &m_SamplerState)); + + if (data != nullptr) + spdel[] data; + } + + void D3DTexture2D::Bind(uint slot) const + { + D3DContext::GetDeviceContext()->PSSetShaderResources(slot, 1, &m_ResourceView); + D3DContext::GetDeviceContext()->PSSetSamplers(slot, 1, &m_SamplerState); + } + + void D3DTexture2D::Unbind(uint slot) const + { + ID3D11ShaderResourceView* rv = nullptr; + D3DContext::GetDeviceContext()->PSSetShaderResources(slot, 1, &rv); + } + + void D3DTexture2D::SetData(const void* pixels) + { + D3D11_MAPPED_SUBRESOURCE msr; + memset(&msr, 0, sizeof(D3D11_MAPPED_SUBRESOURCE)); + + DXCall(D3DContext::GetDeviceContext()->Map(m_Texture, NULL, D3D11_MAP_WRITE_DISCARD, NULL, &msr)); + for (uint i = 0; i < m_Width * m_Height * GetStrideFromFormat(m_Parameters.format); i += 4) + { + ((byte*)msr.pData)[i + 0] = 0xff; + ((byte*)msr.pData)[i + 1] = 0xff; + ((byte*)msr.pData)[i + 2] = 0xff; + ((byte*)msr.pData)[i + 3] = ((byte*)pixels)[i / 2 + 1]; + } + D3DContext::GetDeviceContext()->Unmap(m_Texture, NULL); + } + + DXGI_FORMAT D3DTexture2D::SPTextureFormatToD3D(TextureFormat format) + { + switch (format) + { + case TextureFormat::RGB: + case TextureFormat::RGBA: + case TextureFormat::LUMINANCE_ALPHA: + return DXGI_FORMAT_R8G8B8A8_UNORM; + } + return DXGI_FORMAT_UNKNOWN; + } + + uint D3DTexture2D::SPTextureFilterToD3D(TextureFilter filter) + { + return 0; + } + + uint D3DTexture2D::SPTextureWrapToD3D(TextureWrap wrap) + { + return 0; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/directx/DXTexture2D.h b/Sparky-core/src/sp/platform/directx/DXTexture2D.h new file mode 100644 index 00000000..37eedeb8 --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXTexture2D.h @@ -0,0 +1,53 @@ +#pragma once + +#include "sp/graphics/API/Texture2D.h" + +#include "DXCommon.h" + +namespace sp { namespace graphics { namespace API { + + class D3DTexture2D : public Texture2D + { + private: + String m_Name; + String m_FileName; + uint m_Handle; + uint m_Width, m_Height; + uint m_BitsPerPixel; + TextureParameters m_Parameters; + TextureLoadOptions m_LoadOptions; + + D3D11_TEXTURE2D_DESC m_Desc; + ID3D11Texture2D* m_Texture; + ID3D11ShaderResourceView* m_ResourceView; + ID3D11SamplerState* m_SamplerState; + D3D11_SAMPLER_DESC m_SamplerDesc; + public: + D3DTexture2D(uint width, uint height, TextureParameters parameters = TextureParameters(), TextureLoadOptions loadOptions = TextureLoadOptions()); + D3DTexture2D(uint width, uint height, uint color, TextureParameters parameters = TextureParameters(), TextureLoadOptions loadOptions = TextureLoadOptions()); + D3DTexture2D(const String& name, const String& filename, TextureParameters parameters = TextureParameters(), TextureLoadOptions loadOptions = TextureLoadOptions()); + + ~D3DTexture2D(); + + void Bind(uint slot = 0) const override; + void Unbind(uint slot = 0) const override; + + virtual void SetData(const void* pixels) override; + virtual void SetData(uint color) override {} + + inline uint GetWidth() const { return m_Width; } + inline uint GetHeight() const { return m_Height; } + + inline const String& GetName() const { return m_Name; } + inline const String& GetFilepath() const { return m_FileName; } + public: + static DXGI_FORMAT SPTextureFormatToD3D(TextureFormat format); + static uint SPTextureFilterToD3D(TextureFilter filter); + static uint SPTextureWrapToD3D(TextureWrap wrap); + + static D3DTexture2D* FromFile(const String& filepath); + private: + void Load(); + }; + +} } } diff --git a/Sparky-core/src/sp/platform/directx/DXTextureCube.cpp b/Sparky-core/src/sp/platform/directx/DXTextureCube.cpp new file mode 100644 index 00000000..b9ffa3dd --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXTextureCube.cpp @@ -0,0 +1,197 @@ +#include "sp/sp.h" +#include "DXTextureCube.h" + +#include "DXContext.h" + +#include "sp/utils/ImageLoad.h" +#include "sp/system/Memory.h" + +namespace sp { namespace graphics { namespace API { + + D3DTextureCube::D3DTextureCube(const String& name, const String& filepath) + { + m_Name = name; + m_Files[0] = filepath; + LoadFromSingleFile(); + } + + D3DTextureCube::D3DTextureCube(const String& name, const String* files) + { + m_Name = name; + m_Files = spnew String[6]; + for (uint i = 0; i < 6; i++) + m_Files[i] = files[i]; + LoadFromMultipleFiles(); + } + + D3DTextureCube::D3DTextureCube(const String& name, const String* files, int32 mips, InputFormat format) + { + m_Name = name; + m_Files = spnew String[mips]; + for (int32 i = 0; i < mips; i++) + m_Files[i] = files[i]; + if (format == InputFormat::VERTICAL_CROSS) + LoadFromVCross(mips); + } + + D3DTextureCube::~D3DTextureCube() + { + // GLCall(glDeleteTextures(1, &m_Handle)); + } + + void D3DTextureCube::Bind(uint slot) const + { + D3DContext::GetDeviceContext()->PSSetShaderResources(slot, 1, &m_ResourceView); + D3DContext::GetDeviceContext()->PSSetSamplers(slot, 1, &m_SamplerState); + } + + void D3DTextureCube::Unbind(uint slot) const + { + ID3D11ShaderResourceView* rv = nullptr; + D3DContext::GetDeviceContext()->PSSetShaderResources(slot, 1, &rv); + } + + void D3DTextureCube::LoadFromSingleFile() + { + // TODO: Implement + } + + void D3DTextureCube::LoadFromMultipleFiles() + { + const String& xpos = m_Files[0]; + const String& xneg = m_Files[1]; + const String& ypos = m_Files[2]; + const String& yneg = m_Files[3]; + const String& zpos = m_Files[4]; + const String& zneg = m_Files[5]; + + uint width, height, bits; + byte* xp = LoadImage(xpos, &width, &height, &bits, true); + byte* xn = LoadImage(xneg, &width, &height, &bits, true); + byte* yp = LoadImage(ypos, &width, &height, &bits, true); + byte* yn = LoadImage(yneg, &width, &height, &bits, true); + byte* zp = LoadImage(zpos, &width, &height, &bits, true); + byte* zn = LoadImage(zneg, &width, &height, &bits, true); + } + + void D3DTextureCube::LoadFromVCross(int32 mips) + { + uint srcWidth, srcHeight, bits; + byte*** cubeTextureData = spnew byte**[mips]; + for (int32 i = 0; i < mips; i++) + cubeTextureData[i] = spnew byte*[6]; + + uint* faceWidths = spnew uint[mips]; + uint* faceHeights = spnew uint[mips]; + + for (int32 m = 0; m < mips; m++) + { + byte* data = LoadImage(m_Files[m], &srcWidth, &srcHeight, &bits, true); + uint stride = bits / 8; + + uint face = 0; + uint faceWidth = srcWidth / 3; + uint faceHeight = srcHeight / 4; + faceWidths[m] = faceWidth; + faceHeights[m] = faceHeight; + for (uint cy = 0; cy < 4; cy++) + { + for (uint cx = 0; cx < 3; cx++) + { + if (cy == 0 || cy == 2 || cy == 3) + { + if (cx != 1) + continue; + } + + cubeTextureData[m][face] = spnew byte[faceWidth * faceHeight * stride]; + uint index = 0; + for (uint y = 0; y < faceHeight; y++) + { + uint offset = y; + if (face == 5) + offset = faceHeight - (y + 1); + uint yp = cy * faceHeight + offset; + for (uint x = 0; x < faceWidth; x++) + { + offset = x; + if (face == 5) + offset = faceWidth - (x + 1); + uint xp = cx * faceWidth + offset; + cubeTextureData[m][face][(x + y * faceWidth) * stride + 0] = data[(xp + yp * srcWidth) * stride + 0]; + cubeTextureData[m][face][(x + y * faceWidth) * stride + 1] = data[(xp + yp * srcWidth) * stride + 1]; + cubeTextureData[m][face][(x + y * faceWidth) * stride + 2] = data[(xp + yp * srcWidth) * stride + 2]; + if (stride >= 4) + cubeTextureData[m][face][(x + y * faceWidth) * stride + 3] = data[(xp + yp * srcWidth) * stride + 3]; + } + } + face++; + } + } + spdel[] data; + } + + D3D11_TEXTURE2D_DESC texDesc; + texDesc.Width = faceWidths[0]; + texDesc.Height = faceHeights[0]; + texDesc.MipLevels = mips; + texDesc.ArraySize = 6; + texDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; + texDesc.CPUAccessFlags = 0; + texDesc.SampleDesc.Count = 1; + texDesc.SampleDesc.Quality = 0; + texDesc.Usage = D3D11_USAGE_DEFAULT; + texDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE; + texDesc.CPUAccessFlags = 0; + texDesc.MiscFlags = D3D11_RESOURCE_MISC_TEXTURECUBE; + + D3D11_SHADER_RESOURCE_VIEW_DESC SMViewDesc; + SMViewDesc.Format = texDesc.Format; + SMViewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURECUBE; + SMViewDesc.TextureCube.MipLevels = texDesc.MipLevels; + SMViewDesc.TextureCube.MostDetailedMip = 0; + + D3D11_SUBRESOURCE_DATA* pData = spnew D3D11_SUBRESOURCE_DATA[6 * mips]; + + uint result = 0; + uint index = 0; + uint faceOrder[6] = { 3, 1, 0, 4, 2, 5 }; + for (int32 f = 0; f < 6; f++) + { + uint fi = faceOrder[f]; + for (int32 m = 0; m < mips; m++) + { + pData[index].pSysMem = cubeTextureData[m][fi]; + pData[index].SysMemPitch = faceWidths[m] * 4; + pData[index].SysMemSlicePitch = faceWidths[m] * faceHeights[m] * 4; + index++; + } + } + m_Texture = nullptr; + DXCall(D3DContext::GetDevice()->CreateTexture2D(&texDesc, pData, &m_Texture)); + DXCall(D3DContext::GetDevice()->CreateShaderResourceView(m_Texture, &SMViewDesc, &m_ResourceView)); + + spdel[] pData; + + for (int32 m = 0; m < mips; m++) + { + for (int32 f = 0; f < 6; f++) + { + spdel[] cubeTextureData[m][f]; + } + spdel[] cubeTextureData[m]; + } + spdel[] cubeTextureData; + + ZeroMemory(&m_SamplerDesc, sizeof(D3D11_SAMPLER_DESC)); + m_SamplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP; + m_SamplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP; + m_SamplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP; + m_SamplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR; + m_SamplerDesc.ComparisonFunc = D3D11_COMPARISON_NEVER; + m_SamplerDesc.MaxLOD = D3D11_FLOAT32_MAX; + + DXCall(D3DContext::GetDevice()->CreateSamplerState(&m_SamplerDesc, &m_SamplerState)); + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/directx/DXTextureCube.h b/Sparky-core/src/sp/platform/directx/DXTextureCube.h new file mode 100644 index 00000000..afcb3441 --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXTextureCube.h @@ -0,0 +1,41 @@ +#pragma once + +#include "sp/graphics/API/TextureCube.h" + +#include "DXCommon.h" + +namespace sp { namespace graphics { namespace API { + + class D3DTextureCube : public TextureCube + { + private: + uint m_Width, m_Height; + String m_Name; + String* m_Files; + uint m_Bits; + InputFormat m_Format; + + D3D11_TEXTURE2D_DESC m_Desc; + ID3D11Texture2D* m_Texture; + ID3D11ShaderResourceView* m_ResourceView; + ID3D11SamplerState* m_SamplerState; + D3D11_SAMPLER_DESC m_SamplerDesc; + public: + D3DTextureCube(const String& name, const String& filepath); + D3DTextureCube(const String& name, const String* files); + D3DTextureCube(const String& name, const String* files, int32 mips, InputFormat format); + ~D3DTextureCube(); + + void Bind(uint slot = 0) const override; + void Unbind(uint slot = 0) const override; + + inline const String& GetName() const override { return m_Name; } + inline const String& GetFilepath() const override { return m_Files[0]; } + private: + void LoadFromSingleFile(); + void LoadFromMultipleFiles(); + void LoadFromVCross(int32 mips); + }; + + +} } } diff --git a/Sparky-core/src/sp/platform/directx/DXTextureDepth.cpp b/Sparky-core/src/sp/platform/directx/DXTextureDepth.cpp new file mode 100644 index 00000000..1ba3e6d2 --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXTextureDepth.cpp @@ -0,0 +1,32 @@ +#include "sp/sp.h" +#include "DXTextureDepth.h" + +namespace sp { namespace graphics { namespace API { + + D3DTextureDepth::D3DTextureDepth(uint width, uint height) + : m_Width(width), m_Height(height) + { + Init(); + } + + D3DTextureDepth::~D3DTextureDepth() + { + // GLCall(glDeleteTextures(1, &m_Handle)); + } + + void D3DTextureDepth::Bind(uint slot) const + { + // GLCall(glBindTexture(GL_TEXTURE_2D, m_Handle)); + } + + void D3DTextureDepth::Unbind(uint slot) const + { + + } + + void D3DTextureDepth::Init() + { + + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/directx/DXTextureDepth.h b/Sparky-core/src/sp/platform/directx/DXTextureDepth.h new file mode 100644 index 00000000..1eedfc4c --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXTextureDepth.h @@ -0,0 +1,25 @@ +#pragma once + +#include "sp/graphics/API/TextureDepth.h" + +namespace sp { namespace graphics { namespace API { + + class D3DTextureDepth : public TextureDepth + { + private: + String m_Name; + uint m_Width, m_Height; + public: + D3DTextureDepth(uint width, uint height); + ~D3DTextureDepth(); + + void Bind(uint slot = 0) const override; + void Unbind(uint slot = 0) const override; + + inline const String& GetName() const override { return m_Name; } + inline const String& GetFilepath() const override { return m_Name; } + protected: + void Init(); + }; + +} } } diff --git a/Sparky-core/src/sp/platform/directx/DXTextureHandle.h b/Sparky-core/src/sp/platform/directx/DXTextureHandle.h new file mode 100644 index 00000000..d9972118 --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXTextureHandle.h @@ -0,0 +1,16 @@ +#pragma once + +#include "DXCommon.h" + +namespace sp { namespace graphics { + + struct TextureHandle + { + ID3D11Texture2D* texture; + ID3D11ShaderResourceView* resourceView; + ID3D11SamplerState* samplerState; + D3D11_TEXTURE2D_DESC desc; + D3D11_SAMPLER_DESC samplerDesc; + }; + +} } diff --git a/Sparky-core/src/sp/platform/directx/DXTypes.h b/Sparky-core/src/sp/platform/directx/DXTypes.h new file mode 100644 index 00000000..fcb57da2 --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXTypes.h @@ -0,0 +1,124 @@ +#pragma once + +// From dxgiformat.h + +typedef enum DXTYPES +{ + DX_TYPE_UNKNOWN = 0, + DX_TYPE_R32G32B32A32_TYPELESS = 1, + DX_TYPE_R32G32B32A32_FLOAT = 2, + DX_TYPE_R32G32B32A32_UINT = 3, + DX_TYPE_R32G32B32A32_SINT = 4, + DX_TYPE_R32G32B32_TYPELESS = 5, + DX_TYPE_R32G32B32_FLOAT = 6, + DX_TYPE_R32G32B32_UINT = 7, + DX_TYPE_R32G32B32_SINT = 8, + DX_TYPE_R16G16B16A16_TYPELESS = 9, + DX_TYPE_R16G16B16A16_FLOAT = 10, + DX_TYPE_R16G16B16A16_UNORM = 11, + DX_TYPE_R16G16B16A16_UINT = 12, + DX_TYPE_R16G16B16A16_SNORM = 13, + DX_TYPE_R16G16B16A16_SINT = 14, + DX_TYPE_R32G32_TYPELESS = 15, + DX_TYPE_R32G32_FLOAT = 16, + DX_TYPE_R32G32_UINT = 17, + DX_TYPE_R32G32_SINT = 18, + DX_TYPE_R32G8X24_TYPELESS = 19, + DX_TYPE_D32_FLOAT_S8X24_UINT = 20, + DX_TYPE_R32_FLOAT_X8X24_TYPELESS = 21, + DX_TYPE_X32_TYPELESS_G8X24_UINT = 22, + DX_TYPE_R10G10B10A2_TYPELESS = 23, + DX_TYPE_R10G10B10A2_UNORM = 24, + DX_TYPE_R10G10B10A2_UINT = 25, + DX_TYPE_R11G11B10_FLOAT = 26, + DX_TYPE_R8G8B8A8_TYPELESS = 27, + DX_TYPE_R8G8B8A8_UNORM = 28, + DX_TYPE_R8G8B8A8_UNORM_SRGB = 29, + DX_TYPE_R8G8B8A8_UINT = 30, + DX_TYPE_R8G8B8A8_SNORM = 31, + DX_TYPE_R8G8B8A8_SINT = 32, + DX_TYPE_R16G16_TYPELESS = 33, + DX_TYPE_R16G16_FLOAT = 34, + DX_TYPE_R16G16_UNORM = 35, + DX_TYPE_R16G16_UINT = 36, + DX_TYPE_R16G16_SNORM = 37, + DX_TYPE_R16G16_SINT = 38, + DX_TYPE_R32_TYPELESS = 39, + DX_TYPE_D32_FLOAT = 40, + DX_TYPE_R32_FLOAT = 41, + DX_TYPE_R32_UINT = 42, + DX_TYPE_R32_SINT = 43, + DX_TYPE_R24G8_TYPELESS = 44, + DX_TYPE_D24_UNORM_S8_UINT = 45, + DX_TYPE_R24_UNORM_X8_TYPELESS = 46, + DX_TYPE_X24_TYPELESS_G8_UINT = 47, + DX_TYPE_R8G8_TYPELESS = 48, + DX_TYPE_R8G8_UNORM = 49, + DX_TYPE_R8G8_UINT = 50, + DX_TYPE_R8G8_SNORM = 51, + DX_TYPE_R8G8_SINT = 52, + DX_TYPE_R16_TYPELESS = 53, + DX_TYPE_R16_FLOAT = 54, + DX_TYPE_D16_UNORM = 55, + DX_TYPE_R16_UNORM = 56, + DX_TYPE_R16_UINT = 57, + DX_TYPE_R16_SNORM = 58, + DX_TYPE_R16_SINT = 59, + DX_TYPE_R8_TYPELESS = 60, + DX_TYPE_R8_UNORM = 61, + DX_TYPE_R8_UINT = 62, + DX_TYPE_R8_SNORM = 63, + DX_TYPE_R8_SINT = 64, + DX_TYPE_A8_UNORM = 65, + DX_TYPE_R1_UNORM = 66, + DX_TYPE_R9G9B9E5_SHAREDEXP = 67, + DX_TYPE_R8G8_B8G8_UNORM = 68, + DX_TYPE_G8R8_G8B8_UNORM = 69, + DX_TYPE_BC1_TYPELESS = 70, + DX_TYPE_BC1_UNORM = 71, + DX_TYPE_BC1_UNORM_SRGB = 72, + DX_TYPE_BC2_TYPELESS = 73, + DX_TYPE_BC2_UNORM = 74, + DX_TYPE_BC2_UNORM_SRGB = 75, + DX_TYPE_BC3_TYPELESS = 76, + DX_TYPE_BC3_UNORM = 77, + DX_TYPE_BC3_UNORM_SRGB = 78, + DX_TYPE_BC4_TYPELESS = 79, + DX_TYPE_BC4_UNORM = 80, + DX_TYPE_BC4_SNORM = 81, + DX_TYPE_BC5_TYPELESS = 82, + DX_TYPE_BC5_UNORM = 83, + DX_TYPE_BC5_SNORM = 84, + DX_TYPE_B5G6R5_UNORM = 85, + DX_TYPE_B5G5R5A1_UNORM = 86, + DX_TYPE_B8G8R8A8_UNORM = 87, + DX_TYPE_B8G8R8X8_UNORM = 88, + DX_TYPE_R10G10B10_XR_BIAS_A2_UNORM = 89, + DX_TYPE_B8G8R8A8_TYPELESS = 90, + DX_TYPE_B8G8R8A8_UNORM_SRGB = 91, + DX_TYPE_B8G8R8X8_TYPELESS = 92, + DX_TYPE_B8G8R8X8_UNORM_SRGB = 93, + DX_TYPE_BC6H_TYPELESS = 94, + DX_TYPE_BC6H_UF16 = 95, + DX_TYPE_BC6H_SF16 = 96, + DX_TYPE_BC7_TYPELESS = 97, + DX_TYPE_BC7_UNORM = 98, + DX_TYPE_BC7_UNORM_SRGB = 99, + DX_TYPE_AYUV = 100, + DX_TYPE_Y410 = 101, + DX_TYPE_Y416 = 102, + DX_TYPE_NV12 = 103, + DX_TYPE_P010 = 104, + DX_TYPE_P016 = 105, + DX_TYPE_420_OPAQUE = 106, + DX_TYPE_YUY2 = 107, + DX_TYPE_Y210 = 108, + DX_TYPE_Y216 = 109, + DX_TYPE_NV11 = 110, + DX_TYPE_AI44 = 111, + DX_TYPE_IA44 = 112, + DX_TYPE_P8 = 113, + DX_TYPE_A8P8 = 114, + DX_TYPE_B4G4R4A4_UNORM = 115, + DX_TYPE_FORCE_UINT = 0xffffffff +} DXTYPES; diff --git a/Sparky-core/src/sp/platform/directx/DXVertexArray.cpp b/Sparky-core/src/sp/platform/directx/DXVertexArray.cpp new file mode 100644 index 00000000..90c38160 --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXVertexArray.cpp @@ -0,0 +1,45 @@ +#include "sp/sp.h" +#include "DXVertexArray.h" + +#include "DXCommon.h" +#include "DXContext.h" +#include "DXVertexBuffer.h" + +namespace sp { namespace graphics { namespace API { + + D3DVertexArray::D3DVertexArray() + { + } + + D3DVertexArray::~D3DVertexArray() + { + } + + void D3DVertexArray::PushBuffer(API::VertexBuffer* buffer) + { + m_Buffers.push_back(buffer); + } + + void D3DVertexArray::Bind() const + { + } + + void D3DVertexArray::Unbind() const + { + } + + void D3DVertexArray::Draw(uint count) const + { + // TODO: For now + for (uint i = 0; i < m_Buffers.size(); i++) + { + D3DVertexBuffer* buffer = (D3DVertexBuffer*)m_Buffers[i]; + buffer->Bind(); + + D3DContext::GetDeviceContext()->DrawIndexed(count, 0, 0); + + buffer->Unbind(); + } + } + +} } } diff --git a/Sparky-core/src/sp/platform/directx/DXVertexArray.h b/Sparky-core/src/sp/platform/directx/DXVertexArray.h new file mode 100644 index 00000000..721a3685 --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXVertexArray.h @@ -0,0 +1,25 @@ +#pragma once + +#include "sp/graphics/API/VertexArray.h" + +namespace sp { namespace graphics { namespace API { + + class D3DVertexArray : public VertexArray + { + private: + uint m_Handle; + std::vector m_Buffers; + public: + D3DVertexArray(); + ~D3DVertexArray(); + + inline API::VertexBuffer* GetBuffer(uint index = 0) override { return m_Buffers[index]; } + void PushBuffer(API::VertexBuffer* buffer) override; + + void Bind() const override; + void Unbind() const override; + + void Draw(uint count) const override; + }; + +} } } diff --git a/Sparky-core/src/sp/platform/directx/DXVertexBuffer.cpp b/Sparky-core/src/sp/platform/directx/DXVertexBuffer.cpp new file mode 100644 index 00000000..18f1f7c4 --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXVertexBuffer.cpp @@ -0,0 +1,90 @@ +#include "sp/sp.h" +#include "DXVertexBuffer.h" + +#include "DXContext.h" +#include "DXShader.h" + +namespace sp { namespace graphics { namespace API { + + uint SPBufferUsageToDirect3D(BufferUsage usage) + { + switch (usage) + { + case BufferUsage::STATIC: return /*D3D11_USAGE_IMMUTABLE*/D3D11_USAGE_DYNAMIC; + case BufferUsage::DYNAMIC: return D3D11_USAGE_DYNAMIC; + } + return 0; + } + + D3DVertexBuffer::D3DVertexBuffer(BufferUsage usage) + : m_Usage(usage), m_Size(0) + { + ZeroMemory(&m_BufferDesc, sizeof(D3D11_BUFFER_DESC)); + m_BufferDesc.Usage = (D3D11_USAGE)SPBufferUsageToDirect3D(usage); // write access access by CPU and GPU + m_BufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER; // use as a vertex buffer + m_BufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; // allow CPU to write in buffer + } + + D3DVertexBuffer::~D3DVertexBuffer() + { + // GLCall(glDeleteBuffers(1, &id)); + } + + void D3DVertexBuffer::Resize(uint size) + { + m_Size = size; + m_BufferDesc.ByteWidth = size; + DXCall(D3DContext::GetContext()->GetDevice()->CreateBuffer(&m_BufferDesc, NULL, &m_BufferHandle)); + } + + void D3DVertexBuffer::SetLayout(const BufferLayout& bufferLayout) + { + m_Layout = bufferLayout; + const std::vector& layout = bufferLayout.GetLayout(); + D3D11_INPUT_ELEMENT_DESC* desc = spnew D3D11_INPUT_ELEMENT_DESC[layout.size()]; + for (uint i = 0; i < layout.size(); i++) + { + const BufferElement& element = layout[i]; + desc[i] = { element.name.c_str(), 0, (DXGI_FORMAT)element.type, 0, element.offset, D3D11_INPUT_PER_VERTEX_DATA, 0 }; + } + const D3DShader* shader = D3DShader::CurrentlyBound(); + SP_ASSERT(shader); + DXCall(D3DContext::GetDevice()->CreateInputLayout(desc, layout.size(), shader->GetData().vs->GetBufferPointer(), shader->GetData().vs->GetBufferSize(), &m_InputLayout)); + spdel desc; + } + + void D3DVertexBuffer::SetData(uint size, const void* data) + { + if (m_Size < size) + Resize(size); + + GetPointerInternal(); + memcpy(m_MappedSubresource.pData, data, size); + ReleasePointer(); + } + + void* D3DVertexBuffer::GetPointerInternal() + { + DXCall(D3DContext::GetDeviceContext()->Map(m_BufferHandle, NULL, D3D11_MAP_WRITE_DISCARD, NULL, &m_MappedSubresource)); + return m_MappedSubresource.pData; + } + + void D3DVertexBuffer::ReleasePointer() + { + D3DContext::GetDeviceContext()->Unmap(m_BufferHandle, NULL); + } + + void D3DVertexBuffer::Bind() + { + uint offset = 0; + uint stride = m_Layout.GetStride(); + D3DContext::GetDeviceContext()->IASetInputLayout(m_InputLayout); + D3DContext::GetDeviceContext()->IASetVertexBuffers(0, 1, &m_BufferHandle, &stride, &offset); + } + + void D3DVertexBuffer::Unbind() + { + } + +} } } + diff --git a/Sparky-core/src/sp/platform/directx/DXVertexBuffer.h b/Sparky-core/src/sp/platform/directx/DXVertexBuffer.h new file mode 100644 index 00000000..ac9ea644 --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/DXVertexBuffer.h @@ -0,0 +1,38 @@ +#pragma once + +#include "sp/graphics/API/VertexBuffer.h" +#include "DXCommon.h" + +namespace sp { namespace graphics { namespace API { + + class D3DVertexBuffer : public VertexBuffer + { + private: + D3D11_BUFFER_DESC m_BufferDesc; + D3D11_MAPPED_SUBRESOURCE m_MappedSubresource; + ID3D11Buffer* m_BufferHandle; + ID3D11InputLayout* m_InputLayout; + + BufferUsage m_Usage; + uint m_Size; + BufferLayout m_Layout; + public: + D3DVertexBuffer(BufferUsage usage); + ~D3DVertexBuffer(); + + void Resize(uint size) override; + void SetLayout(const BufferLayout& layout) override; + void SetData(uint size, const void* data) override; + + void ReleasePointer() override; + + void Bind() override; + void Unbind() override; + protected: + void* GetPointerInternal() override; + }; + + + + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/directx/shaders/BatchRenderer.hlsl b/Sparky-core/src/sp/platform/directx/shaders/BatchRenderer.hlsl new file mode 100644 index 00000000..65d44f48 --- /dev/null +++ b/Sparky-core/src/sp/platform/directx/shaders/BatchRenderer.hlsl @@ -0,0 +1,96 @@ +R"( + +struct VSInput +{ + float4 position : POSITION; + float2 uv : TEXCOORD; + float2 mask_uv : MASKUV; + float tid : ID; + float mid : MASKID; + float4 color : COLOR; +}; + +struct VSOutput +{ + float4 positionCS : SV_POSITION; + float4 position : POSITION; + float2 uv : TEXCOORD; + float2 mask_uv : MASKUV; + float tid : ID; + float mid : MASKID; + float4 color : COLOR; +}; + +cbuffer VSUniforms : register(b0) +{ + float4x4 sys_ProjectionMatrix; + float4x4 sys_ViewMatrix; + float4x4 sys_MaskMatrix; +} + +VSOutput VSMain(VSInput input) +{ + VSOutput output; + output.positionCS = mul(input.position, sys_ProjectionMatrix); + output.position = input.position; + output.uv = input.uv; + output.tid = input.tid; + output.mid = input.mid; + output.color = input.color; + output.mask_uv = input.mask_uv; + return output; +} + +Texture2D textures[32] : register(t0); +SamplerState samplers[32] : register(s0); + +float4 PSMain(VSOutput input) : SV_TARGET +{ + float4 texColor = input.color; + float4 maskColor = float4(1.0f, 1.0f, 1.0f, 1.0f); + switch(input.tid) + { + case 1: + texColor *= textures[0].Sample(samplers[0], input.uv); + break; + case 2: + texColor *= textures[1].Sample(samplers[1], input.uv); + break; + case 3: + texColor *= textures[2].Sample(samplers[2], input.uv); + break; + case 4: + texColor *= textures[3].Sample(samplers[3], input.uv); + break; + case 5: + texColor *= textures[4].Sample(samplers[4], input.uv); + break; + case 6: + texColor *= textures[5].Sample(samplers[5], input.uv); + break; + } + + switch(input.mid) + { + case 1: + maskColor *= textures[0].Sample(samplers[0], input.mask_uv); + break; + case 2: + maskColor *= textures[1].Sample(samplers[1], input.mask_uv); + break; + case 3: + maskColor *= textures[2].Sample(samplers[2], input.mask_uv); + break; + case 4: + maskColor *= textures[3].Sample(samplers[3], input.mask_uv); + break; + case 5: + maskColor *= textures[4].Sample(samplers[4], input.mask_uv); + break; + case 6: + maskColor *= textures[5].Sample(samplers[5], input.mask_uv); + break; + } + return texColor * maskColor; +}; +)" \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLCommon.h b/Sparky-core/src/sp/platform/opengl/GLCommon.h new file mode 100644 index 00000000..610e6188 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLCommon.h @@ -0,0 +1,16 @@ +#pragma once + +#include + +namespace sp { + extern GLenum GLCheckError(); + extern bool GLLogCall(const char* function, const char* file, int32 line); +} + +#ifdef SP_DEBUG + #define GLCall(x) sp::GLCheckError();\ + x; \ + if (!sp::GLLogCall(#x, __FILE__, __LINE__)) __debugbreak(); +#else + #define GLCall(x) x +#endif diff --git a/Sparky-core/src/sp/platform/opengl/GLContext.cpp b/Sparky-core/src/sp/platform/opengl/GLContext.cpp new file mode 100644 index 00000000..52525251 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLContext.cpp @@ -0,0 +1,45 @@ +#include "sp/sp.h" +#include "GLContext.h" + +#undef NOGDI +#include +#define NOGDI +#include "sp/utils/Log.h" + +#include + +namespace sp { namespace graphics { namespace API { + + static HDC hDc; + + GLContext::GLContext(WindowProperties, void* deviceContext) + { + hDc = GetDC((HWND)deviceContext); + HGLRC hrc = wglCreateContext(hDc); + if (hrc) + { + if (!wglMakeCurrent(hDc, hrc)) + { + SP_ERROR("Failed setting OpenGL context!"); + SP_ASSERT(false); + } + } + else + { + SP_ERROR("Failed creating OpenGL context!"); + SP_ASSERT(false); + } + + if (glewInit() != GLEW_OK) + { + SP_FATAL("Could not initialize GLEW!"); + SP_ASSERT(false); + } + } + + void GLContext::Present() + { + SwapBuffers(hDc); + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLContext.h b/Sparky-core/src/sp/platform/opengl/GLContext.h new file mode 100644 index 00000000..57f81dbd --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLContext.h @@ -0,0 +1,18 @@ +#pragma once + +#include "sp/graphics/API/Context.h" +#include "GLCommon.h" + +namespace sp { namespace graphics { namespace API { + + class GLContext : public Context + { + public: + GLContext(WindowProperties properties, void* deviceContext); + + void Present(); + public: + inline static GLContext* Get() { return (GLContext*)s_Context; } + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLError.cpp b/Sparky-core/src/sp/platform/opengl/GLError.cpp new file mode 100644 index 00000000..6de326e7 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLError.cpp @@ -0,0 +1,25 @@ +#include "sp/sp.h" + +#include "sp/utils/Log.h" + +#include "GLCommon.h" + +namespace sp { + + GLenum GLCheckError() + { + return glGetError(); + } + + bool GLLogCall(const char* function, const char* file, int32 line) + { + GLenum error = GLCheckError(); + if (error != GL_NO_ERROR) + { + SP_ERROR("[OpenGL Error] (", error, "): ", function, " ", file, ":", line); + return false; + } + return true; + } + +} \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLFramebuffer2D.cpp b/Sparky-core/src/sp/platform/opengl/GLFramebuffer2D.cpp new file mode 100644 index 00000000..58153e9c --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLFramebuffer2D.cpp @@ -0,0 +1,56 @@ +#include "sp/sp.h" +#include "GLFramebuffer2D.h" + +#include "sp/system/Memory.h" +#include "sp/utils/Log.h" + +namespace sp { namespace graphics { + + using namespace API; + + GLFramebuffer2D::GLFramebuffer2D(uint width, uint height) + : m_Width(width), m_Height(height) + { + Init(); + } + + GLFramebuffer2D::~GLFramebuffer2D() + { + GLCall(glDeleteFramebuffers(1, &m_FramebufferHandle)); + } + + void GLFramebuffer2D::Init() + { + GLCall(glGenFramebuffers(1, &m_FramebufferHandle)); + GLCall(glGenRenderbuffers(1, &m_DepthbufferHandle)); + + TextureParameters params(TextureFormat::RGBA, TextureFilter::LINEAR, TextureWrap::CLAMP); + m_Texture = spnew GLTexture2D(m_Width, m_Height, params); + + GLCall(glBindRenderbuffer(GL_RENDERBUFFER, m_DepthbufferHandle)); + GLCall(glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, m_Width, m_Height)); + + GLCall(glBindFramebuffer(GL_FRAMEBUFFER, m_FramebufferHandle)); + GLCall(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_Texture->GetHandle(), 0)); + GLCall(glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, m_DepthbufferHandle)); + GLCall(glBindFramebuffer(GL_FRAMEBUFFER, 0)); + } + + void GLFramebuffer2D::Bind() const + { + GLCall(glBindFramebuffer(GL_FRAMEBUFFER, m_FramebufferHandle)); + GLCall(glViewport(0, 0, m_Width, m_Height)); + } + + void GLFramebuffer2D::Unbind() const + { + GLCall(glBindFramebuffer(GL_FRAMEBUFFER, 0)); + } + + void GLFramebuffer2D::Clear() + { + GLCall(glClearColor(m_ClearColor.x, m_ClearColor.y, m_ClearColor.z, m_ClearColor.w)); + GLCall(glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLFramebuffer2D.h b/Sparky-core/src/sp/platform/opengl/GLFramebuffer2D.h new file mode 100644 index 00000000..efb8387a --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLFramebuffer2D.h @@ -0,0 +1,35 @@ +#pragma once + +#include "sp/graphics/API/Framebuffer2D.h" +#include "GLTexture2D.h" +#include "GLCommon.h" + +namespace sp { namespace graphics { + + class GLFramebuffer2D : public Framebuffer2D + { + private: + uint m_FramebufferHandle; + uint m_DepthbufferHandle; + + uint m_Width, m_Height; + maths::vec4 m_ClearColor; + API::GLTexture2D* m_Texture; + public: + GLFramebuffer2D(uint width, uint height); + ~GLFramebuffer2D(); + + void Bind() const override; + void Unbind() const override; + void Clear() override; + + inline uint GetWidth() const override { return m_Width; } + inline uint GetHeight() const override { return m_Height; } + + inline API::Texture* GetTexture() const override { return m_Texture; } + inline void SetClearColor(const maths::vec4& color) override { m_ClearColor = color; } + private: + void Init(); + }; + +} } diff --git a/Sparky-core/src/sp/platform/opengl/GLFramebufferDepth.cpp b/Sparky-core/src/sp/platform/opengl/GLFramebufferDepth.cpp new file mode 100644 index 00000000..9c8c6ba1 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLFramebufferDepth.cpp @@ -0,0 +1,53 @@ +#include "sp/sp.h" +#include "GLFramebufferDepth.h" + +#include "sp/system/Memory.h" + +#include +#include "sp/utils/Log.h" + +namespace sp { namespace graphics { + + GLFramebufferDepth::GLFramebufferDepth(uint width, uint height) + : m_Width(width), m_Height(height) + { + Init(); + } + + GLFramebufferDepth::~GLFramebufferDepth() + { + GLCall(glDeleteFramebuffers(1, &m_FramebufferID)); + } + + void GLFramebufferDepth::Init() + { + GLCall(glGenFramebuffers(1, &m_FramebufferID)); + GLCall(glBindFramebuffer(GL_FRAMEBUFFER, m_FramebufferID)); + + m_Texture = spnew API::GLTextureDepth(m_Width, m_Height); + + GLCall(glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, ((API::GLTextureDepth*)m_Texture)->GetHandle(), 0)); + GLCall(glDrawBuffer(GL_NONE)); + SP_ASSERT(glCheckFramebufferStatus(GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE); + + GLCall(glBindFramebuffer(GL_FRAMEBUFFER, 0)); + } + + void GLFramebufferDepth::Bind() const + { + GLCall(glBindFramebuffer(GL_FRAMEBUFFER, m_FramebufferID)); + GLCall(glViewport(0, 0, m_Width, m_Height)); + } + + void GLFramebufferDepth::Unbind() const + { + GLCall(glBindFramebuffer(GL_FRAMEBUFFER, 0)); + // GLCall(glViewport(0, 0, Application::GetApplication().GetWidth(), Application::GetApplication().GetHeight())); // TODO: Temporary + } + + void GLFramebufferDepth::Clear() + { + GLCall(glClear(GL_DEPTH_BUFFER_BIT)); + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLFramebufferDepth.h b/Sparky-core/src/sp/platform/opengl/GLFramebufferDepth.h new file mode 100644 index 00000000..2e520598 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLFramebufferDepth.h @@ -0,0 +1,32 @@ +#pragma once + +#include "sp/graphics/API/FramebufferDepth.h" +#include "GLTextureDepth.h" +#include "GLCommon.h" + +namespace sp { namespace graphics { + + class GLFramebufferDepth : public FramebufferDepth + { + private: + uint m_FramebufferID; + + uint m_Width, m_Height; + API::GLTextureDepth* m_Texture; + public: + GLFramebufferDepth(uint width, uint height); + ~GLFramebufferDepth(); + + void Bind() const override; + void Unbind() const override; + void Clear() override; + + inline uint GetWidth() const override { return m_Width; } + inline uint GetHeight() const override { return m_Height; } + + inline API::Texture* GetTexture() const override { return m_Texture; } + private: + void Init(); + }; + +} } diff --git a/Sparky-core/src/sp/platform/opengl/GLIndexBuffer.cpp b/Sparky-core/src/sp/platform/opengl/GLIndexBuffer.cpp new file mode 100644 index 00000000..b27748c1 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLIndexBuffer.cpp @@ -0,0 +1,45 @@ +#include "sp/sp.h" +#include "GLIndexBuffer.h" + +#include +#include "sp/utils/Log.h" + +namespace sp { namespace graphics { namespace API { + + GLIndexBuffer::GLIndexBuffer(uint16* data, uint count) + : m_Count(count) + { + GLCall(glGenBuffers(1, &m_Handle)); + GLCall(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_Handle)); + GLCall(glBufferData(GL_ELEMENT_ARRAY_BUFFER, count * sizeof(uint16), data, GL_STATIC_DRAW)); + } + + GLIndexBuffer::GLIndexBuffer(uint* data, uint count) + : m_Count(count) + { + GLCall(glGenBuffers(1, &m_Handle)); + GLCall(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_Handle)); + GLCall(glBufferData(GL_ELEMENT_ARRAY_BUFFER, count * sizeof(uint), data, GL_STATIC_DRAW)); + } + + GLIndexBuffer::~GLIndexBuffer() + { + GLCall(glDeleteBuffers(1, &m_Handle)); + } + + void GLIndexBuffer::Bind() const + { + GLCall(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_Handle)); + } + + void GLIndexBuffer::Unbind() const + { + GLCall(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0)); + } + + uint GLIndexBuffer::GetCount() const + { + return m_Count; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLIndexBuffer.h b/Sparky-core/src/sp/platform/opengl/GLIndexBuffer.h new file mode 100644 index 00000000..92161984 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLIndexBuffer.h @@ -0,0 +1,25 @@ +#pragma once + +#include "sp/graphics/API/IndexBuffer.h" +#include "GLCommon.h" + +namespace sp { namespace graphics { namespace API { + + class GLIndexBuffer : public IndexBuffer + { + private: + uint m_Handle; + uint m_Count; + public: + GLIndexBuffer(uint16* data, uint count); + GLIndexBuffer(uint* data, uint count); + ~GLIndexBuffer(); + + void Bind() const; + void Unbind() const; + + uint GetCount() const; + }; + + +} } } diff --git a/Sparky-core/src/sp/platform/opengl/GLRenderer.cpp b/Sparky-core/src/sp/platform/opengl/GLRenderer.cpp new file mode 100644 index 00000000..5851e708 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLRenderer.cpp @@ -0,0 +1,115 @@ +#include "sp/sp.h" +#include "GLRenderer.h" + +#include "sp/utils/Log.h" + +#include + +namespace sp { namespace graphics { + + GLRenderer::GLRenderer() + { + m_Context = API::GLContext::Get(); + } + + void GLRenderer::InitInternal() + { + SetDepthTesting(true); + SetBlend(true); + SetBlendFunction(RendererBlendFunction::SOURCE_ALPHA, RendererBlendFunction::ONE_MINUS_SOURCE_ALPHA); + + SP_WARN("----------------------------------"); + SP_WARN(" OpenGL:"); + SP_WARN(" ", glGetString(GL_VERSION)); + SP_WARN(" ", glGetString(GL_VENDOR)); + SP_WARN(" ", glGetString(GL_RENDERER)); + SP_WARN("----------------------------------"); + + // Move to API independent layer + GLCall(glEnable(GL_CULL_FACE)); + GLCall(glFrontFace(GL_CCW)); + GLCall(glCullFace(GL_BACK)); + + m_RendererTitle = "OpenGL"; + } + + void GLRenderer::ClearInternal(uint buffer) + { + GLCall(glClear(SPRendererBufferToGL(buffer))); + } + + void GLRenderer::PresentInternal() + { + m_Context->Present(); + } + + void GLRenderer::SetDepthTestingInternal(bool enabled) + { + if (enabled) + { + GLCall(glEnable(GL_DEPTH_TEST)); + } + else + { + GLCall(glDisable(GL_DEPTH_TEST)); + } + } + + void GLRenderer::SetBlendInternal(bool enabled) + { + if (enabled) + { + GLCall(glEnable(GL_BLEND)); + } + else + { + GLCall(glDisable(GL_BLEND)); + } + } + + void GLRenderer::SetBlendFunctionInternal(RendererBlendFunction source, RendererBlendFunction destination) + { + GLCall(glBlendFunc(SPRendererBlendFunctionToGL(source), SPRendererBlendFunctionToGL(destination))); + } + + void GLRenderer::SetBlendEquationInternal(RendererBlendFunction blendEquation) + { + SP_ASSERT(false, "Not implemented"); + } + + void GLRenderer::SetViewportInternal(uint x, uint y, uint width, uint height) + { + GLCall(glViewport(x, y, width, height)); + } + + const String& GLRenderer::GetTitleInternal() const + { + return m_RendererTitle; + } + + uint GLRenderer::SPRendererBufferToGL(uint buffer) + { + uint result = 0; + if (buffer & RENDERER_BUFFER_COLOR) + result |= GL_COLOR_BUFFER_BIT; + if (buffer & RENDERER_BUFFER_DEPTH) + result |= GL_DEPTH_BUFFER_BIT; + if (buffer & RENDERER_BUFFER_STENCIL) + result |= GL_STENCIL_BUFFER_BIT; + return result; + } + + uint GLRenderer::SPRendererBlendFunctionToGL(RendererBlendFunction function) + { + switch (function) + { + case RendererBlendFunction::ZERO: return GL_ZERO; + case RendererBlendFunction::ONE: return GL_ONE; + case RendererBlendFunction::SOURCE_ALPHA: return GL_SRC_ALPHA; + case RendererBlendFunction::DESTINATION_ALPHA: return GL_DST_ALPHA; + case RendererBlendFunction::ONE_MINUS_SOURCE_ALPHA: return GL_ONE_MINUS_SRC_ALPHA; + } + return 0; + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLRenderer.h b/Sparky-core/src/sp/platform/opengl/GLRenderer.h new file mode 100644 index 00000000..b643f775 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLRenderer.h @@ -0,0 +1,35 @@ +#pragma once + +#include "sp/graphics/Renderer.h" +#include "GLContext.h" +#include "GLCommon.h" + +namespace sp { namespace graphics { + + class GLRenderer : public Renderer + { + private: + API::GLContext* m_Context; + String m_RendererTitle; + public: + GLRenderer(); + protected: + void InitInternal() override; + + void ClearInternal(uint buffer) override; + void PresentInternal() override; + + void SetDepthTestingInternal(bool enabled) override; + void SetBlendInternal(bool enabled) override; + void SetViewportInternal(uint x, uint y, uint width, uint height) override; + + void SetBlendFunctionInternal(RendererBlendFunction source, RendererBlendFunction destination) override; + void SetBlendEquationInternal(RendererBlendFunction blendEquation) override; + + const String& GetTitleInternal() const override; + public: + static uint SPRendererBufferToGL(uint buffer); + static uint SPRendererBlendFunctionToGL(RendererBlendFunction function); + }; + +} } diff --git a/Sparky-core/src/sp/platform/opengl/GLShader.cpp b/Sparky-core/src/sp/platform/opengl/GLShader.cpp new file mode 100644 index 00000000..2d6c54c7 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLShader.cpp @@ -0,0 +1,725 @@ +#include "sp/sp.h" +#include "GLShader.h" + +#include +#include "sp/system/Memory.h" + +namespace sp { namespace graphics { namespace API { + + enum class ShaderType + { + UNKNOWN, VERTEX, FRAGMENT + }; + + bool GLShader::TryCompile(const String& source, String& error) + { + String vert, frag; + String* shaders[2] = { &vert, &frag }; + GLShader::PreProcess(source, shaders); + GLShaderErrorInfo info; + if (!GLShader::Compile(shaders, info)) + { + error = info.message[info.shader]; + return false; + } + return true; + } + + bool GLShader::TryCompileFromFile(const String& filepath, String& error) + { + String source = VFS::Get()->ReadTextFile(filepath); + return TryCompile(source, error); + } + + GLShader::GLShader(const String& name, const String& source) + : m_Name(name), m_Source(source) + { + Init(); + } + + GLShader::~GLShader() + { + } + + void GLShader::Init() + { + m_VSUserUniformBuffer = nullptr; + m_PSUserUniformBuffer = nullptr; + + String* shaders[2] = { &m_VertexSource, &m_FragmentSource }; + PreProcess(m_Source, shaders); + Parse(m_VertexSource, m_FragmentSource); + GLShaderErrorInfo error; + m_Handle = Compile(shaders, error); + if (!m_Handle) + SP_ERROR(error.message[error.shader]); + SP_ASSERT(m_Handle); + ResolveUniforms(); + ValidateUniforms(); + } + + void GLShader::Shutdown() + { + GLCall(glDeleteProgram(m_Handle)); + } + + void GLShader::PreProcess(const String& source, String** shaders) + { + ShaderType type = ShaderType::UNKNOWN; + + std::vector lines = GetLines(source); + for (uint i = 0; i < lines.size(); i++) + { + const char* str = lines[i].c_str(); + if (strstr(str, "#shader")) + { + if (strstr(str, "vertex")) + type = ShaderType::VERTEX; + else if (strstr(str, "fragment")) + type = ShaderType::FRAGMENT; + } + else if (type != ShaderType::UNKNOWN) + { + shaders[(int32)type - 1]->append(str); + shaders[(int32)type - 1]->append("\n"); + } + } + } + + uint GLShader::Compile(String** shaders, GLShaderErrorInfo& info) + { + const char* vertexSource = shaders[0]->c_str(); + const char* fragmentSource = shaders[1]->c_str(); + + GLCall(uint program = glCreateProgram()); + GLCall(GLuint vertex = glCreateShader(GL_VERTEX_SHADER)); + GLCall(GLuint fragment = glCreateShader(GL_FRAGMENT_SHADER)); + + GLCall(glShaderSource(vertex, 1, &vertexSource, NULL)); + GLCall(glCompileShader(vertex)); + + GLint result; + GLCall(glGetShaderiv(vertex, GL_COMPILE_STATUS, &result)); + if (result == GL_FALSE) + { + GLint length; + GLCall(glGetShaderiv(vertex, GL_INFO_LOG_LENGTH, &length)); + std::vector error(length); + GLCall(glGetShaderInfoLog(vertex, length, &length, &error[0])); + String errorMessage(&error[0]); + info.shader = 0; + info.message[info.shader] += "Failed to compile vertex shader!\n"; + info.message[info.shader] += errorMessage; + GLCall(glDeleteShader(vertex)); + return 0; + } + + GLCall(glShaderSource(fragment, 1, &fragmentSource, NULL)); + GLCall(glCompileShader(fragment)); + + GLCall(glGetShaderiv(fragment, GL_COMPILE_STATUS, &result)); + if (result == GL_FALSE) + { + GLint length; + GLCall(glGetShaderiv(fragment, GL_INFO_LOG_LENGTH, &length)); + std::vector error(length); + GLCall(glGetShaderInfoLog(fragment, length, &length, &error[0])); + String errorMessage(&error[0], length); + int32 lineNumber; + sscanf(&error[0], "%*s %*d:%d", &lineNumber); + info.shader = 1; + info.message[info.shader] += "Failed to compile fragment shader!\n"; + + // String line = utils::GetLines(m_FragmentSource)[lineNumber - 1]; + // uint absoluteLine = utils::GetLines(m_VertexSource).size() + lineNumber + 2; + // info.message += lineNumber + "(" + StringFormat::ToString(absoluteLine) + ") " + line; + info.line[info.shader] = lineNumber; + info.message[info.shader] += errorMessage; + GLCall(glDeleteShader(fragment)); + return 0; + } + + GLCall(glAttachShader(program, vertex)); + GLCall(glAttachShader(program, fragment)); + + GLCall(glLinkProgram(program)); + GLCall(glValidateProgram(program)); + + GLCall(glDetachShader(program, vertex)); + GLCall(glDetachShader(program, fragment)); + + GLCall(glDeleteShader(vertex)); + GLCall(glDeleteShader(fragment)); + + return program; + } + + void GLShader::Bind() const + { + GLCall(glUseProgram(m_Handle)); + s_CurrentlyBound = this; + } + + void GLShader::Unbind() const + { + GLCall(glUseProgram(0)); + s_CurrentlyBound = nullptr; + } + + void GLShader::Parse(const String& vertexSource, const String& fragmentSource) + { + m_VSUniformBuffers.push_back(spnew GLShaderUniformBufferDeclaration("Global", 0)); + m_PSUniformBuffers.push_back(spnew GLShaderUniformBufferDeclaration("Global", 1)); + + const char* token; + const char* vstr; + const char* fstr; + + // Vertex Shader + vstr = vertexSource.c_str(); + while (token = FindToken(vstr, "struct")) + ParseUniformStruct(GetBlock(token, &vstr), 0); + + vstr = vertexSource.c_str(); + while (token = FindToken(vstr, "uniform")) + ParseUniform(GetStatement(token, &vstr), 0); + + // Fragment Shader + fstr = fragmentSource.c_str(); + while (token = FindToken(fstr, "struct")) + ParseUniformStruct(GetBlock(token, &fstr), 1); + + fstr = fragmentSource.c_str(); + while (token = FindToken(fstr, "uniform")) + ParseUniform(GetStatement(token, &fstr), 1); + } + + void GLShader::ParseUniform(const String& statement, uint shaderType) + { + std::vector tokens = Tokenize(statement); + uint index = 0; + + index++; // "uniform" + String typeString = tokens[index++]; + String name = tokens[index++]; + // Strip ; from name if present + if (const char* s = strstr(name.c_str(), ";")) + name = String(name.c_str(), s - name.c_str()); + + String n(name); + int32 count = 1; + const char* namestr = n.c_str(); + if (const char* s = strstr(namestr, "[")) + { + name = String(namestr, s - namestr); + + const char* end = strstr(namestr, "]"); + String c(s + 1, end - s); + count = atoi(c.c_str()); + } + + if (IsTypeStringResource(typeString)) + { + ShaderResourceDeclaration* declaration = new GLShaderResourceDeclaration(GLShaderResourceDeclaration::StringToType(typeString), name, count); + m_Resources.push_back(declaration); + } + else + { + GLShaderUniformDeclaration::Type t = GLShaderUniformDeclaration::StringToType(typeString); + GLShaderUniformDeclaration* declaration = nullptr; + + if (t == GLShaderUniformDeclaration::Type::NONE) + { + // Find struct + ShaderStruct* s = FindStruct(typeString); + SP_ASSERT(s); + declaration = new GLShaderUniformDeclaration(s, name, count); + } + else + { + declaration = new GLShaderUniformDeclaration(t, name, count); + } + + if (StartsWith(name, "sys_")) + { + if (shaderType == 0) + ((GLShaderUniformBufferDeclaration*)m_VSUniformBuffers.front())->PushUniform(declaration); + else if (shaderType == 1) + ((GLShaderUniformBufferDeclaration*)m_PSUniformBuffers.front())->PushUniform(declaration); + } + else + { + if (shaderType == 0) + { + if (m_VSUserUniformBuffer == nullptr) + m_VSUserUniformBuffer = new GLShaderUniformBufferDeclaration("", 0); + + m_VSUserUniformBuffer->PushUniform(declaration); + } + else if (shaderType == 1) + { + if (m_PSUserUniformBuffer == nullptr) + m_PSUserUniformBuffer = new GLShaderUniformBufferDeclaration("", 1); + + m_PSUserUniformBuffer->PushUniform(declaration); + } + } + } + } + + void GLShader::ParseUniformStruct(const String& block, uint shaderType) + { + std::vector tokens = Tokenize(block); + + uint index = 0; + index++; // struct + String name = tokens[index++]; + ShaderStruct* uniformStruct = spnew ShaderStruct(name); + index++; // { + while (index < tokens.size()) + { + if (tokens[index] == "}") + break; + + String type = tokens[index++]; + String name = tokens[index++]; + + // Strip ; from name if present + if (const char* s = strstr(name.c_str(), ";")) + name = String(name.c_str(), s - name.c_str()); + + uint count = 1; + const char* namestr = name.c_str(); + if (const char* s = strstr(namestr, "[")) + { + name = String(namestr, s - namestr); + + const char* end = strstr(namestr, "]"); + String c(s + 1, end - s); + count = atoi(c.c_str()); + } + ShaderUniformDeclaration* field = spnew GLShaderUniformDeclaration(GLShaderUniformDeclaration::StringToType(type), name, count); + uniformStruct->AddField(field); + } + m_Structs.push_back(uniformStruct); + } + + bool GLShader::IsTypeStringResource(const String& type) + { + if (type == "sampler2D") return true; + if (type == "samplerCube") return true; + if (type == "sampler2DShadow") return true; + return false; + } + + void GLShader::ResolveUniforms() + { + Bind(); + + for (uint i = 0; i < m_VSUniformBuffers.size(); i++) + { + GLShaderUniformBufferDeclaration* decl = (GLShaderUniformBufferDeclaration*)m_VSUniformBuffers[i]; + const ShaderUniformList& uniforms = decl->GetUniformDeclarations(); + for (uint j = 0; j < uniforms.size(); j++) + { + GLShaderUniformDeclaration* uniform = (GLShaderUniformDeclaration*)uniforms[j]; + if (uniform->GetType() == GLShaderUniformDeclaration::Type::STRUCT) + { + const ShaderStruct& s = uniform->GetShaderUniformStruct(); + const auto& fields = s.GetFields(); + for (uint k = 0; k < fields.size(); k++) + { + GLShaderUniformDeclaration* field = (GLShaderUniformDeclaration*)fields[k]; + field->m_Location = GetUniformLocation(uniform->m_Name + "." + field->m_Name); + } + } + else + { + uniform->m_Location = GetUniformLocation(uniform->m_Name); + } + } + + for (uint i = 0; i < m_PSUniformBuffers.size(); i++) + { + GLShaderUniformBufferDeclaration* decl = (GLShaderUniformBufferDeclaration*)m_PSUniformBuffers[i]; + const ShaderUniformList& uniforms = decl->GetUniformDeclarations(); + for (uint j = 0; j < uniforms.size(); j++) + { + GLShaderUniformDeclaration* uniform = (GLShaderUniformDeclaration*)uniforms[j]; + if (uniform->GetType() == GLShaderUniformDeclaration::Type::STRUCT) + { + const ShaderStruct& s = uniform->GetShaderUniformStruct(); + const auto& fields = s.GetFields(); + for (uint k = 0; k < fields.size(); k++) + { + GLShaderUniformDeclaration* field = (GLShaderUniformDeclaration*)fields[k]; + field->m_Location = GetUniformLocation(uniform->m_Name + "." + field->m_Name); + } + } + else + { + uniform->m_Location = GetUniformLocation(uniform->m_Name); + } + } + } + + { + GLShaderUniformBufferDeclaration* decl = m_VSUserUniformBuffer; + if (decl) + { + const ShaderUniformList& uniforms = decl->GetUniformDeclarations(); + for (uint j = 0; j < uniforms.size(); j++) + { + GLShaderUniformDeclaration* uniform = (GLShaderUniformDeclaration*)uniforms[j]; + if (uniform->GetType() == GLShaderUniformDeclaration::Type::STRUCT) + { + const ShaderStruct& s = uniform->GetShaderUniformStruct(); + const auto& fields = s.GetFields(); + for (uint k = 0; k < fields.size(); k++) + { + GLShaderUniformDeclaration* field = (GLShaderUniformDeclaration*)fields[k]; + field->m_Location = GetUniformLocation(uniform->m_Name + "." + field->m_Name); + } + } + else + { + uniform->m_Location = GetUniformLocation(uniform->m_Name); + } + } + } + } + + { + GLShaderUniformBufferDeclaration* decl = m_PSUserUniformBuffer; + if (decl) + { + const ShaderUniformList& uniforms = decl->GetUniformDeclarations(); + for (uint j = 0; j < uniforms.size(); j++) + { + GLShaderUniformDeclaration* uniform = (GLShaderUniformDeclaration*)uniforms[j]; + if (uniform->GetType() == GLShaderUniformDeclaration::Type::STRUCT) + { + const ShaderStruct& s = uniform->GetShaderUniformStruct(); + const auto& fields = s.GetFields(); + for (uint k = 0; k < fields.size(); k++) + { + GLShaderUniformDeclaration* field = (GLShaderUniformDeclaration*)fields[k]; + field->m_Location = GetUniformLocation(uniform->m_Name + "." + field->m_Name); + } + } + else + { + uniform->m_Location = GetUniformLocation(uniform->m_Name); + } + } + } + } + + uint sampler = 0; + for (uint i = 0; i < m_Resources.size(); i++) + { + GLShaderResourceDeclaration* resource = (GLShaderResourceDeclaration*)m_Resources[i]; + uint location = GetUniformLocation(resource->m_Name); + if (resource->GetCount() == 1) + { + resource->m_Register = sampler; + SetUniform1i(location, sampler++); + } + else if (resource->GetCount() > 1) + { + resource->m_Register = 0; + uint count = resource->GetCount(); + int32* samplers = spnew int32[count]; + for (uint s = 0; s < count; s++) + samplers[s] = s; + SetUniform1iv(resource->GetName(), samplers, count); + spdel[] samplers; + } + } + Unbind(); + } + } + + void GLShader::ValidateUniforms() + { +// if (!HasUniform(SHADER_UNIFORM_PROJECTION_MATRIX_NAME)) +// SP_WARN(m_Name, " shader does not contain pr_matrix uniform."); +// if (!HasUniform(SHADER_UNIFORM_VIEW_MATRIX_NAME)) +// SP_WARN(m_Name, " shader does not contain vw_matrix uniform."); +// if (!HasUniform(SHADER_UNIFORM_MODEL_MATRIX_NAME)) +// SP_WARN(m_Name, " shader does not contain ml_matrix uniform."); +// +// SP_INFO(m_Name, " shader successfully validated."); + } + + bool GLShader::IsSystemUniform(ShaderUniformDeclaration* uniform) const + { + return StartsWith(uniform->GetName(), "sys_"); + } + + GLint GLShader::GetUniformLocation(const String& name) + { + // SP_INFO("Retrieving uniform location for '", name, "'"); + GLCall(GLint result = glGetUniformLocation(m_Handle, name.c_str())); + if (result == -1) + SP_ERROR(m_Name, ": could not find uniform ", name, " in shader!"); + + return result; + } + + void GLShader::SetUniformStruct(GLShaderUniformDeclaration* uniform, byte* data, int32 offset) + { + const ShaderStruct& s = uniform->GetShaderUniformStruct(); + const auto& fields = s.GetFields(); + for (uint k = 0; k < fields.size(); k++) + { + GLShaderUniformDeclaration* field = (GLShaderUniformDeclaration*)fields[k]; + ResolveAndSetUniformField(*field, data, offset); + offset += field->m_Size; + } + } + + ShaderUniformDeclaration* GLShader::FindUniformDeclaration(const String& name, const ShaderUniformBufferDeclaration* buffer) + { + const ShaderUniformList& uniforms = buffer->GetUniformDeclarations(); + for (uint i = 0; i < uniforms.size(); i++) + { + if (uniforms[i]->GetName() == name) + return uniforms[i]; + } + return nullptr; + } + + ShaderUniformDeclaration* GLShader::FindUniformDeclaration(const String& name) + { + ShaderUniformDeclaration* result = nullptr; + for (uint i = 0; i < m_VSUniformBuffers.size(); i++) + { + result = FindUniformDeclaration(name, m_VSUniformBuffers[i]); + if (result) + return result; + } + + for (uint i = 0; i < m_PSUniformBuffers.size(); i++) + { + result = FindUniformDeclaration(name, m_PSUniformBuffers[i]); + if (result) + return result; + } + + result = FindUniformDeclaration(name, m_VSUserUniformBuffer); + if (result) + return result; + + result = FindUniformDeclaration(name, m_PSUserUniformBuffer); + if (result) + return result; + + return result; + } + + void GLShader::SetVSSystemUniformBuffer(byte* data, uint size, uint slot) + { + Bind(); + SP_ASSERT(m_VSUniformBuffers.size() > slot); + ShaderUniformBufferDeclaration* declaration = m_VSUniformBuffers[slot]; + ResolveAndSetUniforms(declaration, data, size); + } + + void GLShader::SetPSSystemUniformBuffer(byte* data, uint size, uint slot) + { + Bind(); + SP_ASSERT(m_PSUniformBuffers.size() > slot); + ShaderUniformBufferDeclaration* declaration = m_PSUniformBuffers[slot]; + ResolveAndSetUniforms(declaration, data, size); + } + + void GLShader::SetVSUserUniformBuffer(byte* data, uint size) + { + ResolveAndSetUniforms(m_VSUserUniformBuffer, data, size); + } + + void GLShader::SetPSUserUniformBuffer(byte* data, uint size) + { + ResolveAndSetUniforms(m_PSUserUniformBuffer, data, size); + } + + ShaderStruct* GLShader::FindStruct(const String& name) + { + for (ShaderStruct* s : m_Structs) + { + if (s->GetName() == name) + return s; + } + return nullptr; + } + + void GLShader::ResolveAndSetUniforms(ShaderUniformBufferDeclaration* buffer, byte* data, uint size) + { + const ShaderUniformList& uniforms = buffer->GetUniformDeclarations(); + for (uint i = 0; i < uniforms.size(); i++) + { + GLShaderUniformDeclaration* uniform = (GLShaderUniformDeclaration*)uniforms[i]; + ResolveAndSetUniform(uniform, data, size); + } + } + + void GLShader::ResolveAndSetUniform(GLShaderUniformDeclaration* uniform, byte* data, uint size) + { + if (uniform->GetLocation() == -1) + return; + + uint offset = uniform->GetOffset(); + switch (uniform->GetType()) + { + case GLShaderUniformDeclaration::Type::FLOAT32: + SetUniform1f(uniform->GetLocation(), *(float*)&data[offset]); + break; + case GLShaderUniformDeclaration::Type::INT32: + SetUniform1i(uniform->GetLocation(), *(int32*)&data[offset]); + break; + case GLShaderUniformDeclaration::Type::VEC2: + SetUniform2f(uniform->GetLocation(), *(maths::vec2*)&data[offset]); + break; + case GLShaderUniformDeclaration::Type::VEC3: + SetUniform3f(uniform->GetLocation(), *(maths::vec3*)&data[offset]); + break; + case GLShaderUniformDeclaration::Type::VEC4: + SetUniform4f(uniform->GetLocation(), *(maths::vec4*)&data[offset]); + break; + case GLShaderUniformDeclaration::Type::MAT3: + // TODO: SetUniformMat3(uniform->GetLocation(), *(maths::mat3*)&data[offset]); + break; + case GLShaderUniformDeclaration::Type::MAT4: + SetUniformMat4(uniform->GetLocation(), *(maths::mat4*)&data[offset]); + break; + case GLShaderUniformDeclaration::Type::STRUCT: + SetUniformStruct(uniform, data, offset); + break; + default: + SP_ASSERT(false, "Unknown type!"); + } + } + + void GLShader::SetUniform(const String& name, byte* data) + { + ShaderUniformDeclaration* uniform = FindUniformDeclaration(name); + if (!uniform) + { + SP_ERROR("Cannot find uniform in ", m_Name, " shader with name '", name, "'"); + return; + } + ResolveAndSetUniform((GLShaderUniformDeclaration*)uniform, data, 0); + } + + void GLShader::ResolveAndSetUniformField(const GLShaderUniformDeclaration& field, byte* data, int32 offset) + { + switch (field.GetType()) + { + case GLShaderUniformDeclaration::Type::FLOAT32: + SetUniform1f(field.GetLocation(), *(float*)&data[offset]); + break; + case GLShaderUniformDeclaration::Type::INT32: + SetUniform1i(field.GetLocation(), *(int32*)&data[offset]); + break; + case GLShaderUniformDeclaration::Type::VEC2: + SetUniform2f(field.GetLocation(), *(maths::vec2*)&data[offset]); + break; + case GLShaderUniformDeclaration::Type::VEC3: + SetUniform3f(field.GetLocation(), *(maths::vec3*)&data[offset]); + break; + case GLShaderUniformDeclaration::Type::VEC4: + SetUniform4f(field.GetLocation(), *(maths::vec4*)&data[offset]); + break; + case GLShaderUniformDeclaration::Type::MAT3: + // TODO: SetUniformMat3(field.location, *(maths::mat3*)&data[offset]); + break; + case GLShaderUniformDeclaration::Type::MAT4: + SetUniformMat4(field.GetLocation(), *(maths::mat4*)&data[offset]); + break; + default: + SP_ASSERT(false, "Unknown type!"); + } + } + + void GLShader::SetUniform1f(const String& name, float value) + { + SetUniform1f(GetUniformLocation(name), value); + } + + void GLShader::SetUniform1fv(const String& name, float* value, int32 count) + { + SetUniform1fv(GetUniformLocation(name), value, count); + } + + void GLShader::SetUniform1i(const String& name, int32 value) + { + SetUniform1i(GetUniformLocation(name), value); + } + + void GLShader::SetUniform1iv(const String& name, int32* value, int32 count) + { + SetUniform1iv(GetUniformLocation(name), value, count); + } + + void GLShader::SetUniform2f(const String& name, const maths::vec2& vector) + { + SetUniform2f(GetUniformLocation(name), vector); + } + + void GLShader::SetUniform3f(const String& name, const maths::vec3& vector) + { + SetUniform3f(GetUniformLocation(name), vector); + } + + void GLShader::SetUniform4f(const String& name, const maths::vec4& vector) + { + SetUniform4f(GetUniformLocation(name), vector); + } + + void GLShader::SetUniformMat4(const String& name, const maths::mat4& matrix) + { + SetUniformMat4(GetUniformLocation(name), matrix); + } + + void GLShader::SetUniform1f(uint location, float value) + { + GLCall(glUniform1f(location, value)); + } + + void GLShader::SetUniform1fv(uint location, float* value, int32 count) + { + GLCall(glUniform1fv(location, count, value)); + } + + void GLShader::SetUniform1i(uint location, int32 value) + { + GLCall(glUniform1i(location, value)); + } + + void GLShader::SetUniform1iv(uint location, int32* value, int32 count) + { + GLCall(glUniform1iv(location, count, value)); + } + + void GLShader::SetUniform2f(uint location, const maths::vec2& vector) + { + GLCall(glUniform2f(location, vector.x, vector.y)); + } + + void GLShader::SetUniform3f(uint location, const maths::vec3& vector) + { + GLCall(glUniform3f(location, vector.x, vector.y, vector.z)); + } + + void GLShader::SetUniform4f(uint location, const maths::vec4& vector) + { + GLCall(glUniform4f(location, vector.x, vector.y, vector.z, vector.w)); + } + + void GLShader::SetUniformMat4(uint location, const maths::mat4& matrix) + { + GLCall(glUniformMatrix4fv(location, 1, GL_TRUE, matrix.elements)); + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLShader.h b/Sparky-core/src/sp/platform/opengl/GLShader.h new file mode 100644 index 00000000..6b849f88 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLShader.h @@ -0,0 +1,107 @@ +#pragma once + +#include "sp/graphics/shaders/Shader.h" +#include "GLCommon.h" +#include "GLShaderUniform.h" +#include "GLShaderResource.h" + +namespace sp { namespace graphics { namespace API { + + struct GLShaderErrorInfo + { + uint shader; + String message[2]; + uint line[2]; + }; + + class GLShader : public Shader + { + private: + friend class Shader; + friend class ShaderManager; + private: + uint m_Handle; + String m_Name, m_Path; + String m_Source; + String m_VertexSource, m_FragmentSource; + + ShaderUniformBufferList m_VSUniformBuffers; + ShaderUniformBufferList m_PSUniformBuffers; + GLShaderUniformBufferDeclaration* m_VSUserUniformBuffer; + GLShaderUniformBufferDeclaration* m_PSUserUniformBuffer; + ShaderResourceList m_Resources; + ShaderStructList m_Structs; + public: + GLShader(const String& name, const String& source); + ~GLShader(); + + void Init(); + void Shutdown(); + void Bind() const override; + void Unbind() const override; + + void SetVSSystemUniformBuffer(byte* data, uint size, uint slot) override; + void SetPSSystemUniformBuffer(byte* data, uint size, uint slot) override; + + void SetVSUserUniformBuffer(byte* data, uint size) override; + void SetPSUserUniformBuffer(byte* data, uint size) override; + + void SetUniform(const String& name, byte* data); + void ResolveAndSetUniformField(const GLShaderUniformDeclaration& field, byte* data, int32 offset); + + inline const String& GetName() const override { return m_Name; } + inline const String& GetFilePath() const override { return m_Path; } + + inline const ShaderUniformBufferList& GetVSSystemUniforms() const override { return m_VSUniformBuffers; } + inline const ShaderUniformBufferList& GetPSSystemUniforms() const override { return m_PSUniformBuffers; } + inline const ShaderUniformBufferDeclaration* GetVSUserUniformBuffer() const override { return m_VSUserUniformBuffer; } + inline const ShaderUniformBufferDeclaration* GetPSUserUniformBuffer() const override { return m_PSUserUniformBuffer; } + inline const ShaderResourceList& GetResources() const override { return m_Resources; } + private: + static uint Compile(String** shaders, GLShaderErrorInfo& info = GLShaderErrorInfo()); + static void PreProcess(const String& source, String** shaders); + + void Parse(const String& vertexSource, const String& fragmentSource); + void ParseUniform(const String& statement, uint shaderType); + void ParseUniformStruct(const String& block, uint shaderType); + + bool IsTypeStringResource(const String& type); + + ShaderStruct* FindStruct(const String& name); + + void ResolveUniforms(); + void ValidateUniforms(); + bool IsSystemUniform(ShaderUniformDeclaration* uniform) const; + int32 GetUniformLocation(const String& name); + + ShaderUniformDeclaration* FindUniformDeclaration(const String& name, const ShaderUniformBufferDeclaration* buffer); + ShaderUniformDeclaration* FindUniformDeclaration(const String& name); + + void ResolveAndSetUniforms(ShaderUniformBufferDeclaration* buffer, byte* data, uint size); + void ResolveAndSetUniform(GLShaderUniformDeclaration* uniform, byte* data, uint size); + + void SetUniformStruct(GLShaderUniformDeclaration* uniform, byte* data, int32 offset); + + void SetUniform1f(const String& name, float value); + void SetUniform1fv(const String& name, float* value, int32 count); + void SetUniform1i(const String& name, int32 value); + void SetUniform1iv(const String& name, int32* value, int32 count); + void SetUniform2f(const String& name, const maths::vec2& vector); + void SetUniform3f(const String& name, const maths::vec3& vector); + void SetUniform4f(const String& name, const maths::vec4& vector); + void SetUniformMat4(const String& name, const maths::mat4& matrix); + + void SetUniform1f(uint location, float value); + void SetUniform1fv(uint location, float* value, int32 count); + void SetUniform1i(uint location, int32 value); + void SetUniform1iv(uint location, int32* value, int32 count); + void SetUniform2f(uint location, const maths::vec2& vector); + void SetUniform3f(uint location, const maths::vec3& vector); + void SetUniform4f(uint location, const maths::vec4& vector); + void SetUniformMat4(uint location, const maths::mat4& matrix); + public: + static bool TryCompile(const String& source, String& error); + static bool TryCompileFromFile(const String& filepath, String& error); + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLShaderResource.cpp b/Sparky-core/src/sp/platform/opengl/GLShaderResource.cpp new file mode 100644 index 00000000..2dd95850 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLShaderResource.cpp @@ -0,0 +1,33 @@ +#include "sp/sp.h" +#include "GLShaderResource.h" + +namespace sp { namespace graphics { namespace API { + + GLShaderResourceDeclaration::GLShaderResourceDeclaration(Type type, const String& name, uint count) + : m_Type(type), m_Name(name), m_Count(count) + { + m_Name = name; + m_Count = count; + } + + GLShaderResourceDeclaration::Type GLShaderResourceDeclaration::StringToType(const String& type) + { + if (type == "sampler2D") return Type::TEXTURE2D; + if (type == "samplerCube") return Type::TEXTURECUBE; + if (type == "samplerShadow") return Type::TEXTURESHADOW; + + return Type::NONE; + } + + String GLShaderResourceDeclaration::TypeToString(Type type) + { + switch (type) + { + case Type::TEXTURE2D: return "sampler2D"; + case Type::TEXTURECUBE: return "samplerCube"; + case Type::TEXTURESHADOW: return "samplerShadow"; + } + return "Invalid Type"; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLShaderResource.h b/Sparky-core/src/sp/platform/opengl/GLShaderResource.h new file mode 100644 index 00000000..5b3af93b --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLShaderResource.h @@ -0,0 +1,37 @@ +#pragma once + +#include "sp/String.h" +#include "sp/graphics/shaders/ShaderResource.h" +#include "GLShaderUniform.h" +#include "GLCommon.h" + +namespace sp { namespace graphics { namespace API { + + class GLShaderResourceDeclaration : public ShaderResourceDeclaration + { + public: + enum class Type + { + NONE, TEXTURE2D, TEXTURECUBE, TEXTURESHADOW + }; + private: + friend class GLShader; + private: + String m_Name; + uint m_Register; + uint m_Count; + Type m_Type; + public: + GLShaderResourceDeclaration(Type type, const String& name, uint count); + + inline const String& GetName() const override { return m_Name; } + inline uint GetRegister() const override { return m_Register; } + inline uint GetCount() const override { return m_Count; } + + inline Type GetType() const { return m_Type; } + public: + static Type StringToType(const String& type); + static String TypeToString(Type type); + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLShaderUniform.cpp b/Sparky-core/src/sp/platform/opengl/GLShaderUniform.cpp new file mode 100644 index 00000000..c2ed5731 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLShaderUniform.cpp @@ -0,0 +1,103 @@ +#include "sp/sp.h" +#include "GLShaderUniform.h" + +#include "sp/graphics/shaders/Shader.h" + +namespace sp { namespace graphics { namespace API { + + GLShaderUniformDeclaration::GLShaderUniformDeclaration(Type type, const String& name, uint count) + : m_Type(type), m_Struct(nullptr) + { + m_Name = name; + m_Count = count; + m_Size = SizeOfUniformType(type) * count; + } + + GLShaderUniformDeclaration::GLShaderUniformDeclaration(ShaderStruct* uniformStruct, const String& name, uint count) + : m_Struct(uniformStruct), m_Type(GLShaderUniformDeclaration::Type::STRUCT) + { + m_Name = name; + m_Count = count; + m_Size = m_Struct->GetSize() * count; + } + + void GLShaderUniformDeclaration::SetOffset(uint offset) + { + if (m_Type == GLShaderUniformDeclaration::Type::STRUCT) + m_Struct->SetOffset(offset); + + m_Offset = offset; + } + + uint GLShaderUniformDeclaration::SizeOfUniformType(Type type) + { + switch (type) + { + case GLShaderUniformDeclaration::Type::INT32: return 4; + case GLShaderUniformDeclaration::Type::FLOAT32: return 4; + case GLShaderUniformDeclaration::Type::VEC2: return 4 * 2; + case GLShaderUniformDeclaration::Type::VEC3: return 4 * 3; + case GLShaderUniformDeclaration::Type::VEC4: return 4 * 4; + case GLShaderUniformDeclaration::Type::MAT3: return 4 * 3 * 3; + case GLShaderUniformDeclaration::Type::MAT4: return 4 * 4 * 4; + } + return 0; + } + + GLShaderUniformDeclaration::Type GLShaderUniformDeclaration::StringToType(const String& type) + { + if (type == "int32") return Type::INT32; + if (type == "float") return Type::FLOAT32; + if (type == "vec2") return Type::VEC2; + if (type == "vec3") return Type::VEC3; + if (type == "vec4") return Type::VEC4; + if (type == "mat3") return Type::MAT3; + if (type == "mat4") return Type::MAT4; + + return Type::NONE; + } + + String GLShaderUniformDeclaration::TypeToString(Type type) + { + switch (type) + { + case GLShaderUniformDeclaration::Type::INT32: return "int32"; + case GLShaderUniformDeclaration::Type::FLOAT32: return "float"; + case GLShaderUniformDeclaration::Type::VEC2: return "vec2"; + case GLShaderUniformDeclaration::Type::VEC3: return "vec3"; + case GLShaderUniformDeclaration::Type::VEC4: return "vec4"; + case GLShaderUniformDeclaration::Type::MAT3: return "mat3"; + case GLShaderUniformDeclaration::Type::MAT4: return "mat4"; + } + return "Invalid Type"; + } + + GLShaderUniformBufferDeclaration::GLShaderUniformBufferDeclaration(const String& name, uint shaderType) + : m_Name(name), m_ShaderType(shaderType), m_Size(0), m_Register(0) + { + } + + void GLShaderUniformBufferDeclaration::PushUniform(GLShaderUniformDeclaration* uniform) + { + uint offset = 0; + if (m_Uniforms.size()) + { + GLShaderUniformDeclaration* previous = (GLShaderUniformDeclaration*)m_Uniforms.back(); + offset = previous->m_Offset + previous->m_Size; + } + uniform->SetOffset(offset); + m_Size += uniform->GetSize(); + m_Uniforms.push_back(uniform); + } + + ShaderUniformDeclaration* GLShaderUniformBufferDeclaration::FindUniform(const String& name) + { + for (ShaderUniformDeclaration* uniform : m_Uniforms) + { + if (uniform->GetName() == name) + return uniform; + } + return nullptr; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLShaderUniform.h b/Sparky-core/src/sp/platform/opengl/GLShaderUniform.h new file mode 100644 index 00000000..030e5ccf --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLShaderUniform.h @@ -0,0 +1,83 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/graphics/shaders/ShaderUniform.h" +#include "GLCommon.h" + +namespace sp { namespace graphics { namespace API { + + class GLShaderUniformDeclaration : public ShaderUniformDeclaration + { + private: + friend class GLShader; + friend class GLShaderUniformBufferDeclaration; + public: + enum class Type + { + NONE, FLOAT32, VEC2, VEC3, VEC4, MAT3, MAT4, INT32, STRUCT + }; + private: + String m_Name; + uint m_Size; + uint m_Count; + uint m_Offset; + + Type m_Type; + ShaderStruct* m_Struct; + mutable int32 m_Location; + public: + GLShaderUniformDeclaration(Type type, const String& name, uint count = 1); + GLShaderUniformDeclaration(ShaderStruct* uniformStruct, const String& name, uint count = 1); + + inline const String& GetName() const override { return m_Name; } + inline uint GetSize() const override { return m_Size; } + inline uint GetCount() const override { return m_Count; } + inline uint GetOffset() const override { return m_Offset; } + inline uint GetAbsoluteOffset() const { return m_Struct ? m_Struct->GetOffset() + m_Offset : m_Offset; } + + int32 GetLocation() const { return m_Location; } + inline Type GetType() const { return m_Type; } + inline const ShaderStruct& GetShaderUniformStruct() const { SP_ASSERT(m_Struct); return *m_Struct; } + protected: + void SetOffset(uint offset) override; + public: + static uint SizeOfUniformType(Type type); + static Type StringToType(const String& type); + static String TypeToString(Type type); + }; + + struct SP_API GLShaderUniformField + { + GLShaderUniformDeclaration::Type type; + String name; + uint count; + mutable uint size; + mutable int32 location; + }; + + // TODO: Eventually support OpenGL uniform buffers. This is more platform-side. + class GLShaderUniformBufferDeclaration : public ShaderUniformBufferDeclaration + { + private: + friend class Shader; + private: + String m_Name; + ShaderUniformList m_Uniforms; + uint m_Register; + uint m_Size; + uint m_ShaderType; // 0 = VS, 1 = PS + public: + GLShaderUniformBufferDeclaration(const String& name, uint shaderType); + + void PushUniform(GLShaderUniformDeclaration* uniform); + + inline const String& GetName() const override { return m_Name; } + inline uint GetRegister() const override { return m_Register; } + inline uint GetShaderType() const override { return m_ShaderType; } + inline uint GetSize() const override { return m_Size; } + inline const ShaderUniformList& GetUniformDeclarations() const override { return m_Uniforms; } + + ShaderUniformDeclaration* FindUniform(const String& name); + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLTexture2D.cpp b/Sparky-core/src/sp/platform/opengl/GLTexture2D.cpp new file mode 100644 index 00000000..233963ab --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLTexture2D.cpp @@ -0,0 +1,142 @@ +#include "sp/sp.h" +#include "GLTexture2D.h" + +#include +#include + +#include "sp/utils/ImageLoad.h" +#include "sp/platform/opengl/GLShader.h" +#include "sp/system/Memory.h" + +namespace sp { namespace graphics { namespace API { + + GLTexture2D::GLTexture2D(uint width, uint height, TextureParameters parameters, TextureLoadOptions loadOptions) + : m_FileName("NULL") + { + m_Width = width; + m_Height = height; + m_Parameters = parameters; + m_LoadOptions = loadOptions; + m_Handle = Load(); + } + + GLTexture2D::GLTexture2D(uint width, uint height, uint color, TextureParameters parameters, TextureLoadOptions loadOptions) + : m_FileName("NULL") + { + m_Width = width; + m_Height = height; + m_Parameters = parameters; + m_LoadOptions = loadOptions; + m_Handle = Load(); + + SetData(color); + } + + GLTexture2D::GLTexture2D(const String& name, const String& filename, TextureParameters parameters, TextureLoadOptions loadOptions) + : m_FileName(filename) + { + m_Name = name; + m_Parameters = parameters; + m_LoadOptions = loadOptions; + m_Handle = Load(); + } + + GLTexture2D::~GLTexture2D() + { + GLCall(glDeleteTextures(1, &m_Handle)); + } + + uint GLTexture2D::Load() + { + // TODO: Split this up into loading from file vs. generating from data + byte* pixels = nullptr; + if (m_FileName != "NULL") + { + uint bits; + pixels = LoadImage(m_FileName.c_str(), &m_Width, &m_Height, &bits, !m_LoadOptions.flipY); // FreeImage loads bottom->top + if (bits != 24 && bits != 32) + SP_ERROR("[Texture] Unsupported image bit-depth! (", bits, ")"); + m_Parameters.format = bits == 24 ? TextureFormat::RGB : TextureFormat::RGBA; + } + + uint handle; + GLCall(glGenTextures(1, &handle)); + GLCall(glBindTexture(GL_TEXTURE_2D, handle)); + GLCall(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, m_Parameters.filter == TextureFilter::LINEAR ? GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST)); + GLCall(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, m_Parameters.filter == TextureFilter::LINEAR ? GL_LINEAR : GL_NEAREST)); + GLCall(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, SPTextureWrapToGL(s_WrapMode))); + GLCall(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, SPTextureWrapToGL(s_WrapMode))); + + GLCall(glTexImage2D(GL_TEXTURE_2D, 0, SPTextureFormatToGL(m_Parameters.format), m_Width, m_Height, 0, SPTextureFormatToGL(m_Parameters.format), GL_UNSIGNED_BYTE, pixels ? pixels : NULL)); + GLCall(glGenerateMipmap(GL_TEXTURE_2D)); + GLCall(glBindTexture(GL_TEXTURE_2D, 0)); + + if (pixels != nullptr) + spdel[] pixels; + + return handle; + } + + void GLTexture2D::SetData(const void* pixels) + { + GLCall(glBindTexture(GL_TEXTURE_2D, m_Handle)); + GLCall(glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, m_Width, m_Height, SPTextureFormatToGL(m_Parameters.format), GL_UNSIGNED_BYTE, pixels)); + } + + void GLTexture2D::SetData(uint color) + { + SP_ASSERT(false, "Broken"); + uint stride = m_Parameters.format == TextureFormat::RGB ? 3 : 4; + uint size = m_Width * m_Height * stride; + byte* data = new byte[size]; + for (uint i = 0; i < size; i += stride) + { + data[i + 0] = (color & 0xff); + data[i + 1] = (color & 0xff00) >> 8; + data[i + 2] = (color & 0xff0000) >> 16; + if (stride == 4) + data[i + 3] = (color & 0xff000000) >> 24; + } + + SetData(data); + spdel[] data; + } + + void GLTexture2D::Bind(uint slot) const + { + GLCall(glActiveTexture(GL_TEXTURE0 + slot)); + GLCall(glBindTexture(GL_TEXTURE_2D, m_Handle)); + } + + void GLTexture2D::Unbind(uint slot) const + { + GLCall(glActiveTexture(GL_TEXTURE0 + slot)); + GLCall(glBindTexture(GL_TEXTURE_2D, 0)); + } + + uint GLTexture2D::SPTextureFormatToGL(TextureFormat format) + { + switch (format) + { + case TextureFormat::RGBA: return GL_RGBA; + case TextureFormat::RGB: return GL_RGB; + case TextureFormat::LUMINANCE: return GL_LUMINANCE; + case TextureFormat::LUMINANCE_ALPHA: return GL_LUMINANCE_ALPHA; + } + return 0; + } + + uint GLTexture2D::SPTextureWrapToGL(TextureWrap wrap) + { + switch (wrap) + { + case TextureWrap::CLAMP: return GL_CLAMP; + case TextureWrap::CLAMP_TO_BORDER: return GL_CLAMP_TO_BORDER; + case TextureWrap::CLAMP_TO_EDGE: return GL_CLAMP_TO_EDGE; + case TextureWrap::REPEAT: return GL_REPEAT; + case TextureWrap::MIRRORED_REPEAT: return GL_MIRRORED_REPEAT; + } + return 0; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLTexture2D.h b/Sparky-core/src/sp/platform/opengl/GLTexture2D.h new file mode 100644 index 00000000..37eb9c10 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLTexture2D.h @@ -0,0 +1,45 @@ +#pragma once + +#include "sp/graphics/API/Texture2D.h" +#include "GLCommon.h" + +namespace sp { namespace graphics { namespace API { + + class GLTexture2D : public Texture2D + { + private: + String m_Name; + String m_FileName; + uint m_Handle; + uint m_Width, m_Height; + TextureParameters m_Parameters; + TextureLoadOptions m_LoadOptions; + public: + GLTexture2D(uint width, uint height, TextureParameters parameters = TextureParameters(), TextureLoadOptions loadOptions = TextureLoadOptions()); + GLTexture2D(uint width, uint height, uint color, TextureParameters parameters = TextureParameters(), TextureLoadOptions loadOptions = TextureLoadOptions()); + GLTexture2D(const String& name, const String& filename, TextureParameters parameters = TextureParameters(), TextureLoadOptions loadOptions = TextureLoadOptions()); + + ~GLTexture2D(); + + void Bind(uint slot = 0) const override; + void Unbind(uint slot = 0) const override; + + virtual void SetData(const void* pixels) override; + virtual void SetData(uint color) override; + + uint GetHandle() const { return m_Handle; } + + inline uint GetWidth() const { return m_Width; } + inline uint GetHeight() const { return m_Height; } + + inline const String& GetName() const { return m_Name; } + inline const String& GetFilepath() const { return m_FileName; } + private: + uint Load(); + public: + static uint SPTextureFormatToGL(TextureFormat format); + static uint SPTextureWrapToGL(TextureWrap wrap); + }; + + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLTextureCube.cpp b/Sparky-core/src/sp/platform/opengl/GLTextureCube.cpp new file mode 100644 index 00000000..3a25588d --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLTextureCube.cpp @@ -0,0 +1,204 @@ +#include "sp/sp.h" +#include "GLTextureCube.h" + +#include +#include + +#include "sp/utils/ImageLoad.h" + +#include "sp/system/Memory.h" + +#include "GLTexture2D.h" + +namespace sp { namespace graphics { namespace API { + + GLTextureCube::GLTextureCube(const String& name, const String& filepath) + { + m_Name = name; + m_Files[0] = filepath; + m_Handle = LoadFromSingleFile(); + } + + GLTextureCube::GLTextureCube(const String& name, const String* files) + { + m_Name = name; + m_Files = spnew String[6]; + for (uint i = 0; i < 6; i++) + m_Files[i] = files[i]; + m_Handle = LoadFromMultipleFiles(); + } + + GLTextureCube::GLTextureCube(const String& name, const String* files, uint mips, InputFormat format) + { + m_Name = name; + m_Files = spnew String[mips]; + for (uint i = 0; i < mips; i++) + m_Files[i] = files[i]; + if (format == InputFormat::VERTICAL_CROSS) + m_Handle = LoadFromVCross(mips); + } + + GLTextureCube::~GLTextureCube() + { + GLCall(glDeleteTextures(1, &m_Handle)); + } + + void GLTextureCube::Bind(uint slot) const + { + GLCall(glActiveTexture(GL_TEXTURE0 + slot)); + GLCall(glBindTexture(GL_TEXTURE_CUBE_MAP, m_Handle)); + } + + void GLTextureCube::Unbind(uint slot) const + { + GLCall(glActiveTexture(GL_TEXTURE0 + slot)); + GLCall(glBindTexture(GL_TEXTURE_CUBE_MAP, 0)); + } + + uint GLTextureCube::LoadFromSingleFile() + { + // TODO: Implement + return 0; + } + + uint GLTextureCube::LoadFromMultipleFiles() + { + const String& xpos = m_Files[0]; + const String& xneg = m_Files[1]; + const String& ypos = m_Files[2]; + const String& yneg = m_Files[3]; + const String& zpos = m_Files[4]; + const String& zneg = m_Files[5]; + + m_Parameters.format = TextureFormat::RGBA; + + uint width, height, bits; + byte* xp = LoadImage(xpos, &width, &height, &bits, true); + byte* xn = LoadImage(xneg, &width, &height, &bits, true); + byte* yp = LoadImage(ypos, &width, &height, &bits, true); + byte* yn = LoadImage(yneg, &width, &height, &bits, true); + byte* zp = LoadImage(zpos, &width, &height, &bits, true); + byte* zn = LoadImage(zneg, &width, &height, &bits, true); + + uint result; + GLCall(glGenTextures(1, &result)); + GLCall(glBindTexture(GL_TEXTURE_CUBE_MAP, result)); + GLCall(glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR)); + GLCall(glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); + GLCall(glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); + GLCall(glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); + + uint internalFormat = GLTexture2D::SPTextureFormatToGL(m_Parameters.format); + uint format = internalFormat; + + GLCall(glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, internalFormat, width, height, 0, format, GL_UNSIGNED_BYTE, xp)); + GLCall(glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, internalFormat, width, height, 0, format, GL_UNSIGNED_BYTE, xn)); + + GLCall(glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, internalFormat, width, height, 0, format, GL_UNSIGNED_BYTE, yp)); + GLCall(glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, internalFormat, width, height, 0, format, GL_UNSIGNED_BYTE, yn)); + + GLCall(glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, internalFormat, width, height, 0, format, GL_UNSIGNED_BYTE, zp)); + GLCall(glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, internalFormat, width, height, 0, format, GL_UNSIGNED_BYTE, zn)); + + GLCall(glGenerateMipmap(GL_TEXTURE_CUBE_MAP)); + + return result; + } + + uint GLTextureCube::LoadFromVCross(uint mips) + { + uint srcWidth, srcHeight, bits; + byte*** cubeTextureData = spnew byte**[mips]; + for (uint i = 0; i < mips; i++) + cubeTextureData[i] = spnew byte*[6]; + + uint* faceWidths = spnew uint[mips]; + uint* faceHeights = spnew uint[mips]; + + m_Parameters.format = TextureFormat::RGBA; + for (uint m = 0; m < mips; m++) + { + byte* data = LoadImage(m_Files[m], &srcWidth, &srcHeight, &bits, !m_LoadOptions.flipY); + uint stride = bits / 8; + + uint face = 0; + uint faceWidth = srcWidth / 3; + uint faceHeight = srcHeight / 4; + faceWidths[m] = faceWidth; + faceHeights[m] = faceHeight; + for (uint cy = 0; cy < 4; cy++) + { + for (uint cx = 0; cx < 3; cx++) + { + if (cy == 0 || cy == 2 || cy == 3) + { + if (cx != 1) + continue; + } + + cubeTextureData[m][face] = spnew byte[faceWidth * faceHeight * stride]; + uint index = 0; + for (uint y = 0; y < faceHeight; y++) + { + uint offset = y; + if (face == 5) + offset = faceHeight - (y + 1); + uint yp = cy * faceHeight + offset; + for (uint x = 0; x < faceWidth; x++) + { + offset = x; + if (face == 5) + offset = faceWidth - (x + 1); + uint xp = cx * faceWidth + offset; + cubeTextureData[m][face][(x + y * faceWidth) * stride + 0] = data[(xp + yp * srcWidth) * stride + 0]; + cubeTextureData[m][face][(x + y * faceWidth) * stride + 1] = data[(xp + yp * srcWidth) * stride + 1]; + cubeTextureData[m][face][(x + y * faceWidth) * stride + 2] = data[(xp + yp * srcWidth) * stride + 2]; + if (stride >= 4) + cubeTextureData[m][face][(x + y * faceWidth) * stride + 3] = data[(xp + yp * srcWidth) * stride + 3]; + } + } + face++; + } + } + spdel[] data; + } + + uint result; + GLCall(glGenTextures(1, &result)); + GLCall(glBindTexture(GL_TEXTURE_CUBE_MAP, result)); + GLCall(glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR)); + GLCall(glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); + GLCall(glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); + GLCall(glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); + // API::SetTextureParameter(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAX_LOD, mips - 1); + // API::SetTextureParameter(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAX_LEVEL, mips - 1); + + uint internalFormat = GLTexture2D::SPTextureFormatToGL(m_Parameters.format); + uint format = internalFormat; + for (uint m = 0; m < mips; m++) + { + GLCall(glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, m, internalFormat, faceWidths[m], faceHeights[m], 0, format, GL_UNSIGNED_BYTE, cubeTextureData[m][3])); + GLCall(glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, m, internalFormat, faceWidths[m], faceHeights[m], 0, format, GL_UNSIGNED_BYTE, cubeTextureData[m][1])); + + GLCall(glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, m, internalFormat, faceWidths[m], faceHeights[m], 0, format, GL_UNSIGNED_BYTE, cubeTextureData[m][0])); + GLCall(glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, m, internalFormat, faceWidths[m], faceHeights[m], 0, format, GL_UNSIGNED_BYTE, cubeTextureData[m][4])); + + GLCall(glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, m, internalFormat, faceWidths[m], faceHeights[m], 0, format, GL_UNSIGNED_BYTE, cubeTextureData[m][2])); + GLCall(glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, m, internalFormat, faceWidths[m], faceHeights[m], 0, format, GL_UNSIGNED_BYTE, cubeTextureData[m][5])); + } + GLCall(glBindTexture(GL_TEXTURE_CUBE_MAP, 0)); + + for (uint m = 0; m < mips; m++) + { + for (uint f = 0; f < 6; f++) + { + spdel[] cubeTextureData[m][f]; + } + spdel[] cubeTextureData[m]; + } + spdel[] cubeTextureData; + + return result; + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLTextureCube.h b/Sparky-core/src/sp/platform/opengl/GLTextureCube.h new file mode 100644 index 00000000..96e05c7a --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLTextureCube.h @@ -0,0 +1,37 @@ +#pragma once + +#include "sp/graphics/API/TextureCube.h" +#include "GLCommon.h" + +namespace sp { namespace graphics { namespace API { + + class GLTextureCube : public TextureCube + { + private: + uint m_Handle; + uint m_Width, m_Height; + String m_Name; + String* m_Files; + uint m_Bits; + InputFormat m_Format; + TextureParameters m_Parameters; + TextureLoadOptions m_LoadOptions; + public: + GLTextureCube(const String& name, const String& filepath); + GLTextureCube(const String& name, const String* files); + GLTextureCube(const String& name, const String* files, uint mips, InputFormat format); + ~GLTextureCube(); + + void Bind(uint slot = 0) const override; + void Unbind(uint slot = 0) const override; + + inline const String& GetName() const override { return m_Name; } + inline const String& GetFilepath() const override { return m_Files[0]; } + private: + uint LoadFromSingleFile(); + uint LoadFromMultipleFiles(); + uint LoadFromVCross(uint mips); + }; + + +} } } diff --git a/Sparky-core/src/sp/platform/opengl/GLTextureDepth.cpp b/Sparky-core/src/sp/platform/opengl/GLTextureDepth.cpp new file mode 100644 index 00000000..93009421 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLTextureDepth.cpp @@ -0,0 +1,48 @@ +#include "sp/sp.h" +#include "GLTextureDepth.h" + +#include +#include "sp/utils/Log.h" + +namespace sp { namespace graphics { namespace API { + + GLTextureDepth::GLTextureDepth(uint width, uint height) + : m_Width(width), m_Height(height) + { + Init(); + } + + GLTextureDepth::~GLTextureDepth() + { + GLCall(glDeleteTextures(1, &m_Handle)); + } + + void GLTextureDepth::Bind(uint slot) const + { + GLCall(glActiveTexture(GL_TEXTURE0 + slot)); + GLCall(glBindTexture(GL_TEXTURE_2D, m_Handle)); + } + + void GLTextureDepth::Unbind(uint slot) const + { + GLCall(glActiveTexture(GL_TEXTURE0 + slot)); + GLCall(glBindTexture(GL_TEXTURE_2D, 0)); + } + + void GLTextureDepth::Init() + { + GLCall(glGenTextures(1, &m_Handle)); + GLCall(glBindTexture(GL_TEXTURE_2D, m_Handle)); + + GLCall(glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, m_Width, m_Height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, NULL)); + GLCall(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); + GLCall(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); + GLCall(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); + GLCall(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); + GLCall(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL)); + GLCall(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE)); + + GLCall(glBindTexture(GL_TEXTURE_2D, 0)); + } + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLTextureDepth.h b/Sparky-core/src/sp/platform/opengl/GLTextureDepth.h new file mode 100644 index 00000000..8903a292 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLTextureDepth.h @@ -0,0 +1,29 @@ +#pragma once + +#include "sp/graphics/API/TextureDepth.h" +#include "GLCommon.h" + +namespace sp { namespace graphics { namespace API { + + class GLTextureDepth : public TextureDepth + { + private: + String m_Name; + uint m_Handle; + uint m_Width, m_Height; + public: + GLTextureDepth(uint width, uint height); + ~GLTextureDepth(); + + void Bind(uint slot = 0) const override; + void Unbind(uint slot = 0) const override; + + inline uint GetHandle() const { return m_Handle; } + + inline const String& GetName() const override { return m_Name; } + inline const String& GetFilepath() const override { return m_Name; } + protected: + void Init(); + }; + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/GLTypes.h b/Sparky-core/src/sp/platform/opengl/GLTypes.h new file mode 100644 index 00000000..85f13296 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLTypes.h @@ -0,0 +1,15 @@ +#pragma once + +// From glew.h + +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_2_BYTES 0x1407 +#define GL_3_BYTES 0x1408 +#define GL_4_BYTES 0x1409 +#define GL_DOUBLE 0x140A diff --git a/Sparky-core/src/sp/platform/opengl/GLVertexArray.cpp b/Sparky-core/src/sp/platform/opengl/GLVertexArray.cpp new file mode 100644 index 00000000..e92f391b --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLVertexArray.cpp @@ -0,0 +1,37 @@ +#include "sp/sp.h" +#include "GLVertexArray.h" + +#include +#include "sp/utils/Log.h" + +namespace sp { namespace graphics { namespace API { + + GLVertexArray::GLVertexArray() + { + } + + GLVertexArray::~GLVertexArray() + { + } + + void GLVertexArray::PushBuffer(API::VertexBuffer* buffer) + { + m_Buffers.push_back(buffer); + } + + void GLVertexArray::Bind() const + { + m_Buffers.front()->Bind(); + } + + void GLVertexArray::Unbind() const + { + m_Buffers.front()->Unbind(); + } + + void GLVertexArray::Draw(uint count) const + { + GLCall(glDrawElements(GL_TRIANGLES, count, GL_UNSIGNED_INT, NULL)); + } + +} } } diff --git a/Sparky-core/src/sp/platform/opengl/GLVertexArray.h b/Sparky-core/src/sp/platform/opengl/GLVertexArray.h new file mode 100644 index 00000000..154061c8 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLVertexArray.h @@ -0,0 +1,26 @@ +#pragma once + +#include "sp/graphics/API/VertexArray.h" +#include "GLCommon.h" + +namespace sp { namespace graphics { namespace API { + + class GLVertexArray : public VertexArray + { + private: + uint m_Handle; + std::vector m_Buffers; + public: + GLVertexArray(); + ~GLVertexArray(); + + inline API::VertexBuffer* GetBuffer(uint index = 0) override { return m_Buffers[index]; } + void PushBuffer(API::VertexBuffer* buffer) override; + + void Bind() const override; + void Unbind() const override; + + void Draw(uint count) const override; + }; + +} } } diff --git a/Sparky-core/src/sp/platform/opengl/GLVertexBuffer.cpp b/Sparky-core/src/sp/platform/opengl/GLVertexBuffer.cpp new file mode 100644 index 00000000..62d065de --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLVertexBuffer.cpp @@ -0,0 +1,78 @@ +#include "sp/sp.h" +#include "GLVertexBuffer.h" + +#include +#include "sp/utils/Log.h" + +namespace sp { namespace graphics { namespace API { + + static uint SPBufferUsageToOpenGL(BufferUsage usage) + { + switch (usage) + { + case BufferUsage::STATIC: return GL_STATIC_DRAW; + case BufferUsage::DYNAMIC: return GL_DYNAMIC_DRAW; + } + return 0; + } + + GLVertexBuffer::GLVertexBuffer(BufferUsage usage) + : m_Usage(usage) + { + GLCall(glGenBuffers(1, &m_Handle)); + } + + GLVertexBuffer::~GLVertexBuffer() + { + GLCall(glDeleteBuffers(1, &m_Handle)); + } + + void GLVertexBuffer::Resize(uint size) + { + m_Size = size; + + GLCall(glBindBuffer(GL_ARRAY_BUFFER, m_Handle)); + GLCall(glBufferData(GL_ARRAY_BUFFER, size, NULL, SPBufferUsageToOpenGL(m_Usage))); + } + + void GLVertexBuffer::SetLayout(const BufferLayout& bufferLayout) + { + m_Layout = bufferLayout; + const std::vector& layout = bufferLayout.GetLayout(); + for (uint i = 0; i < layout.size(); i++) + { + const BufferElement& element = layout[i]; + GLCall(glEnableVertexAttribArray(i)); + GLCall(glVertexAttribPointer(i, element.count, element.type, element.normalized, bufferLayout.GetStride(), (const void*)element.offset)); + } + } + + void GLVertexBuffer::SetData(uint size, const void* data) + { + GLCall(glBindBuffer(GL_ARRAY_BUFFER, m_Handle)); + GLCall(glBufferData(GL_ARRAY_BUFFER, size, data, SPBufferUsageToOpenGL(m_Usage))); + } + + void* GLVertexBuffer::GetPointerInternal() + { + GLCall(void* result = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY)); + return result; + } + + void GLVertexBuffer::ReleasePointer() + { + GLCall(glUnmapBuffer(GL_ARRAY_BUFFER)); + } + + void GLVertexBuffer::Bind() + { + GLCall(glBindBuffer(GL_ARRAY_BUFFER, m_Handle)); + SetLayout(m_Layout); + } + + void GLVertexBuffer::Unbind() + { + GLCall(glBindBuffer(GL_ARRAY_BUFFER, 0)); + } + +} } } diff --git a/Sparky-core/src/sp/platform/opengl/GLVertexBuffer.h b/Sparky-core/src/sp/platform/opengl/GLVertexBuffer.h new file mode 100644 index 00000000..a9145228 --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/GLVertexBuffer.h @@ -0,0 +1,32 @@ +#pragma once + +#include "sp/graphics/API/VertexBuffer.h" +#include "GLCommon.h" + +namespace sp { namespace graphics { namespace API { + + class GLVertexBuffer : public VertexBuffer + { + private: + uint m_Handle; + BufferUsage m_Usage; + uint m_Size; + BufferLayout m_Layout; + public: + GLVertexBuffer(BufferUsage usage); + ~GLVertexBuffer(); + + void Resize(uint size) override; + void SetLayout(const BufferLayout& layout) override; + void SetData(uint size, const void* data) override; + + void ReleasePointer() override; + + void Bind() override; + void Unbind() override; + protected: + void* GetPointerInternal() override; + }; + + +} } } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/opengl/shaders/BatchRenderer.shader b/Sparky-core/src/sp/platform/opengl/shaders/BatchRenderer.shader new file mode 100644 index 00000000..963985ef --- /dev/null +++ b/Sparky-core/src/sp/platform/opengl/shaders/BatchRenderer.shader @@ -0,0 +1,72 @@ +R"( +#shader vertex +#version 330 core + +layout (location = 0) in vec4 position; +layout (location = 1) in vec2 uv; +layout (location = 2) in vec2 mask_uv; +layout (location = 3) in float tid; +layout (location = 4) in float mid; +layout (location = 5) in vec4 color; + +uniform mat4 sys_ProjectionMatrix; +uniform mat4 sys_ViewMatrix; +uniform mat4 sys_ModelMatrix; + +uniform mat4 sys_MaskMatrix; + +out DATA +{ + vec4 position; + vec2 uv; + vec2 mask_uv; + float tid; + float mid; + vec4 color; +} vs_out; + +void main() +{ + gl_Position = sys_ProjectionMatrix * position; + vs_out.position = position; + vs_out.uv = uv; + vs_out.tid = tid; + vs_out.mid = mid; + vs_out.color = color; + vs_out.mask_uv = mask_uv; +}; + +#shader fragment +#version 330 core + +layout (location = 0) out vec4 color; + +in DATA +{ + vec4 position; + vec2 uv; + vec2 mask_uv; + float tid; + float mid; + vec4 color; +} fs_in; + +uniform sampler2D textures[32]; + +void main() +{ + vec4 texColor = fs_in.color; + vec4 maskColor = vec4(1.0, 1.0, 1.0, 1.0); + if (fs_in.tid > 0.0) + { + int tid = int(fs_in.tid - 0.5); + texColor = fs_in.color * texture(textures[tid], fs_in.uv); + } + if (fs_in.mid > 0.0) + { + int mid = int(fs_in.mid - 0.5); + maskColor = texture(textures[mid], fs_in.mask_uv); + } + color = texColor * maskColor; // vec4(1.0 - maskColor.x, 1.0 - maskColor.y, 1.0 - maskColor.z, 1.0); +}; +)" \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/posix/PosixTimer.cpp b/Sparky-core/src/sp/platform/posix/PosixTimer.cpp new file mode 100644 index 00000000..4102a777 --- /dev/null +++ b/Sparky-core/src/sp/platform/posix/PosixTimer.cpp @@ -0,0 +1,38 @@ +// UNTESTED +#include "sp/sp.h" +#include "sp/utils/Timer.h" + +#include + +namespace sp { + + typedef std::chrono::high_resolution_clock HighResolutionClock; + typedef std::chrono::duration milliseconds_type; + + struct Members + { + std::chrono::time_point m_Start; + }; + + + Timer::Timer() + : m_Members(new (m_Reserved) Members()) + { + Reset(); + } + + void Timer::Reset() + { + m_Members->m_Start = HighResolutionClock::now(); + } + + float Timer::Elapsed() + { + return std::chrono::duration_cast(HighResolutionClock::now() - m_Members->m_Start).count() / 1000.0f; + } + + float Timer::ElapsedMillis() + { + return Elapsed() * 1000.0f; + } +} \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/windows/Win32Application.cpp b/Sparky-core/src/sp/platform/windows/Win32Application.cpp new file mode 100644 index 00000000..77a89ca7 --- /dev/null +++ b/Sparky-core/src/sp/platform/windows/Win32Application.cpp @@ -0,0 +1,99 @@ +#include "sp/sp.h" +#include "sp/app/Application.h" + +namespace sp { + + Application::Application(const String& name, const WindowProperties& properties, graphics::API::RenderAPI api) + : m_Name(name), m_Properties(properties), m_Frametime(0.0f) + { + s_Instance = this; + graphics::API::Context::SetRenderAPI(api); + } + + Application::~Application() + { + delete window; + } + + void Application::PlatformInit() + { + window = new Window(m_Name, m_Properties); + window->SetEventCallback(METHOD(&Application::OnEvent)); + } + + void Application::Start() + { + Init(); + m_Running = true; + m_Suspended = false; + Run(); + } + + void Application::Suspend() + { + m_Suspended = true; + } + + void Application::Resume() + { + m_Suspended = false; + } + + void Application::Stop() + { + m_Running = false; + } + + void Application::Run() + { + m_Timer = new Timer(); + float timer = 0.0f; + float updateTimer = m_Timer->ElapsedMillis(); + float updateTick = 1000.0f / 60.0f; + uint frames = 0; + uint updates = 0; + Timestep timestep(m_Timer->ElapsedMillis()); + while (m_Running) + { + window->Clear(); + float now = m_Timer->ElapsedMillis(); + if (now - updateTimer > updateTick) + { + timestep.Update(now); + OnUpdate(timestep); + updates++; + updateTimer += updateTick; + } + { + Timer frametime; + OnRender(); + frames++; + m_Frametime = frametime.ElapsedMillis(); + } + window->Update(); + if (m_Timer->Elapsed() - timer > 1.0f) + { + timer += 1.0f; + m_FramesPerSecond = frames; + m_UpdatesPerSecond = updates; + frames = 0; + updates = 0; + OnTick(); + } + if (window->Closed()) + m_Running = false; + } + } + + String Application::GetPlatform() + { +#if defined(SP_PLATFORM_WIN32) + return "Win32"; +#elif defined(SP_PLATFORM_WIN64) + return "Win64"; +#else + return "Unknown Platform"; +#endif + } + +} \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/windows/Win32FileSystem.cpp b/Sparky-core/src/sp/platform/windows/Win32FileSystem.cpp new file mode 100644 index 00000000..b3cecc47 --- /dev/null +++ b/Sparky-core/src/sp/platform/windows/Win32FileSystem.cpp @@ -0,0 +1,106 @@ +#include "sp/sp.h" +#include "sp/system/FileSystem.h" + +#include "sp/system/Memory.h" + +#include + +namespace sp { + + void CALLBACK FileIOCompletionRoutine(DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped) + { + } + + static HANDLE OpenFileForReading(const String& path) + { + return CreateFile(path.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL); + } + + static int64 GetFileSizeInternal(HANDLE file) + { + LARGE_INTEGER size; + GetFileSizeEx(file, &size); + return size.QuadPart; + } + + static bool ReadFileInternal(HANDLE file, void* buffer, int64 size) + { + OVERLAPPED ol = { 0 }; + return ReadFileEx(file, buffer, size, &ol, FileIOCompletionRoutine); + } + + bool FileSystem::FileExists(const String& path) + { + DWORD result = GetFileAttributes(path.c_str()); + return !(result == INVALID_FILE_ATTRIBUTES && GetLastError() == ERROR_FILE_NOT_FOUND); + } + + int64 FileSystem::GetFileSize(const String& path) + { + HANDLE file = OpenFileForReading(path); + if (file == INVALID_HANDLE_VALUE) + return -1; + int64 result = GetFileSizeInternal(file); + CloseHandle(file); + return result; + } + + bool FileSystem::ReadFile(const String& path, void* buffer, int64 size) + { + HANDLE file = OpenFileForReading(path); + if (file == INVALID_HANDLE_VALUE) + return false; + + if (size < 0) + size = GetFileSizeInternal(file); + + bool result = ReadFileInternal(file, buffer, size); + CloseHandle(file); + return result; + } + + byte* FileSystem::ReadFile(const String& path) + { + HANDLE file = OpenFileForReading(path); + int64 size = GetFileSizeInternal(file); + byte* buffer = spnew byte[size]; + bool result = ReadFileInternal(file, buffer, size); + CloseHandle(file); + if (!result) + spdel buffer; + return result ? buffer : nullptr; + } + + String FileSystem::ReadTextFile(const String& path) + { + HANDLE file = OpenFileForReading(path); + int64 size = GetFileSizeInternal(file); + String result(size, 0); + bool success = ReadFileInternal(file, &result[0], size); + CloseHandle(file); + if (success) + { + // Strip carriage returns + result.erase(std::remove(result.begin(), result.end(), '\r'), result.end()); + } + return success ? result : String(); + } + + bool FileSystem::WriteFile(const String& path, byte* buffer) + { + HANDLE file = CreateFile(path.c_str(), GENERIC_WRITE, NULL, NULL, CREATE_NEW | OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (file == INVALID_HANDLE_VALUE) + return false; + + int64 size = GetFileSizeInternal(file); + DWORD written; + bool result = ::WriteFile(file, buffer, size, &written, NULL); + CloseHandle(file); + return result; + } + + bool FileSystem::WriteTextFile(const String& path, const String& text) + { + return WriteFile(path, (byte*)&text[0]); + } +} \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/windows/Win32Input.cpp b/Sparky-core/src/sp/platform/windows/Win32Input.cpp new file mode 100644 index 00000000..bfcdedb8 --- /dev/null +++ b/Sparky-core/src/sp/platform/windows/Win32Input.cpp @@ -0,0 +1,133 @@ +#include "sp/sp.h" +#include "sp/app/Input.h" +#include "sp/utils/Log.h" + +#include +#include + +#include "sp/app/Window.h" +#include "sp/events/Events.h" + +namespace sp { + + using namespace events; + + extern HWND hWnd; + + void InputManager::PlatformUpdate() + { + // Mouse Events + POINT mouse; + GetCursorPos(&mouse); + ScreenToClient(hWnd, &mouse); + + maths::vec2 mousePos = maths::vec2((float)mouse.x, (float)mouse.y); + if (mousePos != m_MousePosition) + { + m_EventCallback(MouseMovedEvent(mousePos.x, mousePos.y, m_MouseButtons[SP_MOUSE_LEFT])); + m_MousePosition = mousePos; + } + } + + void InputManager::SetMousePosition(const maths::vec2& position) + { + POINT pt = { (LONG)position.x, (LONG)position.y }; + ClientToScreen(hWnd, &pt); + SetCursorPos(pt.x, pt.y); + } + + void InputManager::SetMouseCursor(int32 cursor) + { + if (cursor == SP_NO_CURSOR) + { + SetCursor(SP_NO_CURSOR); + while (ShowCursor(false) >= 0); + } + else + { + SetCursor(LoadCursor(NULL, IDC_ARROW)); + ShowCursor(true); + } + } + + void KeyCallback(InputManager* inputManager, int32 flags, int32 key, uint message) + { + bool pressed = message == WM_KEYDOWN || message == WM_SYSKEYDOWN; + inputManager->m_KeyState[key] = pressed; + + bool repeat = (flags >> 30) & 1; + + int32 modifier = 0; + switch (key) + { + case SP_KEY_CONTROL: + modifier = SP_MODIFIER_LEFT_CONTROL; + break; + case SP_KEY_ALT: + modifier = SP_MODIFIER_LEFT_ALT; + break; + case SP_KEY_SHIFT: + modifier = SP_MODIFIER_LEFT_SHIFT; + break; + } + if (pressed) + inputManager->m_KeyModifiers |= modifier; + else + inputManager->m_KeyModifiers &= ~(modifier); + + if (pressed) + inputManager->m_EventCallback(KeyPressedEvent(key, repeat, inputManager->m_KeyModifiers)); + else + inputManager->m_EventCallback(KeyReleasedEvent(key)); + } + + void MouseButtonCallback(InputManager* inputManager, int32 button, int32 x, int32 y) + { + bool down = false; + switch (button) + { + case WM_LBUTTONDOWN: + SetCapture(hWnd); + button = SP_MOUSE_LEFT; + down = true; + break; + case WM_LBUTTONUP: + ReleaseCapture(); + button = SP_MOUSE_LEFT; + down = false; + break; + case WM_RBUTTONDOWN: + SetCapture(hWnd); + button = SP_MOUSE_RIGHT; + down = true; + break; + case WM_RBUTTONUP: + ReleaseCapture(); + button = SP_MOUSE_RIGHT; + down = false; + break; + case WM_MBUTTONDOWN: + SetCapture(hWnd); + button = SP_MOUSE_MIDDLE; + down = true; + break; + case WM_MBUTTONUP: + ReleaseCapture(); + button = SP_MOUSE_MIDDLE; + down = false; + break; + } + inputManager->m_MouseButtons[button] = down; + inputManager->m_MousePosition.x = (float)x; + inputManager->m_MousePosition.y = (float)y; + + SP_ASSERT(inputManager->m_EventCallback); + + if (down) + inputManager->m_EventCallback(MousePressedEvent(button, (float)x, (float)y)); + else + inputManager->m_EventCallback(MouseReleasedEvent(button, (float)x, (float)y)); + } + + +} \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/windows/Win32Log.cpp b/Sparky-core/src/sp/platform/windows/Win32Log.cpp new file mode 100644 index 00000000..087c85ee --- /dev/null +++ b/Sparky-core/src/sp/platform/windows/Win32Log.cpp @@ -0,0 +1,27 @@ +#include "sp/sp.h" + +#include +#include "sp/utils/Log.h" + +namespace sp { namespace internal { + + void PlatformLogMessage(uint level, const char* message) + { + HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); + switch (level) + { + case SPARKY_LOG_LEVEL_FATAL: + SetConsoleTextAttribute(hConsole, BACKGROUND_RED | BACKGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY); + break; + case SPARKY_LOG_LEVEL_ERROR: + SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY); + break; + case SPARKY_LOG_LEVEL_WARN: + SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY); + break; + } + printf("%s", message); + SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN); + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/windows/Win32MemoryManager.cpp b/Sparky-core/src/sp/platform/windows/Win32MemoryManager.cpp new file mode 100644 index 00000000..c5751b36 --- /dev/null +++ b/Sparky-core/src/sp/platform/windows/Win32MemoryManager.cpp @@ -0,0 +1,26 @@ +#include "sp/sp.h" +#include "sp/system/MemoryManager.h" + +#include + +namespace sp { namespace internal { + + SystemMemoryInfo MemoryManager::GetSystemInfo() + { + MEMORYSTATUSEX status; + status.dwLength = sizeof(MEMORYSTATUSEX); + GlobalMemoryStatusEx(&status); + + SystemMemoryInfo result = + { + (int64)status.ullAvailPhys, + (int64)status.ullTotalPhys, + + (int64)status.ullAvailVirtual, + (int64)status.ullTotalVirtual + }; + return result; + } + + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/windows/Win32Timer.cpp b/Sparky-core/src/sp/platform/windows/Win32Timer.cpp new file mode 100644 index 00000000..7ac09f66 --- /dev/null +++ b/Sparky-core/src/sp/platform/windows/Win32Timer.cpp @@ -0,0 +1,42 @@ +#include "sp/sp.h" +#include "sp/utils/Timer.h" + +#include + +namespace sp { + + struct Members + { + LARGE_INTEGER m_Start; + double m_Frequency; + }; + + Timer::Timer() + : m_Members(new (m_Reserved) Members()) + { + LARGE_INTEGER frequency; + QueryPerformanceFrequency(&frequency); + m_Members->m_Frequency = 1.0 / frequency.QuadPart; + + Reset(); + } + + void Timer::Reset() + { + QueryPerformanceCounter(&m_Members->m_Start); + } + + float Timer::Elapsed() + { + LARGE_INTEGER current; + QueryPerformanceCounter(¤t); + uint64 cycles = current.QuadPart - m_Members->m_Start.QuadPart; + return (float)(cycles * m_Members->m_Frequency); + } + + float Timer::ElapsedMillis() + { + return Elapsed() * 1000.0f; + } + +} \ No newline at end of file diff --git a/Sparky-core/src/sp/platform/windows/Win32Window.cpp b/Sparky-core/src/sp/platform/windows/Win32Window.cpp new file mode 100644 index 00000000..8a6f83ee --- /dev/null +++ b/Sparky-core/src/sp/platform/windows/Win32Window.cpp @@ -0,0 +1,220 @@ +#include "sp/sp.h" + +#define NOMINMAX +#undef NOGDI +#include +#include +#define NOGDI + +#include "sp/utils/Log.h" +#include "sp/app/Application.h" +#include "sp/app/Window.h" +#include "sp/graphics/API/Context.h" +#include "sp/graphics/Renderer.h" + +#include + +EXTERN_C IMAGE_DOS_HEADER __ImageBase; + +namespace sp { + + using namespace events; + using namespace graphics; + + LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); + extern void MouseButtonCallback(InputManager* inputManager, int32 button, int32 x, int32 y); + extern void KeyCallback(InputManager* inputManager, int32 flags, int32 key, uint message); + + HINSTANCE hInstance; + HDC hDc; + HWND hWnd; + + static PIXELFORMATDESCRIPTOR GetPixelFormat() + { + PIXELFORMATDESCRIPTOR result = {}; + result.nSize = sizeof(PIXELFORMATDESCRIPTOR); + result.nVersion = 1; + result.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; + result.iPixelType = PFD_TYPE_RGBA; + result.cColorBits = 32; + result.cDepthBits = 24; + result.cStencilBits = 8; + result.cAuxBuffers = 0; + result.iLayerType = PFD_MAIN_PLANE; + return result; + } + + bool Window::PlatformInit() + { + hInstance = (HINSTANCE)&__ImageBase; + + WNDCLASS winClass = {}; + winClass.hInstance = hInstance; // GetModuleHandle(0); + winClass.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; + winClass.lpfnWndProc = (WNDPROC)WndProc; + winClass.lpszClassName = "Sparky Win32 Window"; + winClass.hCursor = LoadCursor(NULL, IDC_ARROW); + winClass.hIcon = LoadIcon(NULL, IDI_WINLOGO); + + if (!RegisterClassA(&winClass)) + { + // TODO: Handle error + SP_ERROR("Could not register Win32 class!"); + return false; + } + + RECT size = { 0, 0, (LONG)m_Properties.width, (LONG)m_Properties.height }; + AdjustWindowRectEx(&size, WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, false, WS_EX_APPWINDOW | WS_EX_WINDOWEDGE); + + hWnd = CreateWindowExA(WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, + winClass.lpszClassName, m_Title.c_str(), + WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, + GetSystemMetrics(SM_CXSCREEN) / 2 - m_Properties.width / 2, + GetSystemMetrics(SM_CYSCREEN) / 2 - m_Properties.height / 2, + // TODO: This requires some... attention + size.right + (-size.left), size.bottom + (-size.top), NULL, NULL, hInstance, NULL); + + if (!hWnd) + { + SP_ERROR("Could not create window!"); + return false; + } + + RegisterWindowClass(hWnd, this); + + hDc = GetDC(hWnd); + PIXELFORMATDESCRIPTOR pfd = GetPixelFormat(); + int32 pixelFormat = ChoosePixelFormat(hDc, &pfd); + if (pixelFormat) + { + if (!SetPixelFormat(hDc, pixelFormat, &pfd)) + { + SP_ERROR("Failed setting pixel format!"); + return false; + } + } + else + { + SP_ERROR("Failed choosing pixel format!"); + return false; + } + + graphics::API::Context::Create(m_Properties, hWnd); + + ShowWindow(hWnd, SW_SHOW); + SetFocus(hWnd); + // resize + + return true; + } + + void Window::PlatformUpdate() + { + MSG message; + while (PeekMessage(&message, NULL, NULL, NULL, PM_REMOVE) > 0) + { + if (message.message == WM_QUIT) + { + m_Closed = true; + return; + } + TranslateMessage(&message); + DispatchMessage(&message); + } + + m_InputManager->PlatformUpdate(); + Renderer::Present(); + } + + void Window::SetTitle(const String& title) + { + m_Title = title + " | " + Application::GetApplication().GetBuildConfiguration() + " " + Application::GetApplication().GetPlatform() + " | Renderer: " + Renderer::GetTitle(); + SetWindowText(hWnd, m_Title.c_str()); + } + + void ResizeCallback(Window* window, int32 width, int32 height) + { + window->m_Properties.width = width; + window->m_Properties.height = height; + FontManager::SetScale(maths::vec2(window->m_Properties.width / 32.0f, window->m_Properties.height / 18.0f)); + + if (window->m_EventCallback) + window->m_EventCallback(ResizeWindowEvent((uint)width, (uint)height)); + } + + void FocusCallback(Window* window, bool focused) + { + if (!focused) + { + window->m_InputManager->ClearKeys(); + window->m_InputManager->ClearMouseButtons(); + } + } + + LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) + { + LRESULT result = NULL; + Window* window = Window::GetWindowClass(hWnd); + if (window == nullptr) + return DefWindowProc(hWnd, message, wParam, lParam); + + InputManager* inputManager = window->GetInputManager(); + switch (message) + { + case WM_ACTIVATE: + { + if (!HIWORD(wParam)) // Is minimized + { + // active + } + else + { + // inactive + } + + return 0; + } + case WM_SYSCOMMAND: + { + switch (wParam) + { + case SC_SCREENSAVE: + case SC_MONITORPOWER: + return 0; + } + result = DefWindowProc(hWnd, message, wParam, lParam); + } break; + case WM_SETFOCUS: + FocusCallback(window, true); + break; + case WM_KILLFOCUS: + FocusCallback(window, false); + break; + case WM_CLOSE: + case WM_DESTROY: + PostQuitMessage(0); + break; + case WM_KEYDOWN: + case WM_KEYUP: + case WM_SYSKEYDOWN: + case WM_SYSKEYUP: + KeyCallback(inputManager, lParam, wParam, message); + break; + case WM_LBUTTONDOWN: + case WM_LBUTTONUP: + case WM_RBUTTONDOWN: + case WM_RBUTTONUP: + case WM_MBUTTONDOWN: + case WM_MBUTTONUP: + MouseButtonCallback(inputManager, message, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); + break; + case WM_SIZE: + ResizeCallback(window, LOWORD(lParam), HIWORD(lParam)); + break; + default: + result = DefWindowProc(hWnd, message, wParam, lParam); + } + return result; + } + +} \ No newline at end of file diff --git a/Sparky-core/src/sp/sp.cpp b/Sparky-core/src/sp/sp.cpp new file mode 100644 index 00000000..faf8f731 --- /dev/null +++ b/Sparky-core/src/sp/sp.cpp @@ -0,0 +1 @@ +#include "sp/sp.h" \ No newline at end of file diff --git a/Sparky-core/src/sp/sp.h b/Sparky-core/src/sp/sp.h new file mode 100644 index 00000000..0079bc73 --- /dev/null +++ b/Sparky-core/src/sp/sp.h @@ -0,0 +1,21 @@ +#pragma once + +// Sparky PCH header + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +#include "sp/Common.h" +#include "sp/Types.h" diff --git a/Sparky-core/src/sp/system/Allocator.cpp b/Sparky-core/src/sp/system/Allocator.cpp new file mode 100644 index 00000000..f572a65f --- /dev/null +++ b/Sparky-core/src/sp/system/Allocator.cpp @@ -0,0 +1,55 @@ +#include "sp/sp.h" +#include "Allocator.h" + +#include + +#include "sp/utils/Log.h" +#include "MemoryManager.h" + +namespace sp { + + #define SP_MEMORY_ALIGNMENT 16 + #define SP_ALLOC(size) _aligned_malloc(size, SP_MEMORY_ALIGNMENT) + #define SP_FREE(block) _aligned_free(block); + + void* Allocator::Allocate(size_t size) + { + SP_ASSERT(size < 1024 * 1024 * 1024); + + sp::internal::MemoryManager::Get()->m_MemoryStats.totalAllocated += size; + sp::internal::MemoryManager::Get()->m_MemoryStats.currentUsed += size; + sp::internal::MemoryManager::Get()->m_MemoryStats.totalAllocations++; + + size_t actualSize = size + sizeof(size_t); + byte* result = (byte*)SP_ALLOC(actualSize); + memset(result, 0, actualSize); + memcpy(result, &size, sizeof(size_t)); + result += sizeof(size_t); + return result; + } + + void* Allocator::AllocateDebug(size_t size, const char* file, uint line) + { + SP_ASSERT(size < 1024 * 1024 * 1024); + + if (size > 1024 * 1024) + SP_WARN("Large allocation (>1mb) at ", file, ":", line); + + return Allocate(size); + } + + void Allocator::Free(void* block) + { + byte* memory = ((byte*)block) - sizeof(size_t); + size_t size = *(size_t*)memory; + sp::internal::MemoryManager::Get()->m_MemoryStats.totalFreed += size; + sp::internal::MemoryManager::Get()->m_MemoryStats.currentUsed -= size; + SP_FREE(memory); + } + + void Allocator::FreeDebug(void* block, const char* file, uint line) + { + Free(block); + } + +} \ No newline at end of file diff --git a/Sparky-core/src/sp/system/Allocator.h b/Sparky-core/src/sp/system/Allocator.h new file mode 100644 index 00000000..10c3869a --- /dev/null +++ b/Sparky-core/src/sp/system/Allocator.h @@ -0,0 +1,19 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/Types.h" + +namespace sp { + + // TODO: Allocation Metrics + class SP_API Allocator + { + public: + static void* Allocate(size_t size); + static void* AllocateDebug(size_t size, const char* file, uint line); + + static void Free(void* block); + static void FreeDebug(void* block, const char* file, uint line); + }; + +} \ No newline at end of file diff --git a/Sparky-core/src/sp/system/FileSystem.cpp b/Sparky-core/src/sp/system/FileSystem.cpp new file mode 100644 index 00000000..63c2cb70 --- /dev/null +++ b/Sparky-core/src/sp/system/FileSystem.cpp @@ -0,0 +1,3 @@ +#include "sp/sp.h" +#include "FileSystem.h" + diff --git a/Sparky-core/src/sp/system/FileSystem.h b/Sparky-core/src/sp/system/FileSystem.h new file mode 100644 index 00000000..81e66276 --- /dev/null +++ b/Sparky-core/src/sp/system/FileSystem.h @@ -0,0 +1,24 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/Types.h" +#include "sp/String.h" + +namespace sp { + + // TODO: Multiple filesystems (eg. binary blob) should be supported + class FileSystem + { + public: + static bool FileExists(const String& path); + static int64 GetFileSize(const String& path); + + static byte* ReadFile(const String& path); + static bool ReadFile(const String& path, void* buffer, int64 size = -1); + static String ReadTextFile(const String& path); + + static bool WriteFile(const String& path, byte* buffer); + static bool WriteTextFile(const String& path, const String& text); + }; + +} \ No newline at end of file diff --git a/Sparky-core/src/sp/system/Memory.cpp b/Sparky-core/src/sp/system/Memory.cpp new file mode 100644 index 00000000..eeae0dbb --- /dev/null +++ b/Sparky-core/src/sp/system/Memory.cpp @@ -0,0 +1,2 @@ +#include "sp/sp.h" +#include "Memory.h" diff --git a/Sparky-core/src/sp/system/Memory.h b/Sparky-core/src/sp/system/Memory.h new file mode 100644 index 00000000..81b36a02 --- /dev/null +++ b/Sparky-core/src/sp/system/Memory.h @@ -0,0 +1,50 @@ +#pragma once + +#include "Allocator.h" + +#define spnew new(__FILE__, __LINE__) +#define spdel delete + +#pragma warning(disable : 4595) + +inline void* operator new(size_t size) +{ + return sp::Allocator::Allocate(size); +} + +inline void* operator new(size_t size, const char* file, uint line) +{ + return sp::Allocator::AllocateDebug(size, file, line); +} + +inline void* operator new[](size_t size) +{ + return sp::Allocator::Allocate(size); +} + +inline void* operator new[](size_t size, const char* file, uint line) +{ + return sp::Allocator::AllocateDebug(size, file, line); +} + +inline void operator delete(void* block) +{ + sp::Allocator::Free(block); +} + +inline void operator delete(void* block, const char* file, uint line) +{ + sp::Allocator::FreeDebug(block, file, line); +} + +inline void operator delete[](void* block) +{ + sp::Allocator::Free(block); +} + +inline void operator delete[](void* block, const char* file, uint line) +{ + sp::Allocator::FreeDebug(block, file, line); +} + +#pragma warning(default : 4595) diff --git a/Sparky-core/src/sp/system/MemoryManager.cpp b/Sparky-core/src/sp/system/MemoryManager.cpp new file mode 100644 index 00000000..892a8e62 --- /dev/null +++ b/Sparky-core/src/sp/system/MemoryManager.cpp @@ -0,0 +1,73 @@ +#include "sp/sp.h" +#include "MemoryManager.h" + +#include "sp/utils/Log.h" +#include "Memory.h" + +namespace sp { namespace internal { + + MemoryManager* MemoryManager::s_Instance = nullptr; + + MemoryManager::MemoryManager() + { + } + + void MemoryManager::Init() + { + } + + void MemoryManager::Shutdown() + { + spdel s_Instance; + } + + MemoryManager* MemoryManager::Get() + { + if (s_Instance == nullptr) + { + s_Instance = (MemoryManager*)malloc(sizeof(MemoryManager)); + s_Instance = new(s_Instance) MemoryManager(); + } + return s_Instance; + } + + String MemoryManager::BytesToString(int64 bytes) + { + static const float gb = 1024 * 1024 * 1024; + static const float mb = 1024 * 1024; + static const float kb = 1024; + + String result; + if (bytes > gb) + result = StringFormat::Float(bytes / gb) + " GB"; + else if (bytes > mb) + result = StringFormat::Float(bytes / mb) + " MB"; + else if (bytes > kb) + result = StringFormat::Float(bytes / kb) + " KB"; + else + result = StringFormat::Float((float)bytes) + " bytes"; + + return result; + } + + void SystemMemoryInfo::Log() + { + String apm, tpm, avm, tvm; + + uint gb = 1024 * 1024 * 1024; + uint mb = 1024 * 1024; + uint kb = 1024; + + apm = MemoryManager::BytesToString(availablePhysicalMemory); + tpm = MemoryManager::BytesToString(totalPhysicalMemory); + avm = MemoryManager::BytesToString(availableVirtualMemory); + tvm = MemoryManager::BytesToString(totalVirtualMemory); + + SP_INFO(); + SP_INFO("Memory Info:"); + SP_INFO("\tPhysical Memory (Avail/Total): ", apm, " / ", tpm); + SP_INFO("\tVirtual Memory (Avail/Total): ", avm, " / ", tvm); + SP_INFO(); + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/system/MemoryManager.h b/Sparky-core/src/sp/system/MemoryManager.h new file mode 100644 index 00000000..46835c0a --- /dev/null +++ b/Sparky-core/src/sp/system/MemoryManager.h @@ -0,0 +1,53 @@ +#pragma once + +#include "sp/String.h" + +namespace sp { + namespace internal { + + struct SP_API SystemMemoryInfo + { + int64 availablePhysicalMemory; + int64 totalPhysicalMemory; + + int64 availableVirtualMemory; + int64 totalVirtualMemory; + + void Log(); + }; + + struct SP_API MemoryStats + { + int64 totalAllocated; + int64 totalFreed; + int64 currentUsed; + int64 totalAllocations; + + MemoryStats() + : totalAllocated(0), totalFreed(0), currentUsed(0), totalAllocations(0) + { + } + }; + + class SP_API MemoryManager + { + public: + static MemoryManager* s_Instance; + public: + MemoryStats m_MemoryStats; + public: + MemoryManager(); + + static void Init(); + static void Shutdown(); + + static MemoryManager* Get(); + inline MemoryStats GetMemoryStats() const { return m_MemoryStats; } + public: + SystemMemoryInfo GetSystemInfo(); + public: + static String BytesToString(int64 bytes); + }; + + } +} diff --git a/Sparky-core/src/sp/system/System.cpp b/Sparky-core/src/sp/system/System.cpp new file mode 100644 index 00000000..5ee97c22 --- /dev/null +++ b/Sparky-core/src/sp/system/System.cpp @@ -0,0 +1,43 @@ +#include "sp/sp.h" +#include "System.h" + +#include "MemoryManager.h" +#include "VFS.h" + +#include "sp/utils/Log.h" + +namespace sp { namespace internal { + + SystemInfo System::s_SystemInfo; + + void System::Init() + { + SP_INFO("Initializing Sparky System..."); + MemoryManager::Init(); + VFS::Init(); + + s_SystemInfo.memoryInfo = MemoryManager::Get()->GetSystemInfo(); + LogSystemInfo(); + } + + void System::Shutdown() + { + SP_INFO("Shutting down Sparky System..."); + VFS::Shutdown(); + MemoryManager::Shutdown(); + } + + SystemInfo System::GetSystemInfo() + { + return s_SystemInfo; + } + + void System::LogSystemInfo() + { + SP_INFO("--------------------"); + SP_INFO(" System Information "); + SP_INFO("--------------------"); + s_SystemInfo.memoryInfo.Log(); + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/system/System.h b/Sparky-core/src/sp/system/System.h new file mode 100644 index 00000000..e5407901 --- /dev/null +++ b/Sparky-core/src/sp/system/System.h @@ -0,0 +1,27 @@ +#pragma once + +#include "MemoryManager.h" + +namespace sp { namespace internal { + + struct SystemInfo + { + SystemMemoryInfo memoryInfo; + // GraphicsInfo graphicsInfo; + }; + + // Low-level system operations + class System + { + private: + static SystemInfo s_SystemInfo; + public: + static void Init(); + static void Shutdown(); + + static SystemInfo GetSystemInfo(); + private: + static void LogSystemInfo(); + }; + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/system/VFS.cpp b/Sparky-core/src/sp/system/VFS.cpp new file mode 100644 index 00000000..f78df97a --- /dev/null +++ b/Sparky-core/src/sp/system/VFS.cpp @@ -0,0 +1,90 @@ +#include "sp/sp.h" +#include "VFS.h" + +#include "Memory.h" +#include "FileSystem.h" +#include "sp/utils/Log.h" + +namespace sp { + + VFS* VFS::s_Instance = nullptr; + + void VFS::Init() + { + s_Instance = spnew VFS(); + } + + void VFS::Shutdown() + { + spdel s_Instance; + } + + void VFS::Mount(const String& virtualPath, const String& physicalPath) + { + SP_ASSERT(s_Instance); + m_MountPoints[virtualPath].push_back(physicalPath); + } + + void VFS::Unmount(const String& path) + { + SP_ASSERT(s_Instance); + m_MountPoints[path].clear(); + } + + bool VFS::ResolvePhysicalPath(const String& path, String& outPhysicalPath) + { + if (path[0] != '/') + { + outPhysicalPath = path; + return FileSystem::FileExists(path); + } + + std::vector dirs = SplitString(path, '/'); + const String& virtualDir = dirs.front(); + + if (m_MountPoints.find(virtualDir) == m_MountPoints.end() || m_MountPoints[virtualDir].empty()) + return false; + + String remainder = path.substr(virtualDir.size() + 1, path.size() - virtualDir.size()); + for (const String& physicalPath : m_MountPoints[virtualDir]) + { + String path = physicalPath + remainder; + if (FileSystem::FileExists(path)) + { + outPhysicalPath = path; + return true; + } + } + return false; + } + + byte* VFS::ReadFile(const String& path) + { + SP_ASSERT(s_Instance); + String physicalPath; + return ResolvePhysicalPath(path, physicalPath) ? FileSystem::ReadFile(physicalPath) : nullptr; + } + + String VFS::ReadTextFile(const String& path) + { + SP_ASSERT(s_Instance); + String physicalPath; + return ResolvePhysicalPath(path, physicalPath) ? FileSystem::ReadTextFile(physicalPath) : nullptr; + } + + bool VFS::WriteFile(const String& path, byte* buffer) + { + SP_ASSERT(s_Instance); + String physicalPath; + return ResolvePhysicalPath(path, physicalPath) ? FileSystem::WriteFile(physicalPath, buffer) : false; + + } + + bool VFS::WriteTextFile(const String& path, const String& text) + { + SP_ASSERT(s_Instance); + String physicalPath; + return ResolvePhysicalPath(path, physicalPath) ? FileSystem::WriteTextFile(physicalPath, text) : false; + } + +} \ No newline at end of file diff --git a/Sparky-core/src/sp/system/VFS.h b/Sparky-core/src/sp/system/VFS.h new file mode 100644 index 00000000..e81a09c5 --- /dev/null +++ b/Sparky-core/src/sp/system/VFS.h @@ -0,0 +1,30 @@ +#pragma once + +#include "sp/sp.h" +#include "sp/String.h" + +namespace sp { + + class SP_API VFS + { + private: + static VFS* s_Instance; + private: + std::unordered_map> m_MountPoints; + public: + void Mount(const String& virtualPath, const String& physicalPath); + void Unmount(const String& path); + bool ResolvePhysicalPath(const String& path, String& outPhysicalPath); + + byte* ReadFile(const String& path); + String ReadTextFile(const String& path); + + bool WriteFile(const String& path, byte* buffer); + bool WriteTextFile(const String& path, const String& text); + public: + static void Init(); + static void Shutdown(); + + inline static VFS* Get() { return s_Instance; } + }; +} diff --git a/Sparky-core/src/sp/utils/FileUtils.cpp b/Sparky-core/src/sp/utils/FileUtils.cpp new file mode 100644 index 00000000..1757b1fa --- /dev/null +++ b/Sparky-core/src/sp/utils/FileUtils.cpp @@ -0,0 +1,25 @@ +#include "sp/sp.h" +#include "FileUtils.h" + +namespace sp { namespace utils { + + String ReadFile(const String& filepath) + { + FILE* file = fopen(filepath.c_str(), "rb"); + if (file == nullptr) + SP_ASSERT(file, "Could not open file '", filepath, "'!"); + + fseek(file, 0, SEEK_END); + int32 length = ftell(file); + SP_ASSERT(length < 100 * 1024 * 1024); + String result(length, 0); + fseek(file, 0, SEEK_SET); + fread(&result[0], 1, length, file); + fclose(file); + + // Strip carriage returns + result.erase(std::remove(result.begin(), result.end(), '\r'), result.end()); + return result; + } + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/utils/FileUtils.h b/Sparky-core/src/sp/utils/FileUtils.h new file mode 100644 index 00000000..376ab4a3 --- /dev/null +++ b/Sparky-core/src/sp/utils/FileUtils.h @@ -0,0 +1,12 @@ +#pragma once + +#include +#include + +#include + +namespace sp { namespace utils { + + // String ReadFile(const String& filepath); + +} } \ No newline at end of file diff --git a/Sparky-core/src/sp/utils/ImageLoad.cpp b/Sparky-core/src/sp/utils/ImageLoad.cpp new file mode 100644 index 00000000..c0d89f2a --- /dev/null +++ b/Sparky-core/src/sp/utils/ImageLoad.cpp @@ -0,0 +1,65 @@ +#include "sp/sp.h" +#include "ImageLoad.h" + +#include +#include + +#include "sp/system/Memory.h" +#include "sp/system/VFS.h" + +namespace sp { + + byte* LoadImage(const char* filename, uint* width, uint* height, uint* bits, bool flipY) + { + String physicalPath; + if (!VFS::Get()->ResolvePhysicalPath(filename, physicalPath)) + return nullptr; + + filename = physicalPath.c_str(); + FREE_IMAGE_FORMAT fif = FIF_UNKNOWN; + FIBITMAP* dib = nullptr; + fif = FreeImage_GetFileType(filename, 0); + if (fif == FIF_UNKNOWN) + fif = FreeImage_GetFIFFromFilename(filename); + if (fif == FIF_UNKNOWN) + return nullptr; + + if (FreeImage_FIFSupportsReading(fif)) + dib = FreeImage_Load(fif, filename); + + SP_ASSERT(dib, "Could not load image '", filename, "'!"); + + FIBITMAP* bitmap = FreeImage_ConvertTo32Bits(dib); + FreeImage_Unload(dib); + + byte* pixels = FreeImage_GetBits(bitmap); + uint w = FreeImage_GetWidth(bitmap); + uint h = FreeImage_GetHeight(bitmap); + uint b = FreeImage_GetBPP(bitmap); + + if (flipY) + FreeImage_FlipVertical(bitmap); + + if (FreeImage_GetRedMask(bitmap) == 0xff0000) + SwapRedBlue32(bitmap); + + if (width) + *width = w; + if (height) + *height = h; + if (bits) + *bits = b; + + int32 size = w * h * (b / 8); + byte* result = spnew byte[size]; + memcpy(result, pixels, size); + FreeImage_Unload(bitmap); + return result; + } + + byte* LoadImage(const String& filename, uint* width, uint* height, uint* bits,bool flipY) + { + return LoadImage(filename.c_str(), width, height, bits, flipY); + } + +} \ No newline at end of file diff --git a/Sparky-core/src/sp/utils/ImageLoad.h b/Sparky-core/src/sp/utils/ImageLoad.h new file mode 100644 index 00000000..4f9f0837 --- /dev/null +++ b/Sparky-core/src/sp/utils/ImageLoad.h @@ -0,0 +1,17 @@ +#pragma once + +#include + +#include +#include + +#ifdef LoadImage +#undef LoadImage +#endif + +namespace sp { + + SP_API byte* LoadImage(const char* filename, uint* width = nullptr, uint* height = nullptr, uint* bits = nullptr, bool flipY = false); + SP_API byte* LoadImage(const String& filename, uint* width = nullptr, uint* height = nullptr, uint* bits = nullptr, bool flipY = false); + +} \ No newline at end of file diff --git a/Sparky-core/src/sp/utils/Log.h b/Sparky-core/src/sp/utils/Log.h new file mode 100644 index 00000000..06905a5f --- /dev/null +++ b/Sparky-core/src/sp/utils/Log.h @@ -0,0 +1,347 @@ +#pragma once + +#include "sp/Common.h" +#include "sp/Types.h" + +#include "sp/maths/vec2.h" +#include "sp/maths/Rectangle.h" +#include "sp/events/Events.h" + +#define SPARKY_LOG_LEVEL_FATAL 0 +#define SPARKY_LOG_LEVEL_ERROR 1 +#define SPARKY_LOG_LEVEL_WARN 2 +#define SPARKY_LOG_LEVEL_INFO 3 + +#ifdef MOUSE_MOVED + #undef MOUSE_MOVED // Defined in wincon.h +#endif + +namespace std +{ + template + string to_string(const T& t) + { + return string("[Unsupported type (") + typeid(T).name() + string(")!] (to_string)"); + } +} + +// +// Work in progress! +// +// ------------------------------- +// TODO: +// ------------------------------- +// - Better container type logging +// - Better platform support +// - Logging to other destinations (eg. files) +// - Include (almost) ALL Sparky class types +// - More... +namespace sp { namespace internal { + + static char to_string_buffer[1024 * 10]; + static char sprintf_buffer[1024 * 10]; + + SP_API void PlatformLogMessage(uint level, const char* message); + + template + struct has_iterator + { + template static char(&test(typename U::iterator const*))[1]; + template static char(&test(...))[2]; + static const bool value = (sizeof(test(0)) == 1); + }; + + template + static const char* to_string(const T& t) + { + return to_string_internal(t, std::integral_constant::value>()); + } + + template <> + static const char* to_string(const char& t) + { + return &t; + } + + template <> + static const char* to_string(char* const& t) + { + return t; + } + + template <> + static const char* to_string(unsigned char const* const& t) + { + return (const char*)t; + } + + template <> + static const char* to_string(wchar_t* const& t) + { + wcstombs(sprintf_buffer, t, 1024 * 10); + return sprintf_buffer; + } + + template <> + static const char* to_string(const wchar_t* const& t) + { + wcstombs(sprintf_buffer, t, 1024 * 10); + return sprintf_buffer; + } + + template <> + static const char* to_string(const char* const& t) + { + return t; + } + + template <> + static const char* to_string(const String& t) + { + return t.c_str(); + } + + template <> + static const char* to_string(const bool& t) + { + return t ? "true" : "false"; + } + + template <> + static const char* to_string(const maths::vec2& t) + { + // TODO: sprintf + String string = String("vec2: (") + StringFormat::ToString(t.x) + ", " + StringFormat::ToString(t.y) + ")"; + char* result = new char[string.length()]; + strcpy(result, &string[0]); + return result; + } + + template <> + static const char* to_string(const maths::vec3& t) + { + // TODO: sprintf + String string = String("vec3: (") + StringFormat::ToString(t.x) + ", " + StringFormat::ToString(t.y) + ", " + StringFormat::ToString(t.z) + ")"; + char* result = new char[string.length()]; + strcpy(result, &string[0]); + return result; + } + + template <> + static const char* to_string(const maths::Rectangle& r) + { + sprintf(sprintf_buffer, "Rectangle: (%f, %f, %f, %f)", r.x, r.y, r.width, r.height); + char* result = new char[strlen(sprintf_buffer)]; + strcpy(result, &sprintf_buffer[0]); + return result; + } + + template <> + static const char* to_string(const events::KeyPressedEvent& e) + { + sprintf(sprintf_buffer, "KeyPressedEvent: (%d, %d)", e.GetKeyCode(), e.GetRepeat()); + char* result = new char[strlen(sprintf_buffer)]; + strcpy(result, &sprintf_buffer[0]); + return result; + } + + template <> + static const char* to_string(const events::KeyReleasedEvent& e) + { + sprintf(sprintf_buffer, "KeyReleasedEvent: (%d)", e.GetKeyCode()); + char* result = new char[strlen(sprintf_buffer)]; + strcpy(result, &sprintf_buffer[0]); + return result; + } + + template <> + static const char* to_string(const events::MousePressedEvent& e) + { + sprintf(sprintf_buffer, "MousePressedEvent: (%d, %f, %f)", e.GetButton(), e.GetX(), e.GetY()); + char* result = new char[strlen(sprintf_buffer)]; + strcpy(result, &sprintf_buffer[0]); + return result; + } + + template <> + static const char* to_string(const events::MouseReleasedEvent& e) + { + sprintf(sprintf_buffer, "MouseReleasedEvent: (%d, %f, %f)", e.GetButton(), e.GetX(), e.GetY()); + char* result = new char[strlen(sprintf_buffer)]; + strcpy(result, &sprintf_buffer[0]); + return result; + } + + template <> + static const char* to_string(const events::MouseMovedEvent& e) + { + sprintf(sprintf_buffer, "MouseMovedEvent: (%f, %f, %s)", e.GetX(), e.GetY(), e.IsDragged() ? "true" : "false"); + char* result = new char[strlen(sprintf_buffer)]; + strcpy(result, &sprintf_buffer[0]); + return result; + } + + template <> + static const char* to_string(const events::Event& e) + { + sprintf(sprintf_buffer, "Event: %s (%d)", events::Event::TypeToString(e.GetType()).c_str(), e.GetType()); + char* result = new char[strlen(sprintf_buffer)]; + strcpy(result, &sprintf_buffer[0]); + return result; + } + + template <> + static const char* to_string(events::Event* const& e) + { + using namespace events; + + switch (e->GetType()) + { + case Event::Type::KEY_PRESSED: + return to_string(*(KeyPressedEvent*)e); + case Event::Type::KEY_RELEASED: + return to_string(*(KeyReleasedEvent*)e); + case Event::Type::MOUSE_PRESSED: + return to_string(*(MousePressedEvent*)e); + case Event::Type::MOUSE_RELEASED: + return to_string(*(MouseReleasedEvent*)e); + case Event::Type::MOUSE_MOVED: + return to_string(*(MouseMovedEvent*)e); + } + return "Unkown Event!"; + } + + template + static String format_iterators(T& begin, T& end) + { + String result; + bool first = true; + while (begin != end) + { + if (!first) + result += ", "; + result += to_string(*begin); + first = false; + begin++; + } + return result; + } + + template + static const char* to_string_internal(const T& v, const std::true_type& ignored) + { + sprintf(to_string_buffer, "Container of size: %d, contents: %s", v.size(), format_iterators(v.begin(), v.end()).c_str()); + return to_string_buffer; + } + + template + static const char* to_string_internal(const T& t, const std::false_type& ignored) + { + auto x = StringFormat::ToString(t); + return strcpy(to_string_buffer, x.c_str()); + } + + template + static const char* to_string(const std::pair& v) + { + sprintf(to_string_buffer, "(Key: %s, Value: %s)", to_string(v.first), to_string(v.second)); + return to_string_buffer; + } + + template<> + static const char* to_string_internal(const char* const& v, const std::false_type& ignored) + { + return v; + } + + template + static void print_log_internal(char* buffer, int32& position, First&& first) + { + const char* formatted = sp::internal::to_string(first); + int32 length = strlen(formatted); + memcpy(&buffer[position], formatted, length); + position += length; + } + + template + static void print_log_internal(char* buffer, int32& position, First&& first, Args&&... args) + { + const char* formatted = sp::internal::to_string(first); + int32 length = strlen(formatted); + memcpy(&buffer[position], formatted, length); + position += length; + if (sizeof...(Args)) + print_log_internal(buffer, position, std::forward(args)...); + } + + template + static void log_message(int32 level, bool newline, Args... args) + { + char buffer[1024 * 10]; + int32 position = 0; + print_log_internal(buffer, position, std::forward(args)...); + + if (newline) + buffer[position++] = '\n'; + + buffer[position] = 0; + + PlatformLogMessage(level, buffer); + } +} } + +// Windows (wingdi.h) defines SP_ERROR +#ifdef SP_ERROR + #undef SP_ERROR +#endif + +#ifndef SPARKY_LOG_LEVEL +#define SPARKY_LOG_LEVEL SPARKY_LOG_LEVEL_INFO +#endif + +#if SPARKY_LOG_LEVEL >= SPARKY_LOG_LEVEL_FATAL +#define SP_FATAL(...) sp::internal::log_message(SPARKY_LOG_LEVEL_FATAL, true, "SPARKY: ", __VA_ARGS__) +#define _SP_FATAL(...) sp::internal::log_message(SPARKY_LOG_LEVEL_FATAL, false, __VA_ARGS__) +#else +#define SP_FATAL(...) +#define _SP_FATAL(...) +#endif + +#if SPARKY_LOG_LEVEL >= SPARKY_LOG_LEVEL_ERROR +#define SP_ERROR(...) sp::internal::log_message(SPARKY_LOG_LEVEL_ERROR, true, "SPARKY: ", __VA_ARGS__) +#define _SP_ERROR(...) sp::internal::log_message(SPARKY_LOG_LEVEL_ERROR, false, __VA_ARGS__) +#else +#define SP_ERROR(...) +#define _SP_ERROR(...) +#endif + +#if SPARKY_LOG_LEVEL >= SPARKY_LOG_LEVEL_WARN +#define SP_WARN(...) sp::internal::log_message(SPARKY_LOG_LEVEL_WARN, true, "SPARKY: ", __VA_ARGS__) +#define _SP_WARN(...) sp::internal::log_message(SPARKY_LOG_LEVEL_WARN, false, __VA_ARGS__) +#else +#define SP_WARN(...) +#define _SP_WARN(...) +#endif + +#if SPARKY_LOG_LEVEL >= SPARKY_LOG_LEVEL_INFO +#define SP_INFO(...) sp::internal::log_message(SPARKY_LOG_LEVEL_INFO, true, "SPARKY: ", __VA_ARGS__) +#define _SP_INFO(...) sp::internal::log_message(SPARKY_LOG_LEVEL_INFO, false, __VA_ARGS__) +#else +#define SP_INFO(...) +#define _SP_INFO(...) +#endif + +#ifdef SP_DEBUG +#define SP_ASSERT(x, ...) \ + if (!(x)) {\ + SP_FATAL("*************************"); \ + SP_FATAL(" ASSERTION FAILED! "); \ + SP_FATAL("*************************"); \ + SP_FATAL(__FILE__, ": ", __LINE__); \ + SP_FATAL("Condition: ", #x); \ + SP_FATAL(__VA_ARGS__); \ + __debugbreak(); \ + } +#else +#define SP_ASSERT(x, ...) +#endif \ No newline at end of file diff --git a/Sparky-core/src/sp/utils/Timer.h b/Sparky-core/src/sp/utils/Timer.h new file mode 100644 index 00000000..0cb1f8db --- /dev/null +++ b/Sparky-core/src/sp/utils/Timer.h @@ -0,0 +1,25 @@ +#pragma once + +#include "sp/Common.h" + +namespace sp { + + struct Members; + + class SP_API Timer + { + private: + byte m_Reserved[32]; + Members* m_Members; + public: + // Creates and starts timer + Timer(); + // Resets and restarts timer + virtual void Reset(); + // Returns time in seconds + virtual float Elapsed(); + // Returns time in milliseconds + virtual float ElapsedMillis(); + }; + +} \ No newline at end of file diff --git a/Sparky-core/src/sp/utils/Timestep.h b/Sparky-core/src/sp/utils/Timestep.h new file mode 100644 index 00000000..eefbeeed --- /dev/null +++ b/Sparky-core/src/sp/utils/Timestep.h @@ -0,0 +1,26 @@ +#pragma once + +namespace sp { + + struct Timestep + { + private: + float m_Timestep; + float m_LastTime; + public: + inline Timestep(float initialTime) + : m_Timestep(0.0f), m_LastTime(initialTime) + { + } + + inline void Update(float currentTime) + { + m_Timestep = currentTime - m_LastTime; + m_LastTime = currentTime; + } + + inline float GetMillis() const { return m_Timestep; } + inline float GetSeconds() const { return m_Timestep * 0.001f; } + }; + +} \ No newline at end of file diff --git a/Sparky-core/src/sparky.h b/Sparky-core/src/sparky.h deleted file mode 100644 index 287b7c34..00000000 --- a/Sparky-core/src/sparky.h +++ /dev/null @@ -1,116 +0,0 @@ -#pragma once - -#ifdef SPARKY_EMSCRIPTEN - #include -#endif - -#include "graphics/label.h" -#include "graphics/sprite.h" -#include "graphics/renderer2d.h" -#include "graphics/batchrenderer2d.h" -#include "graphics/window.h" -#include "graphics/layers/layer.h" - -#include "maths/maths.h" -#include "utils/timer.h" - -#ifdef SPARKY_EMSCRIPTEN - -static void dispatch_main(void* fp) -{ - std::function* func = (std::function*)fp; - (*func)(); -} - -#endif - -namespace sparky { - - class Sparky - { - private: - graphics::Window* m_Window; - Timer* m_Timer; - unsigned int m_FramesPerSecond, m_UpdatesPerSecond; - protected: - Sparky() - : m_FramesPerSecond(0), m_UpdatesPerSecond(0) - { - - } - - virtual ~Sparky() - { - delete m_Timer; - delete m_Window; - } - - graphics::Window* createWindow(const char *name, int width, int height) - { - m_Window = new graphics::Window(name, width, height); - return m_Window; - } - - public: - void start() - { - init(); - run(); - } - - protected: - // Runs once upon initialization - virtual void init() = 0; - // Runs once per second - virtual void tick() { } - // Runs 60 times per second - virtual void update() { } - // Runs as fast as possible (unless vsync is enabled) - virtual void render() = 0; - - const unsigned int getFPS() const { return m_FramesPerSecond; } - const unsigned int getUPS() const { return m_UpdatesPerSecond; } - private: - void run() - { - m_Timer = new Timer(); - float timer = 0.0f; - float updateTimer = 0.0f; - float updateTick = 1.0f / 60.0f; - unsigned int frames = 0; - unsigned int updates = 0; -#ifdef SPARKY_EMSCRIPTEN - std::function mainLoop = [&]() { -#else - while (!m_Window->closed()) - { -#endif - m_Window->clear(); - if (m_Timer->elapsed() - updateTimer > updateTick) - { - update(); - updates++; - updateTimer += updateTick; - } - render(); - frames++; - m_Window->update(); - if (m_Timer->elapsed() - timer > 1.0f) - { - timer += 1.0f; - m_FramesPerSecond = frames; - m_UpdatesPerSecond = updates; - frames = 0; - updates = 0; - tick(); - } -#ifdef SPARKY_EMSCRIPTEN - }; - emscripten_set_main_loop_arg(dispatch_main, &mainLoop, 0, 1); -#else - } -#endif - } - }; - -} \ No newline at end of file diff --git a/Sparky-core/src/utils/ImageLoad.h b/Sparky-core/src/utils/ImageLoad.h deleted file mode 100644 index c68b4773..00000000 --- a/Sparky-core/src/utils/ImageLoad.h +++ /dev/null @@ -1,40 +0,0 @@ -#pragma once - -#include -#include -#include - -namespace sparky { - - static BYTE* load_image(const char* filename, GLsizei* width, GLsizei* height) - { - FREE_IMAGE_FORMAT fif = FIF_UNKNOWN; - FIBITMAP* dib = nullptr; - fif = FreeImage_GetFileType(filename, 0); - if (fif == FIF_UNKNOWN) - fif = FreeImage_GetFIFFromFilename(filename); - if (fif == FIF_UNKNOWN) - return nullptr; - - if (FreeImage_FIFSupportsReading(fif)) - dib = FreeImage_Load(fif, filename); - if (!dib) - return nullptr; - - BYTE* pixels = FreeImage_GetBits(dib); - *width = FreeImage_GetWidth(dib); - *height = FreeImage_GetHeight(dib); - int bits = FreeImage_GetBPP(dib); - -#ifdef SPARKY_EMSCRIPTEN - SwapRedBlue32(dib); -#endif - - int size = *width * *height * (bits / 8); - BYTE* result = new BYTE[size]; - memcpy(result, pixels, size); - FreeImage_Unload(dib); - return result; - } - -} \ No newline at end of file diff --git a/Sparky-core/src/utils/fileutils.h b/Sparky-core/src/utils/fileutils.h deleted file mode 100644 index 74e59400..00000000 --- a/Sparky-core/src/utils/fileutils.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include -#include - -namespace sparky { - - static std::string read_file(const char* filepath) - { - FILE* file = fopen(filepath, "rt"); - fseek(file, 0, SEEK_END); - unsigned long length = ftell(file); - char* data = new char[length + 1]; - memset(data, 0, length + 1); - fseek(file, 0, SEEK_SET); - fread(data, 1, length, file); - fclose(file); - - std::string result(data); - delete[] data; - return result; - } - -} \ No newline at end of file diff --git a/Sparky-core/src/utils/stringutils.h b/Sparky-core/src/utils/stringutils.h deleted file mode 100644 index 063ef81d..00000000 --- a/Sparky-core/src/utils/stringutils.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include -#include -#include - -namespace sparky { - - static std::vector split_string(const std::string &s, char delimeter) { - std::vector elems; - std::stringstream ss(s); - std::string item; - while (std::getline(ss, item, delimeter)) { - elems.push_back(item); - } - return elems; - } - -} \ No newline at end of file diff --git a/Sparky-core/src/utils/timer.h b/Sparky-core/src/utils/timer.h deleted file mode 100644 index 8215641d..00000000 --- a/Sparky-core/src/utils/timer.h +++ /dev/null @@ -1,68 +0,0 @@ -#pragma once - -#define WINDOWS_TIMER 0 - -#if WINDOWS_TIMER - #include -#else - #include -#endif - -namespace sparky { - -#if WINDOWS_TIMER - class Timer - { - private: - LARGE_INTEGER m_Start; - double m_Frequency; - public: - Timer() - { - LARGE_INTEGER frequency; - QueryPerformanceFrequency(&frequency); - m_Frequency = 1.0 / frequency.QuadPart; - QueryPerformanceCounter(&m_Start); - } - - void reset() - { - QueryPerformanceCounter(&m_Start); - } - - float elapsed() - { - LARGE_INTEGER current; - QueryPerformanceCounter(¤t); - unsigned __int64 cycles = current.QuadPart - m_Start.QuadPart; - return (float)(cycles * m_Frequency); - } - - }; -#else - class Timer - { - private: - typedef std::chrono::high_resolution_clock HighResolutionClock; - typedef std::chrono::duration milliseconds_type; - std::chrono::time_point m_Start; - public: - Timer() - { - reset(); - } - - void reset() - { - m_Start = HighResolutionClock::now(); - } - - float elapsed() - { - return std::chrono::duration_cast(HighResolutionClock::now() - m_Start).count() / 1000.0f; - } - - }; -#endif - -} \ No newline at end of file diff --git a/Sparky-core/tb.png b/Sparky-core/tb.png deleted file mode 100644 index 4d1f4fa6..00000000 Binary files a/Sparky-core/tb.png and /dev/null differ diff --git a/Sparky-core/tc.png b/Sparky-core/tc.png deleted file mode 100644 index b9d9d9c6..00000000 Binary files a/Sparky-core/tc.png and /dev/null differ diff --git a/Sparky-core/test.png b/Sparky-core/test.png deleted file mode 100644 index c173f674..00000000 Binary files a/Sparky-core/test.png and /dev/null differ diff --git a/Sparky-core/tilelayer.cpp b/Sparky-core/tilelayer.cpp deleted file mode 100644 index 52c5bdf7..00000000 --- a/Sparky-core/tilelayer.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include "tilelayer.h" - -TileLayer::TileLayer(sparky::graphics::Shader* shader) - : Layer(new sparky::graphics::BatchRenderer2D(), shader, sparky::maths::mat4::orthographic(-16.0f, 16.0f, -9.0f, 9.0f, -1.0f, 1.0f)) -{ -} - -TileLayer::~TileLayer() -{ -} diff --git a/Sparky-core/tilelayer.h b/Sparky-core/tilelayer.h deleted file mode 100644 index 1cf103d6..00000000 --- a/Sparky-core/tilelayer.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#include "src/graphics/layers/layer.h" -#include "src/graphics/BatchRenderer2D.h" - -class TileLayer : public sparky::graphics::Layer -{ -public: - TileLayer(sparky::graphics::Shader* shader); - ~TileLayer(); -}; diff --git a/Sparky.sln b/Sparky.sln index 1ed9ed5e..0205507b 100644 --- a/Sparky.sln +++ b/Sparky.sln @@ -1,49 +1,272 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.31101.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Sparky-core", "Sparky-core\Sparky-core.vcxproj", "{C737C239-3A40-4388-9C61-6CF779025785}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{DB3E5C17-038C-4F6B-9CB3-B69A18A4E1CB}" - ProjectSection(SolutionItems) = preProject - Performance1.psess = Performance1.psess - Performance2.psess = Performance2.psess - Performance3.psess = Performance3.psess - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libvorbis", "libvorbis\libvorbis.vcxproj", "{8ED62764-0D19-40AC-BC88-E82AADF1189B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libogg", "libogg\libogg.vcxproj", "{54CE06E0-6313-4F5E-8BDA-4E7815C8743C}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Emscripten|Win32 = Emscripten|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C737C239-3A40-4388-9C61-6CF779025785}.Debug|Win32.ActiveCfg = Debug|Win32 - {C737C239-3A40-4388-9C61-6CF779025785}.Debug|Win32.Build.0 = Debug|Win32 - {C737C239-3A40-4388-9C61-6CF779025785}.Emscripten|Win32.ActiveCfg = Emscripten|Win32 - {C737C239-3A40-4388-9C61-6CF779025785}.Emscripten|Win32.Build.0 = Emscripten|Win32 - {C737C239-3A40-4388-9C61-6CF779025785}.Release|Win32.ActiveCfg = Release|Win32 - {C737C239-3A40-4388-9C61-6CF779025785}.Release|Win32.Build.0 = Release|Win32 - {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Debug|Win32.ActiveCfg = Debug|Win32 - {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Debug|Win32.Build.0 = Debug|Win32 - {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Emscripten|Win32.ActiveCfg = Release|Win32 - {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Release|Win32.ActiveCfg = Release|Win32 - {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Release|Win32.Build.0 = Release|Win32 - {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Debug|Win32.ActiveCfg = Debug|Win32 - {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Debug|Win32.Build.0 = Debug|Win32 - {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Emscripten|Win32.ActiveCfg = Release|Win32 - {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Release|Win32.ActiveCfg = Release|Win32 - {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(Performance) = preSolution - HasPerformanceSessions = true - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25123.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Sandbox", "Sandbox\Sandbox.vcxproj", "{3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}" + ProjectSection(ProjectDependencies) = postProject + {C737C239-3A40-4388-9C61-6CF779025785} = {C737C239-3A40-4388-9C61-6CF779025785} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Sparky-core", "Sparky-core\Sparky-core.vcxproj", "{C737C239-3A40-4388-9C61-6CF779025785}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libvorbis", "Dependencies\libvorbis\libvorbis.vcxproj", "{8ED62764-0D19-40AC-BC88-E82AADF1189B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libogg", "Dependencies\libogg\libogg.vcxproj", "{54CE06E0-6313-4F5E-8BDA-4E7815C8743C}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Dependencies", "Dependencies", "{CDF953E8-D5D6-4797-AA4A-5C7D86DE1F64}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SparkyCLI", "SparkyCLI\SparkyCLI.vcxproj", "{E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SandboxCS", "SandboxCS\SandboxCS.csproj", "{137E8FF8-B0F0-446C-A817-00045F4BAFE4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Box2D", "Dependencies\Box2D\Box2D.vcxproj", "{BCE9869C-CDE3-4935-99AB-4522493CE0B3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeType", "Dependencies\FreeType\FreeType.vcxproj", "{1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gorilla-audio", "Dependencies\gorilla-audio\gorilla-audio.vcxproj", "{E9A0F826-3688-4461-8E49-7CCC543F9E40}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{E8F65CE7-0E81-42F2-998C-F71E1F7D5097}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SPMBuild", "Tools\SPMBuild\SPMBuild.vcxproj", "{B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeImage", "Dependencies\FreeImage\FreeImage.vcxproj", "{6F2FF135-E343-4138-A6FB-2D1F2540A3F8}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Emscripten|Any CPU = Emscripten|Any CPU + Emscripten|Mixed Platforms = Emscripten|Mixed Platforms + Emscripten|Win32 = Emscripten|Win32 + Emscripten|x64 = Emscripten|x64 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Debug|Win32.ActiveCfg = Debug|Win32 + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Debug|Win32.Build.0 = Debug|Win32 + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Debug|x64.ActiveCfg = Debug|Win32 + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Emscripten|Any CPU.ActiveCfg = Release|Win32 + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Emscripten|Mixed Platforms.ActiveCfg = Release|Win32 + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Emscripten|Mixed Platforms.Build.0 = Release|Win32 + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Emscripten|Win32.ActiveCfg = Release|Win32 + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Emscripten|Win32.Build.0 = Release|Win32 + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Emscripten|x64.ActiveCfg = Release|Win32 + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Emscripten|x64.Build.0 = Release|Win32 + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Release|Any CPU.ActiveCfg = Release|Win32 + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Release|Mixed Platforms.Build.0 = Release|Win32 + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Release|Win32.ActiveCfg = Release|Win32 + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Release|Win32.Build.0 = Release|Win32 + {3A87EAB9-F0FF-4C31-905F-E3D07BF021FF}.Release|x64.ActiveCfg = Release|Win32 + {C737C239-3A40-4388-9C61-6CF779025785}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {C737C239-3A40-4388-9C61-6CF779025785}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {C737C239-3A40-4388-9C61-6CF779025785}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {C737C239-3A40-4388-9C61-6CF779025785}.Debug|Win32.ActiveCfg = Debug|Win32 + {C737C239-3A40-4388-9C61-6CF779025785}.Debug|Win32.Build.0 = Debug|Win32 + {C737C239-3A40-4388-9C61-6CF779025785}.Debug|x64.ActiveCfg = Debug|Win32 + {C737C239-3A40-4388-9C61-6CF779025785}.Emscripten|Any CPU.ActiveCfg = Emscripten|Win32 + {C737C239-3A40-4388-9C61-6CF779025785}.Emscripten|Mixed Platforms.ActiveCfg = Emscripten|Win32 + {C737C239-3A40-4388-9C61-6CF779025785}.Emscripten|Mixed Platforms.Build.0 = Emscripten|Win32 + {C737C239-3A40-4388-9C61-6CF779025785}.Emscripten|Win32.ActiveCfg = Emscripten|Win32 + {C737C239-3A40-4388-9C61-6CF779025785}.Emscripten|Win32.Build.0 = Emscripten|Win32 + {C737C239-3A40-4388-9C61-6CF779025785}.Emscripten|x64.ActiveCfg = Emscripten|Win32 + {C737C239-3A40-4388-9C61-6CF779025785}.Release|Any CPU.ActiveCfg = Release|Win32 + {C737C239-3A40-4388-9C61-6CF779025785}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {C737C239-3A40-4388-9C61-6CF779025785}.Release|Mixed Platforms.Build.0 = Release|Win32 + {C737C239-3A40-4388-9C61-6CF779025785}.Release|Win32.ActiveCfg = Release|Win32 + {C737C239-3A40-4388-9C61-6CF779025785}.Release|Win32.Build.0 = Release|Win32 + {C737C239-3A40-4388-9C61-6CF779025785}.Release|x64.ActiveCfg = Release|Win32 + {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Debug|Win32.ActiveCfg = Debug|Win32 + {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Debug|Win32.Build.0 = Debug|Win32 + {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Debug|x64.ActiveCfg = Debug|Win32 + {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Emscripten|Any CPU.ActiveCfg = Release|Win32 + {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Emscripten|Mixed Platforms.ActiveCfg = Release|Win32 + {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Emscripten|Mixed Platforms.Build.0 = Release|Win32 + {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Emscripten|Win32.ActiveCfg = Release|Win32 + {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Emscripten|x64.ActiveCfg = Release|Win32 + {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Emscripten|x64.Build.0 = Release|Win32 + {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Release|Any CPU.ActiveCfg = Release|Win32 + {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Release|Mixed Platforms.Build.0 = Release|Win32 + {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Release|Win32.ActiveCfg = Release|Win32 + {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Release|Win32.Build.0 = Release|Win32 + {8ED62764-0D19-40AC-BC88-E82AADF1189B}.Release|x64.ActiveCfg = Release|Win32 + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Debug|Win32.ActiveCfg = Debug|Win32 + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Debug|Win32.Build.0 = Debug|Win32 + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Debug|x64.ActiveCfg = Debug|Win32 + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Emscripten|Any CPU.ActiveCfg = Release|Win32 + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Emscripten|Mixed Platforms.ActiveCfg = Release|Win32 + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Emscripten|Mixed Platforms.Build.0 = Release|Win32 + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Emscripten|Win32.ActiveCfg = Release|Win32 + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Emscripten|x64.ActiveCfg = Release|Win32 + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Emscripten|x64.Build.0 = Release|Win32 + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Release|Any CPU.ActiveCfg = Release|Win32 + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Release|Mixed Platforms.Build.0 = Release|Win32 + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Release|Win32.ActiveCfg = Release|Win32 + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Release|Win32.Build.0 = Release|Win32 + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C}.Release|x64.ActiveCfg = Release|Win32 + {E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA}.Debug|Win32.ActiveCfg = Debug|Win32 + {E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA}.Debug|x64.ActiveCfg = Debug|Win32 + {E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA}.Emscripten|Any CPU.ActiveCfg = Release|Win32 + {E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA}.Emscripten|Mixed Platforms.ActiveCfg = Release|Win32 + {E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA}.Emscripten|Mixed Platforms.Build.0 = Release|Win32 + {E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA}.Emscripten|Win32.ActiveCfg = Release|Win32 + {E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA}.Emscripten|Win32.Build.0 = Release|Win32 + {E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA}.Emscripten|x64.ActiveCfg = Release|Win32 + {E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA}.Emscripten|x64.Build.0 = Release|Win32 + {E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA}.Release|Any CPU.ActiveCfg = Release|Win32 + {E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA}.Release|Mixed Platforms.Build.0 = Release|Win32 + {E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA}.Release|Win32.ActiveCfg = Release|Win32 + {E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA}.Release|x64.ActiveCfg = Release|Win32 + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Debug|Win32.ActiveCfg = Debug|Any CPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Debug|x64.ActiveCfg = Debug|Any CPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Emscripten|Any CPU.ActiveCfg = Release|Any CPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Emscripten|Any CPU.Build.0 = Release|Any CPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Emscripten|Mixed Platforms.ActiveCfg = Release|Any CPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Emscripten|Mixed Platforms.Build.0 = Release|Any CPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Emscripten|Win32.ActiveCfg = Release|Any CPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Emscripten|x64.ActiveCfg = Release|Any CPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Emscripten|x64.Build.0 = Release|Any CPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Release|Any CPU.Build.0 = Release|Any CPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Release|Win32.ActiveCfg = Release|Any CPU + {137E8FF8-B0F0-446C-A817-00045F4BAFE4}.Release|x64.ActiveCfg = Release|Any CPU + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Debug|Win32.ActiveCfg = Debug|Win32 + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Debug|Win32.Build.0 = Debug|Win32 + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Debug|x64.ActiveCfg = Debug|Win32 + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Emscripten|Any CPU.ActiveCfg = Release|Win32 + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Emscripten|Mixed Platforms.ActiveCfg = Release|Win32 + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Emscripten|Mixed Platforms.Build.0 = Release|Win32 + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Emscripten|Win32.ActiveCfg = Release|Win32 + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Emscripten|Win32.Build.0 = Release|Win32 + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Emscripten|x64.ActiveCfg = Release|Win32 + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Emscripten|x64.Build.0 = Release|Win32 + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Release|Any CPU.ActiveCfg = Release|Win32 + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Release|Mixed Platforms.Build.0 = Release|Win32 + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Release|Win32.ActiveCfg = Release|Win32 + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Release|Win32.Build.0 = Release|Win32 + {BCE9869C-CDE3-4935-99AB-4522493CE0B3}.Release|x64.ActiveCfg = Release|Win32 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Debug|Win32.ActiveCfg = Debug|Win32 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Debug|Win32.Build.0 = Debug|Win32 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Debug|x64.ActiveCfg = Debug|x64 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Emscripten|Any CPU.ActiveCfg = Release|x64 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Emscripten|Any CPU.Build.0 = Release|x64 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Emscripten|Mixed Platforms.ActiveCfg = Release|Win32 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Emscripten|Mixed Platforms.Build.0 = Release|Win32 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Emscripten|Win32.ActiveCfg = Release|Win32 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Emscripten|Win32.Build.0 = Release|Win32 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Emscripten|x64.ActiveCfg = Release|x64 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Emscripten|x64.Build.0 = Release|x64 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Release|Any CPU.ActiveCfg = Release|Win32 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Release|Mixed Platforms.Build.0 = Release|Win32 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Release|Win32.ActiveCfg = Release|Win32 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Release|Win32.Build.0 = Release|Win32 + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7}.Release|x64.ActiveCfg = Release|x64 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Debug|Win32.ActiveCfg = Debug|Win32 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Debug|Win32.Build.0 = Debug|Win32 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Debug|x64.ActiveCfg = Debug|x64 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Emscripten|Any CPU.ActiveCfg = Release|x64 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Emscripten|Any CPU.Build.0 = Release|x64 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Emscripten|Mixed Platforms.ActiveCfg = Release|Win32 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Emscripten|Mixed Platforms.Build.0 = Release|Win32 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Emscripten|Win32.ActiveCfg = Release|Win32 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Emscripten|Win32.Build.0 = Release|Win32 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Emscripten|x64.ActiveCfg = Release|x64 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Emscripten|x64.Build.0 = Release|x64 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Release|Any CPU.ActiveCfg = Release|Win32 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Release|Mixed Platforms.Build.0 = Release|Win32 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Release|Win32.ActiveCfg = Release|Win32 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Release|Win32.Build.0 = Release|Win32 + {E9A0F826-3688-4461-8E49-7CCC543F9E40}.Release|x64.ActiveCfg = Release|x64 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Debug|Win32.ActiveCfg = Debug|Win32 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Debug|x64.ActiveCfg = Debug|x64 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Debug|x64.Build.0 = Debug|x64 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Emscripten|Any CPU.ActiveCfg = Release|x64 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Emscripten|Any CPU.Build.0 = Release|x64 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Emscripten|Mixed Platforms.ActiveCfg = Release|Win32 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Emscripten|Mixed Platforms.Build.0 = Release|Win32 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Emscripten|Win32.ActiveCfg = Release|Win32 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Emscripten|Win32.Build.0 = Release|Win32 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Emscripten|x64.ActiveCfg = Release|x64 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Emscripten|x64.Build.0 = Release|x64 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Release|Any CPU.ActiveCfg = Release|Win32 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Release|Mixed Platforms.Build.0 = Release|Win32 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Release|Win32.ActiveCfg = Release|Win32 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Release|x64.ActiveCfg = Release|x64 + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3}.Release|x64.Build.0 = Release|x64 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Debug|Win32.ActiveCfg = Debug|Win32 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Debug|Win32.Build.0 = Debug|Win32 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Debug|x64.ActiveCfg = Debug|x64 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Emscripten|Any CPU.ActiveCfg = Release|x64 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Emscripten|Any CPU.Build.0 = Release|x64 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Emscripten|Mixed Platforms.ActiveCfg = Release|Win32 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Emscripten|Mixed Platforms.Build.0 = Release|Win32 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Emscripten|Win32.ActiveCfg = Release|Win32 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Emscripten|Win32.Build.0 = Release|Win32 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Emscripten|x64.ActiveCfg = Release|x64 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Emscripten|x64.Build.0 = Release|x64 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Release|Any CPU.ActiveCfg = Release|Win32 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Release|Mixed Platforms.Build.0 = Release|Win32 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Release|Win32.ActiveCfg = Release|Win32 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Release|Win32.Build.0 = Release|Win32 + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8}.Release|x64.ActiveCfg = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {8ED62764-0D19-40AC-BC88-E82AADF1189B} = {CDF953E8-D5D6-4797-AA4A-5C7D86DE1F64} + {54CE06E0-6313-4F5E-8BDA-4E7815C8743C} = {CDF953E8-D5D6-4797-AA4A-5C7D86DE1F64} + {BCE9869C-CDE3-4935-99AB-4522493CE0B3} = {CDF953E8-D5D6-4797-AA4A-5C7D86DE1F64} + {1B0BC2C5-1A09-4017-BDF5-9F9C1718BFE7} = {CDF953E8-D5D6-4797-AA4A-5C7D86DE1F64} + {E9A0F826-3688-4461-8E49-7CCC543F9E40} = {CDF953E8-D5D6-4797-AA4A-5C7D86DE1F64} + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3} = {E8F65CE7-0E81-42F2-998C-F71E1F7D5097} + {6F2FF135-E343-4138-A6FB-2D1F2540A3F8} = {CDF953E8-D5D6-4797-AA4A-5C7D86DE1F64} + EndGlobalSection +EndGlobal diff --git a/SparkyCLI/AssemblyInfo.cpp b/SparkyCLI/AssemblyInfo.cpp new file mode 100644 index 00000000..f7b58abb --- /dev/null +++ b/SparkyCLI/AssemblyInfo.cpp @@ -0,0 +1,36 @@ +using namespace System; +using namespace System::Reflection; +using namespace System::Runtime::CompilerServices; +using namespace System::Runtime::InteropServices; +using namespace System::Security::Permissions; + +// +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +// +[assembly:AssemblyTitleAttribute(L"SparkyCLI")]; +[assembly:AssemblyDescriptionAttribute(L"")]; +[assembly:AssemblyConfigurationAttribute(L"")]; +[assembly:AssemblyCompanyAttribute(L"")]; +[assembly:AssemblyProductAttribute(L"SparkyCLI")]; +[assembly:AssemblyCopyrightAttribute(L"Copyright (c) 2015")]; +[assembly:AssemblyTrademarkAttribute(L"")]; +[assembly:AssemblyCultureAttribute(L"")]; + +// +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the value or you can default the Revision and Build Numbers +// by using the '*' as shown below: + +[assembly:AssemblyVersionAttribute("1.0.*")]; + +[assembly:ComVisible(false)]; + +[assembly:CLSCompliantAttribute(true)]; \ No newline at end of file diff --git a/SparkyCLI/ReadMe.txt b/SparkyCLI/ReadMe.txt new file mode 100644 index 00000000..6af9c12f --- /dev/null +++ b/SparkyCLI/ReadMe.txt @@ -0,0 +1,38 @@ +======================================================================== + DYNAMIC LINK LIBRARY : SparkyCLI Project Overview +======================================================================== + +AppWizard has created this SparkyCLI DLL for you. + +This file contains a summary of what you will find in each of the files that +make up your SparkyCLI application. + +SparkyCLI.vcxproj + This is the main project file for VC++ projects generated using an Application Wizard. + It contains information about the version of Visual C++ that generated the file, and + information about the platforms, configurations, and project features selected with the + Application Wizard. + +SparkyCLI.vcxproj.filters + This is the filters file for VC++ projects generated using an Application Wizard. + It contains information about the association between the files in your project + and the filters. This association is used in the IDE to show grouping of files with + similar extensions under a specific node (for e.g. ".cpp" files are associated with the + "Source Files" filter). + +SparkyCLI.cpp + This is the main DLL source file. + +SparkyCLI.h + This file contains a class declaration. + +AssemblyInfo.cpp + Contains custom attributes for modifying assembly metadata. + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +AppWizard uses "TODO:" to indicate parts of the source code you +should add to or customize. + +///////////////////////////////////////////////////////////////////////////// diff --git a/SparkyCLI/SparkyCLI.vcxproj b/SparkyCLI/SparkyCLI.vcxproj new file mode 100644 index 00000000..0d6251e4 --- /dev/null +++ b/SparkyCLI/SparkyCLI.vcxproj @@ -0,0 +1,128 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {E5D7B37B-2FC1-48A5-AB8D-54FDE9B167FA} + v4.5.2 + ManagedCProj + SparkyCLI + 10.0.17763.0 + + + + DynamicLibrary + true + v141 + true + Unicode + + + DynamicLibrary + false + v141 + true + Unicode + + + + + + + + + + + + + true + $(SolutionDir)bin\$(Configuration)\ + $(SolutionDir)bin\$(Configuration)\Intermediates\$(ProjectName) + $(SolutionDir)Dependencies\libvorbis\include;$(SolutionDir)Dependencies\OpenAL\include;$(ProjectDir)ext\freetype\include;$(SolutionDir)Dependencies\FreeImage\include;$(SolutionDir)Dependencies\GLEW\include;$(SolutionDir)Dependencies\GLFW\include;$(SolutionDir)Sparky-core\src;$(VC_IncludePath);$(WindowsSDK_IncludePath); + $(SolutionDir)Dependencies\libogg\bin;$(SolutionDir)Dependencies\OpenAL\libs\Win32;$(SolutionDir)Dependencies\FreeImage\lib;$(SolutionDir)Dependencies\GLEW\lib;$(SolutionDir)Dependencies\GLFW\lib-vc2013;$(SolutionDir)Dependencies\libvorbis\bin;$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86); + + + false + $(SolutionDir)bin\$(Configuration)\ + $(SolutionDir)bin\$(Configuration)\Intermediates\$(ProjectName) + $(SolutionDir)Dependencies\libvorbis\include;$(SolutionDir)Dependencies\OpenAL\include;$(ProjectDir)ext\freetype\include;$(SolutionDir)Dependencies\FreeImage\include;$(SolutionDir)Dependencies\GLEW\include;$(SolutionDir)Dependencies\GLFW\include;$(SolutionDir)Sparky-core\src;$(VC_IncludePath);$(WindowsSDK_IncludePath); + $(SolutionDir)Dependencies\libogg\bin;$(SolutionDir)Dependencies\OpenAL\libs\Win32;$(SolutionDir)Dependencies\FreeImage\lib;$(SolutionDir)Dependencies\GLEW\lib;$(SolutionDir)Dependencies\GLFW\lib-vc2013;$(SolutionDir)Dependencies\libvorbis\bin;$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86); + + + + Level3 + Disabled + WIN32;_DEBUG;%(PreprocessorDefinitions) + NotUsing + + + + + true + glew32s.lib;opengl32.lib;FreeImage.lib;OpenAL32.lib;libvorbis.lib;libogg.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib + + + + + Level3 + WIN32;NDEBUG;%(PreprocessorDefinitions) + NotUsing + + + Speed + + + true + glew32s.lib;opengl32.lib;FreeImage.lib;OpenAL32.lib;libvorbis.lib;libogg.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {c737c239-3a40-4388-9c61-6cf779025785} + + + + + + \ No newline at end of file diff --git a/SparkyCLI/resource.h b/SparkyCLI/resource.h new file mode 100644 index 00000000..d5ac7c42 --- /dev/null +++ b/SparkyCLI/resource.h @@ -0,0 +1,3 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by app.rc diff --git a/SparkyCLI/src/SparkyCLI.h b/SparkyCLI/src/SparkyCLI.h new file mode 100644 index 00000000..de0915a0 --- /dev/null +++ b/SparkyCLI/src/SparkyCLI.h @@ -0,0 +1,64 @@ +#pragma once + +#include + +namespace SparkyCLI { + + static std::string string_to_std_string(System::String^ string) + { + return msclr::interop::marshal_as(string); + } + + static System::String^ std_string_to_string(const std::string& string) + { + return msclr::interop::marshal_as(string); + } + + static const char* string_to_char_array(System::String^ string) + { + char* result = new char[string->Length + 1]; + sprintf(result, "%s", string); + return result; + } + + template + public ref class ManagedClass + { + protected: + T* m_Instance; + public: + ManagedClass() + { + // m_Instance = new T(); + } + + ManagedClass(T* instance) + : m_Instance(instance) + { + } + + virtual ~ManagedClass() + { + if (m_Instance != nullptr) + { + delete m_Instance; + m_Instance = nullptr; + } + } + + !ManagedClass() + { + if (m_Instance != nullptr) + { + delete m_Instance; + m_Instance = nullptr; + } + } + + T* GetHandle() + { + return m_Instance; + } + + }; +} diff --git a/SparkyCLI/src/app/Application.h b/SparkyCLI/src/app/Application.h new file mode 100644 index 00000000..3a4db28d --- /dev/null +++ b/SparkyCLI/src/app/Application.h @@ -0,0 +1,27 @@ +#pragma once + +#include "..\SparkyCLI.h" + +#include + +namespace SparkyCLI { + + public ref class Application : public ManagedClass + { + public: + Application(System::String^ name, uint width, uint height); + virtual void Init(); + void Start(); + void Suspend(); + void Resume(); + void Stop(); + + virtual void Tick(); + virtual void Update(); + virtual void Render(); + + const uint GetFPS(); + const uint GetUPS(); + }; + +} \ No newline at end of file diff --git a/SparkyCLI/src/audio/Sound.cpp b/SparkyCLI/src/audio/Sound.cpp new file mode 100644 index 00000000..9078c495 --- /dev/null +++ b/SparkyCLI/src/audio/Sound.cpp @@ -0,0 +1,65 @@ +#include "Sound.h" + +namespace SparkyCLI { + + Sound::Sound(sp::audio::Sound* instance) + : ManagedClass(instance) + { + } + + Sound::Sound(System::String^ name, System::String^ filename) + { + m_Instance = new sp::audio::Sound(string_to_std_string(name), string_to_std_string(filename)); + } + + void Sound::Play() + { + m_Instance->Play(); + } + + void Sound::Loop() + { + m_Instance->Loop(); + } + + void Sound::Pause() + { + m_Instance->Pause(); + } + + void Sound::Resume() + { + m_Instance->Resume(); + } + + void Sound::Stop() + { + m_Instance->Stop(); + } + + void Sound::SetGain(float gain) + { + m_Instance->SetGain(gain); + } + + const bool Sound::IsPlaying() + { + return m_Instance->IsPlaying(); + } + + const float Sound::GetGain() + { + return m_Instance->GetGain(); + } + + const System::String^ Sound::GetName() + { + return std_string_to_string(m_Instance->GetName()); + } + + const System::String^ Sound::GetFileName() + { + return std_string_to_string(m_Instance->GetFileName()); + } + +} \ No newline at end of file diff --git a/SparkyCLI/src/audio/Sound.h b/SparkyCLI/src/audio/Sound.h new file mode 100644 index 00000000..1e2e7072 --- /dev/null +++ b/SparkyCLI/src/audio/Sound.h @@ -0,0 +1,29 @@ +#pragma once + +#include "..\SparkyCLI.h" + +#include + +namespace SparkyCLI { + + public ref class Sound : public ManagedClass + { + public: + Sound(sp::audio::Sound* instance); + Sound(System::String^ name, System::String^ filename); + + void Play(); + void Loop(); + void Pause(); + void Resume(); + void Stop(); + + void SetGain(float gain); + + const bool IsPlaying(); + const float GetGain(); + const System::String^ GetName(); + const System::String^ GetFileName(); + }; + +} \ No newline at end of file diff --git a/SparkyCLI/src/audio/SoundManager.cpp b/SparkyCLI/src/audio/SoundManager.cpp new file mode 100644 index 00000000..62877640 --- /dev/null +++ b/SparkyCLI/src/audio/SoundManager.cpp @@ -0,0 +1,31 @@ +#include "SoundManager.h" + +namespace SparkyCLI { + + void SoundManager::Init() + { + sp::audio::SoundManager::Init(); + } + + Sound^ SoundManager::Add(Sound^ sound) + { + sp::audio::SoundManager::Add(sound->GetHandle()); + return sound; + } + + Sound^ SoundManager::Get(System::String^ name) + { + return gcnew Sound(sp::audio::SoundManager::Get(string_to_std_string(name))); + } + + void SoundManager::Update() + { + sp::audio::SoundManager::Update(); + } + + void SoundManager::Clean() + { + sp::audio::SoundManager::Clean(); + } + +} \ No newline at end of file diff --git a/SparkyCLI/src/audio/SoundManager.h b/SparkyCLI/src/audio/SoundManager.h new file mode 100644 index 00000000..69e25edf --- /dev/null +++ b/SparkyCLI/src/audio/SoundManager.h @@ -0,0 +1,21 @@ +#pragma once + +#include "..\SparkyCLI.h" +#include "Sound.h" + +#include + +namespace SparkyCLI { + + // Static class, no ManagedClass type + public ref class SoundManager + { + public: + static void Init(); + static Sound^ Add(Sound^ sound); + static Sound^ Get(System::String^ name); + static void Update(); + static void Clean(); + }; + +} \ No newline at end of file diff --git a/SparkyCLI/src/graphics/Window.cpp b/SparkyCLI/src/graphics/Window.cpp new file mode 100644 index 00000000..f2daf138 --- /dev/null +++ b/SparkyCLI/src/graphics/Window.cpp @@ -0,0 +1,50 @@ +#include "Window.h" + +namespace SparkyCLI { + + Window::Window(sp::Window* instance) + : ManagedClass(instance) + { + } + + Window::Window(System::String^ name, System::UInt32 width, System::UInt32 height) + { + m_Instance = new sp::Window(string_to_char_array(name), {width, height, false, 0}); + } + + void Window::Clear() + { + m_Instance->Clear(); + } + + void Window::Update() + { + m_Instance->Update(); + } + + bool Window::Closed() + { + return m_Instance->Closed(); + } + + System::UInt32 Window::GetWidth() + { + return m_Instance->GetWidth(); + } + + System::UInt32 Window::GetHeight() + { + return m_Instance->GetHeight(); + } + + void Window::SetVsync(bool enabled) + { + return m_Instance->SetVsync(enabled); + } + + bool Window::IsVsync() + { + return m_Instance->IsVsync(); + } + +} \ No newline at end of file diff --git a/SparkyCLI/src/graphics/Window.h b/SparkyCLI/src/graphics/Window.h new file mode 100644 index 00000000..cee8905b --- /dev/null +++ b/SparkyCLI/src/graphics/Window.h @@ -0,0 +1,27 @@ +#pragma once + +#include "../SparkyCLI.h" +#include "../maths/Vector2.h" + +#include + +namespace SparkyCLI { + + public ref class Window : public ManagedClass + { + private: + Window(sp::Window* instance); + public: + Window(System::String^ name, System::UInt32 width, System::UInt32 height); + void Clear(); + void Update(); + bool Closed(); + + inline uint GetWidth(); + inline uint GetHeight(); + + void SetVsync(bool enabled); + bool IsVsync(); + }; + +} \ No newline at end of file diff --git a/SparkyCLI/src/graphics/shaders/Shader.cpp b/SparkyCLI/src/graphics/shaders/Shader.cpp new file mode 100644 index 00000000..d01cb194 --- /dev/null +++ b/SparkyCLI/src/graphics/shaders/Shader.cpp @@ -0,0 +1,79 @@ +#include "Shader.h" + +namespace SparkyCLI { + + Shader::Shader(sp::graphics::API::Shader* instance) + : ManagedClass(instance) + { + } + + Shader::Shader() + { + //TODO: Use static Shader::MakeFrom...() + //m_Instance = new sp::graphics::API::Shader(); + } + + + void Shader::SetUniform1f(System::String^ name, float value) + { + //m_Instance->SetUniform1f(string_to_char_array(name), value); + } + + void Shader::SetUniform1fv(System::String^ name, array^ value, int count) + { + pin_ptr p = &value[0]; + //m_Instance->SetUniform1fv(string_to_char_array(name), p, count); + } + + void Shader::SetUniform1i(System::String^ name, int value) + { + //m_Instance->SetUniform1i(string_to_char_array(name), value); + } + + void Shader::SetUniform1iv(System::String^ name, array^ value, int count) + { + pin_ptr p = &value[0]; + //m_Instance->SetUniform1iv(string_to_char_array(name), p, count); + } + + void Shader::SetUniform2f(System::String^ name, Vector2^ vector) + { + //m_Instance->SetUniform2f(string_to_char_array(name), *vector->GetHandle()); + } + + void Shader::SetUniform3f(System::String^ name, Vector3^ vector) + { + //m_Instance->SetUniform3f(string_to_char_array(name), *vector->GetHandle()); + } + + void Shader::SetUniform4f(System::String^ name, Vector4^ vector) + { + //m_Instance->SetUniform4f(string_to_char_array(name), *vector->GetHandle()); + } + + void Shader::SetUniformMat4(System::String^ name, Matrix4^ matrix) + { + //m_Instance->SetUniformMat4(string_to_char_array(name), *matrix->GetHandle()); + } + + void Shader::Bind() + { + m_Instance->Bind(); + } + + void Shader::Unbind() + { + m_Instance->Unbind(); + } + + Shader^ Shader::FromFile(System::String^ name, System::String^ filePath) + { + return gcnew Shader(sp::graphics::API::Shader::CreateFromFile(string_to_char_array(name), string_to_char_array(filePath))); + } + + Shader^ Shader::FromSource(System::String^ name, System::String^ src) + { + return gcnew Shader(sp::graphics::API::Shader::CreateFromSource(string_to_char_array(name), string_to_char_array(src))); + } + +} \ No newline at end of file diff --git a/SparkyCLI/src/graphics/shaders/Shader.h b/SparkyCLI/src/graphics/shaders/Shader.h new file mode 100644 index 00000000..aacedc63 --- /dev/null +++ b/SparkyCLI/src/graphics/shaders/Shader.h @@ -0,0 +1,36 @@ +#pragma once + +#include "../../SparkyCLI.h" +#include "../../maths/Vector2.h" +#include "../../maths/Vector3.h" +#include "../../maths/Matrix4.h" + +#include + +namespace SparkyCLI { + + public ref class Shader : public ManagedClass + { + private: + Shader(sp::graphics::API::Shader* instance); + public: + Shader(); + + void SetUniform1f(System::String^ name, float value); + void SetUniform1fv(System::String^ name, array^ value, int count); + void SetUniform1i(System::String^ name, int value); + void SetUniform1iv(System::String^ name, array^ value, int count); + void SetUniform2f(System::String^ name, Vector2^ vector); + void SetUniform3f(System::String^ name, Vector3^ vector); + void SetUniform4f(System::String^ name, Vector4^ vector); + void SetUniformMat4(System::String^ name, Matrix4^ matrix); + + void Bind(); + void Unbind(); + + public: + static Shader^ FromFile(System::String^ vertPath, System::String^ fragPath); + static Shader^ FromSource(System::String^ vertSrc, System::String^ fragSrc); + }; + +} \ No newline at end of file diff --git a/SparkyCLI/src/maths/Matrix4.cpp b/SparkyCLI/src/maths/Matrix4.cpp new file mode 100644 index 00000000..ae7bf7e1 --- /dev/null +++ b/SparkyCLI/src/maths/Matrix4.cpp @@ -0,0 +1,103 @@ +#include "Matrix4.h" + +namespace SparkyCLI { + + Matrix4::Matrix4(sp::maths::mat4* instance) + : ManagedClass(instance) + { + } + + Matrix4::Matrix4() + : ManagedClass() + { + } + + Matrix4::Matrix4(float diagonal) + { + m_Instance = new sp::maths::mat4(diagonal); + } + + Matrix4^ Matrix4::Identity() + { + return gcnew Matrix4(&sp::maths::mat4::Identity()); + } + + Matrix4^ Matrix4::Multiply(Matrix4^ other) + { + return gcnew Matrix4(&m_Instance->Multiply(*other->GetHandle())); + } + + Matrix4^ Matrix4::operator*(Matrix4^ left, Matrix4^ right) + { + return left->Multiply(right); + } + + Matrix4^ Matrix4::operator*=(Matrix4^ other) + { + return Multiply(other); + } + + Vector3^ Matrix4::Multiply(Vector3^ other) + { + sp::maths::vec3 result = m_Instance->Multiply(*other->GetHandle()); + return gcnew Vector3(result.x, result.y, result.z); + } + + Vector3^ Matrix4::operator*(Matrix4^ left, Vector3^ right) + { + return left->Multiply(right); + } + + Vector4^ Matrix4::Multiply(Vector4^ other) + { + sp::maths::vec4 result = m_Instance->Multiply(*other->GetHandle()); + return gcnew Vector4(result.x, result.y, result.z, result.w); + } + + Vector4^ Matrix4::operator*(Matrix4^ left, Vector4^ right) + { + return left->Multiply(right); + } + + Matrix4^ Matrix4::Invert() + { + return gcnew Matrix4(&m_Instance->Invert()); + } + + Matrix4^ Matrix4::Orthographic(float left, float right, float bottom, float top, float near, float far) + { + return gcnew Matrix4(&sp::maths::mat4::Orthographic(left, right, bottom, top, near, far)); + } + + Matrix4^ Matrix4::Perspective(float fov, float aspectRatio, float near, float far) + { + return gcnew Matrix4(&sp::maths::mat4::Perspective(fov, aspectRatio, near, far)); + } + + Matrix4^ Matrix4::Translate(Vector3^ translation) + { + return gcnew Matrix4(&sp::maths::mat4::Translate(*translation->GetHandle())); + } + + Matrix4^ Matrix4::Rotate(float angle, Vector3^ axis) + { + return gcnew Matrix4(&sp::maths::mat4::Rotate(angle, *axis->GetHandle())); + } + + Matrix4^ Matrix4::Scale(Vector3^ scale) + { + return gcnew Matrix4(&sp::maths::mat4::Scale(*scale->GetHandle())); + } + + Matrix4^ Matrix4::Invert(Matrix4^ matrix) + { + return gcnew Matrix4(&sp::maths::mat4::Invert(*matrix->GetHandle())); + } + + System::String^ Matrix4::ToString() + { + // TODO: Unimplemented + return "Vector4::ToString(): Unimplemented"; + } + +} \ No newline at end of file diff --git a/SparkyCLI/src/maths/Matrix4.h b/SparkyCLI/src/maths/Matrix4.h new file mode 100644 index 00000000..ee55b34c --- /dev/null +++ b/SparkyCLI/src/maths/Matrix4.h @@ -0,0 +1,53 @@ +#pragma once + +#include "../SparkyCLI.h" +#include "Vector3.h" +#include "Vector4.h" + +#include + +#ifdef near +#undef near +#endif +#ifdef far +#undef far +#endif + +namespace SparkyCLI { + + ref class Vector2; + + public ref class Matrix4 : public ManagedClass + { + private: + Matrix4(sp::maths::mat4* instance); + public: + + Matrix4(); + Matrix4(float diagonal); + static Matrix4^ Identity(); + + Matrix4^ Multiply(Matrix4^ other); + static Matrix4^ operator*(Matrix4^ left, Matrix4^ right); + Matrix4^ operator*=(Matrix4^ other); + + Vector3^ Multiply(Vector3^ other); + static Vector3^ operator*(Matrix4^ left, Vector3^ right); + + Vector4^ Multiply(Vector4^ other); + static Vector4^ operator*(Matrix4^ left, Vector4^ right); + + Matrix4^ Invert(); + + static Matrix4^ Orthographic(float left, float right, float bottom, float top, float near, float far); + static Matrix4^ Perspective(float fov, float aspectRatio, float near, float far); + + static Matrix4^ Translate(Vector3^ translation); + static Matrix4^ Rotate(float angle, Vector3^ axis); + static Matrix4^ Scale(Vector3^ scale); + static Matrix4^ Invert(Matrix4^ matrix); + + System::String^ ToString() override; + }; + +} \ No newline at end of file diff --git a/SparkyCLI/src/maths/Vector2.cpp b/SparkyCLI/src/maths/Vector2.cpp new file mode 100644 index 00000000..0947d11e --- /dev/null +++ b/SparkyCLI/src/maths/Vector2.cpp @@ -0,0 +1,131 @@ +#include "Vector2.h" + +namespace SparkyCLI { + + Vector2::Vector2(sp::maths::vec2* instance) + : ManagedClass(instance) + { + } + + Vector2::Vector2() + : ManagedClass() + { + } + + Vector2::Vector2(float x, float y) + { + m_Instance = new sp::maths::vec2(x, y); + } + + Vector2::Vector2(Vector3^ vector) + { + m_Instance = new sp::maths::vec2(*vector->GetHandle()); + } + + Vector2^ Vector2::Add(Vector2^ other) + { + return gcnew Vector2(&m_Instance->Add(*other->GetHandle())); + } + + Vector2^ Vector2::Subtract(Vector2^ other) + { + return gcnew Vector2(&m_Instance->Subtract(*other->GetHandle())); + } + + Vector2^ Vector2::Multiply(Vector2^ other) + { + return gcnew Vector2(&m_Instance->Multiply(*other->GetHandle())); + } + + Vector2^ Vector2::Divide(Vector2^ other) + { + return gcnew Vector2(&m_Instance->Divide(*other->GetHandle())); + } + + SparkyCLI::Vector2^ Vector2::operator+(Vector2^ left, Vector2^ right) + { + return left->Add(right); + } + + SparkyCLI::Vector2^ Vector2::operator-(Vector2^ left, Vector2^ right) + { + return left->Subtract(right); + } + + SparkyCLI::Vector2^ Vector2::operator*(Vector2^ left, Vector2^ right) + { + return left->Multiply(right); + } + + SparkyCLI::Vector2^ Vector2::operator/(Vector2^ left, Vector2^ right) + { + return left->Divide(right); + } + + SparkyCLI::Vector2^ Vector2::operator+(Vector2^ left, float value) + { + return gcnew Vector2(left->x + value, left->y + value); + } + + SparkyCLI::Vector2^ Vector2::operator*(Vector2^ left, float value) + { + return gcnew Vector2(left->x * value, left->y * value); + } + + bool Vector2::operator==(Vector2^ other) + { + return *m_Instance == *other->GetHandle(); + } + + bool Vector2::operator!=(Vector2^ other) + { + return *m_Instance != *other->GetHandle(); + } + + Vector2^ Vector2::operator+=(Vector2^ other) + { + return Add(other); + } + + Vector2^ Vector2::operator-=(Vector2^ other) + { + return Subtract(other); + } + + Vector2^ Vector2::operator*=(Vector2^ other) + { + return Multiply(other); + } + + Vector2^ Vector2::operator/=(Vector2^ other) + { + return Divide(other); + } + + float Vector2::Magnitude() + { + return m_Instance->Magnitude(); + } + + SparkyCLI::Vector2^ Vector2::Normalise() + { + return gcnew Vector2(&m_Instance->Normalise()); + } + + float Vector2::Distance(Vector2^ other) + { + return m_Instance->Distance(*other->GetHandle()); + } + + float Vector2::Dot(Vector2^ other) + { + return m_Instance->Dot(*other->GetHandle()); + } + + System::String^ Vector2::ToString() + { + // TODO: Unimplemented + return "Vector2::ToString(): Unimplemented"; + } + +} \ No newline at end of file diff --git a/SparkyCLI/src/maths/Vector2.h b/SparkyCLI/src/maths/Vector2.h new file mode 100644 index 00000000..a9dad8b5 --- /dev/null +++ b/SparkyCLI/src/maths/Vector2.h @@ -0,0 +1,72 @@ +#pragma once + +#include "../SparkyCLI.h" +#include "Vector3.h" + +#include + +namespace SparkyCLI { + + public ref class Vector2 : public ManagedClass + { + private: + Vector2(sp::maths::vec2* instance); + public: + property float x + { + float get() + { + return m_Instance->x; + } + void set(float value) + { + m_Instance->x = value; + } + } + + property float y + { + float get() + { + return m_Instance->y; + } + void set(float value) + { + m_Instance->y = value; + } + } + + Vector2(); + Vector2(float x, float y); + Vector2(Vector3^ vector); + + Vector2^ Add(Vector2^ other); + Vector2^ Subtract(Vector2^ other); + Vector2^ Multiply(Vector2^ other); + Vector2^ Divide(Vector2^ other); + + static Vector2^ operator+(Vector2^ left, Vector2^ right); + static Vector2^ operator-(Vector2^ left, Vector2^ right); + static Vector2^ operator*(Vector2^ left, Vector2^ right); + static Vector2^ operator/(Vector2^ left, Vector2^ right); + + static Vector2^ operator+(Vector2^ left, float value); + static Vector2^ operator*(Vector2^ left, float value); + + bool operator==(Vector2^ other); + bool operator!=(Vector2^ other); + + Vector2^ operator+=(Vector2^ other); + Vector2^ operator-=(Vector2^ other); + Vector2^ operator*=(Vector2^ other); + Vector2^ operator/=(Vector2^ other); + + float Magnitude(); + Vector2^ Normalise(); + float Distance(Vector2^ other); + float Dot(Vector2^ other); + + System::String^ ToString() override; + }; + +} \ No newline at end of file diff --git a/SparkyCLI/src/maths/Vector3.cpp b/SparkyCLI/src/maths/Vector3.cpp new file mode 100644 index 00000000..ff20fe01 --- /dev/null +++ b/SparkyCLI/src/maths/Vector3.cpp @@ -0,0 +1,108 @@ +#include "Vector3.h" + +#include "Vector2.h" + +namespace SparkyCLI { + + Vector3::Vector3(sp::maths::vec3* instance) + : ManagedClass(instance) + { + } + + Vector3::Vector3() + : ManagedClass() + { + } + + Vector3::Vector3(float x, float y, float z) + { + m_Instance = new sp::maths::vec3(x, y, z); + } + + Vector3::Vector3(Vector2^ vector) + { + m_Instance = new sp::maths::vec3(*vector->GetHandle()); + } + + Vector3^ Vector3::Add(Vector3^ other) + { + return gcnew Vector3(&m_Instance->Add(*other->GetHandle())); + } + + Vector3^ Vector3::Subtract(Vector3^ other) + { + return gcnew Vector3(&m_Instance->Subtract(*other->GetHandle())); + } + + Vector3^ Vector3::Multiply(Vector3^ other) + { + return gcnew Vector3(&m_Instance->Multiply(*other->GetHandle())); + } + + Vector3^ Vector3::Divide(Vector3^ other) + { + return gcnew Vector3(&m_Instance->Divide(*other->GetHandle())); + } + + SparkyCLI::Vector3^ Vector3::operator+(Vector3^ left, Vector3^ right) + { + return left->Add(right); + } + + SparkyCLI::Vector3^ Vector3::operator-(Vector3^ left, Vector3^ right) + { + return left->Subtract(right); + } + + SparkyCLI::Vector3^ Vector3::operator*(Vector3^ left, Vector3^ right) + { + return left->Multiply(right); + } + + SparkyCLI::Vector3^ Vector3::operator/(Vector3^ left, Vector3^ right) + { + return left->Divide(right); + } + + bool Vector3::operator==(Vector3^ other) + { + return *m_Instance == *other->GetHandle(); + } + + bool Vector3::operator!=(Vector3^ other) + { + return *m_Instance != *other->GetHandle(); + } + + Vector3^ Vector3::operator+=(Vector3^ other) + { + return Add(other); + } + + Vector3^ Vector3::operator-=(Vector3^ other) + { + return Subtract(other); + } + + Vector3^ Vector3::operator*=(Vector3^ other) + { + return Multiply(other); + } + + Vector3^ Vector3::operator/=(Vector3^ other) + { + return Divide(other); + } + + float Vector3::Distance(Vector3^ other) + { + return m_Instance->Distance(*other->GetHandle()); + } + + System::String^ Vector3::ToString() + { + // TODO: Unimplemented + return "Vector3::ToString(): Unimplemented"; + } + +} \ No newline at end of file diff --git a/SparkyCLI/src/maths/Vector3.h b/SparkyCLI/src/maths/Vector3.h new file mode 100644 index 00000000..4421aa59 --- /dev/null +++ b/SparkyCLI/src/maths/Vector3.h @@ -0,0 +1,79 @@ +#pragma once + +#include "../SparkyCLI.h" + +#include + +namespace SparkyCLI { + + ref class Vector2; + + public ref class Vector3 : public ManagedClass + { + private: + Vector3(sp::maths::vec3* instance); + public: + property float x + { + float get() + { + return m_Instance->x; + } + void set(float value) + { + m_Instance->x = value; + } + } + + property float y + { + float get() + { + return m_Instance->y; + } + void set(float value) + { + m_Instance->y = value; + } + } + + property float z + { + float get() + { + return m_Instance->z; + } + void set(float value) + { + m_Instance->z = value; + } + } + + Vector3(); + Vector3(float x, float y, float z); + Vector3(Vector2^ vector); + + Vector3^ Add(Vector3^ other); + Vector3^ Subtract(Vector3^ other); + Vector3^ Multiply(Vector3^ other); + Vector3^ Divide(Vector3^ other); + + static Vector3^ operator+(Vector3^ left, Vector3^ right); + static Vector3^ operator-(Vector3^ left, Vector3^ right); + static Vector3^ operator*(Vector3^ left, Vector3^ right); + static Vector3^ operator/(Vector3^ left, Vector3^ right); + + bool operator==(Vector3^ other); + bool operator!=(Vector3^ other); + + Vector3^ operator+=(Vector3^ other); + Vector3^ operator-=(Vector3^ other); + Vector3^ operator*=(Vector3^ other); + Vector3^ operator/=(Vector3^ other); + + float Distance(Vector3^ other); + + System::String^ ToString() override; + }; + +} \ No newline at end of file diff --git a/SparkyCLI/src/maths/Vector4.cpp b/SparkyCLI/src/maths/Vector4.cpp new file mode 100644 index 00000000..1cd84009 --- /dev/null +++ b/SparkyCLI/src/maths/Vector4.cpp @@ -0,0 +1,98 @@ +#include "Vector4.h" + +#include "Vector2.h" + +namespace SparkyCLI { + + Vector4::Vector4(sp::maths::vec4* instance) + : ManagedClass(instance) + { + } + + Vector4::Vector4() + : ManagedClass() + { + } + + Vector4::Vector4(float x, float y, float z, float w) + { + m_Instance = new sp::maths::vec4(x, y, z, w); + } + + Vector4^ Vector4::Add(Vector4^ other) + { + return gcnew Vector4(&m_Instance->Add(*other->GetHandle())); + } + + Vector4^ Vector4::Subtract(Vector4^ other) + { + return gcnew Vector4(&m_Instance->Subtract(*other->GetHandle())); + } + + Vector4^ Vector4::Multiply(Vector4^ other) + { + return gcnew Vector4(&m_Instance->Multiply(*other->GetHandle())); + } + + Vector4^ Vector4::Divide(Vector4^ other) + { + return gcnew Vector4(&m_Instance->Divide(*other->GetHandle())); + } + + SparkyCLI::Vector4^ Vector4::operator+(Vector4^ left, Vector4^ right) + { + return left->Add(right); + } + + SparkyCLI::Vector4^ Vector4::operator-(Vector4^ left, Vector4^ right) + { + return left->Subtract(right); + } + + SparkyCLI::Vector4^ Vector4::operator*(Vector4^ left, Vector4^ right) + { + return left->Multiply(right); + } + + SparkyCLI::Vector4^ Vector4::operator/(Vector4^ left, Vector4^ right) + { + return left->Divide(right); + } + + bool Vector4::operator==(Vector4^ other) + { + return *m_Instance == *other->GetHandle(); + } + + bool Vector4::operator!=(Vector4^ other) + { + return *m_Instance != *other->GetHandle(); + } + + Vector4^ Vector4::operator+=(Vector4^ other) + { + return Add(other); + } + + Vector4^ Vector4::operator-=(Vector4^ other) + { + return Subtract(other); + } + + Vector4^ Vector4::operator*=(Vector4^ other) + { + return Multiply(other); + } + + Vector4^ Vector4::operator/=(Vector4^ other) + { + return Divide(other); + } + + System::String^ Vector4::ToString() + { + // TODO: Unimplemented + return "Vector4::ToString(): Unimplemented"; + } + +} \ No newline at end of file diff --git a/SparkyCLI/src/maths/Vector4.h b/SparkyCLI/src/maths/Vector4.h new file mode 100644 index 00000000..876da922 --- /dev/null +++ b/SparkyCLI/src/maths/Vector4.h @@ -0,0 +1,88 @@ +#pragma once + +#include "../SparkyCLI.h" + +#include "sp/maths/vec4.h" + +namespace SparkyCLI { + + ref class Vector2; + + public ref class Vector4 : public ManagedClass + { + private: + Vector4(sp::maths::vec4* instance); + public: + property float x + { + float get() + { + return m_Instance->x; + } + void set(float value) + { + m_Instance->x = value; + } + } + + property float y + { + float get() + { + return m_Instance->y; + } + void set(float value) + { + m_Instance->y = value; + } + } + + property float z + { + float get() + { + return m_Instance->z; + } + void set(float value) + { + m_Instance->z = value; + } + } + + property float w + { + float get() + { + return m_Instance->w; + } + void set(float value) + { + m_Instance->w = value; + } + } + + Vector4(); + Vector4(float x, float y, float z, float w); + + Vector4^ Add(Vector4^ other); + Vector4^ Subtract(Vector4^ other); + Vector4^ Multiply(Vector4^ other); + Vector4^ Divide(Vector4^ other); + + static Vector4^ operator+(Vector4^ left, Vector4^ right); + static Vector4^ operator-(Vector4^ left, Vector4^ right); + static Vector4^ operator*(Vector4^ left, Vector4^ right); + static Vector4^ operator/(Vector4^ left, Vector4^ right); + + bool operator==(Vector4^ other); + bool operator!=(Vector4^ other); + + Vector4^ operator+=(Vector4^ other); + Vector4^ operator-=(Vector4^ other); + Vector4^ operator*=(Vector4^ other); + Vector4^ operator/=(Vector4^ other); + + System::String^ ToString() override; + }; + +} \ No newline at end of file diff --git a/SparkyCLI/src/platform/windows/Win32Application.cpp b/SparkyCLI/src/platform/windows/Win32Application.cpp new file mode 100644 index 00000000..e6f19a1c --- /dev/null +++ b/SparkyCLI/src/platform/windows/Win32Application.cpp @@ -0,0 +1,60 @@ +#include "../../app/Application.h" + +namespace SparkyCLI { + + Application::Application(System::String^ name, uint width, uint height) + { + m_Instance = new sp::Application(string_to_char_array(name), {width, height}); + } + + void Application::Init() + { + m_Instance->Init(); + } + + void Application::Start() + { + m_Instance->Start(); + } + + void Application::Suspend() + { + m_Instance->Suspend(); + } + + void Application::Resume() + { + m_Instance->Resume(); + } + + void Application::Stop() + { + m_Instance->Stop(); + } + + void Application::Tick() + { + m_Instance->OnTick(); + } + + void Application::Update() + { + //m_Instance->OnUpdate(...); + } + + void Application::Render() + { + m_Instance->OnRender(); + } + + const uint Application::GetFPS() + { + return m_Instance->GetFPS(); + } + + const uint Application::GetUPS() + { + return m_Instance->GetUPS(); + } + +} diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk.h new file mode 100644 index 00000000..7626ddb3 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk.h @@ -0,0 +1,273 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxsdk.h +#ifndef _FBXSDK_H_ +#define _FBXSDK_H_ + +/** + * \mainpage FBX SDK Reference + *

+ * \section welcome Welcome to the FBX SDK Reference + * The FBX SDK Reference contains reference information on every header file, + * namespace, class, method, enum, typedef, variable, and other C++ elements + * that comprise the FBX software development kit (SDK). + *

+ * The FBX SDK Reference is organized into the following sections: + *

  • Class List: an alphabetical list of FBX SDK classes + *
  • Class Hierarchy: a textual representation of the FBX SDK class structure + *
  • Graphical Class Hierarchy: a graphical representation of the FBX SDK class structure + *
  • File List: an alphabetical list of all documented header files
+ *

+ * \section otherdocumentation Other Documentation + * Apart from this reference guide, an FBX SDK Programming Guide and many FBX + * SDK examples are also provided. + *

+ * \section aboutFBXSDK About the FBX SDK + * The FBX SDK is a C++ software development kit (SDK) that lets you import + * and export 3D scenes using the Autodesk FBX file format. The FBX SDK + * reads FBX files created with FiLMBOX version 2.5 and later and writes FBX + * files compatible with MotionBuilder version 6.0 and up. + */ + +#pragma pack(push, 8) //FBXSDK is compiled with default value (8) + +#include + +#ifndef FBXSDK_NAMESPACE_USING + #define FBXSDK_NAMESPACE_USING 1 +#endif + +//--------------------------------------------------------------------------------------- +//Core Base Includes +#include +#include +#include +#include +#include +#include +#include +#ifndef FBXSDK_ENV_WINSTORE + #include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------------------------- +//Core Math Includes +#include +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------------------------- +//Core Sync Includes +#ifndef FBXSDK_ENV_WINSTORE + #include + #include + #include + #include +#endif /* !FBXSDK_ENV_WINSTORE */ + +//--------------------------------------------------------------------------------------- +//Core Includes +#include +#include +#include +#ifndef FBXSDK_ENV_WINSTORE + #include + #include +#endif /* !FBXSDK_ENV_WINSTORE */ +#include +#include +#include +#ifndef FBXSDK_ENV_WINSTORE + #include + #include +#endif /* !FBXSDK_ENV_WINSTORE */ +#include +#include +#include +#include +#include +#include +#include +#ifndef FBXSDK_ENV_WINSTORE + #include + #include +#endif /* !FBXSDK_ENV_WINSTORE */ +#include + +//--------------------------------------------------------------------------------------- +//File I/O Includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------------------------- +//Scene Includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------------------------- +//Scene Animation Includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------------------------- +//Scene Constraint Includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------------------------- +//Scene Geometry Includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------------------------- +//Scene Shading Includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------------------------- +//Utilities Includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------------------------- +#if defined(FBXSDK_NAMESPACE) && (FBXSDK_NAMESPACE_USING == 1) + using namespace FBXSDK_NAMESPACE; +#endif + +#pragma pack(pop) + +#endif /* _FBXSDK_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/arch/fbxalloc.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/arch/fbxalloc.h new file mode 100644 index 00000000..ee3ff28a --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/arch/fbxalloc.h @@ -0,0 +1,419 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +/** \file fbxalloc.h + * Allocation functions definition. + * + * It is possible to override memory allocation functions throughout the FBX SDK by + * providing system memory allocation functions using the handler set functions below. + * The Microsoft Windows implementation in debug mode allows to specify where the + * allocations happen by providing the standard block type, file name and line number. + */ +#ifndef _FBXSDK_CORE_ARCH_ALLOC_H_ +#define _FBXSDK_CORE_ARCH_ALLOC_H_ + +#include + +#if defined(_DEBUG) && defined(FBXSDK_ENV_WIN) + #include +#endif + +#if defined(FBXSDK_ENV_MAC) + #include +#else + #include +#endif + +#include + +#if defined(FBXSDK_CPU_32) && !defined(FBXSDK_ENV_IOS) + #define FBXSDK_MEMORY_ALIGNMENT ((size_t)8U) +#else + #define FBXSDK_MEMORY_ALIGNMENT ((size_t)16U) +#endif + +#define FBXSDK_MEMORY_COPY(dst, src, size) {memcpy(dst,src,size);} + +typedef void* (*FbxMallocProc)(size_t); //! Function pointer signature used to replace "malloc" +typedef void* (*FbxCallocProc)(size_t, size_t); //! Function pointer signature used to replace "calloc" +typedef void* (*FbxReallocProc)(void*, size_t); //! Function pointer signature used to replace "realloc" +typedef void (*FbxFreeProc)(void*); //! Function pointer signature used to replace "free" + +/** Set the global memory allocation function used internally by the FBX SDK. +* \param pHandler Function pointer that implements the necessary procedure to allocate memory in the system. */ +FBXSDK_DLL void FbxSetMallocHandler(FbxMallocProc pHandler); + +/** Set the global zero'd memory allocation function used internally by the FBX SDK. +* \param pHandler Function pointer that implements the necessary procedure to allocate zero'd memory in the system. */ +FBXSDK_DLL void FbxSetCallocHandler(FbxCallocProc pHandler); + +/** Set the global memory re-allocation function used internally by the FBX SDK. +* \param pHandler Function pointer that implements the necessary procedure to re-allocate memory in the system. */ +FBXSDK_DLL void FbxSetReallocHandler(FbxReallocProc pHandler); + +/** Set the global memory freeing function used internally by the FBX SDK. +* \param pHandler Function pointer that implements the necessary procedure to free memory in the system. */ +FBXSDK_DLL void FbxSetFreeHandler(FbxFreeProc pHandler); + +/** Get the global memory allocation function used internally by the FBX SDK. +* \return pHandler Function pointer on FBX's internal malloc */ +FBXSDK_DLL FbxMallocProc FbxGetMallocHandler(); + +/** Get the global zero'd memory allocation function used internally by the FBX SDK. +* \return pHandler Function pointer on FBX's internal calloc */ +FBXSDK_DLL FbxCallocProc FbxGetCallocHandler(); + +/** Get the global memory re-allocation function used internally by the FBX SDK. +* \return pHandler Function pointer on FBX's internal realloc */ +FBXSDK_DLL FbxReallocProc FbxGetReallocHandler(); + +/** Get the global memory freeing function used internally by the FBX SDK. +* \return pHandler Function pointer on FBX's internal free */ +FBXSDK_DLL FbxFreeProc FbxGetFreeHandler(); + +/** Get the default global memory allocation function used internally by the FBX SDK. +* \return pHandler Function pointer on FBX's internal malloc */ +FBXSDK_DLL FbxMallocProc FbxGetDefaultMallocHandler(); + +/** Get the default global zero'd memory allocation function used internally by the FBX SDK. +* \return pHandler Function pointer on FBX's internal calloc */ +FBXSDK_DLL FbxCallocProc FbxGetDefaultCallocHandler(); + +/** Get the default global memory re-allocation function used internally by the FBX SDK. +* \return pHandler Function pointer on FBX's internal realloc */ +FBXSDK_DLL FbxReallocProc FbxGetDefaultReallocHandler(); + +/** Get the default global memory freeing function used internally by the FBX SDK. +* \return pHandler Function pointer on FBX's internal free */ +FBXSDK_DLL FbxFreeProc FbxGetDefaultFreeHandler(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FBXSDK_DLL void* FbxMalloc(size_t pSize); + FBXSDK_DLL void* FbxCalloc(size_t pCount, size_t pSize); + FBXSDK_DLL void* FbxRealloc(void* pData, size_t pSize); + FBXSDK_DLL void FbxFree(void* pData); + FBXSDK_DLL char* FbxStrDup(const char* pString); + FBXSDK_DLL wchar_t* FbxStrDupWC(const wchar_t* pString); + + //These versions of allocators use the default system mallocs, and on Windows we also pass the debugging parameters. + //If you define FBXSDK_ALLOC_DEBUG in your project, the FBX SDK will use these debug versions everywhere. + FBXSDK_DLL void* FbxMallocDebug(size_t pSize, int pBlock, const char* pFile, int pLine); + FBXSDK_DLL void* FbxCallocDebug(size_t pCount, size_t pSize, int pBlock, const char* pFile, int pLine); + FBXSDK_DLL void* FbxReallocDebug(void* pData, size_t pSize, int pBlock, const char* pFile, int pLine); + FBXSDK_DLL void FbxFreeDebug(void* pData, int pBlock); + + //When FBXSDK_ALLOC_DEBUG is defined, redirect allocation calls to the debug version. + #if defined(FBXSDK_ALLOC_DEBUG) + #define FbxMalloc(s) FbxMallocDebug(s, _NORMAL_BLOCK, __FILE__, __LINE__) + #define FbxCalloc(c, s) FbxCallocDebug(c, s, _NORMAL_BLOCK, __FILE__, __LINE__) + #define FbxRealloc(p, s) FbxReallocDebug(p, s, _NORMAL_BLOCK, __FILE__, __LINE__) + #define FbxFree(p) FbxFreeDebug(p, _NORMAL_BLOCK) + #endif +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ + +//! Deletion policy for pointer template classes that uses the delete operator. +template class FbxDeletionPolicyDefault +{ +public: + //! Destruction policy implementation. + static inline void DeleteIt(Type** pPtr) + { + if( *pPtr ) + { + delete *pPtr; + *pPtr = NULL; + } + } +}; + +//! Deletion policy for pointer template classes that uses the FbxDelete() function. +template void FbxDelete(T* p); +template void FbxDelete(const T* p); +template class FbxDeletionPolicyDelete +{ +public: + //! Destruction policy implementation. + static inline void DeleteIt(Type** mPtr) + { + if( *mPtr ) + { + FbxDelete(*mPtr); + *mPtr = NULL; + } + } +}; + +//! Deletion policy for pointer template classes that uses the FbxFree() function. +template class FbxDeletionPolicyFree +{ +public: + //! Destruction policy implementation. + static inline void DeleteIt(Type** pPtr) + { + if( *pPtr ) + { + FbxFree(*pPtr); + *pPtr = NULL; + } + } +}; + +//! Deletion policy for pointer template classes that uses the Destroy() function. +template class FbxDeletionPolicyObject +{ +public: + //! Destruction policy implementation. + static inline void DeleteIt(Type** pPtr) + { + if( *pPtr ) + { + (*pPtr)->Destroy(); + *pPtr = NULL; + } + } +}; + +/** FbxAutoPtr mimics the \c auto_ptr class template implementation available in the C++ Standard Library. The \c auto_ptr template +* class describes an object that stores a pointer to a single allocated object of type Type* that ensures that the object to which +* it points gets destroyed automatically when control leaves a scope. */ +template > class FbxAutoPtr +{ +public: + //! Construct from a pointer. + explicit FbxAutoPtr(Type* pPtr=0) : mPtr(pPtr){} + + //! Destructor. + ~FbxAutoPtr() { Policy::DeleteIt(&mPtr); } + + //! Retrieve the pointer it holds. + inline Type* Get() const { return mPtr; } + + //! Member access operator. + inline Type* operator->() const { return mPtr; } + + //! Convert to a Type pointer. + inline operator Type* () const { return mPtr; } + + //! Dereference operator. + inline Type& operator*() const { return *mPtr; } + + //! Logical not operator. + inline bool operator!() const { return mPtr == 0; } + + //! Convert to boolean value. + inline operator bool () const { return mPtr != 0; } + + //! Reset the scoped pointer by swapping with another pointer. + inline void Reset(Type* pPtr=0) + { + FBX_ASSERT(pPtr == 0 || pPtr != mPtr); //Catch self-reset errors + FbxAutoPtr(pPtr).Swap(*this); + } + + //! Swap with another pointer. + inline void Swap(FbxAutoPtr& pOther) + { + Type* TmpPtr = pOther.mPtr; + pOther.mPtr = mPtr; + mPtr = TmpPtr; + } + + //! Release the pointer, so that it won't perform deletion in its destruction. + inline Type* Release() + { + Type* TmpPtr = mPtr; + mPtr = NULL; + return TmpPtr; + } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + FbxAutoPtr(const FbxAutoPtr&); + FbxAutoPtr& operator=(const FbxAutoPtr&); + + Type* mPtr; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +//! Scoped pointer for FbxMalloc allocations, which call FbxFree() to deallocate. +template class FbxAutoFreePtr : public FbxAutoPtr > +{ +public: + //! Construct from a pointer. + explicit FbxAutoFreePtr(Type* pPtr=0) : FbxAutoPtr >(pPtr){} +}; + +//! Scoped pointer for FbxNew allocations, which call FbxDelete() to deallocate. +template class FbxAutoDeletePtr : public FbxAutoPtr > +{ +public: + //! Construct from a pointer. + explicit FbxAutoDeletePtr(Type* pPtr=0) : FbxAutoPtr >(pPtr){} +}; + +//! Scoped pointer for FbxObject derived classes, which call Destroy() to deallocate. +template class FbxAutoDestroyPtr : public FbxAutoPtr > +{ +public: + //! Construct from a pointer. + explicit FbxAutoDestroyPtr(Type* pPtr=0) : FbxAutoPtr >(pPtr){} +}; + + +/** FbxSharedPtr class describes an object that stores a pointer to a single allocated object of type +* Type* that ensures that the object to which it points gets destroyed automatically when the control +* leaves a scope and the reference count is 0. */ +class RefCount +{ +public: + RefCount() { Init(); }; + ~RefCount() { Init(); }; + + void Init() { count = 0; } + void IncRef() { count++; } + int DecRef() { count--; if (count < 0) count = 0; return count; } + +private: + int count; +}; + +template > class FbxSharedPtr +{ +public: + // Default constructor. + FbxSharedPtr() : + mPtr(0), + mRef(0) + {} + + //! Construct from a pointer. + explicit FbxSharedPtr(Type* pPtr) : + mPtr(pPtr), + mRef(0) + { + if (pPtr != 0) + { + mRef = (RefCount*)FbxMalloc(sizeof(RefCount)); + mRef->Init(); + mRef->IncRef(); + } + } + + //! Copy constructor + FbxSharedPtr(const FbxSharedPtr& pSPtr) : + mPtr(pSPtr.mPtr), + mRef(pSPtr.mRef) + { + if (pSPtr.mPtr != 0 && mRef != 0) + mRef->IncRef(); + } + + // Assignment operator + FbxSharedPtr& operator=(const FbxSharedPtr& pSPtr) + { + if (this != &pSPtr) // avoid self assignment + { + Reset(); + + if (pSPtr.mPtr) + { + mPtr = pSPtr.mPtr; + mRef = pSPtr.mRef; + FBX_ASSERT(mRef != NULL); + mRef->IncRef(); + } + } + return *this; + } + + //! Destructor. + ~FbxSharedPtr() { Destroy(); } + + void Destroy() { Reset(); } + + //! Retrieve the pointer it holds. + inline Type* Get() const { return mPtr; } + + //! Member access operator. + inline Type* operator->() const { return mPtr; } + + //! Convert to a Type pointer. + inline operator Type* () const { return mPtr; } + + //! Dereference operator. + inline Type& operator*() const { return *mPtr; } + + //! Logical not operator. + inline bool operator!() const { return mPtr == 0; } + + //! Convert to boolean value. + inline operator bool () const { return mPtr != 0; } + + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + void Reset() + { + if (mRef) + { + FBX_ASSERT(mPtr != 0); + if (mRef->DecRef() == 0) + { + Policy::DeleteIt(&mPtr); + FbxFree(mRef); + mRef = NULL; + } + } + } + + Type* mPtr; + RefCount* mRef; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +//! Scoped pointer for FbxMalloc allocations, which call FbxFree() to deallocate. +template class FbxSharedFreePtr : public FbxSharedPtr > +{ +public: + //! Construct from a pointer. + explicit FbxSharedFreePtr(Type* pPtr=0) : FbxSharedPtr >(pPtr){} +}; + +//! Scoped pointer for FbxNew allocations, which call FbxDelete() to deallocate. +template class FbxSharedDeletePtr : public FbxSharedPtr > +{ +public: + //! Construct from a pointer. + explicit FbxSharedDeletePtr(Type* pPtr=0) : FbxSharedPtr >(pPtr){} +}; + +//! Scoped pointer for FbxObject derived classes, which call Destroy() to deallocate. +template class FbxSharedDestroyPtr : public FbxSharedPtr > +{ +public: + //! Construct from a pointer. + explicit FbxSharedDestroyPtr(Type* pPtr=0) : FbxSharedPtr >(pPtr){} +}; + + + +#include + +#endif /* _FBXSDK_CORE_ARCH_ALLOC_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/arch/fbxarch.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/arch/fbxarch.h new file mode 100644 index 00000000..b5246e17 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/arch/fbxarch.h @@ -0,0 +1,238 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +/** \file fbxarch.h + * Architecture definition. + * + * List of available preprocessor defines that can appear on various systems: + * + * Operating System Environment: + * FBXSDK_ENV_WIN (Windows) + * FBXSDK_ENV_WINSTORE (Windows Store App) + * FBXSDK_ENV_MAC (MacOSX) + * FBXSDK_ENV_IOS (iOS) + * FBXSDK_ENV_LINUX (Linux) + * + * Architecture: + * FBXSDK_ARCH_IX86 (Intel x86) + * FBXSDK_ARCH_AMD64 (AMD64) + * FBXSDK_ARCH_ARM (Advanced RISC Machine) + * + * Processor: + * FBXSDK_CPU_32 (32bit processor) + * FBXSDK_CPU_64 (64bit processor) + * + * Compiler: + * FBXSDK_COMPILER_MSC (Microsoft Compiler) + * FBXSDK_COMPILER_GNU (GNU Compiler) + * FBXSDK_COMPILER_INTEL (Intel Compiler) + * FBXSDK_COMPILER_CLANG (Clang Compiler) + * + * These definitions are based on the information found here: + * http://predef.sourceforge.net/index.php + * + */ +#ifndef _FBXSDK_CORE_ARCH_ARCH_H_ +#define _FBXSDK_CORE_ARCH_ARCH_H_ + +#if defined(_WIN32) || defined(_WIN64) //Microsoft Windows ------------------------------ + + #define FBXSDK_ENV_WIN 1 + + #if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP) + #define FBXSDK_ENV_WINSTORE 1 + #endif + + #if defined(_M_X64) + #define FBXSDK_ARCH_AMD64 1 + #define FBXSDK_CPU_64 1 + #elif defined(_M_IX86) + #define FBXSDK_ARCH_IX86 1 + #define FBXSDK_CPU_32 1 + #elif defined(_M_ARM) + #define FBXSDK_ARCH_ARM 1 + #define FBXSDK_CPU_32 1 + #else + #error Unsupported architecture! + #endif + + #if defined(_MSC_VER) + #define FBXSDK_COMPILER_MSC 1 + #elif defined(__GNUC__) + #define FBXSDK_COMPILER_GNU 1 + #elif defined(__ICL) + #define FBXSDK_COMPILER_INTEL 1 + #else + #error Unsupported compiler! + #endif + +#elif defined(__APPLE__) || defined(__MACH__) //Apple MacOS/X --------------------------- + + #include "TargetConditionals.h" + + #define FBXSDK_ENV_MAC 1 + + #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR + #define FBXSDK_ENV_IOS 1 + #endif + + #if defined(__i386__) + #define FBXSDK_ARCH_IX86 1 + #define FBXSDK_CPU_32 1 + #elif defined(__x86_64__) || defined(__x86_64) + #define FBXSDK_ARCH_AMD64 1 + #define FBXSDK_CPU_64 1 + #elif defined(__arm__) + #define FBXSDK_ARCH_ARM 1 + #define FBXSDK_CPU_32 1 + #elif defined(__arm64__) + #define FBXSDK_ARCH_ARM 1 + #define FBXSDK_CPU_64 1 + #else + #error Unsupported architecture! + #endif + + #if defined(__GNUC__) + #define FBXSDK_COMPILER_GNU 1 + #endif + + #if defined(__clang__) + #define FBXSDK_COMPILER_CLANG 1 + #endif + + #if !defined(FBXSDK_COMPILER_GNU) && !defined(FBXSDK_COMPILER_CLANG) + #error Unsupported compiler! + #endif + +#elif defined(__linux__) || defined(__CYGWIN__) || defined(EMSCRIPTEN) || defined(ANDROID) //Linux --------------------------------- + + #define FBXSDK_ENV_LINUX 1 + + #if defined(EMSCRIPTEN) + #define FBXSDK_ENV_EMSCRIPTEN 1 + #endif + + #if defined(ANDROID) + #define FBXSDK_ENV_ANDROID 1 + #endif + + #if defined(__i386__) + #define FBXSDK_ARCH_IX86 1 + #define FBXSDK_CPU_32 1 + #elif defined(__x86_64__) || defined(__x86_64) + #define FBXSDK_ARCH_AMD64 1 + #define FBXSDK_CPU_64 1 + #elif defined(__arm__) + #define FBXSDK_ARCH_ARM 1 + #define FBXSDK_CPU_32 1 + #elif defined(EMSCRIPTEN) + #define FBXSDK_ARCH_AMD64 1 + #define FBXSDK_CPU_64 1 + #else + #error Unsupported architecture! + #endif + + #if defined(__GNUC__) + #define FBXSDK_COMPILER_GNU 1 + #elif defined(EMSCRIPTEN) + #define FBXSDK_COMPILER_EMSCRIPTEN 1 + #else + #error Unsupported compiler! + #endif + #else + #error Unsupported platform! +#endif + +//--------------------------------------------------------------------------------------- +//Compiler Specifics +#if defined(FBXSDK_SHARED) + #if defined(FBXSDK_COMPILER_MSC) || defined(FBXSDK_COMPILER_INTEL) + #define FBXSDK_DLLIMPORT __declspec(dllimport) + #define FBXSDK_DLLEXPORT __declspec(dllexport) + #elif defined(FBXSDK_COMPILER_GNU) && (__GNUC__ >= 4) + #define FBXSDK_DLLIMPORT __attribute__((visibility("default"))) + #define FBXSDK_DLLEXPORT __attribute__((visibility("default"))) + #else + #define FBXSDK_DLLIMPORT + #define FBXSDK_DLLEXPORT + #endif +#else + #define FBXSDK_DLLIMPORT + #define FBXSDK_DLLEXPORT +#endif + +#ifndef FBXSDK_DLL + #define FBXSDK_DLL FBXSDK_DLLIMPORT +#endif + +#if defined(FBXSDK_COMPILER_MSC) + #pragma warning(disable : 4251) //'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2' + #if _MSC_VER >= 1300 // 7.1 + #define FBX_DEPRECATED __declspec(deprecated) + #else + #define FBX_DEPRECATED + #endif +#elif defined(FBXSDK_COMPILER_GNU) || defined(FBXSDK_COMPILER_EMSCRIPTEN) + #define FBX_DEPRECATED __attribute__((deprecated)) +#elif defined(FBXSDK_COMPILER_INTEL) + #if __INTEL_COMPILER >= 810 + #define FBX_DEPRECATED __declspec(deprecated) + #else + #define FBX_DEPRECATED + #endif +#else + #error Unsupported compiler! +#endif + +#ifdef FBXSDK_COMPILER_CLANG + #define FBX_UNUSED(p) _Pragma(FBX_STRINGIFY(unused(p))) +#else + #define FBX_UNUSED(p) (void)(p) +#endif + +//--------------------------------------------------------------------------------------- +//Platform Standardization +#ifndef NULL + #if defined(__GNUG__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)) + #define NULL (__null) + #else + #if defined(__cplusplus) + #define NULL 0 + #else + #define NULL ((void*)0) + #endif + #endif +#endif + +#if !defined(_MAX_PATH) + #define _MAX_PATH 260 +#endif + +#if defined(FBXSDK_ENV_WIN) + #define snprintf _snprintf //for stdio.h platform compatibility +#endif + +#if !defined(FBXSDK_COMPILER_MSC) + #ifndef strcmpi + #define strcmpi strcasecmp + #endif + #ifndef stricmp + #define stricmp strcasecmp + #endif + #ifndef strncmpi + #define strncmpi strncasecmp + #endif + #ifndef strnicmp + #define strnicmp strncasecmp + #endif +#endif + +#endif /* _FBXSDK_CORE_ARCH_ARCH_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/arch/fbxdebug.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/arch/fbxdebug.h new file mode 100644 index 00000000..9e348b7d --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/arch/fbxdebug.h @@ -0,0 +1,93 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +/** \file fbxdebug.h + * Debugging macros and functions. + * + * All macros and functions are removed in release builds. To enable asserts, a debug build is required as well + * as the environment variable "FBXSDK_ASSERT" set to 1 is also required. By default, assertions will pop-up + * a window. It is possible to disable the pop-up on the Windows platform by calling the following code: + * \code + * _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_DEBUG); + * \endcode + */ +#ifndef _FBXSDK_CORE_ARCH_DEBUG_H_ +#define _FBXSDK_CORE_ARCH_DEBUG_H_ + +#include + +#include + +/** If this environment variable is set to 1, the FBX SDK will assert in debug builds */ +#define FBXSDK_ASSERT_ENVSTR "FBXSDK_ASSERT" + +/** The assertion procedure signature. If a different assertion procedure must be provided, it should have this signature. +* \param pFileName The file name where the assertion occurred. +* \param pFunctionName The function name where the assertion occurred. +* \param pLineNumber The line number in the file where the assertion occurred. +* \param pMessage The message to display when the assertion occurs. */ +typedef void (*FbxAssertProc)(const char* pFileName, const char* pFunctionName, const unsigned int pLineNumber, const char* pMessage); + +/** Change the procedure used when assertion occurs. +* \param pAssertProc The procedure to be called when assertions occurs. */ +FBXSDK_DLL void FbxAssertSetProc(FbxAssertProc pAssertProc); + +//! Change the procedure back to the default one. +FBXSDK_DLL void FbxAssertSetDefaultProc(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + +FBXSDK_DLL void _FbxAssert(const char* pFileName, const char* pFunctionName, const unsigned int pLineNumber, bool pFormat, const char* pMessage, ...); +FBXSDK_DLL void _FbxTrace(const char* pMessage, ...); + +#ifdef _DEBUG + template struct FbxStaticAssertType; + template<> struct FbxStaticAssertType {enum{value=1};}; + template<> struct FbxStaticAssertType {enum{value=-1};}; + #define FBX_ASSERT(Condition) {if(!(Condition)){_FbxAssert(__FILE__,__FUNCTION__,__LINE__,false,#Condition);}} + #define FBX_ASSERT_MSG(Condition, Message, ...) {if(!(Condition)){_FbxAssert(__FILE__,__FUNCTION__,__LINE__,true,Message,##__VA_ARGS__);}} + #define FBX_ASSERT_NOW(Message, ...) _FbxAssert(__FILE__,__FUNCTION__,__LINE__,true,Message,##__VA_ARGS__); + #define FBX_ASSERT_RETURN(Condition) {if(!(Condition)){FBX_ASSERT_NOW(#Condition); return;}} + #define FBX_ASSERT_RETURN_VALUE(Condition, Value) {if(!(Condition)){FBX_ASSERT_NOW(#Condition); return Value;}} + #define FBX_ASSERT_STATIC(Condition) typedef char FbxBuildBreakIfFalse[FbxStaticAssertType<(bool)(Condition)>::value]; + #define FBX_TRACE(Message, ...) {_FbxTrace(Message,##__VA_ARGS__);} +#else + #define FBX_ASSERT(Condition) ((void)0) + #define FBX_ASSERT_MSG(Condition, Message, ...) ((void)0) + #define FBX_ASSERT_NOW(Message, ...) ((void)0) + #define FBX_ASSERT_RETURN(Condition) if(!(Condition)){return;} + #define FBX_ASSERT_RETURN_VALUE(Condition, Value) if(!(Condition)){return Value;} + #define FBX_ASSERT_STATIC(Condition) + #define FBX_TRACE(Message, ...) ((void)0) +#endif + +template struct FbxIncompatibleWithArray{ enum {value = 0}; }; + +#define FBXSDK_INCOMPATIBLE_WITH_ARRAY_TEMPLATE(T)\ + struct FbxIncompatibleWithArray< T >{\ + union {\ + T t();\ + } catcherr;\ + enum {value = 1};} + +#define FBXSDK_INCOMPATIBLE_WITH_ARRAY(T)\ + template<> FBXSDK_INCOMPATIBLE_WITH_ARRAY_TEMPLATE(T) + +#define FBXSDK_IS_INCOMPATIBLE_WITH_ARRAY(T) ((bool) FbxIncompatibleWithArray::value) + +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ + +#include + +#endif /* _FBXSDK_CORE_ARCH_DEBUG_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/arch/fbxnew.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/arch/fbxnew.h new file mode 100644 index 00000000..22a16183 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/arch/fbxnew.h @@ -0,0 +1,510 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +/** \file fbxnew.h + * New operator override templates. + * + * Instead of overloading the operator new in the FBX SDK, we provide a set of templates + * that are used internally to create objects. This mechanic allows the FBX SDK to call + * a different memory allocator. + * \see FbxSetMallocHandler FbxSetCallocHandler FbxSetReallocHandler FbxSetFreeHandler FbxSetMSizeHandler + */ +#ifndef _FBXSDK_CORE_ARCH_NEW_H_ +#define _FBXSDK_CORE_ARCH_NEW_H_ + +#include + +#include + +#if defined(FBXSDK_COMPILER_MSC) + #pragma warning(push) + #pragma warning(disable : 4345) //warning C4345: behavior change: an object of POD type constructed with an initializer of the form () will be default-initialized +#endif + +#include + +//Type traits for primitive types +template struct FbxSimpleType { enum {value = 0}; }; +template struct FbxSimpleType { enum {value = 1}; }; +template struct FbxSimpleType { enum {value = FbxSimpleType::value}; }; +template struct FbxSimpleType { enum {value = FbxSimpleType::value}; }; + +#define FBXSDK_DEFINE_SIMPLE_TYPE(T) template<> struct FbxSimpleType{ union {T t;} catcherr; enum {value = 1};} + +FBXSDK_DEFINE_SIMPLE_TYPE(bool); +FBXSDK_DEFINE_SIMPLE_TYPE(char); +FBXSDK_DEFINE_SIMPLE_TYPE(unsigned char); +FBXSDK_DEFINE_SIMPLE_TYPE(short); +FBXSDK_DEFINE_SIMPLE_TYPE(unsigned short); +FBXSDK_DEFINE_SIMPLE_TYPE(int); +FBXSDK_DEFINE_SIMPLE_TYPE(unsigned int); +FBXSDK_DEFINE_SIMPLE_TYPE(long); +FBXSDK_DEFINE_SIMPLE_TYPE(unsigned long); +FBXSDK_DEFINE_SIMPLE_TYPE(float); +FBXSDK_DEFINE_SIMPLE_TYPE(double); +FBXSDK_DEFINE_SIMPLE_TYPE(long double); +FBXSDK_DEFINE_SIMPLE_TYPE(long long); +FBXSDK_DEFINE_SIMPLE_TYPE(unsigned long long); + +#define FBXSDK_IS_SIMPLE_TYPE(T) ((bool)FbxSimpleType::value) + +template T* FbxNew() +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(); +} + +template T* FbxNew(T1& p1) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1); +} + +template T* FbxNew(const T1& p1) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1); +} + +template T* FbxNew(T1& p1, T2& p2) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2); +} + +template T* FbxNew(T1& p1, const T2& p2) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2); +} + +template T* FbxNew(const T1& p1, T2& p2) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2); +} + +template T* FbxNew(const T1& p1, const T2& p2) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2); +} + +template T* FbxNew(T1& p1, T2& p2, T3& p3) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3); +} + +template T* FbxNew(T1& p1, T2& p2, const T3& p3) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3); +} + +template T* FbxNew(T1& p1, const T2& p2, T3& p3) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3); +} + +template T* FbxNew(T1& p1, const T2& p2, const T3& p3) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3); +} + +template T* FbxNew(const T1& p1, T2& p2, T3& p3) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3); +} + +template T* FbxNew(const T1& p1, T2& p2, const T3& p3) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3); +} + +template T* FbxNew(const T1& p1, const T2& p2, T3& p3) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3); +} + +template T* FbxNew(const T1& p1, const T2& p2, const T3& p3) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3); +} + +template T* FbxNew(T1& p1, T2& p2, T3& p3, T4& p4) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3, p4); +} + +template T* FbxNew(T1& p1, T2& p2, T3& p3, const T4& p4) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3, p4); +} + +template T* FbxNew(T1& p1, T2& p2, const T3& p3, T4& p4) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3, p4); +} + +template T* FbxNew(T1& p1, T2& p2, const T3& p3, const T4& p4) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3, p4); +} + +template T* FbxNew(T1& p1, const T2& p2, T3& p3, T4& p4) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3, p4); +} + +template T* FbxNew(T1& p1, const T2& p2, T3& p3, const T4& p4) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3, p4); +} + +template T* FbxNew(T1& p1, const T2& p2, const T3& p3, T4& p4) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3, p4); +} + +template T* FbxNew(T1& p1, const T2& p2, const T3& p3, const T4& p4) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3, p4); +} + +template T* FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3, p4); +} + +template T* FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3, p4); +} + +template T* FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3, p4); +} + +template T* FbxNew(const T1& p1, T2& p2, const T3& p3, const T4& p4) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3, p4); +} + +template T* FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3, p4); +} + +template T* FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3, p4); +} + +template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3, p4); +} + +template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1, p2, p3, p4); +} + +template T* FbxNew(T1& p1, T2& p2, T3& p3, T4& p4, T5& p5) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1,p2,p3,p4,p5); +} + +template T* FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, T5& p5) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1,p2,p3,p4,p5); +} + +template T* FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, T5& p5) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1,p2,p3,p4,p5); +} + +template T* FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4, T5& p5) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1,p2,p3,p4,p5); +} + +template T* FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4, T5& p5) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1,p2,p3,p4,p5); +} + +template T* FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, const T5& p5) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1,p2,p3,p4,p5); +} + +template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, T5& p5) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1,p2,p3,p4,p5); +} + +template T* FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4, T5& p5) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1,p2,p3,p4,p5); +} + +template T* FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, const T5& p5) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1,p2,p3,p4,p5); +} + +template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, T5& p5) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1,p2,p3,p4,p5); +} + +template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, const T5& p5) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1,p2,p3,p4,p5); +} + +template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1,p2,p3,p4,p5); +} + +template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1,p2,p3,p4,p5,p6); +} + +template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1,p2,p3,p4,p5,p6,p7); +} + +template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1,p2,p3,p4,p5,p6,p7,p8); +} + +template T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8, const T9& p9) +{ + T* p = (T*)FbxMalloc(sizeof(T)); + return new(p)T(p1,p2,p3,p4,p5,p6,p7,p8,p9); +} + +template void FbxDelete(T* p) +{ + if( p ) + { + ((T*)p)->~T(); + FbxFree(p); + } +} + +template void FbxDelete(const T* p) +{ + if( p ) + { + ((T*)p)->~T(); + FbxFree(const_cast(p)); + } +} + +template T* FbxNewArray(const int n) +{ + if( FBXSDK_IS_SIMPLE_TYPE(T) ) + { + return (T*)FbxMalloc(sizeof(T)*n); + } + else + { + void* pTmp = FbxMalloc(sizeof(T) * n + sizeof(int)); + T* p = (T*)((int*)pTmp+1); + *((int*)pTmp) = n; + for( int i = 0; i < n; ++i ) + { + new((T*)p+i)T; //in-place new, not allocating memory so it is safe. + } + return p; + } +} + +template void FbxDeleteArray(T* p) +{ + if( p ) + { + if( !FBXSDK_IS_SIMPLE_TYPE(T) ) + { + for( int i = 0; i < ((int*)p)[-1]; ++i ) + { + ((T*)p)[i].~T(); + } + FbxFree((int*)p-1); + } + else + { + FbxFree((void*)p); + } + } +} + +#define FBXSDK_FRIEND_NEW()\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew();\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3);\ + \ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, T4& p4);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, const T4& p4);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3, T4& p4);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3, const T4& p4);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3, T4& p4);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3, const T4& p4);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3, T4& p4);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3, const T4& p4);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, const T4& p4);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4);\ + \ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, T4& p4, T5& p5);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, T5& p5);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, T5& p5);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4, T5& p5);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4, T5& p5);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, const T5& p5);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, T5& p5);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4, T5& p5);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, const T5& p5);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, T5& p5);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, const T5& p5);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5);\ + \ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8, const T9& p9);\ + template\ + friend void FBXSDK_NAMESPACE::FbxDelete(T* p);\ + template\ + friend void FBXSDK_NAMESPACE::FbxDelete(const T* p);\ + template\ + friend T* FBXSDK_NAMESPACE::FbxNewArray(const int n);\ + template\ + friend void FBXSDK_NAMESPACE::FbxDeleteArray(T* p); + +#ifdef FBXSDK_COMPILER_MSC + #pragma warning(pop) +#endif + +#include + +#endif /* _FBXSDK_CORE_ARCH_NEW_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/arch/fbxstdcompliant.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/arch/fbxstdcompliant.h new file mode 100644 index 00000000..059dc4a2 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/arch/fbxstdcompliant.h @@ -0,0 +1,97 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +/** \file fbxstdcompliant.h +* Macros to properly support the CRT secure functions. */ +#ifndef _FBXSDK_CORE_ARCH_STDCOMPLIANT_H_ +#define _FBXSDK_CORE_ARCH_STDCOMPLIANT_H_ + +#include + +#include + +#if defined(FBXSDK_ENV_WIN) + #define FBXSDK_printf printf_s + #define FBXSDK_fprintf fprintf_s + inline int FBXSDK_sprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsprintf_s(dst, dstsize, format, vl); va_end(vl); return ret; } + inline int FBXSDK_snprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsnprintf_s(dst, dstsize, _TRUNCATE, format, vl); va_end(vl); return ret; } + inline int FBXSDK_vsprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsprintf_s(dst, dstsize, format, vl); } + inline int FBXSDK_vsnprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsnprintf_s(dst, dstsize, _TRUNCATE, format, vl); } + #define FBXSDK_stricmp(dst, src) _stricmp(dst, src) + #define FBXSDK_strnicmp(dst, src, count) _strnicmp(dst, src, count) + #define FBXSDK_strcpy(dst, size, src) strcpy_s(dst, size, src) + #define FBXSDK_strncpy(dst, size, src, count) strncpy_s(dst, size, src, count) + #define FBXSDK_strcat(dst, size, src) strcat_s(dst, size, src) + #define FBXSDK_strtok(str, delim, ctx) strtok_s(str, delim, ctx) + #define FBXSDK_wcscpy(dst, size, src) wcscpy_s(dst, size, src) + #define FBXSDK_wcscat(dst, size, src) wcscat_s(dst, size, src) +#if !defined(FBXSDK_ENV_WINSTORE) + #define FBXSDK_getpid _getpid + #define FBXSDK_getcwd _getcwd +#else + inline int FBXSDK_getpid(){ return 0; } + inline char* FBXSDK_getcwd(char*,int){ return NULL; } +#endif + #define FBXSDK_localtime(ptm, time) { struct tm tms; ptm = &tms; localtime_s(ptm, time); } + #define FBXSDK_gmtime(ptm, time) { struct tm tms; ptm = &tms; gmtime_s(ptm, time); } + #define FBXSDK_fopen(fp, name, mode) fopen_s(&fp, name, mode) + +#elif defined(FBXSDK_ENV_MAC) || defined(FBXSDK_ENV_LINUX) + #define FBXSDK_printf printf + #define FBXSDK_fprintf fprintf + inline int FBXSDK_sprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsprintf(dst, format, vl); va_end(vl); return ret; } + inline int FBXSDK_snprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsnprintf(dst, dstsize, format, vl); va_end(vl); return ret; } + inline int FBXSDK_vsprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsprintf(dst, format, vl); } + inline int FBXSDK_vsnprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsnprintf(dst, dstsize, format, vl); } + #define FBXSDK_stricmp(dst, src) stricmp(dst, src) + #define FBXSDK_strnicmp(dst, src, count) strnicmp(dst, src, count) + #define FBXSDK_strcpy(dst, size, src) strcpy(dst, src) + #define FBXSDK_strncpy(dst, size, src, count) strncpy(dst, src, count) + #define FBXSDK_strcat(dst, size, src) strcat(dst, src) + #define FBXSDK_strtok(str, delim, ctx) strtok(str, delim) + #define FBXSDK_wcscpy(dst, size, src) wcscpy(dst, src) + #define FBXSDK_wcscat(dst, size, src) wcscat_s(dst, src) + #define FBXSDK_getpid getpid + #define FBXSDK_getcwd getcwd + #define FBXSDK_localtime(tm, time) tm=localtime(time) + #define FBXSDK_gmtime(tm, time) tm=gmtime(time) + #define FBXSDK_fopen(fp, name, mode) fp=fopen(name, mode) + +#else + #error Unsupported platform! +#endif + +#define FBXSDK_strdup FbxStrDup + +//The scanf family functions cannot easily be used in both secure and non-secure versions because +//Microsoft's secure version expects the size of the string/char* arguments following their address. +//On Unix machines the scanf family functions do not have this behavior and trying to use the same +//calls would result in compiler errors because the arguments would not match the format string. +//Using the following macros in the code will simply desable the warning at compile time. +#if defined(FBXSDK_COMPILER_MSC) && (_MSC_VER >= 1300) + #define FBXSDK_CRT_SECURE_NO_WARNING_BEGIN\ + {\ + __pragma(warning(push))\ + __pragma(warning(disable : 4996))\ + } + + #define FBXSDK_CRT_SECURE_NO_WARNING_END\ + {\ + __pragma(warning(pop))\ + } +#else + #define FBXSDK_CRT_SECURE_NO_WARNING_BEGIN + #define FBXSDK_CRT_SECURE_NO_WARNING_END +#endif + +#include + +#endif /* _FBXSDK_CORE_ARCH_STDCOMPLIANT_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/arch/fbxtypes.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/arch/fbxtypes.h new file mode 100644 index 00000000..9f620bbb --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/arch/fbxtypes.h @@ -0,0 +1,264 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +/** \file fbxtypes.h + * Basic types definition. + * + * Standard basic types used across the FBX SDK. There is also platform independent + * definitions that guarantee size across operating systems. The FBXSDK_SYSTEM_IS_LP64 + * define is set to 1 when the operating system defines the "long" C++ type as 64-bit. + */ +#ifndef _FBXSDK_CORE_ARCH_TYPES_H_ +#define _FBXSDK_CORE_ARCH_TYPES_H_ + +#include + +//Note: On MacOSX and Linux 64-bit, long is defined as 64-bits while on Windows +//it is still a 32-bits for backward compatibility. We stick with Windows standard. +#if defined(FBXSDK_CPU_64) && !defined(FBXSDK_ENV_WIN) + #define FBXSDK_SYSTEM_IS_LP64 1 +#endif + +#include + +class FbxObject; + +typedef bool FbxBool; +typedef signed char FbxChar; +typedef unsigned char FbxUChar; +typedef signed short FbxShort; +typedef unsigned short FbxUShort; +typedef signed int FbxInt; +typedef unsigned int FbxUInt; +typedef float FbxFloat; +typedef double FbxDouble; + +typedef FbxBool* FbxBoolPtr; +typedef FbxChar* FbxCharPtr; +typedef FbxUChar* FbxUCharPtr; +typedef FbxShort* FbxShortPtr; +typedef FbxUShort* FbxUShortPtr; +typedef FbxInt* FbxIntPtr; +typedef FbxUInt* FbxUIntPtr; +typedef FbxFloat* FbxFloatPtr; +typedef FbxDouble* FbxDoublePtr; + +typedef FbxInt FbxEnum; +typedef FbxObject* FbxReference; + +//------------------------------------------------------------------------------------- +//Architecture independent defines (guarantee size) +#if defined(FBXSDK_COMPILER_MSC) + #define FBXSDK_LONGLONG(x) (x##i64) + #define FBXSDK_ULONGLONG(x) (x##Ui64) + + typedef signed __int8 FbxInt8; + typedef unsigned __int8 FbxUInt8; + typedef signed __int16 FbxInt16; + typedef unsigned __int16 FbxUInt16; + typedef signed __int32 FbxInt32; + typedef unsigned __int32 FbxUInt32; + typedef signed __int64 FbxInt64; + typedef unsigned __int64 FbxUInt64; +#else + #define FBXSDK_LONGLONG(x) (x##LL) + #define FBXSDK_ULONGLONG(x) (x##ULL) + + typedef signed char FbxInt8; + typedef unsigned char FbxUInt8; + typedef signed short FbxInt16; + typedef unsigned short FbxUInt16; + typedef signed int FbxInt32; + typedef unsigned int FbxUInt32; + typedef signed long long FbxInt64; + typedef unsigned long long FbxUInt64; +#endif + +#ifdef FBXSDK_SYSTEM_IS_LP64 + typedef signed int FbxLong; + typedef unsigned int FbxULong; +#else + typedef signed long FbxLong; + typedef unsigned long FbxULong; +#endif +typedef FbxInt64 FbxLongLong; +typedef FbxUInt64 FbxULongLong; + +typedef FbxLong* FbxLongPtr; +typedef FbxULong* FbxULongPtr; +typedef FbxLongLong* FbxLongLongPtr; +typedef FbxULongLong* FbxULongLongPtr; + + +#if defined(FBXSDK_ENV_EMSCRIPTEN) + typedef FbxInt32 __int32_t; + typedef FbxUInt32 __uint32_t; + typedef FbxInt64 __int64_t; + typedef FbxUInt64 __uint64_t; +#endif + +//------------------------------------------------------------------------------------- +//Minimum and Maximum values for types +#define FBXSDK_CHAR_MIN -128 +#define FBXSDK_CHAR_MAX 127 +#define FBXSDK_UCHAR_MIN 0 +#define FBXSDK_UCHAR_MAX 255 +#define FBXSDK_SHORT_MIN -32768 +#define FBXSDK_SHORT_MAX 32767 +#define FBXSDK_USHORT_MIN 0 +#define FBXSDK_USHORT_MAX 65535 +#define FBXSDK_INT_MIN 0x80000000 +#define FBXSDK_INT_MAX 0x7fffffff +#define FBXSDK_UINT_MIN 0 +#define FBXSDK_UINT_MAX 0xffffffff +#define FBXSDK_LONG_MIN FBXSDK_INT_MIN +#define FBXSDK_LONG_MAX FBXSDK_INT_MAX +#define FBXSDK_ULONG_MIN FBXSDK_UINT_MIN +#define FBXSDK_ULONG_MAX FBXSDK_UINT_MAX +#define FBXSDK_LONGLONG_MIN FBXSDK_LONGLONG(0x8000000000000000) +#define FBXSDK_LONGLONG_MAX FBXSDK_LONGLONG(0x7fffffffffffffff) +#define FBXSDK_ULONGLONG_MIN FBXSDK_ULONGLONG(0) +#define FBXSDK_ULONGLONG_MAX FBXSDK_ULONGLONG(0xffffffffffffffff) +#define FBXSDK_FLOAT_MIN FLT_MIN +#define FBXSDK_FLOAT_MAX FLT_MAX +#define FBXSDK_FLOAT_EPSILON FLT_EPSILON +#define FBXSDK_DOUBLE_MIN DBL_MIN +#define FBXSDK_DOUBLE_MAX DBL_MAX +#define FBXSDK_DOUBLE_EPSILON DBL_EPSILON +#define FBXSDK_TOLERANCE (1.0e-6) + +//------------------------------------------------------------------------------------- +//Handle and atomic definition (size change depending of architecture) +#if defined(FBXSDK_CPU_32) + typedef FbxUInt32 FbxHandle; + #define FBXSDK_REF_MIN FBXSDK_UINT_MIN + #define FBXSDK_REF_MAX FBXSDK_UINT_MAX + + typedef FbxLong FbxAtomic; + #define FBXSDK_ATOMIC_MIN FBXSDK_LONG_MIN + #define FBXSDK_ATOMIC_MAX FBXSDK_LONG_MAX +#elif defined(FBXSDK_CPU_64) + typedef FbxUInt64 FbxHandle; + #define FBXSDK_REF_MIN FBXSDK_ULONGLONG_MIN + #define FBXSDK_REF_MAX FBXSDK_ULONGLONG_MAX + + typedef FbxInt64 FbxAtomic; + #define FBXSDK_ATOMIC_MIN FBXSDK_LONGLONG_MIN + #define FBXSDK_ATOMIC_MAX FBXSDK_LONGLONG_MAX +#else + #error Unsupported architecture! +#endif + +//------------------------------------------------------------------------------------- +//Various utility functions for fbxsdk basic types +inline const FbxChar FbxMin(const FbxChar){ return FBXSDK_CHAR_MIN; } +inline const FbxUChar FbxMin(const FbxUChar){ return FBXSDK_UCHAR_MIN; } +inline const FbxShort FbxMin(const FbxShort){ return FBXSDK_SHORT_MIN; } +inline const FbxUShort FbxMin(const FbxUShort){ return FBXSDK_USHORT_MIN; } +inline const FbxInt FbxMin(const FbxInt){ return FBXSDK_INT_MIN; } +inline const FbxUInt FbxMin(const FbxUInt){ return FBXSDK_UINT_MIN; } +inline const FbxLongLong FbxMin(const FbxLongLong){ return FBXSDK_LONGLONG_MIN; } +inline const FbxULongLong FbxMin(const FbxULongLong){ return FBXSDK_ULONGLONG_MIN; } +inline const FbxFloat FbxMin(const FbxFloat){ return FBXSDK_FLOAT_MIN; } +inline const FbxDouble FbxMin(const FbxDouble){ return FBXSDK_DOUBLE_MIN; } + +inline const FbxChar FbxMax(const FbxChar){ return FBXSDK_CHAR_MAX; } +inline const FbxUChar FbxMax(const FbxUChar){ return FBXSDK_UCHAR_MAX; } +inline const FbxShort FbxMax(const FbxShort){ return FBXSDK_SHORT_MAX; } +inline const FbxUShort FbxMax(const FbxUShort){ return FBXSDK_USHORT_MAX; } +inline const FbxInt FbxMax(const FbxInt){ return FBXSDK_INT_MAX; } +inline const FbxUInt FbxMax(const FbxUInt){ return FBXSDK_UINT_MAX; } +inline const FbxLongLong FbxMax(const FbxLongLong){ return FBXSDK_LONGLONG_MAX; } +inline const FbxULongLong FbxMax(const FbxULongLong){ return FBXSDK_ULONGLONG_MAX; } +inline const FbxFloat FbxMax(const FbxFloat){ return FBXSDK_FLOAT_MAX; } +inline const FbxDouble FbxMax(const FbxDouble){ return FBXSDK_DOUBLE_MAX; } + +#ifndef FBXSDK_SYSTEM_IS_LP64 + inline const FbxLong FbxMin(const FbxLong){ return FBXSDK_LONG_MIN; } + inline const FbxULong FbxMin(const FbxULong){ return FBXSDK_ULONG_MIN; } + inline const FbxLong FbxMax(const FbxLong){ return FBXSDK_LONG_MAX; } + inline const FbxULong FbxMax(const FbxULong){ return FBXSDK_ULONG_MAX; } +#endif + +template inline const T FbxMin(const T){}; +template inline const T FbxMax(const T){}; + +template inline T FbxMin(const T x, const T y){ return (x < y) ? x : y; } +template inline T FbxMax(const T x, const T y){ return (x > y) ? x : y; } + +//------------------------------------------------------------------------------------- +//Vector Template Types +template class FBXSDK_DLL FbxVectorTemplate2 +{ +public: + inline FbxVectorTemplate2(){ *this = T(0); } + inline explicit FbxVectorTemplate2(T pValue){ *this = pValue; } + inline FbxVectorTemplate2(T pData0, T pData1){ mData[0] = pData0; mData[1] = pData1; } + inline ~FbxVectorTemplate2(){} + inline T& operator[](int pIndex){ return mData[pIndex]; } + inline const T& operator[](int pIndex) const { return mData[pIndex]; } + inline FbxVectorTemplate2& operator=(const T& pValue){ mData[0] = pValue; mData[1] = pValue; return *this; } + inline FbxVectorTemplate2& operator=(const FbxVectorTemplate2& pVector){ mData[0] = pVector.mData[0]; mData[1] = pVector.mData[1]; return *this; } + inline bool operator==(const FbxVectorTemplate2& pVector) const { return ((mData[0] == pVector.mData[0]) && (mData[1] == pVector.mData[1])); } + inline bool operator!=(const FbxVectorTemplate2& pVector) const { return !operator==( pVector ); } + inline T* Buffer(){ return mData; } + inline const T* Buffer() const { return mData; } + T mData[2]; +}; + +template class FBXSDK_DLL FbxVectorTemplate3 +{ +public: + inline FbxVectorTemplate3(){ *this = T(0); } + inline explicit FbxVectorTemplate3(T pValue){ *this = pValue; } + inline FbxVectorTemplate3(T pData0, T pData1, T pData2){ mData[0] = pData0; mData[1] = pData1; mData[2] = pData2; } + inline ~FbxVectorTemplate3(){} + inline T& operator[](int pIndex) { return mData[pIndex]; } + inline const T& operator[](int pIndex) const { return mData[pIndex]; } + inline operator FbxVectorTemplate2& () const { return *((FbxVectorTemplate2*)this); } + inline FbxVectorTemplate3& operator=(T const &pValue){ mData[0] = pValue; mData[1] = pValue; mData[2] = pValue; return *this; } + inline FbxVectorTemplate3& operator=(const FbxVectorTemplate2& pVector){ mData[0] = pVector.mData[0]; mData[1] = pVector.mData[1]; return *this; } + inline FbxVectorTemplate3& operator=(const FbxVectorTemplate3& pVector){ mData[0] = pVector.mData[0]; mData[1] = pVector.mData[1]; mData[2] = pVector.mData[2]; return *this; } + inline bool operator==(const FbxVectorTemplate3& pVector) const { return ((mData[0] == pVector.mData[0]) && (mData[1] == pVector.mData[1]) && (mData[2] == pVector.mData[2])); } + inline bool operator!=(const FbxVectorTemplate3& pVector) const { return !operator==(pVector); } + inline T* Buffer(){ return mData; } + inline const T* Buffer() const { return mData; } + T mData[3]; +}; + +template class FBXSDK_DLL FbxVectorTemplate4 +{ +public: + inline FbxVectorTemplate4(){ *this = T(0); } + inline explicit FbxVectorTemplate4(T pValue){ *this = pValue; } + inline FbxVectorTemplate4(T pData0, T pData1, T pData2, T pData3){ mData[0] = pData0; mData[1] = pData1; mData[2] = pData2; mData[3] = pData3; } + inline ~FbxVectorTemplate4(){} + inline T& operator[](int pIndex){ return mData[pIndex]; } + inline const T& operator[](int pIndex) const { return mData[pIndex]; } + inline operator FbxVectorTemplate3& () const { return *((FbxVectorTemplate3*)this); } + inline FbxVectorTemplate4& operator=(const T& pValue){ mData[0] = pValue; mData[1] = pValue; mData[2] = pValue; mData[3] = pValue; return *this; } + inline FbxVectorTemplate4& operator=(const FbxVectorTemplate3& pValue){ mData[0] = pValue[0]; mData[1] = pValue[1]; mData[2] = pValue[2]; return *this; } + inline FbxVectorTemplate4& operator=(const FbxVectorTemplate4& pVector){ mData[0] = pVector.mData[0]; mData[1] = pVector.mData[1]; mData[2] = pVector.mData[2]; mData[3] = pVector.mData[3]; return *this; } + inline bool operator==(const FbxVectorTemplate4& pVector) const { return ((mData[0] == pVector.mData[0]) && (mData[1] == pVector.mData[1]) && (mData[2] == pVector.mData[2]) && (mData[3] == pVector.mData[3])); } + inline bool operator!=(const FbxVectorTemplate4& pVector) const { return !operator==( pVector ); } + inline T* Buffer(){ return mData; } + inline const T* Buffer() const { return mData; } + T mData[4]; +}; + +typedef FbxVectorTemplate2 FbxDouble2; +typedef FbxVectorTemplate3 FbxDouble3; +typedef FbxVectorTemplate4 FbxDouble4; +typedef FbxVectorTemplate4 FbxDouble4x4; + +#include + +#endif /* _FBXSDK_CORE_ARCH_TYPES_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxarray.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxarray.h new file mode 100644 index 00000000..3eea8539 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxarray.h @@ -0,0 +1,489 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxarray.h +#ifndef _FBXSDK_CORE_BASE_ARRAY_H_ +#define _FBXSDK_CORE_BASE_ARRAY_H_ + +#include + +#include + +/** Class for array of basic elements such as pointers and basic types. This class will not +* call constructor and destructor for elements, thus it is not suitable for object references. +* Memory allocations are always done in a single contiguous memory region. */ +template class FbxArray +{ +public: + //! Element compare function pointer definition + typedef int (*CompareFunc)(const void*, const void*); + + //! Constructor. + FbxArray() : mSize(0), mCapacity(0), mArray(NULL){} + + //! Reserve constructor. + FbxArray(const int pCapacity) : mSize(0), mCapacity(0), mArray(NULL){ if( pCapacity > 0 ) Reserve(pCapacity); } + + //! Copy constructor. + FbxArray(const FbxArray& pArray) : mSize(0), mCapacity(0), mArray(NULL){ *this = pArray; } + + /** Destructor. + * \remark The destructor for each element will not be called. */ + ~FbxArray(){ Clear(); } + + /** Insert an element at the given position, growing the array if capacity is not sufficient. + * \param pIndex Position where to insert the element. Must be a positive value. + * \param pElement Element to insert in the array. + * \param pCompact If \c true and capacity is exceeded, grow capacity by one, otherwise double capacity (default). + * \return -1 if insert failed, otherwise the position of the inserted element in the array. + * \remark If the given index is greater than Size(), the element is appended at the end. Use compact mode only if you need to save memory. */ + inline int InsertAt(const int pIndex, const T& pElement, bool pCompact=false) + { + FBX_ASSERT_RETURN_VALUE(pIndex >= 0, -1); + int lIndex = FbxMin(pIndex, mSize); + if( mSize >= mCapacity ) + { + T lElement = pElement; //Copy element because we might move memory + int lNewCapacity = FbxMax(pCompact ? mCapacity + 1 : mCapacity * 2, 1); //We always double capacity when not compacting + T* lArray = Allocate(lNewCapacity); + FBX_ASSERT_RETURN_VALUE(lArray, -1); + mArray = lArray; + mCapacity = lNewCapacity; + return InsertAt(pIndex, lElement); //Insert copied element because reference might be moved + } + + if( lIndex < mSize ) //Move elements to leave a space open to insert the new element + { + //If pElement is inside memmove range, copy element and insert copy instead + if( (&pElement >= &mArray[lIndex]) && (&pElement < &mArray[mSize]) ) + { + T lElement = pElement; + return InsertAt(pIndex, lElement); + } + memmove(&mArray[lIndex + 1], &mArray[lIndex], (mSize - lIndex) * sizeof(T)); + } + + memcpy(&mArray[lIndex], &pElement, sizeof(T)); + mSize++; + + return lIndex; + } + + /** Append an element at the end of the array, doubling the array if capacity is not sufficient. + * \param pElement Element to append to the array. + * \return -1 if add failed, otherwise the position of the added element in the array. */ + inline int Add(const T& pElement) + { + return InsertAt(mSize, pElement); + } + + /** Append an element at the end of array, if not already present, doubling the array if capacity is not sufficient. + * \param pElement Element to append to the array. + * \return -1 if add failed, otherwise the position of the added element in the array. */ + inline int AddUnique(const T& pElement) + { + int lIndex = Find(pElement); + return ( lIndex == -1 ) ? Add(pElement) : lIndex; + } + + /** Append an element at the end of the array, growing the array by one element if capacity is not sufficient. + * \param pElement Element to append to the array. + * \return -1 if add failed, otherwise the position of the added element in the array. */ + inline int AddCompact(const T& pElement) + { + return InsertAt(mSize, pElement, true); + } + + /** Retrieve the number of element contained in the array. To increase the capacity without increasing the size, please use Reserve(). + * \return The number of element in the array. + * \remark The size of the array cannot exceed its capacity. */ + inline int Size() const { return mSize; } + + /** Retrieve the current allocated memory capacity of the array. + * \return The capacity of the array in number of element. + * \remark The capacity will always be greater or equal to its size. */ + inline int Capacity() const { return mCapacity; } + + /** Retrieve a reference of the element at given index position in the array. + * \param pIndex Position of element in the array. + * \return A reference to the element at the specified position in the array. + * \remark No error will be thrown if the index is out of bounds. */ + inline T& operator[](const int pIndex) const + { + #ifdef _DEBUG + FBX_ASSERT_MSG(pIndex >= 0, "Index is out of range!"); + if( pIndex >= mSize ) + { + if( pIndex < mCapacity ) + { + FBX_ASSERT_NOW("Index is out of range, but not outside of capacity! Call SetAt() to use reserved memory."); + } + else FBX_ASSERT_NOW("Index is out of range!"); + } + #endif + return (T&)mArray[pIndex]; + } + + /** Retrieve a copy of the element at given index position in the array. + * \param pIndex Position of element in the array. + * \return The value of the element at the specified position in the array. + * \remark No error will be thrown if the index is out of bounds. */ + inline T GetAt(const int pIndex) const + { + return operator[](pIndex); + } + + /** Retrieve a copy of the first element. + * \return Copy of the first element. + * \remark The array should have at least one element and no error will be thrown if the array is empty. */ + inline T GetFirst() const + { + return GetAt(0); + } + + /** Retrieve a copy of the last element. + * \return Copy of the last element. + * \remark The array should have at least one element and no error will be thrown if the array is empty. */ + inline T GetLast() const + { + return GetAt(mSize-1); + } + + /** Find first matching element, from first to last. + * \param pElement The element to be compared to each of the elements. + * \param pStartIndex The position to start searching from. + * \return Position of first matching element or -1 if there is no matching element. */ + inline int Find(const T& pElement, const int pStartIndex=0) const + { + FBX_ASSERT_RETURN_VALUE(pStartIndex >= 0, -1); + for( int i = pStartIndex; i < mSize; ++i ) + { + if( operator[](i) == pElement ) return i; + } + return -1; + } + + /** Find first matching element, from last to first. + * \param pElement The element to be compared to each of the elements. + * \param pStartIndex The position to start searching from. + * \return Position of first matching element or -1 if there is no matching element. */ + inline int FindReverse(const T& pElement, const int pStartIndex=FBXSDK_INT_MAX) const + { + for( int i = FbxMin(pStartIndex, mSize-1); i >= 0; --i ) + { + if( operator[](i) == pElement ) return i; + } + return -1; + } + + /** Request for allocation of additional memory without inserting new elements. After the memory has been reserved, please use SetAt() to initialize elements. + * \param pCapacity The number of additional element memory allocation requested. + * \return \c true if the memory allocation succeeded or if the capacity is unchanged, \c false otherwise. + * \remark If the requested capacity is less than or equal to the current capacity, this call has no effect. In either case, Size() is unchanged. */ + inline bool Reserve(const int pCapacity) + { + FBX_ASSERT_RETURN_VALUE(pCapacity > 0, false); + if( pCapacity > mCapacity ) + { + T* lArray = Allocate(pCapacity); + FBX_ASSERT_RETURN_VALUE(lArray, false); + mArray = lArray; + mCapacity = pCapacity; + + //Initialize new memory to zero + memset(&mArray[mSize], 0, (mCapacity - mSize) * sizeof(T)); + } + return true; + } + + /** Set the element at given position in the array. + * \param pIndex Position of element in the array. + * \param pElement The new element. + * \remark If the index is outside range, and outside capacity, this call has no effect. However, if index is + * within capacity range, element count is increased such that Size() will become pIndex + 1. */ + inline void SetAt(const int pIndex, const T& pElement) + { + FBX_ASSERT_RETURN(pIndex < mCapacity); + if( pIndex >= mSize ) mSize = pIndex + 1; + if( mArray ) memcpy(&mArray[pIndex], &pElement, sizeof(T)); + } + + /** Set the value of the first element. + * \param pElement The new value of the last element. + * \remark The array should have at least one element and no error will be thrown if the array is empty. */ + inline void SetFirst(const T& pElement) + { + SetAt(0, pElement); + } + + /** Set the value of the last element. + * \param pElement The new value of the last element. + * \remark The array should have at least one element and no error will be thrown if the array is empty. */ + inline void SetLast(const T& pElement) + { + SetAt(mSize-1, pElement); + } + + /** Remove an element at the given position in the array. + * \param pIndex Position of the element to remove. + * \return Removed element. + * \remark No error will be thrown if the index is out of bounds. */ + inline T RemoveAt(const int pIndex) + { + T lElement = GetAt(pIndex); + if( pIndex + 1 < mSize ) + { + memmove(&mArray[pIndex], &mArray[pIndex + 1], (mSize - pIndex - 1) * sizeof(T)); + } + mSize--; + return lElement; + } + + /** Remove the first element in the array. + * \return Removed element. + * \remark The array should have at least one element and no error will be thrown if the array is empty. */ + inline T RemoveFirst() + { + return RemoveAt(0); + } + + /** Remove the last element in the array. + * \return Removed element. + * \remark The array should have at least one element and no error will be thrown if the array is empty. */ + inline T RemoveLast() + { + return RemoveAt(mSize-1); + } + + /** Remove first matching element in the array. + * \param pElement Element to be removed. + * \return \c true if a matching element is found and removed, \c false otherwise. */ + inline bool RemoveIt(const T& pElement) + { + int Index = Find(pElement); + if( Index >= 0 ) + { + RemoveAt(Index); + return true; + } + return false; + } + + /** Remove a range of elements at the given position in the array. + * \param pIndex Begin position of the elements to remove. + * \param pCount The count of elements to remove. + * \return \c true if successful, otherwise \c false. */ + inline void RemoveRange(const int pIndex, const int pCount) + { + FBX_ASSERT_RETURN(pIndex >= 0); + FBX_ASSERT_RETURN(pCount >= 0); + if( pIndex + pCount < mSize ) + { + memmove(&mArray[pIndex], &mArray[pIndex + pCount], (mSize - pIndex - pCount) * sizeof(T)); + } + mSize -= pCount; + } + + /** Inserts or erases elements at the end such that Size() becomes pSize, increasing capacity if needed. Please use SetAt() to initialize any new elements. + * \param pSize The new count of elements to set the array to. Must be greater or equal to zero. + * \return \c true if the memory (re)allocation succeeded, \c false otherwise. + * \remark If the requested element count is less than or equal to the current count, elements are freed from memory. Otherwise, the array grows and elements are unchanged. */ + inline bool Resize(const int pSize) + { + if( pSize == mSize && mSize == mCapacity ) return true; + + if( pSize == 0 ) + { + Clear(); + return true; + } + + FBX_ASSERT_RETURN_VALUE(pSize > 0, false); + if( pSize != mCapacity ) + { + T* lArray = Allocate(pSize); + FBX_ASSERT_RETURN_VALUE(lArray, false); + mArray = lArray; + } + + if( pSize > mCapacity ) //Initialize new memory to zero + { + memset(&mArray[mSize], 0, (pSize - mSize) * sizeof(T)); + } + + mSize = pSize; + mCapacity = pSize; + return true; + } + + /** Increase size of array by the specified size. + * \param pSize The size to add to the array size. + * \return \c true if operation succeeded, \c false otherwise. */ + inline bool Grow(const int pSize) + { + return Resize(mSize + pSize); + } + + /** Reduce size of array by the specified size. + * \param pSize The size to remove from the array size. + * \return \c true if operation succeeded, \c false otherwise. */ + inline bool Shrink(const int pSize) + { + return Resize(mSize - pSize); + } + + /** Compact the array so that its capacity is the same as its size. + * \return \c true if operation succeeded, \c false otherwise. */ + inline bool Compact() + { + return Resize(mSize); + } + + /** Reset the number of element to zero and free the memory allocated. + * \remark This only free the memory allocated by the array, and doesn't call the destructor of each element. */ + inline void Clear() + { + if( mArray != NULL ) + { + mSize = 0; + mCapacity = 0; + FbxFree(mArray); + mArray = NULL; + } + } + + /** Sort the array using the specified compare function pointer + * \param pCompareFunc The compare function to use to sort elements. */ + inline void Sort(CompareFunc pCompareFunc) + { + qsort(mArray, mSize, sizeof(T), pCompareFunc); + } + + //! Get pointer to internal array of elements. + inline T* GetArray() const { return mArray ? (T*)mArray : NULL; } + + //! Cast operator. + inline operator T* (){ return mArray ? (T*)mArray : NULL; } + + /** Append another array at the end of this array. + * \param pOther The other array to append to this array. */ + inline void AddArray(const FbxArray& pOther) + { + if( Grow(pOther.mSize) ) + { + memcpy(&mArray[mSize - pOther.mSize], pOther.mArray, pOther.mSize * sizeof(T)); + } + } + + /** Append the elements of another array at the end of this array if they are not present. + * \param pOther Another array. */ + inline void AddArrayNoDuplicate(const FbxArray& pOther) + { + for( int i = 0, c = pOther.mSize; i < c; ++i ) + { + AddUnique(pOther[i]); + } + } + + /** Remove the elements of another array from this array is they are present. + * \param pOther Another array. */ + inline void RemoveArray(const FbxArray& pOther) + { + for( int i = 0, c = pOther.mSize; i < c; ++i ) + { + RemoveIt(pOther[i]); + } + } + + /** Operator to copy elements of an array. + * \return this array containing a copy of pOther elements. */ + inline FbxArray& operator=(const FbxArray& pOther) + { + if( this != &pOther ) + { + if( Resize(pOther.mSize) ) + { + memcpy(mArray, pOther.mArray, pOther.mSize * sizeof(T)); + } + } + return *this; + } + + /** Operator to compare elements of an array. + * \return \c true if the two arrays are equal, otherwise \c false. */ + inline bool operator==(const FbxArray& pOther) const + { + if( this == &pOther ) return true; + if( mSize != pOther.mSize ) return false; + return memcmp(mArray, pOther.mArray, sizeof(T) * mSize) == 0; + } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + inline int GetCount() const { return mSize; } + +private: + inline T* Allocate(const int pCapacity) + { + return (T*)FbxRealloc(mArray, pCapacity * sizeof(T)); + } + + int mSize; + int mCapacity; + T* mArray; + +#if defined(FBXSDK_COMPILER_MSC) + //Previously class FbxArray is for pointers. Somehow, it's used to store other types. Here's a compile-time checking for known incompatible classes. + //If it happens you find new incompatible ones, declare them with macro FBXSDK_INCOMPATIBLE_WITH_ARRAY. Also see file fbxstring.h. + FBX_ASSERT_STATIC(FBXSDK_IS_SIMPLE_TYPE(T) || __is_enum(T) || (__has_trivial_constructor(T)&&__has_trivial_destructor(T)) || !FBXSDK_IS_INCOMPATIBLE_WITH_ARRAY(T)); +#endif + +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +//! Call FbxFree on each element of the array, and then clear it. +template inline void FbxArrayFree(FbxArray& pArray) +{ + for( int i = 0, c = pArray.Size(); i < c; ++i ) + { + FbxFree(pArray[i]); + } + pArray.Clear(); +} + +//! Call FbxDelete on each element of the array, and then clear it. +template inline void FbxArrayDelete(FbxArray& pArray) +{ + for( int i = 0, c = pArray.Size(); i < c; ++i ) + { + FbxDelete(pArray[i]); + } + pArray.Clear(); +} + +//! Call Destroy on each element of the array, and then clear it. +template inline void FbxArrayDestroy(FbxArray& pArray) +{ + for( int i = 0, c = pArray.Size(); i < c; ++i ) + { + (pArray[i])->Destroy(); + } + pArray.Clear(); +} + +//! Make sure to break build if someone try to make FbxArray>, which is not supported. +template FBXSDK_INCOMPATIBLE_WITH_ARRAY_TEMPLATE(FbxArray); + +#include + +#endif /* _FBXSDK_CORE_BASE_ARRAY_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxbitset.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxbitset.h new file mode 100644 index 00000000..798b1bbb --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxbitset.h @@ -0,0 +1,90 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxbitset.h +#ifndef _FBXSDK_CORE_BASE_BITSET_H_ +#define _FBXSDK_CORE_BASE_BITSET_H_ + +#include + +#include + +/** An automatic growing array of bit. + * + * The bit array will automatically grow when specifying bit indexes that are greater + * than the array size when calling SetBit or UnsetBit. Indexes can vary from 0 to + * FBXSDK_UINT_MAX-1. When an invalid index is returned from any functions, FBXSDK_UINT_MAX + * is returned. The bit array is not thread safe. + */ +class FBXSDK_DLL FbxBitSet +{ +public: + /** Constructor. + * \param pInitialSize Initial bit array size in bit count (not in byte count!). + */ + FbxBitSet(const FbxUInt pInitialSize=0); + + //! Destructor. + virtual ~FbxBitSet(); + + /** Set the bit at the specified bit index to true regardless of its current value. + * \param pBitIndex The bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. + */ + void SetBit(const FbxUInt pBitIndex); + + /** Set all the bits to the specified value regardless of their current value. + * \param pValue The boolean value to set to all bits. + */ + void SetAllBits(const bool pValue); + + /** Set the bit at the specified bit index to false regardless of its current value. + * \param pBitIndex The bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. + */ + void UnsetBit(const FbxUInt pBitIndex); + + /** Get the bit boolean value at the specified bit index. + * \param pBitIndex The bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. + * \return True if the bit is set, false otherwise. + */ + bool GetBit(const FbxUInt pBitIndex) const; + + /** Get the bit index of the first bit that is currently set. + * \return The bit index of the first set bit, FBXSDK_UINT_MAX if none found. + */ + FbxUInt GetFirstSetBitIndex() const; + + /** Get the bit index of the last bit that is currently set. + * \return The bit index of the last set bit, FBXSDK_UINT_MAX if none found. + */ + FbxUInt GetLastSetBitIndex() const; + + /** Get the bit index of the next set bit after the specified bit index. + * \param pBitIndex The start bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. + * \return The bit index of the next set bit, FBXSDK_UINT_MAX if none found. + */ + FbxUInt GetNextSetBitIndex(const FbxUInt pBitIndex) const; + + /** Get the bit index of the previous set bit before the specified bit index. + * \param pBitIndex The start bit index in the array in the range of [0, FBXSDK_UINT_MAX-1]. + * \return The bit index of the previous set bit, FBXSDK_UINT_MAX if none found. + */ + FbxUInt GetPreviousSetBitIndex(const FbxUInt pBitIndex) const; + +private: + void Grow(const FbxUInt pNewSize); + + void* mData; + FbxUInt mSize; +}; + +#include + +#endif /* _FBXSDK_CORE_BASE_BITSET_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxcharptrset.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxcharptrset.h new file mode 100644 index 00000000..6c6d1406 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxcharptrset.h @@ -0,0 +1,95 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcharptrset.h +#ifndef _FBXSDK_CORE_BASE_CHARPTRSET_H_ +#define _FBXSDK_CORE_BASE_CHARPTRSET_H_ + +#include + +#include + +/** This class contains the data structure support for char pointer set. + */ +class FBXSDK_DLL FbxCharPtrSet +{ +public: + /** Class constructor + * \param pItemPerBlock Number of item per block. Default is 20. */ + FbxCharPtrSet(int pItemPerBlock=20); + + //! Class destructor + ~FbxCharPtrSet(); + + /** Add a new item. + * \param pReference char pointer reference to the item. + * \param pItem FbxHandle to the item. */ + void Add(const char* pReference, FbxHandle pItem); + + /** Removes an item. + * \param pReference char reference to the item. + * \return true if successful. */ + bool Remove(const char* pReference); + + /** Get an item's reference. + * \param pReference char reference to the item. + * \param PIndex index to the item. + * \return FbxHandle to the item, NULL if fails. */ + FbxHandle Get(const char* pReference, int* PIndex=NULL); + + /** Get an item's reference from index. + * \param pIndex index to the item. + * \return FbxHandle to the item, NULL if fails. */ + FbxHandle& operator[](int pIndex); + + /** Get an item's reference from index. + * \param pIndex index to the item. + * \param pReference char reference to the item. + * \return FbxHandle to the item, NULL if fails. */ + FbxHandle GetFromIndex(int pIndex, const char** pReference=NULL); + + /** Removes an item by index. + * \param pIndex index to the item. */ + void RemoveFromIndex(int pIndex); + + /** Get the number of item in the array. + * \return the number of element in the set. */ + inline int GetCount() const { return mCharPtrSetCount; } + + //! Sorts the array. + void Sort(); + + //! Clears the array. + void Clear(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + struct CharPtrSet; + + inline void SetCaseSensitive(bool pIsCaseSensitive){ mIsCaseSensitive = pIsCaseSensitive; } + +private: + CharPtrSet* FindEqual(const char* pReference) const; + + CharPtrSet* mCharPtrSetArray; + int mCharPtrSetCount; + int mBlockCount; + int mItemPerBlock; + bool mIsChanged; + bool mIsCaseSensitive; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_CORE_BASE_CHARPTRSET_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxcontainerallocators.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxcontainerallocators.h new file mode 100644 index 00000000..16098783 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxcontainerallocators.h @@ -0,0 +1,213 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcontainerallocators.h +#ifndef _FBXSDK_CORE_BASE_CONTAINER_ALLOCATORS_H_ +#define _FBXSDK_CORE_BASE_CONTAINER_ALLOCATORS_H_ + +#include + +#include + +/** An allocator class for use as a template parameter to one of the + * container class (FbxMap, FbxSet, FbxDynamicArray...) must implement these. + */ +class FBXSDK_DLL FbxBaseAllocator +{ +public: + /** The class constructor. + * \param pRecordSize the size of one record held by the container. + * \remarks The parameter pRecordSize is not necessarily the same + * size as of the value type, since the + * container may wrap the value into a private class. + */ + FbxBaseAllocator(const size_t pRecordSize) : + mRecordSize(pRecordSize) + { + } + + /** This tells the allocator that we are about to call AllocateRecords + * one or many times to allocate pRecordCount records. + * \param pRecordCount + * \remarks This gives the allocator a chance to do whatever it deems necessary + * to optimize subsequent allocations, for example, by preallocating a + * sufficiently large pool of memory. + */ + void Reserve(const size_t /*pRecordCount*/) + { + // By default, ignore all preallocating requests. + } + + /** Returns a pointer to a uninitialized continuous block of memory + * able to hold pRecordCount * pRecordSize bytes. + * \param pRecordCount + * \remarks pRecordSize was defined in the Constructor description, above. + */ + void* AllocateRecords(const size_t pRecordCount=1) + { + return FbxMalloc(pRecordCount * mRecordSize); + } + + /** Frees a block of memory returned by AllocateRecords. + * \param pRecord + */ + void FreeMemory(void* pRecord) + { + FbxFree(pRecord); + } + + /** \return the size of each record allocated. + */ + size_t GetRecordSize() const + { + return mRecordSize; + } + +private: + size_t mRecordSize; +}; + +/** This allocator only frees the allocated memory when it is deleted. + * This is a good allocator for building dictionaries, where we only + * add things to a container, but never remove them. + */ +class FbxHungryAllocator +{ +public: + FbxHungryAllocator(size_t pRecordSize) : + mRecordSize(pRecordSize), + mRecordPoolSize(0), + mData(NULL) + { + } + + FbxHungryAllocator(const FbxHungryAllocator& pOther) : + mRecordSize(pOther.mRecordSize), + mRecordPoolSize(pOther.mRecordPoolSize), + mData(NULL) + { + } + + ~FbxHungryAllocator() + { + MemoryBlock* lCurrent = mData; + MemoryBlock* lNext = lCurrent ? lCurrent->mNextBlock : 0; + while (lCurrent) + { + FbxDelete(lCurrent); + lCurrent = lNext; + lNext = lCurrent ? lCurrent->mNextBlock : 0; + } + } + + void Reserve(const size_t pRecordCount) + { + MemoryBlock* lMem = FbxNew< MemoryBlock >(pRecordCount* mRecordSize); + lMem->mNextBlock = mData; + mData = lMem; + mRecordPoolSize += pRecordCount; + } + + void* AllocateRecords(const size_t pRecordCount = 1) + { + MemoryBlock* lBlock = mData; + void* lRecord = NULL; + + while( (lBlock != NULL) && ((lRecord = lBlock->GetChunk(pRecordCount * mRecordSize)) == NULL) ) + { + lBlock = lBlock->mNextBlock; + } + + if( lRecord == NULL ) + { + size_t lNumRecordToAllocate = mRecordPoolSize / 8 == 0 ? 2 : mRecordPoolSize / 8; + if( lNumRecordToAllocate < pRecordCount ) + { + lNumRecordToAllocate = pRecordCount; + } + Reserve(lNumRecordToAllocate); + lRecord = AllocateRecords(pRecordCount); + } + return lRecord; + } + + void FreeMemory(void* /*pRecord*/) + { + // "Hungry": release memory only when the allocator is destroyed. + } + + size_t GetRecordSize() const + { + return mRecordSize; + } + + FbxHungryAllocator& operator=(const FbxHungryAllocator& pOther) + { + if( this != &pOther ) + { + // The next call to AllocateRecords() may skip over currently reserved + // records if the size changes drastically, but otherwise GetChunk() + // is size-oblivious. + if( mRecordSize < pOther.mRecordSize ) + { + mRecordPoolSize = 0; + } + + mRecordSize = pOther.mRecordSize; + } + return(*this); + } + +private: + class MemoryBlock + { + public: + MemoryBlock(size_t pSize) : + mNextBlock(NULL), + mData(NULL), + mFreeData(NULL), + mEnd(NULL) + { + mData = FbxMalloc(pSize); + mFreeData = mData; + mEnd = reinterpret_cast(mData) + pSize; + } + + ~MemoryBlock() + { + FbxFree(mData); + } + + void* GetChunk(const size_t pSize) + { + if( reinterpret_cast(mFreeData) + pSize < mEnd ) + { + void* lChunk = mFreeData; + mFreeData = reinterpret_cast(mFreeData) + pSize; + return lChunk; + } + return NULL; + } + + MemoryBlock* mNextBlock; + void* mData; + void* mFreeData; + void* mEnd; + }; + + size_t mRecordSize; + size_t mRecordPoolSize; + MemoryBlock* mData; +}; + +#include + +#endif /* _FBXSDK_CORE_BASE_CONTAINER_ALLOCATORS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxdynamicarray.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxdynamicarray.h new file mode 100644 index 00000000..edaa45f3 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxdynamicarray.h @@ -0,0 +1,324 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxdynamicarray.h +#ifndef _FBXSDK_CORE_BASE_DYNAMICARRAY_H_ +#define _FBXSDK_CORE_BASE_DYNAMICARRAY_H_ + +#include + +#include + +#include + +/** Template class for dynamic array holding objects. + * \nosubgrouping + * \see FbxStaticArray + */ +template class FbxDynamicArray +{ +public: + //! Default constructor. + FbxDynamicArray() : + mArray(NULL), + mCapacity(0), + mSize(0), + mAllocator(sizeof(Type)) + { + } + + /** Constructor. + * \param pInitialSize initial capacity of this array */ + FbxDynamicArray(const size_t pInitialSize) : + mArray(NULL), + mCapacity(0), + mSize(0), + mAllocator(sizeof(Type)) + { + Reserve(pInitialSize); + } + + /** Copy constructor. + * \remarks The copy constructor of \c Type will be + * invoked in order to copy the value of elements to the + * new array. + */ + FbxDynamicArray(const FbxDynamicArray& pArray) : + mArray(NULL), + mCapacity(0), + mSize(0), + mAllocator(sizeof(Type)) + { + Reserve(pArray.mCapacity); + CopyArray(mArray, pArray.mArray, pArray.mSize); + mSize = pArray.mSize; + } + + //! Destructor. + ~FbxDynamicArray() + { + for( size_t i = 0; i < mSize; ++i ) + { + mArray[i].~Type(); + } + mAllocator.FreeMemory(mArray); + } + + //! Gets the current capacity of the array. + size_t Capacity() const + { + return mCapacity; + } + + //! Gets the size of the array. + size_t Size() const + { + return mSize; + } + + /** Assures that sufficient memory is allocated to hold n objects in the array, and increases the capacity if necessary. + * \param pCount Number of objects to reserve */ + void Reserve(const size_t pCount) + { + if( pCount > mCapacity ) + { + //We don't use mAllocator.PreAllocate, because we want our array to be continuous in memory. + Type* lNewArray = (Type*)mAllocator.AllocateRecords(pCount); + MoveArray(lNewArray, mArray, mSize); + mAllocator.FreeMemory(mArray); + mArray = lNewArray; + mCapacity = pCount; + } + } + + /** Appends n objects at the end of the array. + * \param pItem object to append + * \param pNCopies number of copies to append */ + void PushBack(const Type& pItem, const size_t pNCopies = 1) + { + if( mSize + pNCopies > mCapacity ) + { + size_t lNewSize = mCapacity + mCapacity / 2; //grow by 50% + if( mSize + pNCopies > lNewSize ) + { + lNewSize = mSize + pNCopies; + } + Reserve(lNewSize); + } + FBX_ASSERT(mSize + pNCopies <= mCapacity); + Fill(mArray + mSize, pItem, pNCopies); + mSize += pNCopies; + } + + /** Inserts n objects at the specified position. + * \param pIndex position index + * \param pItem object to insert + * \param pNCopies number of copies to append */ + void Insert(const size_t pIndex, const Type& pItem, const size_t pNCopies=1) + { + FBX_ASSERT(pIndex >= 0); + FBX_ASSERT(pIndex <= mSize); + Type lValue = pItem; // in case pItem is in array + if( pNCopies == 0 ) + { + } + else if( pIndex >= mSize ) + { + PushBack(pItem, pNCopies); + } + else if( mSize + pNCopies > mCapacity ) + { + size_t lNewSize = mCapacity + mCapacity / 2; //not enough room, grow by 50% + if( mSize + pNCopies > lNewSize ) + { + lNewSize = mSize + pNCopies; + } + + Type* lNewArray = (Type*)mAllocator.AllocateRecords(lNewSize); + MoveArray(lNewArray, mArray, pIndex); // copy prefix + Fill(lNewArray + pIndex, pItem, pNCopies); // copy values + MoveArray(lNewArray + pIndex + pNCopies, mArray + pIndex, mSize - pIndex); // copy suffix + mAllocator.FreeMemory(mArray); + mArray = lNewArray; + mSize += pNCopies; + mCapacity = lNewSize; + } + else + { + // copy suffix backwards + MoveArrayBackwards(mArray + pIndex + pNCopies, mArray + pIndex, mSize - pIndex); + Fill(mArray + pIndex, pItem, pNCopies); // copy values + mSize += pNCopies; + } + } + + /** Removes n objects at the end. + * \param pNElements number of objects to remove */ + void PopBack(size_t pNElements=1) + { + FBX_ASSERT(pNElements <= mSize); + for( size_t i = mSize - pNElements; i < mSize; ++i ) + { + mArray[i].~Type(); + } + mSize -= pNElements; + } + + /** Removes n objects at the specified position. + * \param pIndex position index + * \param pNElements number of objects to remove */ + void Remove(const size_t pIndex, size_t pNElements=1) + { + FBX_ASSERT(pIndex >= 0); + FBX_ASSERT(pIndex <= mSize); + FBX_ASSERT(pIndex + pNElements <= mSize); + if( pIndex + pNElements >= mSize ) + { + PopBack(pNElements); + } + else + { + for( size_t i = pIndex; i < pIndex + pNElements; ++i ) + { + mArray[i].~Type(); + } + MoveOverlappingArray(&mArray[pIndex], &mArray[pIndex + pNElements], mSize - pIndex - pNElements); + mSize -= pNElements; + } + } + + /** Gets nth object in the array. + * \param pIndex position index */ + Type& operator[](const size_t pIndex) + { + return mArray[pIndex]; + } + + /** Gets nth object in the array. + * \param pIndex position index */ + const Type& operator[](const size_t pIndex) const + { + return mArray[pIndex]; + } + + /** Retrieve the first item in the array. + * \return The first item in the array. */ + Type& First() + { + return operator[](0); + } + + /** Retrieve the first item in the array. + * \return The first item in the array. */ + const Type& First() const + { + return operator[](0); + } + + /** Retrieve the last item in the array. + * \return The last item in the array. */ + Type& Last() + { + return operator[](mSize-1); + } + + /** Retrieve the last item in the array. + * \return The last item in the array. */ + const Type& Last() const + { + return operator[](mSize-1); + } + + /** Find first matching element, from first to last. + * \param pItem The item to try to find in the array. + * \param pStartIndex The index to start searching from. + * \return Index of the first matching item, otherwise returns -1 (equivalent of SIZE_MAX for size_t). */ + size_t Find(const Type& pItem, const size_t pStartIndex=0) const + { + for( size_t i = pStartIndex; i < mSize; ++i ) + { + if( operator[](i) == pItem ) return i; + } + return -1; + } + + /** Assignment operator. + * \remarks The copy constructor of \c Type will be invoked in order to copy the value of elements to the new array. */ + FbxDynamicArray& operator=(const FbxDynamicArray& pArray) + { + Reserve(pArray.mCapacity); + CopyArray(mArray, pArray.mArray, pArray.mSize); + mSize = pArray.mSize; + return *this; + } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + static void CopyArray(Type* pDest, const Type* pSrc, size_t pCount) + { + for( int i = 0; i < int(pCount); i++ ) + { + new(&(pDest[i])) Type(pSrc[i]); //in-place new won't allocate memory, so it is safe + } + } + + static void MoveArray(Type* pDest, const Type* pSrc, size_t pCount) + { + for( int i = 0; i < int(pCount); i++ ) + { + new(&(pDest[i])) Type(pSrc[i]); //in-place new won't allocate memory, so it is safe + } + + for( int i = 0; i < int(pCount); i++ ) + { + pSrc[i].~Type(); + } + } + + static void MoveOverlappingArray(Type* pDest, const Type* pSrc, size_t pCount) + { + for( int i = 0; i < int(pCount); i++ ) + { + new(&(pDest[i])) Type(pSrc[i]); //in-place new won't allocate memory, so it is safe + pSrc[i].~Type(); + } + } + + static void MoveArrayBackwards(Type* pDest, const Type* pSrc, size_t pCount) + { + for( int i = 0; i < int(pCount); ++i ) + { + new(&(pDest[pCount-1-i])) Type(pSrc[pCount-1-i]); //in-place new won't allocate memory, so it is safe + pSrc[pCount-1-i].~Type(); + } + } + + static void Fill(Type* pDest, const Type& pItem, size_t pCount) + { + for( int i = 0; i < int(pCount); i++ ) + { + new(&(pDest[i])) Type(pItem); //in-place new won't allocate memory, so it is safe + } + } + + Type* mArray; + size_t mCapacity; + size_t mSize; + Allocator mAllocator; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_CORE_BASE_DYNAMICARRAY_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxfile.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxfile.h new file mode 100644 index 00000000..6a808345 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxfile.h @@ -0,0 +1,257 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxfile.h +#ifndef _FBXSDK_CORE_BASE_FILE_H_ +#define _FBXSDK_CORE_BASE_FILE_H_ + +#include + +#include + +#include + +class FbxStream; + +/** + Class for interfacing with files, providing a similar interface for files independant of the OS or filesystem. +*/ +class FBXSDK_DLL FbxFile +{ +public: + enum EMode {eNone, eReadOnly, eReadWrite, eCreateWriteOnly, eCreateReadWrite, eCreateAppend}; + enum ESeekPos {eBegin, eCurrent, eEnd}; + + FbxFile(); + virtual ~FbxFile(); + + /** Opens a file on disk using the specified read/write mode. + * \param pFileName_UTF8 Filename in UTF8 (compatible with ASCII) + * \param pMode Mode in which to open the file, e.g. eReadOnly, eCreateReadWrite, etc. + * \param pBinary Whether the file is to be opened in binary or text mode. + * \return True if opening is successful. + */ + virtual bool Open(const char* pFileName_UTF8, const EMode pMode=eCreateReadWrite, const bool pBinary=true); + + /** Opens a file from a data stream using the specified read/write mode. + * \param pStream Stream instance with which the file will be read/written + * \param pStreamData User-defined data to pass as a parameter to the stream's Open() method. + * \param pMode Deprecated/Unused. + * \return True if opening is successful. + */ + virtual bool Open(FbxStream* pStream, void* pStreamData, const char* pMode); + + /** Closes a file, freeing its handle. + * \return True if closing is successful. + */ + virtual bool Close(); + + /** Seek to a specific position in the file, starting from either beginning, current position or end + * \param pOffset Offset to seek to (advance the file position cursor) starting from pSeekPos + * \param pSeekPos Starting position from which to seek to. Beginning, current position or end. + */ + virtual void Seek(const FbxInt64 pOffset, const ESeekPos pSeekPos=eBegin); + + /** Returns the position at which the file cursor currently is. For example, will be ==0 for beginning and ==FileSize for end. + * \return The position at which the file cursor currently is. + */ + virtual FbxInt64 Tell() const; + + /** Read a part of the file into a buffer + * \param pDstBuf Pre-allocated buffer in which to read data + * \param pSize Size of the data chunk to be read in bytes + * \return Number of bytes read. + */ + virtual size_t Read(void* pDstBuf, const size_t pSize); + + /** Read a part of the file as a string into a buffer + * \param pDstBuf Pre-allocated buffer in which to read the string + * \param pDstSize Size of the data chunk to be read in characters + * \param pStopAtFirstWhiteSpace If true, will stop reading at first white space, otherwise it will stop at the first line feed (\n) + * \return Pointer on the data read. Equivalent to parameter pDstBuf + */ + virtual char* ReadString(char* pDstBuf, const size_t pDstSize, bool pStopAtFirstWhiteSpace=false); + + /** Write a buffer to an opened file + * \param pSrcBuf Pre-allocated buffer from which to write data + * \param pSize Size of the data chunk to be written in bytes + * \return Number of bytes written. + */ + virtual size_t Write(const void* pSrcBuf, const size_t pSize); + + /** Write a formatted string to an opened file + * \param pFormat Pre-allocated format buffer from which to write data + * \param ... Variable number of arguments describing the values in the previous parameter. + * \return True if data was successfully written + */ + virtual bool WriteFormat(const char* pFormat, ...); + + /** Modify the size of a file. Null characters ('\0') are appended if the file is extended. + * If the file is truncated, all data from the end of the shortened file to the original length of the file is lost. + * Please note that this function considers the current file cursor as the beginning of the file. + * It is therefore required to use Seek(0) prior to calling it if we want the size specified by the + * pSize parameter to be absolute. + * \param pSize New desired file size + * \return True if file was successfully truncated + */ + virtual bool Truncate(const FbxInt64 pSize); + + /** Checks whether the current file cursor position is at the end of file. + * \return True if the cursor is at the end of file, false otherwise. + */ + virtual bool EndOfFile() const; + + /** Gets the size of the currently opened file. + * \return File size + */ + virtual FbxInt64 GetSize(); + + /** Unused function in this default implementation. Must be implemented by memory files. + * \param pMemPtr Unused + * \param pSize Unused + */ + virtual void GetMemoryFileInfo(void** pMemPtr, size_t pSize); + + /** Checks whether the file is currently opened. + * \return True if file is opened, false otherwise + */ + bool IsOpen() const; + + /** Checks whether the file is currently opened with a user-provided streaming interface instead of just the file name + * \return True if file has been opened with a stream interface, false otherwise + */ + bool IsStream() const; + + /** Returns the full file path name, as provided when opening it. + * \return File full path + */ + const char* GetFilePathName() const; + + /** Returns the mode with which the file was opened, when calling the Open() method. + * \return Mode with which the file was opened + */ + EMode GetFileMode() const; + + /** Returns last encountered error when performing any operation on the file. + * \return Last error code + */ + int GetLastError(); + + /** Resets the current error code and the end of file indicator of the opened file + */ + void ClearError(); + +protected: + FILE* mFilePtr; + FbxStream* mStreamPtr; + bool mIsOpen; + bool mIsStream; + EMode mMode; + FbxString mFileName; +}; + +class FBXSDK_DLL FbxFileUtils +{ +public: + /** Delete a file from disk. + * \param pFileName_UTF8 The file to be deleted. + * \return True if delete is successful. + */ + static bool Delete(const char* pFileName_UTF8); + + /** Rename a file on disk. + * \param pFileName_UTF8 The file to be renamed. + * \param pNewName_UTF8 The new file name upon rename. + * \return True if rename is successful. + */ + static bool Rename(const char* pFileName_UTF8, const char* pNewName_UTF8); + + /** Copy one file's content to another file (if the destination file not exist, it will be created). + * \param pDestination_UTF8 The destination file path + * \param pSource_UTF8 The source file path + * \return Return true if copy is successfully. + */ + static bool Copy(const char* pDestination_UTF8, const char* pSource_UTF8); + + //! Get given file's size. + static FbxInt64 Size(const char* pFilePath_UTF8); + + /** Find if the specified file exist. + * \param pFilePath_UTF8 The file path to test against. + * \return Returns true if the file exist. + */ + static bool Exist(const char* pFilePath_UTF8); + + /** Find if the specified file is in read-only mode. + * \param pFilePath_UTF8 The file path to test against. + * \return Returns true if the file is in read-only mode. + */ + static bool IsReadOnly(const char* pFilePath_UTF8); + + // We return a KLong that in fact is a cast of a time_t. + //! Get given file's last date. + static FbxLong GetLastDate(const char* pPath_UTF8); + + //! Set the given file's last date as the given date. + static bool SetLastDate(const char* pPath_UTF8, FbxLong pTime); + + /** Get some content of a file. + * \param pStr The content get from file. + * \param pSize The size of content. + * \param pStream The opened stream of file. + */ + static char* FGets(char* pStr, int pSize, FILE* pStream); +}; + +template inline const T FbxSwab(const T x) +{ + switch( sizeof(x) ) + { + case 2: + { + FbxUInt8 t[2]; + t[0] = ((FbxUInt8*)&x)[1]; + t[1] = ((FbxUInt8*)&x)[0]; + return *(T*)&t; + } + + case 4: + { + FbxUInt8 t[4]; + t[0] = ((FbxUInt8*)&x)[3]; + t[1] = ((FbxUInt8*)&x)[2]; + t[2] = ((FbxUInt8*)&x)[1]; + t[3] = ((FbxUInt8*)&x)[0]; + return *(T*)&t; + } + + case 8: + { + FbxUInt8 t[8]; + t[0] = ((FbxUInt8*)&x)[7]; + t[1] = ((FbxUInt8*)&x)[6]; + t[2] = ((FbxUInt8*)&x)[5]; + t[3] = ((FbxUInt8*)&x)[4]; + t[4] = ((FbxUInt8*)&x)[3]; + t[5] = ((FbxUInt8*)&x)[2]; + t[6] = ((FbxUInt8*)&x)[1]; + t[7] = ((FbxUInt8*)&x)[0]; + return *(T*)&t; + } + + default: + return x; + } +} + +#include + +#endif /* _FBXSDK_CORE_BASE_FILE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxfolder.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxfolder.h new file mode 100644 index 00000000..b9af90f9 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxfolder.h @@ -0,0 +1,80 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxfolder.h +#ifndef _FBXSDK_CORE_BASE_FOLDER_H_ +#define _FBXSDK_CORE_BASE_FOLDER_H_ + +#include + +#ifndef FBXSDK_ENV_WINSTORE + +#include + +#include + +/** Class for iterating into file system folders and the items contained. */ +class FBXSDK_DLL FbxFolder +{ +public: + //! The different entry type that can be found in folders. + enum EEntryType + { + eRegularEntry, //!< Regular entry, such as file. + eFolderEntry //!< Folder entry that potentially contain more files. + }; + + /** Open the specified folder for browsing its content. + * \param pFolderPath_UTF8 The folder path to open. + * \return True if the folder path was successfully open, false otherwise. */ + bool Open(const char* pFolderPath_UTF8); + + /** Get the next item in the folder. + * \return True if another item was found after the current one. */ + bool Next(); + + /** Get the type of the current entry in the folder. + * \return The entry type. */ + EEntryType GetEntryType() const; + + /** Retrieve the name of the current entry in the folder. + * \return The name of the current entry. */ + FbxString GetEntryName() const; + + /** Retrieve the extension name of the current entry. + * \return The extension name of the current entry. */ + char* GetEntryExtension() const; + + /** Close the folder when done browsing its content. */ + void Close(); + + /** Find out if the folder was successfully opened the last time Open was called. + * \return True if the folder is currently open. */ + bool IsOpen() const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxFolder(); + ~FbxFolder(); + +private: + struct FolderImpl; + FolderImpl* mImpl; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* !FBXSDK_ENV_WINSTORE */ + +#endif /* _FBXSDK_CORE_BASE_FOLDER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxhashmap.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxhashmap.h new file mode 100644 index 00000000..1cefa6f7 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxhashmap.h @@ -0,0 +1,411 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxhashmap.h +#ifndef _FBXSDK_CORE_BASE_HASHMAP_H_ +#define _FBXSDK_CORE_BASE_HASHMAP_H_ + +#include + +#include +#include + +#include + +template class FbxNoOpDestruct { public: static inline void DoIt(T&) {} }; +template class FbxPtrDestruct { public: static inline void DoIt(T& v) { FbxDelete(v); v = NULL; } }; + +//True if equal, false otherwise +template class FbxDefaultComparator{ public: static inline bool CompareIt( const T& t1, const T& t2 ) { return t1 == t2; } }; + +/** \brief This object represents a standard hash map. You must provide the typename of KEY and VALUE as well + as the typename of the class that contains the hash function to use to hash values. The hash class must + overload operator() and be built like this. + \code + class SimpleHash + { + public: + inline unsigned int operator() ( const int pKey ) const + { + return pKey; + } + }; + \endcode + * \nosubgrouping + */ +template< typename KEY, typename VALUE, typename HASH, class Destruct = FbxNoOpDestruct, class Comparator = FbxDefaultComparator > +class FbxHashMap +{ +public: + typedef KEY KeyType; + typedef VALUE ValueType; + typedef HASH HashFunctorType; + +private: + + class ListItem + { + public: + ListItem* mNext; + ValueType mValue; + KeyType mKey; + + ListItem() + : + mNext(NULL) + { + } + + ~ListItem() + { + Destruct::DoIt(mValue); + } + }; + +public: + /** + Iterate through every element in a hash map. + */ + class Iterator + { + public: + + typedef ListItem ListItemType; + typedef FbxPair< KeyType, ValueType > KeyValuePair; + + /** + Copy constructor + */ + Iterator( const Iterator& pOther ) + : + mMap( pOther.mMap ), + mBucketIndex( pOther.mBucketIndex ), + mCurrentItem( pOther.mCurrentItem ) + { + + } + + /** + Destructor + */ + ~Iterator(){}; + + /** + Used to dereference an iterator and give it a behavior more similar to a pointer. + \return The KeyValuePair currently referenced by the iterator + */ + KeyValuePair operator*() const + { + KeyValuePair lItem; + + if( mCurrentItem ) + { + lItem.mFirst = mCurrentItem->mKey; + lItem.mSecond = mCurrentItem->mValue; + return lItem; + } + + FBX_ASSERT_NOW("Accessing out of bounds iterator"); + + return lItem; + } + + /** + Advances the iterator to the next keyvaluepair in the hashmap. It does not wrap around so + advancing after reaching the last element will not point back to the first one. + */ + void Next() + { + if( !mCurrentItem ) + return; + + if( mCurrentItem->mNext ) + { + mCurrentItem = mCurrentItem->mNext; + return; + } + else + { + mBucketIndex++; + for( ; mBucketIndex < mMap->mBuckets.GetCount(); ++mBucketIndex ) + { + if( mMap->mBuckets[ mBucketIndex ] ) + { + mCurrentItem = mMap->mBuckets[ mBucketIndex ]; + return; + } + } + + if( mBucketIndex >= mMap->mBuckets.GetCount() ) + { + *this = mMap->End(); + return; + } + } + } + + /** + Check equivalence between two iterators. There are 3 conditions for equivalence between 2 iterators: + 1) Item being referenced by the iterator must be equivalent + 2) They must point at the same index + 3) They must point on the same map + \return true if both iterators are equal, false otherwise + */ + bool operator==( const Iterator& pOther ) const + { + return mCurrentItem == pOther.mCurrentItem && + mBucketIndex == pOther.mBucketIndex && + mMap == pOther.mMap; + } + + /** + Check inequivalence between 2 iterators. Please see operator== for more information. + \return true if both iterators are NOT equal, false if they are + */ + bool operator!=( const Iterator& pOther ) const + { + return !(*this == pOther); + } + + /** + Assign the current iterator to the one on the right hand side of the operator. After assignment they will + reference the same object, at the same index, in the same map. + \return The new iterator + */ + Iterator& operator=( const Iterator& pOther ) + { + this->mBucketIndex = pOther.mBucketIndex; + this->mMap = pOther.mMap; + this->mCurrentItem = pOther.mCurrentItem; + return *this; + } + + private: + const FbxHashMap* mMap; + + int mBucketIndex; + ListItemType* mCurrentItem; + + Iterator(const FbxHashMap* pMap, int pBucketIndex, ListItemType* pCurrentItem) + : + mMap( pMap ), + mBucketIndex(pBucketIndex), + mCurrentItem(pCurrentItem) + { + + } + + friend class FbxHashMap; + }; + + /** + Construct a FbxHashMap with an user-defined maximum number of elements. + \param pBucketSize Initial maximum number of elements. + */ + FbxHashMap( int pBucketSize ) + { + mBuckets.Resize( pBucketSize ); + } + + /** + Construct a FbxHashMap with the default maximum number of elements (30) + */ + FbxHashMap() + { + mBuckets.Resize(30); + } + + /** + Clear all elements in the hash map before destroying itself + */ + ~FbxHashMap() + { + Clear(); + mBuckets.Clear(); + } + + /** + Calls operator delete on all elements of the hashmap, de-allocating all memory and destroying them + */ + void Clear() + { + for( int i = 0; i < mBuckets.GetCount(); ++i) + { + if( mBuckets[i] ) + { + ListItem* lNext = mBuckets[i]->mNext; + while( lNext ) + { + ListItem* lNextNext = lNext->mNext; + FbxDelete(lNext); + lNext = lNextNext; + } + + FbxDelete(mBuckets[i]); + mBuckets[i] = NULL; + } + } + } + + /** + Find an element in the hashmap. If no element exist with the specified key, returns an iterator pointing on the + end of the map (not an actual KeyValuePair). + \param pKey The value of the key corresponding to the element + \return An Iterator referencing that element + */ + const Iterator Find( const KeyType& pKey ) const + { + unsigned int lIndex = mHashFunctor(pKey); + lIndex = lIndex % mBuckets.GetCount(); + ListItem* lItem = mBuckets[lIndex]; + while( lItem ) + { + if( Comparator::CompareIt( lItem->mKey, pKey ) ) + { + Iterator lIt( this, lIndex, lItem ); + return lIt; + } + lItem = lItem->mNext; + } + + return End(); + } + + /** + Remove an element in the hashmap. + \param pKey The key value of the element to remove + \return The value of the element that was just deleted. If the element does not exist, a value created with its default constructor will be returned + */ + VALUE Remove( const KEY& pKey ) + { + unsigned int lIndex = mHashFunctor(pKey); + lIndex = lIndex % mBuckets.GetCount(); + ListItem* lItem = mBuckets.GetAt(lIndex); + ListItem* lLastItem = NULL; + + while( lItem ) + { + if( lItem->mKey == pKey ) + { + if( lLastItem ) + lLastItem->mNext = lItem->mNext; + + if( mBuckets.GetAt(lIndex) == lItem ) + mBuckets.SetAt(lIndex, lItem->mNext ); + + VALUE lValue = lItem->mValue; + FbxDelete(lItem); + + return lValue; + } + + lLastItem = lItem; + lItem = lItem->mNext; + } + + return VALUE(); + } + + /** Add or retrieve a KeyValuePair from the Hashmap. If there is already an entry in the map for an element + with key value specified in parameter, the value will be returned. Otherwise, a new entry will be created + with this key value and the default value for ValueType will be returned. It can be modified using the + assignment operator + \param pKey The key for which to retrieve/add a value. + \return Value of the element referenced by the key specified in parameter. + */ + ValueType& operator[]( const KeyType& pKey ) + { + unsigned int lIndex = 0; + Iterator lIt = InternalFind( pKey, lIndex); + if( lIt != End() ) + { + return lIt.mCurrentItem->mValue; + } + + lIndex = lIndex % mBuckets.GetCount(); + ListItem* lItem = FbxNew< ListItem >(); + lItem->mNext = NULL; + lItem->mKey = pKey; + + if( !mBuckets.GetAt(lIndex) ) + { + mBuckets.SetAt(lIndex, lItem); + } + else + { + lItem->mNext = mBuckets.GetAt(lIndex); + mBuckets.SetAt(lIndex, lItem); + } + + return lItem->mValue; + } + + /** Returns an iterator pointing on the first non-null element in the map + \return An iterator pointing on the first non-null element in the map. + */ + Iterator Start() const + { + for( int i = 0; i < mBuckets.GetCount(); ++i ) + { + if( mBuckets[i] ) + { + Iterator lIt( this, i, mBuckets[i] ); + return lIt; + } + } + + return End(); + } + + /** Returns an iterator pointing on the last element in the map. This is not an actual KeyValuePair but + * but an iterator pointing on a null element. + \return Iterator pointing on a null value at the end of the map + */ + Iterator End() const + { + Iterator lIt( this, 0, NULL ); + return lIt; + } + +private: + + // Avoid calculating the hashvalue twice + const Iterator InternalFind( const KeyType& pKey, unsigned int& pOutCalculatedIndex ) const + { + pOutCalculatedIndex = mHashFunctor(pKey); + unsigned int lIndex = pOutCalculatedIndex % mBuckets.GetCount(); + ListItem* lItem = mBuckets[lIndex]; + while( lItem ) + { + if( Comparator::CompareIt( lItem->mKey, pKey ) ) + { + Iterator lIt( this, lIndex, lItem ); + return lIt; + } + lItem = lItem->mNext; + } + + return End(); + } + + + // not implemented yet! + FbxHashMap( const FbxHashMap& pOther ) {}; + + FbxArray mBuckets; + HashFunctorType mHashFunctor; + + friend class Iterator; +}; + +#include + +#endif /* _FBXSDK_CORE_BASE_HASHMAP_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxintrusivelist.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxintrusivelist.h new file mode 100644 index 00000000..e001cf7a --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxintrusivelist.h @@ -0,0 +1,262 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxintrusivelist.h +#ifndef _FBXSDK_CORE_BASE_INTRUSIVE_LIST_H_ +#define _FBXSDK_CORE_BASE_INTRUSIVE_LIST_H_ + +#include + +#include + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + +#define FBXSDK_INTRUSIVE_LIST_NODE(Class, NodeCount)\ + public: inline FbxListNode& GetListNode(int index = 0){ return this->mNode[index]; }\ + private: FbxListNode mNode[NodeCount]; + +template class FbxListNode +{ + typedef FbxListNode NodeT; + +public: + explicit FbxListNode(T* pData = 0):mNext(0),mPrev(0),mData(pData){} + ~FbxListNode(){ Disconnect(); } + + void Disconnect() + { + if ( mPrev != 0 ) + mPrev->mNext = mNext; + + if ( mNext != 0 ) + mNext->mPrev = mPrev; + + mPrev = mNext = 0; + } + + NodeT* mNext; + NodeT* mPrev; + T* mData; +}; + +//----------------------------------------------------------------- +// template arg T: Type listed +// arg NodeIndex: If an object listed has multiple list node, which +// index corresponds to the right node +template class FbxIntrusiveList +{ +public: + typedef T allocator_type; + typedef T value_type; + typedef T& reference; + typedef const T& const_reference; + typedef T* pointer; + typedef const T* const_pointer; + + typedef FbxListNode NodeT; + + // Construction / Destruction + FbxIntrusiveList():mHead(0) + { + mHead.mNext = mHead.mPrev = &mHead; + } + ~FbxIntrusiveList() + { + while(!Empty()) + Begin().Get()->Disconnect(); // LINUXNote: should be Erase(Begin()); but there's an issue with gcc 4.2 + }; + + // true if the list's size is 0. + bool Empty() const + { + return ((mHead.mNext==&mHead)&&(mHead.mPrev==&mHead)); + } + + // Back Insertion Sequence Inserts a new element at the end. + void PushBack(T& pElement) + { + NodeT* pNode = &pElement.GetListNode(NodeIndex); + pNode->mData = &pElement; + + if (Empty()) + { + pNode->mNext = &mHead; + pNode->mPrev = &mHead; + mHead.mNext = pNode; + mHead.mPrev = pNode; + } + else + { + pNode->mNext = &mHead; + pNode->mPrev = mHead.mPrev; + + pNode->mPrev->mNext = pNode; + mHead.mPrev = pNode; + } + } + + void PushFront(T& pElement) + { + NodeT* pNode = &pElement.GetListNode(NodeIndex); + pNode->mData = &pElement; + + if (Empty()) + { + pNode->mNext = &mHead; + pNode->mPrev = &mHead; + mHead.mNext = pNode; + mHead.mPrev = pNode; + } + else + { + pNode->mNext = mHead.mNext; + pNode->mPrev = &mHead; + + pNode->mNext->mPrev = pNode; + mHead.mNext = pNode; + } + } + + void PopFront() + { + iterator begin = Begin(); + Erase(begin); + } + + void PopBack() + { + Erase(--(End())); + } + +public: + class IntrusiveListIterator + { + public: + explicit IntrusiveListIterator(NodeT* ptr=0):mPtr(ptr){} + + // pre-increment + IntrusiveListIterator& operator++() + { + mPtr = mPtr->mNext;return (*this); + } + // post-increment + const IntrusiveListIterator operator++(int) + { + IntrusiveListIterator temp = *this; + ++*this; + return (temp); + } + // pre-decrement + IntrusiveListIterator& operator--() + { + mPtr = mPtr->mPrev;return *this; + } + // post-decrement + const IntrusiveListIterator operator--(int) + { + IntrusiveListIterator temp = *this; + --*this; + return (temp); + } + IntrusiveListIterator& operator=(const IntrusiveListIterator &other){mPtr = other.mPtr; return *this;} + + reference operator*() const { return *(mPtr->mData); } + pointer operator->() const { return (&**this); } + bool operator==(const IntrusiveListIterator& other)const{ return mPtr==other.mPtr; } + bool operator!=(const IntrusiveListIterator& other)const{ return !(*this == other); } + + inline NodeT* Get()const { return mPtr; } + + private: + NodeT* mPtr; + }; + + class IntrusiveListConstIterator + { + public: + explicit IntrusiveListConstIterator(const NodeT* ptr=0):mPtr(ptr){} + + // pre-increment + IntrusiveListConstIterator& operator++() + { + mPtr = mPtr->mNext;return (*this); + } + // post-increment + const IntrusiveListConstIterator operator++(int) + { + IntrusiveListConstIterator temp = *this; + ++*this; + return (temp); + } + // pre-decrement + IntrusiveListConstIterator& operator--() + { + mPtr = mPtr->mPrev;return *this; + } + // post-decrement + const IntrusiveListConstIterator operator--(int) + { + IntrusiveListConstIterator temp = *this; + --*this; + return (temp); + } + IntrusiveListConstIterator& operator=(const IntrusiveListConstIterator &other){mPtr = other.mPtr; return *this;} + + const_reference operator*() const { return *(mPtr->mData); } + const_pointer operator->() const { return (&**this); } + bool operator==(const IntrusiveListConstIterator& other)const{ return mPtr==other.mPtr; } + bool operator!=(const IntrusiveListConstIterator& other)const{ return !(*this == other); } + + inline const NodeT* Get()const { return mPtr; } + + private: + mutable const NodeT* mPtr; + }; + + // --- Iterator definitions --- + typedef IntrusiveListIterator iterator; + typedef IntrusiveListConstIterator const_iterator; + + // iterator support + inline iterator Begin() { return iterator(mHead.mNext); } + inline const_iterator Begin() const { return const_iterator(mHead.mNext); } + inline iterator End() { return iterator(&mHead); } + inline const_iterator End() const { return const_iterator(&mHead); } + + // Because there is no real use, for the reverse iterators, + // they have not been implemented. + + reference Front(){return (*Begin());} + const_reference Front() const { return (*Begin()); } + reference Back(){ return (*(--End())); } + const_reference Back() const{ return (*(--End())); } + + iterator& Erase(iterator& it) + { + it.Get()->Disconnect(); + return (++it); + } +private: + NodeT mHead; + + // Not copyable + FbxIntrusiveList(const FbxIntrusiveList&); + FbxIntrusiveList& operator=(const FbxIntrusiveList& Right){return (*this);} +}; + +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ + +#include + +#endif /* _FBXSDK_CORE_BASE_INTRUSIVE_LIST_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxmap.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxmap.h new file mode 100644 index 00000000..2cb07a07 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxmap.h @@ -0,0 +1,408 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxmap.h +#ifndef _FBXSDK_CORE_BASE_MAP_H_ +#define _FBXSDK_CORE_BASE_MAP_H_ + +#include + +#include +#include + +#include + +class FbxObject; + +/** Default compare functor for FbxMap and FbxSet, which assumes operator < is defined. +Here is examples of different compare class implementations: +With Key = int +\code +class IntCompare +{ + inline int operator()(int pKeyA, int pKeyB) const + { + return pKeyA < pKeyB ? -1 : (pKeyA > pKeyB ? 1 : 0); + } +}; +\endcode +With Key = Class +\code +class ClassCompare +{ + inline int operator()(const Class& pKeyA, const Class& pKeyB) const + { + return pKeyA < pKeyB ? -1 : (pKeyA > pKeyB ? 1 : 0); + } +}; +\endcode +With Key = char* +\code +class StrCompare +{ + inline int operator()(const char* pKeyA, const char* pKeyB) const + { + return strcmp(pKeyA, pKeyB); + } +}; +\endcode +*/ +template struct FbxLessCompare +{ + inline int operator()(const Type& pLeft, const Type& pRight) const + { + return (pLeft < pRight) ? -1 : ((pRight < pLeft) ? 1 : 0); + } +}; + +/** This class implements an efficient map based on key comparison, which stores key-value pairs. +It executes insertion, deletion and query operations in O(log(n)) time. */ +template , typename Allocator=FbxBaseAllocator> class FbxMap +{ +protected: + //! This class defines the key-value pairs used by the map. + class KeyValuePair : private FbxPair + { + /***************************************************************************************************************************** + ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** + *****************************************************************************************************************************/ + #ifndef DOXYGEN_SHOULD_SKIP_THIS + public: + typedef const Key KeyType; + typedef const Key ConstKeyType; + typedef Type ValueType; + typedef const Type ConstValueType; + + KeyValuePair(const Key& pFirst, const Type& pSecond) : FbxPair(pFirst, pSecond){} + ConstKeyType& GetKey() const { return this->mFirst; } + KeyType& GetKey(){ return this->mFirst; } + ConstValueType& GetValue() const { return this->mSecond; } + ValueType& GetValue(){ return this->mSecond; } + #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ + }; + + //! Declaration of the storage type used by the map. + typedef FbxRedBlackTree StorageType; + +public: + typedef Type ValueType; + typedef Key KeyType; + typedef typename StorageType::RecordType RecordType; + typedef typename StorageType::IteratorType Iterator; + typedef typename StorageType::ConstIteratorType ConstIterator; + + /** Preallocate memory. + * \param pRecordCount The number of elements. */ + inline void Reserve(unsigned int pRecordCount) + { + mTree.Reserve(pRecordCount); + } + + //! Retrieve the number of key-value pairs it holds. + inline int GetSize() const + { + return mTree.GetSize(); + } + + /** Insert a key-value pair. + * \param pKey The key. + * \param pValue The value. + * \return If the key is already present in the map, returns the existing pair and false; else returns the pointer to the new key-value and true. */ + inline FbxPair Insert(const KeyType& pKey, const ValueType& pValue) + { + return mTree.Insert(KeyValuePair(pKey, pValue)); + } + + /** Delete a key-value pair. + * \param pKey The key. + * \return \c true if success, \c false if key is not found. */ + inline bool Remove(const KeyType& pKey) + { + return mTree.Remove(pKey); + } + + //! Clear the map. + inline void Clear() + { + mTree.Clear(); + } + + //! Query whether the map is empty. + inline bool Empty() const + { + return mTree.Empty(); + } + + //! Retrieve the begin iterator of the map. + Iterator Begin() + { + return Iterator(Minimum()); + } + + //! Retrieve the end iterator of the map. + Iterator End() + { + return Iterator(); + } + + //! Retrieve the begin iterator of the map. + ConstIterator Begin() const + { + return ConstIterator(Minimum()); + } + + //! Retrieve the end iterator of the map. + ConstIterator End() const + { + return ConstIterator(); + } + + /** Query a key. + * \param pKey The key. + * \return A key-value pair if success, NULL if the key is not found. */ + inline const RecordType* Find(const KeyType& pKey) const + { + return mTree.Find(pKey); + } + + /** Query a key. + * \param pKey The key. + * \return A key-value pair if success, NULL if it's not found. */ + inline RecordType* Find(const KeyType& pKey) + { + return mTree.Find(pKey); + } + + /** Find the key-value pair with the smallest key greater than a specified key. + * \param pKey The key. + * \return The found key-value pair. */ + inline const RecordType* UpperBound(const KeyType& pKey) const + { + return mTree.UpperBound(pKey); + } + + /** Find the key-value pair with the smallest key greater than a specified key. + * \param pKey The key. + * \return The found key-value pair. */ + inline RecordType* UpperBound(const KeyType& pKey) + { + return mTree.UpperBound(pKey); + } + + /** Retrieve the reference of the value in the key-value pairs in map. + * \param pKey The key. + * \return The reference of the value. + * \remark If the key is not found, a new key-value pair will be inserted. */ + inline ValueType& operator[](const KeyType& pKey) + { + RecordType* lRecord = Find(pKey); + + if( !lRecord ) + { + lRecord = Insert(pKey, ValueType()).mFirst; + } + + return lRecord->GetValue(); + } + + //! Retrieve the key-value pair which is the minimum key in map. + inline const RecordType* Minimum() const + { + return mTree.Minimum(); + } + + //! Retrieve the key-value pair which is the minimum key in map. + inline RecordType* Minimum() + { + return mTree.Minimum(); + } + + //! Retrieve the key-value pair which is the maximum key in map. + inline const RecordType* Maximum() const + { + return mTree.Maximum(); + } + + //! Retrieve the key-value pair which is the maximum key in map. + inline RecordType* Maximum() + { + return mTree.Maximum(); + } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + inline FbxMap(){} + inline FbxMap(const FbxMap& pMap) : mTree(pMap.mTree){} + inline ~FbxMap(){ Clear(); } + +private: + StorageType mTree; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** A simple map class representing a dictionary-like data structure. +* \nosubgrouping */ +template class FBXSDK_DLL FbxSimpleMap +{ +public: + typedef typename FbxMap::RecordType* Iterator; + + /** Add a key-value pair as an element. + * \param pKey The new key. + * \param pValue The new value. */ + inline void Add(const Key& pKey, const Type& pValue) + { + mMap.Insert(pKey, pValue); + } + + /** Find an element with a given key. + * \param pKey The given key. + * \return The iterator pointing to the found element or NULL if fails. */ + inline Iterator Find(const Key& pKey) const + { + return (Iterator)mMap.Find(pKey); + } + + /** Find an element with a given value. + * \param pValue The given value. + * \return The iterator pointing to the found element or NULL if fails. */ + inline Iterator Find(const Type& pValue) const + { + Iterator lIterator = GetFirst(); + while( lIterator ) + { + if( lIterator->GetValue() == pValue ) + { + return lIterator; + } + lIterator = GetNext(lIterator); + } + return 0; + } + + /** Remove an element from the map. + * \param pIterator The given element. */ + inline void Remove(Iterator pIterator) + { + if( pIterator ) mMap.Remove(pIterator->GetKey()); + } + + /** Get the first element. + * \return The the heading element. */ + inline Iterator GetFirst() const + { + return (Iterator)mMap.Minimum(); + } + + /** Get the next element of a given element. + * \param pIterator The given element. + * \return The next element. */ + inline Iterator GetNext(Iterator pIterator) const + { + return (Iterator)pIterator ? pIterator->Successor() : 0; + } + + //! Remove all of the elements. + inline void Clear() + { + mMap.Clear(); + } + + /** Reserve the space for given number elements. + * \param pSize The given number. */ + inline void Reserve(int pSize) + { + mMap.Reserve(pSize); + } + + /** Query the count of elements in the map. + * \return The count of elements. */ + inline int GetCount() const + { + return mMap.GetSize(); + } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + inline FbxSimpleMap(){} + +private: + FbxMap mMap; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** This class template declare a simple FbxObject map. +* \nosubgrouping */ +template class FBXSDK_DLL FbxObjectMap : public FbxSimpleMap +{ +public: + //! Constructor + inline FbxObjectMap(){} + + /** Get the object contained in an element. + * \param pIterator The given element. + * \return The object. + */ + inline FbxObject* Get(typename FbxSimpleMap::Iterator pIterator) + { + return pIterator ? pIterator->GetValue() : 0; + } +}; + +/** A class that maps strings to objects with a basic string comparator. +* \nosubgrouping */ +class FBXSDK_DLL FbxObjectStringMap : public FbxObjectMap +{ +public: + //! Constructor + inline FbxObjectStringMap(){} +}; + +//! Call FbxFree on each element of the map, and then clear it. +template inline void FbxMapFree(FbxMap& pMap) +{ + for( typename FbxMap::Iterator i = pMap.Begin(); i != pMap.End(); ++i ) + { + FbxFree(i->GetValue()); + } + pMap.Clear(); +} + +//! Call FbxDelete on each element of the map, and then clear it. +template inline void FbxMapDelete(FbxMap& pMap) +{ + for( typename FbxMap::Iterator i = pMap.Begin(); i != pMap.End(); ++i ) + { + FbxDelete(i->GetValue()); + } + pMap.Clear(); +} + +//! Call Destroy on each element of the map, and then clear it. +template inline void FbxMapDestroy(FbxMap& pMap) +{ + for( typename FbxMap::Iterator i = pMap.Begin(); i != pMap.End(); ++i ) + { + i->GetValue()->Destroy(); + } + pMap.Clear(); +} + +template class FbxSimpleMap; +template class FbxObjectMap; + +#include + +#endif /* _FBXSDK_CORE_BASE_MAP_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxmemorypool.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxmemorypool.h new file mode 100644 index 00000000..46656831 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxmemorypool.h @@ -0,0 +1,67 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxmemorypool.h +#ifndef _FBXSDK_CORE_BASE_MEMORY_H_ +#define _FBXSDK_CORE_BASE_MEMORY_H_ + +#include + +#include + +#include + +/** \brief Class to create a simple fixed-size-blocks memory pool to allocate memory dynamically. */ +class FBXSDK_DLL FbxMemoryPool +{ +public: + /** Memory pool constructor. + * \param pBlockSize The size of one memory block. + * \param pBlockCount The count of block that should be pre-allocated. + * \param pResizable Whether memory pool can grow if no block are availalbe upon calling Allocate. + * \param pConcurrent Whether the pool supports concurrent allocation and release operations. + * \remark All memory blocks must be released before the memory pool is destroyed, otherwise a memory leak will occur. */ + FbxMemoryPool(size_t pBlockSize, FbxInt64 pBlockCount=0, bool pResizable=true, bool pConcurrent=true); + + /** Memory pool destructor. Upon destruction, all memory blocks of the pool will be de-allocated. */ + ~FbxMemoryPool(); + + /** Free memory of all memory blocks from this memory pool, also effectively resetting the block count to zero. + * \remark The block size and alignment/resize/concurrent support will remain unchanged. */ + void Reset(); + + /** Allocate or lock a memory block for usage. + * \return An memory block pointer that can be NULL if the memory pool cannot grow in size and no blocks are available. */ + void* Allocate(); + + /** Dispose or unlock a memory block. + * \param pMemBlock A pointer to the memory block to release. This will not free the block's memory, instead simply putting it back in the available stack. */ + void Release(void* pMemBlock); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + void* Pop(); + + FbxInt64 mMaxBlockCount; + FbxAtomic mFreeBlockCount; + void* mFreeBlocksStack; + size_t mBlockSize; + bool mResizable; + bool mSupportConcurrentAccess; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_CORE_BASE_MEMORY_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxmultimap.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxmultimap.h new file mode 100644 index 00000000..a5901ed0 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxmultimap.h @@ -0,0 +1,115 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxmultimap.h +#ifndef _FBXSDK_CORE_BASE_MULTIMAP_H_ +#define _FBXSDK_CORE_BASE_MULTIMAP_H_ + +#include + +#include + +/** Class to manipulate a map that can contain multiple times the same key. +* \nosubgrouping */ +class FBXSDK_DLL FbxMultiMap +{ +public: + struct Pair + { + FbxHandle mKey; + FbxHandle mItem; + }; + + /** If can't find the matching item,append a item at the end of the array. + * If find the matching item ,insert the new item before the matching item. + * \param pKey The value of Key in new item, also is the character for matching. + * \param pItem The value of Item in new item. + * \return If add successfully return true,otherwise return false. + */ + bool Add(FbxHandle pKey, FbxHandle pItem); + + /** Remove the first matching item, whose reference is the same as given. + * \param pKey The given reference. + * \return If remove successfully return true,otherwise return false. + */ + bool Remove(FbxHandle pKey); + + /** Remove all the matching item, whose item is the same as given. + * \param pItem The given item. + * \return If remove successfully return true,otherwise return false. + */ + bool RemoveItem(FbxHandle pItem); + + /** Set first matching item with the given parameter. + * \param pKey The character for matching. + * \param pItem The value of Item that the matching item will be set. + * \return If set successfully return true,otherwise return false. + */ + bool SetItem(FbxHandle pKey, FbxHandle pItem); + + /** Get first matching item with the given parameter. + * \param pKey The character for matching. + * \param pIndex The pointer to the index of the matching item. + * \return The value of Item in the matching item. + * \remarks If there are multiple elements that match the character, the index returned is unspecified. + */ + FbxHandle Get(FbxHandle pKey, int* pIndex=NULL); + + //! Delete the array. + void Clear(); + + /** Get the item of the given index. + * \param pIndex The index for matching. + * \param pKey The pointer to the Key of the matching item. + * \return The value of Item in the matching item. + */ + FbxHandle GetFromIndex(int pIndex, FbxHandle* pKey=NULL); + + /** Remove the item of the given index + * \param pIndex The given index. + * \return If remove successfully return true,otherwise return false. + */ + bool RemoveFromIndex(int pIndex); + + /** Get number of items in the array. + * \return The number of items in the array. */ + int GetCount() const { return mSetCount; } + + /** Swap the value of Key and Item in every item of array, and sort the new array with the value of Key. */ + void Swap(); + + /** Sort the array according the value of Key in each item. */ + void Sort(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxMultiMap(int pItemPerBlock=20); + FbxMultiMap(const FbxMultiMap& pOther); + ~FbxMultiMap(); + + FbxMultiMap& operator=(const FbxMultiMap&); + +private: + Pair* FindEqual(FbxHandle pKey) const; + + Pair* mSetArray; + int mSetCount; + int mBlockCount; + int mItemPerBlock; + bool mIsChanged; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_CORE_BASE_MULTIMAP_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxpair.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxpair.h new file mode 100644 index 00000000..b1cebfb1 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxpair.h @@ -0,0 +1,62 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxpair.h +#ifndef _FBXSDK_CORE_BASE_PAIR_H_ +#define _FBXSDK_CORE_BASE_PAIR_H_ + +#include + +#include + +/** This class template holds a pair of objects. +* \nosubgrouping */ +template class FbxPair +{ +public: + //! Constructor. + inline FbxPair() : mFirst(), mSecond() {} + + /** Constructor. + * \param pFirst The first object. + * \param pSecond The second object. */ + inline FbxPair(const First& pFirst, const Second& pSecond) : mFirst(pFirst), mSecond(pSecond) {} + + /** Assignment operator. + * \param pOther The pair to be copied. */ + inline FbxPair& operator=(const FbxPair& pOther) + { + mFirst = pOther.mFirst; + mSecond = pOther.mSecond; + return *this; + } + + /** Comparison operator. + * \param pOther The pair to be compared. */ + inline bool operator==(const FbxPair& pOther) + { + return mFirst == pOther.mFirst && mSecond == pOther.mSecond; + } + + /** Inverse comparison operator. + * \param pOther The pair to be compared. */ + inline bool operator!=(const FbxPair& pOther) + { + return !operator==(pOther); + } + + First mFirst; //!< The first object in the pair. + Second mSecond; //!< The second object in the pair. +}; + +#include + +#endif /* _FBXSDK_CORE_BASE_PAIR_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxredblacktree.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxredblacktree.h new file mode 100644 index 00000000..40ea509d --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxredblacktree.h @@ -0,0 +1,1398 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxredblacktree.h +#ifndef _FBXSDK_CORE_BASE_REDBLACKTREE_H_ +#define _FBXSDK_CORE_BASE_REDBLACKTREE_H_ + +#include + +#include +#include + +#include + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + +template class FbxRedBlackConstIterator; + +template class FbxRedBlackIterator +{ +public: + FbxRedBlackIterator() : mRecord(0) {} + FbxRedBlackIterator(RecordType* pRecord) : mRecord(pRecord) {} + FbxRedBlackIterator(const FbxRedBlackIterator& pV) : mRecord(pV.mRecord) {} + + FbxRedBlackIterator& operator++() + { + FBX_ASSERT( mRecord != NULL ); + mRecord = mRecord->Successor(); + return *this; + } + + const FbxRedBlackIterator operator++(int) + { + FbxRedBlackIterator t(*this); + operator++(); + return t; + } + + FbxRedBlackIterator& operator+=(int pCount) + { + FBX_ASSERT( mRecord != NULL ); + for( int i = 0; i < pCount; ++i ) + { + if( !mRecord ) break; + mRecord = mRecord->Successor(); + } + return *this; + } + + FbxRedBlackIterator& operator--() + { + FBX_ASSERT( mRecord ); + mRecord = mRecord->Predecessor(); + return *this; + } + + const FbxRedBlackIterator operator--(int) + { + FbxRedBlackIterator t(*this); + operator--(); + return t; + } + + FbxRedBlackIterator& operator-=(int pCount) + { + FBX_ASSERT( mRecord != NULL ); + for( int i = 0; i < pCount; ++i ) + { + if( !mRecord ) break; + mRecord = mRecord->Predecessor(); + } + return *this; + } + + const RecordType& operator*() const + { + FBX_ASSERT( mRecord ); + + return *mRecord; + } + + RecordType& operator*() + { + FBX_ASSERT( mRecord ); + + return *mRecord; + } + + const RecordType* operator->() const + { + FBX_ASSERT( mRecord ); + + return mRecord; + } + + RecordType* operator->() + { + FBX_ASSERT( mRecord ); + + return mRecord; + } + + inline bool operator==(const FbxRedBlackIterator& pOther) const + { + return mRecord == pOther.mRecord; + } + + inline bool operator !=(const FbxRedBlackIterator& pOther) const + { + return mRecord != pOther.mRecord; + } + +protected: + RecordType* mRecord; + + friend class FbxRedBlackConstIterator; +}; + +template class FbxRedBlackConstIterator +{ +public: + FbxRedBlackConstIterator() : mRecord(0) {} + FbxRedBlackConstIterator(const RecordType* pRecord) : mRecord(pRecord) {} + FbxRedBlackConstIterator(const FbxRedBlackIterator& pV) : mRecord(pV.mRecord) {} + FbxRedBlackConstIterator(const FbxRedBlackConstIterator& pV) : mRecord(pV.mRecord) {} + + FbxRedBlackConstIterator & operator++() + { + FBX_ASSERT( mRecord != NULL ); + mRecord = mRecord->Successor(); + return *this; + } + + const FbxRedBlackConstIterator operator++(int) + { + FbxRedBlackConstIterator t(*this); + operator++(); + return t; + } + + FbxRedBlackConstIterator& operator+=(int pCount) + { + FBX_ASSERT( mRecord != NULL ); + for( int i = 0; i < pCount; ++i ) + { + if( !mRecord ) break; + mRecord = mRecord->Successor(); + } + return *this; + } + + FbxRedBlackConstIterator & operator--() + { + FBX_ASSERT( mRecord ); + mRecord = mRecord->Predecessor(); + return *this; + } + + const FbxRedBlackConstIterator operator--(int) + { + FbxRedBlackConstIterator t(*this); + operator--(); + return t; + } + + FbxRedBlackConstIterator& operator-=(int pCount) + { + FBX_ASSERT( mRecord != NULL ); + for( int i = 0; i < pCount; ++i ) + { + if( !mRecord ) break; + mRecord = mRecord->Predecessor(); + } + return *this; + } + + const RecordType& operator*() const + { + FBX_ASSERT( mRecord ); + + return *mRecord; + } + + const RecordType& operator*() + { + FBX_ASSERT( mRecord ); + + return *mRecord; + } + + const RecordType* operator->() const + { + FBX_ASSERT( mRecord ); + + return mRecord; + } + + const RecordType* operator->() + { + FBX_ASSERT( mRecord ); + + return mRecord; + } + + inline bool operator==(const FbxRedBlackConstIterator& pOther) const + { + return mRecord == pOther.mRecord; + } + + inline bool operator !=(const FbxRedBlackConstIterator& pOther) const + { + return mRecord != pOther.mRecord; + } + +protected: + const RecordType* mRecord; + + friend class FbxRedBlackIterator; +}; + +//! Implements an efficient ordered data storage. +template class FbxRedBlackTree +{ +public: + typedef Type DataType; + typedef typename Type::KeyType KeyType; + typedef typename Type::ConstKeyType ConstKeyType; + typedef typename Type::ValueType ValueType; + typedef typename Type::ConstValueType ConstValueType; + typedef Allocator AllocatorType; + + /** + This class represents a node in the tree. It contains the key, + the value, and internal tree management data. + */ + class RecordType + { + public: + inline ConstKeyType& GetKey() const { return mData.GetKey(); } + inline ConstValueType& GetValue() const { return mData.GetValue(); } + inline ValueType& GetValue() { return mData.GetValue(); } + + inline const RecordType* Minimum() const + { + const RecordType* lParent = 0; + const RecordType* lNode = this; + while (lNode != 0) + { + lParent = lNode; + lNode = lNode->mLeftChild; + } + + return lParent; + } + + inline RecordType* Minimum() + { + RecordType* lParent = 0; + RecordType* lNode = this; + while (lNode != 0) + { + lParent = lNode; + lNode = lNode->mLeftChild; + } + + return lParent; + } + + inline const RecordType* Maximum() const + { + const RecordType* lParent = 0; + const RecordType* lNode = this; + while (lNode != 0) + { + lParent = lNode; + lNode = lNode->mRightChild; + } + + return lParent; + } + + inline RecordType* Maximum() + { + RecordType* lParent = 0; + RecordType* lNode = this; + while (lNode != 0) + { + lParent = lNode; + lNode = lNode->mRightChild; + } + + return lParent; + } + + inline const RecordType* Predecessor() const + { + if (mLeftChild) + { + return mLeftChild->Maximum(); + } + else + { + const RecordType* lParent = mParent; + const RecordType* lNode = this; + + while (lParent && lParent->mLefttChild == lNode) + { + lNode = lParent; + lParent = lParent->mParent; + } + + return lParent; + } + } + + inline RecordType* Predecessor() + { + if (mLeftChild) + { + return mLeftChild->Maximum(); + } + else + { + RecordType* lParent = mParent; + RecordType* lNode = this; + + while (lParent && lParent->mLeftChild == lNode) + { + lNode = lParent; + lParent = lParent->mParent; + } + + return lParent; + } + } + + inline const RecordType* Successor() const + { + if (mRightChild) + { + return mRightChild->Minimum(); + } + else + { + const RecordType* lParent = mParent; + const RecordType* lNode = this; + + while (lParent && lParent->mRightChild == lNode) + { + lNode = lParent; + lParent = lParent->mParent; + } + + return lParent; + } + } + + inline RecordType* Successor() + { + if (mRightChild) + { + return mRightChild->Minimum(); + } + else + { + RecordType* lParent = mParent; + RecordType* lNode = this; + + while (lParent && lParent->mRightChild == lNode) + { + lNode = lParent; + lParent = lParent->mParent; + } + + return lParent; + } + } + + inline const int GetBlackDepth() { return mBlackDepth; } + + private: + enum ETreeType {eRed, eBlack}; + + inline RecordType(const DataType& pData) + : mData(pData) + , mParent(0) + , mLeftChild(0) + , mRightChild(0) + , mColor(eRed) + , mBlackDepth(0) + { + } + + inline RecordType(const RecordType& pRecordType) + : mData(pRecordType.mData) + , mParent(0) + , mLeftChild(0) + , mRightChild(0) + , mColor(pRecordType.mColor) + , mBlackDepth(pRecordType.mBlackDepth) + { + } + + DataType mData; + + friend class FbxRedBlackTree; + + RecordType* mParent; + RecordType* mLeftChild; + RecordType* mRightChild; + unsigned int mColor:2; + unsigned int mBlackDepth:30; + }; + +public: + typedef FbxRedBlackConstIterator ConstIteratorType; + typedef FbxRedBlackIterator IteratorType; + + inline FbxRedBlackTree() : mRoot(0), mSize(0), mAllocator(sizeof(RecordType)) {} + inline FbxRedBlackTree(const FbxRedBlackTree& pTree) : mRoot(0), mSize(0), mAllocator(sizeof(RecordType)) { operator=(pTree); } + inline ~FbxRedBlackTree() { Clear(); } + + /** Deep copy pTree in this. + * \param pTree The tree to copy in this tree. */ + inline FbxRedBlackTree& operator=(const FbxRedBlackTree& pTree) + { + if( this != &pTree ) + { + Clear(); + + mAllocator = pTree.mAllocator; + + if( pTree.mRoot ) + { + void* lBuffer = mAllocator.AllocateRecords(); + mRoot = new(lBuffer) RecordType(*(pTree.mRoot)); //in-place new won't allocate memory, so it is safe + mRoot->mLeftChild = DuplicateSubTree(pTree.mRoot->mLeftChild); + mRoot->mRightChild = DuplicateSubTree(pTree.mRoot->mRightChild); + + if (mRoot->mLeftChild) + { + mRoot->mLeftChild->mParent = mRoot; + } + + if (mRoot->mRightChild) + { + mRoot->mRightChild->mParent = mRoot; + } + } + else + { + FBX_ASSERT( pTree.mSize == 0 ); + FBX_ASSERT( mRoot == 0 ); + } + + mSize = pTree.mSize; + } + + return *this; + } + + inline bool operator==(const FbxRedBlackTree& pTree) const + { + // Check a few quick shortcuts + if( this == &pTree ) + return true; + + if( GetSize() != pTree.GetSize() ) + return false; + + // Iterator through all nodes; if we reach the end of both iterators at the same + // time then we have two iterators that match. + ConstIteratorType End; + ConstIteratorType Iter1(Minimum()); + ConstIteratorType Iter2(pTree.Minimum()); + + while( (Iter1 != End) && (Iter2 != End) && + (Iter1->GetKey() == Iter2->GetKey()) && + (Iter1->GetValue() == Iter2->GetValue()) ) + { + ++Iter1; + ++Iter2; + } + + return Iter1 == End && Iter2 == End; + } + + /** Ask Allocator to reserve space to hold pRecordCount elements. + * \param pRecordCount + */ + inline void Reserve(unsigned int pRecordCount) + { + mAllocator.Reserve(pRecordCount); + } + + /** Get the number of elements in the tree. Takes O(1) time. + * \return The number of elements in the tree. + */ + inline int GetSize() const { return mSize; } + + inline bool Empty() const { return mSize == 0; } + + /** Insert a new element in the tree. Takes O(log n) time. + * \param pData The element to insert. + * \return If pData.GetKey() is already present in the tree, returns the + * existing record and false; else returns the new record and true. + */ + inline FbxPair Insert(const DataType& pData) + { + Compare lCompareKeys; + bool lResult = false; + RecordType* lParent = 0; + RecordType* lNode = mRoot; + while (lNode != 0) + { + const KeyType& lNodeKey = lNode->GetKey(); + const KeyType& lDataKey = pData.GetKey(); + + if (lCompareKeys(lNodeKey, lDataKey) < 0) + { + lParent = lNode; + lNode = lNode->mRightChild; + } + else if (lCompareKeys(lNodeKey, lDataKey) > 0) + { + lParent = lNode; + lNode = lNode->mLeftChild; + } + else + { + break; + } + } + + if (lNode == 0) + { + void* lBuffer = mAllocator.AllocateRecords(); + lNode = new(lBuffer) RecordType(pData); //in-place new won't allocate memory, so it is safe + mSize++; + + FBX_ASSERT(lNode == lBuffer); + + if (lParent) + { + if (lCompareKeys(lParent->GetKey(), pData.GetKey()) < 0) + { + FBX_ASSERT(lParent->mRightChild == 0); + lParent->mRightChild = lNode; + lNode->mParent = lParent; + } + else + { + FBX_ASSERT(lParent->mLeftChild == 0); + lParent->mLeftChild = lNode; + lNode->mParent = lParent; + } + } + else + { + mRoot = lNode; + } + + // Fix red black tree property + FixNodesAfterInsertion(lNode); + + lResult = true; + } + + return FbxPair(lNode, lResult); + } + + /** Remove an element identified by a key from the tree. Takes O(log n) time. + * \param pKey The key identifying the element to remove. + */ + inline bool Remove(const KeyType& pKey) + { + Compare lCompareKeys; + bool lResult = false; + RecordType* lNode = mRoot; + while (lNode != 0) + { + if (lCompareKeys(lNode->GetKey(), pKey) < 0) + { + lNode = lNode->mRightChild; + } + else if (lCompareKeys(lNode->GetKey(), pKey) > 0) + { + lNode = lNode->mLeftChild; + } + else + { + break; + } + } + + if (lNode) + { + RemoveNode(lNode); + mSize--; + lNode->~RecordType(); + mAllocator.FreeMemory(lNode); + + lResult = true; + } + + return lResult; + } + + /** Remove all elements from the tree. Takes O(n) time. Recursive. + */ + inline void Clear() + { + if (mRoot) + { + ClearSubTree(mRoot->mLeftChild); + ClearSubTree(mRoot->mRightChild); + mRoot->~RecordType(); + mAllocator.FreeMemory(mRoot); + mRoot = 0; + mSize = 0; + } + } + + /** Find the smallest element in the tree. + * Takes O(log n) time. + */ + inline const RecordType* Minimum() const + { + if (0 != mRoot) + { + return mRoot->Minimum(); + } + else + { + return 0; + } + } + + /** Find the smallest element in the tree. + * Takes O(log n) time. + */ + inline RecordType* Minimum() + { + if (0 != mRoot) + { + return mRoot->Minimum(); + } + else + { + return 0; + } + } + + /** Find the largest element in the tree. + * Takes O(log n) time. + */ + inline const RecordType* Maximum() const + { + if (0 != mRoot) + { + return mRoot->Maximum(); + } + else + { + return 0; + } + } + + /** Find the largest element in the tree. + * Takes O(log n) time. + */ + inline RecordType* Maximum() + { + if (0 != mRoot) + { + return mRoot->Maximum(); + } + else + { + return 0; + } + } + + /** Find the key-value pair with key pKey. + * Takes O(log n) time. + * \param pKey The key to look for. + */ + inline const RecordType* Find(const KeyType& pKey) const + { + Compare lCompareKeys; + const RecordType* lNode = mRoot; + while (lNode != 0) + { + if (lCompareKeys(lNode->GetKey(), pKey) < 0) + { + lNode = lNode->mRightChild; + } + else if (lCompareKeys(lNode->GetKey(), pKey) > 0) + { + lNode = lNode->mLeftChild; + } + else + { + break; + } + } + + return lNode; + } + + /** Find the key-value pair with key pKey. + * Takes O(log n) time. + * \param pKey The key to look for. + */ + inline RecordType* Find(const KeyType& pKey) + { + Compare lCompareKeys; + RecordType* lNode = mRoot; + while (lNode != 0) + { + if (lCompareKeys(lNode->GetKey(), pKey) < 0) + { + lNode = lNode->mRightChild; + } + else if (lCompareKeys(lNode->GetKey(), pKey) > 0) + { + lNode = lNode->mLeftChild; + } + else + { + break; + } + } + + return lNode; + } + + /** Find the key-value pair with the smallest key greater than pKey. + * Takes O(log n) time. + * \param pKey The key to look for. + */ + inline const RecordType* UpperBound(const KeyType& pKey) const + { + Compare lCompareKeys; + const RecordType* lNode = mRoot; + const RecordType* lCandidate = 0; + while (lNode != 0) + { + if (lCompareKeys(lNode->GetKey(), pKey) <= 0) + { + lNode = lNode->mRightChild; + } + else if (lCompareKeys(lNode->GetKey(), pKey) > 0) + { + lCandidate = lNode; + lNode = lNode->mLeftChild; + } + } + + return lCandidate; + } + + /** Find the key-value pair with the smallest key greater than pKey. + * Takes O(log n) time. + * \param pKey The key to look for. + */ + inline RecordType* UpperBound(const KeyType& pKey) + { + Compare lCompareKeys; + RecordType* lNode = mRoot; + RecordType* lCandidate = 0; + while (lNode != 0) + { + if (lCompareKeys(lNode->GetKey(), pKey) <= 0) + { + lNode = lNode->mRightChild; + } + else if (lCompareKeys(lNode->GetKey(), pKey) > 0) + { + lCandidate = lNode; + lNode = lNode->mLeftChild; + } + } + + return lCandidate; + } + +protected: + RecordType* mRoot; + int mSize; + + AllocatorType mAllocator; + + inline RecordType* DuplicateSubTree(const RecordType* pNode) + { + RecordType* lNewSubTree = 0; + + if (pNode) + { + void* lBuffer = mAllocator.AllocateRecords(); + lNewSubTree = new(lBuffer) RecordType(*pNode); //in-place new won't allocate memory, so it is safe + lNewSubTree->mLeftChild = DuplicateSubTree(pNode->mLeftChild); + lNewSubTree->mRightChild = DuplicateSubTree(pNode->mRightChild); + + if (lNewSubTree->mLeftChild) + { + lNewSubTree->mLeftChild->mParent = lNewSubTree; + } + + if (lNewSubTree->mRightChild) + { + lNewSubTree->mRightChild->mParent = lNewSubTree; + } + } + + return lNewSubTree; + } + + inline void FixNodesAfterInsertion(RecordType* pNode) + { + RecordType* lNode = pNode; + bool lDone = false; + + while (!lDone) + { + lDone = true; + + if (lNode->mParent == 0) + { + lNode->mColor = RecordType::eBlack; + } + else if (lNode->mParent->mColor == RecordType::eRed) + { + RecordType* lUncle = 0; + if (lNode->mParent == lNode->mParent->mParent->mLeftChild) + { + lUncle = lNode->mParent->mParent->mRightChild; + } + else if (lNode->mParent == lNode->mParent->mParent->mRightChild) + { + lUncle = lNode->mParent->mParent->mLeftChild; + } + + // since lNode->mParent is red, lNode->mParent->mParent exists + + if (lUncle && lUncle->mColor == RecordType::eRed) + { + lNode->mParent->mColor = RecordType::eBlack; + lUncle->mColor = RecordType::eBlack; + lNode->mParent->mParent->mColor = RecordType::eRed; + lNode = lNode->mParent->mParent; + + lDone = false; + } + else + { + if ((lNode == lNode->mParent->mRightChild) && + (lNode->mParent == lNode->mParent->mParent->mLeftChild)) + { + LeftRotate(lNode->mParent); + lNode = lNode->mLeftChild; + } + else if ((lNode == lNode->mParent->mLeftChild) && + (lNode->mParent == lNode->mParent->mParent->mRightChild)) + { + RightRotate(lNode->mParent); + lNode = lNode->mRightChild; + } + + lNode->mParent->mColor = RecordType::eBlack; + lNode->mParent->mParent->mColor = RecordType::eRed; + if ((lNode == lNode->mParent->mLeftChild) && + (lNode->mParent == lNode->mParent->mParent->mLeftChild)) + { + RightRotate(lNode->mParent->mParent); + } + else + { + LeftRotate(lNode->mParent->mParent); + } + } + } + } + + mRoot->mColor = RecordType::eBlack; + } + + inline void LeftRotate(RecordType* pNode) + { + FBX_ASSERT_RETURN(pNode); + + RecordType* lNode = pNode->mRightChild; + FBX_ASSERT_RETURN(lNode); + + #ifdef _DEBUG + RecordType* A = pNode->mLeftChild; + RecordType* B = lNode->mLeftChild; + RecordType* C = lNode->mRightChild; + RecordType* Z = pNode->mParent; + #endif + + pNode->mRightChild = lNode->mLeftChild; + if (pNode->mRightChild) + { + pNode->mRightChild->mParent = pNode; + } + + lNode->mParent = pNode->mParent; + if (pNode->mParent == 0) + { + FBX_ASSERT(mRoot == pNode); + mRoot = lNode; + } + else if (pNode == pNode->mParent->mLeftChild) + { + pNode->mParent->mLeftChild = lNode; + } + else + { + pNode->mParent->mRightChild = lNode; + } + pNode->mParent = lNode; + lNode->mLeftChild = pNode; + + FBX_ASSERT(pNode->mLeftChild == A); + FBX_ASSERT(pNode->mRightChild == B); + FBX_ASSERT(pNode->mParent == lNode); + + FBX_ASSERT(lNode->mLeftChild == pNode); + FBX_ASSERT(lNode->mRightChild == C); + FBX_ASSERT(lNode->mParent == Z); + + FBX_ASSERT(A == 0 || A->mParent == pNode); + FBX_ASSERT(B == 0 || B->mParent == pNode); + FBX_ASSERT(C == 0 || C->mParent == lNode); + FBX_ASSERT(Z == 0 || Z->mLeftChild == lNode || Z->mRightChild == lNode); + } + + inline void RightRotate(RecordType* pNode) + { + RecordType* lNode = pNode->mLeftChild; + + #ifdef _DEBUG + RecordType* A = lNode->mLeftChild; + RecordType* B = lNode->mRightChild; + RecordType* C = pNode->mRightChild; + RecordType* Z = pNode->mParent; + #endif + + pNode->mLeftChild = lNode->mRightChild; + if (pNode->mLeftChild) + { + pNode->mLeftChild->mParent = pNode; + } + + lNode->mParent = pNode->mParent; + if (pNode->mParent == 0) + { + FBX_ASSERT(mRoot == pNode); + mRoot = lNode; + } + else if (pNode == pNode->mParent->mRightChild) + { + pNode->mParent->mRightChild = lNode; + } + else + { + pNode->mParent->mLeftChild = lNode; + } + pNode->mParent = lNode; + lNode->mRightChild = pNode; + + FBX_ASSERT(lNode->mLeftChild == A); + FBX_ASSERT(lNode->mRightChild == pNode); + FBX_ASSERT(lNode->mParent == Z); + + FBX_ASSERT(pNode->mLeftChild == B); + FBX_ASSERT(pNode->mRightChild == C); + FBX_ASSERT(pNode->mParent == lNode); + + FBX_ASSERT(A == 0 || A->mParent == lNode); + FBX_ASSERT(B == 0 || B->mParent == pNode); + FBX_ASSERT(C == 0 || C->mParent == pNode); + FBX_ASSERT(Z == 0 || Z->mLeftChild == lNode || Z->mRightChild == lNode); + } + + inline void RemoveNode(RecordType* pNode) + { + if (pNode->mLeftChild == 0) + { + if (pNode->mRightChild == 0) + { + if (pNode->mParent) + { + if (pNode->mParent->mLeftChild == pNode) + { + pNode->mParent->mLeftChild = 0; + } + else if (pNode->mParent->mRightChild == pNode) + { + pNode->mParent->mRightChild = 0; + } + else + { + FBX_ASSERT_NOW("Node not found in FbxRedBlackTree"); + } + } + else + { + FBX_ASSERT(mRoot == pNode); + mRoot = 0; + } + + if (pNode->mColor == RecordType::eBlack) + { + FixNodesAfterRemoval(pNode->mParent, 0); + } + } + else + { + if (pNode->mParent) + { + if (pNode->mParent->mLeftChild == pNode) + { + pNode->mParent->mLeftChild = pNode->mRightChild; + pNode->mRightChild->mParent = pNode->mParent; + } + else if (pNode->mParent->mRightChild == pNode) + { + pNode->mParent->mRightChild = pNode->mRightChild; + pNode->mRightChild->mParent = pNode->mParent; + } + else + { + FBX_ASSERT_NOW("Node not found in FbxRedBlackTree"); + } + } + else + { + FBX_ASSERT(mRoot == pNode); + mRoot = pNode->mRightChild; + pNode->mRightChild->mParent = 0; + } + + if (pNode->mColor == RecordType::eBlack) + { + FixNodesAfterRemoval(pNode->mRightChild->mParent, pNode->mRightChild); + } + } + } + else + { + if (pNode->mRightChild == 0) + { + if (pNode->mParent) + { + if (pNode->mParent->mLeftChild == pNode) + { + pNode->mParent->mLeftChild = pNode->mLeftChild; + pNode->mLeftChild->mParent = pNode->mParent; + } + else if (pNode->mParent->mRightChild == pNode) + { + pNode->mParent->mRightChild = pNode->mLeftChild; + pNode->mLeftChild->mParent = pNode->mParent; + } + else + { + FBX_ASSERT_NOW("Node not found in FbxRedBlackTree"); + } + } + else + { + FBX_ASSERT(mRoot == pNode); + mRoot = pNode->mLeftChild; + pNode->mLeftChild->mParent = 0; + } + + if (pNode->mColor == RecordType::eBlack) + { + FixNodesAfterRemoval(pNode->mLeftChild->mParent, pNode->mLeftChild); + } + } + else + { + RecordType* lMinRightNode = pNode->mRightChild->Minimum(); + RemoveNode(lMinRightNode); + + lMinRightNode->mColor = pNode->mColor; + ReplaceNode(pNode, lMinRightNode); + } + } + + pNode->mParent = 0; + pNode->mLeftChild = 0; + pNode->mRightChild = 0; + } + + inline void ReplaceNode(RecordType* pNodeToReplace, RecordType* pReplacement) + { + pReplacement->mParent = pNodeToReplace->mParent; + if (pNodeToReplace->mParent) + { + if (pNodeToReplace->mParent->mLeftChild == pNodeToReplace) + { + pNodeToReplace->mParent->mLeftChild = pReplacement; + } + else if (pNodeToReplace->mParent->mRightChild == pNodeToReplace) + { + pNodeToReplace->mParent->mRightChild = pReplacement; + } + } + else + { + FBX_ASSERT(mRoot == pNodeToReplace); + mRoot = pReplacement; + } + + pReplacement->mLeftChild = pNodeToReplace->mLeftChild; + if (pReplacement->mLeftChild) + { + pReplacement->mLeftChild->mParent = pReplacement; + } + + pReplacement->mRightChild = pNodeToReplace->mRightChild; + if (pReplacement->mRightChild) + { + pReplacement->mRightChild->mParent = pReplacement; + } + } + + inline RecordType* Sibling(const RecordType* pParent, const RecordType* pNode) const + { + if (pParent) + { + if (pParent->mLeftChild == pNode) + { + return pParent->mRightChild; + } + else if (pParent->mRightChild == pNode) + { + return pParent->mLeftChild; + } + } + + return 0; + } + + inline bool IsBlack(const RecordType* pNode) + { + return ((pNode == 0) || (pNode->mColor == RecordType::eBlack)); + } + + inline void FixNodesAfterRemoval(RecordType* pParent, RecordType* pNode) + { + RecordType* lParent = pParent; + RecordType* lNode = pNode; + bool lDone = false; + + while (!lDone) + { + lDone = true; + + if (!IsBlack(lNode)) + { + lNode->mColor = RecordType::eBlack; + } + else if (lParent != NULL) + { + RecordType* lSibling = Sibling(lParent, lNode); + + if (!IsBlack(lSibling)) + { + lParent->mColor = RecordType::eRed; + lSibling->mColor = RecordType::eBlack; + if (lNode == lParent->mLeftChild) + { + LeftRotate(lParent); + } + else + { + RightRotate(lParent); + } + + // update sibling: it may have change after rotation + // parent was not affected by this rotation + lSibling = Sibling(lParent, lNode); + } + + /* check this for null sibling */ + if (lSibling && + IsBlack(lParent) && + IsBlack(lSibling) && + IsBlack(lSibling->mLeftChild) && + IsBlack(lSibling->mRightChild)) + { + lSibling->mColor = RecordType::eRed; + lNode = lParent; + lParent = lParent->mParent; + lDone = false; + } + else + { + if (!IsBlack(lParent) && + IsBlack(lSibling) && + ((lSibling == 0) || IsBlack(lSibling->mLeftChild)) && + ((lSibling == 0) || IsBlack(lSibling->mRightChild))) + { + if (lSibling) + { + lSibling->mColor = RecordType::eRed; + } + lParent->mColor = RecordType::eBlack; + } + else if( lSibling != 0 ) + { + if ((lNode == lParent->mLeftChild) && + IsBlack(lSibling) && + !IsBlack(lSibling->mLeftChild) && + IsBlack(lSibling->mRightChild)) + { + lSibling->mColor = RecordType::eRed; + lSibling->mLeftChild->mColor = RecordType::eBlack; + RightRotate(lSibling); + } + else if ((lNode == lParent->mRightChild) && + IsBlack(lSibling) && + IsBlack(lSibling->mLeftChild) && + !IsBlack(lSibling->mRightChild)) + { + lSibling->mColor = RecordType::eRed; + lSibling->mRightChild->mColor = RecordType::eBlack; + LeftRotate(lSibling); + } + + // update sibling: it may have change after rotation + lSibling = Sibling(lParent, lNode); + FBX_ASSERT(lSibling != 0 && lParent != 0); // lSibling is now + // the former red + // child of the + // former sibling + + if( lSibling != 0 && lParent != 0 ) + { + lSibling->mColor = lParent->mColor; + lParent->mColor = RecordType::eBlack; + if (lNode == lParent->mLeftChild) + { + if (lSibling->mRightChild) + { + lSibling->mRightChild->mColor = RecordType::eBlack; + } + LeftRotate(lParent); + } + else + { + if (lSibling->mLeftChild) + { + lSibling->mLeftChild->mColor = RecordType::eBlack; + } + RightRotate(lParent); + } + } + } + } + } + } + + if (mRoot) + { + mRoot->mColor = RecordType::eBlack; + } + } + + inline void ClearSubTree(RecordType* pNode) + { + if (pNode) + { + ClearSubTree(pNode->mLeftChild); + ClearSubTree(pNode->mRightChild); + pNode->~RecordType(); + mAllocator.FreeMemory(pNode); + } + } + + inline int GetSubTreeSize(RecordType* pNode) const + { + if (pNode) + { + return GetSubTreeSize(pNode->mLeftChild) + GetSubTreeSize(pNode->mRightChild) + 1; + } + else + { + return 0; + } + } + +#if 0 + inline void IsSane() + { + FBX_ASSERT((mRoot == 0) || (mRoot->mColor == RecordType::eBlack)); + FBX_ASSERT(((mRoot == 0) && (mSize == 0)) || (mRoot != 0) && (mSize != 0)); + IsSubTreeSane(mRoot); + + ComputeBlackDepth(mRoot, 0); + + RecordType* lNode = mRoot; + unsigned int lLeafBlackDepth = 0; + while (lNode) + { + if (lNode->mLeftChild == 0) + { + lLeafBlackDepth = lNode->mBlackDepth + ((lNode->mColor == RecordType::eBlack) ? 1 : 0); + } + + lNode = lNode->mLeftChild; + } + + CheckLeavesBlackDepth(mRoot, lLeafBlackDepth); + } + + inline void IsSubTreeSane(const RecordType* pNode) const + { + Compare lCompareKeys; + + if (pNode) + { + FBX_ASSERT(pNode != pNode->mParent); + FBX_ASSERT(pNode != pNode->mLeftChild); + FBX_ASSERT(pNode != pNode->mRightChild); + + // Check for two consecutive red nodes + FBX_ASSERT((pNode->mColor == RecordType::eBlack) || + (pNode->mLeftChild == NULL) || + (pNode->mLeftChild->mColor == RecordType::eBlack)); + + FBX_ASSERT((pNode->mColor == RecordType::eBlack) || + (pNode->mRightChild == NULL) || + (pNode->mRightChild->mColor == RecordType::eBlack)); + + // Check key ordering + FBX_ASSERT((pNode->mLeftChild == 0 || + lCompareKeys(pNode->GetKey(), pNode->mLeftChild->GetKey()) > 0)); + + FBX_ASSERT((pNode->mRightChild == 0 || + lCompareKeys(pNode->GetKey(), pNode->mRightChild->GetKey()) < 0)); + + IsSubTreeSane(pNode->mLeftChild); + IsSubTreeSane(pNode->mRightChild); + } + } + + inline void ComputeBlackDepth(RecordType* pNode, unsigned int pDepth) + { + if( pNode ) + { + pNode->mBlackDepth = pDepth; + if( pNode->mColor == RecordType::eBlack ) + { + pDepth++; + } + ComputeBlackDepth(pNode->mLeftChild, pDepth); + ComputeBlackDepth(pNode->mRightChild, pDepth); + } + } + + inline void CheckLeavesBlackDepth(RecordType* pNode, unsigned int pBlackDepth) + { + if( pNode ) + { + if( pNode->mLeftChild == 0 || pNode->mRightChild == 0 ) + { + FBX_ASSERT((pNode->mBlackDepth + ((pNode->mColor == RecordType::eBlack) ? 1 : 0)) == pBlackDepth); + } + CheckLeavesBlackDepth(pNode->mLeftChild, pBlackDepth); + CheckLeavesBlackDepth(pNode->mRightChild, pBlackDepth); + } + } +#endif +}; + +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ + +#include + +#endif /*_FBXSDK_CORE_BASE_REDBLACKTREE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxset.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxset.h new file mode 100644 index 00000000..b1231a2b --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxset.h @@ -0,0 +1,227 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxset.h +#ifndef _FBXSDK_CORE_BASE_SET_H_ +#define _FBXSDK_CORE_BASE_SET_H_ + +#include + +#include +#include + +#include + +/** This class implements an efficient set based on value comparison, which stores values. +* It executes insertion, deletion and query operations in O(log(n)) time. */ +template , typename Allocator=FbxBaseAllocator> class FbxSet +{ +protected: + //! This class defines the value type used by the set. + class Value + { + /***************************************************************************************************************************** + ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** + *****************************************************************************************************************************/ + #ifndef DOXYGEN_SHOULD_SKIP_THIS + public: + typedef const Type KeyType; + typedef const Type ConstKeyType; + typedef const Type ValueType; + typedef const Type ConstValueType; + + inline Value(const Type& pValue) : mValue(pValue){} + inline KeyType& GetKey() const { return mValue; } + inline ConstKeyType& GetKey(){ return mValue; } + inline ValueType& GetValue() const { return mValue; } + inline ConstValueType& GetValue(){ return mValue; } + + protected: + ValueType mValue; + + private: + Value& operator=(const Value&); + #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ + }; + + //! Declaration of the storage type used by the set. + typedef FbxRedBlackTree StorageType; + +public: + typedef Type ValueType; + typedef typename StorageType::RecordType RecordType; + typedef typename StorageType::IteratorType Iterator; + typedef typename StorageType::ConstIteratorType ConstIterator; + + /** Preallocate memory. + * \param pRecordCount The number of elements. + */ + inline void Reserve(unsigned int pRecordCount) + { + mTree.Reserve(pRecordCount); + } + + //! Retrieve the number of values it holds. + inline int GetSize() const + { + return mTree.GetSize(); + } + + /** Insert a value. + * \param pValue The value. + * \return If the value is already present in the map, returns the existing value and false; else returns the pointer to the new value and true. */ + inline FbxPair Insert(const ValueType& pValue) + { + return mTree.Insert(Value(pValue)); + } + + /** Delete a value. + * \param pValue The value. + * \return \c true if success, \c false if value is not found. */ + inline int Remove(const ValueType& pValue) + { + return mTree.Remove(pValue); + } + + //! Clear the set. + inline void Clear() + { + mTree.Clear(); + } + + //! Query whether the set is empty. + inline bool Empty() const + { + return mTree.Empty(); + } + + //! Retrieve the begin iterator of the set. + Iterator Begin() + { + return Iterator(Minimum()); + } + + //! Retrieve the end iterator of the set. + Iterator End() + { + return Iterator(); + } + + //! Retrieve the begin iterator of the set. + ConstIterator Begin() const + { + return ConstIterator(Minimum()); + } + + //! Retrieve the end iterator of the set. + ConstIterator End() const + { + return ConstIterator(); + } + + /** Find a given value in the set. + * \param pValue The value to find. + * \return The value in the set, or NULL if the value is not found in the set. */ + inline const RecordType* Find(const ValueType& pValue) const + { + return mTree.Find(pValue); + } + + /** Find a given value in the set. + * \param pValue The value to find. + * \return The value in the set, or NULL if the value is not found in the set. */ + inline RecordType* Find(const ValueType& pValue) + { + return mTree.Find(pValue); + } + + //! Retrieve the minimum value in the set. + inline const RecordType* Minimum() const + { + return mTree.Minimum(); + } + + //! Retrieve the minimum value in the set. + inline RecordType* Minimum() + { + return mTree.Minimum(); + } + + //! Retrieve the maximum value in the set. + inline const RecordType* Maximum() const + { + return mTree.Maximum(); + } + + //! Retrieve the maximum value in the set. + inline RecordType* Maximum() + { + return mTree.Maximum(); + } + + //! Equality operator. + inline bool operator==(const FbxSet& pOther) const + { + return (this == &pOther) || (mTree == pOther.mTree); + } + + //! Inequality operator. + inline bool operator != (const FbxSet& pOther) const + { + return !(*this == pOther); + } + + /** Intersect with another set. + * \param pOther The other set. + * \return The intersection set of the two sets. */ + inline FbxSet Intersect(const FbxSet& pOther) const + { + FbxSet lReturn; + ConstIterator lBegin = Begin(); + for (; lBegin != End(); ++lBegin) + { + if (pOther.Find(lBegin->GetValue()) != NULL) + lReturn.Insert(lBegin->GetValue()); + } + return lReturn; + } + + /** Unite with another set. + * \param pOther The other set. + * \return The union set of the two sets (no duplicated items). */ + inline FbxSet Union(const FbxSet& pOther) const + { + FbxSet lReturn(*this); + ConstIterator lBegin = pOther.Begin(); + for (; lBegin != End(); ++lBegin) + { + if (Find(lBegin->GetValue()) == NULL) + lReturn.Insert(lBegin->GetValue()); + } + return lReturn; + } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + inline FbxSet(){} + inline FbxSet(const FbxSet& pSet) : mTree(pSet.mTree){} + inline ~FbxSet(){ Clear(); } + +private: + StorageType mTree; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_CORE_BASE_SET_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxstatus.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxstatus.h new file mode 100644 index 00000000..c948de30 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxstatus.h @@ -0,0 +1,119 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxstatus.h +#ifndef _FBXSDK_CORE_BASE_STATUS_H_ +#define _FBXSDK_CORE_BASE_STATUS_H_ + +#include + +#include + +#include + +/** This class facilitates the testing/reporting of errors. It encapsulates the + * status code and the internal FBXSDK error code as returned by the API functions. + * \nosubgrouping + */ +class FBXSDK_DLL FbxStatus +{ +public: + + + //! Available status codes. + enum EStatusCode { + eSuccess = 0, //!< Operation was successful + eFailure, //!< Operation failed + eInsufficientMemory, //!< Operation failed due to insufficient memory + eInvalidParameter, //!< An invalid parameter was provided + eIndexOutOfRange, //!< Index value outside the valid range + ePasswordError, //!< Operation on FBX file password failed + eInvalidFileVersion, //!< File version not supported (anymore or yet) + eInvalidFile //!< Operation on the file access failed + }; + + //! Default constructor. + FbxStatus(); + + FbxStatus(EStatusCode pCode); + FbxStatus(const FbxStatus& rhs); + + FbxStatus& operator=(const FbxStatus& rhs); + + /** Equivalence operator. + * \param rhs Status object to compare. + * \return \c True if all the members of \e rhs are equal to this instance members and \c False otherwise. + */ + bool operator==(const FbxStatus& rhs) const { return (mCode == rhs.mCode); } + /** Equivalence operator. + * \param pCode Status code to compare. + * \return \c True if the code member of this instance equals \e pCode and \c False otherwise. + */ + bool operator==(const EStatusCode pCode) const { return (mCode == pCode); } + /** Non-Equivalence operator. + * \param rhs Status object to compare. + * \return \c True if at least one member of \e rhs is not equal to this instance member and \c True otherwise. + */ + bool operator!=(const FbxStatus& rhs) const { return (mCode != rhs.mCode); } + /** Non-Equivalence operator. + * \param rhs Status code to compare. + * \return \c True if the code member of this instance equals \e rhs and \c False otherwise. + */ + bool operator!=(const EStatusCode rhs) const { return (mCode != rhs); } + + /** The conversion operator that converts a FbxStatus object to bool. + * The result it returns will be \c True if the FbxStatus does not contain + * an error, and \c False if it does. + */ + operator bool() const { return mCode==eSuccess; } + + /** Determines whether there is an error. + * \return \c True if an error occured and \c False if the operation was sucessful. + */ + bool Error() const { return !this->operator bool(); } + + //! Clear error code and message from the instance. After this call, it will behave as if it contained eSuccess. + void Clear(); + + //! Retrieve the type of error that occurred, as specified in the enumeration. + EStatusCode GetCode() const { return mCode; } + + /** Change the current code of the instance. + * \param rhs New code value. + */ + void SetCode(const EStatusCode rhs); + + /** Change the current code of the instance. + * \param rhs New code value. + * \param pErrorMsg Optional error description string. This string can have formatting characters + * The function will use the vsnprintf function to assemble the final string + * using an internal buffer of 4096 characters. + */ + void SetCode(const EStatusCode rhs, const char* pErrorMsg, ...); + + //! Get the error message string corresponding to the current code. + const char* GetErrorString() const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + +private: + EStatusCode mCode; + FbxString mErrorString; + +#endif /* !DOXYGEN_SHOULD_SKIP_THIS */ +}; + +#include + +#endif /* _FBXSDK_CORE_BASE_STATUS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxstring.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxstring.h new file mode 100644 index 00000000..a604e67b --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxstring.h @@ -0,0 +1,505 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxstring.h +#ifndef _FBXSDK_CORE_BASE_STRING_H_ +#define _FBXSDK_CORE_BASE_STRING_H_ + +#include + +#include + +/** Convert string from UTF8 to wide-char +* \param pInUTF8 Input string +* \param pOutWideChar output string +* \param pOutWideCharSize size of the allocated output string buffer +* \remark Output buffer should be release by caller */ +FBXSDK_DLL void FbxUTF8ToWC(const char* pInUTF8, wchar_t*& pOutWideChar, size_t* pOutWideCharSize=NULL); + +/** Convert string from wide-char to UTF8 +* \param pInWideChar input string +* \param pOutUTF8 output string +* \param pOutUTF8Size size of the allocated output string buffer +* \remark Output buffer should be release by caller */ +FBXSDK_DLL void FbxWCToUTF8(const wchar_t* pInWideChar, char*& pOutUTF8, size_t* pOutUTF8Size=NULL); + +#if defined(FBXSDK_ENV_WIN) + /** Convert string from wide-char to ANSI + * \param pInWideChar input string + * \param pOutANSI output string + * \param pOutANSISize size of the allocated output string buffer + * \remark Output buffer should be release by caller */ + FBXSDK_DLL void FbxWCToAnsi(const wchar_t* pInWideChar, char*& pOutANSI, size_t* pOutANSISize=NULL); + + /** Convert string from ANSI to wide-char + * \param pInANSI input string + * \param pOutWideChar output string + * \param pOutWideCharSize size of the allocated output string buffer + * \remark Output buffer should be release by caller */ + FBXSDK_DLL void FbxAnsiToWC(const char* pInANSI, wchar_t*& pOutWideChar, size_t* pOutWideCharSize=NULL); + + /** Convert string from ANSI to UTF8 + * \param pInANSI input string + * \param outUTF8 output string + * \param pOutUTF8Size size of the allocated output string buffer + * \remark Output buffer should be release by caller */ + FBXSDK_DLL void FbxAnsiToUTF8(const char* pInANSI, char*& pOutUTF8, size_t* pOutUTF8Size=NULL); + + /** Convert string from UTF8 to ANSI + * \param pInUTF8 input string + * \param pOutANSI output string + * \param pOutANSISize size of the allocated output string buffer + * \remark Output buffer should be release by caller */ + FBXSDK_DLL void FbxUTF8ToAnsi(const char* pInUTF8, char*& pOutANSI, size_t* pOutANSISize=NULL); +#endif + +/** Utility class to manipulate strings. +* \nosubgrouping */ +class FBXSDK_DLL FbxString +{ +public: + /** + * \name Constructors and Destructor + */ + //@{ + //! Default constructor. + FbxString(); + + /** Copy constructor. + * \param pString The FbxString to be copied. */ + FbxString(const FbxString& pString); + + /** String constructor. + * \param pString The string used to construct FbxString. */ + FbxString(const char* pString); + + /** Character constructor. + * \param pChar The character used to construct FbxString. + * \param pNbRepeat The number of times to repeat the character. Default value is 1 */ + FbxString(char pChar, size_t pNbRepeat=1); + + /** String constructor with maximum length. + * \param pCharPtr The string used to construct FbxString. + * \param pLength Maximum length. */ + FbxString(const char* pCharPtr, size_t pLength); + + /** Integer constructor. + * \param pValue The int value used to construct FbxString. */ + FbxString(const int pValue); + + /** Float constructor. + * \param pValue The float value used to construct FbxString. */ + FbxString(const float pValue); + + /** Double constructor. + * \param pValue The double value used to construct FbxString. */ + FbxString(const double pValue); + + //! Destructor. + ~FbxString(); + //@} + + /** + * \name Buffer Access and Validation + */ + //@{ + //! Get string length like "C" strlen(). + size_t GetLen() const; + + //! Get string length like "C" strlen(). + size_t Size() const; + + //! Return \c true if string length equal zero. + bool IsEmpty() const; + + //! Discard the content of the string. + FbxString& Clear(); + + /** Access by reference. + * \param pIndex The index. + * \return The reference of the char at pIndex. */ + char& operator[](int pIndex); + + /** Access by copy. + * \param pIndex The index. + * \return The char at pIndex. */ + char operator[](int pIndex) const; + + //! Non-const buffer access. + char* Buffer(); + + //! Const buffer access. + const char* Buffer()const; + //@} + + /** + * \name String Operations + */ + //@{ + /** FbxString assignment operator. + * \param pString The FbxString to be assigned. */ + const FbxString& operator=(const FbxString& pString); + + /** Character assignment operator. + * \param pChar The character to be assigned. */ + const FbxString& operator=(char pChar); + + /** String assignment operator. + * \param pString The string to be assigned. */ + const FbxString& operator=(const char* pString); + + /** Int assignment operator. + * \param pValue The int value to be assigned. */ + const FbxString& operator=(int pValue); + + /** Float assignment operator. + * \param pValue The float value to be assigned. */ + const FbxString& operator=(float pValue); + + /** Double assignment operator. + * \param pValue The double value to be assigned. */ + const FbxString& operator=(double pValue); + + /** FbxString append. + * \param pString The FbxString to be appended. */ + const FbxString& operator+=(const FbxString& pString); + + /** Character append. + * \param pChar The character to be appended. */ + const FbxString& operator+=(char pChar); + + /** String append. + * \param pString The string to be appended. */ + const FbxString& operator+=(const char* pString); + + /** Integer append. + * \param pValue The int value to be appended. */ + const FbxString& operator+=(int pValue); + + /** Float append. + * \param pValue The float value to be appended. */ + const FbxString& operator+=(float pValue); + + /** Double append. + * \param pValue The double value to be appended. */ + const FbxString& operator+=(double pValue); + + /** Equality operator. + * \param pString The FbxString to be compared. */ + bool operator== (const FbxString& pString) const; + + /** Inequality operator. + * \param pString The FbxString to be compared. */ + bool operator!= (const FbxString& pString) const; + + /** Inferior to operator. + * \param pString The FbxString to be compared. */ + bool operator< (const FbxString& pString) const; + + /** Inferior or equal to operator. + * \param pString The FbxString to be compared. */ + bool operator<= (const FbxString& pString) const; + + /** Superior or equal to operator. + * \param pString The FbxString to be compared. */ + bool operator>= (const FbxString& pString) const; + + /** Superior to operator. + * \param pString The FbxString to be compared. */ + bool operator> (const FbxString& pString) const; + + /** Equality operator. + * \param pString The string to be compared. */ + bool operator== (const char* pString) const; + + /** Inequality operator. + * \param pString The string to be compared. */ + bool operator!= (const char* pString) const; + + /** Inferior to operator. + * \param pString The string to be compared. */ + bool operator< (const char* pString) const; + + /** Inferior or equal to operator. + * \param pString The string to be compared. */ + bool operator<= (const char* pString) const; + + /** Superior or equal to operator. + * \param pString The string to be compared. */ + bool operator>= (const char* pString) const; + + /** Superior to operator. + * \param pString The string to be compared. */ + bool operator> (const char* pString) const; + + /** FbxString concatenation. + * \param pString1 FbxString 1 to be concatenated to FbxString 2. + * \param pString2 FbxString 2 to be concatenated to FbxString 1 */ + friend FBXSDK_DLL FbxString operator+(const FbxString& pString1, const FbxString& pString2); + + /** Character concatenation. + * \param pString FbxString to be concatenated to Character. + * \param pChar Character to be concatenated to FbxString */ + friend FBXSDK_DLL FbxString operator+(const FbxString& pString, char pChar); + + /** Character concatenation. + * \param pChar Character to be concatenated to FbxString + * \param pString FbxString to be concatenated to Character. */ + friend FBXSDK_DLL FbxString operator+(char pChar, const FbxString& pString); + + /** String concatenation. + * \param pString1 FbxString to be concatenated to String. + * \param pString2 String to be concatenated to FbxString */ + friend FBXSDK_DLL FbxString operator+(const FbxString& pString1, const char* pString2); + + /** String concatenation. + * \param pString1 String to be concatenated to FbxString + * \param pString2 FbxString to be concatenated to String. */ + friend FBXSDK_DLL FbxString operator+(const char* pString1, const FbxString& pString2); + + /** Integer concatenation. + * \param pString FbxString to be concatenated to Integer. + * \param pValue Integer to be concatenated to FbxString */ + friend FBXSDK_DLL FbxString operator+(const FbxString& pString, int pValue); + + /** Integer concatenation. + * \param pValue Integer to be concatenated to FbxString + * \param pString FbxString to be concatenated to Integer. */ + friend FBXSDK_DLL FbxString operator+(int pValue, const FbxString& pString); + + /** Float concatenation. + * \param pString FbxString to be concatenated to Float. + * \param pValue Float to be concatenated to FbxString */ + friend FBXSDK_DLL FbxString operator+(const FbxString& pString, float pValue); + + /** Float concatenation. + * \param pValue Float to be concatenated to FbxString + * \param pString FbxString to be concatenated to Float. */ + friend FBXSDK_DLL FbxString operator+( float pValue, const FbxString& pString); + + /** Double concatenation. + * \param pString FbxString to be concatenated to Double. + * \param pValue Double to be concatenated to FbxString */ + friend FBXSDK_DLL FbxString operator+(const FbxString& pString, double pValue); + + //! Cast operator. + operator const char*() const; + + /** String assignment function with maximum length. + * \param pString The string to be assigned. + * \param pLength The maximum length of string to be assigned. */ + const FbxString& Copy(const char* pString, size_t pLength); + + /** Append as "C" strncat(). + * \param pString The string to be appended. + * \param pLength The length of chars to be appended. */ + const FbxString& Append(const char* pString, size_t pLength); + + /** Compare as "C" strcmp(). + * \param pString The string to be compared. */ + int Compare(const char* pString) const; + + /** Compare as "C" stricmp(). + * \param pString The string to be compared. */ + int CompareNoCase(const char* pString) const; + + /** Swap the contents of two strings. + * \param pString The FbxString to be swapped. */ + void Swap(FbxString& pString); + + //! Uppercase conversion. + FbxString Upper() const; + + //! Lowercase conversion. + FbxString Lower() const; + //@} + + /** + * \name Substring Extraction + */ + //@{ + /** Extract middle string for a given length. + * \param pFirst The start index of FbxString to be extracted. + * \param pCount The length of sub-string to be extracted. */ + FbxString Mid(size_t pFirst, size_t pCount) const; + + /** Extract middle string up to the end. + * \param pFirst The start index of FbxString to be extracted. */ + FbxString Mid(size_t pFirst) const; + + /** Extract left string. + * \param pCount The length of sub-string to be extracted. */ + FbxString Left(size_t pCount) const; + + /** Extract right string. + * \param pCount The length of sub-string to be extracted. */ + FbxString Right(size_t pCount) const; + //@} + + /** + * \name Padding + */ + //@{ + /** \enum EPaddingType Padding types. + * - \e eRight + * - \e eLeft + * - \e eBoth */ + enum EPaddingType {eRight, eLeft, eBoth}; + + /** Add padding characters. + * \param pPadding The padding type. + * \param pLen The length limit of FbxString after padding. + * \param pCar The character to be padded. */ + FbxString Pad(EPaddingType pPadding, size_t pLen, char pCar=' ') const; + + /** Remove padding characters. + * \param pPadding The padding type. + * \param pCar The character to be padded. + * \remark If pCar == '\0' the function will remove all the characters that are tested by isspace(). */ + FbxString UnPad(EPaddingType pPadding, char pCar='\0') const; + //@} + + /** + * \name Search + */ + //@{ + /** Look for a single character match, like "C" strchr(). + * \param pChar The character to look for. + * \param pStartPosition Start position to look for. + * \return Index or -1 if not found. */ + int Find(char pChar, size_t pStartPosition=0) const; + + /** Look for a substring match, like "C" strstr(). + * \param pStrSub The substring to look for. + * \param pStartPosition Start position to look for. + * \return Starting index or -1 if not found. */ + int Find(const char* pStrSub, size_t pStartPosition=0) const; + + /** Look for the last occurrence of character in string, like "C" strrchr(). + * \param pChar The character to look for. + * \return Index or -1 if not found. */ + int ReverseFind(char pChar) const; + + /** Look for a single character match, like "C" strpbrk(). + * \param pStrCharSet The character set. + * \param pStartPosition The start position. + * \return Index or -1 if not found. */ + int FindOneOf(const char* pStrCharSet, size_t pStartPosition=0) const; + + /** Replace a substring. + * \param pFind The substring to look for. + * \param pReplaceBy The string to replace by. + * \param pStartPosition The start position. + * \return \c true if substring found and replaced. */ + bool FindAndReplace(const char* pFind, const char* pReplaceBy, size_t pStartPosition=0); + + /** Replace all occurrence of a substring. + * \param pFind The substring to look for. + * \param pReplaceBy The string to replace by. + * \return \c true if something got replaced. */ + bool ReplaceAll(const char* pFind, const char* pReplaceBy); + + /** Replace all occurrence of character to find by replacement character. + * \param pFind The character to look for. + * \param pReplaceBy The character to replace by. + * \return \c true if character found and replaced. */ + bool ReplaceAll(char pFind, char pReplaceBy); + //@} + + /** + * \name Token Extraction + */ + //@{ + /** Get number of tokens. + * \param pSpans The span + * \return The number of tokens. */ + int GetTokenCount(const char* pSpans) const; + + /** Get token at given index. + * \param pTokenIndex The token index. + * \param pSpans The span */ + FbxString GetToken(int pTokenIndex, const char* pSpans) const; + //@} + +private: + // Lengths/sizes in characters. + // Note: an extra character is always allocated. + char* mData; // Actual string (zero terminated). + + FbxString(size_t pSrc1Len, const char* pSrc1Data, size_t pSrc2Len, const char* pSrc2Data); // Previously ConcatCopy + void Init(); + + //! Invalidate string. + void Invalidate(); + + void FreeBuffer(); + void FreeBuffer(char *&pOldData); + + bool AllocCopy(FbxString& pDest, size_t pCopyLen, size_t pCopyIndex) const; + bool AllocBuffer(size_t pLen); + bool AllocBuffer(size_t pLen, char*& pOldData); + + bool AssignCopy(size_t pSrcLen, const char* pSrcData); + bool ConcatInPlace(size_t pSrcLen, const char* pSrcData); + + bool IsIn(char pChar, const char* pString) const; + bool InternalFindAndReplace(const char* pFind, const char* pReplaceBy, size_t& pStartPosition); +}; + +FBXSDK_INCOMPATIBLE_WITH_ARRAY(FbxString); + +//! FbxString concatenation. +FBXSDK_DLL FbxString operator+(const FbxString& pString1, const FbxString& pString2); + +//! Character concatenation. +FBXSDK_DLL FbxString operator+(const FbxString& pString, char pChar); + +//! String concatenation. +FBXSDK_DLL FbxString operator+(const FbxString& pString1, const char* pString2); + +//! Integer concatenation. +FBXSDK_DLL FbxString operator+(const FbxString& pString, int pValue); + +//! Float concatenation. +FBXSDK_DLL FbxString operator+(const FbxString& pString, float pValue); + +//! Double concatenation. +FBXSDK_DLL FbxString operator+(const FbxString& pString, double pValue); + +//! Functor to compare FbxString +struct FbxStringCompare { inline int operator()(const FbxString& pKeyA, const FbxString& pKeyB) const { return pKeyA.Compare(pKeyB); } }; + +//! Functor to compare FbxString without case sensitivity +struct FbxStringCompareNoCase { inline int operator()(const FbxString& pKeyA, const FbxString& pKeyB) const { return pKeyA.CompareNoCase(pKeyB); } }; + +//! Functor to compare "C" strings +struct FbxCharPtrCompare { inline int operator()(const char* pKeyA, const char* pKeyB) const { return strcmp(pKeyA, pKeyB); } }; + +//! Functor to compare "C" strings without case sensitivity +struct FbxCharPtrCompareNoCase { inline int operator()(const char* pKeyA, const char* pKeyB) const { return FBXSDK_stricmp(pKeyA, pKeyB); } }; + +/** Remove the given char in the given string. +* \param pString The given string. +* \param pToRemove The given char that ought to be removed. +* \remarks Strings used in this function are case-sensitive. */ +inline void FbxRemoveChar(FbxString& pString, char pToRemove) +{ + int lPos = pString.ReverseFind(pToRemove); + while( lPos >= 0 ) + { + pString = pString.Left(lPos) + pString.Mid(lPos + 1); + lPos = pString.ReverseFind(pToRemove); + } +} + +#include + +#endif /* _FBXSDK_CORE_BASE_STRING_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxstringlist.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxstringlist.h new file mode 100644 index 00000000..8a34cf2e --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxstringlist.h @@ -0,0 +1,368 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxstringlist.h +#ifndef _FBXSDK_CORE_BASE_STRING_LIST_H_ +#define _FBXSDK_CORE_BASE_STRING_LIST_H_ + +#include + +#include +#include + +#include + +//! Wraps a string (FbxString) and a pointer (FbxHandle). +class FbxStringListItem +{ +public: + FbxStringListItem(){ mReference = 0; } + FbxStringListItem(const char* pString, FbxHandle pRef=0){ mString = pString; mReference = pRef; } + + FbxString mString; + FbxHandle mReference; +}; + +inline int FbxCompareStringListSort(const void* E1, const void* E2) +{ + return FBXSDK_stricmp((*(FbxStringListItem**)E1)->mString.Buffer(), (*(FbxStringListItem**)E2)->mString.Buffer()); +} + +inline int FbxCompareStringListFindEqual(const void* E1, const void* E2) +{ + return FBXSDK_stricmp((*(FbxStringListItem*)E1).mString.Buffer(), (*(FbxStringListItem**)E2)->mString.Buffer()); +} + +inline int FbxCompareCaseSensitiveStringList(const void *E1,const void *E2) +{ + return strcmp((*(FbxStringListItem*)E1).mString.Buffer(), (*(FbxStringListItem**)E2)->mString.Buffer()); +} + +//! Base class of FbxStringList. +template class FbxStringListT +{ +protected: + FbxArray mList; + +public: + /** + * \name Operation With The Array + */ + //@{ + + /** Append a item at the end of the array. + * \return Index of appended pointer. + */ + int AddItem( Type* pItem ) { return mList.Add( pItem ); } + + /** Insert a item in the array. + * \param pIndex Position where to insert the item. + * \param pItem Item to insert. + * \return Position of the inserted item in the array. + * \remarks If the given index is out of range, the pointer is appended at the end of the array. + */ + int InsertItemAt( int pIndex, Type* pItem ) { return mList.InsertAt( pIndex, pItem ); } + + //! Access item at given index. + Type* GetItemAt( int pIndex ) const { return mList[pIndex]; } + + /** Find first matching item. + * \return Index of first matching item found or -1 if there is no matching element. + */ + int FindItem( Type* pItem ) const { return mList.Find( pItem ); } + //}@ + +public : + /** + * \name Constructor and Destructor + */ + //@{ + + //! Default constructor. + FbxStringListT() + { + } + + //! Destructor. + virtual ~FbxStringListT() { Clear(); } + //}@ + + //!Remove the item at the end of the array and delete the associated object. + void RemoveLast() { RemoveAt( mList.GetCount()-1 ); } + + /** Get number of items in the array. + * \return The number of items in the array. + */ + inline int GetCount() const { return mList.GetCount(); } + + //! Access the string in the item at given index. + FbxString& operator[](int pIndex) { return mList[pIndex]->mString; } + + //! Access the value of reference in the item at given index. + FbxHandle GetReferenceAt(int pIndex) const { return mList[pIndex]->mReference; } + + //! Set the value of reference at given index. + void SetReferenceAt(int pIndex, FbxHandle pRef) { mList[pIndex]->mReference = pRef; } + + //! Access the pointer of string at given index. + char* GetStringAt(int pIndex) const { if (pIndexmString.Buffer(); else return NULL; } + + //! Set string at given index. + virtual bool SetStringAt(int pIndex, const char* pString) + { + if (pIndexmString = pString; + return true; + } else return false; + } + + /** Find first matching item. + * \return Index of first matching item found or -1 if there is no + * matching element. + */ + int Find( Type& pItem ) const + { + for (int Count=0; CountmReference==pReference) { + return Count; + } + } + return -1; + } + + /** Find first matching item in array whose string address is the same as given pointer. + * \return Index of first matching item found or -1 if there is no + * matching element. + */ + int FindIndex( const char* pString ) const + { + for (int lCount=0; lCountmString==pString) { + return lCount; + } + } + return -1; + } + + /** Access the value of reference of the first matching item in array + * whose string address is the same as given pointer. + * \return The value of reference of the first matching item found or NULL if there is no + * matching element. + */ + FbxHandle FindReference(const char* pString ) const + { + int lIndex = FindIndex( pString ); + if (lIndex!=-1) { + return mList[lIndex]->mReference; + } + return 0; // NULL + } + + //! Remove first matching item. + bool Remove ( Type& pItem ) + { + int lIndex = Find( pItem ); + if (lIndex>=0) { + RemoveAt( lIndex ); + return true; + } + return false; + } + + //! Remove first matching item in array whose string address is the same as given pointer. + bool Remove (const char* pString ) + { + int lIndex = FindIndex( pString ); + if (lIndex>=0) { + RemoveAt( lIndex ); + return true; + } + return false; + } + + //! Remove first matching item. + bool RemoveIt ( Type& pItem ) + { + int lIndex = Find( pItem ); + if (lIndex>=0) { + RemoveAt( lIndex ); + return true; + } + return false; + } + + //! Sort the array by the string of every item,not case sensitive. + void Sort( ) + { + qsort( &(mList.GetArray()[0]),mList.GetCount(),sizeof(FbxStringListItem*),FbxCompareStringListSort ); + } + + /** Find first matching item which has the same string as given parameter,not case sensitive. + * \return the pointer of matching item found or NULL if there is no + * matching element. + * \remark To cast the returned pointer to the FbxStringListItem you need a double indirection: (FbxStringListItem**) + */ + void* FindEqual(const char* pString) const + { + FbxStringListItem Key(pString); + + if (mList.GetCount() != 0) + { + return bsearch ( &Key, &(mList.GetArray()[0]),mList.GetCount(),sizeof(FbxStringListItem*),FbxCompareStringListFindEqual ); + } + else + { + return NULL ; + } + } + + /** Find first matching item which has the same string as given parameter, case sensitive. + * \return the pointer of matching item found or NULL if there is no + * matching element. + * \remark To cast the returned pointer to the FbxStringListItem you need a double indirection: (FbxStringListItem**) + */ + void* FindCaseSensitive(const char* pString) const + { + FbxStringListItem Key(pString); + + if (mList.GetCount() != 0) + { + return bsearch ( &Key, &(mList.GetArray()[0]),mList.GetCount(),sizeof(FbxStringListItem*), FbxCompareCaseSensitiveStringList); + } + else + { + return NULL ; + } + + } + + + //! Add a new item at the end of array. + int Add( const char* pString, FbxHandle pItem=0 ) + { + return InsertAt( mList.GetCount(),pString,pItem ); + } + + virtual int InsertAt( int pIndex, const char* pString, FbxHandle pItem=0 ) + { + return mList.InsertAt( pIndex,FbxNew< Type >( pString,(FbxHandle)pItem )); + } + + /** Remove the item at the given position in the array and delete the associated object. + * \param pIndex Position of the item to remove. + * \remarks If the index is not valid, nothing is performed. Otherwise, + * the item is removed from the array and the items are shifted to fill the + * empty slot. + */ + virtual void RemoveAt(int pIndex) + { + FbxDelete(mList.RemoveAt(pIndex)); + } + + //! Delete the array. + virtual void Clear() + { + FbxArrayDelete(mList); + } + + /** Get the string of all the item. + * \return The text of string, each item's string separated by '~'. + */ + virtual void GetText(FbxString& pText) const + { + int lCount; + for (lCount=0; lCountmString; + if (lCount +{ +public: + /** + * \name Constructors + */ + //@{ + //! Default constructor. + FbxStringList(); + + //! Copy constructor. + FbxStringList( const FbxStringList& pOriginal ); + //@} + + /** + * \name Assignment Operators + */ + //@{ + //! FbxStringList assignment function. + void CopyFrom( const FbxStringList* pOriginal ); + + //! FbxStringList assignment operator. + FbxStringList& operator=(const FbxStringList& pOriginal); + //@} +}; + +#include + +#endif /* _FBXSDK_CORE_BASE_STRING_LIST_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxtime.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxtime.h new file mode 100644 index 00000000..1deb3bf1 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxtime.h @@ -0,0 +1,648 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxtime.h +#ifndef _FBXSDK_CORE_BASE_TIME_H_ +#define _FBXSDK_CORE_BASE_TIME_H_ + +#include + +#include +#include + +#include + +#define FBXSDK_TIME_INFINITE FbxTime(FBXSDK_TC_INFINITY) +#define FBXSDK_TIME_MINUS_INFINITE FbxTime(FBXSDK_TC_MINFINITY) +#define FBXSDK_TIME_ZERO FbxTime(FBXSDK_TC_ZERO) +#define FBXSDK_TIME_EPSILON FbxTime(FBXSDK_TC_EPSILON) +#define FBXSDK_TIME_ONE_SECOND FbxTime(FBXSDK_TC_SECOND) +#define FBXSDK_TIME_ONE_MINUTE FbxTime(FBXSDK_TC_MINUTE) +#define FBXSDK_TIME_ONE_HOUR FbxTime(FBXSDK_TC_HOUR) +#define FBXSDK_TIME_ASSERT_EPSILON 0.5 +#define FBXSDK_TIME_FORWARD 1 +#define FBXSDK_TIME_BACKWARD -1 + +class FbxTimeModeObject; + +/** Class to encapsulate time units. + * \nosubgrouping + * FbxTime can measure time in hour, minute, second, frame, field, residual and also combination of these units. + * It is recommended to use FbxTime for all time related operations. For example, currently it is used in FbxGlobalSettings, + * FbxGlobalTimeSettings, FbxCache, all curve filters and all animation-related classes, etc. + * FbxTime is just used to represent a moment, to represent a period of time, FbxTimeSpan should be used. + * \see FbxTimeSpan + */ +class FBXSDK_DLL FbxTime +{ +public: + /** Long long constructor. + * \param pTime Initial value defined as a 64bit integer. + */ + FbxTime(const FbxLongLong pTime=0){ mTime = pTime; } + + /** + * \name Time Modes and Protocols + */ + //@{ + /** Time modes. + * \remarks + * EMode \c eNTSCDropFrame is used for broadcasting operations where + * clock time must be (almost) in sync with time code. To bring back color + * NTSC time code with clock time, this mode drops 2 frames per minute + * except for every 10 minutes (00, 10, 20, 30, 40, 50). 108 frames are + * dropped per hour. Over 24 hours the error is 2 frames and 1/4 of a + * frame. A time-code of 01:00:03:18 equals a clock time of 01:00:00:00 + * + * \par + * EMode \c eNTSCFullFrame represents a time address and therefore is NOT + * IN SYNC with clock time. A time code of 01:00:00:00 equals a clock time + * of 01:00:03:18. + * + * - \e eDefaultMode + * - \e eFrames120 120 frames/s + * - \e eFrames100 100 frames/s + * - \e eFrames60 60 frames/s + * - \e eFrames50 50 frames/s + * - \e eFrames48 48 frame/s + * - \e eFrames30 30 frames/s (black and white NTSC) + * - \e eFrames30Drop 30 frames/s (use when display in frame is selected, equivalent to NTSC drop) + * - \e eNTSCDropFrame ~29.97 frames/s drop color NTSC + * - \e eNTSCFullFrame ~29.97 frames/s color NTSC + * - \e ePAL 25 frames/s PAL/SECAM + * - \e eFrames24 24 frames/s Film/Cinema + * - \e eFrames1000 1000 milli/s (use for date time) + * - \e eFilmFullFrame ~23.976 frames/s + * - \e eCustom Custom frame rate value + * - \e eFrames96 96 frames/s + * - \e eFrames72 72 frames/s + * - \e eFrames59dot94 ~59.94 frames/s + * - \e eModesCount Number of time modes + */ + enum EMode + { + eDefaultMode, + eFrames120, + eFrames100, + eFrames60, + eFrames50, + eFrames48, + eFrames30, + eFrames30Drop, + eNTSCDropFrame, + eNTSCFullFrame, + ePAL, + eFrames24, + eFrames1000, + eFilmFullFrame, + eCustom, + eFrames96, + eFrames72, + eFrames59dot94, + eModesCount + }; + + /** Time protocols enumaration + * - \e eSMPTE SMPTE EProtocol + * - \e eFrameCount Frame count + * - \e eDefaultProtocol Default protocol (initialized to eFRAMES) + */ + enum EProtocol {eSMPTE, eFrameCount, eDefaultProtocol}; + + /** Set default time mode. + * \param pTimeMode Time mode identifier. + * \param pFrameRate Custom framerate, only have effect in case of pTimeMode = FbxTime::eCustom + * \remarks It is meaningless to set default time mode to \c eDefaultMode. + */ + static void SetGlobalTimeMode(EMode pTimeMode, double pFrameRate=0.0); + + /** Get default time mode. + * \return Currently set time mode identifier. + * \remarks Default time mode initial value is eFrames30. + */ + static EMode GetGlobalTimeMode(); + + /** Set default time protocol. + * \param pTimeProtocol Time protocol identifier. + * \remarks It is meaningless to set default time protocol to \c eDefaultProtocol. + */ + static void SetGlobalTimeProtocol(EProtocol pTimeProtocol); + + /** Get default time protocol. + * \return Currently set time protocol identifier. + * \remarks Default time protocol initial value is eSMPTE. + */ + static EProtocol GetGlobalTimeProtocol(); + + /** Get frame rate associated with time mode, in frames per second. + * \param pTimeMode Time mode identifier. + * \return Frame rate value. + */ + static double GetFrameRate(EMode pTimeMode); + + /** Get time mode associated with frame rate. + * \param pFrameRate The frame rate value. + * \param pPrecision The tolerance value. + * \return The corresponding time mode identifier or \c eDefaultMode if no time + * mode associated to the given frame rate is found. + */ + static EMode ConvertFrameRateToTimeMode(double pFrameRate, double pPrecision=0.00000001); + //@} + + /** + * \name Time Conversion + */ + //@{ + /** Set time in internal format. + * \param pTime Time value to set. + */ + inline void Set(FbxLongLong pTime){ mTime = pTime; } + + /** Get time in internal format. + * \return Time value. + */ + inline FbxLongLong Get() const { return mTime; } + + /** Set time in milliseconds. + * \param pMilliSeconds Time value to set. + */ + inline void SetMilliSeconds(FbxLongLong pMilliSeconds){ mTime = pMilliSeconds * FBXSDK_TC_MILLISECOND; } + + /** Get time in milliseconds. + * \return Time value. + */ + inline FbxLongLong GetMilliSeconds() const { return mTime / FBXSDK_TC_MILLISECOND; } + + /** Set time in seconds. + * \param pTime Time value to set. + */ + void SetSecondDouble(double pTime); + + /** Get time in seconds. + * \return Time value. + */ + double GetSecondDouble() const; + + /** Set time in hour/minute/second/frame/field format. + * \param pHour The hours value. + * \param pMinute The minutes value. + * \param pSecond The seconds value. + * \param pFrame The frames values. + * \param pField The field value. + * \param pTimeMode Time mode identifier. + * \remarks Parameters pHour, pMinute, pSecond, pFrame and pField are summed together. + * For example, it is possible to set the time to 83 seconds in the following + * ways: SetTime(0,1,23) or SetTime(0,0,83). + */ + void SetTime(int pHour, int pMinute, int pSecond, int pFrame=0, int pField=0, EMode pTimeMode=eDefaultMode); + + /** Set time in hour/minute/second/frame/field/residual format. + * \param pHour The hours value. + * \param pMinute The minutes value. + * \param pSecond The seconds value. + * \param pFrame The frames values. + * \param pField The field value. + * \param pResidual The hundredths of frame value. + * \param pTimeMode Time mode identifier. + * \remarks Parameters pHour, pMinute, pSecond, pFrame, pField and pResidual + * are summed together, just like above. + * pResidual represents hundredths of frame, and won't necessarily + * correspond to an exact internal value. + * + * \remarks The time mode can't have a default value, because + * otherwise SetTime(int, int, int, int, int, int) + * would be ambiguous. Please specify DEFAULT_MODE. + */ + void SetTime(int pHour, int pMinute, int pSecond, int pFrame, int pField, int pResidual, EMode pTimeMode); + + /** Get time in hour/minute/second/frame/field/residual format. + * \param pHour The returned hours value. + * \param pMinute The returned minutes value. + * \param pSecond The returned seconds value. + * \param pFrame The returned frames values. + * \param pField The returned field value. + * \param pResidual The returned hundredths of frame value. + * \param pTimeMode The time mode identifier which will dictate the extraction algorithm. + * \return \c true if the pTimeMode parameter is a valid identifier and thus the extraction + * succeeded. If the function returns \c false, all the values are set to 0. + */ + bool GetTime(int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField, int& pResidual, EMode pTimeMode=eDefaultMode) const; + + /** Snaps a time value to the time value associated with the nearest frame. + * \param pRound If \c true the return value is rounded to the nearest integer. + * \return The snapped time value. + */ + FbxTime GetFramedTime(bool pRound=true) const; + + /** Set time in frame format. + * \param pFrames The number of frames. + * \param pTimeMode The time mode identifier which will dictate the extraction algorithm. + */ + void SetFrame(FbxLongLong pFrames, EMode pTimeMode=eDefaultMode); + + /** Set time in frame format, including fractions. + * \param pFrames The number of frames in decimal value. + * \param pTimeMode The time mode identifier which will dictate the extraction algorithm. + */ + void SetFramePrecise(FbxDouble pFrames, EMode pTimeMode=eDefaultMode); + + /** Get number of hours in time. + * \return Hours value. + */ + int GetHourCount() const; + + /** Get number of minutes in time. + * \return Minutes value. + */ + int GetMinuteCount() const; + + /** Get number of seconds in time. + * \return Seconds value. + */ + int GetSecondCount() const; + + /** Get number of frames in time. + * \param pTimeMode Time mode identifier. + * \return Integer value representing the frame count. + */ + FbxLongLong GetFrameCount(EMode pTimeMode=eDefaultMode) const; + + /** Get precise number of frames in time, including fractions. + * \param pTimeMode Time mode identifier. + * \return Decimal value representing the frame count, including fractions. + */ + FbxDouble GetFrameCountPrecise(EMode pTimeMode=eDefaultMode) const; + + /** Get number of fields in time. + * \param pTimeMode Time mode identifier. + * \return Fields value. + */ + FbxLongLong GetFieldCount(EMode pTimeMode=eDefaultMode) const; + + /** Get residual time exceeding last full field. + * \param pTimeMode Time mode identifier. + * \return Residual value. + */ + int GetResidual(EMode pTimeMode=eDefaultMode) const; + + /** Test for Drop Frame mode + * \param pTimeMode Time mode identifier. + * \return True if the pTimeMode is a Drop Frame mode. + */ + static bool IsDropFrame(EMode pTimeMode=eDefaultMode); + + /** Separator char between second and frame. + * \param pTimeMode Time mode identifier. + * \return ';' is returned if pTimeMode is a DropFrame mode otherwise ':'. + */ + char GetFrameSeparator(EMode pTimeMode=eDefaultMode) const; + + /** Get time in a human readable format. + * \param pTimeString An array large enough to contain a minimum of 19 characters. + * \param pTimeStringSize Size of the pTimeString buffer used with secure functions. + * \param pInfo The amount of information if time protocol is \c eSMPTE: + *

  • 1 means hours only + *
  • 2 means hours and minutes + *
  • 3 means hours, minutes and seconds + *
  • 4 means hours, minutes, seconds and frames + *
  • 5 means hours, minutes, seconds, frames and field + *
  • 6 means hours, minutes, seconds, frames, field and residual value
+ * \param pTimeMode Requested time mode. + * \param pTimeFormat Requested time protocol. + * \return pTimeString parameter filled with a time value or set to a empty string + * if parameter pInfo is not valid. + */ + char* GetTimeString(char* pTimeString, const FbxUShort& pTimeStringSize, int pInfo=5, EMode pTimeMode=eDefaultMode, EProtocol pTimeFormat=eDefaultProtocol) const; + + enum EElement {eHours, eMinutes, eSeconds, eFrames, eField, eResidual}; + + /** Get the time in a human readable format. + * \param pStart The starting element type used to format the time string. + * \param pEnd The last element type used to format the time string. + * \param pTimeMode The time mode requested. + * \param pTimeFormat The time format requested. + * \return The human readable time string. */ + FbxString GetTimeString(EElement pStart=eHours, EElement pEnd=eResidual, EMode pTimeMode=eDefaultMode, EProtocol pTimeFormat=eDefaultProtocol) const; + + /** Set time in a human readable format. + * \param pTime An array of a maximum of 18 characters. + * If time protocol is \c eSMPTE, pTimeString must be formatted this way: + * "[hours:]minutes[:seconds[.frames[.fields]]]". Hours, minutes, seconds, + * frames and fields are parsed as integers and brackets indicate optional + * parts. + * If time protocol is \c eFRAME, pTimeString must be formatted this way: + * "frames". Frames is parsed as a 64 bits integer. + * \param pTimeMode Given time mode. + * \param pTimeFormat Given time protocol. + * \return True if the set time string succeed, otherwise return false. + */ + bool SetTimeString(const char* pTime, EMode pTimeMode=eDefaultMode, EProtocol pTimeFormat=eDefaultProtocol); + //@} + + /** + * \name Time Operators + */ + //@{ + /** Equality operator. + * \param pTime The FbxTime to be compared. + * \return \c true if equal, \c false otherwise. + */ + inline bool operator==(const FbxTime& pTime) const { return mTime == pTime.mTime; } + + /** Inequality operator. + * \param pTime The FbxTime to be compared. + * \return \c true if unequal, \c false otherwise. + */ + inline bool operator!=(const FbxTime& pTime) const { return mTime != pTime.mTime; } + + /** Superior or equal to operator. + * \param pTime The FbxTime to be compared. + * \return \c true if this FbxTime is superior or equal to the passed FbxTime, \c false otherwise. + */ + inline bool operator>=(const FbxTime& pTime) const { return mTime >= pTime.mTime; } + + /** Inferior or equal to operator. + * \param pTime The FbxTime to be compared. + * \return \c true if this FbxTime is inferior or equal to the passed FbxTime, \c false otherwise. + */ + inline bool operator<=(const FbxTime& pTime) const { return mTime <= pTime.mTime; } + + /** Superior to operator. + * \param pTime The FbxTime to be compared. + * \return \c true if this FbxTime is superior to the passed FbxTime, \c false otherwise. + */ + inline bool operator>(const FbxTime& pTime) const { return mTime > pTime.mTime; } + + /** Inferior to operator. + * \param pTime The FbxTime to be compared. + * \return \c true if this FbxTime is inferior to the passed FbxTime, \c false otherwise. + */ + inline bool operator<(const FbxTime& pTime) const { return mTime < pTime.mTime; } + + /** Assignment operator. + * \param pTime The FbxTime to be assigned. + */ + inline FbxTime& operator=(const FbxTime& pTime) { mTime = pTime.mTime; return *this; } + + /** Addition operator. + * \param pTime The FbxTime to be added. + * \return This FbxTime after addition. + */ + inline FbxTime& operator+=(const FbxTime& pTime) { mTime += pTime.mTime; return *this; } + + /** Subtraction operator. + * \param pTime The FbxTime to be subtracted. + * \return This FbxTime after subtraction. + */ + inline FbxTime& operator-=(const FbxTime& pTime) { mTime -= pTime.mTime; return *this; } + + /** Addition operator. + * \param pTime The FbxTime to be added. + * \return A temporary FbxTime after addition. + */ + FbxTime operator+(const FbxTime& pTime) const; + + /** Subtraction operator. + * \param pTime The FbxTime to be subtracted. + * \return A temporary FbxTime after subtraction. + */ + FbxTime operator-(const FbxTime& pTime) const; + + /** Multiplication operator. + * \param Mult Multiply this FbxTime by int Mult. + * \return A temporary FbxTime after multiplication. + */ + FbxTime operator*(const int Mult) const; + + /** Division operator. + * \param pTime Divide this FbxTime by pTime. + * \return A temporary FbxTime after division. + */ + FbxTime operator/(const FbxTime& pTime) const; + + /** Multiplication operator. + * \param pTime Multiply this FbxTime by pTime. + * \return A temporary FbxTime after multiplication. + */ + FbxTime operator*(const FbxTime& pTime) const; +/* + //! Increment time of one unit of the internal format (prefix form). + inline FbxTime& operator++() { mTime += 1; return (*this); } + + //! Increment time of one unit of the internal format (postfix form). + inline const FbxTime operator++(int) { FbxTime lOld = *this; ++(*this); return lOld; } + + //! Decrement time of one unit of the internal format (prefix form). + inline FbxTime& operator--() { mTime -= 1; return (*this); } + + //! Decrement time of one unit of the internal format (postfix form). + inline const FbxTime operator--(int) { FbxTime lOld = *this; --(*this); return lOld; }*/ + //@} + + /** One frame value for a specified time mode. + * \param pTimeMode Time mode identifier. + * \return the time code of a one frame. + */ + static FbxLongLong GetOneFrameValue(EMode pTimeMode=eDefaultMode); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + // Keep compatibility with old fbx format + enum EOldMode + { + eOLD_DEFAULT_MODE, //Default mode set using FbxTime::SetGlobalTimeMode(EMode pTimeMode) + eOLD_CINEMA, //24 frameOLD_s/s + eOLD_PAL, //25 frameOLD_s/s PAL/SECAM + eOLD_FRAMES30, //30 frameOLD_s/s BLACK & WHITE NTSC + eOLD_NTSC_DROP_FRAME, //29.97002617 frameOLD_s/s COLOR NTSC + eOLD_FRAMES50, //50 frameOLD_s/s + eOLD_FRAMES60, //60 frameOLD_s/s + eOLD_FRAMES100, //100 frameOLD_s/s + eOLD_FRAMES120, //120 frameOLD_s/s + eOLD_NTSC_FULL_FRAME, //29.97002617 frameOLD_s/s COLOR NTSC + eOLD_FRAMES30_DROP, //30 frameOLD_s/s + eOLD_FRAMES1000 //1000 frameOLD_s/s + }; + +private: + FbxLongLong mTime; //In 1 / 46,186,158,000 Seconds + + static EMode gsGlobalTimeMode; + static EProtocol gsGlobalTimeProtocol; + static FbxTimeModeObject* gsTimeObject; + + void InternalSetTime(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField, EMode pTimeMode); + + friend FBXSDK_DLL FbxTime::EMode FbxGetGlobalTimeMode(); + friend FBXSDK_DLL FbxTimeModeObject* FbxGetGlobalTimeModeObject(); + friend FBXSDK_DLL FbxTime::EProtocol FbxGetGlobalTimeFormat(); + friend FBXSDK_DLL void FbxSetGlobalTimeMode(FbxTime::EMode pTimeMode, double pFrameRate); + friend FBXSDK_DLL void FbxSetGlobalTimeFormat(FbxTime::EProtocol pTimeFormat); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** FbxTime in seconds constructor. + * \param pTime + */ +FBXSDK_DLL inline FbxTime FbxTimeSeconds(const FbxDouble& pTime=0.0) +{ + FbxTime lTime; + lTime.SetSecondDouble(pTime); + return lTime; +} + +/** Class to encapsulate time intervals. + * \nosubgrouping + * \see FbxTime + */ +class FBXSDK_DLL FbxTimeSpan +{ +public: + //! Constructor. + FbxTimeSpan() {} + + /** Constructor. + * \param pStart Beginning of the time interval. + * \param pStop Ending of the time interval. + */ + FbxTimeSpan(FbxTime pStart, FbxTime pStop){ mStart = pStart; mStop = pStop; } + + /** Set start and stop time. + * \param pStart Beginning of the time interval. + * \param pStop Ending of the time interval. + */ + inline void Set(FbxTime pStart, FbxTime pStop){ mStart = pStart; mStop = pStop; } + + /** Set start time. + * \param pStart Beginning of the time interval. + */ + inline void SetStart(FbxTime pStart){ mStart = pStart; } + + /** Set stop time. + * \param pStop Ending of the time interval. + */ + inline void SetStop(FbxTime pStop){ mStop = pStop; } + + /** Get start time. + * \return Beginning of time interval. + */ + inline FbxTime GetStart() const { return mStart; } + + /** Get stop time. + * \return Ending of time interval. + */ + inline FbxTime GetStop() const { return mStop; } + + /** Get time interval in absolute value. + * \return Time interval. + */ + inline FbxTime GetDuration() const { if( mStop > mStart ) return mStop - mStart; else return mStart - mStop; } + + /** Get time interval. + * \return Signed time interval. + */ + inline FbxTime GetSignedDuration() const { return mStop - mStart; } + + /** Get direction of the time interval. + * \return \c FBXSDK_TIME_FORWARD if time interval is forward, \c FBXSDK_TIME_BACKWARD if backward. + */ + inline int GetDirection() const { if( mStop >= mStart ) return FBXSDK_TIME_FORWARD; else return FBXSDK_TIME_BACKWARD; } + + /** Return \c true if the time is inside the timespan. + * \param pTime Judge whether pTime is inside the timespan. + * \return \c True if is, \c false otherwise. + */ + bool IsInside(FbxTime pTime) const; + + /** Return the intersection of the two time spans. + * \param pTime + * \return The intersection of pTime and this FbxTimeSpan. + */ + FbxTimeSpan Intersect(const FbxTimeSpan& pTime) const; + + /** Inequality operator. + * \param pTime FbxTimeSpan compared with this one. + * \return \c True if unequal, \c false otherwise. + */ + bool operator!=(const FbxTimeSpan& pTime) const; + + /** Equality operator. + * \param pTime FbxTimeSpan compared with this one. + * \return \c True if equal, \c false otherwise. + */ + bool operator==(const FbxTimeSpan& pTime) const; + + /** Unite with another FbxTimeSpan + * \param pSpan The FbxTimeSpan + * \param pDirection FBXSDK_TIME_FORWARD or FBXSDK_TIME_BACKWARD + * \remarks This function assumes both of the FbxTimeSpan objects are in the same direction. + * Use FBXSDK_TIME_FORWARD when start < stop in both timespan + * Use FBXSDK_TIME_BACKWARD when start > stop in both timespan + */ + void UnionAssignment(const FbxTimeSpan& pSpan, int pDirection=FBXSDK_TIME_FORWARD); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + FbxTime mStart; + FbxTime mStop; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +class FBXSDK_DLL FbxLocalTime +{ +public: + FbxLocalTime(); + + int mYear; + int mMonth; + int mDay; + int mHour; + int mMinute; + int mSecond; + int mMillisecond; +}; + +FBXSDK_DLL void FbxGetCurrentLocalTime(FbxLocalTime& pLocalTime); + +FBXSDK_DLL FbxTime::EMode FbxGetGlobalTimeMode(); +FBXSDK_DLL FbxTimeModeObject* FbxGetGlobalTimeModeObject(); +FBXSDK_DLL FbxTime::EProtocol FbxGetGlobalTimeFormat(); +FBXSDK_DLL void FbxSetGlobalTimeMode(FbxTime::EMode pTimeMode, double pFrameRate=0.0); +FBXSDK_DLL void FbxSetGlobalTimeFormat(FbxTime::EProtocol pTimeFormat); + +// Use those functions to keep the compatibility with old time mode since we added new time mode. +FBXSDK_DLL FbxTime::EOldMode FbxGetOldTimeModeCorrespondance(FbxTime::EMode pMode); +FBXSDK_DLL FbxTime::EMode FbxGetTimeModeFromOldValue(FbxTime::EOldMode pOldMode); + +// We now store the framerate instead of the time mode. +FBXSDK_DLL FbxTime::EMode FbxGetTimeModeFromFrameRate(char* pFrameRate); +FBXSDK_DLL void FbxGetControlStringList(char* pControlString, FbxTime::EProtocol pTimeFormat); +FBXSDK_DLL const char* FbxGetGlobalFrameRateString(FbxTime::EMode pTimeMode); +FBXSDK_DLL const char* FbxGetGlobalTimeModeString(FbxTime::EMode pTimeMode); +FBXSDK_DLL double FbxGetFrameRate(FbxTime::EMode pTimeMode); + +// Time format +FBXSDK_DLL FbxTime::EProtocol FbxSelectionToTimeFormat(int pSelection); +FBXSDK_DLL FbxTime::EMode FbxSelectionToTimeMode(int pSelection); +FBXSDK_DLL int FbxTimeToSelection(FbxTime::EMode pTimeMode=FbxTime::eDefaultMode, int pTimeFormat=FbxTime::eDefaultProtocol); +FBXSDK_DLL const char* FbxGetTimeModeName(FbxTime::EMode pTimeMode); +FBXSDK_DLL int FbxGetFrameRateStringListIndex(FbxTime::EMode pTimeMode); +FBXSDK_DLL bool FbxIsValidCustomFrameRate(double pFramerate); +FBXSDK_DLL bool FbxGetNearestCustomFrameRate(double pFramerate, double& pNearestRate); + +#include + +#endif /* _FBXSDK_CORE_BASE_TIME_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxtimecode.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxtimecode.h new file mode 100644 index 00000000..6e025e16 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxtimecode.h @@ -0,0 +1,99 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxtimecode.h +#ifndef _FBXSDK_CORE_BASE_TIMECODE_H_ +#define _FBXSDK_CORE_BASE_TIMECODE_H_ + +#include + +#include + +#define FBXSDK_TC_ZERO FBXSDK_LONGLONG(0) +#define FBXSDK_TC_EPSILON FBXSDK_LONGLONG(1) +#define FBXSDK_TC_MINFINITY FBXSDK_LONGLONG(-0x7fffffffffffffff) +#define FBXSDK_TC_INFINITY FBXSDK_LONGLONG(0x7fffffffffffffff) +#define FBXSDK_TC_FIX_DEN FBXSDK_LONGLONG(100000000) + +#define FBXSDK_TC_MILLISECOND FBXSDK_LONGLONG(46186158) +#define FBXSDK_TC_SECOND FbxLongLong(FBXSDK_TC_MILLISECOND*1000) +#define FBXSDK_TC_MINUTE FbxLongLong(FBXSDK_TC_SECOND*60) +#define FBXSDK_TC_HOUR FbxLongLong(FBXSDK_TC_MINUTE*60) +#define FBXSDK_TC_DAY FbxLongLong(FBXSDK_TC_HOUR*24) + +// Frame @ 30 Hz +#define FBXSDK_TC_NTSC_FIELD FbxLongLong(FBXSDK_TC_SECOND/30/2) +#define FBXSDK_TC_NTSC_FRAME FbxLongLong(FBXSDK_TC_SECOND/30) + +// Frame @ 29.9700299700 Hz +#define FBXSDK_TC_MNTSC_FIELD FbxLongLong(FBXSDK_TC_MNTSC_FRAME/2) +#define FBXSDK_TC_MNTSC_FRAME FbxLongLong(FBXSDK_TC_SECOND/30*1001/1000) +#define FBXSDK_TC_MNTSC_2_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*2) +#define FBXSDK_TC_MNTSC_30_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*30) +#define FBXSDK_TC_MNTSC_1798_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*1798) // leap minute +#define FBXSDK_TC_MNTSC_1800_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*1800) // ~1 minute +#define FBXSDK_TC_MNTSC_17982_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*17982) // ~10 minutes +#define FBXSDK_TC_MNTSC_107892_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*107892) // ~1 hour +#define FBXSDK_TC_MNTSC_108000_FRAMES FbxLongLong(FBXSDK_TC_MNTSC_FRAME*108000) + +// For 29.9700299700 non-drop, btw : same values as with 23.976 +#define FBXSDK_TC_MNTSC_1_SECOND FbxLongLong(FBXSDK_TC_MNTSC_FRAME*30) // 1 frame * 30 +#define FBXSDK_TC_MNTSC_1_MINUTE FbxLongLong(FBXSDK_TC_MNTSC_1_SECOND*60) // 1 minute (1800 frames) +#define FBXSDK_TC_MNTSC_1_HOUR FbxLongLong(FBXSDK_TC_MNTSC_1_SECOND*3600) // 1 hour + +#define FBXSDK_TC_MNTSC_NUM FbxULong(FBXSDK_TC_FIX_DEN*1000*30/1001) +#define FBXSDK_TC_MNTSC_DEN FBXSDK_TC_FIX_DEN + +// Frame @ 25 Hz +#define FBXSDK_TC_PAL_FIELD FbxLongLong(FBXSDK_TC_SECOND/25/2) +#define FBXSDK_TC_PAL_FRAME FbxLongLong(FBXSDK_TC_SECOND/25) + +// Frame @ 24 Hz +#define FBXSDK_TC_FILM_FRAME FbxLongLong(FBXSDK_TC_SECOND/24) + +// Frame @ 23.9760239760 Hz +#define FBXSDK_TC_MFILM_FIELD FbxLongLong(FBXSDK_TC_MFILM_FRAME/2) +#define FBXSDK_TC_MFILM_FRAME FbxLongLong(FBXSDK_TC_SECOND/24*1001/1000) +#define FBXSDK_TC_MFILM_1_SECOND FbxLongLong(FBXSDK_TC_MFILM_FRAME*24) // 1 frame * 24 +#define FBXSDK_TC_MFILM_1_MINUTE FbxLongLong(FBXSDK_TC_MFILM_1_SECOND*60) // 1 minute (1440 frames) +#define FBXSDK_TC_MFILM_1_HOUR FbxLongLong(FBXSDK_TC_MFILM_1_SECOND*3600) // 1 hour + +#define FBXSDK_TC_MFILM_NUM FbxULong(FBXSDK_TC_FIX_DEN*1000*24/1001) +#define FBXSDK_TC_MFILM_DEN FBXSDK_TC_FIX_DEN + +////////////////////////////////////////////////////////////////////////////////////////// + +#define FBXSDK_TC_REM(quot, num, den) ((quot) = (num) / (den), (quot) * (den)) +#define FBXSDK_TC_HOUR_REM(quot, num, den) ((quot) = ((num - (-FbxLongLong(num < 0) & (den - 1))) / (den)), (quot) * (den)) + +FBXSDK_DLL FbxLongLong FbxTCSeconds(FbxLongLong pTime); +FBXSDK_DLL FbxLongLong FbxTCMinutes(FbxLongLong pTime); +FBXSDK_DLL FbxLongLong FbxTCHours(FbxLongLong pTime); +FBXSDK_DLL FbxLongLong FbxTCSetRate(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, FbxLongLong pPeriod); +FBXSDK_DLL FbxLongLong FbxTCGetRate(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, FbxLongLong pPeriod); +FBXSDK_DLL FbxLongLong FbxTCSetNTSC(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); +FBXSDK_DLL FbxLongLong FbxTCGetNTSC(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); +FBXSDK_DLL FbxLongLong FbxTCSetMNTSCnd(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); +FBXSDK_DLL FbxLongLong FbxTCGetMNTSCnd(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); +FBXSDK_DLL FbxLongLong FbxTCSetMNTSC_2Xnd(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); +FBXSDK_DLL FbxLongLong FbxTCGetMNTSC_2Xnd(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); +FBXSDK_DLL FbxLongLong FbxTCSetMNTSC(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); +FBXSDK_DLL FbxLongLong FbxTCGetMNTSC(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); +FBXSDK_DLL FbxLongLong FbxTCSetPAL(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); +FBXSDK_DLL FbxLongLong FbxTCGetPAL(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); +FBXSDK_DLL FbxLongLong FbxTCSetFILM(int pHour, int pMinute, int pSecond, FbxLongLong pFrame); +FBXSDK_DLL FbxLongLong FbxTCGetFILM(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame); +FBXSDK_DLL FbxLongLong FbxTCSetFILMND(int pHour, int pMinute, int pSecond, FbxLongLong pFrame, int pField); +FBXSDK_DLL FbxLongLong FbxTCGetFILMND(FbxLongLong pTime, int& pHour, int& pMinute, int& pSecond, int& pFrame, int& pField); + +#include + +#endif /* _FBXSDK_CORE_BASE_TIMECODE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxutils.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxutils.h new file mode 100644 index 00000000..34b6ac24 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/base/fbxutils.h @@ -0,0 +1,168 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxutils.h +#ifndef _FBXSDK_CORE_BASE_UTILITIES_H_ +#define _FBXSDK_CORE_BASE_UTILITIES_H_ + +#include + +#include +#include + +#include + +#ifndef FBXSDK_ENV_WINSTORE + /** Retrieve the environment variable value. + * \return A new string containing the environment variable value. */ + FBXSDK_DLL FbxString FbxGetEnv(const char* pEnvVar); + + /** Get the application directory + * \return The application directory. */ + FBXSDK_DLL FbxString FbxGetApplicationDirectory(); +#endif + +/** Retrieve the system temporary folder path name. +* \return A new string containing the system temporary folder path name. */ +FBXSDK_DLL FbxString FbxGetSystemTempPath(); + +/** Override the system temporary folder path name. +* \param pPathUTF8 The system temporary folder to use for override. */ +FBXSDK_DLL void FbxSetSystemTempPath(const char* pPathUTF8); + +/** Retrieve the working directory of the system in UTF8 format. +* \return A string that contain the current working directory of the system. */ +FBXSDK_DLL FbxString FbxGetCurrentWorkPath(); + +/** Change the working directory of the system. */ +FBXSDK_DLL void FbxSetCurrentWorkPath(const char* pPath_UTF8); + +class FBXSDK_DLL FbxPathUtils +{ +public: + /** Bind together a root path with a file path. + * \param pRootPath The root path that will get binded to the file path. + * \param pFilePath The file path to bind to the root path. + * \param pCleanPath If true, the resulting path will be cleaned via FbxPathUtils::Clean(). + * \return Both paths binded together forming a new file path. + * \remark If the file path is already a full valid path, pFilePath is returned. + */ + static FbxString Bind(const char* pRootPath, const char* pFilePath, bool pCleanPath=true); + + /** Extract the folder name from the given file path. + * \param pFilePath The given file path. + * \return The folder name. If there isn't any '\\' or '/' in the given file path, it will return pFilePath. + */ + static FbxString GetFolderName(const char* pFilePath); + + /** Extract file name from the given file path. + * \param pFilePath The given file path. + * \param pWithExtension Decide the file name with extension or without extension. + * If it is true, return the file name with extension; + * if it is false, return the file name without extension. + */ + static FbxString GetFileName(const char* pFilePath, bool pWithExtension=true); + + /** Extract the file extension in the given file path. + * \param pFilePath The file path to extract the extension. + * \return The file extension without the '.' character. + * \remark Return empty string if the file path doesn't contain a valid extension. + */ + static FbxString GetExtensionName(const char* pFilePath); + + /** Change or append a file extension to the specified file path. + * \param pFilePath The file path to change the file extension + * \param pExtension The extension to change or append to the file path. + * \return The file path with the file extension changed/added. + * \remark If the file path doesn't end with a valid file name, pFilePath is returned. + */ + static FbxString ChangeExtension(const char* pFilePath, const char* pExtension); + + //! Test if the given path is relative path, if it is return true. + static bool IsRelative(const char* pPath); + + /** Get the given new path's relative path to the given root path. + * \param pRootPath The given root path + * \param pNewPath The given new path. If it is only file name, the default directory is work directory. + * \return The relative path. + * \remarks If the given two paths have the same drive, the function will turn '\\' in the relative path to '/'. + */ + static FbxString GetRelativePath(const char* pRootPath, const char* pNewPath); + + //! Get the given new path's relative path to the given root path. + static FbxString GetRelativeFilePath(const char* pRootPath, const char* pNewFilePath); + + /** Get the full path of given path (if the given path is relative path, + * it will take current directory as default root path.) + */ + static FbxString Resolve(const char* pRelPath); + + //! Clean the redundant and useless denotations in given path name. + static FbxString Clean(const char* pPath); + + /** Generate full safe file path name you can use to create new file. + * \param pFolder The folder where the file name should be attempted to be created. + * \param pPrefix The prefix of generated file name. + * \return A valid file path that can safely be used to create a new file. + */ + static FbxString GenerateFileName(const char* pFolder, const char* pPrefix); + + /** Verify if the specified folder path exist. + * \param pFolderPathUTF8 The folder path to test its existance. + * \return True if the folder path exist, false otherwise. + * \remark This function work for relative paths. It will search from the current work path. */ + static bool Exist(const char* pFolderPathUTF8); + + /** Create the specified folder path if it doesn't exist. + * \param pFolderPathUTF8 The folder path to create, in UTF8 encoding. + * \return True if folder path already exist, or if it was successfully created, false otherwise. + * \remark This function will create multiple folders if needed, and it also work for relative paths. */ + static bool Create(const char* pFolderPathUTF8); + + /** Delete the specified folder path and all its content recursively. + * \param pFolderPathUTF8 The folder path to delete, in UTF8 encoding. + * \return True if folder path was successfully deleted, false otherwise. + * \remark This function work for relative paths. It will search from the current work path. */ + static bool Delete(const char* pFolderPathUTF8); + +#ifndef FBXSDK_ENV_WINSTORE + /** Verify if the folder contains items or not. + * \param pFolderPath_UTF8 The folder path to test if it contains items. + * \return True if the folder contain any kind of entry type. */ + static bool IsEmpty(const char* pFolderPath_UTF8); +#endif +}; + +/** Global accessor to an FbxStatus object. +* This object is not used internally by the FBX SDK. It is provided for convenience and its usage is shown in the custom reader/writers samples. */ +class FBXSDK_DLL FbxStatusGlobal +{ +public: + static FbxStatus& GetRef() + { + if( !mStatusPtr ) + { + mStatusPtr = FbxNew(); + } + return *mStatusPtr; + } + +private: + FbxStatusGlobal(){ mStatusPtr = NULL; } + ~FbxStatusGlobal(){ FbxDelete(mStatusPtr); } + static FbxStatusGlobal sgFbxStatusGlobal; + static FbxStatus* mStatusPtr; +}; + + +#include + +#endif /* _FBXSDK_CORE_BASE_UTILITIES_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxclassid.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxclassid.h new file mode 100644 index 00000000..a98eed17 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxclassid.h @@ -0,0 +1,166 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxclassid.h +#ifndef _FBXSDK_CORE_CLASSID_H_ +#define _FBXSDK_CORE_CLASSID_H_ + +#include + +#include + +class FbxClassIdInfo; +class FbxObject; +class FbxPropertyHandle; +class FbxManager; + +//! The function pointer type for object constructor functions. +typedef FbxObject* (*FbxObjectCreateProc)(FbxManager& pManager, const char* pName, const FbxObject* pFrom); + +/** Internal class used to differentiate objects during run-time. Essentially, each class has an unique ClassId, that the +* system can request in order to test if the class match the description. This class implement the necessary tools to be able +* to perform hierarchic class testing. This means that a class B that inherits from the class A will answer yes to a "Is A" +* query of type A or B, but will answer no to a class C that can still inherit from A. All class must inherit from FbxObject +* before they can have their own ClassId. When using the standard macros to create new types of objects in the FBX SDK, a +* static ClassId will automatically be generated for that new class. +* +* When objects are exported to an FBX file, their class type is maintained using 3 sort of strings. They are the Object Type +* string, the Object Sub Type string and the Object Type Prefix. There is no good or bad way to choose the value of these +* identifiers, but it is preferable to use meaningful values to keep the ASCII version of FBX readable and easy to understand. +* \see FbxObject */ +class FBXSDK_DLL FbxClassId +{ +public: + //! Constructor. + FbxClassId(); + + /** Advanced constructor were we can specify the general parameters for this ClassId. + * \param pClassName The name of the class represented. + * \param pParentClassId The parent ClassId of this class. + * \param pConstructor A function pointer to a construction method for this ClassId. + * \param pFBXType The FBX file Object Type string associated to this class. + * \param pFBXSubType The FBX file Object Sub Type string associated to this class. */ + FbxClassId(const char* pClassName, const FbxClassId& pParentClassId, FbxObjectCreateProc pConstructor=0, const char* pFBXType=NULL, const char* pFBXSubType=NULL); + + //! Destructor. + void Destroy(); + + /** Retrieve the class name. + * \return The class identification string name. */ + const char* GetName() const; + + /** Retrieve the parent ClassId. + * \return The parent ClassId. */ + FbxClassId GetParent() const; + + /** Create an instance of this class. + * \param pManager The FBX SDK Manager to be used to instantiate this object. This allow the object to use the same memory manager as the provided manager. + * \param pName The name to assign to this new object instance. + * \param pFrom An object to clone if it matches the same ClassId. This is an optional parameter. + * \return The newly created instance of this class. */ + FbxObject* Create(FbxManager& pManager, const char* pName, const FbxObject* pFrom); + + /** Override the function pointer method to construct this object. + * \param pConstructor A newly defined function pointer to a construction method to replace the existing one. + * \return True if the operation was successful. */ + bool Override(FbxObjectCreateProc pConstructor); + + /** Test if this class is a hierarchical children of the specified class type. This is the standard method to differentiate object classes. + * \param pId The class type to test against self. + * \return True if the object is a hierarchical children of the type specified. + * \remark This function will perform a complete search until it reaches the top level class, but it will stop as soon as one ClassId matches the test. */ + bool Is(const FbxClassId& pId) const; + + /** Equivalence operator. + * \param pClassId The class type to test against self. + * \return \c true if the ClassId is exactly the same, \c false otherwise. + * \remark This function only perform direct equality test, and doesn't test hierarchic children. */ + bool operator==(const FbxClassId& pClassId) const; + + /** Inequivalence operator. + * \param pClassId The class type to test against self. + * \return \c true if the ClassId is not the same, \c false otherwise. + * \remark This function only perform direct inequality test, and doesn't test hierarchic children. */ + bool operator!=(const FbxClassId& pClassId) const; + + /** Retrieve the FBX file Object Type string associated to this class. + * \param pAskParent If \c true, retrieve the parent ClassId, but only if self ClassId is not valid. + * \return The FBX file Object Type string associated to this class. */ + const char* GetFbxFileTypeName(bool pAskParent=false) const; + + /** Retrieve the FBX file Object Sub Type string associated to this class. + * \return The FBX file Object Sub Type string associated to this class. */ + const char* GetFbxFileSubTypeName() const; + + /** Find out if self ClassId is valid or not. + * \return \c true if self ClassId is valid, \c false otherwise. */ + inline bool IsValid() const { return mClassInfo ? true : false; } + + /** Set the Object Type Prefix string associated to this class. This will change the "ObjectTypePrefix::" found in front + * of object name in the FBX file. This is useful to differentiate objects by their name without using the Object Type or + * Sub Type strings in the file. + * \param pObjectTypePrefix The Object Type prefix string. */ + void SetObjectTypePrefix(const char* pObjectTypePrefix); + + /** Retrieve the Object Type Prefix string associated to this class. + * \return The Object Type Prefix string. */ + const char* GetObjectTypePrefix(); + + /** Retrieve the root property handle of this class. This is useful to access the default property hierarchy for this + * class. This allow users to retrieve information such as the default value for all properties of this class. + * \return The root property handle for this class. */ + FbxPropertyHandle* GetRootClassDefaultPropertyHandle(); + + /** Increase the instance reference count for this class type. + * \return the new count of reference to this class after increment. */ + int ClassInstanceIncRef(); + + /** Decrease the instance reference count for this class type. + * \return the new count of reference to this class after decrement. */ + int ClassInstanceDecRef(); + + /** Retrieve the instance reference count for this class type. + * \return The reference count of this class type. */ + int GetInstanceRef(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + inline FbxClassIdInfo* GetClassIdInfo() { return mClassInfo; } + inline const FbxClassIdInfo* GetClassIdInfo() const { return mClassInfo; } + +private: + FbxClassId(FbxClassIdInfo* mClassInfo); + + bool SetFbxFileTypeName(const char* pName); + bool SetFbxFileSubTypeName(const char* pName); + + FbxClassIdInfo* mClassInfo; + + friend class FbxManager; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +//! Functor to compare FbxClassId +struct FbxClassIdCompare +{ + inline int operator()(const FbxClassId& pKeyA, const FbxClassId& pKeyB) const + { + const FbxClassIdInfo* lKeyA = pKeyA.GetClassIdInfo(); + const FbxClassIdInfo* lKeyB = pKeyB.GetClassIdInfo(); + return lKeyA < lKeyB ? -1 : (lKeyA > lKeyB ? 1 : 0); + } +}; + +#include + +#endif /* _FBXSDK_CORE_CLASSID_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxconnectionpoint.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxconnectionpoint.h new file mode 100644 index 00000000..21057b67 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxconnectionpoint.h @@ -0,0 +1,312 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxconnectionpoint.h +#ifndef _FBXSDK_CORE_CONNECTION_POINT_H_ +#define _FBXSDK_CORE_CONNECTION_POINT_H_ + +#include + +#include + +#include + +class FBXSDK_DLL FbxConnection +{ +public: + enum EType + { + eNone = 0, + // System or user + eSystem = 1 << 0, + eUser = 1 << 1, + eSystemOrUser = eUser | eSystem, + // Type of Link + eReference = 1 << 2, + eContains = 1 << 3, + eData = 1 << 4, + eLinkType = eReference | eContains | eData, + eDefault = eUser | eReference, + eUnidirectional = 1 << 7 + }; +}; + +class FbxConnectionPointFilter; + +class FBXSDK_DLL FbxConnectionPoint +{ +public: + enum EDirection + { + eDirSrc = 1 << 0, // Contains sources + eDirDst = 1 << 1, // Contains destinations + eDirUni = 1 << 2, // Connection is not 2 ways + eDirBoth = eDirSrc | eDirDst, + eDirMask = eDirSrc | eDirDst | eDirUni + }; + + enum EType + { + eStandard = 0, + eSubConnection = 1 << 3, // Connect is a sub Connect of another + eTypeMask = eSubConnection + }; + + enum EAttribute + { + eDefault = 0, + eCache = 1 << 4, + eAttributeMask = eCache + }; + + enum EAllocFlag + { + eNotAllocated = 0, + eAllocated = 1 << 5, + eAllocFlagMask = eAllocated + }; + + enum ECleanedFlag + { + eNotCleaned = 0, + eCleaned = 1 << 6, + eCleanedFlagMask = eCleaned + }; + + enum EEvent + { + eSrcConnectRequest, + eDstConnectRequest, + eSrcConnect, + eDstConnect, + eSrcConnected, + eDstConnected, + eSrcDisconnect, + eDstDisconnect, + eSrcDisconnected, + eDstDisconnected, + eSrcReplaceBegin, + eSrcReplaceEnd, + eDstReplaceBegin, + eDstReplaceEnd, + eSrcReorder, + eSrcReordered + }; + + // Constructor/Destructor + FbxConnectionPoint(void* pData=0); + virtual ~FbxConnectionPoint(); + + void SetFilter(FbxConnectionPointFilter* pConnectFilter, EType pType=eStandard); + void InternalClear(); + + //! Clear the ConnectList without any regards to what is connected + void WipeConnectionList(); + void Destroy(); + void SubConnectRemoveAll(); + + inline FbxConnectionPoint* GetSubOwnerConnect(){ return GetConnectType() == eSubConnection ? mOwner : NULL; } + inline FbxConnectionPointFilter* GetFilter(){ return mFilter; } + + virtual bool IsInReplace(FbxConnectionPoint* p1, FbxConnectionPoint* p2); + + inline void SetConnectType(EType pType){ mFlags = (mFlags & ~eTypeMask) | pType; } + inline EType GetConnectType(){ return EType(mFlags & eTypeMask); } + inline void SetDirection(int pDirections){ mFlags = (mFlags & ~eDirMask) | pDirections; } + inline EDirection GetDirection(){ return EDirection(mFlags & eDirMask); } + inline void SetAttribute(int pAttributes){ mFlags = (mFlags & ~eAttributeMask) | pAttributes; } + inline EAttribute GetAttribute(){ return EAttribute(mFlags & eAttributeMask); } + inline void SetAllocatedFlag(bool pBool){ mFlags = ( pBool ) ? mFlags | eAllocated : mFlags & ~eAllocFlagMask; } + inline bool GetAllocatedFlag(){ return ( mFlags & eAllocFlagMask ) ? true : false; } + inline void SetCleanedFlag(bool pBool){ mFlags = ( pBool ) ? mFlags | eCleaned : mFlags & ~eCleanedFlagMask; } + inline bool GetCleanedFlag(){ return ( mFlags & eCleanedFlagMask ) ? true : false; } + + bool IsValidSrc(FbxConnectionPoint* pConnect); + bool IsValidDst(FbxConnectionPoint* pConnect); + bool IsValidSrcConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType); + bool IsValidDstConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType); + bool RequestValidSrcConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType ); + bool RequestValidDstConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType ); + + bool ConnectSrc(FbxConnectionPoint* pSrc,FbxConnection::EType pConnectionType=FbxConnection::eNone); + bool ConnectDst(FbxConnectionPoint* pDst,FbxConnection::EType pConnectionType=FbxConnection::eNone); + bool ConnectSrcAt(int pDst_SrcIndex, FbxConnectionPoint* pSrc, FbxConnection::EType pConnectionType=FbxConnection::eNone); + bool ConnectDstAt(int pSrc_DstIndex, FbxConnectionPoint* pDst, FbxConnection::EType pConnectionType=FbxConnection::eNone); + static bool ConnectConnect(FbxConnectionPoint* pSrc,FbxConnectionPoint* pDst,FbxConnection::EType pConnectionType); + static bool ConnectAt(FbxConnectionPoint* pSrc, int pSrc_DstIndex, FbxConnectionPoint* pDst, int pDst_SrcIndex, FbxConnection::EType pConnectionType); + + bool DisconnectDst(FbxConnectionPoint* pSrc); + bool DisconnectSrc(FbxConnectionPoint* pSrc); + void DisconnectAllSrc(); + void DisconnectAllDst(); + static bool DisconnectConnect(FbxConnectionPoint* pSrc,FbxConnectionPoint* pDst); + bool DisconnectDstAt(int pIndex); + bool DisconnectSrcAt(int pIndex); + + bool ReplaceInDst(FbxConnectionPoint* pDstOld, FbxConnectionPoint* pDstNew, int pIndexInNew); + bool ReplaceInSrc(FbxConnectionPoint* pSrcOld, FbxConnectionPoint* pSrcNew, int pIndexInNew); + bool ReplaceDstAt(int pIndex, FbxConnectionPoint* pDst); + bool ReplaceSrcAt(int pIndex, FbxConnectionPoint* pSrc); + bool SwapSrc(int pIndexA, int pIndexB); + + /** Change the position of a source Connect. + * \param pIndex Position of the Connect to move. + * \param pAtIndex Position where to move the Connect. + * \return \c True if the Connect was moved. + * \remarks After the move, the Connect will be precisely at position pAtIndex. + */ + bool MoveSrcAt(int pIndex, int pAtIndex); + + /** Change the position of a source Connect. + * \param pSrc Connect to move. + * \param pAtSrc Connect at which position to move. + * \return \c True if the Connect was moved. + * \remarks After the move, the Connect will be precisely at the position where pAtSrc was before the move. + */ + bool MoveSrcAt(FbxConnectionPoint* pSrc, FbxConnectionPoint* pAtSrc); + + // Access services + bool IsConnectedSrc(FbxConnectionPoint*); + bool IsConnectedDst(FbxConnectionPoint*); + inline bool IsConnected(FbxConnectionPoint* pConnect) { return IsConnectedSrc(pConnect) || IsConnectedDst(pConnect); } + + inline int GetSrcCount() const { return mConnectionList.GetSrcCount(); } + inline FbxConnectionPoint* GetSrc(int pIndex) const { return mConnectionList.GetSrc(pIndex);} + inline FbxConnection::EType GetSrcType(int pIndex) const { return mConnectionList.GetSrcType(pIndex);} + inline int GetDstCount() const { return mConnectionList.GetDstCount(); } + inline FbxConnectionPoint* GetDst(int pIndex) const { return mConnectionList.GetDst(pIndex);} + inline FbxConnection::EType GetDstType(int pIndex) const { return mConnectionList.GetDstType(pIndex);} + + inline int FindSrc(FbxConnectionPoint* pConnect){ return mConnectionList.FindSrc(pConnect); } + inline int FindDst(FbxConnectionPoint* pConnect){ return mConnectionList.FindDst(pConnect); } + + // Filtered versions + inline int GetSrcCount(FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetSrcCount() : GetSrcCount(); } + inline FbxConnectionPoint* GetSrc(int pIndex,FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetSrc(pIndex) : GetSrc(pIndex); } + inline FbxConnection::EType GetSrcType(int pIndex,FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetSrcType(pIndex) : GetSrcType(pIndex); } + inline int GetDstCount(FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetDstCount() : GetDstCount(); } + inline FbxConnectionPoint* GetDst(int pIndex,FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetDst(pIndex): GetDst(pIndex); } + inline FbxConnection::EType GetDstType(int pIndex,FbxConnectionPointFilter* pFilter){ return (pFilter) ? SubConnectGetOrCreate(pFilter)->GetDstType(pIndex) : GetDstType(pIndex); } + + void* GetData(){ return mData; } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + class ConnectionList + { + public: + ConnectionList(); + ~ConnectionList(); + + void Clear(); + + void InsertSrcAt(int pIndex, FbxConnectionPoint* pConnect, FbxConnection::EType pType); + void AddSrc(FbxConnectionPoint* pConnect, FbxConnection::EType pType); + void RemoveSrcAt(int pIndex); + int FindSrc(FbxConnectionPoint* pConnect) const; + int GetSrcCount() const; + FbxConnectionPoint* GetSrc(int pIndex) const; + FbxConnection::EType GetSrcType(int pIndex) const; + + void InsertDstAt(int pIndex, FbxConnectionPoint* pConnect, FbxConnection::EType pType); + void AddDst(FbxConnectionPoint* pConnect, FbxConnection::EType pType); + void RemoveDstAt(int pIndex); + int FindDst(FbxConnectionPoint* pConnect) const; + int GetDstCount() const; + FbxConnectionPoint* GetDst(int pIndex) const; + FbxConnection::EType GetDstType(int pIndex) const; + + protected: + struct Connection { + Connection(FbxConnectionPoint* pPoint, FbxConnection::EType pType) : mPoint(pPoint), mType(pType){} + FbxConnectionPoint* mPoint; FbxConnection::EType mType; + }; + FbxArray mSrcList; + FbxArray mDstList; + }; + + void SubConnectAdd(FbxConnectionPoint* pConnect); + void SubConnectRemove(FbxConnectionPoint* pConnect); + FbxConnectionPoint* SubConnectFind(FbxConnectionPointFilter* pFilter); + FbxConnectionPoint* SubConnectGetOrCreate(FbxConnectionPointFilter* pFilter); + void SubConnectFill(FbxConnectionPoint* pConnect); + + virtual bool ConnectNotify(EEvent pAction, FbxConnectionPoint* pThis, int pIndex, FbxConnectionPoint* pConnect=NULL, FbxConnection::EType pConnectionType=FbxConnection::eNone, FbxConnectionPoint* pNewConnect=NULL); + virtual void ConnectCleanUp(FbxConnectionPoint* pThis); + + int FindSrcIndexFromOwnerConnectIndex(FbxConnectionPoint* pOwner, int pOwnerIndex); + int FindDstIndexFromOwnerConnectIndex(FbxConnectionPoint* pOwner, int pOwnerIndex); + + bool InternalMoveSrcBefore(int pIndex, int pBeforeIndex); + +private: + inline void InsertSrcAt(int pIndex, FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType){ mConnectionList.InsertSrcAt(pIndex, pConnect, pConnectionType); } + inline void InsertDstAt(int pIndex, FbxConnectionPoint* pConnect, FbxConnection::EType pConnectionType){ mConnectionList.InsertDstAt(pIndex, pConnect, pConnectionType); } + inline void RemoveSrcAt(int pIndex){ mConnectionList.RemoveSrcAt(pIndex); } + inline void RemoveDstAt(int pIndex){ mConnectionList.RemoveDstAt(pIndex); } + + static bool InternalConnectBefore(FbxConnectionPoint* pSrc, FbxConnectionPoint* pSrc_BeforeDst, FbxConnectionPoint* pDst, FbxConnectionPoint* pDst_BeforeSrc, FbxConnection::EType pConnectionType); + static bool UserConnectBefore(FbxConnectionPoint* pSrc, FbxConnectionPoint* pSrc_BeforeDst, FbxConnectionPoint* pDst, FbxConnectionPoint* pDst_BeforeSrc, FbxConnection::EType pConnectionType); + static bool EmitReplaceNotify(FbxConnectionPoint* pDstOwner, FbxConnectionPoint* pSrcOwner, FbxConnectionPoint* pDst, FbxConnectionPoint* pSrc, EEvent pConnectAction, FbxConnectionPoint* pNew); + + virtual bool SetOwnerConnect(FbxConnectionPoint* pConnect); + inline FbxConnectionPoint* GetOwnerConnect(){ return mOwner; } + bool ConnectOwnedConnect(FbxConnectionPoint* pConnect); + bool DisconnectOwnedConnect(FbxConnectionPoint* pConnect); + + void* mData; + int mFlags; + FbxConnectionPoint* mOwner; + ConnectionList mConnectionList; + FbxArray mSubConnectList; + FbxArray mSubConnectCreatedList; + FbxConnectionPointFilter* mFilter; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** Class to manage Connect Filter */ +class FBXSDK_DLL FbxConnectionPointFilter +{ +public: + virtual ~FbxConnectionPointFilter() {}; + + //! Return reference ConnectionPoint filter. + virtual FbxConnectionPointFilter* Ref(); + + //! Cancel reference + virtual void Unref(); + + //! Get unique filter ID + virtual FbxInt GetUniqueId() const { return 0; } + + /** Judge if the given Connection Point is valid + * \param pConnect The given Connection Point. + * \return \c True if valid, \c false if not valid. */ + virtual bool IsValid(FbxConnectionPoint* pConnect) const; + + /** Judge if the given Connection Point is a valid connection + * \param pConnect The given Connection Point. + * \param pType Connection type. + * \return \c True if valid, \c false if not valid. */ + virtual bool IsValidConnection(FbxConnectionPoint* pConnect, FbxConnection::EType pType) const; + + /** Judge if it is equal with the given ConnectionPoint filter. + * \param pConnectFilter The given ConnectionPoint filter. + * \return \c True if equal, \c false if unequal. */ + virtual bool IsEqual(FbxConnectionPointFilter* pConnectFilter) const; +}; + +#include + +#endif /* _FBXSDK_CORE_CONNECTION_POINT_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxdatatypes.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxdatatypes.h new file mode 100644 index 00000000..1b2552c3 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxdatatypes.h @@ -0,0 +1,267 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxdatatypes.h +#ifndef _FBXSDK_CORE_DATA_TYPES_H_ +#define _FBXSDK_CORE_DATA_TYPES_H_ + +#include + +#include +#include + +#include + +/** FBX SDK data type class + * \nosubgrouping + */ +class FBXSDK_DLL FbxDataType +{ +public: + static FbxDataType Create(const char* pName, const EFbxType pType); + static FbxDataType Create(const char* pName, const FbxDataType& pDataType); + + /** + *\name Constructor and Destructor. + */ + //@{ + //! Constructor. + FbxDataType(); + + /** Copy constructor. + * \param pDataType Another FbxDataType object copied to this one. + */ + FbxDataType(const FbxDataType& pDataType); + + //! Destroy this datatype. + void Destroy(); + + /** Constructor. + * \param pTypeInfoHandle Type information handle + */ + FbxDataType(const FbxPropertyHandle& pTypeInfoHandle); + + //! Destructor. + ~FbxDataType(); + //@} + + /** Assignment operator + * \param pDataType Datatype whose value is assigned to this datatype. + * \return This datatype + */ + inline FbxDataType& operator=(const FbxDataType& pDataType){ mTypeInfoHandle=pDataType.mTypeInfoHandle; return *this; } + + /** + * \name boolean operation + */ + //@{ + /** Equality operator + * \param pDataType Datatype to compare to. + * \return \c true if equal,\c false otherwise. + */ + inline bool operator==(const FbxDataType& pDataType) const { return mTypeInfoHandle==pDataType.mTypeInfoHandle; } + + /** Non-equality operator + * \param pDataType Datatype to compare to. + * \return \c true if unequal,\c false otherwise. + */ + inline bool operator!=(const FbxDataType& pDataType) const { return mTypeInfoHandle!=pDataType.mTypeInfoHandle; } + //@} + + /** Test whether this datatype is a valid datatype. + * \return \c true if valid, \c false otherwise. + */ + inline bool Valid() const { return mTypeInfoHandle.Valid(); } + + /** Test if this datatype is the specified datatype. + * \param pDataType Datatype to compare to. + * \return \c true if this datatype is the specified datatype, \c false otherwise. + */ + inline bool Is(const FbxDataType& pDataType) const { return mTypeInfoHandle.Is(pDataType.mTypeInfoHandle); } + + /** Retrieve this data type. + * \return This data type. + */ + EFbxType GetType() const; + + /** Retrieve data type name. + * \return Data type name. + */ + const char* GetName() const; + + /** Retrieve the information handle of this data type. + * \return Information handle of this data type. + */ + inline const FbxPropertyHandle& GetTypeInfoHandle() const { return mTypeInfoHandle; } + +private: + FbxPropertyHandle mTypeInfoHandle; + friend class FbxManager; +}; + +/** Retrieve data type from type enumeration index + * \param pType The type enumeration index + * \return The corresponding data type + */ +FBXSDK_DLL const FbxDataType& FbxGetDataTypeFromEnum(const EFbxType pType); + +/** Retrieve data type name string used by I/O operations + * \param pDataType The data type instance to retrieve its I/O name string + * \return The data type name string + * \remark This function is only used during I/O operations. It is not equal + * to the actual data type name. + */ +FBXSDK_DLL const char* FbxGetDataTypeNameForIO(const FbxDataType& pDataType); + +//! \name Basic Data Types +//@{ + extern FBXSDK_DLL FbxDataType FbxUndefinedDT; + extern FBXSDK_DLL FbxDataType FbxBoolDT; + extern FBXSDK_DLL FbxDataType FbxCharDT; + extern FBXSDK_DLL FbxDataType FbxUCharDT; + extern FBXSDK_DLL FbxDataType FbxShortDT; + extern FBXSDK_DLL FbxDataType FbxUShortDT; + extern FBXSDK_DLL FbxDataType FbxIntDT; + extern FBXSDK_DLL FbxDataType FbxUIntDT; + extern FBXSDK_DLL FbxDataType FbxLongLongDT; + extern FBXSDK_DLL FbxDataType FbxULongLongDT; + extern FBXSDK_DLL FbxDataType FbxFloatDT; + extern FBXSDK_DLL FbxDataType FbxHalfFloatDT; + extern FBXSDK_DLL FbxDataType FbxDoubleDT; + extern FBXSDK_DLL FbxDataType FbxDouble2DT; + extern FBXSDK_DLL FbxDataType FbxDouble3DT; + extern FBXSDK_DLL FbxDataType FbxDouble4DT; + extern FBXSDK_DLL FbxDataType FbxDouble4x4DT; + extern FBXSDK_DLL FbxDataType FbxEnumDT; + extern FBXSDK_DLL FbxDataType FbxStringDT; + extern FBXSDK_DLL FbxDataType FbxTimeDT; + extern FBXSDK_DLL FbxDataType FbxReferenceDT; + extern FBXSDK_DLL FbxDataType FbxBlobDT; + extern FBXSDK_DLL FbxDataType FbxDistanceDT; + extern FBXSDK_DLL FbxDataType FbxDateTimeDT; +//@} + +//! \name Extended Data Types +//@{ + extern FBXSDK_DLL FbxDataType FbxColor3DT; + extern FBXSDK_DLL FbxDataType FbxColor4DT; + extern FBXSDK_DLL FbxDataType FbxCompoundDT; + extern FBXSDK_DLL FbxDataType FbxReferenceObjectDT; + extern FBXSDK_DLL FbxDataType FbxReferencePropertyDT; + extern FBXSDK_DLL FbxDataType FbxVisibilityDT; + extern FBXSDK_DLL FbxDataType FbxVisibilityInheritanceDT; + extern FBXSDK_DLL FbxDataType FbxUrlDT; + extern FBXSDK_DLL FbxDataType FbxXRefUrlDT; +//@} + +//! \name Transform Data Types +//@{ + extern FBXSDK_DLL FbxDataType FbxTranslationDT; + extern FBXSDK_DLL FbxDataType FbxRotationDT; + extern FBXSDK_DLL FbxDataType FbxScalingDT; + extern FBXSDK_DLL FbxDataType FbxQuaternionDT; + extern FBXSDK_DLL FbxDataType FbxLocalTranslationDT; + extern FBXSDK_DLL FbxDataType FbxLocalRotationDT; + extern FBXSDK_DLL FbxDataType FbxLocalScalingDT; + extern FBXSDK_DLL FbxDataType FbxLocalQuaternionDT; + extern FBXSDK_DLL FbxDataType FbxTransformMatrixDT; + extern FBXSDK_DLL FbxDataType FbxTranslationMatrixDT; + extern FBXSDK_DLL FbxDataType FbxRotationMatrixDT; + extern FBXSDK_DLL FbxDataType FbxScalingMatrixDT; +//@} + +//! \name Material Data Types +//@{ + extern FBXSDK_DLL FbxDataType FbxMaterialEmissiveDT; + extern FBXSDK_DLL FbxDataType FbxMaterialEmissiveFactorDT; + extern FBXSDK_DLL FbxDataType FbxMaterialAmbientDT; + extern FBXSDK_DLL FbxDataType FbxMaterialAmbientFactorDT; + extern FBXSDK_DLL FbxDataType FbxMaterialDiffuseDT; + extern FBXSDK_DLL FbxDataType FbxMaterialDiffuseFactorDT; + extern FBXSDK_DLL FbxDataType FbxMaterialBumpDT; + extern FBXSDK_DLL FbxDataType FbxMaterialNormalMapDT; + extern FBXSDK_DLL FbxDataType FbxMaterialTransparentColorDT; + extern FBXSDK_DLL FbxDataType FbxMaterialTransparencyFactorDT; + extern FBXSDK_DLL FbxDataType FbxMaterialSpecularDT; + extern FBXSDK_DLL FbxDataType FbxMaterialSpecularFactorDT; + extern FBXSDK_DLL FbxDataType FbxMaterialShininessDT; + extern FBXSDK_DLL FbxDataType FbxMaterialReflectionDT; + extern FBXSDK_DLL FbxDataType FbxMaterialReflectionFactorDT; + extern FBXSDK_DLL FbxDataType FbxMaterialDisplacementDT; + extern FBXSDK_DLL FbxDataType FbxMaterialVectorDisplacementDT; + extern FBXSDK_DLL FbxDataType FbxMaterialCommonFactorDT; + extern FBXSDK_DLL FbxDataType FbxMaterialCommonTextureDT; +//@} + +//! \name Layer Element Data Types +//@{ + extern FBXSDK_DLL FbxDataType FbxLayerElementUndefinedDT; + extern FBXSDK_DLL FbxDataType FbxLayerElementNormalDT; + extern FBXSDK_DLL FbxDataType FbxLayerElementBinormalDT; + extern FBXSDK_DLL FbxDataType FbxLayerElementTangentDT; + extern FBXSDK_DLL FbxDataType FbxLayerElementMaterialDT; + extern FBXSDK_DLL FbxDataType FbxLayerElementTextureDT; + extern FBXSDK_DLL FbxDataType FbxLayerElementPolygonGroupDT; + extern FBXSDK_DLL FbxDataType FbxLayerElementUVDT; + extern FBXSDK_DLL FbxDataType FbxLayerElementVertexColorDT; + extern FBXSDK_DLL FbxDataType FbxLayerElementSmoothingDT; + extern FBXSDK_DLL FbxDataType FbxLayerElementCreaseDT; + extern FBXSDK_DLL FbxDataType FbxLayerElementHoleDT; + extern FBXSDK_DLL FbxDataType FbxLayerElementUserDataDT; + extern FBXSDK_DLL FbxDataType FbxLayerElementVisibilityDT; +//@} + +//! \name I/O Specialized Data Types +//@{ + extern FBXSDK_DLL FbxDataType FbxAliasDT; + extern FBXSDK_DLL FbxDataType FbxPresetsDT; + extern FBXSDK_DLL FbxDataType FbxStatisticsDT; + extern FBXSDK_DLL FbxDataType FbxTextLineDT; + extern FBXSDK_DLL FbxDataType FbxUnitsDT; + extern FBXSDK_DLL FbxDataType FbxWarningDT; + extern FBXSDK_DLL FbxDataType FbxWebDT; +//@} + +//! \name External Support Data Types +//@{ + extern FBXSDK_DLL FbxDataType FbxActionDT; + extern FBXSDK_DLL FbxDataType FbxCameraIndexDT; + extern FBXSDK_DLL FbxDataType FbxCharPtrDT; + extern FBXSDK_DLL FbxDataType FbxConeAngleDT; + extern FBXSDK_DLL FbxDataType FbxEventDT; + extern FBXSDK_DLL FbxDataType FbxFieldOfViewDT; + extern FBXSDK_DLL FbxDataType FbxFieldOfViewXDT; + extern FBXSDK_DLL FbxDataType FbxFieldOfViewYDT; + extern FBXSDK_DLL FbxDataType FbxFogDT; + extern FBXSDK_DLL FbxDataType FbxHSBDT; + extern FBXSDK_DLL FbxDataType FbxIKReachTranslationDT; + extern FBXSDK_DLL FbxDataType FbxIKReachRotationDT; + extern FBXSDK_DLL FbxDataType FbxIntensityDT; + extern FBXSDK_DLL FbxDataType FbxLookAtDT; + extern FBXSDK_DLL FbxDataType FbxOcclusionDT; + extern FBXSDK_DLL FbxDataType FbxOpticalCenterXDT; + extern FBXSDK_DLL FbxDataType FbxOpticalCenterYDT; + extern FBXSDK_DLL FbxDataType FbxOrientationDT; + extern FBXSDK_DLL FbxDataType FbxRealDT; + extern FBXSDK_DLL FbxDataType FbxRollDT; + extern FBXSDK_DLL FbxDataType FbxScalingUVDT; + extern FBXSDK_DLL FbxDataType FbxShapeDT; + extern FBXSDK_DLL FbxDataType FbxStringListDT; + extern FBXSDK_DLL FbxDataType FbxTextureRotationDT; + extern FBXSDK_DLL FbxDataType FbxTimeCodeDT; + extern FBXSDK_DLL FbxDataType FbxTimeWarpDT; + extern FBXSDK_DLL FbxDataType FbxTranslationUVDT; + extern FBXSDK_DLL FbxDataType FbxWeightDT; +//@} + +#include + +#endif /* _FBXSDK_CORE_DATA_TYPES_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxemitter.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxemitter.h new file mode 100644 index 00000000..32f61701 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxemitter.h @@ -0,0 +1,94 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxemitter.h +#ifndef _FBXSDK_CORE_EMITTER_H_ +#define _FBXSDK_CORE_EMITTER_H_ + +#include + +#include +#include + +#include + +class FbxListener; + +/** Base class to emit event with the specified event type. +* The event type could be a specific class which derived from FbxEvent. Please read FbxEmitter::Emit() for more details. +* Event emitter contains a list of event handlers. +* FBX object could be used as emitter, since FbxObject is derived from FbxEmitter. +* Before using emitter to emit an event, one or more event handlers must be added to the handlers list of current emitter. +* In other words, it's "bind event handlers to emitter". +* There are two ways to bind event handlers to emitter. +* \li 1. If you already got an event handler and would like to bind it to current emitter, please call FbxEmitter::AddListener(). +* \li 2. Or you can create an event listener first and then call FbxListener::Bind(). +* It will create an event handler automatically and bind the handler to the specified emitter. +* It's similar to unbind or remove an even handler. For more details, +* \see FbxEmitter::RemoveListener() +* \see FbxListener::Unbind() +* \remarks An object(emitter) can emit a certain type of event, the plug-in(listener) who are listening to that type of event, +* will receive a signal and take action to process the event data. +* \par The whole process of event is: +* \li 1. Create an emitter and a listener, then bind them together via the same event handler. +* \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. +* \li 3. Once an event is emitted, the listener to this event will receive a signal. +* \li 4. And then the listener could process the event data according to the types of event, by calling event handler. +* \note The event data is process by the callback function of event handler. +* \nosubgrouping +* \see FbxListener FbxEventHandler FbxEvent FbxEventBase +*/ +class FBXSDK_DLL FbxEmitter +{ +public: + /** Add the specified event handler to current emitter list. + * \param pHandler The event handler will be added to the handlers list of current emitter. */ + void AddListener(FbxEventHandler& pHandler); + + /** Remove the specified event handler from current emitter list. + * \param pHandler The event handler will be removed from the handlers list of current emitter. */ + void RemoveListener(FbxEventHandler& pHandler); + + /** Emit an event with the specified the event type. One the event is emitted, the listener to this event will receive a signal. + * \param pEvent Specify the event type to emit. Could be a specific class which derived from FbxEvent, such as FbxObjectPropertyChanged. + * \see FbxEventBase FbxObjectPropertyChanged FbxEventReferencedDocument FbxEventPostExport + * \see FbxEventPostImport FbxEventPreExport FbxEventPreImport FbxEventPopulateSystemLibrary */ + template void Emit(const EventType& pEvent) const + { + if( !mData ) return; + EventHandlerList::iterator itBegin = mData->mEventHandlerList.Begin(); + EventHandlerList::iterator itEnd = mData->mEventHandlerList.End(); + for( EventHandlerList::iterator it = itBegin; it != itEnd; ++it ) + { + if ((*it).GetHandlerEventType() == pEvent.GetTypeId()) + { + (*it).FunctionCall(pEvent); + } + } + } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxEmitter(); + ~FbxEmitter(); + +protected: + typedef FbxIntrusiveList EventHandlerList; + struct EventData { EventHandlerList mEventHandlerList; }; + EventData* mData; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_CORE_EMITTER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxevent.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxevent.h new file mode 100644 index 00000000..b2695a31 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxevent.h @@ -0,0 +1,188 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxevent.h +#ifndef _FBXSDK_CORE_EVENT_H_ +#define _FBXSDK_CORE_EVENT_H_ + +#include + +#include + +#include + +/** FBX SDK event base class. + * An event is something that is emitted by an emitter, with the goal of being filled by the listener that listen to it. + * You can see that like a form that you send to some people. If those people know how to fill the form, they fill it and return + * it to you with the right information in it. FBX object could be used as emitter, since FbxObject is derived from FbxEmitter. + * Meanwhile, plug-in could be used as listener, since FbxPlugin is derived from FbxListener. + * The derived class of FbxEventBase contains a type ID to distinguish different types of events. + * FBX object can emit different types of FBX events at different conditions. + * \par The whole process of event is: + * \li 1. Create an emitter and a listener, then bind them together via the same event handler. + * \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. + * \li 3. Once an event is emitted, the listener to this event will receive a signal. + * \li 4. And then the listener could process the event data according to the types of event, by calling event handler. + * \note The event data is process by the callback function of event handler. + * For example, if a certain property of a FBX object is changed, the FBX object(emitter) can emit an event which type is FbxObjectPropertyChanged. + * The plug-in(listener) who are listening to FbxObjectPropertyChanged, will receive a signal and take action to process the event data. + * \nosubgrouping + * \see FbxEvent FbxEventHandler FbxListener FbxEmitter + */ +class FBXSDK_DLL FbxEventBase +{ + public: + /** + * \name Constructor and Destructor + */ + //@{ + //!Destructor + virtual ~FbxEventBase(); + //@} + + /** Retrieve the event type ID + * \return type id + */ + virtual int GetTypeId() const = 0; + + /** Force events to give us a name + * \return event name + */ + virtual const char* GetEventName() const = 0; + + protected: + static int GetStaticTypeId(const char*); +}; + +// Force events to declare a name by using an abstract method, and force them to use +// the proper name by making the call from FbxEvent<> go through the private static +// method. +#define FBXSDK_EVENT_DECLARE(Class) \ + public: virtual const char* GetEventName() const { return FbxEventName(); } \ + private: static const char* FbxEventName() { return #Class; } \ + friend class FbxEvent; \ + +// +// Similar to above, but to be used when you've got an event template, and the +// type is something know to FBX +// +#define FBXSDK_EVENT_TYPE_DECLARE(Class, FBXType) \ + public: virtual const char* GetEventName() const { return FbxEventName(); } \ + private: \ + static const char* FbxEventName() { \ + static FbxString lEventName = FbxString(#Class) + FbxString("<") + \ + FbxGetDataTypeFromEnum(FbxTypeOf(*((const FBXType *)0))).GetName() + ">"; \ + \ + return lEventName.Buffer(); \ + } \ + friend class FbxEvent< Class >; + + + +//This is for templates classes that will uses non fbxtypes in their templates +//We force the the creation of an UNIQUE string for each types so that we can +//retrieve the event within multiple DLLs + +//to be able to use this, the char EventName[] = "uniqueEventName"; must be declared +//globally. + +#define FBXSDK_EVENT_TEMPLATE_HEADER(ClassName, TemplateName)\ +template < class TemplateName, const char* T > \ +class ClassName: public FbxEvent< ClassName >\ +{\ + public: virtual const char* GetEventName() const {return FbxEventName();}\ + private: static const char* FbxEventName() {\ + static FbxString lEventName = (FbxString(#ClassName) +"<"+ FbxString(T) +">");\ + return lEventName.Buffer();\ + }\ + friend class FbxEvent< ClassName >; + + +//This is the footer macro, to put at the end to close the template class +//created by FBXSDK_EVENT_TEMPLATE_HEADER +#define FBXSDK_EVENT_TEMPLATE_FOOTER()\ +}; + +/** FBX event class, derived from FbxEventBase, and it contains a type ID for event. +* It's a template class. You can derive your own types of even. Such as: +* \code class FbxEventCustom : public FbxEvent \endcode +* \see FbxObjectPropertyChanged FbxEventReferencedDocument FbxEventPostExport +* \see FbxEventPostImport FbxEventPreExport FbxEventPreImport FbxEventPopulateSystemLibrary +* \nosubgrouping +* \remarks A FBX event is something that is emitted by an emitter, with the goal of being filled by the listener that listen to it. +* An object(emitter) can emit a certain type of event, the plug-in(listener) who are listening to that type of event, +* will receive a signal and take action to process the event data. +* \par The whole process of event is: +* \li 1. Create an emitter and a listener, then bind them together via the same event handler. +* \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. +* \li 3. Once an event is emitted, the listener to this event will receive a signal. +* \li 4. And then the listener could process the event data according to the types of event, by calling event handler. +* \note The event data is process by the callback function of event handler. +* \see FbxEventBase FbxEventHandler FbxListener FbxEmitter +*/ +//--------------------------------------------------- +// T : We use the curiously recurring template pattern +// to initialize the typeId of each event type +template class FbxEvent : public FbxEventBase +{ +public: + //!Destructor + virtual ~FbxEvent(){} + + /** Update the type ID of current event with the given type ID. + * \param pTypeId the new type ID. + */ + static void ForceTypeId(int pTypeId) + { + // This is to handle specific cases where the type ID must be hard coded + // It is useful for shared event across DLL. We can then guarantee that + // The ID of a certain type will always have the same ID + smTypeId = pTypeId; + } + + /** Retrieve the event type ID + * \note This may be called from multiple threads. + * \return type id + */ + virtual int GetTypeId() const + { + return GetStaticTypeId(); + } + + /** Retrieve the event type ID + * \return type id + */ + static int GetStaticTypeId() + { + if( !smTypeId ) + { + if( !smTypeId ) + { + // If this does not compile, you need to add + // FBXSDK_EVENT_DECLARE(YourEventClassName) to your class declaration + smTypeId = FbxEventBase::GetStaticTypeId(T::FbxEventName()); + } + } + + return smTypeId; + } + +private: + //! The type ID of event + static int smTypeId; +}; + +// Static members implementation +template int FbxEvent::smTypeId = 0; + +#include + +#endif /* _FBXSDK_CORE_EVENT_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxeventhandler.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxeventhandler.h new file mode 100644 index 00000000..5cf45216 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxeventhandler.h @@ -0,0 +1,129 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxeventhandler.h +#ifndef _FBXSDK_CORE_EVENT_HANDLER_H_ +#define _FBXSDK_CORE_EVENT_HANDLER_H_ + +#include + +#include +#include + +#include + +class FbxListener; + +/** Event handler class contains a listener and a callback function. +* Event handler is used to bind emitter and listener together. Its callback function can process event data. +* To generate a valid event handler, you can create an event emitter and event listener first and then call FbxListener::Bind(). +* It will create an event handler automatically and bind the handler to the listener and the created emitter. +* After that, the emitter and listener are bound together via event handler. +* \remarks An object(emitter) can emit a certain type of event, the object(listener) who are listening to that type of event, +* will receive a signal and take action to process the event data. +* \par The whole process of event is: +* \li 1. Create an emitter and a listener, then bind them together via the same event handler. +* \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. +* \li 3. Once an event is emitted, the listener to this event will receive a signal. +* \li 4. And then the listener could process the event data according to the types of event, by calling event handler. +* \note The event data is process by the callback function of event handler. +* \nosubgrouping +* \see FbxListener FbxEventBase FbxEvent FbxEmitter +*/ +class FbxEventHandler +{ +public: + //! Event handler base type. + enum EType + { + eListener, //!< Listener event handler type. + eEmitter, //!< Emitter event handler type. + eCount //!< Count of different event handler types. + }; + + /** Get event type of current handler. + * \return The type ID of event. */ + virtual int GetHandlerEventType()=0; + + /** Call function that process event data. + * \param pEvent specify the event type. pEvent could be a specific class which derived from FbxEventBase. + * \see FbxEventBase */ + virtual void FunctionCall(const FbxEventBase& pEvent)=0; + + /** Get listener of current handler. + * \return A pointer to the listener object. */ + virtual FbxListener* GetListener()=0; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxEventHandler(){} + virtual ~FbxEventHandler(){} + + FBXSDK_INTRUSIVE_LIST_NODE(FbxEventHandler, eCount); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + +template class FbxMemberFuncEventHandler : public FbxEventHandler +{ + typedef void (ListenerType::*CallbackFnc)(const EventType*); + +public: + FbxMemberFuncEventHandler(ListenerType* pListenerInstance, CallbackFnc pFunction) : mListener(pListenerInstance), mFunction(pFunction){} + virtual int GetHandlerEventType(){ return EventType::GetStaticTypeId(); } + virtual void FunctionCall(const FbxEventBase& pEvent){ (*mListener.*mFunction)(reinterpret_cast(&pEvent)); } + virtual FbxListener* GetListener(){ return mListener; } + +private: + ListenerType* mListener; + CallbackFnc mFunction; +}; + +template class FbxConstMemberFuncEventHandler : public FbxEventHandler +{ + typedef void (ListenerType::*CallbackFnc)(const EventType*) const; + +public: + FbxConstMemberFuncEventHandler(ListenerType* pListenerInstance, CallbackFnc pFunction) : mListener(pListenerInstance), mFunction(pFunction){} + virtual int GetHandlerEventType(){ return EventType::GetStaticTypeId(); } + virtual void FunctionCall(const FbxEventBase& pEvent){ (*mListener.*mFunction)(reinterpret_cast(&pEvent)); } + virtual FbxListener* GetListener(){ return mListener; } + +private: + ListenerType* mListener; + CallbackFnc mFunction; +}; + +template class FbxFuncEventHandler : public FbxEventHandler +{ + typedef void (*CallbackFnc)(const EventType*, FbxListener*); + +public: + FbxFuncEventHandler(FbxListener* pListener, CallbackFnc pFunction) : mListener(pListener), mFunction(pFunction){} + virtual int GetHandlerEventType(){ return EventType::GetStaticTypeId(); } + virtual void FunctionCall(const FbxEventBase& pEvent){ (*mFunction)(reinterpret_cast(&pEvent), mListener); } + virtual FbxListener* GetListener(){ return mListener; } + +private: + FbxListener* mListener; + CallbackFnc mFunction; +}; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ + +#include + +#endif /* _FBXSDK_CORE_EVENT_HANDLER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxlistener.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxlistener.h new file mode 100644 index 00000000..85b13c90 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxlistener.h @@ -0,0 +1,121 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxlistener.h +#ifndef _FBXSDK_CORE_LISTENER_H_ +#define _FBXSDK_CORE_LISTENER_H_ + +#include + +#include +#include +#include + +#include + +/**FBX SDK listener class. Once an event is emitted by an emitter, a listener should be created to listen to the event. + * The listener could receive a signal and take action to process the event data. + * \note The data will be process by the callback function of FbxListener::Bind(). + * Plug-in could be used as listener, since FbxPlugin is derived from FbxListener. + * To emit event, you could create an emitter and a listener, and then bind them together via event handler. + * To listen to an event which is emitted by an emitter, you should bind current listener to the emitter by calling FbxListener::Bind(). + * Event listener contains a list of event handlers. + * \remarks An object(emitter) can emit a certain type of event, the plug-in(listener) who are listening to that type of event, + * will receive a signal and take action to process the event data. + * \par The whole process of event is: + * \li 1. Create an emitter and a listener, then bind them together via the same event handler. + * \li 2. Emitter can emit an event at certain conditions. The event could be handled by event handler. + * \li 3. Once an event is emitted, the listener to this event will receive a signal. + * \li 4. And then the listener could process the event data according to the types of event, by calling event handler. + * \note The event data is process by the callback function of event handler. + * \see FbxEmitter FbxEventHandler FbxEvent FbxEventBase + */ +class FBXSDK_DLL FbxListener +{ +public: + /** + * \name Constructor and Destructor + */ + //@{ + //!Destructor. + ~FbxListener(); + //!Constructor. + FbxListener(){} + //@} + + //////////////////////////////////////////////////////////////////////////////////////// + /** + * \name Bind and unbind methods + */ + //@{ + + /**Bind current listener and the specified emitter together via an automatically created event handler. + * An event handler will be created automatically and added to the handlers list of current listener and the specified emitter. + * After that, the listener can listen to the event which is emitted by the specified emitter. + * \param pEmitter Event emitter to bind. Current listener can listen to the event which is emitted by pEmitter. + * \param pFunc The callback function to process event date. + * \return The automatically created event handler. + */ + template FbxEventHandler* Bind(FbxEmitter& pEmitter, void (ListenerType::*pFunc)(const EventType*)) + { + FbxMemberFuncEventHandler* eventHandler = + FbxNew< FbxMemberFuncEventHandler >(static_cast(this),pFunc); + pEmitter.AddListener(*eventHandler); + mEventHandler.PushBack(*eventHandler); + return eventHandler; + } + + /**Bind current listener and the specified emitter together via an automatically created event handler. + * An event handler will be created automatically and added to the handlers list of current listener and the specified emitter. + * After that, the listener can listen to the event which is emitted by the specified emitter. + * \param pEmitter Event emitter to bind. Current listener can listen to the event which is emitted by pEmitter. + * \param pFunc The callback function to process event date. + * \return The automatically created event handler. + */ + template FbxEventHandler* Bind(FbxEmitter& pEmitter, void (ListenerType::*pFunc)(const EventType*)const) + { + FbxConstMemberFuncEventHandler* eventHandler = + FbxNew< FbxConstMemberFuncEventHandler >(static_cast(this),pFunc); + pEmitter.AddListener(*eventHandler); + mEventHandler.PushBack(*eventHandler); + return eventHandler; + } + + /**Bind current listener and the specified emitter together via an automatically created event handler. + * An event handler will be created automatically and added to the handlers list of current listener and the specified emitter. + * After that, the listener can listen to the event which is emitted by the specified emitter. + * \param pEmitter Event emitter to bind. Current listener can listen to the event which is emitted by pEmitter. + * \param pFunc The callback function to process event date. + * \return The automatically created event handler. + */ + template FbxEventHandler* Bind(FbxEmitter& pEmitter, void (*pFunc)(const EventType*,FbxListener*)) + { + FbxFuncEventHandler* eventHandler = + FbxNew< FbxFuncEventHandler >(this, pFunc); + pEmitter.AddListener(*eventHandler); + mEventHandler.PushBack(*eventHandler); + return eventHandler; + } + + /**Unbind an event handler. The specified event handler will be removed from the handlers list of current listener. + * \param aBindId The event handler to unbind. + */ + void Unbind(const FbxEventHandler* aBindId); + //@} + +private: + typedef FbxIntrusiveList EventHandlerList; + EventHandlerList mEventHandler; +}; + +#include + +#endif /* _FBXSDK_CORE_LISTENER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxloadingstrategy.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxloadingstrategy.h new file mode 100644 index 00000000..8ce9e2f0 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxloadingstrategy.h @@ -0,0 +1,86 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxloadingstrategy.h +#ifndef _FBXSDK_CORE_LOADING_STRATEGY_H_ +#define _FBXSDK_CORE_LOADING_STRATEGY_H_ + +#include + +#ifndef FBXSDK_ENV_WINSTORE + +#include +#include + +#include + +/** + * Abstract class used to implemented some plug-in loading strategy. + * A loading strategy dictate how some plug-ins will be loaded for instance. + * We could have a simple strategy that loads only a single dll on PC. + * We could also implement a strategy that load multiple dlls from a directory. + */ +class FBXSDK_DLL FbxLoadingStrategy : public FbxPluginContainer +{ +public: + /** Result state of loading plug-in. + */ + enum EState + { + eAllLoaded, //!< All plug-in are loaded. + eNoneLoaded, //!< No plug-in is loaded, i.e., there is not plug-in to load. + eAllFailed, //!< All plug-in are failed to load. + eSomeFailed //!< Some plug-ins are loaded but some are failed. + }; + + /** + *\name Public interface + */ + //@{ + /** Execute the operation of loading the plug-in(s). The way it is executed is determined by the specific implementations. + * \param pData Plug in data that can be access inside the plug-ins. + * \return If the plugin loading is successful return \c true, otherwise return \c false. + */ + EState Load(FbxPluginData& pData); + + /** Execute the operation of unloading the plug-in(s). The way it is executed is determined by the specific implementations. + */ + void Unload(); + //@} + +protected: + /** + *\name User implementation + */ + //@{ + /** Called by the Load method, it contains the specific user implementation strategy to load the desired plug-in(s). + * \param pData Plug in data that can be access inside the plug-ins. + * \return If the plugin loading is successful return \c true, otherwise return \c false + */ + virtual bool SpecificLoad(FbxPluginData& pData) = 0; + + /** Called by the Unload method, it contains the specific user implementation strategy to unload the desired plug-in(s). + */ + virtual void SpecificUnload(FbxPluginData& pData) = 0; + //@} + + //! Whether the plugin is loaded or not. + EState mPluginsLoadedState; + +private: + FbxPluginData mData; +}; + +#include + +#endif /* !FBXSDK_ENV_WINSTORE */ + +#endif /* _FBXSDK_CORE_LOADING_STRATEGY_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxmanager.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxmanager.h new file mode 100644 index 00000000..9e4a5f1e --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxmanager.h @@ -0,0 +1,555 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxmanager.h +#ifndef _FBXSDK_CORE_MANAGER_H_ +#define _FBXSDK_CORE_MANAGER_H_ + +#include + +#include + +#include + +class FbxIOSettings; +class FbxIOPluginRegistry; +class FbxAnimEvaluator; +class FbxSceneReference; +class FbxUserNotification; +class FbxMessageEmitter; +class FbxLocalizationManager; +class FbxXRefManager; +class FbxManager_internal; + +#ifndef FBXSDK_ENV_WINSTORE + class FbxPlugin; +#endif + +/** SDK object manager. + * The SDK manager is in charge of: + * \li scene element allocation, for example, FbxScene::Create(pSdkManager, ""). + * \li scene element deallocation, call FbxManager::Destroy() to deallocates all object created by the SDK manager. + * \li scene element search and access, please see \ref GlobalObjectManagement section. + * + * It is possible to override memory allocation functions throughout the FBX SDK by + * providing system memory allocation functions using the handler set functions below. + * It must be done before the first FbxManager creation. + * + * FbxSetMallocHandler(); + * FbxSetCallocHandler(); + * FbxSetReallocHandler(); + * FbxSetFreeHandler(); + * + * Upon destruction, all objects allocated by the SDK manager and not explicitly destroyed are destroyed as well. + * A derived class can be defined to allocate and deallocate specialized scene elements. + * \remarks You could create more than one SDK manager. However, it's better to NOT share the same object among different managers. + * \nosubgrouping + */ +class FBXSDK_DLL FbxManager +{ +public: + /** + * \name FBX SDK Manager Creation/Destruction + */ + //@{ + /** SDK manager allocation method. + * \return A pointer to the SDK manager or \c NULL if this is an + * evaluation copy of the FBX SDK and it is expired. + */ + static FbxManager* Create(); + + /** Destructor. + * Deallocates all object previously created by the SDK manager. + */ + virtual void Destroy(); + //@} + + /** + * \name Versions Queries + */ + //@{ + /** Get FBX SDK version string. + * \param pFull If true, the complete version string including revision number and release date will be returned, + * otherwise only the version numbering is returned. + */ + static const char* GetVersion(bool pFull=true); + + /** Get the current default FBX file format version number for this version of the FBX SDK. + * \param pMajor Version major number. + * \param pMinor Version minor number. + * \param pRevision Version revision number. + */ + static void GetFileFormatVersion(int& pMajor, int& pMinor, int& pRevision); + //@} + + + /** + * \name Object Registration, Definition and Management + */ + //@{ + /** Class registration. + * \param pName The class name. For example, "FbxMesh" for FbxMesh class. + * \param T1 FBX type of the specified class. + * \param T2 FBX type of parent class. + * \param pFbxFileTypeName The type name of the class in FBX file. + * \param pFbxFileSubTypeName The sub type name of the class in FBX file. + * \return The class Id of the newly register class. + * Such as: + * \code RegisterFbxClass("FbxCamera", FBX_TYPE(FbxCamera), FBX_TYPE(FbxNodeAttribute)); \endcode + */ + template inline FbxClassId RegisterFbxClass(const char* pName, const T1* /*T1*/, const T2* /*T2*/, const char* pFbxFileTypeName=0, const char* pFbxFileSubTypeName=0) + { + T1::ClassId = Internal_RegisterFbxClass(pName, T2::ClassId, (FbxObjectCreateProc)T1::Allocate, pFbxFileTypeName, pFbxFileSubTypeName); + return T1::ClassId; + } + + /** Runtime class registration. + * \param pName The class name. For example, "FbxUIWidgetBoolean". + * \param T FBX type of parent class. + * \param pFbxFileTypeName The type name of the class in FBX file. + * \param pFbxFileSubTypeName The sub type name of the class in FBX file. + * \return The class Id of the newly register class. + * Such as: + * \code RegisterRuntimeFbxClass( "FbxUIWidgetBoolean", FBX_TYPE(FbxUIWidgetDefinition), NULL, "FbxUIWidgetBoolean"); \endcode + */ + template inline FbxClassId RegisterRuntimeFbxClass(const char* pName, const T* /*T*/, const char* pFbxFileTypeName=0,const char* pFbxFileSubTypeName=0) + { + return Internal_RegisterFbxClass(pName, T::ClassId, (FbxObjectCreateProc)T::Allocate, pFbxFileTypeName, pFbxFileSubTypeName); + } + + /** Runtime class unregistration. + * \param pName The class name. + */ + inline void UnregisterRuntimeFbxClass(const char* pName) + { + FbxClassId lClassId = FindClass(pName); + if( !(lClassId == FbxClassId()) ) + { + Internal_UnregisterFbxClass(lClassId); + } + } + + /** Override class. + * \param pFBX_TYPE_Class FBX type of class. + * \param pFBX_TYPE_OverridenClass FBX type of overridden class. + * \return The class Id + */ + template inline FbxClassId OverrideFbxClass(const T1* pFBX_TYPE_Class, const T2* pFBX_TYPE_OverridenClass) + { + T1::ClassId = Internal_OverrideFbxClass(T2::ClassId,(FbxObjectCreateProc)T1::Allocate ); + return T1::ClassId; + } + + /** Create a new object of the specified ClassId. + * \param pClassId The ClassId of the object to be created. + * \param pName The name given to the newly created object. + * \param pContainer An optional parameter to specify which object will "contain" the new object. By contain, we mean + * the new object will become a source to the container, connection-wise. + * \param pCloneFrom A valid object pointer to use as the reference for cloning the object upon construction. + * \return If not null, a new instance of the specified class. + * \remark This function will return NULL if the ClassId used is invalid. New ClassId can be registered using + * the function RegisterFbxClass(). + */ + FbxObject* CreateNewObjectFromClassId(FbxClassId pClassId, const char* pName, FbxObject* pContainer=NULL, const FbxObject* pCloneFrom=NULL); + + /** Find class by the specified name. + * \param pClassName Class Name to find. + */ + FbxClassId FindClass(const char* pClassName) const; + + /** Find file class. + * \param pFbxFileTypeName Specify the type name in FBX file to find. + * \param pFbxFileSubTypeName Specify by The sub type name in FBX file to find. + */ + FbxClassId FindFbxFileClass(const char* pFbxFileTypeName, const char* pFbxFileSubTypeName) const; + + /** Class unregistration. + * \param pFBX_TYPE_Class FBX type of unregistered class. + */ + template inline void UnregisterFbxClass(const T* pFBX_TYPE_Class) + { + Internal_UnregisterFbxClass(T::ClassId); + T::ClassId = FbxClassId(); + } + //@} + + /** + * \name Data Type Management + */ + //@{ + /** Register a new data type to the manager + * \param pName The type name. + * \param pType The data type. + * \return The newly created FbxDataType + */ + FbxDataType CreateDataType(const char* pName, const EFbxType pType); + + /** List the data types + * \return the number of registered datatypes + */ + int GetDataTypeCount() const; + + /** Find a data types at pIndex. + * \param pIndex The data type index. + * \return the found datatype. return null if not found + */ + FbxDataType& GetDataType(const int pIndex) const; + + /** Find a data type from the type name. + * \param pDataType The type name. + * \return the found datatype. return null if not found + */ + FbxDataType& GetDataTypeFromName(const char* pDataType) const; + //@} + + /** + * \name User Notification Object + */ + //@{ + /** Access to the unique UserNotification object. + * \return The pointer to the user notification or \c NULL \c if the object + * has not been allocated. + */ + FbxUserNotification* GetUserNotification() const; + + /** Set the user notification + * \param pUN + */ + void SetUserNotification(FbxUserNotification* pUN); + //@} + + /** + * \name IOSettings Object + */ + //@{ + /** Access to a IOSettings object. + * \return The pointer to IOSettings or \c NULL \c if the object + * has not been allocated. + */ + virtual FbxIOSettings* GetIOSettings() const; + + /** Set the IOSettings pointer + * \param pIOSettings + */ + virtual void SetIOSettings(FbxIOSettings* pIOSettings); + //@} + + + /** + * \name Message Emitter (for Message Logging) + */ + //@{ + /** Access to the unique FbxMessageEmitter object. + * \return The pointer to the message emitter. + */ + FbxMessageEmitter& GetMessageEmitter(); + /** Sets to the unique FbxMessageEmitter object. + * \param pMessageEmitter the emitter to use, passing NULL will reset to the default emitter. + * The object will be deleted when the SDK manager is destroyed, thus ownership is transfered. + */ + bool SetMessageEmitter(FbxMessageEmitter* pMessageEmitter); + //@} + + + /** + * \name Localization Hierarchy + */ + //@{ + /** Add a localization object to the known localization providers. + * \param pLocManager the localization object to register. + */ + void AddLocalization(FbxLocalizationManager* pLocManager); + + /** Remove a localization object from the known localization providers. + * \param pLocManager the localization object to remove. + */ + void RemoveLocalization(FbxLocalizationManager* pLocManager); + + /** Select the current locale for localization. + * \param pLocale the locale name, for example "fr" or "en-US". + */ + bool SetLocale(const char* pLocale); + + /** Localization helper function. Calls each registered localization manager + * until one can localizes the text. + * \param pID the identifier for the text to localize. + * \param pDefault the default text. Uses pID if NULL. + * \return the potentially localized text. May return the parameter passed in. + */ + const char* Localize(const char* pID, const char* pDefault=NULL) const; + //@} + + /** + * \name XRef Manager + */ + //@{ + /** Retrieve the manager responsible for managing object XRef resolution. + * \return The XRef manager for this SDK manager. + */ + FbxXRefManager& GetXRefManager(); + //@} + + /** + * \name Library Management + */ + //@{ + /** Retrieve the main object Libraries + * \return The Root library + */ + FbxLibrary* GetRootLibrary() const; + FbxLibrary* GetSystemLibraries() const; + FbxLibrary* GetUserLibraries() const; + //@} + + /** + * \name Plug-in Registry Object + */ + //@{ + /** Access to the unique FbxIOPluginRegistry object. + * \return The pointer to the user FbxIOPluginRegistry + */ + FbxIOPluginRegistry* GetIOPluginRegistry() const; + //@} + + /** + * \name Fbx Generic Plugins Management + */ + //@{ + #ifndef FBXSDK_ENV_WINSTORE + /** Load plug-ins directory + * \param pFilename The directory path. + * \param pExtensions The plug in extension. + * \return \c True + */ + bool LoadPluginsDirectory(const char* pFilename, const char* pExtensions=NULL); + + /** Load plug-in + * \param pFilename The file name + * \return \c True + */ + bool LoadPlugin(const char* pFilename); + + /** Unload all plug-ins + */ + bool UnloadPlugins(); + + /** Emit plugins event. + * \param pEvent The event to be emitted. + */ + bool EmitPluginsEvent(const FbxEventBase& pEvent); + + //!Get plugins. + FbxArray GetPlugins() const; + + /** get plugins count + * \return The number of plugins. + */ + int GetPluginCount() const; + + /** Find plug in. + * \param pName The plug in name. + * \param pVersion The plug in version. + * \return The plugin, \c null if not found. + */ + FbxPlugin* FindPlugin(const char* pName, const char* pVersion) const; + #endif /* !FBXSDK_ENV_WINSTORE */ + //@} + + + /** + * \name IO Settings + */ + //@{ + // Add IOSettings in hierarchy from different modules + + /** Fill IO Settings for registered readers. + * \param pIOS The properties hierarchies to fill. + */ + void FillIOSettingsForReadersRegistered(FbxIOSettings& pIOS); + + /** Fill IO Settings for registered writers. + * \param pIOS The properties hierarchies to fill. + */ + void FillIOSettingsForWritersRegistered(FbxIOSettings& pIOS); + + /** Fill common IO Settings + * \param pIOS The properties hierarchies to fill. + * \param pImport If \c true, import properties are set, otherwise export properties are set. + */ + void FillCommonIOSettings(FbxIOSettings& pIOS, bool pImport); + //@} + + /** + * \name Global Object Management + */ + //@{ + /** Register object with the manager. + * \internal + * \param pObject The object to be registered. + * \anchor GlobalObjectManagement + */ + void RegisterObject(FbxObject* pObject); + + /** Unregister object with the manager. + * \internal + * \param pObject The object to be unregistered. + */ + void UnregisterObject(FbxObject* pObject); + + /** Register a list of objects with the manager. + * \internal + * \param pArray The list of object to be registered. + */ + void RegisterObjects(const FbxArray& pArray); + + /** Unregister a list of objects with the manager. + * \internal + * \param pArray The list of object to be unregistered. + */ + void UnregisterObjects(const FbxArray& pArray); + + /** Increment the scene destroying counter. + * \remarks Call this function before the destroying list is changed. + */ + void IncreaseDestroyingSceneFlag(); + /** Shrink the object list and decrements the scene destroying counter. + * \remarks Call this function after the destroying is changed. + * Use IncreasDestroyingSceneFlag() and DecreaseDestroyingSceneFlag() in pairs. + */ + void DecreaseDestroyingSceneFlag(); + /** + * \name Reference Management + */ + //@{ + /** Get number of references. + * \return Number of references. + */ + int GetReferenceCount() const; + + /** Get reference at given index. + * \param pIndex Position in the list of references. + * \return Pointer to the reference or \c NULL if index is out of bounds. + */ + FbxSceneReference* GetReference(int pIndex) const; + + /** Add a reference. + * \param pReference The reference to be added. + * \return If the reference is correctly added to the scene, return \c true otherwise, if the reference is + * already there, returns \c false. + */ + int AddReference(FbxSceneReference* pReference); + + /** Remove the specified reference from reference list. + * \param pReference The reference to be removed. + * \return If the reference was successfully removed, return \c true otherwise, if the + * reference could not be found returns \c false. + */ + bool RemoveReference(FbxSceneReference* pReference); + + /** Clear the specified reference from the SDK manager. + * \param pReference The reference to be removed. + * \return If the reference was successfully cleared from the SDK manager, return \c true otherwise, if the + * reference could not be found returns \c false. + */ + bool ClearReference(FbxSceneReference* pReference); + //@} + + /** Add a prefix to a name. + * \param pPrefix The prefix to be added to the \c pName. This + * string must contain the "::" characters in order to be considered + * as a prefix. + * \param pName The name to be prefix. + * \return The prefixed string + * \remarks If a prefix already exists, it is removed before + * adding \c pPrefix. + */ + static FbxString PrefixName(const char* pPrefix, const char* pName); + + /** Get the count of document available in this manager + * \return The count of document owned by this manager. + */ + int GetDocumentCount(); + + /** Get the document at pIndex in the manager's list. + * \param pIndex The index of the document to retrieve. + * \return The document at the specified index. Will return NULL if index is invalid. + */ + FbxDocument* GetDocument(int pIndex); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + static FbxManager* GetDefaultManager(); + void CreateMissingBindPoses(FbxScene* pScene); + int GetBindPoseCount(FbxScene *pScene) const; + int GetFbxClassCount() const; + FbxClassId GetNextFbxClass(FbxClassId pClassId /* invalid id: first one */) const; + +protected: + FbxManager(); + virtual ~FbxManager(); + + void Clear(); + void ClassInit(); + void ClassRelease(); + void DataTypeInit(); + void DataTypeRelease(); + +private: + bool CanAutoDestroySrcObject(FbxObject* pObject, FbxObject* pSrcObject, bool pRecursive) const; + + void Create_Common_Import_IOSettings_Groups(FbxIOSettings& pIOS); + void Create_Common_Export_IOSettings_Groups(FbxIOSettings& pIOS); + void Add_Common_Import_IOSettings(FbxIOSettings& pIOS); + void Add_Common_Export_IOSettings(FbxIOSettings& pIOS); + void Add_Common_RW_Import_IOSettings(FbxIOSettings& pIOS); + void Add_Common_RW_Export_IOSettings(FbxIOSettings& pIOS); + + FbxClassId Internal_RegisterFbxClass(const char* pClassName, FbxClassId pParentClassId, FbxObjectCreateProc=0, const char* pFbxFileTypeName=0, const char* pFbxFileSubTypeName=0); + bool Internal_RegisterFbxClass(FbxClassId pClassId); + FbxClassId Internal_OverrideFbxClass(FbxClassId pClassId, FbxObjectCreateProc=0); + void Internal_UnregisterFbxClass(FbxClassId pClassId); + + void RemoveObjectsOfType(const FbxClassId& pClassId); + + FbxAnimEvaluator* GetDefaultAnimationEvaluator(); + + FbxArray mObjects; + FbxArray mDocuments; + + FbxIOSettings* mIOSettings; + FbxIOPluginRegistry* mRegistry; + FbxUserNotification* mUserNotification; + FbxMessageEmitter* mMessageEmitter; + FbxArray mLocalizationManagerArray; + FbxArray mSceneReferenceArray; + FbxAnimEvaluator* mDefaultAnimationEvaluator; + + FbxArray mDestroyingObjects; + FbxArray mDestroyingDocuments; + int mIsDestroyingScene; + + FbxManager_internal* mInternal; + static FbxManager* smDefaultManager; + + FBXSDK_FRIEND_NEW(); + friend class FbxObject; + friend class FbxProperty; //For GetDefaultAnimationEvaluator() + friend class FbxNode; //For GetDefaultAnimationEvaluator() + friend class FbxScene; //For GetDefaultAnimationEvaluator() + friend class FbxAnimEvaluator; //For GetDefaultAnimationEvaluator() +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_CORE_MANAGER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxmodule.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxmodule.h new file mode 100644 index 00000000..cdac5bb7 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxmodule.h @@ -0,0 +1,49 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxmodule.h +#ifndef _FBXSDK_CORE_MODULE_H_ +#define _FBXSDK_CORE_MODULE_H_ + +#include + +#ifndef FBXSDK_ENV_WINSTORE + +#include + +typedef void* FbxModule; + +/** Loads the specified module into the address space of the calling process. + * \param pFilePath The full file path name of the module to load. + * \return The module handle if it successfully loaded, otherwise NULL. + * \remark The specified module may cause other modules to be loaded. + */ +FBXSDK_DLL FbxModule FbxModuleLoad(const char* pFilePath); + +/** Retrieves the address of an exported function or variable from the specified module. + * \param pModuleHandle A valid module handle. + * \param pProcName The procedure name to search. + * \return The procedure handle if valid, otherwise NULL. + */ +FBXSDK_DLL void* FbxModuleGetProc(FbxModule pModuleHandle, const char* pProcName); + +/** Frees the loaded module and, if necessary, decrements its reference count. + * \param pModuleHandle A valid module handle. + * \return \c true on success, \c false otherwise. + * \remark When the reference count reaches zero, the module is unloaded from the address space of the calling process and the handle is no longer valid. + */ +FBXSDK_DLL bool FbxModuleFree(FbxModule pModuleHandle); + +#include + +#endif /* !FBXSDK_ENV_WINSTORE */ + +#endif /* _FBXSDK_CORE_MODULE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxobject.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxobject.h new file mode 100644 index 00000000..ce7bbf12 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxobject.h @@ -0,0 +1,1617 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxobject.h +#ifndef _FBXSDK_CORE_OBJECT_H_ +#define _FBXSDK_CORE_OBJECT_H_ + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +class FbxManager; +class FbxDocument; +class FbxImplementation; +class FbxImplementationFilter; +class FbxLibrary; +class FbxMessage; +class FbxPeripheral; +class FbxUserDataRecord; +class FbxConnectEvent; + +//! \internal Macro used to declare ClassId mechanics. +#define FBXSDK_CLASS_DECLARE(Class, Parent)\ +private:\ + Class(const Class&);\ + Class& operator=(const Class&);\ +protected:\ + virtual ~Class(){};\ +public:\ + static FbxClassId ClassId;\ + virtual FbxClassId GetClassId() const { return ClassId; }\ + friend class FBXSDK_NAMESPACE::FbxManager;\ + typedef Parent ParentClass;\ + static Class* Create(FbxManager* pManager, const char* pName);\ + +//! \internal Macro used to declare the FbxObject class. +#define FBXSDK_FBXOBJECT_DECLARE(Class, Parent)\ + FBXSDK_CLASS_DECLARE(Class, Parent)\ + FBXSDK_FRIEND_NEW()\ + static Class* Create(FbxObject* pContainer, const char* pName);\ +protected:\ + static Class* Allocate(FbxManager* pManager, const char* pName, const Class* pFrom);\ + +//! Macro used to declare a new class derived from FbxObject. +#define FBXSDK_OBJECT_DECLARE(Class, Parent)\ + FBXSDK_FBXOBJECT_DECLARE(Class, Parent)\ +protected:\ + Class(FbxManager& pManager, const char* pName) : Parent(pManager, pName){};\ +private: /* end of object declaration, put back private */\ + +//! Macro used to declare a new abstract class derived from FbxObject. +#define FBXSDK_ABSTRACT_OBJECT_DECLARE(Class, Parent)\ + FBXSDK_CLASS_DECLARE(Class, Parent)\ +protected:\ + static FbxObjectCreateProc Allocate;\ + Class(FbxManager& pManager, const char* pName) : Parent(pManager, pName){};\ +private: /* end of object declaration, put back private */\ + +//! Macro used to implement a new class derived from FbxObject. +#define FBXSDK_OBJECT_IMPLEMENT(Class)\ + FbxClassId Class::ClassId;\ + Class* Class::Create(FbxManager* pManager, const char* pName)\ + {\ + return (Class*)pManager->CreateNewObjectFromClassId(Class::ClassId, pName);\ + }\ + Class* Class::Create(FbxObject* pContainer, const char* pName)\ + {\ + FBX_ASSERT_RETURN_VALUE(pContainer && pContainer->GetFbxManager(), NULL);\ + return (Class*)pContainer->GetFbxManager()->CreateNewObjectFromClassId(Class::ClassId, pName, pContainer);\ + }\ + Class* Class::Allocate(FbxManager* pManager, const char* pName, const Class* pFrom)\ + {\ + Class* lNewObject = FbxNew(*pManager, pName);\ + lNewObject->Construct(pFrom);\ + lNewObject->SetObjectFlags(FbxObject::eInitialized, true);\ + return lNewObject;\ + }\ + +//! Macro used to implement a new abstract class derived from FbxObject. +#define FBXSDK_ABSTRACT_OBJECT_IMPLEMENT(Class)\ + FbxClassId Class::ClassId;\ + FbxObjectCreateProc Class::Allocate = 0;\ + Class* Class::Create(FbxManager* pManager, const char* pName)\ + {\ + return (Class*)pManager->CreateNewObjectFromClassId(Class::ClassId, pName);\ + }\ + +/** The base class of most FBX objects. Provides the benefits of connectivity, identity, run-time typing, + * properties, naming, copying, cloning, selection, and automated file IO. Most of + * the FBX SDK API deals with FbxObject pointers when it comes to manipulate objects in its simplest form. + * + * The ClassID mechanism replaces the dynamic_cast mechanism for efficient run-time type information. + * + * The FbxObject provides methods for managing the connections between objects. + * Using connections, objects can be related to each other to form hierarchies or structures. All of + * the FBX scene's object relations are expressed as connections between objects. Those connections can + * be altered as needed to reflect most kind of setups encountered in this world. For example, + * connections can be used to express parenting between transform nodes. Connections are not strict in + * the sense that we allow any type of objects to connect to any other type of objects. The meaning of + * the connection is purely semantic. As of yet, we do not provide the functionality to validate if + * the connections made by the users are allowed or not. + * + * FbxObject provide a property (FbxProperty) mechanism to describe characteristics of + * objects in a scene. Properties may be either static or dynamic. Static properties are defined in the class direction + * and can be accessed directly by their name on the object exposing them without + * the need for a search in the property list of the object. Dynamic properties can be added during run-time, + * while the program is running. Objects can have an unlimited amount of properties. + * Properties can be listed at run-time, allowing for a flexible support of custom data + * on objects, since they might be considered by the FBX file readers/writers depending on the flags set. + * + * Here is an example of a new empty minimal class template for FBX objects: + * \code + * //Declaration + * class MyClass : public FbxObject + * { + * FBXSDK_OBJECT_DECLARE(MyClass, FbxObject); //Be careful! The second parameter to this macro must be the parent class name! + * + * public: + * //Declare methods and properties here... + * }; + * \endcode + * \code + * //Implementation + * FBXSDK_OBJECT_IMPLEMENT(MyClass); + * \endcode + * Before the new class can be used, it needs to be registered to the manager with the following method: + * \code + * MyFbxManager->RegisterFbxClass("MyClassName", FBX_TYPE(MyClass), FBX_TYPE(FbxObject)); //Be careful! The 3rd parameter must be the parent class! If the parent class change, it must be updated here too! + * \endcode + * Then to create or delete instances of your new class, the following methods must be used: + * \code + * //Creating a new instance + * MyClass* MyObject = MyClass::Create(MyFbxManager, "Object Name"); + * + * //Deleting this instance + * MyObject->Destroy(); + * MyObject = NULL; + * \endcode + * \see FbxProperty + */ +class FBXSDK_DLL FbxObject : public FbxEmitter +{ + FBXSDK_FBXOBJECT_DECLARE(FbxObject, FbxEmitter); + +public: + //! \name General Object Management + //@{ + /** Test if this class is a hierarchical children of the specified class type. This is the standard method to differentiate object classes. (Deprecated, please use Is() instead.) + * \param pClassId The class type to test against self. + * \return \c true if the object is a hierarchical children of the type specified. + * \remark This function will perform a complete search until it reaches the top level class, but it will stop as soon as one ClassId matches the test. */ + FBX_DEPRECATED inline bool Is(const FbxClassId& pClassId) const { return GetClassId().Is(pClassId); } + + /** Templated test if this class is a hierarchical children of the specified class type. + * \return \c true if the object is a hierarchical children of the type specified. + * \remark This function will perform a complete search until it reaches the top level class, but it will stop as soon as one ClassId matches the test. */ + template inline bool Is() const { return GetClassId().Is(T::ClassId); } + + /** Retrieve the FbxManager this object belongs to. + * \return A pointer to the manager that this object belongs to. */ + FbxManager* GetFbxManager() const; + + /** Returns a const pointer to the document that contains this object. + * \return A const pointer to the document that contains this object or \c NULL if the object does not belong to any document. */ + FbxDocument* GetDocument() const; + + /** Returns a const pointer to the root document that contains this object. + * \return A const pointer to the root document that contains this object or \c NULL if the object does not belong to any document. + * \remarks It returns this pointer if this object is a document object and does not belong to any document. That means this object is the root document. */ + FbxDocument* GetRootDocument() const; + + /** Returns a const pointer to the scene that contains this object. + * \return A pointer to the scene that contains this object or \c NULL if the object does not belong to any scene. */ + FbxScene* GetScene() const; + + /** Unregister and delete this object from memory. This will also breaks all connections as well as removing all the instance of all the properties of this object with the object's class. + * \param pRecursive If true, all children (source) objects will also be unregistered and deleted. */ + void Destroy(bool pRecursive=false); + + /** Reset all the properties of this object to their default values. */ + void ResetProperties(); + //@} + + //! \name Object Flags Management + //@{ + //! Flags available to control objects. + enum EObjectFlag + { + eNone = 0, //!< No flags. + eInitialized = 1 << 0, //!< Automatically set when FbxObject::Construct() is completed. + eSystem = 1 << 1, //!< When set, object is deleted upon FbxManager destroy only. Use carefully! + eSavable = 1 << 2, //!< If set, object is stored in FBX file upon export. All objects are savable by default. + eSelected = 1 << 3, //!< Used by the selection mechanic to specify a selected object. + eHidden = 1 << 4, //!< Used for interface representation; if set, the object should not be visible. + eContentLoaded = 1 << 5, //!< Used by load-on-demand mechanic to specify if an object has its content loaded. + eDontLocalize = 1 << 6, //!< Used by asset builder; Do not localize this object + eCopyCalledByClone = 1 << 16 //!< Used internally. If set, modify the Copy behavior of the object + }; + + /** Set the state of object flags. + * \param pFlags Bit flags which value is going to be changed. + * \param pValue If \c true, bit flags will be set, otherwise bits will be un-set. */ + void SetObjectFlags(EObjectFlag pFlags, bool pValue); + + /** Get the state of object flags. + * \param pFlags Bit flags to query. + * \return \c true if the specified bit flags are all set. */ + bool GetObjectFlags(EObjectFlag pFlags) const; + + /** Override all object flags at once. + * \param pFlags The bit flags to set all the object flags to. + * \remark This function will override all flags; unspecified bit flags will be un-set. */ + void SetAllObjectFlags(FbxUInt pFlags); + + /** Get all object flags at once. + * \return All bit flags at once. */ + FbxUInt GetAllObjectFlags() const; + //@} + + //! \name Copying, Cloning and Referencing + //@{ + /** Copy an object content into this object. + * \param pObject The source object to copy data from. + * \return Returns the destination object being modified by the source. + * \remark This function replace the assignment operator (operator=). It will copy all property values and the name. Connections are NOT copied. */ + virtual FbxObject& Copy(const FbxObject& pObject); + + //! Types of clones that can be created for FbxObject. + enum ECloneType + { + eDeepClone, //!< A deep copy of the object. Changes to either the original or clone properties do not propagate to each other. + eReferenceClone //!< Changes to original object properties propagate to clone. Changes to clone properties do not propagate to original. + }; + + /** Creates a clone of this object. + * By default, the connections are NOT cloned. If the desired effect is to clone the connections as well, you must clone using the FbxCloneManager + * (refer to this class documentation for further details). + * + * \param pCloneType The type of clone to be created. By default, the clone type is eDeepClone. + * \param pContainer An optional parameter to specify which object will "contain" the new object. By contain, we mean the new object + * will become a source to the container, connection-wise. + * \param pSet See remark section. + * \return The new clone, or NULL (if the specified clone type is not supported). + * \remark When doing either a "deep" or "reference" clone type, the clone will always get its properties values set from + * the source object properties values. + * \remark Since this is a virtual function, some classes might do additional tasks. + * \remark The \e pSet argument is not used in the default implementation of this method. Specialized implementations should + * cast this pointer to FbxCloneManager::CloneSet to have access to the cloned objects so far. Typically, this + * pointer is set by the clone manager. + */ + virtual FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const; + + /** Checks if this object is a reference clone of another object. + * \return \c True if this object is a clone of another object, \c false otherwise */ + bool IsAReferenceTo() const; + + /** If this object is a reference clone, returns the original object (from which the clone originates). + * \return The original object, or NULL (if this object is not a reference clone). */ + FbxObject* GetReferenceTo() const; + + /** Checks if any objects are reference cloned from this object. + * \return \c True if there are objects reference cloned from this object, \c false otherwise. */ + bool IsReferencedBy() const; + + /** Returns the number of objects that are reference clones of this object. + * \return The number of objects that are reference clones of this object. */ + int GetReferencedByCount() const; + + /** Returns a reference clone of this object at the specified index. + * \param pIndex The specified index, valid values are [0, GetReferencedByCount()) + * \return The reference clone, or NULL (if pIndex is out of range). */ + FbxObject* GetReferencedBy(int pIndex) const; + //@} + + /** + * \name Object Name Management + */ + //@{ + /** Sets the name of this object. + * \param pName The object name as a \c NULL terminated string. + */ + void SetName(const char* pName); + + /** Returns the full name of this object. + * \return The full name as a \c NULL terminated string. + */ + const char* GetName() const; + + /** Returns the name of the object without the namespace qualifier. + * \return The object name without the namespace qualifier. + */ + FbxString GetNameWithoutNameSpacePrefix() const; + + /** Returns the name of the object with the namespace qualifier. + * \return The object name with the namespace qualifier. + */ + FbxString GetNameWithNameSpacePrefix() const; + + /** Sets the initial name of the object. + * \param pName The object's initial name as a \c NULL terminated string. + */ + void SetInitialName(const char* pName); + + /** Returns the initial name of the object. + * \return The object's initial name as a \c NULL terminated string. + */ + const char* GetInitialName() const; + + /** Returns the namespace of the object. + * \return The object's namespace as a \c NULL terminated string. + */ + FbxString GetNameSpaceOnly(); + + /** Sets the namespace of the object. + * \param pNameSpace The object's namespace as a \c NULL terminated string. + */ + void SetNameSpace(FbxString pNameSpace); + + /** Returns an array of all the namespaces for this object + * \param identifier The identifier of the namespaces. + * \return The array of all namespaces. + */ + FbxArray GetNameSpaceArray(char identifier); + + /** Returns only the name (no namespace or prefix) of the object. + * \return The name only as a \c NULL terminated string. + */ + FbxString GetNameOnly() const; + + /** Returns the namespace qualifier. + * \return The namespace qualifier. + */ + FbxString GetNameSpacePrefix() const; + + /** Removes the prefix of pName + * \param pName Whose prefix is removed. + * \return A temporary string without prefix. + */ + static FbxString RemovePrefix(char* pName); + + /** Strips the prefix of pName + * \param lName Whose prefix is stripped. + * \return lName stripped of its prefix. + */ + static FbxString StripPrefix(FbxString& lName); + + /** Strips the prefix of pName + * \param pName Whose prefix is stripped. + * \return A temporary string stripped of its prefix. + */ + static FbxString StripPrefix(const char* pName); + + //!Returns the unique ID of this object. + const FbxUInt64& GetUniqueID() const; + //@} + + /** + * \name Selection management + */ + //@{ + /** Returns if this object is currently in a selected state. + * \return \c True if this object is selected, \c false otherwise. + */ + virtual bool GetSelected(); + + /** Sets whether this object is currently selected. + * \param pSelected The selection flag. + */ + virtual void SetSelected(bool pSelected); + //@} + + /** + * \name User data + */ + //@{ + /** Sets the data pointer for an user data record whose ID is pUserID. + * \param pUserID The ID of the user data record. + * \param pUserData The data pointer of the user data record. + * \remarks An user data record is composed of an ID and a data pointer. + * If the user data record identified by pUserID does not exist, a new user data record is created and its data pointer is set as pUserData. + */ + void SetUserDataPtr(const FbxUInt64& pUserID, void* pUserData); + + /** Returns the data pointer of an user data record whose ID is pUserID. + * \param pUserID The ID of the user data record. + * \return The data pointer of the user data record, \c NULL if the user data record is not found. + */ + void* GetUserDataPtr(const FbxUInt64& pUserID) const; + + /** Sets the data pointer for the user data record whose ID is the object ID. + * \param pUserData The data pointer of the user data record. + * \remarks An user data record is composed of an ID and a data pointer. + * If the user data record identified by pUserID does not exist, a new user data record is created and its data pointer is set as pUserData. + */ + inline void SetUserDataPtr(void* pUserData){ SetUserDataPtr(GetUniqueID(), pUserData); } + + /** Returns the data pointer of the user data record whose ID is the object ID. + * \return The data pointer of the user data record, \c NULL if the user data record is not found. + */ + inline void* GetUserDataPtr() const { return GetUserDataPtr(GetUniqueID()); } + //@} + + /** + * \name General Object Connection and Relationship Management + */ + //@{ + /** Connects this object to a source object. + * \param pObject The source object to which this object connects. + * \param pType The connection type between this object and the source object. + * \return \c True on success, \c false otherwise. + */ + inline bool ConnectSrcObject(FbxObject* pObject, FbxConnection::EType pType=FbxConnection::eNone) { return RootProperty.ConnectSrcObject(pObject,pType); } + + /** Judges whether this object connects with the source object. + * \param pObject The source object. + * \return \c True if this object connects with the source object, \c false otherwise. + */ + inline bool IsConnectedSrcObject(const FbxObject* pObject) const { return RootProperty.IsConnectedSrcObject(pObject); } + + /** Disconnects this object from a source object. + * \param pObject The source object from which this object will be disconnected. + * \return \c True on success, \c false otherwise. + */ + inline bool DisconnectSrcObject(FbxObject* pObject){ return RootProperty.DisconnectSrcObject(pObject); } + + /** Disconnects this object from all source objects. + * \return \c True if it disconnects all source objects successfully, \c false otherwise. + */ + inline bool DisconnectAllSrcObject() { return RootProperty.DisconnectAllSrcObject(); } + + /** Disconnects this object from all source objects that satisfy a given criteria. + * \param pCriteria The given criteria. + * \return \c True if it disconnects all the source objects successfully, \c false otherwise. + */ + inline bool DisconnectAllSrcObject(const FbxCriteria& pCriteria) { return RootProperty.DisconnectAllSrcObject(pCriteria); } + + /** Disconnects this object from all source objects of a specific class type. (Deprecated, please use DisconnectAllSrcObject() instead.) + * \param pClassId The specific class type. + * \return \c True if it disconnects all source objects successfully, \c false otherwise. + */ + FBX_DEPRECATED inline bool DisconnectAllSrcObject(FbxClassId pClassId) { return RootProperty.DisconnectAllSrcObject(FbxCriteria::ObjectType(pClassId)); } + + /** Returns the number of source objects with which this object connects. + * \return The number of source objects with which this object connects. + */ + inline int GetSrcObjectCount() const { return RootProperty.GetSrcObjectCount(); } + + /** Returns the number of source objects that satisfy the given criteria with which this object connects. + * \param pCriteria The given criteria. + * \return The number of source objects that satisfy the given criteria with which this object connects. + */ + inline int GetSrcObjectCount(const FbxCriteria& pCriteria) const { return RootProperty.GetSrcObjectCount(pCriteria); } + + /** Returns the number of source objects of the specific class type with which this object connects. (Deprecated, please use GetSrcObjectCount() instead.) + * \param pClassId The specific class type. + * \return The number of source objects of the specific class type with which this object connects. + */ + FBX_DEPRECATED inline int GetSrcObjectCount(FbxClassId pClassId) const { return RootProperty.GetSrcObjectCount(FbxCriteria::ObjectType(pClassId)); } + + /** Returns the source object with which this object connects at the specified index. + * \param pIndex The specified index whose default value is 0. + * \return The source object at the specified index, NULL if not found. + */ + inline FbxObject* GetSrcObject(int pIndex=0) const { return RootProperty.GetSrcObject(pIndex); } + + /** Returns the source object that satisfies the criteria at the specified index with which this object connects. + * \param pCriteria The given criteria. + * \param pIndex The specified index whose default value is 0. + * \return The source object that satisfies the given criteria at the specified index, NULL if not found. + */ + inline FbxObject* GetSrcObject(const FbxCriteria& pCriteria, int pIndex=0) const { return RootProperty.GetSrcObject(pCriteria,pIndex); } + + /** Returns the source object of the specified class type at the specified index with which this object connects. (Deprecated, please use GetSrcObject() instead.) + * \param pClassId The specified class type. + * \param pIndex The specified index whose default value is 0. + * \return The source object of the specified class type at the specified index, NULL if not found. + */ + FBX_DEPRECATED inline FbxObject* GetSrcObject(FbxClassId pClassId, int pIndex=0) const { return RootProperty.GetSrcObject(FbxCriteria::ObjectType(pClassId), pIndex); } + + /** Searches the source object with the specified name, starting at the specified index. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The source object with the name, NULL if not found. + */ + inline FbxObject* FindSrcObject(const char* pName, int pStartIndex=0) const { return RootProperty.FindSrcObject(pName,pStartIndex); } + + /** Searches the source object with the specified name which satisfies the given criteria, starting at the specified index. + * \param pCriteria The given criteria. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The source object with the name, NULL if not found. + */ + inline FbxObject* FindSrcObject(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const { return RootProperty.FindSrcObject(pCriteria,pName,pStartIndex); } + + /** Searches the source object with the specified name which is also the specified class type, starting at the specified index. (Deprecated, please use FindSrcObject() instead.) + * \param pClassId The specified class type. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The source object with the name, NULL if not found. + */ + FBX_DEPRECATED inline FbxObject* FindSrcObject(FbxClassId pClassId, const char* pName, int pStartIndex=0) const { return RootProperty.FindSrcObject(FbxCriteria::ObjectType(pClassId), pName, pStartIndex); } + + /** Disconnects this object from all source objects of the specified class type. + * \return \c true if it disconnects all source objects successfully, \c false otherwise. */ + template inline bool DisconnectAllSrcObject() { return RootProperty.DisconnectAllSrcObject(FbxCriteria::ObjectType(T::ClassId)); } + + /** Disconnects this object from all source objects that are of the specified class type and that satisfy the given criteria. + * \param pCriteria The given criteria. + * \return \c true if it disconnects all source objects successfully, \c false otherwise. */ + template inline bool DisconnectAllSrcObject(const FbxCriteria& pCriteria) { return RootProperty.DisconnectAllSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } + + /** Returns the number of source objects of a specific class type with which this object connects. + * \return The number of source objects of the specified class type with which this object connects. */ + template inline int GetSrcObjectCount() const { return RootProperty.GetSrcObjectCount(FbxCriteria::ObjectType(T::ClassId)); } + + /** Returns the number of source objects with which this object connects that are the specified class type and that satisfy the given criteria. + * \param pCriteria The given criteria. + * \return The number of source objects that are the specified class type and that satisfy the given criteria. */ + template inline int GetSrcObjectCount(const FbxCriteria& pCriteria) const { return RootProperty.GetSrcObjectCount(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } + + /** Returns the source object of the specified class type at the specified index. + * \param pIndex The specified index whose default value is 0. + * \return The source object of a specified class type at the specified index, NULL if not found. */ + template inline T* GetSrcObject(int pIndex=0) const { return (T*)RootProperty.GetSrcObject(FbxCriteria::ObjectType(T::ClassId), pIndex); } + + /** Returns the source object that is the specified class type and that satisfies the given criteria at the specified index. + * \param pCriteria The given criteria. + * \param pIndex The specified index whose default value is 0. + * \return The source object that is of the specified class type and that satisfies the given criteria at the specified index, NULL if not found. */ + template inline T* GetSrcObject(const FbxCriteria& pCriteria, int pIndex=0) const { return (T*)RootProperty.GetSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pIndex); } + + /** Searches the source object with the specified name that is the specified class type, starting at the specified index. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The source object with the name, NULL if not found. */ + template inline T* FindSrcObject(const char* pName, int pStartIndex=0) const { return (T*)RootProperty.FindSrcObject(FbxCriteria::ObjectType(T::ClassId), pName, pStartIndex); } + + /** Searches the source object with the specified name that is the specified class type and that satisfies the given criteria, starting at the specified index. + * \param pCriteria The given criteria. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The source object with the name, NULL if not found. */ + template inline T* FindSrcObject(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const { return (T*)RootProperty.FindSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pName, pStartIndex); } + + /** Connects this object to one destination object. + * \param pObject The destination object with which this object connects. + * \param pType The connection type between this object and the destination object. + * \return \c True on success, \c false otherwise. + */ + inline bool ConnectDstObject(FbxObject* pObject, FbxConnection::EType pType=FbxConnection::eNone) { return RootProperty.ConnectDstObject(pObject,pType); } + + /** Judges whether this object connects with the destination object. + * \param pObject The destination object. + * \return \c True if this object connects with the destination object, \c false otherwise. + */ + inline bool IsConnectedDstObject(const FbxObject* pObject) const { return RootProperty.IsConnectedDstObject(pObject); } + + /** Disconnects this object from the destination object. + * \param pObject The destination object from which this object disconnects. + * \return \c True on success, \c false otherwise. + */ + inline bool DisconnectDstObject(FbxObject* pObject) { return RootProperty.DisconnectDstObject(pObject); } + + /** Disconnects this object from all destination objects. + * \return \c True if it disconnects all destination objects successfully, \c false otherwise. + */ + inline bool DisconnectAllDstObject() { return RootProperty.DisconnectAllDstObject(); } + + /** Disconnects this object from all destination objects that satisfy given criteria. + * \param pCriteria The given criteria. + * \return \c True if it disconnects all destination objects successfully, \c false otherwise. + */ + inline bool DisconnectAllDstObject(const FbxCriteria& pCriteria) { return RootProperty.DisconnectAllDstObject(pCriteria); } + + /** Disconnects this object from all destination objects of the specified class type. (Deprecated, please use DisconnectAllDstObject() instead.) + * \param pClassId The specified class type. + * \return \c True if it disconnects all destination objects of the specified class type successfully, \c false otherwise. + */ + FBX_DEPRECATED inline bool DisconnectAllDstObject(FbxClassId pClassId) { return RootProperty.DisconnectAllDstObject(FbxCriteria::ObjectType(pClassId)); } + + /** Returns the number of destination objects with which this object connects. + * \return The number of destination objects with which this object connects. + */ + inline int GetDstObjectCount() const { return RootProperty.GetDstObjectCount(); } + + /** Returns the number of destination objects with which this object connects that satisfy the given criteria. + * \param pCriteria The given criteria. + * \return The number of destination objects with which this object connects that satisfy the given criteria. + */ + inline int GetDstObjectCount(const FbxCriteria& pCriteria) const { return RootProperty.GetDstObjectCount(pCriteria); } + + /** Returns the number of destination objects of the specified class type with which this object connects. (Deprecated, please use GetDstObjectCount() instead.) + * \param pClassId The specified class type. + * \return The number of destination objects of the specified class type with which this object connects. + */ + FBX_DEPRECATED inline int GetDstObjectCount(FbxClassId pClassId) const { return RootProperty.GetDstObjectCount(FbxCriteria::ObjectType(pClassId)); } + + /** Returns the destination object at the specified index with which this object connects. + * \param pIndex The specified index whose default value is 0. + * \return The destination object at the specified index, NULL if not found. + */ + inline FbxObject* GetDstObject(int pIndex=0) const { return RootProperty.GetDstObject(pIndex); } + + /** Returns the destination object with which this object connects that satisfies the given criteria at the specified index. + * \param pCriteria The given criteria. + * \param pIndex The specified index whose default value is 0. + * \return The destination object that satisfies the given criteria at the specified index, NULL if not found. + */ + inline FbxObject* GetDstObject(const FbxCriteria& pCriteria, int pIndex=0) const { return RootProperty.GetDstObject(pCriteria,pIndex); } + + /** Returns the destination object of the specified class type with which this object connects at the specified index. (Deprecated, please use GetDstObject() instead.) + * \param pClassId The specified class type. + * \param pIndex The specified index whose default value is 0. + * \return The destination object of the specified class type at the specified index, NULL if not found. + */ + FBX_DEPRECATED inline FbxObject* GetDstObject(FbxClassId pClassId, int pIndex=0) const { return RootProperty.GetDstObject(FbxCriteria::ObjectType(pClassId), pIndex); } + + /** Searches the destination object with the specified name, starting at the specified index. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The destination object with the name, NULL if not found. + */ + inline FbxObject* FindDstObject(const char* pName, int pStartIndex=0) const { return RootProperty.FindDstObject(pName,pStartIndex); } + + /** Searches the destination object with the specified name which satisfies the given criteria, starting at the specified index. + * \param pCriteria The given criteria. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The destination object with the name, NULL if not found. + */ + inline FbxObject* FindDstObject(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const { return RootProperty.FindDstObject(pCriteria,pName,pStartIndex); } + + /** Searches the destination object with the specified name which is the specified class type, starting at the specified index. (Deprecated, please use FindDstObject() instead.) + * \param pClassId The specified class type. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The destination object with the name, NULL if not found. + */ + FBX_DEPRECATED inline FbxObject* FindDstObject(FbxClassId pClassId, const char* pName,int pStartIndex=0) const { return RootProperty.FindDstObject(FbxCriteria::ObjectType(pClassId), pName, pStartIndex); } + + /** Disconnects this object from all destination objects of the specified class type. + * \return \c true if it disconnects all destination objects of the specified class type successfully, \c false otherwise. */ + template inline bool DisconnectAllDstObject() { return RootProperty.DisconnectAllDstObject(FbxCriteria::ObjectType(T::ClassId)); } + + /** Disconnects this object from all destination objects that are the specified class type and that satisfy the given criteria. + * \param pCriteria The given criteria. + * \return \c true if it disconnects all destination objects successfully, \c false otherwise. */ + template inline bool DisconnectAllDstObject(const FbxCriteria& pCriteria) { return RootProperty.DisconnectAllDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } + + /** Returns the number of destination objects of the specified class type with which this object connects. + * \return The number of destination objects of the specified class type with which this object connects. */ + template inline int GetDstObjectCount() const { return RootProperty.GetDstObjectCount(FbxCriteria::ObjectType(T::ClassId)); } + + /** Returns the number of destination objects with which this object connects that are the specified class type and that satisfy the given criteria. + * \param pCriteria The given criteria. + * \return The number of destination objects that are the specified class type and that satisfy the given criteria. */ + template inline int GetDstObjectCount(const FbxCriteria& pCriteria) const { return RootProperty.GetDstObjectCount(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } + + /** Returns the destination object with which this object connects that is the specified class type at the specified index. + * \param pIndex The specified index whose default value is 0. + * \return The destination object of the specified class type at the specified index, NULL if not found. */ + template inline T* GetDstObject(int pIndex=0) const { return (T*)RootProperty.GetDstObject(FbxCriteria::ObjectType(T::ClassId), pIndex); } + + /** Returns the destination object with which this object connects that is the specified class type and that satisfies the given criteria at the specified index. + * \param pCriteria The given criteria. + * \param pIndex The specified index whose default value is 0. + * \return The destination object that is the specified class type and that satisfies the given criteria at the specified index, NULL if not found. */ + template inline T* GetDstObject(const FbxCriteria& pCriteria, int pIndex=0) const { return (T*)RootProperty.GetDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pIndex); } + + /** Searches the destination object with the specified name which is of the specified class type, starting at the specified index. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The source object with the name, NULL if not found. */ + template inline T* FindDstObject(const char* pName, int pStartIndex=0) const { return (T*)RootProperty.FindDstObject(FbxCriteria::ObjectType(T::ClassId), pName, pStartIndex); } + + /** Searches the destination object with the specified name that is the specified class type and that satisfies the given criteria, starting at the specified index. + * \param pCriteria The given criteria. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The source object with the name, NULL if not found. */ + template inline T* FindDstObject(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const { return (T*)RootProperty.FindDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pName, pStartIndex); } + //@} + + /** + * \name Property Management + */ + //@{ + /** Returns the first property of this object. + * \return The first property of this object. + */ + inline FbxProperty GetFirstProperty() const + { + return RootProperty.GetFirstDescendent(); + } + + /** Returns the next property of this object that follows the specified property. + * \param pProperty The specified property. + * \return The next property of this object that follows pProperty. + */ + inline FbxProperty GetNextProperty(const FbxProperty& pProperty) const + { + return RootProperty.GetNextDescendent(pProperty); + } + + /** Searches a property by name. + * \param pName The property name. + * \param pCaseSensitive Whether the name is case-sensitive. + * \return A valid FbxProperty if found, else an invalid FbxProperty. See FbxProperty::IsValid() + */ + inline FbxProperty FindProperty(const char* pName, bool pCaseSensitive = true) const + { + return RootProperty.Find(pName, pCaseSensitive ); + } + + /** Searches a property by name and data type. + * \param pName The property name. + * \param pDataType The data type of the property. + * \param pCaseSensitive Whether the name is case-sensitive. + * \return A valid FbxProperty if the property is found, else an invalid FbxProperty. See FbxProperty::IsValid() + */ + inline FbxProperty FindProperty(const char* pName, const FbxDataType& pDataType, bool pCaseSensitive = true) const + { + return RootProperty.Find(pName, pDataType, pCaseSensitive ); + } + + /** Searches a property by full name. + * \param pName The full name of the property as a \c NULL terminated string. + * \param pCaseSensitive whether or not the name is case-sensitive. + * \return A valid FbxProperty if the property is found, else + * an invalid FbxProperty. See FbxProperty::IsValid() + */ + inline FbxProperty FindPropertyHierarchical(const char* pName, bool pCaseSensitive = true) const + { + return RootProperty.FindHierarchical(pName, pCaseSensitive ); + } + + /** Searches a property by full name and data type. + * \param pName The full name of the property as a \c NULL terminated string. + * \param pDataType The data type of the property. + * \param pCaseSensitive whether or not the name is case-sensitive. + * \return A valid FbxProperty if the property is found, else + * an invalid FbxProperty. See FbxProperty::IsValid() + */ + inline FbxProperty FindPropertyHierarchical(const char* pName, const FbxDataType& pDataType, bool pCaseSensitive = true) const + { + return RootProperty.FindHierarchical(pName, pDataType, pCaseSensitive ); + } + + /** Returns the class root property. + * \return The class root property if it exists, else an invalid FbxProperty. See FbxProperty::IsValid(). + * \remarks Class FbxObject and its sub-classes all have a class root property. This class root property contains basic information about the class type, such as the class name. + */ + FbxProperty GetClassRootProperty(); + + /** Connects this object to a source property. + * \param pProperty The source property with which this object connects. + * \return \c True on success, \c false otherwise. + */ + inline bool ConnectSrcProperty(const FbxProperty& pProperty) { return RootProperty.ConnectSrcProperty(pProperty); } + + /** Determines whether this object connects with the specified source property. + * \param pProperty The specified source property. + * \return \c True if this object connects with the specified source property, \c false otherwise. + */ + inline bool IsConnectedSrcProperty(const FbxProperty& pProperty) { return RootProperty.IsConnectedSrcProperty(pProperty); } + + /** Disconnects this object from the specified source property. + * \param pProperty The specified source property. + * \return \c True on success, \c false otherwise. + */ + inline bool DisconnectSrcProperty(const FbxProperty& pProperty) { return RootProperty.DisconnectSrcProperty(pProperty); } + + /** Returns the number of source properties with which this object connects. + * \return The number of source properties with which this object connects. + */ + inline int GetSrcPropertyCount() const { return RootProperty.GetSrcPropertyCount(); } + + /** Returns the source property at the specified index with which this object connects. + * \param pIndex The specified index. + * \return The source property at the specified index. + */ + inline FbxProperty GetSrcProperty(int pIndex=0) const { return RootProperty.GetSrcProperty(pIndex); } + + /** Searches a source property with which this object connects that has a specific name, starting at the specified index. + * \param pName The specified property name. + * \param pStartIndex The start index. + * \return The source property with the specified name. + */ + inline FbxProperty FindSrcProperty(const char* pName,int pStartIndex=0) const { return RootProperty.FindSrcProperty(pName,pStartIndex); } + + /** Connects this object to a destination property. + * \param pProperty The destination property with which this object connects. + * \return \c True on success, \c false otherwise. + */ + inline bool ConnectDstProperty(const FbxProperty& pProperty) { return RootProperty.ConnectDstProperty(pProperty); } + + /** Determines if this object connects with the specified destination property. + * \param pProperty The specified destination property. + * \return \c True if this object connects with the specified destination property, \c false otherwise. + */ + inline bool IsConnectedDstProperty(const FbxProperty& pProperty) { return RootProperty.IsConnectedDstProperty(pProperty); } + + /** Disconnects this object from the specified destination property. + * \param pProperty The specified destination property. + * \return \c True on success, \c false otherwise. + */ + inline bool DisconnectDstProperty(const FbxProperty& pProperty) { return RootProperty.DisconnectDstProperty(pProperty); } + + /** Returns the number of destination properties with which this object connects. + * \return The number of destination properties with which this object connects. + */ + inline int GetDstPropertyCount() const { return RootProperty.GetDstPropertyCount(); } + + /** Returns the destination property at the specified index with which this object connects. + * \param pIndex The specified index. + * \return The destination property at the specified index. + */ + inline FbxProperty GetDstProperty(int pIndex=0) const { return RootProperty.GetDstProperty(pIndex); } + + /** Searches a destination property with which this object connects that has a specific name, starting at the specified index. + * \param pName The specified property name. + * \param pStartIndex The start index. + * \return The destination property with the specified name. + */ + inline FbxProperty FindDstProperty(const char* pName, int pStartIndex=0) const { return RootProperty.FindDstProperty(pName,pStartIndex); } + //@} + + /** + * \name Off-Loading Management + * \remarks You can modify the unloaded state flag using the SetObjectFlags() + * method. The ContentIsUnloaded() method below (implemented in this class) + * is simply a synonym of GetObjectFlags(eCONTENT_UNLOADED_FLAG) + */ + //@{ + /** Unloads this object's content using the offload peripheral that is currently set in the document + * then flushes it from memory. + * \return 2 if the object's content is already unloaded or 1 if + * this object's content has been successfully unloaded to the current + * peripheral. + * + * \remarks If the content is locked more than once, or the peripheral cannot handle + * this object's unloading, or if an error occurs, this method returns 0 and does not flush the content. + */ + int ContentUnload(); + + /** Loads this object's content using the offload peripheral that is currently set in the document. + * \return 1 if this object's content has been successfully loaded from the current + * peripheral, 2 if the content is already loaded, and 0 if an error occurs or + * the object's content is locked. + * \remarks On a successful Load attempt, the object content is locked. + */ + int ContentLoad(); + + /** Judges if this object's content is loaded. + * \return \c True if this object's content is loaded, \c false otherwise. + * \remarks An object that has not been filled yet must be considered + * unloaded. + */ + bool ContentIsLoaded() const; + + /** Decreases the content lock count of an object. If the content lock count of an object + * is greater than 0, the content of the object is considered locked. + */ + void ContentDecrementLockCount(); + + /** Increases the content lock count of an object. If the content lock count of an object + * is greater than 0, the content of the object is considered locked. + */ + void ContentIncrementLockCount(); + + /** Judges if this object's content is locked. The content is considered locked if the content lock count + * is greater than 0 + * \return \c True if this object's content is locked, \c false otherwise. + * \remarks A locked state prevents the object content from being unloaded from memory but + * does not block the loading. + */ + bool ContentIsLocked() const; + + /** Writes the content of the object to the given stream. + * \param pStream The destination stream. + * \return \c True if the content is successfully processed + * by the receiving stream, \c false otherwise. + */ + virtual bool ContentWriteTo(FbxStream& pStream) const; + + /** Reads the content of the object from the given stream. + * \param pStream The source stream. + * \return \c True if the object fills itself with the received data + * from the stream successfully, \c false otherwise. + */ + virtual bool ContentReadFrom(const FbxStream& pStream); + //@} + + /** + * \name Logging. + */ + //@{ + /** Emits a message in all available message emitters in the document or SDK manager. + * \param pMessage The message to emit. + * \remarks The ownership of the message is transferred, don't delete it. + */ + void EmitMessage(FbxMessage* pMessage) const; + //@} + + /** + * \name Localization helper. + */ + //@{ + /** Localization helper function, it calls the implementation of FBX SDK manager. + * Sub-classes that manage their own localization could over-ride this function. + * \param pID The identifier of the text to be localized. + * \param pDefault The default text. Uses pID as the default text if pDefault is NULL. + * \return The localized text or the default text if the text can't be localized, . + */ + virtual const char* Localize(const char* pID, const char* pDefault=NULL) const; + //@} + + /** + * \name Application Implementation Management + */ + //@{ + /** Returns a handle on the parent library of this object. + * \return The parent library of this object, or \c NULL if the parent library doesn't exist. + */ + FbxLibrary* GetParentLibrary() const; + + /** Adds an implementation. + * \param pImplementation The implementation to be added. + * \return \c True on success, \c false otherwise. + * \remarks To succeed this function must be called with an implementation that has not already been added to this node. + */ + bool AddImplementation(FbxImplementation* pImplementation); + + /** Removes an implementation. + * \param pImplementation The implementation to be removed. + * \return \c True on success, \c false otherwise. + * \remarks To succeed this function must be called with an implementation that has already been added to this node. + */ + bool RemoveImplementation(FbxImplementation* pImplementation); + + /** Determines if this shading node has a default implementation. + * \return \c True if this shading node has a default implementation, \c false otherwise. + */ + bool HasDefaultImplementation(void) const; + + /** Returns the default implementation of this shading node. + * \return The default implementation of this shading node. + */ + FbxImplementation* GetDefaultImplementation(void) const; + + /** Sets the default implementation of this shading node. + * \param pImplementation The implementation to be set. + * \return \c True on success, \c false otherwise. + * \remarks To succeed this function must be called with an implementation that has already been added to this node. + * Only the implementation which has already been added can be set as the default implementation. + */ + bool SetDefaultImplementation(FbxImplementation* pImplementation); + + /** Returns the number of implementations that satisfy a given criteria. + * \param pCriteria The given criteria. + * \returns The number of implementations. + */ + int GetImplementationCount(const FbxImplementationFilter* pCriteria=NULL) const; + + /** Returns the implementation at the specified index that satisfies the given criteria. + * \param pIndex The specified index. + * \param pCriteria The given criteria. + * \return The implementation at the specified index, NULL if not found. + */ + FbxImplementation* GetImplementation(int pIndex, const FbxImplementationFilter* pCriteria=NULL) const; + //@} + + /** + * \name Object Storage && Retrieval + */ + //@{ + /** Returns the URL of this object. + * \return The URL of this object. + * \remarks The URL indicates where the object is stored. + */ + virtual FbxString GetUrl() const; + + /** Sets the URL of this object. + * \param pUrl The URL to be set. + * \return \c True on success, \c false otherwise. + * \remarks The URL indicates where the object is stored. + */ + virtual bool SetUrl(char* pUrl); + //@} + + /** \name Run-time ClassId Management */ + //@{ + /** Set the run-time ClassId for this class. In most contexts, users do not have to change the run-time ClassId, they are automatically generated when registered a new class during run-time. + * \param pClassId The ClassId to set as the run-time ClassId for this object. */ + void SetRuntimeClassId(const FbxClassId& pClassId); + + /** Retrieve the run-time ClassId for this object. + * \return The run-time ClassId for this object. */ + FbxClassId GetRuntimeClassId() const; + + /** Test if this class is a hierarchical children of the specified class type. This test will be performed on the run-time class registered with the FBX SDK Manager rather than the static ClassId generated at compile time. + * \param pClassId The class type to test against self. + * \return True if the object is a hierarchical children of the type specified. + * \remarks This function will perform a complete search until it reaches the top level class, but it will stop as soon as one ClassId matches the test. */ + bool IsRuntime(const FbxClassId& pClassId) const; + + /** Find out if the ClassId was registered during run-time rather than at compile time. + * \return True if the run-time ClassId is inequal to the ClassId. */ + bool IsRuntimePlug() const; + //@} + + /** Compact the memory used by this object. + * \remark Note that this function might not result in saved memory because it depends if the sub-class implements it, or if any memory can actually be saved. */ + virtual void Compact(); + + //! The root property that holds all children property for this object + FbxProperty RootProperty; + +protected: + /** Optional constructor override, automatically called by default constructor. + * \param pFrom If not null, the function must take it into account like a copy constructor. + * \remark In case it is decided to override this function, do not forget to call ParentClass::Construct(pFrom) at the beginning. */ + virtual void Construct(const FbxObject* pFrom); + + /** Optional property constructor override, automatically called by default constructor. + * \param pForceSet If the property value must be set regardless of default value. + * \remark If your object have properties, they must be initialized in this function. */ + virtual void ConstructProperties(bool pForceSet); + + /** Optional destructor override, automatically called by default destructor. + * \param pRecursive If true, children objects should be destroyed as well. + * \remark In case it is decided to override this function, do not forget to call ParentClass::Destruct(pResursive) at the end. */ + virtual void Destruct(bool pRecursive); + + /** Clears this object's content from memory. This method must be overridden in the derived classes. + * \remark This method is called by ContentUnload() if the object content's unloading is successful. */ + virtual void ContentClear(); + + /** Retrieves the peripheral of that object. + * \return The current peripheral for that object + * \remark A peripheral manipulates the content of an object. For instance, a peripheral can load the connections of an object on demand. */ + virtual FbxPeripheral* GetPeripheral(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +public: + virtual bool Compare(FbxObject* pOtherObject); + + //Basic comparison operator implementation. It simply compare property values between source and target. + //NOTE: If a property cannot be found on one of the object, the comparison fails (return false). + //Different classid will fail comparison as well as different property count. Reference properties are not compared. + bool operator==(const FbxObject& pObject); + bool operator!=(const FbxObject& pObject); + + virtual void SetDocument(FbxDocument* pDocument); + + inline FbxPropertyHandle& GetPropertyHandle() { return RootProperty.mPropertyHandle; } + + //Important note: If this function is not implemented, the pFileSubTypeName string used when registering your + //class via FbxManager::RegisterFbxClass will be used instead. This makes it useless to re-implement this + //function if you do not intend to return a different string for the same class. + virtual const char* GetTypeName() const; + virtual FbxStringList GetTypeFlags() const; + + // This function will go as deep as possible to clear the Connection list without sending + // notifications to the connections to give them the chance to Disconnect themselves. + // This is a bypass of the intended workflow and should be used with care. + void WipeAllConnections(); + + //Used as global flag to modify the behavior of FbxObject::Destruct() during a ForceKill() on the scene. This is for internal use. + static void SetWipeMode(bool pState); + static bool GetWipeMode(); + +protected: + FbxObject(FbxManager& pManager, const char* pName); + + enum EPropertyNotifyType + { + ePropertySetRequest, + ePropertySet, + ePropertyGet + }; + + virtual bool ConnectNotify(const FbxConnectEvent& pEvent); + virtual bool PropertyNotify(EPropertyNotifyType pType, FbxProperty& pProperty); + bool Copyable(const FbxObject& pObject); + +private: + void CopyPropertiesFrom(const FbxObject& pFrom); + void SetClassRootProperty(FbxProperty& lProperty); + int GetFlatPropertyCount() const; + + FbxNameHandler mName; + FbxClassId mRuntimeClassId; + FbxUserDataRecord* mUserData; + FbxManager* mManager; + FbxImplementation* mDefaultImplementation; + FbxUInt64 mUniqueID; + FbxInt32 mObjectFlags; + FbxInt32 mContentLockCount; + FbxInt32 mUserDataCount; + static bool mWipeMode; + + friend class FbxProperty; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** A utility class for iterating over the properties (FbxProperty) of any FbxObject. +* \nosubgrouping +*/ +template class FbxIterator +{ +public: + /** Constructor. + *\param pObject The object whose properties are going to be iterated. + */ + FbxIterator(const FbxObject* pObject) : mObject(pObject) {} + + /** Get the first property of the object. + * \return The first property of the object. + */ + inline const FbxProperty& GetFirst() { mProperty = mObject->GetFirstProperty(); return mProperty; } + + /** Get next property of the object. + * \return The next property of the object. + */ + inline const FbxProperty& GetNext() { mProperty = mObject->GetNextProperty(mProperty); return mProperty; } + +private: + FbxProperty mProperty; + const FbxObject* mObject; +}; + +/** A utility class for iterating over source objects that connect to property (FbxProperty) or object (FbxObject). +* \nosubgrouping +*/ +class FbxIteratorSrcBase +{ +public: + /** + * Constructor. + * \param pProperty Property object. The iterator will iterate source objects that connect to it. + * \param pClassId The class ID specifies the type of the source objects. + */ + inline FbxIteratorSrcBase(FbxProperty& pProperty,FbxClassId pClassId) : + mProperty(pProperty), + mClassId(pClassId), + mSize(0), + mIndex(-1) + { + ResetToBegin(); + } + + /** + * Constructor. + * \param pObject FBX object. The iterator will iterate source objects that connect to it. + * \param pClassId The class ID specifies the type of the source objects. + */ + inline FbxIteratorSrcBase(FbxObject* pObject,FbxClassId pClassId) : + mProperty(pObject->RootProperty), + mClassId(pClassId), + mSize(0), + mIndex(-1) + { + ResetToBegin(); + } + + /** + * Get the first source object that connects to the property or object. + * \return The first source object. + */ + inline FbxObject* GetFirst() + { + ResetToBegin(); + return GetNext(); + } + + /** + * Get next source object that connects to the property or object. + * \return The next source object. If there are no more objects, return NULL. + */ + inline FbxObject* GetNext() + { + mIndex++; + return ((mIndex>=0) && (mIndex=0) && (mIndexmSize) mIndex--; + return GetPrevious(); + } + +protected: + /** + * Reset the iterate index to the beginning. + */ + inline void ResetToBegin() + { + mSize = mProperty.GetSrcObjectCount(FbxCriteria::ObjectType(mClassId)); + mIndex = -1; + } + + /** + * Reset the iterate index to the end. + */ + inline void ResetToEnd() + { + mSize = mProperty.GetSrcObjectCount(FbxCriteria::ObjectType(mClassId)); + mIndex = mSize; + } + + FbxProperty mProperty; //! The property to iterate. If iterate an object, this is the root property of the object. + FbxClassId mClassId; //! The class ID specifies the type of the source objects to be retrieved. + int mSize; //! The number of source objects whose type is specified by mClassId. + int mIndex; //! Iterate index. +}; + +/** + * A utility class for iterating over source objects that connect to property (FbxProperty) or object (FbxObject). + * The class is a wrapper of FbxIteratorSrcBase with template. + * \nosubgrouping + */ +template class FbxIteratorSrc : protected FbxIteratorSrcBase +{ +public: + /** + * Constructor. + * \param pObject FBX object. The iterator will iterate source objects that connect to it. + */ + inline FbxIteratorSrc(FbxObject* pObject) : FbxIteratorSrcBase(pObject,Type::ClassId) {} + + /** + * Constructor. + * \param pProperty Property object. The iterator will iterate source objects that connect to it. + */ + inline FbxIteratorSrc(FbxProperty& pProperty) : FbxIteratorSrcBase(pProperty,Type::ClassId) {} + + /** + * Get the first source object that connects to the property or object. + * \return The first source object. + */ + inline Type* GetFirst() { return (Type*)FbxIteratorSrcBase::GetFirst(); } + + /** + * Get next source object that connects to the property or object. + * \return The next source object. If there are no more objects, return NULL. + */ + inline Type* GetNext() { return (Type*)FbxIteratorSrcBase::GetNext(); } + + /** + * Get next source object that connects to the property or object. + * \return The next source object. If there are no more objects, return NULL. + * \remark This method makes sure the iterate index is not out of bounds. + */ + inline Type* GetSafeNext() { return (Type*)FbxIteratorSrcBase::GetSafeNext(); } + + /** + * Get the last source object that connects to the property or object. + * \return The last source object. + */ + inline Type* GetLast() { return (Type*)FbxIteratorSrcBase::GetLast(); } + + + /** + * Get previous source object that connects to the property or object. + * \return The previous source object. If there are no more objects, return NULL. + */ + inline Type* GetPrevious() { return (Type*)FbxIteratorSrcBase::GetPrevious(); } + + /** + * Get previous source object that connects to the property or object. + * \return The previous source object. If there are no more objects, return NULL. + * \remark This method makes sure the iterate index is not out of bounds. + * If the iterate index is out of bounds, the last source object is returned. + */ + inline Type* GetSafePrevious() { return (Type*)FbxIteratorSrcBase::GetSafePrevious(); } +}; + +/** A utility class for iterating over destination objects that connect to property (FbxProperty) or object (FbxObject). +* \nosubgrouping +*/ +class FbxIteratorDstBase +{ +protected: + /** The property to iterate. If iterate an object, this is the root property of the object. */ + FbxProperty mProperty; + /** The class ID specifies the type of the destination objects to be retrieved. */ + FbxClassId mClassId; + /** The number of destination objects whose type is specified by mClassId. */ + int mSize; + /** Iterate index. */ + int mIndex; + +public: + /** + * Constructor. + * \param pProperty Property object. The iterator will iterate destination objects that connect to it. + * \param pClassId The class ID specifies the type of the destination objects. + */ + inline FbxIteratorDstBase(FbxProperty& pProperty,FbxClassId pClassId) : + mProperty(pProperty), + mClassId(pClassId), + mSize(0), + mIndex(-1) + { + ResetToBegin(); + } + + /** + * Constructor. + * \param pObject FBX object. The iterator will iterate source objects that connect to it. + * \param pClassId The class ID specifies the type of the source objects. + */ + inline FbxIteratorDstBase(FbxObject* pObject,FbxClassId pClassId) : + mProperty(pObject->RootProperty), + mClassId(pClassId), + mSize(0), + mIndex(-1) + { + ResetToBegin(); + } + + /** + * Get the first destination object that connects to the property or object. + * \return The first destination object. + */ + inline FbxObject* GetFirst() + { + ResetToBegin(); + return GetNext(); + } + + /** + * Get next destination object that connects to the property or object. + * \return The next destination object. If there are no more objects, return NULL. + */ + inline FbxObject* GetNext() + { + mIndex++; + return ((mIndex>=0) && (mIndex=0) && (mIndexmSize) mIndex--; + return GetPrevious(); + } + +protected: + /** + * Reset the iterate index to the beginning. + */ + inline void ResetToBegin() + { + mSize = mProperty.GetDstObjectCount(FbxCriteria::ObjectType(mClassId)); + mIndex = -1; + } + + /** + * Reset the iterate index to the end. + */ + inline void ResetToEnd() + { + mSize = mProperty.GetDstObjectCount(FbxCriteria::ObjectType(mClassId)); + mIndex = mSize; + } +}; + +/** + * A utility class for iterating over destination objects that connect to property (FbxProperty) or object (FbxObject). + * The class is a wrapper of FbxIteratorDstBase with template. + * \nosubgrouping + */ +template class FbxIteratorDst : protected FbxIteratorDstBase +{ +public: + /** + * Constructor. + * \param pObject FBX object. The iterator will iterate destination objects that connect to it. + */ + inline FbxIteratorDst(FbxObject* pObject) : FbxIteratorDstBase(pObject,Type::ClassId) {} + + /** + * Constructor. + * \param pProperty Property object. The iterator will iterate destination objects that connect to it. + */ + inline FbxIteratorDst(FbxProperty& pProperty) : FbxIteratorDstBase(pProperty,Type::ClassId) {} + + /** + * Get the first destination object that connects to the property or object. + * \return The first destination object. + */ + inline Type* GetFirst() { return (Type*)FbxIteratorDstBase::GetFirst(); } + + /** + * Get next destination object that connects to the property or object. + * \return The next destination object. If there are no more objects, return NULL. + */ + inline Type* GetNext() { return (Type*)FbxIteratorDstBase::GetNext(); } + + /** + * Get next destination object that connects to the property or object. + * \return The next destination object. If there are no more objects, return NULL. + * \remark This method makes sure the iterate index is not out of bounds. + */ + inline Type* GetSafeNext() { return (Type*)FbxIteratorDstBase::GetSafeNext(); } + + /** + * Get the last destination object that connects to the property or object. + * \return The last destination object. + */ + inline Type* GetLast() { return (Type*)FbxIteratorDstBase::GetLast(); } + + /** + * Get previous destination object that connects to the property or object. + * \return The previous destination object. If there are no more objects, return NULL. + */ + inline Type* GetPrevious() { return (Type*)FbxIteratorDstBase::GetPrevious(); } + + /** + * Get previous destination object that connects to the property or object. + * \return The previous destination object. If there are no more objects, return NULL. + * \remark This method makes sure the iterate index is not out of bounds. + * If the iterate index is out of bounds, the last destination object is returned. + */ + inline Type* GetSafePrevious() { return (Type*)FbxIteratorDstBase::GetSafePrevious(); } +}; + +/** Convert the class type parameter into a C class parameter for other function inputs. + * Usage example: + * \code + * //Assuming MyCamera is a valid FbxCamera object + * bool AreCamerasObject = MyCamera->Is(); //Should return true :) + * \endcode + */ +#define FBX_TYPE(class) ((const class*)0) + +/** Safe casting of FBX SDK objects into other FBX SDK class types. This cast will perform + * the complete test to make sure the object inherits from the requested class type. This is + * the equivalent of a dynamic_cast but much faster. + * \param pObject The object to try to cast into T type. + * \return A non-null pointer if the cast was successful. + */ +template inline T* FbxCast(FbxObject* pObject) +{ + return pObject && pObject->Is() ? (T*)pObject : 0; +} + +/** Safe const casting of FBX SDK objects into other FBX SDK class types. This cast will perform + * the complete test to make sure the object inherits from the requested class type. This is + * the equivalent of a dynamic_cast but much faster. + * \param pObject The object to try to cast into T type. + * \return A non-null pointer if the cast was successful. + */ +template inline const T* FbxCast(const FbxObject* pObject) +{ + return pObject && pObject->Is() ? (const T*)pObject : 0; +} + +//! Macro used to iterate over source or destination objects that connect to property (FbxProperty) or object (FbxObject). +#define FbxForEach(Iterator, Object) for((Object)=(Iterator).GetFirst();(Object)!=0;(Object)=(Iterator).GetNext()) + +//! Macro used to reversely iterate over source or destination objects that connect to property (FbxProperty) or object (FbxObject) +#define FbxForEachReverse(Iterator, Object) for(Object=(Iterator).GetLast();(Object)!=0;Object=(Iterator).GetPrevious()) + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +class FBXSDK_DLL FbxConnectEvent +{ +public: + enum EType + { + eConnectRequest, + eConnect, + eConnected, + eDisconnectRequest, + eDisconnect, + eDisconnected + }; + + enum EDirection + { + eSource, + eDestination + }; + + inline FbxConnectEvent(EType pType,EDirection pDir,FbxProperty *pSrc,FbxProperty *pDst) : + mType(pType), + mDirection(pDir), + mSrc(pSrc), + mDst(pDst) + { + } + inline EType GetType() const { return mType; } + inline EDirection GetDirection() const { return mDirection; } + inline FbxProperty& GetSrc() const { return *mSrc; } + inline FbxProperty& GetDst() const { return *mDst; } + template inline T* GetSrcIfObject() const { return mSrc->IsRoot() ? FbxCast(mSrc->GetFbxObject()) : (T*)0; } + template inline T* GetDstIfObject() const { return mDst->IsRoot() ? FbxCast(mDst->GetFbxObject()) : (T*)0; } + +private: + EType mType; + EDirection mDirection; + FbxProperty* mSrc; + FbxProperty* mDst; +}; + +class FbxObjectPropertyChanged : public FbxEvent +{ + FBXSDK_EVENT_DECLARE(FbxObjectPropertyChanged); + +public: + FbxObjectPropertyChanged(FbxProperty pProp) : mProp(pProp) {} + FbxProperty mProp; +}; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ + +#include + +#endif /* _FBXSDK_CORE_OBJECT_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxperipheral.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxperipheral.h new file mode 100644 index 00000000..d5e72659 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxperipheral.h @@ -0,0 +1,96 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxperipheral.h +#ifndef _FBXSDK_CORE_PERIPHERAL_H_ +#define _FBXSDK_CORE_PERIPHERAL_H_ + +#include + +#include + +class FbxObject; + +/** FbxPeripheral is an interface to load/unload content of FbxObject from memory to +somewhere you defined, for example, to a temporary file on disk . +* \nosubgrouping +* You need to inherited your own peripheral class from this class and overload +* the functions to control what information of a FbxObject you want to load/unload, +* and where you are going to load/unload these information to. +* For example, you can ask an object to dump itself on disk to free some memory and vice-versa +* when you want to load/unload this object from your scene flexibly. +*/ +class FBXSDK_DLL FbxPeripheral +{ +public: + /** + * \name Constructor and Destructor + */ + //@{ + + //!Constructor. + FbxPeripheral(); + + //!Destructor. + virtual ~FbxPeripheral(); + //@} + + /** Reset the peripheral to its initial state. + */ + virtual void Reset() = 0; + + /** Unload the content of pObject. + * \param pObject Object whose content is to be offloaded into + * the peripheral storage area. + * \return \c true if the object content has been successfully transferred. + * \c false otherwise. + */ + virtual bool UnloadContentOf(FbxObject* pObject) = 0; + + /** Load the content of pObject. + * \param pObject Object whose content is to be loaded from + * the peripheral storage area. + * \return \c true if the object content has been successfully transferred. + * \c false otherwise. + */ + virtual bool LoadContentOf(FbxObject* pObject) = 0; + + /** Check if this peripheral can unload the given object content. + * \param pObject Object whose content has to be transferred. + * \return \c true if the peripheral can handle this object content and + * has enough space in its storage area.\c false otherwise. + */ + virtual bool CanUnloadContentOf(FbxObject* pObject) = 0; + + /** Check if this peripheral can load the given object content. + * \param pObject Object whose content has to be transferred. + * \return \c true if the peripheral can handle this object content. + * \c false otherwise. + */ + virtual bool CanLoadContentOf(FbxObject* pObject) = 0; + + /** Initialize the connections of an object + * \param pObject Object on which the request for connection is done. + */ + virtual void InitializeConnectionsOf(FbxObject* pObject) = 0; + + /** Uninitialize the connections of an object + * \param pObject Object on which the request for disconnection is done. + */ + virtual void UninitializeConnectionsOf(FbxObject* pObject) = 0; +}; + +// predefined offload peripherals +extern FBXSDK_DLL FbxPeripheral* NULL_PERIPHERAL; +extern FBXSDK_DLL FbxPeripheral* TMPFILE_PERIPHERAL; +#include + +#endif /* _FBXSDK_CORE_PERIPHERAL_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxplugin.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxplugin.h new file mode 100644 index 00000000..960e4d9c --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxplugin.h @@ -0,0 +1,264 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxplugin.h +#ifndef _FBXSDK_CORE_PLUGIN_H_ +#define _FBXSDK_CORE_PLUGIN_H_ + +#include + +#ifndef FBXSDK_ENV_WINSTORE + +#include +#include +#include + +#include + +class FbxManager; +class FbxPluginContainer; + +//! Plug-in declaration macro that must to be used when defining new FbxPlugin objects. +#define FBXSDK_PLUGIN_DECLARE(Plugin)\ + FBXSDK_FRIEND_NEW();\ +public:\ + static Plugin * Create(const FbxPluginDef& pDefinition, FbxModule pModuleHandle);\ + void Destroy(); + +//! Plug-in implementation macro that must be used when implementing new FbxPlugin objects. +#define FBXSDK_PLUGIN_IMPLEMENT(Plugin)\ + Plugin* Plugin::Create(const FbxPluginDef& pDefinition, FbxModule pModuleHandle){ return FbxNew(pDefinition, pModuleHandle); }\ + void Plugin::Destroy(){ FbxDelete(this); } + +/** Structure used by plug-ins for identification purposes. + * \note To avoid confusions in the system, it is recommended to choose an appropriate unique identifier string name when + * defining your plug-in, as well as incrementing the version string to a correct value whenever something changes in the + * implementation of the plug-in. Both of these string are used when comparing plug-ins for searches, as well as + * identification in FBX files. + */ +struct FBXSDK_DLL FbxPluginDef +{ + //! Constructor + FbxPluginDef() : + mName("Unknown Name"), + mVersion("Unknown Version") + { + } + + FbxString mName; //!< The identifier name string of the plug-in. If the name is already used by another plug-in, the plug-in will still register. + FbxString mVersion; //!< The version string of the plug-in. +}; + +/** Data used to communicate information between an application and the plug-in. + */ +struct FBXSDK_DLL FbxPluginData +{ + //! Constructor + FbxPluginData() : + mQueryEmitter(NULL), + mSDKManager(NULL), + mPluginContainer(NULL) + { + } + + //! Copy Constructor + explicit FbxPluginData(const FbxPluginData& pOther) : + mQueryEmitter(pOther.mQueryEmitter), + mSDKManager(pOther.mSDKManager), + mPluginContainer(pOther.mPluginContainer) + { + } + + FbxEmitter* mQueryEmitter; //!< The emitter on which the plug-in can listen to receive events. + FbxManager* mSDKManager; //!< The FBX SDK Manager on which the plug-in was instanced. + FbxPluginContainer* mPluginContainer; //!< The container which will have the ownership of the plug-in. +}; + +/** The base class to inherit from when creating new plug-ins for the FBX SDK. Plug-ins for the FBX SDK are extremely flexible + * allowing a wide-range of possibilities. For example, one can write his own plug-in to add new readers/writers to the current list + * of supported I/O formats, or add new dynamic classes to instantiate custom objects that can later be stored in FBX files. We also use the same + * interface for plug-ins written using the FBX Extension SDK, which allow additional callbacks for other various Autodesk products + * enabling greater interoperability with multiple various SDKs. + * + * Here is typical implementation of an FBX SDK plug-in that doesn't do anything else than just registering itself: + * \code + * class MyPlugin : public FbxPlugin + * { + * FBXSDK_PLUGIN_DECLARE(MyPlugin); //This macro is mandatory for any plug-in definition + * + * protected: + * explicit MyPlugin(const FbxPluginDef& pDefinition, FbxModule pModuleHandle) : FbxPlugin(pDefinition, pModuleHandle) + * { + * } + * + * //Abstract functions that *must* be implemented + * virtual bool SpecificInitialize() + * { + * //For example, here we could register as many new I/O readers/writers as we would like, or classes, etc. + * return true; + * } + * + * virtual bool SpecificTerminate() + * { + * //Here we would have to unregister whatever we registered to the FBX SDK + * return true; + * } + * }; + * + * FBXSDK_PLUGIN_IMPLEMENT(MyPlugin); //This macro is mandatory for any plug-in implementation + * + * //Standard C export needed for any new FBX SDK plug-in + * extern "C" + * { + * static MyPlugin* sMyPluginInstance = NULL; //The module is owner of the plug-in + * + * //This function will be called when an application will request the plug-in + * #ifdef FBXSDK_ENV_WIN + * __declspec(dllexport) void FBXPluginRegistration(FbxPluginContainer& pContainer, FbxModule pModuleHandle) + * #else + * void FBXPluginRegistration(FbxPluginContainer& pContainer, FbxModule pModuleHandle) + * #endif + * { + * if( sPlugin == NULL ) + * { + * //Create the plug-in definition which contains the information about the plug-in + * FbxPluginDef sPluginDef; + * sPluginDef.mName = "My Plugin"; + * sPluginDef.mVersion = "1.0"; + * + * //Create an instance of the plug-in + * sMyPluginInstance = MyPlugin::Create(sPluginDef, pLibHandle); + * + * //Register the plug-in with the FBX SDK + * pContainer.Register(*sPlugin); + * } + * } + * } + * \endcode + * \see FbxPluginDef, FbxPluginData + */ +class FBXSDK_DLL FbxPlugin : public FbxListener +{ + FBXSDK_INTRUSIVE_LIST_NODE(FbxPlugin, 1); + +public: + /** Abstract function called once at the end of the plug-in construction. At that moment, plug-in data have been properly initialized. + * This function must be implemented by anyone who writes a new plug-in for the FBX SDK. + */ + virtual bool SpecificInitialize()=0; + + /** Abstract function called once at the beginning of the plug-in destruction. At that moment, plug-in data is fully available. + * This function must be implemented by anyone who writes a new plug-in for the FBX SDK. + */ + virtual bool SpecificTerminate()=0; + + /** Virtual function called once when the FBX SDK is about to write an FBX file. Users can re-implement it in their plug-in if they need + * to perform tasks at that moment. The scene provided in parameter can be altered. If not re-implemented, this function does nothing. + * \param pScene The scene that is about to be written in the FBX file. + */ + virtual void WriteBegin(FbxScene& pScene); + + /** Virtual function called once when the FBX SDK is about to write plug-in's parameters. Users can re-implement it in their plug-in if they need + * to store properties in the FBX file for their own usage. The object in parameter is used to store those properties. + * If not re-implemented, this function does nothing. + * \param pParams An abstract object that can be used as a property container, to allow the plug-in to store properties about the plug-in. + */ + virtual void WriteParameters(FbxObject& pParams); + + /** Virtual function called once after the FBX SDK wrote an FBX file. Users can re-implement it in their plug-in if they need + * to perform tasks at that moment. The scene provided in parameter can be altered, but the changes will not appear in the FBX file. + * If not re-implemented, this function does nothing. + * \param pScene The scene that was written in the FBX file. + */ + virtual void WriteEnd(FbxScene& pScene); + + /** Virtual function called once when the FBX SDK is about to read an FBX file. Users can re-implement it in their plug-in if they need + * to perform tasks at that moment. The scene provided in parameter can be altered. If not re-implemented, this function does nothing. + * \param pScene The scene that is about to be read in the FBX file. + */ + virtual void ReadBegin(FbxScene& pScene); + + /** Virtual function called once after the FBX SDK reads the plug-in's parameters. Users can re-implement it in their plug-in if they need + * to retrieve properties for their own usage. The object in parameter is used to retrieve those properties. + * If not re-implemented, this function does nothing. + * \param pParams An abstract object that can be used as a property container, to allow the plug-in to read properties about the plug-in. + */ + virtual void ReadParameters(FbxObject& pParams); + + /** Virtual function called once after the FBX SDK read an FBX file. Users can re-implement it in their plug-in if they need + * to perform tasks at that moment. The scene provided in parameter can be altered. If not re-implemented, this function does nothing. + * \param pScene The scene that was read in the FBX file. + */ + virtual void ReadEnd(FbxScene& pScene); + + /** Accessor to the plug-in definition structure that contains basic information on the plug-in like its name or version. This is + * the only method available to differentiate plug-ins. + * \return The definition structure for this plug-in. + */ + const FbxPluginDef& GetDefinition() const; + + /** Retrieve the module address pointer for this plug-in. With this module instance handle, for example someone can query procedures addresses, + * allowing more complex interactions, as well as other operating system module specific functions. + */ + FbxModule GetModuleHdl(); + +protected: + /** Use the Create() and Destroy() methods declared and implemented in the FBXSDK_PLUGIN_DECLARE and FBXSDK_PLUGIN_IMPLEMENT macros to construct and destroy FbxPlugin objects. + * \param pDefinition The definition associated with this plug-in. Each plug-in must have its own definition to differentiate it with other plug-ins. + * \param pModuleHandle A pointer to the plug-in module address. + */ + explicit FbxPlugin(const FbxPluginDef& pDefinition, FbxModule pModuleHandle); + + /** Accessor to the plug-in private data. + * \return The data for the current plug-in. + */ + FbxPluginData& GetData(); + + /** Const accessor to the plug-in private data. + * \return The const data for the current plug-in. + */ + const FbxPluginData& GetData() const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +public: + inline FbxObject& GetPluginSettings() { return *mPluginSettings; } + inline const FbxObject& GetPluginSettings() const { return *mPluginSettings; } + template inline FbxEventHandler* Bind(void (ListernerType::*pFunc)(const EventType*)) + { + return FbxListener::Bind(*(GetData().mQueryEmitter), pFunc ); + } + virtual void Destroy() = 0; + +protected: + virtual ~FbxPlugin(); + +private: + bool Initialize(const FbxPluginData& pData); + bool Terminate(); + + bool mInitialized; + FbxPluginData mData; + FbxPluginDef mDefinition; + FbxModule mModuleHandle; + FbxObject* mPluginSettings; + + friend class FbxLoadingStrategy; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* !FBXSDK_ENV_WINSTORE */ + +#endif /* _FBXSDK_CORE_PLUGIN_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxplugincontainer.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxplugincontainer.h new file mode 100644 index 00000000..4e5d3894 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxplugincontainer.h @@ -0,0 +1,74 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxplugincontainer.h +#ifndef _FBXSDK_CORE_PLUGIN_CONTAINER_H_ +#define _FBXSDK_CORE_PLUGIN_CONTAINER_H_ + +#include + +#ifndef FBXSDK_ENV_WINSTORE + +#include +#include + +#include + +/** Manages registration and ownership of FBX SDK plug-ins (FbxPlugin). + * The FBX SDK will provide a pointer to FbxPluginContainer as an argument + * to the FBXPluginRegistration() function exported from a plug-in's DLL. + * A plug-in must register itself explicitly with the FbxPluginContainer + * by calling FbxPluginContainer::Register() after it is constructed. + * For an example of this process see the code example in the FbxPlugin + * class documentation. + * \see FbxPlugin + */ +class FBXSDK_DLL FbxPluginContainer : public FbxEmitter +{ +public: + //! Definition of a plug-in list. + typedef FbxIntrusiveList PluginList; + + /** The registration function that must be called when the module containing the plug-in is loaded. + * \param pPlugin The plug-in to register. + */ + void Register(FbxPlugin& pPlugin); + + /** The unregistration function that must be called when the module containing the plug-in is unloaded. + * \param pPlugin The plug-in to unregister. + */ + void Unregister(FbxPlugin& pPlugin); + + /** Const accessor to the list of plug-ins owned by the container. + * \return A list of plug-in registered to this container. + */ + const PluginList& GetPlugins() const; + + /** Accessor to the list of plug-ins owned by the container. + * \return A list of plug-in registered to this container. + */ + PluginList& GetPlugins(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual ~FbxPluginContainer(); + PluginList mPlugins; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* !FBXSDK_ENV_WINSTORE */ + +#endif /* _FBXSDK_CORE_PLUGIN_CONTAINER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxproperty.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxproperty.h new file mode 100644 index 00000000..e76bc719 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxproperty.h @@ -0,0 +1,1292 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxproperty.h +#ifndef _FBXSDK_CORE_PROPERTY_H_ +#define _FBXSDK_CORE_PROPERTY_H_ + +#include + +#include +#include +#include +#include +#include +#include + +#include + +class FbxObject; +class FbxAnimStack; +class FbxAnimLayer; +class FbxAnimCurveNode; +class FbxAnimCurve; +class FbxAnimEvaluator; + +/** \brief Class to hold user properties. +* \nosubgrouping +*/ +class FBXSDK_DLL FbxProperty +{ +public: + /** + * \name Constructor and Destructor. + */ + //@{ + /** Creates a runtime property on the specified property. + * \param pCompoundProperty The parent property of this property. + * \param pDataType The data type of this property. + * \param pName The property name. + * \param pLabel The label of this property. + * \param pCheckForDup If \c true, parent property checks if it has a child property already with pName, if \c false, the new property is created. + * \param pWasFound If pCheckForDup is \c true, this flag is set to indicate whether the pCompoundProperty already has a child property with pName. + */ + static FbxProperty Create(const FbxProperty& pCompoundProperty, const FbxDataType& pDataType, const char* pName, const char* pLabel="", bool pCheckForDup=true, bool* pWasFound=NULL); + + /** Creates a runtime property on the specified object. + * \param pObject The object on which the property will be created. + * \param pDataType The data type of this property. + * \param pName The property name. + * \param pLabel The label of this property. + * \param pCheckForDup If \c true, pObject checks whether it already has a property with pName, if \c false, a new property is created. + * \param pWasFound If pCheckForDup is \c true, this flag is set to indicate whether the pObject already has a child property with pName. + */ + static FbxProperty Create(FbxObject* pObject, const FbxDataType& pDataType, const char* pName, const char* pLabel="", bool pCheckForDup=true, bool* pWasFound=NULL); + + /** Creates a dynamic property from another property on the specified property. + * \param pCompoundProperty The parent property of this property. + * \param pFromProperty The property copied by this property. + * \param pCheckForDup If \c true, parent property checks if it already has a child property that has the name of pFromProperty, if \c false, a new property is created. + * \remark Only the property name, label, min/max, enums and flags are copied. + */ + static FbxProperty CreateFrom(const FbxProperty& pCompoundProperty, FbxProperty& pFromProperty, bool pCheckForDup=true); + + /** Creates a dynamic property from another property on the specified object. + * \param pObject The object that contains this property. + * \param pFromProperty The property copied by this property. + * \param pCheckForDup If \c true, pObject checks if it already has a property that has the name of pFromProperty, if \c false, a new property is created. + * \remark Only the property name, label, min/max, enums and flags are copied. + */ + static FbxProperty CreateFrom(FbxObject* pObject, FbxProperty& pFromProperty, bool pCheckForDup=true); + + /** Destroys a dynamic property. + */ + void Destroy(); + + /** Destroys a dynamic property and its children + * \remarks Destroy all children of current property, and current property will also be destroyed. + */ + void DestroyRecursively(); + + /** Destroys children of a dynamic property. + * \remarks Destroy all children of current property, and current property will not be destroyed. + */ + void DestroyChildren(); + + /** Static property constructor. + */ + FbxProperty(); + + /** Copy constructor for properties. + * \param pProperty The property copied to this one. + */ + FbxProperty(const FbxProperty& pProperty); + + /** Copy constructor for properties. + * \param pPropertyHandle The property handle copied to this property handle. + */ + FbxProperty(const FbxPropertyHandle& pPropertyHandle); + + /** Static property destructor. + */ + ~FbxProperty(); + //@} + + /** + * \name Property Identification. + */ + //@{ + /** Returns the property data type. + * \return The property data type. + */ + FbxDataType GetPropertyDataType() const; + + /** Returns the internal name of the property. + * \return Property internal name string. + */ + FbxString GetName() const; + + /** Returns the internal name of the property. + * \return Property internal name string. + */ + const char* GetNameAsCStr() const; + + /** Returns the hierarchical name of the property. + * \return Property hierarchical name string. + */ + FbxString GetHierarchicalName() const; + + /** Returns the property label. + * \param pReturnNameIfEmpty If \c true, lets this method return the internal name if the label is empty. + * \return The property label if set, or the property internal name if the pReturnNameIfEmpty + * flag is set to \c true and the label has not been defined. + * \remarks Some applications may ignore the label field and work uniquely with the + * internal name. Therefore, it should not be taken for granted that a label exists. Also, remember + * that the label does not get saved in the FBX file. It only exists while the property object is + * in memory. + */ + FbxString GetLabel(bool pReturnNameIfEmpty=true) const; + + + /** Sets a label for the property. + * \param pLabel Label string. + */ + void SetLabel(const FbxString& pLabel); + + /** Returns the object that contains the property. + * \return The property object owner (or null if the property is an orphan). + */ + FbxObject* GetFbxObject() const; + //@} + + /** + * \name User data + */ + //@{ + /** Sets the user tag. + * \param pTag The user tag to be set. + */ + void SetUserTag(int pTag); + + //! Gets the user tag. + int GetUserTag(); + + /** Sets the user data pointer. + * \param pUserData The user data pointer. + */ + void SetUserDataPtr(void* pUserData); + + /** Gets the user data pointer. + * \return The user data pointer. + */ + void* GetUserDataPtr(); + //@} + + /** + * \name Property Flags. + */ + //@{ + /** Changes the property attribute. + * \param pFlag Property attribute identifier. + * \param pValue New state of pFlag. + */ + void ModifyFlag(FbxPropertyFlags::EFlags pFlag, bool pValue); + + /** Returns the state of the property attribute. + * \param pFlag Property attribute identifier. + * \return The state of the property attribute(pFlag). + */ + bool GetFlag(FbxPropertyFlags::EFlags pFlag) const; + + /** Returns the state of all of the property attributes. + * \return The state of the property attributes(pFlags). + */ + FbxPropertyFlags::EFlags GetFlags() const; + + /** Returns the inheritance type of the given flag, similar to GetValueInheritType(). + * \param pFlag The flag to be queried. + * \return The inheritance type of the specific flag. + */ + FbxPropertyFlags::EInheritType GetFlagInheritType( FbxPropertyFlags::EFlags pFlag ) const; + + /** Sets the inheritance type for the specific flag, similar to SetValueInheritType(). + * \param pFlag The flag to be set. + * \param pType The inheritance type to be set. + * \return \c True on success, \c false otherwise. + */ + bool SetFlagInheritType( FbxPropertyFlags::EFlags pFlag, FbxPropertyFlags::EInheritType pType ); + + /** Checks if the property flag has been modified from its default value. + * \param pFlag The flag to be queried. + * \return \c True if the value of this property has changed, \c false otherwise + */ + bool ModifiedFlag( FbxPropertyFlags::EFlags pFlag ) const; + //@} + + /** + * \name Assignment and comparison operators + */ + //@{ + /** Assignment operator. + * \param pProperty The property assigned to this property. + * \return This property. + */ + FbxProperty& operator= (const FbxProperty& pProperty); + + /** Equivalence operator. + * \param pProperty The property compared to this property. + * \return \c True if equal, \c false otherwise. + */ + bool operator== (const FbxProperty& pProperty) const; + + /** Non-equivalence operator. + * \param pProperty The property compared to this property. + * \return \c True if unequal, \c false otherwise. + */ + bool operator!= (const FbxProperty& pProperty) const; + + /** Lesser operator, used to sort property in map. + * \param pProperty The property compared to this property. + * \return \c true if less, \c false otherwise. */ + bool operator< (const FbxProperty& pProperty) const; + + /** Greater operator, used to sort property in map. + * \param pProperty The property compared to this property. + * \return \c true if greater, \c false otherwise. */ + bool operator> (const FbxProperty& pProperty) const; + + /** Equivalence operator. + * \param pValue The value compared to this property. + * \return \c True if this property is valid and pValue doesn't equal zero, or this property is invalid and pValue equals zero, \c false otherwise. + */ + inline bool operator== (int pValue) const { return (pValue == 0) ? !IsValid() : IsValid(); } + + /** Non-equivalence operator. + * \param pValue The value compared to this property. + * \return \c True if this property is valid and pValue equals zero, or this property is invalid and pValue doesn't equal zero, \c false otherwise. + */ + inline bool operator!= (int pValue) const { return (pValue != 0) ? !IsValid() : IsValid(); } + + /** Compares this property's value to another property's value. + * \param pProperty The property whose value is compared with this property's value. + * \return \c True if equal, \c false otherwise. + */ + bool CompareValue(const FbxProperty& pProperty) const; + //@} + + /** Copies the value of a property. + * \param pProperty The property from which to derive the value. + * \return \c True if value has been copied successfully, \c false otherwise. + */ + bool CopyValue(const FbxProperty& pProperty); + + /** + * \name Value management. + */ + //@{ + /** Gets the value of the property. + * \tparam T The data type of the value. + * \return The property value. + */ + template inline T Get() const { T lValue; Get(&lValue, FbxTypeOf(lValue)); return lValue; } + + /** Sets the value of the property. + * \param pValue The new value + * \return \c True if type is compatible and the value is set successfully, \c false otherwise. + */ + template inline bool Set(const T& pValue){ return Set(&pValue, FbxTypeOf(pValue)); } + + /** Judges the property's validity. + * \return \c True if this property is valid, \c false otherwise. + */ + bool IsValid() const; + + /** Checks if the specified property's value has changed from its default value. + * \param pProperty Property that is tested. + * \return \c True if the property value is still the default, \c false otherwise. + * \remarks If the inheritance type of pProperty's value is eOverride, pProperty's value should + * have been modified, so pProperty doesn't have the default value. + * If the inheritance type of pProperty's value is eInherit, that means pProperty's value inherits + * the referenced object's property value, so pProperty has the default value. + */ + static bool HasDefaultValue(FbxProperty& pProperty); + + /** Queries the inheritance type of the property. + * Use this method to determine if this property's value is overridden from the default + * value, or from the referenced object, if this object is a clone. + * \return The inheritance type of the property. + */ + FbxPropertyFlags::EInheritType GetValueInheritType() const; + + /** Sets the inheritance type of the property. + * Use the method to explicitly override the default value of the property, + * or the referenced object's property value, if this object is a clone. + * + * You can also use this to explicitly inherit the default value of the property, + * or the referenced object's property value, if this object is a clone. + * + * \param pType The new inheritance type. + * \return \c True on success, \c false otherwise. + */ + bool SetValueInheritType( FbxPropertyFlags::EInheritType pType ); + + /** Checks if the property's value has been modified from its default value. + * \return \c True if the value of the property has changed, \c false otherwise. + * \remarks If the inheritance type of the property's value is eOverride, the property's value should + * have been modified, it returns \c true. + * If the inheritance type of the property's value is eInherit, that means the property's value inherits + * the referenced object's property value, so the property's value is not modified and it returns \c false. + */ + bool Modified() const; + //@} + + /** + * \name Property Limits. + * Property limits are provided for convenience if some applications desire to + * bound the range of possible values for a given type property. FBX will never + * apply these limits internally, however it will store and retrieve the limits values + * from files, and will assure that they are persistent in memory + * while the property exists. + * + * Notes: + * - The limit value is truncated to the property data type. + * + * - These limits are meaningless for the boolean type. It is the responsibility of the + * calling application to implement the necessary instructions to limit the property of boolean type. + * + * - The SetMinLimit/SetMaxLimit methods will do nothing if SupportSetLimitsAsDoube() returns false. + */ + //@{ + /** Returns whether setting limits as a double number on this property type is allowed. + * \return \c True if allowed, \c false otherwise. + */ + bool SupportSetLimitAsDouble() const; + + /** Sets a minimum property value limit. + * \param pMin Minimum value allowed. + * \return \c True if the limit has been set, \c false otherwise. + */ + bool SetMinLimit(double pMin); + + /** Returns whether a minimum limit exists, if it returns false, + * calling GetMinLimit() produces undefined behavior. + * \return \c True when a minimum limit exists, \c false otherwise. + */ + bool HasMinLimit() const; + + /** Returns the minimum property value limit. + * \return The minimum value limit. + */ + double GetMinLimit() const; + + /** Returns whether a maximum limit exists, if it returns false, + * calling GetMaxLimit() produces undefined behavior. + * \return \c True when a maximum limit exists, \c false otherwise. + */ + bool HasMaxLimit() const; + + /** Sets a maximum property value limit. + * \param pMax Maximum value allowed. + * \return \c True if the limit has been set, \c false otherwise. + */ + bool SetMaxLimit(double pMax); + + /** Returns the maximum property value. + * \return The maximum value limit. + */ + double GetMaxLimit() const; + + /** Sets the minimum and maximum value limit of the property. + * \param pMin Minimum value allowed. + * \param pMax Maximum value allowed. + \return \c True if both the min and max limit have been set, \c false otherwise. + */ + bool SetLimits(double pMin, double pMax); + //@} + + /** + * \name Enum and property list + */ + //@{ + /** Adds a string value at the end of the enumeration list. + * \param pStringValue The string value to be added. + * \return The index in the list where the string is added or -1 if the action failed. + * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnumM. + * \remarks If the property is of type eFbxEnum, trying to add a value that is already + * in the enumeration list will fail. + * Empty strings are not allowed. + */ + int AddEnumValue(const char* pStringValue); + + /** Inserts a string value at the specific index. + * \param pIndex Zero bound index. + * \param pStringValue The string value to be inserted. + * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnumM. + * \remarks If the property is of type eFbxEnum, trying to insert a value that is already + * in the enumeration list will fail. + * pIndex must be in the range [0, ListValueGetCount()]. + * Empty strings are not allowed. + */ + void InsertEnumValue(int pIndex, const char* pStringValue); + + /** Returns the number of elements in the enumeration list. + * \return The number of elements in the enumeration list. + * \remarks This function returns 0 if the property type is not eFbxEnum or eFbxEnumM. + */ + int GetEnumCount() const; + + /** Sets a string value at the specific index. + * \param pIndex Zero bound index. + * \param pStringValue The string value at the specific index. + * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnumM. + * \remarks If the property is of type eFbxEnum, trying to set a value that is already + * in the enumeration list will fail. + * The function assigns the string value to the specific index. + * A string value must exist at the specific index in order to be changed. + * Empty strings are not allowed. + */ + void SetEnumValue(int pIndex, const char* pStringValue); + + /** Removes the string value at the specified index. + * \param pIndex Index of the string value to be removed. + * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnuM. + */ + void RemoveEnumValue(int pIndex); + + /** Returns a string value at the specified index + * \param pIndex Zero bound index. + * \remarks This function is only valid if the property type is eFbxEnum or eFbxEnumM. + */ + const char* GetEnumValue(int pIndex) const; + //@} + + /** + * \name Hierarchical properties + */ + //@{ + /** Judges if this property is the root property. + * \return \c True when this property is a root property, \c false otherwise. + */ + inline bool IsRoot() const { return mPropertyHandle.IsRoot(); } + + /** Judges whether this property is a child of the specified property. + * \param pParent The specified property. + * \return \c True when this property is a child of the specified property, \c false otherwise. + */ + inline bool IsChildOf(const FbxProperty& pParent) const { return mPropertyHandle.IsChildOf(pParent.mPropertyHandle); } + + /** Judges whether this property is a descendant of the specified property. + * \param pAncestor The specified property. + * \return \c True when this property is a descendant of the specified property, \c false otherwise. + */ + inline bool IsDescendentOf(const FbxProperty& pAncestor) const { return mPropertyHandle.IsDescendentOf(pAncestor.mPropertyHandle); } + + /** Returns the parent property of this property. + * \return The parent of this property. + */ + inline FbxProperty GetParent() const { return FbxProperty(mPropertyHandle.GetParent()); } + + /** Returns the first child of this property. + * \return The first child of this property, if there is none, an invalid property is returned. + */ + inline FbxProperty GetChild() const { return FbxProperty(mPropertyHandle.GetChild()); } + + /** Returns the sibling of this property. + * \return The sibling of this property, if there is none, an invalid property is returned. + */ + inline FbxProperty GetSibling() const { return FbxProperty(mPropertyHandle.GetSibling()); } + + /** Returns the first property that is a descendant of this property. + * \return The first descendant of this property, if there is none, an invalid property is returned. + */ + inline FbxProperty GetFirstDescendent() const { return FbxProperty(mPropertyHandle.GetFirstDescendent()); } + + /** Returns the property that follows pProperty that is a descendant of this property. + * \param pProperty The last found descendant. + * \return The property that follows pProperty, if there is none, an invalid property is returned. + */ + inline FbxProperty GetNextDescendent(const FbxProperty& pProperty) const { return FbxProperty(mPropertyHandle.GetNextDescendent(pProperty.mPropertyHandle)); } + + /** Searches a property using its name. + * \param pName The name of the property as a \c NULL terminated string. + * \param pCaseSensitive Whether the name is case-sensitive. + * \return A valid FbxProperty if the property is found, else + * an invalid FbxProperty. See FbxProperty::IsValid() + */ + inline FbxProperty Find (const char* pName, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,pCaseSensitive)); } + + /** Searches a property using its name and data type. + * \param pName The name of the property as a \c NULL terminated string. + * \param pDataType The data type of the property. + * \param pCaseSensitive Whether the name is case-sensitive. + * \return A valid FbxProperty if the property is found, else + * an invalid FbxProperty. See FbxProperty::IsValid() + */ + inline FbxProperty Find (const char* pName, const FbxDataType& pDataType, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,pDataType.GetTypeInfoHandle(),pCaseSensitive)); } + + /** Searches a property using its full name. + * \param pName The full name of the property as a \c NULL terminated string. + * \param pCaseSensitive whether the name is case-sensitive. + * \return A valid FbxProperty if the property is found, else + * an invalid FbxProperty. See FbxProperty::IsValid() + */ + inline FbxProperty FindHierarchical (const char* pName, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,sHierarchicalSeparator,pCaseSensitive)); } + + /** Searches a property using its full name and data type. + * \param pName The full name of the property as a \c NULL terminated string. + * \param pDataType The data type of the property. + * \param pCaseSensitive whether the name is case-sensitive. + * \return A valid FbxProperty if the property is found, else + * an invalid FbxProperty. See FbxProperty::IsValid() + */ + inline FbxProperty FindHierarchical (const char* pName, const FbxDataType& pDataType, bool pCaseSensitive = true) const { return FbxProperty(mPropertyHandle.Find(pName,sHierarchicalSeparator,pDataType.GetTypeInfoHandle(),pCaseSensitive)); } + //@} + + /** + * \name Optimizations + */ + //@{ + //! Internal function for building a property name map. + inline void BeginCreateOrFindProperty(){ mPropertyHandle.BeginCreateOrFindProperty(); } + + //! Internal function for clearing the property name map. + inline void EndCreateOrFindProperty(){ mPropertyHandle.EndCreateOrFindProperty(); } + + //!This is an internal class that you can use to build and clear the name map of properties. You can use the name map to speed up searching for property names. + class FbxPropertyNameCache + { + public: + /** Constructor, the name map is created in the constructor. + * \param prop Property for building and clearing the name map. + */ + FbxPropertyNameCache(const FbxProperty& prop) : mProp(const_cast(prop)){ mProp.BeginCreateOrFindProperty(); } + + //! Destructor, the name map is destroyed in destructor. + ~FbxPropertyNameCache(){ mProp.EndCreateOrFindProperty(); } + + private: + FbxProperty& mProp; + FbxPropertyNameCache& operator=(const FbxPropertyNameCache& pOther){ mProp = pOther.mProp; mProp.BeginCreateOrFindProperty(); return *this; } + }; + //@} + + /** + * \name Animation Curve Management + */ + //@{ + /** Retrieve the proper animation evaluator to use for this property. + * \return If the object has no scene, returns the default evaluator, otherwise the object's scene evaluator. */ + FbxAnimEvaluator* GetAnimationEvaluator() const; + + /** Find out if the property is animated: has a curve node with curves. + * \param pAnimLayer The animation layer to test for curve presence. Set to NULL if you want to use the default animation layer of the default animation stack. + * \return \c true if the property is animated. */ + bool IsAnimated(FbxAnimLayer* pAnimLayer=NULL) const; + + /** Evaluate the value of a property if it has animation and return the result as the template type. + * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. + * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. + * \return The property value at the specified time converted to the template type provided, if possible. + * \remark If the property type versus the template cannot be converted, the result is unknown. */ + template T EvaluateValue(const FbxTime& pTime=FBXSDK_TIME_INFINITE, bool pForceEval=false); + + /** Evaluate the value of a property if it has animation and return the result. + * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. + * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. + * \return The property value at the specified time. */ + FbxPropertyValue& EvaluateValue(const FbxTime& pTime=FBXSDK_TIME_INFINITE, bool pForceEval=false); + + /** Creates a FbxAnimCurveNode on the specified layer. + * \param pAnimLayer The animation layer the FbxAnimCurveNode object is attached to. + * \return Pointer to the created FbxAnimCurveNode. + * \remarks This function check the property FbxPropertyFlags::eAnimatable flag and fails to execute if it is not set. + * \remarks If created, the FbxAnimCurveNode is automatically connected to the property and the animation layer. + * \remarks The created FbxAnimCurveNode does not automatically allocate anim curves. + * \remarks On the successful execution of this function, the property eAnimated flag is set to \c true. */ + FbxAnimCurveNode* CreateCurveNode(FbxAnimLayer* pAnimLayer); + + /** Get the property's animation curve node on the default animation stack and base layer. + * \param pCreate If \c true, create the animation curve node and return it if none were found. + * \return The animation curve node of this property, if found or created, otherwise NULL. + * \remark If the property flag FbxPropertyFlags::eAnimatable is not set, creating the curve node will fail. */ + FbxAnimCurveNode* GetCurveNode(bool pCreate=false); + + /** Get the property's animation curve node on the specified animation stack, using its base layer. + * \param pAnimStack The animation stack to use to get or create the property's animation curve node. + * \c NULL can be passed to automatically specify the default animation stack. + * \param pCreate If \c true, create the animation curve node and return it if none were found. + * \return The animation curve node of this property, if found or created, otherwise NULL. + * \remark If the property flag FbxPropertyFlags::eAnimatable is not set, creating the curve node will fail. */ + FbxAnimCurveNode* GetCurveNode(FbxAnimStack* pAnimStack, bool pCreate=false); + + /** Get the property's animation curve node on the specified animation layer. + * \param pAnimLayer The animation layer to use to get or create the property's animation curve node. Cannot be NULL. + * \param pCreate If \c true, create the animation curve node and return it if none were found. + * \return The animation curve node of this property, if found or created, otherwise NULL. + * \remark If the property flag FbxPropertyFlags::eAnimatable is not set, creating the curve node will fail. */ + FbxAnimCurveNode* GetCurveNode(FbxAnimLayer* pAnimLayer, bool pCreate=false); + + /** Get the FbxAnimCurve from the specified animation layer. + * This function expects to find a FbxAnimCurveNode object with the same name as the property and it + * attempts to retrieve the FbxAnimCurve from it. + * \param pAnimLayer The searched animation layer. + * \param pCreate Create a FbxAnimCurve if not found. + * \return Pointer to the FbxAnimCurve. Returns NULL in case of errors or pCreate is \c false and the curve is not found. + * \remark If the FbxAnimCurveNode does not exists but the property has the FbxPropertyFlags::eAnimatable flag set and + * pCreate is true, then this function will first create the FbxAnimCurveNode object and then the FbxAnimCurve. + * \remark If more than one FbxAnimCurveNode matching the name criteria are connected, the first one is returned. */ + inline FbxAnimCurve* GetCurve(FbxAnimLayer* pAnimLayer, bool pCreate=false) + { + return GetCurve(pAnimLayer, GetName(), NULL, pCreate); + } + + /** Get the FbxAnimCurve from the specified animation layer. + * This function expects to find a FbxAnimCurveNode object with the same name as the property and it + * attempts to retrieve the FbxAnimCurve from it. + * \param pAnimLayer The searched animation layer. + * \param pChannel Name of the channel we are looking for the animation curve. If NULL use the first defined channel. + * \param pCreate Create a FbxAnimCurve if not found. + * \return Pointer to the FbxAnimCurve. Returns NULL in case of errors or pCreate is \c false and the curve is not found. + * \remark If the FbxAnimCurveNode does not exists but the property has the FbxPropertyFlags::eAnimatable flag set and + * pCreate is true, then this function will first create the FbxAnimCurveNode object and then the FbxAnimCurve. + * \remark If more than one FbxAnimCurveNode matching the name criteria are connected, the first one is returned. */ + inline FbxAnimCurve* GetCurve(FbxAnimLayer* pAnimLayer, const char* pChannel, bool pCreate=false) + { + return GetCurve(pAnimLayer, GetName(), pChannel, pCreate); + } + + /** Get the FbxAnimCurve of the specified channel from the specified animation layer. + * This function looks for the FbxAnimCurveNode named pName and the channel pChannel. It + * will retrieves the FbxAnimCurve from it. + * \param pAnimLayer The searched animation layer. + * \param pName Name of the curve node. It is an error to leave this field empty. + * \param pChannel Name of the channel we are looking for the animation curve. If NULL + * use the first defined channel. + * \param pCreate Create a FbxAnimCurve if not found. + * \return Pointer to the FbxAnimCurve. Returns NULL in case of errors or pCreate is \c false and the curve is not found. + * \remark If the FbxAnimCurveNode does not exists but the property has the FbxPropertyFlags::eAnimatable flag set and + * pCreate is true, then this function will first create the FbxAnimCurveNode object and then the FbxAnimCurve. + * \remark If more than one FbxAnimCurveNode matching the name criteria are connected, the first one is returned. + * \remark If pChannel is NULL, this function is the equivalent of GetCurve(FbxAnimLayer*, bool). */ + FbxAnimCurve* GetCurve(FbxAnimLayer* pAnimLayer, const char* pName, const char* pChannel, bool pCreate); + //@} + + /** + * \name General Object Connection and Relationship Management + */ + //@{ + /** Connects this property to one source object. + * \param pObject The source object to which this property connects. + * \param pType The connection type between the property and the object. + * \return \c True on success, \c false otherwise. + */ + bool ConnectSrcObject(FbxObject* pObject, FbxConnection::EType pType=FbxConnection::eNone); + + /** Judges whether this property connects with the source object. + * \param pObject The source object. + * \return \c True if this property connects with the source object, \c false otherwise. + */ + bool IsConnectedSrcObject(const FbxObject* pObject) const; + + /** Disconnects this property from one source object. + * \param pObject The source object from which this property will be disconnected. + * \return \c True on success, \c false otherwise. + */ + bool DisconnectSrcObject(FbxObject* pObject); + + /** Disconnects this property from all the source objects. + * \return \c True if it disconnects all the source objects successfully, \c false otherwise. + */ + bool DisconnectAllSrcObject(); + + /** Disconnects this property from all source objects that satisfy a given criteria. + * \param pCriteria The given criteria. + * \return \c True if it disconnects all the source objects successfully, \c false otherwise. + */ + bool DisconnectAllSrcObject(const FbxCriteria& pCriteria); + + /** Disconnects this property from all the source objects of a specific class type. (Deprecated, please use DisconnectAllSrcObject() instead.) + * \param pClassId The specific class type. + * \return \c True if it disconnects all the source objects successfully, \c false otherwise. + */ + FBX_DEPRECATED bool DisconnectAllSrcObject(const FbxClassId& pClassId); + + /** Returns the number of source objects with which this property connects. + * \return The number of source objects with which this property connects. + */ + int GetSrcObjectCount() const; + + /** Returns the number of source objects that satisfy the given criteria with which this property connects. + * \param pCriteria The given criteria. + * \return The number of source objects that satisfy the given criteria with which this property connects. + */ + int GetSrcObjectCount(const FbxCriteria& pCriteria) const; + + /** Returns the number of source objects of the specific class type with which this property connects. (Deprecated, please use GetSrcObjectCount() instead.) + * \param pClassId The specific class type. + * \return The number of source objects of the specific class type with which this property connects. + */ + FBX_DEPRECATED int GetSrcObjectCount(const FbxClassId& pClassId) const; + + /** Returns the source object at the specified index with which this property connects. + * \param pIndex The specified index whose default value is 0. + * \return The source object at the specified index, NULL if not found. + */ + FbxObject* GetSrcObject(const int pIndex=0) const; + + /** Returns the source object that satisfies the criteria at the specified index with which this property connects. + * \param pCriteria The given criteria. + * \param pIndex The specified index whose default value is 0. + * \return The source object that satisfies the given criteria at the specified index, NULL if not found. + */ + FbxObject* GetSrcObject(const FbxCriteria& pCriteria, const int pIndex=0) const; + + /** Returns the source object of the specified class type at the specified index with which this property connects. (Deprecated, please use GetSrcObject() instead.) + * \param pClassId The specified class type. + * \param pIndex The specified index whose default value is 0. + * \return The source object of the specified class type at the specified index, NULL if not found. + */ + FBX_DEPRECATED FbxObject* GetSrcObject(const FbxClassId& pClassId, const int pIndex=0) const; + + /** Searches the source object with the specified name, starting with the specified index. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The source object with the name, NULL if not found. + */ + FbxObject* FindSrcObject(const char* pName, const int pStartIndex=0) const; + + /** Searches the source object with the specified name which satisfies the given criteria, starting with the specified index. + * \param pCriteria The given criteria. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The source object with the name, NULL if not found. + */ + FbxObject* FindSrcObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const; + + /** Searches the source object with the specified name which is of the specified class type, starting with the specified index. (Deprecated, please use FindSrcObject() instead.) + * \param pClassId The specified class type. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The source object with the name, NULL if not found. + */ + FBX_DEPRECATED FbxObject* FindSrcObject(const FbxClassId& pClassId, const char* pName, const int pStartIndex=0) const; + + /** Disconnects this property from all source objects of the specified class type. + * \tparam T The specified class type. + * \return \c True if it disconnects all source objects successfully, \c false otherwise. + */ + template inline bool DisconnectAllSrcObject(){ return DisconnectAllSrcObject(FbxCriteria::ObjectType(T::ClassId)); } + + /** Disconnects this property from all source objects which are of the specified class type and satisfy the given criteria. + * \tparam T The specified class type. + * \param pCriteria The given criteria. + * \return \c True if it disconnects all source objects successfully, \c false otherwise. + */ + template inline bool DisconnectAllSrcObject(const FbxCriteria& pCriteria){ return DisconnectAllSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } + + /** Returns the number of source objects of a specific class type with which this property connects. + * \tparam T The specified class type. + * \return The number of source objects of the specified class type with which this property connects. + */ + template inline int GetSrcObjectCount() const { return GetSrcObjectCount(FbxCriteria::ObjectType(T::ClassId)); } + + /** Returns the number of source objects which are of the specified class type and satisfy the given criteria with which this property connects. + * \tparam T The specified class type. + * \param pCriteria The given criteria. + * \return The number of source objects which are of the specified class type and satisfy the given criteria. + */ + template inline int GetSrcObjectCount(const FbxCriteria& pCriteria) const { return GetSrcObjectCount(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } + + /** Returns the source object of the specified class type at the specified index. + * \tparam T The specified class type. + * \param pIndex The specified index whose default value is 0. + * \return The source object of a specified class type at the specified index, NULL if not found. + */ + template inline T* GetSrcObject(const int pIndex=0) const { return (T*)GetSrcObject(FbxCriteria::ObjectType(T::ClassId), pIndex); } + + /** Returns the source object which is of the specified class type and satisfies the given criteria at the specified index. + * \tparam T The specified class type. + * \param pCriteria The given criteria. + * \param pIndex The specified index whose default value is 0. + * \return The source object which is of the specified class type and satisfies the given criteria at the specified index, NULL if not found. + */ + template inline T* GetSrcObject(const FbxCriteria& pCriteria, const int pIndex=0) const { return (T*)GetSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pIndex); } + + /** Searches the source object with the specified name which is of the specified class type, starting with the specified index. + * \tparam T The specified class type. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The source object with the name, NULL if not found. + */ + template inline T* FindSrcObject(const char* pName, const int pStartIndex=0) const { return (T*)FindSrcObject(FbxCriteria::ObjectType(T::ClassId), pName, pStartIndex); } + + /** Searches the source object with the specified name which is of the specified class type and satisfies the given criteria, starting with the specified index. + * \tparam T The specified class type. + * \param pCriteria The given criteria. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The source object with the name, NULL if not found. + */ + template inline T* FindSrcObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const { return (T*)FindSrcObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pName, pStartIndex); } + + /** Connects this property to one destination object. + * \param pObject The destination object with which this property connects. + * \param pType The connection type between this property and the object. + * \return \c True on success, \c false otherwise. + */ + bool ConnectDstObject(FbxObject* pObject, FbxConnection::EType pType=FbxConnection::eNone); + + /** Judges whether this property connects with the destination object. + * \param pObject The destination object. + * \return \c True if this property connects with the destination object, \c false otherwise. + */ + bool IsConnectedDstObject(const FbxObject* pObject) const; + + /** Disconnects this property from the destination object. + * \param pObject The destination object from which this property disconnects from. + * \return \c True on success, \c false otherwise. + */ + bool DisconnectDstObject(FbxObject* pObject); + + /** Disconnects this property from all the destination objects. + * \return \c True if it disconnects all the destination objects successfully, \c false otherwise. + */ + bool DisconnectAllDstObject(); + + /** Disconnects this property from all the destination objects that satisfy given criteria. + * \param pCriteria The given criteria. + * \return \c True if it disconnects all the destination objects successfully, \c false otherwise. + */ + bool DisconnectAllDstObject(const FbxCriteria& pCriteria); + + /** Disconnects this property from all the destination objects of the specified class type. (Deprecated, please use DisconnectAllDstObject() instead.) + * \param pClassId The specified class type. + * \return \c True if it disconnects all the destination objects successfully, \c false otherwise. + */ + FBX_DEPRECATED bool DisconnectAllDstObject(const FbxClassId& pClassId); + + /** Returns the number of destination objects with which this property connects. + * \return The number of destination objects with which this property connects. + */ + int GetDstObjectCount() const; + + /** Returns the number of destination objects that satisfy the given criteria with which this property connects. + * \param pCriteria The given criteria. + * \return The number of destination objects that satisfy given criteria with which this property connects. + */ + int GetDstObjectCount(const FbxCriteria& pCriteria) const; + + /** Returns the number of destination objects of the specified class type with which this property connects. (Deprecated, please use GetDstObjectCount() instead.) + * \param pClassId The specified class type. + * \return The number of destination objects of the specified class type with which this property connects. + */ + FBX_DEPRECATED int GetDstObjectCount(const FbxClassId& pClassId) const; + + /** Returns the destination object at the specified index with which this property connects. + * \param pIndex The specified index whose default value is 0. + * \return The destination object at the specified index, NULL if not found. + */ + FbxObject* GetDstObject(const int pIndex=0) const; + + /** Returns the destination object that satisfies given criteria at the specified index with which this property connects. + * \param pCriteria The given criteria. + * \param pIndex The specified index whose default value is 0. + * \return The destination object that satisfies given criteria at the specified index, NULL if not found. + */ + FbxObject* GetDstObject(const FbxCriteria& pCriteria, const int pIndex=0) const; + + /** Returns the destination object of the specified class type at the specified index with which this property connects. (Deprecated, please use GetDstObject() instead.) + * \param pClassId The specified class type. + * \param pIndex The specified index whose default value is 0. + * \return The destination object of the specified class type at the specified index, NULL if not found. + */ + FBX_DEPRECATED FbxObject* GetDstObject(const FbxClassId& pClassId, const int pIndex=0) const; + + /** Searches the destination object with the specified name, starting with the specified index. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The destination object with the name, NULL if not found. + */ + FbxObject* FindDstObject(const char* pName, const int pStartIndex=0) const; + + /** Searches the destination object with the specified name which satisfies the given criteria, starting with the specified index. + * \param pCriteria The given criteria. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The destination object with the name, NULL if not found. + */ + FbxObject* FindDstObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const; + + /** Searches the destination object with the specified name which is of the specified class type, starting with the specified index. (Deprecated, please use FindDstObject() instead.) + * \param pClassId The specified class type. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The destination object with the name, NULL if not found. + */ + FBX_DEPRECATED FbxObject* FindDstObject(const FbxClassId& pClassId, const char* pName, const int pStartIndex=0) const; + + /** Disconnects this property from all the destination objects of the specified class type. + * \tparam T The specified class type. + * \return \c True if it disconnects all the destination objects successfully, \c false otherwise. + */ + template inline bool DisconnectAllDstObject(){ return DisconnectAllDstObject(FbxCriteria::ObjectType(T::ClassId)); } + + /** Disconnects this property from all the destination objects which are of the specified class type and satisfy the given criteria. + * \tparam T The specified class type. + * \param pCriteria The given criteria. + * \return \c True if it disconnects all the destination objects successfully, \c false otherwise. + */ + template inline bool DisconnectAllDstObject(const FbxCriteria& pCriteria){ return DisconnectAllDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } + + /** Returns the number of destination objects of the specified class type with which this property connects. + * \tparam T The specified class type. + * \return The number of destination objects of the specified class type with which this property connects. + */ + template inline int GetDstObjectCount() const { return GetDstObjectCount(FbxCriteria::ObjectType(T::ClassId)); } + + /** Returns the number of destination objects which are of the specified class type and satisfy the given criteria with which this property connects. + * \tparam T The specified class type. + * \param pCriteria The given criteria. + * \return The number of destination objects which are of the specified class type and satisfy the given criteria with which this property connects. + */ + template inline int GetDstObjectCount(const FbxCriteria& pCriteria) const { return GetDstObjectCount(FbxCriteria::ObjectType(T::ClassId) && pCriteria); } + + /** Returns the destination object of the specified class type at the specified index with which this property connects. + * \tparam T The specified class type. + * \param pIndex The specified index whose default value is 0. + * \return The destination object of the specified class type at the specified index, NULL if not found. + */ + template inline T* GetDstObject(const int pIndex=0) const { return (T*)GetDstObject(FbxCriteria::ObjectType(T::ClassId), pIndex); } + + /** Returns the destination object which is of the specified class type and satisfies the given criteria at the specified index with which this property connects. + * \tparam T The specified class type. + * \param pCriteria The given criteria. + * \param pIndex The specified index whose default value is 0. + * \return The destination object which is of the specified class type and satisfies the given criteria at the specified index, NULL if not found. + */ + template inline T* GetDstObject(const FbxCriteria& pCriteria, const int pIndex=0) const { return (T*)GetDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pIndex); } + + /** Searches the destination object with the specified name which is of the specified class type, starting with the specified index. + * \tparam T The specified class type. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The source object with the name, NULL if not found. + */ + template inline T* FindDstObject(const char* pName, const int pStartIndex=0) const { return (T*)FindDstObject(FbxCriteria::ObjectType(T::ClassId), pName, pStartIndex); } + + /** Searches the destination object with the specified name which is of the specified class type and satisfies the given criteria, starting with the specified index. + * \tparam T The specified class type. + * \param pCriteria The given criteria. + * \param pName The object name. + * \param pStartIndex The start index. + * \return The source object with the name, NULL if not found. + */ + template inline T* FindDstObject(const FbxCriteria& pCriteria, const char* pName, const int pStartIndex=0) const { return (T*)FindDstObject(FbxCriteria::ObjectType(T::ClassId) && pCriteria, pName, pStartIndex); } + //@} + + /** + * \name General Property Connection and Relationship Management + */ + //@{ + // Properties + /** Connects this property to a source property. + * \param pProperty The source property with which this property connects. + * \return \c True on success, \c false otherwise. + */ + bool ConnectSrcProperty(const FbxProperty& pProperty); + + /** Judges whether this property connects with the specified source property. + * \param pProperty The specified source property. + * \return \c True if this property connects with the specified source property, \c false otherwise. + */ + bool IsConnectedSrcProperty(const FbxProperty& pProperty); + + /** Disconnects this property from the specified source property. + * \param pProperty The specified source property. + * \return \c True on success, \c false otherwise. + */ + bool DisconnectSrcProperty(const FbxProperty& pProperty); + + /** Returns the number of source properties with which this property connects. + * \return The number of source properties with which this property connects. + */ + int GetSrcPropertyCount() const; + + /** Connects this property to a destination property. + * \param pProperty The destination property with which this property connects. + * \return \c True on success, \c false otherwise. + */ + bool ConnectDstProperty(const FbxProperty& pProperty); + + /** Judges if this property connects with the specified destination property. + * \param pProperty The specified destination property. + * \return \c True if this property connects with the specified destination property, \c false otherwise. + */ + bool IsConnectedDstProperty(const FbxProperty& pProperty); + + /** Disconnects this property from the specified destination property. + * \param pProperty The specified destination property. + * \return \c True on success, \c false otherwise. + */ + bool DisconnectDstProperty(const FbxProperty& pProperty); + + /** Returns the number of destination properties with which this property connects. + * \return The number of destination properties with which this property connects. + */ + int GetDstPropertyCount() const; + + //!Clears the connection cache of this property, this cache is used to store the connections that satisfy the given criteria. + void ClearConnectCache(); + + /** Returns the source property at the specified index with which this property connects. + * \param pIndex The specified index. + * \return The source property at the specified index. + */ + FbxProperty GetSrcProperty(const int pIndex=0) const; + + /** Searches the source property with the specified name, starting with the specified index with which this property connects. + * \param pName The specified property name. + * \param pStartIndex The start index. + * \return The source property with the specified name. + */ + FbxProperty FindSrcProperty(const char* pName, const int pStartIndex=0) const; + + /** Returns the destination property at the specified index with which this property connects. + * \param pIndex The specified index. + * \return The destination property at the specified index. + */ + FbxProperty GetDstProperty(const int pIndex=0) const; + + /** Searches the destination property with the specified name, starting with the specified index with which this property connects. + * \param pName The specified property name. + * \param pStartIndex The start index. + * \return The destination property with the specified name. + */ + FbxProperty FindDstProperty(const char* pName, const int pStartIndex=0) const; + //@} + + //! Hierarchical separator of properties. + static const char* sHierarchicalSeparator; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + FbxProperty(FbxObject* pObject, const char* pName, const FbxDataType& pDataType=FbxDataType(), const char* pLabel=""); + FbxProperty(const FbxProperty& pParent, const char* pName, const FbxDataType& pDataType, const char* pLabel); + + bool Set(const void* pValue, const EFbxType& pValueType, bool pCheckForValueEquality=true); + bool Get(void* pValue, const EFbxType& pValueType) const; + + bool NotifySetRequest(); + bool NotifySet(); + bool NotifyGet() const; + +private: + inline void* Get() const { FBX_ASSERT_NOW("Cannot get property value as void!"); return NULL; } + inline bool Set(const void* &){ FBX_ASSERT_NOW("Cannot set property value as void!"); return false; } + + bool ConnectSrc(const FbxProperty& pProperty, FbxConnection::EType pType=FbxConnection::eNone); + bool DisconnectSrc(const FbxProperty& pProperty); + bool DisconnectAllSrc(); + bool DisconnectAllSrc(const FbxCriteria& pCriteria); + bool IsConnectedSrc(const FbxProperty& pProperty) const; + int GetSrcCount() const; + int GetSrcCount(const FbxCriteria& pCriteria) const; + FbxProperty GetSrc(int pIndex=0) const; + FbxProperty GetSrc(const FbxCriteria& pCriteria, int pIndex=0) const; + FbxProperty FindSrc(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const; + + bool ConnectDst(const FbxProperty& pProperty, FbxConnection::EType pType=FbxConnection::eNone); + bool DisconnectDst(const FbxProperty& pProperty); + bool DisconnectAllDst(); + bool DisconnectAllDst(const FbxCriteria& pCriteria); + bool IsConnectedDst(const FbxProperty& pProperty) const; + int GetDstCount() const; + int GetDstCount(const FbxCriteria& pCriteria) const; + FbxProperty GetDst(int pIndex=0) const; + FbxProperty GetDst(const FbxCriteria& pCriteria, int pIndex=0) const; + FbxProperty FindDst(const FbxCriteria& pCriteria, const char* pName, int pStartIndex=0) const; + + mutable FbxPropertyHandle mPropertyHandle; + + friend class FbxObject; + friend class FbxIOSettings; + friend class FbxBindingOperator; + friend class FbxAnimEvalClassic; + friend void FbxMarkObject(FbxObject* pObject, FbxMap& pObjectDstDisconnectCount, FbxSet& pObjectsToDeleted, FbxArray& pObjectToDeletedInSequence); + friend void FbxCleanUpConnectionsAtDestructionBoundary(FbxScene* pObject, FbxArray& pObjectToDeletedInSequence); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** \brief This template class is used to contain user properties of specific data types. +* \nosubgrouping +*/ +template class FbxPropertyT : public FbxProperty +{ +public: + /** + * \name Static initialization. + */ + //@{ + /** Creates a property and initializes it using a specific value and flag. + * \param pObject The object that contains this property. + * \param pName The name of the property. + * \param pValue The value of the property. + * \param pForceSet If \c true, the value is forcibly set, if \c false the value is not set when it equals the default value. + * \param pFlags The property flag. + */ + FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const T& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) + { + return StaticInit(pObject, pName, FbxGetDataTypeFromEnum(FbxTypeOf(*((T*)0))), pValue, pForceSet, pFlags); + } + + /** Creates a property and initializes it using a specific value and flag. + * \param pObject The object that contains this property. + * \param pName The name of the property. + * \param pDataType The property data type. + * \param pValue The property value. + * \param pForceSet If \c true, the value is forcibly set, if \c false the value is not set when it equals the default value. + * \param pFlags The property flag. + */ + FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const FbxDataType& pDataType, const T& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) + { + bool lWasFound = false; + *this = Create(pObject, pDataType, pName, "", true, &lWasFound); + if( pForceSet || !lWasFound ) + { + ModifyFlag(pFlags, true); // modify the flags before we set the value + FbxProperty::Set(&pValue, FbxTypeOf(pValue), false); + } + ModifyFlag(FbxPropertyFlags::eStatic, true); + return *this; + } + + /** Creates a property and initializes it using a specific value and flag. + * \param pCompound The parent property of this property. + * \param pName The name of the property. + * \param pDataType The property data type. + * \param pValue The property value. + * \param pForceSet If \c true, the value is forcibly set, if \c false the value is not set when it equals to the default value. + * \param pFlags The property flag. + */ + FbxProperty& StaticInit(FbxProperty pCompound, const char* pName, const FbxDataType& pDataType, const T& pValue, bool pForceSet=true, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) + { + bool lWasFound = false; + *this = Create(pCompound, pDataType, pName, "", true, &lWasFound); + if( pForceSet || !lWasFound ) + { + ModifyFlag(pFlags, true); // modify the flags before we set the value + FbxProperty::Set(&pValue, FbxTypeOf(pValue), false); + } + ModifyFlag(FbxPropertyFlags::eStatic, true); + return *this; + } + //@} + + /** \name Value Management */ + //@{ + /** Assignment function + * \param pValue The value assigned to this property. + * \return This property. */ + FbxPropertyT& Set(const T& pValue){ FbxProperty::Set(&pValue, FbxTypeOf(pValue)); return *this; } + + /** Retrieve function + * \return The value of the property. */ + T Get() const { T lValue; FbxProperty::Get(&lValue, FbxTypeOf(lValue)); return lValue; } + + /** Assignment operator + * \param pValue The value of type T assigned to this property. + * \return This property. */ + FbxPropertyT& operator=(const T& pValue){ return Set(pValue); } + + /** Type cast operator + * \return The value of the property of type T. */ + operator T() const { return Get(); } + //@} + + /** \name Animation Evaluation */ + //@{ + /** Evaluate the value of a property if it has animation and return the result. + * \param pTime The time used for evaluate. + * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. + * \return The property value at the specified time. */ + T EvaluateValue(const FbxTime& pTime=FBXSDK_TIME_INFINITE, bool pForceEval=false) + { + return GetAnimationEvaluator()-> template GetPropertyValue(*this, pTime, pForceEval); + } + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxPropertyT() : FbxProperty(){} + FbxPropertyT(const FbxProperty& pProperty) : FbxProperty(pProperty){} + ~FbxPropertyT(){} +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +template <> class FbxPropertyT : public FbxProperty +{ +public: + FbxPropertyT() : FbxProperty(){} + FbxPropertyT(const FbxProperty& pProperty) : FbxProperty(pProperty){} + ~FbxPropertyT(){} + + const FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const FbxReference& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) + { + return StaticInit(pObject, pName, FbxGetDataTypeFromEnum(FbxTypeOf(*((FbxReference*)0))), pValue, pForceSet, pFlags); + } + + const FbxProperty& StaticInit(FbxObject* pObject, const char* pName, const FbxDataType& pDataType, const FbxReference& pValue, bool pForceSet, FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone) + { + bool lWasFound = false; + *this = Create(pObject, pDataType, pName, "", true, &lWasFound); + if( pForceSet || !lWasFound ) + { + ModifyFlag(pFlags, true); // modify the flags before we set the value + Set(pValue); // since we will trigger callbacks in there! + } + ModifyFlag(FbxPropertyFlags::eStatic, true); + return *this; + } + + FbxReference Get() const + { + FbxProperty::NotifyGet(); + return GetSrcObject(); + } + + FbxPropertyT& Set(const FbxReference& pValue) + { + if( FbxProperty::NotifySetRequest() ) + { + DisconnectAllSrcObject(); + if( ConnectSrcObject(pValue) ) + { + FbxProperty::SetValueInheritType(FbxPropertyFlags::eOverride); + FbxProperty::NotifySet(); + } + } + return *this; + } + + operator FbxReference() const + { + return Get(); + } + + FbxPropertyT& operator=(const FbxReference& pValue) + { + return Set(pValue); + } +}; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ + +#include + +#endif /* _FBXSDK_CORE_PROPERTY_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxpropertydef.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxpropertydef.h new file mode 100644 index 00000000..dbb82aaa --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxpropertydef.h @@ -0,0 +1,146 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxpropertydef.h +#ifndef _FBXSDK_CORE_PROPERTY_DEFINITION_H_ +#define _FBXSDK_CORE_PROPERTY_DEFINITION_H_ + +#include + +#include + +#include + +#define FBXSDK_PROPERTY_ID_NULL -1 +#define FBXSDK_PROPERTY_ID_ROOT 0 + +class FbxPropertyPage; + +class FBXSDK_DLL FbxPropertyFlags +{ +public: + //! Property inherit types + enum EInheritType + { + eOverride, //!< Property override this flag from its reference property. + eInherit, //!< Property inherit this flag from its reference property. + eDeleted //!< Property has been deleted, so inheritance is invalid. + }; + + //! Property flags that affect their behaviors + enum EFlags + { + eNone = 0, //!< No flag. + eStatic = 1 << 0, //!< Property is defined in the class declaration, so it wasn't created dynamically. + eAnimatable = 1 << 1, //!< Property can be animated, thus is can have am animation curve node connected. + eAnimated = 1 << 2, //!< Property is animated, so it also has an animation curve node connected. + eImported = 1 << 3, //!< Property has been created during import process when reading FBX file. + eUserDefined = 1 << 4, //!< Property has been defined by user, not by the FBX SDK. + eHidden = 1 << 5, //!< Property should not be displayed on user interface. + eNotSavable = 1 << 6, //!< Property value must not be exported when writing FBX files. + + eLockedMember0 = 1 << 7, //!< This property has its member #0 locked. + eLockedMember1 = 1 << 8, //!< This property has its member #1 locked. + eLockedMember2 = 1 << 9, //!< This property has its member #2 locked. + eLockedMember3 = 1 << 10, //!< This property has its member #3 locked. + eLockedAll = eLockedMember0 | eLockedMember1 | eLockedMember2 | eLockedMember3, + eMutedMember0 = 1 << 11, //!< This property has its member #0 muted. + eMutedMember1 = 1 << 12, //!< This property has its member #1 muted. + eMutedMember2 = 1 << 13, //!< This property has its member #2 muted. + eMutedMember3 = 1 << 14, //!< This property has its member #3 muted. + eMutedAll = eMutedMember0 | eMutedMember1 | eMutedMember2 | eMutedMember3, + + //Private flags + eUIDisabled = 1 << 15, //!< Private flag for dynamic UI in FBX plug-ins. + eUIGroup = 1 << 16, //!< Private flag for dynamic UI in FBX plug-ins. + eUIBoolGroup = 1 << 17, //!< Private flag for dynamic UI in FBX plug-ins. + eUIExpanded = 1 << 18, //!< Private flag for dynamic UI in FBX plug-ins. + eUINoCaption = 1 << 19, //!< Private flag for dynamic UI in FBX plug-ins. + eUIPanel = 1 << 20, //!< Private flag for dynamic UI in FBX plug-ins. + eUILeftLabel = 1 << 21, //!< Private flag for dynamic UI in FBX plug-ins. + eUIHidden = 1 << 22, //!< Private flag for dynamic UI in FBX plug-ins. + + eCtrlFlags = eStatic | eAnimatable | eAnimated | eImported | eUserDefined | eHidden | eNotSavable | eLockedAll | eMutedAll, + eUIFlags = eUIDisabled | eUIGroup | eUIBoolGroup | eUIExpanded | eUINoCaption | eUIPanel | eUILeftLabel | eUIHidden, + eAllFlags = eCtrlFlags | eUIFlags, + + eFlagCount = 23, + }; + + bool SetFlags(FbxPropertyFlags::EFlags pMask, FbxPropertyFlags::EFlags pFlags); + FbxPropertyFlags::EFlags GetFlags() const; + FbxPropertyFlags::EFlags GetMergedFlags(FbxPropertyFlags::EFlags pFlags) const; + bool ModifyFlags(FbxPropertyFlags::EFlags pFlags, bool pValue); + FbxPropertyFlags::EInheritType GetFlagsInheritType(FbxPropertyFlags::EFlags pFlags) const; + + bool SetMask(FbxPropertyFlags::EFlags pFlags); + bool UnsetMask(FbxPropertyFlags::EFlags pFlags); + FbxPropertyFlags::EFlags GetMask() const; + + bool Equal(const FbxPropertyFlags& pOther, FbxPropertyFlags::EFlags pFlags) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxPropertyFlags(); + explicit FbxPropertyFlags(FbxPropertyFlags::EFlags pFlags); + FbxPropertyFlags Clone(FbxPropertyPage* pPage); + + static const int sLockedMembersMax = 4; //Maximum number of property sub-member that can be locked. + static const int sLockedMembersBitOffset = 7; //Number of bits to shift to get to the first locked member flag. + static const int sMutedMembersMax = 4; //Maximum number of property sub-member that can be muted. + static const int sMutedMembersBitOffset = 11; //Number of bits to shift to get to the first muted member flag. + +private: + FbxUInt32 mFlagData, mMaskData; + + FBX_ASSERT_STATIC(sizeof(FbxUInt32) * 8 >= FbxPropertyFlags::eFlagCount); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +class FBXSDK_DLL FbxPropertyValue +{ +public: + static FbxPropertyValue* Create(void* pData, EFbxType pType); + void Destroy(); + FbxPropertyValue* Clone(FbxPropertyPage*); + + bool Get(void* pValue, EFbxType pValueType); + bool Set(const void* pValue, EFbxType pValueType); + size_t GetSizeOf() const; + size_t GetComponentCount() const; + + void IncRef(); + void DecRef(); + int GetRef(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxPropertyValue(); + +private: + FbxPropertyValue(void* pValue, EFbxType pType); + ~FbxPropertyValue(); + + int mRef; + EFbxType mType; + void* mValue; + + FBXSDK_FRIEND_NEW(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_CORE_PROPERTY_DEFINITION_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxpropertyhandle.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxpropertyhandle.h new file mode 100644 index 00000000..527a6533 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxpropertyhandle.h @@ -0,0 +1,576 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxpropertyhandle.h +#ifndef _FBXSDK_CORE_PROPERTY_HANDLE_H_ +#define _FBXSDK_CORE_PROPERTY_HANDLE_H_ + +#include + +#include +#include +#include + +#include + +class FbxPropertyPage; +class FbxPropertyHandle; +class FbxConnectionPointFilter; + +//! \brief Class to manage property handle. +class FBXSDK_DLL FbxPropertyHandle +{ +public: + /** + * \name Constructor and Destructor + */ + //@{ + //! Create an instance + static FbxPropertyHandle Create(); + + /** Create an instance with given instance. + * \param pInstanceOf The given instance. */ + static FbxPropertyHandle Create(const FbxPropertyHandle& pInstanceOf); + + /** Create an instance with given name and type. + * \param pName Property name. + * \param pType Property type. */ + static FbxPropertyHandle Create(const char* pName, EFbxType pType=eFbxUndefined); + + /** Create an instance with given name and type info. + * \param pName + * \param pTypeInfo */ + static FbxPropertyHandle Create(const char* pName, FbxPropertyHandle pTypeInfo); + + /** If this property is root property, delete the property page, otherwise delete the property. + * \return If succeed, return true. */ + bool Destroy(); + + //! Default constructor. + FbxPropertyHandle(); + + /** Copy constructor. + * \param pAddress FbxPropertyHandle copied to this one. */ + FbxPropertyHandle(const FbxPropertyHandle& pAddress); + + //! Destructor + ~FbxPropertyHandle(); + + /** Character constructor. + * \param pPage + * \param pId */ + FbxPropertyHandle(FbxPropertyPage* pPage, FbxInt pId=FBXSDK_PROPERTY_ID_ROOT); + //@} + + /** + * \name Assignment and basic info + */ + //@{ + /** FbxPropertyHandle assignment operator. + * \param pHandle FbxPropertyHandle assigned to this one. */ + FbxPropertyHandle& operator=(const FbxPropertyHandle& pHandle); + + /** Equality operator. + * \param pHandle FbxPropertyHandle compared with this one. + * \return \c True if equal, \c false otherwise. */ + bool operator==(const FbxPropertyHandle& pHandle) const; + + /** Inequality operator. + * \param pHandle FbxPropertyHandle compared with this one. + * \return \c True if unequal, \c false otherwise. */ + bool operator!=(const FbxPropertyHandle& pHandle) const; + + /** Lesser operator, used to sort property handle in map. + * \param pHandle The property handle compared to this property handle. + * \return \c true if less, \c false otherwise. */ + bool operator< (const FbxPropertyHandle& pHandle) const; + + /** Greater operator, used to sort property handle in map. + * \param pProperty The property handle compared to this property handle. + * \return \c true if greater, \c false otherwise. */ + bool operator> (const FbxPropertyHandle& pHandle) const; + + /** Compare type info together + * \param pHandle FbxPropertyHandle compared with this one. + * \return \c True if equal, \c false otherwise. */ + bool Is(const FbxPropertyHandle& pHandle) const; + + //! Judge validity + bool Valid() const; + + //! Get the property name + const char* GetName() const; + + //! Get the property label + const char* GetLabel() const; + + /** Set a label to the property + * \param pLabel The given label string + * \return \c true if successful. */ + bool SetLabel(const char* pLabel); + + //! Get the property type + EFbxType GetType() const; + + //! Get the property type info + FbxPropertyHandle GetTypeInfo() const; + + //! Get the property attribute state + FbxPropertyFlags::EFlags GetFlags() const; + + /** Gets the inheritance type for the given flag. + * \param pFlags The flag to query + * \param pCheckReferences Decide whether check instance. If it is true, check instance. + * \return The inheritance type */ + FbxPropertyFlags::EInheritType GetFlagsInheritType(FbxPropertyFlags::EFlags pFlags, bool pCheckReferences) const; + + /** According the given parameter Change the attributes of the property. + * \param pFlags The given flags used as mask. + * \param pValue If pValue is true, set mask with given flags, otherwise unset mask with given flags. + * \return If succeed, return true. */ + bool ModifyFlags(FbxPropertyFlags::EFlags pFlags, bool pValue); + + /**Sets the inheritance type for the given flag + * \param pFlags The flag to set + * \param pType The inheritance type to set + * \return If succeed, return true. */ + bool SetFlagsInheritType(FbxPropertyFlags::EFlags pFlags, FbxPropertyFlags::EInheritType pType); + + //! Get the property user data. + void* GetUserData() const; + + /** Set user data to the property + * \param pUserData The given user data + * \return If succeed, return true. */ + bool SetUserData(const void* pUserData); + + //! Get the property user tag + int GetUserTag() const; + + /** Set user tag to the property + * \param pUserData The given user tag + * \return If succeed, return true. */ + bool SetUserTag(int pUserData); + //@} + + /** + * \name Enum management + */ + //@{ + /** Add new value at the end of the enum list in the property. + * \param pStringValue The given new value + * \return The index of the value. */ + int AddEnumValue(const char* pStringValue); + + /** Insert new value at the given index of the enum list in property. + * \param pIndex The given index + * \param pStringValue The given new value */ + void InsertEnumValue(int pIndex, const char* pStringValue); + + /** Get the enum count of enum list in property + * \return The enum count of enum list in property */ + int GetEnumCount(); + + /** Set value at the given index of the enum list in the property. + * \param pIndex The given index + * \param pStringValue The given new value used to instead the old value. */ + void SetEnumValue(int pIndex, const char* pStringValue); + + /** Remove the value at the index of the enum list in the property. + * \param pIndex The given index */ + void RemoveEnumValue(int pIndex); + + /** Get the value at the index of enum list in the property. + * \param pIndex The given index + * \return The value at the given index */ + char* GetEnumValue(int pIndex); + //@} + + /** + * \name Child and Struct management + */ + //@{ + //! Create the map for find property in the property page + void BeginCreateOrFindProperty(); + + //! Clear the map which created for find property. + void EndCreateOrFindProperty(); + + /** Judge if the property is the root property. + * \return Return true if this property is root property. */ + inline bool IsRoot() const { return ( mPage && mId == 0 ) ? true : false; } + + /** Judge if the property is the child property of the given parent property. + * \param pParent The given parent property handle + * \return Return true if this property is child of given property. */ + bool IsChildOf(const FbxPropertyHandle& pParent) const; + + /** Judge if the property is descendent property of the given property. + * \param pParent The given parent property handle + * \return Return true if this property is descendant of given property. */ + bool IsDescendentOf(const FbxPropertyHandle& pParent) const; + + /** Set parent property handle.No matter what enters,the result is always false. + * \param pOther + * \return False */ + bool SetParent(const FbxPropertyHandle& pOther ); + + /** Add a property to the property page. + * \param pName The name of property. + * \param pTypeInfo The added property's type info. + * \return The handle of the new added property */ + FbxPropertyHandle Add(const char* pName, const FbxPropertyHandle& pTypeInfo); + + /** Get parent property + * \return If the parent property exists, return the property handle,otherwise return -1. */ + FbxPropertyHandle GetParent() const; + + /** Get child property + * \return If the child property is exist, return the property handle,otherwise return -1. */ + FbxPropertyHandle GetChild() const; + + /** Get sibling property + * \return If the sibling property is exist, return the property handle,otherwise return -1. */ + FbxPropertyHandle GetSibling() const; + + /** Get first descendent property + * \return If the descendent property is exist, return the first descendent property handle,otherwise return -1. */ + FbxPropertyHandle GetFirstDescendent() const; + + /** Get first descendent property which after the given property + * \param pHandle The given property handle + * \return If the descendent property can be found after the given property, + * return the first found property handle,otherwise return -1. */ + FbxPropertyHandle GetNextDescendent(const FbxPropertyHandle& pHandle) const; + + /** Find the property with given name + * \param pName The given property name + * \param pCaseSensitive Decide if the given property name is case sensitive + * \return Return a property handle which be created with the found property. */ + FbxPropertyHandle Find(const char* pName, bool pCaseSensitive) const; + + /** Find the property with given name and type info. + * \param pName The given property name + * \param pTypeInfo The given property type info + * \param pCaseSensitive Decide if the given property name is case sensitive + * \return Return a property handle which be created with the found property. */ + FbxPropertyHandle Find(const char* pName, const FbxPropertyHandle& pTypeInfo, bool pCaseSensitive) const; + + /** Separate the given name by children separator string and then find the property.The step is + * strip the first part of the name and search, if the property can be found, strip the second part + * of the name and continue search, until no property be found,then return the last found property. + * \param pName The given property name + * \param pChildrenSeparator The given children separator string + * \param pCaseSensitive Decide if the given property name is case sensitive + * \return Return a property handle which be created with the found property. */ + FbxPropertyHandle Find(const char* pName, const char* pChildrenSeparator, bool pCaseSensitive) const; + + /** Separate the given name by children separator string and then find the property.The step is + * strip the first part of the name and search, if the property can be found, strip the second part + * of the name and continue search, until no property be found,then return the last found property. + * \param pName The given property name + * \param pChildrenSeparator The given children separator string + * \param pTypeInfo The given property type info + * \param pCaseSensitive Decide if the given property name is case sensitive + * \return Return a property handle which be created with the found property. */ + FbxPropertyHandle Find(const char* pName, const char* pChildrenSeparator, const FbxPropertyHandle& pTypeInfo, bool pCaseSensitive) const; + //@} + + /** + * \name Connection management + */ + //@{ + /** Connect source property. + * \param pSrc The given source property + * \param pType The given property type + * \return If connect successfully, return true,otherwise, return false. */ + bool ConnectSrc(const FbxPropertyHandle& pSrc, const FbxConnection::EType pType=FbxConnection::eDefault); + + /** Get source properties' count. + * \param pFilter The filter used to get sub connection point. If it is not zero, return the source count of the sub connection point. + * Otherwise, return the src count of this property. + * \return The count of source properties */ + int GetSrcCount(FbxConnectionPointFilter* pFilter=0) const; + + /** Get source property with the given index. + * \param pFilter The filter used to get sub connection point. If it is not zero, return the source property of the sub connection point. + * Otherwise, return the source property of this property. + * \param pIndex The given index + * \return The source property handle. */ + FbxPropertyHandle GetSrc(FbxConnectionPointFilter* pFilter=0, int pIndex=0) const; + + /** Disconnect source property. + * \param pSrc The given source property + * \return If disconnect successfully, return true, otherwise return false. */ + bool DisconnectSrc(const FbxPropertyHandle& pSrc); + + /** Judge if it is connected with the given source property. + * \param pSrc The given source property + * \return If it is connected, return true, otherwise return false. */ + bool IsConnectedSrc(const FbxPropertyHandle& pSrc); + + /** Connect destination property. + * \param pDst The given destination property + * \param pType The given property type + * \return If connect successfully, return true,otherwise, return false. */ + bool ConnectDst(const FbxPropertyHandle& pDst, const FbxConnection::EType pType=FbxConnection::eDefault); + + /** Get destination properties' count. + * \param pFilter The filter used to get sub connection point.If it is not zero,return the destination count of the sub connection point. + * Otherwise, return the destination count of this property. + * \return The count of destination properties */ + int GetDstCount(FbxConnectionPointFilter* pFilter=0) const; + + /** Get destination property with the given index. + * \param pFilter The filter used to get sub connection point.If it is not zero,return the destination property of the sub connection point. + * Otherwise, return the destination property of this property. + * \param pIndex The given index + * \return The destination property handle. */ + FbxPropertyHandle GetDst(FbxConnectionPointFilter* pFilter=0, int pIndex=0) const; + + /** Disconnect destination property. + * \param pDst The given destination property + * \return If disconnect successfully, return true,otherwise, return false. */ + bool DisconnectDst(const FbxPropertyHandle& pDst); + + /** Judge if it is connected with the given destination property. + * \param pDst The given destination property + * \return If it is connected, return true,otherwise, return false. */ + bool IsConnectedDst(const FbxPropertyHandle& pDst); + + //! Clear connect cache + void ClearConnectCache(); + + //! Clear all connect without sending any notification (Internal use ONLY) + void WipeAllConnections(); + //@} + + /** \name Limits Functions + * Minimum and maximum value limits can be associated with properties, but FBX + * will not verify that these limits are respected. FBX however will store and + * retrieve limits from files, and will assure that they are persistent in memory + * while the property handle object exists. + * + * Soft minimums and maximums values are specifying a second set of limits that can be + * used for UI objects such as sliders. FBX will handle them the same way it does + * with the normal limits. */ + //@{ + /** Judge if this property has a minimum value. + * \return If the minimum value exist, return true,otherwise, return false. */ + bool HasMin() const; + + /** Get the minimum value and value type of this property. + * \param pValue The minimum value of this property. + * \param pValueType The value type of this property. + * \return If the minimum value exist, return true,otherwise, return false. */ + bool GetMin(void* pValue, EFbxType pValueType) const; + + /** Set the minimum value and value type for this property. + * \param pValue The given minimum value . + * \param pValueType The given value type . + * \return If it be set successfully, return true,otherwise, return false. */ + bool SetMin(const void* pValue, EFbxType pValueType); + + /** According the given value and its value type, set the minimum value and value type for this property. + * \param pValue The given value . + * \return If it be set successfully, return true,otherwise, return false. + */ + template inline bool SetMin(const T& pValue){ return SetMin(&pValue, FbxTypeOf(pValue)); } + + /** Get the minimum value of this property. + * \param pFBX_TYPE Not used in this function. This is a dummy argument for + * the correct instantiation of the templated function. + * \return The minimum value of this property */ + template inline T GetMin(const T* pFBX_TYPE) const { T lValue; GetMin(&lValue, FbxTypeOf(lValue)); return lValue; } + + /** Judge if this property has soft minimum value. + * \return If the soft minimum value exist, return true,otherwise, return false. */ + bool HasSoftMin() const; + + /** Get the soft minimum value and value type of this property. + * \param pValue The soft minimum value of this property. + * \param pValueType The value type of this property. + * \return If the soft minimum value exist, return true,otherwise, return false. */ + bool GetSoftMin(void* pValue, EFbxType pValueType) const; + + /** Set the soft minimum value and value type for this property. + * \param pValue The given soft minimum value . + * \param pValueType The given value type . + * \return If it be set successfully, return true,otherwise, return false. */ + bool SetSoftMin(const void* pValue, EFbxType pValueType); + + /** According the given value and its value type, set the soft minimum value and value type for this property. + * \param pValue The given value . + * \return If it be set successfully, return true,otherwise, return false. */ + template inline bool SetSoftMin(const T& pValue){ return SetSoftMin(&pValue, FbxTypeOf(pValue)); } + + /** Get the soft minimum value of this property. + * \param pFBX_TYPE Not used in this function. This is a dummy argument for + * the correct instantiation of the templated function. + * \return The soft minimum value of this property */ + template inline T GetSoftMin(const T* pFBX_TYPE) const { T lValue; GetSoftMin(&lValue, FbxTypeOf(lValue)); return lValue; } + + /** Judge if this property has maximum value. + * \return If the maximum value exist, return true,otherwise, return false. */ + bool HasMax() const; + + /** Get the maximum value and value type of this property. + * \param pValue The maximum value of this property. + * \param pValueType The value type of this property. + * \return If the maximum value exist, return true,otherwise, return false. */ + bool GetMax(void* pValue, EFbxType pValueType) const; + + /** Set the maximum value and value type for this property. + * \param pValue The given maximum value . + * \param pValueType The given value type . + * \return If it be set successfully, return true,otherwise, return false. */ + bool SetMax(const void* pValue, EFbxType pValueType); + + /** According the given value and its value type, set the maximum value and value type for this property. + * \param pValue The given value . + * \return If it be set successfully, return true,otherwise, return false. */ + template inline bool SetMax(const T& pValue){ return SetMax(&pValue, FbxTypeOf(pValue)); } + + /** Get the maximum value of this property. + * \param pFBX_TYPE Not used in this function. This is a dummy argument for + * the correct instantiation of the templated function. + * \return The maximum value of this property */ + template inline T GetMax(const T* pFBX_TYPE) const { T lValue; GetMax(&lValue, FbxTypeOf(lValue)); return lValue; } + + /** Judge if this property has soft maximum value. + * \return If the soft maximum value exist, return true,otherwise, return false. */ + bool HasSoftMax() const; + + /** Get the soft maximum value and value type of this property. + * \param pValue The soft maximum value of this property. + * \param pValueType The value type of this property. + * \return If the soft maximum value exist, return true,otherwise, return false. */ + bool GetSoftMax(void* pValue, EFbxType pValueType) const; + + /** Set the soft maximum value and value type for this property. + * \param pValue The given soft maximum value . + * \param pValueType The given value type . + * \return If it be set successfully, return true,otherwise, return false. */ + bool SetSoftMax(const void* pValue, EFbxType pValueType); + + /** According the given value and its value type, set the soft maximum value and value type for this property. + * \param pValue The given value . + * \return If it be set successfully, return true,otherwise, return false. */ + template inline bool SetSoftMax(const T& pValue){ return SetSoftMax(&pValue, FbxTypeOf(pValue)); } + + /** Get the soft maximum value of this property. + * \param pFBX_TYPE Not used in this function. This is a dummy argument for + * the correct instantiation of the templated function. + * \return The soft maximum value of this property */ + template inline T GetSoftMax(const T* pFBX_TYPE) const { T lValue; GetSoftMax(&lValue, FbxTypeOf(lValue)); return lValue; } + //@} + + /** + * \name Value + */ + //@{ + /** Get value inherit type of this property. + * \param pCheckReferences If it is true,check instance of this property page,otherwise,only check this page. + * \return The value inherit type of this property */ + FbxPropertyFlags::EInheritType GetValueInheritType(bool pCheckReferences) const; + + /** Set value inherit type for this property . + * \param pType The given value inherit type. + * \return If set successfully, return true,otherwise, return false. */ + bool SetValueInheritType(FbxPropertyFlags::EInheritType pType); + + /** Get default value and value type of this property . + * \param pValue The gotten default value of this property. + * \param pValueType The gotten default value type of this property. + * \return If default value be gotten successfully, return true,otherwise, return false. */ + bool GetDefaultValue(void* pValue, EFbxType pValueType) const; + + /** Get value and value type of this property . + * \param pValue The gotten value of this property. + * \param pValueType The gotten value type of this property. + * \return If value be gotten successfully, return true,otherwise, return false. */ + bool Get(void* pValue, EFbxType pValueType) const; + + /** Set property value and value type for this property. + * \param pValue The given property value . + * \param pValueType The given property value type + * \param pCheckValueEquality If it is true, when the given value is equal with + * the property value, the property value will not be set. + * \return If the property value be set successfully, return true,otherwise, return false. */ + bool Set(const void* pValue, EFbxType pValueType, bool pCheckValueEquality); + + /** Set property value with the given value . + * \param pValue The given value . + * \return If set successfully, return true,otherwise, return false. */ + template inline bool Set(const T& pValue){ return Set(&pValue, FbxTypeOf(pValue)); } + + /** get property value. + * \param pFBX_TYPE Not be used. + * \return The gotten property value. */ + template inline T Get(const T* pFBX_TYPE) const { T lValue; Get(&lValue, FbxTypeOf(lValue)); return lValue; } + //@} + + /** + * \name Page settings + */ + //@{ + /** Set the property page data pointer. + * \param pData The given page data pointer. */ + void SetPageDataPtr(void* pData); + + /** Get property page data pointer. + * \return The gotten property page data pointer. */ + void* GetPageDataPtr() const; + //@} + + /** + * \name Page Internal Entry Management + */ + //@{ + /** Push properties to parent instance. + * \return If push successful return true,otherwise,return false. */ + bool PushPropertiesToParentInstance(); + //@} + + /** + * \name Reference Management + */ + //@{ + /** Judge if this property page is a instance of other page. + * \return If this property page is a instance of other page, return true,otherwise,return false. */ + bool IsAReferenceTo(void) const; + + /** Get the property page which this property page make reference to + * \return The property page which this property page make reference to */ + void* GetReferenceTo(void) const; + + /** Judge if this property page is referenced by other pages. + * \return If this property page is referenced by other pages, return true,otherwise,return false. */ + bool IsReferencedBy(void) const; + + /** Get the count of property pages which make reference to this property page. + * \return The count of property pages which make reference to this property page. */ + int GetReferencedByCount(void) const; + + /** According the given index,get the property page which make reference to this property page. + * \param pIndex The given index + * \return The pointer to the property page which reference to this property page and be found by index. */ + void* GetReferencedBy(int pIndex) const; + //@} + +private: + FbxPropertyPage* mPage; + FbxInt mId; +}; + +#include + +#endif /* _FBXSDK_CORE_PROPERTY_HANDLE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxpropertypage.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxpropertypage.h new file mode 100644 index 00000000..89d7335d --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxpropertypage.h @@ -0,0 +1,1747 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxpropertypage.h +#ifndef _FBXSDK_CORE_PROPERTY_PAGE_H_ +#define _FBXSDK_CORE_PROPERTY_PAGE_H_ + +#include + +#include +#include +#include +#include + +#include + +typedef FbxPair FbxNameMapKey; + +struct FbxNameMapCompare +{ + inline int operator()(const FbxNameMapKey& pKeyA, const FbxNameMapKey& pKeyB) const + { + if( pKeyA.mFirst < pKeyB.mFirst ) return -1; + else if( pKeyA.mFirst > pKeyB.mFirst ) return 1; + return strcmp(pKeyA.mSecond, pKeyB.mSecond); + } +}; + +class FBXSDK_DLL FbxPropertyInfo +{ +public: + FBXSDK_FRIEND_NEW(); + static FbxPropertyInfo* Create(const char* pName, FbxPropertyPage* pTypeInfo) { return FbxNew< FbxPropertyInfo >(pName,pTypeInfo); } + static FbxPropertyInfo* Create(const char* pName, EFbxType pType=eFbxUndefined) { return FbxNew< FbxPropertyInfo >(pName,pType); } + void Destroy() { FbxDelete(this); } + FbxPropertyInfo* Clone(FbxPropertyPage* /*pPage*/) + { + // @@@@@ Filter is missing + // @@@@@ Clone is incomplete + if (mTypeInfo) + { + return FbxNew< FbxPropertyInfo >(mName,mTypeInfo); + } + else + { + return FbxNew< FbxPropertyInfo >(mName,mType); + } + } + + inline void IncRef() { mRef++; } + inline void DecRef() { mRef--; if (mRef==0) FbxDelete(this); } + inline int GetRef() { return mRef; } + + // Labels and Types + + inline FbxStringSymbol GetName() const { return mName; } + EFbxType GetType() const; + FbxPropertyPage* GetTypeInfo() const { return mTypeInfo; } + + inline void SetLabel(const char* pLabel) { mLabel=pLabel; } + inline const char* GetLabel() const { return mLabel.IsEmpty() ? "" : ((const char*)mLabel); } + + inline void SetUserTag(int pUserTag) { mUserTag=pUserTag; } + inline int GetUserTag() const { return mUserTag; } + + inline void SetUserData(const void* pUserData) { mUserData=(void*)pUserData; } + inline void* GetUserData() const { return mUserData; } + + // Enum list + int AddEnumValue(const char* pStringValue) + { + EFbxType lType = GetType(); + if (lType == eFbxEnum || lType == eFbxEnumM) + { + if (!mEnumList) + mEnumList.Reset(FbxNew< FbxStringList >()); + + bool lCanAdd = (lType == eFbxEnumM || mEnumList->FindIndex( pStringValue ) == -1); + if( lCanAdd ) + return mEnumList->Add((char*)pStringValue); + } + return -1; + } + + void InsertEnumValue(int pIndex, const char* pStringValue) + { + EFbxType lType = GetType(); + if (lType == eFbxEnum || lType == eFbxEnumM) + { + if (!mEnumList) + mEnumList.Reset(FbxNew< FbxStringList >()); + + bool lCanAdd = (lType == eFbxEnumM || mEnumList->FindIndex( pStringValue ) == -1); + if( lCanAdd ) + mEnumList->InsertAt(pIndex,(char*)pStringValue); + } + } + + int GetEnumCount() + { + return mEnumList ? mEnumList->GetCount() : 0; + } + + void SetEnumValue(int pIndex, const char* pStringValue) + { + EFbxType lType = GetType(); + if (lType == eFbxEnum || lType == eFbxEnumM) + { + if (!mEnumList) + mEnumList.Reset(FbxNew< FbxStringList >()); + + bool lCanAdd = (lType == eFbxEnumM || mEnumList->FindIndex( pStringValue ) == -1); + if (lCanAdd) + mEnumList->SetStringAt(pIndex,(char*)pStringValue); + } + } + + void RemoveEnumValue(int pIndex) + { + EFbxType lType = GetType(); + if (lType == eFbxEnum || lType == eFbxEnumM) + { + if (!mEnumList) + mEnumList.Reset(FbxNew< FbxStringList >()); + + mEnumList->RemoveAt(pIndex); + } + } + + char* GetEnumValue(int pIndex) + { + char* lValue = NULL; + EFbxType lType = GetType(); + if (lType == eFbxEnum || lType == eFbxEnumM) + { + lValue = mEnumList ? mEnumList->GetStringAt(pIndex) : 0; + } + return lValue; + } + + + // Min and Max values + enum EValueIndex {eValueMin, eValueSoftMin, eValueMax, eValueSoftMax, eValueCount}; + + bool HasMinMax(EValueIndex pId) const + { + return mMinMaxValue[pId] != NULL; + } + + bool GetMinMax(EValueIndex pId, void* pValue, EFbxType pValueType) const + { + if (mMinMaxValue[pId]) { + return FbxTypeCopy(pValue, pValueType, mMinMaxValue[pId], GetType()); + } + return false; + } + + bool SetMinMax(EValueIndex pId, const void* pValue, EFbxType pValueType) + { + if (!mMinMaxValue[pId]) { + size_t lSize = FbxTypeSizeOf(GetType()); + if (lSize) { + mMinMaxValue[pId] = FbxMalloc(lSize); + } + } + if (mMinMaxValue[pId]) { + return FbxTypeCopy(mMinMaxValue[pId], GetType(), pValue, pValueType); + } + return false; + } + +private: + FbxPropertyInfo(const char* pName, FbxPropertyPage* pTypeInfo) + : mRef(0) + , mName(pName) + , mType(eFbxUndefined) + , mTypeInfo(pTypeInfo) + , mUserTag(0) + , mUserData(0) + , mFilter(0) + { + for (int i=0; i mEnumList; +}; + +#if defined(FBXSDK_COMPILER_MSC) + #pragma warning (push) + #pragma warning (disable: 4355) +#endif + +class FBXSDK_DLL FbxPropertyConnect +{ +public: + FBXSDK_FRIEND_NEW(); + static FbxPropertyConnect* Create(FbxPropertyPage* pPage,FbxInt pId) { return FbxNew< FbxPropertyConnect >(pPage,pId); } + void Destroy() { FbxDelete(this); } + FbxPropertyConnect* Clone(FbxPropertyPage* pPage) + { + return FbxNew< FbxPropertyConnect >(pPage,mId); + } + + inline void IncRef() { mRef++; } + inline void DecRef() { mRef--; if (mRef==0) FbxDelete(this); } + inline int GetRef() { return mRef; } + +// Properties + FbxPropertyPage* GetPage() { return mPage; } + FbxInt GetPropertyId() { return mId; } + +// ClearConnectCache() +// ------------------------------------------------------ + inline void ClearConnectCache() + { + mConnectionPoint.SubConnectRemoveAll(); + } + + //! Clear all connect without sending any notification (Internal use ONLY) + inline void WipeAllConnections() + { + mConnectionPoint.WipeConnectionList(); + } + +// Properties + inline bool ConnectSrc(FbxPropertyConnect* pSrc, FbxConnection::EType pType) + { + return mConnectionPoint.ConnectSrc(&pSrc->mConnectionPoint,pType); + } + inline bool DisconnectSrc(FbxPropertyConnect* pSrc) + { + return mConnectionPoint.DisconnectSrc(&pSrc->mConnectionPoint); + } + inline bool IsConnectedSrc(FbxPropertyConnect* pSrc) + { + return mConnectionPoint.IsConnectedSrc(&pSrc->mConnectionPoint); + } + inline int GetSrcCount(FbxConnectionPointFilter* pFilter) + { + return mConnectionPoint.GetSrcCount(pFilter); + } + inline FbxPropertyConnect* GetSrc(FbxConnectionPointFilter* pFilter, int pIndex) + { + FbxConnectionPoint *lCP = mConnectionPoint.GetSrc(pIndex,pFilter); + return lCP ? (FbxPropertyConnect * )lCP->GetData() : 0; + } + inline bool ConnectDst(FbxPropertyConnect* pDst, FbxConnection::EType pType) + { + return mConnectionPoint.ConnectDst(&pDst->mConnectionPoint,pType); + } + inline bool IsConnectedDst(FbxPropertyConnect* pSrc) + { + return mConnectionPoint.IsConnectedSrc(&pSrc->mConnectionPoint); + } + inline bool DisconnectDst(FbxPropertyConnect* pDst) + { + return mConnectionPoint.DisconnectDst(&pDst->mConnectionPoint); + } + inline int GetDstCount(FbxConnectionPointFilter* pFilter) + { + return mConnectionPoint.GetDstCount(pFilter); + } + inline FbxPropertyConnect* GetDst(FbxConnectionPointFilter* pFilter, int pIndex) + { + FbxConnectionPoint *lCP = mConnectionPoint.GetDst(pIndex,pFilter); + return lCP ? (FbxPropertyConnect * )lCP->GetData() : 0; + } + + int mRef; + FbxConnectionPoint mConnectionPoint; + FbxPropertyPage* mPage; + FbxInt mId; + +private: + FbxPropertyConnect(FbxPropertyPage* pPage,FbxInt pId) : + mRef(0), + mConnectionPoint(this), + mPage(pPage), + mId(pId) + { + } + + ~FbxPropertyConnect(){ if( FbxObject::GetWipeMode() ) mConnectionPoint.WipeConnectionList(); } +}; + +#if defined(FBXSDK_COMPILER_MSC) + #pragma warning (pop) +#endif + +class FBXSDK_DLL FbxPropertyEntry +{ +public: + static FbxPropertyEntry* Create(FbxInt pParentId, FbxPropertyInfo* pInfo, FbxPropertyValue* pValue, FbxPropertyConnect* pConnect){ return FbxNew(pParentId, pInfo, pValue, pConnect); } + + void Destroy() { FbxDelete(this); } + + inline FbxInt GetParentId(){ return mParentId; } + inline bool IsEmpty(){ return (mInfo || mValue || mConnect || mFlags.GetMask() != 0) ? false : true; } + + inline FbxPropertyInfo* Get(const FbxPropertyInfo* /*pType*/){ return mInfo; } + + void Set(FbxPropertyInfo* pInfo) + { + FbxPropertyInfo* lInfo = mInfo; + if( pInfo ) pInfo->IncRef(); + mInfo = pInfo; + if( lInfo ) lInfo->DecRef(); + } + + inline FbxPropertyValue* Get(const FbxPropertyValue* /*pType*/){ return mValue; } + + void Set(FbxPropertyValue* pValue) + { + FbxPropertyValue* lValue = mValue; + if( pValue ) pValue->IncRef(); + mValue = pValue; + if( lValue ) lValue->DecRef(); + } + + inline FbxPropertyConnect* Get(const FbxPropertyConnect* /*pType*/){ return mConnect; } + + void Set(FbxPropertyConnect* pConnect) + { + FbxPropertyConnect* lConnect = mConnect; + if( pConnect ) pConnect->IncRef(); + mConnect = pConnect; + if( lConnect ) lConnect->DecRef(); + } + + inline FbxPropertyFlags* Get(const FbxPropertyFlags* /*pType*/){ return &mFlags; } + inline void Set(FbxPropertyFlags pType){ mFlags = pType; } + inline void Set(FbxPropertyFlags* pType){ mFlags = pType ? *pType : FbxPropertyFlags(FbxPropertyFlags::eNone); } + +private: + FbxPropertyEntry(FbxInt pParentId,FbxPropertyInfo *pInfo,FbxPropertyValue *pValue,FbxPropertyConnect *pConnect) : + mInfo(pInfo), + mValue(pValue), + mConnect(pConnect), + mParentId(pParentId), + mFlags(FbxPropertyFlags::eNone) + { + if( mInfo ) mInfo->IncRef(); + if( mValue ) mValue->IncRef(); + if( mConnect ) mConnect->IncRef(); + } + + ~FbxPropertyEntry() + { + if( mInfo ) mInfo->DecRef(); + if( mValue ) mValue->DecRef(); + if( mConnect ) mConnect->DecRef(); + } + + FbxPropertyInfo* mInfo; + FbxPropertyValue* mValue; + FbxPropertyConnect* mConnect; + FbxInt mParentId; + FbxPropertyFlags mFlags; + + FBXSDK_FRIEND_NEW(); + friend class FbxPropertyPage; +}; + +class FBXSDK_DLL FbxPropertyIdGenerator +{ +public: + FbxPropertyIdGenerator() : mRef(0), mNextId(0) {} + + inline FbxInt GetNextId() const { return mNextId; } + inline FbxInt GetNextIdAndInc() { return mNextId++; } + + inline void IncRef() { mRef++; } + inline void DecRef() { mRef--; if( mRef == 0 ) FbxDelete(this); } + +private: + FbxInt mRef, mNextId; +}; + +class FBXSDK_DLL FbxPropertyPage +{ + +public: + FBXSDK_FRIEND_NEW(); + static FbxPropertyPage* Create (FbxPropertyPage* pInstanceOf=0) { return FbxNew< FbxPropertyPage >(pInstanceOf); } + static FbxPropertyPage* Create (const char* pName, FbxPropertyPage* pTypeInfo) { return FbxNew< FbxPropertyPage >(pName,pTypeInfo); } + static FbxPropertyPage* Create (const char* pName, EFbxType pType=eFbxUndefined) { return FbxNew< FbxPropertyPage >(pName,pType); } + void Destroy() { FbxDelete(this); } + + template inline T* GetPropertyItem(const T* pItemType,FbxInt pIndex,FbxPropertyPage **pFoundIn=0) const + { + FbxPropertyPage* lReferencePage = 0; + FbxPropertyEntry* lReferenceEntry = GetPropertyEntry(pIndex,&lReferencePage); + if (pFoundIn) *pFoundIn = 0; + if (lReferenceEntry) { + T* lItem = lReferenceEntry->Get( FBX_TYPE(T) ); + if (lItem) { + if (pFoundIn) *pFoundIn = lReferencePage; + return lItem; + } else { + return lReferencePage->mInstanceOf ? lReferencePage->mInstanceOf->GetPropertyItem(pItemType,pIndex,pFoundIn) : 0 ; + } + } + return 0; + } + + template inline T* ChangePropertyItemState(const T* pItemType, FbxInt pIndex, FbxPropertyFlags::EInheritType pInheritType) + { + FbxPropertyPage* lReferencePage = NULL; + T* lItem = GetPropertyItem(pItemType, pIndex, &lReferencePage); + if( pInheritType == FbxPropertyFlags::eOverride ) + { + if( lReferencePage == this ) + { + return lItem; + } + else if( lItem ) + { + FbxPropertyEntry* lEntry = ChangePropertyEntryState(pIndex, FbxPropertyFlags::eOverride); + lEntry->Set(lItem->Clone(this)); + return lEntry->Get(FBX_TYPE(T)); + } + } + else + { + // can't inherit entries that were created on our page. + bool lOwnEntry = !mInstanceOf || (mInstanceOf->GetPropertyItem(pItemType, pIndex) == NULL); + if( lOwnEntry && FbxPropertyFlags::eInherit == pInheritType) return 0; + + if( lItem && (lReferencePage == this) ) + { + FbxPropertyEntry* lEntry = GetPropertyEntry(pIndex); + lEntry->Set((T*)0); + if( lEntry->IsEmpty() ) + { + ChangePropertyEntryState(pIndex, FbxPropertyFlags::eInherit); + } + } + return 0; + } + return 0; + } + + template FbxPropertyPage* GetFirstPropertyItem(FbxInt pId, const T* pItem) const + { + FbxPropertyPage* lReferencePage = NULL; + GetPropertyItem(FBX_TYPE(T), pId, &lReferencePage); + if( lReferencePage && lReferencePage->mInstanceOf ) + { + FbxPropertyPage* lReferencePage2 = lReferencePage->mInstanceOf->GetFirstPropertyItem(pId, pItem); + return lReferencePage2 ? lReferencePage2 : lReferencePage; + } + return lReferencePage; + } + + const char* GetName(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) + { + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); + return lPropertyInfo ? ((const char*)lPropertyInfo->GetName()) : ""; + } + + const char* GetLabel(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) + { + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); + return lPropertyInfo ? ((const char*)lPropertyInfo->GetLabel()) : ""; + } + + bool SetLabel(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT, const char* pLabel="") + { + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); + // Don't make it writeable (Keep it shared) + if (lPropertyInfo) { + lPropertyInfo->SetLabel(pLabel); + return true; + } else { + return false; + } + } + + void* GetUserData(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) + { + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); + return lPropertyInfo ? lPropertyInfo->GetUserData() : 0; + } + + bool SetUserData(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT, const void* pUserData=0) + { + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); + // Don't make it writeable (Keep it shared) + if (lPropertyInfo) { + lPropertyInfo->SetUserData(pUserData); + return true; + } else { + return false; + } + } + + int GetUserTag(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) + { + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); + return lPropertyInfo ? lPropertyInfo->GetUserTag() : 0; + } + + bool SetUserTag(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT,int pUserTag=0) + { + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); + // Don't make it writeable (Keep it shared) + if (lPropertyInfo) { + lPropertyInfo->SetUserTag(pUserTag); + return true; + } else { + return false; + } + } + + EFbxType GetType(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const + { + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); + return lPropertyInfo ? lPropertyInfo->GetType() : eFbxUndefined; + } + + FbxInt GetParent(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const + { + FbxPropertyEntry* lPropertyEntry = GetPropertyEntry( pId ); + return lPropertyEntry ? lPropertyEntry->GetParentId() : FBXSDK_PROPERTY_ID_NULL; + } + + FbxPropertyPage* GetTypeInfo(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) + { + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); + return lPropertyInfo ? lPropertyInfo->GetTypeInfo() : 0; + } + FbxInt Add(FbxInt pParentId, const char* pName, EFbxType pType) + { + return Add(pParentId,FbxPropertyInfo::Create(pName,pType),FbxPropertyValue::Create(0,pType),0); + } + FbxInt Add(FbxInt pParentId, const char* pName, FbxPropertyPage* pTypeInfo) + { + return Add(pParentId,FbxPropertyInfo::Create(pName,pTypeInfo),FbxPropertyValue::Create(0,pTypeInfo->GetType()),0); + } + + inline bool Reparent( FbxInt /*pChildId*/, FbxInt /*pNewParentId*/ ) + { + // Not implemented. + /* + if( GetParent(pChildId) != pNewParentId && pChildId < mEntries.GetCount() ) + { + FbxPropertyEntry* lChildEntry = mEntries[pChildId]; + lChildEntry->mParentId = pNewParentId; + + //@@@@@ TODO: propagate to instances + + return true; + } + */ + return false; + } + + inline bool IsChildOf(FbxInt pId,FbxInt pParentId) const + { + return GetParent(pId)==pParentId; + + } + + inline bool IsDescendentOf(FbxInt pId,FbxInt pAncestorId) const + { + if (pAncestorId>0) { + FbxInt lParentId = GetParent(pId); + while (lParentId != FBXSDK_PROPERTY_ID_NULL ) { + if (lParentId==pAncestorId) { + return true; + } + lParentId = GetParent(lParentId); + } + return false; + } else { + return true; + } + + } + + //#define PROPERTY_PAGE_SANITY_CHECK // Debug purpose only. Never enable it in a production release. + + /** Retrieves the first child property id of a specified property id. + * \param pParentId The specified property id + * \return the first child property id + */ + FbxInt GetChild(FbxInt pParentId=FBXSDK_PROPERTY_ID_ROOT) const + { + #ifdef PROPERTY_PAGE_SANITY_CHECK + FbxInt ret0 = FBXSDK_PROPERTY_ID_NULL; + if (pParentId!=FBXSDK_PROPERTY_ID_NULL) { + FbxInt lId = GetMinimumPropertyId(pParentId); + FbxInt lParentId = GetParent(lId); + const FbxInt lLastId = GetPropertyEntryCount(); + + while (lIdGetParentId() != pParentId); + ret1 = lId; + } + #ifdef PROPERTY_PAGE_SANITY_CHECK + FBX_ASSERT(ret0==ret1); + #endif + return ret1; + } + + /** Retrieves the next sibling property id of a specified property id. + * \param pId The specified property id + * \return the next sibling property id + */ + FbxInt GetSibling(FbxInt pId) const + { + #ifdef PROPERTY_PAGE_SANITY_CHECK + FbxInt pIdBackup = pId; + FbxInt ret0 = FBXSDK_PROPERTY_ID_NULL; + if (pId!=FBXSDK_PROPERTY_ID_NULL) { + FbxInt lReferenceParentId = GetParent(pId); + FbxInt lParentId = GetParent(++pId); + const FbxInt lLastId = GetPropertyEntryCount(); + + while (pIdGetParentId() != lReferenceParentId); + + ret1 = pId; + } + } + + #ifdef PROPERTY_PAGE_SANITY_CHECK + FBX_ASSERT(ret0==ret1); + #endif + return ret1; + } + + /** Retrieves the first descendent property id of a specified property id. + * \param pAnscestorId The specified property id + * \return the first descendent property id + */ + FbxInt GetFirstDescendent(FbxInt pAnscestorId=FBXSDK_PROPERTY_ID_ROOT) const + { + #ifdef PROPERTY_PAGE_SANITY_CHECK + FbxInt ret0 = FBXSDK_PROPERTY_ID_NULL; + if (pAnscestorId!=FBXSDK_PROPERTY_ID_NULL) { + FbxInt lId = GetMinimumPropertyId(pAnscestorId); + FbxInt lParentId = GetParent(lId); + const FbxInt lLastId = GetPropertyEntryCount(); + + while (lIdGetParentId() != FBXSDK_PROPERTY_ID_NULL && IsDescendentOf(lId, pAnscestorId)) + { + ret1 = lId; + break; + } + } + } + + #ifdef PROPERTY_PAGE_SANITY_CHECK + FBX_ASSERT(ret0==ret1); + #endif + return ret1; + } + + /** Retrieves the next descendent property id of a specified property id, with given a descendent property id. + * \param pAnscestorId The specified property id + * \param pId The descendent property id + * \return the next descendent property id + */ + FbxInt GetNextDescendent(FbxInt pAnscestorId, FbxInt pId) const + { + #ifdef PROPERTY_PAGE_SANITY_CHECK + FbxInt pIdBackup = pId; + FbxInt ret0 = FBXSDK_PROPERTY_ID_NULL; + if (pId!=FBXSDK_PROPERTY_ID_NULL) { + FbxInt lParentId = GetParent(++pId); + const FbxInt lLastId = GetPropertyEntryCount(); + + while (pIdGetParentId() != FBXSDK_PROPERTY_ID_NULL && IsDescendentOf(pId, pAnscestorId) ) + { + ret1 = pId; + break; + } + } + + } + #ifdef PROPERTY_PAGE_SANITY_CHECK + FBX_ASSERT(ret0==ret1); + #endif + return ret1; + + } + + FbxInt FastFind (FbxInt pId, const char* pName, FbxPropertyPage* pTypeInfo, bool pCaseSensitive) + { + FbxInt lId = FBXSDK_PROPERTY_ID_NULL; + + bool lSlowQuery = true; + if( mNameMap.mSecond.GetSize() > 0 ) + { + lSlowQuery = false; + // try to use the map if we've got it + NameMap::RecordType* lIterator = mNameMap.mSecond.Find( FbxNameMapKey( pId, pName ) ); + if( !lIterator ) + { + lId = FBXSDK_PROPERTY_ID_NULL; + } + else + { + lId = lIterator->GetValue(); + if (lId != FBXSDK_PROPERTY_ID_NULL && pTypeInfo) + { + lSlowQuery = true; + + // Try to match types. + // If they are mismatched, fall back to the slow query, + // since we might have multiple property with the same name but different types + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo), lId ); + if (lPropertyInfo) + { + FbxPropertyPage* lTypeInfo2 = lPropertyInfo->GetTypeInfo(); + if ( lTypeInfo2 && lTypeInfo2->Is(pTypeInfo) ) + { + lSlowQuery = false; + } + } + } + } + } + + if (!lSlowQuery) + return lId; + + // fall back if there's no map or we got one with a different type + + lId = GetChild(pId); + FbxStringSymbol lSearchSymbol( pName ); + while( lId != FBXSDK_PROPERTY_ID_NULL ) { + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo), lId ); + if ( (!pTypeInfo || lPropertyInfo->GetTypeInfo()->Is(pTypeInfo)) && + ((!pCaseSensitive && FBXSDK_stricmp(lPropertyInfo->GetName(),pName)==0) || + (pCaseSensitive && lPropertyInfo->GetName() == lSearchSymbol)) ) { + return lId; + } + lId = GetSibling(lId); + } + + return FBXSDK_PROPERTY_ID_NULL; + } + + FbxInt Find (FbxInt pId, const char* pName, FbxPropertyPage* pTypeInfo, bool pCaseSensitive, const char* pChildrenSeparators ) + { + if (pChildrenSeparators) + { + FbxInt lId; + size_t lFoundIndex = strcspn(pName,pChildrenSeparators); + + // Strip the first part of the name and search + if (lFoundIndexAddEnumValue(pStringValue) : - 1; + } + + void InsertEnumValue(FbxInt pId, int pIndex, const char* pStringValue) + { + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); + // Don't make it writeable (Keep it shared) + if (lPropertyInfo) lPropertyInfo->InsertEnumValue(pIndex,pStringValue); + } + + int GetEnumCount(FbxInt pId) + { + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); + // Don't make it writeable (Keep it shared) + return lPropertyInfo ? lPropertyInfo->GetEnumCount() : 0; + } + + void SetEnumValue(FbxInt pId, int pIndex, const char* pStringValue) + { + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); + // Don't make it writeable (Keep it shared) + if (lPropertyInfo) lPropertyInfo->SetEnumValue(pIndex,pStringValue); + } + + void RemoveEnumValue(FbxInt pId, int pIndex) + { + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); + // Don't make it writeable (Keep it shared) + if (lPropertyInfo) lPropertyInfo->RemoveEnumValue(pIndex); + } + + char* GetEnumValue(FbxInt pId,int pIndex) + { + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); + return lPropertyInfo ? lPropertyInfo->GetEnumValue(pIndex) : (char*)""; + } + + // Connection + // --------------------------------- + void ClearConnectCache(FbxInt pId) + { + FbxPropertyPage* lReferencePage = 0; + FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); + + // Connections are not considered propagated so + // make sure that we own the FbxPropertyConnect objects + if (lPropertyConnect) { + lPropertyConnect->ClearConnectCache(); + } + } + + void WipeAllConnections(FbxInt pId) + { + FbxPropertyPage* lReferencePage = 0; + FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); + + if (lPropertyConnect) { + lPropertyConnect->WipeAllConnections(); + } + } + + bool ConnectSrc(FbxInt pDstId, FbxPropertyPage* pSrcPage, FbxInt pSrcId, FbxConnection::EType pType) + { + FbxPropertyEntry* lDstEntry = ChangePropertyEntryState(pDstId,FbxPropertyFlags::eOverride); + FbxPropertyEntry* lSrcEntry = pSrcPage->ChangePropertyEntryState(pSrcId,FbxPropertyFlags::eOverride); + FbxPropertyConnect* lDstConnect= lDstEntry->Get( FBX_TYPE(FbxPropertyConnect) ); + FbxPropertyConnect* lSrcConnect= lSrcEntry->Get( FBX_TYPE(FbxPropertyConnect) ); + + // Make sure we have a connection point on both sides of the connection + if (!lDstConnect) { + lDstConnect = FbxPropertyConnect::Create( this,pDstId ); + lDstEntry->Set( lDstConnect ); + } + if (!lSrcConnect) { + lSrcConnect = FbxPropertyConnect::Create( pSrcPage,pSrcId ); + lSrcEntry->Set( lSrcConnect ); + } + + // Must @@@@@@@ Propagate to inherited children + return lDstConnect->ConnectSrc(lSrcConnect,pType); + + } + + bool DisconnectSrc(FbxInt pDstId,FbxPropertyPage* pSrcPage,FbxInt pSrcId) + { + FbxPropertyPage* lDstReferencePage = 0; + FbxPropertyConnect* lDstConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pDstId,&lDstReferencePage ); + FbxPropertyPage* lSrcReferencePage = 0; + FbxPropertyConnect* lSrcConnect = pSrcPage->GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pSrcId,&lSrcReferencePage ); + + // Make sure we have a connection point on both sides of the connection + if (lDstConnect && lSrcConnect && lDstReferencePage==this && lSrcReferencePage==pSrcPage) { + // Must @@@@@@@ Remove unused connections + return lDstConnect->DisconnectSrc(lSrcConnect); + } + return false; + } + + bool IsConnectedSrc(FbxInt pDstId, FbxPropertyPage* pSrcPage, FbxInt pSrcId) + { + FbxPropertyPage* lDstReferencePage = 0; + FbxPropertyConnect* lDstConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pDstId,&lDstReferencePage ); + FbxPropertyPage* lSrcReferencePage = 0; + FbxPropertyConnect* lSrcConnect = pSrcPage->GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pSrcId,&lSrcReferencePage ); + + // Make sure we have a connection point on both sides of the connection + if (lDstConnect && lSrcConnect && lDstReferencePage==this && lSrcReferencePage==pSrcPage) { + // Must @@@@@@@ Remove unused connections + return lDstConnect->IsConnectedSrc(lSrcConnect); + } + return false; + } + + int GetSrcCount(FbxInt pId, FbxConnectionPointFilter* pFilter) + { + FbxPropertyPage* lReferencePage = 0; + FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); + + // Connections are not considered propagated so + // make sure that we own the FbxPropertyConnect objects + return (lPropertyConnect && lReferencePage==this) ? lPropertyConnect->GetSrcCount(pFilter) : 0; + } + + bool GetSrc(FbxInt pId, int pIndex, FbxConnectionPointFilter* pFilter, FbxPropertyPage** pSrcPage, FbxInt* pSrcId) + { + FbxPropertyPage* lReferencePage = 0; + FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); + + // Connections are always overridden + // make sure that we own the FbxPropertyConnect Item + if (lPropertyConnect && lReferencePage==this) + { + FbxPropertyConnect* lSrc = lPropertyConnect->GetSrc(pFilter,pIndex); + if (lSrc) + { + if (pSrcPage) *pSrcPage = lSrc->GetPage(); + if (pSrcId) *pSrcId = lSrc->GetPropertyId(); + return true; + } + } + return false; + } + + bool ConnectDst(FbxInt pSrcId, FbxPropertyPage* pDstPage, FbxInt pDstId, FbxConnection::EType pType) + { + return pDstPage->ConnectSrc(pDstId,this,pSrcId,pType); + } + + bool DisconnectDst(FbxInt pSrcId, FbxPropertyPage* pDstPage, FbxInt pDstId) + { + return pDstPage->DisconnectSrc(pDstId,this,pSrcId); + } + + bool IsConnectedDst(FbxInt pSrcId, FbxPropertyPage* pDstPage, FbxInt pDstId) + { + return pDstPage->IsConnectedSrc(pDstId,this,pSrcId); + } + + int GetDstCount(FbxInt pId, FbxConnectionPointFilter* pFilter) + { + FbxPropertyPage* lReferencePage = 0; + FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); + + // Connections are not considered propagated so + // make sure that we own the FbxPropertyConnect objects + return (lPropertyConnect && lReferencePage==this) ? lPropertyConnect->GetDstCount(pFilter) : 0; + } + + bool GetDst(FbxInt pId, int pIndex, FbxConnectionPointFilter* pFilter, FbxPropertyPage** pDstPage, FbxInt* pDstId) + { + FbxPropertyPage* lReferencePage = 0; + FbxPropertyConnect* lPropertyConnect = GetPropertyItem( FBX_TYPE(FbxPropertyConnect),pId,&lReferencePage ); + + // Connections are always overridden + // make sure that we own the FbxPropertyConnect Item + if (lPropertyConnect && lReferencePage==this) + { + FbxPropertyConnect* lDst = lPropertyConnect->GetDst(pFilter,pIndex); + if (lDst) + { + if (pDstPage) *pDstPage = lDst->GetPage(); + if (pDstId) *pDstId = lDst->GetPropertyId(); + return true; + } + } + return false; + } + + // Min and Max + // --------------------------------- + enum EValueIndex { eValueMin,eValueSoftMin,eValueMax,eValueSoftMax,eValueCount }; + + bool HasMinMax(FbxInt pId, FbxPropertyInfo::EValueIndex pValueId) const + { + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); + + return lPropertyInfo ? lPropertyInfo->HasMinMax(pValueId) : false; + } + + bool GetMinMax(FbxInt pId, FbxPropertyInfo::EValueIndex pValueId, void* pValue, EFbxType pValueType) + { + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); + // Don't make it writeable (Keep it shared) + return lPropertyInfo ? lPropertyInfo->GetMinMax(pValueId,pValue,pValueType) : false; + } + + bool SetMinMax(FbxInt pId, FbxPropertyInfo::EValueIndex pValueId, const void* pValue, EFbxType pValueType) + { + FbxPropertyInfo* lPropertyInfo = GetPropertyItem( FBX_TYPE(FbxPropertyInfo),pId ); + // Don't make it writeable (Keep it shared) + return lPropertyInfo ? lPropertyInfo->SetMinMax(pValueId,pValue,pValueType) : false; + } + + // Value + // --------------------------------- + bool Get(FbxInt pId, void* pValue, EFbxType pValueType) + { + FbxPropertyValue* lPropertyValue = GetPropertyItem( FBX_TYPE(FbxPropertyValue),pId ); + return lPropertyValue ? lPropertyValue->Get(pValue,pValueType) : 0; + } + + bool Set(FbxInt pId, const void* pValue, EFbxType pValueType, bool pCheckValueEquality) + { + if( pCheckValueEquality ) + { + FbxPropertyPage* lReferencePage = NULL; + FbxPropertyValue* lPropertyValue = GetPropertyItem( FBX_TYPE(FbxPropertyValue),pId,&lReferencePage ); + void* lCurrentValue = FbxTypeAllocate( pValueType ); + bool lValuesEqual = false; + bool lValueChanged = false; + if( lReferencePage && lReferencePage != this ) + { + // this page inherits, so check if we have to override the value. + if( lPropertyValue ) + { + lPropertyValue->Get( lCurrentValue, pValueType ); + lValuesEqual = FbxTypeCompare( pValue, lCurrentValue, pValueType ); + } + } + else + { + FbxPropertyPage* lReferencePage2 = NULL; + FbxPropertyValue* lPropertyValue2 = mInstanceOf ? mInstanceOf->GetPropertyItem( FBX_TYPE(FbxPropertyValue),pId,&lReferencePage2 ) : NULL; + if( lReferencePage2 && lPropertyValue2 ) + { + // this page is an override, but there is another page before us that overrides the value + lPropertyValue2->Get( lCurrentValue, pValueType ); + lValuesEqual = FbxTypeCompare( pValue, lCurrentValue, pValueType ); + + if( lValuesEqual ) + { + ChangePropertyItemState( FBX_TYPE(FbxPropertyValue), pId, FbxPropertyFlags::eInherit ); + lValueChanged = true; + } + + } + // else this page is the originator of the property, so no need to check, + } + + FbxTypeDeallocate(pValueType, lCurrentValue); + lCurrentValue = NULL; + + if( lValuesEqual ) + return lValueChanged; + } + + FbxPropertyValue* lPropertyValue = ChangePropertyItemState( FBX_TYPE(FbxPropertyValue),pId,FbxPropertyFlags::eOverride ); + return lPropertyValue ? lPropertyValue->Set(pValue,pValueType) : false; + } + + inline FbxPropertyFlags::EInheritType GetValueInherit(FbxInt pId, bool pCheckInstanceOf) const + { + FbxPropertyPage* lReferencePage = NULL; + GetPropertyItem(FBX_TYPE(FbxPropertyValue), pId, &lReferencePage); + + // check one level + if( !pCheckInstanceOf ) + { + return lReferencePage == this ? FbxPropertyFlags::eOverride : FbxPropertyFlags::eInherit; + } + else + { + if( lReferencePage == this ) return FbxPropertyFlags::eOverride; // this page is either an override, or the originator + else if( !lReferencePage->mInstanceOf ) return FbxPropertyFlags::eInherit; // the reference is the class root, so we must be inheriting + + // The reference page is not the class root, might be another override, or the originator. + FbxPropertyValue* lPropertyValue = lReferencePage->mInstanceOf->GetPropertyItem( FBX_TYPE(FbxPropertyValue), pId ); + + // if lReferencePage->mInstanceOf has the property value, + // lReferencePage is an override + // else + // its the originator, so this page inherits from it. + return lPropertyValue ? FbxPropertyFlags::eOverride : FbxPropertyFlags::eInherit; + } + } + + inline bool SetValueInherit(FbxInt pId, FbxPropertyFlags::EInheritType pType) + { + // no support for this mode yet + if( FbxPropertyFlags::eDeleted == pType ) + return false; + + ChangePropertyItemState( FBX_TYPE(FbxPropertyValue), pId, pType ); + + // Above call doesn't return error codes, so just check that we match types. + return GetValueInherit(pId, false) == pType; + } + + inline bool GetDefaultValue(FbxInt pId, void* pValue, EFbxType pValueType) const + { + FbxPropertyPage* lReferencePage = GetFirstPropertyItem( pId, FBX_TYPE(FbxPropertyValue) ); + FbxPropertyValue* lPropertyValue = lReferencePage ? lReferencePage->GetPropertyItem( FBX_TYPE(FbxPropertyValue), pId ) : NULL; + + return lPropertyValue ? lPropertyValue->Get( pValue, pValueType ) : false; + } + + + // useful set and get functions + template inline bool Set( FbxInt pId, const T& pValue ) { return Set( pId,&pValue,FbxTypeOf(pValue),true ); } + template inline T Get( FbxInt pId, const T* pFBX_TYPE) { T lValue; Get( pId,&lValue,FbxTypeOf(lValue) ); return lValue; } + + + void SetDataPtr(void* pDataPtr) { mDataPtr = pDataPtr; } + void* GetDataPtr() const { return mDataPtr; } + + // Instance and override management + // ------------------------------------------ + void PushPropertiesToParentInstance() + { + if (mInstanceOf) { + const int lCount = GetPropertyEntryCount(); + // push the existing properties into the parent + // ---------------------------------------------- + for( int i = 0; i < lCount; ++i ) + { + FbxPropertyEntry* lParentEntry = mInstanceOf->ChangePropertyEntryState( (FbxInt)i,FbxPropertyFlags::eOverride ); + FbxPropertyEntry* lEntry = GetPropertyEntry( (FbxInt)i ); + + if( !lParentEntry ) + { + lParentEntry = FbxPropertyEntry::Create( lEntry->GetParentId(), 0, 0, 0 ); + mInstanceOf->mEntryMap.Insert( i, lParentEntry ); + + //mInstanceOf->AddChild(i); + + } + + FBX_ASSERT( lParentEntry ); + + // Add it to the parent + // Don't touch the connections + // ----------------------------------------- + if (lParentEntry) { + lParentEntry->Set( lEntry->Get(FBX_TYPE(FbxPropertyInfo)) ); + lParentEntry->Set( lEntry->Get(FBX_TYPE(FbxPropertyValue)) ); + lParentEntry->Set( lEntry->Get(FBX_TYPE(FbxPropertyFlags)) ); + } + + /* + else { + mInstanceOf->Add( + lEntry->GetParentId(), + lEntry->Get(FBX_TYPE(FbxPropertyInfo)), // The info + lEntry->Get(FBX_TYPE(FbxPropertyValue)), // The Value + 0, // The connections + false, + false + ); + } + */ + + // Empty the current entry + // Don't touch the connections + // ----------------------------------------- + ChangePropertyItemState(FBX_TYPE(FbxPropertyInfo), i,FbxPropertyFlags::eInherit); + ChangePropertyItemState(FBX_TYPE(FbxPropertyValue), i,FbxPropertyFlags::eInherit); + ChangePropertyItemState(FBX_TYPE(FbxPropertyFlags), i,FbxPropertyFlags::eInherit); + } + } + } + + inline const FbxPropertyPage* GetInstanceOf() const { return mInstanceOf; } + inline FbxPropertyPage* GetInstanceOf() { return mInstanceOf; } + + inline const FbxArray& GetInstances() const { return mInstances; } + inline FbxArray& GetInstances() { return mInstances; } + + + // Flags + // ------------------------------------------ + FbxPropertyFlags::EFlags GetFlags(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const + { + FbxPropertyPage* lFoundIn = NULL; + FbxPropertyFlags* lPropertyFlags = GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId, &lFoundIn ); + FbxPropertyFlags::EFlags lFlags = FbxPropertyFlags::eNone; + + if( lPropertyFlags ) + { + if( !mInstanceOf ) // no inheritance. + lFlags = lPropertyFlags->GetFlags(); + else + { + lFlags = mInstanceOf->GetFlags(pId); + lFlags = lPropertyFlags->GetMergedFlags(lFlags); + } + } + return lFlags; + } + + bool ModifyFlags(FbxInt pId=FBXSDK_PROPERTY_ID_ROOT,FbxPropertyFlags::EFlags pFlags=FbxPropertyFlags::eNone,bool pValue=true,bool pCheckFlagEquality=true) + { + if( pCheckFlagEquality ) + { + FbxPropertyPage* lFoundIn = NULL; + FbxPropertyFlags* lFlag = GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId, &lFoundIn ); + + if( lFlag ) + { + if( lFoundIn == this ) + { + // set them in us. + lFlag->ModifyFlags( pFlags, pValue ); + + // we override this entry, check if we need to revert + FbxPropertyFlags* lInheritedFlags = mInstanceOf ? mInstanceOf->GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId ) : NULL; + if( lInheritedFlags && lInheritedFlags->Equal( *lFlag, pFlags ) ) + { + lFlag->UnsetMask( pFlags ); + + if( lFlag->GetMask() == 0 ) + ChangePropertyItemState( FBX_TYPE(FbxPropertyFlags), pId, FbxPropertyFlags::eInherit ); + + return true; + } + } + else + { + // its not us. Just check if we need to set. + FbxPropertyFlags lNewValues( pFlags ); + if( lFlag->Equal( lNewValues, pFlags ) ) + return true; + } + } + } + + FbxPropertyFlags* lPropertyFlags = ChangePropertyItemState(FBX_TYPE(FbxPropertyFlags), pId, FbxPropertyFlags::eOverride); + return lPropertyFlags ? lPropertyFlags->ModifyFlags( pFlags, pValue ) : false; + } + + FbxPropertyFlags::EInheritType GetFlagsInheritType(FbxPropertyFlags::EFlags pFlags, bool pCheckInstanceOf, FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) const + { + FbxPropertyPage* lFoundIn = NULL; + FbxPropertyFlags* lPropertyFlags = GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId, &lFoundIn ); + + if( !pCheckInstanceOf ) + return lFoundIn != this ? FbxPropertyFlags::eInherit : ( lPropertyFlags ? lPropertyFlags->GetFlagsInheritType(pFlags) : FbxPropertyFlags::eInherit ); + else + { + // This code basically counts the number of overrides for the + // given flags. The original entry is always considered an override. + // so if we see more than one, something overrode the original. + // and thus we are an override. + FbxPropertyPage* lRefPage = lFoundIn; + bool lFoundOverride = false; + while( lRefPage ) + { + lPropertyFlags = lRefPage->GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId ); + + if( !lPropertyFlags ) + break; // gone too far, break. + + if( lPropertyFlags->GetFlagsInheritType( pFlags ) == FbxPropertyFlags::eOverride ) + { + if( this == lRefPage || lFoundOverride ) + return FbxPropertyFlags::eOverride; // found two overrides or this page is the override. + else + lFoundOverride = true; // signal that we found the first override. + } + lRefPage = lRefPage->mInstanceOf; + } + + return FbxPropertyFlags::eInherit; + } + } + + bool SetFlagsInheritType(FbxPropertyFlags::EInheritType pInheritType, FbxPropertyFlags::EFlags pFlags, FbxInt pId=FBXSDK_PROPERTY_ID_ROOT) + { + FbxPropertyPage* lFoundIn = NULL; + FbxPropertyFlags* lPropertyFlags = NULL; + + if( FbxPropertyFlags::eOverride == pInheritType ) + { + lPropertyFlags = ChangePropertyItemState( FBX_TYPE(FbxPropertyFlags), pId, FbxPropertyFlags::eOverride ); + + // we should initialize our flag to the inherited value, if any. + FbxPropertyFlags* lParentFlags = mInstanceOf ? mInstanceOf->GetPropertyItem( FBX_TYPE(FbxPropertyFlags), pId ) : NULL; + if( lParentFlags && lPropertyFlags ) + { + FbxPropertyFlags::EFlags lParentValues = lParentFlags->GetFlags(); + lPropertyFlags->SetFlags( pFlags, lParentValues ); + return lPropertyFlags->SetMask( pFlags ); + } + + return false; + } + else if( FbxPropertyFlags::eInherit == pInheritType ) + { + lPropertyFlags = GetPropertyItem(FBX_TYPE(FbxPropertyFlags), pId, &lFoundIn); + if( !lPropertyFlags ) return false; + if( lFoundIn != this ) return true; // not us + lPropertyFlags->UnsetMask( pFlags ); + if( lPropertyFlags->GetMask() == 0 ) // revert + ChangePropertyItemState( FBX_TYPE(FbxPropertyFlags), pId, FbxPropertyFlags::eInherit ); + + return true; + } + return false; + } + + inline void BeginCreateOrFindProperty() + { + if( 0 == mNameMap.mFirst ) + { + mNameMap.mSecond.Reserve(20); + + // push the existing properties into the map. Note: this includes the root property! + FbxInt lFoundId = FBXSDK_PROPERTY_ID_ROOT; + FbxPropertyEntry* lEntry = GetPropertyEntry(lFoundId); + while(lFoundId != FBXSDK_PROPERTY_ID_NULL) + { + FbxPropertyInfo* lInfo = lEntry->Get(FBX_TYPE(FbxPropertyInfo)); + //FBX_ASSERT( lInfo ); + if (lInfo) + { + mNameMap.mSecond.Insert(FbxNameMapKey(lEntry->GetParentId(), lInfo->GetName()), lFoundId); + } + lFoundId = GetMinimumPropertyIdAndEntry(lFoundId, &lEntry); + } + mNameMap.mFirst++; + } + } + + inline void EndCreateOrFindProperty() + { + if( mNameMap.mFirst > 0 ) + { + if( --(mNameMap.mFirst) == 0 ) + mNameMap.mSecond.Clear(); + } + } + +protected: + FbxPropertyPage(FbxPropertyPage* pInstanceOf=0) + : mInstanceOf(0) + , mDataPtr(0) + , mPropNextId(0) + { + mEntryMap.Reserve(32); + mNameMap.mFirst = 0; + + // instances don't need to create a root property + if( !pInstanceOf ) + { + mPropNextId = FbxNew< FbxPropertyIdGenerator >(); + mPropNextId->IncRef(); + + // First item is the root information + Add(FBXSDK_PROPERTY_ID_NULL,"",eFbxUndefined); + } + + // Hook the instances + // ------------------------ + mInstanceOf = pInstanceOf; + if (mInstanceOf) { + mInstanceOf->mInstances.Add(this); + + mPropNextId = mInstanceOf->mPropNextId; + mPropNextId->IncRef(); + } + } + FbxPropertyPage(const char* pName, EFbxType pType) + : mInstanceOf(0) + , mDataPtr(0) + , mPropNextId(0) + { + mEntryMap.Reserve(32); + mNameMap.mFirst = 0; + + mPropNextId = FbxNew< FbxPropertyIdGenerator >(); + mPropNextId->IncRef(); + + // First item is the root information + Add(FBXSDK_PROPERTY_ID_NULL,pName,pType); + } + FbxPropertyPage(const char* pName, FbxPropertyPage* pTypeInfo) + : mInstanceOf(0) + , mDataPtr(0) + , mPropNextId(0) + { + mEntryMap.Reserve(32); + mNameMap.mFirst = 0; + + mPropNextId = FbxNew< FbxPropertyIdGenerator >(); + mPropNextId->IncRef(); + + // First item is the root information + Add(FBXSDK_PROPERTY_ID_NULL,pName,pTypeInfo); + } + ~FbxPropertyPage() + { + // Propagate our property entries. + int i = 0, j = 0; + for( i = 0; i < mInstances.GetCount(); ++i ) + { + for( j = 0; j < GetPropertyEntryCount(); ++j ) + { + if( mInstances[i]->ChangePropertyEntryState((FbxInt)j, FbxPropertyFlags::eOverride) ) + { + // Clone the info and values. Don't clone the connections, + // since they aren't propagated. + mInstances[i]->ChangePropertyItemState( FBX_TYPE(FbxPropertyInfo), (FbxInt)j, FbxPropertyFlags::eOverride ); + mInstances[i]->ChangePropertyItemState( FBX_TYPE(FbxPropertyValue), (FbxInt)j, FbxPropertyFlags::eOverride ); + + // Since all entries have their own flags, just override the ones in the instance. + mInstances[i]->SetFlagsInheritType(FbxPropertyFlags::eOverride, FbxPropertyFlags::eAllFlags, (FbxInt)j ); + } + } + + // Instances become their own copies. + mInstances[i]->mInstanceOf = NULL; + } + + FbxMapDestroy(mEntryMap); + + if (mInstanceOf) { + int lIndex = mInstanceOf->mInstances.Find(this); + mInstanceOf->mInstances.SetAt(lIndex, mInstanceOf->mInstances[mInstanceOf->mInstances.GetCount()-1]); + mInstanceOf->mInstances.RemoveAt(mInstanceOf->mInstances.GetCount()-1); + + //mInstanceOf->mInstances.RemoveIt(this); + } + + mPropNextId->DecRef(); + mPropNextId = NULL; + + mInstanceOf = NULL; + mInstances.Clear(); + } + + inline bool Is(FbxPropertyPage* pPage) + { + // @@@@@@@@@@@@@@@ Must complete for sub types + return this==pPage; + } + +// Internal entry management +private: + + /** Retrieves the smallest property id of which are larger than a specified one. + * \param pId The specified property id + * \param pIncrementIfNone Whether it returns FBXSDK_PROPERTY_ID_NULL or pId+1, if not found. + * \return The property id described above. + */ + FbxInt GetMinimumPropertyId(FbxInt pId, bool pIncrementIfNone = true) const + { + if( pId == FBXSDK_PROPERTY_ID_NULL ) + pId = FBXSDK_PROPERTY_ID_ROOT; + + FbxInt lMin = FBXSDK_PROPERTY_ID_NULL; + const EntryMap::RecordType* lElement = mEntryMap.UpperBound(pId); + if (NULL != lElement) + { + lMin = lElement->GetKey(); + } + + FbxInt lParentMin = mInstanceOf ? mInstanceOf->GetMinimumPropertyId(pId,false) : FBXSDK_PROPERTY_ID_NULL; + + bool lParentNull = lParentMin == FBXSDK_PROPERTY_ID_NULL; + bool lMinNull = lMin == FBXSDK_PROPERTY_ID_NULL; + + if( lParentNull && lMinNull ) return pIncrementIfNone ? pId+1 : FBXSDK_PROPERTY_ID_NULL; + else if( lMinNull ) lMin = lParentMin; + else if( !lParentNull ) lMin = lMin < lParentMin ? lMin : lParentMin; + + return lMin; + } + + /** Retrieves the smallest property id of which are larger than a specified one, and retrieve its entry. + * \param pId The specified property id + * \param pEntry The returned property entry + * \return The property id described above. + */ + FbxInt GetMinimumPropertyIdAndEntry(FbxInt pId, FbxPropertyEntry** pEntry) const + { + FbxInt lFoundId = FBXSDK_PROPERTY_ID_NULL; + FbxPropertyEntry* lFoundEntry = NULL; + if( pId == FBXSDK_PROPERTY_ID_NULL ) + pId = FBXSDK_PROPERTY_ID_ROOT; + + const EntryMap::RecordType* lElement = mEntryMap.UpperBound(pId); + if (NULL != lElement) + { + lFoundId = lElement->GetKey(); + lFoundEntry = lElement->GetValue(); + } + + FbxPropertyEntry* lParentEntry = NULL; + FbxInt lParentMin = mInstanceOf ? mInstanceOf->GetMinimumPropertyIdAndEntry(pId, &lParentEntry) : FBXSDK_PROPERTY_ID_NULL; + + bool lParentNull = lParentMin == FBXSDK_PROPERTY_ID_NULL; + bool lMinNull = lFoundId == FBXSDK_PROPERTY_ID_NULL; + + if( lMinNull && !lParentNull ) + { + lFoundId = lParentMin; + lFoundEntry = lParentEntry; + } + else if( !lMinNull && !lParentNull ) + { + lFoundId = lFoundId < lParentMin ? lFoundId : lParentMin; + lFoundEntry = lFoundId < lParentMin ? lFoundEntry : lParentEntry; + } + + if (pEntry) + *pEntry = lFoundEntry; + return lFoundId; + } + + int GetPropertyEntryCount() const + { + int lCount = 0; + const EntryMap::RecordType* lElement = mEntryMap.Maximum(); + + if (NULL != lElement) + { + lCount = lElement->GetKey() + 1; + } + + int lParentCount = mInstanceOf ? mInstanceOf->GetPropertyEntryCount() : 0; + return lParentCount > lCount ? lParentCount : lCount; + } + + FbxPropertyEntry* GetPropertyEntry(FbxInt pIndex,FbxPropertyPage **pFoundIn=0) const + { + const EntryMap::RecordType* lElement = mEntryMap.Find(pIndex); + if (NULL != lElement) + { + if( pFoundIn ) + { + *pFoundIn = const_cast(this); + } + return lElement->GetValue(); + } + + if( pFoundIn ) + { + *pFoundIn = 0; + } + + return mInstanceOf ? mInstanceOf->GetPropertyEntry(pIndex,pFoundIn) : 0; + } + + FbxPropertyEntry* ChangePropertyEntryState(FbxInt pIndex,FbxPropertyFlags::EInheritType pInheritType) + { + FbxPropertyPage* lReferencePage = 0; + FbxPropertyEntry* lReferenceEntry = GetPropertyEntry(pIndex,&lReferencePage); + + if (pInheritType==FbxPropertyFlags::eOverride) { + if (lReferencePage==this) { + return lReferenceEntry; + } else if (lReferenceEntry) { + // must create an entry + FbxPropertyEntry* lEntry = FbxPropertyEntry::Create(lReferenceEntry->GetParentId(),0,0,0); + mEntryMap.Insert( pIndex, lEntry ); + + return lEntry; + } + } else { + if (lReferenceEntry && (lReferencePage==this)) { + mEntryMap.Remove(pIndex); + lReferenceEntry->Destroy(); + } + } + return 0; + } + + FbxInt Add(FbxInt pParentId,FbxPropertyInfo* pInfo,FbxPropertyValue* pValue,FbxPropertyConnect* pConnect,bool pRecursive=true) + { + FbxInt lId = mPropNextId->GetNextIdAndInc(); + FbxPropertyEntry* lEntry = FbxPropertyEntry::Create(pParentId,pInfo,pValue,pConnect); + + // entries created through Add() are not overrides of another entry. + // Thus, set all of their flags by default. + FbxPropertyFlags* lFlags = lEntry->Get( FBX_TYPE(FbxPropertyFlags) ); + if( lFlags ) lFlags->ModifyFlags( FbxPropertyFlags::eAllFlags, false ); + + mEntryMap.Insert( lId, lEntry ); + + // We only add to the map if this Add is called after BeginCreateOrFindProperty() + // in which case the size is always > 0 because it includes the root property + if( mNameMap.mSecond.GetSize() > 0 ) + mNameMap.mSecond.Insert( FbxNameMapKey( pParentId, pInfo->GetName()), lId ); + + // If the entry has multiple children(Struct Datatype) + // Recurse for the entries and create an entry in this structure + if (pRecursive) { + FbxPropertyPage* lTypeInfo = pInfo->GetTypeInfo(); + if (lTypeInfo) { + FbxInt lChildId; + lChildId = lTypeInfo->GetChild(); + while (lChildId!=FBXSDK_PROPERTY_ID_NULL) { + FbxPropertyInfo* lPropertyInfo = lTypeInfo->GetPropertyItem( FBX_TYPE(FbxPropertyInfo),lChildId ); + FbxPropertyValue* lPropertyValue = lTypeInfo->GetPropertyItem( FBX_TYPE(FbxPropertyValue),lChildId ); + FbxPropertyConnect* lPropertyConnect = lTypeInfo->GetPropertyItem( FBX_TYPE(FbxPropertyConnect),lChildId ); + + Add ( lId, lPropertyInfo ? lPropertyInfo->Clone(this) : 0 , lPropertyValue ? lPropertyValue->Clone(this) : 0, + lPropertyConnect ? lPropertyConnect->Clone(this) : 0 ); + lChildId = lTypeInfo->GetSibling(lChildId ); + } + } + } + return lId; + } + + // Property management + typedef FbxMap, FbxHungryAllocator> EntryMap; + EntryMap mEntryMap; + + // instance management + FbxPropertyPage* mInstanceOf; + FbxArray mInstances; + + void* mDataPtr; + + // speed up structure + typedef FbxMap NameMap; + typedef FbxPair NameLookupPair; + NameLookupPair mNameMap; + + FbxPropertyIdGenerator* mPropNextId; + + friend class FbxPropertyHandle; +}; + +#include + +#endif /* _FBXSDK_CORE_PROPERTY_PAGE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxpropertytypes.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxpropertytypes.h new file mode 100644 index 00000000..a42e4254 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxpropertytypes.h @@ -0,0 +1,1178 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxpropertytypes.h +#ifndef _FBXSDK_CORE_PROPERTY_TYPES_H_ +#define _FBXSDK_CORE_PROPERTY_TYPES_H_ + +#include + +#include +#include +#include +#include +#include +#include + +#include + +//! Type identifier constants +enum EFbxType +{ + eFbxUndefined, //!< Unidentified. + eFbxChar, //!< 8 bit signed integer. + eFbxUChar, //!< 8 bit unsigned integer. + eFbxShort, //!< 16 bit signed integer. + eFbxUShort, //!< 16 bit unsigned integer. + eFbxUInt, //!< 32 bit unsigned integer. + eFbxLongLong, //!< 64 bit signed integer. + eFbxULongLong, //!< 64 bit unsigned integer. + eFbxHalfFloat, //!< 16 bit floating point. + eFbxBool, //!< Boolean. + eFbxInt, //!< 32 bit signed integer. + eFbxFloat, //!< Floating point value. + eFbxDouble, //!< Double width floating point value. + eFbxDouble2, //!< Vector of two double values. + eFbxDouble3, //!< Vector of three double values. + eFbxDouble4, //!< Vector of four double values. + eFbxDouble4x4, //!< Four vectors of four double values. + eFbxEnum = 17, //!< Enumeration. + eFbxEnumM =-17, //!< Enumeration allowing duplicated items. + eFbxString = 18, //!< String. + eFbxTime, //!< Time value. + eFbxReference, //!< Reference to object or property. + eFbxBlob, //!< Binary data block type. + eFbxDistance, //!< Distance. + eFbxDateTime, //!< Date and time. + eFbxTypeCount = 24 //!< Indicates the number of type identifiers constants. +}; + +/** Class to represent colors in RGBA format using doubles. + * \nosubgrouping + */ +class FBXSDK_DLL FbxColor +{ +public: + //! Constructor. + FbxColor(); + + /** Constructor. + * \param pRed The Red component value. + * \param pGreen The Green component value. + * \param pBlue The Blue component value. + * \param pAlpha The alpha value of the color. + */ + FbxColor(const double pRed, const double pGreen, const double pBlue, const double pAlpha=1.0); + FbxColor(const FbxDouble3& pRGB, const double pAlpha=1.0); + FbxColor(const FbxDouble4& pRGBA); + + //! Destructor. + ~FbxColor(); + + /** Re-initialize the color object with their new values. + * \param pRed The Red component value. + * \param pGreen The Green component value. + * \param pBlue The Blue component value. + * \param pAlpha The alpha value of the color. + */ + void Set(const double pRed, const double pGreen, const double pBlue, const double pAlpha=1.0); + + /** Indicate if all the members in the color objects are within their valid range. + * \return \c true if all the members are within their valid range. + */ + bool IsValid() const; + + /** Accessors. + * \param pIndex The index of the component to access. + * \return The reference to the indexed component. + * \remarks The pIndex parameter is not checked for values out of bounds. + */ + double& operator[](int pIndex); + + /** Accessors. + * \param pIndex The index of the component to access. + * \return The reference to the indexed component. + * \remarks The pIndex parameter is not checked for values out of bounds. + */ + const double& operator[](int pIndex) const; + + /** + * \name Operators + */ + //@{ + /** Assignment operator. + * \param pColor FbxColor to be copied. + */ + FbxColor& operator=(const FbxColor& pColor); + FbxColor& operator=(const FbxDouble3& pColor); + FbxColor& operator=(const FbxDouble4& pColor); + + /** Equality operator. + * \param pColor FbxColor compared with this one. + * \return \c true if equal, \c false if unequal. + */ + bool operator==(const FbxColor& pColor) const; + + /** Inequality operator. + * \param pColor FbxColor compared with this one. + * \return \c true if unequal, \c false if equal. + */ + bool operator!=(const FbxColor& pColor) const; + //@} + + /** + * name Public Members + */ + //@{ + //! Valid range is from 0.0 to 1.0. + double mRed; + + //! Valid range is from 0.0 to 1.0. + double mGreen; + + //! Valid range is from 0.0 to 1.0. + double mBlue; + + //! Valid range is from 0.0 to 1.0. + double mAlpha; + //@} +}; + +/** FBX SDK half-float class. + * Property used to store half-float (16 bit float) number. + * This class only holds the value in 2 byte buffer (unsigned short). There is + * no direct math manipulation of this type except for the conversion to/from + * float. On disk, this type is also saved as an unsigned short. + * \nosubgrouping + */ +class FBXSDK_DLL FbxHalfFloat +{ +public: + /** + *\name Constructors + */ + //@{ + FbxHalfFloat(); + FbxHalfFloat(float pVal); + FbxHalfFloat(const FbxHalfFloat& pVal); + //@} + + /** Assign operator + * \param pValue The half-float to be assigned to this instance. + * \return This half-float. + */ + FbxHalfFloat& operator=(const FbxHalfFloat& pValue); + + /** + * \name boolean operation + */ + //@{ + /** Equivalence operator. + * \param pRHS The half-float to be compared with this one. + * \return \c True, if the two values are equal, \c false otherwise. + */ + bool operator==(const FbxHalfFloat& pRHS) const; + + /** Non-equivalence operator. + * \param pRHS The half-float to be compared with this one + * \return \c True, if the two values are unequal, \c false otherwise. + */ + bool operator!=(const FbxHalfFloat& pRHS) const; + //@} + + /** + * \name Access + */ + //@{ + /** Retrieve the value as a float. + */ + const float value() const; + + /** Retrieve the value as it is stored. + */ + unsigned const short internal_value() const; + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + typedef unsigned short half; + half mValue; + + // we want to extract the mantissa, exponent and sign from the float number. + // by the IEEE 754 binary standard, the float number is divided as: + // sign : 1 bit + // mantissa : 23 bits + // exponent : 8 bits + // exponent bias : 127 + // and the half-float is: + // sing : 1 bit + // mantissa : 10 bits + // exponent : 5 bits + // exponent bias : + + half FtoHF(float *f); + float HFtoF(half h) const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** FBX SDK blob class. + * Uninitialized data of a specified size, to be filled by the user. + * \nosubgrouping + */ +class FBXSDK_DLL FbxBlob +{ +public: + /** + * \name Constructors and Destructor + */ + //@{ + //! Constructor. Set attributes to 0. + FbxBlob(); + + /** Constructor. Construct a buffer with uninitialized data of a specified size, to be filled by the user. + * \param pSize Buffer size. + */ + FbxBlob(int pSize); + + /** Copy constructor. + * \param pRHS The blob to be copied to this blob. + */ + FbxBlob(const FbxBlob& pRHS); + + /** Constructor. + * \param pData The data to be filled in the buffer. + * \param pSize Buffer size. + */ + FbxBlob(const void* pData, int pSize); + + //! Destructor + ~FbxBlob(); + //@} + + /** + * \name Assignment. + */ + //@{ + /** Share the buffer of the specified blob with this blob. + * \param pValue The blob whose buffer is shared with this blob. + * \return This blob. + */ + FbxBlob& operator=(const FbxBlob& pValue); + + /** Copy the data in the buffer. + * \param pData The buffer to be copied data from. + * \param pSize Buffer size. + */ + void Assign(const void* pData, int pSize); // Always makes a copy. + //@} + + /** + * \name Boolean operation + */ + //@{ + /** Equality operator. + * \param pRHS The blob to be compared with this blob. + * \return \c True, if the two blobs are equal, \c false otherwise. + */ + bool operator==(const FbxBlob& pRHS) const; // Compare the contents. + + /** Inequality operator. + * \param pRHS The blob to be compared with this blob. + * \return \c True, if the two blobs are unequal, otherwise false. + */ + bool operator!=(const FbxBlob& pRHS) const; + //@} + + //!Make a copy if the reference count > 1 (i.e. if the buffer is shared). + void* Modify(); + + /** + * \name Access + */ + //@{ + + /** Retrieve the buffer pointer. + * \return The buffer pointer. + */ + const void * Access() const; + + /** Retrieve the buffer size + * \return The buffer size. + */ + int Size() const; + //@} + + //! Free the memory if this blob is the last one to hold it. + void Clear(); + +protected: + int* mRefCount; + void* mData; + int mSize; +}; + +/** FBX SDK date&time class. + * Property used to store date and time information; not related to a FbxTime, which is + * used for film-related operations. + * The date and time property does not make any provisions for UTC, GMT or local + * zones; this is entirely up to client code to know what they are dealing with. + * \nosubgrouping + */ +class FBXSDK_DLL FbxDateTime +{ +public: + /** + *\name Constructors + */ + //@{ + //! Default constructor. Set attributes to 0. + FbxDateTime(); + + /** Constructor. + * \param pDay Day + * \param pMonth Month + * \param pYear Year + * \param pHour Hour + * \param pMin Minute + * \param pSec Second + * \param pMillisecond Millisecond + * \remark If one or more argument is invalid, the object is reset to 0. + */ + FbxDateTime(int pDay, int pMonth, int pYear, int pHour, int pMin, int pSec, int pMillisecond=0); + //@} + + /** + * \name Boolean operation + */ + //@{ + /** Equivalence operator. + *\param pRHS The date&time to be compared with this date&time. + *\return \c True, if the two date&time are equal, \c false otherwise. + */ + bool operator==(const FbxDateTime& pRHS) const; + + /** Non-equivalence operator + *\param pRHS The date&time to be compared with this date&time. + *\return \c True, if the two date&time are not equal, \c false otherwise. + */ + bool operator!=(const FbxDateTime& pRHS) const; + //@} + + //! Set the attributes to 0. + void Clear(); + + /** Validates each field is within a normal range (month is 1-12, etc). + * \return \c True, if each field is within a normal range, \c false otherwise. + */ + bool isValid() const; + + /** + * \name Access + */ + //@{ + /** Set the date. + * \param pDay Day to be set. + * \param pMonth Month to be set. + * \param pYear Year to be set. + * \remark If one or more argument is invalid, the object is reset to 0. + */ + void setDate(int pDay, int pMonth, int pYear); + + /** Set the time. + * \param pHour Hour to be set. + * \param pMin Minute to be set. + * \param pSec Second to be set. + * \param pMillisecond Millisecond to be set. + * \remark If one or more argument is invalid, the object is reset to 0. + */ + void setTime(int pHour, int pMin, int pSec, int pMillisecond = 0); + //@} + + /** + * \name Operation with string + */ + //@{ + /** Get the string format from this date&time. + * \return The string format got from this date&time. + */ + FbxString toString() const; + + /** Get date&time from the string format. + * \return \c True, if get date&time from the string format successfully, \c false otherwise. + * \remarks ! This will only work with the format returned by toString(); if the format + * is not the same will return 'false' and the content of this object will + * remain unchanged. + */ + bool fromString(const char*); + //@} + + /** Get date&time from current date&time of GMT. + * \return The date&time equal to current date&time of GMT. + */ + static FbxDateTime currentDateTimeGMT(); + +private: + FbxShort mMillisecond; // 0-999 + FbxShort mYear; // No check + + FbxChar mMonth; // 1-12 + FbxChar mDay; // 1-31; no check with regards to the month + FbxChar mHour; // 0-23 + FbxChar mMinute; // 0-59 + FbxChar mSecond; // 0-59 +}; + +/** FBX SDK distance class. + * \nosubgrouping + */ +class FBXSDK_DLL FbxDistance +{ +public: + /** + * \name Constructors and Destructor + */ + //@{ + //! Default constructor. + FbxDistance(); + + /** Constructor with default values. + * \param pValue Value of distance using the measurement unit. + * \param pUnit Unit of measurement. + */ + FbxDistance(float pValue, FbxSystemUnit pUnit); + + /** Constructor. + * \param pValue Value of distance using the measurement unit. + * \param pUnit Unit of measurement. + * \remarks This constructor will convert string to FbxSystemUnit. + */ + FbxDistance(float pValue, const char* pUnit); + + //! Destructor. + ~FbxDistance(); + //@} + + /** Assign operator + * \param pValue The distance to be assigned to this distance. + * \return This distance. + */ + FbxDistance& operator=(const FbxDistance& pValue); + + /** + * \name boolean operation + */ + //@{ + /** Equivalence operator. + * \param pRHS The distance to be compared with this distance. + * \return \c True, if the two distances are equal, \c false otherwise. + */ + bool operator==(const FbxDistance& pRHS) const; + + /** Non-equivalence operator. + * \param pRHS The distance to be compared with this distance. + * \return \c True, if the two distances are unequal, \c false otherwise. + */ + bool operator!=(const FbxDistance& pRHS) const; + //@} + + const FbxString unitName() const; + + /** + * \name Access + */ + //@{ + /** Retrieve the measurement unit + * \return The measure unit of the distance. + */ + const FbxSystemUnit unit() const; + + /** Retrieve the distance value + * \return The value of the distance in the defined measurement unit. + */ + const float value() const; + //@} + + /** Get the value of distance when converting this measurement unit to inch. + * \return The value of distance when converting this measurement unit to inch. + */ + const float internalValue() const; + + /** Get the value of distance when converting this measurement unit to the specified measurement unit. + * \param pUnit The measurement unit to be converted to. + * \return The value of distance when using the specified measurement unit. + */ + const float valueAs(const FbxSystemUnit& pUnit) const; + +private: + float mValue; + FbxSystemUnit mUnit; +}; + +/** Retrieve a type enumeration memory footprint size +* \param pType The type enumeration +* \return The size of this type in memory */ +FBXSDK_DLL const size_t FbxTypeSizeOf(const EFbxType pType); + +/** Retrieve a type enumeration component count +* \param pType The type enumeration +* \return The number of component used by this type */ +FBXSDK_DLL const size_t FbxTypeComponentCount(const EFbxType pType); + +// Type management for properties +inline EFbxType FbxTypeOf(const FbxChar&){ return eFbxChar; } +inline EFbxType FbxTypeOf(const FbxUChar&){ return eFbxUChar; } +inline EFbxType FbxTypeOf(const FbxShort&){ return eFbxShort; } +inline EFbxType FbxTypeOf(const FbxUShort&){ return eFbxUShort; } +inline EFbxType FbxTypeOf(const FbxUInt&){ return eFbxUInt; } +inline EFbxType FbxTypeOf(const FbxLongLong&){ return eFbxLongLong; } +inline EFbxType FbxTypeOf(const FbxULongLong&){ return eFbxULongLong; } +inline EFbxType FbxTypeOf(const FbxHalfFloat&){ return eFbxHalfFloat; } +inline EFbxType FbxTypeOf(const FbxBool&){ return eFbxBool; } +inline EFbxType FbxTypeOf(const FbxInt&){ return eFbxInt; } +inline EFbxType FbxTypeOf(const FbxFloat&){ return eFbxFloat; } +inline EFbxType FbxTypeOf(const FbxDouble&){ return eFbxDouble; } +inline EFbxType FbxTypeOf(const FbxDouble2&){ return eFbxDouble2; } +inline EFbxType FbxTypeOf(const FbxDouble3&){ return eFbxDouble3; } +inline EFbxType FbxTypeOf(const FbxDouble4&){ return eFbxDouble4; } +inline EFbxType FbxTypeOf(const FbxDouble4x4&){ return eFbxDouble4x4; } +inline EFbxType FbxTypeOf(const FbxVector2&){ return eFbxDouble2; } +inline EFbxType FbxTypeOf(const FbxVector4&){ return eFbxDouble4; } +inline EFbxType FbxTypeOf(const FbxQuaternion&){ return eFbxDouble4; } +inline EFbxType FbxTypeOf(const FbxMatrix&){ return eFbxDouble4x4; } +inline EFbxType FbxTypeOf(const FbxAMatrix&){ return eFbxDouble4x4; } +inline EFbxType FbxTypeOf(const FbxString&){ return eFbxString; } +inline EFbxType FbxTypeOf(const FbxTime&){ return eFbxTime; } +inline EFbxType FbxTypeOf(const FbxReference&){ return eFbxReference; } +inline EFbxType FbxTypeOf(const FbxBlob&){ return eFbxBlob; } +inline EFbxType FbxTypeOf(const FbxColor&){ return eFbxDouble4; } +inline EFbxType FbxTypeOf(const FbxDistance&){ return eFbxDistance; } +inline EFbxType FbxTypeOf(const FbxDateTime&){ return eFbxDateTime; } + +template inline EFbxType FbxTypeOf(const T&){ FBX_ASSERT_NOW("Unknown type!"); return eFbxUndefined; } + +bool FBXSDK_DLL FbxTypeCopyStr(FbxDouble& pDst, const FbxString& pSrc); +bool FBXSDK_DLL FbxTypeCopyStr(FbxBool& pDst, const FbxString& pSrc); +bool FBXSDK_DLL FbxTypeCopyStr(FbxInt& pDst, const FbxString& pSrc); +bool FBXSDK_DLL FbxTypeCopyStr(FbxChar& pDst, const FbxString& pSrc); +bool FBXSDK_DLL FbxTypeCopyStr(FbxUChar& pDst, const FbxString& pSrc); +bool FBXSDK_DLL FbxTypeCopyStr(FbxShort& pDst, const FbxString& pSrc); +bool FBXSDK_DLL FbxTypeCopyStr(FbxUShort& pDst, const FbxString& pSrc); +bool FBXSDK_DLL FbxTypeCopyStr(FbxUInt& pDst, const FbxString& pSrc); +bool FBXSDK_DLL FbxTypeCopyStr(FbxLongLong& pDst, const FbxString& pSrc); +bool FBXSDK_DLL FbxTypeCopyStr(FbxULongLong& pDst, const FbxString& pSrc); +bool FBXSDK_DLL FbxTypeCopyStr(FbxHalfFloat& pDst, const FbxString& pSrc); + +// Copy types and conversions +template inline bool FbxTypeCopy(T1&, const T2&){ FBX_ASSERT_NOW("Incompatible type assignment!" ); return false; } + +//! Same type conversion +inline bool FbxTypeCopy(FbxChar& pDst, const FbxChar& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxUChar& pDst, const FbxUChar& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxShort& pDst, const FbxShort& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxUShort& pDst, const FbxUShort& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxUInt& pDst, const FbxUInt& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxLongLong& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxULongLong& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxHalfFloat& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxBool& pDst, const FbxBool& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxInt& pDst, const FbxInt& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxFloat& pDst, const FbxFloat& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxDouble2& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxDouble3& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble4& pDst, const FbxDouble4& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble4x4& pDst, const FbxDouble4x4& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxString& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxTime& pDst, const FbxTime& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxReference& pDst, const FbxReference& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxBlob& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxDistance& pDst, const FbxDistance& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxDateTime& pDst, const FbxDateTime& pSrc){ pDst = pSrc; return true; } + +//To FbxBool +inline bool FbxTypeCopy(FbxBool& pDst, const FbxChar& pSrc){ pDst = pSrc == 0 ? false : true; return true; } +inline bool FbxTypeCopy(FbxBool& pDst, const FbxUChar& pSrc){ pDst = pSrc == 0 ? false : true; return true; } +inline bool FbxTypeCopy(FbxBool& pDst, const FbxShort& pSrc){ pDst = pSrc == 0 ? false : true; return true; } +inline bool FbxTypeCopy(FbxBool& pDst, const FbxUShort& pSrc){ pDst = pSrc == 0 ? false : true; return true; } +inline bool FbxTypeCopy(FbxBool& pDst, const FbxUInt& pSrc){ pDst = pSrc == 0 ? false : true; return true; } +inline bool FbxTypeCopy(FbxBool& pDst, const FbxLongLong& pSrc){ pDst = pSrc == 0 ? false : true; return true; } +inline bool FbxTypeCopy(FbxBool& pDst, const FbxULongLong& pSrc){ pDst = pSrc == 0 ? false : true; return true; } +inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxHalfFloat& /*pSrc */){ return false; } +inline bool FbxTypeCopy(FbxBool& pDst, const FbxInt& pSrc){ pDst = pSrc == 0 ? false : true; return true; } +inline bool FbxTypeCopy(FbxBool& pDst, const FbxFloat& pSrc){ pDst = pSrc == 0.f ? false : true; return true; } +inline bool FbxTypeCopy(FbxBool& pDst, const FbxDouble& pSrc){ pDst = pSrc == 0. ? false : true; return true; } +inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxBool& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } +inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxBool& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } + +//To FbxChar +inline bool FbxTypeCopy(FbxChar& pDst, const FbxUChar& pSrc){ pDst = (FbxChar)pSrc; return true; } +inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxChar& pDst, const FbxBool& pSrc){ pDst = (FbxChar)pSrc; return true; } +inline bool FbxTypeCopy(FbxChar& pDst, const FbxInt& pSrc){ pDst = (FbxChar)pSrc; return true; } +inline bool FbxTypeCopy(FbxChar& pDst, const FbxFloat& pSrc){ pDst = (FbxChar)pSrc; return true; } +inline bool FbxTypeCopy(FbxChar& pDst, const FbxDouble& pSrc){ pDst = (FbxChar)pSrc; return true; } +inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxChar& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } +inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxChar& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } + +//To FbxUChar +inline bool FbxTypeCopy(FbxUChar& pDst, const FbxChar& pSrc){ pDst = (FbxUChar)pSrc; return true; } +inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUChar& pDst, const FbxBool& pSrc){ pDst = (FbxUChar)pSrc; return true; } +inline bool FbxTypeCopy(FbxUChar& pDst, const FbxInt& pSrc){ pDst = (FbxUChar)pSrc; return true; } +inline bool FbxTypeCopy(FbxUChar& pDst, const FbxFloat& pSrc){ pDst = (FbxUChar)pSrc; return true; } +inline bool FbxTypeCopy(FbxUChar& pDst, const FbxDouble& pSrc){ pDst = (FbxUChar)pSrc; return true; } +inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUChar& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } +inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUChar& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } + +//To FbxShort +inline bool FbxTypeCopy(FbxShort& pDst, const FbxChar& pSrc){ pDst = (FbxShort)pSrc; return true; } +inline bool FbxTypeCopy(FbxShort& pDst, const FbxUChar& pSrc){ pDst = (FbxShort)pSrc; return true; } +inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxShort& pDst, const FbxBool& pSrc){ pDst = (FbxShort)pSrc; return true; } +inline bool FbxTypeCopy(FbxShort& pDst, const FbxInt& pSrc){ pDst = (FbxShort)pSrc; return true; } +inline bool FbxTypeCopy(FbxShort& pDst, const FbxFloat& pSrc){ pDst = (FbxShort)pSrc; return true; } +inline bool FbxTypeCopy(FbxShort& pDst, const FbxDouble& pSrc){ pDst = (FbxShort)pSrc; return true; } +inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxShort& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } +inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxShort& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } + +//To FbxUShort +inline bool FbxTypeCopy(FbxUShort& pDst, const FbxChar& pSrc){ pDst = (FbxUShort)pSrc; return true; } +inline bool FbxTypeCopy(FbxUShort& pDst, const FbxUChar& pSrc){ pDst = (FbxUShort)pSrc; return true; } +inline bool FbxTypeCopy(FbxUShort& pDst, const FbxShort& pSrc){ pDst = (FbxUShort)pSrc; return true; } +inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUShort& pDst, const FbxBool& pSrc){ pDst = (FbxUShort)pSrc; return true; } +inline bool FbxTypeCopy(FbxUShort& pDst, const FbxInt& pSrc){ pDst = (FbxUShort)pSrc; return true; } +inline bool FbxTypeCopy(FbxUShort& pDst, const FbxFloat& pSrc){ pDst = (FbxUShort)pSrc; return true; } +inline bool FbxTypeCopy(FbxUShort& pDst, const FbxDouble& pSrc){ pDst = (FbxUShort)pSrc; return true; } +inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUShort& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } +inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUShort& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } + +//To FbxInt +inline bool FbxTypeCopy(FbxInt& pDst, const FbxChar& pSrc){ pDst = (FbxInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxInt& pDst, const FbxUChar& pSrc){ pDst = (FbxInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxInt& pDst, const FbxShort& pSrc){ pDst = (FbxInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxInt& pDst, const FbxUShort& pSrc){ pDst = (FbxInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxInt& pDst, const FbxUInt& pSrc){ pDst = (FbxInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxInt& pDst, const FbxLongLong& pSrc){ pDst = (FbxInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxInt& pDst, const FbxULongLong& pSrc){ pDst = (FbxInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxInt& pDst, const FbxBool& pSrc){ pDst = (FbxInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxInt& pDst, const FbxFloat& pSrc){ pDst = (FbxInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxInt& pDst, const FbxDouble& pSrc){ pDst = (FbxInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxInt& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } +inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxInt& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } + +//To FbxUInt +inline bool FbxTypeCopy(FbxUInt& pDst, const FbxChar& pSrc){ pDst = (FbxUInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxUInt& pDst, const FbxUChar& pSrc){ pDst = (FbxUInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxUInt& pDst, const FbxShort& pSrc){ pDst = (FbxUInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxUInt& pDst, const FbxUShort& pSrc){ pDst = (FbxUInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxUInt& pDst, const FbxLongLong& pSrc){ pDst = (FbxUInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxUInt& pDst, const FbxULongLong& pSrc) { pDst = (FbxUInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUInt& pDst, const FbxBool& pSrc){ pDst = (FbxUInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxUInt& pDst, const FbxInt& pSrc){ pDst = (FbxUInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxUInt& pDst, const FbxFloat& pSrc){ pDst = (FbxUInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxUInt& pDst, const FbxDouble& pSrc){ pDst = (FbxUInt)pSrc; return true; } +inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUInt& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } +inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxUInt& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } + +//To FbxLongLong +inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxChar& pSrc){ pDst = (FbxLongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxUChar& pSrc){ pDst = (FbxLongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxShort& pSrc){ pDst = (FbxLongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxUShort& pSrc){ pDst = (FbxLongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxUInt& pSrc){ pDst = (FbxLongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxULongLong& pSrc) { pDst = (FbxLongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxBool& pSrc){ pDst = (FbxLongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxInt& pSrc){ pDst = (FbxLongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxFloat& pSrc){ pDst = (FbxLongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxDouble& pSrc){ pDst = (FbxLongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxLongLong& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } +inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxLongLong& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } + +//To FbxULongLong +inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxChar& pSrc){ pDst = (FbxULongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxUChar& pSrc){ pDst = (FbxULongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxShort& pSrc){ pDst = (FbxULongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxUShort& pSrc){ pDst = (FbxULongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxUInt& pSrc){ pDst = (FbxULongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxLongLong& pSrc){ pDst = (FbxULongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxBool& pSrc){ pDst = (FbxULongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxInt& pSrc){ pDst = (FbxULongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxFloat& pSrc){ pDst = (FbxULongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxDouble& pSrc){ pDst = (FbxULongLong)pSrc; return true; } +inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxULongLong& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } +inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxULongLong& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } + +//To FbxHalfFloat +inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxChar& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } +inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxUChar& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } +inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxShort& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } +inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxUShort& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } +inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxUInt& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } +inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxLongLong& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } +inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxULongLong& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } +inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxBool& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } +inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxInt& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } +inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxFloat& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } +inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxDouble& pSrc){ FbxHalfFloat hf((float)pSrc); pDst = hf; return true; } +inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxString& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxHalfFloat& pDst, const FbxDistance& pSrc){ FbxHalfFloat hf(pSrc.internalValue()); pDst = hf; return true; } +inline bool FbxTypeCopy(FbxHalfFloat& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } + +//To FbxFloat +inline bool FbxTypeCopy(FbxFloat& pDst, const FbxChar& pSrc){ pDst = (FbxFloat)pSrc; return true; } +inline bool FbxTypeCopy(FbxFloat& pDst, const FbxUChar& pSrc){ pDst = (FbxFloat)pSrc; return true; } +inline bool FbxTypeCopy(FbxFloat& pDst, const FbxShort& pSrc){ pDst = (FbxFloat)pSrc; return true; } +inline bool FbxTypeCopy(FbxFloat& pDst, const FbxUShort& pSrc){ pDst = (FbxFloat)pSrc; return true; } +inline bool FbxTypeCopy(FbxFloat& pDst, const FbxUInt& pSrc){ pDst = (FbxFloat)pSrc; return true; } +inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxFloat& pDst, const FbxHalfFloat& pSrc){ pDst = pSrc.value() ; return true; } +inline bool FbxTypeCopy(FbxFloat& pDst, const FbxBool& pSrc){ pDst = (FbxFloat)pSrc; return true; } +inline bool FbxTypeCopy(FbxFloat& pDst, const FbxInt& pSrc){ pDst = (FbxFloat)pSrc; return true; } +inline bool FbxTypeCopy(FbxFloat& pDst, const FbxDouble& pSrc){ pDst = (FbxFloat)pSrc; return true; } +inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxString& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxFloat& pDst, const FbxDistance& pSrc){ pDst = pSrc.internalValue(); return true; } +inline bool FbxTypeCopy(FbxFloat& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } + +//To FbxDouble +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxUChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxUShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxUInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxLongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxULongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxHalfFloat& pSrc){ pDst = (FbxDouble)pSrc.value(); return true; } +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxBool& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxFloat& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble2& pSrc){ pDst = (FbxDouble)pSrc[0]; return true; } +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble3& pSrc){ pDst = (FbxDouble)pSrc[0]; return true; } +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble4& pSrc){ pDst = (FbxDouble)pSrc[0]; return true; } +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDouble4x4& pSrc){ pDst = (FbxDouble)pSrc[0][0]; return true; } +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxString& pSrc){ return FbxTypeCopyStr(pDst, pSrc); } +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxTime& pSrc){ pDst = (FbxDouble)pSrc.GetSecondDouble(); return true; } +inline bool FbxTypeCopy(FbxDouble& pDst, const FbxDistance& pSrc){ pDst = pSrc.internalValue(); return true; } + +//To FbxDouble2 +inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxUChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxUShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxUInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxLongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxULongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxHalfFloat& pSrc){ pDst = (FbxDouble)pSrc.value(); return true; } +inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxBool& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxFloat& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble2& pDst, const FbxDouble& pSrc){ pDst = (FbxDouble)pSrc; return true; } + +//To FbxDouble3 +inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxUChar& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxUShort& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxUInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxLongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxULongLong& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxHalfFloat& pSrc){ pDst = (FbxDouble)pSrc.value(); return true; } +inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxBool& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxInt& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxFloat& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxDouble& pSrc){ pDst = (FbxDouble)pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble3& pDst, const FbxDouble4& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxString& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble3& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } + +//To FbxDouble4 +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxChar& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxUChar& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxBool& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxInt& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxFloat& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDouble& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& pDst, const FbxDouble3& pSrc){ pDst = pSrc; return true; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxString& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDouble4& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } + +//To FbxString +inline bool FbxTypeCopy(FbxString& pDst, const FbxChar& pSrc){ pDst=FbxString((int)pSrc); return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxUChar& pSrc){ pDst=FbxString((int)pSrc); return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxShort& pSrc){ pDst=FbxString((int)pSrc); return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxUShort& pSrc){ pDst=FbxString((int)pSrc); return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxUInt& pSrc){ pDst=FbxString((int)pSrc); return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxLongLong& pSrc){ pDst=FbxString((int)pSrc); return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxULongLong& pSrc){ pDst=FbxString((int)pSrc); return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxHalfFloat& pSrc){ pDst=FbxString((float)pSrc.value()); return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxBool& pSrc){ pDst=pSrc ? "true" : "false"; return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxInt& pSrc){ pDst=FbxString((int)pSrc); return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxFloat& pSrc){ pDst=FbxString(pSrc); return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble& pSrc){ pDst=FbxString(pSrc); return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble2& pSrc){ pDst=FbxString(pSrc[0])+","+FbxString(pSrc[1]); return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble3& pSrc){ pDst=FbxString(pSrc[0])+","+FbxString(pSrc[1])+","+FbxString(pSrc[2]); return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble4& pSrc){ pDst=FbxString(pSrc[0])+","+FbxString(pSrc[1])+","+FbxString(pSrc[2])+","+FbxString(pSrc[3]); return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxDouble4x4& pSrc){ pDst=FbxString(pSrc[0][0])+","+FbxString(pSrc[0][1])+","+FbxString(pSrc[0][2])+","+FbxString(pSrc[0][3]); return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxTime& pSrc){ char lTimeStr[128]; pSrc.GetTimeString(lTimeStr, FbxUShort(128)); pDst=lTimeStr; return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxReference& /*pSrc*/){ pDst=""; return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxBlob& /*pSrc*/){ pDst=""; return true; } // Or convert to ASCII-85? +inline bool FbxTypeCopy(FbxString& pDst, const FbxDistance& pSrc){ pDst= FbxString(pSrc.value()) + " " +pSrc.unitName(); return true; } +inline bool FbxTypeCopy(FbxString& pDst, const FbxDateTime& pSrc){ pDst= pSrc.toString(); return true; } + +//To FbxBlob +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxChar& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxUChar& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxShort& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxUShort& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxUInt& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxLongLong& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxULongLong& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxHalfFloat& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxBool& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxInt& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxFloat& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble2& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble3& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble4& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxDouble4x4& pSrc){ pDst.Assign(&pSrc, sizeof(pSrc)); return true; } +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxString& pSrc) +{ + bool lCastable = pSrc.GetLen() == pSrc.GetLen(); + FBX_ASSERT( lCastable ); + if( lCastable ) + pDst.Assign(pSrc.Buffer(), (int)pSrc.GetLen()); + return lCastable; +} +inline bool FbxTypeCopy(FbxBlob& pDst, const FbxTime& pSrc){ FbxLongLong t = pSrc.Get(); pDst.Assign( &t, sizeof(t)); return true; } +inline bool FbxTypeCopy(FbxBlob& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxBlob& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxBlob& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } + +//To FbxDistance +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxChar& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxUChar& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxBool& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxInt& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxFloat& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxString& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDistance& /*pDst*/, const FbxDateTime& /*pSrc*/){ return false; } + +//To FbxDateTime +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxChar& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxUChar& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxShort& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxUShort& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxUInt& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxLongLong& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxULongLong& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxHalfFloat& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxBool& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxInt& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxFloat& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble2& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble3& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDouble4x4& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& pDst, const FbxString& pSrc){ return pDst.fromString(pSrc); } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxTime& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxReference& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxBlob& /*pSrc*/){ return false; } +inline bool FbxTypeCopy(FbxDateTime& /*pDst*/, const FbxDistance& /*pSrc*/){ return false; } + +template inline bool FbxTypeCopy(T& pDst, const void* pSrc, EFbxType pSrcType) +{ + switch( pSrcType ) + { + case eFbxChar: return FbxTypeCopy(pDst, *(FbxChar*)pSrc); + case eFbxUChar: return FbxTypeCopy(pDst, *(FbxUChar*)pSrc); + case eFbxShort: return FbxTypeCopy(pDst, *(FbxShort*)pSrc); + case eFbxUShort: return FbxTypeCopy(pDst, *(FbxUShort*)pSrc); + case eFbxUInt: return FbxTypeCopy(pDst, *(FbxUInt*)pSrc); + case eFbxLongLong: return FbxTypeCopy(pDst, *(FbxLongLong*)pSrc); + case eFbxULongLong: return FbxTypeCopy(pDst, *(FbxULongLong*)pSrc); + case eFbxHalfFloat: return FbxTypeCopy(pDst, *(FbxHalfFloat*)pSrc); + case eFbxBool: return FbxTypeCopy(pDst, *(FbxBool*)pSrc); + case eFbxInt: return FbxTypeCopy(pDst, *(FbxInt*)pSrc); + case eFbxFloat: return FbxTypeCopy(pDst, *(FbxFloat*)pSrc); + case eFbxDouble: return FbxTypeCopy(pDst, *(FbxDouble*)pSrc); + case eFbxDouble2: return FbxTypeCopy(pDst, *(FbxDouble2*)pSrc); + case eFbxDouble3: return FbxTypeCopy(pDst, *(FbxDouble3*)pSrc); + case eFbxDouble4: return FbxTypeCopy(pDst, *(FbxDouble4*)pSrc); + case eFbxDouble4x4: return FbxTypeCopy(pDst, *(FbxDouble4x4*)pSrc); + case eFbxEnumM: + case eFbxEnum: return FbxTypeCopy(pDst, *(FbxEnum*)pSrc); + case eFbxString: return FbxTypeCopy(pDst, *(FbxString*)pSrc); + case eFbxTime: return FbxTypeCopy(pDst, *(FbxTime*)pSrc); + case eFbxBlob: return FbxTypeCopy(pDst, *(FbxBlob*)pSrc); + case eFbxDistance: return FbxTypeCopy(pDst, *(FbxDistance*)pSrc); + case eFbxDateTime: return FbxTypeCopy(pDst, *(FbxDateTime*)pSrc); + + case eFbxReference: + FBX_ASSERT_NOW("Trying to set value on a void Reference type" ); + break; + + default: + FBX_ASSERT_NOW("Trying to assign an unknown type" ); + break; + } + return false; +} + +template inline bool FbxTypeCopy(void* pDst, EFbxType pDstType, const T& pSrc) +{ + switch( pDstType ) + { + case eFbxChar: return FbxTypeCopy(*(FbxChar*)pDst, pSrc); + case eFbxUChar: return FbxTypeCopy(*(FbxUChar*)pDst, pSrc); + case eFbxShort: return FbxTypeCopy(*(FbxShort*)pDst, pSrc); + case eFbxUShort: return FbxTypeCopy(*(FbxUShort*)pDst, pSrc); + case eFbxUInt: return FbxTypeCopy(*(FbxUInt*)pDst, pSrc); + case eFbxLongLong: return FbxTypeCopy(*(FbxLongLong*)pDst, pSrc); + case eFbxULongLong: return FbxTypeCopy(*(FbxULongLong*)pDst, pSrc); + case eFbxHalfFloat: return FbxTypeCopy(*(FbxHalfFloat*)pDst, pSrc); + case eFbxBool: return FbxTypeCopy(*(FbxBool*)pDst, pSrc); + case eFbxInt: return FbxTypeCopy(*(FbxInt*)pDst, pSrc); + case eFbxFloat: return FbxTypeCopy(*(FbxFloat*)pDst, pSrc); + case eFbxDouble: return FbxTypeCopy(*(FbxDouble*)pDst, pSrc); + case eFbxDouble2: return FbxTypeCopy(*(FbxDouble2*)pDst, pSrc); + case eFbxDouble3: return FbxTypeCopy(*(FbxDouble3*)pDst, pSrc); + case eFbxDouble4: return FbxTypeCopy(*(FbxDouble4*)pDst, pSrc); + case eFbxDouble4x4: return FbxTypeCopy(*(FbxDouble4x4*)pDst, pSrc); + case eFbxEnumM: + case eFbxEnum: return FbxTypeCopy(*(FbxEnum*)pDst, pSrc); + case eFbxString: return FbxTypeCopy(*(FbxString*)pDst, pSrc); + case eFbxTime: return FbxTypeCopy(*(FbxTime*)pDst, pSrc); + case eFbxBlob: return FbxTypeCopy(*(FbxBlob*)pDst, pSrc); + case eFbxDistance: return FbxTypeCopy(*(FbxDistance*)pDst, pSrc); + case eFbxDateTime: return FbxTypeCopy(*(FbxDateTime*)pDst, pSrc); + + case eFbxReference: + FBX_ASSERT_NOW("Trying to set value on a void Reference type" ); + break; + + default: + FBX_ASSERT_NOW("Trying to assign an unknown type" ); + break; + } + return false; +} + +inline bool FbxTypeCopy(void* pDst, EFbxType pDstType, const void* pSrc, EFbxType pSrcType) +{ + switch( pSrcType ) + { + case eFbxChar: return FbxTypeCopy(pDst, pDstType, *(FbxChar*)pSrc); + case eFbxUChar: return FbxTypeCopy(pDst, pDstType, *(FbxUChar*)pSrc); + case eFbxShort: return FbxTypeCopy(pDst, pDstType, *(FbxShort*)pSrc); + case eFbxUShort: return FbxTypeCopy(pDst, pDstType, *(FbxUShort*)pSrc); + case eFbxUInt: return FbxTypeCopy(pDst, pDstType, *(FbxUInt*)pSrc); + case eFbxLongLong: return FbxTypeCopy(pDst, pDstType, *(FbxLongLong*)pSrc); + case eFbxULongLong: return FbxTypeCopy(pDst, pDstType, *(FbxULongLong*)pSrc); + case eFbxHalfFloat: return FbxTypeCopy(pDst, pDstType, *(FbxHalfFloat*)pSrc); + case eFbxBool: return FbxTypeCopy(pDst, pDstType, *(FbxBool*)pSrc); + case eFbxInt: return FbxTypeCopy(pDst, pDstType, *(FbxInt*)pSrc); + case eFbxFloat: return FbxTypeCopy(pDst, pDstType, *(FbxFloat*)pSrc); + case eFbxDouble: return FbxTypeCopy(pDst, pDstType, *(FbxDouble*)pSrc); + case eFbxDouble2: return FbxTypeCopy(pDst, pDstType, *(FbxDouble2*)pSrc); + case eFbxDouble3: return FbxTypeCopy(pDst, pDstType, *(FbxDouble3*)pSrc); + case eFbxDouble4: return FbxTypeCopy(pDst, pDstType, *(FbxDouble4*)pSrc); + case eFbxDouble4x4: return FbxTypeCopy(pDst, pDstType, *(FbxDouble4x4*)pSrc); + case eFbxEnumM: + case eFbxEnum: return FbxTypeCopy(pDst, pDstType, *(FbxEnum*)pSrc); + case eFbxString: return FbxTypeCopy(pDst, pDstType, *(FbxString*)pSrc); + case eFbxTime: return FbxTypeCopy(pDst, pDstType, *(FbxTime*)pSrc); + case eFbxBlob: return FbxTypeCopy(pDst, pDstType, *(FbxBlob*)pSrc); + case eFbxDistance: return FbxTypeCopy(pDst, pDstType, *(FbxDistance*)pSrc); + case eFbxDateTime: return FbxTypeCopy(pDst, pDstType, *(FbxDateTime*)pSrc); + + case eFbxReference: + FBX_ASSERT_NOW("Trying to set value on a void Reference type" ); + break; + + default: + FBX_ASSERT_NOW("Trying to assign an unknown type" ); + break; + } + return false; +} + +/** Creates a fbx primitive type and initializes its memory. + * \param pType The type of object to create. + * \return A pointer to the new primitive object. Note that the caller owns the returned object. + * The pointer returned is NULL if pType is eFbxUndefined or an unknown type. + */ +FBXSDK_DLL void* FbxTypeAllocate(const EFbxType pType); + +/** Destroys an fbx primitive type. If the return value is true + * the memory pointed to by pData has been deleted and should + * no longer be accessed. + * \param pType The type of object being deleted + * \param pData Pointer to the object being deleted. + * \return true if the object was destroyed, false otherwise. + */ +FBXSDK_DLL bool FbxTypeDeallocate(const EFbxType pType, void* pData); + +/** Compare two values of the same type + * \param pA first value + * \param pB second value + * \param pType The data type of both values + * \return \c true if equal, \c false otherwise + */ +FBXSDK_DLL bool FbxTypeCompare(const void* pA, const void* pB, const EFbxType pType); + +#include + +#endif /* _FBXSDK_CORE_PROPERTY_TYPES_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxquery.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxquery.h new file mode 100644 index 00000000..8a5d9712 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxquery.h @@ -0,0 +1,260 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxquery.h +#ifndef _FBXSDK_CORE_QUERY_H_ +#define _FBXSDK_CORE_QUERY_H_ + +#include + +#include +#include +#include +#include + +#include + +#define FBXSDK_QUERY_UNIQUE_ID 0x14000000 + +class FbxProperty; + +/** Base class to manage query. A query contains a filter and reference ID, which will be used to search and retrieve objects. +* The derived query classes are used to create FbxCriteria. +* \nosubgrouping */ +class FBXSDK_DLL FbxQuery +{ +public: + //! Get unique filter Id + virtual FbxInt GetUniqueId() const { return FBXSDK_QUERY_UNIQUE_ID; } + + /** Judge if the given property is valid. + * \param pProperty The given property. + * \return \c true always, not implemented. */ + virtual bool IsValid(const FbxProperty& pProperty) const; + + /** This compares whether two FbxQuery are the same, NOT whether the query matches or not. It's strictly the equivalent of an operator==, but virtual. + * \param pOtherQuery The given FbxQuery */ + virtual bool IsEqual(FbxQuery* pOtherQuery) const; + + //! Add one to ref count. + void Ref(); + + //! Minus one to ref count, if ref count is zero, delete this query object. + void Unref(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + FbxQuery(); + virtual ~FbxQuery(); + +private: + class InternalFilter : public FbxConnectionPointFilter + { + public: + InternalFilter(FbxQuery* pQuery); + ~InternalFilter(); + + public: + FbxConnectionPointFilter* Ref(); + void Unref(); + FbxInt GetUniqueId() const { return mQuery->GetUniqueId(); } + bool IsValid(FbxConnectionPoint* pConnect) const; + bool IsEqual(FbxConnectionPointFilter* pConnectFilter) const; + + FbxQuery* mQuery; + }; + + InternalFilter mFilter; + int mRefCount; + + FBXSDK_FRIEND_NEW(); + friend class FbxProperty; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** Defines a filtering criteria for a query of objects, connections and properties, so that only those satisfying the criteria are +* affected by the query. Some examples of kinds of criteria are object type, connection type, or property. Criteria can be combined +* using logical operators such as "and" and "or". +* \note +* Objects are basic elements in FBX. Each of them has a hierarchy type and some properties. Objects and properties can be connected +* through a connection to represent a relationship between them. (e.g. child-parent, container membership, reference, etc.,). In a +* query, you could select object or properties based on these criteria. +* Here are some examples: +* \code +* FbxObject* lObject = FbxObject::Create(lManager, "Object"); +* int lSrcLightCount = lObject->RootProperty.GetSrcObjectCount(FbxCriteria::ObjectType(FbxLight::ClassId)); +* int lSrcDeformerCount = lObject->RootProperty.GetSrcObjectCount(FbxCriteria::ObjectTypeStrict(FbxDeformer::ClassId)); +* int lSrcPropertyCount = lObject->RootProperty.GetSrcCount(FbxCriteria::IsProperty()); +* \endcode +* \see FbxQuery +* \see FbxProperty::GetSrcObjectCount(const FbxCriteria&) const +* \see FbxCollection::GetMemberCount(const FbxCriteria&) const +* \nosubgrouping */ +class FBXSDK_DLL FbxCriteria +{ +public: + /** Creates a new query criteria that only selects objects which have a specific + * class ID or derive from a class with a specific class ID. + * \param pClassId The base type class ID */ + static FbxCriteria ObjectType(const FbxClassId& pClassId); + + /** Creates a new query criteria that only selects objects which have a specific class ID. + * \param pClassId The type class ID */ + static FbxCriteria ObjectTypeStrict(const FbxClassId& pClassId); + + //! Creates a new query criteria that only selects properties. + static FbxCriteria IsProperty(); + + /** Gets a logical conjunction (and) criteria from this and the specified criteria. + * \param pCriteria The specified criteria */ + FbxCriteria operator&&(const FbxCriteria& pCriteria) const; + + /** Gets a logical disjunction (or) criteria from this and the specified criteria. + * \param pCriteria The specified criteria */ + FbxCriteria operator||(const FbxCriteria& pCriteria) const; + + //! Returns a negated version of the criteria. + FbxCriteria operator!() const; + + /** Retrieves the query. + * \return The query of this criteria */ + FbxQuery* GetQuery() const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxCriteria(); + FbxCriteria(const FbxCriteria& pCriteria); + FbxCriteria(FbxQuery* pQuery); + ~FbxCriteria(); + + FbxCriteria& operator=(const FbxCriteria& pCriteria); + +private: + FbxQuery* mQuery; + + static void FreeGlobalCache(); + + FBXSDK_FRIEND_NEW(); + friend class FbxManager; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +//! Functor to compare FbxCriteria +struct FbxCriteriaCompare +{ + inline int operator()(const FbxCriteria& pKeyA, const FbxCriteria& pKeyB) const + { + const FbxQuery* lKeyA = pKeyA.GetQuery(); + const FbxQuery* lKeyB = pKeyB.GetQuery(); + return lKeyA < lKeyB ? -1 : (lKeyA > lKeyB ? 1 : 0); + } +}; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +class FBXSDK_DLL FbxQueryOperator : public FbxQuery +{ +public: + FBXSDK_FRIEND_NEW(); + + enum EType {eAND, eOR}; + + static FbxQueryOperator* Create(FbxQuery* pA, EType pOperator, FbxQuery* pB); + virtual FbxInt GetUniqueId() const { return FBXSDK_QUERY_UNIQUE_ID+1; } + virtual bool IsValid(const FbxProperty& pProperty) const; + virtual bool IsEqual(FbxQuery* pOtherQuery) const; + +protected: + FbxQueryOperator(FbxQuery* pA, EType pOperator, FbxQuery* pB); + virtual ~FbxQueryOperator(); + +private: + FbxQuery *mA, *mB; + EType mOperator; +}; + +class FBXSDK_DLL FbxQueryOperatorUnary : public FbxQuery +{ +public: + FBXSDK_FRIEND_NEW(); + + static FbxQueryOperatorUnary* Create(FbxQuery* pA); + virtual FbxInt GetUniqueId() const{ return FBXSDK_QUERY_UNIQUE_ID+2; } + virtual bool IsValid(const FbxProperty& pProperty) const; + virtual bool IsEqual(FbxQuery* pOtherQuery) const; + +protected: + FbxQueryOperatorUnary(FbxQuery* pA); + virtual ~FbxQueryOperatorUnary(); + +private: + FbxQuery* mA; +}; + +class FBXSDK_DLL FbxQueryClassId : public FbxQuery +{ +public: + FBXSDK_FRIEND_NEW(); + + static FbxQueryClassId* Create(const FbxClassId& pClassId); + virtual FbxInt GetUniqueId() const{ return FBXSDK_QUERY_UNIQUE_ID+3; } + virtual bool IsValid(const FbxProperty& pProperty) const; + virtual bool IsEqual(FbxQuery* pOtherQuery) const; + +protected: + FbxQueryClassId(const FbxClassId& pClassId); + +private: + FbxClassId mClassId; +}; + +class FBXSDK_DLL FbxQueryIsA : public FbxQuery +{ +public: + FBXSDK_FRIEND_NEW(); + + static FbxQueryIsA* Create(const FbxClassId& pClassId); + virtual FbxInt GetUniqueId() const{ return FBXSDK_QUERY_UNIQUE_ID+4; } + virtual bool IsValid(const FbxProperty& pProperty) const; + virtual bool IsEqual(FbxQuery* pOtherQuery) const; + +protected: + FbxQueryIsA(const FbxClassId& pClassId); + +private: + FbxClassId mClassId; +}; + +class FBXSDK_DLL FbxQueryIsProperty : public FbxQuery +{ +public: + FBXSDK_FRIEND_NEW(); + + static FbxQueryIsProperty* Create(); + virtual FbxInt GetUniqueId() const{ return FBXSDK_QUERY_UNIQUE_ID+5; } + virtual bool IsValid(const FbxProperty& pProperty) const; + virtual bool IsEqual(FbxQuery* pOtherQuery) const; + +protected: + FbxQueryIsProperty(); +}; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ + +#include + +#endif /* _FBXSDK_CORE_QUERY_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxqueryevent.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxqueryevent.h new file mode 100644 index 00000000..2608ed51 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxqueryevent.h @@ -0,0 +1,57 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxqueryevent.h +#ifndef _FBXSDK_CORE_QUERY_EVENT_H_ +#define _FBXSDK_CORE_QUERY_EVENT_H_ + +#include + +#include + +#include + +/** A query event is something that is emitted by an entity, with the goal of being filled by someone that listen to it. +* You can see that like a form that you send to some people. If those people know how to fill the form, they fill it and return +* it to you with the right information in it. A query event is emitted, and plug-in who are listening to that type of query, +* fill the data that can be accessed by the query emitter. +*/ +template class FbxQueryEvent : public FbxEvent > +{ +public: + /** + *\name Public interface + */ + //@{ + /** Constructor. + * \param pData The requested data. + */ + explicit FbxQueryEvent(QueryT* pData):mData(pData){} + + /** Accessor to a mutable reference to the data. Event are usually const and can't be modified by listener. + * This special type of event can have is content modified via this accessor. + * \return A mutable reference the requested data. + */ + QueryT& GetData()const { return *mData; } + //@} + +private: + mutable QueryT* mData; + +private: + virtual const char* GetEventName() const { FBX_ASSERT(false); return ""; } + static const char* FbxEventName() { FBX_ASSERT(false); return ""; } + friend class FbxEvent< FbxQueryEvent >; +}; + +#include + +#endif /* _FBXSDK_CORE_QUERY_EVENT_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxscopedloadingdirectory.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxscopedloadingdirectory.h new file mode 100644 index 00000000..38ebfee1 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxscopedloadingdirectory.h @@ -0,0 +1,58 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxscopedloadingdirectory.h +#ifndef _FBXSDK_CORE_SCOPED_LOADING_DIRECTORY_H_ +#define _FBXSDK_CORE_SCOPED_LOADING_DIRECTORY_H_ + +#include + +#ifndef FBXSDK_ENV_WINSTORE + +#include +#include + +#include + +class FbxPluginHandle; + +//! A plug-in loading strategy that loads all DLLs with a specific extension from a specific directory. When this class is destroyed all of the plug-ins are unloaded. +class FBXSDK_DLL FbxScopedLoadingDirectory : public FbxLoadingStrategy +{ +public: + /** Constructor, which also load plug-ins in the folder specified. + * \param pDirectoryPath The directory path. + * \param pPluginExtension The plug-in extension. */ + FbxScopedLoadingDirectory(const char* pDirectoryPath, const char* pPluginExtension); + + /** Destructor. Unload plug-ins. */ + virtual ~FbxScopedLoadingDirectory(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + virtual bool SpecificLoad(FbxPluginData& pData); + virtual void SpecificUnload(FbxPluginData& pData); + + FbxString mDirectoryPath; + FbxString mExtension; + + FbxArray mPluginHandles; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* !FBXSDK_ENV_WINSTORE */ + +#endif /* _FBXSDK_CORE_SCOPED_LOADING_DIRECTORY_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxscopedloadingfilename.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxscopedloadingfilename.h new file mode 100644 index 00000000..66529e8b --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxscopedloadingfilename.h @@ -0,0 +1,64 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxscopedloadingfilename.h +#ifndef _FBXSDK_CORE_SCOPED_LOADING_FILENAME_H_ +#define _FBXSDK_CORE_SCOPED_LOADING_FILENAME_H_ + +#include + +#ifndef FBXSDK_ENV_WINSTORE + +#include +#include + +#include + +/** + * A plug-in loading strategy that loads a single DLL by specifying the file name in the constructor, and unloads the DLL in its destructor. + */ +class FBXSDK_DLL FbxScopedLoadingFileName : public FbxLoadingStrategy +{ +public: + /** + *\name Public interface + */ + //@{ + /** Constructor. + * Load plug-in. + * \param pPath The file path. + */ + explicit FbxScopedLoadingFileName(const char* pPath); + + /** Destructor. + * Unload plug-in. + */ + virtual ~FbxScopedLoadingFileName(); + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + virtual bool SpecificLoad(FbxPluginData& pData); + virtual void SpecificUnload(FbxPluginData& pData); + + FbxModule mInstance; + FbxString mPath; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* !FBXSDK_ENV_WINSTORE */ + +#endif /* _FBXSDK_CORE_SCOPED_LOADING_FILENAME_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxstream.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxstream.h new file mode 100644 index 00000000..ef349a40 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxstream.h @@ -0,0 +1,126 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxstream.h +#ifndef _FBXSDK_CORE_STREAM_H_ +#define _FBXSDK_CORE_STREAM_H_ + +#include + +#include + +#include + +/** Abstract class for implementing I/O operations through a stream of data. +* For instance, it can be used to read data from a memory source, thus making it possible to import files from memory. However, +* for the time being, the FbxStream class is only supported with FBX files. +*/ +class FBXSDK_DLL FbxStream +{ +public: + /** Current stream state. */ + enum EState + { + eClosed, //!< The stream is closed. + eOpen, //!< The stream is open. + eEmpty //!< The stream is empty. + }; + + /** Query the current state of the stream. */ + virtual EState GetState() = 0; + + /** Open the stream. + * \return True if successful. + * \remark Each time the stream is open or closed, the stream position must be reset to zero. */ + virtual bool Open(void* pStreamData) = 0; + + /** Close the stream. + * \return True if successful. + * \remark Each time the stream is open or closed, the stream position must be reset to zero. */ + virtual bool Close() = 0; + + /** Empties the internal data of the stream. + * \return True if successful. */ + virtual bool Flush() = 0; + + /** Writes a memory block. + * \param pData Pointer to the memory block to write. + * \param pSize Size (in bytes) of the memory block to write. + * \return The number of bytes written in the stream. */ + virtual int Write(const void* /*pData*/, int /*pSize*/) = 0; + + /** Read bytes from the stream and store them in the memory block. + * \param pData Pointer to the memory block where the read bytes are stored. + * \param pSize Number of bytes read from the stream. + * \return The actual number of bytes successfully read from the stream. */ + virtual int Read(void* /*pData*/, int /*pSize*/) const = 0; + + /** Read a string from the stream. + * The default implementation is written in terms of Read() but does not cope with DOS line endings. + * Subclasses may need to override this if DOS line endings are to be supported. + * \param pBuffer Pointer to the memory block where the read bytes are stored. + * \param pMaxSize Maximum number of bytes to be read from the stream. + * \param pStopAtFirstWhiteSpace Stop reading when any whitespace is encountered. Otherwise read to end of line (like fgets()). + * \return pBuffer, if successful, else NULL. + * \remark The default implementation terminates the \e pBuffer with a null character and assumes there is enough room for it. + * For example, a call with \e pMaxSize = 1 will fill \e pBuffer with the null character only. */ + virtual char* ReadString(char* pBuffer, int pMaxSize, bool pStopAtFirstWhiteSpace=false); + + /** If not specified by KFbxImporter::Initialize(), the importer will ask + * the stream to select an appropriate reader ID to associate with the stream. + * FbxIOPluginRegistry can be used to locate id by extension or description. + * Return -1 to allow FBX to select an appropriate default. */ + virtual int GetReaderID() const = 0; + + /** If not specified by KFbxExporter::Initialize(), the exporter will ask + * the stream to select an appropriate writer ID to associate with the stream. + * KFbxIOPluginRegistry can be used to locate id by extension or description. + * Return -1 to allow FBX to select an appropriate default. */ + virtual int GetWriterID() const = 0; + + /** Adjust the current stream position. + * \param pSeekPos Pre-defined position where offset is added (FbxFile::eBegin, FbxFile::eCurrent:, FbxFile::eEnd) + * \param pOffset Number of bytes to offset from pSeekPos. */ + virtual void Seek(const FbxInt64& pOffset, const FbxFile::ESeekPos& pSeekPos)=0; + + /** Get the current stream position. + * \return Current number of bytes from the beginning of the stream. */ + virtual long GetPosition() const = 0; + + /** Set the current stream position. + * \param pPosition Number of bytes from the beginning of the stream to seek to. */ + virtual void SetPosition(long pPosition)=0; + + /** Return 0 if no errors occurred. Otherwise, return 1 to indicate + * an error. This method will be invoked whenever FBX needs to verify + * that the last operation succeeded. */ + virtual int GetError() const = 0; + + /** Clear current error condition by setting the current error value to 0. */ + virtual void ClearError() = 0; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxStream(){}; + virtual ~FbxStream(){}; + + int Write(const char* pData, int pSize){ return Write((void*)pData, pSize); } + int Write(const int* pData, int pSize){ return Write((void*)pData, pSize); } + int Read(char* pData, int pSize) const { return Read((void*)pData, pSize); } + int Read(int* pData, int pSize) const { return Read((void*)pData, pSize); } +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_CORE_STREAM_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxsymbol.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxsymbol.h new file mode 100644 index 00000000..260fe40e --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxsymbol.h @@ -0,0 +1,135 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxsymbol.h +#ifndef _FBXSDK_CORE_SYMBOL_H_ +#define _FBXSDK_CORE_SYMBOL_H_ + +#include + +#include +#include + +#include + +/** Defines a symbol string. A symbol string is a string that is unique and stored in a global symbol table. +* \nosubgrouping */ +class FBXSDK_DLL FbxSymbol +{ +public: + /** + * \name Constructors and Destructor + */ + //@{ + + /** Constructor. + * Construct a symbol and add it to global symbol table. + * \param pName Symbol name. + * \param pRealm The real value for this symbol. + */ + FbxSymbol(const char* pName, const char* pRealm); + + //! Destructor. + ~FbxSymbol(); + //@} + + /** + * \name Access function. + */ + //@{ + /** + * Get ID in global symbol table. + * \return Symbol ID in global symbol table. + */ + unsigned int GetID() const; + //@} + + /** + * \name Symbol comparison + */ + //@{ + /** Equality operator. + * \param pSymbol The symbol to be compared. + */ + bool operator==(FbxSymbol const& pSymbol) const; + + /** Inequality operator. + * \param pSymbol The symbol to be compared. + */ + bool operator!=(FbxSymbol const& pSymbol) const; + //@} + +private: + unsigned int mID; +}; + +typedef FbxMap< FbxString, int, FbxStringCompare > FbxStringSymbolMap; + + +/** This class is to mark a string as symbol. + * String Symbol only has its name. + * /remarks Each symbol is unique. That means there are no symbols which have the same name. +* \nosubgrouping */ +class FBXSDK_DLL FbxStringSymbol +{ +public: + /** + * \name Constructors and Destructor + */ + //@{ + + //! Default constructor. + FbxStringSymbol(); + + /** Constructor. + * Construct a symbol and add it to global symbol table. + * \param pName Symbol name. + */ + FbxStringSymbol(const char* pName); + + //! Copy constructor. + FbxStringSymbol(const FbxStringSymbol& pOther); + + //! Destructor. + ~FbxStringSymbol(); + //@} + + //! Cast operator to const char* type. + inline operator const char*() const { return mItem ? ((const char*) mItem->GetKey()) : NULL; } + + + /** Determine the symbol empty or not. + * \return \c true if empty. \c false otherwise. + */ + inline bool IsEmpty() const + { + return !mItem || mItem->GetKey().IsEmpty(); + } + + //! Static function to allocate global string symbol map. + static void AllocateGlobalStringSymbolMap(); + + //! Static function to deallocate global string symbol map. + static void FreeGlobalStringSymbolMap(); + + /** Assignment operator. + * \param pName The symbol value. + * \return The self after assignment. + */ + FbxStringSymbol& operator=(const char* pName); + +private: + FbxStringSymbolMap::RecordType* mItem; +}; + +#include + +#endif /* _FBXSDK_CORE_SYMBOL_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxsystemunit.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxsystemunit.h new file mode 100644 index 00000000..92fa5e58 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxsystemunit.h @@ -0,0 +1,219 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxsystemunit.h +#ifndef _FBXSDK_CORE_SYSTEM_UNIT_H_ +#define _FBXSDK_CORE_SYSTEM_UNIT_H_ + +#include + +#include +#include + +#include + +class FbxAMatrix; +class FbxScene; +class FbxNode; +class FbxAnimCurveNode; + +/** \brief This class describes the units of measurement used within a particular scene. + * \nosubgrouping + */ +class FBXSDK_DLL FbxSystemUnit +{ +public: + + /** Struct to define various options that you can use to convert the system unit of a scene. + * The default values are: + * mConvertRrsNodes = true + * mConvertLimits = true + * mConvertClusters = true + * mConvertLightIntensity = true + * mConvertPhotometricLProperties = true + * mConvertCameraClipPlanes = true + * + * The default configuration have been tested to give the best conversion results in the majority of the case. + * \remark Changing any of these values will have a direct impact on the whole scene behavior. + */ + struct ConversionOptions + { + //! This flag indicates whether or not to convert the nodes that do not inherit their parent's scale. + bool mConvertRrsNodes; + + //! This flag indicates whether or not to convert limits. + bool mConvertLimits; + + //! This flag indicates whether or not to convert clusters. + bool mConvertClusters; + + //! This flag indicates whether or not to convert the light intensity property. + bool mConvertLightIntensity; + + //! This flag indicates whether or not to convert photometric lights properties. + bool mConvertPhotometricLProperties; + + //! This flag indicates whether or not to convert the cameras clip planes. + bool mConvertCameraClipPlanes; + }; + + FbxSystemUnit(); + + /** Constructor. + * \param pScaleFactor The equivalent number of centimeters in the new system unit. + * For example, an inch unit uses a scale factor of 2.54. + * \param pMultiplier A multiplier factor of pScaleFactor. + */ + FbxSystemUnit(double pScaleFactor, double pMultiplier = 1.0); + + /** Destructor. + */ + ~FbxSystemUnit(); + + //! Predefined system unit for millimeters. + static const FbxSystemUnit mm; + + //! Predefined system unit for decimeters. + static const FbxSystemUnit dm; + + //! Predefined system unit for centimeters. + static const FbxSystemUnit cm; + + //! Predefined system unit for meters. + static const FbxSystemUnit m; + + //! Predefined system unit for kilometers. + static const FbxSystemUnit km; + + //! Predefined system unit for inches. + static const FbxSystemUnit Inch; + + //! Predefined system unit for feet. + static const FbxSystemUnit Foot; + + //! Predefined system unit for miles. + static const FbxSystemUnit Mile; + + //! Predefined system unit for yards. + static const FbxSystemUnit Yard; + + #define FBXSDK_SYSTEM_UNIT_PREDEF_COUNT 9 + + //! Points to a FbxSystemUnit array to store the predefined system units. The array size is FBXSDK_SYSTEM_UNIT_PREDEF_COUNT. + static const FbxSystemUnit *sPredefinedUnits; + + //! Stores the default conversion options. + static const ConversionOptions DefaultConversionOptions; + + /** Converts a scene from its system units to this system unit. + * \param pScene The scene to convert. + * \param pOptions Conversion options, see:FbxSystemUnit::ConversionOptions. + */ + void ConvertScene( FbxScene* pScene, const ConversionOptions& pOptions = DefaultConversionOptions ) const; + + /** Converts the child (or children) of the given node from the system unit to this system unit. + * Unlike the ConvertScene() method, this method does not set the axis system + * of the scene to which the pRoot node belongs. It also does not adjust FbxPose + * as they are not stored under the scene, and not under a particular node. + * \param pRoot The given node. + * \param pSrcUnit The source system unit. + * \param pOptions Conversion options, see:FbxSystemUnit::ConversionOptions. + */ + void ConvertChildren( FbxNode* pRoot, const FbxSystemUnit& pSrcUnit, const ConversionOptions& pOptions = DefaultConversionOptions ) const; + + /** Converts a scene from its system unit to this system unit, using the specified + * Fbx_Root node. This method is provided for backwards compatibility only + * and instead you should use ConvertScene( FbxScene* , const ConversionOptions& ) whenever possible. + * \param pScene The scene to convert. + * \param pFbxRoot The Fbx_Root node to use for conversion. + * \param pOptions Conversion options, see:FbxSystemUnit::ConversionOptions + */ + void ConvertScene( FbxScene* pScene, FbxNode* pFbxRoot, const ConversionOptions& pOptions = DefaultConversionOptions ) const; + + /** Returns the system unit's scale factor, relative to centimeters. + * This factor scales system unit values to centimeters. If you want to scale values to centimeters, use this value. + * Ignore the "multiplier" (returned by GetMultiplier()) value. + * \return The the system unit's scale factor, relative to centimeters. + */ + double GetScaleFactor() const; + + /** Returns a unit label for the current scale factor. + * \param pAbbreviated If \c true, returns abbreviated string. + * \return The unit label for the current scale factor. + */ + FbxString GetScaleFactorAsString(bool pAbbreviated = true) const; + + /** Returns a unit label for the current scale factor. + * The first letter of the label is in upper case and the label should be pluralized. + * \return The unit label for the current scale factor. + */ + FbxString GetScaleFactorAsString_Plurial() const; + + /** Returns the multiplier factor of the system unit. + */ + double GetMultiplier() const; + + /** Equivalence operator. + * \param pOther Another system unit compared with this system unit. + * \return \c True if equal, \c false otherwise. + */ + bool operator==(const FbxSystemUnit& pOther) const; + + /** Non-equivalence operator. + * \param pOther Another system unit compared with this system unit. + * \return \c True if unequal, \c false otherwise. + */ + bool operator!=(const FbxSystemUnit& pOther) const; + + /** Assignment operation. + * \param pSystemUnit Unit system assigned to this one. + */ + FbxSystemUnit& operator=(const FbxSystemUnit& pSystemUnit); + + /** Returns the conversion factor from this system unit to the target system unit, excluding the multiplier factor. + * \param pTarget The target system unit. + */ + double GetConversionFactorTo( const FbxSystemUnit& pTarget ) const; + + /** Returns the conversion factor from the source system unit to this system unit, excluding the multiplier factor. + * \param pSource The source system unit. + */ + double GetConversionFactorFrom( const FbxSystemUnit& pSource ) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + void ApplyMultiplier(FbxNode* pRoot, bool pSubChildrenOnly) const; + void ConvertSTProperties(FbxArray& pNodes, double pConversionFactor) const; + void ConvertSProperty(FbxArray& pNodes, double pConversionFactor) const; + void ConvertAnimCurveNode(FbxArray& pFCurves, double pConversionFactor) const; + double GetConversionFactor(double pTargetScaleFactor, double pSourceScaleFactor) const; + void AdjustPivots(FbxNode* pNode, double pConversionFactor, FbxAMatrix& pOriginalGlobalM ) const; + void AdjustLimits(FbxNode* pNode, double pConversionFactor) const; + void AdjustPoses(FbxScene* pScene, double pConversionFactor) const; + void AdjustCluster(FbxNode* pNode, double pConversionFactor) const; + void AdjustLightIntensity(FbxNode* pNode, const double pConversionFactor) const; + void AdjustPhotometricLightProperties(FbxNode* pNode, const double pConversionFactor) const; + void AdjustCameraClipPlanes(FbxNode* pNode, const double pConversionFactor) const; + void ConvertChildren(FbxNode* pRoot, const FbxSystemUnit& pSrcUnit, bool pSubChildrenOnly, const ConversionOptions& pOptions) const; + + double mScaleFactor; + double mMultiplier; + + friend class FbxGlobalSettings; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_CORE_SYSTEM_UNIT_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxxref.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxxref.h new file mode 100644 index 00000000..cee8a59b --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/fbxxref.h @@ -0,0 +1,227 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxxref.h +#ifndef _FBXSDK_CORE_XREF_H_ +#define _FBXSDK_CORE_XREF_H_ + +#include + +#include +#include + +#include + +class FbxProperty; +class FbxDocument; +class FbxXRefManagerProject; + +/** This class manages external references to files. + * \nosubgrouping + */ +class FBXSDK_DLL FbxXRefManager +{ +public: + //! Default constructor. + FbxXRefManager(); + + //! Destructor. + virtual ~FbxXRefManager(); + + /** + * \name Predefined Project Types + */ + //@{ + + //! This project represents an URL for storing temporary files. + static const char* sTemporaryFileProject; + + //! This project represents an URL for configuration files. + static const char* sConfigurationProject; + + //! This project represents an URL for storing localization files (that is not part of the asset library). + static const char* sLocalizationProject; + + /** This project is used for creating the ".fbm" folders that are used for + * storing embedded resources in FBX files. + * + * When not set, or if the folder is not writable, the ".fbm" + * folder is created alongside the FBX file. + * + * If we cannot write in that folder, we look at the sTemporaryFileProject location. + * If no folder is set in the sTemporaryFileProject location, or it is not + * writable, the operating system's Temp folder becomes the location. + */ + static const char* sEmbeddedFileProject; + //@} + + /** + * \name XRef URL properties + */ + //@{ + /** Returns the number of URLs that are stored in a property. + * \param pProperty The property. + * \return The URL count. + */ + static int GetUrlCount(FbxProperty const &pProperty); + + /** Returns the number of URLs that are stored in a string. + * \param pUrl The string. + * \return The URL count. + */ + + static int GetUrlCount(FbxString const& pUrl); + + /** Checks whether the URL at the given index stored in the property is relative or not. + * \param pProperty The property. + * \param pIndex The URL index. + * \return \c True if the URL is relative, \c false if the URL is not relative. + */ + static bool IsRelativeUrl (FbxProperty const &pProperty,int pIndex); + + /** Returns the URL stored in the property at the given index. + * \param pProperty The property. + * \param pIndex The URL index. + * \return The URL + */ + static FbxString GetUrl(FbxProperty const &pProperty,int pIndex); + + /** Tries to resolve the URL stored in the property at the given index. + * \param pProperty The property. + * \param pIndex The URL index. + * \param pResolvedPath Filled with the resolved path. + * \return \c True if the URL is resolved, return \c false if the URL is not resolved. + */ + bool GetResolvedUrl (FbxProperty const &pProperty,int pIndex,FbxString & pResolvedPath) const; + + /** Tries to resolve the specified URL. + * \param pUrl The specified URL. + * \param pDoc The document whose ".fbm" folder is used to resolve the URL. + * \param pResolvedPath Filled with the resolved path. + * \return \c True if the URL is resolved, return \c false if the URL is not resolved. + */ + bool GetResolvedUrl (const char* pUrl, FbxDocument* pDoc, FbxString& pResolvedPath) const; + //@} + + /** Looks for the first file that matches a specified "pattern", + * which is built as: + * + * if pOptExt is given: prefix*.ext + * If pOptExt is NULL: prefix* + * if pOptExt is "" or ".": prefix*. + * + * Returns the URL of the first matching files. This function cannot be + * used to resolve folders, only files. + * + * If a document is given, we start by looking at the document's ".fbm" folder. + * \param pPrefix The prefix of the pattern. + * \param pOptExt The extension of the pattern. + * \param pDoc The given document. + * \param pResolvedPath Filled with the first matching URL. + * \return \c True if one matching file is found, returns \c false if no matching file is found. + */ + bool GetFirstMatchingUrl(const char* pPrefix, const char* pOptExt, const FbxDocument* pDoc, FbxString& pResolvedPath) const; + + /** + * \name XRef Resolve URL and Projects + */ + //@{ + + /** Adds an XRef Project. + * Note:Only one URL is associated with a project. Calling + * this on an existing project replaces the project's existing URL. + * \param pName The name of the project + * \param pUrl The URL to be associated with the project. + * \return \c True if the project is added successfully, \c false if no project is added. + */ + bool AddXRefProject (const char *pName,const char *pUrl); + + /** Adds an XRef Project. + * Note:Only one URL is associated with a project. Calling + * this on an existing project replaces the project's existing URL. + * \param pName The name of the project + * \param pExtension The extension of the project. + * \param pUrl The URL to be associated with the project. + * \return \c True if the project is added successfully, returns \c false if no project is added. + */ + bool AddXRefProject (const char *pName,const char *pExtension,const char *pUrl); + + /** Adds an XRef project based on the document's EmbeddedUrl + * property if set, if EmbeddedUrl is not set, based on its current URL property. + * \param pDoc The document used to name the project and to specify the URL. + * \return \c True if the project is added successfully, returns \c false if no project is added. + * \remarks The project name is set as the document name and the URL is set as EmbeddedUrl or URL of the document. + */ + bool AddXRefProject (FbxDocument* pDoc); + + /** Removes an XRef Projects. + * \param pName The name of the project to be removed. + * \return \c True if the project is removed successfully, returns \c false if the project with the name does not exist. + */ + bool RemoveXRefProject(const char *pName); + + /** Removes all XRef Projects. + * \return \c True always. + */ + bool RemoveAllXRefProjects(); + + /** Returns the number of XRef Projects. + * \return The number of XRef Projects. + */ + int GetXRefProjectCount() const; + + /** Returns the name of the XRef project at the specified index. + * \param pIndex The XRef project index. + * \return The XRef project name. + */ + const char *GetXRefProjectName(int pIndex) const; + + /** Returns the base URL for the given project. + * \param pName The name of the given project + * \return The base URL of the project or returns NULL if the project with the name is not found. + */ + const char* GetXRefProjectUrl(const char* pName); // FIXME: Should be const, will break AV. + + /** Returns the base URL for the given project. + * \param pName The name of the given project + * \return The base URL of the project or returns NULL if the project with the name is not found. + */ + const char* GetXRefProjectUrl(const char* pName) const; + + /** Returns the base URL for the given project. + * \param pIndex The index of the project. + * \return The base URL of the project or NULL if the index is out of bounds. + */ + const char* GetXRefProjectUrl(int pIndex) const; + + /** Checks if a project with the given name is defined in this manager. + * \param pName The name of the project. + * \return \c True if the project is defined in this manager, returns \c false if it isn't defined in this manager. + */ + inline bool HasXRefProject( const char* pName ) { return GetXRefProjectUrl(pName) != NULL; } + + /** Tries to resolve an relative URL + * \param pUrl The relative URL to be resolved. + * \param pResolvePath Filled with the resolved path. + * \return \c True if the URL is resolved, returns \c false if the URL is not resolved. + */ + bool GetResolvedUrl (const char* pUrl,FbxString & pResolvePath) const; + + //@} +private: + FbxArray mProjects; + + static bool UrlExist(const char* pUrl); +}; + +#include + +#endif /* _FBXSDK_CORE_XREF_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxaffinematrix.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxaffinematrix.h new file mode 100644 index 00000000..288d3793 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxaffinematrix.h @@ -0,0 +1,340 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxaffinematrix.h +#ifndef _FBXSDK_CORE_MATH_AFFINE_MATRIX_H_ +#define _FBXSDK_CORE_MATH_AFFINE_MATRIX_H_ + +#include + +#include + +#include + +/** FBX SDK affine matrix class. + * \nosubgrouping + * Matrices are defined using the Column Major scheme. When a FbxAMatrix represents a transformation (translation, rotation and scale), + * the last row of the matrix represents the translation part of the transformation. + * + * \remarks It is important to realize that an affine matrix must respect a certain structure. To be sure the structure is respected, + * use SetT, SetR, SetS, SetQ, SetTRS or SetTQS. If by mistake bad data is entered in this affine matrix, some functions such as + * Inverse() will yield wrong results. If a matrix is needed to hold values that aren't associate with an affine matrix, please use FbxMatrix instead. + */ +class FBXSDK_DLL FbxAMatrix : public FbxDouble4x4 +{ +public: + /** + * \name Constructors and Destructor + */ + //@{ + //! Constructor. + FbxAMatrix(); + + /** Copy constructor. + * \param pOther FbxAMatrix copied to this one. + */ + FbxAMatrix(const FbxAMatrix& pOther); + + /** Constructor. + * \param pT Translation vector. + * \param pR Euler rotation vector. + * \param pS Scale vector. + */ + FbxAMatrix(const FbxVector4& pT, const FbxVector4& pR, const FbxVector4& pS); + + //! Destructor. + ~FbxAMatrix(); + //@} + + /** + * \name Access + */ + //@{ + /** Retrieve matrix element. + * \param pY Row index. + * \param pX Column index. + * \return Cell [ pX, pY ] value. + */ + double Get(int pY, int pX) const; + + /** Extract translation vector. + * \return Translation vector. + */ + FbxVector4 GetT() const; + + /** Extract rotation vector. + * \return Rotation vector. + * \remarks The returned rotation vector is in Euler angle and the rotation order is XYZ. + */ + FbxVector4 GetR() const; + + /** Extract quaternion vector. + * \return Quaternion vector. + */ + FbxQuaternion GetQ() const; + + /** Extract scale vector. + * \return Scale vector. + */ + FbxVector4 GetS() const; + + /** Extract a row vector. + * \param pY Row index. + * \return The row vector. + */ + FbxVector4 GetRow(int pY) const; + + /** Extract a column vector. + * \param pX Column index. + * \return The column vector. + */ + FbxVector4 GetColumn(int pX) const; + + //! Set matrix to identity. + void SetIdentity(); + + /** Set matrix's translation. + * \param pT Translation vector. + */ + void SetT(const FbxVector4& pT); + + /** Set matrix's Euler rotation. + * \param pR X, Y and Z rotation values expressed as a vector. + * \remarks The rotation transform is constructed in rotation order XYZ. + */ + void SetR(const FbxVector4& pR); + + /** Set matrix's quaternion. + * \param pQ The new quaternion. + */ + void SetQ(const FbxQuaternion& pQ); + + /** Set matrix's scale. + * \param pS X, Y and Z scaling factors expressed as a vector. + */ + void SetS(const FbxVector4& pS); + + /** Set matrix. + * \param pT Translation vector. + * \param pR Rotation vector. + * \param pS Scale vector. + */ + void SetTRS(const FbxVector4& pT, const FbxVector4& pR, const FbxVector4& pS); + + /** Set matrix. + * \param pT Translation vector. + * \param pQ Quaternion vector. + * \param pS Scale vector. + */ + void SetTQS(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS); + + /** Assignment operator. + * \param pM FbxAMatrix assigned to this one. + */ + FbxAMatrix& operator=(const FbxAMatrix& pM); + //@} + + /** + * \name Scalar Operations + */ + //@{ + /** Multiply matrix by a scalar value. + * \param pValue Scalar value. + * \return The scaled matrix. + * \remarks The passed value is not checked. + * This operator operates on the first three rows and columns of the matrix. + * So only the rotation and scaling are scaled, not the translation part. + * After operation, the translation vector will be set as (0,0,0,1); + */ + FbxAMatrix operator*(double pValue) const; + + /** Divide matrix by a scalar value. + * \param pValue Scalar value. + * \return The divided matrix. + * \remarks The passed value is not checked. + * This operator operates on the first three rows and columns of the matrix. + * So only the rotation and scaling are scaled, not the translation part. + * After operation, the translation vector will be set as (0,0,0,1); + */ + FbxAMatrix operator/(double pValue) const; + + /** Multiply matrix by a scalar value. + * \param pValue Scalar value. + * \return \e this updated with the result of the multiplication. + * \remarks The passed value is not checked. + * This operator operates on the first three rows and columns of the matrix. + * So only the rotation and scaling are scaled, not the translation part. + * After operation, the translation vector will keep original value. + */ + FbxAMatrix& operator*=(double pValue); + + /** Divide matrix by a scalar value. + * \param pValue Scalar value. + * \return \e this updated with the result of the division. + * \remarks The passed value is not checked. + * This operator operates on the first three rows and columns of the matrix. + * So only the rotation and scaling are scaled, not the translation part. + * After operation, the translation vector will keep original value. + */ + FbxAMatrix& operator/=(double pValue); + //@} + + /** + * \name Vector Operations + */ + //@{ + /** Multiply matrix by a translation vector. + * \param pVector4 Translation vector. + * \return t' = M * t + */ + FbxVector4 MultT(const FbxVector4& pVector4) const; + + /** Multiply matrix by an Euler rotation vector. + * \param pVector4 Euler Rotation vector. + * \return r' = M * r + */ + FbxVector4 MultR(const FbxVector4& pVector4) const; + + /** Multiply matrix by a quaternion. + * \param pQuaternion Rotation value. + * \return q' = M * q + */ + FbxQuaternion MultQ(const FbxQuaternion& pQuaternion) const; + + /** Multiply matrix by a scale vector. + * \param pVector4 Scaling vector. + * \return s' = M * s + */ + FbxVector4 MultS(const FbxVector4& pVector4) const; + //@} + + /** + * \name Matrix Operations + */ + //@{ + /** Unary minus operator. + * \return A matrix where each element is multiplied by -1. + */ + FbxAMatrix operator-() const; + + /** Multiply two matrices together. + * \param pOther A Matrix. + * \return this * pMatrix. + * \remarks Transformations are pre-multiplied. + * That means to scale, then rotate, and then translate a vector V, the transform should be T * R * S * V. \n + * Below is an example of code that shows how to construct rotation transform in XYZ rotation order. + * \code + * FbxAMatrix lRotateXM, lRotateYM, lRotateZM, lRotateXYZM, lRotateM; + * // Construct rotation matrix around X, Y and Z axises separately and then combine them. + * FbxVector4 lRotateX(10, 0, 0); + * FbxVector4 lRotateY(0, 10, 0); + * FbxVector4 lRotateZ(0, 0, 10); + * lRotateXM.SetR(lRotateX); + * lRotateYM.SetR(lRotateY); + * lRotateZM.SetR(lRotateZ); + * lRotateXYZM = lRotateZM * lRotateYM * lRotateXM; + * + * // Alternatively, we can use SetR() directly. + * // lRotateXYZM and lRotateM will be the same. + * FbxVector4 lRotateXYZ (10, 10, 10); + * lRotateM.SetR(lRotateXYZ); + * \endcode + * \note Please refer to the FBX SDK programmers guide for more details. + */ + FbxAMatrix operator*(const FbxAMatrix& pOther) const; + + /** Multiply two matrices together. + * \param pOther A Matrix. + * \return \e this updated with the result of the multiplication. + */ + FbxAMatrix& operator*=(const FbxAMatrix& pOther); + + /** Calculate the matrix inverse. + * \return The inverse matrix of \e this. + */ + FbxAMatrix Inverse() const; + + /** Calculate the matrix transpose. + * \return The transposed matrix of \e this. + */ + FbxAMatrix Transpose() const; + + /** Calculate a spherical linear interpolation matrix. + * \param pOther The other rotation matrix to interpolate with. + * \param pWeight A value between 0.0 and 1.0 to specify the interpolation amount. + * \remark This matrix and other matrix should contain only rotations, otherwise result may be undefined. */ + FbxAMatrix Slerp(const FbxAMatrix& pOther, double pWeight) const; + //@} + + /** + * \name Boolean Operations + */ + //@{ + /** Equivalence operator. + * \param pOther The matrix to be compared to \e this. + * \return \c true if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance) and \c false otherwise. + */ + bool operator==(const FbxAMatrix& pOther) const; + + /** Non-equivalence operator. + * \param pOther The matrix to be compared to \e this. + * \return \c false if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance) and \c true otherwise. + */ + bool operator!=(const FbxAMatrix& pOther) const; + //@} + + /** + * \name Casting + */ + //@{ + //! Cast the matrix in a double pointer. + operator double* (); + //! Cast the matrix in a const double pointer. + operator const double* () const; + //! Define 4*4 array as a new type + typedef const double(kDouble44)[4][4] ; + //! Cast the matrix in a reference to a 4*4 array. + inline kDouble44 & Double44() const { return *((kDouble44 *)&mData[0][0]); } + //@} + + /** Find out if the matrix is equal to identity matrix. + * \return \c true if the matrix is equal to identity matrix, \c false otherwise. */ + bool IsIdentity(const double pThreshold=FBXSDK_TOLERANCE); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxAMatrix(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS); + + void SetTRS(const FbxVector4& pT, const FbxAMatrix& pRM, const FbxVector4& pS); + void SetRow(int pY, const FbxVector4& pRow); + void SetTOnly(const FbxVector4& pT); + void SetROnly(const FbxVector4& pR); + void SetQOnly(const FbxQuaternion& pQ); + FbxVector4 GetROnly() const; + FbxQuaternion GetUnnormalizedQ() const; + + // pOrd is assumed to be an FbxEuler::EOrder (or its synonym EFbxRotationOrder) + void SetR(const FbxVector4& pV, const int pOrd); + FbxVector4 GetR(const int pOrd) const; + + void MultRM(const FbxVector4& pR); + void MultSM(const FbxVector4& pS); + bool IsRightHand() const; + double Determinant() const; + int Compare(const FbxAMatrix pM, const double pThreshold=FBXSDK_TOLERANCE) const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_CORE_MATH_AFFINE_MATRIX_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxdualquaternion.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxdualquaternion.h new file mode 100644 index 00000000..234866af --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxdualquaternion.h @@ -0,0 +1,325 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxdualquaternion.h +#ifndef _FBXSDK_CORE_MATH_DUAL_QUATERNION_H_ +#define _FBXSDK_CORE_MATH_DUAL_QUATERNION_H_ + +#include + +#include + +#include + +/** FBX SDK dual quaternion class to represent rigid transformation, which is combined by two quaternions. + * A transformation is said to be rigid if it preserves relative distances and angles. + * That means rotation and translation. + * \nosubgrouping + */ +class FBXSDK_DLL FbxDualQuaternion +{ +public: + /** + * \name Constructors and Destructor + */ + //@{ + //! Constructor. + FbxDualQuaternion(); + + /** Constructor. + * \param pV1 FbxQuaternion object. + * \param pV2 FbxQuaternion object. + */ + FbxDualQuaternion(const FbxQuaternion& pV1, const FbxQuaternion& pV2); + + /** Copy constructor. + * \param pV FbxQuaternion object copied to this one. + */ + FbxDualQuaternion(const FbxDualQuaternion& pV); + + /** Constructor. + * \param pRotation The rotation the dual quaternion is going to represent. + * \param pTranslation The translation the dual quaternion is going to represent. + */ + FbxDualQuaternion(const FbxQuaternion& pRotation, const FbxVector4& pTranslation); + + /** Constructor. + * \param pX1 The X component of the first quaternion. + * \param pY1 The Y component of the first quaternion. + * \param pZ1 The Z component of the first quaternion. + * \param pW1 The W component of the first quaternion. + * \param pX2 The X component of the second quaternion. + * \param pY2 The Y component of the second quaternion. + * \param pZ2 The Z component of the second quaternion. + * \param pW2 The W component of the second quaternion. + */ + FbxDualQuaternion(double pX1, double pY1, double pZ1, double pW1, double pX2, double pY2, double pZ2, double pW2); + + //! Destructor. + ~FbxDualQuaternion(); + //@} + + /** + * \name Access + */ + //@{ + /** Assignment operation. + * \param pDualQuaternion FbxDualQuaternion object assigned to this one. + */ + FbxDualQuaternion& operator=(const FbxDualQuaternion& pDualQuaternion); + + /** Set vector. + * \param pX1 The X component of the first quaternion. + * \param pY1 The Y component of the first quaternion. + * \param pZ1 The Z component of the first quaternion. + * \param pW1 The W component of the first quaternion. + * \param pX2 The X component of the second quaternion. + * \param pY2 The Y component of the second quaternion. + * \param pZ2 The Z component of the second quaternion. + * \param pW2 The W component of the second quaternion. + */ + void Set(double pX1, double pY1, double pZ1, double pW1, double pX2, double pY2, double pZ2, double pW2); + + /** Get the first quaternion of the dual quaternion. + * \return The first quaternion of the dual quaternion. + */ + FbxQuaternion& GetFirstQuaternion(); + + /** Get the second quaternion of the dual quaternion. + * \return The second quaternion of the dual quaternion. + */ + FbxQuaternion& GetSecondQuaternion(); + + /** Get the first quaternion of the dual quaternion. + * \return The first quaternion of the dual quaternion. + */ + const FbxQuaternion& GetFirstQuaternion() const; + + /** Get the second quaternion of the dual quaternion. + * \return The second quaternion of the dual quaternion. + */ + const FbxQuaternion& GetSecondQuaternion() const; + + /** Get the rotation part from the dual quaternion. + * \return FbxQuaternion object to represent rotation. + */ + FbxQuaternion GetRotation() const; + + /** Get the translation part from the dual quaternion. + * \return FbxVector4 object to represent translation. + * \remarks A dual quaternion can represent rotation followed by translation, or translation followed by rotation. + * This method assumes that the rotation is expressed first, followed by translation, as is done by most DCC tools. + */ + FbxVector4 GetTranslation() const; + //@} + + /** + * \name Scalar Operations + */ + //@{ + /** Add a value to all vector components. + * \param pValue The value to add to each component of the vector. + * \return New vector. + * \remarks The passed value is not checked. + */ + FbxDualQuaternion operator+(double pValue) const; + + /** Subtract a value from all vector components. + * \param pValue The value to subtract from each component of the vector. + * \return New vector. + * \remarks The passed value is not checked. + */ + FbxDualQuaternion operator-(double pValue) const; + + /** Multiply all vector components by a value. + * \param pValue The value multiplying each component of the vector. + * \return New vector. + * \remarks The passed value is not checked. + */ + FbxDualQuaternion operator*(double pValue) const; + + /** Divide all vector components by a value. + * \param pValue The value dividing each component of the vector. + * \return New vector. + * \remarks The passed value is not checked. + */ + FbxDualQuaternion operator/(double pValue) const; + + /** Add a value to all vector components. + * \param pValue The value to add to each component of the vector. + * \return The result of adding pValue to each component of the vector, replacing this dual quaternion. + * \remarks The passed value is not checked. + */ + FbxDualQuaternion& operator+=(double pValue); + + /** Subtract a value from all vector components. + * \param pValue The value to subtract from each component of the vector. + * \return The result of subtracting pValue from each component of the vector, replacing this dual quaternion. + * \remarks The passed value is not checked. + */ + FbxDualQuaternion& operator-=(double pValue); + + /** Multiply a value to all vector elements. + * \param pValue The value multiplying each component of the vector. + * \return The result of multiplying each component of the vector by pValue, replacing this dual quaternion. + * \remarks The passed value is not checked. + */ + FbxDualQuaternion& operator*=(double pValue); + + /** Divide all vector elements by a value. + * \param pValue The value dividing each component of the vector. + * \return The result of dividing each component of the vector by pValue, replacing this dual quaternion. + * \remarks The passed value is not checked. + */ + FbxDualQuaternion& operator/=(double pValue); + //@} + + /** + * \name Vector Operations + */ + //@{ + /** Unary minus operator. + * \return A dual quaternion where each component is multiplied by -1. + */ + FbxDualQuaternion operator-() const; + + /** Add two vectors together. + * \param pDualQuaternion Dual quaternion to add. + * \return The dual quaternion v' = this + pDualQuaternion. + * \remarks The values in pDualQuaternion are not checked. + */ + FbxDualQuaternion operator+(const FbxDualQuaternion& pDualQuaternion) const; + + /** Subtract a quaternion from another quaternion. + * \param pDualQuaternion Dual quaternion to subtract. + * \return The dual quaternion v' = this - pDualQuaternion. + * \remarks The values in pDualQuaternion are not checked. + */ + FbxDualQuaternion operator-(const FbxDualQuaternion& pDualQuaternion) const; + + /** Memberwise multiplication of two vectors. + * \param pDualQuaternion Multiplying dual quaternion. + * \return The dual quaternion v' = this * pQuaternion. + * \remarks The values in pDualQuaternion are not checked. + */ + FbxDualQuaternion operator*(const FbxDualQuaternion& pDualQuaternion) const; + + /** Memberwise division of a dual quaternion with another dual quaternion. + * \param pDualQuaternion Dividing dual quaternion. + * \return The dual quaternion v' = this / pQuaternion. + * \remarks The values in pDualQuaternion are not checked. + */ + FbxDualQuaternion operator/(const FbxDualQuaternion& pDualQuaternion) const; + + /** Add two quaternions together. + * \param pDualQuaternion Dual quaternion to add. + * \return The dual quaternion v' = this + pQuaternion, replacing this dual quaternion. + * \remarks The values in pDualQuaternion are not checked. + */ + FbxDualQuaternion& operator+=(const FbxDualQuaternion& pDualQuaternion); + + /** Subtract a dual quaternion from another vector. + * \param pDualQuaternion Dual quaternion to subtract. + * \return The dual quaternion v' = this - pQuaternion, replacing this dual quaternion. + * \remarks The values in pDualQuaternion are not checked. + */ + FbxDualQuaternion& operator-=(const FbxDualQuaternion& pDualQuaternion); + + /** Memberwise multiplication of two quaternions. + * \param pDualQuaternion Multiplying dual quaternion. + * \return The dual quaternion v' = this * pQuaternion, replacing this dual quaternion. + * \remarks The values in pDualQuaternion are not checked. + */ + FbxDualQuaternion& operator*=(const FbxDualQuaternion& pDualQuaternion); + + /** Memberwise division of a dual quaternion by another dual quaternion. + * \param pDualQuaternion Dividing dual quaternion. + * \return The dual quaternion v' = this / pQuaternion, replacing this dual quaternion. + * \remarks The values in pDualQuaternion are not checked. + */ + FbxDualQuaternion& operator/=(const FbxDualQuaternion& pDualQuaternion); + + /** Multiplication of a dual quaternion by a FbxVector4. + * \param pVector The FbxVector4 to multiply with. + * \return The dual quaternion v' = FbxDualQuaternion(mQ1, (mQ1 * pVector) + mQ2). + * \remarks The values in pDualQuaternion are not checked. + */ + FbxDualQuaternion operator*(const FbxVector4 pVector) const; + + /** Return dual quaternion product. + * \param pDualQuaternion Product dual quaternion. + * \return The dual quaternion that is the product of this and pDualQuaternion. + */ + FbxDualQuaternion Product(const FbxDualQuaternion& pDualQuaternion) const; + + /** Normalize the dual quaternion, length set to 1. + */ + void Normalize(); + + /** Calculate the dual quaternion's inverse. + * \return The inverse of this dual quaternion. + */ + void Inverse(); + + /** Deform a point by this dual quaternion. + * \return The inverse of this quaternion. + */ + FbxVector4 Deform(FbxVector4& pPoint); + //@} + + /** + * \name Conjugate Operations + * \brief Dual quaternion has three types of conjugate. + */ + //@{ + /** Conjugate both quaternions of this dual quaternion. + */ + void Conjugate(); + + /** Conjugate in dual space. + */ + void Dual(); + + /** Conjugate both quaternions of this dual quaternion in dual space. + */ + void DualConjugate(); + //@} + + /** + * \name Boolean Operations + */ + //@{ + /** Equivalence operator. + * \param pV The quaternion to be compared to this quaternion. + * \return \c true if the two quaternions are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. + */ + bool operator==(const FbxDualQuaternion & pV) const; + + /** Non equivalence operator. + * \param pV The quaternion to be compared to \e this. + * \return \c false if the two quaternions are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. + */ + bool operator!=(const FbxDualQuaternion & pV) const; + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + FbxQuaternion mQ1; + FbxQuaternion mQ2; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_CORE_MATH_DUAL_QUATERNION_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxmath.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxmath.h new file mode 100644 index 00000000..d55e7417 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxmath.h @@ -0,0 +1,512 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxmath.h +#ifndef _FBXSDK_CORE_MATH_H_ +#define _FBXSDK_CORE_MATH_H_ + +#include + +#include +#include +#include +#include + +//On Mac OS, cmath will include math.h and undef "isnan" +#if defined(FBXSDK_ENV_MAC) + #include + extern "C" int isnan (double); +#endif + +#include + +#if defined(FBXSDK_ENV_WIN) + #ifndef isnan + #define isnan _isnan + #endif + #ifndef finite + #define finite _finite + #endif +#endif + +//--------------------------------------------------------------------------------------- +//Common Constants +#define FBXSDK_PI 3.1415926535897932384626433832795028841971693993751 //!< PI mathematic constant +#define FBXSDK_PI_DIV_2 1.5707963267948966192313216916397514420985846996875 //!< PI divided by 2 +#define FBXSDK_PI_DIV_180 0.017453292519943295769236907684886127134428718885417 //!< PI divived by 180 +#define FBXSDK_180_DIV_PI 57.295779513082320876798154814105170332405472466565 //!< 180 divided by PI +#define FBXSDK_1_DIV_LN2 1.4426950408889634073599246810018921374266459541530 //!< 1 divided by LogN2 + +//--------------------------------------------------------------------------------------- +//Unit Convertion Ratio +#define FBXSDK_DEG_TO_RAD FBXSDK_PI_DIV_180 //!< Degree to Radian +#define FBXSDK_RAD_TO_DEG FBXSDK_180_DIV_PI //!< Radian to Degree +#define FBXSDK_IN_TO_CM 2.54 //!< Inch to Centimeter +#define FBXSDK_MM_TO_CM 0.1 //!< Millimeter to Centimeter +#define FBXSDK_CM_TO_IN 0.393700787 //!< Centimeter to Inch +#define FBXSDK_IN_TO_MM 25.4 //!< Inch to Millimeter +#define FBXSDK_MM_TO_IN 0.0393700787 //!< Millimeter to Inch +#define FBXSDK_FT_TO_M 0.3048 //!< Feet to Meter +#define FBXSDK_M_TO_FT 3.2808399 //!< Meter to Feet +#define FBXSDK_YD_TO_FT 3 //!< Yard to Feet +#define FBXSDK_FT_TO_YD 0.333333333 //!< Feet to Yard +#define FBXSDK_KM_TO_MILE 0.621371192 //!< Kilometer to Mile +#define FBXSDK_MILE_TO_KM 1.609344 //!< Mile to Kilometer +#define FBXSDK_YD_TO_M 0.9144 //!< Yard to Meter +#define FBXSDK_M_TO_YD 1.0936133 //!< Meter to Yard + +//--------------------------------------------------------------------------------------- +//Euler Definition +#define FBXSDK_EULER_DEGENERATE FbxEuler::DegenerateThreshold() //!< Euler degenerate threshold can be changed with a call to FbxEuler::SetDegenerateThreshold. + +class FBXSDK_DLL FbxEuler +{ +public: + enum EAxis {eAxisX=0, eAxisY=1, eAxisZ=2}; + + enum EOrder + { + eOrderXYZ, + eOrderXZY, + eOrderYZX, + eOrderYXZ, + eOrderZXY, + eOrderZYX, + eOrderSphericXYZ + }; + + static bool IsParityOdd(EOrder pOrder); + static bool IsRepeat(EOrder pOrder); + + static const int AxisTableSize; + static const int AxisTable[][3]; + + // Used to detect Euler gimbal locks when extracting the rotation vector from + // the FbxAMatrix. This value should only be changed when the user system stores + // single floating point values into the FbxAMatrix with a very low precision. + // In this case, the default threshold value would be too small for a proper detection + // and the extracted values can quickly become off target by a huge amount. + static void SetDegenerateThreshold(double pThreshold=16.0*FBXSDK_FLOAT_EPSILON); + static inline double DegenerateThreshold() { return FbxEuler::mDegenerateThreshold; } + +private: + static double mDegenerateThreshold; +}; + +/** Rotation order flags. + * Each rotate order produces a different end orientation. For example, if the rotation order for an object is set to XYZ, + * the object first rotates about its X-axis, then its Y-axis, and finally its Z-axis. + */ + +#define EFbxRotationOrder FbxEuler::EOrder +#define eEulerXYZ FbxEuler::eOrderXYZ +#define eEulerXZY FbxEuler::eOrderXZY +#define eEulerYZX FbxEuler::eOrderYZX +#define eEulerYXZ FbxEuler::eOrderYXZ +#define eEulerZXY FbxEuler::eOrderZXY +#define eEulerZYX FbxEuler::eOrderZYX +#define eSphericXYZ FbxEuler::eOrderSphericXYZ + + + +/** Quaternion interpolation modes. */ +enum EFbxQuatInterpMode +{ + eQuatInterpOff, //!< Do not evaluate using quaternion interpolation. + eQuatInterpClassic, //!< Legacy quaternion interpolation mode. + eQuatInterpSlerp, //!< Spherical linear interpolation. + eQuatInterpCubic, //!< Cubic interpolation. + eQuatInterpTangentDependent, //!< Mix between Slerp and cubic interpolation, depending on the specified tangents for each key. + eQuatInterpCount //!< Number of quaternion interpolation modes. Mark the end of this enum. +}; + +extern FBXSDK_DLL const FbxDouble FbxIdentityMatrix[4][4]; +extern FBXSDK_DLL const FbxVector4 FbxZeroVector4; + +inline float FbxFloor(const float x) +{ + return float(floor(x)); +} + +inline double FbxFloor(const double x) +{ + return floor(x); +} + +inline float FbxCeil(const float x) +{ + return float(ceil(x)); +} + +inline double FbxCeil(const double x) +{ + return ceil(x); +} + +template inline T FbxSign(const T x) +{ + return (x < 0) ? T(-1) : T(1); +} + +template inline T FbxRound(const T x) +{ + T y = FbxFloor(x); + return (x - y < T(0.5)) ? y : y + T(1); +} + +inline FbxUChar FbxAbs(const FbxUChar x) +{ + return x; +} + +inline FbxUShort FbxAbs(const FbxUShort x) +{ + return x; +} + +inline FbxUInt FbxAbs(const FbxUInt x) +{ + return x; +} + +#ifndef FBXSDK_SYSTEM_IS_LP64 + inline FbxULong FbxAbs(const FbxULong x) + { + return x; + } +#endif + +inline FbxULongLong FbxAbs(const FbxULongLong x) +{ + return x; +} + +inline FbxFloat FbxAbs(const FbxFloat x) +{ + return (FbxFloat)fabs(x); +} + +inline FbxDouble FbxAbs(const FbxDouble x) +{ + return fabs(x); +} + +template inline T FbxAbs(const T x) +{ + return (x >= 0) ? x : ((x > FbxMin(x)) ? -x : FbxMax(x)); +} + +template inline T FbxClamp(const T value, const T min, const T max) +{ + return (value < min) ? min : ((value > max) ? max : value); +} + +template inline bool FbxEqual(const T x, const T y, const T e=(T)FBXSDK_TOLERANCE) +{ + return FbxAbs(x - y) <= e; +} + +inline bool FbxEqual(const FbxDouble2& x, const FbxDouble2& y, const double e=FBXSDK_TOLERANCE) +{ + return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) ); +} + +inline bool FbxEqual(const FbxDouble3& x, const FbxDouble3& y, const double e=FBXSDK_TOLERANCE) +{ + return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) && FbxEqual(x.mData[2], y.mData[2], e) ); +} + +inline bool FbxEqual(const FbxDouble4& x, const FbxDouble4& y, const double e=FBXSDK_TOLERANCE) +{ + return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) && FbxEqual(x.mData[2], y.mData[2], e) && FbxEqual(x.mData[3], y.mData[3], e) ); +} + +inline bool FbxEqual(const FbxDouble4x4& x, const FbxDouble4x4& y, const double e=FBXSDK_TOLERANCE) +{ + return ( FbxEqual(x[0], y[0], e) && FbxEqual(x[1], y[1], e) && FbxEqual(x[2], y[2], e) && FbxEqual(x[3], y[3], e) ); +} + +inline bool FbxEqual(const FbxVector2& x, const FbxVector2& y, const double e=FBXSDK_TOLERANCE) +{ + return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) ); +} + +inline bool FbxEqual(const FbxVector4& x, const FbxVector4& y, const double e=FBXSDK_TOLERANCE) +{ + return ( FbxEqual(x.mData[0], y.mData[0], e) && FbxEqual(x.mData[1], y.mData[1], e) && FbxEqual(x.mData[2], y.mData[2], e) && FbxEqual(x.mData[3], y.mData[3], e) ); +} + +inline bool FbxEqual(const FbxMatrix& x, const FbxMatrix& y, const double e=FBXSDK_TOLERANCE) +{ + return ( FbxEqual(x[0], y[0], e) && FbxEqual(x[1], y[1], e) && FbxEqual(x[2], y[2], e) && FbxEqual(x[3], y[3], e) ); +} + +inline bool FbxEqual(const FbxAMatrix& x, const FbxAMatrix& y, const double e=FBXSDK_TOLERANCE) +{ + return ( FbxEqual(x[0], y[0], e) && FbxEqual(x[1], y[1], e) && FbxEqual(x[2], y[2], e) && FbxEqual(x[3], y[3], e) ); +} + +inline FbxDouble FbxMod(const FbxFloat x, FbxFloat& i) +{ + return modff(x, &i); +} + +inline FbxDouble FbxMod(const FbxDouble x, FbxDouble& i) +{ + return modf(x, &i); +} + +inline FbxDouble FbxMod(const FbxFloat x) +{ + FbxFloat i; + return modff(x, &i); +} + +inline FbxDouble FbxMod(const FbxDouble x) +{ + FbxDouble i; + return modf(x, &i); +} + +template inline T FbxReciprocal(const T x) +{ + return T(1) / x; +} + +inline double FbxSqrt(const double x) +{ + return sqrt(x); +} + +inline float FbxSqrt(const float x) +{ + return sqrtf(x); +} + +template inline T FbxSqrt(const T x) +{ + if( x > 1 ) + { + T z, y = x >> 1; + do + { + z = y; + y = (y + (x / y)) >> 1; + } + while(y < z); + + return z; + } + else + { + return x; + } +} + +inline float FbxExp(const float x) +{ + return expf(x); +} + +inline double FbxExp(const double x) +{ + return exp(x); +} + +inline float FbxLog(const float x) +{ + return float(log(x)); +} + +inline double FbxLog(const double x) +{ + return log(x); +} + +template inline T FbxPow(const T x, const T y) +{ + return (T)FbxExp(y * FbxLog((double)x)); +} + +template inline T FbxLog2(const T x) +{ + return (T)(FbxLog(x) * FBXSDK_1_DIV_LN2); +} + +inline float FbxSin(const float x) +{ + return sinf(x); +} + +inline double FbxSin(const double x) +{ + return sin(x); +} + +inline float FbxCos(const float x) +{ + return cosf(x); +} + +inline double FbxCos(const double x) +{ + return cos(x); +} + +inline float FbxTan(const float x) +{ + return tanf(x); +} + +inline double FbxTan(const double x) +{ + return tan(x); +} + +// *y = cos(x), sin(x) +template inline T FbxSinCos(const T x, T* y) +{ + return *y = FbxCos(x), FbxSin(x); +} + +// *y = cos(x * pi/180), sin(x * pi/180) +template inline T FbxSinCosd(const T x, T* y) +{ + return FbxSinCos(T(x * FBXSDK_PI_DIV_180), y); +} + +inline float FbxASin(const float x) +{ + return asinf(x); +} + +inline double FbxASin(const double x) +{ + return asin(x); +} + +template inline T FbxASind(const T x) +{ + return (T)(FbxASin((double)x) * FBXSDK_180_DIV_PI); +} + +inline float FbxACos(const float x) +{ + return acosf(x); +} + +inline double FbxACos(const double x) +{ + return acos(x); +} + +template inline T FbxACosd(const T x) +{ + return (T)(FbxACos(x) * FBXSDK_180_DIV_PI); +} + +inline float FbxATan(const float x) +{ + return atanf(x); +} + +inline double FbxATan(const double x) +{ + return atan(x); +} + +template inline T FbxATand(const T x) +{ + return (T)(FbxATan(x) * FBXSDK_180_DIV_PI); +} + +inline float FbxATan(const float y, const float x) +{ + return atan2f(y, x); +} + +inline double FbxATan(const double y, const double x) +{ + return atan2(y, x); +} + +template inline T FbxATand(const T y, const T x) +{ + return (T)(FbxATan(y, x) * FBXSDK_180_DIV_PI); +} + +template inline T FbxNorm(const T x, const T y) +{ + return FbxSqrt(x * x + y * y); +} + +template inline T FbxNorm(const T x, const T y, const T z) +{ + return FbxSqrt(x * x + y * y + z * z); +} + +template inline T FbxNorm(const T w, const T x, const T y, const T z) +{ + return FbxSqrt(w * w + x * x + y * y + z * z); +} + +template inline T FbxHypot(const T x, const T y) +{ + return FbxSqrt(x * x + y * y); +} + +template inline T FbxHypot(const T x, const T y, const T z) +{ + return FbxSqrt(x * x + y * y + z * z); +} + +template inline T FbxHypot(const T w, const T x, const T y, const T z) +{ + return FbxSqrt(w * w + x * x + y * y + z * z); +} + +inline FbxVector4 FbxRejection(const FbxVector4& a, const FbxVector4& b) +{ + return a - b * (a.DotProduct(b) / b.DotProduct(b)); +} + +template inline int FbxBitCount(const T x) +{ + int n = 0; + T c = x; + while( c ) + { + n += int(c & 1); + c = (c >> 1); + } + return n; +} + +template inline void FbxFixInfinite(T& x) +{ + if( x != x || x > FbxMax(x) || x < -FbxMax(x) ) + { + x = T(0); + } +} + +template inline T FbxExp(const T x); +template inline T FbxLog(const T x); +template inline T FbxSin(const T x); +template inline T FbxCos(const T x); +template inline T FbxASin(const T x); +template inline T FbxACos(const T x); +template inline T FbxATan(const T x); +template inline T FbxATan(const T y, const T x); + +#include + +#endif /* _FBXSDK_CORE_MATH_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxmatrix.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxmatrix.h new file mode 100644 index 00000000..8ecf8155 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxmatrix.h @@ -0,0 +1,281 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxmatrix.h +#ifndef _FBXSDK_CORE_MATH_MATRIX_H_ +#define _FBXSDK_CORE_MATH_MATRIX_H_ + +#include + +#include + +#include + +class FbxAMatrix; + +/** FBX SDK basic 4x4 double matrix class. + * \nosubgrouping + */ +class FBXSDK_DLL FbxMatrix : public FbxDouble4x4 +{ +public: + //! \name Constructors and Destructor + //@{ + //! Constructor (initialize to an identity matrix) + FbxMatrix(); + + /** Copy constructor. + * \param pM Another FbxMatrix object copied to this one. */ + FbxMatrix(const FbxMatrix& pM); + + /** Copy constructor for affine matrix. + * \param pM Affine matrix */ + FbxMatrix(const FbxAMatrix& pM); + + /** TRS Constructor. + * \param pT Translation vector. + * \param pR Euler rotation vector. + * \param pS Scale vector. */ + FbxMatrix(const FbxVector4& pT, const FbxVector4& pR, const FbxVector4& pS); + + /** TQS Constructor. + * \param pT Translation vector. + * \param pQ Quaternion. + * \param pS Scale vector. */ + FbxMatrix(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS); + + /** 16 double constructor. + * \param p00 Value at column 0 row 0. + * \param p10 Value at column 1 row 0. + * \param p20 Value at column 2 row 0. + * \param p30 Value at column 3 row 0. + * \param p01 Value at column 0 row 1. + * \param p11 Value at column 1 row 1. + * \param p21 Value at column 2 row 1. + * \param p31 Value at column 3 row 1. + * \param p02 Value at column 0 row 2. + * \param p12 Value at column 1 row 2. + * \param p22 Value at column 2 row 2. + * \param p32 Value at column 3 row 2. + * \param p03 Value at column 0 row 3. + * \param p13 Value at column 1 row 3. + * \param p23 Value at column 2 row 3. + * \param p33 Value at column 3 row 3. */ + FbxMatrix( const double p00, const double p10, const double p20, const double p30, + const double p01, const double p11, const double p21, const double p31, + const double p02, const double p12, const double p22, const double p32, + const double p03, const double p13, const double p23, const double p33); + + //! Destructor. + ~FbxMatrix(); + //@} + + //! \name Access + //@{ + /** Retrieve matrix element. + * \param pY Row index. + * \param pX Column index. + * \return Value at element [ pX, pY ] of the matrix. */ + double Get(int pY, int pX) const; + + /** Extract a row vector. + * \param pY Row index. + * \return The row vector. */ + FbxVector4 GetRow(int pY) const; + + /** Extract a column vector. + * \param pX Column index. + * \return The column vector. */ + FbxVector4 GetColumn(int pX) const; + + /** Set matrix element. + * \param pY Row index. + * \param pX Column index. + * \param pValue New component value. */ + void Set(int pY, int pX, double pValue); + + /** Set matrix. + * \param pT Translation vector. + * \param pR Euler rotation vector. + * \param pS Scale vector. */ + void SetTRS(const FbxVector4& pT, const FbxVector4& pR, const FbxVector4& pS); + + /** Set matrix. + * \param pT Translation vector. + * \param pQ Quaternion. + * \param pS Scale vector. */ + void SetTQS(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS); + + /** Set a matrix row. + * \param pY Row index. + * \param pRow Row vector. */ + void SetRow(int pY, const FbxVector4& pRow); + + /** Set a matrix column. + * \param pX Column index. + * \param pColumn Column vector. */ + void SetColumn(int pX, const FbxVector4& pColumn); + + /** Decompose the affine matrix into elements of translation, rotation, shearing, scaling and sign of determinant. + * \param pTranslation Translation element. + * \param pRotation Rotation element. + * \param pShearing Shearing element. + * \param pScaling Scaling element. + * \param pSign Sign of determinant. */ + void GetElements(FbxVector4& pTranslation, FbxQuaternion& pRotation, FbxVector4& pShearing, FbxVector4& pScaling, double& pSign) const; + + /** Decompose the affine matrix into elements of translation, rotation, shearing, scaling and sign of determinant. + * \param pTranslation Translation element. + * \param pRotation Rotation element. + * \param pShearing Shearing element. + * \param pScaling Scaling element. + * \param pSign Sign of determinant. */ + void GetElements(FbxVector4& pTranslation, FbxVector4& pRotation, FbxVector4& pShearing, FbxVector4& pScaling, double& pSign) const; + //@} + + //! \name Operators + //@{ + /** Assignment operator. + * \param pMatrix Source matrix. */ + FbxMatrix& operator=(const FbxMatrix& pMatrix); + + /** Unary minus operator. + * \return A matrix where each element is multiplied by -1. */ + FbxMatrix operator-() const; + + /** Add two matrices together. + * \param pMatrix A matrix. + * \return The result of this matrix + pMatrix. */ + FbxMatrix operator+(const FbxMatrix& pMatrix) const; + + /** Subtract a matrix from another matrix. + * \param pMatrix A matrix. + * \return The result of this matrix - pMatrix. */ + FbxMatrix operator-(const FbxMatrix& pMatrix) const; + + /** Multiply two matrices. + * \param pMatrix A matrix. + * \return The result of this matrix * pMatrix. */ + FbxMatrix operator*(const FbxMatrix& pMatrix) const; + + /** Add two matrices together. + * \param pMatrix A matrix. + * \return The result of this matrix + pMatrix, replacing this matrix. */ + FbxMatrix& operator+=(const FbxMatrix& pMatrix); + + /** Subtract a matrix from another matrix. + * \param pMatrix A matrix. + * \return The result of this matrix - pMatrix, replacing this matrix. */ + FbxMatrix& operator-=(const FbxMatrix& pMatrix); + + /** Multiply two matrices. + * \param pMatrix A matrix. + * \return The result of this matrix * pMatrix, replacing this matrix. */ + FbxMatrix& operator*=(const FbxMatrix& pMatrix); + + /** Equivalence operator. + * \param pM The matrix to be compared against this matrix. + * \return \c true if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. */ + bool operator==(const FbxMatrix& pM) const; + + /** Equivalence operator. + * \param pM The affine matrix to be compared against this matrix. + * \return \c true if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. */ + bool operator==(const FbxAMatrix& pM) const; + + /** Non-equivalence operator. + * \param pM The matrix to be compared against this matrix. + * \return \c false if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. */ + bool operator!=(const FbxMatrix& pM) const; + + /** Non-equivalence operator. + * \param pM The affine matrix to be compared against this matrix. + * \return \c false if the two matrices are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. */ + bool operator!=(const FbxAMatrix& pM) const; + //@} + + //! \name Casting + //@{ + //! Cast the vector in a double pointer. + operator double* (); + + //! Cast the vector in a const double pointer. + operator const double* () const; + + //! Define 4*4 array as a new type. + typedef const double(kDouble44)[4][4] ; + + //! Cast the matrix in a reference to a 4*4 array. + inline kDouble44 & Double44() const { return *((kDouble44 *)&mData[0][0]); } + //@} + + //! \name Math Operations + //@{ + /** Calculate the matrix inverse. + * \return The inverse matrix. */ + FbxMatrix Inverse() const; + + /** Calculate the matrix transpose. + * \return This matrix transposed. */ + FbxMatrix Transpose() const; + + //! Set matrix to identity. + void SetIdentity(); + + /** Set the matrix to a "Look To" left handed. + * \param pEyePosition The position of the eye. + * \param pEyeDirection The direction of the eye. + * \param pUpDirection The up direction of the eye. */ + void SetLookToLH(const FbxVector4& pEyePosition, const FbxVector4& pEyeDirection, const FbxVector4& pUpDirection); + + /** Set the matrix to a "Look To" right handed. + * \param pEyePosition The position of the eye. + * \param pEyeDirection The direction of the eye. + * \param pUpDirection The up direction of the eye. */ + void SetLookToRH(const FbxVector4& pEyePosition, const FbxVector4& pEyeDirection, const FbxVector4& pUpDirection); + + /** Set the matrix to a "Look At" left handed. + * \param pEyePosition The position of the eye. + * \param pLookAt The look at position of the eye focus. + * \param pUpDirection The up direction of the eye. */ + void SetLookAtLH(const FbxVector4& pEyePosition, const FbxVector4& pLookAt, const FbxVector4& pUpDirection); + + /** Set the matrix values as a "Look At" right handed. + * \param pEyePosition The position of the eye. + * \param pLookAt The look at position of the eye focus. + * \param pUpDirection The up direction of the eye. */ + void SetLookAtRH(const FbxVector4& pEyePosition, const FbxVector4& pLookAt, const FbxVector4& pUpDirection); + + /** Multiply this matrix by pVector, the w component is normalized to 1. + * \param pVector A vector. + * \return The result of this matrix * pVector. */ + FbxVector4 MultNormalize(const FbxVector4& pVector) const; + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + int Compare(const FbxMatrix pM, const double pThreshold = FBXSDK_TOLERANCE) const; + int Compare(const FbxAMatrix pM, const double pThreshold = FBXSDK_TOLERANCE) const; + + FbxMatrix operator*(double pValue) const; + FbxMatrix& operator*=(double pValue); + + double LUDecomposition(FbxVector4& pVector); + FbxMatrix LUMult(FbxMatrix pM, const FbxVector4& pVector) const; + double Determinant() const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_CORE_MATH_MATRIX_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxquaternion.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxquaternion.h new file mode 100644 index 00000000..9f02f4db --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxquaternion.h @@ -0,0 +1,333 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxquaternion.h +#ifndef _FBXSDK_CORE_MATH_QUATERNION_H_ +#define _FBXSDK_CORE_MATH_QUATERNION_H_ + +#include + +#include + +#include + +/** FBX SDK quaternion class. + * \nosubgrouping + * Quaternions form a four-dimensional normed division algebra over the real numbers. + * It is for calculations involving three-dimensional rotations. + */ +class FBXSDK_DLL FbxQuaternion : public FbxDouble4 +{ +public: + /** + * \name Constructors and Destructor + */ + //@{ + /** Constructor. + * Initialize to the multiplicative identity. + */ + FbxQuaternion(); + + /** Copy constructor. + * \param pV FbxQuaternion object copied to this one. + */ + FbxQuaternion(const FbxQuaternion& pV); + + /** Constructor. + * \param pX The X component. + * \param pY The Y component. + * \param pZ The Z component. + * \param pW The W component. + */ + FbxQuaternion(double pX, double pY, double pZ, double pW = 1.0); + + /** From axis degree constructor + * \param pAxis The axis to rotate around. + * \param pDegree The amount of degree to rotate around the axis. */ + FbxQuaternion(const FbxVector4& pAxis, double pDegree); + + //! Destructor. + ~FbxQuaternion(); + //@} + + /** + * \name Access + */ + //@{ + /** Assignment operation. + * \param pQuaternion FbxQuaternion object assigned to this one. + */ + FbxQuaternion& operator=(const FbxQuaternion& pQuaternion); + + /** Accessor. + * \param pIndex The index of the component to access. + * \return The reference to the indexed component. + * \remarks The index parameter is not checked for values out of bounds. The valid range is [0,3]. + */ + double& operator[](int pIndex); + + /** Accessor. + * \param pIndex The index of the component to access. + * \return The const reference to the indexed component. + * \remarks The index parameter is not checked for values out of bounds. The valid range is [0,3]. + */ + const double& operator[](int pIndex) const; + + /** Get a vector element. + * \param pIndex The index of the component to access. + * \return The value of the indexed component. + * \remarks The index parameter is not checked for values out of bounds. The valid range is [0,3]. + */ + double GetAt(int pIndex) const; + + /** Set a vector element. + * \param pIndex The index of the component to set. + * \param pValue The new value to set the component. + * \remarks The index parameter is not checked for values out of bounds. The valid range is [0,3]. + */ + void SetAt(int pIndex, double pValue); + + /** Set vector. + * \param pX The X component value. + * \param pY The Y component value. + * \param pZ The Z component value. + * \param pW The W component value. + */ + void Set(double pX, double pY, double pZ, double pW = 1.0); + //@} + + /** + * \name Scalar Operations + */ + //@{ + /** The addition operator between the scalar part of this quaternion and a scalar value, no influence on the vector part of the quaternion. + * \param pValue The scalar value to be added. + * \return The sum of addition. + */ + FbxQuaternion operator+(double pValue) const; + + /** The subtraction operator between the scalar part of this quaternion and a scalar value, no influence on the vector part of the quaternion. + * \param pValue The scalar subtrahend. + * \return The difference of subtraction. + */ + FbxQuaternion operator-(double pValue) const; + + /** Multiply all vector components by a value. + * \param pValue The value multiplying each component of the vector. + * \return New vector. + * \remarks The passed value is not checked. + */ + FbxQuaternion operator*(double pValue) const; + + /** Divide all vector components by a value. + * \param pValue The value dividing each component of the vector. + * \return New vector. + * \remarks The passed value is not checked. + */ + FbxQuaternion operator/(double pValue) const; + + /** The in place addition operator between the real part of this quaternion and a scalar value. + * \param pValue The value to be added. + * \return The sum of addition. + */ + FbxQuaternion& operator+=(double pValue); + + /** The subtraction operator between the real part of this quaternion and a scalar value. + * \param pValue The scalar subtrahend. + * \return The difference of subtraction. + */ + FbxQuaternion& operator-=(double pValue); + + /** Multiply a value to all vector elements. + * \param pValue The value multiplying each component of the vector. + * \return The result of multiplying each component of the vector by pValue, replacing this quaternion. + * \remarks The passed value is not checked. + */ + FbxQuaternion& operator*=(double pValue); + + /** Divide all vector elements by a value. + * \param pValue The value dividing each component of the vector. + * \return The result of dividing each component of the vector by pValue, replacing this quaternion. + * \remarks The passed value is not checked. + */ + FbxQuaternion& operator/=(double pValue); + //@} + + /** + * \name Vector Operations + */ + //@{ + /** Unary minus operator. + * \return A quaternion where each component is multiplied by -1. + */ + FbxQuaternion operator-() const; + + /** Add two vectors together. + * \param pQuaternion Quaternion to add. + * \return The quaternion v' = this + pQuaternion. + * \remarks The values in pQuaternion are not checked. + */ + FbxQuaternion operator+(const FbxQuaternion& pQuaternion) const; + + /** Subtract a quaternion from another quaternion. + * \param pQuaternion Quaternion to subtract. + * \return The quaternion v' = this - pQuaternion. + * \remarks The values in pQuaternion are not checked. + */ + FbxQuaternion operator-(const FbxQuaternion& pQuaternion) const; + + /** The quaternion multiplication operator. + * \param pOther The quaternion to be multiplied with this quaternion. + * \return The product of two quaternions. + * \remarks In general, quaternion multiplication does not commute. + */ + FbxQuaternion operator*(const FbxQuaternion& pOther) const; + + /** The quaternion division operator. + * \param pOther The divisor quaternion. + * \return The quotient quaternion. + * \remarks If the divisor has a zero length, return zero quaternion. + */ + FbxQuaternion operator/(const FbxQuaternion& pOther) const; + + /** Add two quaternions together. + * \param pQuaternion Quaternion to add. + * \return The quaternion v' = this + pQuaternion, replacing this quaternion. + * \remarks The values in pQuaternion are not checked. + */ + FbxQuaternion& operator+=(const FbxQuaternion& pQuaternion); + + /** Subtract a quaternion from another vector. + * \param pQuaternion Quaternion to subtract. + * \return The quaternion v' = this - pQuaternion, replacing this quaternion. + * \remarks The values in pQuaternion are not checked. + */ + FbxQuaternion& operator-=(const FbxQuaternion& pQuaternion); + + /** The in place quaternion multiplication operator. + * \param pOther The quaternion to be multiplied with this quaternion. + * \return The product of two quaternions. + * \remarks In general, quaternion multiplication does not commute. + */ + FbxQuaternion& operator*=(const FbxQuaternion& pOther); + + /** The in place quaternion division operator. + * \param pOther The divisor quaternion. + * \return The quotient quaternion. + * \remarks If the divisor has a zero length, return zero quaternion. + */ + FbxQuaternion& operator/=(const FbxQuaternion& pOther); + + /** Return quaternion product. + * \param pOther The quaternion to be multiplied with this quaternion. + * \return The product of two quaternions. + */ + FbxQuaternion Product(const FbxQuaternion& pOther) const; + + /** Return quaternion dot product. + * \param pQuaternion Dot product quaternion. + * \return The dot product of this quaternion and pQuaternion. + */ + double DotProduct(const FbxQuaternion& pQuaternion) const; + + /** Normalize the quaternion, length set to 1. + */ + void Normalize(); + + /** Calculate the quaternion conjugate. + * \return The conjugate of this quaternion. + */ + void Conjugate(); + + /** Calculate the length (norm) of the quaternion. + * \return The length of the quaternion. + */ + double Length(); + + /** Calculate the inverse of the quaternion. + * \return The inverse of this quaternion. + * \remarks If this quaternion has a zero length, retain the original value. + * \remarks If the quaternion is normalized, then its inverse is equal to its conjugate. + */ + void Inverse(); + + /** Set the quaternion rotation from an axis degree angle. + * \param pAxis The axis to rotate around. + * \param pDegree The amount of degree to rotate around the axis. */ + void SetAxisAngle(const FbxVector4& pAxis, double pDegree); + + /** Calculate a spherical linear interpolation quaternion. + * \param pOther The other quaternion to interpolate with. + * \param pWeight A value between 0.0 and 1.0 to specify the interpolation amount. */ + FbxQuaternion Slerp(const FbxQuaternion& pOther, double pWeight) const; + + /** Create a Quaternion equivalent to the supplied Euler XYZ in spherical coordinate. + * \param pEuler The Euler XYZ angle (in degrees). + */ + void ComposeSphericalXYZ(const FbxVector4 pEuler); + + /** Create an Euler XYZ equivalent to the current quaternion. + * \return The Euler XYZ angle (in degrees) equivalent to the current quaternion in spherical coordinate. + */ + FbxVector4 DecomposeSphericalXYZ() const; + //@} + + /** + * \name Boolean Operations + */ + //@{ + /** Equivalence operator. + * \param pV The quaternion to be compared to this quaternion. + * \return \c true if the two quaternions are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. + */ + bool operator==(const FbxQuaternion & pV) const; + + /** Non equivalence operator. + * \param pV The quaternion to be compared to \e this. + * \return \c false if the two quaternions are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. + */ + bool operator!=(const FbxQuaternion & pV) const; + //@} + + /** + * \name Casting + */ + //@{ + //! Cast the vector in a double pointer. + operator double* (); + + //! Cast the vector in a const double pointer. + operator const double* () const; + //@} + + /** + * \name Comparison methods + */ + //@{ + /** Comparison method. + * \param pQ2 Quaternion to compare with this + * \param pThreshold Epsilon for small number comparison + * \return 0 if quaternions are equal, non-zero value otherwise. + */ + int Compare(const FbxQuaternion &pQ2, const double pThreshold = FBXSDK_TOLERANCE) const; + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + void GetQuaternionFromPositionToPosition(const FbxVector4 &pP0, const FbxVector4 &pP1); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_CORE_MATH_QUATERNION_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxtransforms.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxtransforms.h new file mode 100644 index 00000000..d73ce5cf --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxtransforms.h @@ -0,0 +1,282 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxtransforms.h +#ifndef _FBXSDK_CORE_MATH_TRANSFORMS_H_ +#define _FBXSDK_CORE_MATH_TRANSFORMS_H_ + +#include + +#include +#include + +#include + +/** FbxLimits defines a limit range for one transform component, either translation, rotation or scaling. + * One transform component limit contains two part: a min value and a max value limit, which means + * that each value of the corresponding transform component cannot go beyond the range set by the + * min and max values. Although the members are identified as X, Y and Z (the W component is ignored) + * at this level, they are unitless values and will only have meaning within the context they are queried. + * + * For each limit, there is one flag to indicate if the limit is active or not. Before accessing the + * limit info, the caller need to query the flag first to make sure that the retrieved values will be + * meaningful. + * \nosubgrouping + */ +class FBXSDK_DLL FbxLimits +{ +public: + //! Constructor + FbxLimits(); + + //! Assignment Operator + FbxLimits& operator=(const FbxLimits& pLimits); + + /** Retrieve the active state of this limit. + * \return True if the limit is active. + */ + bool GetActive() const; + + /** Set the active state of this limit. + * \param pActive If true, this limit will become globally active. + */ + void SetActive(const bool pActive); + + /** Get the active state of the minimum X component. + * \return True if the X component minimum limit is active. + */ + bool GetMinXActive() const; + + /** Get the active state of the minimum Y component. + * \return True if the Y component minimum limit is active. + */ + bool GetMinYActive() const; + + /** Get the active state of the minimum Z component. + * \return True if the Z component minimum limit is active. + */ + bool GetMinZActive() const; + + /** Get the active states of the three components of the minimum limit. + * \param pXActive \c True if the X component minimum limit is active. + * \param pYActive \c True if the Y component minimum limit is active. + * \param pZActive \c True if the Z component minimum limit is active. + */ + void GetMinActive(bool& pXActive, bool& pYActive, bool& pZActive) const; + + /** Get the minimum limits. + * \return The current X, Y and Z values for the minimum limits. + */ + FbxDouble3 GetMin() const; + + /** Set the active state of the minimum X component. + * \param pActive If true, the X component minimum limit will be active. + */ + void SetMinXActive(bool pActive); + + /** Set the active state of the minimum Y component. + * \param pActive If true, the Y component minimum limit will be active. + */ + void SetMinYActive(bool pActive); + + /** Set the active state of the minimum Z component. + * \param pActive If true, the Z component minimum limit will be active. + */ + void SetMinZActive(bool pActive); + + /** Set the active states of the three components of the minimum limits. + * \param pXActive If true, the X component minimum limit will be active. + * \param pYActive If true, the Y component minimum limit will be active. + * \param pZActive If true, the Z component minimum limit will be active. + */ + void SetMinActive(bool pXActive, bool pYActive, bool pZActive); + + /** Set the minimum limits. + * \param pMin The X, Y and Z values for the minimum limits. + */ + void SetMin(const FbxDouble3& pMin); + + /** Get the active state of the maximum X component. + * \return True if the X component maximum limit is active. + */ + bool GetMaxXActive() const; + + /** Get the active state of the maximum Y component. + * \return True if the Y component maximum limit is active. + */ + bool GetMaxYActive() const; + + /** Get the active state of the maximum Z component. + * \return True if the Z component maximum limit is active. + */ + bool GetMaxZActive() const; + + /** Get the active states of the three components of the maximum limit. + * \param pXActive \c True if the X component maximum limit is active. + * \param pYActive \c True if the Y component maximum limit is active. + * \param pZActive \c True if the Z component maximum limit is active. + */ + void GetMaxActive(bool& pXActive, bool& pYActive, bool& pZActive) const; + + /** Get the maximum limits. + * \return The current X, Y and Z values for the maximum limits. + */ + FbxDouble3 GetMax() const; + + /** Set the active state of the maximum X component. + * \param pActive If true, the X component maximum limit will be active. + */ + void SetMaxXActive(bool pActive); + + /** Set the active state of the maximum Y component. + * \param pActive If true, the Y component maximum limit will be active. + */ + void SetMaxYActive(bool pActive); + + /** Set the active state of the maximum Z component. + * \param pActive If true, the Z component maximum limit will be active. + */ + void SetMaxZActive(bool pActive); + + /** Set the active states of the three components of the maximum limits. + * \param pXActive If true, the X component maximum limit will be active. + * \param pYActive If true, the Y component maximum limit will be active. + * \param pZActive If true, the Z component maximum limit will be active. + */ + void SetMaxActive(bool pXActive, bool pYActive, bool pZActive); + + /** Set the maximum limits. + * \param pMax The X, Y and Z values for the maximum limits. + */ + void SetMax(const FbxDouble3& pMax); + + /** Find if any of the minimum or maximum active state are set. + * \return If any component of the minimum or maximum active state are set, true is returned. + * \remarks The global active state will not count when resolving this. + */ + bool GetAnyMinMaxActive() const; + + /** Apply the active limits to the components of the vector provided. + * \return The new vector clamped by active limits. + */ + FbxDouble3 Apply(const FbxDouble3& pVector); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + enum EMask {eActive=1<<0, eMinX=1<<1, eMinY=1<<2, eMinZ=1<<3, eMaxX=1<<4, eMaxY=1<<5, eMaxZ=1<<6, eAll=eMinX|eMinY|eMinZ|eMaxX|eMaxY|eMaxZ}; + + FbxUInt8 mMask; + FbxDouble3 mMin; + FbxDouble3 mMax; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +class FBXSDK_DLL FbxRotationOrder +{ +public: + FbxRotationOrder(FbxEuler::EOrder pOrder=FbxEuler::eOrderXYZ); + + FbxEuler::EOrder GetOrder() const; + void SetOrder(FbxEuler::EOrder pOrder); + void V2M(FbxAMatrix& pRM, const FbxVector4& pV); + void M2V(FbxVector4& pV, const FbxAMatrix& pRM); + bool V2VRef(FbxVector4& pVOut, const FbxVector4& pVIn, const FbxVector4& pVRef); + +private: + FbxEuler::EOrder mOrder; +}; + +/** Handle transform behaviors such as pivots, limits and offets, etc. + */ +class FBXSDK_DLL FbxTransform +{ +public: + enum EInheritType {eInheritRrSs, eInheritRSrs, eInheritRrs}; + + FbxTransform(); + + EInheritType GetInheritType() const; + void SetInheritType(EInheritType pType); + FbxLimits& GetTranslationLimits(); + FbxLimits& GetRotationLimits(); + FbxLimits& GetScalingLimits(); + FbxRotationOrder& GetRotationOrder(); + bool HasROffset() const; + bool HasRPivot() const; + bool HasSOffset() const; + bool HasSPivot() const; + bool HasPreRM() const; + bool HasPostRM() const; + void SetROffset(const FbxVector4& pROffset); + void SetRPivot(const FbxVector4& pRPivot); + void SetSOffset(const FbxVector4& pSOffset); + void SetSPivot(const FbxVector4& pSPivot); + void SetPreRM(const FbxVector4& pPreR); + void SetPostRM(const FbxVector4& pPostR); + bool GetRotationSpaceForLimitOnly() const; + void SetRotationSpaceForLimitOnly(bool pRotationSpaceForLimitOnly); + + void DoF2LT(FbxVector4& pLT, const FbxVector4& pDoF, const FbxAMatrix& pLRM, const FbxAMatrix& pLSM); + void LT2DoF(FbxVector4& pDoF, const FbxVector4& pLT, const FbxAMatrix& pLRM, const FbxAMatrix& pLSM); + void DoF2LRM(FbxAMatrix& pLRM, const FbxVector4& pRDoF, bool pForLimit=false); + void LRM2DoF(FbxVector4& pRDoF, const FbxAMatrix& pLRM, bool pForLimit=false); + void LSM2GSM(FbxAMatrix& pGSM, const FbxAMatrix& pPGSM, const FbxAMatrix& pLSM, const FbxAMatrix& pLRM, const FbxVector4& pPLS); + void GTRSM2GX(FbxAMatrix& pGX, const FbxVector4& pGT, const FbxAMatrix& pGRM, const FbxAMatrix& pGSM); + +private: + void SumPivots(FbxVector4& pSum, const FbxAMatrix& pLRM, const FbxAMatrix& pLSM); + + class RotationSpace + { + public: + enum EMask {eHasNothing=0, eHasPreRotM=1<<0, eHasPostRotM=1<<1}; + + RotationSpace(); + + bool HasPreRM() const; + bool HasPostRM() const; + void GetPreRM(FbxAMatrix& pPreRM) const; + void GetPostRM(FbxAMatrix& pPostRM) const; + void SetPreRM(const FbxVector4& pPreR); + void SetPostRM(const FbxVector4& pPostR); + void DoF2LRM(FbxAMatrix& pLRM, const FbxVector4& pRDoF); + void LRM2DoF(FbxVector4& pRDoF, const FbxAMatrix& pLRM); + + FbxUInt8 mMask; + FbxAMatrix mPreRM; + FbxAMatrix mPostRM; + FbxRotationOrder mRotationOrder; + }; + + enum EMask {eHasNothing=0, eHasRotOffset=1<<0, eHasRotPivot=1<<1, eHasScaleOffset=1<<2, eHasScalePivot=1<<3}; + + FbxUInt8 mMask; + EInheritType mInheritType; + FbxVector4 mROffset; + FbxVector4 mRPivot; + FbxVector4 mSOffset; + FbxVector4 mSPivot; + FbxLimits mTranslationLimits; + FbxLimits mRotationLimits; + FbxLimits mScalingLimits; + bool mRotationSpaceForLimitOnly; + RotationSpace mRotationSpace; +}; + +FBXSDK_DLL bool FbxGetContinuousRotation(FbxVector4& pRes, const FbxVector4& pRot, const FbxVector4& pRef, const int* pOrder); +FBXSDK_DLL void FbxGetContinuousRotation(FbxVector4& pRes, const FbxVector4& pRot, const FbxVector4& pRef); + +#include + +#endif /* _FBXSDK_CORE_MATH_TRANSFORMS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxvector2.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxvector2.h new file mode 100644 index 00000000..acd71c39 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxvector2.h @@ -0,0 +1,259 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxvector2.h +#ifndef _FBXSDK_CORE_MATH_VECTOR_2_H_ +#define _FBXSDK_CORE_MATH_VECTOR_2_H_ + +#include + +#include + +/** A two double mathematic vector class. + * \nosubgrouping + */ +class FBXSDK_DLL FbxVector2 : public FbxDouble2 +{ +public: + /** + * \name Constructors and Destructor + */ + //@{ + //! Constructor. + FbxVector2(); + + /** Copy constructor. + * \param pVector2 The vector copied to this one. + */ + FbxVector2(const FbxVector2& pVector2); + + /** Constructor. + * \param pX X component. + * \param pY Y component. + */ + FbxVector2(double pX, double pY); + //@} + + /** + * \name Access + */ + //@{ + /** Assignment operation. + * \param pVector2 The vector assigned to this one. + * \return This vector after assignment. + */ + FbxVector2& operator=(const FbxVector2& pVector2); + + /** Set vector. + * \param pX The X component value. + * \param pY The Y component value. + */ + void Set(double pX, double pY); + //@} + + /** + * \name Scalar Operations + */ + //@{ + /** Add a value to all vector components. + * \param pValue The value to add to each component of the vector. + * \return A new vector with the result of adding pValue to each component of this vector. + * \remarks The pValue parameter is not checked. + */ + FbxVector2 operator+(double pValue) const; + + /** Subtract a value from all vector components. + * \param pValue The value to subtract from each component of the vector. + * \return A new vector with the result of subtracting pValue from each component of this vector. + * \remarks The pValue parameter is not checked. + */ + FbxVector2 operator-(double pValue) const; + + /** Multiply a value to all vector components. + * \param pValue The value multiplying each component of the vector. + * \return A new vector with the result of multiplying each component of this vector by pValue. + * \remarks The pValue parameter is not checked. + */ + FbxVector2 operator*(double pValue) const; + + /** Divide all vector components by a value. + * \param pValue The value dividing each component of the vector. + * \return A new vector with the result of dividing each component of this vector by pValue. + * \remarks The pValue parameter is not checked. + */ + FbxVector2 operator/(double pValue) const; + + /** Add a value to all vector components. + * \param pValue The value to add to each component of the vector. + * \return The result of adding pValue to each component of this vector, replacing this vector. + * \remarks The pValue parameter is not checked. + */ + FbxVector2& operator+=(double pValue); + + /** Subtract a value from all vector components. + * \param pValue The value to subtract from each component of the vector. + * \return The result of subtracting pValue from each component of this vector, replacing this vector. + * \remarks The pValue parameter is not checked. + */ + FbxVector2& operator-=(double pValue); + + /** Multiply a value to all vector elements. + * \param pValue The value multiplying each component of the vector. + * \return The result of multiplying each component of this vector by pValue, replacing this vector. + * \remarks The pValue parameter is not checked. + */ + FbxVector2& operator*=(double pValue); + + /** Divide all vector elements by a value. + * \param pValue The value dividing each component of the vector. + * \return The result of multiplying each component of this vector by pValue, replacing this vector. + * \remarks The pValue parameter is not checked. + */ + FbxVector2& operator/=(double pValue); + //@} + + /** + * \name Vector Operations + */ + //@{ + /** Unary minus operator. + * \return The vector that is the negation of \c this. + */ + FbxVector2 operator-() const; + + /** Add two vectors together. + * \param pVector Vector to add. + * \return The result of this vector + pVector. + * \remarks The values in pVector are not checked. + */ + FbxVector2 operator+(const FbxVector2& pVector) const; + + /** Subtract a vector from another vector. + * \param pVector Vector to subtract. + * \return The result of this vector - pVector. + * \remarks The values in pVector are not checked. + */ + FbxVector2 operator-(const FbxVector2& pVector) const; + + /** Memberwise multiplication of two vectors. + * \param pVector Multiplying vector. + * \return The result of this vector * pVector. + * \remarks The values in pVector are not checked. + */ + FbxVector2 operator*(const FbxVector2& pVector) const; + + /** Memberwise division of a vector with another vector. + * \param pVector Dividing vector. + * \return The result of this vector / pVector. + * \remarks The values in pVector are not checked. + */ + FbxVector2 operator/(const FbxVector2& pVector) const; + + /** Add two vectors together. + * \param pVector Vector to add. + * \return The result of this vector + pVector, replacing this vector. + * \remarks The values in pVector are not checked. + */ + FbxVector2& operator+=(const FbxVector2& pVector); + + /** Subtract a vector from another vector. + * \param pVector Vector to subtract. + * \return The result of this vector - pVector, replacing this vector. + * \remarks The values in pVector are not checked. + */ + FbxVector2& operator-=(const FbxVector2& pVector); + + /** Memberwise multiplication of two vectors. + * \param pVector Multiplying vector. + * \return The result of this vector * pVector, replacing this vector. + * \remarks The values in pVector are not checked. + */ + FbxVector2& operator*=(const FbxVector2& pVector); + + /** Memberwise division of a vector with another vector. + * \param pVector Dividing vector. + * \remarks The values in pVector are not checked. + * \return The result of this vector / pVector, replacing this vector. + * \remarks The values in pVector are not checked. + */ + FbxVector2& operator/=(const FbxVector2& pVector); + + /** Calculate the dot product of two vectors. + * \param pVector The second vector. + * \return The dot product value. + */ + double DotProduct(const FbxVector2& pVector) const; + //@} + + /** + * \name Boolean Operations + */ + //@{ + /** Equivalence operator. + * \param pVector The vector to be compared to \e this. + * \return \c true if the two vectors are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c false otherwise. + */ + bool operator==(const FbxVector2 & pVector) const; + + /** Non-equivalence operator. + * \param pVector The vector to be compared to \e this. + * \return \c false if the two vectors are equal (each element is within a FBXSDK_TOLERANCE tolerance), \c true otherwise. + */ + bool operator!=(const FbxVector2 & pVector) const; + //@} + + /** + * \name Length + */ + //@{ + /** Get the vector's length. + * \return The mathematical length of the vector. + */ + double Length() const; + + /** Get the vector's length squared. + * \return The mathematical square length of the vector. + */ + double SquareLength() const; + + /** Find the distance between 2 vectors. + * \param pVector The second vector. + * \return The mathematical distance between the two vectors. + */ + double Distance(const FbxVector2& pVector) const; + + //! Normalize the vector, length set to 1. + void Normalize(); + //@} + + /** + * \name Casting + */ + //@{ + //! Cast the vector in a double pointer. + operator double* (); + + //! Cast the vector in a const double pointer. + operator const double* () const; + //@} + + /** Find out if the vector is equal to zero. + * \param pSize The number of element to test, starting at beginning. Value must range between [1, 2]. + * \return \c true if all elements of the vector are zero, \c false otherwise. */ + bool IsZero(int pSize=2) const; + + // Fix value like 1.#IND, 1.#INF, nan, and inf + void FixIncorrectValue(); +}; + +#include + +#endif /* _FBXSDK_CORE_MATH_VECTOR_2_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxvector4.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxvector4.h new file mode 100644 index 00000000..83e47612 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/math/fbxvector4.h @@ -0,0 +1,324 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxvector4.h +#ifndef _FBXSDK_CORE_MATH_VECTOR_4_H_ +#define _FBXSDK_CORE_MATH_VECTOR_4_H_ + +#include + +#include + +class FbxQuaternion; + +/** A four double mathematic vector class. + * \nosubgrouping + */ +class FBXSDK_DLL FbxVector4 : public FbxDouble4 +{ +public: + /** + * \name Constructors and Destructor + */ + //@{ + //! Constructor. + FbxVector4(); + + /** Copy constructor. + * \param pVector4 The vector copied to this one. + */ + FbxVector4(const FbxVector4& pVector4); + + /** Constructor. + * \param pX X component. + * \param pY Y component. + * \param pZ Z component. + * \param pW W component. + */ + FbxVector4(double pX, double pY, double pZ, double pW=1.0); + + /** Constructor. + * \param pValue X,Y,Z,W components. + */ + FbxVector4(const double pValue[4]); + + /** Constructor. + * \param pValue X,Y,Z components. + * \remarks The fourth component of this object is assigned 1. + */ + FbxVector4(const FbxDouble3& pValue); + //@} + + /** + * \name Access + */ + //@{ + /** Assignment operation. + * \param pVector4 The vector assigned to this one. + * \return This vector after assignment. + */ + FbxVector4& operator=(const FbxVector4& pVector4); + + /** Assignment operation. + * \param pValue The pointer to an array whose elements are assigned to this vector. + * \return This vector after assignment. + */ + FbxVector4& operator=(const double* pValue); + + /** Assignment operation. + * \param pValue The vector with 3 elements assigned to this vector. + * \return This vector after assignment. + * \remarks The first three elements are assigned with pValue. The fourth element is set as 1.0 + */ + FbxVector4& operator=(const FbxDouble3& pValue); + + /** Set vector. + * \param pX The X component value. + * \param pY The Y component value. + * \param pZ The Z component value. + * \param pW The W component value. + */ + void Set(double pX, double pY, double pZ, double pW=1.0); + //@} + + /** + * \name Scalar Operations + */ + //@{ + /** Add a value to all vector components. + * \param pValue The value to add to each component of the vector. + * \return New vector. + * \remarks The passed value is not checked. + */ + FbxVector4 operator+(double pValue) const; + + /** Subtract a value from all vector components. + * \param pValue The value to subtract from each component of the vector. + * \return New vector. + * \remarks The passed value is not checked. + */ + FbxVector4 operator-(double pValue) const; + + /** Multiply a value to all vector components. + * \param pValue The value multiplying each component of the vector. + * \return New vector. + * \remarks The passed value is not checked. + */ + FbxVector4 operator*(double pValue) const; + + /** Divide all vector components by a value. + * \param pValue The value dividing each component of the vector. + * \return New vector. + * \remarks The passed value is not checked. + */ + FbxVector4 operator/(double pValue) const; + + /** Add a value to all vector components. + * \param pValue The value to add to each component of the vector. + * \return \e this updated with the operation result. + * \remarks The passed value is not checked. + */ + FbxVector4& operator+=(double pValue); + + /** Subtract a value from all vector components. + * \param pValue The value to subtract from each component of the vector. + * \return \e this updated with the operation result. + * \remarks The passed value is not checked. + */ + FbxVector4& operator-=(double pValue); + + /** Multiply a value to all vector elements. + * \param pValue The value multiplying each component of the vector. + * \return \e this updated with the operation result. + * \remarks The passed value is not checked. + */ + FbxVector4& operator*=(double pValue); + + /** Divide all vector elements by a value. + * \param pValue The value dividing each component of the vector. + * \return \e this updated with the operation result. + * \remarks The passed value is not checked. + */ + FbxVector4& operator/=(double pValue); + //@} + + /** + * \name Vector Operations + */ + //@{ + /** Unary minus operator. + * \return The vector that is the negation of \c this. + */ + FbxVector4 operator-() const; + + /** Add two vectors together. + * \param pVector Vector to add. + * \return The vector v' = this + pVector. + * \remarks The values in pVector are not checked. + */ + FbxVector4 operator+(const FbxVector4& pVector) const; + + /** Subtract a vector from another vector. + * \param pVector Vector to subtract. + * \return The vector v' = this - pVector. + * \remarks The values in pVector are not checked. + */ + FbxVector4 operator-(const FbxVector4& pVector) const; + + /** Memberwise multiplication of two vectors. + * \param pVector Multiplying vector. + * \return The vector v' = this * pVector. + * \remarks The values in pVector are not checked. + */ + FbxVector4 operator*(const FbxVector4& pVector) const; + + /** Memberwise division of a vector with another vector. + * \param pVector Dividing vector. + * \return The vector v[i]' = this[i] / pVector[i]. + * \remarks The values in pVector are not checked. + */ + FbxVector4 operator/(const FbxVector4& pVector) const; + + /** Add two vectors together. + * \param pVector Vector to add. + * \return \e this updated with the operation result. + * \remarks The values in pVector are not checked. + */ + FbxVector4& operator+=(const FbxVector4& pVector); + + /** Subtract a vector from another vector. + * \param pVector Vector to subtract. + * \return \e this updated with the operation result. + * \remarks The values in pVector are not checked. + */ + FbxVector4& operator-=(const FbxVector4& pVector); + + /** Memberwise multiplication of two vectors. + * \param pVector Multiplying vector. + * \return \e this updated with the operation result. + * \remarks The values in pVector are not checked. + */ + FbxVector4& operator*=(const FbxVector4& pVector); + + /** Memberwise division of a vector with another vector. + * \param pVector Dividing vector. + * \return \e this updated with the operation result. + * \remarks The values in pVector are not checked. + */ + FbxVector4& operator/=(const FbxVector4& pVector); + + /** Calculate the dot product of two vectors. + * \param pVector The second vector. + * \return The dot product value. + * \remarks Being considered as a XYZ vector with a weight, only the 3 first elements are considered in this operation. + */ + double DotProduct(const FbxVector4& pVector) const; + + /** Calculate the cross product of two vectors. + * \param pVector The second vector. + * \return The cross product vector. + * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. + */ + FbxVector4 CrossProduct(const FbxVector4& pVector) const; + + /** Calculate the Euler rotation required to align axis pAB-pA on pAB-pB. + * \param pAB The intersection of the 2 axis. + * \param pA A point on axis to be aligned. + * \param pB A point on reference axis. + * \param pAngles Resulting euler angles. + * \return \c true on success. + * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. + */ + static bool AxisAlignmentInEulerAngle(const FbxVector4& pAB, const FbxVector4& pA, const FbxVector4& pB, FbxVector4& pAngles); + //@} + + /** + * \name Boolean Operations + */ + //@{ + /** Equivalence operator. + * \param pVector The vector to be compared to \e this. + * \return \c true if the two vectors are equal (each element is within a FBXSDK_TOLERANCE tolerance) and \c false otherwise. + */ + bool operator==(const FbxVector4 & pVector) const; + + /** Non equivalence operator. + * \param pVector The vector to be compared to \e this. + * \return \c false if the two vectors are equal (each element is within a FBXSDK_TOLERANCE tolerance) and \c true otherwise. + */ + bool operator!=(const FbxVector4 & pVector) const; + //@} + + /** + * \name Length + */ + //@{ + /** Get the vector's length. + * \return The mathematical length of the vector. + * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. + */ + double Length() const; + + /** Get the vector's length squared. + * \return The mathematical square length of the vector. + * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. + */ + double SquareLength() const; + + /** Find the distance between 2 vectors. + * \param pVector The second vector. + * \return The mathematical distance between the two vectors. + * \remarks Being considered as a XYZ vector with a weight, only the 3 first elements are considered in this operation. + */ + double Distance(const FbxVector4& pVector) const; + + /** Normalize the vector, length set to 1. + * \remarks Being considered as a XYZ vector with a weight, only the first 3 elements are considered in this operation. + */ + void Normalize(); + + + /** Set the Euler XYZ from a Quaternion. + *\param pQuat Quaternion from which Euler XYZ information is got. + */ + void SetXYZ(const FbxQuaternion pQuat); + //@} + + /** + * \name Casting + */ + //@{ + //! Cast the vector in a double pointer. + operator double* (); + + //! Cast the vector in a const double pointer. + operator const double* () const; + //@} + + /** Find out if the vector is equal to zero. + * \param pSize The number of element to test, starting at beginning. Value must range between [1, 4]. + * \return \c true if all elements of the vector are zero, \c false otherwise. */ + bool IsZero(int pSize=4) const; + + // Fix value like 1.#IND, 1.#INF, nan, and inf + void FixIncorrectValue(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + int Compare(const FbxVector4& pV, const double pThreshold=FBXSDK_TOLERANCE) const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_CORE_MATH_VECTOR_4_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/sync/fbxatomic.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/sync/fbxatomic.h new file mode 100644 index 00000000..6e666f39 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/sync/fbxatomic.h @@ -0,0 +1,58 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxatomic.h +#ifndef _FBXSDK_CORE_SYNC_ATOMIC_H_ +#define _FBXSDK_CORE_SYNC_ATOMIC_H_ + +#include + +#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) + +#include + +class FBXSDK_DLL FbxAtomOp +{ +public: + static void Inc(volatile FbxAtomic* pPtr); + static void Dec(volatile FbxAtomic* pPtr); + static bool Add(volatile FbxAtomic* pPtr, FbxAtomic pVal); + static bool Sub(volatile FbxAtomic* pPtr, FbxAtomic pVal); + static bool And(volatile FbxAtomic* pPtr, FbxAtomic pVal); + static bool Or(volatile FbxAtomic* pPtr, FbxAtomic pVal); + static bool Nand(volatile FbxAtomic* pPtr, FbxAtomic pVal); + static bool Xor(volatile FbxAtomic* pPtr, FbxAtomic pVal); + static bool CompareAndSwap(volatile FbxAtomic* pPtr, FbxAtomic pOld, FbxAtomic pSwap); + static FbxAtomic TestAndSet(volatile FbxAtomic* pPtr); + static FbxAtomic FetchAndSwap(volatile FbxAtomic* pPtr, FbxAtomic pSwap); + static FbxAtomic FetchAndInc(volatile FbxAtomic* pPtr); + static FbxAtomic FetchAndDec(volatile FbxAtomic* pPtr); + static FbxAtomic FetchAndAdd(volatile FbxAtomic* pPtr, FbxAtomic pVal); + static FbxAtomic FetchAndSub(volatile FbxAtomic* pPtr, FbxAtomic pVal); + static FbxAtomic FetchAndOr(volatile FbxAtomic* pPtr, FbxAtomic pVal); + static FbxAtomic FetchAndAnd(volatile FbxAtomic* pPtr, FbxAtomic pVal); + static FbxAtomic FetchAndXor(volatile FbxAtomic* pPtr, FbxAtomic pVal); + static FbxAtomic FetchAndNand(volatile FbxAtomic* pPtr, FbxAtomic pVal); + static FbxAtomic IncAndFetch(volatile FbxAtomic* pPtr); + static FbxAtomic DecAndFetch(volatile FbxAtomic* pPtr); + static FbxAtomic AddAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); + static FbxAtomic SubAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); + static FbxAtomic OrAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); + static FbxAtomic AndAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); + static FbxAtomic XorAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); + static FbxAtomic NandAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal); +}; + +#include + +#endif /* !FBXSDK_ENV_WINSTORE && !FBXSDK_ENV_EMSCRIPTEN */ + +#endif /* _FBXSDK_CORE_SYNC_ATOMIC_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/sync/fbxclock.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/sync/fbxclock.h new file mode 100644 index 00000000..e419646a --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/sync/fbxclock.h @@ -0,0 +1,44 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxclock.h +#ifndef _FBXSDK_CORE_SYNC_CLOCK_H_ +#define _FBXSDK_CORE_SYNC_CLOCK_H_ + +#include + +#ifndef FBXSDK_ENV_WINSTORE + +#include + +/** Put the current thread to sleep. + * \param pMilliseconds The duration of the sleep in milli-seconds. + */ +FBXSDK_DLL void FbxSleep(int pMilliseconds); + +/** Retrieves the current value of the high-resolution performance counter. + * \return The current value of the high-resolution performance counter, in "counts". + * \remarks To convert "counts" into time, divide it by the frequency available from FbxGetHighResFrequency(). + */ +FBXSDK_DLL FbxLongLong FbxGetHighResCounter(); + +/** Retrieves the frequency of the high-resolution performance counter. + * \return The frequency of the high-resolution performance counter value, in "counts" per second. + * \remarks The first time this function is called, the frequency is queried from the system and then cached + * so that further requests are fast. This means it is guaranteed to not change during run-time. + */ +FBXSDK_DLL FbxLongLong FbxGetHighResFrequency(); + +#include + +#endif /* !FBXSDK_ENV_WINSTORE */ + +#endif /* _FBXSDK_CORE_SYNC_CLOCK_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/sync/fbxsync.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/sync/fbxsync.h new file mode 100644 index 00000000..39b6a527 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/sync/fbxsync.h @@ -0,0 +1,188 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxsync.h +#ifndef _FBXSDK_CORE_SYNC_H_ +#define _FBXSDK_CORE_SYNC_H_ + +#include + +#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) + +#include +#include + +#include + +class FbxMutexImpl; +class FbxSemaphoreImpl; +class FbxGateImpl; + +/** A spinlock is the fastest and most simple thread lock mechanism available. + * It is very efficient since it does not use any operating system calls; it is only a test and set on an atomic variable, + * thus it is the fastest thread lock available. Spinlocks are efficient if threads are only likely to be blocked for a + * short period of time, as they avoid overhead from operating system process re-scheduling or context switching. However, + * spinlocks become wasteful if held for longer durations, both preventing other threads from running and requiring + * re-scheduling. + * \note Spinlocks does not support recursive locking. A thread attempting to lock the same spinlock twice will wait + * indefinitely. + */ +class FBXSDK_DLL FbxSpinLock +{ +public: + FbxSpinLock(); + + /** Acquire the lock; thread will wait indefinitely until it is available. */ + void Acquire(); + + /** Release the lock; this will allow other threads to acquire the lock if they are waiting. */ + void Release(); + +private: + FbxAtomic mSpinLock; +}; + +/** Mutually excluding thread lock mechanism. + * While the mutex is a much heavier implementation than a spinlock, it supports recursive locking; the same thread + * can safely lock the same mutex more than once without blocking. But it will have to be released as many times as + * it as been acquired before other threads can acquire the context. It is sometimes referred as a critical section. + * This is the heaviest thread lock implementation, but also the most secure. + */ +class FBXSDK_DLL FbxMutex +{ +public: + /** Constructor + * \param pInitialOwnership If pInitialOwnership is true, the lock will be initialized as being locked by the + * current thread. + */ + FbxMutex(bool pInitialOwnership=false); + virtual ~FbxMutex(); //!< Destructor + + /** Acquire the lock; thread will wait indefinitely until it is available. + * \remarks The same thread can acquire the lock multiple times without blocking. + */ + void Acquire(); + + /** Try acquiring the lock; thread will not wait if it is not available. + * \param pRetryCount The number of retries in case the lock is not available. + * \return True if the lock is acquired, false otherwise. + * \remarks The same thread can acquire the lock multiple times without blocking. + */ + bool TryAcquire(unsigned int pRetryCount); + + /** Release the lock; this will allow other threads to acquire the lock if they are waiting. + * \remarks Only the owner thread should call Release(), and it needs to be released as many times as it was + * acquired. + */ + void Release(); + +private: + FbxMutexImpl* mImpl; +}; + +/** Mutually excluding thread waiting mechanism with a counter. + * Semaphore are generally used in situations when the current thread needs to wait for other threads before + * proceeding to the next step. In other words, that thread waits a number of signals from other threads. This + * is the best mechanism to use to synchronize threads since it doesn't require an heavy critical section. + */ +class FBXSDK_DLL FbxSemaphore +{ +public: + FbxSemaphore(); //!< Constructor + virtual ~FbxSemaphore(); //!< Destructor + + /** Wait indefinitely until the semaphore as been signaled as many times as specified. + * \param pCount Number of signal to wait before this function returns. + * \return True if the wait exit without errors. + * \remarks If pCount is set to zero, this function returns immediately without waiting. + */ + bool Wait(unsigned int pCount=1); + + /** Signal the semaphore as many times as specified. + * \param pCount The number of signal to send to the semaphore. + * \return True if the semaphore was signaled without errors. + */ + bool Signal(unsigned int pCount=1); + +private: + FbxSemaphoreImpl* mImpl; +}; + +/** A gate thread locking mechanism is very similar to a semaphore, except that when it is opened, any + * further call to wait will not wait until it is closed. It is generally used to block multiple threads + * until one of them open the gate to release them all. + */ +class FBXSDK_DLL FbxGate +{ +public: + FbxGate(); //!< Constructor + virtual ~FbxGate(); //!< Destructor + + /** Open the gate to release all threads waiting. + * \remarks All waiting threads will unblock until the gate is closed. + */ + void Open(); + + /** Close the gate so that the next time a thread call Wait() it will be blocked. */ + void Close(); + + /** Check if the gate is open. + * \return True if the gate is open, otherwise false. + */ + bool IsOpen(); + + /** Wait indefinitely until the gate open. + * \return True if the wait completed without errors. + * \remarks If the gate is already open, this function returns immediately. + */ + bool Wait(); + +private: + FbxGateImpl* mImpl; +}; + +/** A simple stack of linked items that is multi-thread safe, protected by a spinlock. + */ +class FBXSDK_DLL FbxSyncStack +{ +public: + //! A single link item to be used to construct the stack + struct Item + { + Item* mNext; + inline Item(){ mNext = NULL; } + inline Item* Set(Item* pNext){ return mNext = pNext; } + inline Item* Next(){ return mNext; } + }; + + //! Constructor + FbxSyncStack(); + + /** Add an item on the top of the stack. + * \param pItem The item to add on top of the stack. + */ + void Push(Item* pItem); + + /** Remove the item on the top of the stack. + * \return Returns the item on top of the stack, otherwise NULL if stack empty. + */ + Item* Pop(); + +private: + FbxSpinLock mLock; + Item* mTop; +}; + +#include + +#endif /* !FBXSDK_ENV_WINSTORE && !FBXSDK_ENV_EMSCRIPTEN */ + +#endif /* _FBXSDK_CORE_SYNC_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/sync/fbxthread.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/sync/fbxthread.h new file mode 100644 index 00000000..fcbde874 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/core/sync/fbxthread.h @@ -0,0 +1,99 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxthread.h +#ifndef _FBXSDK_CORE_SYNC_THREAD_H_ +#define _FBXSDK_CORE_SYNC_THREAD_H_ + +#include + +#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) + +#include + +class FbxThreadImpl; + +//! Definition of a thread procedure function signature. +typedef void (*FbxThreadProc)(void*); + +/** This class implement a standard way to use threads across platforms. + */ +class FBXSDK_DLL FbxThread +{ +public: + enum EState {eUnknown, eRunning, eDead}; + enum EPriority {eNone, eIdle, eLowest, eLow, eNormal, eHigh, eHighest, eRealTime}; + + /** Constructor + * \param pProc The procedure called upon thread startup. + * \param pArg The arguments passed to the procedure. + * \param pSuspend Start the thread suspended. + */ + FbxThread(FbxThreadProc pProc, void* pArg, bool pSuspend=false); + + /** Constructor + * \param pProc The procedure called upon thread startup. + * \param pArg The arguments passed to the procedure. + * \param pPriority The thread priority to set upon creation. + * \param pSuspend Start the thread suspended. + */ + FbxThread(FbxThreadProc pProc, void* pArg, EPriority pPriority, bool pSuspend=false); + + //! Destructor + virtual ~FbxThread(); + + /** Suspend the execution of the thread. + * \return Return true if the thread was successfully suspended, otherwise false. + * \remarks It should be used only if you can control where the thread will be suspended in its procedure, + * otherwise the state of the thread and its memory is unknown, since the code will stop anywhere. + */ + bool Suspend(); + + /** Resume the execution of the thread. + * \return Return true if the thread was successfully resumed, otherwise false. + */ + bool Resume(); + + /** Wait for the thread completion. + * \return True if the thread successfully returned from its procedure. + */ + bool Join(); + + /** Do not wait for the thread completion and terminate it. + * \return True if the thread successfully died. + */ + bool Kill(); + + /** Retrieve the priority of the thread. + * \return The thread's priority. + */ + EPriority GetPriority(); + + /** Set the thread priority. + * \param pPriority The priority to set to this thread. + * \return True if the thread priority was successfully changed. + */ + bool SetPriority(EPriority pPriority); + + /** Retrieve the thread current state. + * \return The state of the thread. + */ + EState GetState(); + +private: + FbxThreadImpl* mImpl; +}; + +#include + +#endif /* !FBXSDK_ENV_WINSTORE && !FBXSDK_ENV_EMSCRIPTEN */ + +#endif /* _FBXSDK_CORE_SYNC_THREAD_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fbxsdk_def.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fbxsdk_def.h new file mode 100644 index 00000000..d84469d5 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fbxsdk_def.h @@ -0,0 +1,55 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +/** \file fbxsdk_def.h + * FBX SDK environment definition. + * + * This file is the principal FBX SDK environment definition. It is used at the top of + * every header and source file so that every unit is using the same definitions. + */ +#ifndef _FBXSDK_DEFINITION_H_ +#define _FBXSDK_DEFINITION_H_ + +//--------------------------------------------------------------------------------------- +//System Includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------------------------- +//Define Version and Namespace +#include + +//--------------------------------------------------------------------------------------- +//Define Architecture +#include +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------------------------- +//Useful Macros +#define FBX_SAFE_DELETE(p) {FbxDelete(p);(p)=NULL;} +#define FBX_SAFE_DELETE_ARRAY(a) {FbxDeleteArray(a);(a)=NULL;} +#define FBX_SAFE_DESTROY(p) if(p){(p)->Destroy();(p)=NULL;} +#define FBX_SAFE_FREE(p) if(p){FbxFree(p);(p)=NULL;} + +#endif /* _FBXSDK_DEFINITION_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fbxsdk_nsbegin.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fbxsdk_nsbegin.h new file mode 100644 index 00000000..1b891868 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fbxsdk_nsbegin.h @@ -0,0 +1,17 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxsdk_nsbegin.h +#include + +#if FBXSDK_DEFINE_NAMESPACE == 1 + namespace FBXSDK_NAMESPACE { +#endif diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fbxsdk_nsend.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fbxsdk_nsend.h new file mode 100644 index 00000000..1aab836d --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fbxsdk_nsend.h @@ -0,0 +1,16 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxsdk_nsend.h + +#if FBXSDK_DEFINE_NAMESPACE == 1 + } +#endif diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fbxsdk_version.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fbxsdk_version.h new file mode 100644 index 00000000..117bff45 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fbxsdk_version.h @@ -0,0 +1,62 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +/** \file fbxsdk_version.h + * FBX SDK version definition. + * + * This file defines the version string and numbers for this release of the FBX SDK. + * \note This file should never be included directly, please include fbxsdk_def.h + * instead. + */ +#ifndef _FBXSDK_VERSION_H_ +#define _FBXSDK_VERSION_H_ + +//FBX SDK version defines +#define FBXSDK_VERSION_MAJOR 2016 // + +#include + +#include + +#include + +/** Representing a COLLADA animation element. + */ +class AnimationElement : public ElementBase +{ +public: + typedef ElementBase base_type; + + AnimationElement(); + virtual ~AnimationElement(); + + /** Get the count of animation channels in the element. + * \return Return the channel count. + */ + int GetChannelCount() const; + + /** Initialize with the content of a COLLADA element. + * This method should be called before ToFBX. + */ + void FromCOLLADA(xmlNode * pElement, const SourceElementMapType & pSourceElements); + + /** Initialize with an animation curve. + * This method should be called before ToCOLLADA. + * \param pCurve The specific animation curve. + * \param pUnitConversion The unit conversion for key value. + */ + void FromFBX(const FbxAnimCurve * pCurve, double pUnitConversion = 1.0); + + /** Copy the channel with specific index to the FBX animation curve. + * \param pFBXCurve The destination FBX animation curve. + * \param pChannelIndex The index of the source channel. + * \param pUnitConversion The unit conversion from local element to global. + */ + void ToFBX(FbxAnimCurve * pFBXCurve, int pChannelIndex, + double pUnitConversion = 1.0) const; + + /** Copy the matrix animation to the FBX node TRS properties. + * \param pFBXNode The destination FBX node. + * \param pAnimLayer The animation layer whose X, Y and Z curves will be set up. + * \param pUnitConversion The unit conversion from local element to global. + */ + void ToFBX(FbxNode * pFBXNode, FbxAnimLayer * pAnimLayer, + double pUnitConversion = 1.0) const; + + /** Add the content to COLLADA animation library. + * \param pAnimationLibrary The COLLADA animation library element. + * \param pNodeID The ID of the element to who this curve is belong. + * \param pAttributeSID The ID the attribute to who this curve is belong. + */ + void ToCOLLADA(xmlNode * pAnimationLibrary, const char * pNodeID, + const char * pAttributeSID); + +private: + int mKeyCount; + double * mInputArray; + double * mOutputArray; + int mOutputStride; + FbxString * mInterpolationArray; + int mInterpolationStride; + double * mInTangentArray; + int mInTangentStride; + double * mOutTangentArray; + int mOutTangentStride; +}; + +#include + +#endif /* _FBXSDK_FILEIO_COLLADA_ANIMATION_ELEMENT_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxcolladaelement.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxcolladaelement.h new file mode 100644 index 00000000..a415a3c1 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxcolladaelement.h @@ -0,0 +1,277 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcolladaelement.h +#ifndef _FBXSDK_FILEIO_COLLADA_ELEMENT_H_ +#define _FBXSDK_FILEIO_COLLADA_ELEMENT_H_ + +#include + +#include + +// Utility functions to convert type to array tag used in COLLADA source element +template +inline const FbxString TypeToArrayTag() +{ + return COLLADA_FLOAT_ARRAY_STRUCTURE; +} + +template <> +inline const FbxString TypeToArrayTag() +{ + return COLLADA_BOOL_ARRAY_STRUCTURE; +} + +template <> +inline const FbxString TypeToArrayTag() +{ + return COLLADA_INT_ARRAY_STRUCTURE; +} + +template <> +inline const FbxString TypeToArrayTag() +{ + return COLLADA_NAME_ARRAY_STRUCTURE; +} + +// Utility functions to convert type to parameter tag used in COLLADA source element +template +inline const FbxString TypeToParameterTag() +{ + return COLLADA_FLOAT_TYPE; +} + +template <> +inline const FbxString TypeToParameterTag() +{ + return COLLADA_BOOL_TYPE; +} + +template <> +inline const FbxString TypeToParameterTag() +{ + return COLLADA_INT_TYPE; +} + +template <> +inline const FbxString TypeToParameterTag() +{ + return COLLADA_NAME_TYPE; +} + +//----------------------------------------------------------------------------// + +/** A struct for convenient access to the content of common COLLADA element. + */ +struct ElementContentAccessor +{ + ElementContentAccessor(); + ElementContentAccessor(xmlNode * pElement); + virtual ~ElementContentAccessor(); + + template + bool GetNext(TYPE * pData) + { + return FromString(pData, mPointer, &mPointer); + } + + template + int GetArray(TYPE * pArray, + int pSourceUnitOffset = 0, int pSourceUnitValidCount = 1, int pSourceUnitSize = 1, + int pDestUnitOffset = 0, int pDestUnitValidCount = 1, int pDestUnitSize = 1, + TYPE pDefaultValue = TYPE()) + { + if (pArray) + { + return FromStringToArray(mPointer, pArray, + pSourceUnitOffset, pSourceUnitValidCount, pSourceUnitSize, + pDestUnitOffset, pDestUnitValidCount, pDestUnitSize, pDefaultValue); + } + return 0; + } + + xmlChar * mContent; + const char * mPointer; +}; + +//----------------------------------------------------------------------------// + +/** A struct for convenient access to the content of COLLADA source element. + */ +template +struct SourceElementContentAccessor : public ElementContentAccessor +{ + SourceElementContentAccessor(xmlNode * pSourceElement) + : mCount(0), mStride(1), mOffset(0) + { + bool lReadCount = true; + xmlNode* lTechniqueElement = DAE_FindChildElementByTag(pSourceElement, COLLADA_TECHNIQUE_COMMON_ELEMENT); + if (lTechniqueElement) + { + xmlNode* lAccessorElement = DAE_FindChildElementByTag(lTechniqueElement, COLLADA_ACCESSOR_STRUCTURE); + FBX_ASSERT(lAccessorElement); + if (!lAccessorElement) + return; + + DAE_GetElementAttributeValue(lAccessorElement, COLLADA_COUNT_PROPERTY, mCount); + DAE_GetElementAttributeValue(lAccessorElement, COLLADA_STRIDE_PROPERTY, mStride); + DAE_GetElementAttributeValue(lAccessorElement, COLLADA_OFFSET_PROPERTY, mOffset); + lReadCount = false; + } + + xmlNode * lDataArrayElement = DAE_FindChildElementByTag(pSourceElement, + TypeToArrayTag()); + // Some COLLADA exporters use IDREF_array instead of Name_array + if (!lDataArrayElement && TypeToArrayTag() == COLLADA_NAME_ARRAY_STRUCTURE) + lDataArrayElement = DAE_FindChildElementByTag(pSourceElement, COLLADA_IDREF_ARRAY_STRUCTURE); + FBX_ASSERT(lDataArrayElement); + + if (lDataArrayElement && lReadCount) + DAE_GetElementAttributeValue(lDataArrayElement, COLLADA_COUNT_PROPERTY, mCount); + + mContent = xmlNodeGetContent(lDataArrayElement); + mPointer = (const char *)mContent; + } + + int mCount; + int mStride; + int mOffset; +}; + +//----------------------------------------------------------------------------// + +/** Representing a common COLLADA element. + */ +class ElementBase +{ +public: + enum + { + MATRIX_STRIDE = 16, + }; + + // The name of user property in FBX which is used to preserve the ID of COLLADA element + static const char* smID_PROPERTY_NAME; + + /** Constructor & Destructor. + */ + ElementBase(); + virtual ~ElementBase(); + + /** Access for XML element. + */ + void SetXMLElement(xmlNode * pElement) { mXMLElement = pElement; } + xmlNode * GetXMLElement() const { return mXMLElement; } + + /** Get the ID of the element. + * \return Return the ID string. + */ + const FbxString & GetID() const; + + /** Get the unit of the element, + * which takes effect in this element and its children elements. + * \return Return the unit. + */ + const FbxSystemUnit * GetUnit() const; + +private: + xmlNode * mXMLElement; + mutable FbxString * mID; + mutable FbxSystemUnit * mUnit; +}; + +/** Convert from ID to URL, just add a prefix "#". + * \param pID The ID string. + * \return Return the URL string. + */ +inline const FbxString URL(const FbxString & pID) +{ + return FbxString("#") + pID; +} + +/** Convert the array data to a source element under specific parent element. + * \param pParentElement The parent element. + * \param pID The ID of the new source element. + * \param pData The array data. + * \param pCount The length of the array. + * \param pStride The stride of each unit in the array. For example, when you + * export an array of FbxDouble3 of size 10, you convert it to a double array + * of size 30 with a stride 3 and call this method. + * \return The new source element. + */ +template +xmlNode * AddSourceElement(xmlNode * pParentElement, const char * pID, + const T * pData, int pCount, int pStride = 1) +{ + FBX_ASSERT(pParentElement && pData); + if (!pParentElement || !pData) + return NULL; + + xmlNode * lSourceElement = DAE_AddChildElement(pParentElement, COLLADA_SOURCE_STRUCTURE); + DAE_AddAttribute(lSourceElement, COLLADA_ID_PROPERTY, pID); + + FbxString lContent; + const int lDataCount = pCount * pStride; + for (int lIndex = 0; lIndex < lDataCount; ++lIndex) + { + lContent += ToString(pData[lIndex]); + if (lIndex != lDataCount - 1) + lContent += " "; + } + const FbxString lArrayID = FbxString(pID) + "-array"; + xmlNode * lArrayElement = DAE_AddChildElement(lSourceElement, TypeToArrayTag(), lContent); + DAE_AddAttribute(lArrayElement, COLLADA_ID_PROPERTY, lArrayID); + DAE_AddAttribute(lArrayElement, COLLADA_COUNT_PROPERTY, lDataCount); + + xmlNode * lTechniqueCommonElement = DAE_AddChildElement(lSourceElement, + COLLADA_TECHNIQUE_COMMON_ELEMENT); + xmlNode * lAccessElement = DAE_AddChildElement(lTechniqueCommonElement, + COLLADA_ACCESSOR_STRUCTURE); + DAE_AddAttribute(lAccessElement, COLLADA_SOURCE_PROPERTY, URL(lArrayID)); + DAE_AddAttribute(lAccessElement, COLLADA_COUNT_PROPERTY, pCount); + DAE_AddAttribute(lAccessElement, COLLADA_STRIDE_PROPERTY, pStride); + + for (int lStrideIndex = 0; lStrideIndex < pStride; ++lStrideIndex) + { + xmlNode * lParamElement = DAE_AddChildElement(lAccessElement, COLLADA_PARAMETER_STRUCTURE); + DAE_AddAttribute(lParamElement, COLLADA_TYPE_PROPERTY, TypeToParameterTag()); + } + + return lSourceElement; +} + +/** Populate the layer element with direct array and return index array for later use. + * \param pLayerElement The layer element to be populated. + * \param pSourceElement The source element containing the direct array data. + * \param pSize The count of double data of direct array element. + * \return Return the index array of the layer element. + */ +template FbxLayerElementArray * PopulateLayerElementDirectArray(FbxLayerElement * pLayerElement, xmlNode * pSourceElement, int pSize) +{ + SourceElementContentAccessor lSourceElementAccessor(pSourceElement); + + FbxLayerElementTemplate * lLayerElement = (FbxLayerElementTemplate *)pLayerElement; + lLayerElement->SetMappingMode(FbxLayerElement::eByPolygonVertex); + lLayerElement->SetReferenceMode(FbxLayerElement::eIndexToDirect); + lLayerElement->GetDirectArray().SetCount(lSourceElementAccessor.mCount); + + TYPE * lArray = NULL; + lArray = lLayerElement->GetDirectArray().GetLocked(lArray); + lSourceElementAccessor.GetArray((double *)lArray, 0, pSize, + lSourceElementAccessor.mStride, 0, pSize, sizeof(TYPE)/sizeof(double), 1.0); + lLayerElement->GetDirectArray().Release(&lArray, lArray); + + return &(lLayerElement->GetIndexArray()); +} + +#include + +#endif /* _FBXSDK_FILEIO_COLLADA_ELEMENT_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxcolladaiostream.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxcolladaiostream.h new file mode 100644 index 00000000..194f261e --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxcolladaiostream.h @@ -0,0 +1,127 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcolladaiostream.h +#ifndef _FBXSDK_FILEIO_COLLADA_IO_STREAM_H_ +#define _FBXSDK_FILEIO_COLLADA_IO_STREAM_H_ + +#include + +#include + +//----------------------------------------------------------------------------// + +/** Convert part of the source string into destination type. + * \param pDest The destination with a specific type. + * \param pSourceBegin The begin of the source string. + * \param pSourceEnd Return the end of the part of the source string. + * \return Return \c true on success and \c false if else. + */ +template bool FromString(T * pDest, const char * pSourceBegin, const char ** pSourceEnd = NULL); +template <> bool FromString(int * pDest, const char * pSourceBegin, const char ** pSourceEnd); +template <> bool FromString(double * pDest, const char * pSourceBegin, const char ** pSourceEnd); +template <> bool FromString(FbxString * pDest, const char * pSourceBegin, const char ** pSourceEnd); +template <> bool FromString(FbxDouble2 * pDest, const char * pSourceBegin, const char ** pSourceEnd); +template <> bool FromString(FbxDouble3 * pDest, const char * pSourceBegin, const char ** pSourceEnd); +template <> bool FromString(FbxDouble4 * pDest, const char * pSourceBegin, const char ** pSourceEnd); +template <> bool FromString(FbxVector4 * pDest, const char * pSourceBegin, const char ** pSourceEnd); +template <> bool FromString(FbxAMatrix * pDest, const char * pSourceBegin, const char ** pSourceEnd); +template <> bool FromString(FbxAMatrix * pDest, const char * pSourceBegin, const char ** pSourceEnd); + + + +/** Parse the string into an array. + * The source string is made up with many groups and each group contains pSourceGroupSize units separated by spaces; + * The destination array is also made up with many groups and each unit contains pDestGroupSize units. + * The valid unit range in each source group is [pSourceUnitOffset, pSourceUnitOffset + pSourceValidUnitCount). + * The valid unit range in each destination unit is [pDestUnitOffset, pDestUnitOffset + pDestValidUnitCount). + * The units in invalid range of destination is set to a default value. + */ +template int FromStringToArray(const char * pString, TYPE * pArray, int pSourceUnitOffset, int pSourceValidUnitCount, int pSourceGroupSize, int pDestUnitOffset, int pDestValidUnitCount, int pDestGroupSize, TYPE pDefaultValue = TYPE()) +{ + if (pString == 0 || pArray == 0) + return 0; + + FBX_ASSERT(pSourceUnitOffset >= 0 && pSourceUnitOffset < pSourceGroupSize); + FBX_ASSERT(pSourceValidUnitCount >= 0 && pSourceUnitOffset + pSourceValidUnitCount <= pSourceGroupSize); + FBX_ASSERT(pDestUnitOffset >= 0 && pDestUnitOffset < pDestGroupSize); + FBX_ASSERT(pDestValidUnitCount >= 0 && pDestUnitOffset + pDestValidUnitCount <= pDestGroupSize); + const char * lSource = pString; + TYPE * lDest = pArray; + + int lReadCount = 0; + int lSourceCounter = 0; + int lDestCounter = 0; + const int lSourceUnitValidEnd = pSourceUnitOffset + pSourceValidUnitCount; + const int lDestUnitGap = pDestGroupSize - pDestValidUnitCount - pDestUnitOffset; + while (lSource && *lSource) + { + TYPE lData; + const char * lSourceStart = lSource; + if (FromString(&lData, lSource, &lSource) && lSourceCounter >= pSourceUnitOffset && lSourceCounter < lSourceUnitValidEnd) + { + if (lDestCounter == 0) + { + for (int lIndex = 0; lIndex < pDestUnitOffset; ++lIndex) + *(lDest++) = pDefaultValue; + } + + *lDest++ = lData; + ++lReadCount; + ++lDestCounter; + if (lDestCounter == pDestValidUnitCount) + { + lDestCounter = 0; + for (int lIndex = 0; lIndex < lDestUnitGap; ++lIndex) + *lDest++ = pDefaultValue; + } + } + else + { + // we met a stop condition of FromString. In the normal case, lSource should now be "" or ' '. If not, + // the converted string is corrupted and we have to break the loop. We can detect this by checking + // if lSource pointer has moved. + if (lSource == lSourceStart) + { + break; + } + } + ++lSourceCounter; + if (lSourceCounter == pSourceGroupSize) + lSourceCounter = 0; + } + return lReadCount; +} + +//----------------------------------------------------------------------------// + +template +const FbxString ToString(const T & pValue) +{ + return FbxString(pValue); +} +template <> +const FbxString ToString(const FbxVector4 & pValue); +template <> +const FbxString ToString(const FbxAMatrix & pValue); + +//----------------------------------------------------------------------------// + +/** Decode percent encoded characters, returns an empty string if there's an error. + * For example, a string like "abc%20abc" is converted into "abc abc". + * \param pEncodedString The percent encoded string. + * \return The decoded string. + */ +const FbxString DecodePercentEncoding(const FbxString & pEncodedString); + +#include + +#endif /* _FBXSDK_FILEIO_COLLADA_IO_STREAM_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxcolladanamespace.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxcolladanamespace.h new file mode 100644 index 00000000..1e977fd9 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxcolladanamespace.h @@ -0,0 +1,71 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcolladanamespace.h +#ifndef _FBXSDK_FILEIO_COLLADA_NAMESPACE_H_ +#define _FBXSDK_FILEIO_COLLADA_NAMESPACE_H_ + +#include + +#include + +#include + +/** Containing the valid parameter definition and modification in local scope. + */ +struct FbxColladaNamespace +{ +public: + /** Push the newparam and setparam elements found in this element. + * Call this method at the beginning of importing an element. + * \param pElement The specific element. + */ + void Push(xmlNode * pElement); + + /** Pop the newparam and setparam elements found in this element. + * Call this method at the end of importing an element. + */ + void Pop(); + + /** Find the specific newparam element with given SID. + * \param pSID The given SID. + * \return Return the found element or NULL if fail. + */ + xmlNode * FindParamDefinition(const char * pSID) const; + + /** Find the specific setparam element with given SID. + * \param pSID The given SID. + * \return Return the found element or NULL if fail. + */ + xmlNode * FindParamModification(const char * pSID) const; + + /** Get the count of all the setparam elements in local scope. + * \return The count. + */ + int GetParamModificationCount() const; + + /** Get the setparam element with given index. + * \param pIndex The given index. + * \return The element. + */ + xmlNode * GetParamModification(int pIndex) const; + +private: + FbxArray mParamDefinition; + FbxArray mParamDefinitionCount; + + FbxArray mParamModification; + FbxArray mParamModificationCount; +}; + +#include + +#endif /* _FBXSDK_FILEIO_COLLADA_NAMESPACE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxcolladatokens.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxcolladatokens.h new file mode 100644 index 00000000..bffd356a --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxcolladatokens.h @@ -0,0 +1,472 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcolladatokens.h +#ifndef _FBXSDK_FILEIO_COLLADA_TOKENS_H_ +#define _FBXSDK_FILEIO_COLLADA_TOKENS_H_ + +#define XML_STR (const xmlChar*) + +// In COLLADA, 1 means total control, while 100 means total control in FBX. +const int COLLADA_MORPH_WEIGHT_TO_FBX_RATIO = 100; + +#define COLLADA_VERSION_PROPERTY "version" +#define COLLADA_VERSION "1.4.1" +#define COLLADA_SCHEMA "http://www.collada.org/2005/11/COLLADASchema" + +// COLLADA 1.4 elements +#define COLLADA_LIBRARY_ANIMATION_ELEMENT "library_animations" +#define COLLADA_LIBRARY_ANIMATION_CLIP_ELEMENT "library_animation_clips" +#define COLLADA_LIBRARY_CAMERA_ELEMENT "library_cameras" +#define COLLADA_LIBRARY_CONTROLLER_ELEMENT "library_controllers" +#define COLLADA_LIBRARY_EFFECT_ELEMENT "library_effects" +#define COLLADA_LIBRARY_FFIELDS_ELEMENT "library_force_fields" +#define COLLADA_LIBRARY_GEOMETRY_ELEMENT "library_geometries" +#define COLLADA_LIBRARY_IMAGE_ELEMENT "library_images" +#define COLLADA_LIBRARY_LIGHT_ELEMENT "library_lights" +#define COLLADA_LIBRARY_MATERIAL_ELEMENT "library_materials" +#define COLLADA_LIBRARY_NODE_ELEMENT "library_nodes" +#define COLLADA_LIBRARY_PMATERIAL_ELEMENT "library_physics_materials" +#define COLLADA_LIBRARY_PMODEL_ELEMENT "library_physics_models" +#define COLLADA_LIBRARY_PSCENE_ELEMENT "library_physics_scenes" +#define COLLADA_LIBRARY_VSCENE_ELEMENT "library_visual_scenes" + +#define COLLADA_INSTANCE_ANIMATION_ELEMENT "instance_animation" +#define COLLADA_INSTANCE_CAMERA_ELEMENT "instance_camera" +#define COLLADA_INSTANCE_CONTROLLER_ELEMENT "instance_controller" +#define COLLADA_INSTANCE_EFFECT_ELEMENT "instance_effect" +#define COLLADA_INSTANCE_GEOMETRY_ELEMENT "instance_geometry" +#define COLLADA_INSTANCE_LIGHT_ELEMENT "instance_light" +#define COLLADA_INSTANCE_NODE_ELEMENT "instance_node" +#define COLLADA_INSTANCE_VSCENE_ELEMENT "instance_visual_scene" +#define COLLADA_INSTANCE_PSCENE_ELEMENT "instance_physics_scene" +#define COLLADA_INSTANCE_MATERIAL_ELEMENT "instance_material" + +#define COLLADA_ANIMCLIP_ELEMENT "animation_clip" +#define COLLADA_BINDMATERIAL_ELEMENT "bind_material" +#define COLLADA_EFFECT_ELEMENT "effect" +#define COLLADA_INITFROM_ELEMENT "init_from" +#define COLLADA_SAMPLER_ELEMENT "sampler" +#define COLLADA_SKELETON_ELEMENT "skeleton" +#define COLLADA_TARGETS_ELEMENT "targets" +#define COLLADA_TECHNIQUE_COMMON_ELEMENT "technique_common" +#define COLLADA_VSCENE_ELEMENT "visual_scene" +#define COLLADA_WEIGHTS_ELEMENT "vertex_weights" +#define COLLADA_VERTEXCOUNT_ELEMENT "vcount" + +#define COLLADA_FX_PROFILE_COMMON_ELEMENT "profile_COMMON" +#define COLLADA_FX_PROFILE_CG_ELEMENT "profile_CG" +#define COLLADA_FX_PROFILE_HLSL_ELEMENT "profile_HLSL" +#define COLLADA_FX_PROFILE_GLSL_ELEMENT "profile_GLSL" +#define COLLADA_FX_PROFILE_GLES_ELEMENT "profile_GLES" + +#define COLLADA_FXCMN_FLOAT_ELEMENT "float" +#define COLLADA_FXCMN_FLOAT4_ELEMENT "float4" +#define COLLADA_FXCMN_FLOAT4X4_ELEMENT "float4x4" +#define COLLADA_FXCMN_INCLUDE_ELEMENT "include" +#define COLLADA_FXCMN_SURFACE_ELEMENT "surface" +#define COLLADA_FXCMN_SAMPLER1D_ELEMENT "sampler1D" +#define COLLADA_FXCMN_SAMPLER2D_ELEMENT "sampler2D" +#define COLLADA_FXCMN_SAMPLER3D_ELEMENT "sampler3D" +#define COLLADA_FXCMN_SAMPLERCUBE_ELEMENT "samplerCUBE" +#define COLLADA_FXCMN_NEWPARAM_ELEMENT "newparam" +#define COLLADA_FXCMN_SETPARAM_ELEMENT "setparam" +#define COLLADA_FXCMN_STRING_ELEMENT "string" + +#define COLLADA_TECHNIQUE_STANDARD_PARAMETER "standard" + +#define COLLADA_FXSTD_CONSTANT_ELEMENT "constant" +#define COLLADA_FXSTD_LAMBERT_ELEMENT "lambert" +#define COLLADA_FXSTD_PHONG_ELEMENT "phong" +#define COLLADA_FXSTD_BLINN_ELEMENT "blinn" +#define COLLADA_FXSTD_COLOR_ELEMENT "color" +#define COLLADA_FXSTD_FLOAT_ELEMENT "float" +#define COLLADA_FXSTD_SAMPLER_ELEMENT "texture" +#define COLLADA_FXSTD_TEXTURE_ATTRIBUTE "texture" +#define COLLADA_FXSTD_TEXTURESET_ATTRIBUTE "texcoord" + +#define COLLADA_CONTROLLER_SKIN_ELEMENT "skin" +#define COLLADA_CONTROLLER_MORPH_ELEMENT "morph" + +#define COLLADA_CAMERA_PERSP_ELEMENT "perspective" +#define COLLADA_CAMERA_ORTHO_ELEMENT "orthographic" + +#define COLLADA_ASPECT_CAMERA_PARAMETER "aspect_ratio" +#define COLLADA_XFOV_CAMERA_PARAMETER "xfov" +#define COLLADA_YFOV_CAMERA_PARAMETER "yfov" +#define COLLADA_ZNEAR_CAMERA_PARAMETER "znear" +#define COLLADA_ZFAR_CAMERA_PARAMETER "zfar" +#define COLLADA_XMAG_CAMERA_PARAMETER "xmag" +#define COLLADA_YMAG_CAMERA_PARAMETER "ymag" +#define COLLADA_CAMERA_VERTICAL_APERTURE_PARAMETER "vertical_aperture" +#define COLLADA_CAMERA_HORIZONTAL_APERTURE_PARAMETER "horizontal_aperture" +#define COLLADA_CAMERA_LENS_SQUEEZE_PARAMETER "lens_squeeze" + +#define COLLADA_AMBIENT_MATERIAL_PARAMETER "ambient" +#define COLLADA_BUMP_MATERIAL_PARAMETER "bump" +#define COLLADA_DIFFUSE_MATERIAL_PARAMETER "diffuse" +#define COLLADA_EMISSION_MATERIAL_PARAMETER "emission" +#define COLLADA_TRANSPARENCY_MATERIAL_PARAMETER "transparency" +#define COLLADA_TRANSPARENT_MATERIAL_PARAMETER "transparent" +#define COLLADA_REFLECTIVE_MATERIAL_PARAMETER "reflective" +#define COLLADA_REFLECTIVITY_MATERIAL_PARAMETER "reflectivity" +#define COLLADA_SHININESS_MATERIAL_PARAMETER "shininess" +#define COLLADA_SPECULAR_MATERIAL_PARAMETER "specular" +#define COLLADA_INDEXOFREFRACTION_MATERIAL_PARAMETER "index_of_refraction" +#define COLLADA_OPAQUE_MODE_ATTRIBUTE "opaque" +#define COLLADA_OPAQUE_MODE_A_ONE "A_ONE" +#define COLLADA_OPAQUE_MODE_RGB_ONE "RGB_ONE" +#define COLLADA_OPAQUE_MODE_A_ZERO "A_ZERO" +#define COLLADA_OPAQUE_MODE_RGB_ZERO "RGB_ZERO" + +#define COLLADA_LIGHT_AMBIENT_ELEMENT "ambient" +#define COLLADA_LIGHT_POINT_ELEMENT "point" +#define COLLADA_LIGHT_DIRECTIONAL_ELEMENT "directional" +#define COLLADA_LIGHT_SPOT_ELEMENT "spot" + +#define COLLADA_COLOR_LIGHT_PARAMETER "color" +#define COLLADA_CONST_ATTENUATION_LIGHT_PARAMETER "constant_attenuation" +#define COLLADA_LIN_ATTENUATION_LIGHT_PARAMETER "linear_attenuation" +#define COLLADA_QUAD_ATTENUATION_LIGHT_PARAMETER "quadratic_attenuation" +#define COLLADA_FALLOFFEXPONENT_LIGHT_PARAMETER "falloff_exponent" +#define COLLADA_FALLOFFANGLE_LIGHT_PARAMETER "falloff_angle" + +#define COLLADA_BINDSHAPEMX_SKIN_PARAMETER "bind_shape_matrix" + +#define COLLADA_CONTRIBUTOR_ASSET_ELEMENT "contributor" +#define COLLADA_AUTHOR_ASSET_PARAMETER "author" +#define COLLADA_AUTHORINGTOOL_ASSET_PARAMETER "authoring_tool" +#define COLLADA_CREATED_ASSET_PARAMETER "created" +#define COLLADA_MODIFIED_ASSET_PARAMETER "modified" +#define COLLADA_REVISION_ASSET_PARAMETER "revision" +#define COLLADA_SOURCEDATA_ASSET_PARAMETER "source_data" +#define COLLADA_UNITS_ASSET_PARAMETER "unit" +#define COLLADA_UPAXIS_ASSET_PARAMETER "up_axis" + +#define COLLADA_SYMBOL_PROPERTY "symbol" + +// From Collada 1.3 +#define COLLADA_DOCUMENT_STRUCTURE "COLLADA" +#define COLLADA_ASSET_STRUCTURE "asset" +#define COLLADA_REVISION_STRUCTURE "revision" +#define COLLADA_AUTHORING_TOOL_STRUCTURE "authoring_tool" +#define COLLADA_CREATED_STRUCTURE "created" +#define COLLADA_MODIFIED_STRUCTURE "modified" +#define COLLADA_AUTHOR_STRUCTURE "author" +#define COLLADA_TITLE_STRUCTURE "title" +#define COLLADA_SUBJECT_STRUCTURE "subject" +#define COLLADA_KEYWORDS_STRUCTURE "keywords" +#define COLLADA_COMMENTS_STRUCTURE "comments" +#define COLLADA_UNIT_STRUCTURE "unit" +#define COLLADA_SOURCE_DATA_STRUCTURE "source_data" +#define COLLADA_UP_AXIS_STRUCTURE "up_axis" +#define COLLADA_LIBRARY_STRUCTURE "library" // Deprecated 1.4 +#define COLLADA_SCENE_STRUCTURE "scene" +#define COLLADA_NODE_STRUCTURE "node" +#define COLLADA_MATRIX_STRUCTURE "matrix" +#define COLLADA_TRANSFORM_STRUCTURE "transform" +#define COLLADA_TRANSLATE_STRUCTURE "translate" +#define COLLADA_TRANSLATION_STRUCTURE "translation" // For ColladaMax +#define COLLADA_TRANSLATE_ORIGIN "origin" //A fix for Poser(Bug 309548). Handle translate origin info exported from Poser. +#define COLLADA_TRANSLATE_LOCATION "location" //A fix for ? (Bug BARB-154). "location" is synonyn of "translate" ? +#define COLLADA_ROTATE_STRUCTURE "rotate" +#define COLLADA_SCALE_STRUCTURE "scale" +#define COLLADA_SKEW_STRUCTURE "skew" +#define COLLADA_ROTATE_X "rotateX" +#define COLLADA_ROTATE_Y "rotateY" +#define COLLADA_ROTATE_Z "rotateZ" +#define COLLADA_ROT_X "RotX" // For ColladaMax +#define COLLADA_ROT_Y "RotY" +#define COLLADA_ROT_Z "RotZ" +#define COLLADA_ROTATION_X "rotation_x" // For XSI +#define COLLADA_ROTATION_Y "rotation_y" +#define COLLADA_ROTATION_Z "rotation_z" +#define COLLADA_ROTATIONX "rotationX" // BARB-154 +#define COLLADA_ROTATIONY "rotationY" +#define COLLADA_ROTATIONZ "rotationZ" + +#define COLLADA_ROTATE_PIVOT "rotatePivot" // the next 6 subids are recognized by ColladaMaya +#define COLLADA_SCALE_PIVOT "scalePivot" +#define COLLADA_ROTATE_PIVOT_INVERSE "rotatePivotInverse" +#define COLLADA_SCALE_PIVOT_INVERSE "scalePivotInverse" +#define COLLADA_ROTATE_PIVOT_OFFSET "rotatePivotTranslation" +#define COLLADA_SCALE_PIVOT_OFFSET "scalePivotTranslation" +#define COLLADA_PRE_ROTATION_X "jointOrientX" // these 3 subids recognized by ColladaMaya +#define COLLADA_PRE_ROTATION_Y "jointOrientY" +#define COLLADA_PRE_ROTATION_Z "jointOrientZ" +#define COLLADA_POST_ROTATION_X "post-rotationX" // these 3 subids NOT recognized by ColladaMaya +#define COLLADA_POST_ROTATION_Y "post-rotationY" +#define COLLADA_POST_ROTATION_Z "post-rotationZ" +#define COLLADA_ROTATE_AXIS_X "rotateAxisX" // these 3 subids recognized by ColladaMaya +#define COLLADA_ROTATE_AXIS_Y "rotateAxisY" +#define COLLADA_ROTATE_AXIS_Z "rotateAxisZ" +#define COLLADA_LOOKAT_STRUCTURE "lookat" +#define COLLADA_PERSPECTIVE_STRUCTURE "perspective" +#define COLLADA_GEOMETRY_STRUCTURE "geometry" +#define COLLADA_MESH_STRUCTURE "mesh" +#define COLLADA_VERTICES_STRUCTURE "vertices" +#define COLLADA_POLYGONS_STRUCTURE "polygons" +#define COLLADA_POLYLIST_STRUCTURE "polylist" +#define COLLADA_TRIANGLES_STRUCTURE "triangles" +#define COLLADA_P_STRUCTURE "p" +#define COLLADA_ANIMATION_STRUCTURE "animation" +#define COLLADA_CONTROLLER_STRUCTURE "controller" +#define COLLADA_SKIN_STRUCTURE "skin" +#define COLLADA_COMBINER_STRUCTURE "combiner" +#define COLLADA_JOINTS_STRUCTURE "joints" +#define COLLADA_VALUE_STRUCTURE "v" +#define COLLADA_MATERIAL_STRUCTURE "material" +#define COLLADA_SHADER_STRUCTURE "shader" +#define COLLADA_PASS_STRUCTURE "pass" +#define COLLADA_PROGRAM_STRUCTURE "program" +#define COLLADA_TEXTURE_STRUCTURE "texture" +#define COLLADA_IMAGE_STRUCTURE "image" +#define COLLADA_INPUT_STRUCTURE "input" +#define COLLADA_TECHNIQUE_STRUCTURE "technique" +#define COLLADA_SOURCE_STRUCTURE "source" +#define COLLADA_ACCESSOR_STRUCTURE "accessor" +#define COLLADA_EXTRA_STRUCTURE "extra" +#define COLLADA_BOUNDINGBOX_STRUCTURE "boundingbox" +#define COLLADA_MIN_STRUCTURE "min" +#define COLLADA_MAX_STRUCTURE "max" + +#define COLLADA_ARRAY_STRUCTURE "array" +#define COLLADA_FLOAT_ARRAY_STRUCTURE "float_array" +#define COLLADA_INT_ARRAY_STRUCTURE "int_array" +#define COLLADA_NAME_ARRAY_STRUCTURE "Name_array" +#define COLLADA_IDREF_ARRAY_STRUCTURE "IDREF_array" +#define COLLADA_BOOL_ARRAY_STRUCTURE "bool_array" + +#define COLLADA_SAMPLER_STRUCTURE "sampler" +#define COLLADA_CHANNEL_STRUCTURE "channel" +#define COLLADA_CAMERA_STRUCTURE "camera" +#define COLLADA_LIGHT_STRUCTURE "light" +#define COLLADA_OPTICS_STRUCTURE "optics" +#define COLLADA_PROGRAM_STRUCTURE "program" +#define COLLADA_PARAMETER_STRUCTURE "param" + +#define COLLADA_TYPE_PROPERTY "type" +#define COLLADA_ID_PROPERTY "id" +#define COLLADA_SUBID_PROPERTY "sid" +#define COLLADA_NAME_PROPERTY "name" +#define COLLADA_LAYER_PROPERTY "layer" +#define COLLADA_COUNT_PROPERTY "count" +#define COLLADA_STRIDE_PROPERTY "stride" +#define COLLADA_URL_PROPERTY "url" +#define COLLADA_SEMANTIC_PROPERTY "semantic" +#define COLLADA_SOURCE_PROPERTY "source" +#define COLLADA_TARGET_PROPERTY "target" +#define COLLADA_PROFILE_PROPERTY "profile" +#define COLLADA_MATERIAL_PROPERTY "material" +#define COLLADA_METER_PROPERTY "meter" +#define COLLADA_IDX_PROPERTY "idx" +#define COLLADA_SET_PROPERTY "set" +#define COLLADA_OFFSET_PROPERTY "offset" +#define COLLADA_FLOW_PROPERTY "flow" +#define COLLADA_FORMAT_PROPERTY "format" +#define COLLADA_HEIGHT_PROPERTY "height" +#define COLLADA_WIDTH_PROPERTY "width" +#define COLLADA_DEPTH_PROPERTY "depth" +#define COLLADA_REF_PROPERTY "ref" + +#define COLLADA_GEOMETRY_LIBRARY_TYPE "GEOMETRY" +#define COLLADA_CONTROLLER_LIBRARY_TYPE "CONTROLLER" +#define COLLADA_ANIMATION_LIBRARY_TYPE "ANIMATION" +#define COLLADA_MATERIAL_LIBRARY_TYPE "MATERIAL" +#define COLLADA_TEXTURE_LIBRARY_TYPE "TEXTURE" +#define COLLADA_IMAGE_LIBRARY_TYPE "IMAGE" +#define COLLADA_LIGHT_LIBRARY_TYPE "LIGHT" +#define COLLADA_CAMERA_LIBRARY_TYPE "CAMERA" + +#define COLLADA_LAMBERT_SHADER_TYPE "LAMBERT" +#define COLLADA_PHONG_SHADER_TYPE "PHONG" +#define COLLADA_CONSTANT_SHADER_TYPE "CONSTANT" + +#define COLLADA_NAME_TYPE "name" +#define COLLADA_IDREF_TYPE "IDREF" +#define COLLADA_FLOAT_TYPE "float" +#define COLLADA_BOOL_TYPE "bool" +#define COLLADA_INT_TYPE "int" +#define COLLADA_FLOAT3_TYPE "float3" +#define COLLADA_FLOAT4_TYPE "float4" +#define COLLADA_FUNCTION_TYPE "function" +#define COLLADA_MATRIX_TYPE "float4x4" +#define COLLADA_STRING_TYPE "string" + +#define COLLADA_JOINT_NODE_TYPE "JOINT" +#define COLLADA_NODE_NODE_TYPE "NODE" + +#define COLLADA_TEXTURE_SEMANTIC "TEXTURE" +#define COLLADA_IMAGE_SEMANTIC "IMAGE" +#define COLLADA_INPUT_SEMANTIC "INPUT" +#define COLLADA_OUTPUT_SEMANTIC "OUTPUT" +#define COLLADA_IN_TANGENT_SEMANTIC "IN_TANGENT" +#define COLLADA_OUT_TANGENT_SEMANTIC "OUT_TANGENT" +#define COLLADA_INTERPOLATION_SEMANTIC "INTERPOLATION" +#define COLLADA_JOINT_SEMANTIC "JOINT" +#define COLLADA_BIND_POSITION_SEMANTIC "BIND_SHAPE_POSITION" +#define COLLADA_BIND_NORMAL_SEMANTIC "BIND_SHAPE_NORMAL" +#define COLLADA_JOINT_AND_WEIGHT_SEMANTIC "JOINTS_AND_WEIGHTS" +#define COLLADA_BIND_MATRIX_SEMANTIC "INV_BIND_MATRIX" +#define COLLADA_JOINT_PARAMETER "JOINT" +#define COLLADA_WEIGHT_PARAMETER "WEIGHT" +#define COLLADA_MORPH_TARGET_SEMANTIC "MORPH_TARGET" +#define COLLADA_MORPH_WEIGHT_SEMANTIC "MORPH_WEIGHT" + +#define COLLADA_GENERIC_TECHNIQUE "COMMON" + +#define COLLADA_TIME_TARGET "TIME" + +#define COLLADA_VERTEX_INPUT "VERTEX" +#define COLLADA_POSITION_INPUT "POSITION" +#define COLLADA_NORMAL_INPUT "NORMAL" +#define COLLADA_COLOR_INPUT "COLOR" +#define COLLADA_MAPPING_INPUT "UV" +#define COLLADA_TEXCOORD_INPUT "TEXCOORD" +#define COLLADA_TEXTANGENT_INPUT "TEXTANGENT" +#define COLLADA_TEXBINORMAL_INPUT "TEXBINORMAL" + +#define COLLADA_LIGHT_INTENSITY_PARAMETER_14 "intensity" +#define COLLADA_LIGHT_PENUMBRA_ANGLE_PARAMETER_14 "penumbra_angle" +#define COLLADA_LIGHT_DROPOFF_PARAMETER "dropoff" + +#define COLLADA_CAMERA_YFOV_PARAMETER "YFOV" +#define COLLADA_CAMERA_ZNEAR_PARAMETER "ZNEAR" +#define COLLADA_CAMERA_ZFAR_PARAMETER "ZFAR" +#define COLLADA_CAMERA_ORTHO_BOTTOM_PARAMETER "BOTTOM" +#define COLLADA_CAMERA_ORTHO_TOP_PARAMETER "TOP" +#define COLLADA_CAMERA_ORTHO_LEFT_PARAMETER "LEFT" +#define COLLADA_CAMERA_ORTHO_RIGHT_PARAMETER "RIGHT" + +#define COLLADA_TEXTURE_WRAPU_PARAMETER "wrapU" +#define COLLADA_TEXTURE_WRAPV_PARAMETER "wrapV" +#define COLLADA_TEXTURE_MIRRORU_PARAMETER "mirrorU" +#define COLLADA_TEXTURE_MIRRORV_PARAMETER "mirrorV" +#define COLLADA_TEXTURE_BLEND_MODE_PARAMETER "BLEND_MODE" +#define COLLADA_TEXTURE_BLEND_MODE_PARAMETER_14 "blend_mode" +#define COLLADA_TEXTURE_REPEATU_PARAMETER "repeatU" +#define COLLADA_TEXTURE_REPEATV_PARAMETER "repeatV" + +#define COLLADA_CONSTANT_FUNCTION "CONSTANT" +#define COLLADA_LINEAR_FUNCTION "LINEAR" +#define COLLADA_QUADRATIC_FUNCTION "QUADRATIC" + +#define COLLADA_INTERPOLATION_TYPE_LINEAR "LINEAR" +#define COLLADA_INTERPOLATION_TYPE_BEZIER "BEZIER" +#define COLLADA_INTERPOLATION_TYPE_CARDINAL "CARDINAL" +#define COLLADA_INTERPOLATION_TYPE_HERMITE "HERMITE" +#define COLLADA_INTERPOLATION_TYPE_BSPLINE "BSPLINE" +#define COLLADA_INTERPOLATION_TYPE_STEP "STEP" + +#define COLLADA_X_UP "X_UP" +#define COLLADA_Y_UP "Y_UP" +#define COLLADA_Z_UP "Z_UP" + +#define COLLADA_IN_FLOW "IN" +#define COLLADA_OUT_FLOW "OUT" +#define COLLADA_INOUT_FLOW "INOUT" + +// Obsolete, but kept here for backward compatibility. +#define COLLADA_RGB_TYPE "ColorRGB" // use float3 instead +#define COLLADA_RGBA_TYPE "ColorRGBA" // use float4 instead +#define COLLADA_RGB_INPUT "COLORRGB" // beta MAX exporter has been known to generate them +#define COLLADA_RGBA_INPUT "COLORRGBA" // beta MAX exporter has been known to generate them + +// Physics extension. Currently in prototype phase. +#define COLLADA_PHYSICS_LIBRARY_TYPE "PHYSICS" +#define COLLADA_SHAPE_STRUCTURE "shape" +#define COLLADA_RIGID_BODY_STRUCTURE "rigidbody" +#define COLLADA_DYNAMIC_STRUCTURE "dynamic" +#define COLLADA_MASS_STRUCTURE "mass" +#define COLLADA_PHYSICS_MATERIAL_STRUCTURE "physics_material" +#define COLLADA_STATIC_FRICTION_ATTRIBUTE "STATIC_FRICTION" +#define COLLADA_DYNAMIC_FRICTION_ATTRIBUTE "DYNAMIC_FRICTION" +#define COLLADA_ELASTICITY_ATTRIBUTE "ELASTICITY" +#define COLLADA_BOX_STRUCTURE "box" +#define COLLADA_SPHERE_STRUCTURE "sphere" +#define COLLADA_CAPSULE_STRUCTURE "capsule" +#define COLLADA_CYLINDER_STRUCTURE "cylinder" +#define COLLADA_ELLIPSOID_STRUCTURE "ellipsoid" +#define COLLADA_SIZE_STRUCTURE "size" +#define COLLADA_RADIUS_STRUCTURE "radius" +#define COLLADA_PHYSICS_ENVIRONMENT_STRUCTURE "physics_environment" +#define COLLADA_ENVIRONMENT_ID "Environment" +#define COLLADA_TIMESTEP_ATTRIBUTE "TIMESTEP" +#define COLLADA_GRAVITY_ATTRIBUTE "gravity" +#define COLLADA_INITIAL_VELOCITY_STRUCTURE "initial_velocity" +#define COLLADA_INITIAL_ANGULAR_VELOCITY_STRUCTURE "initial_angular_velocity" +#define COLLADA_CONVEX_MESH_STRUCTURE "convex_mesh" +#define COLLADA_INERTIA_STRUCTURE "inertia" +#define COLLADA_DENSITY_STRUCTURE "density" +#define COLLADA_CENTER_OF_MASS_STRUCTURE "center_of_mass" +#define COLLADA_DYNAMICS_STRUCTURE "dynamics" +#define COLLADA_RIGID_CONSTRAINT_STRUCTURE "rigid_constraint" +#define COLLADA_BODY_PROPERTY "body" +#define COLLADA_ATTACHMENT_STRUCTURE "attachment" +#define COLLADA_ROT_LIMIT_MIN_STRUCTURE "rot_limit_min" +#define COLLADA_ROT_LIMIT_MAX_STRUCTURE "rot_limit_max" +#define COLLADA_TRANS_LIMIT_MIN_STRUCTURE "trans_limit_min" +#define COLLADA_TRANS_LIMIT_MAX_STRUCTURE "trans_limit_max" +#define COLLADA_ENABLED_STRUCTURE "enabled" +#define COLLADA_INTERPENETRATE_STRUCTURE "interpenetrate" +#define COLLADA_SPRING_STRUCTURE "spring" +#define COLLADA_STIFFNESS_STRUCTURE "stiffness" +#define COLLADA_DAMPING_STRUCTURE "damping" +#define COLLADA_REST_LENGTH_STRUCTURE "rest_length" +#define COLLADA_P0_STRUCTURE "p0" +#define COLLADA_P1_STRUCTURE "p1" +#define COLLADA_TRUE_KEYWORD "TRUE" +#define COLLADA_FALSE_KEYWORD "FALSE" + +#define COLLADA_LINES_STRUCTURE "lines" +#define COLLADA_LINESTRIP_STRUCTURE "linestrips" +#define COLLADA_TRIFANS_STRUCTURE "trifans" +#define COLLADA_TRISTRIPS_STRUCTURE "tristrips" + +// Extensions + +// Feeling Software ColladaMaya extensions +#define COLLADA_MAYA_PROFILE "MAYA" + +#define COLLADA_MAYA_LAYER_ELEMENT "layer" + +// Feeling Software ColladaMax extensions +#define COLLADA_MAX3D_PROFILE "MAX3D" + +#define COLLADA_MAX3D_FRAMERATE_ELEMENT "frame_rate" + +// Feeling Software FCollada extensions +#define COLLADA_FCOLLADA_PROFILE "FCOLLADA" + +#define COLLADA_FCOLLADA_STARTTIME_ELEMENT "start_time" +#define COLLADA_FCOLLADA_ENDTIME_ELEMENT "end_time" +#define COLLADA_FCOLLADA_VISIBILITY_ELEMENT "visibility" + +// XSI COLLADA extensions +#define COLLADA_XSI_PROFILE "XSI" + +#define COLLADA_XSI_VISIBILITY_ELEMENT "SI_Visibility" + +// FBX COLLADA extensions +#define COLLADA_FBX_PROFILE "FBX" + +#define COLLADA_FBX_TARGET_ELEMENT "target" + +// NVidia FXComposer extension -----------------------------------------------// + +#define COLLADA_NVIDIA_FXCOMPOSER_PROFILE "NVIDIA_FXCOMPOSER" + +#define COLLADA_NVIDIA_FXCOMPOSER_IMPORT_ELEMENT "import" +#define COLLADA_NVIDIA_FXCOMPOSER_URL_ATTRIBUTE "url" +#define COLLADA_NVIDIA_FXCOMPOSER_COMPILER_OPTIONS_ATTRIBUTE "compiler_options" +#define COLLADA_NVIDIA_FXCOMPOSER_PROFILE_ATTRIBUTE "profile" + +#endif /* _FBXSDK_FILEIO_COLLADA_TOKENS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxcolladautils.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxcolladautils.h new file mode 100644 index 00000000..8d825120 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxcolladautils.h @@ -0,0 +1,370 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcolladautils.h +#ifndef _FBXSDK_FILEIO_COLLADA_UTILS_H_ +#define _FBXSDK_FILEIO_COLLADA_UTILS_H_ + +#include + +#include +#include + +#include + +#include + +#ifndef INT_MAX + #define INT_MAX 0x7FFFFFFF +#endif + +#ifndef CENTIMETERS_TO_INCHES + #define CENTIMETERS_TO_INCHES 2.54f +#endif + +#ifndef RADIANS_TO_DEGREES + #define RADIANS_TO_DEGREES 57.295799f +#endif + +enum DAE_Flow { kCOLLADAFlowIn, kCOLLADAFlowOut, kCOLLADAFlowInOut }; + +const int MATRIX_STRIDE = 16; +const int VECTOR_STRIDE = 3; + +#define COLLADA_ID_PROPERTY_NAME "COLLADA_ID" + +class XmlNodeDeletionPolicy +{ +public: + static inline void DeleteIt(xmlNode ** ptr) + { + if (*ptr != NULL) + { + xmlFreeNode(*ptr); + *ptr = NULL; + } + } +}; + +typedef FbxAutoPtr XmlNodePtr; +typedef FbxMap< FbxString, xmlNode* > SourceElementMapType; +typedef FbxMap< FbxString, xmlNode* > SkinMapType; + +// Some information connecting COLLADA layer string, such as "NORMAL" or "UV", to FBX layer element type. +struct ColladaLayerTraits +{ + ColladaLayerTraits() + : mLayerType(FbxLayerElement::eUnknown), mLayerElementLength(0) {} + + ColladaLayerTraits(FbxLayerElement::EType pType, int pLength) + : mLayerType(pType), mLayerElementLength(pLength) {} + + // Type of FBX element layer + FbxLayerElement::EType mLayerType; + // Count of double of each element in FBX element layer + int mLayerElementLength; + + /** Construct traits according to COLLADA layer string. + * \param pLabel COLLADA layer string. + * \return Return created traits. + */ + static const ColladaLayerTraits GetLayerTraits(const FbxString & pLabel); +}; + +/** Emit error message. + * \param pSdkManger The SDK manager used to access user notification object. + * \param pErrorMessage The message to be presented. + */ +void DAE_AddNotificationError(const FbxManager * pSdkManger, const FbxString & pErrorMessage); + +/** Emit warning message. + * \param pSdkManger The SDK manager used to access user notification object. + * \param pWarningMessage The message to be presented. + */ +void DAE_AddNotificationWarning(const FbxManager * pSdkManger, const FbxString & pWarningMessage); + +void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxArray& arr); +void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxArray& arr); +void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxArray& arr); +void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxArray& arr); +void DAE_ExportArray(xmlNode* parentXmlNode, const char* id, FbxStringList& arr); + +// Syntax modification - for COLLADA 1.4 +xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxStringList& accessorParams, FbxArray& arr, bool isCommonProfile=true); +xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); +xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); +xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); +xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); +xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxArray& arr); +xmlNode* DAE_ExportSource14(xmlNode* parentXmlNode, const char* id, FbxStringList& arr, const char* type, bool isCommonProfile=true); + + +void DAE_ExportSourceArray(xmlNode* sourceNode, const char* id, FbxArray& arr); +void DAE_ExportSourceArray14(xmlNode* sourceNode, const char* id, FbxArray& arr); + +xmlNode* DAE_ExportAccessor(xmlNode* parentXmlNode, const char* id, const char* arrayRef, int count, int stride, const char* name, const char* type); +xmlNode* DAE_ExportAccessor14(xmlNode* parentXmlNode, const char* id, const char* arrayRef, int count, int stride, const char* name, const char* type); + +void DAE_AddXYZAccessor(xmlNode* parentXmlNode, const char* profile, const char* arrayName, const char* arrayRef, int count); +void DAE_AddSTAccessor(xmlNode* parentXmlNode, const char* profile, const char* arrayName, const char* arrayRef, int count); +void DAE_AddFlow(xmlNode* node, DAE_Flow flow); +void DAE_AddXYZAccessor14(xmlNode* parentXmlNode, const char* profile, const char* arrayName, const char* arrayRef, int count); +void DAE_AddSTAccessor14(xmlNode* parentXmlNode, const char* profile, const char* arrayName, const char* arrayRef, int count); + +// AddParameter functions for COLLADA 1.3. +xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxColor& color, DAE_Flow flow); +xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxVector4& vector, DAE_Flow flow); +xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, double value, DAE_Flow flow); +xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, bool value, DAE_Flow flow); +xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const char* type, const char* value, DAE_Flow flow); + +// Overload functions without DAE_Flow, for COLLADA 1.4. +xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxDouble3& color); +xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxColor& color); +xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const FbxVector4& vector); +xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, double value); +xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, bool value); +xmlNode* DAE_AddParameter(xmlNode* parentXmlNode, const char* name, const char* type, const char* value); +xmlNode* DAE_AddTechnique(xmlNode* parentXmlNode, const char* technique); +void DAE_AddInput(xmlNode* parentXmlNode, const char* semantic, const char* source, int idx = -1); +void DAE_AddInput14(xmlNode* parentXmlNode, const char* semantic, const char* source, int offset = -1, int set=-1); + +FbxString matrixToString(const FbxAMatrix& mx); + +typedef FbxArray CNodeList; + +/** Find children elements whose type is included in a list of type. + * \param pParentElement The parent element. + * \param pTypes The list of types. + * \param pChildrenElements The found children elements. + */ +void findChildrenByType(xmlNode* pParentElement, const FbxSet& pTypes, CNodeList& pChildrenElements); + +/** Find children elements of a specific type. + * \param pParentElement The parent element. + * \param pType The type. + * \param pChildrenElements The found children elements. + */ +void findChildrenByType(xmlNode* pParentElement, const char * pType, CNodeList& pChildrenElements); + +xmlNode* getSourceAccessor(xmlNode* sourceNode); +xmlNode* getTechniqueNode(xmlNode* parent, const char * profile); + +// Conversions +inline double inchesToCentimeters(double val) { return FbxFloor(val / CENTIMETERS_TO_INCHES * 100000) / 100000; } +inline double centimetersToInches(double val) { return FbxFloor(val * CENTIMETERS_TO_INCHES * 100000) / 100000; } + +inline double degreesToRadians(double val) { return FbxFloor(val / RADIANS_TO_DEGREES * 100000) / 100000; } +inline double radiansToDegrees(double val) { return FbxFloor(val * RADIANS_TO_DEGREES * 100000) / 100000; } + +/** Find a child element with a given attribute value. + * \param pParentElement The parent element. + * \param pAttributeName The name of the attribute. + * \param pAttributeValue The value of the attribute. + * \param pDefaultAttributeValue The default value of the attribute used when the attribute is not found explicitly. + * \return Return NULL if no child element has the given attribute value. + */ +xmlNode* DAE_FindChildElementByAttribute(xmlNode* pParentElement, const char * pAttributeName, + const char * pAttributeValue, const char * pDefaultAttributeValue = ""); + +/** Find a child element with a given tag. + * \param pParentElement The parent element. + * \param pTag The value of the tag. + * \param pFindFrom Find from the next child after pFindFrom if pFindFrom is not NULL. + * \return Return NULL if no child element has the given tag. + */ +xmlNode* DAE_FindChildElementByTag(xmlNode* pParentElement, const char * pTag, xmlNode* pFindFrom = NULL); + +/** Get the content of a XML element. + * \param pElement The element whose content is returned. + * \param pData The returned data. + */ +template +void DAE_GetElementContent(xmlNode * pElement, TYPE & pData) +{ + if (pElement != NULL) + { + FbxAutoFreePtr lContent(xmlNodeGetContent(pElement)); + FromString(&pData, (const char *)lContent.Get()); + } +} + +/** Check whether this node is compatible to FBX transform structure. + * \param pNodeElement The specific node element. + * \return Return true if it is compatible. + */ +bool DAE_CheckCompatibility(xmlNode * pNodeElement); + +/** Get the tag of the specific element. + * \param pElement The specific element. + * \param pTag Return the tag of the element. + */ +void DAE_GetElementTag(xmlNode * pElement, FbxString & pTag); + +/** Get the value of an attribute of an element. + * \param pElement The specific XML element. + * \param pAttributeName The name of the specific attribute. + * \return The value of the attribute in the form of a string. If the attribute is not available, an empty string is returned. + */ +const FbxString DAE_GetElementAttributeValue(xmlNode * pElement, const char * pAttributeName); + +/** Get the value of an attribute of an element. + * \param pElement The specific XML element. + * \param pAttributeName The name of the specific attribute. + * \param pData The returned data. + * \return Return \c true on success and \c false if no attribute has the given name. + */ +template +bool DAE_GetElementAttributeValue(xmlNode * pElement, const char * pAttributeName, TYPE & pData) +{ + if (!pElement || !pAttributeName) + return false; + + FbxAutoFreePtr lPropertyValue(xmlGetProp(pElement, (const xmlChar *)pAttributeName)); + if (lPropertyValue) + { + FromString(&pData, (const char *)lPropertyValue.Get()); + return true; + } + return false; +} + +// Special instantiation for string; +// Omit the whitespaces, just return the whole string +template <> +inline bool DAE_GetElementAttributeValue(xmlNode * pElement, + const char * pAttributeName, + FbxString & pData) +{ + if (!pElement || !pAttributeName) + return false; + + FbxAutoFreePtr lPropertyValue(xmlGetProp(pElement, (const xmlChar *)pAttributeName)); + if (lPropertyValue) + { + pData = (const char *)lPropertyValue.Get(); + return true; + } + return false; +} + +/** Compare the value of specific attribute of specific element with given value. + * \param pElement The specific element. + * \param pAttributeName The name of the specific attribute. + * \param pValue The value to compare with. + * \return Return true if values equal. + */ +bool DAE_CompareAttributeValue(xmlNode * pElement, + const char * pAttributeName, + const char * pValue); + +/** Get the ID of another element from the url attribute of the given element. + * \param pElement The specific XML element in which the ID is looked for. + * \return The ID of another element if success, or an empty string if no url attributes are found. + */ +const FbxString DAE_GetIDFromUrlAttribute(xmlNode * pElement); + +/** Get the ID of another element from the source attribute of the given element. + * \param pElement The specific XML element in which the ID is looked for. + * \return The ID of another element if success, or an empty string if no source attributes are found. + */ +const FbxString DAE_GetIDFromSourceAttribute(xmlNode * pElement); + +/** Get the ID of another element from the target attribute of the given element. + * Note that in target attribute, the URI identifier may or may not preceded with the pound sign. + * \param pElement The specific XML element in which the ID is looked for. + * \return The ID of another element if success, or an empty string if no target attributes are found. + */ +const FbxString DAE_GetIDFromTargetAttribute(xmlNode * pElement); + +/** Set the name of the object with a given name. If the name is empty, use the ID. + * \param pObject The object whose name is to be set. + * \param pName The name string. + * \param pID The ID string. + */ +void DAE_SetName(FbxObject * pObject, const FbxString & pName, const FbxString & pID); + +/** Get the COLLADA source element with a semantic meaning and a consumer element; + * The COLLADA input element declares the input connections to a data source that a consumer requires. + * A data source is a container of raw data that lacks semantic meaning so that the data can be reused within the + * document. To use the data, a consumer declares a connection to it with the desired semantic information. + * \param pConsumerElement A consumer element, like sampler element in animation system or joints element in controller system. + * \param pSemantic A semantic meaning, like "INPUT", "OUTPUT" or "INTERPOLATION" in animation system. + * \param pSourceElements The container of raw data. + * \return Return \c NULL is failed. + */ +xmlNode * DAE_GetSourceWithSemantic(xmlNode * pConsumerElement, const char * pSemantic, + const SourceElementMapType & pSourceElements); + +/** Add a child element with specific content. + * \param pParentElement The parent element. + * \param pTag The tag string of the new child element. + * \param pContent The content of the child element. + * \return The created child element. + */ +template +xmlNode * DAE_AddChildElement(xmlNode * pParentElement, const char * pTag, + const T & pContent) +{ + const FbxString lRepr = ToString(pContent); + return xmlNewChild(pParentElement, NULL, (xmlChar *)pTag, + (xmlChar *)lRepr.Buffer()); +} + +// Create a child element with empty content. +inline xmlNode * DAE_AddChildElement(xmlNode * pParentElement, const char * pTag) +{ + return DAE_AddChildElement(pParentElement, pTag, FbxString()); +} + +// Create a new element with empty content. +inline xmlNode * DAE_NewElement(const char * pTag) +{ + return xmlNewNode(NULL, reinterpret_cast(const_cast(pTag))); +} + +/** Add an attribute for a element. + * \param pElement The element where the attribute is added. + * \param pAttributeName The name of the attribute. + * \param pAttributeValue The value of the attribute. + * \return The created attribute. + */ +template +xmlAttr * DAE_AddAttribute(xmlNode * pElement, const FbxString & pAttributeName, + const T & pAttributeValue) +{ + const FbxString lRepr = ToString(pAttributeValue); + return xmlNewProp(pElement, (xmlChar *)pAttributeName.Buffer(), + (xmlChar *)lRepr.Buffer()); +} + +/** Import a COLLADA unit element into a FBX system unit. + * \param pUnitElement The COLLADA unit element. + * \return The created FBX system unit. + */ +const FbxSystemUnit DAE_ImportUnit(xmlNode * pUnitElement); + +/** If the specific node has animation on its local translation, increase every key by the offset. + * \param pNode The specific node. + * \param pOffset The specific offset value. + */ +void IncreaseLclTranslationAnimation(FbxNode * pNode, FbxDouble3 & pOffset); + +/** Search the elements with given tag, push the found results to the end of the given array. + * \param pBaseElement Search from this element. + * \param pTag The given tag. + * \param pResult The array to return the found results. + */ +void RecursiveSearchElement(xmlNode * pBaseElement, const char * pTag, FbxArray & pResult); + +#include + +#endif /* _FBXSDK_FILEIO_COLLADA_UTILS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxreadercollada14.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxreadercollada14.h new file mode 100644 index 00000000..d0a43b28 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxreadercollada14.h @@ -0,0 +1,557 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxreadercollada14.h +#ifndef _FBXSDK_FILEIO_COLLADA_READER_H_ +#define _FBXSDK_FILEIO_COLLADA_READER_H_ + +#include + +#include +#include + +#include + + +/** Class to read a Collada file and import it to a FBX scene. + * + * Some terms about COLLADA (from the spec of the COLLADA). + * + * Element: An XML document consists primarily of elements. An element is a block of information that is + * bounded by tags at the beginning and end of the block. Elements can be nested, producing a hierarchical + * data set. + * + * Tag: Each XML element begins with a start tag and ends with an end tag. + * + * Attribute: An XML element can have zero or more attributes. Attributes are given within the start tag and + * follow the tag name. Each attribute is a name-value pair. The value portion of an attribute is always + * surrounded by quotation marks (" "). Attributes provide semantic information about the element on which + * they are bound. + * For example: + * \code + * + * \endcode + * + * URI Addressing: Refers to the id attribute of an element. Used in url, source or target attributes. + * In a url, source or target attribute, the URI fragment identifier is preceded with the pound sign ("#"). + * + * Markup and Content: The characters which make up an XML document are divided into markup and content. + * Markup and content may be distinguished by the application of simple syntactic rules. + * All strings which constitute markup either begin with the character "<" and end with a ">", + * or begin with the character "&" and end with a ";". + * Strings of characters which are not markup are content. + * \nosubgrouping + */ +class FbxReaderCollada : public FbxReader +{ +public: + /** + * \name Constructors and Destructor + */ + //@{ + + /** Constructor. + * \param pManager FBX SDK object Manager. + * \param pID Internal ID. + * \param pStatus The FbxStatus object to hold error codes. + */ + FbxReaderCollada(FbxManager& pManager, int pID, FbxStatus& pStatus); + + //! Destructor. + virtual ~FbxReaderCollada(); + + //@} + + /** + * \name File Management + */ + //@{ + + /** Open file with the given name. + * \param pFileName the name of file. + * \return Return true if the specified file is opened. + */ + virtual bool FileOpen(char* pFileName); + + /** Close file. + * \return Return true if file is closed successfully, false otherwise. + */ + virtual bool FileClose(); + + /** Check if current file is open. + * \return Return true if file is open, false otherwise. + */ + virtual bool IsFileOpen(); + + //@} + + /** + * \name Read Functions + */ + //@{ + + /** Get Collada import options settings. + * \param pParseFileAsNeeded whether parse file as needed, the default value is true. + * \return true + */ + virtual bool GetReadOptions(bool pParseFileAsNeeded = true){ return true; } + + /** Get axis system information from file + * \param pAxisSystem axis system in file + * \param pSystemUnits system unit in file + * \return if either pAxisSystem or pSystemUnits is \c NULL return \c false, otherwise return \c true. + */ + virtual bool GetAxisInfo(FbxAxisSystem* pAxisSystem, FbxSystemUnit* pSystemUnits); + + /** Returns the list of take infos from the file. + * \return NULL + */ + virtual FbxArray* GetTakeInfo(); + + /** Read from Collada file and import it to the FBX document, according to the given options settings. + * \param pDocument FBX Document to import. + * \return true on success, false otherwise. + */ + virtual bool Read(FbxDocument* pDocument); + + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + /** + * \name Import Functions + */ + //@{ + + /** Import Collada XML nodes tree to FBX scene. + * \param pScene The FBX scene object. + * \param pXmlNode The XML Node to import, it should be the root of Collada nodes tree. + * \return true on success, false otherwise. + */ + bool ReadCollada(FbxScene &pScene, xmlNode* pXmlNode); + + /** Import a Collada visual_scene element to the given FBX scene. + * \param pXmlNode The COLLADA visual_scene element. + * \param pScene The FBX scene to contain the imported data. + * \return Return \c true on success and \c false otherwise. + */ + bool ImportVisualScene(xmlNode* pXmlNode, FbxScene * pScene); + + /** Import a Collada visual_scene MAX3D extension to the given FBX scene. + * \param pXmlNode The COLLADA technique element with profile MAX3D. + * \param pScene The FBX scene to contain the imported data. + * \return Return \c true on success and \c false otherwise. + */ + bool ImportVisualSceneMax3DExtension(xmlNode * pTechniqueElement, FbxScene * pScene); + + /** Import a Collada visual_scene FCOLLADA extension to the given FBX scene. + * \param pXmlNode The COLLADA technique element with profile FCOLLADA. + * \param pScene The FBX scene to contain the imported data. + * \return Return \c true on success and \c false otherwise. + */ + bool ImportVisualSceneFCOLLADAExtension(xmlNode * pTechniqueElement, FbxScene * pScene); + + /** Import a Collada visual_scene MAYA extension to the given FBX scene. + * \param pXmlNode The COLLADA technique element with profile MAYA. + * \param pScene The FBX scene to contain the imported data. + * \return Return \c true on success and \c false otherwise. + */ + bool ImportVisualSceneMayaExtension(xmlNode * pTechniqueElement, FbxScene * pScene); + + /** Import Collada asset element. + * \param pXmlNode The XML Node, asset is read from pXmlNode and its children. + * \param pGlobalSettings The FBX global settings. + * \param pSceneInfo The FBX scene information object. + * \return Return true if asset is imported successfully. + * \remarks Imported asset has following contents: + * Axis System, system Unit, author, comments, title, subject, keywords, revision, etc. + */ + bool ImportAsset(xmlNode* pXmlNode, FbxGlobalSettings & pGlobalSettings, FbxDocumentInfo &pSceneInfo); + + /** Import a COLLADA node element. + * If the COLLADA node element contains only one node attribute (node attribute means instance_geometry, + * instance_camera, instance_light and instance_controller), node attribute will be attached directly under the node; + * If not, one child node will be created for each node attribute except the first one. + * \param pXmlNode The COLLADA node element. + * \return The created node and return \c NULL if failed. + */ + FbxNode * ImportNode(xmlNode* pXmlNode); + + /** Import a COLLADA node FCOLLADA extension to the given FBX node. + * \param pXmlNode The COLLADA technique element with profile FCOLLADA. + * \param pNode The FBX node to contain the imported data. + * \return Return \c true on success and \c false otherwise. + */ + bool ImportNodeFCOLLADAExtension(xmlNode* pTechniqueElement, FbxNode * pNode); + + /** Import a COLLADA node XSI extension to the given FBX node. + * \param pXmlNode The COLLADA technique element with profile XSI. + * \param pNode The FBX node to contain the imported data. + * \return Return \c true on success and \c false otherwise. + */ + bool ImportNodeXSIExtension(xmlNode* pTechniqueElement, FbxNode * pNode); + + /** Import a COLLADA node FBX extension to the given FBX node. + * \param pXmlNode The COLLADA technique element with profile FBX. + * \param pNode The FBX node to contain the imported data. + * \return Return \c true on success and \c false otherwise. + */ + bool ImportNodeFBXExtension(xmlNode* pTechniqueElement, FbxNode * pNode); + + /** Import a COLLADA geometry element. + * \param pGeometryID The COLLADA geometry ID. + * \param pMaterialSequence A ordered sequence of material symbols connecting to the geometry. + * \return The created geometry object and return \c NULL if failed. + * \remarks Except mesh, other types of geometry are not supported now. + */ + FbxGeometry * ImportGeometry(const FbxString & pGeometryID, const FbxDynamicArray & pMaterialSequence); + + /** Import a COLLADA skin element. + * \param pSkinElement The COLLADA skin element. + * \return Return \c true on success and \c false otherwise. + */ + bool ImportSkin(xmlNode* pSkinElement); + + /** Import a COLLADA morph element or morphs recursively. + * \param pXmlNode The COLLADA morph element. + * \param pMaterialSequence A ordered sequence of material symbols connecting to the target geometry. + * \return Return the pointer to the target geometry. + */ + FbxGeometry * ImportMorph(xmlNode * pMorphElement, const FbxDynamicArray & pMaterialSequence); + + /** Import a COLLADA controller element. + * \param pXmlNode The COLLADA controller ID. + * \param pMaterialSequence A ordered sequence of material symbols connecting to the target geometry. + * \return Return the pointer to the target geometry. + */ + FbxGeometry * ImportController(const FbxString & pControllerID, const FbxDynamicArray & pMaterialSequence); + + /** Import a COLLADA camera element. + * \param pXmlNode The COLLADA camera element. + * \return The created camera object and return \c NULL if failed. + * \remarks Camera parameters will also be imported, such as FOV, aspect ratio, etc. + */ + FbxCamera * ImportCamera(xmlNode* pXmlNode); + + /** Import a COLLADA light element. + * \param pXmlNode The COLLADA light element. + * \return The created light object and return \c NULL if failed. + * Following types of light are supported now: ambient light, directional light, point light, and spot light. + */ + FbxLight * ImportLight(xmlNode* pXmlNode); + + /** Import a COLLADA material element. + * \param pXmlNode The COLLADA material element. + * \return The created material object and return \c NULL if failed. + */ + FbxSurfaceMaterial * ImportMaterial(xmlNode* pXmlNode); + + /** Import a COLLADA effect element. + * \param pEffectElement The COLLADA effect element. + * \return The created material object and return \c NULL if failed. + */ + FbxSurfaceMaterial * ImportEffect(xmlNode* pEffectElement); + + /** Import a COLLADA effect NVIDIA_FXCOMPOSER extension. + * \param pXmlNode The COLLADA technique element with profile + * NVIDIA_FXCOMPOSER. + * \return The created material object and return \c NULL if failed. + */ + FbxSurfaceMaterial * ImportEffectNVidiaExtension(xmlNode * pEffectElement); + + /** Import a COLLADA texture element. + * \param pXmlNode The COLLADA texture element. + * \return The created texture object and return \c NULL if failed. + * \remarks Following types of texture are supported now: ambient, diffuse, emission, reflective, specular, transparent. + */ + FbxFileTexture * ImportTexture(xmlNode* pXmlNode); + + /** Import a COLLADA image element. + * \param pXmlNode The COLLADA image element. + * \return The created texture object and return \c NULL if failed. + */ + FbxFileTexture * ImportImage(xmlNode* pXmlNode); + + /** Import a COLLADA mesh element. + * If this mesh element contains polygons, polygon list or triangles elements, a FBX mesh will be created. + * If it contains lines or line strips elements, a FBX line will be created. + * \param pXmlNode The COLLADA mesh element. + * \param pMaterialSequence A ordered sequence of material symbols connecting to the geometry. + * \param pObjects List of all the created objects. If this mesh contains lines or line strips as well as + * the polymesh, the array will be filled with: [mesh, line, line strip] + * \return The created geometry object and return \c NULL if failed. + */ + FbxGeometry * ImportMesh(xmlNode* pXmlNode, const FbxDynamicArray & pMaterialSequence, FbxArray& pObjects); + + /** Import a COLLADA vertices element. + * \param pVerticesElement The COLLADA vertices element. + * \param pGeometry The FBX geometry object to store the vertices. + * \return true on success, false otherwise. + * \remarks Besides vertex, the vertex colors and normals are also imported. + */ + bool ImportVertices(xmlNode* pVerticesElement, FbxGeometry * pGeometry); + + /** Import polygons of Collada mesh node to FBX mesh node. + * \param pXmlNode Pointer to XML mesh Node. + * \param pMesh The FBX mesh object. + * \param pMaterialSequence A ordered sequence of material symbols connecting to the mesh. + * \return true on success, false otherwise. + * \remarks Vertex colors, normals, UVs, textures and materials which related to polygons, are also imported. + */ + bool ImportPolygons(xmlNode* pXmlNode, FbxMesh& pMesh, const FbxDynamicArray & pMaterialSequence); + + /** Import the transformation of Collada node to FBX node. + * \param pXmlNode Pointer to XML Node. + * \param pNode The FBX node. + * \return true on success, false otherwise. + * \remarks Transformation will cover matrix, translation, rotation, scale, skew, perspective, etc. + */ + bool ImportTransforms(xmlNode* pXmlNode, FbxNode* pNode); + + /** Import a COLLADA rotation element. + * \param pXmlNode The COLLADA rotation element. + * \param pRotationVector Vector4 value to return the rotation vector. + * \return Return the rotation axis index. + */ + int ImportRotationElement(xmlNode* pXmlNode, FbxVector4& pRotationVector); + + /** Extrapolate rotation order by the given int list. + * \param pNode The node whose rotation order is updated. + * \param pRotationOrder The int list representing the rotation order. + */ + void SetRotationOrder(FbxNode * pNode, const FbxArray & pRotationOrder); + + /** Import Collada look at node, and computed camera position, interest, up vector, etc. + * \param pXmlNode Pointer to XML look at Node. + * \param lCameraPosition Vector4 value to return camera position. + * \param lInterestPosition Vector4 value to return camera interest position. + * \param lUpVector Vector4 value to return camera up vector. + * \param lCameraTransformMatrix XMatrix value to return camera transform matrix. + * \return true on success, false otherwise. + * \remarks Computed camera parameters are saved in lCameraPosition, lInterestPosition, lUpVector, lCameraTransformMatrix. + */ + bool ImportLookAt(xmlNode* pXmlNode, FbxVector4& lCameraPosition, + FbxVector4& lInterestPosition, FbxVector4& lUpVector, + FbxAMatrix& lCameraTransformMatrix); + + //@} + + + /** + * \name Miscellaneous Functions + */ + //@{ + + /** Return false if we do not want to import a node with the given ID. + * \param lId The node ID. + * \return true for importable, false for in-importable. + * \remarks Do not import camera nodes with IDs (perspective, top, bottom, + * left, right, side, front or back), since they are global cameras already created in FBX. + */ + bool IsNodeExportable(FbxString lId); + + /** Check if the Collada version is 1.4.*. + * \param pVersionString The string representing the COLLADA version, like "1.4.1". + * \return \c true if the Collada version is 1.4.* or \c false otherwise. + */ + bool CheckColladaVersion(const FbxString & pVersionString); + + //@} + + + /** + * \name Error Management + */ + //@{ + + /** Add notification error info to notify users. + * \param pError String of error info. + */ + void AddNotificationError( FbxString pError ); + + /** Add notification warning info to notify users. + * \param pWarning String of warning info. + */ + void AddNotificationWarning( FbxString pWarning ); + //@} + + /** Import the whole scene from the root element of a COLLADA file. + * This is the main entry of COLLADA reader. + * \param pColladaNode The root element. + * \return Return \c true on success and \c false otherwise. + */ + bool ImportScene(xmlNode * pColladaNode); + + /** Preprocess the COLLADA scene. + * \param pColladaElement The root element of COLLADA scene. + */ + void Preprocess(xmlNode * pColladaElement); + + /** Build up the cache map from COLLADA element id to their data, which contain COLLADA elements and FBX objects. + */ + void BuildUpLibraryMap(); + + /** Recursively build up the cache map from COLLADA element id to their data, which contain COLLADA elements and FBX objects. + * /param pElement The parent element which may contain target elements. + * /param pElementTag The tag of target elements. + */ + void BuildUpLibraryMap(xmlNode * pElement, const FbxString & pElementTag); + + /** Retrieve the material map from the bind_material element under an instance_geometry or instance_controller. + * And connected the created materials to the node. + * \param pNode The node to which the materials connect. + * \param pElement The COLLADA instance_goemetry or instance_controller element. + * \param pMaterialSequence The ordered material symbols which is used to create geometries. + * \return Return \c true on success and \c false otherwise. + */ + bool ConnectMaterialsToNode(FbxNode * pNode, xmlNode * pElement, FbxDynamicArray & pMaterialSequence); + + /** Import COLLADA transparent and transparency attributes in a COLLADA effect element. + * \param pElement A COLLADA Lambert, Phong, constant or Blinn element. + * \param pSurfaceMaterial A FBX surface material. + * \return Return \c true on success and \c false otherwise. + */ + bool ImportTransparent(xmlNode * pElement, FbxSurfaceLambert * pSurfaceMaterial); + + // Some traits with a typed element. + struct LibraryTypeTraits + { + FbxString library_tag; + FbxString element_tag; + }; + + /** Get a typed element from the library element with a given ID. + * \param pTypeTraits The traits of type. + * \param pID The ID of the element. + * \return The FBX object. + */ + FbxObject * GetLibrary(const LibraryTypeTraits & pTypeTraits, const FbxString & pID); + FbxObject * GetLibrary(const LibraryTypeTraits & pTypeTraits, xmlNode * pElement); + + /** Import the transform animation of a given node. + * \param pNode The node whose transform to be animated. + * \pAnimationChannelID The ID of animation element. + * \return Return \c true on success and \c false otherwise. + */ + bool ImportMatrixAnimation(FbxNode * pNode, const FbxString & pAnimationChannelID); + + /** Import the animation of a given attribute. + * \param pProperty The property to be animated. + * \param pAnimationChannelID The ID of animation element. + * \param pChannelName The channel name if the property has multiple channels. + * \return Return \c true on success and \c false otherwise. + */ + bool ImportPropertyAnimation(FbxProperty & pProperty, const FbxString & pAnimationChannelID, const char * pChannelName = NULL); + + /** Get the animation layer to which the specific animation curve belongs. + * \param pAnimationID The ID of the animation curve. + * \return The animation layer. + */ + FbxAnimLayer * GetAnimLayer(const FbxString & pAnimationID); + + /** Import local unit conversion. + * \param pElement The specific element. + * \return Return the local unit conversion. + */ + double GetLocalUnitConversion(xmlNode * pElement); + + /** Set the value of the property. + * \param pPropertyElement The corresponding element. + * \param pProperty The specific property. + */ + void SetProperty(xmlNode* pPropertyElement, FbxProperty & pProperty); + + /** Create a property with given name and set the value. + * \param pObject The object as the parent of the property. + * \param pPropertyName The name of the property. + * \param pPropertyValueElement The element containing the value. + */ + void ImportPropertyValue(FbxObject * pObject, const char * pPropertyName, + xmlNode * pPropertyValueElement); + + FbxFile* mFileObject; + FbxString mFileName; + + // XML lib stuff + xmlDocPtr mXmlDoc; + + FbxAnimLayer* mAnimLayer; + FbxScene* mScene; + + // Save the global settings and document info in pre-reading + FbxGlobalSettings * mGlobalSettings; + FbxDocumentInfo * mDocumentInfo; + FbxArray mTakeInfo; + + xmlNode * mColladaElement; + + struct ColladaElementData + { + explicit ColladaElementData(xmlNode * pElement = NULL) + : mColladaElement(pElement), mFBXObject(NULL) {} + xmlNode * mColladaElement; + FbxObject * mFBXObject; + FbxArray mFBXObjects; + }; + typedef FbxMap ColladaElementMapType; + ColladaElementMapType mColladaElements; + + LibraryTypeTraits mEffectTypeTraits; + LibraryTypeTraits mMaterialTypeTraits; + LibraryTypeTraits mImageTypeTraits; + LibraryTypeTraits mGeometryTypeTraits; + LibraryTypeTraits mControllerTypeTraits; + LibraryTypeTraits mLightTypeTraits; + LibraryTypeTraits mCameraTypeTraits; + LibraryTypeTraits mNodeTypeTraits; + LibraryTypeTraits mAnimationTypeTraits; + + typedef FbxMap > AnimationMapType; + AnimationMapType mAnimationElements; + + SourceElementMapType mSourceElements; + + struct AnimationClipData + { + AnimationClipData(const FbxString & pID) : mID(pID), mAnimLayer(NULL) {} + AnimationClipData(const AnimationClipData& pOther){ *this = pOther; } + AnimationClipData& operator=(const AnimationClipData& pOther){ mID = pOther.mID; mAnimationElementIDs = pOther.mAnimationElementIDs; mAnimLayer = pOther.mAnimLayer; return *this; } + + FbxString mID; // ID of animation clip + FbxSet mAnimationElementIDs; // IDs of animation belong to this animation clip + FbxAnimLayer * mAnimLayer; // The corresponding animation layer + }; + FbxDynamicArray mAnimationClipData; + + // Map from skin ID to skin element. + SkinMapType mSkinElements; + + // There are two distinct namespaces for node ID & SID mapping. + // One with ID and the other with SID. + typedef FbxMap NodeMapType; + NodeMapType mIDNamespaceNodes; + NodeMapType mSIDNamespaceNodes; + + // Record the nodes which are to connect to its target node. + // Save the ID of the target node if a node has its target + typedef FbxMap TargetIDMapType; + TargetIDMapType mTargetIDs; + + FbxColladaNamespace mNamespace; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_FILEIO_COLLADA_READER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxwritercollada14.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxwritercollada14.h new file mode 100644 index 00000000..1674bd58 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/collada/fbxwritercollada14.h @@ -0,0 +1,570 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxwritercollada14.h +#ifndef _FBXSDK_FILEIO_COLLADA_WRITER_H_ +#define _FBXSDK_FILEIO_COLLADA_WRITER_H_ + +#include + +#include + +#include + +/** \brief Class to export FBX scene into a Collada file. +* \nosubgrouping +*/ +class FbxWriterCollada : public FbxWriter +{ +public: + /** + * \name Constructors and Destructor + */ + //@{ + + /** Constructor. + * \param pManager FBX SDK object Manager. + * \param pID Internal ID. + * \param pStatus The FbxStatus object to hold error codes. + */ + FbxWriterCollada(FbxManager& pManager, int pID, FbxStatus& pStatus); + + //! Destructor. + virtual ~FbxWriterCollada(); + + //@} + + /** + * \name File Management + */ + //@{ + + /** Create and open file with the given name. + * \param pFileName the name of file. + * \return Return true if the specified file is created and opened. + */ + virtual bool FileCreate(char* pFileName); + + /** Close file. + * \return Return true if file is closed successfully, false otherwise. + */ + virtual bool FileClose(); + + /** Check if current file is open. + * \return Return true if file is open, false otherwise. + */ + virtual bool IsFileOpen(); + + //@} + + /** + * \name Write Functions + */ + //@{ + + /** Get Collada export options settings. + */ + virtual void GetWriteOptions(){} + + /** Export the FBX document to Collada file, according to the given options settings. + * \param pDocument FBX Document to export. + * \return true on success, false otherwise. + */ + virtual bool Write(FbxDocument* pDocument); + + /** Process FBX scene before exporting FBX scene to Collada file. + * \param pScene the FBX scene to precess. + * \return Return true if the given scene is processed successfully. + * \remarks This function is processing name clash, special transformation conversion etc. + */ + virtual bool PreprocessScene(FbxScene &pScene); + + /** Process FBX scene after exporting FBX scene to Collada file. + * \param pScene the FBX scene to precess. + * \return Return true if the given scene is processed successfully. + */ + virtual bool PostprocessScene(FbxScene &pScene); + + //@} + + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + /** + * \name Export Functions + */ + //@{ + + /** Export FBX scene info to Collada asset. + * \param pXmlNode the XML Node to export asset, asset nodes will be added as children to this XML node. + * \param pSceneInfo Pointer to the FBX scene information object. + * \return Return pointer to XML asset node. + * \remarks Asset here contains user-defined summary data, such as: + * contributor, author, authoring tool, created time, Axis System, etc. + */ + xmlNode* ExportAsset(xmlNode* pXmlNode, FbxDocumentInfo* pSceneInfo); + + /** Export FBX scene. + * \param pScene Pointer to the FBX scene object. + * \return The pointer to XML scene element. + */ + xmlNode * ExportScene(FbxScene* pScene); + + /** Export Libraries to the Collada document. + * \param pXmlNode Pointer to XML Node, it should be the asset node. + * \return Return true if all libraries are exported successfully. + * \remarks After the libraries are created, call this function to add libraries to the Collada document. + * Libraries are added as the siblings just after the given pXmlNode. + */ + bool ExportLibraries(xmlNode* pXmlNode); + + /** Export the given FBX node and its hierarchy to Collada XML nodes. + * \param pXmlNode Pointer to XML Node, created XML nodes hierarchy will be added as children to this XML node. + * \param pNode Pointer to FBX node, it should be one node in FBX nodes tree. + * \return Return pointer to XML node. + * \remarks The returned XML node is corresponding to the given FBX node, + * the returned XML node will be added as child to the given pXmlNode, + * this method is called recursively. + */ + xmlNode* ExportNodeRecursive(xmlNode* pXmlNode, const FbxNode* pNode); + + /** Export a Collada visual_scene MAX3D extension for the given FBX scene. + * \param pExtraElement The parent COLLADA extra element. + * \param pScene The FBX scene to be exported. + */ + void ExportVisualSceneMAX3DExtension(xmlNode * pExtraElement, FbxScene * pScene); + + /** Export a Collada visual_scene FCOLLADA extension for the given FBX scene. + * \param pExtraElement The parent COLLADA extra element. + * \param pScene The FBX scene to be exported. + */ + void ExportVisualSceneFCOLLADAExtension(xmlNode * pExtraElement, FbxScene * pScene); + + /** Export the given FBX node and its node attributes to Collada XML node. + * \param pXmlNode Pointer to XML Node, created XML node will be added as child to this XML node. + * \param pNode Pointer to FBX node, it should be one node in FBX nodes tree. + * \return Return pointer to the created XML node. + * \remarks The returned XML node is corresponding to the given FBX node, + * the returned XML node will be added as child to the given pXmlNode. + */ + xmlNode* ExportNode(xmlNode* pXmlNode, const FbxNode* pNode); + + /** Export the given FBX node's default transformation. + * \param pXmlNode Pointer to XML Node. + * \param pNode Pointer to FBX node. + * \return Return true if transformation is exported successfully. + * \remarks FBX node transformation info is exported to properties of pXmlNode and its children, + * according to the Collada transformation structures. + */ + bool ExportTransform(xmlNode* pXmlNode, const FbxNode* pNode); + + /** Export FBX node attributes, create different libraries according to different node attribute type. + * \param pXmlNode Pointer to XML Node. + * \param pNode Pointer to FBX node. + * \return Return true if FBX node attributes is exported successfully, false otherwise. + * \remarks According to different FBX node attribute type, different libraries will be created, such as: + * light, camera, geometry. See more details in CreateMeshLibrary(FbxNode* pNode), CreateCameraLibrary(FbxNode* pNode), CreateLightLibrary(FbxNode* pNode). + */ + bool ExportNodeAttribute(xmlNode* pXmlNode, const FbxNode* pNode); + + /** Create geometry library for the given FBX node. + * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eMesh, or FbxNodeAttribute::eNurbs, or FbxNodeAttribute::ePatch. + * \return Return pointer to XML mesh library node. + * \remarks The returned XML node will be added to the geometry library, + * the geometry library will be added to the Collada document by ExportLibraries(xmlNode* pXmlNode). + */ + xmlNode* CreateMeshLibrary(const FbxNode* pNode); + + /** Create camera library for the given FBX node. + * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eCamera. + * \return Return pointer to XML camera library node. + * \remarks The returned XML node will be added to the camera library, + * the camera library will be added to the Collada document by ExportLibraries(xmlNode* pXmlNode). + */ + xmlNode* CreateCameraLibrary(const FbxNode* pNode); + + /** Create light library for the given FBX node. + * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eLight. + * \return Return pointer to XML light library node. + * \remarks The returned XML node will be added to the light library, + * the light library will be added to the Collada document by ExportLibraries(xmlNode* pXmlNode). + */ + xmlNode* CreateLightLibrary(const FbxNode* pNode); + + /** Export the given FBX mesh node to Collada XML node. + * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eMesh. + * \return Return pointer to XML mesh node. + * \remarks Vertex, polygons of the mesh will be exported. + * Textures, materials, controllers, and shapes which linked to the mesh will also be exported. + */ + xmlNode* ExportMesh(const FbxNode* pNode); + + /** Export the given shape's geometry to Collada XML node. + * \param pMeshShape, Pointer to FBX mesh, corresponding to shape. + * \param pShapeId, a string to identify shape from internal shape meshes list. + * \return Return pointer to XML shape geometry node. + * \remarks The geometry of shape will be exported, materials of shape will not be exported. + */ + xmlNode* ExportShapeGeometry(FbxMesh* pMeshShape, FbxString pShapeId); + + /** Export the given mesh's vertex position to Collada XML node. + * \param pXmlNode Pointer to XML Node, created XML node will be added as child to this XML node. + * \param pMesh Pointer to FBX mesh object, position info of all the vertices of this mesh will be exported. + * \param pMeshName Name of the XML node to export, usually it's the name of FBX mesh node. + * \param pInGeometry True if vertices are inside an ordinary geometry, false if vertices are in a binded geometry. + * \param pExportControlPoints True if pMesh is an ordinary geometry, false if pMesh is a binded geometry. + * \return Return pointer to XML vertex position node, the returned XML node will be added as child to the given pXmlNode. + * \remarks In an ordinary geometry, pExportControlPoints should be true, export the position of the control points; + * in a binded geometry, pExportControlPoints should be false, export the position of the transformed control points. + */ + //Note why internally set pExportControlPoints to true? + xmlNode* ExportVertexPositions(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pMeshName, bool pInGeometry, bool pExportControlPoints); + + /** Export all layer elements of the given mesh to Collada XML node. + * \param pXmlMesh Pointer to XML Node, created XML layer elements nodes will be added as child to this XML node. + * \param pMesh Pointer to FBX mesh object, all layer elements of this mesh node will be exported. + * \param pName String which used to construct the names of XML layer elements nodes. + * \return Return the modified pXmlMesh. + * \remarks Layer elements including Normals, UVs, Vertex Colors are covered, + * polygon groups and other undefined layer elements are NOT supported. + */ + xmlNode* ExportLayerElements(xmlNode* pXmlMesh, FbxMesh* pMesh, FbxString pName); + + /** Export Normals of specified layer of the given mesh to Collada XML node. + * \param pXmlNode Pointer to XML Node, created XML Normals node will be added as child to this XML node. + * \param pMesh Pointer to FBX mesh object, normals layer element of this mesh node will be exported. + * \param pName String which used to construct the names of XML normals nodes. + * \param pExt Extension string which used to construct the names of XML normals nodes. + * \param pLayerIndex Specify an index of layers to export, normals of other layers will NOT be exported. + * \return Return pointer to XML Normals node. + * \remarks The returned XML node will be added as child to the given pXmlNode. + */ + xmlNode* ExportNormals(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pName, FbxString pExt, int pLayerIndex); + + /** Export UVs of specified layer of the given mesh to Collada XML node. + * \param pXmlNode Pointer to XML Node, created XML UVs node will be added as child to this XML node. + * \param pMesh Pointer to FBX mesh object, UVs layer element of this mesh node will be exported. + * \param pName String which used to construct the names of XML UVs nodes. + * \param pLayerIndex Specify an index of layers to export, UVs of other layers will NOT be exported. + * \return Return pointer to XML UVs node. + * \remarks The returned XML node will be added as child to the given pXmlNode. + */ + xmlNode* ExportUVs(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pName, int pLayerIndex); + + /** Export VertexColors of specified layer of the given mesh to Collada XML node. + * \param pXmlNode Pointer to XML Node, created XML VertexColors node will be added as child to this XML node. + * \param pMesh Pointer to FBX mesh object, VertexColors layer element of this mesh node will be exported. + * \param pName String which used to construct the names of XML VertexColors nodes. + * \param pLayerIndex Specify an index of layers to export, VertexColors of other layers will NOT be exported. + * \return Return pointer to XML VertexColors node. + * \remarks The returned XML node will be added as child to the given pXmlNode. + */ + xmlNode* ExportVertexColors(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pName, int pLayerIndex); + + /** Export the given mesh's vertex to Collada XML node. + * \param pXmlNode Pointer to XML Node. + * \param pMesh Pointer to FBX mesh object. + * \param pName Name of the XML node to export, usually it's the name of FBX mesh node. + * \return Return pointer to the created XML vertex node. + */ + xmlNode* ExportVertices(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pName); + + /** Export the given mesh's polygons to Collada XML node. + * \param pMeshElement Pointer to XML Node. + * \param pMesh Pointer to FBX mesh object. + * \param pMaterialName Specify the name of materials property. + * \param pMaterialIndexInNode Specify the material index in the FBXNode (will be ignored if there is only 1 material in the node) + * \param pName String which used to construct the names of created XML nodes. + * \param pShape true for shape node, false for general node, the default value is false; + * don't write out the materials if pShape is true. + * \return Return pointer to the created XML Polygons node. + */ + xmlNode* ExportPolygons(xmlNode* pMeshElement, FbxMesh* pMesh, FbxString pMaterialName, int pMaterialIndexInNode, FbxString pName, bool pShape = false); + + /** Export all the materials used by the given mesh. + * \param pMesh FBX mesh to export. + * \param pNbMat materials count of pMesh. + * \return true on success, false otherwise. + */ + bool ExportMeshMaterials(FbxMesh *pMesh, int pNbMat); + + /** Export the given material to the Material library. + * \param pMaterial Specify the surface material to export. + * \return Return pointer to the corresponding XML material node. + * \remarks If the given material is already in the materials library, return the XML node; + * otherwise, create and add XML material node to the Material library. + */ + xmlNode* ExportMaterial(FbxSurfaceMaterial *pMaterial); + + /** Export the given material to the Effect library. + * \param pMaterial Specify the surface material to export. + * \param pEffectId Specify the effect ID to export. + * \return Return pointer to the corresponding XML effect node. + * \remarks Material is an instance of an effect. + * If the given material is already in the Effect library, return the XML node; + * otherwise, create and add XML effect node to the Effect library. + * Collada Effect support: Ambient Color, Diffuse Color, Emissive Color, Specular Color, Shiness, Reflective / Reflectivity, + * Opacity / Transparency. + */ + xmlNode* ExportEffect(FbxSurfaceMaterial *pMaterial, FbxString pEffectId); + + /** Add the given texture as input to the given XML material node. + * \param pXmlMaterial Pointer to XML material node. + * \param pTexture FBX texture to export. + * \param pImageId A string to identify image from the image library. + * \param pLayerIndex Specify an index of layers to export. + * \param pLayerElementType Specify the layer element type. + * \return true on success, false otherwise. + */ + //Note why return true when failed and popped waring? + bool AddMaterialTextureInput(xmlNode *pXmlMaterial, FbxFileTexture *pTexture, FbxString pImageId, int pLayerIndex, int pLayerElementType); + + /** Export the given texture to Collada XML node. + * \param pTexture FBX texture to export. + * \param pImageId A string to identify image from the image library. + * \param pLayerIndex Specify an index of layers to export. + * \return Return pointer to the created XML texture node. + */ + xmlNode* ExportTexture(FbxFileTexture *pTexture, FbxString pImageId, int pLayerIndex); + + /** Export all the textures used by the given mesh. + * \param pMesh FBX mesh to export. + * \return true on success, false otherwise. + * \remarks The materials will also be Exported if needed. + */ + bool ExportMeshTextures(FbxMesh *pMesh); + + /** Export the given FBX camera node to Collada XML node. + * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eCamera. + * \return Return pointer to XML node. + * \remarks Camera parameters and properties will be exported. + */ + xmlNode* ExportCamera(const FbxNode* pNode); + + /** Export the given FBX light node to Collada XML node. + * \param pNode Pointer to FBX node, its node attribute type should be FbxNodeAttribute::eLight. + * \return Return pointer to XML node. + * \remarks Light parameters and properties will be exported. + */ + xmlNode* ExportLight(const FbxNode* pNode); + + /** Export the global ambient to Collada XML light node. + */ + void ExportSceneAmbient(xmlNode * pVisualSceneElement); + + /** Export controllers of the given mesh to Collada XML node. + * \param pMesh FBX mesh to export, it should be a binded skin. + * \return true on success. + * \remarks A morph controller will be exported by ExportControllerShape(). + */ + bool ExportController(FbxMesh *pMesh); + + /** Export morph controllers of the given mesh to Collada XML node. + * \param pMesh FBX mesh to export, it should has more than one shape. + * \return true on success. + * \remarks Morph controller is also called shape deformer. + */ + bool ExportControllerShape(FbxMesh *pMesh); + + /** . + * \param . + * \param . + * \return . + * \remarks . + */ + //Note : empty method now + xmlNode* ExportJointWeights(xmlNode* pXmlNode, FbxMesh* pMesh, FbxString pExt); + + /** Update mesh library with the shapes found, and add shapes as nodes in the scene. + * \param pXmlNode Pointer to XML Node, created shape node will be added as child to this XML node. + * \return true on success, false otherwise. + * \remarks This method will create a geometry node in geometry library for every shape as needed, + * XML shape nodes will also be created and added to scene. + */ + bool UpdateMeshLibraryWithShapes(xmlNode* pXmlNode); + + /** Export animations of the given node and its children, if they are animated. + * \param pNode FBX node to export, it should be animated. + * \return true on success, false otherwise. + * \remarks This method is called recursively, the animations of all the children of pXmlNode will also be exported. + */ + bool ExportAnimation(FbxNode* pNode); + + /** Export all the animation curves of the given node to Collada XML node. + * \param pNode FBX node to export, it should be animated. + * \param pAnimationNode Pointer to XML Node, created sub-animation nodes will be added as children to this XML node. + * \return true on success. + */ + bool ExportAnimationCurves(FbxNode* pNode, xmlNode* pAnimationNode); + + /** Export the texture into library_images. + * \param pTexture The texture whose file name to be exported. + * \return Return the ID of the create image element. + */ + const FbxString ExportImage(FbxFileTexture * pTexture); + + /** Export the given animation curve (FCurve) to Collada XML node. + * \param pAnimationNode Pointer to XML Node, created sub-animation node will be added as child to this XML node. + * \param pCurve Animation Curve to export. + * \param pChannelName The name of animation channel. + * \param pSubChannelName The name of animation sub-channel. + * \param pExportShape Shape animation flag, default value is false; When it's true, Id nomenclature is a bit different. + * \param pExportIntensity Intensity flag, default value is false; When it's true, FCurve values are divided by 100. + * \param pExportLib Library flag, default value is false; When it's true, Id nomenclature is a bit different. + * \return true on success. + * \remarks When pExportShape or pExportIntensity is true, FCurve values are divided by 100. + */ + bool ExportCurve(xmlNode* pAnimationNode, FbxAnimCurve* pCurve, + const char* pChannelName, const char* pSubChannelName, + bool pExportShape=false, bool pExportIntensity=false, bool pExportLib=false); + + /** Check whether the first three elements of the given vector are both zero. + * \param pV the FBX vector4 to check. + * \return Return true if one of the first three elements of pV is not zero, return false if all of the three elements are both zero. + * \remarks If the absolute value of element is less than a tolerance, the element will be considered as zero. + */ + bool NotZero(FbxVector4 pV); + + /** Check whether the first three elements of the given vector are both equal to the given value. + * \param pV the FBX vector4 to check. + * \param pValue the value to check. + * \return Return true if one of the first three elements of pV is NOT equal to pValue, return false if all of the three elements are both equal to pValue. + */ + bool NotValue(FbxVector4 pV, double pValue); + + /** Check whether the given value is zero. + * \param pD the value to check. + * \return Return true if pD is NOT zero, return false if pD is zero. + * \remarks If the absolute value of pD is less than a tolerance, pD is considered as zero. + */ + bool NotZero(double pD); + + /** Check whether the given node's translation is animated. + * \param pNode the FBX node to check. + * \return Return true if one of Translation X/Y/Z is animated, return false if both of Translation X/Y/Z are not animated. + * \remarks If there is no key on one property, this property is not animated. + */ + bool IsTranslationAnimated(const FbxNode *pNode); + + /** Check whether the given node's rotation is animated. + * \param pNode the FBX node to check. + * \return Return true if one of Rotation X/Y/Z is animated, return false if both of Rotation X/Y/Z are not animated. + * \remarks If there is no key on one property, this property is not animated. + */ + bool IsRotationAnimated(const FbxNode *pNode); + + /** Check whether the given node's rotation of specified axis is animated. + * \param pNode the FBX node to check. + * \param pAxis Specify index of rotation axis, 0 for Rotation X, 1 for Rotation Y, 2 for Rotation Z. + * \return Return true if the rotation of specified axis is animated, return false if it is not animated. + * \remarks If there is no key on one property, this property is not animated. + */ + bool IsRotationAnimated(const FbxNode *pNode, int pAxis); + + /** Check whether the given node's scale is animated. + * \param pNode the FBX node to check. + * \return Return true if one of Scale X/Y/Z is animated, return false if both of Scale X/Y/Z are not animated. + * \remarks If there is no key on one property, this property is not animated. + */ + bool IsScaleAnimated(const FbxNode *pNode); + + /** Copy mesh parameters from pRefMesh to pNewMesh. + * \param lNewMesh New FBX mesh. + * \param lRefMesh Referenced FBX mesh. + * \remarks Vertices, polygons, layers will be copied. + */ + void CopyMesh(FbxMesh *lNewMesh, FbxMesh *lRefMesh); + + /** Convert camera focal length animation curve to camera field of view animation curve. + * \param pFOVCurve A curve that represents camera field of view. + * \param pFLCurve A curve that represents camera focal length animation. + * \param pCamera FBX camera to convert. + */ + void ConvertFocalLengthCurveToFOV(FbxAnimCurve *pFOVCurve, FbxAnimCurve *pFLCurve, FbxCamera *pCamera); + + /** Preprocess the given FBX node and its hierarchy. + * \param pNode Pointer to FBX node. + * \remarks To correctly export FBX scene to Collada, this method process FBX nodes, + * such as set pivot state for every FBX node, do special transformation conversion for FBX lights and cameras. + * This method is called recursively. + */ + void PreprocessNodeRecursive(FbxNode* pNode); + + /** Export the value of the specific property as a child element of an element. + * \param pProperty The property whose value to be exported. + * \param pParentElement The parent element of the created element. + */ + void ExportPropertyValue(const FbxProperty & pProperty, + xmlNode * pParentElement); + + //@} + + /** + * \name Error Management + */ + //@{ + + /** Add notification error info to notify users. + * \param pError String of error info. + */ + void AddNotificationError( FbxString pError ); + + /** Add notification warning info to notify users. + * \param pWarning String of warning info. + */ + void AddNotificationWarning( FbxString pWarning ); + + //@} + + FbxFile* mFileObject; + FbxString mFileName; + bool mStatus; + + // XML lib stuff + // + xmlDocPtr mXmlDoc; + + // Scene information + FbxScene* mScene; + + // AnimStack/Layer holding the animation + FbxAnimStack* mAnimStack; + FbxAnimLayer* mAnimLayer; + + // Libraries + // NB: CODE and PROGRAM libraries are unused, so they are not created. + xmlNode* mLibraryAnimation; + xmlNode* mLibraryCamera; + xmlNode* mLibraryController; + xmlNode* mLibraryGeometry; + xmlNode* mLibraryImage; + xmlNode* mLibraryLight; + xmlNode* mLibraryMaterial; + xmlNode* mLibraryEffect; + xmlNode* mLibraryTexture; + xmlNode* mLibraryVisualScene; + + // Shape information + FbxStringList *mShapeMeshesList; + + // export options + bool mTriangulate; + bool mSingleMatrix; + FbxTime mSamplingPeriod; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_FILEIO_COLLADA_WRITER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxio.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxio.h new file mode 100644 index 00000000..9cec6e83 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxio.h @@ -0,0 +1,1743 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxio.h +#ifndef _FBXSDK_FILEIO_FBX_IO_H_ +#define _FBXSDK_FILEIO_FBX_IO_H_ + +#include + +#include +#include +#include + +#include + +class FbxIO; +class FbxReader; +class FbxWriter; +class FbxFile; +class FbxStream; +class FbxXRefManager; + +/** + Defines the current FBX file version number in four digits. The first digit is the + major version number a the last three digits are the minor version number (e.g. 7100 = 7.1). + The following is the version history of FBX: + + \li Version 2000 - New KFCurve and embedded FBX, no FCurve/FCurve node storing. + No more .takf file like in earlier version, no history. + + \li Version 2001 - Version incremented to support FbxTime save in native (integer, not double) + format. + + \li Version 3000 - FiLMBOX 3.0 version, nothing changed in current class since version 2001. + FBX SDK 3.0 and 3.6 + + \li Version 3001 - FiLMBOX 3.0 encrypted version, only a trial. Encrypted files could only + be written in debug versions. Cannot switch to a higher version number now because any + file with a version number >= 3001 is read as encrypted. + Hence, this value now only gives file type. (3000 or less -> binary, 3001 or more -> encrypted) + FiLMBOX 3.2, FiLMBOX 3.5 and "Online" 3.51 have been released with version 3000. + + \li Version 4000 - MotionBuilder 4.0, new type in KFCurve tangents, supported in FiLMBOX 3.5 + but not by earlier versions. Version number is now stored in section footer. + Before September 3rd 2002, the version number was always 3000 in main section footer. + Now the main section footer has version number 4000. The minimum version number in footer of + an extension section is 4000. + + \li Version 4001 - ASCII Header is 4.1. MotionBuilder 4.01, to fix FCurveNode problem with + layer types in version 4000 the main section footer has version number 4001. + Now the footer for extension sections has version number 4001. + + \li Version 4050 - ASCII Header is 4.5. MotionBuilder 4.1 or 4.5 before + January 22nd 2003. This is because EvaluationProperties now have color. Now the main section footer + has version number 4050. + Now the footer for extension sections has version number 4050. + + \li Version 5000 - ASCII Header is not compatible anymore with MotionBuilder 4.0, 4.01 and 4.02 and FBX SDK 3.6 and 3.7 + MotionBuilder 4.03 and 4.1 or 4.5 from January 22nd 2003 + FBX SDK 3.6.1. New extended header to improve FBX file version management. Now the extended header and + the main section footer have version number 5000. Now the footer for extension sections has version number 5000. + + \li Version 5800 - This was a temporary version while waiting for version 6000 renders the previous versions + incompatible with MotionBuilder 6.0. For now, however, this format is needed to allow + some tools/plugins (For example Maya) to correctly detect that the file has some features that are not + completely backward compatible (For example: pivots defined with _pre/_post nodes which require a special + processing). By incrementing only the minor version we do not compromise the integrity of the + files. + + \li Version 6000 - Header version is now 6.0. + Extended header now contain a creation time stamp + that can be retrieve without parsing the main section of the file. + A creator tag (string) is now stored in the Extended header. This contain the originator (MB/FBXSDK) + of the file and the build number of the originator. + First release of the file format using the KProperties to store/retrieve information. + + \li Version 6100 - Added support for multiple attributes (mainly multiple geometry) at the node level. + The pointer to the node attribute have been replaced by a connection between the node and its attribute(s). + + \li Version 7000 - + First version of the 7.0 series; most likely very short-lived, developed for Protein, before ADP. + Supports reference cloning, external documents, blobs, unique IDs (per file), property templates. + So many changes that it was decided to break from 6.0 to keep Motion Builder intact. + + \li Version 7099 - Temporary version for FBX 2011 alpha releases. + + \li Version 7100 + Official file version for FBX 2011, add support for animation to FBX 7. + First version of FBX SDK with FBX 7 files as the default file format. + + \li Version 7200 + Added support for multiple blend shape deformers and In-Between blend-shapes on each geometry. + Moved shape(FbxShape) to its own section other than as a part of geometry section. + Add support to store blend shape deformer(FbxBlendShape), blend shape channel(FbxBlendShapeChannel), + Substance(FbxProceduralTexture) and Lines(FbxLine). + Add support to store 3 different smooth binding modes of FbxSkin, including classic linear, dual quaternion + and blended mode of previous two modes. + Added the CLAMP_PROGRESSIVE tangent mode. + The KFCurve::KeyAttrDataFloat data array now stores as integer values (ASCII mode) to to eliminate float to int precision errors. + FbxLayeredTexture now stores alphas for its sub textures. + + \li Version 7300 + Changed the way the CharacterPoses are written. + Changed light property name HotSpot and ConeAngle to InnerAngle and OuterAngle + + \li Version 7400 + Normals, tangents and binormals save the 4th component into a separate array + + \li Version 7500 + Added support for large files (>2GB). NOTE: This breaks forward compatibility (i.e. older products won't be able to open these files!!) + + */ + +//File version numbers +#define FBX_FILE_VERSION_2000 2000 //FBX 2.0 +#define FBX_FILE_VERSION_2001 2001 //FBX 2.01 +#define FBX_FILE_VERSION_3000 3000 //FBX 3.0 +#define FBX_FILE_VERSION_3001 3001 //FBX 3.01 +#define FBX_FILE_VERSION_4000 4000 //FBX 4.0 +#define FBX_FILE_VERSION_4001 4001 //FBX 4.01 +#define FBX_FILE_VERSION_4050 4050 //FBX 4.5 +#define FBX_FILE_VERSION_5000 5000 //FBX 5.0 +#define FBX_FILE_VERSION_5800 5800 //FBX 5.8 +#define FBX_FILE_VERSION_6000 6000 //FBX 6.0 +#define FBX_FILE_VERSION_6100 6100 //FBX 6.1 (guarantee compatibility with Autodesk 2010 products) +#define FBX_FILE_VERSION_7000 7000 //Compatible with 7.1, and taken as such +#define FBX_FILE_VERSION_7099 7099 //Compatible with 7.1, and taken as such +#define FBX_FILE_VERSION_7100 7100 //FBX 7.1 (guarantee compatibility with Autodesk 2011 products) +#define FBX_FILE_VERSION_7200 7200 //FBX 7.2 (guarantee compatibility with Autodesk 2012 products) +#define FBX_FILE_VERSION_7300 7300 //FBX 7.3 (guarantee compatibility with Autodesk 2013 products) +#define FBX_FILE_VERSION_7400 7400 //FBX 7.4 (guarantee compatibility with Autodesk 2014/2015 products) +#define FBX_FILE_VERSION_7500 7500 //FBX 7.5 (guarantee compatibility with Autodesk 2016 products) + +//File version compatibility strings +#define FBX_53_MB55_COMPATIBLE "FBX53_MB55" +#define FBX_60_COMPATIBLE "FBX60_MB60" +#define FBX_2005_08_COMPATIBLE "FBX200508_MB70" +#define FBX_2006_02_COMPATIBLE "FBX200602_MB75" +#define FBX_2006_08_COMPATIBLE "FBX200608" +#define FBX_2006_11_COMPATIBLE "FBX200611" +#define FBX_2009_00_COMPATIBLE "FBX200900" +#define FBX_2009_00_V7_COMPATIBLE "FBX200900v7" +#define FBX_2010_00_COMPATIBLE "FBX201000" +#define FBX_2011_00_COMPATIBLE "FBX201100" +#define FBX_2012_00_COMPATIBLE "FBX201200" +#define FBX_2013_00_COMPATIBLE "FBX201300" +#define FBX_2014_00_COMPATIBLE "FBX201400" +#define FBX_2016_00_COMPATIBLE "FBX201600" + +//Default file version number used when writing new FBX files +#define FBX_DEFAULT_FILE_VERSION FBX_FILE_VERSION_7500 +#define FBX_DEFAULT_FILE_COMPATIBILITY FBX_2016_00_COMPATIBLE + +/** Convert the FBX file version string to an integral number for <= or >= tests purposes. + * \param pFileVersion File version string. + * Some examples: + * \code + * int version; + * version = FileVersionStrToInt(FBX2012_00_COMPATIBLE); // version = 201200 + * version = FileVersionStrToInt(FBX60_COMPATIBLE); // version = 6000 + * version = FileVersionStrToInt("FBX200900"); // version = 200900 + * version = FileVersionStrToInt("Toto"); // version = 0 + * version = FileVersionStrToInt(""); // version = -1 + * \endcode + * \returns the file version number or 0 if an unsupported string value is passed. + */ +FBXSDK_DLL int FbxFileVersionStrToInt(const char* pFileVersion); + +/** \internal Used internally by readers to evaluate what is the current section */ +enum +{ + FBX_NO_SECTION = -1, //!< indicate not in a valid section + FBX_MAIN_SECTION, //!< indicate currently in the main section + FBX_EXTENSION_SECTION_0 //!< indicate currently in the extention section 0 +}; + +/** Render and resolution information. +* \nosubgrouping +*/ +class FBXSDK_DLL FbxIODefaultRenderResolution +{ +public: + /** If the resolution data is ready. */ + bool mIsOK; + /** camera name. */ + FbxString mCameraName; + /** resolution mode. ex: "Fixed Resolution","Fixed Ratio","Fixed Width","Fixed Height","Window Size"*/ + FbxString mResolutionMode; + /** resolution width. */ + double mResolutionW; + /** resolution height. */ + double mResolutionH; + + /** + * \name Constructors and Destructor + */ + //@{ + //! Default constructor. + FbxIODefaultRenderResolution(); + //@} + + /** + * \name Member Access + */ + //@{ + //! Reset values to default. + void Reset(); + //@} +}; + +/** FBX header information used at beginning of the FBX file +* to get or set important values like the file format version number (mFileVersion). +* The file version number will be used to select a particular Reader or Writer. +* \nosubgrouping */ +class FBXSDK_DLL FbxIOFileHeaderInfo +{ +public: + /** + * \name Constructors and Destructor + */ + //@{ + //! Default constructor. + FbxIOFileHeaderInfo(); + + //! Destructor. + virtual ~FbxIOFileHeaderInfo(); + //@} + + /** + * \name Public Member + */ + //@{ + + //! Reset values to default. + virtual void Reset(); + + /** A derived class can override this function to read additional information from the file header. + * \return false in case of failure that should stop loading the file. + */ + virtual bool ReadExtendedHeaderInformation(FbxIO*); + //@} + + //! FbxIODefaultRenderResolution to handle default resolution values + FbxIODefaultRenderResolution mDefaultRenderResolution; + + //!Read only properties (not used for file write) + + //@{ + /** File version ex; 5000, 6000, 6100, 7000, 7099, 7100 + * the major part is the first digit, the minor part, 3 other digits + * ex: 7100 means version 7.1 + */ + int mFileVersion; + + /** Indicates whether a creation time stamp is preset */ + bool mCreationTimeStampPresent; + + /** Indicates whether the mCreationTimeStamp member variable contains the actual creation time of the file. */ + FbxLocalTime mCreationTimeStamp; + + /** Indicates who is the creator of the file + * Ex: "FBX SDK/FBX Plugins version 2011.2" + */ + FbxString mCreator; + + /** Indicates whether the file is created by a genuine Autodesk plug-in or not */ + bool mIOPlugin; + + /** The flag indicates that the header was created by a personal learning edition (PLE) of FBX. */ + bool mPLE; + //@} +}; + +/** FbxIO represents an FBX file. + * It is primarily used by FBX importers (FbxImporter) and exporter (FbxExporter) + * when reading or writing data from or to a disk or memory. + * Most users will not use the FbxIO class directly + * but will use an instance of either FbxImporter or FbxExporter + * to read or write FBX files. + * + * An FBX file may contain binary data or ASCII data. + * A good way to learn the internal structure of a FBX file + * is to open a FBX file saved in ASCII in a text editor. + * + * Ex: to read a FBX file content using FbxIO class directly + * \code + * // Create a FbxIO object with FbxIO::Create() + * // Open the file with ProjectOpen( ... ) a NULL pointer can be passed for (FbxReader)* param + * // ProjectOpen_xxx_Section() to open a particular section + * int nbSec = FieldGetCount(); // to get the number of fields of the current section opened + * for(int i=0; i < nbSec; i++) // read all fields + * { + * // check if the field is a block + * if(FieldReadIsBlock()){ } ... Read sub fields recursively ... may contain other blocks and fields + * else + * { + * FieldReadBegin(); // navigate on the field + * char fieldType = FieldReadGetType(); // get the data type + * + * // According to the Field data type, call the appropriate read functions + * + * if(fieldType == 'S') FieldReadS(...) to read a string + * else if(fieldType == 'B') FieldReadB(...) to read a bool + * else if(fieldType == 'I') FieldReadI(...) to read a int + * ... + * FieldReadEnd(); // navigate to next field + * } + * } + * + * ProjectCloseSection() // close the section opened + * // repeat for another section ... + * // finally close the Project + * ProjectClose(); // or delete the FbxIO object created. + * \endcode + */ +class FBXSDK_DLL FbxIO +{ +public: + + /** \internal Exception-safe way of setting/resetting the xref manager in a FbxIO object. + */ + struct FbxAutoResetXRefManager + { + FbxIO* mFbx; + const FbxXRefManager* mXRefManager; + + /** Default constructor */ + FbxAutoResetXRefManager(FbxIO* pFbx, FbxXRefManager& pXRefManager) + : mFbx(pFbx) + , mXRefManager(NULL) + { + if( mFbx ) + { + mXRefManager = mFbx->ProjectGetXRefManager(); + mFbx->ProjectSetXRefManager(&pXRefManager); + } + } + + /** Destructor */ + ~FbxAutoResetXRefManager() + { + if( mFbx ) + { + mFbx->ProjectSetXRefManager(mXRefManager); + } + } + }; + + enum BinaryType + { + BinaryNormal, //(pBinaryType, pStatus); } + + /** Default constructor */ + FbxIO(BinaryType pBinaryType, FbxStatus& pStatus); + + /** Destructor */ + virtual ~FbxIO(); + + /** + * \name Project Global + * The term "Project" here is an abstract name chosen to represent a group of data + * ex: a file, a stream, a memory buffer, etc. + */ + //@{ + + /** Open a project already in Memory + * \param pAddress + * \param pMaxLength + * \param pReader + * \param pCheckCRC + * \param pOpenMainSection + * \param pFileHeaderInfo + * \return \c true on success, \c false otherwise. + */ + bool ProjectOpen(void* pAddress, FbxULong pMaxLength, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); + + /** Open a project. + * \param pName + * \param pReader + * \param pCheckCRC + * \param pOpenMainSection + * \param pFileHeaderInfo + * \return \c true on success, \c false otherwise. + */ + bool ProjectOpen(const char* pName, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); + + /** Open a project. + * \param pStream + * \param pStreamData + * \param pReader + * \param pCheckCRC + * \param pOpenMainSection + * \param pFileHeaderInfo + * \return \c true on success, \c false otherwise. + */ + bool ProjectOpen(FbxStream* pStream, void* pStreamData, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); + + /** Open project file without necessarily an .fbx extension. + * \param pName + * \param pReader + * \param pCheckCRC + * \param pOpenMainSection + * \param pFileHeaderInfo + * \return \c true on success, \c false otherwise. + */ + bool ProjectOpenDirect(const char* pName, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); + + /** Create a project in Memory + * \param pAddress + * \param pSize + * \param pWriter + * \param pBinary + * \param pEncrypted + * \param pFileHeaderInfo + * \return \c true on success, \c false otherwise. + */ + bool ProjectCreate(void* pAddress, FbxUInt pSize, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); + + /** Create a project. + * \param pName + * \param pWriter + * \param pBinary + * \param pEncrypted + * \param pFileHeaderInfo + * \return \c true on success, \c false otherwise. + */ + bool ProjectCreate(const char* pName, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); + + /** Create a project. + * \param pStream + * \param pStreamData + * \param pWriter + * \param pBinary + * \param pEncrypted + * \param pFileHeaderInfo + * \return \c true on success, \c false otherwise. + */ + bool ProjectCreate(FbxStream* pStream, void* pStreamData, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); + + /** Create a project without necessary an .fbx extension. + * \param pName + * \param pWriter + * \param pBinary + * \param pEncrypted + * \param pFileHeaderInfo + * \return \c true on success, \c false otherwise. + */ + bool ProjectCreateDirect(const char* pName, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); + + /** Create a project, without writing out the header (yet) + * \param pName + * \param pWriter + * \param pVersion + * \param pBinary + * \param pEncrypted + * \return \c true on success, \c false otherwise. + */ + bool ProjectCreateEmpty(const char* pName, FbxWriter* pWriter, int pVersion, bool pBinary, bool pEncrypted); + + /** Create a project, without writing out the header (yet) + * \param pStream + * \param pStreamData + * \param pWriter + * \param pVersion + * \param pBinary + * \param pEncrypted + * \return \c true on success, \c false otherwise. + */ + bool ProjectCreateEmpty(FbxStream* pStream, void* pStreamData, FbxWriter* pWriter, int pVersion, bool pBinary, bool pEncrypted); + + /** Write FBX signature at the top of the file, prepare file for writing header information + * \return \c true on success, \c false otherwise. + */ + bool ProjectWrite_BeginFileHeader(); + + /** Open up the 'extended header' + * \return \c true on success, \c false otherwise. + */ + bool ProjectWrite_BeginExtendedHeader(); + + /** Write the contents of the extended header + * \param pExtendedHeader + * \return \c true on success, \c false otherwise. + */ + bool ProjectWrite_WriteExtendedHeader(const FbxIOFileHeaderInfo* pExtendedHeader); + + /** Close the extended header + * \return \c true on success, \c false otherwise. + */ + bool ProjectWrite_EndExtendedHeader(); + + /** Close up the header, prepare file for payload write. + * \return \c true on success, \c false otherwise. + */ + bool ProjectWrite_EndFileHeader(); + + /** Close the project. + * \param pData + * \param pSize + * \return \c true on success, \c false otherwise. + */ + bool ProjectClose(void** pData=0, size_t* pSize=0); + + /** Provide the XRef Manager to use to create the .fbm folder. + * \remarks If NULL is used, the old behavior (using the .fbx's folder) is used instead. + */ + void ProjectSetXRefManager(const FbxXRefManager*); + + /** Get the XRef Manager to use. + * \return NULL if no XRef manager has been set. + */ + const FbxXRefManager* ProjectGetXRefManager() const; + + /** Select (and create) a folder to store embedded files (the .fbm + * file folder). Takes into account the settings from the XRef Manager. + * \param pXRefManager + * \param pCreatedFolder + * \param pUserDefinedFolder User defined "working folder" + * \return \c true on success, \c false otherwise. + * \remarks If this already been called successfully, uses the path + * previously created. + * + * Client application is responsible for cleaning up this folder. + * + * This will be automatically called if ProjectSetXRefManager() + * has been called before the .fbm folder needs to be created. + */ + bool ProjectCreateEmbeddedFolder(const FbxXRefManager& pXRefManager, FbxString& pCreatedFolder, const char* pUserDefinedFolder = NULL); + + /** On store event, use this function to tell if we are embedding. + * \param pValue + */ + void SetEmbedded(bool pValue); + + /** Explicitly set the embedding extraction folder. If this is never called, the FBX SDK will determine the best folder to extract embedded files. + * \param pExtractionFolder The file path name where the embedded files should be extracted. + */ + void SetEmbeddingExtractionFolder(const char* pExtractionFolder); + + /** Retrieve the current folder destination where the embedded files will be extracted. This might not be initialized until file I/O is performed. + */ + const char* GetEmbeddingExtractionFolder(); + + /** Check if file is embedded or not. + * \return \c true if file is embedded, false otherwise. + */ + bool IsEmbedded() const; + + /** Check if file is binary or ASCII + * \return \c true if file is binary, false otherwise. + */ + bool IsBinary() const; + + /** Return if binary file is encrypted + * \return \c true if file is encrypted, false otherwise. + */ + bool IsEncrypted () const; + + /** Check CRC code. File must be open, binary and encrypted. + * \return \c true if CRC code is valid or file is not open, binary and encrypted. + */ + bool CheckCRC(); + + /** Return the file version number + * \return the file version number + */ + FbxUInt32 GetFileVersionNumber() const; + + /** Set the cache size for accelerated IO + * \param pCacheSize cache size to set (Kilo Byte) + */ + void CacheSize(FbxUInt32 pCacheSize); + + /** Return the current cache size + * \return the current cache size + */ + FbxUInt32 CacheSize() const; + + //@} + + /** + * \name FBX 7 Format specific functions. + + The FBX 7 format can compress internal arrays to make the file smaller. + The writer may decide not to compress all arrays, or it may even decide + not to compress anyway. Flags are written in the file to help the FBX7 reader + to know if a decompression is required, on a per-array basis. + The following functions address specific topics of the FBX 7 file format. + */ + //@{ + + //! \return Current state of the flag. + bool Fbx7Support() const; + + /** Set the flag state to tell the parser to handle FBX7 files. + * \param pSupport New flag state. + */ + void Fbx7Support(bool pSupport); + + //! \return Current State of the flag. + bool CompressArrays() const; + + /** Set the flag state. + * \param pCompress New flag state. + */ + void CompressArrays(bool pCompress); + + //! \return Current compression minimum size. + int CompressMinimumSize() const; + + /** Set the compression minimum size. + * \param pSize Threshold at which compression may embark. + */ + void CompressMinimumSize(int pSize); + + //! \return Current compression level. + int CompressLevel() const; + + /** Set the compression level. + * \param pLevel Value of the desired compression. + * \remarks The allowed range for pLevel is [0-9] where 0 equals no compression and + * 9 is as-much-as-we-can. + */ + void CompressLevel(int pLevel); + //@} + + /** + * \name Project related functions used to navigate on particular + * sections. + */ + //@{ + + /** Open the main section of a project. + * \return \c true on success, \c false otherwise. + */ + bool ProjectOpenMainSection(); + + /** Get the number of extension sections of a project. + * \return the number of extension sections of a project. + */ + int ProjectGetExtensionSectionCount() const; + + /** Open an extension section of a project. + * \param pExtensionSectionIndex + * \return \c true on success, \c false otherwise. + */ + bool ProjectOpenExtensionSection(int pExtensionSectionIndex); + + /** Create an extension section in a project, not allowed in ASCII and encrypted modes. + * \param pOverwriteLastExtensionSection + * \return \c true on success, \c false otherwise. + */ + bool ProjectCreateExtensionSection(bool pOverwriteLastExtensionSection = false); + + /** Close current section. + */ + void ProjectCloseSection(); + + /** Get current section. + * \return the current section. + */ + int ProjectGetCurrentSection() const; + + /** Get current section mode. + * \return the current section mode. + */ + int ProjectGetCurrentSectionMode() const; + + /** Get current section version. + * \return the current section version. + */ + int ProjectGetCurrentSectionVersion() const; + + /** Get the version number of a section. + * \param pSection + * \return the version number of a section. + * \remarks For main section it can be either 1000, 2000, 2001, 3000, 3001, 4000, 4001 or 4050. + * For the extension section it can be either 4000, 4001 or 4050. + * Returns 0 if section number does not exist. + */ + int ProjectGetSectionVersion(int pSection) const; + + /** Split a version number into major, minor and revision numbers. + * \param pVersion Version number to split. + * \param pMajor Integer to receive major version number. + * \param pMinor Integer to receive minor version number. + * \param pRevision Integer to receive revision version number. + */ + static void ProjectConvertVersionNumber(int pVersion, int& pMajor, int& pMinor, int& pRevision); + + /** Check the password protection flag. + * \return \c true if the current section has a password, \c false otherwise. + */ + bool IsPasswordProtected() const; + + /** Set password protection flag to \c false if the argument matches the password stored in the section. + * \param pPassword + * \return \c true if the argument matches the password stored in the section, \c false otherwise. + * \remarks This function only works in read mode. + */ + bool CheckPassword(const char* pPassword); + + /** Encrypt and store password in a section. + * \param pPassword + * \return \c true on success, \c false otherwise. + * \remarks This function only works in write mode and out of any enclosing block. + * \remarks This function must not be called more than once per section. + */ + bool WritePassword(const char* pPassword); + + //@} + + /** + * \name Directory related functions used to get or set file path information. + */ + //@{ + + /** Get project file name. + * \return project file name. + */ + const char* GetFilename() const; + + /** Get project data directory name. + * \param pAutoCreate + * \return project data directory name. + */ + FbxString GetDataDirectory(bool pAutoCreate = true); + + /** Get the current embedded folder used by this object. + * \param pCreate Whether create the media or not if no such folder is found + * \param pUserDefinedFolder User define working folder + * \return the current embedded folder used by this object. + * \remarks If ProjectCreateEmbeddedFolder has never been called this will + * return an empty string, unless we're explicitly asked to + * create it. + */ + FbxString GetMediaDirectory(bool pCreate = false, const char* pUserDefinedFolder = NULL); + + /** Get the full path of the directory to extract the template file. + * \param pTemplateName + * \param pCreate + * \return the full path of the directory to extract the template file. + */ + FbxString GetContainerTemplateDirectory(const char* pTemplateName, bool pCreate); + + /** Get the path relative to project directory. + * \param pPath + * \return the path relative to project directory. + */ + char* GetRelativePath(const char* pPath); + + /** Get the file path relative to project directory. + * \param pFilePath + * \return the file path relative to project directory. + */ + char* GetRelativeFilePath(const char* pFilePath); + + /** Get the full path of path relative to project directory. + * \param pRelativePath + * \return the full path of path relative to project directory. + */ + char* GetFullPath(const char* pRelativePath); + + /** Get the full file path of path relative to project directory. + * \param pRelativeFilePath + * \return the full file path of path relative to project directory. + */ + char* GetFullFilePath(const char* pRelativeFilePath); + + /** Get the temporary project name. + * \param pName + * \return the temporary project name. + */ + char* GetTmpProjectName(const char* pName) const; + + /** Swap from temporary project. + * \param pName + * \param pError + * \param pErrorSize + * \return \c true on success, \c false otherwise. + */ + bool SwapFromTmpProject(const char* pName, char* pError=NULL, int pErrorSize=0); + + //@} + + /** + * \name Read related functions used to get information of a field or a group of fields. + * Can be used to get the field content data or to navigate from field to field. + */ + //@{ + + /** Reset the field read position. + */ + void FieldReadResetPosition(); + + /** Get the number of fields. + * \return the number of fields. + */ + int FieldGetCount() const; + + /** Get the name of field indexed pFieldIndex. + * \param pFieldIndex + * \return the name of field indexed pFieldIndex. + */ + const char* FieldGetName(int pFieldIndex) const; + + /** Get number of instance field pFieldName has. + * \param pFieldName + * \return the number of instance field pFieldName has. + */ + int FieldGetInstanceCount(const char* pFieldName) const; + + /** Start to read field instance referred by field indexed pFieldIndex, instance indexed pInstance. + * \param pFieldIndex + * \param pInstance + * \return \c true on success, \c false otherwise. + */ + bool FieldReadBegin(int pFieldIndex, int pInstance); + + /** Start to read field pFieldName. + * \param pFieldName + * \return \c true on success, \c false otherwise. + */ + bool FieldReadBegin(const char* pFieldName); + + /** Start to read field instance referred field pFieldName, instance indexed pInstance. + * \param pFieldName + * \param pInstance + * \return \c true on success, \c false otherwise. + */ + bool FieldReadBegin(const char* pFieldName, int pInstance); + + //! Stop to read the current field. + void FieldReadEnd(); + + //! Return if current field is a block. + bool FieldReadIsBlock(); + + //! Start to read a field block. + bool FieldReadBlockBegin(); + + //! Stop to read a field block. + void FieldReadBlockEnd(); + + //! Return the number of read field. + int FieldReadGetCount() const; + + //! Return the number of field remaining to be read. + int FieldReadGetRemain() const; + + //! Return current field value type. + char FieldReadGetType() const; + + //! Return current field value as a char. + char FieldReadCH(); + + /** Return field pFieldName's value as a char. + * \param pFieldName + * \param pDefault + */ + char FieldReadCH(const char* pFieldName, char pDefault=0); + + //! Return current field value as a char pointer. + const char* FieldReadC(); + + /** Return field pFieldName's value as a char pointer. + * \param pFieldName + * \param pDefault + */ + const char* FieldReadC(const char* pFieldName, const char* pDefault=""); + + //! Return current field value as a string (a char pointer). + const char* FieldReadS(); + + /** Return field pFieldName's value as a char pointer. + * \param pFieldName + * \param pDefault + */ + const char* FieldReadS(const char* pFieldName, const char* pDefault=""); + + //! Return current field value as an bool. + bool FieldReadB(); + + /** Return field pFieldName's value as an integer. + * \param pFieldName + * \param pDefault + */ + bool FieldReadB(const char* pFieldName, bool pDefault = false); + + //! Return current field value as an integer. + int FieldReadI(); + + /** Return field pFieldName's value as an integer. + * \param pFieldName + * \param pDefault + */int FieldReadI(const char* pFieldName, int pDefault=0); + + //! Return current field value as an integer. + FbxLongLong FieldReadLL(); + + /** Return field pFieldName's value as an integer. + * \param pFieldName + * \param pDefault + */ + FbxLongLong FieldReadLL(const char* pFieldName, FbxLongLong pDefault=0); + + //! Return current field value as a float. + float FieldReadF(); + + /** Return field pFieldName's value as a float. + * \param pFieldName + * \param pDefault + */ + float FieldReadF(const char* pFieldName, float pDefault=0); + + //! Return current field value as a double. + double FieldReadD(); + + /** Return field pFieldName's value as a double. + * \param pFieldName + * \param pDefault + */ + double FieldReadD(const char* pFieldName, double pDefault=0); + + /** Return field pFieldName's value as a time value. + * \param pFieldName + */ + FbxTime FieldReadT(const char* pFieldName); + + //! Return field pFieldName's value as a time value. + FbxTime FieldReadT(); + + /** Return field pFieldName's value as a timespan value. + * \param pFieldName + */ + FbxTimeSpan FieldReadTS(const char* pFieldName); + + //! Return field pFieldName's value as a timespan value. + FbxTimeSpan FieldReadTS(); + + /** Return current field value as a n floats array. + * \param pValue + * \param pn + */ + void FieldReadFn(float* pValue, FbxUInt pn); + + /** Return current field value as a 3 floats array. + * \param pValue + */ + void FieldRead3F(float* pValue); + + /** Return current field value as a 4 floats array. + * \param pValue + */ + void FieldRead4F(float* pValue); + + /** Return field pFieldName's value as n floats array. + * \param pFieldName + * \param pValue + * \param pDefault + * \param pn + */ + void FieldReadFn(const char* pFieldName, float* pValue, const float *pDefault, FbxUInt pn); + + /** Return field pFieldName's value as 4 floats array. + * \param pFieldName + * \param pValue + * \param pDefault + */ + void FieldRead3F(const char* pFieldName, float* pValue, const float* pDefault=NULL); + + /** Return field pFieldName's value as 3 floats array. + * \param pFieldName + * \param pValue + * \param pDefault + */ + void FieldRead4F(const char* pFieldName, float* pValue, const float* pDefault=NULL); + + /** Return current field value as a n doubles array. + * \param pValue + * \param pn + */ + void FieldReadDn(double* pValue, FbxUInt pn); + + /** Return current field value as a 3 doubles array. + * \param pValue + */ + void FieldRead3D(double* pValue); + + /** Return current field value as a 4 doubles array. + * \param pValue + */ + void FieldRead4D(double* pValue); + + /** Return field pFieldName's value as n doubles array. + * \param pFieldName + * \param pValue + * \param pDefault + * \param pn + */ + void FieldReadDn(const char* pFieldName, double* pValue, const double *pDefault, FbxUInt pn); + + /** Return field pFieldName's value as 4 doubles array. + * \param pFieldName + * \param pValue + * \param pDefault + */ + void FieldRead3D(const char* pFieldName, double* pValue, const double* pDefault=NULL); + + /** Return field pFieldName's value as 3 doubles array. + * \param pFieldName + * \param pValue + * \param pDefault + */ + void FieldRead4D(const char* pFieldName, double* pValue, const double* pDefault=NULL); + + /** Return current field value as raw data. + * \param pByteSize + */ + void* FieldReadR(int* pByteSize); + + /** Return field pFieldName's value as raw data. + * \param pFieldName + * \param pByteSize + */ + void* FieldReadR(const char* pFieldName,int* pByteSize); + + /** + * \name FBX SDK 2009.3 and later + */ + //@{ + //! Return field pFieldName's value as byte. + FbxChar FieldReadByte(); + + /** Return field pFieldName's value as a byte value. + * \param pFieldName + * \param pDefault + */ + FbxChar FieldReadByte(const char* pFieldName, FbxChar pDefault=0); + + //! Return field pFieldName's value as unsigned byte. + FbxUChar FieldReadUByte(); + + /** Return field pFieldName's value as an unsigned byte value. + * \param pFieldName + * \param pDefault + */ + FbxUChar FieldReadUByte(const char* pFieldName, FbxUChar pDefault=0); + + //! Return field pFieldName's value as short. + FbxShort FieldReadShort(); + + /** Return field pFieldName's value as a short value. + * \param pFieldName + * \param pDefault + */ + FbxShort FieldReadShort(const char* pFieldName, FbxShort pDefault=0); + + //! Return field pFieldName's value as unsigned short. + FbxUShort FieldReadUShort(); + + /** Return field pFieldName's value as an unsigned short value. + * \param pFieldName + * \param pDefault + */ + FbxUShort FieldReadUShort(const char* pFieldName, FbxUShort pDefault=0); + + //! Return field pFieldName's value as unsigned integer. + unsigned int FieldReadUI(); + + /** Return field pFieldName's value as an unsigned int as a value. + * \param pFieldName + * \param pDefault + */ + unsigned int FieldReadUI(const char* pFieldName, unsigned int pDefault=0); + + //! Return field pFieldName's value as 64 bit unsigned integer. + FbxULongLong FieldReadULL(); + + /** Return field pFieldName's value as an 64 bit unsigned int as a value. + * \param pFieldName + * \param pDefault + */ + FbxULongLong FieldReadULL(const char* pFieldName, FbxULongLong pDefault=0); + + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const FbxChar* FieldReadArraySBytes( int &pCount ); + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const FbxShort* FieldReadArrayShort ( int &pCount ); + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const FbxUShort* FieldReadArrayUShort( int &pCount ); + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const unsigned int* FieldReadArrayUI ( int &pCount ); + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const FbxULongLong* FieldReadArrayULL ( int &pCount ); + + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const FbxChar* FieldReadArray(int &pCount, const FbxChar*); + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const FbxShort* FieldReadArray(int &pCount, const FbxShort*); + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const FbxUShort* FieldReadArray(int &pCount, const FbxUShort*); + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const unsigned int* FieldReadArray(int &pCount, const unsigned int*); + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const FbxULongLong* FieldReadArray(int &pCount, const FbxULongLong*); + //@} + + /** Read field and copy it into a file. + * \param pFileName Embedded file full path+name. + *\param pRelativeFileName Relative path+name of the embedded file. + * \param pEmbeddedMediaDirectory Directory of the embedded media. + * \param pIsFileCreated Status of the extraction of the embedded data. Set to \c true if the embedded media is correctly extracted in the media directory. + * \remarks Only works when file is binary. This function is not related to flag mEmbedded. + * \return \c false if operation failed. + */ + virtual bool FieldReadEmbeddedFile (FbxString& pFileName, FbxString& pRelativeFileName, const char* pEmbeddedMediaDirectory = "", bool *pIsFileCreated=NULL); + + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const double* FieldReadArrayD( int &pCount ); + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const float* FieldReadArrayF( int &pCount ); + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const int* FieldReadArrayI( int &pCount ); + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const FbxLongLong*FieldReadArrayLL(int &pCount ); + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const bool* FieldReadArrayB( int &pCount ); + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const FbxUChar* FieldReadArrayBytes( int &pCount ); + + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const int* FieldReadArray(int& pCount, const int*); + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const float* FieldReadArray(int& pCount, const float*); + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const double* FieldReadArray(int& pCount, const double*); + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const FbxLongLong* FieldReadArray(int& pCount, const FbxLongLong*); + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const bool* FieldReadArray(int& pCount, const bool*); + /** Read the whole array and return the pointer to it. + * \param pCount Nb of items in the array. + */ + const FbxUChar* FieldReadArray(int& pCount, const FbxUChar*); + + //@} + + /** + * \name Write related functions used to write information of a field or a group of fields. + * Can be used to write the field content data or to navigate from field to field. + */ + //@{ + + /** Start to write a field called pFieldName. + * \param pFieldName + */ + void FieldWriteBegin(const char* pFieldName); + + //! Stop to write the current field. + void FieldWriteEnd(); + + //! Start to write a field block. + void FieldWriteBlockBegin(); + + /** Start to write an object reference field. + * \param pObjectType + * \param pName + * \param pSubType + */ + void FieldWriteObjectBegin(const char* pObjectType, const char* pName, const char* pSubType=NULL); + + //! Stop to write an object reference field. + void FieldWriteObjectEnd(); + + /** Start to write a field block in file pFileName. + * \param pFileName + * \remarks This function is disabled but kept accessible for the FBX SDK. + */ + void FieldWriteBlockBegin(const char* pFileName); + + //! Stop to write a block of field. + void FieldWriteBlockEnd (); + + /** Write field value as a char. + * \param pValue + */ + void FieldWriteCH(char pValue); + + /** Write field pFieldName field with a char as a value. + * \param pFieldName + * \param pValue + */ + void FieldWriteCH(const char* pFieldName, char pValue); + + /** Write field value as char pointer pValue. + * \param pValue + */ + void FieldWriteC(const char* pValue); + + /** Write field pFieldName with a char pointer as a value. + * \param pFieldName + * \param pValue + */ + void FieldWriteC(const char* pFieldName, const char* pValue); + + /** Write field value as FbxString pValue. + * \param pValue + */ + void FieldWriteS(const char* pValue); + + /** Write field value as FbxString pValue. + * \param pValue + */ + void FieldWriteS(const FbxString& pValue); + + /** Write field pFieldName field with a FbxString as a value. + * \param pFieldName + * \param pValue + */ + void FieldWriteS(const char* pFieldName, const char* pValue); + + /** Write field pFieldName field with a FbxString as a value. + * \param pFieldName + * \param pValue + */ + void FieldWriteS(const char* pFieldName, const FbxString& pValue); + + /** Write field value as bool. + * \param pValue + */ + void FieldWriteB(bool pValue); + + /** Write field pFieldName field with a bool value. + * \param pFieldName + * \param pValue + */ + void FieldWriteB(const char* pFieldName, bool pValue); + + /** Write field value as integer. + * \param pValue + */ + void FieldWriteI(int pValue); + + /** Write field pFieldName field with an int as a value. + * \param pFieldName + * \param pValue + */ + void FieldWriteI(const char* pFieldName, int pValue); + + /** Write field value as 64 bit integer. + * \param pValue + */ + void FieldWriteLL(FbxLongLong pValue); + + /** Write field pFieldName field with an 64 bit int as a value. + * \param pFieldName + * \param pValue + */ + void FieldWriteLL(const char* pFieldName, FbxLongLong pValue); + + /** Write field value as float. + * \param pValue + * \remarks Only compatible with 1) MotionBuilder 4.0 and later 2) FBX SDK 3.6.1 and later. + */ + void FieldWriteF(float pValue); + + /** Write field pFieldName field with a float as a value. + * \param pFieldName + * \param pValue + * \remarks Only compatible with 1) MotionBuilder 4.0 and later 2) FBX SDK 3.6.1 and later. + */ + void FieldWriteF(const char* pFieldName, float pValue); + + /** Write field value as double. + * \param pValue + */ + void FieldWriteD(double pValue); + + /** Write field pFieldName field with a double as a value. + * \param pFieldName + * \param pValue + */ + void FieldWriteD(const char* pFieldName, double pValue); + + /** Write field value as time value. + * \param pTime + */ + void FieldWriteT(FbxTime pTime); + + /** Write field pFieldName field with a time as a value. + * \param pFieldName + * \param pValue + */ + void FieldWriteT(const char* pFieldName,FbxTime pValue); + + /** Write field value as timespan value. + * \param pTimeSpan + */ + void FieldWriteTS(FbxTimeSpan pTimeSpan); + + /** Write field pFieldName field with a timespan as a value. + * \param pFieldName + * \param pValue + */ + void FieldWriteTS(const char* pFieldName,FbxTimeSpan pValue); + + /** Write field value as an array of n floats (nF vector). + * \param pValue + * \param pn + */ + void FieldWriteFn(const float* pValue, FbxUInt pn); + + /** Write field pFieldName field with a array of n floats as a value. + * \param pFieldName + * \param pValue + * \param pn + */ + void FieldWriteFn(const char* pFieldName, const float* pValue, FbxUInt pn); + + /** Write field value as an array of 3 floats (3F vector). + * \param pValue + */ + void FieldWrite3F(const float* pValue); + + /** Write field pFieldName field with a array of 3 floats as a value. + * \param pFieldName + * \param pValue + */ + void FieldWrite3F(const char* pFieldName, const float* pValue); + + /** Write field value as an array of 4 floats (4F vector). + * \param pValue + */ + void FieldWrite4F(const float* pValue); + + /** Write field pFieldName field with a array of 4 floats as a value. + * \param pFieldName + * \param pValue + */ + void FieldWrite4F(const char* pFieldName, const float* pValue); + + /** Write field value as an array of n doubles (nD vector). + * \param pValue + * \param pn + */ + void FieldWriteDn(const double* pValue, FbxUInt pn); + + /** Write field pFieldName field with a array of n doubles as a value. + * \param pFieldName + * \param pValue + * \param pn + */ + void FieldWriteDn(const char* pFieldName, const double* pValue, FbxUInt pn); + + /** Write field value as an array of 3 doubles (3D vector). + * \param pValue + */ + void FieldWrite3D(const double* pValue); + + /** Write field pFieldName field with a array of 3 doubles as a value. + * \param pFieldName + * \param pValue + */ + void FieldWrite3D(const char* pFieldName, const double* pValue); + + /** Write field value as an array of 4 doubles (4D vector). + * \param pValue + */ + void FieldWrite4D(const double* pValue); + + /** Write field pFieldName field with a array of 4 doubles as a value. + * \param pFieldName + * \param pValue + */ + void FieldWrite4D(const char* pFieldName, const double* pValue); + + // The maximum number of value entries is, in theory, 2**32. In practice it should be a lot less than that. + // pSize is the number of values to write from each pointer location, and stride is how much we + // advance to get to the next value; if the stride is zero, values are tighly packed together. + // So in total we'll write n * pSize items. + + /** Write array to file. + * \param n Nb of items in the array. + * \param pValue Pointer to the data. + * \param pSize Size of each item in the array. + * \param pStride Array stride. + */ + void FieldWriteArrayD( int n, const double* pValue, int pSize = 1, int pStride = 0 ); + /** Write array to file. + * \param n Nb of items in the array. + * \param pValue Pointer to the data. + * \param pSize Size of each item in the array. + * \param pStride Array stride. + */ + void FieldWriteArrayF( int n, const float* pValue, int pSize = 1, int pStride = 0 ); + /** Write array to file. + * \param n Nb of items in the array. + * \param pValue Pointer to the data. + * \param pSize Size of each item in the array. + * \param pStride Array stride. + */ + void FieldWriteArrayI( int n, const int* pValue, int pSize = 1, int pStride = 0 ); + /** Write array to file. + * \param n Nb of items in the array. + * \param pValue Pointer to the data. + * \param pSize Size of each item in the array. + * \param pStride Array stride. + */ + void FieldWriteArrayLL(int n, const FbxLongLong* pValue, int pSize = 1, int pStride = 0 ); + /** Write array to file. + * \param n Nb of items in the array. + * \param pValue Pointer to the data. + * \param pSize Size of each item in the array. + * \param pStride Array stride. + */ + void FieldWriteArrayB( int n, const bool* pValue, int pSize = 1, int pStride = 0 ); + /** Write array to file. + * \param n Nb of items in the array. + * \param pValue Pointer to the data. + * \param pSize Size of each item in the array. + * \param pStride Array stride. + */ + void FieldWriteArrayBytes( int n, const FbxUChar* pValue, int pSize = 1, int pStride = 0 ); + + /** Write field value as a raw data. + * \param pRawData + * \param pByteSize + */ + void FieldWriteR(const void* pRawData, int pByteSize); + + /** Write field pFieldName field with raw data as a value. + * \param pFieldName + * \param pRawData + * \param pByteSize + */ + void FieldWriteR(const char* pFieldName, const void* pRawData, int pByteSize); + + /** + * \name FBX SDK 2009.3 and later + */ + //@{ + + /** Write field value as byte. + * \param pValue + */ + void FieldWriteByte(FbxChar pValue); + + /** Write field pFieldName field with a byte value. + * \param pFieldName + * \param pValue + */ + void FieldWriteByte(const char* pFieldName, FbxChar pValue); + + /** Write field value as unsigned byte. + * \param pValue + */ + void FieldWriteUByte(FbxUChar pValue); + + /** Write field pFieldName field with an unsigned byte value. + * \param pFieldName + * \param pValue + */ + void FieldWriteUByte(const char* pFieldName, FbxUChar pValue); + + /** Write field value as short. + * \param pValue + */ + void FieldWriteShort(FbxShort pValue); + + /** Write field pFieldName field with a short value. + * \param pFieldName + * \param pValue + */ + void FieldWriteShort(const char* pFieldName, FbxShort pValue); + + /** Write field value as unsigned short. + * \param pValue + */ + void FieldWriteUShort(FbxUShort pValue); + + /** Write field pFieldName field with an unsigned short value. + * \param pFieldName + * \param pValue + */ + void FieldWriteUShort(const char* pFieldName, FbxUShort pValue); + + /** Write field value as an unsigned integer. + * \param pValue + */ + void FieldWriteUI(unsigned int pValue); + + /** Write field pFieldName field with an unsigned int as a value. + * \param pFieldName + * \param pValue + */ + void FieldWriteUI(const char* pFieldName, unsigned int pValue); + + /** Write field value as 64 bit unsigned integer. + * \param pValue + */ + void FieldWriteULL(FbxULongLong pValue); + + /** Write field pFieldName field with an 64 bit unsigned int as a value. + * \param pFieldName + * \param pValue + * \return void + */ + void FieldWriteULL(const char* pFieldName, FbxULongLong pValue); + + /** Write array to file. + * \param n Nb of items in the array. + * \param pValue Pointer to the data. + * \param pSize Size of each item in the array. + * \param pStride Array stride. + */ + void FieldWriteArraySBytes( int n, const FbxChar* pValue, int pSize = 1, int pStride = 0 ); + /** Write array to file. + * \param n Nb of items in the array. + * \param pValue Pointer to the data. + * \param pSize Size of each item in the array. + * \param pStride Array stride. + */ + void FieldWriteArrayShort( int n, const FbxShort* pValue, int pSize = 1, int pStride = 0 ); + /** Write array to file. + * \param n Nb of items in the array. + * \param pValue Pointer to the data. + * \param pSize Size of each item in the array. + * \param pStride Array stride. + */ + void FieldWriteArrayUShort( int n, const FbxUShort* pValue, int pSize = 1, int pStride = 0 ); + /** Write array to file. + * \param n Nb of items in the array. + * \param pValue Pointer to the data. + * \param pSize Size of each item in the array. + * \param pStride Array stride. + */ + void FieldWriteArrayUI( int n, const unsigned int* pValue, int pSize = 1, int pStride = 0 ); + /** Write array to file. + * \param n Nb of items in the array. + * \param pValue Pointer to the data. + * \param pSize Size of each item in the array. + * \param pStride Array stride. + */ + void FieldWriteArrayULL(int n, const FbxULongLong* pValue, int pSize = 1, int pStride = 0 ); + //@} + + /** ASCII files may limit how big you can write your raw data, forcing you to break it down into chunks. + * \return int + */ + int GetFieldRMaxChunkSize() const; + + /** Write object reference pName in the current field. + * \param pName + */ + void FieldWriteObjectReference(const char* pName); + + /** Write object reference pName in field pFieldName. + * \param pFieldName + * \param pName + */ + void FieldWriteObjectReference(const char* pFieldName, const char* pName); + + /** Write field with file content as a value. + * \param pFileName + * \param pRelativeFileName + * \remarks Only works when file is binary. This function is not related to flag mEmbedded. + * \return \c false if operation failed. + */ + bool FieldWriteEmbeddedFile (FbxString pFileName, FbxString pRelativeFileName); + + /** Write comments, only effective in ASCII mode. + * \param pFieldName + */ + void WriteComments(const char* pFieldName); + + //@} + +#ifdef _DEBUG + // Dump function for debugging purpose only + void StdoutDump(); +#endif + + /** Get if the embedded file is currently loaded + * \return true if loaded, false otherwise + * \remarks An embedded file is a file like a JPEG image used for texture or an AVI file for video. + * When files are embedded, the size of the FBX file can be very large since other files are embedded in it. + * FBX Version 6 and lower cannot embed files when saved in ASCII. + * FBX Version 7 and over can embed files even when saved in ASCII mode. + */ + bool GetHaveLoadedEmbededFile() const; + + /** Get the maximum byte count written + * \param pMemPtr The address of the memory file + * \param[out] pSize Stores the maximum byte count written + */ + void GetMemoryFileInfo(void** pMemPtr, size_t& pSize) const; + + /** Get a internal flag to manage pre FBX version 6 data format + * Used for backwards compatibility + */ + bool IsBeforeVersion6() const; + + /** Set a internal flag to manage pre FBX version 6 data format + * Used for backwards compatibility + */ + void SetIsBeforeVersion6(bool pIsBeforeVersion6); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + bool ProjectOpen (FbxFile * pFile, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL); + +private: + // to resolve warning C4512: 'class' : assignment operator could not be generated + FbxIO& operator=(const FbxIO& pOther); + + FbxStatus& mStatus; + + struct InternalImpl; + struct InternalImpl32; + struct InternalImpl64; + InternalImpl* mImpl; + + //! Project Global + + void ProjectClear(); + void ProjectReset(); + + bool ProjectReadHeader(bool pCheckASCIIHeader, bool pCheckCRC, bool pOpenMainSection, FbxIOFileHeaderInfo* pFileHeaderInfo); + bool ProjectReadExtendedHeader(FbxInt64& pExtendedHeaderEnd, FbxIOFileHeaderInfo* pFileHeaderInfo); + bool BinaryReadHeader(); + bool BinaryReadSectionPosition(); + bool ASCIIReadHeader(); + bool ASCIIReadSectionPosition(); + + bool ProjectWriteHeader(FbxIOFileHeaderInfo* pFileHeaderInfo); + bool ProjectWriteExtendedHeader(FbxIOFileHeaderInfo* pFileHeaderInfo); + void BinaryWriteHeader(); + void ASCIIWriteHeader(); + + void ReadEncryptionKey(char* pEncryptionKey); + void WriteEncryptionKey(char* pEncryptionKey); + + //! Project Section + + bool ProjectClearSection(); + bool ProjectOpenSection(int pSection); + bool BinaryReadSectionHeader(); + FbxInt64 BinaryReadSectionFooter(char* pSourceCheck); + bool BinaryReadExtensionCode(FbxInt64 pFollowingSectionStart, FbxInt64& pSectionStart, FbxUInt32& pSectionVersion); + void BinaryReadSectionPassword(); + + bool ProjectWriteSectionHeader(); + void BinaryWriteSectionFooter(); + bool BinaryWriteExtensionCode(FbxInt64 pSectionStart, FbxUInt32 pSectionVersion); + + FbxString GetCreationTime() const; + void SetCreationTime(FbxString pCreationTime); + void CreateSourceCheck(char* lSourceCheck); + bool TestSourceCheck(char* pSourceCheck, char* pSourceCompany); + FbxString GetMangledCreationTime(); + void EncryptSourceCheck(char* pSourceCheck, char* pEncryptionData); + void DecryptSourceCheck(char* pSourceCheck, const char* pEncryptionData); + + void EncryptPasswordV1(FbxString pOriginalPassword, FbxString &pEncryptedPassword); + void DecryptPasswordV1(FbxString pEncryptedPassword, FbxString &pDecryptedPassword); + + //! Read + + void CheckValidityOfFieldName(const char* pFieldName); + void GetUnusedEmbeddedName(const FbxString& pDirectory, const FbxString& pName, FbxString& pResult, bool pCreateSubdirectory); + + //! Get project media directory name + FbxString GetDirectory(bool pAutoCreate, const char* pExtension); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_FILEIO_FBX_IO_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxreaderfbx5.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxreaderfbx5.h new file mode 100644 index 00000000..2018a229 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxreaderfbx5.h @@ -0,0 +1,256 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxreaderfbx5.h +#ifndef _FBXSDK_FILEIO_FBX_READER_FBX5_H_ +#define _FBXSDK_FILEIO_FBX_READER_FBX5_H_ + +#include + +#include + +class FbxAnimLayer; +class Fbx5ObjectTypeInfo; + +FbxReader* CreateFBXReader(FbxManager& pManager, + FbxImporter& pImporter, + int pID, + FbxStatus& pStatus); +void GetInfoFBXReader(int* pCount, + const char* * pExtensions, + const char* * pDescriptions); + +class FbxReaderFbx5 : public FbxReader +{ +public: + FbxReaderFbx5(FbxManager& pManager, FbxImporter& pImporter, int pID, FbxStatus& pStatus); + virtual ~FbxReaderFbx5(); + + virtual bool FileOpen(char* pFileName, bool pIgnoredArg); + virtual bool FileOpen(char* pFileName, EFileOpenSpecialFlags pFlags){ return FbxReader::FileOpen(pFileName, pFlags); } + virtual bool FileOpen(char* pFileName); + virtual bool FileOpen(FbxFile * pFile); + virtual bool FileOpen(FbxStream * pStream, void* pStreamData); + virtual bool FileClose(); + virtual bool IsFileOpen(); + + virtual void SetEmbeddingExtractionFolder(const char* pExtractFolder); + + typedef enum + { + eASCII, + eBINARY, + eENCRYPTED + } EImportMode; + + EImportMode GetImportMode(); + virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision); + + virtual bool GetReadOptions(bool pParseFileAsNeeded = true); + virtual bool Read(FbxDocument* pDocument); + + virtual bool GetReadOptions(FbxIO* pFbx, bool pParseFileAsNeeded = true); + virtual bool Read(FbxScene& pScene, FbxIO* pFbx); + + virtual FbxDocumentInfo* GetSceneInfo() { return mSceneInfo; } + virtual FbxArray* GetTakeInfo() { return &mTakeInfo; } + + virtual bool SupportsStreams() const { return true; } + +private: + void ReadOptionsInMainSection(); + void ReadTakeOptions(); + bool ReadOptionsInExtensionSection(int& pSectionIndex); + void ReadOptionsInGenericSection(); + bool WriteOptionsInExtensionSection(bool pOverwriteLastExtensionSection=false); + bool WriteThumbnail(FbxThumbnail*); + FbxDocumentInfo* ReadSceneInfo(); + FbxDocumentInfo* ReadSceneInfo(FbxString& pType); + void WriteSceneInfo(FbxDocumentInfo*); + void SetIsBeforeVersion6WithMainSection(bool pOpenMainSection); + + bool ReadDefinitionSection(FbxScene& pScene, FbxArray& pObjectContent); + bool ReadObjectSection(FbxScene& pScene, FbxArray& pObjectContent); + bool ReadObject(FbxScene& pScene, FbxString& pObjectType, FbxString& pObjectSubType, FbxString& pObjectName, FbxString& pObjectUniqueId); + bool ReadNode(); + //bool ReadGenericNode(FbxScene& pScene); + bool ReadAnimation(FbxScene& pScene); + bool ReadTakeAnimation(FbxScene& pScene, FbxTakeInfo* pTakeInfo); + FbxThumbnail* ReadThumbnail(); + bool ReadNodeAnimation(FbxIO& pFileObject, FbxScene& pScene, FbxTakeInfo* pTakeInfo); + bool TimeShiftNodeAnimation(FbxScene& pScene, FbxTakeInfo* pTakeInfo); + bool ReadHierarchy(FbxNode& pRootNode); + bool ResolveHierarchy(FbxNode& pRootNode); + bool ResolveLinks(FbxNode& pRootNode, FbxNode& pCurrentNode); + bool ResolveTargets(FbxNode& pRootNode); + bool ResolveUpNodes(FbxNode& pRootNode); + bool ResolveCameraBackgrounds(FbxScene& pScene); + void RemoveDuplicateTextures(FbxScene& pScene); + void RemoveDuplicateMaterials(FbxScene& pScene); + + void ReadPose(FbxScene& pScene); + bool ReadPose(FbxScene& pScene, FbxPose* pPose, bool pAsBindPose); + + void ReadCameraSwitcher(FbxScene& pScene); + void ReorderCameraSwitcherIndices(FbxScene& pScene); + + void ReadGobo(FbxScene& pScene); + void ReadGoboSection(FbxScene& pScene); + void ReadGobo(FbxGobo& pGobo); + + void ReadCharacter(FbxScene& pScene); + void ReadCharacter(FbxCharacter& pCharacter,int& pInputType, int& pInputIndex); + void ReadCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId); + void ReadCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId); + void ReadCharacterLinkRotationSpace(FbxCharacterLink& pCharacterLink); + void ReadFilterSet(FbxCharacter& pCharacter); + void ReadControlSet(FbxControlSet& pControlSet); + void ReadControlSetLinkGroup(FbxControlSet& pControlSet, int pCharacterGroupId); + void ReadControlSetLink(FbxControlSet& pControlSet, int pCharacterNodeId); + void ReadEffector(FbxControlSet& pControlSet); + void ReadEffectorAux(FbxControlSet& pControlSet); + + int ReadCharacterPose(FbxScene& pScene); + bool ReadCharacterPose(FbxCharacterPose& pCharacterPose); + + void ReadGlobalLightSettings(FbxScene& pScene); + void ReadShadowPlane(FbxScene& pScene); + void ReadAmbientColor(FbxScene& pScene); + void ReadFogOption(FbxScene& pScene); + + void ReadGlobalCameraAndTimeSettings(FbxScene& pScene); // for pre v6 files + void ReadGlobalTimeSettings(FbxScene& pScene); + + void ReadGlobalCameraSettings(FbxScene& pScene); + + bool ReadMedia(FbxScene& pScene, const char* pEmbeddedMediaDirectory = ""); + FbxString ReadMediaClip(const char* pEmbeddedMediaDirectory); + + bool ReadNode ( FbxNode& pNode ); + bool ReadGenericNode ( FbxGenericNode& pNode ); + bool ReadNodeChildrenName ( FbxNode& pNode ); + bool ReadNodeShading ( FbxNode& pNode ); + bool ReadNodeCullingType ( FbxNode& pNode ); + bool ReadNodeLimits ( FbxNode& pNode ); + bool ReadNodeTarget ( FbxNode& pNode ); + bool ReadNodeAttribute ( FbxNode& pNode ); + bool ReadNodePivots ( FbxNode& pNode ); + bool ReadNodeDefaultAttributes ( FbxNode& pNode ); + bool ReadNodeProperties ( FbxNode& pNode ); + bool ReadGeometry ( FbxGeometry& pGeometry ); + bool ReadGeometryMaterial ( FbxGeometry& pGeometry ); + bool ReadGeometryTexture ( FbxGeometry& pGeometry ); + bool ReadGeometryLinks ( FbxGeometry& pGeometry ); + bool ReadGeometryShapes ( FbxGeometry& pGeometry ); + bool ReadGeometryLayer ( FbxGeometry& pGeometry ); + bool ReadGeometryTextureLayer ( FbxGeometry& pGeometry, int pLayerIndex ); + + bool ReadNull ( FbxNull& pNull ); + + bool ReadMarker ( FbxMarker& pMarker ); + + bool ReadCamera ( FbxCamera& pCamera ); + bool ReadCameraSwitcher ( FbxCameraSwitcher& pCameraSwitcher ); + + bool ReadLight ( FbxLight& pLight ); + + bool ReadMesh ( FbxMesh& pMesh ); + bool ReadMeshVertices ( FbxMesh& pMesh ); + bool ReadMeshNormals ( FbxMesh& pMesh ); + bool ReadMeshAssignation ( FbxMesh& pMesh ); + bool ReadMeshPolygonIndex ( FbxMesh& pMesh ); + bool ReadMeshPolyGroupIndex ( FbxMesh& pMesh ); + bool ReadMeshMaterialsID ( FbxMesh& pMesh ); + bool ReadMeshTexturesID ( FbxMesh& pMesh ); + bool ReadMeshTextureType ( FbxMesh& pMesh ); + bool ReadMeshTextureUV ( FbxMesh& pMesh ); + bool ReadMeshTextureIndex ( FbxMesh& pMesh ); + bool ReadMeshVertexColors ( FbxMesh& pMesh ); + + + // Layer elements + bool ReadLayerElements (FbxGeometry& pGeometry); + bool ReadLayerElementsMaterial (FbxGeometry* pGeometry, FbxArray& pElementsMaterial); + bool ReadLayerElementsNormal (FbxGeometry* pGeometry, FbxArray& pElementsNormal); + bool ReadLayerElementsVertexColor (FbxGeometry* pGeometry, FbxArray& pElementsVertexColor); + bool ReadLayerElementsTexture (FbxGeometry* pGeometry, FbxArray& pElementsTexture); + bool ReadLayerElementsUV (FbxGeometry* pGeometry, FbxArray& pElementsUV); + bool ReadLayerElementsPolygonGroup (FbxGeometry* pGeometry, FbxArray& pElementsPolygonGroup); + + bool ReadNurb ( FbxNurbs& pNurbs ); + + bool ReadPatch ( FbxPatch& pPatch ); + int ReadPatchType ( FbxPatch& pPatch ); + + bool ReadTexture(FbxFileTexture& pTexture); + bool ReadSurfaceMaterial(FbxSurfacePhong& pMaterial); + bool ReadLink(FbxCluster& pLink); + bool ReadSkin(FbxSkin& pSkin); + bool ReadCluster(FbxCluster& pCluster); + bool ReadShape(FbxShape& pShape, FbxGeometry& pGeometry); + bool ReadVideo(FbxVideo& pVideo); + bool ReadConstraint(FbxConstraint& pPosition); + + bool ReadUserProperties (FbxNode& pNode); + bool ReadProperties(FbxObject *pObject); + + // + // 6.0 Format specific + // + bool ReadConnectionSection(); + void ReadPoses(FbxScene& pScene); + + FbxString ConvertCameraName(FbxString pCameraName); + + bool GenerateParametricGeometryLayer(FbxGeometry& pGeometry); + void CorrectTextureLayers(FbxMesh& pMesh); + + void TransferAnimation(void* pRootCurveNode, FbxProperty& pRootProperty, bool pValueOnly = false); + void ReadAnimation(FbxIO& pFileObject, void* pCurveNode); + void ReadAnimation(FbxIO& pFileObject, FbxObject* pObj); + + void ReadTimeWarps(FbxIO& pFileObject, FbxMultiMap& pTimeWarpSet); + void DestroyTimeWarps(FbxMultiMap& pTimeWarpSet); + + FbxNode* FindNode (char* pName); + int FindString(FbxString pString, FbxArray& pStringArray); + FbxString FindFile(FbxString pFullFilePath, FbxString pRelativeFilePath = ""); + + bool ReadPassword(FbxString pPassword); + + void ReadSceneGenericPersistenceSection(FbxScene& pScene); + + + + +private: + FbxReaderFbx5& operator=(FbxReaderFbx5 const&) { return *this; } + + FbxIO* mFileObject; + FbxImporter& mImporter; + + FbxCharPtrSet mNodeArrayName; + FbxCharPtrSet mTargetArrayName; + FbxCharPtrSet mUpNodeArrayName; + FbxCharPtrSet mCameraBackgroundArrayName; + + FbxObjectStringMap mObjectMap; + FbxArray mTakeInfo; + FbxDocumentInfo * mSceneInfo; + FbxAnimLayer* mAnimLayer; + + // Temporary storage + FbxArray mTemporaryTextures; +}; + +#include + +#endif /* _FBXSDK_FILEIO_FBX_READER_FBX5_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxreaderfbx6.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxreaderfbx6.h new file mode 100644 index 00000000..55af3f4f --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxreaderfbx6.h @@ -0,0 +1,1102 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxreaderfbx6.h +#ifndef _FBXSDK_FILEIO_FBX_READER_FBX6_H_ +#define _FBXSDK_FILEIO_FBX_READER_FBX6_H_ + +#include + +#include + +class FbxAnimStack; +class FbxAnimLayer; +class Fbx6ObjectTypeInfo; +class Fbx6TypeReadReferences; + + +/** \brief Helper class to merge Class root property templates. + * Add class id and object to the template and search object by + * class id. + */ +class Fbx6ClassTemplateMap +{ +public: + + /** Constructor + * + */ + Fbx6ClassTemplateMap(); + + /** Destructor + * + */ + ~Fbx6ClassTemplateMap(); + + // Fbx6ClassTemplateMap will own this template object. + + /** Add the template object to template map + * \param pId Class Id + * \param pTemplateObject template object + * \return if the object is successfully added return \c true, otherwise return \c false. + */ + bool AddClassId( FbxClassId pId, FbxObject* pTemplateObject ); + + /** Merge the properties of FbxObject with the object with the same class id + * \param pObject The FbxObject to merge + * \return if the object is merged return \c true, otherwise return \c false. + */ + bool MergeWithTemplate( FbxObject* pObject ) const; + + /** Delete all FbxObject in template map + * + */ + void Clear(); + +private: + typedef FbxMap< FbxClassId, FbxObject*, FbxClassIdCompare > MapType; + MapType mClassMap; + + /** Whether the property is modified + * \param lProp The property to check + * \return If the property has been modified return \c true, otherwise return \c false + */ + bool HasModifiedFlags(FbxProperty lProp) const; + inline FbxPropertyFlags::EFlags IndexToFlag( int i ) const { return static_cast(1 << i); } +}; + + + +/** \brief This class is the FBX v6 reader. +* The reader provide you the ability to read the global settings, objects and animation information from file. +* +*/ +class FbxReaderFbx6 : public FbxReader +{ +public: + + /** Constructor + * \param pManager the FbxManager Object + * \param pImporter the FbxImporter to import the SDK objects + * \param pID id for current reader + * \param pStatus the FbxStatus object to hold error codes + */ + FbxReaderFbx6(FbxManager& pManager, FbxImporter& pImporter, int pID, FbxStatus& pStatus); + + /** Destructor + * + */ + virtual ~FbxReaderFbx6(); + + /** Open file with certain EFileOpenSpecialFlags + * \param pFileName name of the File to open + * \param pFlags the EFileOpenSpecialFlags to open with + * \return if the file is open successfully return true, otherwise return false + */ + virtual bool FileOpen(char* pFileName, EFileOpenSpecialFlags pFlags); + + /** Open file with default flag + * \param pFileName name of the File to open + * \return if the file is open successfully return \c true, otherwise return \c false + */ + virtual bool FileOpen(char* pFileName); + + /** Open file with FbxFile handle + * \param pFile the FbxFile handle + * \return if the file is open successfully return \c true, otherwise return \c false + */ + virtual bool FileOpen(FbxFile * pFile); + + /** Open file from stream + */ + virtual bool FileOpen(FbxStream * pStream, void* pStreamData); + + /** Close the file stream + * \return if the file is closed successfully return \c true, otherwise return \c false + */ + virtual bool FileClose(); + + /** Check whether the file stream is open. + * \return if the file stream is open return \c true, otherwise return \c false. + */ + virtual bool IsFileOpen(); + + /** \enum EImportMode File import mode. + * + */ + typedef enum + { + eASCII, /**< Plain text mode */ + eBINARY, /**< Binary mode */ + eENCRYPTED /**< Encrypted mode */ + } EImportMode; + + /** Get current Import mode + * \return return the EImportMode value + */ + EImportMode GetImportMode(); + + /** Get file version + * \param pMajor Major version + * \param pMinor Minor version + * \param pRevision Revision version + */ + virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision); + + /** Get axis system information from file + * \param pAxisSystem axis system in file + * \param pSystemUnits system unit in file + * \return if either pAxisSystem or pSystemUnits is \c NULL return \c false, otherwise return \c true. + */ + virtual bool GetAxisInfo(FbxAxisSystem* pAxisSystem, FbxSystemUnit* pSystemUnits); + + /** Get FBX file time mode read from GlobalSettings in FBX 6.n and FBX 7.n + * \param pTimeMode ref to a FbxTime::EMode enum + * \return \c true on success, \c false otherwise. + * \remarks This function must be called after FbxImporter::Initialize(). + * Can be used for statistics (via GlobalSettings) before loading the whole scene from the file. + */ + virtual bool GetFrameRate(FbxTime::EMode &pTimeMode); + + /** Get the statistics from file + * \param pStats statistics in file + * \return if fetching statistics is successfully return \c true, otherwise return \c false. + */ + virtual bool GetStatistics(FbxStatistics* pStats); + + /** Get the file stream options + * \param pParseFileAsNeeded Whether to parse file as read options + * \return true on success, otherwise return false. + */ + virtual bool GetReadOptions(bool pParseFileAsNeeded = true); + + + /** Read file with stream options + * \param pDocument FbxDocument to store the file data + * \return if fetching statistics is successful return \c true, otherwise return \c false. + */ + virtual bool Read(FbxDocument *pDocument); + + /** Get the file options + * \param pFbx file object to read options + * \param pParseFileAsNeeded Whether to parse file as read options + * \return true on success, otherwise return false. + */ + virtual bool GetReadOptions(FbxIO* pFbx, bool pParseFileAsNeeded = true); + + + /** Read file with stream options + * \param pDocument FbxDocument to store the file data + * \param pFbx file object to read from + * \return if reading the file is successful return \c true, otherwise return \c false. + */ + virtual bool Read(FbxDocument *pDocument, FbxIO* pFbx); + + + /** Read all the properties and flags + * \param pParams settings to assign properties and flags + */ + virtual void PluginReadParameters(FbxObject& pParams); + + /** Returns the scene info from the file. + * \return The pointer to file scene info defined by this reader. + */ + virtual FbxDocumentInfo* GetSceneInfo() { return mSceneInfo; } + + + /** Returns the pointer to the list of TakeInfo from the file. + * \return NULL + */ + virtual FbxArray* GetTakeInfo() { return &mTakeInfo; } + + /** Pass a progress handler to the reader + * \param pProgress FbxProgress to store the progress information. + */ + virtual void SetProgressHandler(FbxProgress *pProgress); + + virtual void SetEmbeddingExtractionFolder(const char* pExtractFolder); + + virtual bool SupportsStreams() const { return true; } + +private: + + /** Read scene information + * \return A pointer of document info. Return \c NULL if any error exist + */ + FbxDocumentInfo* ReadSceneInfo(); + + /** Read scene information by type + * \param pType the type to read + * \return A pointer of document info. Return \c NULL if any error exist + */ + FbxDocumentInfo* ReadSceneInfo(FbxString& pType); + + /** Write scene information + * + */ + void WriteSceneInfo(FbxDocumentInfo*); + + /** Write thumbnail + * + */ + bool WriteThumbnail(FbxThumbnail*); + + /** + * \name FBX File sections + */ + //@{ + + /** Create generic object and connect with FbxIO document + * \param pDocument FbxDocument to connect with the generic object + * \param pObjectType type of generic object + * \param pObjectSubType Subtype of generic object + * \param pObjectName Name of generic object + * \param pFlags Object flag + * \return A pointer of the generic object. Return \c NULL if creation fails. + */ + FbxObject* CreateGenericObject(FbxDocument *pDocument, char* pObjectType, char* pObjectSubType, char* pObjectName, FbxObject::EObjectFlag pFlags=FbxObject::eSavable); + + /** Read description section and assign the document name + * \param pDocument Document to read + * \param pDocumentName Document name to assign + * \return if reading description section is successful return \c true, otherwise return \c false. + */ + bool ReadDescriptionSection(FbxDocument *pDocument, FbxString& pDocumentName); + + /** Read reference section and fill the external references + * \param pDocument Document to read + * \param pDocReferences External references to fill + * \return if reading reference section is successful return \c true, otherwise return \c false. + */ + bool ReadReferenceSection(FbxDocument *pDocument, Fbx6TypeReadReferences& pDocReferences); + + /** Read definition section and fill object type info array + * \param pDocument Document to read + * \param pObjectContent Object type info array to fill + * \return if reading definition section is successful return \c true, otherwise return \c false. + */ + bool ReadDefinitionSection(FbxDocument *pDocument, FbxArray& pObjectContent ); + + /** Read object section and fill object type info array and external reference + * \param pDocument Document to read + * \param pObjectContent Object type info array to fill + * \param pDocReferences External references to fill + * \return if reading object section is successful return \c true, otherwise return \c false. + */ + bool ReadObjectSection(FbxDocument *pDocument, FbxArray& pObjectContent, Fbx6TypeReadReferences& pDocReferences ); + + /** Read object information from document + * \param pDocument Document to read + * \param pObjectType Object type to assign + * \param pObjectSubType Object subtype to assign + * \param pObjectName Object Name + * \param pObjectUniqueId Object unique id + * \param pReferencedObject Reference object + * \param pDocReferences External reference + * \return if reading object is successful return \c true, otherwise return \c false. + */ + bool ReadObject(FbxDocument *pDocument, FbxString& pObjectType, FbxString& pObjectSubType, FbxString& pObjectName, FbxString& pObjectUniqueId, FbxObject* pReferencedObject, Fbx6TypeReadReferences& pDocReferences); + + /** Read the connection section from document + * \param pDocument Document to read + * \return if reading connection section is successful return \c true, otherwise return \c false. + */ + bool ReadConnectionSection(FbxDocument *pDocument ); + //@} + + /** + * \name Takes and animation + */ + //@{ + + /** Read animation from document + * \param pDocument Document to read + * \return if reading animation is successful return \c true, otherwise return \c false. + */ + bool ReadDocumentAnimation(FbxDocument *pDocument); + + /** Read object animation from file object + * \param pFileObject File object handle + * \param pNode Fill this node with animation + * \param pAnimStack Animation stack to read from + * \param pExceptionFlag Exception flag + */ + void ReadObjectAnimation(FbxIO& pFileObject, FbxObject* pNode, FbxAnimStack& pAnimStack, int pExceptionFlag); + + /** Read property animation from file object + * \param pFileObject File object handle + * \param pProp Fill the property with animation + * \param pAnimStack Animation stack to read from + */ + void ReadPropertyAnimation(FbxIO& pFileObject, FbxProperty* pProp, FbxAnimStack& pAnimStack); + + /** Read take animation from fbx scene + * \param pScene Scene to read animation + * \param pTakeInfo Take info to read from + * \remarks This function will allocate the corresponding FbxAnimStack with the base animation layer. + */ + bool ReadTakeAnimation(FbxScene& pScene, FbxTakeInfo* pTakeInfo); + + /** Read node animation from file + * \param pFileObject File object to read + * \param pScene Scene to read animation + * \param pAnimStack The animation stack to read from + * \param pTakeInfo Take info to read from + */ + bool ReadNodeAnimation(FbxIO& pFileObject, FbxScene& pScene, FbxAnimStack& pAnimStack, FbxTakeInfo* pTakeInfo); + + + /** Read layer information from file + * \param pFileObject File object to read + * \param pTakeInfo Take info to read from + */ + void ReadLayers(FbxIO& pFileObject, FbxTakeInfo* pTakeInfo); + + /** Read time warps from file + * \param pFileObject File object to read + * \param pTimeWarpSet Time warp set to fill + * \param pScene Scene holding the time warp curves. + */ + void ReadTimeWarps(FbxIO& pFileObject, FbxMultiMap& pTimeWarpSet, FbxScene& pScene); + + /** Read thumbnail + * \return A pointer of thumbnail. Return \c NULL if any error exist + */ + FbxThumbnail* ReadThumbnail(); + + /** Set time shift for node animation from take information + * \param pScene Scene to read + * \param pAnimStack The animation stack to modify + * \param pTimeOffsetType A value from the FbxTakeInfo::EImportOffsetType enumeration that indicates the time shift offset type + * \param pTimeOffset The time shift offset + * \return if time shifting is successful return \c true, otherwise return \c false. + */ + bool TimeShiftNodeAnimation(FbxScene& pScene, FbxAnimStack& pAnimStack, int pTimeOffsetType, FbxTime pTimeOffset); + //@} + + /** + * \name Camera switcher + */ + //@{ + + /** Read camera switcher from scene + * \param pScene Scene to read from + */ + void ReadCameraSwitcher(FbxScene& pScene); + + /** Fill camera switcher object with data + * \param pCameraSwitcher Camera switcher to fill + */ + bool ReadCameraSwitcher( FbxCameraSwitcher& pCameraSwitcher ); + + /** Reorder camera switcher indices in the scene + * \param pScene Scene to read from + */ + void ReorderCameraSwitcherIndices(FbxScene& pScene); + //@} + + /** + * \name Global parameters + */ + //@{ + + /** Read global light settings from scene + * \param pScene Scene to read from + */ + void ReadGlobalLightSettings(FbxScene& pScene); + + /** Read global time settings from scene + * \param pScene Scene to read from + */ + void ReadGlobalTimeSettings(FbxScene& pScene); + + /** Read global camera settings from scene + * \param pScene Scene to read from + */ + void ReadGlobalCameraSettings(FbxScene& pScene); + + /** Read shadow plane from scene + * \param pScene Scene to read from + */ + void ReadShadowPlane(FbxScene& pScene); + + /** Read ambient color from scene + * \param pScene Scene to read from + */ + void ReadAmbientColor(FbxScene& pScene); + + /** Read fog option from scene + * \param pScene Scene to read from + */ + void ReadFogOption(FbxScene& pScene); + //@} + + /** + * \name Character + */ + //@{ + + /** Read character information from file + * \param pCharacter Character object to fill + * \param pInputType Unused. + * \param pInputIndex Unused. + */ + void ReadCharacter(FbxCharacter& pCharacter,int& pInputType, int& pInputIndex); + + /** Read character link group information from file by group id + * \param pCharacter Character object to fill + * \param pCharacterGroupId Group id to read character link + */ + void ReadCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId); + + /** Read character link information from file by node id + * \param pCharacter Character object to fill + * \param pCharacterNodeId Character node id + */ + void ReadCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId); + + /** Read character link formation in rotation space + * \param pCharacterLink Character link object to fill + */ + void ReadCharacterLinkRotationSpace(FbxCharacterLink& pCharacterLink); + + /** Read character pose from file + * \param pCharacterPose Character pose to fill + * \return if reading character pose is successful return \c true, otherwise return \c false. + */ + bool ReadCharacterPose(FbxCharacterPose& pCharacterPose); // TBV + //@} + + /** + * \name Misc + */ + //@{ + /** Read pose object from scene + * \param pScene Scene to read from + * \param pPose Pose object + * \param pAsBindPose whether to treat the pose as BindPose + * \return if reading pose is successful return \c true, otherwise return \c false. + */ + bool ReadPose(FbxScene& pScene, FbxPose* pPose, bool pAsBindPose); + + /** Read media data from document + * \param pDocument Document to read from + * \param pEmbeddedMediaDirectory the directory path storing the embedded media + * \return if reading media is successful return \c true, otherwise return \c false. + */ + bool ReadMedia(FbxDocument *pDocument, const char* pEmbeddedMediaDirectory = ""); + + /** Read global settings from file + * \param pGlobalSettings global settings object to fill + * \return if reading global settings is successful return \c true, otherwise return \c false. + */ + bool ReadGlobalSettings(FbxGlobalSettings& pGlobalSettings); + //@} + + /** + * \name Objects + */ + //@{ + + /** Read node data from file + * \param pNode Node object to fill data + * \param pObjectSubType Subtype of object + * \param pDocReferences External reference + * \return if reading node data is successful return \c true, otherwise return \c false. + */ + bool ReadNode ( FbxNode& pNode, FbxString& pObjectSubType, Fbx6TypeReadReferences& pDocReferences ); + + /** Read properties and flags for fbx container + * \param pContainer container to fill data + * \return if reading data to container is successful return \c true, otherwise return \c false. + */ + bool ReadContainer ( FbxContainer& pContainer ); + + /** Read properties and flags for fbx generic node + * \param pNode generic node to fill data + * \return if reading data to generic node is successful return \c true, otherwise return \c false. + */ + bool ReadGenericNode ( FbxGenericNode& pNode ); + + /** Read shading information of node + * \param pNode fbx node to fill shading information + * \return if reading shading information to node is successful return \c true, otherwise return \c false. + */ + bool ReadNodeShading ( FbxNode& pNode ); + + /** Read back-face culling type for node + * \param pNode fbx node + * \return if reading culling type to node is successful return \c true, otherwise return \c false. + */ + bool ReadNodeCullingType ( FbxNode& pNode ); // TBV, probablement passe tout en property + + /** Read target transform for node + * \param pNode fbx node + * \return if reading target transform to node is successful return \c true, otherwise return \c false. + */ + bool ReadNodeTarget ( FbxNode& pNode ); + + /** Read node attribute according to object subtype + * \param pNode fbx node + * \param pObjectSubType object subtype + * \param pCreatedAttribute set to true if attribute exists + * \param pDocReferences external reference to search + * \return if reading node attribute is successful return \c true, otherwise return \c false. + */ + bool ReadNodeAttribute ( FbxNode& pNode , FbxString& pObjectSubType, bool& pCreatedAttribute, Fbx6TypeReadReferences& pDocReferences); + + /** Read node attribute according to object subtype + * \param pObjectSubType object subtype + * \param pObjectName object name + * \param pObjectUniqueId unique id of object + * \param pReferencedObject pointer of reference object + * \return A pointer of node attribute. Return \c NULL if the attribute does not exist + */ + FbxNodeAttribute* ReadNodeAttribute( FbxString& pObjectSubType, FbxString& pObjectName, FbxString& pObjectUniqueId, FbxObject* pReferencedObject); + + /** Read node properties , flags and update the + * node pivot and limits according to properties + * \param pNode FBX node + * \param pReadNodeAttributeProperties whether to + * \return if reading node properties is successful return \c true, otherwise return \c false. + */ + bool ReadNodeProperties ( FbxNode& pNode, bool pReadNodeAttributeProperties ); + + /** Read layered texture from file + * \param pTex Layered texture to fill + * \return if reading layered texture is successful return \c true, otherwise return \c false. + */ + bool ReadLayeredTexture ( FbxLayeredTexture& pTex ); + + /** Read FBX links for geometry + * \param pGeometry FBX geometry + * \return if reading geometry links is successful return \c true, otherwise return \c false. + */ + bool ReadGeometryLinks ( FbxGeometry& pGeometry ); + + /** Read FBX shapes for geometry + * \param pGeometry FBX geometry + * \return if reading geometry shapes is successful return \c true, otherwise return \c false. + */ + bool ReadGeometryShapes ( FbxGeometry& pGeometry ); + + /** Read the null node from file + * \param pNull Null node + * \return if reading null node is successful return \c true, otherwise return \c false. + */ + bool ReadNull ( FbxNull& pNull ); + + /** Read the marker node from file + * \param pMarker Marker node + * \return if reading marker node is successful return \c true, otherwise return \c false. + */ + bool ReadMarker ( FbxMarker& pMarker ); + + /** Read the camera node from file + * \param pCamera Camera node + * \return if reading camera node is successful return \c true, otherwise return \c false. + */ + bool ReadCamera ( FbxCamera& pCamera ); + + /** Read the stereo camera node from file + * \param pCameraStereo Stereo camera node + * \return if reading stereo camera node is successful return \c true, otherwise return \c false. + */ + bool ReadCameraStereo ( FbxCameraStereo& pCameraStereo ); + + /** Read the precomp file from binary file + * \param pCameraStereo Stereo camera node + * \return if reading precomp file is successful return \c true, otherwise return \c false. + */ + bool ReadCameraStereoPrecomp (FbxCameraStereo& pCameraStereo); + + /** Read the light node from file + * \param pLight light node + * \return if reading light node is successful return \c true, otherwise return \c false. + */ + bool ReadLight ( FbxLight& pLight ); + + /** Read the binding table node from file. + * Create all the binding table entries and fill with embedded data + * \param pTable binding table + * \return if reading binding table is successful return \c true, otherwise return \c false. + */ + bool ReadBindingTable ( FbxBindingTable& pTable ); + + /** Read the binding operator from file + * \param pOperator binding operator + * \return if reading binding operator is successful return \c true, otherwise return \c false. + */ + bool ReadBindingOperator ( FbxBindingOperator& pOperator ); + + /** Read vertices, polygon indices, edges, layer elements, geometry links and shapes to mesh object + * \param pMesh fbx mesh + * \return if reading mesh object is successful return \c true, otherwise return \c false. + */ + bool ReadMesh ( FbxMesh& pMesh ); + + /** Read mesh smoothness factor from mesh + * \param pMesh fbx mesh + * \return if reading mesh smoothness is successful return \c true, otherwise return \c false. + */ + bool ReadMeshSmoothness ( FbxMesh& pMesh ); + + /** Read vertices of mesh object + * \param pMesh fbx mesh + * \return if reading mesh vertices is successful return \c true, otherwise return \c false. + */ + bool ReadMeshVertices ( FbxMesh& pMesh ); + + /** Read polygon indices of mesh object + * \param pMesh fbx mesh + * \return if reading polygon indices is successful return \c true, otherwise return \c false. + */ + bool ReadMeshPolygonIndex ( FbxMesh& pMesh ); + + /** Read edges of mesh object + * \param pMesh fbx mesh + * \return if reading mesh edges is successful return \c true, otherwise return \c false. + */ + bool ReadMeshEdges ( FbxMesh& pMesh ); + + //** Read FBX subdiv, base mesh, finest mesh, current subdiv level... + //* \param pSubdiv fbx subdiv + //* \param pObjectName Object Name + //* \param pReferencedObject pointer of reference object + //* \return if reading subdiv object is successful return \c true, otherwise return \c false. + //*/ + //bool ReadSubdiv( FbxSubDiv& pSubdiv, FbxString& pObjectName, FbxObject* pReferencedObject); + + /** Read FBX subdiv, base mesh, finest mesh, current subdiv level... + * \param pSubdiv fbx subdiv + * \return if reading subdiv object is successful return \c true, otherwise return \c false. + */ + bool ReadSubdiv( FbxSubDiv& pSubdiv); + + /** Read properties and flags for fbx document + * \param pSubDocument fbx document + * \return if reading document information is successful return \c true, otherwise return \c false. + */ + bool ReadDocument ( FbxDocument& pSubDocument ); + + /** Read properties and flags for fbx collection + * \param pCollection fbx collection + * \return if reading fbx collection is successful return \c true, otherwise return \c false. + */ + bool ReadCollection ( FbxCollection& pCollection ); + + /** Read properties and flags for fbx selection set + * \param pSelectionSet fbx selection set + * \return if reading fbx selection set is successful return \c true, otherwise return \c false. + */ + bool ReadSelectionSet ( FbxSelectionSet& pSelectionSet); + + bool ReadSelectionNode (FbxSelectionNode& pSelectionNode); + + /** Read nurb data including surface types, nurb type, display type, steps, control points and UV. + * \param pNurbs Nurb object + * \return if reading nurb data is successful return \c true, otherwise return \c false. + */ + bool ReadNurb ( FbxNurbs& pNurbs ); + + /** Read nurb surface data including surface types, surface type, display type, steps, control points and UV vectors. + * \param pNurbs Nurb surface object + * \return if reading nurb surface data is successful return \c true, otherwise return \c false. + */ + bool ReadNurbsSurface ( FbxNurbsSurface& pNurbs ); + + /** Read patch data including patch type, dimension, display type, steps, UV cap and control points. + * \param pPatch Patch object + * \return if reading patch data is successful return \c true, otherwise return \c false. + */ + bool ReadPatch ( FbxPatch& pPatch ); + + /** Read patch type in string and return type in enum + * \param pPatch Patch object + * \return patch type in enum + */ + int ReadPatchType ( FbxPatch& pPatch ); + + + /** Read nurb curve data including types, dimension, rational-ness, control points and knots. + * \param pNurbsCurve Nurb curve + * \return if reading nurb curve data is successful return \c true, otherwise return \c false. + */ + bool ReadNurbsCurve ( FbxNurbsCurve& pNurbsCurve ); + + /** Read trim Nurb surface objects with properties + * \param pNurbs Trim nurb surface * \return if reading trim nurb surface is successful return \c true, otherwise return \c false. + */ + bool ReadTrimNurbsSurface ( FbxTrimNurbsSurface& pNurbs ); + + /** Read properties and flags of fbx boundary + * \param pBoundary Fbx boundary object + * \return if reading fbx boundary is successful return \c true, otherwise return \c false. + */ + bool ReadBoundary ( FbxBoundary& pBoundary ); + + /** Read shape object properties from file + * \param pShape Fbx Shape + * \param pGeometry Geometry contains the shape + * \return if reading shape object properties is successful return \c true, otherwise return \c false. + */ + bool ReadShape ( FbxShape& pShape, FbxGeometry& pGeometry); + + /** Read properties and flags of fbx implementation + * \param pImplementation Fbx implementation + * \return if reading fbx implementation is successful return \c true, otherwise return \c false. + */ + bool ReadImplementation ( FbxImplementation& pImplementation ); + + /** Read texture object data including name, UV transform, alpha and cropping. + * \param pTexture Fbx texture object + * \return if reading texture object is successful return \c true, otherwise return \c false. + */ + bool ReadFileTexture (FbxFileTexture& pTexture); + + /** Read surface material from file + * \param pName Material Name + * \param pMaterialType Material type + * \param pReferencedMaterial Reference material to clone from if it is not \c NULL + * \return A pointer of read surface material + */ + FbxSurfaceMaterial* ReadSurfaceMaterial(const char* pName, const char* pMaterialType, FbxSurfaceMaterial* pReferencedMaterial); + + /** Read video object from file + * \param pVideo Fbx video object + * \return if reading video object is successful return \c true, otherwise return \c false. + */ + bool ReadVideo (FbxVideo& pVideo); + + /** Read thumbnail object from file + * \param pThumbnail Fbx thumbnail + * \return if reading thumbnail is successful return \c true, otherwise return \c false. + */ + bool ReadThumbnail (FbxThumbnail& pThumbnail); + //@} + + + /** + * \name Layer elements + */ + //@{ + + /** Read all layer elements for geometry + * \param pGeometry geometry to fill + * \return if reading all layer elements is successful return \c true, otherwise return \c false. + */ + bool ReadLayerElements (FbxGeometry& pGeometry); + + /** Read material layer elements for geometry + * \param pGeometry geometry to fill + * \param pElementsMaterial material layer element array + * \return if reading material layer elements is successful return \c true, otherwise return \c false. + */ + bool ReadLayerElementsMaterial (FbxGeometry* pGeometry, FbxArray& pElementsMaterial); + + /** Read normal layer elements for geometry + * \param pGeometry geometry to fill + * \param pElementsNormal normal layer element array + * \return if reading normal layer elements is successful return \c true, otherwise return \c false. + */ + bool ReadLayerElementsNormal (FbxGeometry* pGeometry, FbxArray& pElementsNormal); + + /** Read Tangent layer elements for geometry + * \param pGeometry geometry to fill + * \param pElementsTangent Tangent layer element array + * \return if reading Tangent layer elements is successful return \c true, otherwise return \c false. + */ + bool ReadLayerElementsTangent (FbxGeometry* pGeometry, FbxArray& pElementsTangent); + + /** Read Binormal layer elements for geometry + * \param pGeometry geometry to fill + * \param pElementsBinormal Binormal layer element array + * \return if reading Binormal layer elements is successful return \c true, otherwise return \c false. + */ + bool ReadLayerElementsBinormal (FbxGeometry* pGeometry, FbxArray& pElementsBinormal); + + /** Read vertex color layer elements for geometry + * \param pGeometry geometry to fill + * \param pElementsVertexColor vertex color layer element array + * \return if reading vertex color layer elements is successful return \c true, otherwise return \c false. + */ + bool ReadLayerElementsVertexColor (FbxGeometry* pGeometry, FbxArray& pElementsVertexColor); + + /** Read texture layer elements for geometry + * \param pGeometry geometry to fill + * \param pElementsTexture texture layer element array + * \param pTextureType the type of elements to read + * \return if reading texture layer elements is successful return \c true, otherwise return \c false. + */ + bool ReadLayerElementsTexture (FbxGeometry* pGeometry, FbxArray& pElementsTexture, FbxLayerElement::EType pTextureType); + + /** Read UV layer elements for geometry + * \param pGeometry geometry to fill + * \param pElementsUV UV layer element array + * \param pTextureType the type of elements to read + * \return if reading UV layer elements is successful return \c true, otherwise return \c false. + */ + bool ReadLayerElementsChannelUV (FbxGeometry* pGeometry, FbxArray& pElementsUV, FbxLayerElement::EType pTextureType); + + /** Read polygon group layer elements for geometry + * \param pGeometry geometry to fill + * \param pElementsPolygonGroup polygon group layer element array + * \return if reading polygon group layer elements is successful return \c true, otherwise return \c false. + */ + bool ReadLayerElementsPolygonGroup (FbxGeometry* pGeometry, FbxArray& pElementsPolygonGroup); + + /** Read smoothing layer elements for geometry + * \param pGeometry geometry to fill + * \param pElementsSmoothing Smoothing group layer element array + * \return if reading smoothing layer elements is successful return \c true, otherwise return \c false. + */ + bool ReadLayerElementsSmoothing (FbxGeometry* pGeometry, FbxArray& pElementsSmoothing); + + /** Read user data layer elements for geometry + * \param pGeometry geometry to fill + * \param pElementsUserData User data layer element array + * \return if reading user data layer elements is successful return \c true, otherwise return \c false. + */ + bool ReadLayerElementsUserData (FbxGeometry* pGeometry, FbxArray& pElementsUserData); + + /** Read visibility layer elements for geometry + * \param pGeometry geometry to fill + * \param pElementsVisibility visibility layer element array + * \return if reading visibility layer elements is successful return \c true, otherwise return \c false. + */ + bool ReadLayerElementsVisibility (FbxGeometry* pGeometry, FbxArray& pElementsVisibility); + + /** Read edge crease layer elements for geometry + * \param pGeometry geometry to fill + * \param pElementsEdgeCrease edge crease layer element array + * \return if reading edge crease layer elements is successful return \c true, otherwise return \c false. + */ + bool ReadLayerElementEdgeCrease (FbxGeometry*pGeometry, FbxArray& pElementsEdgeCrease); + + /** Read vertex crease layer elements for geometry + * \param pGeometry geometry to fill + * \param pElementsVertexCrease vertex crease layer element array + * \return if reading vertex crease layer elements is successful return \c true, otherwise return \c false. + */ + bool ReadLayerElementVertexCrease (FbxGeometry*pGeometry, FbxArray& pElementsVertexCrease); + + /** Read hole layer elements for geometry + * \param pGeometry geometry to fill + * \param pElementsHole hole layer element array + * \return if reading hole layer elements is successful return \c true, otherwise return \c false. + */ + bool ReadLayerElementHole (FbxGeometry*pGeometry, FbxArray& pElementsHole); + //@} + + /** + * \name Geometry weighted maps + */ + //@{ + + /** Read geometry weight map from file + * \param pGeometryWeightedMap geometry weighted + * \return if reading geometry weight map is successful return \c true, otherwise return \c false. + */ + bool ReadGeometryWeightedMap(FbxGeometryWeightedMap& pGeometryWeightedMap); + //@} + + /** + * \name Deformers / Constraints + */ + //@{ + + /** Read link object from file + * \param pLink fbx link object + * \return if reading link object is successful return \c true, otherwise return \c false. + */ + bool ReadLink(FbxCluster& pLink); + + /** Read SDK skin from file + * \param pSkin SDK skin object + * \return if reading skin object is successful return \c true, otherwise return \c false. + */ + bool ReadSkin(FbxSkin& pSkin); + + /** Read properties and flags for vertex cache deformer from file + * \param pDeformer fbx vertex cache deformer + * \return if reading vertex cache deformer is successful return \c true, otherwise return \c false. + */ + bool ReadVertexCacheDeformer(FbxVertexCacheDeformer& pDeformer); + + /** Read cluster object data from file + * \param pCluster fbx cluster object + * \return if reading cluster object is successful return \c true, otherwise return \c false. + */ + bool ReadCluster(FbxCluster& pCluster); + + /** Read constraint object from file + * \param pPosition fbx constraint object + * \return if reading constraint object is successful return \c true, otherwise return \c false. + */ + bool ReadConstraint(FbxConstraint& pPosition); + //@} + + // Cache + + /** Read fbx cache file + * \param pCache fbx cache + * \return if reading cache data is successful return \c true, otherwise return \c false. + */ + bool ReadCache(FbxCache& pCache); + + /** + * \name Post-processing / utility functions + */ + //@{ + + /** Make sure the Camera's background textures are properly connected + * \param pScene fbx scene + * \remarks This function only applies when it detects older file versions in + * which the background texture is connected directly to the object instead of + * the corresponding property. + */ + bool ResolveCameraBackgrounds(FbxScene& pScene); + + /** Remove duplicate textures in the same scene + * \param pScene fbx scene + */ + void RemoveDuplicateTextures(FbxScene& pScene); + + /** Replace textures in the geometry + * \param pTextureDuplicate texture array + * \param pTextureReplacement texture array to replace + * \param pGeometry geometry owns these textures + * \param pTextureType layer element type + */ + void ReplaceTextures(FbxArray const& pTextureDuplicate, + FbxArray const& pTextureReplacement, + FbxGeometry* pGeometry, FbxLayerElement::EType pTextureType); + + /** Remove duplicated materials in the same scene + * \param pScene FBX scene + */ + void RemoveDuplicateMaterials(FbxScene& pScene); + + /** convert camera name for naming convention + * \param pCameraName original camera name + * \return new name for the camera + */ + FbxString ConvertCameraName(FbxString pCameraName); + + /** Search string in a string array + * \param pString the string to search + * \param pStringArray string array + * \return return the index of the array if the string is found, otherwise return \c -1 + */ + int FindString(FbxString pString, FbxArray& pStringArray); + + /** Read password from string + * \param pPassword password in string + * \return if the password is valid return \c true, otherwise return \c false + */ + bool ReadPassword(FbxString pPassword); + + /** Publish properties + * \param pObject fbx object + */ + void PublishProperties(FbxObject& pObject); + + /** Read properties for fbx object from file object + * \param pFbxObject fbx object + * \param pFbxFileObject fbx file object + * \param pReadNodeAttributeProperties whether to read properties for node attributes + */ + bool ReadProperties(FbxObject *pFbxObject, FbxIO *pFbxFileObject, bool pReadNodeAttributeProperties=true); + + + /** Read properties and flags for fbx object from file object + * \param pFbxObject fbx object + * \param pFbxFileObject fbx file object + * \param pReadNodeAttributeProperties whether to read properties for node attributes + * \return if reading properties and flags is successful return \c true, otherwise return \c false. + */ + bool ReadPropertiesAndFlags(FbxObject *pFbxObject, FbxIO *pFbxFileObject, bool pReadNodeAttributeProperties=true); + + /** Read flags for fbx object from file object + * \param pFbxObject object to set flags + * \param pFbxFileObject file to read + * \return if reading flags is successful return \c true, otherwise return \c false. + */ + bool ReadFlags(FbxObject *pFbxObject, FbxIO* pFbxFileObject); + + /** Rebuild trim regions indices from the boundary connections + * \param pScene Fbx scene + */ + void RebuildTrimRegions(FbxScene& pScene) const; + + /** Rebuild subdivision object from subdiv-mesh connections + * \param pScene Fbx scene + */ + void SetSubdivision(FbxScene& pScene) const; + + /** Convert shape deform property to DeformPercent property of FbxBlendShapeChannel + * \param pScene Fbx scene + */ + void ConvertShapeDeformProperty(FbxScene& pScene) const; + + /** Rebuild layered texture alphas from sub texture connections. + * \param pScene Fbx scene + */ + void RebuildLayeredTextureAlphas(FbxScene& pScene) const; + + //---------------- in progress ------------------------------- + void ReadOptionsInMainSection(); + void ReadTakeOptions(); + bool ReadOptionsInExtensionSection(int& pSectionIndex); + bool WriteOptionsInExtensionSection(bool pOverwriteLastExtensionSection=false); + //--------------- end in progress ---------------------------- + + /** Read global settings, axis system, system unit from main section of file + * + */ + void ReadGlobalSettingsInMainSection(); + + /** Read statistic data from definition section + * + */ + void ReadDefinitionSectionForStats(); + //@} + +private: + + FbxReaderFbx6& operator=(FbxReaderFbx6 const&) { return *this; } + + FbxIO* mFileObject; + FbxImporter& mImporter; + FbxCharPtrSet mNodeArrayName; + FbxObjectStringMap mObjectMap; + + bool mParseGlobalSettings; + FbxAxisSystem mAxisSystem; + FbxSystemUnit mSystemUnit; + FbxTime::EMode mFrameRate; + + bool mRetrieveStats; + FbxStatistics* mDefinitionsStatistics; + FbxArray mTakeInfo; + FbxDocumentInfo* mSceneInfo; + FbxAnimLayer* mAnimLayer; + FbxMultiMap mNickToKFCurveNodeTimeWarpsSet; + FbxMultiMap* mNickToAnimCurveTimeWarpsSet; + + Fbx6ClassTemplateMap mClassTemplateMap; + FbxProgress* mProgress; + bool mProgressPause; +}; + +#include + +#endif /* _FBXSDK_FILEIO_FBX_READER_FBX6_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxreaderfbx7.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxreaderfbx7.h new file mode 100644 index 00000000..d8f420bb --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxreaderfbx7.h @@ -0,0 +1,180 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxreaderfbx7.h +#ifndef _FBXSDK_FILEIO_FBX_READER_FBX7_H_ +#define _FBXSDK_FILEIO_FBX_READER_FBX7_H_ + +#include + +#include + +struct FbxReaderFbx7_Impl; + +/** \brief This class is the FBX v7 reader. +* The reader provide you the ability to read the global settings, objects and animation information from file. +* +*/ +class FbxReaderFbx7 : public FbxReader +{ +public: + /** \enum EImportMode File import mode. + * + */ + typedef enum + { + eASCII, /**< Plain text mode */ + eBINARY, /**< Binary mode */ + eENCRYPTED /**< Encrypted mode */ + } EImportMode; + + /** Constructor + * \param pManager the FbxManager Object + * \param pImporter the FbxImporter to import the SDK objects + * \param pID id for current reader + * \param pStatus the FbxStatus object to hold error codes + */ + FbxReaderFbx7(FbxManager& pManager, FbxImporter& pImporter, int pID, FbxStatus& pStatus); + + /** Destructor + * + */ + virtual ~FbxReaderFbx7(); + + /** Open file with certain EFileOpenSpecialFlags + * \param pFileName name of the File to open + * \param pFlags the EFileOpenSpecialFlags to open with + * \return if the file is open successfully return true, otherwise return false + */ + virtual bool FileOpen(char* pFileName, EFileOpenSpecialFlags pFlags); + + /** Open file with default flag + * \param pFileName name of the File to open + * \return if the file is open successfully return \c true, otherwise return \c false + */ + virtual bool FileOpen(char* pFileName); + + /** Open file with default flag + */ + virtual bool FileOpen(FbxFile* pFile); + + /** Open file from stream + */ + virtual bool FileOpen(FbxStream * pStream, void* pStreamData); + + /** Close the file stream + * \return if the file is closed successfully return \c true, otherwise return \c false + */ + virtual bool FileClose(); + + /** Check whether the file stream is open. + * \return if the file stream is open return \c true, otherwise return \c false. + */ + virtual bool IsFileOpen(); + + /** Get current Import mode + * + */ + EImportMode GetImportMode(); + + /** Get file version + * \param pMajor Major version + * \param pMinor Minor version + * \param pRevision Revision version + */ + virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision); + + /** Get axis system information from file + * \param pAxisSystem axis system in file + * \param pSystemUnits system unit in file + * \return if either pAxisSystem or pSystemUnits is \c NULL return \c false, otherwise return \c true. + */ + virtual bool GetAxisInfo(FbxAxisSystem* pAxisSystem, FbxSystemUnit* pSystemUnits); + + /** Get FBX file time mode read from GlobalSettings in FBX 6.n and FBX 7.n + * \param pTimeMode ref to a FbxTime::EMode enum + * \return \c true on success, \c false otherwise. + * \remarks This function must be called after FbxImporter::Initialize(). + * Can be used for statistics (via GlobalSettings) before loading the whole scene from the file. + */ + virtual bool GetFrameRate(FbxTime::EMode &pTimeMode); + + /** Get the statistics from file + * \param pStats statistics in file + * \return if fetching statistics is successfully return \c true, otherwise return \c false. + */ + virtual bool GetStatistics(FbxStatistics* pStats); + + /** Get the file stream options + * \param pParseFileAsNeeded Whether to parse file as read options + * \return true on success, otherwise return false. + */ + virtual bool GetReadOptions(bool pParseFileAsNeeded = true); + + /** Read file with stream options + * \param pDocument FbxDocument to store the file data + * \return if fetching statistics is successful return \c true, otherwise return \c false. + */ + virtual bool Read(FbxDocument *pDocument); + + /** Reads extension plug-ins name, version and parameters, so that we can remember if a plug-in was used during export. + * This is especially useful for extension plug-ins that modify the scene and also to warn users during import if an + * extension plug-in was used that could be missing. + * \param pParams The parameters of the extension plug-in. The properties of the objects are used + * as the parameters of the extension plug-in. + */ + virtual void PluginReadParameters(FbxObject& pParams); + + /** Get the file options + * \param pFbx file object to read options + * \param pParseFileAsNeeded Whether to parse file as read options + * \return true on success, otherwise return false. + */ + virtual bool GetReadOptions(FbxIO* pFbx, bool pParseFileAsNeeded = true); + + /** Read file with stream options + * \param pDocument FbxDocument to store the file data + * \param pFbx file object to read from + * \return if reading the file is successful return \c true, otherwise return \c false. + */ + virtual bool Read(FbxDocument *pDocument, FbxIO* pFbx); + + /** Returns the scene info from the file. + * \return The pointer to file scene info defined by this reader. + */ + virtual FbxDocumentInfo* GetSceneInfo(); + + /** Returns the pointer to the list of TakeInfo from the file. + * \return NULL + */ + virtual FbxArray* GetTakeInfo(); + + /** Pass a progress handler to the reader + * \param pProgress FbxProgress to store the progress information. + */ + virtual void SetProgressHandler(FbxProgress *pProgress); + + virtual void SetEmbeddingExtractionFolder(const char* pExtractFolder); + + virtual bool SupportsStreams() const { return true; } + +private: + // Declared, not defined. + FbxReaderFbx7(const FbxReaderFbx7&); + FbxReaderFbx7& operator=(FbxReaderFbx7 const&); + +private: + FbxReaderFbx7_Impl* mImpl; +}; + +#include + +#endif /* _FBXSDK_FILEIO_FBX_READER_FBX7_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxwriterfbx5.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxwriterfbx5.h new file mode 100644 index 00000000..d1d28491 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxwriterfbx5.h @@ -0,0 +1,211 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxwriterfbx5.h +#ifndef _FBXSDK_FILEIO_FBX_WRITER_FBX5_H_ +#define _FBXSDK_FILEIO_FBX_WRITER_FBX5_H_ + +#include + +#include + +//Writable versions for this file type. +//Sync the functions PreProcessScene and PostProcessScene with these elements of this list. + +class FbxWriterFbx5 : public FbxWriter +{ +public: + FbxWriterFbx5(FbxManager& pManager, FbxExporter& pExporter, int pID, FbxStatus& pStatus); + virtual ~FbxWriterFbx5(); + + virtual bool FileCreate(char* pFileName); + virtual bool FileCreate(FbxStream* pStream, void* pStreamData); + virtual bool FileClose(); + virtual bool IsFileOpen(); + + typedef enum + { + eASCII, + eBINARY, + eENCRYPTED + } EExportMode; + + void SetExportMode(EExportMode pMode); + + virtual void GetWriteOptions(); + virtual bool Write(FbxDocument* pDocument); + + virtual bool Write(FbxDocument* pDocument, FbxIO* pFbx); + virtual bool PreprocessScene(FbxScene& pScene); + virtual bool PostprocessScene(FbxScene& pScene); + + virtual bool SupportsStreams() const { return true; } + +private: + bool WriteAnimation(FbxScene& pScene); + bool WriteAnimation(FbxNode& pRootNode, FbxAnimLayer* pAnimLayer); + void WriteTakeNode(KFCurveNode* pCurveNode, bool pRescaleShininess); + bool WriteTakeNode(FbxObject& pObj, FbxAnimLayer* pAnimLayer, const char* pBlockName, bool pRescaleShininess = false); + + bool WriteThumbnail(FbxThumbnail* pThumbnail); + void WriteSceneInfo(FbxDocumentInfo*); + + bool WriteExtensionSection(FbxScene& pScene, int pMediaCount); + + bool WriteNode(FbxNode* pNode); + + bool WriteCameraSwitcher(FbxScene& pScene); + + void WriteGobo(FbxScene& pScene); + void WriteGoboSection(FbxScene& pScene); + void WriteGobo(FbxGobo& pGobo); + + void WriteCharacter(FbxScene& pScene); + void WriteCharacter(FbxScene& pScene, int pCharacterIndex); + void WriteCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId, FbxScene& pScene, bool pBackwardCompatible); + void WriteCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId, FbxScene& pScene, bool pBackwardCompatible); + void WriteFilterSet(FbxCharacter& pCharacter); + void WriteControlSet(FbxControlSet& pControlSet, FbxScene& pScene, bool pBackwardCompatible); + void WriteControlSetLinkGroup(FbxControlSet& pControlSet, int pCharacterGroupId, FbxScene& pScene, bool pBackwardCompatible); + void WriteControlSetLink(FbxControlSet& pControlSet, int pCharacterNodeId, FbxScene& pScene); + void WriteEffector(FbxControlSet& pControlSet, int pEffectorNodeId, FbxScene& pScene); + void WriteEffectorAux(FbxControlSet& pControlSet, int pEffectorNodeId, FbxScene& pScene); + + int WriteCharacterPose(FbxScene& pScene); + void WriteCharacterPose(FbxCharacterPose& pCharacterPose); + + void WritePose(FbxScene& pScene); + void WritePose(FbxPose& pPose); + + void WriteConstraint(FbxScene& pScene); + + void WriteGlobalLightSettings(FbxScene& pScene); + void WriteShadowPlane(FbxScene& pScene); + void WriteShadowPlaneSection(FbxScene& pScene); + void WriteAmbientColor(FbxScene& pScene); + void WriteFogOption(FbxScene& pScene); + + void WriteGlobalCameraAndTimeSettings(FbxScene& pScene); + + bool WriteMedia(FbxScene& pScene, bool pMediaEmbedded, int& pMediaCount); + bool WriteMediaClip(FbxString& pFileName, bool pEmbeddedMedia); + void WriteDefaultMedia(); + + bool WriteNode (FbxNode& pNode); + bool WriteNodeBegin (FbxNode& pNode); + bool WriteNodeParameters (FbxNode& pNode); + bool WriteNodeVersion (FbxNode& pNode); + bool WriteNodeShading (FbxNode& pNode); + bool WriteNodeAnimationSettings (FbxNode& pNode); + bool WriteNodeCullingType (FbxNode& pNode); + bool WriteNodeLimits (FbxNode& pNode); + bool WriteNodeProperties (FbxNode& pNode); + bool WriteNodeTarget (FbxNode& pNode); + bool WriteNodeAnimatedProperties(FbxNode& pNode); + bool WriteNodeAttribute (FbxNode& pNode); + bool WriteNodeDefaultAttributes (FbxNode& pNode); + bool WriteNodeChildrenList (FbxNode& pNode); + bool WriteNodeEnd (FbxNode& pNode); + + bool WriteNull ( FbxNull* pNull ); + + bool WriteMarker ( FbxNode& pNode ); + + bool WriteCamera ( FbxCamera& pCamera, bool pIsProducerCamera = false ); + + bool WriteCameraSwitcher ( FbxCameraSwitcher& pCameraSwitcher ); + + bool WriteLight ( FbxLight& pLight ); + + bool WriteGeometry ( FbxGeometry& pGeometry ); + bool WriteGeometryLayer ( FbxGeometry& pGeometry ); + bool WriteGeometryTextureLayer ( FbxGeometry& pGeometry, int pIndex ); + + bool WriteMesh ( FbxMesh& pMesh ); + bool WriteMeshVertices ( FbxMesh& pMesh ); + bool WriteMeshNormals ( FbxMesh& pMesh ); + bool WriteMeshMaterial ( FbxMesh& pMesh ); + bool WriteMeshTexture ( FbxMesh& pMesh ); + bool WriteMeshGeometryUVInfo ( FbxMesh& pMesh ); + bool WriteMeshPolyVertexIndex ( FbxMesh& pMesh ); + bool WriteMeshPolyGroupIndex ( FbxMesh& pMesh ); + bool WriteMeshVertexColors ( FbxMesh& pMesh ); + + bool WriteNurb ( FbxNurbs& pNurbs ); + + bool WritePatch ( FbxPatch& pPatch ); + bool WritePatchType ( FbxPatch& pPatch, int pType ); + + bool WriteSkeleton ( FbxSkeleton& pSkeleton ); + bool WriteSkeletonRoot ( FbxSkeleton& pSkeleton ); + bool WriteSkeletonLimb ( FbxSkeleton& pSkeleton ); + bool WriteSkeletonLimbNode ( FbxSkeleton& pSkeleton ); + bool WriteSkeletonEffector ( FbxSkeleton& pSkeleton ); + + bool WriteOpticalReference ( FbxOpticalReference& pOpticalReference ); + + bool WriteTexture(FbxFileTexture& pTexture); + bool WriteSurfaceMaterial(FbxSurfaceMaterial& pMaterial); + bool WriteLink(FbxCluster& pCluster); + bool WriteShape(FbxShape& pShape, FbxString pShapeName, FbxGeometry& pGeometry); + + bool WriteProperties(FbxObject* pObject); + + int FindString(FbxString pString, FbxArray& pStringArray); + void FindShapeValidIndices(FbxArray& pGeometryControlPoints, FbxArray& pShapeControlPoints, FbxArray& lValidIndices); + + void ConvertShapeNamesToV5Format(FbxNode& pNode); + void RevertShapeNamesToV6Format (FbxNode& pNode); + + void WritePassword(); + + void FindAnimatedChannels(FbxScene& pScene); + void ClearAnimatedChannels(); + + void WriteSceneGenericPersistenceSection(FbxScene& pScene); + + void ForceKFCurveNodesOnTRS(FbxNode* pNode); + void SetPivotStateRecursive(FbxNode* pNode); + +private: + FbxWriterFbx5& operator=(const FbxWriterFbx5&) { return *this; } + + FbxIO* mFileObject; + FbxExporter& mExporter; + + EExportMode mExportMode; + + FbxMultiMap mTextureAnimatedChannels; + FbxMultiMap mMaterialAnimatedChannels; + + struct TextureAnimatedChannels + { + bool mTranslation; + bool mRotation; + bool mScaling; + bool mAlpha; + }; + + struct SurfaceMaterialAnimatedChannels + { + bool mAmbient; + bool mDiffuse; + bool mSpecular; + bool mEmissive; + bool mOpacity; + bool mShininess; + bool mReflectivity; + }; +}; + +#include + +#endif /* _FBXSDK_FILEIO_FBX_WRITER_FBX5_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxwriterfbx6.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxwriterfbx6.h new file mode 100644 index 00000000..8a61fd93 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxwriterfbx6.h @@ -0,0 +1,310 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxwriterfbx6.h +#ifndef _FBXSDK_FILEIO_FBX_WRITER_FBX6_H_ +#define _FBXSDK_FILEIO_FBX_WRITER_FBX6_H_ + +#include + +#include + +class Fbx6TypeDefinition; +class Fbx6TypeWriteReferences; +class Fbx6TypeObjectHierarchy; + +typedef FbxArray TakeInfoArray; + +class FbxWriterFbx6 : public FbxWriter +{ +public: + FbxWriterFbx6(FbxManager& pManager, FbxExporter& pExporter, int pID, FbxStatus& pStatus); + virtual ~FbxWriterFbx6(); + + virtual bool FileCreate(char* pFileName); + virtual bool FileCreate(FbxStream* pStream, void* pStreamData); + virtual bool FileClose(); + virtual bool IsFileOpen(); + + typedef enum {eASCII, eBINARY, eENCRYPTED} EExportMode; + + void SetExportMode(EExportMode pMode); + + virtual void GetWriteOptions(); + virtual bool Write(FbxDocument* pDocument); + virtual bool PreprocessScene(FbxScene& pScene); + virtual bool PostprocessScene(FbxScene& pScene); + virtual void PluginWriteParameters(FbxObject& pParams); + virtual bool Write(FbxDocument* pDocument, FbxIO* pFbx); + virtual void SetProgressHandler(FbxProgress *pProgress); + + virtual bool SupportsStreams() const { return true; } + +private: + /*************************** new writer ***************************/ + void ConvertShapePropertyToOldStyle(FbxScene& pScene); + void ConvertShapePropertyToNewStyle(FbxScene& pScene); + void BuildObjectDefinition(FbxDocument* pDocument, Fbx6TypeDefinition& pDefinitions); + void SetObjectWriteSupport(const Fbx6TypeDefinition& pDefinitions); + bool WriteDescriptionSection(FbxDocument* pDocument); + bool WriteReferenceSection(FbxDocument* pDocument, Fbx6TypeWriteReferences& pReferences); + void WriteObjectDefinition(FbxDocument* pDocument, Fbx6TypeDefinition& pDefinitions); + void WriteObjectProperties(FbxDocument* pDocument, Fbx6TypeDefinition& pDefinitions); + + void FlattenDocument(FbxDocument* pDocument, Fbx6TypeObjectHierarchy& pDocHierarchy, bool pFirstCall=true); + void UnFlattenDocument(FbxDocument* pDocument, Fbx6TypeObjectHierarchy& pDocHierarchy); + bool WriteObjectHeaderAndReferenceIfAny(FbxObject& pObj, const char* pObjectType) const; + + FbxObject* GetObjectIndirection(FbxObject* pObject); + void WriteObjectConnections(FbxDocument* pDocument); + void WriteTakesAndAnimation(FbxDocument* pDocument); + + void WriteConstraints(FbxScene& pScene); + void WriteConstraint(FbxConstraint& pConstraint, FbxScene& pScene); + + void WriteGeometryWeightedMap(FbxGeometryWeightedMap& pGeometryWeightedMap); + void WriteNodeAttributes(const FbxDocument& pDocument); + void WriteAllGeometries(FbxScene& pScene); + + void WriteAllGeometryWeightedMaps(FbxScene& pScene); + + int WriteCharacterPose(FbxScene& pScene); + void WriteCharacterPose(FbxCharacterPose& pCharacterPose); + + void WriteCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId, FbxScene& pScene); + void WriteCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId, FbxScene& pScene); + void WriteCharacterLinkRotationSpace(FbxCharacterLink& pCharacterLink); + + void WriteControlSetPlug(FbxScene& pScene); + + /*************************** new writer ***************************/ + bool WriteNodes(FbxScene& pScene, bool pIncludeRoot); + bool WriteNodes(const FbxDocument& pDocument); + + /*************************** kept functions ***************************/ + bool WriteObjectProperties(FbxObject* pObject); + bool WriteObjectPropertiesAndFlags(FbxObject* pObject); + + bool WriteContainers(FbxScene& pScene); + + bool WriteNode(FbxNode& pNode); + bool WriteNodeBegin(FbxNode& pNode); + bool WriteNodeEnd(FbxNode& pNode); + bool WriteNodeParameters(FbxNode& pNode); + bool WriteNodeVersion(FbxNode& pNode); + bool WriteNodeAnimationSettings(FbxNode& pNode); + bool WriteNodeShading(FbxNode& pNode); + bool WriteNodeCullingType(FbxNode& pNode); + bool WriteNodeAttribute(FbxNodeAttribute* pNodeAttribute); + bool WriteNodeProperties(FbxNode& pNode); + + bool WriteNodeType(FbxNode& pNode); + bool WriteNull(FbxNull* pNull); + bool WriteMarker(FbxNode& pNode); + bool WriteSkeleton(FbxSkeleton& pSkeleton); + bool WriteSkeletonRoot(FbxSkeleton& pSkeleton); + bool WriteSkeletonLimb(FbxSkeleton& pSkeleton); + bool WriteSkeletonLimbNode(FbxSkeleton& pSkeleton); + bool WriteSkeletonEffector(FbxSkeleton& pSkeleton); + bool WriteGenericNodes(FbxScene& pScene); + + bool WriteGeometry(FbxGeometry& pGeometry); + bool WriteMesh(FbxMesh& pMesh); + bool WriteMeshSmoothness(FbxMesh& pMesh); + bool WriteMeshVertices(FbxMesh& pMesh); + bool WriteMeshPolyVertexIndex(FbxMesh& pMesh); + bool WriteMeshEdges(FbxMesh& pMesh); + bool WriteNurb(FbxNurbs& pNurbs); + bool WriteNurbsSurface(FbxNurbsSurface& pNurbs); + bool WriteNurbsCurve(FbxNurbsCurve& pNurbsCurve); + bool WriteTrimNurbsSurface(FbxTrimNurbsSurface& pNurbs); + bool WriteBoundary(FbxBoundary& pBoundary); + bool WriteSubdiv(FbxSubDiv& pSubdiv); + + bool WritePatch(FbxPatch& pPatch); + bool WritePatchType(FbxPatch& pPatch, int pType); + + bool WriteDeformers(FbxScene& pScene); + bool WriteSkin(FbxSkin& pSkin); + bool WriteVertexCacheDeformer(FbxVertexCacheDeformer& pDeformer); + bool WriteCluster(FbxCluster& pCluster); + bool WriteShape(FbxShape& pShape, FbxString pShapeName, FbxGeometry& pGeometry); + void FindShapeValidIndices(FbxArray& pGeometryControlPoints, FbxArray& pShapeControlPoints, FbxArray& lValidIndices); + + bool WriteFbxLayerElementNormals(FbxLayerContainer& pLayerContainer, FbxMultiMap&); + bool WriteFbxLayerElementBinormals(FbxLayerContainer& pLayerContainer, FbxMultiMap&); + bool WriteFbxLayerElementTangents(FbxLayerContainer& pLayerContainer, FbxMultiMap&); + bool WriteFbxLayerElementMaterials(FbxLayerContainer& pLayerContainer, FbxMultiMap&); + bool WriteFbxLayerElementTextures(FbxLayerContainer& pLayerContainer, FbxMultiMap&); + bool WriteFbxLayerElementTexturesChannel(FbxLayerContainer& pLayerContainer, FbxLayerElement::EType pTextureType, FbxMultiMap& pLayerIndexSet); + bool WriteFbxLayerElementUVsChannel(FbxLayerContainer& pLayerContainer, FbxLayerElement::EType pTextureType, FbxMultiMap& pLayerIndexSet); + + bool WriteFbxLayerElementPolygonGroups(FbxLayerContainer& pLayerContainer, FbxMultiMap&); + bool WriteFbxLayerElementVertexColors(FbxLayerContainer& pLayerContainer, FbxMultiMap&); + bool WriteFbxLayerElementUVs(FbxLayerContainer& pLayerContainer, FbxMultiMap&); + bool WriteFbxLayerElementSmoothing(FbxLayerContainer& pLayerContainer, FbxMultiMap&); + bool WriteFbxLayerElementUserData(FbxLayerContainer& pLayerContainer, FbxMultiMap&); + bool WriteFbxLayerElementVisibility(FbxLayerContainer& pLayerContainer, FbxMultiMap&); + bool WriteFbxLayerElementVertexCrease(FbxLayerContainer& pLayerContainer, FbxMultiMap&); + bool WriteFbxLayerElementEdgeCrease(FbxLayerContainer& pLayerContainer, FbxMultiMap&); + bool WriteFbxLayerElementHole(FbxLayerContainer& pLayerContainer, FbxMultiMap&); + + bool WriteLayers(FbxLayerContainer& pLayerContainer, FbxMultiMap&); + int MapLayeredTextureIndexToConnectionIndex(FbxNode* pNode, void* pLET, int pIndex); + + bool WriteMaterials(FbxDocument* pDocument); + bool WriteSurfaceMaterial(FbxSurfaceMaterial& pMaterial); + + bool WritePose(FbxScene& pScene); + + // Write Connections + bool WriteFieldConnection(FbxDocument* pDocument, FbxObject* pSrcObject, FbxDocument* pDstDocument); + bool WriteFieldConnection(FbxDocument* pDocument, FbxObject* pSrc,FbxObject* pDst); + bool WriteFieldConnection(FbxDocument* pDocument, FbxObject* pSrc,FbxProperty& pDst); + bool WriteFieldConnection(FbxDocument* pDocument, FbxProperty& pSrc,FbxObject* pDst); + bool WriteFieldConnection(FbxDocument* pDocument, FbxProperty& pSrc,FbxProperty& pDst); + + void WriteObjectConnections(FbxDocument* pDocument, FbxObject* pObject, bool pRecursive); + + bool WriteCamera(FbxCamera& pCamera); + bool WriteCameraStereo(FbxCameraStereo& pCameraStereo); + bool WriteLight(FbxLight& pLight); + bool WriteCameraSwitcher(FbxScene& pScene); + bool WriteCameraSwitcher(FbxCameraSwitcher& pCameraSwitcher); + + bool WriteTextures(FbxDocument* pDocument); + bool WriteTexture(FbxFileTexture& pTexture); + + bool WriteTimeWarps(FbxDocument* pDocument, FbxAnimStack* pAnimStack); + bool WriteThumbnails(FbxDocument* pDocument); + bool WriteThumbnail(FbxThumbnail& pThumbnail); + + bool WriteCaches(FbxDocument* pDocument); + bool WriteCache(FbxCache& pCache); + + bool WriteBindingTables(FbxDocument* pDocument); + bool WriteBindingTable(FbxBindingTable& pTable); + + bool WriteBindingOperators(FbxDocument* pDocument); + bool WriteBindingOperator(FbxBindingOperator& pOperator); + + bool WriteImplementations(FbxDocument* pDocument); + bool WriteImplementation(FbxImplementation& pImplementation); + + bool WriteCollections(FbxDocument* pDocument); + bool WriteCollection(FbxCollection& pImplementation); + + bool WriteDocuments(FbxDocument* pDocument); + bool WriteDocument(FbxDocument& pSubDocument); + + bool WriteLayeredTextures(FbxDocument* pDocument); + bool WriteLayeredTexture(FbxLayeredTexture& pTexture); + + void WriteGobo(FbxScene& pScene); + void WriteGoboSection(FbxScene& pScene); + void WriteGobo(FbxGobo& pGobo); + + bool WriteVideos(FbxDocument* pDocument); + bool WriteVideo(FbxVideo& pVideo, FbxString& pFileName, bool pEmbeddedMedia); + + bool WriteAnimation(FbxDocument* pDocument); + bool WriteAnimation(FbxDocument* pDocument, FbxAnimLayer* pAnimLayer); + + bool WriteFCurves(FbxObject& pObject, FbxAnimLayer* pAnimLayer, const char* pBlockName, bool pKeepBlockOpen=false, bool pRescaleShininess=false); + + void WritePose(FbxPose& pPose); + + bool WriteSelectionNode(FbxScene& pScene); + void WriteSelectionNode(FbxSelectionNode& pSelectionNode); + + bool WriteSelectionSet(FbxScene& pScene); + void WriteSelectionSet(FbxSelectionSet& pSelectionSet); + + bool WriteThumbnail(FbxThumbnail* pThumbnail); + + void WriteSceneInfo(FbxDocumentInfo*); + void WriteGlobalSettings(FbxGlobalSettings& pGlobalSettings); + + bool WriteExtensionSection(FbxScene& pScene, int pMediaCount); + + int FindString(FbxString pString, FbxArray& pStringArray); + + /****************** Function that write in the v5 section******************/ + void WriteGlobalLightSettings(FbxScene& pScene); + void WriteShadowPlane(FbxScene& pScene); + void WriteShadowPlaneSection(FbxScene& pScene); + void WriteAmbientColor(FbxScene& pScene); + void WriteFogOption(FbxScene& pScene); + + void WriteGlobalCameraSettings(FbxScene& pScene); + void WriteGlobalTimeSettings(FbxScene& pScene); + /****************** Function that write in the v5 section******************/ + + void WritePassword(); + + void WriteLayeredAnimation(FbxScene& pScene); + +private: + void WritePropertyTemplate(FbxClassId pClassId, FbxDocument* pDocument, bool& pVisitedNodeClass); + void WriteProperty(FbxProperty& pProperty, bool lSetNodeAttributeFlag); + void ConnectTimeWarp(FbxAnimCurveNode* pCurveNode, KFCurveNode* pFCurveNode); + + FbxWriterFbx6& operator=(const FbxWriterFbx6&); + + FbxScene* mScene; + FbxIO* mFileObject; + FbxExporter& mExporter; + Fbx6TypeObjectHierarchy* mDocumentHierarchy; + Fbx6TypeWriteReferences* mDocumentReferences; + + bool mWriteNonDefaultPropertiesOnly; + bool mWriteEnhancedProperties; + EExportMode mExportMode; + + FbxMultiMap mTextureAnimatedChannels; + FbxMultiMap mMaterialAnimatedChannels; + FbxMultiMap mTimeWarpsCurveNodes; + + struct TextureAnimatedChannels + { + bool mTranslation; + bool mRotation; + bool mScaling; + bool mAlpha; + }; + + struct SurfaceMaterialAnimatedChannels + { + bool mAmbient; + bool mDiffuse; + bool mSpecular; + bool mEmissive; + bool mOpacity; + bool mShininess; + bool mReflectivity; + }; + + FbxNode* mCurrentNode; + + struct ModifiedPropertyInfo { FbxObject* mObj; FbxString mPropName; }; + FbxArray mModifiedProperties; + void ReplaceUnsupportedProperties(FbxScene* pScene, bool pPreprocessPass, int pFormatV); + void StoreUnsupportedProperty(FbxObject* pObject, FbxProperty& pProperty); + + FbxProgress* mProgress; + bool mProgressPause; +}; + +bool IsNameUnique(FbxScene& pScene, FbxObject* pObject); + +#include + +#endif /* _FBXSDK_FILEIO_FBX_WRITER_FBX6_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxwriterfbx7.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxwriterfbx7.h new file mode 100644 index 00000000..3b7a7c1e --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbx/fbxwriterfbx7.h @@ -0,0 +1,68 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxwriterfbx7.h +#ifndef _FBXSDK_FILEIO_FBX_WRITER_FBX7_H_ +#define _FBXSDK_FILEIO_FBX_WRITER_FBX7_H_ + +#include + +#include + +struct FbxWriterFbx7_Impl; + +class FbxWriterFbx7 : public FbxWriter +{ +public: + typedef enum + { + eASCII, + eBINARY, + eENCRYPTED + } EExportMode; + + FbxWriterFbx7(FbxManager& pManager, FbxExporter& pExporter, int pID, FbxStatus& pStatus); + FbxWriterFbx7(FbxManager& pManager, FbxExporter& pExporter, EExportMode pMode, int pID, FbxStatus& pStatus); + virtual ~FbxWriterFbx7(); + + virtual bool FileCreate(char* pFileName); + virtual bool FileCreate(FbxStream* pStream, void* pStreamData); + virtual bool FileClose(); + virtual bool IsFileOpen(); + + virtual void GetWriteOptions(); + virtual bool Write(FbxDocument* pDocument); + virtual bool PreprocessScene(FbxScene &pScene); + virtual bool PostprocessScene(FbxScene &pScene); + virtual bool Write(FbxDocument* pDocument, FbxIO* pFbx); + virtual void PluginWriteParameters(FbxObject& pParams); + virtual void SetProgressHandler(FbxProgress *pProgress); + + void SetExportMode(EExportMode pMode); + + virtual bool SupportsStreams() const { return true; } + +private: + // Declared, not defined. + FbxWriterFbx7(const FbxWriterFbx7&); + FbxWriterFbx7& operator=(const FbxWriterFbx7&); + + struct ModifiedPropertyInfo{ FbxObject* mObj; FbxString mPropName; }; + FbxArray mModifiedProperties; + void StoreUnsupportedProperty(FbxObject* pObject, FbxProperty& pProperty); + +private: + FbxWriterFbx7_Impl* mImpl; +}; + +#include + +#endif /* _FBXSDK_FILEIO_FBX_WRITER_FBX7_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxbase64coder.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxbase64coder.h new file mode 100644 index 00000000..abbd14cc --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxbase64coder.h @@ -0,0 +1,64 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxbase64coder.h +#ifndef _FBXSDK_FILEIO_BASE64CODER_H_ +#define _FBXSDK_FILEIO_BASE64CODER_H_ + +#include + +#include + +#include + +/** This class decodes Base64 encoded data. */ +class FBXSDK_DLL FbxBase64Decoder +{ +public: + /** Decodes the input buffer. + * \param pInBuffer the input buffer containing Base64 data. + * \param pInSize the size of the input data in bytes (must be a multiple of 4) + * \param pOutBuffer the destination buffer. + * \param pOutSize the capacity of the output buffer in bytes. + * \return the number of bytes put in the output buffer, or -1 if the output buffer is too small, or contains invalid characters */ + int Decode(const void* pInBuffer, int pInSize, void* pOutBuffer, int pOutSize); + + /** Decodes the input buffer. + * \param pInBuffer the input buffer containing Base64 data; its length is computed using strlen(). + * \param pOutBuffer the destination buffer. + * \param pOutSize the capacity of the output buffer in bytes. + * \return the number of bytes put in the output buffer. */ + int Decode(const char* pInBuffer, void* pOutBuffer, int pOutSize); +}; + +/** This class encodes data in the Base64 format. */ +class FBXSDK_DLL FbxBase64Encoder +{ +public: + /** Encodes the input buffer. + * \param pInBuffer the input buffer containing data. + * \param pInSize the size of the input data in bytes. + * \param pOutBuffer the destination buffer, receives data encoded in Base64. + * \param pOutSize the capacity of the output buffer in bytes, which should be at least 33% larger than the input buffer size, or 4 bytes whichever is more. + * \return the number of bytes put in the output buffer, or -1 if we ran out of room. */ + int Encode(const void* pInBuffer, int pInSize, void* pOutBuffer, int pOutSize); + + /** Encodes the input buffer. + * \param pInBuffer the input buffer containing data. + * \param pInSize the size of the input data in bytes. + * \param pOutBuffer the destination buffer; data is set, not appended. + * \return the number of bytes put in the output buffer. */ + int Encode(const void* pInBuffer, int pInSize, FbxString& pOutBuffer); +}; + +#include + +#endif /* _FBXSDK_FILEIO_BASE64CODER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxexporter.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxexporter.h new file mode 100644 index 00000000..f77fa7de --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxexporter.h @@ -0,0 +1,304 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxexporter.h +#ifndef _FBXSDK_FILEIO_EXPORTER_H_ +#define _FBXSDK_FILEIO_EXPORTER_H_ + +#include + +#include +#include +#include +#include +#include +#include + +#include + +class FbxIO; +class FbxIOFileHeaderInfo; +class FbxThread; +class FbxWriter; + +struct FbxExportThreadArg; + +/** Class to export SDK objects into an FBX file. + * Normally this class is used as is. But for very special needs + * a user can override Initialize() for special purpose. + * + * An exporter will select the appropriate writer to a particular file. + * Ex: When an exporter must export an FBX 7 file, + * the exporter will ask for all registered writers if an FBX 7 file writer is available, + * then if a writer is found, the exporter will create + * the specialized FBX 7 writer and write the file. + * This way, an exporter can "write" many different type of files like FBX 5/6/7, 3DS, Obj, Dxf, Collada, etc. + * \see FbxWriter + * + * Typical workflow for using the FbxExporter class: + * -# create a SDKManager + * -# create an IOSettings object + * -# create an empty scene + * -# create an exporter + * -# initialize it with a file name + * -# set numerous options to control how the exporter will behave.\n + * ex: set IOSettings values to export Materials or Textures. + * -# call FbxExporter::Export() with the entity to export. + * + * \code + * // ex: + * // create a SdkManager + * FbxManager* lSdkManager = FbxManager::Create(); + * + * // create an IOSettings object + * FbxIOSettings* ios = FbxIOSettings::Create(lSdkManager, IOSROOT); + * + * // set some IOSettings options + * ios->SetBoolProp(EXP_FBX_MATERIAL, true); + * ios->SetBoolProp(EXP_FBX_TEXTURE, true); + * + * // create an empty scene + * FbxScene* lScene = FbxScene::Create(lSdkManager, ""); + * + * // create an exporter. + * FbxExporter* lExporter = FbxExporter::Create(lSdkManager, ""); + * + * // initialize the exporter by providing a filename and the IOSettings to use + * lExporter->Initialize("C:\\myfile.fbx", -1, ios); + * + * // export the scene. + * lExporter->Export(lScene); + * + * // destroy the exporter + * lExporter->Destroy(); + * \endcode + * + * \remarks According to the file suffix, a specialized writer will be created internally.\n + * Ex: for .fbx files a FBX Writer, for .3ds files, a 3ds writer, etc.\n + * Supported files formats: FBX 5/6/7 Binary & ASCII, Collada, DXF, OBJ, 3DS + * \nosubgrouping + */ +class FBXSDK_DLL FbxExporter : public FbxIOBase +{ + FBXSDK_OBJECT_DECLARE(FbxExporter, FbxIOBase); + +public: + /** + * \name Export Functions + */ + //@{ + /** Initialize object. + * \param pFileName Name of file to access. + * \param pFileFormat file format identifier User does not need to specify it by default. + if not specified, plugin will detect the file format according to file suffix automatically. + * \param pIOSettings client IOSettings, if not specified, a default IOSettings will be created + * \return \c true on success, \c false otherwise. + * \remarks To identify the error that occurred, inspect the status object accessed + * using the GetStatus() function. + */ + virtual bool Initialize(const char* pFileName, int pFileFormat = -1, FbxIOSettings* pIOSettings = NULL); + + /** Initialize object. + * \param pStream stream to access. + * \param pStreamData user-defined stream data. + * \param pFileFormat file format identifier User does not need to specify it by default. + if not specified, plugin will request the file format from the stream. + * \param pIOSettings client IOSettings, if not specified, a default IOSettings will be created + * \return \c true on success, \c false otherwise. + * \remarks To identify the error that occurred, inspect the status object accessed + * using the GetStatus() function. + */ + virtual bool Initialize(FbxStream* pStream, void* pStreamData=NULL, int pFileFormat = -1, FbxIOSettings * pIOSettings = NULL); + + /** Setup file export options settings. + * \return \c true on success, \c false otherwise. + */ + bool GetExportOptions(); + + /** Access to a IOSettings object. + * \return The pointer to IOSettings or \c NULL \c if the object has not been allocated. + */ + FbxIOSettings* GetIOSettings(); + + /** Set the IOSettings pointer + * \param pIOSettings Pointer on a FbxIOSettings object. + */ + void SetIOSettings(FbxIOSettings* pIOSettings); + + + /** Export the document to the currently created file. + * \param pDocument Document to export. + * \param pNonBlocking If true, the export process will be executed in a new thread, allowing it to be non-blocking. + To determine if the export finished, refer to the function IsExporting(). + * \return \c true on success, \c false otherwise. + * \remarks To identify the error that occurred, inspect the status object accessed + * using the GetStatus() function. + */ + bool Export(FbxDocument* pDocument, bool pNonBlocking=false); + + #if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) + /** Check if the exporter is currently exporting. + * \param pExportResult This parameter, after the export finished, will contain the result of the export success or failure. + * \return Return true if the exporter is currently exporting. + * \remarks This function will always return false if Export() was called with pNonBlocking set to false. + * This function should be used only in the context of pNonBlocking set to true. + * It is very important to periodically check if the export finished using this function, + * since it will also free up the thread's allocations when its done. + */ + bool IsExporting(bool& pExportResult); + #endif /* !FBXSDK_ENV_WINSTORE && ! FBXSDK_ENV_EMSCRIPTEN */ + + /** Get the progress status in non-blocking mode. + * \param pStatus Optional current status string. + * \return Percentage of the finished workload. + */ + float GetProgress(FbxString* pStatus=NULL); + + /** Register a callback function for progress reporting in single thread mode. + * \param pCallback Pointer of the callback function. + * \param pArgs Pointer to the arguments passed to the callback function. + */ + void SetProgressCallback(FbxProgressCallback pCallback, void* pArgs=NULL); + //@} + + /** + * \name File Format + */ + //@{ + /** Get the format of the exported file. + * \return File format identifier. + */ + int GetFileFormat(); + + /** Return \c true if the file format is a recognized FBX format. + */ + bool IsFBX(); + + /** Get the list of writable versions for the current file format. + * \return \c NULL or a null terminated array of strings. + * \remarks the strings returned match the writers registered for the current format. + * The array items can be retrieved with the following code: + * \code + * char const* const* lWV = lExporter->GetCurrentWritableVersions(); + * if (lWV) + * { + * int i = 0; + * while (lWV[i] != NULL) + * { + * printf("fmt = %s\n", lWV[i]); + * i++; + * } + * } + * \endcode + * + */ + char const* const* GetCurrentWritableVersions(); + + /** Set file version for a given file format. + * \param pVersion String description of the file format. + * \param pRenamingMode Renaming mode. + * \return \c true if mode is set correctly + */ + bool SetFileExportVersion(FbxString pVersion, FbxSceneRenamer::ERenamingMode pRenamingMode=FbxSceneRenamer::eNone); + + /** Set the resampling rate (only used when exporting to FBX 5.3 and lower) + * \param pResamplingRate resampling rate + */ + inline void SetResamplingRate(double pResamplingRate){ mResamplingRate = pResamplingRate; } + + /** Set the default rendering resolution. + * \param pCamName name of the camera. + * \param pResolutionMode resolution mode. + * \param pW width. + * \param pH height. + * \remark These values are ignored when exporting to FBX 7.x and higher. With FBX version 6.x and lower, + * the HeaderInfo is still accessible for legacy reasons and any other custom writers. For FBX filles, + * these values are used by the FBX QuickTime plug-in (obsolete now) to help it get the window size + * without loading the whole file. The information contained in the FbxIOFileHeaderInfo is a duplicate + * of AspectRatioMode, AspectWidth and AspectHeight properties defined in the FbxCamera class. + * Retrieveing the FileHeaderInfo starting from FBX 7.x will always return the uninitialized structure. + */ + void SetDefaultRenderResolution(FbxString pCamName, FbxString pResolutionMode, double pW, double pH); + + /** Get the complete file header information. + * \return valid pointer to the complete header information + */ + FbxIOFileHeaderInfo* GetFileHeaderInfo(); + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + bool GetExportOptions(FbxIO* pFbxObject); + bool Export(FbxDocument* pDocument, FbxIO* pFbxObject); + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void Destruct(bool pRecursive); + virtual void SetOrCreateIOSettings(FbxIOSettings* pIOSettings, bool pAllowNULL); + + void Reset(); + bool FileCreate(); + void FileClose(); + +private: + bool ExportProcess(FbxDocument* pDocument); + + int mFileFormat; + FbxWriter* mWriter; +#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) + FbxThread* mExportThread; + FbxExportThreadArg* mExportThreadArg; + bool mExportThreadResult; + bool mIsThreadExporting; +#endif /* !FBXSDK_ENV_WINSTORE && !FBXSDK_ENV_EMSCRIPTEN */ + FbxProgress mProgress; + FbxStream* mStream; + void* mStreamData; + FbxString mStrFileVersion; + double mResamplingRate; + FbxSceneRenamer::ERenamingMode mRenamingMode; + FbxIOFileHeaderInfo* mHeaderInfo; + FbxIOSettings* mIOSettings; + bool mClientIOSettings; + + friend void ExportThread(void*); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +//! Event that is emitted to plugins before a file is exported to the FBX format. +class FBXSDK_DLL FbxEventPreExport : public FbxEvent +{ + FBXSDK_EVENT_DECLARE(FbxEventPreExport); + +public: + FbxEventPreExport(FbxDocument* pDocument) : mDocument(pDocument) {}; + + //! The document to be exported + FbxDocument* mDocument; +}; + +//! Event that is emitted to plugins after a file is exported to the FBX format. +class FBXSDK_DLL FbxEventPostExport : public FbxEvent +{ + FBXSDK_EVENT_DECLARE(FbxEventPostExport); + +public: + FbxEventPostExport(FbxDocument* pDocument) : mDocument(pDocument) {}; + + //! The document to be exported + FbxDocument* mDocument; +}; + +#include + +#endif /* _FBXSDK_FILEIO_EXPORTER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxexternaldocreflistener.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxexternaldocreflistener.h new file mode 100644 index 00000000..5075ca58 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxexternaldocreflistener.h @@ -0,0 +1,133 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxexternaldocreflistener.h +#ifndef _FBXSDK_FILEIO_EXTERNAL_DOCREF_LISTENER_H_ +#define _FBXSDK_FILEIO_EXTERNAL_DOCREF_LISTENER_H_ + +#include + +#include + +#include + +/** Contains data about an external document. + * The document is a FbxDocument object. + */ +struct FBXSDK_DLL FbxExternalDocumentInfo +{ + FbxString mDocumentName; //!< Bare name of external document in document hierarchy. + FbxString mClassName; //!< Class name of the document (FbxDocument, FbxLibrary...). + FbxString mParentFullName; //!< Full name of the parent document in document hierarchy. + FbxString mFilePathUrl; //!< File path of the external document. +}; + +/** Event that is emitted on loading document when a referenced document + * is encountered while loading external references. + */ +class FBXSDK_DLL FbxEventReferencedDocument : public FbxEvent, public FbxExternalDocumentInfo +{ + FBXSDK_EVENT_DECLARE(FbxEventReferencedDocument); +public: + FbxEventReferencedDocument() {} +}; + + +class FbxExternalDocRefListenerData; + +/** Typical handler for the referenced document events. +* +* Register it like so: +* FbxExternalDocRefListener lRefDocListener( sdkManager, fileName ); +* FbxEventHandler * lHandler = lRefDocListener.Bind(scene, +* &FbxExternalDocRefListener::HandleEvent); +* +* And later unregister it like so: +* lRefDocListener.Unbind(lHandler); +*/ +class FBXSDK_DLL FbxExternalDocRefListener : public FbxListener +{ +public: + /** Constructor. + * \param pManager + * \param pDocFilePath + * \remarks Keep a reference to the SDK and the path of the document + * to be able to resolve relative paths. + */ + FbxExternalDocRefListener( FbxManager & pManager, const FbxString & pDocFilePath ); + virtual ~FbxExternalDocRefListener(); + + /** Set the document file path used to resolve documents. + * \param pDocFilePath + * \remarks Allows re-using the same instance for multiple document loadings. + */ + virtual void SetDocumentFilePath( const FbxString & pDocFilePath ); + + /** Verify that all documents that were previously loaded in a previous + * load session are still valid. + * \return \c true if all documents are still valid, \c false otherwise. + */ + virtual bool AreAllExternalDocumentsStillValid() const; + + // + /** Verify that all documents that were referred to didn't change. + * \return \c true if all documents didn't change, \c false otherwise. + * \remarks This function should be called if at posteriori check is desired. + */ + virtual bool WereAllExternalDocumentsValid() const; + + /** Unload all documents that were loaded through this event handler. + */ + virtual void UnloadExternalDocuments(); + + // External document reference event handler. + // + // Operation: calls FindDocument() to find the specified external document + // and if not found calls LoadDocument() either directly, + // if it has not parent, or via ConnectToParentLibrary(). + // If its parent cannot be found, it's added to the dangling + // document list (and it is not loaded until it's parent is found). + // After, it tries to resolve dangling documents by calling + // TryConnectingDanglingLibraries(). + /** External document reference event handler. + * \param pEvent + * \remarks Operation: calls FindDocument() to find the specified external document + * and if not found calls LoadDocument() either directly, + * if it has not parent, or via ConnectToParentLibrary(). + * If its parent cannot be found, it's added to the dangling + * document list (and it is not loaded until it's parent is found). + * After, it tries to resolve dangling documents by calling + * TryConnectingDanglingLibraries(). + */ + virtual void HandleEvent(const FbxEventReferencedDocument * pEvent); + +protected: + /** + * Turn a relative path to an absolute path using the file path of the original document being loaded. + * If the path is already is absolute, it is returned as is. + */ + virtual FbxString MakeFilenameAbsolute(const FbxString & pFilename) const; + //! Locate a document by its document path. + virtual FbxDocument * FindDocument( const FbxString & pPathToDoc ); + //! Load a library, potentially under another library. + virtual FbxDocument * LoadDocument(FbxObject * pParent, const FbxString & pClassName, const FbxString & pFilename); + //! Try to connect a library to its parent given its document path. + virtual bool ConnectToParentLibrary(const FbxExternalDocumentInfo &); + //! Try to reconnect dangling libraries that didn't find their parent. + virtual void TryConnectingDanglingLibraries(); + +private: + FbxExternalDocRefListenerData * mData; +}; + +#include + +#endif /* _FBXSDK_FILEIO_EXTERNAL_DOCREF_LISTENER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxfiletokens.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxfiletokens.h new file mode 100644 index 00000000..dc106ad6 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxfiletokens.h @@ -0,0 +1,1083 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxfiletokens.h +#ifndef _FBXSDK_FILEIO_FILE_TOKENS_H_ +#define _FBXSDK_FILEIO_FILE_TOKENS_H_ + +#include + +#include + +// +// Summary +// +#define FIELD_SUMMARY "Summary" +#define FIELD_SUMMARY_VERSION "Version" +#define FIELD_SUMMARY_TEMPLATE "Template" +#define FIELD_SUMMARY_PASSWORD_PROTECTION "PasswordProtection" +#define FIELD_SUMMARY_CONTENT_COUNT "ContentCount" +#define FIELD_SUMMARY_CONTENT_COUNT_MODEL "Model" +#define FIELD_SUMMARY_CONTENT_COUNT_DEVICE "Device" +#define FIELD_SUMMARY_CONTENT_COUNT_CHARACTER "Character" +#define FIELD_SUMMARY_CONTENT_COUNT_ACTOR "Actor" +#define FIELD_SUMMARY_CONTENT_COUNT_CONSTRAINT "Constraint" +#define FIELD_SUMMARY_CONTENT_COUNT_MEDIA "Media" +#define FIELD_SUMMARY_CONTENT_COUNT_COMPONENT "Component" +#define FIELD_SUMMARY_TAKES "Takes" +#define FIELD_SUMMARY_TAKES_VERSION "Version" +#define FIELD_SUMMARY_TAKES_CURRENT "Current" +#define FIELD_SUMMARY_TAKES_TAKE "Take" +#define FIELD_SUMMARY_TAKES_TAKE_COMMENT "Comments" +#define FIELD_SUMMARY_TAKES_TAKE_LOCAL_TIME "LocalTime" +#define FIELD_SUMMARY_TAKES_TAKE_REFERENCE_TIME "ReferenceTime" + + +// +// FbxObject references, document ownership +// +#define FIELD_KFBXOBJECT_REFERENCE_TO "ReferenceTo" +#define FIELD_KFBXOBJECT_DOCUMENT "Doc" + +// (sic) +#define FIELD_KFBXOBECT_REFERENCE_TO FIELD_KFBXOBJECT_REFERENCE_TO + +// +// FbxContainer +// +#define FIELD_KFBXCONTAINER_VERSION "Version" +#define FIELD_KFBXCONTAINER_CONTAINER "Container" + + +// +// Thumbnail +// +#define FIELD_THUMBNAIL "Thumbnail" +#define FIELD_THUMBNAIL_VERSION "Version" +#define FIELD_THUMBNAIL_SIZE "Size" +#define FIELD_THUMBNAIL_FORMAT "Format" +#define FIELD_THUMBNAIL_ENCODING "ImageEncoding" +#define FIELD_THUMBNAIL_IMAGE "ImageData" + + +// +// FbxGlobalLightSettings +// +#define FIELD_KFBXGLOBALLIGHTSETTINGS_VERSION "Version" +#define FIELD_KFBXGLOBALLIGHTSETTINGS_SHADOWPLANES "ShadowPlanes" +#define FIELD_KFBXGLOBALLIGHTSETTINGS_COUNT "Count" +#define FIELD_KFBXGLOBALLIGHTSETTINGS_PLANE "Plane" +#define FIELD_KFBXGLOBALLIGHTSETTINGS_USESHADOW "UseShadow" +#define FIELD_KFBXGLOBALLIGHTSETTINGS_SHADOWINTENSITY "ShadowIntensity" +#define FIELD_KFBXGLOBALLIGHTSETTINGS_AMBIENTRENDER "AmbientRenderSettings" +#define FIELD_KFBXGLOBALLIGHTSETTINGS_AMBIENTLIGHTCOLOR "AmbientLightColor" +#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGOPTIONS "FogOptions" +#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGENABLE "FlogEnable" +#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGMODE "FogMode" +#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGDENSITY "FogDensity" +#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGSTART "FogStart" +#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGEND "FogEnd" +#define FIELD_KFBXGLOBALLIGHTSETTINGS_FOGCOLOR "FogColor" + + +// +// FbxGlobalCameraSettings +// +#define FIELD_KFBXGLOBALCAMERASETTINGS_RENDERER_SETTINGS "RendererSetting" +#define FIELD_KFBXGLOBALCAMERASETTINGS_DEFAULT_CAMERA "DefaultCamera" +#define FIELD_KFBXGLOBALCAMERASETTINGS_DEFAULT_VIEWING_MODE "DefaultViewingMode" +#define FIELD_KFBXGLOBALCAMERASETTINGS_SETTINGS "Settings" +#define FIELD_KFBXGLOBALCAMERASETTINGS_CAMERA "Camera" + + +// +// FbxGlobalTimeSettings +// +#define FIELD_KFBXGLOBALTIMESETTINGS_TIME_MODE "TimeMode" +#define FIELD_KFBXGLOBALTIMESETTINGS_FRAMERATE "FrameRate" +#define FIELD_KFBXGLOBALTIMESETTINGS_TIME_PROTOCOL "TimeFormat" +#define FIELD_KFBXGLOBALTIMESETTINGS_SNAP_ON_FRAMES "SnapOnFrames" +#define FIELD_KFBXGLOBALTIMESETTINGS_REFERENCE_TIME_INDEX "ReferenceTimeIndex" +#define FIELD_KFBXGLOBALTIMESETTINGS_REFERENCE_TIME_MARKER "TimeMarker" +#define FIELD_KFBXGLOBALTIMESETTINGS_REFERENCE_TIME "Time" +#define FIELD_KFBXGLOBALTIMESETTINGS_REFERENCE_LOOP "Loop" +#define FIELD_KFBXGLOBALTIMESETTINGS_TIMELINE_START_TIME "TimeLineStartTime" +#define FIELD_KFBXGLOBALTIMESETTINGS_TIMELINE_STOP_TIME "TimeLineStopTime" + + +// +// Media +// +#define FIELD_MEDIA_MEDIA "Media" +#define FIELD_MEDIA_VIDEO "Video" +#define FIELD_MEDIA_TYPE "Type" +#define TOKEN_MEDIA_CLIP "Clip" +#define FIELD_MEDIA_VERSION "Version" +#define FIELD_MEDIA_ORIGINAL_FORMAT "OriginalFormat" +#define FIELD_MEDIA_ORIGINAL_FILENAME "OriginalFilename" +#define FIELD_MEDIA_FILENAME "Filename" +#define FIELD_MEDIA_RELATIVE_FILENAME "RelativeFilename" +#define FIELD_MEDIA_CONTENT "Content" + + +// +// Properties +// +#define FIELD_PROPERTIES "Properties" +#define FIELD_PROPERTIES_VERSION "Version" +#define FIELD_USERPROPERTIES "UserProperty" +#define FIELD_USERPROPERTIES_NAME "Name" +#define FIELD_USERPROPERTIES_TYPE "Type" +#define FIELD_USERPROPERTIES_LABEL "Label" +#define FIELD_USERPROPERTIES_MIN "Min" +#define FIELD_USERPROPERTIES_MAX "Max" +#define FIELD_USERPROPERTIES_VALUE "Value" + + +// +// FbxNode +// +#define FIELD_KFBXNODE_VERSION "Version" +#define FIELD_KFBXNODE_ANIMATION_MODE "AnimationMode" +#define FIELD_KFBXNODE_TYPE "Type" +#define FIELD_KFBXNODE_TYPE_FLAGS "TypeFlags" +#define FIELD_KFBXNODE_MODEL "Model" +#define FIELD_KFBXNODE_HIDDEN "Hidden" +#define FIELD_KFBXNODE_SHADING "Shading" +#define FIELD_KFBXNODE_TRANSFORM "Transform" +#define FIELD_KFBXNODE_DEFAULT "Default" +#define FIELD_KFBXNODE_TRANSLATION "T" +#define FIELD_KFBXNODE_ROTATION "R" +#define FIELD_KFBXNODE_SCALING "S" +#define FIELD_KFBXNODE_CHILDREN "Children" + +#define FIELD_KFBXNODE_CULLING_TYPE "Culling" +#define TOKEN_KFBXNODE_CULLING_OFF "CullingOff" +#define TOKEN_KFBXNODE_CULLING_ON_CCW "CullingOnCCW" +#define TOKEN_KFBXNODE_CULLING_ON_CW "CullingOnCW" + +#define FIELD_KFBXNODE_LIMITS "Limits" +#define FIELD_KFBXNODE_LIMITS_T_AUTO "TAuto" +#define FIELD_KFBXNODE_LIMITS_R_AUTO "RAuto" +#define FIELD_KFBXNODE_LIMITS_S_AUTO "SAuto" +#define FIELD_KFBXNODE_LIMITS_T_ENABLE "TEnable" +#define FIELD_KFBXNODE_LIMITS_R_ENABLE "REnable" +#define FIELD_KFBXNODE_LIMITS_S_ENABLE "SEnable" +#define FIELD_KFBXNODE_LIMITS_T_X_DEFAULT "TXDefault" +#define FIELD_KFBXNODE_LIMITS_T_Y_DEFAULT "TYDefault" +#define FIELD_KFBXNODE_LIMITS_T_Z_DEFAULT "TZDefault" +#define FIELD_KFBXNODE_LIMITS_R_X_DEFAULT "RXDefault" +#define FIELD_KFBXNODE_LIMITS_R_Y_DEFAULT "RYDefault" +#define FIELD_KFBXNODE_LIMITS_R_Z_DEFAULT "RZDefault" +#define FIELD_KFBXNODE_LIMITS_S_X_DEFAULT "SXDefault" +#define FIELD_KFBXNODE_LIMITS_S_Y_DEFAULT "SYDefault" +#define FIELD_KFBXNODE_LIMITS_S_Z_DEFAULT "SZDefault" +#define FIELD_KFBXNODE_LIMITS_T_X_MIN "TXMin" +#define FIELD_KFBXNODE_LIMITS_T_Y_MIN "TYMin" +#define FIELD_KFBXNODE_LIMITS_T_Z_MIN "TZMin" +#define FIELD_KFBXNODE_LIMITS_R_X_MIN "RXMin" +#define FIELD_KFBXNODE_LIMITS_R_Y_MIN "RYMin" +#define FIELD_KFBXNODE_LIMITS_R_Z_MIN "RZMin" +#define FIELD_KFBXNODE_LIMITS_S_X_MIN "SXMin" +#define FIELD_KFBXNODE_LIMITS_S_Y_MIN "SYMin" +#define FIELD_KFBXNODE_LIMITS_S_Z_MIN "SZMin" +#define FIELD_KFBXNODE_LIMITS_T_X_MAX "TXMax" +#define FIELD_KFBXNODE_LIMITS_T_Y_MAX "TYMax" +#define FIELD_KFBXNODE_LIMITS_T_Z_MAX "TZMax" +#define FIELD_KFBXNODE_LIMITS_R_X_MAX "RXMax" +#define FIELD_KFBXNODE_LIMITS_R_Y_MAX "RYMax" +#define FIELD_KFBXNODE_LIMITS_R_Z_MAX "RZMax" +#define FIELD_KFBXNODE_LIMITS_S_X_MAX "SXMax" +#define FIELD_KFBXNODE_LIMITS_S_Y_MAX "SYMax" +#define FIELD_KFBXNODE_LIMITS_S_Z_MAX "SZMax" +#define FIELD_KFBXNODE_LIMITS_R_TYPE "RType" +#define FIELD_KFBXNODE_LIMITS_R_CLAMP_TYPE "RClampType" +#define FIELD_KFBXNODE_LIMITS_R_X_AXIS "RXAxis" +#define FIELD_KFBXNODE_LIMITS_R_Y_AXIS "RYAxis" +#define FIELD_KFBXNODE_LIMITS_R_Z_AXIS "RZAxis" +#define FIELD_KFBXNODE_LIMITS_AXIS_LENGTH "AxisLen" + +#define FIELD_KFBXNODE_TARGET "LookAtModel" +#define FIELD_KFBXNODE_UP_VECTOR_MODEL "UpVectorModel" +#define FIELD_KFBXNODE_POST_TARGET_ROTATION "PostTargetRotation" +#define FIELD_KFBXNODE_TARGET_UP_VECTOR "UpTargetRotation" + +#define FIELD_KFBXNODE_PIVOTS "Pivots" +#define FIELD_KFBXNODE_PACKAGE "Package" +#define FIELD_KFBXNODE_FILE "File" +#define FIELD_KFBXNODE_TRANSLATION_OFFSET "TranslationOffset" +#define FIELD_KFBXNODE_ROTATION_PIVOT "RotationPivot" +#define FIELD_KFBXNODE_PRE_ROTATION "PreRotation" +#define FIELD_KFBXNODE_POST_ROTATION "PostRotation" +#define FIELD_KFBXNODE_SCALING_PIVOT "ScalingPivot" +#define FIELD_KFBXNODE_PIVOT_ENABLED "PivotEnabled" + +// +// FbxGenericNode +// +#define FIELD_KFBXGENERICNODE_VERSION "Version" +#define FIELD_KFBXGENERICNODE_GENERICNODE "GenericNode" + +// +// FbxGeometry +// +#define FIELD_KFBXGEOMETRY_MATERIAL "Material" +#define FIELD_KFBXGEOMETRY_TEXTURE "Texture" +#define FIELD_KFBXGEOMETRY_LINK "Link" +#define FIELD_KFBXGEOMETRY_SHAPE "Shape" + +// +// FbxMarker +// +#define FIELD_KFBXMARKER_LOOK "Look" +#define FIELD_KFBXMARKER_SIZE "Size" +#define FIELD_KFBXMARKER_COLOR "Color" +#define FIELD_KFBXMARKER_SHOW_LABEL "ShowLabel" +#define FIELD_KFBXMARKER_IK_PIVOT "IKPivot" +#define FIELD_KFBXMARKER_IK_REACH_TRANSLATION "IKReachTranslation" +#define FIELD_KFBXMARKER_IK_REACH_ROTATION "IKReachRotation" +#define FIELD_KFBXMARKER_IK_PULL "IKPull" +#define FIELD_KFBXMARKER_IK_PULL_HIPS "IKPullHips" + +// +// FbxCamera +// +#define FIELD_KFBXGEOMETRYCAMERA_VERSION "Version" +#define FIELD_KFBXGEOMETRYCAMERA_GEOMETRY_VERSION "GeometryVersion" +#define FIELD_KFBXGEOMETRYCAMERA_NAME "Name" + +// Camera Position and Orientation +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_POSITION "Position" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_UP_VECTOR "Up" +#define FIELD_KFBXGEOMETRYCAMERA_DEFAULT_CAMERA_INTEREST_POSITION "LookAt" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_ROLL "Roll" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_TURNTABLE "TurnTable" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_PROJECTION_TYPE "Type" + +// Viewing Area Controls +#define FIELD_KFBXGEOMETRYCAMERA_FORMAT_NAME "FormatName" +#define TOKEN_KFBXGEOMETRYCAMERA_NTSC "NTSC" +#define TOKEN_KFBXGEOMETRYCAMERA_D1_NTSC "D1 NTSC" +#define TOKEN_KFBXGEOMETRYCAMERA_PAL "PAL" +#define TOKEN_KFBXGEOMETRYCAMERA_D1_PAL "D1 PAL" +#define TOKEN_KFBXGEOMETRYCAMERA_HD "HD" +#define TOKEN_KFBXGEOMETRYCAMERA_640x480 "640x480" +#define TOKEN_KFBXGEOMETRYCAMERA_320x200 "320x200" +#define TOKEN_KFBXGEOMETRYCAMERA_320x240 "320x240" +#define TOKEN_KFBXGEOMETRYCAMERA_128x128 "128x128" +#define TOKEN_KFBXGEOMETRYCAMERA_FULL_SCREEN "Full Screen" +#define TOKEN_KFBXGEOMETRYCAMERA_CUSTOM_FORMAT "Custom" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_ASPECT_TYPE "AspectType" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_ASPECT_WIDTH "AspectW" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_ASPECT_HEIGHT "AspectH" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_PIXEL_RATIO "PixelRatio" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_NEAR_PLANE "NearPlane" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_FAR_PLANE "FarPlane" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LOCK "CameraLock" + +// Aperture and Film Controls +#define FIELD_KFBXGEOMETRYCAMERA_APERTURE_FORMAT_NAME "ApertureFormat" +#define TOKEN_KFBXGEOMETRYCAMERA_16MM_THEATRICAL "16mm Theatrical" +#define TOKEN_KFBXGEOMETRYCAMERA_SUPER_16MM "Super 16mm" +#define TOKEN_KFBXGEOMETRYCAMERA_35MM_ACADEMY "35mm Academy" +#define TOKEN_KFBXGEOMETRYCAMERA_35MM_TV_PROJECTION "35mm TV Projection" +#define TOKEN_KFBXGEOMETRYCAMERA_35MM_FULL_APERTURE "35mm Full Aperture" +#define TOKEN_KFBXGEOMETRYCAMERA_35MM_185_PROJECTION "35mm 1.85 Projection" +#define TOKEN_KFBXGEOMETRYCAMERA_35MM_ANAMORPHIC "35mm Anamorphic" +#define TOKEN_KFBXGEOMETRYCAMERA_70MM_PROJECTION "70mm Projection" +#define TOKEN_KFBXGEOMETRYCAMERA_VISTA_VISION "VistaVision" +#define TOKEN_KFBXGEOMETRYCAMERA_DYNAVISION "Dynavision" +#define TOKEN_KFBXGEOMETRYCAMERA_IMAX "Imax" +#define TOKEN_KFBXGEOMETRYCAMERA_CUSTOM_APERTURE_FORMAT "Custom" +#define FIELD_KFBXGEOMETRYCAMERA_APERTURE_MODE "ApertureMode" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_APERTURE_DIMENSION "CameraAperture" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_SQUEEZERATIO "SqueezeRatio" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_FOCAL_LENGTH "FocalLength" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_APERTURE "Aperture" + +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_APERTURE_X "FieldOfViewXProperty" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_APERTURE_Y "FieldOfViewYProperty" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_OPTICAL_CENTER_X "OpticalCenterXProperty" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_OPTICAL_CENTER_Y "OpticalCenterYProperty" + +// Background Properties +#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_MEDIA_NAME "Media" +#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_TEXTURE "BackgroundTexture" +#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_VIDEO_CLIP_TEXTURE "VideoClipTexture" +#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_DISPLAY_MODE "ViewFrustumPlane" +#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_DRAWING_MODE "BackgroundMode" +#define FIELD_KFBXGEOMETRYCAMERA_FOREGROUND_MATTE_THRESHOLD_ENABLE "ForegroundTransparent" +#define FIELD_KFBXGEOMETRYCAMERA_FOREGROUND_MATTE_TRESHOLD "BackgroundTreshold" +#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_PLACEMENT_OPTIONS "DisplayMode" +#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_DISTANCE "ViewFrustumPlaneDistance" +#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_DISTANCE_MODE "ViewFrustumPlaneDistanceMode" + +// Camera View Options +#define FIELD_KFBXGEOMETRYCAMERA_VIEW_CAMERA_INTEREST "ViewLookAt" +#define FIELD_KFBXGEOMETRYCAMERA_VIEW_NEAR_FAR_PLANES "ViewFrustum" +#define FIELD_KFBXGEOMETRYCAMERA_SHOW_GRID "ShowGrid" +#define FIELD_KFBXGEOMETRYCAMERA_SHOW_AXIS "ShowAzimut" +#define FIELD_KFBXGEOMETRYCAMERA_SHOW_NAME "ShowName" +#define FIELD_KFBXGEOMETRYCAMERA_SHOW_INFO_ON_MOVING "ShowInfoOnMoving" +#define FIELD_KFBXGEOMETRYCAMERA_SHOW_TIME_CODE "ShowTimeCode" +#define FIELD_KFBXGEOMETRYCAMERA_DISPLAY_SAFE_AREA "DisplaySafeArea" +#define FIELD_KFBXGEOMETRYCAMERA_SAFE_AREA_STYLE "SafeAreaStyle" +#define FIELD_KFBXGEOMETRYCAMERA_DISPLAY_SAFE_AREA_ON_RENDER "DisplaySafeAreaOnRender" +#define FIELD_KFBXGEOMETRYCAMERA_SHOW_AUDIO "ShowAudio" + +#define FIELD_KFBXGEOMETRYCAMERA_BACKGROUND_COLOR "BackGroundColor" +#define FIELD_KFBXGEOMETRYCAMERA_AUDIO_COLOR "AudioColor" +#define FIELD_KFBXGEOMETRYCAMERA_USE_FRAME_COLOR "UseFrameColor" +#define FIELD_KFBXGEOMETRYCAMERA_FRAME_COLOR "FrameColor" +#define FIELD_KFBXGEOMETRYCAMERA_ORTHO_ZOOM "CameraOrthoZoom" + +// Rendering Options +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LENS "CameraAndLens" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LENS_DEPTH_OF_FIELD "DepthOfField" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LENS_ANTIALIASING "Antialiasing" +#define FIELD_KFBXGEOMETRYCAMERA_CAMERA_LENS_OVERSAMPLING "OverSampling" +#define FIELD_KFBXGEOMETRYCAMERA_RENDER_OPTIONS_USAGE_TIME "UseOverSamplingTime" + +// +// FbxCameraStereo +// +#define FIELD_KFBXGEOMETRYCAMERA_STEREO_VERSION "Version" +#define FIELD_KFBXGEOMETRYCAMERA_STEREO_GEOMETRY_VERSION "GeometryVersion" +#define FIELD_KFBXGEOMETRYCAMERA_STEREO_NAME "Name" +#define FIELD_KFBXGEOMETRYCAMERA_STEREO_STEREO "Stereo" +#define FIELD_KFBXGEOMETRYCAMERA_STEREO_INTERAXIAL_SEP "InteraxialSeparation" +#define FIELD_KFBXGEOMETRYCAMERA_STEREO_ZERO_PARALLAX "ZeroParallax" +#define FIELD_KFBXGEOMETRYCAMERA_STEREO_TOE_IN_ADJUST "ToeInAdjust" +#define FIELD_KFBXGEOMETRYCAMERA_STEREO_FILM_OFFSET_RIGHT_CAM "FilmOffsetRightCam" +#define FIELD_KFBXGEOMETRYCAMERA_STEREO_FILM_OFFSET_LEFT_CAM "FilmOffsetLeftCam" +#define FIELD_KFBXGEOMETRYCAMERA_STEREO_PRECOMP_FILE_NAME "PrecompFileName" +#define FIELD_KFBXGEOMETRYCAMERA_STEREO_RELATIVE_PRECOMP_FILE_NAME "RelativePrecompFileName" +#define FIELD_KFBXGEOMETRYCAMERA_STEREO_PRECOMP_FILE_CONTENT "PrecompFileContent" + +// +// FbxCameraSwitcher +// +#define FIELD_KFBXGEOMETRYCAMERASWITCHER_SWITCHER "Switcher" +#define FIELD_KFBXGEOMETRYCAMERASWITCHER_NAME "Name" +#define FIELD_KFBXGEOMETRYCAMERASWITCHER_CAMERA_ID "CameraId" +#define FIELD_KFBXGEOMETRYCAMERASWITCHER_CAMERA_NAME "CameraName" +#define FIELD_KFBXGEOMETRYCAMERASWITCHER_CAMERA_INDEX_NAME "CameraIndexName" + + +// +// FbxLight +// +#define FIELD_KFBXGEOMETRYLIGHT_GEOMETRY_VERSION "GeometryVersion" +#define FIELD_KFBXGEOMETRYLIGHT_LIGHT_TYPE "LightType" +#define FIELD_KFBXGEOMETRYLIGHT_LIGHT_TYPE_VERSION "LightTypeVersion" +#define FIELD_KFBXGEOMETRYLIGHT_CAST_LIGHT "CastLight" + + +// +// FbxMesh +// +#define FIELD_KFBXGEOMETRYMESH_UV_VERSION "Version" +#define FIELD_KFBXGEOMETRYMESH_GEOMETRY_VERSION "GeometryVersion" +#define FIELD_KFBXGEOMETRYMESH_VERTICES "Vertices" +#define FIELD_KFBXGEOMETRYMESH_EDGES "Edges" +#define FIELD_KFBXGEOMETRYMESH_INTERNAL_EDGES "InternalEdges" +#define FIELD_KFBXGEOMETRYMESH_NORMALS "Normals" +#define FIELD_KFBXGEOMETRYMESH_NORMALS_WCOMPONENT "NormalsW" +#define FIELD_KFBXGEOMETRYMESH_BINORMALS "Binormals" +#define FIELD_KFBXGEOMETRYMESH_BINORMALS_WCOMPONENT "BinormalsW" +#define FIELD_KFBXGEOMETRYMESH_TANGENTS "Tangents" +#define FIELD_KFBXGEOMETRYMESH_TANGENTS_WCOMPONENT "TangentsW" +#define FIELD_KFBXGEOMETRYMESH_NORMALS_INDEX "NormalsIndex" +#define FIELD_KFBXGEOMETRYMESH_BINORMALS_INDEX "BinormalsIndex" +#define FIELD_KFBXGEOMETRYMESH_TANGENTS_INDEX "TangentsIndex" +#define FIELD_KFBXGEOMETRYMESH_MATERIAL_ASSIGNATION "MaterialAssignation" +#define FIELD_KFBXGEOMETRYMESH_TEXTURE_ASSIGNATION "TextureMode" +#define FIELD_KFBXGEOMETRYMESH_POLYGON_INDEX "PolygonVertexIndex" +#define FIELD_KFBXGEOMETRYMESH_POLYGON_GROUP "PolygonGroup" +#define FIELD_KFBXGEOMETRYMESH_MATERIALS_ID "Materials" +#define FIELD_KFBXGEOMETRYMESH_TEXTURE_ID "TextureId" +#define FIELD_KFBXGEOMETRYMESH_TEXTURE_TYPE "TextureType" +#define FIELD_KFBXGEOMETRYMESH_UV_TYPE "UVType" +#define FIELD_KFBXGEOMETRYMESH_MAPPING_INFO_TYPE "MappingInformationType" +#define FIELD_KFBXGEOMETRYMESH_TEXTURE_UV "TextureUV" +#define FIELD_KFBXGEOMETRYMESH_TEXTURE_POLYGON_UV "TexturePUV" +#define FIELD_KFBXGEOMETRYMESH_GEOMETRY_UV_INFO "GeometryUVInfo" +#define FIELD_KFBXGEOMETRYMESH_TEXTURE_VERTEX_INDEX "TextureVertexIndex" +#define FIELD_KFBXGEOMETRYMESH_TEXTURE_UV_INDEX "TextureUVVerticeIndex" +#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_INFO "VertexColorInfo" +#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_VERSION "Version" +#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_ASSIGNATION "MappingInformationType" +#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_VALUES "Colors" +#define FIELD_KFBXGEOMETRYMESH_VERTEX_COLOR_INDEX "ColorIndex" +#define FIELD_KFBXGEOMETRYMESH_SMOOTHING "Smoothing" +#define FIELD_KFBXGEOMETRYMESH_VERTEX_CREASE "VertexCrease" +#define FIELD_KFBXGEOMETRYMESH_EDGE_CREASE "EdgeCrease" +#define FIELD_KFBXGEOMETRYMESH_HOLE "Hole" +#define FIELD_KFBXGEOMETRYMESH_USER_DATA "UserData" +#define FIELD_KFBXGEOMETRYMESH_USER_DATA_INDEX "UserDataIndex" +#define FIELD_KFBXGEOMETRYMESH_USER_DATA_TYPE "UserDataType" +#define FIELD_KFBXGEOMETRYMESH_USER_DATA_DIRECT_INDICES "UserDataDirectIndices"// remove me +#define FIELD_KFBXGEOMETRYMESH_USER_DATA_DIRECT_COUNT "UserDataDirectCount" //remove me +#define FIELD_KFBXGEOMETRYMESH_USER_DATA_ID "UserDataId" +#define FIELD_KFBXGEOMETRYMESH_USER_DATA_ARRAY "UserDataArray" +#define FIELD_KFBXGEOMETRYMESH_USER_DATA_NAME "UserDataName" +#define FIELD_KFBXGEOMETRYMESH_VISIBILITY "Visibility" +#define FIELD_KFBXGEOMETRYMESH_SMOOTHNESS "Smoothness" +#define FIELD_KFBXGEOMETRYMESH_PREVIEW_DIVSION_LEVELS "PreviewDivisionLevels" +#define FIELD_KFBXGEOMETRYMESH_RENDER_DIVSION_LEVELS "RenderDivisionLevels" +#define FIELD_KFBXGEOMETRYMESH_DISPLAY_SUBDIVISIONS "DisplaySubdivisions" +#define FIELD_KFBXGEOMETRYMESH_PRESERVE_BORDERS "PreserveBorders" +#define FIELD_KFBXGEOMETRYMESH_PRESERVE_HARD_EDGES "PreserveHardEdges" +#define FIELD_KFBXGEOMETRYMESH_PROPAGATE_EDGE_HARDNESS "PropagateEdgeHardness" +#define FIELD_KFBXGEOMETRYMESH_BOUNDARY_RULE "BoundaryRule" + +#define FIELD_KFBXGEOMETRYMESH_U_EXTENDED_COUNT "UExtendedCount" +#define FIELD_KFBXGEOMETRYMESH_U_CLOSED "UClosed" +#define FIELD_KFBXGEOMETRYMESH_U_TOPCAP "UTopCap" +#define FIELD_KFBXGEOMETRYMESH_U_STEP "UStep" +#define FIELD_KFBXGEOMETRYMESH_U_COUNT "UCount" + +#define FIELD_KFBXGEOMETRYMESH_V_EXTENDED_COUNT "VExtendedCount" +#define FIELD_KFBXGEOMETRYMESH_V_CLOSED "VClosed" +#define FIELD_KFBXGEOMETRYMESH_V_TOPCAP "VTopCap" +#define FIELD_KFBXGEOMETRYMESH_V_STEP "VStep" +#define FIELD_KFBXGEOMETRYMESH_V_COUNT "VCount" + +#define TOKEN_KFBXGEOMETRYMESH_NO_MAPPING_INFORMATION "NoMappingInformation" +#define TOKEN_KFBXGEOMETRYMESH_BY_VERTICE "ByVertice" +#define TOKEN_KFBXGEOMETRYMESH_BY_POLYGON "ByPolygon" +#define TOKEN_KFBXGEOMETRYMESH_BY_POLYGON_VERTEX "ByPolygonVertex" +#define TOKEN_KFBXGEOMETRYMESH_BY_FACE "ByFace" +#define TOKEN_KFBXGEOMETRYMESH_BY_EDGE "ByEdge" +#define TOKEN_KFBXGEOMETRYMESH_ALL_SAME "AllSame" +#define TOKEN_KFBXGEOMETRYMESH_BY_MODEL "ByModel" + +// +// FbxSubDiv +// +#define FIELD_KFBXGEOMETRYSUBDIV_GEOMETRY "SubdivGeometry" +#define FIELD_KFBXGEOMETRYSUBDIV_GEOMETRY_VERSION "GeometryVersion" +#define FIELD_KFBXGEOMETRYSUBDIV_LEVEL_COUNT "LevelCount" +#define FIELD_KFBXGEOMETRYSUBDIV_CURRENT_LEVEL "CurrentLevel" +#define FIELD_KFBXGEOMETRYSUBDIV_DISPLAY_SMOOTHNESS "Smoothness" + +// +// Reference +// +#define TOKEN_REFERENCE_DIRECT "Direct" +#define TOKEN_REFERENCE_INDEX "Index" +#define TOKEN_REFERENCE_INDEX_TO_DIRECT "IndexToDirect" + +// +// FbxNurbs +// +#define FIELD_KFBXGEOMETRYNURB_NURB_VERSION "NurbVersion" +#define FIELD_KFBXGEOMETRYNURB_NURB_ORDER "NurbOrder" +#define FIELD_KFBXGEOMETRYNURB_DIMENSION "Dimensions" +#define FIELD_KFBXGEOMETRYNURB_STEP "Step" +#define FIELD_KFBXGEOMETRYNURB_FORM "Form" +#define FIELD_KFBXGEOMETRYNURB_UCAPPED "UCapped" +#define FIELD_KFBXGEOMETRYNURB_VCAPPED "VCapped" +#define FIELD_KFBXGEOMETRYNURB_POINTS "Points" +#define FIELD_KFBXGEOMETRYNURB_MULTIPLICITY_U "MultiplicityU" +#define FIELD_KFBXGEOMETRYNURB_MULTIPLICITY_V "MultiplicityV" +#define FIELD_KFBXGEOMETRYNURB_KNOTVECTOR_U "KnotVectorU" +#define FIELD_KFBXGEOMETRYNURB_KNOTVECTOR_V "KnotVectorV" +#define FIELD_KFBXGEOMETRYNURB_MATERIALS "Materials" +#define FIELD_KFBXGEOMETRYNURB_SURFACE_DISPLAY "SurfaceDisplay" + +// +// FbxNurbsSurface +// +#define FIELD_KFBXGEOMETRYNURBS_SURFACE_NURB_VERSION "NurbsSurfaceVersion" +#define FIELD_KFBXGEOMETRYNURBS_SURFACE_NURB_ORDER "NurbsSurfaceOrder" +#define FIELD_KFBXGEOMETRYNURBS_SURFACE_DIMENSION "Dimensions" +#define FIELD_KFBXGEOMETRYNURBS_SURFACE_STEP "Step" +#define FIELD_KFBXGEOMETRYNURBS_SURFACE_FORM "Form" +#define FIELD_KFBXGEOMETRYNURBS_SURFACE_UCAPPED "UCapped" +#define FIELD_KFBXGEOMETRYNURBS_SURFACE_VCAPPED "VCapped" +#define FIELD_KFBXGEOMETRYNURBS_SURFACE_POINTS "Points" +//#define FIELD_KFBXGEOMETRYNURBS_SURFACE_MULTIPLICITY_U "MultiplicityU" +//#define FIELD_KFBXGEOMETRYNURBS_SURFACE_MULTIPLICITY_V "MultiplicityV" +#define FIELD_KFBXGEOMETRYNURBS_SURFACE_KNOTVECTOR_U "KnotVectorU" +#define FIELD_KFBXGEOMETRYNURBS_SURFACE_KNOTVECTOR_V "KnotVectorV" +#define FIELD_KFBXGEOMETRYNURBS_SURFACE_MATERIALS "Materials" +#define FIELD_KFBXGEOMETRYNURBS_SURFACE_SURFACE_DISPLAY "SurfaceDisplay" +#define FIELD_KFBXGEOMETRYNURBS_SURFACE_FLIP_NORMALS "FlipNormals" + +// +// FbxTrimNurbsSurface +// +#define FIELD_KFBXGEOMETRYTRIM_NURBS_SURFACE_VERSION "TrimmedNurbVersion" +#define FIELD_KFBXGEOMETRYTRIM_NURBS_SURFACE_FLIP_NORMALS "FlipNormals" +//#define FIELD_KFBXGEOMETRYTRIM_NURB_SURFACE "NurbSurface" +//#define FIELD_KFBXGEOMETRYTRIM_NURB_BOUNDARY "TrimBoundary" +//#define FIELD_KFBXGEOMETRYTRIM_NURB_EDGE "BoundaryEdge" + +// +// FbxBoundary +// +#define FIELD_KFBXGEOMETRYBOUNDARY_VERSION "BoundaryVersion" + +// +// FbxLine +// +#define FIELD_KFBXGEOMETRYLINE_VERSION "LineVersion" +#define FIELD_KFBXGEOMETRYLINE_POINTS "Points" +#define FIELD_KFBXGEOMETRYLINE_POINTS_INDEX "PointsIndex" + +// +// FbxSubDiv +// +#define FIELD_KFBXGEOMETRYSUBDIVISION_VERSION "SubdivisionVersion" + +// +// FbxNurbsCurve +// +#define FIELD_KFBXGEOMETRYNURBS_CURVE_VERSION "NurbsCurveVersion" +#define FIELD_KFBXGEOMETRYNURBS_CURVE_ORDER "Order" +#define FIELD_KFBXGEOMETRYNURBS_CURVE_DIMENSION "Dimension" +#define FIELD_KFBXGEOMETRYNURBS_CURVE_KNOTVECTOR "KnotVector" +#define FIELD_KFBXGEOMETRYNURBS_CURVE_FORM "Form" +#define FIELD_KFBXGEOMETRYNURBS_CURVE_POINTS "Points" +#define FIELD_KFBXGEOMETRYNURBS_CURVE_RATIONAL "Rational" + +// +// FbxPatch +// +#define FIELD_KFBXGEOMETRYPATCH_PATCH_VERSION "PatchVersion" +#define FIELD_KFBXGEOMETRYPATCH_PATCH_TYPE "PatchType" +#define FIELD_KFBXGEOMETRYPATCH_DIMENSIONS "Dimensions" +#define FIELD_KFBXGEOMETRYPATCH_STEP "Step" +#define FIELD_KFBXGEOMETRYPATCH_CLOSED "Closed" +#define FIELD_KFBXGEOMETRYPATCH_UCAPPED "UCapped" +#define FIELD_KFBXGEOMETRYPATCH_VCAPPED "VCapped" +#define FIELD_KFBXGEOMETRYPATCH_POINTS "Points" +#define FIELD_KFBXGEOMETRYPATCH_SURFACE_DISPLAY "SurfaceDisplay" +#define FIELD_KFBXGEOMETRYPATCH_MATERIALS "Materials" + + +// +// FbxGeometryWeightedMap +// + +#define FIELD_KFBXGEOMETRY_WEIGHTED_MAP_VERSION "Version" +#define FIELD_KFBXGEOMETRY_WEIGHTED_MAP_SRC_COUNT "SourceCount" +#define FIELD_KFBXGEOMETRY_WEIGHTED_MAP_DST_COUNT "DestinationCount" +#define FIELD_KFBXGEOMETRY_WEIGHTED_MAP_INDEX_MAPPING "IndexMapping" + +// +// FbxSkeleton +// +#define FIELD_KFBXGEOMETRYSKELETON_LIMB_LENGTH "LimbLength" +#define FIELD_KFBXGEOMETRYSKELETON_LIMB_NODE_SIZE "Size" +#define FIELD_KFBXGEOMETRYSKELETON_LIMB_NODE_COLOR "Color" + +// +// FbxVideo +// +#define FIELD_KFBXVIDEO_USEMIPMAP "UseMipMap" + +// +// FbxTexture +// +#define FIELD_KFBXTEXTURE_TEXTURE "Texture" +#define FIELD_KFBXTEXTURE_TYPE "Type" +#define FIELD_KFBXTEXTURE_VERSION "Version" +#define FIELD_KFBXTEXTURE_TEXTURE_NAME "TextureName" +#define FIELD_KFBXTEXTURE_MEDIA "Media" +#define FIELD_KFBXTEXTURE_FILENAME "FileName" +#define FIELD_KFBXTEXTURE_RELATIVE_FILENAME "RelativeFilename" +#define FIELD_KFBXTEXTURE_TRANSLATION "Translation" +#define FIELD_KFBXTEXTURE_SCALING "Scaling" +#define FIELD_KFBXTEXTURE_UV_TRANSLATION "ModelUVTranslation" +#define FIELD_KFBXTEXTURE_UV_SCALING "ModelUVScaling" +#define FIELD_KFBXTEXTURE_ROTATION "Rotation" +#define FIELD_KFBXTEXTURE_TILING "Tilling" +#define FIELD_KFBXTEXTURE_ALPHA_SRC "Texture_Alpha_Source" +#define FIELD_KFBXTEXTURE_CROPPING "Cropping" +#define FIELD_KFBXTEXTURE_MAPPING_TYPE "Texture_Mapping_Type" +#define FIELD_KFBXTEXTURE_PLANAR_NORMAL "Texture_Planar_Mapping_Normal" +#define FIELD_KFBXTEXTURE_SWAPUV "SwapUV" +#define FIELD_KFBXTEXTURE_MATERIAL_USE "MaterialMode" +#define FIELD_KFBXTEXTURE_TEXTURE_USE "TextureUse" +#define TOKEN_KFBXTEXTURE_TEXTURE_USE_STANDARD "Standard" +#define TOKEN_KFBXTEXTURE_TEXTURE_USE_SHADOW_MAP "ShadowMap" +#define TOKEN_KFBXTEXTURE_TEXTURE_USE_LIGHT_MAP "LightMap" +#define TOKEN_KFBXTEXTURE_TEXTURE_USE_SPHERICAL_REFLEXION_MAP "SphericalReflexionMap" +#define TOKEN_KFBXTEXTURE_TEXTURE_USE_SPHERE_REFLEXION_MAP "SphereReflexionMap" +#define TOKEN_KFBXTEXTURE_TEXTURE_USE_BUMP_NORMAL_MAP "BumpNormalMap" +#define TOKEN_KFBXTEXTURE_BLEND_TRANSLUCENT "Translucent" +#define TOKEN_KFBXTEXTURE_BLEND_ADD "Add" +#define TOKEN_KFBXTEXTURE_BLEND_MODULATE "Modulate" +#define TOKEN_KFBXTEXTURE_BLEND_MODULATE2 "Modulate2" +#define TOKEN_KFBXTEXTURE_BLEND_OVER "Over" +#define TOKEN_KFBXTEXTURE_BLEND_NORMAL "Normal" +#define TOKEN_KFBXTEXTURE_BLEND_DISSOLVE "Dissolve" +#define TOKEN_KFBXTEXTURE_BLEND_DARKEN "Darken" +#define TOKEN_KFBXTEXTURE_BLEND_COLORBURN "Colorburn" +#define TOKEN_KFBXTEXTURE_BLEND_LINEARBURN "Linearburn" +#define TOKEN_KFBXTEXTURE_BLEND_DARKERCOLOR "Darkercolor" +#define TOKEN_KFBXTEXTURE_BLEND_LIGHTEN "Lighten" +#define TOKEN_KFBXTEXTURE_BLEND_SCREEN "Screen " +#define TOKEN_KFBXTEXTURE_BLEND_COLORDODGE "Colordodge" +#define TOKEN_KFBXTEXTURE_BLEND_LINEARDODGE "Lineardodge" +#define TOKEN_KFBXTEXTURE_BLEND_LIGHTERCOLOR "Lightercolor" +#define TOKEN_KFBXTEXTURE_BLEND_SOFTLIGHT "Softlight" +#define TOKEN_KFBXTEXTURE_BLEND_HARDLIGHT "Hardlight " +#define TOKEN_KFBXTEXTURE_BLEND_VIVIDLIGHT "Vividlight" +#define TOKEN_KFBXTEXTURE_BLEND_LINEARLIGHT "Linearlight" +#define TOKEN_KFBXTEXTURE_BLEND_PINLIGHT "Pinlight" +#define TOKEN_KFBXTEXTURE_BLEND_HARDMIX "Hardmix" +#define TOKEN_KFBXTEXTURE_BLEND_DIFFERENCE "Difference" +#define TOKEN_KFBXTEXTURE_BLEND_EXCLUSION "Exclusion" +#define TOKEN_KFBXTEXTURE_BLEND_SUBTRACT "Subtract" +#define TOKEN_KFBXTEXTURE_BLEND_DIVIDE "Divide" +#define TOKEN_KFBXTEXTURE_BLEND_HUE "Hue" +#define TOKEN_KFBXTEXTURE_BLEND_SATURATION "Saturation" +#define TOKEN_KFBXTEXTURE_BLEND_COLOR "Color" +#define TOKEN_KFBXTEXTURE_BLEND_LUMINOSITY "Luminosity" +#define TOKEN_KFBXTEXTURE_BLEND_OVERLAY "Overlay" +#define TOKEN_KFBXTEXTURE_BLEND_MAXBLEND "MaxBlend" +#define FIELD_KFBXTEXTURE_WRAP_U "WrapU" +#define FIELD_KFBXTEXTURE_WRAP_V "WrapV" +#define FIELD_KFBXTEXTURE_BLEND_MODE "BlendMode" +#define FIELD_KFBXTEXTURE_ALPHA "TextureAlpha" + +// +// FbxSurfaceMaterial +// +#define FIELD_KFBXMATERIAL_MATERIAL "Material" +#define FIELD_KFBXMATERIAL_VERSION "Version" +#define FIELD_KFBXMATERIAL_SHADING_MODEL "ShadingModel" +#define FIELD_KFBXMATERIAL_AMBIENT "Ambient" +#define FIELD_KFBXMATERIAL_DIFFUSE "Diffuse" +#define FIELD_KFBXMATERIAL_SPECULAR "Specular" +#define FIELD_KFBXMATERIAL_EMISSIVE "Emissive" +#define FIELD_KFBXMATERIAL_SHININESS "Shininess" +#define FIELD_KFBXMATERIAL_REFLECTIVITY "Reflectivity" +#define FIELD_KFBXMATERIAL_ALPHA "Alpha" +#define FIELD_KFBXMATERIAL_MULTI_LAYER "MultiLayer" + +// +// FbxCluster +// +#define FIELD_KFBXLINK_LINK "Link" +#define FIELD_KFBXLINK_MODE "Mode" +#define FIELD_KFBXLINK_USERDATA "UserData" +#define FIELD_KFBXLINK_INDEXES "Indexes" +#define FIELD_KFBXLINK_WEIGHTS "Weights" +#define FIELD_KFBXLINK_TRANSFORM "Transform" +#define FIELD_KFBXLINK_TRANSFORM_LINK "TransformLink" +#define FIELD_KFBXLINK_ASSOCIATE_MODEL "AssociateModel" +#define FIELD_KFBXLINK_TRANSFORM_PARENT "TransformParent" +#define TOKEN_KFBXLINK_AVERAGE "Average" +#define TOKEN_KFBXLINK_ADDITIVE "Additive" +#define TOKEN_KFBXLINK_TOTAL1 "Total1" + +// +// FbxDeformer +// +#define FIELD_KFBXDEFORMER_DEFORMER "Deformer" +#define FIELD_KFBXDEFORMER_VERSION "Version" +#define FIELD_KFBXDEFORMER_TYPE "Type" +#define FIELD_KFBXDEFORMER_MULTI_LAYER "MultiLayer" +#define FIELD_KFBXDEFORMER_MODE "Mode" +#define FIELD_KFBXDEFORMER_USERDATA "UserData" +#define FIELD_KFBXDEFORMER_INDEXES "Indexes" +#define FIELD_KFBXDEFORMER_WEIGHTS "Weights" +#define FIELD_KFBXDEFORMER_TRANSFORM "Transform" +#define FIELD_KFBXDEFORMER_TRANSFORM_LINK "TransformLink" +#define FIELD_KFBXDEFORMER_ASSOCIATE_MODEL "AssociateModel" +#define FIELD_KFBXDEFORMER_TRANSFORM_PARENT "TransformParent" +#define TOKEN_KFBXDEFORMER_AVERAGE "Average" +#define TOKEN_KFBXDEFORMER_ADDITIVE "Additive" +#define TOKEN_KFBXDEFORMER_TOTAL1 "Total1" + +// +// FbxSkin +// +#define FIELD_KFBXSKIN_VERSION "Version" +#define FIELD_KFBXSKIN_DEFORM_ACCURACY "Link_DeformAcuracy" +#define FIELD_KFBXSKIN_SKINNINGTYPE "SkinningType" +#define TOKEN_KFBXSKIN_LINEAR "Linear" +#define TOKEN_KFBXSKIN_DUALQUATERNION "DualQuaternion" +#define TOKEN_KFBXSKIN_BLEND "Blend" +#define FIELD_KFBXSKIN_INDEXES "Indexes" +#define FIELD_KFBXSKIN_BLENDWEIGHTS "BlendWeights" + +// +// FbxCluster +// +#define FIELD_KFBXCLUSTER_VERSION "Version" +#define FIELD_KFBXCLUSTER_MODE "Mode" +#define FIELD_KFBXCLUSTER_USERDATA "UserData" +#define FIELD_KFBXCLUSTER_INDEXES "Indexes" +#define FIELD_KFBXCLUSTER_WEIGHTS "Weights" +#define FIELD_KFBXCLUSTER_TRANSFORM "Transform" +#define FIELD_KFBXCLUSTER_TRANSFORM_LINK "TransformLink" +#define FIELD_KFBXCLUSTER_ASSOCIATE_MODEL "AssociateModel" +#define FIELD_KFBXCLUSTER_TRANSFORM_PARENT "TransformParent" +#define TOKEN_KFBXCLUSTER_AVERAGE "Average" +#define TOKEN_KFBXCLUSTER_ADDITIVE "Additive" +#define TOKEN_KFBXCLUSTER_TOTAL1 "Total1" + +// +// FbxBlendShape +// +#define FIELD_KFBXBLENDSHAPE_VERSION "Version" + +// +// FbxBlendShapeChannel +// +#define FIELD_KFBXBLENDSHAPECHANNEL_VERSION "Version" +#define FIELD_KFBXBLENDSHAPECHANNEL_DEFORMPERCENT "DeformPercent" +#define FIELD_KFBXBLENDSHAPECHANNEL_FULLWEIGHTS "FullWeights" + +// +// FbxShape +// +#define FIELD_KFBXSHAPE_SHAPE "Shape" +#define FIELD_KFBXSHAPE_VERSION "Version" +#define FIELD_KFBXSHAPE_INDEXES "Indexes" +#define FIELD_KFBXSHAPE_VERTICES "Vertices" +#define FIELD_KFBXSHAPE_NORMALS "Normals" + +// +// FbxVertexCacheDeformer +// +#define FILED_KFBXVERTEXCACHEDEFORMER_VERSION "Version" +#define FILED_KFBXVERTEXCACHEDEFORMER_CACHE_CHANNEL "CacheChannel" + +// +// FbxCache +// +#define FIELD_KFBXCACHE_VERTEX_CACHE "Cache" +#define FIELD_KFBXCACHE_VERSION "Version" +#define FIELD_KFBXCACHE_CACHE_PATH "CachePath" + +// +// FbxBindingTable +// +#define FIELD_KFBXBINDINGTABLE_BINDING_TABLE "BindingTable" +#define FIELD_KFBXBINDINGTABLE_VERSION "Version" +#define FIELD_KFBXBINDINGTABLE_TARGET "Target" +#define FIELD_KFBXBINDINGTABLE_ENTRY "Entry" + +// +// FbxImplementation +// +#define FIELD_KFBXIMPLEMENTATION_IMPLEMENTATION "Implementation" +#define FIELD_KFBXIMPLEMENTATION_VERSION "Version" + +// +// FbxBindingOperator +// +#define FIELD_KFBXBINDINGOPERATOR_BINDING_OPERATOR "BindingOperator" +#define FIELD_KFBXBINDINGOPERATOR_VERSION "Version" +#define FIELD_KFBXBINDINGOPERATOR_ENTRY "Entry" + +// +// FbxCollection +// +#define FIELD_KFBXCOLLECTION_COLLECTION "Collection" +#define FIELD_KFBXCOLLECTION_VERSION "Version" + +// +// FbxCollectionExclusive +// +#define FIELD_KFBXCOLLECTIONEXCLUSIVE_COLLECTIONEXCLUSIVE "CollectionExclusive" +#define FIELD_KFBXCOLLECTIONEXCLUSIVE_VERSION "Version" + +// +// FbxSelectionSet +// +#define FIELD_KFBXSELECTIONSET_VERTICE_INDEXARRAY "VertexIndexArray" +#define FIELD_KFBXSELECTIONSET_EDGE_INDEXARRAY "EdgeIndexArray" +#define FIELD_KFBXSELECTIONSET_POLYGONVERTICES_INDEXARRAY "PolygonIndexArray" + +// +// FbxDisplayLayer +// +#define FIELD_KFBXDISPLAYLAYER_DISPLAYLAYER "DisplayLayer" +#define FIELD_KFBXDISPLAYLAYER_VERSION "Version" + +// +// FbxDocument +// +#define FIELD_KFBXDOCUMENT_DOCUMENT "Document" +#define FIELD_KFBXDOCUMENT_VERSION "Version" + +// +// FbxLayeredTexture +// +#define FIELD_KFBXLAYEREDTEXTURE_LAYERED_TEXTURE "LayeredTexture" +#define FIELD_KFBXLAYEREDTEXTURE_VERSION "Version" +#define FIELD_KFBXLAYEREDTEXTURE_BLENDMODES "BlendModes" +#define FIELD_KFBXLAYEREDTEXTURE_ALPHAS "Alphas" + +// +// FbxGobo +// +#define FIELD_KFBXGOBO_GOBOMANAGER "GoboManager" +#define FIELD_KFBXGOBO_GOBO "Gobo" +#define FIELD_KFBXGOBO_LIGHTGOBO "LightGobo" +#define FIELD_KFBXGOBO_VERSION "Version" +#define FIELD_KFBXGOBO_GOBONAME "GoboName" +#define FIELD_KFBXGOBO_GOBOPATH "GoboPath" +#define FIELD_KFBXGOBO_DRAWCOMPONENT "DrawComponent" + + +// +// Password +// +#define FIELD_PASSWORD "NodeId" +#define FIELD_OLD_PASSWORD "Param2a" +#define FIELD_XOR_STRING "?|/?*" + + +// Meanfull names for MB 6.0 +#define FIELD_KFBXLAYER_ELEMENT_UV "LayerElementUV" +#define FIELD_KFBXLAYER_ELEMENT_SMOOTHING "LayerElementSmoothing" +#define FIELD_KFBXLAYER_ELEMENT_VERTEX_CREASE "LayerElementVertexCrease" +#define FIELD_KFBXLAYER_ELEMENT_EDGE_CREASE "LayerElementEdgeCrease" +#define FIELD_KFBXLAYER_ELEMENT_HOLE "LayerElementHole" +#define FIELD_KFBXLAYER_ELEMENT_USER_DATA "LayerElementUserData" +#define FIELD_KFBXLAYER_ELEMENT_VISIBILITY "LayerElementVisibility" +#define FIELD_KFBXLAYER_ELEMENT_NORMAL "LayerElementNormal" +#define FIELD_KFBXLAYER_ELEMENT_BINORMAL "LayerElementBinormal" +#define FIELD_KFBXLAYER_ELEMENT_TANGENT "LayerElementTangent" +#define FIELD_KFBXLAYER_ELEMENT_MATERIAL "LayerElementMaterial" +#define FIELD_KFBXLAYER_ELEMENT_TEXTURE "LayerElementTexture" +#define FIELD_KFBXLAYER_ELEMENT_COLOR "LayerElementColor" +#define FIELD_KFBXLAYER_ELEMENT_POLYGON_GROUP "LayerElementPolygonGroup" +#define FIELD_KFBXLAYER_ELEMENT_VERSION "Version" +#define FIELD_KFBXLAYER_ELEMENT_NAME "Name" +#define FIELD_KFBXLAYER_ELEMENT_TYPED_INDEX "TypedIndex" +#define FIELD_KFBXLAYER_ELEMENT_MAPPING_INFO_TYPE "MappingInformationType" +#define FIELD_KFBXLAYER_ELEMENT_REFERENCE_INFO_TYPE "ReferenceInformationType" +#define FIELD_KFBXLAYER "Layer" +#define FIELD_KFBXLAYER_VERSION "Version" +#define FIELD_KFBXLAYER_ELEMENT "LayerElement" +#define FIELD_KFBXLAYER_ELEMENT_TYPE "Type" + +// +// FbxLayer +// +#define FIELD_KFBXLAYER_GEOMETRY_LAYER "GeometryLayer" +#define FIELD_KFBXLAYER_LAYER_TEXTURE_INFO "LayerTextureInfo" +#define FIELD_KFBXLAYER_TEXTURE_MODE "TextureMode" +#define FIELD_KFBXLAYER_TEXTURE_BLEND_MODE "TextureBlendMode" +#define FIELD_KFBXLAYER_TEXTURE_ID_COUNT "TextureIdCount" +#define FIELD_KFBXLAYER_TEXTURE_ID "TextureId" +#define FIELD_KFBXLAYER_UV_MODE "UVMode" +#define FIELD_KFBXLAYER_UV_COUNT "UVCount" +#define FIELD_KFBXLAYER_UV "UV" +#define FIELD_KFBXLAYER_UV_INDEX "UVIndex" +#define FIELD_KFBXLAYER_UV_ID_COUNT "UVIdCount" +#define FIELD_KFBXLAYER_UV_ID "UVId" + +// +// FbxPose +// +#define FIELD_KFBXPOSE_VERSION "Version" +#define FIELD_KFBXPOSE_TYPE "Type" +#define FIELD_KFBXPOSE_POSE "Pose" +#define FIELD_KFBXPOSE_BIND_POSE "BindPose" +#define FIELD_KFBXPOSE_REST_POSE "RestPose" + + +// +// KSceneInfo +// +#define FIELD_SCENEINFO "SceneInfo" +#define FIELD_SCENEINFO_TYPE "Type" +#define FIELD_SCENEINFO_VERSION "Version" +#define FIELD_SCENEINFO_METADATA "MetaData" +#define FIELD_SCENEINFO_METADATA_VERSION "Version" +#define FIELD_SCENEINFO_METADATA_TITLE "Title" +#define FIELD_SCENEINFO_METADATA_SUBJECT "Subject" +#define FIELD_SCENEINFO_METADATA_AUTHOR "Author" +#define FIELD_SCENEINFO_METADATA_KEYWORDS "Keywords" +#define FIELD_SCENEINFO_METADATA_REVISION "Revision" +#define FIELD_SCENEINFO_METADATA_COMMENT "Comment" + +// +// Global setting: +// +#define FIELD_GLOBAL_SETTINGS "GlobalSettings" +#define FIELD_GLOBAL_SETTINGS_VERSION "Version" + +// +// FbxSceneReference: +// +#define FIELD_KFBXREFERENCE_REFERENCE "SceneReference" +#define FIELD_KFBXREFERENCE_VERSION "Version" + +// +// Constraints +// +#define FIELD_CONSTRAINT "Constraint" +#define FIELD_CONSTRAINT_VERSION "Version" +#define FIELD_CONSTRAINT_OFFSET "Offset" +#define TOKEN_KFBXCONSTRAINT_CONSTRAINT "Constraint" +#define TOKEN_KFBXCONSTRAINT_POSITION "Position From Positions" +#define TOKEN_KFBXCONSTRAINT_ROTATION "Rotation From Rotations" +#define TOKEN_KFBXCONSTRAINT_SCALE "Scale From Scales" +#define TOKEN_KFBXCONSTRAINT_PARENT "Parent-Child" +#define TOKEN_KFBXCONSTRAINT_SINGLECHAINIK "Single Chain IK" +#define TOKEN_KFBXCONSTRAINT_AIM "Aim" +#define TOKEN_KFBXCONSTRAINT_CHARACTER "Character" +#define TOKEN_KFBXCONSTRAINT_CUSTOM "Custom" + +// +// Controlset plug +// + + +// +// Object definition +// +#define FIELD_OBJECT_DESCRIPTION "Document" +#define FIELD_OBJECT_DESCRIPTION_NAME "Name" +#define FIELD_OBJECT_REFERENCES "References" +#define FIELD_OBJECT_REFERENCES_FILE_PATH_URL "FilePathUrl" +#define FIELD_OBJECT_REFERENCES_REFERENCE "Reference" +#define FIELD_OBJECT_DEFINITION "Definitions" +#define FIELD_OBJECT_PROPERTY_TEMPLATE "PropertyTemplate" +#define FIELD_OBJECT_DEFINITION_VERSION "Version" +#define FIELD_OBJECT_DEFINITION_COUNT "Count" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE "ObjectType" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_REFERENCE "SceneReference" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CONTAINER "Container" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_MODEL "Model" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_GEOMETRY "Geometry" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_NODE_ATTRIBUTE "NodeAttribute" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_GEOMETRY_WEIGHTED_MAP "GeometryWeightedMap" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_MARKETSET "MarkerSet" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_MATERIAL "Material" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_COLLECTION "Collection" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_COLLECTION_EXCLUSIVE "CollectionExclusive" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_DISPLAY_LAYER "DisplayLayer" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_TEXTURE "Texture" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_THUMBNAIL "Thumbnail" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_VIDEO "Video" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_DEFORMER "Deformer" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SUBDEFORMER "SubDeformer" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SHAPE "Shape" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BLENDSHAPE "BlendShape" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BLENDSHAPECHANNEL "BlendShapeChannel" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CONSTRAINT "Constraint" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CONTROLSET_PLUG "ControlSetPlug" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_POSE "Pose" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_GENERIC_NODE "GenericNode" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BOUNDARY "Boundary" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CACHE "Cache" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_IMPLEMENTATION "Implementation" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BINDINGTABLE "BindingTable" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_BINDINGOPERATOR "BindingOperator" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_LAYERED_TEXTURE "LayeredTexture" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_PROCEDURAL_TEXTURE "ProceduralTexture" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SCENEINFO FIELD_SCENEINFO +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SCENE "Scene" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_LIBRARY "Library" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_DOCUMENT "Document" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_FOLDER "Folder" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_CLIP "Clip" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_TIMELINE "TimelineX" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_TIMELINE_TRACK "TimelineXTrack" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ENVIRONMENT "KFbxEnvironment" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_OBJECTMETADATA "ObjectMetaData" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_PLUGIN_PARAMS "PluginParameters" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_STACK "AnimationStack" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_LAYER "AnimationLayer" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_CURVENODE "AnimationCurveNode" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_CURVE "AnimationCurve" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_ANIM_EVALUATOR "AnimationEvaluator" + +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_SELECTIONNODE "SelectionNode" + +#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_MESH "Mesh" +#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_SUBDIV "Subdiv" +#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_PATCH "Patch" +#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_NURB "Nurb" +#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_NURBS_SURFACE "NurbsSurface" +#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_NURBS_CURVE "NurbsCurve" +#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_TRIM_NURB_SURFACE "TrimNurbsSurface" +#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_BOUNDARY "Boundary" +#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_LINE "Line" +#define FIELD_OBJECT_TYPE_GEOMETRY_SUBTYPE_SHAPE "Shape" +#define FIELD_OBJECT_DEFINITION_OBJECT_TYPE_GLOBAL_SETTINGS FIELD_GLOBAL_SETTINGS + +// +// Object properties +// +#define FIELD_OBJECT_PROPERTIES "Objects" + + +// +// Object relations +// +#define FIELD_OBJECT_RELATIONS "Relations" +#define FIELD_OBJECT_RELATIONS_TYPE_MODEL "Model" +#define FIELD_OBJECT_RELATIONS_TYPE_MATERIAL "Material" +#define FIELD_OBJECT_RELATIONS_TYPE_TEXTURE "Texture" +#define FIELD_OBJECT_RELATIONS_TYPE_VIDEO "Video" +#define FIELD_OBJECT_RELATIONS_TYPE_CONSTRAINT "Constraint" +#define FIELD_OBJECT_RELATIONS_TYPE_DEFORMER "Deformer" +#define FIELD_OBJECT_RELATIONS_TYPE_POSE "Pose" +#define FIELD_OBJECT_RELATIONS_TYPE_SCENEINFO FIELD_SCENEINFO +#define FIELD_OBJECT_RELATIONS_TYPE_CACHE "Cache" + +// +// Object connections +// +#define FIELD_OBJECT_CONNECTIONS "Connections" + + +// +// Takes +// +#define FIELD_TAKES "Takes" + +// Embedded files +#define FIELD_EMBEDDED_FILES "Embedding" +#define FIELD_EMBEDDED_FILE "File" +// Original filename, relative to the fbx +// It may point to a file not below the fbx. +#define FIELD_EMBEDDED_ORIGINAL_FILENAME "Original" +// Embedded filename, unique to the fbx, always relative to the fbx file; +// if two original filenames, in separate folders, are embedded in an fbx file, +// one of them will be renamed by using a folder. +#define FIELD_EMBEDDED_FILENAME "Filename" + +// Link back to the objects which use this file. +#define FIELD_EMBEDDED_CONSUMERS "Consumers" +#define FIELD_EMBEDDED_CONSUMER "Consumer" + +// +// Node Attribute +// +#define FIELD_NODE_ATTRIBUTE_NAME "NodeAttributeName" +#define FIELD_NODE_ATTRIBUTE_REFTO "NodeAttributeRefTo" + +// +// Old sections +// +#define FIELD_OLD_SECTION_VERSION5 "Version5" +#define FIELD_OLD_SECTION_HIERARCHYVIEW "HierarchyView" + +#define OBJECT_OLD_SECTION_VERSION5 "OldSection_VersionFive" +#define OBJECT_OLD_SECTION_HIERARCHYVIEW "OldSection_HierarchyView" + +#include + +#endif /* _FBXSDK_FILEIO_FILE_TOKENS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxglobalcamerasettings.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxglobalcamerasettings.h new file mode 100644 index 00000000..453f2583 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxglobalcamerasettings.h @@ -0,0 +1,168 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxglobalcamerasettings.h +#ifndef _FBXSDK_FILEIO_GLOBAL_CAMERA_SETTINGS_H_ +#define _FBXSDK_FILEIO_GLOBAL_CAMERA_SETTINGS_H_ + +#include + +#include + +#include + +class FbxStatus; +class FbxManager; +class FbxScene; +class FbxCamera; +class FbxCameraSwitcher; + +#define FBXSDK_CAMERA_PERSPECTIVE "Producer Perspective" +#define FBXSDK_CAMERA_TOP "Producer Top" +#define FBXSDK_CAMERA_FRONT "Producer Front" +#define FBXSDK_CAMERA_BACK "Producer Back" +#define FBXSDK_CAMERA_RIGHT "Producer Right" +#define FBXSDK_CAMERA_LEFT "Producer Left" +#define FBXSDK_CAMERA_BOTTOM "Producer Bottom" +#define FBXSDK_CAMERA_SWITCHER "Camera Switcher" + +/** This class contains the global camera settings. + * \nosubgrouping + * \remarks This class exists for FBX version 6.x and earlier. The new FBX v7.x file format + * that is now the default no longer uses it. The relevant data (a subset of this class) has + * been moved to the FbxGlobalSettings object and should be used instead. + */ +class FBXSDK_DLL FbxGlobalCameraSettings +{ + FBXSDK_FRIEND_NEW(); + +public: + /** \name Default Camera Settings */ + //@{ + /** \enum EViewingMode Viewing modes. */ + enum EViewingMode + { + eStandard, // + +#endif /* _FBXSDK_FILEIO_GLOBAL_CAMERA_SETTINGS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxgloballightsettings.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxgloballightsettings.h new file mode 100644 index 00000000..d33b14ea --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxgloballightsettings.h @@ -0,0 +1,229 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxgloballightsettings.h +#ifndef _FBXSDK_FILEIO_GLOBAL_LIGHT_SETTINGS_H_ +#define _FBXSDK_FILEIO_GLOBAL_LIGHT_SETTINGS_H_ + +#include + +#include + +#include + +class FbxGlobalLightSettingsProperties; + +/** This class contains functions for accessing global light settings. + * \nosubgrouping + * \remarks This class exists for FBX version 6.x and earlier. The new FBX v7.x file format that is + * now the default no longer uses it. The relevant data (a subset of this class) has been moved to + * the FbxGlobalSettings object and should be used instead. + */ +class FBXSDK_DLL FbxGlobalLightSettings +{ + +public: + FBXSDK_FRIEND_NEW(); + /** + * \name Ambient Color + */ + //@{ + + /** Sets the ambient color. + * \param pAmbientColor The ambient color to set. + * \remarks The ambient color only use RGB channels. + */ + void SetAmbientColor(FbxColor pAmbientColor); + + /** Returns the ambient color. + * \return The ambient color. + */ + FbxColor GetAmbientColor() const; + + //@} + + /** + * \name Fog Option + */ + //@{ + + /** Activates or disables the fog. + * \param pEnable Set to \c true to activate the fog option or set to \c false to disable the fog option. + */ + void SetFogEnable(bool pEnable); + + /** Returns the fog option's current state. + * \return \c True if fog is activated, returns \c false if fog is disabled. + */ + bool GetFogEnable() const; + + /** Sets the fog color. + * \param pColor The fog color to be set. + * \remarks The fog color only uses RGB channels. + */ + void SetFogColor(FbxColor pColor); + + /** Returns the fog color. + * \return The fog color. + * \remarks The fog color only uses RGB channels. + */ + FbxColor GetFogColor() const; + + /** \enum EFogMode Fog types. + */ + enum EFogMode + { + eLinear, //! Linear fog mode. + eExponential, //! Exponential fog mode. + eExponentialSquareRoot //! Exponential square root fog mode. + }; + + /** Sets the fog mode. + * \param pMode The fog type to be set. + */ + void SetFogMode(EFogMode pMode); + + /** Returns the fog mode. + * \return The currently set fog mode. + */ + EFogMode GetFogMode() const; + + /** Sets the fog density. + * \param pDensity The fog density to be set. It can be any double value, however it can + * happen that other sections of FBX SDK may clamp values to reasonable values. + * \remarks This function is only used when the fog mode is set to exponential or square root exponential. + */ + void SetFogDensity(double pDensity); + + /** Returns the fog density. + * \return The currently set fog density. + * \remarks This function is only used when the fog mode is set to exponential or square root exponential. + */ + double GetFogDensity() const; + + /** Sets the distance from the view where the fog begins. + * \param pStart Distance where the fog begins. + * \remarks This function is only used when the fog mode is set to linear. The new value is clamped to fit inside the interval [0, FogEnd()]. + */ + void SetFogStart(double pStart); + + /** Returns the distance from the view where the fog begins. + * \return The distance from the view where the fog begins. + * \remarks This function is only used when the fog mode is set to linear. + */ + double GetFogStart() const; + + /** Sets the distance from the view where the fog ends. + * \param pEnd Distance where the fog ends. + * \remarks This function is only used when the fog mode is set to linear. The new value is adjusted to fit within the interval [FogStart(), inf). + */ + void SetFogEnd(double pEnd); + + /** Returns the distance from the view where the fog ends. + * \return The distance from the view where the fog ends. + * \remarks This function is only used when the fog mode is set to linear. + */ + double GetFogEnd() const; + + //@} + + /** + * \name Shadow Planes + * The functions in this section are supported only by FiLMBOX version 2.7 and earlier. + * FiLMBOX 3.0 supports shadow planes within a specific shader, which is not supported by the FBX SDK. + */ + //@{ + + /** Struct used to define the shadow plane. + */ + struct FBXSDK_DLL ShadowPlane + { + //! Default constructor. + ShadowPlane(); + + //! Activate flag. + bool mEnable; + + //! Origin point. + FbxVector4 mOrigin; + + //! Normal vector. + FbxVector4 mNormal; + }; + + /** Activates or disables the display of shadow planes. + * \param pShadowEnable Set to \c true to display shadow planes in the scene. + */ + void SetShadowEnable(bool pShadowEnable); + + /** Returns the current state of the shadow enable flag. + * \return \c True if shadow planes are set to be displayed in the scene. + */ + bool GetShadowEnable() const; + + /** Sets the shadow intensity that is applied to all shadow planes. + * \param pShadowIntensity Intensity applied to all the shadow planes. + * \remarks Ranges from 0 to 300. + */ + void SetShadowIntensity(double pShadowIntensity); + + /** Returns the shadow intensity applied to all shadow planes. + * \return The intensity applied to all shadow planes in the scene. + * \remarks Ranges from 0 to 300. + */ + double GetShadowIntensity() const; + + /** Returns the number of shadow planes. + * \return Number of shadow planes. + */ + int GetShadowPlaneCount() const; + + /** Returns a shadow plane at the specified index. + * \param pIndex Shadow plane index. + * \param pStatus The FbxStatus object to hold error codes. + * \return Pointer the shadow plane, or \c NULL if the index is out of range. + */ + ShadowPlane* GetShadowPlane(int pIndex, FbxStatus* pStatus=NULL); + + /** Adds a shadow plane. + * \param pShadowPlane The shadow plane to be added. + */ + void AddShadowPlane(ShadowPlane pShadowPlane); + + //! Removes all shadow planes. + void RemoveAllShadowPlanes(); + + //@} + + //! Restores default settings. + void RestoreDefaultSettings(); + + /** Assignment operator. + * \param pGlobalLightSettings FbxGlobalLightSettings object assigned to this one. + */ + const FbxGlobalLightSettings& operator=(const FbxGlobalLightSettings& pGlobalLightSettings); + + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + FbxGlobalLightSettings(); + ~FbxGlobalLightSettings(); + + FbxGlobalLightSettingsProperties* mPH; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_FILEIO_GLOBAL_LIGHT_SETTINGS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxglobalsettings.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxglobalsettings.h new file mode 100644 index 00000000..a70af283 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxglobalsettings.h @@ -0,0 +1,315 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxglobalsettings.h +#ifndef _FBXSDK_FILEIO_GLOBAL_SETTINGS_H_ +#define _FBXSDK_FILEIO_GLOBAL_SETTINGS_H_ + +#include + +#include +#include +#include + +#include + +/** \brief This class contains functions for accessing global settings. + * \nosubgrouping + */ +class FBXSDK_DLL FbxGlobalSettings : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxGlobalSettings, FbxObject); + +public: + /** + * \name Axis system + */ + //@{ + + /** Sets the scene's coordinate system. + * \param pAxisSystem The coordinate system to set. + */ + void SetAxisSystem(const FbxAxisSystem& pAxisSystem); + + /** Returns the scene's current coordinate system. + * \return The scene's current coordinate system. + */ + FbxAxisSystem GetAxisSystem(); + //@} + + /** Sets the coordinate system's original Up Axis when the scene is created. + * \param pAxisSystem The coordinate system whose Up Axis is copied. + */ + void SetOriginalUpAxis(const FbxAxisSystem& pAxisSystem); + + /** Returns the coordinate system's original Up Axis. + * \return The coordinate system's original Up Axis when the scene is created. 0 is X, 1 is Y, 2 is Z axis. + */ + int GetOriginalUpAxis() const; + //@} + + /** + * \name System Units + */ + //@{ + + /** Sets the unit of measurement used by the system. + * \param pOther The system unit to set. + */ + void SetSystemUnit(const FbxSystemUnit& pOther); + + /** Returns the unit of measurement used by the system. + * \return The unit of measurement used by the system. + */ + FbxSystemUnit GetSystemUnit() const; + + /** Sets the original unit of measurement used by the system. + * \param pOther The original system unit to set. + */ + void SetOriginalSystemUnit(const FbxSystemUnit& pOther); + + /** Returns the original unit of measurement used by the system. + * \return The original unit of measurement used by the system. + */ + FbxSystemUnit GetOriginalSystemUnit() const; + //@} + + + /** + * \name Light Settings + */ + //@{ + + /** Sets the ambient color. + * \param pAmbientColor The ambient color to set. + * \remarks The ambient color only uses the RGB channels. + */ + void SetAmbientColor(FbxColor pAmbientColor); + + /** Returns the ambient color. + * \return The ambient color. + */ + FbxColor GetAmbientColor() const; + + //@} + + /** + * \name Camera Settings + */ + //@{ + /** Sets the default camera. + * \param pCameraName Name of the default camera. + * \return \c true if camera name is valid, returns \c false if the camera does not have a valid name. + * \remarks A valid camera name can be either one of the defined tokens (FBXSDK_CAMERA_PERSPECTIVE, + * FBXSDK_CAMERA_TOP, FBXSDK_CAMERA_FRONT, FBXSDK_CAMERA_BACK, FBXSDK_CAMERA_RIGHT, FBXSDK_CAMERA_LEFT and FBXSDK_CAMERA_BOTTOM) or the name + * of a camera inserted in the node tree under the scene's root node. + */ + bool SetDefaultCamera(const char* pCameraName); + + /** Returns the default camera name. + * \return The default camera name, or an empty string if no camera name has been set. + */ + FbxString GetDefaultCamera() const; + //@} + + /** + * \name Time Settings + */ + //@{ + /** Sets the time mode. + * \param pTimeMode One of the defined modes in class FbxTime. + */ + void SetTimeMode(FbxTime::EMode pTimeMode); + + /** Returns the time mode. + * \return The currently set TimeMode. + */ + FbxTime::EMode GetTimeMode() const; + + /** Sets the time protocol. + * \param pTimeProtocol One of the defined protocols in FbxTime class. + */ + void SetTimeProtocol(FbxTime::EProtocol pTimeProtocol); + + /** Returns the time protocol. + * \return The currently set time protocol (default FbxTime::eFrameCount). + */ + FbxTime::EProtocol GetTimeProtocol() const; + + /** \enum ESnapOnFrameMode Snap on frame mode. + */ + enum ESnapOnFrameMode + { + eNoSnap, //! No snap. + eSnapOnFrame, //! Snap on frame. + ePlayOnFrame, //! Play on frame. + eSnapAndPlayOnFrame //! Snap and play on frame. + }; + + /** Sets the snap on frame mode. + * \param pSnapOnFrameMode One of the following values: eNoSnap, eSnapOnFrame, ePlayOnFrame, or eSnapAndPlayOnFrame. + */ + void SetSnapOnFrameMode(ESnapOnFrameMode pSnapOnFrameMode); + + /** Returns the snap on frame mode. + * \return The currently set snap on frame mode (default eNoSnap). + */ + ESnapOnFrameMode GetSnapOnFrameMode() const; + + /** Sets the default time span of the time line. + * \param pTimeSpan The default time span of the time line. + */ + void SetTimelineDefaultTimeSpan(const FbxTimeSpan& pTimeSpan); + + /** Returns the default time span of the time line. + * \param pTimeSpan The default time span of the time line. + */ + void GetTimelineDefaultTimeSpan(FbxTimeSpan& pTimeSpan) const; + + /** Set custom frame rate. + * This is meaningless if the time mode is not FbxTime::eCustom. + */ + void SetCustomFrameRate(double pCustomFrameRate); + + /** Return frame rate if the time mode is FbxTime::eCustom. + * If the time mode is not FbxTime::eCustom, return -1. + */ + double GetCustomFrameRate() const; + //@} + + /** + * \name Time Markers + */ + //@{ + struct FBXSDK_DLL TimeMarker + { + //! Default constructor. + TimeMarker(); + + /** Copy constructor. + * \param pTimeMarker Another time marker copied to this time marker. + */ + TimeMarker(const TimeMarker& pTimeMarker); + + /** Assignment operator. + * \param pTimeMarker Another time marker assigned to this time marker. + */ + TimeMarker& operator=(const TimeMarker& pTimeMarker); + + //! Marker name. + FbxString mName; + + //! Marker time. + FbxTime mTime; + + //! Loop flag. + bool mLoop; + }; + + /** Returns the number of time markers. + * \return The number of time markers. + */ + int GetTimeMarkerCount() const; + + /** Returns the time marker at the given index. + * \param pIndex The time marker index. + * \param pStatus The FbxStatus object to hold error codes. + * \return A copy of the time marker at the given index, or an empty one if an error occurred. + */ + TimeMarker GetTimeMarker(int pIndex, FbxStatus* pStatus=NULL) const; + + /** Adds a time marker. + * \param pTimeMarker The new time marker to be added. + * \param pStatus The FbxStatus object to hold error codes. + */ + void AddTimeMarker(const TimeMarker& pTimeMarker, FbxStatus* pStatus=NULL); + + /** Replaces the time marker at the specified index with the new one. + * \param pIndex The time marker index. + * \param pTimeMarker The new time marker. + * \param pStatus The FbxStatus object to hold error codes. + */ + void ReplaceTimeMarker(int pIndex, const TimeMarker& pTimeMarker, FbxStatus* pStatus=NULL); + + //! Removes all time markers and sets the current time marker index to -1. + void RemoveAllTimeMarkers(); + + /** Sets the index of the current time marker. + * \param pIndex The current time marker index. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, or returns \c false if the index is not valid. + */ + bool SetCurrentTimeMarker(int pIndex, FbxStatus* pStatus=NULL); + + /** Returns the current time marker index. + * \return The current time marker index, or -1 if no current time marker has been set. + */ + int GetCurrentTimeMarker() const; + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + +protected: + FbxPropertyT UpAxis; + FbxPropertyT UpAxisSign; + + FbxPropertyT FrontAxis; + FbxPropertyT FrontAxisSign; + + FbxPropertyT CoordAxis; + FbxPropertyT CoordAxisSign; + + FbxPropertyT OriginalUpAxis; + FbxPropertyT OriginalUpAxisSign; + + FbxPropertyT UnitScaleFactor; + FbxPropertyT OriginalUnitScaleFactor; + + FbxPropertyT AmbientColor; + FbxPropertyT DefaultCamera; + FbxPropertyT TimeMode; + FbxPropertyT TimeProtocol; + FbxPropertyT SnapOnFrameMode; + FbxPropertyT TimeSpanStart; + FbxPropertyT TimeSpanStop; + FbxPropertyT CustomFrameRate; + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + +private: + void AxisSystemToProperties(); + void PropertiesToAxisSystem(); + + void Init(); + + FbxAxisSystem mAxisSystem; + int mNbTimeMarkers; + + friend class FbxWriterFbx6; + + FbxProperty mTimeMarkers; + FbxPropertyT mCurrentTimeMarker; + void AddSetTimeMarker(int pIndex, const TimeMarker& pTimeMarker, FbxStatus* pStatus, bool pAdd); + +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +inline EFbxType FbxTypeOf(const FbxTime::EMode&){ return eFbxEnum; } + +#include + +#endif /* _FBXSDK_FILEIO_GLOBAL_SETTINGS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxgobo.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxgobo.h new file mode 100644 index 00000000..1cad49ab --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxgobo.h @@ -0,0 +1,48 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxgobo.h +#ifndef _FBXSDK_FILEIO_GOBO_H_ +#define _FBXSDK_FILEIO_GOBO_H_ + +#include + +#include + +#include + +/** + * \brief A gobo is a filter placed over a spot light to project light patterns through fog on a surface. + * You can also use an image file as a gobo, which cause the light to project an image, much like a projector. + */ +class FbxGobo +{ +public: + FbxGobo(char* pName) : + mName(pName) + { + } + + //! Gobo name. + FbxString mName; + //! path and file name of the image file. + FbxString mFileName; + //! Flag that if shows the light projected on the ground. + bool mDrawGroundProjection; + //! Flag that lets you create a volumetric lighting effect by making the light stream visible. + bool mVolumetricLightProjection; + //! Flag that front facing light occurs when the camera view is looking down or up the light stream of a Spot light, which makes the light stream look three-dimensional. + bool mFrontVolumetricLightProjection; +}; + +#include + +#endif /* _FBXSDK_FILEIO_GOBO_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbximporter.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbximporter.h new file mode 100644 index 00000000..097e43f8 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbximporter.h @@ -0,0 +1,392 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbximporter.h +#ifndef _FBXSDK_FILEIO_IMPORTER_H_ +#define _FBXSDK_FILEIO_IMPORTER_H_ + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +class FbxIO; +class FbxIOFileHeaderInfo; +class FbxDocumentInfo; +class FbxTakeInfo; +class FbxReader; +class FbxThread; + +struct FbxImportThreadArg; + +/** Class to import an FBX file into SDK objects. +* Normally this class is used as is. But for very special needs +* a user can override Initialize() for special purpose. +* +* An importer will select the appropriate reader to a particular file. +* Ex: When an importer must import an FBX 7 file, +* the importer will ask for all registered readers if an FBX 7 file reader is available, +* then if a reader is found, the importer will create +* the specialized FBX 7 reader and read the file. +* This way, an importer can "read" many different type of files like FBX 5/6/7, 3DS, Obj, Dxf, Collada, etc. +* \see FbxReader +* +* Typical workflow for using the FbxImporter class: +* -# create a SDKManager +* -# create an IOSettings object +* -# create an empty scene +* -# create an importer +* -# initialize the importer with a file name and IOSettings +* -# set numerous states, take information, defining how the importer will behave +* -# call FbxImporter::Import() with an empty scene +* \code +* ex: +* // create a SdkManager +* FbxManager *lSdkManager = FbxManager::Create(); +* +* // create an IOSettings object +* FbxIOSettings * ios = FbxIOSettings::Create(lSdkManager, IOSROOT ); +* +* // set some IOSettings options +* ios->SetBoolProp(IMP_FBX_MATERIAL, true); +* ios->SetBoolProp(IMP_FBX_TEXTURE, true); +* +* // create an empty scene +* FbxScene* lScene = FbxScene::Create(lSdkManager,""); +* +* // Create an importer. +* FbxImporter* lImporter = FbxImporter::Create(lSdkManager, ""); +* +* // Initialize the importer by providing a filename and the IOSettings to use +* lImporter->Initialize("C:\\myfile.fbx", -1, ios); +* +* // Import the scene. +* lImporter->Import(lScene); +* +* // Destroy the importer. +* lImporter->Destroy(); +* \endcode +* +* \remarks According to the file suffix, a specialized reader will be created internally. +* Ex: for .fbx files a FBX Reader, for .3ds files, a 3ds reader, etc. +* Supported files formats: FBX 5/6/7 Binary & ASCII, Collada, DXF, OBJ, 3DS +* \nosubgrouping +*/ +class FBXSDK_DLL FbxImporter : public FbxIOBase +{ + FBXSDK_OBJECT_DECLARE(FbxImporter, FbxIOBase); + +public: + /** + * \name Import Functions + */ + //@{ + + /** Initialize object. + * \param pFileName Name of file to access. + * \param pFileFormat file format identifier User does not need to specify it by default. + if not specified, plugin will detect the file format according to file suffix automatically. + * \param pIOSettings client IOSettings, if not specified, a default IOSettings will be created + * \return \c true on success, \c false otherwise. + * \remarks To identify the error that occurred, inspect the status object accessed + * using the GetStatus() function. + * \remarks You do not need to give the pFileFormat if the suffix of pFileName is recognized + */ + virtual bool Initialize(const char* pFileName, int pFileFormat=-1, FbxIOSettings * pIOSettings=NULL); + + /** Initialize object. + * \param pStream stream to access. + * \param pStreamData user-defined stream data. + * \param pFileFormat file format identifier User does not need to specify it by default. + if not specified, plugin will request the file format from the stream automatically. + * \param pIOSettings client IOSettings, if not specified, a default IOSettings will be created + * \return \c true on success, \c false otherwise. + * \remarks To identify the error that occurred, inspect the status object accessed + * using the GetStatus() function. + * \remarks You do not need to give the pFileFormat if the suffix of pFileName is recognized + */ + virtual bool Initialize(FbxStream* pStream, void* pStreamData=NULL, const int pFileFormat=-1, FbxIOSettings* pIOSettings=NULL); + + /** Get the FBX version number of the FBX file. + * FBX version numbers start at 5.0.0. + * \param pMajor Version major number. + * \param pMinor Version minor number. + * \param pRevision Version revision number. + * \remarks This function must be called after FbxImporter::Initialize(). + */ + void GetFileVersion(int& pMajor, int& pMinor, int& pRevision); + + /** Get the default rendering resolution if present in the file header. + * \param pCamName Returned name of the camera. + * \param pResolutionMode Returned resolution mode. + * \param pW Returned width. + * \param pH Returned height. + * \return \c true if the default rendering settings are defined in the file, otherwise + * returns \c false with empty parameters. + */ + bool GetDefaultRenderResolution(FbxString& pCamName, FbxString& pResolutionMode, double& pW, double& pH); + + /** Get the complete file header information. + * \return valid pointer to the complete header information + */ + FbxIOFileHeaderInfo* GetFileHeaderInfo(); + + /** \enum EStreamOptionsGeneration Stream options identifiers. + * - \e eParseFile Parse the file + * - \e eDoNotParseFile Do not parse the file. + */ + enum EStreamOptionsGeneration + { + eParseFile, // Parse the file + eDoNotParseFile // Do not parse the file (fast) + }; + + /** Read the currently opened file header to retrieve information related to takes. + * \param pStreamOptionsGeneration Stream options identifier. + * \return \c true on success, \c false otherwise. + * \remarks Caller gets ownership of the returned structure. + */ + bool GetImportOptions(EStreamOptionsGeneration pStreamOptionsGeneration = eParseFile); + + /** Read the currently opened file header to retrieve information related to takes. + * \param pFbxObject Target FBX file. + * \return \c true on success, \c false otherwise. + * \remarks Caller gets ownership of the returned structure. + */ + bool GetImportOptions(FbxIO* pFbxObject); + + /** Import the currently opened file into a scene. + * \param pDocument Document to fill with file content. + * \param pNonBlocking If true, the import process will be executed in a new thread, allowing it to be non-blocking. + To determine if the import finished, refer to the function IsImporting(). + * \return \c true on success, \c false otherwise. + * \remarks To identify the error that occurred, inspect the status object accessed + * using the GetStatus() function. + * If the imported file is password protected and the password is not + * set or wrong, the FbxStatus object access with GetStatus() will be set with + * FbxStatus::ePasswordError. + */ + bool Import(FbxDocument* pDocument, bool pNonBlocking=false); + +#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) + /** Check if the importer is currently importing. + * \param pImportResult This parameter, after the import finished, will contain the result of the import success or failure. + * \return Return true if the importer is currently importing. + * \remarks This function will always return false if Import() was called with pNonBlocking set to false. + * This function should be used only in the context of pNonBlocking set to true. + * It is very important to periodically check if the import finished using this function, + * since it will also free up the thread's allocations when its done. + */ + bool IsImporting(bool& pImportResult); +#endif /* !FBXSDK_ENV_WINSTORE && !defined(FBXSDK_ENV_EMSCRIPTEN) */ + + /** Get the progress status in non-blocking mode. + * \param pStatus Optional current status string. + * \return Percentage of the finished workload + */ + float GetProgress(FbxString* pStatus=NULL); + + /** Register a callback function for progress reporting in single thread mode. + * \param pCallback Pointer of the callback function. + * \param pArgs pointer to the arguments passed to the callback function. + */ + void SetProgressCallback(FbxProgressCallback pCallback, void* pArgs=NULL); + + /** Explicitly set the embedding extraction folder. If this is never called, the FBX SDK will determine the best folder to extract embedded files. + * \param pExtractFolder The file path name where the embedded files should be extracted. + */ + void SetEmbeddingExtractionFolder(const char* pExtractFolder); + + /** Retrieve the current folder destination where the embedded files will be extracted. This might not be initialized until file I/O is performed. + */ + const char* GetEmbeddingExtractionFolder(); + + /** Access to a IOSettings object. + * \return The pointer to IOSettings or \c NULL \c if the object has not been allocated. + */ + FbxIOSettings* GetIOSettings(); + + /** Set the IOSettings pointer + * \param pIOSettings Point to a FbxIOSettings object. + */ + void SetIOSettings(FbxIOSettings* pIOSettings); + + /** Set the password. + * All subsequently imported files are opened with the given password. + * \param pPassword Password string. + */ + void SetPassword(char* pPassword); + + /** + * \name Animation Stack Description Access + * \see FbxAnimStack + */ + //@{ + + /** Get the number of available animation stacks in the file. + * \return Number of animation stacks. + * \remarks This function must be called after FbxImporter::Initialize(). + */ + int GetAnimStackCount(); + + /** Get the take information about an available take. + * Use the returned reference to a FbxTakeInfo object to set whether the indexed take is imported. + * \param pIndex Index of the requested take. + * \return Take information or \c NULL if function failed. + * \remarks This function must be called after FbxImporter::Initialize(). + */ + FbxTakeInfo* GetTakeInfo(int pIndex); + + /** Return the active animation stack name. + * \return Active animation stack name if there is one, otherwise returns an empty string. + * \remarks This function must be called after FbxImporter::Initialize(). + */ + FbxString GetActiveAnimStackName(); + + //@} + + /** + * \name Scene Description Access + */ + //@{ + + /** Get the scene info. + * \return Pointer to the scene info or \c NULL if no scene information + * is available in the file. + */ + FbxDocumentInfo* GetSceneInfo(); + + //@} + /** + * \name File Format + */ + //@{ + + /** Returns the index of the reader (FbxReader) associated with the file format. + This index is considered the identifier of the file format. + The array of registered readers can't be retrieved. + \return Index of the registered FbxReader associated with the file format. + If no reader found return -1. + \remarks According to the number of readers registered this value can change + for the same reader between SDK Manager instantiations. + */ + int GetFileFormat (); + + /** \return \c true if the file format is a recognized FBX format. + */ + bool IsFBX(); + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxFile* GetFile(); + FbxStream* GetStream(); + void* GetStreamData(); + + void ParseForGlobalSettings(bool pState); + void ParseForStatistics(bool pState); + bool GetAxisInfo(FbxAxisSystem* pAxisSystem, FbxSystemUnit* pSystemUnits); + bool GetStatistics(FbxStatistics* pStatistics); + bool GetFrameRate(FbxTime::EMode &pTimeMode); + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void Destruct(bool pRecursive); + virtual void SetOrCreateIOSettings(FbxIOSettings* pIOSettings, bool pAllowNULL); + + void Reset(); + bool FileOpen(FbxFile* pFile = NULL); + bool FileOpen(FbxStream* pStream, void* pStreamData); + void FileClose(); + + void GetImportOptionsInfo(); + bool IsNativeExtension (); + + //These two internal functions are only used to read old character pose data + bool Initialize(FbxFile* pFile, const int pFileFormat=-1, FbxIOSettings* pIOSettings=NULL); + bool Import(FbxDocument* pDocument, FbxIO* pFbxObject); + +private: + bool ImportProcess(FbxDocument* pDocument); + + int mFileFormat; + FbxReader* mReader; + FbxString mExtractFolder; + bool mParseForGlobalSettings; + FbxAxisSystem mAxisSystem; + FbxSystemUnit mSystemUnits; + FbxTime::EMode mFrameRate; + bool mParseForStatistics; + FbxStatistics mStatistics; +#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) + FbxThread* mImportThread; + FbxImportThreadArg* mImportThreadArg; + bool mImportThreadResult; + bool mIsThreadImporting; +#endif /* !FBXSDK_ENV_WINSTORE && !defined(FBXSDK_ENV_EMSCRIPTEN) */ + FbxProgress mProgress; + FbxFile* mFile; + FbxStream* mStream; + void* mStreamData; + bool mImportOptionsDone; + FbxArray mTakeInfo; + FbxDocumentInfo* mSceneInfo; + FbxString mActiveAnimStackName; + int mMajorVersion; + int mMinorVersion; + int mRevisionVersion; + FbxIOFileHeaderInfo* mHeaderInfo; + FbxIOSettings* mIOSettings; + bool mClientIOSettings; + + //For Initialize and Import + friend class FbxReaderFbx5; + friend class FbxReaderFbx6; + friend struct FbxReaderFbx7_Impl; + + friend void ImportThread(void*); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +//! Event that is emitted to plugins before a FBX file has been imported. +class FBXSDK_DLL FbxEventPreImport : public FbxEvent +{ + FBXSDK_EVENT_DECLARE(FbxEventPreImport); +public: + inline FbxEventPreImport( FbxDocument* pDocument ) : mDocument(pDocument) {}; + + //! The document the FBX file is to be imported into. + FbxDocument* mDocument; +}; + +//! Event that is emitted to plugins after a FBX file has been imported. +class FBXSDK_DLL FbxEventPostImport : public FbxEvent +{ + FBXSDK_EVENT_DECLARE(FbxEventPostImport); +public: + inline FbxEventPostImport( FbxDocument* pDocument ) : mDocument(pDocument) {}; + + //! The imported document + FbxDocument* mDocument; +}; + +#include + +#endif /* _FBXSDK_FILEIO_IMPORTER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxiobase.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxiobase.h new file mode 100644 index 00000000..fa99fad5 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxiobase.h @@ -0,0 +1,67 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxiobase.h +#ifndef _FBXSDK_FILEIO_IO_BASE_H_ +#define _FBXSDK_FILEIO_IO_BASE_H_ + +#include + +#include +#include + +#include + +#define FBXSDK_IO_END_NODE_STR "_End" + +/** \brief Base class for FBX file importer and exporter. + * \nosubgrouping + */ +class FBXSDK_DLL FbxIOBase : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxIOBase, FbxObject); + +public: + /** Initializes the object. + * \param pFileName The name of the file to access. + * \param pFileFormat Unused in this class implementation. + * \param pIOSettings Unused in this class implementation. + * \return \c True if successful, returns \c False otherwise. + * \remarks To identify the error, inspect \e mStatus. + */ + virtual bool Initialize(const char *pFileName, int pFileFormat=-1, FbxIOSettings* pIOSettings=NULL); + + /** Returns the file name. + * \return The file name or an empty string if no filename has been set. + */ + virtual FbxString GetFileName(); + + //! Get the status object containing the success or failure state. + FbxStatus& GetStatus() { return mStatus; } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void Construct(const FbxObject* pFrom); + + int DetectReaderFileFormat(const char *pFileName); + int DetectWriterFileFormat(const char *pFileName); + + FbxStatus mStatus; + FbxString mFilename; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_FILEIO_IO_BASE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxiopluginregistry.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxiopluginregistry.h new file mode 100644 index 00000000..1c274049 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxiopluginregistry.h @@ -0,0 +1,305 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxiopluginregistry.h +#ifndef _FBXSDK_FILEIO_IO_PLUGIN_REGISTRY_H_ +#define _FBXSDK_FILEIO_IO_PLUGIN_REGISTRY_H_ + +#include + +#include +#include + +#include + +/** \brief This class serves as the registrar for file formats. + * A file format must be registered when it is used by the FBX SDK. + * + * This class also lets you create and read formats other than FBX SDK native formats. + * Users of FBX SDK can write their own plug-ins to read or write arbitrary file formats. + * Once their plug-ins are registered in this class, FBX SDK is able to read or write + * these file formats. + * + * Each FbxManager has a unique FbxIOPluginRegistry. To get an instance of this class: + * \code + * FbxIOPluginRegistry* registry = manager->GetIOPluginRegistry(); + * \endcode + * \see FbxManager::GetIOPluginRegistry() + */ +class FBXSDK_DLL FbxIOPluginRegistry +{ +public: + + /** Constructor. + */ + FbxIOPluginRegistry(); + + /** Destructor. + */ + virtual ~FbxIOPluginRegistry(); + +#ifndef FBXSDK_ENV_WINSTORE + /** Registers a Reader from a plug-in path. + * \param pPluginPath The plug-in path. + * \param pFirstPluginID Contains the ID of the first plug-in found. + * \param pRegisteredCount Contains the number of registered Readers. + * \param pOverride Override any existing writer that is using the same extension. + */ + void RegisterReader(const char* pPluginPath, + int& pFirstPluginID, + int& pRegisteredCount, + bool pOverride = false); +#endif /* !FBXSDK_ENV_WINSTORE */ + + /** Registers a Reader. + * \param pCreateF The function that creates the Reader to be registered. + * \param pInfoF The function that provides information about the Reader file format, such as the file extension and description. + * \param pFirstPluginID Contains the ID of the first plug-in found. + * \param pRegisteredCount Contains the number of registered Readers. + * \param pIOSettingsFillerF The function that fills the IO settings for the Reader. + * \param pOverride Override any existing writer that is using the same extension. + */ + void RegisterReader(FbxReader::CreateFuncType pCreateF, + FbxReader::GetInfoFuncType pInfoF, + int& pFirstPluginID, + int& pRegisteredCount, + FbxReader::IOSettingsFillerFuncType pIOSettingsFillerF = NULL, + bool pOverride = false); + +#ifndef FBXSDK_ENV_WINSTORE + /** Registers a Writer from a plug-in path + * \param pPluginPath The plug-in path. + * \param pFirstPluginID Contains the ID of the first plug-in found. + * \param pRegisteredCount Contains the number of registered Writers. + * \param pOverride Override any existing writer that is using the same extension. + */ + void RegisterWriter(const char* pPluginPath, + int& pFirstPluginID, + int& pRegisteredCount, + bool pOverride = false); +#endif /* !FBXSDK_ENV_WINSTORE */ + + /** Registers a Writer. + * \param pCreateF The function that creates the Writer to be registered. + * \param pInfoF The function that provides information about the Writer file format, such as the file extension, description and version. + * \param pFirstPluginID Contains the ID of the first plug-in found. + * \param pRegisteredCount Contains the number of registered Writers. + * \param pIOSettingsFillerF The function that fills the IO settings for the Writer. + * \param pOverride Override any existing writer that is using the same extension. + */ + void RegisterWriter(FbxWriter::CreateFuncType pCreateF, + FbxWriter::GetInfoFuncType pInfoF, + int& pFirstPluginID, + int& pRegisteredCount, + FbxWriter::IOSettingsFillerFuncType pIOSettingsFillerF = NULL, + bool pOverride = false); + + /** Creates a Reader. + * \param pManager The SDK Manager where the Reader is created. + * \param pImporter The importer that holds the created Reader. + * \param pPluginID The Reader ID. + */ + FbxReader* CreateReader(FbxManager& pManager, + FbxImporter& pImporter, + int pPluginID) const; + + /** Creates a Writer. + * \param pManager The SDK Manager where the Writer is created. + * \param pExporter The exporter that holds the created Writer. + * \param pPluginID The Writer ID. + */ + FbxWriter* CreateWriter(FbxManager& pManager, + FbxExporter& pExporter, + int pPluginID) const; + + /** Searches for the Reader ID by the file extension. + * \param pExt The file extension. + * \return The Reader ID if found, if not found, returns -1 + */ + int FindReaderIDByExtension(const char* pExt) const; + + /** Searches for the Writer ID by the file extension. + * \param pExt The file extension. + * \return The Writer ID if found, if not found, returns -1 + */ + int FindWriterIDByExtension(const char* pExt) const; + + /** Searches for the Reader ID by the file format description. + * \param pDesc The file format description. + * \return The Reader ID if found, if not found, returns -1 + */ + int FindReaderIDByDescription(const char* pDesc) const; + + /** Searches for the Writer ID by the file format description. + * \param pDesc The file format description. + * \return The Writer ID if found, if not found, returns -1. + */ + int FindWriterIDByDescription(const char* pDesc) const; + + /** Verifies if the file format of the Reader is FBX. + * \param pFileFormat The file format identifier. + * \return \c True if the file format of the Reader is FBX, return \c false otherwise.. + */ + bool ReaderIsFBX(int pFileFormat) const; + + /** Verifies if the file format of the Writer is FBX. + * \param pFileFormat The file format identifier. + * \return \c True if the file format of the Writer is FBX, return \c false otherwise. + */ + bool WriterIsFBX(int pFileFormat) const; + + /** Verifies if the file format of the Reader is genuine (internal). + * \param pFileFormat The file format identifier. + * \return \c True if the file format of the Reader is FBX, DXF, 3DS, OBJ and DAE, return \c false otherwise. + */ + bool ReaderIsGenuine(int pFileFormat) const; + + /** Verifies if the file format of the Writer is genuine (internal). + * \param pFileFormat The file format identifier. + * \return \c True if the file format of the Writer is FBX, DXF, 3DS, OBJ and DAE, return \c false otherwise. + */ + bool WriterIsGenuine(int pFileFormat) const; + + /** Returns the number of file formats that can be imported. + * \return The number of importable formats. + */ + int GetReaderFormatCount() const; + + /** Returns the number of file formats that can be exported. + * \return The number of exportable formats. + * \remarks Multiple identifiers for the same format count as + * different file formats. For example, eFBX_BINARY, eFBX_ASCII and eFBX_ENCRYPTED + * are counted as three separate file formats. + */ + int GetWriterFormatCount() const; + + /** Returns the description of an importable file format. + * \param pFileFormat The file format identifier. + * \return A pointer to the character representation of the description. + */ + const char* GetReaderFormatDescription(int pFileFormat) const; + + /** Returns the description of an exportable file format. + * \param pFileFormat The file format identifier. + * \return A pointer to the character representation of the description. + */ + const char* GetWriterFormatDescription(int pFileFormat) const; + + /** Returns an importable file format's file extension. + * \param pFileFormat The file format identifier. + * \return A pointer to the character representation of the file extension. + */ + const char* GetReaderFormatExtension(int pFileFormat) const; + + /** Returns an exportable file format's file extension. + * \param pFileFormat The file format identifier. + * \return A pointer to the character representation of the file extension. + */ + const char* GetWriterFormatExtension(int pFileFormat) const; + + /** Returns a list of the writable file format versions. + * \param pFileFormat The file format identifier. + * \return A pointer to a list of user-readable strings that represent the versions. + */ + char const* const* GetWritableVersions(int pFileFormat) const; + + /** Detects the import (reader) file format specified for the file. + * \param pFileName The file whose file format is to be determined. + * \param pFileFormat It equals the file format identifier if this function returns \c true. If this function returns \c false, it is unmodified. + * \return \c True if the file has been determined successfully, + * returns \c false otherwise. + * \remarks This function attempts to detect the specified file's file format based on the file extension and, + * in some cases, its content. This function may not be able to determine all file formats. + * Use this function as a helper before calling \c SetFileFormat(). + * \note The file must be unlocked (already open) for this function to succeed. + */ + bool DetectReaderFileFormat(const char* pFileName, int& pFileFormat) const; + + /** Detects the export (writer) file format specified for the file. + * \param pFileName The file whose file format is to be determined. + * \param pFileFormat It equals the file format identifier if this function returns \c true. If this function returns \c false, it is unmodified. + * \return \c True if the file has been determined successfully, + * returns \c false otherwise. + * \remarks This function attempts to detect the specified file's file format based on the file extension and, + * in some cases, its content. This function may not be able to determine all file formats. + * Use this function as a helper before calling \c SetFileFormat(). + * \note The file must be unlocked (already open) for this function to succeed. + */ + bool DetectWriterFileFormat(const char* pFileName, int& pFileFormat) const; + + /** Returns the file format of the native Reader. + * \return The ID of the native Reader's file format. + */ + int GetNativeReaderFormat(); + + /** Returns the file format of the native Writer. + * \return The ID of the native Writer's file format. + */ + int GetNativeWriterFormat(); + + /** Fills the IO Settings for all registered readers. + * \param pIOS The IO settings to be filled. + */ + void FillIOSettingsForReadersRegistered(FbxIOSettings & pIOS); + + /** Fills the IO Settings for all registered writers. + * \param pIOS The IO settings to be filled. + */ + void FillIOSettingsForWritersRegistered(FbxIOSettings & pIOS); + + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + void RegisterInternalIOPlugins(); + + struct ReaderPluginEntry + { + ReaderPluginEntry(const char* pExtension, const char* pDescription, FbxReader::CreateFuncType pCreatorFunction, int pBaseID, + FbxReader::IOSettingsFillerFuncType pIOSettingsFillerFunction=NULL); + + const char* mExtension; + const char* mDescription; + FbxReader::CreateFuncType mCreatorFunction; + FbxReader::IOSettingsFillerFuncType mIOSettingsFillerFunction; + int mBaseID; + bool mIsFBX; + bool mIsInternalPlugin; + }; + + struct WriterPluginEntry + { + WriterPluginEntry(const char* pExtension, const char* pDescription, char const* const* pVersions, FbxWriter::CreateFuncType pCreatorFunction, int pBaseID, + FbxWriter::IOSettingsFillerFuncType pIOSettingsFillerFunction=NULL); + + const char* mExtension; + const char* mDescription; + char const* const* mVersions; + FbxWriter::CreateFuncType mCreatorFunction; + FbxWriter::IOSettingsFillerFuncType mIOSettingsFillerFunction; + int mBaseID; + bool mIsFBX; + bool mIsInternalPlugin; + }; + + FbxArray mReaders; + FbxArray mWriters; + int mNativeReaderFormat; + int mNativeWriterFormat; + bool mInternalPluginMode; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_FILEIO_IO_PLUGIN_REGISTRY_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxiosettings.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxiosettings.h new file mode 100644 index 00000000..af456c2f --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxiosettings.h @@ -0,0 +1,584 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxiosettings.h +#ifndef _FBXSDK_FILEIO_IO_SETTINGS_H_ +#define _FBXSDK_FILEIO_IO_SETTINGS_H_ + +#include + +#include +#include + +#include + +//Undefine the macro mkdir, since it conflict with function mkdir in Qt\4.2.3\src\corelib\io\qdir.h +#if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(mkdir) + #undef mkdir +#endif + +#define IOSVisible true +#define IOSHidden false + +#define IOSSavable true +#define IOSNotSavable false + +#define IOSEnabled true +#define IOSDisabled false + +#define IOSBinary 0 +#define IOSASCII 1 + +class FbxManager; +class FbxIOSettings; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +class FbxIOPropInfo +{ +public: + FbxIOPropInfo(); + ~FbxIOPropInfo(); + + void* UIWidget; // UI widget for showing the property + void* cbValueChanged; // call back when value changed + void* cbDirty; // call back when value changed + FbxStringList labels; // list of labels in many languages +}; + +class FBXSDK_DLL FbxIOInfo +{ +public: + enum EImpExp {eImport, eExport}; + + FbxIOInfo(); + + void Reset(EImpExp pImpExp); + void SetTimeMode(FbxTime::EMode pTimeMode, double pCustomFrameRate = 0.0); + FbxTime::EMode GetTimeMode(){ return mTimeMode; } + FbxTime GetFramePeriod(); + void SetASFScene(FbxObject* pASFScene, bool pASFSceneOwned = false); + FbxObject* GetASFScene(){ return mASFScene; } + void Set_IOS(FbxIOSettings* pIOS){ios = pIOS;} + void SetImportExportMode(EImpExp pImpExp){mImpExp = pImpExp;} + +private: + FbxTime::EMode mTimeMode; + FbxObject* mASFScene; + EImpExp mImpExp; + FbxIOSettings* ios; +}; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ + +/** FbxIOSettings is a collection of properties, arranged as a tree, that + * can be used by FBX file readers and writers to represent import and export + * options. + * It is primarily used by FBX importers (FbxImporter) and FBX exporter (FbxExporter) + * when reading or writing data from or to a disk. + * The FBX plugins of some Autodesk products expose a UI representing the content of those options + * to let users see and choose options when an import or export operation is about to be done. + * The tree of options is extensible. + * + * Options can be saved or loaded from an XML file using the functions: + * ReadXMLFile(), WriteXMLFile(), WriteXmlPropToFile(). This functionality can be useful + * for plugins that use preset files. + * + * An instance of FbxIOSettings must be created to be used before an import/export operation. + * When a new FbxIOSettings instance is created, all options are created with default values. + * The new instance of FbxIOSettings can be passed to the FbxManager, + * this way that instance will be used by all import/export operations. + * + * Ex: to set an instance of FbxIOSettings to the FbxManager + * + * \code + * // First create a new instance of FbxIOSettings + * FbxIOSettings * ios = FbxIOSettings::Create((FbxManager *) mManager, IOSROOT); + * // then set the FbxManager + * mManager->SetIOSettings(ios); + * \endcode + * + * It's also possible for a developer to create another instance + * of FbxIOSettings, set particular options and use it for import/export operation. + * + * Ex: to set an instance of FbxIOSettings to a FbxImporter/FbxExporter + * \code + * mImporter->SetIOSettings(ios); / mExporter->SetIOSettings(ios); + * \endcode + * + * A schematic view of the FbxIOSettings tree : + * + * \verbatim + + OPTION_GROUP_ROOT (IOSROOT) + | + | + ________________________________________ + | | + -OPTION_GROUP_EXPORT (IOSN_EXPORT) -OPTION_GROUP_IMPORT (IOSN_IMPORT) + | | + -OPTION_GROUP_A -OPTION_GROUP_A + | | | | + | -OPTION_A | -OPTION_A + | -OPTION_B | -OPTION_B + | | + -OPTION_GROUP_B -OPTION_GROUP_B + | | | | + | -OPTION_GROUP_A | -OPTION_GROUP_A + | | | | | | + | | -OPTION_A | | -OPTION_A + | | -OPTION_B | | -OPTION_B + | | | | + | -OPTION_GROUP_B | -OPTION_GROUP_B + | | | | + | -OPTION_A | -OPTION_A + | -OPTION_B | -OPTION_B + | | + -OPTION_GROUP_C -OPTION_GROUP_C + | | + -OPTION_A -OPTION_A + + \endverbatim + * + * Any group of options can contain sub options, or group of sub options. + * To access an option value, we must pass the full path to the Get/Set functions + * Ex: + * \code + * ios->GetBoolProp("Import|IncludeGrp|Animation", true); // the root node name is not required + * \endcode + * + * All options path are defined in the file kfbxiosettingspath.h to ease the access of any options. + * Then "Import|IncludeGrp|Animation" == IMP_ANIMATION since IMP_ANIMATION is defined in kfbxiosettingspath.h + * All options defined path start with "IMP_" for import branch or "EXP_" for export branch. + * + * We strongly encourage to use the defined path in kfbxiosettingspath.h, this way if the parent group of an option is changed + * the change occur only in kfbxiosettingspath.h not in the code elsewhere. + * + * Ex: to get the boolean import "Animation" option + * \code + * bool anim = ios->GetBoolProp(IMP_ANIMATION, true); // will return true if not found, since we pass true as second param + * \endcode + * + * Ex: to set the boolean import "Animation" option to false + * \code + * ios->SetBoolProp(IMP_ANIMATION, false); + * \endcode + * + * Ex: to create a new option group under the "Import" branch + * \code + * // get the parent "Import" property + * FbxProperty import_Group = ios->GetProperty( IOSN_IMPORT ); // IOSN_IMPORT is defined as "Import" in kfbxiosettingspath.h + * if(import_Group.IsValid()) // check if we have found the IOSN_IMPORT parent option + * { + * // add a new group of options "myOptionGroup" + * FbxProperty myOptionGrp = ios->AddPropertyGroup(import_Group, "myOptionGroup", FbxStringDT, "My Option Group UI Label"); + * } + * \endcode + * + * Ex: to create a new boolean option under the "myOptionGroup" + * \code + * FbxProperty myOptionGrp = ios->GetProperty( "Import|myOptionGroup" ); // can also use IOSN_IMPORT|"myOptionGroup" + * if(myOptionGrp.IsValid()) // check if we have found the "myOptionGroup" + * { + * bool defaultValue = true; + * FbxProperty myOption = ios->AddProperty(myOptionGrp, "myOptionName", FbxBoolDT, "My Option UI label" , &defaultValue, eFbxBool); + * } + * \endcode + * + * Ex: to set some flags to myOption + * \code + * FbxProperty myOption = ios->GetProperty( "Import|myOptionGroup|myOptionName" ); + * if(myOption.IsValid()) + * { + * myOPtion.ModifyFlag(FbxPropertyFlags::eUIHidden, true); // to make that option not visible to the UI + * myOPtion.ModifyFlag(FbxPropertyFlags::eNotSavable, true); // to avoid the read/save of that option in XML file + * } + * \endcode + */ +class FBXSDK_DLL FbxIOSettings : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxIOSettings, FbxObject); + +public: + //! Supported languages enumeration list + enum ELanguage + { + eENU, //!< 409 English - United States + eDEU, //!< 407 German - Germany + eFRA, //!< 40c French - France + eJPN, //!< 411 Japanese - Japan + eKOR, //!< 412 Korean(Extended Wansung) - Korea + eCHS, //!< 804 Chinese - PRC + eLanguageCount //!< Total language count + }; + + /** Add a property group under the root prop to be a direct child of IOSROOT + * \param pName + * \param pDataType + * \param pLabel + * \return a new FbxProperty created + */ + FbxProperty AddPropertyGroup(const char* pName, const FbxDataType& pDataType=FbxDataType(), const char* pLabel=""); + + /** Add a property group under another parent property + * \param pParentProperty + * \param pName + * \param pDataType + * \param pLabel (optional, used by the UI as widget label) + * \param pVisible (used by the UI to show or not that property) + * \param pSavable (to enable a read & write to an XML file) + * \param pEnabled (used by the widget UI to show enabled or disabled) + * \return a new FbxProperty created + */ + FbxProperty AddPropertyGroup(const FbxProperty& pParentProperty, const char* pName, const FbxDataType& pDataType = FbxDataType(), + const char* pLabel = "", bool pVisible = true, bool pSavable = true, bool pEnabled = true ); + + /** Add a property under another parent property with a value to set + * \param pParentProperty + * \param pName + * \param pDataType + * \param pLabel (optional, used by the UI as widget label) + * \param pValue + * \param pVisible (used by the UI to show or not that property) + * \param pSavable (to enable a read & write to an XML file) + * \param pEnabled (used by the widget UI to show enabled or disabled) + * \return a new FbxProperty created + */ + FbxProperty AddProperty(const FbxProperty& pParentProperty, const char* pName, const FbxDataType& pDataType = FbxDataType(), + const char* pLabel = "", const void* pValue = NULL, bool pVisible = true, + bool pSavable = true, bool pEnabled = true ); + + /** Add a property under another parent property with a value to set and a min max values + * \param pParentProperty + * \param pName + * \param pDataType + * \param pLabel (optional, used by the UI as widget label) + * \param pValue + * \param pMinValue + * \param pMaxValue + * \param pVisible (used by the UI to show or not that property) + * \param pSavable (to enable a read & write to an XML file) + * \param pEnabled (used by the widget UI to show enabled or disabled) + * \return a new FbxProperty created + * \remarks Normally used with numeric properties Ex: integer, float, double, etc. + */ + FbxProperty AddPropertyMinMax(const FbxProperty& pParentProperty, const char* pName, const FbxDataType& pDataType = FbxDataType(), + const char* pLabel = "", const void* pValue = NULL, const double* pMinValue = NULL, const double* pMaxValue = NULL, + bool pVisible = true, bool pSavable = true, bool pEnabled = true ); + + + /** Get a property using the full path in the tree ex: "Export|IncludeGrp|Animation" + * \param pName + * \return a FbxProperty found + * \remarks We strongly encourage to use the defined path in kfbxiosettingspath.h + * ex: EXP_ANIMATION == "Export|IncludeGrp|Animation" + */ + FbxProperty GetProperty(const char* pName) const; + + /** Get a property using a short path found under the parent property. + * \param pParentProperty + * \param pName + * \return a FbxProperty found + * \remarks This is a faster way to access a property when the parent is known + */ + FbxProperty GetProperty(const FbxProperty& pParentProperty, const char* pName) const; + + /** Get a bool property value using the full path + * \param pName + * \param pDefValue Value returned if the property is not found + * \return true or false + */ + bool GetBoolProp(const char* pName, bool pDefValue) const; + + /** set a bool property value using the full path + * \param pName + * \param pValue + */ + void SetBoolProp(const char* pName, bool pValue); + + /** Get a double property value using the full path + * \param pName + * \param pDefValue Value returned if the property is not found + * \return a double + */ + double GetDoubleProp(const char* pName, double pDefValue) const; + + /** Set a double property using the full path + * \param pName + * \param pValue + */ + void SetDoubleProp(const char* pName, double pValue); + + /** Get a int property value using the full path + * \param pName + * \param pDefValue Value returned if the property is not found + * \return a int + */ + int GetIntProp(const char* pName, int pDefValue) const; + + /** Set a int property value using the full path + * \param pName + * \param pValue + */ + void SetIntProp(const char* pName, int pValue); + + /** Get a FbxTime property value using the full path + * \param pName + * \param pDefValue Value returned if the property is not found + */ + FbxTime GetTimeProp(const char* pName, FbxTime pDefValue) const; + + /** Set a FbxTime property value using the full path + * \param pName + * \param pValue + * \return a FbxTime + */ + void SetTimeProp(const char* pName, FbxTime pValue); + + /** \name Enum Properties + * An enum property is a list of FbxString and integer pairs. + * A current index value is available to get the selected pair + * of FbxString+integer + * + * Ex: Content of an enum property + * \code + * 0 -> (14, "Bird") + * 1 -> (17, "Horse") + * 2 -> (93, "Cat") + * 3 -> (45, "Dog") + * \endcode + * + * If current index is 2: the current int value is 93, + * and the current FbxString value is "Cat" + */ + + //@{ + + /** Get the FbxString at current index of an enum property using the full path. + * \param pName + * \param pDefValue Value returned if the property is not found + * \return a FbxString + */ + FbxString GetEnumProp(const char* pName, FbxString pDefValue) const; + + /** Get the integer at current index of an enum property using the full path. + * \param pName + * \param pDefValue Value returned if the property is not found + * \return a int + */ + int GetEnumProp(const char* pName, int pDefValue) const; + + /** Get the index of a FbxString from the enum property using the full path. + * \param pName + * \param pValue Return -1 if the FbxString is not found + * \return a int + */ + int GetEnumIndex(const char* pName, FbxString pValue) const; + + /** Set the current index using an existing FbxString of an enum property using the full path. + * \param pName + * \param pValue + * \remarks The current index will not change if the FbxString is not found + */ + void SetEnumProp(const char* pName, FbxString pValue); + + /** Set the current index of an enum property using the full path. + * \param pName + * \param pValue + * \remarks The current index will not change if the pValue is out of bound + */ + void SetEnumProp(const char* pName, int pValue); + + /** Remove a pair of FbxString+integer from an enum property. + * \param pName + * \param pValue The FbxString to find + * \remarks The first FbxString found from 0 index will be removed only even + * if the same FbxString exist in other index, if the current index was on the FbxString found + * the current index will be set to 0 + */ + void RemoveEnumPropValue(const char* pName, FbxString pValue); + + /** Empty all the FbxString+integer pair of the enum property + * \param pName + */ + void EmptyEnumProp(const char* pName); + + /** Check if a FbxString is present in the enum property. + * \param &pProp a ref to an enum prop + * \param &enumString ref to a FbxString to find + * \return \c true if found, \c false otherwise. + */ + bool IsEnumExist(FbxProperty& pProp, const FbxString& enumString) const; + + /** Get the enum index of a FbxString + * \param &pProp a ref to an enum prop + * \param &enumString ref to string to find + * \param pNoCase To match case sensitive or not + * \return the index found or -1 if not found + */ + int GetEnumIndex(FbxProperty& pProp, const FbxString& enumString, bool pNoCase = false) const; + //@} + + /** Set a specific flag value on a property using the full path + * \param pName + * \param propFlag + * \param pValue + * \return Always true + */ + bool SetFlag(const char* pName, FbxPropertyFlags::EFlags propFlag, bool pValue); + + /** Get a FbxString property value using the full path. + * \param pName + * \param pDefValue Value returned if the property is not found + * \return The FbxString value + */ + FbxString GetStringProp(const char* pName, FbxString pDefValue) const; + + /** Set a FbxString property value using the full path + * \param pName + * \param pValue + */ + void SetStringProp(const char* pName, FbxString pValue); + + /** \name XML Serialization Functions */ + //@{ + + /** Load the settings values from an XML file. + * \param path The path of the XML file. + * \return \c True on success, \c false otherwise. + */ + virtual bool ReadXMLFile(const FbxString& path); + + /** Write the settings values to an XML file. + * \param path The path of the XML file. + * \return \c True on success, \c false otherwise. + * \remarks The flag of the property must be FbxPropertyFlags::eNotSavable == false + */ + virtual bool WriteXMLFile(const FbxString& path); + + /** Write the settings values to an XML file. + * \param pFullPath The path of the XML file. + * \param propPath a prop Path + * \return \c True on success, \c false otherwise. + * \remarks To save only a branch of the settings ex: Import branch only + */ + bool WriteXmlPropToFile(const FbxString& pFullPath, const FbxString& propPath); + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxIOPropInfo* GetPropInfo(FbxProperty &pProp); + + ELanguage UILanguage; + FbxString GetLanguageLabel(FbxProperty& pProp); + void SetLanguageLabel(FbxProperty& pProp, FbxString& pLabel); + ELanguage Get_Max_Runtime_Language(FbxString pRegLocation); + + FbxIOInfo impInfo; + FbxIOInfo expInfo; + + static FbxString GetUserMyDocumentDir(); + void SetPropVisible(FbxProperty& pProp, bool pWithChildren, bool pVisible); + + // Read an XML file from MyDocument dir + bool ReadXmlPropFromMyDocument(const FbxString& subDir, const FbxString& filename); + + // Write property branch to an XML file in MyDocument dir + bool WriteXmlPropToMyDocument(const FbxString& subDir, const FbxString& filename, const FbxString& propPath); + + static const char* GetFileMergeDescription(int pIndex); + + enum ELoadMode + { + eCreate, /*!< Add to scene(duplicate the ones with the same name) */ + eMerge, /*!< Add to scene and update animation */ + eExclusiveMerge /*!< Update animation */ + }; + + + enum EQuaternionMode { eAsQuaternion, eAsEuler, eResample }; + enum EObjectDerivation { eByLayer, eByEntity, eByBlock }; + + enum ESysUnits + { + eUnitsUser, + eUnitsInches, + eUnitsFeet, + eUnitYards, + eUnitsMiles, + eUnitsMillimeters, + eUnitsCentimeters, + eUnitsMeters, + eUnitsKilometers + }; + + enum ESysFrameRate + { + eFrameRateUser, + eFrameRateHours, + eFrameRateMinutes, + eFrameRateSeconds, + eFrameRateMilliseconds, + eFrameRateGames15, + eFrameRateFilm24, + eFrameRatePAL25, + eFrameRateNTSC30, + eFrameRateShowScan48, + eFrameRatePALField50, + eFrameRateNTSCField60 + }; + +// Max + enum EEnveloppeSystem + { + eSkinModifier, + ePhysic, + eBonePro, + eEnveloppeSystemCount + }; + +// Max + enum EGeometryType + { + eTriangle, + eSimplifiedPoly, + ePolygon, + eNurbs, + ePatch, + eGeometryTypeCount + }; + +// Maya IK type + enum EIKType + { + eNone, + eFBIK, + eHumanIK + }; + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + virtual void Destruct(bool pRecursive); + +private: + void AddNewPropInfo(FbxProperty& pProp); + void DeletePropInfo(FbxProperty& pProp); + void DeleteAllPropInfo(FbxProperty& pProp); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_FILEIO_IO_SETTINGS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxiosettingspath.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxiosettingspath.h new file mode 100644 index 00000000..fd05c4f4 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxiosettingspath.h @@ -0,0 +1,930 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxiosettingspath.h +#ifndef _FBXSDK_FILEIO_IO_SETTINGS_PATH_H_ +#define _FBXSDK_FILEIO_IO_SETTINGS_PATH_H_ + +#include + +#include + +#define KS_BS FbxString("\\") + +#define KS_IMPORT FbxString("\\import") +#define KS_EXPORT FbxString("\\export") + +#define KS_FBX FbxString("\\FBX") // must be upper case +#define KS_PRESETS FbxString("\\Presets") +#define KS_LOG FbxString("\\Logs") +#define KS_FBXPRESETS KS_FBX + KS_PRESETS +#define KS_FBXLOGS KS_FBX + KS_LOG + +#define KS_MAYA FbxString("\\maya") +#define KS_3DSMAX FbxString("\\3dsmax") +#define KS_3DSMAX_VIZ KS_3DSMAX // use same name in "My Document" directory +#define KS_3DSMAX_DESIGN FbxString("\\3dsMaxDesign") + +#define KS_VERSION FbxString(FBXSDK_VERSION_STRING) + +#define FBXSDK_PLUGINS_REGISTRY_PATH "SOFTWARE\\Autodesk\\FBX_Plugins_" FBXSDK_VERSION_STRING + +#define IMP_FBX_PRESET_EXT "fbximportpreset" +#define EXP_FBX_PRESET_EXT "fbxexportpreset" + +#define M_E_FILENAME "Autodesk Media & Entertainment." +#define ARCH_FILENAME "Autodesk Architectural (Revit)." +#define MOBU_FILENAME "Autodesk MotionBuilder." +#define USERDEFINED_FILENAME "User defined." + +#define IMP_DIR KS_FBXPRESETS + KS_BS + KS_VERSION + KS_IMPORT +#define EXP_DIR KS_FBXPRESETS + KS_BS + KS_VERSION + KS_EXPORT + +#define LOG_VERSION_DIR KS_FBXLOGS + KS_BS + KS_VERSION + +#define MAX_LOG_VERSION_DIR KS_3DSMAX + LOG_VERSION_DIR +#define MAX_DESIGN_LOG_VERSION_DIR KS_3DSMAX_DESIGN + LOG_VERSION_DIR + +#define PRESET_VERSION_DIR KS_FBXPRESETS + KS_BS + KS_VERSION + +#define FN_LOCALIZATION_PREFIX "localization_" +#define FN_LOCALIZATION_EXT ".xlf" + +#define FN_LANGUAGE "lang.dat" +#define LANGUAGE_PATH KS_FBXPRESETS + KS_BS + KS_VERSION + KS_BS + FN_LANGUAGE + +// these defines are used for hierarchical properties names +#define IOSROOT "IOSRoot" + +#define IOSN_EXPORT "Export" +#define IOSN_IMPORT "Import" + +#define IOSN_PLUGIN_GRP "PlugInGrp" + +#define IOSN_PLUGIN_UI_WIDTH "PlugInUIWidth" +#define IOSN_PLUGIN_UI_HEIGHT "PlugInUIHeight" +#define IOSN_PLUGIN_VERSIONS_URL "PluginVersionsURL" +#define IOSN_PI_VERSION "PIVersion" + + +#define IOSN_PRESET_SELECTED "PresetSelected" + +#define IOSN_PRESETS_GRP "PresetsGrp" +#define IOSN_STATISTICS_GRP "StatisticsGrp" +#define IOSN_UNITS_GRP "UnitsGrp" +#define IOSN_INCLUDE_GRP "IncludeGrp" +#define IOSN_ADV_OPT_GRP "AdvOptGrp" +#define IOSN_AXISCONV_GRP "AxisConvGrp" +#define IOSN_CAMERA_GRP "CameraGrp" +#define IOSN_LIGHT_GRP "LightGrp" +#define IOSN_EXTRA_GRP "ExtraGrp" +#define IOSN_CONSTRAINTS_GRP "ConstraintsGrp" +#define IOSN_INPUTCONNECTIONS_GRP "InputConnectionsGrp" +#define IOSN_INFORMATION_GRP "InformationGrp" + +#define IOSN_UP_AXIS "UpAxis" +#define IOSN_UP_AXIS_MAX "UpAxisMax" +#define IOSN_ZUPROTATION_MAX "ZUProtation_max" +#define IOSN_AXISCONVERSION "AxisConversion" +#define IOSN_AUTO_AXIS "AutoAxis" +#define IOSN_FILE_UP_AXIS "FileUpAxis" + +#define IOSN_PRESETS "Presets" +#define IOSN_STATISTICS "Statistics" +#define IOSN_UNITS_SCALE "UnitsScale" +#define IOSN_TOTAL_UNITS_SCALE_TB "TotalUnitsScale" + +#define IOSN_SCALECONVERSION "ScaleConversion" +#define IOSN_MASTERSCALE "MasterScale" + +#define IOSN_DYN_SCALE_CONVERSION "DynamicScaleConversion" +#define IOSN_UNITSELECTOR "UnitsSelector" + +#define IOSN_ANIMATION "Animation" +#define IOSN_GEOMETRY "Geometry" +#define IOSN_DEFORMATION "Deformation" +#define IOSN_MARKERS "Markers" + +#define IOSN_CHARACTER "Character" +#define IOSN_CHARACTER_AS_MAYA_HIK "CharacterAsMayaHIK" +#define IOSN_CHARACTER_TYPE "CharacterType" +#define IOSN_CHARACTER_TYPE_DESC "CharacterTypeDesc" + +#define IOSN_SETLOCKEDATTRIB "LockedAttribute" +#define IOSN_TRIANGULATE "Triangulate" + +#define IOSN_MRCUSTOMATTRIBUTES "MRCustomAttributes" +#define IOSN_MESHPRIMITIVE "MeshPrimitive" +#define IOSN_MESHTRIANGLE "MeshTriangle" +#define IOSN_MESHPOLY "MeshPoly" +#define IOSN_NURB "Nurb" +#define IOSN_PATCH "Patch" +#define IOSN_BIP2FBX "Bip2Fbx" +#define IOSN_ASCIIFBX "AsciiFbx" + +#define IOSN_TAKE "Take" + +#define IOSN_GEOMETRYMESHPRIMITIVEAS "GeometryMeshPrimitiveAs" +#define IOSN_GEOMETRYMESHTRIANGLEAS "GeometryMeshTriangleAs" +#define IOSN_GEOMETRYMESHPOLYAS "GeometryMeshPolyAs" +#define IOSN_GEOMETRYNURBSAS "GeometryNurbsAs" + +#define IOSN_GEOMETRYNURBSSURFACEAS "GeometryNurbsSurfaceAs" +#define IOSN_GEOMETRYPATCHAS "GeometryPatchAs" + +#define IOSN_TANGENTS_BINORMALS "TangentsandBinormals" +#define IOSN_SMOOTH_MESH "SmoothMesh" +#define IOSN_SELECTION_SET "SelectionSet" +#define IOSN_ANIMATIONONLY "AnimationOnly" +#define IOSN_SELECTIONONLY "SelectionOnly" + +#define IOSN_BONE "Bone" +#define IOSN_BONEWIDTHHEIGHTLOCK "BoneWidthHeightLock" +#define IOSN_BONEASDUMMY "BoneAsDummy" +#define IOSN_BONEMAX4BONEWIDTH "Max4BoneWidth" +#define IOSN_BONEMAX4BONEHEIGHT "Max4BoneHeight" +#define IOSN_BONEMAX4BONETAPER "Max4BoneTaper" + +#define IOSN_REMOVE_SINGLE_KEY "RemoveSingleKey" +#define IOSN_CURVE_FILTER "CurveFilter" +#define IOSN_CONSTRAINT "Constraint" +#define IOSN_UI "UI" +#define IOSN_SHOW_UI_MODE "ShowUIMode" +#define IOSN_SHOW_WARNINGS_MANAGER "ShowWarningsManager" +#define IOSN_GENERATE_LOG_DATA "GenerateLogData" + +#define IOSN_PERF_GRP "Performance" +#define IOSN_REMOVEBADPOLYSFROMMESH "RemoveBadPolysFromMesh" +#define IOSN_META_DATA "MetaData" + +#define IOSN_CACHE_GRP "Cache" +#define IOSN_CACHE_SIZE "CacheSize" + +#define IOSN_MERGE_MODE "MergeMode" +#define IOSN_MERGE_MODE_DESCRIPTION "MergeModeDescription" +#define IOSN_ONE_CLICK_MERGE "OneClickMerge" +#define IOSN_ONE_CLICK_MERGE_TEXTURE "OneClickMergeTexture" + +#define IOSN_SAMPLINGPANEL "SamplingPanel" + +#define IOSN_FILE_FORMAT "FileFormat" +#define IOSN_FBX "Fbx" +#define IOSN_DXF "Dxf" +#define IOSN_OBJ "Obj" +#define IOSN_3DS "Max_3ds" // can't start by a number for xml node name +#define IOSN_COLLADA "Collada" + +#define IOSN_MOTION_BASE "Motion_Base" // for commond Motion Readers/Writers stream options +#define IOSN_BIOVISION_BVH "Biovision_BVH" +#define IOSN_MOTIONANALYSIS_HTR "MotionAnalysis_HTR" +#define IOSN_MOTIONANALYSIS_TRC "MotionAnalysis_TRC" +#define IOSN_ACCLAIM_ASF "Acclaim_ASF" +#define IOSN_ACCLAIM_AMC "Acclaim_AMC" +#define IOSN_VICON_C3D "Vicon_C3D" + +#define IOSN_SKINS "Skins" +#define IOSN_POINTCACHE "PointCache" +#define IOSN_QUATERNION "Quaternion" +#define IOSN_NAMETAKE "UseSceneName" + +#define IOSN_SHAPE "Shape" +#define IOSN_LIGHT "Light" +#define IOSN_LIGHTATTENUATION "LightAttenuation" +#define IOSN_CAMERA "Camera" +#define IOSN_VIEW_CUBE "ViewCube" + +#define IOSN_BINDPOSE "BindPose" + +#define IOSN_EMBEDTEXTURE_GRP "EmbedTextureGrp" +#define IOSN_EMBEDTEXTURE "EmbedTexture" +#define IOSN_EMBEDDED_FOLDER "ExtractFolder" +#define IOSN_CONVERTTOTIFF "Convert_2Tiff" + +#define IOSN_UNLOCK_NORMALS "UnlockNormals" +#define IOSN_CREASE "Crease" +#define IOSN_FINESTSUBDIVLEVEL "FinestSubdivLevel" + +#define IOSN_BAKEANIMATIONLAYERS "BakeAnimationLayers" +#define IOSN_BAKECOMPLEXANIMATION "BakeComplexAnimation" + +#define IOSN_BAKEFRAMESTART "BakeFrameStart" +#define IOSN_BAKEFRAMEEND "BakeFrameEnd" +#define IOSN_BAKEFRAMESTEP "BakeFrameStep" +#define IOSN_BAKEFRAMESTARTNORESET "BakeFrameStartNoReset" +#define IOSN_BAKEFRAMEENDNORESET "BakeFrameEndNoReset" +#define IOSN_BAKEFRAMESTEPNORESET "BakeFrameStepNoReset" + +#define IOSN_USEMATRIXFROMPOSE "UseMatrixFromPose" +#define IOSN_NULLSTOPIVOT "NullsToPivot" +#define IOSN_PIVOTTONULLS "PivotToNulls" + +#define IOSN_GEOMNORMALPERPOLY "GeomNormalPerPoly" +#define IOSN_MAXBONEASBONE "MaxBoneAsBone" +#define IOSN_MAXNURBSSTEP "MaxNurbsStep" +#define IOSN_PROTECTDRIVENKEYS "ProtectDrivenKeys" +#define IOSN_DEFORMNULLSASJOINTS "DeformNullsAsJoints" + +#define IOSN_ENVIRONMENT "Environment" + +// Note this will use IOSN_SAMPLINGRATE +#define IOSN_SAMPLINGRATESELECTOR "SamplingRateSelector" + +#define IOSN_SAMPLINGRATE "CurveFilterSamplingRate" +#define IOSN_APPLYCSTKEYRED "CurveFilterApplyCstKeyRed" +#define IOSN_CSTKEYREDTPREC "CurveFilterCstKeyRedTPrec" +#define IOSN_CSTKEYREDRPREC "CurveFilterCstKeyRedRPrec" +#define IOSN_CSTKEYREDSPREC "CurveFilterCstKeyRedSPrec" +#define IOSN_CSTKEYREDOPREC "CurveFilterCstKeyRedOPrec" +#define IOSN_APPLYKEYREDUCE "CurveFilterApplyKeyReduce" +#define IOSN_KEYREDUCEPREC "CurveFilterKeyReducePrec" +#define IOSN_APPLYKEYSONFRM "CurveFilterApplyKeysOnFrm" +#define IOSN_APPLYKEYSYNC "CurveFilterApplyKeySync" +#define IOSN_APPLYUNROLL "CurveFilterApplyUnroll" +#define IOSN_UNROLLPREC "CurveFilterUnrollPrec" +#define IOSN_UNROLLPATH "CurveFilterUnrollPath" +#define IOSN_UNROLLFORCEAUTO "CurveFilterUnrollForceAuto" + +#define IOSN_AUTOTANGENTSONLY "AutoTangentsOnly" + +#define IOSN_SMOOTHING_GROUPS "SmoothingGroups" +#define IOSN_HARDEDGES "HardEdges" +#define IOSN_EXP_HARDEDGES "expHardEdges" +#define IOSN_BLINDDATA "BlindData" +#define IOSN_INPUTCONNECTIONS "InputConnections" +#define IOSN_INSTANCES "Instances" +#define IOSN_REFERENCES "References" +#define IOSN_CONTAINEROBJECTS "ContainerObjects" +#define IOSN_BYPASSRRSINHERITANCE "BypassRrsInheritance" +#define IOSN_FORCEWEIGHTNORMALIZE "ForceWeightNormalize" +#define IOSN_SHAPEANIMATION "ShapeAnimation" +#define IOSN_SMOOTHKEYASUSER "SmoothKeyAsUser" + +#define IOSN_SCALEFACTOR "ScaleFactor" +#define IOSN_AXISCONVERSIONMETHOD "AxisConversionMethod" +#define IOSN_UPAXIS "UpAxis" +#define IOSN_SELECTIONSETNAMEASPOINTCACHE "SelectionSetNameAsPointCache" + +#define IOSN_KEEPFRAMERATE "KeepFrameRate" +#define IOSN_ATTENUATIONASINTENSITYCURVE "AttenuationAsIntensityCurve" + +#define IOSN_RESAMPLE_ANIMATION_CURVES "ResampleAnimationCurves" + +#define IOSN_TIMELINE "TimeLine" +#define IOSN_TIMELINE_SPAN "TimeLineSpan" + +#define IOSN_BUTTON_WEB_UPDATE "WebUpdateButton" +#define IOSN_BUTTON_EDIT "EditButton" +#define IOSN_BUTTON_OK "OKButton" +#define IOSN_BUTTON_CANCEL "CancelButton" +#define IOSN_MENU_EDIT_PRESET "EditPresetMenu" +#define IOSN_MENU_SAVE_PRESET "SavePresetMenu" + +#define IOSN_UIL "UILIndex" +#define IOSN_PLUGIN_PRODUCT_FAMILY "PluginProductFamily" + +#define IOSN_PLUGIN_UI_XPOS "PlugInUIXpos" +#define IOSN_PLUGIN_UI_YPOS "PlugInUIYpos" + +#define IOSN_FBX_EXTENTIONS_SDK "FBXExtentionsSDK" +#define IOSN_FBX_EXTENTIONS_SDK_WARNING "FBXExtentionsSDKWarning" + +#define IOSN_COLLADA_FRAME_COUNT "FrameCount" +#define IOSN_COLLADA_START "Start" +#define IOSN_COLLADA_TAKE_NAME "TakeName" + +#define IOSN_COLLADA_TRIANGULATE "Triangulate" +#define IOSN_COLLADA_SINGLEMATRIX "SingleMatrix" +#define IOSN_COLLADA_FRAME_RATE "FrameRate" + +#define IOSN_DXF_TRIANGULATE "Triangulate" +#define IOSN_DXF_DEFORMATION "Deformation" + +#define IOSN_DXF_WELD_VERTICES "WeldVertices" +#define IOSN_DXF_OBJECT_DERIVATION "ObjectDerivation" +#define IOSN_DXF_REFERENCE_NODE "ReferenceNode" + +#define IOSN_OBJ_REFERENCE_NODE "ReferenceNode" +#define IOSN_OBJ_TRIANGULATE "Triangulate" +#define IOSN_OBJ_DEFORMATION "Deformation" + +#define IOSN_3DS_REFERENCENODE "ReferenceNode" +#define IOSN_3DS_TEXTURE "Texture" +#define IOSN_3DS_MATERIAL "Material" +#define IOSN_3DS_ANIMATION "Animation" +#define IOSN_3DS_MESH "Mesh" +#define IOSN_3DS_LIGHT "Light" +#define IOSN_3DS_CAMERA "Camera" +#define IOSN_3DS_AMBIENT_LIGHT "AmbientLight" +#define IOSN_3DS_RESCALING "Rescaling" +#define IOSN_3DS_FILTER "Filter" +#define IOSN_3DS_SMOOTHGROUP "Smoothgroup" +#define IOSN_3DS_TAKE_NAME "TakeName" +#define IOSN_3DS_TEXUVBYPOLY "TexuvbyPoly" + +// so far, these three are for 3dsMax plug-in only +#define IOSN_ZOOMEXTENTS "ZoomExtents" +#define IOSN_GLOBAL_AMBIENT_COLOR "GlobalAmbientColor" +#define IOSN_EDGE_ORIENTATION "PreserveEdgeOrientation" + +#define IOSN_VERSIONS_UI_ALIAS "VersionsUIAlias" +#define IOSN_VERSIONS_COMP_DESCRIPTIONS "VersionsCompDescriptions" + +// FBX specific +#define IOSN_MODEL_COUNT "Model_Count" +#define IOSN_DEVICE_COUNT "Device_Count" +#define IOSN_CHARACTER_COUNT "Character_Count" +#define IOSN_ACTOR_COUNT "Actor_Count" +#define IOSN_CONSTRAINT_COUNT "Constraint_Count" +#define IOSN_MEDIA_COUNT "Media_Count" +#define IOSN_TEMPLATE "Template" +#define IOSN_PIVOT "Pivot" +#define IOSN_GLOBAL_SETTINGS "Global_Settings" +#define IOSN_MERGE_LAYER_AND_TIMEWARP "Merge_Layer_and_Timewarp" +#define IOSN_GOBO "Gobo" +#define IOSN_LINK "Link" +#define IOSN_MATERIAL "Material" +#define IOSN_TEXTURE "Texture" +#define IOSN_MODEL "Model" +#define IOSN_EMBEDDED "EMBEDDED" +#define IOSN_PASSWORD "Password" +#define IOSN_PASSWORD_ENABLE "Password_Enable" +#define IOSN_CURRENT_TAKE_NAME "Current_Take_Name" +#define IOSN_COLLAPSE_EXTERNALS "COLLAPSE EXTERNALS" +#define IOSN_COMPRESS_ARRAYS "Compress_Arrays" +#define IOSN_COMPRESS_LEVEL "Compress_Level" +#define IOSN_COMPRESS_MINSIZE "Compress_Minsize" +#define IOSN_EMBEDDED_PROPERTIES_SKIP "Embedded_Skipped_Properties" +#define IOSN_EXPORT_FILE_VERSION "ExportFileVersion" +#define IOSN_SHOW_UI_WARNING "ShowUIWarning" +#define IOSN_ADD_MATERIAL_TO_EDIT "AddMaterialToEdit" +#define IOSN_ENABLE_TEX_DISPLAY "EnableTexDisplay" +#define IOSN_PREFERED_ENVELOPPE_SYSTEM "kImportPreferedEnveloppeSystem" +#define IOSN_FIRST_TIME_RUN_NOTICE "FirstTimeRunNotice" +#define IOSN_EXTRACT_EMBEDDED_DATA "ExtractEmbeddedData" + +// internal usage +#define IOSN_USETMPFILEPERIPHERAL "UseTmpFilePeripheral" +#define IOSN_CONSTRUCTIONHISTORY "ConstructionHistory" + + +//--------------------------- +// import defined path + +#define IMP_PRESETS IOSN_IMPORT "|" IOSN_PRESETS_GRP "|" IOSN_PRESETS +#define IMP_STATISTICS IOSN_IMPORT "|" IOSN_STATISTICS_GRP "|" IOSN_STATISTICS + + +#define IMP_STATISTICS_GRP IOSN_IMPORT "|" IOSN_STATISTICS_GRP +#define IMP_PRESETS_GRP IOSN_IMPORT "|" IOSN_PRESETS_GRP +#define IMP_PLUGIN_GRP IOSN_IMPORT "|" IOSN_PLUGIN_GRP +#define IMP_INCLUDE_GRP IOSN_IMPORT "|" IOSN_INCLUDE_GRP +#define IMP_ADV_OPT_GRP IOSN_IMPORT "|" IOSN_ADV_OPT_GRP +#define IMP_FBX_EXT_SDK_GRP IOSN_IMPORT "|" IOSN_FBX_EXTENTIONS_SDK +#define IMP_FIRST_TIME_RUN_NOTICE_GRP IOSN_IMPORT "|" IOSN_FIRST_TIME_RUN_NOTICE +#define IMP_INFORMATION_GRP IOSN_IMPORT "|" IOSN_INFORMATION_GRP + +#define IMP_FIRST_TIME_RUN_NOTICE IMP_FIRST_TIME_RUN_NOTICE_GRP "|" IOSN_FIRST_TIME_RUN_NOTICE + +#define IMP_GEOMETRY IMP_INCLUDE_GRP "|" IOSN_GEOMETRY +#define IMP_ANIMATION IMP_INCLUDE_GRP "|" IOSN_ANIMATION +#define IMP_SETLOCKEDATTRIB IMP_INCLUDE_GRP "|" IOSN_SETLOCKEDATTRIB + +#define IMP_MERGE_MODE IMP_INCLUDE_GRP "|" IOSN_MERGE_MODE +#define IMP_MERGE_MODE_DESCRIPTION IMP_INCLUDE_GRP "|" IOSN_MERGE_MODE_DESCRIPTION +#define IMP_ONE_CLICK_MERGE IMP_INCLUDE_GRP "|" IOSN_ONE_CLICK_MERGE +#define IMP_ONE_CLICK_MERGE_TEXTURE IMP_INCLUDE_GRP "|" IOSN_ONE_CLICK_MERGE_TEXTURE + +#define IMP_ADD_MATERIAL_TO_EDIT IMP_INCLUDE_GRP "|" IOSN_ADD_MATERIAL_TO_EDIT +#define IMP_ENABLE_TEX_DISPLAY IMP_INCLUDE_GRP "|" IOSN_ENABLE_TEX_DISPLAY +#define IMP_PREFERED_ENVELOPPE_SYSTEM IMP_INCLUDE_GRP "|" IOSN_PREFERED_ENVELOPPE_SYSTEM + +#define IMP_CAMERA_GRP IMP_INCLUDE_GRP "|" IOSN_CAMERA_GRP +#define IMP_LIGHT_GRP IMP_INCLUDE_GRP "|" IOSN_LIGHT_GRP +#define IMP_EMBEDDED_GRP IMP_INCLUDE_GRP "|" IOSN_EMBEDTEXTURE +#define IMP_EXTRACT_FOLDER IMP_EMBEDDED_GRP "|" IOSN_EMBEDDED_FOLDER + +#define IMP_LIGHT IMP_LIGHT_GRP "|" IOSN_LIGHT +#define IMP_ENVIRONMENT IMP_LIGHT_GRP "|" IOSN_ENVIRONMENT +#define IMP_CAMERA IMP_CAMERA_GRP "|" IOSN_CAMERA +#define IMP_VIEW_CUBE IMP_INCLUDE_GRP "|" IOSN_VIEW_CUBE + +// so far, this one is for 3dsMax plug-in only +#define IMP_ZOOMEXTENTS IMP_INCLUDE_GRP "|" IOSN_ZOOMEXTENTS +#define IMP_GLOBAL_AMBIENT_COLOR IMP_LIGHT_GRP "|" IOSN_GLOBAL_AMBIENT_COLOR + +#define IMP_CURVEFILTERS IMP_ANIMATION "|" IOSN_CURVE_FILTER +#define IMP_SAMPLINGPANEL IMP_ANIMATION "|" IOSN_SAMPLINGPANEL + +#define IMP_DEFORMATION IMP_ANIMATION "|" IOSN_DEFORMATION +#define IMP_BONE IMP_ANIMATION "|" IOSN_BONE +#define IMP_ATTENUATIONASINTENSITYCURVE IMP_ANIMATION "|" IOSN_ATTENUATIONASINTENSITYCURVE + +#define IMP_EXTRA_GRP IMP_ANIMATION "|" IOSN_EXTRA_GRP + +#define IMP_TAKE IMP_EXTRA_GRP "|" IOSN_TAKE +#define IMP_KEEPFRAMERATE IMP_EXTRA_GRP "|" IOSN_KEEPFRAMERATE +#define IMP_TIMELINE IMP_EXTRA_GRP "|" IOSN_TIMELINE +#define IMP_TIMELINE_SPAN IMP_EXTRA_GRP "|" IOSN_TIMELINE_SPAN +#define IMP_BAKEANIMATIONLAYERS IMP_EXTRA_GRP "|" IOSN_BAKEANIMATIONLAYERS +#define IMP_MARKERS IMP_EXTRA_GRP "|" IOSN_MARKERS +#define IMP_QUATERNION IMP_EXTRA_GRP "|" IOSN_QUATERNION +#define IMP_PROTECTDRIVENKEYS IMP_EXTRA_GRP "|" IOSN_PROTECTDRIVENKEYS +#define IMP_DEFORMNULLSASJOINTS IMP_EXTRA_GRP "|" IOSN_DEFORMNULLSASJOINTS +#define IMP_NULLSTOPIVOT IMP_EXTRA_GRP "|" IOSN_NULLSTOPIVOT +#define IMP_POINTCACHE IMP_EXTRA_GRP "|" IOSN_POINTCACHE +#define IMP_SHAPEANIMATION IMP_EXTRA_GRP "|" IOSN_SHAPEANIMATION + +#define IMP_CONSTRAINTS_GRP IMP_ANIMATION "|" IOSN_CONSTRAINTS_GRP + +#define IMP_CONSTRAINT IMP_CONSTRAINTS_GRP "|" IOSN_CONSTRAINT + +#define IMP_CHARACTER IMP_CONSTRAINTS_GRP "|" IOSN_CHARACTER +#define IMP_CHARACTER_AS_MAYA_HIK IMP_CONSTRAINTS_GRP "|" IOSN_CHARACTER_AS_MAYA_HIK +#define IMP_CHARACTER_TYPE IMP_CONSTRAINTS_GRP "|" IOSN_CHARACTER_TYPE + + +#define IMP_SAMPLINGRATESELECTOR IMP_SAMPLINGPANEL "|" IOSN_SAMPLINGRATESELECTOR +#define IMP_SAMPLINGRATE IMP_SAMPLINGPANEL "|" IOSN_SAMPLINGRATE + +#define IMP_UNITS_GRP IMP_ADV_OPT_GRP "|" IOSN_UNITS_GRP +#define IMP_AXISCONV_GRP IMP_ADV_OPT_GRP "|" IOSN_AXISCONV_GRP +#define IMP_CACHE_GRP IMP_ADV_OPT_GRP "|" IOSN_CACHE_GRP + +#define IMP_UI IMP_ADV_OPT_GRP "|" IOSN_UI +#define IMP_FILEFORMAT IMP_ADV_OPT_GRP "|" IOSN_FILE_FORMAT +#define IMP_PERF_GRP IMP_ADV_OPT_GRP "|" IOSN_PERF_GRP + +#define IMP_REMOVEBADPOLYSFROMMESH IMP_PERF_GRP "|" IOSN_REMOVEBADPOLYSFROMMESH +#define IMP_META_DATA IMP_PERF_GRP "|" IOSN_META_DATA + +#define IMP_FBX_EXTENTIONS_SDK_WARNING IMP_FBX_EXT_SDK_GRP "|" IOSN_FBX_EXTENTIONS_SDK_WARNING + +#define IMP_SCALECONVERSION IMP_UNITS_GRP "|" IOSN_SCALECONVERSION +#define IMP_UNITS_TB IMP_UNITS_GRP "|" IOSN_UNITS_TB +#define IMP_MASTERSCALE IMP_UNITS_GRP "|" IOSN_MASTERSCALE +#define IMP_UNITS_SCALE IMP_UNITS_GRP "|" IOSN_UNITS_SCALE + +#define IMP_DYN_SCALE_CONVERSION IMP_UNITS_GRP "|" IOSN_DYN_SCALE_CONVERSION +#define IMP_UNITSELECTOR IMP_UNITS_GRP "|" IOSN_UNITSELECTOR +#define IMP_TOTAL_UNITS_SCALE_TB IMP_UNITS_GRP "|" IOSN_TOTAL_UNITS_SCALE_TB + +#define IMP_SHOW_UI_MODE IMP_UI "|" IOSN_SHOW_UI_MODE +#define IMP_SHOW_UI_WARNING IMP_UI "|" IOSN_SHOW_UI_WARNING +#define IMP_SHOW_WARNINGS_MANAGER IMP_UI "|" IOSN_SHOW_WARNINGS_MANAGER +#define IMP_GENERATE_LOG_DATA IMP_UI "|" IOSN_GENERATE_LOG_DATA +#define IMP_PLUGIN_VERSIONS_URL IMP_UI "|" IOSN_PLUGIN_VERSIONS_URL + +#define IMP_DXF IMP_ADV_OPT_GRP "|" IOSN_DXF + +// note: IMP_FILEFORMAT group is not visible +#define IMP_FBX IMP_FILEFORMAT "|" IOSN_FBX +#define IMP_OBJ IMP_FILEFORMAT "|" IOSN_OBJ +#define IMP_3DS IMP_FILEFORMAT "|" IOSN_3DS + +#define IMP_MOTION_BASE IMP_FILEFORMAT "|" IOSN_MOTION_BASE +#define IMP_BIOVISION_BVH IMP_FILEFORMAT "|" IOSN_BIOVISION_BVH +#define IMP_MOTIONANALYSIS_HTR IMP_FILEFORMAT "|" IOSN_MOTIONANALYSIS_HTR +#define IMP_ACCLAIM_ASF IMP_FILEFORMAT "|" IOSN_ACCLAIM_ASF +#define IMP_ACCLAIM_AMC IMP_FILEFORMAT "|" IOSN_ACCLAIM_AMC + +#define IMP_UNLOCK_NORMALS IMP_GEOMETRY "|" IOSN_UNLOCK_NORMALS +#define IMP_CREASE IMP_GEOMETRY "|" IOSN_CREASE + +#define IMP_SMOOTHING_GROUPS IMP_GEOMETRY "|" IOSN_SMOOTHING_GROUPS +#define IMP_HARDEDGES IMP_GEOMETRY "|" IOSN_HARDEDGES +#define IMP_BLINDDATA IMP_GEOMETRY "|" IOSN_BLINDDATA + +#define IMP_BONE_WIDTHHEIGHTLOCK IMP_BONE "|" IOSN_BONEWIDTHHEIGHTLOCK +#define IMP_BONEASDUMMY IMP_BONE "|" IOSN_BONEASDUMMY +#define IMP_BONEMAX4BONEWIDTH IMP_BONE "|" IOSN_BONEMAX4BONEWIDTH +#define IMP_BONEMAX4BONEHEIGHT IMP_BONE "|" IOSN_BONEMAX4BONEHEIGHT +#define IMP_BONEMAX4BONETAPER IMP_BONE "|" IOSN_BONEMAX4BONETAPER + +#define IMP_SHAPE IMP_DEFORMATION "|" IOSN_SHAPE +#define IMP_SKINS IMP_DEFORMATION "|" IOSN_SKINS +#define IMP_USEMATRIXFROMPOSE IMP_DEFORMATION "|" IOSN_USEMATRIXFROMPOSE +#define IMP_FORCEWEIGHTNORMALIZE IMP_DEFORMATION "|" IOSN_FORCEWEIGHTNORMALIZE + + + +#define IMP_APPLYCSTKEYRED IMP_CURVEFILTERS "|" IOSN_APPLYCSTKEYRED +#define IMP_CSTKEYREDTPREC IMP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDTPREC +#define IMP_CSTKEYREDRPREC IMP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDRPREC +#define IMP_CSTKEYREDSPREC IMP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDSPREC +#define IMP_CSTKEYREDOPREC IMP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDOPREC +#define IMP_AUTOTANGENTSONLY IMP_APPLYCSTKEYRED "|" IOSN_AUTOTANGENTSONLY + +#define IMP_APPLYKEYREDUCE IMP_CURVEFILTERS "|" IOSN_APPLYKEYREDUCE +#define IMP_KEYREDUCEPREC IMP_APPLYKEYREDUCE "|" IOSN_KEYREDUCEPREC +#define IMP_APPLYKEYSONFRM IMP_APPLYKEYREDUCE "|" IOSN_APPLYKEYSONFRM +#define IMP_APPLYKEYSYNC IMP_APPLYKEYREDUCE "|" IOSN_APPLYKEYSYNC + +#define IMP_APPLYUNROLL IMP_CURVEFILTERS "|" IOSN_APPLYUNROLL +#define IMP_UNROLLPREC IMP_APPLYUNROLL "|" IOSN_UNROLLPREC +#define IMP_UNROLLPATH IMP_APPLYUNROLL "|" IOSN_UNROLLPATH +#define IMP_UNROLLFORCEAUTO IMP_APPLYUNROLL "|" IOSN_UNROLLFORCEAUTO + +#define IMP_UP_AXIS IMP_AXISCONV_GRP "|" IOSN_UP_AXIS +#define IMP_UP_AXIS_MAX IMP_AXISCONV_GRP "|" IOSN_UP_AXIS_MAX +#define IMP_ZUPROTATION_MAX IMP_AXISCONV_GRP "|" IOSN_ZUPROTATION_MAX +#define IMP_AXISCONVERSION IMP_AXISCONV_GRP "|" IOSN_AXISCONVERSION +#define IMP_AUTO_AXIS IMP_AXISCONV_GRP "|" IOSN_AUTO_AXIS +#define IMP_FILE_UP_AXIS IMP_AXISCONV_GRP "|" IOSN_FILE_UP_AXIS + +#define IMP_CACHE_SIZE IMP_CACHE_GRP "|" IOSN_CACHE_SIZE + +#define IMP_PLUGIN_UI_WIDTH IMP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_WIDTH +#define IMP_PLUGIN_UI_HEIGHT IMP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_HEIGHT +#define IMP_PRESET_SELECTED IMP_PLUGIN_GRP "|" IOSN_PRESET_SELECTED + +#define IMP_UIL IMP_PLUGIN_GRP "|" IOSN_UIL +#define IMP_PLUGIN_PRODUCT_FAMILY IMP_PLUGIN_GRP "|" IOSN_PLUGIN_PRODUCT_FAMILY + +#define IMP_PLUGIN_UI_XPOS IMP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_XPOS +#define IMP_PLUGIN_UI_YPOS IMP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_YPOS + +#define IMP_DXF_WELD_VERTICES IMP_DXF "|" IOSN_DXF_WELD_VERTICES +#define IMP_DXF_OBJECT_DERIVATION IMP_DXF "|" IOSN_DXF_OBJECT_DERIVATION +#define IMP_DXF_REFERENCE_NODE IMP_DXF "|" IOSN_DXF_REFERENCE_NODE + +#define IMP_OBJ_REFERENCE_NODE IMP_OBJ "|" IOSN_OBJ_REFERENCE_NODE + +#define IMP_3DS_REFERENCENODE IMP_3DS "|" IOSN_3DS_REFERENCENODE +#define IMP_3DS_TEXTURE IMP_3DS "|" IOSN_3DS_TEXTURE +#define IMP_3DS_MATERIAL IMP_3DS "|" IOSN_3DS_MATERIAL +#define IMP_3DS_ANIMATION IMP_3DS "|" IOSN_3DS_ANIMATION +#define IMP_3DS_MESH IMP_3DS "|" IOSN_3DS_MESH +#define IMP_3DS_LIGHT IMP_3DS "|" IOSN_3DS_LIGHT +#define IMP_3DS_CAMERA IMP_3DS "|" IOSN_3DS_CAMERA +#define IMP_3DS_AMBIENT_LIGHT IMP_3DS "|" IOSN_3DS_AMBIENT_LIGHT +#define IMP_3DS_RESCALING IMP_3DS "|" IOSN_3DS_RESCALING +#define IMP_3DS_FILTER IMP_3DS "|" IOSN_3DS_FILTER +#define IMP_3DS_SMOOTHGROUP IMP_3DS "|" IOSN_3DS_SMOOTHGROUP + +#define IMP_FBX_MODEL_COUNT IMP_FBX "|" IOSN_MODEL_COUNT +#define IMP_FBX_DEVICE_COUNT IMP_FBX "|" IOSN_DEVICE_COUNT +#define IMP_FBX_CHARACTER_COUNT IMP_FBX "|" IOSN_CHARACTER_COUNT +#define IMP_FBX_ACTOR_COUNT IMP_FBX "|" IOSN_ACTOR_COUNT +#define IMP_FBX_CONSTRAINT_COUNT IMP_FBX "|" IOSN_CONSTRAINT_COUNT +#define IMP_FBX_MEDIA_COUNT IMP_FBX "|" IOSN_MEDIA_COUNT + +#define IMP_FBX_TEMPLATE IMP_FBX "|" IOSN_TEMPLATE +#define IMP_FBX_PIVOT IMP_FBX "|" IOSN_PIVOT +#define IMP_FBX_GLOBAL_SETTINGS IMP_FBX "|" IOSN_GLOBAL_SETTINGS +#define IMP_FBX_CHARACTER IMP_FBX "|" IOSN_CHARACTER +#define IMP_FBX_CONSTRAINT IMP_FBX "|" IOSN_CONSTRAINT +#define IMP_FBX_MERGE_LAYER_AND_TIMEWARP IMP_FBX "|" IOSN_MERGE_LAYER_AND_TIMEWARP +#define IMP_FBX_GOBO IMP_FBX "|" IOSN_GOBO +#define IMP_FBX_SHAPE IMP_FBX "|" IOSN_SHAPE +#define IMP_FBX_LINK IMP_FBX "|" IOSN_LINK +#define IMP_FBX_MATERIAL IMP_FBX "|" IOSN_MATERIAL +#define IMP_FBX_TEXTURE IMP_FBX "|" IOSN_TEXTURE +#define IMP_FBX_MODEL IMP_FBX "|" IOSN_MODEL +#define IMP_FBX_ANIMATION IMP_FBX "|" IOSN_ANIMATION +#define IMP_FBX_PASSWORD IMP_FBX "|" IOSN_PASSWORD +#define IMP_FBX_PASSWORD_ENABLE IMP_FBX "|" IOSN_PASSWORD_ENABLE +#define IMP_FBX_CURRENT_TAKE_NAME IMP_FBX "|" IOSN_CURRENT_TAKE_NAME +#define IMP_FBX_EXTRACT_EMBEDDED_DATA IMP_FBX "|" IOSN_EXTRACT_EMBEDDED_DATA + +#define IMP_BUTTON_WEB_UPDATE IMP_INFORMATION_GRP "|" IOSN_BUTTON_WEB_UPDATE +#define IMP_PI_VERSION IMP_INFORMATION_GRP "|" IOSN_PI_VERSION + +// end of import defined path +//--------------------------- + +//--------------------------- +// export defined path + +#define EXP_STATISTICS_GRP IOSN_EXPORT "|" IOSN_STATISTICS_GRP +#define EXP_ADV_OPT_GRP IOSN_EXPORT "|" IOSN_ADV_OPT_GRP +#define EXP_PRESETS_GRP IOSN_EXPORT "|" IOSN_PRESETS_GRP +#define EXP_STATISTICS IOSN_EXPORT "|" IOSN_STATISTICS_GRP "|" IOSN_STATISTICS +#define EXP_FIRST_TIME_RUN_NOTICE_GRP IOSN_EXPORT "|" IOSN_FIRST_TIME_RUN_NOTICE +#define EXP_INFORMATION_GRP IOSN_EXPORT "|" IOSN_INFORMATION_GRP + +#define EXP_PLUGIN_GRP IOSN_EXPORT "|" IOSN_PLUGIN_GRP +#define EXP_INCLUDE_GRP IOSN_EXPORT "|" IOSN_INCLUDE_GRP +#define EXP_FBX_EXT_SDK_GRP IOSN_EXPORT "|" IOSN_FBX_EXTENTIONS_SDK + +#define EXP_UNITS_GRP EXP_ADV_OPT_GRP "|" IOSN_UNITS_GRP +#define EXP_FILEFORMAT EXP_ADV_OPT_GRP "|" IOSN_FILE_FORMAT +#define EXP_AXISCONV_GRP EXP_ADV_OPT_GRP "|" IOSN_AXISCONV_GRP +#define EXP_CACHE_GRP EXP_ADV_OPT_GRP "|" IOSN_CACHE_GRP + +#define EXP_UI EXP_ADV_OPT_GRP "|" IOSN_UI + +#define EXP_FBX_EXTENTIONS_SDK_WARNING EXP_FBX_EXT_SDK_GRP "|" IOSN_FBX_EXTENTIONS_SDK_WARNING +#define EXP_FIRST_TIME_RUN_NOTICE EXP_FIRST_TIME_RUN_NOTICE_GRP "|" IOSN_FIRST_TIME_RUN_NOTICE + +#define EXP_SCALEFACTOR EXP_AXISCONV_GRP "|" IOSN_SCALEFACTOR +#define EXP_AXISCONVERSIONMETHOD EXP_AXISCONV_GRP "|" IOSN_AXISCONVERSIONMETHOD +#define EXP_UPAXIS EXP_AXISCONV_GRP "|" IOSN_UPAXIS + +#define EXP_UNITS_SCALE EXP_UNITS_GRP "|" IOSN_UNITS_SCALE +#define EXP_MASTERSCALE EXP_UNITS_GRP "|" IOSN_MASTERSCALE + +#define EXP_DYN_SCALE_CONVERSION EXP_UNITS_GRP "|" IOSN_DYN_SCALE_CONVERSION +#define EXP_UNITSELECTOR EXP_UNITS_GRP "|" IOSN_UNITSELECTOR + +#define EXP_TOTAL_UNITS_SCALE_TB EXP_UNITS_GRP "|" IOSN_TOTAL_UNITS_SCALE_TB + +#define EXP_SHOW_UI_MODE EXP_UI "|" IOSN_SHOW_UI_MODE +#define EXP_SHOW_UI_WARNING EXP_UI "|" IOSN_SHOW_UI_WARNING +#define EXP_SHOW_WARNINGS_MANAGER EXP_UI "|" IOSN_SHOW_WARNINGS_MANAGER +#define EXP_GENERATE_LOG_DATA EXP_UI "|" IOSN_GENERATE_LOG_DATA +#define EXP_PLUGIN_VERSIONS_URL EXP_UI "|" IOSN_PLUGIN_VERSIONS_URL + +#define EXP_PRESETS EXP_PRESETS_GRP "|" IOSN_PRESETS + +#define EXP_CAMERA_GRP EXP_INCLUDE_GRP "|" IOSN_CAMERA_GRP +#define EXP_LIGHT_GRP EXP_INCLUDE_GRP "|" IOSN_LIGHT_GRP + +#define EXP_GEOMETRY EXP_INCLUDE_GRP "|" IOSN_GEOMETRY +#define EXP_ANIMATION EXP_INCLUDE_GRP "|" IOSN_ANIMATION +#define EXP_PIVOTTONULLS EXP_INCLUDE_GRP "|" IOSN_PIVOTTONULLS +#define EXP_LIGHT EXP_LIGHT_GRP "|" IOSN_LIGHT +#define EXP_LIGHTATTENUATION EXP_INCLUDE_GRP "|" IOSN_LIGHTATTENUATION +#define EXP_ENVIRONMENT EXP_LIGHT_GRP "|" IOSN_ENVIRONMENT +#define EXP_CAMERA EXP_CAMERA_GRP "|" IOSN_CAMERA +#define EXP_BINDPOSE EXP_INCLUDE_GRP "|" IOSN_BINDPOSE +#define EXP_SELECTIONONLY EXP_INCLUDE_GRP "|" IOSN_SELECTIONONLY + + +#define EXP_INPUTCONNECTIONS_GRP EXP_INCLUDE_GRP "|" IOSN_INPUTCONNECTIONS_GRP +#define EXP_INPUTCONNECTIONS EXP_INPUTCONNECTIONS_GRP "|" IOSN_INPUTCONNECTIONS + +#define EXP_BYPASSRRSINHERITANCE EXP_INCLUDE_GRP "|" IOSN_BYPASSRRSINHERITANCE + +#define EXP_EMBEDTEXTURE_GRP EXP_INCLUDE_GRP "|" IOSN_EMBEDTEXTURE_GRP +#define EXP_EMBEDTEXTURE EXP_EMBEDTEXTURE_GRP "|" IOSN_EMBEDTEXTURE +#define EXP_CONVERTTOTIFF EXP_EMBEDTEXTURE "|" IOSN_CONVERTTOTIFF + + +#define EXP_CURVEFILTERS EXP_ANIMATION "|" IOSN_CURVE_FILTER + +#define EXP_DEFORMATION EXP_ANIMATION "|" IOSN_DEFORMATION +#define EXP_BAKECOMPLEXANIMATION EXP_ANIMATION "|" IOSN_BAKECOMPLEXANIMATION +#define EXP_BONE EXP_ANIMATION "|" IOSN_BONE + +#define EXP_SAMPLINGFRAMERATE EXP_ANIMATION "|" IOSN_SAMPLINGFRAMERATE +#define EXP_POINTCACHE EXP_ANIMATION "|" IOSN_POINTCACHE +#define EXP_SMOOTHKEYASUSER EXP_ANIMATION "|" IOSN_SMOOTHKEYASUSER + +#define EXP_EXTRA_GRP EXP_ANIMATION "|" IOSN_EXTRA_GRP + +#define EXP_REMOVE_SINGLE_KEY EXP_EXTRA_GRP "|" IOSN_REMOVE_SINGLE_KEY +#define EXP_NAMETAKE EXP_EXTRA_GRP "|" IOSN_NAMETAKE +#define EXP_QUATERNION EXP_EXTRA_GRP "|" IOSN_QUATERNION + +#define EXP_CONSTRAINTS_GRP EXP_ANIMATION "|" IOSN_CONSTRAINTS_GRP + +#define EXP_CONSTRAINT EXP_CONSTRAINTS_GRP "|" IOSN_CONSTRAINT +#define EXP_CHARACTER EXP_CONSTRAINTS_GRP "|" IOSN_CHARACTER + + +#define EXP_MRCUSTOMATTRIBUTES EXP_GEOMETRY "|" IOSN_MRCUSTOMATTRIBUTES +#define EXP_MESHPRIMITIVE EXP_GEOMETRY "|" IOSN_MESHPRIMITIVE +#define EXP_MESHTRIANGLE EXP_GEOMETRY "|" IOSN_MESHTRIANGLE +#define EXP_MESHPOLY EXP_GEOMETRY "|" IOSN_MESHPOLY +#define EXP_NURB EXP_GEOMETRY "|" IOSN_NURB +#define EXP_PATCH EXP_GEOMETRY "|" IOSN_PATCH +#define EXP_BIP2FBX EXP_GEOMETRY "|" IOSN_BIP2FBX +#define EXP_GEOMNORMALPERPOLY EXP_GEOMETRY "|" IOSN_GEOMNORMALPERPOLY +#define EXP_TANGENTSPACE EXP_GEOMETRY "|" IOSN_TANGENTS_BINORMALS +#define EXP_SMOOTHMESH EXP_GEOMETRY "|" IOSN_SMOOTH_MESH +#define EXP_SELECTIONSET EXP_GEOMETRY "|" IOSN_SELECTION_SET + +#define EXP_FINESTSUBDIVLEVEL EXP_GEOMETRY "|" IOSN_FINESTSUBDIVLEVEL +#define EXP_MAXBONEASBONE EXP_GEOMETRY "|" IOSN_MAXBONEASBONE +#define EXP_MAXNURBSSTEP EXP_GEOMETRY "|" IOSN_MAXNURBSSTEP +#define EXP_CREASE EXP_GEOMETRY "|" IOSN_CREASE +#define EXP_BLINDDATA EXP_GEOMETRY "|" IOSN_BLINDDATA +#define EXP_NURBSSURFACEAS EXP_GEOMETRY "|" IOSN_GEOMETRYNURBSSURFACEAS +#define EXP_SMOOTHING_GROUPS EXP_GEOMETRY "|" IOSN_SMOOTHING_GROUPS +#define EXP_HARDEDGES EXP_GEOMETRY "|" IOSN_EXP_HARDEDGES +#define EXP_ANIMATIONONLY EXP_GEOMETRY "|" IOSN_ANIMATIONONLY +#define EXP_INSTANCES EXP_GEOMETRY "|" IOSN_INSTANCES +#define EXP_CONTAINEROBJECTS EXP_GEOMETRY "|" IOSN_CONTAINEROBJECTS +#define EXP_TRIANGULATE EXP_GEOMETRY "|" IOSN_TRIANGULATE +#define EXP_EDGE_ORIENTATION EXP_GEOMETRY "|" IOSN_EDGE_ORIENTATION + +#define EXP_SELECTIONSETNAMEASPOINTCACHE EXP_POINTCACHE "|" IOSN_SELECTIONSETNAMEASPOINTCACHE + +#define EXP_GEOMETRYMESHPRIMITIVEAS EXP_GEOMETRY "|" IOSN_GEOMETRYMESHPRIMITIVEAS +#define EXP_GEOMETRYMESHTRIANGLEAS EXP_GEOMETRY "|" IOSN_GEOMETRYMESHTRIANGLEAS +#define EXP_GEOMETRYMESHPOLYAS EXP_GEOMETRY "|" IOSN_GEOMETRYMESHPOLYAS +#define EXP_GEOMETRYNURBSAS EXP_GEOMETRY "|" IOSN_GEOMETRYNURBSAS +#define EXP_GEOMETRYPATCHAS EXP_GEOMETRY "|" IOSN_GEOMETRYPATCHAS + +#define EXP_BAKEFRAMESTART EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMESTART +#define EXP_BAKEFRAMEEND EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMEEND +#define EXP_BAKEFRAMESTEP EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMESTEP + +#define EXP_BAKE_RESAMPLE_ANIMATION_CURVES EXP_BAKECOMPLEXANIMATION "|" IOSN_RESAMPLE_ANIMATION_CURVES + +#define EXP_BAKEFRAMESTARTNORESET EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMESTARTNORESET +#define EXP_BAKEFRAMEENDNORESET EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMEENDNORESET +#define EXP_BAKEFRAMESTEPNORESET EXP_BAKECOMPLEXANIMATION "|" IOSN_BAKEFRAMESTEPNORESET + +#define EXP_FBX EXP_ADV_OPT_GRP "|" IOSN_FBX +#define EXP_DXF EXP_ADV_OPT_GRP "|" IOSN_DXF +#define EXP_COLLADA EXP_ADV_OPT_GRP "|" IOSN_COLLADA + +// note: EXP_FILEFORMAT group is not visible +#define EXP_OBJ EXP_FILEFORMAT "|" IOSN_OBJ +#define EXP_3DS EXP_FILEFORMAT "|" IOSN_3DS +#define EXP_MOTION_BASE EXP_FILEFORMAT "|" IOSN_MOTION_BASE +#define EXP_BIOVISION_BVH EXP_FILEFORMAT "|" IOSN_BIOVISION_BVH +#define EXP_ACCLAIM_ASF EXP_FILEFORMAT "|" IOSN_ACCLAIM_ASF +#define EXP_ACCLAIM_AMC EXP_FILEFORMAT "|" IOSN_ACCLAIM_AMC + + +#define EXP_ASCIIFBX EXP_FBX "|" IOSN_ASCIIFBX + +#define EXP_CACHE_SIZE EXP_CACHE_GRP "|" IOSN_CACHE_SIZE + +#define EXP_SHAPE EXP_DEFORMATION "|" IOSN_SHAPE +#define EXP_SKINS EXP_DEFORMATION "|" IOSN_SKINS + +#define EXP_APPLYCSTKEYRED EXP_CURVEFILTERS "|" IOSN_APPLYCSTKEYRED +#define EXP_SAMPLINGRATE EXP_APPLYCSTKEYRED "|" IOSN_SAMPLINGRATE +#define EXP_CSTKEYREDTPREC EXP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDTPREC +#define EXP_CSTKEYREDRPREC EXP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDRPREC +#define EXP_CSTKEYREDSPREC EXP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDSPREC +#define EXP_CSTKEYREDOPREC EXP_APPLYCSTKEYRED "|" IOSN_CSTKEYREDOPREC +#define EXP_AUTOTANGENTSONLY EXP_APPLYCSTKEYRED "|" IOSN_AUTOTANGENTSONLY + +#define EXP_APPLYKEYREDUCE EXP_CURVEFILTERS "|" IOSN_APPLYKEYREDUCE +#define EXP_KEYREDUCEPREC EXP_APPLYKEYREDUCE "|" IOSN_KEYREDUCEPREC +#define EXP_APPLYKEYSONFRM EXP_APPLYKEYREDUCE "|" IOSN_APPLYKEYSONFRM +#define EXP_APPLYKEYSYNC EXP_APPLYKEYREDUCE "|" IOSN_APPLYKEYSYNC + +#define EXP_APPLYUNROLL EXP_CURVEFILTERS "|" IOSN_APPLYUNROLL +#define EXP_UNROLLPREC EXP_APPLYUNROLL "|" IOSN_UNROLLPREC +#define EXP_UNROLLPATH EXP_APPLYUNROLL "|" IOSN_UNROLLPATH +#define EXP_UNROLLFORCEAUTO EXP_APPLYUNROLL "|" IOSN_UNROLLFORCEAUTO + +#define EXP_PLUGIN_UI_WIDTH EXP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_WIDTH +#define EXP_PLUGIN_UI_HEIGHT EXP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_HEIGHT +#define EXP_PRESET_SELECTED EXP_PLUGIN_GRP "|" IOSN_PRESET_SELECTED + +#define EXP_UIL EXP_PLUGIN_GRP "|" IOSN_UIL +#define EXP_PLUGIN_PRODUCT_FAMILY EXP_PLUGIN_GRP "|" IOSN_PLUGIN_PRODUCT_FAMILY + +#define EXP_PLUGIN_UI_XPOS EXP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_XPOS +#define EXP_PLUGIN_UI_YPOS EXP_PLUGIN_GRP "|" IOSN_PLUGIN_UI_YPOS + +#define EXP_BUTTON_WEB_UPDATE EXP_INFORMATION_GRP "|" IOSN_BUTTON_WEB_UPDATE +#define EXP_PI_VERSION EXP_INFORMATION_GRP "|" IOSN_PI_VERSION + +#define EXP_BUTTON_EDIT EXP_PLUGIN_GRP "|" IOSN_BUTTON_EDIT +#define EXP_BUTTON_OK EXP_PLUGIN_GRP "|" IOSN_BUTTON_OK +#define EXP_BUTTON_CANCEL EXP_PLUGIN_GRP "|" IOSN_BUTTON_CANCEL +#define EXP_MENU_EDIT_PRESET EXP_PLUGIN_GRP "|" IOSN_MENU_EDIT_PRESET +#define EXP_MENU_SAVE_PRESET EXP_PLUGIN_GRP "|" IOSN_MENU_SAVE_PRESET +// internal use +#define EXP_USETMPFILEPERIPHERAL EXP_PLUGIN_GRP "|" IOSN_USETMPFILEPERIPHERAL +#define EXP_CONSTRUCTIONHISTORY EXP_PLUGIN_GRP "|" IOSN_CONSTRUCTIONHISTORY + +#define EXP_COLLADA_TRIANGULATE EXP_COLLADA "|" IOSN_COLLADA_TRIANGULATE +#define EXP_COLLADA_SINGLEMATRIX EXP_COLLADA "|" IOSN_COLLADA_SINGLEMATRIX +#define EXP_COLLADA_FRAME_RATE EXP_COLLADA "|" IOSN_COLLADA_FRAME_RATE + +#define EXP_DXF_TRIANGULATE EXP_DXF "|" IOSN_DXF_TRIANGULATE +#define EXP_DXF_DEFORMATION EXP_DXF "|" IOSN_DXF_DEFORMATION + +#define EXP_OBJ_TRIANGULATE EXP_OBJ "|" IOSN_OBJ_TRIANGULATE +#define EXP_OBJ_DEFORMATION EXP_OBJ "|" IOSN_OBJ_DEFORMATION + +#define EXP_3DS_REFERENCENODE EXP_3DS "|" IOSN_3DS_REFERENCENODE +#define EXP_3DS_TEXTURE EXP_3DS "|" IOSN_3DS_TEXTURE +#define EXP_3DS_MATERIAL EXP_3DS "|" IOSN_3DS_MATERIAL +#define EXP_3DS_ANIMATION EXP_3DS "|" IOSN_3DS_ANIMATION +#define EXP_3DS_MESH EXP_3DS "|" IOSN_3DS_MESH +#define EXP_3DS_LIGHT EXP_3DS "|" IOSN_3DS_LIGHT +#define EXP_3DS_CAMERA EXP_3DS "|" IOSN_3DS_CAMERA +#define EXP_3DS_AMBIENT_LIGHT EXP_3DS "|" IOSN_3DS_AMBIENT_LIGHT +#define EXP_3DS_RESCALING EXP_3DS "|" IOSN_3DS_RESCALING +#define EXP_3DS_TEXUVBYPOLY EXP_3DS "|" IOSN_3DS_TEXUVBYPOLY + +#define EXP_FBX_TEMPLATE EXP_FBX "|" IOSN_TEMPLATE +#define EXP_FBX_PIVOT EXP_FBX "|" IOSN_PIVOT +#define EXP_FBX_GLOBAL_SETTINGS EXP_FBX "|" IOSN_GLOBAL_SETTINGS +#define EXP_FBX_CHARACTER EXP_FBX "|" IOSN_CHARACTER +#define EXP_FBX_CONSTRAINT EXP_FBX "|" IOSN_CONSTRAINT +#define EXP_FBX_GOBO EXP_FBX "|" IOSN_GOBO +#define EXP_FBX_SHAPE EXP_FBX "|" IOSN_SHAPE +#define EXP_FBX_MATERIAL EXP_FBX "|" IOSN_MATERIAL +#define EXP_FBX_TEXTURE EXP_FBX "|" IOSN_TEXTURE +#define EXP_FBX_MODEL EXP_FBX "|" IOSN_MODEL +#define EXP_FBX_ANIMATION EXP_FBX "|" IOSN_ANIMATION +#define EXP_FBX_EMBEDDED EXP_FBX "|" IOSN_EMBEDDED +#define EXP_FBX_PASSWORD EXP_FBX "|" IOSN_PASSWORD +#define EXP_FBX_PASSWORD_ENABLE EXP_FBX "|" IOSN_PASSWORD_ENABLE +#define EXP_FBX_COLLAPSE_EXTERNALS EXP_FBX "|" IOSN_COLLAPSE_EXTERNALS +#define EXP_FBX_COMPRESS_ARRAYS EXP_FBX "|" IOSN_COMPRESS_ARRAYS +#define EXP_FBX_COMPRESS_LEVEL EXP_FBX "|" IOSN_COMPRESS_LEVEL +#define EXP_FBX_COMPRESS_MINSIZE EXP_FBX "|" IOSN_COMPRESS_MINSIZE +#define EXP_FBX_EMBEDDED_PROPERTIES_SKIP EXP_FBX "|" IOSN_EMBEDDED_PROPERTIES_SKIP +#define EXP_FBX_EXPORT_FILE_VERSION EXP_FBX "|" IOSN_EXPORT_FILE_VERSION + + +// end of export defined path +//--------------------------- + +//--------------------------- +// Motion files related options +#define IOSN_MOTION_START "MotionStart" +#define IOSN_MOTION_FRAME_COUNT "MotionFrameCount" +#define IOSN_MOTION_FRAME_RATE "MotionFrameRate" +#define IOSN_MOTION_ACTOR_PREFIX "MotionActorPrefix" +#define IOSN_MOTION_RENAME_DUPLICATE_NAMES "MotionRenameDuplicateNames" +#define IOSN_MOTION_EXACT_ZERO_AS_OCCLUDED "MotionExactZeroAsOccluded" +#define IOSN_MOTION_SET_OCCLUDED_TO_LAST_VALID_POSITION "MotionSetOccludedToLastValidPos" +#define IOSN_MOTION_AS_OPTICAL_SEGMENTS "MotionAsOpticalSegments" +#define IOSN_MOTION_ASF_SCENE_OWNED "MotionASFSceneOwned" +#define IOSN_MOTION_MOTION_FROM_GLOBAL_POSITION "MotionFromGlobalPosition" +#define IOSN_MOTION_GAPS_AS_VALID_DATA "MotionGapsAsValidData" +#define IOSN_MOTION_C3D_REAL_FORMAT "MotionC3DRealFormat" +#define IOSN_MOTION_CREATE_REFERENCE_NODE "MotionCreateReferenceNode" +#define IOSN_MOTION_TRANSLATION "MotionTranslation" +#define IOSN_MOTION_BASE_T_IN_OFFSET "MotionBaseTInOffset" +#define IOSN_MOTION_BASE_R_IN_PREROTATION "MotionBaseRInPrerotation" +#define IOSN_MOTION_DUMMY_NODES "MotionDummyNodes" +#define IOSN_MOTION_LIMITS "MotionLimits" +#define IOSN_MOTION_FRAME_RATE_USED "MotionFrameRateUsed" +#define IOSN_MOTION_FRAME_RANGE "MotionFrameRange" +#define IOSN_MOTION_WRITE_DEFAULT_AS_BASE_TR "MotionWriteDefaultAsBaseTR" + +// Import + +//Motion Base options +#define IMP_MOB_START IMP_MOTION_BASE "|" IOSN_MOTION_START +#define IMP_MOB_FRAME_COUNT IMP_MOTION_BASE "|" IOSN_MOTION_FRAME_COUNT +#define IMP_MOB_FRAME_RATE IMP_MOTION_BASE "|" IOSN_MOTION_FRAME_RATE +#define IMP_MOB_ACTOR_PREFIX IMP_MOTION_BASE "|" IOSN_MOTION_ACTOR_PREFIX +#define IMP_MOB_RENAME_DUPLICATE_NAMES IMP_MOTION_BASE "|" IOSN_MOTION_RENAME_DUPLICATE_NAMES +#define IMP_MOB_EXACT_ZERO_AS_OCCLUDED IMP_MOTION_BASE "|" IOSN_MOTION_EXACT_ZERO_AS_OCCLUDED +#define IMP_MOB_SET_OCCLUDED_TO_LAST_VALID_POSITION IMP_MOTION_BASE "|" IOSN_MOTION_SET_OCCLUDED_TO_LAST_VALID_POSITION +#define IMP_MOB_AS_OPTICAL_SEGMENTS IMP_MOTION_BASE "|" IOSN_MOTION_AS_OPTICAL_SEGMENTS +#define IMP_MOB_ASF_SCENE_OWNED IMP_MOTION_BASE "|" IOSN_MOTION_ASF_SCENE_OWNED + +// Acclaim AMC options +#define IMP_ACCLAIM_AMC_CREATE_REFERENCE_NODE IMP_ACCLAIM_AMC "|" IOSN_MOTION_CREATE_REFERENCE_NODE +#define IMP_ACCLAIM_AMC_MOTION_BASE_T_IN_OFFSET IMP_ACCLAIM_AMC "|" IOSN_MOTION_BASE_T_IN_OFFSET +#define IMP_ACCLAIM_AMC_MOTION_BASE_R_IN_PREROTATION IMP_ACCLAIM_AMC "|" IOSN_MOTION_BASE_R_IN_PREROTATION +#define IMP_ACCLAIM_AMC_DUMMY_NODES IMP_ACCLAIM_AMC "|" IOSN_MOTION_DUMMY_NODES +#define IMP_ACCLAIM_AMC_MOTION_LIMITS IMP_ACCLAIM_AMC "|" IOSN_MOTION_LIMITS + +// Acclaim ASF options +#define IMP_ACCLAIM_ASF_CREATE_REFERENCE_NODE IMP_ACCLAIM_ASF "|" IOSN_MOTION_CREATE_REFERENCE_NODE +#define IMP_ACCLAIM_ASF_MOTION_BASE_T_IN_OFFSET IMP_ACCLAIM_ASF "|" IOSN_MOTION_BASE_T_IN_OFFSET +#define IMP_ACCLAIM_ASF_MOTION_BASE_R_IN_PREROTATION IMP_ACCLAIM_ASF "|" IOSN_MOTION_BASE_R_IN_PREROTATION +#define IMP_ACCLAIM_ASF_DUMMY_NODES IMP_ACCLAIM_ASF "|" IOSN_MOTION_DUMMY_NODES +#define IMP_ACCLAIM_ASF_MOTION_LIMITS IMP_ACCLAIM_ASF "|" IOSN_MOTION_LIMITS + +// Biovision BVH options +#define IMP_BIOVISION_BVH_CREATE_REFERENCE_NODE IMP_BIOVISION_BVH "|" IOSN_MOTION_CREATE_REFERENCE_NODE + +// Motion Analysis HTR options +#define IMP_MOTIONANALYSIS_HTR_CREATE_REFERENCE_NODE IMP_MOTIONANALYSIS_HTR "|" IOSN_MOTION_CREATE_REFERENCE_NODE +#define IMP_MOTIONANALYSIS_HTR_MOTION_BASE_T_IN_OFFSET IMP_MOTIONANALYSIS_HTR "|" IOSN_MOTION_BASE_T_IN_OFFSET +#define IMP_MOTIONANALYSIS_HTR_MOTION_BASE_R_IN_PREROTATION IMP_MOTIONANALYSIS_HTR "|" IOSN_MOTION_BASE_R_IN_PREROTATION + +// Export + +//Motion Base options +#define EXP_MOB_START EXP_MOTION_BASE "|" IOSN_MOTION_START +#define EXP_MOB_FRAME_COUNT EXP_MOTION_BASE "|" IOSN_MOTION_FRAME_COUNT +#define EXP_MOB_FROM_GLOBAL_POSITION EXP_MOTION_BASE "|" IOSN_MOTION_MOTION_FROM_GLOBAL_POSITION +#define EXP_MOB_FRAME_RATE EXP_MOTION_BASE "|" IOSN_MOTION_FRAME_RATE +#define EXP_MOB_GAPS_AS_VALID_DATA EXP_MOTION_BASE "|" IOSN_MOTION_GAPS_AS_VALID_DATA +#define EXP_MOB_C3D_REAL_FORMAT EXP_MOTION_BASE "|" IOSN_MOTION_C3D_REAL_FORMAT +#define EXP_MOB_ASF_SCENE_OWNED EXP_MOTION_BASE "|" IOSN_MOTION_ASF_SCENE_OWNED + +//Acclaim AMC options +#define EXP_ACCLAIM_AMC_MOTION_TRANSLATION EXP_ACCLAIM_AMC "|" IOSN_MOTION_TRANSLATION +#define EXP_ACCLAIM_AMC_FRAME_RATE_USED EXP_ACCLAIM_AMC "|" IOSN_MOTION_FRAME_RATE_USED +#define EXP_ACCLAIM_AMC_FRAME_RANGE EXP_ACCLAIM_AMC "|" IOSN_MOTION_FRAME_RANGE +#define EXP_ACCLAIM_AMC_WRITE_DEFAULT_AS_BASE_TR EXP_ACCLAIM_AMC "|" IOSN_MOTION_WRITE_DEFAULT_AS_BASE_TR + +//Acclaim ASF options +#define EXP_ACCLAIM_ASF_MOTION_TRANSLATION EXP_ACCLAIM_ASF "|" IOSN_MOTION_TRANSLATION +#define EXP_ACCLAIM_ASF_FRAME_RATE_USED EXP_ACCLAIM_ASF "|" IOSN_MOTION_FRAME_RATE_USED +#define EXP_ACCLAIM_ASF_FRAME_RANGE EXP_ACCLAIM_ASF "|" IOSN_MOTION_FRAME_RANGE +#define EXP_ACCLAIM_ASF_WRITE_DEFAULT_AS_BASE_TR EXP_ACCLAIM_ASF "|" IOSN_MOTION_WRITE_DEFAULT_AS_BASE_TR + +//Biovision BVH options +#define EXP_BIOVISION_BVH_MOTION_TRANSLATION EXP_BIOVISION_BVH "|" IOSN_MOTION_TRANSLATION + +#include + +#endif /* _FBXSDK_FILEIO_IO_SETTINGS_PATH_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxprogress.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxprogress.h new file mode 100644 index 00000000..38d9c67e --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxprogress.h @@ -0,0 +1,102 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxprogress.h +#ifndef _FBXSDK_FILEIO_PROGRESS_H_ +#define _FBXSDK_FILEIO_PROGRESS_H_ + +#include + +#include + +#include + +typedef bool (*FbxProgressCallback)(void* pArgs, float pPercentage, const char* pStatus); + +#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) + class FbxSpinLock; +#endif + +/** Class for progress reporting +* \nosubgrouping +*/ +class FBXSDK_DLL FbxProgress +{ +public: + /** Register a callback function for progress reporting in single thread mode. + * \param pCallback Pointer of the callback function. + * \param pArgs Pointer to the optional arguments passed to the callback function. */ + void SetProgressCallback(FbxProgressCallback pCallback, void* pArgs=NULL); + + /** Set the total amount of workload needed to complete the progress. + * \param pTotal Total amount of workload. + * \remark The default total is 100.0. */ + void SetTotal(float pTotal); + + /** Set the threshold at which the progress callback should be called. + * \param pThreshold The threshold value, between 0.0 and 100.0, that triggers the callback. + * \remark The default threshold is 1.0, meaning that every 1% the callback is triggered. */ + void SetThreshold(float pThreshold); + + /** Update current progress with recent workload. + * \param pDelta Delta amount of workload progressed so far. + * \param pStatus Optional current progress status string. + * \remark If a callback is set, it will be called upon caling this function. */ + void Update(float pDelta, const char* pStatus=NULL); + + //! Reset the progress status percentage and status string. + void Reset(); + + /** Retrieve the progress status. + * \param pStatus Optional current progress status string. + * \return The current progress percentage. */ + float GetProgress(FbxString* pStatus=NULL); + + /** Set the progress status to completed. + * \param pStatus Optional current progress status string. */ + void Complete(const char* pStatus=NULL); + + //! Cancel this progress. + void Cancel(); + + //! Query whether user canceled this progress. + inline bool IsCanceled() const { return mCanceled; } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxProgress(); + ~FbxProgress(); + +private: + void Acquire(); + void Release(); + float GetPercent() const; + bool ExecuteCallback() const; + +#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN) + FbxSpinLock* mLock; +#endif + float mCurrent; + float mPrevious; + float mTotal; + float mThreshold; + FbxString mStatus; + FbxProgressCallback mCallback; + void* mCallbackArgs; + bool mCanceled; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_FILEIO_PROGRESS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxreader.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxreader.h new file mode 100644 index 00000000..81eec0e0 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxreader.h @@ -0,0 +1,270 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxreader.h +#ifndef _FBXSDK_FILEIO_READER_H_ +#define _FBXSDK_FILEIO_READER_H_ + +#include + +#include +#include +#include +#include + +#include + +class FbxManager; +class FbxFile; +class FbxStream; +class FbxObject; +class FbxDocument; +class FbxDocumentInfo; +class FbxScene; +class FbxImporter; +class FbxIOSettings; +class FbxAxisSystem; +class FbxStatistics; +class FbxSystemUnit; +class FbxNode; +class FbxProgress; +class FbxTakeInfo; + + /** Base class of other readers used internally. + * This class provides the interfaces for reading files. + * + * The role of the reader is to effectively "read" specific file data + * vs the role of the importer is to select a specific reader + * and launch the reading of a file through that reader. + * \see FbxImporter + * + * ex: + * - FbxReaderFbx5 can read FBX 5 format files + * - FbxReaderFbx6 can read FBX 6 format files + * - FbxReaderFbx7 can read FBX 7 format files + * - FbxReaderCollada can read Collada files + * - FbxReaderDxf can read Dxf files + * - ... etc. + * + * A SDK user should - normally - not use this class, + * except if a custom reader must be created for plug-in extension, + * then FbxReader must be the base class for + * the new custom reader in that particular situation. + * \nosubgrouping + */ + +class FBXSDK_DLL FbxReader +{ +public: + /** Constructor. + * \param pManager The FbxManager Object. + * \param pID Id for current reader. + * \param pStatus The FbxStatus object to hold error codes. + */ + FbxReader(FbxManager& pManager, int pID, FbxStatus& pStatus); + + /** Destructor. + */ + virtual ~FbxReader(); + + /** Information type to request. + * \remarks Used internally to get reader file information. + */ + enum EInfoRequest + { + eInfoExtension, //!< To get the file ext for a reader ex: "FBX". + eInfoDescriptions, //!< To get the file description for a reader ex: "Autodesk FBX (*.fbx)". + eReserved1 = 0xFBFB, + }; + + /** Flags for reading parts of file. + * \remarks Used internally when an importer is initialized to get some information very fast. + */ + enum EFileOpenSpecialFlags + { + eParseForGlobalSettings = 1, //!< Used for reading the Global settings section when an importer is initialized. + eParseForStatistics = 2 //!< Used for reading a group of statistics when an importer is initialized. + }; + + /** \internal Helper typedef for passing FbxReader creator function as argument (used internally) */ + typedef FbxReader* (*CreateFuncType)(FbxManager& pManager, FbxImporter& pImporter, int pSubID, int pPluginID); + + /** \internal Helper typedef for passing FbxIOSettings creator function as argument (used internally) */ + typedef void (*IOSettingsFillerFuncType)(FbxIOSettings& pIOS); + + /** \internal Helper typedef for passing EInfoRequest function as argument (used internally) */ + typedef void* (*GetInfoFuncType)(EInfoRequest pRequest, int pReaderTypeId); + + /** Returns the file version. + * \param pMajor Major version. + * \param pMinor Minor version. + * \param pRevision Revision version. + */ + virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision){ pMajor = pMinor = pRevision = 0; } + + /** Opens the file with default flag + * \param pFileName Name of the File to open + * \return If the file opens successfully return \c true, otherwise return \c false. + */ + virtual bool FileOpen(char* pFileName) = 0; + + /** Opens the stream with default flag + * \param pStream stream to open + * \param pStreamData user-defined stream data + * \return If the stream opens successfully return \c true, otherwise return \c false. + */ + virtual bool FileOpen(FbxStream* pStream, void* pStreamData); + + /** Closes the file stream + * \return \c false + */ + virtual bool FileClose() = 0; + + /** Checks if the file stream is open. + * \return \c false. + */ + virtual bool IsFileOpen() = 0; + + /** Returns file stream options + * \param pParseFileAsNeeded Sets whether to parse file as read options + * \return true on success, otherwise return false. + */ + virtual bool GetReadOptions(bool pParseFileAsNeeded = true) = 0; + + /** Reads file with stream options + * \param pDocument FbxDocument to store the file data + * \return \c false. + */ + virtual bool Read(FbxDocument* pDocument) = 0; + +#ifndef FBXSDK_ENV_WINSTORE + /** Reads extension plug-ins name, version and parameters, so that we can remember if a plug-in was used during export. + * This is especially useful for extension plug-ins that modify the scene and also to warn users during import if an + * extension plug-in was used that could be missing. + * \param pParams The parameters of the extension plug-in. The properties of the objects are used + * as the parameters of the extension plug-in. + * \remark This function has no implementation in this class. Only sub-class should implement it as needed. For example, + * FBX 6 and FBX 7 does implement it. + */ + virtual void PluginReadParameters(FbxObject& pParams); +#endif /* !FBXSDK_ENV_WINSTORE */ + + /** Opens the file with specific EFileOpenSpecialFlags + * \param pFileName Name of the File to open. + * \param pFlags The EFileOpenSpecialFlags to open with + * \return If the file opens successfully return true, otherwise return false. + */ + virtual bool FileOpen(char* pFileName, EFileOpenSpecialFlags /*pFlags*/){ return FileOpen(pFileName); } + + /** Returns the system axis information and file system units from the file + * \param pAxisSystem Axis system in file + * \param pSystemUnits System unit in file + * \return \c false. + */ + virtual bool GetAxisInfo(FbxAxisSystem* /*pAxisSystem*/, FbxSystemUnit* /*pSystemUnits*/){ return false; } + + /** Returns statistics from the file + * \param pStats Statistics in the file. + * \return \c false. + */ + virtual bool GetStatistics(FbxStatistics* /*pStats*/){ return false; } + + /** Get FBX file time mode read from GlobalSettings in FBX 6.n and FBX 7.n + * \param pTimeMode ref to a FbxTime::EMode enum + * \return \c true on success, \c false otherwise. + * \remarks This function must be called after FbxImporter::Initialize(). + * Can be used for statistics (via GlobalSettings) before loading the whole scene from the file. + */ + virtual bool GetFrameRate(FbxTime::EMode& pTimeMode) { pTimeMode = FbxTime::eDefaultMode; return false; } + + + /** Returns the scene info from the file. + * \return NULL. + */ + virtual FbxDocumentInfo* GetSceneInfo(){return NULL;} + + /** Returns the list of take infos from the file. + * \return NULL + */ + virtual FbxArray* GetTakeInfo(){return NULL;} + + /** If default camera resolution is OK, returns information about the resolution of the render. + * \param pCamName Default camera name. + * \param pResolutionMode Default resolution mode. + * \param pW Default resolution width. + * \param pH Default resolution height. + * \return \c true If default camera resolution is OK, \c false Otherwise. + */ + virtual bool GetDefaultRenderResolution(FbxString& pCamName, FbxString& pResolutionMode, double& pW, double& pH); + + /** Judges if the format of the file is was created by an Autodesk plug-in. + * An internal (genuine) plug-in is one created by the Autodesk FBX product team. + * \return \c true If the file format is internal plug-in , \c false Otherwise. + */ + bool IsGenuine(); + + /** Access to a IOSettings object. + * \return A pointer to IOSettings used for this reader or NULL if the object + * has not been allocated. + */ + virtual FbxIOSettings * GetIOSettings(); + + /** Set the IOSettings pointer to be used for this reader instance. + * \param pIOSettings + */ + virtual void SetIOSettings(FbxIOSettings * pIOSettings); + + /** Pass a progress handler to the reader. + * \param pProgress FbxProgress to store the progress information. + */ + virtual void SetProgressHandler(FbxProgress* /*pProgress*/){} + + virtual void SetEmbeddingExtractionFolder(const char* /*pExtractFolder*/){} + + /** Returns true if this reader supports FbxStream I/O. Default value is false. */ + virtual bool SupportsStreams() const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual bool FileOpen(FbxFile * pFile); + + FbxStatus& GetStatus() { return mStatus; } + +protected: + void SetDefaultRenderResolution(const char* pCamName, const char* pResolutionMode, double pW, double pH); +#ifndef FBXSDK_ENV_WINSTORE + void PluginsReadBegin(FbxScene& pScene); + void PluginsRead(const char* pName, const char* pVersion); + void PluginsReadEnd(FbxScene& pScene); +#endif /* !FBXSDK_ENV_WINSTORE */ + FbxReader& operator=(FbxReader const&) { return *this; } + virtual bool CheckDuplicateNodeNames(FbxNode* pRootNode, FbxString& pDuplicateNodeNameList); + + FbxStatus& mStatus; + FbxManager& mManager; + FbxIODefaultRenderResolution* mData; + +private: + int mInternalID; + FbxIOSettings* mIOSettings; + + friend struct FbxReaderFbx7_Impl; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +//! Helper to access the IOSetting object pointer as a ref ex: IOS_REF.GetBoolProp( ... ); +#define IOS_REF (*GetIOSettings()) + +#include + +#endif /* _FBXSDK_FILEIO_READER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxstatistics.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxstatistics.h new file mode 100644 index 00000000..b6d40345 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxstatistics.h @@ -0,0 +1,107 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxstatistics.h +#ifndef _FBXSDK_FILEIO_STATISTICS_H_ +#define _FBXSDK_FILEIO_STATISTICS_H_ + +#include + +#include +#include + +#include + +/** This class is a basic class to get the quantity of items. + * User processes the statistics raw data by deriving FbxStatistics class and overrides \c AddItem method. + * When overriding \c AddItem method, User must store item's name and item's count by pair which means + * The index of one item's name in array \c mItemName is the same as the index of this item's count in array \c mItemCount. + * + * \code Here is a code snippet to show how it used. + * //Define my own statistics class. + * class MyStatistics : public FbxStatistics + * { + * public: + virtual bool AddItem(FbxString& pItemName, int pItemCount) + { + mItemName.Add( FbxSdkNew< FbxString >(pItemName) ); + mItemCount.Add( pItemCount); + return true; + }; + * }; + * + * FbxManager* lSdkManager = FbxManager::Create(); + * FbxScene* lScene = FbxScene::Create( lSdkManager, "Scene"); + * FbxNode* lNode1 = FbxNode::Create(lScene, "Node1"); + * FbxNode* lNode2 = FbxNode::Create(lScene, "Node2"); + * FbxNode* lNode3 = FbxNode::Create(lScene, "Node3"); + * FbxNode* lNode4 = FbxNode::Create(lScene, "Node4"); + * lScene.AddNode(lNode1); + * lScene.AddNode(lNode2); + * lScene.AddNode(lNode3); + * MyStatistics lStatistics; + * lStatistics.AddItem("Node_Count", lScene.GetNodeCount() ); + * FbxString lItemName; + * int lItemCount; + * if( lStatistics.GetItemPair( 0, lItemName, lItemCount)) + * { + * //do something + * } + * \endcode + + * \nosubgrouping + */ +class FBXSDK_DLL FbxStatistics +{ +public: + /// \name Constructor and Destructor. + //@{ + FbxStatistics(); + virtual ~FbxStatistics(); + //@} + + //! Reset the statistics. + void Reset(); + + //! Get the number of items. + int GetNbItems() const; + + /** Get the statistics information by pair. + * \param pNum The index of statistics data to be got. + * \param pItemName Output the item's name. + * \param pItemCount Output the item's count. + * \return \c True if successful, \c False otherwise. + */ + bool GetItemPair(int pNum, FbxString& pItemName, int& pItemCount) const; + + /** Assignment operator. + * \param pStatistics FbxStatistics assigned to this one. + */ + FbxStatistics& operator=(const FbxStatistics& pStatistics); + +protected: + /** virtual function to define the process of the incoming statistics data. + * \param pItemName The item's name + * \param pItemCount The item's count. + * \return False. + */ + virtual bool AddItem(FbxString& /*pItemName*/, int /*pItemCount*/) { return false; }; + + //! An array to store item's name. + FbxArray mItemName; + + //! An array to store item's count. + FbxArray mItemCount; +}; + +#include + +#endif /* _FBXSDK_FILEIO_STATISTICS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxstatisticsfbx.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxstatisticsfbx.h new file mode 100644 index 00000000..f85950a3 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxstatisticsfbx.h @@ -0,0 +1,42 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxstatisticsfbx.h +#ifndef _FBXSDK_FILEIO_STATISTICS_FBX_H_ +#define _FBXSDK_FILEIO_STATISTICS_FBX_H_ + +#include + +#include + +#include + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + +class FbxStatisticsFbx : public FbxStatistics +{ +public: + virtual bool AddItem(FbxString& pItemName, int pItemCount) + { + mItemName.Add( FbxNew< FbxString >(pItemName) ); + mItemCount.Add( pItemCount); + return true; + }; +}; + +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ + +#include + +#endif /* _FBXSDK_FILEIO_STATISTICS_FBX_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxwriter.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxwriter.h new file mode 100644 index 00000000..41930ab2 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/fileio/fbxwriter.h @@ -0,0 +1,244 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxwriter.h +#ifndef _FBXSDK_FILEIO_WRITER_H_ +#define _FBXSDK_FILEIO_WRITER_H_ + +#include + +#include + +#include + +class FbxStatus; +class FbxManager; +class FbxFile; +class FbxStream; +class FbxObject; +class FbxDocument; +class FbxScene; +class FbxExporter; +class FbxIO; +class FbxIOSettings; +class FbxProgress; + +#define IOSP GetIOSettings() + + /** Base class of other writers used internally. + * This class provides the interfaces for writing files. + * + * The role of the writer is to effectively "write" specific file data + * vs the role of the exporter is to select a specific writer + * and launch the writing of a file through that writer. + * \see FbxExporter + * + * ex: + * - FbxWriterFbx5 can write FBX 5 format files + * - FbxWriterFbx6 can write FBX 6 format files + * - FbxWriterFbx7 can write FBX 7 format files + * - FbxWriterCollada can write Collada files + * - FbxWriterDxf can write Dxf files + * - ... etc. + * + * A SDK user should - normally - not use this class, + * except if a custom writer must be created for plug-in extension, + * then FbxWriter must be the base class for + * the new custom writer in that particular situation. + * \nosubgrouping + */ +class FBXSDK_DLL FbxWriter +{ +public: + /** Constructor. + * \param pManager The FbxManager Object. + * \param pID Id for current writer. + * \param pStatus The FbxStatus object to hold error codes. + */ + FbxWriter(FbxManager& pManager, int pID, FbxStatus& pStatus); + + /** Destructor. */ + virtual ~FbxWriter(); + + /** Information type to request. + * \remarks Used internally to get writer file information. + */ + enum EInfoRequest + { + eInfoExtension, //!< To get the file ext for a writer ex: "FBX". + eInfoDescriptions, //!< To get the file description for a writer ex:"Autodesk FBX (*.fbx)". + eInfoVersions, //!< To get the file version for a writer ex: 7100. + eInfoCompatibleDesc, //!< To get the file compatible description for a writer. + eInfoUILabel, //!< To get the file UI label to show for a writer ex: file labels shown in "Open file dialog". + eReserved1 = 0xFBFB, + }; + + //! Helper typedef for passing FbxWriter creator function as argument (used internally). + typedef FbxWriter* (*CreateFuncType)(FbxManager& pManager, FbxExporter& pExporter, int pSubID, int pPluginID); + + //! Helper typedef for passing FbxIOSettings creator function as argument (used internally). + typedef void (*IOSettingsFillerFuncType)(FbxIOSettings& pIOS); + + //! Helper typedef for passing EInfoRequest function as argument (used internally). + typedef void* (*GetInfoFuncType)(EInfoRequest pRequest, int pWriterTypeId); + + /** Creates a new file. + * \param pFileName The name of the newly created file. + */ + virtual bool FileCreate(char* pFileName) = 0; + + /** Creates a new file via a stream. + * \param pStream The stream to write to. + * \param pStreamData the user-defined stream data to be written. + */ + virtual bool FileCreate(FbxStream* pStream, void* pStreamData); + + /** Closes the file. + */ + virtual bool FileClose() = 0; + + /** Test if the file is open. + */ + virtual bool IsFileOpen() = 0; + + /** Setup write options. + */ + virtual void GetWriteOptions() = 0; + + /** Writes content to the specified file with given stream options + * \param pDocument FbxDocument to write file data to. + */ + virtual bool Write(FbxDocument* pDocument) = 0; + + /** Pre-processes the scene. + * \param pScene The scene needs to be pre-processed. + */ + virtual bool PreprocessScene(FbxScene &pScene) = 0; + + /** Post-processes the scene. + * \param pScene The scene needs to be post-processed. + */ + virtual bool PostprocessScene(FbxScene &pScene) = 0; + +#ifndef FBXSDK_ENV_WINSTORE + /** Writes extension plug-ins name, version and parameters, so that we can remember if a plug-in was used during export. + * This is especially useful for extension plug-ins that modify the scene and also to warn users during import if an + * extension plug-in was used that could be missing. + * \param pParams The parameters of the extension plug-in. The properties of the objects are used + * as the parameters of the extension plug-in. + * \remark This function has no implementation in this class. Only sub-class should implement it as needed. For example, + * FBX 6 and FBX 7 does implement it. + */ + virtual void PluginWriteParameters(FbxObject& pParams); +#endif /* !FBXSDK_ENV_WINSTORE */ + + /** Finds the selected root node in the specified scene. + * \param pScene The scene in which the selected root node is found. + * \return The located root node.\c NULL if the selected root node cannot be found. + */ + virtual FbxNode* FindRootNode(FbxScene& pScene); + + /** Checks if there are spaces in the names of specified node (and its children nodes), + * and writes the returned node's name in the specified string list. + * \param pNode Specifies the node to check. + * \param pNodeNameList Specifies the string list where the node name that has spaces in it is recorded. + * \return \c true If there are no spaces in the name of specified node (and its children nodes), + * \c false If spaces are found. + */ + virtual bool CheckSpaceInNodeNameRecursive(FbxNode* pNode, FbxString& pNodeNameList); + + /** Sets the file export version as specified. + * \param pVersion The specified file export version. + */ + bool SetFileExportVersion(FbxString pVersion); + + /** Sets the renaming mode as specified. + * \param pRenamingMode The specified renaming mode. + */ + void SetRenamingMode(FbxSceneRenamer::ERenamingMode pRenamingMode){mRenamingMode = pRenamingMode;} + + /** Sets the resampling rate as specified. + * \param pResamplingRate The specified resampling rate. + */ + inline void SetResamplingRate(double pResamplingRate){mResamplingRate = pResamplingRate;} + + /** Test if file format is an internal plug-in . + * A non genuine plug-in is a plug-in made by someone external to Autodesk FBX SDK group. + * \return \c true If the file format is an internal plug-in ,\c false Otherwise . + */ + bool IsGenuine(); + + /** Access to a IOSettings object. + * \return The pointer to IOSettings or \c NULL \c if the object + * has not been allocated. + */ + virtual FbxIOSettings * GetIOSettings(); + + /** Set the IOSettings pointer to be used for this writer instance. + * \param pIOSettings + */ + virtual void SetIOSettings(FbxIOSettings * pIOSettings); + + /** Pass a progress handler to the writer. + * \param pProgress FbxProgress to store the progress information. + */ + virtual void SetProgressHandler(FbxProgress* /*pProgress*/){} + + /** Returns true if this writer supports FbxStream I/O. Default value is false. */ + virtual bool SupportsStreams() const; + +protected: +#ifndef FBXSDK_ENV_WINSTORE + //! Function called by FBX before writing out the scene (FbxScene). + void PluginsWriteBegin(FbxScene& pScene); + /** + * Function called by FBX before writing out any FBX object. + * \param pFbx File object. + * \param pWriteObjectId Flag to write out object id. + */ + void PluginsWrite(FbxIO& pFbx, bool pWriteObjectId); + //! Function called by FBX after writing out the scene (FbxScene). + void PluginsWriteEnd(FbxScene& pScene); +#endif /* !FBXSDK_ENV_WINSTORE */ + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +public: +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxStatus& GetStatus() { return mStatus; } + +protected: + + FbxWriter& operator=(FbxWriter const&) { return *this; } + + FbxStatus& mStatus; + FbxManager& mManager; + FbxString mFileVersion; + //! Resample rate for animation. + double mResamplingRate; + //! The mode describing from which format to which format when write FBX file. + FbxSceneRenamer::ERenamingMode mRenamingMode; + +private: + int mInternalID; + FbxIOSettings * mIOSettings; + + friend struct FbxWriterFbx7_Impl; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +//! Helper to access the IOSetting object pointer as a ref ex: IOS_REF.GetBoolProp( ... ); +#define IOS_REF (*GetIOSettings()) + +#include + +#endif /* _FBXSDK_FILEIO_WRITER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimcurve.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimcurve.h new file mode 100644 index 00000000..52c5774e --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimcurve.h @@ -0,0 +1,1359 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxanimcurve.h +#ifndef _FBXSDK_SCENE_ANIMATION_CURVE_H_ +#define _FBXSDK_SCENE_ANIMATION_CURVE_H_ + +#include + +#include +#include + +#include + +class KFCurve; + +/** Definitions used for the FBX animation curves and keys. */ +class FBXSDK_DLL FbxAnimCurveDef +{ +public: + static const float sDEFAULT_WEIGHT; + static const float sMIN_WEIGHT; + static const float sMAX_WEIGHT; + static const float sDEFAULT_VELOCITY; + + //! Key tangent mode for cubic interpolation. + enum ETangentMode + { + eTangentAuto = 0x00000100, //!< Auto key (spline cardinal). + eTangentTCB = 0x00000200, //!< Spline TCB (Tension, Continuity, Bias) + eTangentUser = 0x00000400, //!< Next slope at the left equal to slope at the right. + eTangentGenericBreak = 0x00000800, //!< Independent left and right slopes. + eTangentBreak = eTangentGenericBreak|eTangentUser, //!< Independent left and right slopes, with next slope at the left equal to slope at the right. + eTangentAutoBreak = eTangentGenericBreak|eTangentAuto, //!< Independent left and right slopes, with auto key. + eTangentGenericClamp = 0x00001000, //!< Clamp: key should be flat if next or previous key has the same value (overrides tangent mode). + eTangentGenericTimeIndependent = 0x00002000, //!< Time independent tangent (overrides tangent mode). + eTangentGenericClampProgressive = 0x00004000|eTangentGenericTimeIndependent //!< Clamp progressive: key should be flat if tangent control point is outside [next-previous key] range (overrides tangent mode). + }; + + //! Key interpolation type. + enum EInterpolationType + { + eInterpolationConstant = 0x00000002, //!< Constant value until next key. + eInterpolationLinear = 0x00000004, //!< Linear progression to next key. + eInterpolationCubic = 0x00000008 //!< Cubic progression to next key. + }; + + //! Weighted mode. + enum EWeightedMode + { + eWeightedNone = 0x00000000, //!< Tangent has default weights of 0.333; we define this state as not weighted. + eWeightedRight = 0x01000000, //!< Right tangent is weighted. + eWeightedNextLeft = 0x02000000, //!< Left tangent is weighted. + eWeightedAll = eWeightedRight|eWeightedNextLeft //!< Both left and right tangents are weighted. + }; + + //! Key constant mode. + enum EConstantMode + { + eConstantStandard = 0x00000000, //!< Curve value is constant between this key and the next + eConstantNext = 0x00000100 //!< Curve value is constant, with next key's value + }; + + //! Velocity mode. Velocity settings speed up or slow down animation on either side of a key without changing the trajectory of the animation. Unlike Auto and Weight settings, Velocity changes the animation in time, but not in space. + enum EVelocityMode + { + eVelocityNone = 0x00000000, //!< No velocity (default). + eVelocityRight = 0x10000000, //!< Right tangent has velocity. + eVelocityNextLeft = 0x20000000, //!< Left tangent has velocity. + eVelocityAll = eVelocityRight|eVelocityNextLeft //!< Both left and right tangents have velocity. + }; + + //! Tangent visibility. + enum ETangentVisibility + { + eTangentShowNone = 0x00000000, //!< No tangent is visible. + eTangentShowLeft = 0x00100000, //!< Left tangent is visible. + eTangentShowRight = 0x00200000, //!< Right tangent is visible. + eTangentShowBoth = eTangentShowLeft|eTangentShowRight //!< Both left and right tangents are visible. + }; + + //! FbxAnimCurveKey data indices for cubic interpolation tangent information. + enum EDataIndex + { + eRightSlope = 0, //!< Index of the right derivative, User and Break tangent mode (data are float). + eNextLeftSlope = 1, //!< Index of the left derivative for the next key, User and Break tangent mode. + eWeights = 2, //!< Start index of weight values, User and Break tangent break mode (data are FbxInt16 tokens from weight and converted to float). + eRightWeight = 2, //!< Index of weight on right tangent, User and Break tangent break mode. + eNextLeftWeight = 3, //!< Index of weight on next key's left tangent, User and Break tangent break mode. + eVelocity = 4, //!< Start index of velocity values, Velocity mode + eRightVelocity = 4, //!< Index of velocity on right tangent, Velocity mode + eNextLeftVelocity = 5, //!< Index of velocity on next key's left tangent, Velocity mode + eTCBTension = 0, //!< Index of Tension, TCB tangent mode (data are floats). + eTCBContinuity = 1, //!< Index of Continuity, TCB tangent mode. + eTCBBias = 2 //!< Index of Bias, TCB tangent mode. + }; +}; + +struct FBXSDK_DLL FbxAnimCurveTangentInfo +{ + inline FbxAnimCurveTangentInfo() + { + mDerivative = 0; + mWeight = FbxAnimCurveDef::sDEFAULT_WEIGHT; + mWeighted = false; + mVelocity = FbxAnimCurveDef::sDEFAULT_VELOCITY; + mHasVelocity = false; + mAuto = 0; + } + + float mDerivative; + float mWeight; + float mVelocity; + float mAuto; + bool mWeighted; + bool mHasVelocity; +}; + +/** This is the interface for implementation of animation key objects. + * \nosubgrouping + * + * \remarks Users should not use this class directly, but always use FbxAnimCurveKey. + * A FbxAnimCurveKey has a FbxAnimCurveKey_Impl. + * But FbxAnimCurveKey_Impl is just an implementation interface, + */ +class FBXSDK_DLL FbxAnimCurveKey_Impl +{ +public: + /** Destructor. + */ + virtual ~FbxAnimCurveKey_Impl() {}; + + /** Assignment operator. + */ + virtual FbxAnimCurveKey_Impl& operator=(const FbxAnimCurveKey_Impl& pFKey) = 0; + + /** Set time and value of key. + * \param pTime New time of this key. + * \param pValue New value of this key. + */ + virtual void Set(FbxTime pTime, float pValue) = 0; + + /** Set a key with cubic interpolation, TCB tangent mode. + * The key is modified according to the other parameters. + * The TCB mode controls the tension, continuity, + * and bias of the curve. + * \param pTime Key time. + * \param pValue Key value. + * \param pData0 Tension. Controls the amount of curvature in the animation curve. The higher the tension is, the more linear + * the curve looks. When the tension is low, the curve looks rounder or wider. + * \param pData1 Continuity. Controls the smoothness or singularity of the curve on the key. + * \param pData2 Bias. Controls if the effect of tension and continuity affect the curve before or after the key. + */ + virtual void SetTCB(FbxTime pTime, float pValue, float pData0 = 0.0f, float pData1 = 0.0f, float pData2 = 0.0f) = 0; + + /** Get the key value. + * \return The value of the key. + */ + virtual float GetValue() const = 0; + + /** Set the key value. + * \param pValue The value to set. + */ + virtual void SetValue(float pValue) = 0; + + /** Get key's interpolation type. + * \return Interpolation type of the queried key. + */ + virtual FbxAnimCurveDef::EInterpolationType GetInterpolation() const = 0; + + /** Set key's interpolation type. + * \param pInterpolation Interpolation type of the key. + */ + virtual void SetInterpolation (FbxAnimCurveDef::EInterpolationType pInterpolation) = 0; + + /** Get key's tangent mode. + * \param pIncludeOverrides Include override flags: Break, Clamp, Time-Independent. + * \return Tangent mode of the key. + * \remarks This method is meaningful for cubic interpolation only. + * Using this method for non cubic interpolated key will return unpredictable value. + */ + virtual FbxAnimCurveDef::ETangentMode GetTangentMode(bool pIncludeOverrides = false) const = 0; + + /** Set tangent mode. + * \param pTangentMode Tangent mode to set. + */ + virtual void SetTangentMode (FbxAnimCurveDef::ETangentMode pTangentMode) = 0; + + /** Get key's tangent weight mode. + * \return Tangent weight mode of the key. + * \remarks This method is meaningful for cubic interpolation only. + */ + virtual FbxAnimCurveDef::EWeightedMode GetTangentWeightMode() const = 0; + + /** Set key's tangent weight mode as double value (cubic interpolation, non TCB tangent mode). + * \param pTangentWeightMode Weight mode. + * \param pMask Used to select the affected tangents. + * \remarks This method is meaningful for cubic interpolation only. + * The pMask will be used to cancel out the current tangent weight mode first, and then be used to + * define which tangent to select to affect. + * + * Sample01: + * \code + * FbxAnimCurveKey* lAnimCurveKey = FbxSdkNew(); + * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedNextLeft); + * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedRight, FbxAnimCurveDef::eWeightedRight); + * \endcode + * pMask is eWeightedRight, it will first be used to cancel out the current tangent weight mode eWeightedNextLeft, + * since they are not the same, it fails to cancel it out. + * Then the mask eWeightedRight will be used to define which tangent should be affected, + * since it is the same as pTangentWeightMode (eWeightedRight), so the eWeightedRight should be affected. + * In total, after above calls, both eWeightedNextLeft and eWeightedRight of this key are affected, so + * lAnimCurveKey->GetTangentWeightMode() will be FbxAnimCurveDef::eWeightedAll. + * + * Sample02: + * \code + * FbxAnimCurveKey* lAnimCurveKey = FbxSdkNew(); + * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedAll); + * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedRight, FbxAnimCurveDef::eWeightedNextLeft); + * \endcode + * pMask is eWeightedNextLeft, it will first be used to cancel out the current tangent weight mode eWeightedAll, + * it will cancel out affect on eWeightedNextLeft, but leave affect on eWeightedRight. + * Then the mask eWeightedNextLeft will be used to define which tangent should be affected, + * since it is not the same as pTangentWeightMode (eWeightedRight), so the pMask won't affect anything in this step. + * In total, after above calls, only eWeightedRight of this key is still affected, so + * lAnimCurveKey->GetTangentWeightMode() will be FbxAnimCurveDef::eWeightedRight. + */ + virtual void SetTangentWeightMode(FbxAnimCurveDef::EWeightedMode pTangentWeightMode, FbxAnimCurveDef::EWeightedMode pMask = FbxAnimCurveDef::eWeightedAll ) = 0; + + /** Adjust the actual tangent of the key so that the tangent control point (tangent extremity) + * stays closer to where it should be. This is required because the weight value gets imprecise + * when it is small (it is stored as a fixed point value). This method must be called when + * setting the weight coming from a source where the precision is the same. It must be called + * after the tangent value has been set. + * \remark Do not use this call repetitively (from an interactive editor for example) because + * this function will create imprecision on the tangent value. + * \param pIndex FbxAnimCurveDef::EDataIndex + * \param pWeight New tangent weight value. + */ + virtual void SetTangentWeightAndAdjustTangent(FbxAnimCurveDef::EDataIndex pIndex, double pWeight ) = 0; + + /** Get key's tangent velocity mode. + * \return Tangent velocity mode of the key. + * \remarks This method is meaningful for cubic interpolation only. + */ + virtual FbxAnimCurveDef::EVelocityMode GetTangentVelocityMode() const = 0; + + /** Set key's tangent velocity mode as double value (cubic interpolation, non TCB tangent mode). + * \param pTangentVelocityMode Velocity mode. + * \param pMask Used to select the affected tangents + * \remarks This method is meaningful for cubic interpolation only. + * The pMask will be used to cancel out the current tangent velocity mode first, and then be used to + * define which tangent to select to affect. + * + * \see The documentation of SetTangentWeightMode for more details and samples about how the pMask works. + */ + virtual void SetTangentVelocityMode(FbxAnimCurveDef::EVelocityMode pTangentVelocityMode, FbxAnimCurveDef::EVelocityMode pMask = FbxAnimCurveDef::eVelocityAll ) = 0; + + /** Get key constant mode. + * \return Key constant mode. + * \remarks This method is meaningful for constant interpolation only. + * Using this method for non constant interpolated key will return unpredicted value. + */ + virtual FbxAnimCurveDef::EConstantMode GetConstantMode() const = 0; + + /** Set key's constant mode. + * \param pMode Constant mode to set. + * \remarks This method is meaningful for constant interpolation only. + */ + virtual void SetConstantMode(FbxAnimCurveDef::EConstantMode pMode) = 0; + + /** Get the value of specified data of the key. + * \param pIndex Data index to specify which data to get value, the index is dependent on the key tangent mode. + * \return The value of the specified data. + * + * \code + * FbxAnimCurveKey* lKey; // we suppose this is a valid pointer + * if(lKey->GetTangentMode() == FbxAnimCurveDef::eTangentTCB) + * { + * lKey->GetDataFloat(FbxAnimCurveDef::eTCBTension); + * lKey->GetDataFloat(FbxAnimCurveDef::eTCBContinuity); + * lKey->GetDataFloat(FbxAnimCurveDef::eTCBBias); + * } + * \endcode + */ + virtual float GetDataFloat(FbxAnimCurveDef::EDataIndex pIndex) const = 0; + + /** Set the value of specified data of the key. + * \param pIndex Data index to specify which data to get value, the index is dependent on the key tangent mode. + * \param pValue The data value to set. + * + * \code + * FbxAnimCurveKey* lKey; // we suppose this is a valid pointer + * lKey->SetInterpolation(FbxAnimCurveDef::eInterpolationCubic); + * lKey->SetTangentMode(FbxAnimCurveDef::eTangentAuto); + * lKey->SetDataFloat(FbxAnimCurveDef::eRightSlope, 0.0); + * \endcode + */ + virtual void SetDataFloat(FbxAnimCurveDef::EDataIndex pIndex, float pValue) = 0; + + /** Set tangent visibility mode. This would indicate what part of the tangent is visible in a graphical interface. + * \param pVisibility Tangent visibility mode. + * \remarks This method is meaningful for cubic interpolation only. + */ + virtual void SetTangentVisibility (FbxAnimCurveDef::ETangentVisibility pVisibility) = 0; + + /** Return tangent visibility mode. + * \return Tangent visibility mode. + * \remarks This method is meaningful for cubic interpolation only. + */ + virtual FbxAnimCurveDef::ETangentVisibility GetTangentVisibility () const = 0; + + /** Turn on or turn off the tangent break. + * When this flag is on (FbxAnimCurveDef::eTANGEAT_BREAK will be set), the key's left and right slopes are independent. + * When this flag is off, the key's left and right slope are equal. + * \param pVal Break flag (\c true or \c false). + * \remarks This method is meaningful for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. + */ + virtual void SetBreak(bool pVal) = 0; + + /** Get if the tangent has a break. + * When this flag is set (FbxAnimCurveDef::eTANGEAT_BREAK), the key's left and right slopes are independent. + * When this flag is off, the key's left and right slope are equal. + * \return Break flag (\c true or \c false). + * \remarks This method is meaningful for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. + */ + virtual bool GetBreak() const = 0; +}; + +/** This is the interface for the FBX animation curve keys. + * A key is defined by a time and a value. It also has tangents that control how the animation curve enters and exits the key. + * \nosubgrouping + * + *\remarks This class is now the main animation key object of the SDK, + * Users should always use this class to handle animation curve key. + * This class has a FbxAnimCurveKey_Impl as its implementation interface, + * Default constructor does not initialize data members. + * If an instance has to be initialized, use function FbxAnimCurveKey::Set(). + */ +class FBXSDK_DLL FbxAnimCurveKey : public FbxAnimCurveKeyBase +{ +public: + /** Constructor with no argument + */ + FbxAnimCurveKey() : FbxAnimCurveKeyBase() + { + FBX_ASSERT(mAllocatorFct != NULL); + mImpl = (*mAllocatorFct)(); + } + + /** Constructor with time. + * \param pTime The time of key. + */ + FbxAnimCurveKey(FbxTime pTime) : FbxAnimCurveKeyBase() + { + FBX_ASSERT(mAllocatorFct != NULL); + mImpl = (*mAllocatorFct)(); + SetTime(pTime); + } + + /** Constructor with time and value. + * \param pTime The time of key. + * \param pVal The value of key. + */ + FbxAnimCurveKey(FbxTime pTime, float pVal) : FbxAnimCurveKeyBase() + { + FBX_ASSERT(mAllocatorFct != NULL); + mImpl = (*mAllocatorFct)(); + Set(pTime, pVal); + } + + /** Copy constructor + */ + FbxAnimCurveKey(FbxAnimCurveKey const& pFKey) : FbxAnimCurveKeyBase() + { + FBX_ASSERT(mCopyAllocatorFct != NULL); + SetTime(pFKey.GetTime()); + mImpl = mCopyAllocatorFct(pFKey.GetImpl()); + } + + /** Destructor + */ + ~FbxAnimCurveKey() + { + FBX_ASSERT(mDeallocatorFct != NULL); + (*mDeallocatorFct)(mImpl); + } + + /** Assignment operator + */ + FbxAnimCurveKey& operator=(const FbxAnimCurveKey& pFKey) + { + FBX_ASSERT(mImpl); + if (mImpl) + { + *mImpl = *(pFKey.GetImpl()); + } + SetTime(pFKey.GetTime()); + return *this; + } + + /** Get time value. + * \return Time value. + */ + FbxTime GetTime() const + { + return FbxAnimCurveKeyBase::GetTime(); + } + + /** Set time value. + * \param pTime Time value to set. + */ + void SetTime(const FbxTime& pTime) + { + FbxAnimCurveKeyBase::SetTime(pTime); + } + + /** Set time and value of key. + * \param pTime New time of this key. + * \param pValue New value of this key. + */ + void Set(FbxTime pTime, float pValue) + { + FbxAnimCurveKeyBase::SetTime(pTime); + mImpl->Set(pTime, pValue); + } + + /** Set a key with cubic interpolation, TCB tangent mode. + * The key is modified according to the other parameters. + * The TCB mode controls the tension, continuity, + * and bias of the curve. + * \param pTime Key time. + * \param pValue Key value. + * \param pData0 Tension. Controls the amount of curvature in the animation curve. The higher the tension is, the more linear + * the curve looks. When the tension is low, the curve looks rounder or wider. + * \param pData1 Continuity. Controls the smoothness or singularity of the curve on the key. + * \param pData2 Bias. Controls if the effect of tension and continuity affect the curve before or after the key. + */ + void SetTCB(FbxTime pTime, float pValue, float pData0 = 0.0f, float pData1 = 0.0f, float pData2 = 0.0f) + { + FbxAnimCurveKeyBase::SetTime(pTime); + mImpl->SetTCB(pTime, pValue, pData0, pData1, pData2); + } + + /** Get the key value. + * \return The value of the key. + */ + float GetValue() const + { + return mImpl->GetValue(); + } + + /** Set the key value. + * \param pValue The value to set. + */ + void SetValue(float pValue) + { + mImpl->SetValue(pValue); + } + + + /** Get key's interpolation type. + * \return Interpolation type of the queried key. + */ + FbxAnimCurveDef::EInterpolationType GetInterpolation() + { + return mImpl->GetInterpolation(); + } + + /** Set key's interpolation type. + * \param pInterpolation Interpolation type of the key. + */ + void SetInterpolation (FbxAnimCurveDef::EInterpolationType pInterpolation) + { + mImpl->SetInterpolation(pInterpolation); + } + + /** Get key's tangent mode. + * \param pIncludeOverrides Include override flags: Break, Clamp, Time-Independent. + * \return Tangent mode of the key. + * \remarks This method is meaningful for cubic interpolation only. + * Using this method for non cubic interpolated key will return unpredictable value. + */ + FbxAnimCurveDef::ETangentMode GetTangentMode(bool pIncludeOverrides = false) + { + return mImpl->GetTangentMode(pIncludeOverrides); + } + + /** Set tangent mode. + * \param pTangentMode Tangent mode to set. + */ + void SetTangentMode (FbxAnimCurveDef::ETangentMode pTangentMode) + { + mImpl->SetTangentMode(pTangentMode); + } + + /** Get key's tangent weight mode. + * \return Tangent weight mode of the key. + * \remarks This method is meaningful for cubic interpolation only. + */ + FbxAnimCurveDef::EWeightedMode GetTangentWeightMode() const + { + return mImpl->GetTangentWeightMode(); + } + + /** Set key's tangent weight mode as double value (cubic interpolation, non TCB tangent mode). + * \param pTangentWeightMode Weight mode. + * \param pMask Used to select the affected tangents. + * \remarks This method is meaningful for cubic interpolation only. + * The pMask will be used to cancel out the current tangent weight mode first, and then be used to + * define which tangent to select to affect. + * + * Sample01: + * \code + * FbxAnimCurveKey* lAnimCurveKey = FbxSdkNew(); + * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedNextLeft); + * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedRight, FbxAnimCurveDef::eWeightedRight); + * \endcode + * pMask is eWeightedRight, it will first be used to cancel out the current tangent weight mode eWeightedNextLeft, + * since they are not the same, it fails to cancel it out. + * Then the mask eWeightedRight will be used to define which tangent should be affected, + * since it is the same as pTangentWeightMode (eWeightedRight), so the eWeightedRight should be affected. + * In total, after above calls, both eWeightedNextLeft and eWeightedRight of this key are affected, so + * lAnimCurveKey->GetTangentWeightMode() will be FbxAnimCurveDef::eWeightedAll. + * + * Sample02: + * \code + * FbxAnimCurveKey* lAnimCurveKey = FbxSdkNew(); + * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedAll); + * lAnimCurveKey->SetTangentWeightMode(FbxAnimCurveDef::eWeightedRight, FbxAnimCurveDef::eWeightedNextLeft); + * \endcode + * pMask is eWeightedNextLeft, it will first be used to cancel out the current tangent weight mode eWeightedAll, + * it will cancel out affect on eWeightedNextLeft, but leave affect on eWeightedRight. + * Then the mask eWeightedNextLeft will be used to define which tangent should be affected, + * since it is not the same as pTangentWeightMode (eWeightedRight), so the pMask won't affect anything in this step. + * In total, after above calls, only eWeightedRight of this key is still affected, so + * lAnimCurveKey->GetTangentWeightMode() will be FbxAnimCurveDef::eWeightedRight. + */ + void SetTangentWeightMode(FbxAnimCurveDef::EWeightedMode pTangentWeightMode, FbxAnimCurveDef::EWeightedMode pMask = FbxAnimCurveDef::eWeightedAll ) + { + mImpl->SetTangentWeightMode(pTangentWeightMode, pMask); + } + + /** Adjust the actual tangent of the key so that the tangent control point (tangent extremity) + * stays closer to where it should be. This is required because the weight value gets imprecise + * when it is small (it is stored as a fixed point value). This method must be called when + * setting the weight coming from a source where the precision is the same. It must be called + * after the tangent value has been set. + * \remark Do not use this call repetitively (from an interactive editor for example) because + * this function will create imprecision on the tangent value. + * \param pIndex FbxAnimCurveDef::EDataIndex + * \param pWeight New tangent weight value. + */ + void SetTangentWeightAndAdjustTangent(FbxAnimCurveDef::EDataIndex pIndex, double pWeight ) + { + mImpl->SetTangentWeightAndAdjustTangent(pIndex, pWeight); + } + + /** Get key's tangent velocity mode. + * \return Tangent velocity mode of the key. + * \remarks This method is meaningful for cubic interpolation only. + */ + FbxAnimCurveDef::EVelocityMode GetTangentVelocityMode() const + { + return mImpl->GetTangentVelocityMode(); + } + + /** Set key's tangent velocity mode as double value (cubic interpolation, non TCB tangent mode). + * \param pTangentVelocityMode Velocity mode. + * \param pMask Used to select the affected tangents + * \remarks This method is meaningful for cubic interpolation only. + * The pMask will be used to cancel out the current tangent velocity mode first, and then be used to + * define which tangent to select to affect. + * + * \see The documentation of SetTangentWeightMode for more details and samples about how the pMask works. + */ + void SetTangentVelocityMode(FbxAnimCurveDef::EVelocityMode pTangentVelocityMode, FbxAnimCurveDef::EVelocityMode pMask = FbxAnimCurveDef::eVelocityAll ) + { + mImpl->SetTangentVelocityMode(pTangentVelocityMode, pMask); + } + + /** Get key constant mode. + * \return Key constant mode. + * \remarks This method is meaningful for constant interpolation only. + * Using this method for non constant interpolated key will return unpredicted value. + */ + FbxAnimCurveDef::EConstantMode GetConstantMode() const + { + return mImpl->GetConstantMode(); + } + + /** Set key's constant mode. + * \param pMode Constant mode to set. + * \remarks This method is meaningful for constant interpolation only. + */ + void SetConstantMode(FbxAnimCurveDef::EConstantMode pMode) + { + mImpl->SetConstantMode(pMode); + } + + /** Get the value of specified data of the key. + * \param pIndex Data index to specify which data to get value, the index is dependent on the key tangent mode. + * \return The value of the specified data. + * + * \code + * FbxAnimCurveKey* lKey; // we suppose this is a valid pointer + * if(lKey->GetTangentMode() == FbxAnimCurveDef::eTangentTCB) + * { + * lKey->GetDataFloat(FbxAnimCurveDef::eTCBTension); + * lKey->GetDataFloat(FbxAnimCurveDef::eTCBContinuity); + * lKey->GetDataFloat(FbxAnimCurveDef::eTCBBias); + * } + * \endcode + */ + float GetDataFloat(FbxAnimCurveDef::EDataIndex pIndex) const + { + return mImpl->GetDataFloat(pIndex); + } + + /** Set the value of specified data of the key. + * \param pIndex Data index to specify which data to get value, the index is dependent on the key tangent mode. + * \param pValue The data value to set. + * + * \code + * FbxAnimCurveKey* lKey; // we suppose this is a valid pointer + * lKey->SetInterpolation(FbxAnimCurveDef::eInterpolationCubic); + * lKey->SetTangentMode(FbxAnimCurveDef::eTangentAuto); + * lKey->SetDataFloat(FbxAnimCurveDef::eRightSlope, 0.0); + * \endcode + */ + void SetDataFloat(FbxAnimCurveDef::EDataIndex pIndex, float pValue) + { + mImpl->SetDataFloat(pIndex, pValue); + } + + /** Set tangent visibility mode. This would indicate what part of the tangent is visible in a graphical interface. + * \param pVisibility Tangent visibility mode. + * \remarks This method is meaningful for cubic interpolation only. + */ + void SetTangentVisibility (FbxAnimCurveDef::ETangentVisibility pVisibility) + { + mImpl->SetTangentVisibility(pVisibility); + } + + /** Return tangent visibility mode. + * \return Tangent visibility mode. + * \remarks This method is meaningful for cubic interpolation only. + */ + FbxAnimCurveDef::ETangentVisibility GetTangentVisibility () const + { + return mImpl->GetTangentVisibility(); + } + + /** Turn on or turn off the tangent break. + * When this flag is on (FbxAnimCurveDef::eTANGEAT_BREAK will be set), the key's left and right slopes are independent. + * When this flag is off, the key's left and right slope are equal. + * \param pVal Break flag (\c true or \c false). + * \remarks This method is meaningful for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. + */ + void SetBreak(bool pVal) + { + mImpl->SetBreak(pVal); + } + + /** Get if the tangent has a break. + * When this flag is set (FbxAnimCurveDef::eTANGEAT_BREAK), the key's left and right slopes are independent. + * When this flag is off, the key's left and right slope are equal. + * \return Break flag (\c true or \c false). + * \remarks This method is meaningful for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. + */ + bool GetBreak() const + { + return mImpl->GetBreak(); + } + + /** Get key implementation. + * \return Pointer to implemented instance. + */ + FbxAnimCurveKey_Impl* GetImpl() const + { + return mImpl; + } + + /** Set allocator function + * \param pAllocatorFct Allocator function + */ + static void SetAllocatorFct(FbxAnimCurveKey_Impl* (*pAllocatorFct)()); + + /** Set copy allocator function + * \param pCopyAllocatorFct Copy allocator function + */ + static void SetCopyAllocatorFct(FbxAnimCurveKey_Impl* (*pCopyAllocatorFct)(FbxAnimCurveKey_Impl*)); + + /** Set deallocator function + * \param pDeallocatorFct Deallocator function + */ + static void SetDeallocatorFct(void (*pDeallocatorFct)(FbxAnimCurveKey_Impl*)); + +private: + static FbxAnimCurveKey_Impl* (*mAllocatorFct)(); + static FbxAnimCurveKey_Impl* (*mCopyAllocatorFct)(FbxAnimCurveKey_Impl*); + static void (*mDeallocatorFct)(FbxAnimCurveKey_Impl*); + FbxAnimCurveKey_Impl* mImpl; +}; + +class FbxScene; + +/** An animation curve, defined by a collection of keys (FbxAnimCurveKey), and indicating how a value changes over time. +* Since an animation curve is a function, on a given animation curve, only one key per time is +* allowed. The keys are sorted +* in time order. They can be accessed by their index on the curve, from 0 to FbxAnimCurve::KeyGetCount-1. +* The time unit in FBX (FbxTime) is 1/46186158000 of one second. +* +* Each key defines tangents and interpolation that modify the animation curve. +* Tangents control the way the animation curve enters and exits the keys. +* Interpolation indicates the animation curve's behavior between keys. +* +* Interpolation modes are +* \li Constant - Curve value stays the same until next key +* \li Linear - Animation curve is a straight line +* \li Cubic - Animation curve is a Bezier spline +* +* Tangent modes are +* \li Auto (Spline cardinal) +* \li Spline TCB (Tension, Continuity, Bias) +* \li User (Next slope at the left equal to slope at the right) +* +* Tangent modes can be overridden by more tangent options: +* \li Break (Independent left and right slopes) +* \li Clamp (Key should be flat if next or previous key has the same value) +* \li Time independent +* +* Tangent can be modified some more by adding weights and velocity. +* By default, the weights are 0.333 on either side of the key, and there is +* no velocity. Velocity settings speed up or slow down animation on either side of +* a key without changing the trajectory of the animation. Unlike Auto and Weight settings, +* Velocity changes the animation in time, but not in space. +* +* \nosubgrouping +* \remarks FbxAnimCurve is now the main animation animation curve object of the SDK. +* Users should always use this class to handle animation curve. +* +* \note When adding keys to an animation curve, use FbxAnimCurve::KeyModifyBegin and FbxAnimCurve::KeyModifyEnd. +* please refer to the following sample code: +* \code +* FbxTime lTime; +* int lKeyIndex = 0; + +* // Create curve +* FbxAnimCurve* lAnimCurve = FbxAnimCurve::Create(pScene, "Cube Animation"); + +* // Add keys to the curve +* lAnimCurve->KeyModifyBegin(); + +* // First key: time 0, value 0 +* lTime.SetSecondDouble(0.0); +* lKeyIndex = lAnimCurve->KeyAdd(lTime); +* lAnimCurve->KeySet(lKeyIndex, lTime, 0.0, FbxAnimCurveDef::eInterpolationLinear); + +* // Second key: time 20s, value -3600 +* // Since this curve will describe rotation, each cube will rotate 10 times around itself during 20 seconds. +* lTime.SetSecondDouble(20.0); +* lKeyIndex = lAnimCurve->KeyAdd(lTime); +* lAnimCurve->KeySet(lKeyIndex, lTime, -3600, FbxAnimCurveDef::eInterpolationLinear); + +* // Done adding keys. +* lAnimCurve->KeyModifyEnd(); +* \endcode +* +*/ +class FBXSDK_DLL FbxAnimCurve : public FbxAnimCurveBase +{ + FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxAnimCurve, FbxAnimCurveBase); + +public: + /** + * \name Animation curve creation. + * + */ + //@{ + /** Create a FbxAnimCurve. + * \param pContainer Scene to which the created animation curve belongs. + * \param pName Name of the animation curve. + * \return Newly created animation curve + */ + static FbxAnimCurve* Create(FbxScene* pContainer, const char* pName); + //@} + + /** + * \name Key management. + * + */ + //@{ + /** Resize animation curve buffer to hold a certain number of keys. + * \param pKeyCount Number of keys the animation curve will eventually hold. + */ + virtual void ResizeKeyBuffer(int pKeyCount) = 0; + + /** Call this function prior to adding, removing or editing keys of an animation curve. + * Call function FbxAnimCurve::KeyModifyEnd() after modification. + */ + virtual void KeyModifyBegin () = 0; + + /** Call this function after adding, removing or editing keys of an animation curve. + * Function FbxAnimCurve::KeyModifyBegin() must have been called prior to modify the keys. + */ + virtual void KeyModifyEnd () = 0; + + //! Remove all the keys of the animation curve and free buffer memory. + virtual void KeyClear () = 0; + + /** Get the number of keys. + * \return Key count. + */ + virtual int KeyGetCount () const = 0; + + /** Add a given key at given time. The new key is appended after all the other animation curve's keys. + * Function FbxAnimCurve::KeyInsert() should be used instead if the key + * is to be added in the curve and not at the end. This function does not + * respect the interpolation type and tangents of the neighboring keys. + * If there is already a key at the given time, the key is modified and no + * new key is added. + * + * \param pTime Time of the new key. + * \param pKey Key to add. + * \param pLast Index of the last processed key to speed up search. If this function is called in a loop, + * initialize this value to 0 and let it be updated by each call. + * \return Index of the key at given time, no matter if it was added + * or already present. + * + * \remark Key value, interpolation type and tangent mode must be set + * explicitly afterwards. + */ + virtual int KeyAdd (FbxTime pTime, FbxAnimCurveKeyBase& pKey, int* pLast = NULL) = 0; + + /** Add a key at given time. The new key is appended after all the other animation curve's keys. + * Function FbxAnimCurve::KeyInsert() should be used instead if the key + * is to be added in the curve and not at the end. This function does not + * respect of the interpolation type and tangents of the neighboring keys. + * If there is already a key a the given time, no key is added. + * + * \param pTime Time of the new key. + * \param pLast Index of the last processed key to speed up search. If this function is called in a loop, + * initialize this value to 0 and let it be updated by each call. + * \return Index of the key at given time, no matter if it was added + * or already present. + * \remark Key value, interpolation type and tangent mode must be set + * explicitly afterwards. + */ + virtual int KeyAdd (FbxTime pTime, int* pLast = NULL) = 0; + + /** Set (or replace) key at given index with given key. + * \param pIndex Index of the key to be set or replaced. + * \param pKey New key at this index. + * \return \c true if key time is superior to previous key time + * and inferior to next key time, \c false otherwise. + * \remark Result is undetermined if animation curve has no key or if index + * is out of bounds. + */ + virtual bool KeySet(int pIndex, FbxAnimCurveKeyBase& pKey) = 0; + + /** Remove key at given index. Other key indices are updated automatically. + * \param pIndex Index of key to remove. + * \return \c true on success, \c false otherwise. + */ + virtual bool KeyRemove(int pIndex) = 0; + + /** Remove all the keys in the given range. + * \param pStartIndex Index of the first key to remove (inclusive). + * \param pEndIndex Index of the last key to remove (inclusive). + * \return true on success. + */ + virtual bool KeyRemove(int pStartIndex, int pEndIndex) = 0; + + /** Insert a key at given time. + * This function should be used instead of FbxAnimCurve::KeyAdd() if the key + * is to be added in the curve and not at the end. It inserts the key in + * respect to the interpolation type and tangents of the neighboring keys. + * If there is already a key a the given time, the key is modified and no + * new key is added. + * \param pTime Time of the new key. + * \param pLast Index of the last processed key to speed up search. If this + * function is called in a loop, initialize this value to 0 and let it + * be updated by each call. + * \return Index of the key at given time, no matter if it was inserted + * or already present. + * \remark Key value must be set explicitly afterwards. The + * interpolation type and tangent mode are copied from the previous key. + */ + virtual int KeyInsert ( FbxTime pTime, int* pLast = NULL ) = 0; + + /** Find key index for a given time. + * \param pTime Time of the key looked for. + * \param pLast Index of the last processed key to speed up search. If this + * function is called in a loop, initialize this value to 0 and let it + * be updated by each call. + * \return Key index. The integer part of the key index gives the + * index of the closest key with a smaller time. The decimals give + * the relative position of given time compared to previous and next + * key times. Returns -1 if animation curve has no key. + * + * For example (using seconds for clarity), if there is a key at time 10s with index 5, and a key at + * time 11s with index 6, KeyFind(10.3s) would return 5.3. + */ + virtual double KeyFind (FbxTime pTime, int* pLast = NULL) = 0; + + /** Scale value of all keys. + * \param pMultValue Scale applied on key values. + * \return \c true on success, \c false otherwise. + */ + virtual bool KeyScaleValue (float pMultValue) = 0; + + /** Scale value and tangent of all keys. + * \param pMultValue Scale applied on key values and tangents. + * \return \c true on success, \c false otherwise. + */ + virtual bool KeyScaleValueAndTangent (float pMultValue) = 0; + //@} + + /** + * \name Key Manipulation + */ + + //@{ + /** General function to set key properties. + * The key at index pKeyIndex is retrieved and modified according to the other parameters. + * The key must have been previously created, for example using KeyAdd. + * Use FbxAnimCurve::SetTCB() in the specific case of setting a key with cubic interpolation and TCB tangent mode. + * \param pKeyIndex Index of the key. + * \param pTime Key time. + * \param pValue Key value. + * \param pInterpolation Key interpolation type. + * \param pTangentMode Key tangent mode (meaningful for cubic interpolation only). + * \param pData0 Value of right slope. + * \param pData1 Value of next left slope. + * \param pTangentWeightMode Weight mode, if used. + * \param pWeight0 Weight for right slope, if tangent weight mode is eWeightedRight or eWeightedAll. + * \param pWeight1 Weight for next left slope, if tangent weight mode is eWeightedNextLeft or eWeightedAll. + * \param pVelocity0 Velocity for right slope, if tangent velocity mode is eVelocityRight or eVelocityAll. + * \param pVelocity1 Velocity for next left slope, if tangent velocity mode is eVelocityNextLeft or eVelocityAll. + */ + virtual void KeySet(int pKeyIndex,FbxTime pTime, float pValue, FbxAnimCurveDef::EInterpolationType pInterpolation = FbxAnimCurveDef::eInterpolationCubic, FbxAnimCurveDef::ETangentMode pTangentMode = FbxAnimCurveDef::eTangentAuto, float pData0 = 0.0,float pData1 = 0.0,FbxAnimCurveDef::EWeightedMode pTangentWeightMode = FbxAnimCurveDef::eWeightedNone, float pWeight0 = FbxAnimCurveDef::sDEFAULT_WEIGHT,float pWeight1 = FbxAnimCurveDef::sDEFAULT_WEIGHT,float pVelocity0 = FbxAnimCurveDef::sDEFAULT_VELOCITY,float pVelocity1 = FbxAnimCurveDef::sDEFAULT_VELOCITY) = 0; + + /** Set a key with cubic interpolation, TCB tangent mode. + * The key at index pKeyIndex is retrieved and modified according to the other parameters. + * The TCB mode controls the tension, continuity, + * and bias of the curve. + * \param pKeyIndex Index of the key. + * \param pTime Key time. + * \param pValue Key value. + * \param pData0 Tension. Controls the amount of curvature in the animation curve. The higher the tension is, the more linear + * the curve looks. When the tension is low, the curve looks rounder or wider. + * \param pData1 Continuity. Controls the smoothness or singularity of the curve on the key. + * \param pData2 Bias. Controls if the effect of tension and continuity affect the curve before or after the key. + */ + virtual void KeySetTCB(int pKeyIndex,FbxTime pTime, float pValue, float pData0 = 0.0f, float pData1 = 0.0f, float pData2 = 0.0f) = 0; + + /** Get key's interpolation type. + * \param pKeyIndex Index of the queried key. + * \return Interpolation type of the queried key. + */ + virtual FbxAnimCurveDef::EInterpolationType KeyGetInterpolation(int pKeyIndex) const = 0; + + /** Set key's interpolation type. + * \param pKeyIndex Index of the key. + * \param pInterpolation Key interpolation type. + */ + virtual void KeySetInterpolation(int pKeyIndex, FbxAnimCurveDef::EInterpolationType pInterpolation) = 0; + + /** Get key's constant mode. + * \note This method is only relevant if the key's interpolation type is constant (eInterpolationConstant). + * Using this method on a key with an other interpolation type will return unpredictable value. + * \param pKeyIndex Index of the queried key. + * \return Key constant mode. + */ + virtual FbxAnimCurveDef::EConstantMode KeyGetConstantMode(int pKeyIndex) const = 0; + + /** Get key's tangent mode. + * \param pKeyIndex Index of the key. + * \param pIncludeOverrides Include override flags: Break, Clamp, Time-Independent. + * This method is meaningful for cubic interpolation only. + * Using this method for non cubic interpolated key will return unpredictable value. + * \return Key tangent mode. + */ + virtual FbxAnimCurveDef::ETangentMode KeyGetTangentMode(int pKeyIndex, bool pIncludeOverrides = false ) const = 0; + + /** Set key's constant mode. + * This method is meaningful for constant interpolation only. + * \param pKeyIndex Index of the key. + * \param pMode Key constant mode. + */ + virtual void KeySetConstantMode(int pKeyIndex, FbxAnimCurveDef::EConstantMode pMode) = 0; + + /** Set key's tangent mode. + * This method is meaningful for cubic interpolation only. + * \param pKeyIndex Index of the key. + * \param pTangent Key tangent mode. + */ + virtual void KeySetTangentMode(int pKeyIndex, FbxAnimCurveDef::ETangentMode pTangent) = 0; + + /** Get key at given index. + * \param pIndex Index of the key on the animation curve. + * \return The key at the given index. + * \remark Result is undetermined if animation curve has no key or if index + * is out of bounds. + */ + virtual FbxAnimCurveKey KeyGet(int pIndex) const = 0; + + /** Get key value. + * \param pKeyIndex Index of the queried key. + * \return Key value. + */ + virtual float KeyGetValue(int pKeyIndex) const = 0; + + /** Set key value. + * \param pKeyIndex Index of the key. + * \param pValue The value to set. + */ + virtual void KeySetValue(int pKeyIndex, float pValue) = 0; + + /** Increment key value. + * \param pKeyIndex Index of the key. + * \param pValue Term added to the key value. + */ + virtual void KeyIncValue(int pKeyIndex, float pValue) = 0; + + /** Multiply key value. + * \param pKeyIndex Index of the key. + * \param pValue Factor multiplying the key value. + * \see FbxAnimCurve::KeyMultTangent. + */ + virtual void KeyMultValue(int pKeyIndex, float pValue) = 0; + + /** Multiply key tangents. + * \remark When multiplying a key value, tangents must be + * multiplied to conserve the same topology. + * \param pKeyIndex Index of the key. + * \param pValue Factor multiplying the key tangents. + */ + virtual void KeyMultTangent(int pKeyIndex, float pValue) = 0; + + /** Get key time + * \param pKeyIndex Index of the queried key. + * \return Key time (time at which this key is occurring). + */ + virtual FbxTime KeyGetTime(int pKeyIndex) const = 0; + + /** Set key time. + * \param pKeyIndex Index of the key. + * \param pTime Key time (time at which this key is occurring). + * \remark The new key time might modify the key index. + */ + virtual void KeySetTime(int pKeyIndex, FbxTime pTime) = 0; + + /** Set or unset the tangent break. When this flag is set (FbxAnimCurveDef::eTangentBreak), the key's left and right slopes are independent. + * When this flag is off, the key's left and right slope are equal. + * This method is relevant for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. + * \param pKeyIndex Index of the key. + * \param pVal Break flag (\c true or \c false). + */ + virtual void KeySetBreak(int pKeyIndex, bool pVal) = 0; + + /** Get if the tangent has a break. When this flag is set (FbxAnimCurveDef::eTangentBreak), the key's left and right slopes are independent. + * When this flag is off, the key's left and right slope are equal. + * This method is relevant for User (FbxAnimCurveDef::eTangentUser) and Auto (FbxAnimCurveDef::eTangentAuto) tangent modes only. + * \param pKeyIndex Index of the queried key. + * \return Break flag (\c true or \c false). + */ + virtual bool KeyGetBreak(int pKeyIndex) const = 0; + //@} + + /** + * \name Key Tangent Management + */ + //@{ + /** Get the left derivative of a key. + * \param pIndex Index of the queried key. + * \return Left derivative (Value over time (s)). + * \remark Result is undetermined if animation curve has no key or if index + * is out of bounds. + */ + virtual float KeyGetLeftDerivative(int pIndex) = 0; + + /** Set the left derivative of a key. + * \param pIndex Index of the key. + * \param pValue Left derivative. + * \remark Result is undetermined if animation curve has no key or if index + * is out of bounds. + * This function is only relevant if previous key interpolation + * type is eInterpolationCubic and tangent mode is + * FbxAnimCurveDef::eTangentUser, FbxAnimCurveDef::eTangentBreak or FbxAnimCurveDef::eTangentAuto. + */ + virtual void KeySetLeftDerivative(int pIndex, float pValue) = 0; + + /** Get the left auto parametric of a key. This is used to compute the slope of Auto and User keys. + * \param pIndex Index of the key. + * \param pApplyOvershootProtection Clamp flag (eGENERIC_CLAMP) is taken into account. + * \return Left auto parametric. + * \remark Result is undetermined if animation curve has no key or if index + * is out of bounds. + */ + virtual float KeyGetLeftAuto(int pIndex, bool pApplyOvershootProtection = false) = 0; + + /** Get the left derivative info (of type FbxAnimCurveTangentInfo) of a key. + * \param pIndex Index of the queried key. + * \return Left derivative info. + * \remark Result is undetermined if animation curve has no key or if index + * is out of bounds. + */ + virtual FbxAnimCurveTangentInfo KeyGetLeftDerivativeInfo(int pIndex) = 0; + + /** Set the left derivative info (of type FbxAnimCurveTangentInfo) of a key. + * \param pIndex Index of the key. + * \param pValue Left derivative info. + * \param pForceDerivative If \c true, assign the tangent info's derivative value to the key derivative. + * If \c false, use the tangent info's auto parametric value to recompute the key derivative. + * \remark Result is undetermined if animation curve has no key or if index + * is out of bounds. + * This function is only relevant if previous key interpolation + * type is eInterpolationCubic and tangent mode is + * FbxAnimCurveDef::eTangentUser or FbxAnimCurveDef::eTangentBreak. + */ + virtual void KeySetLeftDerivativeInfo(int pIndex, const FbxAnimCurveTangentInfo& pValue, bool pForceDerivative = false) = 0; + + /** Get the right derivative of a key. + * \param pIndex Index of the key. + * \return Right derivative (Value over time (s)). + * \remark Result is undetermined if animation curve has no key or if index + * is out of bounds. + */ + virtual float KeyGetRightDerivative(int pIndex) = 0; + + /** Set the right derivative of a key. + * \param pIndex Index of the key. + * \param pValue Right derivative. + * \remark Result is undetermined if animation curve has no key or if index + * is out of bounds. + * This function is only relevant if previous key interpolation + * type is eInterpolationCubic and tangent mode is + * FbxAnimCurveDef::eTangentUser, FbxAnimCurveDef::eTangentBreak or FbxAnimCurveDef::eTangentAuto. + */ + virtual void KeySetRightDerivative(int pIndex, float pValue) = 0; + + /** Get the right auto parametric of a key. This is used to compute the slope of Auto and User keys. + * \param pIndex Index of the key. + * \param pApplyOvershootProtection Clamp flag (eGENERIC_CLAMP) is taken into account. + * \return Right auto parametric. + * \remark Result is undetermined if animation curve has no key or if index + * is out of bounds. + */ + virtual float KeyGetRightAuto(int pIndex, bool pApplyOvershootProtection = false) = 0; + + /** Get the right derivative info (of type FbxAnimCurveTangentInfo) of a key. + * \param pIndex Index of the queried key. + * \return Right derivative info. + * \remark Result is undetermined if animation curve has no key or if index + * is out of bounds. + */ + virtual FbxAnimCurveTangentInfo KeyGetRightDerivativeInfo(int pIndex) = 0; + + /** Set the right derivative info (of type FbxAnimCurveTangentInfo) of a key. + * \param pIndex Index of the key. + * \param pValue Right derivative info. + * \param pForceDerivative If \c true, assign the tangent info's derivative value to the key derivative. + * If \c false, use the tangent info's auto parametric value to recompute the key derivative. + * \remark Result is undetermined if animation curve has no key or if index + * is out of bounds. + * This function is only relevant if previous key interpolation + * type is eInterpolationCubic and tangent mode is + * FbxAnimCurveDef::eTangentUser or FbxAnimCurveDef::eTangentBreak. + */ + virtual void KeySetRightDerivativeInfo(int pIndex, const FbxAnimCurveTangentInfo& pValue, bool pForceDerivative = false) = 0; + + /** Get the left tangent weight mode of a key. + * \param pIndex Index of queried key. + * \return \c true if the key is left weighted (Weight mode is eWEIGHT_WEIGHTED_RIGHT or eWeightedAll). \c false otherwise. + * \remark Result is undetermined if animation curve has no key or if index + * is out of bounds. + */ + virtual bool KeyIsLeftTangentWeighted(int pIndex) const = 0; + + /** Get the right tangent weight mode of a key. + * \param pIndex Index of queried key. + * \return \c true if the key is right weighted (Weight mode is eWeightedRight or eWeightedAll). \c false otherwise. + * \remark Result is undetermined if animation curve has no key or if index + * is out of bounds. + */ + virtual bool KeyIsRightTangentWeighted(int pIndex) const = 0; + + /** Get the weight value component of the left tangent of a key. + * \param pIndex Index of the key. + * \return Left tangent weight, or eDEFAULT_WEIGHT (0.333...) if left tangent is not weighted. + * \remark This function is only relevant if key interpolation + * type is eInterpolationCubic. + */ + virtual float KeyGetLeftTangentWeight(int pIndex) const = 0; + + /** Get the weight value component of the right tangent of a key. + * \param pIndex Index of the key. + * \return Right tangent weight, or eDEFAULT_WEIGHT (0.333...) if right tangent is not weighted. + * \remark This function is only relevant if key interpolation + * type is eInterpolationCubic. + */ + virtual float KeyGetRightTangentWeight(int pIndex) const = 0; + + /** Set the left tangent weight of a key. + * \param pIndex Index of the key. + * \param pWeight Weight to set on the left tangent. + * \param pAdjustTan If true, recompute the tangent height to compensate for very small weights. + * \remarks This function is only relevant if previous key interpolation + * type is eInterpolationCubic and tangent mode is + * FbxAnimCurveDef::eTangentUser or FbxAnimCurveDef::eTangentBreak. The tangent is + * automatically set in weighted mode. + * The pAdjustTan option will only produce correct results provided that the tangent has already been + * set before calling this function. + */ + virtual void KeySetLeftTangentWeight( int pIndex, float pWeight, bool pAdjustTan = false ) = 0; + + /** Set the right tangent weight of a key. + * \param pIndex Index of the key. + * \param pWeight Weight to set on the right tangent. + * \param pAdjustTan If true, recompute the tangent height to compensate for very small weights. + * \remarks This function is only relevant if key interpolation + * type is eInterpolationCubic and tangent mode is + * FbxAnimCurveDef::eTangentUser or FbxAnimCurveDef::eTangentBreak. The tangent is + * automatically set in weighted mode. + * The pAdjustTan option will only produce correct results provided that the tangent has already been + * set before calling this function. + */ + virtual void KeySetRightTangentWeight( int pIndex, float pWeight, bool pAdjustTan = false ) = 0; + + /** Get the velocity value component of the left tangent of a key. + * \param pIndex Index of the key. + * \return Tangent velocity of the left tangent. + * \remarks This function is only relevant if key interpolation + * type is eInterpolationCubic + */ + virtual float KeyGetLeftTangentVelocity( int pIndex) const = 0; + + /** Get the velocity value component of the right tangent of a key. + * \param pIndex Index of the key. + * \return Tangent velocity of the right tangent. + * \remarks This function is only relevant if key interpolation + * type is eInterpolationCubic + */ + virtual float KeyGetRightTangentVelocity( int pIndex) const = 0; + //@} + + /** + * \name Evaluation and Analysis + */ + //@{ + /** Evaluate animation curve value at a given time. + * \param pTime Time of evaluation. + * If time falls between two keys, animation curve value is + * interpolated according to previous key interpolation type and + * tangent mode if relevant. + * \param pLast Index of the last processed key to speed up search. If this + * function is called in a loop, initialize this value to 0 and let it + * be updated by each call. + * \return Animation curve value on given time, or animation curve's default value if animation curve + * has no key. + * \remarks This function takes extrapolation into account. + */ + virtual float Evaluate (FbxTime pTime, int* pLast = NULL) = 0; + + /** Evaluate animation curve value at a given key index. + * \param pIndex Any value from 0 to FbxAnimCurve::KeyGetCount() - 1. + * \return Animation curve value, or default value if animation curve + * has no key. + * + * \remarks If key index is not an integer value, animation curve value is + * interpolated according to previous key interpolation type and + * tangent mode, if relevant. + * This function does not take extrapolation into account. + * Result is undetermined if index is out of bounds. + */ + virtual float EvaluateIndex( double pIndex) = 0; + + /** Evaluate function left derivative at given time. + * \param pTime Time of evaluation. + * \param pLast Index of the last processed key to speed up search. If this + * function is called in a loop, initialize this value to 0 and let it + * be updated by each call. + * \return Left derivative at given time. + * \remarks This function does not take extrapolation into account. + * Result is undetermined if index is out of bounds. + */ + virtual float EvaluateLeftDerivative (FbxTime pTime, int* pLast = NULL) = 0; + + /** Evaluate function right derivative at given time. + * \param pTime Time of evaluation. + * \param pLast Index of the last processed key to speed up search. If this + * function is called in a loop, initialize this value to 0 and let it + * be updated by each call. + * \return Right derivative at given time. + * \remarks This function does not take extrapolation into account. + * Result is undetermined if index is out of bounds. + */ + virtual float EvaluateRightDerivative (FbxTime pTime, int* pLast = NULL) = 0; + //@} + + /** + * \name Utility functions. + * + */ + //@{ + /** Find out start and end time of the animation animation curve. + * This function retrieves the animation curve's time span. + * \param pTimeInterval Reference to receive start and end time. + * \return \c true on success, \c false otherwise. + */ + virtual bool GetTimeInterval(FbxTimeSpan& pTimeInterval) = 0; + + /** Copy animation curve content into current animation curve. + * \param pSource Animation curve to be copied (which will not be modified). + * \param pWithKeys If \c true, clear keys in current animation curve and copy + * keys from source animation curve. If \c false, keys in current animation curve + * are left as is. + */ + virtual void CopyFrom(FbxAnimCurve& pSource, bool pWithKeys = true) = 0; + + /** Retrieve the value of the parent curve node channel. + * \param pCurveNodeIndex The index of the parent curve node, if more than one exist. + * \return The value of the parent curve node channel of this curve. + * \remark In most case, the curve will have a single curve node channel as destination. However, + * it is possible that more are connected, hence why we provide the curve node index parameter. */ + virtual float GetValue(int pCurveNodeIndex=0) = 0; + + /** Set the value to the parent curve node channel. + * \param pValue The value to set to the parent curve node channel of this curve. + * \param pCurveNodeIndex The index of the parent curve node, if more than one exist. + * \remark In most case, the curve will have a single curve node channel as destination. However, + * it is possible that more are connected, hence why we provide the curve node index parameter. */ + virtual void SetValue(float pValue, int pCurveNodeIndex=0) = 0; + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual KFCurve* GetKFCurve() = 0; + virtual bool Store(FbxIO* pFileObject, bool pLegacyVersion=false) = 0; + virtual bool Retrieve(FbxIO* pFileObject) = 0; + virtual void ExtrapolationSyncCallback() = 0; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_ANIMATION_CURVE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimcurvebase.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimcurvebase.h new file mode 100644 index 00000000..772d5b66 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimcurvebase.h @@ -0,0 +1,262 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxanimcurvebase.h +#ifndef _FBXSDK_SCENE_ANIMATION_CURVE_BASE_H_ +#define _FBXSDK_SCENE_ANIMATION_CURVE_BASE_H_ + +#include + +#include + +#include + +class FbxIO; + +/** This is the base class interface for the FBX animation curve keys. + * \nosubgrouping + * + * \remarks For an example of implemented class, please see FbxAnimCurveKey. + */ +class FBXSDK_DLL FbxAnimCurveKeyBase +{ +public: + /** Data member representing time value. + */ + FbxTime mTime; + + /** Constructor. + */ + FbxAnimCurveKeyBase() + { + mTime = FBXSDK_TIME_ZERO; + } + + /** Destructor. + */ + virtual ~FbxAnimCurveKeyBase() {}; + + /** Get time value. + * \return Time value. + */ + virtual FbxTime GetTime() const + { + return mTime; + } + + /** Set time value. + * \param pTime Time value to set. + */ + virtual void SetTime(const FbxTime& pTime) { + mTime = pTime; + } +}; + +/** This is the base class for implementing animation curves. + * \nosubgrouping + * It is a pure virtual class that defines the general interface to animation + * key management and manipulation. + * + * \see FbxAnimCurve for fully implemented class. + */ +class FBXSDK_DLL FbxAnimCurveBase : public FbxObject +{ + FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxAnimCurveBase, FbxObject); + +public: + /** + * \name Key management. + * + */ + //@{ + //! Remove all the keys and free buffer memory. + virtual void KeyClear () = 0; + + //! Get the number of keys. + virtual int KeyGetCount () const = 0; + + /** Add a key at given time. + * \param pTime Time to add the key. + * \param pKey Key to add. + * \param pLast Index of the last processed key to speed up search. If this + * function is called in a loop, initialize this value to 0 and let it + * be updated by each call. + * \return Index of the key at given time, no matter if it was added + * or already present. + */ + virtual int KeyAdd (FbxTime pTime, FbxAnimCurveKeyBase& pKey, int* pLast = NULL) = 0; + + /** Set key at given index. + * \param pIndex Index of where the key should be set. + * \param pKey The key to set. + * \return \c true if key time is superior to previous key and inferior + * to next key, \c false otherwise. + * \remarks Result is undetermined if function curve has no key or index + * is out of bounds. + */ + virtual bool KeySet(int pIndex, FbxAnimCurveKeyBase& pKey) = 0; + + /** Remove key at given index. + * \param pIndex Index of key to remove. + * \return \c true on success, \c false otherwise. + */ + virtual bool KeyRemove(int pIndex) = 0; + + /** Remove all the keys in the given range. + * \param pStartIndex Index of the first key to remove (inclusive). + * \param pEndIndex Index of the last key to remove (inclusive). + * \return \c true on success, \c false otherwise. + */ + virtual bool KeyRemove(int pStartIndex, int pEndIndex) = 0; + + //@} + + /** + * \name Key Time Manipulation + */ + //@{ + /** Get key time. + * \param pKeyIndex Key index. + * \return Key time (time at which this key is occurring). + */ + virtual FbxTime KeyGetTime(int /*pKeyIndex*/) const { return FBXSDK_TIME_INFINITE; } + + /** Set key time. + * \param pKeyIndex Key index. + * \param pTime Key time (time at which this key is occurring). + */ + virtual void KeySetTime(int pKeyIndex, FbxTime pTime) = 0; + + //@} + + /** + * \name Extrapolation + * Extrapolation defines the function curve value before and after the keys. + * Pre-extrapolation defines the function curve value before first key. + * Post-extrapolation defines the function curve value after last key. + *
  • CONSTANT means a constant value matching the first/last key. + *
  • REPETITION means the entire function curve is looped. + *
  • MIRROR_REPETITION means the entire function curve is looped once backward, once forward and so on. + *
  • KEEP_SLOPE means a linear function with a slope matching the first/last key.
+ */ + //@{ + enum EExtrapolationType + { + eConstant = 1, + eRepetition = 2, + eMirrorRepetition = 3, + eKeepSlope = 4 + } ; + + /** Set pre-extrapolation mode. + * \param pExtrapolation The pre-extrapolation mode to set. + */ + void SetPreExtrapolation(EExtrapolationType pExtrapolation); + + /** Get pre-extrapolation mode. + * \return The current pre-extrapolation mode. + */ + EExtrapolationType GetPreExtrapolation() const { return mPreExtrapolation; } + + /** Set pre-extrapolation count. + * \param pCount Number of repetitions if pre-extrapolation mode is + * REPETITION or MIRROR_REPETITION. + */ + void SetPreExtrapolationCount(unsigned long pCount); + + /** Get pre-extrapolation count. + * \return Number of repetitions if pre-extrapolation mode is + * REPETITION or MIRROR_REPETITION. + */ + unsigned long GetPreExtrapolationCount() const { return mPreExtrapolationCount; } + + /** Set post-extrapolation mode. + * \param pExtrapolation The post-extrapolation mode to set. + */ + void SetPostExtrapolation(EExtrapolationType pExtrapolation); + + /** Get post-extrapolation mode. + * \return The current post-extrapolation mode. + */ + EExtrapolationType GetPostExtrapolation() const { return mPostExtrapolation; } + + /** Set post-extrapolation count. + * \param pCount Number of repetitions if post-extrapolation mode is + * REPETITION or MIRROR_REPETITION. + */ + void SetPostExtrapolationCount(unsigned long pCount); + + /** Get post-extrapolation count. + * \return Number of repetitions if post-extrapolation mode is + * REPETITION or MIRROR_REPETITION. + */ + unsigned long GetPostExtrapolationCount() const { return mPostExtrapolationCount; } + //@} + + /** + * \name Evaluation and Analysis + */ + //@{ + /** Evaluate curve value at a given time. + * \param pTime Time of evaluation. + * \param pLast Index of the last processed key to speed up search. If this + * function is called in a loop, initialize this value to 0 and let it + * be updated by each call. + * \return Evaluated curve value. + * \remarks This function take extrapolation into account. + */ + virtual float Evaluate (FbxTime pTime, int* pLast = NULL) = 0; + + /** Evaluate curve value at the given key index. + * \param pIndex Any value from 0 to KeyGetCount() - 1. + * If this index falls between keys, the curve value will + * be interpolated based on the surrounding keys. + * \return Evaluated curve value. + */ + virtual float EvaluateIndex( double pIndex) = 0; + //@} + + /** + * \name Utility functions. + * + */ + //@{ + /** Find out start and end time of the animation curve. + * This function retrieves the Curve's time span. + * \param pTimeInterval Reference to receive start time and end time. + * \return \c true on success, \c false otherwise. + */ + virtual bool GetTimeInterval(FbxTimeSpan& pTimeInterval); + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + virtual bool Store(FbxIO* pFileObject, bool pLegacyVersion=false) = 0; + virtual bool Retrieve(FbxIO* pFileObject) = 0; + virtual void ExtrapolationSyncCallback() = 0; + +protected: + virtual void Construct(const FbxObject* pFrom); + +private: + EExtrapolationType mPreExtrapolation; + unsigned long mPreExtrapolationCount; + EExtrapolationType mPostExtrapolation; + unsigned long mPostExtrapolationCount; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif // FBXFILESDK_KFBXPLUGINS_KFBXANIMCURVEBASE_H diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimcurvefilters.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimcurvefilters.h new file mode 100644 index 00000000..e536f827 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimcurvefilters.h @@ -0,0 +1,1546 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxanimcurvefilters.h +#ifndef _FBXSDK_SCENE_ANIMATION_CURVE_FILTERS_H_ +#define _FBXSDK_SCENE_ANIMATION_CURVE_FILTERS_H_ + +#include + +#include +#include +#include +#include +#include // for FbxLimits + +#include + +class FbxObject; +class FbxAnimStack; +class FbxRotationOrder; + +/** Base class for animation curve filters. +* Animation curves can be modified through filters. The filters act on +* the curve keys and values. They can move, add or remove keys, +* modify key values and key tangents, depending on the desired action +* of the filter. +* Some simple examples are: +* \li A scale filter, that would multiply all key +* values of a curve, and the curve default value, by a given scale. +* \li A constant key reducer filter, that would clean a curve by removing +* redundant keys that all have the same value. +* +* Filters can act on a single animation curve (FbxAnimCurve), but some +* filters need to work on many animation curves at the same time. For +* this reason, the input to a filter can be an animation stack (FbxAnimStack), an object (FbxObject) +* with animated properties, an animation curve node (FbxAnimCurveNode), or an array of animation +* curves (FbxAnimCurve). +* For example, an unroll filter acts on 3 Euler rotation curves (X, Y and Z) at the same time. +* +* A filter has a start time (that can be as low as TC_MINFINITY) and a stop time (that can be as high as TC_INFINITY). +* The filter is only applied to the parts of the animation curves that are between the start and stop time. +* +* The following are two code samples about how to use filter. +* Code sample to use sync filter: +* \code +* FbxAnimCurve* lWorkCurves[3]; //Put some keys in the lWorkCurves and they sync them up. +* FbxAnimCurveFilterKeySync lSyncFilter; +* FbxTime pStart, pStop; //Given start and stop time. +* lSyncFilter.SetStartTime( pStart ); +* lSyncFilter.SetStopTime ( pStop ); +* if( lSyncFilter.NeedApply( lWorkCurves, 3 ) ) +* { +* lSyncFilter.Apply( lWorkCurves, 3 ); +* } +* \endcode +* +* Code sample to use unroll filter: +* \code +* FbxAnimCurveNode* pCurveNode; //An Euler rotation animation curve node. +* FbxAnimCurveFilterUnroll lUnrollFilter; +* lUnrollFilter.SetForceAutoTangents(true); +* lUnrollFilter.Apply(*pCurveNode); +* \endcode +* +* \nosubgrouping +*/ +class FBXSDK_DLL FbxAnimCurveFilter +{ +public: + //! Constructor. + FbxAnimCurveFilter(); + + //! Destructor. + virtual ~FbxAnimCurveFilter() {}; + + /** + * \name Member functions + */ + //@{ + /** Get the name of the filter. + * \return Pointer to the name. + */ + virtual const char* GetName() const {return NULL;} + + /** Get the start time for the application of the filter. + * The part of the animation curves before the start time will remain untouched. + * \return The time expressed as FbxTime. + */ + FbxTime& GetStartTime() {return mStart;} + + /** Set the start time for the application of the filter. + * The part of the animation curves before the start time will remain untouched. + * \param pTime The time to be set. + */ + void SetStartTime(FbxTime& pTime) { mStart = pTime; } + + /** Get the stop time for the application of the filter. + * The part of the animation curves after the stop time will remain untouched. + * \return The time expressed as FbxTime. + */ + FbxTime& GetStopTime() {return mStop;} + + /** Set the stop time for the application of the filter. + * The part of the animation curves after the stop time will remain untouched. + * \param pTime The time to be set. + */ + void SetStopTime(FbxTime& pTime) { mStop = pTime; } + + /** Get the index of start key on the given curve. This is the index of the first key + * after (or on) the filter's start time. + * \param pCurve Curve on which we want to retrieve the start key. + * \return Index of the start key. + */ + int GetStartKey(FbxAnimCurve& pCurve) const; + + /** Get the index of stop key on the given curve. This is the index of the last key + * before (or on) the filter's stop time. + * \param pCurve Curve on which we want to retrieve the stop key. + * \return Index of the stop key. + */ + int GetStopKey(FbxAnimCurve& pCurve) const; + + /** Check if any curve on the animation stack needs an application of the filter. + * \param pAnimStack Animation stack where to retrieve the animation curves + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if at least one animated property needs an application of the filter. + */ + virtual bool NeedApply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL); + + /** Check if all the animated properties of the object need an application of the filter. + * \param pObj Object containing the properties to test. + * \param pAnimStack Animation stack where to retrieve the animation curves + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if at least one animated property needs an application of the filter. + */ + virtual bool NeedApply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL); + + /** Check if the animation curve node needs an application of the filter. + * \param pCurveNode Curve node to test. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the animation curve node needs an application of the filter. + * \remarks This method collects all the FbxAnimCurve objects connected to the curve node + * and calls NeedApply(FbxAnimCurve**, int) + */ + virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); + + /** Check if the given animation curve need an application of the filter. + * \param pCurve Array of curves to test if they need the and application of the filter. + * \param pCount Number of curves in array. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if at least one animation curve in the array needs an application of the filter. + */ + virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); + + /** Check if an animation curve need an application of the filter. + * \param pCurve Curve to test if it needs application of filter. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the animation curve needs an application of the filter. + */ + virtual bool NeedApply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); + + /** Apply filter to all the curves stored in the animation stack. + * \param pAnimStack Animation stack where to retrieve the animation curves + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + */ + virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus = NULL); + + /** Apply filter to all the animated properties of the object. + * \param pObj Object containing the animated properties to which the filter is applied. + * \param pAnimStack Animation stack where to retrieve the animation curves + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + */ + virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus = NULL); + + /** Apply filter on all the curves of an animation curve node. + * \param pCurveNode Curve node to which the filter is applied. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + * \remarks This method collects all the FbxAnimCurve objects connected to the curve node + * and calls Apply(FbxAnimCurve**, int) + */ + virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus = NULL); + + /** Apply filter on an array of animation curves. + * \param pCurve Array of curves to which the filter is applied. + * \param pCount Number of curves in the array. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + */ + virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus = NULL); + + /** Apply filter on an animation curve. + * \param pCurve Curve to which the filter is applied. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + */ + virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus = NULL) = 0; + + /** Reset the filter to its default parameters. + */ + virtual void Reset() + { + mStart= FBXSDK_TIME_MINUS_INFINITE; + mStop = FBXSDK_TIME_INFINITE; + } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + static bool GetContinuousOffset(FbxRotationOrder& pOrder, FbxVector4& pOffset, FbxVector4& pNew, FbxVector4& pOld); + +protected: + void GetKFCurvesFromAnimCurve(FbxAnimCurve** pSrc, int pSrcCount, KFCurve** pDst, int& pDstCount); + + // Called for progress bar update, indicating what portion of work is done. + virtual void UpdateProgressInformation(FbxTime /*pStart*/, FbxTime /*pStop*/) {}; + + // Time span for applying the filter. + FbxTime mStart, mStop; + +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + +/** Constant key reducing filter. + * \nosubgrouping + * Filter to test if each key is really necessary to define the curve + * at a definite degree of precision. It filters recursively from the + * strongest difference first. All useless keys are eliminated. + */ +class FBXSDK_DLL FbxAnimCurveFilterConstantKeyReducer : public FbxAnimCurveFilter +{ +public: + //! Constructor. + FbxAnimCurveFilterConstantKeyReducer(); + + //! Destructor. + virtual ~FbxAnimCurveFilterConstantKeyReducer() {}; + + /** Get the name of the filter. + * \return Pointer to name. + */ + virtual const char* GetName() const; + + /** + * \name Exposed parent class methods. + */ + //@{ + virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } + virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } + virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } + //@} + + /** Apply filter on all the curves of an animation curve node. + * \param pCurveNode Curve node to which the filter is applied. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + * \remarks This method collects all the FbxAnimCurve objects connected to the curve node + * and calls Apply(FbxAnimCurve**, int) + */ + virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); + + /** Apply filter on an animation curve. + * \param pCurve Curve to which the filter is applied. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + */ + virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); + + /** Reset the filter to its default parameters. + */ + virtual void Reset(); + + /** Get the current derivative tolerance. + * \return The value of the current derivative tolerance. + */ + double GetDerivativeTolerance() const; + + /** Set the derivative tolerance. + * \param pValue Value derivative tolerance. + */ + void SetDerivativeTolerance(double pValue); + + /** Get the tolerance value. + * \return The tolerance value. + */ + double GetValueTolerance() const; + + /** Set the tolerance value. + * \param pValue Tolerance value. + */ + void SetValueTolerance(double pValue); + + /** Get the state of the KeepFirstAndLastKeys flag. + * \return \c true if the filter keeps the first and last keys. + */ + bool GetKeepFirstAndLastKeys() const; + + /** Set the state of the KeepFirstAndLastKeys flag. + * \param pKeepFirstAndLastKeys Set to \c true if you want the filter to keep the first and last keys. + */ + void SetKeepFirstAndLastKeys( bool pKeepFirstAndLastKeys ); + + /** Get the state of the KeepOneKey flag. + * If all the keys are constant and this flag is c\ true, the filter will keep the first key. + * If all the keys are constant and this flag is c\ false, the filter will delete all the keys. + * \return \c true if the filter keeps the first key when all keys are constant. + */ + bool GetKeepOneKey() const; + + /** Set the state of the KeepOneKey flag. + * If all the keys are constant and this flag is c\ true, the filter will keep the first key. + * If all the keys are constant and this flag is c\ false, the filter will delete all the keys. + * \param pKeepOneKey Set to \c true if you want the filter to keep the first key when all keys are constant. + */ + void SetKeepOneKey( bool pKeepOneKey ); + + /** Tell the filter to keep CUBIC curve keys which are not pure AUTO. + * \param pKeep KeepNotPureAutoKeys flag. + */ + void SetKeepNotPureAutoKeys(bool pKeep); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + // + // If ValueTolerance is default, we use the thresholds here, otherwise + // it is the ValueTolerance that is used. (Mainly for backward compatibility) + // + void SetTranslationThreshold ( double pTranslationThreshold ); + void SetRotationThreshold ( double pRotationThreshold ); + void SetScalingThreshold ( double pScalingThreshold ); + void SetDefaultThreshold ( double pDefaultThreshold ); + + void SetModes(bool pExporting, FbxIOSettings& pIOS); + +private: + double mDerTol; + double mValTol; + + double mTranslationThreshold; + double mRotationThreshold; + double mScalingThreshold; + double mDefaultThreshold; + + bool mKeepFirstAndLastKeys; + bool mKeepOneKey; + bool mKeepNotPureAutoKeys; + + bool IsKeyConstant(FbxAnimCurve& pCurve, int pIndex, int pFirstIndex, int pLastIndex, double pMinValue, double pMaxValue, bool pOnlyCheckAutoKeys); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/**This filter tries to compensate parent's scale to children's scale. + * This filter is used to convert scale animation curves of nodes whose transform inherit type are eInheritRrs. + * In the eInheritRrs mode, child objects do not inherit scaling from parent objects at all. + * When a parent object is scaled, the child does not scale, but translates in order to keep proportional distance between models. + * If you want to change the inherit type of certain nodes from eInheritRrs to eInheritRrSs, + * you may call this filter to compensate scale. + */ +class FBXSDK_DLL FbxAnimCurveFilterScaleCompensate : public FbxAnimCurveFilter +{ +public: + //! Constructor. + FbxAnimCurveFilterScaleCompensate(); + //! Return name of the filter. + virtual const char* GetName() const; + + /** + * \name Exposed parent class methods. + */ + //@{ + virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } + virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } + virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus = NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } + virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus = NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } + //@} + + /**Compensate parent's scale to children's scale. + * \param pCurve In pCurve, index 0 is the curve to be filtered. index 1 is the parent curve. + * \param pCount Need to be 2. + * \param pIOS IO setting object. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + * \remarks This filter will re-sample the animation curves. + */ + virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxIOSettings& pIOS, FbxStatus* pStatus = NULL); + /** Always fail because this filter needs 2 curves. */ + virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus = NULL); +}; + +/**GimbleKiller filter. + *\nosubgrouping + * This filter try to minimize gimble locks on rotation curves. + * \remarks The current implementation of this filter expects to process 3 curves at the same time. + * \remarks This filter has been superseded by the Unroll filter. It is strongly advised to use + * the latter. + */ +class FBXSDK_DLL FbxAnimCurveFilterGimbleKiller : public FbxAnimCurveFilter +{ +public: + //! Constructor. + FbxAnimCurveFilterGimbleKiller(); + + //! Destructor. + virtual ~FbxAnimCurveFilterGimbleKiller(); + + /** Get the name of the filter. + * \return Pointer to name. + */ + virtual const char* GetName() const; + + /** This filter expects to work with 3 interdependent curves. Passing the animation stack makes no sense. + * since this object would not know which curves to handle. + * \param pAnimStack Animation stack + * \param pStatus The FbxStatus object to hold error codes. + * \return \c false. + */ + virtual bool NeedApply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } + + /** This filter expects to work with 3 interdependent curves. Collecting all the animation curves from + * the properties defined in \e pObj could not guarantee that we are manipulating 3 interdependent curves. + * \param pObj Object containing the properties to test. + * \param pAnimStack Animation stack where to retrieve the animation curves + * \param pStatus The FbxStatus object to hold error codes. + * \return \c false + */ + virtual bool NeedApply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } + + /** Check if the animation curve node needs an application of the filter. + * \param pCurveNode Curve node to test. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the animation curve node needs an application of the filter, \c false otherwise. + * \remarks This method checks that the \e pCurveNode is representing an Euler rotation. + * It will validate that 3 animation curves are defined. + * If the condition is not met, the method will return \c false. + */ + virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); + + /** Check if the given animation curve need an application of the filter. + * \param pCurve Array of curves to test if they need the and application of the filter. + * \param pCount Number of curves in array. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if at least one animation curve in the array needs an application of the filter. + * \remarks Because this method only receives an array of interdependent curves, this filter assumes + * that they are all coming from an Euler rotation anim curve node. Therefore, it expects + * \e pCount to be equal to 3. + */ + virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); + + /** This filter expects to work with interdependent curves. Receiving one single curve is useless. + * \return \c false + */ + virtual bool NeedApply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } + + /** This filter expects to work with 3 interdependent curves. Passing the animation stack makes no sense + * since this object would not know which curves to handle. + * \param pAnimStack Animation stack + * \param pStatus The FbxStatus object to hold error codes. + * \return \c false. + */ + virtual bool Apply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } + + /** This filter expects to work with 3 interdependent curves. Collecting all the animation curves from + * the properties defined in \e pObj could not guarantee that we are manipulating 3 interdependent curves. + * \param pObj Object containing the properties to test. + * \param pAnimStack Animation stack where to retrieve the animation curves + * \param pStatus The FbxStatus object to hold error codes. + * \return \c false + */ + virtual bool Apply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } + + /** Apply filter on all the curves of an animation curve node. + * \param pCurveNode Curve node to which the filter is applied. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + * \remarks This method collects all the FbxAnimCurve objects connected to the curve node + * and calls Apply(FbxAnimCurve**, int) + */ + virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus = NULL); + + /** Apply filter on the given animation curve. + * \param pCurve Array of curve to which the filter is applied. + * \param pCount Number of curves in array. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + * \remarks Because this method only receives an array of interdependent curves, this filter assumes + * that they are all coming from an Euler rotation anim curve node. Therefore, it expects + * \e pCount to be equal to 3. + */ + virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus = NULL); + + /** This filter expects to work with interdependent curves. Receiving one single curve is useless. + * \return \c false + */ + virtual bool Apply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus = NULL) { FBX_UNUSED(pStatus); return false; } + + /** Reset the filter to its default parameters. + */ + virtual void Reset(); + + //! Return \c true if key sync filter is enabled. + bool GetApplyKeySyncFilter() const; + + /** Set to \c true to enable key sync filter. + * \param pFlag Key sync filter flag. + */ + void SetApplyKeySyncFilter(bool pFlag); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + FbxRotationOrder* mRotationOrder; + bool mApplyKeySyncFilter; + int mRotationLayerType; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** Key reducing filter. + * \nosubgrouping + * Filter to test if each key is really necessary to define the curve + * at a definite degree of precision. It filters recursively from the + * strongest difference first. All useless keys are eliminated. + */ +class FBXSDK_DLL FbxAnimCurveFilterKeyReducer : public FbxAnimCurveFilter +{ +public: + //! Constructor. + FbxAnimCurveFilterKeyReducer(); + + //! Destructor. + virtual ~FbxAnimCurveFilterKeyReducer() {}; + + /** Get the name of the filter. + * \return Pointer to name. + */ + virtual const char* GetName() const; + + /** + * \name Exposed parent class methods. + */ + //@{ + virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } + virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } + virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } + //@} + + /** Apply filter on the given animation curve. + * \param pCurve Array of curve to which the filter is applied. + * \param pCount Number of curves in array. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + */ + virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); + + /** Apply filter on an animation curve. + * \param pCurve Curve to which the filter is applied. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + */ + virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); + + /** Reset the filter to its default parameters. + */ + virtual void Reset(); + + //! Get precision. + double GetPrecision() const; + + /** Set precision. + * \param pPrecision The precision to set. + */ + void SetPrecision(double pPrecision); + + //! Return \c true key sync is applied at the end. + bool GetKeySync() const; + + /** Set to \c true to apply key sync at the end. + * \param pKeySync Key sync flag. + */ + void SetKeySync(bool pKeySync); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + bool KeyReducer(FbxAnimCurve& pSCurve, FbxAnimCurve& pTCurve, FbxTime pStart, FbxTime pStop); + bool Subdivise(FbxAnimCurve& pSCurve, FbxAnimCurve& pTCurve, int pLeft, int pRight); + double FindMaxError(FbxAnimCurve& pSCurve, FbxAnimCurve& pTCurve, int pLeft, int pRight, int& pSplit); + + // User parameters. + double mPrecision; + int mProgressCurrentRecurseLevel; + bool mKeySync; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + +/** Key sync filter. + * \nosubgrouping + * Filter to synchronize the keys of a set of animation curves. +*/ +class FBXSDK_DLL FbxAnimCurveFilterKeySync : public FbxAnimCurveFilter +{ +public: + //! Constructor. + FbxAnimCurveFilterKeySync(); + + //! Destructor. + virtual ~FbxAnimCurveFilterKeySync() {}; + + /** Get the name of the filter. + * \return Pointer to name. + */ + virtual const char* GetName() const; + + /** + * \name Exposed parent class methods. + */ + //@{ + virtual bool NeedApply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pAnimStack, pStatus); } + virtual bool NeedApply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pObj, pAnimStack, pStatus); } + virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pCurveNode, pStatus); } + virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } + virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } + virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } + //@} + + /** Check if the given animation curve need an application of the filter. + * \param pCurve Array of curves to test if they need the and application of the filter. + * \param pCount Number of curves in array. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if at least one animation curve in the array needs an application of the filter. + */ + virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); + + /** One single curve cannot be sync'ed. + * \param pCurve Curve to test if it needs application of filter. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c false + */ + virtual bool NeedApply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } + + /** Apply filter on the given animation curve. + * \param pCurve Array of curve to which the filter is applied. + * \param pCount Number of curves in array. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + */ + virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); + + /** Apply filter on an animation curve. + * \param pCurve Curve to which the filter is applied. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true. + * \remarks Has no effect since there is only one curve. + */ + virtual bool Apply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return true; } +}; + + +/** Re-sampling filter. + * \nosubgrouping + * Filter to re-sample animation curves. + */ +class FBXSDK_DLL FbxAnimCurveFilterResample : public FbxAnimCurveFilter +{ +public: + //! Constructor. + FbxAnimCurveFilterResample(); + + //! Destructor. + virtual ~FbxAnimCurveFilterResample() {}; + + /** Get the name of the filter. + * \return Pointer to name. + */ + virtual const char* GetName() const; + + /** + * \name Exposed parent class methods. + */ + //@{ + virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } + virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } + virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } + virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } + //@} + + /** Apply the filter on an animation curve. + * \param pCurve Curve to which the filter is applied. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + */ + virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); + + /** Reset the filter to its default parameters. + */ + virtual void Reset(); + + /** Set if the keys are on frame. + * \param pKeysOnFrame value if keys are set on frame multiples. + */ + void SetKeysOnFrame(bool pKeysOnFrame); + + /** Get if the keys are on frame. + * \return Value if keys are on frame multiples. + */ + bool GetKeysOnFrame() const; + + /** Get the re-sampling period + * \return The re-sampling period. + */ + FbxTime GetPeriodTime() const; + + /** Set the re-sampling period + * \param pPeriod The re-sampling period to be set. + */ + void SetPeriodTime(FbxTime &pPeriod); + + + /**Get the mode that determines how the re-sample filter will set the interpolation and tangent of each key. + * \return \c true if the intelligent mode is on, \c false otherwise. + * \remarks If intelligent mode is on, interpolation type and tangent mode of each created curve key + * are set equal to the interpolation type and tangent mode of the closest curve key encountered. + * If intelligent mode is off, the interpolation type of each created curve key + * will always be set to CUBIC, and tangent mode will always be set to AUTO. + */ + bool GetIntelligentMode() const; + + /** Set the mode that determines how the re-sample filter will set the interpolation and tangent of each key. + * \param pIntelligent \c true, set interpolation type and tangent mode of each created curve key equal to + * the interpolation type and tangent mode of the closest curve key encountered. + * \c false, always set the interpolation type of each created curve key to CUBIC, + * and always set the tangent mode to AUTO. + */ + void SetIntelligentMode( bool pIntelligent ); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + bool mKeysOnFrame; + FbxTime mPeriod; + bool mIntelligent; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + +/** Key scale filter. + * \nosubgrouping + * Filter to scale the keys of a set of animation curves. +*/ +class FBXSDK_DLL FbxAnimCurveFilterScale : public FbxAnimCurveFilter +{ +public: + //! Constructor. + FbxAnimCurveFilterScale(); + + //! Destructor. + virtual ~FbxAnimCurveFilterScale() {}; + + /** Get the name of the filter. + * \return Pointer to name. + */ + virtual const char* GetName() const; + + /** + * \name Exposed parent class methods. + */ + //@{ + virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } + virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } + virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } + //@} + + /** Apply filter on all the curves of an animation curve node. + * \param pCurveNode Curve node to which the filter is applied. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + * \remarks This method collects all the FbxAnimCurve objects connected to the curve node + * and calls Apply(FbxAnimCurve**, int) + */ + virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); + + /** Apply filter on an animation curve. + * \param pCurve Curve to which the filter is applied. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + */ + virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); + + /** Reset the filter to its default parameters. + */ + virtual void Reset(); + + /** Get the scale factor. + * \return The current scale factor. + */ + double GetScale() const; + + /** Set the scale factor. + * \param pScale The new scale factor to set. + */ + void SetScale(double pScale); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + double mScale; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + +/** Key scale filter. Instead of scaling by a constant float value, we will scale by using another anim curve + * Use a single channel curve only to scale + * \nosubgrouping + * Filter to scale the keys of a set of animation curves. +*/ +class FBXSDK_DLL FbxAnimCurveFilterScaleByCurve : public FbxAnimCurveFilter +{ +public: + //! Constructor. + FbxAnimCurveFilterScaleByCurve(); + + //! Destructor. + virtual ~FbxAnimCurveFilterScaleByCurve() {}; + + /** Get the name of the filter. + * \return Pointer to name. + */ + virtual const char* GetName() const; + + /** + * \name Exposed parent class methods. + */ + //@{ + virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pAnimStack, pStatus); } + virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pObj, pAnimStack, pStatus); } + virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::Apply(pCurve, pCount, pStatus); } + //@} + + /** Apply filter on all the curves of an animation curve node. + * \param pCurveNode Curve node to which the filter is applied. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + * \remarks This method collects all the FbxAnimCurve objects connected to the curve node + * and calls Apply(FbxAnimCurve**, int) + */ + virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); + + /** Apply filter on an animation curve. + * \param pCurve Curve to which the filter is applied. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + */ + virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); + + /** Reset the filter to its default parameters. (null curve) + */ + virtual void Reset(); + + /** Get the scale factor. + * \return The current scale factor. + */ + FbxAnimCurve* GetScale() const; + + /** Set the scale factor. + * \param pScale The new scale factor to set. + */ + void SetScale(FbxAnimCurve* pScale); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + FbxAnimCurve* mScale; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/**Time shift and scale filter. + *\nosubgrouping + * Filter to shift key times and scale key values on animation curves. + */ +class FBXSDK_DLL FbxAnimCurveFilterTSS : public FbxAnimCurveFilter +{ +public: + //! Constructor. + FbxAnimCurveFilterTSS(); + + //! Destructor. + virtual ~FbxAnimCurveFilterTSS() {}; + + /** Get the name of the filter. + * \return Pointer to name. + */ + virtual const char* GetName() const; + + /** + * \name Exposed parent class methods. + */ + //@{ + virtual bool Apply(FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return FbxAnimCurveFilter::Apply(pAnimStack); } + virtual bool Apply(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return FbxAnimCurveFilter::Apply(pObj, pAnimStack); } + virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return FbxAnimCurveFilter::Apply(pCurveNode); } + virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return FbxAnimCurveFilter::Apply(pCurve, pCount); } + //@} + + /** Apply filter on an animation curve. + * \param pCurve Curve to which the filter is applied. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + */ + virtual bool Apply(FbxAnimCurve& pCurve, FbxStatus* pStatus=NULL); + + /** Reset the filter to its default parameters. + */ + virtual void Reset(); + + /** Get the time shift value. + * \return The time value used for the shift. + */ + FbxTime GetShift() const; + + /** Set the time shift value. + * \param pShift The time value used for the shift. + */ + void SetShift(FbxTime& pShift); + + /** Get the scale factor. + * \return The current scale factor. + */ + double GetScale() const; + + /** Set the scale factor. + * \param pScale The new scale factor to set. + */ + void SetScale(double pScale); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + FbxTime mShift; + double mScale; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** Unroll filter. + *\nosubgrouping + * Filter to apply continuous rotation values to animation curves. Due to Euler rotation + * properties, when a rotation angle cross over the 180 degree value, it becomes -179. This + * filter tries to keep a continuous rotation effectively by producing increasing values, to + * actually become 181 degrees, etc... + * \remarks The current implementation of this filter expects to process 3 curves at the same time. + * \remarks By default, this filter does not affect the tangent values of the modified keys. + * This means that, for CUBIC interpolation curves containing keys with USER or BREAK + * tangents, the unrolled curves will correctly match the original rotation exactly on + * the curve keys but not in-between them. The filter can be configured to automatically + * convert the USER and BREAK tangents to AUTO tangents by setting the ForceAutoTangents flag. + * Using the AUTO tangents mode can result in a more consistent interpolation between + * the curve keys. + */ +class FBXSDK_DLL FbxAnimCurveFilterUnroll : public FbxAnimCurveFilter +{ +public: + //! Constructor. + FbxAnimCurveFilterUnroll(); + + //! Destructor. + virtual ~FbxAnimCurveFilterUnroll() {}; + + /** Get the name of the filter. + * \return Pointer to the name. + */ + virtual const char* GetName() const; + + /** This filter expects to work with 3 interdependent curves. Passing the animation stack makes no sense + * since this object would not know which curves to handle. + * \param pAnimStack Animation stack + * \param pStatus The FbxStatus object to hold error codes. + * \return \c false. + */ + virtual bool NeedApply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; }; + + /** This filter expects to work with 3 interdependent curves. Collecting all the animation curves from + * the properties defined in \e pObj could not guarantee that we are manipulating 3 interdependent curves. + * \param pObj Object containing the properties to test. + * \param pAnimStack Animation stack where to retrieve the animation curves + * \param pStatus The FbxStatus object to hold error codes. + * \return \c false. + */ + virtual bool NeedApply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } + + /** Check if the animation curve node needs an application of the filter. + * \param pCurveNode Curve node to test. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the animation curve node needs an application of the filter, \c false otherwise. + * \remarks This method checks that the \e pCurveNode is representing an Euler rotation. + * It will validate that 3 animation curves are defined. + * If the condition is not met, the method will return \c false. + */ + virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); + + /** Check if the given animation curve needs an application of the filter. + * \param pCurve Array of curves to test if they need an application of the filter. + * \param pCount Number of curves in array. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if at least one animation curve in the array needs an application of the filter, + * \c false otherwise. + * \remarks Because this method only receives an array of interdependent curves, this filter assumes + * that they are all coming from an Euler rotation anim curve node. Therefore, it expects + * \e pCount to be equal to 3. + */ + virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); + + /** This filter expects to work with interdependent curves. Receiving one single curve is useless. + * \return \c false. + */ + virtual bool NeedApply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; }; + + /** This filter expects to work with 3 interdependent curves. Passing the animation stack makes no sense + * since this object would not know which curves to handle. + * \param pAnimStack Animation stack where to retrieve the animation curves. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c false. + */ + virtual bool Apply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; }; + + /** This filter expects to work with 3 interdependent curves. Collecting all the animation curves from + * the properties defined in \e pObj could not guarantee that we are manipulating 3 interdependent curves. + * \param pObj Object containing the properties to test. + * \param pAnimStack Animation stack where to retrieve the animation curves. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c false. + */ + virtual bool Apply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } + + /** Apply filter on all the curves of an animation curve node. + * \param pCurveNode Curve node to which the filter is applied. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + * \remarks This filter expects a Euler rotation curve node with three curves. + */ + virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL); + + /** Apply filter on the given animation curve. + * \param pCurve Array of curve to which the filter is applied. + * \param pCount Number of curves in array. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + * \remarks Because this method only receives an array of interdependent curves, this filter assumes + * that they are all coming from an Euler rotation anim curve node. Therefore, it expects + * \e pCount to be equal to 3. + */ + virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); + + /** This filter expects to work with 3 interdependent curves. Receiving one single curve is useless. + * \return \c false. + */ + virtual bool Apply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } + + /** Reset the filter to its default parameters. + */ + virtual void Reset(); + + /** Get the unroll quality tolerance. + * \return The current unroll quality tolerance. + * \remarks This value is only used when SetTestForPath() is set to true. + */ + double GetQualityTolerance() const; + + /** Set the unroll quality tolerance. + * \param pQualityTolerance The unroll quality tolerance to set. + * \remarks This value is only used when SetTestForPath() is set to true. + */ + void SetQualityTolerance(double pQualityTolerance); + + /** Get if the test path is enabled. + * \return \c true if test for path is enabled. + * \remarks The unroll filter takes a key as a reference key and updates the following keys accordingly to try to keep + * the continuity between this reference key and its following keys. + * If the test path is enabled, the filter can use the same key as reference key to update the following keys + * until the difference of continuity between the newly updated key and the reference key exceeds the + * quality tolerance, then the reference key will be updated as the newly updated key. + * If the test path is not enabled, the filter will always use the newly updated key as reference to update the next key. + * The quality tolerance can be set and queried by SetQualityTolerance() and GetQualityTolerance(). + */ + bool GetTestForPath() const; + + /** Set if the test path is enabled. + * \param pTestForPath Value to set if test for path is to be enabled. + * \remarks The unroll filter takes a key as a reference key and updates the following keys accordingly to try to keep + * the continuity between this reference key and its following keys. + * If the test path is enabled, the filter can use the same key as reference key to update the following keys + * until the difference of continuity between the newly updated key and the reference key exceeds the + * quality tolerance, then the reference key will be updated as the newly updated key. + * If the test path is not enabled, the filter will always use the newly updated key as reference to update the next key. + * The quality tolerance can be set and queried by SetQualityTolerance() and GetQualityTolerance(). + */ + void SetTestForPath(bool pTestForPath); + + /** Get the current state of the ForceAutoTangents flag. + * \return \c true if forcing AUTO tangents is enabled. + * \remarks This flag is considered only on curves using the CUBIC interpolation and + * keys with the USER or BREAK tangents. For any other type of interpolations + * or tangents, this flag is ignored. + */ + bool GetForceAutoTangents() const; + + /** Set the new state of the ForceAutoTangents flag. + * \param pForceAutoTangents New value of the flag. + * \remarks This flag is considered only on curves using the CUBIC interpolation and + * keys with the USER or BREAK tangents. For any other type of interpolations + * or tangents, this flag is ignored. + */ + void SetForceAutoTangents(bool pForceAutoTangents); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + void SetRotationOrder(FbxEuler::EOrder pOrder); + +private: + double InterpolationQualityFactor(FbxVector4& lV1, FbxVector4& lV2); + + double mQualityTolerance; + bool mTestForPath; + bool mForceAutoTangents; + FbxEuler::EOrder mRotationOrder; + int mRotationLayerType; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** Matrix conversion filter. + * \nosubgrouping + * \remarks The current implementation of this filter expects to process 9 curves. If the + * ApplyUnroll flag is enabled, set with a call to SetApplyUnroll(), the + * internal unroll filter will automatically be configured to convert USER and + * BREAK tangents to AUTO (refer to the FbxAnimCurveFilterUnroll documentation). + */ +class FBXSDK_DLL FbxAnimCurveFilterMatrixConverter : public FbxAnimCurveFilter +{ +public: + //! Constructor. + FbxAnimCurveFilterMatrixConverter(); + + //! Destructor. + virtual ~FbxAnimCurveFilterMatrixConverter(); + + /** Get the name of the filter. + * \return Pointer to name. + */ + virtual const char* GetName() const; + + /** + * \name Exposed parent class methods. + */ + //@{ + virtual bool NeedApply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pCurve, pCount,pStatus); } + virtual bool NeedApply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus=NULL) { return FbxAnimCurveFilter::NeedApply(pCurveNode, pStatus); } + virtual bool Apply(FbxAnimCurveNode& pCurveNode, FbxStatus* pStatus = NULL) { return FbxAnimCurveFilter::Apply(pCurveNode, pStatus); } + //@} + + /** This filter expects to work with interdependent curves. Passing the animation stack makes no sense + * since this object would not know which curves to handle. + * \param pAnimStack Animation stack. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c false + */ + virtual bool NeedApply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } + + /** This filter expects to work with 9 interdependent curves. Collecting all the animation curves from + * the properties defined in \e pObj could not guarantee that we are manipulating 9 interdependent curves. + * \param pObj Object containing the properties to test. + * \param pAnimStack Animation stack where to retrieve the animation curves + * \param pStatus The FbxStatus object to hold error codes. + * \return \c false + */ + virtual bool NeedApply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } + + /** Check if the animation curve nodes need an application of the filter. + * \param pCurveNode Curves to test if they need an application of the filter. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the animation curve nodes need an application of the filter and + * \c false if they don't or an incompatible configuration is detected. + * \remarks This method assumes that \e pCurveNode[0] holds the translation curve, + * \e pCurveNode[1] holds the rotation curves and \e pCurveNode[2] holds the + * scaling curves. + */ + virtual bool NeedApply(FbxAnimCurveNode* pCurveNode[3], FbxStatus* pStatus=NULL); + + /** This filter expects to work with interdependent curves. Receiving one single curve is useless. + * \return \c false. + */ + virtual bool NeedApply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } + + /** This filter expects to work with interdependent curves. Passing the animation stack makes no sense + * since this object would not know which curves to handle. + * \param pAnimStack Animation stack where to retrieve the animation curves. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c false. + */ + virtual bool Apply(FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } + + /** This filter expects to work with 9 interdependent curves. Collecting all the animation curves from + * the properties defined in \e pObj could not guarantee that we are manipulating 9 interdependent curves. + * \param pObj Object containing the properties to test. + * \param pAnimStack Animation stack where to retrieve the animation curves. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c false. + */ + virtual bool Apply(FbxObject* /*pObj*/, FbxAnimStack* /*pAnimStack*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; } + + /** Apply filter on all the curves of the animation curve nodes. + * \param pCurveNode Curve nodes to which the filter is applied. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + * \remarks This method assumes that \e pCurveNode[0] holds the translation curve, + * \e pCurveNode[1] holds the rotation curves and \e pCurveNode[2] holds the + * scaling curves. + */ + virtual bool Apply(FbxAnimCurveNode* pCurveNode[3], FbxStatus* pStatus=NULL); + + /** Apply filter on the given animation curves. + * \param pCurve Array of curve to which the filter is applied. + * \param pCount Number of curves in array. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + * \remarks \e pCount must be equal to 9 + * \remarks Because this method only manipulates FbxAnimCurve objects, it cannot set/get + * the channels value. If the calling application wishes to use this flavor of the + * Apply() method, it is strongly suggested to use the method: + * FbxAnimCurveFilterMatrixConverter::Apply(FbxAnimCurve** pCurve, double& pVals[9]); + * The Apply(FbxAnimCurveNode*) method is not affected by this limitation since + * the channel values can be accessed via the animation curve node. + */ + virtual bool Apply(FbxAnimCurve** pCurve, int pCount, FbxStatus* pStatus=NULL); + + /** Apply filter on the given animation curves. + * \param pCurve Array of curve to which the filter is applied. + * \param pVals Array of channel values (same size as \e pCurve). + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the curve filtering operation was successful, \c false otherwise. + * \remarks This method assumes that \e pCurve contains exactly 9 curves. + * \remarks \e pVals must be correctly initialized with the channels values and, if the + * method calculates new values, they will be returned in this array. + * \remarks The curves are assumed to represent: Translation X,Y and Z, Rotation X,Y and Z and + * Scaling X,Y and Z in this order. + */ + bool Apply(FbxAnimCurve** pCurve, double* pVals, FbxStatus* pStatus=NULL); + + /** This filter expects to work with interdependent curves. Receiving one single curve is useless. + * \return \c false. + */ + virtual bool Apply(FbxAnimCurve& /*pCurve*/, FbxStatus* pStatus=NULL) { FBX_UNUSED(pStatus); return false; }; + + /** Reset the filter to its default parameters. + */ + virtual void Reset(); + + /** \enum EMatrixIndex Matrix index type + * - \e ePreGlobal + * - \e ePreTranslate + * - \e ePostTranslate + * - \e ePreRotate + * - \e ePreScale + * - \e ePostGlobal + * - \e eScaleOffset + * - \e eInactivePre + * - \e eInactivePost + * - \e eRotationPivot + * - \e eScalingPivot + * - \e eMatrixIndexCount + */ + enum EMatrixIndex + { + ePreGlobal, + ePreTranslate, + ePostTranslate, + ePreRotate, + ePostRotate, + ePreScale, + ePostScale, + ePostGlobal, + eScaleOffset, + eInactivePre, + eInactivePost, + eRotationPivot, + eScalingPivot, + eMatrixIndexCount + }; + + /** Get the Translation Rotation Scaling source matrix + * \param pIndex The matrix ID. + * \param pMatrix The matrix used to receive the source matrix. + */ + void GetSourceMatrix(EMatrixIndex pIndex, FbxAMatrix& pMatrix) const; + + /** Set the Translation Rotation Scaling source matrix. + * \param pIndex The matrix ID. + * \param pMatrix The matrix used to set the source matrix. + */ + void SetSourceMatrix(EMatrixIndex pIndex, FbxAMatrix& pMatrix); + + /** Get the Translation Rotation Scaling destination matrix. + * \param pIndex The matrix ID. + * \param pMatrix The matrix used to receive the destination matrix. + */ + void GetDestMatrix(EMatrixIndex pIndex, FbxAMatrix& pMatrix) const; + + /** Set the Translation Rotation Scaling destination matrix. + * \param pIndex The matrix ID. + * \param pMatrix The matrix used to set the destination matrix. + */ + void SetDestMatrix(EMatrixIndex pIndex, FbxAMatrix& pMatrix); + + /** Get the re-sampling period. + * \return the re-sampling period. + */ + FbxTime GetResamplingPeriod () const; + + /** Set the re-sampling period. + * \param pResamplingPeriod The re-sampling period to be set. + */ + void SetResamplingPeriod (FbxTime& pResamplingPeriod); + + /** Get the current state of the flag which determines if the last key should be generated exactly at the end time or not. + * This filter handles 9 animation curves, each of them has a stop time, the latest one is defined as the end time. + * \return \c true if last key is set exactly at end time, \c false otherwise. + */ + bool GetGenerateLastKeyExactlyAtEndTime() const; + + /** Set the flag to determine if the last key will be generated exactly at the end time or not. + * This filter handles 9 animation curves, each of them has a stop time, the latest one is defined as the end time. + * \param pFlag Set to \c true to generate the last key exactly at the end time, \c false otherwise. + */ + void SetGenerateLastKeyExactlyAtEndTime(bool pFlag); + + /** Check if re-sampling is on frame rate multiple. + * \return \c true if re-sampling is on a frame rate multiple. + */ + bool GetResamplingOnFrameRateMultiple() const; + + /** Set the re-sample on a frame rate multiple. + * \param pFlag The value to be set. + * \remarks It might be necessary that the starting time of the converted + * animation starts at an multiple of frame period starting from time 0. + * Most softwares play their animation at a definite frame rate, starting + * from time 0. As re-sampling occurs when we can't guarantee interpolation, + * keys must match with the moment when the curve is evaluated. + */ + void SetResamplingOnFrameRateMultiple(bool pFlag); + + /** Get the current state of the ApplyUnroll flag. + * \return \c true if the internal unroll filter is applied, \c false otherwise. + * \remarks Enable the internal unroll filter to get continuous rotation animation curves. + * \see FbxAnimCurveFilterUnroll. + */ + bool GetApplyUnroll() const; + + /** Set the state of the ApplyUnroll flag. + * \param pFlag Set to \c true to apply an unroll filter to the rotation curves internally, + * \ set to \c false otherwise. + */ + void SetApplyUnroll(bool pFlag); + + /** Get the current state of the flag that determines if constant key reducer is used or not. + * \return \c true if constant key reducer is applied, \c false otherwise. + */ + bool GetApplyConstantKeyReducer() const; + + /** Set the state of the flag that determines if constant key reducer is used or not. + * \param pFlag Set to \c true to apply the constant key reducer, + * \ Set to \c false otherwise. + */ + void SetApplyConstantKeyReducer(bool pFlag); + + /** Get the current state of the flag that determines if the translation data should be re-sampled or not. + * \return \c true if translation data is re-sampled upon conversion, \c false otherwise. + * \remarks If this flag is \c false, translation data must be calculated + * after the conversion process, overriding the re-sampling process. + */ + bool GetResampleTranslation() const; + + /** Set the state of the flag that determines if the translation data should be re-sampled or not. + * \param pFlag Set to \c true to re-sample the translation data, set to \c false otherwise. + * \remarks If this flag is set to \c false, translation data must be calculated + * after the conversion process, overriding the re-sampling process. + */ + void SetResampleTranslation(bool pFlag); + + /** Set the rotation order of the source matrix. + * \param pOrder The rotation order to be set. + */ + void SetSrcRotateOrder(FbxEuler::EOrder pOrder); + + /** Set the rotation order of the destination matrix. + * \param pOrder The rotation order to be set. + */ + void SetDestRotateOrder(FbxEuler::EOrder pOrder); + + /** Set the state of the flag to force usage of the filter even if source and destination matrices are equivalent. + * \param pVal Set to \c true to force usage of the filter, set to \c false otherwise. + */ + void SetForceApply(bool pVal); + + /** Get the current state of the flag to force usage of the filter even if source and destination matrices are equivalent. + * \return \c true to force usage of the filter, \c false otherwise. + */ + bool GetForceApply() const; + + /** Set the Translation limits to be applied during conversion. Only active limits are applied. + * \param limit The rotation limit to be set. + */ + void SetTranslationLimits(FbxLimits &limit ); + + /** Set the rotation limits to be applied during conversion. Only active limits are applied. + * \param limit The rotation limit to be set. + */ + void SetRotationLimits(FbxLimits &limit ); + + /** Set the scaling limits to be applied during conversion. Only active limits are applied. + * \param limit The scaling limit to be set. + */ + void SetScalingLimits(FbxLimits &limit ); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + // Nicer than referring to 0, 1, 2... + enum EAxisIndex {eX, eY, eZ, eAxisCount}; + + // Convert parameter cell. + class Cell; + + bool MatricesEquivalence(FbxAMatrix pMatArrayA [eMatrixIndexCount], FbxAMatrix pMatArrayB [eMatrixIndexCount]) const; + + bool DoConvert(FbxAnimCurve** pCurve, + double pT[eAxisCount], + double pR[eAxisCount], + double pS[eAxisCount]); + + void FindTimeInterval + ( + FbxTime& pStart, + FbxTime& pEnd, + FbxAnimCurve* pTFCurve [eAxisCount], + FbxAnimCurve* pRFCurve [eAxisCount], + FbxAnimCurve* pSFCurve [eAxisCount] + ); + + void ComputeTotalMatrix + ( + FbxAMatrix& pGlobal, + Cell& pCell, + FbxAMatrix& pTranslate, + FbxAMatrix& pRotate, + FbxAMatrix& pScale + ); + + void ExtractTransforms + ( + FbxVector4& pScaleVector, + FbxVector4& pRotateVector, + FbxVector4& pTranslateVector, + FbxAMatrix& pGlobal, + Cell& pDest + ); + + void SetDestFCurve(FbxAnimCurve* pCurve [eAxisCount], + int pIndex, + FbxTime pTime, + FbxVector4 pVector, + FbxAnimCurveDef::EInterpolationType pInterpMode[eAxisCount], + FbxAnimCurveDef::ETangentMode pTangentMode[eAxisCount]); + + void FillInterpAndTangeant(FbxTime& pTime, + FbxAnimCurve* pSourceCurve[eAxisCount], + FbxAnimCurveDef::EInterpolationType* pInterp, + FbxAnimCurveDef::ETangentMode* pTangeant); + + void SetDestFCurveTangeant(FbxAnimCurve* pCurve [eAxisCount], + int pIndex, + FbxAnimCurveDef::ETangentMode pTangentMode[eAxisCount], + FbxVector4 pKeyValue, + FbxVector4 pNextKeyValue); + + Cell* mSource; + Cell* mDest; + + FbxTime mResamplingPeriod; + bool mResamplingOnFrameRateMultiple; + + bool mApplyUnroll; + bool mApplyConstantKeyReducer; + + // PP : So that the concatenation of matrices takes into account the rotation order + FbxRotationOrder* mSrcRotationOrder; + FbxRotationOrder* mDestRotationOrder; + + // Set last key exactly at end time or a frame period later. + bool mGenerateLastKeyExactlyAtEndTime; + + // Translation re-sampling flag. + bool mResampleTranslation; + + // Force Apply + bool mForceApply; + + // Limits + FbxLimits mTranslationLimits; + FbxLimits mRotationLimits; + FbxLimits mScalingLimits; + + // internal usage + FbxAnimCurveNode* mRotationCurveNode; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_ANIMATION_CURVE_FILTERS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimcurvenode.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimcurvenode.h new file mode 100644 index 00000000..d18df4c7 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimcurvenode.h @@ -0,0 +1,354 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxanimcurvenode.h +#ifndef _FBXSDK_SCENE_ANIMATION_CURVE_NODE_H_ +#define _FBXSDK_SCENE_ANIMATION_CURVE_NODE_H_ + +#include + +#include + +#include + +//Standard curve node names +#define FBXSDK_CURVENODE_TRANSFORM "Transform" +#define FBXSDK_CURVENODE_TRANSLATION "T" +#define FBXSDK_CURVENODE_ROTATION "R" +#define FBXSDK_CURVENODE_SCALING "S" +#define FBXSDK_CURVENODE_COMPONENT_X "X" +#define FBXSDK_CURVENODE_COMPONENT_Y "Y" +#define FBXSDK_CURVENODE_COMPONENT_Z "Z" +#define FBXSDK_CURVENODE_COLOR "Color" +#define FBXSDK_CURVENODE_COLOR_RED FBXSDK_CURVENODE_COMPONENT_X +#define FBXSDK_CURVENODE_COLOR_GREEN FBXSDK_CURVENODE_COMPONENT_Y +#define FBXSDK_CURVENODE_COLOR_BLUE FBXSDK_CURVENODE_COMPONENT_Z + +class FbxAnimStack; +class FbxAnimCurve; +class FbxMultiMap; +class KFCurveNode; + +/** This class is an composite of animation curves and is called as animation curve node. + * \nosubgrouping + * Animation curve node is used as the connection point for animation curves and other animation curve nodes + * associated to a property. FbxAnimCurveNode can be connected to other FbxAnimCurveNode, + * in this case, the destination animation curve node may be considered as "composite", \ref IsComposite(). + * remarks When created, the FbxAnimCurveNode has no valid channels unless it is created using the function CreateTypedCurveNode(). + * This function will add all the required channels to correctly match the number of values of the property. + * For instance, when CreateTypedCurveNode(pNode.LclTranslation, pScene) is called, the resulting + * FbxAnimCurveNode will automatically have 3 channels corresponding to the X,Y and Z components of the LclTranslation property. + * You can add and remove channels dynamically but can never remove the channels that have been added by the call to CreateTypedCurveNode(). + * + * However, the FBX SDK animation system's default implementation is to consider only the first curve connected to + * the channel. Therefore, if the caller connects multiple animation curves to the same channel, then it becomes + * the caller's responsibility to handle and manipulate these extra curves in a meaningful manner. + */ +class FBXSDK_DLL FbxAnimCurveNode : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxAnimCurveNode, FbxObject); + +public: + /** + * \name Utility functions. + * + */ + //@{ + /** Check if the animation curve node contains any animation key. + * \param pRecurse \c true to descend to the children if the animation curve node is composite. + * \return \c true if at least one animation curve that contains one or more animation keys is found, + * \c false otherwise. + * \remarks This method only considers the first animation curve connected to each channel. + * To check multiple animation curves that are connected to the same channel, it is the caller's + * responsibility to write a new version of this method, and GetCurveCount() will be useful in this case. + */ + bool IsAnimated(bool pRecurse=false) const; + + /** Find out start and end time of the animation. + * This function retrieves the including time span for all animation curves of this animation curve node. + * \param pTimeInterval Reference to receive start time and end time. + * \return \c true on success, \c false otherwise. + * \remarks \c false is also returned if this animation curve node has no animation. + * \remarks This method only considers the first animation curve connected to each channel. + * To find time interval of multiple animation curves that are connected to the same channel, it is the caller's + * responsibility to write a new version of this method, and GetCurveCount() will be useful in this case. + */ + bool GetAnimationInterval(FbxTimeSpan& pTimeInterval) const; + + /** Test this object to see if it is a composite FbxAnimCurveNode or a "leaf". + * A composite FbxAnimCurveNode is a FbxAnimCurveNode whose all source connections are FbxAnimCurveNode + * and its property channels is totally empty. It is just a container to take other FbxAnimCurveNode. + * \return \c true if this object is a composite, \c false otherwise. + */ + bool IsComposite() const; + + /** Recursively look for the FbxAnimCurveNode matching the passed named argument. + * \param pName Name of the FbxAnimCurveNode we are looking for. + * \return The found anim curve node or NULL. + * \remarks If pName is an empty string, this function automatically return NULL. + */ + FbxAnimCurveNode* Find(const char* pName); + + /** Create a FbxAnimCurveNode compatible with the specified property data type. + * \param pProperty The property that needs a FbxAnimCurveNode. + * \param pScene The scene the created FbxAnimCurveNode will belong to. + * \return The pointer to the newly created FbxAnimCurveNode. Returns NULL if an error occurred. + * \remarks This function does not connect the newly created FbxAnimCurveNode to the property. + * \remarks This function detects FbxDouble3, FbxDouble4 and FbxDouble4x4 properties DataTypes and + * automatically adds the required channels properties. Any other DataType is not + * specifically processed and the channels properties are left empty and need to be filled + * using the AddChannel() function. + */ + static FbxAnimCurveNode* CreateTypedCurveNode(FbxProperty& pProperty, FbxScene* pScene); + + /** Get the total number of property channels defined in this animation curve node. + * For composite animation curve nodes, since they do not contain any channels, this function will always return 0. + * \return The number of property channels. + */ + unsigned int GetChannelsCount() const; + + /** Get the index of the named channel. + * \param pChannelName Name of the channel for which we want the index. + * \return the index of the named channel or -1 if no channel with this name is found. + */ + int GetChannelIndex(const char* pChannelName) const; + + /** Get the name of the channel. + * \param pChannelId Index of the channel for which we want the name. + * \return the name of the indexed channel or "" if the index is invalid. + */ + FbxString GetChannelName(int pChannelId) const; + + /** Empties the property channels of this animation curve node. + * \remarks This function will remove all the channels added with the AddChannel() method + * regardless of their use and/or connections. + * But it can not remove the channels that are added by the call to CreateTypedCurveNode(). + */ + void ResetChannels(); + + /** Adds the specified channel property. + * \param pChnlName Channel name. + * \param pValue Default value of the channel. + * \return \c true if successful, \c false otherwise. + * \remarks It is an error to try to add a channel that already exists. + */ + template bool AddChannel(const char* pChnlName, T const &pValue) + { + if (!pChnlName || strlen(pChnlName)==0) return false; + FbxProperty c = GetChannel(pChnlName); + if (c.IsValid()) + { + return false; + } + + mChannels.BeginCreateOrFindProperty(); + FbxDataType dt = FbxGetDataTypeFromEnum(FbxTypeOf(pValue)); + c = FbxProperty::Create(mChannels, dt, pChnlName); + c.Set(pValue); + mChannels.EndCreateOrFindProperty(); + return true; + } + + /** Set the default value of the channel. + * \param pChnlName Channel name. + * \param pValue New default value of this channel. + */ + template void SetChannelValue(const char* pChnlName, T pValue) + { + FbxProperty c = GetChannel(pChnlName); + if( c.IsValid() ) c.Set(pValue); + } + + /** Set the default value of the channel. + * \param pChnlId Channel index. + * \param pValue New default value of this channel. + */ + template void SetChannelValue(unsigned int pChnlId, T pValue) + { + FbxProperty c = GetChannel(pChnlId); + if( c.IsValid() ) c.Set(pValue); + } + + /** Get the default value of the channel. + * \param pChnlName Channel name. + * \param pInitVal Value returned if the specified channel is invalid. + * \return The default value of this channel. + */ + template T GetChannelValue(const char* pChnlName, T pInitVal) + { + T v = pInitVal; + FbxProperty c = GetChannel(pChnlName); + if( c.IsValid() ) v = c.Get(); + return v; + } + + /** Get the default value of the channel. + * \param pChnlId Channel index. + * \param pInitVal Value returned if the specified channel is invalid. + * \return The default value of this channel. + */ + template T GetChannelValue(unsigned int pChnlId, T pInitVal) + { + T v = pInitVal; + FbxProperty c = GetChannel(pChnlId); + if( c.IsValid() ) v = c.Get(); + return v; + } + //@} + + /** + * \name FbxAnimCurve management. + * + */ + //@{ + /** Disconnect the animation curve from the channel. + * \param pCurve The curve to disconnect from the channel. + * \param pChnlId The channel index. + * \return \c true if the disconnection was made, \c false if an error occurred. + */ + bool DisconnectFromChannel(FbxAnimCurve* pCurve, unsigned int pChnlId); + + /** Connects the given animation curve to the specified channel. + * \param pCurve The curve to connect to the channel. + * \param pChnl The name of the channel the curve is to be connected to. + * \param pInFront When \c true, all the current connections are moved after this one, + * making this one the first. By default, the connection is the last one. + * \return \c true if the connection was made, \c false if an error occurred. + */ + bool ConnectToChannel(FbxAnimCurve* pCurve, const char* pChnl, bool pInFront = false); + + /** Connects the given animation curve to the specified channel. + * \param pCurve The curve to connect to the channel. + * \param pChnlId Index of the channel the curve is to be connected to. + * \param pInFront When \c true, all the current connections are moved after this one. + * making this one the first. By default, the connection is the last one. + * \return \c true if the connection was made, \c false if an error occurred. + * \remarks The index is 0 based. + */ + bool ConnectToChannel(FbxAnimCurve* pCurve, unsigned int pChnlId, bool pInFront = false); + + /** Creates a new curve and connects it to the specified channel of the animation curve node named pCurveNodeName. + * If this animation curve node is composite, this function will try to search all children animation curve nodes + * recursively for the one named pCurveNodeName. + * \param pCurveNodeName Name of the FbxAnimCurveNode we are looking for. + * \param pChannel Channel identifier. + * \return Pointer to the FbxAnimCurve or NULL if an error occurred. + * \remarks pCurveNodeName cannot be empty. + * \remarks If the pChannel identifier is left NULL, the first valid channel will be used to create curve. + */ + FbxAnimCurve* CreateCurve(const char* pCurveNodeName, const char* pChannel); + + /** Creates a new curve and connects it to the specified channel of the animation curve node named pCurveNodeName. + * If this animation curve node is composite, this function will try to search all children animation curve nodes + * recursively for the one named pCurveNodeName. + * \param pCurveNodeName Name of the FbxAnimCurveNode we are looking for. + * \param pChannelId Channel index. + * \return Pointer to the FbxAnimCurve or NULL if an error occurred. + * \remarks pCurveNodeName cannot be empty. + * If the pChannelId is not assigned, the first valid channel will be used to create curve. + */ + FbxAnimCurve* CreateCurve(const char* pCurveNodeName, unsigned int pChannelId = 0); + + /** Get the number of FbxAnimCurve connected to the specified channel. + * If this animation curve node is composite, this function will try to search all children animation curve nodes + * recursively for the one named pCurveNodeName. + * \param pChannelId Channel index. + * \param pCurveNodeName Name of the FbxAnimCurveNode we are looking for. + * \return The number of animation curves on the specified channel or 0 if an error occurred. + * \remarks This method fails if the FbxAnimCurveNode with name pCurveNodeName does not exist and return 0. + * If the specified channel cannot be found on the FbxAnimCurveNode with name pCurveNodeName, return 0. + * \remarks If this animation curve node is composite, this function will try to search all + * children animation curve nodes recursively for the one named pCurveNodeName. + * If the pCurveNodeName is left NULL, then only look for the curves on this animation curve node + * even if it is composite. + */ + int GetCurveCount(unsigned int pChannelId, const char* pCurveNodeName = NULL); + + /** Get the FbxAnimCurve of the specified channel. + * If this animation curve node is composite, this function will try to search all children animation curve nodes + * recursively for the one named pCurveNodeName. + * \param pChannelId Channel index. + * \param pId The index of the desired anim curve (in case there is more than one). + * \param pCurveNodeName Name of the FbxAnimCurveNode we are looking for (if this object is a composite). + * \return Pointer to the FbxAnimCurve that matches the criteria. + * \remarks This method fails if the FbxAnimCurveNode with name pCurveNodeName does not exist and return NULL. + * If the specified channel cannot be found in the FbxAnimCurveNode with name pCurveNodeName, return NULL. + * \remarks If the pCurveNodeName is left NULL, then only search in the curves on this animation curve node + * even if it is composite. + */ + FbxAnimCurve* GetCurve(unsigned int pChannelId, unsigned int pId = 0, const char* pCurveNodeName = NULL); + + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + + static const char* CurveNodeNameFrom(const char* pName); + static bool EvaluateChannels(FbxAnimCurveNode* pCurveNode, double* pData, unsigned int pCount, FbxTime pTime); + + void ReleaseKFCurveNode(); + void SyncChannelsWithKFCurve(); + + inline bool UseQuaternionInterpolation() {return mQuaternionInterpolation != 0;}; + bool SetQuaternionInterpolation(unsigned short pVal); + unsigned short GetQuaternionInterpolation() { return mQuaternionInterpolation; }; + void SetKFCurveNodeLayerType(FbxProperty& pProp); + KFCurveNode* GetKFCurveNode(bool pNoCreate=false); + +private: + friend class FbxAnimCurveFilterMatrixConverter; + friend class FbxAnimEvalClassic; + void Evaluate(double* pData, FbxTime pTime); + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void Destruct(bool pRecursive); + virtual void ConstructProperties(bool pForceSet); + virtual bool ConnectNotify(const FbxConnectEvent& pEvent); + + FbxAnimCurveNode* Find(FbxAnimCurveNode* pRoot, const FbxString& pName); + +private: + FbxProperty GetChannel(const char* pChnl); + FbxProperty GetChannel(unsigned int pChnlId); + + friend void CollectAnimFromCurveNode(void **lSrc, void *fcn, unsigned int nbCrvs, FbxAnimCurveNode *cn, FbxMultiMap* pNickToAnimCurveTimeWarpsSet, FbxMultiMap& pNickToKFCurveNodeWarpSet); + + unsigned char mNonRemovableChannels; + FbxProperty mChannels; + FbxProperty* mCurrentlyProcessed; + KFCurveNode* mFCurveNode; + bool* mOwnedKFCurve; + int mKFCurveNodeLayerType; + unsigned short mQuaternionInterpolation; + int* mDirectIndexes; + int mDirectIndexesSize; + + FbxAnimCurve* GetCurve(unsigned int pChannelId, unsigned int pId, FbxAnimCurveNode* pCurveNode); + bool ConnectToChannel(FbxProperty& p, FbxAnimCurve* pCurve, bool pInFront); + void ResetKFCurveNode(); + void SyncKFCurveValue(FbxAnimCurve* pCurve, double pVal); + void ReleaseOwnershipOfKFCurve(int pIndex); + + template FbxAnimCurve* CreateCurveGeneral(const char* pCurveNodeName, T pChannel); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +FBXSDK_DLL void GetAllAnimCurves(FbxAnimStack* pAnimStack, FbxArray& pCurves); +FBXSDK_DLL void GetAllAnimCurves(FbxObject* pObj, FbxAnimStack* pAnimStack, FbxArray& pCurves); + +#include + +#endif // FBXFILESDK_KFBXPLUGINS_KFBXANIMCURVENODE_H + diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimevalclassic.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimevalclassic.h new file mode 100644 index 00000000..64d994f5 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimevalclassic.h @@ -0,0 +1,175 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxanimevalclassic.h +#ifndef _FBXSDK_SCENE_ANIMATION_EVALUATOR_CLASSIC_H_ +#define _FBXSDK_SCENE_ANIMATION_EVALUATOR_CLASSIC_H_ + +#include + +#include +#include +#include + +#include + +/** An evaluator implementation that behaves like the original FBX SDK (2010 and previous) evaluation system. + * + * It works by implementing the abstract class FbxAnimEvaluator, which is used as the main interface for evaluators. + * \note While this class can be instanced at any time, it is preferable to access the evaluator via the function + * FbxScene::GetEvaluator(), which will automatically return the default evaluator used in the current FBX SDK. + * This is very useful because it will allow the user to use the very same evaluator used by the FBX SDK internally. + * \see FbxAnimEvaluator, FbxScene + */ +class FBXSDK_DLL FbxAnimEvalClassic : public FbxAnimEvaluator +{ + FBXSDK_OBJECT_DECLARE(FbxAnimEvalClassic, FbxAnimEvaluator); + + enum EBlendType {eSimple, eRotation, eScaling}; + + /** Calculate values of properties LclTranslation, LclRotation, LclScaling of a node at the specified time + * and update the mLT, mLR, mLT fields of the node's NodeEvalState. + * \param pResult The NodeEvalState to update. + * \param pNode The node to evaluate. + * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. + * \param pStack The current animation stack used by the evaluator. + * \remarks Values of properties LclTranslation, LclRotation, LclScaling will be updated to pResult->mLT, pResult->mLR, pResult->mLS. + * The translation, rotation and scaling limits are taken into consideration. + * Only LclTranslation, LclRotation and LclScaling are taken into accounts, no other transform, such as pivot, offset are calculated here. + */ + void ComputeTRSLocal(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxAnimStack* pStack); + + /** Calculate global transform of a node at the specified time and update the mGX field of the node's NodeEvalState. + * \param pResult The NodeEvalState to update. + * \param pNode The node to evaluate. + * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. + * \param pStack The current animation stack used by the evaluator. + * \param pPivotSet The pivot set to take into account. + * \param pApplyTarget Applies the necessary transform to align into the target node + * \remarks Calculated global transform will be updated to pResult->mGX. + * ComputeGlobalTransform must be called after the call to ComputeTRSLocal, there is a dependency. + * All transforms are taken into account, including: + * Transform = Translation * RotationOffset* RotationPivot* PreRotation * LocalRotation* PostRotation * RotationPivotInverse* ScalingOffset* ScalingPivot* LocalScaling* ScalingPivotInverse + * Also,the translation, rotation and scaling limits are taken into consideration. + */ + void ComputeGlobalTransform(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxAnimStack* pStack, FbxNode::EPivotSet pPivotSet, bool pApplyTarget); + + /** Calculate local transform of a node at the specified time and update the mLX field of the node's NodeEvalState. + * \param pResult The NodeEvalState to update. + * \param pNode The node to evaluate. + * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. + * \param pStack The current animation stack used by the evaluator. + * \param pPivotSet The pivot set to take into account. + * \param pApplyTarget Applies the necessary transform to align into the target node + * \remarks Calculated local transform will be updated to pResult->mLX. + * ComputeLocalTransform must be called after the call to ComputeGlobalTransform, there is a dependency. + * The local transform matrix is calculated in this way: ParentGlobal.Inverse() * Global, all transforms such as pre/post rotation are taken into consideration. + * To get values of properties LclTranslation, LclRotaion and LclScaling at the specified time, please use ComputeTRSLocal. + * Also,the translation, rotation and scaling limits are taken into consideration. + */ + void ComputeLocalTransform(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxAnimStack* pStack, FbxNode::EPivotSet pPivotSet, bool pApplyTarget); + + /** Check if the property has corresponding animation curve node on the specified animation layer. + * \param pProperty The property to check. + * \param pAnimLayer The animation layer to check on. + * \return \c true if pProperty has corresponding animation curve node on pAnimLayer, \c false otherwise. + */ + bool HasAnimationCurveNode(FbxProperty& pProperty, FbxAnimLayer* pAnimLayer); + + /** Calculate values of properties LclTranslation, LclRotation, LclScaling of a node at the specified time on certain animation layer. + * \param pResult The NodeEvalState to update. + * \param pNode The node to evaluate. + * \param pLT To take the calculated value of LclTranslation. + * \param pLR To take the calculated value of LclRotation. + * \param pLS To take the calculated value of LclScaling. + * \param pTime The time used for evaluate. + * \param pLayer The current animation layer used to do the calculation. + * \param pBlend if \c false, only animation on current layer will be taken into account, and pResult->mCurveNode will be updated accordingly. + if \c true, the value on this animation layer will be blended with current value of pLT, pLR and pLS. + * \remarks The usual usage of this function is to call it on the first animation layer with out blending, then call it repeatedly on other + * animation layers with blending to get the blended value of pLT, pLR and pLS of all animation layers. + */ + void ComputeTRSAnimationLayer(FbxNodeEvalState* pResult, FbxNode* pNode, FbxVector4& pLT, FbxVector4& pLR, FbxVector4& pLS, const FbxTime& pTime, FbxAnimLayer* pLayer, bool pBlend); + + /** Blend value of a property on certain animation layer to pResult. + * \param pResult The blended value of the property. + * \param pResultSize The elements number of the property value. + * \param pProperty The property to be blended. + * \param pEvalState An auxiliary parameter, the NodeEvalState to get rotation order for eRotation type blending. + * \param pTime The time used for evaluate. + * \param pLayer The current animation layer used to do the calculation. + * \param pType There are three blend types, eSimple, eRotation, eScaling + * \remarks The blended value will be kept in pResult. + */ + void BlendPropertyEvalWithLayer(double* pResult, int pResultSize, FbxProperty& pProperty, FbxNodeEvalState* pEvalState, const FbxTime& pTime, FbxAnimLayer* pLayer, EBlendType pType); + + /** Blends two arrays of values in a simple weighted linear blending way. + * \param pResult The first array of values to be blended. + * \param pResultSize The number of elements of the first value to be blended. + * \param pApply The second array of values to be blended. + * \param pApplySize The number of elements of the second value to be blended. + * \param pWeight The weight used to blend. + * \param pBlendMode The blend mode to use. + * \see BlendMode + * \remarks The blended value will be kept in pResult. + */ + void BlendSimple(double* pResult, int pResultSize, double* pApply, int pApplySize, double pWeight, FbxAnimLayer::EBlendMode pBlendMode); + + /** Blends two arrays of values representing rotations. + * \param pResult The first array of values to be blended. + * \param pResultSize The number of elements of the first value to be blended. + * \param pApply The second array of values to be blended. + * \param pApplySize The number of elements of the second value to be blended. + * \param pWeight The weight used to blend. + * \param pBlendMode The blend mode to use. + * \param pRotAccuMode The rotation accumulation mode. + * \param pRotationOrder The rotation order to be used for blending. + * \remarks The blended value will be kept in pResult. And this blend should not be used with anything other than rotations. + * \see BlendMode, RotationAccumulationMode + */ + void BlendRotation(double* pResult, int pResultSize, double* pApply, int pApplySize, double pWeight, FbxAnimLayer::EBlendMode pBlendMode, FbxAnimLayer::ERotationAccumulationMode pRotAccuMode, int pRotationOrder); + + /** Blends two arrays of values representing scaling transforms. + * \param pResult The first array of values to be blended. + * \param pResultSize The number of elements of the first value to be blended. + * \param pApply The second array of values to be blended. + * \param pApplySize The number of elements of the second value to be blended. + * \param pWeight The weight used to blend. + * \param pBlendMode The blend mode to use. + * \param pScaleAccuMode The scaling accumulation mode. + * \remarks The blended value will be kept in pResult.And this blend should not be used with anything other than scaling transform. + * \see BlendMode, ScaleAccumulationMode. + */ + void BlendScaling(double* pResult, int pResultSize, double* pApply, int pApplySize, double pWeight, FbxAnimLayer::EBlendMode pBlendMode, FbxAnimLayer::EScaleAccumulationMode pScaleAccuMode); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void Destruct(bool pRecursive); + + virtual void EvaluateNodeTransform(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxNode::EPivotSet pPivotSet, bool pApplyTarget); + virtual void EvaluatePropertyValue(FbxPropertyEvalState* pResult, FbxProperty& pProperty, const FbxTime& pTime); + +private: + double* mPropertyValues; + int mPropertySize; + + double* mCurveNodeEvalValues; + int mCurveNodeEvalSize; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_ANIMATION_EVALUATOR_CLASSIC_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimevalstate.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimevalstate.h new file mode 100644 index 00000000..8a048c69 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimevalstate.h @@ -0,0 +1,136 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxanimevalstate.h +#ifndef _FBXSDK_SCENE_ANIMATION_EVALUATION_STATE_H_ +#define _FBXSDK_SCENE_ANIMATION_EVALUATION_STATE_H_ + +#include + +#include +#include +#include + +#include + +class FbxTransform; +class FbxNodeEvalState; +class FbxPropertyEvalState; + +typedef FbxMap FbxNodeEvalStateMap; +typedef FbxMap FbxPropertyEvalStateMap; +typedef FbxMap FbxAnimLayerCurveNodeMap; +typedef FbxMap FbxPropertyCurveNodeMap; + +/** This class hold results from animation evaluations. To clear an evaluation state for re-use, it is possible to invalidate + * or to reset it. For the same scene with the same objects, invalidating an evaluation state is the quickest way to clear + * an evaluation state object for re-use because it only zeroes all the entries. A reset will delete all the entries. + * Unless the scene changes, for performance purposes it is recommended to invalidate evaluation states instead of resetting them. + * + * \internal + * \see FbxAnimEvaluator + */ +class FBXSDK_DLL FbxAnimEvalState +{ +public: + /** Get the time associated with this evaluation state. + * \return The time associated with this evaluation state. */ + FbxTime GetTime() const; + + /** Reset an evaluation state by deleting the cache it contains. This will remove all entries in the cache. */ + void Reset(); + + /** Start a new evaluation state frame by zeroing the cache it contains, and changing its associated time. All + * node and property entries will remain in the list, but their evaluation state will not be up-to-date. + * \param pTime The time at which the evaluation state should be set after the invalidation. */ + void Begin(const FbxTime& pTime); + + /** Invalidate a node evaluation state to force update on next evaluation. + * \param pNode The node that needs to be updated on next evaluation. */ + void Flush(FbxNode* pNode); + + /** Invalidate a property evaluation state to force update on next evaluation. + * \param pProperty The property that needs to be updated on next evaluation. */ + void Flush(FbxProperty& pProperty); + + /** Get node transform evaluation result from the evaluation state. + * \param pNode The node for which the value was stored. + * \return The global or local matrix transform for the specified node. */ + FbxNodeEvalState* GetNodeEvalState(FbxNode* pNode); + + /** Get a property evaluation result from the evaluation state. + * \param pProperty The property for which the value was stored. + * \return The result value that was stored. */ + FbxPropertyEvalState* GetPropertyEvalState(FbxProperty& pProperty); + + /** Get a property curve node from the evaluation state for quick access. + * \param pProperty The property to search for its animation curve node. + * \param pAnimLayer The animation layer on which the animation curve node must be searched. + * \remark This function uses a map to store animation curve node search results. If animation curve nodes are replaced, the evaluation state must be reset. */ + FbxAnimCurveNode* GetPropertyCurveNode(FbxProperty& pProperty, FbxAnimLayer* pAnimLayer); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxAnimEvalState(); + virtual ~FbxAnimEvalState(); + +private: + FbxTime mTime; + FbxNodeEvalStateMap mNodeMap; + FbxPropertyEvalStateMap mPropertyMap; + FbxPropertyCurveNodeMap mPropertyCurveNodeMap; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +//! This class serves as the base class for an evaluation state element. +class FBXSDK_DLL FbxEvalState +{ +public: + FbxEvalState() : mUpToDate(false){} + bool mUpToDate; //!< If \c true, the evaluation state element is up-to-date for the current evaluation time. +}; + +//! This class hold results for node evaluation. +class FBXSDK_DLL FbxNodeEvalState : public FbxEvalState +{ +public: + FbxNodeEvalState(FbxNode* pNode); + + FbxVector4 mLT; //!< Used to hold result value of LclTranslation property from node evaluation. + FbxVector4 mLR; //!< Used to hold result value of LclRotation property from node evaluation. + FbxVector4 mLS; //!< Used to hold result value of LclScaling property from node evaluation. + FbxAMatrix mLX; //!< Used to hold result local transform matrix from node evaluation. Pivots, offsets, pre/post rotation and all other transforms are taken into consideration. + FbxAMatrix mGX; //!< Used to hold result global transform matrix from node evaluation. Pivots, offsets, pre/post rotation and all other transforms are taken into consideration. + + /** mTransform is used to hold the corresponding FbxTransform of the node. + * This FbxTransform takes all transform-related info, including pivots, offsets, pre/post rotation, rotation order, limits, etc. + * The evaluation is actually done through the utility functions of FbxTransform. */ + FbxTransform* mTransform; +}; + +//! This class hold results for property evaluation. +class FBXSDK_DLL FbxPropertyEvalState : public FbxEvalState +{ +public: + FbxPropertyEvalState(FbxProperty& pProperty); + virtual ~FbxPropertyEvalState(); + + template inline T Get() const { T lValue; mValue->Get(&lValue, FbxTypeOf(lValue)); return lValue; } + template inline bool Set(const T& pValue){ return mValue->Set(&pValue, FbxTypeOf(pValue)); } + + FbxPropertyValue* mValue; +}; + +#include + +#endif /* _FBXSDK_SCENE_ANIMATION_EVALUATION_STATE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimevaluator.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimevaluator.h new file mode 100644 index 00000000..66edc163 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimevaluator.h @@ -0,0 +1,194 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxanimevaluator.h +#ifndef _FBXSDK_SCENE_ANIMATION_EVALUATOR_H_ +#define _FBXSDK_SCENE_ANIMATION_EVALUATOR_H_ + +#include + +#include +#include +#include + +#include + +/** The principal interface for animation evaluators. The animation evaluator is used to compute node transforms +* and property values at specific times during an animation. Evaluators simplify the process of computing transform +* matrices by taking into account all of the parameters, such as pre- and post-rotations. +* This class is abstract so that SDK users can implement their own evaluator if needed. The default evaluator used +* by the FBX SDK is a FbxAnimEvalClassic. The default evaluator can be queried with the function +* FbxScene::GetEvaluator(), and can be changed using FbxScene::SetEvaluator(). +* +* When working with scene nodes, the evaluator will always return an affine transform matrix that contains the +* translation, rotation and scale of that node. +* +* When working with object properties, the evaluator will always return a structure that can contain as many components +* as the property can have. For example, an RGB color property would return a structure containing 3 channels. The +* class FbxAnimCurveNode is used as a data container to store those values, because it can handle as many channels as +* needed, even if the property is not a real curve node . +* +* Below is a typical usage of the evaluator class to retrieve the global transform matrix of each node in a scene: +* \code +* //Here we assume the user already imported a scene... +* for( int i = 0, c = MyScene->GetMemberCount(FbxNode::ClassId); i < c; ++i ) +* { +* FbxNode* CurrentNode = MyScene->GetMember(FbxNode::ClassId, i); +* FbxAMatrix& NodeGlobalTransform = MyScene->GetEvaluator()->GetNodeGlobalTransform(CurrentNode); +* } +* +* //There is an equivalent call to retrieve a node's global transform, which is exactly the same as calling Scene->GetEvaluator() : +* FbxAMatrix& NodeGlobalTransform = CurrentNode->EvaluateGlobalTransform(); +* \endcode +* +* Another typical usage of the evaluator class, but this time to retrieve the value of an animated color property on a material: +* \code +* //Assuming the user imported a scene with objects and materials... +* FbxColor Color = MyMaterial->GetDiffuseColor()->EvaluateValue(); +* \endcode +* +* \note Note that all the methods to retrieve global/local matrices as well as property values returns references. +* This is important for performance purposes, to prevent an extra memory copy. +* \see FbxScene, FbxAnimEvalClassic, FbxAnimCurveNode */ +class FBXSDK_DLL FbxAnimEvaluator : public FbxObject +{ + FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxAnimEvaluator, FbxObject); + +public: + /** Returns a node's global transformation matrix at the specified time. The node's translation, rotation and scaling limits are taken into consideration. + * \param pNode The node to evaluate. + * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. + * \param pPivotSet The pivot set to take into account + * \param pApplyTarget Applies the necessary transform to align into the target node + * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. + * \return The resulting global transform of the specified node at the specified time. */ + FbxAMatrix& GetNodeGlobalTransform(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); + + /** Returns a node's local transformation matrix at the specified time. The node's translation, rotation and scaling limits are taken into consideration. + * \param pNode The node to evaluate. + * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. + * \param pPivotSet The pivot set to take into account + * \param pApplyTarget Applies the necessary transform to align into the target node + * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. + * \return The resulting local transform of the specified node for the specified time. + * \remarks The local transform matrix is calculated in this way: ParentGlobal.Inverse * Global, all transforms such as pre/post rotation are taken into consideration. + * This will return a different value than LclTranslation, LclRotation and LclScaling at the specified time. To evaluate these properties separately + * without taking pre/post rotation, pivots and offsets into consideration, please use GetNodeLocalTranslation(), GetNodeLocalRotation() and GetNodeLocalScaling(). */ + FbxAMatrix& GetNodeLocalTransform(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); + + /** Returns the value of a node's LclTranslation property at the specified time. + * No pivot, offsets, or any other transform is taken into consideration. The translation limit is applied. + * \param pNode The transform node to evaluate. + * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. + * \param pPivotSet The pivot set to take into account + * \param pApplyTarget Applies the necessary transform to align into the target node + * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. + * \return The resulting value of LclTranslation property of the specified node at the specified time. */ + FbxVector4& GetNodeLocalTranslation(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); + + /** Returns the value of a node's LclRotation property at the specified time. + * No pre/post rotation, rotation pivot, rotation offset or any other transform is taken into consideration. The rotation limit is applied. + * \param pNode The transform node to evaluate. + * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. + * \param pPivotSet The pivot set to take into account + * \param pApplyTarget Applies the necessary transform to align into the target node + * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. + * \return The resulting value of LclRotation property of the specified node at the specified time. */ + FbxVector4& GetNodeLocalRotation(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); + + /** Returns the value of a node's LclScaling property at the specified time. + * No scaling pivot, scaling offset or any other transform is taken into consideration. The scaling limit is applied. + * \param pNode The transform node to evaluate. + * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. + * \param pPivotSet The pivot set to take into account + * \param pApplyTarget Applies the necessary transform to align into the target node + * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. + * \return The resulting value of LclScaling property of the specified node at the specified time. */ + FbxVector4& GetNodeLocalScaling(FbxNode* pNode, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); + + /** Get a property's value at the specified time using the template type provided. + * \param pProperty The property to evaluate. + * \param pTime The time used for evaluate. + * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. + * \return The property value at the specified time converted to the template type provided, if possible. + * \remark If the property type versus the template cannot be converted, the result is unknown. */ +#if defined(__GNUC__) && (__GNUC__ < 4) + template inline T GetPropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval=false){ FbxPropertyEvalState* s = GetPropertyEvalState(pProperty, pTime, pForceEval); return s->Get(); } +#else + template inline T GetPropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval=false){ return GetPropertyEvalState(pProperty, pTime, pForceEval)->Get(); } +#endif + + /** Get a property's value at the specified time. + * \param pProperty The property to evaluate. + * \param pTime The time used for evaluate. + * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. + * \return The property value at the specified time. Use FbxPropertyValue::Get() to retrieve the value into a pointer location of your choice. */ + FbxPropertyValue& GetPropertyValue(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval=false); + + /** Get a property curve node from the evaluation state for quick access. + * \param pProperty The property to search for its animation curve node. + * \param pAnimLayer The animation layer on which the animation curve node must be searched. + * \remark This function uses a map to store animation curve node search results. If animation curve nodes are replaced, the evaluation state must be reset. */ + FbxAnimCurveNode* GetPropertyCurveNode(FbxProperty& pProperty, FbxAnimLayer* pAnimLayer); + + /** Validate if the given time value is within animation stack time span range. + * \param pTime The time value to validate. + * \return The new validated time, clamped by the animation stack time span range. + * \remarks If no animation stack are found, time zero is returned. This function is not used by the evaluator itself. */ + FbxTime ValidateTime(const FbxTime& pTime); + + /** Completely reset the evaluation state cache by deleting all entries. This reset automatically happens when changing the current context. */ + void Reset(); + + /** Clears the specified node evaluation state cache, so the next time the evaluation is called for this node it get refreshed. + * \param pNode The node that needs to be re-evaluated in next evaluation. */ + void Flush(FbxNode* pNode); + + /** Clears the specified property evaluation state cache, so the next time the evaluation is called for this property it get refreshed. + * \param pProperty The property that needs to be re-evaluated in next evaluation. */ + void Flush(FbxProperty& pProperty); + + /** Compute node local TRS from global transform. Doesn't change cached state for current time. + * \param[out] pRetLT Computed local translation. + * \param[out] pRetLR Computed local rotation. + * \param[out] pRetLS Computed local scaling. + * \param pNode The transform node to evaluate. + * \param pGX Global transformation state. + * \param pTime The time used for evaluate.If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. + * \param pPivotSet The pivot set to take into account. + * \param pApplyTarget Applies the necessary transform to align into the target node. + * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. */ + void ComputeLocalTRSFromGlobal(FbxVector4& pRetLT, FbxVector4& pRetLR, FbxVector4& pRetLS, FbxNode* pNode, FbxAMatrix& pGX, const FbxTime& pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void Destruct(bool pRecursive); + + virtual void EvaluateNodeTransform(FbxNodeEvalState* pResult, FbxNode* pNode, const FbxTime& pTime, FbxNode::EPivotSet pPivotSet, bool pApplyTarget) = 0; + virtual void EvaluatePropertyValue(FbxPropertyEvalState* pResult, FbxProperty& pProperty, const FbxTime& pTime) = 0; + + FbxAnimEvalState* GetDefaultEvalState(); + FbxAnimEvalState* GetEvalState(const FbxTime& pTime); + FbxNodeEvalState* GetNodeEvalState(FbxNode* pNode, const FbxTime& pTime, FbxNode::EPivotSet pPivotSet, bool pApplyTarget, bool pForceEval); + FbxPropertyEvalState* GetPropertyEvalState(FbxProperty& pProperty, const FbxTime& pTime, bool pForceEval); + +private: + FbxAnimEvalState* mEvalState; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_ANIMATION_EVALUATOR_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimlayer.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimlayer.h new file mode 100644 index 00000000..fa81696e --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimlayer.h @@ -0,0 +1,197 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxanimlayer.h +#ifndef _FBXSDK_SCENE_ANIMATION_LAYER_H_ +#define _FBXSDK_SCENE_ANIMATION_LAYER_H_ + +#include + +#include + +#include + +class FbxAnimCurveNode; + +/** The animation layer is a collection of animation curve nodes. Its purpose is to store + * a variable number of FbxAnimCurveNode. The class provides different states flags (bool properties), + * an animatable weight, and the blending mode flag to indicate how the data on this layer is interacting + * with the data of the other layers during the evaluation. + * \nosubgrouping + */ +class FBXSDK_DLL FbxAnimLayer : public FbxCollection +{ + FBXSDK_OBJECT_DECLARE(FbxAnimLayer, FbxCollection); + +public: + ////////////////////////////////////////////////////////////////////////// + // + // Properties + // + ////////////////////////////////////////////////////////////////////////// + + /** This property stores the weight factor. + * The weight factor is the percentage of influence this layer has during + * the evaluation. + * + * Default value is \c 100.0 + */ + FbxPropertyT Weight; + + /** This property stores the mute state. + * The mute state indicates that this layer should be excluded from the evaluation. + * + * Default value is \c false + */ + FbxPropertyT Mute; + + /** This property stores the solo state. + * The solo state indicates that this layer is the only one that should be + * processed during the evaluation. + * + * Default value is \c false + */ + FbxPropertyT Solo; + + /** This property stores the lock state. + * The lock state indicates that this layer has been "locked" from editing operations + * and should no longer receive keyframes. + * + * Default value is \c false + */ + FbxPropertyT Lock; + + /** This property stores the display color. + * This color can be used by applications if they display a graphical representation + * of the layer. The FBX SDK does not use it but guarantees that the value is saved to the FBX + * file and retrieved from it. + * + * Default value is \c (0.8, 0.8, 0.8) + */ + FbxPropertyT Color; + + /** This property stores the blend mode. + * The blend mode is used to specify how this layer influences the animation evaluation. See the + * BlendMode enumeration for the description of the modes. + * + * Default value is \c eModeAdditive + */ + FbxPropertyT BlendMode; + + /** This property stores the rotation accumulation mode. + * This option indicates how the rotation curves on this layer combine with any preceding layers + * that share the same attributes. See the RotationAccumulationMode enumeration for the description + * of the modes. + * + * Default value is \c eRotationByLayer + */ + FbxPropertyT RotationAccumulationMode; + + /** This property stores the scale accumulation mode. + * This option indicates how the scale curves on this layer combine with any preceding layers + * that share the same attributes. See the ScaleAccumulationMode enumeration for the description + * of the modes. + * + * Default value is \c eScaleMultiply + */ + FbxPropertyT ScaleAccumulationMode; + + //! Reset this object properties to their default value. + void Reset(); + + /** + * \name BlendMode bypass functions + * This section provides methods to bypass the current layer blend mode by data type. + * When the state is \c true, the evaluators that are processing the layer will + * need to consider that, for the given data type, the blend mode is forced to be Overwrite. + * If the state is left to its default \c false value, then the layer blend mode applies. + * \remarks This section only supports the basic types defined in the fbxtypes.h header file. + */ + //@{ + + /** Set the bypass flag for the given data type. + * \param pType The fbxType identifier. + * \param pState The new state of the bypass flag. + * \remarks If pType is eFbxTypeCount, then pState is applied to all the data types. + */ + void SetBlendModeBypass(EFbxType pType, bool pState); + + /** Get the current state of the bypass flag for the given data type. + * \param pType The fbxType identifier. + * \return The current state of the flag for a valid pType value and \c false in any other case. + */ + bool GetBlendModeBypass(EFbxType pType); + + //@} + + + /** Blend mode type between animation layers. + */ + enum EBlendMode + { + eBlendAdditive, //! The layer "adds" its animation to layers that precede it in the stack and affect the same attributes. + eBlendOverride, //! The layer "overrides" the animation of any layer that shares the same attributes and precedes it in the stack. + eBlendOverridePassthrough /*! mBlendModeBypass; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_ANIMATION_LAYER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimstack.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimstack.h new file mode 100644 index 00000000..c822bf98 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimstack.h @@ -0,0 +1,150 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxanimstack.h +#ifndef _FBXSDK_SCENE_ANIMATION_STACK_H_ +#define _FBXSDK_SCENE_ANIMATION_STACK_H_ + +#include + +#include +#include + +#include + +// these symbols are defined for backward compatibility +#define FBXSDK_TAKENODE_DEFAULT_NAME "Default" +#define FBXSDK_ROOTCURVE_DEFAULT_NAME "Defaults" + +class FbxTakeInfo; +class FbxThumbnail; +class FbxAnimEvaluator; + +/** The Animation stack is a collection of animation layers. The Fbx document can have one or + * more animation stacks. Each stack can be viewed as one "take" in the previous versions of the FBX SDK. + * The "stack" terminology comes from the fact that the object contains 1 to n animation layers that + * are evaluated according to their blending modes to produce a resulting animation for a given attribute. + * \nosubgrouping + */ +class FBXSDK_DLL FbxAnimStack : public FbxCollection +{ + FBXSDK_OBJECT_DECLARE(FbxAnimStack, FbxCollection); + +public: + ////////////////////////////////////////////////////////////////////////// + // + // Properties + // + ////////////////////////////////////////////////////////////////////////// + /** This property stores a description string of this animation stack. + * This string can be used to display, in a human readable format, information + * relative to this animation stack object. + * Default value is "". + * \remarks The applications using the FBX SDK are not required to manipulate this information. + */ + FbxPropertyT Description; + + /** This property stores the local time span "Start" time. + * This "start" time should be seen as a time marker. Typically it would represent the whole animation + * starting time but its use (and update) is left to the calling application (with one exception occurring + * in the BakeLayers). The FBX SDK does not use this value internally and only guarantees that it will be stored + * to the FBX file and retrieved from it. + * + * Default value is 0. + */ + FbxPropertyT LocalStart; + + /** This property stores the local time span "Stop" time. + * This "stop" time should be seen as a time marker. Typically it would represent the whole animation + * ending time but its use (and update) is left to the calling application (with one exception occurring + * in the BakeLayers). The FBX SDK does not use this value internally and only guarantees that it will be stored + * to the FBX file and retrieved from it. + * + * Default value is 0 + */ + FbxPropertyT LocalStop; + + /** This property stores the reference time span "Start" time. + * This reference start time is another time marker that can be used by the calling application. The FBX SDK + * never uses it and only guarantees that this value is stored in the FBX file and retrieved from it. + * + * Default value is 0 + */ + FbxPropertyT ReferenceStart; + + /** This property stores the reference time span "Stop" time. + * This reference stop time is another time marker that can be used by the calling application. The FBX SDK + * never uses it and only guarantees that this value is stored in the FBX file and retrieved from it. + * + * Default value is 0 + */ + FbxPropertyT ReferenceStop; + + /** Reset the object time spans either to their default values or from the pTakeInfo structure, if provided. + * \param pTakeInfo The take info to be used during reset. + */ + void Reset(const FbxTakeInfo* pTakeInfo = NULL); + + /** + * \name Utility functions. + * + */ + //@{ + /** Get the LocalStart and LocalStop time properties as a FbxTimeSpan. + * \return The current local time span. + */ + FbxTimeSpan GetLocalTimeSpan() const; + + /** Set the LocalStart and LocalStop time properties from a FbxTimeSpan. + * \param pTimeSpan The new local time span. + */ + void SetLocalTimeSpan(FbxTimeSpan& pTimeSpan); + + /** Get the ReferenceStart and ReferenceStop time properties as a FbxTimeSpan. + * \return The current reference time span. + */ + FbxTimeSpan GetReferenceTimeSpan() const; + + /** Set the ReferenceStart and ReferenceStop time properties from a FbxTimeSpan. + * \param pTimeSpan The new reference time span. + */ + void SetReferenceTimeSpan(FbxTimeSpan& pTimeSpan); + + /** Bake all the animation layers on the base layer. + * This function will process all the properties on every animation layer and generate a re-sampled set of + * animation keys (representing the layers' evaluated result) on the base layer. Once this operation is completed + * successfully, all the layers (except the base one) are destroyed. Properties that are only defined on the base + * layer will remain unaffected by the re-sampling. The stack local timespan is updated with the overall animation range. + * + * \param pEvaluator The layer evaluator. This is the engine that evaluates the overall result of any given + * property according to the layers flags. + * \param pStart The start time of the re-sampling range. + * \param pStop The stop time of the re-sampling range. + * \param pPeriod The time increment for the re-sampling. + * \return \c true if the operation was successful and \c false in case of errors. + * \remarks If this AnimStack contains only one AnimLayer, the function will return false and do nothing. + */ + bool BakeLayers(FbxAnimEvaluator* pEvaluator, FbxTime pStart, FbxTime pStop, FbxTime pPeriod); + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void ConstructProperties(bool pForceSet); + virtual void Destruct(bool pRecursive); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_ANIMATION_STACK_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimutilities.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimutilities.h new file mode 100644 index 00000000..ceb008f2 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/animation/fbxanimutilities.h @@ -0,0 +1,193 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxanimutilities.h +#ifndef _FBXSDK_SCENE_ANIMATION_UTILITIES_H_ +#define _FBXSDK_SCENE_ANIMATION_UTILITIES_H_ + +#include + +#include +#include +#include +#include + +#include + +class FbxMultiMap; +class FbxObject; +class FbxProperty; +class FbxScene; +class FbxIO; +class FbxAnimStack; +class FbxAnimLayer; +class FbxAnimCurveNode; +class FbxAnimCurve; + +class FBXSDK_DLL FbxAnimUtilities +{ +public: + /** Inspects all the properties of the given object for animation curves. + * \param pObj Pointer to the object to query. + * \return \c true if at least one property is animated and \c false otherwise. + * \remarks A property is animated if it contains at least one FbxAnimCurve with keys. + */ + static bool IsAnimated(FbxObject* pObj); + + /** Inspects the specified property of the given object for animation curves. + * \param pObj Pointer to the object to query. + * \param pPropertyName Name of the inspected property. + * \param pChannelName Name of the specific channel of the inspected property. + * \return \c true if the specified channel is animated and \c false otherwise. + * \remarks A property is animated if it contains at least one FbxAnimCurve with keys. + */ + static bool IsChannelAnimated(FbxObject* pObj, const char* pPropertyName, const char* pChannelName = NULL); + + class FBXSDK_DLL FbxAnimSplitDef + { + public: + FbxString mName; + FbxTime mStart; + FbxTime mEnd; + + FbxAnimSplitDef() + { + mName = "unnamed"; + mStart = 0; + mEnd = 0; + } + + FbxAnimSplitDef(const FbxString& pName, FbxTime& pStart, FbxTime& pEnd) + { + mName = pName; + mStart = pStart; + mEnd = pEnd; + } + + FbxAnimSplitDef& operator =(const FbxAnimSplitDef& pRhs) + { + mName = pRhs.mName; + mStart = pRhs.mStart; + mEnd = pRhs.mEnd; + return *this; + } + } ; + + class FBXSDK_DLL CurveNodeIntfce + { + public: + // pData is a pointer to the private KFCurveNode + CurveNodeIntfce(void* pData); + ~CurveNodeIntfce(); + + FbxHandle GetHandle(); + + char* GetTimeWarpName() const; + CurveNodeIntfce GetTimeWarp(); + + CurveNodeIntfce GetLayer(int pId); + + int GetCount(); + void* GetHandle(unsigned int pId); + void* GetCurveHandle(int pId = -1); + void SetCurveHandle(void* pCurveHandle, int pId = -1); + CurveNodeIntfce FindRecursive(const char* pName); + + bool IsValid() { return mImp != NULL; } + CurveNodeIntfce& operator=(CurveNodeIntfce& lRhs) + { + mImp = lRhs.mImp; + return *this; + } + + bool operator==(CurveNodeIntfce& lRhs) + { + return (mImp == lRhs.mImp); + } + + private: + friend class FbxAnimUtilities; + void* mImp; + }; + + class FBXSDK_DLL CurveIntfce + { + public: + // pData is a pointer to the private KFCurve + CurveIntfce(void* pData); + CurveIntfce(FbxAnimCurve* pAnimCurve); + ~CurveIntfce(); + + float GetValue(); + void SetValue(float pVal); + int KeyGetCount(); + + void* GetCurveHandle(); + void SetCurveHandle(void* pData); + + int GetPreExtrapolation(); + int GetPreExtrapolationCount(); + int GetPostExtrapolation(); + int GetPostExtrapolationCount(); + + + bool IsValid() { return mImp != NULL; } + CurveIntfce& operator=(CurveIntfce& lRhs) + { + mImp = lRhs.mImp; + mIsAnimCurveImp = lRhs.mIsAnimCurveImp; + return *this; + } + + bool operator==(CurveIntfce& lRhs) + { + return (mImp == lRhs.mImp); + } + + private: + friend class FbxAnimUtilities; + + void* mImp; + bool mIsAnimCurveImp; + }; + + static int SplitAnimationIntoMultipleStacks(FbxScene* pScene, const FbxArray& pAnimSplitDefinitions, const FbxAnimStack* pSrcAnimStack, FbxArray& pDstStacks); + static void ShareAnimCurves(FbxProperty& pDstProperty, FbxProperty& pSrcProperty, FbxScene* pScene); + + // Encapsulate use of private animation data + static void SetTimeWarpSet(FbxMultiMap* pTWset); + + static CurveNodeIntfce CreateCurveNode(const char* pName); + static CurveNodeIntfce CreateCurveNode(FbxIO* pFileObject); + static CurveNodeIntfce CreateCurveNode(FbxIO* pFileObject, CurveNodeIntfce& pParent, bool pOnlyDefaults = false); + static CurveNodeIntfce CreateTimeWarpNode(FbxAnimCurve* pAnimCurve, const char* pFalloffName); + + static CurveNodeIntfce GrabCurveNode(FbxAnimCurveNode* pCN); + static void RestrieveCurveNode(CurveNodeIntfce& pData, FbxIO* mFileObject); + static void StoreCurveNode(CurveNodeIntfce& pData, FbxIO* mFileObject); + static void ReleaseCurveNode(FbxAnimCurveNode* pCurveNode); + static void DestroyCurveNode(CurveNodeIntfce& pData); + static void DestroyCurve(CurveIntfce& pData); + + static void ConnectTimeWarp(FbxAnimCurveNode* pCurveNode, CurveNodeIntfce& pData, FbxMultiMap& pTimeWarpsKFCurveNodes); + static void MergeLayerAndTimeWarp(FbxObject* pObj, FbxAnimLayer* pAnimLayer); + + static void CopyFrom(FbxAnimCurve* pAC, CurveIntfce& pFC); + static bool CompareCurves(FbxAnimCurve* pAC1, FbxAnimCurve* pAC2); + + static void Resample(FbxAnimCurve &pSourceCurve, FbxAnimCurve &pTargetCurve, FbxTime &pStart, FbxTime &pStop, FbxTime &pPeriod, FbxAnimCurveDef::EInterpolationType pInterpolation, FbxAnimCurveDef::ETangentMode pTangentMode, bool pAddStopKey = false); + static void Resample(FbxAnimCurve &pSourceCurve, FbxAnimCurve &pTargetCurve, FbxTime &pStart, FbxTime &pStop, FbxTime &pPeriod, bool pAddStopKey = false); + static void Resample(FbxAnimCurve &pCurve, FbxTime pPeriod, FbxTime pStart = FBXSDK_TIME_MINUS_INFINITE, FbxTime pStop = FBXSDK_TIME_INFINITE, bool pKeysOnFrame = false); +}; + +#include + +#endif /* _FBXSDK_SCENE_ANIMATION_UTILITIES_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxcharacter.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxcharacter.h new file mode 100644 index 00000000..5fc35d5c --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxcharacter.h @@ -0,0 +1,843 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcharacter.h +#ifndef _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_ +#define _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_ + +#include + +#include +#include + +#include + +class FbxControlSet; + +/** \class FbxCharacterLink + * + * \brief This class represents a link between a given FBX node and the associated node in the character hierarchy. It also contains + * the transform matrix (offset) for the linked character's node. + */ +class FBXSDK_DLL FbxCharacterLink +{ +public: + /** \enum EType Character link type */ + enum EType + { + eCharacterLink, + eControlSetLink, + eControlSetEffector, + eControlSetEffectorAux + }; + + /** Default Constructor. */ + FbxCharacterLink(); + + /** Copy Constructor. */ + FbxCharacterLink(const FbxCharacterLink& pCharacterLink); + + /** Assignment operation + * \param pCharacterLink Another FbxCharacterLink object assigned to this one. + */ + FbxCharacterLink& operator=(const FbxCharacterLink& pCharacterLink); + + /** Reset to default values. */ + void Reset(); + + FbxNode* mNode; //! The character's node in hierarchy linked to this character link. + FbxString mTemplateName; //! A template name is a naming convention that is used to automatically map the nodes of other skeletons that use the same naming convention. + FbxVector4 mOffsetT; //! Get offset position of this character link. + FbxVector4 mOffsetR; //! Get offset rotation of this character link. + FbxVector4 mOffsetS; //! Get offset scale of this character link. + FbxVector4 mParentROffset; //! Get the parent offset rotation of this character link + bool mHasRotSpace; //! \c true if this character link has a defined rotation space + FbxLimits mRLimits; //! Get the rotation limits of this character link + FbxVector4 mPreRotation; //! Get the PreRotation of this character link + FbxVector4 mPostRotation; //! Get the PostRotation of this character link + int mRotOrder; //! Get the rotation order of this character link + double mAxisLen; //! Get the axis length of this character link + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxProperty mPropertyLink; + FbxProperty mPropertyOffsetT; + FbxProperty mPropertyOffsetR; + FbxProperty mPropertyOffsetS; + FbxProperty mPropertyParentOffsetR; + FbxProperty mPropertyTemplateName; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** A Character is a person or animal with pre-defined skeleton system. The skeleton system is composed of multiple named node (skeleton). + * This class contains all methods to setup an exported character or query information on an imported character. + * This class also contains some methods for manipulating the FbxCharacterLink, FbxControlSet + * + * The most important part of a FbxCharacter is the FbxCharacterLink. There is one FbxCharacterLink for each characterized node. + * For more information see FbxCharacterLink class documentation. + * + * \see FbxCharacterLink, FbxControlSet + */ +class FBXSDK_DLL FbxCharacter : public FbxConstraint +{ + FBXSDK_OBJECT_DECLARE(FbxCharacter, FbxConstraint); + +public: + /** \enum EInputType Character input type. + * - \e eInputActor Not supported. + * - \e eInputCharacter The character's input is another character. + * - \e eInputMarkerSet The character's input is a control rig. + * - \e eOutputMarkerSet Not supported. + * - \e eInputStancePose The character's input is the stance pose. + */ + enum EInputType + { + eInputActor, + eInputCharacter, + eInputMarkerSet, + eOutputMarkerSet, + eInputStancePose + }; + + /** \enum EGroupId Define ID for character groups that contains multiple character nodes. */ + enum EGroupId + { + eGroupBase, + eGroupAuxiliary, + eGroupSpine, + eGroupRoll, + eGroupSpecial, + eGroupLeftHand, + eGroupRightHand, + eGroupProps, + eGroupGameModeParent, + eGroupNeck, + eGroupLeftFoot, + eGroupRightFoot, + eGroupFloorContact, + eGroupIdCount + }; + + /** \enum ENodeId Define ID for each character node. + */ + enum ENodeId + { + eHips, + eLeftHip, + eLeftKnee, + eLeftAnkle, + eLeftFoot, + eRightHip, + eRightKnee, + eRightAnkle, + eRightFoot, + eWaist, + eChest, + eLeftCollar, + eLeftShoulder, + eLeftElbow, + eLeftWrist, + eRightCollar, + eRightShoulder, + eRightElbow, + eRightWrist, + eNeck, + eHead, + eLeftHipRoll, + eLeftKneeRoll, + eRightHipRoll, + eRightKneeRoll, + eLeftShoulderRoll, + eLeftElbowRoll, + eRightShoulderRoll, + eRightElbowRoll, + eSpine2, + eSpine3, + eSpine4, + eSpine5, + eSpine6, + eSpine7, + eSpine8, + eSpine9, + eLeftThumbA, + eLeftThumbB, + eLeftThumbC, + eLeftIndexA, + eLeftIndexB, + eLeftIndexC, + eLeftMiddleA, + eLeftMiddleB, + eLeftMiddleC, + eLeftRingA, + eLeftRingB, + eLeftRingC, + eLeftPinkyA, + eLeftPinkyB, + eLeftPinkyC, + eRightThumbA, + eRightThumbB, + eRightThumbC, + eRightIndexA, + eRightIndexB, + eRightIndexC, + eRightMiddleA, + eRightMiddleB, + eRightMiddleC, + eRightRingA, + eRightRingB, + eRightRingC, + eRightPinkyA, + eRightPinkyB, + eRightPinkyC, + eReference, + eLeftFloor, + eRightFloor, + eHipsTranslation, + eProps0, + eProps1, + eProps2, + eProps3, + eProps4, + eGameModeParentLeftHipRoll, + eGameModeParentLeftKnee, + eGameModeParentLeftKneeRoll, + eGameModeParentRightHipRoll, + eGameModeParentRightKnee, + eGameModeParentRightKneeRoll, + eGameModeParentLeftShoulderRoll, + eGameModeParentLeftElbow, + eGameModeParentLeftElbowRoll, + eGameModeParentRightShoulderRoll, + eGameModeParentRightElbow, + eGameModeParentRightElbowRoll, + eLeftUpLegRoll, + eLeftLegRoll, + eRightUpLegRoll, + eRightLegRoll, + eLeftArmRoll, + eLeftForeArmRoll, + eRightArmRoll, + eRightForeArmRoll, + eLeftHandFloor, + eRightHandFloor, + eLeftHand, + eRightHand, + eNeck1, + eNeck2, + eNeck3, + eNeck4, + eNeck5, + eNeck6, + eNeck7, + eNeck8, + eNeck9, + eLeftInHandThumb, + eLeftThumbD, + eLeftInHandIndex, + eLeftIndexD, + eLeftInHandMiddle, + eLeftMiddleD, + eLeftInHandRing, + eLeftRingD, + eLeftInHandPinky, + eLeftPinkyD, + eLeftInHandExtraFinger, + eLeftExtraFingerA, + eLeftExtraFingerB, + eLeftExtraFingerC, + eLeftExtraFingerD, + eRightInHandThumb, + eRightThumbD, + eRightInHandIndex, + eRightIndexD, + eRightInHandMiddle, + eRightMiddleD, + eRightInHandRing, + eRightRingD, + eRightInHandPinky, + eRightPinkyD, + eRightInHandExtraFinger, + eRightExtraFingerA, + eRightExtraFingerB, + eRightExtraFingerC, + eRightExtraFingerD, + eLeftInFootThumb, + eLeftFootThumbA, + eLeftFootThumbB, + eLeftFootThumbC, + eLeftFootThumbD, + eLeftInFootIndex, + eLeftFootIndexA, + eLeftFootIndexB, + eLeftFootIndexC, + eLeftFootIndexD, + eLeftInFootMiddle, + eLeftFootMiddleA, + eLeftFootMiddleB, + eLeftFootMiddleC, + eLeftFootMiddleD, + eLeftInFootRing, + eLeftFootRingA, + eLeftFootRingB, + eLeftFootRingC, + eLeftFootRingD, + eLeftInFootPinky, + eLeftFootPinkyA, + eLeftFootPinkyB, + eLeftFootPinkyC, + eLeftFootPinkyD, + eLeftInFootExtraFinger, + eLeftFootExtraFingerA, + eLeftFootExtraFingerB, + eLeftFootExtraFingerC, + eLeftFootExtraFingerD, + eRightInFootThumb, + eRightFootThumbA, + eRightFootThumbB, + eRightFootThumbC, + eRightFootThumbD, + eRightInFootIndex, + eRightFootIndexA, + eRightFootIndexB, + eRightFootIndexC, + eRightFootIndexD, + eRightInFootMiddle, + eRightFootMiddleA, + eRightFootMiddleB, + eRightFootMiddleC, + eRightFootMiddleD, + eRightInFootRing, + eRightFootRingA, + eRightFootRingB, + eRightFootRingC, + eRightFootRingD, + eRightInFootPinky, + eRightFootPinkyA, + eRightFootPinkyB, + eRightFootPinkyC, + eRightFootPinkyD, + eRightInFootExtraFinger, + eRightFootExtraFingerA, + eRightFootExtraFingerB, + eRightFootExtraFingerC, + eRightFootExtraFingerD, + eLeftCollarExtra, + eRightCollarExtra, + eNodeIdCount, + eNodeIdInvalid=-1 + }; + + enum EOffAutoUser + { + eParamModeOff, + eParamModeAuto, + eParamModeUser + }; + + enum EAutoUser + { + eParamModeAuto2, + eParamModeUser2 + }; + + enum EPostureMode + { + ePostureBiped, + ePostureQuadriped, + ePostureCount + }; + + enum EFloorPivot + { + eFloorPivotAuto, + eFloorPivotAnkle, + eFloorPivotToes, + eFloorPivotCount + }; + + enum ERollExtractionMode + { + eRelativeRollExtraction, + eAbsoluteRollExtraction, + eRollExtractionTypeCount + }; + + enum EHipsTranslationMode + { + eHipsTranslationWorldRigid, + eHipsTranslationBodyRigid, + eHipsTranslationTypeCount + }; + + enum EFootContactType + { + eFootTypeNormal, + eFootTypeAnkle, + eFootTypeToeBase, + eFootTypeHoof, + eFootContactModeCount + }; + + enum EHandContactType + { + eHandTypeNormal, + eHandTypeWrist, + eHandTypeFingerBase, + eHandTypeHoof, + eHandContactModeCount + }; + + enum EFingerContactMode + { + eFingerContactModeSticky, + eFingerContactModeSpread, + eFingerContactModeStickySpread, + eFingerContactModeCount + }; + + enum EContactBehaviour + { + eContactNeverSync, + eContactSyncOnKey, + eContactAlwaysSync, + eContactBehaviorCount + }; + + enum EPropertyUnit + { + ePropertyNoUnit, + ePropertyPercent, + ePropertySecond, + ePropertyCentimeter, + ePropertyDegree, + ePropertyEnum, + ePropertyReal + }; + + enum EErrorCode + { + eInternalError, + eErrorCount + }; + + /** Reset to default values. + * - Input type will be set to eInputStancePose. + * - Input object will be set to NULL. + * - Each Character link will be reset. + * - The control set will be reset. + */ + void Reset(); + + /** Set input type and index. + * \param pInputType Input type. + * \param pInputObject Pointer to input character if input type equals eInputCharacter, otherwise \c NULL. + */ + void SetInput(EInputType pInputType, FbxObject* pInputObject = NULL); + + //! Get input type. + EInputType GetInputType() const; + + /** Get input actor or character. + * \return Pointer or \c Null, depending on the input type. + * - If the input type is set to eInputCharacter. The returned pointer can be casted to a pointer of type FbxCharacter. + * - \c Null pointer if the input object has not been set, or if the input type is not set to eInputCharacter. + */ + FbxObject* GetInputObject() const; + + /** Associate a character link to a given character node ID. If a character link already exists for this character node ID, + * the character link will be removed. + * \param pCharacterNodeId Character node ID. + * \param pCharacterLink Character link. + * \param pUpdateObjectList Set to \c true to update the object list (default value). + * \return \c true if successful, \c false otherwise. + */ + bool SetCharacterLink(ENodeId pCharacterNodeId, const FbxCharacterLink& pCharacterLink, bool pUpdateObjectList = true); + + /** Get a character link associated with a given character node ID. + * \param pCharacterNodeId ID of character node requested. + * \param pCharacterLink Optional pointer to receive the character link if function succeeds. + * \return \c true if successful, \c false otherwise. + */ + bool GetCharacterLink(ENodeId pCharacterNodeId, FbxCharacterLink* pCharacterLink = NULL) const; + + /** Get control set associated with the character. + * \return Return the control set associated with the character. + */ + FbxControlSet& GetControlSet() const; + + /** Get number of elements in a given character group. + * \param pCharacterGroupId Character group ID. + * \return The number of elements in the pCharacterGroupId character group. + */ + static int GetCharacterGroupCount(EGroupId pCharacterGroupId); + + /** Get character node ID of an element in a given character group. + * \param pCharacterGroupId Character group ID. + * \param pIndex Character index ID. + * \return Character node ID. + */ + static ENodeId GetCharacterGroupElementByIndex(EGroupId pCharacterGroupId, int pIndex); + + + /** Get character node name of an element in a given character group. + * \param pCharacterGroupId Character group ID. + * \param pIndex Character index ID. + * \return Character node name. + */ + static char* GetCharacterGroupNameByIndex(EGroupId pCharacterGroupId, int pIndex); + + /** Get character node version of an element in a given character group. + * \param pCharacterGroupId Character group ID. + * \param pIndex Character index ID. + * \return Character node version. + */ + static int GetCharacterGroupVersionByIndex(EGroupId pCharacterGroupId, int pIndex); + + /** Find the character group index associated with a given character node name. + * \param pName Character node name. + * \param pForceGroupId Set to \c true to force the character group ID. + * \param pCharacterGroupId Receives character group ID. + * \param pIndex Receives character index ID. + * \return \c true if successful, otherwise \c false. + */ + static bool FindCharacterGroupIndexByName(const char* pName, bool pForceGroupId, EGroupId& pCharacterGroupId, int& pIndex); + + /** Get character node group and index of a given character node ID. + * \param pCharacterNodeId Character node ID. + * \param pCharacterGroupId if the Character node ID is found, the method returns the group ID through this parameter + * \param pIndex if the Character node ID is found, the method returns the index through this parameter + * \remarks Only works for a character node ID that is part of a group. + * \return \c true if successful, \c false otherwise. + */ + static bool GetCharacterGroupIndexByElement(ENodeId pCharacterNodeId, EGroupId& pCharacterGroupId, int& pIndex); + + /** Get character node version of a given character node ID. + * \param pCharacterNodeId Character node ID to get version. + * \param pVersion if the node ID is found, the method returns the version through this parameter + * \remarks Only works for a character node ID is part of a group. + * \return \c true if successful, \c false otherwise. + */ + static bool GetCharacterGroupVersionByElement(ENodeId pCharacterNodeId, int& pVersion); + + /** Get character node name associated with a given character node ID. + * \param pCharacterNodeId Character node ID to get name. + * \param pName if the node ID is found, the method returns the node name through this parameter + * Since the Pointer points to internal data, it is not necessary to allocate a string buffer + * before calling this function. + * \return \c true if a name exists for the given node ID. + */ + static bool GetCharacterNodeNameFromNodeId(ENodeId pCharacterNodeId, char*& pName); + + /** Get the character node ID associated with a given character node name. + * \param pName Character node name to get node ID. + * \param pCharacterNodeId if the node name is found, this method returns the node ID through this parameter + * \return \c true if a node ID exists for the given node name. + */ + static bool GetCharacterNodeIdFromNodeName(const char* pName, ENodeId& pCharacterNodeId); + + // FbxCharacter Properties + FbxPropertyT PullIterationCount; + FbxPropertyT Posture; + FbxPropertyT ForceActorSpace; + FbxPropertyT ScaleCompensation; + FbxPropertyT ScaleCompensationMode; + FbxPropertyT HipsHeightCompensation; + FbxPropertyT HipsHeightCompensationMode; + FbxPropertyT AnkleHeightCompensation; + FbxPropertyT AnkleHeightCompensationMode; + FbxPropertyT AnkleProximityCompensation; + FbxPropertyT AnkleProximityCompensationMode; + FbxPropertyT MassCenterCompensation; + FbxPropertyT ApplyLimits; + FbxPropertyT ChestReduction; + FbxPropertyT CollarReduction; + FbxPropertyT NeckReduction; + FbxPropertyT HeadReduction; + FbxPropertyT ReachActorLeftAnkle; + FbxPropertyT ReachActorRightAnkle; + FbxPropertyT ReachActorLeftKnee; + FbxPropertyT ReachActorRightKnee; + FbxPropertyT ReachActorChest; + FbxPropertyT ReachActorHead; + FbxPropertyT ReachActorLeftWrist; + FbxPropertyT ReachActorRightWrist; + FbxPropertyT ReachActorLeftElbow; + FbxPropertyT ReachActorRightElbow; + FbxPropertyT ReachActorLeftFingerBase; + FbxPropertyT ReachActorRightFingerBase; + FbxPropertyT ReachActorLeftToesBase; + FbxPropertyT ReachActorRightToesBase; + FbxPropertyT ReachActorLeftFingerBaseRotation; + FbxPropertyT ReachActorRightFingerBaseRotation; + FbxPropertyT ReachActorLeftToesBaseRotation; + FbxPropertyT ReachActorRightToesBaseRotation; + FbxPropertyT ReachActorLeftAnkleRotation; + FbxPropertyT ReachActorRightAnkleRotation; + FbxPropertyT ReachActorHeadRotation; + FbxPropertyT ReachActorLeftWristRotation; + FbxPropertyT ReachActorRightWristRotation; + FbxPropertyT ReachActorChestRotation; + FbxPropertyT ReachActorLowerChestRotation; + FbxPropertyT HipsTOffset; + FbxPropertyT ChestTOffset; + FbxPropertyT RollExtractionMode; + FbxPropertyT LeftUpLegRoll; + FbxPropertyT LeftUpLegRollMode; + FbxPropertyT LeftLegRoll; + FbxPropertyT LeftLegRollMode; + FbxPropertyT RightUpLegRoll; + FbxPropertyT RightUpLegRollMode; + FbxPropertyT RightLegRoll; + FbxPropertyT RightLegRollMode; + FbxPropertyT LeftArmRoll; + FbxPropertyT LeftArmRollMode; + FbxPropertyT LeftForeArmRoll; + FbxPropertyT LeftForeArmRollMode; + FbxPropertyT RightArmRoll; + FbxPropertyT RightArmRollMode; + FbxPropertyT RightForeArmRoll; + FbxPropertyT RightForeArmRollMode; + FbxPropertyT LeftUpLegRollEx; + FbxPropertyT LeftUpLegRollExMode; + FbxPropertyT LeftLegRollEx; + FbxPropertyT LeftLegRollExMode; + FbxPropertyT RightUpLegRollEx; + FbxPropertyT RightUpLegRollExMode; + FbxPropertyT RightLegRollEx; + FbxPropertyT RightLegRollExMode; + FbxPropertyT LeftArmRollEx; + FbxPropertyT LeftArmRollExMode; + FbxPropertyT LeftForeArmRollEx; + FbxPropertyT LeftForeArmRollExMode; + FbxPropertyT RightArmRollEx; + FbxPropertyT RightArmRollExMode; + FbxPropertyT RightForeArmExRoll; + FbxPropertyT RightForeArmRollExMode; + FbxPropertyT ContactBehaviour; + FbxPropertyT FootFloorContact; + FbxPropertyT FootAutomaticToes; + FbxPropertyT FootFloorPivot; + FbxPropertyT FootBottomToAnkle; + FbxPropertyT FootBackToAnkle; + FbxPropertyT FootMiddleToAnkle; + FbxPropertyT FootFrontToMiddle; + FbxPropertyT FootInToAnkle; + FbxPropertyT FootOutToAnkle; + FbxPropertyT FootContactSize; + FbxPropertyT FootFingerContact; + FbxPropertyT FootContactType; + FbxPropertyT FootFingerContactMode; + FbxPropertyT FootContactStiffness; + FbxPropertyT FootFingerContactRollStiffness; + FbxPropertyT HandFloorContact; + FbxPropertyT HandAutomaticFingers; + FbxPropertyT HandFloorPivot; + FbxPropertyT HandBottomToWrist; + FbxPropertyT HandBackToWrist; + FbxPropertyT HandMiddleToWrist; + FbxPropertyT HandFrontToMiddle; + FbxPropertyT HandInToWrist; + FbxPropertyT HandOutToWrist; + FbxPropertyT HandContactSize; + FbxPropertyT HandFingerContact; + FbxPropertyT HandContactType; + FbxPropertyT HandFingerContactMode; + FbxPropertyT HandContactStiffness; + FbxPropertyT HandFingerContactRollStiffness; + FbxPropertyT LeftHandThumbTip; + FbxPropertyT LeftHandIndexTip; + FbxPropertyT LeftHandMiddleTip; + FbxPropertyT LeftHandRingTip; + FbxPropertyT LeftHandPinkyTip; + FbxPropertyT LeftHandExtraFingerTip; + FbxPropertyT RightHandThumbTip; + FbxPropertyT RightHandIndexTip; + FbxPropertyT RightHandMiddleTip; + FbxPropertyT RightHandRingTip; + FbxPropertyT RightHandPinkyTip; + FbxPropertyT RightHandExtraFingerTip; + FbxPropertyT LeftFootThumbTip; + FbxPropertyT LeftFootIndexTip; + FbxPropertyT LeftFootMiddleTip; + FbxPropertyT LeftFootRingTip; + FbxPropertyT LeftFootPinkyTip; + FbxPropertyT LeftFootExtraFingerTip; + FbxPropertyT RightFootThumbTip; + FbxPropertyT RightFootIndexTip; + FbxPropertyT RightFootMiddleTip; + FbxPropertyT RightFootRingTip; + FbxPropertyT RightFootPinkyTip; + FbxPropertyT RightFootExtraFingerTip; + FbxPropertyT FingerSolving; + FbxPropertyT CtrlPullLeftToeBase; + FbxPropertyT CtrlPullLeftFoot; + FbxPropertyT CtrlPullLeftKnee; + FbxPropertyT CtrlPullRightToeBase; + FbxPropertyT CtrlPullRightFoot; + FbxPropertyT CtrlPullRightKnee; + FbxPropertyT CtrlPullLeftFingerBase; + FbxPropertyT CtrlPullLeftHand; + FbxPropertyT CtrlPullLeftElbow; + FbxPropertyT CtrlPullRightFingerBase; + FbxPropertyT CtrlPullRightHand; + FbxPropertyT CtrlPullRightElbow; + FbxPropertyT CtrlChestPullLeftHand; + FbxPropertyT CtrlChestPullRightHand; + FbxPropertyT CtrlPullHead; + FbxPropertyT CtrlResistHipsPosition; + FbxPropertyT CtrlEnforceGravity; + FbxPropertyT CtrlResistHipsOrientation; + FbxPropertyT CtrlResistChestPosition; + FbxPropertyT CtrlResistChestOrientation; + FbxPropertyT CtrlResistLeftCollar; + FbxPropertyT CtrlResistRightCollar; + FbxPropertyT CtrlResistLeftKnee; + FbxPropertyT CtrlResistMaximumExtensionLeftKnee; + FbxPropertyT CtrlResistCompressionFactorLeftKnee; + FbxPropertyT CtrlResistRightKnee; + FbxPropertyT CtrlResistMaximumExtensionRightKnee; + FbxPropertyT CtrlResistCompressionFactorRightKnee; + FbxPropertyT CtrlResistLeftElbow; + FbxPropertyT CtrlResistMaximumExtensionLeftElbow; + FbxPropertyT CtrlResistCompressionFactorLeftElbow; + FbxPropertyT CtrlResistRightElbow; + FbxPropertyT CtrlResistMaximumExtensionRightElbow; + FbxPropertyT CtrlResistCompressionFactorRightElbow; + FbxPropertyT CtrlSpineStiffness; + FbxPropertyT CtrlNeckStiffness; + FbxPropertyT MirrorMode; + FbxPropertyT ShoulderCorrection; + FbxPropertyT LeftKneeKillPitch; + FbxPropertyT RightKneeKillPitch; + FbxPropertyT LeftElbowKillPitch; + FbxPropertyT RightElbowKillPitch; + FbxPropertyT HipsTranslationMode; + FbxPropertyT WriteReference; + FbxPropertyT SyncMode; + FbxPropertyT Damping; + FbxPropertyT OrientationDamping; + FbxPropertyT OrientationDampingMode; + FbxPropertyT DisplacementDamping; + FbxPropertyT DisplacementDampingMode; + FbxPropertyT DisplacementMemory; + FbxPropertyT DisplacementMemoryMode; + FbxPropertyT HipsDisplacementDamping; + FbxPropertyT HipsDisplacementDampingMode; + FbxPropertyT AnkleDisplacementDamping; + FbxPropertyT AnkleDisplacementDampingMode; + FbxPropertyT WristDisplacementDamping; + FbxPropertyT WristDisplacementDampingMode; + FbxPropertyT Stabilization; + FbxPropertyT AnkleStabilizationTime; + FbxPropertyT AnkleStabilizationTimeMode; + FbxPropertyT AnkleStabilizationPerimeter; + FbxPropertyT AnkleStabilizationPerimeterMode; + FbxPropertyT AnkleStabilizationAngularPerimeter; + FbxPropertyT AnkleStabilizationAngularPerimeterMode; + FbxPropertyT AnkleStabilizationFloorProximity; + FbxPropertyT AnkleStabilizationFloorProximityMode; + FbxPropertyT AnkleStabilizationDamping; + FbxPropertyT AnkleStabilizationDampingMode; + FbxPropertyT AnkleStabilizationRecoveryTime; + FbxPropertyT AnkleStabilizationRecoveryTimeMode; + FbxPropertyT SourceObject; + FbxPropertyT DestinationObject; + FbxPropertyT Actor; + FbxPropertyT Character; + FbxPropertyT ControlSet; + FbxPropertyT HikVersion; + FbxPropertyT Characterize; + FbxPropertyT LockXForm; + FbxPropertyT LockPick; + + // HIK 4.6 new properties + FbxPropertyT RealisticShoulder; + FbxPropertyT CollarStiffnessX; + FbxPropertyT CollarStiffnessY; + FbxPropertyT CollarStiffnessZ; + FbxPropertyT ExtraCollarRatio; + + FbxPropertyT LeftLegMaxExtensionAngle; + FbxPropertyT RightLegMaxExtensionAngle; + FbxPropertyT LeftArmMaxExtensionAngle; + FbxPropertyT RightArmMaxExtensionAngle; + + FbxPropertyT StretchStartArmsAndLegs; + FbxPropertyT StretchStopArmsAndLegs; + FbxPropertyT SnSScaleArmsAndLegs; + FbxPropertyT SnSReachLeftWrist; + FbxPropertyT SnSReachRightWrist; + FbxPropertyT SnSReachLeftAnkle; + FbxPropertyT SnSReachRightAnkle; + FbxPropertyT SnSScaleSpine; + FbxPropertyT SnSScaleSpineChildren; + FbxPropertyT SnSSpineFreedom; + FbxPropertyT SnSReachChestEnd; + FbxPropertyT SnSScaleNeck; + FbxPropertyT SnSNeckFreedom; + FbxPropertyT SnSReachHead; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + void SetVersion(int pVersion){ mCharacterVersion = pVersion; } + int Version(){ return mCharacterVersion; } + void SetValuesFromLegacyLoad(); + void SetValuesForLegacySave(int pVersion); + void RestoreValuesFromLegacySave(); + bool IsLegacy(); + + int GetPropertyInfoCount(); + void GetPropertyInfo(char* &pCharacterPropertyName, char* &pCharacterPropertyModeName, EPropertyUnit &pUnit, int &pPropertyIndex, char* &pHIKPropertyName, char* &pHIKPropertyModeName, int pIndex) const; + void GetFbxCharacterPropertyFromHIKProperty(char* &pCharacterPropertyName, char* &pCharacterPropertyModeName, EPropertyUnit &pUnit, int &pPropertyIndex, const char* pHIKPropertyName) const; + + FbxCharacterLink* GetCharacterLinkPtr(ENodeId pCharacterNodeId); + + virtual FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const; + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + virtual void Destruct(bool pRecursive); + + virtual FbxObject& Copy(const FbxObject& pObject); + virtual EType GetConstraintType() const; + virtual FbxStringList GetTypeFlags() const; + virtual bool ConnectNotify (FbxConnectEvent const &pEvent); + +private: + bool InverseProperty(FbxProperty& pProp); + + int mCharacterVersion; + FbxCharacterLink mCharacterLink[eNodeIdCount]; + FbxControlSet* mControlSet; + + friend class FbxNode; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +inline EFbxType FbxTypeOf(const FbxCharacter::EOffAutoUser&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCharacter::EAutoUser&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCharacter::EPostureMode&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCharacter::EFloorPivot&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCharacter::ERollExtractionMode&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCharacter::EHipsTranslationMode&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCharacter::EFootContactType&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCharacter::EHandContactType&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCharacter::EFingerContactMode&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCharacter::EContactBehaviour&){ return eFbxEnum; } + +#include + +#endif /* _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxcharacternodename.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxcharacternodename.h new file mode 100644 index 00000000..1bae0d13 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxcharacternodename.h @@ -0,0 +1,224 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcharacternodename.h +#ifndef _FBXSDK_SCENE_CONSTRAINT_CHARACTER_NODE_NAME_H_ +#define _FBXSDK_SCENE_CONSTRAINT_CHARACTER_NODE_NAME_H_ + +#include + +#include + +#define Character_Hips "Hips" +#define Character_LeftUpLeg "LeftUpLeg" +#define Character_LeftLeg "LeftLeg" +#define Character_LeftFoot "LeftFoot" +#define Character_RightUpLeg "RightUpLeg" +#define Character_RightLeg "RightLeg" +#define Character_RightFoot "RightFoot" +#define Character_Spine "Spine" +#define Character_LeftArm "LeftArm" +#define Character_LeftForeArm "LeftForeArm" +#define Character_LeftHand "LeftHand" +#define Character_RightArm "RightArm" +#define Character_RightForeArm "RightForeArm" +#define Character_RightHand "RightHand" +#define Character_Head "Head" +#define Character_LeftToeBase "LeftToeBase" +#define Character_RightToeBase "RightToeBase" +#define Character_LeftShoulder "LeftShoulder" +#define Character_RightShoulder "RightShoulder" +#define Character_LeftShoulderExtra "LeftShoulderExtra" +#define Character_RightShoulderExtra "RightShoulderExtra" +#define Character_Neck "Neck" +#define Character_LeftFingerBase "LeftFingerBase" +#define Character_RightFingerBase "RightFingerBase" +#define Character_Spine1 "Spine1" +#define Character_Spine2 "Spine2" +#define Character_Spine3 "Spine3" +#define Character_Spine4 "Spine4" +#define Character_Spine5 "Spine5" +#define Character_Spine6 "Spine6" +#define Character_Spine7 "Spine7" +#define Character_Spine8 "Spine8" +#define Character_Spine9 "Spine9" +#define Character_Neck1 "Neck1" +#define Character_Neck2 "Neck2" +#define Character_Neck3 "Neck3" +#define Character_Neck4 "Neck4" +#define Character_Neck5 "Neck5" +#define Character_Neck6 "Neck6" +#define Character_Neck7 "Neck7" +#define Character_Neck8 "Neck8" +#define Character_Neck9 "Neck9" +#define Character_LeftUpLegRoll "LeftUpLegRoll" +#define Character_LeftLegRoll "LeftLegRoll" +#define Character_RightUpLegRoll "RightUpLegRoll" +#define Character_RightLegRoll "RightLegRoll" +#define Character_LeftArmRoll "LeftArmRoll" +#define Character_LeftForeArmRoll "LeftForeArmRoll" +#define Character_RightArmRoll "RightArmRoll" +#define Character_RightForeArmRoll "RightForeArmRoll" +#define Character_LeftUpLegRollEx "LeftUpLegRollEx" +#define Character_LeftLegRollEx "LeftLegRollEx" +#define Character_RightUpLegRollEx "RightUpLegRollEx" +#define Character_RightLegRollEx "RightLegRollEx" +#define Character_LeftArmRollEx "LeftArmRollEx" +#define Character_LeftForearmRollEx "LeftForeArmRollEx" +#define Character_RightArmRollEx "RightArmRollEx" +#define Character_RightForearmRollEx "RightForeArmRollEx" +#define Character_Props0 "Props0" +#define Character_Props1 "Props1" +#define Character_Props2 "Props2" +#define Character_Props3 "Props3" +#define Character_Props4 "Props4" +#define Character_LeftHandThumb1 "LeftHandThumb1" +#define Character_LeftHandThumb2 "LeftHandThumb2" +#define Character_LeftHandThumb3 "LeftHandThumb3" +#define Character_LeftHandThumb4 "LeftHandThumb4" +#define Character_LeftHandIndex1 "LeftHandIndex1" +#define Character_LeftHandIndex2 "LeftHandIndex2" +#define Character_LeftHandIndex3 "LeftHandIndex3" +#define Character_LeftHandIndex4 "LeftHandIndex4" +#define Character_LeftHandMiddle1 "LeftHandMiddle1" +#define Character_LeftHandMiddle2 "LeftHandMiddle2" +#define Character_LeftHandMiddle3 "LeftHandMiddle3" +#define Character_LeftHandMiddle4 "LeftHandMiddle4" +#define Character_LeftHandRing1 "LeftHandRing1" +#define Character_LeftHandRing2 "LeftHandRing2" +#define Character_LeftHandRing3 "LeftHandRing3" +#define Character_LeftHandRing4 "LeftHandRing4" +#define Character_LeftHandPinky1 "LeftHandPinky1" +#define Character_LeftHandPinky2 "LeftHandPinky2" +#define Character_LeftHandPinky3 "LeftHandPinky3" +#define Character_LeftHandPinky4 "LeftHandPinky4" +#define Character_LeftHandExtraFinger1 "LeftHandExtraFinger1" +#define Character_LeftHandExtraFinger2 "LeftHandExtraFinger2" +#define Character_LeftHandExtraFinger3 "LeftHandExtraFinger3" +#define Character_LeftHandExtraFinger4 "LeftHandExtraFinger4" +#define Character_RightHandThumb1 "RightHandThumb1" +#define Character_RightHandThumb2 "RightHandThumb2" +#define Character_RightHandThumb3 "RightHandThumb3" +#define Character_RightHandThumb4 "RightHandThumb4" +#define Character_RightHandIndex1 "RightHandIndex1" +#define Character_RightHandIndex2 "RightHandIndex2" +#define Character_RightHandIndex3 "RightHandIndex3" +#define Character_RightHandIndex4 "RightHandIndex4" +#define Character_RightHandMiddle1 "RightHandMiddle1" +#define Character_RightHandMiddle2 "RightHandMiddle2" +#define Character_RightHandMiddle3 "RightHandMiddle3" +#define Character_RightHandMiddle4 "RightHandMiddle4" +#define Character_RightHandRing1 "RightHandRing1" +#define Character_RightHandRing2 "RightHandRing2" +#define Character_RightHandRing3 "RightHandRing3" +#define Character_RightHandRing4 "RightHandRing4" +#define Character_RightHandPinky1 "RightHandPinky1" +#define Character_RightHandPinky2 "RightHandPinky2" +#define Character_RightHandPinky3 "RightHandPinky3" +#define Character_RightHandPinky4 "RightHandPinky4" +#define Character_RightHandExtraFinger1 "RightHandExtraFinger1" +#define Character_RightHandExtraFinger2 "RightHandExtraFinger2" +#define Character_RightHandExtraFinger3 "RightHandExtraFinger3" +#define Character_RightHandExtraFinger4 "RightHandExtraFinger4" +#define Character_LeftFootThumb1 "LeftFootThumb1" +#define Character_LeftFootThumb2 "LeftFootThumb2" +#define Character_LeftFootThumb3 "LeftFootThumb3" +#define Character_LeftFootThumb4 "LeftFootThumb4" +#define Character_LeftFootIndex1 "LeftFootIndex1" +#define Character_LeftFootIndex2 "LeftFootIndex2" +#define Character_LeftFootIndex3 "LeftFootIndex3" +#define Character_LeftFootIndex4 "LeftFootIndex4" +#define Character_LeftFootMiddle1 "LeftFootMiddle1" +#define Character_LeftFootMiddle2 "LeftFootMiddle2" +#define Character_LeftFootMiddle3 "LeftFootMiddle3" +#define Character_LeftFootMiddle4 "LeftFootMiddle4" +#define Character_LeftFootRing1 "LeftFootRing1" +#define Character_LeftFootRing2 "LeftFootRing2" +#define Character_LeftFootRing3 "LeftFootRing3" +#define Character_LeftFootRing4 "LeftFootRing4" +#define Character_LeftFootPinky1 "LeftFootPinky1" +#define Character_LeftFootPinky2 "LeftFootPinky2" +#define Character_LeftFootPinky3 "LeftFootPinky3" +#define Character_LeftFootPinky4 "LeftFootPinky4" +#define Character_LeftFootExtraFinger1 "LeftFootExtraFinger1" +#define Character_LeftFootExtraFinger2 "LeftFootExtraFinger2" +#define Character_LeftFootExtraFinger3 "LeftFootExtraFinger3" +#define Character_LeftFootExtraFinger4 "LeftFootExtraFinger4" +#define Character_RightFootThumb1 "RightFootThumb1" +#define Character_RightFootThumb2 "RightFootThumb2" +#define Character_RightFootThumb3 "RightFootThumb3" +#define Character_RightFootThumb4 "RightFootThumb4" +#define Character_RightFootIndex1 "RightFootIndex1" +#define Character_RightFootIndex2 "RightFootIndex2" +#define Character_RightFootIndex3 "RightFootIndex3" +#define Character_RightFootIndex4 "RightFootIndex4" +#define Character_RightFootMiddle1 "RightFootMiddle1" +#define Character_RightFootMiddle2 "RightFootMiddle2" +#define Character_RightFootMiddle3 "RightFootMiddle3" +#define Character_RightFootMiddle4 "RightFootMiddle4" +#define Character_RightFootRing1 "RightFootRing1" +#define Character_RightFootRing2 "RightFootRing2" +#define Character_RightFootRing3 "RightFootRing3" +#define Character_RightFootRing4 "RightFootRing4" +#define Character_RightFootPinky1 "RightFootPinky1" +#define Character_RightFootPinky2 "RightFootPinky2" +#define Character_RightFootPinky3 "RightFootPinky3" +#define Character_RightFootPinky4 "RightFootPinky4" +#define Character_RightFootExtraFinger1 "RightFootExtraFinger1" +#define Character_RightFootExtraFinger2 "RightFootExtraFinger2" +#define Character_RightFootExtraFinger3 "RightFootExtraFinger3" +#define Character_RightFootExtraFinger4 "RightFootExtraFinger4" +#define Character_LeftInHandThumb "LeftInHandThumb" +#define Character_LeftInHandIndex "LeftInHandIndex" +#define Character_LeftInHandMiddle "LeftInHandMiddle" +#define Character_LeftInHandRing "LeftInHandRing" +#define Character_LeftInHandPinky "LeftInHandPinky" +#define Character_LeftInHandExtraFinger "LeftInHandExtraFinger" +#define Character_RightInHandThumb "RightInHandThumb" +#define Character_RightInHandIndex "RightInHandIndex" +#define Character_RightInHandMiddle "RightInHandMiddle" +#define Character_RightInHandRing "RightInHandRing" +#define Character_RightInHandPinky "RightInHandPinky" +#define Character_RightInHandExtraFinger "RightInHandExtraFinger" +#define Character_LeftInFootThumb "LeftInFootThumb" +#define Character_LeftInFootIndex "LeftInFootIndex" +#define Character_LeftInFootMiddle "LeftInFootMiddle" +#define Character_LeftInFootRing "LeftInFootRing" +#define Character_LeftInFootPinky "LeftInFootPinky" +#define Character_LeftInFootExtraFinger "LeftInFootExtraFinger" +#define Character_RightInFootThumb "RightInFootThumb" +#define Character_RightInFootIndex "RightInFootIndex" +#define Character_RightInFootMiddle "RightInFootMiddle" +#define Character_RightInFootRing "RightInFootRing" +#define Character_RightInFootPinky "RightInFootPinky" +#define Character_RightInFootExtraFinger "RightInFootExtraFinger" + +#define Character_GameModeParentLeftHipRoll "GameModeParentLeftHipRoll" +#define Character_GameModeParentLeftKnee "GameModeParentLeftKnee" +#define Character_GameModeParentLeftKneeRoll "GameModeParentLeftKneeRoll" +#define Character_GameModeParentRightHipRoll "GameModeParentRightHipRoll" +#define Character_GameModeParentRightKnee "GameModeParentRightKnee" +#define Character_GameModeParentRightKneeRoll "GameModeParentRightKneeRoll" +#define Character_GameModeParentLeftShoulderRoll "GameModeParentLeftShoulderRoll" +#define Character_GameModeParentLeftElbow "GameModeParentLeftElbow" +#define Character_GameModeParentLeftElbowRoll "GameModeParentLeftElbowRoll" +#define Character_GameModeParentRightShoulderRoll "GameModeParentRightShoulderRoll" +#define Character_GameModeParentRightElbow "GameModeParentRightElbow" +#define Character_GameModeParentRightElbowRoll "GameModeParentRightElbowRoll" + +#define Character_LeftFloorContact "LeftFloorContact" +#define Character_RightFloorContact "RightFloorContact" +#define Character_LeftHandFloorContact "LeftHandFloorContact" +#define Character_RightHandFloorContact "RightHandFloorContact" + +#include + +#endif /* _FBXSDK_SCENE_CONSTRAINT_CHARACTER_NODE_NAME_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxcharacterpose.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxcharacterpose.h new file mode 100644 index 00000000..66c12252 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxcharacterpose.h @@ -0,0 +1,112 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcharacterpose.h +#ifndef _FBXSDK_SCENE_CONSTRAINT_CHARACTER_POSE_H_ +#define _FBXSDK_SCENE_CONSTRAINT_CHARACTER_POSE_H_ + +#include + +#include +#include +#include + +#include + +/** \class FbxCharacterPose + * \nosubgrouping + * \brief A character pose is a character and an associated hierarchy of nodes. + * + * Only the default position of the nodes is considered, the animation data is ignored. + * + * You can access the content of a character pose, using the functions FbxCharacterPose::GetOffset(), + * FbxCharacterPose::GetLocalPosition(), and FbxCharacterPose::GetGlobalPosition(). + * Their source code is provided inline as examples on how to access the character pose data. + * + * To create a character pose, You must first create a hierarchy of nodes under the root + * node provided by function FbxCharacterPose::GetRootNode(). Then, feed this hierarchy + * of nodes into the character returned by function FbxCharacterPose::GetCharacter(). + * Offsets are set in the character links. Local positions are set using + * FbxNode::SetDefaultT(), FbxNode::SetDefaultR(), and FbxNode::SetDefaultS(). + * + * To set local positions from global positions: + * -# Declare lCharacterPose as a valid pointer to a FbxCharacterPose; + * -# Call lCharacterPose->GetRootNode()->SetLocalStateId(0, true); + * -# Call lCharacterPose->GetRootNode()->SetGlobalStateId(1, true); + * -# Call FbxNode::SetGlobalState() for all nodes found in the hierarchy under lCharacterPose->GetRootNode(); + * -# Call lCharacterPose->GetRootNode()->ComputeLocalState(1, true); + * -# Call lCharacterPose->GetRootNode()->SetCurrentTakeFromLocalState(FBXSDK_TIME_ZERO, true). + */ +class FBXSDK_DLL FbxCharacterPose : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxCharacterPose,FbxObject); + +public: + //! Reset to an empty character pose. + void Reset(); + + /** Get the root node. + * \return Pointer to the root node. + */ + FbxNode* GetRootNode() const; + + /** Get the character. + * \return Pointer to the character. + */ + FbxCharacter* GetCharacter() const; + + /** Get offset matrix for a given character node. + * \param pCharacterNodeId Character Node ID. + * \param pOffset Receives offset matrix. + * \return \c true if successful, \c false otherwise. + */ + bool GetOffset(FbxCharacter::ENodeId pCharacterNodeId, FbxAMatrix& pOffset) const; + + /** Get local position for a given character node. + * \param pCharacterNodeId Character Node ID. + * \param pLocalT Receives local translation vector. + * \param pLocalR Receives local rotation vector. + * \param pLocalS Receives local scaling vector. + * \return \c true if successful, \c false otherwise. + */ + bool GetLocalPosition(FbxCharacter::ENodeId pCharacterNodeId, FbxVector4& pLocalT, FbxVector4& pLocalR, FbxVector4& pLocalS) const; + + /** Get global position for a given character node. + * \param pCharacterNodeId Character Node ID. + * \param pGlobalPosition Receives global position. + * \return \c true if successful, \c false otherwise. + */ + bool GetGlobalPosition(FbxCharacter::ENodeId pCharacterNodeId, FbxAMatrix& pGlobalPosition) const; + + /** Retrieve the pose scene used by this character pose + * \return The pose's scene (this is a different scene than the scene the character pose is in). */ + FbxScene* GetPoseScene() const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + virtual FbxObject* Clone( FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const; + void Clone(FbxScene* pPoseScene, FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL); + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void Destruct(bool pRecursive); + +private: + FbxScene* mPoseScene; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_CONSTRAINT_CHARACTER_POSE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraint.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraint.h new file mode 100644 index 00000000..ae0b0cd8 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraint.h @@ -0,0 +1,123 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxconstraint.h +#ifndef _FBXSDK_SCENE_CONSTRAINT_H_ +#define _FBXSDK_SCENE_CONSTRAINT_H_ + +#include + +#include +#include + +/** Base class for weighted animation constraints. + * Constraints are primarily used to impose limits on properties of objects (e.g. position, orientation, scale) + * and to automate animation processes. + * A constrained object is an object with properties constrained by one or more weighted constraint sources. + * \nosubgrouping + */ +class FBXSDK_DLL FbxConstraint : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxConstraint, FbxObject); + +public: + /** + * \name Properties + */ + //@{ + /** This property represents the degree of influence of a constraint from 0.0 (no influence) to 100.0 (full influence). + * + * Default value is 100.0. + */ + FbxPropertyT Weight; + + /** This property controls whether the constraint is applied or not. + * If the value is \c false the constraint will have no effect. The default value is \c true. + * + * Default value is true. + */ + FbxPropertyT Active; + + /** This property handles the lock state of the constraint. + * + * When enabled, the constrained object cannot be moved away from its constrained location when the constraint is active. + * + * Default value is false. + */ + FbxPropertyT Lock; + //@} + + /** \enum EType Constraint attribute types. + */ + enum EType + { + eUnknown, //! Invalid constraint. + ePosition, //! Position constraint (referred to as a point constraint in Maya). + eRotation, //! Rotation constraint (referred to as an orient constraint in Maya). + eScale, //! Scale constraint. + eParent, //! Parent constraint. + eSingleChainIK, //! Single chain IK constraint. + eAim, //! Aim constraint. + eCharacter, //! Character constraint. + eCustom //! User defined constraints. + }; + + /** Access the type of the constraint. + * \return This type of the constraint. + */ + virtual EType GetConstraintType() const { return eUnknown; } + + /** Retrieve the constrained object. + * \return The constrained object. + */ + virtual FbxObject* GetConstrainedObject() const { return NULL; } + + /** Retrieve the count of constraint source. + * \return The count of constraint source. + */ + virtual int GetConstraintSourceCount() const { return 0; } + + /** Retrieve a constraint source with the specified index. + * \param pIndex The specified index. + * \return The constraint source at the specified index. + */ + virtual FbxObject* GetConstraintSource(int /*pIndex*/) const { return NULL; } + + /** Get the weight associated with a constraint source. + * \param pObject The given constraint source. + * \return The weight of the constraint source. + */ + double GetSourceWeight(const FbxObject* pObject) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + +const FbxString GetWeightPropertyName(const FbxObject * pObject); +void CreateWeightPropertyForSourceObject(FbxObject * pConstraint, const FbxObject * pSourceObject, double pWeightValue); + +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ + +#include + +#endif /* _FBXSDK_SCENE_CONSTRAINT_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintaim.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintaim.h new file mode 100644 index 00000000..07c51c27 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintaim.h @@ -0,0 +1,158 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxconstraintaim.h +#ifndef _FBXSDK_SCENE_CONSTRAINT_AIM_H_ +#define _FBXSDK_SCENE_CONSTRAINT_AIM_H_ + +#include + +#include + +#include + +/** An aim constraint governs an object's orientation so that the object points to other objects. + * For example, you can use the aim constraint to point a light at an object or group of objects. + * \nosubgrouping + */ +class FBXSDK_DLL FbxConstraintAim : public FbxConstraint +{ + FBXSDK_OBJECT_DECLARE(FbxConstraintAim, FbxConstraint); + +public: + /** \enum EWorldUp Constraint world up type, which has the same meaning with Maya. + */ + enum EWorldUp + { + eAimAtSceneUp, //! Constraint scene up type. + eAimAtObjectUp, //! Constraint object up type. + eAimAtObjectRotationUp, //! Constraint object rotation up type. + eAimAtVector, //! Constraint vector type. + eAimAtNone, //! None constraint type. + eAimAtCount //! Constraint world up type count. + }; + + /** + * \name Properties + */ + //@{ + /** This property handles the rotation offset value. + * + * Default value is (0, 0, 0). + */ + FbxPropertyT RotationOffset; + + /** This property provides access to the object or objects which are the targets. + */ + FbxPropertyT AimAtObjects; + + /** This property provides access to the object being aimed. + */ + FbxPropertyT ConstrainedObject; + + /** This property handles world up type. + */ + FbxPropertyT WorldUpType; + + /** This property handles world up object. + */ + FbxPropertyT WorldUpObject; + + /** This property handles world up vector. + * + * Default value is (0, 1, 0). + */ + FbxPropertyT WorldUpVector; + + /** This property handles up vector. + * + * Default value is (0, 1, 0). + */ + FbxPropertyT UpVector; + + /** This property enables you set a specific axis for the constrained object to orient towards. + * + * Default value is (1, 0, 0). + */ + FbxPropertyT AimVector; + + /** This property handles whether to affect the rotation around X axis. + * + * Default value is true. + */ + FbxPropertyT AffectX; + + /** This property handles whether to affect the rotation around Y axis. + * + * Default value is true. + */ + FbxPropertyT AffectY; + + /** This property handles whether to affect the rotation around Z axis. + * + * Default value is true. + */ + FbxPropertyT AffectZ; + //@} + + /** Add a source to the constraint. + * \param pObject New source object. + * \param pWeight Weight of the source object. + */ + void AddConstraintSource(FbxObject* pObject, double pWeight = 100); + + /** Retrieve the constraint source count. + * \return Current constraint source count. + */ + int GetConstraintSourceCount() const; + + /** Retrieve a constraint source object. + * \param pIndex The specified index. + * \return Current source at the specified index. + */ + FbxObject* GetConstraintSource(int pIndex) const; + + /** Set the constrained object. + * \param pObject The constrained object. + */ + void SetConstrainedObject(FbxObject* pObject); + + /** Retrieve the constrained object. + * \return Current constrained object. + */ + FbxObject* GetConstrainedObject() const; + + /** Set the world up object. + * \param pObject The new world up object. + */ + void SetWorldUpObject(FbxObject* pObject); + + /** Retrieve the world up object. + * \return The current world up object. + */ + FbxObject* GetWorldUpObject() const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void ConstructProperties(bool pForceSet); + + virtual EType GetConstraintType() const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +inline EFbxType FbxTypeOf(const FbxConstraintAim::EWorldUp&){ return eFbxEnum; } + +#include + +#endif /* _FBXSDK_SCENE_CONSTRAINT_AIM_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintcustom.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintcustom.h new file mode 100644 index 00000000..33200f3d --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintcustom.h @@ -0,0 +1,40 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxconstraintcustom.h +#ifndef _FBXSDK_SCENE_CONSTRAINT_CUSTOM_H_ +#define _FBXSDK_SCENE_CONSTRAINT_CUSTOM_H_ + +#include + +#include + +#include + +/** \brief This constraint class contains methods for custom constraint. + * \nosubgrouping + */ +class FBXSDK_DLL FbxConstraintCustom : public FbxConstraint +{ + FBXSDK_OBJECT_DECLARE(FbxConstraintCustom, FbxConstraint); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual EType GetConstraintType() const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_CONSTRAINT_CUSTOM_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintparent.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintparent.h new file mode 100644 index 00000000..0dce881f --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintparent.h @@ -0,0 +1,164 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxconstraintparent.h +#ifndef _FBXSDK_SCENE_CONSTRAINT_PARENT_H_ +#define _FBXSDK_SCENE_CONSTRAINT_PARENT_H_ + +#include + +#include + +#include + +/** The parent constraint creates a parent-to-child relationship between any two objects, from any two hierarchies. + * It creates the same relationship as the parent-to-child relationships found in hierarchies. + * You can use this constraint to connect objects without changing hierarchies. + * \nosubgrouping + */ +class FBXSDK_DLL FbxConstraintParent : public FbxConstraint +{ + FBXSDK_OBJECT_DECLARE(FbxConstraintParent, FbxConstraint); + +public: + /** + * \name Properties + */ + //@{ + /** This property handles whether to affect the translation of the constrained object along X axis. + * + * Default value is true. + */ + FbxPropertyT AffectTranslationX; + + /** This property handles whether to affect the translation of the constrained object along Y axis. + * + * Default value is true. + */ + FbxPropertyT AffectTranslationY; + + /** This property handles whether to affect the translation of the constrained object along Z axis. + * + * Default value is true. + */ + FbxPropertyT AffectTranslationZ; + + /** This property handles whether to affect the rotation of the constrained object around X axis. + * + * Default value is true. + */ + FbxPropertyT AffectRotationX; + + /** This property handles whether to affect the rotation of the constrained object around Y axis. + * + * Default value is true. + */ + FbxPropertyT AffectRotationY; + + /** This property handles whether to affect the rotation of the constrained object around Z axis. + * + * Default value is true. + */ + FbxPropertyT AffectRotationZ; + + /** This property handles whether to affect the scaling of the constrained object along X axis. + * + * Default value is true. + */ + FbxPropertyT AffectScalingX; + + /** This property handles whether to affect the scaling of the constrained object along Y axis. + * + * Default value is true. + */ + FbxPropertyT AffectScalingY; + + /** This property handles whether to affect the scaling of the constrained object along Z axis. + * + * Default value is true. + */ + FbxPropertyT AffectScalingZ; + + /** This property used to access constraint sources. + * A constrained object is an object whose position, orientation, and so on is driven by one or more constraint sources. + */ + FbxPropertyT ConstraintSources; + + /** This property used to access constrained object. + * A constrained object is an object whose position, orientation, and so on is driven by one or more constraint sources. + */ + FbxPropertyT ConstrainedObject; + //@} + + /** Set the translation offset of the specified constraint source. + * \param pObject The specified constraint source. + * \param pTranslation The new offset vector. + */ + void SetTranslationOffset(FbxObject* pObject, FbxVector4 pTranslation); + + /** Retrieve the translation offset of the specified constraint source. + * \param pObject The specified constraint source. + * \return The current translation offset. + */ + FbxVector4 GetTranslationOffset(const FbxObject* pObject) const; + + /** Set the rotation offset of the specified constraint source. + * \param pObject The specified constraint source. + * \param pRotation The new offset vector. + */ + virtual void SetRotationOffset(const FbxObject* pObject, FbxVector4 pRotation); + + /** Retrieve the rotation offset of the specified constraint source. + * \param pObject The specified constraint source. + * \return The current translation offset. + */ + FbxVector4 GetRotationOffset(const FbxObject* pObject) const; + + /** Add a constraint source to the constraint. + * \param pObject New constraint source. + * \param pWeight Weight of the constraint source. + */ + void AddConstraintSource(FbxObject* pObject, double pWeight = 100); + + /** Retrieve the constraint source count. + * \return Current constraint source count. + */ + int GetConstraintSourceCount() const; + + /** Retrieve a constraint source object. + * \param pIndex Index of the constraint source. + * \return The constraint source at the specified index. + */ + FbxObject* GetConstraintSource(int pIndex) const; + + /** Set the constrained object. + * \param pObject The constrained object. + */ + void SetConstrainedObject(FbxObject* pObject); + + /** Retrieve the constrained object. + * \return Current constrained object. + */ + FbxObject* GetConstrainedObject() const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void ConstructProperties(bool pForceSet); + virtual EType GetConstraintType() const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_CONSTRAINT_PARENT_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintposition.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintposition.h new file mode 100644 index 00000000..962ad60e --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintposition.h @@ -0,0 +1,113 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxconstraintposition.h +#ifndef _FBXSDK_SCENE_CONSTRAINT_POSITION_H_ +#define _FBXSDK_SCENE_CONSTRAINT_POSITION_H_ + +#include + +#include + +#include + +/** \brief This constraint class contains methods for accessing the properties of a position constraint. + * A position constraint lets you constrain the position of an object based on the position of one or more sources. + * \nosubgrouping + */ +class FBXSDK_DLL FbxConstraintPosition : public FbxConstraint +{ + FBXSDK_OBJECT_DECLARE(FbxConstraintPosition,FbxConstraint); + +public: + + /** + * \name Properties + */ + //@{ + /** This property handles whether to affect x axis. + * + * Default value is true. + */ + FbxPropertyT AffectX; + + /** This property handles whether to affect y axis. + * + * Default value is true. + */ + FbxPropertyT AffectY; + + /** This property handles whether to affect z axis. + * + * Default value is true. + */ + FbxPropertyT AffectZ; + + /** This property handles translation offset. + * + * Default value is (0, 0, 0). + */ + FbxPropertyT Translation; + + /** This property handles constraint source objects. + */ + FbxPropertyT ConstraintSources; + + /** This property handles constraint target objects. + */ + FbxPropertyT ConstrainedObject; + //@} + + /** Add a source to the constraint. + * \param pObject New source object. + * \param pWeight Weight of the source object. + */ + void AddConstraintSource(FbxObject* pObject, double pWeight = 100); + + /** Remove a source from the constraint. + * \param pObject Source object to remove. + */ + bool RemoveConstraintSource(FbxObject* pObject); + + /** Retrieve the constraint source count. + * \return Current constraint source count. + */ + int GetConstraintSourceCount() const; + + /** Retrieve a constraint source object. + * \param pIndex Index of the source + * \return Current source at the specified index. + */ + FbxObject* GetConstraintSource(int pIndex) const; + + /** Set the constrained object. + * \param pObject The constrained object. + */ + void SetConstrainedObject(FbxObject* pObject); + + /** Retrieve the constrained object. + * \return Current constrained object. + */ + FbxObject* GetConstrainedObject() const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void ConstructProperties(bool pForceSet); + virtual EType GetConstraintType() const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_CONSTRAINT_POSITION_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintrotation.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintrotation.h new file mode 100644 index 00000000..ea2baa27 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintrotation.h @@ -0,0 +1,102 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxconstraintrotation.h +#ifndef _FBXSDK_SCENE_CONSTRAINT_ROTATION_H_ +#define _FBXSDK_SCENE_CONSTRAINT_ROTATION_H_ + +#include + +#include + +#include + +/** \brief This constraint class contains methods for accessing the properties of a rotation constraint. + * A rotation constraint lets you constrain the rotation of an object based on the rotation of one or more sources. + * \nosubgrouping + */ +class FBXSDK_DLL FbxConstraintRotation : public FbxConstraint +{ + FBXSDK_OBJECT_DECLARE(FbxConstraintRotation, FbxConstraint); + +public: + /** + * \name Properties + */ + //@{ + /** This property handles whether to affect x axis. + * Default value is true. + */ + FbxPropertyT AffectX; + /** This property handles whether to affect y axis. + * Default value is true. + */ + FbxPropertyT AffectY; + + /** This property handles whether to affect z axis. + * Default value is true. + */ + FbxPropertyT AffectZ; + + /** This property handles rotation offset. + * Default value is (0, 0, 0). + */ + FbxPropertyT Rotation; + + /** This property handles constraint source objects. + */ + FbxPropertyT ConstraintSources; + + /** This property handles constraint target objects. + */ + FbxPropertyT ConstrainedObject; + //@} + + /** Add a source to the constraint. + * \param pObject New source object. + * \param pWeight Weight of the source object. + */ + void AddConstraintSource(FbxObject* pObject, double pWeight = 100); + + /** Retrieve the constraint source count. + * \return Current constraint source count. + */ + int GetConstraintSourceCount() const; + + /** Retrieve a constraint source object. + * \param pIndex Index of the source object + * \return Current source at the specified index. + */ + FbxObject* GetConstraintSource(int pIndex) const; + + /** Set the constrained object. + * \param pObject The constrained object. + */ + void SetConstrainedObject(FbxObject* pObject); + + /** Retrieve the constrained object. + * \return Current constrained object. + */ + FbxObject* GetConstrainedObject() const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void ConstructProperties(bool pForceSet); + virtual EType GetConstraintType() const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_CONSTRAINT_ROTATION_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintscale.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintscale.h new file mode 100644 index 00000000..02a91c20 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintscale.h @@ -0,0 +1,103 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxconstraintscale.h +#ifndef _FBXSDK_SCENE_CONSTRAINT_SCALE_H_ +#define _FBXSDK_SCENE_CONSTRAINT_SCALE_H_ + +#include + +#include + +#include + +/**\brief This constraint class contains methods for accessing the properties of a scale constraint. + * A scale constraint lets you constrain the scale of an object based on the scale of one or more sources. + * \nosubgrouping + */ +class FBXSDK_DLL FbxConstraintScale : public FbxConstraint +{ + FBXSDK_OBJECT_DECLARE(FbxConstraintScale,FbxConstraint); + +public: + /** + * \name Properties + */ + //@{ + /** This property handles whether to affect x axis. + * Default value is true. + */ + FbxPropertyT AffectX; + + /** This property handles whether to affect y axis. + * Default value is true. + */ + FbxPropertyT AffectY; + + /** This property handles whether to affect z axis. + * Default value is true. + */ + FbxPropertyT AffectZ; + + /** This property handles scaling offset. + * Default value is (0, 0, 0). + */ + FbxPropertyT Scaling; + + /** This property handles constraint source objects. + */ + FbxPropertyT ConstraintSources; + + /** This property handles constraint target objects. + */ + FbxPropertyT ConstrainedObject; + //@} + + /** Add a source to the constraint. + * \param pObject New source object. + * \param pWeight Weight of the source object. + */ + void AddConstraintSource(FbxObject* pObject, double pWeight = 100); + + /** Retrieve the constraint source count. + * \return Current constraint source count. + */ + int GetConstraintSourceCount() const; + + /** Retrieve a constraint source object. + * \param pIndex Index of the source + * \return Current source at the specified index. + */ + FbxObject* GetConstraintSource(int pIndex) const; + + /** Set the constrained object. + * \param pObject The constrained object. + */ + void SetConstrainedObject(FbxObject* pObject); + + /** Retrieve the constrained object. + * \return Current constrained object. + */ + FbxObject* GetConstrainedObject() const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void ConstructProperties(bool pForceSet); + virtual EType GetConstraintType() const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_CONSTRAINT_SCALE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintsinglechainik.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintsinglechainik.h new file mode 100644 index 00000000..e50ccc91 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintsinglechainik.h @@ -0,0 +1,169 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxconstraintsinglechainik.h +#ifndef _FBXSDK_SCENE_CONSTRAINT_SINGLE_CHAIN_IK_H_ +#define _FBXSDK_SCENE_CONSTRAINT_SINGLE_CHAIN_IK_H_ + +#include + +#include + +#include + +/** \brief This constraint class contains methods for accessing the properties of a single chain IK constraint. + * \nosubgrouping + */ +class FBXSDK_DLL FbxConstraintSingleChainIK : public FbxConstraint +{ + FBXSDK_OBJECT_DECLARE(FbxConstraintSingleChainIK, FbxConstraint); + +public: + /** Solver pole vector mode. + */ + enum ESolverMode + { + eRotatePlane, //! Rotate plane solver. + eSingleChain //! Single chain solver. + }; + + /** Pole vector mode. + */ + enum EPoleVectorMode + { + eVector, //! Pole vector type is vector. + eObject //! Pole vector type is object. + }; + + /** If the constraints read its animation on Translation and Scale for the nodes it constraints. + */ + enum EEvaluationMode + { + eNeverTS, //! The constraints never read its animation on translation and scale for the nodes. + eAutoDetect, //! The constraints read its animation on translation and scale for the nodes according to automatic detection. + eAlwaysTS //! The constraints always read its animation on translation and scale for the nodes. + }; + + /** + * \name Properties + */ + //@{ + /** This property handles pole vector type. + */ + FbxPropertyT PoleVectorType; + + /** This property handles solver type. + */ + FbxPropertyT SolverType; + + /** This property handles evaluate TS animation. + */ + FbxPropertyT EvaluateTSAnim; + + /** This property handles pole vector objects. + */ + FbxPropertyT PoleVectorObjects; + + /** This property handles pole vector. + * + * Default value is (0, 1, 0). + */ + FbxPropertyT PoleVector; + + /** This property handles twist value. + * + * Default value is 0. + */ + FbxPropertyT Twist; + + /** This property handles first joint object. + */ + FbxPropertyT FirstJointObject; + + /** This property handles end joint object. + */ + FbxPropertyT EndJointObject; + + /** This property handles effector object. + */ + FbxPropertyT EffectorObject; + //@} + + /** Get the weight of a source. + * \param pObject Source object that we want the weight. + */ + double GetPoleVectorObjectWeight(const FbxObject* pObject) const; + + /** Add a source to the constraint. + * \param pObject New source object. + * \param pWeight Weight value of the source object expressed as a percentage. + * \remarks pWeight value is 100 percent by default. + */ + void AddPoleVectorObject(FbxObject* pObject, double pWeight = 100); + + /** Retrieve the constraint source count. + * \return Current constraint source count. + */ + int GetConstraintPoleVectorCount() const; + + /** Retrieve a constraint source object. + * \param pIndex Index of constraint source object. + * \return Current source at the specified index. + */ + FbxObject* GetPoleVectorObject(int pIndex) const; + + /** Set the first joint object. + * \param pObject The first joint object. + */ + void SetFirstJointObject(FbxObject* pObject); + + /** Retrieve the first joint object. + * \return Current first joint object. + */ + FbxObject* GetFirstJointObject() const; + + /** Set the end joint object. + * \param pObject The end joint object. + */ + void SetEndJointObject(FbxObject* pObject); + + /** Retrieve the end joint object. + * \return Current end joint object. + */ + FbxObject* GetEndJointObject() const; + + /** Set the effector object. + * \param pObject The effector object. + */ + void SetEffectorObject(FbxObject* pObject); + + /** Retrieve the effector object. + * \return Current effector object. + */ + FbxObject* GetEffectorObject() const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void ConstructProperties(bool pForceSet); + virtual EType GetConstraintType() const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +inline EFbxType FbxTypeOf(const FbxConstraintSingleChainIK::EPoleVectorMode&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxConstraintSingleChainIK::ESolverMode&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxConstraintSingleChainIK::EEvaluationMode&){ return eFbxEnum; } + +#include + +#endif /* _FBXSDK_SCENE_CONSTRAINT_SINGLE_CHAIN_IK_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintutils.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintutils.h new file mode 100644 index 00000000..e62baf24 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxconstraintutils.h @@ -0,0 +1,37 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxconstraintutils.h +#ifndef _FBXSDK_SCENE_CONSTRAINT_UTILS_H_ +#define _FBXSDK_SCENE_CONSTRAINT_UTILS_H_ + +#include + +#include + +class FbxNode; + +/** Utility class for constraints + *\nosubgrouping + */ +class FBXSDK_DLL FbxConstraintUtils +{ +public: + /** Test if the given node is Single Chain IK Effector. + * \param pNode The given node + * \return \c true if it is, \c false otherwise. + */ + static bool IsNodeSingleChainIKEffector(FbxNode* pNode); +}; + +#include + +#endif /* _FBXSDK_SCENE_CONSTRAINT_UTILS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxcontrolset.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxcontrolset.h new file mode 100644 index 00000000..af354bf2 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxcontrolset.h @@ -0,0 +1,370 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcontrolset.h +#ifndef _FBXSDK_SCENE_CONSTRAINT_CONTROL_SET_H_ +#define _FBXSDK_SCENE_CONSTRAINT_CONTROL_SET_H_ + +#include + +#include + +#include + +class FbxControlSetPlug; + +/** \class FbxControlSetLink + * + * \brief This class represents a link between a given character's FK node and the associated node in the character hierarchy. + * + */ +class FBXSDK_DLL FbxControlSetLink +{ +public: + //! Default constructor. + FbxControlSetLink(); + + /** Copy constructor. + * \param pControlSetLink Given object. + */ + FbxControlSetLink(const FbxControlSetLink& pControlSetLink); + + /** Assignment operator. + * \param pControlSetLink Another FbxControlSetLink object assigned to this one. + */ + FbxControlSetLink& operator=(const FbxControlSetLink& pControlSetLink); + + /** Reset to default values. + * + * Member mNode is set to \c NULL and member mTemplateName is cleared. + */ + void Reset(); + + //! The character's node in a hierarchy linked to this control set link. + FbxNode* mNode; + + //! A template name is a naming convention that is used to automatically map + //! the nodes of other skeletons that use the same naming convention for automatic characterization. + FbxString mTemplateName; +}; + +/** + * An effector wraps a character node (FbxNode) used to animate its control rig (FbxControlSet) via inverse kinematics. + */ +class FBXSDK_DLL FbxEffector +{ +public: + enum ESetId + { + eDefaultSet, + eAux1Set, + eAux2Set, + eAux3Set, + eAux4Set, + eAux5Set, + eAux6Set, + eAux7Set, + eAux8Set, + eAux9Set, + eAux10Set, + eAux11Set, + eAux12Set, + eAux13Set, + eAux14Set, + eSetIdCount + }; + + enum ENodeId + { + eHips, + eLeftAnkle, + eRightAnkle, + eLeftWrist, + eRightWrist, + eLeftKnee, + eRightKnee, + eLeftElbow, + eRightElbow, + eChestOrigin, + eChestEnd, + eLeftFoot, + eRightFoot, + eLeftShoulder, + eRightShoulder, + eHead, + eLeftHip, + eRightHip, + eLeftHand, + eRightHand, + eLeftHandThumb, + eLeftHandIndex, + eLeftHandMiddle, + eLeftHandRing, + eLeftHandPinky, + eLeftHandExtraFinger, + eRightHandThumb, + eRightHandIndex, + eRightHandMiddle, + eRightHandRing, + eRightHandPinky, + eRightHandExtraFinger, + eLeftFootThumb, + eLeftFootIndex, + eLeftFootMiddle, + eLeftFootRing, + eLeftFootPinky, + eLeftFootExtraFinger, + eRightFootThumb, + eRightFootIndex, + eRightFootMiddle, + eRightFootRing, + eRightFootPinky, + eRightFootExtraFinger, + eNodeIdCount, + eNodeIdInvalid=-1 + }; + + //! Default constructor with uninitialized character node. + FbxEffector(); + + /** Assignment operator. + * \param pEffector Another FbxEffector assigned to this one. + */ + FbxEffector& operator=(const FbxEffector& pEffector); + + /** Reset to default values. + * - mNode is set to NULL. + * - mShow is set to true. + */ + void Reset(); + + //! The character's node in a hierarchy linked to this effector. + FbxNode* mNode; + + //! \c true if the effector is visible, \c false if hidden + bool mShow; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + //These members are for backward compatibility and should not be used. + //These properties are now published through class FbxControlSetPlug. + bool mTActive; + bool mRActive; + bool mCandidateTActive; + bool mCandidateRActive; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** \class FbxControlSet + * + * This class contains all methods to either set-up an exported control rig or query information on an imported control rig. + * A Control rig is a character manipulation tool that lets you change the position and orientation + * of a character to create or alter animation. + * + * This class also contains some methods to manipulate the FbxEffector and FbxControlSetLink. + * + * The FbxControlSet class contains FK rig (Forward Kinematics) and IK rig (Inverse Kinematics) animation. The FK rig is represented + * by a list of nodes while the IK rig is represented by a list of effectors. + * + * You can access the FK rig with the FbxControlSetLink class, using the functions FbxControlSet::SetControlSetLink() and FbxControlSet::GetControlSetLink(). + * + * You can access the IK rig with the FbxEffector class, using the functions FbxControlSet::SetEffector() and FbxControlSet::GetEffector(). + * + * \see FbxEffector, FbxControlSetLink + */ +class FBXSDK_DLL FbxControlSet +{ +public: + /** Reset to default values. + * Reset all effector and control set links. + */ + void Reset(); + + /** \enum EType Control rig type. + * - \e eNone No Control rig. + * - \e eFkIk Both an FK rig and IK rig. + * - \e eIkOnly Only an IK rig. + */ + enum EType + { + eNone, + eFkIk, + eIkOnly + }; + + /** Set type as given. + * \param pType The given type. + */ + void SetType(EType pType); + + /** Get type. + * \return The gotten type. + */ + EType GetType() const; + + /** Set use axis flag as given. + * \param pUseAxis The given use axis flag. + */ + void SetUseAxis(bool pUseAxis); + + /** Get use axis flag. + * \return The gotten use axis flag. + */ + bool GetUseAxis() const; + + /** Set lock transform flag as given. + * \param pLockTransform The given lock transform flag. + */ + void SetLockTransform(bool pLockTransform); + + /** Get lock transform flag. + * \return The gotten lock transform flag. + */ + bool GetLockTransform()const; + + /** Set lock 3D pick flag as given. + * \param pLock3DPick The given lock 3D pick flag. + */ + void SetLock3DPick(bool pLock3DPick); + + /** Get lock 3D pick flag. + * \return The gotten lock 3D pick flag. + */ + bool GetLock3DPick() const; + + /** Set a control set link for a character node ID. + * \param pCharacterNodeId Character node ID. + * \param pControlSetLink Control set link to be associated with the Character node ID. + * \return \c true if successful, \c false otherwise. + * \remarks You should avoid setting a control set link for + * eCharacterLeftFloor, eCharacterRightFloor, eCharacterLeftHandFloor, eCharacterRightHandFloor, + * eCharacterProps0, eCharacterProps1, eCharacterProps2, eCharacterProps3 or eCharacterProps4. + * None of these nodes are part of a control set. + */ + bool SetControlSetLink(FbxCharacter::ENodeId pCharacterNodeId, const FbxControlSetLink& pControlSetLink); + + /** Get the control set link associated with a character node ID. + * \param pCharacterNodeId Requested character node ID. + * \param pControlSetLink Optional pointer that returns the control set link if the function succeeds. + * \return \c true if successful, \c false otherwise. + * \remarks You should avoid getting a control set link for + * eCharacterLeftFloor, eCharacterRightFloor, eCharacterLeftHandFloor, eCharacterRightHandFloor, + * eCharacterProps0, eCharacterProps1, eCharacterProps2, eCharacterProps3 or eCharacterProps4. + * None of these nodes are part of a control set. + */ + bool GetControlSetLink(FbxCharacter::ENodeId pCharacterNodeId, FbxControlSetLink* pControlSetLink = NULL) const; + + /** Set an effector node for an effector node ID. + * \param pEffectorNodeId Effector node ID. + * \param pEffector Effector to be associated with the effector node ID. + * \return \c true if successful, \c false otherwise. + */ + bool SetEffector(FbxEffector::ENodeId pEffectorNodeId, FbxEffector pEffector); + + /** Get the effector associated with an effector node ID. + * \param pEffectorNodeId ID of requested effector node. + * \param pEffector Optional pointer that returns the effector if the function succeeds. + * \return \c true if successful, \c false otherwise. + */ + bool GetEffector(FbxEffector::ENodeId pEffectorNodeId, FbxEffector* pEffector = NULL); + + /** Set an auxiliary effector node for an effector node ID. + * \param pEffectorNodeId Effector node ID. + * \param pNode Auxiliary effector node to be associated with the effector node ID. + * \param pEffectorSetId Effector set ID. Set to FbxEffector::eAux1Set by default. + * \return \c true if successful, \c false otherwise. + */ + bool SetEffectorAux(FbxEffector::ENodeId pEffectorNodeId, FbxNode* pNode, FbxEffector::ESetId pEffectorSetId=FbxEffector::eAux1Set); + + /** Get the auxiliary effector associated with an effector node ID. + * \param pEffectorNodeId ID of requested auxiliary effector node. + * \param pNode Optional pointer that returns the auxiliary effector node if the function succeeds. + * \param pEffectorSetId Effector set ID. Set to FbxEffector::eAux1Set by default. + * \return \c true if successful, \c false otherwise. + */ + bool GetEffectorAux(FbxEffector::ENodeId pEffectorNodeId, FbxNode** pNode=NULL, FbxEffector::ESetId pEffectorSetId=FbxEffector::eAux1Set) const; + + /** Get the name associated with an effector node ID. + * \param pEffectorNodeId Effector node ID. + * \return Name associated with the effector node ID. + */ + static char* GetEffectorNodeName(FbxEffector::ENodeId pEffectorNodeId); + + /** Get ID associated with an effector node name. + * \param pEffectorNodeName Effector node name. + * \return Effector node ID associated with the given effector node name, or FbxEffector::eNodeIdInvalid (-1) if + * no effector node with pEffectorNodeName exists. + */ + static FbxEffector::ENodeId GetEffectorNodeId(char* pEffectorNodeName); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + void FromPlug(FbxControlSetPlug *pPlug); + void ToPlug(FbxControlSetPlug *pPlug); + +private: + FbxControlSet(); + ~FbxControlSet(); + + FbxCharacter* mCharacter; + EType mType; + bool mUseAxis; + bool mLockTransform; + bool mLock3DPick; + FbxControlSetLink mControlSetLink[FbxCharacter::eNodeIdCount]; // Except floor node IDs! + FbxEffector mEffector[FbxEffector::eNodeIdCount]; + FbxNode* mEffectorAux[FbxEffector::eNodeIdCount][FbxEffector::eSetIdCount-1]; + + FBXSDK_FRIEND_NEW(); + friend class FbxCharacter; + friend class FbxNode; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** Plug class for control set. + * \nosubgrouping + */ +class FBXSDK_DLL FbxControlSetPlug : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxControlSetPlug, FbxObject); + +public: + //! EType property of control set. + FbxPropertyT ControlSetType; + + //! Use axis flag. + FbxPropertyT UseAxis; + + //! Reference character. + FbxPropertyT Character; + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + virtual FbxStringList GetTypeFlags() const; + +private: + FbxArray mFKBuf; + FbxArray mIKBuf; + + friend class FbxScene; + friend class FbxControlSet; +}; + +inline EFbxType FbxTypeOf(const FbxControlSet::EType&){ return eFbxEnum; } + +#include + +#endif /* _FBXSDK_SCENE_CONSTRAINT_CONTROL_SET_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxhik2fbxcharacter.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxhik2fbxcharacter.h new file mode 100644 index 00000000..3b5a241e --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/constraint/fbxhik2fbxcharacter.h @@ -0,0 +1,273 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxhik2fbxcharacter.h +#ifndef _FBXSDK_SCENE_CONSTRAINT_HIK_TO_FBXCHARACTER_H_ +#define _FBXSDK_SCENE_CONSTRAINT_HIK_TO_FBXCHARACTER_H_ + +#include + +#include + +#include + +class FbxCharacterPropertyInfo +{ +public: + const char* mHIKPropertyName; + const char* mFbxCharacterPropertyModeName; + const char* mFbxCharacterPropertyName; + int mIndex; + FbxCharacter::EPropertyUnit mUnit; +}; + +static const FbxCharacterPropertyInfo gHIK2FbxCharacterPropertyBridge[] = +{ + { "PullIterationCount" ,NULL,"PullIterationCount",0,FbxCharacter::ePropertyReal}, + { "Posture" ,NULL,"Posture",0,FbxCharacter::ePropertyEnum}, + { "ForceActorSpace" ,"ForceActorSpace",NULL,0,FbxCharacter::ePropertyNoUnit}, + { "ScaleCompensation" ,"ScaleCompensationMode","ScaleCompensation",0,FbxCharacter::ePropertyReal}, + { "HipsHeightCompensation" ,"HipsHeightCompensationMode","HipsHeightCompensation",0,FbxCharacter::ePropertyCentimeter}, + { "AnkleHeightCompensation" ,"AnkleHeightCompensationMode","AnkleHeightCompensation",0,FbxCharacter::ePropertyCentimeter}, + { "AnkleProximityCompensation" ,"AnkleProximityCompensationMode","AnkleProximityCompensation",0,FbxCharacter::ePropertyCentimeter}, + { "MassCenterCompensation" ,NULL,"MassCenterCompensation",0,FbxCharacter::ePropertyReal}, + { "ApplyLimits" ,"ApplyLimits",NULL,0,FbxCharacter::ePropertyNoUnit}, + { "ChestReduction" ,NULL,"ChestReduction",0,FbxCharacter::ePropertyPercent}, + { "CollarReduction" ,NULL,"CollarReduction",0,FbxCharacter::ePropertyPercent}, + { "NeckReduction" ,NULL,"NeckReduction",0,FbxCharacter::ePropertyPercent}, + { "HeadReduction" ,NULL,"HeadReduction",0,FbxCharacter::ePropertyPercent}, + { "ParamFootContactStiffness" ,NULL,"FootContactStiffness",0,FbxCharacter::ePropertyPercent}, + { "ParamHandContactStiffness" ,NULL,"HandContactStiffness",0,FbxCharacter::ePropertyPercent}, + { "ParamFootFingerContactRollStiffness" ,NULL,"FootFingerContactRollStiffness",0,FbxCharacter::ePropertyPercent}, + { "ParamHandFingerContactRollStiffness" ,NULL,"HandFingerContactRollStiffness",0,FbxCharacter::ePropertyPercent}, + { "ReachActorLeftAnkle" ,NULL,"ReachActorLeftAnkle",0,FbxCharacter::ePropertyPercent}, + { "ReachActorRightAnkle" ,NULL,"ReachActorRightAnkle",0,FbxCharacter::ePropertyPercent}, + { "ReachActorLeftKnee" ,NULL,"ReachActorLeftKnee",0,FbxCharacter::ePropertyPercent}, + { "ReachActorRightKnee" ,NULL,"ReachActorRightKnee",0,FbxCharacter::ePropertyPercent}, + { "ReachActorChest" ,NULL,"ReachActorChest",0,FbxCharacter::ePropertyPercent}, + { "ReachActorHead" ,NULL,"ReachActorHead",0,FbxCharacter::ePropertyPercent}, + { "ReachActorLeftWrist" ,NULL,"ReachActorLeftWrist",0,FbxCharacter::ePropertyPercent}, + { "ReachActorRightWrist" ,NULL,"ReachActorRightWrist",0,FbxCharacter::ePropertyPercent}, + { "ReachActorLeftElbow" ,NULL,"ReachActorLeftElbow",0,FbxCharacter::ePropertyPercent}, + { "ReachActorRightElbow" ,NULL,"ReachActorRightElbow",0,FbxCharacter::ePropertyPercent}, + { "ReachActorRightFingerBase" ,NULL,"ReachActorRightFingerBase",0,FbxCharacter::ePropertyPercent}, + { "ReachActorLeftFingerBase" ,NULL,"ReachActorLeftFingerBase",0,FbxCharacter::ePropertyPercent}, + { "ReachActorRightToesBase" ,NULL,"ReachActorRightToesBase",0,FbxCharacter::ePropertyPercent}, + { "ReachActorLeftToesBase" ,NULL,"ReachActorLeftToesBase",0,FbxCharacter::ePropertyPercent}, + { "ReachActorRightFingerBaseRotation" ,NULL,"ReachActorRightFingerBaseRotation",0,FbxCharacter::ePropertyPercent}, + { "ReachActorLeftFingerBaseRotation" ,NULL,"ReachActorLeftFingerBaseRotation",0,FbxCharacter::ePropertyPercent}, + { "ReachActorRightToesBaseRotation" ,NULL,"ReachActorRightToesBaseRotation",0,FbxCharacter::ePropertyPercent}, + { "ReachActorLeftToesBaseRotation" ,NULL,"ReachActorLeftToesBaseRotation",0,FbxCharacter::ePropertyPercent}, + { "ReachActorLeftAnkleRotationRotation" ,NULL,"ReachActorLeftAnkleRotation",0,FbxCharacter::ePropertyPercent}, + { "ReachActorRightAnkleRotation" ,NULL,"ReachActorRightAnkleRotation",0,FbxCharacter::ePropertyPercent}, + { "ReachActorHeadRotation" ,NULL,"ReachActorHeadRotation",0,FbxCharacter::ePropertyPercent}, + { "ReachActorLeftWristRotation" ,NULL,"ReachActorLeftWristRotation",0,FbxCharacter::ePropertyPercent}, + { "ReachActorRightWristRotation" ,NULL,"ReachActorRightWristRotation",0,FbxCharacter::ePropertyPercent}, + { "ReachActorChestRotation" ,NULL,"ReachActorChestRotation",0,FbxCharacter::ePropertyPercent}, + { "ReachActorLowerChestRotation" ,NULL,"ReachActorLowerChestRotation",0,FbxCharacter::ePropertyPercent}, + { "HipsTOffsetX" ,NULL,"HipsTOffset",0,FbxCharacter::ePropertyCentimeter}, + { "HipsTOffsetY" ,NULL,"HipsTOffset",1,FbxCharacter::ePropertyCentimeter}, + { "HipsTOffsetZ" ,NULL,"HipsTOffset",2,FbxCharacter::ePropertyCentimeter}, + { "ChestTOffsetX" ,NULL,"ChestTOffset",0,FbxCharacter::ePropertyCentimeter}, + { "ChestTOffsetY" ,NULL,"ChestTOffset",1,FbxCharacter::ePropertyCentimeter}, + { "ChestTOffsetZ" ,NULL,"ChestTOffset",2,FbxCharacter::ePropertyCentimeter}, + { "LeftUpLegRollEx" ,"LeftUpLegRollExMode","LeftUpLegRollEx",0,FbxCharacter::ePropertyPercent}, + { "LeftLegRollEx" ,"LeftLegRollExMode","LeftLegRollEx",0,FbxCharacter::ePropertyPercent}, + { "RightUpLegRollEx" ,"RightUpLegRollExMode","RightUpLegRollEx",0,FbxCharacter::ePropertyPercent}, + { "RightLegRollEx" ,"RightLegRollExMode","RightLegRollEx",0,FbxCharacter::ePropertyPercent}, + { "LeftArmRollEx" ,"LeftArmRollExMode","LeftArmRollEx",0,FbxCharacter::ePropertyPercent}, + { "LeftForeArmRollEx" ,"LeftForeArmRollExMode","LeftForeArmRollEx",0,FbxCharacter::ePropertyPercent}, + { "RightArmRollEx" ,"RightArmRollExMode","RightArmRollEx",0,FbxCharacter::ePropertyPercent}, + { "RightForeArmRollEx" ,"RightForeArmRollExMode","RightForeArmRollEx",0,FbxCharacter::ePropertyPercent}, + { "LeftUpLegRoll" ,"LeftUpLegRollMode","LeftUpLegRoll",0,FbxCharacter::ePropertyPercent}, + { "LeftLegRoll" ,"LeftLegRollMode","LeftLegRoll",0,FbxCharacter::ePropertyPercent}, + { "RightUpLegRoll" ,"RightUpLegRollMode","RightUpLegRoll",0,FbxCharacter::ePropertyPercent}, + { "RightLegRoll" ,"RightLegRollMode","RightLegRoll",0,FbxCharacter::ePropertyPercent}, + { "LeftArmRoll" ,"LeftArmRollMode","LeftArmRoll",0,FbxCharacter::ePropertyPercent}, + { "LeftForeArmRoll" ,"LeftForeArmRollMode","LeftForeArmRoll",0,FbxCharacter::ePropertyPercent}, + { "RightArmRoll" ,"RightArmRollMode","RightArmRoll",0,FbxCharacter::ePropertyPercent}, + { "RightForeArmRoll" ,"RightForeArmRollMode","RightForeArmRoll",0,FbxCharacter::ePropertyPercent}, + { "FloorContact" ,"FootFloorContact","FootFloorContact",0,FbxCharacter::ePropertyNoUnit}, + { "AutomaticToes" ,"FootAutomaticToes",NULL,0,FbxCharacter::ePropertyNoUnit}, + { "RollExtractionMode" ,NULL,"RollExtractionMode",0,FbxCharacter::ePropertyEnum}, + { "FloorPivot" ,NULL,"FootFloorPivot",0,FbxCharacter::ePropertyEnum}, + { "FootBottomToAnkle" ,NULL,"FootBottomToAnkle",0,FbxCharacter::ePropertyCentimeter}, + { "FootBackToAnkle" ,NULL,"FootBackToAnkle",0,FbxCharacter::ePropertyCentimeter}, + { "FootMiddleToAnkle" ,NULL,"FootMiddleToAnkle",0,FbxCharacter::ePropertyCentimeter}, + { "FootFrontToMiddle" ,NULL,"FootFrontToMiddle",0,FbxCharacter::ePropertyCentimeter}, + { "FootInToAnkle" ,NULL,"FootInToAnkle",0,FbxCharacter::ePropertyCentimeter}, + { "FootOutToAnkle" ,NULL,"FootOutToAnkle",0,FbxCharacter::ePropertyCentimeter}, + { "ContactSize" ,NULL,"FootContactSize",0,FbxCharacter::ePropertyReal}, + { "HandFloorContact" ,"HandFloorContact","HandFloorContact",0,FbxCharacter::ePropertyNoUnit}, + { "AutomaticFingers" ,"HandAutomaticFingers",NULL,0,FbxCharacter::ePropertyNoUnit}, + { "HandFloorPivot" ,NULL,"HandFloorPivot",0,FbxCharacter::ePropertyEnum}, + { "HandBottomToWrist" ,NULL,"HandBottomToWrist",0,FbxCharacter::ePropertyCentimeter}, + { "HandBackToWrist" ,NULL,"HandBackToWrist",0,FbxCharacter::ePropertyCentimeter}, + { "HandMiddleToWrist" ,NULL,"HandMiddleToWrist",0,FbxCharacter::ePropertyCentimeter}, + { "HandFrontToMiddle" ,NULL,"HandFrontToMiddle",0,FbxCharacter::ePropertyCentimeter}, + { "HandInToWrist" ,NULL,"HandInToWrist",0,FbxCharacter::ePropertyCentimeter}, + { "HandOutToWrist" ,NULL,"HandOutToWrist",0,FbxCharacter::ePropertyCentimeter}, + { "HandContactSize" ,NULL,"HandContactSize",0,FbxCharacter::ePropertyCentimeter}, + { "LeftHandThumbTip" ,NULL,"LeftHandThumbTip",0,FbxCharacter::ePropertyCentimeter}, + { "LeftHandIndexTip" ,NULL,"LeftHandIndexTip",0,FbxCharacter::ePropertyCentimeter}, + { "LeftHandMiddleTip" ,NULL,"LeftHandMiddleTip",0,FbxCharacter::ePropertyCentimeter}, + { "LeftHandRingTip" ,NULL,"LeftHandRingTip",0,FbxCharacter::ePropertyCentimeter}, + { "LeftHandPinkyTip" ,NULL,"LeftHandPinkyTip",0,FbxCharacter::ePropertyCentimeter}, + { "LeftHandExtraFingerTip" ,NULL,"LeftHandExtraFingerTip",0,FbxCharacter::ePropertyCentimeter}, + { "RightHandThumbTip" ,NULL,"RightHandThumbTip",0,FbxCharacter::ePropertyCentimeter}, + { "RightHandIndexTip" ,NULL,"RightHandIndexTip",0,FbxCharacter::ePropertyCentimeter}, + { "RightHandMiddleTip" ,NULL,"RightHandMiddleTip",0,FbxCharacter::ePropertyCentimeter}, + { "RightHandRingTip" ,NULL,"RightHandRingTip",0,FbxCharacter::ePropertyCentimeter}, + { "RightHandPinkyTip" ,NULL,"RightHandPinkyTip",0,FbxCharacter::ePropertyCentimeter}, + { "RightHandExtraFingerTip" ,NULL,"RightHandExtraFingerTip",0,FbxCharacter::ePropertyCentimeter}, + { "LeftFootThumbTip" ,NULL,"LeftFootThumbTip",0,FbxCharacter::ePropertyCentimeter}, + { "LeftFootIndexTip" ,NULL,"LeftFootIndexTip",0,FbxCharacter::ePropertyCentimeter}, + { "LeftFootMiddleTip" ,NULL,"LeftFootMiddleTip",0,FbxCharacter::ePropertyCentimeter}, + { "LeftFootRingTip" ,NULL,"LeftFootRingTip",0,FbxCharacter::ePropertyCentimeter}, + { "LeftFootPinkyTip" ,NULL,"LeftFootPinkyTip",0,FbxCharacter::ePropertyCentimeter}, + { "LeftFootExtraFingerTip" ,NULL,"LeftFootExtraFingerTip",0,FbxCharacter::ePropertyCentimeter}, + { "RightFootThumbTip" ,NULL,"RightFootThumbTip",0,FbxCharacter::ePropertyCentimeter}, + { "RightFootIndexTip" ,NULL,"RightFootIndexTip",0,FbxCharacter::ePropertyCentimeter}, + { "RightFootMiddleTip" ,NULL,"RightFootMiddleTip",0,FbxCharacter::ePropertyCentimeter}, + { "RightFootRingTip" ,NULL,"RightFootRingTip",0,FbxCharacter::ePropertyCentimeter}, + { "RightFootPinkyTip" ,NULL,"RightFootPinkyTip",0,FbxCharacter::ePropertyCentimeter}, + { "RightFootExtraFingerTip" ,NULL,"RightFootExtraFingerTip",0,FbxCharacter::ePropertyCentimeter}, + { "FingerSolving" ,"FingerSolving",NULL,0,FbxCharacter::ePropertyNoUnit}, + { "FootFingerContact" ,"FootFingerContact","FootFingerContact",0,FbxCharacter::ePropertyNoUnit}, + { "FootContactType" ,NULL,"FootContactType",0,FbxCharacter::ePropertyEnum}, + { "FootFingerContactMode" ,NULL,"FootFingerContactMode",0,FbxCharacter::ePropertyEnum}, + { "HandFingerContact" ,"HandFingerContact","HandFingerContact",0,FbxCharacter::ePropertyNoUnit}, + { "HandContactType" ,NULL,"HandContactType",0,FbxCharacter::ePropertyEnum}, + { "HandFingerContactMode" ,NULL,"HandFingerContactMode",0,FbxCharacter::ePropertyEnum}, + { "CtrlPullLeftToeBase" ,NULL,"CtrlPullLeftToeBase",0,FbxCharacter::ePropertyPercent}, + { "CtrlPullLeftFoot" ,NULL,"CtrlPullLeftFoot",0,FbxCharacter::ePropertyPercent}, + { "CtrlPullLeftKnee" ,NULL,"CtrlPullLeftKnee",0,FbxCharacter::ePropertyPercent}, + { "CtrlPullRightToeBase" ,NULL,"CtrlPullRightToeBase",0,FbxCharacter::ePropertyPercent}, + { "CtrlPullRightFoot" ,NULL,"CtrlPullRightFoot",0,FbxCharacter::ePropertyPercent}, + { "CtrlPullRightKnee" ,NULL,"CtrlPullRightKnee",0,FbxCharacter::ePropertyPercent}, + { "CtrlPullLeftFingerBase" ,NULL,"CtrlPullLeftFingerBase",0,FbxCharacter::ePropertyPercent}, + { "CtrlPullLeftHand" ,NULL,"CtrlPullLeftHand",0,FbxCharacter::ePropertyPercent}, + { "CtrlPullLeftElbow" ,NULL,"CtrlPullLeftElbow",0,FbxCharacter::ePropertyPercent}, + { "CtrlPullRightFingerBase" ,NULL,"CtrlPullRightFingerBase",0,FbxCharacter::ePropertyPercent}, + { "CtrlPullRightHand" ,NULL,"CtrlPullRightHand",0,FbxCharacter::ePropertyPercent}, + { "CtrlPullRightElbow" ,NULL,"CtrlPullRightElbow",0,FbxCharacter::ePropertyPercent}, + { "CtrlChestPullLeftHand" ,NULL,"CtrlChestPullLeftHand",0,FbxCharacter::ePropertyPercent}, + { "CtrlChestPullRightHand" ,NULL,"CtrlChestPullRightHand",0,FbxCharacter::ePropertyPercent}, + { "CtrlPullHead" ,NULL,"CtrlPullHead",0,FbxCharacter::ePropertyPercent}, + { "CtrlResistHipsPosition" ,NULL,"CtrlResistHipsPosition",0,FbxCharacter::ePropertyPercent}, + { "CtrlEnforceGravity" ,NULL,"CtrlEnforceGravity",0,FbxCharacter::ePropertyPercent}, + { "CtrlResistHipsOrientation" ,NULL,"CtrlResistHipsOrientation",0,FbxCharacter::ePropertyPercent}, + { "CtrlResistChestPosition" ,NULL,"CtrlResistChestPosition",0,FbxCharacter::ePropertyPercent}, + { "CtrlResistChestOrientation" ,NULL,"CtrlResistChestOrientation",0,FbxCharacter::ePropertyPercent}, + { "CtrlResistLeftCollar" ,NULL,"CtrlResistLeftCollar",0,FbxCharacter::ePropertyPercent}, + { "CtrlResistRightCollar" ,NULL,"CtrlResistRightCollar",0,FbxCharacter::ePropertyPercent}, + { "CtrlResistLeftKnee" ,NULL,"CtrlResistLeftKnee",0,FbxCharacter::ePropertyPercent}, + { "CtrlResistMaximumExtensionLeftKnee" ,NULL,"CtrlResistMaximumExtensionLeftKnee",0,FbxCharacter::ePropertyPercent}, + { "CtrlResistCompressionFactorLeftKnee" ,NULL,"CtrlResistCompressionFactorLeftKnee",0,FbxCharacter::ePropertyPercent}, + { "CtrlResistRightKnee" ,NULL,"CtrlResistRightKnee",0,FbxCharacter::ePropertyPercent}, + { "CtrlResistMaximumExtensionRightKnee" ,NULL,"CtrlResistMaximumExtensionRightKnee",0,FbxCharacter::ePropertyPercent}, + { "CtrlResistCompressionFactorRightKnee" ,NULL,"CtrlResistCompressionFactorRightKnee",0,FbxCharacter::ePropertyPercent}, + { "CtrlResistLeftElbow" ,NULL,"CtrlResistLeftElbow",0,FbxCharacter::ePropertyPercent}, + { "CtrlResistMaximumExtensionLeftElbow" ,NULL,"CtrlResistMaximumExtensionLeftElbow",0,FbxCharacter::ePropertyPercent}, + { "CtrlResistCompressionFactorLeftElbow" ,NULL,"CtrlResistCompressionFactorLeftElbow",0,FbxCharacter::ePropertyPercent}, + { "CtrlResistRightElbow" ,NULL,"CtrlResistRightElbow",0,FbxCharacter::ePropertyPercent}, + { "CtrlResistMaximumExtensionRightElbow" ,NULL,"CtrlResistMaximumExtensionRightElbow",0,FbxCharacter::ePropertyPercent}, + { "CtrlResistCompressionFactorRightElbow" ,NULL,"CtrlResistCompressionFactorRightElbow",0,FbxCharacter::ePropertyPercent}, + { "ParamCtrlSpineStiffness" ,NULL,"CtrlSpineStiffness",0,FbxCharacter::ePropertyPercent}, + { "ParamCtrlNeckStiffness" ,NULL,"CtrlNeckStiffness",0,FbxCharacter::ePropertyPercent}, + { "Mirror" ,"MirrorMode",NULL,0,FbxCharacter::ePropertyNoUnit}, + { "ShoulderCorrection" ,NULL,"ShoulderCorrection",0,FbxCharacter::ePropertyPercent}, + { "LeftKneeKillPitch" ,"LeftKneeKillPitch",NULL,0,FbxCharacter::ePropertyNoUnit}, + { "RightKneeKillPitch" ,"RightKneeKillPitch",NULL,0,FbxCharacter::ePropertyNoUnit}, + { "LeftElbowKillPitch" ,"LeftElbowKillPitch",NULL,0,FbxCharacter::ePropertyNoUnit}, + { "RightElbowKillPitch" ,"RightElbowKillPitch",NULL,0,FbxCharacter::ePropertyNoUnit}, + { "HipsTranslationMode" ,NULL,"HipsTranslationMode",0,FbxCharacter::ePropertyEnum}, + { "WriteReference" ,"WriteReference",NULL,0,FbxCharacter::ePropertyNoUnit}, + { "SyncMode" ,"SyncMode",NULL,0,FbxCharacter::ePropertyNoUnit}, + { "Damping" ,NULL,"Damping",0,FbxCharacter::ePropertyReal}, + { "Orientation" ,"OrientationDampingMode","OrientationDamping",0,FbxCharacter::ePropertySecond}, + { "Displacement" ,"DisplacementDampingMode","DisplacementDamping",0,FbxCharacter::ePropertyReal}, + { "DisplacementMemory" ,"DisplacementMemoryMode","DisplacementMemory",0,FbxCharacter::ePropertySecond}, + { "HipsDisplacementDamping" ,"HipsDisplacementDampingMode","HipsDisplacementDamping",0,FbxCharacter::ePropertyReal}, + { "AnkleDisplacementDamping" ,"AnkleDisplacementDampingMode","AnkleDisplacementDamping",0,FbxCharacter::ePropertyReal}, + { "WristDisplacementDamping" ,"WristDisplacementDampingMode","WristDisplacementDamping",0,FbxCharacter::ePropertyReal}, + { "Stabilization" ,NULL,"Stabilization",0,FbxCharacter::ePropertyReal}, + { "AnkleStabilizationTime" ,"AnkleStabilizationTimeMode","AnkleStabilizationTime",0,FbxCharacter::ePropertySecond}, + { "AnkleStabilizationPerimeter" ,"AnkleStabilizationPerimeterMode","AnkleStabilizationPerimeter",0,FbxCharacter::ePropertyCentimeter}, + { "AnkleStabilizationAngularPerimeter" ,"AnkleStabilizationAngularPerimeterMode","AnkleStabilizationAngularPerimeter",0,FbxCharacter::ePropertyDegree}, + { "AnkleStabilizationFloorProximity" ,"AnkleStabilizationFloorProximityMode","AnkleStabilizationFloorProximity",0,FbxCharacter::ePropertyCentimeter}, + { "AnkleStabilizationDamping" ,"AnkleStabilizationDampingMode","AnkleStabilizationDamping",0,FbxCharacter::ePropertySecond}, + { "AnkleStabilizationRecoveryTime" ,"AnkleStabilizationRecoveryTimeMode","AnkleStabilizationRecoveryTime",0,FbxCharacter::ePropertySecond}, + { "ContactBehaviour" ,NULL,"ContactBehaviour",0}, + { "ShoulderCorrection", NULL, "RealisticShoulder",0,FbxCharacter::ePropertyReal}, + { "CollarStiffnessX", NULL, "CollarStiffnessX",0,FbxCharacter::ePropertyReal}, + { "CollarStiffnessY", NULL, "CollarStiffnessY",0,FbxCharacter::ePropertyReal}, + { "CollarStiffnessZ", NULL, "CollarStiffnessZ",0,FbxCharacter::ePropertyReal}, + { "ExtraCollarRatio", NULL, "ExtraCollarRatio",0,FbxCharacter::ePropertyPercent}, + { "LeftLegMaxExtensionAngle", NULL, "LeftLegMaxExtensionAngle",0,FbxCharacter::ePropertyReal}, + { "RightLegMaxExtensionAngle", NULL, "RightLegMaxExtensionAngle",0,FbxCharacter::ePropertyReal}, + { "LeftArmMaxExtensionAngle", NULL, "LeftArmMaxExtensionAngle",0,FbxCharacter::ePropertyReal}, + { "RightArmMaxExtensionAngle", NULL, "RightArmMaxExtensionAngle",0,FbxCharacter::ePropertyReal}, + { "StretchStartArmsAndLegs", NULL, "StretchStartArmsAndLegs",0,FbxCharacter::ePropertyReal}, + { "StretchStopArmsAndLegs", NULL, "StretchStopArmsAndLegs",0,FbxCharacter::ePropertyReal}, + { "SnSScaleArmsAndLegs", NULL, "SnSScaleArmsAndLegs",0,FbxCharacter::ePropertyPercent}, + { "SnSReachLeftWrist", NULL, "SnSReachLeftWrist",0,FbxCharacter::ePropertyPercent}, + { "SnSReachRightWrist", NULL, "SnSReachRightWrist",0,FbxCharacter::ePropertyPercent}, + { "SnSReachLeftAnkle", NULL, "SnSReachLeftAnkle",0,FbxCharacter::ePropertyPercent}, + { "SnSReachRightAnkle", NULL, "SnSReachRightAnkle",0,FbxCharacter::ePropertyPercent}, + { "SnSScaleSpine", NULL, "SnSScaleSpine",0,FbxCharacter::ePropertyPercent}, + { "SnSScaleSpineChildren", NULL, "SnSScaleSpineChildren",0,FbxCharacter::ePropertyPercent}, + { "SnSSpineFreedom", NULL, "SnSSpineFreedom",0,FbxCharacter::ePropertyPercent}, + { "SnSReachChestEnd", NULL, "SnSReachChestEnd",0,FbxCharacter::ePropertyPercent}, + { "SnSScaleNeck", NULL, "SnSScaleNeck",0,FbxCharacter::ePropertyPercent}, + { "SnSNeckFreedom", NULL, "SnSNeckFreedom",0,FbxCharacter::ePropertyPercent}, + { "SnSReachHead", NULL, "SnSReachHead",0,FbxCharacter::ePropertyPercent} +}; + +class HIK2FbxCharacterPropertyBridge +{ +public: + enum + { + mParamCount = sizeof(gHIK2FbxCharacterPropertyBridge) / sizeof(FbxCharacterPropertyInfo) + }; + static inline const FbxCharacterPropertyInfo& GetAt(int i) { return gHIK2FbxCharacterPropertyBridge[i] ;} + + static inline const FbxCharacterPropertyInfo* GetPropertyInfoFromFbxCharacterProperty(const char* pCharacterPropertyName) + { + int lCounter = 0; + for( lCounter = 0 ; lCounter < mParamCount; lCounter++ ) + { + if(GetAt(lCounter).mFbxCharacterPropertyName && !strcmp(GetAt(lCounter).mFbxCharacterPropertyName, pCharacterPropertyName)) + { + return &GetAt(lCounter); + } + } + return NULL; + } + + static inline const FbxCharacterPropertyInfo* GetPropertyInfoFromHIKProperty(const char* pHIKPropertyName) + { + int lCounter = 0; + for( lCounter = 0 ; lCounter < mParamCount; lCounter++ ) + { + if(!strcmp(GetAt(lCounter).mHIKPropertyName, pHIKPropertyName)) + { + return &GetAt(lCounter); + } + } + return NULL; + } +}; + +#include + +#endif /* _FBXSDK_SCENE_CONSTRAINT_HIK_TO_FBXCHARACTER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxaxissystem.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxaxissystem.h new file mode 100644 index 00000000..59a1d10b --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxaxissystem.h @@ -0,0 +1,305 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxaxissystem.h +#ifndef _FBXSDK_SCENE_AXIS_SYSTEM_H_ +#define _FBXSDK_SCENE_AXIS_SYSTEM_H_ + +#include + +#include +#include + +#include + +/** This class represents the coordinate system of the scene and can convert scenes + to other coordinate systems. By default the FbxScene uses a Y-Up axis + system. If the calling application wishes to change the default axis it will need to define the new + axis system and call the convert method with the scene as argument. The appropriate transforms will be + applied to the first level objects of the scene only (objects whose parent is the scene itself). Child + objects do not need to be transformed since they inherit from their parents. + The adjustment will affect the translation animation curves and the objects pivots values (the rotation + transformation is applied as a pre-rotation transform therefore the rotation animation curves do not need to + be transformed). Once converted, the scene will have its axis definition changed to the new system. + + For example: + \code + FbxScene* lScene = FbxScene::Create(sdkmanager, "MyScene"); + ... + // the scene is filled with objects + + int dir; + lScene->GetGlobalSettings().GetAxisSystem().GetUpVector(dir); // this returns the equivalent of FbxAxisSystem::eYAxis + + FbxAxisSystem max; // we desire to convert the scene from Y-Up to Z-Up + max.ConvertScene(lScene); + + lScene->GetGlobalSettings().GetAxisSystem().GetUpVector(dir); // this will now return the equivalent of FbxAxisSystem::eZAxis + \endcode + + No conversion will take place if the scene current axis system is equal to the new one. + + The EUpVector specifies which axis has the up and down direction in the system (typically this is the Y or Z axis). + The sign of the EUpVector is applied to represent the direction (1 is up and -1 is down relative to the observer). + + The EFrontVector specifies which axis has the front and back direction in the system. It is not an independent variable, + which means it depends on EUpVector. The enum values ParityEven and ParityOdd denote the first one and + the second one of the remain two axes in addition to the up axis. + + For example if the up axis is X, the remain two axes will be Y And Z, so the ParityEven is Y, and the ParityOdd is Z + ; If the up axis is Y, the remain two axes will X And Z, so the ParityEven is X, and the ParityOdd is Z; + If the up axis is Z, the remain two axes will X And Y, so the ParityEven is X, and the ParityOdd is Y. + + There still needs a parameter to denote the direction of the EFrontVector just as the EUpVector. And the sign of the + EFrontVector represents the direction (1 is front and -1 is back relative to observer). + + If the front axis and the up axis are determined, the third axis will be automatically determined as the left one. + The ECoordSystem enum is a parameter to determine the direction of the third axis just as the EUpVector sign. + It determines if the axis system is right-handed or left-handed just as the enum values. + + Some code for reconstructing a FbxAxisSystem object from reference scene. + \code + //the reference scene + FbxScene* lSceneReference = FbxScene::Create(sdkmanager, "ReferenceScene"); + ... + // the scene is filled with objects + + FbxAxisSystem lAxisSytemReference = lSceneReference->GetGlobalSettings().GetAxisSystem(); + + int lUpVectorSign = 1; + int lFrontVectorSign = 1; + + //get upVector and its sign. + EUpVector lUpVector = lAxisSsytemReference.getUpVector( lUpVectorSign ); + + //get FrontVector and its sign. + EFrontVector lFrontVector = lAxisSsytemReference.getFrontVector( lFrontVectorSign ); + + //get uCoorSystem. + ECoordSystem lCoorSystem = lAxisSsytemReference.GetCoorSystem(); + + //The FbxAxisSystem object to reconstruct back by saved parameter + FbxAxisSystem lAxisSytemReconstruct( lUpVectorSign * lUpVector, + lFrontVectorSign * lFrontVector, + lCoorSystem); + \endcode + + * \nosubgrouping + */ +class FBXSDK_DLL FbxAxisSystem +{ +public: + + /** \enum EUpVector Specifies which canonical axis represents up in the system (typically Y or Z). + */ + enum EUpVector + { + eXAxis = 1, + eYAxis = 2, + eZAxis = 3 + }; + + /** \enum EFrontVector Vector with origin at the screen pointing toward the camera. + * This is a subset of enum EUpVector because axis cannot be repeated. + * We use the system of "parity" to define this vector because its value (X,Y or Z axis) + * really depends on the up-vector. The EPreDefinedAxisSystem list the up-vector, parity and + * coordinate system values for the predefined systems. + * \see Detailed description of FbxAxisSystem. + */ + enum EFrontVector + { + eParityEven = 1, + eParityOdd = 2 + }; + + /** \enum ECoordSystem Specifies the third vector of the system. + * The FbxAxisSystem deduces the correct vector and direction based on this flag + * and the relationship with the up and front vectors. The EPreDefinedAxisSystem list the up-vector, parity and + * coordinate system values for the predefined systems. + */ + enum ECoordSystem + { + eRightHanded, + eLeftHanded + }; + + /** \enum EPreDefinedAxisSystem Enumeration that can be used to initialize a new instance of this class with + * predefined configurations (see the "Predefined axis systems" section). + */ + enum EPreDefinedAxisSystem + { + eMayaZUp, /*!< UpVector = ZAxis, FrontVector = -ParityOdd, CoordSystem = RightHanded */ + eMayaYUp, /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = RightHanded */ + eMax, /*!< UpVector = ZAxis, FrontVector = -ParityOdd, CoordSystem = RightHanded */ + eMotionBuilder, /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = RightHanded */ + eOpenGL, /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = RightHanded */ + eDirectX, /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = LeftHanded */ + eLightwave /*!< UpVector = YAxis, FrontVector = ParityOdd, CoordSystem = LeftHanded */ + }; + + /** + * \name Constructor and Destructor + */ + //@{ + FbxAxisSystem(); + + /** Constructor! + * \param pUpVector Specify the up vector. + * \param pFrontVector Specify the front vector. + * \param pCoorSystem Specify RightHanded coordinate system or LeftHanded coordinate system. + */ + FbxAxisSystem(EUpVector pUpVector, EFrontVector pFrontVector, ECoordSystem pCoorSystem); + + /** Copy constructor! + * \param pAxisSystem Another FbxAxisSystem object copied to this one. + */ + FbxAxisSystem(const FbxAxisSystem& pAxisSystem); + + /** Constructor! + * \param pAxisSystem Specify which predefined axis system to copy. + */ + FbxAxisSystem(const EPreDefinedAxisSystem pAxisSystem); + + //! Destructor. + virtual ~FbxAxisSystem(); + //@} + + /** + * \name Boolean operation. + */ + //@{ + + /** Equivalence operator. + * \param pAxisSystem The axis system to compare against this one. + * \return \c true if these two axis systems are equal, \c false otherwise. + */ + bool operator==(const FbxAxisSystem& pAxisSystem)const; + + /** Non-equivalence operator. + * \param pAxisSystem The axis system to compare against this one. + * \return \c true if these two axis systems are unequal, \c false otherwise. + */ + bool operator!=(const FbxAxisSystem& pAxisSystem)const; + //@} + + /** Assignment operation. + * \param pAxisSystem Axis system assigned to this one. + */ + FbxAxisSystem& operator=(const FbxAxisSystem& pAxisSystem); + + /** + * \name Predefined axis systems. + * These static members define the axis system of the most popular applications. + */ + //@{ + + //! Predefined axis system: MayaZUp (UpVector = +Z, FrontVector = -Y, CoordSystem = +X (RightHanded)) + static const FbxAxisSystem MayaZUp; + + //! Predefined axis system: MayaYUp (UpVector = +Y, FrontVector = +Z, CoordSystem = +X (RightHanded)) + static const FbxAxisSystem MayaYUp; + + //! Predefined axis system: Max (UpVector = +Z, FrontVector = -Y, CoordSystem = +X (RightHanded)) + static const FbxAxisSystem Max; + + //! Predefined axis system: Motionbuilder (UpVector = +Y, FrontVector = +Z, CoordSystem = +X (RightHanded)) + static const FbxAxisSystem Motionbuilder; + + //! Predefined axis system: OpenGL (UpVector = +Y, FrontVector = +Z, CoordSystem = +X (RightHanded)) + static const FbxAxisSystem OpenGL; + + //! Predefined axis system: DirectX (UpVector = +Y, FrontVector = +Z, CoordSystem = -X (LeftHanded)) + static const FbxAxisSystem DirectX; + + //! Predefined axis system: Lightwave (UpVector = +Y, FrontVector = +Z, CoordSystem = -X (LeftHanded)) + static const FbxAxisSystem Lightwave; + //@} + + /** Convert a scene to this axis system. Sets the axis system of the scene to this system unit. + * \param pScene The scene to convert + */ + void ConvertScene(FbxScene* pScene) const; + + /** Convert a scene to this axis system by using the specified + * node as an Fbx_Root. This is provided for backwards compatibility + * only and ConvertScene(FbxScene* pScene) should be used instead when possible. + * \param pScene The scene to convert + * \param pFbxRoot The Fbx_Root node that will be transformed. + */ + void ConvertScene(FbxScene* pScene, FbxNode* pFbxRoot) const; + + /** Get the EFrontVector and its sign of this axis system. + * \param pSign The sign of the axis, 1 for front, -1 for back (relative to observer). + * \return The EFrontVector of this axis system. + */ + EFrontVector GetFrontVector( int & pSign ) const; + + /** Get the EUpVector and its sign of this axis system. + * \param pSign The sign of the axis, 1 for up, -1 for down (relative to observer). + * \return The EUpVector of this axis system. + */ + EUpVector GetUpVector( int & pSign ) const; + + /** Accessor to the ECoordSystem of this object. + * \return The current coordinate axis system of this object. + */ + ECoordSystem GetCoorSystem() const; + + /** Represents the axis system as a 4x4 matrix + * \return The equivalent matrix of this axis system + */ + void GetMatrix(FbxAMatrix& pMatrix); + + /** Converts the children of the given node to this axis system. + * Unlike the ConvertScene() method, this method does not set the axis system + * of the scene that the pRoot node belongs, nor does it adjust FbxPose + * as they are not stored under the scene, and not under a particular node. + * \param pRoot The node whose children are converted. + * \param pSrcSystem The source axis system. + */ + void ConvertChildren(FbxNode* pRoot, const FbxAxisSystem& pSrcSystem) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + class AxisDef + { + public: + enum EAxis {eXAxis, eYAxis, eZAxis}; + bool operator==(const AxisDef& pAxis) const { return (mAxis == pAxis.mAxis) && (mSign == pAxis.mSign); } + EAxis mAxis; + int mSign; + }; + + AxisDef mUpVector; + AxisDef mFrontVector; + AxisDef mCoorSystem; + + void ConvertTProperty(FbxArray& pNodes, const FbxAxisSystem& pFrom) const; + void ConvertCurveNodes(FbxArray& pCurveNodes, const FbxAxisSystem& pFrom) const; + void AdjustPreRotation(FbxNode* pNode, const FbxMatrix& pConversionRM) const; + void AdjustPivots(FbxNode* pNode, const FbxMatrix& pConversionRM) const; + void GetConversionMatrix(const FbxAxisSystem& pFrom, FbxMatrix& pConversionRM) const; + void AdjustLimits(FbxNode* pNode, const FbxMatrix& pConversionRM) const; + void AdjustPoses(FbxScene* pScene, const FbxMatrix& pConversionRM) const; + void AdjustCamera(FbxNode* pNode, const FbxMatrix& pConversionRM ) const; + void AdjustCluster(FbxNode* pNode, const FbxMatrix& pConversionRM) const; + void ConvertChildren(FbxNode* pRoot, const FbxAxisSystem& pSrcSystem, bool pSubChildrenOnly) const; + + friend class FbxGlobalSettings; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_AXIS_SYSTEM_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxcollection.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxcollection.h new file mode 100644 index 00000000..9bdce271 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxcollection.h @@ -0,0 +1,124 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcollection.h +#ifndef _FBXSDK_SCENE_COLLECTION_H_ +#define _FBXSDK_SCENE_COLLECTION_H_ + +#include + +#include + +#include + +class FbxCriteria; + +/** A FbxObject derived container for FbxObject. + * \nosubgrouping + * + */ +class FBXSDK_DLL FbxCollection : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxCollection, FbxObject); + +public: + /** + * \name Collection member management + */ + //@{ + //! Deletes all objects in the container. + virtual void Clear(); + + /** Adds a member. + * \param pMember Object to be added. + */ + virtual bool AddMember(FbxObject* pMember) { return ConnectSrcObject(pMember); } + + /** Removes a member. + * \param pMember Object to be removed. + */ + virtual bool RemoveMember(FbxObject* pMember) { return DisconnectSrcObject(pMember); } + + /** Returns the number of objects contained within the collection. + * \return The number of objects the collection contains. + */ + inline int GetMemberCount () const { return GetSrcObjectCount(); } + + /** Returns the member of the collection at the given index. + * \param pIndex The given index. + * \return The member of the collection at the given index. + */ + inline FbxObject* GetMember(int pIndex=0) const { return GetSrcObject(pIndex); } + + /** Judges whether an object is a part of the collection. + * \param pMember The member to be judged. + * \return \c True if it is a member of the collection, returns \c false if it is not a member. + */ + virtual bool IsMember(const FbxObject* pMember) const; + //@} + + /** + * \name Templated member management + */ + //@{ + /** Returns the number of class T objects contained within the collection. + * \return The number of objects of class T the collection contains. */ + template inline int GetMemberCount() const { return GetSrcObjectCount(); } + + /** Returns the member of class T at the given index in the collection. + * \param pIndex The given index. + * \return The member of class T at the given index. */ + template inline T* GetMember(int pIndex=0) const { return GetSrcObject(pIndex); } + + /** Searches for a member of class T. + * \param pName Member name. */ + template inline T* FindMember(const char* pName) const { return FindSrcObject(pName); } + //@} + + /** + * \name Criteria based member management + */ + //@{ + /** Returns the number of objects contained within the collection that meet the specified criteria. + * \param pCriteria Defines a set of criteria that each object must meet in order to be included in the results. + * \return The number of objects the collection contains that meet the specified criteria. + */ + inline int GetMemberCount(const FbxCriteria& pCriteria) const { return GetSrcObjectCount(pCriteria); } + + /** Returns the member at the given index in the collection if it meets the specified criteria. + * \param pCriteria Defines a set of criteria that the returned object must meet. + * \param pIndex The given index. + * \return The member at the given index if it meets the criteria; NULL otherwise. + */ + inline FbxObject* GetMember(const FbxCriteria& pCriteria, int pIndex=0) const { return GetSrcObject(pCriteria, pIndex); } + + /** Searches for a member with the given name that also meets the given criteria. + * \param pCriteria Defines a set of criteria that the returned object must meet. + * \param pName Member name. + * \return The member with the given name if it meets the criteria; NULL if no match could be found. + */ + inline FbxObject* FindMember(const FbxCriteria& pCriteria, const char* pName) const { return FindSrcObject(pCriteria, pName); } + //@} + + /** + * \name Selection management + */ + //@{ + /** Selects/Deselects all the contained objects. + * \param pSelection If \c true, all objects are selected, if \c false, all objects are deselected. + */ + virtual void SetSelectedAll(bool pSelection); + //@} +}; + +#include + +#endif /* _FBXSDK_SCENE_COLLECTION_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxcollectionexclusive.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxcollectionexclusive.h new file mode 100644 index 00000000..4a4a7acd --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxcollectionexclusive.h @@ -0,0 +1,38 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcollectionexclusive.h +#ifndef _FBXSDK_SCENE_COLLECTION_EXCLUSIVE_H_ +#define _FBXSDK_SCENE_COLLECTION_EXCLUSIVE_H_ + +#include + +#include + +#include + +/** Class for exclusive collections. An object (FbxObject) should belong to only one exclusive collection at most. + * \nosubgrouping + */ +class FBXSDK_DLL FbxCollectionExclusive : public FbxCollection +{ + FBXSDK_OBJECT_DECLARE(FbxCollectionExclusive, FbxCollection); + +public: + /** Add a member if it's not a member of any other FbxCollectionExclusive objects. + * \param pMember Object to be added + */ + bool AddMember(FbxObject* pMember); +}; + +#include + +#endif /* _FBXSDK_SCENE_COLLECTION_EXCLUSIVE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxcontainer.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxcontainer.h new file mode 100644 index 00000000..ace13ff6 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxcontainer.h @@ -0,0 +1,99 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcontainer.h +#ifndef _FBXSDK_SCENE_CONTAINER_H_ +#define _FBXSDK_SCENE_CONTAINER_H_ + +#include + +#include +#include + +#include + +/** Generic container for object grouping and encapsulation. + * \nosubgrouping + */ +class FBXSDK_DLL FbxContainer : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxContainer, FbxObject); + +public: + /** + * \name Container dynamic attributes + */ + //@{ + /** Create a new property. + * \param pName Name of the property + * \param pType Type of the property + * \param pLabel Label of the property + * \return the newly created property + */ + FbxProperty CreateProperty(FbxString pName, FbxDataType & pType, FbxString pLabel); + //@} + + /** + * \name Public and fast access Properties + */ + //@{ + /** This property contains the template name information of the container + * + * To access this property do: TemplateName.Get(). + * To set this property do: TemplateName.Set(FbxString). + * + * Default value is "". + */ + FbxPropertyT TemplateName; + + /** This property contains the template path information of the container + * + * To access this property do: TemplatePath.Get(). + * To set this property do: TemplatePath.Set(FbxString). + * + * Default value is "". + */ + FbxPropertyT TemplatePath; + + /** This property contains the template version information of the container + * + * To access this property do: TemplateVersion.Get(). + * To set this property do: TemplateVersion.Set(FbxString). + * + * Default value is "". + */ + FbxPropertyT TemplateVersion; + + /** This property contains the view name information of the container + * + * To access this property do: ViewName.Get(). + * To set this property do: ViewName.Set(FbxString). + * + * Default value is "". + */ + FbxPropertyT ViewName; + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxContainerTemplate* mContainerTemplate; + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_CONTAINER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxcontainertemplate.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxcontainertemplate.h new file mode 100644 index 00000000..f5d811be --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxcontainertemplate.h @@ -0,0 +1,117 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcontainertemplate.h +#ifndef _FBXSDK_SCENE_CONTAINER_TEMPLATE_H_ +#define _FBXSDK_SCENE_CONTAINER_TEMPLATE_H_ + +#include + +#include + +#include + +//Container Template tokens +#define FBXSDK_CONTAINER_TEMPLATE_STR "templates" +#define FBXSDK_TEMPLATE_STR "template" +#define FBXSDK_EXTENDS_TEMPLATE_STR "extends" + +struct FbxContainerTemplate_internal; + +/** Class for Container Template files. +* \nosubgrouping +*/ +class FBXSDK_DLL FbxContainerTemplate : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxContainerTemplate, FbxObject); + +public: + /** Parse template file to get extend templates. + * \param pTemplateFilePath The template file to be parsed. + * \param pExtendTemplateNames Fill extend templates' names to this array. + * \remark Call this function to get extend templates' names. + */ + void ParseTemplateFile(const char* pTemplateFilePath, FbxArray& pExtendTemplateNames); + + /** Add extend template path. + * \param pExtendTemplatePath The template file path to be added. + */ + void AddExtendTemplatePath(const char* pExtendTemplatePath); + + /** Get the (pIndex)th extend template path. + * \param pIndex Index of the queried item. + * \return The (pIndex)th extend template path. + */ + char* GetExtendTemplatePathAt(FbxUInt pIndex) const; + + /** Get the count of extend template path. + * \return The count of extend template path. + */ + FbxUInt GetExtendTemplateCount() const; + + /** Clear the extend template path. + */ + void ClearExtendTemplatePath(); + + /** This property contains the template name. + * + * To access this property do: TemplateName.Get(). + * To set this property do: TemplateName.Set(FbxString). + * + * Default value is "". + */ + FbxPropertyT ContainerTemplateName; + + /** This property contains the template path. + * + * To access this property do: TemplatePath.Get(). + * To set this property do: TemplatePath.Set(FbxString). + * + * Default value is "". + */ + FbxPropertyT ContainerTemplatePath; + + /** This property contains the template package name. + * + * To access this property do: TemplatePackageName.Get(). + * To set this property do: TemplatePackageName.Set(FbxString). + * + * Default value is "". + */ + FbxPropertyT ContainerTemplatePackageName; + + /** This property contains the template version information of the container + * + * To access this property do: TemplateVersion.Get(). + * To set this property do: TemplateVersion.Set(FbxString). + * + * Default value is "". + */ + FbxPropertyT ContainerTemplateVersion; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + virtual void Destruct(bool pRecursive); + +private: + FbxContainerTemplate_internal* mData; + FbxArray mExtendTemplatePaths; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_CONTAINER_TEMPLATE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxdisplaylayer.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxdisplaylayer.h new file mode 100644 index 00000000..6e043522 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxdisplaylayer.h @@ -0,0 +1,77 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxdisplaylayer.h +#ifndef _FBXSDK_SCENE_DISPLAY_LAYER_H_ +#define _FBXSDK_SCENE_DISPLAY_LAYER_H_ + +#include + +#include + +#include + +/** Class for display layers. +* \nosubgrouping +* Display layers are overlapping views of your scene that contain a list of members. +* The members are exclusive. Members cannot be part of multiple display layers. +* Display layers enables user to organize elements of scene and affect visibility and manipulation attributes of multiple objects at once. +*/ +class FBXSDK_DLL FbxDisplayLayer : public FbxCollectionExclusive +{ + FBXSDK_OBJECT_DECLARE(FbxDisplayLayer, FbxCollectionExclusive); + +public: + ////////////////////////////////////////////////////////////////////////// + // + // Properties + // + ////////////////////////////////////////////////////////////////////////// + /** This property stores the color of this display layer. + * + * Default value is FbxDouble3(0.8,0.8,0.8). + */ + FbxPropertyT Color; + /** This property stores the visibility of this display layer. + * + * Default value is true. + */ + FbxPropertyT Show; + /** This property stores the manipulation state of this display layer. + * + * Default value is false. + */ + FbxPropertyT Freeze; + /** This property stores the level of detail mode of this display layer. + * + * Default value is false. + */ + FbxPropertyT LODBox; + + ////////////////////////////////////////////////////////////////////////// + // Static values + ////////////////////////////////////////////////////////////////////////// + + // Default property values + static const FbxDouble3 sColorDefault; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void ConstructProperties(bool pForceSet); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_DISPLAY_LAYER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxdocument.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxdocument.h new file mode 100644 index 00000000..15400552 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxdocument.h @@ -0,0 +1,312 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxdocument.h +#ifndef _FBXSDK_SCENE_DOCUMENT_H_ +#define _FBXSDK_SCENE_DOCUMENT_H_ + +#include + +#include + +#include + +class FbxStatus; +class FbxTakeInfo; +class FbxPeripheral; +class FbxDocumentInfo; + +/** FbxDocument is a base class for FbxScene and FbxLibrary classes. + * A document is a collection (FbxCollection) of objects (FbxObject), called the root member objects. + * This is because these objects each form the root of an object graph. The manager (FbxManager) has access to all + * documents, scenes and libraries. + * + * A document can be contained in another document, thus, a hierarchy of documents + * can be built. The root of all documents is simply called the root document. + * + * A document manages animation stacks (FbxAnimStack). It also provides access to animation stack information (FbxTakeInfo). + * + * A document carries information in its FbxDocumentInfo. + * + * Documents manage peripherals to load and unload objects (see class FbxPeripheral), + * as well as references to other objects or documents. + * + * Error management is also available. + * + * \nosubgrouping + */ +class FBXSDK_DLL FbxDocument : public FbxCollection +{ + FBXSDK_OBJECT_DECLARE(FbxDocument, FbxCollection); + +public: + /** + * \name Properties + */ + //@{ + FbxPropertyT Roots; + //@} + + /** + * \name Document Member Manager + */ + //@{ + //! Remove document members and restore default settings. + virtual void Clear(); + + /** Add a member object and connect it to Roots. + * \param pMember Object to add to the document. + */ + inline void AddRootMember(FbxObject* pMember){ AddMember(pMember); Roots.ConnectSrcObject(pMember); } + + /** Remove a member object from the document. + * \param pMember Object to remove from the document. + */ + inline void RootRootRemoveMember(FbxObject* pMember){ RemoveMember(pMember); Roots.DisconnectSrcObject(pMember); } + + /** Find a member object in the document, that has the given type and name. + * \param pName Member name. */ + template inline T* FindRootMember(char* pName){ return Roots.FindSrcObject(pName); } + + //! Return the number of objects in the document. + inline int GetRootMemberCount () const { return Roots.GetSrcObjectCount(); } + + /** Return the number of objects of class T in the document. + * \return The number of objects of class T in the document. */ + template inline int GetRootMemberCount() const { return Roots.GetSrcObjectCount(); } + + /** Return the number of objects of the document that satisfy the given criteria. + * \param pCriteria Criteria for selecting objects. + * \return The number of objects satisfying the given criteria. + */ + int GetRootMemberCount(FbxCriteria pCriteria) const; + + /** Return the member of the document at given index. + * \param pIndex Selection index. + */ + inline FbxObject* GetRootMember(int pIndex=0) const { return Roots.GetSrcObject(pIndex); } + + /** Return the member of class T of the document at given index. + * \param pIndex Selection index. */ + template inline T* GetRootMember(int pIndex=0) const { return Roots.GetSrcObject(pIndex); } + + /** Return the document member which satisfies given criteria, for given index. + * \param pCriteria Criteria for selecting objects. + * \param pIndex Selection index. + */ + FbxObject* GetRootMember(FbxCriteria pCriteria, int pIndex=0) const; + + /** Is an object part of the document. + * \param pMember Queried object. + * \return \c true if pMember is an object part of the document, \c false otherwise. + */ + virtual bool IsRootMember(FbxObject* pMember) const; + //@} + + + /** + * \name Document information + */ + //@{ + /** Get the document information. + * \return Pointer to the document information object. + */ + FbxDocumentInfo* GetDocumentInfo() const; + + /** Set the document information. + * \param pSceneInfo Pointer to the document information object. + */ + void SetDocumentInfo(FbxDocumentInfo* pSceneInfo); + //@} + + /** + * \name Offloading management + * + * Documents manage peripherals to load and unload objects (see + * class FbxPeripheral). A peripheral manipulates the content + * of an object. For instance, a peripheral can load the connections + * of an object on demand. + * + * The document does not own the peripheral therefore + * it will not attempt to delete it at destruction time. Cloning + * the document will share the pointer to the peripheral across + * the cloned objects. The assignment operator has a similar behavior. + */ + //@{ + /** Set the current peripheral to be used to load or unload objects from this document. + * \param pPeripheral The peripheral to be set. + */ + void SetPeripheral(FbxPeripheral* pPeripheral); + + /** Retrieve the current peripheral of the document. + * \return Current peripheral. + */ + virtual FbxPeripheral* GetPeripheral(); + + /** Unload all the unloadable objects contained in the document using the currently set peripheral. + * \param pStatus The FbxStatus object to hold error codes. + * \return The number of objects that the document has been able to unload. + */ + int UnloadContent(FbxStatus* pStatus = NULL); + + /** Load all the objects contained in the document with the data from the currently set peripheral. + * \param pStatus The FbxStatus object to hold error codes. + * \return The number of loaded objects. + */ + int LoadContent(FbxStatus* pStatus = NULL); + + //@} + + /** + * \name Referencing management + */ + //@{ + + /** + * Fills an array of pointers to documents that reference objects in this document. + * + * \param pReferencingDocuments Array of pointers to documents. + * \returns Number of documents that reference objects in this document. + */ + int GetReferencingDocuments(FbxArray& pReferencingDocuments) const; + + /** + * Fills an array of pointers to objects in a given document (pFromDoc) + * that reference objects in this document. + * + * \param pFromDoc Pointer to the document containing referencing objects. + * \param pReferencingObjects Array of pointers to referencing objects. + * \returns Number of objects that reference objects in this document. + */ + int GetReferencingObjects(const FbxDocument* pFromDoc, FbxArray& pReferencingObjects) const; + + /** + * Fills an array of pointers to documents that are referenced by objects in this document. + * + * \param pReferencedDocuments Array of pointers to documents. + * \returns Number of documents that are referenced by objects in this document. + */ + int GetReferencedDocuments(FbxArray& pReferencedDocuments) const; + + /** + * Fills an array of pointers to objects in a given document (pToDoc) + * that are referenced by objects in this document. + * + * \param pToDoc Pointer to the document containing referenced objects. + * \param pReferencedObjects Array of pointers to referenced objects. + * \returns Number of objects that are referenced by objects in this document. + */ + int GetReferencedObjects(const FbxDocument* pToDoc, FbxArray& pReferencedObjects) const; + + /** + * Gets the path string to the root document, if the current document is contained in another document. + \returns Path to the root document. + */ + FbxString GetPathToRootDocument(void) const; + /** + * Gets the document path to the root document as an array of documents, if the current document is contained in another document. + * \param pDocumentPath Array of FbxDocument to store the document path. + * \param pFirstCall Recursive flag: always use pFirstCall = \c true. + */ + void GetDocumentPathToRootDocument(FbxArray& pDocumentPath, bool pFirstCall = true) const; + + /** + * Tells if this document is a root document. + \return \c false if the current document is contained in another document, \c true otherwise. + */ + bool IsARootDocument(void) { return (NULL == GetDocument()); } + //@} + + /** + * \name Animation Stack Management + * \remarks Animation stacks replaces the deprecated takes. + */ + //@{ + /** Holds the name of the FbxAnimStack that the application uses for animation in this document. + */ + FbxPropertyT ActiveAnimStackName; + + /** Adds a new animation stack object to this document. + * In case of error, FbxDocument::GetLastErrorID() will return + * \c eTakeError. + * \param pName Animation stack name. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if a new FbxAnimStack has been successfully created, + * \c false if an error occurred or if the specified name defines + * a FbxAnimStack that already exists in the document. + */ + bool CreateAnimStack(const char* pName, FbxStatus* pStatus = NULL); + + /** Destroy the animation stack object identified by pName from this document. + * \param pName Name of the animation stack to be deleted. + * \return \c true if the FbxAnimStack has been destroyed and \c false otherwise. + */ + bool RemoveAnimStack(const char* pName); + + /** Fill a string array with all existing animation stack names. + * The array of string is cleared before it is used + * \param pNameArray An array of string objects. + */ + void FillAnimStackNameArray(FbxArray& pNameArray); + + //@} + + /** + * \name Animation Stack Information Management + * \remark Although takes are deprecated, class FbxTakeInfo is not deprecated and + * now contains animation stack information. + */ + //@{ + /** Set information about an animation stack. + * \param pTakeInfo Animation stack information. Field FbxTakeInfo::mName specifies + * the targeted animation stack. + * \return \c true if animation stack is found with this name, and if information is set. + */ + bool SetTakeInfo(const FbxTakeInfo& pTakeInfo); + + /** Get information about an animation stack. + * \param pTakeName Name of the targeted animation stack. + * \return Animation stack information, or \c NULL if animation stack isn't found or + * has no information set for this document. + */ + FbxTakeInfo* GetTakeInfo(const FbxString& pTakeName) const; + + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + virtual void Compact(); + void ConnectVideos(); + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + virtual void Destruct(bool pRecursive); + + virtual bool ConnectNotify(const FbxConnectEvent& pEvent); + virtual void SetDocument(FbxDocument* pDocument); + + bool FindTakeName(const FbxString& pTakeName); + + FbxArray mTakeInfoArray; + +private: + FbxPeripheral* mPeripheral; + FbxDocumentInfo* mDocumentInfo; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_DOCUMENT_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxdocumentinfo.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxdocumentinfo.h new file mode 100644 index 00000000..af2e235d --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxdocumentinfo.h @@ -0,0 +1,211 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxdocumentinfo.h +#ifndef _FBXSDK_SCENE_DOCUMENT_INFO_H_ +#define _FBXSDK_SCENE_DOCUMENT_INFO_H_ + +#include + +#include + +#include + +class FbxThumbnail; + +/** This class contains scene thumbnails and user-defined summary data. + */ +class FBXSDK_DLL FbxDocumentInfo : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxDocumentInfo, FbxObject); + +public: + /** + * \name Public properties + */ + //@{ + /** This property contains the last saved URL. + * + * To retrieve the value of this property, use LastSavedUrl.Get(). + * To set the value of this property, use LastSavedUrl.Set(FbxString). + * + * The default value is empty. + */ + FbxPropertyT LastSavedUrl; + + /** This property contains the URL. + * + * To retrieve the value of this property, use Url.Get(). + * To set the value of this property, use Url.Set(FbxString). + * + * The default value is empty. + */ + FbxPropertyT Url; + + /** Parent property for all properties related to creation. These properties + * should be set once when the file is created, and you should not change them + * during subsequent save or reload operations. + * The default properties are listed below, but application vendors can add new + * properties under this parent property. + */ + FbxProperty Original; + + /** This property contains the name of the original application vendor. + * + * To retrieve the value of this property, use Original_ApplicationVendor.Get(). + * To set the value of this property, use Original_ApplicationVendor.Set(FbxString). + * + * The default value is empty. + */ + FbxPropertyT Original_ApplicationVendor; + + /** This property contains the original application name. + * + * To retrieve the value of this property, use Original_ApplicationName.Get(). + * To set the value of this property, use Original_ApplicationName.Set(FbxString). + * + * The default value is empty. + */ + FbxPropertyT Original_ApplicationName; + + /** This property contains the version of the original application. + * + * To retrieve the value of this property, use Original_ApplicationVersion.Get(). + * To set the value of this property, use Original_ApplicationVersion.Set(FbxString). + * + * The default value is empty. + */ + FbxPropertyT Original_ApplicationVersion; + + /** This property contains the original file name. + * + * To retrieve the value of this property, use Original_FileName.Get(). + * To set the value of this property, use Original_FileName.Set(FbxString). + * + * The default value is empty. + */ + FbxPropertyT Original_FileName; + + /** This property contains the original date and time. + * + * To retrieve the value of this property, use Original_DateTime_GMT.Get(). + * To set the value of this property, use Original_DateTime_GMT.Set(FbxString). + * + * The default value is 0. + * \remarks The date/time should use GMT time format. + */ + FbxPropertyT Original_DateTime_GMT; + + /** The parent property for all last saved-related properties. + * These properties update every time a file is saved. + * The default properties are below, but application vendors can add new + * properties under this parent property. + * The file creator must set both the original and last saved properties. + */ + FbxProperty LastSaved; + + /** This property contains the last saved application vendor. + * + * To retrieve the value of this property, use LastSaved_ApplicationVendor.Get(). + * To set the value of this property, use LastSaved_ApplicationVendor.Set(FbxString). + * + * The default value is empty. + */ + FbxPropertyT LastSaved_ApplicationVendor; + + /** This property contains the last saved application name. + * + * To retrieve the value of this property, use LastSaved_ApplicationName.Get(). + * To set the value of this property, use LastSaved_ApplicationName.Set(FbxString). + * + * The default value is empty. + */ + FbxPropertyT LastSaved_ApplicationName; + + /** This property contains the last saved application version. + * + * To retrieve the value of this property, use LastSaved_ApplicationVersion.Get(). + * To set the value of this property, use LastSaved_ApplicationVersion.Set(FbxString). + * + * The default value is empty. + */ + FbxPropertyT LastSaved_ApplicationVersion; + + /** This property contains the last saved date and time. + * + * To retrieve the value of this property, use LastSaved_DateTime_GMT.Get(). + * To set the value of this property, use LastSaved_DateTime_GMT.Set(FbxString). + * + * The default value is 0. + * + * \remarks The date/time should use GMT time format. + */ + FbxPropertyT LastSaved_DateTime_GMT; + + /** This property points at the ".fbm" folder that is created when + * reading a FBX file that has embedded data. The embedded data + * is not saved in the FBX file. + * + * The default value is empty. + */ + FbxPropertyT EmbeddedUrl; + //@} + + /** \name User-defined summary data. + * These are user-completed fields that identify or classify the files. + */ + //@{ + FbxString mTitle; //! Title. + FbxString mSubject; //! Subject. + FbxString mAuthor; //! Author + FbxString mKeywords; //! Keywords. + FbxString mRevision; //! Revision. + FbxString mComment; //! Comment. + //@} + + /** + * \name Scene Thumbnail. + */ + //@{ + /** Returns the thumbnail for the scene. + * \return Pointer to the thumbnail. + */ + FbxThumbnail* GetSceneThumbnail(); + + /** Sets the thumbnail for the scene. + * \param pSceneThumbnail Pointer to the thumbnail. + */ + void SetSceneThumbnail(FbxThumbnail* pSceneThumbnail); + //@} + + /** Clears the content. + * Resets all the strings to an empty string and clears + * the pointer to the thumbnail. + */ + void Clear(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + +protected: + virtual void Destruct(bool pRecursive); + virtual void ConstructProperties(bool pForceSet); + + FbxPropertyT SceneThumbnail; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_DOCUMENT_INFO_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxenvironment.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxenvironment.h new file mode 100644 index 00000000..08a3ac55 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxenvironment.h @@ -0,0 +1,42 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxenvironment.h +#ifndef _FBXSDK_SCENE_ENVIRONMENT_H_ +#define _FBXSDK_SCENE_ENVIRONMENT_H_ + +#include + +#include + +#include + +/** This class contains the description of a scene environment. It contains the properties of sun parameters, + * sky parameters, daylight controller parameters ,environment map parameters + * and cloud map parameters. + * \nosubgrouping + */ +class FBXSDK_DLL FbxEnvironment : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxEnvironment, FbxObject); + +public: +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + bool ProvidesLighting() const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_ENVIRONMENT_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxgroupname.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxgroupname.h new file mode 100644 index 00000000..bf9ca988 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxgroupname.h @@ -0,0 +1,72 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxgroupname.h +#ifndef _FBXSDK_SCENE_GROUP_NAME_H_ +#define _FBXSDK_SCENE_GROUP_NAME_H_ + +#include + +#include + +#define MODEL_PREFIX "Model::" +#define MATERIAL_PREFIX "Material::" +#define POSE_PREFIX "Pose::" +#define DEFORMER_PREFIX "Deformer::" +#define CONTAINER_PREFIX "Container::" +#define SUBDEFORMER_PREFIX "SubDeformer::" +#define CONSTRAINT_PREFIX "Constraint::" +#define CONTROLSET_PLUG_PREFIX "ControlSetPlug::" +#define VIDEO_PREFIX "Video::" +#define TEXTURE_PREFIX "Texture::" +#define THUMBNAIL_PREFIX "Thumbnail::" +#define MARKER_SET_PREFIX "MarkerSet::" +#define CONSTRAINT_PREFIX "Constraint::" +#define GEOMETRY_PREFIX "Geometry::" +#define GEOMETRY_WEIGHTED_MAP_PREFIX "GeometryWeightedMap::" +#define SCENE_PREFIX "Scene::" +#define CACHE_PREFIX "Cache::" +#define IMPLEMENTATION_PREFIX "Implementation::" +#define BINDINGTABLE_PREFIX "BindingTable::" +#define BINDINGOPERATOR_PREFIX "BindingOperator::" +#define LAYERED_TEXTURE_PREFIX "LayeredTexture::" +#define PROCEDURAL_TEXTURE_PREFIX "ProceduralTexture::" +#define DOCUMENT_PREFIX "Document::" +#define COLLECTION_PREFIX "Collection::" +#define COLLECTION_EXCLUSIVE_PREFIX "CollectionExclusive::" +#define NODE_ATTRIBUTE_PREFIX "NodeAttribute::" +#define ENVIRONMENT_PREFIX "KFbxEnvironment::" +#define OBJECTMETADATA_PREFIX "ObjectMetaData::" +#define EXPOSURECONTROL_PREFIX "ExposureControl::" + +#define ANIM_STACK_PREFIX "AnimStack::" +#define ANIM_LAYER_PREFIX "AnimLayer::" +#define ANIM_CURVENODE_PREFIX "AnimCurveNode::" +#define ANIM_CURVE_PREFIX "AnimCurve::" +#define ANIM_EVAL_PREFIX "AnimEvaluator::" + +#define SELECTION_SET_PREFIX "SelectionSet::" +#define SELECTION_SET_NODE_PREFIX "SelectionNode::" +#define DISPLAY_LAYER_PREFIX "DisplayLayer::" + +#define SCENEREFERENCE_PREFIX "SceneReference::" + +// Protein 2.0 +#define ADSK_ENVIRONMENT_PREFIX "ADSKEnvironmentDefinition::" +#define ADSK_LIGHT_PREFIX "ADSKLightDefinition::" +#define ADSK_PROCEDURALGEOMETRY_PREFIX "ADSKProceduralGeometryDefinition::" +#define ADSK_SURFACEMATERIAL_PREFIX "ADSKSurfaceMaterialDefinition::" +#define ADSK_TEXTURE_PREFIX "ADSKTextureDefinition::" +#define ADSK_SWATCHSCENE_PREFIX "ADSKSwatchSceneDefinition::" + +#include + +#endif /* _FBXSDK_SCENE_GROUP_NAME_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxlibrary.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxlibrary.h new file mode 100644 index 00000000..3dcce1c8 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxlibrary.h @@ -0,0 +1,330 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxlibrary.h +#ifndef _FBXSDK_SCENE_LIBRARY_H_ +#define _FBXSDK_SCENE_LIBRARY_H_ + +#include + +#include +#include + +#include + +class FbxLocalizationManager; +class FbxCriteria; + +/** This library class represents libraries that store sub-libraries and shading objects. + * Shading objects are objects of class FbxTexture, FbxSurfaceMaterial, and FbxLight. + * \nosubgrouping + */ +class FBXSDK_DLL FbxLibrary : public FbxDocument +{ + FBXSDK_OBJECT_DECLARE(FbxLibrary, FbxDocument); + +public: + //! Returns a pointer to the parent library if one exists. + FbxLibrary* GetParentLibrary(void) const; + + /** Sets whether not this library is a system library. + * \param pSystemLibrary A flag which indicates whether or not this library is a system library. + */ + void SystemLibrary(bool pSystemLibrary); + + //! Returns whether or not this library is a system library. + bool IsSystemLibrary() const; + + /** The prefix must not include the dash and language code, nor + * can it contain the extension. But if you want, it can contain + * a folder or sub-folder, such as: locales/mydocloc. + * This is resolved using the XRef Manager, with priority + * given to the library's ".fbm" folder, if one exists. + * \param pPrefix New prefix to be set. + */ + void LocalizationBaseNamePrefix(const char* pPrefix); + + //! Retrieves the localization prefix. + FbxString LocalizationBaseNamePrefix() const; + + // ======================================================================= + // + // sub-library + // + // ======================================================================= + + /** Adds a sub-library + * \param pSubLibrary The sub-library to be added. + * \return \c True if adding the sub-library is successful, returns \c false if not. + */ + bool AddSubLibrary(FbxLibrary* pSubLibrary); + + /** Removes a sub-library + * \param pSubLibrary The sub-library to be removed. + * \return \c True if the sub-library is removed, \c false if not. + */ + bool RemoveSubLibrary(FbxLibrary* pSubLibrary); + + //! Returns the total number of sub-libraries + int GetSubLibraryCount(void) const; + + /** Returns the sub-library at the specified index. + * \param pIndex The sub-library index. + */ + FbxLibrary* GetSubLibrary(int pIndex) const; + + /** Clones the specified asset. + * \param pToClone The asset to be cloned. + * \param pOptionalDestinationContainer The container for the asset copy. + * \remarks The asset and all its dependents are cloned. + */ + FbxObject* CloneAsset( FbxObject* pToClone, FbxObject* pOptionalDestinationContainer = NULL) const; + + + /** Returns a criteria filter which you can use to filter objects + * when iterating items in the library. Only real 'assets' are returned, + * rather than FBX support objects. This currently includes + * lights, environments, materials and textures (maps). + * This is typically used to IMPORT from a library. + */ + static FbxCriteria GetAssetCriteriaFilter(); + + /** Returns a filter which you should use when you clone / export objects. + * This filters out objects that should remain in the asset library. + * + * Use this to EXPORT from a library (or CLONE from a library). + */ + static FbxCriteria GetAssetDependentsFilter(); + + /** Transfers ownership from the source library to this library for any assets passing through the filter. + * It is assumed that name conflicts and other details have been resolved beforehand. + * + * External asset files required by the assets are copied (not moved). It's + * up to the owner of the source library to clean up the files if the files are + * not on a read-only transport. If this document hasn't been committed yet, + * the assets will not be copied. + * + * Returns true if no filtered assets were skipped. If no assets pass through + * the filter, it returns true, because nothing has been skipped. + * + * This may leave the source library in an invalid state. For example, the source library + * would be in an invalid state if you had decided to transfer texture objects to the library, + * but materials were kept in the source library. + * + * To safeguard against this, the transfer disconnects objects, and thus materials + * are left without textures. + * + * When you transfer an object, all its dependents come with it. If you move + * a material, it takes the associated textures as well. Although if you moved a texture, + * the material would not be transferred with it. + * \param pSrcLibrary The source library to be imported. + * \return \c True if no filtered assets are skipped. + **/ + bool ImportAssets(FbxLibrary* pSrcLibrary); + + /** Transfers ownership from the source library to this library for any assets passing through the filter. + * It is assumed that name conflicts and other details have been resolved beforehand. + * + * External asset files required by the assets are copied (not moved). It's + * up to the owner of the source library to clean up the files if the files are + * not on a read-only transport. If this document hasn't been committed yet, + * the assets will not be copied. + * + * Returns true if no filtered assets were skipped. If no assets pass through + * the filter, it returns true, because nothing has been skipped. + * + * This may leave the source library in an invalid state. For example, the source library + * would be in an invalid state if you had decided to transfer texture objects to the library, + * but materials were kept in the source library. + * + * To safeguard against this, the transfer disconnects objects, and thus materials + * are left without textures. + * + * When you transfer an object, all its dependents come with it. If you move + * a material, it takes the associated textures as well. Although if you moved a texture, + * the material would not be transferred with it. + * \param pSrcLibrary The source library to be imported. + * \param pAssetFilter The asset filter. + * \return \c True if no filtered assets are skipped. + **/ + bool ImportAssets(FbxLibrary* pSrcLibrary, const FbxCriteria& pAssetFilter); + + + /** Returns a new instance of a library member. + * This instantiates the first object found that matches the filter. + * \param pFBX_TYPE The type of member + * \param pFilter A user specified filter + * \param pRecurse A flag that indicates whether to check sub-libraries + * \param pOptContainer Optional container for the cloned asset + * \return A new instance of the member. Note that the new member is not included with this library. + */ + template < class T > T* InstantiateMember( const T* pFBX_TYPE, const FbxObjectFilter& pFilter, bool pRecurse = true, FbxObject* pOptContainer = NULL); + + + // ======================================================================= + // + // Localization + // + // ======================================================================= + /** Returns the localization manager for the library. + */ + + FbxLocalizationManager& GetLocalizationManager() const; + + /** Localization helper function. Calls the FBX SDK manager implementation. + * Sub-classes that manage their own localization can over-ride this function. + * \param pID The identifier for the text to localize. + * \param pDefault The default text. Uses pID if NULL. + * \return The potentially localized text. May return the parameter passed in. + */ + virtual const char* Localize( const char* pID, const char* pDefault = NULL ) const; + + // ======================================================================= + // + // Shading Object + // + // ======================================================================= + + /** Adds a shading object. + * \param pShadingObject The shading object to be added. + */ + bool AddShadingObject(FbxObject* pShadingObject); + + /** Removes a shading object. + * \param pShadingObject The shading object to be removed. + */ + bool RemoveShadingObject(FbxObject* pShadingObject); + + //! Returns the total number of shading objects + int GetShadingObjectCount(void) const; + + /** Returns the shading object at the specified index. + * \param pIndex Shading object index. + * \return The shading object located at the specified index. + */ + FbxObject* GetShadingObject(int pIndex) const; + + /** Returns the number of shading objects according to their implementations. + * \param pCriteria Filtering criteria that identifies what kind of + * implementations to consider. + * \returns The number of shading objects corresponding to the filtering parameters + */ + int GetShadingObjectCount(const FbxImplementationFilter& pCriteria) const; + + /** Returns a handle on the shading object at the specified index that corresponds to the given filtering parameters. + * \param pIndex Shading object index. + * \param pCriteria Filtering criteria that identifies what kind of + * implementations to consider. + * \returns A handle on the shading object at the specified index that corresponds to the given filtering parameters. + */ + FbxObject* GetShadingObject(int pIndex, const FbxImplementationFilter& pCriteria) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void Destruct(bool pRecursive); + + mutable FbxLocalizationManager* mLocalizationManager; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + +template T* FbxLibrary::InstantiateMember(const T* pFBX_TYPE, const FbxObjectFilter& pFilter, bool pRecurse, FbxObject* pOptContainer) +{ + //First check all materials in the library. + for( int i = 0; i < GetMemberCount(); ++i ) + { + T* lObject = GetMember(i); + if( pFilter.Match(lObject) ) + return FbxCast(CloneAsset(lObject,pOptContainer)); + } + + if( pRecurse ) + { + // then check all materials in each sub-library. + for( int i = 0; i < GetMemberCount(); ++i ) + { + FbxLibrary* lLibrary = GetMember(i); + T* lClonedObject = lLibrary->InstantiateMember(pFBX_TYPE, pFilter, pRecurse, pOptContainer); + if( lClonedObject ) + return lClonedObject; + } + } + + return NULL; +} + +class FBXSDK_DLL FbxEventPopulateSystemLibrary : public FbxEvent +{ + FBXSDK_EVENT_DECLARE(FbxEventPopulateSystemLibrary) + +public: + FbxEventPopulateSystemLibrary(FbxLibrary* pLibrary) { mLibrary = pLibrary; } + inline FbxLibrary* GetLibrary() const { return mLibrary; } + +private: + FbxLibrary* mLibrary; +}; + +class FBXSDK_DLL FbxEventUpdateSystemLibrary : public FbxEvent +{ + FBXSDK_EVENT_DECLARE(FbxEventUpdateSystemLibrary) + +public: + FbxEventUpdateSystemLibrary(FbxLibrary *pLibrary) { mLibrary = pLibrary; } + inline FbxLibrary* GetLibrary() const { return mLibrary; } + +private: + FbxLibrary* mLibrary; +}; + +class FBXSDK_DLL FbxEventWriteLocalization : public FbxEvent +{ + FBXSDK_EVENT_DECLARE(FbxEventWriteLocalization) + +public: + FbxEventWriteLocalization(FbxLibrary* pAssetLibrary) { mAssetLibrary = pAssetLibrary; } + inline FbxLibrary* GetLibrary() const { return mAssetLibrary; } + +private: + FbxLibrary* mAssetLibrary; +}; + +class FBXSDK_DLL FbxEventMapAssetFileToAssetObject : public FbxEvent +{ + FBXSDK_EVENT_DECLARE(FbxEventMapAssetFileToAssetObject) + +public: + FbxEventMapAssetFileToAssetObject(const char* pFile) : + mAsset(NULL), + mFilePath( pFile ) + { + } + + inline const char* GetFilePath() const { return mFilePath; } + mutable FbxObject* mAsset; + +private: + FbxString mFilePath; +}; + +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ + +#include + +#endif /* _FBXSDK_SCENE_LIBRARY_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxobjectfilter.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxobjectfilter.h new file mode 100644 index 00000000..dae9265d --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxobjectfilter.h @@ -0,0 +1,77 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxobjectfilter.h +#ifndef _FBXSDK_SCENE_OBJECT_FILTER_H_ +#define _FBXSDK_SCENE_OBJECT_FILTER_H_ + +#include + +#include + +#include + +/** \brief This object represents a filter criteria on an object. + * \nosubgrouping + */ +class FBXSDK_DLL FbxObjectFilter +{ +public: + //! Destructor. + virtual ~FbxObjectFilter() {} + + /** Tells if this filter match the given object + * \param pObjectPtr The given object. + */ + virtual bool Match(const FbxObject * pObjectPtr) const = 0; + + /** Tells if this filter does NOT match the given object + * \param pObjectPtr The given object. + */ + virtual bool NotMatch(const FbxObject * pObjectPtr) const { return !Match(pObjectPtr); }; +}; + +/**\brief This class represents a name filter on an object. + *\nosubgrouping + */ +class FBXSDK_DLL FbxNameFilter : public FbxObjectFilter +{ +public: + /** + * \name Constructor and Destructor + */ + //@{ + /** Constructor + * \param pTargetName The target name. + */ + inline FbxNameFilter( const char* pTargetName ) : mTargetName( pTargetName ) {}; + + //! Destructor. + virtual ~FbxNameFilter() {} + //@} + + /** Tells if this filter match the given object + * \param pObjectPtr The given object. + */ + virtual bool Match(const FbxObject * pObjectPtr) const { return pObjectPtr ? mTargetName == pObjectPtr->GetName() : false; } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + FbxString mTargetName; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_OBJECT_FILTER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxobjectmetadata.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxobjectmetadata.h new file mode 100644 index 00000000..3ff19553 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxobjectmetadata.h @@ -0,0 +1,36 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxobjectmetadata.h +#ifndef _FBXSDK_SCENE_OBJECT_META_DATA_H_ +#define _FBXSDK_SCENE_OBJECT_META_DATA_H_ + +#include + +#include + +#include + +/** This class is used to hold meta-data information on nodes. + * \nosubgrouping + * + * This class does not offer any new functionality over a regular FbxObject; + * all meta-data information should be stored in properties. + * + */ +class FBXSDK_DLL FbxObjectMetaData : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxObjectMetaData, FbxObject); +}; + +#include + +#endif /* _FBXSDK_SCENE_OBJECT_META_DATA_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxobjectscontainer.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxobjectscontainer.h new file mode 100644 index 00000000..cb8f8952 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxobjectscontainer.h @@ -0,0 +1,66 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxobjectscontainer.h +#ifndef _FBXSDK_SCENE_OBJECTS_CONTAINER_H_ +#define _FBXSDK_SCENE_OBJECTS_CONTAINER_H_ + +#include + +#include +#include + +#include + +typedef FbxArray FbxAttributeFilters; + +/* Internal helper class used to traverse scene in the FbxAxisSystem and FbxSystemUnit + */ +class FbxObjectsContainer +{ +public: + enum EDepth + { + eChildOnly, + eChildAndSubChild, + eSubChildWithNoScaleInherit + }; + + FbxObjectsContainer() : mStartNode(NULL) {} + virtual ~FbxObjectsContainer(){ Clear(); } + + // Store all anim curve nodes pointers that need to be converted + FbxArray mFCurvesT; + FbxArray mFCurvesR; + FbxArray mFCurvesS; + + // Store all node that need to be converted + FbxArray mNodes; + +public: + void ExtractSceneObjects(FbxScene* pScene, EDepth pDepth, const FbxAttributeFilters& pFilters); + + void ExtractSceneObjects(FbxNode* pRootNode, EDepth pDepth, const FbxAttributeFilters& pFilters); + + void Clear() { mFCurvesT.Clear(); mFCurvesR.Clear(); mFCurvesS.Clear(); mNodes.Clear(); mStartNode = NULL; } + +protected: + // Extract all node and fcurve from all take for this node. + void ExtractNodesAnimCurveNodes(FbxNode* pNode, EDepth pDepth, const FbxAttributeFilters& pFilters); + void ExtractAnimCurveNodes(FbxNode* pNode); + bool InheritsScale( FbxNode* pNode ) const; + + FbxNode* mStartNode; +}; + +#include + +#endif /* _FBXSDK_SCENE_OBJECTS_CONTAINER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxpose.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxpose.h new file mode 100644 index 00000000..1e22e96f --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxpose.h @@ -0,0 +1,354 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxpose.h +#ifndef _FBXSDK_SCENE_POSE_H_ +#define _FBXSDK_SCENE_POSE_H_ + +#include + +#include +#include +#include + +#include + +class FbxStatus; +class FbxPose; +class FbxNode; +class FbxUserNotification; + +/** This structure contains the description of a named pose. + * FbxPose contains one FbxPoseInfo array to store all of FBX nodes and their transform matrix info. + */ +struct FbxPoseInfo +{ + FbxMatrix mMatrix; //!< Transform matrix of the node. + bool mMatrixIsLocal; //!< If true, the transform matrix above is defined in local coordinates. + FbxNode* mNode; //!< FBX node, which may be skeleton or geometry (skinned) node. +}; + +typedef FbxArray NodeList; +typedef FbxArray PoseList; +typedef FbxArray PoseInfoList; + +/** This class contains the description of a Pose and provide some methods to access Pose info in one FBX scene. + * \nosubgrouping + * The FbxPose object can be setup to hold "Bind Pose" data or "Rest Pose" data. + * + * The Bind Pose holds the transformation (translation, rotation and scaling) + * matrix of all the nodes implied in a link deformation. This includes the geometry + * being deformed, the links deforming the geometry, and recursively all the + * ancestors nodes of the link. The Bind Pose gives you the transformation of the nodes + * at the moment of the binding operation when no deformation occurs. + * + * The Rest Pose is a snapshot of a node transformation. A Rest Pose can be used + * to store the position of every node of a character at a certain point in + * time. This pose can then be used as a reference position for animation tasks, + * like editing walk cycles. + * + * One difference between the two modes is in the validation performed before + * adding an item and the kind of matrix stored. + * + * In "Bind Pose" mode, the matrix is assumed to be defined in the global space, + * while in "Rest Pose" the type of the matrix may be specified by the caller. So + * local system matrices can be used. Actually, because there is one such flag for + * each entry (FbxPoseInfo), it is possible to have mixed types in a FbxPose elements. + * It is therefore the responsibility of the caller to check for the type of the retrieved + * matrix and to do the appropriate conversions if required. + * + * The validation of the data to be added consists of the following steps: + * + * \li If this FbxPose object stores "Bind Poses", then + * add a FbxPoseInfo only if the node is not already + * associated to another "Bind Pose". This check is done + * by visiting ALL the FbxPose objects in the system. + * + * The above test is only performed for the "Bind Pose" type. While + * the next one is always performed, no matter what kind of poses this + * FbxPose object is setup to hold. + * + * \li If a node is already inserted in the FbxPose internal list, + * then the passed matrix MUST be equal to the one already stored. + * If this is not the case, the Add method will return -1, indicating + * that no new FbxPoseInfo has been created. + * + * If the Add method succeeds, it will return the index of the FbxPoseInfo + * structure that as been created and held by the FbxPose object. + * + * To ensure data integrity, the stored information can only be + * accessed using the provided methods (read-only). If an entry needs to be + * modified, the caller has to remove the FbxPoseInfo item by calling Remove(i) + * and then Add a new one. + * + * The internal list is not ordered and the search inside this list is linear + * (from the first element to ... the first match or the end of the list). + * + */ +class FBXSDK_DLL FbxPose : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxPose,FbxObject); + +public: + /** Set the type of pose. + * \param pIsBindPose If true, type will be bind pose, else rest pose. + */ + void SetIsBindPose(bool pIsBindPose); + + /** Pose identifier flag. + * \return \c true if this object holds BindPose data. + */ + bool IsBindPose() const { return mType == 'b'; } + + /** Pose identifier flag. + * \return \c true if this object holds RestPose data. + */ + bool IsRestPose() const { return mType == 'r'; } + + /** Get number of stored items. + * \return The number of items stored. + */ + int GetCount() const { return mPoseInfo.GetCount(); } + + /** Stores the pose transformation for the given node. + * \param pNode pointer to the node for which the pose is stored. + * \param pMatrix Pose transform of the node. + * \param pLocalMatrix Flag to indicate if pMatrix is defined in Local or Global space. + * \param pMultipleBindPose Flag to indicate if multiple bind pose exist. If this is false, all matrix for one node should be same in different bind pose. + * \return -1 if the function failed or the index of the stored item. + */ + int Add(FbxNode* pNode, const FbxMatrix& pMatrix, bool pLocalMatrix = false, bool pMultipleBindPose = true); + + /** Remove the pIndexth item from the Pose object. + * \param pIndex Index of the item to be removed. + */ + void Remove(int pIndex); + + /** Get the node name. + * \param pIndex Index of the queried item. + * \return The node initial and current names. + * \remarks If the index is invalid an empty FbxNameHandler is returned. + */ + FbxNameHandler GetNodeName(int pIndex) const; + + /** Get the node. + * \param pIndex Index of the queried item. + * \return A pointer to the node referenced. + * \remarks If the index is invalid or no pointer to a node is set, returns NULL. + * The returned pointer will become undefined if the FbxPose object is destroyed. + */ + FbxNode* GetNode(int pIndex) const; + + /** Get the transform matrix. + * \param pIndex Index of the queried item. + * \return A reference to the pose matrix. + * \remarks If the index is invalid a reference to an identity matrix is returned. + * The reference will become undefined if the FbxPose object is destroyed. + */ + const FbxMatrix& GetMatrix(int pIndex) const; + + /** Get the type of the matrix. + * \param pIndex Index of the queried item. + * \return \c true if the matrix is defined in the Local coordinate space and false otherwise. + * \remarks If the FbxPose object is configured to hold BindPose data, this method will always return \c false. + */ + bool IsLocalMatrix(int pIndex) const; + + /** + * \name Search Section + */ + //@{ + /** This structure defines the strategy of comparing FBX node name. + * FBX node has an initial name and a current name (refer to FbxNameHandler). The structure defines which name to use when compare two nodes. + */ + enum ENameComponent + { + eInitialNameComponent = 1, //! use initial name when compare two nodes + eCurrentNameComponent = 2, //! use current name when compare two nodes + eAllNameComponents = 3 //! use both initial and current name when compare two nodes, it's true if one or both matched + }; + + /** Look in the FbxPose object for the given node name. + * \param pNodeName Name of the node we are looking for. + * \param pCompareWhat Bitwise or of the following flags: INTIALNAME_COMPONENT, eCurrentNameComponent + * \return -1 if the node is not in the list. Otherwise, the index of the corresponding FbxPoseInfo element. + */ + int Find(const FbxNameHandler& pNodeName, char pCompareWhat = eAllNameComponents) const; + + /** Look in the FbxPose object for the given node. + * \param pNode the node we are looking for. + * \return -1 if the node is not in the list. Otherwise, the index of the corresponding FbxPoseInfo element. + */ + int Find(const FbxNode* pNode) const; + //@} + + /** + * \name Utility Section + */ + //@{ + /** Get the list of Poses objects that contain the node with name pNodeName. + * This method will look in all the poses of all the scenes. + * \param pManager The manager owning the poses and scenes. + * \param pNode The node being explored. + * \param pPoseList List of BindPoses/RestPoses that have the node. + * \param pIndex List of indices of the nodes in the corresponding poses lists. + * \return \c true if the node belongs to at least one Pose (either a BindPose or a RestPose). + * \remarks The pPoseList and pIndex are filled by this method. + * The elements of the returned list must not be deleted since they still belong to the scene. + */ + static bool GetPosesContaining(FbxManager& pManager, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); + + /** Get the list of Poses objects that contain the node with name pNodeName. + * \param pScene Scene owning the poses. + * \param pNode The node being explored. + * \param pPoseList List of BindPoses/RestPoses that have the node. + * \param pIndex List of indices of the nodes in the corresponding poses lists. + * \return \c true if the node belongs to at least one Pose (either a BindPose or a RestPose). + * \remarks The pPoseList and pIndex are filled by this method. + * The elements of the returned list must not be deleted since they still belong to the scene. + */ + static bool GetPosesContaining(FbxScene* pScene, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); + + /** Get the list of BindPose objects that contain the node with name pNodeName. + * This method will look in all the bind poses of all the scenes. + * \param pManager The manager owning the poses. + * \param pNode The node being explored. + * \param pPoseList List of BindPoses that have the node. + * \param pIndex List of indices of the nodes in the corresponding bind poses lists. + * \return \c true if the node belongs to at least one BindPose. + * \remarks The pPoseList and pIndex are filled by this method. + * The elements of the returned list must not be deleted since they still belong to the scene. + */ + static bool GetBindPoseContaining(FbxManager& pManager, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); + + /** Get the list of BindPose objects that contain the node with name pNodeName. + * \param pScene The scene owning the poses. + * \param pNode The node being explored. + * \param pPoseList List of BindPoses that have the node. + * \param pIndex List of indices of the nodes in the corresponding bind poses lists. + * \return \c true if the node belongs to at least one BindPose. + * \remarks The pPoseList and pIndex are filled by this method. + * The elements of the returned list must not be deleted since they still belong to the scene. + */ + static bool GetBindPoseContaining(FbxScene* pScene, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); + + /** Get the list of RestPose objects that contain the node with name pNodeName. + * This method will look in all the bind poses of all the scenes. + * \param pManager The manager owning the poses. + * \param pNode The node being explored. + * \param pPoseList List of RestPoses that have the node. + * \param pIndex List of indices of the nodes in the corresponding rest poses lists. + * \return \c true if the node belongs to at least one RestPose. + * \remarks The pPoseList and pIndex are filled by this method. + * The elements of the returned list must not be deleted since they still belong to the scene. + */ + static bool GetRestPoseContaining(FbxManager& pManager, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); + + /** Get the list of RestPose objects that contain the node with name pNodeName. + * \param pScene The scene owning the poses. + * \param pNode The node being explored. + * \param pPoseList List of RestPoses that have the node. + * \param pIndex List of indices of the nodes in the corresponding rest poses lists. + * \return \c true if the node belongs to at least one RestPose. + * \remarks The pPoseList and pIndex are filled by this method. + * The elements of the returned list must not be deleted since they still belong to the scene. + */ + static bool GetRestPoseContaining(FbxScene* pScene, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); + + /** Check this BindPose and report an error if all the conditions to a valid bind pose are not + * met. The conditions are: + * + * \li a) We are a BindPose. + * \li b) For every node in the bind pose, all their parent node are part of the bind pose. + * \li c) All the deforming nodes are part of the bind pose. + * \li d) All the parents of the deforming nodes are part of the bind pose. + * \li e) Each deformer relative matrix correspond to the deformer Inv(bindMatrix) * deformed Geometry bindMatrix. + * + * \param pRoot This node is used as the stop point when visiting the parents (cannot be NULL). + * \param pMatrixCmpTolerance Tolerance value when comparing the matrices. + * \param pStatus The FbxStatus object to hold error codes. + * \return true if all the above conditions are met and false otherwise. + * \remarks + * a) If pRoot node is not defined in the BindPose it must not have a Geometry or Skeleton attribute and its + * transform must be an Identity. + * \remarks + * b) If the returned value is false, querying for the error will return the reason of the failure. + * As soon as one of the above conditions is not met, this method return ignoring any subsequent errors. + * Run the IsBindPoseVerbose if more details are needed. + */ + bool IsValidBindPose(FbxNode* pRoot, double pMatrixCmpTolerance=0.0001, FbxStatus* pStatus = NULL); + + /** Same as IsValidBindPose() but slower because it will not stop as soon as a failure occurs. Instead, + * keeps running to accumulate the faulty nodes (stored in the appropriate array). It is then up to the + * caller to fill the UserNotification if desired. + * + * \param pRoot This node is used as the stop point when visiting the parents (cannot be NULL). + * \param pMissingAncestors Each ancestor missing from the BindPose is added to this list. + * \param pMissingDeformers Each deformer missing from the BindPose is added to this list. + * \param pMissingDeformersAncestors Each deformer ancestors missing from the BindPose is added to this list. + * \param pWrongMatrices Nodes that yield to a wrong matrix comparisons are added to this list. + * \param pMatrixCmpTolerance Tolerance value when comparing the matrices. + * \param pStatus The FbxStatus object to hold error codes. + * \remarks If pRoot node is not defined in the BindPose it must not have a Geometry or Skeleton attribute and its + * transform must be an Identity. + */ + bool IsValidBindPoseVerbose(FbxNode* pRoot, NodeList& pMissingAncestors, NodeList& pMissingDeformers, NodeList& pMissingDeformersAncestors, NodeList& pWrongMatrices, double pMatrixCmpTolerance=0.0001, FbxStatus* pStatus = NULL); + + /** Same as IsValidBindPose() but slower because it will not stop as soon as a failure occurs. Instead, + * keeps running to accumulate the faulty nodes and send them directly to the UserNotification. + * + * \param pRoot This node is used as the stop point when visiting the parents (cannot be NULL). + * \param pUserNotification Pointer to the user notification where the messages will be accumulated. + * \param pMatrixCmpTolerance Tolerance value when comparing the matrices. + * \param pStatus The FbxStatus object to hold error codes. + * \remarks If the pUserNotification parameter is NULL, this method will call IsValidBindPose(). + * \remarks If pRoot node is not defined in the BindPose it must not have a Geometry or Skeleton attribute and its + * transform must be an Identity. + */ + bool IsValidBindPoseVerbose(FbxNode* pRoot, FbxUserNotification* pUserNotification, double pMatrixCmpTolerance=0.0001, FbxStatus* pStatus = NULL); + + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void Destruct(bool pRecursive); + virtual void ConstructProperties(bool pForceSet); + + virtual FbxObject& Copy(const FbxObject& pObject); + virtual const char* GetTypeName() const; + + //Returns false if pNode is already inserted in the list and the current matrix is different from the stored one. Also, if this pose is a rest pose, check if + //pNode belongs to other BindPoses (accessed through the scene pointer). pPos will contains the index of the FbxPoseInfo if the parameters are already stored in this object. + bool ValidateParams(const FbxNode* pNode, const FbxMatrix& pMatrix, int& pPos); + + bool LocalValidateParams(const FbxNode* pNode, const FbxMatrix& pMatrix, int& pPos); + static bool GetSpecificPoseContaining(int poseType, FbxScene* pScene, FbxNode* pNode, PoseList& pPoseList, FbxArray& pIndex); + +private: + FbxPoseInfo* GetItem(int pIndex) const; + void UpdatePosInfoList(); + bool IsValidBindPoseCommon(FbxNode* pRoot, NodeList* pMissingAncestors, NodeList* pMissingDeformers, NodeList* pMissingDeformersAncestors, NodeList* pWrongMatrices, FbxStatus* pStatus, double pMatrixCmpTolerance=0.0001); + + char mType; + PoseInfoList mPoseInfo; + bool mPoseInfoIsDirty; + FbxPropertyT Nodes; + +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_POSE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxreference.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxreference.h new file mode 100644 index 00000000..b7a0eea9 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxreference.h @@ -0,0 +1,73 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxreference.h +#ifndef _FBXSDK_SCENE_REFERENCE_H_ +#define _FBXSDK_SCENE_REFERENCE_H_ + +#include + +#include + +#include + +/** Contains information about a referenced file. +* \nosubgrouping +*/ +class FBXSDK_DLL FbxSceneReference : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxSceneReference, FbxObject); + +public: + /// \name Basic properties + //@{ + //! Path to the referenced file. + FbxPropertyT< FbxString > ReferenceFilePath; + //! Referenced file's namespace. + FbxPropertyT< FbxString > ReferenceNameSpace; + //! Referenced file's node name. + FbxPropertyT< FbxString > ReferenceNodeName; + //! Referenced file's node depth. + FbxPropertyT< FbxInt> ReferenceDepth; + //! \c True if referenced file is loaded. + FbxPropertyT< FbxBool > IsLoaded; + //! \c True if referenced file is locked. + FbxPropertyT< FbxBool > IsLocked; + //@} + + /// \name Proxy related properties. + //@{ + //! \c True if referenced file is the original proxy. + FbxPropertyT< FbxBool > IsOriginalProxy; + + //! \c True if referenced file is active. + FbxPropertyT< FbxBool > IsActiveProxy; + + //! The name of proxy manager where the referenced file's proxy can be found. + FbxPropertyT< FbxString > ProxyManagerName; + /** Referenced file's proxy tag. + * \remarks Proxy tags are unique names assigned to proxy references to more easily manage those references in Maya. + */ + FbxPropertyT< FbxString > ProxyTag; + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void ConstructProperties(bool pForceSet); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_REFERENCE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxscene.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxscene.h new file mode 100644 index 00000000..585160f8 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxscene.h @@ -0,0 +1,491 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxscene.h +#ifndef _FBXSDK_SCENE_H_ +#define _FBXSDK_SCENE_H_ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +class FbxGeometry; +class FbxTexture; +class FbxSurfaceMaterial; +class FbxCharacter; +class FbxControlSetPlug; +class FbxGenericNode; +class FbxPose; +class FbxCharacterPose; +class FbxVideo; +class FbxGlobalLightSettings; +class FbxGlobalCameraSettings; + +/** This class contains the description of a 3D scene. It contains the nodes (including the root node) (FbxNode), + * materials, textures, videos, gobos, + * poses, characters, character poses, control set plugs, + * generic nodes, + * scene information, global settings, + * and a global evaluator. + * The nodes are structured in a tree under the scene's root node. + * + * When an object is created using the FBX SDK, a scene is usually passed as argument to the + * object creation function to specify that the object belongs to this scene. + * At this point, a connection is made with the object as source and the scene as destination. + * + * All objects in the scene can be queried by connection index. In addition, + * generic nodes, materials, and textures can also be queried by name. In this latter case, the + * first object with the queried name will be returned. + * + * The global evaluator (FbxAnimEvaluator) is used to compute animation values + * for animated scenes. + * \nosubgrouping + */ +class FBXSDK_DLL FbxScene : public FbxDocument +{ + FBXSDK_OBJECT_DECLARE(FbxScene, FbxDocument); + +public: + //! \name Scene Management + //@{ + //! Clear the scene content by deleting the node tree below the root node and restoring default settings. + void Clear(); + + /** Get the root node of the scene. + * \return Pointer to the root node. + * \remarks This node is not saved. Do not use it to apply a global transformation to the node hierarchy. If a global transformation must be applied, insert a new node below this one. */ + FbxNode* GetRootNode() const; + //@} + + //! \name Texture Material and Video Access + //@{ + /** Clear, then fill, a texture array with all existing textures included in the scene. + * \param pTextureArray An array of texture pointers. */ + void FillTextureArray(FbxArray& pTextureArray); + + /** Clear, then fill, a material array with all existing materials included in the scene. + * \param pMaterialArray An array of material pointers. */ + void FillMaterialArray(FbxArray& pMaterialArray); + //@} + + //! \name Generic Node Access + //@{ + /** Get number of generic nodes in the scene. + * \return Number of Generic Nodes in this scene. */ + int GetGenericNodeCount() const; + + /** Get generic node at given index. + * \param pIndex Position in the list of the generic nodes. + * \return Pointer to the generic node or \c NULL if the index is out of bounds. + */ + FbxGenericNode* GetGenericNode(int pIndex); + + /** Access a generic node from its name. + * \param pName Name of the generic node. + * \return found generic node + */ + FbxGenericNode* GetGenericNode(char* pName); + + /** Add a generic node to this scene. + * \param pGenericNode Pointer to the generic node to be added. + * \return If the passed parameter is \c NULL, this method will return \c false, otherwise \c true. */ + bool AddGenericNode(FbxGenericNode* pGenericNode); + + /** Remove the generic node from this scene. + * \param pGenericNode Pointer to the generic node to be removed. + * \return If the passed parameter is \c NULL, this method will return \c false, otherwise \c true. + * \remarks The pointed object is not referenced by the scene anymore but is not deleted. */ + bool RemoveGenericNode(FbxGenericNode* pGenericNode); + //@} + + + //! \name Character Management + //@{ + /** Get number of characters. + * \return Number of characters in this scene. */ + int GetCharacterCount() const; + + /** Get character at given index. + * \param pIndex Position in the list of the characters. + * \return Pointer to the character or \c NULL if index is out of bounds. */ + FbxCharacter* GetCharacter(int pIndex); + + /** Create a new character. + * \param pName Name given to character. + * \return Index of the created character. */ + int CreateCharacter(const char* pName); + + /** Destroy character. + * \param pIndex Specify which character to destroy. */ + void DestroyCharacter(int pIndex); + //@} + + //! \name ControlSetPlug Management + //@{ + /** Get number of ControlSetPlugs. + * \return Number of ControlSet plugs in this scene. */ + int GetControlSetPlugCount() const; + + /** Get ControlSetPlug at given index. + * \param pIndex Position in the list of the ControlSetPlug + * \return Pointer to ControlSetPlug or \c NULL if index is out of bounds. */ + FbxControlSetPlug* GetControlSetPlug(int pIndex); + + /** Create a new ControlSetPlug. + * \param pName Name given to ControlSetPlug. + * \return Index of created ControlSetPlug. */ + int CreateControlSetPlug(char* pName); + + /** Destroy ControlSetPlug. + * \param pIndex Specify which ControlSetPlug to destroy. */ + void DestroyControlSetPlug(int pIndex); + //@} + + //! \name Character Pose Management + //@{ + /** Get number of character poses. + * \return Number of character poses in this scene. + * \remarks Character Poses and Poses are two distinct entities having their own lists. */ + int GetCharacterPoseCount() const; + + /** Get character pose at given index. + * \param pIndex Position in the list of character poses. + * \return Pointer to the character pose or \c NULL if index is out of bounds. */ + FbxCharacterPose* GetCharacterPose(int pIndex); + + /** Create a new character pose. + * \param pName Name given to character pose. + * \return Index of created character pose. */ + int CreateCharacterPose(char* pName); + + /** Destroy character pose. + * \param pIndex Specify which character pose to destroy. */ + void DestroyCharacterPose(int pIndex); + //@} + + //! \name Pose Management + //@{ + /** Get number of poses. + * \return Number of poses in the scene. + * \remarks Poses and Character Poses are two distinct entities having their own lists. */ + int GetPoseCount() const; + + /** Get pose at given index. + * \param pIndex Position in the list of poses. + * \return Pointer to the pose or \c NULL if index is out of bounds. */ + FbxPose* GetPose(int pIndex); + + /** Add a pose to this scene. + * \param pPose The pose (for example: bind pose, rest pose) to be added to the scene. + * \return If the pose is correctly added to the scene, return \c true. Otherwise, if the pose is already in the scene, return \c false. */ + bool AddPose(FbxPose* pPose); + + /** Remove the specified pose from the scene. + * \param pPose The pose (for example: bind pose, rest pose) to be removed from the scene. + * \return If the pose was successfully removed from the scene, return \c true. Otherwise, if the pose could not be found return \c false. */ + bool RemovePose(FbxPose* pPose); + + /** Remove the pose at the given index from the scene. + * \param pIndex Index of the pose to be removed. + * \return If the pose was successfully removed from the scene, return \c true. Otherwise, if the pose could not be found return \c false. */ + bool RemovePose(int pIndex); + //@} + + //! \name Scene information + //@{ + /** Get the scene information. + * \return Pointer to the scene information object. */ + FbxDocumentInfo* GetSceneInfo() { return GetDocumentInfo(); } + + /** Set the scene information. + * \param pSceneInfo Pointer to the scene information object. */ + void SetSceneInfo(FbxDocumentInfo* pSceneInfo) { SetDocumentInfo(pSceneInfo); } + //@} + + //! \name Global Settings + //@{ + /** Access global settings. + * \return Reference to the Global Settings. */ + FbxGlobalSettings& GetGlobalSettings(); + + /** Const access to global settings. + * \return Const reference to the Global Settings. */ + const FbxGlobalSettings& GetGlobalSettings() const; + //@} + + /** \name Scene Animation Evaluation + * The scene's animation evaluator is used to compute animation values for animated scenes. A typical + * usage would be to compute the global transform matrix of a node \c lNode at a given time \c lTime. + * \code + FbxAMatrix& lGlobalMatrix = lNode->GetScene()->GetAnimationEvaluator()->GetNodeGlobalTransform(lNode, lTime); + + or the exact equivalent: + + FbxAMatrix& lGlobalMatrix = lNode->EvaluateGlobalTransform(lTime); + * \endcode + * + * The user can create one or more evaluators in the scene. The default evaluator is set using SetEvaluator. When + * GetEvaluator is called, if the scene has no evaluator, an evaluator is created with default values. */ + //@{ + /** Set the current animation stack context used by the animation evaluator. + * \param pAnimStack The animation stack to set as current. + * \remark Changing the current animation stack will also cause the animation evaluator to reset its state. */ + void SetCurrentAnimationStack(FbxAnimStack* pAnimStack); + + /** Retrieve the current animation stack. + * \return the current animation stack. If none were set previously, the default one will be returned if it exists. */ + FbxAnimStack* GetCurrentAnimationStack(); + + /** Set the global evaluator used by this scene evaluation engine. + * \param pEvaluator The evaluator to be used for evaluation processing of this scene. */ + void SetAnimationEvaluator(FbxAnimEvaluator* pEvaluator); + + /** Get the global evaluator used by this scene evaluation engine. + * If no evaluator were previously set, this function will return either the first evaluator found attached to this scene, or a new default evaluator. + * \return The evaluator to be used for evaluation processing of this scene. */ + FbxAnimEvaluator* GetAnimationEvaluator(); + //@} + + /** Clear then fill a pose array with all existing pose included in the scene. + * \param pPoseArray An array of pose pointers. */ + void FillPoseArray(FbxArray& pPoseArray); + + //! \name Material Access + //@{ + /** Get number of materials. + * \return Number of materials in this scene. */ + int GetMaterialCount() const; + + /** Get the material at the given index. + * \param pIndex Position in the list of materials. + * \return Pointer to the material or \c NULL if the index is out of bounds. + * \remarks pIndex must be between 0 and GetMaterialCount(). */ + FbxSurfaceMaterial* GetMaterial(int pIndex); + + /** Get the material by its name. + * \param pName Name of the material. + * \return Pointer to the material or \c NULL if not found. */ + FbxSurfaceMaterial* GetMaterial(char* pName); + + /** Add the material to this scene. + * \param pMaterial Pointer to the material to be added. + * \return true on successful addition. */ + bool AddMaterial(FbxSurfaceMaterial* pMaterial); + + /** Remove the material from this scene. + * \param pMaterial Pointer to the material to be removed. + * \return true on successful removal. */ + bool RemoveMaterial(FbxSurfaceMaterial* pMaterial); + //@} + + //! \name Texture Access + //@{ + /** Get number of textures (type FbxTexture). + * \return Number of textures in this scene. Includes types FbxFileTexture, FbxLayeredTexture and FbxProceduralTexture. + * \remarks To get the number of textures of a specific type, use GetSrcCount(). For example: + * \code + * int lNbFileTextures = lScene->GetSrcObjectCount(); + * int lNbLayeredTextures = lScene->GetSrcObjectCount(); + * int lNbProceduralTextures = lScene->GetSrcObjectCount(); + * \endcode */ + int GetTextureCount() const; + + /** Get the texture at the given index. pIndex must be between 0 and GetTextureCount(). + * \param pIndex Position in the list of textures. + * \return Pointer to the texture or \c NULL if the index is out of bounds. + * \remarks To get the texture of a specific texture type, use GetSrcObject(). For example: + * \code + * FbxFileTexture* lFileTexture = lScene->GetSrcObject(i); + * FbxLayeredTexture* lLayeredTexture = lScene->GetSrcObject(i); + * FbxProceduralTexture* lProceduralTexture = lScene->GetSrcObject(i); + * \endcode */ + FbxTexture* GetTexture(int pIndex); + + /** Get the texture by its name. + * \param pName Name of the texture. + * \return Pointer to the texture or \c NULL if not found. */ + FbxTexture* GetTexture(char* pName); + + /** Add the texture to this scene. + * \param pTexture Pointer to the texture to be added. + * \return \c true on successful addition. */ + bool AddTexture(FbxTexture* pTexture); + + /** Remove the texture from this scene. + * \param pTexture Pointer to the texture to be removed. + * \return \c true on successful removal. */ + bool RemoveTexture(FbxTexture* pTexture); + //@} + + //! \name Node Access + //@{ + /** Get number of nodes. + * \return Number of nodes in this scene. */ + int GetNodeCount() const; + + /** Get the node at the given index. + * \param pIndex Position in the list of nodes. + * \return Pointer to the node or \c NULL if the index is out of bounds. + * \remarks pIndex must be between 0 and GetNodeCount(). */ + FbxNode* GetNode(int pIndex); + + /** Add the node to this scene. + * \param pNode Pointer to the node to be added. + * \return true on successful addition. */ + bool AddNode(FbxNode* pNode); + + /** Remove the node from this scene. + * \param pNode Pointer to the node to be removed. + * \return true on successful removal. */ + bool RemoveNode(FbxNode* pNode); + + /** Helper method for determining the number of nodes that have curves on surface attributes in the scene. Since the curve-on-surface + * nodes are connected to nurbs geometry and not any FbxNode in the scene, they won't normally be picked up in a graph traversal. + * \return The number of curve-on-surface nodes in the scene */ + int GetCurveOnSurfaceCount(); + + /** Get the first node with this name. + * \param pName Name of the node. + * \return Pointer to the node, or \c NULL if node is not found. */ + FbxNode* FindNodeByName(const FbxString& pName); + //@} + + //! \name Geometry Access + //@{ + /** Get number of geometries. + * \return Number of geometries in this scene. */ + int GetGeometryCount() const; + + /** Get the geometry at the given index. + * \param pIndex Position in the list of geometries. + * \return Pointer to the geometry or \c NULL if the index is out of bounds. + * \remarks pIndex must be between 0 and GetGeometryCount(). */ + FbxGeometry* GetGeometry(int pIndex); + + /** Add the geometry to this scene. + * \param pGeometry Pointer to the geometry to be added. + * \return true on successful addition. */ + bool AddGeometry(FbxGeometry* pGeometry); + + /** Remove the geometry from this scene. + * \param pGeometry Pointer to the geometry to be removed. + * \return true on successful removal. */ + bool RemoveGeometry(FbxGeometry* pGeometry); + //@} + + //! \name Video Access + //@{ + /** Get number of videos. + * \return Number of videos in this scene. */ + int GetVideoCount() const; + + /** Get the video at the given index. + * \param pIndex Position in the list of videos. + * \return Pointer to the video or \c NULL if the index is out of bounds. + * \remarks pIndex must be between 0 and GetVideoCount(). */ + FbxVideo* GetVideo(int pIndex); + + /** Add the video to this scene. + * \param pVideo Pointer to the video to be added. + * \return true on successful addition. */ + bool AddVideo(FbxVideo* pVideo); + + /** Remove the video from this scene. + * \param pVideo Pointer to the video to be removed. + * \return true on successful removal. */ + bool RemoveVideo(FbxVideo* pVideo); + //@} + + /** \name Utilities */ + //@{ + /** Synchronize all the Show properties of node instances. + * Walks all the node attributes defined in the scene and synchronize the Show property of all the nodes that reference the node attribute so that they all contain the same value. + * This method should be called after the FBX scene is completely created, typically right after the calls to the FbxImporter::Import() or just before the calls to the FbxExporter::Export(). + * \remarks Applications only need to call this method if their interpretation of the Show property implies that setting the Show state on one instance affect all of them. + * \see FbxNode::Visibility property, FbxNode::Show property */ + void SyncShowPropertyForInstance(); + + /** Compute the bounding box and its center for all (or selected) nodes. + * \param pBBoxMin The minimum value of the bounding box upon successful return. + * \param pBBoxMax The maximum value of the bounding box upon successful return. + * \param pBBoxCenter The center value of the bounding box upon successful return. + * \param pSelected If \c true, only take into account selected geometry, otherwise take all geometry into account. + * \param pTime If different from FBXSDK_TIME_INFINITE, time used to compute the bounding box for deformed geometry. + * \return \c true if successful, otherwise \c false. + * \remark If geometry have been unloaded from memory, their bounding box cannot be calculated and will use any value set previously. */ + bool ComputeBoundingBoxMinMaxCenter(FbxVector4& pBBoxMin, FbxVector4& pBBoxMax, FbxVector4& pBBoxCenter, bool pSelected=false, const FbxTime& pTime=FBXSDK_TIME_INFINITE); + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + void ConvertNurbsSurfaceToNurbs(); + void ConvertMeshNormals(); + void ConvertNurbsCurvesToNulls(); + void ConnectTextures(); + void BuildTextureLayersDirectArray(); + void FixInheritType(FbxNode *pNode); + + void UpdateScaleCompensate(FbxNode *pNode, FbxIOSettings& pIOS); + + FbxClassId ConvertAttributeTypeToClassID(FbxNodeAttribute::EType pAttributeType); + + // These data structures are only used for legacy FBX files (version 6.x and earlier). The + // validity of their content is not guaranteed with the most recent versions. + FbxGlobalLightSettings& GlobalLightSettings() { return *mGlobalLightSettings; } + FbxGlobalCameraSettings& GlobalCameraSettings() { return *mGlobalCameraSettings; } + + // Clone this scene object (and everything else it contains if clone type is eDeepClone) + virtual FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const; + virtual FbxObject& Copy(const FbxObject& pObject); + + void ConnectMaterials(); + + void BuildMaterialLayersDirectArray(); + void ReindexMaterialConnections(); // called to make sure that eIndex is remapped to eIndexToDirect + + FbxMultiMap* AddTakeTimeWarpSet(char *pTakeName); + FbxMultiMap* GetTakeTimeWarpSet(char *pTakeName); + + // This function will destroy the scene (and all the objects directly connected to it) without sending + // the Connect notifications nor trying to disconnect the objects first. This is a bypass of the intended + // workflow and should be used with care. + void ForceKill(); + +private: + virtual void Construct(const FbxObject* pFrom); + virtual void Destruct(bool pRecursive); + + void ConnectTextureLayerElement(FbxLayerContainer* pLayerContainer, FbxLayerElement::EType pLayerType, FbxNode* pParentNode); + void BuildTextureLayersDirectArrayForLayerType(FbxLayerContainer* pLayerContainer, FbxLayerElement::EType pLayerType); + + FbxNode* mRootNode; + FbxGlobalLightSettings* mGlobalLightSettings; + FbxGlobalCameraSettings* mGlobalCameraSettings; + FbxAnimEvaluator* mAnimationEvaluator; + FbxAnimStack* mCurrentAnimationStack; + FbxCharPtrSet mTakeTimeWarpSet; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxselectionnode.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxselectionnode.h new file mode 100644 index 00000000..2d7236d0 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxselectionnode.h @@ -0,0 +1,99 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxselectionnode.h +#ifndef _FBXSDK_SCENE_SELECTION_NODE_H_ +#define _FBXSDK_SCENE_SELECTION_NODE_H_ + +#include + +#include + +#include + +/** FbxSelectionNode is an auxiliary class for Selection Set. +* \nosubgrouping +* Used to group objects with their components (e.g. vertex, edge, and face), when adding it to a selection set (FbxSelectionSet). +* \see FbxSelectionSet +*/ +class FBXSDK_DLL FbxSelectionNode : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxSelectionNode, FbxObject); + +public: + /** \enum ESelectType SelectionNode type identifier. + * - \e eVertexLevel Vertex level selection. + * - \e eEdgeLevel Edge level selection. + * - \e eFaceLevel Face level selection. + * - \e eObjectLevel Object level selection. + * - \e eSelectTypeCount Number of Select Types. + */ + enum ESelectType + { + eVertexLevel, + eEdgeLevel, + eFaceLevel, + eObjectLevel, + eSelectTypeCount + }; + + /** Set an object whose components or itself is contained in the SelectionNode. + * \param pObject The object whose components or itself is contained in the SelectionNode. + * \return \c true if the object is set successfully. \c false otherwise. + * \remarks It is possible a SDK user will try to set multiple objects to one SelectionNode, but only the last one will be kept. + */ + bool SetSelectionObject(FbxObject* pObject); + + /** Get the object whose components or itself or both are contained in the SelectionNode. + * \return The object whose components or itself or both are contained in the SelectionNode. + */ + FbxObject* GetSelectionObject() const; + + /** To detect if the SelectionNode is valid. + * \return \c true if this is a valid SelectionNode. \c false otherwise. + * \remarks SelectionNode is valid if selection object is set. + * SelectionNode is not valid if no selection object is set. + */ + bool IsValid() const; + + /** \c true means the object itself is also in the selection set; + * \c false means only the object's components are in the selection set, the object is not. + */ + bool mIsTheNodeInSet; + + /** Index array for selected vertices. + */ + FbxArray mVertexIndexArray; + + /** Index array for selected edges. + */ + FbxArray mEdgeIndexArray; + + /** Index array for selected faces. + */ + FbxArray mPolygonIndexArray; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxArray*> mSubTypeSelectArray; + static const char* SELECT_TYPE_NAMES[(int)eSelectTypeCount]; + +protected: + virtual void Construct(const FbxObject* pFrom); + bool ConnectNotify (FbxConnectEvent const &pEvent); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_SELECTION_NODE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxselectionset.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxselectionset.h new file mode 100644 index 00000000..822ef734 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxselectionset.h @@ -0,0 +1,87 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxselectionset.h +#ifndef _FBXSDK_SCENE_SELECTION_SET_H_ +#define _FBXSDK_SCENE_SELECTION_SET_H_ + +#include + +#include +#include + +#include + +/** FBX SDK selection set class. +* \nosubgrouping +* Represents a set of selected objects (FbxObject) and components. This is a non-exclusive (multiple membership) collection. +* Objects (FbxObject) can be added to a FbxSelectionSet directly, but to add components (vertexes, edges, or faces) +* you create a selection node (FbxSelectionNode) to group the object and its components together as a single item to be added. +* \see FbxSelectionNode +*/ +class FBXSDK_DLL FbxSelectionSet : public FbxCollection +{ + FBXSDK_OBJECT_DECLARE(FbxSelectionSet, FbxCollection); + +public: + /** This property stores annotation of the selection set. + * Default value is "". + */ + FbxPropertyT SelectionSetAnnotation; + + /** + * \name Utility functions + */ + //@{ + + /** Get the selected faces of a specified object. + * \param pObj The specified object. + * \param pPolygonIndexArray The array to take the indices of the selected faces. + * \remarks The indices of selected faces will be put in pPolygonIndexArray. + */ + void GetFaceSelection( FbxObject* pObj,FbxArray& pPolygonIndexArray ) const; + + /** Get the selected edges of a specified object. + * \param pObj The specified object. + * \param pEdgeIndexArray The array to take the indices of the selected edges. + * \remarks The indices of selected face will be put in pEdgeIndexArray. + */ + void GetEdgeSelection( FbxObject* pObj,FbxArray& pEdgeIndexArray ) const; + + /** Get the selected vertices of a specified object. + * \param pObj The specified object. + * \param pVertexIndexArray The array to take the indices of the selected vertices. + * \remarks The indices of selected face will be put in pVertexIndexArray. + */ + void GetVertexSelection( FbxObject* pObj,FbxArray& pVertexIndexArray ) const; + + /** Get list of two types of member in the selection set: SelectionNodes and Directly contained objects. + * \param pSelectionNodeList The array to take selection nodes of the selection set. + * \param pDirectObjectList The array to take directly contained objects of the selection set. + * \remarks There might be two types members for a selection set: selection node and directly contained object. + * They will be listed in pSelectionNodeList and pDirectObjectList separately. + */ + void GetSelectionNodesAndDirectObjects(FbxArray &pSelectionNodeList, FbxArray &pDirectObjectList) const; + + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void ConstructProperties(bool pForceSet); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_SELECTION_SET_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxtakeinfo.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxtakeinfo.h new file mode 100644 index 00000000..b1faad36 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxtakeinfo.h @@ -0,0 +1,141 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxtakeinfo.h +#ifndef _FBXSDK_SCENE_TAKEINFO_H_ +#define _FBXSDK_SCENE_TAKEINFO_H_ + +#include + +#include +#include +#include + +#include + +class FbxThumbnail; + +/** This FbxTakeLayerInfo structure is used to identify a layer by name and id number. + */ +struct FbxTakeLayerInfo +{ + FbxString mName; + int mId; +}; + +/** This class contains take information from an imported file + * or exported to an output file. + * + * A "take" is in fact a group of animation data grouped by name, so + * the FBX file format can support many "animation takes" in an FBX file to mimic + * how a movie is produced by making many takes of the same scene. + * + * The most used data is the "take name", other data are rarely used. + * Example of use: to get the list of all + * animation take names of FBX file without loading all the scene content. + * When a FbxImporter is initialized, the take information can be read and can be available + * before the long Import() step, this way, we can get the take info data very fast + * since we don't need to load all the animation scene data. + * \code + * // Ex: to get all take names in a FBX file + * for(int lAnimStackCount=0; lAnimStackCount < lImporter->GetAnimStackCount(); lAnimStackCount++) + * { + * FbxTakeInfo* lTakeInfo = lImporter->GetTakeInfo(lAnimStackCount); + * FbxString lTakeName = lTakeInfo->mName; + * } + * \endcode + */ +class FBXSDK_DLL FbxTakeInfo +{ +public: + + /** Default constructor. + */ + FbxTakeInfo(); + + /** Destructor. + */ + virtual ~FbxTakeInfo(); + + /** Copy Constructor. + * \param pTakeInfo The take information to be copied. + */ + FbxTakeInfo(const FbxTakeInfo& pTakeInfo); + + /** Assignment operator. + * \param pTakeInfo The take information to be assigned. . + */ + FbxTakeInfo& operator=(const FbxTakeInfo& pTakeInfo); + + //! Take name. + FbxString mName; + + /** The take name once it is imported in a scene. + * You can modify it if it must be different from the take name in the imported file. + * \remarks This field is only used when importing a scene. + */ + FbxString mImportName; + + //! Take description. + FbxString mDescription; + + /** Import/export flag. + * Set to \c true by default, set to \c false if the take must not be imported or exported. + */ + bool mSelect; + + //! Local time span, set to animation interval if it is left at the default value. + FbxTimeSpan mLocalTimeSpan; + + //! Reference time span, set to animation interval if it is left at the default value. + FbxTimeSpan mReferenceTimeSpan; + + /** Time value for offsetting the animation keys once they are imported in a scene. + * You can modify it if you need the animation of a take to be offset. + * The effect depends on the state of \c mImportOffsetType. + * \remarks This field is only used when importing a scene. + */ + FbxTime mImportOffset; + + /** \enum EImportOffsetType Import offset types. + * - \e eAbsolute + * - \e eRelative + */ + enum EImportOffsetType + { + eAbsolute, + eRelative + }; + + /** Import offset type. + * If set to \c eAbsolute, \c mImportOffset gives the absolute time of + * the first animation key and the appropriate time shift is applied + * to all of the other animation keys. + * If set to \c eRelative, \c mImportOffset gives the relative time + * shift applied to all animation keys. + */ + EImportOffsetType mImportOffsetType; + + /** Copies the layer information from the take information. + * \param pTakeInfo The take information to be copied. + */ + void CopyLayers(const FbxTakeInfo& pTakeInfo); + + //! List of each layer's information. + FbxArray mLayerInfoList; + + //! Current Layer. + int mCurrentLayer; +}; + +#include + +#endif /* _FBXSDK_SCENE_TAKEINFO_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxthumbnail.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxthumbnail.h new file mode 100644 index 00000000..5024da41 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxthumbnail.h @@ -0,0 +1,142 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxthumbnail.h +#ifndef _FBXSDK_SCENE_THUMBNAIL_H_ +#define _FBXSDK_SCENE_THUMBNAIL_H_ + +#include + +#include + +#include + +class FbxThumbnailMembers; + +/** Simple class to hold RGBA values of a thumbnail image. + * \nosubgrouping + */ +class FBXSDK_DLL FbxThumbnail : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxThumbnail, FbxObject); + +public: + /** + * \name Thumbnail properties + */ + //@{ + + //! Pixel height of the thumbnail image + FbxPropertyT CustomHeight; + + //! Pixel width of the thumbnail image + FbxPropertyT CustomWidth; + + /** \enum EDataFormat Data format. + * - \e eRGB_24 + * - \e eRGBA_32 + */ + enum EDataFormat + { + eRGB_24, // 3 components + eRGBA_32 // 4 components + }; + + /** Set the data format. + * \param pDataFormat Data format identifier. + */ + void SetDataFormat(EDataFormat pDataFormat); + + /** Get the data format. + * \return Data format identifier for the thumbnail. + */ + EDataFormat GetDataFormat() const; + + + /** \enum EImageSize Image size. + * - \e eNotSet + * - \e e64x64 + * - \e e128x128 + * - \e eCustomSize + */ + enum EImageSize + { + eNotSet = 0, + e64x64 = 64, + e128x128 = 128, + eCustomSize = -1 + }; + + /** Set the thumbnail dimensions. + * \param pImageSize Image size identifier. + */ + void SetSize(EImageSize pImageSize); + + /** Get the thumbnail dimensions. + * \return Image size identifier. + */ + EImageSize GetSize() const; + + /** Get the thumbnail dimensions in bytes. + * \return Thumbnail size in bytes. + */ + unsigned long GetSizeInBytes() const; + + + //@} + + /** + * \name Thumbnail data access + */ + //@{ + + /** Fill the thumbnail image. + * \param pImage Pointer to the image data. A copy + * of the image data will be made. + * \remarks This pointer must point to a buffer region + * that is at least Width * Height * Component count + * bytes long. This pointer points to the upper left + * corner of the image. + * \remarks You must set the data format and the dimensions + * before calling this function. If the image size is set to eCustomSize + * the CustomHeight and CustomWidth properties must be set before calling + * this function. + * \return \c true if the thumbnail properties were set + * before calling this function. \c false otherwise. + */ + bool SetThumbnailImage(const FbxUChar* pImage); + + /** Get the thumbnail image. + * \return Pointer to the image data, or \c NULL if the + * thumbnail is empty. + */ + FbxUChar* GetThumbnailImage() const; + + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + virtual void Destruct(bool pRecursive); + + FbxThumbnailMembers* mMembers; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_THUMBNAIL_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxvideo.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxvideo.h new file mode 100644 index 00000000..c04f8322 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/fbxvideo.h @@ -0,0 +1,296 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxvideo.h +#ifndef _FBXSDK_SCENE_VIDEO_H_ +#define _FBXSDK_SCENE_VIDEO_H_ + +#include + +#include + +#include + +/** FBX SDK video class. + * \nosubgrouping + */ +class FBXSDK_DLL FbxVideo : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxVideo, FbxObject); + +public: + /** + *\name Reset video + */ + //@{ + //! Reset the video to default values. + void Reset(); + //@} + + /** + * \name Video attributes Management + */ + //@{ + /** Set the use of MipMap on the video. + * \param pUseMipMap If \c true, use MipMap on the video. + */ + void ImageTextureSetMipMap(bool pUseMipMap); + + /** Retrieve use MipMap state. + * \return MipMap flag state. + */ + bool ImageTextureGetMipMap() const; + + /** Specify the Video full filename. + * \param pName Video full filename. + * \return \c True,if update successfully, \c false otherwise. + * \remarks Update the texture filename if the connection exists. + */ + bool SetFileName(const char* pName); + + /** Retrieve the Video full filename. + * \return Video full filename. + */ + FbxString GetFileName () const; + + /** Specify the Video relative filename. + * \param pName Video relative filename. + * \return \c True, if update successfully, \c false otherwise. + * \remarks Update the texture filename if the connection exists. + */ + bool SetRelativeFileName(const char* pName); + + /** Retrieve the Video relative filename. + * \return Video relative filename. + */ + const char* GetRelativeFileName() const; + + /** + * \name Image sequence attributes Management + * Besides storing video clips, the FbxVideo object can also store image sequences. This section contains + * the manipulation methods used in this specialized mode. Note that, except for the GetFileName(), + * SetFileName(), GetRelativeFileName(), SetRelativeFileName() and the methods in this section, all the + * other ones are not mandatory therefore could contain uninitialized or default data values. + * + */ + //@{ + /** Specify if this video object is holding the starting point of an image sequence. + * \param pImageSequence If \c true, this object is holding an image sequence. + * \remarks When this object is used as image sequence, the FBX SDK + * will automatically exclude it from the embedding mechanism. + */ + void SetImageSequence(bool pImageSequence); + + /** Get the current state of the ImageSequence property. + * \return ImageSequence property value. + */ + bool GetImageSequence() const; + + /** Specify the frame offset to be applied to the image sequence. + * \param pOffset The frame offset value. + */ + void SetImageSequenceOffset(int pOffset); + + /** Get the current value of the ImageSequenceOffset property. + * \return ImageSequenceOffset property value. + */ + int GetImageSequenceOffset() const; + //@} + + /** Retrieve the Frame rate of the video clip. + * \return Frame rate. + */ + double GetFrameRate() const; + + /** Retrieve the last frame of the video clip. + * \return Last frame number. + */ + int GetLastFrame() const; + + /** Retrieve the clip width. + * \return Video image width. + */ + int GetWidth() const; + + /** Retrieve the clip height. + * \return Video image height. + */ + int GetHeight() const; + + /** Set the start frame of the video clip. + * \param pStartFrame Start frame number. + * \remarks The parameter value is not checked. It is the responsibility + * of the caller to deal with bad frame numbers. + */ + void SetStartFrame(int pStartFrame); + + /** Retrieve the start frame of the video clip. + * \return Start frame number. + */ + int GetStartFrame() const; + + /** Set the stop frame of the video clip. + * \param pStopFrame Stop frame number. + * \remarks The parameter value is not checked. It is the responsibility + * of the caller to deal with bad frame numbers. + */ + void SetStopFrame(int pStopFrame); + + /** Retrieve the stop frame of the video clip. + * \return Stop frame number. + */ + int GetStopFrame() const; + + /** Set the play speed of the video clip. + * \param pPlaySpeed Playback speed of the clip. + * \remarks The parameter value is not checked. It is the responsibility + * of the caller to deal with bad playback speed values. + */ + void SetPlaySpeed(double pPlaySpeed); + + /** Retrieve the play speed of the video clip. + * \return Playback speed. + */ + double GetPlaySpeed() const; + + /** Set the time offset. + * The offset can be used to shift the playback start time of the clip. + * \param pTime Time offset of the clip. + */ + void SetOffset(FbxTime pTime); + + /* Retrieve the time offset. + * \return The current time shift. + */ + FbxTime GetOffset() const; + + /** Set the Free Running state of the video clip. + * The Free Running flag can be used by a client application to implement a + * playback scheme that is independent of the main timeline. + * \param pState State of the Free running flag. + */ + void SetFreeRunning(bool pState); + + /** Retrieve the Free Running state. + * \return Current free running flag. + */ + bool GetFreeRunning() const; + + + /** Set the Loop state of the video clip. + * The Loop flag can be used by a client application to implement the loop + * playback of the video clip. + * \param pLoop State of the loop flag. + */ + void SetLoop(bool pLoop); + + /** Retrieve the Loop state. + * \return Current loop flag. + */ + bool GetLoop() const; + + + /** Video interlace modes. + */ + enum EInterlaceMode + { + eNone, //!< Progressive frame (full frame). + eFields, //!< Alternate even/odd fields. + eHalfEven, //!< Half of a frame, even fields only. + eHalfOdd, //!< Half of a frame, odd fields only. + eFullEven, //!< Extract and use the even field of a full frame. + eFullOdd, //!< Extract and use the odd field of a full frame. + eFullEvenOdd, //!< Extract eFields and make full frame with each one beginning with Odd (60fps). + eFullOddEven //!< Extract eFields and make full frame with each one beginning with Even (60fps). + }; + + /** Set the Interlace mode. + * \param pInterlaceMode Interlace mode identifier. + */ + void SetInterlaceMode(EInterlaceMode pInterlaceMode); + + /** Retrieve the Interlace mode. + * \return Interlace mode identifier. + */ + EInterlaceMode GetInterlaceMode() const; + + + /** Video clip access mode. + */ + enum EAccessMode + { + eDisk, + eMemory, + eDiskAsync + }; + + /** Set the clip Access Mode. + * \param pAccessMode Clip access mode identifier. + */ + void SetAccessMode(EAccessMode pAccessMode); + + /** Retrieve the clip Access Mode. + * \return Clip access mode identifier. + */ + EAccessMode GetAccessMode() const; + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + virtual bool ConnectNotify(FbxConnectEvent const &pEvent); + +public: + virtual FbxObject& Copy(const FbxObject& pObject); + + virtual FbxStringList GetTypeFlags() const; + + void SetOriginalFormat(bool pState); + bool GetOriginalFormat() const; + void SetOriginalFilename(const char* pOriginalFilename); + const char* GetOriginalFilename() const; + + FbxPropertyT ImageSequence; + FbxPropertyT ImageSequenceOffset; + FbxPropertyT FrameRate; + FbxPropertyT LastFrame; + FbxPropertyT Width; + FbxPropertyT Height; + FbxPropertyT Path; + FbxPropertyT StartFrame; + FbxPropertyT StopFrame; + FbxPropertyT PlaySpeed; + FbxPropertyT Offset; + FbxPropertyT InterlaceMode; + FbxPropertyT FreeRunning; + FbxPropertyT Loop; + FbxPropertyT AccessMode; + +protected: + void Init(); + + bool mUseMipMap; + bool mOriginalFormat; + FbxString mOriginalFilename; + FbxString mRelativeFilename; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +inline EFbxType FbxTypeOf(const FbxVideo::EInterlaceMode&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxVideo::EAccessMode&){ return eFbxEnum; } + +#include + +#endif /* _FBXSDK_SCENE_VIDEO_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxblendshape.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxblendshape.h new file mode 100644 index 00000000..1453bf34 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxblendshape.h @@ -0,0 +1,113 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxblendshape.h +#ifndef _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_H_ +#define _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_H_ + +#include + +#include + +#include + +class FbxGeometry; +class FbxBlendShapeChannel; + +/** Class for blend shape deformer. + * A blend shape deformer takes a base shape (polygonal surface, curve, or surface) + * and blends it with other target shapes based on weight values. + * Blend shape deformer organize all target shapes via blend shape channel. + * One blend shape deformer can contains multiple blend shape channels, then each + * channel can organize multiple target shapes, \see FbxBlendShapeChannel, FbxShape. + * \remarks The blend effect of each blend shape channel is additive, so the final blend + * effect of a blend shape deformer is the sum of blend effect of all blend shape + * channels it contains, the blend effect of each blend shape channel is controlled + * by the property DeformPercent of blend shape channel. + * \see FbxGeometry, FbxGeometryBase. + * \nosubgrouping + */ + +class FBXSDK_DLL FbxBlendShape : public FbxDeformer +{ + FBXSDK_OBJECT_DECLARE(FbxBlendShape, FbxDeformer); + +public: + /** Set the geometry affected by this blend shape deformer. + * \param pGeometry Pointer to the geometry object to set. + * \return \c true on success, \c false otherwise. + * \remarks One blend shape deformer can only be used on one base geometry. + * So when SetGeometry is called, the pGeometry will replace the + * current base geometry connected to this blend shape deformer. + */ + bool SetGeometry(FbxGeometry* pGeometry); + + /** Get the geometry affected by this blend shape deformer. + * \return A pointer to the geometry if it is set or \c NULL if not set yet. + */ + FbxGeometry* GetGeometry(); + + /** Add a blend shape channel. + * \param pBlendShapeChannel Pointer to the blend shape channel object to add. + * \return \c true on success, \c false otherwise. + */ + bool AddBlendShapeChannel(FbxBlendShapeChannel* pBlendShapeChannel); + + /** Remove the given blend shape. + * \param pBlendShapeChannel Pointer to the blend shape channel to remove from this blend shape deformer. + * \return Pointer to the blend shape channel or \c NULL if pBlendShapeChannel is not owned by this blend shape deformer. + */ + FbxBlendShapeChannel* RemoveBlendShapeChannel(FbxBlendShapeChannel* pBlendShapeChannel); + + /** Get the number of blend shape channels. + * \return Number of blend shape channels that have been added to this object. + */ + int GetBlendShapeChannelCount() const; + + /** Get blend shape channel at given index. + * \param pIndex Index of the blend shape channel. + * \return Pointer to the blend shape channel or \c NULL if index is out of range. + */ + FbxBlendShapeChannel* GetBlendShapeChannel(int pIndex); + + /** Get the blend shape channel at given index. + * \param pIndex Index of the blend shape channel. + * \return Pointer to the blend shape channel or \c NULL if index is out of range. + */ + const FbxBlendShapeChannel* GetBlendShapeChannel(int pIndex) const; + + /** Get the type of the deformer. + * \return The deformer type identifier of blend shape deformer. + */ + EDeformerType GetDeformerType() const {return eBlendShape; }; + + /** Restore the blend shape deformer to the initial state. + * Calling this function will do the following: + * \li Clear the pointer to base geometry. + * \li Remove all the blend shape channels. + */ + void Reset(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + virtual FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const; + +protected: + virtual FbxStringList GetTypeFlags() const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxblendshapechannel.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxblendshapechannel.h new file mode 100644 index 00000000..49e99ec0 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxblendshapechannel.h @@ -0,0 +1,148 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxblendshapechannel.h +#ifndef _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_CHANNEL_H_ +#define _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_CHANNEL_H_ + +#include + +#include + +#include + +class FbxShape; +class FbxBlendShape; + +/** Class for blend shape channels. + * A blend shape channel is a sub-deformer to help blend shape deformer to organize the target shapes. + * One blend shape deformer can have multiple blend shape channels in parallel, and each of them can + * control one or multiple target shapes. If there are multiple target shapes connected to one channel, + * each target shape could have its own full deformation percentage. For example, given a channel that + * has 3 target shapes, whose full deform percentage are 30, to 80 to 100 separately, then when the percent + * changes from 0 to 100, the base geometry will deform from the first target shape to the last one. + * This is called in-between blend shapes or progressive morph. + * The property DeformPercent of blend shape channel will control the deform level of each target shape or + * in-between blend shape on it. + *\nosubgrouping + */ +class FBXSDK_DLL FbxBlendShapeChannel : public FbxSubDeformer +{ + FBXSDK_OBJECT_DECLARE(FbxBlendShapeChannel, FbxSubDeformer); + +public: + /** This property stores deform percent of this channel. + * The default value of this property is 0.0. + * + * \remark Although not enforced, it is strongly suggested to limit the value of this property + * in the range from 0.0 to 100.0 because graphic applications may handle values outside of this + * interval differently, therefore producing unexpected results. + */ + FbxPropertyT DeformPercent; + + /** Set the blend shape deformer that contains this blend shape channel. + * \param pBlendShape Pointer to the blend shape deformer to set. + * \return \c true on success, \c false otherwise. + */ + bool SetBlendShapeDeformer(FbxBlendShape* pBlendShape); + + /** Get the blend shape deformer that contains this blend shape channel. + * \return A pointer to the blend shape deformer if set or NULL. + */ + FbxBlendShape* GetBlendShapeDeformer(); + + /** Add a target shape. + * \param pShape Pointer to the target shape to add. + * \param pFullDeformPercent The full deform percentage for the target shape. + * \return \c true on success, \c false otherwise. + */ + bool AddTargetShape(FbxShape* pShape, double pFullDeformPercent = 100); + + /** Remove the given target shape. + * \param pShape Pointer to the target shape to remove from this blend shape channel. + * \return Pointer to the target shape or \c NULL if pShape is not owned by this blend shape channel. + */ + FbxShape* RemoveTargetShape(FbxShape* pShape); + + /** Get the number of target shapes. + * \return Number of target shapes that have been added to this blend shape channel. + */ + int GetTargetShapeCount() const; + + /** Get the target shape at given index. + * \param pIndex Index of the target shape. + * \return Pointer to the target shape or \c NULL if index is out of range. + */ + FbxShape* GetTargetShape(int pIndex); + + /** Get the target shape at given index. + * \param pIndex Index of the target shape. + * \return Pointer to the target shape or \c NULL if index is out of range. + */ + const FbxShape* GetTargetShape(int pIndex) const; + + /** Get the index of the given target shape. + * \param pShape The given target shape to find index. + * \return The index of the target shape. + */ + int GetTargetShapeIndex( FbxShape* pShape); + + /** Get the full weight values of target shape. + * To access each value iterate in the array up to GetTargetShapeCount(). + * \return The array of full weight values of target shape. + */ + double* GetTargetShapeFullWeights(); + + /** Set the array size for the fully deform weights. + * This functions pre-allocate the array to pCount size. + * \param pCount The new array size to set. + */ + void SetFullWeightsCount(int pCount); + + /** + * \name General Functions + */ + //@{ + /** Get the type of the sub deformer. + * \return The sub deformer type identifier of blend shape channel. + */ + EType GetSubDeformerType() const {return eBlendShapeChannel; }; + + /** Restore the blend shape channel to the initial state. + * Calling this function will do the following: + * \li Set the DeformPercent to 0. + * \li Remove all target shapes. + * \li Clear the array for fully deform weights of in-between target shapes. + */ + void Reset(); + + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + virtual FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const; + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + + virtual FbxStringList GetTypeFlags() const; + + //The full weights array of each shapes on this blend shape channel + FbxArray mShapeFullWeightArray; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_BLEND_SHAPE_CHANNEL_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxcache.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxcache.h new file mode 100644 index 00000000..503ddef2 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxcache.h @@ -0,0 +1,461 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcache.h +#ifndef _FBXSDK_SCENE_GEOMETRY_CACHE_H_ +#define _FBXSDK_SCENE_GEOMETRY_CACHE_H_ + +#include + +#include +#include + +#include + +class FbxCache_internal; + +/** This object contains methods for accessing point animation in a cache file. +* The FBX SDK supports three point cache file formats : +* - \e eMaxPointCacheV2: the 3ds Max Point Cache 2 file format. +* - \e eMayaCache: the Maya Cache file format. +* - \e eAlembic: Alembic Cache file format. +* +* Accessing cache data using these formats differs significantly. To address this difference, several sets of methods have been created. +* Use the GetCacheFileFormat() function to determine which set of methods to use. */ +class FBXSDK_DLL FbxCache : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxCache, FbxObject); + +public: + //! \name Format Independent Functions. + //@{ + /** Supported cache file formats. */ + enum EFileFormat + { + eUnknownFileFormat, //!< Unknown cache file format. + eMaxPointCacheV2, //!< 3ds Max Point Cache 2 file format. + eMayaCache, //!< Maya Cache file format. + eAlembic //!< Alembic Cache file format. + }; + + /** Set the cache file format. + * \param pFileFormat Valid values are \e eMaxPointCacheV2 or \e eMayaCache. + * \param pStatus The FbxStatus object to hold error codes. */ + void SetCacheFileFormat(EFileFormat pFileFormat, FbxStatus* pStatus=NULL); + + /** Get the cache file format. + * \return The current cache file format, or \e eUnknown if it is not set. */ + EFileFormat GetCacheFileFormat() const; + + /** Set the cache file name. + * \param pRelativeFileName_UTF8 The point cache file, relative to the FBX file name. + * \param pAbsoluteFileName_UTF8 The point cache file absolute path. + * \param pStatus The FbxStatus object to hold error codes. */ + void SetCacheFileName(const char* pRelativeFileName_UTF8, const char* pAbsoluteFileName_UTF8, FbxStatus* pStatus=NULL); + + /** Get the cache file name. + * \param pRelativeFileName_UTF8 Return the point cache file name, relative to the FBX File name. + * \param pAbsoluteFileName_UTF8 Return the point cache file absolute path. */ + void GetCacheFileName(FbxString& pRelativeFileName_UTF8, FbxString& pAbsoluteFileName_UTF8) const; + + /** Open the cache file for reading. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the file is successfully opened, \c false otherwise. */ + bool OpenFileForRead(FbxStatus* pStatus=NULL); + + /** Get the open state of the cache file. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the cache file is currently open, \c false otherwise. */ + bool IsOpen(FbxStatus* pStatus=NULL) const; + + /** Read data from the cache file. + * \param pBuffer The buffer containing the data from the cache file. This parameter can be NULL if interested to get buffer length only. + * \param pBufferLength The length of the buffer (NOT in bytes). + * \param pTime The time at which the data should be read. + * \param pChannel The cache file channel to read, when multiple channels are available. + * \return \c True if the cache data was successfully read, \c false otherwise. + * \remark The buffer will be allocated by FbxCache and will be returned if read successful. The buffer will be freed by FbxCache upon its destruction. */ + bool Read(float** pBuffer, unsigned int& pBufferLength, const FbxTime& pTime, unsigned int pChannel=0); + + /** Close the cache file. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the cache file is closed successfully, \c false otherwise. */ + bool CloseFile(FbxStatus* pStatus=NULL); + + /** Get the sampling frame rate of the cache file. + * \param pStatus The FbxStatus object to hold error codes. + * \return The sampling frame rate of the cache file, in frames per second. */ + double GetSamplingFrameRate(FbxStatus* pStatus=NULL); + + /** Get the sampling frame rate of the cache file, as a FbxTime object. + * \param pStatus The FbxStatus object to hold error codes. + * \return The sampling frame rate of the cache file. */ + FbxTime GetCacheTimePerFrame(FbxStatus* pStatus=NULL); + + /** Get the number of channels in the cache file. + * \param pStatus The FbxStatus object to hold error codes. + * \return The number of animation channels in the cache file. */ + int GetChannelCount(FbxStatus* pStatus=NULL); + + /** Get the channel name for a specific channel index. + * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). + * \param pChannelName Returns the name of the requested channel. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. */ + bool GetChannelName(int pChannelIndex, FbxString& pChannelName, FbxStatus* pStatus=NULL); + //@} + + //! \name eMayaCache Format Specific Functions. + //@{ + //! Number of files used to store the animation. + enum EMCFileCount + { + eMCOneFile, //!< One file is used for all the frames of animation. + eMCOneFilePerFrame //!< For every frame of animation, a cache file is used. The number of the frames is the number of the cache files. + }; + + //! Data types in the MC cache file. + enum EMCDataType + { + eUnknownData, //!< Unknown data. + eDouble, //!< No use but has to be defined for consistency reasons. + eDoubleArray, //!< double* + eDoubleVectorArray, //!< double* [3] + eInt32Array, //!< int* + eFloatArray, //!< float* + eFloatVectorArray //!< float* [3] + }; + + //! Binary cache format. + enum EMCBinaryFormat + { + eMCC, //!< MCC cache file format, 32bit (older format) + eMCX //!< MCX cache file format, 64bit (newer format) + }; + + //! Cache channel sampling types. + enum EMCSamplingType + { + eSamplingRegular, //!< Regular sampling. + eSamplingIrregular //!< Irregular sampling. + }; + + /** Open a cache file for writing. + * \param pFileCount Create one file for each frame of animation, or one file for all the frames. + * \param pSamplingFrameRate Number of frames per second. + * \param pChannelName The name of the channel of animation to create. + * \param pBinaryFormat Binary format type (32 bit=eMCC or 64bit=eMCX) + * \param pMCDataType The data type of the MC cache file. + * \param pInterpretation A piece of meta data to help users of the cache understand how to interpret the data. + * \param pStatus The FbxStatus object to hold error codes. */ + bool OpenFileForWrite(EMCFileCount pFileCount, double pSamplingFrameRate, const char* pChannelName, EMCBinaryFormat pBinaryFormat, EMCDataType pMCDataType=eDoubleVectorArray, const char* pInterpretation="Points", FbxStatus* pStatus=NULL); + + /** Creates a new channel in the cache. + * \param pChannelName The name of the channel of animation to create. + * \param pMCDataType The MC DataType of the cache. + * \param pInterpretation A piece of meta data to help users of the cache understand how to interpret the data. + * \param pChannelIndex The index of the new animation channel. + * \param pStatus The FbxStatus object to hold error codes. + * \remark \b pChannelName must be unique within the cache. + * \remark \b pChannelName and \b pInterpretation cannot be NULL pointers. + * \remark This method must be called before adding any data to the cache but after the OpenFileForWrite. */ + bool AddChannel(const char* pChannelName, EMCDataType pMCDataType, const char* pInterpretation, unsigned int& pChannelIndex, FbxStatus* pStatus=NULL); + + /** Get the data type of the specified channel. + * \param pChannelIndex The index of the channel. + * \param pChannelType The channel's data type. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. */ + bool GetChannelDataType(int pChannelIndex, EMCDataType& pChannelType, FbxStatus* pStatus=NULL); + + /** Get the index of the specified channel. + * \param pChannelName The name of the channel. + * \param pStatus The FbxStatus object to hold error codes. + * \return The index of the channel in the cache file, or -1 if an error occurred. */ + int GetChannelIndex(const char* pChannelName, FbxStatus* pStatus=NULL); + + /** Read a sample at a given time. + * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). + * \param pTime Time at which the point animation must be evaluated. + * \param pBuffer The place where the point value will be copied. If the channel's data type is DoubleVectorArray this buffer must be of size 3*pPointCount. + * \param pPointCount The number of points to read from the point cache file. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. */ + bool Read(int pChannelIndex, FbxTime& pTime, double* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); + + /** Read a sample at a given time. + * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). + * \param pTime Time at which the point animation must be evaluated. + * \param pBuffer The place where the point value will be copied. If the channel's data type is FloatVectorArray this buffer must be of size 3*pPointCount. + * \param pPointCount The number of points to read from the point cache file. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. */ + bool Read(int pChannelIndex, FbxTime& pTime, float* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); + + /** Read a sample at a given time. + * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). + * \param pTime Time at which the point animation must be evaluated. + * \param pBuffer The place where the point value will be copied. This buffer must be of size pPointCount. + * \param pPointCount The number of points to read from the point cache file. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. */ + bool Read(int pChannelIndex, FbxTime& pTime, int* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); + + /** Instruct the cache system that data is about to be written to it. This call must appear before any calls to the Write() methods on any channel and terminated by a call to EndWriteAt(). + * \param pTime Time at which the point animation must be inserted. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. */ + bool BeginWriteAt( FbxTime& pTime, FbxStatus* pStatus=NULL ); + + /** Write a sample at a given time. + * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). + * \param pTime Time at which the point animation must be inserted. + * \param pBuffer Point to the values to be copied. If the channel's data type is DoubleVectorArray this buffer must be of size 3*pPointCount. + * \param pPointCount The number of points to write in the point cache file. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. + * \remark This method will fail if the time \e pTime is different from the time set using the call BeginWriteAt(). + * \remark For backward compatibility reasons you can still call this method without the prior call to BeginWriteAt() + * only if this cachedsystem has been defined with one channel. Any other configuration will result in a failure. */ + bool Write(int pChannelIndex, FbxTime& pTime, double* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); + + /** Write a sample at a given time. + * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). + * \param pTime Time at which the point animation must be inserted. + * \param pBuffer Point to the values to be copied. If the channel's data type is FloatVectorArray this buffer must be of size 3*pPointCount. + * \param pPointCount The number of points to write in the point cache file. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. + * \remark This method will fail if the time \e pTime is different from the time set using the call BeginWriteAt(). + * \remark For backward compatibility reasons you can still call this method without the prior call to BeginWriteAt() + * only if this cached system has been defined with one channel. Any other configuration will result in a failure. */ + bool Write(int pChannelIndex, FbxTime& pTime, float* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); + + /** Write a sample at a given time. + * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). + * \param pTime Time at which the point animation must be inserted. + * \param pBuffer Point to the values to be copied. This buffer must be of size pPointCount. + * \param pPointCount The number of points to write in the point cache file. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. + * \remark This method will fail if the time \e pTime is different from the time set using the call BeginWriteAt(). + * \remark For backward compatibility reasons you can still call this method without the prior call to BeginWriteAt() + * only if this cached system has been defined with one channel. Any other configuration will result in a failure. */ + bool Write(int pChannelIndex, FbxTime& pTime, int* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); + + /** Instruct the cache system that all the data on all the channels has been written to it for the given time (specified + * by the BeginWriteAt() call). The call to this method must be made after all the Write() for every channel defined. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. */ + bool EndWriteAt(FbxStatus* pStatus=NULL); + + /** Get the Animation Range of the specified channel. + * \param pChannelIndex The index of the channel. + * \param pTimeStart The start time of the channel's animation. + * \param pTimeEnd The end time of the channel's animation. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. */ + bool GetAnimationRange(int pChannelIndex, FbxTime &pTimeStart, FbxTime &pTimeEnd, FbxStatus* pStatus=NULL); + + /** Get the cache type. + * \param pFileCount The cache type. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. */ + bool GetCacheType(EMCFileCount& pFileCount, FbxStatus* pStatus=NULL); + + /** Get the cache channel interpretation. + * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). + * \param pInterpretation The channel interpretation, user-defined. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. */ + bool GetChannelInterpretation(int pChannelIndex, FbxString& pInterpretation, FbxStatus* pStatus=NULL); + + /** Get the cache channel sampling type. + * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). + * \param pSamplingType The sampling type of the channel. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. */ + bool GetChannelSamplingType(int pChannelIndex, EMCSamplingType& pSamplingType, FbxStatus* pStatus=NULL); + + /** Get the cache channel sampling rate, in frames per second. + * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). + * \param pSamplingRate The sampling rate of the channel. The channel must have a regular sampling type. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. */ + bool GetChannelSamplingRate(int pChannelIndex, FbxTime& pSamplingRate, FbxStatus* pStatus=NULL); + + /** Get the number of data points for a channel. + * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). + * \param pSampleCount Number of available samples. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. */ + bool GetChannelSampleCount(int pChannelIndex, unsigned int& pSampleCount, FbxStatus* pStatus=NULL); + + /** Get the number of points animated in the cache file, for a channel, for a given time. + * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). + * \param pTime Reference time; must be within the boundaries of the animation. + * \param pPointCount Number of available points. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. */ + bool GetChannelPointCount(int pChannelIndex, FbxTime pTime, unsigned int& pPointCount, FbxStatus* pStatus=NULL); + + /** Returns the number of cache data files. + * \param pStatus The FbxStatus object to hold error codes. + * \return The count returned does not include the main cache file, and depends on the cache type. Will return -1 if point cache support is not enabled. */ + int GetCacheDataFileCount(FbxStatus* pStatus=NULL) const; + + /** Get the nth cache file name. + * \param pIndex Index of the cache file to return; index is zero-based, and must be less than GetCacheDataFileCount(). + * \param pRelativeFileName Return the point cache file name, relative to the FBX File name. + * \param pAbsoluteFileName Return the point cache file absolute path. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. See the error management functions for error details. */ + bool GetCacheDataFileName(int pIndex, FbxString& pRelativeFileName, FbxString& pAbsoluteFileName, FbxStatus* pStatus=NULL); + + /** Enable multi-channel fetching. + * \param pMultiChannelFetching Enable/disable multi-channel fetching. When multi-channel is enabled, any load of data on a channel at a specific + * time will pre-fetch data from all channels, for that specific time. This can reduce disk access, and increase performance (but requires more memory). + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. */ + bool EnableMultiChannelFetching(bool pMultiChannelFetching, FbxStatus* pStatus=NULL); + + /** Get the next time where data is stored. + * \param pCurTime Current time; must be within the boundaries of the animation time. + * \param pNextTime Next time (filled if the function is successful). + * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). If pChannel is left at -1, get the next time for any channel. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. */ + bool GetNextTimeWithData(FbxTime pCurTime, FbxTime& pNextTime, int pChannelIndex = -1, FbxStatus* pStatus=NULL); + + /** Get the number of data points the channel contains. + * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). + * \param pStatus The FbxStatus object to hold error codes. + * \return The number of the channel's data points. */ + int GetDataCount(int pChannelIndex, FbxStatus* pStatus=NULL); + + /** Get the time of the specified data point. + * \param pChannelIndex The index of the animation channel, between 0 and GetChannelCount(). + * \param pDataIndex Index of the data point. + * \param pTime Time of the data point (filled if the function is successful). + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. */ + bool GetDataTime(int pChannelIndex, unsigned int pDataIndex, FbxTime& pTime, FbxStatus* pStatus=NULL); + //@} + + //! \name eMaxPointCacheV2 Format Specific Functions. + //@{ + /** Open a cache file for writing. + * \param pFrameStartOffset Start time of the animation, in frames. + * \param pSamplingFrameRate Number of frames per second. + * \param pSampleCount The number of samples to write to the file. + * \param pPointCount The number of points to write in the point cache file. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. See the error management functions for error details. */ + bool OpenFileForWrite(double pFrameStartOffset, double pSamplingFrameRate, unsigned int pSampleCount, unsigned int pPointCount, FbxStatus* pStatus=NULL); + + /** Get the number of frames of animation found in the point cache file. + * \param pStatus The FbxStatus object to hold error codes. + * \return The number of frames of animation. + */ + unsigned int GetSampleCount(FbxStatus* pStatus=NULL); + + /** Get the number of points animated in the cache file. + * \param pStatus The FbxStatus object to hold error codes. + * \return The number of points. + */ + unsigned int GetPointCount(FbxStatus* pStatus=NULL); + + /** Get the start time of the animation + * \param pStatus The FbxStatus object to hold error codes. + * \return The start time of the animation, in frames. */ + double GetFrameStartOffset(FbxStatus* pStatus=NULL); + + /** Read a sample at a given frame index. + * \param pFrameIndex The index of the animation frame, between 0 and GetSampleCount(). + * \param pBuffer The place where the point value will be copied. This buffer must be of size 3 * pPointCount. + * \param pPointCount The number of points to read from the point cache file. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. */ + bool Read(unsigned int pFrameIndex, double* pBuffer, unsigned int pPointCount, FbxStatus* pStatus=NULL); + + /** Write a sample at a given frame index. + * \param pFrameIndex The index of the animation frame. + * \param pBuffer Point to the values to be copied. This buffer must be of size 3 * pPointCount, as passed to the function OpenFileForWrite(). + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. + * \remark Successive calls to Write() must use successive index. */ + bool Write(unsigned int pFrameIndex, double* pBuffer, FbxStatus* pStatus=NULL); + //@} + + //! \name File conversion Functions. + //@{ + /** Create an MC cache file from an PC2 cache file. + * \param pFileCount Create one file for each frame of animation, or one file for all the frames. + * \param pSamplingFrameRate Number of frames per second used to re-sample the point animation. + * \param pBinaryFormat Binary format type (32 bit=eMCC or 64bit=eMCX) + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. + * \remark The created point cache file will be located in the _fpc folder associate with the FBX file. */ + bool ConvertFromPC2ToMC(EMCFileCount pFileCount, double pSamplingFrameRate, EMCBinaryFormat pBinaryFormat, FbxStatus* pStatus=NULL); + + /** Create a PC2 cache file from an MC cache file. + * \param pSamplingFrameRate Number of frames per second to re-sample the point animation. + * \param pChannelIndex Index of the channel of animation to read from. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if successful, \c false otherwise. + * \remark The created point cache file will be located in the _fpc folder associate with the FBX file. */ + bool ConvertFromMCToPC2(double pSamplingFrameRate, unsigned int pChannelIndex, FbxStatus* pStatus=NULL); + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + enum EOpenFlag + { + eReadOnly, + eWriteOnly + }; + +protected: + bool OpenFile(EOpenFlag pFlag, EMCFileCount pFileCount, double pSamplingFrameRate, const char* pChannelName, const char* pInterpretation, unsigned int pSampleCount, unsigned int pPointCount, double pFrameStartOffset, FbxStatus* pStatus, EMCDataType pMCDataType = eDoubleVectorArray, EMCBinaryFormat pBinaryFormat = eMCX); + + virtual void Construct( const FbxObject* pFrom ); + virtual void ConstructProperties(bool pForceSet); + virtual void Destruct(bool pRecursive); + + FbxCache_internal* mData; + +private: + bool AllocateReadBuffer(unsigned int pTypeSize, unsigned int pTypeLength, unsigned int pLength, bool pAllocateConvertBuffer); + bool ReadMayaCache(float** pBuffer, unsigned int& pBufferLength, const FbxTime& pTime, unsigned int pChannel); + bool ReadMaxCache(float** pBuffer, unsigned int& pBufferLength, const FbxTime& pTime); + bool ReadAlembicCache(float** pBuffer, unsigned int& pBufferLength, const FbxTime& pTime, unsigned int pChannel); + + FbxPropertyT CacheFile; + FbxPropertyT CacheFileAbsolutePath; + FbxPropertyT CacheFileType; + + void* mReadBuffer; + unsigned int mReadBufferLength; + unsigned int mReadBufferSize; + unsigned int mReadTypeSize; + unsigned int mReadTypeLength; + unsigned int mReadLength; + void* mConvertBuffer; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +inline EFbxType FbxTypeOf(const FbxCache::EFileFormat&){ return eFbxEnum; } + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_CACHE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxcachedeffect.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxcachedeffect.h new file mode 100644 index 00000000..bb179955 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxcachedeffect.h @@ -0,0 +1,100 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcachedeffect.h +#ifndef _FBXSDK_SCENE_GEOMETRY_CACHED_EFFECT_H_ +#define _FBXSDK_SCENE_GEOMETRY_CACHED_EFFECT_H_ + +#include + +#include +#include + +#include + +/** A cached effect is a type of node attribute to represent certain type of effect + * by an cache object. Categories are particle cache, fluid cache, hair cache and general cache. + * \see ECategory for the effect types that are supported. + * \nosubgrouping + */ +class FBXSDK_DLL FbxCachedEffect : public FbxNodeAttribute +{ + FBXSDK_OBJECT_DECLARE(FbxCachedEffect, FbxNodeAttribute); + +public: + //! Returns the FbxNodeAttribute::EType::eCachedEffect attribute type. + virtual FbxNodeAttribute::EType GetAttributeType() const; + + /** Effect attribute category. This is for identification purpose and has + * no influence inside the FBX SDK. However, applications may use this to filter FbxCachedEffect + * objects. + * \remarks Vertex caches for deforming geometries are not handled by the FbxCachedEffect object. These + * caches are connected with the FbxVertexCacheDeformer object. + * \remarks If an object of this class is used as the default NodeAttribute for a FbxNode and the scene is + * saved to an FBX v6 and earlier versions, the CachedEffect attribute is not saved and the FbxNode will + * be processed as a FbxNull node with default values for the attribute. + */ + enum ECategory + { + eParticles, //!< This effect handles a particle cache. + eFluids, //!< This effect handles a fluid cache. + eHair, //!< This effect handles an hair cache. + eGeneric //!< This effect handles a cache other than particles, fluids or hair. + }; + + //! Return the specialization category of this effect attribute. + ECategory GetCategory() const; + + /** Assign a cache object to be used by this attribute. + * \param pCache The cache object. + * \param pCategory The type of this cached effect. + * \remarks The cache referenced by the \b pCache pointer can be freely shared among + * multiple FbxCachedEffect (and even the FbxVertexCacheDeformer) therefore + * \b pCategory identifier should really only used as a hint of what this FbxCachedEffect + * represents but it should not be taken for granted that the content of the cache really + * matches the category. Applications should always check the cache files to ensure that + * they are manipulating the desired information. + * + */ + void SetCache( FbxCache* pCache, ECategory pCategory = eGeneric); + + /** Get the cache object used by this node attribute. + * \return A pointer to the cache object used by this node attribute, or \c NULL if no cache object is assigned. + */ + FbxCache* GetCache() const; + +protected: + + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + +protected: + virtual void ConstructProperties(bool pForceSet); + +public: + virtual const char* GetTypeName() const; + virtual FbxStringList GetTypeFlags() const; + +private: + void ClearCacheConnections(); + FbxPropertyT Category; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +inline EFbxType FbxTypeOf(const FbxCachedEffect::ECategory&){ return eFbxEnum; } + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_CACHED_EFFECT_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxcamera.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxcamera.h new file mode 100644 index 00000000..ee2e6b51 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxcamera.h @@ -0,0 +1,1898 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcamera.h +#ifndef _FBXSDK_SCENE_GEOMETRY_CAMERA_H_ +#define _FBXSDK_SCENE_GEOMETRY_CAMERA_H_ + +#include + +#include +#include +#include + +#include + +class FbxTexture; + +/** This node attribute contains methods for accessing the properties of a camera. + * \nosubgrouping + * A camera can be set to automatically point at and follow + * another node in the hierarchy. To do this, the focus source + * must be set to EFocusDistanceSource::eFocusSrcCameraInterest and the + * followed node associated with function FbxNode::SetTarget(). + * \see FbxCameraStereo and FbxCameraSwitcher. + */ +class FBXSDK_DLL FbxCamera : public FbxNodeAttribute +{ + FBXSDK_OBJECT_DECLARE(FbxCamera,FbxNodeAttribute); + +public: + //! Return the type of node attribute which is EType::eCamera. + virtual FbxNodeAttribute::EType GetAttributeType() const; + + //! Reset the camera to default values. + void Reset(); + + /** Camera projection types. + * \remarks By default, the camera projection type is set to ePerspective. + * If the camera projection type is set to eOrthogonal, the following options + * are not relevant: + * - aperture format + * - aperture mode + * - aperture width and height + * - angle of view/focal length + * - squeeze ratio + */ + enum EProjectionType + { + ePerspective, //!< Perspective projection. + eOrthogonal //!< Orthogonal projection. + }; + + /** + * \name Functions to handle the viewing area. + */ + //@{ + /** Camera formats identifiers. + * \remarks This is designed as the same as in MotionBuilder. + * \see SetFormat, GetFormat and CameraFormat. + */ + enum EFormat + { + eCustomFormat, //!< The format's width, height, or pixel ratio has been user-specified, and matches none of the other picture formats. + eD1NTSC, //!< Standard format for D1 NTSC (720 by 486). + eNTSC, //!< NTSC standard for North American television broadcast (640 by 480). + ePAL, //!< PAL standard for European television broadcast (570 by 486). + eD1PAL, //!< Standard format for D1 PAL (720 by 576). + eHD, //!< HD format(1920 by 1080). + e640x480, //!< Recommended computer screen format (640 by 480). + e320x200, //!< Recommended format for World Wide Web production(320 by 200). + e320x240, //!< Alternate World Wide Web format(320 by 240). + e128x128, //!< Format(128 by 128) + eFullscreen //!< Full computer screen format (1280 by 1024 pixels). + }; + + /** Set the camera format. + * \param pFormat The camera format identifier. + * \remarks Changing the camera format sets the camera aspect + * ratio mode to eFixedResolution and modifies the aspect width + * size, height size, and pixel ratio accordingly. + */ + void SetFormat(EFormat pFormat); + + /** Get the camera format. + * \return The current camera format identifier. + */ + EFormat GetFormat() const; + + /** Camera's aspect ratio modes. + * \see SetAspect, GetAspectRatioMode, AspectWidth, AspectHeight and AspectRatioMode. + */ + enum EAspectRatioMode + { + eWindowSize, //!< Both width and height values aren't relevant. + eFixedRatio, //!< The height value is set to 1.0 and the width value is relative to the height value. + eFixedResolution, //!< Both width and height values are in pixels. + eFixedWidth, //!< The width value is in pixels and the height value is relative to the width value. + eFixedHeight //!< The height value is in pixels and the width value is relative to the height value. + }; + + /** Set the camera's aspect ratio mode. + * \param pRatioMode Camera's aspect ratio mode. + * \param pWidth Camera's aspect width, must be a positive value. + * \param pHeight Camera's aspect height, must be a positive value. + * \remarks Changing the camera aspect sets the camera format to eCustomFormat. + * \see EAspectRatioMode. + */ + void SetAspect(EAspectRatioMode pRatioMode, double pWidth, double pHeight); + + /** Get the camera aspect ratio mode. + * \return The current aspect ratio mode. + */ + EAspectRatioMode GetAspectRatioMode() const; + + /** Set the pixel ratio. + * \param pRatio The pixel ratio value. + * \remarks The value must be a positive number. Comprised between 0.05 and 20.0. Values + * outside these limits will be clamped. Changing the pixel ratio sets the camera format to eCustomFormat. + */ + void SetPixelRatio(double pRatio); + + /** Get the pixel ratio. + * \return The current camera's pixel ratio value. + */ + double GetPixelRatio() const; + + /** Set the near plane distance from the camera. + * The near plane is the minimum distance to render a scene on the camera display. + * A synonym for the near plane is "front clipping plane". + * \param pDistance The near plane distance value. + * \remarks The near plane value is limited to the range [0.001, 600000.0] and + * must be inferior to the far plane value. + */ + void SetNearPlane(double pDistance); + + /** Get the near plane distance from the camera. + * The near plane is the minimum distance to render a scene on the camera display. + * A synonym for the near plane is "front clipping plane". + * \return The near plane value. + */ + double GetNearPlane() const; + + /** Set the far plane distance from camera. + * The far plane is the maximum distance to render a scene on the camera display. + * A synonym for the far plane is "back clipping plane". + * \param pDistance The far plane distance value. + * \remarks The far plane value is limited to the range [0.001, 600000.0] and + * must be superior to the near plane value. + */ + void SetFarPlane(double pDistance); + + /** Get the far plane distance from camera. + * The far plane is the maximum distance to render a scene on the camera display. + * A synonym for the far plane is "back clipping plane". + * \return The far plane value. + */ + double GetFarPlane() const; + + //@} + + /** + * \name Aperture and Film Functions. + * In photography, the aperture is the size of hole allowing light from the lens to get through to the film. + * The aperture mode determines which values drive the camera aperture. When the aperture mode is \e eHorizAndVert, + * \e eHorizontal or \e eVertical, the field of view is used. When the aperture mode is \e eFocalLength, the focal length is used. + * + * It is possible to convert the aperture mode into field of view or vice versa using functions ComputeFieldOfView and + * ComputeFocalLength. These functions use the camera aperture width and height for their computation. + */ + //@{ + + /** Camera's aperture formats. + * \remarks This is designed as the same as in MotionBuilder. + * \see SetApertureFormat, GetApertureFormat, FilmFormat, FilmWidth, FilmHeight, FilmSqueezeRatio and FilmAspectRatio. + */ + enum EApertureFormat + { + eCustomAperture, //!< The film size, squeeze ratio and aspect ratio has been user-specified, and matches none of the other aperture formats. + e16mmTheatrical, //!< Film Size: 0.404, 0.295 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.369. + eSuper16mm, //!< Film Size: 0.493, 0.292 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.688. + e35mmAcademy, //!< Film Size: 0.864, 0.630 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.371. + e35mmTVProjection, //!< Film Size: 0.816, 0.612 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.333. + e35mmFullAperture, //!< Film Size: 0.980, 0.735 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.333. + e35mm185Projection, //!< Film Size: 0.825, 0.446 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.850. + e35mmAnamorphic, //!< Film Size: 0.864, 0.732 inches. Film Squeeze Ratio: 2.0. Film Aspect Ratio:1.180. + e70mmProjection, //!< Film Size: 2.066, 0.906 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 2.280. + eVistaVision, //!< Film Size: 1.485, 0.991 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.498. + eDynaVision, //!< Film Size: 2.080, 1.480 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.405. + eIMAX //!< Film Size: 2.772, 2.072 inches. Film Squeeze Ratio: 1.0. Film Aspect Ratio: 1.338. + }; + + /** Set the camera aperture format. + * \param pFormat The camera aperture format identifier. + * \remarks Changing the aperture format modifies the aperture width, height, and squeeze ratio accordingly. + */ + void SetApertureFormat(EApertureFormat pFormat); + + /** Get the camera aperture format. + * \return The camera's current aperture format identifier. + */ + EApertureFormat GetApertureFormat() const; + + /** Camera aperture modes. + * The aperture mode determines which values drive the camera aperture. + * If the aperture mode is \e eHorizAndVert, \e eHorizontal, or \e eVertical, then the field of view is used. + * If the aperture mode is \e eFocalLength, then the focal length is used. + */ + enum EApertureMode + { + eHorizAndVert, //!< Set the angle values for both the horizontal and vertical settings. + eHorizontal, //!< Set only the horizontal angle. + eVertical, //!< Set only the vertical angle. + eFocalLength //!< Use focal length directly. + }; + + /** Set the camera aperture mode. + * \param pMode The camera aperture mode identifier. + */ + void SetApertureMode(EApertureMode pMode); + + /** Get the camera aperture mode. + * \return The camera's current aperture mode identifier. + */ + EApertureMode GetApertureMode() const; + + /** Set the camera aperture width in inches. + * \param pWidth The aperture width value. + * \remarks Must be a positive value. The minimum accepted value is 0.0001. + * Changing the aperture width sets the camera aperture format to eCustomFormat. + */ + void SetApertureWidth(double pWidth); + + /** Get the camera aperture width in inches. + * \return The camera's current aperture width value in inches. + */ + double GetApertureWidth() const; + + /** Set the camera aperture height in inches. + * \param pHeight The aperture height value. + * \remarks Must be a positive value. The minimum accepted value is 0.0001. + * Changing the aperture height sets the camera aperture format to eCustomFormat. + */ + void SetApertureHeight(double pHeight); + + /** Get the camera aperture height in inches. + * \return The camera's current aperture height value in inches. + */ + double GetApertureHeight() const; + + /** Set the squeeze ratio. + * \param pRatio The squeeze ratio value. + * \remarks Must be a positive value. The minimum accepted value is 0.0001. + * Changing the squeeze ratio sets the camera aperture format to eCustomFormat. + */ + void SetSqueezeRatio(double pRatio); + + /** Get the camera squeeze ratio. + * \return The camera's current squeeze ratio value. + */ + double GetSqueezeRatio() const; + + /** Camera's gate fit modes. + * There are two gates for a camera, film gate and resolution gate. + * Film gate is a border indicating the area of the camera's view as a real-world camera records on film. + * The dimensions of the film gate represent the dimensions of the camera aperture. + * But the film gate does not represent the render region. + * It is the resolution gate that represents the rendering resolution. + * The gate fit mode controls the size of the resolution gate relative to the film gate. + */ + enum EGateFit + { + eFitNone, //!< No resolution gate fit. + eFitVertical, //!< Fit the resolution gate vertically within the film gate. + eFitHorizontal, //!< Fit the resolution gate horizontally within the film gate. + eFitFill, //!< Fit the resolution gate within the film gate. + eFitOverscan, //!< Fit the film gate within the resolution gate. + eFitStretch //!< Fit the resolution gate to the film gate. + }; + + /** Compute the angle of view based on the given focal length, the aperture width, and aperture height. + * \param pFocalLength The focal length in millimeters. + * \return The computed angle of view in degrees. + * \remark If aperture mode is not vertical, horizontal is assumed. + */ + double ComputeFieldOfView(double pFocalLength) const; + + /** Compute the focal length based on the given angle of view, the aperture width, and aperture height. + * \param pAngleOfView The angle of view in degrees. + * \return The computed focal length in millimeters. + * \remark If aperture mode is not vertical, horizontal is assumed. + */ + double ComputeFocalLength(double pAngleOfView) const; + + /** Specifies how the roll is applied with respect to the pivot value. + */ + enum EFilmRollOrder + { + eRotateFirst, //!< The film back is first rotated then translated by the pivot point value. + eTranslateFirst //!< The film back is first translated then rotated by the film roll value. + }; + + //@} + + /** + * \name Functions to handle BackPlane/FrontPlane and Plate. + * + * In the FbxSdk terminology, the Back/Front plane is the support of the plate. And the plate is + * the support of the texture used for backgrounds/foregrounds. Functions and properties + * identified by the "Plate" name are affecting the display of the texture on the plate. + * The functions and properties identified with the "Back/FrontPlane" are affecting the plate. + * + * Typically a client application would place the BackPlate a small distance in front of the + * FarPlane and the FrontPlate just behind the NearPlane to avoid them to be hidden by the clipping. + * Unless otherwise noted, there are no restrictions on the values stored by the camera object + * therefore it is the responsibility of the client application to process the information in a + * meaningful way and to maintain consistency between the different properties relationships. + */ + //@{ + + /** Set the associated background image file. + * \param pFileName The path of the background image file. + * \remarks The background image file name must be valid. + * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) + * and must not be used in any other cases. + */ + void SetBackgroundFileName(const char* pFileName); + + /** Get the background image file name. + * \return Pointer to the background filename string or \c NULL if not set. + * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) + * and must not be used in any other cases. + */ + const char* GetBackgroundFileName() const; + + /** Set the media name associated to the background image file. + * \param pFileName The media name of the background image file. + * \remarks The media name is a unique name used to identify the background image file. + * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) + * and must not be used in any other cases. + */ + void SetBackgroundMediaName(const char* pFileName); + + /** Get the media name associated to the background image file. + * \return Pointer to the media name string or \c NULL if not set. + * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) + * and must not be used in any other cases. + */ + const char* GetBackgroundMediaName() const; + + /** Set the associated foreground image file. + * \param pFileName The path of the foreground image file. + * \remarks The foreground image file name must be valid. + * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) + * and must not be used in any other cases. + */ + void SetForegroundFileName(const char* pFileName); + + /** Get the foreground image file name. + * \return Pointer to the foreground filename string or \c NULL if not set. + * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) + * and must not be used in any other cases. + */ + const char* GetForegroundFileName() const; + + /** Set the media name associated to the foreground image file. + * \param pFileName The media name of the foreground image file. + * \remarks The media name is a unique name used to identify the foreground image file. + * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) + * and must not be used in any other cases. + */ + void SetForegroundMediaName(const char* pFileName); + + /** Get the media name associated to the foreground image file. + * \return Pointer to the media name string or \c NULL if not set. + * \remarks This method is still provided just for legacy files (Fbx version 5.0 and earlier) + * and must not be used in any other cases. + */ + const char* GetForegroundMediaName() const; + + + /** Image plate drawing modes. + */ + enum EPlateDrawingMode + { + ePlateBackground, //!< Image is drawn behind models. + ePlateForeground, //!< Image is drawn in front of models based on alpha channel. + ePlateBackAndFront //!< Image is drawn behind and in front of models depending on alpha channel. + }; + + /** Set front plate matte threshold. + * \param pThreshold Threshold value on a range from 0.0 to 1.0. + * \remarks This option is only relevant if the image plate drawing mode is set to ePlateForeground or ePlateBackAndFront. + */ + void SetBackgroundAlphaTreshold(double pThreshold); + + /** Get front plate matte threshold. + * \return Threshold value on a range from 0.0 to 1.0. + * \remarks This option is only relevant if the image plate drawing mode is set to ePlateForeground or ePlateBackAndFront. + */ + double GetBackgroundAlphaTreshold() const; + + /** Change the back plate fit image flag. + * If this flag is on, scale the back plate image to fit on the back plane. + * \param pFitImage New value for the BackPlateFitImage property. + */ + void SetBackPlateFitImage(bool pFitImage); + + /** Get the current back plate image flag. + * If this flag is on, scale the back plate image to fit on the back plane. + * \return The value of the BackPlateFitImage property. + */ + bool GetBackPlateFitImage() const; + + /** Change the back plate crop flag. + * If this flag is on, crop the back plate image to fit on the back plane. + * If the image is smaller than the plane, this flag has no effect. + * \param pCrop New value for the BackPlateCrop property. + */ + void SetBackPlateCrop(bool pCrop); + + /** Get the current back plate crop flag. + * If this flag is on, crop the back plate image to fit on the back plane. + * If the image is smaller than the plane, this flag has no effect. + * \return The value of the BackPlateCrop property. + */ + bool GetBackPlateCrop() const; + + /** Change the back plate center flag. + * If this flag is on, center the back plate image on the back plane. + * \param pCenter New value for the BackPlateCenter property. + */ + void SetBackPlateCenter(bool pCenter); + + /** Get the current back plate center flag. + * If this flag is on, center the back plate image on the back plane. + * \return The value of the BackPlateCenter property. + */ + bool GetBackPlateCenter() const; + + /** Change the back plate keep ratio flag. + * If this flag is on, keep the aspect ratio of the back plate image. + * Turn on both the keep ration flag and the fit image flag to scale the back plate image proportionately. + * \param pKeepRatio New value for the BackPlateKeepRatio property. + */ + void SetBackPlateKeepRatio(bool pKeepRatio); + + /** Get the current back plate keep ratio flag. + * If this flag is on, keep the aspect ratio of the back plate image. + * Turn on both the keep ration flag and the fit image flag to scale the back plate image proportionately. + * \return The value of the BackPlateKeepRatio property. + */ + bool GetBackPlateKeepRatio() const; + + /** Enable or disable the display of the texture without the need to disconnect it from its plate. + * \param pEnable If \c true the texture is displayed, \c false otherwise. + * \remarks It is the responsibility of the client application to perform the required tasks according to the state + * of this flag. + */ + void SetShowFrontPlate(bool pEnable); + + /** Get the current state of the flag to display the front plate or not. + * \return \c true if show front plate is enabled, otherwise \c false. + * \remarks It is the responsibility of the client application to perform the required tasks according to the state + * of this flag. + */ + bool GetShowFrontPlate() const; + + /** Change the front plate fit image flag. + * If this flag is on, scale the front plate image to fit on the front plane. + * \param pFrontPlateFitImage New value for the FrontPlateFitImage property. + */ + void SetFrontPlateFitImage(bool pFrontPlateFitImage); + + /** Get the current front plate fit image flag. + * If this flag is on, scale the front plate image to fit on the front plane. + * \return The value of the BackPlateFitImage property. + */ + bool GetFrontPlateFitImage() const; + + /** Change the front plate crop flag. + * If this flag is on, crop the front plate image to fit on the front plane. + * If the image is smaller than the plane, this flag has no effect. + * \param pFrontPlateCrop New value for the FrontPlateCrop property. + */ + void SetFrontPlateCrop(bool pFrontPlateCrop); + + /** Get the current front plate crop flag. + * If this flag is on, crop the front plate image to fit on the front plane. + * If the image is smaller than the plane, this flag has no effect. + * \return The value of the FrontPlateCrop property. + */ + bool GetFrontPlateCrop() const; + + /** Change the front plate center flag. + * If this flag is on, center the front plate image on the front plane. + * \param pFrontPlateCenter New value for the FrontPlateCenter property. + */ + void SetFrontPlateCenter(bool pFrontPlateCenter); + + /** Get the current front plate center flag. + * If this flag is on, center the front plate image on the front plane. + * \return The value of the FrontPlateCenter property. + */ + bool GetFrontPlateCenter() const; + + /** Change the front plate keep ratio flag. + * If this flag is on, keep the aspect ratio of the front plate image. + * Turn on both the keep ration flag and the fit image flag to scale the front plate image proportionately. + * \param pFrontPlateKeepRatio New value for the FrontPlateKeepRatio property. + */ + void SetFrontPlateKeepRatio(bool pFrontPlateKeepRatio); + + /** Get the current front plate keep ratio flag. + * If this flag is on, keep the aspect ratio of the front plate image. + * Turn on both the keep ration flag and the fit image flag to scale the front plate image proportionately. + * \return The value of the FrontPlateKeepRatio property. + */ + bool GetFrontPlateKeepRatio() const; + + /** Set the front plate opacity value. + * \param pOpacity New value for the ForegroundOpacity property. + */ + void SetForegroundOpacity(double pOpacity); + + /** Get the front plate opacity value. + * \return The value of the ForegroundOpacity property. + */ + double GetForegroundOpacity() const; + + /** Attach the texture to the front plate. + * \param pTexture The pointer to the texture to attach. + */ + void SetForegroundTexture(FbxTexture* pTexture); + + /** Get the texture connected to the front plate. + * \return A pointer to the texture attached to front plate. + */ + FbxTexture* GetForegroundTexture() const; + + /** Front and BackPlane distance modes. + * \see SetBackPlaneDistanceMode and GetBackPlaneDistanceMode. + */ + enum EFrontBackPlaneDistanceMode + { + eRelativeToInterest, //!< The back plane distance is measured in relation to the camera interest. + eRelativeToCamera //!< The back plane distance is measured in relation to the camera. + }; + + /** Set the back plane distance mode. + * \param pMode The back plane distance mode to set. + */ + void SetBackPlaneDistanceMode(EFrontBackPlaneDistanceMode pMode); + + /** Get the back plane distance mode. + * \return Return the back plane distance mode. + */ + EFrontBackPlaneDistanceMode GetBackPlaneDistanceMode() const; + + /** Set the front plane distance from the camera. The the absolute position of the plane must be calculated + * by taking into consideration of the FrontPlaneDistanceMode. + * \param pDistance The front plane distance value. + * \remarks It is the responsibility of the client application to ensure that this plane position is + * within the frustum boundaries. + */ + void SetFrontPlaneDistance(double pDistance); + + /** Get the front plane distance value. + * \return double The front plane distance value. + */ + double GetFrontPlaneDistance() const; + + /** Set the front plane distance mode. + * \param pMode The front plane distance mode to set. + */ + void SetFrontPlaneDistanceMode(EFrontBackPlaneDistanceMode pMode); + + /** Get the front plane distance mode flag. + * \return The front plane distance mode. + */ + EFrontBackPlaneDistanceMode GetFrontPlaneDistanceMode() const; + + /** Front/back plane display modes. + */ + enum EFrontBackPlaneDisplayMode + { + ePlanesDisabled, //!< Disables the front/back plane whether a texture is being projected or not. + ePlanesAlways, //!< Always shows the front/back plane, even if no texture has been added. + ePlanesWhenMedia //!< Shows the front/back plane only if a texture has been added. + }; + + /** Set the front plane display mode. This mode can be used by the client application to + * decide under which circumstance the front plane should be drawn in the viewport. + * \param pMode The front/back plane display mode. + */ + void SetViewFrustumFrontPlaneMode(EFrontBackPlaneDisplayMode pMode); + + /** Get the front plane display mode. + * \return The front/back plane display mode. + */ + EFrontBackPlaneDisplayMode GetViewFrustumFrontPlaneMode() const; + + /** Set the back plane display mode. This mode can be used by the client application to + * decide under which circumstance the back plane should be drawn in the viewport. + * \param pMode The front/back plane display mode. + */ + void SetViewFrustumBackPlaneMode(EFrontBackPlaneDisplayMode pMode); + + /** Get the back plane display mode. + * \return The front/back plane display mode. + */ + EFrontBackPlaneDisplayMode GetViewFrustumBackPlaneMode() const; + + //@} + + /** + * \name Camera View Functions + * It is the responsibility of the client application to perform the required tasks according to the state + * of the options that are either set or returned by these methods. + */ + //@{ + + /** Change the camera interest visibility flag. + * \param pEnable Set to \c true if the camera interest is shown, \c false otherwise. + */ + void SetViewCameraInterest(bool pEnable); + + /** Get current visibility state of the camera interest. + * \return \c true if the camera interest is shown, or \c false if hidden. + */ + bool GetViewCameraInterest() const; + + /** Change the camera near and far planes visibility flag. + * \param pEnable Set to \c true if the near and far planes are shown, \c false otherwise. + */ + void SetViewNearFarPlanes(bool pEnable); + + /** Get current visibility state of the camera near and far planes. + * \return \c true if the near and far planes are shown, \c false otherwise. + */ + bool GetViewNearFarPlanes() const; + + /** Camera safe area display styles. + */ + enum ESafeAreaStyle + { + eSafeAreaRound, //!< Rounded safe area. + eSafeAreaSquare //!< Square safe area. + }; + + //@} + + /** + * \name Render Functions + * It is the responsibility of the client application to perform the required tasks according to the state + * of the options that are either set or returned by these methods. + */ + //@{ + + /** Render options usage time. + */ + enum ERenderOptionsUsageTime + { + eInteractive, //!< To render in real time. + eOnDemand //!< Only render when it is asked. + }; + + /** Anti-aliasing methods. + */ + enum EAntialiasingMethod + { + eAAOversampling, //!< To do anti-aliasing by oversampling. + eAAHardware //!< To do anti-aliasing by hardware. + }; + + /** Oversampling types for anti-aliasing. + */ + enum ESamplingType + { + eSamplingUniform, /*!< The Uniform method samples each pixel at the same location. + The pixel is divided into equal parts, and each part is sampled. + The number of samples determines the number of times the pixel is divided. */ + eSamplingStochastic /*!< The Stochastic method randomly samples each pixel. + This produces an accurate color using a small number of samples. */ + }; + + /** Camera focus sources, that is the focal point for the depth of field. + * \see FocusDistance. + */ + enum EFocusDistanceSource + { + eFocusSrcCameraInterest, /*!< Base the depth of field on the camera interest. Models at the camera interest are in focus. + As you move toward or away from the camera interest, models become increasingly blurred. */ + eFocusSpecificDistance //!< Base the depth of field on a point defined by a specific distance from the camera interest. + }; + + //@} + + //! \name Utility Functions. + //@{ + /** Evaluate the camera position (eye). + * \param pTime The time at which the camera should be evaluated. + * \return The camera position evaluated from property value and animation. */ + FbxVector4 EvaluatePosition(const FbxTime& pTime=FBXSDK_TIME_ZERO) const; + + /** Evaluate the camera target position (look at). + * \param pTime The time at which the camera should be evaluated. + * \return The camera target position evaluated from property value and animation. */ + FbxVector4 EvaluateLookAtPosition(const FbxTime& pTime=FBXSDK_TIME_ZERO) const; + + /** Evaluate the camera up direction, taking target up objects into consideration. + * \param pCameraPosition The camera current position. You can retrieve this with FbxCamera::EvaluatePosition(). + * \param pLookAtPosition The camera target position. you can retrieve this with FbxCamera::EvaluateLookAtPosition(). + * \param pTime The time at which the camera should be evaluated. + * \return The camera up direction vector based on provided information. */ + FbxVector4 EvaluateUpDirection(const FbxVector4& pCameraPosition, const FbxVector4& pLookAtPosition, const FbxTime& pTime=FBXSDK_TIME_ZERO) const; + + /** Compute the camera projection matrix. + * \param pWidth The width of the output frame. + * \param pHeight The height of the output frame. + * \param pVerticalFOV Calculate FOV vertically (based on height) if true or horizontally (based on width) if false (Note: Only applicable in perspective proj). + * \return The camera projection matrix, or the default identity matrix in case of wrong camera parameters. */ + FbxMatrix ComputeProjectionMatrix(const int pWidth, const int pHeight, const bool pVerticalFOV = true) const; + + /** Determine if the given bounding box is in the camera's view. The input points do not need to be ordered in any particular way. + * \param pWorldToScreen The world to screen transformation. Please refer to FbxCamera::ComputeWorldToScreen. + * \param pWorldToCamera The world to camera transformation. Inverse of the matrix returned from FbxAnimEvaluator::GetNodeGlobalTransform is suitable. + * Please refer to FbxScene::GetEvaluator and FbxAnimEvaluator::GetNodeGlobalTransform. + * \param pPoints 8 corners of the bounding box. + * \return \c true if any of the given points are in the camera's view, \c false otherwise. */ + bool IsBoundingBoxInView(const FbxMatrix& pWorldToScreen, const FbxMatrix& pWorldToCamera, const FbxVector4 pPoints[8]) const; + + /** Determine if the given 3d point is in the camera's view. + * \param pWorldToScreen The world to screen transformation. Please refer to FbxCamera::ComputeWorldToScreen. + * \param pWorldToCamera The world to camera transformation. Inverse of the matrix returned from FbxAnimEvaluator::GetNodeGlobalTransform is suitable. + * Please refer to FbxScene::GetEvaluator and FbxAnimEvaluator::GetNodeGlobalTransform. + * \param pPoint World-space point to test. + * \return \c true if the given point is in the camera's view, \c false otherwise. */ + bool IsPointInView(const FbxMatrix& pWorldToScreen, const FbxMatrix& pWorldToCamera, const FbxVector4& pPoint) const; + + /** Compute world space to screen space transformation matrix. + * \param pPixelHeight The pixel height of the output image. + * \param pPixelWidth The pixel height of the output image. + * \param pWorldToCamera The world to camera affine transformation matrix. + * \return The world to screen space matrix, or the identity matrix on error. */ + FbxMatrix ComputeWorldToScreen(int pPixelWidth, int pPixelHeight, const FbxAMatrix& pWorldToCamera) const; + + /** Compute screen space to world space ray direction. + * \param pX The horizontal screen coordinate. + * \param pY The vertical screen coordinate. + * \param pWidth The width of the viewport in pixels. + * \param pHeight The height of the viewport in pixels. + * \param pTime The time to use to evaluate the camera's view matrix. + * \return a normalized vector corresponding to the ray direction. */ + FbxVector4 ComputeScreenToWorld(float pX, float pY, float pWidth, float pHeight, const FbxTime& pTime=FBXSDK_TIME_INFINITE) const; + //@} + + ////////////////////////////////////////////////////////////////////////// + // + // Properties + // + ////////////////////////////////////////////////////////////////////////// + + // ----------------------------------------------------------------------- + // Geometrical + // ----------------------------------------------------------------------- + + /** This property handles the camera's position (XYZ coordinates). + * + * To access this property do: Position.Get(). + * To set this property do: Position.Set(FbxDouble3). + * + * \remarks Default Value is (0.0, 0.0, 0.0). + */ + FbxPropertyT Position; + + /** This property handles the camera's Up Vector (XYZ coordinates). + * + * To access this property do: UpVector.Get(). + * To set this property do: UpVector.Set(FbxDouble3). + * + * \remarks Default Value is (0.0, 1.0, 0.0). + */ + FbxPropertyT UpVector; + + /** This property handles the default point (XYZ coordinates) the camera is looking at. + * + * To access this property do: InterestPosition.Get(). + * To set this property do: InterestPosition.Set(FbxDouble3). + * + * \remarks During the computations of the camera position + * and orientation, this property is overridden by the + * position of a valid target in the parent node. + * + * \remarks Default Value is (0.0, 0.0, 0.0). + */ + FbxPropertyT InterestPosition; + + /** This property handles the camera roll angle in degrees. + * + * To access this property do: Roll.Get(). + * To set this property do: Roll.Set(FbxDouble). + * + * Default value is 0.0. + */ + FbxPropertyT Roll; + + /** This property handles the camera optical center X, in pixels. + * It sets horizontal offset of the optical center. + * When the camera's aperture mode is set to \e eVertical, this property has no effect. + * + * To access this property do: OpticalCenterX.Get(). + * To set this property do: OpticalCenterX.Set(FbxDouble). + * + * Default value is 0.0. + */ + FbxPropertyT OpticalCenterX; + + /** This property handles the camera optical center Y, in pixels. + * It sets the vertical offset of the optical center. + * When the camera's aperture mode is set to \e eHorizontal, this property has no effect. + * + * To access this property do: OpticalCenterY.Get(). + * To set this property do: OpticalCenterY.Set(FbxDouble). + * + * Default value is 0.0. + */ + FbxPropertyT OpticalCenterY; + + /** This property handles the RGB values of the camera's background color. + * + * To access this property do: BackgroundColor.Get(). + * To set this property do: BackgroundColor.Set(FbxDouble3). + * + * Default value is black (0, 0, 0) + */ + FbxPropertyT BackgroundColor; + + /** When modeling 3D objects, you often need to review or evaluate your models during the creation process. + * You may create a camera with turn table animation to view your models in 360 or certain degrees. + * This property handles the camera's turn table angle in degrees. + * + * To access this property do: TurnTable.Get(). + * To set this property do: TurnTable.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT TurnTable; + + /** This property handles a flag that indicates if the camera displays the + * Turn Table icon or not. + * + * To access this property do: DisplayTurnTableIcon.Get(). + * To set this property do: DisplayTurnTableIcon.Set(FbxBool). + * + * Default value is false (no display). + */ + FbxPropertyT DisplayTurnTableIcon; + + // ----------------------------------------------------------------------- + // Motion Blur + // ----------------------------------------------------------------------- + + /** This property handles a flag that indicates if the camera uses + * motion blur or not. + * + * To access this property do: UseMotionBlur.Get(). + * To set this property do: UseMotionBlur.Set(FbxBool). + * + * Default value is false (do not use motion blur). + */ + FbxPropertyT UseMotionBlur; + + /** This property handles a flag that indicates if the camera uses + * real time motion blur or not. + * + * To access this property do: UseRealTimeMotionBlur.Get(). + * To set this property do: UseRealTimeMotionBlur.Set(FbxBool). + * + * Default value is false (use real time motion blur). + */ + FbxPropertyT UseRealTimeMotionBlur; + + /** This property handles the camera's motion blur intensity (in pixels). + * + * To access this property do: MotionBlurIntensity.Get(). + * To set this property do: MotionBlurIntensity.Set(FbxDouble). + * + * Default value is 1.0. + */ + FbxPropertyT MotionBlurIntensity; + + // ----------------------------------------------------------------------- + // Optical + // ----------------------------------------------------------------------- + + /** This property handles the camera's aspect ratio mode. + * + * \remarks This property is read-only. + * \remarks Please use function SetAspect() if you want to change its value. + * + * Default value is eWindowSize. + * + */ + FbxPropertyT AspectRatioMode; + + /** This property handles the camera's aspect width. + * + * \remarks This property is read-only. + * \remarks Please use function SetAspect() if you want to change its value. + * + * Default value is 320. + */ + FbxPropertyT AspectWidth; + + /** This property handles the camera's aspect height. + * + * \remarks This property is read-only. + * \remarks Please use function SetAspect() if you want to change its value. + * + * Default value is 200. + */ + FbxPropertyT AspectHeight; + + /** This property handles the pixel aspect ratio. + * + * \remarks This property is read-only. + * \remarks Please use function SetPixelRatio() if you want to change its value. + * + * Default value is 1. + * \remarks Value range is [0.050, 20.0]. + */ + FbxPropertyT PixelAspectRatio; + + /** This property handles the aperture mode. + * + * To access this property do: ApertureMode.Get(). + * To set this property do: ApertureMode.Set(EApertureMode). + * + * Default value is eVertical. + */ + FbxPropertyT ApertureMode; + + /** This property handles the gate fit mode. + * To control the size of the resolution gate relative to the film gate. + * If the resolution gate and the film gate have the same aspect ratio, then the property has no effect. + * + * To access this property do: GateFit.Get(). + * To set this property do: GateFit.Set(EGateFit). + * + * Default value is eFitNone. + */ + FbxPropertyT GateFit; + + /** This property handles the field of view in degrees. + * + * To access this property do: FieldOfView.Get(). + * To set this property do: FieldOfView.Set(FbxDouble). + * + * \remarks This property has meaning only when + * property ApertureMode equals eHorizontal or eVertical. + * + * \remarks Default value is 40. + * \remarks Value range is [1.0, 179.0]. + */ + FbxPropertyT FieldOfView; + + /** This property handles the X (horizontal) field of view in degrees. + * + * To access this property do: FieldOfViewX.Get(). + * To set this property do: FieldOfViewX.Set(FbxDouble). + * + * \remarks This property has meaning only when + * property ApertureMode equals eHorizAndVert. + * + * Default value is 1. + * \remarks Value range is [1.0, 179.0]. + */ + FbxPropertyT FieldOfViewX; + + /** This property handles the Y (vertical) field of view in degrees. + * + * To access this property do: FieldOfViewY.Get(). + * To set this property do: FieldOfViewY.Set(FbxDouble). + * + * \remarks This property has meaning only when + * property ApertureMode equals eHorizAndVert. + * + * \remarks Default value is 1. + * \remarks Value range is [1.0, 179.0]. + */ + FbxPropertyT FieldOfViewY; + + /** This property handles the focal length (in millimeters). + * + * To access this property do: FocalLength.Get(). + * To set this property do: FocalLength.Set(FbxDouble). + * + * Default value is the result of ComputeFocalLength(40.0). + */ + FbxPropertyT FocalLength; + + /** This property handles the camera's format. + * + * To access this property do: CameraFormat.Get(). + * To set this property do: CameraFormat.Set(EFormat). + * + * \remarks This property is read-only. + * \remarks Please use function SetFormat() if you want to change its value. + * + * Default value is eCustomFormat. + */ + FbxPropertyT CameraFormat; + + // ----------------------------------------------------------------------- + // Frame + // ----------------------------------------------------------------------- + + /** This property stores a flag that indicates to draw a border with color around the camera's viewable area or not. + * To access this property do: UseFrameColor.Get(). + * To set this property do: UseFrameColor.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT UseFrameColor; + + /** This property is used to define the color of the border around the camera view. + * + * To access this property do: FrameColor.Get(). + * To set this property do: FrameColor.Set(FbxDouble3). + * + * Default value is (0.3, 0.3, 0.3). + */ + FbxPropertyT FrameColor; + + // ----------------------------------------------------------------------- + // On Screen Display + // ----------------------------------------------------------------------- + + /** This property handles the flag to show the camera's name or not. + * + * To access this property do: ShowName.Get(). + * To set this property do: ShowName.Set(FbxBool). + * + * Default value is true. + */ + FbxPropertyT ShowName; + + /** This property handles the flag to show info on moving or not. + * + * To access this property do: ShowInfoOnMoving.Get(). + * To set this property do: ShowInfoOnMoving.Set(FbxBool). + * + * Default value is true. + */ + FbxPropertyT ShowInfoOnMoving; + + /** This property handles the flag to draw floor grid or not. + * + * To access this property do: ShowGrid.Get(). + * To set this property do: ShowGrid.Set(FbxBool). + * + * Default value is true. + */ + FbxPropertyT ShowGrid; + + /** This property handles the flag to show optical center or not. + * + * To access this property do: ShowOpticalCenter.Get(). + * To set this property do: ShowOpticalCenter.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT ShowOpticalCenter; + + /** This property handles the flag to show the camera's sight line or not. + * When the camera is revolved about the center of interest in the perspective view, + * the angle of a camera's sight line relative to a plane perpendicular to the ground plane is referred to as its azimuth; + * and the angle of a camera's sight line relative to the ground plane is referred to as its elevation; + * + * To access this property do: ShowAzimut.Get(). + * To set this property do: ShowAzimut.Set(FbxBool). + * + * Default value is true. + */ + FbxPropertyT ShowAzimut; + + /** This property handles the flag to show time code or not. + * + * To access this property do: ShowTimeCode.Get(). + * To set this property do: ShowTimeCode.Set(FbxBool). + * + * Default value is true. + */ + FbxPropertyT ShowTimeCode; + + /** This property handles the flag to show audio or not. + * + * To access this property do: ShowAudio.Get(). + * To set this property do: ShowAudio.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT ShowAudio; + + /** This property handles audio color. + * + * To access this property do: AudioColor.Get(). + * To set this property do: AudioColor.Set(FbxDouble3). + * + * Default value is (0.0, 1.0, 0.0). + */ + FbxPropertyT AudioColor; + + // ----------------------------------------------------------------------- + // Clipping Planes + // ----------------------------------------------------------------------- + + /** This property handles the near plane distance. + * + * \remarks This property is read-only. + * \remarks Please use function SetNearPlane() if you want to change its value. + * + * Default value is 10. + * \remarks Value range is [0.001, 600000.0]. + */ + FbxPropertyT NearPlane; + + /** This property handles the far plane distance. + * + * \remarks This property is read-only. + * \remarks Please use function SetFarPlane() if you want to change its value. + * + * Default value is 4000. + * \remarks Value range is [0.001, 600000.0]. + */ + FbxPropertyT FarPlane; + + /** This property indicates that the clip planes should be automatically computed or not. + * + * To access this property do: AutoComputeClipPlanes.Get(). + * To set this property do: AutoComputeClipPlanes.Set(FbxBool). + * + * When this property is set to true, the NearPlane and FarPlane values are + * ignored. Note that not all applications support this flag. + */ + FbxPropertyT AutoComputeClipPlanes; + + + // ----------------------------------------------------------------------- + // Camera Film Setting + // ----------------------------------------------------------------------- + + /** This property handles the film aperture width (in inches). + * + * \remarks This property is read-only. + * \remarks Please use function SetApertureWidth() + * or SetApertureFormat() if you want to change its value. + * + * Default value is 0.8160. + * \remarks Value range is [0.0001, +inf). + */ + FbxPropertyT FilmWidth; + + /** This property handles the film aperture height (in inches). + * + * \remarks This property is read-only. + * \remarks Please use function SetApertureHeight() + * or SetApertureFormat() if you want to change its value. + * + * Default value is 0.6120. + * \remarks Value range is [0.0001, +inf). + */ + FbxPropertyT FilmHeight; + + /** This property handles the film aperture aspect ratio. + * + * \remarks This property is read-only. + * \remarks Please use function SetApertureFormat() if you want to change its value. + * + * Default value is (FilmWidth / FilmHeight). + * \remarks Value range is [0.0001, +inf). + */ + FbxPropertyT FilmAspectRatio; + + /** This property handles the film aperture squeeze ratio. + * + * \remarks This property is read-only. + * \remarks Please use function SetSqueezeRatio() + * or SetApertureFormat() if you want to change its value. + * + * Default value is 1.0. + * \remarks Value range is [0.0001, +inf). + */ + FbxPropertyT FilmSqueezeRatio; + + /** This property handles the film aperture format. + * + * \remarks This property is read-only. + * \remarks Please use function SetApertureFormat() + * if you want to change its value. + * + * Default value is eCustomAperture. + */ + FbxPropertyT FilmFormat; + + /** This property handles the horizontal offset from the center of the film aperture, + * defined by the film height and film width. The offset is measured in inches. + * + * To access this property do: FilmOffsetX.Get(). + * To set this property do: FilmOffsetX.Set(FbxDouble). + * + * Default value is 0.0. + */ + FbxPropertyT FilmOffsetX; + + /** This property handles the vertical offset from the center of the film aperture, + * defined by the film height and film width. The offset is measured + * in inches. + * + * To access this property do: FilmOffsetY.Get(). + * To set this property do: FilmOffsetY.Set(FbxDouble). + * + * Default value is 0.0. + */ + FbxPropertyT FilmOffsetY; + + /** This property handles the pre-scale value. + * The value is multiplied against the computed projection matrix. + * It is applied before the film roll. + * + * To access this property do: PreScale.Get(). + * To set this property do: PreScale.Set(FbxDouble). + * + * Default value is 1.0. + */ + FbxPropertyT PreScale; + + /** This property handles the horizontal film horizontal translation. + * To access this property do: FilmTranslateX.Get(). + * To set this property do: FilmTranslateX.Set(FbxDouble). + * Default value is 0.0 + */ + FbxPropertyT FilmTranslateX; + + /** This property handles the vertical film translation. + * + * To access this property do: FilmTranslateY.Get(). + * To set this property do: FilmTranslateY.Set(FbxDouble). + * + * Default value is 0.0. + */ + FbxPropertyT FilmTranslateY; + + /** This property handles the horizontal pivot point used for rotating the film back. + * + * To access this property do: FilmRollPivotX.Get(). + * To set this property do: FilmRollPivotX.Set(FbxDouble). + * + * Default value is 0.0. + * \remarks FilmRollPivot value is used to compute the film roll matrix, which is a component of the post projection matrix. + */ + FbxPropertyT FilmRollPivotX; + + /** This property handles the vertical pivot point used for rotating the film back. + * + * To access this property do: FilmRollPivotY.Get(). + * To set this property do: FilmRollPivotY.Set(FbxDouble). + * + * Default value is 0.0. + * \remarks FilmRollPivot value is used to compute the film roll matrix, which is a component of the post projection matrix. + */ + FbxPropertyT FilmRollPivotY; + + /** This property handles the amount of rotation around the film back. + * The roll value is specified in degrees. + * + * To access this property do: FilmRollValue.Get(). + * To set this property do: FilmRollValue.Set(FbxDouble). + * + * Default value is 0.0. + * \remarks The rotation occurs around the specified pivot point, + * this value is used to compute a film roll matrix, which is a component of the post-projection matrix. + */ + FbxPropertyT FilmRollValue; + + /** This property handles how the roll is applied with respect to the pivot value. + * eRotateFirst The film back is first rotated then translated by the pivot point value. + * eTranslateFirst The film back is first translated then rotated by the film roll value. + * + * To access this property do: FilmRollOrder.Get(). + * To set this property do: FilmRollOrder.Set(EFilmRollOrder). + * + * Default value is eRotateFirst. + */ + FbxPropertyT FilmRollOrder ; + + // ----------------------------------------------------------------------- + // Camera View Widget Option + // ----------------------------------------------------------------------- + + /** This property handles the camera's look-at flag. + * If this flag is on, the camera will look at the camera interest. + * + * To access this property do: ViewCameraToLookAt.Get(). + * To set this property do: ViewCameraToLookAt.Set(FbxBool). + * + * Default value is true. + */ + FbxPropertyT ViewCameraToLookAt; + + /** This property handles to display the near and far plane or not. + * + * To access this property do: ViewFrustumNearFarPlane.Get(). + * To set this property do: ViewFrustumNearFarPlane.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT ViewFrustumNearFarPlane; + + /** This property handles the back plane display mode. + * + * To access this property do: ViewFrustumBackPlaneMode.Get(). + * To set this property do: ViewFrustumBackPlaneMode.Set(EFrontBackPlaneDisplayMode). + * + * Default value is ePlanesWhenMedia. + */ + FbxPropertyT ViewFrustumBackPlaneMode; + + /** This property handles the back plane distance. + * + * To access this property do: BackPlaneDistance.Get(). + * To set this property do: BackPlaneDistance.Set(FbxDouble). + * + * Default value is 100.0. + */ + FbxPropertyT BackPlaneDistance; + + /** This property handles the back plane distance mode. + * + * To access this property do: BackPlaneDistanceMode.Get(). + * To set this property do: BackPlaneDistanceMode.Set(EFrontBackPlaneDistanceMode). + * + * Default value is eRelativeToInterest. + */ + FbxPropertyT BackPlaneDistanceMode; + + /** This property handles the front plane mode. + * + * To access this property do: ViewFrustumFrontPlaneMode.Get(). + * To set this property do: ViewFrustumFrontPlaneMode.Set(EFrontBackPlaneDisplayMode). + * + * Default value is ePlanesWhenMedia. + */ + FbxPropertyT ViewFrustumFrontPlaneMode; + + /** This property handles the front plane distance. + * + * To access this property do: FrontPlaneDistance.Get(). + * To set this property do: FrontPlaneDistance.Set(FbxDouble). + * + * Default value is 100.0. + */ + FbxPropertyT FrontPlaneDistance; + + /** This property handles the front plane distance mode. + * + * To access this property do: FrontPlaneDistanceMode.Get(). + * To set this property do: FrontPlaneDistanceMode.Set(EFrontBackPlaneDistanceMode). + * + * Default value is eRelativeToInterest. + */ + FbxPropertyT FrontPlaneDistanceMode; + + // ----------------------------------------------------------------------- + // Camera Lock Mode + // ----------------------------------------------------------------------- + + /** This property handles the flag to lock the camera's navigation. + * When this flag is on, the camera's view can not be changed anymore. + * To access this property do: LockMode.Get(). + * To set this property do: LockMode.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT LockMode; + + /** This property handles the flag to lock the camera interest's navigation. + * When this flag is one, the position of the camera interest is locked. + * To access this property do: LockInterestNavigation.Get(). + * To set this property do: LockInterestNavigation.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT LockInterestNavigation; + + // ----------------------------------------------------------------------- + // Background Image Display Options + // ----------------------------------------------------------------------- + + /** This property handles the fit image flag of back plane. + * + * To access this property do: BackPlateFitImage.Get(). + * To set this property do: BackPlateFitImage.Set(FbxBool). + * + * Default value is false. + * \see SetFitImage and GetFitImage. + */ + FbxPropertyT BackPlateFitImage; + + /** This property handles the crop flag of back plane. + * + * To access this property do: BackPlateCrop.Get(). + * To set this property do: BackPlateCrop.Set(FbxBool). + * + * Default value is false. + * \see SetCrop and GetCrop. + */ + FbxPropertyT BackPlateCrop; + + /** This property handles the center flag of back plane. + * + * To access this property do: BackPlateCenter.Get(). + * To set this property do: BackPlateCenter.Set(FbxBool). + * + * Default value is true. + * see SetCenter and GetCenter. + */ + FbxPropertyT BackPlateCenter; + + /** This property handles the keep ratio flag of back plane. + * + * To access this property do: BackPlateKeepRatio.Get(). + * To set this property do: BackPlateKeepRatio.Set(FbxBool). + * + * Default value is true. + * \see SetKeepRatio and GetKeepRatio. + */ + FbxPropertyT BackPlateKeepRatio; + + /** This property handles the background alpha threshold value. + * + * To access this property do: BackgroundAlphaTreshold.Get(). + * To set this property do: BackgroundAlphaTreshold.Set(FbxDouble). + * + * Default value is 0.5. + */ + FbxPropertyT BackgroundAlphaTreshold; + + /** This property handles the back plane offset X. + * + * To access this property do: BackPlaneOffsetX.Get(). + * To set this property do: BackPlaneOffsetX.Set(FbxDouble). + * + * Default value is 0.0. + */ + FbxPropertyT BackPlaneOffsetX; + + /** This property handles the back plane offset Y. + * + * To access this property do: BackPlaneOffsetY.Get(). + * To set this property do: BackPlaneOffsetY.Set(FbxDouble). + * + * Default value is 0.0. + */ + FbxPropertyT BackPlaneOffsetY; + + /** This property handles the back plane rotation. + * + * To access this property do: BackPlaneRotation.Get(). + * To set this property do: BackPlaneRotation.Set(FbxDouble). + * + * Default value is 0.0. + */ + FbxPropertyT BackPlaneRotation; + + /** This property handles the back plane scaling X. + * + * To access this property do: BackPlaneScaleX.Get(). + * To set this property do: BackPlaneScaleX.Set(FbxDouble). + * + * Default value is 1.0. + * \remarks The application manipulating the camera has to take into consideration of + * the BackPlateKeepRatio value too. + */ + FbxPropertyT BackPlaneScaleX; + + /** This property handles the back plane scaling Y. + * + * To access this property do: BackPlaneScaleY.Get(). + * To set this property do: BackPlaneScaleY.Set(FbxDouble). + * + * Default value is 1.0. + * \remarks The application manipulating the camera has to take into consideration of + * the BackPlateKeepRatio value too. + */ + FbxPropertyT BackPlaneScaleY; + + /** This property handles the flag to show back plane or not. + * + * To access this property do: ShowBackPlate.Get(). + * To set this property do: ShowBackPlate.Set(FbxBool). + * + * Default value is false. + * \remarks This replaces ForegroundTransparent. + */ + FbxPropertyT ShowBackplate; + + /** This property has the background texture connected to it. + * + * To access this property do: BackgroundTexture.Get(). + * To set this property do: BackgroundTexture.Set(). + * + * \remarks The background texture is connected as source object. + */ + FbxPropertyT BackgroundTexture; + + + // ----------------------------------------------------------------------- + // Foreground Image Display Options + // ----------------------------------------------------------------------- + + /** This property handles the fit image flag of front plate. + * + * To access this property do: FrontPlateFitImage.Get(). + * To set this property do: FrontPlateFitImage.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT FrontPlateFitImage; + + /** This property handles the crop flag of front plane. + * + * To access this property do: FrontPlateCrop.Get(). + * To set this property do: FrontPlateCrop.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT FrontPlateCrop; + + /** This property handles the center flag of front plane. + * + * To access this property do: FrontPlateCenter.Get(). + * To set this property do: FrontPlateCenter.Set(FbxBool). + * + * Default value is true. + */ + FbxPropertyT FrontPlateCenter; + + /** This property handles the keep ratio flag of front plane. + * + * To access this property do: FrontPlateKeepRatio.Get(). + * To set this property do: FrontPlateKeepRatio.Set(FbxBool). + * + * Default value is true. + */ + FbxPropertyT FrontPlateKeepRatio; + + + /** This property handles the flag to show front plane or not. + * + * To access this property do: ShowFrontplate.Get(). + * To set this property do: ShowFrontplate.Set(FbxBool). + * + * Default value is false. + * \remarks This replaces ForegroundTransparent. + */ + FbxPropertyT ShowFrontplate; + + /** This property handles the front plane offset X. + * + * To access this property do: FrontPlaneOffsetX.Get(). + * To set this property do: FrontPlaneOffsetX.Set(FbxDouble). + * + * Default value is 0.0. + */ + FbxPropertyT FrontPlaneOffsetX; + + /** This property handles the front plane offset Y. + * + * To access this property do: FrontPlaneOffsetY.Get(). + * To set this property do: FrontPlaneOffsetY.Set(FbxDouble). + * + * Default value is 0.0. + */ + FbxPropertyT FrontPlaneOffsetY; + + /** This property handles the front plane rotation. + * + * To access this property do: FrontPlaneRotation.Get(). + * To set this property do: FrontPlaneRotation.Set(FbxDouble). + * + * Default value is 0.0. + */ + FbxPropertyT FrontPlaneRotation; + + /** This property handles the front plane scaling X. + * + * To access this property do: FrontPlaneScaleX.Get(). + * To set this property do: FrontPlaneScaleX.Set(FbxDouble). + * + * Default value is 1.0. + */ + FbxPropertyT FrontPlaneScaleX; + + /** This property handles the front plane scaling Y. + * + * To access this property do: FrontPlaneScaleY.Get(). + * To set this property do: FrontPlaneScaleY.Set(FbxDouble). + * + * Default value is 1.0. + */ + FbxPropertyT FrontPlaneScaleY; + + /** This property has the foreground texture connected to it. + * + * To access this property do: ForegroundTexture.Get(). + * To set this property do: ForegroundTexture.Set(). + * + * \remarks The foreground texture is connected as source object. + */ + FbxPropertyT ForegroundTexture; + + /** This property handles the foreground image opacity value. + * + * To access this property do: ForegroundOpacity.Get(). + * To set this property do: ForegroundOpacity.Set(FbxDouble). + * + * Default value is 1.0. + */ + FbxPropertyT ForegroundOpacity; + + // ----------------------------------------------------------------------- + // Safe Area + // ----------------------------------------------------------------------- + + /** This property handles the flag to display safe area or not. + * + * To access this property do: DisplaySafeArea.Get(). + * To set this property do: DisplaySafeArea.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT DisplaySafeArea; + + /** This property handles the flag display safe area on render or not. + * + * To access this property do: DisplaySafeAreaOnRender.Get(). + * To set this property do: DisplaySafeAreaOnRender.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT DisplaySafeAreaOnRender; + + /** This property handles the style to display safe area. + * + * To access this property do: SafeAreaDisplayStyle.Get(). + * To set this property do: SafeAreaDisplayStyle.Set(ESafeAreaStyle). + * + * Default value is eSafeAreaSquare. + */ + FbxPropertyT SafeAreaDisplayStyle; + + /** This property handles the display aspect ratio of safe area. + * + * To access this property do: SafeAreaDisplayStyle.Get(). + * To set this property do: SafeAreaAspectRatio.Set(FbxDouble). + * + * Default value is 1.33333333333333. + */ + FbxPropertyT SafeAreaAspectRatio; + + // ----------------------------------------------------------------------- + // 2D Magnifier + // ----------------------------------------------------------------------- + + /** This property handles the flag to use 2d magnifier zoom or not. + * The 2D Magnifier lets you perform a 2D enlargement of the scene using the + * current camera without changing any camera settings. + * + * To access this property do: Use2DMagnifierZoom.Get(). + * To set this property do: Use2DMagnifierZoom.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT Use2DMagnifierZoom; + + /** This property handles the 2d magnifier zoom value. + * + * To access this property do: _2DMagnifierZoom.Get(). + * To set this property do: _2DMagnifierZoom.Set(FbxDouble). + * + * Default value is 100.0. + */ + FbxPropertyT _2DMagnifierZoom; + + /** This property handles the 2d magnifier X value. + * + * To access this property do: _2DMagnifierX.Get(). + * To set this property do: _2DMagnifierX.Set(FbxDouble). + * + * Default value is 50.0. + */ + FbxPropertyT _2DMagnifierX; + + /** This property handles the 2d magnifier Y value. + * + * To access this property do: _2DMagnifierY.Get(). + * To set this property do: _2DMagnifierY.Set(FbxDouble). + * + * Default value is 50.0. + */ + FbxPropertyT _2DMagnifierY; + + // ----------------------------------------------------------------------- + // Projection Type: Ortho, Perspective + // ----------------------------------------------------------------------- + + /** This property handles the projection type. + * + * To access this property do: ProjectionType.Get(). + * To set this property do: ProjectionType.Set(EProjectionType). + * + * Default value is ePerspective. + */ + FbxPropertyT ProjectionType; + + /** This property handles the orthographic zoom value. + * + * To access this property do: OrthoZoom.Get(). + * To set this property do: OrthoZoom.Set(FbxDouble). + * + * Default value is 1.0. + */ + FbxPropertyT OrthoZoom; + + // ----------------------------------------------------------------------- + // Depth Of Field & Anti Aliasing + // ----------------------------------------------------------------------- + + /** This property handles the flag to use real time Depth of Field and Anti-Aliasing or not. + * + * To access this property do: UseRealTimeDOFAndAA.Get(). + * To set this property do: UseRealTimeDOFAndAA.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT UseRealTimeDOFAndAA; + + /** This property handles the flag to use depth of field or not. + * + * To access this property do: UseDepthOfField.Get(). + * To set this property do: UseDepthOfField.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT UseDepthOfField; + + /** This property handles the focus source. + * + * To access this property do: FocusSource.Get(). + * To set this property do: FocusSource.Set(EFocusDistanceSource). + * + * Default value is eFocusSrcCameraInterest. + * \see FocusDistance. + */ + FbxPropertyT FocusSource; + + /** This property handles the focus angle (in degrees). + * + * To access this property do: FocusAngle.Get(). + * To set this property do: FocusAngle.Set(FbxDouble). + * + * Default value is 3.5. + */ + FbxPropertyT FocusAngle; + + /** This property handles the focus distance. + * Focus distance is the distance between the camera and the object on which the camera is focused. + * There are two possible sources for this distance. + * \see EFocusDistanceSource + * + * To access this property do: FocusDistance.Get(). + * To set this property do: FocusDistance.Set(FbxDouble). + * + * Default value is 200.0. + */ + FbxPropertyT FocusDistance; + + /** This property handles the flag to use anti aliasing or not. + * + * To access this property do: UseAntialiasing.Get(). + * To set this property do: UseAntialiasing.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT UseAntialiasing; + + /** This property handles the anti aliasing intensity. + * + * To access this property do: AntialiasingIntensity.Get(). + * To set this property do: AntialiasingIntensity.Set(FbxDouble). + * + * Default value is 0.77777. + */ + FbxPropertyT AntialiasingIntensity; + + /** This property handles the anti aliasing method. + * + * To access this property do: AntialiasingMethod.Get(). + * To set this property do: AntialiasingMethod.Set(EAntialiasingMethod). + * + * Default value is eAAOversampling. + */ + FbxPropertyT AntialiasingMethod; + + // ----------------------------------------------------------------------- + // Accumulation Buffer + // ----------------------------------------------------------------------- + + /** This property handles the flag to use accumulation buffer or not. + * + * To access this property do: UseAccumulationBuffer.Get(). + * To set this property do: UseAccumulationBuffer.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT UseAccumulationBuffer; + + /** This property handles the frame sampling count. + * + * To access this property do: FrameSamplingCount.Get(). + * To set this property do: FrameSamplingCount.Set(FbxInt). + * + * Default value is 7. + */ + FbxPropertyT FrameSamplingCount; + + /** This property handles the frame sampling type. + * + * To access this property do: FrameSamplingType.Get(). + * To set this property do: FrameSamplingType.Set(ESamplingType). + * + * Default value is eSamplingStochastic. + */ + FbxPropertyT FrameSamplingType; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + +protected: + virtual void ConstructProperties(bool pForceSet); + virtual FbxStringList GetTypeFlags() const; + +private: + double ComputePixelRatio(FbxUInt pWidth, FbxUInt pHeight, double pScreenRatio = 1.3333333333); + + // Background Properties + FbxString mBackgroundMediaName; + FbxString mBackgroundFileName; + + // Foreground Properties + FbxString mForegroundMediaName; + FbxString mForegroundFileName; + + FbxVector4 mLastUp; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +inline EFbxType FbxTypeOf(const FbxCamera::EAntialiasingMethod&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCamera::EApertureFormat&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCamera::EApertureMode&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCamera::EAspectRatioMode&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCamera::EFrontBackPlaneDisplayMode&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCamera::EFrontBackPlaneDistanceMode&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCamera::EPlateDrawingMode&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCamera::EFocusDistanceSource&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCamera::EFormat&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCamera::EGateFit&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCamera::EProjectionType&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCamera::ERenderOptionsUsageTime&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCamera::ESafeAreaStyle&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCamera::ESamplingType&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxCamera::EFilmRollOrder&){ return eFbxEnum; } + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_CAMERA_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxcamerastereo.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxcamerastereo.h new file mode 100644 index 00000000..171b273d --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxcamerastereo.h @@ -0,0 +1,245 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcamerastereo.h +#ifndef _FBXSDK_SCENE_GEOMETRY_CAMERA_STEREO_H_ +#define _FBXSDK_SCENE_GEOMETRY_CAMERA_STEREO_H_ + +#include + +#include + +#include + +/** This node attribute contains methods for accessing the properties of a stereo camera. + * \nosubgrouping + * Generally, a set of stereoRig contains the center camera, the left camera and the right camera. + * FbxCameraStereo is used to represent the center camera. The left and right camera could be FbxCamera. + * FbxCameraStereo contains stereo properties. + * The left and right camera can also be get and set via related methods in FbxCameraStereo class. + * \see FbxCamera and FbxCameraSwitcher. + */ +class FBXSDK_DLL FbxCameraStereo : public FbxCamera +{ + FBXSDK_OBJECT_DECLARE(FbxCameraStereo, FbxCamera); + +public: + //! Return the type of node attribute which is EType::eCameraStereo. + virtual FbxNodeAttribute::EType GetAttributeType() const; + + //! Reset the stereo camera to default values. + void Reset(); + + /** Types of Stereo camera. + */ + enum EStereoType + { + eNone, //!< Disable the stereo effect.(Default value) + eConverged, //!< Computes the zero parallax plane by toeing in the cameras. + eOffAxis, //!< Computes the convergence plane by shifting the frustum using camera film back. + eParallel //!< A parallel camera setup where there is effectively no convergence plane. + }; + + /** Get the left camera which connect to property LeftCamera. + * \return A pointer to FbxCamera. + * \remarks Current FbxCameraStereo should work with two FbxCamera, left camera and right camera. + * Use this method to get the left camera. + */ + FbxCamera* GetLeftCamera() const; + + /** Get the right camera which connect to property RightCamera. + * \return A pointer to FbxCamera. + * \remarks Current FbxCameraStereo should work with two FbxCamera, left camera and right camera. + * Use this method to get the right camera. + */ + FbxCamera* GetRightCamera() const; + + /** Set the left camera, connect property LeftCamera to pCamera. + * \param pCamera The camera to set. + * \return \c true if it's successful, \c false otherwise. + * \remarks Current FbxCameraStereo should work with two FbxCamera, left camera and right camera. + * Use this method to set the left camera. + */ + bool SetLeftCamera(FbxCamera* pCamera); + + /** Set the right camera, connect property RightCamera to pCamera. + * \param pCamera The camera to set. + * \return \c true if it's successful, \c false otherwise. + * \remarks Current FbxCameraStereo should work with two FbxCamera, left camera and right camera. + * Use this method to set the right camera. + */ + bool SetRightCamera(FbxCamera* pCamera); + + /** Get the local transformation matrix of left camera. + * \return The local transformation matrix of left camera. + * \remarks Use this method to reevaluate the local transformation of left camera. + */ + FbxAMatrix GetLeftCameraLocalMatrix() const; + + /** Get the global matrix of left camera. + * \return The global transformation matrix of left camera. + * \remarks Use this method to reevaluate the global transformation of left camera. + */ + FbxAMatrix GetLeftCameraGlobalMatrix() const; + + /** Get the local transformation matrix of right camera. + * \return The local transformation matrix of right camera.. + * \remarks Use this method to reevaluate the local transformation of right camera. + */ + FbxAMatrix GetRightCameraLocalMatrix() const; + + /** Get the global transformation matrix of right camera. + * \return The global transformation matrix of right camera. + * \remarks Use this method to reevaluate the global transformation of right camera. + */ + FbxAMatrix GetRightCameraGlobalMatrix() const; + + /** Reevaluate the FilmOffsetX of left camera. + * It's computed through stereo camera properties. + * \return Current FilmOffsetX value. + * \remarks This method does not set the FilmOffsetX of left camera. + */ + double ReevaluateLeftCameraFilmOffsetX() const; + + /** Reevaluate the FilmOffsetX of right camera. + * It's computed through stereo camera properties. + * \return Current FilmOffsetX value. + * \remarks this method does not set the FilmOffsetX of right camera + */ + double ReevaluateRightCameraFilmOffsetX() const; + + ////////////////////////////////////////////////////////////////////////// + // + // Properties + // + ////////////////////////////////////////////////////////////////////////// + + // ----------------------------------------------------------------------- + // Stereo and Stereo Adjustments + // ----------------------------------------------------------------------- + + /** This property handles the types of Stereo camera. + * + * To access this property do: Stereo.Get(). + * To set this property do: Stereo.Set(EStereoType). + * + * \remarks Default Value is eNone. + */ + FbxPropertyT Stereo; + + /** This property handles the distance between left and right cameras. + * + * To access this property do: InteraxialSeparation.Get(). + * To set this property do: InteraxialSeparation.Set(FbxDouble). + * + * \remarks Default Value is 0.0. + */ + FbxPropertyT InteraxialSeparation; + + /** This property handles the distance on the camera view axis where the zero parallax plane occurs. + * + * To access this property do: ZeroParallax.Get(). + * To set this property do: ZeroParallax.Set(FbxDouble). + * + * \remarks Default Value is 0.0. + */ + FbxPropertyT ZeroParallax; + + /** This property is to offset the computed toe-in effect when it's in Converged mode. + * + * To access this property do: ToeInAdjust.Get(). + * To set this property do: ToeInAdjust.Set(FbxDouble). + * + * \remarks Default Value is 0.0. + * This value is specified in degrees and acts as an offset to the computed toe-in. + * \see EStereoType. + */ + FbxPropertyT ToeInAdjust; + + /** This property handles the film offset for the right camera. + * + * To access this property do: FilmOffsetRightCam.Get(). + * To set this property do: FilmOffsetRightCam.Set(FbxDouble). + * + * \remarks Default Value is 0.0. + */ + FbxPropertyT FilmOffsetRightCam; + + /** This property handles the film offset for the left camera. + * + * To access this property do: FilmOffsetLeftCam.Get(). + * To set this property do: FilmOffsetLeftCam.Set(FbxDouble). + * + * \remarks Default Value is 0.0. + */ + FbxPropertyT FilmOffsetLeftCam; + + /** This property has the right camera connected to it. + * + * To access this property do: GetRightCamera(). + * To set this property do: SetRightCamera(FbxCamera* pCamera). + * + * \remarks The right camera is connected as source object. + */ + FbxPropertyT RightCamera; + + /** This property has the left camera connected to it. + * + * To access this property do: GetLeftCamera(). + * To set this property do: SetLeftCamera(FbxCamera* pCamera). + * + * \remarks The left camera is connected as source object. + */ + FbxPropertyT LeftCamera; + + /** This property handles the precomp file name + * + * To access this property do: PrecompFileName.Get(). + * To set this property do: PrecompFileName.Set(FbxString). + * + * Default value is "" + */ + FbxPropertyT PrecompFileName; + + /** This property handles the relative precomp file name + * + * To access this property do: RelativePrecompFileName.Get(). + * To set this property do: RelativePrecompFileName.Set(FbxString). + * + * Default value is "" + */ + FbxPropertyT RelativePrecompFileName; + + /** connect left and right camera property to stereo camera. + * \return true if it's successful, otherwise return false. + * \remarks It's used to connect the left/right camera property [FocalLength, FarPlane, NearPlane, FilmWidth, + * FilmHeight, FilmSqueezeRatio] to stereo camera. + * During FBX SDK reevaluating, if ConnectProperties is called, + * to get the newest FocalLength property of left camera, please use lLeft_Camera->FocalLength.GetSrcProperty(); + */ + bool ConnectProperties(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void ConstructProperties(bool pForceSet); + + virtual FbxStringList GetTypeFlags() const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +inline EFbxType FbxTypeOf(const FbxCameraStereo::EStereoType&){ return eFbxEnum; } + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_CAMERA_STEREO_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxcameraswitcher.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxcameraswitcher.h new file mode 100644 index 00000000..698b0378 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxcameraswitcher.h @@ -0,0 +1,101 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcameraswitcher.h +#ifndef _FBXSDK_SCENE_GEOMETRY_CAMERA_SWITCHER_H_ +#define _FBXSDK_SCENE_GEOMETRY_CAMERA_SWITCHER_H_ + +#include + +#include +#include + +#include + +/** This node attribute contains methods for accessing the properties of a camera switcher. + * The camera switcher is a concept of Motion Builder. + * The camera switcher lets you switch between the custom cameras placed in your scene so you can create an animation using multiple camera angles. + * Custom cameras are cameras which created by users, while the default cameras are top, bottom, left, right, front, back and perspective camera. + * The Camera switcher contains the custom cameras you have created. If you have no custom cameras created in your scene, the Camera switcher is empty. + * Please read Motion Builder documentation for more details. + * \nosubgrouping + * \see FbxCamera and FbxCameraStereo. + */ +class FBXSDK_DLL FbxCameraSwitcher : public FbxNodeAttribute +{ + FBXSDK_OBJECT_DECLARE(FbxCameraSwitcher,FbxNodeAttribute); + + public: + /** + * \name Properties + */ + //@{ + /** This property handles the index of camera. + * + * Default value is 1. + */ + FbxPropertyT CameraIndex; + //@} + + //! Return the type of node attribute which is EType::eCameraSwitcher. + virtual FbxNodeAttribute::EType GetAttributeType() const; + + /** + * \name Default Animation Values. + * These functions provides direct access to default animation values specific to a camera switcher. The default animation + * values are found in the default take node of the associated node. These functions only work if the camera switcher has been + * associated with a node. + * + * Camera indices start at 1. Out of range indices are clamped between 1 and the number of cameras in the scene. The index of a + * camera refers to its order of appearance when searching the node tree depth first. + */ + //@{ + + /** Get default camera index. + * \return Camera index. The return value is an integer between 1 and the number + * of cameras in the scene, or 0 if there are no default camera set in the camera switcher. + */ + int GetDefaultCameraIndex() const; + + /** Set default camera index. + * \param pIndex The index of the camera to set as default. This parameter has an integer + * scale from 1 to the number of cameras in the scene. Its default value is 1 if + * there is at least one camera in the camera switcher, 0 if there are none. + * No validation checks are made. + */ + void SetDefaultCameraIndex(int pIndex); + + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + +protected: + virtual void Destruct(bool pRecursive); + virtual void ConstructProperties(bool pForceSet); + +public: + void AddCameraName(char* pCameraName); + char* GetCameraName(FbxUInt pIndex) const; + FbxUInt GetCameraNameCount() const; + void ClearCameraNames(); + +protected: + FbxArray mCameraNameList; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_CAMERA_SWITCHER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxcluster.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxcluster.h new file mode 100644 index 00000000..be63c2f2 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxcluster.h @@ -0,0 +1,295 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxcluster.h +#ifndef _FBXSDK_SCENE_GEOMETRY_CLUSTER_H_ +#define _FBXSDK_SCENE_GEOMETRY_CLUSTER_H_ + +#include + +#include + +#include + +/** Class for clusters (links). + * A cluster, or link, is an entity acting on a geometry (FbxGeometry). + * More precisely, the cluster acts on a subset of the geometry's control points. + * For each control point that the cluster acts on, the intensity of the cluster's + * action is modulated by a weight. The link mode (ELinkMode) specifies how + * the weights are taken into account. + * + * The cluster's link node specifies the node (FbxNode) that influences the + * control points of the cluster. If the node is animated, the control points + * will move accordingly. + * + * A cluster is usually part of a skin (\see FbxDeformer, FbxSkin). For example, + * imagine a mesh representing a humanoid, and imagine a skeleton made of bones. + * Each bone is represented by a node in FBX. + * To bind the geometry to the nodes, + * we create a skin (FbxSkin). The skin has many clusters, each one corresponding + * to a bone. + * Each node influences some control + * points of the mesh. A node has a high influence on some of the points (high weight) + * and lower influence on some other points (low weight). Some points of the mesh + * are not affected at all by the bone, so they would not be part of the corresponding + * cluster. + * + *\nosubgrouping + */ +class FBXSDK_DLL FbxCluster : public FbxSubDeformer +{ + FBXSDK_OBJECT_DECLARE(FbxCluster,FbxSubDeformer); + +public: + /** + * \name General Functions + */ + //@{ + /** Get the type of the sub deformer. + * \return SubDeformer type identifier: eCluster. + */ + EType GetSubDeformerType() const {return eCluster; }; + + /** Restore the cluster to its initial state. + * Calling this function will clear the following: + * \li Pointer to linked node. + * \li Pointer to associate model. + * \li Control point indices and weights. + * \li Transformation matrices. + */ + void Reset(); + //@} + /** + * \name Link Mode, Link Node, Associate Model + */ + //@{ + /** Link modes. + * The link mode sets how the link influences the position of a control + * point and the relationship between the weights assigned to a control + * point. The weights assigned to a control point are distributed among + * the set of links associated with an instance of class FbxGeometry. + */ + enum ELinkMode + { + eNormalize, /*!< In mode eNormalize, the sum of the weights assigned to a control point + is normalized to 1.0. Setting the associate model in this mode is not + relevant. The influence of the link is a function of the displacement of the + link node relative to the node containing the control points.*/ + eAdditive, + /*!< In mode eAdditive, the sum of the weights assigned to a control point + is kept as is. It is the only mode where setting the associate model is + relevant. The influence of the link is a function of the displacement of + the link node relative to the node containing the control points or, + if set, the associate model. The weight gives the proportional displacement + of a control point. For example, if the weight of a link over a control + point is set to 2.0, a displacement of the link node of 1 unit in the X + direction relative to the node containing the control points or, if set, + the associate model, triggers a displacement of the control point of 2 + units in the same direction.*/ + eTotalOne + /*!< Mode eTotalOne is identical to mode eNormalize except that the sum of the + weights assigned to a control point is not normalized and must equal 1.0.*/ + }; + + /** Set the link mode. + * \param pMode The link mode. + * \remarks All the links associated to an instance of class FbxGeometry must have the same link mode. + */ + void SetLinkMode(ELinkMode pMode); + + /** Get the link mode. + * \return The link mode. + */ + ELinkMode GetLinkMode() const; + + /** Set the link node. The link node is the node which influences the displacement + * of the control points. Typically, the link node is the bone a skin is attached to. + * \param pNode The link node. + */ + void SetLink(const FbxNode* pNode); + + /** Get the link node. The link node is the node which influences the displacement + * of the control points. Typically, the link node is the bone a skin is attached to. + * \return The link node or \c NULL if FbxCluster::SetLink() has not been called before. + */ + FbxNode* GetLink(); + + /** Get the link node (as const). The link node is the node which influences the displacement + * of the control points. Typically, the link node is the bone a skin is attached to. + * \return The link node or \c NULL if FbxCluster::SetLink() has not been called before. + */ + const FbxNode* GetLink() const; + + /** Set the associate model. + * The associate model is optional. It is only relevant if the link mode + * is of type eAdditive. If set, the associate model is the node used as a reference to + * measure the relative displacement of the link node. Otherwise, the displacement of + * the link node is measured relative to the node containing the control points. + * Typically, the associate model node is the parent of the bone a skin is attached to. + * \param pNode The associate model node. + */ + void SetAssociateModel(FbxNode* pNode); + + /** Get the associate model. + * The associate model is optional. It is only relevant if the link mode is of type + * eAdditive. If set, the associate model is the node used as a reference to + * measure the relative displacement of the link node. Otherwise, the displacement of + * the link node is measured relative the the node containing the control points. + * Typically, the associate model node is the parent of the bone a skin is attached to. + * \return The associate model node or \c NULL if FbxCluster::SetAssociateModel() has not been called before. + */ + FbxNode* GetAssociateModel() const; + //@} + /** + * \name Control Points + * A link has an array of indices to control points and associated weights. + * The indices refer to the control points in the instance of class FbxGeometry + * owning the link. The weights are the influence of the link node over the + * displacement of the indexed control points. + */ + //@{ + + /** Add an element in both arrays of control point indices and weights. + * \param pIndex The index of the control point. + * \param pWeight The link weight for this control point. + */ + void AddControlPointIndex(int pIndex, double pWeight); + + /** Get the length of the arrays of control point indices and weights. + * \return Length of the arrays of control point indices and weights. + * Returns 0 if no control point indices have been added or the arrays have been reset. + */ + int GetControlPointIndicesCount() const; + + /** Get the array of control point indices. + * \return Pointer to the array of control point indices. + * \c NULL if no control point indices have been added or the array has been reset. + */ + int* GetControlPointIndices() const; + + /** Get the array of control point weights. + * \return Pointer to the array of control point weights. + * \c NULL if no control point indices have been added or the array has been reset. + */ + double* GetControlPointWeights() const; + + //@} + + /** Set the array size for the three arrays: the array of control point indices, the array of weights + * and the array of blend weights. + * \param pCount The new count. + */ + void SetControlPointIWCount(int pCount); + + /** + * \name Transformation matrices + * A link has three transformation matrices: + * \li Transform refers to the global initial transform of the geometry node that contains the link node. + * \li TransformLink refers to global initial transform of the link node. + * \li TransformAssociateModel refers to the global initial transform of the associate model. + * + * For example, given a mesh binding with several bones(links), Transform is the global transform + * of the mesh at the binding moment, TransformLink is the global transform of the bone(link) + * at the binding moment, TransformAssociateModel is the global transform of the associate model + * at the binding moment. + */ + //@{ + + /** Set matrix associated with the node containing the link. + * \param pMatrix Transformation matrix. + */ + void SetTransformMatrix(const FbxAMatrix& pMatrix); + + /** Get matrix associated with the node containing the link. + * \param pMatrix Transformation matrix to be filled with appropriate data. + * \return Input parameter matrix filled with appropriate data. + */ + FbxAMatrix& GetTransformMatrix(FbxAMatrix& pMatrix) const; + + /** Set matrix associated with the link node. + * \param pMatrix Transformation matrix. + */ + void SetTransformLinkMatrix(const FbxAMatrix& pMatrix); + + /** Get matrix associated with the link node. + * \param pMatrix Transformation matrix to be filled with appropriate data.. + * \return Input parameter matrix filled with appropriate data. + */ + FbxAMatrix& GetTransformLinkMatrix(FbxAMatrix& pMatrix) const; + + /** Set matrix associated with the associate model. + * \param pMatrix Transformation matrix. + */ + void SetTransformAssociateModelMatrix(const FbxAMatrix& pMatrix); + + /** Get matrix associated with the associate model. + * \param pMatrix Transformation matrix to be filled with appropriate data.. + * \return Input parameter matrix filled with appropriate data. + */ + FbxAMatrix& GetTransformAssociateModelMatrix(FbxAMatrix& pMatrix) const; + + /** Set matrix associated with the parent node. + * \param pMatrix Transformation matrix. + */ + void SetTransformParentMatrix(const FbxAMatrix& pMatrix); + + /** Get matrix associated with the parent node. + * \param pMatrix Transformation matrix to be filled with appropriate data.. + * \return Input parameter matrix filled with appropriate data. + */ + FbxAMatrix& GetTransformParentMatrix(FbxAMatrix& pMatrix) const; + + /** Get the Transform Parent set flag value. + * \return \c true if transform matrix associated with parent node is set. + */ + bool IsTransformParentSet() const { return mIsTransformParentSet; } + + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + void SetUserData(const char* pUserDataID, const char* pUserData); + const char* GetUserDataID () const; + const char* GetUserData () const; + const char* GetUserData (const char* pUserDataID) const; + + // For pre version 6 support + FbxString mBeforeVersion6LinkName; + FbxString mBeforeVersion6AssociateModelName; + + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + + virtual FbxStringList GetTypeFlags() const; + + ELinkMode mLinkMode; + FbxString mUserDataID; + FbxString mUserData; + FbxArray mControlPointIndices; + FbxArray mControlPointWeights; + FbxMatrix mTransform; + FbxMatrix mTransformLink; + FbxMatrix mTransformAssociate; + FbxMatrix mTransformParent; + bool mIsTransformParentSet; + + FbxPropertyT SrcModelReference; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_CLUSTER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxdeformer.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxdeformer.h new file mode 100644 index 00000000..ab443294 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxdeformer.h @@ -0,0 +1,95 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxdeformer.h +#ifndef _FBXSDK_SCENE_GEOMETRY_DEFORMER_H_ +#define _FBXSDK_SCENE_GEOMETRY_DEFORMER_H_ + +#include + +#include +#include + +/** Base class for skin deformer (FbxSkin) and vertex cache deformer (FbxVertexCacheDeformer). + * The corresponding deformer types are FbxDeformer::eSkin and FbxDeformer::eVertexCache. + * A deformer can be binded to a geometry (FbxGeometry) to act on its shape. Typically, + * some objects under the deformer are animated, and via the deformer, the geometry + * is animated too. + * + * A skin deformer contains clusters (FbxCluster). Each cluster acts on a subset of the geometry's + * control points, with different weights. For example, a mesh of humanoid shape + * can have a skin attached, that describes the way the humanoid mesh is deformed + * by bones. When the bones are animated, the clusters act on the geometry to + * animate it too. + * + * A vertex cache deformer contains a cache (FbxCache). The cache contains animation + * information for every control point of the geometry. + * + *\nosubgrouping + */ +class FBXSDK_DLL FbxDeformer : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxDeformer, FbxObject); + +public: + /** + * \name Multi-Layer Flag + * This flag is available for backward compatibility with older + * version of FBX files and should not be used anymore. All the animation layering + * system has been moved to the FbxAnimLayer and FbxAnimStack classes. + */ + //@{ + /** Set multi-layer state flag. + * \param pMultiLayer Set to \c true to enable multi-layering. + */ + void SetMultiLayer(bool pMultiLayer); + + /** Get multi-layer state. + * \return The current state of the multi-layer flag. + */ + bool GetMultiLayer() const; + //@} + + /** + * \name Deformer types + */ + //@{ + /** \enum EDeformerType Deformer types. + */ + enum EDeformerType + { + eUnknown, //!< Unknown deformer type + eSkin, //!< Type FbxSkin + eBlendShape, //!< Type FbxBlendShape + eVertexCache //!< Type FbxVertexCacheDeformer + }; + + /** Get the deformer type. + * \return Deformer type identifier. Default value is eUnknown. + */ + virtual EDeformerType GetDeformerType() const { return eUnknown; } + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void Construct(const FbxObject* pFrom); + virtual FbxStringList GetTypeFlags() const { return FbxStringList(); } + + bool mMultiLayer; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_DEFORMER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxgenericnode.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxgenericnode.h new file mode 100644 index 00000000..1383bd61 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxgenericnode.h @@ -0,0 +1,41 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxgenericnode.h +#ifndef _FBXSDK_SCENE_GEOMETRY_GENERIC_NODE_H_ +#define _FBXSDK_SCENE_GEOMETRY_GENERIC_NODE_H_ + +#include +#include + +#include + +/** Empty node containing properties. + * \nosubgrouping + */ +class FBXSDK_DLL FbxGenericNode : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxGenericNode, FbxObject); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void Construct(const FbxObject* pFrom); + virtual FbxStringList GetTypeFlags() const; + +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_GENERIC_NODE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxgeometry.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxgeometry.h new file mode 100644 index 00000000..3a103fa2 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxgeometry.h @@ -0,0 +1,318 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxgeometry.h +#ifndef _FBXSDK_SCENE_GEOMETRY_H_ +#define _FBXSDK_SCENE_GEOMETRY_H_ + +#include + +#include +#include +#include +#include +#include + +#include + +class FbxStatus; +class FbxGeometryWeightedMap; + +/** The base class of geometric objects that support control point deformations (e.g. FbxMesh, FbxNurbs, +* and FbxPatch). The FbxGeometry provides support for the following kinds of deformations. +* +* \li Skin deformation deformers +* \li Vertex cache deformers +* \li Geometry weighted maps +* \li Shapes +* +* Most of the methods of FbxGeometry are wrappers to simplify the access/manipulation of the connections +* to the deformers. For example, calling the GetDeformerCount() method is the same +* thing as calling: +* +* \code +* geometry.GetSrcObjectCount(FbxDeformer::ClassId) +* \endcode +*/ +class FBXSDK_DLL FbxGeometry : public FbxGeometryBase +{ + FBXSDK_OBJECT_DECLARE(FbxGeometry,FbxGeometryBase); + +public: + /** Returns the node attribute type. + * This method is derived in the more high level classes (FbxMesh, FbxNurbs, etc...) and returns the + * actual type of the geometry object. + * + * \return \e eUnknown + */ + virtual FbxNodeAttribute::EType GetAttributeType() const; + + /** + * \name Deformer Management + */ + //@{ + + /** Adds a deformer to this geometry (as mentioned in the description of this class, adding a deformer is a synonym + * for "connect a deformer"). + * \param pDeformer Pointer to the deformer to be added. + * \return Index of the added deformer. + */ + int AddDeformer(FbxDeformer* pDeformer); + + /** Remove a deformer. + * \param pIndex Index of deformer to remove. + * \param pStatus The FbxStatus object to hold error codes. + * \return Pointer to the removed deformer (or \c NULL if pIndex is out of range). + */ + FbxDeformer* RemoveDeformer(int pIndex, FbxStatus* pStatus = NULL); + + /** Returns the number of deformers. + * \return The number of deformers that are connected to this geometry. + */ + int GetDeformerCount() const; + + /** Returns the deformer at the specified index. + * \param pIndex The specified deformer index. + * \param pStatus The FbxStatus object to hold error codes. + * \return Pointer to the deformer (or \c NULL if pIndex is out of range). + */ + FbxDeformer* GetDeformer(int pIndex, FbxStatus* pStatus = NULL) const; + + /** Returns the number of deformers of a specified type. + * \param pType The specified deformer type. + * \return The number of deformers of the specified type. + */ + int GetDeformerCount(FbxDeformer::EDeformerType pType) const; + + /** Returns the deformer of a specified type at the specified index. + * \param pIndex The specified deformer index. + * \param pType The specified deformer type. + * \param pStatus The FbxStatus object to hold error codes. + * \return Pointer to the deformer (or \c NULL if pIndex is out of range). + */ + FbxDeformer* GetDeformer(int pIndex, FbxDeformer::EDeformerType pType, FbxStatus* pStatus = NULL) const; + + //@} + + /** + * \name Geometry Weighted Maps Management + */ + //@{ + + /** Returns the source geometry weighted map that is connected to this geometry. + * \return Pointer to the source geometry weighted map that is connected to this geometry if any. + */ + FbxGeometryWeightedMap* GetSourceGeometryWeightedMap(); + + /** Returns the number of destination geometry weighted map(s) that are connected to this geometry. + * \return The number of destination geometry weighted map(s) that are connected to this geometry. + */ + int GetDestinationGeometryWeightedMapCount() const; + + /** Returns the destination geometry weighted map at a specified index. + * \param pIndex The specified index. + * \return Pointer to the destination geometry weighted map at the specified index (if any). + */ + FbxGeometryWeightedMap* GetDestinationGeometryWeightedMap(int pIndex); + + //@} + + /** + * \name Shape Management + */ + //@{ + + /** Add a shape to the specified blend shape deformer and blend shape channel of this geometry. + * \param pBlendShapeIndex The blend shape deformer index. + * \param pBlendShapeChannelIndex The blend shape channel index. + * \param pShape Pointer to the shape object to be added. + * \param pPercent The full deform percentage of this shape. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if success, \c false otherwise. + */ + bool AddShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, FbxShape* pShape, double pPercent = 100, FbxStatus* pStatus = NULL); + + /** Removes all the shapes without destroying them. + * If shapes aren't explicitly destroyed before calling this function, they will be + * destroyed along with the SDK manager that created them. + */ + void ClearShape(); + + /** Returns the number of shapes. + * \return The number of shapes that have been added to this geometry. + */ + int GetShapeCount() const; + + /** Returns the number of shapes. + * \param pBlendShapeIndex The blend shape deformer index. + * \param pBlendShapeChannelIndex The blend shape channel index. + * \param pStatus The FbxStatus object to hold error codes. + * \return The number of shapes that have been added to this blend shape channel of this blend shape deformer. + */ + int GetShapeCount(int pBlendShapeIndex, int pBlendShapeChannelIndex, FbxStatus* pStatus = NULL) const; + + /** Returns the shape found at the specified index on a blend shape channel of a blend shape deformer. + * \param pBlendShapeIndex The blend shape deformer index. + * \param pBlendShapeChannelIndex The blend shape channel index. + * \param pShapeIndex The specified shape index. + * \param pStatus The FbxStatus object to hold error codes. + * \return Pointer to the shape (or \c NULL if pIndex is out of range). + */ + FbxShape* GetShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, int pShapeIndex, FbxStatus* pStatus = NULL); + + /** Returns the shape found at the specified index on a blend shape channel of a blend shape deformer. + * \param pBlendShapeIndex The blend shape deformer index. + * \param pBlendShapeChannelIndex The blend shape channel index. + * \param pShapeIndex The specified shape index. + * \param pStatus The FbxStatus object to hold error codes. + * \return Pointer to the shape (or \c NULL if pIndex is out of range). + */ + const FbxShape* GetShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, int pShapeIndex, FbxStatus* pStatus = NULL) const; + + /** Get the shape animation curve. + * The shape channel is an animatable property with a value range from 0 to 100 (with 100 being full shape deformation). + * The default value is 0. + * \param pBlendShapeIndex The blend shape deformer index. + * \param pBlendShapeChannelIndex The blend shape channel index. + * \param pLayer The animation layer from which we want to get the requested animation curve. + * \param pCreateAsNeeded If \c true, creates the animation curve if it is not already present. + * \param pStatus The FbxStatus object to hold error codes. + * \return Animation curve (or NULL if an error occurred). + * \remarks If pLayer is left at NULL, the method will use the first layer of the Animation stack. + */ + FbxAnimCurve* GetShapeChannel(int pBlendShapeIndex, int pBlendShapeChannelIndex, FbxAnimLayer* pLayer, bool pCreateAsNeeded = false, FbxStatus* pStatus = NULL); + //@} + + /** NURBS and Patches surface modes. + * This information is never directly used inside the FBX SDK. Applications can use these values if they wish to + * carry the "rendering" details of the NURBS and Patches. The FBX SDK guarantee that the value (member of the FbxNurbs, + * FbxNurbsSurface and FbxPatch classes) is stored to FBX files and retrieved from them. + * \remarks The enum has been defined in this class to avoid symbols duplication. + */ + enum ESurfaceMode + { + eRaw, //! Raw. + eLowNoNormals, //! Low and no normals. + eLow, //! Low. + eHighNoNormals, //! High and no normals. + eHigh //! High. + }; + + /** + * \name Pivot Management + * The geometry pivot is used to specify additional translation, rotation, + * and scaling information applied to all control points when the model is + * exported. + */ + //@{ + + /** Returns the pivot matrix. + * \param pXMatrix Placeholder for the returned matrix. + * \return Reference to the passed argument. + */ + FbxAMatrix& GetPivot(FbxAMatrix& pXMatrix) const; + + /** Sets the pivot matrix. + * \param pXMatrix The transformation matrix that is assigned to the pivot matrix. + */ + void SetPivot(FbxAMatrix& pXMatrix); + + /** Applies the pivot matrix to all vertices/normals of the geometry. + */ + void ApplyPivot(); + + //@} + + /** + * \name Default Animation Values + * These functions provides direct access to default animation values that are specific to a geometry. + * These functions only work if the geometry has been associated with a node. + */ + //@{ + + /** Sets the default deformation for a specified shape. + * The default shape property has a value range from 0 to 100 (with 100 being full shape deformation). + * The default value is 0. + * \param pBlendShapeIndex The blend shape deformer index. + * \param pBlendShapeChannelIndex The blend shape channel index. + * \param pPercent Deformation percentage (on a scale ranging from 0 to 100). + * \remarks This function has no effect if pIndex is out of range. + */ + void SetDefaultShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, double pPercent); + + /** Sets the default deformation for a specified channel. + * The default shape property has a value range from 0 to 100 (with 100 being full shape deformation). + * The default value is 0. + * \param pBlendShapeChannel The blend shape channel. + * \param pPercent Deformation percentage (on a scale ranging from 0 to 100). + * \remarks This function has no effect if pShapeName is invalid. + */ + void SetDefaultShape(FbxBlendShapeChannel* pBlendShapeChannel, double pPercent); + + /** Returns the default deformation value for the specified shape. + * The default shape property has a value range from 0 to 100 (with 100 being full shape deformation). + * The default value is 0. + * \param pBlendShapeIndex The blend shape deformer index. + * \param pBlendShapeChannelIndex The blend shape channel index. + * \return The deformation value for the specified shape, or 0 if pIndex is out of range. + */ + double GetDefaultShape(int pBlendShapeIndex, int pBlendShapeChannelIndex) const; + + /** Returns the default deformation value for the specified channel. + * The default shape property has a value range from 0 to 100 (with 100 being full shape deformation). + * The default value is 0. + * \param pBlendShapeChannel The blend shape channel. + * \return The deformation value for the specified shape, or 0 if pShapeName is invalid. + */ + double GetDefaultShape(FbxBlendShapeChannel* pBlendShapeChannel) const; + + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + virtual FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const; + + void CleanShapeChannels(FbxAnimLayer* pAnimLayer); + void CleanShapeChannel(FbxAnimLayer* pAnimLayer, int pShapeIndex); + void CreateShapeChannelProperties(FbxString& pShapeName); + void ConvertShapeNamesToV5Format(FbxString pTakeNodeName); + void ConvertShapeNamesToV5Format(FbxString pTakeNodeName, int pShapeIndex); + void RevertShapeNamesToV6Format(FbxString pTakeNodeName); + void RevertShapeNamesToV6Format(FbxString pTakeNodeName, int pShapeIndex); + void ClearTemporaryShapeNames(); + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void Destruct(bool pRecursive); + virtual void SetDocument(FbxDocument* pDocument); + + FbxString CreateShapeChannelName(int pShapeIndex); + FbxString CreateShapeChannelName(FbxString pShapeName); + + void CopyDeformers(const FbxGeometry* pGeometry); + void CopyPivot(const FbxGeometry* pSource); + + // Used during FBX v5 file store + FbxArray mShapeNameArrayV6; + FbxArray mShapeNameArrayV5; + FbxArray mShapeChannelNameArrayV5; + + FbxAMatrix* mPivot; + +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxgeometrybase.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxgeometrybase.h new file mode 100644 index 00000000..54deafa8 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxgeometrybase.h @@ -0,0 +1,669 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxgeometrybase.h +#ifndef _FBXSDK_SCENE_GEOMETRY_BASE_H_ +#define _FBXSDK_SCENE_GEOMETRY_BASE_H_ + +#include + +#include +#include +#include + +#include + +class FbxStatus; + +/** This class is the base class for geometric object such as meshes, NURBS and patches. + * Use the FbxGeometryBase class to manage the control points, normals, binormals and tangents of the + * geometries. + * The meaning of "control point" is dependent of the geometry object type. For meshes, the "control point" + * is the physical 3D coordinate of polygon vertices while, for NURBS, it is the the actual control point on the curves + * defining the surface. This class also allow you to define normals, binormals and tangents regardless of the type of + * geometric object. However, in reality, applying such definitions to NURBS and patches does not make much sense + * since these definitions would only exist at the control points and inbetween them, the interpolation would certainly not + * follow the curve. + * + * Geometric objects are using a system of layered data to extend their construction definition. For example, a typical + * layer for a Mesh contains Normals, UVs and Materials but client applications can decide to define another set of + * Normals and UVs and swap them during the rendering phase to produce some different results. The combinations are limitless + * and it would be impossible to discuss them all. This example has been presented to show one possible context where + * layers can be used. More information can be found in the FbxLayerContainer and FbxLayer classes description. + * \nosubgrouping + */ +class FBXSDK_DLL FbxGeometryBase : public FbxLayerContainer +{ + FBXSDK_OBJECT_DECLARE(FbxGeometryBase, FbxLayerContainer); + +public: + /** + * \name Control Points, Normals, Binormals and Tangent Management. + */ + //@{ + + /** Allocates memory space for the array of control points. + * \param pCount The number of control points. + * \remarks Any previously allocated array of control points will be cleared. + */ + virtual void InitControlPoints(int pCount); + + /** Allocates memory space for the array of normals. + * \param pCount The desired size for the normal array. If pCount is specified, the array will be the same size as pCount. + * If pCount is not specified, the array will be the same length as the array of control points. + * \remarks This function must be called after function FbxLayerContainer::InitControlPoints(). + * \remarks The normals initialized with this function will have the ReferenceMode set to eDirect. Also, + * the array will always be defined on layer 0. + */ + void InitNormals(int pCount = 0 ); + + /** Allocates memory space for the array of normals cloned from the pSrc. + * \param pSrc The source geometry from which the normals information is cloned. + * \remarks This function must be called with the argument, otherwise it does not do anything. Also, + * it will only process the normals array defined on layer 0 of the pSrc. + */ + void InitNormals(FbxGeometryBase* pSrc); + + /** Allocates memory space for the array of tangents on specified layer. + * \param pCount The desired size of the tangent array. If pCount is specified, the array will be the same size as pCount. + * If pCount is not specified, the array will be the same length as the array of control points. + * \param pLayerIndex The specified layer index to allocate memory space for the array of tangents. + * \param pName The specified name for the allocated tangents array. + * \remarks This function must be called after function FbxLayerContainer::InitControlPoints(). + * The tangents initialized with this function will have the reference mode set to eDirect. + */ + void InitTangents(int pCount = 0, const int pLayerIndex = 0, const char* pName = "" ); + + /** Allocates memory space for the array of tangents cloned from the pSrc on the specified layer. + * \param pSrc The source geometry from which the tangents information is cloned. + * \param pLayerIndex The specified layer index to allocate memory space for cloned array of tangents from the pSrc. + * \remarks This function must be called with the argument, otherwise it does not do anything. + */ + void InitTangents(FbxGeometryBase* pSrc, const int pLayerIndex = 0); + + /** Allocates memory space for the array of binormals. + * \param pCount The desired size of the binormal array. If pCount is specified, the array will have the same size as pCount. + * If pCount is not specified, the array will be the same length as the array of control points. + * \param pLayerIndex The specified layer index to allocate memory space for the array of binormals. + * \param pName The specified name for the allocated binormals array. + * \remarks This function must be called after function FbxLayerContainer::InitControlPoints(). + * The binormals initialized with this function will have the reference mode set to eDirect. + */ + void InitBinormals(int pCount = 0, const int pLayerIndex = 0, const char* pName = "" ); + + /** Allocates memory space for the array of binormals cloned from the pSrc. + * \param pSrc The source geometry from which the binormals information is cloned. + * \param pLayerIndex The specified layer index to allocate memory space for cloned array of binormals from the pSrc. + * \remarks This function must be called with the argument, otherwise it does not do anything. + */ + void InitBinormals(FbxGeometryBase* pSrc, const int pLayerIndex = 0); + + /** Sets the control point and the normal values at the specified index. + * \param pCtrlPoint The value of the control point. + * \param pNormal The value of the normal. + * \param pIndex The specified index of the control point/normal. + * \param pI2DSearch When \c true AND the normals array reference mode is eIndexToDirect, search pNormal in the + * existing array to avoid inserting if it already exist. NOTE: This feature uses a linear + * search algorithm, therefore it can be time consuming if the DIRECT array of normals contains + * a huge number of elements. + * \remarks If the arrays (control points and normals) are not big enough to store the values at the + * specified index, they will be automatically resized to accommodate the new entries. + */ + virtual void SetControlPointAt(const FbxVector4 &pCtrlPoint , const FbxVector4 &pNormal , int pIndex, bool pI2DSearch = false); + + + /** Sets the control point at a specified index. + * \param pCtrlPoint The value of the control point. + * \param pIndex The specified index of the control point. + * + * \remarks If the array is not big enough to store the value at the specified index, it will be + * automatically resized to accommodate the new entry. + */ + virtual void SetControlPointAt(const FbxVector4 &pCtrlPoint , int pIndex); + + /** Gets the control point at the specified index. + * \param pIndex The specified index of the control point. + * \return The value of the specific control point. + * + * \remarks If index is out of range, FbxVector4(0, 0, 0) is returned. + */ + virtual FbxVector4 GetControlPointAt(int pIndex) const; + + /** Sets the control point normal value at the specified index. + * \param pNormal The value of the normal. + * \param pIndex The specified index of the normal. + * \param pI2DSearch When \c true AND the normals array reference mode is eIndexToDirect, search pNormal in the + * existing array to avoid inserting it if it already exist. NOTE: this feature uses a linear + * search algorithm, therefore it can be time consuming if the DIRECT array of normals contains + * a huge number of elements. + * \remarks If the array is not big enough to store the value at the specified index, it will be + * automatically resized to accommodate the new entry. + */ + virtual void SetControlPointNormalAt(const FbxVector4 &pNormal, int pIndex, bool pI2DSearch=false); + + /** Returns the number of control points. + * \return The number of control points allocated in the geometry. + */ + virtual int GetControlPointsCount() const; + + + /** Returns a pointer to the array of control points. + * \param pStatus Not used in the implementation of this class. + * \return Pointer to the array of control points, or \c NULL if the array has not been allocated. + * \remarks Use the function FbxGeometryBase::InitControlPoints() to allocate the array. + */ + virtual FbxVector4* GetControlPoints(FbxStatus* pStatus=NULL) const; + + /** Allocates memory space for the array of control points. + * \param pCount The number of control points. + * \remarks Any previously allocated array of control points will NOT be cleared. + */ + virtual void SetControlPointCount(int pCount); + + //@} + + + /** + * \name Public and fast access Properties + */ + //@{ + //! Control the geometry render state. Geometry can still cast shadows even if this is turned off. + FbxPropertyT PrimaryVisibility; + + //! If true, the geometry will produce shadows. + FbxPropertyT CastShadow; + + //! If true, the geometry will receive shadows. + FbxPropertyT ReceiveShadow; + + //! The minimum value of the control points bounding box. + FbxPropertyT BBoxMin; + + //! The maximum value of the control points bounding box. + FbxPropertyT BBoxMax; + + /** Computes the control points Bounding box. + */ + void ComputeBBox(); + //@} + + + /** + * \name Geometry Element Management. + * A FbxGeometryElement describes how the geometry element (normals, UVs and etc.) is mapped to a geometry + * surface and how the mapping information is arranged in memory. + * FbxGeometryElement is exactly the same as FbxLayerElement but does not expose the geometry's layer information. + * Use the geometry element classes to decompose the geometry without dealing with layers. + */ + //@{ + + /** Creates a normal geometry element for this geometry. + * \return A pointer to the newly created geometry element. + * \remarks The created geometry element is associated with this geometry automatically. + */ + FbxGeometryElementNormal* CreateElementNormal(); + + /** Remove the normal geometry element from this geometry. + * \param pElementNormal A pointer to the normal element to be removed. + * \return \c True if the geometry element is removed, \c false otherwise. + */ + bool RemoveElementNormal(FbxGeometryElementNormal* pElementNormal); + + /** Returns this geometry's normal element. + * \param pIndex The normal geometry element index. + * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + FbxGeometryElementNormal* GetElementNormal(int pIndex = 0); + + /** Returns this geometry's normal element. + * \param pIndex The normal geometry element index. + * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + const FbxGeometryElementNormal* GetElementNormal(int pIndex = 0) const; + + /** Get the number of this geometry's normal geometry element. + * \return Total number of normal geometry elements for this geometry. + */ + int GetElementNormalCount() const; + + /** Creates a binormal geometry element for this geometry. + * \return A pointer to the newly created geometry element. + * \remarks The created geometry element is associated with this geometry automatically. + */ + FbxGeometryElementBinormal* CreateElementBinormal(); + + /** Remove the binormal geometry element from this geometry. + * \param pElementBinormal A pointer to the binormal element to be removed. + * \return \c True if the geometry element is removed, \c false otherwise. + */ + bool RemoveElementBinormal(FbxGeometryElementBinormal* pElementBinormal); + + /** Returns this geometry's binormal element. + * \param pIndex The binormal geometry element index. + * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + FbxGeometryElementBinormal* GetElementBinormal(int pIndex = 0); + + /** Returns this geometry's binormal element. + * \param pIndex The binormal geometry element index. + * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + const FbxGeometryElementBinormal* GetElementBinormal(int pIndex = 0) const; + + /** Get the number of this geometry's binormal geometry element. + * \return Total number of binormal geometry elements for this geometry. + */ + int GetElementBinormalCount() const; + + /** Creates a tangent geometry element for this geometry. + * \return A pointer to the newly created geometry element. + * \remarks The created geometry element is associated with this geometry automatically. + */ + FbxGeometryElementTangent* CreateElementTangent(); + + /** Remove the tangent geometry element from this geometry. + * \param pElementTangent A pointer to the tangent element to be removed. + * \return \c True if the geometry element is removed, \c false otherwise. + */ + bool RemoveElementTangent(FbxGeometryElementTangent* pElementTangent); + + /** Returns this geometry's tangent element. + * \param pIndex The tangent geometry element index. + * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + FbxGeometryElementTangent* GetElementTangent(int pIndex = 0); + + /** Returns this geometry's tangent element. + * \param pIndex The tangent geometry element index. + * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + const FbxGeometryElementTangent* GetElementTangent(int pIndex = 0) const; + + /** Get the number of this geometry's tangent geometry element. + * \return Total number of tangent geometry elements for this geometry. + */ + int GetElementTangentCount() const; + + /** Creates a material geometry element for this geometry. + * \return A pointer to the newly created geometry element. + * \remarks The created geometry element is associated with this geometry automatically. + */ + FbxGeometryElementMaterial* CreateElementMaterial(); + + /** Remove the material geometry element from this geometry. + * \param pElementMaterial A pointer to the material element to be removed. + * \return \c True if the geometry element is removed, \c false otherwise. + */ + bool RemoveElementMaterial(FbxGeometryElementMaterial* pElementMaterial); + + /** Returns this geometry's material element. + * \param pIndex The material geometry element index. + * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + FbxGeometryElementMaterial* GetElementMaterial(int pIndex = 0); + + /** Returns this geometry's material element. + * \param pIndex The material geometry element index. + * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + const FbxGeometryElementMaterial* GetElementMaterial(int pIndex = 0) const; + + /** Get the number of this geometry's material geometry element. + * \return Total number of material geometry elements for this geometry. + */ + int GetElementMaterialCount() const; + + /** Creates a polygon group geometry element for this geometry. + * \return A pointer to the newly created geometry element. + * \remarks The created geometry element is associated with this geometry automatically. + */ + FbxGeometryElementPolygonGroup* CreateElementPolygonGroup(); + + /** Remove the polygon group geometry element from this geometry. + * \param pElementPolygonGroup A pointer to the polygon group element to be removed. + * \return \c True if the geometry element is removed, \c false otherwise. + */ + bool RemoveElementPolygonGroup(FbxGeometryElementPolygonGroup* pElementPolygonGroup); + + /** Returns this geometry's polygon group element. + * \param pIndex The polygon group geometry element index. + * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + FbxGeometryElementPolygonGroup* GetElementPolygonGroup(int pIndex = 0); + + /** Returns this geometry's polygon group element. + * \param pIndex The polygon group geometry element index. + * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + const FbxGeometryElementPolygonGroup* GetElementPolygonGroup(int pIndex = 0) const; + + /** Get the number of this geometry's polygon group geometry element. + * \return Total number of polygon group geometry elements for this geometry. + */ + int GetElementPolygonGroupCount() const; + + /** Creates a vertex color geometry element for this geometry. + * \return A pointer to the newly created geometry element. + * \remarks The created geometry element is associated with this geometry automatically. + */ + FbxGeometryElementVertexColor* CreateElementVertexColor(); + + /** Remove the vertex color geometry element from this geometry. + * \param pElementVertexColor A pointer to the vertex color element to be removed. + * \return \c True if the geometry element is removed, \c false otherwise. + */ + bool RemoveElementVertexColor(FbxGeometryElementVertexColor* pElementVertexColor); + + /** Returns this geometry's vertex color element. + * \param pIndex The vertex color geometry element index. + * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + FbxGeometryElementVertexColor* GetElementVertexColor(int pIndex = 0); + + /** Returns this geometry's vertex color element. + * \param pIndex The vertex color geometry element index. + * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + const FbxGeometryElementVertexColor* GetElementVertexColor(int pIndex = 0) const; + + /** Get the number of this geometry's vertex color geometry element. + * \return Total number of vertex color geometry elements for this geometry. + */ + int GetElementVertexColorCount() const; + + /** Creates a smoothing geometry element for this geometry. + * \return A pointer to the newly created geometry element. + * \remarks The created geometry element is associated with this geometry automatically. + */ + FbxGeometryElementSmoothing* CreateElementSmoothing(); + + /** Remove the smoothing geometry element from this geometry. + * \param pElementSmoothing A pointer to the smoothing element to be removed. + * \return \c True if the geometry element is removed, \c false otherwise. + */ + bool RemoveElementSmoothing(FbxGeometryElementSmoothing* pElementSmoothing); + + /** Returns this geometry's smoothing element. + * \param pIndex The smoothing geometry element index. + * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + FbxGeometryElementSmoothing* GetElementSmoothing(int pIndex = 0); + + /** Returns this geometry's smoothing element. + * \param pIndex The smoothing geometry element index. + * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + const FbxGeometryElementSmoothing* GetElementSmoothing(int pIndex = 0) const; + + /** Get the number of this geometry's smoothing geometry element. + * \return Total number of smoothing geometry elements for this geometry. + */ + int GetElementSmoothingCount() const; + + /** Creates a vertex crease geometry element for this geometry. + * \return A pointer to the newly created geometry element. + * \remarks The created geometry element is associated with this geometry automatically. + */ + FbxGeometryElementCrease* CreateElementVertexCrease(); + + /** Remove the vertex crease geometry element from this geometry. + * \param pElementCrease A pointer to the vertex crease element to be removed. + * \return \c True if the geometry element is removed, \c false otherwise. + */ + bool RemoveElementVertexCrease(FbxGeometryElementCrease* pElementCrease); + + /** Returns this geometry's vertex crease element. + * \param pIndex The vertex crease geometry element index. + * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + FbxGeometryElementCrease* GetElementVertexCrease(int pIndex = 0); + + /** Returns this geometry's vertex crease element. + * \param pIndex The vertex crease geometry element index. + * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + const FbxGeometryElementCrease* GetElementVertexCrease(int pIndex = 0) const; + + /** Get the number of this geometry's vertex crease geometry element. + * \return Total number of vertex crease geometry elements for this geometry. + */ + int GetElementVertexCreaseCount() const; + + /** Creates an edge crease geometry element for this geometry. + * \return A pointer to the newly created geometry element. + * \remarks The created geometry element is associated with this geometry automatically. + */ + FbxGeometryElementCrease* CreateElementEdgeCrease(); + + /** Remove the edge crease geometry element from this geometry. + * \param pElementCrease A pointer to the edge crease element to be removed. + * \return \c True if the geometry element is removed, \c false otherwise. + */ + bool RemoveElementEdgeCrease(FbxGeometryElementCrease* pElementCrease); + + /** Returns this geometry's edge crease element. + * \param pIndex The edge crease geometry element index. + * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + FbxGeometryElementCrease* GetElementEdgeCrease(int pIndex = 0); + + /** Returns this geometry's edge crease element. + * \param pIndex The edge crease geometry element index. + * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + const FbxGeometryElementCrease* GetElementEdgeCrease(int pIndex = 0) const; + + /** Get the number of this geometry's edge crease geometry element. + * \return Total number of edge crease geometry elements for this geometry. + */ + int GetElementEdgeCreaseCount() const; + + /** Creates a hole geometry element for this geometry. + * \return A pointer to the newly created geometry element. + * \remarks The created geometry element is associated with this geometry automatically. + */ + FbxGeometryElementHole* CreateElementHole(); + + /** Remove the hole geometry element from this geometry. + * \param pElementHole A pointer to the hole element to be removed. + * \return \c True if the geometry element is removed, \c false otherwise. + */ + bool RemoveElementHole(FbxGeometryElementHole* pElementHole); + + /** Returns this geometry's hole element. + * \param pIndex The hole geometry element index. + * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + FbxGeometryElementHole* GetElementHole(int pIndex = 0); + + /** Returns this geometry's hole element. + * \param pIndex The hole geometry element index. + * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + const FbxGeometryElementHole* GetElementHole(int pIndex = 0) const; + + /** Get the number of this geometry's hole geometry element. + * \return Total number of hole geometry elements for this geometry. + */ + int GetElementHoleCount() const; + + /** Creates a user data geometry element for this geometry. + * \return A pointer to the newly created geometry element. + * \remarks The created geometry element is associated with this geometry automatically. + */ + FbxGeometryElementUserData* CreateElementUserData(); + + /** Remove the user data geometry element from this geometry. + * \param pElementUserData A pointer to the user data element to be removed. + * \return \c True if the geometry element is removed, \c false otherwise. + */ + bool RemoveElementUserData(FbxGeometryElementUserData* pElementUserData); + + /** Returns this geometry's user data element. + * \param pIndex The user data geometry element index. + * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + FbxGeometryElementUserData* GetElementUserData(int pIndex = 0); + + /** Returns this geometry's user data element. + * \param pIndex The user data geometry element index. + * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + const FbxGeometryElementUserData* GetElementUserData(int pIndex = 0) const; + + /** Get the number of this geometry's user data geometry element. + * \return Total number of user data geometry elements for this geometry. + */ + int GetElementUserDataCount() const; + + /** Creates a visibility geometry element for this geometry. + * \return A pointer to the newly created geometry element. + * \remarks The created geometry element is associated with this geometry automatically. + */ + FbxGeometryElementVisibility* CreateElementVisibility(); + + /** Remove the visibility geometry element from this geometry. + * \param pElementVisibility A pointer to the visibility element to be removed. + * \return \c True if the geometry element is removed, \c false otherwise. + */ + bool RemoveElementVisibility(FbxGeometryElementVisibility* pElementVisibility); + + /** Returns this geometry's visibility element. + * \param pIndex The visibility geometry element index. + * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + FbxGeometryElementVisibility* GetElementVisibility(int pIndex = 0); + + /** Returns this geometry's visibility element. + * \param pIndex The visibility geometry element index. + * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. + */ + const FbxGeometryElementVisibility* GetElementVisibility(int pIndex = 0) const; + + /** Get the number of this geometry's visibility geometry element. + * \return Total number of visibility geometry elements for this geometry. + */ + int GetElementVisibilityCount() const; + + /** Creates a UV geometry element for this geometry. + * \param pUVSetName The UV geometry element name. + * \param pTypeIdentifier The texture channel the UVIndex refers to. + * \return A pointer to the newly created geometry element. + * \remarks The created geometry element is associated with this geometry automatically. + */ + FbxGeometryElementUV* CreateElementUV(const char* pUVSetName, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); + + /** Remove the UV geometry element from this geometry. + * \param pElementUV A pointer to the UV element to be removed. + * \return \c True if the geometry element is removed, \c false otherwise. + */ + bool RemoveElementUV(FbxGeometryElementUV* pElementUV); + + /** Returns this geometry's UV element. + * \param pIndex The UV geometry element index. + * \param pTypeIdentifier The texture channel the UVIndex refers to. + * \return A pointer to the geometry element or \c NULL if \e pIndex is out of range. + * \remarks If \e pTypeIdentifier is not specified, the function will return the geometry element + * regardless of its texture type. + */ + FbxGeometryElementUV* GetElementUV(int pIndex = 0, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eUnknown); + + /** Returns this geometry's UV element. + * \param pIndex The UV geometry element index. + * \param pTypeIdentifier The texture channel the UVIndex refers to. + * \return A const pointer to the geometry element or \c NULL if \e pIndex is out of range. + * \remarks If \e pTypeIdentifier is not specified, the function will return the geometry element + * regardless of its texture type. + */ + const FbxGeometryElementUV* GetElementUV(int pIndex = 0, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eUnknown) const; + + /** Get the number of this geometry's UV geometry element. + * \param pTypeIdentifier The texture channel the UVIndex refers to. + * \return Total number of UV geometry elements for this geometry. + * \remarks If \e pTypeIdentifier is not specified, the function will return the geometry element + * regardless of its texture type. + */ + int GetElementUVCount(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eUnknown) const; + + /** Returns this geometry's UV element. + * \param pUVSetName The UV set name of the UV geometry element. + * \return A pointer to the UV geometry element or \c NULL if no UV geometry element with this name exists. + */ + FbxGeometryElementUV* GetElementUV(const char* pUVSetName); + + /** Returns this geometry's UV element. + * \param pUVSetName The UV set name of the UV geometry element. + * \return A const pointer to the UV geometry element or \c NULL if no UV geometry element with this name exists. + */ + const FbxGeometryElementUV* GetElementUV(const char* pUVSetName) const; + + /** Returns this geometry's all UV set names. + * \param pUVSetNameList A reference to \c FbxStringList that will be filled with this geometry's all UV set names. + */ + void GetUVSetNames(FbxStringList& pUVSetNameList) const; + + //@} + + + /** + * \name Off-loading Serialization section + * The methods in this section are typically called by a peripheral (FbxPeripheral). There should be no + * real interest in calling them directly. The functions will write/read the memory dump of the data contained + * in this class. Each data block written/read will start with an (int) value representing the number of items + * in the array. If this value (v) is not zero, it will be followed by the array content. A block of data that is + * (v * sizeof(array item size)) bytes big. The methods will also call the parent class ones to dump the Layers content. + */ + //@{ + /** Writes the content of the geometry object to the specified stream. + * \param pStream The destination stream. + * \return \c True if the content is successfully processed + * by the receiving stream, \c false otherwise. + */ + virtual bool ContentWriteTo(FbxStream& pStream) const; + + /** Reads the content of the geometry object from the specified stream. + * \param pStream The source stream. + * \return \c True if the geometry object fills itself with the received data + * from the stream successfully, \c false otherwise. + */ + virtual bool ContentReadFrom(const FbxStream& pStream); + //@} + + /** Calculate the actual amount of memory used by this geometry object. + * \return The memory size in bytes (includes the amount use by the data defined in the layers). + */ + virtual int MemoryUsage() const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + virtual void Compact(); + + FbxArray mControlPoints; + + bool GetNormals(FbxLayerElementArrayTemplate** pLockableArray) const; + bool GetNormalsIndices(FbxLayerElementArrayTemplate** pLockableArray) const; + bool GetTangents(FbxLayerElementArrayTemplate** pLockableArray, const int pLayerIndex = 0) const; + bool GetTangentsIndices(FbxLayerElementArrayTemplate** pLockableArray, const int pLayerIndex = 0) const; + bool GetBinormals(FbxLayerElementArrayTemplate** pLockableArray, const int pLayerIndex = 0) const; + bool GetBinormalsIndices(FbxLayerElementArrayTemplate** pLockableArray, const int pLayerIndex = 0) const; + +protected: + virtual void ConstructProperties(bool pForceSet); + virtual void ContentClear(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_BASE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxgeometryweightedmap.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxgeometryweightedmap.h new file mode 100644 index 00000000..77b96bf9 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxgeometryweightedmap.h @@ -0,0 +1,87 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxgeometryweightedmap.h +#ifndef _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAP_H_ +#define _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAP_H_ + +#include + +#include +#include + +#include + +class FbxGeometry; + +/** \brief This class provides the structure to build a correspondence between 2 geometries. + * + * This correspondence is done at the vertex level. Which means that for each vertex in the + * source geometry, you can have from 0 to N corresponding vertices in the destination + * geometry. Each corresponding vertex is weighted. + * + * For example, if the source geometry is a NURB and the destination geometry is a mesh, + * the correspondence object will express the correspondence between the NURB's control vertices + * and the mesh's vertices. + * + * If the mesh corresponds to a tesselation of the NURB, the correspondence object can be used + * to transfer any deformation that affect the NURB's control vertices to the mesh's vertices. + * + * See FbxWeightedMapping for more details. + */ +class FBXSDK_DLL FbxGeometryWeightedMap : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxGeometryWeightedMap, FbxObject); + +public: + + /** Set correspondence values. + * \param pWeightedMappingTable Pointer to the table containing values + * \remark \e pWeightedMappingTable becomes owned by this object and will be destroyed by it + * when the object goes out of scope or on the next call to SetValues(). The deletion + * uses FbxDelete() so the content of the pointer must have been allocated with FbxNew<>() + */ + void SetValues(const FbxWeightedMapping* pWeightedMappingTable); + + /** Return correspondence values. + * \return Pointer to the correspondence values table. + */ + FbxWeightedMapping* GetValues() const; + + /** Return source geometry. + * \return Pointer to the source geometry, or \c NULL if there is no connected source geometry + */ + FbxGeometry* GetSourceGeometry(); + + /** Return destination geometry. + * \return Pointer to the destination geometry, or \c NULL if there is no connected destination geometry + */ + FbxGeometry* GetDestinationGeometry(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void Destruct(bool pRecursive); + + // Real weigths table + FbxWeightedMapping* mWeightedMapping; + +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAP_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxlayer.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxlayer.h new file mode 100644 index 00000000..ff1206e2 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxlayer.h @@ -0,0 +1,2801 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxlayer.h +#ifndef _FBXSDK_SCENE_GEOMETRY_LAYER_H_ +#define _FBXSDK_SCENE_GEOMETRY_LAYER_H_ + +#include + +#include +#include +#include +#include + +#include + +class FbxLayerElementArray; +class FbxLayerContainer; + +/** Base class for elements of layers (FbxLayer). + * A layer element type is identified by EType. + * A FbxLayerElement describes how the layer element is mapped to a geometry surface + * and how the mapping information is arranged in memory. + * A FbxLayerElement contains Normals, UVs or other kind of information. + * + * \see FbxLayer + * \see FbxLayerElement::EMappingMode + * \see FbxLayerElement::EReferenceMode + */ +class FBXSDK_DLL FbxLayerElement +{ +public: + /** \enum EType Layer Element type identifier. + * - \e eUnknown Undefined Layer Element class. + * - \e eNormal Layer Element of type FbxLayerElementNormal. + * - \e eBiNormal Layer Element of type FbxLayerElementBinormal. + * - \e eTangent Layer Element of type FbxLayerElementTangent. + * - \e eMaterial Layer Element of type FbxLayerElementMaterial. + * - \e eTextureDiffuse Layer Element of type FbxLayerElementTexture. + * - \e ePolygonGroup Layer Element of type FbxLayerElementPolygonGroup. + * - \e eUV Layer Element of type FbxLayerElementUV. + * - \e eVertexColor Layer Element of type FbxLayerElementVertexColor. + * - \e eSmoothing Layer Element of type FbxLayerElementSmoothing. + * - \e eVertexCrease Layer Element of type FbxLayerElementCrease. + * - \e eEdgeCrease Layer Element of type FbxLayerElementCrease. + * - \e eHole Layer Element of type FbxLayerElementHole. + * - \e eUserData Layer Element of type FbxLayerElementUserData. + * - \e eVisibility Layer Element of type FbxLayerElementVisibility. + * - \e eTextureEmissive Layer Element of type FbxLayerElementTexture. + * - \e eTextureEmissiveFactor Layer Element of type FbxLayerElementTexture. + * - \e eTextureAmbient Layer Element of type FbxLayerElementTexture. + * - \e eTextureAmbientFactor Layer Element of type FbxLayerElementTexture. + * - \e eTextureDiffuseFactor Layer Element of type FbxLayerElementTexture. + * - \e eTextureSpecular Layer Element of type FbxLayerElementTexture. + * - \e eTextureNormalMap Layer Element of type FbxLayerElementTexture. + * - \e eTextureSpecularFactor Layer Element of type FbxLayerElementTexture. + * - \e eTextureShininess Layer Element of type FbxLayerElementTexture. + * - \e eTextureBump Layer Element of type FbxLayerElementTexture. + * - \e eTextureTransparency Layer Element of type FbxLayerElementTexture. + * - \e eTextureTransparencyFactor Layer Element of type FbxLayerElementTexture. + * - \e eTextureReflection Layer Element of type FbxLayerElementTexture. + * - \e eTextureReflectionFactor Layer Element of type FbxLayerElementTexture. + * - \e eTextureDisplacement Layer Element of type FbxLayerElementTexture. + * - \e eTextureDisplacementVector Layer Element of type FbxLayerElementTexture. + * - \e eTypeCount + */ + enum EType + { + eUnknown, + + //Non-Texture layer element types + //Note: Make sure to update static index below if you change this enum! + eNormal, + eBiNormal, + eTangent, + eMaterial, + ePolygonGroup, + eUV, + eVertexColor, + eSmoothing, + eVertexCrease, + eEdgeCrease, + eHole, + eUserData, + eVisibility, + + //Texture layer element types + //Note: Make sure to update static index below if you change this enum! + eTextureDiffuse, + eTextureDiffuseFactor, + eTextureEmissive, + eTextureEmissiveFactor, + eTextureAmbient, + eTextureAmbientFactor, + eTextureSpecular, + eTextureSpecularFactor, + eTextureShininess, + eTextureNormalMap, + eTextureBump, + eTextureTransparency, + eTextureTransparencyFactor, + eTextureReflection, + eTextureReflectionFactor, + eTextureDisplacement, + eTextureDisplacementVector, + + eTypeCount + }; + + const static int sTypeTextureStartIndex = int(eTextureDiffuse); //!< The start index of texture type layer elements. + const static int sTypeTextureEndIndex = int(eTypeCount) - 1; //!< The end index of texture type layer elements. + const static int sTypeTextureCount = sTypeTextureEndIndex - sTypeTextureStartIndex + 1; //!< The count of texture type layer elements. + const static int sTypeNonTextureStartIndex = int(eNormal); //!< The start index of non-texture type layer elements. + const static int sTypeNonTextureEndIndex = int(eVisibility); //!< The end index of non-texture type layer elements. + const static int sTypeNonTextureCount = sTypeNonTextureEndIndex - sTypeNonTextureStartIndex + 1; //!< The count of non-texture type layer elements. + static const char* const sTextureNames[]; //!< Array of names of texture type layer elements. + static const char* const sTextureUVNames[]; //!< Array of names of UV layer elements. + static const char* const sNonTextureNames[]; //!< Array of names of non-texture type layer elements. + static const FbxDataType sTextureDataTypes[]; //!< Array of texture types. + static const char* const sTextureChannelNames[]; //!< Array of texture channels. + + /** \enum EMappingMode Determines how the element is mapped to a surface. + * - \e eNone The mapping is undetermined. + * - \e eByControlPoint There will be one mapping coordinate for each surface control point/vertex. + * - \e eByPolygonVertex There will be one mapping coordinate for each vertex, for every polygon of which it is a part. + This means that a vertex will have as many mapping coordinates as polygons of which it is a part. + * - \e eByPolygon There can be only one mapping coordinate for the whole polygon. + * - \e eByEdge There will be one mapping coordinate for each unique edge in the mesh. + This is meant to be used with smoothing layer elements. + * - \e eAllSame There can be only one mapping coordinate for the whole surface. + */ + enum EMappingMode + { + eNone, + eByControlPoint, + eByPolygonVertex, + eByPolygon, + eByEdge, + eAllSame + }; + + /** \enum EReferenceMode Determines how the mapping information is stored in the array of coordinates. + * - \e eDirect This indicates that the mapping information for the n'th element is found in the n'th place of + FbxLayerElementTemplate::mDirectArray. + * - \e eIndex, This symbol is kept for backward compatibility with FBX v5.0 files. In FBX v6.0 and higher, + this symbol is replaced with eIndexToDirect. + * - \e eIndexToDirect This indicates that the FbxLayerElementTemplate::mIndexArray + contains, for the n'th element, an index in the FbxLayerElementTemplate::mDirectArray + array of mapping elements. eIndexToDirect is usually useful for storing eByPolygonVertex mapping + mode elements coordinates. Since the same coordinates are usually + repeated many times, this saves spaces by storing the coordinate only one time + and then referring to them with an index. Materials and Textures are also referenced with this + mode and the actual Material/Texture can be accessed via the FbxLayerElementTemplate::mDirectArray + */ + enum EReferenceMode + { + eDirect, + eIndex, + eIndexToDirect + }; + + + /** Sets the Mapping Mode. + * \param pMappingMode Specifies the way that layer element is mapped to a surface. + */ + void SetMappingMode(EMappingMode pMappingMode) { mMappingMode = pMappingMode; } + + /** Sets the Reference Mode. + * \param pReferenceMode Specifies the reference mode. + */ + void SetReferenceMode(EReferenceMode pReferenceMode) { mReferenceMode = pReferenceMode; } + + /** Returns the Mapping Mode. + * \return The current Mapping Mode. + */ + EMappingMode GetMappingMode() const { return mMappingMode; } + + /** Returns the Reference Mode. + * \return The current Reference Mode. + */ + EReferenceMode GetReferenceMode() const { return mReferenceMode; } + + /** Sets the name of this object. + * \param pName Specifies the name of this LayerElement object. + */ + void SetName(const char* pName) { mName = FbxString(pName); } + + /** Returns the name of this object. + * \return The current name of this LayerElement object. + */ + const char* GetName() const { return ((FbxLayerElement*)this)->mName.Buffer(); } + + /** Equivalence operator + * \param pOther Layer element to be compared. + * \return \c True if equal, \c false otherwise. + */ + bool operator==(const FbxLayerElement& pOther) const + { + return (mName == pOther.mName) && + (mMappingMode == pOther.mMappingMode) && + (mReferenceMode == pOther.mReferenceMode); + } + + /** Assignment operator + * \param pOther Layer element assigned to this one. + * \return This layer element after assignment. + */ + FbxLayerElement& operator=( FbxLayerElement const& pOther ) + { + mMappingMode = pOther.mMappingMode; + mReferenceMode = pOther.mReferenceMode; + // name, type and owner should not be copied because they are + // initialized when this object is created + return *this; + } + + //! Removes this layer element from its owner and delete it. + void Destroy(); + + //! Clears all the data from this layer element. + virtual bool Clear() + { + return true; + } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + void SetType(const FbxDataType* pType) { mType = pType; } + const FbxLayerContainer* GetOwner() const { return mOwner; } + +protected: + FbxLayerElement() + : mMappingMode(eNone) + , mReferenceMode(eDirect) + , mName("") + , mOwner(NULL) + { + } + + virtual ~FbxLayerElement() + { + } + + EMappingMode mMappingMode; + EReferenceMode mReferenceMode; + + FbxString mName; + const FbxDataType* mType; + FbxLayerContainer* mOwner; + + void Destruct() { FbxDelete(this); } + virtual void SetOwner(FbxLayerContainer* pOwner, int pInstance = 0); + + FBXSDK_FRIEND_NEW(); + +public: + virtual int MemorySize() const { return 0; } + virtual bool ContentWriteTo(FbxStream& pStream) const; + virtual bool ContentReadFrom(const FbxStream& pStream); + + friend class FbxLayerContainer; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** \internal + * Identifies what error occurs when the data arrays are manipulated. + * \nosubgrouping + */ + +class FBXSDK_DLL LockAccessStatus +{ +public: + /** \internal + * \enum ELockAccessStatus Identifies what error occurs when the data arrays are manipulated. + * - \e eSuccess Operation Successful. + * - \e eUnsupportedDTConversion Attempts to convert to an unsupported DataType. + * - \e eCorruptedCopyback The Release of a converted buffer fails and corrupts the main data. + * - \e eBadValue Invalid value. + * - \e eLockMismatch Attempts to change to an incompatible lock. + * - \e eNoWriteLock A write operation is attempted but no WriteLock is available. + * - \e eNoReadLock A read operation is attempted but the WriteLock is active. + * - \e eNotOwner Attempts to release a lock on an invalid data buffer pointer. + * - \e eDirectLockExist A direct access lock is still active. + */ + enum ELockAccessStatus + { + eSuccess, + eUnsupportedDTConversion, + eCorruptedCopyback, + eBadValue, + eLockMismatch, + eNoWriteLock, + eNoReadLock, + eNotOwner, + eDirectLockExist + }; +}; + +//Special conversion types, we do not want them to resolve to undefined. +typedef FbxHandle* FbxRefPtr; +typedef FbxLayerElementArray* FbxLayerElementArrayPtr; +typedef FbxSurfaceMaterial* FbxSurfaceMaterialPtr; +typedef FbxTexture* FbxTexturePtr; + +inline EFbxType FbxTypeOf(const FbxRefPtr&){ return eFbxReference; } +inline EFbxType FbxTypeOf(const FbxLayerElementArrayPtr&){ return eFbxReference; } +inline EFbxType FbxTypeOf(const FbxSurfaceMaterialPtr&){ return eFbxReference; } +inline EFbxType FbxTypeOf(const FbxTexturePtr&){ return eFbxReference; } + +/** FbxLayerElementArray is the base class for FbxLayerElementArrayTemplate, + * it provides lock handling and data array manipulation of the data buffer for FbxLayerElement. + * \nosubgrouping + */ + +class FBXSDK_DLL FbxLayerElementArray +{ +public: + /** + * \name Constructor and Destructor + */ + //@{ + + /** Constructor. + * \param pDataType The data type of the items in the data array. + */ + FbxLayerElementArray(EFbxType pDataType); + + //!Destructor. + virtual ~FbxLayerElementArray(); + + //@} + + /** + * \name Status handling + */ + //@{ + + //!Clears the access state and sets it to eSuccess. + inline void ClearStatus() { mStatus = LockAccessStatus::eSuccess; } + + //!Retrieves the access state. + inline LockAccessStatus::ELockAccessStatus GetStatus() const { return mStatus; } + //@} + + /** + * \name Locks handling + */ + //@{ + + /** Returns whether write is locked. + * \return \c True if write is locked, \c false otherwise. + */ + inline bool IsWriteLocked() const { return mWriteLock; }; + + /** Retrieves the read lock count. + * \return The read lock count. + */ + inline int GetReadLockCount() const { return mReadLockCount; } + //@} + + /** Returns whether this Array is accessed in any way. + * \return \c True if it is in use, \c false otherwise. + */ + bool IsInUse() const; + + /** Increments the number of read locks on this array. + * \return The current number of read locks (including the one just grabbed) or 0 if a write lock is active. + */ + int ReadLock() const; + + /** Releases a read lock on this array. + * \return The remaining read locks or -1 if a write lock is active. + */ + int ReadUnlock() const; + + /** Locks this array for writing. The data in the array is wiped out. + * \return \c True if a write lock has been successfully granted, \c false if one or more read locks + * are active. + */ + bool WriteLock() const; + + /** Releases the write lock on this array. + */ + void WriteUnlock() const; + + /** Locks this array for writing. The data that already exists in the array is kept and is valid. + * \return \c True if a write lock has been successfully granted, \c false if one or more read locks + * are active. + */ + bool ReadWriteLock() const; + + /** Releases the write lock on this array. + */ + void ReadWriteUnlock() const; + + + /** \enum ELockMode Identifies the access mode to the data buffer. + * - \e eReadLock Read mode. + * - \e eWriteLock Write mode. + * - \e eReadWriteLock Read-write mode. + */ + enum ELockMode + { + eReadLock = 1, + eWriteLock = 2, + eReadWriteLock = 3 + }; + + /** Grants a locked access to the data buffer. + * \param pLockMode Access mode to the data buffer. + * \param pDataType If defined, tries to return the data as this type. + * \return A pointer to the data buffer or NULL if a failure occurs. + * \remarks In the case of a failure, the Status is updated with the + * reason for the failure. Also, when a type conversion occurs, a second buffer + * of the new type is allocated. In this case, the LockMode does not apply to the + * returned buffer since it is a copy but it does apply to the internal data of this + * object. The returned buffer still remains a property of this object and is + * deleted when the pointer is released or the object is destroyed. At the moment of + * release or destruction, the values in this buffer are copied back into this object. + */ + virtual void* GetLocked(ELockMode pLockMode, EFbxType pDataType); + + /** Grants a locked access to the data buffer. + * \param pLockMode Access mode to the data buffer. + * \return A pointer to the data buffer or NULL if a failure occurs. + * \remarks In the case of a failure, the Status is updated with the + * reason for the failure. Also, when a type conversion occurs, a second buffer + * of the new type is allocated. In this case, the LockMode does not apply to the + * returned buffer since it is a copy but it does apply to the internal data of this + * object. The returned buffer still remains a property of this object and is + * deleted when the pointer is released or the object is destroyed. At the moment of + * release or destruction, the values in this buffer are copied back into this object. + */ + void* GetLocked(ELockMode pLockMode=eReadWriteLock) { return GetLocked(pLockMode, mDataType); } + + /** Grants a locked access to the data buffer. + * \param pLockMode Access mode to the data buffer. + * \return A pointer to the data buffer or NULL if a failure occurs. + * \remarks In the case of a failure, the Status is updated with the + * reason for the failure. Also, when a type conversion occurs, a second buffer + * of the new type is allocated. In this case, the LockMode does not apply to the + * returned buffer since it is a copy but it does apply to the internal data of this + * object. The returned buffer still remains a property of this object and is + * deleted when the pointer is released or the object is destroyed. At the moment of + * release or destruction, the values in this buffer are copied back into this object. + */ + template inline T* GetLocked(T*, ELockMode pLockMode=eReadWriteLock) {T v; return (T*)GetLocked(pLockMode, FbxTypeOf(v)); } + + /** Unlock the data buffer. + * \param pDataPtr The buffer to be released. + * \param pDataType The data type of the data buffer. + * \remarks The passed pointer must be the one obtained by the call to GetLocked(). + * Any other pointer causes this method to fail and the Status is updated with + * the reason for the failure. If the passed pointer refers a converted data + * buffer (see comment of GetLocked), this method copies the GetCount() items + * of the received buffer back into this object. Any other items that may have been added + * using a realloc call are ignored. + */ + virtual void Release(void** pDataPtr, EFbxType pDataType); + + /** Unlock the data buffer. + * \param pDataPtr The buffer to be released. + * \remarks The passed pointer must be the one obtained by the call to GetLocked(). + * Any other pointer causes this method to fail and the Status is updated with + * the reason for the failure. If the passed pointer refers a converted data + * buffer (see comment of GetLocked), this method copies the GetCount() items + * of the received buffer back into this object. Any other items that may have been added + * using a realloc call are ignored. + */ + void Release(void** pDataPtr) { Release(pDataPtr, mDataType); } + + /** Unlock the data buffer. + * \param pDataPtr The buffer to be released. + * \param dummy The data type of dummy is used to specialize this function. + * \remarks The passed pointer must be the one obtained by the call to GetLocked(). + * Any other pointer causes this method to fail and the Status is updated with + * the reason for the failure. If the passed pointer refers a converted data + * buffer (see comment of GetLocked), this method copies the GetCount() items + * of the received buffer back into this object. Any other items that may have been added + * using a realloc call are ignored. + */ + template inline void Release(T** pDataPtr, T* dummy) + { + T*** voidPtr = &pDataPtr; + Release((void**)*voidPtr, FbxTypeOf(*dummy)); + } + + /** Returns the Stride size which equals the size of the data type of the data buffer. + */ + virtual size_t GetStride() const; + + /** + * \name Data array manipulation + */ + //@{ + + //! Returns the count of items in the data buffer. + int GetCount() const; + + /** Sets the count of items in the data buffer. + * \param pCount The count of items to be set. + */ + void SetCount(int pCount); + + //! Clears the data buffer. + void Clear(); + + /** Resizes the data buffer. + * \param pItemCount The new size of the data buffer. + */ + void Resize(int pItemCount); + + /** Appends space to the data buffer. + * \param pItemCount The appended space size + */ + void AddMultiple(int pItemCount); + + /** Appends a new item to the end of the data buffer. + * \param pItem Pointer of the new item to be added + * \param pValueType Data type of the new item + * \return The index of the new item + */ + int Add(const void* pItem, EFbxType pValueType); + + /** Inserts a new item at the specified position of the data buffer. + * \param pIndex The specified position + * \param pItem Pointer of the new item to be inserted + * \param pValueType Data type of the new item + * \return The index of the inserted item + * \remarks The input index must be within valid range and no error will be thrown if it is invalid. + */ + int InsertAt(int pIndex, const void* pItem, EFbxType pValueType); + + /** Sets the value for the specified item. + * \param pIndex The index of the item to be updated. + * \param pItem Pointer of the item whose value is copied to pIndex'th item + * \param pValueType Data type of the item + * \remarks The input index must be within valid range and no error will be thrown if it is invalid. + */ + void SetAt(int pIndex, const void* pItem, EFbxType pValueType); + + /** Sets the value of the last item. + * \param pItem Pointer of the item whose value is copied to the last item + * \param pValueType Data type of the item + * \remarks The array should contain at least one item and no error will be thrown if it is empty. + */ + void SetLast(const void* pItem, EFbxType pValueType); + + /** Removes the specified item from the data buffer. + * \param pIndex The index of the item to be removed + * \param pItem Place to hold the value of the removed item. + * \param pValueType Data type of the item + * \remarks The input index must be within valid range and no error will be thrown if it is invalid. + */ + void RemoveAt(int pIndex, void** pItem, EFbxType pValueType); + + /** Removes the last item from the data buffer. + * \param pItem Place to hold the value of the removed item. + * \param pValueType Data type of the item + * \remarks The array should contain at least one item and no error will be thrown if it is empty. + */ + void RemoveLast(void** pItem, EFbxType pValueType); + + /** Removes one item from the data buffer. + * \param pItem The first item who equals pItem is to be removed + * \param pValueType Data type of the item + * \return \c True if the item is removed successfully, \c false otherwise + */ + bool RemoveIt(void** pItem, EFbxType pValueType); + + /** Returns the specified item's value. + * \param pIndex Index of the item + * \param pItem Place to hold the item's value + * \param pValueType Data type of the item + * \return \c True if the item's value is returned successfully, \c false otherwise + * \remarks If the index is invalid, pItem is set to zero. + */ + bool GetAt(int pIndex, void** pItem, EFbxType pValueType) const; + + /** Returns the first item's value. + * \param pItem Place to hold the item's value + * \param pValueType Data type of the item + * \return \c True if the item's value is returned successfully, \c false otherwise + */ + bool GetFirst(void** pItem, EFbxType pValueType) const; + + /** Returns the last item's value. + * \param pItem Place to hold the item's value + * \param pValueType Data type of the item + * \return \c True if the item's value is returned successfully, \c false otherwise + */ + bool GetLast(void** pItem, EFbxType pValueType) const; + + /** Searches for an item in the data buffer. + * \param pItem The value of the item for which to search. + * \param pValueType Data type of the item + * \return The index of the item found, -1 if not found. + * \remarks The index of the first item whose value equals pItem is returned. + */ + int Find(const void* pItem, EFbxType pValueType) const; + + /** Searches for an item after the specified index in the data buffer. + * \param pAfterIndex The specified index after which the searching begins + * \param pItem The value of the item for which to search, the searching begins after pAfterIndex. + * \param pValueType Data type of the item + * \return The index of the item found, -1 if not found. + * \remarks The index of the first item whose value equals pItem is returned. + */ + int FindAfter(int pAfterIndex, const void* pItem, EFbxType pValueType) const; + + /** Searches for an item before the specified index in the data buffer. + * \param pBeforeIndex The specified index before which the searching begins + * \param pItem The value of the item for which to search, the searching begins before pBeforeIndex. + * \param pValueType The item's data type. + * \return The index of the item found, -1 if not found. + * \remarks The index of the first item whose value equals pItem is returned. + */ + int FindBefore(int pBeforeIndex, const void* pItem, EFbxType pValueType) const; + + /** Equivalence operator + * \param pArray Array compared to this one + * \return \c True if equal. \c false otherwise. + */ + bool IsEqual(const FbxLayerElementArray& pArray) const; + + /** Appends a new item to the end of the data buffer. + * \param pItem The new item to be added + * \return The index of the new item + */ + template inline int Add(T const& pItem) { return Add((const void*)&pItem, FbxTypeOf(pItem)); } + + /** Inserts a new item at the specified position of the data buffer. + * \param pIndex The specified position + * \param pItem The new item to be inserted + * \return The index of the inserted item + * \remarks The input index must be within valid range and no error will be thrown if it is invalid. + */ + template inline int InsertAt(int pIndex, T const& pItem) { return InsertAt(pIndex, (const void*)&pItem, FbxTypeOf(pItem)); } + + /** Sets the value of the specified item. + * \param pIndex The index of the item to be updated. + * \param pItem The item whose value is copied to pIndex'th item + * \remarks The input index must be within valid range and no error will be thrown if it is invalid. + */ + template inline void SetAt(int pIndex, T const& pItem) { SetAt(pIndex, (const void*)&pItem, FbxTypeOf(pItem)); } + + /** Sets the value of the last item. + * \param pItem The item whose value is copied to the last item + * \remarks The array should contain at least one item and no error will be thrown if it is empty. + */ + template inline void SetLast(T const& pItem) { SetLast((const void*)&pItem, FbxTypeOf(pItem)); } + + /** Removes the specified item from the data buffer. + * \param pIndex The index of the item to be removed + * \param pItem Place to hold the value of the removed item. + * \remarks The input index must be within valid range and no error will be thrown if it is invalid. + */ + template inline void RemoveAt(int pIndex, T* pItem) + { + T** voidPtr = &pItem; + RemoveAt(pIndex, (void**)voidPtr, FbxTypeOf(*pItem)); + } + + /** Removes the last item from the data buffer. + * \param pItem Place to hold the value of the removed item. + * \remarks The array should contain at least one item and no error will be thrown if it is empty. + */ + template inline void RemoveLast(T* pItem) + { + T** voidPtr = &pItem; + RemoveLast((void**)voidPtr, FbxTypeOf(*pItem)); + } + + /** Removes one item from the data buffer. + * \param pItem The first item who equals pItem is to be removed + * \return \c True if the item is removed successfully, \c false otherwise + */ + template inline bool RemoveIt(T* pItem) + { + T** voidPtr = &pItem; + return RemoveIt((void**)voidPtr, FbxTypeOf(*pItem)); + } + + /** Returns the specified item's value. + * \param pIndex Index of the item + * \param pItem Place to hold the item's value + * \return \c True if the item's value is returned successfully, \c false otherwise + * \remarks If the index is invalid, pItem is set to zero. + */ + template inline bool GetAt(int pIndex, T* pItem) const + { + T** voidPtr = &pItem; + return GetAt(pIndex, (void**)voidPtr, FbxTypeOf(*pItem)); + } + + /** Returns the first item's value. + * \param pItem Place to hold the item's value + * \return \c True if the item's value is returned successfully, \c false otherwise + */ + template inline bool GetFirst(T* pItem) const + { + T** voidPtr = &pItem; + return GetFirst((void**)voidPtr, FbxTypeOf(*pItem)); + } + + /** Returns the last item's value. + * \param pItem Place to hold the item's value + * \return \c True if the item's value is returned successfully, \c false otherwise + */ + template inline bool GetLast(T* pItem) const + { + T** voidPtr = &pItem; + return GetLast((void**)voidPtr, FbxTypeOf(*pItem)); + } + + /** Searches for an item in the data buffer. + * \param pItem The value of the item for which to search. + * \return The index of the item found, -1 if not found. + * \remarks The index of the first item whose value equals pItem is returned. + */ + template inline int Find(T const& pItem) const { return Find((const void*)&pItem, FbxTypeOf(pItem)); } + + /** Searches for an item after the specified index in the data buffer. + * \param pAfterIndex The specified index after which the searching begins + * \param pItem The value of the item for which to search, the searching begins after pAfterIndex. + * \return The index of the item found, -1 if not found. + * \remarks The index of the first item whose value equals pItem is returned. + */ + template inline int FindAfter(int pAfterIndex, T const& pItem) const { return FindAfter(pAfterIndex, (const void*)&pItem, FbxTypeOf(pItem)); } + + /** Searches for one item before the specified index in the data buffer. + * \param pBeforeIndex The specified index before which the searching begins + * \param pItem The value of the item for which to search, the searching begins before pBeforeIndex. + * \return The index of the item found, -1 if not found. + * \remarks The index of the first item whose value equals pItem is returned. + */ + template inline int FindBefore(int pBeforeIndex, T const& pItem) const { return FindBefore(pBeforeIndex, (const void*)&pItem, FbxTypeOf(pItem)); } + + + /** Copies the items in the data buffer to an array. + * \param pDst The destination array where the items are to be copied. + */ + template inline void CopyTo(FbxArray& pDst) + { + T src; + T* srcPtr = &src; + + pDst.Clear(); + if (mDataType != FbxTypeOf(src)) + { + SetStatus(LockAccessStatus::eUnsupportedDTConversion); + return; + } + + pDst.Resize(GetCount()); + for (int i = 0; i < GetCount(); i++) + { + if (GetAt(i, (void**)&srcPtr, mDataType)) + { + pDst.SetAt(i, src); + } + } + SetStatus(LockAccessStatus::eSuccess); + } + //@} + +protected: + void* GetDataPtr(); + void* GetReference(int pIndex, EFbxType pValueType); + void GetReferenceTo(int pIndex, void** pRef, EFbxType pValueType); + + inline void SetStatus(LockAccessStatus::ELockAccessStatus pVal) const + { + const_cast(this)->mStatus = pVal; + } + + void SetImplementation(void* pImplementation); + inline void* GetImplementation() { return mImplementation; } + virtual void ConvertDataType(EFbxType pDataType, void** pDataPtr, size_t* pStride); + + EFbxType mDataType; + +private: + LockAccessStatus::ELockAccessStatus mStatus; + + int mReadLockCount; + bool mWriteLock; + void* mImplementation; + size_t mStride; + int mDirectLockOn; + bool mDirectAccessOn; + + FbxArray mConvertedData; + +}; + +/** \internal + * This class provides simple RAII-style read locking of a FbxLayerElementArray object. + */ +template +struct FbxLayerElementArrayReadLock +{ + /** \internal + * On construction, this class requires the read lock. + */ + FbxLayerElementArrayReadLock(FbxLayerElementArray& pArray) : mArray(pArray) + { + mLockedData = mArray.GetLocked((T*)NULL, FbxLayerElementArray::eReadLock); + } + + /** \internal + * On destruction, this class releases the read lock. + */ + ~FbxLayerElementArrayReadLock() + { + if( mLockedData ) + { + mArray.Release((void **) &mLockedData); + } + } + + /** \internal + * Retrieve the locked array data. + */ + const T* GetData() const + { + return mLockedData; + } + +private: + FbxLayerElementArray& mArray; + T* mLockedData; +}; + +class FbxLayerElementUserData; + +/** FbxLayerElementArrayTemplate provides data array manipulation of the data buffer for FbxLayerElement. + * It is the subclass of FbxLayerElementArray. + * \nosubgrouping + */ +template class FbxLayerElementArrayTemplate : public FbxLayerElementArray +{ +public: + + /** Constructor + * \param pDataType The data type of the array items. + */ + FbxLayerElementArrayTemplate(EFbxType pDataType) : + FbxLayerElementArray(pDataType) + { + } + + /** Appends a new item to the end of the data buffer. + * \param pItem The new item to be added + * \return The index of the new item + */ + inline int Add( T const &pItem ) { return FbxLayerElementArray::Add(pItem); } + + /** Inserts a new item at the specified position of the data buffer. + * \param pIndex The specified position + * \param pItem The new item to be inserted + * \return The index of the inserted item + */ + inline int InsertAt(int pIndex, T const &pItem) { return FbxLayerElementArray::InsertAt(pIndex, pItem); } + + /** Sets the value of the specified item. + * \param pIndex The index of the item to be updated. + * \param pItem The item whose value is copied to pIndex'th item + */ + inline void SetAt(int pIndex, T const &pItem) { FbxLayerElementArray::SetAt(pIndex, pItem); } + + /** Sets the value of the last item. + * \param pItem The item whose value is copied to the last item + */ + inline void SetLast( T const &pItem) { FbxLayerElementArray::SetLast(pItem); } + + /** Removes the specified item from the data buffer. + * \param pIndex The index of the item to be removed + * \return The value of the item removed + */ + inline T RemoveAt(int pIndex) { T lValue; FbxLayerElementArray::RemoveAt(pIndex, &lValue); return lValue; } + + /** Removes the last item from the data buffer. + * \return The value of the last item removed + */ + inline T RemoveLast() { T lValue; FbxLayerElementArray::RemoveLast(&lValue); return lValue; } + + /** Removes one item from the data buffer. + * \param pItem The first item who equals pItem is to be removed + * \return \c True if the item is removed successfully, \c false otherwise + */ + inline bool RemoveIt(T const &pItem) { return FbxLayerElementArray::RemoveIt(&pItem); } + + /** Returns the specified item's value. + * \param pIndex Index of the item + * \return The value of the specified item + * \remarks If the index is invalid, pItem is set to zero. + */ + inline T GetAt(int pIndex) const { T lValue; FbxLayerElementArray::GetAt(pIndex, &lValue); return lValue; } + + /** Returns the first item's value. + * \return The first item's value. + */ + inline T GetFirst() const { T lValue; FbxLayerElementArray::GetFirst(&lValue); return lValue; } + + /** Returns the last item's value. + * \return The last item's value. + */ + inline T GetLast() const { T lValue; FbxLayerElementArray::GetLast(&lValue); return lValue; } + + /** Searches for an item in the data buffer. + * \param pItem The value of the item for which to search + * \return The index of the item found, -1 if not found. + * \remarks The index of the first item whose value equals pItem is returned. + */ + inline int Find(T const &pItem) { return FbxLayerElementArray::Find(pItem); } + + /** Searches for an item after the specified index in the data buffer. + * \param pAfterIndex The specified index after which the searching begins + * \param pItem The value of the item for which to search, the searching begins after pAfterIndex. + * \return The index of the item found, -1 if not found. + * \remarks The index of the first item whose value equals pItem is returned. + */ + inline int FindAfter(int pAfterIndex, T const &pItem) { return FbxLayerElementArray::FindAfter(pAfterIndex, pItem); } + + /** Searches for one item before the specified index in the data buffer. + * \param pBeforeIndex The specified index before which the searching begins + * \param pItem The value of the item for which to search, the searching begins before pBeforeIndex. + * \return The index of the item found, -1 if not found. + * \remarks The index of the first item whose value equals pItem is returned. + */ + inline int FindBefore(int pBeforeIndex, T const &pItem) { return FbxLayerElementArray::FindBefore(pBeforeIndex, pItem); } + + /** Returns the specified item's value. + * \param pIndex Index of the item + * \return The value of the item + * \remarks If the index is invalid, pItem is set to zero. + */ + T operator[](int pIndex) const { T lValue; FbxLayerElementArray::GetAt(pIndex, &lValue); return lValue; } + + /** Assignment operator. + * \param pArrayTemplate The source array whose items are copied to this array. + */ + FbxLayerElementArray& operator=(const FbxArray& pArrayTemplate) + { + SetStatus(LockAccessStatus::eNoWriteLock); + if (WriteLock()) + { + SetCount(pArrayTemplate.GetCount()); + for (int i = 0; i < pArrayTemplate.GetCount(); i++) + SetAt(i, pArrayTemplate.GetAt(i)); + WriteUnlock(); + SetStatus(LockAccessStatus::eSuccess); + } + return *this; + } + + /** Assignment operator. + * \param pArrayTemplate The source array whose items are copied to this array. + */ + FbxLayerElementArrayTemplate& operator=(const FbxLayerElementArrayTemplate& pArrayTemplate) + { + if ( this != &pArrayTemplate ) + { + SetStatus(LockAccessStatus::eNoWriteLock); + if (WriteLock()) + { + SetCount(pArrayTemplate.GetCount()); + for (int i = 0; i < pArrayTemplate.GetCount(); i++) + SetAt(i, pArrayTemplate.GetAt(i)); + WriteUnlock(); + SetStatus(LockAccessStatus::eSuccess); + } + } + return *this; + } + +private: + // This one is not the best thing to do, but at least I don't get deprecated calls inside this file. + // Note that FbxLayerElementUserData is kind of a weird class in the first place anyway. So either + // we clean it up, or we live with this piece of code ;-) + friend class FbxLayerElementUserData; + T& AsReference(int pIndex) { T* v = (T*)FbxLayerElementArray::GetReference(pIndex, mDataType); return (v)?*v:dummy;} + + T dummy; +}; + + +/** Remap the index array to a new EMappingMode + * \param pLayerEl The layer element to remap + * \param pNewMapping The new mapping mode + * \param pIndexArray The index array to modify + * \return return -1 if the layer element is FbxLayerElement::eDirect + * 0 if layer element or index array is \c NULL and 1 if the remap is successful + */ +extern FBXSDK_DLL int RemapIndexArrayTo(FbxLayerElement* pLayerEl, + FbxLayerElement::EMappingMode pNewMapping, + FbxLayerElementArrayTemplate* pIndexArray); + + +/** This class complements the FbxLayerElement class. + * It provides interfaces to access the direct array and index array of different layer elements. + * \nosubgrouping + */ +template class FbxLayerElementTemplate : public FbxLayerElement +{ +public: + + /** Returns the direct array of Layer Elements. + * \return A reference to the Layer Elements direct array. + * \remarks You cannot put elements in the direct array when the reference mode is set to eIndex. + */ + FbxLayerElementArrayTemplate& GetDirectArray() const + { + FBX_ASSERT(mReferenceMode == FbxLayerElement::eDirect || mReferenceMode == FbxLayerElement::eIndexToDirect); + return *mDirectArray; + } + + /** Returns the direct array of Layer Elements. + * \return A reference to the Layer Elements direct array. + * \remarks You cannot put elements in the direct array when the reference mode is set to eIndex. + */ + FbxLayerElementArrayTemplate& GetDirectArray() + { + FBX_ASSERT(mReferenceMode == FbxLayerElement::eDirect || mReferenceMode == FbxLayerElement::eIndexToDirect); + return *mDirectArray; + } + + /** Returns the index array of Layer Elements. + * \return A reference to the index array. + * \remarks You cannot put elements in the index array when the mapping mode is set to eDirect. + */ + FbxLayerElementArrayTemplate& GetIndexArray() const + { + FBX_ASSERT(mReferenceMode == FbxLayerElement::eIndex || mReferenceMode == FbxLayerElement::eIndexToDirect); + return *mIndexArray; + } + + /** Returns the index array of Layer Elements. + * \return A reference to the index array. + * \remarks You cannot put elements in the index array when the mapping mode is set to eDirect. + */ + FbxLayerElementArrayTemplate& GetIndexArray() + { + FBX_ASSERT(mReferenceMode == FbxLayerElement::eIndex || mReferenceMode == FbxLayerElement::eIndexToDirect); + return *mIndexArray; + } + + /** Removes all elements from the direct and the index arrays. + * \remarks This function fails if there is a lock on the arrays. + * \return \c True if successful, \c false if a lock is present. + */ + bool Clear() + { + bool ret = true; + mDirectArray->Clear(); + ret = (mDirectArray->GetStatus() == LockAccessStatus::eSuccess); + + mIndexArray->Clear(); + ret |= (mIndexArray->GetStatus() == LockAccessStatus::eSuccess); + + return ret; + } + +public: + + /** Equivalence operator. + * \param pOther Another element compared to this object + * \return \c True if equal, \c false if unequal. + */ + bool operator==(const FbxLayerElementTemplate& pOther) const + { + bool ret = true; + + if (pOther.GetReferenceMode() == FbxLayerElement::eDirect || + pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect) + { + const FbxLayerElementArrayTemplate& directArray = pOther.GetDirectArray(); + if( directArray.GetCount() != mDirectArray->GetCount() || + !directArray.ReadLock() || !mDirectArray->ReadLock() ) + { + ret = false; + } + + if( ret && !mDirectArray->IsEqual(directArray) ) + ret = false; + + directArray.ReadUnlock(); + mDirectArray->ReadUnlock(); + } + + if (ret) + { + if (pOther.GetReferenceMode() == FbxLayerElement::eIndex || + pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect) + { + const FbxLayerElementArrayTemplate& indexArray = pOther.GetIndexArray(); + if( indexArray.GetCount() != mIndexArray->GetCount() || + !indexArray.ReadLock() || !mIndexArray->ReadLock() ) + { + ret = false; + } + + if( ret && !mIndexArray->IsEqual(indexArray) ) + ret = false; + + indexArray.ReadUnlock(); + mIndexArray->ReadUnlock(); + } + } + + if (ret == false) + return false; + + return FbxLayerElement::operator==(pOther); + } + + /** Assignment operator. + * \param pOther Another element assigned to this one + */ + FbxLayerElementTemplate& operator=( FbxLayerElementTemplate const& pOther ) + { + FBX_ASSERT(mDirectArray != NULL); + FBX_ASSERT(mIndexArray != NULL); + + if (pOther.GetReferenceMode() == FbxLayerElement::eDirect || + pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect) + { + const FbxLayerElementArrayTemplate& directArray = pOther.GetDirectArray(); + *mDirectArray = directArray; + } + + if (pOther.GetReferenceMode() == FbxLayerElement::eIndex || + pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect) + { + const FbxLayerElementArrayTemplate& indexArray = pOther.GetIndexArray(); + *mIndexArray = indexArray; + } + + FbxLayerElement* myself = (FbxLayerElement*)this; + FbxLayerElement* myOther = (FbxLayerElement*)&pOther; + *myself = *myOther; + return *this; + } + + /** Changes the Mapping mode to the new one and re-computes the index array. + * \param pNewMapping New mapping mode. + * \return If the remapping is successful, returns 1. + * If an error occurs, returns 0. In case the function cannot + * remap to the desired mode because of incompatible modes or + * unsupported modes, returns -1. + */ + int RemapIndexTo(FbxLayerElement::EMappingMode pNewMapping) + { + return RemapIndexArrayTo(this, pNewMapping, mIndexArray); + } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + FbxLayerElementTemplate() + { + mDirectArray = NULL; + mIndexArray = NULL; + } + + ~FbxLayerElementTemplate() + { + FbxDelete(mDirectArray); + FbxDelete(mIndexArray); + } + + virtual void AllocateArrays() + { + mDirectArray = FbxNew< FbxLayerElementArrayTemplate >(mType->GetType()); + mIndexArray = FbxNew< FbxLayerElementArrayTemplate >(FbxIntDT.GetType()); + } + +public: + virtual int MemorySize() const + { + int size = FbxLayerElement::MemorySize(); + size += (mDirectArray->GetCount()*sizeof(Type)); + size += (mIndexArray->GetCount()*sizeof(int)); + return size; + } + + /** + * \name Serialization section + */ + //@{ + virtual bool ContentWriteTo(FbxStream& pStream) const + { + void* a; + int s,v; + int count = 0; + + // direct array + count = mDirectArray->GetCount(); + s = pStream.Write(&count, sizeof(int)); + if (s != sizeof(int)) return false; + if (count > 0) + { + a = mDirectArray->GetLocked(); + FBX_ASSERT(a != NULL); + v = count*sizeof(Type); + s = pStream.Write(a, v); + mDirectArray->Release(&a); + if (s != v) return false; + } + + // index array + count = mIndexArray->GetCount(); + s = pStream.Write(&count, sizeof(int)); + if (s != sizeof(int)) return false; + if (count > 0) + { + a = mIndexArray->GetLocked(); + FBX_ASSERT(a != NULL); + v = count*sizeof(int); + s = pStream.Write(a, v); + mIndexArray->Release(&a); + if (s != v) return false; + } + + return FbxLayerElement::ContentWriteTo(pStream); + } + + virtual bool ContentReadFrom(const FbxStream& pStream) + { + void* a; + int s,v; + int count = 0; + + // direct array + s = pStream.Read(&count, sizeof(int)); + if (s != sizeof(int)) return false; + mDirectArray->Resize(count); + if (count > 0) + { + a = mDirectArray->GetLocked(); + FBX_ASSERT(a != NULL); + v = count*sizeof(Type); + s = pStream.Read(a, v); + mDirectArray->Release(&a); + if (s != v) return false; + } + + // index array + s = pStream.Read(&count, sizeof(int)); + if (s != sizeof(int)) return false; + mIndexArray->Resize(count); + if (count > 0) + { + a = mIndexArray->GetLocked(); + FBX_ASSERT(a != NULL); + v = count*sizeof(int); + s = pStream.Read(a, v); + mIndexArray->Release(&a); + if (s != v) return false; + } + return FbxLayerElement::ContentReadFrom(pStream); + } + //@} + + typedef Type ArrayElementType; + typedef FbxLayerElementArrayTemplate DirectArrayType; + typedef FbxLayerElementArrayTemplate IndexArrayType; + + FbxLayerElementArrayTemplate* mDirectArray; + FbxLayerElementArrayTemplate* mIndexArray; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#define FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(classDesc) \ + FBXSDK_FRIEND_NEW(); \ + static Fbx##classDesc* Create(FbxLayerContainer* pOwner, const char* pName); + +/** \brief Layer element for mapping Normals to a geometry. + * \remarks To be correctly saved in FBX file, this type of Layer element should have its reference + * mode set to \e eIndexToDirect. + * \nosubgrouping + */ +class FBXSDK_DLL FbxLayerElementNormal : public FbxLayerElementTemplate +{ +public: + + /** Allocation method. + * \return A pointer to the layer element or \c NULL if creation fails. + */ + FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementNormal); + +protected: + FbxLayerElementNormal(); + ~FbxLayerElementNormal(); +}; + +/** \brief Layer element for mapping Binormals to a geometry. + * \nosubgrouping + */ +class FBXSDK_DLL FbxLayerElementBinormal : public FbxLayerElementTemplate +{ +public: + + /** Allocation method. + * \return A pointer to the layer element or \c NULL if creation fails. + */ + FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementBinormal); + +protected: + FbxLayerElementBinormal(); + ~FbxLayerElementBinormal(); +}; + +/** \brief Layer element for mapping Tangents to a geometry. + * \nosubgrouping + */ +class FBXSDK_DLL FbxLayerElementTangent : public FbxLayerElementTemplate +{ +public: + + /** Allocation method. + * \return A pointer to the layer element or \c NULL if creation fails. + */ + FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementTangent); + +protected: + FbxLayerElementTangent(); + ~FbxLayerElementTangent(); +}; + +/** Layer element for mapping materials (FbxSurfaceMaterial) to a geometry. + * + * FBX SDK 2011 and later connects materials (FbxSurfaceMaterial) to nodes (FbxNode). + * The direct array of this class is no longer used. + * The integer "n" in the index array of this class represents the n-th material (zero-based) connected to the node. + * + * For example: + * + * Mapping mode eAllSame and index array {0} means the whole geometry is assigned with the 0-th material + * connected to the node. + * + * Mapping mode eByPolygon and index array {0, 1} means the first polygon is assigned with the 0-th material and + * the second polygon is assigned with the 1-th material. + * + * + * You can access the materials from a node by using FbxNode::GetMaterialCount() and FbxNode::GetMaterial(int pIndex) + * or the more generic calls to GetSrcObjectCount() and + * GetSrcObject(index) + * + * For example: + * + * \code + * FbxNode* node; + * int nbMat = node->GetMaterialCount(); + * int nbMat1= node->GetSrcObjectCount(); + * + * FbxSurfaceMaterial* material; + * FbxLayerElementMaterial* layerElement; + * if (layerElement->GetMappingMode() == FbxLayerElement::eAllSame) + * { + * int index = layerElement->GetIndexArray()[0]; + * material = node->GetMaterial(index); + * } + * \endcode + * + * \remarks + * The DirectArray() methods still exist for legacy reasons but has been made private and should not be used. + * Therefore, to be correctly saved in FBX file, this type of Layer element should have its reference + * mode set to \e eIndexToDirect. + * + * \see FbxSurfaceMaterial + * \see FbxNode + */ +class FBXSDK_DLL FbxLayerElementMaterial : public FbxLayerElementTemplate +{ +public: + typedef FbxLayerElementTemplate ParentClass; + + /** Allocation method. + * \return A pointer to the layer element or \c NULL if creation fails. + */ + FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementMaterial); + + /** \internal + * Internal class to maintain backward compatibility with old FBX code (prior to FBX SDK 2011). + * This class synchronizes the direct array with FbxNode connections. + * Thus, changes on the direct array will reflect on FbxNode. + */ + class LayerElementArrayProxy : public FbxLayerElementArrayTemplate + { + public: + typedef FbxLayerElementArrayTemplate ParentClass; + + LayerElementArrayProxy(EFbxType pType); + void SetContainer( FbxLayerContainer* pContainer, int pInstance = 0); + }; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual void AllocateArrays(); + virtual void SetOwner( FbxLayerContainer* pOwner, int pInstance = 0); + virtual void SetInstance( int pInstance ) { SetOwner( mOwner, pInstance ); } + +protected: + FbxLayerElementMaterial(); + ~FbxLayerElementMaterial(); + +private: + FbxLayerElementArrayTemplate& GetDirectArray() const + { + return ParentClass::GetDirectArray(); + } + + FbxLayerElementArrayTemplate& GetDirectArray() + { + return ParentClass::GetDirectArray(); + } + + friend class FbxLayerContainer; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** \brief Layer element for grouping related polygons together. + * \remarks To be correctly saved in FBX file, this type of Layer element should have its reference + * mode set to \e eIndexToDirect. + * \nosubgrouping + */ +class FBXSDK_DLL FbxLayerElementPolygonGroup : public FbxLayerElementTemplate +{ +public: + + /** Allocation method. + * \return A pointer to the layer element or \c NULL if creation fails. + */ + FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementPolygonGroup); + +protected: + FbxLayerElementPolygonGroup(); + ~FbxLayerElementPolygonGroup(); +}; + +/** \brief Layer element for mapping UVs to a geometry. + * + * This class represents a UV set belongs to a geometry. Each UV set in a geometry + * has a name to identify itself. The string property FbxTexture.UVSet indicates + * the UV set to use. + * + * \remarks if the Mapping mode of this LayerElement is \e eNone, the stored data + * should be treated as irrelevant. In some circumstances, you can still send this data + * to systems that cannot function without UV coordinates, but ensure + * that you have enough coordinates to do so. + * + * \see FbxTexture + * \nosubgrouping + */ +class FBXSDK_DLL FbxLayerElementUV : public FbxLayerElementTemplate +{ +public: + /** Allocation method. + * \return A pointer to the layer element or \c NULL if creation fails. + */ + FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementUV); + +protected: + FbxLayerElementUV(); + ~FbxLayerElementUV(); +}; + +/** \brief Layer element for mapping Vertex Colors to a geometry. + * \nosubgrouping + */ +class FBXSDK_DLL FbxLayerElementVertexColor : public FbxLayerElementTemplate +{ +public: + + /** Allocation method. + * \return A pointer to the layer element or \c NULL if creation fails. + */ + FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementVertexColor); + +protected: + FbxLayerElementVertexColor(); + ~FbxLayerElementVertexColor(); +}; + +template inline FbxLayerElementArrayTemplate& FbxGetDirectArray(FbxLayerElementUserData *pLayerElement, int pIndex, bool* pStatus = NULL); +template inline FbxLayerElementArrayTemplate const& FbxGetDirectArray(FbxLayerElementUserData const *pLayerElement, int pIndex, bool* pStatus = NULL); +template inline FbxLayerElementArrayTemplate& FbxGetDirectArray(FbxLayerElementUserData *pLayerElement, const char* pName, bool* pStatus = NULL ); +template inline FbxLayerElementArrayTemplate const& FbxGetDirectArray(FbxLayerElementUserData const *pLayerElement, const char* pName, bool* pStatus = NULL ); + +/** \brief Layer element for mapping custom user data to a geometry. + * This layer element is different from the other types of layer elements in that it has multiple direct arrays. There is one array for each user data attribute. + * Each array is indexed by the index array. + * \nosubgrouping + */ +class FBXSDK_DLL FbxLayerElementUserData : public FbxLayerElementTemplate +{ +public: + FBXSDK_FRIEND_NEW(); + + /** Allocation method. + * \param pOwner The owner of this layer element. + * \param pName The layer element name. + * \param pId The layer element ID. + * \param pDataTypes Attribute data types of this layer element, one direct array is allocated for each Attribute data type. + * \param pDataNames Attribute names of this layer element. + * \return A pointer to the layer element or \c NULL if creation fails. + * \remarks Only "bool", "int", "float" and "double" are supported. + */ + static FbxLayerElementUserData* Create(FbxLayerContainer* pOwner, const char* pName, int pId, FbxArray& pDataTypes, FbxArray& pDataNames); + + /** Allocation method. + * \param pOwner The owner of this layer element. + * \param pOther Other layer element from which to copy. + * \return A pointer to the layer element or \c NULL if creation fails. + */ + static FbxLayerElementUserData* Create(FbxLayerContainer* pOwner, FbxLayerElementUserData const& pOther ); + + /** Returns the direct array with the specified attribute index. + * \param pIndex Specified attribute index. + * \param pStatus A flag to indicate whether the direct array is returned successfully or not. + * \return The specified attribute's direct array. + */ + FbxLayerElementArrayTemplate* GetDirectArrayVoid( int pIndex, bool* pStatus = NULL) + { + if( pIndex >= 0 || pIndex < GetDirectArray().GetCount() ) + { + if (pStatus) *pStatus = true; + return (FbxLayerElementArrayTemplate*)GetDirectArray().AsReference(pIndex); + } + else + { + if( pStatus ) *pStatus = false; + FBX_ASSERT_NOW("Index out of bounds"); + return (FbxLayerElementArrayTemplate*)NULL; + } + } + + /** Returns the direct array with the specified attribute index. + * \param pIndex Specified attribute index. + * \param pStatus A flag to indicate whether the direct array is returned successfully or not. + * \return The specified attribute's direct array. + */ + const FbxLayerElementArrayTemplate* GetDirectArrayVoid( int pIndex, bool* pStatus = NULL) const + { + if( pIndex >= 0 || pIndex < GetDirectArray().GetCount() ) + { + if (pStatus) *pStatus = true; + return (FbxLayerElementArrayTemplate*)GetDirectArray().AsReference(pIndex); + } + else + { + if( pStatus ) *pStatus = false; + FBX_ASSERT_NOW("Index out of bounds"); + return (const FbxLayerElementArrayTemplate*)NULL; + } + } + + + /** Returns the direct array with the specified attribute name. + * \param pName Specified attribute name. + * \param pStatus A flag to indicate whether the direct array is returned successfully or not. + * \return The specified attribute's direct array. + */ + FbxLayerElementArrayTemplate* GetDirectArrayVoid ( const char* pName, bool* pStatus = NULL ) + { + FbxString lName( pName ); + for( int i = 0; i < mDataNames.GetCount(); ++i ) + { + if( *mDataNames[i] == lName ) + return GetDirectArrayVoid(i, pStatus); + } + + if (pStatus) *pStatus = false; + return (FbxLayerElementArrayTemplate*)NULL; + } + + /** Returns the direct array with the specified attribute name. + * \param pName Specified attribute name. + * \param pStatus A flag to indicate whether the direct array is returned successfully or not. + * \return The specified attribute's direct array. + */ + const FbxLayerElementArrayTemplate* GetDirectArrayVoid ( const char* pName, bool* pStatus = NULL ) const + { + FbxString lName( pName ); + for( int i = 0; i < mDataNames.GetCount(); ++i ) + { + if( *mDataNames[i] == lName ) + return GetDirectArrayVoid(i, pStatus); + } + + if (pStatus) *pStatus = false; + return (const FbxLayerElementArrayTemplate*)NULL; + } + + /** Returns the data type for the specified index + * \param pIndex The index of the attribute being queried + * \return The data type, or FbxUndefinedDT if pIndex is out of range + */ + FbxDataType GetDataType( int pIndex ) const + { + if( pIndex < 0 || pIndex >= mDataTypes.GetCount() ) + return FbxUndefinedDT; + + return mDataTypes[pIndex]; + } + + /** Returns the specified attribute data type. + * \param pName The name of the attribute being queried + * \return The data type, or FbxUndefinedDT if no attribute has the given name + */ + FbxDataType GetDataType( const char* pName ) const + { + FbxString lName( pName ); + + for( int i = 0; i < mDataNames.GetCount(); ++i ) + { + if( *mDataNames[i] == lName ) + return mDataTypes[i]; + } + + return FbxUndefinedDT; + } + + /** Returns the attribute name at the specified index + * \param pIndex Attribute index + * \return The name, or \c NULL if pIndex is out of range. + */ + const char* GetDataName( int pIndex ) const + { + if( pIndex >= 0 && pIndex < mDataNames.GetCount() ) + return mDataNames[pIndex]->Buffer(); + + return NULL; + } + + /** Resizes all direct arrays to the specified size. + * \param pSize The new size of the direct arrays. + */ + void ResizeAllDirectArrays( int pSize ) + { + for( int i = 0; i < GetDirectArray().GetCount(); ++i ) + { + switch( mDataTypes[i].GetType() ) + { + case eFbxBool: FbxGetDirectArray(this,i).Resize( pSize ) ; break; + case eFbxInt: FbxGetDirectArray(this,i).Resize( pSize ) ; break; + case eFbxFloat: FbxGetDirectArray(this,i).Resize( pSize ) ; break; + case eFbxDouble: FbxGetDirectArray(this,i).Resize( pSize ); break; + //case eFbxDouble3: GetDirectArray< FbxDouble3 >(i).Resize( pSize ); break; + //case eFbxDouble4: GetDirectArray< FbxDouble4 >(i).Resize( pSize ); break; + //case eFbxDouble4x4: GetDirectArray< FbxDouble4x4>(i).Resize( pSize ); break; + default: + FBX_ASSERT_NOW("unknown type" ); break; + } + } + } + + /** Removes a single element at pIndex from every direct array. + * \param pIndex The index of the element to be removed. + */ + void RemoveFromAllDirectArrays( int pIndex ) + { + for( int i = 0; i < GetDirectArray().GetCount(); ++i ) + { + switch( mDataTypes[i].GetType() ) + { + case eFbxBool: FbxGetDirectArray(this,i).RemoveAt( pIndex ) ; break; + case eFbxInt: FbxGetDirectArray(this,i).RemoveAt( pIndex ) ; break; + case eFbxFloat: FbxGetDirectArray(this,i).RemoveAt( pIndex ) ; break; + case eFbxDouble: FbxGetDirectArray(this,i).RemoveAt( pIndex ); break; + //case eFbxDouble3: GetDirectArray< FbxDouble3 >(i).RemoveAt( pIndex ); break; + //case eFbxDouble4: GetDirectArray< FbxDouble4 >(i).RemoveAt( pIndex ); break; + //case eFbxDouble4x4: GetDirectArray< FbxDouble4x4>(i).RemoveAt( pIndex ); break; + default: + FBX_ASSERT_NOW("unknown type" ); break; + } + } + } + + /** Returns the direct array count for the attribute at pIndex + * \param pIndex The attribute index + * \return The specified attribute's direct array count. + */ + int GetArrayCount( int pIndex ) const + { + if( pIndex >= 0 && pIndex < GetDirectArray().GetCount() ) + { + switch( mDataTypes[pIndex].GetType() ) + { + case eFbxBool: return FbxGetDirectArray(this,pIndex).GetCount(); + case eFbxInt: return FbxGetDirectArray(this,pIndex).GetCount(); + case eFbxFloat: return FbxGetDirectArray(this,pIndex).GetCount(); + case eFbxDouble: return FbxGetDirectArray(this,pIndex).GetCount(); + //case eFbxDouble3: return GetDirectArray< FbxDouble3 >(pIndex).GetCount(); + //case eFbxDouble4: return GetDirectArray< FbxDouble4 >(pIndex).GetCount(); + //case eFbxDouble4x4: return GetDirectArray< FbxDouble4x4>(pIndex).GetCount(); + default: + FBX_ASSERT_NOW("Unknown type" ); break; + } + } + + return -1; + } + + /** Queries the this layer element's ID. + * \return The ID expressed as an int + */ + int GetId() const { return mId; } + + /** Returns this layer element's direct array count. + * \return The direct array count expressed as an int. + * \remarks This count should be equal to the count of user data attributes. + */ + int GetDirectArrayCount() const { return GetDirectArray().GetCount(); } + + /** Assignment operator which performs a deep copy. + * \param pOther Other FbxLayerElementUserData from which to perform a deep copy. + * \return This FbxLayerElementUserData. + */ + FbxLayerElementUserData& operator=( FbxLayerElementUserData const& pOther ) + { + if (this == &pOther) + return *this; + + Clear(); + + mId = pOther.mId; + mDataTypes = pOther.mDataTypes; + mDataNames.Resize(pOther.mDataNames.GetCount()); + for(int i = 0; i < pOther.mDataNames.GetCount(); ++i) + mDataNames.SetAt(i, FbxNew< FbxString >( *pOther.mDataNames[i] ) ); + + Init(); + for(int i = 0; i < pOther.GetDirectArrayCount(); ++i) + { + switch (mDataTypes[i].GetType()) + { + case eFbxBool: + FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); + break; + + case eFbxInt: + FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); + break; + + case eFbxFloat: + FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); + break; + + case eFbxDouble: + FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); + break; + + default: + FBX_ASSERT_NOW("Unknown type" ); + break; + } + } + + if ( ( mReferenceMode == FbxLayerElement::eIndex || + mReferenceMode == FbxLayerElement::eIndexToDirect) && + ( pOther.GetReferenceMode() == FbxLayerElement::eIndex || + pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect)) + { + GetIndexArray() = pOther.GetIndexArray(); + } + + return *this; + } + + /** Removes all data from this layer element. + * \return \c True always + */ + bool Clear() + { + int i; + const int lCount = GetDirectArray().GetCount(); + FbxLayerElementArray** directArray = NULL; + directArray = GetDirectArray().GetLocked(directArray); + for( i = 0; directArray != NULL && i < lCount; ++i ) + { + if( directArray[i] ) + FbxDelete(directArray[i]); + } + FbxLayerElementArray*** ptr = &directArray; + GetDirectArray().Release((void**)ptr); + for( i = 0; i < mDataNames.GetCount(); ++i ) + { + FBX_SAFE_DELETE(mDataNames[i]); + } + mDataNames.Clear(); + mDataTypes.Clear(); + + FbxLayerElementTemplate::Clear(); + + return true; + } + + /** Queries the amount of memory used by this + * object as well as its content. It does not consider the content pointed. + * \return The amount of memory used. + */ + virtual int MemorySize() const + { + int size = FbxLayerElementTemplate::MemorySize(); + size += sizeof(mId); + + for(int i = 0; i < mDataTypes.GetCount(); i++) + { + size += sizeof(mDataTypes[i]); + } + size += (mDataNames.GetCount() * sizeof(FbxString*)); + + return size; + } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + /** + * \name Constructor and Destructor. + */ + //@{ + /** Constructs a user data layer element. + * \param pId An identifier for this UserData layer element + * \param pDataTypes Attribute data types for this layer element + * \param pDataNames Attribute names for this layer element + */ + FbxLayerElementUserData( int pId, FbxArray& pDataTypes, FbxArray& pDataNames ) + : + mId( pId ), + mDataTypes( pDataTypes ) + { + FBX_ASSERT( pDataTypes.GetCount() == pDataNames.GetCount() ); + for( int i = 0; i < pDataNames.GetCount(); ++i ) + { + mDataNames.Add( FbxNew< FbxString >( pDataNames[i] ) ); + } + } + + /** Copy constructor. A deep copy is made. + * \param pOther Another FbxLayerElementUserData object to be copied. + */ + FbxLayerElementUserData( FbxLayerElementUserData const& pOther ) : mId(pOther.mId), mDataTypes(pOther.mDataTypes) + { + for (int lIndex = 0; lIndex < pOther.mDataNames.GetCount(); ++lIndex) + { + mDataNames.Add(FbxNew(*(pOther.mDataNames[lIndex]))); + } + + SetType(&FbxLayerElementUserDataDT); + AllocateArrays(); + + for(int i = 0; i < pOther.GetDirectArrayCount(); ++i) + { + switch (mDataTypes[i].GetType()) + { + case eFbxBool: + FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); + break; + + case eFbxInt: + FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); + break; + + case eFbxFloat: + FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); + break; + + case eFbxDouble: + FbxGetDirectArray(this, i) = FbxGetDirectArray(&pOther, i); + break; + + default: + FBX_ASSERT_NOW("Unknown type" ); + break; + } + } + + if ( ( mReferenceMode == FbxLayerElement::eIndex || + mReferenceMode == FbxLayerElement::eIndexToDirect) && + ( pOther.GetReferenceMode() == FbxLayerElement::eIndex || + pOther.GetReferenceMode() == FbxLayerElement::eIndexToDirect)) + { + GetIndexArray() = pOther.GetIndexArray(); + } + } + + //!Destructor. + ~FbxLayerElementUserData() + { + Clear(); + } + + //@} + virtual void AllocateArrays() + { + FbxLayerElementTemplate::AllocateArrays(); + Init(); + } + + +private: + + void Init() + { + int i; + GetDirectArray().Resize( mDataTypes.GetCount() ); + + // initialize arrays + for( i = 0; i < mDataTypes.GetCount(); ++i ) + { + FbxHandle** dst = NULL; + dst = GetDirectArray().GetLocked(dst); + if (dst) + { + switch( mDataTypes[i].GetType() ) + { + case eFbxBool: dst[i] = (FbxHandle*)FbxNew< FbxLayerElementArrayTemplate >(mDataTypes[i].GetType()); break; + case eFbxInt: dst[i] = (FbxHandle*)FbxNew< FbxLayerElementArrayTemplate >(mDataTypes[i].GetType()); break; + case eFbxFloat: dst[i] = (FbxHandle*)FbxNew< FbxLayerElementArrayTemplate >(mDataTypes[i].GetType()); break; + case eFbxDouble: dst[i] = (FbxHandle*)FbxNew< FbxLayerElementArrayTemplate >(mDataTypes[i].GetType()); break; + default: + FBX_ASSERT_NOW("Trying to assign an unknown type" ); break; + } + FbxHandle*** ptr = &dst; + GetDirectArray().Release((void**)ptr); + } + } + } + + int mId; + FbxArray mDataTypes; + FbxArray mDataNames; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** Returns the direct array with the given attribute index. The template type must match the attribute type at pIndex. + * \param pLayerElement The layer element whose direct array to return. + * \param pIndex The direct array index + * \param pStatus Will be set to \c false if accessing the direct array encounters an error. + * \return If pStatus receives \c true, the direct array at the given index is + * returned. Otherwise the return value is \c undefined. + */ +template +inline FbxLayerElementArrayTemplate& FbxGetDirectArray( FbxLayerElementUserData *pLayerElement,int pIndex, bool* pStatus) +{ + return *(FbxLayerElementArrayTemplate*)pLayerElement->GetDirectArrayVoid(pIndex,pStatus); +} + +/** Returns the direct array with the given attribute index. The template type must match the attribute type at pIndex. + * \param pLayerElement The layer element whose direct array to return. + * \param pIndex The direct array index + * \param pStatus Will be set to \c false if accessing the direct array encounters an error. + * \return If pStatus receives \c true, the direct array at the given index is + * returned. Otherwise the return value is \c undefined. + */ +template +inline FbxLayerElementArrayTemplate const& FbxGetDirectArray(FbxLayerElementUserData const *pLayerElement, int pIndex, bool* pStatus) +{ + return *(const FbxLayerElementArrayTemplate*)pLayerElement->GetDirectArrayVoid(pIndex,pStatus); +} + + +/** Returns the direct array with the given attribute name.The template type must match the attribute type with pName. + * \param pLayerElement The layer element whose direct array to return. + * \param pName The given attribute name. + * \param pStatus Will be set to false if accessing the direct array encounters an error. + * \return If pStatus receives \c true, the direct array at the given index is + * returned. Otherwise the return value is \c undefined. + */ +template +inline FbxLayerElementArrayTemplate& FbxGetDirectArray( FbxLayerElementUserData *pLayerElement,const char* pName, bool* pStatus ) +{ + return *(FbxLayerElementArrayTemplate*)pLayerElement->GetDirectArrayVoid(pName,pStatus); +} + +/** Returns the direct array with the given attribute name.The template type must match the attribute type with pName. + * \param pLayerElement The layer element whose direct array to return. + * \param pName The given attribute name. + * \param pStatus Will be set to false if accessing the direct array encounters an error. + * \return If pStatus receives \c true, the direct array at the given index is + * returned. Otherwise the return value is \c undefined. + */ +template +inline FbxLayerElementArrayTemplate const& FbxGetDirectArray(FbxLayerElementUserData const *pLayerElement, const char* pName, bool* pStatus ) +{ + return *(const FbxLayerElementArrayTemplate*)pLayerElement->GetDirectArrayVoid(pName,pStatus); +} + + +/** Layer element for indicating smoothness of components of a geometry. + * \remarks To be correctly saved in FBX file, this type of Layer element should have its reference + * mode set to \e eDirect. + * + * \nosubgrouping + */ +class FBXSDK_DLL FbxLayerElementSmoothing : public FbxLayerElementTemplate +{ +public: + FBXSDK_FRIEND_NEW(); + + /** Allocation method. + * \param pOwner The owner of this layer element. + * \param pName The name of this layer element. + * \return A pointer to the layer element or \c NULL if creation fails. + */ + static FbxLayerElementSmoothing* Create(FbxLayerContainer* pOwner, const char* pName); + + /** Sets the Reference Mode. + * \param pMode Specifies the reference mode. + * \remarks Only support eDirect. + */ + void SetReferenceMode( FbxLayerElement::EReferenceMode pMode ) + { + if( pMode != FbxLayerElement::eDirect ) + { + FBX_ASSERT_NOW( "Smoothing layer elements must be direct mapped" ); + return; + } + } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + FbxLayerElementSmoothing() + { + mReferenceMode = FbxLayerElement::eDirect; + } +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** Layer element for indicating crease of components of a geometry. + * \nosubgrouping + */ +class FBXSDK_DLL FbxLayerElementCrease : public FbxLayerElementTemplate +{ +public: + FBXSDK_FRIEND_NEW(); + + /** Allocation method. + * \param pOwner The owner of this layer element. + * \param pName The name of this layer element. + * \return A pointer to the layer element or \c NULL if creation fails. + */ + static FbxLayerElementCrease* Create(FbxLayerContainer* pOwner, const char* pName); + + /** Sets the Reference Mode. + * \param pMode Specifies the reference mode. + * \remarks Only support eDirect. + */ + void SetReferenceMode( FbxLayerElement::EReferenceMode pMode ) + { + if( pMode != FbxLayerElement::eDirect ) + { + FBX_ASSERT_NOW( "Crease layer elements must be direct mapped" ); + return; + } + } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + FbxLayerElementCrease() + { + mReferenceMode = FbxLayerElement::eDirect; + } +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** Layer element for indicating hole of polygon of a geometry. +* \nosubgrouping +*/ +class FBXSDK_DLL FbxLayerElementHole : public FbxLayerElementTemplate +{ +public: + FBXSDK_FRIEND_NEW(); + + /** Allocation method. + * \param pOwner The owner of this layer element. + * \param pName The name of this layer element. + * \return A pointer to the layer element or \c NULL if creation fails. + */ + static FbxLayerElementHole* Create(FbxLayerContainer* pOwner, const char* pName); + + /** Sets the Reference Mode. + * \param pMode Specifies the reference mode. + * \remarks Only support eDirect. + */ + void SetReferenceMode( FbxLayerElement::EReferenceMode pMode ) + { + if( pMode != FbxLayerElement::eDirect ) + { + FBX_ASSERT_NOW( "hole layer elements must be direct mapped" ); + return; + } + } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + FbxLayerElementHole() + { + mReferenceMode = FbxLayerElement::eDirect; + } +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** Layer element for indicating if specified components are shown/hidden + */ +class FBXSDK_DLL FbxLayerElementVisibility : public FbxLayerElementTemplate +{ +public: + + /** Allocation method. + * \return A pointer to the layer element or \c NULL if creation fails. + */ + FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementVisibility); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + FbxLayerElementVisibility(); + ~FbxLayerElementVisibility(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** \brief Layer element for mapping Textures to a geometry. This class is deprecated. + * + * Deprecated since FBX SDK 2011. Textures (FbxTexture derived classes) should be connected + * to material properties. + * + * For example: + * + * \code + * FbxFileTexture* file; + * FbxSurfacePhong* phong; + * phong->Diffuse.ConnectSrcObject(file); + * \endcode + * \see FbxSurfaceMaterial + * + * \remarks To be correctly saved in FBX file, this type of Layer element should have its reference + * mode set to \e eIndexToDirect. + * \nosubgrouping + */ +class FBXSDK_DLL FbxLayerElementTexture : public FbxLayerElementTemplate +{ +public: + /** Allocation method. + * \return A pointer to the layer element or \c NULL if creation fails. + */ + FBXSDK_LAYER_ELEMENT_CREATE_DECLARE(LayerElementTexture); + + /** \enum EBlendMode Lets you control how textures are combined when you apply multiple layers of texture to a surface. + * - \e eTranslucent The new texture layer is transparent (depending on the Alpha value). + * - \e eAdd Add the color of the new texture to the previous texture. + * - \e eModulate Multiples the color value of the new texture by the color values of all previous layers of texture. + * - \e eModulate2 Multiples the color value of the new texture by two and then by the color values of all previous layers of texture. + * - \e eOver Equivalent to eTranslucent. Blends the new texture over top of the old texture, according to the new texture's alpha channel. + * - \e eNormal, The colors of the two layers will not interact in any way, and it will display the full value of the colors in layer 1. + * - \e eDissolve, Dissolve makes the lower layer take on the colors of the top layer, and how much depends on the opacity of the upper layer. + * - \e eDarken, Darken compares each pixel value of the upper layer to its counterpart's pixel value of the lower layer and chooses the darker of the two to display. + * - \e eColorBurn, Color Burn burns in the color of the upper layer with the lower layer. No part of the image will get lighter. + * - \e eLinearBurn, Linear Burn works like multiply but the results are more intense. + * - \e eDarkerColor, This blend mode simply divides pixel values of one layer with the other. + * - \e eLighten, Lighten compares the two layers pixel for pixel and uses the lightest pixel value. No part of the image gets darker. + * - \e eScreen, Screen brightens by lightning the lower layer based on the lightness of the upper layer + * - \e eColorDodge, Color Dodge dodges the lower layer with the upper layer, resulting in a lighter image. No part of the image will be darkened. + * - \e eLinearDodge, Linear Dodge works like screen but with more intense results. + * - \e eLighterColor, This blend mode has the opposite effect of the Darker Color mode. It compares all the values in both layers, then displays the lightest values. + * - \e eSoftLight, Soft Light will multiply the dark tones and screen the light tones. + * - \e eHardLight, Hard Light multiplies the dark colors and screens the light colors. + * - \e eVividLight, Vivid Light will dodges or burn the lower layer pixels depending on whether the upper layer pixels are brighter or darker than neutral gray. It works on the contrast of the lower layer. + * - \e eLinearLight, Linear Light is the same as Vivid light but it works on the brightness of the lower layer. + * - \e ePinLight, Pin Light changes the lower layer pixels depending on how bright the pixels are in the upper layer. + * - \e eHardMix, Produces either white or black, depending on similarities between A and B. + * - \e eDifference, Difference reacts to the differences between the upper and lower layer pixels. + * - \e eExclusion, Exclusion uses the darkness of the lower layer to mask the difference between upper and lower layers. + * - \e eSubtract, The result color is the foreground color subtracted from the background color. The result color is then applied over the background color using the foreground alpha to define the opacity of the result. + * - \e eDivide, This blend mode simply divides pixel values of one layer with the other. + * - \e eHue, Hue changes the hue of the lower layer to the hue of the upper layer but leaves brightness and saturation alone. + * - \e eSaturation, Saturation changes the saturation of the lower layer to the hue of the upper layer but leaves brightness and hue alone. + * - \e eColor, Color changes the hue and saturation of the lower layer to the hue and saturation of the upper layer but leaves luminosity alone. + * - \e eLuminosity, Luminosity changes the luminosity of the lower layer to the luminosity of the upper layer while leaving hue and saturation the same. + * - \e eOverlay, Multiplies (darkens) when the layer on which the mode is set is dark and screens (brightens) when the layer on which the mode is applied is lighter. + * - \e eBlendModeCount Marks the end of the blend mode enum. + */ + enum EBlendMode + { + eTranslucent, + eAdd, + eModulate, + eModulate2, + eOver, + eNormal, + eDissolve, + eDarken, + eColorBurn, + eLinearBurn, + eDarkerColor, + eLighten, + eScreen, + eColorDodge, + eLinearDodge, + eLighterColor, + eSoftLight, + eHardLight, + eVividLight, + eLinearLight, + ePinLight, + eHardMix, + eDifference, + eExclusion, + eSubtract, + eDivide, + eHue, + eSaturation, + eColor, + eLuminosity, + eOverlay, + eBlendModeCount + }; + + /** Sets the way Textures blend between layers. + * \param pBlendMode A valid blend mode. + */ + void SetBlendMode(EBlendMode pBlendMode) { mBlendMode = pBlendMode; } + + /** Sets the transparency level between multiple texture levels. + * \param pAlpha Set to a value between 0.0 and 1.0, where 0.0 is totally transparent and 1.0 is totally opaque. + * \remarks Values smaller than 0.0 are clipped to 0.0, while values greater than 1.0 are clipped to 1.0. + */ + void SetAlpha(double pAlpha) + { + if (pAlpha > 1.0) + mAlpha = 1.0; + else if (pAlpha < 0.0) + mAlpha = 0.0; + else + mAlpha = pAlpha; + } + + /** Returns the way Textures blend between layers. + * \return The current Blend Mode. + */ + EBlendMode GetBlendMode() const { return mBlendMode; } + + /** Returns the transparency level between multiple levels of textures. + * \return An alpha value between 0.0 and 1.0, where 0.0 is totally transparent and 1.0 is totally opaque. + */ + double GetAlpha() const { return mAlpha; } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual int MemorySize() const + { + int size = FbxLayerElementTemplate::MemorySize(); + size += sizeof(mBlendMode); + size += sizeof(mAlpha); + return size; + } + +protected: + /** Constructor + * By default, textures have a Blend Mode of eTranslucent, + * a Reference Mode of eIndexToDirect, and an Alpha value of 1.0. + */ + FbxLayerElementTexture() : mBlendMode(eTranslucent) + { + mReferenceMode = eIndexToDirect; + mAlpha = 1.0; + } + +private: + EBlendMode mBlendMode; + double mAlpha; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + +/** FbxLayer class provides a base for the layering mechanism. + * + * A layer can contain one or more of the following layer elements: + * \li Normals + * \li Binormals + * \li Tangents + * \li Materials + * \li Polygon Groups + * \li UVs + * \li Vertex Colors + * \li Smoothing informations + * \li Vertex Creases + * \li Edge Creases + * \li Custom User Data + * \li Visibilities + * \li Textures (diffuse, ambient, specular, etc.) (deprecated) + * + * A typical layer for a Mesh contains Normals, UVs and Materials. A typical layer for NURBS contains only Materials. + * In the case of the NURBS, the NURBS' parameterization is used for the UVs; no UVs should be specified. + * + * In most cases, you only need a single layer to describe a geometry. Many applications only support what is defined on the first layer. + * Take this into account when you fill the layer. For example, it is legal to define the Layer 0 with the UVs and then + * define the model's Normals on layer 1. However if you construct a file this way, it may not be imported correctly in other applications. + * Store the Normals in Layer 0 to avoid problems. + * + * Since FBX SDK 2011, Textures are connected to the properties of FbxSurfaceMaterial derived classes. + * FbxLayerElementTexture is no longer used. See the code example in FbxLayerElementTexture for how to connect a texture. + * + * Since FBX SDK 2011, texture layering is achieved by FbxLayeredTexture. See the code example in FbxLayeredTexture for how to blend textures. + * + * Normally, you can access layer from FbxLayerContainer like FbxGeometry. + * For example, + * \code + * FbxMesh* mesh; + * FbxLayer* layer0 = mesh->GetLayer(0); + * FbxLayerElementNormal* normals = layer0->GetNormals(); + * \endcode + * + * \nosubgrouping + * \see FbxLayerElement + * \see FbxLayerElementNormal + * \see FbxLayerElementBinormal + * \see FbxLayerElementTangent + * \see FbxLayerElementMaterial + * \see FbxLayerElementPolygonGroup + * \see FbxLayerElementUV + * \see FbxLayerElementVertexColor + * \see FbxLayerElementSmoothing + * \see FbxLayerElementCrease + * \see FbxLayerElementUserData + * \see FbxLayerElementHole + * \see FbxLayerElementVisibility + */ +class FBXSDK_DLL FbxLayer +{ + +public: + FBXSDK_FRIEND_NEW(); + + /** + * \name Layer Element Management + */ + //@{ + + /** Returns this layer's Normals description . + * \return A pointer to the Normals layer element, or \c NULL if no Normals layer element is defined in this layer. + * \remarks FbxNurbs or FbxPatch geometry should not have Normals defined. + */ + FbxLayerElementNormal* GetNormals(); + + /** Returns this layer's Normals description . + * \return A pointer to the Normals layer element, or \c NULL if no Normals layer element is defined in this layer. + * \remarks FbxNurbs or FbxPatch geometry should not have Normals defined. + */ + const FbxLayerElementNormal* GetNormals() const; + + /** Returns this layer's Tangents description. + * \return A pointer to the Tangents layer element, or \c NULL if no Tangents layer element is defined in this layer. + * \remarks FbxNurbs or FbxPatch geometry should not have Tangents defined. + */ + FbxLayerElementTangent* GetTangents(); + + /** Returns this layer's Tangents description. + * \return A pointer to the Tangents layer element, or \c NULL if no Tangents layer element is defined in this layer. + * \remarks FbxNurbs or FbxPatch geometry should not have Tangents defined. + */ + const FbxLayerElementTangent* GetTangents() const; + + /** Returns this layer's Binormals description. + * \return A pointer to the Binormals layer element, or \c NULL if no Binormals layer element is defined in this layer. + * \remarks FbxNurbs or FbxPatch geometry should not have Binormals defined. + */ + FbxLayerElementBinormal* GetBinormals(); + + /** Returns this layer's Binormals description. + * \return A pointer to the Binormals layer element, or \c NULL if no Binormals layer element is defined in this layer. + * \remarks FbxNurbs or FbxPatch geometry should not have Binormals defined. + */ + const FbxLayerElementBinormal* GetBinormals() const; + + /** Returns this layer's Materials description. + * \return A pointer to the Materials layer element, or \c NULL if no Materials layer element is defined in this layer. + */ + FbxLayerElementMaterial* GetMaterials(); + + /** Returns this layer's Materials description. + * \return A pointer to the Materials layer element, or \c NULL if no Materials layer element is defined in this layer. + */ + const FbxLayerElementMaterial* GetMaterials() const; + + /** Returns this layer's Polygon Groups description. + * \return A pointer to the Polygon Groups layer element, or \c NULL if no Polygon Groups layer element is defined in this layer. + */ + FbxLayerElementPolygonGroup* GetPolygonGroups(); + + /** Returns this layer's Polygon Groups description. + * \return A pointer to the Polygon Groups layer element, or \c NULL if no Polygon Groups layer element is defined in this layer. + */ + const FbxLayerElementPolygonGroup* GetPolygonGroups() const; + + /** Returns this layer's UV description. + * \param pTypeIdentifier Layer element type identifier, should be a texture type identifier. + * \return A pointer to the UVs layer element, or \c NULL if no UV is defined in this layer. + * \remarks FbxNurbs or FbxPatch geometry should not have UVs defined. + * The NURBS/Patch parameterization is used as UV parameters to map a texture. + */ + FbxLayerElementUV* GetUVs(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); + + /** Returns this layer's UV description. + * \param pTypeIdentifier Layer element type identifier, should be a texture type identifier. + * \return A pointer to the UVs layer element, or \c NULL if no UV is defined in this layer. + * \remarks FbxNurbs or FbxPatch geometry should not have UVs defined. + * The NURBS/Patch parameterization is used as UV parameters to map a texture. + */ + const FbxLayerElementUV* GetUVs(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse) const; + + + /** Returns the number of different UV sets in this layer. + */ + int GetUVSetCount() const; + + /** Returns an array that describes which UV sets are in this layer. + */ + FbxArray GetUVSetChannels() const; + + /** Returns an array of UV sets in this layer. + */ + FbxArray GetUVSets() const; + + /** Returns this layer's Vertex Colors description. + * \return A pointer to the Vertex Colors layer element, or \c NULL if no Vertex Color layer element is defined in this layer. + * \remarks FbxNurbs or FbxPatch geometry should not have Vertex Colors defined, since no vertex exists. + */ + FbxLayerElementVertexColor* GetVertexColors(); + + /** Returns this layer's Vertex Colors description. + * \return A pointer to the Vertex Colors layer element, or \c NULL if no Vertex Color layer element is defined in this layer. + * \remarks FbxNurbs or FbxPatch geometry should not have Vertex Colors defined, since no vertex exists. + */ + const FbxLayerElementVertexColor* GetVertexColors() const; + + /** Returns this layer's Smoothing description. + * \return A pointer to the Smoothing layer element, or \c NULL if no Smoothing layer element is defined in this layer. + * \remarks FbxNurbs or FbxPatch geometry should not have Smoothing defined. + */ + FbxLayerElementSmoothing* GetSmoothing(); + + /** Returns this layer's Smoothing description. + * \return A pointer to the Smoothing layer element, or \c NULL if no Smoothing layer element is defined in this layer. + * \remarks FbxNurbs or FbxPatch geometry should not have Smoothing defined. + */ + const FbxLayerElementSmoothing* GetSmoothing() const; + + /** Returns this layer's vertex crease description. + * \return A pointer to the Crease layer element, or \c NULL if no Crease layer element is defined in this layer. + * \remarks Crease info should only be defined when the geometry is FbxSubDiv. + */ + FbxLayerElementCrease* GetVertexCrease(); + + /** Returns this layer's vertex crease description. + * \return A pointer to the Crease layer element, or \c NULL if no Crease layer element is defined in this layer. + * \remarks Crease info should only be defined when the geometry is FbxSubDiv. + */ + const FbxLayerElementCrease* GetVertexCrease() const; + + /** Returns this layer's edge crease description. + * \return A pointer to the Crease layer element, or \c NULL if no Crease layer element is defined in this layer. + * \remarks Crease info should only be defined when the geometry is FbxSubDiv. + */ + FbxLayerElementCrease* GetEdgeCrease(); + + /** Returns this layer's edge crease description. + * \return A pointer to the Crease layer element, or \c NULL if no Crease layer element is defined in this layer. + * \remarks Crease info should only be defined when the geometry is FbxSubDiv. + */ + const FbxLayerElementCrease* GetEdgeCrease() const; + + /** Returns this layer's Hole description. + * \return A pointer to the Hole layer element, or \c NULL if no Hole layer element is defined in this layer. + * \remarks Hole info should only be defined when the geometry is FbxMesh. + */ + FbxLayerElementHole* GetHole(); + + /** Returns this layer's Hole description. + * \return A pointer to the Hole layer element, or \c NULL if no Hole layer element is defined in this layer. + * \remarks Hole info should only be defined when the geometry is FbxMesh. + */ + const FbxLayerElementHole* GetHole() const; + + /** Returns this layer's User Data. + * \return A pointer to the User Data layer element, or \c NULL if no User Data layer element is defined in this layer. + */ + FbxLayerElementUserData* GetUserData(); + + /** Returns this layer's User Data. + * \return A pointer to the User Data layer element, or \c NULL if no User Data layer element is defined in this layer. + */ + const FbxLayerElementUserData* GetUserData() const; + + /** Returns this layer's visibility. + * \return A pointer to the visibility layer element, or \c NULL if no visibility layer element is defined in this layer. + */ + FbxLayerElementVisibility* GetVisibility(); + + /** Returns this layer's visibility. + * \return A pointer to the visibility layer element, or \c NULL if no visibility layer element is defined in this layer. + */ + const FbxLayerElementVisibility* GetVisibility() const; + + /** Returns this layer's Textures description. + * \param pType Layer element type, should be a texture type identifier. + * \return A pointer to the Textures layer element, or \c NULL if no Textures layer element is defined in this layer. + */ + FbxLayerElementTexture* GetTextures(FbxLayerElement::EType pType); + + /** Returns this layer's Textures description. + * \param pType Layer element type, should be a texture type identifier. + * \return A pointer to the Textures layer element, or \c NULL if no Textures layer element is defined in this layer. + */ + const FbxLayerElementTexture* GetTextures(FbxLayerElement::EType pType) const; + + /** Sets this layer's Textures description. + * \param pType Texture type identifier. + * \param pTextures A pointer to the Textures layer element, or \c NULL to remove the Textures definition. + */ + void SetTextures(FbxLayerElement::EType pType, FbxLayerElementTexture* pTextures); + + /** Returns the specified type of layer element description for this layer. + * \param pType The required Layer element type. + * - Calling with eNormal is the equivalent of calling GetNormals(). + * - Calling with eBiNormal is the equivalent of calling GetBinormals(). + * - Calling with eTangent is the equivalent of calling GetTangents(). + * - Calling with eMaterial is the equivalent of calling GetMaterials(). + * - Calling with ePolygonGroup is the equivalent of calling GetPolygonGroups(). + * - Calling with eUV is the equivalent of calling GetUVs(). + * - Calling with eVertexColor is the equivalent of calling GetVertexColors(). + * - Calling with eSmoothing is the equivalent of calling GetSmoothing(). + * - Calling with eVertexCrease is the equivalent of calling GetVertexCrease(). + * - Calling with eEdgeCrease is the equivalent of calling GetEdgeCrease(). + * - Calling with eUserData is the equivalent of calling GetUserData(). + * - Calling with eVisibility is the equivalent of calling GetVisibility(). + * - Calling with texture type is the equivalent of calling GetTextures(FbxLayerElement::EType pType). + * \param pIsUV If \c true, requests the UV layer element that corresponds with the specified texture type. + * \return A pointer to the requested layer element, or \e NULL if the layer element is not defined in this layer. + */ + FbxLayerElement* GetLayerElementOfType(FbxLayerElement::EType pType, bool pIsUV=false); + + /** Returns the specified type of layer element description for this layer. + * \param pType The required Layer element type. + * - Calling with eNormal is the equivalent of calling GetNormals(). + * - Calling with eBiNormal is the equivalent of calling GetBinormals(). + * - Calling with eTangent is the equivalent of calling GetTangents(). + * - Calling with eMaterial is the equivalent of calling GetMaterials(). + * - Calling with ePolygonGroup is the equivalent of calling GetPolygonGroups(). + * - Calling with eUV is the equivalent of calling GetUVs(). + * - Calling with eVertexColor is the equivalent of calling GetVertexColors(). + * - Calling with eSmoothing is the equivalent of calling GetSmoothing(). + * - Calling with eVertexCrease is the equivalent of calling GetVertexCrease(). + * - Calling with eEdgeCrease is the equivalent of calling GetEdgeCrease(). + * - Calling with eUserData is the equivalent of calling GetUserData(). + * - Calling with eVisibility is the equivalent of calling GetVisibility(). + * - Calling with texture type is the equivalent of calling GetTextures(FbxLayerElement::EType pType). + * \param pIsUV If \c true, requests the UV layer element that corresponds with the specified texture type. + * \return A pointer to the requested layer element, or \e NULL if the layer element is not defined in this layer. + */ + const FbxLayerElement* GetLayerElementOfType(FbxLayerElement::EType pType, bool pIsUV=false) const; + + /** Sets this layer's Normals description. + * \param pNormals A pointer to the Normals layer element, or \c NULL to remove the Normals definition. + * \remarks FbxNurbs or FbxPatch geometry should not have Normals defined. + */ + void SetNormals(FbxLayerElementNormal* pNormals); + + /** Sets this layer's Binormals description. + * \param pBinormals A pointer to the Binormals layer element, or \c NULL to remove the Binormals definition. + * \remarks FbxNurbs or FbxPatch geometry should not have Binormals defined. + */ + void SetBinormals(FbxLayerElementBinormal* pBinormals); + + /** Sets this layer's Tangents description. + * \param pTangents A pointer to the Tangents layer element, or \c NULL to remove the Tangents definition. + * \remarks FbxNurbs or FbxPatch geometry should not have Tangents defined. + */ + void SetTangents(FbxLayerElementTangent* pTangents); + + /** Sets this layer's Materials description. + * \param pMaterials A pointer to the Materials layer element, or \c NULL to remove the Material definition. + */ + void SetMaterials(FbxLayerElementMaterial* pMaterials); + + /** Sets this layer's Polygon Groups description. + * \param pPolygonGroups A pointer to the Polygon Groups layer element, or \c NULL to remove the Polygon Group definition. + */ + void SetPolygonGroups(FbxLayerElementPolygonGroup* pPolygonGroups); + + /** Sets this layer's UVs description. + * \param pUVs A pointer to the UVs layer element, or \c NULL to remove the UV definition. + * \param pTypeIdentifier Layer element type, should be texture type. + * \remarks FbxNurbs or FbxPatch geometry should not have UVs defined. + * The NURBS/Patch parameterization is used as UV parameters to map a texture. + */ + void SetUVs(FbxLayerElementUV* pUVs, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); + + /** Sets this layer's Vertex Colors description. + * \param pVertexColors A pointer to the Vertex Colors layer element, or \c NULL to remove the Vertex Color definition. + * \remarks FbxNurbs or FbxPatch geometry should not have Vertex Colors defined, since no vertex exists. + */ + void SetVertexColors (FbxLayerElementVertexColor* pVertexColors); + + /** Sets this layer's Smoothing description. + * \param pSmoothing A pointer to the Smoothing layer element, or \c NULL to remove the Smoothing definition. + * \remarks FbxNurbs or FbxPatch geometry should not have Smoothing defined. + */ + void SetSmoothing (FbxLayerElementSmoothing* pSmoothing); + + /** Sets this layer's Vertex Crease description. + * \param pCrease A pointer to the Vertex Crease layer element, or \c NULL to remove the Crease definition. + * \remarks Crease should only be defined when the geometry is FbxSubDiv. + */ + void SetVertexCrease (FbxLayerElementCrease* pCrease); + + /** Sets this layer's Edge Crease description. + * \param pCrease A pointer to the Edge Crease layer element, or \c NULL to remove the Crease definition. + * \remarks Crease should only be defined when the geometry is FbxSubDiv. + */ + void SetEdgeCrease (FbxLayerElementCrease* pCrease); + + /** Sets this layer's Hole description. + * \param pHole A pointer to the Hole layer element, or \c NULL to remove the Hole definition. + * \remarks Hole should only be defined when the geometry is FbxMesh. + */ + void SetHole (FbxLayerElementHole* pHole); + + /** Sets this layer's User Data. + * \param pUserData A pointer to the User Data layer element, or \c NULL to remove the User Data. + */ + void SetUserData (FbxLayerElementUserData* pUserData); + + /** Sets this layer's the visibility. + * \param pVisibility A pointer to the visibility layer element, or \c NULL to remove the visibility. + */ + void SetVisibility( FbxLayerElementVisibility* pVisibility ); + + /** Sets the specified type of layer element description for this layer. + * \param pLayerElement A pointer to the layer element, or \c NULL to remove the layer element. + * \param pType The required Layer element type. + * - Calling with eNormal is the equivalent of calling GetNormals(). + * - Calling with eBiNormal is the equivalent of calling GetBinormals(). + * - Calling with eTangent is the equivalent of calling GetTangents(). + * - Calling with eMaterial is the equivalent of calling GetMaterials(). + * - Calling with ePolygonGroup is the equivalent of calling GetPolygonGroups(). + * - Calling with eUV is the equivalent of calling GetUVs(). + * - Calling with eVertexColor is the equivalent of calling GetVertexColors(). + * - Calling with eSmoothing is the equivalent of calling GetSmoothing(). + * - Calling with eVertexCrease is the equivalent of calling GetVertexCrease(). + * - Calling with eEdgeCrease is the equivalent of calling GetEdgeCrease(). + * - Calling with eUserData is the equivalent of calling GetUserData(). + * - Calling with eVisibility is the equivalent of calling GetVisibility(). + * - Calling with texture type is the equivalent of calling GetTextures(FbxLayerElement::EType pType). + * \param pIsUV If \c true, requests the UV layer element that corresponds with the specified texture type. + */ + void SetLayerElementOfType(FbxLayerElement* pLayerElement, FbxLayerElement::EType pType, bool pIsUV=false); + + /** Creates the specified type of layer element description for this layer. + * \param pType The required Layer element type. + * \param pIsUV When \c true, requests the UV LayerElement that corresponds with the specified Layer Element type (only applies to + * TEXTURE type layer elements). + * \return A pointer to the newly created layer element, or \e NULL if the layer element has not been created for this layer. + */ + FbxLayerElement* CreateLayerElementOfType(FbxLayerElement::EType pType, bool pIsUV=false); + + /** Clone function. + * \param pSrcLayer The source layer to be cloned. + */ + void Clone(FbxLayer const& pSrcLayer); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + //! Assignment operator. + FbxLayer& operator=(FbxLayer const& pSrcLayer); + //@} +private: + + FbxLayer(FbxLayerContainer& pOwner); + virtual ~FbxLayer(); + + void Clear(); + + FbxLayerContainer& mOwner; + + FbxLayerElement* mNonTexturesArray[FbxLayerElement::sTypeNonTextureCount]; + FbxLayerElementUV* mUVsArray[FbxLayerElement::sTypeTextureCount]; + FbxLayerElementTexture* mTexturesArray[FbxLayerElement::sTypeTextureCount]; + + + friend class FbxLayerContainer; + +public: + /** + * \name Serialization section + */ + //@{ + bool ContentWriteTo(FbxStream& pStream) const; + bool ContentReadFrom(const FbxStream& pStream); + //@} + virtual int MemoryUsage() const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** + * Utility macro for iterating over texture layer elements + */ +#define FBXSDK_FOR_EACH_TEXTURE(lLayerIndex) for((lLayerIndex)=0;(lLayerIndex)GetElementUV("map1"); + * FbxGeometryElementUV::DirectArrayType lDirectArray = lUVs->GetDirectArray(); + * int lDirectUVCount = lDirectArray.GetCount(); + * FbxVector2 lFirstUV = lDirectArray[0]; + * \endcode + * \see FbxGeometryBase + */ +typedef FbxLayerElement FbxGeometryElement; +typedef FbxLayerElementNormal FbxGeometryElementNormal; +typedef FbxLayerElementBinormal FbxGeometryElementBinormal; +typedef FbxLayerElementTangent FbxGeometryElementTangent; +typedef FbxLayerElementMaterial FbxGeometryElementMaterial; +typedef FbxLayerElementPolygonGroup FbxGeometryElementPolygonGroup; +typedef FbxLayerElementUV FbxGeometryElementUV; +typedef FbxLayerElementVertexColor FbxGeometryElementVertexColor; +typedef FbxLayerElementUserData FbxGeometryElementUserData; +typedef FbxLayerElementSmoothing FbxGeometryElementSmoothing; +typedef FbxLayerElementCrease FbxGeometryElementCrease; +typedef FbxLayerElementHole FbxGeometryElementHole; +typedef FbxLayerElementVisibility FbxGeometryElementVisibility; + +#undef FBXSDK_LAYER_ELEMENT_CREATE_DECLARE + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_LAYER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxlayercontainer.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxlayercontainer.h new file mode 100644 index 00000000..c2675e81 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxlayercontainer.h @@ -0,0 +1,154 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxlayercontainer.h +#ifndef _FBXSDK_SCENE_GEOMETRY_LAYER_CONTAINER_H_ +#define _FBXSDK_SCENE_GEOMETRY_LAYER_CONTAINER_H_ + +#include + +#include +#include + +#include + +/** \brief Contains a collection of FbxLayer objects. + * This class is used for managing layers construction, destruction and access. + * See FbxLayerElement for more details. + * \nosubgrouping + * \see FbxLayer + */ +class FBXSDK_DLL FbxLayerContainer : public FbxNodeAttribute +{ + FBXSDK_OBJECT_DECLARE(FbxLayerContainer,FbxNodeAttribute); +public: + + /** Returns the type of node attribute. + */ + virtual FbxNodeAttribute::EType GetAttributeType() const; + + /** + * \name Layer Management + */ + //@{ + + /** Creates a new layer on top of existing layers. + * \return Index of created layer or -1 if an error occurs. + */ + int CreateLayer(); + + //! Deletes all layers. + void ClearLayers(); + + /** Returns the number of layers. + * \return The number of layers. + */ + int GetLayerCount() const; + + /** Returns the number of layers that contain the specified layer element type. + * \param pType The specified Layer Element type. + * \param pUVCount When \c true, requests the UV layer element corresponding to the specified texture type. + * \return The number of layers containing the specified layer element type. + */ + int GetLayerCount(FbxLayerElement::EType pType, bool pUVCount=false) const; + + /** Returns the layer at the specified index. + * \param pIndex Layer index. + * \return Pointer to the layer, or \c NULL if pIndex is out of range. + */ + FbxLayer* GetLayer(int pIndex); + + /** Returns the layer at the specified index. + * \param pIndex Layer index. + * \return Pointer to the layer, or \c NULL if pIndex is out of range. + */ + const FbxLayer* GetLayer(int pIndex) const; + + /** Returns the n'th layer as specified by pIndex that contains the specified layer element type. + * If the pType is FbxLayerElement::eUV, this method will return the n'th layer as specified by pIndex that contains the diffuse UV. + * For example, GetLayer(int pIndex, FbxLayerElement::eUV) is same as GetLayer(int pIndex, FbxLayerElement::eTextureDiffuse, true). + * \param pIndex Layer index. + * \param pType The specified layer element type. + * \param pIsUV When \c true, requests the UV layer element that corresponds with the specified texture type. + * \return Pointer to the layer, or \c NULL if pIndex is out of range. + */ + FbxLayer* GetLayer(int pIndex, FbxLayerElement::EType pType, bool pIsUV=false); + + /** Returns the n'th layer as specified by pIndex that contains the specified layer element type. + * If the pType is FbxLayerElement::eUV, this method will return the n'th layer as specified by pIndex that contains the diffuse UV. + * For example, GetLayer(int pIndex, FbxLayerElement::eUV) is same as GetLayer(int pIndex, FbxLayerElement::eTextureDiffuse, true). + * \param pIndex Layer index. + * \param pType The specified layer element type. + * \param pIsUV When \c true, requests the UV layer element that corresponds with the specified texture type. + * \return Pointer to the layer, or \c NULL if pIndex is out of range. + */ + const FbxLayer* GetLayer(int pIndex, FbxLayerElement::EType pType, bool pIsUV=false) const; + + /** Returns the global index of the n'th layer as specified by pIndex that contains the specified layer element type. + * \param pIndex Layer index of the specified type. + * \param pType The specified layer element type. + * \param pIsUV When \c true, requests the UV layer element that corresponds with the specified texture type. + * \return Global index of the n'th layer as specified by pIndex that contains the specified layer element type, or -1 if the layer is not found. + * \remarks The returned index is the position of the layer in the global array of layers. + * You can use the returned index to call GetLayer(int pIndex). + */ + int GetLayerIndex(int pIndex, FbxLayerElement::EType pType, bool pIsUV=false) const; + + /** Converts the layer's global index to a type-specific index. + * \param pGlobalIndex The index of the layer in the global array of layers. + * \param pType The type upon which the type-specific index will be returned. + * \param pIsUV When \c true, requests the UV layer element that corresponds with the specified texture type. + * \return Layer index of the specified layer element type, or -1 if the layer element type is not found on the layer. + */ + int GetLayerTypedIndex(int pGlobalIndex, FbxLayerElement::EType pType, bool pIsUV=false) const; + //@} + + /** Converts the reference mode from eDirect to eIndexToDirect. + * \param pLayer The Layer to convert. + * \return \c True if conversion is successful, or \c false otherwise. + * \remarks For the time being, this method only applies to the LayerLementType eMaterial + */ + bool ConvertDirectToIndexToDirect(int pLayer); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + + int GTC(FbxUInt i, int j); + void* GT (int i, FbxUInt l, int j); + int AT (void* t, FbxUInt l, int j); + int GTI(const char* n, FbxUInt l, int j); + int GMC(FbxUInt i, void* n = NULL); + void* GM (int i, FbxUInt l, void* n = NULL); + int AM (void* m, FbxUInt l, void* n = NULL, bool b = false); + int GMI(const char* n, FbxUInt l, void* d = NULL); + + int AddToLayerElementsList(FbxLayerElement* pLEl); + void RemoveFromLayerElementsList(FbxLayerElement* pLEl); + +protected: + virtual void Destruct(bool pRecursive); + + void CopyLayers(const FbxLayerContainer* pLayerContainer); + + virtual void SetDocument(FbxDocument* pDocument); + virtual bool ConnectNotify (FbxConnectEvent const &pEvent); + + FbxArray mLayerArray; + FbxArray mLayerElementsList; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_LAYER_CONTAINER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxlight.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxlight.h new file mode 100644 index 00000000..005b6c81 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxlight.h @@ -0,0 +1,273 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxlight.h +#ifndef _FBXSDK_SCENE_GEOMETRY_LIGHT_H_ +#define _FBXSDK_SCENE_GEOMETRY_LIGHT_H_ + +#include + +#include + +#include + +class FbxTexture; + +/** \brief This node attribute contains methods for accessing the properties of a light. + * \nosubgrouping + */ +class FBXSDK_DLL FbxLight : public FbxNodeAttribute +{ + FBXSDK_OBJECT_DECLARE(FbxLight, FbxNodeAttribute); + +public: + /** + * \name Light Properties + */ + //@{ + /** \enum EType Light types. + * - \e ePoint + * - \e eDirectional + * - \e eSpot + * - \e eArea + * - \e eVolume + */ + enum EType + { + ePoint, + eDirectional, + eSpot, + eArea, + eVolume + }; + + /** \enum EDecayType Decay types. Used for setting the attenuation of the light. + * - \e eNone No decay. The light's intensity will not diminish with distance. + * - \e eLinear Linear decay. The light's intensity will diminish linearly with the distance from the light. + * - \e eQuadratic Quadratic decay. The light's intensity will diminish with the squared distance from the light. + * This is the most physically accurate decay rate. + * - \e eCubic Cubic decay. The light's intensity will diminish with the cubed distance from the light. + */ + enum EDecayType + { + eNone, + eLinear, + eQuadratic, + eCubic + }; + + /** \enum EAreaLightShape Supported area light types. + * - \e eRectangle Rectangle (or often called a plane) area light type. + * - \e eSphere Area light that illuminate all directions. + */ + enum EAreaLightShape + { + eRectangle, + eSphere + }; + + /** Set the shadow texture for the light. + * \param pTexture The texture cast by the light shadow. + */ + void SetShadowTexture(FbxTexture* pTexture); + + /** Get the light state. + * \return Pointer to the texture cast by the light shadow, or \c NULL if the shadow texture has not been set. + */ + FbxTexture* GetShadowTexture() const; + //@} + + /** + * \name Properties + */ + //@{ + /** This property handles the light type. + * + * Default value is ePoint + */ + FbxPropertyT LightType; + + /** This property handles the cast light on object flag. + * + * Default value is true + */ + FbxPropertyT CastLight; + + /** This property handles the draw volumetric light flag. + * + * Default value is true + */ + FbxPropertyT DrawVolumetricLight; + + /** This property handles the draw ground projection flag. + * + * Default value is true + */ + FbxPropertyT DrawGroundProjection; + + /** This property handles the draw facing volumetric projection flag. + * + * Default value is false + */ + FbxPropertyT DrawFrontFacingVolumetricLight; + + /** This property handles the light color. + * + * Default value is (1.0, 1.0, 1.0) + */ + FbxPropertyT Color; + + /** This property handles the light intensity. + * + * Default value is 100.0 + */ + FbxPropertyT Intensity; + + /** This property handles the light inner cone angle (in degrees). Also know as the HotSpot + * + * Default value is 45.0 + */ + FbxPropertyT InnerAngle; + + /** This property handles the light outer cone angle (in degrees). Also known as the Falloff + * + * Default value is 45.0 + */ + FbxPropertyT OuterAngle; + + /** This property handles the light fog intensity + * + * Default value is 50.0 + */ + FbxPropertyT Fog; + + /** This property handles the decay type + * + * Default value is eNone + */ + FbxPropertyT DecayType; + + /** This property handles the decay start distance + * + * Default value is 0.0 + */ + FbxPropertyT DecayStart; + + /** This property handles the gobo file name + * + * Default value is "" + */ + FbxPropertyT FileName; + + /** This property handles the enable near attenuation flag + * + * Default value is false + */ + FbxPropertyT EnableNearAttenuation; + + /** This property handles the near attenuation start distance + * + * Default value is 0.0 + */ + FbxPropertyT NearAttenuationStart; + + /** This property handles the near end attenuation + * + * Default value is 0.0 + */ + FbxPropertyT NearAttenuationEnd; + + /** This property handles the enable far attenuation flag + * + * Default value is false + */ + FbxPropertyT EnableFarAttenuation; + + /** This property handles the far attenuation start distance + * + * Default value is 0.0 + */ + FbxPropertyT FarAttenuationStart; + + /** This property handles the attenuation end distance + * + * Default value is 0.0 + */ + FbxPropertyT FarAttenuationEnd; + + /** This property handles the cast shadow flag + * + * Default value is false + */ + FbxPropertyT CastShadows; + + /** This property handles the shadow color + * + * Default value is (0.0, 0.0, 0.0) + */ + FbxPropertyT ShadowColor; + + /** This property handles type when LightType is eArea + * + * Default value is eRectangle + */ + FbxPropertyT AreaLightShape; + + /** This property handles the left barn door angle + * + * Default value is 20.0 + */ + FbxPropertyT LeftBarnDoor; + + /** This property handles the right barn door angle + * + * Default value is 20.0 + */ + FbxPropertyT RightBarnDoor; + + /** This property handles the top barn door angle + * + * Default value is 20.0 + */ + FbxPropertyT TopBarnDoor; + + /** This property handles the bottom barn door angle + * + * Default value is 20.0 + */ + FbxPropertyT BottomBarnDoor; + + /** This property handles active status of barn doors + * + * Default value is false + */ + FbxPropertyT EnableBarnDoor; + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxNodeAttribute::EType GetAttributeType() const; + +protected: + virtual void ConstructProperties(bool pForceSet); + virtual FbxStringList GetTypeFlags() const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +inline EFbxType FbxTypeOf(const FbxLight::EType&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxLight::EDecayType&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxLight::EAreaLightShape&){ return eFbxEnum; } + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_LIGHT_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxlimitsutilities.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxlimitsutilities.h new file mode 100644 index 00000000..c0bb207b --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxlimitsutilities.h @@ -0,0 +1,106 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxlimitsutilities.h +#ifndef _FBXSDK_SCENE_GEOMETRY_LIMIT_UTILS_H_ +#define _FBXSDK_SCENE_GEOMETRY_LIMIT_UTILS_H_ + +#include + +#include +#include +#include + +#include + +/** \brief This class represent a utility of limits for transforms. +* \nosubgrouping +*/ +class FBXSDK_DLL FbxLimitsUtilities +{ +public: + /** \enum EType Limit Type. + * - \e eTranslation Translation type + * - \e eRotation Rotation type + * - \e eScaling Scale type + */ + enum EType + { + eTranslation, + eRotation, + eScaling + }; + + /** \enum ERotationType Rotation type. + * - \e eQuaternion Quaternion rotation type + * - \e eEuler Euler rotation type + */ + enum ERotationType + { + eQuaternion, + eEuler + }; + + /** \enum ERotationClampType Rotation clamp type. + * - \e eRectangular Rectangular clamp type + * - \e eEllipsoid Ellipsoid clamp type + */ + enum ERotationClampType + { + eRectangular, + eEllipsoid + }; + + + FbxLimitsUtilities(FbxNode* pNode); + + /** + * \name Getter/Setter functions + */ + //@{ + void SetAuto(EType pType, bool pAuto); + bool GetAuto(EType pType) const; + + void SetEnable(EType pType, bool pEnable); + bool GetEnable(EType pType) const; + + void SetDefault(EType pType, FbxVector4 pDefault); + FbxVector4 GetDefault(EType pType) const; + + void SetMin(EType pType, FbxVector4 pMin); + FbxVector4 GetMin(EType pType) const; + + void SetMax(EType pType, FbxVector4 pMax); + FbxVector4 GetMax(EType pType) const; + + void SetRotationType(ERotationType pType); + ERotationType GetRotationType() const; + + ERotationClampType GetRotationClampType() const; + + void SetRotationAxis(FbxVector4 pRotationAxis); + FbxVector4 GetRotationAxis() const; + + void SetAxisLength(double pLength); + double GetAxisLength() const; + + void UpdateAutomatic(FbxNode* pNode); + FbxVector4 GetEndPointTranslation(FbxNode* pNode) const; + FbxVector4 GetEndSite(FbxNode* pNode) const; + //@} + + FbxNode* mNode; + double mAxisLength; +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_LIMIT_UTILS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxline.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxline.h new file mode 100644 index 00000000..ab1237ba --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxline.h @@ -0,0 +1,156 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxline.h +#ifndef _FBXSDK_SCENE_GEOMETRY_LINE_H_ +#define _FBXSDK_SCENE_GEOMETRY_LINE_H_ + +#include + +#include +#include + +#include + +/** A line is a geometry made of points. To be different from curves(nurbs, etc), line is linear. +* The class can define a line with as many points as needed. The line can also represent line segments, which means there will be gaps among points. +* To denote line segments and these gaps, certain points could be marked as end points. That's why we supply an index array(mPointArray) and an end point array(mEndPointArray). +* To mark a point as end point, we add its index(of mPointArray) to mEndPointArray. +* \nosubgrouping +* Methods to initialize, set and access control points are provided in the FbxGeometryBase class. +* To initialize control point count, please use FbxLine::InitControlPoints(int pCount). +* To set a control point, please use FbxLine::SetControlPointAt(const FbxVector4 &pCtrlPoint , int pIndex). +* To get control point count, please use FbxLine::GetControlPointsCount(). +* To get a control point, please use FbxLine::GetControlPointAt(int pIndex). The pIndex could be returned by GetPointIndexAt(i). +*/ +class FBXSDK_DLL FbxLine : public FbxGeometry +{ + FBXSDK_OBJECT_DECLARE(FbxLine, FbxGeometry); + +public: + /** Return the type of node attribute. + * \return Return the type of this node attribute which is \e EType::eLine. + */ + virtual FbxNodeAttribute::EType GetAttributeType() const; + + /** Reset the line to default values. + * Frees and set to \c NULL all layers and clear the control point array, the index array and end points array. + */ + void Reset(); + + /** Sets the size of index array(mPointArray). + * \param pCount Specify the size of mPointArray. + */ + void SetIndexArraySize(int pCount); + + /** Return the size of index array(mPointArray). + * \return The number of points defined for this line. + */ + int GetIndexArraySize() const; + + /** Get the pointer to the index array. + * \return the pointer to the index array(mPointArray). + */ + inline FbxArray* GetIndexArray() { return &mPointArray;} + + /** Sets index array(mPointArray) at a specified index. + * \param pValue An index to a control point. Its range is from 0 to count of control point. + * \param pIndex The specified index to mPointArray. Its range is from 0 to size of mPointArray. + * \param pAsEndPoint Mark current point as end point or not. If pAsEndPoint is true, pIndex will be automatically added to mEndPointArray. + * \return True on success, false on failure if pIndex is out of range. + */ + bool SetPointIndexAt(int pValue, int pIndex, bool pAsEndPoint = false); + + /** Gets the point index(i.e: an index to a control point) at the specified index. + * \param pIndex The specified index to the point index array(mPointArray). Its range is from 0 to size of mPointArray. + * \return Return the index to the table of the control points. If pIndex is out of range, it will return -1. + */ + int GetPointIndexAt(int pIndex) const; + + /** Adds a point to the index array (mPointArray). + * \param pValue The index to a control point. Its range is from 0 to count of control point. + * \param pAsEndPoint Mark current point as end point or not. If pAsEndPoint is true, current point index will be automatically added to mEndPointArray. + * \return True on success, false on failure if pValue is out of range. + */ + bool AddPointIndex(int pValue, bool pAsEndPoint = false); + + /** Get the pointer to the end point array. + * \return the pointer to the end points array(mEndPointArray). + */ + inline FbxArray* GetEndPointArray() { return &mEndPointArray;} + + /** Adds a point index to the end point array (mEndPointArray). + * To mark it as end point, its index to mPointArray will be added to mEndPointArray. + * \param pPointIndex The specified index to the point index array(mPointArray). Its range is from 0 to size of mPointArray. + * \return True on success, false on failure if pPointIndex is out of range. + * \remarks The point index in mEndPointArray should be incremental, otherwise, it will return false. + * To add pPointIndex, mEndPointArray will be automatically appended and resized. You never have to set count or resize for mEndPointArray. + * Below is the code sample: + * \code + * int lIndexCount = lLine->GetIndexArraySize(); + * for(int i = 0; i < lIndexCount; i++) + * { + * if(i%2 == 1) + * { + * lLine->AddEndPoint(i); + * } + * } + * \endcode + */ + bool AddEndPoint(int pPointIndex); + + /** Gets the point index(an index to the point index array) at the specified index. + * \param pEndPointIndex The specified index to the end points array(mEndPointArray). Its range is from 0 to size of mEndPointArray. + * \return Return the index to the point index array(mPointArray). If pEndPointIndex is out of range, it will return -1. + * \remarks Below is the code sample: + * \code + * int lEndPointsCount = lLine->GetEndPointCount(); + * for (int j = 0; j < lEndPointsCount; j++) + * { + * //Get the index to the index array. + * int lEndIndex = lLine->GetEndPointAt(j); + * // to get the control point index of the end point + * int lControlPointIndex = lLine->GetPointIndexAt(lEndIndex); + * } + * \endcode + */ + int GetEndPointAt(int pEndPointIndex) const; + + /** Query the number of end points. + * \return Return the size of end point array(mEndPointArray). + */ + int GetEndPointCount() const; + + /** This property decide whether this line is renderable in 3DSMax. + * Lines from Maya are not renderable by default. + */ + FbxPropertyT Renderable; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + virtual void Destruct(bool pRecursive); + +private: + FbxArray mPointArray; + FbxArray mEndPointArray; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_LINE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxlodgroup.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxlodgroup.h new file mode 100644 index 00000000..83069785 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxlodgroup.h @@ -0,0 +1,322 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxlodgroup.h +#ifndef _FBXSDK_SCENE_GEOMETRY_LOD_GROUP_H_ +#define _FBXSDK_SCENE_GEOMETRY_LOD_GROUP_H_ + +#include + +#include + +#include + +/** Defines a LOD (Level of Detail) group. + * This LodGroup node is a group node that can be used to detect how + * close a group of objects is to a camera. Typically this node is + * used for controlling "Level of Detail" visibility. + * + * Properties in the class are designed according to Maya implementation. + * So these properties may be incompatible with other software, like 3ds Max. + * + * In Maya, with "Level of Detail",the visibility of the children of this + * transform are controlled by the distance of a group to the camera and the + * threshold values. + * + * For example, under a LOD group node, there are three children: + * ship_detailed, ship_medium, and ship_rough. There are 2 threshold + * values: 5, 10. When the camera is less than 5 units away of the group + * bounding box, only ship_detailed is visible. When the view is zoomed out and + * the camera is between 5 and 10 units away from the group, only ship_medium is + * visible. Finally, when the view is zoomed out more and the camera is 10 or + * more units away from the group, only ship_rough is visible. + * + * This node attribute contains the properties of a null node. + * + * Example code to create LODGroup: + * \code + * FbxNode *lLodGroup = FbxNode::Create(pScene, "LODNode"); + * FbxLODGroup *lLodGroupAttr = FbxLODGroup::Create(pScene, "LODGroup1"); + * // Array lChildNodes contains geometries of all LOD levels + * for (int j = 0; j < lChildNodes.GetCount(); j++) + * { + * lLodGroup->AddChild(lChildNodes.GetAt(j)); + * } + * \endcode + * + * This object can also be configured to define thresholds as percentage values. + * Typically, these percentage values represent the ratio between the group bounding + * box height (in screen space) and the viewing screen height. + * + * To switch to this mode, the client application must set the value of the + * ThresholdsUsedAsPercentage property to "true" before the calls to the AddThreshold/ + * SetThreshold methods. Client applications should always check the return value of + * these methods to validate that the action was successful. + * + * Note that, for backward compatibility, the data is always stored as FbxDistance type. + * The client application should always check the return value of this method to validate + * that the argument contains a meaningful value (see GetThreshold for more details). + * + * Example code to create LODGroup that store percentage values: + * \code + * FbxNode *lLodGroup = FbxNode::Create(pScene, "LODNode"); + * FbxLODGroup *lLodGroupAttr = FbxLODGroup::Create(pScene, "LODGroup1"); + * lLodGroupAttr->ThresholdsUsedAsPercentage.Set(true); + * FBX_ASSERT(lLodGroupAttr->AddThreshold(33.3)) == true); + * FBX_ASSERT(lLodGroupAttr->AddThreshold(66.6)) == true); + * FBX_ASSERT(lLodGroupAttr->AddThreshold(FbxDistance(0.6f, "cm")) == false); + * + * FbxDistance dval; + * FbxDouble val = 0.0; + * bool res; + * res = lLodGroupAttr->GetThreshold(0, val); // res = true, val = 33.3 + * res = lLodGroupAttr->GetThreshold(0, dval); // res = false, dval.value()=33.3 + * res = lLodGroupAttr->GetThreshold(2, val); // res = false, val = 1.0 + * \nosubgrouping + */ +class FBXSDK_DLL FbxLODGroup : public FbxNodeAttribute +{ + FBXSDK_OBJECT_DECLARE(FbxLODGroup, FbxNodeAttribute); + +public: + //! Return the type of node attribute which is EType::eLODGroup. + virtual FbxNodeAttribute::EType GetAttributeType() const; + + /** \enum EDisplayLevel types to determine how to display nodes in LODGroup. + * - \e eUseLOD Display the node according LOD threshold + * - \e eShow Always show this node + * - \e eHide Always hide this node + */ + enum EDisplayLevel + { + eUseLOD, + eShow, + eHide + }; + + ////////////////////////////////////////////////////////////////////////// + // + // Properties + // + ////////////////////////////////////////////////////////////////////////// + /** Specifies if the threshold values stored by this LOD object are defining + * a distance to the camera (by default) or a percentage value. + * + * \remarks This property needs to be set before any call to the Add\SetThreshold + * methods since its value is used to validate that the correct method is + * called. + * + * To access this property do: ThresholdsUsedAsPercentage.Get(). + * To set this property do: ThresholdsUsedAsPercentage.Set(bool). + * + * Default value is false + */ + FbxPropertyT ThresholdsUsedAsPercentage; + + /** + * \name Distance Mode + * The properties in this block are meaningful only if ThresholdsUsedAsPercentage + * is set to false and should be ignored otherwise. + */ + //@{ + /** This property handles the use of the Min/Max distances. + * Enables the minimum and maximum distance to take effect. + * For example, if the distance between the group and the camera is smaller + * than the minimum distance, then the whole group disappears. + * + * To access this property do: MinMaxDistance.Get(). + * To set this property do: MinMaxDistance.Set(bool). + * + * Default value is false. + */ + FbxPropertyT MinMaxDistance; + + /** The minimum distance at which the group is displayed. + * + * To access this property do: MinDistance.Get(). + * To set this property do: MinDistance.Set(double). + * + * Default value is -100 + */ + FbxPropertyT MinDistance; + + /** The maximum distance at which the group is displayed. + * + * To access this property do: MaxDistance.Get(). + * To set this property do: MaxDistance.Set(double). + * + * Default value is 100 + */ + FbxPropertyT MaxDistance; + + /** Work in world space of transform or local space If true, + * the camera distance to the LOD group will be computed in world space. + * This means it is possible to parent the LOD transform below other transforms + * and still have it work as expected. If this attribute is set to false, + * the distance computation ignores any parent transforms of the LOD transform. + * + * To access this property do: WorldSpace.Get(). + * To set this property do: WorldSpace.Set(bool). + * + * Default value is false + */ + FbxPropertyT WorldSpace; + //@} + + ////////////////////////////////////////////////////////////////////////// + // + // Methods + // + ////////////////////////////////////////////////////////////////////////// + + /** Get the number of elements in the threshold list. + * In correct situations, the size of this list is one less than the LOD node + * children objects count. + * \return The current size of the threshold list. + */ + int GetNumThresholds() const; + + /** Add a new threshold. + * \param pThreshValue Threshold value (distance). + * \return true if successful and false otherwise. + * \remarks The thresholds list can only expand. Removing items is not + * possible unless a new FbxLODGroup is created to replace this one. + * \remarks This method does not check the received value and blindly adds it + * to the list. Identical values can exist in different positions in + * the list. + * \remarks This method will fail if ThresholdsUsedAsPercentage=true. + */ + bool AddThreshold(const FbxDistance& pThreshValue); + + /** Add a new threshold. + * \param pThreshValue Threshold value (percentage). + * \return true if successful and false otherwise. + * \remarks The thresholds list can only expand. Removing items is not + * possible unless a new FbxLODGroup is created to replace this one. + * \remarks This method does not check the received value and blindly adds it + * to the list. Identical values can exist in different positions in + * the list. + * \remarks This method will fail if ThresholdsUsedAsPercentage=false. + */ + bool AddThreshold(FbxDouble pThreshValue); + + /** Replace the value of the specified threshold. + * \param pEl Element index in the thresholds list. + * \param pThreshValue New threshold value (distance). + * \return true if successful and false otherwise. + * \remarks This method will fail if ThresholdsUsedAsPercentage=true. + */ + bool SetThreshold(int pEl, const FbxDistance& pThreshValue); + + /** Replace the value of the specified threshold. + * \param pEl Element index in the thresholds list. + * \param pThreshValue New threshold value (percentage). + * \return true if successful and false otherwise. + * \remarks This method will fail if ThresholdsUsedAsPercentage=false. + */ + bool SetThreshold(int pEl, FbxDouble pThreshValue); + + /** Get the value of the specified threshold. + * \param pEl Element index in the thresholds list. + * \param pThreshValue The current threshold value. + * \return true if successful and false otherwise. + * \remarks pThreshValue is left unchanged if a bad index is provided, + * else the value stored in the list is returned in pThreshValue + * but may be irrelevant if ThresholdsUsedAsPercentage=true. In + * this case, the return of this function will also be \c false. + */ + bool GetThreshold(int pEl, FbxDistance& pThreshValue) const; + + /** Get the value of the specified threshold. + * \param pEl Element index in the thresholds list. + * \param pThreshValue The current threshold value. + * \return true if successful and false otherwise. + * \remarks pThreshValue is left unchanged if a bad index is provided, + * else the value stored in the list is returned in pThreshValue + * but may be irrelevant if ThresholdsUsedAsPercentage=false. In + * this case, the return of this function will also be \c false. + */ + bool GetThreshold(int pEl, FbxDouble& pThreshValue) const; + + /** Get the number of elements in the displayLevel list. + * In correct situations, the size of this list equals the LOD node + * children objects count. + * \return The current size of the displayLevel list. + */ + int GetNumDisplayLevels() const; + + /** Add a new displayLevel value to the current list. + * + * The value overrides the display of any level and can force it to hide + * or show the object at that level. For example, if the distance between + * the group and the camera is smaller than the first threshold, then the + * object at level 0 is visible. If the display level for the object at + * level 2 is changed to eShow, ie. if the attribute displayLevel[2] is + * set to eShow, then the object at level 2 will show regardless of + * the current active level. + * + * \param pValue Display level value + * \return true if successful and false if any error occurred. + * \remarks Removing items is not possible unless a new FbxLODGroup is + * created to replace this one. + * \remarks This method does not check the received value and blindly adds it + * to the list. Identical values can exist in different positions in + * the list. + */ + bool AddDisplayLevel(FbxLODGroup::EDisplayLevel pValue); + + /** Set the display level value for the specified child object. + * \param pEl The index of the object. + * \param pValue New display level value. + * \return true if successful and false otherwise. + */ + bool SetDisplayLevel(int pEl, FbxLODGroup::EDisplayLevel pValue); + + /** Get the display level value for the specified child object. + * \param pEl The index of the object. + * \param pValue the current display level value. + * \return true if successful and false otherwise. + * \remarks In case of failure, the pValue is left unchanged. + */ + bool GetDisplayLevel(int pEl, FbxLODGroup::EDisplayLevel& pValue) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + +private: + int mNbThresholds; + FbxProperty mThresholds; + + bool RetrieveThreshold(int pEl, FbxDistance& pThreshValue) const; + bool StoreThreshold(int pEl, const FbxDistance& pThreshValue); + + int mNbDisplayLevels; + FbxProperty mDisplayLevels; + + bool DisplayLevel(int pEl, FbxLODGroup::EDisplayLevel pValue); + +public: + virtual FbxStringList GetTypeFlags() const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +inline EFbxType FbxTypeOf(const FbxLODGroup::EDisplayLevel&){ return eFbxEnum; } + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_LOD_GROUP_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxmarker.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxmarker.h new file mode 100644 index 00000000..d70d03de --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxmarker.h @@ -0,0 +1,283 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxmarker.h +#ifndef _FBXSDK_SCENE_GEOMETRY_MARKER_H_ +#define _FBXSDK_SCENE_GEOMETRY_MARKER_H_ + +#include + +#include + +#include + +/** This node attribute contains the properties of a marker. + * A FbxMarker can represent a motion capture marker or a HIK IK/FK effector. + * \nosubgrouping + */ +class FBXSDK_DLL FbxMarker : public FbxNodeAttribute +{ + FBXSDK_OBJECT_DECLARE(FbxMarker, FbxNodeAttribute); + +public: + //! Return the type of node attribute which is EType::eMarker. + virtual FbxNodeAttribute::EType GetAttributeType() const; + + //! Reset the marker to default values. + void Reset(); + + /** \enum EType Marker types. + * - \e eStandard + * - \e eOptical + * - \e eEffectorFK + * - \e eEffectorIK + */ + enum EType + { + eStandard, + eOptical, + eEffectorFK, + eEffectorIK + }; + + /** Set marker type. + * \param pType The type of marker. + */ + void SetType(EType pType); + + /** Get marker type. + * \return The type of the marker. + */ + EType GetType() const; + + /** \enum ELook Marker look. + * - \e eCube + * - \e eHardCross + * - \e eLightCross + * - \e eSphere + * - \e eCapsule + * - \e eBox + * - \e eBone + * - \e eCircle + * - \e eSquare + * - \e eStick + * - \e eNone + */ + enum ELook + { + eCube, + eHardCross, + eLightCross, + eSphere, + eCapsule, + eBox, + eBone, + eCircle, + eSquare, + eStick, + eNone + }; + + /** + * \name Default Animation Values + * This set of functions provides direct access to default + * animation values specific to a marker. The default animation + * values are found in the default take node of the associated node. + * Hence, these functions only work if the marker has been associated + * with a node. + */ + //@{ + + /** Get default occlusion. + * \return 0.0 if optical marker animation is valid by default, 1.0 if it is occluded by default. + * \remarks This function only works if marker type is set to FbxMarker::eOptical. + */ + double GetDefaultOcclusion() const; + + /** Set default occlusion. + * \param pOcclusion 0.0 if optical marker animation is valid by default, 1.0 if it is occluded by default. + * \remarks This function only works if marker type is set to FbxMarker::eOptical. + */ + void SetDefaultOcclusion(double pOcclusion); + + /** Get default IK reach translation. + * \return A value between 0.0 and 100.0, 100.0 means complete IK reach. + * \remarks This function only works if marker type is set to FbxMarker::eEffectorIK. + */ + double GetDefaultIKReachTranslation() const; + + /** Set default IK reach translation. + * \param pIKReachTranslation A value between 0.0 and 100.0, 100.0 means complete IK reach. + * \remarks This function only works if marker type is set to FbxMarker::eEffectorIK. + */ + void SetDefaultIKReachTranslation(double pIKReachTranslation); + + /** Get default IK reach rotation. + * \return A value between 0.0 and 100.0, 100.0 means complete IK reach. + * \remarks This function only works if marker type is set to FbxMarker::eEffectorIK. + */ + double GetDefaultIKReachRotation() const; + + /** Set default IK reach rotation. + * \param pIKReachRotation A value between 0.0 and 100.0, 100.0 means complete IK reach. + * \remarks This function only works if marker type is set to FbxMarker::eEffectorIK. + */ + void SetDefaultIKReachRotation(double pIKReachRotation); + + /** Get default IK pull. + * \return A value between 0.0 and 100.0, 100.0 means complete IK pull. + * \remarks This function only works if marker type is set to FbxMarker::eIK_EFFECTOR. + */ + double GetDefaultIKPull() const; + + /** Set default IK pull. + * \param pIKPull A value between 0.0 and 100.0, 100.0 means complete IK pull. + * \remarks This function only works if marker type is set to FbxMarker::eIK_EFFECTOR. + */ + void SetDefaultIKPull(double pIKPull); + + /** Get default IK pull hips. + * \return A value between 0.0 and 100.0, 100.0 means complete IK pull. + * \remarks This function only works if marker type is set to FbxMarker::eIK_EFFECTOR. + */ + double GetDefaultIKPullHips() const; + + /** Set default IK pull hips. + * \param pIKPullHips A value between 0.0 and 100.0, 100.0 means complete IK pull. + * \remarks This function only works if marker type is set to FbxMarker::eIK_EFFECTOR. + */ + void SetDefaultIKPullHips(double pIKPullHips); + + //@} + + /** + * \name Obsolete functions + */ + //@{ + + /** Get default color. + * \param pColor Filled with appropriate data + * \return Input parameter filled with appropriate data. + * \remarks Marker color can not be animated anymore. + */ + FbxColor& GetDefaultColor(FbxColor& pColor) const; + + /** Set default color. + * \param pColor The marker color to be set. + * \remarks Marker color can not be animated anymore. + */ + void SetDefaultColor(FbxColor& pColor); + + //@} + + ////////////////////////////////////////////////////////////////////////// + // + // Properties + // + ////////////////////////////////////////////////////////////////////////// + + /** This property handles the marker's look. + * + * To access this property do: Look.Get(). + * To set this property do: Look.Set(ELook). + * + * Default value is eCube + */ + FbxPropertyT Look; + + /** This property handles the marker's link visibility. + * + * To access this property do: DrawLink.Get(). + * To set this property do: DrawLink.Set(FbxBool). + * + * Default value is true + */ + FbxPropertyT DrawLink; + + /** This property handles the marker's size. + * + * To access this property do: Size.Get(). + * To set this property do: Size.Set(FbxDouble). + * + * Default value is 100 + */ + FbxPropertyT Size; + + /** This property handles the marker's label visibility. + * + * To access this property do: ShowLabel.Get(). + * To set this property do: ShowLabel.Set(FbxBool). + * + * Default value is false + */ + FbxPropertyT ShowLabel; + + /** This property handles the marker's pivot position. + * + * To access this property do: IKPivot.Get(). + * To set this property do: IKPivot.Set(FbxDouble3). + * + * Default value is (0., 0., 0.) + */ + FbxPropertyT IKPivot; + + // Dynamic properties + + /** This method grants access to the occlusion property. + * \remarks If the marker is not of type Optical or the property + * is invalid, return NULL + */ + FbxProperty GetOcclusion() const; + + /** This method grants access to the IKReachTranslation property. + * \remarks If the marker is not of type IK Effector or the property + * is invalid, return NULL + */ + FbxProperty GetIKReachTranslation() const; + + /** This method grants access to the IKReachRotation property. + * \remarks If the marker is not of type IK Effector or the property + * is invalid, return NULL + */ + FbxProperty GetIKReachRotation() const; + + /** This method grants access to the IKPull property. + * \remarks If the marker is not of type IK Effector or the property + * is invalid, return NULL + */ + FbxProperty GetIKPull() const; + + /** This method grants access to the IKPullHips property. + * \remarks If the marker is not of type IK Effector or the property + * is invalid, return NULL + */ + FbxProperty GetIKPullHips() const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + +protected: + virtual void ConstructProperties(bool pForceSet); + virtual const char* GetTypeName() const; + virtual FbxStringList GetTypeFlags() const; + + EType mType; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +inline EFbxType FbxTypeOf(const FbxMarker::ELook&){ return eFbxEnum; } + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_MARKER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxmesh.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxmesh.h new file mode 100644 index 00000000..16182ef8 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxmesh.h @@ -0,0 +1,830 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxmesh.h +#ifndef _FBXSDK_SCENE_GEOMETRY_MESH_H_ +#define _FBXSDK_SCENE_GEOMETRY_MESH_H_ + +#include + +#include +#include + +#include + +/** A mesh is a geometry made of polygons. +* The class can define a geometry with as many n-sided polygons as needed. Users can freely +* mix triangles, quadrilaterals, and other polygons. Since the mesh-related terminology of the FBX SDK +* differs a little from the known standards, here are our definitions: +* \li A control point is an XYZ coordinate, it is synonym of vertex. +* \li A polygon vertex is an index to a control point (the same control point can be referenced by multiple polygon vertices). +* \li A polygon is a group of polygon vertices. The minimum valid number of polygon vertices to define a polygon is 3. +* \nosubgrouping +* Methods to initialize, set and access control points are provided in the FbxGeometryBase class. */ +class FBXSDK_DLL FbxMesh : public FbxGeometry +{ + FBXSDK_OBJECT_DECLARE(FbxMesh, FbxGeometry); + +public: + /** Return the type of node attribute. + * \return Return the type of this node attribute which is \e EType::eMesh. */ + virtual FbxNodeAttribute::EType GetAttributeType() const; + + /** \name Polygon Management */ + //@{ + /** Begins the process of adding a polygon to the mesh. + * Add vertexes to the polygon using AddPolygon. When the polygon is complete call EndPolygon to complete the creation of the polygon. + * \param pMaterial Index of material to assign to this polygon if material mapping type is \e eByPolygon. Otherwise it must be \c -1. + * \param pTexture Index of texture to assign to this polygon if texture mapping type is \e eByPolygon. Otherwise it must be \c -1. + * \param pGroup Group index assigned to polygon. + * \param pLegacy When set to \c true, automatically create a LayerElement of type Texture; This was the default behavior of earlier + * versions of the FBX SDK. Since version 2010, the textures are connected to the material object. + * \remark This function must be called before AddPolygon(). + * \remark If used, the pTexture index will reference textures assigned to the DIFFUSE channel (FbxLayerElement::eTextureDiffuse). */ + void BeginPolygon(int pMaterial=-1, int pTexture=-1, int pGroup=-1, bool pLegacy=true); + + /** Begin writing a polygon. + * Add vertexes to the polygon using AddPolygon. When the polygon is complete call EndPolygon to complete the creation of the polygon. + * \param pMaterial Index of material to assign to this polygon if material mapping type is \e eByPolygon. Otherwise it must be \c -1. + * \param pTextures Array of index of texture (by texture type) to assign to this polygon if texture mapping type is \e eByPolygon. + * Otherwise it must be an array of \c -1. This array is expected to be of size: FbxLayerElement::sTypeTextureCount. If one texture + * type is not used, the corresponding entry must be left at \c -1. */ + void BeginPolygonExt(int pMaterial, int* pTextures); + + /** Add a polygon vertex to the current polygon. + * \param pIndex Index in the table of the control points. + * \param pTextureUVIndex Index of texture UV coordinates to assign to this polygon if texture UV mapping type is \e eByPolygonVertex. Otherwise it must be \c -1. + * \remark After adding all the polygons of the mesh, call function "BuildMeshEdgeArray" to generate edge data for the mesh. */ + void AddPolygon(int pIndex, int pTextureUVIndex = -1); + + //! End writing a polygon, it should be called after adding one polygon. + void EndPolygon(); + + /** Get the polygon count of this mesh. + * \return Return the number of polygons in the mesh. */ + inline int GetPolygonCount() const { return mPolygons.GetCount(); } + + /** Get the number of polygon vertices in a polygon. + * \param pPolygonIndex Index of the polygon. + * \return The number of polygon vertices in the indexed polygon. If the polygon index is out of bounds, return -1. */ + inline int GetPolygonSize(int pPolygonIndex) const + { + return ( pPolygonIndex >= 0 && pPolygonIndex < mPolygons.GetCount() ) ? mPolygons[pPolygonIndex].mSize : -1; + } + + /** Get the current group ID of the specified polygon. + * A polygon group can be useful to identify a number of polygons that share the same properties. The FBX SDK does not use this information internally + * but guarantee its persistence in the FBX files and in memory. + * \param pPolygonIndex Index of the polygon. + * \return Group index assigned to the polygon. If the polygon index is out of bounds, return -1. */ + int GetPolygonGroup(int pPolygonIndex) const; + + /** Assign the specified polygon a group ID. + * A polygon can only be assigned to one group at the time. + * \param pPolygonIndex Index of the polygon. + * \param pGroup Group index assigned to the polygon. + * \return Group index assigned to the polygon. If the polygon index is out of bounds, do nothing. */ + inline void SetPolygonGroup(int pPolygonIndex, int pGroup) const + { + if( pPolygonIndex >= 0 && pPolygonIndex= 0 && pPolygonIndex < mPolygons.GetCount() && pPositionInPolygon >= 0 && pPositionInPolygon < mPolygons[pPolygonIndex].mSize ) ? + mPolygonVertices[mPolygons[pPolygonIndex].mIndex + pPositionInPolygon] : -1; + } + + /** Get the normal associated with the specified polygon vertex. + * \param pPolyIndex Index of the polygon. + * \param pVertexIndex Index of the vertex in the polygon. + * \param pNormal The returned normal. + * \return \c True on success, \c false on failure. + * \remark \c pNormal remain unchanged if the requested vertex does not exists. */ + bool GetPolygonVertexNormal(int pPolyIndex, int pVertexIndex, FbxVector4& pNormal) const; + + /** Get the normals associated with the mesh for every polygon vertex. + * \param pNormals The returned normals. + * \return \c True on success, \c false on failure. */ + bool GetPolygonVertexNormals(FbxArray& pNormals) const; + + /** Get the UV associated with the specified polygon vertex. + * \param pPolyIndex Index of the polygon. + * \param pVertexIndex Index of the vertex in the polygon. + * \param pUVSetName The name of the UV set that contains the UV. + * \param pUV The returned UV. + * \param pUnmapped State flag that indicates if the polygon vertex does not have an associated UV. + * \return \c True on success, \c false on failure. + * \remark \c pUV remain unchanged if the requested vertex does not exists. + * \remark This function return \c true if the specified polygon vertex does not have an associated UV. In this case, + * pUnampped is set to \c true and the content of \c pUV is undefined. + */ + bool GetPolygonVertexUV(int pPolyIndex, int pVertexIndex, const char* pUVSetName, FbxVector2& pUV, bool& pUnmapped) const; + + /** Get the UVs associated with the mesh for every polygon vertex. + * \param pUVSetName The name of the UV set that contains the UVs. + * \param pUVs The returned UVs. + * \param pUnmappedUVId If specified, this array will be filled with the indices of the UVs that are not associated to a polygon vertex and thus, + * have an undefined value. If the array as a size of 0, then all the polygon vertices have an associated UV coordinate and the \c pUVs + * array can be used as is. Otherwise, the calling application may be required to process the invalid UV coordinates to avoid inconsistent + * results. It is strongly suggested to use the FbxLayerElementUV's Direct and Indexed arrays directly (specially if the calling application + * supports indirection of the UVs). + * \remark unmapped UV coordinates are set to (0,0) + * \return \c True on success, \c false on failure. + */ + bool GetPolygonVertexUVs(const char* pUVSetName, FbxArray& pUVs, FbxArray* pUnmappedUVId = NULL) const; + + /** Get the array of polygon vertices (i.e: indices to the control points). + * This array is a concatenation of the list of polygon vertices of all the polygons. Example: a mesh made of 2 triangles with vertices [1,2,3] + * and vertices [2,3,4] results in [1,2,3,2,3,4]. The first polygon starts at position 0 and the second at position 3. + * \return The array of polygon vertices. */ + int* GetPolygonVertices() const; + + /** Gets the number of polygon vertices in the mesh. + * \return The overall size of the array of polygon vertices in the mesh. + * \remark This value can be smaller than the value returned by GetControlPointsCount() (meaning that not all of the control points stored in the object are used to define the mesh). + * However, typically it will be much bigger since any given control point can be used to define a vertex on multiple polygons. */ + inline int GetPolygonVertexCount() const { return mPolygonVertices.Size(); } + + /** Gets the start index into the array returned by GetPolygonVertices() for the given polygon. + * This method can be used for a faster access to the polygon vertices indices. If, for example, we want to + * access the indices for polygon 3, the following code would do the trick + * \code + * int lStartIndex = mesh.GetPolygonVertexIndex(3); + * if( lStartIndex == -1 ) return; + * int* lVertices = mesh.GetPolygonVertices()[lStartIndex]; + * int lCount = mesh.GetPolygonSize(3); + * for( int i = 0; i < lCount; ++i ) + * { + * int vertexID = lVertices[i]; + * ... + * } + * \endcode + * \param pPolygonIndex The polygon of interest. + * \return The index into the GetPolygonVertices() array. + * \remark If the polygon index is out of bounds, return -1. */ + int GetPolygonVertexIndex(int pPolygonIndex) const; + + /** Remove the specified polygon from the mesh. + * This method will automatically update the layers accordingly. + * \param pPolygonIndex Index of the polygon. + * \return Polygon index. + * \remark If the polygon index is out of bounds, return -1. */ + int RemovePolygon(int pPolygonIndex); + + /** Remove the duplicated edges from the mesh. + * This method will remove duplicated edges. It will not change any vertex and not change the mesh topology. + * \param pEdgeIndexList Index list of edges. + * \return the count of removed edges. + * \remark the edge index list must be ordered. The last one is the max. If the edge index is out of bounds, return -1. */ + int RemoveDuplicatedEdges(FbxArray& pEdgeIndexList); + //@} + + /** \name Texture UV Utility Functions. + * + * The methods found in this section are utility functions used to handle UV coordinates quickly. Internally, they + * refer to \c FbxLayer and \c FbxLayerElementUV methods to do the job. Except for the GetAllChannelUV(int pLayer), + * all the methods are implicitly working on Layer 0. Use the \c FbxLayer methods to have access to the other layers. */ + //@{ + /** Init texture UV coordinates. + * \param pCount Number of texture UV elements. + * \param pTypeIdentifier Specifies which texture channel this UV refers to. + * \remark \c pCount must equal the number of control points of the Mesh if + * the UV mapping mode is \e FbxLayerElement::eByControlPoint. */ + void InitTextureUV(int pCount, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); + + /** Add texture UV coordinates. + * Appends a new element at the end of the array of texture UV coordinates. + * \param pUV Texture UV coordinates, ranging between \c 0 and \c 1. + * \param pTypeIdentifier Specifies which texture channel this UV refers to. + * \remark The final number of texture UV elements must equal the number of control + * points if the UV mapping mode is \e FbxLayerElement::eByControlPoint. */ + void AddTextureUV(FbxVector2 pUV, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); + + /** Get the number of texture UV coordinates. + * \param pTypeIdentifier The texture channel the UV refers to. */ + int GetTextureUVCount(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); + + /** Get the number of layer containing at least one channel UVMap. + * return \e 0 if no UV maps have been defined. */ + int GetUVLayerCount() const; + + /** Fills an array describing, for the given layer, which texture channel have UVs associated to it. + * \param pLayer Index of the layer. + * \return Array with the channel descriptor. + * \remark Only the channels that have UVs associated are reported in the array. For example, let's assume that we have defined UVs for the Diffuse, + * Ambient and Bump channels on layer 0. The resulting array will have the following three entries: + * \li FbxLayerElement::eDIFFUSE_TEXTURE + * \li FbxLayerElement::eAMBIENT_TEXTURE + * \li FbxLayerElement::eBUMP_TEXTURE */ + FbxArray GetAllChannelUV(int pLayer); + //@} + + /** \name Material, Texture and UV Indices Utility Functions. + * The methods found in this section are utility functions used to handle Material, Texture and UV indices quickly. + * Internally, they refer to \c FbxLayer and \c FbxLayerElementUV methods to do the job. These functions are only + * working on Layer 0. Use the \c FbxLayer methods directly to access other layers. */ + //@{ + /** Initialize material indices. + * \param pMappingMode The mapping mode. + * This method must be called after FbxGeometryBase::InitControlPoints(). + * The material indices refer to the position of a material in the FbxLayerElementMaterial's direct array. + * See FbxLayerElementMaterial for more details. Supported mapping types are \e eByControlPoint, + * \e eByPolygon and \e eALL_SAME. + * - If mapping mode is \e eByControlPoint, there will be as many indices in the material index array + * as there are control points. + * - If mapping mode is \e eByPolygon, there will be as many indices in the material index array + * as there are polygons in the mesh. + * - If mapping mode is \e eALL_SAME, there will be only one index in the material index array. + * \remark This function will set the Reference mode of the FbxLayerElementMaterial on layer 0 to \e eIndexToDirect. */ + void InitMaterialIndices(FbxLayerElement::EMappingMode pMappingMode); + + /** Initialize texture indices. + * \param pMappingMode The mapping mode. + * The texture indices refer to the texture connection to the material. In older versions of the FBX SDK, the + * indices were referring to the entries in the direct array of the FbxLayerElementTexture. + * See FbxLayerElementTexture for more details. Supported mapping modes are \e eByPolygon + * and \e eALL_SAME. + * - If mapping mode is \e eByPolygon, there will be as many indices in the texture index array + * as there are polygons in the mesh. + * - If mapping mode is \e eALL_SAME, there will be only one index in the texture index array. + * \param pTextureType The texture channel identifier. + * \remark This function will set the Reference mode of the FbxLayerElementTexture on layer 0 to \e eIndexToDirect. */ + void InitTextureIndices(FbxLayerElement::EMappingMode pMappingMode, FbxLayerElement::EType pTextureType); + + /** Initialize texture UV indices. + * \param pMappingMode The mapping mode. + * The texture UV indices refer to the index of an element in the FbxLayerElementUV's direct array. + * See FbxLayerElementUV for more details. Supported mapping types are \e eByControlPoint , \e eByPolygonVertex + * and \e eALL_SAME. + * - If mapping mode is \e eByControlPoint, there will be as many indices in the UV index array + * as there are control points. This will also set the Reference mode of the FbxLayerElementUV on + * layer 0 to \e eDirect. + * - If mapping mode is \e eByPolygonVertex, there will be an index in the UV index array + * for each vertex, for each polygon it is part of. This will also set the Reference mode of the FbxLayerElementUV on + * layer 0 to \e eIndexToDirect. + * - If mapping mode is \e eALL_SAME, there will be no index in the UV index array. This will also set the Reference + * mode of the FbxLayerElementUV on layer 0 to \e eDirect. + * \param pTypeIdentifier The texture channel the UVIndices refers to. */ + void InitTextureUVIndices(FbxLayerElement::EMappingMode pMappingMode, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); + + /** Get a texture UV index associated with a polygon vertex (i.e: an index to a control point). + * \param pPolygonIndex Index of polygon. + * The valid range for this parameter is 0 to FbxMesh::GetPolygonCount(). + * \param pPositionInPolygon Position of polygon vertex in indexed polygon. + * The valid range for this parameter is 0 to FbxMesh::GetPolygonSize(pPolygonIndex). + * \param pTypeIdentifier The texture channel the UVIndex refers to. + * \return Return a texture UV index. + * \remark This function only works if the texture UV mapping mode is set to \e eByPolygonVertex, + * otherwise it returns -1. */ + int GetTextureUVIndex(int pPolygonIndex, int pPositionInPolygon, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); + + /** Set a texture UV index associated with a polygon vertex (i.e: an index to a control point). + * \param pPolygonIndex Index of polygon. + * The valid range for this parameter is 0 to FbxMesh::GetPolygonCount(). + * \param pPositionInPolygon Position of polygon vertex in indexed polygon. + * The valid range for this parameter is 0 to FbxMesh::GetPolygonSize(pPolygonIndex). + * \param pIndex The index of the texture UV we want to assign to the polygon vertex. + * \param pTypeIdentifier The texture channel the UVIndex refers to. + * \remark This function only works if the texture UV mapping type is set to \e eByPolygonVertex. */ + void SetTextureUVIndex(int pPolygonIndex, int pPositionInPolygon, int pIndex, FbxLayerElement::EType pTypeIdentifier); + //@} + + /** \name Utility functions */ + //@{ + /** Reset the mesh to default values. + * Frees and set to \c NULL all layers and clear the polygon and the control point array. */ + void Reset(); + + /** Generate vertex normals on the mesh. + * The normal computation takes into consideration, as much as possible, the smoothing groups. + * \param pOverwrite If true, re-generate normals data regardless of availability, otherwise left untouched if exist. + * \param pByCtrlPoint If true, the recomputed normals will be defined by control points instead of by polygon vertex. + * \param pCW True if the normals are calculated clockwise, false otherwise (counter-clockwise). + * \return \c true if successfully generated normals data, or if already available and pOverwrite is false. */ + bool GenerateNormals(bool pOverwrite=false, bool pByCtrlPoint = false, bool pCW=false); + + /** Compares the normals calculated by doing cross-products between the polygon vertex and by the ones + * stored in the normal array. + * \returns \c false if ALL of them are Clockwise. Returns \c true otherwise. */ + bool CheckIfVertexNormalsCCW(); + + //! Internal structure used to keep the duplicate vertex information. + class DuplicateVertex + { + public: + DuplicateVertex() : + lVertexPolyIndex(0), + lNewVertexIndex(0), + lNormal(0, 0, 0), + lUV(0, 0), + lEdgeIndex(0) + { + } + + int lVertexPolyIndex; //!< Index in mPolygonsVertex where the vertex is found. + int lNewVertexIndex; //!< The new index of the vertex. + FbxVector4 lNormal; //!< The normal associated with this duplicate control point. + FbxVector2 lUV; //!< The UV associated with this duplicate control point. + int lEdgeIndex; //!< The edge index. + }; + + //! Internal structure used to compute the normals on a mesh + class VertexNormalInfo + { + public: + VertexNormalInfo() : + mTotalNormal(0, 0, 0), + mNumNormal(0) + { + } + + FbxVector4 mTotalNormal; //!< Sum of all the normals found. + int mNumNormal; //!< Number of normals added. + }; + + /** Verify if the mesh has polygons that are defined on the same point more than once. + * \return true if the mesh has that kind of polygon, false otherwise. */ + bool CheckSamePointTwice() const; + + /** Remove bad polygons from a mesh. + * Degenerate polygons use a vertex more than once. Remove them from the mesh and + * from the layer element indices as needed. + * \return Number of polygons removed from the mesh, -1 if an error occurred. */ + int RemoveBadPolygons(); + //@} + + /** \name Point Splitting/Merging utility functions */ + //@{ + /** Split points. + * \param pTypeIdentifier Specify which UVs are processed. + * \return \c true if a split occurred, false otherwise. + * \remark This method replaces the BuildSplitList and SplitPointsForHardEdge. */ + bool SplitPoints(FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse); + + /** Insert the new indexes of the object that have to be merged. + * \param pMergeList The list that will contain the indexes of the objects to merge. + * \param pExport If set to \c true, include the duplicate indexes in the merge list. */ + bool BuildMergeList(FbxArray& pMergeList, bool pExport=false); + + /** Merge the points specified in the list. + * \param pMergeList List containing the information on the points that will be merged. */ + void MergePointsForPolygonVerteNormals(FbxArray &pMergeList); + //@} + + /** \name Edge management functions */ + //@{ + /** Automatically generate edge data for the mesh. Clears all previously stored edge information */ + void BuildMeshEdgeArray(); + + /** Query the number of edges defined on this mesh + * \return The number of edges defined for this mesh */ + int GetMeshEdgeCount() const; + + /** Get the index for the edge between the given vertices. + * Note that the result of this method is the same if pStartVertexIndex and pEndVertexIndex are swapped. + * \param pStartVertexIndex The starting point of the edge. + * \param pEndVertexIndex The ending point of the edge. + * \param pReversed flag will be set to true if the reverse edge is found, false otherwise. + * \param pExistedEdgeCount legal edge count in mEdgeArray + * \return -1 if no edge exists for the given pair of vertices. */ + int GetMeshEdgeIndex(int pStartVertexIndex, int pEndVertexIndex, bool& pReversed, int pExistedEdgeCount=-1); + + /** Use this method before calling GetMeshEdgeIndexForPolygon if making several calls to that method. + * Once done calling GetMeshEdgeIndexForPolygon, call EndGetMeshEdgeIndex. This will optimize access time. + * Do not modify the mesh between calls to BeginGetMeshEdgeIndex and EndGetMeshEdgeIndex. */ + void BeginGetMeshEdgeIndexForPolygon(); + + /** Use this method after calling GetMeshEdgeIndexForPolygon if making several calls to that method. + * This will optimize access time. + * Do not modify the mesh between calls to BeginGetMeshEdgeIndex and EndGetMeshEdgeIndex. */ + void EndGetMeshEdgeIndexForPolygon(); + + /** Get the index for the specific edge of pPolygon. + * \param pPolygon The polygon of interest. + * \param pPositionInPolygon The specific edge number in the polygon. + * \return -1 if the specific edge does not exist. + * \remark To optimize access time when making several calls to this method, enclose these calls + * between the BeginGetMeshEdgeIndexForPolygon() and EndGetMeshEdgeIndexForPolygon() calls. */ + int GetMeshEdgeIndexForPolygon(int pPolygon, int pPositionInPolygon); + + /** Get the vertices for the given edge. Note that the values returned are indices into the control point array. + * \param pEdgeIndex The edge to query. + * \param pStartVertexIndex The edge's starting point will be stored here. + * \param pEndVertexIndex The edge's starting point will be stored here. */ + void GetMeshEdgeVertices(int pEdgeIndex, int& pStartVertexIndex, int& pEndVertexIndex) const; + + /** Use this method before calling GetMeshEdgeVertices if making several calls to that method. + * Once done calling GetMeshEdgeVertices, call EndGetMeshEdgeVertices. This will optimize access time. + * Do not modify the mesh between calls to BeginGetMeshEdgeVertices and EndGetMeshEdgeVertices. */ + void BeginGetMeshEdgeVertices(); + + /** Use this method after calling GetMeshEdgeVertices if making several calls to that method. + * This will optimize access time. + * Do not modify the mesh between calls to BeginGetMeshEdgeVertices and EndGetMeshEdgeVertices. */ + void EndGetMeshEdgeVertices(); + + /** Presets the number edge data elements. + * \param pEdgeCount The number of edges to allocate. */ + void SetMeshEdgeCount(int pEdgeCount); + + /** Sets element in edge array to specific value. + * \param pEdgeIndex The edge index + * \param pValue The edge data */ + inline void SetMeshEdge(int pEdgeIndex, int pValue){ if( pEdgeIndex >= 0 && pEdgeIndex < mEdgeArray.GetCount() ) mEdgeArray[pEdgeIndex] = pValue; } + + /** Add an edge with the given start/end points. Note that the inserted edge + * may start at the given end point, and end at the given start point. + * \param pStartVertexIndex The starting point of the edge. + * \param pEndVertexIndex The ending point of the edge. + * \param pCheckForDuplicates Set to true to check if the mesh already contains an edge with these two points. + * Can be set to false to speed up this method, when the incoming edges are known to be consistent. + * \return Edge index of the new edge, or -1 on failure (edge/reverse edge already exists, no face using these 2 points consecutively ) */ + int AddMeshEdgeIndex(int pStartVertexIndex, int pEndVertexIndex, bool pCheckForDuplicates); + + /** Set the index for the edge with the given start/end points. Note that the edge + * may start at the given end point, and end at the given start point. + * \param pEdgeIndex The edge index of the edge. + * \param pStartVertexIndex The starting point of the edge. + * \param pEndVertexIndex The ending point of the edge. + * \param pCheckForDuplicates Set to true to check if the mesh already contains an edge with these two points. + * Can be set to false to speed up this method, when the incoming edges are known to be consistent. + * \param pExistedEdgeCount the valid edge count that we have created in edge array. This parameter only works when pCheckForDuplicates is true. + * The default value is -1 which meaning current edge array has been fully filled with valid edges, i.e., + * we will search the full edge array for the duplicated edge. + * \return Edge index of the edge, or -1 on failure (no face using these 2 points consecutively ), or -2 if edge/reverse edge already exists */ + int SetMeshEdgeIndex(int pEdgeIndex, int pStartVertexIndex, int pEndVertexIndex, bool pCheckForDuplicates, int pExistedEdgeCount=-1); + + /** Call this before calling AddMeshEdgeIndex or SetMeshEdgeIndex to increase performance. + * Once finished adding/setting edges EndAddMeshEdgeIndex should be called. */ + void BeginAddMeshEdgeIndex(); + + /** After calling AddMeshEdgeIndex or SetMeshEdgeIndex, EndAddMeshEdgeIndex should be called. */ + void EndAddMeshEdgeIndex(); + + /** Adds an edge for the specified polygon, and edge number within the polygon. See SetMeshEdgeIndex for notes the the parameters. + * \param pPolygonIndex The polygon of interest. + * \param pPositionInPolygon The edge within the polygon + * \return edge index or -1 if failed. */ + int AddMeshEdgeIndexForPolygon(int pPolygonIndex, int pPositionInPolygon); + + /** Sets the specified edge to the specified polygon's edge. + * Note that the position in the polygon ranges from 0 to GetPolygonSize(pPolygonindex) - 1 + * and represents the edge from GetPolygonVertex(pPolygonIndex, pPositionInPolygon) to + * GetPolygonVertex( pPolygonIndex, pPositionInPolygon + 1 ) or from pPositionInPolygon to + * 0 if pPositionInPolygon == GetPolygonSize(pPolygonindex) - 1 + * \param pEdgeIndex The edge. + * \param pPolygonIndex The polygon. + * \param pPositionInPolygon The specific edge number in the polygon. + * \return true on success, false on failure. ( edge for the poly and position already exists ) */ + bool SetMeshEdgeIndex(int pEdgeIndex, int pPolygonIndex, int pPositionInPolygon); + + /** Determines if the mesh is composed entirely of triangles. + * \return true if all polygons are triangles, false otherwise */ + bool IsTriangleMesh() const; + //@} + + /** Reserve memory in the polygon array to hold the specified number of polygons + * \param pCount The number of polygons this mesh will hold */ + inline void ReservePolygonCount(int pCount) { mPolygons.Reserve(pCount); } + + /** Reserve memory in the polygon vertex array to hold the specified number of polygon vertices. + * \param pCount The number of polygon vertices */ + inline void ReservePolygonVertexCount(int pCount) { mPolygonVertices.Reserve(pCount); } + + bool GetTextureUV(FbxLayerElementArrayTemplate** pLockableArray, FbxLayerElement::EType pTypeIdentifier=FbxLayerElement::eTextureDiffuse) const; + bool GetMaterialIndices(FbxLayerElementArrayTemplate** pLockableArray) const; + bool GetTextureIndices(FbxLayerElementArrayTemplate** pLockableArray, FbxLayerElement::EType pTextureType) const; + + /** \name Crease utility functions */ + //@{ + /** Get crease weight by edge index. + * \param pEdgeIndex Edge index. + * \return Crease weight value in the range [0.0 - 1.0]. */ + double GetEdgeCreaseInfo(int pEdgeIndex); + + /** Get crease edge array. + * \param pCreaseArray Edge crease data array. + * \return \c true if the pCreaseArray is filled successfully. */ + bool GetEdgeCreaseInfoArray(FbxLayerElementArrayTemplate** pCreaseArray); + + /** Get crease weight by vertex index. + * \param pVertexIndex Vertex index. + * \return Crease weight value in the range [0.0 - 1.0]. */ + double GetVertexCreaseInfo(int pVertexIndex); + + /** Get vertex crease array. + * \param pCreaseArray Edge vertex data array. + * \return \c true if the pCreaseArray is filled successfully. */ + bool GetVertexCreaseInfoArray(FbxLayerElementArrayTemplate** pCreaseArray); + + /** Set crease weight by edge index. + * \param pEdgeIndex Edge index. + * \param pWeight Crease weight value in the range [0.0 - 1.0]. + * \return \c true if successfully set the crease weight. */ + bool SetEdgeCreaseInfo(int pEdgeIndex, double pWeight); + + /** Set crease weight data array. + * \param pWeightArray Edge crease data. + * \return \c true if successfully set the crease weight. */ + bool SetEdgeCreaseInfoArray(FbxArray* pWeightArray); + + /** Set crease weight by vertex index. + * \param pVertexIndex Vertex index. + * \param pWeight Crease weight value in the range [0.0 - 1.0]. + * \return \c true if successfully set the crease weight. */ + bool SetVertexCreaseInfo(int pVertexIndex, double pWeight); + + /** Set crease weight data array. + * \param pWeightArray Vertex crease data. + * \return \c true if successfully set the crease weight. */ + bool SetVertexCreaseInfoArray(FbxArray* pWeightArray); + //@} + + /** \name Smooth mesh preview utility functions */ + //@{ + /** \enum ESmoothness Display Smoothness. + * It represents smooth mesh preview mode. This concept is not used in the FBX SDK but simply + * carried over so applications can access it and perform the appropriate tasks. */ + enum ESmoothness + { + eHull, //!< Default value, not active "smooth mesh preview". + eRough, //!< Not active "smooth mesh preview". + eMedium, //!< Both display cage and smooth mesh. + eFine //!< Display smooth mesh. + }; + + /** \enum EBoundaryRule the boundary rule. */ + enum EBoundaryRule + { + eLegacy, //!< Default value. + eCreaseAll, //!< Used for hard corner. + eCreaseEdge //!< Used for round corner. + }; + + /** Get display smoothness from mesh. + * \return Mesh smoothness. + * \remark It represents smooth mesh preview mode. */ + FbxMesh::ESmoothness GetMeshSmoothness() const; + + /** Set the mesh display smoothness mode. + * \param pSmoothness New smoothness factor. + * \remark It represents smooth mesh preview mode. */ + void SetMeshSmoothness(FbxMesh::ESmoothness pSmoothness); + + /** Get preview subdivision levels from mesh. + * \return Mesh preview subdivision levels. */ + int GetMeshPreviewDivisionLevels() const; + + /** Set mesh preview subdivision levels. + * \param pPreviewDivisionLevels Number of subdivisions levels. */ + void SetMeshPreviewDivisionLevels(int pPreviewDivisionLevels); + + /** Get render subdivision levels from mesh. + * \return Mesh render subdivision levels + * \remark Sometimes, render division level can be the same as preview level. */ + int GetMeshRenderDivisionLevels() const; + + /** Set mesh render subdivision levels. + * \param pRenderDivisionLevels Number of subdivision levels. */ + void SetMeshRenderDivisionLevels(int pRenderDivisionLevels); + + /** Query whether to display subdivisions isolines on mesh. + * \return The current state of the internal flag. */ + bool GetDisplaySubdivisions() const; + + /** Set the DisplySubdivisions state. + * \param pDisplySubdivisions New value for this flag. */ + void SetDisplaySubdivisions(bool pDisplySubdivisions); + + /** Get BoundaryRule from mesh. + * \return Current value of the internal state. */ + EBoundaryRule GetBoundaryRule() const; + + /** Set BoundaryRule for this mesh. + * \param pBoundaryRule New value for the internal state of this mesh. + * \remark BoundaryRule will affect the corners of smooth mesh. */ + void SetBoundaryRule(EBoundaryRule pBoundaryRule); + + /** Query whether to preserve borders when preview smooth mesh is enabled. + * \return The current state of the flag. */ + bool GetPreserveBorders() const; + + /** Set the state of the PreserveBorders flag. + * \param pPreserveBorders New value for this flag. + * \remark This flag value will affect smooth mesh preview results. */ + void SetPreserveBorders(bool pPreserveBorders); + + /** Query whether to preserve hard edges when preview smooth mesh. + * \return The current state of the flag. */ + bool GetPreserveHardEdges() const; + + /** Set the state of the PreserveHardEdges flag. + * \param pPreserveHardEdges New value for this flag. + * \remark This flag value will affect smooth mesh preview results. */ + void SetPreserveHardEdges(bool pPreserveHardEdges); + + /** Query whether to PropagateEdgeHardness when preview smooth mesh. + * \return The current state of the flag. */ + bool GetPropagateEdgeHardness() const; + + /** Set state of the PropagateEdgeHardness flag. + * \param pPropagateEdgeHardness New value for this flag. + * \remark This flag will affect smooth mesh preview results. */ + void SetPropagateEdgeHardness(bool pPropagateEdgeHardness); + //@} + + /** \name Geometry hole management utility functions */ + //@{ + /** Get hole flag by face index (an index to a polygon). + * \param pFaceIndex Index of the queried polygon. + * \return The hole flag for the given face. */ + bool GetPolyHoleInfo(int pFaceIndex); + + /** Get hole flags Array. + * \param pHoleArray Hole flags array. + * \return \c true if the pHoleArray is filled successfully. */ + bool GetPolyHoleInfoArray(FbxLayerElementArrayTemplate** pHoleArray); + + /** Sets the flag indicating whether the face represents a hole or not. + * \param pFaceIndex Index of the processed polygon. + * \param pIsHole If \c true, this face represent a hole. + * \return \c true if successfully set the hole info. */ + bool SetPolyHoleInfo(int pFaceIndex, bool pIsHole); + + /** Set hole flags array. + * \param pHoleArray Hole flag array. + * \return \c true if successfully set the hole flags. */ + bool SetPolyHoleInfoArray(FbxArray* pHoleArray); + //@} + + /** \name Tangents data management utility functions */ + //@{ + /** Generate tangents data for UVSet with specific name. + * Note that the UV winding order is stored in the W component of the tangent. + * W = 1.0 (right-handed) + * W = -1.0 (left-handed) + * In the case of a left-handed tangent, this function automatically flips the + * resulting binormal to correct for mirrored geometry. + * \param pUVSetName The UVSet name to generate tangents data with. The UVSet on the first layer is the the default UVSet to generate. + * \param pOverwrite If true, re-generate tangents data regardless of availability, otherwise left untouched if exist. + * \return \c true if successfully generated tangents data, or if already available and pOverwrite is false. */ + bool GenerateTangentsData(const char* pUVSetName=NULL, bool pOverwrite=false); + + /** Generate tangents data for UVSet in specific layer. + * Note that the UV winding order is stored in the W component of the tangent. + * W = 1.0 (right-handed) + * W = -1.0 (left-handed) + * In the case of a left-handed tangent, this function automatically flips the + * resulting binormal to correct for mirrored geometry. + * \param pUVSetLayerIndex The layer to generate tangents data with. + * \param pOverwrite If true, re-generate tangents data regardless of availability, otherwise left untouched if exist. + * \return \c true if successfully generated tangents data, or if already available and pOverwrite is false. */ + bool GenerateTangentsData(int pUVSetLayerIndex, bool pOverwrite=false); + + + /** Generate tangents data for all UVSets in all layers. + * Note that the UV winding order is stored in the W component of the tangent: + * W = 1.0 (right-handed) + * W = -1.0 (left-handed) + * In the case of a left-handed tangent, this function automatically flips the + * resulting binormal to correct for mirrored geometry. + * \param pOverwrite If true, re-generate tangents data regardless of availability, otherwise left untouched if exist. + * \return \c true if successfully generated tangents data, or if already available and pOverwrite is false. */ + bool GenerateTangentsDataForAllUVSets(bool pOverwrite=false); + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + virtual void Compact(); + + //Please use GetPolygonVertexIndex and GetPolygonVertices to access these arrays. + //DO NOT MODIFY them directly, otherwise unexpected behavior will occur. + //These members are public only for application data copy performance reasons. + struct PolygonDef{ int mIndex; int mSize; int mGroup; }; + + FbxArray mPolygons; + FbxArray mPolygonVertices; + FbxArray mEdgeArray; + + //These are only used in context of triangulation to backup original polygon layout necessary for handling mesh cache after triangulation + FbxArray* mOriginalPolygons; + FbxArray* mOriginalPolygonVertices; + int mOriginalControlPointsCount; + + //Internal structure used to keep the mapping information between edges and polygons. + struct ComponentMap + { + FbxArray mData; // The array to store data. + FbxArray mOffsets; // The array to store the offsets of the data in mData. + + int GetDataCount(int pIndex) { return mOffsets[pIndex + 1] - mOffsets[pIndex]; } + int GetData(int pIndex, int pSubIndex) { return mData[ mOffsets[pIndex] + pSubIndex ]; } + int GetComponentCount() { return mOffsets.GetCount() - 1; } + }; + void ComputeComponentMaps(ComponentMap& pEdgeToPolyMap, ComponentMap& pPolyToEdgeMap); + + // Internal structure used to keep the mapping information between the control points and the + // vertices referencing them + class ControlPointToVerticesMap + { + public: + ControlPointToVerticesMap(); + ~ControlPointToVerticesMap(); + bool Valid(); + + void Fill(FbxMesh* pMesh); + + int GetCount(); + bool Init(int pNbEntries); + void Clear(); + + FbxArray* GetVerticesArray(int pControlPoint); + FbxArray* operator[](int pControlPoint); + + private: + FbxArray< FbxArray* > mMap; + }; + void ComputeControlPointToVerticesMap(ControlPointToVerticesMap& pMap); + + // this function will compare the vertex normals with the corresponding ones in pMesh and + // make them similar (i.e: if pMesh(NVi) == pMesh(NVj) then make this(NVi) == this(NVj)) + bool ConformNormalsTo(const FbxMesh* pMesh); + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void Destruct(bool pRecursive); + virtual void ContentClear(); + + void InitTextureIndices(FbxLayerElementTexture* pLayerElementTexture, FbxLayerElement::EMappingMode pMappingMode); + void RemoveTextureIndex(FbxLayerElementTexture* pLayerElementTextures, int pPolygonIndex, int pOffset); + void RemoveUVIndex(FbxLayerElementUV* pLayerElementUV, int pPolygonIndex, int pOffset); + + bool GetBadPolyIndices(FbxArray& pArrayBadPolyIndices, bool pCheckOne) const; + + struct SplitEdgeData { int mOriginalEdge; bool mIsNew; }; + + ESmoothness mSmoothness; + int mPreviewDivisionLevels; + int mRenderDivisionLevels; + + bool mDisplaySubdivisions; + EBoundaryRule mBoundaryRule; + bool mPreserveBorders; + bool mPreserveHardEdges; + bool mPropagateEdgeHardness; + + struct PolygonIndexDef { int mPolygonIndex; int mSubPolygonIndex; }; + + struct V2PVMap + { + PolygonIndexDef* mV2PV; + int* mV2PVOffset; + int* mV2PVCount; + FbxArray* > mPVEdge; + bool mValid; + + //Used for fast search in GetMeshEdgeIndexForPolygon this array does not follow the same allocation as the above ones because + //it is not used in the normal BeginAddMeshEdgeIndex(). It is filled only by the call to BeginGetMeshEdgeIndexForPolygon(). + FbxArray mV2Edge; + } mV2PVMap; + + struct EdgeLookupDef { FbxArray mPVFlags; bool mValid; } mPVEndFlags; + + //Finds the polygon index for the given edge + int FindPolygonIndex(int pEdgeIndex); + static int PolygonIndexCompare(const void* p1, const void* p2); + void PolySetTexture(FbxLayer* pLayer, int pTextureIndex, FbxLayerElement::EType pTextureType); + template bool GetPolygonVertexLayerElementIndex(const FbxLayerElementTemplate* pLayerElement, int pPolyIndex, int pVertexIndex, int& pIndex) const; + template bool GetPolygonVertexLayerElementValue(const FbxLayerElementTemplate* pLayerElement, int pPolyIndex, int pVertexIndex, T& pValue, bool pAllowUnmapped) const; + + friend class FbxGeometryConverter; + +private: + bool GenerateTangentsData(FbxLayerElementUV* pUVSet, int pLayerIndex, bool pOverwrite=false); + void FillMeshEdgeTable(FbxArray& pTable, int* pValue, void (*FillFct)(FbxArray& pTable, int pIndex, int* pValue)); + void ComputeNormalsPerCtrlPoint(FbxArray& lNormalInfo, bool pCW=false); + void ComputeNormalsPerPolygonVertex(FbxArray& lNormalInfo, bool pCW=false); + void GenerateNormalsByCtrlPoint(bool pCW); + +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_MESH_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxnode.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxnode.h new file mode 100644 index 00000000..ec85656c --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxnode.h @@ -0,0 +1,2392 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxnode.h +#ifndef _FBXSDK_SCENE_GEOMETRY_NODE_H_ +#define _FBXSDK_SCENE_GEOMETRY_NODE_H_ + +#include + +#include +#include + +#include + +class FbxStatus; +class FbxNodeAttribute; +class FbxCachedEffect; +class FbxLODGroup; +class FbxNull; +class FbxMarker; +class FbxSkeleton; +class FbxGeometry; +class FbxMesh; +class FbxNurbs; +class FbxNurbsCurve; +class FbxLine; +class FbxNurbsSurface; +class FbxTrimNurbsSurface; +class FbxPatch; +class FbxCamera; +class FbxCameraStereo; +class FbxCameraSwitcher; +class FbxLight; +class FbxOpticalReference; +class FbxSubDiv; +class FbxCharacter; +class FbxSurfaceMaterial; +class FbxAnimStack; +class FbxAnimCurveFilterMatrixConverter; + +/** Represents an element in the scene graph. A scene graph is a tree of FbxNode + * objects. The tree management services are self contained in this class. + * + * \note The FBX SDK does not test the validity of the constructed scene graph. It + * is the responsibility of the caller to make sure that it does not generate cyclic + * graphs in a node hierarchy. + * + * Besides the tree management, this class defines all the properties required to describe + * the position of the object in the scene. This information include the basic Translation, + * Rotation and Scaling properties and the more advanced options for pivots, limits, and IK joints + * attributes such the stiffness and dampening. + * + * When it is first created, the FbxNode object is "empty" (i.e: it is an object without any + * graphical representation that only contains the position information). In this state, it can + * be used to represent parents in the node tree structure but not much more. The normal use of + * this type of objects is to add them an attribute that will specialize the node (see the + * "Node Attribute Management" section). + * + * The node attribute is an object in itself and is connected to the the FbxNode. This also + * means that the same node attribute can be shared among multiple nodes. FbxCamera, FbxLight, + * FbxMesh, etc... are all node attributes and they all derive from the base class FbxNodeAttribute. + * + */ +class FBXSDK_DLL FbxNode : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxNode, FbxObject); + +public: + /** + * \name Node Tree Management + */ + //@{ + /** Get the parent node. + * \return Pointer to parent node or \c NULL if the current node has no parent. + */ + FbxNode* GetParent(); + const FbxNode* GetParent() const; + + /** Add a child node and its underlying node tree. + * \param pNode Node we want to make child of \c this. + * \return \c true on success, \c false if \e pNode is \c NULL or the system is + * unable to make the connection. + * \remarks If \e pNode already has a parent, first it is removed from current parent and then + * added to this one. + */ + bool AddChild(FbxNode* pNode); + + /** Remove the child node. + * \param pNode The child node to be removed. + * \return The removed child node. + */ + FbxNode* RemoveChild(FbxNode* pNode); + + /** Get the number of children nodes. + * \param pRecursive If \c true the method will also count all the descendant children. + * \return Total number of children for this node. + */ + int GetChildCount(bool pRecursive = false) const; + + /** Get child by index. + * \param pIndex The child index. + * \return Child node or \c NULL if \e pIndex is out of range (i.e: < 0 or > GetChildCount()). + */ + FbxNode* GetChild(int pIndex); + + /** Get child by index. + * \param pIndex The child index. + * \return Child node or \c NULL if \e pIndex is out of range (i.e: < 0 or > GetChildCount()). + */ + const FbxNode* GetChild(int pIndex) const; + + /** Finds a child node by name. + * \param pName Name of the searched child node. + * \param pRecursive Flag to request recursive calls. + * \param pInitial If set to \c true, the search compares the initial name of + * the node (see the FbxObject class) + * \return Found child node or \c NULL if no child node with this name exists. + */ + FbxNode* FindChild(const char* pName, bool pRecursive=true, bool pInitial=false); + //@} + + /** + * \name Node Target Management + * The FbxNode class allows the client to set a "follow" target node. This target + * forces the node to re-align itself so it points to the target. By default, the node + * uses its X axis as the aiming constraint. A rotation offset can be added to change + * this behavior. While the default relative orientation to the target (the X axis) is + * sufficient for the FBX cameras (with a (0,0,0) rotation vector, they are aiming + * along the X axis), this rotation offset becomes particularly useful with the lights + * objects because their default orientation (when they have a 0,0,0 rotation vector) is to + * point along the -Y axis and they need to be adjusted with a 90-degree offset on the Z axis. + * + * The FbxNode class also permits the use of node to define an Up-vector. By default, + * the node's up vector points towards the Up node. If the Up node is not specified, + * then the node's Up vector points towards the Y axis. Here too, a rotation offset can be + * added to change the default behavior. + * + * Of course, these offsets can be applied to anything, not only the cameras and lights. + * + * \note Objects in the FBX SDK are always created in the right handed, Y-Up system and need + * to be adjusted for any other axis system by explicitly convert them (the class + * FbxAxisSystem can help in that process). + * + */ + //@{ + /** The target must be part of the same scene and it cannot be itself. + * \param pNode The target. + */ + void SetTarget(FbxNode* pNode); + + /** Get the target for this node. + * \returns \c NULL if target isn't set. + */ + FbxNode* GetTarget() const; + + /** Set rotation offset from default relative orientation to target. + * \param pVector The rotation offset. + */ + void SetPostTargetRotation(FbxVector4 pVector); + + /** Get rotation offset from default relative orientation to target. + * \return The rotation offset. + */ + FbxVector4 GetPostTargetRotation() const; + + /** The target up node must be part of the same scene and it cannot be itself. + * \param pNode The target. + */ + void SetTargetUp(FbxNode* pNode); + + /** Get the target up node. + * \return \c NULL if the target up model isn't set. + */ + FbxNode* GetTargetUp() const; + + /** Set up vector offset from default relative target up vector. + * \param pVector The rotation offset. + */ + void SetTargetUpVector(FbxVector4 pVector); + + /** Get up vector offset from default relative target up vector. + * \return The up vector offset. + */ + FbxVector4 GetTargetUpVector() const; + //@} + + /** + * \name Node Display Parameters + */ + //@{ + /** Set the node Visibility value from the boolean parameter. + * \param pIsVisible Node is visible in the scene if set to \c true. + * \remarks This method checks for the validity of the property before attempting to + * set its value. In fact, the exact same result can be achieved by the following code: + * \code + * if( Visibility.IsValid() ) + * { + * Visibility.Set(FbxDouble(pIsVisible)); + * } + * \endcode + * + * \see Visibility property. + */ + void SetVisibility(bool pIsVisible); + + /** Get the current value of the Visibility property. + * \return \c false if the Visibility property value is 0.0 and \c true for any other value. + * \remarks This method expects the Visibility property to exist and to be valid. If this + * condition is not met, the returned value will be \c false. + */ + bool GetVisibility() const; + + /** \enum EShadingMode Shading modes. + * These shading modes are not directly used by the FBX SDK but it is guaranteed that the information is + * carried to and from the FBX files. The typical context of using these modes is to affect the rendering of + * geometric objects (this is, of course, performed at the application level) and the possible definition + * for each mode is: + */ + enum EShadingMode + { + eHardShading, //!< Solid geometries rendered with smooth surfaces - using the system light. + eWireFrame, //!< Geometries displayed in wire frame. + eFlatShading, //!< Solid geometries rendered faceted - using the system light. + eLightShading, //!< Solid geometries rendered with the scene lights. + eTextureShading, //!< Solid geometries rendered with smooth textured surfaces - using system light. + eFullShading //!< Solid geometries rendered with smooth textured surfaces and scene lights. + }; + + /** Set the shading mode. + * \param pShadingMode The shading mode. + */ + void SetShadingMode(EShadingMode pShadingMode); + + /** Get the shading mode. + * \return The currently set shading mode. + */ + EShadingMode GetShadingMode() const; + //@} + + /** + * \name Node Attribute Management + */ + //@{ + /** Set the node attribute. + * \param pNodeAttribute Node attribute object + * \return Pointer to previous node attribute object. + * \c NULL if the node didn't have a node attribute or if + * the new node attribute is equal to the one currently set. + * \remarks A node attribute can be shared between nodes. + * \remarks If this node has more than one attribute (added via the AddAttribute() method), this call + * will destroy all, but the default node attribute. + */ + FbxNodeAttribute* SetNodeAttribute(FbxNodeAttribute* pNodeAttribute); + + /** Get the default node attribute. + * The default node attribute is the attribute that has been set by the call to SetNodeAttribute(). + * \return Pointer to the default node attribute or \c NULL if the node doesn't + * have a node attribute. + */ + FbxNodeAttribute* GetNodeAttribute(); + + /** Get the default node attribute. + * The default node attribute is the attribute that has been set by the call to SetNodeAttribute(...). + * \return Pointer to the default node attribute or \c NULL if the node doesn't + * have a node attribute. + */ + const FbxNodeAttribute* GetNodeAttribute() const; + + //! Get the number of node attribute(s) connected to this node. + int GetNodeAttributeCount() const; + + /** Get the index, in the list of connected node attributes, of the node attribute that is set + * to be the default one. + * \return Index of the default node attribute or \c -1 if there is no default node attribute set. + */ + int GetDefaultNodeAttributeIndex() const; + + /** Set index of the default node attribute. + * \param pIndex Identifies which of the connected node attributes is becoming the default one. + * This value represent the connection number of the node. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the operation succeeds or \c false if the passed index is invalid. + */ + bool SetDefaultNodeAttributeIndex(int pIndex, FbxStatus* pStatus = NULL); + + /** Get the connected node attribute by specifying its index in the connection list. + * \param pIndex The connection number of the node. + * \return Pointer to corresponding node attribute or \c NULL if the index is out of range. + */ + FbxNodeAttribute* GetNodeAttributeByIndex(int pIndex); + + /** Get the connected node attribute by specifying its index in the connection list. + * \param pIndex The connection number of the node. + * \return Pointer to corresponding node attribute or \c NULL if the index is out of range. + */ + const FbxNodeAttribute* GetNodeAttributeByIndex(int pIndex) const; + + /** Get the connection index of the specified node attribute. + * This method will do a linear search of all the connected node attributes (from the last to + * the first connection) until it finds \e pNodeAttribue. + * \param pNodeAttribute The pointer to the node attribute. + * \param pStatus The FbxStatus object to hold error codes. + * \return The connection number of the node attribute or \c -1 if pNodeAttribute is \c NULL + * or not connected to this node. + */ + int GetNodeAttributeIndex(FbxNodeAttribute* pNodeAttribute, FbxStatus* pStatus = NULL) const; + + /** Add the new node attribute to this node. + * If no other node attribute is already set as the default one, this new node attribute is + * automatically set as the default one. + * \param pNodeAttribute The pointer to a node attribute. + * \param pStatus The FbxStatus object to hold error codes. + * \return \c true if the operation succeeded or \c false if the operation failed. + * \remarks The failing conditions for this methods are: + * - The received object pointer is \c NULL. + * - The received object is already connected to this node. + * - An internal error prevented the connection to successfully complete. + */ + bool AddNodeAttribute(FbxNodeAttribute* pNodeAttribute, FbxStatus* pStatus = NULL); + + /** Remove the node attribute from the connection list of this node. + * \param pNodeAttribute The pointer to a node attribute. + * \return Pointer to the removed node attribute or \c NULL if the operation failed. + */ + FbxNodeAttribute* RemoveNodeAttribute(FbxNodeAttribute* pNodeAttribute); + + /** Remove the node attribute, specified by the connection index, from the connection + * list of this node. + * \param pIndex Index of the node attribute. + * \return Pointer to the removed node attribute or \c NULL if the operation failed. + * \remarks If the specified node attribute is also the default one, its predecessor in + * the connection list will become the new default node attribute. And if there + * are no more predecessors, the node DefaultNodeAttributeIndex is reset to -1. + */ + FbxNodeAttribute* RemoveNodeAttributeByIndex(int pIndex); + + /** Get the default node attribute casted to a FbxCachedEffect pointer. + * \return Pointer to the cached effect object. + * \remarks If the type cast failed because there is not default node attribute set or it cannot + * be successfully casted, this method will return \c NULL. + */ + FbxCachedEffect* GetCachedEffect(); + + /** Get the default node attribute casted to a FbxLODGroup pointer. + * \return Pointer to the lod group object. + * \remarks If the type cast failed because there is not default node attribute set or it cannot + * be successfully casted, this method will return \c NULL. + */ + FbxLODGroup* GetLodGroup(); + + /** Get the default node attribute casted to a FbxNull pointer. + * \return Pointer to the null object. + * \remarks If the type cast failed because there is not default node attribute set or it cannot + * be successfully casted, this method will return \c NULL. + */ + FbxNull* GetNull(); + + /** Get the node attribute casted to a FbxMarker pointer. + * \return Pointer to the marker object. + * \remarks If the type cast failed because there is not default node attribute set or it cannot + * be successfully casted, this method will return \c NULL. + */ + FbxMarker* GetMarker(); + + /** Get the node attribute casted to a FbxSkeleton pointer. + * \return Pointer to the skeleton object. + * \remarks If the type cast failed because there is not default node attribute set or it cannot + * be successfully casted, this method will return \c NULL. + */ + FbxSkeleton* GetSkeleton(); + + /** Get the node attribute casted to a FbxGeometry pointer. + * \return Pointer to the geometry object. + * \remarks If the type cast failed because there is not default node attribute set or it cannot + * be successfully casted, this method will return \c NULL. + * \remarks For this method to succeed, the node attribute's GetAttributeType() must returns one of the + * following: + * - FbxNodeAttribute::eMesh + * - FbxNodeAttribute::eNurbs + * - FbxNodeAttribute::eNurbsSurface + * - FbxNodeAttribute::ePatch + * - FbxNodeAttribute::eNurbsCurve + * - FbxNodeAttribute::eBoundary + * - FbxNodeAttribute::eTrimNurbsSurface + * - FbxNodeAttribute::eSubDiv + * - FbxNodeAttribute::eLine + */ + FbxGeometry* GetGeometry(); + + /** Get the node attribute casted to a FbxMesh pointer. + * \return Pointer to the mesh object. + * \remarks This method will try to process the default node attribute first. If it cannot + * find it, it will scan the list of connected node attributes and get the first + * object that is a FbxNodeAttribute::eMesh. + * \remarks If the above search failed to get a valid pointer or it cannot + * be successfully casted, this method will return \c NULL. + */ + FbxMesh* GetMesh(); + + /** Get the node attribute casted to a FbxNurbs pointer. + * \return Pointer to the nurb object. + * \remarks This method will try to process the default node attribute first. If it cannot + * find it, it will scan the list of connected node attributes and get the first + * object that is a FbxNodeAttribute::eNurbs. + * \remarks If the above search failed to get a valid pointer or it cannot + * be successfully casted, this method will return \c NULL. + */ + FbxNurbs* GetNurbs(); + + /** Get the node attribute casted to a FbxNurbsSurface pointer. + * \return Pointer to the nurbs surface object. + * \remarks This method will try to process the default node attribute first. If it cannot + * find it, it will scan the list of connected node attributes and get the first + * object that is a FbxNodeAttribute::eNurbsSurface. + * \remarks If the above search failed to get a valid pointer or it cannot + * be successfully casted, this method will return \c NULL. + */ + FbxNurbsSurface* GetNurbsSurface(); + + /** Get the node attribute casted to a FbxNurbsCurve pointer. + * \return Pointer to the nurbs curve object. + * \remarks This method will try to process the default node attribute first. If it cannot + * find it, it will scan the list of connected node attributes and get the first + * object that is a FbxNodeAttribute::eNurbsCurve. + * \remarks If the above search failed to get a valid pointer or it cannot + * be successfully casted, this method will return \c NULL. + */ + FbxNurbsCurve* GetNurbsCurve(); + + /** Get the node attribute casted to a FbxLine pointer. + * \return Pointer to the line object. + * \remarks This method will try to process the default node attribute first. If it cannot + * find it, it will scan the list of connected node attributes and get the first + * object that is a FbxNodeAttribute::eLine. + * \remarks If the above search failed to get a valid pointer or it cannot + * be successfully casted, this method will return \c NULL. + */ + FbxLine* GetLine(); + + /** Get the node attribute casted to a FbxTrimNurbsSurface pointer. + * \return Pointer to the trim nurbs surface object. + * \remarks This method will try to process the default node attribute first. If it cannot + * find it, it will scan the list of connected node attributes and get the first + * object that is a FbxNodeAttribute::eTrimNurbsSurface. + * \remarks If the above search failed to get a valid pointer or it cannot + * be successfully casted, this method will return \c NULL. + */ + FbxTrimNurbsSurface* GetTrimNurbsSurface(); + + /** Get the node attribute casted to a FbxSubDiv pointer. + * \return Pointer to the subdivision surface object. + * \remarks This method will try to process the default node attribute first. If it cannot + * find it, it will scan the list of connected node attributes and get the first + * object that is a FbxNodeAttribute::eSubDiv. + * \remarks If the above search failed to get a valid pointer or it cannot + * be successfully casted, this method will return \c NULL. + */ + FbxSubDiv* GetSubdiv(); + + /** Get the node attribute casted to a FbxPatch pointer. + * \return Pointer to the patch object. + * \remarks This method will try to process the default node attribute first. If it cannot + * find it, it will scan the list of connected node attributes and get the first + * object that is a FbxNodeAttribute::ePatch. + * \remarks If the above search failed to get a valid pointer or it cannot + * be successfully casted, this method will return \c NULL. + */ + FbxPatch* GetPatch(); + + /** Get the node attribute casted to a FbxCamera pointer. + * \return Pointer to the camera object. + * \remarks If the type cast failed because there is not default node attribute set or it cannot + * be successfully casted, this method will return \c NULL. + */ + FbxCamera* GetCamera(); + const FbxCamera* GetCamera() const; + + /** Get the node attribute casted to a FbxCameraStereo pointer. + * \return Pointer to the stereo camera object. + * \remarks If the type cast failed because there is not default node attribute set or it cannot + * be successfully casted, this method will return \c NULL. + */ + FbxCameraStereo* GetCameraStereo(); + + /** Get the node attribute casted to a FbxCameraSwitcher pointer. + * \return Pointer to the camera switcher object. + * \remarks If the type cast failed because there is not default node attribute set or it cannot + * be successfully casted, this method will return \c NULL. + */ + FbxCameraSwitcher* GetCameraSwitcher(); + + /** Get the node attribute casted to a FbxLight pointer. + * \return Pointer to the light object. + * \remarks If the type cast failed because there is not default node attribute set or it cannot + * be successfully casted, this method will return \c NULL. + */ + FbxLight* GetLight(); + const FbxLight* GetLight() const; + + /** Get the node attribute casted to a FbxOpticalReference pointer. + * \return Pointer to the optical reference object. + * \remarks If the type cast failed because there is not default node attribute set or it cannot + * be successfully casted, this method will return \c NULL. + */ + FbxOpticalReference* GetOpticalReference(); + //@} + + /** + * \name Transformation propagation + * This set of functions provides direct access to the transformation propagations settings + * of the FbxNode. These settings determine how transformations must be applied when + * evaluating a node's transformation matrix. The possible values are: + * - eInheritRrSs : Scaling of parent is applied in the child world after the local child rotation. + * - eInheritRSrs : Scaling of parent is applied in the parent world. + * - eInheritRrs : Scaling of parent does not affect the scaling of children. + */ + //@{ + /** Sets how child transforms are inherited from parent transforms. + * \param pInheritType One of the following values eInheritRrSs, eInheritRSrs or eInheritRrs + */ + void SetTransformationInheritType(FbxTransform::EInheritType pInheritType); + + //! Get transformation inherit type. + void GetTransformationInheritType(FbxTransform::EInheritType& pInheritType) const; + //@} + + /** + * \name Pivot Management + * Pivots are used to specify translation, rotation and scaling centers in coordinates + * relative to a node's origin. + * A node has two pivot contexts defined by the EPivotSet enumeration. The node's animation + * data can be converted from one pivot context to the other. Each context can be set to be + * either active or passive (reference). By default the two pivot contexts are passive. They + * need to be active to be processed during the evaluation of the node final transformation + * matrix. In its passive state, a pivot context can still be accessed to retrieve its content + * for any other required purpose. Each pivot context stores values (as FbxVector4) for: + * \code + * - Rotation offset (Roff) + * - Rotation pivot (Rp) + * - Pre-rotation (Rpre) + * - Post-rotation (Rpost) + * - Scaling offset (Soff) + * - Scaling pivot (Sp) + * - Geometric translation (Gt) + * - Geometric rotation (Gr) + * - Geometric scaling (Gs) + * + * These values combine in the matrix form to compute the World transform of the node + * using the formula: + * + * World = ParentWorld * T * Roff * Rp * Rpre * R * Rpost * Rp-1 * Soff * Sp * S * Sp-1 + * \endcode + * + * The geometric transformation (Gt * Gr * Gs) is applied only to the node attribute and after + * the node transformations. This transformation is not inherited across the node hierarchy. + * + * \note Please refer to the FBX SDK programmers guide for more details. + * + * The application of the pivots is performed by calling the method ConvertPivotAnimation(). Typically, + * you set-up the eDestinationPivot context to match what your system can directly support and leave at (0,0,0) the + * attributes that are not supported by your system. When the values of a specific attribute in the + * two contexts (source and destination) are identical, the system considers that no adjustment is + * required because the attribute is directly supported in the destination world. + * + * Below is an example of code that shows how the pivot information could be setup before calling ConvertPivotAnimation(). + * \code + * FbxVector4 lZero(0,0,0); + * FbxVector4 lOne(1,1,1); + * pNode->SetPivotState(FbxNode::eSourcePivot, FbxNode::ePivotActive); + * pNode->SetPivotState(FbxNode::eDestinationPivot, FbxNode::ePivotActive); + * + * EFbxRotationOrder lRotationOrder; + * pNode->GetRotationOrder(FbxNode::eSourcePivot , lRotationOrder); + * pNode->SetRotationOrder(FbxNode::eDestinationPivot , lRotationOrder); + * + * //For cameras and lights (without targets) let's compensate the postrotation. + * if( pNode->GetCamera() || pNode->GetLight() ) + * { + * if( !pNode->GetTarget() ) + * { + * FbxVector4 lRV(90, 0, 0); + * if( pNode->GetCamera() ) + * lRV.Set(0, 90, 0); + * + * FbxVector4 prV = pNode->GetPostRotation(FbxNode::eSourcePivot); + * FbxAMatrix lSourceR; + * FbxAMatrix lR(lZero, lRV, lOne); + * FbxVector4 res = prV; + * + * // Rotation order don't affect post rotation, so just use the default XYZ order + * FbxRotationOrder rOrder; + * rOrder.V2M(lSourceR, res); + * + * lR = lSourceR * lR; + * rOrder.M2V(res, lR); + * prV = res; + * pNode->SetPostRotation(FbxNode::eSourcePivot, prV); + * pNode->SetRotationActive(true); + * } + * + * // Point light do not need to be adjusted (since they radiate in all the directions). + * if( pNode->GetLight() && pNode->GetLight()->LightType.Get() == FbxLight::ePoint ) + * { + * pNode->SetPostRotation(FbxNode::eSourcePivot, FbxVector4(0,0,0,0)); + * } + * } + * // apply Pre rotations only on bones / end of chains + * if( pNode->GetNodeAttribute() && pNode->GetNodeAttribute()->GetAttributeType() == FbxNodeAttribute::eSkeleton + * || (pNode->GetMarker() && pNode->GetMarker()->GetType() == FbxMarker::eEffectorFK) + * || (pNode->GetMarker() && pNode->GetMarker()->GetType() == FbxMarker::eEffectorIK) ) + * { + * if( pNode->GetRotationActive() ) + * { + * pNode->SetPreRotation(FbxNode::eDestinationPivot, pNode->GetPreRotation(FbxNode::eSourcePivot)); + * } + * + * // No pivots on bones + * pNode->SetRotationPivot(FbxNode::eDestinationPivot, lZero); + * pNode->SetScalingPivot(FbxNode::eDestinationPivot, lZero); + * pNode->SetRotationOffset(FbxNode::eDestinationPivot,lZero); + * pNode->SetScalingOffset(FbxNode::eDestinationPivot, lZero); + * } + * else + * { + * // any other type: no pre-rotation support but... + * pNode->SetPreRotation(FbxNode::eDestinationPivot, lZero); + * + * // support for rotation and scaling pivots. + * pNode->SetRotationPivot(FbxNode::eDestinationPivot, pNode->GetRotationPivot(FbxNode::eSourcePivot)); + * pNode->SetScalingPivot(FbxNode::eDestinationPivot, pNode->GetScalingPivot(FbxNode::eSourcePivot)); + * // Rotation and scaling offset are supported + * pNode->SetRotationOffset(FbxNode::eDestinationPivot, pNode->GetRotationOffset(FbxNode::eSourcePivot)); + * pNode->SetScalingOffset(FbxNode::eDestinationPivot, pNode->GetScalingOffset(FbxNode::eSourcePivot)); + * // + * // If we don't "support" scaling pivots, we can simply do: + * // pNode->SetRotationPivot(FbxNode::eDestinationPivot, lZero); + * // pNode->SetScalingPivot(FbxNode::eDestinationPivot, lZero); + * } + * \endcode + * + */ + //@{ + /** \enum EPivotSet Pivot context identifier. + */ + enum EPivotSet + { + eSourcePivot, //!< The source pivot context. + eDestinationPivot //!< The destination pivot context. + }; + + /** \enum EPivotState Pivot context state. + */ + enum EPivotState + { + ePivotActive, //!< The pivot context with this state is affecting the node's transform computation. + ePivotReference //!< The pivot context with this state is not used during the node transform computation but can be accessed for reference purposes. + }; + + /** Change the state of the pivot context. + * \param pPivotSet Specify which pivot context is manipulated. + * \param pPivotState The new state of the pivot context. + */ + void SetPivotState(EPivotSet pPivotSet, EPivotState pPivotState); + + /** Get the pivot context state. + * The returned value tells if this pivot context is used in the + * evaluation of the node transform or not. + * \param pPivotSet Specify which pivot context is queried. + * \param pPivotState The current state of the pivot set. + */ + void GetPivotState(EPivotSet pPivotSet, EPivotState& pPivotState) const; + + /** Set rotation space + * Determine the rotation space (Euler or Spheric) and the rotation order. + * \param pPivotSet Specify which pivot context is manipulated. + * \param pRotationOrder The new value for the pivot rotation order. + */ + void SetRotationOrder(EPivotSet pPivotSet, EFbxRotationOrder pRotationOrder); + + /** Get rotation order + * \param pPivotSet Specify which pivot context is queried. + * \param pRotationOrder The current value of the pivot rotation order. + */ + void GetRotationOrder(EPivotSet pPivotSet, EFbxRotationOrder& pRotationOrder) const; + + /** Set rotation space for limit only. + * \param pPivotSet Specify which pivot context is manipulated. + * \param pUseForLimitOnly When set to \c true, the current rotation space + * (set with SetRotationOrder) define the rotation space for + * the limit only; leaving the rotation animation in + * Euler XYZ space. When set to \c false, the current rotation + * space defines the rotation space for both the limits and the + * rotation animation data. + */ + void SetUseRotationSpaceForLimitOnly(EPivotSet pPivotSet, bool pUseForLimitOnly); + + /** Get rotation space for limit only. + * \param pPivotSet Specify which pivot context is queried. + * \return The current rotation space limit flag value. + */ + bool GetUseRotationSpaceForLimitOnly(EPivotSet pPivotSet) const; + + /** Set the RotationActive state. + * \param pVal The new state of the property. + * \remarks When this flag is set to false, the RotationOrder, the Pre/Post rotation values + * and the rotation limits should be ignored. + */ + void SetRotationActive(bool pVal); + + /** Get the RotationActive state. + * \return The value of the RotationActive flag. + */ + bool GetRotationActive() const; + + /** Specify which Quaternion interpolation mode is used on the pivot context. + * \param pPivotSet Specify which pivot context is manipulated. + * \param pQuatIterp The new value. + * \remarks When the \e pPivotSet is eSourcePivot, this method also updates the value of the + * QuaternionInterpolate property. + */ + void SetQuaternionInterpolation(EPivotSet pPivotSet, EFbxQuatInterpMode pQuatIterp); + + /** Get the Quaternion interpolation mode of the pivot context. + * \param pPivotSet Specify which pivot context is queried. + * \return The current mode set on the pivot context. + */ + EFbxQuatInterpMode GetQuaternionInterpolation(EPivotSet pPivotSet) const; + + /** Set the rotation stiffness. + * The stiffness attribute is used by IK solvers to generate a resistance + * to a joint motion. The higher the stiffness the less it will rotate. + * Stiffness works in a relative sense: it determines the willingness of + * this joint to rotate with respect to the other joint in the IK chain. + * \param pRotationStiffness The rotation stiffness values are limited to + * the range [0, 100]. + */ + void SetRotationStiffness(FbxVector4 pRotationStiffness); + + /** Get the rotation stiffness + * \return The currently set rotation stiffness values. + */ + FbxVector4 GetRotationStiffness() const; + + /** Set the minimum damp range angles. + * This attributes apply resistance to a joint rotation as it approaches the + * lower boundary of its rotation limits. This functionality allows joint + * motion to slow down smoothly until the joint reaches its rotation limits + * instead of stopping abruptly. The MinDampRange specifies when the + * deceleration should start. + * \param pMinDampRange Angle, in degrees, where deceleration should start + */ + void SetMinDampRange(FbxVector4 pMinDampRange); + + /** Get the minimum damp range angles + * \return The currently set minimum damp range angles. + */ + FbxVector4 GetMinDampRange() const; + + /** Set the maximum damp range angles. + * This attributes apply resistance to a joint rotation as it approaches the + * upper boundary of its rotation limits. This functionality allows joint + * motion to slow down smoothly until the joint reaches its rotation limits + * instead of stopping abruptly. The MaxDampRange specifies when the + * deceleration should start. + * \param pMaxDampRange Angle, in degrees, where deceleration should start + */ + void SetMaxDampRange(FbxVector4 pMaxDampRange); + + /** Get the maximum damp range angles + * \return The currently set maximum damp range angles. + */ + FbxVector4 GetMaxDampRange() const; + + /** Set the minimum damp strength. + * This attributes apply resistance to a joint rotation as it approaches the + * lower boundary of its rotation limits. This functionality allows joint + * motion to slow down smoothly until the joint reaches its rotation limits + * instead of stopping abruptly. The MinDampStrength defines the + * rate of deceleration. + * \param pMinDampStrength Values are limited to the range [0, 100]. + */ + void SetMinDampStrength(FbxVector4 pMinDampStrength); + + /** Get the minimum damp strength + * \return The currently set minimum damp strength values. + */ + FbxVector4 GetMinDampStrength() const; + + /** Set the maximum damp strength. + * This attributes apply resistance to a joint rotation as it approaches the + * upper boundary of its rotation limits. This functionality allows joint + * motion to slow down smoothly until the joint reaches its rotation limits + * instead of stopping abruptly. The MaxDampStrength defines the + * rate of deceleration. + * \param pMaxDampStrength Values are limited to the range [0, 100]. + */ + void SetMaxDampStrength(FbxVector4 pMaxDampStrength); + + /** Get the maximum damp strength + * \return The currently set maximum damp strength values. + */ + FbxVector4 GetMaxDampStrength() const; + + /** Set the preferred angle. + * The preferredAngle attribute defines the initial joint configuration used + * by a single chain IK solver to calculate the inverse kinematic solution. + * \param pPreferedAngle Angle in degrees + */ + void SetPreferedAngle(FbxVector4 pPreferedAngle); + + /** Get the preferred angle + * \return The currently set preferred angle. + */ + FbxVector4 GetPreferedAngle() const; + + /** Set a translation offset for the rotation pivot. + * The translation offset is in coordinates relative to the node's origin. + * \param pPivotSet Specify which pivot set to modify. + * \param pVector The X,Y and Z translation values (the 4th component of the FbxVector4 is ignored). + */ + void SetRotationOffset(EPivotSet pPivotSet, FbxVector4 pVector); + + /** Get the translation offset for the rotation pivot. + * The translation offset is in coordinates relative to the node's origin. + * \param pPivotSet Specify which pivot set to to query the value. + * \return The X, Y and Z translation offset values (the 4th component of the FbxVector4 is always 1). + */ + const FbxVector4& GetRotationOffset(EPivotSet pPivotSet) const; + + /** Set rotation pivot. + * The rotation pivot is the center of rotation in coordinates relative to + * the node's origin. + * \param pPivotSet Specify which pivot set to modify. + * \param pVector The new position of the rotation pivot (the 4th component of the FbxVector4 is ignored). + */ + void SetRotationPivot(EPivotSet pPivotSet, FbxVector4 pVector); + + /** Get rotation pivot. + * The rotation pivot is the center of rotation in coordinates relative to + * the node's origin. + * \param pPivotSet Specify which pivot set to query. + * \return The current position of the rotation pivot (the 4th component of the FbxVector4 is always 1). + */ + const FbxVector4& GetRotationPivot(EPivotSet pPivotSet) const; + + /** Set pre-rotation in Euler angles. + * The pre-rotation is the rotation applied to the node before + * rotation animation data. + * \param pPivotSet Specify which pivot set to modify. + * \param pVector The X,Y,Z rotation values to set (the 4th component of the FbxVector4 is ignored). + */ + void SetPreRotation(EPivotSet pPivotSet, FbxVector4 pVector); + + /** Get pre-rotation in Euler angles. + * The pre-rotation is the rotation applied to the node before + * rotation animation data. + * \param pPivotSet Specify which pivot set to query. + * \return The X,Y and Z rotation values (the 4th component of the FbxVector4 is always 1). + */ + const FbxVector4& GetPreRotation(EPivotSet pPivotSet) const; + + /** Set post-rotation in Euler angles. + * The post-rotation is the rotation applied to the node after the + * rotation animation data. + * \param pPivotSet Specify which pivot set to modify. + * \param pVector The X,Y,Z rotation values to set (the 4th component of the FbxVector4 is ignored). + */ + void SetPostRotation(EPivotSet pPivotSet, FbxVector4 pVector); + + /** Get post-rotation in Euler angles. + * The post-rotation is the rotation applied to the node after the + * rotation animation data. + * \param pPivotSet Specify which pivot set to query. + * \return The X,Y and Z rotation values (the 4th component of the FbxVector4 is always 1). + */ + const FbxVector4& GetPostRotation(EPivotSet pPivotSet) const; + + /** Set a translation offset for the scaling pivot. + * The translation offset is in coordinates relative to the node's origin. + * \param pPivotSet Specify which pivot set to modify. + * \param pVector The X,Y and Z translation values (the 4th component of the FbxVector4 is ignored). + */ + void SetScalingOffset(EPivotSet pPivotSet, FbxVector4 pVector); + + /** Get the translation offset for the scaling pivot. + * The translation offset is in coordinates relative to the node's origin. + * \param pPivotSet Specify which pivot set to query the value. + * \return The X, Y and Z translation offset values (the 4th component of the FbxVector4 is always 1). + */ + const FbxVector4& GetScalingOffset(EPivotSet pPivotSet) const; + + /** Set scaling pivot. + * The scaling pivot is the center of scaling in coordinates relative to + * the node's origin. + * \param pPivotSet Specify which pivot set to modify. + * \param pVector The new position of the scaling pivot (the 4th component of the FbxVector4 is ignored). + */ + void SetScalingPivot(EPivotSet pPivotSet, FbxVector4 pVector); + + /** Get scaling pivot. + * The scaling pivot is the center of scaling in coordinates relative to + * the node's origin. + * \param pPivotSet Specify which pivot set to query. + * \return The current position of the rotation pivot (the 4th component of the FbxVector4 is always 1). + */ + const FbxVector4& GetScalingPivot(EPivotSet pPivotSet) const; + + /** Set geometric translation + * The geometric translation is a local translation that is applied + * to a node attribute only. This translation is applied to the node attribute + * after the node transformations. This translation is not inherited across the + * node hierarchy. + * \param pPivotSet Specify which pivot set to modify. + * \param pVector The X, Y, and Z translation values (the 4th component of the FbxVector4 is ignored). + */ + void SetGeometricTranslation(EPivotSet pPivotSet, FbxVector4 pVector); + + /** Get geometric translation + * \param pPivotSet Specify which pivot set to query. + * \return The current geometric translation (the 4th component of the FbxVector4 is always 1). + */ + FbxVector4 GetGeometricTranslation(EPivotSet pPivotSet) const; + + /** Set geometric rotation + * The geometric rotation is a local rotation that is applied + * to a node attribute only. This rotation is applied to the node attribute + * after the node transformations. This rotation is not inherited across the + * node hierarchy. + * \param pPivotSet Specify which pivot set to modify. + * \param pVector The X,Y and Z rotation values (the 4th component of the FbxVector4 is ignored). + */ + void SetGeometricRotation(EPivotSet pPivotSet, FbxVector4 pVector); + + /** Get geometric rotation + * \param pPivotSet Specify which pivot set to query. + * \return The current geometric rotation (the 4th component of the FbxVector4 is always 1). + */ + FbxVector4 GetGeometricRotation(EPivotSet pPivotSet) const; + + /** Set geometric scaling + * The geometric scaling is a local scaling that is applied + * to a node attribute only. This scaling is applied to the node attribute + * after the node transformations. This scaling is not inherited across the + * node hierarchy. + * \param pPivotSet Specify which pivot set to modify. + * \param pVector The X,Y and Z scale values (the 4th component of the FbxVector4 is ignored). + */ + void SetGeometricScaling(EPivotSet pPivotSet, FbxVector4 pVector); + + /** Get geometric scaling + * \param pPivotSet Specify which pivot set to query. + * \return The current geometric scaling (the 4th component of the FbxVector4 is always 1). + */ + FbxVector4 GetGeometricScaling(EPivotSet pPivotSet) const; + + /** Reset a pivot set to the default pivot context. + * If the node has a geometry, reset the geometry's pivot to the identity matrix. + * \param pPivotSet Pivot set to reset. + * \remarks The default pivot context is a context with all the vector attributes + * set to (0,0,0) except the GeometricScaling attribute that is reset to (1,1,1). + */ + void ResetPivotSet( FbxNode::EPivotSet pPivotSet ); + + /** This version is an improved version of the ConvertPivotAnimation(). It fully supports all the + * attributes defined in the pivot sets and can process animation data defined on different animation + * stack. + * \param pAnimStack The animation stack on which the conversion will take place. If equals \c NULL, convert the animation on all the animation stacks. + * \param pConversionTarget If set to EPivotSet::eDestinationPivot, + * convert animation data from the EPivotSet::eSourcePivot pivot context + * to the EPivotSet::eDestinationPivot pivot context. Otherwise, the + * conversion is computed the other way around. + * \param pFrameRate Resampling frame rate in frames per second. + * \param pKeyReduce Apply or skip key reducing filter. + * \remarks Due to the intrinsic properties of the mathematical operations performed, + * sometimes, it is necessary to resample animation curves to maintain the accurate + * conversion. When this resampling is required, the method will use the \e pFrameRate + * value to specify the number of samples. To avoid a huge number of keys in the animation + * curves, a constant key reducer filter (FbxKFCurveFilterConstantKeyReducer) is + * automatically applied to all the affected curves to remove as much consecutive keys + * that have the same value. This filter is private and its settings cannot be changed. + * It is possible that, after the filtering pass, the animations curves do not contain keys + * anymore. This is a normal result and does not affect the overall results. + * \note Although it is possible to call this method several times with a different + * AnimStack name, users must be aware that some pivot computation can irreversibly + * modify the geometric nodes with a cumulative effect of the \e GeometricTranslation, + * \e GeometricRotation and \e GeometricScaling which will produce undesirable results. It is recommended + * to call ConvertPivotAnimationRecursive with \p pAnimStackName = NULL and let the method convert + * the animation on all the Anim stacks at once. + * In the case when there are no geometric nodes in the scene tree, specifying the animation stack + * is safe and somewhat faster. + * If any transform limits are active, they are applied during the conversion and disabled. + */ + void ConvertPivotAnimationRecursive(FbxAnimStack* pAnimStack, EPivotSet pConversionTarget, double pFrameRate, bool pKeyReduce=true); + + /** Reset all the pivot sets to the default pivot context and convert the animation. + * \param pFrameRate Resampling frame rate in frames per second. + * \param pKeyReduce Apply or skip key reducing filter. + * \param pToNodeCenter: Reset pivots to node center if \c true, or retain pivot places if \c false. + * \param pForceResetLimits If \c true, this flag will reset all the Translation, Rotation and Scaling + * limits and clears the enabled flags. + * \remarks The resulting animation will be visually equivalent and all the pivots will be cleared. + * The conversion is performed on all animation stacks. + * \remarks Will recursively convert the animation of all the children nodes. + * \remarks The \e pForceResetLimits flag has a destructive behavior and should be used only in very + * limited cases where the values of the limits are not required after the call to this method. + * \remarks Currently, this function just works under RSrs inherit type if pToNodeCenter is set to \c false. + */ + void ResetPivotSetAndConvertAnimation(double pFrameRate=30.0, bool pKeyReduce=false, bool pToNodeCenter=true, bool pForceResetLimits=false); + + /** Set rotation pivot as node center recursively + * \param pParentGeometricOffset Offset vector to be applied. + */ + void SetRotationPivotAsCenterRecursive(FbxVector4 pParentGeometricOffset=FbxVector4()); + //@} + + /** + * \name Node Evaluation Functions + */ + //@{ + /** Retrieve the proper animation evaluator to use for this node. + * \return If the object has no scene, returns the default evaluator, otherwise the object's scene evaluator. */ + FbxAnimEvaluator* GetAnimationEvaluator() const; + + /** Returns this node's global transformation matrix at the specified time. The node's translation, rotation and scaling limits are taken into consideration. + * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. + * \param pPivotSet The pivot set to take into account + * \param pApplyTarget Applies the necessary transform to align into the target node + * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. + * \return The resulting global transform of the specified node at the specified time. + * \remarks This function is the equivalent of calling Scene->GetEvaluator()->GetNodeGlobalTransform(). + */ + FbxAMatrix& EvaluateGlobalTransform(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); + + /** Returns this node's local transformation matrix at the specified time. The node's translation, rotation and scaling limits are taken into consideration. + * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. + * \param pPivotSet The pivot set to take into account + * \param pApplyTarget Applies the necessary transform to align into the target node + * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. + * \return The resulting local transform of the specified node for the specified time. + * \remarks The local transform matrix is calculated in this way: ParentGlobal.Inverse * Global, all transforms such as pre/post rotation are taken into consideration. + * This will return a different value than LclTranslation, LclRotation and LclScaling at the specified time. To evaluate these properties separately + * without taking pre/post rotation, pivots and offsets into consideration, please use GetNodeLocalTranslation(), GetNodeLocalRotation() and GetNodeLocalScaling(). + * This function is the equivalent of calling Scene->GetEvaluator()->GetNodeLocalTransform(). + */ + FbxAMatrix& EvaluateLocalTransform(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); + + /** Returns this node's LclTranslation property at the specified time. + * No pivot, offsets, or any other transform is taken into consideration. The translation limit is applied. + * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. + * \param pPivotSet The pivot set to take into account + * \param pApplyTarget Applies the necessary transform to align into the target node + * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. + * \return The resulting value of LclTranslation property of the specified node at the specified time. + * \remarks This function is the equivalent of calling Scene->GetEvaluator()->GetNodeLocalTranslation(). + */ + FbxVector4& EvaluateLocalTranslation(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); + + /** Returns this node's LclRotation property at the specified time. + * No pre/post rotation, rotation pivot, rotation offset or any other transform is taken into consideration. The rotation limit is applied. + * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. + * \param pPivotSet The pivot set to take into account + * \param pApplyTarget Applies the necessary transform to align into the target node + * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. + * \return The resulting value of LclRotation property of the specified node at the specified time. + * \remarks This function is the equivalent of calling Scene->GetEvaluator()->GetNodeLocalRotation(). + */ + FbxVector4& EvaluateLocalRotation(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); + + /** Returns this node's LclScaling property at the specified time. + * No scaling pivot, scaling offset or any other transform is taken into consideration. The scaling limit is applied. + * \param pTime The time used for evaluate. If FBXSDK_TIME_INFINITE is used, this returns the default value, without animation curves evaluation. + * \param pPivotSet The pivot set to take into account + * \param pApplyTarget Applies the necessary transform to align into the target node + * \param pForceEval Force the evaluator to refresh the evaluation state cache even if its already up-to-date. + * \return The resulting value of LclScaling property of the specified node at the specified time. + * \remarks This function is the equivalent of calling Scene->GetEvaluator()->GetNodeLocalScaling(). + */ + FbxVector4& EvaluateLocalScaling(FbxTime pTime=FBXSDK_TIME_INFINITE, FbxNode::EPivotSet pPivotSet=FbxNode::eSourcePivot, bool pApplyTarget=false, bool pForceEval=false); + + /** Compute the node's bounding box and its center in global coordinates. + * \param pBBoxMin The minimum value of the bounding box upon successful return. + * \param pBBoxMax The maximum value of the bounding box upon successful return. + * \param pBBoxCenter The center value of the bounding box upon successful return. + * \param pTime If different from FBXSDK_TIME_INFINITE, time used to compute the bounding box for deformed geometry. + * \return \c true if successful, otherwise \c false. + * \remark If geometry have been unloaded from memory, their bounding box cannot be calculated and will use any value set previously. */ + bool EvaluateGlobalBoundingBoxMinMaxCenter(FbxVector4& pBBoxMin, FbxVector4& pBBoxMax, FbxVector4& pBBoxCenter, const FbxTime& pTime=FBXSDK_TIME_INFINITE); + + /** Compute closest ray intersection point with mesh attributes of this node (triangle meshes only!). + * \param pOut The closest intersection point from pRayOrigin location in pRayDir direction. Variable is unchanged if return value is \c false. + * \param pRayOrigin The origin location to cast the ray from. + * \param pRayDir The direction the cast ray to test mesh triangles from. + * \param pCulling If \c true, only test triangles that are front facing, otherwise test both sides. + * \param pTime The time to use to evaluate mesh deformations. + * \return \c true if a triangle intersect with the ray, otherwise \c false. + * \remark This function will automatically fail if the node's meshes are not triangulated. */ + bool EvaluateRayIntersectionPoint(FbxVector4& pOut, const FbxVector4& pRayOrigin, const FbxVector4& pRayDir, bool pCulling=false, const FbxTime& pTime=FBXSDK_TIME_INFINITE); + //@} + + /** + * \name Character Link + */ + //@{ + /** Get number of character links. + * \return The number of character links. + */ + int GetCharacterLinkCount() const; + + /** Get character link at given index. + * \param pIndex Index of character link. + * \param pCharacter Pointer to receive linked character if function succeeds. + * \param pCharacterLinkType Pointer to receive character link type if function succeeds, + * cast to \c FbxCharacterLink::Type. + * \param pNodeId Pointer to receive the node ID if function succeeds. This ID should be casted + * to \c FbxCharacter::ENodeId type when the character link type is \c eCharacterLink or + * \c eControlSetLink else to the \c FbxEffector::ENodeId type if the character link type is + * \c eControlSetEffector or \c eControlSetEffectorAux. + * \param pNodeSubId For internal use. + * \return \c false if the index is out of range or any of the pointer arguments is NULL. + */ + bool GetCharacterLink(int pIndex, FbxCharacter** pCharacter, int* pCharacterLinkType, int* pNodeId, int* pNodeSubId); + + /** Looks if the given character link exists on this node. + * \param pCharacter Character searched. + * \param pCharacterLinkType Character link type searched. Its value must be one of + * the \c FbxCharacterLink::Type symbols.. + * \param pNodeId Node ID searched. If \e pCharacterLinkType is \c eCharacterLink or \c eControlSetLink + * the \e pNodeId value is casted to the \c FbxCharacter::ENodeId type. If the \e pCharacterLinkType + * is \c eControlSetEffector or \c eControlSetEffectorAux then the \e pNodeId is casted to the + * \c FbxEffector::ENodeId type. + * \param pNodeSubId For internal use. + * \return Index of found character link if it exists, -1 otherwise. + */ + int FindCharacterLink(FbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId) const; + //@} + + /** Find out start and end time of the animation curves for this node (and its children). + * \param pInterval This node's animation interval. + * \param pAnimStack Animation stack where to retrieve animation curves. + * \param pAnimLayerId Specific animation layer on the animStack to use. + * \return \c true if the node (or its children) is animated, \c false otherwise. + * \remarks If pAnimStack is left NULL, the function will try to get the first AnimStack that is connected + * to the scene. \e pAnimLayerId represent the index of the connection. For example, the call: + * \code + * lNode->GetAnimationInterval(span, myStack, 3); + * \endcode + * will scan all the animation curves of this node, and it's children, that are defined on the third + * animation layer of \c myStack. + */ + bool GetAnimationInterval(FbxTimeSpan& pInterval, FbxAnimStack* pAnimStack=NULL, int pAnimLayerId=0); + + /** + * \name Material Management + */ + //@{ + /** Add a material to this node. + * \param pMaterial The material to add. + * \return non-negative index of added material, or -1 on error. + */ + int AddMaterial(FbxSurfaceMaterial* pMaterial); + + /** Remove a material from this node. + * \param pMaterial The material to remove. + * \return true on success, false otherwise + */ + bool RemoveMaterial(FbxSurfaceMaterial* pMaterial); + + /** + * \return The number of materials applied to this node. + * \remarks If this node has an instanced node attribute, it is possible + * to have a material applied to this node more than once. The material + * count may not reflect the distinct material count. + */ + int GetMaterialCount() const; + + /** Access a material on this node. + * \param pIndex Valid range is [0, GetMaterialCount() - 1] + * \return The pIndex-th material, or NULL if pIndex is invalid. + */ + FbxSurfaceMaterial* GetMaterial(int pIndex) const; + + /** Remove all materials applied to this node. + */ + void RemoveAllMaterials(); + + /** Find an applied material with the given name. + * \param pName The requested name + * \return an index to a material, or -1 if no applied material + * has the requested name. + */ + int GetMaterialIndex(const char* pName) const; + //@} + + /** + * \name Public and fast access Properties + */ + //@{ + /** This property contains the translation information of the node + * + * To access this property do: LclTranslation.Get(). + * To set this property do: LclTranslation.Set(FbxDouble3). + * + * Default value is 0.,0.,0. + */ + FbxPropertyT LclTranslation; + + /** This property contains the rotation information of the node + * + * To access this property do: LclRotation.Get(). + * To set this property do: LclRotation.Set(FbxDouble3). + * + * Default value is 0.,0.,0. + */ + FbxPropertyT LclRotation; + + /** This property contains the scaling information of the node + * + * To access this property do: LclScaling.Get(). + * To set this property do: LclScaling.Set(FbxDouble3). + * + * Default value is 1.,1.,1. + */ + FbxPropertyT LclScaling; + + /** This property contains the visibility information of the node. + * The assumed behavior of this property is to affect the visibility of the node, all the + * nodes attributes connected to it as well as all its descendants. This property can be + * animated. + * + * To access this property do: Visibility.Get(). + * To set this property do: Visibility.Set(FbxDouble). + * + * Default value is 1. + * \remarks \li This property holds values ranging from 0.0 to 1.0 where the value 0.0 means + * a totally invisible object, the value 1.0, a full visible object and anything inbetween, a + * percentage degree of visibility.\n + * + * \li Since not all the applications may support a degree of visibility, it is agreed that + * a value of 0.0 means invisible and anything else means visible. + * + * \see Show property. + */ + FbxPropertyT Visibility; + + /** This property contains the visibility inheritance flag that allow applications to modify + * the Visibility property interpretation. By default, this value is set to \c true because it is + * assumed (as explained in the Visibility property description) that the node visibility is inherited + * from its parent. In other words, applications should always process the Visibility property of the + * node and, depending on its value, decide whether or not the node has to be displayed. After + * this first assessment, check the node VisibilityInheritance flag. If its value is set to \c false then + * move to the next object, else use the parent's Visibility value and modify this node display state + * by performing the logical AND operation between this node Visibility property and its parent's. + * + * To access this property do: VisibilityInheritance.Get(). + * To set this property do: VisibilityInheritance.Set(FbxBool). + * + * Default value is \c true. + * \remarks This property is non-animatable and is not used inside the FBX SDK but it is guaranteed + * to exist in FBX files with version 7.2 and above. + * \see Visibility property. + */ + FbxPropertyT VisibilityInheritance; + + + /** This property contains the quaternion interpolate flag of the node + * + * To access this property do: QuaternionInterpolate.Get(). + * To set this property do: QuaternionInterpolate.Set(EFbxQuatInterpMode). + * + * Default value is eQuatInterpOff. + */ + FbxPropertyT QuaternionInterpolate; + + /** This property contains the rotation offset information of the node + * + * To access this property do: RotationOffset.Get(). + * To set this property do: RotationOffset.Set(FbxDouble3). + * + * Default value is 0.,0.,0. + */ + FbxPropertyT RotationOffset; + + /** This property contains the rotation pivot information of the node + * + * To access this property do: RotationPivot.Get(). + * To set this property do: RotationPivot.Set(FbxDouble3). + * + * Default value is 0.,0.,0. + */ + FbxPropertyT RotationPivot; + + /** This property contains the scaling offset information of the node + * + * To access this property do: ScalingOffset.Get(). + * To set this property do: ScalingOffset.Set(FbxDouble3). + * + * Default value is 0.,0.,0. + */ + FbxPropertyT ScalingOffset; + + /** This property contains the scaling pivot information of the node + * + * To access this property do: ScalingPivot.Get(). + * To set this property do: ScalingPivot.Set(FbxDouble3). + * + * Default value is 0.,0.,0. + */ + FbxPropertyT ScalingPivot; + + /** This property enables or disables the limit on translation. + * When set to \c false the object can translate in any direction without limitations. + * Else the + * \ref TranslationMinX, \ref TranslationMinY, \ref TranslationMinZ, + * \ref TranslationMaxX, \ref TranslationMaxY and \ref TranslationMaxZ flags are used to + * limit the translation on each individual axis. + * + * To access this property do: TranslationActive.Get(). + * To set this property do: TranslationActive.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT TranslationActive; + + /** This property sets the minimum translation values the object can occupy on each individual axis. + * + * To access this property do: TranslationMin.Get(). + * To set this property do: TranslationMin.Set(FbxDouble3). + * Default value is 0.,0.,0. + * + */ + FbxPropertyT TranslationMin; + + /** This property sets the maximum translation values the object can occupy on each individual axis. + * + * To access this property do: TranslationMax.Get(). + * To set this property do: TranslationMax.Set(FbxDouble3). + * Default value is 0.,0.,0. + * + */ + FbxPropertyT TranslationMax; + + /** This property enables or disables the limit on translation X. + * When set to \c true, the object translation is constrained by the value of \ref TranslationMin. + * + * To access this property do: TranslationMinX.Get(). + * To set this property do: TranslationMinX.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT TranslationMinX; + + /** This property enables or disables the limit on translation Y. + * When set to \c true, the object translation is constrained by the value of \ref TranslationMin. + * + * To access this property do: TranslationMinY.Get(). + * To set this property do: TranslationMinY.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT TranslationMinY; + + + /** This property enables or disables the limit on translation Z. + * When set to \c true, the object translation is constrained by the value of \ref TranslationMin. + * + * To access this property do: TranslationMinZ.Get(). + * To set this property do: TranslationMinZ.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT TranslationMinZ; + + /** This property enables or disables the limit on translation X. + * When set to \c true, the object translation is constrained by the value of \ref TranslationMax. + * + * To access this property do: TranslationMaxX.Get(). + * To set this property do: TranslationMaxX.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT TranslationMaxX; + + /** This property enables or disables the limit on translation Y. + * When set to \c true, the object translation is constrained by the value of \ref TranslationMax. + * + * To access this property do: TranslationMaxY.Get(). + * To set this property do: TranslationMaxY.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT TranslationMaxY; + + /** This property enables or disables the limit on translation Z. + * When set to \c true, the object translation is constrained by the value of \ref TranslationMax. + * + * To access this property do: TranslationMaxZ.Get(). + * To set this property do: TranslationMaxZ.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT TranslationMaxZ; + + /** This property contains the rotation order information of the node + * + * To access this property do: RotationOrder.Get(). + * To set this property do: RotationOrder.Set(EFbxRotationOrder). + * Default value is eEulerXYZ. + * + */ + FbxPropertyT RotationOrder; + + /** This property contains the rotation space for limit only flag of the node. + * When set to \c true, the Rotation space is applied only on the limit data (provided the \ref RotationActive is + * also \c true). + * + * To access this property do: RotationSpaceForLimitOnly.Get(). + * To set this property do: RotationSpaceForLimitOnly.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT RotationSpaceForLimitOnly; + + /** This property contains the x value of the rotation stiffness of the node + * + * To access this property do: RotationStiffnessX.Get(). + * To set this property do: RotationStiffnessX.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT RotationStiffnessX; + + /** This property contains the y value of the rotation stiffness of the node + * + * To access this property do: RotationStiffnessY.Get(). + * To set this property do: RotationStiffnessY.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT RotationStiffnessY; + + /** This property contains the z value of the rotation stiffness of the node + * + * To access this property do: RotationStiffnessZ.Get(). + * To set this property do: RotationStiffnessZ.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT RotationStiffnessZ; + + /** This property contains axis length information of the node + * + * To access this property do: AxisLen.Get(). + * To set this property do: AxisLen.Set(FbxDouble). + * + * Default value is 10. + */ + FbxPropertyT AxisLen; + + /** This property contains pre-rotation information of the node + * + * To access this property do: PreRotation.Get(). + * To set this property do: PreRotation.Set(FbxDouble3). + * + * Default value is 0.,0.,0. + */ + FbxPropertyT PreRotation; + + /** This property contains post-rotation information of the node + * + * To access this property do: PostRotation.Get(). + * To set this property do: PostRotation.Set(FbxDouble3). + * + * Default value is 0.,0.,0. + */ + FbxPropertyT PostRotation; + + /** This property enables or disables the limit on rotation. + * When set to \c false the object can rotate in any direction without limitations. + * Else the + * \ref RotationMinX, \ref RotationMinY, \ref RotationMinZ, + * \ref RotationMaxX, \ref RotationMaxY and \ref RotationMaxZ flags are used to + * limit the rotation on each individual axis. + * \remarks The PreRotation value is applied before the limit, while the PostRotation is applied + * after the limit. + * + * To access this property do: RotationActive.Get(). + * To set this property do: RotationActive.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT RotationActive; + + /** This property sets the minimum rotation values the object can occupy on each individual axis. + * + * To access this property do: RotationMin.Get(). + * To set this property do: RotationMin.Set(FbxDouble3). + * + * Default value is 0.,0.,0. + */ + FbxPropertyT RotationMin; + + /** This property sets the maximum rotation values the object can occupy on each individual axis. + * + * To access this property do: RotationMax.Get(). + * To set this property do: RotationMax.Set(FbxDouble3). + * + * Default value is 0.,0.,0. + */ + FbxPropertyT RotationMax; + + /** This property enables or disables the limit on rotation X. + * When set to \c true, the object rotation is constrained by the value of \ref RotationMin. + * + * To access this property do: RotationMinX.Get(). + * To set this property do: RotationMinX.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT RotationMinX; + + /** This property enables or disables the limit on rotation Y. + * When set to \c true, the object rotation is constrained by the value of \ref RotationMin. + * + * To access this property do: RotationMinY.Get(). + * To set this property do: RotationMinY.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT RotationMinY; + + /** This property enables or disables the limit on rotation Z. + * When set to \c true, the object rotation is constrained by the value of \ref RotationMin. + * + * To access this property do: RotationMinZ.Get(). + * To set this property do: RotationMinZ.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT RotationMinZ; + + /** This property enables or disables the limit on rotation X. + * When set to \c true, the object rotation is constrained by the value of \ref RotationMax. + * + * To access this property do: RotationMaxX.Get(). + * To set this property do: RotationMaxX.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT RotationMaxX; + + /** This property enables or disables the limit on rotation Y. + * When set to \c true, the object rotation is constrained by the value of \ref RotationMax. + * + * To access this property do: RotationMaxY.Get(). + * To set this property do: RotationMaxY.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT RotationMaxY; + + /** This property enables or disables the limit on rotation Z. + * When set to \c true, the object rotation is constrained by the value of \ref RotationMax. + * + * To access this property do: RotationMaxZ.Get(). + * To set this property do: RotationMaxZ.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT RotationMaxZ; + + /** This property contains inherit type information of the node + * + * To access this property do: InheritType.Get(). + * To set this property do: InheritType.Set(FbxTransform::EInheritType). + * + * Default value is eInheritRrSs. + */ + FbxPropertyT InheritType; + + /** This property enables or disables the limit on scaling. + * When set to \c false the object can scale in any direction without limitations. + * Else the + * \ref ScalingMinX, \ref ScalingMinY, \ref ScalingMinZ, + * \ref ScalingMaxX, \ref ScalingMaxY and \ref ScalingMaxZ flags are used to + * limit the scaling on each individual axis. + * + * To access this property do: ScalingActive.Get(). + * To set this property do: ScalingActive.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT ScalingActive; + + /** This property sets the minimum scaling values the object can occupy on each individual axis. + * + * To access this property do: ScalingMin.Get(). + * To set this property do: ScalingMin.Set(FbxDouble3). + * + * Default value is 0.,0.,0. + */ + FbxPropertyT ScalingMin; + + /** This property sets the maximum scaling values the object can occupy on each individual axis. + * + * To access this property do: ScalingMax.Get(). + * To set this property do: ScalingMax.Set(FbxDouble3). + * + * Default value is 1.,1.,1. + */ + FbxPropertyT ScalingMax; + + /** This property activates or disables the limit on scaling X. When active, the object scaling + * is constrained by the value of \ref ScalingMin. + * + * To access this property do: ScalingMinX.Get(). + * To set this property do: ScalingMinX.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT ScalingMinX; + + /** This property enables or disables the limit on scaling Y. + * When set to \c true, the object scaling is constrained by the value of \ref ScalingMin. + * + * To access this property do: ScalingMinY.Get(). + * To set this property do: ScalingMinY.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT ScalingMinY; + + /** This property enables or disables the limit on scaling Z. + * When set to \c true, the object scaling is constrained by the value of \ref ScalingMin. + * + * To access this property do: ScalingMinZ.Get(). + * To set this property do: ScalingMinZ.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT ScalingMinZ; + + /** This property enables or disables the limit on scaling X. + * When set to \c true, the object scaling is constrained by the value of \ref ScalingMax. + * + * To access this property do: ScalingMaxX.Get(). + * To set this property do: ScalingMaxX.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT ScalingMaxX; + + /** This property enables or disables the limit on scaling Y. + * When set to \c true, the object scaling is constrained by the value of \ref ScalingMax. + * + * To access this property do: ScalingMaxY.Get(). + * To set this property do: ScalingMaxY.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT ScalingMaxY; + + /** This property enables or disables the limit on scaling Z. + * When set to \c true, the object scaling is constrained by the value of \ref ScalingMax. + * + * To access this property do: ScalingMaxZ.Get(). + * To set this property do: ScalingMaxZ.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT ScalingMaxZ; + + /** This property contains geometric translation information of the node + * + * To access this property do: GeometricTranslation.Get(). + * To set this property do: GeometricTranslation.Set(FbxDouble3). + * + * Default value is 0.,0.,0. + */ + FbxPropertyT GeometricTranslation; + + /** This property contains geometric rotation information of the node + * + * To access this property do: GeometricRotation.Get(). + * To set this property do: GeometricRotation.Set(FbxDouble3). + * + * Default value is 0.,0.,0. + */ + FbxPropertyT GeometricRotation; + + /** This property contains geometric scaling information of the node + * + * To access this property do: GeometricScaling.Get(). + * To set this property do: GeometricScaling.Set(FbxDouble3). + * + * Default value is 1.,1.,1. + */ + FbxPropertyT GeometricScaling; + + // IK Settings + ////////////////////////////////////////////////////////// + + /** This property contains the x component of the minimum damp range angles of the node + * + * To access this property do: MinDampRangeX.Get(). + * To set this property do: MinDampRangeX.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT MinDampRangeX; + + /** This property contains the y component of the minimum damp range angles of the node + * + * To access this property do: MinDampRangeY.Get(). + * To set this property do: MinDampRangeY.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT MinDampRangeY; + + /** This property contains the z component of the minimum damp range angles of the node + * + * To access this property do: MinDampRangeZ.Get(). + * To set this property do: MinDampRangeZ.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT MinDampRangeZ; + + /** This property contains the x component of the maximum damp range angles of the node + * + * To access this property do: MaxDampRangeX.Get(). + * To set this property do: MaxDampRangeX.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT MaxDampRangeX; + + /** This property contains the y component of the maximum damp range angles of the node + * + * To access this property do: MaxDampRangeY.Get(). + * To set this property do: MaxDampRangeY.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT MaxDampRangeY; + + /** This property contains the z component of the maximum damp range angles of the node + * + * To access this property do: MaxDampRangeZ.Get(). + * To set this property do: MaxDampRangeZ.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT MaxDampRangeZ; + + /** This property contains the x component of the minimum damp strength of the node + * + * To access this property do: MinDampStrengthX.Get(). + * To set this property do: MinDampStrengthX.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT MinDampStrengthX; + + /** This property contains the y component of the minimum damp strength of the node + * + * To access this property do: MinDampStrengthY.Get(). + * To set this property do: MinDampStrengthY.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT MinDampStrengthY; + + /** This property contains the z component of the minimum damp strength of the node + * + * To access this property do: MinDampStrengthZ.Get(). + * To set this property do: MinDampStrengthZ.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT MinDampStrengthZ; + + /** This property contains the x component of the maximum damp strength of the node + * + * To access this property do: MaxDampStrengthX.Get(). + * To set this property do: MaxDampStrengthX.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT MaxDampStrengthX; + + /** This property contains the y component of the maximum damp strength of the node + * + * To access this property do: MaxDampStrengthY.Get(). + * To set this property do: MaxDampStrengthY.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT MaxDampStrengthY; + + /** This property contains the z component of the maximum damp strength of the node + * + * To access this property do: MaxDampStrengthZ.Get(). + * To set this property do: MaxDampStrengthZ.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT MaxDampStrengthZ; + + /** This property contains the x component of the preferred angle of the node + * + * To access this property do: PreferedAngleX.Get(). + * To set this property do: PreferedAngleX.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT PreferedAngleX; + + /** This property contains the y component of the preferred angle of the node + * + * To access this property do: PreferedAngleY.Get(). + * To set this property do: PreferedAngleY.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT PreferedAngleY; + + /** This property contains the z component of the preferred angle of the node + * + * To access this property do: PreferedAngleZ.Get(). + * To set this property do: PreferedAngleZ.Set(FbxDouble). + * + * Default value is 0. + */ + FbxPropertyT PreferedAngleZ; + + /////////////////////////////////////////////////////// + + /** This property contains lookat property of the node + * + * To access this property do: LookAtProperty.Get(). + * To set this property do: LookAtProperty.Set(FbxReference). + * + */ + FbxPropertyT LookAtProperty; + + /** This property contains the up vector property of the node + * + * To access this property do: UpVectorProperty.Get(). + * To set this property do: UpVectorProperty.Set(FbxReference). + * + */ + FbxPropertyT UpVectorProperty; + + /** This property contains the show information of the node. + * As opposed to the Visibility property, this one cannot be animated. The assumed behavior of + * this property is to represent the show/hide state of all the nodes attributes connected to this + * node only. + * + * To access this property do: Show.Get(). + * To set this property do: Show.Set(FbxBool). + * + * Default value is true. + * + * \remarks \li Because node attributes can be shared by multiple nodes (instances), the FBX SDK provides an utility + * function FbxScene::SyncShowPropertyForInstance() to propagates the same Show value across all the nodes + * referencing the node attribute. The applied logic is that as soon as one of these nodes has the Show + * property set to \c false, all will be set to \c false (basically it is an AND operation on all the + * Show flags). + * + * \li Depending on the support of the Show and Visibility properties that applications will implement, there + * may be conflicts with these two states. In this case, it is suggested that the Visibility property + * always overrides the Show. + * + * \see Visibility property. + */ + FbxPropertyT Show; + + /** This property contains negative percent shape support information of the node + * + * To access this property do: NegativePercentShapeSupport.Get(). + * To set this property do: NegativePercentShapeSupport.Set(FbxBool). + * + * Default value is true. + */ + FbxPropertyT NegativePercentShapeSupport; + + /** This property contains default attribute index information of the node + * + * To access this property do: DefaultAttributeIndex.Get(). + * To set this property do: DefaultAttributeIndex.Set(FbxInt). + * + * Default value is -1. + */ + FbxPropertyT DefaultAttributeIndex; + + /** This property contains manipulation state information of the node + * + * To access this property do: Freeze.Get(). + * To set this property do: Freeze.Set(FbxBool). + * + * Default value is false. + */ + FbxPropertyT Freeze; + + /** This property contains level of detail mode information of the node + * + * To access this property do: LODBox.Get(). + * To set this property do: LODBox.Set(FbxBool). + * + * True: Bounding box + * False: Geometry object is displayed. + * Default value is false. + */ + FbxPropertyT LODBox; + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + class FBXSDK_DLL Pivot + { + public: + static const FbxVector4 sZeroVector; + static const FbxVector4 sOneVector; + + Pivot() + { + mRotationOffset = NULL; + mRotationPivot = NULL; + mPreRotation = NULL; + mPostRotation = NULL; + mScalingOffset = NULL; + mScalingPivot = NULL; + mGeometricTranslation = NULL; + mGeometricRotation = NULL; + mGeometricScaling = NULL; + Reset(); + } + ~Pivot() { Reset(); } + + void Reset() + { + FBX_SAFE_DELETE(mRotationOffset); + FBX_SAFE_DELETE(mRotationPivot); + FBX_SAFE_DELETE(mPreRotation); + FBX_SAFE_DELETE(mPostRotation); + FBX_SAFE_DELETE(mScalingOffset); + FBX_SAFE_DELETE(mScalingPivot); + FBX_SAFE_DELETE(mGeometricTranslation); + FBX_SAFE_DELETE(mGeometricRotation); + FBX_SAFE_DELETE(mGeometricScaling); + mRotationOrder = eEulerXYZ; + mRotationSpaceForLimitOnly = false; + mPivotState = FbxNode::ePivotReference; + mQuaternionInterpolate = eQuatInterpOff; + } + + inline const FbxVector4& GetRotationOffset() const { return (mRotationOffset) ? *mRotationOffset : sZeroVector; } + inline void SetRotationOffset(const FbxVector4& pV) + { + if( !mRotationOffset ) + { + #if defined(__GNUC__) && (__GNUC__ < 4) + mRotationOffset = FbxNew< FbxVector4 >((FbxVector4&)pV); + #else + mRotationOffset = FbxNew< FbxVector4 >(pV); + #endif + } + else + { + *mRotationOffset = pV; + } + } + + inline const FbxVector4& GetRotationPivot() const { return (mRotationPivot) ? *mRotationPivot : sZeroVector; } + inline void SetRotationPivot(const FbxVector4& pV) + { + if( !mRotationPivot ) + { + #if defined(__GNUC__) && (__GNUC__ < 4) + mRotationPivot = FbxNew< FbxVector4 >((FbxVector4&)pV); + #else + mRotationPivot = FbxNew< FbxVector4 >(pV); + #endif + } + else + { + *mRotationPivot = pV; + } + } + + inline const FbxVector4& GetPreRotation() const { return (mPreRotation) ? *mPreRotation : sZeroVector; } + inline void SetPreRotation(const FbxVector4& pV) + { + if( !mPreRotation ) + { + #if defined(__GNUC__) && (__GNUC__ < 4) + mPreRotation = FbxNew< FbxVector4 >((FbxVector4&)pV); + #else + mPreRotation = FbxNew< FbxVector4 >(pV); + #endif + } + else + { + *mPreRotation = pV; + } + } + + inline const FbxVector4& GetPostRotation() const { return (mPostRotation) ? *mPostRotation : sZeroVector; } + inline void SetPostRotation(const FbxVector4& pV) + { + if( !mPostRotation ) + { + #if defined(__GNUC__) && (__GNUC__ < 4) + mPostRotation = FbxNew< FbxVector4 >((FbxVector4&)pV); + #else + mPostRotation = FbxNew< FbxVector4 >(pV); + #endif + } + else + { + *mPostRotation = pV; + } + } + + inline const FbxVector4& GetScalingOffset() const { return (mScalingOffset) ? *mScalingOffset : sZeroVector; } + inline void SetScalingOffset(const FbxVector4& pV) + { + if( !mScalingOffset ) + { + #if defined(__GNUC__) && (__GNUC__ < 4) + mScalingOffset = FbxNew< FbxVector4 >((FbxVector4&)pV); + #else + mScalingOffset = FbxNew< FbxVector4 >(pV); + #endif + } + else + { + *mScalingOffset = pV; + } + } + + inline const FbxVector4& GetScalingPivot() const { return (mScalingPivot) ? *mScalingPivot : sZeroVector; } + inline void SetScalingPivot(const FbxVector4& pV) + { + if( !mScalingPivot ) + { + #if defined(__GNUC__) && (__GNUC__ < 4) + mScalingPivot = FbxNew< FbxVector4 >((FbxVector4&)pV); + #else + mScalingPivot = FbxNew< FbxVector4 >(pV); + #endif + } + else + { + *mScalingPivot = pV; + } + } + + inline const FbxVector4& GetGeometricTranslation() const { return (mGeometricTranslation) ? *mGeometricTranslation : sZeroVector; } + inline void SetGeometricTranslation(const FbxVector4& pV) + { + if( !mGeometricTranslation ) + { + #if defined(__GNUC__) && (__GNUC__ < 4) + mGeometricTranslation = FbxNew< FbxVector4 >((FbxVector4&)pV); + #else + mGeometricTranslation = FbxNew< FbxVector4 >(pV); + #endif + } + else + { + *mGeometricTranslation = pV; + } + } + + inline const FbxVector4& GetGeometricRotation() const { return (mGeometricRotation) ? *mGeometricRotation : sZeroVector; } + inline void SetGeometricRotation(const FbxVector4& pV) + { + if( !mGeometricRotation ) + { + #if defined(__GNUC__) && (__GNUC__ < 4) + mGeometricRotation = FbxNew< FbxVector4 >((FbxVector4&)pV); + #else + mGeometricRotation = FbxNew< FbxVector4 >(pV); + #endif + } + else + { + *mGeometricRotation = pV; + } + } + + inline const FbxVector4& GetGeometricScaling() const { return (mGeometricScaling) ? *mGeometricScaling : sOneVector; } + inline void SetGeometricScaling(const FbxVector4& pV) + { + if( !mGeometricScaling ) + { + #if defined(__GNUC__) && (__GNUC__ < 4) + mGeometricScaling = FbxNew< FbxVector4 >((FbxVector4&)pV); + #else + mGeometricScaling = FbxNew< FbxVector4 >(pV); + #endif + } + else + { + *mGeometricScaling = pV; + } + } + + inline EFbxRotationOrder GetRotationOrder() const { return mRotationOrder; } + inline void SetRotationOrder(EFbxRotationOrder pROrder) { mRotationOrder = pROrder; } + inline bool GetRotationSpaceForLimitOnly() const { return mRotationSpaceForLimitOnly; } + inline void SetRotationSpaceForLimitOnly(bool pVal) { mRotationSpaceForLimitOnly = pVal; } + inline EFbxQuatInterpMode GetQuaternionInterpolate() const { return mQuaternionInterpolate; } + inline void SetQuaternionInterpolate(EFbxQuatInterpMode pVal) { mQuaternionInterpolate = pVal; } + inline FbxNode::EPivotState GetPivotState() const { return mPivotState; } + inline void SetPivotState(FbxNode::EPivotState pVal) { mPivotState = pVal; } + + private: + FbxVector4* mRotationOffset; + FbxVector4* mRotationPivot; + FbxVector4* mPreRotation; + FbxVector4* mPostRotation; + FbxVector4* mScalingOffset; + FbxVector4* mScalingPivot; + FbxVector4* mGeometricTranslation; + FbxVector4* mGeometricRotation; + FbxVector4* mGeometricScaling; + EFbxRotationOrder mRotationOrder; + bool mRotationSpaceForLimitOnly; + EFbxQuatInterpMode mQuaternionInterpolate; + FbxNode::EPivotState mPivotState; + }; + + class FBXSDK_DLL Pivots + { + public: + Pivots() + { + for( int i = 0; i < 2; i++ ) + { + mIsDefault[i] = true; + mPivotState[i] = FbxNode::ePivotReference; + mPivot[i] = NULL; + } + } + + ~Pivots() + { + FbxDelete(mPivot[0]); + FbxDelete(mPivot[1]); + } + + Pivot& Get(int id) + { + FBX_ASSERT(id == 0 || id == 1); + if (mPivot[id] == NULL && mIsDefault[id]) + { + smDefaultPivot.SetPivotState(mPivotState[id]); + return smDefaultPivot; + } + + if (!mPivot[id]) + mPivot[id] = FbxNew< Pivot >(); + + FBX_ASSERT(mPivot[id] != NULL); + if (mPivot[id]) + mPivot[id]->SetPivotState(mPivotState[id]); + + return *mPivot[id]; + } + + #define MACRO_PIVOT_VECTOR_FCTS(name, defVect) \ + inline const FbxVector4& Get##name(int id) const \ + {\ + FBX_ASSERT(id == 0 || id == 1); \ + Pivot* p = mPivot[id]; \ + if (p == NULL) p = &smDefaultPivot; \ + return p->Get##name(); \ + }\ + inline void Set##name(int id, const FbxVector4& pV) \ + {\ + FBX_ASSERT(id == 0 || id == 1); \ + if (mIsDefault[id] && pV[0] == defVect[0] && pV[1] == defVect[1] && pV[2] == defVect[2]) return; \ + mIsDefault[id] = false; \ + Get(id).Set##name(pV); \ + } + + MACRO_PIVOT_VECTOR_FCTS(RotationOffset, Pivot::sZeroVector); + MACRO_PIVOT_VECTOR_FCTS(RotationPivot, Pivot::sZeroVector); + MACRO_PIVOT_VECTOR_FCTS(PreRotation, Pivot::sZeroVector); + MACRO_PIVOT_VECTOR_FCTS(PostRotation, Pivot::sZeroVector); + MACRO_PIVOT_VECTOR_FCTS(ScalingOffset, Pivot::sZeroVector); + MACRO_PIVOT_VECTOR_FCTS(ScalingPivot, Pivot::sZeroVector); + MACRO_PIVOT_VECTOR_FCTS(GeometricTranslation, Pivot::sZeroVector); + MACRO_PIVOT_VECTOR_FCTS(GeometricRotation, Pivot::sZeroVector); + MACRO_PIVOT_VECTOR_FCTS(GeometricScaling, Pivot::sOneVector); + + #define MACRO_PIVOT_BOOL_FCTS(name) \ + inline bool Get##name(int id) const \ + {\ + FBX_ASSERT(id == 0 || id == 1); \ + Pivot* p = mPivot[id]; \ + if (p == NULL) p = &smDefaultPivot; \ + return p->Get##name(); \ + }\ + inline void Set##name(int id, bool pV) \ + {\ + FBX_ASSERT(id == 0 || id == 1); \ + mIsDefault[id] = false; \ + Get(id).Set##name(pV); \ + } + + MACRO_PIVOT_BOOL_FCTS(RotationSpaceForLimitOnly); + + inline EFbxQuatInterpMode GetQuaternionInterpolate(int id) const + { + FBX_ASSERT(id == 0 || id == 1); + Pivot* p = mPivot[id]; + if (p == NULL) p = &smDefaultPivot; + return p->GetQuaternionInterpolate(); + } + + inline void SetQuaternionInterpolate(int id, EFbxQuatInterpMode pV) + { + FBX_ASSERT(id == 0 || id == 1); + // If pivot has default values, and we want to set default eQuatInterpOff, + // return to avoid allocating memory for the pivot (in Get(id).) + if (mIsDefault[id] && pV == eQuatInterpOff) return; + mIsDefault[id] = false; + Get(id).SetQuaternionInterpolate(pV); + } + + inline EFbxRotationOrder GetRotationOrder(int id) const + { + FBX_ASSERT(id == 0 || id == 1); + Pivot* p = mPivot[id]; + if (p == NULL) p = &smDefaultPivot; + return p->GetRotationOrder(); + } + + inline void SetRotationOrder(int id, EFbxRotationOrder pROrder) + { + FBX_ASSERT(id == 0 || id == 1); + // If pivot has default values, and we want to set default rotation order eEulerXYZ, + // return to avoid allocating memory for the pivot (in Get(id).) + if (mIsDefault[id] && pROrder == eEulerXYZ) return; + mIsDefault[id] = false; + Get(id).SetRotationOrder(pROrder); + } + + inline FbxNode::EPivotState GetPivotState(int id) const + { + FBX_ASSERT(id == 0 || id == 1); + return mPivotState[id]; + } + + inline void SetPivotState(int id, FbxNode::EPivotState pVal) + { + FBX_ASSERT(id == 0 || id == 1); + if (pVal == FbxNode::ePivotReference) return; + mPivotState[id] = pVal; + if (mPivot[id]) + mPivot[id]->SetPivotState(pVal); + } + + #undef MACRO_PIVOT_VECTOR_FCTS + #undef MACRO_PIVOT_BOOL_FCTS + + void Reset() + { + smDefaultPivot.Reset(); + for (int i = 0; i < 2; i++) + { + mIsDefault[i] = true; + mPivotState[i] = FbxNode::ePivotReference; + if (mPivot[i]) mPivot[i]->Reset(); + } + } + + private: + Pivot* mPivot[2]; + FbxNode::EPivotState mPivotState[2]; + bool mIsDefault[2]; + static Pivot smDefaultPivot; + }; + + class FBXSDK_DLL LinkToCharacter + { + public: + bool operator==(LinkToCharacter& pLinkToCharacter) + { + if (mCharacter == pLinkToCharacter.mCharacter && + mType == pLinkToCharacter.mType && + mIndex == pLinkToCharacter.mIndex && + mSubIndex == pLinkToCharacter.mSubIndex) + { + return true; + } + else return false; + } + + FbxCharacter* mCharacter; + int mType; + int mIndex; + int mSubIndex; + }; + + void AddChildName(char* pChildName); + char* GetChildName(FbxUInt pIndex) const; + FbxUInt GetChildNameCount() const; + + FbxTransform& GetTransform(); + FbxLimits& GetTranslationLimits(); + FbxLimits& GetRotationLimits(); + FbxLimits& GetScalingLimits(); + Pivots& GetPivots(); + + void UpdatePivotsAndLimitsFromProperties(); + void UpdatePropertiesFromPivotsAndLimits(); + + void SetRotationActiveProperty(bool pVal); + void PivotSetToMBTransform(EPivotSet pPivotSet); + + int AddCharacterLink(FbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId); + int RemoveCharacterLink(FbxCharacter* pCharacter, int pCharacterLinkType, int pNodeId, int pNodeSubId); + + // Duplicate this node as well as all its node attributes and the Target and UpTarget objects. + FbxNode* DeepCloneWithNodeAttributes(); + + virtual FbxObject& Copy(const FbxObject& pObject); + virtual const char* GetTypeName() const; + virtual FbxStringList GetTypeFlags() const; + virtual bool PropertyNotify(EPropertyNotifyType pType, FbxProperty& pProperty); + + enum ECullingType + { + eCullingOff, + eCullingOnCCW, + eCullingOnCW + }; + + ECullingType mCullingType; + bool mCorrectInheritType; + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + virtual void Destruct(bool pRecursive); + + void Reset(); + bool GetAnimationIntervalRecursive(FbxTimeSpan& pTimeInterval, FbxAnimLayer* pAnimLayer); + +private: + typedef FbxSet GeomInstSet; + + void ResetLimitsRecursive(FbxNode* pNode); + + void ConvertPivotAnimationRecurseLoop(FbxAnimStack* pAnimStack, const EPivotSet pConversionTarget, const double pFrameRate, const bool pKeyReduce, GeomInstSet& pGeomInstSet); + void ConvertPivotAnimation(FbxAnimStack* pAnimStack, const EPivotSet pConversionTarget, const double pFrameRate, const bool pKeyReduce, GeomInstSet& pGeomInstSet); + bool ConvertPivotAnimation_SetupMatrixConverter(FbxAnimCurveFilterMatrixConverter& pConverter, const EPivotSet& pSrcSet, const EPivotSet& pDstSet, const double pFrameRate, const bool pKeyReduce, GeomInstSet& pGeomInstSet); + void ConvertPivotAnimation_ApplyGeometryPivot(const EPivotSet& pSrcSet, const EPivotSet& pDstSet, GeomInstSet& pGeomInstSet); + + FbxTransform mTransform; + Pivots mPivots; + FbxObject* mAnimCurveNodeContainer; + FbxArray mChildrenNameList; + FbxVector4 mPostTargetRotation; + FbxVector4 mTargetUpVector; + FbxNode::EShadingMode mShadingMode; + FbxArray mLinkToCharacter; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +inline EFbxType FbxTypeOf(const EFbxRotationOrder&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxTransform::EInheritType&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const EFbxQuatInterpMode&){ return eFbxEnum; } + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_NODE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxnodeattribute.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxnodeattribute.h new file mode 100644 index 00000000..e9e76e18 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxnodeattribute.h @@ -0,0 +1,123 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxnodeattribute.h +#ifndef _FBXSDK_SCENE_GEOMETRY_NODE_ATTRIBUTE_H_ +#define _FBXSDK_SCENE_GEOMETRY_NODE_ATTRIBUTE_H_ + +#include + +#include + +#include + +class FbxNode; + +/** \brief This class is the base class to all types of node attributes. + * \nosubgrouping + * A node attribute is the content of a node. A \c NULL node attribute is set + * by calling function FbxNode::SetNodeAttribute() with a \c NULL pointer. + */ +class FBXSDK_DLL FbxNodeAttribute : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxNodeAttribute, FbxObject); + +public: + //! Property Names + static const char* sColor; + + //! Property Default Values + static const FbxDouble3 sDefaultColor; + + /** This property handles the color. + * + * Default value is (0.8, 0.8, 0.8) + */ + FbxPropertyT Color; + + /** \enum EType Node attribute types. + * - \e eUnknown + * - \e eNull + * - \e eMarker + * - \e eSkeleton + * - \e eMesh + * - \e eNurbs + * - \e ePatch + * - \e eCamera + * - \e eCameraStereo, + * - \e eCameraSwitcher + * - \e eLight + * - \e eOpticalReference + * - \e eOpticalMarker + * - \e eNurbsCurve + * - \e eTrimNurbsSurface + * - \e eBoundary + * - \e eNurbsSurface + * - \e eShape + * - \e eLODGroup + * - \e eSubDiv + * - \e eCachedEffect + * - \e eLine + */ + enum EType + { + eUnknown, + eNull, + eMarker, + eSkeleton, + eMesh, + eNurbs, + ePatch, + eCamera, + eCameraStereo, + eCameraSwitcher, + eLight, + eOpticalReference, + eOpticalMarker, + eNurbsCurve, + eTrimNurbsSurface, + eBoundary, + eNurbsSurface, + eShape, + eLODGroup, + eSubDiv, + eCachedEffect, + eLine + }; + + /** Return the type of node attribute. + * This class is pure virtual. + */ + virtual FbxNodeAttribute::EType GetAttributeType() const; + + /** Return the node count using this attribute. + * \return The count of nodes with this attribute set. + */ + int GetNodeCount() const; + + /** Return the node this attribute is set to. + * \param pIndex The index of the node to retrieve + * \return Pointer to the node, or \c NULL if the current attribute is not set to a node. + */ + FbxNode* GetNode(int pIndex=0) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void ConstructProperties(bool pForceSet); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_NODE_ATTRIBUTE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxnull.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxnull.h new file mode 100644 index 00000000..9eb91516 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxnull.h @@ -0,0 +1,119 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxnull.h +#ifndef _FBXSDK_SCENE_GEOMETRY_NULL_H_ +#define _FBXSDK_SCENE_GEOMETRY_NULL_H_ + +#include + +#include + +#include + +/** \brief This node attribute contains the properties of a null node. + * \nosubgrouping + */ +class FBXSDK_DLL FbxNull : public FbxNodeAttribute +{ + FBXSDK_OBJECT_DECLARE(FbxNull, FbxNodeAttribute); + +public: + //! Returns the EType::eNull node attribute type. + virtual FbxNodeAttribute::EType GetAttributeType() const; + + //! Resets the default values. + void Reset(); + + /** + * \name Null Node Properties + */ + //@{ + + /** \enum ELook Null node look types. + * - \e eNone + * - \e eCross + */ + enum ELook + { + eNone, + eCross, + }; + + /** Returns the default size value. + * \return The default size of this object (100). + */ + double GetSizeDefaultValue() const; + + //@} + + /** + * \name Property Names + */ + //@{ + static const char* sSize; + static const char* sLook; + //@} + + /** + * \name Property Default Values + */ + //@{ + static const FbxDouble sDefaultSize; + static const ELook sDefaultLook; + //@} + + + ////////////////////////////////////////////////////////////////////////// + // + // Properties + // + ////////////////////////////////////////////////////////////////////////// + + /** This property handles the null node size. + * + * To access this property do: Size.Get(). + * To set this property do: Size.Set(FbxDouble). + * + * The default value is 100. + */ + FbxPropertyT Size; + + /** This property handles the look of the null node. + * + * To access this property do: Look.Get(). + * To set this property do: Look.Set(ELook). + * + * The default value is true + */ + FbxPropertyT Look; + + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + +public: + virtual FbxStringList GetTypeFlags() const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +inline EFbxType FbxTypeOf(const FbxNull::ELook&){ return eFbxEnum; } + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_NULL_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxnurbs.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxnurbs.h new file mode 100644 index 00000000..ca2f9ba3 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxnurbs.h @@ -0,0 +1,259 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxnurbs.h +#ifndef _FBXSDK_SCENE_GEOMETRY_NURBS_H_ +#define _FBXSDK_SCENE_GEOMETRY_NURBS_H_ + +#include + +#include + +#include + +/** A NURBS surface is a type of parametric geometry. A NURBS surface is defined by the + order, form, knot vector and control points in the U and V coordinates. + + For more information on the meaning of form, knot vectors and control points, + see the FbxNurbsCurve documentation. The same rules apply for the NURBS curves + and NURBS surfaces, but NURBS surfaces have two dimensions (U and V). + + * \nosubgrouping + */ +class FBXSDK_DLL FbxNurbs : public FbxGeometry +{ + FBXSDK_OBJECT_DECLARE(FbxNurbs, FbxGeometry); + +public: + //! Returns the FbxNodeAttribute::EType::eNurbs node attribute type. + virtual FbxNodeAttribute::EType GetAttributeType() const; + + //! Resets the NURBS surface its default values. + void Reset(); + + /** + * \name NURBS surface properties + */ + //@{ + + /** Sets the surface mode. + * \param pMode Surface mode identifier (see class FbxGeometry) + */ + void SetSurfaceMode(FbxGeometry::ESurfaceMode pMode); + + /** Returns the surface mode. + * \return The surface mode identifier that is currently set. + */ + inline ESurfaceMode GetSurfaceMode() const {return mSurfaceMode;} + + /** NURBS types. + */ + enum EType + { + ePeriodic, //!< Periodic. + eClosed, //!< Closed. + eOpen //!< Open. + }; + + /** Allocates memory space for an array of control points as well as knot + * and multiplicity vectors. + * \param pUCount Number of U-dimension control points. + * \param pUType U-dimension NURBS type. + * \param pVCount Number of V-dimension control points. + * \param pVType V-dimension NURBS type. + * \remarks Always call this function after FbxNurbs::SetOrder(). + */ + void InitControlPoints(int pUCount, EType pUType, int pVCount, EType pVType); + + /** Returns the number of U-dimension control points. + * \return Number of U-dimension control points. + */ + inline int GetUCount() const {return mUCount;} + + /** Returns the number of V-dimension control points. + * \return Number of V-dimension control points. + */ + inline int GetVCount() const {return mVCount;} + + /** Returns the U-dimension NURBS type. + * \return NURBS type identifier. + */ + inline EType GetNurbsUType() const {return mUType;} + + /** Returns the V-dimension NURBS type. + * \return NURBS type identifier. + */ + inline EType GetNurbsVType() const {return mVType;} + + /** Returns the number of elements in the U-dimension knot vector. See FbxNurbsCurve for more information. + * \return The number of elements in the U-dimension knot vector. + */ + int GetUKnotCount() const; + + /** Returns the U-dimension knot vector. + * \return Pointer to the U-dimension knot vector. + */ + double* GetUKnotVector() const; + + /** Returns the number of elements in the V-dimension knot vector. See FbxNurbsCurve for more information. + * \return The number of elements in the V-dimension knot vector. + */ + int GetVKnotCount() const; + + /** Returns the V-dimension knot vector. + * \return Pointer to the V-dimension knot vector. + */ + double* GetVKnotVector() const; + + /** Returns multiplicity of U-dimension control points. + * \return Pointer to the array of multiplicity values. + * \remarks The length of this vector is equal to the U count. + * Its elements are set to 1 by default. + */ + int* GetUMultiplicityVector() const; + + /** Returns multiplicity of V-dimension control points. + * \return Pointer to the array of multiplicity values. + * \remarks The length of this vector is equal to the V count. + * Its elements are set to 1 by default. + */ + int* GetVMultiplicityVector() const; + + /** Sets the order of the NURBS surface. + * \param pUOrder NURBS order in U dimension. + * \param pVOrder NURBS order in V dimension. + */ + void SetOrder(FbxUInt pUOrder, FbxUInt pVOrder); + + /** Returns the NURBS order in U dimension. + * \return NURBS order in U dimension. + */ + inline int GetUOrder() const {return mUOrder;} + + /** Returns the NURBS order in V dimension. + * \return NURBS order in V dimension. + */ + inline int GetVOrder() const {return mVOrder;} + + /** Sets the NURBS step. + * The step value is the number of divisions between adjacent control points. + * \param pUStep Steps in U dimension. + * \param pVStep Steps in V dimension. + */ + void SetStep(int pUStep, int pVStep); + + /** Returns the number of divisions between adjacent control points in U dimension. + * \return Steps in U dimension. + */ + inline int GetUStep() const {return mUStep;} + + /** Returns the number of divisions between adjacent control points in V dimension. + * \return Steps in V dimension. + */ + inline int GetVStep() const {return mVStep;} + + /** Calculates the number of surface spans in the U dimension. + * See FbxNurbsCurve::GetSpanCount() for more information. + * \return The number of spans in the U dimension if the surface has been initialized. + * If the spans have not been initialized, returns -1. + */ + int GetUSpanCount() const; + + /** Calculates the number of surface spans in the V dimension. + * See FbxNurbsCurve::GetSpanCount() for more information. + * \return The number of spans in the V dimension if the surface has been initialized. + * If the spans have not been initialized, returns -1. + */ + int GetVSpanCount() const; + + //@} + + /** + * \name NURBS export flags + */ + //@{ + + /** Sets the flag that induces UV flipping at export. + * \param pFlag If \c true, UV flipping occurs. + */ + void SetApplyFlipUV(bool pFlag); + + /** Returns the flag that induces UV flipping at export. + * \return The current state of the UV flip flag. + */ + bool GetApplyFlipUV() const; + + /** Sets the flag that induces link flipping at export. + * \param pFlag If \c true, the links control points indices are flipped. + */ + void SetApplyFlipLinks(bool pFlag); + + /** Returns the flag that induces link flipping at export. + * \return The current state of the link flip flag. + */ + bool GetApplyFlipLinks() const; + + /** Returns flip flags state. + * \return \c True if we need to flip either the UV or the links. + */ + bool GetApplyFlip() const { return GetApplyFlipUV() || GetApplyFlipLinks(); } + + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + // Error identifiers, these are only used internally. + enum EErrorCode + { + eNurbsTypeUnknown, + eWrongNumberOfControlPoint, + eWeightTooSmall, + eUMultiplicityVectorError, + eVMultiplicityVectorError, + eUKnotVectorError, + eVKnotVectorError, + eErrorCount + }; + + virtual FbxObject& Copy(const FbxObject& pObject); + virtual void SetControlPointAt(const FbxVector4 &pCtrlPoint , int pIndex) { ParentClass::SetControlPointAt(pCtrlPoint, pIndex); } + virtual void InitControlPoints(int pCount) { ParentClass::InitControlPoints(pCount); } + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void Destruct(bool pRecursive); + + FbxUInt mUOrder, mVOrder; + int mUCount, mVCount; + int mUStep, mVStep; + EType mUType, mVType; + + double* mUKnotVector; + double* mVKnotVector; + + int* mUMultiplicityVector; + int* mVMultiplicityVector; + + ESurfaceMode mSurfaceMode; + + // Export flags. + bool mApplyFlipUV; + bool mApplyFlipLinks; + + friend class FbxGeometryConverter; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_NURBS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxnurbscurve.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxnurbscurve.h new file mode 100644 index 00000000..9ff3f0a3 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxnurbscurve.h @@ -0,0 +1,233 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxnurbscurve.h +#ifndef _FBXSDK_SCENE_GEOMETRY_NURBS_CURVE_H_ +#define _FBXSDK_SCENE_GEOMETRY_NURBS_CURVE_H_ + +#include + +#include +#include + +#include + +/** + A Non-Uniform Rational B-Spline (NURBS) curve is a type of parametric geometry. A NURBS + curve is defined by the order, form, knot vector and control points. + + Let M be the order of the curve. + Let N be the number of control points of the curve. + + The form of the curve can be open, closed or periodic. A curve with end points + that do not meet is defined as an open curve. The number of knots in an open curve + is defined as N+(M+1). + + A closed curve simply has its last control point equal to its first control point. + Note that this does not imply tangent continuity at the end point. The curve may + have a kink at this point. In FBX the last control point is not specified by the user + in the InitControlPoints() method. For example, if there are to be 10 control points in + total, and the curve is to be closed, than only 9 control points need to be passed + into the InitControlPoints() method. The last control point is implied to be equal + to the first control point. Thus N represents the number of unique CVs. + + A periodic curve has its last M control points equal to its first M control points. + A periodic curve is tangent continuous at the ends. Similar to a closed curve, + when creating a periodic curve, only the unique control points need to be set. For + example a periodic curve of order 3 with 10 control points requires only 7 CVs to + be specified in the InitControlPoints() method. The last 3 CVs, which are the same as + the first 3, are not included. + + The calculation of the number of knots in closed and periodic curves is more complex. + Since we have excluded one CV in N in a closed curve, the number of knots is N+(M+1)+1. + Similarly, we excluded M CVs in periodic curves so the number of knots is N+(M+1)+M. + + Note that FBX stores one extra knot at the beginning and and end of the knot vector, + compared to some other graphics applications such as Maya. The two knots are not + used in calculation, but they are included so that no data is lost when converting + from file formats that do store the extra knots. + + * \nosubgrouping + */ +class FBXSDK_DLL FbxNurbsCurve : public FbxGeometry +{ + FBXSDK_OBJECT_DECLARE(FbxNurbsCurve,FbxGeometry); + +public: + //! Returns the EType::eNurbsCurve node attribute type. + virtual FbxNodeAttribute::EType GetAttributeType() const; + + /** \enum EDimension The dimension of the CVs. + * - \e e2D The CVs are two dimensional points. + * - \e e3D The CVs are three dimensional points. + */ + enum EDimension + { + e2D = 2, + e3D + }; + + /** \enum EType The curve's form. + * - \e eOpen + * - \e eClosed + * - \e ePeriodic + */ + enum EType + { + eOpen, + eClosed, + ePeriodic + }; + + /** Allocates memory space for the control points array as well as for the knot + * vector. + * \param pCount Number of control points. + * \param pVType NURBS type. + * \remarks This function should always be called after FbxNurbsCurve::SetOrder(). + */ + void InitControlPoints( int pCount, EType pVType ); + + /** Returns the knot vector. + * \return Pointer to the knots array. + */ + inline double* GetKnotVector() const { return mKnotVector; } + + /** Returns the number of elements in the knot vector. + * \return The number of knots. + */ + int GetKnotCount() const; + + /** Sets the order of the curve. + * \param pOrder The curve order. + * \remarks The curve order must be set before InitControlPoints() is called. + */ + inline void SetOrder( int pOrder ) { mOrder = pOrder; } + + /** Returns the NURBS curve order. + * \return The NURBS curve order. + */ + inline int GetOrder() const { return mOrder; } + + /** Sets the step of the curve. + * \param pStep The curve step. + * \remarks To tessellate curve, it denotes the evaluation frequency between two neighbor knots. + */ + inline void SetStep( int pStep ) { mStep = pStep; } + + /** Returns the NURBS curve step. + * \return The NURBS curve step. + * \remarks To tessellate curve, it denotes the evaluation frequency between two neighbor knots. + */ + inline int GetStep() const { return mStep; } + + /** Sets the dimension of the CVs. + * For 3D curves: control point = ( x, y, z, w ), where w is the weight. + * For 2D curves: control point = ( x, y, 0, w ), where the z component is unused, and w is the weight. + * \param pDimension The control points dimension(3D or 2D). + */ + inline void SetDimension( EDimension pDimension ) { mDimension = pDimension; } + + /** Returns the control points dimension. + * \return The curve dimension. + */ + inline EDimension GetDimension() const { return mDimension; } + + /** Determines if the curve is rational or not. + * \return \c True if the curve is rational, return \c false if not. + */ + bool IsRational(); + + /** Calculates the number of curve spans with the following: + * Where + * S = Number of spans + * N = Number of CVs + * M = Order of the curve + * + * S = N - M + 1; + * + * In this calculation N includes the duplicate CVs for closed and periodic curves. + * + * \return The number of curve spans if the curve has been initialized, returns -1 if the curve has not been initialized. + */ + int GetSpanCount() const; + + /** Returns NURBS type. + * \return NURBS type identifier. + */ + inline EType GetType() const { return mNurbsType; } + + /** Checks if the curve is a poly line. (A poly line is a + * linear NURBS curve ) + * + * \return \c True if curve is a poly line, return \c false if it is not a poly line. + */ + inline bool IsPolyline() const { return ( GetOrder() == 2 ); } + + /** This function determines if this NURBS curve is a Bezier curve. + * Bezier curves are a special case of NURBS curve. + * \return \c True if curve is a Bezier curve. If it is not a Bezier curve return \c false. + */ + bool IsBezier() const; + + /** Evaluate the point on the curve. Save the result as a point array. Meanwhile, return the length of the point array. + * \param pPointArray Save the evaluate result as a point array. + * \param pStep The evaluation frequency between two neighbor knots. Its default value is 16, which is same as Maya. + * \return The length of the point array. + */ + int TessellateCurve(FbxArray& pPointArray, int pStep = 16); + + /** Evaluate the point on the curve. Per the evaluation result, create a FbxLine and return the pointer to the line. + * \param pStep The evaluation frequency between two neighbor knots. Its default value is 16, which is same as Maya. + * \return A line to hold the tessellate points. + */ + FbxLine* TessellateCurve(int pStep = 16); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + + bool FullMultiplicity() const; + + // Error identifiers, these are only used internally. + enum EErrorCode + { + eNurbsCurveTypeUnknown, + eWeightTooSmall, + eKnotVectorError, + eWrongNumberOfControlPoint, + eErrorCount + }; + + bool mIsRational; + + virtual void SetControlPointAt(const FbxVector4 &pCtrlPoint , int pIndex) { ParentClass::SetControlPointAt(pCtrlPoint, pIndex); } + virtual void InitControlPoints(int pCount) { ParentClass::InitControlPoints(pCount); } + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void Destruct(bool pRecursive); + + void Reset(); + +private: + double* mKnotVector; + EType mNurbsType; + int mOrder; + EDimension mDimension; + int mStep; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_NURBS_CURVE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxnurbssurface.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxnurbssurface.h new file mode 100644 index 00000000..1d462cd7 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxnurbssurface.h @@ -0,0 +1,282 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxnurbssurface.h +#ifndef _FBXSDK_SCENE_GEOMETRY_NURBS_SURFACE_H_ +#define _FBXSDK_SCENE_GEOMETRY_NURBS_SURFACE_H_ + +#include + +#include + +#include + +class FbxNode; + +/** A NURBS surface is a type of parametric geometry. A NURBS surface is defined by the + order, form, knot vector and control points in the U and V directions. + + For more information on the meaning of the form, knot vector and control points, + see the documentation for the FbxNurbsCurve. The same concepts for NURBS curves + apply to NURBS surfaces. NURBS surfaces simply have two dimensions (U and V). + + * \nosubgrouping + */ +class FBXSDK_DLL FbxNurbsSurface : public FbxGeometry +{ + FBXSDK_OBJECT_DECLARE(FbxNurbsSurface, FbxGeometry); + +public: + //! Returns the FbxNodeAttribute::EType::eNurbsSurface node attribute type. + virtual FbxNodeAttribute::EType GetAttributeType() const; + + //! Resets the NURBS surface its default values. + void Reset(); + + /** + * \name NURBS surface Properties + */ + //@{ + + /** Sets the surface mode. + * \param pMode Surface mode identifier (see class FbxGeometry). + */ + void SetSurfaceMode(FbxGeometry::ESurfaceMode pMode); + + /** Returns the surface mode. + * \return The surface mode identifier that is currently set. + */ + inline ESurfaceMode GetSurfaceMode() const {return mSurfaceMode;} + + /** \enum EType NURBS types. + * - \e ePeriodic + * - \e eClosed + * - \e eOpen + */ + enum EType + { + ePeriodic, + eClosed, + eOpen + }; + + /** Allocates memory space for an array of control points as well as knot + * and multiplicity vectors. + * \param pUCount Number of U-dimension control points. + * \param pUType U-dimension NURBS type. + * \param pVCount Number of V-dimension control points. + * \param pVType V-dimension NURBS type. + * \remarks Always call this function after FbxNurbsSurface::SetOrder(). + */ + void InitControlPoints(int pUCount, EType pUType, int pVCount, EType pVType); + + /** Returns the number of U-dimension control points. + * \return Number of U-dimension control points. + */ + inline int GetUCount() const {return mUCount;} + + /** Returns the number of V-dimension control points. + * \return Number of V-dimension control points. + */ + inline int GetVCount() const {return mVCount;} + + /** Returns the U-dimension NURBS type. + * \return NURBS type identifier. + */ + inline EType GetNurbsUType() const {return mUType;} + + /** Returns the V-dimension NURBS type. + * \return NURBS type identifier. + */ + inline EType GetNurbsVType() const {return mVType;} + + /** Returns the number of elements in the U-dimension knot vector. See FbxNurbsCurve for more information. + * \return The number of elements in the U-dimension knot vector. + */ + int GetUKnotCount() const; + + /** Returns the U-dimension knot vector. + * \return Pointer to the U-dimension knot vector. + */ + double* GetUKnotVector() const; + + /** Returns the number of elements in the V-dimension knot vector. See FbxNurbsCurve for more information. + * \return The number of elements in the V-dimension knot vector. + */ + int GetVKnotCount() const; + + /** Returns the V-dimension knot vector. + * \return Pointer to the V-dimension knot vector. + */ + double* GetVKnotVector() const; + + /** Sets the order of the NURBS surface. + * \param pUOrder NURBS order in U dimension. + * \param pVOrder NURBS order in V dimension. + */ + void SetOrder(FbxUInt pUOrder, FbxUInt pVOrder); + + /** Returns the NURBS order in U dimension. + * \return NURBS order in U dimension. + */ + inline int GetUOrder() const {return mUOrder;} + + /** Returns the NURBS order in V dimension. + * \return NURBS order in V dimension. + */ + inline int GetVOrder() const {return mVOrder;} + + /** Sets the NURBS step. + * The step value is the number of divisions between adjacent control points. + * \param pUStep Steps in U dimension. + * \param pVStep Steps in V dimension. + */ + void SetStep(int pUStep, int pVStep); + + /** Returns the number of divisions between adjacent control points in U dimension. + * \return Steps in U dimension. + */ + inline int GetUStep() const {return mUStep;} + + /** Returns the number of divisions between adjacent control points in V dimension. + * \return Steps in V dimension. + */ + inline int GetVStep() const {return mVStep;} + + /** Calculates the number of surface spans in the U dimension. + * See FbxNurbsCurve::GetSpanCount() for more information. + * \return The number of spans in the U dimension if the surface has been initialized. + * If the spans have not been initialized, returns -1. + */ + int GetUSpanCount() const; + + /** Calculates the number of surface spans in the V dimension. + * See FbxNurbsCurve::GetSpanCount() for more information. + * \return The number of spans in the V dimension if the surface has been initialized. + * If the spans have not been initialized, returns -1. + */ + int GetVSpanCount() const; + + //@} + + /** + * \name NURBS surface Export Flags + */ + //@{ + + /** Sets the flag that induces UV flipping at export. + * \param pFlag If \c true, UV flipping occurs. + */ + void SetApplyFlipUV(bool pFlag); + + /** Returns the flag that induces UV flipping at export. + * \return The current state of the UV flip flag. + */ + bool GetApplyFlipUV() const; + + /** Sets the flag that induces link flipping at export. + * \param pFlag If \c true, the links control points indices are flipped. + */ + void SetApplyFlipLinks(bool pFlag); + + /** Returns the flag that induces link flipping at export. + * \return The current state of the link flip flag. + */ + bool GetApplyFlipLinks() const; + + /** Returns flip flags state. + * \return \c True if we need to flip either the UV or the links. + */ + bool GetApplyFlip() const { return GetApplyFlipUV() || GetApplyFlipLinks(); } + + /** Adds a curve to the NURBS surface. + * Adds a 2D, parametric space curve to this surface + * \param pCurve The curve to be added to the surface. + */ + void AddCurveOnSurface( FbxNode* pCurve ); + + /** Retrieves a curve from this surface + * \param pIndex Index of the curve to retrieve (Valid range is 0 to GetCurveOnSurfaceCount() - 1). + * \return The curve at the specified index, or returns NULL if pIndex is out of range. + */ + FbxNode* GetCurveOnSurface( int pIndex ); + + /** Retrieves a curve from this surface + * \param pIndex Index of the curve to retrieve (Valid range is 0 to GetCurveOnSurfaceCount() - 1). + * \return The curve at the specified index, or returns NULL if pIndex is out of range. + */ + const FbxNode* GetCurveOnSurface( int pIndex ) const; + + /** Returns the number of curves on this surface. + * \return The number of curves on this surface. + */ + int GetCurveOnSurfaceCount() const; + + /** Removes a curve from this surface. + * \param pCurve The curve to be removed. + * \return \c True if the curve is removed successfully, if unsuccessful, returns \c false. + */ + bool RemoveCurveOnSurface( FbxNode* pCurve ); + + //@} + + /** Checks if the surface has all rational control points. + * \return \c True if rational, \c false otherwise + */ + bool IsRational() const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + // Error identifiers, these are only used internally. + enum EErrorCode + { + eNurbsTypeUnknown, + eWrongNumberOfControlPoint, + eWeightTooSmall, + eUKnotVectorError, + eVKnotVectorError, + eErrorCount + }; + + virtual FbxObject& Copy(const FbxObject& pObject); + virtual void InitControlPoints(int pCount) { ParentClass::InitControlPoints(pCount); } + + void SetFlipNormals(bool pFlipNormals); + bool GetFlipNormals() const; + bool IsValidKnots() const; + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void Destruct(bool pRecursive); + + FbxUInt mUOrder, mVOrder; + int mUCount, mVCount; + int mUStep, mVStep; + EType mUType, mVType; + + double* mUKnotVector; + double* mVKnotVector; + + ESurfaceMode mSurfaceMode; + + bool mApplyFlipUV; + bool mApplyFlipLinks; + bool mFlipNormals; + + friend class FbxGeometryConverter; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_NURBS_SURFACE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxopticalreference.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxopticalreference.h new file mode 100644 index 00000000..780363d1 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxopticalreference.h @@ -0,0 +1,45 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxopticalreference.h +#ifndef _FBXSDK_SCENE_GEOMETRY_OPTICAL_REFERENCE_H_ +#define _FBXSDK_SCENE_GEOMETRY_OPTICAL_REFERENCE_H_ + +#include + +#include + +#include + +/** \brief This node attribute contains the properties of an optical reference. + * \nosubgrouping + * Mainly used for optical motion capture systems. + */ +class FBXSDK_DLL FbxOpticalReference : public FbxNodeAttribute +{ + FBXSDK_OBJECT_DECLARE(FbxOpticalReference,FbxNodeAttribute); + +public: + //! Return the type of node attribute which is FbxNodeAttribute::EType::eOpticalReference. + virtual FbxNodeAttribute::EType GetAttributeType() const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual FbxStringList GetTypeFlags() const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_OPTICAL_REFERENCE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxpatch.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxpatch.h new file mode 100644 index 00000000..9a15907d --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxpatch.h @@ -0,0 +1,211 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxpatch.h +#ifndef _FBXSDK_SCENE_GEOMETRY_PATCH_H_ +#define _FBXSDK_SCENE_GEOMETRY_PATCH_H_ + +#include + +#include + +#include + +/** A patch is a type of node attribute with parametric surface. + * A patch object is useful for creating gently curved surfaces, and provides very detailed control for manipulating complex geometry. + * \nosubgrouping + */ +class FBXSDK_DLL FbxPatch : public FbxGeometry +{ + FBXSDK_OBJECT_DECLARE(FbxPatch,FbxGeometry); + +public: + //! Returns the FbxNodeAttribute::EType::ePatch node attribute type. + virtual FbxNodeAttribute::EType GetAttributeType() const; + + //! Resets the patch to its default values. + void Reset(); + + /** + * \name Patch Properties + */ + //@{ + + /** Sets the surface mode. + * \param pMode Surface mode identifier (see Class FbxGeometry). + */ + void SetSurfaceMode(FbxGeometry::ESurfaceMode pMode); + + /** Returns the surface mode. + * \return The current surface mode identifier. + */ + inline FbxGeometry::ESurfaceMode GetSurfaceMode() const {return mSurfaceMode;} + + /** \enum EType Patch types. + * - \e eBezier + * - \e eBezierQuadric + * - \e eCardinal + * - \e eBSpline + * - \e eLinear + */ + enum EType + { + eBezier, + eBezierQuadric, + eCardinal, + eBSpline, + eLinear + }; + + /** Allocates memory space for the control points array. + * \param pUCount Number of U-dimension control points. + * \param pUType U-dimension patch type. + * \param pVCount Number of V-dimension control points. + * \param pVType V-dimension patch type. + */ + void InitControlPoints(int pUCount, EType pUType, int pVCount, EType pVType); + + /** Returns the number of control points in the U-dimension. + * \return The number of control points in the U-dimension. + */ + inline int GetUCount() const {return mUCount;} + + /** Returns the number of control points in the V-dimension. + * \return The number of control points in the V-dimension. + */ + inline int GetVCount() const {return mVCount;} + + /** Returns the U-dimension patch type. + * \return Patch type identifier in the U-dimension. + */ + inline EType GetPatchUType() const {return mUType;} + + /** Returns the V-dimension patch type. + * \return Patch type identifier in the V-dimension. + */ + inline EType GetPatchVType () const {return mVType;} + + /** Sets the patch step. + * The step is the number of divisions between adjacent control points. + * \param pUStep Steps in U-dimension. + * \param pVStep Steps in V-dimension. + */ + void SetStep(int pUStep, int pVStep); + + /** Returns the number of divisions between adjacent control points in the U-dimension. + * \return Step value in the U-dimension. + */ + inline int GetUStep() const {return mUStep;} + + /** Returns the number of divisions between adjacent control points in the V-dimension. + * \return Step value in the V-dimension. + */ + inline int GetVStep() const {return mVStep;} + + /** Sets closed flags. + * \param pU Set to \c true if the patch is closed in U dimension. + * \param pV Set to \c true if the patch is closed in V dimension. + */ + void SetClosed(bool pU, bool pV); + + /** Returns state of the U closed flag. + * \return \c True if the patch is closed in U dimension. + */ + inline bool GetUClosed() const {return mUClosed;} + + /** Returns state of the V closed flag. + * \return \c True if the patch is closed in V dimension. + */ + inline bool GetVClosed() const {return mVClosed;} + + /** Sets U-capped flags. + * \param pUBottom Set to \c true if the patch is capped at the bottom in the U-dimension. + * \param pUTop \c Set to \c true if the patch is capped on the top in the U-dimension. + * \remarks Capping options are saved but not loaded by Motionbuilder because they + * are computed from the patch topography. + */ + void SetUCapped(bool pUBottom, bool pUTop); + + /** Returns state of the bottom U-capped flag. + * \return \c True if the patch is capped at the bottom in the U-dimension. + */ + inline bool GetUCappedBottom() const {return mUCappedBottom;} + + /** Returns state of the top U-capped flag. + * \return \c True if the patch is capped on the top in the U-dimension. + */ + inline bool GetUCappedTop() const {return mUCappedTop;} + + /** Sets V-capped flags. + * \param pVBottom Sets to \c true if the patch is capped at the bottom in the V-dimension. + * \param pVTop Sets to \c true if the patch is capped on the top in the V-dimension. + * \remarks Capping options are saved but not loaded by Motionbuilder because they + * are computed from the patch topography. + */ + void SetVCapped(bool pVBottom, bool pVTop); + + /** Returns state of the bottom V-capped flag. + * \return \c True if the patch is capped at the bottom. + */ + inline bool GetVCappedBottom() const {return mVCappedBottom;} + + /** Returns state of the top V-capped flag. + * \return \c True if the patch is capped on the top. + */ + inline bool GetVCappedTop() const {return mVCappedTop;} + + //@} + + /** + * \name Off-loading Serialization section + */ + //@{ + /** Writes the content of the patch to the given stream. + * \param pStream The destination stream. + * \return \c True if the content is successfully processed by the receiving stream. + * If it is not successful, returns \c false. + */ + virtual bool ContentWriteTo(FbxStream& pStream) const; + + /** Reads the content of the patch from the given stream. + * \param pStream The source stream. + * \return \c True if the patch completes with the data received from the stream successfully. + * If it is not successful, returns \c false. + */ + virtual bool ContentReadFrom(const FbxStream& pStream); + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + virtual void InitControlPoints(int pCount) { ParentClass::InitControlPoints(pCount); } + virtual void SetControlPointAt(const FbxVector4 &pCtrlPoint , int pIndex) { ParentClass::SetControlPointAt(pCtrlPoint, pIndex); } + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void Destruct(bool pRecursive); + + EType mUType, mVType; + int mUCount, mVCount; + int mUStep, mVStep; + bool mUClosed, mVClosed; + bool mUCappedBottom, mUCappedTop; + bool mVCappedBottom, mVCappedTop; + + FbxGeometry::ESurfaceMode mSurfaceMode; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_PATCH_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxproceduralgeometry.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxproceduralgeometry.h new file mode 100644 index 00000000..dc41bbc1 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxproceduralgeometry.h @@ -0,0 +1,34 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxproceduralgeometry.h +#ifndef _FBXSDK_SCENE_GEOMETRY_PROCEDURAL_H_ +#define _FBXSDK_SCENE_GEOMETRY_PROCEDURAL_H_ + +#include + +#include + +#include + +/** Base class for procedural geometry. In a standard geometry (FbxGeometry, FbxGeometryBase), control points, + * normals, possibly polygons (FbxMesh) and other specifications are described. A procedural geometry contains minimal information + * to be created on-the-fly. + * \nosubgrouping + */ +class FBXSDK_DLL FbxProceduralGeometry : public FbxGeometry +{ + FBXSDK_OBJECT_DECLARE(FbxProceduralGeometry, FbxGeometry); +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_PROCEDURAL_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxshape.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxshape.h new file mode 100644 index 00000000..c338d268 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxshape.h @@ -0,0 +1,107 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxshape.h +#ifndef _FBXSDK_SCENE_GEOMETRY_SHAPE_H_ +#define _FBXSDK_SCENE_GEOMETRY_SHAPE_H_ + +#include + +#include + +#include + +class FbxBlendShapeChannel; +class FbxGeometry; + +/** A shape describes the deformation on a set of control points, which is similar to the cluster deformer in Maya. + * For example, we can add a shape to a created geometry. And the shape and the geometry have the same + * topological information but different position of the control points. + * With varying amounts of influence, the geometry performs a deformation effect. + * \nosubgrouping + * \see FbxGeometry + */ +class FBXSDK_DLL FbxShape : public FbxGeometryBase +{ + FBXSDK_OBJECT_DECLARE(FbxShape, FbxGeometryBase); + +public: + /** Set the blend shape channel that contains this target shape. + * \param pBlendShapeChannel Pointer to the blend shape channel to set. + * \return \c true on success, \c false otherwise. + */ + bool SetBlendShapeChannel(FbxBlendShapeChannel* pBlendShapeChannel); + + /** Get the blend shape channel that contains this target shape. + * \return a pointer to the blend shape channel if set or NULL. + */ + FbxBlendShapeChannel* GetBlendShapeChannel() const; + + /** Get the base geometry of this target shape. + * \return a pointer to the base geometry if set or NULL. + * \remarks Since target shape can only connected to its base geometry through + * blend shape channel and blend shape deformer. + * So only when this target shape is connected to a blend shape channel, + * and the blend shape channel is connected to a blend shape deformer, + * and the blend shape deformer is used on a base geometry, then to get + * base geometry will success. + */ + FbxGeometry* GetBaseGeometry(); + + /** Get the length of the arrays of control point indices and weights. + * \return Length of the arrays of control point indices and weights. + * Returns 0 if no control point indices have been added or the arrays have been reset. + */ + int GetControlPointIndicesCount() const; + + /** Get the array of control point indices. + * \return Pointer to the array of control point indices. + * \c NULL if no control point indices have been added or the array has been reset. + */ + int* GetControlPointIndices() const; + + + /** Set the array size for the control point indices + * \param pCount The new count. + */ + void SetControlPointIndicesCount(int pCount); + + /** Add a control point index to the control point indices array + * \param pIndex The control point index to add. + */ + void AddControlPointIndex(int pIndex); + + /** Restore the shape to its initial state. + * Calling this function will clear the following: + * \li Pointer to blend shape channel. + * \li Control point indices. + */ + void Reset(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual void Compact(); + virtual FbxObject& Copy(const FbxObject& pObject); + virtual FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const; + +protected: + virtual FbxNodeAttribute::EType GetAttributeType() const; + virtual FbxStringList GetTypeFlags() const; + + FbxArray mControlPointIndices; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_SHAPE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxskeleton.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxskeleton.h new file mode 100644 index 00000000..175da58d --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxskeleton.h @@ -0,0 +1,200 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxskeleton.h +#ifndef _FBXSDK_SCENE_GEOMETRY_SKELETON_H_ +#define _FBXSDK_SCENE_GEOMETRY_SKELETON_H_ + +#include + +#include + +#include + +/** This class specializes a node attribute to represent the elements forming "bone" + * chains. The FbxSkeleton name of the class comes from the analogy with the human body + * skeletal structure. In fact, an object of this type is nothing more than a transform + * node with special properties that are useful for its graphical representation and during + * IK/FK and skin deformation computations. Typically, a scene will contain chains of FbxSkeleton + * node attributes that, together, form a skeleton segment. For instance, the representation of the + * leg of a character can be achieved using one parent node with the attribute eRoot, followed by + * one child (femur) of type eLimb, this child having a child also (tibia) of the same type. Finally, + * terminated with a last node attribute of type eEffector (ankle). + * + * \nosubgrouping + */ +class FBXSDK_DLL FbxSkeleton : public FbxNodeAttribute +{ + FBXSDK_OBJECT_DECLARE(FbxSkeleton,FbxNodeAttribute); + +public: + //! Return the type of node attribute (i.e: FbxNodeAttribute::EType::eSkeleton). + virtual FbxNodeAttribute::EType GetAttributeType() const; + + //! Reset the skeleton to default values and type to \c eRoot. + void Reset(); + + /** + * \name Skeleton Properties + */ + //@{ + + /** \enum EType Skeleton types. + * \remarks \e eEffector is synonymous to \e eRoot. + * \remarks The \e eLimbNode type is a bone defined uniquely by a transform and a size value while + * \remarks the \e eLimb type is a bone defined by a transform and a length. + */ + enum EType + { + eRoot, /*!< First element of a chain. */ + eLimb, /*!< Chain element. */ + eLimbNode, /*!< Chain element. */ + eEffector /*!< Last element of a chain. */ + }; + + /** Set the skeleton type. + * \param pSkeletonType Skeleton type identifier. + */ + void SetSkeletonType(EType pSkeletonType); + + /** Get the skeleton type. + * \return Skeleton type identifier. + */ + EType GetSkeletonType() const; + + /** Get a flag to know if the skeleton type was set. + * \return \c true if a call to SetSkeletonType() has been made. + * \remarks When the attribute is not set, the application can choose to ignore the attribute or use the default value. + * \remarks The flag is set back to \c false when Reset() is called. + */ + bool GetSkeletonTypeIsSet() const; + + /** Get the default value for the skeleton type. + * \return \c eRoot + */ + EType GetSkeletonTypeDefaultValue() const; + + /** Get the default value for the limb length. + * \return 1.0 + */ + double GetLimbLengthDefaultValue() const; + + /** Get the default value for the limb node size. + * \return 100.0 + */ + double GetLimbNodeSizeDefaultValue() const; + + /** Set limb or limb node color. + * \param pColor RGB values for the limb color. + * \return \c true if skeleton type is \c eLimb or \c eLimbNode, \c false otherwise. + * \remarks Limb or limb node color is only set if skeleton type is \c eLimb or \c eLimbNode. + */ + bool SetLimbNodeColor(const FbxColor& pColor); + + /** Get limb or limb node color. + * \return Currently set limb color. + * \remarks Limb or limb node color is only valid if skeleton type is \c eLimb or \c eLimbNode. + */ + FbxColor GetLimbNodeColor() const; + + /** Get a flag to know if the limb node color was set. + * \return \c true if a call to SetLimbNodeColor() has been made. + * \remarks When the attribute is not set, the application can choose to ignore the attribute or use the default value. + * \remarks The flag is set back to \c false when Reset() is called. + */ + bool GetLimbNodeColorIsSet() const; + + /** Get the default value for the limb node color. + * \return R=0.8, G=0.8, B=0.8 + */ + FbxColor GetLimbNodeColorDefaultValue() const; + + /** To see if this skeleton is Root. + * \return \c true if this is root of the skeleton, \c false otherwise. + * \remarks if a skeleton node do not have a parent or its parent is not a skeleton node itself, then this + * skeleton is root in the hierarchy. + */ + bool IsSkeletonRoot() const; + + //@} + + + /** + * \name Property Names + */ + static const char* sSize; + static const char* sLimbLength; + + /** + * \name Property Default Values + */ + //@{ + static const FbxDouble sDefaultSize; + static const FbxDouble sDefaultLimbLength; + + + ////////////////////////////////////////////////////////////////////////// + // + // Properties + // + ////////////////////////////////////////////////////////////////////////// + + /** This property handles the limb node size. + * + * To access this property do: Size.Get(). + * To set this property do: Size.Set(FbxDouble). + * + * Default value is 100.0 + */ + FbxPropertyT Size; + + /** This property handles the skeleton limb length. + * + * To access this property do: LimbLength.Get(). + * To set this property do: LimbLength.Set(FbxDouble). + * + * FbxSkeleton is a node attribute and it will be attached to a FbxNode which represents the transform. + * Given a chain of skeleton nodes the parent and child skeletons will be attached to a parent node and a child node. + * The orientation of the limb is computed from the vector between the parent and child position (from parent to child). + * The LimbLength represents the proportion + * of the parent node's position to the child node's position which is used to compute the actual limb length. + * The default value of 1.0 means the LimbLength is equal to the length between the parent and child node's position. + * So if the value is 0.5, it means the LimbLength will be half of the length between the parent and child node's position. + */ + FbxPropertyT LimbLength; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + + void Reset( bool pResetProperties ); + + virtual const char* GetTypeName() const; + virtual FbxStringList GetTypeFlags() const; + + EType mSkeletonType; + + bool mLimbLengthIsSet; + bool mLimbNodeSizeIsSet; + bool mLimbNodeColorIsSet; + bool mSkeletonTypeIsSet; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_SKELETON_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxskin.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxskin.h new file mode 100644 index 00000000..6eed4202 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxskin.h @@ -0,0 +1,192 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxskin.h +#ifndef _FBXSDK_SCENE_GEOMETRY_SKIN_H_ +#define _FBXSDK_SCENE_GEOMETRY_SKIN_H_ + +#include + +#include + +#include + +class FbxCluster; +class FbxGeometry; + +/** Skin deformer class. + * + * A skin deformer contains clusters (FbxCluster). Each cluster acts on a subset of the geometry's + * control points, with different weights. For example, a mesh of humanoid shape + * can have a skin attached, that describes the way the humanoid mesh is deformed + * by bones. When the bones are animated, the clusters act on the geometry to + * animate it too. + * + * The corresponding deformer types are FbxDeformer::eSkin. + * \nosubgrouping + */ + +class FBXSDK_DLL FbxSkin : public FbxDeformer +{ + FBXSDK_OBJECT_DECLARE(FbxSkin, FbxDeformer); + +public: + /** Set deformation accuracy. + * \remarks Use the Accuracy option to set the accuracy of skin deformations. + * 100% is full accuracy and 1% is a rough estimation of the envelope deformation. + * \param pDeformAccuracy value for deformation accuracy. + */ + void SetDeformAccuracy(double pDeformAccuracy); + + /** Get deformation accuracy. + * \return deformation accuracy value. + */ + double GetDeformAccuracy() const; + + /** Set the geometry affected by this skin deformer. + * \param pGeometry Pointer to the geometry object to set. + * \return \c true on success, \c false otherwise. + */ + bool SetGeometry(FbxGeometry* pGeometry); + + /** Get the geometry affected by this skin deformer. + * \return a pointer to the geometry if set or NULL. + */ + FbxGeometry* GetGeometry(); + + /** Add a cluster. + * \param pCluster Pointer to the cluster object to add. + * \return \c true on success, \c false otherwise. + */ + bool AddCluster(FbxCluster* pCluster); + + /** Remove cluster at given index. + * \param pCluster Pointer to the cluster to remove from this skin deformer. + * \return Pointer to cluster or \c NULL if pCluster is not owned by this skin deformer. + */ + FbxCluster* RemoveCluster(FbxCluster* pCluster); + + /** Get the number of clusters. + * \return Number of clusters that have been added to this object. + */ + int GetClusterCount() const; + + /** Get cluster at given index. + * \param pIndex Index of cluster. + * \return Pointer to cluster or \c NULL if index is out of range. + */ + FbxCluster* GetCluster(int pIndex); + + /** Get cluster at given index. + * \param pIndex Index of cluster. + * \return Pointer to cluster or \c NULL if index is out of range. + */ + const FbxCluster* GetCluster(int pIndex) const; + + /** Get the type of the deformer. + * \return Deformer type identifier. + */ + EDeformerType GetDeformerType() const {return eSkin; }; + + /** \enum EType Skinning type. + * The skinning type decides which method will be used to do the skinning. + * - \e eRigid Type eRigid means rigid skinning, which means only one joint can influence each control point. + * - \e eLinear Type eLinear means the classic linear smooth skinning. + * - \e eDualQuaternion Type eDualQuaternion means the dual quaternion smooth skinning. + * - \e eBlend Type eBlend means to blend classic linear and dual quaternion smooth skinning according to blend weights. + */ + enum EType + { + eRigid, + eLinear, + eDualQuaternion, + eBlend + }; + + /** Set the skinning type. + * \param pType The skinning type. + */ + void SetSkinningType(EType pType); + + /** Get the skinning type. + * \return The skinning type. + */ + EType GetSkinningType() const; + + /** + * \name Control Points + * A skin has an array of indices to control points and associated blend weights. + * The indices refer to the control points in the instance of class FbxGeometry. + * The blend weights are the influence of the different skinning type over the + * deformation effect of the indexed control points. + */ + //@{ + + /** Add an element in both arrays of control point indices and blendWeights. + * \param pIndex The index of the control point. + * \param pBlendWeight The blend weight for this control point. The value should between 0 and 1. + * Any value that is less than 0 will be set to 0, any value that is greater than 1 will be set to 1. + * 0 means completely linear skinning, 1 means completely dual quaternion skinning, + * a value between 0 and 1 means the weighted blending of the above two skinning methods. + */ + void AddControlPointIndex(int pIndex, double pBlendWeight = 0); + + /** Get the length of the arrays of control point indices and blend weights. + * \return Length of the arrays of control point indices and blend weights. + * Returns 0 if no control point indices have been added or the arrays have been reset. + */ + int GetControlPointIndicesCount() const; + + /** Get the array of control point indices. + * \return Pointer to the array of control point indices. + * \c NULL if no control point indices have been added or the array has been reset. + */ + int* GetControlPointIndices() const; + + /** Get the array of control point blend weights. + * \return Pointer to the array of control point blend weights. + * \c NULL if no control point indices have been added or the array has been reset. + */ + double* GetControlPointBlendWeights() const; + + /** Set the array size for the three arrays: the array of control point indices, the array of weights + * and the array of blend weights. + * \param pCount The new count. + */ + void SetControlPointIWCount(int pCount); + + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual void Compact(); + virtual FbxObject& Copy(const FbxObject& pObject); + virtual FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const; + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual FbxStringList GetTypeFlags() const; + + // Skin deformer + double mDeformAccuracy; + EType mSkinningType; + + //Control points + FbxArray mControlPointIndices; + FbxArray mControlPointBlendWeights; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_SKIN_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxsubdeformer.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxsubdeformer.h new file mode 100644 index 00000000..53c7876f --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxsubdeformer.h @@ -0,0 +1,100 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxsubdeformer.h +#ifndef _FBXSDK_SCENE_GEOMETRY_SUB_DEFORMER_H_ +#define _FBXSDK_SCENE_GEOMETRY_SUB_DEFORMER_H_ + +#include + +#include + +#include + +/** Base class for cluster sub-deformer( FbxCluster) and blend shape channel sub-deformer( FbxBlendShapeChannel) + * + * The corresponding sub-deformer types are FbxSubDeformer::eCluster and FbxSubDeformer::eBlendShapeChannel. + * + * A cluster, or link, is an entity acting on a geometry (FbxGeometry). + * More precisely, the cluster acts on a subset of the geometry's control points. + * For each control point that the cluster acts on, the intensity of the cluster's + * action is modulated by a weight. The link mode (ELinkMode) specifies how + * the weights are taken into account. + * The cluster's link node specifies the node (FbxNode) that influences the + * control points of the cluster. If the node is animated, the control points + * will move accordingly. + * A cluster is usually part of a skin (see FbxDeformer, FbxSkin). For example, + * imagine a mesh representing a humanoid, and imagine a skeleton made of bones. + * Each bone is represented by a node in FBX. + * To bind the geometry to the nodes, + * we create a skin (FbxSkin). The skin has many clusters, each one corresponding + * to a bone. + * Each node influences some control + * points of the mesh. A node has a high influence on some of the points (high weight) + * and lower influence on some other points (low weight). Some points of the mesh + * are not affected at all by the bone, so they would not be part of the corresponding + * cluster. + * + * A blend shape channel is a sub-deformer to help blend shape deformer to organize the target shapes. + * One blend shape deformer can have multiple blend shape channels in parallel, and each of them can + * control one or multiple target shapes. If there are multiple target shapes connected to one channel, + * and each target shape could have its own full deformation percentage, for example, one channel could have 3 target shapes, + * whose full deform percentage are 30, to 80 to 100, then when the percent change from 0 to 100, the base geometry will + * deform from the first target shape to the last one, this is called In-Between blend-shapes. + * The blend shape channel also control the deform percent of each target shape or In-Between blend shape on it. + * \nosubgrouping + */ +class FBXSDK_DLL FbxSubDeformer : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxSubDeformer, FbxObject); + public: + + /** Set multi layer state flag. + * \param pMultiLayer If \c true, multi-layering is enabled. + */ + void SetMultiLayer(bool pMultiLayer); + + /** Get multilayer state. + * \return The state of the multi-layer flag. + */ + bool GetMultiLayer() const; + + + /** \enum EType Sub-deformer type + */ + enum EType + { + eUnknown, //!< Untyped sub-deformer + eCluster, //!< Type FbxCluster + eBlendShapeChannel //!< Type FbxBlendShapeChannel + }; + + /** Get the type of the sub-deformer. + * \return SubDeformer type identifier. + */ + virtual EType GetSubDeformerType() const { return eUnknown; } + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void Construct(const FbxObject* pFrom); + virtual FbxStringList GetTypeFlags() const { return FbxStringList(); } + + // Local + bool mMultiLayer; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_SUB_DEFORMER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxsubdiv.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxsubdiv.h new file mode 100644 index 00000000..fdf31af5 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxsubdiv.h @@ -0,0 +1,147 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxsubdiv.h +#ifndef _FBXSDK_SCENE_GEOMETRY_SUB_DIV_H_ +#define _FBXSDK_SCENE_GEOMETRY_SUB_DIV_H_ + +#include + +#include +#include + +#include + +class FbxMesh; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + +class FBXSDK_DLL FbxSubDiv : public FbxGeometry +{ + FBXSDK_OBJECT_DECLARE(FbxSubDiv, FbxGeometry); + +public: + enum EScheme + { + eCatmullClark, //Catmull CClark subdivision surface + eDooCSabin, //Doo CSabin subdivision surface + eLoop, //Loop subdivision surface + eLinear, //Linear subdivision surface + }; + + enum ETesselationPattern + { + eOddFractional, + eEvenFractional, + eInteger, + ePower2, //Max, Maya use this one + }; + + enum EDisplaySmoothness + { + eHull, + eRough, + eMedium, + eFine, + }; + + /** InitSubdivLevel Initialize the subdiv + * \param pLevelCount number of levels + * \param pScheme subdivision scheme + * \param pPattern Tessellation pattern + */ + void InitSubdivLevel(int pLevelCount, + EScheme pScheme = eCatmullClark, + ETesselationPattern pPattern = ePower2); + + virtual FbxNodeAttribute::EType GetAttributeType() const; + + + //max subdivision level number + static const int MAX_SUBDIV_LEVEL = 16; + + //subdiv levels in subdivision, including the base mesh and each subdiv levels + FbxArray mSubDivLevel; + + //Get the base mesh + FbxMesh* GetBaseMesh() const; + + //Get the mesh from finest level + FbxMesh* GetFinestMesh() const; + + //Set the finest mesh + bool SetFinestMesh(FbxMesh* pMesh); + + //Set the finest mesh + bool SetBaseMesh(FbxMesh* pMesh); + + //Get the mesh from specific level + FbxMesh* GetMesh(int pLevel) const; + + /** SetSubdivLevelMesh Set certain subdivision mesh + * \param pLevel working level + * \param pMesh new level mesh. pLevel = 0 means base mesh, + pLevel = MaxLevel -1 means finest mesh + */ + void SetSubdivLevelMesh(int pLevel, FbxMesh* pMesh); + + int GetLevelCount() const; + void SetLevelCount(int pLevelCount); + + int GetCurrentLevel() const; + void SetCurrentLevel(int pCurrentLevel); + + FbxMesh* GetCurrentMesh() const; + + FbxSubDiv::EScheme GetSubdivScheme() const; + + FbxSubDiv::ETesselationPattern GetTessPattern() const; + + void SetSubdivScheme(FbxSubDiv::EScheme pScheme); + + void SetTessPattern(FbxSubDiv::ETesselationPattern pPattern); + + FbxSubDiv::EDisplaySmoothness GetDisplaySmoothness() const; + + void SetDisplaySmoothness(FbxSubDiv::EDisplaySmoothness pSmoothness); + +private: + + //base geometry mesh for subdivision + FbxMesh* mBaseMesh; + + //finest geometry mesh for subdivision + FbxMesh* mFinestMesh; + + //current operating subdivision level + int mCurrLevel; + + //number of subdiv level + int mLevelCount; + + //scheme of subdiv + EScheme mScheme; + + //pattern of subdiv + ETesselationPattern mPattern; + + //display smoothness of subdiv + EDisplaySmoothness mSmoothness; +}; + +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_SUB_DIV_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxtrimnurbssurface.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxtrimnurbssurface.h new file mode 100644 index 00000000..2797ac9b --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxtrimnurbssurface.h @@ -0,0 +1,240 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxtrimnurbssurface.h +#ifndef _FBXSDK_SCENE_GEOMETRY_TRIM_NURBS_SURFACE_H_ +#define _FBXSDK_SCENE_GEOMETRY_TRIM_NURBS_SURFACE_H_ + +#include + +#include +#include +#include + +#include + +/** FbxBoundary describes a trimming boundary for a trimmed NURBS object. + * Note:Outer boundaries run counter-clockwise in UV space and inner + * boundaries run clockwise. An outer boundary represents the outer edges + * of the trimmed surface whereas the inner boundaries define "holes" in + * the surface. + */ +class FBXSDK_DLL FbxBoundary : public FbxGeometry +{ + FBXSDK_OBJECT_DECLARE(FbxBoundary, FbxGeometry); + +public: + + //! Properties + static const char* sOuterFlag; + + /** This property handles outer flag. + * + * Default value is false. + */ + FbxPropertyT OuterFlag; + + /** Adds an edge to this boundary. + * \param pCurve The curve to be appended to the end of this boundary + */ + void AddCurve( FbxNurbsCurve* pCurve ); + + /** Returns the number of edges within this boundary. + * \return The number of edges within this boundary + */ + int GetCurveCount() const; + + /** Returns the edge at the specified index. + * \param pIndex The specified index, no bound checking is done. + * \return The edge at the specified index if + * pIndex is in the range [0, GetEdgeCount() ), + * otherwise the return value is undefined. + */ + FbxNurbsCurve* GetCurve( int pIndex ); + + /** Returns the edge at the specified index. + * \param pIndex The specified index, no bound checking is done. + * \return The edge at the specified index if + * pIndex is in the range [0, GetEdgeCount() ), + * otherwise, the return value is undefined. + */ + const FbxNurbsCurve* GetCurve( int pIndex ) const; + + + //! Returns the type of node attribute. + virtual FbxNodeAttribute::EType GetAttributeType() const; + + /** Detects if the point is in the boundary's control hull. + * \param pPoint The point to be detected. + * \return \c True if the point is in the boundary's control hull, returns \c false if it is not in the control hull. + */ + bool IsPointInControlHull(const FbxVector4& pPoint ); + + /** Computes the origin point in the boundary + * \return The origin point. + */ + FbxVector4 ComputePointInBoundary(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + + void ClearCurves(); + void CopyCurves( FbxBoundary const& pOther ); + bool IsValid(bool mustClosed = true); + bool IsCounterClockwise(); + +protected: + virtual void ConstructProperties(bool pForceSet); + + void Reset(); + bool LineSegmentIntersect(const FbxVector4 & pStart1, const FbxVector4 & pEnd1, const FbxVector4 & pStart2, const FbxVector4 & pEnd2 ) const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + +/** FbxTrimNurbsSurface describes a NURBS surface with regions + trimmed or cut away with trimming boundaries. + */ +class FBXSDK_DLL FbxTrimNurbsSurface : public FbxGeometry +{ + FBXSDK_OBJECT_DECLARE(FbxTrimNurbsSurface,FbxGeometry); +public: + //! Returns the type of node attribute. + virtual FbxNodeAttribute::EType GetAttributeType() const; + + + /** Returns the number of regions on this trimmed NURBS surface. + * Note: There is always at least one region. + * \return The number of regions + */ + int GetTrimRegionCount() const; + + /** Calls this function before adding boundaries to a new trim region. + * The number of regions is incremented on this call. + */ + void BeginTrimRegion(); + + /** Calls this function after the last boundary for a given region is added. + * If no boundaries are added between the calls to BeginTrimRegion + * and EndTrimRegion, the last region is removed. + */ + void EndTrimRegion(); + + /** Appends a trimming boundary to the set of trimming boundaries. + * The first boundary specified for a given trim region should be + * the outer boundary. All other boundaries are inner boundaries. + * This must be called after a call to BeginTrimRegion(). Boundaries + * cannot be shared among regions. Duplicate the boundary if necessary. + * \param pBoundary The boundary to add. + * \return \c True if the boundary is added successfully. + * If the boundary is not added successfully, returns \c false. + */ + bool AddBoundary( FbxBoundary* pBoundary ); + + /** Returns the boundary at a given index for the specified region + * \param pIndex The index of the boundary to retrieve, no bound checking is done. + * \param pRegionIndex The index of the region which is bordered by the boundary. + * \return The trimming boundary at index pIndex, + * if pIndex is in the range [0, GetBoundaryCount() ), + * otherwise the result is undefined. + */ + FbxBoundary* GetBoundary( int pIndex, int pRegionIndex = 0 ); + + /** Returns the boundary at a given index for the specified region + * \param pIndex The index of the boundary to retrieve, no bound checking is done. + * \param pRegionIndex The index of the region which is bordered by the boundary. + * \return The trimming boundary at index pIndex, + * if pIndex is in the range [0, GetBoundaryCount() ), + * otherwise the result is undefined. + */ + const FbxBoundary* GetBoundary( int pIndex, int pRegionIndex = 0 ) const; + + /** Returns the number of boundaries for a given region. + * \param pRegionIndex The index of the region. + * \return The number of trim boundaries for the given region. + */ + int GetBoundaryCount(int pRegionIndex = 0) const; + + /** Sets the NURBS surface that is trimmed by the trimming boundaries. + * \param pNurbs The NURBS surface to be trimmed. + */ + void SetNurbsSurface( const FbxNurbsSurface* pNurbs ); + + /** Returns the NURBS surface that is trimmed by the trim boundaries. + * \return A pointer to the (untrimmed) NURBS surface. + */ + FbxNurbsSurface* GetNurbsSurface(); + + /** Returns the NURBS surface that is trimmed by the trim boundaries. + * \return A pointer to the (untrimmed) NURBS surface. + */ + const FbxNurbsSurface* GetNurbsSurface() const; + + /** Sets the flag which indicates whether the surface normals are flipped. + * You can flip the normals of the surface to reverse the surface. + * \param pFlip If \c true, the surface is reversed. If it is false, the surface is not reversed. + */ + inline void SetFlipNormals( bool pFlip ) { mFlipNormals = pFlip; } + + /** Checks if the normals are flipped. + * \return \c True if normals are flipped, returns \c false if they are not flipped. + */ + inline bool GetFlipNormals() const { return mFlipNormals; } + + virtual int GetControlPointsCount() const; + + /** Sets the control point and the normal values for a specified index. + * \param pCtrlPoint The value of the control point. + * \param pNormal The value of the normal. + * \param pIndex The specified index. + * \param pI2DSearch Unused in this implementation. + */ + virtual void SetControlPointAt(const FbxVector4 &pCtrlPoint, const FbxVector4 &pNormal , int pIndex, bool pI2DSearch = false); + + /** Sets the control point for a specified index. + * \param pCtrlPoint The value of the control point. + * \param pIndex The specified index. + */ + virtual void SetControlPointAt(const FbxVector4 &pCtrlPoint, int pIndex) { ParentClass::SetControlPointAt(pCtrlPoint, pIndex); } + + /** Returns the NURBS surface's control points. + * \param pStatus The FbxStatus object to hold error codes. + */ + virtual FbxVector4* GetControlPoints(FbxStatus* pStatus = NULL) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + + bool IsValid(bool mustClosed = true); + void ClearBoundaries(); + void CopyBoundaries( FbxTrimNurbsSurface const& pOther ); + bool IsValid(int pRegion, bool mustClosed = true); + void RebuildRegions(); + +protected: + virtual void Construct(const FbxObject* pFrom); + +private: + bool mFlipNormals; + FbxArray mRegionIndices; + bool mNewRegion; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_TRIM_NURBS_SURFACE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxvertexcachedeformer.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxvertexcachedeformer.h new file mode 100644 index 00000000..9200b78d --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxvertexcachedeformer.h @@ -0,0 +1,80 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxvertexcachedeformer.h +#ifndef _FBXSDK_SCENE_GEOMETRY_VERTEX_CACHE_DEFORMER_H_ +#define _FBXSDK_SCENE_GEOMETRY_VERTEX_CACHE_DEFORMER_H_ + +#include + +#include +#include + +#include + +/** \brief This class deforms control points of a geometry using control point positions + * stored in the associated cache object. + * \nosubgrouping + */ +class FBXSDK_DLL FbxVertexCacheDeformer : public FbxDeformer +{ + FBXSDK_OBJECT_DECLARE(FbxVertexCacheDeformer, FbxDeformer); + +public: + //! Vertex cache deformer data type + enum ECacheChannelType + { + ePositions, //!< This vertex cache deformer handles positions + eNormals, //!< This vertex cache deformer handles normals + eUVs, //!< This vertex cache deformer handles uvs + eTangents, //!< This vertex cache deformer handles tangents + eBinormals, //!< This vertex cache deformer handles binormals + eUserDefined //!< This vertex cache deformer handles user specified data (the cache channel string can provide a hint) + }; + + /** Assign a cache object to be used by this deformer. + * \param pCache The cache object. */ + void SetCache(FbxCache* pCache); + + /** Get the cache object used by this deformer. + * \return A pointer to the cache object used by this deformer, or \c NULL if no cache object is assigned. */ + FbxCache* GetCache() const; + + //! Indicate if the deformer is active or not. + FbxPropertyT Active; + + //! The channel name used in the cache file + FbxPropertyT Channel; + + //! The cache set used by this vertex cache deformer + FbxPropertyT CacheSet; + + //! The vertex cache deformer type + FbxPropertyT Type; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + virtual EDeformerType GetDeformerType() const { return FbxDeformer::eVertexCache; } + +protected: + virtual void ConstructProperties(bool pForceSet); + virtual FbxStringList GetTypeFlags() const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +inline EFbxType FbxTypeOf(const FbxVertexCacheDeformer::ECacheChannelType&){ return eFbxEnum; } + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_VERTEX_CACHE_DEFORMER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxweightedmapping.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxweightedmapping.h new file mode 100644 index 00000000..c859f4b5 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/geometry/fbxweightedmapping.h @@ -0,0 +1,139 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxweightedmapping.h +#ifndef _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAPPING_H_ +#define _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAPPING_H_ + +#include + +#include + +#include + +/** Define a weighted bidirectional mapping relation on objects. + * \nosubgrouping + * There are two object set. The source object of mapping is in source set. + * The destination object is in destination set. + * Each object can have multiple mapping relation with other objects. + */ +class FBXSDK_DLL FbxWeightedMapping +{ +public: + /** Object set type in the mapping relation. + */ + enum ESet + { + eSource, //!< Object is as source. + eDestination //!< Object is as destination. + }; + + /** Record one mapping from one object. */ + struct Element + { + //! The index of another object in the mapping in the another ESet array. + int mIndex; + //! Weight of the mapping. + double mWeight; + }; + + /** + * \name Constructor and Destructor + */ + //@{ + + /** Constructor. + * Initialize the source set and destination set. + * \param pSourceSize Source set size + * \param pDestinationSize Destination set size + */ + FbxWeightedMapping(int pSourceSize, int pDestinationSize); + + //! Destructor. + ~FbxWeightedMapping(); + //@} + + + /** Remove all weighted relations and give new source and destination sets sizes. + * \param pSourceSize New source set size. + * \param pDestinationSize New destination set size. + */ + void Reset(int pSourceSize, int pDestinationSize); + + /** Add a weighted mapping relation. + * \param pSourceIndex Index of the source object. + * \param pDestinationIndex Index of the destination object. + * \param pWeight Weight of the mapping. + */ + void Add(int pSourceIndex, int pDestinationIndex, double pWeight); + + /** Get the number of elements of a set. + * \param pSet source or destination set. + */ + int GetElementCount(ESet pSet) const; + + /** Get the number of relations an element of a set is linked to. + * For example, for one object (which index is specified by pElement) in source set (specified by pSet), + * the function return how many objects (as destination) the object (as source) mapping to. + * \param pSet Source or destination set. + * \param pElement Object index in the set. + */ + int GetRelationCount(ESet pSet, int pElement) const; + + /** Get one of the relations an element of a set is linked to. + * \param pSet Source or destination set. + * \param pElement Object index in the set. + * \param pIndex Relation index of the object linked to. + * \return Element gives the index of an element in the other set and the assigned weight. + */ + Element& GetRelation(ESet pSet, int pElement, int pIndex); + + /** Given the index of an element in the other set, get the index of one of the relations + * an element of a set is linked to. Returns -1 if there is not relation between these elements. + * \param pSet Source or destination set. + * \param pElementInSet Object index in the set. + * \param pElementInOtherSet Object index in another set. + * \return The index of one of the relations, -1 if there is not relation between these elements. + */ + int GetRelationIndex(ESet pSet, int pElementInSet, int pElementInOtherSet) const; + + /** Get the sum of the weights from the relations an element of a set is linked to. + * \param pSet Source or destination set. + * \param pElement Object index in the set. + * \param pAbsoluteValue Flag to convert negative value to positive value. + * \return The sum of the weights from the relations. + */ + double GetRelationSum(ESet pSet, int pElement, bool pAbsoluteValue) const; + + + /** Normalize the weights of the relations of all the elements of a set. + * \param pSet Source or destination set. + * \param pAbsoluteValue Flag to convert negative value to positive value. + */ + void Normalize(ESet pSet, bool pAbsoluteValue); + + FbxWeightedMapping& operator=(const FbxWeightedMapping& pWMap); + +private: + + //! Remove all weighted relations. + void Clear(); + + FbxArray*> mElements[2]; + +}; + +typedef class FbxArray FbxArrayTemplateElement; +typedef class FbxArray*> FbxArrayTemplateArrayTemplateElement; + +#include + +#endif /* _FBXSDK_SCENE_GEOMETRY_WEIGHTED_MAPPING_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxbindingoperator.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxbindingoperator.h new file mode 100644 index 00000000..d6dd99ae --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxbindingoperator.h @@ -0,0 +1,859 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxbindingoperator.h +#ifndef _FBXSDK_SCENE_SHADING_BINDING_OPERATOR_H_ +#define _FBXSDK_SCENE_SHADING_BINDING_OPERATOR_H_ + +#include + +#include + +#include + +/** This object represents a binding operation on a FbxObject or FbxProperty. + * For example, FbxBindingOperator can be used to bind a light object + * to a parameter of shader via FbxNodeDirectionBOF or FbxNodePositionBOF. + * \code + * //Create an entry lEntry of binding table lTable. + * FbxBindingTableEntry& lEntry = lTable->AddNewEntry(); + * + * //Create a NodePositionConvert binding operator and add it as source of the lEntry. + * FbxOperatorEntryView lSrc(&lEntry, true, true); + * lSrc.SetOperatorName( "NodePositionConvert"); + * FbxBindingOperator* lOp = pImpl.AddNewBindingOperator( "NodePositionConvert", FbxNodePositionBOF::FunctionName); + * + * //Add a property entry to the binding operator. + * FbxBindingTableEntry& lEntryPropParam = lOp->AddNewEntry(); + * FbxPropertyEntryView lPropSrc(&lEntryPropParam, true, true); + * //Set the shader parameter (the property's name) as source of the lEntryPropParam. + * lPropSrc.SetProperty(lProp.GetHierarchicalName()); + * //Set the operator function FbxNodePositionBOF as destination of the lEntryPropParam. + * lEntryPropParam.SetDestination( FbxNodePositionBOF::FunctionName ); + * + * //Set the shader parameter as destination of the lEntry. + * FbxSemanticEntryView lDst( &lEntry, false, true ); + * lDst.SetSemantic( lProp.GetName() ); + * \endcode + * \nosubgrouping + * \see FbxOperatorEntryView, FbxBindingTableEntry, FbxPropertyEntryView + */ +class FBXSDK_DLL FbxBindingOperator : public FbxBindingTableBase +{ + FBXSDK_OBJECT_DECLARE(FbxBindingOperator, FbxBindingTableBase); + +public: + /** Run the operator on the given object. + * \param pObject The object that will be evaluated. + * \param pResult A pointer to a buffer to hold the result. + * \return \c true on success, \c false otherwise. + */ + template + bool Evaluate(const FbxObject* pObject, FBXTYPE* pResult) const + { + EFbxType lResultType; + void* lResult = NULL; + + bool lSuccess = Evaluate(pObject, &lResultType, &lResult); + + if (lSuccess) + { + FbxTypeCopy(*pResult, lResult, lResultType); + } + + FreeEvaluationResult(lResultType, lResult); + + return lSuccess; + } + + /** Run the inverse operator on the given object, + * assigning the result directly to the object. + * \param pObject The object that will be evaluated. + * \param pInOut Type of value being reversed. + * \param setObj Control to set the property (only to query by the default ). + * \param index Used only in FbxMultiplyDistBOF. + * \return \c true on success, \c false otherwise. + */ + template + bool ReverseEvaluation(const FbxObject* pObject, FBXTYPE * pInOut, + bool setObj=false, int index=0) const + { + + const void* lIn = pInOut; + void* lOut = NULL; + EFbxType lOutType; + + bool lSuccess = ReverseEvaluate(pObject, lIn, &lOut, &lOutType, setObj, index); + + if (lSuccess) + { + FbxTypeCopy(*pInOut, lOut, lOutType); + } + + FreeEvaluationResult(lOutType, lOut); + + return lSuccess; + } + + /** Evaluate the value of an operator parameter. + * \param pObject The object that will be evaluated. + * \param pEntryDestinationName The name of the parameter. + * This is used to get the property or operator that is related to this parameter, + * then to evaluate the property or operator. + * \param pResult A pointer to the result. + * \return \c true on success, \c false otherwise. + * \remarks This method can handle different types of entries. For property entry and constant entry, + * this method will find out the property via the pEntryDestinationName and then evaluate its value; + * for operator entry, this method will find out the operator via the pEntryDestinationName and + * evaluate the operator function to get the property's value; for any other types of entry, this method + * is meaningless. + */ + template + bool EvaluateEntry(const FbxObject* pObject, const char* pEntryDestinationName, FBXTYPE* pResult) const + { + EFbxType lResultType; + void* lResult = NULL; + + bool lSuccess = EvaluateEntry(pObject, pEntryDestinationName, &lResultType, &lResult); + + if (lSuccess) + { + FbxTypeCopy(*pResult, lResult, lResultType); + } + + FreeEvaluationResult(lResultType, lResult); + + return lSuccess; + } + + /** This property stores the name of function. + * + * Default value is "". + */ + FbxPropertyT FunctionName; + + /** This property stores the name of target. + * + * Default value is "". + */ + FbxPropertyT TargetName; + + ////////////////////////////////////////////////////////////////////////// + // Static values + ////////////////////////////////////////////////////////////////////////// + + //! Function name. + static const char* sFunctionName; + //! Target name. + static const char* sTargetName; + + //! Default value for function name. + static const char* sDefaultFunctionName; + //! Default value for target name. + static const char* sDefaultTargetName; + + + ////////////////////////////////////////////////////////////////////////// + // Functions + ////////////////////////////////////////////////////////////////////////// + + /** \internal + * + */ + static void RegisterFunctions(); + + /** \internal + * + */ + static void UnregisterFunctions(); + + + /** It represents a binding relationship between current object and the target. + * Any binding operation need to specify a certain kind of binding function. + * \nosubgrouping + */ + class FBXSDK_DLL Function + { + public: + //!Destructor. + virtual ~Function() {} + + /** Run the operator on the given object. + * \param pOperator The operator that will be applied. + * \param pObject The object that will be evaluated. + * \param pResultType Will be filled by the type of the result. + * \param pResult Will be filled by a pointer to a buffer that hold the result. + * The caller must call FreeEvaluationResult() when it is done with this pointer. + * \return \c true on success, \c false otherwise. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const = 0; + + /** Run the inverse operator on the given object, + * assigning the result directly to the object. + * \param pOperator The operator that will be applied. + * \param pTarget The object that will be evaluated. + * \param pIn + * \param pOut + * \param pOutType Type of value being reversed. + * \param setObj Control to set the property (only to query by the default ). + * \param index Used only in FbxMultiplyDistBOF. + * \return \c true on success, \c false otherwise. + */ + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const = 0; + }; + + /** The abstract factory class for binding function. + * \nosubgrouping + */ + class FBXSDK_DLL FunctionCreatorBase + { + public: + //!Destructor. + virtual ~FunctionCreatorBase() {} + + /** Get name of the function. + * \return The name of the function. + */ + virtual const char* GetFunctionName() const = 0; + + /** Create the function. + */ + virtual Function* CreateFunction() const = 0; + }; + + /** The concrete factory class for binding function. + * \nosubgrouping + */ + template + class FunctionCreator : public FunctionCreatorBase + { + public: + + /** Get Name of the operation function. + * \return The Name of the operation function. + */ + virtual const char* GetFunctionName() const + { + return FUNCTION::FunctionName; + } + + /** Create the operation function. + */ + virtual Function* CreateFunction() const + { + return FbxNew< FUNCTION >(); + } + }; + + /** This utility class is used to register and unregister the binding function creators. + * \nosubgrouping + */ + class FBXSDK_DLL FunctionRegistry + { + public: + /** To register the binding function creator. + * \param pCreator The binding function creator to register. + */ + static void RegisterFunctionCreator(FunctionCreatorBase const& pCreator) + { + sRegistry.Insert(pCreator.GetFunctionName(), &pCreator); + } + + /** To unregister the binding function creator. + * \param pCreator The binding function creator to unregister. + */ + static void UnregisterFunctionCreator(FunctionCreatorBase const& pCreator) + { + sRegistry.Remove(pCreator.GetFunctionName()); + } + + /** To find the binding function creator by name. + * \param pName The name of the operation function creator to find. + */ + static const FunctionCreatorBase* FindCreator(const char* pName) + { + RegistryType::RecordType* lRecord = sRegistry.Find(pName); + + if (lRecord) + { + return lRecord->GetValue(); + } + else + { + return NULL; + } + } + + private: + typedef FbxMap RegistryType; + static RegistryType sRegistry; + }; + + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + bool EvaluateEntry(const FbxObject* pObject, const char* pEntryDestinationName, EFbxType* pResultType, void** pResult) const; + bool GetEntryProperty(const FbxObject* pObject, const char* pEntryDestinationName, FbxProperty & pProp) const; + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void Destruct(bool pRecursive); + virtual void ConstructProperties(bool pForceSet); + + void InstantiateFunction(); + bool Evaluate(const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + bool ReverseEvaluate(const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + void FreeEvaluationResult(EFbxType pResultType, void* pResult) const; + + Function* mFunction; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + +/** An evaluation operator to get the position of the node that is bound with this operator via a certain property. + * The position of the node is represented by translation. + */ +class FbxNodePositionBOF : public FbxBindingOperator::Function +{ +public: + //! Name of the operation function. + static const char* FunctionName; + + /** Evaluate the position of the node that is bound with this operator via a certain property. + * The position of the node is represented by translation. + * + * \param pOperator Operator running on the object. + * \param pObject The object that will be evaluated. + * \param pResultType The type of the result to be returned, eFbxDouble4 in this case. + * \param pResult A pointer to a buffer that can hold the result. + * \return \c true on success, \c false otherwise. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + + //! Inverse evaluation for this binding function is not implemented yet. + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxNodePositionBOF(); + virtual ~FbxNodePositionBOF(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** An evaluation operator to get the direction of the node that is bound with this operator via a certain property. + * The direction of the node is represented by Euler rotation. + */ +class FbxNodeDirectionBOF : public FbxBindingOperator::Function +{ +public: + //! Name of the operation function. + static const char* FunctionName; + + /** Evaluate the direction of the node that is bound with this operator via a certain property. + * The direction of the node is represented by Euler rotation. + * + * \param pOperator Operator running on the object. + * \param pObject The object that will be evaluated. + * \param pResultType The type of the result to be returned, eFbxDouble4 in this case. + * \param pResult A pointer to a buffer that can hold the result. + * \return \c true on success, \c false otherwise. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + + //! Inverse evaluation for this binding function is not implemented yet. + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxNodeDirectionBOF(); + virtual ~FbxNodeDirectionBOF(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** A pass through operator used to assign constants to parameters. +*/ +class FbxAssignBOF : public FbxBindingOperator::Function +{ +public: + //! Name of the operation function. + static const char* FunctionName; + + /** Evaluates the object property specified by "X" and returns it. + * \param pOperator Operator running on the object. + * \param pObject The object that will be evaluated. + * \param pResultType Will be filled by the type of the result. + * \param pResult Will be filled by a pointer to a buffer that hold the result. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + + //! Inverse evaluation for this binding function is not implemented yet. + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxAssignBOF(); + virtual ~FbxAssignBOF(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + +/** A conditional operator that outputs one out of two properties, based on + * the value of a predicate property. + */ +class FbxConditionalBOF : public FbxBindingOperator::Function +{ +public: + //! Name of the operation function. + static const char* FunctionName; + + /** Evaluates the object property specified by "predicate". + * If the property value is true (!= 0, != ""), returns the value of the + * property specified by "ifTrue", else returns the value of the property + * specified by "ifFalse". + * + * Currently the data types supported for the input property are + * limited to "integer", "boolean", "float", "double" and "string". + * \param pOperator Operator running on the object. + * \param pObject The object that will be evaluated. + * \param pResultType The type of the result to be returned. + * \param pResult A pointer to a buffer that can hold the result. + * \return \c true on success, \c false otherwise. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxConditionalBOF(); + virtual ~FbxConditionalBOF(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + +/** A switch operator that outputs one out of n properties, based on + * the value of a predicate property. + */ +class FbxSwitchBOF : public FbxBindingOperator::Function +{ +public: + //! Name of the operation function. + static const char* FunctionName; + + /** Evaluates the object property specified by "predicate". + * Returns the value of the property specified by "case_n", where n + * is the value of "predicate". If there is no case_n entry, returns + * the value of the property specified by "default". + * + * Currently the data types supported for the predicate property are + * limited to "integer" and "boolean". + * \param pOperator Operator running on the object. + * \param pObject The object that will be evaluated. + * \param pResultType The type of the result to be returned. + * \param pResult A pointer to a buffer that can hold the result. + * \return \c true on success, \c false otherwise. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxSwitchBOF(); + virtual ~FbxSwitchBOF(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + +class FbxTRSToMatrixBOF : public FbxBindingOperator::Function +{ +public: + //! Name of the operation function. + static const char* FunctionName; + + /** Evaluates the object properties specified by "T", "R" and "S" and + * return a transform matrix. + * + * \param pOperator Operator running on the object. + * \param pObject The object that will be evaluated. + * \param pResultType The type of the result to be returned. + * \param pResult A pointer to a buffer that can hold the result. + * \return \c true on success, \c false otherwise. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxTRSToMatrixBOF(); + virtual ~FbxTRSToMatrixBOF(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + +class FbxAddBOF : public FbxBindingOperator::Function +{ +public: + //! Name of the operation function. + static const char* FunctionName; + + /** Evaluates the object properties specified by "X" and "Y" + * return X+Y as a float. + * + * \param pOperator Operator running on the object. + * \param pObject The object that will be evaluated. + * \param pResultType The type of the result to be returned. + * \param pResult A pointer to a buffer that can hold the result. + * \return \c true on success, \c false otherwise. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxAddBOF(); + virtual ~FbxAddBOF(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + +class FbxSubstractBOF : public FbxBindingOperator::Function +{ +public: + //! Name of the operation function. + static const char* FunctionName; + + /** Evaluates the object properties specified by "X" and "Y" + * return X-Y as a float. + * + * \param pOperator Operator running on the object. + * \param pObject The object that will be evaluated. + * \param pResultType The type of the result to be returned. + * \param pResult A pointer to a buffer that can hold the result. + * \return \c true on success, \c false otherwise. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxSubstractBOF(); + virtual ~FbxSubstractBOF(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + +class FbxMultiplyBOF : public FbxBindingOperator::Function +{ +public: + //! Name of the operation function. + static const char* FunctionName; + + /** Evaluates the object properties specified by "X" and "Y" + * return X*Y as a float. + * + * \param pOperator Operator running on the object. + * \param pObject The object that will be evaluated. + * \param pResultType The type of the result to be returned. + * \param pResult A pointer to a buffer that can hold the result. + * \return \c true on success, \c false otherwise. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + //Set index to 1 to get realWorldScale. + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxMultiplyBOF(); + virtual ~FbxMultiplyBOF(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + +class FbxMultiplyDistBOF : public FbxBindingOperator::Function +{ +public: + //! Name of the operation function. + static const char* FunctionName; + + /** Evaluates the object properties specified by "X" and "Y" + * return X*Y as a float. + * + * \param pOperator Operator running on the object. + * \param pObject The object that will be evaluated. + * \param pResultType The type of the result to be returned. + * \param pResult A pointer to a buffer that can hold the result. + * \return \c true on success, \c false otherwise. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxMultiplyDistBOF(); + virtual ~FbxMultiplyDistBOF(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +class FbxOneOverXBOF : public FbxBindingOperator::Function +{ +public: + //! Name of the operation function. + static const char* FunctionName; + + /** Evaluates the object properties specified by "X" + * return 1/X as a float. + * + * \param pOperator Operator running on the object. + * \param pObject The object that will be evaluated. + * \param pResultType The type of the result to be returned. + * \param pResult A pointer to a buffer that can hold the result. + * \return \c true on success, \c false otherwise. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxOneOverXBOF(); + virtual ~FbxOneOverXBOF(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +class FbxPowerBOF : public FbxBindingOperator::Function +{ +public: + //! Name of the operation function. + static const char* FunctionName; + + /** Evaluates the object properties specified by "X" and "Y" + * return X^Y as a float. + * + * \param pOperator Operator running on the object. + * \param pObject The object that will be evaluated. + * \param pResultType The type of the result to be returned. + * \param pResult A pointer to a buffer that can hold the result. + * \return \c true on success, \c false otherwise. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxPowerBOF(); + virtual ~FbxPowerBOF(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +class FbxDegreeToRadianBOF : public FbxBindingOperator::Function +{ +public: + //! Name of the operation function. + static const char* FunctionName; + + /** Evaluates the object property specified by "X" + * return X converted to radian as a float. + * + * \param pOperator Operator running on the object. + * \param pObject The object that will be evaluated. + * \param pResultType The type of the result to be returned. + * \param pResult A pointer to a buffer that can hold the result. + * \return \c true on success, \c false otherwise. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxDegreeToRadianBOF(); + virtual ~FbxDegreeToRadianBOF(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + +class FbxVectorDegreeToVectorRadianBOF : public FbxBindingOperator::Function +{ +public: + //! Name of the operation function. + static const char* FunctionName; + + /** Evaluates the object property specified by "X" + * return X converted to radian as a vector3. + * + * \param pOperator Operator running on the object. + * \param pObject The object that will be evaluated. + * \param pResultType The type of the result to be returned. + * \param pResult A pointer to a buffer that can hold the result. + * \return \c true on success, \c false otherwise. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxVectorDegreeToVectorRadianBOF(); + virtual ~FbxVectorDegreeToVectorRadianBOF(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + + +class FbxSphericalToCartesianBOF : public FbxBindingOperator::Function +{ +public: + //! Name of the operation function. + static const char* FunctionName; + + /** Evaluates the object property specified by "rho", "theta" and "phi" + * return the converted Cartesian coordinates as a double3. + * + * \param pOperator Operator running on the object. + * \param pObject The object that will be evaluated. + * \param pResultType The type of the result to be returned. + * \param pResult A pointer to a buffer that can hold the result. + * \return \c true on success, \c false otherwise. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxSphericalToCartesianBOF(); + virtual ~FbxSphericalToCartesianBOF(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + + +class FbxIsYupBOF : public FbxBindingOperator::Function +{ +public: + //! Name of the operation function. + static const char* FunctionName; + + /** Check if the scene coordinate system is y-up + * return a bool. + * + * \param pOperator Operator running on the object. + * \param pObject The object that will be evaluated. + * \param pResultType The type of the result to be returned. + * \param pResult A pointer to a buffer that can hold the result. + * \return \c true on success, \c false otherwise. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxIsYupBOF(); + virtual ~FbxIsYupBOF(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + + +/** A symbol(string) operator that search the string table and return its corresponding unique id, based on + * the value of a predicate property. + */ +class FbxSymbolIDBOF : public FbxBindingOperator::Function +{ +public: + //! Name of the operation function. + static const char* FunctionName; + + /** Check in the symbol table the string and returns its unique ID as an integer + * + * \param pOperator Operator running on the object. + * \param pObject The object that will be evaluated. + * \param pResultType The type of the result to be returned. + * \param pResult A pointer to a buffer that can hold the result. + * \return \c true on success, \c false otherwise. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxSymbolIDBOF(); + virtual ~FbxSymbolIDBOF(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + + +/** A chooser operator that check spot distribution and returns the correct value, based on + * the value of a predicate property. + */ +class FbxSpotDistributionChooserBOF : public FbxBindingOperator::Function +{ +public: + //! Name of the operation function. + static const char* FunctionName; + + /** Check the enum of the spot distribution and returns the correct value + * as an int. + * + * \param pOperator Operator running on the object. + * \param pObject The object that will be evaluated. + * \param pResultType The type of the result to be returned. + * \param pResult A pointer to a buffer that can hold the result. + * \return \c true on success, \c false otherwise. + */ + virtual bool Evaluate(const FbxBindingOperator* pOperator, const FbxObject* pObject, EFbxType* pResultType, void** pResult) const; + + //! Inverse evaluation for this binding function is not implemented yet. + virtual bool ReverseEvaluate(const FbxBindingOperator* pOperator, const FbxObject* pTarget, const void* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxSpotDistributionChooserBOF(); + virtual ~FbxSpotDistributionChooserBOF(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_SHADING_BINDING_OPERATOR_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxbindingsentryview.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxbindingsentryview.h new file mode 100644 index 00000000..9d3a817b --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxbindingsentryview.h @@ -0,0 +1,63 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxbindingsentryview.h +#ifndef _FBXSDK_SCENE_SHADING_BINDINGS_ENTRY_VIEW_H_ +#define _FBXSDK_SCENE_SHADING_BINDINGS_ENTRY_VIEW_H_ + +#include + +#include + +#include + +/** FbxBindingsEntryView represents binding table entry in entry tables. + * The name of the binding table can be used as source or destination for the binding entry. + * \see FbxBindingTableEntry and FbxBindingTable. + */ +class FBXSDK_DLL FbxBindingsEntryView : public FbxEntryView +{ +public: + /** Name of the entry type used in the binding entry. + * It should be "FbxBindingsEntry" in this case. + */ + static const char* sEntryType; + + /** Constructor. + * \param pEntry The binding table entry to create the entry view for. + * \param pAsSource \c true to create the entry view as source, \c false as destination. + * \param pCreate \c true to create the entry view, \c false otherwise. + */ + FbxBindingsEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); + + //! Destructor. + ~FbxBindingsEntryView(); + + /** Get the binding table's name for the binding entry. + * \return The binding table's name. + */ + const char* GetBindingTableName() const; + + /** Set the binding table's name for binding entry. + * \param pName The binding table's name to set. + */ + void SetBindingTableName(const char* pName); + + /** Get the entry type. + * \return Entry type as string "FbxBindingsEntry". + * \remarks Always use EntryType() to get the right entry type. + */ + virtual const char* EntryType() const; +}; + +#include + +#endif /* _FBXSDK_SCENE_SHADING_BINDINGS_ENTRY_VIEW_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxbindingtable.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxbindingtable.h new file mode 100644 index 00000000..b9a74ea9 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxbindingtable.h @@ -0,0 +1,147 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxbindingtable.h +#ifndef _FBXSDK_SCENE_SHADING_BINDING_TABLE_H_ +#define _FBXSDK_SCENE_SHADING_BINDING_TABLE_H_ + +#include + +#include + +#include + +/** A binding table represents a collection of bindings + * from source types such as FbxObject, or FbxLayerElements + * to corresponding destinations, usually a third party shader parameters. + * Binding represents a link between internal object(e.g. FbxObject) and + * external object(e.g. HLSL shader parameters). + * \nosubgrouping + * \see FbxBindingOperator, FbxBindingTableBase + */ +class FBXSDK_DLL FbxBindingTable : public FbxBindingTableBase +{ + FBXSDK_OBJECT_DECLARE(FbxBindingTable, FbxBindingTableBase); + +public: + /** This property stores the name of target. + * + * Default value is "". + */ + FbxPropertyT TargetName; + + /** This property stores the type of target. + * + * Default value is "". + */ + FbxPropertyT TargetType; + + /** Relative URL of file containing the shader implementation description. + * e.g.: ./shader.mi + * Default value is "". + */ + FbxPropertyT DescRelativeURL; + + /** Absolute URL of file containing the shader implementation description. + * e.g.: file:///usr/tmp/shader.mi + * Default value is "". + */ + FbxPropertyT DescAbsoluteURL; + + /** Identify the shader to use in previous description's URL. + * e.g.: MyOwnShader + * Default value is "". + */ + FbxPropertyT DescTAG; + + /** Relative URL of file containing the shader implementation code. + * e.g.: ./bin/shader.dll + * Default value is "". + */ + FbxPropertyT CodeRelativeURL; + + /** Absolute URL of file containing the shader implementation code. + * e.g.: file:///usr/tmp/bin/shader.dll + * Default value is "". + */ + FbxPropertyT CodeAbsoluteURL; + + /** Identify the shader function entry to use in previous code's URL. + * e.g.: MyOwnShaderFunc + * Default value is "". + */ + FbxPropertyT CodeTAG; + + ////////////////////////////////////////////////////////////////////////// + // Static values + ////////////////////////////////////////////////////////////////////////// + + //! Target name. + static const char* sTargetName; + + //! Target type. + static const char* sTargetType; + + //! Relative URL for shader description. + static const char* sDescRelativeURL; + + //! Absolute URL for shader description. + static const char* sDescAbsoluteURL; + + //! Identify the shader to use in previous description's URL. + static const char* sDescTAG; + + //! Relative URL for shader code. + static const char* sCodeRelativeURL; + + //! Absolute URL for shader code. + static const char* sCodeAbsoluteURL; + + //! Identify the shader function entry to use in previous code's URL. + static const char* sCodeTAG; + + + //! Default value for target name. + static const char* sDefaultTargetName; + + //! Default value for target type. + static const char* sDefaultTargetType; + + //! Default value for relative URL for shader description. + static const char* sDefaultDescRelativeURL; + + //! Default value for absolute URL for shader description. + static const char* sDefaultDescAbsoluteURL; + + //! Default value for identifying the shader to use in previous description's URL. + static const char* sDefaultDescTAG; + + //! Default value for relative URL for shader code. + static const char* sDefaultCodeRelativeURL; + + //! Default value for absolute URL for shader code. + static const char* sDefaultCodeAbsoluteURL; + + //! Default value for identifying the shader function entry to use in previous code's URL. + static const char* sDefaultCodeTAG; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + virtual void ConstructProperties(bool pForceSet); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_SHADING_BINDING_TABLE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxbindingtablebase.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxbindingtablebase.h new file mode 100644 index 00000000..12fe91fa --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxbindingtablebase.h @@ -0,0 +1,86 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxbindingtablebase.h +#ifndef _FBXSDK_SCENE_SHADING_BINDING_TABLE_BASE_H_ +#define _FBXSDK_SCENE_SHADING_BINDING_TABLE_BASE_H_ + +#include + +#include +#include +#include + +#include + +/** A binding table represents a collection of bindings + * from source types such as FbxObject, or FbxLayerElements + * to destinations which can be of similar types. + * \see FbxBindingTableEntry. + * \nosubgrouping + */ +class FBXSDK_DLL FbxBindingTableBase : public FbxObject +{ + FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxBindingTableBase,FbxObject); + +public: + /** Adds a new entry to the binding table. + * \return The new entry. + */ + FbxBindingTableEntry& AddNewEntry(); + + /** Query the number of table entries. + * \return The number of entries. + */ + size_t GetEntryCount() const; + + /** Access a table entry. + * \param pIndex Valid range is [0, GetEntryCount()-1]. + * \return A valid table entry if pIndex is valid. Otherwise the value is undefined. + */ + FbxBindingTableEntry const& GetEntry( size_t pIndex ) const; + + /** Access a table entry. + * \param pIndex Valid range is [0, GetEntryCount()-1]. + * \return A valid table entry if pIndex is valid. Otherwise the value is undefined. + */ + FbxBindingTableEntry& GetEntry( size_t pIndex ); + + /** Retrieve the table entry for the given source value. + * \param pSrcName The source value to query. + * \return The corresponding entry, or NULL if no entry in + * the table has a source equal in value to pSrcName. + */ + const FbxBindingTableEntry* GetEntryForSource(const char* pSrcName) const; + + /** Retrieve the table entry for the given destination value. + * \param pDestName The destination value to query. + * \return The corresponding entry, or NULL if no entry in + * the table has a destination equal in value to pDestName. + */ + const FbxBindingTableEntry* GetEntryForDestination(const char* pDestName) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + // Remark: This method copies the mEntries table AND clears the UserData on the resulting copy to prevent shared memory + // data between clones/copies. + virtual FbxObject& Copy(const FbxObject& pObject); + +private: + FbxDynamicArray mEntries; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_SHADING_BINDING_TABLE_BASE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxbindingtableentry.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxbindingtableentry.h new file mode 100644 index 00000000..7a840f75 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxbindingtableentry.h @@ -0,0 +1,117 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxbindingtableentry.h +#ifndef _FBXSDK_SCENE_SHADING_BINDING_TABLE_ENTRY_H_ +#define _FBXSDK_SCENE_SHADING_BINDING_TABLE_ENTRY_H_ + +#include + +#include + +#include + +/** A binding table entry stores a binding between a source and a + * destination. Users should not instantiate this class directly, + * but always call FbxBindingTableBase::AddNewEntry() to create + * a new entry in the binding table. + * \nosubgrouping + */ +class FBXSDK_DLL FbxBindingTableEntry +{ +public: + /** + *\name Constructor and Destructor + */ + //@{ + //!Constructor. + FbxBindingTableEntry(); + + /**Copy constructor. + * \param pEntry FbxBindingTableEntry to be copied. + * \remark the UserDataPtr is a shared pointer. + */ + FbxBindingTableEntry(const FbxBindingTableEntry& pEntry); + + //!Destructor. + ~FbxBindingTableEntry(); + //@} + + /** + * \name Access + */ + //@{ + /** Set the source. + * \param pSource The source to set. + */ + void SetSource( const char* pSource ); + + //!Retrieve the source. + const char* GetSource() const; + + /** Set the destination. + * \param pDestination The destination to set. + */ + void SetDestination( const char* pDestination ); + + //!Retrieve the destination. + const char* GetDestination() const; + + /** Set the source type or destination type. + * \param pType The source type or destination type to set. + * \param pAsSource Flag indicates source type or destination type to set. + */ + void SetEntryType( const char* pType, bool pAsSource ); + + /** Get the source type or destination type. + * \param pAsSource Flag indicates source type or destination type to get. + * \return Source type or destination type. + */ + const char* GetEntryType( bool pAsSource ) const; + + /** Retrieve user data pointer. + * \return User data pointer. + */ + void* GetUserDataPtr(); + + /** Retrieve user data pointer. + * \return User data pointer. + */ + const void* GetUserDataPtr() const; + + /** Set user data pointer. + * \param pData user data pointer. + */ + void SetUserDataPtr(void* pData ); + //@} + + /** Assignment operator. + * \param pEntry FbxBindingTableEntry assigned to this one. + * \remark the UserDataPtr is a shared pointer. + */ + FbxBindingTableEntry& operator=(const FbxBindingTableEntry& pEntry); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + FbxString mSource; + FbxString mDestination; + FbxString mSourceType; + FbxString mDestinationType; + void* mData; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_SHADING_BINDING_TABLE_ENTRY_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxconstantentryview.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxconstantentryview.h new file mode 100644 index 00000000..63f500df --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxconstantentryview.h @@ -0,0 +1,65 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxconstantentryview.h +#ifndef _FBXSDK_SCENE_SHADING_CONSTANT_ENTRY_VIEW_H_ +#define _FBXSDK_SCENE_SHADING_CONSTANT_ENTRY_VIEW_H_ + +#include + +#include + +#include + +class FbxBindingTableEntry; + +/** FbxConstantEntryView represents constant string entry in entry tables. + * The constant string can be used as source or destination for the binding entry. + * \see FbxBindingTableEntry and FbxBindingTable. + */ +class FBXSDK_DLL FbxConstantEntryView : public FbxEntryView +{ +public: + /** Name of the entry type used in the binding entry. + * It should be "FbxConstantEntry" in this case. + */ + static const char* sEntryType; + + /** Constructor. + * \param pEntry The binding table entry to create the entry view for. + * \param pAsSource \c true to create the entry view as source, \c false as destination. + * \param pCreate \c true to create the entry view, \c false otherwise. + */ + FbxConstantEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); + + //! Destructor. + ~FbxConstantEntryView(); + + /** Get the constant string for binding entry. + * \return The constant string. + */ + const char* GetConstantName() const; + + /** Set the constant string for binding entry. + * \param pName The constant string to set. + */ + void SetConstantName(const char* pName); + + /** Get the entry type. + * \return Entry type as string "FbxConstantEntry". + * \remarks Always use EntryType() to get the right entry type. + */ + virtual const char* EntryType() const; +}; + +#include + +#endif /* _FBXSDK_SCENE_SHADING_CONSTANT_ENTRY_VIEW_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxentryview.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxentryview.h new file mode 100644 index 00000000..f306ca37 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxentryview.h @@ -0,0 +1,79 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxentryview.h +#ifndef _FBXSDK_SCENE_SHADING_ENTRY_VIEW_H_ +#define _FBXSDK_SCENE_SHADING_ENTRY_VIEW_H_ + +#include + +#include + +class FbxBindingTableEntry; + +/** Entry view class represents binding entry in entry tables. + * \see FbxBindingTableEntry and FbxBindingTable. + * \nosubgrouping + */ +class FBXSDK_DLL FbxEntryView +{ +public: + + //! Entry type. + static const char* sEntryType; + + /** + * \name Constructor and Destructor. + */ + //@{ + + /** Constructor. + * \param pEntry The binding table entry to create the entry view for. + * \param pAsSource \c true to create the entry view as source, \c false as destination. + * \param pCreate \c true to create the entry view, \c false otherwise. + */ + FbxEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); + + //! Destructor. + virtual ~FbxEntryView(); + //@} + + + /** Check whether this entry view is valid or not. + * If this entry view corresponds with an valid entry which is not NULL, and the + * entry type of this entry view is the same as that of the entry it corresponds with, + * then this entry view is valid. + * \return \c true if the entry view is valid, \c false otherwise. + */ + virtual bool IsValid() const; + + /** Create a new entry view. + * \return \c true if the entry view is created successfully, \c false otherwise. + */ + virtual bool Create(); + + /** Get the entry type of this entry view. + */ + virtual const char* EntryType() const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + bool mAsSource; + FbxBindingTableEntry* mEntry; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_SHADING_ENTRY_VIEW_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxfiletexture.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxfiletexture.h new file mode 100644 index 00000000..156bab38 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxfiletexture.h @@ -0,0 +1,133 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxfiletexture.h +#ifndef _FBXSDK_SCENE_SHADING_TEXTURE_FILE_H_ +#define _FBXSDK_SCENE_SHADING_TEXTURE_FILE_H_ + +#include + +#include + +#include + +/** This class describes image mapping on top of geometry. + * \note To apply a texture to geometry, first connect the + * geometry to a FbxSurfaceMaterial object (e.g. FbxSurfaceLambert) + * and then connect one of its properties (e.g. Diffuse) to the + * FbxFileTexture object. + * \see FbxSurfaceLambert + * \see FbxSurfacePhong + * \see FbxSurfaceMaterial + * \note For some example code, see also the CreateTexture() function + * in the ExportScene03 of FBX SDK examples. + * \nosubgrouping + */ +class FBXSDK_DLL FbxFileTexture : public FbxTexture +{ + FBXSDK_OBJECT_DECLARE(FbxFileTexture, FbxTexture); + +public: + /** + * \name Texture Properties + */ + //@{ + /** This property handles the material use. + * Default value is false. + */ + FbxPropertyT UseMaterial; + + /** This property handles the Mipmap use. + * Default value is false. + */ + FbxPropertyT UseMipMap; + + /** Resets the default texture values. + * \remarks The texture file name is not reset. + */ + void Reset(); + + /** Sets the associated texture file. + * \param pName The absolute path of the texture file. + * \return \c True if successful, returns \c false otherwise. + * \remarks The texture file name must be valid, you cannot leave the name empty. + */ + bool SetFileName(const char* pName); + + /** Sets the associated texture file. + * \param pName The relative path of the texture file. + * \return \c True if successful, returns \c false otherwise. + * \remarks The texture file name must be valid. + */ + bool SetRelativeFileName(const char* pName); + + /** Returns the absolute texture file path. + * \return The absolute texture file path. + * \remarks An empty string is returned if FbxFileTexture::SetFileName() has not been called before. + */ + const char* GetFileName () const; + + /** Returns the relative texture file path. + * \return The relative texture file path. + * \remarks An empty string is returned if FbxFileTexture::SetRelativeFileName() has not been called before. + */ + const char* GetRelativeFileName() const; + + /** \enum EMaterialUse Specify if texture uses model material. + */ + enum EMaterialUse + { + eModelMaterial, //! Texture uses model material. + eDefaultMaterial //! Texture does not use model material. + }; + + /** Sets the material use. + * \param pMaterialUse Specify how texture uses model material. + */ + void SetMaterialUse(EMaterialUse pMaterialUse); + + /** Returns the material use. + * \return How the texture uses model material. + */ + EMaterialUse GetMaterialUse() const; + + + //@} + + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + + bool operator==(FbxFileTexture const& pTexture) const; + + FbxString& GetMediaName(); + void SetMediaName(const char* pMediaName); + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + + void Init(); + void SyncVideoFileName(const char* pFileName); + void SyncVideoRelativeFileName(const char* pFileName); + + FbxString mFileName; + FbxString mRelativeFileName; + FbxString mMediaName; // not a prop +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_SHADING_TEXTURE_FILE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbximplementation.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbximplementation.h new file mode 100644 index 00000000..b87cc70e --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbximplementation.h @@ -0,0 +1,241 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbximplementation.h +#ifndef _FBXSDK_SCENE_SHADING_IMPLEMENTATION_H_ +#define _FBXSDK_SCENE_SHADING_IMPLEMENTATION_H_ + +#include + +#include + +#include + +class FbxBindingOperator; +class FbxBindingTable; + +/** This object represents the shading node implementation. + * It defines basic information about the shader and the binding table(FbxBindingTable). + * For example, you can create a new FbxImplementation like this: + * \code + * FbxImplementation* lImpl = FbxImplementation::Create( &pMyScene, "MyImplementation" ); + * pMyObject.AddImplementation( lImpl ); + * pMyObject.SetDefaultImplementation( lImpl ); + * lImpl->RenderAPI = FBXSDK_RENDERING_API_DIRECTX; //FBXSDK_RENDERING_API_DIRECTX, FBXSDK_RENDERING_API_OPENGL, FBXSDK_RENDERING_API_MENTALRAY or FBXSDK_RENDERING_API_PREVIEW + * lImpl->RenderAPIVersion = "9.0"; //API Version + * + * lImpl->Language = FBXSDK_SHADING_LANGUAGE_HLSL; //FBXSDK_SHADING_LANGUAGE_HLSL, FBXSDK_SHADING_LANGUAGE_GLSL, FBXSDK_SHADING_LANGUAGE_CGFX or FBXSDK_SHADING_LANGUAGE_MRSL + * lImpl->LanguageVersion = "1.0"; //Language Version + * \endcode + * + * After the new FbxImplementation is created, you can access FbxBindingTable like this: + * \code + * FbxBindingTable* lTable = lImpl->GetTableByTargetName("root"); + * \endcode + * Also, you can access the exist FbxImplementation in FbxObject by this: + * \code + * const FbxImplementation* lImpl = GetImplementation( pMyObject, FBXSDK_IMPLEMENTATION_CGFX ); // FBXSDK_IMPLEMENTATION_PREVIEW, FBXSDK_IMPLEMENTATION_MENTALRAY, FBXSDK_IMPLEMENTATION_CGFX, FBXSDK_IMPLEMENTATION_HLSL, FBXSDK_IMPLEMENTATION_OGS or FBXSDK_IMPLEMENTATION_NONE + * \endcode + * \nosubgrouping + * \see FbxImplementationFilter + */ +class FBXSDK_DLL FbxImplementation : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxImplementation, FbxObject); + +public: + /** + * \name Target Name. + */ + //@{ + FbxString RenderName; + //@} + + /** + * \name Shader Language and API descriptions. + */ + //@{ + + /** Shader Language. + * \see FBXSDK_SHADING_LANGUAGE_HLSL, FBXSDK_SHADING_LANGUAGE_GLSL, FBXSDK_SHADING_LANGUAGE_CGFX and FBXSDK_SHADING_LANGUAGE_MRSL in conventions.h + */ + FbxPropertyT Language; + + //! Shader Language version. + FbxPropertyT LanguageVersion; + + /** Render API. + * \see FBXSDK_SHADING_LANGUAGE_HLSL, FBXSDK_SHADING_LANGUAGE_GLSL, FBXSDK_SHADING_LANGUAGE_CGFX and FBXSDK_SHADING_LANGUAGE_MRSL in conventions.h + */ + FbxPropertyT RenderAPI; + + //! Render API version. + FbxPropertyT RenderAPIVersion; + //@} + + + /** + * \name Binding description + */ + //@{ + + //! Name of root binding table. + FbxPropertyT RootBindingName; + + //! Property to store the shader parameters(constants) values in this implementation. + FbxProperty GetConstants() const; + + /** Add a new binding table to the table list. + * \param pTargetName The target name for the binding table. + * \param pTargetType The target type for the binding table. + * \return the new binding table. + */ + FbxBindingTable* AddNewTable( const char* pTargetName, const char* pTargetType ); + + /** Retrieves a handle on the root binding table. + * \return A const pointer to the root table or NULL if it does not exist. + */ + const FbxBindingTable* GetRootTable() const; + + /** Retrieves a handle on the root binding table. + * \return A pointer to the root table or NULL if it does not exist. + */ + FbxBindingTable* GetRootTable(); + + /** Gets the number of binding tables. + * \return the number of binding tables. + */ + int GetTableCount() const; + + /** Retrieves a handle on the (pIndex)th binding table. + * \param pIndex The index of the table to retrieve. Valid values are [ 0, GetTableCount() ). + * \return A const pointer to the pIndex-th table or NULL if pIndex is out of range. + */ + const FbxBindingTable* GetTable( int pIndex ) const; + /** Retrieves a handle on the (pIndex)th binding table. + * \param pIndex The index of the table to retrieve. Valid values are [ 0, GetTableCount() ). + * \return A const pointer to the pIndex-th table or NULL if pIndex is out of range. + */ + FbxBindingTable* GetTable( int pIndex ); + + /** Returns the binding table that has the given target name. + * \param pName The target name of the table to look for. + * \return A const pointer to the binding table with the given target name, or NULL if there is no such binding table. + */ + const FbxBindingTable* GetTableByTargetName( const char* pName ) const; + + /** Returns the binding table that has the given target name. + * \param pName The target name of the table to look for. + * \return A pointer to the binding table with the given target name, or NULL if there is no such binding table. + */ + FbxBindingTable* GetTableByTargetName( const char* pName ); + + /** Returns the binding table that has the given target type. + * \param pTargetName The target type to look for. + * \return A const pointer to the binding table with the given target type, or NULL if there is no such binding table. + */ + const FbxBindingTable* GetTableByTargetType( const char* pTargetName ) const; + + /** Returns the binding table that has the given target type. + * \param pTargetName The target type to look for. + * \return A pointer to the binding table with the given target type, or NULL if there is no such binding table. + */ + FbxBindingTable* GetTableByTargetType( const char* pTargetName ); + + + /** Add a new binding operator to the operator list. + * \param pTargetName The target name for the binding operator. + * \param pFunctionName The function name for the binding operator. + * \return The new operator. + */ + FbxBindingOperator* AddNewBindingOperator( const char* pTargetName, const char* pFunctionName ); + + /** Gets the number of binding operators. + * \return the number of binding operators. + */ + int GetBindingOperatorCount() const; + + /** Returns the binding operator that has the given name. + * \param pTargetName The target name of the binding operator to look for. + * \return A const pointer to the binding operator with the given name, or NULL if there is no such binding table. + */ + const FbxBindingOperator* GetOperatorByTargetName( const char* pTargetName ) const; + //@} + + + /** + * \name Static values + */ + //@{ + + // property names + + /** Shader Language name. + * \see Language + */ + static const char* sLanguage; + + /** Shader Language version. + * \see LanguageVersion + */ + static const char* sLanguageVersion; + + /** Shader render API. + * \see RenderAPI + */ + static const char* sRenderAPI; + + /** Shader render API version. + * \see RenderAPIVersion + */ + static const char* sRenderAPIVersion; + + /** Name of root binding table. + * \see RootBindingName + */ + static const char* sRootBindingName; + + /** Name of property to store the shader parameters(constants) values in this implementation. + * \see GetConstants + */ + static const char* sConstants; + + //! default value for implementation type. + static const char* sDefaultType; + + //! default value for shader language. + static const char* sDefaultLanguage; + + //! default value for shader language version. + static const char* sDefaultLanguageVersion; + + //! default value for shader render API. + static const char* sDefaultRenderAPI; + + //! default value for shader render API version. + static const char* sDefaultRenderAPIVersion; + + //! default value for root binding table name. + static const char* sDefaultRootBindingName; + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void ConstructProperties(bool pForceSet); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_SHADING_IMPLEMENTATION_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbximplementationfilter.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbximplementationfilter.h new file mode 100644 index 00000000..85a18f43 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbximplementationfilter.h @@ -0,0 +1,116 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbximplementationfilter.h +#ifndef _FBXSDK_SCENE_SHADING_IMPLEMENTATION_FILTER_H_ +#define _FBXSDK_SCENE_SHADING_IMPLEMENTATION_FILTER_H_ + +#include + +#include + +#include + +class FbxCriteria; + +/** \brief This object represents a shading node filter criteria + * based on the shading node implementation. + * \nosubgrouping + */ +class FBXSDK_DLL FbxImplementationFilter : public FbxObjectFilter +{ + +public: + + /** The default shading API. + */ + static const char * sCHR_ANY_SHADING_API; + + /** The default shading API version. + */ + static const char * sCHR_ANY_SHADING_API_VERSION; + + /** The default shading language. + */ + static const char * sCHR_ANY_SHADING_LANGUAGE; + + /** The default shading language version. + */ + static const char * sCHR_ANY_SHADING_LANGUAGE_VERSION; + + + /** Constructor + * \param pShadingAPI a string containing the implementation API name: + * MentalRay + * OpenGL + * DirectX + * + * \param pShadingAPIVersion a string containing the implementation API version: + * eg. 1.0 + * + * \param pShadingLanguage a string identifying the implementation language name: + * GLSL = GL Shading Language + * HLSL = High Level Shading Language + * CGFX = CG effect(NVidia) + * RIB = RenderMan (RIB) + * etc... + * + * \param pShadingLanguageVersion a string identifying the implementation language version: + * eg. 1.0 + * + * \remarks by default the created criteria correspond to any shader + */ + FbxImplementationFilter( + const char * pShadingAPI = sCHR_ANY_SHADING_API, + const char * pShadingAPIVersion = sCHR_ANY_SHADING_API_VERSION, + const char * pShadingLanguage = sCHR_ANY_SHADING_LANGUAGE, + const char * pShadingLanguageVersion = sCHR_ANY_SHADING_LANGUAGE_VERSION + ); + + //! Destructor. + virtual ~FbxImplementationFilter(); + + /** Tells if this filter matches the given shading node implementation + * \param pObjectPtr The given shading node implementation + */ + virtual bool Match(const FbxObject * pObjectPtr) const; + + //! Stores the shading API + FbxString mShadingAPI; + + //! Stores the shading API Version + FbxString mShadingAPIVersion; + + //! Stores the shading language + FbxString mShadingLanguage; + + //! Stores the shading language version + FbxString mShadingLanguageVersion; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + /** Utility method to determine if the given object is a shading node + * that we recognize. + */ + static bool IsShadingObject( const FbxObject* pObject ); + + /** Returns a criteria suitable for use with querying connections + * to shading nodes that we recognize, on FbxObject. + */ + static FbxCriteria Criteria(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_SHADING_IMPLEMENTATION_FILTER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbximplementationutils.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbximplementationutils.h new file mode 100644 index 00000000..a3051649 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbximplementationutils.h @@ -0,0 +1,79 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbximplementationutils.h +#ifndef _FBXSDK_SCENE_SHADING_IMPLEMENTATION_UTILS_H_ +#define _FBXSDK_SCENE_SHADING_IMPLEMENTATION_UTILS_H_ + +#include + +#include +#include +#include +#include + +#include + +/** Get FbxImplementation from FbxObject. + * \param pObject FbxObject to get FbxImplementation. + * \param pImplementationTarget Name of the implementation property to get. + * \return FbxImplementation Pointer to FbxImplementation. + */ +FBXSDK_DLL const FbxImplementation* GetImplementation( const FbxObject* pObject, const char* pImplementationTarget ); + +/** Get bound property value from FbxBindingTable. + * \param pBindingTable FbxBindingTable to get bound property value. + * \param pEntryName Name of the Entry type to get. + * \param pImplementation FbxImplementation of the bound property value to get if the Entry type is FbxOperatorEntryView::sEntryType. + * \param pBoundObject FbxObject of the bound property value to get if the Entry type is FbxPropertyEntryView::sEntryType. + * \param pValue Pointer to bound property value from FbxBindingTable. + * \return Whether get bound property value success or not. + */ +template bool GetBoundPropertyValue(const FbxBindingTable* pBindingTable, + const char* pEntryName, + const FbxImplementation* pImplementation, + const FbxObject* pBoundObject, + T& pValue) +{ + if ((NULL != pImplementation) && (NULL != pBindingTable) && (NULL != pBoundObject) && (NULL != pEntryName)) + { + const FbxBindingTableEntry* lEntry = pBindingTable->GetEntryForDestination(pEntryName); + + if (NULL != lEntry) + { + if (strcmp(lEntry->GetEntryType(true), FbxPropertyEntryView::sEntryType) == 0) + { + const char* lPropName = lEntry->GetSource(); + FbxProperty lProp = pBoundObject->FindPropertyHierarchical(lPropName); + if (lProp.IsValid()) + { + pValue = lProp.Get(); + return true; + } + } + else if (strcmp(lEntry->GetEntryType(true), FbxOperatorEntryView::sEntryType) == 0) + { + const char* lOperatorName = lEntry->GetSource(); + const FbxBindingOperator* lOp = pImplementation->GetOperatorByTargetName(lOperatorName); + if (lOp) + { + return lOp->Evaluate(pBoundObject, &pValue); + } + } + } + } + + return false; +} + +#include + +#endif /* _FBXSDK_SCENE_SHADING_IMPLEMENTATION_UTILS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxlayeredtexture.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxlayeredtexture.h new file mode 100644 index 00000000..000a9a43 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxlayeredtexture.h @@ -0,0 +1,179 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxlayeredtexture.h +#ifndef _FBXSDK_SCENE_SHADING_LAYERED_TEXTURE_H_ +#define _FBXSDK_SCENE_SHADING_LAYERED_TEXTURE_H_ + +#include + +#include + +#include + +/** FbxLayeredTexture is a combination of multiple textures(FbxTexture) blended sequentially. + * For example, you can access individual texture by: + * \code + * FbxTexture* pIndiTexture = lLayeredTexture->GetSrcObject(FbxTexture::ClassId, pTextureIndex); + * \endcode + * Another example to construct a layered texture with two sub textures. + * \code + * FbxFileTexture *background, *file1; + * FbxLayeredTexture* layeredTexture; + * + * // connect two file textures to a layered texture via OO connections + * layeredTexture->ConnectSrcObject(background); + * layeredTexture->ConnectSrcObject(file1); + * + * // set the second file texture's blend mode and alpha. + * layeredTexture->SetTextureBlendMode(1, FbxLayeredTexture::eOver); + * layeredTexture->SetTextureAlpha(1, 0.5); + * \endcode + * \nosubgrouping + * \see FbxTexture + */ +class FBXSDK_DLL FbxLayeredTexture : public FbxTexture +{ + FBXSDK_OBJECT_DECLARE(FbxLayeredTexture, FbxTexture); + +public: + /** \enum EBlendMode Blend modes. + * - \e eTranslucent, The new texture layer is transparent (depending on the Alpha value). + * - \e eAdditive, Add the color of the new texture to the previous texture. + * - \e eModulate, Multiples the color value of the new texture by the color values of all previous layers of texture. + * - \e eModulate2, Multiples the color value of the new texture by two and then by the color values of all previous layers of texture. + * - \e eOver, Equivalent to eTranslucent. Blends the new texture over top of the old texture, according to the new texture's alpha channel. + * - \e eNormal, The colors of the two layers will not interact in any way, and it will display the full value of the colors in layer 1. + * - \e eDissolve, Dissolve makes the lower layer take on the colors of the top layer, and how much depends on the opacity of the upper layer. + * - \e eDarken, Darken compares each pixel value of the upper layer to its counterpart's pixel value of the lower layer and chooses the darker of the two to display. + * - \e eColorBurn, Color Burn burns in the color of the upper layer with the lower layer. No part of the image will get lighter. + * - \e eLinearBurn, Linear Burn works like multiply but the results are more intense. + * - \e eDarkerColor, This blend mode simply divides pixel values of one layer with the other. + * - \e eLighten, Lighten compares the two layers pixel for pixel and uses the lightest pixel value. No part of the image gets darker. + * - \e eScreen, Screen brightens by lightning the lower layer based on the lightness of the upper layer + * - \e eColorDodge, Color Dodge dodges the lower layer with the upper layer, resulting in a lighter image. No part of the image will be darkened. + * - \e eLinearDodge, Linear Dodge works like screen but with more intense results. + * - \e eLighterColor, This blend mode has the opposite effect of the Darker Color mode. It compares all the values in both layers, then displays the lightest values. + * - \e eSoftLight, Soft Light will multiply the dark tones and screen the light tones. + * - \e eHardLight, Hard Light multiplies the dark colors and screens the light colors. + * - \e eVividLight, Vivid Light will dodges or burn the lower layer pixels depending on whether the upper layer pixels are brighter or darker than neutral gray. It works on the contrast of the lower layer. + * - \e eLinearLight, Linear Light is the same as Vivid light but it works on the brightness of the lower layer. + * - \e ePinLight, Pin Light changes the lower layer pixels depending on how bright the pixels are in the upper layer. + * - \e eHardMix, Produces either white or black, depending on similarities between A and B. + * - \e eDifference, Difference reacts to the differences between the upper and lower layer pixels. + * - \e eExclusion, Exclusion uses the darkness of the lower layer to mask the difference between upper and lower layers. + * - \e eSubtract, The result color is the foreground color subtracted from the background color. The result color is then applied over the background color using the foreground alpha to define the opacity of the result. + * - \e eDivide, This blend mode simply divides pixel values of one layer with the other. + * - \e eHue, Hue changes the hue of the lower layer to the hue of the upper layer but leaves brightness and saturation alone. + * - \e eSaturation, Saturation changes the saturation of the lower layer to the hue of the upper layer but leaves brightness and hue alone. + * - \e eColor, Color changes the hue and saturation of the lower layer to the hue and saturation of the upper layer but leaves luminosity alone. + * - \e eLuminosity, Luminosity changes the luminosity of the lower layer to the luminosity of the upper layer while leaving hue and saturation the same. + * - \e eOverlay, Multiplies (darkens) when the layer on which the mode is set is dark and screens (brightens) when the layer on which the mode is applied is lighter. + * - \e eBlendModeCount, Marks the end of the blend mode enum. + */ + enum EBlendMode + { + eTranslucent, + eAdditive, + eModulate, + eModulate2, + eOver, + eNormal, + eDissolve, + eDarken, + eColorBurn, + eLinearBurn, + eDarkerColor, + eLighten, + eScreen, + eColorDodge, + eLinearDodge, + eLighterColor, + eSoftLight, + eHardLight, + eVividLight, + eLinearLight, + ePinLight, + eHardMix, + eDifference, + eExclusion, + eSubtract, + eDivide, + eHue, + eSaturation, + eColor, + eLuminosity, + eOverlay, + eBlendModeCount + }; + + /** Equivalence operator. + * \param pOther The object for comparison. + * \return \c True if pOther is equivalent to this object, returns \c false otherwise. + */ + bool operator==( const FbxLayeredTexture& pOther ) const; + + /** Sets the blending mode of a specified texture. + * \param pIndex The texture index. + * \param pMode The blend mode to be set. + * \return \c True if successful, returns \c false otherwise. + */ + bool SetTextureBlendMode( int pIndex, EBlendMode pMode ); + + /** Returns the blending mode of a specified texture + * \param pIndex The texture index. + * \param pMode The parameter that will hold the returned blend mode. + * \return \c True if successful, returns \c false otherwise. + */ + bool GetTextureBlendMode( int pIndex, EBlendMode& pMode ) const; + + /** Sets the alpha of a specified texture. + * \param pIndex The texture index. + * \param pAlpha The alpha to be set. + * \return \c True if successful, returns \c false otherwise. + */ + bool SetTextureAlpha( int pIndex, double pAlpha ); + + /** Returns the alpha of a specified texture + * \param pIndex The texture index. + * \param pAlpha The parameter that will hold the returned alpha. + * \return \c True if successful, returns \c false otherwise. + */ + bool GetTextureAlpha( int pIndex, double& pAlpha ) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + +protected: + struct InputData + { + EBlendMode mBlendMode; + double mAlpha; + }; + +public: + FbxArray mInputData; + +protected: + virtual bool ConnectNotify (FbxConnectEvent const &pEvent); + + bool RemoveInputData( int pIndex ); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +inline EFbxType FbxTypeOf(const FbxLayeredTexture::EBlendMode&){ return eFbxEnum; } + +#include + +#endif /* _FBXSDK_SCENE_SHADING_LAYERED_TEXTURE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxlayerentryview.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxlayerentryview.h new file mode 100644 index 00000000..0d20fff4 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxlayerentryview.h @@ -0,0 +1,89 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxlayerentryview.h +#ifndef _FBXSDK_SCENE_SHADING_LAYER_ENTRY_VIEW_H_ +#define _FBXSDK_SCENE_SHADING_LAYER_ENTRY_VIEW_H_ + +#include + +#include +#include +#include + +#include + +class FbxLayerContainer; + +/** FbxLayerEntryView encodes a layer element representation (the index of the layer, the type of the layer + * element and whether the layer element is a UVSet layer element) to a string stored in FbxBindingTableEntry + * and decodes the string back to a layer element representation. + * This class is used in combination with FbxBindingTableEntry to represent a source or a destination + * FbxLayerElement. + * \see FbxBindingTableEntry and FbxBindingTable. + */ +class FBXSDK_DLL FbxLayerEntryView : public FbxEntryView +{ +public: + + /** Name of the entry type used in the binding entry. + * It should be "FbxLayerEntry" in this case. + */ + static const char* sEntryType; + + /** Constructor. + * \param pEntry The binding table entry to create the entry view for. + * \param pAsSource \c true to create the entry view as source, \c false as destination. + * \param pCreate \c true to create the entry view, \c false otherwise. + */ + FbxLayerEntryView(FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); + + //! Destructor. + virtual ~FbxLayerEntryView(); + + /** Set the layer element for the binding entry. + * \param pLayerIndex LayerElement index. + * \param pType LayerElement type. + * \param pUVSet Whether this is a UVSet LayerElement. + */ + void SetLayerElement( int pLayerIndex, FbxLayerElement::EType pType, bool pUVSet ); + + /** Get the layer element for binding entry. + * \param pLayerIndex LayerElement index. + * \param pType LayerElement type. + * \param pUVSet Whether this is a UVSet LayerElement. + */ + void GetLayerElement( int &pLayerIndex, FbxLayerElement::EType& pType, bool& pUVSet ) const; + + /** Get the layer element for binding entry. + * \param pContainer FbxLayerContainer to get the layer element from. + * \return The layer element for binding entry. + */ + FbxLayerElement* GetLayerElement( FbxLayerContainer* pContainer ) const; + + /** Get the entry type. + * \return Entry type as string "FbxLayerEntry". + * \remarks Always use EntryType() to get the right entry type. + */ + virtual const char* EntryType() const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + static const char* sDelimiter; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_SHADING_LAYER_ENTRY_VIEW_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxoperatorentryview.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxoperatorentryview.h new file mode 100644 index 00000000..07cfdf30 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxoperatorentryview.h @@ -0,0 +1,66 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxoperatorentryview.h +#ifndef _FBXSDK_SCENE_SHADING_OPERATOR_ENTRY_VIEW_H_ +#define _FBXSDK_SCENE_SHADING_OPERATOR_ENTRY_VIEW_H_ + +#include + +#include + +#include + +class FbxBindingTableEntry; + +/** FbxOperatorEntryView represents binding operator entry in entry tables. + * The binding operator can be used as source or destination for the binding entry. + * \see FbxBindingTableEntry and FbxBindingTable. + * \nosubgrouping + */ +class FBXSDK_DLL FbxOperatorEntryView : public FbxEntryView +{ +public: + /** Name of the entry type used in the binding entry. + * It should be "FbxOperatorEntry" in this case. + */ + static const char* sEntryType; + + /** Constructor. + * \param pEntry The binding table entry to create the entry view for. + * \param pAsSource \c true to create the entry view as source, \c false as destination. + * \param pCreate \c true to create the entry view, \c false otherwise. + */ + FbxOperatorEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); + + //! Destructor. + ~FbxOperatorEntryView(); + + /** Get the operator name from the binding entry. + * \return The operator name. + */ + const char* GetOperatorName() const; + + /** Set the operator name to the binding entry. + * \param pName The operator name to set. + */ + void SetOperatorName(const char* pName); + + /** Get the entry type. + * \return Entry type as string "FbxOperatorEntry". + * \remarks Always use EntryType() to get the right entry type. + */ + virtual const char* EntryType() const; +}; + +#include + +#endif /* _FBXSDK_SCENE_SHADING_OPERATOR_ENTRY_VIEW_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxproceduraltexture.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxproceduraltexture.h new file mode 100644 index 00000000..07c89358 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxproceduraltexture.h @@ -0,0 +1,82 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxproceduraltexture.h +#ifndef _FBXSDK_SCENE_SHADING_TEXTURE_PROCEDURAL_H_ +#define _FBXSDK_SCENE_SHADING_TEXTURE_PROCEDURAL_H_ + +#include + +#include + +#include + +/** Contains the information to generate a texture procedurally. Data information for the texture + * generation is contained in a blob property. + * \see FbxTexture + * \nosubgrouping + */ +class FBXSDK_DLL FbxProceduralTexture : public FbxTexture +{ + FBXSDK_OBJECT_DECLARE(FbxProceduralTexture, FbxTexture); + + public: + /** + * \name Procedural Texture Properties + */ + //@{ + + /** This property handles the raw data for generating procedural texture. + */ + FbxPropertyT BlobProp; + + /** Resets the default procedural texture values. + */ + void Reset(); + + //@} + + /** + * \name Property Access Methods + */ + //@{ + + /** Sets the blob. + * \param pBlob Blob containing information for the procedural texture + */ + void SetBlob(FbxBlob& pBlob); + + /** Get the blob. + * \return Blob containing information for the procedural texture + */ + FbxBlob GetBlob() const; + + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + + bool operator==(FbxProceduralTexture const& pTexture) const; + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + + void Init(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_SHADING_TEXTURE_PROCEDURAL_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxpropertyentryview.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxpropertyentryview.h new file mode 100644 index 00000000..c3fcb77e --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxpropertyentryview.h @@ -0,0 +1,82 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxpropertyentryview.h +#ifndef _FBXSDK_SCENE_SHADING_PROPERTY_ENTRY_VIEW_H_ +#define _FBXSDK_SCENE_SHADING_PROPERTY_ENTRY_VIEW_H_ + +#include + +#include +#include + +#include + +/** FbxPropertyEntryView represents property entry in entry tables. + * The property can be used as source or destination for the binding entry. + * Use this class to manipulate binding table's attributes. + * + * \code Here is a code snippet to show how it used. + * FbxProperty lProp; + * FbxBindingTable lTable; + * FbxBindingTableEntry& lEntry = lBindingTable.AddNewEntry(); + * FbxPropertyEntryView lView( lEntry, true, true); + * lView.SetProperty( lProp.GetName()); + * \endcode + * + * \see FbxBindingTableEntry and FbxBindingTable. + * + * \nosubgrouping + */ +class FBXSDK_DLL FbxPropertyEntryView : public FbxEntryView +{ +public: + + /** Name of the entry type used in the binding entry. + * It should be "FbxPropertyEntry" in this case. + */ + static const char* sEntryType; + + /** + * \name Constructor and Destructor. + */ + //@{ + /** Constructor. + * \param pEntry The binding table entry to create the entry view for. + * \param pAsSource \c true to create the entry view as source, \c false as destination. + * \param pCreate \c true to create the entry view, \c false otherwise. + */ + FbxPropertyEntryView( FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false ); + + //! Destructor. + ~FbxPropertyEntryView(); + //@} + + /** Get the property name from the binding entry. + * \return The property name. + */ + const char* GetProperty() const; + + /** Set the property name to the binding entry. + * \param pPropertyName The property name to set. + */ + void SetProperty(const char* pPropertyName); + + /** Get the entry type. + * \return Entry type as string "FbxPropertyEntry". + * \remarks Always use EntryType() to get the right entry type. + */ + virtual const char* EntryType() const; +}; + +#include + +#endif /* _FBXSDK_SCENE_SHADING_PROPERTY_ENTRY_VIEW_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxsemanticentryview.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxsemanticentryview.h new file mode 100644 index 00000000..a852cd22 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxsemanticentryview.h @@ -0,0 +1,91 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxsemanticentryview.h +#ifndef _FBXSDK_SCENE_SHADING_SEMANTIC_ENTRY_VIEW_H_ +#define _FBXSDK_SCENE_SHADING_SEMANTIC_ENTRY_VIEW_H_ + +#include + +#include +#include + +#include + +/** FbxSemanticEntryView stores a binding corresponding to + * a semantic within a shader file. + * A shader semantic is a parameter, a constant or an operator. + * So a shader semantic could bind with FbxProperty ( parameter, constant) and FbxBindingOperator (operator). + * + * Here is a code snippet to show how it used. + * \code + * FbxProperty lProp; + * FbxBindingTable lTable; + * FbxBindingTableEntry& lEntry = lBindingTable.AddNewEntry(); + * FbxPropertyEntryView lSrcView( lEntry, true, true); + * lSrcView.SetProperty( lProp.GetHierarchicalName()); + * FbxSemanticEntryView lDstView( &pEntry, false, true ); + * lDstView.SetSemantic( lProp.Getname()); + * \endcode + * + * \see FbxBindingTableEntry and FbxBindingTable. + * \nosubgrouping + */ +class FBXSDK_DLL FbxSemanticEntryView : public FbxEntryView +{ +public: + + /** Name of the entry type used in the binding entry. + * It should be "FbxSemanticEntry" in this case. + */ + static const char* sEntryType; + + /** + * \name Constructor and Destructor. + */ + //@{ + /** Constructor. + * \param pEntry The binding table entry to create the entry view for. + * \param pAsSource \c true to create the entry view as source, \c false as destination. + * \param pCreate \c true to create the entry view, \c false otherwise. + */ + FbxSemanticEntryView (FbxBindingTableEntry* pEntry, bool pAsSource, bool pCreate = false); + + //! Destructor. + virtual ~FbxSemanticEntryView(); + //@} + + /** Set the semantic to the binding entry. + * \param pSemantic The semantic string to set. + */ + void SetSemantic( const char* pSemantic ); + + /** Get the semantic from the binding entry. + * \param pAppendIndex \c true if the returned semantic append a index, \c false otherwise. + * \return The semantic. + */ + FbxString GetSemantic(bool pAppendIndex = true) const; + + /** Get the semantic index suffix. + * \return Semantic index suffix. + */ + int GetIndex() const; + + /** Get the entry type. + * \return Entry type as string "FbxSemanticEntry". + * \remarks Always use EntryType() to get the right entry type. + */ + virtual const char* EntryType() const; +}; + +#include + +#endif /* _FBXSDK_SCENE_SHADING_SEMANTIC_ENTRY_VIEW_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxshadingconventions.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxshadingconventions.h new file mode 100644 index 00000000..010ec50e --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxshadingconventions.h @@ -0,0 +1,62 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxshadingconventions.h +#ifndef _FBXSDK_SCENE_SHADING_CONVENTIONS_H_ +#define _FBXSDK_SCENE_SHADING_CONVENTIONS_H_ + +#include + +#include + +//Predefined shader languages +#define FBXSDK_SHADING_LANGUAGE_HLSL "HLSL" +#define FBXSDK_SHADING_LANGUAGE_GLSL "GLSL" +#define FBXSDK_SHADING_LANGUAGE_CGFX "CGFX" +#define FBXSDK_SHADING_LANGUAGE_SFX "SFX" +#define FBXSDK_SHADING_LANGUAGE_MRSL "MentalRaySL" + +//Predefined rendering APIs +#define FBXSDK_RENDERING_API_DIRECTX "DirectX" +#define FBXSDK_RENDERING_API_OPENGL "OpenGL" +#define FBXSDK_RENDERING_API_MENTALRAY "MentalRay" +#define FBXSDK_RENDERING_API_PREVIEW "PreviewColorAPI" + +#define FBXSDK_IMPLEMENTATION_PREVIEW "ImplementationPreview" +#define FBXSDK_IMPLEMENTATION_MENTALRAY "ImplementationMentalRay" +#define FBXSDK_IMPLEMENTATION_CGFX "ImplementationCGFX" +#define FBXSDK_IMPLEMENTATION_HLSL "ImplementationHLSL" +#define FBXSDK_IMPLEMENTATION_SFX "ImplementationSFX" +#define FBXSDK_IMPLEMENTATION_OGS "ImplementaitonOGS" +#define FBXSDK_IMPLEMENTATION_NONE "ImplementationNone" + +//PROTEIN 1.0 conventions +#define FBXSDK_TYPE_ENVIRONMENT "KFbxEnvironment" +#define FBXSDK_TYPE_LIGHT "KFbxLight" +#define FBXSDK_TYPE_PROCEDURALGEOMETRY "KFbxProceduralGeometry" +#define FBXSDK_TYPE_SURFACEMATERIAL "KFbxSurfaceMaterial" +#define FBXSDK_TYPE_TEXTURE "KFbxTexture" +#define FBXSDK_TYPE_SWATCHSCENE "KFbxSwatchScene" + +//PROTEIN 2.0 conventions +#define ADSK_TYPE_ENVIRONMENT "ADSKEnvironmentDefinition" +#define ADSK_TYPE_LIGHT "ADSKLightDefinition" +#define ADSK_TYPE_PROCEDURALGEOMETRY "ADSKProceduralGeometryDefinition" +#define ADSK_TYPE_SURFACEMATERIAL "ADSKSurfaceMaterialDefinition" +#define ADSK_TYPE_TEXTURE "ADSKTextureDefinition" +#define ADSK_TYPE_SWATCHSCENE "ADSKSwatchSceneDefinition" + +//ASSET Definition conventions +#define ADSK_UI_DEFINITION_URL "UIDefinition" + +#include + +#endif /* _FBXSDK_SCENE_SHADING_CONVENTIONS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxsurfacelambert.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxsurfacelambert.h new file mode 100644 index 00000000..5b8afdf8 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxsurfacelambert.h @@ -0,0 +1,143 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxsurfacelambert.h +#ifndef _FBXSDK_SCENE_SHADING_SURFACE_LAMBERT_H_ +#define _FBXSDK_SCENE_SHADING_SURFACE_LAMBERT_H_ + +#include + +#include + +#include + +/** This class contains settings for Lambert Materials. + * \nosubgrouping + */ +class FBXSDK_DLL FbxSurfaceLambert : public FbxSurfaceMaterial +{ + FBXSDK_OBJECT_DECLARE(FbxSurfaceLambert,FbxSurfaceMaterial); + +public: + /** + * \name Material properties + */ + //@{ + + //! Emissive color property. + FbxPropertyT Emissive; + + /** Emissive factor property. This factor is used to + * attenuate the emissive color. + */ + FbxPropertyT EmissiveFactor; + + //! Ambient color property. + FbxPropertyT Ambient; + + /** Ambient factor property. This factor is used to + * attenuate the ambient color. + */ + FbxPropertyT AmbientFactor; + + //! Diffuse color property. + FbxPropertyT Diffuse; + + /** Diffuse factor property. This factor is used to + * attenuate the diffuse color. + */ + FbxPropertyT DiffuseFactor; + + /** NormalMap property. This property can be used to specify the distortion of the surface + * normals and create the illusion of a bumpy surface. + */ + FbxPropertyT NormalMap; + + /** Bump property. This property is used to distort the + * surface normal and create the illusion of a bumpy surface. + */ + FbxPropertyT Bump; + + /** Bump factor property. This factor is used to + * make a surface more or less bumpy. + */ + FbxPropertyT BumpFactor; + + //! Transparent color property. + FbxPropertyT TransparentColor; + + /** Transparency factor property. This property is used to make a + * surface more or less opaque (0 = opaque, 1 = transparent). + */ + FbxPropertyT TransparencyFactor; + + //! Displacement color property. + FbxPropertyT DisplacementColor; + + //! Displacement factor property. + FbxPropertyT DisplacementFactor; + + //! Vector displacement color property. + FbxPropertyT VectorDisplacementColor; + + //! Vector displacement factor property. + FbxPropertyT VectorDisplacementFactor; + + //@} + + ////////////////////////////////////////////////////////////////////////// + // Static values + ////////////////////////////////////////////////////////////////////////// + + /** + * \name Default property values + */ + //@{ + + static const FbxDouble3 sEmissiveDefault; + static const FbxDouble sEmissiveFactorDefault; + + static const FbxDouble3 sAmbientDefault; + static const FbxDouble sAmbientFactorDefault; + + static const FbxDouble3 sDiffuseDefault; + static const FbxDouble sDiffuseFactorDefault; + + static const FbxDouble3 sBumpDefault; + static const FbxDouble3 sNormalMapDefault; + static const FbxDouble sBumpFactorDefault; + + static const FbxDouble3 sTransparentDefault; + static const FbxDouble sTransparencyFactorDefault; + + static const FbxDouble3 sDisplacementDefault; + static const FbxDouble sDisplacementFactorDefault; + + static const FbxDouble3 sVectorDisplacementDefault; + static const FbxDouble sVectorDisplacementFactorDefault; + + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void ConstructProperties(bool pForceSet); + + // Local + void Init(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_SHADING_SURFACE_LAMBERT_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxsurfacematerial.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxsurfacematerial.h new file mode 100644 index 00000000..2683703e --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxsurfacematerial.h @@ -0,0 +1,106 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxsurfacematerial.h +#ifndef _FBXSDK_SCENE_SHADING_SURFACE_MATERIAL_H_ +#define _FBXSDK_SCENE_SHADING_SURFACE_MATERIAL_H_ + +#include + +#include + +#include + +/** This class contains material settings. + * \nosubgrouping + */ +class FBXSDK_DLL FbxSurfaceMaterial : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxSurfaceMaterial, FbxObject); + +public: + /** + * \name Standard Material Property Names + */ + //@{ + + static const char* sShadingModel; + static const char* sMultiLayer; + + static const char* sEmissive; + static const char* sEmissiveFactor; + + static const char* sAmbient; + static const char* sAmbientFactor; + + static const char* sDiffuse; + static const char* sDiffuseFactor; + + static const char* sSpecular; + static const char* sSpecularFactor; + static const char* sShininess; + + static const char* sBump; + static const char* sNormalMap; + static const char* sBumpFactor; + + static const char* sTransparentColor; + static const char* sTransparencyFactor; + + static const char* sReflection; + static const char* sReflectionFactor; + + static const char* sDisplacementColor; + static const char* sDisplacementFactor; + + static const char* sVectorDisplacementColor; + static const char* sVectorDisplacementFactor; + //@} + + /** + * \name Material Properties + */ + //@{ + FbxPropertyT ShadingModel; + FbxPropertyT MultiLayer; + //@} + + ////////////////////////////////////////////////////////////////////////// + // Static values + ////////////////////////////////////////////////////////////////////////// + + /** + * \name Default property values + */ + //@{ + + static const FbxBool sMultiLayerDefault; + static const char* sShadingModelDefault; + + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + bool SetColorParameter(FbxProperty pProperty, FbxColor const& pColor); + bool GetColorParameter(FbxProperty pProperty, FbxColor& pColor) const; + bool SetDoubleParameter(FbxProperty pProperty, double pDouble); + bool GetDoubleParameter(FbxProperty pProperty, double pDouble) const; + + virtual void ConstructProperties(bool pForceSet); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_SHADING_SURFACE_MATERIAL_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxsurfacephong.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxsurfacephong.h new file mode 100644 index 00000000..e463f8e1 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxsurfacephong.h @@ -0,0 +1,92 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxsurfacephong.h +#ifndef _FBXSDK_SCENE_SHADING_SURFACE_PHONG_H_ +#define _FBXSDK_SCENE_SHADING_SURFACE_PHONG_H_ + +#include + +#include + +#include + +/** This class contains settings for Phong Materials. + * \nosubgrouping + */ +class FBXSDK_DLL FbxSurfacePhong : public FbxSurfaceLambert +{ + FBXSDK_OBJECT_DECLARE(FbxSurfacePhong, FbxSurfaceLambert); + +public: + /** + * \name Material properties + */ + //@{ + //! Specular property. + FbxPropertyT Specular; + + /** Specular factor property. This factor is used to + * attenuate the specular color. + */ + FbxPropertyT SpecularFactor; + + /** Shininess property. This property controls the aspect + * of the shiny spot. It is the specular exponent in the Phong + * illumination model. + */ + FbxPropertyT Shininess; + + /** Reflection color property. This property is used to + * implement reflection mapping. + */ + FbxPropertyT Reflection; + + /** Reflection factor property. This property is used to + * attenuate the reflection color. + */ + FbxPropertyT ReflectionFactor; + //@} + + ////////////////////////////////////////////////////////////////////////// + // Static values + ////////////////////////////////////////////////////////////////////////// + + /** + * \name Default property values + */ + //@{ + + static const FbxDouble3 sSpecularDefault; + static const FbxDouble sSpecularFactorDefault; + + static const FbxDouble sShininessDefault; + + static const FbxDouble3 sReflectionDefault; + static const FbxDouble sReflectionFactorDefault; + + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void ConstructProperties(bool pForceSet); + + // Local + void Init(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_SCENE_SHADING_SURFACE_PHONG_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxtexture.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxtexture.h new file mode 100644 index 00000000..9e88b86c --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/scene/shading/fbxtexture.h @@ -0,0 +1,577 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxtexture.h +#ifndef _FBXSDK_SCENE_SHADING_TEXTURE_H_ +#define _FBXSDK_SCENE_SHADING_TEXTURE_H_ + +#include + +#include + +#include + +/** This class is the base class for textures, ie classes FbxFileTexture, FbxLayeredTexture and FbxProceduralTexture. + * It describes image mapping on top of a geometry. + * \nosubgrouping + */ +class FBXSDK_DLL FbxTexture : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxTexture, FbxObject); + +public: + /** + * \name Texture Properties + */ + //@{ + /** \enum EUnifiedMappingType Internal enum for texture mapping types. + * Includes mapping types and planar mapping normal orientations. + * Use SetMappingType(), GetMappingType(), SetPlanarMappingNormal() + * and GetPlanarMappingNormal() to access these values. + */ + enum EUnifiedMappingType + { + eUMT_UV, //! Maps to EMappingType::eUV. + eUMT_XY, //! Maps to EMappingType::ePlanar and EPlanarMappingNormal::ePlanarNormalZ. + eUMT_YZ, //! Maps to EMappingType::ePlanar and EPlanarMappingNormal::ePlanarNormalX. + eUMT_XZ, //! Maps to EMappingType::ePlanar and EPlanarMappingNormal::ePlanarNormalY. + eUMT_SPHERICAL, //! Maps to EMappingType::eSpherical. + eUMT_CYLINDRICAL, //! Maps to EMappingType::eCylindrical. + eUMT_ENVIRONMENT, //! Maps to EMappingType::eEnvironment. + eUMT_PROJECTION, //! Unused. + eUMT_BOX, //! DEPRECATED! Maps to EMappingType::eBox. + eUMT_FACE, //! DEPRECATED! Maps to EMappingType::eFace. + eUMT_NO_MAPPING, //! Maps to EMappingType::eNull. + }; + + /** \enum ETextureUse6 Internal enum for texture usage. + * For example, the texture might be used as a standard texture, as a shadow map, as a bump map, etc. + * Use SetTextureUse() and GetTextureUse() to access these values. + */ + enum ETextureUse6 + { + eTEXTURE_USE_6_STANDARD, //! Maps to ETextureUse::eStandard. + eTEXTURE_USE_6_SPHERICAL_REFLEXION_MAP, //! Maps to ETextureUse::eSphericalReflectionMap. + eTEXTURE_USE_6_SPHERE_REFLEXION_MAP, //! Maps to ETextureUse::eSphereReflectionMap. + eTEXTURE_USE_6_SHADOW_MAP, //! Maps to ETextureUse::eShadowMap. + eTEXTURE_USE_6_LIGHT_MAP, //! Maps to ETextureUse::eLightMap. + eTEXTURE_USE_6_BUMP_NORMAL_MAP //! Maps to ETextureUse::eBumpNormalMap. + }; + + /** \enum EWrapMode Wrap modes. + * Use SetWrapMode(), GetWrapModeU() and GetWrapModeV() to access these values. + */ + enum EWrapMode + { + eRepeat, //! Apply the texture over and over on the model's surface until the model is covered. This is the default setting. + eClamp //! Apply the texture to a model only once, using the color at the ends of the texture as the "filter". + }; + + /** \enum EBlendMode Blend modes. + */ + enum EBlendMode + { + eTranslucent, //! The texture is transparent, depending on the Alpha settings. + eAdditive, //! The color of the texture is added to the previous texture. + eModulate, //! The color value of the texture is multiplied by the color values of all previous layers of texture. + eModulate2, //! The color value of the texture is multiplied by two and then multiplied by the color values of all previous layers of texture. + eOver //! The texture is opaque. + }; + + /** \enum EAlignMode Align indices for cropping. + */ + enum EAlignMode + { + eLeft, //! Left cropping. + eRight, //! Right cropping. + eTop, //! Top cropping. + eBottom //! Bottom cropping. + }; + + /** \enum ECoordinates Texture coordinates. + */ + enum ECoordinates + { + eU, //! U axis. + eV, //! V axis. + eW //! W axis. + }; + + // Type description + + /** This property handles the use of textures. + * Default value is eTEXTURE_USE_6_STANDARD. + */ + FbxPropertyT TextureTypeUse; + + /** This property handles the default alpha value for textures. + * Default value is 1.0 + */ + FbxPropertyT Alpha; + + + // Mapping information + + /** This property handles the texture mapping types. + * Default value is eUMT_UV. + */ + FbxPropertyT CurrentMappingType; + + /** This property handles the texture wrap modes in U. + * Default value is eRepeat. + */ + FbxPropertyT WrapModeU; + + /** This property handles the texture wrap modes in V. + * Default value is eRepeat. + */ + FbxPropertyT WrapModeV; + + /** This property handles the swap UV flag. + * If swap UV flag is enabled, the texture's width and height are swapped. + * Default value is false. + */ + FbxPropertyT UVSwap; + + /** This property handles the PremultiplyAlpha flag. + * If PremultiplyAlpha flag is true, the R, G, and B components you store have already been multiplied in with the alpha. + * Default value is true. + */ + FbxPropertyT PremultiplyAlpha; + + // Texture positioning + + /** This property handles the default translation vector. + * Default value is FbxDouble3(0.0,0.0,0.0). + */ + FbxPropertyT Translation; + + /** This property handles the default rotation vector. + * Default value is FbxDouble3(0.0,0.0,0.0). + */ + FbxPropertyT Rotation; + + /** This property handles the default scale vector. + * Default value is FbxDouble3(1.0,1.0,1.0). + */ + FbxPropertyT Scaling; + + /** This property handles the rotation pivot vector. + * Default value is FbxDouble3(0.0,0.0,0.0). + */ + FbxPropertyT RotationPivot; + + /** This property handles the scaling pivot vector. + * Default value is FbxDouble3(0.0,0.0,0.0). + */ + FbxPropertyT ScalingPivot; + + // Blend mode + /** This property handles the texture blend mode. + * Default value is eAdditive. + */ + FbxPropertyT CurrentTextureBlendMode; + + // UV set to use. + /** This property handles the use of UV sets. + * Default value is "default". + */ + FbxPropertyT UVSet; + + /** This property only used by Vector Displacement Texture so it is not added to FbxTexture. + * It is a dynamic enum property which has values : "World", "Object" and "Tangent" + * Default value is "Object". + */ + static const char* sVectorSpace ; + static const char* sVectorSpaceWorld ; + static const char* sVectorSpaceObject ; + static const char* sVectorSpaceTangent ; + + /** This property only used by Vector Displacement Texture so it is not added to FbxTexture. + * It is a dynamic enum property which has values : "Floating-point Absolute" and "Signed Encoding" + * Default value is "Floating-point Absolute". + */ + static const char* sVectorEncoding ; + static const char* sVectorEncodingFP ; + static const char* sVectorEncodingSE ; + + + /** Resets the default texture values. + */ + virtual void Reset(); + + /** Sets the swap UV flag. + * \param pSwapUV Set to \c true if the swap UV flag is enabled. + * \remarks If the swap UV flag is enabled, the texture's width and height are swapped. + */ + void SetSwapUV(bool pSwapUV); + + /** Returns the swap UV flag. + * \return \c True if the swap UV flag is enabled. + * \remarks If the swap UV flag is enabled, the texture's width and height are swapped. + */ + bool GetSwapUV() const; + + /** Sets the PremultiplyAlpha flag. + * \param pPremultiplyAlpha Set to \c true if the method of storing alpha is PremultiplyAlpha. + * \remarks If PremultiplyAlpha flag is true, the R, G, and B components you store have already been multiplied in with the alpha. + */ + void SetPremultiplyAlpha(bool pPremultiplyAlpha); + + /** Returns the PremultiplyAlpha flag. + * \return \c True if the method of storing alpha is PremultiplyAlpha. + * \remarks If PremultiplyAlpha flag is true, the R, G, and B components you store have already been multiplied in with the alpha. + */ + bool GetPremultiplyAlpha() const; + + /** \enum EAlphaSource Controls if the Alpha computation of the current texture comes from the Alpha channel, RGB Intensity channel, or if there is No Alpha. + */ + enum EAlphaSource + { + eNone, //! No Alpha. + eRGBIntensity, //! RGB Intensity (computed). + eBlack //! Alpha channel. Black is 100% transparency, white is opaque. + }; + + /** Sets the alpha source. + * \param pAlphaSource The alpha source identifier. + */ + void SetAlphaSource(EAlphaSource pAlphaSource); + + /** Returns the alpha source. + * \return The alpha source identifier for this texture. + */ + EAlphaSource GetAlphaSource() const; + + /** Sets cropping. + * \param pLeft Left cropping value. + * \param pTop Top cropping value. + * \param pRight Right cropping value. + * \param pBottom Bottom cropping value. + * \remarks The defined rectangle is not checked for invalid values. + * The caller must verify that the rectangle + * is meaningful for this texture. + */ + void SetCropping(int pLeft, int pTop, int pRight, int pBottom); + + /** Returns left cropping. + * \return The left side of the cropping rectangle. + */ + int GetCroppingLeft() const; + + /** Returns top cropping. + * \return The top side of the cropping rectangle. + */ + int GetCroppingTop() const; + + /** Returns right cropping. + * \return The right side of the cropping rectangle. + */ + int GetCroppingRight() const; + + /** Returns bottom cropping. + * \return The bottom side of the cropping rectangle. + */ + int GetCroppingBottom() const; + + /** \enum EMappingType Texture mapping types. + */ + enum EMappingType + { + eNull, //! No texture mapping defined. + ePlanar, //! Apply texture to the model viewed as a plane. + eSpherical, //! Wrap texture around the model as if it was a sphere. + eCylindrical, //! Wrap texture around the model as if it was a cylinder. + eBox, //! Wrap texture around the model as if it was a box. + eFace, //! Apply texture to the model viewed as a face. + eUV, //! Apply texture to the model according to UVs. + eEnvironment //! Texture is an environment map. + }; + + /** Sets the mapping type. + * \param pMappingType The mapping type identifier. + */ + void SetMappingType(EMappingType pMappingType); + + /** Returns the mapping type. + * \return The mapping type identifier. + */ + EMappingType GetMappingType() const; + + /** \enum EPlanarMappingNormal Planar mapping normal orientations. + */ + enum EPlanarMappingNormal + { + ePlanarNormalX, //! Normals are in the direction of the X axis, mapping plan is in the YZ axis. + ePlanarNormalY, //! Normals are in the direction of the Y axis, mapping plan is in the XZ axis. + ePlanarNormalZ //! Normals are in the direction of the Z axis, mapping plan is in the XY axis. + }; + + /** Sets the normal orientations for planar mapping. + * \param pPlanarMappingNormal The identifier for planar mapping normal orientation. + */ + void SetPlanarMappingNormal(EPlanarMappingNormal pPlanarMappingNormal); + + /** Returns the normal orientations for planar mapping. + * \return The identifier for planar mapping normal orientation. + */ + EPlanarMappingNormal GetPlanarMappingNormal() const; + + /** \enum ETextureUse Texture uses. + */ + enum ETextureUse + { + eStandard, //! Standard texture use (ex. image) + eShadowMap, //! Shadow map + eLightMap, //! Light map + eSphericalReflectionMap, //! Spherical reflection map: Object reflects the contents of the scene + eSphereReflectionMap, //! Sphere reflection map: Object reflects the contents of the scene from only one point of view + eBumpNormalMap //! Bump map: Texture contains two direction vectors, that are used to convey relief in a texture. + }; + + /** Sets the texture use. + * \param pTextureUse The texture use identifier. + */ + void SetTextureUse(ETextureUse pTextureUse); + + /** Returns the texture use. + * \return The texture use identifier. + */ + ETextureUse GetTextureUse() const; + + + /** Sets the U and V wrap mode. + * \param pWrapU Wrap mode identifier. + * \param pWrapV Wrap mode identifier. + */ + void SetWrapMode(EWrapMode pWrapU, EWrapMode pWrapV); + + /** Returns the U wrap mode. + * \return U wrap mode identifier. + */ + EWrapMode GetWrapModeU() const; + + /** Returns the V wrap mode. + * \return V wrap mode identifier. + */ + EWrapMode GetWrapModeV() const; + + + /** Sets the blend mode. + * \param pBlendMode Blend mode identifier. + */ + void SetBlendMode(EBlendMode pBlendMode); + + /** Returns the blend mode. + * \return Blend mode identifier. + */ + EBlendMode GetBlendMode() const; + + //@} + + /** + * \name Default Values Management By Vectors + * This set of functions provides direct access to the default values in vector base. + */ + //@{ + + /** Sets the default translation vector. + * \param pT The first element is the U translation applied to + * the texture. A displacement of one unit is equal to the texture + * width after the U scaling is applied. The second element is the + * V translation applied to the texture. A displacement of one unit is + * equal to the texture height after the V scaling is applied. + * The third and fourth elements have no effect on texture + * translation. + */ + inline void SetDefaultT(const FbxVector4& pT) { Translation.Set( pT ); } + + /** Returns the default translation vector. + * \param pT The first element is the U translation applied to + * the texture. A displacement of one unit is equal to the texture + * width after the U scaling is applied. The second element is the + * V translation applied to the texture. A displacement of one unit is + * equal to the texture height after the V scaling is applied. + * The third and fourth elements have no effect on texture + * translation. + * \return The input parameter completed with appropriate data. + */ + FbxVector4& GetDefaultT(FbxVector4& pT) const; + + /** Sets the default rotation vector. + * \param pR The first element is the texture rotation around the + * U axis in degrees. The second element is the texture rotation + * around the V axis in degrees. The third element is the texture + * rotation around the W axis in degrees. + * \remarks The W axis is oriented toward the result of the + * vector product of the U and V axes that is W = U x V. + */ + inline void SetDefaultR(const FbxVector4& pR) { Rotation.Set( FbxDouble3(pR[0],pR[1],pR[2]) ); } + + /** Returns the default rotation vector. + * \param pR First element is the texture rotation around the + * U axis in degrees. Second element is the texture rotation + * around the V axis in degrees. Third element is the texture + * rotation around the W axis in degrees. + * \return Input parameter filled with appropriate data. + * \remarks The W axis is oriented towards the result of the + * vector product of the U axis and V axis i.e. W = U x V. + */ + FbxVector4& GetDefaultR(FbxVector4& pR) const; + + /** Sets the default scale vector. + * \param pS The first element is scale applied to the texture width. + * The second element is scale applied to the texture height. The third + * and fourth elements have no effect on the texture. + * \remarks A scale value less than 1 stretches the texture. + * A scale value greater than 1 compresses the texture. + */ + inline void SetDefaultS(const FbxVector4& pS) { Scaling.Set( FbxDouble3(pS[0],pS[1],pS[2]) ); } + + /** Returns the default scale vector. + * \param pS The first element is scale applied to the texture width. + * The second element is scale applied to the texture height. The third + * and fourth elements have no effect on the texture. + * \remarks A scale value less than 1 stretches the texture. + * A scale value greater than 1 compresses the texture. + */ + FbxVector4& GetDefaultS(FbxVector4& pS) const; + + //@} + + /** + * \name Default Alpha Value + */ + //@{ + + /** Sets the default alpha. + * \param pAlpha A value on a scale from 0 to 1, with 0 being transparent. + */ + void SetDefaultAlpha(double pAlpha); + + /** Returns the default alpha. + * \return A value on a scale from 0 to 1, with 0 being transparent. + */ + double GetDefaultAlpha() const; + + //@} + + /** + * \name Default Values Management By Numbers + * This set of functions provides direct access to the default values in number base. + * U, V and W coordinates are mapped to the X, Y and Z coordinates of the default vectors + * found in the "Default Values By Vector" section. + */ + //@{ + + /** Sets translation. + * \param pU Horizontal translation applied to a texture. A displacement + * of one unit is equal to the texture's width after applying U scaling. + * \param pV Vertical translation applied to a texture. A displacement + * of one unit is equal to the texture's height after applying V scaling. + */ + void SetTranslation(double pU,double pV); + + /** Returns translation applied to the texture width. + * \remarks A displacement of one unit is equal to the texture's width + * after applying U scaling. + */ + double GetTranslationU() const; + + /** Returns translation applied to the texture height. + * \remarks A displacement of one unit is equal to the texture's height + * after applying V scaling. + */ + double GetTranslationV() const; + + /** Sets rotation. + * \param pU Texture rotation around the U axis in degrees. + * \param pV Texture rotation around the V axis in degrees. + * \param pW Texture rotation around the W axis in degrees. + * \remarks The W axis is oriented toward the result of the vector product of + * the U and V axes that is W = U x V. + */ + void SetRotation(double pU, double pV, double pW = 0.0); + + //! Returns the texture rotation around the U axis in degrees. + double GetRotationU() const; + + //! Returns the texture rotation around the V axis in degrees. + double GetRotationV() const; + + //! Returns the texture rotation around the W axis in degrees. + double GetRotationW() const; + + /** Sets scale. + * \param pU Scale applied to the texture width. + * \param pV Scale applied to the texture height. + * \remarks A scale value less than 1 stretches the texture. + * A scale value greater than 1 compresses the texture. + */ + void SetScale(double pU,double pV); + + /** Returns scale applied to the texture width. + * \remarks A scale value less than 1 stretches the texture. + * A scale value greater than 1 compresses the texture. + */ + double GetScaleU() const; + + /** Returns scale applied to the texture height. + * \remarks A scale value less than 1 stretches the texture. + * A scale value greater than 1 compresses the texture. + */ + double GetScaleV() const; + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + virtual FbxObject& Copy(const FbxObject& pObject); + + bool operator==(FbxTexture const& pTexture) const; + + void SetUVTranslation(FbxVector2& pT); + FbxVector2& GetUVTranslation(); + void SetUVScaling(FbxVector2& pS); + FbxVector2& GetUVScaling(); + + FbxString GetTextureType(); + +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + + virtual bool PropertyNotify(EPropertyNotifyType pType, FbxProperty& pProperty); + + void Init(); + + int mCropping[4]; // not a prop + + EAlphaSource mAlphaSource; // now unused in MB (always set to None); not a prop + EMappingType mMappingType; // CurrentMappingType + EPlanarMappingNormal mPlanarMappingNormal; // CurrentMappingType + + // Unsupported parameters in the FBX SDK, these are declared but not accessible. + // They are used to keep imported and exported data identical. + FbxVector2 mUVScaling; // not a prop + FbxVector2 mUVTranslation; // not a prop +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +inline EFbxType FbxTypeOf(const FbxTexture::EUnifiedMappingType&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxTexture::ETextureUse6&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxTexture::EWrapMode&){ return eFbxEnum; } +inline EFbxType FbxTypeOf(const FbxTexture::EBlendMode&){ return eFbxEnum; } + +#include + +#endif /* _FBXSDK_SCENE_SHADING_TEXTURE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxclonemanager.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxclonemanager.h new file mode 100644 index 00000000..1d188262 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxclonemanager.h @@ -0,0 +1,284 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxclonemanager.h +#ifndef _FBXSDK_UTILS_CLONE_MANAGER_H_ +#define _FBXSDK_UTILS_CLONE_MANAGER_H_ + +#include + +#include +#include + +#include + +/** The clone manager is a utility for cloning entire networks of FbxObject. + * Options are available for specifying how the clones inherit the connections + * of the original. + * + * Networks of FbxObject (inter-connected objects by OO, OP, PO or PP connections) + * can be cloned. How the connections of clones are handled depends on mSrcPolicy and mExternalDstPolicy. + * + * To clone FbxObject instances and their dependents, put them into a CloneSet + * and pass the CloneSet to this class: + * \code + * FbxCloneManager cloneManager; + * FbxCloneManager::CloneSet cloneSet; + * FbxCloneManager::CloneSetElement defaultCloneOptions(FbxCloneManager::sConnectToClone, + * FbxCloneManager::sConnectToOriginal, + * FbxObject::eDeepClone); + * cloneSet.Insert(someObject, defaultCloneOptions); + * cloneManager.AddDependents(cloneSet, someObject, defaultCloneOptions); + * cloneManager.Clone(cloneSet, scene) + * \endcode + * + * \remark If cloning occurs on the same scene as the original objects, the system will contain duplicated names. Although this is acceptable in FBX, + * some applications may not behave correctly with duplicated names. It is the responsability of the caller to resolve any conflicts. + * + * \see FbxCloneManager::CloneSetElement + * \see FbxCloneManager::CloneSet + * \nosubgrouping + */ +class FBXSDK_DLL FbxCloneManager +{ +public: + + //! Maximum depth to clone dependents. + static const int sMaximumCloneDepth; + + /** Connect to objects that are connected to original object. + * This is a flag to mSrcPolicy or mExternalDstPolicy. + */ + static const int sConnectToOriginal; + + /** Connect to clones of objects that are connected to original object. + * (only if those original objects are also in the clone set) + * This is a flag to mSrcPolicy. + */ + static const int sConnectToClone; + + /** This represents an element in FbxCloneManager::CloneSet to be cloned. + * This class contains the option for specifying how connections are cloned and the + * cloned object. + * \see FbxCloneManager + * \see FbxCloneManager::CloneSet + */ + struct FBXSDK_DLL CloneSetElement + { + public: + /** Constructor. + * \param pSrcPolicy Specify how to handle source connections. Valid values are 0, sConnectToOriginal, + * sConnectToClone or sConnectToOriginal|sConnectToClone. + * \param pExternalDstPolicy Specify how to handle destination connections to objects NOT in + * the clone set. Valid values are 0 or sConnectToOriginal. + * \param pCloneType Specify the type of cloning. FbxObject::Clone uses the same parameter. + */ + CloneSetElement( int pSrcPolicy = 0, + int pExternalDstPolicy = 0, + FbxObject::ECloneType pCloneType = FbxObject::eReferenceClone ); + + //! the type of cloning to perform + FbxObject::ECloneType mType; + + /** Policy on how to handle source connections on the original object. Valid values are 0 + * or any bitwise OR'd combination of sConnectToOriginal, and sConnectToClone. + */ + int mSrcPolicy; + + /** policy on how to handle destination connections on the original object to + * objects NOT in the clone set. (Destination connections to objects in the set + * are handled by that object's source policy) Valid values are 0 or sConnectToOriginal. + */ + int mExternalDstPolicy; + + /** This is a pointer to the newly created clone. + * It is set after the call to FbxCloneManager::Clone() + */ + FbxObject* mObjectClone; + + /** Internal use. + */ + bool mLayerElementProcessed; + bool mConnectionsProcessed; + }; + + /** The CloneSet is a collection of pointers to objects that will be cloned in Clone() + * Attached to each object is a CloneSetElement. Its member variables dictate how + * the corresponding object will be cloned, and how it will inherit connections + * on the original object. + */ + typedef FbxMap CloneSet; + + /** Constructor + */ + FbxCloneManager(); + + /** Destructor + */ + virtual ~FbxCloneManager(); + + /** This function simplifies the process of cloning one object and all its depedency graph by automatically preparing + * the CloneSet and calling the Clone method using the code below. + * + * \code + * FbxCloneManager cloneManager; + * FbxCloneManager::CloneSet cloneSet; + * FbxCloneManager::CloneSetElement defaultCloneOptions(FbxCloneManager::sConnectToClone, + * FbxCloneManager::sConnectToOriginal, + * FbxObject::eDeepClone); + * FbxObject* lReturnObj = (FbxObject*)pObject; + * + * cloneManager.AddDependents(cloneSet, pObject, defaultCloneOptions, FbxCriteria::ObjectType(FbxObject::ClassId)); + * cloneSet.Insert((FbxObject*)pObject, defaultCloneOptions); + * + * // collect all the FbxCharacters, if any (these are indirect dependencies not visible by the AddDependents recursion) + * FbxArray lExtras; + * FbxCloneManager::CloneSet::RecordType* lIterator = cloneSet.Minimum(); + * while( lIterator ) + * { + * FbxObject* lObj = lIterator->GetKey(); + * cloneManager.LookForIndirectDependent(lObj, cloneSet, lExtras); + * lIterator = lIterator->Successor(); + * } + * + * // and add them to cloneSet + * for (int i = 0, c = lExtras.GetCount(); i < c; i++) + * { + * FbxObject* lObj = lExtras[i]; + * cloneManager.AddDependents(cloneSet, lObj, defaultCloneOptions); + * cloneSet.Insert(lObj, defaultCloneOptions); + * } + * + * // clone everything + * if (cloneManager.Clone(cloneSet, pContainer)) + * { + * // get the clone of pObject + * CloneSet::RecordType* lIterator = cloneSet.Find((FbxObject* const)pObject); + * if( lIterator ) + * { + * lReturnObj = lIterator->GetValue().mObjectClone; + * } + * } + * return lReturnObj; + * \endcode + * + * \param pObject Object to clone. + * \param pContainer This object (typically a scene or document) will contain the new clones. + * \return The clone of \e pObject if all its depedency graph have been cloned successfully, NULL otherwise. + * \remark It is advised not to use an FbxNode object for \e pContainer to group the cloned dependency graph. + * Some objects of the FBX SDK are not meant to be connected to FbxNode objects and if they are, the final scene + * will not comply to the FBX standard and its behavior cannot be guaranteed. + * \remark If \e pContainer is left \c NULL the cloned objects only exists in the FbxSdkManager and need to be + * manually connected to the scene in order to be saved to disk. + * + * Example: + * \code + * FbxObject* lObj2BCloned = ... + * FbxNode* myNewParent = FbxNode::Create(lNewScene, "Clone"); + * lNewScene->GetRootNode()->AddChild(lN); + * + * FbxCloneManager cloneManager; + * FbxNode *lClone = (FbxNode*)cloneManager.Clone(lObj2BCloned); + * + * // make sure the cloned object is connected to the scene + * lClone->ConnectDstObject(lNewScene); + * \endcode + */ + static FbxObject* Clone(const FbxObject* pObject, FbxObject* pContainer = NULL); + + /** Clone all objects in the set using the given policies for duplication + * of connections. Each CloneSetElement in the set will have its mObjectClone + * pointer set to the newly created clone. The following code shows how to access the cloned objects: + * + * \code + * if (cloneManager.Clone(cloneSet, pContainer)) + * { + * // access the clones + * FbxCloneManager::CloneSet::RecordType* lIterator = cloneSet.Minimum(); + * while( lIterator ) + * { + * FbxObject* lOriginalObject = lIterator->GetKey(); + * FbxObject* lClonedObject = lIterator->GetValue().mObjectClone; + * lIterator = lIterator->Successor(); + * } + * } + * \endcode + * + * \param pSet Set of objects to clone + * \param pContainer This object (typically a scene or document) will contain the new clones + * \return true if all objects were cloned, false otherwise. + * \remark It is advised not to use an FbxNode object for \e pContainer to group the cloned dependency graph. + * Some objects of the FBX SDK are not meant to be connected to FbxNode objects and if they are, the final scene + * will not comply to the FBX standard and its behavior cannot be guaranteed. + * \remark If \e pContainer is left \c NULL the cloned objects only exists in the FbxSdkManager and need to be + * manually connected to the scene in order to be saved to disk. + */ + virtual bool Clone( CloneSet& pSet, FbxObject* pContainer = NULL ) const; + + /** Add all dependents of the given object to the CloneSet. + * Dependents of items already in the set are ignored to prevent + * infinite recursion on cyclic dependencies. + * \param pSet The set to add items. + * \param pObject Object to add dependents to + * \param pCloneOptions + * \param pTypes Types of dependent objects to consider + * \param pDepth Maximum recursive depth. Valid range is [0,sMaximumCloneDepth] + * + * The following example shows how to perform multiple calls to AddDependents() to collect several + * subgraphs to be cloned: + * \code + * FbxObject* lRoot = ... // initialized with the root of the graph to be cloned + * FbxCharacter* lCharacter = ... // points to the FbxCharacter driving the character defined by "lRoot" graph + * + * FbxCloneManager cloneManager; + * FbxCloneManager::CloneSet cloneSet; + * + * cloneManager.AddDependents(cloneSet, lRoot); + * cloneSet.Insert(lRoot, defaultCloneOptions); + * + * cloneManager.AddDependents(cloneSet, lCharacter); + * cloneSet.Insert(lCharacter, defaultCloneOptions); + * + * \endcode + */ + virtual void AddDependents( CloneSet& pSet, + const FbxObject* pObject, + const CloneSetElement& pCloneOptions = CloneSetElement(), + FbxCriteria pTypes = FbxCriteria::ObjectType(FbxObject::ClassId), + int pDepth = sMaximumCloneDepth ) const; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + static FbxObject* Clone(const FbxObject* pObject, CloneSet* pSet, FbxObject* pContainer = NULL); + +private: + friend class FbxScene; + + bool ReAssignLayerElements( FbxCloneManager::CloneSet::RecordType* pIterator, const FbxCloneManager::CloneSet& pSet) const; + bool CloneConnections( CloneSet::RecordType* pIterator, const CloneSet& pSet) const; + bool CheckIfCloneOnSameScene(const FbxObject* pObject, FbxObject* pContainer) const; + + virtual void LookForIndirectDependent(const FbxObject* pObject, CloneSet& pSet, FbxArray& lIndirectDepend); + virtual bool NeedToBeExcluded(FbxObject* lObj) const; + + bool mCloneOnSameScene; + +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#define CloneSetCast(x) ((FbxCloneManager::CloneSet*)(x)) +#define CloneSetElementCast(x) ((FbxCloneManager::CloneSetElement*)((x!=NULL)?&(x->GetValue()):NULL)) + +#endif /* _FBXSDK_UTILS_CLONE_MANAGER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxdeformationsevaluator.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxdeformationsevaluator.h new file mode 100644 index 00000000..ada538fd --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxdeformationsevaluator.h @@ -0,0 +1,86 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxdeformationsevaluator.h +#ifndef _FBXSDK_UTILS_DEFORMATIONS_EVALUATOR_H_ +#define _FBXSDK_UTILS_DEFORMATIONS_EVALUATOR_H_ + +#include + +#include + +class FbxNode; +class FbxMesh; +class FbxTime; +class FbxAnimLayer; +class FbxPose; +class FbxCluster; +class FbxVector4; +class FbxAMatrix; +class FbxDualQuaternion; + +class FBXSDK_DLL FbxDeformationsEvaluator +{ +public: + /** Configure this object to process the given mesh. + * \param pNode Node object owner of the mesh. + * \param pMesh Processed object. + * \return \c true if \e pMesh is connected to \e pNode and the internal data allocation succeeded. */ + bool Init(const FbxNode* pNode, const FbxMesh* pMesh); + + /** If this object is properly configured, evaluates the shape deformation of the mesh at the given time. + * \param pVertexArray The result of the evaluation. + * \param pTime Current time of the evaluation. + * \return \c true if the function completed successfully and \c false in case of errors. + * \remarks \e pVertexArray must be allocated and be of size: \e mMesh->GetControlPointCount(). */ + bool ComputeShapeDeformation(FbxVector4* pVertexArray, const FbxTime& pTime); + + /** If this object is properly configured, evaluates the skin deformation of the received mesh at the given time. + * \param pVertexArray The result of the evaluation. + * \param pTime Current time of the evaluation. + * \param pGX Local to World matrix to express the returned vertices in World space. + * \param pPose If defined, use the pose to evaluate the current transform. + * \return \c true if the function completed successfully and \c false in case of errors. + * \remarks \e pVertexArray must be allocated and be of size: \e mMesh->GetControlPointCount(). */ + bool ComputeSkinDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, FbxAMatrix* pGX=NULL, const FbxPose* pPose=NULL); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxDeformationsEvaluator(); + virtual ~FbxDeformationsEvaluator(); + +private: + void ComputeClusterDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, const FbxAMatrix& pGX, FbxCluster* pCluster, FbxAMatrix& pVertexTransformMatrix, const FbxPose* pPose); + void ComputeLinearDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, const FbxAMatrix& pGX, const FbxPose* pPose); + void ComputeDualQuaternionDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, const FbxAMatrix& pGX, const FbxPose* pPose); + void Cleanup(); + + bool mIsConfigured; + FbxNode* mNode; + FbxMesh* mMesh; + FbxAnimLayer* mAnimLayer; + + int mVertexCount; + FbxVector4* mDstVertexArray; + FbxVector4* mVertexArrayLinear; + FbxVector4* mVertexArrayDQ; + + FbxAMatrix* mClusterDeformation; + double* mClusterWeight; + FbxDualQuaternion* mDQClusterDeformation; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_UTILS_DEFORMATIONS_EVALUATOR_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxembeddedfilesaccumulator.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxembeddedfilesaccumulator.h new file mode 100644 index 00000000..9656754d --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxembeddedfilesaccumulator.h @@ -0,0 +1,115 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxembeddedfilesaccumulator.h +#ifndef _FBXSDK_UTILS_EMBEDDED_FILES_ACCUMULATOR_H_ +#define _FBXSDK_UTILS_EMBEDDED_FILES_ACCUMULATOR_H_ + +#include + +#include + +#include + +/** This processor is used to accumulate the list of file dependencies (embedded files) in a hierarchy of objects. + * It retrieves information of embedded files from objects and accumulates them to its class member mEmbeddedFiles. + * \see FbxProcessor::ProcessCollection(FbxCollection *) + * \nosubgrouping + */ +class FBXSDK_DLL FbxEmbeddedFilesAccumulator : public FbxProcessor +{ +public: + /** + * Map the object to the property's hierarchical name. + * An object may use the same file on multiple properties, hence the + * set. + * Each property may have multiple URLs, separate by |. + * We thus need to store the index along with the property. + */ + //@{ + struct PropertyUrlIndex + { + FbxString mPropName; + int mIndex; + + PropertyUrlIndex() : mIndex(0) + { + } + + PropertyUrlIndex(const FbxString& pUrl, int pIndex) + : mPropName(pUrl) + , mIndex(pIndex) + { + } + }; + + //! Comparer for PropertyUrlIndexSet, which outputs consistent partial orders for PropertyUrlIndex pairs + struct FbxPropertyUrlIndexCompare + { + inline int operator()(const PropertyUrlIndex& pKeyA, const PropertyUrlIndex& pKeyB) const + { + if( pKeyA.mPropName < pKeyB.mPropName ) return -1; + if( pKeyB.mPropName < pKeyA.mPropName ) return 1; + if( pKeyA.mIndex < pKeyB.mIndex ) return -1; + if( pKeyB.mIndex < pKeyA.mIndex ) return 1; + return 0; + } + }; + + typedef FbxSet PropertyUrlIndexSet; + + typedef FbxMap ObjectPropertyMap; + + struct EmbeddedFileInfo + { + FbxString mOriginalPropertyUrl; + ObjectPropertyMap mConsumers; + }; + //@} + + /** + * Map the (absolute filename) to which object/properties use this file. + * To simply get the list of file dependencies, iterate through this map and query + * all the keys. + */ + //@{ + typedef FbxMap EmbeddedFilesMap; + + EmbeddedFilesMap mEmbeddedFiles; + //@} + +public: + + /** Constructor. + * The name is not important. + * The property filter is a list of strings, property names, which are automatically ignored when + * encountered. Property names must be the full hierarchical property name (ie: parent|child|child). + * + * \param pManager Reference to the SDK manager. + * \param pName Name of this object. + * \param pPropertyFilter Reference to the property filter. + */ + FbxEmbeddedFilesAccumulator(FbxManager& pManager, const char* pName, FbxSet& pPropertyFilter); + virtual ~FbxEmbeddedFilesAccumulator(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + virtual bool internal_ProcessObject(FbxObject* pObject); + FbxSet mPropertyFilter; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_UTILS_EMBEDDED_FILES_ACCUMULATOR_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxgeometryconverter.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxgeometryconverter.h new file mode 100644 index 00000000..1ecd53d2 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxgeometryconverter.h @@ -0,0 +1,345 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxgeometryconverter.h +#ifndef _FBXSDK_UTILS_GEOMETRY_CONVERTER_H_ +#define _FBXSDK_UTILS_GEOMETRY_CONVERTER_H_ + +#include + +#include + +#include + +class FbxManager; +class FbxMesh; +class FbxPatch; +class FbxNurbs; +class FbxNurbsSurface; +class FbxNurbsCurve; +class FbxWeightedMapping; +class FbxSurfaceEvaluator; +class FbxScene; +class FbxNode; +class FbxNodeAttribute; +class FbxGeometry; + +/** +* This class provides the functionality to convert geometry nodes +* attributes (FbxMesh, FbxNurbs and FbxPatch) and mainly focuses on the two +* major categories: Triangulation and conversion between NURBS and Patches surfaces. +* \nosubgrouping +*/ +class FBXSDK_DLL FbxGeometryConverter +{ +public: + /** \name Triangulation Utilities */ + //@{ + /** Triangulate all node attributes in the scene that can be triangulated. + * \param pScene The scene to iterate through to triangulate meshes. + * \param pReplace If \c true, replace the original meshes with the new triangulated meshes on all the nodes, and delete the original meshes. Otherwise, original meshes are left untouched. + * \param pLegacy If \c true, use legacy triangulation method that does not support holes in geometry. Provided for backward compatibility. + * \return \c true if all node attributes that can be triangulated were triangulated successfully. + * \remark The function will still iterate through all meshes regardless if one fails to triangulate, but will return false in that case. This function + * currently only supports node attribute of type eMesh, ePatch, eNurbs or eNurbsSurface. */ + bool Triangulate(FbxScene* pScene, bool pReplace, bool pLegacy=false); + + /** Triangulate a node attribute, if supported, and preserve the skins and shapes animation channels. + * \param pNodeAttribute Pointer to the node containing the geometry to triangulate. + * \param pReplace If \c true, replace the original geometry with the new triangulated geometry on the nodes, and delete the original geometry. + * Otherwise, the original geometry is left untouched, the new one is added to the nodes, and becomes the default one. + * \param pLegacy If \c true, use legacy triangulation method that does not support holes in geometry. Provided for backward compatibility. + * \return The newly created node attribute if successful, otherwise NULL. If node attribute type is not supported by triangulation, it returns the original node attribute. + * \remark This function currently only supports node attribute of type eMesh, ePatch, eNurbs or eNurbsSurface. If the node attribute does not support triangulation, + * or if it is already triangulated, this function will return pNodeAttribute. */ + FbxNodeAttribute* Triangulate(FbxNodeAttribute* pNodeAttribute, bool pReplace, bool pLegacy=false); + + /** Compute a "vertex-correspondence" table that helps passing from source to destination geometry. + * \param pSrcGeom Pointer to the source geometry. + * \param pDstGeom Pointer to the destination geometry. + * \param pSrcToDstWeightedMapping Pointer to the weighted mapping table. + * \param pSwapUV Set to \c true to swap UVs. + * \return \c true on success, \c false if the function fails to compute the correspondence. + * \remark Skins and shapes are also converted to fit the alternate geometry. */ + bool ComputeGeometryControlPointsWeightedMapping(FbxGeometry* pSrcGeom, FbxGeometry* pDstGeom, FbxWeightedMapping* pSrcToDstWeightedMapping, bool pSwapUV=false); + //@} + + /** + * \name Geometry Conversion + */ + //@{ + /** Convert from patch to nurb. + * \param pPatch Pointer to the patch to convert. + * \return Created nurb or \c NULL if the conversion fails. + * \remarks The patch must be of type eBSpline, eBezier or eLinear. + */ + FbxNurbs* ConvertPatchToNurbs(FbxPatch *pPatch); + + /** Convert a patch contained in a node to a nurb. Use this function to preserve the patch's + * skins and shapes animation channels. + * \param pNode Pointer to the node containing the patch. + * \return \c true on success, \c false if the node attribute is not a patch. + * \remarks The patch must be of type eBSpline, eBezier or eLinear. + */ + bool ConvertPatchToNurbsInPlace(FbxNode* pNode); + + /** Convert a patch to nurb surface. + * \param pPatch Pointer to the patch to convert. + * \return Created nurb surface or \c NULL if conversion fails. + * \remarks The patch must be of type eBSpline, eBezier or eLinear. + */ + FbxNurbsSurface* ConvertPatchToNurbsSurface(FbxPatch *pPatch); + + /** Convert a patch contained in a node to a nurb surface. Use this function to preserve + * the patch's skins and shapes animation channels. + * \param pNode Pointer to the node containing the patch. + * \return \c true on success, \c false if the node attribute is not a patch. + * \remarks The patch must be of type eBSpline, eBezier or eLinear. + */ + bool ConvertPatchToNurbsSurfaceInPlace(FbxNode* pNode); + + /** Convert a FbxNurbs to a FbxNurbsSurface + * \param pNurbs Pointer to the original nurb + * \return A FbxNurbsSurface that is equivalent to the original nurb. + */ + FbxNurbsSurface* ConvertNurbsToNurbsSurface( FbxNurbs* pNurbs ); + + /** Convert a FbxNurbsSurface to a FbxNurbs + * \param pNurbs Pointer to the original nurbs surface + * \return A FbxNurbs that is equivalent to the original nurbs surface. + */ + FbxNurbs* ConvertNurbsSurfaceToNurbs( FbxNurbsSurface* pNurbs ); + + /** Convert a nurb, contained in a node, to a nurbs surface. Use this function to preserve + * the nurb's skins and shapes animation channels. + * \param pNode Pointer to the node containing the nurb. + * \return \c true on success, \c false otherwise + */ + bool ConvertNurbsToNurbsSurfaceInPlace(FbxNode* pNode); + + /** Convert a nurb contained in a node to a nurbs surface. Use this function to preserve + * the nurb's skins and shapes animation channels. + * \param pNode Pointer to the node containing the nurbs surface. + * \return \c true on success, \c false otherwise + */ + bool ConvertNurbsSurfaceToNurbsInPlace(FbxNode* pNode); + //@} + + /** + * \name Nurb UV and Links Swapping + */ + //@{ + /** Flip UV and/or skin clusters of a nurb. + * \param pNurbs Pointer to the Source nurb. + * \param pSwapUV Set to \c true to swap the UVs. + * \param pSwapClusters Set to \c true to swap the control point indices of clusters. + * \return A flipped FbxNurbs, or \c NULL if the function fails. + */ + FbxNurbs* FlipNurbs(FbxNurbs* pNurbs, bool pSwapUV, bool pSwapClusters); + + /** Flip UV and/or skin clusters of a nurb surface. + * \param pNurbs Pointer to the Source nurb surface. + * \param pSwapUV Set to \c true to swap the UVs. + * \param pSwapClusters Set to \c true to swap the control point indices of clusters. + * \return A flipped FbxNurbsSurface, or \c NULL if the function fails. + */ + FbxNurbsSurface* FlipNurbsSurface(FbxNurbsSurface* pNurbs, bool pSwapUV, bool pSwapClusters); + //@} + + /** + * \name Normals By Polygon Vertex Emulation + */ + //@{ + /** Emulate normals by polygon vertex mode for a mesh. + * \param pMesh Pointer to the mesh object. + * \return \c true on success, \c false if the number of normals in the + * mesh and in its associated shapes don't match the number of polygon + * vertices. + * \remarks For applications that only supports normals by control points, + * this function duplicates control points to equal the + * number of polygon vertices. skins and shapes are also converted. + * As preconditions: + * -# polygons must have been created + * -# the number of normals in the mesh and in its associated shapes must match the + * number of polygon vertices. + */ + bool EmulateNormalsByPolygonVertex(FbxMesh* pMesh); + + /** Create edge smoothing information from polygon-vertex mapped normals. + * Existing smoothing information is removed and edge data is created if + * none exists on the mesh. + * \param pMesh The mesh used to generate edge smoothing. + * \return \c true on success, \c false otherwise. + * \remarks The edge smoothing data is placed on Layer 0 of the mesh. + * Normals do not need to be on Layer 0, since the first layer with + * per polygon vertex normals is used. + */ + bool ComputeEdgeSmoothingFromNormals( FbxMesh* pMesh ) const; + + /** Convert edge smoothing to polygon smoothing group. + * Existing smoothing information is replaced. + * + * \param pMesh The mesh that contains the smoothing to be converted. + * \param pIndex The index of the layer smoothing to be converted. + * \return \c true on success, \c false otherwise. + * \remarks The smoothing group is bitwise. Each bit of the integer represents + * one smoothing group. Therefore, there is a maximum of 32 smoothing groups. + */ + bool ComputePolygonSmoothingFromEdgeSmoothing( FbxMesh* pMesh, int pIndex=0 ) const; + + /** Convert polygon smoothing group to edge smoothing. + * Existing smoothing information is replaced. + * + * \param pMesh The mesh that contains the smoothing to be converted. + * \param pIndex The index of the layer smoothing to be converted + * \return \c true on success, \c false otherwise. + */ + bool ComputeEdgeSmoothingFromPolygonSmoothing( FbxMesh* pMesh, int pIndex=0 ) const; + //@} + + /** \name Split Mesh Per Materials */ + //@{ + /** Split all the mesh in the scene per material. + * \param pScene The scene to iterate through to split meshes. + * \param pReplace If \c true, replace the original mesh with new ones and delete the original meshes, but *only* if they got split into multiple meshes, otherwise they are left untouched. + * \return \c true if all splitable mesh were successfully split, \c false otherwise. + * \remark The function will still iterate through all meshes regardless if one fails to split, but will return false in that case. */ + bool SplitMeshesPerMaterial(FbxScene* pScene, bool pReplace); + + /** Split mesh per material. + * \param pMesh The mesh that will be split if it has multiple materials assigned. + * \param pReplace If \c true, replace the original mesh with new one and delete the original mesh, but *only* if they got split into multiple meshes, otherwise left untouched. + * \return \c true on success, \c false otherwise. + * \remark The function will fail if the mapped material is not per face (FbxLayerElement::eByPolygon) or if a material is multi-layered. It will create as many meshes as + * there are materials applied to it. If one mesh have some polygons with material A, some polygons with material B, and some polygons with NO material, 3 meshes distinct + * will be created. The newly created meshes will be automatically attached to the same FbxNode that holds the original FbxMesh. If the original mesh have tangents, they will + * be regenerated on the new meshes. */ + bool SplitMeshPerMaterial(FbxMesh* pMesh, bool pReplace); + //@} + + /** Re-parent nodes at root node level under a new node to re-center them at world center. + * Basically, this function calculates the scene bounding box in world coordinates, and test if the center of that bounding box distance from the + * world center is larger or equal than the threshold. If true, a new node with the proper negative offset position will become the new parent of all nodes at root node level. + * \param pScene The scene to process. + * \param pThreshold Threshold at which all nodes will be re-centered. + * \return \c true if any nodes were re-centered, otherwise \c false. */ + bool RecenterSceneToWorldCenter(FbxScene* pScene, FbxDouble pThreshold); + + /** + * Merge multiple meshes to one mesh. + * The method will merge: + * a) mesh vertex; + * b) mesh polygon; + * c) mesh edge; + * d) all mesh elements; only the layer 0 elements is merged. + * e) if there are skins for old mesh, merge these skins. The new skin clusters link to old skeletons. + * + * \param pMeshNodes FBX nodes that hold multiple meshes. These meshes will be merged. + * \param pNodeName Name of new mesh node. + * \param pScene The scene that will contain the new mesh node. + * \return The new mesh node if merge successfully, otherwise NULL is returned. + * \remarks This method creates a new mesh, leaving the source mesh unchanged. + * The transform of new mesh node is: translate (0, 0, 0), rotation (0, 0, 0), scale (1, 1, 1). + * For layer element material, normal, smoothing, UV set, vertex color, binormal, tangent and polygon group, + * if any mesh misses these element, the merge for this kind of element is skipped. + * For layer element crease, hole, visibility and user data, if any mesh has such element, the kind of element + * will be merged. The missing element will be filled with default values. + * For meshes with skin binding, if the pose of frame 0 is different with bind pose, the new mesh will be distorted. + */ + FbxNode* MergeMeshes(FbxArray& pMeshNodes, const char* pNodeName, FbxScene* pScene); + + /** + * Cleanup or remove degenerated meshes. + * \param pScene The scene to process. + * \param pAffectedNodes The list of nodes that have been affected by this operation. + * \remarks If the cleaned-up mesh becomes invalid, it is removed entirely. + */ + void RemoveBadPolygonsFromMeshes(FbxScene* pScene, FbxArray* pAffectedNodes = NULL); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + FbxGeometryConverter(FbxManager* pManager); + ~FbxGeometryConverter(); + +private: + FbxMesh* TriangulateMeshInternal(const FbxMesh* pMesh); + FbxMesh* TriangulateMeshInternalLegacy(const FbxMesh* pMesh); + FbxMesh* TriangulatePatchInternal(const FbxPatch* pPatch); + FbxMesh* TriangulateNurbsInternal(const FbxNurbs* pNurbs); + + bool AddAlternateGeometry(FbxNode* pNode, FbxGeometry* pSrcGeom, FbxGeometry* pAltGeom, FbxWeightedMapping* pSrcToAltWeightedMapping, bool pConvertDeformations); + bool ConvertGeometryAnimation(FbxNode* pNode, FbxGeometry* pSrcGeom, FbxGeometry* pDstGeom); + void ReplaceNodeAttribute(FbxNode* pNode, FbxNodeAttribute* pNewNodeAttr); + bool AddTriangulatedMeshGeometry(FbxNode* pNode, int pUVStepCoeff); + bool CreateAndCopyLayerElement(FbxMesh *pNewMesh, FbxMesh *pRefMesh); + bool SetLayerElements(FbxMesh *pNewMesh, FbxMesh *pMesh, int pPolygonIndex, int pPolyPointIndex, int pLoopIndex, bool pIsSearched, bool pIsEndPolygon); + + /** FbxTriangulation + * \param Index Output array of triangle indices + * \param pNumSide Input number of sides of the polygon to triangulate + * -- Triangulation algorithm is strip, Sorting vertex index for strip in clockwise. + * + * 2 3 4 + * 0----------0---------0 + * / ` + * / ` 5 + * 1 / 0 + * 0 / + * ` / + * ` / + * 0 0-----0-------------0 6 + * 7 + * The result of this one will be [{0,1,2},{2,3,0},{0,3,7},{3,4,7},{7,4,6},{4,5,6}] + */ + static void FbxTriangulation(int *Index, int pNumSide); + + bool ComputePatchToMeshControlPointsWeightedMapping(FbxPatch* pSrcPatch, FbxMesh* pDstMesh, FbxWeightedMapping* pMapping, bool pSwapUV=false); + bool ComputeNurbsToMeshControlPointsWeightedMapping(FbxNurbsSurface* pSrcNurbs, FbxMesh* pDstMesh, FbxWeightedMapping* pMapping, bool pRescaleUVs=false, bool pSwapUV=false); + + void InitializeWeightInControlPoints(FbxGeometryBase* pGeometry); + void InitializeWeightInNormals(FbxLayerContainer* pLayerContainer); + void TriangulateContinuousSurface(FbxMesh* pMesh, FbxSurfaceEvaluator* pSurface, FbxUInt pPointCountX, FbxUInt pPointCountY, bool ClockWise=false); + void CheckForZeroWeightInShape(FbxGeometry *pGeometry); + FbxMesh* CreateMeshFromParametricSurface(const FbxGeometry* pGeometry); + FbxNurbs* CreateNurbsFromPatch(FbxPatch* pPatch); + FbxNurbsSurface* CreateNurbsSurfaceFromPatch(FbxPatch* pPatch); + + void ConvertShapes(const FbxGeometry* pSource, FbxGeometry* pDestination, FbxSurfaceEvaluator* pEvaluator, int pUCount, int pVCount); + void ConvertShapes(const FbxGeometry* pSource, FbxGeometry* pDestination, FbxWeightedMapping* pSourceToDestinationMapping); + void ConvertClusters(const FbxGeometry* pSource, FbxGeometry* pDestination, FbxWeightedMapping* pSourceToDestinationMapping); + void ConvertClusters(FbxArray const& pSourceClusters, int pSourceControlPointsCount, FbxArray& pDestinationClusters, int pDestinationControlPointsCount, FbxWeightedMapping* pSourceToDestinationMapping); + void BuildClusterToSourceMapping(FbxArray const& pSourceClusters, FbxWeightedMapping* pClusterToSourceMapping); + void CheckClusterToSourceMapping(FbxWeightedMapping* pClusterToSourceMapping); + void ConvertCluster(int pSourceClusterIndex, FbxWeightedMapping* pClusterToSourceMapping, FbxWeightedMapping* pSourceToDestinationMapping, FbxCluster* pDestinationCluster); + void DuplicateControlPoints(FbxArray& pControlPoints, FbxArray& pPolygonVertices); + void UpdatePolygon(FbxMesh *pNewMesh, FbxMesh const *pRefMesh, int pPolygonIndex, int* pNewIndex, int &pVerticeIndexMeshTriangulated, int &pPolygonIndexMeshTriangulated); + void UpdatePolygon(FbxMesh *pNewMesh, FbxMesh const *pRefMesh, int pPolygonIndex, int* pNewIndex, int &pVerticeIndexMeshTriangulated, int &pPolygonIndexMeshTriangulated, int pTriangleNum); + void ResizePolygon(FbxMesh *pNewMesh, int pNewCountVertices = 0, int pNewCountPolygons =0, bool pClearFlag = true); + + template void ConvertNurbs(T1* pNewNurbs, T2* pOldNurb); + + bool CopyAnimationCurves(FbxNode* pNode, FbxGeometry* pNewGeometry); + bool FlipNurbsCurve(FbxNurbsCurve* pCurve) const; + void FlipControlPoints(FbxGeometryBase* pPoints, int pUCount, int pVCount) const; + bool ConvertMaterialReferenceMode(FbxMesh* pMeshRef) const; + void RevertMaterialReferenceModeConversion(FbxMesh* pMeshRef) const; + + FbxManager* mManager; + + friend class FbxWriter3ds; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_UTILS_GEOMETRY_CONVERTER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxmanipulators.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxmanipulators.h new file mode 100644 index 00000000..7a85d1be --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxmanipulators.h @@ -0,0 +1,169 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxmanipulators.h +#ifndef _FBXSDK_UTILS_MANIPULATORS_H_ +#define _FBXSDK_UTILS_MANIPULATORS_H_ + +#include + +#include +#include +#include +#include + +#include + +class FbxCameraManipulationState; + +/** This class can be used to provide basic camera manipulation in any program using this library. + * \nosubgrouping + */ +class FBXSDK_DLL FbxCameraManipulator : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxCameraManipulator, FbxObject); + +public: + //! All possible manipulation actions that can be performed on a camera using this manipulator. + enum EAction + { + eNone, //!< No action. + eOrbit, //!< Orbiting camera around LootAt/Interest position. + eDolly, //!< Moving camera closer or away from its LookAt/Intest position. + ePan, //!< Panning camera up, down and sideways. + eFreePan //!< Panning and dollying all at once. + }; + + /** Begin manipulation of the camera. + * \param pAction The action performed for this manipulation scope. + * \param pX Begin horizontal position of the manipulation, in pixels. + * \param pY Begin vertical position of the manipulation, in pixels. */ + void Begin(EAction pAction, float pX, float pY); + + /** Notify manipulation of latest input. + * \param pTimeDelta Elapsed time since the last notify. Only used if Smoothing is enabled. + * \param pX Horizontal position of the manipulation, in pixels. + * \param pY Vertical position of the manipulation, in pixels. + * \param pScale Scaling value of the manipulation. Only used by eFreePan action. */ + void Notify(float pX, float pY, float pScale=0); + + //! End current manipulation. + void End(); + + /** Update the camera position. This must be called periodically in order for the camera to update its position. + * \param pTimeDelta Elapsed time since the last update. If Smooth is disabled, you can leave this value to zero. + * \remark Begin, Notify and End will not change the current camera position. */ + void Update(const FbxTime& pTimeDelta=FBXSDK_TIME_ZERO); + + /** Do a complete manipulation action in a single operation. This is the equivalent of calling Begin, Notify and End successively. + * \param pAction The action performed for this manipulation scope. + * \param pX Horizontal position of the manipulation, in pixels. + * \param pY Vertical position of the manipulation, in pixels. + * \param pScale Scaling value of the manipulation. Only used by eFreePan action. */ + void Action(EAction pAction, float pX, float pY, float pScale=0); + + /** Retrieve current manipulation action. + * \return The action currently performed by the camera manipulator. */ + EAction GetCurrentAction() const; + + /** Change camera position and LookAt node to frame all objects. + * \param pTime Time to use to evaluate mesh deformations. Leave at default value to cancel mesh evaluation. */ + void FrameAll(const FbxTime& pTime=FBXSDK_TIME_INFINITE); + + /** Change camera position and LookAt to frame all selected objects. + * \param pTime Time to use to evaluate mesh deformations. Leave at default value to cancel mesh evaluation. */ + void FrameSelected(const FbxTime& pTime=FBXSDK_TIME_INFINITE); + + /** Change camera position and LookAt to frame the selected position on screen. The LookAt will be placed + * at first closest intersecting geometry, and the distance between camera and LookAt will be preserved. + * \param pX The horizontal screen coordinate. + * \param pY The vertical screen coordinate. + * \param pCulling If \c true, only test triangles that are front-facing, otherwise test both sides. + * \param pTime Time to use to evaluate mesh deformations. Leave at default value to cancel mesh evaluation. */ + void FrameScreenPosition(float pX, float pY, bool pCulling=false, const FbxTime& pTime=FBXSDK_TIME_INFINITE); + + /** The camera controlled by the manipulator. */ + FbxPropertyT Camera; + + /** Width of the camera viewport, in pixels. This is used to accurately calculate to movement speed. + * \remark If this property is not correctly set, movements will be erronous. */ + FbxPropertyT ViewportWidth; + + /** Height of the camera viewport, in pixels. This is used to accurately calculate to movement speed. + * \remark If this property is not correctly set, movements will be erronous. */ + FbxPropertyT ViewportHeight; + + /** Camera manipulations will be smooth if enabled. True by default. */ + FbxPropertyT Smooth; + + /** Camera manipulations smoothing speed. Higher speed will stabilize the camera more quickly. Default is 10.0 */ + FbxPropertyT SmoothSpeed; + + /** Invert the camera horizontal manipulation direction if set to true. False by default. */ + FbxPropertyT InvertX; + + /** Invert the camera vertical manipulation direction if set to true. False by default. */ + FbxPropertyT InvertY; + + /** Restore the camera transform upon destruction of the manipulator. */ + FbxPropertyT Restore; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void Destruct(bool pRecursive); + virtual void ConstructProperties(bool pForceSet); + virtual bool ConnectNotify(const FbxConnectEvent& pEvent); + virtual bool PropertyNotify(EPropertyNotifyType pType, FbxProperty& pProperty); + +private: + void Reset(); + FbxCamera* GetCamera() const; + FbxNode* GetCameraNode() const; + FbxNode* GetCameraLookAtNode() const; + FbxNode* GetCameraTargetUpNode() const; + FbxVector4 GetCameraPosition() const; + void SetCameraPosition(const FbxVector4& pPosition); + FbxVector4 GetCameraRotation() const; + void SetCameraRotation(const FbxVector4& pRotation); + FbxVector4 GetCameraLookAtPosition() const; + void SetCameraLookAtPosition(const FbxVector4& pPosition); + FbxVector4 GetCameraTargetUpPosition() const; + void SetCameraTargetUpPosition(const FbxVector4& pPosition); + FbxAMatrix GetCameraRotationMatrix() const; + void SetCameraRotationMatrix(const FbxAMatrix& pRM); + + double ComputeRotationAxis(FbxVector4& pFront, FbxVector4& pUp, FbxVector4& pRight, const FbxVector4& pEye, const FbxVector4& pLookAt, const FbxVector4& pUpVector) const; + void ComputeRotationMatrix(FbxAMatrix& pRM, const FbxVector4& pEye, const FbxVector4& pLookAt, const FbxVector4& pUpVector); + void UpdateCameraRotation(); + + bool FrameObjects(bool pSelected, const FbxTime& pTime); + FbxVector4 ComputePositionToFitBBoxInFrustum(const FbxVector4& pBBoxMin, const FbxVector4& pBBoxMax, const FbxVector4& pBBoxCenter, const FbxVector4& pCameraPosition, const FbxAMatrix& pCameraRM, const FbxTime& pTime); + + EAction mCurrentAction; + FbxFloat mBeginMouse[3], mLastMouse[3]; + FbxVector4 mBeginPosition, mBeginAxis[3]; + FbxBool mBeginFlipped; + + FbxDouble mDestOrthoZoom; + FbxVector4 mDestPosition, mDestLookAt, mDestTargetUp; + FbxAMatrix mDestRotation; + + FbxVector4 mInitialPosition, mInitialRotation, mInitialLookAt; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_UTILS_MANIPULATORS_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxmaterialconverter.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxmaterialconverter.h new file mode 100644 index 00000000..101d2898 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxmaterialconverter.h @@ -0,0 +1,108 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxmaterialconverter.h +#ifndef _FBXSDK_UTILS_MATERIAL_CONVERTER_H_ +#define _FBXSDK_UTILS_MATERIAL_CONVERTER_H_ + +#include + +#include + +#include + +class LayerConfig; +class FbxMaterialConverter_Impl; + +/** + * \brief This class provides functions to restructure the material and textures + * applied to geometries from FBX v5 material system to v6-and-up or the other way around. + * \nosubgrouping + * \see FbxSurfaceMaterial, FbxTexture + */ +class FBXSDK_DLL FbxMaterialConverter +{ +public: + FbxMaterialConverter( FbxManager& mManager, FbxSurfaceMaterial* pDefaultMaterial = NULL); + ~FbxMaterialConverter(); + + /** Moves textures in texture layer elements to connections + * on the corresponding material's color properties, for all geometries + * in the scene.(Convert scene from FBX v5 material system to v6-and-up) + * \param pScene The scene whose geometries should be converted. + * \return true on success, false otherwise + */ + bool ConnectTexturesToMaterials( FbxScene& pScene ); + + /** Moves textures in texture layer elements to connections + * on the corresponding material's color properties, for the given geometry + * in the scene.(Convert scene from FBX v5 material system to v6-and-up) + * \param pNode The geometry node to be converted. + * \return true on success, false otherwise + */ + bool ConnectTexturesToMaterials( FbxNode* pNode ); + + /** This is the reverse operation of ConnectTexturesToMaterials() + * Textures connected to Materials' color properties are stored + * in layer elements, and their connections to the color properties + * are broken.(Convert scene from FBX v6-and-up material system to v5) + * \param pScene The scene whose geometries should be converted. + * \return true if all geometries were converted, false otherwise + */ + bool AssignTexturesToLayerElements( FbxScene& pScene ); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + typedef FbxPair TexData; + + FbxMaterialConverter& operator=(const FbxMaterialConverter&); + + FbxManager& mManager; + FbxSurfaceMaterial* mDefaultMaterial; + FbxMaterialConverter_Impl* mImpl; + + + void GetTextures( int pComponent, FbxLayer* pLayer, LayerConfig& pLayerConfig ) const; + FbxSurfaceMaterial* GetMaterial( int pComponent, FbxLayer* pLayer, FbxNode* pNode, bool pLookOnNode ); + int GetMaterialOrder( int pComponent, FbxLayer* pLayer, FbxNode* pNode, bool pLookOnNode ); + + bool HasGoodMappingModes( FbxNode* pNode, FbxGeometry* pGeom ) const; + void ConnectTextures( FbxSurfaceMaterial* pMat, FbxObject* pTexture, int pTextureType ) const; + bool HasPerFaceMaterialMapping( FbxGeometry* pGeom ) const; + void SetTextureUVSets( FbxGeometry* pGeom ) const; + bool HasTextures( FbxGeometry* pGeom ) const; + + void GetTextureList( FbxArray& pTextures, FbxLayeredTexture* pTex ) const; + + FbxLayer* FindLayerForTexture( FbxTexture* pTex, + FbxLayerElement::EType pTexType, + FbxLayerElementTexture::EBlendMode pTexBlendMode, + FbxGeometry* pGeom, + int lComponentIndex, + int lStartIndex = 0 ) const; + + void InitTextureElement( FbxLayerElementTexture* pTexElm, int pComponentCount, + FbxLayerElementTexture::EBlendMode pMode) const; + + bool AssignTexturesToLayerElements( FbxNode* pNode); + + bool HasTextureLayerElements( FbxGeometry& pGeom ) const; + + void ConvertToPerFaceMapping( FbxMesh* pGeom ) const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_UTILS_MATERIAL_CONVERTER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxnamehandler.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxnamehandler.h new file mode 100644 index 00000000..878e27ac --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxnamehandler.h @@ -0,0 +1,143 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxnamehandler.h +#ifndef _FBXSDK_UTILS_NAMEHANDLER_H_ +#define _FBXSDK_UTILS_NAMEHANDLER_H_ + +#include + +#include +#include + +#include + +/** A name is a case-sensitive string ID of a property, a node, a node attribute, a texture, etc. The characters constituting a name has no specific limitation. + * An initial name is the original name (from importing a file, for example), which is saved up for reversible renaming. + * A current name is the name used in FBX. + * A namespace is a simple grouping of objects under a given name. Namespaces are primarily used to resolve + * name-clash issues in FBX, where a new object has the same name as an existing object. + * + * For example, Maya only accepts names with letters, digits, or underscores. And when a user import FBX into Maya, + * a node whose name contains whitespace will be renamed. But the connections and references to this node in FBX + * scene graph still use the original name, so users have to use the initial name to retrieve related information. + * \nosubgrouping + */ +class FBXSDK_DLL FbxNameHandler +{ +public: + /** Constructor. + * \param pInitialName Name string used to initialize both members (initialName and currentName) + * of this class. + */ + FbxNameHandler(const char* pInitialName = ""); + + /** Copy constructor. + * \param pName A FbxNameHandler copied to this one. + */ + FbxNameHandler(FbxNameHandler const& pName); + + // !Destructor + ~FbxNameHandler(); + + /** Set the initial name. + * \param pInitialName New string for the initial name. + * \remarks The current name will also be changed to this value. + */ + void SetInitialName(const char* pInitialName); + + /** Get the initial name. + * \return Pointer to the InitialName string buffer. + */ + const char* GetInitialName() const; + + /** Set the current name. + * \param pNewName New string for the current name. + * \remarks The initial name is not affected. + */ + void SetCurrentName(const char* pNewName); + + /** Get the current name. + * \return Pointer to the CurrentName string buffer. + */ + const char* GetCurrentName() const; + + /** Set the namespace. + * \param pNameSpace New string for the namespace. + * \remarks The initial name is not affected. + */ + void SetNameSpace(const char* pNameSpace); + + /** Get the namespace. + * \return Pointer to the namespace string buffer. + */ + const char* GetNameSpace() const; + + /** Check if the current name and initial name match. + * \return \c true if the current name isn't identical to the initial name. + */ + bool IsRenamed() const; + + /** Assignment operator + * \param pName FbxNameHandler assigned to this one. + */ + FbxNameHandler& operator= (FbxNameHandler const& pName); + + /** + * \name Private use for the renaming strategies classes. + * + * Some renaming strategies classes need to store the parent name to successfully apply the renaming algorithms. + * The methods in this section allow them to do so. + * \remark Because of the very specific use of the mParentName string, + * callers of the FbxNameHandler class should never assume that mParentName is correctly initialized + * nor contains a meaningful value outside the scope of the renaming strategy class that used it. + */ + //@{ + + /** Set the parent name. + * \param pParentName New string for the parent name. + * \remarks The parent name here could combine several hierarchy name. + * The full name should be "ParentName + CurrentName". + * A + * |_B + * |_C + * For the above hierarchy, the parent name of C is "AB". + * The full name of C is "ABC". + */ + void SetParentName(const char* pParentName); + + /** Get the parent name. + * \return Pointer to the ParentName string buffer. + */ + const char* GetParentName() const; + + //@} + + /** Get the namespaces in a string pointer array format. + * \return FbxArray . + */ + FbxArray GetNameSpaceArray(char identifier); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + FbxString mParentName; + FbxString mInitialName; + FbxString mCurrentName; + FbxString mNameSpace; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_UTILS_NAMEHANDLER_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxprocessor.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxprocessor.h new file mode 100644 index 00000000..eb2b5c86 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxprocessor.h @@ -0,0 +1,61 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxprocessor.h +#ifndef _FBXSDK_UTILS_PROCESSOR_H_ +#define _FBXSDK_UTILS_PROCESSOR_H_ + +#include + +#include + +#include + +class FbxCollection; + +/** The class and its derived classes(e.g. FbxProcessorXRefCopy, FbxProcessorXRefCopyUserLibrary, etc.) are used to process shader, library, asset, etc. + * For example, you could update object property and its value via FbxProcessor::ProcessObject(), FbxProcessor::internal_ProcessObject(), etc. + */ +class FBXSDK_DLL FbxProcessor : public FbxObject +{ + FBXSDK_OBJECT_DECLARE(FbxProcessor, FbxObject); + +public: + /** + * \name Processor management + */ + //@{ + /** Process the specified collection. + * \param pCollection + */ + bool ProcessCollection(FbxCollection *pCollection=0); + + /** Process the specified object. + * \param pCollection FbxObject to process + */ + bool ProcessObject (FbxObject *pCollection=0); + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual bool internal_ProcessCollectionBegin (FbxCollection *pCollection); + virtual bool internal_ProcessCollectionEnd (FbxCollection *pCollection); + virtual bool internal_ProcessObject (FbxObject* pObject); + virtual bool internal_ProcessCollection (FbxCollection* pCollection); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_UTILS_PROCESSOR_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxprocessorshaderdependency.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxprocessorshaderdependency.h new file mode 100644 index 00000000..a0bc693e --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxprocessorshaderdependency.h @@ -0,0 +1,145 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxprocessorshaderdependency.h +#ifndef _FBXSDK_UTILS_PROCESSOR_SHADER_DEPENDENCY_H_ +#define _FBXSDK_UTILS_PROCESSOR_SHADER_DEPENDENCY_H_ + +#include + +#include +#include +#include + +#include + +/** Crawls CgFx and HLSL shader files, copies them, and all dependent + * shader files into the location specified by RootProcessPath. + */ +class FBXSDK_DLL FbxProcessorShaderDependency : public FbxProcessor +{ + FBXSDK_OBJECT_DECLARE(FbxProcessorShaderDependency, FbxProcessor); + +public: + FbxPropertyT RootProcessPath; + + FbxPropertyT CleanupOnDestroy; + + FbxPropertyT AdditionalIncludePaths; + + void ClearProcessedFiles(); + + /** + * \name Overridable internal function */ + //@{ +protected: + virtual bool internal_ProcessObject(FbxObject* pObject); + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +// Constructor / Destructor +protected: + virtual void ConstructProperties(bool pForceSet); + virtual void Destruct(bool pRecursive); + +public: + + class StringHash + { + public: + unsigned int operator()( const FbxString& pValue ) const + { + // from wikipedia.org + // Jenkins One-at-a-time hash + + size_t lLen = pValue.GetLen(); + unsigned int lHashValue = 0; + const char* lData = pValue.Buffer(); + for( size_t i = 0; i < lLen; ++i ) + { + lHashValue += lData[i]; + lHashValue += (lHashValue << 10); + lHashValue ^= (lHashValue >> 16); + } + lHashValue += (lHashValue << 3); + lHashValue ^= (lHashValue >> 11); + lHashValue += (lHashValue << 15); + + return lHashValue; + } + }; + +protected: + + class FileDeleter + { + public: + FileDeleter( const char* pFileUrl ) : mFileUrl( pFileUrl) {}; + ~FileDeleter() + { + if( !mFileUrl.IsEmpty() ) + { + remove( mFileUrl ); + } + }; + + void Release() { mFileUrl = ""; } + + private: FbxString mFileUrl; + }; + + // first == string as it appears in the file + // second == string URL + struct FilePathData + { + FbxString mOriginalStr; + FbxString mOriginalAbsUrl; + + FbxString mNewStr; + }; + + typedef FbxDynamicArray< FilePathData > FilePathList; + + virtual bool GetIncludePaths( FbxString& pFile, FilePathList& pPaths, FbxXRefManager& pManager ) const; + virtual bool ReplaceUrls( const FbxString& pFileUrl, const FbxString& pNewFileUrl, + const FilePathList& pPaths ) const; + +private: + struct Dependency + { + FbxString mNewUrl; + FbxString mOriginalUrl; + }; + + typedef FbxHashMap< FbxString, Dependency, StringHash > DependMap; + + DependMap mDependMap; + + FbxString mRootPath; + + FbxXRefManager mResolver; + int mSystemIndex; + + // magic number to limit the size of files we can parse =( + static const int sMaxFileSize; + + bool ParseDependencies( const FbxBindingTable& pTable ); + bool AddDependency( FbxString& pFileUrl ); + bool AddSystemPaths(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_UTILS_PROCESSOR_SHADER_DEPENDENCY_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxprocessorxref.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxprocessorxref.h new file mode 100644 index 00000000..dc86c6ff --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxprocessorxref.h @@ -0,0 +1,147 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxprocessorxref.h +#ifndef _FBXSDK_UTILS_PROCESSOR_XREF_H_ +#define _FBXSDK_UTILS_PROCESSOR_XREF_H_ + +#include + +#include +#include + +#include + +/** This class contains objects + * This class also provides access to global settings and take information. + */ +class FBXSDK_DLL FbxProcessorXRefCopy : public FbxProcessor +{ + FBXSDK_OBJECT_DECLARE(FbxProcessorXRefCopy, FbxProcessor); + +public: + class FBXSDK_DLL MissingUrlHandler + { + public: + virtual ~MissingUrlHandler(); + virtual void MissingUrl(const FbxString& pUrl, const FbxProperty&) = 0; + }; + + /** + * \name Properties + */ + //@{ + FbxPropertyT OutputDirectory; + + /** As we resolve xref and copy assets, do we update properties to + * now use this relative path? Defaults to TRUE. + */ + FbxPropertyT UpdateProperties; + + /** Default to FALSE -- when set, this informs the processor to track + * every properties that were modified during the scene processing. + */ + FbxPropertyT TrackUpdatedProperties; + + /** Default to TRUE -- when not set, files are only copied if one of + * the following conditions is met: + * + * 1) Target does not exist + * 2) Target has a different time + * 3) Target has a different size + */ + FbxPropertyT ForceCopy; + + /** Default to TRUE -- when copying a file, also copy its modification + * time. A bit of a requirement if you're not going to use ForceCopy. + */ + FbxPropertyT CopyFileTimes; + //@} + + /** Optional callback; when set, this will be called when an Url cannot be + * be copied because the source is not found. + * Memory is owned by the client code, and will not be freed by us. + */ + MissingUrlHandler* MissingUrlHandler; + + /** Since FbxProperty is an opaque type, we can't do an efficient operator < + * on it, and must keep the data on the object, which can be compared through + * pointers, and then we can further compare against the property name. + */ + struct PropertyUpdate + { + FbxProperty mProperty; + FbxString mOriginalValue; + + inline PropertyUpdate() {} + inline PropertyUpdate(const FbxProperty& pProp, const FbxString& pVal) : + mProperty(pProp), mOriginalValue(pVal) {} + + inline bool operator <(const PropertyUpdate& pOther) const + { + return strcmp(mProperty.GetName(), pOther.mProperty.GetName()) < 0; + } + }; + typedef FbxSet UpdateSet; + typedef FbxMap PropertyUpdateMap; + + /** All properties that were updated, with their original value. + * Will always be empty if TrackUpdatedProperties + * was not set before calling ProcessCollection/ProcessObject. + * NOT cleared before each processing run. + */ + PropertyUpdateMap& GetUpdatedProperties(); + + /** If property tracking was enabled, goes through and reverts all changes + * to the properties. Does not un-copy the files, naturally. + */ + void RevertPropertyChanges(); + + /** This is just a safety net to make sure RevertPropertyChanges is called when + * this goes out of scope. + */ + struct FBXSDK_DLL AutoRevertPropertyChanges + { + AutoRevertPropertyChanges(FbxProcessorXRefCopy* pCopy) : mXRefCopy(pCopy) {} + ~AutoRevertPropertyChanges() + { + if( mXRefCopy ) + mXRefCopy->RevertPropertyChanges(); + } + + FbxProcessorXRefCopy* mXRefCopy; + }; + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void Construct(const FbxObject* pFrom); + virtual void ConstructProperties(bool pForceSet); + + PropertyUpdateMap mUpdatedProperties; + + // Implements the rules specified for the ForceCopy property. + // Also checks the ForceCopy property. + bool ShouldCopyFile(const FbxString& pTarget, const FbxString& pSource) const; + + virtual bool internal_ProcessCollectionBegin (FbxCollection* pObject); + virtual bool internal_ProcessCollectionEnd (FbxCollection* pObject); + virtual bool internal_ProcessObject (FbxObject* pObject); + bool ProcessPathProperty(FbxProperty &pProperty); + virtual bool ValidPropertyForXRefCopy(FbxObject* pObject, FbxProperty& lProperty) const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_UTILS_PROCESSOR_XREF_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxprocessorxrefuserlib.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxprocessorxrefuserlib.h new file mode 100644 index 00000000..c7a1b983 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxprocessorxrefuserlib.h @@ -0,0 +1,64 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxprocessorxrefuserlib.h +#ifndef _FBXSDK_UTILS_PROCESSOR_XREF_USERLIB_H_ +#define _FBXSDK_UTILS_PROCESSOR_XREF_USERLIB_H_ + +#include + +#include + +#include + +/** + * Specialized xref copy processor + */ +class FBXSDK_DLL FbxProcessorXRefCopyUserLibrary : public FbxProcessorXRefCopy +{ + FBXSDK_OBJECT_DECLARE(FbxProcessorXRefCopyUserLibrary, FbxProcessorXRefCopy); + +public: + /** + * \name Properties + */ + //@{ + // Do we copy files even if they are in the system library? + // Defaults to FALSE. + FbxPropertyT CopyAllAssets; + + // Do we copy files even if they are not within the scene? This is + // the typical use case when creating a new library, and defaults to + // TRUE. If you want to extract assets from a specific library you + // you would set this to FALSE to ignore assets from external (user, + // system) libraries. + FbxPropertyT CopyExternalAssets; + + // Do we copy assets that use absolute paths? If true, then after + // the scene processor has run through the URL will be relative to + // the scene document. + // Defaults to TRUE. + FbxPropertyT CopyAbsoluteUrlAssets; + //@} + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual void ConstructProperties(bool pForceSet); + virtual bool ValidPropertyForXRefCopy(FbxObject* pObject, FbxProperty& lProperty) const; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_UTILS_PROCESSOR_XREF_USERLIB_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrenamingstrategy.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrenamingstrategy.h new file mode 100644 index 00000000..585dec70 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrenamingstrategy.h @@ -0,0 +1,360 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxrenamingstrategy.h +#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_H_ +#define _FBXSDK_UTILS_RENAMINGSTRATEGY_H_ + +#include + +#include +#include + +#include + +class FbxScene; +class FbxNode; + +/** This base class is an abstract implementation of a renaming strategy for avoiding name clashes. + * An implementation of a reader (FbxReader) or writer (FbxWriter) class must call a concrete implementation + * of "FbxRenamingStrategyInterface::Rename()" every time a name is imported or exported to avoid name clashes. + * Any class deriving from FbxRenamingStrategyBase must implement FbxRenamingStrategyInterface::Clear(), + * FbxRenamingStrategyInterface::Rename(), and FbxRenamingStrategyInterface::Clone(). + * \nosubgrouping + * \see FbxNameHandler FbxRenamingStrategyNumber + */ +class FBXSDK_DLL FbxRenamingStrategyInterface +{ +public: + //! Constructor. + FbxRenamingStrategyInterface(); + + //! Destructor. + virtual ~FbxRenamingStrategyInterface (); + + //! Resets internal state regarding assigned names. + virtual void Clear() = 0; + + /** Rename a name if necessary to avoid name-clash issues. + * \param pName The name to be renamed. + * \return Return \c true on success, \c false otherwise. + */ + virtual bool Rename(FbxNameHandler& pName) = 0; + + /** Create a dynamic renaming strategy instance of the same type as the child class. + * \return New instance. + */ + virtual FbxRenamingStrategyInterface* Clone() = 0; +}; + +/** Implements a renaming strategy that resolves name clashes by adding number postfixes. + * For example, when there are three objects with the same names "MyObject", + * and they will be renamed to "MyObject", "MyObject1" and "MyObject2". + * \nosubgrouping + * \see FbxNameHandler FbxRenamingStrategyBase + */ +class FBXSDK_DLL FbxRenamingStrategyNumber : public FbxRenamingStrategyInterface +{ +public: + //! Constructor. + FbxRenamingStrategyNumber(); + + //! Destructor. + virtual ~FbxRenamingStrategyNumber (); + + //! Resets internal state regarding assigned names. + virtual void Clear(); + + /** Rename a name if necessary to avoid name-clash issues. + * \param pName The name to be renamed. + * \return Return \c true on success, \c false otherwise. + */ + virtual bool Rename(FbxNameHandler& pName); + + /** Create a dynamic renaming strategy instance of the same type as the child class. + * \return New instance. + */ + virtual FbxRenamingStrategyInterface* Clone(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + struct NameCell + { + NameCell(const char* pName) : + mName(pName), + mInstanceCount(0) + { + } + + FbxString mName; + int mInstanceCount; + }; + + FbxArray mNameArray; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** The FbxRenamingStrategy object can be set to rename all the objects in a scene. + * It can remove name clashing, remove illegal characters, manage namespaces and manage backward compatibility. + * It is better to choose FbxSceneRenamer instead of this class to simplify the usage. + * \nosubgrouping + * \see FbxSceneRenamer + */ +class FBXSDK_DLL FbxRenamingStrategy : public FbxRenamingStrategyInterface +{ +public: + /** \enum EDirection The mode describing the convention direction, from FBX format or to FBX format. + * - \e eToFBX Convert to FBX format from another format. + * - \e eFromFBX Convert from FBX format to another format. + */ + enum EDirection + { + eToFBX, + eFromFBX + }; + + /** Constructor. + * \param pMod The mode describing the convention direction, from FBX format or to FBX format. + * \param pOnCreationRun + */ + FbxRenamingStrategy(EDirection pMod, bool pOnCreationRun = false); + + //! Destructor. + virtual ~FbxRenamingStrategy(); + + /** Rename a name if necessary. + * \param pName The name to be renamed. + * \return Return \c true on success, \c false otherwise. + */ + virtual bool Rename(FbxNameHandler& pName); + + //! Resets internal state regarding assigned names. + virtual void Clear(); + + /** Create a dynamic renaming strategy instance of the same type as the child class. + * \return New instance. + */ + virtual FbxRenamingStrategyInterface* Clone(); + + /** \enum EClashType + * - \e eNameClashAuto + * - \e eNameClashType1 + * - \e eNameClashType2 + */ + enum EClashType + { + eNameClashAuto, + eNameClashType1, + eNameClashType2 + }; + + /** Setup the strategy to perform this algorithm + * \param pType + */ + void SetClashSoverType(EClashType pType); + + /** Returns a name with its prefix removed. + * \param pName A name containing a prefix. + * \return The part of pName following the "::" + */ + static char* NoPrefixName (const char* pName); + + /** Returns a name with its prefix removed. + * \param pName A name containing a prefix. + * \return The part of pName following the "::" + */ + static char* NoPrefixName (FbxString& pName); + + /** Get the namespace of the last renamed object. + * \return Char pointer to the namespace. + */ + virtual char* GetNameSpace() { return mNameSpace.Buffer(); } + + /** Sets the current scene namespace symbol. + * \param pNameSpaceSymbol namespace symbol. + */ + virtual void SetInNameSpaceSymbol(FbxString pNameSpaceSymbol){mInNameSpaceSymbol = pNameSpaceSymbol;} + + /** Sets the wanted scene namespace symbol. + * \param pNameSpaceSymbol namespace symbol. + */ + virtual void SetOutNameSpaceSymbol(FbxString pNameSpaceSymbol){mOutNameSpaceSymbol = pNameSpaceSymbol;} + + /** Sets case sensitivity for name clashing. + * \param pIsCaseSensitive Set to \c true to make the name clashing case sensitive. + */ + virtual void SetCaseSensibility(bool pIsCaseSensitive){mCaseSensitive = pIsCaseSensitive ;} + + /** Sets the flag for character acceptance during renaming. + * \param pReplaceNonAlphaNum Set to \c true to replace illegal characters with an underscore ("_"). + */ + virtual void SetReplaceNonAlphaNum(bool pReplaceNonAlphaNum){mReplaceNonAlphaNum = pReplaceNonAlphaNum;} + + /** Sets the flag for first character acceptance during renaming. + * \param pFirstNotNum Set to \c true to add an underscore to the name if the first character is a number. + */ + virtual void SetFirstNotNum(bool pFirstNotNum){mFirstNotNum = pFirstNotNum;} + + /** Recursively renames all the unparented namespaced objects (Prefix mode) starting from this node. + * \param pNode Parent node. + * \param pIsRoot The root node. + * \remarks This function adds "_NSclash" when it encounters an unparented namespaced object. + */ + virtual bool RenameUnparentNameSpace(FbxNode* pNode, bool pIsRoot = false); + + /** Recursively removes all the unparented namespaced "key" starting from this node. + * \param pNode Parent node. + * \remarks This function removes "_NSclash" when encountered. This is the opposite from RenameUnparentNameSpace. + */ + virtual bool RemoveImportNameSpaceClash(FbxNode* pNode); + + /** Recursively get all the namespace starting from this node's parent. + * \param pNode Parent node. + * \param pNameSpaceList output the namespace list from pNode's parent to the root node. + */ + virtual void GetParentsNameSpaceList(FbxNode* pNode, FbxArray &pNameSpaceList); + + /** Recursively replace the namespace starting from this node to its children. + * \param pNode Current node. + * \param OldNS The old namespace to be replaced with the NewNs. + * \param NewNS The new namespace to replace OldNs. + */ + virtual bool PropagateNameSpaceChange(FbxNode* pNode, FbxString OldNS, FbxString NewNS); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + virtual bool RenameToFBX(FbxNameHandler& pName); + virtual bool RenameFromFBX(FbxNameHandler& pName); + virtual FbxString& ReplaceNonAlphaNum(FbxString& pName, const char* pReplace, bool pIgnoreNameSpace); + + EDirection mMode; + EClashType mType; + + struct NameCell + { + NameCell(const char* pName) : + mName(pName), + mInstanceCount(0) + { + } + + FbxString mName; + int mInstanceCount; + }; + + FbxCharPtrSet mStringNameArray; + FbxArray mExistingNsList; + bool mOnCreationRun; + bool mCaseSensitive; + bool mReplaceNonAlphaNum; + bool mFirstNotNum; + FbxString mNameSpace; + FbxString mInNameSpaceSymbol; //symbol identifying a name space + FbxString mOutNameSpaceSymbol; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +/** The FbxSceneRenamer provides a way to easily rename objects in a scene without using the FbxRenamingStrategy class. + * FbxSceneRenamer can remove name clashing and illegal characters. It also manages namespaces. + * + * Example: + * Maya only accepts names with letters, digits, or underscores, and we want to convert + * all the names of a scene from FBX format to Maya format. + * \code + * FbxSceneRenamer lSceneRenamer(pScene); + * lSceneRenamer.RenameFor(FbxSceneRenamer::eFBX_TO_MAYA); + * \endcode + * \nosubgrouping + * \see FbxRenamingStrategy + */ +class FBXSDK_DLL FbxSceneRenamer +{ +public: + /** Constructor + * \param pScene A scene which contains objects to be renamed. + */ + FbxSceneRenamer(FbxScene* pScene) {mScene = pScene;}; + + //! Destructor. + virtual ~FbxSceneRenamer(){}; + + /** \enum ERenamingMode The Mode describing from which format to which format. + * - \e eNone + * - \e eMAYA_TO_FBX5 + * - \e eMAYA_TO_FBX_MB75 + * - \e eMAYA_TO_FBX_MB70 + * - \e eFBXMB75_TO_FBXMB70 + * - \e eFBX_TO_FBX + * - \e eMAYA_TO_FBX + * - \e eFBX_TO_MAYA + * - \e eLW_TO_FBX + * - \e eFBX_TO_LW + * - \e eXSI_TO_FBX + * - \e eFBX_TO_XSI + * - \e eMAX_TO_FBX + * - \e eFBX_TO_MAX + * - \e eMB_TO_FBX + * - \e eFBX_TO_MB + * - \e eDAE_TO_FBX + * - \e eFBX_TO_DAE + */ + enum ERenamingMode + { + eNone, + eMAYA_TO_FBX5, + eMAYA_TO_FBX_MB75, + eMAYA_TO_FBX_MB70, + eFBXMB75_TO_FBXMB70, + eFBX_TO_FBX, + eMAYA_TO_FBX, + eFBX_TO_MAYA, + eLW_TO_FBX, + eFBX_TO_LW, + eXSI_TO_FBX, + eFBX_TO_XSI, + eMAX_TO_FBX, + eFBX_TO_MAX, + eMB_TO_FBX, + eFBX_TO_MB, + eDAE_TO_FBX, + eFBX_TO_DAE + }; + + /** Rename the objects of the scene according the specific mode. + * \param pMode A mode describing from which format to which format. + */ + void RenameFor(ERenamingMode pMode); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + void ResolveNameClashing( bool pFromFbx, bool pIgnoreNS, bool pIsCaseSensitive, + bool pReplaceNonAlphaNum, bool pFirstNotNum, + FbxString pInNameSpaceSymbol, FbxString pOutNameSpaceSymbol, + bool pNoUnparentNS/*for MB < 7.5*/, bool pRemoveNameSpaceClash); + + FbxRenamingStrategyInterface* mNodeRenamingStrategy; + FbxScene* mScene; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_H_ */ + diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrenamingstrategybase.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrenamingstrategybase.h new file mode 100644 index 00000000..60e3d439 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrenamingstrategybase.h @@ -0,0 +1,92 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxrenamingstrategybase.h +#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_BASE_H_ +#define _FBXSDK_UTILS_RENAMINGSTRATEGY_BASE_H_ + +#include + +#include +#include + +#include + +/** \brief Base class for renaming strategy. +* \nosubgrouping +*/ +class FBXSDK_DLL FbxRenamingStrategyBase +{ +public: + + //! Default constructor + FbxRenamingStrategyBase(); + + /** Constructor. + * \param pNameSpaceSymbol + */ + FbxRenamingStrategyBase(char pNameSpaceSymbol); + + //! Destructor. + virtual ~FbxRenamingStrategyBase(); + + /** This method put all the names in the scene back to the original values + * \param pScene + * \return Returns true if some names have been modified. + */ + virtual bool DecodeScene(FbxScene* pScene)=0; + + /** This method renames all the names in the scene + * \param pScene + * \return Returns true if some names have been modified. + */ + virtual bool EncodeScene(FbxScene* pScene)=0; + + /** This method find the original name of a given string + * \param pString + * \return Returns true if the name has been modified. + */ + virtual bool DecodeString(FbxNameHandler& pString)=0; + + /** This method find the renaming name of a given string + * \param pString + * \param pIsPropertyName + * \return Returns true if the name has been modified. + */ + virtual bool EncodeString(FbxNameHandler& pString, bool pIsPropertyName=false)=0; + + //! clean up the name cells. + virtual void CleanUp(); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS + struct NameCell + { + NameCell(const char* pName) : + mName(pName), + mInstanceCount(0) + { + } + + FbxString mName; + int mInstanceCount; + }; + + char mNamespaceSymbol; + FbxCharPtrSet mStringNameArray; +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_BASE_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrenamingstrategyfbx5.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrenamingstrategyfbx5.h new file mode 100644 index 00000000..ab438489 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrenamingstrategyfbx5.h @@ -0,0 +1,66 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxrenamingstrategyfbx5.h +#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX5_H_ +#define _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX5_H_ + +#include + +#include + +#include + +/** \brief This class contains the description of the FBX renaming strategy for fbx file format 5. +* \nosubgrouping +*/ +class FBXSDK_DLL FbxRenamingStrategyFbx5: public FbxRenamingStrategyBase +{ +public: + + //! Default constructor + FbxRenamingStrategyFbx5(); + + //! Destructor + virtual ~FbxRenamingStrategyFbx5(); + + /** This method put all the names in the scene back to the original values + * \param pScene + * \return Returns true if some names have been modified. + */ + virtual bool DecodeScene(FbxScene* pScene); + + /** This method renames all the names in the scene + * \param pScene + * \return Returns true if some names have been modified. + */ + virtual bool EncodeScene(FbxScene* pScene); + + /** This method find the original name of a given string + * \param pName + * \return Returns true if the name has been modified. + */ + virtual bool DecodeString(FbxNameHandler& pName); + + /** This method find the renaming name of a given string + * \param pName + * \param pIsPropertyName + * \return Returns true if the name has been modified. + */ + virtual bool EncodeString(FbxNameHandler& pName, bool pIsPropertyName=false); + + //! clean up the name cells. + virtual void CleanUp(); +}; + +#include + +#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX5_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrenamingstrategyfbx6.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrenamingstrategyfbx6.h new file mode 100644 index 00000000..ec4f224c --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrenamingstrategyfbx6.h @@ -0,0 +1,66 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxrenamingstrategyfbx6.h +#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX6_H_ +#define _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX6_H_ + +#include + +#include + +#include + +/** \brief This class contains the description of the FBX renaming strategy for fbx file format 6. +* \nosubgrouping +*/ +class FBXSDK_DLL FbxRenamingStrategyFbx6: public FbxRenamingStrategyBase +{ +public: + + //! Default constructor + FbxRenamingStrategyFbx6(); + + //! Destructor + virtual ~FbxRenamingStrategyFbx6(); + + /** This method put all the names in the scene back to the original values + * \param pScene + * \return Returns true if some names have been modified. + */ + virtual bool DecodeScene(FbxScene* pScene); + + /** This method renames all the names in the scene + * \param pScene + * \return Returns true if some names have been modified. + */ + virtual bool EncodeScene(FbxScene* pScene); + + /** This method find the original name of a given string + * \param pName + * \return Returns true if the name has been modified. + */ + virtual bool DecodeString(FbxNameHandler& pName); + + /** This method find the renaming name of a given string + * \param pName + * \param pIsPropertyName + * \return Returns true if the name has been modified. + */ + virtual bool EncodeString(FbxNameHandler& pName, bool pIsPropertyName=false); + + //! clean up the name cells. + virtual void CleanUp(); +}; + +#include + +#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX6_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrenamingstrategyfbx7.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrenamingstrategyfbx7.h new file mode 100644 index 00000000..1b7d832c --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrenamingstrategyfbx7.h @@ -0,0 +1,37 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxrenamingstrategyfbx7.h +#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX7_H_ +#define _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX7_H_ + +#include + +#include + +#include + +class FBXSDK_DLL FbxRenamingStrategyFbx7 : public FbxRenamingStrategyBase +{ +public: + FbxRenamingStrategyFbx7(); + virtual ~FbxRenamingStrategyFbx7(); + + virtual void CleanUp(); + virtual bool DecodeScene(FbxScene* pScene); + virtual bool EncodeScene(FbxScene* pScene); + virtual bool DecodeString(FbxNameHandler& pName); + virtual bool EncodeString(FbxNameHandler& pName, bool pIsPropertyName=false); +}; + +#include + +#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_FBX7_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrenamingstrategyutilities.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrenamingstrategyutilities.h new file mode 100644 index 00000000..29517d29 --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrenamingstrategyutilities.h @@ -0,0 +1,93 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxrenamingstrategyutilities.h +#ifndef _FBXSDK_UTILS_RENAMINGSTRATEGY_UTILITIES_H_ +#define _FBXSDK_UTILS_RENAMINGSTRATEGY_UTILITIES_H_ + +#include + +#include + +#include + +#define NAMECLASH1_KEY "_ncl1_" // name (x) +#define NAMECLASH2_KEY "_ncl2_" // Upper/lower cases clash + +#define UPPERTOLOWER_KEY "ul" +#define LOWERTOUPPER_KEY "lu" + +/** \brief This class contains a set of utilities, which are used by the FBX renaming strategy. +* \nosubgrouping +*/ +class FBXSDK_DLL FbxRenamingStrategyUtils +{ +public: + + /** Check if the string has non alphanumeric characters and replace them with a special string containing a prefix and + * the character code. + * \param pString String to be processed. The result of the conversion is also returned in this string. + * \param pFirstCharMustBeAlphaOnly This flag tells whether the first char of the string must be alpha only. Its default + * value is \c false. + * \param pPermittedChars List of non alphanumeric characters that do not require to be converted because already + * supported by the destination application. When encountered, these characters are simply + * skipped and left as is. + * \param p8bitCharsOnly When \c true, this flag tells the routine that only 8 bit coded characters can be + * represented by the encoding format (see note below). If set to \c false, the range of supported + * character is increased and the memory usage may be less. But the routine will perform slower + * because of the internal conversions required. + * \return Returns \c true if at least one character in \c pString has been encoded. + * \note The encoding string depends on the value of \c p8bitCharsOnly argument. When this parameter value is \c true, + * each non-alphanumeric character is replaced with FBXASC### (where ### is the decimal code of the character). + * Inversely, when the value is \c false, each non-alphanumeric characters is replaced with FBXCHR##### (where + * ##### is the hexadecimal representation of the character code). + */ + static bool EncodeNonAlpha(FbxString &pString, bool pFirstCharMustBeAlphaOnly=false, FbxString pPermittedChars="", bool p8bitCharsOnly = true); + + /** Take a string that has been encoded by EncodeNonAlpha and re-extract the non-alphanumeric values. + * \param pString String to be processed. The result of the conversion is also returned in this string. + * \return Returns \c true if the \c pString argument has been decoded. + */ + static bool DecodeNonAlpha(FbxString &pString); + + /** This method will add the _ncl1_ with the provided pInstanceNumber to the string + * \param pString + * \param pInstanceNumber Its default value is 0. + * \return Always returns true. + * \remarks please ALWAYS call Encode Duplicate BEFORE Encode Case Insensitive. + */ + static bool EncodeDuplicate(FbxString &pString, int pInstanceNumber=0); + + /** This method will remove the _ncl1_xxx from the given string + * \param pString + * \return Returns true if the pString has been modified + */ + static bool DecodeDuplicate(FbxString &pString); + + /** This method will compare pString and pString2, set pString to pString2 and append the ncl2 suffix to it + * \param pString + * \param pString2 + * \return Returns true if the pString has been modified + * \remarks pString and pString2 must be identical except for casing. + */ + static bool EncodeCaseInsensitive(FbxString &pString, const FbxString pString2); + + /** This method will decode a string that has a ncl2 to it + * \param pString + * \return Returns true if the pString has been modified + */ + static bool DecodeCaseInsensitive(FbxString &pString); + +}; + +#include + +#endif /* _FBXSDK_UTILS_RENAMINGSTRATEGY_UTILITIES_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrootnodeutility.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrootnodeutility.h new file mode 100644 index 00000000..1503adcf --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxrootnodeutility.h @@ -0,0 +1,78 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxrootnodeutility.h +#ifndef _FBXSDK_UTILS_ROOT_NODE_UTILITY_H_ +#define _FBXSDK_UTILS_ROOT_NODE_UTILITY_H_ + +#include + +#include + +#include + +class FbxScene; +class FbxAxisSystem; +class FbxNode; + +/** \brief This class collects static functions for manipulating Fbx_Root nodes. + * Fbx_Root nodes were used to orient and scale scenes from other graphics applications. They have been replaced by the + * conversion routines in FbxAxisSystem and FbxSystemUnit. These methods are provided for backward compatibility only + * and will eventually be removed. Use the conversion routines in FbxSystemUnit and FbxAxisSystem when possible. + */ +class FBXSDK_DLL FbxRootNodeUtility +{ +public: + + static const char* sFbxRootNodePrefix; + + /** This method strips the scene of all Fbx_Root nodes. + * \param pScene The scene to convert + * \return \c true if successful, \c false otherwise. + * \remarks Converts the children of any Fbx_Roots to the orientation + * and units that the Fbx_Root transformation represented. + * The scene should look unchanged. + */ + static bool RemoveAllFbxRoots( FbxScene* pScene ); + + /** Inserts an Fbx_Root node into the scene to orient the + * scene from its axis and unit systems to the specified ones. + * \param pScene The scene to convert + * \param pDstAxis Destination axis. + * \param pDstUnit Destination unit + * \param pUnitOptions Unit conversion options + * + */ + static bool InsertFbxRoot( FbxScene* pScene, + const FbxAxisSystem& pDstAxis, + const FbxSystemUnit& pDstUnit, + const FbxSystemUnit::ConversionOptions& pUnitOptions = FbxSystemUnit::DefaultConversionOptions ); + + /** Check if a node is an Fbx_Root node + * \param pNode The node to query + * \return \c true if pNode is a Fbx_Root node, false otherwise + */ + static bool IsFbxRootNode(FbxNode* pNode); + +/***************************************************************************************************************************** +** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** +*****************************************************************************************************************************/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +protected: + FbxRootNodeUtility(); + FbxRootNodeUtility(const FbxRootNodeUtility& pOther); + ~FbxRootNodeUtility(); +#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ +}; + +#include + +#endif /* _FBXSDK_UTILS_ROOT_NODE_UTILITY_H_ */ diff --git a/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxusernotification.h b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxusernotification.h new file mode 100644 index 00000000..2cfb6dcd --- /dev/null +++ b/Tools/Dependencies/FBX_SDK_2016.1.2/include/fbxsdk/utils/fbxusernotification.h @@ -0,0 +1,523 @@ +/**************************************************************************************** + + Copyright (C) 2015 Autodesk, Inc. + All rights reserved. + + Use of this software is subject to the terms of the Autodesk license agreement + provided at the time of installation or download, or which otherwise accompanies + this software in either electronic or hard copy form. + +****************************************************************************************/ + +//! \file fbxusernotification.h +#ifndef _FBXSDK_UTILS_USER_NOTIFICATION_H_ +#define _FBXSDK_UTILS_USER_NOTIFICATION_H_ + +#include + +#include +#include +#include + +#include + +class FbxLogFile; +class FbxMessageEmitter; +class FbxUserNotificationFilteredIterator; + +/** This class defines one entry object held by the FbxUserNotification class. + * \nosubgrouping + * An entry object is a message to show error, warning or information. + * Direct manipulation of this object should not be required. At most, access to + * its members can be granted for querying purposes. + */ +class FBXSDK_DLL FbxAccumulatorEntry +{ +public: + /** Category of the accumulator entry. + */ + enum EClass + { + eError=1, //!< Error message entry. + eWarning=2, //!< Warning message entry. + eInformation=4, //!< Information message entry. + eAny=7 //!< Entry that does not belong to above class. Cannot be used as a class ID + }; + + /** Constructor. + * \param pAEClass Specify the category for this entry. + * \param pName Identifies this entry (more than one object can have the same name). + * \param pDescr The description of the entry. This is the common message. The details + * are added separately by the FbxUserNotification classes. + * \param pDetail A list of detail string that will be copied into the local array. + * \param pMuteState Whether this entry is muted. + * \remarks By default the object is muted so it does not get processed by the low level + * output routines of the UserNotification accumulator. The entry gets activated + * (unmuted) by the calls to AddDetail() in the accumulator. + */ + FbxAccumulatorEntry(EClass pAEClass, const FbxString& pName, const FbxString& pDescr, + FbxString pDetail="", bool pMuteState=true); + + /** Copy Constructor. + * \param pAE Another FbxAccumulatorEntry object to be copied. + * \param pSkipDetails Flag to skip details. + */ + FbxAccumulatorEntry(const FbxAccumulatorEntry& pAE, bool pSkipDetails); + + //! Destructor. + ~FbxAccumulatorEntry(); + + //! Returns the category class of this entry. + EClass GetClass() const; + + //! Returns the name of this entry. + FbxString GetName() const; + + //! Returns the description of this entry. + FbxString GetDescription() const; + + //! Returns the number of details stored. + int GetDetailsCount() const; + + /** Returns a pointer to one specific detail string (or NULL if the id is invalid). + * Detail string is dynamic. One entry can have multiple detail strings to hold extra information. + * For example, if one entry message is related to many FBX nodes, user can add these nodes' name as details. + * \param id The detail id. + * \return Pointer to the specific detail. + */ + const FbxString* GetDetail(int id) const; + + //! Returns True if this entry is muted. + bool IsMuted() const; + +private: + FbxArray& GetDetails(); + void Mute(bool pState); + + bool mMute; + EClass mAEClass; + FbxString mName; + FbxString mDescr; + FbxArray mDetails; + + friend class FbxUserNotification; +}; + + +/** This class accumulates user notifications and sends them to any device opened by the derived classes. + * If this class is not derived, the data can only be sent to a log file. To send data to a log file, + * it must be opened before attempting to send data, otherwise, the messages will be lost. + */ +class FBXSDK_DLL FbxUserNotification +{ +public: + /** + * Create and initialize user notification object for the SDK manager. + * One SDK manager has one global user notification object. + * If the SDK manager already has global user notification object, the function will do nothing. + * + * \param pManager + * \param pLogFileName Name of the log file that will be open in the directory + * defined by the GetLogFilePath method. + * \param pSessionDescription This string is used to separate session logs in the file. + * \return the global user notification object owned by the SDK manager. + */ + static FbxUserNotification* Create(FbxManager* pManager, + const FbxString& pLogFileName, + const FbxString& pSessionDescription); + + /** + * Destroy the global user notification object owned by the SDK manager. + */ + static void Destroy(FbxManager* pManager); + + /** Instantiate a FbxUserNotification but leave it uninitialized. The caller must + * explicitly call InitAccumulator to initialize it and ClearAccumulator when finished + * using it. + * \param pManager + * \param pLogFileName Name of the log file that will be open in the directory + * defined by the GetLogFilePath method. + * \remarks If pLogFileName is an empty string the log file does not get created and any + * output sent to it is lost. + * \param pSessionDescription This string is used to separate session logs in the file. + * \remarks If the specified log file already exists, messages are appended to it. This + * class never deletes the log file. Derived classes may delete the log file + * before opening (it must be done in the constructor because the log file is + * opened in the InitAccumulator) or at the end of the processing in the + * PostTerminate method. + */ + FbxUserNotification(FbxManager* pManager, + FbxString const& pLogFileName, + FbxString const& pSessionDescription); + + //! Destructor. + virtual ~FbxUserNotification(); + + /** + * Accumulator is to hold the notification entries. User can add entries to it. + * This method must be called before using the Accumulator. It opens the log file and + * calls AccumulatorInit followed by OpenExtraDevices. Failing to call this method + * will prevent other actions except ClearAccumulator, GetLogFileName and GetLogFilePath. + */ + void InitAccumulator(); + + /** This method must be called when the Accumulator is no longer needed. It calls + * CloseExtraDevices, followed by the AccumulatorClear, and then closes the log file. + */ + void ClearAccumulator(); + + /** IDs for pre-defined message entries. + */ + enum EEntryID + { + eBindPoseInvalidObject, + eBindPoseInvalidRoot, + eBindPoseNotAllAncestorsNodes, + eBindPoseNotAllDeformingNodes, + eBindPoseNotAllAncestorsDefinitionNodes, + eBindPoseRelativeMatrix, + eEmbedMediaNotify, + eFileIONotify, //!< this is generic for reader and writer to log notifications. + eFileIONotifyMaterial, + eFileIONotifyDXFNotSupportNurbs, + eEntryStartID //!< Starting ID for any Accumulator entry added by derived classes. + }; + + /** + * \name Accumulator Management + */ + //@{ + /** Adds one entry into the accumulator. + * \param pID This entry unique ID. + * \param pName This entry name. + * \param pDescr The description of this entry. + * \param pClass The category of this entry. + * \return The ID of the newly allocated entry. This ID is pEntryId. + */ + int AddEntry(const int pID, const FbxString& pName, const FbxString& pDescr, FbxAccumulatorEntry::EClass pClass=FbxAccumulatorEntry::eWarning); + + /** Completes the accumulator entry (there can be more that one detail for each entry) and implicitly defines + * the sequence of events. Each call to this method is internally recorded, making it possible to output each + * notification in the order they have been defined. Also, when a detail is added to an entry, it is automatically unmuted + * so it can be sent to the devices (muted FbxAccumulatorEntry objects are not processed). + * \param pEntryId The entry index (as returned by AddEntry). + * \return The id of the detail in the recorded sequence of events. This Id should be used when the call to + * Output has the eSequencedDetails set as a source. If an error occurs, the returned value is -1 + */ + int AddDetail(int pEntryId); + + /** Completes the accumulator entry (there can be more that one detail for each entry) and implicitly defines + * the sequence of events. Each call to this method is internally recorded, making it possible to output each + * notification in the order they have been defined. Also, when a detail is added to an entry, it is automatically unmuted + * so it can be sent to the devices (muted FbxAccumulatorEntry objects are not processed). + * \param pEntryId The entry index (as returned by AddEntry). + * \param pString The detail string to add to the entry. + * \return The id of the detail in the recorded sequence of events. This Id should be used when the call to + * Output has the eSequencedDetails set as a source. If an error occurs, the returned value is -1 + */ + int AddDetail(int pEntryId, FbxString pString); + + /** Completes the accumulator entry (there can be more that one detail for each entry) and implicitly defines + * the sequence of events. Each call to this method is internally recorded, making it possible to output each + * notification in the order they have been defined. Also, when a detail is added to an entry, it is automatically unmuted + * so it can be sent to the devices (muted FbxAccumulatorEntry objects are not processed). + * \param pEntryId The entry index (as returned by AddEntry). + * \param pNode The node to add to the entry. + * \return The id of the detail in the recorded sequence of events. This Id should be used when the call to + * Output has the eSequencedDetails set as a source. If an error occurs, the returned value is -1 + */ + int AddDetail(int pEntryId, FbxNode* pNode); + + //! Returns the number of AccumulatorEntries currently stored in this accumulator. + int GetNbEntries() const; + + /** Get the specified FbxAccumulatorEntry. + * \param pEntryId ID of the entry to retrieve. + * \return Pointer to the specified entry, otherwise \c NULL if either the id is invalid or the Accumulator + * is not properly initialized. + */ + const FbxAccumulatorEntry* GetEntry(int pEntryId); + + /** Get the FbxAccumulatorEntry at the specified index. + * \param pEntryIndex index of the entry to retrieve. + * \return Pointer to the specified entry, otherwise \c NULL if either the index is invalid or the Accumulator + * is not properly initialized.. + */ + const FbxAccumulatorEntry* GetEntryAt(int pEntryIndex) const; + + //! Returns the number of Details recorded so far in this accumulator. + int GetNbDetails() const; + + /** Get the specified detail. + * \param pDetailId Index of the detail. This is the id-th detail of type pClass as inserted + * when the AddDetail + * \param pAE Pointer to the FbxAccumulatorEntry object that contains the requested detail. + * The returned valued can be NULL if an error occurred. + * \return The index of the detail to be used when calling the GetDetail of the FbxAccumulatorEntry. + * \remarks A value of -1 is acceptable and means that the FbxAccumulatorEntry has no details. However, + * if pAE is NULL, the return value is meaningless. + */ + int GetDetail(int pDetailId, const FbxAccumulatorEntry*& pAE) const; + + //@} + + /** + * \name Accumulator Output + */ + //@{ + /** Specify send what kind of data to output device. + */ + enum EOutputSource + { + eAccumulatorEntry, //!< Entry with its details. + eSequencedDetails //!< Details in the recorded order. + }; + + /** Send the accumulator entries to the output devices. + * This method needs to be explicitly called by the program that uses this + * class. + * \param pOutSrc Specify which data has to be sent to the output devices. Set to SEQUENCED_DETAILS + * to send the Details in the recorded order. Set to ACCUMULATOR_ENTRY to send + * each entry with its details regardless of the order in which the events occurred. + * \param pIndex If this parameter >= 0, only send the specified entry/detail index to the output devices. + * Otherwise send all of them. + * \param pExtraDevicesOnly If this parameter is True, the output is not sent to the log file. + * \remarks The pExtraDevicesOnly parameter is ignored if the log file has been disabled. + */ + bool Output(EOutputSource pOutSrc=eAccumulatorEntry, int pIndex = -1, bool pExtraDevicesOnly = false); + + /** Send the accumulator entry to the output devices. + * \param pId Send the entry/detail that matching pIdx to the output devices, + * otherwise send all of them. + * \param pOutSrc Specify which data has to be sent to the output devices. Set to SEQUENCED_DETAILS + * to send the Details in the recorded order. Set to ACCUMULATOR_ENTRY to send + * each entry with its details regardless of the order in which the events occurred.. + * \param pExtraDevicesOnly If this parameter is True, the output is not sent to the log file. + */ + bool OutputById(EEntryID pId, EOutputSource pOutSrc=eAccumulatorEntry, bool pExtraDevicesOnly = false); + + /** Send an immediate entry to the output devices. + * This method bypasses the accumulator by sending the entry directly to the output devices + * and discarding it right after. The internal accumulator lists are left unchanged by this call. + * \param pName This entry name. + * \param pDescr The description of this entry. + * \param pClass The category of this entry. + * \param pExtraDevicesOnly If this parameter is True, the output is not sent to the log file. + * \remarks The pExtraDevicesOnly parameter is ignored if the log file has been disabled. + */ + bool Output(const FbxString& pName, const FbxString& pDescr, FbxAccumulatorEntry::EClass pClass, bool pExtraDevicesOnly = false); + + /** Sends the content of the iterator to the output devices. + * This method bypasses the accumulator by sending each entry in the iterator directly to + * the output devices. The internal accumulator lists are left unchanged by this call. + * \param pAEFIter The Filtered FbxAccumulatorEntry iterator object. + * \param pExtraDevicesOnly If this parameter is True, the output is not sent to the log file. + * \remarks The pExtraDevicesOnly parameter is ignored if the log file has been disabled. + */ + bool Output(FbxUserNotificationFilteredIterator& pAEFIter, bool pExtraDevicesOnly = false); + + /** Set log message emitter. + * \param pLogMessageEmitter The new log message emitter. + */ + void SetLogMessageEmitter(FbxMessageEmitter * pLogMessageEmitter); + + /** + * \name Utilities + */ + //@{ + /** Returns the absolute path to the log file. If this method is not overridden in a derived class, it + * returns the TEMP directory. + * \param pPath The returned path. + */ + virtual void GetLogFilePath(FbxString& pPath); + + /** Returns the log file name. */ + inline FbxString GetLogFileName() { return mLogFileName; } + //@} + +protected: + /** + * Identify one detail in all accumulator entries by record the entry object and its detail id. + */ + class AESequence + { + public: + AESequence(FbxAccumulatorEntry* pAE, int pDetailId) : + mAE(pAE), + mDetailId(pDetailId) + { + }; + + //! Return the entry object the detail belongs to. + FbxAccumulatorEntry* AE() { return mAE; } + //! Return the detail id in the entry object + int DetailId() { return mDetailId; } + + private: + FbxAccumulatorEntry* mAE; + int mDetailId; + }; + + friend class FbxUserNotificationFilteredIterator; + + /** Allow a derived class to finalize processing AFTER the log file handle has been + * deleted. This may be required if the log file needs to be moved or shown. + * \returns True if the object is properly cleaned. + */ + virtual bool PostTerminate(); + + /** Allow the implementation class to perform accumulator initializations before + * the Extra devices are opened. By default this method does nothing. + */ + virtual void AccumulatorInit(); + + /** Allow the implementation class to perform accumulator clear after the Extra devices are + * closed. By default this method does nothing. + */ + virtual void AccumulatorClear(); + + /** Allow the implementation class to opens its output devices (called by InitAccumulator). + * By default this method does nothing. + */ + virtual void OpenExtraDevices(); + + /** Allow the implementation class to send all the accumulator entries to the devices. + * By default this method loop trough all the elements of the received array and + * call the SendToExtraDevices method with the appropriate FbxAccumulatorEntry element and id. + * \param pOutputNow Flag indicates whether to output now. + * \param pEntries Accumulator entries to output. + * \return \c true if successful, \c false otherwise. + */ + virtual bool SendToExtraDevices(bool pOutputNow, FbxArray& pEntries); + + /** Allow the implementation class to send all the accumulator entries to the devices. + * By default this method loop trough all the elements of the received array and + * call the SendToExtraDevices method with the appropriate FbxAccumulatorEntry element and id. + * \param pOutputNow Flag indicates whether to output now. + * \param pAESequence Accumulator entries to output. + * \return \c true if successful, \c false otherwise. + */ + virtual bool SendToExtraDevices(bool pOutputNow, FbxArray& pAESequence); + + /** Allow the implementation class to send one accumulator entry to the devices. + * By default this method does nothing. + * \param pOutputNow Flag indicates whether to output now. + * \param pAccEntry Accumulator entry to output. + * \param pDetailId Detail id. + * \return \c true if successful, \c false otherwise. + * \remarks Derived methods should check for the IsMuted() state to decide if the accumulator + * entry should get through or get discarded. See AddDetail for more details. + */ + virtual bool SendToExtraDevices(bool pOutputNow, const FbxAccumulatorEntry* pAccEntry, int pDetailId = -1); + + + /** Allow the implementation class to close it's output devices (called in the ClearAccumulator) + * By default this method does nothing. + */ + virtual void CloseExtraDevices(); + + //! Clears the Accumulator list, remove all user notification entries.. + void ResetAccumulator(); + + //! Clears the Sequence list. + void ResetSequence(); + + /** Send the pIdth element of the accumulator or sequence list to the log file. + * \param pOutSrc The output source, accumulator or sequence list. + * \param pId Element id. + */ + void SendToLog(EOutputSource pOutSrc, int pId); + + /** Send the accumulator entry to the log file. + * \param pAccEntry The accumulator entry. + * \param pDetailId Detail id. + */ + void SendToLog(const FbxAccumulatorEntry* pAccEntry, int pDetailId = -1); + +private: + FbxString mLogFileName; + FbxString* mLog; + FbxLogFile* mLogFile; + FbxMessageEmitter* mLogMessageEmitter; + + bool mProperlyInitialized; + FbxString mSessionDescription; + bool mProperlyCleaned; + + FbxMultiMap mAccuHT; // The set establish a relationship between an FbxAccumulatorEntry and it's ID + FbxArray mAccu; // The array defines the order the FbxAccumulatorEntry objects have been + // added to the accumulator (calls to AddEntry) + // Both structures share the same pointers. + FbxArray mAESequence; + FbxManager* mSdkManager; +}; + +/** This class iterates through the accumulated messages depending on the configuration + * flags (filter). The iterator keeps a local copy of the data extracted from the + * accumulator. + */ +class FBXSDK_DLL FbxUserNotificationFilteredIterator +{ +public: + /** Constructor. + * \param pAccumulator This reference is only used during construction for retrieving + * the data required to fill the iterator. + * \param pFilterClass The bitwise combination of the EClass identifiers. An FbxAccumulatorEntry + * element is copied from the accumulator if its Class matches one of the + * bits of this flag. + * \param pSrc Specify which data format is extracted from the accumulator. + * \param pNoDetail This parameter is used ONLY if pSrc == eAccumulatorEntry and, if set to + * false, the details of the FbxAccumulatorEntry are also sent to the output + * devices. If left to its default value, only the description of the + * FbxAccumulatorEntry is sent. + */ + FbxUserNotificationFilteredIterator(FbxUserNotification& pAccumulator, + int pFilterClass, + FbxUserNotification::EOutputSource pSrc = FbxUserNotification::eSequencedDetails, + bool pNoDetail = true); + + virtual ~FbxUserNotificationFilteredIterator(); + + //! Returns the number of elements contained in this iterator. + int GetNbItems() const; + + //! Put the iterator in its reset state. + void Reset(); + + /** Get this iterator's first item. + * \return NULL if the iterator is empty. + */ + FbxAccumulatorEntry* const First(); + + /** Get this iterator's previous item. + * \return NULL if the iterator reached the beginning (or is empty). + * \remarks This method will also return NULL if it is called before + * or immediately after a call to First() and reset the iterator to + * its reset state (meaning that a call to First() is mandatory + * to be able to iterate again). + */ + FbxAccumulatorEntry* const Previous(); + + /** Get this iterator's next item. + * \return NULL if the iterator reached the end (or is empty). + * \remarks This method will also return NULL if it is called while + * the iterator is in its reset state (called before + * First() or after a preceding call to Previous() reached + * beyond the beginning). + */ + FbxAccumulatorEntry* const Next(); + +protected: + // Called in the constructor. + virtual void BuildFilteredList(FbxUserNotification& pAccumulator); + + int mIterator; + int mFilterClass; + bool mNoDetail; + FbxUserNotification::EOutputSource mAccuSrcData; + FbxArray mFilteredAE; +}; + +#include + +#endif /* _FBXSDK_UTILS_USER_NOTIFICATION_H_ */ diff --git a/Tools/SPMBuild/SPMBuild.vcxproj b/Tools/SPMBuild/SPMBuild.vcxproj new file mode 100644 index 00000000..956e4299 --- /dev/null +++ b/Tools/SPMBuild/SPMBuild.vcxproj @@ -0,0 +1,148 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {B2F249D4-0D02-4FAB-B031-D0C594DF0CE3} + SPMBuild + 10.0.17763.0 + + + + Application + true + v141 + MultiByte + + + Application + false + v141 + true + MultiByte + + + Application + true + v141 + MultiByte + + + Application + false + v141 + true + MultiByte + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)tools\bin\$(Configuration)\ + $(SolutionDir)tools\bin\$(Configuration)\Intermediates\ + $(SolutionDir)Tools\Dependencies\FBX_SDK_2016.1.2\include;$(VC_IncludePath);$(WindowsSDK_IncludePath); + $(SolutionDir)Tools\Dependencies\FBX_SDK_2016.1.2\lib\vs2015\x86\debug;$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(NETFXKitsDir)Lib\um\x86 + + + $(SolutionDir)tools\bin\$(Configuration)\ + $(SolutionDir)tools\bin\$(Configuration)\Intermediates\ + $(SolutionDir)Tools\Dependencies\FBX_SDK_2016.1.2\include;$(VC_IncludePath);$(WindowsSDK_IncludePath); + $(SolutionDir)Tools\Dependencies\FBX_SDK_2016.1.2\lib\vs2015\x86\release;$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(NETFXKitsDir)Lib\um\x86 + + + + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;_MBCS;%(PreprocessorDefinitions) + true + + + libfbxsdk-md.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + true + + + + + Level3 + Disabled + true + + + + + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;_MBCS;%(PreprocessorDefinitions) + AnySuitable + Speed + StreamingSIMDExtensions2 + Fast + + + true + true + libfbxsdk-md.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + Level3 + MaxSpeed + true + true + true + + + true + true + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tools/SPMBuild/src/SPMBuild.cpp b/Tools/SPMBuild/src/SPMBuild.cpp new file mode 100644 index 00000000..06399b16 --- /dev/null +++ b/Tools/SPMBuild/src/SPMBuild.cpp @@ -0,0 +1,619 @@ +#include +#include +#include +#include + +#include "Utils.h" +#include "SPMWriter.h" + +namespace sp { namespace utils { + + static std::vector SplitString(const String& string, const String& delimiters) + { + size_t start = 0; + size_t end = string.find_first_of(delimiters); + + std::vector result; + + while (end <= String::npos) + { + result.emplace_back(string.substr(start, end - start)); + + if (end == String::npos) + break; + + start = end + 1; + end = string.find_first_of(delimiters, start); + } + + return result; + } + + static std::vector SplitString(const String& string, const char delimiter) + { + return SplitString(string, String(1, delimiter)); + } + + static std::vector SplitStringIntoTokens(const String& string) + { + return SplitString(string, " \t\n"); + } + +} } + +using namespace sp::tools; +using namespace sp::utils; + +static std::vector s_Vertices; +static std::vector s_Indices; + +static std::unordered_map s_IndexMapping; + +static vec3* s_RawPositions; +static uint s_Attributes; + +static String s_Name, s_OutputPath; + +static void InsertVertex(const vec3& position, const vec3& normal, const vec2& uv, const vec3& binormal, const vec3& tangent) +{ + Vertex vertex = { position, normal, uv, binormal, tangent }; + auto lookup = s_IndexMapping.find(vertex); + if (lookup != s_IndexMapping.end()) + { + s_Indices.push_back(lookup->second); + } + else + { + uint index = s_Vertices.size(); + s_IndexMapping[vertex] = index; + s_Indices.push_back(index); + s_Vertices.push_back(vertex); + } +} + +void ProcessControlPoints(const FbxMesh* mesh) +{ + uint count = mesh->GetControlPointsCount(); + s_RawPositions = new vec3[count]; + for (uint i = 0; i < count; i++) + { + vec3 position; + position.x = static_cast(mesh->GetControlPointAt(i).mData[0]); + position.y = static_cast(mesh->GetControlPointAt(i).mData[1]); + position.z = static_cast(mesh->GetControlPointAt(i).mData[2]); + s_RawPositions[i] = position; + } + s_Attributes |= (1 * POSITION); +} + +vec3 ReadNormal(const FbxMesh* mesh, int controlPointIndex, int vertexCounter) +{ + if (mesh->GetElementNormalCount() < 1) + std::cout << "No normals!" << std::endl; + + vec3 result; + const FbxGeometryElementNormal* vertexNormal = mesh->GetElementNormal(0); + switch (vertexNormal->GetMappingMode()) + { + case FbxGeometryElement::eByControlPoint: + switch (vertexNormal->GetReferenceMode()) + { + case FbxGeometryElement::eDirect: + { + result.x = static_cast(vertexNormal->GetDirectArray().GetAt(controlPointIndex).mData[0]); + result.y = static_cast(vertexNormal->GetDirectArray().GetAt(controlPointIndex).mData[1]); + result.z = static_cast(vertexNormal->GetDirectArray().GetAt(controlPointIndex).mData[2]); + } + break; + + case FbxGeometryElement::eIndexToDirect: + { + int index = vertexNormal->GetIndexArray().GetAt(controlPointIndex); + result.x = static_cast(vertexNormal->GetDirectArray().GetAt(index).mData[0]); + result.y = static_cast(vertexNormal->GetDirectArray().GetAt(index).mData[1]); + result.z = static_cast(vertexNormal->GetDirectArray().GetAt(index).mData[2]); + } + break; + default: + std::cout << "Error: Invalid vertex reference mode!" << std::endl; + } + break; + + case FbxGeometryElement::eByPolygonVertex: + switch (vertexNormal->GetReferenceMode()) + { + case FbxGeometryElement::eDirect: + { + result.x = static_cast(vertexNormal->GetDirectArray().GetAt(vertexCounter).mData[0]); + result.y = static_cast(vertexNormal->GetDirectArray().GetAt(vertexCounter).mData[1]); + result.z = static_cast(vertexNormal->GetDirectArray().GetAt(vertexCounter).mData[2]); + } + break; + + case FbxGeometryElement::eIndexToDirect: + { + int index = vertexNormal->GetIndexArray().GetAt(vertexCounter); + result.x = static_cast(vertexNormal->GetDirectArray().GetAt(index).mData[0]); + result.y = static_cast(vertexNormal->GetDirectArray().GetAt(index).mData[1]); + result.z = static_cast(vertexNormal->GetDirectArray().GetAt(index).mData[2]); + } + break; + default: + std::cout << "Error: Invalid vertex reference mode!" << std::endl; + } + break; + } + s_Attributes |= NORMAL; + return result; +} + +vec2 ReadUV(const FbxMesh* inMesh, int inCtrlPointIndex, int inTextureUVIndex, int inUVLayer) +{ + if (inUVLayer >= 2 || inMesh->GetElementUVCount() <= inUVLayer) + std::cout << "Invalid UV Layer Number" << std::endl; + + const FbxGeometryElementUV* vertexUV = inMesh->GetElementUV(inUVLayer); + + vec2 result; + switch (vertexUV->GetMappingMode()) + { + case FbxGeometryElement::eByControlPoint: + switch (vertexUV->GetReferenceMode()) + { + case FbxGeometryElement::eDirect: + { + result.x = static_cast(vertexUV->GetDirectArray().GetAt(inCtrlPointIndex).mData[0]); + result.y = static_cast(vertexUV->GetDirectArray().GetAt(inCtrlPointIndex).mData[1]); + } + break; + + case FbxGeometryElement::eIndexToDirect: + { + int index = vertexUV->GetIndexArray().GetAt(inCtrlPointIndex); + result.x = static_cast(vertexUV->GetDirectArray().GetAt(index).mData[0]); + result.y = static_cast(vertexUV->GetDirectArray().GetAt(index).mData[1]); + } + break; + default: + std::cout << "Error: Invalid vertex reference mode!" << std::endl; + } + break; + + case FbxGeometryElement::eByPolygonVertex: + switch (vertexUV->GetReferenceMode()) + { + case FbxGeometryElement::eDirect: + case FbxGeometryElement::eIndexToDirect: + { + result.x = static_cast(vertexUV->GetDirectArray().GetAt(inTextureUVIndex).mData[0]); + result.y = static_cast(vertexUV->GetDirectArray().GetAt(inTextureUVIndex).mData[1]); + } + break; + default: + std::cout << "Error: Invalid vertex reference mode!" << std::endl; + } + break; + } + s_Attributes |= UV; + return result; +} + +vec3 ReadBinormal(FbxMesh* mesh, int controlPointIndex, int vertexCounter) +{ + if (mesh->GetElementBinormalCount() < 1) + std::cout << "Invalid Binormal Number" << std::endl; + + FbxGeometryElementBinormal* vertexBinormal = mesh->GetElementBinormal(0); + vec3 result; + switch (vertexBinormal->GetMappingMode()) + { + case FbxGeometryElement::eByControlPoint: + switch (vertexBinormal->GetReferenceMode()) + { + case FbxGeometryElement::eDirect: + { + result.x = static_cast(vertexBinormal->GetDirectArray().GetAt(controlPointIndex).mData[0]); + result.y = static_cast(vertexBinormal->GetDirectArray().GetAt(controlPointIndex).mData[1]); + result.z = static_cast(vertexBinormal->GetDirectArray().GetAt(controlPointIndex).mData[2]); + } + break; + + case FbxGeometryElement::eIndexToDirect: + { + int index = vertexBinormal->GetIndexArray().GetAt(controlPointIndex); + result.x = static_cast(vertexBinormal->GetDirectArray().GetAt(index).mData[0]); + result.y = static_cast(vertexBinormal->GetDirectArray().GetAt(index).mData[1]); + result.z = static_cast(vertexBinormal->GetDirectArray().GetAt(index).mData[2]); + } + break; + default: + std::cout << "Error: Invalid vertex reference mode!" << std::endl; + } + break; + + case FbxGeometryElement::eByPolygonVertex: + switch (vertexBinormal->GetReferenceMode()) + { + case FbxGeometryElement::eDirect: + { + result.x = static_cast(vertexBinormal->GetDirectArray().GetAt(vertexCounter).mData[0]); + result.y = static_cast(vertexBinormal->GetDirectArray().GetAt(vertexCounter).mData[1]); + result.z = static_cast(vertexBinormal->GetDirectArray().GetAt(vertexCounter).mData[2]); + } + break; + + case FbxGeometryElement::eIndexToDirect: + { + int index = vertexBinormal->GetIndexArray().GetAt(vertexCounter); + result.x = static_cast(vertexBinormal->GetDirectArray().GetAt(index).mData[0]); + result.y = static_cast(vertexBinormal->GetDirectArray().GetAt(index).mData[1]); + result.z = static_cast(vertexBinormal->GetDirectArray().GetAt(index).mData[2]); + } + break; + default: + std::cout << "Error: Invalid vertex reference mode!" << std::endl; + } + break; + } + s_Attributes |= BINORMAL; + return result; +} + +vec3 ReadTangent(FbxMesh* mesh, int controlPointIndex, int vertexCounter) +{ + if (mesh->GetElementTangentCount() < 1) + std::cout << "Invalid Tangent Number" << std::endl; + + FbxGeometryElementTangent* vertexTangent = mesh->GetElementTangent(0); + vec3 result; + switch (vertexTangent->GetMappingMode()) + { + case FbxGeometryElement::eByControlPoint: + switch (vertexTangent->GetReferenceMode()) + { + case FbxGeometryElement::eDirect: + { + result.x = static_cast(vertexTangent->GetDirectArray().GetAt(controlPointIndex).mData[0]); + result.y = static_cast(vertexTangent->GetDirectArray().GetAt(controlPointIndex).mData[1]); + result.z = static_cast(vertexTangent->GetDirectArray().GetAt(controlPointIndex).mData[2]); + } + break; + + case FbxGeometryElement::eIndexToDirect: + { + int index = vertexTangent->GetIndexArray().GetAt(controlPointIndex); + result.x = static_cast(vertexTangent->GetDirectArray().GetAt(index).mData[0]); + result.y = static_cast(vertexTangent->GetDirectArray().GetAt(index).mData[1]); + result.z = static_cast(vertexTangent->GetDirectArray().GetAt(index).mData[2]); + } + break; + default: + std::cout << "Error: Invalid vertex reference mode!" << std::endl; + } + break; + + case FbxGeometryElement::eByPolygonVertex: + switch (vertexTangent->GetReferenceMode()) + { + case FbxGeometryElement::eDirect: + { + result.x = static_cast(vertexTangent->GetDirectArray().GetAt(vertexCounter).mData[0]); + result.y = static_cast(vertexTangent->GetDirectArray().GetAt(vertexCounter).mData[1]); + result.z = static_cast(vertexTangent->GetDirectArray().GetAt(vertexCounter).mData[2]); + } + break; + + case FbxGeometryElement::eIndexToDirect: + { + int index = vertexTangent->GetIndexArray().GetAt(vertexCounter); + result.x = static_cast(vertexTangent->GetDirectArray().GetAt(index).mData[0]); + result.y = static_cast(vertexTangent->GetDirectArray().GetAt(index).mData[1]); + result.z = static_cast(vertexTangent->GetDirectArray().GetAt(index).mData[2]); + } + break; + default: + std::cout << "Error: Invalid vertex reference mode!" << std::endl; + } + break; + } + s_Attributes |= TANGENT; + return result; +} + +// Save up data into GPU buffers. +bool Initialize(FbxMesh* mesh) +{ + if (!mesh->GetNode()) + return false; + + const int polygonCount = mesh->GetPolygonCount(); + std::cout << "Importing " << polygonCount << " polygons." << std::endl; + ProcessControlPoints(mesh); + uint triCount = mesh->GetPolygonCount(); + int vertexCounter = 0; + + for (uint i = 0; i < triCount; i++) + { + vec3 tangent; + vec3 binormal; + vec2 uv; + + for (uint j = 0; j < 3; j++) + { + int controlPointIndex = mesh->GetPolygonVertex(i, j); + vec3& position = s_RawPositions[controlPointIndex]; + vec3 normal = ReadNormal(mesh, controlPointIndex, vertexCounter); + vec3 binormal = ReadBinormal(mesh, controlPointIndex, vertexCounter); + vec3 tangent = ReadTangent(mesh, controlPointIndex, vertexCounter); + + // for (uint t = 0; t < 1; t++) // TODO: Support multiple layers + vec2 uv = ReadUV(mesh, controlPointIndex, mesh->GetTextureUVIndex(i, j), 0); + + InsertVertex(position, normal, uv, binormal, tangent); + vertexCounter++; + } + } + +#if SP_DEBUG + std::cout << s_Vertices.size() << " vertices:" << std::endl; + for (Vertex& v : s_Vertices) + { + std::cout << "{" << std::endl; + std::cout << "\t" << v.position.x << ", " << v.position.y << ", " << v.position.z << std::endl; + std::cout << "\t" << v.normal.x << ", " << v.normal.y << ", " << v.normal.z << std::endl; + std::cout << "\t" << v.uv.x << ", " << v.uv.y << std::endl; + std::cout << "\t" << v.binormal.x << ", " << v.binormal.y << ", " << v.binormal.z << std::endl; + std::cout << "\t" << v.tangent.x << ", " << v.tangent.y << ", " << v.tangent.z << std::endl; + std::cout << "}" << std::endl; + } + std::cout << std::endl; + std::cout << s_Indices.size() << " indices:" << std::endl; + for (uint i : s_Indices) + { + std::cout << i << std::endl; + } +#endif + + SPMWriter writer(s_Name, s_Attributes, s_Vertices, s_Indices); + writer.Write(s_OutputPath); + return true; +} + +static FbxDouble3 GetMaterialProperty(const FbxSurfaceMaterial * pMaterial, + const char * pPropertyName, + const char * pFactorPropertyName, + uint& pTextureName) +{ + FbxDouble3 lResult(0, 0, 0); + const FbxProperty lProperty = pMaterial->FindProperty(pPropertyName); + const FbxProperty lFactorProperty = pMaterial->FindProperty(pFactorPropertyName); + if (lProperty.IsValid() && lFactorProperty.IsValid()) + { + lResult = lProperty.Get(); + double lFactor = lFactorProperty.Get(); + if (lFactor != 1) + { + lResult[0] *= lFactor; + lResult[1] *= lFactor; + lResult[2] *= lFactor; + } + } + + if (lProperty.IsValid()) + { + const int lTextureCount = lProperty.GetSrcObjectCount(); + if (lTextureCount) + { + const FbxFileTexture* lTexture = lProperty.GetSrcObject(); + if (lTexture && lTexture->GetUserDataPtr()) + { + pTextureName = *(static_cast(lTexture->GetUserDataPtr())); + } + } + } + + return lResult; +} + +// Cache for FBX material +class MaterialCache +{ +public: + MaterialCache() : mShinness(0) {} + ~MaterialCache() {} + + bool Initialize(const FbxSurfaceMaterial* pMaterial) + { + const FbxDouble3 lEmissive = GetMaterialProperty(pMaterial, + FbxSurfaceMaterial::sEmissive, FbxSurfaceMaterial::sEmissiveFactor, mEmissive.mTextureName); + mEmissive.mColor[0] = static_cast(lEmissive[0]); + mEmissive.mColor[1] = static_cast(lEmissive[1]); + mEmissive.mColor[2] = static_cast(lEmissive[2]); + + const FbxDouble3 lAmbient = GetMaterialProperty(pMaterial, + FbxSurfaceMaterial::sAmbient, FbxSurfaceMaterial::sAmbientFactor, mAmbient.mTextureName); + mAmbient.mColor[0] = static_cast(lAmbient[0]); + mAmbient.mColor[1] = static_cast(lAmbient[1]); + mAmbient.mColor[2] = static_cast(lAmbient[2]); + + const FbxDouble3 lDiffuse = GetMaterialProperty(pMaterial, + FbxSurfaceMaterial::sDiffuse, FbxSurfaceMaterial::sDiffuseFactor, mDiffuse.mTextureName); + mDiffuse.mColor[0] = static_cast(lDiffuse[0]); + mDiffuse.mColor[1] = static_cast(lDiffuse[1]); + mDiffuse.mColor[2] = static_cast(lDiffuse[2]); + + const FbxDouble3 lSpecular = GetMaterialProperty(pMaterial, + FbxSurfaceMaterial::sSpecular, FbxSurfaceMaterial::sSpecularFactor, mSpecular.mTextureName); + mSpecular.mColor[0] = static_cast(lSpecular[0]); + mSpecular.mColor[1] = static_cast(lSpecular[1]); + mSpecular.mColor[2] = static_cast(lSpecular[2]); + + FbxProperty lShininessProperty = pMaterial->FindProperty(FbxSurfaceMaterial::sShininess); + if (lShininessProperty.IsValid()) + { + double lShininess = lShininessProperty.Get(); + mShinness = static_cast(lShininess); + } + + return true; + } +private: + struct ColorChannel + { + uint mTextureName; + float mColor[4]; + ColorChannel() : mTextureName(0) + { + mColor[0] = 0.0f; + mColor[1] = 0.0f; + mColor[2] = 0.0f; + mColor[3] = 1.0f; + } + }; + ColorChannel mEmissive; + ColorChannel mAmbient; + ColorChannel mDiffuse; + ColorChannel mSpecular; + float mShinness; +}; + +static void LoadNode(FbxNode* node, FbxAnimLayer* anim) +{ + int materialCount = node->GetMaterialCount(); + for (int i = 0; i < materialCount; i++) + { + FbxSurfaceMaterial* material = node->GetMaterial(i); + if (material != nullptr && !material->GetUserDataPtr()) + { + FbxAutoPtr materialCache(new MaterialCache()); + if (materialCache->Initialize(material)) + material->SetUserDataPtr(materialCache.Release()); + } + } + + FbxNodeAttribute* nodeAttribute = node->GetNodeAttribute(); + if (nodeAttribute) + { + // Bake mesh as VBO(vertex buffer object) into GPU. + if (nodeAttribute->GetAttributeType() == FbxNodeAttribute::eMesh) + { + FbxMesh* mesh = node->GetMesh(); + if (mesh && !mesh->GetUserDataPtr()) + Initialize(mesh); + } + // Bake light properties. + else if (nodeAttribute->GetAttributeType() == FbxNodeAttribute::eLight) + { + std::cout << "Note: Lights are currently not supported" << std::endl; + } + } + + const int childCount = node->GetChildCount(); + for (int i = 0; i < childCount; i++) + LoadNode(node->GetChild(i), anim); +} + +void LoadScene(FbxScene * pScene, FbxAnimLayer * pAnimLayer, const String& path) +{ + const int textureCount = pScene->GetTextureCount(); + for (int ti = 0; ti < textureCount; ti++) + { +#if 0 + FbxTexture * lTexture = pScene->GetTexture(lTextureIndex); + FbxFileTexture * lFileTexture = FbxCast(lTexture); + if (lFileTexture && !lFileTexture->GetUserDataPtr()) + { + // Try to load the texture from absolute path + const FbxString lFileName = lFileTexture->GetFileName(); + + // Only TGA textures are supported now. + if (lFileName.Right(3).Upper() != "TGA") + { + FBXSDK_printf("Only TGA textures are supported now: %s\n", lFileName.Buffer()); + continue; + } + + uint lTextureObject = 0; + bool lStatus = LoadTextureFromFile(lFileName, lTextureObject); + + const FbxString lAbsFbxFileName = FbxPathUtils::Resolve(pFbxFileName); + const FbxString lAbsFolderName = FbxPathUtils::GetFolderName(lAbsFbxFileName); + if (!lStatus) + { + // Load texture from relative file name (relative to FBX file) + const FbxString lResolvedFileName = FbxPathUtils::Bind(lAbsFolderName, lFileTexture->GetRelativeFileName()); + lStatus = LoadTextureFromFile(lResolvedFileName, lTextureObject); + } + + if (!lStatus) + { + // Load texture from file name only (relative to FBX file) + const FbxString lTextureFileName = FbxPathUtils::GetFileName(lFileName); + const FbxString lResolvedFileName = FbxPathUtils::Bind(lAbsFolderName, lTextureFileName); + lStatus = LoadTextureFromFile(lResolvedFileName, lTextureObject); + } + + if (!lStatus) + { + FBXSDK_printf("Failed to load texture file: %s\n", lFileName.Buffer()); + continue; + } + + if (lStatus) + { + GLuint * lTextureName = new GLuint(lTextureObject); + lFileTexture->SetUserDataPtr(lTextureName); + } + } +#endif + } + + LoadNode(pScene->GetRootNode(), pAnimLayer); +} + +int main(int argc, char* argv[]) +{ + if (argc < 2) + { + std::cout << "Usage: SPMBuild fbx_filename [output_filename]" << std::endl; + return -1; + } + String path = argv[1]; + auto split = SplitString(path, "/\\"); + s_Name = split.back(); + + if (argc > 2) + s_OutputPath = argv[2]; + else + s_OutputPath = s_Name.substr(0, s_Name.size() - 4) + ".spm"; + + s_Attributes = 0; + + FbxManager* manager = FbxManager::Create(); + FbxScene* scene = FbxScene::Create(manager, "Scene"); + FbxImporter* importer = FbxImporter::Create(manager, ""); + + int format = -1; + if (!manager->GetIOPluginRegistry()->DetectReaderFileFormat(path.c_str(), format)) + { + // Unrecognizable file format. Try to fall back to FbxImporter::eFBX_BINARY + format = manager->GetIOPluginRegistry()->FindReaderIDByDescription("FBX binary (*.fbx)"); + } + if (importer->Initialize(path.c_str(), format)) + std::cout << "Importing " << path << "..." << std::endl; + else + std::cout << "Unable to open file " << path << std::endl; + + if (importer->Import(scene)) + { + FbxAxisSystem sceneAxisSystem = scene->GetGlobalSettings().GetAxisSystem(); + FbxSystemUnit sceneSystemUnit = scene->GetGlobalSettings().GetSystemUnit(); + + FbxAxisSystem::MayaYUp.ConvertScene(scene); + FbxGeometryConverter geometryConverter(manager); + geometryConverter.Triangulate(scene, true); + + LoadScene(scene, nullptr, path); + } + return 0; +} \ No newline at end of file diff --git a/Tools/SPMBuild/src/SPMWriter.cpp b/Tools/SPMBuild/src/SPMWriter.cpp new file mode 100644 index 00000000..a3bb742b --- /dev/null +++ b/Tools/SPMBuild/src/SPMWriter.cpp @@ -0,0 +1,45 @@ +#include "SPMWriter.h" + +#include + +namespace sp { namespace tools { + + SPMWriter::SPMWriter(const String& name, uint attributes, const std::vector& vertices, const std::vector& indices) + : m_Name(name), m_Attributes(attributes), m_VertexBuffer(vertices), m_IndexBuffer(indices) + { + m_Format.nameLength = name.length(); + m_Format.name = &m_Name[0]; + m_Format.attributes = attributes; + m_Format.vertexBufferSize = m_VertexBuffer.size() * sizeof(Vertex); + m_Format.vertexData = (byte*)&m_VertexBuffer[0]; + m_Format.indexBufferSize = m_IndexBuffer.size() * sizeof(uint); + m_Format.indexData = (byte*)&m_IndexBuffer[0]; + } + + SPMWriter::~SPMWriter() + { + } + + void WriteBytes(FILE* file, const byte* data, uint size) + { + fwrite(data, 1, size, file); + } + + void SPMWriter::Write(const String& file) + { + const SPMFormat& format = m_Format; + + FILE* f = fopen(file.c_str(), "wb"); + WriteBytes(f, (byte*)format.header, 4); + WriteBytes(f, &format.nameLength, 1); + WriteBytes(f, (byte*)format.name, format.nameLength); + WriteBytes(f, (byte*)&format.attributes, sizeof(uint)); + WriteBytes(f, (byte*)&format.vertexBufferSize, sizeof(uint)); + WriteBytes(f, format.vertexData, format.vertexBufferSize); + WriteBytes(f, (byte*)&format.indexBufferSize, sizeof(uint)); + WriteBytes(f, format.indexData, format.indexBufferSize); + WriteBytes(f, (byte*)format.footer, 4); + fclose(f); + } + +} } \ No newline at end of file diff --git a/Tools/SPMBuild/src/SPMWriter.h b/Tools/SPMBuild/src/SPMWriter.h new file mode 100644 index 00000000..c2583158 --- /dev/null +++ b/Tools/SPMBuild/src/SPMWriter.h @@ -0,0 +1,52 @@ +#pragma once + +#include +#include + +#include "Utils.h" + +namespace sp { namespace tools { + + enum VertexAttribute + { + POSITION = BIT(0), + NORMAL = BIT(1), + UV = BIT(2), + BINORMAL = BIT(3), + TANGENT = BIT(4), + }; + + struct SPMFormat + { + char* header = "SPMF"; + byte nameLength; + char* name; + // TODO: Multiple objects / meshes / submeshes + // TODO: Index into these things ^ + // TODO: Properties (eg. transform) + // TODO: Objects / meshes should have a material index + uint attributes; // Bitfield + uint vertexBufferSize; + byte* vertexData; + uint indexBufferSize; + byte* indexData; + // TODO: Materials + char* footer = "1234"; + }; + + class SPMWriter + { + private: + String m_Name; + uint m_Attributes; + const std::vector& m_VertexBuffer; + const std::vector& m_IndexBuffer; + SPMFormat m_Format; + public: + SPMWriter(const String& name, uint attributes, const std::vector& vertices, const std::vector& indices); + ~SPMWriter(); + + void Write(const String& file); + }; + +} } diff --git a/Tools/SPMBuild/src/Utils.h b/Tools/SPMBuild/src/Utils.h new file mode 100644 index 00000000..b6d00642 --- /dev/null +++ b/Tools/SPMBuild/src/Utils.h @@ -0,0 +1,117 @@ +#pragma once + +#include +#include + +typedef unsigned char byte; +typedef unsigned int uint; +typedef std::string String; + +#define BIT(x) (1 << x) + +struct vec4 +{ + float x, y, z, w; + + vec4() + : x(0.0f), y(0.0f), z(0.0f), w(0.0f) + {} + vec4(float x, float y, float z, float w) + : x(x), y(y), z(z), w(w) + {} + + bool operator==(const vec4& other) const + { + return x == other.x && y == other.y && z == other.z && w == other.w; + } + + bool operator!=(const vec4& other) const + { + return !(*this == other); + } + + uint GetHash() const + { + return (*(uint*)&x) ^ ((*(uint*)&y) << 14) ^ ((*(uint*)&z) << 23) ^ ((*(uint*)&w) << 31); + } +}; + +struct vec3 +{ + float x, y, z; + + vec3() + : x(0.0f), y(0.0f), z(0.0f) + {} + vec3(float x, float y, float z) + : x(x), y(y), z(z) + {} + + bool operator==(const vec3& other) const + { + return x == other.x && y == other.y && z == other.z; + } + + bool operator!=(const vec3& other) const + { + return !(*this == other); + } + + uint GetHash() const + { + return (*(uint*)&x) ^ ((*(uint*)&y) << 14) ^ ((*(uint*)&z) << 23); + } + +}; + +struct vec2 +{ + float x, y; + + vec2() + : x(0.0f), y(0.0f) + {} + vec2(float x, float y) + : x(x), y(y) + {} + + bool operator==(const vec2& other) const + { + return x == other.x && y == other.y; + } + + bool operator!=(const vec2& other) const + { + return !(*this == other); + } + + uint GetHash() const + { + return (*(uint*)&x) ^ ((*(uint*)&y) << 14); + } + +}; + +struct Vertex +{ + vec3 position; + vec3 normal; + vec2 uv; + vec3 binormal; + vec3 tangent; + + bool operator==(const Vertex& other) const + { + return position == other.position && normal == other.normal && uv == other.uv && binormal == other.binormal && tangent == other.tangent; + } +}; + +template<> +struct std::hash +{ + const size_t operator()(const Vertex& key) const + { + return key.position.GetHash() ^ key.normal.GetHash() ^ key.uv.GetHash() ^ key.binormal.GetHash() ^ key.tangent.GetHash(); + } +}; + diff --git a/Tools/bin/Release/SPMBuild.exe b/Tools/bin/Release/SPMBuild.exe new file mode 100644 index 00000000..3951ed20 Binary files /dev/null and b/Tools/bin/Release/SPMBuild.exe differ diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 00000000..2a5e72b1 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,8 @@ +version: 0.1.{build} +configuration: +- Debug +- Release +platform: Win32 +build: + project: Sparky.sln + verbosity: minimal diff --git a/bin/Debug/FreeImage.dll b/bin/Debug/FreeImage.dll deleted file mode 100644 index cb4cf6ef..00000000 Binary files a/bin/Debug/FreeImage.dll and /dev/null differ diff --git a/bin/Debug/OpenAL32.dll b/bin/Debug/OpenAL32.dll deleted file mode 100644 index 259177ac..00000000 Binary files a/bin/Debug/OpenAL32.dll and /dev/null differ diff --git a/bin/Debug/Sparky-core.exe b/bin/Debug/Sparky-core.exe deleted file mode 100644 index cb7e7e18..00000000 Binary files a/bin/Debug/Sparky-core.exe and /dev/null differ diff --git a/bin/Release/FreeImage.dll b/bin/Release/FreeImage.dll deleted file mode 100644 index cb4cf6ef..00000000 Binary files a/bin/Release/FreeImage.dll and /dev/null differ diff --git a/bin/Release/OpenAL32.dll b/bin/Release/OpenAL32.dll deleted file mode 100644 index 259177ac..00000000 Binary files a/bin/Release/OpenAL32.dll and /dev/null differ diff --git a/bin/Release/Sparky-core.exe b/bin/Release/Sparky-core.exe deleted file mode 100644 index 2c923740..00000000 Binary files a/bin/Release/Sparky-core.exe and /dev/null differ diff --git a/bin/SoundManager.js b/bin/SoundManager.js new file mode 100644 index 00000000..8e2bb091 --- /dev/null +++ b/bin/SoundManager.js @@ -0,0 +1,24 @@ + +function _SoundManagerAdd(name, filename) { + Module.SoundManagerAdd(Pointer_stringify(name), Pointer_stringify(filename)); +} + +function _SoundManagerPlay(name) { + Module.SoundManagerPlay(Pointer_stringify(name)); +} + +function _SoundManagerPause(name) { + Module.SoundManagerPause(Pointer_stringify(name)); +} + +function _SoundManagerStop(name) { + Module.SoundManagerStop(Pointer_stringify(name)); +} + +function _SoundManagerLoop(name) { + Module.SoundManagerLoop(Pointer_stringify(name)); +} + +function _SoundManagerSetGain(name, gain) { + Module.SoundManagerSetGain(Pointer_stringify(name), gain); +} \ No newline at end of file diff --git a/bin/Web/Cherno.ogg b/bin/Web/Cherno.ogg new file mode 100644 index 00000000..2e9c56e4 Binary files /dev/null and b/bin/Web/Cherno.ogg differ diff --git a/bin/Web/sparky.html b/bin/Web/sparky.html index c877b5dd..0be5341e 100644 --- a/bin/Web/sparky.html +++ b/bin/Web/sparky.html @@ -1224,7 +1224,7 @@ var element = document.getElementById('output'); if (element) element.value = ''; // clear browser cache return function(text) { - if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' '); + text = Array.prototype.slice.call(arguments).join(' '); // These replacements are necessary if you render to raw HTML //text = text.replace(/&/g, "&"); //text = text.replace(/ 1) text = Array.prototype.slice.call(arguments).join(' '); + text = Array.prototype.slice.call(arguments).join(' '); if (0) { // XXX disabled for safety typeof dump == 'function') { dump(text + '\n'); // fast, straight to the real console } else { diff --git a/bin/Web/sparky.js b/bin/Web/sparky.js index 07d50058..d1541a8f 100644 --- a/bin/Web/sparky.js +++ b/bin/Web/sparky.js @@ -1,39 +1,39 @@ -var Module;if(typeof Module==="undefined")Module=eval("(function() { try { return Module || {} } catch(e) { return {} } })()");if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0;Module.finishedDataFileDownloads=0}Module.expectedDataFileDownloads++;((function(){function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","res",true,true);Module["FS_createPath"]("/res","shaders",true,true);fileData0=[];fileData0.push.apply(fileData0,[0,1,0,0,0,19,1,0,0,4,0,48,66,65,83,69,139,25,148,177,0,4,96,128,0,0,0,58,68,83,73,71,112,221,160,47,0,4,96,188,0,0,24,252,71,68,69,70,131,36,135,180,0,3,35,68,0,0,3,194,71,80,79,83,119,1,223,199,0,3,39,8,0,0,253,28,71,83,85,66,146,162,157,137,0,4,36,36,0,0,60,90,79,83,47,50,93,76,214,45,0,0,1,184,0,0,0,96,99,109,97,112,151,192,241,91,0,0,32,120,0,0,54,134,99,118,116,32,0,214,13,133,0,0,88,204,0,0,0,42,102,112,103,109,6,89,156,55,0,0,87,0,0,0,1,115,103,97,115,112,255,255,0,3,0,3,35,60,0,0,0,8,103,108,121,102,189,164,70,151,0,0,119,92,0,2,84,36,104,101,97,100,5,110,205,70,0,0,1,60,0,0,0,54,104,104,101,97,10,134,13,91,0,0,1,116,0,0,0,36,104,109,116,120,13,188,51,214,0,0,2,24,0,0,30,96,108,111,99,97,8,106,134,248,0,0,88,248,0,0,30,100,109,97,120,112,9,183,2,126,0,0,1,152,0,0,0,32,110,97,109,101,135,168,142,44,0,2,203,128,0,0,12,174,112,111,115,116,67,51,160,111,0,2,216,48,0,0,75,12,112,114,101,112,50,21,164,54,0,0,88,116,0,0,0,86,0,1,0,0,0,2,2,143,200,106,72,160,95,15,60,245,0,9,3,232,0,0,0,0,207,210,146,101,0,0,0,0,207,210,244,214,254,59,254,228,8,112,3,177,0,0,0,9,0,2,0,1,0,0,0,0,0,1,0,0,3,216,254,239,0,0,8,152,254,59,254,59,8,112,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,152,0,1,0,0,7,152,0,142,0,12,0,123,0,5,0,1,0,0,0,0,0,10,0,0,2,0,1,115,0,3,0,1,0,3,1,217,1,44,0,5,0,0,2,138,2,88,0,0,0,75,2,138,2,88,0,0,1,94,0,50,1,32,0,0,2,11,4,3,3,4,3,2,2,4,96,0,2,247,2,0,0,1,0,0,0,0,0,0,0,0,65,68,66,69,0,0,0,0,255,255,2,238,255,6,0,0,3,216,1,17,32,0,1,159,0,0,0,0,1,224,2,148,0,0,0,32,0,3,2,120,0,94,0,0,0,0,0,200,0,0,0,200,0,0,2,14,0,8,2,66,0,97,2,52,0,55,2,92,0,97,2,3,0,97,1,221,0,97,2,93,0,55,2,127,0,97,0,240,0,97,1,206,0,41,2,46,0,97,1,211,0,97,2,194,0,97,2,124,0,97,2,140,0,55,2,37,0,97,2,140,0,55,2,32,0,97,2,9,0,46,2,12,0,29,2,122,0,95,1,235,0,4,3,2,0,28,1,226,0,17,1,191,0,3,2,26,0,50,1,235,0,58,2,30,0,92,1,193,0,52,2,32,0,52,1,227,0,52,1,7,0,33,1,231,0,52,2,16,0,92,0,229,0,75,0,229,255,223,1,208,0,92,0,237,0,92,3,44,0,92,2,20,0,92,2,23,0,52,2,32,0,92,2,32,0,52,1,61,0,92,1,149,0,32,1,56,0,28,2,17,0,85,1,178,0,12,2,173,0,24,1,151,0,14,1,180,0,12,1,148,0,27,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,2,14,0,8,3,41,0,21,3,41,0,21,3,41,0,21,2,76,0,33,2,66,0,97,2,52,0,55,2,52,0,55,2,52,0,55,2,52,0,55,2,52,0,55,2,92,0,97,2,92,0,97,2,92,0,97,2,113,0,37,2,3,0,97,2,3,0,97,2,3,0,97,2,3,0,97,2,3,0,97,2,3,0,97,2,3,0,97,2,3,0,97,2,3,0,97,2,3,0,97,2,3,0,97,2,3,0,97,2,3,0,97,2,3,0,97,2,3,0,97,2,3,0,97,2,3,0,97,2,3,0,97,2,93,0,55,2,93,0,55,2,93,0,55,2,93,0,55,2,93,0,55,2,93,0,55,2,93,0,55,2,93,0,55,2,93,0,55,2,127,0,97,2,127,0,97,2,127,0,97,2,160,0,36,0,240,0,8,0,240,0,79,0,240,255,241,0,240,255,211,0,240,255,242,0,240,255,252,0,240,0,80,0,240,255,241,0,240,0,65,0,240,0,83,0,240,0,44,0,240,255,240,1,206,0,41,2,46,0,97,2,46,0,97,2,46,0,97,1,211,0,81,1,211,0,97,1,211,0,97,1,211,0,97,1,211,0,97,1,211,255,254,1,211,0,97,1,212,0,4,2,194,0,97,2,194,0,97,2,194,0,97,2,124,0,97,2,124,0,97,2,124,0,97,2,124,0,97,2,124,0,97,2,124,0,97,2,124,0,97,2,124,0,97,2,140,0,55,2,140,0,55,2,140,0,55,2,140,0,55,2,140,0,55,2,140,0,55,2,140,0,55,2,140,0,55,2,140,0,55,2,140,0,55,2,140,0,55,2,140,0,55,2,140,0,55,2,140,0,55,2,140,0,55,2,140,0,55,2,140,0,55,2,140,0,56,3,65,0,55,2,140,0,59,2,140,0,59,2,140,0,59,2,140,0,59,2,140,0,59,2,140,0,59,2,140,0,55,2,32,0,97,2,32,0,97,2,32,0,97,2,32,0,97,2,32,0,97,2,32,0,97,2,32,0,97,2,9,0,46,2,9,0,46,2,9,0,46,2,9,0,46,2,9,0,46,2,9,0,46,2,9,0,46,2,132,0,98,2,12,0,29,2,12,0,29,2,12,0,29,2,12,0,29,2,12,0,29,2,12,0,29,2,122,0,95,2,122,0,95,2,122,0,95,2,122,0,95,2,122,0,95,2,122,0,95,2,122,0,95,2,122,0,95,2,122,0,95,2,122,0,95,2,122,0,95,2,122,0,95,2,122,0,95,2,122,0,95,2,122,0,95,2,122,0,95,2,122,0,95,2,133,0,95,2,133,0,95,2,133,0,95,2,133,0,95,2,133,0,95,2,133,0,95,3,2,0,28,3,2,0,28,3,2,0,28,3,2,0,28,1,191,0,3,1,191,0,3,1,191,0,3,1,191,0,3,1,191,0,3,1,191,0,3,1,191,0,3,1,191,0,3,2,26,0,50,2,26,0,50,2,26,0,50,2,26,0,50,2,26,0,50,2,113,0,37,2,51,0,97,2,136,0,62,2,105,0,97,1,225,0,97,1,235,0,58,1,235,0,58,1,235,0,58,1,235,0,58,1,235,0,58,1,235,0,58,1,235,0,58,1,235,0,58,1,235,0,58,1,235,0,58,1,235,0,58,1,235,0,58,1,235,0,27,1,235,0,58,1,235,0,58,1,235,0,58,1,235,0,58,1,235,0,58,1,235,0,58,1,235,0,58,1,235,0,58,1,235,0,58,3,16,0,65,3,16,0,65,3,16,0,65,2,16,0,15,2,30,0,92,1,193,0,52,1,193,0,52,1,193,0,52,1,193,0,52,1,193,0,52,2,37,0,52,2,32,0,52,2,32,0,52,2,32,0,52,1,227,0,52,1,227,0,52,1,227,0,52,1,227,0,52,1,227,0,52,1,227,0,52,1,227,0,52,1,227,0,52,1,227,0,52,1,227,0,52,1,227,0,52,1,227,0,52,1,227,0,34,1,227,0,52,1,227,0,52,1,227,0,52,1,227,0,52,1,227,0,52,1,231,0,52,1,231,0,52,1,231,0,52,1,231,0,52,1,231,0,52,1,231,0,52,1,231,0,52,1,231,0,52,2,16,255,237,2,16,0,92,2,16,0,92,2,16,0,92,2,16,0,15,0,229,255,255,0,229,0,61,0,229,255,232,0,229,255,206,0,229,255,244,0,229,255,247,0,229,255,232,0,229,0,59,0,229,0,75,0,229,0,37,0,229,0,37,0,229,255,222,0,229,0,92,0,229,255,223,1,208,0,92,1,208,0,92,1,208,0,92,1,208,0,92,0,237,0,65,0,241,0,92,1,52,0,92,0,237,0,56,0,237,0,92,0,237,255,246,0,237,0,17,0,239,0,10,3,44,0,92,3,44,0,92,3,44,0,92,2,20,0,92,2,20,0,92,2,20,0,92,2,20,0,92,2,20,0,92,2,20,0,92,2,20,0,92,2,20,0,92,2,217,0,58,2,23,0,52,2,23,0,52,2,23,0,52,2,23,0,52,2,23,0,52,2,23,0,52,2,23,0,52,2,23,0,52,2,23,0,52,2,23,0,52,2,23,0,52,2,23,0,40,2,23,0,52,2,23,0,52,2,23,0,52,2,23,0,52,2,23,0,52,2,23,0,46,3,80,0,52,2,23,0,52,2,23,0,52,2,23,0,52,2,23,0,52,2,23,0,52,2,23,0,52,2,23,0,52,1,61,0,92,1,61,0,27,1,61,0,62,1,61,0,92,1,61,0,74,1,61,0,74,1,61,255,244,1,149,0,32,1,149,0,32,1,149,0,32,1,149,0,32,1,149,0,32,1,149,0,32,1,149,0,32,2,30,0,92,1,56,0,28,1,56,0,28,1,56,0,28,1,56,0,28,1,56,0,28,1,56,0,4,1,56,0,28,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,17,0,85,2,173,0,24,2,173,0,24,2,173,0,24,2,173,0,24,1,180,0,12,1,180,0,12,1,180,0,12,1,180,0,12,1,180,0,12,1,180,0,12,1,180,0,12,1,180,0,12,1,148,0,27,1,148,0,27,1,148,0,27,1,148,0,27,1,148,0,27,2,23,0,60,2,32,0,92,2,20,0,92,0,229,255,223,1,201,0,75,1,243,0,84,2,32,0,92,2,32,0,92,1,193,0,26,1,193,0,52,2,32,0,52,2,32,0,52,1,227,0,38,2,32,0,52,1,240,0,92,1,227,0,38,2,101,0,38,1,171,0,53,1,188,0,39,2,22,0,53,0,241,255,229,2,33,0,53,2,33,0,53,1,230,0,52,1,178,0,12,1,221,0,16,2,20,0,85,2,16,0,92,2,16,0,92,2,38,0,92,0,241,0,5,1,54,0,43,0,239,255,153,1,2,255,253,0,237,0,92,2,28,0,92,1,143,0,92,3,44,0,85,3,44,0,85,3,44,0,92,2,20,255,243,2,20,0,92,2,20,0,92,2,23,0,52,2,172,0,52,2,135,0,52,1,61,255,252,1,61,255,252,1,61,255,252,1,61,0,92,1,50,0,92,1,218,0,92,1,218,0,42,1,149,0,32,0,229,255,223,0,241,255,229,1,56,0,28,2,37,0,5,2,20,0,42,2,5,0,85,1,178,0,12,2,173,0,24,1,180,0,12,1,129,0,3,1,148,0,27,1,162,0,27,1,148,0,2,1,143,0,1,1,150,0,24,1,164,0,5,1,164,0,20,1,7,0,6,1,251,0,66,2,18,0,33,2,247,0,33,2,255,0,33,2,27,0,33,3,37,0,33,1,56,0,43,1,56,0,43,1,56,0,43,1,56,0,22,1,56,255,248,1,56,0,23,1,56,0,33,1,56,0,43,1,56,0,22,1,56,0,43,1,56,0,43,1,56,0,43,1,56,0,21,2,124,0,97,2,32,0,52,2,32,0,52,2,32,0,52,2,32,0,52,2,32,0,52,2,32,0,52,2,32,0,52,2,32,0,52,2,32,0,52,2,32,0,52,2,32,0,52,2,32,0,52,2,32,0,52,2,32,0,46,2,32,0,52,2,32,0,52,2,32,0,52,2,32,0,52,2,32,0,52,2,32,0,52,2,32,0,52,2,32,0,52,2,32,0,52,2,33,0,53,2,33,0,53,2,33,0,53,2,33,0,53,2,33,0,53,2,33,0,53,2,33,0,53,2,33,0,53,2,33,0,53,0,229,0,92,0,229,0,67,0,234,0,92,1,52,0,92,0,229,0,30,0,229,0,77,0,229,255,247,0,229,255,247,0,231,0,10,1,254,0,33,2,14,0,8,2,66,0,97,1,229,0,97,2,45,0,27,2,3,0,97,2,26,0,50,2,127,0,97,2,140,0,55,0,240,0,97,2,46,0,97,1,235,0,4,2,194,0,97,2,124,0,97,1,254,0,47,2,140,0,55,2,122,0,97,2,37,0,97,2,19,0,47,2,12,0,29,1,191,0,3,2,183,0,48,1,226,0,17,2,156,0,70,2,147,0,46,2,20,0,13,2,35,255,233,2,159,255,233,1,16,255,233,0,240,255,242,2,160,255,233,2,27,255,233,1,191,0,3,2,164,255,233,2,28,0,52,2,32,0,89,1,199,0,10,2,10,0,59,1,179,0,52,1,143,0,52,2,17,0,87,1,250,0,66,0,239,0,92,1,207,0,84,1,205,0,17,2,31,0,92,1,189,0,10,1,152,0,35,2,12,0,52,2,45,0,25,2,26,0,88,2,18,0,52,1,185,0,26,1,241,0,70,2,135,0,52,1,198,0,10,2,140,0,70,2,162,0,58,1,167,0,52,2,29,0,87,1,250,0,76,2,135,0,52,2,28,0,52,1,179,0,52,2,17,0,87,0,239,0,92,0,239,255,245,2,12,0,52,1,241,0,70,1,241,0,70,2,162,0,58,0,239,255,236,1,241,0,70,2,24,255,252,2,22,255,242,2,20,0,14,2,20,0,13,2,138,255,243,2,132,255,242,2,137,255,243,2,131,255,242,2,62,255,232,2,62,255,232,2,14,0,8,2,14,0,8,2,94,255,243,2,94,255,242,2,35,255,234,2,35,255,233,2,188,255,243,2,183,255,242,2,187,255,243,2,181,255,242,2,219,255,243,2,219,255,242,2,159,255,234,2,159,255,233,3,56,255,243,3,51,255,242,3,55,255,243,3,50,255,242,3,38,255,232,3,38,255,232,1,76,255,243,1,76,255,242,1,16,255,234,1,16,255,233,1,170,255,243,1,164,255,242,1,169,255,243,1,163,255,242,1,152,255,232,1,152,255,232,0,240,255,240,0,240,255,252,2,210,255,243,2,199,255,242,2,162,255,234,2,160,255,233,3,58,255,243,3,54,255,242,3,57,255,243,3,51,255,242,2,128,255,242,2,83,255,242,2,27,255,234,2,27,255,233,2,175,255,242,2,174,255,242,2,161,255,232,1,191,0,3,1,191,0,3,2,214,255,243,2,203,255,242,2,165,255,235,2,164,255,233,3,62,255,243,3,57,255,242,3,61,255,243,3,55,255,242,3,13,255,232,3,13,255,232,2,252,0,8,3,6,255,252,3,4,255,242,3,120,255,243,3,114,255,242,3,118,255,243,3,113,255,242,3,44,255,232,3,44,255,232,3,109,0,97,3,200,255,243,3,200,255,242,4,38,255,243,4,33,255,242,4,37,255,243,4,31,255,242,4,20,255,232,4,20,255,232,3,125,0,46,3,195,255,243,3,184,255,242,4,44,255,243,4,38,255,242,4,43,255,243,4,37,255,242,3,255,255,232,3,255,255,232,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,1,179,0,52,1,179,0,52,1,179,0,52,1,179,0,52,1,179,0,52,1,179,0,52,1,179,0,52,1,179,0,52,2,17,0,87,2,17,0,87,2,17,0,87,2,17,0,87,2,17,0,87,2,17,0,87,2,17,0,87,2,17,0,87,2,17,0,87,2,17,0,87,2,17,0,87,0,239,0,60,0,239,0,45,0,239,0,0,0,239,0,62,0,239,255,237,0,239,255,228,0,239,255,237,0,239,255,238,0,239,255,240,0,239,255,240,0,239,255,222,0,239,255,248,0,239,255,207,0,239,255,236,0,239,255,236,0,239,255,222,2,12,0,52,2,12,0,52,2,12,0,52,2,12,0,52,2,12,0,52,2,12,0,52,2,12,0,52,2,12,0,52,2,26,0,88,2,26,0,88,1,241,0,70,1,241,0,70,1,241,0,70,1,241,0,70,1,241,0,70,1,241,0,70,1,241,0,70,1,241,0,70,1,241,0,70,1,241,0,70,1,241,0,69,1,241,0,70,1,241,0,70,1,241,0,70,1,241,0,70,1,241,0,70,2,162,0,58,2,162,0,58,2,162,0,58,2,162,0,58,2,162,0,58,2,162,0,58,2,162,0,58,2,162,0,58,2,162,0,58,2,162,0,58,2,162,0,58,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,2,28,0,52,2,17,0,87,2,17,0,87,2,17,0,87,2,17,0,87,2,17,0,87,2,17,0,87,2,17,0,87,2,17,0,87,2,17,0,87,2,17,0,87,2,17,0,87,2,17,0,87,2,162,0,58,2,162,0,58,2,162,0,58,2,162,0,58,2,162,0,58,2,162,0,58,2,162,0,58,2,162,0,58,2,162,0,58,2,162,0,58,2,162,0,58,2,162,0,58,1,207,0,84,2,12,0,52,1,195,0,52,1,146,0,92,1,220,0,22,0,219,0,48,0,219,0,67,0,219,0,67,0,219,0,82,0,219,0,71,2,23,0,246,0,32,255,233,2,23,0,141,2,23,1,1,0,239,0,92,2,23,0,212,2,23,0,212,2,23,0,197,2,23,0,194,2,23,0,246,2,23,0,133,2,23,0,124,2,23,0,133,2,23,0,134,2,23,0,136,2,23,0,136,2,23,0,103,2,23,0,132,2,23,0,132,2,23,0,118,0,92,255,243,0,92,255,242,0,32,255,234,0,32,255,233,0,185,255,243,0,180,255,242,0,185,255,243,0,179,255,242,0,168,255,232,0,168,255,232,2,14,0,8,2,56,0,97,2,66,0,97,1,229,0,97,2,107,0,33,2,3,0,97,3,0,0,9,3,0,255,243,2,249,0,14,2,36,0,46,2,132,0,97,2,132,0,97,2,43,0,97,2,43,0,97,2,42,0,97,2,102,0,6,2,194,0,97,2,127,0,97,2,140,0,55,2,122,0,97,2,37,0,97,2,52,0,55,2,12,0,29,1,235,0,7,2,201,0,48,1,226,0,17,2,114,0,97,2,67,0,71,3,70,0,97,3,75,0,97,2,202,0,29,2,254,0,97,2,56,0,97,2,52,0,38,3,115,0,97,2,50,0,28,2,3,0,97,2,3,0,97,2,167,0,29,1,229,0,97,2,52,0,55,2,9,0,46,0,240,0,97,0,240,255,242,0,240,0,21,1,206,0,41,3,126,0,7,3,159,0,97,2,171,0,29,2,43,0,97,2,42,0,97,2,42,0,97,2,132,0,97,1,235,0,7,2,122,0,97,2,96,0,29,2,140,0,55,1,246,0,4,1,229,0,97,1,250,0,37,3,45,0,9,3,37,255,244,3,37,0,15,2,36,0,46,2,93,0,97,2,86,0,97,2,86,0,97,2,185,0,29,2,193,0,29,2,193,0,29,2,132,0,97,2,52,0,55,1,191,0,3,1,191,0,3,2,8,0,17,2,72,0,71,2,67,0,97,0,240,0,97,3,0,0,9,2,249,255,243,2,249,0,14,2,14,0,8,3,41,0,21,2,3,0,97,2,136,0,62,2,132,0,97,2,140,0,55,2,140,0,55,1,235,0,7,1,235,0,7,1,235,0,58,2,22,0,60,1,240,0,92,1,143,0,92,1,245,0,24,1,227,0,52,2,122,0,17,2,122,255,250,2,123,0,18,1,188,0,42,2,42,0,92,2,42,0,92,1,214,0,92,1,214,0,92,1,214,0,92,1,249,0,13,2,106,0,92,2,38,0,92,2,23,0,52,2,29,0,92,2,32,0,92,1,193,0,52,1,185,0,26,1,180,0,12,2,196,0,52,1,151,0,14,2,19,0,92,1,234,0,66,2,206,0,92,2,204,0,92,2,68,0,26,2,124,0,92,1,220,0,92,1,193,0,25,2,204,0,92,1,241,0,42,1,227,0,52,1,227,0,52,2,21,0,15,1,143,0,92,1,193,0,52,1,149,0,32,0,229,0,75,0,229,255,244,0,231,0,21,0,229,255,223,2,196,0,15,2,229,0,92,2,16,0,15,1,214,0,92,1,214,0,92,1,214,0,92,2,42,0,92,1,180,0,12,2,34,0,92,2,49,0,26,2,23,0,52,1,188,0,12,1,150,0,92,1,149,0,33,2,157,0,17,2,157,255,250,2,157,0,18,1,188,0,42,1,249,0,92,1,249,0,92,1,249,0,92,2,77,0,26,2,77,0,26,2,77,0,26,2,36,0,92,1,193,0,52,1,178,0,12,1,178,0,12,1,187,0,14,1,232,0,66,2,16,0,92,2,122,0,17,2,123,255,250,2,123,0,18,0,237,0,92,1,235,0,58,3,16,0,65,1,227,0,52,1,227,0,38,2,42,0,92,2,23,0,52,2,23,0,52,1,180,0,12,1,180,0,12,2,2,0,52,3,81,0,67,2,63,0,36,1,223,0,48,1,223,0,84,1,223,0,39,1,223,0,29,1,223,0,16,1,223,0,26,1,223,0,52,1,223,0,44,1,223,0,40,1,223,0,43,1,223,0,48,1,223,0,48,2,1,0,56,1,89,0,57,1,230,0,39,1,223,0,29,1,239,0,32,1,223,0,26,1,248,0,63,1,220,0,44,1,255,0,57,1,248,0,52,2,1,0,56,2,1,0,56,1,223,0,48,1,223,0,84,1,223,0,39,1,223,0,29,1,223,0,16,1,223,0,26,1,223,0,54,1,223,0,44,1,223,0,40,1,223,0,33,1,246,0,56,1,89,0,57,1,229,0,46,1,223,0,29,1,246,0,24,1,223,0,26,1,246,0,62,1,218,0,44,1,246,0,48,1,246,0,41,1,223,0,48,1,223,0,84,1,223,0,39,1,223,0,29,1,223,0,16,1,223,0,26,1,223,0,54,1,223,0,44,1,223,0,40,1,223,0,43,0,219,0,67,0,219,0,48,0,219,0,67,0,219,0,48,3,162,0,104,1,3,0,87,1,3,0,87,1,146,0,37,1,146,0,51,0,219,0,83,1,104,0,83,0,219,0,58,0,219,0,58,1,104,0,58,1,104,0,58,0,219,0,58,1,104,0,58,1,3,0,43,1,3,0,54,1,144,0,43,1,144,0,54,1,43,0,40,1,43,0,40,1,224,0,40,3,32,0,40,5,220,0,40,8,152,0,40,1,223,0,40,3,32,0,40,0,219,0,67,1,25,0,40,1,244,0,12,1,244,0,12,0,0,254,59,1,23,0,88,1,23,0,32,1,23,0,98,1,23,0,21,1,23,0,35,1,23,0,21,1,101,0,9,0,226,0,95,1,101,0,5,0,226,0,95,1,139,0,70,1,164,0,60,1,164,0,60,1,223,0,50,2,3,0,42,1,98,0,95,1,254,0,87,3,12,0,37,2,125,0,87,2,125,0,37,1,148,0,34,1,23,0,98,1,23,0,21,1,23,0,98,1,23,0,21,1,87,0,98,1,87,0,21,1,23,0,98,1,23,0,21,1,23,0,98,1,23,0,21,2,229,0,51,2,227,0,51,1,145,0,18,2,98,0,2,2,98,0,32,2,98,0,31,2,102,0,31,3,46,0,52,2,242,0,52,1,223,0,36,0,229,0,75,1,195,0,8,2,2,0,97,1,238,0,55,2,28,0,97,1,205,0,97,1,168,0,97,2,22,0,55,2,66,0,97,0,240,0,97,1,163,0,41,1,235,0,97,1,161,0,97,2,112,0,97,2,61,0,97,2,62,0,55,1,243,0,97,2,62,0,55,1,244,0,97,1,201,0,46,1,197,0,29,2,57,0,95,1,165,0,4,2,152,0,28,1,164,0,17,1,128,0,3,1,216,0,50,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,1,195,0,8,2,182,0,21,2,182,0,21,2,182,0,21,2,19,0,37,2,2,0,97,1,238,0,55,1,238,0,55,1,238,0,55,1,238,0,55,1,238,0,55,2,28,0,97,2,28,0,97,2,28,0,97,2,45,0,37,1,205,0,97,1,205,0,97,1,205,0,97,1,205,0,97,1,205,0,97,1,205,0,97,1,205,0,97,1,205,0,97,1,205,0,97,1,205,0,97,1,205,0,96,1,205,0,97,1,205,0,76,1,205,0,97,1,205,0,97,1,205,0,97,1,205,0,97,1,205,0,97,2,22,0,55,2,22,0,55,2,22,0,55,2,22,0,55,2,22,0,55,2,22,0,55,2,22,0,55,2,22,0,55,2,22,0,55,2,66,0,97,2,66,0,97,2,66,0,97,2,101,0,36,0,240,0,8,0,240,0,79,0,240,255,241,0,240,255,211,0,240,255,242,0,240,255,252,0,240,0,80,0,240,255,241,0,240,0,65,0,240,0,82,0,240,0,44,0,240,255,240,1,163,0,41,1,235,0,97,1,235,0,97,1,235,0,97,1,161,0,85,1,161,0,97,1,161,0,97,1,161,0,97,1,161,0,97,1,161,0,2,1,161,0,97,1,161,0,4,2,112,0,97,2,112,0,97,2,112,0,97,2,61,0,97,2,61,0,97,2,61,0,97,2,61,0,97,2,61,0,97,2,61,0,97,2,61,0,97,2,61,0,97,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,46,2,205,0,55,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,55,2,62,0,55,1,244,0,97,1,244,0,97,1,244,0,97,1,244,0,97,1,244,0,97,1,244,0,97,1,244,0,97,1,201,0,46,1,201,0,46,1,201,0,46,1,201,0,46,1,201,0,46,1,201,0,46,1,201,0,46,3,136,0,46,2,57,0,98,1,197,0,29,1,197,0,29,1,197,0,29,1,197,0,29,1,197,0,29,1,197,0,29,2,57,0,95,2,57,0,95,2,57,0,95,2,57,0,95,2,57,0,95,2,57,0,95,2,57,0,95,2,57,0,95,2,57,0,95,2,57,0,95,2,57,0,95,2,57,0,95,2,57,0,95,2,57,0,95,2,57,0,95,2,57,0,95,2,57,0,95,2,68,0,95,2,68,0,95,2,68,0,95,2,68,0,95,2,68,0,95,2,68,0,95,2,152,0,28,2,152,0,28,2,152,0,28,2,152,0,28,1,128,0,3,1,128,0,3,1,128,0,3,1,128,0,3,1,128,0,3,1,128,0,3,1,128,0,3,1,128,0,3,1,216,0,50,1,216,0,50,1,216,0,50,1,216,0,50,1,216,0,50,2,45,0,37,1,248,0,97,2,57,0,62,2,36,0,97,1,225,0,97,2,61,0,97,1,195,0,8,2,2,0,97,1,177,0,97,1,225,0,27,1,205,0,97,1,216,0,50,2,66,0,97,2,62,0,55,0,240,0,97,1,235,0,97,1,164,0,4,2,112,0,97,2,61,0,97,1,191,0,47,2,62,0,55,2,60,0,97,1,243,0,97,1,205,0,47,1,197,0,29,1,128,0,3,2,113,0,48,1,164,0,17,2,80,0,70,2,57,0,44,0,240,255,242,1,128,0,3,2,180,0,8,3,50,0,97,3,41,0,44,1,195,0,8,1,249,0,97,2,2,0,97,1,177,0,97,2,26,0,33,1,205,0,97,2,145,0,9,1,222,0,47,2,61,0,97,2,61,0,97,1,235,0,97,2,27,0,6,2,112,0,97,2,66,0,97,2,62,0,55,2,60,0,97,1,243,0,97,1,238,0,55,1,197,0,29,1,163,0,7,2,106,0,48,1,164,0,17,2,49,0,97,2,8,0,71,2,231,0,97,2,233,0,97,2,100,0,29,2,173,0,97,1,249,0,97,1,237,0,38,3,5,0,97,1,243,0,28,1,205,0,97,1,205,0,97,2,74,0,29,1,177,0,97,1,236,0,55,1,201,0,46,0,240,0,97,0,240,255,242,0,240,0,21,1,163,0,41,2,242,0,6,3,33,0,97,2,82,0,29,1,235,0,97,2,61,0,97,1,163,0,7,2,57,0,97,2,16,0,29,2,62,0,55,1,172,0,4,1,177,0,97,1,198,0,37,2,189,0,9,1,222,0,47,2,28,0,97,2,104,0,29,2,68,0,97,1,238,0,55,1,128,0,3,1,128,0,3,1,202,0,17,2,10,0,71,2,8,0,97,0,240,0,97,2,145,0,9,1,195,0,8,2,182,0,21,1,205,0,97,2,57,0,62,2,61,0,97,2,62,0,55,2,62,0,55,1,163,0,7,1,163,0,7,1,242,0,36,1,222,0,56,1,77,0,57,1,179,0,38,1,182,0,24,1,200,0,35,1,191,0,35,1,214,0,67,1,155,0,33,1,220,0,58,1,210,0,52,1,3,0,87,1,3,0,87,1,146,0,47,1,146,0,61,0,219,0,83,1,104,0,83,0,219,0,58,0,219,0,58,1,96,0,58,1,96,0,58,1,43,0,40,1,155,0,40,2,170,0,40,1,23,0,88,1,23,0,32,1,23,0,98,1,23,0,21,1,23,0,35,1,23,0,21,1,106,0,40,1,106,0,94,1,106,0,47,1,106,0,40,1,106,0,46,1,106,0,40,1,106,0,50,1,106,0,50,1,106,0,49,1,106,0,41,0,219,0,66,0,219,0,41,0,159,0,44,0,159,0,34,1,106,0,40,1,106,0,94,1,106,0,47,1,106,0,40,1,106,0,46,1,106,0,40,1,106,0,50,1,106,0,50,1,106,0,49,1,106,0,41,0,219,0,66,0,219,0,41,0,159,0,44,0,159,0,34,1,106,0,40,1,106,0,94,1,106,0,47,1,106,0,40,1,106,0,46,1,106,0,40,1,106,0,50,1,106,0,50,1,106,0,49,1,106,0,41,0,219,0,66,0,219,0,41,0,159,0,44,0,159,0,34,1,106,0,40,1,106,0,94,1,106,0,47,1,106,0,40,1,106,0,46,1,106,0,40,1,106,0,50,1,106,0,50,1,106,0,49,1,106,0,41,0,219,0,66,0,219,0,41,0,159,0,44,0,159,0,34,1,81,0,42,1,111,0,37,1,104,0,33,1,92,0,2,1,126,0,61,1,116,0,34,1,146,0,61,1,85,0,61,1,60,0,61,1,144,0,34,1,168,0,61,0,161,0,61,1,52,0,23,1,115,0,61,1,54,0,61,1,213,0,61,1,165,0,61,1,176,0,34,1,115,0,61,1,176,0,33,1,117,0,61,1,89,0,28,1,89,0,17,1,166,0,60,1,71,0,0,2,0,0,16,1,67,0,9,1,43,255,254,1,98,0,30,1,81,0,42,1,111,0,58,1,46,0,33,1,111,0,37,1,74,0,31,0,183,0,21,1,76,0,34,1,100,0,58,0,153,0,46,0,157,255,234,1,61,0,58,0,162,0,58,2,36,0,58,1,103,0,58,1,104,0,33,1,111,0,58,1,111,0,37,0,221,0,58,1,19,0,21,0,216,0,18,1,107,0,57,1,45,0,8,1,210,0,16,1,27,0,8,1,43,0,8,1,21,0,19,1,23,0,18,0,219,0,54,0,219,0,54,0,128,255,170,1,41,0,8,1,74,0,31,1,74,0,31,1,74,0,27,1,111,0,37,1,111,0,37,0,153,0,58,0,159,0,44,0,227,0,40,1,91,0,40,2,49,0,40,1,55,0,42,1,223,0,31,1,223,0,59,1,223,0,54,1,223,0,30,1,223,0,30,1,223,0,24,1,223,0,62,1,223,0,11,1,223,0,65,1,223,0,54,1,223,0,16,1,223,0,14,1,223,255,243,1,223,0,69,1,223,0,14,1,223,0,52,1,223,0,24,1,223,0,65,1,223,0,73,1,223,0,28,1,223,0,34,1,223,0,34,1,223,0,14,0,80,255,91,0,80,255,91,0,80,255,91,3,37,0,40,4,138,0,40,2,252,0,74,3,18,0,74,3,15,0,40,3,17,0,74,3,36,0,47,3,17,0,74,3,36,0,47,3,36,0,40,3,50,0,46,3,17,0,74,3,36,0,40,3,17,0,74,3,17,0,74,3,36,0,40,3,36,0,40,3,16,0,31,3,17,0,74,4,30,0,73,3,36,0,40,1,223,0,34,1,223,0,34,1,223,0,52,1,223,0,34,1,230,0,195,1,223,0,34,1,223,0,34,1,223,0,34,1,223,0,34,1,223,0,34,1,223,0,34,1,223,0,66,1,223,0,34,1,223,0,40,1,223,0,40,1,223,0,34,2,251,0,41,2,31,0,92,1,243,0,36,1,43,0,58,2,27,0,49,2,45,0,27,2,147,0,46,1,231,0,19,2,140,0,94,1,117,0,28,3,32,0,46,2,108,0,29,2,108,0,43,2,108,0,38,2,108,0,43,3,138,0,45,3,138,0,25,3,138,0,35,3,138,0,45,3,138,0,54,3,138,0,54,3,138,0,45,3,138,0,45,3,138,0,54,3,138,0,54,3,138,0,25,3,138,0,25,3,26,0,74,3,26,0,74,2,80,255,252,1,223,0,31,1,243,0,59,0,219,0,82,1,104,0,82,0,219,0,71,0,219,0,82,0,219,0,58,0,219,0,58,0,160,0,33,0,160,0,17,2,23,0,152,2,23,0,214,2,23,0,129,2,23,0,129,0,95,0,26,1,3,0,6,0,218,0,54,0,218,255,248,0,95,0,27,2,23,0,103,2,23,0,141,2,23,0,144,2,23,0,118,2,23,0,170,2,23,0,190,2,23,0,229,2,23,0,192,2,23,0,213,2,78,0,52,0,0,255,141,0,0,255,144,0,0,255,183,0,0,255,203,0,0,255,215,0,0,255,235,0,0,255,118,0,0,255,121,0,0,255,92,0,0,255,91,0,0,255,133,0,0,255,132,0,0,255,133,0,0,255,132,0,0,255,107,0,0,255,109,0,0,255,120,0,0,255,120,0,0,255,218,0,0,255,216,0,0,255,130,0,0,255,122,0,0,255,201,0,0,255,201,0,0,255,159,0,0,255,168,0,0,255,179,0,0,255,173,0,0,255,118,0,0,255,121,0,5,255,226,0,0,255,78,0,0,255,73,0,0,255,107,0,0,255,120,0,0,255,213,0,0,255,186,0,0,255,214,0,0,255,201,0,0,255,187,0,0,255,179,0,0,255,187,0,0,255,248,0,0,255,196,0,0,255,167,0,0,255,167,0,0,255,167,0,0,255,167,0,0,255,218,0,0,255,130,0,0,255,159,0,0,255,172,0,0,255,188,0,0,255,172,0,0,255,172,0,0,255,202,0,0,255,203,0,0,255,235,0,0,255,139,0,0,255,118,0,0,255,107,0,0,255,107,0,0,255,92,0,0,255,133,0,0,255,92,0,0,255,206,0,0,255,139,0,0,255,139,0,0,255,99,0,0,255,181,0,0,255,92,0,0,255,91,0,0,255,237,0,0,254,59,0,0,255,132,0,0,255,123,0,0,255,121,0,0,255,132,0,0,255,123,0,0,255,121,0,0,255,107,0,0,255,131,0,0,255,123,0,0,255,132,0,0,255,123,0,0,255,132,0,0,255,141,0,0,255,29,0,0,255,71,0,0,255,132,0,0,255,141,0,0,255,126,0,0,255,116,0,0,255,107,0,0,255,120,0,0,255,107,0,0,255,120,0,0,255,107,0,0,255,120,0,0,255,118,0,0,255,116,0,0,255,133,0,0,255,130,0,0,255,133,0,0,255,132,0,0,255,123,0,0,255,113,0,0,255,125,0,0,255,122,0,0,255,122,0,0,255,125,0,199,0,0,1,223,0,0,0,133,0,0,0,133,0,0,0,125,0,0,0,0,0,0,1,254,0,33,1,244,0,33,0,0,0,5,0,0,0,3,0,0,2,36,0,0,0,4,0,0,16,234,0,1,0,0,0,0,0,44,0,3,0,1,0,0,2,36,0,3,0,10,0,0,16,234,0,6,1,248,0,0,0,9,0,247,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,124,4,129,4,193,6,168,6,193,4,64,4,128,4,153,4,154,4,163,6,214,4,120,4,140,4,119,4,159,4,65,4,66,4,67,4,68,4,69,4,70,4,71,4,72,4,73,4,74,4,121,4,122,6,220,6,219,6,221,4,126,4,191,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,4,155,4,161,4,156,6,225,4,150,7,14,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,50,0,51,0,52,0,53,0,54,0,55,4,157,4,160,4,158,6,227,0,0,0,60,0,63,0,83,0,93,0,153,0,162,0,209,0,251,0,250,0,252,0,254,0,253,1,1,1,21,1,31,1,30,1,32,1,34,1,62,1,61,1,63,1,65,1,93,1,100,1,99,1,101,1,103,1,102,1,148,1,147,1,149,1,151,4,164,6,166,6,173,6,169,4,166,4,149,4,167,1,139,4,186,4,184,4,187,7,15,7,24,6,226,0,78,0,175,6,230,6,224,6,222,6,223,6,170,6,231,6,232,6,237,6,238,2,113,6,233,6,96,6,98,2,88,1,16,1,116,4,127,4,125,6,229,6,234,6,174,6,228,6,235,4,138,4,139,4,123,7,144,0,56,0,59,0,161,0,176,1,117,4,142,4,143,4,132,4,133,4,130,4,131,6,217,7,5,1,177,0,235,6,190,6,172,4,136,4,137,7,150,7,151,4,165,4,148,4,134,4,135,6,194,0,58,0,94,0,57,0,96,0,92,0,124,0,125,0,127,0,123,0,159,0,160,0,0,0,158,0,206,0,207,0,205,1,73,7,16,7,23,7,25,7,26,7,29,7,27,7,30,7,28,7,31,7,17,0,4,14,198,0,0,1,228,1,0,0,7,0,228,0,0,0,13,0,47,0,64,0,96,0,126,0,191,0,209,0,223,0,241,1,126,1,128,1,143,1,147,1,161,1,176,1,194,1,220,1,227,1,231,1,235,1,245,1,249,1,253,2,27,2,55,2,67,2,81,2,88,2,92,2,104,2,106,2,110,2,118,2,123,2,126,2,132,2,146,2,149,2,153,2,157,2,159,2,162,2,176,2,179,2,185,2,188,2,191,2,193,2,204,2,209,2,222,2,227,3,12,3,15,3,19,3,32,3,42,3,44,3,49,3,52,3,61,3,66,3,69,3,97,3,117,3,122,3,126,3,138,3,140,3,144,3,161,3,171,3,176,3,194,3,206,3,209,3,213,3,215,3,217,3,219,3,221,3,225,4,7,4,12,4,15,4,22,4,26,4,47,4,54,4,58,4,87,4,92,4,95,4,99,4,117,4,147,4,155,4,163,4,171,4,179,4,183,4,187,4,194,4,209,4,217,4,227,4,233,4,239,4,243,29,67,29,73,29,77,29,80,29,82,29,88,29,91,29,156,29,160,29,187,30,7,30,15,30,23,30,33,30,37,30,43,30,59,30,73,30,83,30,99,30,111,30,133,30,143,30,151,30,158,30,249,31,1,31,9,31,17,31,21,31,25,31,29,31,33,31,41,31,49,31,57,31,65,31,69,31,73,31,77,31,81,31,87,31,89,31,91,31,93,31,97,31,105,31,125,31,129,31,135,31,145,31,151,31,161,31,167,31,180,31,196,31,211,31,219,31,223,31,239,31,244,31,254,32,7,32,22,32,26,32,30,32,34,32,38,32,48,32,51,32,53,32,58,32,63,32,68,32,73,32,113,32,121,32,127,32,137,32,142,32,148,32,161,32,164,32,167,32,169,32,172,32,174,32,178,32,181,32,186,32,189,33,19,33,23,33,32,33,34,33,38,33,46,33,82,33,90,33,94,33,137,33,147,34,2,34,6,34,15,34,18,34,21,34,26,34,30,34,43,34,72,34,96,34,101,35,31,37,160,37,179,37,183,37,189,37,193,37,198,37,202,37,204,38,17,38,106,39,19,39,82,39,231,46,37,46,59,251,4,254,255,255,255,0,0,0,0,0,13,0,32,0,48,0,65,0,97,0,160,0,192,0,210,0,224,0,242,1,128,1,143,1,146,1,160,1,175,1,194,1,205,1,226,1,230,1,234,1,244,1,248,1,252,2,24,2,55,2,67,2,80,2,82,2,89,2,94,2,106,2,108,2,111,2,120,2,125,2,128,2,136,2,148,2,152,2,156,2,159,2,161,2,176,2,178,2,183,2,187,2,190,2,193,2,198,2,208,2,216,2,224,3,0,3,15,3,17,3,24,3,35,3,44,3,46,3,52,3,57,3,66,3,69,3,97,3,116,3,122,3,126,3,132,3,140,3,142,3,145,3,163,3,172,3,177,3,195,3,208,3,213,3,215,3,217,3,219,3,221,3,225,4,0,4,8,4,13,4,16,4,23,4,27,4,48,4,55,4,59,4,88,4,93,4,98,4,114,4,144,4,150,4,160,4,170,4,174,4,182,4,186,4,192,4,207,4,212,4,226,4,230,4,238,4,242,29,67,29,71,29,77,29,79,29,82,29,86,29,91,29,156,29,160,29,187,30,6,30,12,30,22,30,32,30,36,30,42,30,50,30,62,30,82,30,88,30,108,30,128,30,142,30,146,30,158,30,160,31,0,31,2,31,10,31,18,31,24,31,26,31,32,31,34,31,42,31,50,31,58,31,66,31,72,31,74,31,80,31,82,31,89,31,91,31,93,31,95,31,98,31,106,31,128,31,130,31,136,31,146,31,152,31,162,31,168,31,182,31,198,31,214,31,221,31,224,31,242,31,246,32,7,32,18,32,24,32,28,32,32,32,38,32,47,32,50,32,53,32,57,32,60,32,68,32,71,32,112,32,116,32,125,32,128,32,141,32,148,32,161,32,164,32,166,32,169,32,171,32,174,32,177,32,180,32,184,32,189,33,19,33,22,33,32,33,34,33,38,33,46,33,80,33,83,33,91,33,137,33,144,34,2,34,6,34,15,34,17,34,21,34,25,34,30,34,43,34,72,34,96,34,100,35,28,37,160,37,178,37,182,37,188,37,192,37,198,37,201,37,204,38,16,38,106,39,19,39,82,39,230,46,34,46,58,251,0,254,255,255,255,0,1,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,147,255,104,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,135,254,14,0,0,255,111,255,113,0,0,255,112,255,112,255,113,255,112,255,111,255,110,255,107,255,106,0,0,0,0,255,64,255,95,3,212,0,0,0,0,4,79,4,78,3,214,4,74,3,200,0,0,0,0,0,0,4,49,0,0,4,48,0,0,4,48,4,47,4,45,4,41,4,37,4,36,4,9,255,246,255,245,255,233,0,0,254,210,0,0,254,176,0,0,0,0,0,0,0,0,254,171,254,168,255,139,255,138,255,137,255,136,255,133,255,174,255,175,255,177,255,122,255,124,255,126,255,180,255,182,255,184,255,185,255,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,58,0,0,233,54,0,0,233,57,0,0,233,55,232,227,232,226,232,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,40,0,0,227,233,0,0,0,0,227,232,227,125,227,127,227,222,0,0,0,0,0,0,0,0,227,219,227,107,227,109,227,211,227,213,227,99,227,100,227,99,0,0,0,0,0,0,227,191,227,193,0,0,227,189,0,0,227,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,138,0,0,0,0,0,0,0,0,228,85,0,0,230,212,230,211,228,79,0,0,230,122,0,0,0,0,229,184,0,0,229,182,229,179,230,10,230,14,230,12,230,11,230,10,0,0,230,13,230,4]);fileData0.push.apply(fileData0,[230,3,0,0,230,0,229,220,0,0,227,156,227,153,229,198,229,194,0,0,229,115,229,116,229,76,229,97,228,230,228,229,228,223,0,0,228,170,0,0,228,200,228,190,228,156,228,130,228,122,225,146,225,85,225,71,225,69,225,65,225,63,225,48,0,0,225,84,224,241,224,154,223,240,223,166,220,204,214,146,214,86,0,0,0,0,0,1,0,0,0,0,1,224,1,254,2,30,2,92,2,150,2,212,2,246,3,16,3,50,0,0,0,0,4,70,4,72,4,74,0,0,4,74,4,104,4,106,4,108,4,110,4,112,4,114,4,116,0,0,0,0,4,118,0,0,0,0,4,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,120,4,122,0,0,0,0,0,0,4,118,4,120,0,0,0,0,0,0,0,0,0,0,4,114,4,126,4,132,0,0,4,154,0,0,4,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,150,0,0,4,160,0,0,4,162,4,178,4,186,4,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,206,4,208,4,214,4,220,4,230,4,236,4,238,4,248,4,250,4,252,5,0,5,4,5,14,5,16,5,22,5,24,0,0,5,24,0,0,5,26,0,0,5,26,0,0,0,0,0,0,0,0,5,22,5,24,5,30,5,32,5,34,5,36,5,38,5,56,5,78,5,80,5,102,5,108,5,118,5,120,0,0,5,128,0,0,6,48,6,62,0,0,0,0,0,0,0,0,6,68,6,82,6,96,6,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,108,6,112,6,126,0,0,0,0,6,160,0,0,6,176,0,0,6,192,6,216,6,244,7,14,7,24,7,28,7,58,7,62,0,0,7,76,7,84,7,88,7,92,0,0,7,94,0,0,0,0,0,0,7,90,0,0,7,94,7,98,0,0,7,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,88,0,0,0,0,0,0,7,84,0,0,0,0,7,84,0,0,0,0,0,0,0,0,7,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,68,0,0,7,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,32,7,40,0,0,0,3,4,124,4,129,4,193,6,168,6,193,4,64,4,128,4,153,4,154,4,163,6,214,4,120,4,140,4,119,4,159,4,65,4,66,4,67,4,68,4,69,4,70,4,71,4,72,4,73,4,74,4,121,4,122,6,220,6,219,6,221,4,126,4,191,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,4,155,4,161,4,156,6,225,4,150,7,14,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,50,0,51,0,52,0,53,0,54,0,55,4,157,4,160,4,158,6,227,7,144,4,125,6,173,6,169,6,167,6,170,4,162,4,166,7,24,4,184,6,96,4,138,6,229,4,141,4,186,7,25,6,166,6,224,6,42,6,43,7,15,6,231,4,167,4,148,7,30,6,41,6,98,4,139,6,195,6,196,6,197,4,127,0,56,0,57,0,58,0,59,0,60,0,63,0,78,0,83,0,92,0,93,0,94,0,96,0,123,0,124,0,125,0,127,0,245,0,153,0,158,0,159,0,160,0,161,0,162,6,216,0,175,0,205,0,206,0,207,0,209,0,233,0,246,1,139,0,250,0,251,0,252,0,253,0,254,1,1,1,16,1,21,1,30,1,31,1,32,1,34,1,61,1,62,1,63,1,65,1,187,1,93,1,99,1,100,1,101,1,102,1,103,6,217,1,116,1,147,1,148,1,149,1,151,1,175,1,188,1,177,0,61,0,255,0,62,1,0,0,77,1,15,0,84,1,22,0,85,1,23,0,87,1,25,0,86,1,24,0,88,1,26,0,91,1,29,0,97,1,35,0,98,1,36,0,99,1,37,0,108,1,46,0,95,1,33,0,111,1,49,0,112,1,50,0,113,1,51,0,114,1,52,0,119,1,56,0,122,1,60,0,126,1,64,0,128,1,66,0,134,1,72,0,133,1,70,0,129,1,73,0,249,1,191,0,135,1,74,0,136,1,75,1,78,0,139,1,79,0,141,1,82,0,140,1,80,0,142,1,81,0,146,1,86,0,150,1,90,0,154,1,94,0,152,1,92,1,98,0,248,1,189,0,163,1,104,0,173,1,114,0,164,1,105,0,176,1,117,0,184,1,125,0,187,1,126,0,185,1,127,0,191,1,132,0,192,1,133,0,194,1,135,0,193,1,134,0,200,1,141,0,199,1,140,0,204,1,146,0,208,1,150,0,210,1,152,0,211,1,153,0,212,1,154,0,213,1,155,0,221,1,163,0,230,1,172,0,234,1,176,0,235,0,240,1,182,0,242,1,184,0,241,1,183,6,174,0,118,0,177,1,118,0,222,1,164,0,64,1,2,0,130,1,67,0,165,1,106,0,214,1,156,0,215,1,157,0,216,1,158,0,217,1,159,0,218,1,160,0,80,1,18,0,115,1,53,0,183,1,124,0,110,1,48,0,151,1,91,0,79,1,17,0,195,1,136,0,201,1,142,1,192,1,200,1,206,1,207,1,208,1,209,1,210,1,211,1,212,1,213,1,214,1,215,1,217,2,3,1,201,1,216,1,219,6,134,6,142,6,147,6,149,7,9,7,26,7,29,7,27,7,31,7,23,7,28,6,154,6,155,6,136,6,143,6,148,7,33,7,36,7,39,7,41,7,43,7,45,7,47,7,51,7,53,7,55,7,57,7,59,7,61,7,66,7,68,7,70,7,81,7,82,7,83,7,84,7,86,7,88,7,90,7,91,3,108,3,110,2,89,3,104,2,90,2,91,2,92,2,95,2,97,2,135,2,82,2,83,2,84,2,85,2,86,2,87,2,88,2,93,2,96,2,126,2,127,2,128,2,129,2,136,2,98,2,99,2,100,2,101,2,102,2,103,2,104,2,105,2,106,2,107,2,108,2,109,2,110,2,111,2,112,2,113,2,114,2,122,2,115,2,116,2,117,2,118,2,119,2,120,2,121,2,130,2,133,2,131,2,132,2,134,3,193,4,27,3,194,4,28,3,195,4,29,3,196,4,30,3,197,4,31,3,198,4,32,3,201,4,35,3,202,4,36,3,205,4,39,3,208,4,42,3,209,4,43,3,210,4,44,3,211,4,45,3,212,4,46,3,213,4,47,3,214,4,48,3,215,3,216,4,49,4,52,3,219,4,53,3,220,4,54,3,221,4,55,3,222,4,56,3,223,4,57,3,224,4,58,3,225,4,59,3,226,4,60,3,227,4,61,6,126,6,128,6,129,6,135,6,137,6,140,6,144,6,145,0,82,1,20,0,89,1,27,0,90,1,28,0,109,1,47,0,116,1,54,0,120,1,57,0,121,1,59,0,137,1,76,0,138,1,77,0,143,1,83,0,144,1,84,0,145,1,85,0,147,1,87,0,148,1,88,0,149,1,89,0,155,1,95,0,156,1,96,0,157,1,97,0,174,1,115,0,186,1,128,0,188,1,129,0,189,1,130,0,190,1,131,0,196,1,137,0,197,1,138,0,202,1,143,0,203,1,144,0,228,1,170,0,229,1,171,0,231,1,173,0,236,1,178,0,243,1,185,0,244,1,186,1,58,1,145,0,65,1,3,0,66,1,4,0,67,1,5,0,68,1,6,0,69,1,7,0,70,1,8,0,71,1,9,0,72,1,10,0,73,1,11,0,74,1,12,0,75,1,13,0,76,1,14,0,100,1,38,0,101,1,39,0,102,1,40,0,103,1,41,0,104,1,42,0,105,1,43,0,106,1,44,0,107,1,45,0,131,1,68,0,132,1,69,0,166,1,107,0,167,1,108,0,168,1,109,0,169,1,110,0,170,1,111,0,171,1,112,0,172,1,113,0,178,1,119,0,179,1,120,0,180,1,121,0,181,1,122,0,182,1,123,0,219,1,161,0,220,1,162,0,223,1,165,0,224,1,166,0,225,1,167,0,226,1,168,0,227,1,169,0,232,1,174,0,237,1,179,0,238,1,180,0,239,1,181,2,237,2,238,2,239,2,240,2,241,2,242,2,137,2,138,2,141,2,142,2,143,2,144,2,145,2,146,2,246,2,247,3,2,3,3,3,4,3,5,3,6,3,7,2,157,2,158,2,161,2,162,2,163,2,164,2,165,2,166,3,9,3,10,3,13,3,14,3,15,3,16,3,17,3,18,2,167,2,168,2,171,2,172,2,173,2,174,2,175,2,176,3,25,3,26,2,193,3,51,3,52,3,55,3,56,3,57,3,58,3,59,3,60,2,196,2,197,2,200,2,201,2,202,2,203,2,204,2,205,2,235,2,236,2,248,2,249,3,0,3,1,3,11,3,12,3,27,3,28,3,37,3,38,3,53,3,54,2,207,2,208,2,209,2,210,2,211,2,212,2,213,2,214,3,75,3,76,2,216,2,217,2,218,2,219,2,220,2,221,2,222,2,223,3,87,3,88,2,225,2,226,2,227,2,228,2,229,2,230,2,231,2,232,2,243,2,244,3,65,3,62,3,66,2,245,3,73,2,147,2,148,2,139,2,140,2,206,3,113,3,112,3,114,3,124,3,127,3,77,3,74,3,78,3,8,3,85,2,151,2,152,2,159,2,160,2,215,3,118,3,120,3,122,3,19,3,20,3,22,3,23,3,21,3,24,2,177,2,178,2,169,2,170,3,119,3,121,3,123,3,46,3,47,3,48,3,49,3,33,3,34,3,45,3,50,2,194,2,195,2,189,2,190,2,187,3,125,3,126,3,116,3,89,3,86,3,90,3,61,3,97,2,181,2,182,2,198,2,199,2,224,3,117,3,115,4,146,4,142,4,143,4,147,4,168,4,130,4,131,4,134,4,132,4,133,4,135,4,164,4,165,4,149,7,148,6,194,4,169,4,173,4,151,4,152,4,170,4,172,4,171,6,40,6,133,6,50,6,51,6,138,6,180,6,172,6,188,6,185,6,186,4,63,4,185,6,206,6,211,6,212,6,237,6,215,6,218,6,234,6,247,7,5,2,4,7,150,7,151,2,5,2,6,7,149,0,12,0,0,0,0,37,156,0,0,0,0,0,0,3,33,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,13,0,0,0,13,0,0,0,2,0,0,0,32,0,0,0,32,0,0,0,3,0,0,0,33,0,0,0,33,0,0,4,124,0,0,0,34,0,0,0,34,0,0,4,129,0,0,0,35,0,0,0,35,0,0,4,193,0,0,0,36,0,0,0,36,0,0,6,168,0,0,0,37,0,0,0,37,0,0,6,193,0,0,0,38,0,0,0,38,0,0,4,64,0,0,0,39,0,0,0,39,0,0,4,128,0,0,0,40,0,0,0,41,0,0,4,153,0,0,0,42,0,0,0,42,0,0,4,163,0,0,0,43,0,0,0,43,0,0,6,214,0,0,0,44,0,0,0,44,0,0,4,120,0,0,0,45,0,0,0,45,0,0,4,140,0,0,0,46,0,0,0,46,0,0,4,119,0,0,0,47,0,0,0,47,0,0,4,159,0,0,0,48,0,0,0,57,0,0,4,65,0,0,0,58,0,0,0,59,0,0,4,121,0,0,0,60,0,0,0,60,0,0,6,220,0,0,0,61,0,0,0,61,0,0,6,219,0,0,0,62,0,0,0,62,0,0,6,221,0,0,0,63,0,0,0,63,0,0,4,126,0,0,0,64,0,0,0,64,0,0,4,191,0,0,0,65,0,0,0,90,0,0,0,4,0,0,0,91,0,0,0,91,0,0,4,155,0,0,0,92,0,0,0,92,0,0,4,161,0,0,0,93,0,0,0,93,0,0,4,156,0,0,0,94,0,0,0,94,0,0,6,225,0,0,0,95,0,0,0,95,0,0,4,150,0,0,0,96,0,0,0,96,0,0,7,14,0,0,0,97,0,0,0,122,0,0,0,30,0,0,0,123,0,0,0,123,0,0,4,157,0,0,0,124,0,0,0,124,0,0,4,160,0,0,0,125,0,0,0,125,0,0,4,158,0,0,0,126,0,0,0,126,0,0,6,227,0,0,0,160,0,0,0,160,0,0,7,144,0,0,0,161,0,0,0,161,0,0,4,125,0,0,0,162,0,0,0,162,0,0,6,173,0,0,0,163,0,0,0,163,0,0,6,169,0,0,0,164,0,0,0,164,0,0,6,167,0,0,0,165,0,0,0,165,0,0,6,170,0,0,0,166,0,0,0,166,0,0,4,162,0,0,0,167,0,0,0,167,0,0,4,166,0,0,0,168,0,0,0,168,0,0,7,24,0,0,0,169,0,0,0,169,0,0,4,184,0,0,0,170,0,0,0,170,0,0,6,96,0,0,0,171,0,0,0,171,0,0,4,138,0,0,0,172,0,0,0,172,0,0,6,229,0,0,0,173,0,0,0,173,0,0,4,141,0,0,0,174,0,0,0,174,0,0,4,186,0,0,0,175,0,0,0,175,0,0,7,25,0,0,0,176,0,0,0,176,0,0,6,166,0,0,0,177,0,0,0,177,0,0,6,224,0,0,0,178,0,0,0,179,0,0,6,42,0,0,0,180,0,0,0,180,0,0,7,15,0,0,0,181,0,0,0,181,0,0,6,231,0,0,0,182,0,0,0,182,0,0,4,167,0,0,0,183,0,0,0,183,0,0,4,148,0,0,0,184,0,0,0,184,0,0,7,30,0,0,0,185,0,0,0,185,0,0,6,41,0,0,0,186,0,0,0,186,0,0,6,98,0,0,0,187,0,0,0,187,0,0,4,139,0,0,0,188,0,0,0,190,0,0,6,195,0,0,0,191,0,0,0,191,0,0,4,127,0,0,0,192,0,0,0,196,0,0,0,56,0,0,0,197,0,0,0,197,0,0,0,63,0,0,0,198,0,0,0,198,0,0,0,78,0,0,0,199,0,0,0,199,0,0,0,83,0,0,0,200,0,0,0,202,0,0,0,92,0,0,0,203,0,0,0,203,0,0,0,96,0,0,0,204,0,0,0,206,0,0,0,123,0,0,0,207,0,0,0,207,0,0,0,127,0,0,0,208,0,0,0,208,0,0,0,245,0,0,0,209,0,0,0,209,0,0,0,153,0,0,0,210,0,0,0,214,0,0,0,158,0,0,0,215,0,0,0,215,0,0,6,216,0,0,0,216,0,0,0,216,0,0,0,175,0,0,0,217,0,0,0,219,0,0,0,205,0,0,0,220,0,0,0,220,0,0,0,209,0,0,0,221,0,0,0,221,0,0,0,233,0,0,0,222,0,0,0,222,0,0,0,246,0,0,0,223,0,0,0,223,0,0,1,139,0,0,0,224,0,0,0,228,0,0,0,250,0,0,0,229,0,0,0,229,0,0,1,1,0,0,0,230,0,0,0,230,0,0,1,16,0,0,0,231,0,0,0,231,0,0,1,21,0,0,0,232,0,0,0,234,0,0,1,30,0,0,0,235,0,0,0,235,0,0,1,34,0,0,0,236,0,0,0,238,0,0,1,61,0,0,0,239,0,0,0,239,0,0,1,65,0,0,0,240,0,0,0,240,0,0,1,187,0,0,0,241,0,0,0,241,0,0,1,93,0,0,0,242,0,0,0,246,0,0,1,99,0,0,0,247,0,0,0,247,0,0,6,217,0,0,0,248,0,0,0,248,0,0,1,116,0,0,0,249,0,0,0,251,0,0,1,147,0,0,0,252,0,0,0,252,0,0,1,151,0,0,0,253,0,0,0,253,0,0,1,175,0,0,0,254,0,0,0,254,0,0,1,188,0,0,0,255,0,0,0,255,0,0,1,177,0,0,1,0,0,0,1,0,0,0,0,61,0,0,1,1,0,0,1,1,0,0,0,255,0,0,1,2,0,0,1,2,0,0,0,62,0,0,1,3,0,0,1,3,0,0,1,0,0,0,1,4,0,0,1,4,0,0,0,77,0,0,1,5,0,0,1,5,0,0,1,15,0,0,1,6,0,0,1,6,0,0,0,84,0,0,1,7,0,0,1,7,0,0,1,22,0,0,1,8,0,0,1,8,0,0,0,85,0,0,1,9,0,0,1,9,0,0,1,23,0,0,1,10,0,0,1,10,0,0,0,87,0,0,1,11,0,0,1,11,0,0,1,25,0,0,1,12,0,0,1,12,0,0,0,86,0,0,1,13,0,0,1,13,0,0,1,24,0,0,1,14,0,0,1,14,0,0,0,88,0,0,1,15,0,0,1,15,0,0,1,26,0,0,1,16,0,0,1,16,0,0,0,91,0,0,1,17,0,0,1,17,0,0,1,29,0,0,1,18,0,0,1,18,0,0,0,97,0,0,1,19,0,0,1,19,0,0,1,35,0,0,1,20,0,0,1,20,0,0,0,98,0,0,1,21,0,0,1,21,0,0,1,36,0,0,1,22,0,0,1,22,0,0,0,99,0,0,1,23,0,0,1,23,0,0,1,37,0,0,1,24,0,0,1,24,0,0,0,108,0,0,1,25,0,0,1,25,0,0,1,46,0,0,1,26,0,0,1,26,0,0,0,95,0,0,1,27,0,0,1,27,0,0,1,33,0,0,1,28,0,0,1,28,0,0,0,111,0,0,1,29,0,0,1,29,0,0,1,49,0,0,1,30,0,0,1,30,0,0,0,112,0,0,1,31,0,0,1,31,0,0,1,50,0,0,1,32,0,0,1,32,0,0,0,113,0,0,1,33,0,0,1,33,0,0,1,51,0,0,1,34,0,0,1,34,0,0,0,114,0,0,1,35,0,0,1,35,0,0,1,52,0,0,1,36,0,0,1,36,0,0,0,119,0,0,1,37,0,0,1,37,0,0,1,56,0,0,1,38,0,0,1,38,0,0,0,122,0,0,1,39,0,0,1,39,0,0,1,60,0,0,1,40,0,0,1,40,0,0,0,126,0,0,1,41,0,0,1,41,0,0,1,64,0,0,1,42,0,0,1,42,0,0,0,128,0,0,1,43,0,0,1,43,0,0,1,66,0,0,1,44,0,0,1,44,0,0,0,134,0,0,1,45,0,0,1,45,0,0,1,72,0,0,1,46,0,0,1,46,0,0,0,133,0,0,1,47,0,0,1,47,0,0,1,70,0,0,1,48,0,0,1,48,0,0,0,129,0,0,1,49,0,0,1,49,0,0,1,73,0,0,1,50,0,0,1,50,0,0,0,249,0,0,1,51,0,0,1,51,0,0,1,191,0,0,1,52,0,0,1,52,0,0,0,135,0,0,1,53,0,0,1,53,0,0,1,74,0,0,1,54,0,0,1,54,0,0,0,136,0,0,1,55,0,0,1,55,0,0,1,75,0,0,1,56,0,0,1,56,0,0,1,78,0,0,1,57,0,0,1,57,0,0,0,139,0,0,1,58,0,0,1,58,0,0,1,79,0,0,1,59,0,0,1,59,0,0,0,141,0,0,1,60,0,0,1,60,0,0,1,82,0,0,1,61,0,0,1,61,0,0,0,140,0,0,1,62,0,0,1,62,0,0,1,80,0,0,1,63,0,0,1,63,0,0,0,142,0,0,1,64,0,0,1,64,0,0,1,81,0,0,1,65,0,0,1,65,0,0,0,146,0,0,1,66,0,0,1,66,0,0,1,86,0,0,1,67,0,0,1,67,0,0,0,150,0,0,1,68,0,0,1,68,0,0,1,90,0,0,1,69,0,0,1,69,0,0,0,154,0,0,1,70,0,0,1,70,0,0,1,94,0,0,1,71,0,0,1,71,0,0,0,152,0,0,1,72,0,0,1,72,0,0,1,92,0,0,1,73,0,0,1,73,0,0,1,98,0,0,1,74,0,0,1,74,0,0,0,248,0,0,1,75,0,0,1,75,0,0,1,189,0,0,1,76,0,0,1,76,0,0,0,163,0,0,1,77,0,0,1,77,0,0,1,104,0,0,1,78,0,0,1,78,0,0,0,173,0,0,1,79,0,0,1,79,0,0,1,114,0,0,1,80,0,0,1,80,0,0,0,164,0,0,1,81,0,0,1,81,0,0,1,105,0,0,1,82,0,0,1,82,0,0,0,176,0,0,1,83,0,0,1,83,0,0,1,117,0,0,1,84,0,0,1,84,0,0,0,184,0,0,1,85,0,0,1,85,0,0,1,125,0,0,1,86,0,0,1,86,0,0,0,187,0,0,1,87,0,0,1,87,0,0,1,126,0,0,1,88,0,0,1,88,0,0,0,185,0,0,1,89,0,0,1,89,0,0,1,127,0,0,1,90,0,0,1,90,0,0,0,191,0,0,1,91,0,0,1,91,0,0,1,132,0,0,1,92,0,0,1,92,0,0,0,192,0,0,1,93,0,0,1,93,0,0,1,133,0,0,1,94,0,0,1,94,0,0,0,194,0,0,1,95,0,0,1,95,0,0,1,135,0,0,1,96,0,0,1,96,0,0,0,193,0,0,1,97,0,0,1,97,0,0,1,134,0,0,1,98,0,0,1,98,0,0,0,200,0,0,1,99,0,0,1,99,0,0,1,141,0,0,1,100,0,0,1,100,0,0,0,199,0,0,1,101,0,0,1,101,0,0,1,140,0,0,1,102,0,0,1,102,0,0,0,204,0,0,1,103,0,0,1,103,0,0,1,146,0,0,1,104,0,0,1,104,0,0,0,208,0,0,1,105,0,0,1,105,0,0,1,150,0,0,1,106,0,0,1,106,0,0,0,210,0,0,1,107,0,0,1,107,0,0,1,152,0,0,1,108,0,0,1,108,0,0,0,211,0,0,1,109,0,0,1,109,0,0,1,153,0,0,1,110,0,0,1,110,0,0,0,212,0,0,1,111,0,0,1,111,0,0,1,154,0,0,1,112,0,0,1,112,0,0,0,213,0,0,1,113,0,0,1,113,0,0,1,155,0,0,1,114,0,0,1,114,0,0,0,221,0,0,1,115,0,0,1,115,0,0,1,163,0,0,1,116,0,0,1,116,0,0,0,230,0,0,1,117,0,0,1,117,0,0,1,172,0,0,1,118,0,0,1,118,0,0,0,234,0,0,1,119,0,0,1,119,0,0,1,176,0,0,1,120,0,0,1,120,0,0,0,235,0,0,1,121,0,0,1,121,0,0,0,240,0,0,1,122,0,0,1,122,0,0,1,182,0,0,1,123,0,0,1,123,0,0,0,242,0,0,1,124,0,0,1,124,0,0,1,184,0,0,1,125,0,0,1,125,0,0,0,241,0,0,1,126,0,0,1,126,0,0,1,183,0,0,1,128,0,0,1,128,0,0,1,19,0,0,1,143,0,0,1,143,0,0,0,247,0,0,1,146,0,0,1,146,0,0,6,174,0,0,1,147,0,0,1,147,0,0,0,118,0,0,1,160,0,0,1,160,0,0,0,177,0,0,1,161,0,0,1,161,0,0,1,118,0,0,1,175,0,0,1,175,0,0,0,222,0,0,1,176,0,0,1,176,0,0,1,164,0,0,1,194,0,0,1,194,0,0,2,2,0,0,1,205,0,0,1,205,0,0,0,64,0,0,1,206,0,0,1,206,0,0,1,2,0,0,1,207,0,0,1,207,0,0,0,130,0,0,1,208,0,0,1,208,0,0,1,67,0,0,1,209,0,0,1,209,0,0,0,165,0,0,1,210,0,0,1,210,0,0,1,106,0,0,1,211,0,0,1,211,0,0,0,214,0,0,1,212,0,0,1,212,0,0,1,156,0,0,1,213,0,0,1,213,0,0,0,215,0,0,1,214,0,0,1,214,0,0,1,157,0,0,1,215,0,0,1,215,0,0,0,216,0,0,1,216,0,0,1,216,0,0,1,158,0,0,1,217,0,0,1,217,0,0,0,217,0,0,1,218,0,0,1,218,0,0,1,159,0,0,1,219,0,0,1,219,0,0,0,218,0,0,1,220,0,0,1,220,0,0,1,160,0,0,1,226,0,0,1,226,0,0,0,80,0,0,1,227,0,0,1,227,0,0,1,18,0,0,1,230,0,0,1,230,0,0,0,115,0,0,1,231,0,0,1,231,0,0,1,53,0,0,1,234,0,0,1,234,0,0,0,183,0,0,1,235,0,0,1,235,0,0,1,124,0,0,1,244,0,0,1,244,0,0,0,110,0,0,1,245,0,0,1,245,0,0,1,48,0,0,1,248,0,0,1,248,0,0,0,151,0,0,1,249,0,0,1,249,0,0,1,91,0,0,1,252,0,0,1,252,0,0,0,79,0,0,1,253,0,0,1,253,0,0,1,17,0,0,2,24,0,0,2,24,0,0,0,195,0,0,2,25,0,0,2,25,0,0,1,136,0,0,2,26,0,0,2,26,0,0,0,201,0,0,2,27,0,0,2,27,0,0,1,142,0,0,2,55,0,0,2,55,0,0,1,190,0,0,2,67,0,0,2,67,0,0,0,81,0,0,2,80,0,0,2,80,0,0,1,192,0,0,2,81,0,0,2,81,0,0,1,200,0,0,2,82,0,0,2,88,0,0,1,193,0,0,2,89,0,0,2,92,0,0,1,202,0,0,2,94,0,0,2,103,0,0,1,206,0,0,2,104,0,0,2,104,0,0,1,217,0,0,2,106,0,0,2,106,0,0,1,218,0,0,2,108,0,0,2,110,0,0,1,220,0,0,2,111,0,0,2,118,0,0,1,224,0,0,2,120,0,0,2,123,0,0,1,232,0,0,2,125,0,0,2,126,0,0,1,236,0,0,2,128,0,0,2,132,0,0,1,238,0,0,2,136,0,0,2,146,0,0,1,243,0,0,2,148,0,0,2,149,0,0,1,254,0,0,2,152,0,0,2,152,0,0,2,3,0,0,2,153,0,0,2,153,0,0,1,201,0,0,2,156,0,0,2,156,0,0,1,216,0,0,2,157,0,0,2,157,0,0,1,219,0,0,2,159,0,0,2,159,0,0,1,223,0,0,2,161,0,0,2,162,0,0,2,0,0,0,2,176,0,0,2,176,0,0,6,132,0,0,2,178,0,0,2,178,0,0,6,134,0,0,2,179,0,0,2,179,0,0,6,142,0,0,2,183,0,0,2,183,0,0,6,147,0,0,2,184,0,0,2,184,0,0,6,149,0,0,2,185,0,0,2,185,0,0,7,9,0,0,2,187,0,0,2,188,0,0,7,10,0,0,2,190,0,0,2,191,0,0,7,12,0,0,2,193,0,0,2,193,0,0,6,151,0,0,2,198,0,0,2,204,0,0,7,16,0,0,2,208,0,0,2,209,0,0,6,152,0,0,2,216,0,0,2,216,0,0,7,26,0,0,2,217,0,0,2,217,0,0,7,29,0,0,2,218,0,0,2,218,0,0,7,27,0,0,2,219,0,0,2,219,0,0,7,31,0,0,2,220,0,0,2,220,0,0,7,23,0,0,2,221,0,0,2,221,0,0,7,28,0,0,2,222,0,0,2,222,0,0,6,154,0,0,2,224,0,0,2,224,0,0,6,155,0,0,2,225,0,0,2,225,0,0,6,136,0,0,2,226,0,0,2,226,0,0,6,143,0,0,2,227,0,0,2,227,0,0,6,148,0,0,3,0,0,0,3,0,0,0,7,33,0,0,3,1,0,0,3,1,0,0,7,36,0,0,3,2,0,0,3,2,0,0,7,39,0,0,3,3,0,0,3,3,0,0,7,41,0,0,3,4,0,0,3,4,0,0,7,43,0,0,3,5,0,0,3,5,0,0,7,45,0,0,3,6,0,0,3,6,0,0,7,47,0,0,3,7,0,0,3,7,0,0,7,51,0,0,3,8,0,0,3,8,0,0,7,53,0,0,3,9,0,0,3,9,0,0,7,55,0,0,3,10,0,0,3,10,0,0,7,57,0,0,3,11,0,0,3,11,0,0,7,59,0,0,3,12,0,0,3,12,0,0,7,61,0,0,3,15,0,0,3,15,0,0,7,64,0,0,3,17,0,0,3,17,0,0,7,66,0,0,3,18,0,0,3,18,0,0,7,68,0,0,3,19,0,0,3,19,0,0,7,70,0,0,3,24,0,0,3,32,0,0,7,72,0,0,3,35,0,0,3,38,0,0,7,81,0,0,3,39,0,0,3,39,0,0,7,86,0,0,3,40,0,0,3,40,0,0,7,88,0,0,3,41,0,0,3,42,0,0,7,90,0,0,3,44,0,0,3,44,0,0,7,92,0,0,3,46,0,0,3,49,0,0,7,93,0,0,3,52,0,0,3,52,0,0,7,97,0,0,3,57,0,0,3,61,0,0,7,98,0,0,3,66,0,0,3,66,0,0,7,103,0,0,3,69,0,0,3,69,0,0,7,105,0,0,3,97,0,0,3,97,0,0,7,106,0,0,3,116,0,0,3,117,0,0,3,106,0,0,3,122,0,0,3,122,0,0,3,111,0,0,3,126,0,0,3,126,0,0,3,103,0,0,3,132,0,0,3,132,0,0,3,108,0,0,3,133,0,0,3,133,0,0,3,110,0,0,3,134,0,0,3,134,0,0,2,89,0,0,3,135,0,0,3,135,0,0,3,104,0,0,3,136,0,0,3,138,0,0,2,90,0,0,3,140,0,0,3,140,0,0,2,94,0,0,3,142,0,0,3,142,0,0,2,95,0,0,3,143,0,0,3,143,0,0,2,97,0,0,3,144,0,0,3,144,0,0,2,135,0,0,3,145,0,0,3,161,0,0,2,65,0,0,3,163,0,0,3,169,0,0,2,82,0,0,3,170,0,0,3,170,0,0,2,93,0,0,3,171,0,0,3,171,0,0,2,96,0,0,3,172,0,0,3,175,0,0,2,126,0,0,3,176,0,0,3,176,0,0,2,136,0,0,3,177,0,0,3,193,0,0,2,98,0,0,3,194,0,0,3,194,0,0,2,122,0,0,3,195,0,0,3,201,0,0,2,115,0,0,3,202,0,0,3,202,0,0,2,130,0,0,3,203,0,0,3,203,0,0,2,133,0,0,3,204,0,0,3,205,0,0,2,131,0,0,3,206,0,0,3,206,0,0,2,134,0,0,3,208,0,0,3,209,0,0,2,123,0,0,3,213,0,0,3,213,0,0,2,125,0,0,3,215,0,0,3,215,0,0,3,98,0,0,3,217,0,0,3,217,0,0,3,99,0,0,3,219,0,0,3,219,0,0,3,100,0,0,3,221,0,0,3,221,0,0,3,101,0,0,3,225,0,0,3,225,0,0,3,102,0,0,4,0,0,0,4,7,0,0,3,174,0,0,4,8,0,0,4,12,0,0,3,183,0,0,4,13,0,0,4,15,0,0,3,190,0,0,4,16,0,0,4,22,0,0,3,138,0,0,4,23,0,0,4,26,0,0,3,147,0,0,4,27,0,0,4,47,0,0,3,153,0,0,4,48,0,0,4,54,0,0,3,228,0,0,4,55,0,0,4,58,0,0,3,237,0,0,4,59,0,0,4,87,0,0,3,243,0,0,4,88,0,0,4,92,0,0,4,17,0,0,4,93,0,0,4,95,0,0,4,24,0,0,4,98,0,0,4,98,0,0,3,193,0,0,4,99,0,0,4,99,0,0,4,27,0,0,4,114,0,0,4,114,0,0,3,194,0,0,4,115,0,0,4,115,0,0,4,28,0,0,4,116,0,0,4,116,0,0,3,195,0,0,4,117,0,0,4,117,0,0,4,29,0,0,4,144,0,0,4,144,0,0,3,196,0,0,4,145,0,0,4,145,0,0,4,30,0,0,4,146,0,0,4,146,0,0,3,197,0,0,4,147,0,0,4,147,0,0,4,31,0,0,4,150,0,0,4,150,0,0,3,198,0,0,4,151,0,0,4,151,0,0,4,32,0,0,4,152,0,0,4,152,0,0,3,201,0,0,4,153,0,0,4,153,0,0,4,35,0,0,4,154,0,0,4,154,0,0,3,202,0,0,4,155,0,0,4,155,0,0,4,36,0,0,4,160,0,0,4,160,0,0,3,205,0,0,4,161,0,0,4,161,0,0,4,39,0,0,4,162,0,0,4,162,0,0,3,208,0,0,4,163,0,0,4,163,0,0,4,42,0,0,4,170,0,0,4,170,0,0,3,209,0,0,4,171,0,0,4,171,0,0,4,43,0,0,4,174,0,0,4,174,0,0,3,210,0,0,4,175,0,0,4,175,0,0,4,44,0,0,4,176,0,0,4,176,0,0,3,211,0,0,4,177,0,0,4,177,0,0,4,45,0,0,4,178,0,0,4,178,0,0,3,212,0,0,4,179,0,0,4,179,0,0,4,46,0,0,4,182,0,0,4,182,0,0,3,213,0,0,4,183,0,0,4,183,0,0,4,47,0,0,4,186,0,0,4,186,0,0,3,214,0,0,4,187,0,0,4,187,0,0,4,48,0,0,4,192,0,0,4,193,0,0,3,215,0,0,4,194,0,0,4,194,0,0,4,49,0,0,4,207,0,0,4,207,0,0,4,52,0,0,4,208,0,0,4,208,0,0,3,219,0,0,4,209,0,0,4,209,0,0,4,53,0,0,4,212,0,0,4,212,0,0,3,220,0,0,4,213,0,0,4,213,0,0,4,54,0,0,4,214,0,0,4,214,0,0,3,221,0,0,4,215,0,0,4,215,0,0,4,55,0,0,4,216,0,0,4,216,0,0,3,222,0,0,4,217,0,0,4,217,0,0,4,56,0,0,4,226,0,0,4,226,0,0,3,223,0,0,4,227,0,0,4,227,0,0,4,57,0,0,4,230,0,0,4,230,0,0,3,224,0,0,4,231,0,0,4,231,0,0,4,58,0,0,4,232,0,0,4,232,0,0,3,225,0,0,4,233,0,0,4,233,0,0,4,59,0,0,4,238,0,0,4,238,0,0,3,226,0,0,4,239,0,0,4,239,0,0,4,60,0,0,4,242,0,0,4,242,0,0,3,227,0,0,4,243,0,0,4,243,0,0,4,61,0,0,29,67,0,0,29,67,0,0,6,125,0,0,29,71,0,0,29,71,0,0,6,126,0,0,29,72,0,0,29,73,0,0,6,128,0,0,29,77,0,0,29,77,0,0,6,131,0,0,29,79,0,0,29,79,0,0,6,135,0,0,29,80,0,0,29,80,0,0,6,137,0,0,29,82,0,0,29,82,0,0,6,139,0,0,29,86,0,0,29,86,0,0,6,140,0,0,29,87,0,0,29,88,0,0,6,144,0,0,29,91,0,0,29,91,0,0,6,146,0,0,29,156,0,0,29,156,0,0,6,127,0,0,29,160,0,0,29,160,0,0,6,130,0,0,29,187,0,0,29,187,0,0,6,150,0,0,30,6,0,0,30,6,0,0,0,82,0,0,30,7,0,0,30,7,0,0,1,20,0,0,30,12,0,0,30,12,0,0,0,89,0,0,30,13,0,0,30,13,0,0,1,27,0,0,30,14,0,0,30,14,0,0,0,90,0,0,30,15,0,0,30,15,0,0,1,28,0,0,30,22,0,0,30,22,0,0,0,109,0,0,30,23,0,0,30,23,0,0,1,47,0,0,30,32,0,0,30,32,0,0,0,116,0,0,30,33,0,0,30,33,0,0,1,54,0,0,30,36,0,0,30,36,0,0,0,120,0,0,30,37,0,0,30,37,0,0,1,57,0,0,30,42,0,0,30,42,0,0,0,121,0,0,30,43,0,0,30,43,0,0,1,59,0,0,30,50,0,0,30,50,0,0,0,137,0,0,30,51,0,0,30,51,0,0,1,76,0,0,30,52,0,0,30,52,0,0,0,138,0,0,30,53,0,0,30,53,0,0,1,77,0,0,30,54,0,0,30,54,0,0,0,143,0,0,30,55,0,0,30,55,0,0,1,83,0,0,30,56,0,0,30,56,0,0,0,144,0,0,30,57,0,0,30,57,0,0,1,84,0,0,30,58,0,0,30,58,0,0,0,145,0,0,30,59,0,0,30,59,0,0,1,85,0,0,30,62,0,0,30,62,0,0,0,147,0,0,30,63,0,0,30,63,0,0,1,87,0,0,30,64,0,0,30,64,0,0,0,148,0,0,30,65,0,0,30,65,0,0,1,88,0,0,30,66,0,0,30,66,0,0,0,149,0,0,30,67,0,0,30,67,0,0,1,89,0,0,30,68,0,0,30,68,0,0,0,155,0,0,30,69,0,0,30,69,0,0,1,95,0,0,30,70,0,0,30,70,0,0,0,156,0,0,30,71,0,0,30,71,0,0,1,96,0,0,30,72,0,0,30,72,0,0,0,157,0,0,30,73,0,0,30,73,0,0,1,97,0,0,30,82,0,0,30,82,0,0,0,174,0,0,30,83,0,0,30,83,0,0,1,115,0,0,30,88,0,0,30,88,0,0,0,186,0,0,30,89,0,0,30,89,0,0,1,128,0,0,30,90,0,0,30,90,0,0,0,188,0,0,30,91,0,0,30,91,0,0,1,129,0,0,30,92,0,0,30,92,0,0,0,189,0,0,30,93,0,0,30,93,0,0,1,130,0,0,30,94,0,0,30,94,0,0,0,190,0,0,30,95,0,0,30,95,0,0,1,131,0,0,30,96,0,0,30,96,0,0,0,196,0,0,30,97,0,0,30,97,0,0,1,137,0,0,30,98,0,0,30,98,0,0,0,197,0,0,30,99,0,0,30,99,0,0,1,138,0,0,30,108,0,0,30,108,0,0,0,202,0,0,30,109,0,0,30,109,0,0,1,143,0,0,30,110,0,0,30,110,0,0,0,203,0,0,30,111,0,0,30,111,0,0,1,144,0,0,30,128,0,0,30,128,0,0,0,228,0,0,30,129,0,0,30,129,0,0,1,170,0,0,30,130,0,0,30,130,0,0,0,229,0,0,30,131,0,0,30,131,0,0,1,171,0,0,30,132,0,0,30,132,0,0,0,231,0,0,30,133,0,0,30,133,0,0,1,173,0,0,30,142,0,0,30,142,0,0,0,236,0,0,30,143,0,0,30,143,0,0,1,178,0,0,30,146,0,0,30,146,0,0,0,243,0,0,30,147,0,0,30,147,0,0,1,185,0,0,30,148,0,0,30,148,0,0,0,244,0,0,30,149,0,0,30,149,0,0,1,186,0,0,30,150,0,0,30,150,0,0,1,58,0,0,30,151,0,0,30,151,0,0,1,145,0,0,30,158,0,0,30,158,0,0,0,198,0,0,30,160,0,0,30,160,0,0,0,65,0,0,30,161,0,0,30,161,0,0,1,3,0,0,30,162,0,0,30,162,0,0,0,66,0,0,30,163,0,0,30,163,0,0,1,4,0,0,30,164,0,0,30,164,0,0,0,67,0,0,30,165,0,0,30,165,0,0,1,5,0,0,30,166,0,0,30,166,0,0,0,68,0,0,30,167,0,0,30,167,0,0,1,6,0,0,30,168,0,0,30,168,0,0,0,69,0,0,30,169,0,0,30,169,0,0,1,7,0,0,30,170,0,0,30,170,0,0,0,70,0,0,30,171,0,0,30,171,0,0,1,8,0,0,30,172,0,0,30,172,0,0,0,71,0,0,30,173,0,0,30,173,0,0,1,9,0,0,30,174,0,0,30,174,0,0,0,72,0,0,30,175,0,0,30,175,0,0,1,10,0,0,30,176,0,0,30,176,0,0,0,73,0,0,30,177,0,0,30,177,0,0,1,11,0,0,30,178,0,0,30,178,0,0,0,74,0,0,30,179,0,0,30,179,0,0,1,12,0,0,30,180,0,0,30,180,0,0,0,75,0,0,30,181,0,0,30,181,0,0,1,13,0,0,30,182,0,0,30,182,0,0,0,76,0,0,30,183,0,0,30,183,0,0,1,14,0,0,30,184,0,0,30,184,0,0,0,100,0,0,30,185,0,0,30,185,0,0,1,38,0,0,30,186,0,0,30,186,0,0,0,101,0,0,30,187,0,0,30,187,0,0,1,39,0,0,30,188,0,0,30,188,0,0,0,102,0,0,30,189,0,0,30,189,0,0,1,40,0,0,30,190,0,0,30,190,0,0,0,103,0,0,30,191,0,0,30,191,0,0,1,41,0,0,30,192,0,0,30,192,0,0,0,104,0,0,30,193,0,0,30,193,0,0,1,42,0,0,30,194,0,0,30,194,0,0,0,105,0,0,30,195,0,0,30,195,0,0,1,43,0,0,30,196,0,0,30,196,0,0,0,106,0,0,30,197,0,0,30,197,0,0,1,44,0,0,30,198,0,0,30,198,0,0,0,107,0,0,30,199,0,0,30,199,0,0,1,45,0,0,30,200,0,0,30,200,0,0,0,131,0,0,30,201,0,0,30,201,0,0,1,68,0,0,30,202,0,0,30,202,0,0,0,132,0,0,30,203,0,0,30,203,0,0,1,69,0,0,30,204,0,0,30,204,0,0,0,166,0,0,30,205,0,0,30,205,0,0,1,107,0,0,30,206,0,0,30,206,0,0,0,167,0,0,30,207,0,0,30,207,0,0,1,108,0,0,30,208,0,0,30,208,0,0,0,168,0,0,30,209,0,0,30,209,0,0,1,109,0,0,30,210,0,0,30,210,0,0,0,169,0,0,30,211,0,0,30,211,0,0,1,110,0,0,30,212,0,0,30,212,0,0,0,170,0,0,30,213,0,0,30,213,0,0,1,111,0,0,30,214,0,0,30,214,0,0,0,171,0,0,30,215,0,0,30,215,0,0,1,112,0,0,30,216,0,0,30,216,0,0,0,172,0,0,30,217,0,0,30,217,0,0,1,113,0,0,30,218,0,0,30,218,0,0,0,178,0,0,30,219,0,0,30,219,0,0,1,119,0,0,30,220,0,0,30,220,0,0,0,179,0,0,30,221,0,0,30,221,0,0,1,120,0,0,30,222,0,0,30,222,0,0,0,180,0,0,30,223,0,0,30,223,0,0,1,121,0,0,30,224,0,0,30,224,0,0,0,181,0,0,30,225,0,0,30,225,0,0,1,122,0,0,30,226,0,0,30,226,0,0,0,182,0,0,30,227,0,0,30,227,0,0,1,123,0,0,30,228,0,0,30,228,0,0,0,219,0,0,30,229,0,0,30,229,0,0,1,161,0,0,30,230,0,0,30,230,0,0,0,220,0,0,30,231,0,0,30,231,0,0,1,162,0,0,30,232,0,0,30,232,0,0,0,223,0,0,30,233,0,0,30,233,0,0,1,165,0,0,30,234,0,0,30,234,0,0,0,224,0,0,30,235,0,0,30,235,0,0,1,166,0,0,30,236,0,0,30,236,0,0,0,225,0,0,30,237,0,0,30,237,0,0,1,167,0,0,30,238,0,0,30,238,0,0,0,226,0,0,30,239,0,0,30,239,0,0,1,168,0,0,30,240,0,0,30,240,0,0,0,227,0,0,30,241,0,0,30,241,0,0,1,169,0,0,30,242,0,0,30,242,0,0,0,232,0,0,30,243,0,0,30,243,0,0,1,174,0,0,30,244,0,0,30,244,0,0,0,237,0,0,30,245,0,0,30,245,0,0,1,179,0,0,30,246,0,0,30,246,0,0,0,238,0,0,30,247,0,0,30,247,0,0,1,180,0,0,30,248,0,0,30,248,0,0,0,239,0,0,30,249,0,0,30,249,0,0,1,181,0,0,31,0,0,0,31,1,0,0,2,233,0,0,31,2,0,0,31,7,0,0,2,237,0,0,31,8,0,0,31,9,0,0,2,137,0,0,31,10,0,0,31,15,0,0,2,141,0,0,31,16,0,0,31,17,0,0,2,246,0,0,31,18,0,0,31,21,0,0,2,250,0,0,31,24,0,0,31,25,0,0,2,149,0,0,31,26,0,0,31,29,0,0,2,153,0,0,31,32,0,0,31,33,0,0,2,254,0,0,31,34,0,0,31,39,0,0,3,2,0,0,31,40,0,0,31,41,0,0,2,157,0,0,31,42,0,0,31,47,0,0,2,161,0,0,31,48,0,0,31,49,0,0,3,9,0,0,31,50,0,0,31,55,0,0,3,13,0,0,31,56,0,0,31,57,0,0,2,167,0,0,31,58,0,0,31,63,0,0,2,171,0,0,31,64,0,0,31,65,0,0,3,25,0,0,31,66,0,0,31,69,0,0,3,29,0,0,31,72,0,0,31,73,0,0,2,179,0,0,31,74,0,0,31,77,0,0,2,183,0,0,31,80,0,0,31,81,0,0,3,35,0,0,31,82,0,0,31,87,0,0,3,39,0,0,31,89,0,0,31,89,0,0,2,188,0,0,31,91,0,0,31,91,0,0,2,191,0,0,31,93,0,0,31,93,0,0,2,192,0,0,31,95,0,0,31,95,0,0,2,193,0,0,31,96,0,0,31,97,0,0,3,51,0,0,31,98,0,0,31,103,0,0,3,55,0,0,31,104,0,0,31,105,0,0,2,196,0,0,31,106,0,0,31,111,0,0,2,200,0,0,31,112,0,0,31,113,0,0,2,235,0,0,31,114,0,0,31,115,0,0,2,248,0,0,31,116,0,0,31,117,0,0,3,0,0,0,31,118,0,0,31,119,0,0,3,11,0,0,31,120,0,0,31,121,0,0,3,27,0,0,31,122,0,0,31,123,0,0,3,37,0,0,31,124,0,0,31,125,0,0,3,53,0,0,31,128,0,0,31,129,0,0,3,63,0,0,31,130,0,0,31,135,0,0,3,67,0,0,31,136,0,0,31,143,0,0,2,207,0,0,31,144,0,0,31,145,0,0,3,75,0,0,31,146,0,0,31,151,0,0]);fileData0.push.apply(fileData0,[3,79,0,0,31,152,0,0,31,159,0,0,2,216,0,0,31,160,0,0,31,161,0,0,3,87,0,0,31,162,0,0,31,167,0,0,3,91,0,0,31,168,0,0,31,175,0,0,2,225,0,0,31,176,0,0,31,177,0,0,2,243,0,0,31,178,0,0,31,178,0,0,3,65,0,0,31,179,0,0,31,179,0,0,3,62,0,0,31,180,0,0,31,180,0,0,3,66,0,0,31,182,0,0,31,182,0,0,2,245,0,0,31,183,0,0,31,183,0,0,3,73,0,0,31,184,0,0,31,185,0,0,2,147,0,0,31,186,0,0,31,187,0,0,2,139,0,0,31,188,0,0,31,188,0,0,2,206,0,0,31,189,0,0,31,189,0,0,3,113,0,0,31,190,0,0,31,190,0,0,3,112,0,0,31,191,0,0,31,191,0,0,3,114,0,0,31,192,0,0,31,192,0,0,3,124,0,0,31,193,0,0,31,193,0,0,3,127,0,0,31,194,0,0,31,194,0,0,3,77,0,0,31,195,0,0,31,195,0,0,3,74,0,0,31,196,0,0,31,196,0,0,3,78,0,0,31,198,0,0,31,198,0,0,3,8,0,0,31,199,0,0,31,199,0,0,3,85,0,0,31,200,0,0,31,201,0,0,2,151,0,0,31,202,0,0,31,203,0,0,2,159,0,0,31,204,0,0,31,204,0,0,2,215,0,0,31,205,0,0,31,205,0,0,3,118,0,0,31,206,0,0,31,206,0,0,3,120,0,0,31,207,0,0,31,207,0,0,3,122,0,0,31,208,0,0,31,209,0,0,3,19,0,0,31,210,0,0,31,211,0,0,3,22,0,0,31,214,0,0,31,214,0,0,3,21,0,0,31,215,0,0,31,215,0,0,3,24,0,0,31,216,0,0,31,217,0,0,2,177,0,0,31,218,0,0,31,219,0,0,2,169,0,0,31,221,0,0,31,221,0,0,3,119,0,0,31,222,0,0,31,222,0,0,3,121,0,0,31,223,0,0,31,223,0,0,3,123,0,0,31,224,0,0,31,227,0,0,3,46,0,0,31,228,0,0,31,229,0,0,3,33,0,0,31,230,0,0,31,230,0,0,3,45,0,0,31,231,0,0,31,231,0,0,3,50,0,0,31,232,0,0,31,233,0,0,2,194,0,0,31,234,0,0,31,235,0,0,2,189,0,0,31,236,0,0,31,236,0,0,2,187,0,0,31,237,0,0,31,238,0,0,3,125,0,0,31,239,0,0,31,239,0,0,3,116,0,0,31,242,0,0,31,242,0,0,3,89,0,0,31,243,0,0,31,243,0,0,3,86,0,0,31,244,0,0,31,244,0,0,3,90,0,0,31,246,0,0,31,246,0,0,3,61,0,0,31,247,0,0,31,247,0,0,3,97,0,0,31,248,0,0,31,249,0,0,2,181,0,0,31,250,0,0,31,251,0,0,2,198,0,0,31,252,0,0,31,252,0,0,2,224,0,0,31,253,0,0,31,253,0,0,3,117,0,0,31,254,0,0,31,254,0,0,3,115,0,0,32,7,0,0,32,7,0,0,7,145,0,0,32,18,0,0,32,18,0,0,4,146,0,0,32,19,0,0,32,20,0,0,4,142,0,0,32,21,0,0,32,21,0,0,4,147,0,0,32,22,0,0,32,22,0,0,4,168,0,0,32,24,0,0,32,25,0,0,4,130,0,0,32,26,0,0,32,26,0,0,4,134,0,0,32,28,0,0,32,29,0,0,4,132,0,0,32,30,0,0,32,30,0,0,4,135,0,0,32,32,0,0,32,33,0,0,4,164,0,0,32,34,0,0,32,34,0,0,4,149,0,0,32,38,0,0,32,38,0,0,4,123,0,0,32,47,0,0,32,47,0,0,7,148,0,0,32,48,0,0,32,48,0,0,6,194,0,0,32,50,0,0,32,51,0,0,7,6,0,0,32,53,0,0,32,53,0,0,7,8,0,0,32,57,0,0,32,58,0,0,4,136,0,0,32,60,0,0,32,60,0,0,4,169,0,0,32,61,0,0,32,61,0,0,4,173,0,0,32,62,0,0,32,63,0,0,4,151,0,0,32,68,0,0,32,68,0,0,6,190,0,0,32,71,0,0,32,71,0,0,4,170,0,0,32,72,0,0,32,72,0,0,4,172,0,0,32,73,0,0,32,73,0,0,4,171,0,0,32,112,0,0,32,112,0,0,6,40,0,0,32,113,0,0,32,113,0,0,6,133,0,0,32,116,0,0,32,121,0,0,6,44,0,0,32,125,0,0,32,126,0,0,6,50,0,0,32,127,0,0,32,127,0,0,6,138,0,0,32,128,0,0,32,137,0,0,6,54,0,0,32,141,0,0,32,142,0,0,6,64,0,0,32,148,0,0,32,148,0,0,6,158,0,0,32,161,0,0,32,161,0,0,6,175,0,0,32,164,0,0,32,164,0,0,6,176,0,0,32,166,0,0,32,167,0,0,6,177,0,0,32,169,0,0,32,169,0,0,6,179,0,0,32,171,0,0,32,171,0,0,6,180,0,0,32,172,0,0,32,172,0,0,6,172,0,0,32,174,0,0,32,174,0,0,6,187,0,0,32,177,0,0,32,178,0,0,6,181,0,0,32,180,0,0,32,181,0,0,6,183,0,0,32,184,0,0,32,184,0,0,6,188,0,0,32,185,0,0,32,186,0,0,6,185,0,0,32,189,0,0,32,189,0,0,6,189,0,0,33,19,0,0,33,19,0,0,6,239,0,0,33,22,0,0,33,22,0,0,4,63,0,0,33,23,0,0,33,23,0,0,4,185,0,0,33,32,0,0,33,32,0,0,4,188,0,0,33,34,0,0,33,34,0,0,4,187,0,0,33,38,0,0,33,38,0,0,6,236,0,0,33,46,0,0,33,46,0,0,6,240,0,0,33,80,0,0,33,80,0,0,6,206,0,0,33,81,0,0,33,82,0,0,6,211,0,0,33,83,0,0,33,90,0,0,6,198,0,0,33,91,0,0,33,94,0,0,6,207,0,0,33,137,0,0,33,137,0,0,6,213,0,0,33,144,0,0,33,147,0,0,6,241,0,0,34,2,0,0,34,2,0,0,6,232,0,0,34,6,0,0,34,6,0,0,6,235,0,0,34,15,0,0,34,15,0,0,6,238,0,0,34,17,0,0,34,17,0,0,6,237,0,0,34,18,0,0,34,18,0,0,6,215,0,0,34,21,0,0,34,21,0,0,6,191,0,0,34,25,0,0,34,25,0,0,6,218,0,0,34,26,0,0,34,26,0,0,6,234,0,0,34,30,0,0,34,30,0,0,6,230,0,0,34,43,0,0,34,43,0,0,6,233,0,0,34,72,0,0,34,72,0,0,6,228,0,0,34,96,0,0,34,96,0,0,6,226,0,0,34,100,0,0,34,101,0,0,6,222,0,0,35,28,0,0,35,31,0,0,4,174,0,0,37,160,0,0,37,160,0,0,6,245,0,0,37,178,0,0,37,179,0,0,6,249,0,0,37,182,0,0,37,183,0,0,6,251,0,0,37,188,0,0,37,189,0,0,6,253,0,0,37,192,0,0,37,193,0,0,6,255,0,0,37,198,0,0,37,198,0,0,6,246,0,0,37,201,0,0,37,201,0,0,6,247,0,0,37,202,0,0,37,202,0,0,7,5,0,0,37,204,0,0,37,204,0,0,7,32,0,0,38,16,0,0,38,17,0,0,7,1,0,0,38,106,0,0,38,106,0,0,7,4,0,0,39,19,0,0,39,19,0,0,7,3,0,0,39,82,0,0,39,82,0,0,6,248,0,0,39,230,0,0,39,231,0,0,4,178,0,0,46,34,0,0,46,37,0,0,4,180,0,0,46,58,0,0,46,59,0,0,4,144,0,0,251,0,0,0,251,0,0,0,2,4,0,0,251,1,0,0,251,2,0,0,7,150,0,0,251,3,0,0,251,4,0,0,2,5,0,0,254,255,0,0,254,255,0,0,7,149,0,1,241,106,0,1,241,107,0,0,4,189,0,0,184,0,0,44,75,184,0,9,80,88,177,1,1,142,89,184,1,255,133,184,0,68,29,185,0,9,0,3,95,94,45,184,0,1,44,32,32,69,105,68,176,1,96,45,184,0,2,44,184,0,1,42,33,45,184,0,3,44,32,70,176,3,37,70,82,88,35,89,32,138,32,138,73,100,138,32,70,32,104,97,100,176,4,37,70,32,104,97,100,82,88,35,101,138,89,47,32,176,0,83,88,105,32,176,0,84,88,33,176,64,89,27,105,32,176,0,84,88,33,176,64,101,89,89,58,45,184,0,4,44,32,70,176,4,37,70,82,88,35,138,89,32,70,32,106,97,100,176,4,37,70,32,106,97,100,82,88,35,138,89,47,253,45,184,0,5,44,75,32,176,3,38,80,88,81,88,176,128,68,27,176,64,68,89,27,33,33,32,69,176,192,80,88,176,192,68,27,33,89,89,45,184,0,6,44,32,32,69,105,68,176,1,96,32,32,69,125,105,24,68,176,1,96,45,184,0,7,44,184,0,6,42,45,184,0,8,44,75,32,176,3,38,83,88,176,64,27,176,0,89,138,138,32,176,3,38,83,88,35,33,176,128,138,138,27,138,35,89,32,176,3,38,83,88,35,33,184,0,192,138,138,27,138,35,89,32,176,3,38,83,88,35,33,184,1,0,138,138,27,138,35,89,32,176,3,38,83,88,35,33,184,1,64,138,138,27,138,35,89,32,184,0,3,38,83,88,176,3,37,69,184,1,128,80,88,35,33,184,1,128,35,33,27,176,3,37,69,35,33,35,33,89,27,33,89,68,45,184,0,9,44,75,83,88,69,68,27,33,33,89,45,0,176,0,43,0,178,1,2,2,43,1,178,3,2,2,43,1,183,3,120,94,84,60,30,0,8,43,183,4,91,74,64,46,30,0,8,43,0,183,1,144,120,96,60,44,0,8,43,183,2,144,120,96,60,44,0,8,43,0,178,5,8,7,43,176,0,32,69,125,105,24,68,75,184,0,96,82,88,176,1,27,176,0,89,176,1,142,0,0,0,20,0,36,0,36,0,46,0,61,0,0,0,12,255,51,0,12,1,230,0,12,2,6,0,12,2,62,0,12,2,126,0,12,2,144,0,12,2,200,0,12,0,0,0,0,0,0,0,0,0,200,0,0,0,200,0,0,0,200,0,0,0,200,0,0,1,100,0,0,2,44,0,0,2,204,0,0,3,84,0,0,3,208,0,0,4,64,0,0,5,0,0,0,5,120,0,0,5,184,0,0,6,32,0,0,6,188,0,0,7,8,0,0,7,200,0,0,8,108,0,0,9,20,0,0,9,160,0,0,10,136,0,0,11,56,0,0,12,24,0,0,12,112,0,0,12,244,0,0,13,112,0,0,14,92,0,0,15,20,0,0,15,148,0,0,16,8,0,0,17,4,0,0,17,240,0,0,18,144,0,0,19,124,0,0,20,64,0,0,20,224,0,0,22,96,0,0,22,252,0,0,23,108,0,0,24,0,0,0,24,152,0,0,24,248,0,0,25,228,0,0,26,132,0,0,27,44,0,0,28,24,0,0,29,8,0,0,29,148,0,0,30,112,0,0,31,20,0,0,31,172,0,0,32,36,0,0,32,244,0,0,33,148,0,0,34,60,0,0,34,176,0,0,34,200,0,0,34,224,0,0,34,248,0,0,35,16,0,0,35,40,0,0,35,64,0,0,35,88,0,0,35,112,0,0,35,136,0,0,35,160,0,0,35,184,0,0,35,208,0,0,35,232,0,0,36,0,0,0,36,24,0,0,36,56,0,0,36,80,0,0,36,104,0,0,36,128,0,0,36,152,0,0,36,184,0,0,37,140,0,0,38,88,0,0,38,112,0,0,38,136,0,0,39,100,0,0,39,124,0,0,39,148,0,0,39,172,0,0,39,196,0,0,39,220,0,0,39,244,0,0,40,12,0,0,40,36,0,0,40,60,0,0,40,76,0,0,40,100,0,0,40,124,0,0,40,148,0,0,40,172,0,0,40,196,0,0,40,220,0,0,40,244,0,0,41,12,0,0,41,36,0,0,41,60,0,0,41,84,0,0,41,108,0,0,41,132,0,0,41,156,0,0,41,180,0,0,41,212,0,0,42,152,0,0,42,176,0,0,42,200,0,0,42,224,0,0,42,248,0,0,43,16,0,0,43,40,0,0,43,64,0,0,43,88,0,0,43,112,0,0,44,100,0,0,44,124,0,0,44,148,0,0,44,172,0,0,45,108,0,0,45,132,0,0,45,156,0,0,45,180,0,0,45,204,0,0,45,228,0,0,45,252,0,0,46,20,0,0,46,44,0,0,46,68,0,0,46,92,0,0,46,216,0,0,46,240,0,0,47,8,0,0,47,32,0,0,47,56,0,0,47,80,0,0,47,104,0,0,47,128,0,0,47,152,0,0,47,176,0,0,47,200,0,0,47,232,0,0,48,0,0,0,48,132,0,0,48,156,0,0,48,180,0,0,48,204,0,0,48,228,0,0,48,252,0,0,49,20,0,0,49,44,0,0,49,68,0,0,49,92,0,0,49,116,0,0,49,140,0,0,49,164,0,0,49,188,0,0,49,212,0,0,49,236,0,0,50,4,0,0,50,28,0,0,50,52,0,0,50,76,0,0,50,100,0,0,50,124,0,0,50,148,0,0,50,172,0,0,50,196,0,0,50,220,0,0,50,252,0,0,51,20,0,0,51,44,0,0,52,64,0,0,52,252,0,0,53,216,0,0,53,240,0,0,54,8,0,0,54,32,0,0,54,56,0,0,54,80,0,0,55,56,0,0,55,80,0,0,55,104,0,0,55,128,0,0,55,152,0,0,55,176,0,0,55,208,0,0,55,232,0,0,56,0,0,0,56,24,0,0,56,48,0,0,56,72,0,0,56,96,0,0,56,120,0,0,56,144,0,0,57,104,0,0,57,128,0,0,57,152,0,0,57,176,0,0,57,200,0,0,57,224,0,0,58,100,0,0,58,124,0,0,58,148,0,0,58,172,0,0,58,196,0,0,58,220,0,0,58,244,0,0,59,12,0,0,59,36,0,0,59,60,0,0,59,84,0,0,59,108,0,0,59,132,0,0,59,156,0,0,59,180,0,0,59,204,0,0,59,228,0,0,60,176,0,0,61,96,0,0,61,120,0,0,61,144,0,0,61,168,0,0,61,192,0,0,61,216,0,0,61,240,0,0,62,8,0,0,62,32,0,0,62,56,0,0,62,80,0,0,62,104,0,0,62,128,0,0,62,152,0,0,62,176,0,0,62,200,0,0,62,224,0,0,62,248,0,0,63,16,0,0,63,40,0,0,63,64,0,0,63,88,0,0,63,112,0,0,64,48,0,0,64,180,0,0,65,112,0,0,66,64,0,0,66,196,0,0,66,220,0,0,66,244,0,0,67,12,0,0,67,36,0,0,67,60,0,0,67,84,0,0,67,108,0,0,67,132,0,0,67,156,0,0,67,180,0,0,67,204,0,0,67,228,0,0,67,252,0,0,68,20,0,0,68,44,0,0,68,76,0,0,68,100,0,0,68,124,0,0,68,148,0,0,68,172,0,0,68,204,0,0,70,0,0,0,71,132,0,0,71,156,0,0,71,180,0,0,72,196,0,0,72,220,0,0,72,244,0,0,73,12,0,0,73,36,0,0,73,60,0,0,73,84,0,0,73,108,0,0,73,132,0,0,73,156,0,0,74,172,0,0,74,196,0,0,74,220,0,0,74,244,0,0,75,12,0,0,75,36,0,0,75,60,0,0,75,84,0,0,75,108,0,0,75,132,0,0,75,156,0,0,75,180,0,0,75,204,0,0,75,228,0,0,75,252,0,0,76,20,0,0,76,52,0,0,77,56,0,0,77,80,0,0,77,104,0,0,77,128,0,0,77,152,0,0,77,176,0,0,77,200,0,0,77,224,0,0,77,248,0,0,78,16,0,0,78,40,0,0,78,64,0,0,78,88,0,0,78,112,0,0,79,48,0,0,79,72,0,0,79,96,0,0,79,120,0,0,79,144,0,0,79,168,0,0,79,192,0,0,79,216,0,0,79,240,0,0,80,8,0,0,80,176,0,0,81,44,0,0,81,68,0,0,81,132,0,0,81,156,0,0,81,180,0,0,81,204,0,0,81,228,0,0,82,108,0,0,82,132,0,0,82,156,0,0,82,180,0,0,82,204,0,0,82,228,0,0,83,4,0,0,83,28,0,0,83,176,0,0,83,200,0,0,83,224,0,0,83,248,0,0,84,16,0,0,84,40,0,0,84,64,0,0,84,88,0,0,84,112,0,0,84,136,0,0,84,160,0,0,84,184,0,0,84,208,0,0,84,232,0,0,85,0,0,0,85,24,0,0,85,48,0,0,85,72,0,0,85,96,0,0,85,120,0,0,85,144,0,0,85,168,0,0,85,192,0,0,85,216,0,0,85,240,0,0,86,8,0,0,86,32,0,0,86,64,0,0,86,88,0,0,86,112,0,0,87,128,0,0,88,172,0,0,89,132,0,0,89,156,0,0,89,180,0,0,89,204,0,0,89,228,0,0,89,252,0,0,90,236,0,0,91,4,0,0,91,28,0,0,91,52,0,0,91,76,0,0,91,100,0,0,91,132,0,0,91,156,0,0,91,180,0,0,91,204,0,0,91,228,0,0,91,252,0,0,92,20,0,0,92,44,0,0,92,68,0,0,93,76,0,0,93,100,0,0,93,124,0,0,93,148,0,0,93,172,0,0,93,196,0,0,93,220,0,0,94,168,0,0,94,192,0,0,94,216,0,0,94,240,0,0,95,8,0,0,95,32,0,0,95,56,0,0,95,80,0,0,95,104,0,0,95,128,0,0,95,152,0,0,95,176,0,0,95,200,0,0,95,224,0,0,95,248,0,0,96,16,0,0,96,40,0,0,97,0,0,0,97,196,0,0,97,220,0,0,97,244,0,0,98,12,0,0,98,36,0,0,98,60,0,0,98,84,0,0,98,108,0,0,98,132,0,0,98,156,0,0,98,180,0,0,98,204,0,0,98,228,0,0,98,252,0,0,99,20,0,0,99,44,0,0,99,68,0,0,99,92,0,0,99,116,0,0,99,140,0,0,99,164,0,0,99,188,0,0,99,212,0,0,100,220,0,0,101,208,0,0,102,144,0,0,102,244,0,0,103,220,0,0,104,212,0,0,105,188,0,0,106,208,0,0,107,108,0,0,108,108,0,0,109,120,0,0,110,140,0,0,111,80,0,0,112,60,0,0,112,76,0,0,113,16,0,0,114,16,0,0,114,232,0,0,115,188,0,0,116,148,0,0,117,44,0,0,118,72,0,0,119,76,0,0,120,4,0,0,120,216,0,0,121,240,0,0,122,152,0,0,123,92,0,0,124,64,0,0,124,172,0,0,125,64,0,0,125,172,0,0,126,184,0,0,127,136,0,0,127,224,0,0,128,204,0,0,129,24,0,0,129,252,0,0,130,236,0,0,131,244,0,0,132,176,0,0,133,112,0,0,134,8,0,0,134,204,0,0,135,168,0,0,136,168,0,0,137,52,0,0,137,192,0,0,138,112,0,0,139,24,0,0,139,132,0,0,140,28,0,0,140,184,0,0,141,204,0,0,142,96,0,0,143,40,0,0,143,180,0,0,144,148,0,0,145,108,0,0,146,20,0,0,146,128,0,0,147,76,0,0,147,244,0,0,148,104,0,0,149,4,0,0,149,208,0,0,150,144,0,0,151,24,0,0,151,160,0,0,152,76,0,0,152,252,0,0,153,120,0,0,154,60,0,0,155,48,0,0,155,72,0,0,155,96,0,0,156,92,0,0,157,228,0,0,158,76,0,0,158,100,0,0,158,124,0,0,158,148,0,0,158,172,0,0,158,196,0,0,158,220,0,0,158,244,0,0,159,12,0,0,159,36,0,0,159,60,0,0,159,236,0,0,160,4,0,0,160,192,0,0,160,208,0,0,160,232,0,0,161,0,0,0,161,24,0,0,161,48,0,0,161,72,0,0,161,96,0,0,161,120,0,0,161,144,0,0,161,168,0,0,161,192,0,0,161,216,0,0,161,240,0,0,162,8,0,0,162,32,0,0,162,56,0,0,162,88,0,0,162,112,0,0,162,136,0,0,162,160,0,0,162,184,0,0,162,216,0,0,163,252,0,0,164,12,0,0,164,36,0,0,164,60,0,0,164,84,0,0,164,108,0,0,164,132,0,0,164,156,0,0,164,180,0,0,164,204,0,0,165,12,0,0,165,36,0,0,165,60,0,0,165,84,0,0,165,108,0,0,165,132,0,0,165,164,0,0,165,188,0,0,166,44,0,0,166,68,0,0,166,84,0,0,166,100,0,0,166,180,0,0,167,32,0,0,167,48,0,0,167,64,0,0,167,80,0,0,168,20,0,0,168,36,0,0,168,52,0,0,168,168,0,0,168,184,0,0,168,200,0,0,169,64,0,0,169,80,0,0,169,184,0,0,169,200,0,0,170,52,0,0,170,68,0,0,170,84,0,0,171,32,0,0,171,48,0,0,171,204,0,0,172,168,0,0,172,192,0,0,172,216,0,0,172,240,0,0,173,8,0,0,173,32,0,0,173,56,0,0,173,80,0,0,173,104,0,0,173,128,0,0,174,164,0,0,175,160,0,0,176,84,0,0,177,88,0,0,178,80,0,0,179,32,0,0,179,208,0,0,180,124,0,0,180,220,0,0,181,192,0,0,182,108,0,0,183,68,0,0,183,224,0,0,185,32,0,0,185,200,0,0,186,140,0,0,187,84,0,0,188,28,0,0,188,160,0,0,189,100,0,0,190,72,0,0,191,8,0,0,191,232,0,0,192,228,0,0,193,148,0,0,194,144,0,0,195,120,0,0,196,108,0,0,196,132,0,0,196,156,0,0,196,180,0,0,196,204,0,0,196,228,0,0,196,252,0,0,197,20,0,0,197,44,0,0,197,68,0,0,197,92,0,0,197,116,0,0,197,140,0,0,197,164,0,0,197,188,0,0,197,212,0,0,197,236,0,0,198,4,0,0,198,28,0,0,198,52,0,0,198,76,0,0,198,100,0,0,198,124,0,0,198,148,0,0,198,172,0,0,198,196,0,0,198,220,0,0,198,244,0,0,199,12,0,0,199,36,0,0,199,60,0,0,199,84,0,0,199,108,0,0,199,132,0,0,199,156,0,0,199,180,0,0,199,204,0,0,199,228,0,0,199,252,0,0,200,20,0,0,200,44,0,0,200,68,0,0,200,92,0,0,200,116,0,0,200,140,0,0,200,164,0,0,200,188,0,0,200,212,0,0,200,236,0,0,201,4,0,0,201,28,0,0,201,52,0,0,201,76,0,0,201,100,0,0,201,124,0,0,201,148,0,0,201,172,0,0,201,196,0,0,201,220,0,0,201,244,0,0,202,12,0,0,202,36,0,0,202,60,0,0,202,84,0,0,202,108,0,0,202,132,0,0,202,156,0,0,202,180,0,0,202,204,0,0,202,228,0,0,202,252,0,0,203,20,0,0,203,44,0,0,203,68,0,0,203,92,0,0,203,116,0,0,203,140,0,0,203,164,0,0,203,188,0,0,203,212,0,0,203,236,0,0,204,4,0,0,204,36,0,0,204,68,0,0,204,100,0,0,204,132,0,0,204,164,0,0,204,196,0,0,204,228,0,0,205,4,0,0,205,28,0,0,205,60,0,0,205,92,0,0,205,124,0,0,205,156,0,0,205,188,0,0,205,220,0,0,205,252,0,0,206,28,0,0,206,52,0,0,206,84,0,0,206,116,0,0,206,148,0,0,206,180,0,0,206,212,0,0,206,244,0,0,207,20,0,0,207,52,0,0,207,76,0,0,207,100,0,0,207,124,0,0,207,148,0,0,207,172,0,0,207,196,0,0,207,220,0,0,207,244,0,0,208,12,0,0,208,36,0,0,208,60,0,0,208,84,0,0,208,108,0,0,208,132,0,0,208,156,0,0,208,180,0,0,208,204,0,0,208,228,0,0,208,252,0,0,209,20,0,0,209,44,0,0,209,68,0,0,209,92,0,0,209,116,0,0,209,140,0,0,209,164,0,0,209,188,0,0,209,212,0,0,209,236,0,0,210,4,0,0,210,28,0,0,210,52,0,0,210,76,0,0,210,100,0,0,210,124,0,0,210,148,0,0,210,172,0,0,210,196,0,0,210,220,0,0,210,244,0,0,211,12,0,0,211,36,0,0,211,60,0,0,211,84,0,0,211,108,0,0,211,132,0,0,211,156,0,0,211,180,0,0,211,204,0,0,211,228,0,0,211,252,0,0,212,20,0,0,212,44,0,0,212,68,0,0,212,92,0,0,212,116,0,0,212,140,0,0,212,164,0,0,212,188,0,0,212,212,0,0,212,236,0,0,213,4,0,0,213,28,0,0,213,52,0,0,213,76,0,0,213,100,0,0,213,124,0,0,213,148,0,0,213,172,0,0,213,196,0,0,213,220,0,0,213,244,0,0,214,12,0,0,214,36,0,0,214,60,0,0,214,84,0,0,214,108,0,0,214,132,0,0,214,156,0,0,214,180,0,0,214,204,0,0,214,228,0,0,214,252,0,0,215,20,0,0,215,44,0,0,215,68,0,0,215,100,0,0,215,132,0,0,215,164,0,0,215,196,0,0,215,228,0,0,216,4,0,0,216,36,0,0,216,68,0,0,216,100,0,0,216,132,0,0,216,164,0,0,216,188,0,0,216,220,0,0,216,252,0,0,217,28,0,0,217,60,0,0,217,92,0,0,217,124,0,0,217,156,0,0,217,188,0,0,217,220,0,0,217,252,0,0,218,28,0,0,218,52,0,0,218,84,0,0,218,116,0,0,218,148,0,0,218,180,0,0,218,212,0,0,218,244,0,0,219,20,0,0,219,52,0,0,219,84,0,0,219,116,0,0,219,148,0,0,220,128,0,0,221,64,0,0,221,244,0,0,222,80,0,0,222,196,0,0,222,220,0,0,222,240,0,0,223,4,0,0,223,44,0,0,223,96,0,0,223,116,0,0,223,168,0,0,223,188,0,0,223,208,0,0,224,40,0,0,224,60,0,0,224,80,0,0,224,100,0,0,224,120,0,0,224,140,0,0,224,160,0,0,224,180,0,0,224,200,0,0,224,220,0,0,224,240,0,0,225,4,0,0,225,24,0,0,225,44,0,0,225,64,0,0,225,84,0,0,225,172,0,0,226,8,0,0,226,60,0,0,226,76,0,0,226,168,0,0,227,4,0,0,227,84,0,0,227,164,0,0,228,128,0,0,229,88,0,0,229,104,0,0,230,0,0,0,230,16,0,0,230,32,0,0,230,224,0,0,230,240,0,0,232,12,0,0,233,124,0,0,233,232,0,0,234,200,0,0,235,88,0,0,235,112,0,0,236,32,0,0,236,228,0,0,237,40,0,0,237,196,0,0,237,212,0,0,237,228,0,0,237,244,0,0,238,4,0,0,238,20,0,0,238,36,0,0,238,52,0,0,238,204,0,0,239,140,0,0,239,156,0,0,240,12,0,0,240,144,0,0,241,8,0,0,241,136,0,0,242,24,0,0,242,184,0,0,243,56,0,0,243,232,0,0,244,212,0,0,245,128,0,0,245,152,0,0,245,176,0,0,246,120,0,0,246,144,0,0,247,68,0,0,247,84,0,0,247,100,0,0,247,124,0,0,248,16,0,0,248,32,0,0,248,252,0,0,249,192,0,0,250,80,0,0,250,104,0,0,251,60,0,0,251,140,0,0,251,164,0,0,251,188,0,0,252,44,0,0,252,200,0,0,253,120,0,0,254,28,0,0,254,120,0,0,255,0,0,1,0,56,0,1,2,4,0,1,2,188,0,1,3,180,0,1,4,124,0,1,5,84,0,1,5,208,0,1,6,128,0,1,7,132,0,1,7,244,0,1,8,128,0,1,9,48,0,1,9,64,0,1,9,228,0,1,10,176,0,1,11,80,0,1,11,212,0,1,11,228,0,1,11,252,0,1,13,180,0,1,14,100,0,1,14,124,0,1,14,140,0,1,14,164,0,1,14,180,0,1,14,204,0,1,14,228,0,1,14,244,0,1,15,12,0,1,15,36,0,1,15,52,0,1,16,40,0,1,16,220,0,1,17,44,0,1,17,216,0,1,17,232,0,1,18,240,0,1,20,144,0,1,20,240,0,1,21,200,0,1,22,96,0,1,22,120,0,1,23,32,0,1,23,240,0,1,24,44,0,1,24,184,0,1,25,132,0,1,25,240,0,1,26,0,0,1,26,88,0,1,26,104,0,1,26,120,0,1,26,208,0,1,26,224,0,1,28,120,0,1,28,136,0,1,28,248,0,1,29,116,0,1,29,232,0,1,30,104,0,1,30,240,0,1,31,136,0,1,32,0,0,1,32,168,0,1,33,144,0,1,34,44,0,1,34,68,0,1,34,92,0,1,35,88,0,1,35,112,0,1,36,24,0,1,36,40,0,1,36,56,0,1,36,80,0,1,36,232,0,1,36,248,0,1,37,200,0,1,38,104,0,1,38,120,0,1,38,144,0,1,39,108,0,1,39,184,0,1,39,208,0,1,39,232,0,1,40,88,0,1,40,236,0,1,40,252,0,1,41,152,0,1,41,236,0,1,42,100,0,1,43,136,0,1,45,12,0,1,45,184,0,1,46,160,0,1,47,104,0,1,48,36,0,1,48,152,0,1,49,76,0,1,50,44,0,1,50,124,0,1,51,0,0,1,51,180,0,1,52,64,0,1,52,228,0,1,53,172,0,1,54,64,0,1,54,80,0,1,54,104,0,1,56,76,0,1,56,244,0,1,57,4,0,1,57,28,0,1,57,44,0,1,57,68,0,1,57,84,0,1,57,108,0,1,57,132,0,1,57,148,0,1,57,172,0,1,57,196,0,1,58,204,0,1,60,48,0,1,61,156,0,1,62,28,0,1,62,144,0,1,63,44,0,1,64,24,0,1,64,192,0,1,65,132,0,1,66,84,0,1,66,196,0,1,67,232,0,1,68,184,0,1,69,104,0,1,70,36,0,1,70,164,0,1,71,0,0,1,71,160,0,1,71,176,0,1,71,192,0,1,71,208,0,1,71,224,0,1,72,80,0,1,72,96,0,1,72,112,0,1,73,36,0,1,73,220,0,1,74,92,0,1,74,208,0,1,75,112,0,1,76,80,0,1,76,228,0,1,77,152,0,1,77,168,0,1,78,4,0,1,78,20,0,1,78,208,0,1,78,224,0,1,79,60,0,1,79,220,0,1,79,236,0,1,79,252,0,1,80,12,0,1,80,28,0,1,80,120,0,1,80,136,0,1,80,152,0,1,81,24,0,1,81,140,0,1,82,44,0,1,83,28,0,1,83,188,0,1,84,124,0,1,85,76,0,1,85,188,0,1,86,224,0,1,87,172,0,1,87,240,0,1,88,68,0,1,88,92,0,1,88,116,0,1,88,148,0,1,88,240,0,1,89,76,0,1,89,244,0,1,90,156,0,1,90,200,0,1,90,224,0,1,91,44,0,1,91,120,0,1,91,144,0,1,91,168,0,1,91,188,0,1,91,216,0,1,92,8,0,1,92,56,0,1,92,80,0,1,92,104,0,1,92,144,0,1,92,160,0,1,92,200,0,1,92,240,0,1,93,24,0,1,93,64,0,1,93,104,0,1,93,120,0,1,93,140,0,1,93,216,0,1,94,0,0,1,94,40,0,1,94,108,0,1,94,176,0,1,94,240,0,1,95,40,0,1,95,96,0,1,96,32,0,1,96,212,0,1,97,8,0,1,97,44,0,1,97,96,0,1,97,144,0,1,97,224,0,1,98,52,0,1,98,200,0,1,99,172,0,1,100,16,0,1,100,84,0,1,100,108,0,1,100,132,0,1,100,156,0,1,100,180,0,1,101,120,0,1,101,164,0,1,101,208,0,1,101,252,0,1,102,40,0,1,102,128,0,1,102,216,0,1,103,4,0,1,103,48,0,1,103,92,0,1,103,136,0,1,104,144,0,1,105,116,0,1,106,128,0,1,107,52,0,1,108,92,0,1,109,56,0,1,109,252,0,1,111,68,0,1,112,156,0,1,113,148,0,1,113,164,0,1,114,60,0,1,115,0,0,1,115,152,0,1,116,24,0,1,116,148,0,1,116,244,0,1,117,168,0,1,118,36,0,1,118,100,0,1,118,204,0,1,119,104,0,1,119,180,0,1,120,124,0,1,121,28,0,1,121,192,0,1,122,56,0,1,123,24,0,1,123,188,0,1,124,148,0,1,124,236,0,1,125,112,0,1,125,224,0,1,126,168,0,1,127,112,0,1,127,228,0,1,128,88,0,1,128,112,0,1,128,136,0,1,128,160,0,1,128,184,0,1,128,208,0,1,128,232,0,1,129,0,0,1,129,24,0,1,129,48,0,1,129,72,0,1,129,96,0,1,129,120,0,1,129,144,0,1,129,168,0,1,129,192,0,1,129,224,0,1,129,248,0,1,130,16,0,1,130,40,0,1,130,64,0,1,130,96,0,1,131,48,0,1,131,232,0,1,132,0,0,1,132,24,0,1,132,252,0,1,133,20,0,1,133,44,0,1,133,68,0,1,133,92,0,1,133,116,0,1,133,140,0,1,133,164,0,1,133,188,0,1,133,212,0,1,133,228,0,1,133,252,0,1,134,20,0,1,134,44,0,1,134,68,0,1,134,92,0,1,134,116,0,1,134,140,0,1,134,164,0,1,134,188,0,1,134,212,0,1,134,236,0,1,135,4,0,1,135,28,0,1,135,52,0,1,135,76,0,1,135,108,0,1,136,44,0,1,136,68,0,1,136,92,0,1,136,116,0,1,136,140,0,1,136,164,0,1,136,188,0,1,136,212,0,1,136,236,0,1,137,4,0,1,137,236,0,1,138,4,0,1,138,28,0,1,138,52,0,1,138,240,0,1,139,8,0,1,139,32,0,1,139,56,0,1,139,80,0,1,139,104,0,1,139,128,0,1,139,152,0,1,139,176,0,1,139,200,0,1,139,224,0,1,140,92,0,1,140,116,0,1,140,140,0,1,140,164,0,1,140,188,0,1,140,212,0,1,140,236,0,1,141,4,0,1,141,28,0,1,141,52,0,1,141,76,0,1,141,108,0,1,141,132,0,1,142,24,0,1,142,48,0,1,142,72,0,1,142,96,0,1,142,120,0,1,142,144,0,1,142,168,0,1,142,192,0,1,142,216,0,1,142,240,0,1,143,8,0,1,143,32,0,1,143,56,0,1,143,80,0,1,143,104,0,1,143,128,0,1,143,152,0,1,143,176,0,1,143,200,0,1,143,224,0,1,143,248,0,1,144,16,0,1,144,40,0,1,144,64,0,1,144,88,0,1,144,112,0,1,144,144,0,1,145,168,0,1,146,84,0,1,147,44,0,1,147,68,0,1,147,92,0,1,147,116,0,1,147,140,0,1,147,164,0,1,148,136,0,1,148,160,0,1,148,184,0,1,148,208,0,1,148,232,0,1,149,0,0,1,149,24,0,1,149,48,0,1,149,80,0,1,149,104,0,1,149,128,0,1,149,152,0,1,149,176,0,1,149,200,0,1,149,224,0,1,149,248,0,1,150,16,0,1,150,40,0,1,151,8,0,1,151,32,0,1,151,56,0,1,151,80,0,1,151,104,0,1,151,128,0,1,152,8,0,1,152,32,0,1,152,56,0,1,152,80,0,1,152,104,0,1,152,128,0,1,152,152,0,1,152,176,0,1,152,200,0,1,152,224,0,1,152,248,0,1,153,16,0,1,153,40,0,1,153,64,0,1,153,88,0,1,153,112,0,1,153,136,0,1,154,72,0,1,154,252,0,1,155,20,0,1,155,44,0,1,155,68,0,1,155,92,0,1,155,116,0,1,155,140,0,1,155,164,0,1,155,188,0,1,155,212,0,1,155,236,0,1,156,4,0,1,156,28,0,1,156,52,0,1,156,76,0,1,156,100,0,1,156,124,0,1,156,148,0,1,156,172,0,1,156,196,0,1,156,220,0,1,156,244,0,1,157,12,0,1,157,192,0,1,158,60,0,1,159,0,0,1,159,212,0,1,160,80,0,1,161,12,0,1,161,28,0,1,161,44,0,1,161,124,0,1,161,232,0,1,161,248,0,1,162,8,0,1,162,24,0,1,162,220,0,1,162,236,0,1,162,252,0,1,163,104,0,1,163,120,0,1,163,136,0,1,164,0,0,1,164,16,0,1,164,104,0,1,164,120,0,1,164,236,0,1,164,252,0,1,165,12,0,1,165,200,0,1,165,216,0,1,166,104,0,1,167,72,0,1,167,96,0,1,167,120,0,1,168,36,0,1,168,176,0,1,169,164,0,1,169,180,0,1,170,76,0,1,170,92,0,1,170,108,0,1,171,40,0,1,171,56,0,1,172,80,0,1,173,36,0,1,173,176,0,1,173,200,0,1,174,116,0,1,175,12,0,1,175,28,0,1,175,44,0,1,175,60,0,1,175,76,0,1,175,92,0,1,175,108,0,1,175,124,0,1,176,16,0,1,176,204,0,1,176,220,0,1,177,76,0,1,177,200,0,1,178,60,0,1,178,188,0,1,179,68,0,1,179,220,0,1,180,84,0,1,181,0,0,1,181,236,0,1,182,140,0,1,182,164,0,1,182,188,0,1,183,132,0,1,183,156,0,1,184,76,0,1,184,92,0,1,184,108,0,1,184,132,0,1,185,24,0,1,185,40,0,1,185,248,0,1,186,176,0,1,187,64,0,1,187,88,0,1,187,112,0,1,187,136,0,1,187,236,0,1,188,132,0,1,189,68,0,1,189,228,0,1,190,64,0,1,190,196,0,1,191,244,0,1,192,232,0,1,193,172,0,1,194,112,0,1,194,248,0,1,195,160,0,1,195,176,0,1,196,80,0,1,197,28,0,1,197,180,0,1,198,48,0,1,198,64,0,1,198,88,0,1,198,112,0,1,198,128,0,1,198,152,0,1,198,168,0,1,198,192,0,1,198,216,0,1,198,232,0,1,199,0,0,1,199,24,0,1,200,128,0,1,201,0,0,1,201,92,0,1,201,244,0,1,202,200,0,1,203,104,0,1,204,44,0,1,204,252,0,1,205,104,0,1,206,124,0,1,207,76,0,1,207,184,0,1,208,44,0,1,208,200,0,1,209,104,0,1,209,120,0,1,209,144,0,1,209,160,0,1,209,176,0,1,209,200,0,1,209,224,0,1,209,240,0,1,210,24,0,1,210,64,0,1,210,132,0,1,210,196,0,1,210,252,0,1,211,52,0,1,211,244,0,1,212,168,0,1,212,188,0,1,212,208,0,1,212,228,0,1,212,248,0,1,213,12,0,1,213,32,0,1,213,52,0,1,213,72,0,1,213,92,0,1,213,112,0,1,213,132,0,1,213,152,0,1,213,172,0,1,213,192,0,1,213,212,0,1,213,232,0,1,213,252,0,1,214,16,0,1,214,36,0,1,214,56,0,1,214,76,0,1,214,96,0,1,214,116,0,1,214,136,0,1,214,156,0,1,214,176,0,1,214,196,0,1,214,216,0,1,215,72,0,1,215,144,0,1,216,16,0,1,216,200,0,1,217,80,0,1,217,232,0,1,218,152,0,1,218,248,0,1,219,224,0,1,220,140,0,1,220,208,0,1,221,16,0,1,221,88,0,1,221,192,0,1,221,212,0,1,221,232,0,1,221,252,0,1,222,16,0,1,222,36,0,1,222,56,0,1,222,76,0,1,222,96,0,1,222,116,0,1,222,136,0,1,222,156,0,1,222,176,0,1,222,196,0,1,222,216,0,1,222,232,0,1,222,248,0,1,223,8,0,1,223,120,0,1,224,20,0,1,224,144,0,1,224,232,0,1,225,52,0,1,225,116,0,1,226,0,0,1,226,68,0,1,226,104,0,1,226,184,0,1,227,28,0,1,227,72,0,1,227,216,0,1,228,68,0,1,228,192,0,1,229,28,0,1,229,204,0,1,230,64,0,1,230,248,0,1,231,48,0,1,231,152,0,1,231,232,0,1,232,148,0,1,233,40,0,1,233,132,0,1,233,216,0,1,234,124,0,1,235,44,0,1,235,164,0,1,236,76,0,1,236,240,0,1,237,100,0,1,238,148,0,1,238,240,0,1,239,60,0,1,239,180,0,1,240,24,0,1,240,92,0,1,241,4,0,1,241,116,0,1,241,236,0,1,242,152,0,1,243,64,0,1,243,168,0,1,244,112,0,1,244,244,0,1,245,124,0,1,245,204,0,1,246,92,0,1,246,236,0,1,247,132,0,1,247,212,0,1,248,48,0,1,248,120,0,1,248,156,0,1,248,232,0,1,249,176,0,1,250,108,0,1,251,40,0,1,251,188,0,1,252,120,0,1,253,80,0,1,253,116,0,1,253,212,0,1,253,248,0,1,254,32,0,1,254,72,0,1,254,192,0,1,255,172,0,2,0,192,0,2,1,156,0,2,2,96,0,2,2,248,0,2,4,0,0,2,4,180,0,2,5,96,0,2,6,180,0,2,7,192,0,2,9,40,0,2,9,248,0,2,11,32,0,2,11,248,0,2,13,20,0,2,13,252,0,2,15,24,0,2,15,240,0,2,16,180,0,2,17,132,0,2,18,52,0,2,18,160,0,2,19,112,0,2,19,164,0,2,19,180,0,2,19,196,0,2,19,232,0,2,21,64,0,2,21,100,0,2,21,136,0,2,21,172,0,2,21,208,0,2,21,244,0,2,22,24,0,2,22,60,0,2,22,96,0,2,22,132,0,2,22,168,0,2,22,204,0,2,22,240,0,2,23,20,0,2,23,56,0,2,23,92,0,2,23,128,0,2,23,164,0,2,24,148,0,2,24,184,0,2,25,0,0,2,25,40,0,2,25,128,0,2,25,252,0,2,26,16,0,2,26,40,0,2,26,104,0,2,26,168,0,2,26,252,0,2,27,76,0,2,27,188,0,2,28,0,0,2,28,120,0,2,28,244,0,2,29,12,0,2,29,56,0,2,30,80,0,2,30,96,0,2,31,48,0,2,31,192,0,2,32,12,0,2,32,28,0,2,32,44,0,2,32,140,0,2,32,204,0,2,33,136,0,2,34,100,0,2,34,160,0,2,34,244,0,2,35,48,0,2,35,128,0,2,35,168,0,2,35,212,0,2,36,148,0,2,36,220,0,2,37,12,0,2,37,76,0,2,37,124,0,2,37,216,0,2,38,8,0,2,38,76,0,2,38,132,0,2,38,232,0,2,39,80,0,2,40,36,0,2,40,152,0,2,41,32,0,2,41,152,0,2,41,196,0,2,41,220,0,2,42,8,0,2,42,24,0,2,42,40,0,2,42,56,0,2,42,76,0,2,42,96,0,2,42,116,0,2,42,136,0,2,42,156,0,2,42,176,0,2,42,228,0,2,42,248,0,2,43,8,0,2,43,24,0,2,43,40,0,2,43,60,0,2,43,80,0,2,43,100,0,2,43,120,0,2,43,140,0,2,43,160,0,2,43,180,0,2,43,200,0,2,43,220,0,2,46,40,0,2,46,92,0,2,46,144,0,2,46,184,0,2,46,236,0,2,47,32,0,2,47,72,0,2,47,152,0,2,47,232,0,2,48,112,0,2,48,240,0,2,49,20,0,2,49,68,0,2,49,84,0,2,49,100,0,2,49,204,0,2,50,52,0,2,50,148,0,2,50,252,0,2,51,52,0,2,51,120,0,2,51,224,0,2,52,84,0,2,52,176,0,2,53,12,0,2,53,108,0,2,53,204,0,2,54,12,0,2,54,92,0,2,54,168,0,2,54,244,0,2,55,28,0,2,55,92,0,2,55,172,0,2,56,12,0,2,56,112,0,2,56,184,0,2,57,4,0,2,57,76,0,2,57,92,0,2,57,136,0,2,57,180,0,2,57,224,0,2,58,32,0,2,58,108,0,2,58,160,0,2,58,212,0,2,59,24,0,2,59,60,0,2,59,80,0,2,59,100,0,2,59,120,0,2,59,196,0,2,60,20,0,2,60,100,0,2,60,180,0,2,61,0,0,2,61,76,0,2,61,112,0,2,61,156,0,2,61,176,0,2,61,196,0,2,61,216,0,2,61,236,0,2,62,0,0,2,62,20,0,2,62,96,0,2,62,140,0,2,62,200,0,2,63,116,0,2,63,204,0,2,63,220,0,2,63,236,0,2,64,56,0,2,64,124,0,2,64,252,0,2,65,140,0,2,66,12,0,2,66,136,0,2,67,20,0,2,67,148,0,2,68,88,0,2,68,216,0,2,69,96,0,2,69,248,0,2,70,152,0,2,70,236,0,2,71,76,0,2,71,160,0,2,72,4,0,2,72,124,0,2,73,4,0,2,73,168,0,2,74,92,0,2,74,216,0,2,75,92,0,2,75,216,0,2,76,92,0,2,76,252,0,2,77,168,0,2,78,104,0,2,79,32,0,2,79,164,0,2,80,52,0,2,80,116,0,2,80,188,0,2,81,52,0,2,81,172,0,2,82,88,0,2,82,208,0,2,83,72,0,2,83,244,0,2,83,244,0,2,83,244,0,2,83,244,0,2,83,244,0,2,83,244,0,2,83,244,0,2,84,12,0,2,84,36,0,5,0,94,0,0,2,26,2,148,0,3,0,9,0,15,0,18,0,21,0,103,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,185,0,4,0,1,244,186,0,7,0,2,0,0,17,18,57,184,0,0,16,185,0,12,0,1,244,186,0,17,0,2,0,0,17,18,57,186,0,18,0,2,0,0,17,18,57,186,0,19,0,2,0,0,17,18,57,186,0,21,0,2,0,0,17,18,57,48,49,19,33,17,33,37,47,1,35,15,1,19,63,1,33,31,1,7,3,17,1,3,19,94,1,188,254,68,1,120,93,59,4,61,95,160,53,86,254,228]);fileData0.push.apply(fileData0,[87,54,28,147,1,96,145,145,2,148,253,108,39,164,105,105,164,1,77,92,155,155,92,32,1,4,253,252,2,4,254,252,255,0,0,0,0,2,0,8,0,0,2,6,2,147,0,9,0,17,0,84,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,17,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,184,0,0,69,88,184,0,17,47,27,185,0,17,0,5,62,89,186,0,5,0,12,0,14,17,18,57,186,0,11,0,12,0,14,17,18,57,184,0,11,47,185,0,9,0,1,244,48,49,1,39,46,1,39,35,14,1,15,1,23,33,7,35,19,51,19,35,1,124,42,20,36,17,4,17,36,20,42,247,254,251,78,46,232,46,232,48,1,9,123,59,108,61,61,108,59,123,39,226,2,147,253,109,0,0,0,3,0,97,0,0,2,21,2,147,0,17,0,26,0,35,0,91,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,17,47,27,185,0,17,0,5,62,89,186,0,33,0,0,0,17,17,18,57,184,0,33,47,186,0,8,0,33,0,18,17,18,57,184,0,0,16,185,0,25,0,2,244,184,0,33,16,185,0,26,0,1,244,184,0,17,16,185,0,35,0,2,244,48,49,19,51,50,22,21,20,6,7,21,30,1,21,20,14,2,43,1,19,50,54,53,52,38,43,1,21,19,50,54,53,52,38,43,1,17,97,178,100,118,52,50,64,78,35,64,90,56,191,160,101,89,94,91,119,133,99,113,110,102,133,2,147,77,83,52,77,15,4,11,79,69,48,72,48,24,1,113,67,58,70,57,252,254,181,74,79,72,68,254,219,0,0,1,0,55,255,244,2,15,2,159,0,33,0,57,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,10,16,185,0,17,0,2,244,184,0,0,16,185,0,27,0,2,244,48,49,5,34,46,2,53,52,62,2,51,50,22,23,7,46,1,35,34,14,2,21,20,30,2,51,50,54,55,23,14,1,1,75,61,102,73,40,41,74,103,63,58,88,26,27,27,72,45,54,87,61,32,32,60,85,53,51,80,36,27,38,94,12,48,89,127,79,78,126,89,47,48,31,31,31,37,42,77,110,69,69,111,78,43,41,40,29,44,50,0,0,2,0,97,0,0,2,37,2,147,0,12,0,25,0,53,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,185,0,13,0,2,244,184,0,0,16,185,0,23,0,2,244,48,49,19,51,50,30,2,21,20,14,2,43,1,55,50,62,2,53,52,46,2,43,1,17,97,153,76,113,74,36,36,74,112,76,154,148,67,97,62,30,30,62,97,67,102,2,147,46,86,120,75,75,123,87,47,39,43,78,107,65,64,106,76,42,253,187,0,0,0,0,1,0,97,0,0,1,212,2,147,0,11,0,77,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,184,0,0,16,185,0,3,0,2,244,186,0,7,0,0,0,11,17,18,57,184,0,7,47,185,0,5,0,1,244,184,0,11,16,185,0,8,0,2,244,48,49,19,33,21,33,21,33,21,33,17,33,21,33,97,1,105,254,197,1,8,254,248,1,69,254,141,2,147,40,249,40,254,222,40,0,1,0,97,0,0,1,200,2,147,0,9,0,67,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,5,62,89,184,0,0,16,185,0,3,0,2,244,186,0,7,0,0,0,9,17,18,57,184,0,7,47,185,0,5,0,1,244,48,49,19,33,21,33,17,33,21,33,17,35,97,1,103,254,199,1,9,254,247,46,2,147,40,254,250,40,254,195,0,0,0,0,1,0,55,255,244,2,21,2,159,0,39,0,77,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,10,16,185,0,19,0,2,244,184,0,0,16,185,0,29,0,2,244,186,0,34,0,10,0,0,17,18,57,184,0,34,47,185,0,36,0,1,244,48,49,5,34,46,2,53,52,62,2,51,50,30,2,23,7,46,1,35,34,14,2,21,20,30,2,51,50,54,55,53,35,53,51,17,14,1,1,82,64,104,74,41,42,76,108,65,33,55,44,35,13,27,26,72,54,57,90,63,34,32,61,89,56,45,79,24,158,202,31,99,12,48,89,127,79,78,126,89,47,14,23,28,14,31,28,40,42,77,110,69,69,111,78,43,26,24,205,39,254,251,33,42,0,1,0,97,0,0,2,30,2,147,0,11,0,73,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,186,0,9,0,0,0,11,17,18,57,184,0,9,47,185,0,3,0,1,244,184,0,0,16,184,0,4,208,184,0,11,16,184,0,7,208,48,49,19,51,17,33,17,51,17,35,17,33,17,35,97,46,1,97,46,46,254,159,46,2,147,254,223,1,33,253,109,1,74,254,182,0,1,0,97,0,0,0,143,2,147,0,3,0,37,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,5,62,89,48,49,19,51,17,35,97,46,46,2,147,253,109,0,0,0,1,0,41,255,244,1,111,2,147,0,17,0,43,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,7,0,2,244,48,49,23,34,38,39,55,30,1,51,50,54,53,17,51,17,20,14,2,203,55,82,25,35,24,61,42,60,58,46,18,39,62,12,50,47,23,42,36,73,81,1,219,254,32,40,69,52,30,0,1,0,97,0,0,2,36,2,147,0,12,0,101,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,17,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,186,0,2,0,0,0,12,17,18,57,186,0,6,0,4,0,8,17,18,57,186,0,9,0,4,0,8,17,18,57,48,49,19,51,17,51,1,51,7,19,35,3,7,21,35,97,46,2,1,63,55,210,239,53,218,134,46,2,147,254,146,1,110,244,254,97,1,124,153,227,0,0,0,0,1,0,97,0,0,1,191,2,147,0,5,0,43,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,185,0,2,0,2,244,48,49,19,51,17,33,21,33,97,46,1,48,254,162,2,147,253,149,40,0,0,0,1,0,97,0,0,2,97,2,147,0,29,0,93,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,29,47,27,185,0,29,0,5,62,89,186,0,6,0,12,0,17,17,18,57,186,0,6,0,11,0,12,17,18,57,184,0,0,16,184,0,10,208,184,0,29,16,184,0,13,208,186,0,21,0,29,0,0,17,18,57,186,0,24,0,0,0,29,17,18,57,48,49,19,51,19,30,1,23,51,62,1,55,19,51,17,35,17,52,54,55,35,7,3,35,3,39,35,30,1,21,17,35,97,65,138,13,26,13,4,13,24,13,137,66,45,4,2,4,51,142,40,143,52,4,2,4,43,2,147,254,125,36,73,37,37,73,36,1,131,253,109,1,177,41,95,42,147,254,120,1,136,147,42,95,41,254,79,0,1,0,97,0,0,2,27,2,147,0,19,0,91,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,17,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,5,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,186,0,4,0,11,0,8,17,18,57,186,0,14,0,0,0,19,17,18,57,48,49,19,51,1,23,51,46,1,53,17,51,17,35,1,39,35,30,1,21,17,35,97,48,1,22,74,4,2,4,44,48,254,234,74,4,2,4,44,2,147,254,47,131,48,96,48,1,148,253,109,1,209,131,48,91,48,254,103,0,0,0,2,0,55,255,244,2,86,2,159,0,19,0,39,0,53,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,20,0,2,244,184,0,10,16,185,0,30,0,2,244,48,49,5,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,39,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,1,70,59,100,72,40,40,72,100,59,60,100,72,40,40,72,100,60,50,82,59,32,32,59,82,50,50,83,58,32,32,58,83,12,49,90,127,78,78,125,89,47,47,89,125,78,78,127,90,49,42,43,79,111,69,68,110,77,42,42,77,110,68,69,111,79,43,0,2,0,97,0,0,1,246,2,147,0,12,0,21,0,67,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,186,0,10,0,0,0,12,17,18,57,184,0,10,47,185,0,13,0,1,244,184,0,0,16,185,0,20,0,2,244,48,49,19,51,50,30,2,21,20,6,43,1,17,35,19,50,54,53,52,38,43,1,17,97,166,56,89,61,33,124,111,124,46,159,101,98,101,102,109,2,147,19,44,70,51,97,95,254,229,1,66,72,81,83,62,254,214,0,0,0,2,0,55,255,100,2,88,2,159,0,19,0,54,0,75,0,184,0,0,69,88,184,0,38,47,27,185,0,38,0,17,62,89,184,0,0,69,88,184,0,28,47,27,185,0,28,0,5,62,89,187,0,51,0,2,0,23,0,4,43,184,0,28,16,185,0,5,0,2,244,184,0,38,16,185,0,15,0,2,244,184,0,28,16,184,0,48,208,48,49,19,20,30,2,51,50,62,2,53,52,46,2,35,34,14,2,1,14,1,35,34,46,2,39,46,3,53,52,62,2,51,50,30,2,21,20,14,2,7,30,1,51,50,54,55,103,32,58,83,50,50,82,59,32,32,59,82,50,50,83,58,32,1,241,13,43,25,42,69,55,41,12,54,90,65,36,40,72,100,59,60,100,72,40,36,65,91,55,23,87,62,23,31,13,1,76,69,113,79,44,44,79,113,69,68,110,77,42,42,77,110,253,224,4,8,22,39,53,31,5,53,89,122,74,78,125,89,47,47,89,125,78,74,122,89,53,5,50,52,5,3,0,2,0,97,0,0,2,3,2,147,0,8,0,24,0,89,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,17,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,184,0,14,16,185,0,6,0,1,244,186,0,8,0,14,0,13,17,18,57,184,0,8,47,184,0,13,16,184,0,9,208,184,0,8,16,185,0,10,0,1,244,186,0,23,0,8,0,11,17,18,57,48,49,1,50,54,53,52,38,43,1,17,1,3,35,17,35,17,51,50,30,2,21,20,6,7,19,1,18,88,93,94,87,131,1,63,179,140,46,189,49,80,56,31,91,78,182,1,85,71,73,74,61,254,233,254,171,1,47,254,209,2,147,19,42,66,47,79,90,10,254,206,0,0,0,1,0,46,255,244,1,224,2,159,0,51,0,73,0,184,0,0,69,88,184,0,26,47,27,185,0,26,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,7,0,2,244,186,0,15,0,0,0,26,17,18,57,184,0,26,16,185,0,33,0,2,244,186,0,41,0,26,0,0,17,18,57,48,49,5,34,38,39,55,30,1,51,50,54,53,52,46,2,47,1,46,3,53,52,62,2,51,50,22,23,7,46,1,35,34,6,21,20,30,2,31,1,30,3,21,20,14,2,1,13,72,112,39,30,36,100,57,76,88,19,32,43,24,100,21,48,39,26,29,51,71,41,60,93,30,26,29,78,50,66,80,22,34,40,18,100,28,50,38,23,30,55,78,12,55,44,32,41,48,73,59,31,43,31,22,11,45,9,26,39,53,37,36,59,43,24,47,32,30,30,37,64,54,29,40,29,21,8,44,12,30,40,55,38,38,65,47,27,0,0,0,0,1,0,29,0,0,1,239,2,147,0,7,0,51,0,184,0,0,69,88,184,0,2,47,27,185,0,2,0,17,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,184,0,2,16,185,0,0,0,2,244,184,0,5,208,48,49,19,35,53,33,21,35,17,35,239,210,1,210,210,46,2,107,40,40,253,149,0,0,0,0,1,0,95,255,244,2,27,2,147,0,25,0,51,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,13,0,2,244,184,0,6,16,184,0,19,208,48,49,5,34,46,2,53,17,51,17,20,30,2,51,50,62,2,53,17,51,17,20,14,2,1,60,42,80,62,37,46,29,48,63,35,36,65,49,30,43,38,62,80,12,25,61,102,77,1,150,254,111,66,87,53,22,22,53,87,66,1,145,254,106,77,102,61,25,0,0,1,0,4,0,0,1,231,2,147,0,15,0,64,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,17,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,5,62,89,186,0,5,0,0,0,15,17,18,57,48,49,19,51,19,30,1,23,51,62,3,55,19,51,3,35,4,49,122,19,31,20,4,10,17,16,17,9,122,47,216,49,2,147,254,127,60,101,60,30,54,53,54,30,1,129,253,109,0,1,0,28,0,0,2,228,2,147,0,33,0,118,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,17,62,89,184,0,0,69,88,184,0,20,47,27,185,0,20,0,17,62,89,184,0,0,69,88,184,0,33,47,27,185,0,33,0,5,62,89,184,0,0,69,88,184,0,23,47,27,185,0,23,0,5,62,89,186,0,5,0,0,0,33,17,18,57,186,0,15,0,20,0,23,17,18,57,186,0,28,0,33,0,10,17,18,57,48,49,19,51,19,30,1,23,51,62,1,55,19,51,19,30,1,23,51,62,1,55,19,51,3,35,3,46,1,39,35,14,1,7,3,35,28,48,83,11,23,11,4,12,25,14,103,47,103,14,25,14,4,11,21,11,83,45,147,51,120,9,18,8,4,8,20,9,118,50,2,147,254,124,54,107,54,54,107,54,1,132,254,124,54,107,54,54,107,54,1,132,253,109,1,196,39,71,39,39,71,39,254,60,0,0,0,1,0,17,0,0,1,209,2,147,0,25,0,91,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,17,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,17,62,89,184,0,0,69,88,184,0,25,47,27,185,0,25,0,5,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,5,62,89,186,0,6,0,1,0,25,17,18,57,186,0,19,0,15,0,11,17,18,57,48,49,19,3,51,23,30,1,23,51,62,1,63,1,51,3,19,35,39,46,1,39,35,14,1,15,1,35,215,184,50,108,14,23,17,4,14,21,14,108,47,184,198,50,115,14,29,18,4,16,26,14,115,47,1,85,1,62,194,23,40,27,27,40,23,194,254,192,254,173,202,25,50,30,30,50,25,202,0,0,0,0,1,0,3,0,0,1,188,2,147,0,15,0,64,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,17,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,17,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,5,62,89,186,0,6,0,1,0,15,17,18,57,48,49,19,3,51,23,30,1,23,51,62,1,63,1,51,3,17,35,200,197,49,100,17,33,20,4,19,36,16,100,47,198,46,1,11,1,136,206,36,70,36,36,70,36,206,254,120,254,245,0,0,0,0,1,0,50,0,0,1,234,2,147,0,9,0,69,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,17,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,185,0,6,0,2,244,184,0,0,208,184,0,0,47,184,0,3,16,185,0,1,0,2,244,184,0,5,208,184,0,5,47,48,49,55,1,33,53,33,21,1,33,21,33,50,1,123,254,166,1,148,254,132,1,127,254,72,27,2,80,40,27,253,176,40,0,0,0,2,0,58,255,244,1,156,1,236,0,33,0,47,0,113,0,184,0,0,69,88,184,0,22,47,27,185,0,22,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,186,0,8,0,22,0,0,17,18,57,184,0,8,47,184,0,22,16,185,0,13,0,1,244,184,0,0,16,184,0,29,208,184,0,29,47,186,0,30,0,0,0,22,17,18,57,184,0,0,16,185,0,34,0,1,244,184,0,30,16,185,0,37,0,1,244,184,0,8,16,185,0,38,0,1,244,48,49,23,34,46,2,53,52,54,55,52,46,2,35,34,6,7,39,62,3,51,50,30,2,21,17,35,39,35,14,1,39,50,54,55,53,14,3,21,20,30,2,197,29,50,38,22,149,161,8,26,44,36,48,80,25,20,13,37,46,54,29,42,58,36,16,38,4,3,37,85,40,42,76,45,74,102,62,27,16,28,37,12,16,32,50,34,80,83,18,27,55,43,27,38,18,33,9,22,18,13,29,50,67,39,254,205,62,29,45,38,40,38,163,9,26,36,46,28,26,36,23,11,0,0,0,2,0,92,255,244,1,236,2,207,0,20,0,37,0,122,0,184,0,0,69,88,184,0,13,47,27,185,0,13,0,9,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,19,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,186,0,4,0,0,0,13,17,18,57,184,0,5,208,184,0,5,47,186,0,10,0,13,0,0,17,18,57,184,0,0,16,185,0,21,0,1,244,184,0,13,16,185,0,31,0,1,244,184,0,10,16,185,0,34,0,1,244,184,0,4,16,185,0,35,0,1,244,48,49,5,34,38,39,35,7,35,17,51,21,7,62,1,51,50,22,21,20,14,2,39,50,62,2,53,52,46,2,35,34,6,7,17,30,1,1,24,35,75,34,2,5,37,44,2,37,84,45,96,96,34,59,77,44,36,62,44,25,17,36,58,41,36,78,43,40,74,12,33,28,49,2,207,208,94,31,44,133,112,61,96,67,35,39,32,58,81,49,44,76,55,31,41,38,254,227,34,28,0,1,0,52,255,244,1,167,1,236,0,33,0,57,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,10,16,185,0,17,0,1,244,184,0,0,16,185,0,27,0,1,244,48,49,5,34,46,2,53,52,62,2,51,50,22,23,7,46,1,35,34,14,2,21,20,30,2,51,50,54,55,23,14,1,1,14,47,79,59,33,36,60,79,44,50,66,25,26,23,56,35,37,63,47,27,25,45,65,39,38,65,25,23,31,76,12,34,64,93,60,60,95,64,34,36,23,31,22,29,31,57,78,48,47,78,56,31,32,23,31,27,36,0,0,2,0,52,255,244,1,196,2,207,0,20,0,37,0,122,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,9,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,19,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,186,0,11,0,8,0,0,17,18,57,184,0,16,208,184,0,16,47,186,0,17,0,0,0,8,17,18,57,184,0,0,16,185,0,21,0,1,244,184,0,17,16,185,0,24,0,1,244,184,0,11,16,185,0,25,0,1,244,184,0,8,16,185,0,28,0,1,244,48,49,23,34,38,53,52,62,2,51,50,22,23,39,53,51,17,35,39,35,14,1,39,50,54,55,17,46,1,35,34,14,2,21,20,30,2,251,91,108,34,59,77,43,44,65,36,2,44,38,4,3,29,79,42,40,73,38,38,67,35,36,62,45,26,21,40,59,12,129,122,58,94,66,35,31,28,88,198,253,49,62,29,45,39,41,38,1,29,34,28,33,57,79,45,48,78,55,31,0,0,2,0,52,255,244,1,189,1,236,0,28,0,37,0,81,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,186,0,17,0,10,0,0,17,18,57,184,0,17,47,184,0,0,16,185,0,22,0,1,244,184,0,17,16,185,0,29,0,1,244,184,0,10,16,185,0,32,0,1,244,48,49,5,34,46,2,53,52,62,2,51,50,22,21,28,1,7,33,30,3,51,50,54,55,23,14,1,19,52,38,35,34,14,2,7,1,18,46,81,60,35,35,59,75,40,86,98,2,254,166,1,26,47,66,41,39,63,27,18,29,69,76,76,65,31,56,45,29,4,12,34,65,93,59,59,94,65,35,116,106,9,18,9,45,77,55,31,23,20,34,17,30,1,26,93,91,25,48,68,43,0,0,1,0,33,0,0,1,32,2,219,0,22,0,86,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,9,62,89,184,0,0,69,88,184,0,20,47,27,185,0,20,0,19,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,184,0,20,16,185,0,3,0,1,244,184,0,7,16,185,0,10,0,1,244,184,0,13,208,184,0,7,16,184,0,16,208,48,49,1,46,1,35,34,6,29,1,51,21,35,17,35,17,35,53,55,53,52,54,51,50,23,1,20,15,29,14,38,37,111,111,44,66,66,62,57,35,35,2,167,8,6,56,53,104,38,254,70,1,186,34,4,107,72,72,16,0,0,0,0,3,0,52,255,25,1,220,1,236,0,53,0,73,0,91,0,135,0,184,0,0,69,88,184,0,22,47,27,185,0,22,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,7,62,89,186,0,45,0,0,0,22,17,18,57,184,0,45,47,185,0,82,0,1,244,186,0,7,0,45,0,82,17,18,57,186,0,36,0,22,0,0,17,18,57,184,0,36,47,185,0,54,0,1,244,186,0,14,0,54,0,36,17,18,57,184,0,22,16,184,0,26,208,184,0,26,47,185,0,27,0,1,244,184,0,22,16,185,0,64,0,1,244,184,0,0,16,185,0,74,0,1,244,48,49,23,34,38,53,52,54,55,53,46,1,53,52,54,55,53,46,1,53,52,62,2,51,50,22,23,51,21,35,30,1,21,20,14,2,35,34,38,39,14,1,21,20,22,59,1,50,22,21,20,14,2,3,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,19,50,62,2,53,52,38,43,1,34,38,39,14,1,21,20,22,249,91,106,38,33,18,24,36,16,23,37,26,46,62,35,20,32,11,163,112,23,30,26,45,61,35,20,43,17,16,23,38,54,103,81,77,32,59,84,59,25,45,34,20,20,33,46,25,26,45,34,20,20,35,45,37,40,66,46,25,57,54,103,8,33,19,33,30,83,231,72,61,32,60,24,4,11,38,28,32,45,11,4,20,68,44,37,62,45,25,7,5,37,20,63,38,37,62,45,25,10,10,13,32,24,26,37,53,57,31,59,45,27,1,163,19,36,50,30,30,50,34,19,19,34,49,31,30,50,36,19,254,129,21,34,43,23,40,33,3,5,23,52,26,45,56,0,0,1,0,92,0,0,1,191,2,207,0,19,0,88,0,184,0,0,69,88,184,0,5,47,27,185,0,5,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,19,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,5,62,89,186,0,2,0,5,0,19,17,18,57,184,0,10,208,184,0,5,16,185,0,14,0,1,244,184,0,2,16,185,0,17,0,1,244,48,49,19,51,17,62,1,51,50,22,21,17,35,17,52,38,35,34,6,7,17,35,92,44,38,78,50,75,70,44,51,59,43,70,44,44,2,207,254,198,38,49,90,94,254,204,1,46,77,73,45,45,254,150,0,0,0,2,0,75,0,0,0,155,2,163,0,3,0,15,0,53,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,5,62,89,184,0,0,16,184,0,4,208,184,0,4,47,184,0,10,208,48,49,19,51,17,35,19,34,38,53,52,54,51,50,22,21,20,6,92,44,44,23,17,23,23,17,17,23,23,1,224,254,32,2,84,22,17,19,21,21,19,17,22,0,0,0,2,255,223,255,27,0,156,2,163,0,15,0,27,0,59,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,7,62,89,185,0,7,0,1,244,184,0,11,16,184,0,16,208,184,0,16,47,184,0,22,208,48,49,23,34,38,39,55,30,1,51,50,54,53,17,51,17,20,6,19,34,38,53,52,54,51,50,22,21,20,6,29,17,34,11,11,9,27,14,40,24,45,52,30,16,24,24,16,17,24,24,229,7,5,36,3,7,59,46,2,54,253,199,71,69,3,57,22,17,19,21,21,19,17,22,0,0,1,0,92,0,0,1,196,2,207,0,12,0,101,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,19,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,186,0,2,0,0,0,12,17,18,57,186,0,6,0,4,0,8,17,18,57,186,0,9,0,0,0,8,17,18,57,48,49,19,51,17,51,19,51,7,19,35,3,7,21,35,92,44,2,237,51,156,182,49,159,108,44,2,207,253,238,1,35,190,254,222,1,1,126,131,0,1,0,92,255,244,0,183,2,207,0,14,0,43,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,19,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,8,0,1,244,48,49,23,34,53,17,51,17,20,22,51,58,1,55,23,14,1,151,59,44,12,9,3,7,8,8,7,14,12,76,2,143,253,107,16,15,2,36,2,3,0,0,1,0,92,0,0,2,216,1,236,0,32,0,137,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,32,47,27,185,0,32,0,5,62,89,186,0,2,0,0,0,32,17,18,57,184,0,0,16,184,0,6,208,184,0,6,47,186,0,9,0,0,0,32,17,18,57,184,0,12,208,184,0,12,47,184,0,32,16,184,0,24,208,184,0,24,47,184,0,16,208,184,0,16,47,184,0,12,16,185,0,20,0,1,244,184,0,9,16,185,0,22,0,1,244,184,0,6,16,185,0,28,0,1,244,184,0,2,16,185,0,30,0,1,244,48,49,19,51,23,51,62,1,51,50,22,23,62,1,51,50,21,17,35,17,52,38,35,34,7,17,35,17,52,38,35,34,7,17,35,92,38,4,3,32,79,40,58,62,13,42,79,42,144,45,52,55,65,79,44,52,56,65,79,44,1,224,74,37,49,53,45,45,53,184,254,204,1,46,77,73,90,254,150,1,46,77,73,90,254,150,0,0,1,0,92,0,0,1,191,1,236,0,20,0,91,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,20,47,27,185,0,20,0,5,62,89,186,0,2,0,0,0,20,17,18,57,184,0,0,16,184,0,6,208,184,0,6,47,184,0,20,16,184,0,11,208,184,0,11,47,184,0,6,16,185,0,15,0,1,244,184,0,2,16,185,0,18,0,1,244,48,49,19,51,23,51,62,1,51,50,22,21,17,35,17,52,38,35,34,6,7,17,35,92,38,4,3,37,78,50,75,70,44,51,59,43,70,44,44,1,224,74,37,49,90,94,254,204,1,46,77,73,45,45,254,150,0,0,2,0,52,255,244,1,227,1,236,0,19,0,39,0,53,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,20,0,1,244,184,0,10,16,185,0,30,0,1,244,48,49,5,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,39,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,1,11,43,78,59,35,35,59,78,43,43,79,59,35,35,59,79,43,36,63,45,26,26,45,63,36,36,62,45,26,26,45,62,12,34,64,93,60,60,95,64,34,34,64,95,60,60,93,64,34,39,31,56,78,47,48,78,57,31,31,57,78,48,47,78,56,31,0,2,0,92,255,39,1,236,1,236,0,16,0,36,0,126,0,184,0,0,69,88,184,0,23,47,27,185,0,23,0,9,62,89,184,0,0,69,88,184,0,31,47,27,185,0,31,0,5,62,89,184,0,0,69,88,184,0,36,47,27,185,0,36,0,7,62,89,186,0,34,0,31,0,23,17,18,57,184,0,34,16,185,0,0,0,1,244,184,0,31,16,185,0,3,0,1,244,184,0,23,16,185,0,13,0,1,244,186,0,19,0,23,0,31,17,18,57,184,0,19,16,185,0,16,0,1,244,184,0,23,16,184,0,17,208,184,0,17,47,48,49,55,30,1,51,50,62,2,53,52,46,2,35,34,6,7,39,51,23,51,62,1,51,50,22,21,20,14,2,35,34,38,39,17,35,136,42,72,28,36,62,44,25,17,36,58,41,36,77,44,44,38,4,3,35,83,45,96,96,34,59,77,42,34,72,38,44,89,34,28,32,58,81,49,44,76,55,31,41,38,106,60,28,44,133,112,61,96,67,35,31,28,254,248,0,0,2,0,52,255,39,1,196,1,236,0,20,0,37,0,126,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,9,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,184,0,0,69,88,184,0,20,47,27,185,0,20,0,7,62,89,186,0,1,0,4,0,12,17,18,57,186,0,15,0,12,0,4,17,18,57,184,0,12,16,184,0,18,208,184,0,18,47,184,0,4,16,185,0,21,0,1,244,184,0,1,16,185,0,24,0,1,244,184,0,15,16,185,0,25,0,1,244,184,0,12,16,185,0,28,0,1,244,48,49,5,55,14,1,35,34,38,53,52,62,2,51,50,22,23,51,55,51,17,35,39,50,54,55,17,46,1,35,34,14,2,21,20,30,2,1,152,2,32,79,48,91,108,34,59,77,43,44,65,34,2,5,37,44,151,40,73,38,38,67,35,36,62,45,26,21,40,59,32,95,31,44,129,122,58,94,66,35,30,26,44,253,71,244,41,38,1,29,34,28,33,57,79,45,48,78,55,31,0,1,0,92,0,0,1,65,1,236,0,18,0,73,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,18,47,27,185,0,18,0,5,62,89,186,0,2,0,0,0,18,17,18,57,184,0,0,16,184,0,6,208,184,0,6,47,184,0,13,220,184,0,2,16,185,0,16,0,1,244,48,49,19,51,23,51,62,1,51,50,22,23,7,46,1,35,34,6,7,17,35,92,38,4,3,24,69,43,14,22,12,10,12,18,14,32,71,28,44,1,224,89,45,56,4,6,40,5,3,55,68,254,185,0,0,0,1,0,32,255,244,1,114,1,236,0,51,0,73,0,184,0,0,69,88,184,0,25,47,27,185,0,25,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,7,0,1,244,186,0,15,0,0,0,25,17,18,57,184,0,25,16,185,0,32,0,1,244,186,0,42,0,25,0,0,17,18,57,48,49,23,34,38,39,55,30,1,51,50,54,53,52,46,2,39,46,3,53,52,62,2,51,50,22,23,7,46,1,35,34,14,2,21,20,30,2,23,30,3,21,20,14,2,208,54,90,32,26,31,70,52,57,57,21,34,41,21,27,55,44,27,20,40,57,38,38,73,26,24,24,54,37,28,40,27,13,19,32,41,21,28,56,45,28,21,42,60,12,39,27,33,26,35,57,38,22,34,24,18,8,10,22,31,43,31,26,47,35,20,28,22,31,18,25,15,24,32,16,21,29,22,17,8,11,22,32,47,35,27,49,37,22,0,0,1,0,28,255,244,1,45,2,107,0,27,0,79,0,124,184,0,11,47,24,184,0,0,69,88,184,0,9,47,27,185,0,9,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,9,16,185,0,6,0,1,244,184,0,9,16,184,0,13,208,184,0,6,16,184,0,14,208,184,0,0,16,185,0,21,0,1,244,48,49,23,34,46,2,53,17,35,53,63,1,51,21,51,21,35,17,20,30,2,51,50,54,55,23,14,1,223,35,46,28,11,75,76,6,38,139,139,7,18,31,25,14,33,13,12,21,42,12,21,38,54,32,1,53,34,4,139,139,38,254,199,23,37,27,15,9,6,36,8,10,0,0,1,0,85,255,244,1,181,1,224,0,20,0,83,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,9,0,1,244,186,0,17,0,4,0,0,17,18,57,184,0,17,16,185,0,12,0,1,244,184,0,4,16,184,0,13,208,184,0,0,16,184,0,15,208,184,0,15,47,48,49,23,34,38,53,17,51,17,20,22,51,50,54,55,17,51,17,35,39,35,14,1,230,75,70,44,51,58,43,70,42,44,37,5,2,35,78,12,90,94,1,52,254,210,77,73,47,51,1,98,254,32,80,42,50,0,0,1,0,12,0,0,1,166,1,224,0,13,0,64,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,9,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,186,0,5,0,0,0,13,17,18,57,48,49,19,51,19,30,1,23,51,62,1,55,19,51,3,35,12,48,108,11,26,11,4,12,25,12,108,45,178,52,1,224,254,211,35,70,33,33,70,35,1,45,254,32,0,1,0,24,0,0,2,149,1,224,0,33,0,91,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,33,47,27,185,0,33,0,5,62,89,186,0,5,0,33,0,0,17,18,57,184,0,0,16,184,0,10,208,184,0,33,16,184,0,23,208,184,0,10,16,184,0,20,208,186,0,15,0,23,0,20,17,18,57,186,0,28,0,0,0,32,17,18,57,48,49,19,51,19,30,1,23,51,62,1,55,19,51,19,30,1,23,51,62,1,55,19,51,3,35,3,46,1,39,35,14,1,7,3,35,24,48,86,9,16,8,4,8,18,9,87,53,87,9,18,9,4,8,18,8,85,45,138,58,84,11,15,11,4,8,19,11,83,53,1,224,254,201,33,63,32,32,63,33,1,55,254,201,33,63,32,32,63,33,1,55,254,32,1,42,35,67,35,35,69,35,254,216,0,0,1,0,14,0,0,1,137,1,224,0,25,0,73,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,9,62,89,184,0,0,69,88,184,0,25,47,27,185,0,25,0,5,62,89,184,0,1,16,184,0,11,208,184,0,25,16,184,0,15,208,186,0,6,0,11,0,15,17,18,57,186,0,20,0,1,0,25,17,18,57,48,49,55,39,51,23,30,1,23,51,62,1,63,1,51,7,23,35,39,46,1,39,35,14,1,15,1,35,177,150,49,78,12,25,14,4,13,23,13,75,46,149,163,49,85,14,28,15,4,14,27,14,82,47,251,229,122,20,39,20,20,39,20,122,233,247,131,23,44,21,21,44,23,131,0,0,1,0,12,255,37,1,168,1,224,0,27,0,71,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,7,62,89,185,0,6,0,1,244,186,0,10,0,0,0,11,17,18,57,186,0,16,0,11,0,0,17,18,57,184,0,11,16,184,0,21,208,48,49,23,34,39,55,30,1,51,50,54,63,1,3,51,19,30,1,23,51,62,1,55,19,51,3,14,3,73,27,22,10,8,20,11,45,60,18,13,197,48,116,11,27,14,4,11,23,10,103,45,190,10,29,39,51,219,10,39,3,5,72,55,42,1,233,254,210,30,72,32,32,72,30,1,46,253,228,30,58,44,27,0,0,0,0,1,0,27,0,0,1,122,1,224,0,9,0,69,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,9,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,185,0,6,0,1,244,184,0,0,208,184,0,0,47,184,0,3,16,185,0,1,0,1,244,184,0,5,208,184,0,5,47,48,49,55,1,35,53,33,21,1,33,21,33,27,1,28,253,1,54,254,229,1,37,254,161,24,1,162,38,23,254,94,39,0,0,0,255,255,0,8,0,0,2,6,3,84,2,38,0,4,0,0,0,7,7,34,1,7,0,0,255,255,0,8,0,0,2,6,3,84,2,38,0,4,0,0,0,7,7,37,1,7,0,0,255,255,0,8,0,0,2,6,3,71,2,38,0,4,0,0,0,7,7,40,1,7,0,0,255,255,0,8,0,0,2,6,3,66,2,38,0,4,0,0,0,7,7,42,1,7,0,0,255,255,0,8,0,0,2,6,3,30,2,38,0,4,0,0,0,7,7,54,1,7,0,0,255,255,0,8,0,0,2,6,3,11,2,38,0,4,0,0,0,7,7,44,1,7,0,0,255,255,0,8,0,0,2,6,3,71,2,38,0,4,0,0,0,7,7,49,1,7,0,0,255,255,0,8,0,0,2,6,3,103,2,38,0,4,0,0,0,7,7,58,1,7,0,0,255,255,0,8,0,0,2,6,3,73,2,38,0,4,0,0,0,7,7,62,1,7,0,0,255,255,0,8,255,62,2,6,2,147,2,38,0,4,0,0,0,7,7,51,1,7,252,234,255,255,0,8,0,0,2,6,3,95,2,38,0,4,0,0,0,7,7,56,1,7,0,0,255,255,0,8,0,0,2,6,3,116,2,38,0,4,0,0,0,7,7,119,1,7,0,0,255,255,0,8,0,0,2,6,3,116,2,38,0,4,0,0,0,7,7,121,1,7,0,0,255,255,0,8,0,0,2,6,3,131,2,38,0,4,0,0,0,7,7,123,1,7,0,0,255,255,0,8,0,0,2,6,3,157,2,38,0,4,0,0,0,7,7,125,1,7,0,0,255,255,0,8,255,62,2,6,3,71,2,38,0,4,0,0,0,39,7,40,1,7,0,0,0,7,7,51,1,7,252,234,255,255,0,8,0,0,2,6,3,157,2,38,0,4,0,0,0,7,7,127,1,7,0,0,255,255,0,8,0,0,2,6,3,157,2,38,0,4,0,0,0,7,7,129,1,7,0,0,255,255,0,8,0,0,2,6,3,171,2,38,0,4,0,0,0,7,7,131,1,7,0,0,255,255,0,8,0,0,2,6,3,158,2,38,0,4,0,0,0,7,7,133,1,7,0,0,255,255,0,8,255,62,2,6,3,71,2,38,0,4,0,0,0,39,7,49,1,7,0,0,0,7,7,51,1,7,252,234,0,2,0,8,255,51,2,42,2,147,0,9,0,37,0,87,0,184,0,0,69,88,184,0,27,47,27,185,0,27,0,17,62,89,184,0,0,69,88,184,0,25,47,27,185,0,25,0,5,62,89,186,0,35,0,13,0,3,43,186,0,5,0,25,0,27,17,18,57,186,0,24,0,25,0,27,17,18,57,184,0,24,47,185,0,9,0,1,244,184,0,25,16,184,0,22,208,184,0,29,208,48,49,1,39,46,1,39,35,14,1,15,1,1,14,1,35,34,38,53,52,62,2,55,35,39,33,7,35,19,51,19,14,1,21,20,22,51,50,55,1,124,42,20,36,17,4,17,36,20,42,1,152,11,37,17,35,49,12,20,26,13,6,77,254,251,78,46,232,46,232,31,43,31,20,25,18,1,9,123,59,108,61,61,108,59,123,254,66,10,14,40,42,19,36,32,27,9,226,226,2,147,253,109,20,65,31,26,26,14,0,0,0,2,0,21,0,0,2,250,2,147,0,6,0,22,0,124,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,17,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,5,62,89,186,0,2,0,14,0,13,17,18,57,186,0,10,0,14,0,13,17,18,57,184,0,10,47,185,0,6,0,1,244,184,0,9,16,185,0,7,0,2,244,184,0,14,16,185,0,16,0,2,244,186,0,21,0,14,0,9,17,18,57,184,0,21,47,185,0,19,0,1,244,48,49,37,17,35,14,1,15,1,5,21,33,53,35,7,35,1,33,21,33,21,51,21,35,17,1,155,4,31,61,32,73,2,40,254,161,222,119,49,1,109,1,110,254,217,245,245,255,1,108,56,115,60,133,215,40,217,217,2,147,40,249,40,254,222,0,255,255,0,21,0,0,2,250,3,86,2,38,0,78,0,0,0,7,7,37,2,68,0,2,255,255,0,21,0,0,2,250,3,13,2,38,0,78,0,0,0,7,7,44,2,68,0,2,0,3,0,33,0,0,2,35,2,147,0,12,0,21,0,43,0,95,0,184,0,0,69,88,184,0,36,47,27,185,0,36,0,17,62,89,184,0,0,69,88,184,0,30,47,27,185,0,30,0,5,62,89,185,0,0,0,1,244,184,0,10,208,184,0,9,208,184,0,6,208,184,0,14,208,184,0,36,16,185,0,20,0,1,244,186,0,22,0,14,0,6,17,18,57,184,0,10,16,184,0,32,208,184,0,9,16,184,0,35,208,48,49,37,50,54,53,52,38,43,1,21,51,21,35,21,17,51,50,54,53,52,38,43,1,19,30,1,21,20,14,2,43,1,53,35,53,55,17,51,50,22,21,20,6,7,1,34,98,114,111,101,133,166,166,113,102,89,94,91,119,232,73,85,35,64,90,56,191,78,78,178,99,118,58,59,37,76,80,72,70,124,33,141,1,77,66,65,64,57,254,243,11,80,69,48,72,48,25,178,30,3,1,192,78,82,51,76,15,0,255,255,0,97,255,97,2,21,2,147,2,38,0,5,0,0,0,7,7,43,1,35,253,3,255,255,0,55,255,37,2,15,2,159,2,38,0,6,0,0,0,7,7,87,1,83,0,0,255,255,0,55,255,244,2,15,3,84,2,38,0,6,0,0,0,7,7,37,1,67,0,0,255,255,0,55,255,244,2,15,3,71,2,38,0,6,0,0,0,7,7,40,1,67,0,0,255,255,0,55,255,244,2,15,3,73,2,38,0,6,0,0,0,7,7,62,1,67,0,0,255,255,0,55,255,244,2,15,3,33,2,38,0,6,0,0,0,7,7,52,1,67,0,0,255,255,0,97,0,0,2,37,3,73,2,38,0,7,0,0,0,7,7,62,1,46,0,0,255,255,0,97,255,62,2,37,2,147,2,38,0,7,0,0,0,7,7,51,1,44,252,234,255,255,0,97,255,97,2,37,2,147,2,38,0,7,0,0,0,7,7,43,1,44,253,3,255,255,0,37,0,0,2,58,2,147,2,6,0,245,0,0,255,255,0,97,0,0,1,212,3,84,2,38,0,8,0,0,0,7,7,34,1,26,0,0,255,255,0,97,0,0,1,212,3,84,2,38,0,8,0,0,0,7,7,37,1,26,0,0,255,255,0,97,0,0,1,212,3,71,2,38,0,8,0,0,0,7,7,40,1,26,0,0,255,255,0,97,0,0,1,212,3,73,2,38,0,8,0,0]);fileData0.push.apply(fileData0,[0,7,7,62,1,26,0,0,255,255,0,97,0,0,1,212,3,30,2,38,0,8,0,0,0,7,7,54,1,26,0,0,255,255,0,97,0,0,1,212,3,11,2,38,0,8,0,0,0,7,7,44,1,26,0,0,255,255,0,97,0,0,1,212,3,71,2,38,0,8,0,0,0,7,7,49,1,26,0,0,255,255,0,97,0,0,1,212,3,33,2,38,0,8,0,0,0,7,7,52,1,26,0,0,255,255,0,97,255,62,1,212,2,147,2,38,0,8,0,0,0,7,7,51,1,40,252,234,255,255,0,97,0,0,1,212,3,95,2,38,0,8,0,0,0,7,7,56,1,26,0,0,255,255,0,97,0,0,1,212,3,66,2,38,0,8,0,0,0,7,7,42,1,26,0,0,255,255,0,97,0,0,1,229,3,116,2,38,0,8,0,0,0,7,7,119,1,26,0,0,255,255,0,97,0,0,1,212,3,116,2,38,0,8,0,0,0,7,7,121,1,26,0,0,255,255,0,97,0,0,1,212,3,131,2,38,0,8,0,0,0,7,7,123,1,26,0,0,255,255,0,97,0,0,1,212,3,157,2,38,0,8,0,0,0,7,7,125,1,26,0,0,255,255,0,97,255,62,1,212,3,71,2,38,0,8,0,0,0,39,7,40,1,26,0,0,0,7,7,51,1,40,252,234,0,1,0,97,255,51,1,225,2,147,0,32,0,93,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,17,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,186,0,27,0,0,0,3,43,184,0,8,16,185,0,10,0,2,244,186,0,15,0,8,0,7,17,18,57,184,0,15,47,185,0,13,0,1,244,184,0,7,16,185,0,17,0,2,244,184,0,7,16,184,0,18,208,48,49,5,34,38,53,52,54,55,33,17,33,21,33,21,33,21,33,17,33,21,35,14,3,21,20,22,51,50,55,23,14,1,1,159,35,49,44,29,254,205,1,105,254,197,1,8,254,248,1,69,3,17,33,27,17,31,19,25,18,17,12,37,205,40,42,38,66,19,2,147,40,249,40,254,222,40,3,21,31,39,22,26,26,14,27,10,14,0,0,0,255,255,0,97,0,0,1,212,3,177,2,38,0,8,0,0,0,7,7,137,1,23,0,0,255,255,0,55,255,244,2,21,3,84,2,38,0,10,0,0,0,7,7,37,1,89,0,0,255,255,0,55,255,244,2,21,3,71,2,38,0,10,0,0,0,7,7,40,1,90,0,0,255,255,0,55,255,244,2,21,3,71,2,38,0,10,0,0,0,7,7,49,1,90,0,0,255,255,0,55,255,244,2,21,3,33,2,38,0,10,0,0,0,7,7,52,1,90,0,0,255,255,0,55,255,37,2,21,2,159,2,38,0,10,0,0,0,7,7,84,1,84,0,0,255,255,0,55,255,244,2,21,3,73,2,38,0,10,0,0,0,7,7,62,1,90,0,0,255,255,0,55,255,244,2,21,3,11,2,38,0,10,0,0,0,7,7,44,1,90,0,0,255,255,0,55,255,244,2,21,3,66,2,38,0,10,0,0,0,7,7,42,1,90,0,0,0,1,0,55,255,244,2,83,3,27,0,55,0,87,0,184,0,0,69,88,184,0,13,47,27,185,0,13,0,17,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,5,62,89,187,0,21,0,1,0,28,0,4,43,184,0,13,16,185,0,38,0,2,244,184,0,3,16,185,0,48,0,2,244,186,0,53,0,13,0,3,17,18,57,184,0,53,47,185,0,55,0,1,244,48,49,37,14,1,35,34,46,2,53,52,62,2,51,50,22,23,38,53,52,54,51,50,22,23,7,46,1,35,34,6,21,20,22,23,7,46,1,35,34,14,2,21,20,30,2,51,50,54,55,53,35,53,51,2,21,31,99,65,64,104,74,41,42,76,108,65,37,59,23,14,55,40,14,24,11,10,8,18,11,28,28,15,19,27,26,72,54,57,90,63,34,32,61,89,56,45,79,24,158,202,63,33,42,48,89,127,79,78,126,89,47,13,10,28,30,42,47,7,5,36,3,7,35,22,24,37,28,31,20,29,42,77,110,69,69,111,78,43,26,24,205,39,0,0,255,255,0,97,0,0,2,30,3,71,2,38,0,11,0,0,0,7,7,40,1,63,0,0,255,255,0,97,255,62,2,30,2,147,2,38,0,11,0,0,0,7,7,51,1,63,252,234,255,255,0,97,255,26,2,30,2,147,2,38,0,11,0,0,0,7,7,47,1,63,252,224,0,2,0,36,0,0,2,123,2,147,0,3,0,23,0,115,0,184,0,0,69,88,184,0,17,47,27,185,0,17,0,17,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,5,62,89,186,0,2,0,17,0,10,17,18,57,184,0,2,47,184,0,1,220,184,0,5,208,184,0,10,16,184,0,6,208,184,0,2,16,185,0,9,0,1,244,184,0,1,16,184,0,12,208,184,0,1,16,185,0,18,0,1,244,184,0,15,208,184,0,17,16,184,0,21,208,184,0,18,16,184,0,22,208,48,49,1,33,21,33,55,35,17,35,17,33,17,35,17,35,53,55,53,51,21,33,53,51,21,51,2,4,254,159,1,97,119,73,46,254,159,46,81,81,46,1,97,46,73,1,239,125,125,254,17,1,74,254,182,1,239,29,4,131,131,131,131,255,255,0,8,0,0,0,161,3,84,2,38,0,12,0,0,0,6,7,34,120,0,0,0,255,255,0,79,0,0,0,232,3,84,2,38,0,12,0,0,0,6,7,37,120,0,0,0,255,255,255,241,0,0,0,255,3,71,2,38,0,12,0,0,0,6,7,40,120,0,0,0,255,255,255,211,0,0,1,29,3,66,2,38,0,12,0,0,0,6,7,42,120,0,0,0,255,255,255,242,0,0,0,254,3,30,2,38,0,12,0,0,0,6,7,54,120,0,0,0,255,255,255,252,0,0,0,244,3,11,2,38,0,12,0,0,0,6,7,44,120,0,0,0,255,255,0,80,0,0,0,160,3,33,2,38,0,12,0,0,0,6,7,52,120,0,0,0,255,255,255,241,0,0,0,255,3,73,2,38,0,12,0,0,0,6,7,62,120,0,0,0,255,255,0,65,0,0,0,190,3,95,2,38,0,12,0,0,0,6,7,56,120,0,0,0,255,255,0,83,255,62,0,159,2,147,2,38,0,12,0,0,0,7,7,51,0,121,252,234,0,1,0,44,255,51,0,193,2,147,0,21,0,53,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,17,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,186,0,16,0,0,0,3,43,184,0,7,16,184,0,10,208,48,49,23,34,38,53,52,54,55,35,17,51,17,14,1,21,20,22,51,50,55,23,14,1,128,35,49,36,26,9,46,26,34,32,19,25,18,16,11,37,205,40,42,41,56,26,2,147,253,109,29,54,33,26,26,14,27,10,14,255,255,255,240,0,0,1,0,3,71,2,38,0,12,0,0,0,6,7,49,120,0,0,0,255,255,0,41,255,244,1,219,3,71,2,38,0,13,0,0,0,7,7,40,1,84,0,0,255,255,0,97,255,37,2,36,2,147,2,38,0,14,0,0,0,7,7,84,1,66,0,0,255,255,0,97,255,62,2,36,2,147,2,38,0,14,0,0,0,7,7,51,1,69,252,234,255,255,0,97,255,97,2,36,2,147,2,38,0,14,0,0,0,7,7,43,1,66,253,3,255,255,0,81,0,0,1,191,3,84,2,38,0,15,0,0,0,6,7,37,122,0,0,0,255,255,0,97,0,0,1,191,2,212,2,38,0,15,0,0,0,7,7,63,1,93,255,226,255,255,0,97,255,37,1,191,2,147,2,38,0,15,0,0,0,7,7,84,1,30,0,0,255,255,0,97,0,0,1,191,2,147,2,38,0,15,0,0,0,7,4,119,0,248,1,34,255,255,0,97,255,62,1,191,2,147,2,38,0,15,0,0,0,7,7,51,1,30,252,234,255,255,255,254,255,62,1,191,3,11,2,38,0,15,0,0,0,38,7,44,122,0,0,7,7,51,1,30,252,234,0,0,255,255,0,97,255,97,1,191,2,147,2,38,0,15,0,0,0,7,7,43,1,30,253,3,0,1,0,4,0,0,1,195,2,147,0,13,0,77,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,17,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,186,0,3,0,2,0,8,17,18,57,184,0,3,47,184,0,6,220,184,0,9,208,184,0,3,16,184,0,12,208,184,0,2,16,185,0,13,0,2,244,48,49,37,21,33,17,7,39,55,17,51,17,55,23,7,21,1,195,254,162,78,19,97,46,187,18,205,40,40,1,1,42,31,52,1,105,254,171,99,32,107,238,0,255,255,0,97,0,0,2,97,3,84,2,38,0,16,0,0,0,7,7,37,1,96,0,0,255,255,0,97,0,0,2,97,3,33,2,38,0,16,0,0,0,7,7,52,1,96,0,0,255,255,0,97,255,62,2,97,2,147,2,38,0,16,0,0,0,7,7,51,1,98,252,234,255,255,0,97,0,0,2,27,3,84,2,38,0,17,0,0,0,7,7,37,1,67,0,0,255,255,0,97,0,0,2,27,3,84,2,38,0,17,0,0,0,7,7,34,1,67,0,0,255,255,0,97,0,0,2,27,3,73,2,38,0,17,0,0,0,7,7,62,1,67,0,0,255,255,0,97,0,0,2,27,3,66,2,38,0,17,0,0,0,7,7,42,1,67,0,0,255,255,0,97,255,37,2,27,2,147,2,38,0,17,0,0,0,7,7,84,1,63,0,0,255,255,0,97,0,0,2,27,3,33,2,38,0,17,0,0,0,7,7,52,1,67,0,0,255,255,0,97,255,62,2,27,2,147,2,38,0,17,0,0,0,7,7,51,1,63,252,234,255,255,0,97,255,97,2,27,2,147,2,38,0,17,0,0,0,7,7,43,1,63,253,3,255,255,0,55,255,244,2,86,3,84,2,38,0,18,0,0,0,7,7,34,1,70,0,0,255,255,0,55,255,244,2,86,3,84,2,38,0,18,0,0,0,7,7,37,1,70,0,0,255,255,0,55,255,244,2,86,3,71,2,38,0,18,0,0,0,7,7,40,1,70,0,0,255,255,0,55,255,244,2,86,3,66,2,38,0,18,0,0,0,7,7,42,1,70,0,0,255,255,0,55,255,244,2,86,3,30,2,38,0,18,0,0,0,7,7,54,1,70,0,0,255,255,0,55,255,244,2,86,3,11,2,38,0,18,0,0,0,7,7,44,1,70,0,0,255,255,0,55,255,244,2,86,3,101,2,38,0,18,0,0,0,7,7,60,1,70,0,0,255,255,0,55,255,244,2,86,3,73,2,38,0,18,0,0,0,7,7,62,1,70,0,0,255,255,0,55,255,62,2,86,2,159,2,38,0,18,0,0,0,7,7,51,1,70,252,234,255,255,0,55,255,244,2,86,3,95,2,38,0,18,0,0,0,7,7,56,1,70,0,0,255,255,0,55,255,244,2,86,3,116,2,38,0,18,0,0,0,7,7,119,1,70,0,0,255,255,0,55,255,244,2,86,3,116,2,38,0,18,0,0,0,7,7,121,1,70,0,0,255,255,0,55,255,244,2,86,3,131,2,38,0,18,0,0,0,7,7,123,1,70,0,0,255,255,0,55,255,244,2,86,3,157,2,38,0,18,0,0,0,7,7,125,1,70,0,0,255,255,0,55,255,62,2,86,3,71,2,38,0,18,0,0,0,39,7,40,1,70,0,0,0,7,7,51,1,70,252,234,255,255,0,55,255,244,2,86,3,71,2,38,0,18,0,0,0,7,7,49,1,70,0,0,255,255,0,55,255,244,2,86,3,177,2,38,0,18,0,0,0,7,7,137,1,70,0,0,0,3,0,56,255,233,2,90,2,170,0,11,0,23,0,51,0,117,0,184,0,0,69,88,184,0,46,47,27,185,0,46,0,17,62,89,184,0,0,69,88,184,0,32,47,27,185,0,32,0,5,62,89,186,0,35,0,46,0,32,17,18,57,184,0,35,16,184,0,0,220,184,0,32,16,185,0,3,0,2,244,186,0,49,0,46,0,32,17,18,57,184,0,49,16,184,0,24,220,184,0,11,220,184,0,49,16,184,0,12,220,184,0,46,16,185,0,15,0,2,244,184,0,35,16,184,0,38,220,184,0,23,220,48,49,55,30,1,51,50,62,2,53,52,38,47,1,46,1,35,34,14,2,21,20,22,23,1,30,1,21,20,14,2,35,34,38,39,7,39,55,46,1,53,52,62,2,51,50,22,23,55,23,177,29,77,47,50,82,59,32,27,25,23,29,74,45,50,83,58,32,25,23,1,119,35,37,40,72,100,60,54,91,35,66,28,70,32,35,40,72,100,59,52,89,35,60,29,101,34,37,43,79,111,69,63,102,38,30,31,33,42,77,110,68,61,101,38,1,186,45,121,76,78,127,90,49,40,37,88,22,94,45,120,74,78,125,89,47,36,34,81,22,0,0,0,0,2,0,55,0,0,3,18,2,147,0,20,0,33,0,85,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,10,16,185,0,23,0,2,244,184,0,12,208,186,0,17,0,10,0,0,17,18,57,184,0,17,47,185,0,15,0,1,244,184,0,0,16,185,0,33,0,2,244,184,0,19,208,48,49,33,34,46,2,53,52,62,2,51,33,21,33,21,51,21,35,17,33,21,37,17,35,34,14,2,21,20,30,2,51,1,111,78,117,78,39,39,79,117,78,1,152,254,217,245,245,1,49,254,161,63,69,101,67,32,32,67,101,69,47,87,123,75,75,120,86,46,40,249,40,254,222,40,39,2,69,42,75,107,64,65,107,78,43,0,0,0,0,2,0,59,255,244,2,90,3,32,0,19,0,50,0,71,0,184,0,0,69,88,184,0,43,47,27,185,0,43,0,17,62,89,184,0,0,69,88,184,0,33,47,27,185,0,33,0,5,62,89,185,0,0,0,2,244,184,0,43,16,185,0,10,0,2,244,186,0,25,0,43,0,10,17,18,57,184,0,25,16,184,0,45,208,48,49,37,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,1,22,21,20,6,7,30,1,21,20,14,2,35,34,46,2,53,52,62,2,51,50,23,54,53,52,38,39,1,74,50,82,59,32,32,59,82,50,50,83,58,32,32,58,83,1,38,20,56,47,52,59,40,72,100,60,59,100,72,40,40,72,100,59,69,56,94,6,8,30,43,79,111,69,68,110,77,42,42,77,110,68,69,111,79,43,3,2,34,36,47,55,14,43,143,96,78,127,90,49,49,90,127,78,78,125,89,47,32,16,72,12,29,13,0,0,0,255,255,0,59,255,244,2,90,3,84,2,38,0,177,0,0,0,7,7,37,1,70,0,0,255,255,0,59,255,244,2,90,3,84,2,38,0,177,0,0,0,7,7,34,1,70,0,0,255,255,0,59,255,244,2,90,3,95,2,38,0,177,0,0,0,7,7,56,1,70,0,0,255,255,0,59,255,244,2,90,3,66,2,38,0,177,0,0,0,7,7,42,1,68,0,0,255,255,0,59,255,62,2,90,3,32,2,38,0,177,0,0,0,7,7,51,1,70,252,234,0,2,0,55,255,51,2,86,2,159,0,35,0,55,0,73,0,184,0,0,69,88,184,0,16,47,27,185,0,16,0,17,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,5,62,89,186,0,30,0,0,0,3,43,184,0,6,16,184,0,24,208,184,0,6,16,185,0,36,0,2,244,184,0,16,16,185,0,46,0,2,244,48,49,5,34,38,53,52,54,55,34,46,2,53,52,62,2,51,50,30,2,21,20,6,7,14,1,21,20,22,51,50,55,23,14,1,39,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,1,101,35,49,32,29,65,103,72,39,40,72,100,59,60,100,72,40,104,99,43,39,31,19,25,18,17,12,37,48,50,82,59,32,32,59,82,50,50,83,58,32,32,58,83,205,40,42,30,58,23,49,90,127,78,78,125,89,47,47,89,125,78,132,163,45,19,62,27,26,26,14,27,10,14,235,43,79,111,69,68,110,77,42,42,77,110,68,69,111,79,43,0,0,255,255,0,97,0,0,2,3,3,84,2,38,0,21,0,0,0,7,7,37,1,21,0,0,255,255,0,97,0,0,2,3,3,73,2,38,0,21,0,0,0,7,7,62,1,21,0,0,255,255,0,97,0,0,2,3,3,33,2,38,0,21,0,0,0,7,7,52,1,22,0,0,255,255,0,97,255,37,2,3,2,147,2,38,0,21,0,0,0,7,7,84,1,35,0,0,255,255,0,97,255,62,2,3,2,147,2,38,0,21,0,0,0,7,7,51,1,35,252,234,255,255,0,97,255,62,2,3,3,11,2,38,0,21,0,0,0,39,7,44,1,21,0,0,0,7,7,51,1,35,252,234,255,255,0,97,255,97,2,3,2,147,2,38,0,21,0,0,0,7,7,43,1,35,253,3,255,255,0,46,255,244,1,224,3,84,2,38,0,22,0,0,0,7,7,37,1,15,0,0,255,255,0,46,255,244,1,224,3,71,2,38,0,22,0,0,0,7,7,40,1,15,0,0,255,255,0,46,255,244,1,224,3,73,2,38,0,22,0,0,0,7,7,62,1,15,0,0,255,255,0,46,255,37,1,224,2,159,2,38,0,22,0,0,0,7,7,87,1,12,0,0,255,255,0,46,255,37,1,224,2,159,2,38,0,22,0,0,0,7,7,84,1,12,0,0,255,255,0,46,255,244,1,224,3,33,2,38,0,22,0,0,0,7,7,52,1,15,0,0,255,255,0,46,255,62,1,224,2,159,2,38,0,22,0,0,0,7,7,51,1,12,252,234,0,1,0,98,255,244,2,87,2,159,0,44,0,85,0,184,0,0,69,88,184,0,31,47,27,185,0,31,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,7,0,2,244,186,0,15,0,31,0,0,17,18,57,184,0,31,16,185,0,20,0,2,244,184,0,0,16,184,0,25,208,184,0,25,47,186,0,35,0,15,0,16,17,18,57,48,49,5,34,38,39,55,30,1,51,50,54,53,52,46,2,47,1,55,46,1,35,34,6,21,17,35,17,52,62,2,51,50,22,23,7,30,3,21,20,14,2,1,160,53,92,32,31,31,70,45,65,70,17,48,85,67,3,154,19,72,57,89,104,46,35,64,88,54,75,95,29,156,61,83,51,22,27,49,67,12,41,38,32,36,34,77,60,28,51,42,32,11,35,170,40,55,106,115,254,103,1,166,60,93,63,33,75,63,170,10,37,51,63,35,38,66,48,27,255,255,0,29,0,0,1,239,3,73,2,38,0,23,0,0,0,7,7,62,1,5,0,0,255,255,0,29,255,37,1,239,2,147,2,38,0,23,0,0,0,7,7,87,0,255,0,0,255,255,0,29,255,37,1,239,2,147,2,38,0,23,0,0,0,7,7,84,1,7,0,0,255,255,0,29,255,62,1,239,2,147,2,38,0,23,0,0,0,7,7,51,1,7,252,234,255,255,0,29,255,97,1,239,2,147,2,38,0,23,0,0,0,7,7,43,1,7,253,3,0,1,0,29,0,0,1,239,2,147,0,16,0,73,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,17,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,5,62,89,187,0,11,0,1,0,8,0,4,43,184,0,11,16,184,0,2,208,184,0,8,16,184,0,3,208,184,0,14,16,185,0,16,0,2,244,48,49,1,17,51,21,35,17,35,17,35,53,55,51,17,35,53,33,21,1,29,127,127,46,127,86,41,210,1,210,2,107,255,0,33,254,182,1,74,31,2,1,0,40,40,0,0,255,255,0,95,255,244,2,27,3,84,2,38,0,24,0,0,0,7,7,34,1,61,0,0,255,255,0,95,255,244,2,27,3,84,2,38,0,24,0,0,0,7,7,37,1,61,0,0,255,255,0,95,255,244,2,27,3,71,2,38,0,24,0,0,0,7,7,40,1,61,0,0,255,255,0,95,255,244,2,27,3,66,2,38,0,24,0,0,0,7,7,42,1,61,0,0,255,255,0,95,255,244,2,27,3,30,2,38,0,24,0,0,0,7,7,54,1,61,0,0,255,255,0,95,255,244,2,27,3,11,2,38,0,24,0,0,0,7,7,44,1,61,0,0,255,255,0,95,255,244,2,27,3,71,2,38,0,24,0,0,0,7,7,49,1,61,0,0,255,255,0,95,255,244,2,27,3,103,2,38,0,24,0,0,0,7,7,58,1,61,0,0,255,255,0,95,255,244,2,27,3,101,2,38,0,24,0,0,0,7,7,60,1,61,0,0,255,255,0,95,255,244,2,27,3,73,2,38,0,24,0,0,0,7,7,62,1,61,0,0,255,255,0,95,255,244,2,27,3,119,2,38,0,24,0,0,0,7,7,115,1,61,0,0,255,255,0,95,255,244,2,27,3,177,2,38,0,24,0,0,0,7,7,108,1,61,0,0,255,255,0,95,255,244,2,27,3,175,2,38,0,24,0,0,0,7,7,117,1,61,0,0,255,255,0,95,255,244,2,27,3,177,2,38,0,24,0,0,0,7,7,111,1,61,0,0,255,255,0,95,255,62,2,27,2,147,2,38,0,24,0,0,0,7,7,51,1,61,252,234,255,255,0,95,255,244,2,27,3,95,2,38,0,24,0,0,0,7,7,56,1,61,0,0,0,1,0,95,255,51,2,27,2,147,0,45,0,71,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,17,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,186,0,40,0,0,0,3,43,184,0,8,16,185,0,21,0,2,244,184,0,14,16,184,0,27,208,184,0,8,16,184,0,34,208,48,49,5,34,38,53,52,62,2,55,34,46,2,53,17,51,17,20,30,2,51,50,62,2,53,17,51,17,20,14,2,7,14,1,21,20,22,51,50,55,23,14,1,1,90,35,50,12,18,23,11,48,84,62,36,46,29,48,63,35,36,65,49,30,43,25,43,56,30,40,44,31,20,23,20,16,11,38,205,40,42,19,32,26,23,11,26,62,102,75,1,150,254,111,66,87,53,22,22,53,87,66,1,145,254,106,65,86,58,37,15,20,62,26,26,26,14,27,10,14,0,0,1,0,95,255,244,2,133,3,52,0,39,0,59,0,184,0,0,69,88,184,0,19,47,27,185,0,19,0,17,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,184,0,19,16,184,0,32,208,184,0,7,220,184,0,13,16,185,0,26,0,2,244,48,49,1,22,21,20,14,2,7,17,20,14,2,35,34,46,2,53,17,51,17,20,30,2,51,50,62,2,53,17,51,62,1,53,52,38,39,2,114,19,18,30,38,20,38,62,80,43,42,80,62,37,46,29,48,63,35,36,65,49,30,10,48,46,6,8,3,52,35,35,27,40,27,18,5,254,132,77,102,61,25,25,61,102,77,1,150,254,111,66,87,53,22,22,53,87,66,1,145,7,41,40,12,29,13,255,255,0,95,255,244,2,133,3,84,2,38,0,222,0,0,0,7,7,37,1,60,0,0,255,255,0,95,255,244,2,133,3,84,2,38,0,222,0,0,0,7,7,34,1,60,0,0,255,255,0,95,255,244,2,133,3,95,2,38,0,222,0,0,0,7,7,56,1,60,0,0,255,255,0,95,255,244,2,133,3,66,2,38,0,222,0,0,0,7,7,42,1,60,0,0,255,255,0,95,255,62,2,133,3,52,2,38,0,222,0,0,0,7,7,51,1,60,252,234,255,255,0,28,0,0,2,228,3,84,2,38,0,26,0,0,0,7,7,34,1,129,0,0,255,255,0,28,0,0,2,228,3,84,2,38,0,26,0,0,0,7,7,37,1,129,0,0,255,255,0,28,0,0,2,228,3,71,2,38,0,26,0,0,0,7,7,40,1,129,0,0,255,255,0,28,0,0,2,228,3,30,2,38,0,26,0,0,0,7,7,54,1,129,0,0,255,255,0,3,0,0,1,188,3,84,2,38,0,28,0,0,0,7,7,34,0,223,0,0,255,255,0,3,0,0,1,188,3,84,2,38,0,28,0,0,0,7,7,37,0,223,0,0,255,255,0,3,0,0,1,188,3,71,2,38,0,28,0,0,0,7,7,40,0,223,0,0,255,255,0,3,0,0,1,188,3,30,2,38,0,28,0,0,0,7,7,54,0,223,0,0,255,255,0,3,0,0,1,188,3,33,2,38,0,28,0,0,0,7,7,52,0,223,0,0,255,255,0,3,255,62,1,188,2,147,2,38,0,28,0,0,0,7,7,51,0,225,252,234,255,255,0,3,0,0,1,188,3,95,2,38,0,28,0,0,0,7,7,56,0,223,0,0,255,255,0,3,0,0,1,188,3,66,2,38,0,28,0,0,0,7,7,42,0,223,0,0,255,255,0,50,0,0,1,234,3,84,2,38,0,29,0,0,0,7,7,37,1,23,0,0,255,255,0,50,0,0,1,234,3,73,2,38,0,29,0,0,0,7,7,62,1,23,0,0,255,255,0,50,0,0,1,234,3,33,2,38,0,29,0,0,0,7,7,52,1,23,0,0,255,255,0,50,255,62,1,234,2,147,2,38,0,29,0,0,0,7,7,51,1,25,252,234,255,255,0,50,255,97,1,234,2,147,2,38,0,29,0,0,0,7,7,43,1,26,253,3,0,2,0,37,0,0,2,58,2,147,0,16,0,33,0,89,0,184,0,0,69,88,184,0,33,47,27,185,0,33,0,17,62,89,184,0,0,69,88,184,0,28,47,27,185,0,28,0,5,62,89,185,0,0,0,2,244,184,0,33,16,185,0,10,0,2,244,186,0,14,0,33,0,28,17,18,57,184,0,14,47,185,0,13,0,1,244,184,0,14,16,184,0,30,208,184,0,13,16,184,0,31,208,48,49,37,50,62,2,53,52,46,2,43,1,21,51,21,35,17,19,50,30,2,21,20,14,2,43,1,17,35,53,55,17,1,10,67,97,62,30,30,62,97,67,102,163,163,107,76,113,74,36,36,74,112,76,154,81,81,39,43,78,107,65,64,106,76,42,255,33,254,219,2,108,46,86,120,75,75,123,87,47,1,76,31,2,1,38,0,0,0,0,2,0,97,0,0,2,0,2,147,0,14,0,23,0,57,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,14,47,27,185,0,14,0,5,62,89,187,0,23,0,2,0,12,0,4,43,187,0,2,0,2,0,22,0,4,43,48,49,19,51,21,51,50,30,2,21,20,6,43,1,21,35,55,50,54,53,52,38,43,1,17,97,46,134,55,87,61,32,124,111,134,46,169,101,98,99,100,123,2,147,117,20,43,70,51,97,95,166,205,72,81,82,63,254,214,0,0,0,2,0,62,255,244,2,81,2,159,0,8,0,35,0,75,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,17,62,89,184,0,0,69,88,184,0,20,47,27,185,0,20,0,5,62,89,186,0,29,0,12,0,20,17,18,57,184,0,29,47,184,0,0,220,184,0,20,16,185,0,5,0,2,244,184,0,12,16,185,0,32,0,2,244,48,49,19,30,3,51,50,54,55,1,62,1,51,50,22,21,20,14,2,35,34,46,2,53,52,54,53,33,46,1,35,34,6,7,109,1,33,55,77,47,100,117,7,254,97,33,99,63,128,139,38,71,100,62,62,97,66,35,1,1,228,2,112,107,51,88,32,1,43,62,101,71,38,143,129,1,41,32,43,176,164,81,127,89,46,50,89,124,75,2,6,3,141,154,37,30,0,0,0,0,1,0,97,255,244,2,50,2,159,0,41,0,85,0,184,0,0,69,88,184,0,32,47,27,185,0,32,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,7,0,2,244,184,0,32,16,185,0,17,0,2,244,186,0,27,0,0,0,32,17,18,57,184,0,27,16,185,0,22,0,2,244,184,0,32,16,184,0,25,208,184,0,25,47,48,49,5,34,38,39,55,30,1,51,50,62,2,53,52,46,2,35,34,14,2,7,17,35,17,51,21,62,3,51,50,30,2,21,20,14,2,1,147,18,40,14,14,12,25,17,23,42,31,19,28,50,69,41,23,50,49,45,16,46,46,17,44,49,53,27,49,84,61,35,25,44,57,12,6,7,43,5,6,30,71,116,87,85,112,67,28,17,29,39,21,253,245,2,147,88,20,36,28,16,35,79,128,92,99,133,82,35,0,0,0,0,2,0,97,255,100,1,128,2,147,0,3,0,18,0,64,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,17,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,187,0,11,0,1,0,4,0,4,43,48,49,19,51,17,35,23,34,38,39,55,30,1,51,50,54,53,17,51,17,20,97,46,46,177,17,33,11,10,9,27,14,40,25,46,2,147,253,109,156,8,5,39,3,6,58,46,2,156,253,94,141,0,0,255,255,0,58,255,244,1,156,2,242,2,38,0,30,0,0,0,7,7,33,0,254,0,0,255,255,0,58,255,244,1,156,2,242,2,38,0,30,0,0,0,7,7,36,0,254,0,0,255,255,0,58,255,244,1,156,2,225,2,38,0,30,0,0,0,7,7,39,0,254,0,0,255,255,0,58,255,244,1,162,2,198,2,38,0,30,0,0,0,7,7,41,0,254,0,0,255,255,0,58,255,244,1,156,2,160,2,38,0,30,0,0,0,7,7,53,0,254,0,0,255,255,0,58,255,244,1,156,2,130,2,38,0,30,0,0,0,7,7,43,0,254,0,0,255,255,0,58,255,244,1,156,2,211,2,38,0,30,0,0,0,7,7,47,0,254,0,0,255,255,0,58,255,244,1,156,2,227,2,38,0,30,0,0,0,7,7,57,0,254,0,0,255,255,0,58,255,244,1,156,2,225,2,38,0,30,0,0,0,7,7,61,0,254,0,0,255,255,0,58,255,62,1,156,1,236,2,38,0,30,0,0,0,7,7,51,0,238,252,234,255,255,0,58,255,244,1,156,2,229,2,38,0,30,0,0,0,7,7,55,0,254,0,0,255,255,0,58,255,244,1,207,3,3,2,38,0,30,0,0,0,7,7,118,0,254,0,0,255,255,0,27,255,244,1,156,3,3,2,38,0,30,0,0,0,7,7,120,0,254,0,0,255,255,0,58,255,244,1,180,3,8,2,38,0,30,0,0,0,7,7,122,0,254,0,0,255,255,0,58,255,244,1,156,3,17,2,38,0,30,0,0,0,7,7,124,0,254,0,0,255,255,0,58,255,62,1,156,2,225,2,38,0,30,0,0,0,39,7,39,0,254,0,0,0,7,7,51,0,238,252,234,255,255,0,58,255,244,1,156,3,33,2,38,0,30,0,0,0,7,7,126,0,254,0,0,255,255,0,58,255,244,1,156,3,33,2,38,0,30,0,0,0,7,7,128,0,254,0,0,255,255,0,58,255,244,1,156,3,57,2,38,0,30,0,0,0,7,7,130,0,254,0,0,255,255,0,58,255,244,1,156,3,17,2,38,0,30,0,0,0,7,7,132,0,254,0,0,255,255,0,58,255,62,1,156,2,211,2,38,0,30,0,0,0,39,7,47,0,254,0,0,0,7,7,51,0,238,252,234,0,2,0,58,255,53,1,178,1,236,0,52,0,66,0,121,0,184,0,0,69,88,184,0,35,47,27,185,0,35,0,9,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,186,0,47,0,0,0,3,43,184,0,11,16,184,0,41,208,184,0,41,47,184,0,6,208,186,0,7,0,35,0,11,17,18,57,186,0,21,0,35,0,11,17,18,57,184,0,35,16,185,0,26,0,1,244,184,0,11,16,185,0,53,0,1,244,184,0,7,16,185,0,56,0,1,244,184,0,21,16,185,0,57,0,1,244,48,49,5,34,38,53,52,54,55,39,35,14,1,35,34,46,2,53,52,62,2,55,52,46,2,35,34,6,7,39,62,3,51,50,30,2,21,17,14,1,21,20,22,51,50,55,23,14,1,39,50,54,55,53,14,3,21,20,30,2,1,113,35,47,53,35,5,3,37,85,48,29,50,38,22,37,76,117,80,8,26,44,36,48,80,25,20,13,37,46,54,29,42,58,36,16,38,48,29,20,23,20,16,12,37,180,42,76,45,74,102,62,27,16,28,37,203,40,41,38,69,22,55,29,45,16,32,49,34,40,60,44,29,9,27,55,43,27,38,18,33,9,22,18,13,29,50,67,39,254,205,19,65,32,26,26,14,26,10,13,229,40,38,163,9,26,36,46,28,26,36,23,11,0,3,0,65,255,244,2,234,1,236,0,56,0,73,0,82,0,155,0,184,0,0,69,88,184,0,22,47,27,185,0,22,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,186,0,8,0,22,0,0,17,18,57,184,0,22,16,185,0,13,0,1,244,184,0,0,16,184,0,49,208,186,0,25,0,22,0,49,17,18,57,184,0,22,16,184,0,28,208,186,0,35,0,28,0,49,17,18,57,184,0,0,16,185,0,57,0,1,244,184,0,40,208,186,0,54,0,0,0,28,17,18,57,184,0,54,16,185,0,62,0,1,244,184,0,8,16,185,0,66,0,1,244,184,0,35,16,185,0,74,0,1,244,184,0,13,16,184,0,77,208,48,49,23,34,46,2,53,52,54,55,52,46,2,35,34,6,7,39,62,3,51,50,22,23,62,1,51,50,22,21,28,1,7,33,20,30,2,51,50,54,55,23,14,3,35,34,46,2,39,14,1,39,50,62,2,55,46,1,53,39,14,3,21,20,22,37,52,38,35,34,14,2,7,205,29,50,39,22,150,155,8,25,45,35,45,79,24,20,13,36,45,51,27,59,69,12,26,87,54,85,93,2,254,180,26,46,63,36,39,59,27,19,14,30,36,42,26,32,52,42,33,13,48,109,38,19,46,47,46,21,11,10,1,70,98,62,28,60,2,22,73,65,30,53,41,27,4,12,16,32,49,34,80,84,18,27,55,43,27,38,18,33,9,22,18,13,65,55,55,65,116,106,9,18,9,45,76,55,31,23,20,35,9,16,14,8,17,28,36,18,46,53,38,12,24,35,22,22,65,34,27,9,25,36,46,29,52,44,242,93,93,27,49,69,41,0,0,255,255,0,65,255,244,2,234,2,242,2,38,1,16,0,0,0,7,7,36,1,158,0,0,255,255,0,65,255,244,2,234,2,130,2,38,1,16,0,0,0,7,7,43,1,158,0,0,0,2,0,15,255,244,1,236,2,207,0,16,0,45,0,141,0,184,0,0,69,88,184,0,39,47,27,185,0,39,0,19,62,89,184,0,0,69,88,184,0,28,47,27,185,0,28,0,5,62,89,184,0,39,16,184,0,38,220,184,0,35,220,184,0,20,220,186,0,32,0,28,0,20,17,18,57,184,0,32,16,185,0,0,0,1,244,184,0,28,16,185,0,3,0,1,244,184,0,20,16,185,0,13,0,1,244,186,0,17,0,20,0,28,17,18,57,184,0,17,16,185,0,16,0,1,244,184,0,28,16,184,0,34,208,184,0,34,47,184,0,38,16,184,0,42,208,184,0,35,16,184,0,43,208,48,49,55,30,1,51,50,62,2,53,52,46,2,35,34,6,7,39,62,1,51,50,22,21,20,14,2,35,34,38,39,35,7,35,17,35,53,55,53,51,21,51,21,35,21,136,40,74,28,36,62,44,25,17,36,58,41,36,78,43,2,37,84,45,96,96,34,59,77,42,35,75,34,2,5,37,77,77,44,190,190,89,34,28,30,54,74,45,40,69,51,29,41,38,43,31,44,124,103,57,91,62,33,33,28,49,2,69,29,4,105,105,33,104,0,0,0,255,255,0,92,255,97,1,236,2,207,2,38,0,31,0,0,0,7,7,43,1,22,253,3,255,255,0,52,255,37,1,167,1,236,2,38,0,32,0,0,0,7,7,86,1,9,0,0,255,255,0,52,255,244,1,167,2,242,2,38,0,32,0,0,0,7,7,36,1,15,0,0,255,255,0,52,255,244,1,167,2,225,2,38,0,32,0,0,0,7,7,39,1,15,0,0,255,255,0,52,255,244,1,167,2,225,2,38,0,32,0,0,0,7,7,61,1,15,0,0,255,255,0,52,255,244,1,167,2,164,2,38,0,32,0,0,0,7,7,51,1,15,0,0,255,255,0,52,255,244,2,40,2,242,0,38,0,33,0,0,0,7,7,63,2,32,0,0,255,255,0,52,255,62,1,196,2,207,2,38,0,33,0,0,0,7,7,51,1,40,252,234,255,255,0,52,255,97,1,196,2,207,2,38,0,33,0,0,0,7,7,43,1,39,253,3,0,2,0,52,255,244,2,15,2,207,0,14,0,43,0,143,0,184,0,0,69,88,184,0,40,47,27,185,0,40,0,19,62,89,184,0,0,69,88,184,0,23,47,27,185,0,23,0,5,62,89,184,0,40,16,184,0,39,220,185,0,36,0,1,244,184,0,31,220,186,0,34,0,31,0,23,17,18,57,184,0,34,16,185,0,0,0,1,244,184,0,31,16,185,0,3,0,1,244,184,0,23,16,185,0,11,0,1,244,186,0,19,0,23,0,31,17,18,57,184,0,19,16,185,0,14,0,1,244,184,0,36,16,184,0,16,208,184,0,23,16,184,0,17,208,184,0,17,47,184,0,39,16,184,0,42,208,48,49,1,46,1,35,34,14,2,21,20,22,51,50,54,55,19,7,17,35,39,35,14,1,35,34,38,53,52,62,2,51,50,22,23,39,53,35,53,51,53,51,21,51,1,152,38,67,35,36,62,45,26,81,77,40,73,38,119,75,38,5,2,29,79,48,91,108,34,59,77,43,44,65,36,2,170,170,44,75,1,101,34,28,31,53,71,41,88,108,41,38,1,223,4,253,187,62,30,44,120,114,54,87,62,33,31,28,88,94,33,105,105,0,0,255,255,0,52,255,244,1,189,2,242,2,38,0,34,0,0,0,7,7,33,1,5,0,0,255,255,0,52,255,244,1,189,2,242,2,38,0,34,0,0,0,7,7,36,1,5,0,0,255,255,0,52,255,244,1,189,2,225,2,38,0,34,0,0,0,7,7,39,1,5,0,0,255,255,0,52,255,244,1,189,2,225,2,38,0,34,0,0,0,7,7,61,1,5,0,0,255,255,0,52,255,244,1,189,2,160,2,38,0,34,0,0,0,7,7,53,1,5,0,0,255,255,0,52,255,244,1,189,2,130,2,38,0,34,0,0,0,7,7,43,1,5,0,0,255,255,0,52,255,244,1,189,2,211,2,38,0,34,0,0,0,7,7,47,1,5,0,0,255,255,0,52,255,244,1,189,2,164,2,38,0,34,0,0,0,7,7,51,1,5,0,0,255,255,0,52,255,62,1,189,1,236,2,38,0,34,0,0,0,7,7,51,1,2,252,234,255,255,0,52,255,244,1,189,2,229,2,38,0,34,0,0,0,7,7,55,1,5,0,0,255,255,0,52,255,244,1,189,2,198,2,38,0,34,0,0,0,7,7,41,1,5,0,0,255,255,0,52,255,244,1,214,3,3,2,38,0,34,0,0,0,7,7,118,1,5,0,0,255,255,0,34,255,244,1,189,3,3,2,38,0,34,0,0,0,7,7,120,1,5,0,0,255,255,0,52,255,244,1,189,3,8,2,38,0,34,0,0,0,7,7,122,1,5,0,0,255,255,0,52,255,244,1,189,3,17,2,38,0,34,0,0,0,7,7,124,1,5,0,0,255,255,0,52,255,62,1,189,2,225,2,38,0,34,0,0,0,39,7,39,1,5,0,0,0,7,7,51,1,1,252,234,0,2,0,52,255,53,1,189,1,236,0,50,0,59,0,89,0,184,0,0,69,88,184,0,21,47,27,185,0,21,0,9,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,186,0,45,0,0,0,3,43,186,0,28,0,21,0,11,17,18,57,184,0,28,47,184,0,11,16,185,0,33,0,1,244,184,0,28,16,185,0,51,0,1,244,184,0,21,16,185,0,54,0,1,244,48,49,5,34,38,53,52,62,2,55,14,1,35,34,46,2,53,52,62,2,51,50,22,21,28,1,7,33,30,3,51,50,54,55,23,14,3,21,20,22,51,50,55,23,14,1,19,52,38,35,34,14,2,7,1,99,35,46,12,18,22,11,16,30,17,46,81,60,35,35,59,75,40,86,98,2,254,166,1,26,47,66,41,39,63,27,18,32,44,26,11,29,20,25,18,16,11,38,32,76,65,31,56,45,29,4,203,40,41,19,35,31,25,9,5,4,34,65,93,59,59,94,65,35,116,106,9,18,9,45,77,55,31,23,20,34,24,40,37,34,16,26,26,14,26,10,13,1,217,93,91,25,48,68,43,0,0,255,255,0,52,255,244,1,189,3,54,2,38,0,34,0,0,0,7,7,136,1,5,0,0,255,255,0,52,255,25,1,220,2,242,2,38,0,36,0,0,0,7,7,36,1,4,0,0,255,255,0,52,255,25,1,220,2,225,2,38,0,36,0,0,0,7,7,39,1,4,0,0,255,255,0,52,255,25,1,220,2,211,2,38,0,36,0,0,0,7,7,47,1,4,0,0,255,255,0,52,255,25,1,220,2,164,2,38,0,36,0,0,0,7,7,51,1,4,0,0,255,255,0,52,255,25,1,220,2,225,2,38,0,36,0,0,0,7,7,85,1,4,0,0,255,255,0,52,255,25,1,220,2,225,2,38,0,36,0,0,0,7,7,61,1,4,0,0,255,255,0,52,255,25,1,220,2,130,2,38,0,36,0,0,0,7,7,43,1,4,0,0,255,255,0,52,255,25,1,220,2,198,2,38,0,36,0,0,0,7,7,41,1,4,0,0,255,255,255,237,0,0,1,191,3,110,2,38,0,37,0,0,0,6,7,40,116,39,0,0,255,255,0,92,255,62,1,191,2,207,2,38,0,37,0,0,0,7,7,51,1,26,252,234,255,255,0,92,255,97,1,191,2,207,2,38,0,37,0,0,0,7,7,43,1,26,253,3,255,255,0,92,255,26,1,191,2,207,2,38,0,37,0,0,0,7,7,47,1,25,252,224,0,1,0,15,0,0,1,191,2,207,0,27,0,109,0,184,0,0,69,88,184,0,22,47,27,185,0,22,0,19,62,89,184,0,0,69,88,184,0,17,47,27,185,0,17,0,5,62,89,184,0,22,16,184,0,21,220,185,0,18,0,1,244,184,0,3,220,186,0,0,0,3,0,17,17,18,57,184,0,17,16,184,0,8,208,184,0,3,16,185,0,12,0,1,244,184,0,0,16,185,0,15,0,1,244,184,0,21,16,184,0,25,208,184,0,18,16,184,0,26,208,48,49,19,62,1,51,50,22,21,17,35,17,52,38,35,34,6,7,17,35,17,35,53,55,53,51,21,51,21,35,136,38,78,50,75,70,44,51,59,43,70,44,44,77,77,44,190,190,1,115,38,49,90,94,254,238,1,12,77,73,45,45,254,184,2,69,29,4,105,105,33,255,255,255,255,0,0,0,167,2,242,2,38,1,73,0,0,0,6,7,33,114,0,0,0,255,255,0,61,0,0,0,229,2,242,2,38,1,73,0,0,0,6,7,36,114,0,0,0,255,255,255,232,0,0,0,252,2,225,2,38,1,73,0,0,0,6,7,39,114,0,0,0,255,255,255,206,0,0,1,22,2,198,2,38,1,73,0,0,0,6,7,41,114,0,0,0,255,255,255,244,0,0,0,240,2,160,2,38,1,73,0,0,0,6,7,53,114,0,0,0,255,255,255,247,0,0,0,237,2,130,2,38,1,73,0,0,0,6,7,43,114,0,0,0,255,255,255,232,0,0,0,252,2,225,2,38,1,73,0,0,0,6,7,61,114,0,0,0,255,255,0,59,0,0,0,184,2,229,2,38,1,73,0,0,0,6,7,55,114,0,0,0,255,255,0,75,255,62,0,155,2,163,2,38,0,38,0,0,0,7,7,51,0,115,252,234,0,2,0,37,255,53,0,183,2,163,0,21,0,33,0,65,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,9,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,186,0,16,0,0,0,3,43,184,0,7,16,184,0,10,208,184,0,8,16,184,0,22,220,184,0,28,220,48,49,23,34,38,53,52,54,55,35,17,51,17,14,1,21,20,22,51,50,55,23,14,1,3,34,38,53,52,54,51,50,22,21,20,6,118,35,46,40,22,7,44,24,37,30,19,23,20,16,11,38,21,16,24,24,16,17,24,24,203,40,41,38,60,24,1,224,254,32,26,58,32,26,26,14,26]);fileData0.push.apply(fileData0,[10,13,3,31,22,17,19,21,21,19,17,22,0,1,0,37,255,53,0,183,1,224,0,21,0,53,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,9,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,186,0,16,0,0,0,3,43,184,0,7,16,184,0,10,208,48,49,23,34,38,53,52,54,55,35,17,51,17,14,1,21,20,22,51,50,55,23,14,1,118,35,46,40,22,7,44,24,37,30,19,23,20,16,11,38,203,40,41,38,60,24,1,224,254,32,26,58,32,26,26,14,26,10,13,255,255,255,222,0,0,1,8,2,211,2,38,1,73,0,0,0,6,7,47,115,0,0,0,0,1,0,92,0,0,0,136,1,224,0,3,0,37,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,48,49,19,51,17,35,92,44,44,1,224,254,32,0,0,255,255,255,223,255,27,0,252,2,225,2,38,1,190,0,0,0,6,7,39,114,0,0,0,255,255,0,92,255,37,1,196,2,207,2,38,0,40,0,0,0,7,7,84,1,1,0,0,255,255,0,92,255,62,1,196,2,207,2,38,0,40,0,0,0,7,7,51,1,1,252,234,255,255,0,92,255,97,1,196,2,207,2,38,0,40,0,0,0,7,7,43,1,1,253,3,0,1,0,92,0,0,1,196,1,224,0,12,0,83,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,186,0,2,0,0,0,12,17,18,57,184,0,0,16,184,0,4,208,184,0,12,16,184,0,8,208,186,0,6,0,0,0,8,17,18,57,186,0,9,0,0,0,12,17,18,57,48,49,19,51,17,51,19,51,7,19,35,3,7,21,35,92,44,3,236,51,156,182,49,159,108,44,1,224,254,221,1,35,190,254,222,1,1,127,130,0,0,255,255,0,65,255,244,0,218,3,135,2,38,0,41,0,0,0,6,7,37,106,51,0,0,255,255,0,92,255,244,0,237,2,242,0,38,0,41,0,0,0,7,7,63,0,229,0,0,255,255,0,92,255,244,1,54,2,207,0,38,0,41,0,0,0,7,4,119,0,158,1,34,255,255,0,56,255,37,0,208,2,207,2,38,0,41,0,0,0,7,7,84,0,140,0,0,255,255,0,92,255,62,0,183,2,207,2,38,0,41,0,0,0,7,7,51,0,140,252,234,255,255,255,246,255,62,0,236,3,100,2,38,0,41,0,0,0,39,7,43,0,113,0,226,0,7,7,51,0,140,252,234,255,255,0,17,255,97,1,7,2,207,2,38,0,41,0,0,0,7,7,43,0,140,253,3,0,1,0,10,255,244,0,213,2,207,0,22,0,71,0,184,0,0,69,88,184,0,17,47,27,185,0,17,0,19,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,5,62,89,186,0,16,0,13,0,3,43,184,0,10,16,185,0,3,0,1,244,184,0,16,16,184,0,19,208,184,0,13,16,184,0,22,208,48,49,55,20,22,51,58,1,55,23,14,1,35,34,53,17,7,39,55,17,51,17,55,23,7,137,12,9,3,7,8,8,7,14,11,59,65,18,83,44,57,19,76,58,16,15,2,36,2,3,76,1,44,42,30,54,1,57,254,224,38,30,51,0,0,255,255,0,92,0,0,2,216,2,242,2,38,0,42,0,0,0,7,7,36,1,152,0,0,255,255,0,92,0,0,2,216,2,164,2,38,0,42,0,0,0,7,7,51,1,152,0,0,255,255,0,92,255,62,2,216,1,236,2,38,0,42,0,0,0,7,7,51,1,163,252,234,255,255,0,92,0,0,1,191,2,242,2,38,0,43,0,0,0,7,7,36,1,27,0,0,255,255,0,92,0,0,1,191,2,242,2,38,0,43,0,0,0,7,7,33,1,26,0,0,255,255,0,92,0,0,1,191,2,225,2,38,0,43,0,0,0,7,7,61,1,27,0,0,255,255,0,92,0,0,1,191,2,198,2,38,0,43,0,0,0,7,7,41,1,27,0,0,255,255,0,92,255,37,1,191,1,236,2,38,0,43,0,0,0,7,7,84,1,16,0,0,255,255,0,92,0,0,1,191,2,164,2,38,0,43,0,0,0,7,7,51,1,27,0,0,255,255,0,92,255,62,1,191,1,236,2,38,0,43,0,0,0,7,7,51,1,17,252,234,255,255,0,92,255,97,1,191,1,236,2,38,0,43,0,0,0,7,7,43,1,16,253,3,255,255,0,58,0,0,2,124,2,188,0,39,0,43,0,189,0,0,0,6,4,131,0,0,255,255,0,52,255,244,1,227,2,242,2,38,0,44,0,0,0,7,7,33,1,11,0,0,255,255,0,52,255,244,1,227,2,242,2,38,0,44,0,0,0,7,7,36,1,11,0,0,255,255,0,52,255,244,1,227,2,225,2,38,0,44,0,0,0,7,7,39,1,11,0,0,255,255,0,52,255,244,1,227,2,198,2,38,0,44,0,0,0,7,7,41,1,11,0,0,255,255,0,52,255,244,1,227,2,160,2,38,0,44,0,0,0,7,7,53,1,11,0,0,255,255,0,52,255,244,1,227,2,130,2,38,0,44,0,0,0,7,7,43,1,11,0,0,255,255,0,52,255,244,1,227,2,238,2,38,0,44,0,0,0,7,7,59,1,11,0,0,255,255,0,52,255,244,1,227,2,225,2,38,0,44,0,0,0,7,7,61,1,11,0,0,255,255,0,52,255,62,1,227,1,236,2,38,0,44,0,0,0,7,7,51,1,12,252,234,255,255,0,52,255,244,1,227,2,229,2,38,0,44,0,0,0,7,7,55,1,11,0,0,255,255,0,52,255,244,1,227,3,3,2,38,0,44,0,0,0,7,7,118,1,11,0,0,255,255,0,40,255,244,1,227,3,3,2,38,0,44,0,0,0,7,7,120,1,11,0,0,255,255,0,52,255,244,1,227,3,8,2,38,0,44,0,0,0,7,7,122,1,11,0,0,255,255,0,52,255,244,1,227,3,17,2,38,0,44,0,0,0,7,7,124,1,11,0,0,255,255,0,52,255,62,1,227,2,225,2,38,0,44,0,0,0,39,7,39,1,11,0,0,0,7,7,51,1,12,252,234,255,255,0,52,255,244,1,227,2,211,2,38,0,44,0,0,0,7,7,47,1,11,0,0,255,255,0,52,255,244,1,227,3,54,2,38,0,44,0,0,0,7,7,136,1,11,0,0,0,3,0,46,255,234,1,233,1,245,0,9,0,19,0,46,0,129,0,184,0,0,69,88,184,0,41,47,27,185,0,41,0,9,62,89,184,0,0,69,88,184,0,28,47,27,185,0,28,0,5,62,89,186,0,0,0,28,0,41,17,18,57,185,0,2,0,1,244,186,0,10,0,41,0,28,17,18,57,184,0,10,16,184,0,9,208,184,0,41,16,185,0,12,0,1,244,184,0,0,16,184,0,19,208,186,0,20,0,9,0,41,17,18,57,186,0,30,0,28,0,19,17,18,57,186,0,33,0,19,0,28,17,18,57,186,0,44,0,41,0,9,17,18,57,48,49,55,22,51,50,62,2,53,52,47,1,38,35,34,14,2,21,20,23,1,30,1,21,20,14,2,35,34,39,7,39,55,46,1,53,52,62,2,51,50,22,23,55,23,153,47,67,36,63,46,26,36,20,46,69,36,63,45,26,36,1,42,24,28,35,59,79,43,82,59,54,26,58,24,28,35,59,78,43,40,73,29,54,26,76,50,31,56,78,47,82,56,27,51,31,57,79,47,81,56,1,52,32,86,54,60,93,64,34,56,66,21,70,32,84,54,60,95,64,34,28,28,65,21,0,0,0,3,0,52,255,244,3,43,1,236,0,39,0,59,0,68,0,105,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,10,16,184,0,16,208,186,0,22,0,10,0,0,17,18,57,184,0,0,16,185,0,40,0,1,244,184,0,27,208,184,0,0,16,184,0,34,208,184,0,10,16,185,0,50,0,1,244,184,0,22,16,185,0,60,0,1,244,184,0,50,16,184,0,63,208,48,49,5,34,46,2,53,52,62,2,51,50,22,23,62,1,51,50,22,21,20,7,33,20,30,2,51,50,54,55,23,14,1,35,34,38,39,14,1,39,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,37,52,38,35,34,14,2,7,1,7,42,76,59,34,34,59,76,42,58,102,26,26,95,58,85,98,3,254,175,27,46,64,36,39,62,27,19,29,69,54,63,100,26,28,96,63,36,61,43,25,25,43,61,36,35,61,44,25,25,44,61,2,29,77,64,30,54,42,27,4,12,34,64,93,60,60,95,64,34,71,71,66,76,116,106,18,18,45,76,55,31,23,20,35,17,30,76,65,70,71,39,31,56,78,47,48,78,57,31,31,57,78,48,47,78,56,31,241,93,93,27,49,69,41,0,2,0,52,255,244,1,245,2,130,0,19,0,53,0,63,0,184,0,0,69,88,184,0,46,47,27,185,0,46,0,9,62,89,184,0,0,69,88,184,0,36,47,27,185,0,36,0,5,62,89,185,0,0,0,1,244,184,0,46,16,185,0,10,0,1,244,186,0,28,0,36,0,46,17,18,57,48,49,37,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,19,30,1,21,20,14,2,7,30,1,21,20,14,2,35,34,46,2,53,52,62,2,51,50,23,54,53,52,38,39,1,11,36,63,45,26,26,45,63,36,36,62,45,26,26,45,62,250,9,11,18,30,38,19,39,48,35,59,79,43,43,78,59,35,35,59,78,43,50,42,99,7,7,27,31,56,78,47,48,78,57,31,31,57,78,48,47,78,56,31,2,103,17,35,18,28,42,30,19,6,32,104,72,60,93,64,34,34,64,93,60,60,95,64,34,21,15,83,12,28,13,255,255,0,52,255,244,1,245,2,242,2,38,1,118,0,0,0,7,7,36,1,11,0,0,255,255,0,52,255,244,1,245,2,242,2,38,1,118,0,0,0,7,7,33,1,11,0,0,255,255,0,52,255,244,1,245,2,229,2,38,1,118,0,0,0,7,7,55,1,11,0,0,255,255,0,52,255,244,1,245,2,198,2,38,1,118,0,0,0,7,7,41,1,7,0,0,255,255,0,52,255,62,1,245,2,130,2,38,1,118,0,0,0,7,7,51,1,12,252,234,0,2,0,52,255,53,1,227,1,236,0,39,0,59,0,73,0,184,0,0,69,88,184,0,18,47,27,185,0,18,0,9,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,186,0,34,0,0,0,3,43,184,0,8,16,184,0,28,208,184,0,8,16,185,0,40,0,1,244,184,0,18,16,185,0,50,0,1,244,48,49,5,34,38,53,52,62,2,55,46,3,53,52,62,2,51,50,30,2,21,20,14,2,7,14,1,21,20,22,51,50,55,23,14,1,39,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,1,38,34,47,11,17,20,8,45,79,59,34,35,59,78,43,43,79,59,35,23,41,58,35,33,42,30,19,25,18,16,11,37,44,36,63,45,26,26,45,63,36,36,62,45,26,26,45,62,203,40,41,19,34,28,22,7,1,34,65,92,59,60,95,64,34,34,64,95,60,51,78,59,42,16,15,62,32,26,26,14,26,10,13,230,31,56,78,47,48,78,57,31,31,57,78,48,47,78,56,31,255,255,0,92,0,0,1,65,2,242,2,38,0,47,0,0,0,7,7,36,0,200,0,0,255,255,0,27,255,37,1,65,1,236,2,38,0,47,0,0,0,6,7,84,111,0,0,0,255,255,0,62,0,0,1,82,2,225,2,38,0,47,0,0,0,7,7,61,0,200,0,0,255,255,0,92,0,0,1,65,2,164,2,38,0,47,0,0,0,7,7,51,0,198,0,0,255,255,0,74,255,62,1,65,1,236,2,38,0,47,0,0,0,7,7,51,0,112,252,234,255,255,0,74,255,62,1,67,2,130,2,38,0,47,0,0,0,39,7,43,0,200,0,0,0,7,7,51,0,112,252,234,255,255,255,244,255,97,1,65,1,236,2,38,0,47,0,0,0,7,7,43,0,111,253,3,255,255,0,32,255,244,1,114,2,242,2,38,0,48,0,0,0,7,7,36,0,210,0,0,255,255,0,32,255,244,1,114,2,225,2,38,0,48,0,0,0,7,7,39,0,210,0,0,255,255,0,32,255,244,1,114,2,225,2,38,0,48,0,0,0,7,7,61,0,210,0,0,255,255,0,32,255,37,1,114,1,236,2,38,0,48,0,0,0,7,7,86,0,214,0,0,255,255,0,32,255,37,1,114,1,236,2,38,0,48,0,0,0,7,7,84,0,217,0,0,255,255,0,32,255,244,1,114,2,164,2,38,0,48,0,0,0,7,7,51,0,210,0,0,255,255,0,32,255,62,1,114,1,236,2,38,0,48,0,0,0,7,7,51,0,217,252,234,0,1,0,92,255,244,2,1,2,217,0,57,0,105,0,184,0,0,69,88,184,0,36,47,27,185,0,36,0,19,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,7,0,1,244,186,0,12,0,36,0,0,17,18,57,186,0,19,0,36,0,0,17,18,57,184,0,36,16,185,0,27,0,1,244,184,0,0,16,184,0,32,208,184,0,32,47,186,0,46,0,0,0,36,17,18,57,186,0,53,0,0,0,36,17,18,57,48,49,5,34,38,39,55,30,1,51,50,62,2,53,52,46,4,53,52,62,2,53,52,38,35,34,6,21,17,35,17,52,54,51,50,30,2,21,20,14,2,21,20,30,4,21,20,14,2,1,111,39,68,29,22,29,53,32,25,38,25,13,31,46,55,46,31,31,36,31,47,48,57,69,44,93,78,33,51,36,19,31,37,31,31,47,54,47,31,22,39,53,12,28,23,33,23,23,17,27,36,19,35,44,31,25,32,45,36,36,52,47,49,34,44,56,84,90,253,251,2,20,93,104,21,36,49,28,39,55,47,47,30,29,36,27,26,36,54,42,30,50,38,21,0,0,0,255,255,0,28,255,244,1,45,2,242,2,38,0,49,0,0,0,7,7,63,1,14,0,0,255,255,0,28,255,37,1,45,2,107,2,38,0,49,0,0,0,7,7,86,0,202,0,0,255,255,0,28,255,37,1,45,2,107,2,38,0,49,0,0,0,7,7,84,0,200,0,0,255,255,0,28,255,62,1,45,2,107,2,38,0,49,0,0,0,7,7,51,0,201,252,234,255,255,0,28,255,97,1,67,2,107,2,38,0,49,0,0,0,7,7,43,0,200,253,3,255,255,0,4,255,244,1,45,3,37,2,38,0,49,0,0,0,7,7,53,0,130,0,133,0,1,0,28,255,244,1,45,2,107,0,35,0,103,0,124,184,0,18,47,24,184,0,0,69,88,184,0,16,47,27,185,0,16,0,9,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,5,62,89,186,0,12,0,9,0,3,43,184,0,16,16,185,0,13,0,1,244,184,0,16,16,184,0,20,208,184,0,13,16,184,0,21,208,184,0,12,16,184,0,24,208,184,0,9,16,184,0,25,208,184,0,3,16,185,0,32,0,1,244,48,49,37,14,1,35,34,46,2,61,1,35,53,55,53,35,53,63,1,51,21,51,21,35,21,51,21,35,21,20,30,2,51,50,54,55,1,45,21,42,15,35,46,28,11,75,75,75,76,6,38,139,139,139,139,7,18,31,25,14,33,13,6,8,10,21,38,54,32,103,29,4,173,34,4,139,139,38,173,33,107,23,37,27,15,9,6,0,0,255,255,0,85,255,244,1,181,2,242,2,38,0,50,0,0,0,7,7,33,1,8,0,0,255,255,0,85,255,244,1,181,2,242,2,38,0,50,0,0,0,7,7,36,1,8,0,0,255,255,0,85,255,244,1,181,2,225,2,38,0,50,0,0,0,7,7,39,1,8,0,0,255,255,0,85,255,244,1,181,2,198,2,38,0,50,0,0,0,7,7,41,1,8,0,0,255,255,0,85,255,244,1,181,2,160,2,38,0,50,0,0,0,7,7,53,1,8,0,0,255,255,0,85,255,244,1,181,2,130,2,38,0,50,0,0,0,7,7,43,1,4,0,0,255,255,0,85,255,244,1,181,2,211,2,38,0,50,0,0,0,7,7,47,1,8,0,0,255,255,0,85,255,244,1,181,2,227,2,38,0,50,0,0,0,7,7,57,1,8,0,0,255,255,0,85,255,244,1,186,2,238,2,38,0,50,0,0,0,7,7,59,1,8,0,0,255,255,0,85,255,244,1,181,2,225,2,38,0,50,0,0,0,7,7,61,1,8,0,0,255,255,0,85,255,244,1,181,3,12,2,38,0,50,0,0,0,7,7,114,1,8,0,0,255,255,0,85,255,244,1,181,3,54,2,38,0,50,0,0,0,7,7,107,1,8,0,0,255,255,0,85,255,244,1,181,3,53,2,38,0,50,0,0,0,7,7,116,1,8,0,0,255,255,0,85,255,244,1,181,3,54,2,38,0,50,0,0,0,7,7,110,1,8,0,0,255,255,0,85,255,62,1,181,1,224,2,38,0,50,0,0,0,7,7,51,1,26,252,234,255,255,0,85,255,244,1,181,2,229,2,38,0,50,0,0,0,7,7,55,1,8,0,0,0,1,0,85,255,53,1,203,1,224,0,37,0,103,0,184,0,0,69,88,184,0,15,47,27,185,0,15,0,9,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,186,0,32,0,0,0,3,43,184,0,11,16,184,0,6,208,186,0,7,0,15,0,11,17,18,57,184,0,11,16,185,0,20,0,1,244,184,0,7,16,185,0,23,0,1,244,184,0,15,16,184,0,24,208,184,0,6,16,184,0,26,208,184,0,26,47,48,49,5,34,38,53,52,54,55,39,35,14,1,35,34,38,53,17,51,17,20,22,51,50,54,55,17,51,17,14,1,21,20,22,51,50,55,23,14,1,1,138,35,46,48,39,5,2,35,78,50,75,70,44,50,59,43,70,42,44,42,44,30,19,25,18,16,11,38,203,40,41,38,62,29,73,42,50,90,94,1,52,254,210,77,73,47,51,1,98,254,32,26,58,32,26,26,14,26,10,13,0,1,0,85,255,244,2,17,2,140,0,34,0,89,0,184,0,0,69,88,184,0,18,47,27,185,0,18,0,9,62,89,184,0,0,69,88,184,0,28,47,27,185,0,28,0,9,62,89,184,0,0,69,88,184,0,14,47,27,185,0,14,0,5,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,5,62,89,184,0,28,16,184,0,7,220,184,0,14,16,185,0,23,0,1,244,48,49,1,22,21,20,14,2,7,17,35,39,35,14,1,35,34,38,53,17,51,17,20,22,51,50,54,55,17,51,62,1,53,52,38,39,1,253,20,18,27,32,15,37,5,2,35,78,50,75,70,44,51,58,43,70,42,7,39,47,7,7,2,140,34,36,30,43,29,18,5,254,55,80,42,50,90,94,1,52,254,210,77,73,47,51,1,98,8,46,45,12,28,13,0,255,255,0,85,255,244,2,17,2,242,2,38,1,164,0,0,0,7,7,36,1,4,0,0,255,255,0,85,255,244,2,17,2,242,2,38,1,164,0,0,0,7,7,33,1,4,0,0,255,255,0,85,255,244,2,17,2,229,2,38,1,164,0,0,0,7,7,55,1,4,0,0,255,255,0,85,255,244,2,17,2,198,2,38,1,164,0,0,0,7,7,41,1,4,0,0,255,255,0,85,255,62,2,17,2,140,2,38,1,164,0,0,0,7,7,51,1,23,252,234,255,255,0,24,0,0,2,149,2,242,2,38,0,52,0,0,0,7,7,33,1,87,0,0,255,255,0,24,0,0,2,149,2,242,2,38,0,52,0,0,0,7,7,36,1,87,0,0,255,255,0,24,0,0,2,149,2,225,2,38,0,52,0,0,0,7,7,39,1,87,0,0,255,255,0,24,0,0,2,149,2,160,2,38,0,52,0,0,0,7,7,53,1,87,0,0,255,255,0,12,255,37,1,168,2,242,2,38,0,54,0,0,0,7,7,33,0,229,0,0,255,255,0,12,255,37,1,168,2,242,2,38,0,54,0,0,0,7,7,36,0,229,0,0,255,255,0,12,255,37,1,168,2,225,2,38,0,54,0,0,0,7,7,39,0,229,0,0,255,255,0,12,255,37,1,168,2,160,2,38,0,54,0,0,0,7,7,53,0,229,0,0,255,255,0,12,255,37,1,168,2,164,2,38,0,54,0,0,0,7,7,51,0,229,0,0,255,255,0,12,255,37,1,168,1,224,2,38,0,54,0,0,0,7,7,51,1,104,252,235,255,255,0,12,255,37,1,168,2,229,2,38,0,54,0,0,0,7,7,55,0,229,0,0,255,255,0,12,255,37,1,168,2,198,2,38,0,54,0,0,0,7,7,41,0,229,0,0,255,255,0,27,0,0,1,122,2,242,2,38,0,55,0,0,0,7,7,36,0,219,0,0,255,255,0,27,0,0,1,122,2,225,2,38,0,55,0,0,0,7,7,61,0,219,0,0,255,255,0,27,0,0,1,122,2,164,2,38,0,55,0,0,0,7,7,51,0,219,0,0,255,255,0,27,255,62,1,122,1,224,2,38,0,55,0,0,0,7,7,51,0,218,252,234,255,255,0,27,255,97,1,122,1,224,2,38,0,55,0,0,0,7,7,43,0,218,253,3,0,2,0,60,255,244,1,214,2,212,0,21,0,60,0,85,0,184,0,0,69,88,184,0,55,47,27,185,0,55,0,19,62,89,184,0,0,69,88,184,0,32,47,27,185,0,32,0,5,62,89,185,0,0,0,1,244,184,0,55,16,184,0,51,208,184,0,48,220,184,0,49,208,184,0,42,208,185,0,12,0,1,244,184,0,48,16,184,0,22,208,184,0,51,16,184,0,58,208,48,49,37,50,62,2,53,52,39,46,3,35,34,14,2,21,20,30,2,19,30,3,21,20,14,2,35,34,46,2,53,52,62,2,51,50,22,23,46,1,39,7,39,55,46,1,39,55,30,1,23,55,23,1,11,41,59,39,19,3,19,39,38,38,19,41,61,42,21,26,44,60,101,30,49,36,20,30,53,75,45,40,75,57,35,30,55,76,46,43,76,29,14,60,42,142,15,132,28,62,33,22,37,69,32,142,15,27,35,60,82,47,32,30,28,36,20,7,30,50,68,37,42,71,51,28,2,68,30,73,87,104,61,60,98,69,37,32,59,86,54,49,83,58,33,38,38,74,106,42,73,27,68,24,41,19,30,20,46,29,74,27,0,0,0,0,2,0,92,255,39,1,236,2,207,0,16,0,37,0,131,0,184,0,0,69,88,184,0,17,47,27,185,0,17,0,19,62,89,184,0,0,69,88,184,0,22,47,27,185,0,22,0,9,62,89,184,0,0,69,88,184,0,37,47,27,185,0,37,0,7,62,89,184,0,0,69,88,184,0,32,47,27,185,0,32,0,5,62,89,186,0,35,0,32,0,22,17,18,57,184,0,35,16,185,0,0,0,1,244,184,0,32,16,185,0,3,0,1,244,184,0,22,16,185,0,13,0,1,244,186,0,19,0,22,0,32,17,18,57,184,0,19,16,185,0,16,0,1,244,48,49,55,30,1,51,50,62,2,53,52,46,2,35,34,6,7,3,51,17,62,1,51,50,30,2,21,20,14,2,35,34,38,39,17,35,136,42,72,28,36,62,44,25,17,36,58,41,36,77,44,44,44,36,82,45,48,73,48,24,34,59,77,42,35,71,38,44,89,34,28,32,58,81,49,44,76,55,31,41,38,1,89,254,214,28,43,35,64,90,56,61,96,67,35,30,28,254,249,0,1,0,92,255,75,1,191,1,236,0,32,0,89,0,184,0,0,69,88,184,0,26,47,27,185,0,26,0,9,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,5,62,89,187,0,7,0,1,0,0,0,4,43,184,0,26,16,185,0,14,0,1,244,186,0,22,0,26,0,19,17,18,57,184,0,22,16,185,0,17,0,1,244,184,0,26,16,184,0,20,208,184,0,20,47,48,49,5,34,38,39,55,30,1,51,50,54,53,17,52,38,35,34,6,7,17,35,17,51,23,51,62,1,51,50,22,21,17,20,6,1,83,17,33,11,10,9,27,14,40,25,51,59,43,70,44,44,38,4,3,37,78,50,75,70,51,181,7,5,36,3,6,58,46,1,84,77,73,45,45,254,150,1,224,74,37,49,90,94,254,163,71,69,0,0,0,0,1,255,223,255,27,0,137,1,224,0,15,0,43,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,7,62,89,185,0,7,0,1,244,48,49,23,34,38,39,55,30,1,51,50,54,53,17,51,17,20,6,29,17,34,11,11,9,27,14,40,24,45,52,229,7,5,36,3,7,59,46,2,54,253,199,71,69,0,0,4,0,75,255,27,1,129,2,163,0,3,0,15,0,31,0,43,0,96,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,5,62,89,184,0,0,69,88,184,0,16,47,27,185,0,16,0,7,62,89,184,0,0,16,184,0,4,208,184,0,10,208,184,0,16,16,185,0,23,0,1,244,184,0,0,16,184,0,27,208,184,0,4,16,184,0,32,208,184,0,38,208,48,49,19,51,17,35,19,34,38,53,52,54,51,50,22,21,20,6,19,34,38,39,55,30,1,51,50,54,53,17,51,17,20,6,19,34,38,53,52,54,51,50,22,21,20,6,92,44,44,23,17,23,23,17,17,23,23,126,17,34,11,11,9,27,14,40,24,45,52,30,16,24,24,16,17,24,24,1,224,254,32,2,84,22,17,19,21,21,19,17,22,252,199,7,5,36,3,7,59,46,2,54,253,199,71,69,3,57,22,17,19,21,21,19,17,22,0,0,0,2,0,84,255,244,1,182,1,236,0,33,0,47,0,109,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,12,16,184,0,6,208,184,0,6,47,186,0,9,0,0,0,12,17,18,57,186,0,20,0,12,0,0,17,18,57,184,0,0,16,185,0,25,0,1,244,184,0,20,16,185,0,34,0,1,244,184,0,12,16,185,0,44,0,1,244,184,0,9,16,185,0,47,0,1,244,48,49,5,34,46,2,53,17,51,23,51,62,1,51,50,30,2,21,20,6,7,6,30,2,51,50,54,55,23,14,3,39,62,3,53,52,46,2,35,34,6,7,1,10,51,70,43,18,38,5,2,38,94,49,27,46,35,20,149,160,1,11,32,55,44,46,75,23,20,12,35,43,51,164,74,101,62,27,15,25,33,19,40,84,48,12,31,53,71,40,1,41,72,38,46,14,30,46,31,84,89,19,26,53,45,28,38,18,33,9,22,18,13,225,9,28,38,49,30,24,33,21,9,41,48,0,2,0,92,255,244,1,236,1,236,0,20,0,37,0,117,0,184,0,0,69,88,184,0,13,47,27,185,0,13,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,186,0,3,0,0,0,13,17,18,57,184,0,6,208,184,0,6,47,184,0,13,16,184,0,7,208,184,0,7,47,186,0,9,0,13,0,0,17,18,57,184,0,0,16,185,0,21,0,1,244,184,0,13,16,185,0,31,0,1,244,184,0,9,16,185,0,34,0,1,244,184,0,3,16,185,0,35,0,1,244,48,49,5,34,38,39,35,7,35,17,51,23,51,62,1,51,50,22,21,20,14,2,39,50,62,2,53,52,46,2,35,34,6,7,17,30,1,1,24,34,73,37,2,3,39,38,4,3,35,83,45,96,96,34,59,77,44,36,62,44,25,17,36,58,41,36,77,44,42,72,12,31,27,46,1,224,62,29,45,133,112,61,96,67,35,39,32,58,81,49,44,76,55,31,41,38,254,227,34,28,0,0,2,0,92,255,244,1,236,2,219,0,29,0,46,0,136,0,184,0,3,47,184,0,0,69,88,184,0,22,47,27,185,0,22,0,9,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,19,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,186,0,4,0,0,0,22,17,18,57,184,0,6,208,184,0,6,47,184,0,10,16,185,0,15,0,1,244,186,0,19,0,22,0,0,17,18,57,184,0,0,16,185,0,30,0,1,244,184,0,22,16,185,0,40,0,1,244,184,0,19,16,185,0,43,0,1,244,184,0,3,16,185,0,44,0,1,244,48,49,5,34,38,39,35,7,35,17,52,54,51,50,23,7,38,35,34,6,15,1,62,1,51,50,22,21,20,14,2,39,50,62,2,53,52,46,2,35,34,6,7,17,30,1,1,24,35,75,34,2,5,37,77,71,37,35,14,28,29,55,49,1,2,37,84,45,96,96,34,59,77,44,36,62,44,25,17,36,58,41,36,78,43,40,74,12,31,26,45,2,46,82,91,16,36,14,76,62,140,31,44,133,111,61,96,66,35,39,32,58,81,48,44,75,55,31,41,38,254,229,34,28,0,0,0,1,0,26,255,244,1,141,1,236,0,33,0,53,0,184,0,0,69,88,184,0,24,47,27,185,0,24,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,7,0,1,244,184,0,24,16,185,0,17,0,1,244,48,49,23,34,38,39,55,30,1,51,50,62,2,53,52,46,2,35,34,6,7,39,62,1,51,50,30,2,21,20,14,2,179,46,76,31,22,25,66,38,39,63,46,25,25,45,60,34,42,56,25,26,27,70,56,41,75,57,34,34,59,79,12,36,27,31,23,32,31,56,78,47,48,79,56,31,28,23,31,24,35,33,65,94,61,60,93,64,34,0,0,0,2,0,52,255,189,1,163,1,236,0,10,0,50,0,103,0,184,0,0,69,88,184,0,47,47,27,185,0,47,0,9,62,89,184,0,0,69,88,184,0,31,47,27,185,0,31,0,5,62,89,185,0,0,0,1,244,184,0,6,220,185,0,25,0,1,244,186,0,9,0,25,0,31,17,18,57,184,0,47,16,185,0,14,0,1,244,186,0,22,0,25,0,31,17,18,57,186,0,33,0,31,0,25,17,18,57,186,0,39,0,31,0,25,17,18,57,48,49,37,50,54,53,52,38,35,34,6,7,22,19,46,1,35,34,14,2,21,20,22,23,62,1,51,50,22,21,20,6,35,34,39,6,7,39,62,1,55,46,1,53,52,62,2,51,50,22,23,1,22,43,57,29,32,33,71,32,44,161,23,56,35,37,64,47,27,30,26,36,85,45,48,52,75,66,66,55,26,16,38,11,25,14,35,40,36,60,79,44,50,66,25,26,34,27,19,33,45,38,30,1,121,22,29,31,57,79,48,49,80,29,45,49,49,37,42,59,35,41,49,15,27,50,21,32,98,63,60,95,64,34,36,23,0,0,0,0,2,0,52,255,75,2,45,2,219,0,31,0,48,0,124,0,184,0,0,69,88,184,0,15,47,27,185,0,15,0,9,62,89,184,0,0,69,88,184,0,20,47,27,185,0,20,0,19,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,187,0,25,0,1,0,0,0,4,43,186,0,4,0,7,0,15,17,18,57,186,0,18,0,15,0,7,17,18,57,184,0,7,16,185,0,32,0,1,244,184,0,4,16,185,0,35,0,1,244,184,0,18,16,185,0,36,0,1,244,184,0,15,16,185,0,39,0,1,244,48,49,5,34,38,53,55,14,1,35,34,38,53,52,62,2,51,50,22,23,39,53,51,17,20,22,51,50,54,55,23,14,1,37,50,54,55,17,46,1,35,34,14,2,21,20,30,2,1,249,50,47,2,32,79,48,91,108,34,59,77,43,44,65,36,2,44,22,32,12,21,8,10,8,30,254,250,40,73,38,38,67,35,36,62,45,26,21,40,59,181,62,67,115,31,44,129,122,58,94,66,35,31,28,88,210,252,249,45,53,6,3,36,5,7,208,41,38,1,29,34,28,33,57,79,45,48,78,55,31,0,2,0,52,255,244,2,50,2,221,0,30,0,47,0,136,0,184,0,0,69,88,184,0,15,47,27,185,0,15,0,19,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,186,0,11,0,8,0,0,17,18,57,184,0,15,16,185,0,21,0,1,244,184,0,0,16,184,0,25,208,184,0,25,47,186,0,27,0,0,0,8,17,18,57,184,0,0,16,185,0,31,0,1,244,184,0,27,16,185,0,34,0,1,244,184,0,11,16,185,0,35,0,1,244,184,0,8,16,185,0,38,0,1,244,48,49,23,34,38,53,52,62,2,51,50,22,23,39,52,54,51,50,23,7,46,1,35,34,6,21,17,35,39,35,14,1,39,50,54,55,17,46,1,35,34,14,2,21,20,30,2,251,91,108,34,59,77,43,44,65,36,2,55,50,27,22,10,8,19,11,35,27,38,4,3,29,79,42,40,73,38,38,67,35,36,62,45,26,21,40,59,12,129,122,58,94,66,35,31,28,163,70,67,10,36,3,5,58,46,253,177,62,29,45,39,41,38,1,29,34,28,33,57,79,45,48,78,55,31,0,0,2,0,38,255,244,1,175,1,236,0,30,0,39,0,77,0,184,0,0,69,88,184,0,21,47,27,185,0,21,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,7,0,1,244,186,0,12,0,21,0,0,17,18,57,184,0,12,47,184,0,21,16,185,0,34,0,1,244,184,0,12,16,185,0,39,0,1,244,48,49,23,34,38,39,55,30,1,51,50,62,2,55,33,38,52,53,52,62,2,51,50,30,2,21,20,14,2,19,46,1,35,34,14,2,21,213,53,74,28,18,27,67,39,42,65,45,24,1,254,166,2,29,51,71,43,43,73,53,30,33,58,80,126,8,81,66,32,56,41,23,12,30,17,34,20,23,31,55,77,45,9,18,9,53,82,57,30,35,65,94,59,59,93,65,34,1,26,87,97,23,46,69,46,0,2,0,52,255,244,1,196,1,236,0,20,0,37,0,121,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,186,0,11,0,8,0,0,17,18,57,184,0,8,16,184,0,14,208,184,0,14,47,184,0,0,16,184,0,15,208,184,0,15,47,186,0,17,0,0,0,8,17,18,57,184,0,0,16,185,0,21,0,1,244,184,0,17,16,185,0,24,0,1,244,184,0,11,16,185,0,25,0,1,244,184,0,8,16,185,0,28,0,1,244,48,49,23,34,38,53,52,62,2,51,50,22,23,51,55,51,17,35,39,35,14,1,39,50,54,55,17,46,1,35,34,14,2,21,20,30,2,251,91,108,35,58,78,43,43,65,34,2,3,39,38,4,3,29,79,42,40,73,38,38,67,35,36,62,45,26,21,40,59,12,129,122,58,94,66,35,30,28,46,254,32,62,29,45,39,41,38,1,29,34,28,33,57,79,45,48,78,55,31,0,0,255,255,0,92,0,0,1,198,1,224,2,6,3,230,0,0,0,2,0,38,255,244,1,175,1,236,0,30,0,37,0,81,0,184,0,0,69,88,184,0,21,47,27,185,0,21,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,186,0,9,0,21,0,0,17,18,57,184,0,9,47,184,0,21,16,185,0,14,0,1,244,184,0,0,16,185,0,31,0,1,244,184,0,9,16,185,0,35,0,1,244,48,49,23,34,46,2,53,60,1,55,33,46,3,35,34,6,7,39,62,1,51,50,30,2,21,20,14,2,39,50,54,55,33,20,22,231,42,71,51,29,2,1,90,1,22,42,60,39,42,65,29,18,30,75,54,44,75,54,31,30,54,73,44,68,81,7,254,205,85,12,30,58,87,56,9,20,9,42,72,53,30,26,20,34,20,30,33,65,93,60,59,94,65,35,38,104,91,101,94,0,0,0,2,0,38,255,244,2,121,1,236,0,10,0,55,0,89,0,184,0,0,69,88,184,0,42,47,27,185,0,42,0,9,62,89,184,0,0,69,88,184,0,26,47,27,185,0,26,0,5,62,89,186,0,32,0,10,0,3,43,186,0,52,0,14,0,3,43,184,0,26,16,185,0,3,0,1,244,184,0,10,16,184,0,18,220,184,0,42,16,185,0,35,0,1,244,184,0,32,16,184,0,45,220,48,49,55,30,1,51,50,62,2,53,52,39,23,14,1,35,34,38,39,7,30,1,21,20,14,2,35,34,46,2,39,37,46,1,35,34,6,7,39,62,1,51,50,22,23,55,23,30,3,51,50,54,55,82,11,86,63,34,55,37,20,3,248,11,29,20,26,48,8,63,2,3,27,49,71,44,45,72,52,31,4,1,84,17,85,54,44,61,29,18,29,72,54,69,104,22,74,30,3,10,13,17,10,11,20,7,166,66,74,34,58,76,43,25,23,28,8,16,42,52,25,14,32,17,51,92,68,40,31,54,72,41,135,67,66,26,20,34,20,30,79,75,29,12,29,34,18,6,10,7,0,0,0,0,1,0,53,255,244,1,149,1,236,0,49,0,77,0,184,0,0,69,88,184,0,19,47,27,185,0,19,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,187,0,35,0,1,0,36,0,4,43,186,0,11,0,36,0,35,17,18,57,184,0,19,16,185,0,26,0,1,244,184,0,0,16,185,0,43,0,1,244,48,49,23,34,46,2,53,52,62,2,55,53,46,1,53,52,62,2,51,50,22,23,7,46,1,35,34,14,2,21,20,22,59,1,21,35,34,6,21,20,22,51,50,54,55,23,14,1,238,41,67,50,27,19,31,39,20,38,44,26,45,58,33,44,68,29,21,29,57,35,23,42,32,18,66,72,47,61,72,79,80,65,39,65,35,22,40,76,12,20,38,52,32,27,41,30,20,5,4,15,59,37,31,46,31,16,27,23,32,20,24,11,22,34,23,40,54,36,54,48,49,57,24,28,32,31,27,0,1,0,39,255,244,1,135,1,236,0,47,0,77,0,184,0,0,69,88,184,0,29,47,27,185,0,29,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,187,0,16,0,1,0,13,0,4,43,184,0,0,16,185,0,7,0,1,244,184,0,29,16,185,0,22,0,1,244,186,0,38,0,13,0,16,17,18,57,48,49,23,34,38,39,55,30,1,51,50,54,53,52,38,43,1,53,51,50,54,53,52,38,35,34,6,7,39,62,1,51,50,30,2,21,20,6,7,21,30,3,21,20,14,2,207,51,76,41,22,36,64,40,65,80,80,72,61,47,72,66,62,47,35,63,29,20,29,73,45,32,57,42,24,44,38,20,39,31,19,27,49,68,12,27,31,32,28,24,57,49,48,54,36,54,40,46,44,24,20,32,23,27,16,31,46,31,37,59,15,4,5,20,30,41,27,32,52,38,20,0,0,0,2,0,53,255,244,1,227,1,236,0,28,0,49,0,77,0,184,0,0,69,88,184,0,19,47,27,185,0,19,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,187,0,42,0,1,0,43,0,4,43,186,0,11,0,43,0,42,17,18,57,184,0,0,16,185,0,29,0,1,244,184,0,19,16,185,0,35,0,1,244,48,49,23,34,46,2,53,52,62,2,55,53,46,1,53,52,62,2,51,50,30,2,21,20,14,2,39,50,54,53,52,38,35,34,6,21,20,22,59,1,21,35,34,6,21,20,22,252,45,73,52,29,19,31,39,20,38,44,26,45,61,35,50,86,64,36,36,62,84,47,84,98,103,85,53,69,65,72,25,39,72,78,83,12,20,38,52,32,27,41,30,20,5,4,15,59,37,31,46,31,16,32,64,94,63,62,94,63,32,38,112,101,101,114,44,46,40,54,36,54,48,49,57,0,0,0,1,255,229,255,27,0,232,1,224,0,23,0,77,0,184,0,0,69,88,184,0,20,47,27,185,0,20,0,9,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,7,62,89,187,0,23,0,1,0,0,0,4,43,184,0,5,16,185,0,12,0,1,244,184,0,0,16,184,0,16,208,184,0,23,16,184,0,18,208,184,0,18,47,48,49,55,35,17,20,6,35,34,38,39,55,30,1,51,50,54,53,17,35,53,55,53,51,21,51,232,89,52,56,17,34,11,11,9,27,14,40,24,93,93,45,89,236,254,187,71,69,7,5,36,3,7,59,46,1,66,29,4,211,211,0,0,0,2,0,53,255,27,2,51,2,103,0,41,0,56,0,117,0,184,0,0,69,88,184,0,22,47,27,185,0,22,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,7,62,89,187,0,35,0,1,0,29,0,4,43,187,0,42,0,1,0,14,0,4,43,184,0,0,16,185,0,7,0,1,244,186,0,11,0,14,0,22,17,18,57,186,0,25,0,22,0,14,17,18,57,184,0,11,16,185,0,45,0,1,244,184,0,25,16,185,0,46,0,1,244,184,0,22,16,185,0,49,0,1,244,48,49,5,34,38,39,55,30,1,51,50,54,53,55,14,1,35,34,38,53,52,62,2,51,50,22,23,39,52,54,51,50,23,7,46,1,35,34,6,21,17,20,6,3,50,54,55,17,46,1,35,34,14,2,21,20,22,1,2,48,85,35,20,36,74,38,75,75,1,29,81,48,91,107,34,59,77,43,43,65,36,1,55,50,26,23,10,8,19,11,35,28,100,94,40,72,38,38,67,35,36,61,46,26,82,229,28,24,35,26,24,84,73,109,29,45,127,119,57,91,64,34,31,28,46,69,67,10,36,3,5,59,45,253,253,86,101,1,12,41,38,1,17,34,28,32,55,76,44,93,114,0,0,0,2,0,53,255,27,1,196,1,236,0,31,0,46,0,119,0,184,0,0,69,88,184,0,22,47,27,185,0,22,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,7,62,89,187,0,32,0,1,0,14,0,4,43,184,0,0,16,185,0,7,0,1,244,186,0,11,0,22,0,14,17,18,57,186,0,25,0,22,0,14,17,18,57,184,0,22,16,184,0,28,208,184,0,28,47,184,0,11,16,185,0,35,0,1,244,184,0,25,16,185,0,36,0,1,244,184,0,22,16,185,0,39,0,1,244,48,49,5,34,38,39,55,30,1,51,50,54,53,55,14,1,35,34,38,53,52,62,2,51,50,22,23,51,55,51,17,20,6,3,50,54,55,17,46,1,35,34,14,2,21,20,22,1,2,48,85,35,20,36,74,38,75,75,1,29,81,48,91,107,34,59,77,43,43,65,32,3,4,39,100,94,40,72,38,38,67,35,36,61,46,26,82,229,28,24,35,26,24,84,73,109,29,45,127,119,57,91,64,34,30,26,44,253,246,86,101,1,12,41,38,1,17,34,28,32,55,76,44,93,114,0,0,0,1,0,52,255,244,1,176,1,236,0,35,0,79,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,10,16,185,0,17,0,1,244,184,0,0,16,185,0,25,0,1,244,186,0,30,0,10,0,0,17,18,57,125,184,0,30,47,24,185,0,32,0,1,244,48,49,5,34,46,2,53,52,62,2,51,50,22,23,7,46,1,35,34,14,2,21,20,22,51,50,54,55,53,35,53,51,21,14,1,1,20,49,82,60,33,34,61,84,50,54,69,23,26,20,56,42,41,68,50,28,100,84,34,58,18,122,164,25,79,12,34,66,95,60,57,93,64,35,38,22,30,20,32,29,55,78,49,102,115,23,17,139,37,195,24,35,0,0,2,0,12,255,25,1,166,1,224,0,12,0,37,0,91,0,184,0,0,69,88,184,0,26,47,27,185,0,26,0,9,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,7,62,89,186,0,0,0,19,0,26,17,18,57,185,0,6,0,1,244,186,0,13,0,0,0,32,17,18,57,186,0,31,0,26,0,19,17,18,57,186,0,25,0,31,0,0,17,18,57,184,0,26,16,184,0,36,208,48,49,55,14,1,21,20,22,51,50,54,53,52,38,39,55,30,1,21,20,6,35,34,38,53,52,54,55,3,51,19,30,1,23,51,62,1,55,19,51,216,17,23,19,23,23,20,23,18,28,25,31,43,43,43]);fileData0.push.apply(fileData0,[42,31,25,177,48,108,11,26,11,4,12,25,12,108,45,3,35,76,28,25,34,34,25,30,74,35,31,56,77,34,44,54,54,44,34,77,56,1,190,254,223,34,59,32,32,59,34,1,33,0,0,0,0,2,0,16,255,244,1,205,1,236,0,38,0,58,0,113,0,184,0,0,69,88,184,0,16,47,27,185,0,16,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,186,0,19,0,16,0,0,17,18,57,186,0,49,0,16,0,0,17,18,57,186,0,8,0,19,0,49,17,18,57,184,0,16,16,185,0,11,0,1,244,184,0,16,16,184,0,22,208,184,0,11,16,184,0,28,208,186,0,31,0,49,0,19,17,18,57,184,0,0,16,185,0,39,0,1,244,48,49,23,34,38,53,52,62,2,55,46,1,35,34,7,39,54,51,50,22,23,62,1,51,50,23,7,46,1,35,34,6,7,30,3,21,20,6,39,50,62,2,53,52,46,2,39,14,3,21,20,30,2,238,81,78,20,35,47,26,32,63,32,29,18,17,29,40,41,77,35,35,77,41,41,29,17,10,24,13,33,63,31,25,47,35,21,78,82,30,43,28,14,18,32,41,24,23,42,31,18,14,28,43,12,86,73,30,60,57,54,25,37,43,14,33,20,53,39,39,53,20,33,8,6,43,37,25,54,57,60,30,73,86,39,19,33,44,25,27,52,51,49,22,22,49,51,52,27,25,44,33,19,0,1,0,85,255,39,1,183,1,224,0,22,0,92,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,9,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,184,0,0,69,88,184,0,22,47,27,185,0,22,0,7,62,89,186,0,1,0,8,0,22,17,18,57,184,0,4,16,185,0,13,0,1,244,184,0,1,16,185,0,18,0,1,244,184,0,8,16,184,0,19,208,48,49,5,55,14,1,35,34,38,53,17,51,17,20,22,51,50,62,2,55,17,51,17,35,1,139,3,39,79,50,75,70,44,51,58,21,38,38,38,22,44,44,30,113,45,50,90,94,1,52,254,210,77,73,11,24,37,26,1,98,253,71,0,0,0,1,0,92,0,0,1,191,2,219,0,29,0,102,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,19,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,9,62,89,184,0,0,69,88,184,0,29,47,27,185,0,29,0,5,62,89,184,0,3,16,185,0,8,0,1,244,186,0,12,0,3,0,29,17,18,57,184,0,29,16,184,0,20,208,184,0,15,16,185,0,24,0,1,244,184,0,12,16,185,0,27,0,1,244,48,49,19,52,54,51,50,23,7,38,35,34,6,7,21,62,1,51,50,22,21,17,35,17,52,38,35,34,6,7,17,35,92,77,71,37,35,14,28,29,55,49,1,38,78,50,75,70,44,51,59,43,70,44,44,2,46,82,91,16,36,14,76,62,152,38,49,90,94,254,206,1,44,77,73,45,45,254,152,0,0,0,0,1,0,92,255,75,1,191,2,219,0,41,0,104,0,184,0,0,69,88,184,0,23,47,27,185,0,23,0,19,62,89,184,0,0,69,88,184,0,35,47,27,185,0,35,0,9,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,5,62,89,187,0,7,0,1,0,0,0,4,43,184,0,35,16,185,0,14,0,1,244,186,0,32,0,23,0,19,17,18,57,184,0,32,16,185,0,17,0,1,244,184,0,23,16,185,0,28,0,1,244,48,49,5,34,38,39,55,30,1,51,50,54,53,17,52,38,35,34,6,7,17,35,17,52,54,51,50,23,7,38,35,34,6,7,21,62,1,51,50,22,21,17,20,6,1,83,17,33,11,10,9,27,14,40,25,51,59,43,70,44,44,77,71,37,35,14,28,29,55,49,1,38,78,50,75,70,51,181,7,5,36,3,6,58,46,1,82,77,73,45,45,254,152,2,46,82,91,16,36,14,76,62,152,38,49,90,94,254,165,71,69,0,0,1,0,92,0,0,1,202,1,224,0,11,0,63,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,187,0,3,0,2,0,8,0,4,43,184,0,0,16,184,0,4,208,184,0,11,16,184,0,7,208,48,49,19,51,21,33,53,51,17,35,53,33,21,35,92,44,1,22,44,44,254,234,44,1,224,208,208,254,32,232,232,0,0,0,2,0,5,0,0,0,232,2,163,0,11,0,23,0,75,0,184,0,0,69,88,184,0,20,47,27,185,0,20,0,9,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,5,62,89,187,0,16,0,1,0,19,0,4,43,184,0,20,16,184,0,0,220,184,0,6,220,184,0,16,16,184,0,12,208,184,0,19,16,184,0,23,208,48,49,19,34,38,53,52,54,51,50,22,21,20,6,19,35,21,35,53,35,53,55,53,51,21,51,121,17,23,23,17,17,23,23,94,90,44,93,93,44,90,2,84,22,17,19,21,21,19,17,22,254,152,236,236,29,4,211,211,0,1,0,43,0,0,1,11,1,224,0,11,0,65,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,9,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,185,0,1,0,1,244,184,0,4,16,185,0,2,0,1,244,184,0,6,208,184,0,1,16,184,0,9,208,48,49,55,51,17,35,53,51,21,35,17,51,21,35,43,90,90,224,90,90,224,39,1,147,38,38,254,109,39,0,0,0,3,255,153,254,228,0,240,2,163,0,11,0,22,0,49,0,117,0,184,0,0,69,88,184,0,42,47,27,185,0,42,0,9,62,89,184,0,0,69,88,184,0,29,47,27,185,0,29,0,7,62,89,184,0,42,16,184,0,0,208,184,0,6,208,184,0,29,16,185,0,12,0,1,244,184,0,17,220,185,0,37,0,1,244,186,0,39,0,37,0,29,17,18,57,186,0,26,0,29,0,37,17,18,57,186,0,15,0,39,0,26,17,18,57,184,0,29,16,184,0,23,220,186,0,46,0,26,0,39,17,18,57,48,49,19,34,38,53,52,54,51,50,22,21,20,6,3,50,54,55,38,35,34,6,21,20,22,23,46,1,39,14,1,35,34,46,2,53,52,54,51,50,23,54,53,17,51,17,20,7,30,1,23,125,16,24,24,16,17,24,24,139,35,40,11,44,45,32,29,37,230,23,42,20,17,59,43,24,39,27,15,52,51,50,49,3,45,10,26,51,26,2,84,22,17,19,21,21,19,17,22,252,237,32,25,38,26,19,22,28,93,36,60,23,31,33,15,25,32,18,35,44,35,22,21,2,20,253,244,47,36,26,70,43,0,0,0,0,2,255,253,255,244,1,1,2,207,0,12,0,42,0,83,0,184,0,0,69,88,184,0,38,47,27,185,0,38,0,19,62,89,184,0,0,69,88,184,0,24,47,27,185,0,24,0,5,62,89,186,0,40,0,13,0,3,43,184,0,40,16,184,0,0,208,184,0,6,208,184,0,24,16,185,0,17,0,1,244,184,0,13,16,184,0,27,208,184,0,6,16,184,0,34,220,48,49,19,53,52,46,2,35,34,6,21,20,22,51,23,17,20,22,51,58,1,55,23,14,1,35,34,53,17,35,34,38,53,52,54,51,50,22,23,17,51,17,51,21,123,5,12,19,15,20,17,33,37,62,12,9,3,7,8,8,7,14,11,59,11,59,56,38,32,20,27,9,44,90,1,111,9,13,26,20,12,22,15,17,26,33,254,236,16,15,2,36,2,3,76,1,14,44,34,29,39,14,11,1,8,254,160,33,0,0,0,0,1,0,92,255,75,0,241,2,207,0,15,0,30,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,19,62,89,187,0,9,0,1,0,0,0,4,43,48,49,23,34,38,53,17,51,17,20,22,51,50,54,55,23,14,1,190,51,47,44,23,32,11,21,8,10,8,29,181,65,69,2,254,253,5,45,53,6,3,36,5,7,0,0,0,1,0,92,255,27,2,11,2,207,0,42,0,111,0,184,0,0,69,88,184,0,40,47,27,185,0,40,0,9,62,89,184,0,0,69,88,184,0,38,47,27,185,0,38,0,19,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,7,62,89,184,0,0,69,88,184,0,37,47,27,185,0,37,0,5,62,89,186,0,0,0,10,0,40,17,18,57,184,0,10,16,185,0,21,0,1,244,184,0,0,16,185,0,29,0,1,244,184,0,40,16,185,0,34,0,1,244,48,49,37,54,30,2,21,20,14,2,35,34,46,2,39,55,30,3,51,50,62,2,53,52,38,35,34,6,7,39,19,33,17,35,17,51,21,33,21,1,35,53,86,60,33,33,54,70,37,36,58,46,36,15,26,13,32,39,49,31,30,54,41,24,79,77,22,27,17,24,215,254,202,44,44,1,111,169,10,20,50,77,47,52,80,54,28,13,22,26,14,31,13,24,19,11,25,45,63,39,72,84,11,8,31,1,36,254,70,2,207,239,23,0,1,0,92,0,0,1,117,1,224,0,5,0,43,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,185,0,2,0,1,244,48,49,19,51,17,51,21,33,92,44,237,254,231,1,224,254,71,39,0,0,0,0,1,0,85,255,244,2,208,1,224,0,33,0,127,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,8,0,1,244,186,0,31,0,3,0,0,17,18,57,184,0,31,16,185,0,11,0,1,244,184,0,3,16,184,0,12,208,184,0,8,16,184,0,17,208,184,0,0,16,184,0,28,208,186,0,24,0,12,0,28,17,18,57,184,0,24,16,185,0,19,0,1,244,184,0,12,16,184,0,20,208,184,0,28,16,184,0,22,208,184,0,22,47,48,49,23,34,53,17,51,17,20,22,51,50,54,55,17,51,17,20,22,51,50,55,17,51,17,35,39,35,14,1,35,34,38,39,14,1,229,144,44,52,56,34,70,40,44,52,55,64,80,44,37,5,2,33,78,41,58,61,13,42,79,12,184,1,52,254,210,77,73,45,45,1,106,254,210,77,73,90,1,106,254,32,75,37,50,53,45,45,53,0,1,0,85,255,39,2,208,1,224,0,33,0,136,0,184,0,0,69,88,184,0,13,47,27,185,0,13,0,9,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,5,62,89,184,0,0,69,88,184,0,33,47,27,185,0,33,0,7,62,89,184,0,13,16,184,0,22,208,184,0,10,16,184,0,4,208,186,0,1,0,22,0,4,17,18,57,186,0,7,0,13,0,10,17,18,57,184,0,10,16,185,0,18,0,1,244,184,0,7,16,185,0,21,0,1,244,184,0,18,16,184,0,27,208,184,0,1,16,185,0,29,0,1,244,184,0,22,16,184,0,30,208,48,49,5,55,14,1,35,34,38,39,14,1,35,34,53,17,51,17,20,22,51,50,54,55,17,51,17,20,22,51,50,55,17,51,17,35,2,164,3,36,79,40,58,61,13,42,79,42,144,44,52,56,34,70,40,44,52,55,64,80,44,44,32,110,42,48,53,45,45,53,184,1,52,254,210,77,73,45,45,1,106,254,210,77,73,90,1,106,253,71,0,0,0,1,0,92,255,75,2,216,1,236,0,46,0,129,0,184,0,0,69,88,184,0,35,47,27,185,0,35,0,9,62,89,184,0,0,69,88,184,0,28,47,27,185,0,28,0,5,62,89,187,0,7,0,1,0,0,0,4,43,184,0,35,16,185,0,24,0,1,244,184,0,16,208,184,0,35,16,184,0,41,208,184,0,28,16,184,0,20,208,186,0,38,0,41,0,20,17,18,57,184,0,38,16,185,0,18,0,1,244,186,0,31,0,35,0,28,17,18,57,184,0,31,16,185,0,26,0,1,244,184,0,35,16,184,0,29,208,184,0,29,47,48,49,5,34,38,39,55,30,1,51,50,62,2,53,17,52,38,35,34,7,17,35,17,52,38,35,34,7,17,35,17,51,23,51,62,1,51,50,22,23,62,1,51,50,21,17,20,6,2,109,17,33,11,11,8,27,14,20,25,13,5,52,55,65,79,44,52,56,65,79,44,38,4,3,32,79,40,58,62,13,42,79,42,144,51,181,7,5,36,3,6,15,28,38,23,1,84,77,73,90,254,150,1,46,77,73,90,254,150,1,224,74,37,49,53,45,45,53,184,254,163,71,69,0,1,255,243,255,75,1,191,1,236,0,32,0,89,0,184,0,0,69,88,184,0,17,47,27,185,0,17,0,9,62,89,184,0,0,69,88,184,0,22,47,27,185,0,22,0,5,62,89,187,0,7,0,1,0,0,0,4,43,184,0,17,16,184,0,11,208,184,0,11,47,186,0,13,0,17,0,22,17,18,57,184,0,17,16,185,0,26,0,1,244,184,0,13,16,185,0,29,0,1,244,48,49,23,34,38,39,55,30,1,51,50,54,53,17,51,23,51,62,1,51,50,22,21,17,35,17,52,38,35,34,6,7,17,20,6,39,14,30,8,10,8,22,11,32,22,41,1,3,37,78,50,75,70,44,51,59,43,70,44,46,181,7,5,36,3,6,53,45,2,12,74,37,49,90,94,254,204,1,46,77,73,45,45,254,103,69,65,0,1,0,92,255,75,2,40,1,236,0,32,0,89,0,184,0,0,69,88,184,0,19,47,27,185,0,19,0,9,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,187,0,26,0,1,0,0,0,4,43,184,0,19,16,185,0,7,0,1,244,186,0,15,0,19,0,12,17,18,57,184,0,15,16,185,0,10,0,1,244,184,0,19,16,184,0,13,208,184,0,13,47,48,49,5,34,38,53,17,52,38,35,34,6,7,17,35,17,51,23,51,62,1,51,50,22,21,17,20,22,51,50,54,55,23,14,1,1,244,51,46,51,59,43,70,44,44,38,4,3,37,78,50,75,70,22,32,12,21,8,10,8,30,181,65,69,1,93,77,73,45,45,254,150,1,224,74,37,49,90,94,254,160,45,53,6,3,36,5,7,0,0,0,0,1,0,92,0,0,1,184,1,224,0,23,0,73,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,23,47,27,185,0,23,0,5,62,89,184,0,0,16,184,0,10,208,184,0,23,16,184,0,13,208,186,0,6,0,10,0,13,17,18,57,186,0,18,0,0,0,23,17,18,57,48,49,19,51,19,30,1,23,51,46,1,61,1,51,17,35,3,46,1,39,35,30,1,29,1,35,92,44,200,14,34,14,4,2,3,43,43,201,14,34,14,4,2,3,43,1,224,254,199,23,58,23,48,90,39,240,254,32,1,58,22,59,23,48,90,40,240,0,3,0,52,255,244,1,227,1,236,0,8,0,17,0,37,0,81,0,184,0,0,69,88,184,0,18,47,27,185,0,18,0,9,62,89,184,0,0,69,88,184,0,28,47,27,185,0,28,0,5,62,89,186,0,0,0,18,0,28,17,18,57,184,0,0,47,184,0,28,16,185,0,5,0,1,244,184,0,0,16,185,0,9,0,1,244,184,0,18,16,185,0,12,0,1,244,48,49,55,30,3,51,50,54,55,39,46,1,35,34,14,2,7,55,50,30,2,21,20,14,2,35,34,46,2,53,52,62,2,95,1,26,46,62,37,75,96,2,1,8,95,69,34,59,45,29,4,171,44,79,59,34,34,59,79,44,44,78,59,34,34,59,78,234,49,77,54,28,110,98,36,87,97,25,48,68,43,222,32,64,94,63,62,94,63,32,32,63,94,62,63,94,64,32,0,0,2,0,52,255,244,2,155,1,236,0,26,0,43,0,93,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,10,16,185,0,34,0,1,244,184,0,15,208,184,0,15,47,186,0,20,0,10,0,0,17,18,57,184,0,20,47,185,0,18,0,1,244,184,0,0,16,185,0,27,0,1,244,184,0,22,208,184,0,22,47,48,49,5,34,46,2,53,52,62,2,51,50,22,23,33,21,35,21,51,21,35,21,51,21,33,14,1,39,50,54,55,17,46,1,35,34,14,2,21,20,30,2,1,29,50,86,62,35,35,62,86,50,22,46,27,1,21,243,202,202,253,254,225,27,46,19,18,43,19,19,43,18,41,68,51,28,28,51,68,12,33,65,94,61,61,93,64,33,4,8,37,173,36,197,37,8,4,39,9,6,1,141,5,9,27,54,79,52,53,80,54,27,0,0,3,0,52,255,39,2,83,2,207,0,10,0,21,0,47,0,115,0,184,0,0,69,88,184,0,45,47,27,185,0,45,0,9,62,89,184,0,0,69,88,184,0,46,47,27,185,0,46,0,19,62,89,184,0,0,69,88,184,0,35,47,27,185,0,35,0,5,62,89,184,0,0,69,88,184,0,34,47,27,185,0,34,0,7,62,89,184,0,35,16,185,0,21,0,1,244,184,0,0,208,184,0,45,16,185,0,11,0,1,244,184,0,10,208,184,0,45,16,184,0,22,208,184,0,35,16,184,0,32,208,48,49,37,62,3,53,52,46,2,39,35,14,3,21,20,30,2,23,19,30,3,21,20,14,2,7,21,35,53,46,3,53,52,62,2,55,53,51,1,89,41,74,55,33,31,54,75,43,43,41,74,56,33,33,56,74,41,43,50,90,69,41,42,70,90,48,43,48,90,70,42,42,70,90,48,43,26,1,32,55,79,48,48,78,55,31,1,1,31,55,78,48,48,79,55,32,1,1,208,1,34,63,92,59,59,93,64,34,1,207,207,1,34,64,93,59,59,92,63,34,1,229,0,0,0,0,1,255,252,255,244,0,225,1,224,0,18,0,75,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,7,0,2,244,186,0,15,0,11,0,0,17,18,57,184,0,15,16,185,0,10,0,2,244,184,0,0,16,184,0,13,208,184,0,13,47,48,49,23,34,38,39,55,30,1,51,50,54,55,17,51,17,35,39,35,14,1,44,13,23,12,10,13,17,14,32,71,28,44,37,5,2,25,69,12,4,6,40,5,3,55,69,1,70,254,32,90,45,57,0,1,255,252,255,244,0,225,2,207,0,18,0,75,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,19,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,7,0,2,244,186,0,15,0,0,0,11,17,18,57,184,0,15,16,185,0,10,0,2,244,184,0,0,16,184,0,13,208,184,0,13,47,48,49,23,34,38,39,55,30,1,51,50,54,55,17,51,17,35,39,35,14,1,44,13,23,12,10,13,17,14,32,71,28,44,37,5,2,25,69,12,4,6,40,5,3,55,69,2,53,253,49,90,45,57,0,1,255,252,255,75,1,74,1,224,0,30,0,77,0,184,0,0,69,88,184,0,19,47,27,185,0,19,0,9,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,187,0,24,0,1,0,0,0,4,43,186,0,4,0,8,0,19,17,18,57,184,0,8,16,185,0,15,0,2,244,184,0,4,16,185,0,18,0,2,244,48,49,5,34,38,61,1,35,14,1,35,34,38,39,55,30,1,51,50,54,55,17,51,17,20,22,51,50,54,55,23,14,1,1,22,50,45,2,25,69,43,13,23,12,10,13,17,14,32,71,28,44,22,32,12,21,8,10,8,30,181,63,68,140,45,57,4,6,40,5,3,55,69,1,70,253,244,45,53,6,3,36,5,7,0,0,0,0,1,0,92,255,75,1,65,1,236,0,30,0,72,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,9,62,89,187,0,24,0,1,0,0,0,4,43,184,0,10,16,184,0,4,208,184,0,4,47,186,0,6,0,10,0,0,17,18,57,184,0,10,16,185,0,17,0,2,244,184,0,6,16,185,0,20,0,2,244,48,49,23,34,38,53,17,51,23,51,62,1,51,50,22,23,7,46,1,35,34,6,7,17,20,22,51,50,54,55,23,14,1,190,51,47,38,4,3,24,69,43,14,22,12,10,12,18,14,32,71,28,23,32,11,21,8,10,8,29,181,65,69,2,15,89,45,56,4,6,40,5,3,55,68,254,141,45,53,6,3,36,5,7,0,1,0,92,0,0,1,54,1,236,0,16,0,47,0,184,0,0,69,88,184,0,5,47,27,185,0,5,0,9,62,89,184,0,0,69,88,184,0,16,47,27,185,0,16,0,5,62,89,184,0,5,16,185,0,11,0,1,244,48,49,19,52,62,2,51,50,23,7,46,1,35,34,6,21,17,35,92,23,40,54,31,43,27,10,14,27,18,45,60,44,1,64,43,65,43,21,14,38,8,4,73,67,254,200,0,0,0,0,2,0,92,0,0,1,176,1,224,0,8,0,24,0,75,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,9,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,187,0,0,0,1,0,10,0,4,43,184,0,14,16,185,0,6,0,1,244,184,0,13,16,184,0,9,208,186,0,23,0,10,0,0,17,18,57,48,49,55,50,54,53,52,38,43,1,21,23,39,35,21,35,17,51,50,30,2,21,20,6,7,23,234,64,73,73,64,98,246,134,112,44,153,37,64,45,26,72,53,140,246,50,51,51,45,197,246,209,209,1,224,14,31,51,36,62,66,8,212,0,2,0,42,0,0,1,126,1,224,0,8,0,24,0,75,0,184,0,0,69,88,184,0,20,47,27,185,0,20,0,9,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,5,62,89,187,0,23,0,1,0,0,0,4,43,184,0,10,16,185,0,7,0,1,244,186,0,19,0,0,0,23,17,18,57,184,0,20,16,184,0,24,208,48,49,37,35,34,6,21,20,22,59,1,19,17,35,34,46,2,53,52,54,55,39,51,23,51,53,1,82,98,64,73,73,64,98,44,153,38,63,45,26,72,53,140,50,134,112,238,52,51,51,46,1,186,254,32,15,32,51,36,62,67,8,209,206,206,0,0,0,1,0,32,255,75,1,114,1,236,0,68,0,87,0,184,0,0,69,88,184,0,65,47,27,185,0,65,0,9,62,89,184,0,0,69,88,184,0,23,47,27,185,0,23,0,5,62,89,187,0,32,0,1,0,39,0,4,43,184,0,65,16,185,0,3,0,1,244,186,0,13,0,65,0,23,17,18,57,184,0,23,16,185,0,47,0,1,244,186,0,55,0,23,0,65,17,18,57,48,49,1,46,1,35,34,14,2,21,20,30,2,23,30,3,21,20,14,2,35,34,38,39,21,20,30,2,51,50,54,55,23,14,1,35,34,38,61,1,55,30,1,51,50,54,53,52,46,2,39,46,3,53,52,62,2,51,50,22,23,1,67,24,54,37,28,40,27,13,19,32,41,21,28,56,45,28,21,42,60,39,38,67,29,5,14,26,20,14,27,9,11,11,34,17,55,51,26,31,70,52,57,57,21,34,41,21,27,55,44,27,20,40,57,38,38,73,26,1,155,18,25,15,24,32,16,21,29,22,17,8,11,22,32,47,35,27,49,37,22,17,14,57,23,38,28,16,7,3,36,5,7,69,71,86,32,22,29,57,38,22,34,24,18,8,10,22,31,43,31,26,47,35,20,28,22,0,1,255,223,255,27,1,6,2,221,0,29,0,53,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,19,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,7,62,89,185,0,7,0,1,244,184,0,14,16,185,0,21,0,1,244,48,49,23,34,38,39,55,30,1,51,50,54,53,17,52,54,51,50,22,23,7,46,1,35,34,14,2,21,17,20,6,29,17,34,11,11,9,27,14,40,24,57,61,14,28,10,11,8,21,11,23,29,16,6,52,229,7,5,36,3,7,59,46,2,167,71,69,7,5,36,3,7,16,28,38,23,253,89,71,69,0,0,0,0,1,255,229,255,27,1,12,2,221,0,37,0,85,0,184,0,0,69,88,184,0,34,47,27,185,0,34,0,19,62,89,184,0,0,69,88,184,0,16,47,27,185,0,16,0,7,62,89,186,0,10,0,11,0,3,43,184,0,34,16,185,0,3,0,1,244,184,0,16,16,185,0,23,0,1,244,184,0,11,16,184,0,27,208,184,0,10,16,184,0,29,208,184,0,29,47,48,49,1,46,1,35,34,14,2,21,17,51,21,35,17,20,6,35,34,38,39,55,30,1,51,50,54,53,17,35,53,55,17,52,54,51,50,22,23,1,1,8,21,11,23,29,16,6,89,89,52,56,17,34,11,11,9,27,14,40,24,93,93,57,61,14,28,10,2,173,3,7,16,28,38,23,254,191,33,254,187,71,69,7,5,36,3,7,59,46,1,66,29,4,1,68,71,69,7,5,0,0,0,0,1,0,28,255,73,1,45,2,107,0,27,0,56,0,184,0,0,69,88,184,0,9,47,27,185,0,9,0,9,62,89,187,0,21,0,1,0,0,0,4,43,184,0,9,16,185,0,6,0,1,244,184,0,9,16,184,0,13,208,184,0,6,16,184,0,14,208,48,49,23,34,46,2,53,17,35,53,63,1,51,21,51,21,35,17,20,30,2,51,50,54,55,23,14,1,223,35,46,28,11,75,76,6,38,139,139,7,18,31,25,14,33,13,12,21,42,183,21,38,54,32,1,224,34,4,139,139,38,254,29,23,38,27,15,10,5,36,7,11,0,2,0,5,255,244,2,28,1,224,0,8,0,32,0,127,0,184,0,0,69,88,184,0,25,47,27,185,0,25,0,9,62,89,184,0,0,69,88,184,0,17,47,27,185,0,17,0,5,62,89,186,0,21,0,24,0,3,43,184,0,21,16,184,0,0,208,184,0,17,16,185,0,5,0,1,244,186,0,13,0,25,0,17,17,18,57,184,0,13,16,185,0,8,0,1,244,184,0,0,16,184,0,9,208,184,0,17,16,184,0,11,208,184,0,11,47,184,0,24,16,184,0,28,208,184,0,25,16,184,0,29,208,184,0,28,16,184,0,32,208,48,49,1,33,21,20,22,51,50,54,63,1,35,17,35,39,35,14,1,35,34,38,61,1,35,53,55,53,51,21,33,53,51,21,51,1,151,254,248,51,58,43,70,42,133,89,37,5,2,35,78,50,75,70,94,94,44,1,8,44,89,1,3,81,77,73,47,51,133,254,253,80,42,50,90,94,87,29,4,188,188,188,188,0,1,0,42,255,244,1,233,1,224,0,45,0,89,0,184,0,0,69,88,184,0,13,47,27,185,0,13,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,13,16,185,0,12,0,1,244,184,0,15,208,184,0,15,47,184,0,0,16,185,0,23,0,1,244,184,0,12,16,184,0,34,208,184,0,31,208,184,0,31,47,184,0,13,16,184,0,33,208,48,49,5,34,46,2,53,52,62,2,55,53,35,53,51,21,14,1,21,20,30,2,51,50,62,2,53,52,38,39,53,51,21,35,21,30,3,21,20,14,2,1,10,51,79,54,28,17,27,34,17,107,169,48,63,21,42,62,41,40,62,42,22,63,48,168,106,17,34,27,17,29,54,79,12,37,63,82,44,41,69,57,43,16,2,38,29,33,114,81,39,71,54,32,32,54,71,39,81,114,33,29,38,2,16,43,57,69,41,44,82,63,37,0,0,0,1,0,85,255,244,1,204,1,236,0,33,0,69,0,184,0,0,69,88,184,0,26,47,27,185,0,26,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,26,16,184,0,6,208,184,0,6,47,184,0,0,16,185,0,13,0,1,244,184,0,26,16,185,0,21,0,1,244,48,49,23,34,46,2,53,17,51,17,20,30,2,51,50,62,2,53,52,38,35,34,7,39,54,51,50,22,21,20,14,2,255,35,62,46,27,44,21,34,46,26,38,58,40,21,46,48,17,17,11,23,29,65,69,26,52,77,12,23,50,78,55,1,30,254,235,48,67,42,19,39,66,90,51,87,94,8,38,8,104,109,61,106,79,45,0,0,1,0,12,0,0,1,166,1,224,0,13,0,51,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,184,0,3,208,186,0,8,0,0,0,3,17,18,57,48,49,19,51,19,35,3,46,1,39,35,14,1,7,3,35,190,52,180,48,108,11,26,11,4,12,25,12,108,45,1,224,254,32,1,45,35,71,32,32,71,35,254,211,0,0,1,0,24,0,0,2,149,1,224,0,33,0,87,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,33,47,27,185,0,33,0,5,62,89,184,0,23,208,186,0,5,0,0,0,23,17,18,57,184,0,0,16,184,0,10,208,184,0,23,16,184,0,13,208,186,0,18,0,0,0,13,17,18,57,186,0,28,0,0,0,33,17,18,57,48,49,19,51,19,30,1,23,51,62,1,55,19,51,19,35,3,46,1,39,35,14,1,7,3,35,3,46,1,39,35,14,1,7,3,35,161,58,85,10,16,10,4,9,18,12,82,54,142,48,87,8,16,8,4,9,17,9,88,52,88,9,17,9,4,9,17,9,84,45,1,224,254,214,35,67,35,35,69,35,1,40,254,32,1,55,33,63,32,32,63,33,254,201,1,55,33,63,32,32,63,33,254,201,0,0,1,0,12,0,0,1,168,2,219,0,27,0,75,0,184,0,0,69,88,184,0,5,47,27,185,0,5,0,19,62,89,184,0,0,69,88,184,0,27,47,27,185,0,27,0,5,62,89,184,0,5,16,185,0,11,0,1,244,186,0,15,0,27,0,5,17,18,57,184,0,27,16,184,0,17,208,186,0,22,0,5,0,27,17,18,57,48,49,19,62,3,51,50,23,7,46,1,35,34,6,15,1,19,35,3,46,1,39,35,14,1,7,3,35,213,10,29,40,51,32,27,22,10,8,21,11,44,60,19,24,197,48,116,12,27,13,4,11,23,11,102,45,2,61,30,57,44,27,10,38,3,5,72,55,75,254,23,1,46,30,73,32,32,72,31,254,210,0,1,0,3,0,0,1,127,1,224,0,15,0,55,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,9,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,5,62,89,186,0,6,0,1,0,15,17,18,57,184,0,1,16,184,0,11,208,48,49,55,3,51,23,30,1,23,51,62,1,63,1,51,3,21,35,171,168,48,81,14,30,16,4,15,29,14,80,49,168,44,173,1,51,155,29,52,28,28,52,29,155,254,205,173,0,0,0,1,0,27,255,75,1,217,1,224,0,23,0,75,0,184,0,0,69,88,184,0,9,47,27,185,0,9,0,9,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,187,0,17,0,1,0,0,0,4,43,184,0,4,16,185,0,12,0,1,244,184,0,6,208,184,0,9,16,185,0,7,0,1,244,184,0,11,208,48,49,5,34,38,61,1,33,53,1,35,53,33,21,1,33,21,20,22,51,50,54,55,23,14,1,1,165,51,46,254,215,1,28,253,1,54,254,229,1,27,22,32,12,21,8,10,8,30,181,64,68,49,24,1,162,38,23,254,94,83,45,53,6,3,36,5,7,0,0,2,0,27,255,176,1,176,1,224,0,9,0,36,0,89,0,184,0,0,69,88,184,0,34,47,27,185,0,34,0,9,62,89,184,0,0,69,88,184,0,30,47,27,185,0,30,0,5,62,89,185,0,10,0,1,244,184,0,9,208,184,0,9,47,184,0,6,220,184,0,15,220,184,0,30,16,184,0,22,208,184,0,10,16,184,0,31,208,184,0,31,47,184,0,34,16,185,0,32,0,1,244,48,49,37,50,54,53,52,38,35,34,6,7,39,22,50,51,54,51,50,22,21,20,6,43,1,14,1,7,39,62,1,55,35,53,1,35,53,33,21,1,43,46,49,21,26,27,55,23,158,31,60,31,56,87,39,44,71,72,61,5,9,5,35,5,9,5,166,1,28,253,1,53,38,42,26,20,27,55,60,1,1,149,44,38,43,62,18,39,23,7,20,36,17,24,1,162,38,23,0,0,0,0,1,0,2,255,27,1,131,1,224,0,38,0,73,0,184,0,0,69,88,184,0,26,47,27,185,0,26,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,7,62,89,185,0,11,0,1,244,186,0,19,0,26,0,0,17,18,57,184,0,26,16,185,0,24,0,1,244,184,0,19,16,185,0,29,0,1,244,48,49,23,34,46,2,39,55,30,3,51,50,62,2,53,52,38,35,34,6,7,39,19,33,53,33,21,3,54,30,2,21,20,14,2,193,36,58,46,36,15,26,13,32,39,49,31,30,54,41,24,79,77,22,27,17,24,215,254,249,1,64,212,53,86,60,33,33,54,70,229,13,22,26,14,31,13,24,19,11,25,45,63,39,72,84,11,8,31,1,36,38,23,254,224,10,20,50,77,47,52,80,54,28,0,0,0,0,1,0,1,0,0,1,121,2,219,0,27,0,47,0,184,0,0,69,88,184,0,15,47,27,185,0,15,0,19,62,89,184,0,0,69,88,184,0,27,47,27,185,0,27,0,5,62,89,184,0,15,16,185,0,6,0,1,244,48,49,19,62,1,53,52,38,35,34,6,7,39,62,3,51,50,30,2,21,20,14,2,7,17,35,156,89,86,74,70,59,76,25,26,14,35,46,56,35,40,70,51,29,26,47,65,39,44,1,72,48,100,72,65,79,48,30,31,15,31,25,15,24,46,69,45,44,69,58,50,24,254,210,0,0,0,0,1,0,24,0,0,1,145,2,219,0,27,0,47,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,19,62,89,184,0,0,69,88,184,0,27,47,27,185,0,27,0,5,62,89,184,0,10,16,185,0,19,0,1,244,48,49,19,46,3,53,52,62,2,51,50,30,2,23,7,46,1,35,34,6,21,20,22,23,17,35,201,38,65,47,27,31,54,73,43,33,53,43,33,14,27,23,71,55,75,80,87,89,45,1,46,24,50,58,69,44,45,69,46,24,15,25,31,15,31,30,48,79,65,72,100,48,254,184,0,0,0,0,1,0,5,0,0,1,144,2,219,0,32,0,73,0,184,0,0,69,88,184,0,19,47,27,185,0,19,0,19,62,89,184,0,0,69,88,184,0,32,47,27,185,0,32,0,5,62,89,187,0,4,0,1,0,0,0,4,43,184,0,19,16,185,0,10,0,1,244,184,0,4,16,184,0,28,208,184,0,0,16,184,0,29,208,48,49,19,35,53,55,51,62,1,53,52,38,35,34,6,7,39,62,3,51,50,30,2,21,20,6,7,51,21,35,17,35,167,162,76,97,84,84,75,70,59,75,25,27,14,36,45,56,35,40,70,52,29,82,63,153,189,44,1,34,34,4,48,107,65,65,79,48,30,31,15,31,25,15,24,46,69,45,69,108,42,38,254,222,0,0,0,0,1,0,20,0,0,1,159,2,219,0,34,0,73,0,184,0,0,69,88,184,0,13,47,27,185,0,13,0,19,62,89,184,0,0,69,88,184,0,34,47,27,185,0,34,0,5,62,89,187,0,2,0,1,0,1,0,4,43,184,0,13,16,185,0,22,0,1,244,184,0,2,16,184,0,29,208,184,0,1,16,184,0,31,208,48,49,19,35,53,51,46,3,53,52,62,2,51,50,30,2,23,7,46,1,35,34,6,21,20,22,23,51,23,21,35,17,35,209,189,152,31,53,38,22,31,54,73,43,33,53,43,33,14,27,23,71,55,75,80,84,84,97,76,162,44,1,34,38,21,48,54,61,35,45,69,46,24,15,25,31,15,31,30,48,79,65,65,107,48,4,34,254,222,0,0,0,1,0,6,255,6,1,1,2,238,0,21,0,55,0,187,0,16,0,1,0,12,0,4,43,187,0,11,0,1,0,7,0,4,43,184,0,11,16,184,0,2,208,184,0,7,16,184,0,3,208,184,0,16,16,184,0,20,208,184,0,12,16,184,0,21,208,48,49,19,21,51,21,35,17,35,17,35,53,55,51,53,35,53,55,51,17,51,17,51,21,156,101,101,36,114,78,36,114,78,36,36,101,1,76,123,33,254,86,1,170,29,4,123,29,4,1,129,254,127,33,0,0,0,0,3,0,66,255,244,1,185,2,219,0,15,0,31,0,43,0,67,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,19,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,187,0,38,0,2,0,32,0,4,43,184,0,0,16,185,0,16,0,1,244,184,0,8,16,185,0,24,0,1,244,48,49,23,34,46,2,53,52,54,51,50,22,21,20,14,2,39,50,62,2,53,52,38,35,34,6,21,20,30,2,19,34,38,53,52,54,51,50,22,21,20,6,253,44,70,48,25,98,89,90,98,25,48,70,45,31,53,39,21,81,63,62,81,21,38,53,31,15,22,22,15,15,23,23,12,43,91,142,99,177,191,191,177,99,142,91,43,39,37,80,128,91,164,165,166,163,91,128,80,37,1,42,21,17,17,20,20,17,17,21,0,0,0,0,1,0,33,0,0,2,42,2,219,0,42,0,122,0,184,0,0,69,88,184,0,20,47,27,185,0,20,0,9,62,89,184,0,0,69,88,184,0,24,47,27,185,0,24,0,19,62,89,184,0,0,69,88,184,0,16,47,27,185,0,16,0,5,62,89,184,0,24,16,185,0,31,0,1,244,184,0,3,208,184,0,3,47,184,0,20,16,184,0,36,208,184,0,8,208,184,0,20,16,185,0,17,0,1,244,184,0,13,208,184,0,9,208,184,0,16,16,184,0,12,208,184,0,24,16,184,0,40,208,184,0,40,47,48,49,1,46,1,35,34,6,29,1,51,21,35,17,35,17,35,17,35,17,35,53,55,53,52,54,51,50,22,23,7,46,1,35,34,6,29,1,51,53,52,54,51,50,23,2,30,14,29,14,39,36,111,111,44,223,44,66,66,68,62,20,41,20,12,18,34,17,43,43,223,61,57,35,35,2,167,8,6,56,53,104,38,254,70,1,186,254,70,1,186,34,4,89,75,77,9,9,36,9,7,61,56,86,107,72,72,16,0,0,255,255,0,33,0,0,2,173,2,219,0,38,2,4,0,0,0,7,0,38,2,18,0,0,255,255,0,33,255,244,2,201,2,219,0,38,2,4,0,0,0,7,0,41,2,18,0,0,0,1,0,33,255,244,2,16,2,219,0,46,0,122,0,124,184,0,33,47,24,184,0,0,69,88,184,0,16,47,27,185,0,16,0,9,62,89,184,0,0,69,88,184,0,20,47,27,185,0,20,0,19,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,184,0,3,208,184,0,3,47,184,0,16,16,185,0,13,0,1,244,184,0,9,208,184,0,20,16,185,0,26,0,1,244,184,0,16,16,184,0,31,208,184,0,35,208,184,0,9,16,184,0,36,208,184,0,3,16,185,0,43,0,1,244,48,49,37,14,1,35,34,46,2,53,17,35,17,35,17,35,53,55,53,52,54,51,50,23,7,46,1,35,34,6,29,1,51,55,51,21,51,21,35,17,20,30,2,51,50,54,55,2,16,21,43,15,35,45,28,11,187,44,66,66,62,57,35,35,12,15,29,14,38,37,188,6,37,140,140,7,18,32,25,14,33,13,6,8,10,21,38,54,32,1,53,254,70,1,186,34,4,107,72,72,16,36,8,6,56,53,104,139,139,38,254,199,23,37,27,15,9,6,0,1,0,33,255,244,3,27,2,219,0,66,0,211,0,184,0,0,69,88,184,0,40,47,27,185,0,40,0,19,62,89,184,0,0,69,88,184,0,24,47,27,185,0,24,0,19,62,89,184,0,0,69,88,184,0,42,47,27,185,0,42,0,19,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,9,62,89,184,0,0,69,88,184,0,35,47,27,185,0,35,0,9,62,89,184,0,0,69,88,184,0,50,47,27,185,0,50,0,9,62,89,184,0,0,69,88,184,0,54,47,27,185,0,54,0,9,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,5,62,89,184,0,54,16,185,0,9,0,1,244,184,0,10,208,184,0,13,208,184,0,14,208,184,0,17,208,184,0,18,208,184,0,24,16,185,0,31,0,1,244,184,0,40,16,185,0,46,0,1,244,184,0,18,16,184,0,56,208,184,0,57,208,184,0,3,16,185,0,63,0,1,244,48,49,37,14,1,35,34,46,2,53,17,35,17,35,17,35,17,35,17,35,53,55,53,52,54,51,50,22,23,7,46,1,35,34,6,29,1,51,53,52,54,51,50,23,7,46,1,35,34,6,29,1,51,55,51,21,51,21,35,17,20,30,2,51,50,54,55,3,27,21,43,15,35,45,28,11,187,44,223,44,66,66,68,62,20,41,20,12,18,34,17,43,43,223,61,57,35,35,12,14,29,14,39,36,188,6,37,139,139,7,18,32,25,14,33,13,6,8,10,21,38,54,32,1,53,254,70,1,186,254,70,1,186,34,4,89,75,77,9,9,36,9,7,61,56,86,107,72,72,16,36,8,6,56,53,104,139,139,38,254,199,23,37,27,15,9,6,0,0,0,1,0,43,0,0,1,12,2,147,0,11,0,61,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,17,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,185,0,9,0,1,244,184,0,0,208,184,0,4,16,185,0,6,0,1,244,184,0,3,208,48,49,55,51,17,35,53,51,21,35,17,51,21,35,43,90,90,225,89,89,225,40,2,67,40,40,253,189,40,0,0,255,255,0,43,0,0,1,12,3,84,2,38,2,9,0,0,0,7,7,34,0,157,0,0,255,255,0,43,0,0,1,13,3,84,2,38,2,9,0,0,0,7,7,37,0,157,0,0,255,255,0,22,0,0,1,36,3,71,2,38,2,9,0,0,0,7,7,40,0,157,0,0,255,255,255,248,0,0,1,66,3,66,2,38,2,9,0,0,0,7,7,42,0,157,0,0,255,255,0,23,0,0,1,35,3,30,2,38,2,9,0,0,0,7,7,54,0,157,0,0,255,255,0,33,0,0,1,25,3,11,2,38,2,9,0,0,0,7,7,44,0,157,0,0,255,255,0,43,0,0,1,12,3,33,2,38,2,9,0,0,0,7,7,52,0,157,0,0,255,255,0,22,0,0,1,36,3,73,2,38,2,9,0,0,0,7,7,62,0,157,0,0,255,255,0,43,0,0,1,12,3,95,2,38,2,9,0,0,0,7,7,56,0,157,0,0,255,255,0,43,255,62,1,12,2,147,2,38,2,9,0,0,0,7,7,51,0,159,252,234,0,1,0,43,255,51,1,12,2,147,0,30,0,85,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,17,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,186,0,25,0,0,0,3,43,184,0,7,16,185,0,8,0,1,244,184,0,12,16,185,0,11,0,1,244,184,0,14,208,184,0,8,16,184,0,17,208,184,0,7,16,184,0,18,208,48,49,23,34,38,53,52,54,55,35,53,51,17,35,53,51,21,35,17,51,21,35,14,1,21,20,22,51,50,55,23,14,1,162,35,49,39,26,100,90,90,225,89,89,83,32,36,31,20,23,20,16,11,37,205,40,42,38,63,22,40,2,67,40,40,253,189,40,24,61,31,26,26,14,27,10,14,0,0,255,255,0,21,0,0,1,37,3,71,2,38,2,9,0,0,0,7,7,49,0,157,0,0,0,1,0,97,255,100,2,27,2,147,0,31,0,83,0,184,0,0,69,88,184,0,20,47,27,185,0,20,0,17,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,5,62,89,187,0,7,0,1,0,0,0,4,43,184,0,19,16,184,0,11,208,186,0,13,0,20,0,19,17,18,57,184,0,20,16,184,0,28,208,186,0,23,0,28,0,10,17,18,57,48,49,5,34,38,39,55,30,1,51,50,54,53,35,1,39,35,30,1,21,17,35,17,51,1,23,51,46,1,53,17,51,17,20,1,176,17,34,11,10,9,27,15,40,24,4,254,234,74,4,2,4,44,48,1,22,74,4,2,4,44,156,8,5,39]);fileData0.push.apply(fileData0,[3,6,60,53,1,209,131,48,91,48,254,103,2,147,254,47,131,48,96,48,1,148,253,94,141,0,0,0,255,255,0,52,255,244,1,196,1,236,2,6,1,200,0,0,255,255,0,52,255,244,1,196,2,242,2,38,1,200,0,0,0,7,7,33,1,17,0,0,255,255,0,52,255,244,1,196,2,242,2,38,1,200,0,0,0,7,7,36,1,17,0,0,255,255,0,52,255,244,1,196,2,225,2,38,1,200,0,0,0,7,7,39,1,17,0,0,255,255,0,52,255,244,1,196,2,198,2,38,1,200,0,0,0,7,7,41,1,17,0,0,255,255,0,52,255,244,1,196,2,160,2,38,1,200,0,0,0,7,7,53,1,17,0,0,255,255,0,52,255,244,1,196,2,130,2,38,1,200,0,0,0,7,7,43,1,17,0,0,255,255,0,52,255,244,1,196,2,211,2,38,1,200,0,0,0,7,7,47,1,17,0,0,255,255,0,52,255,244,1,196,2,227,2,38,1,200,0,0,0,7,7,57,1,17,0,0,255,255,0,52,255,244,1,196,2,225,2,38,1,200,0,0,0,7,7,61,1,17,0,0,255,255,0,52,255,62,1,196,1,236,2,38,1,200,0,0,0,7,7,51,1,18,252,234,255,255,0,52,255,244,1,196,2,229,2,38,1,200,0,0,0,7,7,55,1,17,0,0,255,255,0,52,255,244,1,226,3,3,2,38,1,200,0,0,0,7,7,118,1,17,0,0,255,255,0,46,255,244,1,196,3,3,2,38,1,200,0,0,0,7,7,120,1,17,0,0,255,255,0,52,255,244,1,199,3,8,2,38,1,200,0,0,0,7,7,122,1,17,0,0,255,255,0,52,255,244,1,196,3,17,2,38,1,200,0,0,0,7,7,124,1,17,0,0,255,255,0,52,255,62,1,196,2,225,2,38,1,200,0,0,0,39,7,39,1,17,0,0,0,7,7,51,1,18,252,234,255,255,0,52,255,244,1,196,3,33,2,38,1,200,0,0,0,7,7,126,1,17,0,0,255,255,0,52,255,244,1,196,3,33,2,38,1,200,0,0,0,7,7,128,1,17,0,0,255,255,0,52,255,244,1,196,3,57,2,38,1,200,0,0,0,7,7,130,1,17,0,0,255,255,0,52,255,244,1,196,3,17,2,38,1,200,0,0,0,7,7,132,1,17,0,0,255,255,0,52,255,62,1,196,2,211,2,38,1,200,0,0,0,39,7,47,1,17,0,0,0,7,7,51,1,18,252,234,0,2,0,52,255,53,1,218,1,236,0,36,0,53,0,137,0,184,0,0,69,88,184,0,19,47,27,185,0,19,0,9,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,186,0,31,0,0,0,3,43,184,0,11,16,184,0,6,208,186,0,7,0,11,0,19,17,18,57,186,0,22,0,19,0,11,17,18,57,184,0,19,16,184,0,25,208,184,0,25,47,184,0,6,16,184,0,26,208,184,0,26,47,184,0,11,16,185,0,37,0,1,244,184,0,7,16,185,0,40,0,1,244,184,0,22,16,185,0,41,0,1,244,184,0,19,16,185,0,44,0,1,244,48,49,5,34,38,53,52,54,55,39,35,14,1,35,34,38,53,52,62,2,51,50,22,23,51,55,51,17,6,21,20,22,51,50,55,23,14,1,39,50,54,55,17,46,1,35,34,14,2,21,20,30,2,1,153,35,47,48,40,5,3,29,79,48,91,108,35,58,78,43,43,65,34,2,3,39,86,29,20,23,20,16,12,37,168,40,73,38,38,67,35,36,62,45,26,21,40,59,203,40,41,38,62,29,55,29,45,129,122,58,94,66,35,30,28,46,254,32,52,64,26,26,14,26,10,13,230,41,38,1,29,34,28,33,57,79,45,48,78,55,31,255,255,0,53,255,27,1,196,1,236,2,6,1,209,0,0,255,255,0,53,255,27,1,196,2,242,2,38,1,209,0,0,0,7,7,36,1,22,0,0,255,255,0,53,255,27,1,196,2,225,2,38,1,209,0,0,0,7,7,39,1,23,0,0,255,255,0,53,255,27,1,196,2,211,2,38,1,209,0,0,0,7,7,47,1,23,0,0,255,255,0,53,255,27,1,196,2,164,2,38,1,209,0,0,0,7,7,51,1,23,0,0,255,255,0,53,255,27,1,196,2,225,2,38,1,209,0,0,0,7,7,85,1,23,0,0,255,255,0,53,255,27,1,196,2,225,2,38,1,209,0,0,0,7,7,61,1,23,0,0,255,255,0,53,255,27,1,196,2,130,2,38,1,209,0,0,0,7,7,43,1,23,0,0,255,255,0,53,255,27,1,196,2,198,2,38,1,209,0,0,0,7,7,41,1,23,0,0,0,1,0,92,0,0,0,136,2,207,0,3,0,37,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,19,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,48,49,19,51,17,35,92,44,44,2,207,253,49,0,0,255,255,0,67,0,0,0,220,3,135,2,38,2,55,0,0,0,6,7,37,108,51,0,0,255,255,0,92,0,0,0,237,2,242,0,38,2,55,0,0,0,7,7,63,0,229,0,0,255,255,0,92,0,0,1,55,2,207,0,38,2,55,0,0,0,7,4,119,0,159,1,34,255,255,0,30,255,37,0,182,2,207,2,38,2,55,0,0,0,6,7,84,114,0,0,0,255,255,0,77,255,62,0,153,2,207,2,38,2,55,0,0,0,7,7,51,0,115,252,234,255,255,255,247,255,62,0,237,3,100,2,38,2,55,0,0,0,39,7,43,0,114,0,226,0,7,7,51,0,115,252,234,255,255,255,247,255,97,0,237,2,207,2,38,2,55,0,0,0,7,7,43,0,114,253,3,0,1,0,10,0,0,0,213,2,207,0,11,0,63,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,19,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,187,0,6,0,1,0,3,0,4,43,184,0,3,16,184,0,0,208,184,0,6,16,184,0,9,208,48,49,19,17,35,17,7,39,55,17,51,17,55,23,137,44,65,18,83,44,57,19,1,132,254,124,1,108,42,30,54,1,57,254,224,38,30,255,255,0,33,0,0,1,161,2,219,0,38,0,35,0,0,0,7,2,55,1,25,0,0,255,255,0,8,0,0,2,6,2,147,2,6,0,4,0,0,255,255,0,97,0,0,2,21,2,147,2,6,0,5,0,0,0,1,0,97,0,0,1,200,2,147,0,5,0,47,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,184,0,0,16,185,0,2,0,1,244,48,49,19,33,21,33,17,35,97,1,103,254,199,46,2,147,40,253,149,0,0,0,2,0,27,0,0,2,18,2,147,0,5,0,11,0,53,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,17,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,185,0,6,0,1,244,186,0,9,0,1,0,4,17,18,57,48,49,55,19,51,19,21,33,37,3,39,35,7,3,27,228,48,227,254,9,1,196,122,76,4,77,122,27,2,120,253,136,27,40,1,90,221,221,254,166,0,255,255,0,97,0,0,1,212,2,147,2,6,0,8,0,0,255,255,0,50,0,0,1,234,2,147,2,6,0,29,0,0,255,255,0,97,0,0,2,30,2,147,2,6,0,11,0,0,0,3,0,55,255,244,2,86,2,159,0,3,0,23,0,43,0,67,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,17,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,187,0,1,0,1,0,2,0,4,43,184,0,4,16,185,0,24,0,2,244,184,0,14,16,185,0,34,0,2,244,48,49,19,51,21,35,19,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,39,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,205,242,242,121,59,100,72,40,40,72,100,59,60,100,72,40,40,72,100,60,50,82,59,32,32,59,82,50,50,83,58,32,32,58,83,1,114,40,254,170,49,90,127,78,78,125,89,47,47,89,125,78,78,127,90,49,42,43,79,111,69,68,110,77,42,42,77,110,68,69,111,79,43,0,0,255,255,0,97,0,0,0,143,2,147,2,6,0,12,0,0,255,255,0,97,0,0,2,36,2,147,2,6,0,14,0,0,0,1,0,4,0,0,1,231,2,147,0,17,0,51,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,17,47,27,185,0,17,0,5,62,89,184,0,3,208,186,0,10,0,0,0,3,17,18,57,48,49,19,51,19,35,3,46,3,39,35,14,3,7,3,35,220,49,218,49,122,9,17,17,17,10,4,10,17,16,17,9,122,47,2,147,253,109,1,129,30,55,52,54,30,30,54,52,55,30,254,127,0,255,255,0,97,0,0,2,97,2,147,2,6,0,16,0,0,255,255,0,97,0,0,2,27,2,147,2,6,0,17,0,0,0,3,0,47,0,0,1,208,2,147,0,3,0,7,0,11,0,67,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,17,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,187,0,5,0,1,0,6,0,4,43,184,0,2,16,185,0,0,0,1,244,184,0,8,16,185,0,10,0,1,244,48,49,55,33,21,33,19,33,21,33,3,33,21,33,47,1,161,254,95,78,1,4,254,252,68,1,141,254,115,40,40,1,114,40,1,73,40,255,255,0,55,255,244,2,86,2,159,2,6,0,18,0,0,0,1,0,97,0,0,2,25,2,147,0,7,0,64,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,5,62,89,184,0,0,16,185,0,4,0,1,244,48,49,19,33,17,35,17,33,17,35,97,1,184,46,254,164,46,2,147,253,109,2,107,253,149,0,0,0,255,255,0,97,0,0,1,246,2,147,2,6,0,19,0,0,0,1,0,47,0,0,1,237,2,147,0,11,0,57,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,17,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,5,62,89,184,0,3,16,185,0,5,0,1,244,184,0,10,16,185,0,8,0,1,244,48,49,55,19,3,53,33,21,33,19,3,33,21,33,47,240,235,1,154,254,162,223,227,1,129,254,66,27,1,52,1,41,27,40,254,229,254,216,40,255,255,0,29,0,0,1,239,2,147,2,6,0,23,0,0,255,255,0,3,0,0,1,188,2,147,2,6,0,28,0,0,0,3,0,48,255,234,2,135,2,169,0,10,0,21,0,47,0,65,0,125,184,0,34,47,24,184,0,46,47,187,0,11,0,1,0,45,0,4,43,187,0,21,0,1,0,35,0,4,43,184,0,21,16,184,0,0,208,184,0,11,16,184,0,10,208,184,0,45,16,184,0,22,208,184,0,35,16,184,0,32,208,48,49,37,62,3,53,52,46,2,39,35,14,3,21,20,30,2,23,19,30,3,21,20,14,2,7,21,35,53,46,3,53,52,62,2,55,53,51,1,113,53,86,60,32,32,60,86,53,43,53,86,60,32,32,60,86,53,43,63,103,72,40,40,72,103,63,43,63,103,72,40,40,72,103,63,43,114,1,33,57,79,48,48,77,56,31,1,1,31,56,77,48,48,79,57,33,1,1,213,1,36,65,92,57,57,94,66,38,1,98,98,1,38,66,94,57,57,92,65,36,1,98,0,255,255,0,17,0,0,1,209,2,147,2,6,0,27,0,0,0,1,0,70,0,0,2,86,2,147,0,21,0,85,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,17,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,186,0,15,0,11,0,5,17,18,57,184,0,15,16,185,0,7,0,1,244,184,0,4,208,184,0,11,16,184,0,16,208,184,0,15,16,184,0,18,208,184,0,16,16,184,0,21,208,48,49,1,21,20,6,7,17,35,17,46,1,61,1,51,21,20,23,17,51,17,54,61,1,2,86,127,115,45,115,126,45,196,45,196,2,147,162,121,114,2,254,252,1,4,2,114,121,162,161,194,5,1,104,254,152,3,196,161,0,1,0,46,0,0,2,101,2,159,0,49,0,87,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,17,62,89,184,0,0,69,88,184,0,49,47,27,185,0,49,0,5,62,89,185,0,0,0,1,244,184,0,49,16,184,0,26,208,185,0,24,0,1,244,184,0,27,208,184,0,27,47,184,0,12,16,185,0,37,0,2,244,184,0,0,16,184,0,47,208,184,0,47,47,48,49,55,51,53,46,3,53,52,62,2,51,50,30,2,21,20,14,2,7,21,51,21,35,53,62,3,53,52,46,2,35,34,14,2,21,20,30,2,23,21,35,46,143,24,47,37,23,38,71,101,62,62,100,71,38,23,37,47,24,143,213,30,55,43,25,30,57,83,53,53,83,58,30,25,43,55,30,213,39,4,23,60,75,91,55,70,118,87,49,49,87,118,70,55,91,75,60,23,4,39,34,21,59,77,97,59,60,103,76,43,43,76,103,60,59,97,77,59,21,34,255,255,0,13,0,0,2,12,2,158,0,38,0,4,6,0,0,6,3,109,36,0,0,0,255,255,255,233,0,0,1,244,2,158,0,38,0,8,32,0,0,6,3,109,0,0,0,0,255,255,255,233,0,0,2,62,2,158,0,38,0,11,32,0,0,6,3,109,0,0,0,0,255,255,255,233,0,0,0,175,2,158,0,38,0,12,32,0,0,6,3,109,0,0,0,0,255,255,255,242,0,0,0,254,3,30,2,38,0,12,0,0,0,6,7,54,120,0,0,0,255,255,255,233,255,244,2,106,2,159,0,38,0,18,20,0,0,6,3,109,0,0,0,0,255,255,255,233,0,0,2,24,2,158,0,38,0,28,92,0,0,6,3,109,0,0,0,0,255,255,0,3,0,0,1,188,3,30,2,38,0,28,0,0,0,7,7,54,0,223,0,0,255,255,255,233,0,0,2,121,2,159,0,38,2,88,20,0,0,6,3,109,0,0,0,0,0,2,0,52,255,244,2,8,1,236,0,38,0,57,0,127,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,186,0,16,0,10,0,0,17,18,57,184,0,10,16,184,0,18,208,184,0,18,47,184,0,0,16,184,0,33,208,184,0,33,47,185,0,26,0,1,244,186,0,36,0,0,0,10,17,18,57,184,0,0,16,185,0,39,0,1,244,184,0,36,16,185,0,44,0,2,244,184,0,16,16,185,0,45,0,1,244,184,0,10,16,185,0,50,0,1,244,48,49,23,34,46,2,53,52,62,2,51,50,30,2,23,51,55,51,14,3,21,20,22,51,50,54,55,23,14,1,35,34,38,55,35,6,39,50,62,2,63,1,46,3,35,34,14,2,21,20,22,232,40,66,48,26,34,58,76,41,24,48,42,34,9,3,23,44,10,21,17,11,28,20,9,18,8,8,8,24,17,38,47,8,3,59,94,28,55,43,28,3,8,12,33,38,40,18,32,59,45,28,74,12,30,60,90,60,63,98,68,35,15,34,55,40,132,51,110,107,96,36,24,29,5,3,36,4,7,54,54,108,39,28,49,64,36,94,50,61,33,11,30,57,84,54,93,108,0,0,0,0,2,0,89,255,76,1,240,2,219,0,27,0,57,0,89,0,125,184,0,57,47,24,184,0,0,69,88,184,0,33,47,27,185,0,33,0,19,62,89,184,0,0,69,88,184,0,50,47,27,185,0,50,0,5,62,89,185,0,3,0,1,244,186,0,11,0,33,0,50,17,18,57,184,0,11,16,185,0,14,0,1,244,184,0,33,16,185,0,24,0,1,244,186,0,41,0,14,0,13,17,18,57,48,49,55,30,1,51,50,62,2,53,52,38,35,34,7,39,62,3,53,52,46,2,35,34,6,7,39,52,62,2,51,50,30,2,21,20,6,7,21,30,1,21,20,14,2,35,34,38,39,30,1,21,35,132,39,90,44,30,53,39,23,80,82,28,28,9,44,63,40,18,19,32,42,24,63,75,1,43,22,45,68,46,32,59,45,27,55,50,81,87,30,51,68,37,49,93,38,2,1,44,112,50,35,23,43,60,38,69,91,6,38,10,38,50,55,26,33,49,33,16,100,100,13,49,82,60,34,21,42,62,42,57,89,31,4,9,104,81,46,74,53,28,36,42,63,119,64,0,0,0,1,0,10,255,76,1,177,1,236,0,32,0,80,0,125,184,0,0,47,24,184,0,0,69,88,184,0,10,47,27,185,0,10,0,9,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,9,62,89,184,0,0,69,88,184,0,22,47,27,185,0,22,0,9,62,89,186,0,16,0,11,0,0,17,18,57,186,0,28,0,0,0,22,17,18,57,48,49,23,62,2,52,53,52,46,2,39,55,30,3,23,51,62,3,55,51,14,3,7,30,1,21,35,203,1,1,1,35,56,70,35,43,27,55,48,38,9,4,26,51,42,30,5,45,9,30,47,64,43,5,3,45,180,17,27,25,26,17,68,155,148,131,44,14,35,101,116,124,60,50,105,107,108,54,61,111,114,122,72,42,96,42,0,0,0,2,0,59,255,244,1,213,2,219,0,17,0,62,0,81,0,184,0,0,69,88,184,0,59,47,27,185,0,59,0,19,62,89,184,0,0,69,88,184,0,39,47,27,185,0,39,0,5,62,89,185,0,0,0,1,244,186,0,10,0,59,0,39,17,18,57,184,0,59,16,185,0,21,0,1,244,186,0,29,0,39,0,59,17,18,57,184,0,10,16,184,0,49,208,48,49,37,50,62,2,53,52,46,2,39,14,1,21,20,30,2,19,46,1,35,34,6,21,20,30,2,23,30,3,21,20,14,2,35,34,46,2,53,52,62,2,55,46,3,53,52,62,2,51,50,22,23,1,11,41,59,39,18,20,33,44,25,94,104,27,46,58,216,69,89,34,53,47,24,40,55,30,30,58,45,28,27,52,75,48,38,75,59,36,32,55,76,45,30,55,43,25,17,36,55,39,42,95,66,27,29,51,68,40,35,58,49,42,19,20,112,79,41,66,47,26,2,113,25,17,40,25,23,41,39,40,22,22,48,59,72,46,51,85,60,33,30,55,81,51,46,78,61,43,11,21,42,45,49,28,20,37,28,17,17,22,0,0,0,0,1,0,52,255,244,1,159,1,236,0,51,0,101,0,184,0,0,69,88,184,0,17,47,27,185,0,17,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,187,0,32,0,1,0,39,0,4,43,186,0,9,0,39,0,32,17,18,57,184,0,17,16,185,0,24,0,1,244,184,0,32,16,184,0,35,208,184,0,35,47,184,0,39,16,184,0,36,208,184,0,36,47,184,0,0,16,185,0,45,0,1,244,48,49,23,34,38,53,52,62,2,55,53,46,1,53,52,62,2,51,50,22,23,7,46,1,35,34,14,2,21,20,22,51,50,54,55,21,38,34,35,34,6,21,20,22,51,50,54,55,23,14,1,242,87,103,17,29,37,20,38,40,27,47,61,35,44,73,32,20,31,62,37,25,45,33,20,63,72,14,23,19,21,32,17,72,75,80,70,42,66,38,22,42,78,12,78,64,27,41,30,20,5,4,14,60,37,31,46,31,16,29,25,32,23,25,11,22,34,23,40,54,1,2,41,2,54,48,49,57,25,32,33,34,28,0,0,0,1,0,52,255,73,1,141,2,207,0,47,0,71,0,125,184,0,47,47,24,184,0,0,69,88,184,0,26,47,27,185,0,26,0,19,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,184,0,26,16,185,0,20,0,1,244,184,0,28,208,184,0,28,47,184,0,8,16,185,0,39,0,1,244,48,49,5,62,1,53,52,46,2,39,46,3,53,52,62,4,55,34,6,34,6,7,53,33,21,35,14,3,21,20,30,2,23,30,3,21,20,6,7,1,50,28,21,9,27,47,37,38,67,49,29,27,45,58,64,65,28,24,67,72,68,25,1,52,4,45,101,86,56,25,44,59,34,33,51,35,17,26,29,162,35,34,20,12,18,14,13,8,7,29,52,80,59,42,90,89,86,75,62,21,1,1,1,38,38,35,108,126,133,59,50,68,44,23,6,6,15,21,31,22,20,59,38,0,0,0,1,0,87,255,76,1,188,1,236,0,28,0,85,0,125,184,0,0,47,24,184,0,0,69,88,184,0,23,47,27,185,0,23,0,9,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,184,0,23,16,185,0,6,0,1,244,186,0,19,0,23,0,13,17,18,57,184,0,19,16,185,0,11,0,1,244,184,0,23,16,184,0,17,208,184,0,17,47,48,49,5,62,1,53,52,38,35,34,14,2,7,17,35,17,52,38,39,51,23,51,62,1,51,50,22,21,17,35,1,144,2,1,43,49,24,42,40,44,25,44,1,4,43,4,3,41,86,55,66,59,44,180,121,244,117,77,73,12,30,50,38,254,190,1,102,29,56,37,110,66,56,90,94,254,24,0,0,0,3,0,66,255,244,1,184,2,219,0,10,0,17,0,33,0,67,0,184,0,0,69,88,184,0,18,47,27,185,0,18,0,19,62,89,184,0,0,69,88,184,0,26,47,27,185,0,26,0,5,62,89,187,0,17,0,1,0,0,0,4,43,184,0,26,16,185,0,5,0,1,244,184,0,18,16,185,0,14,0,1,244,48,49,19,30,3,51,50,62,2,55,53,46,1,35,34,6,7,19,50,22,21,20,14,2,35,34,46,2,53,52,54,111,1,22,37,52,30,30,51,38,22,1,3,79,60,60,79,3,142,89,98,25,48,70,44,44,70,48,25,98,1,90,87,121,76,35,35,76,121,87,37,155,154,154,155,1,92,191,177,99,142,91,43,43,91,142,99,177,191,0,1,0,92,255,244,0,199,1,224,0,14,0,43,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,9,0,1,244,48,49,23,34,53,17,51,6,21,20,22,51,50,55,23,14,1,157,65,45,3,16,13,11,18,7,8,20,12,82,1,154,210,206,19,18,6,36,4,5,0,0,1,0,84,255,249,1,210,1,236,0,36,0,113,0,184,0,0,69,88,184,0,16,47,27,185,0,16,0,9,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,184,0,0,69,88,184,0,36,47,27,185,0,36,0,5,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,16,16,184,0,27,208,184,0,27,47,186,0,5,0,0,0,27,17,18,57,186,0,22,0,0,0,27,17,18,57,186,0,31,0,27,0,36,17,18,57,48,49,5,46,3,39,6,7,14,1,7,21,35,17,52,38,39,51,30,1,29,1,51,62,3,55,23,14,1,7,30,3,23,1,162,23,50,49,45,18,34,31,20,13,1,42,2,6,44,5,3,4,30,72,78,80,36,5,42,91,48,18,47,54,58,29,7,25,67,73,75,34,45,50,29,78,42,23,1,102,29,64,29,17,60,31,187,54,100,83,58,12,43,16,75,57,36,79,80,75,31,0,0,0,1,0,17,255,249,1,195,2,219,0,22,0,91,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,19,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,0,69,88,184,0,22,47,27,185,0,22,0,5,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,5,62,89,184,0,12,16,185,0,5,0,1,244,186,0,21,0,22,0,12,17,18,57,48,49,51,19,39,46,1,35,34,6,7,39,62,1,51,50,30,2,23,19,35,3,35,3,17,211,8,27,56,47,19,28,11,14,14,36,26,32,49,39,32,17,188,45,156,4,183,1,240,25,83,88,10,6,39,6,10,28,54,78,51,253,248,1,187,254,62,0,0,0,1,0,92,255,76,1,248,1,224,0,40,0,95,0,125,184,0,40,47,24,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,31,47,27,185,0,31,0,5,62,89,185,0,5,0,1,244,186,0,27,0,0,0,31,17,18,57,184,0,27,16,185,0,10,0,1,244,184,0,0,16,184,0,11,208,184,0,31,16,184,0,24,208,184,0,24,47,185,0,18,0,1,244,48,49,19,51,17,20,22,51,50,62,2,55,17,51,14,1,21,20,22,51,50,55,23,14,1,35,34,38,53,35,14,1,35,34,38,39,28,1,30,1,23,35,92,44,49,57,19,37,38,40,21,44,1,2,17,13,11,17,8,8,20,14,35,28,3,31,76,44,37,56,20,1,2,2,45,1,224,254,210,72,78,7,23,44,37,1,85,106,207,103,19,18,6,36,4,5,47,54,52,48,23,37,41,59,50,49,30,0,0,0,1,0,10,0,0,1,167,1,236,0,22,0,81,0,184,0,0,69,88,184,0,5,47,27,185,0,5,0,9,62,89,184,0,0,69,88,184,0,17,47,27,185,0,17,0,9,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,186,0,11,0,17,0,0,17,18,57,48,49,51,46,3,39,55,30,3,23,51,62,3,55,51,14,1,7,35,200,15,39,48,56,32,43,28,53,46,37,12,4,24,48,39,29,5,45,17,90,70,46,66,130,123,112,47,14,42,109,119,121,55,49,109,112,111,53,124,232,124,0,0,0,1,0,35,255,73,1,150,2,207,0,69,0,127,0,125,184,0,69,47,24,184,0,0,69,88,184,0,31,47,27,185,0,31,0,19,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,187,0,44,0,1,0,51,0,4,43,186,0,19,0,51,0,44,17,18,57,184,0,31,16,185,0,25,0,1,244,184,0,30,208,184,0,30,47,184,0,25,16,184,0,33,208,184,0,33,47,184,0,44,16,184,0,47,208,184,0,47,47,184,0,51,16,184,0,48,208,184,0,48,47,184,0,8,16,185,0,61,0,1,244,48,49,5,62,1,53,52,46,2,39,46,3,53,52,62,2,55,53,46,1,53,52,54,55,34,6,34,6,7,53,33,21,35,34,14,2,21,20,30,2,51,50,54,55,21,46,1,35,34,14,2,21,20,30,2,23,30,3,21,20,6,7,1,59,28,21,10,27,47,36,39,69,52,31,25,43,57,32,45,63,47,40,23,36,34,37,24,1,109,112,26,51,39,24,28,43,51,24,18,23,19,17,28,18,35,68,55,34,28,48,62,34,34,50,34,17,25,29,162,35,34,20,12,18,15,13,7,7,26,45,67,49,38,66,53,36,8,4,20,74,57,51,71,20,1,1,1,38,38,18,36,52,33,32,52,37,20,1,3,43,3,1,23,45,66,43,42,56,36,20,6,6,15,21,31,22,20,59,38,0,0,0,2,0,52,255,244,1,216,1,236,0,19,0,39,0,53,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,20,0,1,244,184,0,10,16,185,0,30,0,1,244,48,49,5,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,39,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,1,6,45,76,57,32,32,57,76,45,45,76,57,32,32,57,76,45,38,61,42,23,23,42,61,38,38,61,42,23,23,42,61,12,33,65,93,60,61,94,65,33,33,65,94,61,60,93,65,33,39,30,56,78,48,48,79,56,31,31,56,79,48,48,78,56,30,0,1,0,25,255,244,2,19,1,224,0,35,0,89,0,184,0,0,69,88,184,0,19,47,27,185,0,19,0,9,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,184,0,0,208,184,0,0,47,184,0,19,16,185,0,16,0,1,244,184,0,9,208,184,0,13,16,184,0,12,208,184,0,12,47,184,0,9,16,184,0,22,208,184,0,0,16,185,0,29,0,1,244,48,49,5,34,38,53,52,62,2,55,35,20,6,7,39,62,1,53,35,53,55,33,21,35,14,3,21,20,51,50,54,55,23,14,1,1,207,42,39,1,2,2,1,207,18,11,46,15,19,115,67,1,183,100,2,3,2,1,46,6,19,16,7,11,26,12,45,49,23,84,100,106,45,110,228,105,3,105,226,109,36,4,40,47,108,102,84,23,49,3,3,36,4,5,0,0,2,0,88,255,76,1,230,1,236,0,22,0,41,0,79,0,125,184,0,22,47,24,184,0,0,69,88,184,0,5,47,27,185,0,5,0,9,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,186,0,16,0,13,0,5,17,18,57,185,0,23,0,1,244,184,0,5,16,185,0,33,0,1,244,184,0,16,16,185,0,39,0,1,244,48,49,55,52,62,2,51,50,22,21,20,14,2,35,34,38,39,30,1,20,22,21,35,55,50,62,2,53,52,46,2,35,34,14,2,29,1,30,1,88,32,56,72,41,98,99,33,56,71,37,44,77,38,1,1,1,45,198,32,56,42,24,17,37,58,41,30,57,43,26,41,77,255,59,89,59,30,132,113,61,96,67,35,33,44,35,59,57,59,35,207,32,58,81,49,44,76,55,31,25,51,78,54,137,51,30,0,0,2,0,52,255,244,2,6,1,224,0,23,0,43,0,73,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,10,16,185,0,34,0,1,244,184,0,15,208,184,0,15,47,184,0,12,208,184,0,12,47,184,0,0,16,185,0,24,0,1,244,48,49,5,34,46,2,53,52,62,2,51,33,21,46,1,35,21,30,1,21,20,14,2,39,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,1,4,42,75,57,34,35,58,76,41,1,0,42,77,42,50,56,32,56,73,42,34,58,42,24,21,40,58,37,34,60,44,26,25,44,59,12,32,63,92,60,64,92,60,29,41,3,4,4,28,106,76,59,90,63,32,39,29,54,77,47,40,75,58,34,26,52,77,51,47,77,54,30,0,0,1,0,26,255,244,1,159,1,224,0,21,0,61,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,7,16,185,0,4,0,1,244,184,0,9,208,184,0,0,16,185,0,15,0,1,244,48,49,5,34,38,53,17,35,53,55,33,21,35,6,20,21,20,51,50,54,55,23,14,1,1,19,43,34,172,67,1,66,173,2,41,11,23,10,8,10,31,12,45,49,1,104,34,4,38,94,181,91,49,5,3,36,4,7,0,0,1,0,70,255,244,1,179,1,236,0,41,0,77,0,184,0,0,69,88,184,0,34,47,27,185,0,34,0,9,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,9,62,89,184,0,0,69,88,184,0,33,47,27,185,0,33,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,25,0,1,244,48,49,23,34,46,2,53,52,54,53,52,38,39,51,30,1,21,20,14,2,21,20,30,2,51,50,62,2,53,52,38,39,55,30,1,21,20,14,2,242,36,62,45,26,4,2,5,44,5,1,2,2,2,21,36,47,26,30,53,39,23,18,26,44,24,22,31,52,70,12,20,43,69,49,48,93,48,29,56,37,26,51,31,24,53,54,51,21,40,55,33,14,25,51,77,53,60,120,67,12,66,127,66,61,92,61,31,0,3,0,52,255,76,2,83,2,107,0,10,0,21,0,47,0,89,0,125,184,0,34,47,24,124,184,0,47,47,24,184,0,0,69,88,184,0,45,47,27,185,0,45,0,9,62,89,184,0,0,69,88,184,0,35,47,27,185,0,35,0,5,62,89,185,0,21,0,1,244,184,0,0,208,184,0,45,16,185,0,11,0,1,244,184,0,10,208,184,0,45,16,184,0,22,208,184,0,35,16,184,0,32,208,48,49,37,62,3,53,52,46,2,39,35,14,3,21,20,30,2,23,19,30,3,21,20,14,2,7,21,35,53,46,3,53,52,62,2,55,53,51,1,89,41,74,55,33,31,54,75,43,43,41,74,56,33,33,56,74,41,43,50,90,69,41,42,70,90,48,43,48,90,70,42,42,70,90,48,43,26,1,32,55,79,48,48,78,55,31,1,1,31,55,78,48,48,79,55,32,1,1,208,1,34,63,92,59,59,93,64,34,1,170,170,1,34,64,93,59,59,92,63,34,1,129,0,0,1,0,10,255,64,1,201,1,236,0,13,0,130,0,125,184,0,0,47,24,125,184,0,9,47,24,184,0,0,69,88,184,0,2,47,27,185,0,2,0,9,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,9,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,9,62,89,186,0,4,0,3,0,0,17,18,57,186,0,11,0,6,0,9,17,18,57,186,0,1,0,4,0,11,17,18,57,186,0,8,0,11,0,4,17,18,57,184,0,9,16,184,0,10,208,184,0,10,47,184,0,0,16,184,0,13,208,184,0,13,47,48,49,23,19,3,55,19,51,19,51,3,19,7,3,35,3,10,195,190,44,167,4,146,48,173,206,42,185,4,173,180,1,86,1,60,14,254,224,1,20,254,195,254,172,15,1,60,254,196,0,0,1,0,70,255,76,2,78,2,107,0,41,0,101,0,124,184,0,31,47,24,125,184,0,10,47,24,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,18,47,27,185,0,18,0,9,62,89,184,0,0,69,88,184,0,41,47,27,185,0,41,0,9,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,184,0,8,208,184,0,11,16,185,0,30,0,1,244,184,0,33,208,48,49,1,30,3,21,20,6,7,21,35,53,46,1,61,1,52,38,39,51,30,1,21,20,6,20,6,21,20,22,23,17,51,17,62,1,53,52,46,2,39,2,31,12,18,12,5,131,114,42,112,116,1,4,44,3,2,1,1,95,91,42,95,104,4,10,17,13,1,236,32,57,56,57,33,127,138,4,168,168,1,119,106,144,29,56,37,26,51,31,23,47,43,35,10,89,97,1,2,80,253,176,3,115,112,30,52,53,55,33,0,0,1,0,58,255,244,2,104,1,236,0,63,0,77,0,184,0,11,47,184,0,0,69,88,184,0,10,47,27,185,0,10,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,21,0,1,244,184,0,38,208,184,0,10,16,184,0,47,208,184,0,0,16,184,0,57,208,186,0,61,0,10,0,0,17,18,57,48,49,23,34,46,2,53,52,62,2,55,23,14,3,21,20,30,2,51,50,62,2,53,52,38,39,51,14,1,21,20,30,2,51,50,54,53,52,46,2,39,55,30,3,21,20,14,2,35,34,38,39,35,14,1,211,31,56,42,24,15,26,35,21,38,22,34,24,12,18,31,41,23,19,36,28,18,2,3,52,3,2,18,29,37,18,48,63,11,21,32,22,39,21,34,25,13,23,40,57,33,39,68,17,4,17,67,12,28,56,85,58,43,76,67,62,29,22,30,57,62,70,43,45,67,46,23,13,32,53,40,28,65,37,37,65,28,40,53,32,13,90,99,41,67,60,56,32,20,30,60,66,74,45,59,87,56,27,42,43,43,42,0,0,1,0,52,255,79,1,132,1,236,0,43,0,46,0,125,184,0,43,47,24,184,0,0,69,88,184,0,16,47,27,185,0,16,0,9,62,89,187,0,35,0,1,0,6,0,4,43,184,0,16,16,185,0,25,0,1,244,48,49,5,62,1,53,52,38,39,46,3,53,52,62,2,51,50,30,2,23,7,46,1,35,34,14,2,21,20,30,2,23,30,3,21,20,6,7,1,4,29,26,31,49,34,65,52,32,32,55,73,40,25,39,33,27,12,26,23,51,35,33,57,42,23,27,45,58,30,27,38,24,10,31,29,157,35,45,23,24,34,14,12,32,53,79,59,58,89,61,31,10,17,21,11,31,22,29,29,52,74,45,50,67,44,27,9,8,18,24,32,22,24,67,38,0,0,0,0,3,0,87,255,244,1,237,2,217,0,18,0,30,0,60,0,83,0,184,0,0,69,88,184,0,52,47,27,185,0,52,0,19,62,89,184,0,0,69,88,184,0,41,47,27,185,0,41,0,5,62,89,185,0,5,0,1,244,186,0,15,0,52,0,41,17,18,57,184,0,15,16,185,0,19,0,1,244,184,0,52,16,185,0,27,0,1,244,186,0,31,0,52,0,41,17,18,57,48,49,55,20,30,2,51,50,62,2,53,52,46,2,35,34,6,7,53,62,1,53,52,46,2,35,34,6,7,23,30,3,21,20,14,2,35,34,46,2,53,17,52,62,2,51,50,30,2,21,20,6,7,130,36,52,57,21,34,55,40,22,19,40,61,43,14,74,66,135,118,18,31,41,24,63,75,1,181,44,68,46,24,30,53,71,42,34,74,62,40,22,45,67,46,31,58,45,27,59,58,228,62,78,44,16,23,41,58,35,33,61,46,27,10,17,37,23,105,72,33,47,32,15,96,100,110,3,32,52,70,42,44,72,51,29,23,53,87,65,1,34,49,82,59,33,20,41,62,42,57,91,29,0,2,0,76,255,244,1,184,2,219,0,12,0,53,0,77,0,184,0,0,69,88,184,0,36,47,27,185,0,36,0,19,62,89,184,0,0,69,88,184,0,43,47,27,185,0,43,0,5,62,89,186,0,26,0,36,0,43,17,18,57,184,0,26,16,185,0,5,0,1,244,184,0,36,16,185,0,10,0,1,244,184,0,43,16,185,0,21,0,1,244,48,49,19,20,30,2,55,46,3,35,34,6,19,30,1,21,20,30,2,51,50,62,2,55,6,46,2,53,52,62,2,51,50,17,20,14,2,35,34,46,2,53,60,1,46,1,39,122,25,61,106,81,2,23,41,59,37,47,64,8,6,1,19,32,41,23,30,51,39,22,1,90,123,74,32,25,42,57,32,208,30,51,70,40,33,56,41,24,1,3,2,2,45,37,70,51,22,12,81,116,73,33,70,254,186,20,57,49,41,55,33,14,29,74,126,97,13,29,62,83,42,41,65,45,24,254,147,111,146,86,35,20,42,68,48,24,37,29,26,14,0,0,2,0,52,255,76,2,83,1,237,0,15,0,55,0,88,0,125,184,0,33,47,24,184,0,0,69,88,184,0,19,47,27,185,0,19,0,9,62,89,184,0,0,69,88,184,0,44,47,27,185,0,44,0,9,62,89,184,0,0,69,88,184,0,34,47,27,185,0,34,0,5,62,89,185,0,55,0,1,244,184,0,0,208,184,0,19,16,185,0,10,0,1,244,184,0,34,16,184,0,29,208,48,49,37,62,3,53,52,46,2,35,34,6,21,28,1,39,52,54,51,50,30,2,21,20,14,2,7,20,22,23,35,53,46,3,53,52,62,2,55,23,14,3,21,20,30,2,23,1,88,43,74,55,32,19,34,46,26,33,47,41,69,54,37,63,45,25,41,70,91,49,1,1,44,48,90,70,42,17,29,40,23,36,24,38,25,14,34,57,74,41,26,1,33,58,81,48,45,75,55,31,70,73,72,140,221,86,87,34,64,90,56,60,95,66,36,1,43,84,43,170,1,30,60,90,62,41,71,64,57,27,26,27,52,56,65,39,49,74,51,27,1,0,255,255,0,52,255,244,2,8,2,245,2,38,2,98,0,0,0,7,7,38,1,22,0,0,255,255,0,52,255,244,1,159,2,245,2,38,2,102,0,0,0,7,7,38,0,239,0,0,255,255,0,87,255,76,1,188,2,245,2,38,2,104,0,0,0,7,7,38,1,25,0,0,255,255,0,92,255,244,0,199,2,245,2,38,2,106,0,0,0,6,7,38,115,0,0,0,255,255,255,245,255,244,0,241,2,160,2,38,2,106,0,0,0,6,7,53,115,0,0,0,255,255,0,52,255,244,1,216,2,245,2,38,2,112,0,0,0,7,7,38,1,6,0,0,255,255,0,70,255,244,1,179,2,245,2,38,2,117,0,0,0,7,7,38,0,233,0,0,255,255,0,70,255,244,1,179,2,160,2,38,2,117,0,0,0,7,7,53,0,233,0,0,255,255,0,58,255,244,2,104,2,245,2,38,2,121,0,0,0,7,7,38,1,81,0,0,255,255,255,236,255,244,0,250,2,246,2,38,2,106,0,0,0,6,7,109,115,0,0,0,255,255,0,70,255,244,1,179,2,246,2,38,2,117,0,0,0,7,7,109,0,233,0,0,255,255,255,252,0,0,2,16,2,158,0,38,0,4,10,0,0,6,3,128,9,0,0,0,255,255,255,242,0,0,2,14,2,158,0,38,0,4,8,0,0,6,3,129,0,0,0,0,255,255,0,14,0,0,2,12,2,158,0,38,0,4,6,0,0,6,3,130,36,0,0,0,255,255,0,13,0,0,2,12,2,158,0,38,0,4,6,0,0,6,3,109,36,0,0,0,255,255,255,243,0,0,2,129,2,159,0,38,0,4,123,0,0,6,3,132,0,0,0,0,255,255,255,242,0,0,2,124,2,159,0,38,0,4,118,0,0,6,3,133,0,0,0,0,255,255,255,243,0,0,2,128,2,159,0,38,0,4,122,0,0,6,3,134,0,0,0,0,255,255,255,242,0,0,2,123,2,159,0,38,0,4,117,0,0,6,3,135,0,0,0,0,255,255,255,232,0,0,2,54,2,161,0,38,0,4,48,0,0,6,3,136,0,0,0,0,255,255,255,232,0,0,2,54,2,161,0,38,0,4,48,0,0,6,3,137,0,0,0,0,255,255,0,8,0,0,2,6,3,71,2,38,0,4,0,0,0,7,7,49,1,7,0,0,255,255,0,8,0,0,2,6,3,11,2,38,0,4,0,0,0,7,7,44,1,7,0,0,255,255,255,243,0,0,2,48,2,158,0,38,0,8,92,0,0,6,3,128,0,0,0,0,255,255,255,242,0,0,2,48,2,158,0,38,0,8,92,0,0,6,3,129,0,0,0,0,255,255,255,234,0,0,1,244,2,158,0,38,0,8,32,0,0,6,3,130,0,0,0,0,255,255,255,233,0,0,1,244,2,158,0,38,0,8,32,0,0,6,3,109,0,0,0,0,255,255,255,243,0,0,2,141,2,159,0,39,0,8,0,185,0,0,0,6,3,132,0,0,255,255,255,242,0,0,2,136,2,159,0,39,0,8,0,180,0,0,0,6,3,133,0,0,255,255,255,243,0,0,2,140,2,159,0,39,0,8,0,184,0,0,0,6,3,134,0,0,255,255,255,242,0,0,2,135,2,159,0,39,0,8,0,179,0,0,0,6,3,135,0,0,255,255,255,243,0,0,2,122,2,158,0,38,0,11,92,0,0,6,3,128,0,0,0,0,255,255,255,242,0,0,2,122,2,158,0,38,0,11,92,0,0,6,3,129,0,0,0,0,255,255,255,234,0,0,2,62,2,158,0,38,0,11,32,0,0,6,3,130,0,0,0,0,255,255,255,233,0,0,2,62,2,158,0,38,0,11,32,0,0,6,3,109,0,0,0,0,255,255,255,243,0,0,2,215,2,159,0,39,0,11,0,185,0,0,0,6,3,132,0,0,255,255,255,242,0,0,2,210,2,159,0,39,0,11,0,180,0,0,0,6,3,133,0,0,255,255,255,243,0,0,2,214,2,159,0,39,0,11,0,184,0,0,0,6,3,134,0,0,255,255,255,242,0,0,2,209,2,159,0,39,0,11,0,179,0,0,0,6,3,135,0,0,255,255,255,232,0,0,2,198,2,161,0,39,0,11,0,168,0,0,0,6,3,136,0,0,255,255,255,232,0,0,2,198,2,161,0,39,0,11,0,168,0,0,0,6,3,137,0,0,255,255,255,243,0,0,0,235,2,158,0,38,0,12,92,0,0,6,3,128,0,0,0,0,255,255,255,242,0,0,0,235,2,158,0,38,0,12,92,0,0,6,3,129,0,0,0,0,255,255,255,234,0,0,0,175,2,158,0,38,0,12,32,0,0,6,3,130,0,0,0,0,255,255,255,233,0,0,0,175,2,158,0,38,0,12,32,0,0,6,3,109,0,0,0,0]);fileData0.push.apply(fileData0,[255,255,255,243,0,0,1,72,2,159,0,39,0,12,0,185,0,0,0,6,3,132,0,0,255,255,255,242,0,0,1,67,2,159,0,39,0,12,0,180,0,0,0,6,3,133,0,0,255,255,255,243,0,0,1,71,2,159,0,39,0,12,0,184,0,0,0,6,3,134,0,0,255,255,255,242,0,0,1,66,2,159,0,39,0,12,0,179,0,0,0,6,3,135,0,0,255,255,255,232,0,0,1,55,2,161,0,39,0,12,0,168,0,0,0,6,3,136,0,0,255,255,255,232,0,0,1,55,2,161,0,39,0,12,0,168,0,0,0,6,3,137,0,0,255,255,255,240,0,0,1,0,3,71,2,38,0,12,0,0,0,6,7,49,120,0,0,0,255,255,255,252,0,0,0,244,3,11,2,38,0,12,0,0,0,6,7,44,120,0,0,0,255,255,255,243,255,244,2,156,2,159,0,38,0,18,70,0,0,6,3,128,0,0,0,0,255,255,255,242,255,244,2,145,2,159,0,38,0,18,59,0,0,6,3,129,0,0,0,0,255,255,255,234,255,244,2,108,2,159,0,38,0,18,22,0,0,6,3,130,0,0,0,0,255,255,255,233,255,244,2,106,2,159,0,38,0,18,20,0,0,6,3,109,0,0,0,0,255,255,255,243,255,244,3,5,2,159,0,39,0,18,0,175,0,0,0,6,3,132,0,0,255,255,255,242,255,244,3,0,2,159,0,39,0,18,0,170,0,0,0,6,3,133,0,0,255,255,255,243,255,244,3,2,2,159,0,39,0,18,0,172,0,0,0,6,3,134,0,0,255,255,255,242,255,244,2,253,2,159,0,39,0,18,0,167,0,0,0,6,3,135,0,0,255,255,255,242,0,0,2,82,2,158,0,38,0,19,92,0,0,6,3,129,0,0,0,0,255,255,255,242,0,0,2,80,2,158,0,39,0,28,0,148,0,0,0,6,3,129,0,0,255,255,255,234,0,0,2,24,2,158,0,38,0,28,92,0,0,6,3,130,0,0,0,0,255,255,255,233,0,0,2,24,2,158,0,38,0,28,92,0,0,6,3,109,0,0,0,0,255,255,255,242,0,0,2,172,2,159,0,39,0,28,0,240,0,0,0,6,3,133,0,0,255,255,255,242,0,0,2,171,2,159,0,39,0,28,0,239,0,0,0,6,3,135,0,0,255,255,255,232,0,0,2,158,2,161,0,39,0,28,0,226,0,0,0,6,3,137,0,0,255,255,0,3,0,0,1,188,3,71,2,38,0,28,0,0,0,7,7,49,0,223,0,0,255,255,0,3,0,0,1,188,3,11,2,38,0,28,0,0,0,7,7,44,0,223,0,0,255,255,255,243,0,0,2,171,2,159,0,38,2,88,70,0,0,6,3,128,0,0,0,0,255,255,255,242,0,0,2,160,2,159,0,38,2,88,59,0,0,6,3,129,0,0,0,0,255,255,255,235,0,0,2,122,2,159,0,38,2,88,21,0,0,6,3,130,1,0,0,0,255,255,255,233,0,0,2,121,2,159,0,38,2,88,20,0,0,6,3,109,0,0,0,0,255,255,255,243,0,0,3,19,2,159,0,39,2,88,0,174,0,0,0,6,3,132,0,0,255,255,255,242,0,0,3,14,2,159,0,39,2,88,0,169,0,0,0,6,3,133,0,0,255,255,255,243,0,0,3,18,2,159,0,39,2,88,0,173,0,0,0,6,3,134,0,0,255,255,255,242,0,0,3,13,2,159,0,39,2,88,0,168,0,0,0,6,3,135,0,0,255,255,255,232,0,0,2,227,2,161,0,38,2,88,126,0,0,6,3,136,0,0,0,0,255,255,255,232,0,0,2,227,2,161,0,38,2,88,126,0,0,6,3,137,0,0,0,0,255,255,0,8,255,244,2,212,2,147,0,38,0,4,0,0,0,7,3,112,2,13,0,0,255,255,255,252,255,244,2,222,2,158,0,38,0,4,10,0,0,38,3,128,9,0,0,7,3,112,2,23,0,0,0,0,255,255,255,242,255,244,2,220,2,158,0,38,0,4,8,0,0,38,3,129,0,0,0,7,3,112,2,21,0,0,0,0,255,255,255,243,255,244,3,80,2,159,0,38,0,4,123,0,0,38,3,132,0,0,0,7,3,112,2,137,0,0,0,0,255,255,255,242,255,244,3,74,2,159,0,38,0,4,118,0,0,38,3,133,0,0,0,7,3,112,2,131,0,0,0,0,255,255,255,243,255,244,3,79,2,159,0,38,0,4,122,0,0,38,3,134,0,0,0,7,3,112,2,136,0,0,0,0,255,255,255,242,255,244,3,74,2,159,0,38,0,4,117,0,0,38,3,135,0,0,0,7,3,112,2,131,0,0,0,0,255,255,255,232,255,244,3,4,2,161,0,38,0,4,48,0,0,38,3,136,0,0,0,7,3,112,2,61,0,0,0,0,255,255,255,232,255,244,3,4,2,161,0,38,0,4,48,0,0,38,3,137,0,0,0,7,3,112,2,61,0,0,0,0,255,255,0,97,255,244,3,69,2,147,0,38,0,11,0,0,0,7,3,112,2,126,0,0,255,255,255,243,255,244,3,161,2,158,0,38,0,11,92,0,0,38,3,128,0,0,0,7,3,112,2,218,0,0,0,0,255,255,255,242,255,244,3,161,2,158,0,38,0,11,92,0,0,38,3,129,0,0,0,7,3,112,2,218,0,0,0,0,255,255,255,243,255,244,3,254,2,159,0,39,0,11,0,185,0,0,0,38,3,132,0,0,0,7,3,112,3,55,0,0,255,255,255,242,255,244,3,249,2,159,0,39,0,11,0,180,0,0,0,38,3,133,0,0,0,7,3,112,3,50,0,0,255,255,255,243,255,244,3,253,2,159,0,39,0,11,0,184,0,0,0,38,3,134,0,0,0,7,3,112,3,54,0,0,255,255,255,242,255,244,3,248,2,159,0,39,0,11,0,179,0,0,0,38,3,135,0,0,0,7,3,112,3,49,0,0,255,255,255,232,255,244,3,236,2,161,0,39,0,11,0,168,0,0,0,38,3,136,0,0,0,7,3,112,3,37,0,0,255,255,255,232,255,244,3,236,2,161,0,39,0,11,0,168,0,0,0,38,3,137,0,0,0,7,3,112,3,37,0,0,255,255,0,46,255,244,3,88,2,159,0,38,2,88,0,0,0,7,3,112,2,145,0,0,255,255,255,243,255,244,3,156,2,159,0,38,2,88,70,0,0,38,3,128,0,0,0,7,3,112,2,213,0,0,0,0,255,255,255,242,255,244,3,145,2,159,0,38,2,88,59,0,0,38,3,129,0,0,0,7,3,112,2,202,0,0,0,0,255,255,255,243,255,244,4,4,2,159,0,39,2,88,0,174,0,0,0,38,3,132,0,0,0,7,3,112,3,61,0,0,255,255,255,242,255,244,3,255,2,159,0,39,2,88,0,169,0,0,0,38,3,133,0,0,0,7,3,112,3,56,0,0,255,255,255,243,255,244,4,3,2,159,0,39,2,88,0,173,0,0,0,38,3,134,0,0,0,7,3,112,3,60,0,0,255,255,255,242,255,244,3,254,2,159,0,39,2,88,0,168,0,0,0,38,3,135,0,0,0,7,3,112,3,55,0,0,255,255,255,232,255,244,3,215,2,161,0,38,2,88,126,0,0,38,3,136,0,0,0,7,3,112,3,16,0,0,0,0,255,255,255,232,255,244,3,215,2,161,0,38,2,88,126,0,0,38,3,137,0,0,0,7,3,112,3,16,0,0,0,0,255,255,0,52,255,244,2,8,2,239,2,38,2,98,0,0,0,7,7,55,1,22,0,10,255,255,0,52,255,244,2,8,2,228,2,38,2,98,0,0,0,7,7,69,1,22,0,0,255,255,0,52,255,244,2,8,2,242,2,38,2,98,0,0,0,7,7,33,1,22,0,0,255,255,0,52,255,244,2,8,2,242,2,38,2,98,0,0,0,7,7,36,1,22,0,0,255,255,0,52,255,244,2,8,2,245,2,38,2,98,0,0,0,7,7,142,1,22,0,0,255,255,0,52,255,244,2,8,2,245,2,38,2,98,0,0,0,7,7,139,1,22,0,0,255,255,0,52,255,244,2,8,2,245,2,38,2,98,0,0,0,7,7,141,1,22,0,0,255,255,0,52,255,244,2,8,2,245,2,38,2,98,0,0,0,7,7,138,1,22,0,0,255,255,0,52,255,244,2,8,3,18,2,38,2,98,0,0,0,7,7,143,1,22,0,0,255,255,0,52,255,244,2,8,3,18,2,38,2,98,0,0,0,7,7,140,1,22,0,0,255,255,0,52,255,244,2,8,2,211,2,38,2,98,0,0,0,7,7,47,1,22,0,0,255,255,0,52,255,244,2,8,2,130,2,38,2,98,0,0,0,7,7,43,1,22,0,0,255,255,0,52,255,244,2,8,2,198,2,38,2,98,0,0,0,7,7,41,1,22,0,0,255,255,0,52,255,244,1,159,2,229,2,38,2,102,0,0,0,7,7,55,0,239,0,0,255,255,0,52,255,244,1,159,2,228,2,38,2,102,0,0,0,7,7,69,0,239,0,0,255,255,0,52,255,244,1,159,2,242,2,38,2,102,0,0,0,7,7,33,0,239,0,0,255,255,0,52,255,244,1,159,2,242,2,38,2,102,0,0,0,7,7,36,0,239,0,0,255,255,0,52,255,244,1,159,2,245,2,38,2,102,0,0,0,7,7,142,0,239,0,0,255,255,0,52,255,244,1,159,2,245,2,38,2,102,0,0,0,7,7,139,0,239,0,0,255,255,0,52,255,244,1,159,2,245,2,38,2,102,0,0,0,7,7,141,0,239,0,0,255,255,0,52,255,244,1,159,2,245,2,38,2,102,0,0,0,7,7,138,0,239,0,0,255,255,0,87,255,76,1,188,2,229,2,38,2,104,0,0,0,7,7,55,1,25,0,0,255,255,0,87,255,76,1,188,2,228,2,38,2,104,0,0,0,7,7,69,1,25,0,0,255,255,0,87,255,76,1,188,2,242,2,38,2,104,0,0,0,7,7,33,1,25,0,0,255,255,0,87,255,76,1,188,2,242,2,38,2,104,0,0,0,7,7,36,1,25,0,0,255,255,0,87,255,76,1,188,2,245,2,38,2,104,0,0,0,7,7,142,1,25,0,0,255,255,0,87,255,76,1,188,2,245,2,38,2,104,0,0,0,7,7,139,1,25,0,0,255,255,0,87,255,76,1,188,2,245,2,38,2,104,0,0,0,7,7,141,1,25,0,0,255,255,0,87,255,76,1,188,2,245,2,38,2,104,0,0,0,7,7,138,1,25,0,0,255,255,0,87,255,76,1,188,3,18,2,38,2,104,0,0,0,7,7,143,1,25,0,0,255,255,0,87,255,76,1,188,3,18,2,38,2,104,0,0,0,7,7,140,1,25,0,0,255,255,0,87,255,76,1,189,2,198,2,38,2,104,0,0,0,7,7,41,1,25,0,0,255,255,0,60,255,244,0,199,2,239,2,38,2,106,0,0,0,6,7,55,115,10,0,0,255,255,0,45,255,244,0,199,2,228,2,38,2,106,0,0,0,6,7,69,115,0,0,0,255,255,0,0,255,244,0,199,2,242,2,38,2,106,0,0,0,6,7,33,115,0,0,0,255,255,0,62,255,244,0,230,2,242,2,38,2,106,0,0,0,6,7,36,115,0,0,0,255,255,255,237,255,244,0,209,2,245,2,38,2,106,0,0,0,6,7,142,115,0,0,0,255,255,255,228,255,244,0,200,2,245,2,38,2,106,0,0,0,6,7,139,115,0,0,0,255,255,255,237,255,244,0,224,2,245,2,38,2,106,0,0,0,6,7,141,115,0,0,0,255,255,255,238,255,244,0,215,2,245,2,38,2,106,0,0,0,6,7,138,115,0,0,0,255,255,255,240,255,244,0,246,3,18,2,38,2,106,0,0,0,6,7,143,115,0,0,0,255,255,255,240,255,244,0,246,3,18,2,38,2,106,0,0,0,6,7,140,115,0,0,0,255,255,255,222,255,244,1,8,2,211,2,38,2,106,0,0,0,6,7,47,115,0,0,0,255,255,255,248,255,244,0,238,2,130,2,38,2,106,0,0,0,6,7,43,115,0,0,0,255,255,255,207,255,244,1,23,2,198,2,38,2,106,0,0,0,6,7,41,115,0,0,0,255,255,255,236,255,244,0,250,2,246,2,38,2,106,0,0,0,6,7,112,115,0,0,0,255,255,255,236,255,244,0,250,2,246,2,38,2,106,0,0,0,6,7,109,115,0,0,0,255,255,255,222,255,244,1,8,3,19,2,38,2,106,0,0,0,6,7,113,115,0,0,0,255,255,0,52,255,244,1,216,2,239,2,38,2,112,0,0,0,7,7,55,1,6,0,10,255,255,0,52,255,244,1,216,2,228,2,38,2,112,0,0,0,7,7,69,1,6,0,0,255,255,0,52,255,244,1,216,2,242,2,38,2,112,0,0,0,7,7,33,1,6,0,0,255,255,0,52,255,244,1,216,2,242,2,38,2,112,0,0,0,7,7,36,1,6,0,0,255,255,0,52,255,244,1,216,2,245,2,38,2,112,0,0,0,7,7,142,1,6,0,0,255,255,0,52,255,244,1,216,2,245,2,38,2,112,0,0,0,7,7,139,1,6,0,0,255,255,0,52,255,244,1,216,2,245,2,38,2,112,0,0,0,7,7,141,1,6,0,0,255,255,0,52,255,244,1,216,2,245,2,38,2,112,0,0,0,7,7,138,1,6,0,0,255,255,0,88,255,76,1,230,2,239,2,38,2,114,0,0,0,7,7,55,1,32,0,10,255,255,0,88,255,76,1,230,2,228,2,38,2,114,0,0,0,7,7,69,1,32,0,0,255,255,0,70,255,244,1,179,2,239,2,38,2,117,0,0,0,7,7,55,0,233,0,10,255,255,0,70,255,244,1,179,2,228,2,38,2,117,0,0,0,7,7,69,0,233,0,0,255,255,0,70,255,244,1,179,2,242,2,38,2,117,0,0,0,7,7,33,0,233,0,0,255,255,0,70,255,244,1,179,2,242,2,38,2,117,0,0,0,7,7,36,0,233,0,0,255,255,0,70,255,244,1,179,2,245,2,38,2,117,0,0,0,7,7,142,0,233,0,0,255,255,0,70,255,244,1,179,2,245,2,38,2,117,0,0,0,7,7,139,0,233,0,0,255,255,0,70,255,244,1,179,2,245,2,38,2,117,0,0,0,7,7,141,0,233,0,0,255,255,0,70,255,244,1,179,2,245,2,38,2,117,0,0,0,7,7,138,0,233,0,0,255,255,0,70,255,244,1,179,3,18,2,38,2,117,0,0,0,7,7,143,0,233,0,0,255,255,0,70,255,244,1,179,3,18,2,38,2,117,0,0,0,7,7,140,0,233,0,0,255,255,0,69,255,244,1,179,2,198,2,38,2,117,0,0,0,7,7,41,0,233,0,0,255,255,0,70,255,244,1,179,2,211,2,38,2,117,0,0,0,7,7,47,0,233,0,0,255,255,0,70,255,244,1,179,2,130,2,38,2,117,0,0,0,7,7,43,0,233,0,0,255,255,0,70,255,244,1,179,2,246,2,38,2,117,0,0,0,7,7,112,0,233,0,0,255,255,0,70,255,244,1,179,2,246,2,38,2,117,0,0,0,7,7,109,0,233,0,0,255,255,0,70,255,244,1,179,3,19,2,38,2,117,0,0,0,7,7,113,0,233,0,0,255,255,0,58,255,244,2,104,2,239,2,38,2,121,0,0,0,7,7,55,1,81,0,10,255,255,0,58,255,244,2,104,2,228,2,38,2,121,0,0,0,7,7,69,1,81,0,0,255,255,0,58,255,244,2,104,2,242,2,38,2,121,0,0,0,7,7,33,1,81,0,0,255,255,0,58,255,244,2,104,2,242,2,38,2,121,0,0,0,7,7,36,1,81,0,0,255,255,0,58,255,244,2,104,2,245,2,38,2,121,0,0,0,7,7,142,1,81,0,0,255,255,0,58,255,244,2,104,2,245,2,38,2,121,0,0,0,7,7,139,1,81,0,0,255,255,0,58,255,244,2,104,2,245,2,38,2,121,0,0,0,7,7,141,1,81,0,0,255,255,0,58,255,244,2,104,2,245,2,38,2,121,0,0,0,7,7,138,1,81,0,0,255,255,0,58,255,244,2,104,3,18,2,38,2,121,0,0,0,7,7,143,1,81,0,0,255,255,0,58,255,244,2,104,3,18,2,38,2,121,0,0,0,7,7,140,1,81,0,0,255,255,0,58,255,244,2,104,2,198,2,38,2,121,0,0,0,7,7,41,1,81,0,0,255,255,0,52,255,65,2,8,1,236,2,38,2,98,0,0,0,7,7,105,1,19,0,0,255,255,0,52,255,65,2,8,2,239,2,38,2,98,0,0,0,39,7,105,1,19,0,0,0,7,7,55,1,22,0,10,255,255,0,52,255,65,2,8,2,228,2,38,2,98,0,0,0,39,7,105,1,19,0,0,0,7,7,69,1,22,0,0,255,255,0,52,255,65,2,8,2,242,2,38,2,98,0,0,0,39,7,105,1,19,0,0,0,7,7,33,1,22,0,0,255,255,0,52,255,65,2,8,2,242,2,38,2,98,0,0,0,39,7,105,1,19,0,0,0,7,7,36,1,22,0,0,255,255,0,52,255,65,2,8,2,245,2,38,2,98,0,0,0,39,7,105,1,19,0,0,0,7,7,142,1,22,0,0,255,255,0,52,255,65,2,8,2,245,2,38,2,98,0,0,0,39,7,105,1,19,0,0,0,7,7,139,1,22,0,0,255,255,0,52,255,65,2,8,2,245,2,38,2,98,0,0,0,39,7,105,1,19,0,0,0,7,7,141,1,22,0,0,255,255,0,52,255,65,2,8,2,245,2,38,2,98,0,0,0,39,7,105,1,19,0,0,0,7,7,138,1,22,0,0,255,255,0,52,255,65,2,8,3,18,2,38,2,98,0,0,0,39,7,105,1,19,0,0,0,7,7,143,1,22,0,0,255,255,0,52,255,65,2,8,3,18,2,38,2,98,0,0,0,39,7,105,1,19,0,0,0,7,7,140,1,22,0,0,255,255,0,52,255,65,2,8,2,198,2,38,2,98,0,0,0,39,7,105,1,19,0,0,0,7,7,41,1,22,0,0,255,255,0,87,255,65,1,188,1,236,2,38,2,104,0,0,0,6,7,105,106,0,0,0,255,255,0,87,255,65,1,188,2,239,2,38,2,104,0,0,0,38,7,105,106,0,0,7,7,55,1,25,0,10,0,0,255,255,0,87,255,65,1,188,2,228,2,38,2,104,0,0,0,38,7,105,106,0,0,7,7,69,1,25,0,0,0,0,255,255,0,87,255,65,1,188,2,242,2,38,2,104,0,0,0,38,7,105,106,0,0,7,7,33,1,25,0,0,0,0,255,255,0,87,255,65,1,188,2,242,2,38,2,104,0,0,0,38,7,105,106,0,0,7,7,36,1,25,0,0,0,0,255,255,0,87,255,65,1,188,2,245,2,38,2,104,0,0,0,38,7,105,106,0,0,7,7,142,1,25,0,0,0,0,255,255,0,87,255,65,1,188,2,245,2,38,2,104,0,0,0,38,7,105,106,0,0,7,7,139,1,25,0,0,0,0,255,255,0,87,255,65,1,188,2,245,2,38,2,104,0,0,0,38,7,105,106,0,0,7,7,141,1,25,0,0,0,0,255,255,0,87,255,65,1,188,2,245,2,38,2,104,0,0,0,38,7,105,106,0,0,7,7,138,1,25,0,0,0,0,255,255,0,87,255,65,1,188,3,18,2,38,2,104,0,0,0,38,7,105,106,0,0,7,7,143,1,25,0,0,0,0,255,255,0,87,255,65,1,188,3,18,2,38,2,104,0,0,0,38,7,105,106,0,0,7,7,140,1,25,0,0,0,0,255,255,0,87,255,65,1,189,2,198,2,38,2,104,0,0,0,38,7,105,106,0,0,7,7,41,1,25,0,0,0,0,255,255,0,58,255,65,2,104,1,236,2,38,2,121,0,0,0,7,7,105,1,72,0,0,255,255,0,58,255,65,2,104,2,239,2,38,2,121,0,0,0,39,7,105,1,72,0,0,0,7,7,55,1,81,0,10,255,255,0,58,255,65,2,104,2,228,2,38,2,121,0,0,0,39,7,105,1,72,0,0,0,7,7,69,1,81,0,0,255,255,0,58,255,65,2,104,2,242,2,38,2,121,0,0,0,39,7,105,1,72,0,0,0,7,7,33,1,81,0,0,255,255,0,58,255,65,2,104,2,242,2,38,2,121,0,0,0,39,7,105,1,72,0,0,0,7,7,36,1,81,0,0,255,255,0,58,255,65,2,104,2,245,2,38,2,121,0,0,0,39,7,105,1,72,0,0,0,7,7,142,1,81,0,0,255,255,0,58,255,65,2,104,2,245,2,38,2,121,0,0,0,39,7,105,1,72,0,0,0,7,7,139,1,81,0,0,255,255,0,58,255,65,2,104,2,245,2,38,2,121,0,0,0,39,7,105,1,72,0,0,0,7,7,141,1,81,0,0,255,255,0,58,255,65,2,104,2,245,2,38,2,121,0,0,0,39,7,105,1,72,0,0,0,7,7,138,1,81,0,0,255,255,0,58,255,65,2,104,3,18,2,38,2,121,0,0,0,39,7,105,1,72,0,0,0,7,7,143,1,81,0,0,255,255,0,58,255,65,2,104,3,18,2,38,2,121,0,0,0,39,7,105,1,72,0,0,0,7,7,140,1,81,0,0,255,255,0,58,255,65,2,104,2,198,2,38,2,121,0,0,0,39,7,105,1,72,0,0,0,7,7,41,1,81,0,0,0,1,0,84,255,70,1,210,1,236,0,42,0,101,0,125,184,0,11,47,24,184,0,0,69,88,184,0,42,47,27,185,0,42,0,9,62,89,184,0,0,69,88,184,0,27,47,27,185,0,27,0,5,62,89,184,0,42,16,184,0,31,208,184,0,31,47,186,0,3,0,31,0,27,17,18,57,184,0,27,16,184,0,15,208,184,0,8,208,184,0,8,47,186,0,20,0,27,0,31,17,18,57,186,0,36,0,31,0,27,17,18,57,48,49,1,14,1,7,30,3,23,14,1,7,39,62,1,55,46,3,39,6,7,14,1,7,21,35,17,52,38,39,51,30,1,29,1,51,62,3,55,1,185,42,91,48,18,47,54,58,29,33,73,33,51,41,70,29,23,49,48,45,18,34,31,20,13,1,42,2,6,44,5,3,4,30,72,78,80,36,1,193,16,75,57,36,79,80,75,31,53,95,38,6,42,89,44,25,67,72,74,34,45,50,29,78,42,23,1,102,29,64,29,17,60,31,187,54,100,83,58,12,0,0,0,0,2,0,52,255,76,1,216,1,236,0,15,0,42,0,67,0,125,184,0,42,47,24,184,0,0,69,88,184,0,26,47,27,185,0,26,0,9,62,89,184,0,0,69,88,184,0,16,47,27,185,0,16,0,5,62,89,185,0,0,0,1,244,184,0,26,16,185,0,8,0,1,244,184,0,16,16,184,0,36,208,48,49,37,50,54,53,52,46,2,35,34,14,2,21,20,22,23,46,3,53,52,62,2,51,50,30,2,21,20,14,2,7,20,22,20,22,21,35,1,6,76,88,23,42,61,38,38,61,42,23,88,57,41,70,51,29,32,57,76,45,45,76,57,32,28,50,68,40,1,1,45,26,116,97,48,79,56,31,31,56,79,48,97,116,37,3,37,64,89,57,61,94,65,33,33,65,94,61,56,89,63,38,4,24,38,36,42,29,0,0,0,0,1,0,52,255,73,1,169,1,224,0,37,0,67,0,125,184,0,37,47,24,184,0,0,69,88,184,0,18,47,27,185,0,18,0,9,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,184,0,18,16,185,0,20,0,1,244,184,0,23,208,184,0,8,16,185,0,31,0,1,244,48,49,5,62,1,53,52,46,2,39,46,3,53,52,62,2,59,1,21,38,34,35,34,6,21,20,30,2,23,30,1,21,20,6,7,1,40,29,21,7,21,40,32,41,70,53,30,35,63,84,50,141,26,69,45,86,101,27,47,63,35,64,54,29,26,162,35,34,20,11,19,18,16,8,10,34,55,81,56,64,92,60,29,41,2,103,103,48,68,47,28,8,14,47,41,20,62,35,0,0,0,0,1,0,92,255,76,1,120,1,224,0,11,0,46,0,125,184,0,11,47,24,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,187,0,5,0,1,0,6,0,4,43,184,0,0,16,185,0,2,0,1,244,48,49,19,33,21,35,23,51,21,35,28,1,23,35,92,1,28,243,2,221,220,1,45,1,224,38,252,36,85,158,91,0,0,0,0,1,0,22,255,78,1,190,2,172,0,30,0,11,0,186,0,0,0,8,0,3,43,48,49,19,30,3,21,20,6,7,39,62,1,53,52,38,39,14,1,7,39,37,38,39,14,1,7,39,37,46,1,39,79,87,137,94,49,7,10,43,11,7,8,8,69,130,75,19,1,28,18,30,74,137,79,19,1,36,45,131,85,2,172,49,144,175,198,103,51,94,48,6,48,92,47,41,80,39,32,59,36,37,130,68,65,34,63,37,36,133,85,137,45,0,255,255,0,48,255,101,0,165,1,205,2,39,4,119,0,0,1,126,0,6,4,120,0,0,255,255,0,67,1,114,0,152,1,205,2,7,4,119,0,0,1,126,0,0,255,255,0,67,2,68,0,152,2,159,2,7,4,119,0,0,2,80,0,0,0,1,0,82,1,229,0,148,2,181,0,4,0,11,0,186,0,0,0,3,0,3,43,48,49,19,51,15,1,35,105,43,10,27,29,2,181,72,136,0,0,1,0,71,0,0,0,137,0,208,0,4,0,24,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,5,62,89,184,0,1,220,48,49,63,1,51,7,35,81,27,29,23,43,72,136,208,0,255,255,0,246,2,47,1,89,2,245,0,7,7,38,1,11,0,0,0,0,0,1,255,233,1,223,0,54,2,158,0,3,0,24,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,3,220,48,49,19,23,7,39,7,47,44,33,2,158,7,184,7,0,255,255,0,141,2,49,1,155,2,246,0,7,7,109,1,20,0,0,0,0,255,255,1,1,255,65,1,96,255,190,0,7,7,105,1,20,0,0,0,0,0,1,0,92,255,244,0,199,1,144,0,16,0,30,0,184,0,3,47,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,10,0,1,244,48,49,23,34,53,17,51,14,1,21,20,22,51,50,54,55,23,14,1,157,65,45,2,1,16,14,7,12,9,7,8,20,12,82,1,74,88,163,85,19,18,3,3,36,4,5,255,255,0,212,2,63,1,81,2,229,0,7,7,55,1,11,0,0,0,0,255,255,0,212,2,63,1,81,2,229,0,7,7,55,1,11,0,0,0,0,255,255,0,197,2,65,1,66,2,228,0,7,7,69,1,11,0,0,0,0,255,255,0,194,2,47,1,32,2,245,0,7,7,35,1,11,0,0,0,0,255,255,0,246,2,47,1,89,2,245,0,7,7,38,1,11,0,0,0,0,255,255,0,133,2,48,1,105,2,245,0,7,7,142,1,11,0,0,0,0,255,255,0,124,2,48,1,96,2,245,0,7,7,139,1,11,0,0,0,0,255,255,0,133,2,48,1,120,2,245,0,7,7,141,1,11,0,0,0,0,255,255,0,134,2,48,1,111,2,245,0,7,7,138,1,11,0,0,0,0,255,255,0,136,2,50,1,142,3,18,0,7,7,143,1,11,0,0,0,0,255,255,0,136,2,50,1,142,3,18,0,7,7,140,1,11,0,0,0,0,255,255,0,103,2,67,1,175,2,198,0,7,7,41,1,11,0,0,0,0,255,255,0,132,2,49,1,146,2,246,0,7,7,112,1,11,0,0,0,0,255,255,0,132,2,49,1,146,2,246,0,7,7,109,1,11,0,0,0,0,255,255,0,118,2,86,1,160,3,19,0,7,7,113,1,11,0,0,0,0,0,1,255,243,1,223,0,111,2,158,0,17,0,26,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,17,62,89,185,0,6,0,1,244,48,49,19,62,1,53,52,38,35,55,30,3,21,20,14,2,7,8,28,36,44,41,3,25,44,33,19,16,26,34,18,1,250,11,34,29,28,30,32,1,10,21,31,21,24,35,25,17,6,0,0,1,255,242,1,223,0,111,2,158,0,18,0,26,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,17,62,89,185,0,11,0,1,244,48,49,19,46,3,53,52,62,2,55,23,34,6,21,20,22,23,7,80,18,33,27,16,19,33,44,25,4,42,44,37,27,9,1,223,6,17,25,35,24,21,31,21,10,1,32,30,28,29,34,11,27,0,0,0,1,255,234,1,223,0,55,2,158,0,3,0,24,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,3,220,48,49,3,55,23,7,22,47,30,33,2,151,7,184,7,0,255,255,255,233,1,223,0,54,2,158,2,6,3,109,0,0,0,2,255,243,1,223,0,208,2,159,0,3,0,17,0,25,0,187,0,11,0,1,0,10,0,4,43,184,0,11,16,184,0,1,208,184,0,1,47,48,49,19,55,23,7,39,62,1,53,52,38,39,55,30,1,21,20,6,7,131,47,30,32,171,20,28,34,32,3,42,59,46,28,2,151,7,184,7,27,13,36,22,30,30,2,32,2,41,46,38,50,14,0,2,255,242,1,223,0,203,2,159,0,3,0,16,0,25,0,187,0,10,0,1,0,11,0,4,43,184,0,10,16,184,0,1,208,184,0,1,47,48,49,19,55,23,7,39,46,1,53,52,54,55,23,6,21,20,22,23,126,47,30,33,110,27,47,59,42,4,67,28,20,2,151,7,184,7,1,14,50,38,46,41,2,32,3,59,22,36,13,0,0,0,0,2,255,243,1,223,0,206,2,159,0,3,0,17,0,13,0,187,0,11,0,1,0,10,0,4,43,48,49,19,23,7,47,1,62,1,53,52,38,39,55,30,1,21,20,6,7,160,46,44,32,125,20,28,34,32,3,42,59,46,28,2,158,7,184,7,20,13,36,22,30,30,2,32,2,41,46,38,50,14,0,2,255,242,1,223,0,201,2,159,0,3,0,16,0,13,0,187,0,10,0,1,0,11,0,4,43,48,49,19,23,7,39,7,46,1,53,52,54,55,23,6,21,20,22,23,154,47,44,33,64,27,47,59,42,4,67,28,20,2,158,7,184,7,6,14,50,38,46,41,2,32,3,59,22,36,13,0,0,0,0,2,255,232,1,204,0,192,2,161,0,23,0,38,0,100,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,15,62,89,184,0,0,69,88,184,0,20,47,27,185,0,20,0,15,62,89,184,0,0,69,88,184,0,30,47,27,185,0,30,0,13,62,89,184,0,20,16,185,0,0,0,1,244,184,0,20,16,185,0,3,0,1,244,184,0,11,208,184,0,11,47,184,0,0,16,184,0,15,208,184,0,30,16,185,0,29,0,1,244,48,49,3,62,1,51,50,30,2,51,50,54,55,23,14,1,35,34,46,2,35,34,6,7,23,62,1,53,52,39,55,30,1,21,20,14,2,7,24,2,26,31,19,24,20,19,13,13,18,2,29,2,27,31,18,25,19,19,13,13,18,2,49,21,28,71,3,45,61,14,23,28,14,2,102,25,34,11,13,11,13,20,5,25,34,11,13,11,13,20,124,6,18,12,35,1,28,2,26,31,14,21,16,11,4,0,0,2,255,232,1,204,0,192,2,161,0,14,0,38,0,96,0,184,0,0,69,88,184,0,23,47,27,185,0,23,0,15,62,89,184,0,0,69,88,184,0,35,47,27,185,0,35,0,15,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,13,62,89,185,0,9,0,1,244,184,0,35,16,185,0,15,0,1,244,184,0,35,16,185,0,18,0,1,244,184,0,26,208,184,0,26,47,184,0,15,16,184,0,30,208,48,49,19,46,3,53,52,54,55,23,6,21,20,22,23,39,62,1,51,50,30,2,51,50,54,55,23,14,1,35,34,46,2,35,34,6,7,106,14,29,23,14,61,45,4,72,28,22,138,2,26,31,19,24,20,19,13,13,18,2,29,2,27,31,18,25,19,19,13,13,18,2,1,204,4,11,16,21,14,31,26,2,28,1,35,12,18,6,129,25,34,11,13,11,13,20,5,25,34,11,13,11,13,20,0,0,255,255,0,8,0,0,2,6,2,147,2,6,0,4,0,0,0,2,0,97,0,0,2,12,2,147,0,14,0,23,0,77,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,184,0,0,16,185,0,2,0,1,244,186,0,22,0,0,0,13,17,18,57,184,0,22,16,185,0,5,0,1,244,184,0,13,16,185,0,15,0,1,244,48,49,19,33,21,33,21,51,50,30,2,21,20,6,43,1,55,50,54,53,52,38,43,1,17,97,1,127,254,175,146,53,87,61,34,119,112,196,184,99,98,101,100,134,2,147,40,249,20,43,67,46,97,97,38,74,80,75,65,254,218,255,255,0,97,0,0,2,21,2,147,2,6,0,5,0,0,255,255,0,97,0,0,1,200,2,147,2,6,2,67,0,0,0,2,0,33,255,68,2,74,2,147,0,12,0,35,0,79,0,125,184,0,20,47,24,184,0,0,69,88,184,0,33,47,27,185,0,33,0,17,62,89,184,0,0,69,88,184,0,17,47,27,185,0,17,0,5,62,89,185,0,22,0,1,244,184,0,11,208,184,0,33,16,185,0,12,0,1,244,184,0,11,16,184,0,13,208,184,0,20,16,184,0,16,208,48,49,19,14,3,7,14,3,7,33,17,19,21,7,35,53,33,21,35,39,53,51,62,3,55,62,3,55,33,17,253,9,13,12,14,9,9,19,19,19,9,1,93,116,7,39,254,51,39,7,30,10,22,22,24,13,9,16,14,14,9,1,44,2,107,49,84,82,84,48,52,76,56,36,12,2,67,253,189,26,202,188,188,202,26,4,25,54,90,68,52,90,87,93,56,253,149,0,0,255,255,0,97,0,0,1,212,2,147,2,6,0,8,0,0,0,1,0,9,0,0,2,247,2,159,0,51,0,131,0,184,0,0,69,88,184,0,22,47,27,185,0,22,0,17,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,5,62,89,187,0,29,0,1,0,6,0,4,43,184,0,9,16,184,0,5,208,184,0,1,208,184,0,6,16,184,0,2,208,186,0,10,0,29,0,6,17,18,57,184,0,22,16,185,0,16,0,2,244,184,0,22,16,184,0,30,208,184,0,30,47,184,0,29,16,184,0,33,208,184,0,22,16,184,0,39,208,185,0,45,0,2,244,186,0,51,0,33,0,2,17,18,57,48,49,33,35,3,35,17,35,17,35,3,35,19,39,46,3,35,34,6,7,39,54,51,50,30,2,31,1,51,17,51,17,51,55,62,3,51,50,23,7,46,1,35,34,14,2,15,1,2,247,53,189,111,44,111,189,53,207,78,15,25,23,20,11,5,11,5,8,12,14,19,32,32,32,18,81,107,44,107,80,19,32,32,32,19,14,12,9,5,11,5,11,20,22,25,15,78,1,75,254,181,1,75,254,181,1,98,174,33,38,19,6,2,2,46,5,9,27,49,40,176,1,33,254,223,176,40,49,27,9,5,46,2,2,6,19,38,33,174,0,0,0,1,255,243,255,244,3,13,2,159,0,81,0,141,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,5,62,89,184,0,0,69,88,184,0,21,47,27,185,0,21,0,5,62,89,187,0,43,0,2,0,37,0,4,43,187,0,54,0,1,0,8,0,4,43,184,0,8,16,184,0,12,208,184,0,19,16,185,0,25,0,2,244,184,0,54,16,184,0,49,208,184,0,43,16,184,0,60,208,184,0,37,16,184,0,66,208,184,0,25,16,184,0,78,208,48,49,5,6,35,34,46,2,47,1,35,17,35,17,35,7,14,3,35,34,39,55,30,1,51,50,62,2,63,1,39,46,3,35,34,6,7,39,54,51,50,30,2,31,1,51,17,51,17,51,55,62,3,51,50,23,7,46,1,35,34,14,2,15,1,23,30,3,51,50,54,55,3,13,12,16,18,30,30,32,20,98,120,43,119,98,20,32,30,31,18,15,12,8,5,11,5,11,19,21,24,17,97,68,14,24,23,21,11,5,11,5,8,12,15,18,33,31,32,17,69,120,43,120,69,18,31,32,33,18,15,12,9,5,11,5,11,20,23,24,14,69,97,17,25,21,18,11,5,11,5,7,5,9,27,48,40,219,254,181,1,75,219,40,48,27,9,5,46,2,2,6,20,38,32,217,180,31,38,21,6,2,2,46,5,9,27,49,40,176,1,33,254,223,176,40,49,27,9,5,46,2,2,6,21,38,31,179,218,32,38,20,6,2,2,0,1,0,14,0,0,2,233,2,147,0,21,0,29,0,187,0,8,0,1,0,14,0,4,43,184,0,8,16,184,0,3,208,184,0,14,16,184,0,18,208,48,49,19,3,51,19,51,17,51,17,51,19,51,3,19,35,3,35,17,35,17,35,3,35,217,198,53,184,101,46,101,183,54,199,203,51,187,104,46,105,186,52,1,100,1,47,254,223,1,33,254,223,1,33,254,209,254,156,1,74,254,182,1,74,254,182,0,0,1,0,46,255,244,1,248,2,159,0,51,0,77,0,184,0,0,69,88,184,0,35,47,27,185,0,35,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,187,0,20,0,1,0,17,0,4,43,184,0,0,16,185,0,9,0,2,244,184,0,35,16,185,0,28,0,2,244,186,0,44,0,17,0,20,17,18,57,48,49,5,34,38,39,55,30,3,51,50,62,2,53,52,38,43,1,53,51,50,54,53,52,46,2,35,34,6,7,39,62,1,51,50,30,2,21,20,6,7,21,30,1,21,20,14,2,1,23,75,109,49,29,24,45,49,54,32,36,65,49,29,112,99,67,47,103,93,23,40,55,32,50,87,29,26,30,102,60,40,72,52,31,55,51,61,81,36,61,82,12,47,52,31,24,34,21,9,20,39,57,37,76,72,38,68,68,30,46,32,16,37,30,31,32,46,22,42,61,39,55,81,16,4,11,85,72,45,73,50,27,0,0,0,0,1,0,97,0,0,2,35,2,147,0,19,0,73,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,5,62,89,186,0,5,0,0,0,19,17,18,57,184,0,0,16,184,0,8,208,184,0,19,16,184,0,11,208,186,0,15,0,8,0,11,17,18,57,48,49,19,51,17,20,6,7,51,55,1,51,17,35,17,52,54,55,35,7,1,35,97,46,4,2,4,75,1,26,49,46,4,2,4,74,254,229,49,2,147,254,108,48,96,48,130,1,210,253,109,1,153,48,91,48,129,254,45,255,255,0,97,0,0,2,35,3,71,2,38,3,148,0,0,0,7,7,50,1,70,0,1,0,1,0,97,0,0,2,38,2,159,0,27,0,87,0,184,0,0,69,88,184,0,15,47,27,185,0,15,0,17,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,187,0,8,0,1,0,3,0,4,43,184,0,5,16,184,0,1,208,184,0,15,16,184,0,6,208,184,0,6,47,184,0,15,16,185,0,21,0,2,244,186,0,27,0,8,0,3,17,18,57,48,49,33,35,3,35,17,35,17,51,17,51,55,62,3,51,50,23,7,46,1,35,34,14,2,15,1,2,38,52,219,136,46,46,138,96,21,33,30,30,19,14,12,8,5,11,5,11,18,21,26,18,95,1,75,254,181,2,147,254,223,176,40,49,27,9,5,46,2,2,6,20,38,32,176,0,0,0,1,0,97,255,244,2,52,2,159,0,42,0,67,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,187,0,21,0,2,0,27,0,4,43,187,0,15,0,1,0,8,0,4,43,184,0,2,16,185,0,39,0,2,244,48,49,5,6,35,34,46,2,47,1,35,17,35,17,51,17,51,55,62,3,51,50,23,7,46,1,35,34,14,2,15,1,23,30,3,51,50,54,55,2,52,12,16,18,29,30,33,21,124,138,46,46,138,96,22,33,29,30,18,15,12,8,5,11,5,11,18,21,26,18,96,125,18,25,21,18,11,5,11,5,7,5,9,27,48,40,219,254,181,2,147,254,223,176,40,49,27,9,5,46,2,2,6,20,38,32,176,221,32,38,20,6,2,2,0,0,0,0,1,0,97,0,0,2,30,2,147,0,12,0,13,0,187,0,3,0,1,0,9,0,4,43,48,49,19,51,17,51,19,51,3,19,35,3,35,17,35,97,46,114,225,56,241,245,53,225,121,46,2,147,254,223,1,33,254,209,254,156,1,74,254,182,0,0,0,0,1,0,6,255,244,2,5,2,147,0,27,0,65,0,184,0,0,69,88,184,0,15,47,27,185,0,15,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,7,0,2,244,184,0,0,16,184,0,18,208,184,0,18,47,184,0,15,16,185,0,19,0,1,244,48,49,23,34,38,39,55,30,1,51,50,62,2,55,62,1,55,33,17,35,17,35,14,1,7,14,3,50,10,22,12,12,8,12,8,13,24,23,23,12,20,38,20,1,42,46,215,19,33,19,13,28,32,38,12,3,5,44,2,3,12,40,73,62,109,211,117,253,109,2,107,103,198,101,71,90,50,18,0,255,255,0,97,0,0,2,97,2,147,2,6,0,16,0,0,255,255,0,97,0,0,2,30,2,147,2,6,0,11,0,0,255,255,0,55,255,244,2,86,2,159,2,6,0,18,0,0,255,255,0,97,0,0,2,25,2,147,2,6,2,80,0,0,255,255,0,97,0,0,1,246,2,147,2,6,0,19,0,0,255,255,0,55,255,244,2,15,2,159,2,6,0,6,0,0,255,255,0,29,0,0,1,239,2,147,2,6,0,23,0,0,0,1,0,7,255,244,1,230,2,147,0,21,0,71,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,6,0,2,244,186,0,15,0,0,0,11,17,18,57,184,0,15,16,185,0,10,0,2,244,184,0,11,16,184,0,17,208,48,49,23,34,38,39,55,22,51,50,54,63,1,3,51,19,23,51,55,19,51,3,14,1,123,18,23,13,12,15,22,38,44,16,17,226,49,150,47,4,43,138,48,223,21,65,12,4,5,43,6,32,35,43,2,3,254,160,113,113,1,96,253,211,54,60,0,0,0,0,3,0,48,255,244,2,153,2,159,0,6,0,13,0,31,0,89,0,184,0,0,69,88,184,0,30,47,27,185,0,30,0,17,62,89,184,0,0,69,88,184,0,22,47,27,185,0,22,0,5,62,89,187,0,7,0,1,0,29,0,4,43,187,0,23,0,1,0,13,0,4,43,184,0,13,16,184,0,0,208,184,0,7,16,184,0,6,208,184,0,29,16,184,0,14,208,184,0,23,16,184,0,20,208,48,49,37,62,1,53,52,38,39,35,14,1,21,20,22,23,19,30,1,21,20,6,7,21,35,53,46,1,53,52,54,55,53,51,1,121,119,123,123,119,41,119,123,123,119,41,138,150,150,138,41,138,150,150,138,41,124,1,112,95,94,108,1,1,108,94,95,112,1,1,193,2,126,113,114,130,2,98,98,2,130,114,113,126,2,98,0,255,255,0,17,0,0,1,209,2,147,2,6,0,27,0,0,0,1,0,97,255,68,2,81,2,147,0,12,0,61,0,125,184,0,3,47,24,184,0,0,69,88,184,0,6,47,27,185,0,6,0,17,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,185,0,9,0,1,244,184,0,0,208,184,0,6,16,184,0,10,208,48,49,37,21,7,35,53,33,17,51,17,33,17,51,17,2,81,7,39,254,62,46,1,78,46,40,26,202,188,2,147,253,149,2,107,253,149,0,0,0,1,0,71,0,0,1,226,2,147,0,23,0,55,0,184,0,0,69,88,184,0,9,47,27,185,0,9,0,17,62,89,184,0,0,69,88,184,0,22,47,27,185,0,22,0,5,62,89,187,0,16,0,1,0,3,0,4,43,184,0,9,16,184,0,20,208,48,49,1,14,1,35,34,46,2,61,1,51,21,20,30,2,51,50,54,55,17,51,17,35,1,180,26,63,43,54,87,60,32,45,26,49,72,45,42,63,23,46,46,1,55,4,7,21,47,76,55,160,160,45,61,37,15,6,5,1,51,253,109,0,0,0,1,0,97,0,0,2,229,2,147,0,11,0,71,0,184,0,0,69,88]);fileData0.push.apply(fileData0,[184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,5,62,89,185,0,2,0,1,244,184,0,0,16,184,0,4,208,184,0,2,16,184,0,6,208,184,0,7,208,184,0,4,16,184,0,8,208,48,49,19,51,17,51,17,51,17,51,17,51,17,33,97,46,253,46,253,46,253,124,2,147,253,149,2,107,253,149,2,107,253,109,0,0,0,0,1,0,97,255,68,3,42,2,147,0,16,0,69,0,125,184,0,3,47,24,184,0,0,69,88,184,0,6,47,27,185,0,6,0,17,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,185,0,8,0,1,244,184,0,12,208,184,0,0,208,184,0,6,16,184,0,10,208,184,0,14,208,48,49,37,21,7,35,53,33,17,51,17,51,17,51,17,51,17,51,17,3,42,7,38,253,100,46,253,46,253,46,40,26,202,188,2,147,253,149,2,107,253,149,2,107,253,149,0,0,2,0,29,0,0,2,154,2,147,0,14,0,23,0,67,0,184,0,0,69,88,184,0,2,47,27,185,0,2,0,17,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,187,0,5,0,1,0,21,0,4,43,184,0,2,16,185,0,0,0,1,244,184,0,13,16,185,0,15,0,1,244,48,49,19,35,53,33,17,51,50,30,2,21,20,6,43,1,55,50,54,53,52,38,43,1,17,251,222,1,12,130,53,88,63,35,120,111,184,172,99,98,105,100,118,2,107,40,254,225,21,44,66,46,98,97,39,73,81,72,68,254,218,0,0,0,3,0,97,0,0,2,157,2,147,0,12,0,21,0,25,0,73,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,187,0,3,0,1,0,19,0,4,43,184,0,11,16,185,0,13,0,1,244,184,0,0,16,184,0,22,208,184,0,11,16,184,0,25,208,48,49,19,51,17,51,50,30,2,21,20,6,43,1,55,50,54,53,52,38,43,1,17,1,51,17,35,97,46,124,54,86,62,33,120,112,173,162,98,99,101,100,112,1,224,46,46,2,147,254,225,20,44,67,46,98,97,39,73,81,74,66,254,218,2,108,253,109,0,0,0,0,2,0,97,0,0,2,8,2,147,0,12,0,21,0,57,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,187,0,3,0,1,0,19,0,4,43,184,0,11,16,185,0,13,0,1,244,48,49,19,51,17,51,50,30,2,21,20,6,43,1,55,50,54,53,52,38,43,1,17,97,46,142,54,86,62,33,120,112,191,180,98,99,101,100,130,2,147,254,225,20,44,67,46,98,97,39,73,81,74,66,254,218,0,0,1,0,38,255,244,1,254,2,159,0,32,0,73,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,17,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,185,0,20,0,2,244,186,0,24,0,3,0,13,17,18,57,184,0,24,47,185,0,26,0,1,244,184,0,3,16,185,0,29,0,2,244,48,49,19,62,1,51,50,30,2,21,20,14,2,35,34,38,39,55,30,1,51,50,54,55,33,53,33,46,1,35,34,6,7,57,28,99,60,61,99,69,37,38,70,97,60,69,98,40,27,38,84,56,101,118,2,254,208,1,47,7,113,100,47,83,29,2,80,31,48,45,87,126,82,82,127,88,46,50,44,29,40,41,154,146,40,123,136,37,31,0,0,0,2,0,97,255,244,3,60,2,159,0,19,0,46,0,101,0,184,0,0,69,88,184,0,44,47,27,185,0,44,0,17,62,89,184,0,0,69,88,184,0,25,47,27,185,0,25,0,17,62,89,184,0,0,69,88,184,0,42,47,27,185,0,42,0,5,62,89,184,0,0,69,88,184,0,35,47,27,185,0,35,0,5,62,89,187,0,20,0,1,0,40,0,4,43,184,0,35,16,185,0,0,0,2,244,184,0,25,16,185,0,10,0,2,244,48,49,37,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,3,62,3,51,50,30,2,21,20,14,2,35,34,46,2,53,35,17,35,17,51,17,2,57,48,78,55,30,30,55,78,48,48,79,55,30,30,55,79,209,4,42,67,90,54,57,96,68,38,38,68,96,57,57,95,68,38,168,46,46,30,43,79,111,69,68,110,77,42,42,77,110,68,69,111,79,43,1,84,70,111,78,42,47,89,125,78,78,127,90,49,48,90,126,78,254,182,2,147,254,223,0,0,0,2,0,28,0,0,1,208,2,147,0,8,0,26,0,84,0,184,0,0,69,88,184,0,9,47,27,185,0,9,0,17,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,5,62,89,184,0,0,69,88,184,0,14,47,27,185,0,14,0,5,62,89,187,0,8,0,1,0,12,0,4,43,184,0,9,16,185,0,0,0,1,244,186,0,16,0,12,0,8,17,18,57,48,49,1,35,34,6,21,20,22,59,1,19,17,35,17,35,3,35,19,46,3,53,52,62,2,51,1,162,130,88,93,93,88,130,46,46,147,189,54,194,36,59,44,24,31,57,80,49,2,108,61,74,73,71,1,62,253,109,1,47,254,209,1,51,5,27,44,62,40,47,66,42,19,0,255,255,0,97,0,0,1,212,3,84,2,38,0,8,0,0,0,7,7,34,1,26,0,0,255,255,0,97,0,0,1,212,3,30,2,38,0,8,0,0,0,7,7,54,1,26,0,0,0,1,0,29,255,244,2,111,2,147,0,39,0,83,0,184,0,0,69,88,184,0,23,47,27,185,0,23,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,187,0,15,0,1,0,30,0,4,43,184,0,0,16,185,0,7,0,1,244,184,0,0,16,184,0,20,208,184,0,20,47,184,0,23,16,185,0,22,0,1,244,184,0,25,208,48,49,5,34,38,39,55,30,1,51,50,62,2,53,52,38,35,34,6,7,17,35,17,35,53,33,21,35,21,62,1,51,50,30,2,21,20,14,2,1,193,16,35,10,10,7,29,11,22,46,38,25,99,90,32,66,24,46,190,1,223,243,26,66,34,52,86,61,33,31,50,62,12,7,3,40,3,6,16,38,62,47,87,78,7,5,254,167,2,107,40,40,233,5,6,24,49,78,54,58,78,48,20,0,0,255,255,0,97,0,0,1,200,3,84,2,38,2,67,0,0,0,7,7,37,1,31,0,0,0,1,0,55,255,244,2,15,2,159,0,32,0,77,0,184,0,0,69,88,184,0,13,47,27,185,0,13,0,17,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,5,62,89,184,0,13,16,185,0,20,0,2,244,186,0,25,0,13,0,3,17,18,57,184,0,25,47,185,0,24,0,1,244,184,0,3,16,185,0,29,0,2,244,48,49,37,14,1,35,34,46,2,53,52,62,2,51,50,22,23,7,46,1,35,34,6,7,33,21,33,30,1,51,50,54,55,2,15,38,94,64,63,102,72,39,40,73,103,64,58,89,26,27,27,74,45,104,121,8,1,46,254,209,2,121,109,51,80,36,82,44,50,46,88,127,82,82,126,87,45,48,31,31,31,37,136,123,40,147,153,41,40,0,0,255,255,0,46,255,244,1,224,2,159,2,6,0,22,0,0,255,255,0,97,0,0,0,143,2,147,2,6,0,12,0,0,255,255,255,242,0,0,0,254,3,30,2,38,0,12,0,0,0,6,7,54,120,0,0,0,0,3,0,21,0,0,0,220,3,30,0,11,0,23,0,27,0,61,0,184,0,0,69,88,184,0,24,47,27,185,0,24,0,17,62,89,184,0,0,69,88,184,0,26,47,27,185,0,26,0,5,62,89,186,0,6,0,0,0,3,43,184,0,0,16,184,0,12,208,184,0,6,16,184,0,18,208,48,49,19,34,38,53,52,54,51,50,22,21,20,6,51,34,38,53,52,54,51,50,22,21,20,6,7,51,17,35,56,15,20,20,15,16,20,20,112,15,21,21,15,15,21,21,102,46,46,2,213,19,17,17,20,20,17,17,19,19,17,17,20,20,17,17,19,66,253,109,0,255,255,0,41,255,244,1,111,2,147,2,6,0,13,0,0,0,2,0,7,255,244,3,77,2,147,0,8,0,44,0,85,0,184,0,0,69,88,184,0,42,47,27,185,0,42,0,17,62,89,184,0,0,69,88,184,0,28,47,27,185,0,28,0,5,62,89,187,0,44,0,1,0,7,0,4,43,184,0,28,16,184,0,18,208,184,0,18,47,185,0,0,0,1,244,184,0,42,16,185,0,19,0,1,244,184,0,28,16,185,0,34,0,2,244,48,49,37,50,54,53,52,38,43,1,17,19,50,30,2,21,20,6,43,1,17,35,14,1,7,14,3,35,34,39,55,30,1,51,50,62,2,55,62,1,55,33,17,2,90,99,99,102,100,100,112,54,86,62,33,120,111,162,194,19,33,19,13,28,32,38,24,22,23,12,8,12,8,13,25,22,23,12,21,38,20,1,21,39,73,81,74,66,254,218,1,77,20,44,67,46,98,97,2,107,103,200,101,71,89,50,17,8,44,2,3,12,40,73,62,109,211,117,254,225,0,0,2,0,97,0,0,3,110,2,147,0,8,0,29,0,99,0,184,0,0,69,88,184,0,23,47,27,185,0,23,0,17,62,89,184,0,0,69,88,184,0,22,47,27,185,0,22,0,5,62,89,184,0,18,208,185,0,0,0,1,244,186,0,20,0,23,0,22,17,18,57,184,0,20,47,184,0,7,208,184,0,7,47,184,0,20,16,185,0,25,0,1,244,184,0,23,16,184,0,27,208,184,0,25,16,184,0,29,208,184,0,29,47,48,49,37,50,54,53,52,38,43,1,17,19,50,30,2,21,20,6,43,1,17,33,17,35,17,51,17,33,17,51,17,2,123,99,99,101,100,100,112,53,87,61,33,120,111,161,254,169,46,46,1,87,46,39,73,81,74,66,254,218,1,77,20,44,67,46,98,97,1,74,254,182,2,147,254,223,1,33,254,225,0,0,0,0,1,0,29,0,0,2,100,2,147,0,23,0,69,0,184,0,0,69,88,184,0,20,47,27,185,0,20,0,17,62,89,184,0,0,69,88,184,0,17,47,27,185,0,17,0,5,62,89,187,0,12,0,1,0,3,0,4,43,184,0,17,16,184,0,8,208,184,0,20,16,185,0,19,0,1,244,184,0,22,208,48,49,1,62,1,51,50,22,29,1,35,53,52,38,35,34,6,7,17,35,17,35,53,33,21,35,1,9,26,67,32,106,116,45,91,90,31,66,24,46,190,1,223,243,1,130,5,6,92,105,200,200,86,71,7,5,254,167,2,107,40,40,0,255,255,0,97,0,0,2,38,3,85,2,38,3,150,0,0,0,7,7,37,1,56,0,1,0,2,0,97,255,244,2,52,3,85,0,3,0,46,0,67,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,5,62,89,187,0,25,0,2,0,31,0,4,43,187,0,19,0,1,0,12,0,4,43,184,0,6,16,185,0,43,0,2,244,48,49,1,39,55,23,19,6,35,34,46,2,47,1,35,17,35,17,51,17,51,55,62,3,51,50,23,7,46,1,35,34,14,2,15,1,23,30,3,51,50,54,55,1,35,20,125,28,140,12,16,18,29,30,33,21,124,138,46,46,138,96,22,33,29,30,18,15,12,8,5,11,5,11,18,21,26,18,96,125,18,25,21,18,11,5,11,5,2,195,23,123,33,252,197,5,9,27,48,40,219,254,181,2,147,254,223,176,40,49,27,9,5,46,2,2,6,20,38,32,176,221,32,38,20,6,2,2,0,0,0,0,2,0,97,0,0,2,30,3,85,0,12,0,16,0,13,0,187,0,3,0,1,0,9,0,4,43,48,49,19,51,17,51,19,51,3,19,35,3,35,17,35,19,55,23,7,97,46,114,225,56,241,245,53,225,121,46,174,125,28,133,2,147,254,223,1,33,254,209,254,156,1,74,254,182,2,218,123,33,113,255,255,0,97,0,0,2,35,3,85,2,38,3,148,0,0,0,7,7,34,1,70,0,1,255,255,0,7,255,244,1,230,3,70,2,38,3,161,0,0,0,7,7,50,0,239,0,0,0,1,0,97,255,68,2,25,2,147,0,11,0,65,0,125,184,0,3,47,24,184,0,0,69,88,184,0,6,47,27,185,0,6,0,17,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,184,0,0,208,184,0,4,16,185,0,9,0,1,244,184,0,6,16,184,0,10,208,48,49,33,35,7,35,53,35,17,51,17,33,17,51,2,25,194,6,39,201,46,1,92,46,188,188,2,147,253,149,2,107,0,0,0,0,2,0,29,0,0,2,48,2,191,0,8,0,29,0,66,0,184,0,0,69,88,184,0,18,47,27,185,0,18,0,5,62,89,187,0,20,0,1,0,21,0,4,43,187,0,29,0,1,0,7,0,4,43,184,0,18,16,185,0,0,0,1,244,184,0,21,16,184,0,26,208,184,0,20,16,184,0,27,208,48,49,37,50,54,53,52,38,43,1,17,19,50,30,2,21,20,6,43,1,17,35,53,51,53,51,21,51,21,35,21,1,65,98,95,98,103,88,100,54,87,61,33,115,112,154,150,150,46,246,246,38,70,80,72,64,254,226,1,68,19,42,65,45,98,93,2,9,39,143,143,39,159,0,0,0,0,3,0,55,255,244,2,86,2,159,0,6,0,13,0,33,0,67,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,17,62,89,184,0,0,69,88,184,0,24,47,27,185,0,24,0,5,62,89,187,0,13,0,1,0,0,0,4,43,184,0,24,16,185,0,3,0,1,244,184,0,14,16,185,0,10,0,1,244,48,49,19,30,1,51,50,54,55,39,46,1,35,34,6,7,19,50,30,2,21,20,14,2,35,34,46,2,53,52,62,2,101,2,121,102,102,122,2,1,8,120,97,97,119,8,224,60,100,72,40,40,72,100,60,60,100,71,40,40,71,100,1,75,146,156,156,146,38,125,136,136,125,1,46,45,87,126,81,81,128,89,46,46,89,128,81,81,126,87,45,0,0,0,1,0,4,0,0,2,21,2,159,0,28,0,69,0,184,0,0,69,88,184,0,17,47,27,185,0,17,0,17,62,89,184,0,0,69,88,184,0,28,47,27,185,0,28,0,5,62,89,184,0,17,16,184,0,0,208,184,0,0,47,186,0,7,0,0,0,28,17,18,57,184,0,17,16,185,0,23,0,2,244,48,49,19,51,19,30,3,23,51,62,3,55,19,62,1,51,50,23,7,46,1,35,34,6,7,3,35,4,49,122,9,17,16,18,10,4,9,16,15,16,9,80,17,46,41,18,17,12,5,10,8,22,25,13,162,54,2,147,254,127,30,55,52,54,30,30,54,52,55,30,1,22,63,56,8,45,3,3,37,42,253,223,0,0,1,0,97,0,0,1,209,3,63,0,7,0,53,0,124,184,0,0,47,24,184,0,0,69,88,184,0,5,47,27,185,0,5,0,17,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,5,62,89,184,0,5,16,185,0,1,0,1,244,48,49,1,7,33,17,35,17,33,55,1,209,9,254,199,46,1,61,13,3,63,212,253,149,2,147,172,0,1,0,37,0,0,1,221,2,147,0,13,0,85,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,17,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,184,0,11,16,185,0,0,0,1,244,186,0,3,0,11,0,5,17,18,57,184,0,3,47,184,0,2,220,184,0,3,16,184,0,7,208,184,0,2,16,184,0,9,208,184,0,9,47,48,49,19,17,51,21,35,17,35,17,35,53,55,17,33,21,164,163,163,46,81,81,1,103,2,107,254,247,33,254,191,1,65,31,2,1,49,40,0,0,1,0,9,255,68,3,12,2,159,0,56,0,145,0,125,184,0,3,47,24,184,0,0,69,88,184,0,26,47,27,185,0,26,0,17,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,187,0,32,0,1,0,11,0,4,43,184,0,13,16,184,0,9,208,184,0,5,208,185,0,0,0,1,244,184,0,11,16,184,0,6,208,186,0,14,0,32,0,11,17,18,57,184,0,26,16,185,0,20,0,2,244,184,0,26,16,184,0,34,208,184,0,34,47,184,0,32,16,184,0,37,208,184,0,26,16,184,0,43,208,184,0,20,16,184,0,49,208,186,0,55,0,6,0,37,17,18,57,48,49,37,21,7,35,53,35,3,35,17,35,17,35,3,35,19,39,46,3,35,34,6,7,39,54,51,50,30,2,31,1,51,17,51,17,51,55,62,3,51,50,23,7,46,1,35,34,14,2,15,1,19,3,12,7,39,28,189,111,44,111,189,53,207,78,15,25,23,20,11,5,11,5,8,12,14,19,32,32,32,18,81,107,44,107,80,19,32,32,32,19,14,12,9,5,11,5,11,20,22,25,15,78,184,40,26,202,188,1,75,254,181,1,75,254,181,1,98,174,33,38,19,6,2,2,46,5,9,27,49,40,176,1,33,254,223,176,40,49,27,9,5,46,2,2,6,19,38,33,174,254,198,0,0,0,1,255,244,255,64,3,14,2,159,0,84,0,221,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,184,0,0,69,88,184,0,24,47,27,185,0,24,0,5,62,89,184,0,0,69,88,184,0,26,47,27,185,0,26,0,5,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,5,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,5,62,89,187,0,48,0,2,0,42,0,4,43,187,0,59,0,1,0,13,0,4,43,184,0,13,16,184,0,17,208,184,0,24,16,185,0,30,0,2,244,184,0,59,16,184,0,54,208,184,0,48,16,184,0,65,208,184,0,42,16,184,0,71,208,184,0,30,16,184,0,81,208,184,0,81,47,184,0,82,208,184,0,82,47,48,49,5,6,15,1,35,53,38,39,35,53,46,1,47,1,35,17,35,17,35,7,14,3,35,34,39,55,30,1,51,50,62,2,63,1,39,46,3,35,34,6,7,39,54,51,50,30,2,31,1,51,17,51,17,51,55,62,3,51,50,23,7,46,1,35,34,14,2,15,1,23,30,1,23,51,21,51,3,14,3,8,6,38,11,11,3,17,37,24,98,120,43,119,98,20,32,30,31,18,15,12,8,5,11,5,11,19,21,24,17,97,68,14,24,23,21,11,5,11,5,8,12,15,18,33,31,32,17,69,120,43,120,69,18,31,32,33,18,15,12,9,5,11,5,11,20,23,24,14,69,97,23,31,13,45,1,7,1,2,182,183,3,6,2,11,51,48,219,254,181,1,75,219,40,48,27,9,5,46,2,2,6,20,38,32,217,180,31,38,21,6,2,2,46,5,9,27,49,40,176,1,33,254,223,176,40,49,27,9,5,46,2,2,6,21,38,31,179,218,45,39,7,1,0,0,0,0,1,0,15,255,64,3,4,2,147,0,26,0,90,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,187,0,22,0,1,0,6,0,4,43,184,0,4,16,185,0,0,0,1,244,184,0,6,16,184,0,10,208,184,0,22,16,184,0,17,208,48,49,37,21,7,35,53,35,3,35,17,35,17,35,3,35,19,3,51,19,51,17,51,17,51,19,51,3,19,3,4,7,38,32,187,104,46,105,186,52,203,198,53,184,101,46,101,183,54,199,180,40,27,205,192,1,74,254,182,1,74,254,182,1,100,1,47,254,223,1,33,254,223,1,33,254,209,254,196,0,0,0,0,1,0,46,255,68,1,248,2,159,0,54,0,91,0,125,184,0,10,47,24,184,0,0,69,88,184,0,46,47,27,185,0,46,0,17,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,187,0,30,0,1,0,29,0,4,43,186,0,0,0,29,0,30,17,18,57,184,0,11,16,184,0,8,208,184,0,11,16,185,0,20,0,1,244,184,0,46,16,185,0,39,0,2,244,48,49,1,30,1,21,20,14,2,15,1,35,53,46,1,39,55,30,3,51,50,62,2,53,52,38,43,1,53,51,50,54,53,52,46,2,35,34,6,7,39,62,1,51,50,30,2,21,20,6,7,1,106,61,81,32,55,74,42,6,39,66,99,45,29,24,45,49,54,32,36,65,49,29,112,99,67,47,103,93,23,40,55,32,50,87,29,26,30,102,60,40,72,52,31,55,51,1,95,11,85,72,43,69,50,29,3,177,177,3,47,48,31,24,34,21,9,20,39,57,37,76,72,38,68,68,30,46,32,16,37,30,31,32,46,22,42,61,39,55,81,16,0,0,0,0,1,0,97,255,68,2,59,2,159,0,32,0,99,0,125,184,0,3,47,24,184,0,0,69,88,184,0,19,47,27,185,0,19,0,17,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,5,62,89,187,0,12,0,1,0,7,0,4,43,184,0,9,16,184,0,5,208,185,0,0,0,1,244,184,0,19,16,184,0,10,208,184,0,10,47,184,0,19,16,185,0,25,0,2,244,186,0,31,0,12,0,7,17,18,57,48,49,37,21,7,35,53,35,3,35,17,35,17,51,17,51,55,62,3,51,50,23,7,46,1,35,34,14,2,15,1,19,2,59,6,39,28,219,136,46,46,138,96,21,33,30,30,19,14,12,8,5,11,5,11,18,21,26,18,95,206,40,26,202,188,1,75,254,181,2,147,254,223,176,40,49,27,9,5,46,2,2,6,20,38,32,176,254,200,0,1,0,97,255,64,2,52,2,159,0,42,0,88,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,5,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,5,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,5,62,89,187,0,25,0,2,0,31,0,4,43,187,0,19,0,1,0,12,0,4,43,184,0,6,16,185,0,41,0,2,244,184,0,42,208,48,49,37,7,23,35,7,35,53,46,3,47,1,35,17,35,17,51,17,51,55,62,3,51,50,23,7,46,1,35,34,14,2,15,1,23,30,1,23,51,2,52,1,1,1,6,38,14,25,27,29,19,124,138,46,46,138,96,22,33,29,30,18,15,12,8,5,11,5,11,18,21,26,18,96,125,24,31,13,54,13,17,3,185,181,2,13,27,46,35,219,254,181,2,147,254,223,176,40,49,27,9,5,46,2,2,6,20,38,32,176,221,45,39,7,0,0,1,0,97,255,64,2,52,2,147,0,17,0,57,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,187,0,13,0,1,0,6,0,4,43,184,0,4,16,185,0,0,0,1,244,48,49,37,21,7,35,53,35,3,35,17,35,17,51,17,51,19,51,3,19,2,52,7,38,30,225,121,46,46,114,225,56,241,217,40,27,205,192,1,74,254,182,2,147,254,223,1,33,254,209,254,196,0,0,0,0,1,0,29,0,0,2,180,2,159,0,29,0,83,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,17,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,17,62,89,187,0,11,0,1,0,2,0,4,43,184,0,8,16,185,0,6,0,1,244,184,0,23,208,184,0,23,47,184,0,7,208,184,0,7,47,184,0,23,16,185,0,17,0,2,244,48,49,33,35,3,35,17,35,17,35,53,33,17,51,55,62,3,51,50,23,7,46,1,35,34,14,2,15,1,2,180,52,219,136,46,210,1,0,138,96,21,33,30,30,19,14,12,8,5,11,5,11,18,21,26,18,95,1,75,254,181,2,107,40,254,223,176,40,49,27,9,5,46,2,2,6,20,38,32,176,0,0,1,0,29,255,244,2,194,2,159,0,44,0,127,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,17,62,89,184,0,0,69,88,184,0,25,47,27,185,0,25,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,187,0,17,0,1,0,8,0,4,43,184,0,14,16,185,0,12,0,1,244,184,0,29,208,184,0,29,47,184,0,13,208,184,0,13,47,184,0,29,16,185,0,23,0,2,244,184,0,2,16,185,0,41,0,2,244,48,49,5,6,35,34,46,2,47,1,35,17,35,17,35,53,33,17,51,55,62,3,51,50,23,7,46,1,35,34,14,2,15,1,23,30,3,51,50,54,55,2,194,12,16,18,29,30,33,21,124,138,46,210,1,0,138,96,22,33,29,30,18,15,12,8,5,11,5,11,18,21,26,18,96,125,18,25,21,18,11,5,11,5,7,5,9,27,48,40,219,254,181,2,107,40,254,223,176,40,49,27,9,5,46,2,2,6,20,38,32,176,221,32,38,20,6,2,2,0,0,0,1,0,29,0,0,2,172,2,147,0,14,0,57,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,17,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,17,62,89,187,0,11,0,1,0,2,0,4,43,184,0,8,16,185,0,6,0,1,244,48,49,33,35,3,35,17,35,17,35,53,33,17,51,19,51,3,2,172,53,225,121,46,210,1,0,114,225,56,241,1,74,254,182,2,107,40,254,223,1,33,254,209,0,1,0,97,255,68,2,99,2,147,0,16,0,81,0,125,184,0,3,47,24,184,0,0,69,88,184,0,10,47,27,185,0,10,0,17,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,5,62,89,184,0,5,208,185,0,0,0,1,244,186,0,7,0,10,0,9,17,18,57,184,0,7,47,185,0,13,0,1,244,184,0,10,16,184,0,14,208,48,49,37,21,7,35,53,35,17,33,17,35,17,51,17,33,17,51,17,2,99,7,39,69,254,159,46,46,1,97,46,40,26,202,188,1,74,254,182,2,147,254,223,1,33,253,149,0,1,0,55,255,68,2,15,2,159,0,36,0,67,0,125,184,0,5,47,24,184,0,0,69,88,184,0,16,47,27,185,0,16,0,17,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,5,62,89,184,0,3,208,184,0,16,16,185,0,23,0,2,244,184,0,6,16,185,0,33,0,1,244,48,49,37,14,1,15,1,35,53,46,3,53,52,62,2,51,50,22,23,7,46,1,35,34,14,2,21,20,30,2,51,50,54,55,2,15,35,83,55,5,39,57,94,67,37,41,74,103,63,58,88,26,27,27,72,45,54,87,61,32,32,60,85,53,51,80,36,82,40,48,5,177,177,4,51,89,123,75,78,126,89,47,48,31,31,31,37,42,77,110,69,69,111,78,43,41,40,255,255,0,3,0,0,1,188,2,147,2,6,0,28,0,0,0,1,0,3,0,0,1,188,2,147,0,22,0,85,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,17,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,186,0,10,0,11,0,5,17,18,57,184,0,10,47,184,0,1,208,184,0,10,16,184,0,6,220,184,0,2,208,184,0,11,16,184,0,21,208,186,0,16,0,21,0,5,17,18,57,48,49,1,51,21,35,17,35,17,35,53,55,51,3,51,23,30,1,23,51,62,1,63,1,51,1,3,126,139,46,138,85,40,184,49,100,17,33,20,4,19,36,16,100,47,1,37,33,254,252,1,4,31,2,1,110,206,36,70,36,36,70,36,206,0,0,0,0,1,0,17,255,68,1,231,2,147,0,30,0,101,0,125,184,0,3,47,24,184,0,0,69,88,184,0,17,47,27,185,0,17,0,17,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,5,62,89,184,0,5,208,185,0,0,0,1,244,186,0,10,0,17,0,15,17,18,57,186,0,16,0,22,0,9,17,18,57,184,0,17,16,184,0,27,208,186,0,23,0,5,0,27,17,18,57,186,0,29,0,9,0,23,17,18,57,48,49,37,21,7,35,53,35,39,46,1,39,35,14,1,15,1,35,19,3,51,23,30,1,23,51,62,1,63,1,51,3,19,1,231,7,39,26,115,14,29,18,4,16,26,14,115,47,198,184,50,108,14,23,17,4,14,21,14,108,47,184,175,40,26,202,188,202,25,50,30,30,50,25,202,1,85,1,62,194,23,40,27,27,40,23,194,254,192,254,213,0,1,0,71,255,68,2,39,2,147,0,28,0,71,0,125,184,0,3,47,24,184,0,0,69,88,184,0,15,47,27,185,0,15,0,17,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,187,0,22,0,1,0,9,0,4,43,184,0,4,16,185,0,0,0,1,244,184,0,15,16,184,0,26,208,48,49,37,21,7,35,53,35,17,14,1,35,34,46,2,61,1,51,21,20,30,2,51,50,54,55,17,51,17,2,39,7,38,70,26,63,43,54,87,60,32,45,26,49,72,45,42,63,23,46,40,26,202,188,1,55,4,7,21,47,76,55,160,160,45,61,37,15,6,5,1,51,253,149,0,0,0,0,1,0,97,0,0,1,252,2,147,0,23,0,55,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,22,47,27,185,0,22,0,5,62,89,187,0,5,0,1,0,18,0,4,43,184,0,22,16,184,0,11,208,48,49,19,51,17,62,1,51,50,30,2,29,1,35,53,52,46,2,35,34,6,7,17,35,97,46,26,63,43,54,87,60,32,45,26,49,72,45,42,63,23,46,2,147,254,241,5,6,21,46,77,55,200,200,45,61,37,16,7,5,254,165,0,0,0,255,255,0,97,0,0,0,143,2,147,2,6,0,12,0,0,255,255,0,9,0,0,2,247,3,70,2,38,3,144,0,0,0,7,7,50,1,127,0,0,0,2,255,243,255,244,3,13,3,70,0,21,0,103,0,151,0,184,0,0,69,88,184,0,22,47,27,185,0,22,0,5,62,89,184,0,0,69,88,184,0,24,47,27,185,0,24,0,5,62,89,184,0,0,69,88,184,0,41,47,27,185,0,41,0,5,62,89,184,0,0,69,88,184,0,43,47,27,185,0,43,0,5,62,89,187,0,16,0,1,0,5,0,4,43,187,0,65,0,2,0,59,0,4,43,187,0,76,0,1,0,30,0,4,43,184,0,30,16,184,0,34,208,184,0,41,16,185,0,47,0,2,244,184,0,76,16,184,0,71,208,184,0,65,16,184,0,82,208,184,0,59,16,184,0,88,208,184,0,47,16,184,0,100,208,48,49,1,14,3,35,34,46,2,39,51,30,3,51,50,62,2,55,1,6,35,34,46,2,47,1,35,17,35,17,35,7,14,3,35,34,39,55,30,1,51,50,62,2,63,1,39,46,3,35,34,6,7,39,54,51,50,30,2,31,1,51,17,51,17,51,55,62,3,51,50,23,7,46,1,35,34,14,2,15,1,23,30,3,51,50,54,55,2,4,2,14,31,51,38,38,51,31,14,2,42,1,10,22,35,26,25,36,22,10,1,1,51,12,16,18,30,30,32,20,98,120,43,119,98,20,32,30,31,18,15,12,8,5,11,5,11,19,21,24,17,97,68,14,24,23,21,11,5,11,5,8,12,15,18,33,31,32,17,69,120,43,120,69,18,31,32,33,18,15,12,9,5,11,5,11,20,23,24,14,69,97,17,25,21,18,11,5,11,5,3,70,23,45,37,23,23,37,45,23,19,36,27,16,16,27,36,19,252,179,5,9,27,48,40,219,254,181,1,75,219,40,48,27,9,5,46,2,2,6,20,38,32,217,180,31,38,21,6,2,2,46,5,9,27,49,40,176,1,33,254,223,176,40,49,27,9,5,46,2,2,6,21,38,31,179,218,32,38,20,6,2,2,0,0,0,2,0,14,0,0,2,233,3,70,0,21,0,43,0,39,0,187,0,33,0,1,0,22,0,4,43,187,0,8,0,1,0,14,0,4,43,184,0,8,16,184,0,3,208,184,0,14,16,184,0,18,208,48,49,19,3,51,19,51,17,51,17,51,19,51,3,19,35,3,35,17,35,17,35,3,35,1,34,46,2,39,51,30,3,51,50,62,2,55,51,14,3,217,198,53,184,101,46,101,183,54,199,203,51,187,104,46,105,186,52,1,110,38,51,31,14,2,42,1,10,22,35,26,25,36,22,10,1,42,2,14,31,51,1,100,1,47,254,223,1,33,254,223,1,33,254,209,254,156,1,74,254,182,1,74,254,182,2,198,23,37,45,23,19,36,27,16,16,27,36,19,23,45,37,23,255,255,0,8,0,0,2,6,3,70,2,38,0,4,0,0,0,7,7,50,1,7,0,0,255,255,0,21,0,0,2,250,2,147,2,6,0,78,0,0,255,255,0,97,0,0,1,212,3,70,2,38,0,8,0,0,0,7,7,50,1,26,0,0,255,255,0,62,255,244,2,81,2,159,2,6,0,247,0,0,255,255,0,97,0,0,2,35,3,12,2,38,3,148,0,0,0,7,7,44,1,70,0,1,255,255,0,55,255,244,2,86,3,30,2,38,0,18,0,0,0,7,7,54,1,70,0,0,255,255,0,55,255,244,2,86,2,159,2,6,3,194,0,0,255,255,0,7,255,244,1,230,3,11,2,38,3,161,0,0,0,7,7,44,0,233,0,0,255,255,0,7,255,244,1,230,3,101,2,38,3,161,0,0,0,7,7,60,0,233,0,0,255,255,0,58,255,244,1,156,1,236,2,6,0,30,0,0,0,2,0,60,255,244,1,225,2,218,0,18,0,53,0,87,0,184,0,0,69,88,184,0,48,47,27,185,0,48,0,19,62,89,184,0,0,69,88,184,0,40,47,27,185,0,40,0,5,62,89,187,0,30,0,1,0,10,0,4,43,184,0,40,16,185,0,0,0,1,244,186,0,27,0,48,0,40,17,18,57,184,0,27,47,185,0,13,0,1,244,184,0,48,16,185,0,22,0,2,244,48,49,37,50,62,2,53,52,46,2,35,34,6,7,6,20,21,20,22,1,14,1,7,14,3,7,62,1,51,50,30,2,21,20,14,2,35,34,38,53,52,62,2,55,62,3,55,1,23,33,57,42,24,20,40,59,39,41,86,46,1,87,1,14,20,43,29,61,93,65,37,6,37,93,48,46,73,51,27,32,56,73,41,104,115,41,78,111,69,19,26,18,16,11,27,31,56,79,47,40,70,50,29,44,59,11,22,12,117,137,2,147,11,11,5,10,24,57,105,90,47,47,33,59,84,51,58,93,66,35,153,144,130,156,86,36,11,3,5,6,7,5,0,0,3,0,92,0,0,1,198,1,224,0,17,0,26,0,34,0,77,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,16,47,27,185,0,16,0,5,62,89,187,0,18,0,1,0,32,0,4,43,186,0,8,0,32,0,18,17,18,57,184,0,0,16,185,0,24,0,1,244,184,0,16,16,185,0,27,0,1,244,48,49,19,51,50,22,21,20,6,7,21,30,3,21,20,6,43,1,19,50,54,53,52,38,43,1,21,23,50,53,52,38,43,1,21,92,173,78,89,46,33,19,36,28,18,99,85,178,156,75,64,61,69,121,125,147,79,76,117,1,224,56,62,46,48,11,3,5,17,29,39,27,70,67,1,14,47,41,42,44,174,234,103,46,49,198,0,0,1,0,92,0,0,1,117,1,224,0,5,0,47,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,184,0,0,16,185,0,2,0,1,244,48,49,19,33,21,35,17,35,92,1,25,237,44,1,224,38,254,70,0,0,0,0,2,0,24,255,84,1,218,1,224,0,8,0,27,0,79,0,125,184,0,16,47,24,184,0,0,69,88,184,0,25,47,27,185,0,25,0,9,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,185,0,18,0,1,244,184,0,6,208,184,0,25,16,185,0,7,0,1,244,184,0,6,16,184,0,9,208,184,0,16,16,184,0,12,208,48,49,55,14,3,7,33,17,35,1,21,7,35,53,33,21,35,39,53,51,62,3,63,1,33,17,158,6,13,15,17,8,1,9,184,1,38,6,38,254,150,39,5,20,11,20,18,17,8,27,1,7,248,47,68,50,33,11,1,147,254,109,26,185,172,172,185,26,6,22,46,79,62,226,254,71,0,0,0,255,255,0,52,255,244,1,189,1,236,2,6,0,34,0,0,0,1,0,17,0,0,2,105,1,236,0,47,0,127,0,184,0,0,69,88,184,0,22,47,27,185,0,22,0,9,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,5,62,89,187,0,7,0,1,0,26,0,4,43,184,0,9,16,184,0,5,208,184,0,1,208,184,0,7,16,184,0,2,208,186,0,10,0,26,0,7,17,18,57,184,0,22,16,185,0,16,0,2,244,184,0,22,16,184,0,35,208,184,0,28,208,184,0,26,16,184,0,31,208,184,0,35,16,185,0,41,0,2,244,186,0,47,0,2,0,31,17,18,57,48,49,33,35,39,35,21,35,53,35,7,35,19,39,46,3,35,42,1,7,39,54,51,50,22,31,1,51,53,51,21,51,55,62,1,51,50,23,7,38,34,35,34,14,2,15,1,2,105,49,132,99,40,99,132,49,150,45,10,18,18,19,9,5,5,5,10,10,13,31,54,25,47,94,40,93,48,24,54,32,12,10,9,5,5,5,10,18,18,18,10,45,231,231,231,231,1,1,114,24,30,17,5,2,43,4,43,61,118,210,210,118,61,43,4,43,2,5,17,30,24,115,0,0,0,0,1,255,250,255,244,2,127,1,236,0,79,0,201,0,184,0,0,69,88,184,0,39,47,27,185,0,39,0,9,62,89,184,0,0,69,88,184,0,41,47,27,185,0,41,0,9,62,89,184,0,0,69,88,184,0,58,47,27,185,0,58,0,9,62,89,184,0,0,69,88,184,0,60,47,27,185,0,60,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,5,62,89,184,0,0,69,88,184,0,21,47,27,185,0,21,0,5,62,89,187,0,52,0,1,0,8,0,4,43,184,0,8,16,184,0,12,208,184,0,19,16,185,0,25,0,2,244,184,0,41,16,185,0,35,0,2,244,184,0,52,16,184,0,47,208,184,0,35,16,184,0,64,208,184,0,25,16,184,0,76,208,48,49,5,6,35,34,46,2,47,1,35,21,35,53,35,7,14,3,35,34,39,55,22,50,51,50,54,63,1,39,46,3,35,42,1,7,39,54,51,50,30,2,31,1,51,53,51,21,51,55,62,3,51,50,23,7,38,34,35,34,14,2,15,1,23,30,3,51,58,1,55,2,127,10,12,15,27,27,30,16,74,91,40,91,74,17,29,28,27,14,13,10,10,5,5,5,16,35,26,76,50,11,18,18,18,10,5,4,5,10,10,12,16,28,27,26,14,50,91,40,91,50,13,26,27,28,16,13,10,10,5,5,5,10,17,18,19,10,51,77,13,21,18,17,8,5,4,5,8,4,9,23,40,32,139,231,231,139,32,40,23,9,4,43,2,28,48,142,120,25,30,16,5,2,43,4,8,23,41,32,118,210,210,118,32,41,23,8,4,43,2,5,16,30,25,120,142,24,30,16,6,2,0,0,1,0,18,0,0,2,106,1,224,0,21,0,29,0,187,0,8,0,1,0,14,0,4,43,184,0,8,16,184,0,3,208,184,0,14,16,184,0,18,208,48,49,55,39,51,23,51,53,51,21,51,55,51,7,23,35,39,35,21,35,53,35,7,35,181,153,50,141,77,43,78,140,51,154,164,50,147,82,43,82,146,50,254,226,210,210,210,210,226,254,231,231,231,231,0,0,1,0,42,255,244,1,146,1,236,0,49,0,77,0,184,0,0,69,88,184,0,31,47,27,185,0,31,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,187,0,18,0,1,0,15,0,4,43,184,0,0,16,185,0,7,0,1,244,184,0,31,16,185,0,24,0,1,244,186,0,40,0,15,0,18,17,18,57,48,49,23,34,38,39,55,30,1,51,50,62,2,53,52,38,43,1,53,51,50,54,53,52,38,35,34,6,7,39,62,1,51,50,30,2,21,20,6,7,21,30,3,21,20,14,2,221,51,88,40,23,35,75,43,28,50,38,22,80,72,60,47,72,72,67,49,48,63,30,23,32,78,55,33,58,43,26,45,37,21,37,29,17,28,50,66,12,28,35,31,32,24,15,27,40,24,51,51,36,51,43,47,43,26,22,31,23,32,16,31,46,31,39,56,16,4,5,20,30,41,27,32,52,38,20,0,0,1,0,92,0,0,1,206,1,224,0,23,0,73,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,23,47,27,185,0,23,0,5,62,89,186,0,5,0,0,0,23,17,18,57,184,0,0,16,184,0,10,208,184,0,23,16,184,0,13,208,186,0,17,0,13,0,10,17,18,57,48,49,19,51,21,20,6,7,51,62,1,55,19,51,17,35,53,52,54,55,35,14,1,7,3,35,92,44,3,2,4,14,40,14,216,43,44,3,2,4,14,40,14,216,43,1,224,240,39,94,48,23,58,23,1,61,254,32,240,40,93,48,23,58,23,254,195,255,255,0,92,0,0,1,206,2,208,2,38,3,238,0,0,0,7,7,48,1,23,0,2,0,1,0,92,0,0,1,198,1,236,0,27,0,83,0,184,0,0,69,88,184,0,15,47,27,185,0,15,0,9,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,187,0,3,0,1,0,8,0,4,43,184,0,5,16,184,0,1,208,184,0,15,16,184,0,6,208,184,0,15,16,185,0,21,0,2,244,186,0,27,0,8,0,3,17,18,57,48,49,33,35,39,35,21,35,17,51,21,51,55,62,3,51,50,23,7,38,34,35,34,14,2,15,1,1,198,50,147,121,44,44,120,50,13,26,27,28,16,13,10,10,5,5,5,9,18,18,19,10,50,231,231,1,224,210,118,32,41,23,8,4,43,2,5,16,30,25,118,0,0,0,1,0,92,255,244,1,213,1,236,0,34,0,101,0,184,0,0,69,88,184,0,17,47,27,185,0,17,0,9,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,187,0,13,0,1,0,6,0,4,43,184,0,17,16,185,0,23,0,2,244,184,0,2,16,185,0,31,0,2,244,48,49,5,6,35,34,38,47,1,35,21,35,17,51,21,51,55,62,1,51,50,23,7,38,34,35,34,6,15,1,23,30,1,51,58,1,55,1,213,10,16,27,44,23,93,120,44,44,119,65,20,46,33,12,10,10,5,3,6,21,28,13,65,94,16,26,17,5,7,5,8,4,26,44,173,231,1,224,210,145,44,33,4,43,2,20,28,149,173,29,15,2,0,0,0,0,1,0,92,0,0,1,198,1,224,0,12,0,13,0,187,0,3,0,1,0,9,0,4,43,48,49,19,51,21,51,55,51,7,23,35,39,35,21,35,92,44,116,142,50,154,164,50,147,121,44,1,224,210,210,226,254,231,231,0,0,1,0,13,255,244,1,157,1,224,0,22,0,61,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,6,0,2,244,184,0,0,16,184,0,15,208,184,0,12,16,185,0,16,0,1,244,48,49,23,34,39,55,30,1,51,50,54,55,62,1,55,33,17,35,17,35,14,1,7,14,1,48,20,15,10,5,9,7,29,35,7,10,20,9,1,3,44,179,9,18,8,10,53]);fileData0.push.apply(fileData0,[12,7,42,2,2,58,62,82,163,82,254,32,1,186,75,148,75,80,76,0,0,1,0,92,0,0,2,14,1,224,0,33,0,93,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,33,47,27,185,0,33,0,5,62,89,186,0,5,0,33,0,0,17,18,57,184,0,0,16,184,0,10,208,184,0,33,16,184,0,13,208,186,0,17,0,13,0,10,17,18,57,186,0,23,0,10,0,13,17,18,57,186,0,28,0,0,0,33,17,18,57,48,49,19,51,19,30,1,23,51,62,1,55,19,51,17,35,17,52,54,55,35,14,1,7,3,35,3,46,1,39,35,30,1,21,17,35,92,52,115,12,25,11,4,13,26,11,113,52,43,4,2,4,11,21,11,112,40,114,11,21,11,4,2,3,42,1,224,254,251,31,61,31,31,61,31,1,5,254,32,1,16,28,77,35,26,50,25,254,248,1,8,25,50,26,35,77,28,254,240,0,1,0,92,0,0,1,202,1,224,0,11,0,63,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,187,0,9,0,2,0,2,0,4,43,184,0,0,16,184,0,4,208,184,0,11,16,184,0,7,208,48,49,19,51,21,33,53,51,17,35,53,33,21,35,92,44,1,22,44,44,254,234,44,1,224,208,208,254,32,232,232,0,0,255,255,0,52,255,244,1,227,1,236,2,6,0,44,0,0,0,1,0,92,0,0,1,192,1,224,0,7,0,51,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,184,0,3,208,184,0,0,16,185,0,4,0,1,244,48,49,19,33,17,35,17,33,17,35,92,1,100,44,254,244,44,1,224,254,32,1,186,254,70,255,255,0,92,255,39,1,236,1,236,2,6,0,45,0,0,255,255,0,52,255,244,1,167,1,236,2,6,0,32,0,0,0,1,0,26,0,0,1,159,1,224,0,7,0,51,0,184,0,0,69,88,184,0,2,47,27,185,0,2,0,9,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,184,0,2,16,185,0,0,0,1,244,184,0,4,208,48,49,19,35,53,33,21,35,17,35,198,172,1,133,172,45,1,186,38,38,254,70,0,0,0,255,255,0,12,255,37,1,168,1,224,2,6,0,54,0,0,0,3,0,52,255,39,2,144,2,207,0,37,0,54,0,71,0,203,0,184,0,0,69,88,184,0,17,47,27,185,0,17,0,19,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,9,62,89,184,0,0,69,88,184,0,37,47,27,185,0,37,0,7,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,186,0,1,0,4,0,12,17,18,57,186,0,15,0,12,0,4,17,18,57,184,0,12,16,184,0,23,208,184,0,4,16,184,0,31,208,186,0,20,0,23,0,31,17,18,57,186,0,34,0,31,0,23,17,18,57,184,0,4,16,185,0,38,0,1,244,184,0,1,16,185,0,41,0,1,244,184,0,15,16,185,0,42,0,1,244,184,0,12,16,185,0,45,0,1,244,184,0,38,16,184,0,55,208,184,0,45,16,184,0,65,208,184,0,20,16,185,0,68,0,1,244,184,0,34,16,185,0,69,0,1,244,48,49,5,55,14,1,35,34,38,53,52,62,2,51,50,22,23,39,53,51,21,7,62,1,51,50,22,21,20,14,2,35,34,38,39,23,21,35,39,50,54,55,17,46,1,35,34,14,2,21,20,30,2,33,50,62,2,53,52,46,2,35,34,6,7,17,30,1,1,76,1,21,49,31,82,98,28,49,65,38,28,49,24,1,44,1,24,56,27,87,87,29,49,65,37,23,52,26,1,44,94,25,44,26,25,49,25,29,50,36,20,18,36,52,1,12,30,50,36,20,15,32,51,36,23,50,27,27,52,44,73,17,24,129,122,58,94,66,35,22,17,71,195,195,72,18,22,133,112,61,96,67,35,21,19,72,173,244,19,24,1,86,23,18,33,57,79,45,48,78,55,31,32,58,81,49,44,76,55,31,17,24,254,168,24,17,0,0,0,255,255,0,14,0,0,1,137,1,224,2,6,0,53,0,0,0,1,0,92,255,84,1,251,1,224,0,12,0,61,0,125,184,0,3,47,24,184,0,0,69,88,184,0,6,47,27,185,0,6,0,9,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,185,0,9,0,1,244,184,0,0,208,184,0,6,16,184,0,10,208,48,49,37,21,7,35,53,33,17,51,17,33,17,51,17,1,251,6,38,254,141,44,1,5,44,39,26,185,172,1,224,254,71,1,185,254,71,0,0,0,1,0,66,0,0,1,142,1,224,0,21,0,55,0,184,0,0,69,88,184,0,9,47,27,185,0,9,0,9,62,89,184,0,0,69,88,184,0,20,47,27,185,0,20,0,5,62,89,187,0,14,0,1,0,5,0,4,43,184,0,9,16,184,0,18,208,48,49,37,14,3,35,34,38,61,1,51,21,20,22,51,50,54,55,53,51,17,35,1,98,15,22,22,24,17,94,94,44,73,78,26,41,26,44,44,209,3,5,3,1,72,84,127,127,63,54,5,6,233,254,32,0,0,0,1,0,92,0,0,2,114,1,224,0,11,0,67,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,185,0,3,0,1,244,184,0,0,16,184,0,4,208,184,0,3,16,184,0,7,208,184,0,4,16,184,0,8,208,48,49,19,51,17,51,17,51,17,51,17,51,17,33,92,44,201,44,201,44,253,234,1,224,254,71,1,185,254,71,1,185,254,32,0,0,0,0,1,0,92,255,84,2,179,1,224,0,16,0,69,0,125,184,0,3,47,24,184,0,0,69,88,184,0,6,47,27,185,0,6,0,9,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,185,0,9,0,1,244,184,0,13,208,184,0,0,208,184,0,6,16,184,0,10,208,184,0,14,208,48,49,37,21,7,35,53,33,17,51,17,51,17,51,17,51,17,51,17,2,179,5,38,253,212,44,201,44,201,44,39,26,185,172,1,224,254,71,1,185,254,71,1,185,254,71,0,0,2,0,26,0,0,2,23,1,224,0,12,0,21,0,67,0,184,0,0,69,88,184,0,2,47,27,185,0,2,0,9,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,187,0,5,0,1,0,19,0,4,43,184,0,2,16,185,0,0,0,1,244,184,0,11,16,185,0,13,0,1,244,48,49,19,35,53,51,21,51,50,22,21,20,6,43,1,55,50,54,53,52,38,43,1,21,211,185,229,98,85,97,97,85,142,132,75,72,72,75,88,1,186,38,191,71,72,73,73,38,51,57,56,49,213,0,0,0,3,0,92,0,0,2,32,1,224,0,10,0,19,0,23,0,73,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,5,62,89,187,0,2,0,1,0,18,0,4,43,184,0,10,16,185,0,11,0,1,244,184,0,0,16,184,0,20,208,184,0,10,16,184,0,23,208,48,49,19,51,21,51,50,22,21,20,6,43,1,55,50,54,53,52,38,43,1,21,1,51,17,35,92,44,87,85,98,98,85,131,122,75,71,71,75,78,1,108,44,44,1,224,191,71,72,73,73,38,51,57,56,49,213,1,186,254,32,0,0,0,2,0,92,0,0,1,175,1,224,0,10,0,19,0,57,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,9,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,5,62,89,187,0,3,0,1,0,17,0,4,43,184,0,9,16,185,0,11,0,1,244,48,49,19,51,21,51,50,22,21,20,6,43,1,55,50,54,53,52,38,43,1,21,92,44,113,85,97,97,85,157,147,75,72,72,75,103,1,224,191,71,72,73,73,38,51,57,56,49,213,0,1,0,25,255,244,1,141,1,236,0,32,0,67,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,9,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,187,0,26,0,1,0,23,0,4,43,184,0,13,16,185,0,20,0,1,244,184,0,3,16,185,0,29,0,1,244,48,49,19,62,1,51,50,30,2,21,20,14,2,35,34,38,39,55,30,1,51,50,54,55,35,53,51,46,1,35,34,6,7,37,24,71,57,42,75,57,34,33,57,80,46,49,78,29,23,25,64,42,79,92,2,237,236,8,90,66,43,59,23,1,177,23,36,30,63,95,65,63,94,63,31,36,27,30,24,31,106,102,36,91,93,29,22,0,0,0,2,0,92,255,244,2,152,1,236,0,19,0,46,0,101,0,184,0,0,69,88,184,0,44,47,27,185,0,44,0,9,62,89,184,0,0,69,88,184,0,25,47,27,185,0,25,0,9,62,89,184,0,0,69,88,184,0,42,47,27,185,0,42,0,5,62,89,184,0,0,69,88,184,0,35,47,27,185,0,35,0,5,62,89,187,0,20,0,2,0,40,0,4,43,184,0,35,16,185,0,0,0,1,244,184,0,25,16,185,0,10,0,1,244,48,49,37,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,39,62,3,51,50,30,2,21,20,14,2,35,34,46,2,39,35,21,35,17,51,21,1,206,35,57,41,23,23,41,57,35,35,59,42,24,24,42,59,167,4,34,54,70,41,42,73,55,31,31,55,73,42,42,73,55,33,1,123,44,44,27,31,56,78,47,48,78,57,31,31,57,78,48,47,78,56,31,242,53,83,57,30,34,64,95,60,60,93,64,34,33,61,89,57,228,1,224,211,0,2,0,42,0,0,1,148,1,224,0,8,0,25,0,75,0,184,0,0,69,88,184,0,9,47,27,185,0,9,0,9,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,5,62,89,187,0,8,0,1,0,12,0,4,43,184,0,9,16,185,0,0,0,1,244,184,0,15,16,184,0,10,208,186,0,17,0,12,0,8,17,18,57,48,49,1,35,34,6,21,20,22,59,1,55,17,35,53,43,1,7,35,55,46,1,53,52,62,2,51,1,104,93,68,79,79,68,93,44,44,110,1,155,52,161,55,74,27,48,67,40,1,187,45,51,51,50,234,254,32,209,209,213,9,65,61,36,51,31,14,255,255,0,52,255,244,1,189,2,242,2,38,0,34,0,0,0,7,7,33,1,5,0,0,255,255,0,52,255,244,1,189,2,160,2,38,0,34,0,0,0,7,7,53,1,5,0,0,0,1,0,15,255,27,1,222,2,207,0,44,0,126,0,184,0,0,69,88,184,0,38,47,27,185,0,38,0,19,62,89,184,0,0,69,88,184,0,33,47,27,185,0,33,0,5,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,7,62,89,184,0,38,16,184,0,37,220,184,0,34,220,184,0,3,220,186,0,0,0,3,0,33,17,18,57,184,0,11,16,185,0,18,0,1,244,184,0,3,16,185,0,28,0,1,244,184,0,0,16,185,0,31,0,1,244,184,0,37,16,184,0,41,208,184,0,34,16,184,0,42,208,48,49,19,62,1,51,50,22,21,20,14,2,35,34,38,39,55,30,1,51,50,62,2,53,52,46,2,35,34,6,7,17,35,17,35,53,55,53,51,21,51,21,35,21,134,38,79,50,85,92,26,48,70,43,14,28,9,10,8,22,11,30,52,37,21,17,35,52,35,41,70,45,44,77,77,44,190,190,1,118,38,46,136,156,117,152,90,36,7,5,36,3,7,32,79,137,105,70,97,61,28,41,45,254,180,2,69,29,4,105,105,33,104,0,255,255,0,92,0,0,1,117,2,244,2,38,3,231,0,0,0,7,7,36,0,249,0,2,0,1,0,52,255,244,1,167,1,236,0,32,0,67,0,184,0,0,69,88,184,0,13,47,27,185,0,13,0,9,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,5,62,89,187,0,24,0,1,0,25,0,4,43,184,0,13,16,185,0,20,0,1,244,184,0,3,16,185,0,29,0,1,244,48,49,37,14,1,35,34,46,2,53,52,62,2,51,50,22,23,7,46,1,35,34,6,7,33,21,33,30,1,51,50,54,55,1,167,31,76,46,47,80,58,33,35,60,79,45,49,67,25,25,24,56,36,69,96,8,1,2,254,253,2,92,81,38,66,25,51,27,36,31,63,94,63,64,95,63,31,36,23,30,22,29,95,89,36,101,107,33,23,255,255,0,32,255,244,1,114,1,236,2,6,0,48,0,0,255,255,0,75,0,0,0,155,2,163,2,6,0,38,0,0,255,255,255,244,0,0,0,240,2,160,2,38,1,73,0,0,0,6,7,53,114,0,0,0,0,3,0,21,0,0,0,210,2,159,0,11,0,23,0,27,0,65,0,184,0,0,69,88,184,0,24,47,27,185,0,24,0,9,62,89,184,0,0,69,88,184,0,27,47,27,185,0,27,0,5,62,89,184,0,24,16,184,0,0,220,184,0,6,220,184,0,0,16,184,0,12,208,184,0,6,16,184,0,18,208,48,49,19,34,38,53,52,54,51,50,22,21,20,6,51,34,38,53,52,54,51,50,22,21,20,6,7,51,17,35,57,15,21,21,15,15,21,21,102,15,20,20,15,16,20,20,97,44,44,2,86,21,16,15,21,21,15,16,21,21,16,15,21,21,15,16,21,118,254,32,0,255,255,255,223,255,27,0,156,2,163,2,6,0,39,0,0,0,2,0,15,255,244,2,151,1,224,0,8,0,40,0,85,0,184,0,0,69,88,184,0,38,47,27,185,0,38,0,9,62,89,184,0,0,69,88,184,0,26,47,27,185,0,26,0,5,62,89,187,0,40,0,1,0,7,0,4,43,184,0,26,16,184,0,16,208,184,0,16,47,185,0,0,0,1,244,184,0,38,16,185,0,17,0,1,244,184,0,26,16,185,0,32,0,2,244,48,49,37,50,54,53,52,38,43,1,21,55,50,22,21,20,6,43,1,17,35,14,1,7,14,3,35,34,39,55,30,1,51,50,54,55,62,1,55,51,21,1,215,75,72,72,75,69,79,85,97,97,85,123,170,4,10,10,6,23,30,36,19,20,15,10,5,9,6,27,41,9,12,11,3,254,38,51,57,56,49,213,251,71,72,73,73,1,186,70,154,77,41,57,38,17,7,42,2,2,57,63,81,162,84,191,0,0,0,0,2,0,92,0,0,2,184,1,224,0,8,0,27,0,79,0,184,0,0,69,88,184,0,21,47,27,185,0,21,0,9,62,89,184,0,0,69,88,184,0,20,47,27,185,0,20,0,5,62,89,187,0,18,0,2,0,23,0,4,43,187,0,7,0,1,0,27,0,4,43,184,0,20,16,184,0,16,208,185,0,0,0,1,244,184,0,21,16,184,0,25,208,48,49,37,50,54,53,52,38,43,1,21,55,50,22,21,20,6,43,1,53,35,21,35,17,51,21,51,53,51,21,1,248,75,72,72,75,69,79,85,97,97,85,123,255,44,44,255,44,38,51,57,56,49,213,251,71,72,73,73,232,232,1,224,208,208,191,0,255,255,0,15,0,0,1,191,2,207,2,6,1,60,0,0,255,255,0,92,0,0,1,198,2,244,2,38,3,240,0,0,0,7,7,36,1,10,0,2,0,2,0,92,255,244,1,213,2,244,0,3,0,38,0,101,0,184,0,0,69,88,184,0,21,47,27,185,0,21,0,9,62,89,184,0,0,69,88,184,0,23,47,27,185,0,23,0,9,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,5,62,89,187,0,17,0,1,0,10,0,4,43,184,0,21,16,185,0,27,0,2,244,184,0,6,16,185,0,35,0,2,244,48,49,19,39,55,23,19,6,35,34,38,47,1,35,21,35,17,51,21,51,55,62,1,51,50,23,7,38,34,35,34,6,15,1,23,30,1,51,58,1,55,237,24,134,34,88,10,16,27,44,23,93,120,44,44,119,65,20,46,33,12,10,10,5,3,6,21,28,13,65,94,16,26,17,5,7,5,2,64,23,157,29,253,33,4,26,44,173,231,1,224,210,145,44,33,4,43,2,20,28,149,173,29,15,2,0,2,0,92,0,0,1,198,2,244,0,3,0,16,0,13,0,187,0,7,0,1,0,13,0,4,43,48,49,19,55,23,15,1,51,21,51,55,51,7,23,35,39,35,21,35,213,134,34,144,145,44,116,142,50,154,164,50,147,121,44,2,87,157,29,151,96,210,210,226,254,231,231,0,0,0,255,255,0,92,0,0,1,206,2,244,2,38,3,238,0,0,0,7,7,33,1,23,0,2,255,255,0,12,255,37,1,168,2,206,2,38,0,54,0,0,0,7,7,48,0,229,0,0,0,1,0,92,255,84,1,198,1,224,0,11,0,65,0,125,184,0,3,47,24,184,0,0,69,88,184,0,6,47,27,185,0,6,0,9,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,184,0,0,208,184,0,5,16,185,0,8,0,1,244,184,0,6,16,184,0,10,208,48,49,33,35,7,35,39,35,17,51,17,33,17,51,1,198,157,5,37,2,161,44,1,18,44,172,172,1,224,254,71,1,185,0,0,0,2,0,26,0,0,2,5,2,107,0,18,0,27,0,66,0,184,0,0,69,88,184,0,18,47,27,185,0,18,0,5,62,89,187,0,1,0,1,0,2,0,4,43,187,0,26,0,1,0,10,0,4,43,184,0,2,16,184,0,7,208,184,0,1,16,184,0,8,208,184,0,18,16,185,0,19,0,1,244,48,49,19,35,53,51,53,51,21,51,21,35,21,51,50,22,21,20,6,43,1,55,50,54,53,52,38,43,1,21,191,165,165,44,200,200,99,85,98,98,85,143,134,75,71,71,75,90,1,191,39,133,133,39,158,71,72,73,73,38,51,57,56,49,213,0,0,0,255,255,0,52,255,244,1,227,1,236,2,6,1,230,0,0,0,1,0,12,0,0,1,210,1,236,0,24,0,69,0,184,0,0,69,88,184,0,13,47,27,185,0,13,0,9,62,89,184,0,0,69,88,184,0,24,47,27,185,0,24,0,5,62,89,184,0,13,16,184,0,0,208,184,0,0,47,186,0,5,0,13,0,24,17,18,57,184,0,13,16,185,0,19,0,2,244,48,49,19,51,19,30,1,23,51,62,1,63,1,62,1,51,50,23,7,46,1,35,34,6,7,3,35,12,48,108,11,28,11,4,11,21,11,64,19,43,40,18,17,12,5,10,8,21,26,14,121,57,1,224,254,211,35,70,33,33,70,35,194,61,58,8,43,2,4,38,42,254,145,0,0,0,1,0,92,0,0,1,132,2,140,0,7,0,47,0,184,0,0,69,88,184,0,5,47,27,185,0,5,0,9,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,5,62,89,184,0,5,16,185,0,1,0,1,244,48,49,1,7,35,17,35,17,51,55,1,132,8,244,44,247,13,2,140,210,254,70,1,224,172,0,1,0,33,0,0,1,124,1,224,0,13,0,73,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,9,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,5,62,89,187,0,10,0,1,0,7,0,4,43,184,0,10,16,184,0,2,208,184,0,7,16,184,0,3,208,184,0,11,16,185,0,13,0,1,244,48,49,19,21,51,21,35,21,35,53,35,53,55,53,33,21,143,141,141,44,66,66,1,25,1,186,185,33,224,224,29,4,223,38,0,0,1,0,17,255,84,2,132,1,236,0,52,0,145,0,125,184,0,3,47,24,184,0,0,69,88,184,0,26,47,27,185,0,26,0,9,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,187,0,30,0,1,0,11,0,4,43,184,0,13,16,184,0,9,208,184,0,5,208,185,0,0,0,1,244,184,0,11,16,184,0,6,208,186,0,14,0,30,0,11,17,18,57,184,0,26,16,185,0,20,0,2,244,184,0,26,16,184,0,32,208,184,0,32,47,184,0,30,16,184,0,35,208,184,0,26,16,184,0,39,208,184,0,20,16,184,0,45,208,186,0,51,0,6,0,35,17,18,57,48,49,37,21,7,35,53,35,39,35,21,35,53,35,7,35,19,39,46,3,35,42,1,7,39,54,51,50,22,31,1,51,53,51,21,51,55,62,1,51,50,23,7,38,34,35,34,14,2,15,1,23,2,132,5,38,33,132,99,40,99,132,49,150,45,10,18,18,19,9,5,5,5,10,10,13,31,54,25,47,94,40,93,48,24,54,32,12,10,9,5,5,5,10,18,18,18,10,45,127,39,26,185,172,231,231,231,231,1,1,114,24,30,17,5,2,43,4,43,61,118,210,210,118,61,43,4,43,2,5,17,30,24,115,217,0,1,255,250,255,84,2,132,1,236,0,74,0,184,0,184,0,0,69,88,184,0,39,47,27,185,0,39,0,9,62,89,184,0,0,69,88,184,0,41,47,27,185,0,41,0,9,62,89,184,0,0,69,88,184,0,58,47,27,185,0,58,0,9,62,89,184,0,0,69,88,184,0,60,47,27,185,0,60,0,9,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,5,62,89,184,0,0,69,88,184,0,21,47,27,185,0,21,0,5,62,89,187,0,52,0,1,0,8,0,4,43,184,0,4,16,185,0,0,0,2,244,184,0,8,16,184,0,12,208,184,0,0,16,184,0,25,208,184,0,41,16,185,0,35,0,2,244,184,0,52,16,184,0,47,208,184,0,35,16,184,0,64,208,48,49,37,21,7,35,53,46,1,47,1,35,21,35,53,35,7,14,3,35,34,39,55,22,50,51,50,54,63,1,39,46,3,35,42,1,7,39,54,51,50,30,2,31,1,51,53,51,21,51,55,62,3,51,50,23,7,38,34,35,34,14,2,15,1,23,30,1,23,2,132,5,38,24,46,29,74,91,40,91,74,17,29,28,27,14,13,10,10,5,5,5,16,35,26,76,50,11,18,18,18,10,5,4,5,10,10,12,16,28,27,26,14,50,91,40,91,50,13,26,27,28,16,13,10,10,5,5,5,10,17,18,19,10,51,77,17,26,11,39,26,185,161,5,44,54,139,231,231,139,32,40,23,9,4,43,2,28,48,142,120,25,30,16,5,2,43,4,8,23,41,32,118,210,210,118,32,41,23,8,4,43,2,5,16,30,25,120,142,32,31,7,0,1,0,18,255,84,2,132,1,224,0,26,0,90,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,187,0,22,0,1,0,6,0,4,43,184,0,4,16,185,0,0,0,1,244,184,0,6,16,184,0,10,208,184,0,22,16,184,0,17,208,48,49,37,21,7,35,53,35,39,35,21,35,53,35,7,35,55,39,51,23,51,53,51,21,51,55,51,7,23,2,132,5,38,33,147,82,43,82,146,50,163,153,50,141,77,43,78,140,51,154,139,39,26,185,172,231,231,231,231,254,226,210,210,210,210,226,215,0,0,0,0,1,0,42,255,84,1,146,1,236,0,52,0,81,0,125,184,0,12,47,24,184,0,0,69,88,184,0,44,47,27,185,0,44,0,9,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,187,0,31,0,1,0,28,0,4,43,184,0,13,16,184,0,10,208,184,0,13,16,185,0,20,0,1,244,184,0,44,16,185,0,37,0,1,244,48,49,37,30,3,21,20,14,2,15,1,35,39,46,1,39,55,30,1,51,50,62,2,53,52,38,43,1,53,51,50,54,53,52,38,35,34,6,7,39,62,1,51,50,30,2,21,20,6,7,1,42,21,37,29,17,25,44,59,34,5,36,2,43,77,35,23,35,75,43,28,50,38,22,80,72,60,47,72,72,67,49,48,63,30,23,32,78,55,33,58,43,26,45,37,253,5,20,30,41,27,30,49,37,22,3,161,161,2,29,31,31,32,24,15,27,40,24,51,51,36,51,43,47,43,26,22,31,23,32,16,31,46,31,39,56,16,0,0,0,1,0,92,255,84,1,225,1,236,0,32,0,101,0,184,0,0,69,88,184,0,19,47,27,185,0,19,0,9,62,89,184,0,0,69,88,184,0,21,47,27,185,0,21,0,9,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,187,0,13,0,1,0,6,0,4,43,184,0,4,16,185,0,0,0,1,244,184,0,19,16,185,0,25,0,2,244,48,49,37,21,7,35,53,35,39,35,21,35,17,51,21,51,55,62,3,51,50,23,7,38,34,35,34,14,2,15,1,23,1,225,5,38,34,147,121,44,44,120,50,13,26,27,28,16,13,10,10,5,5,5,9,18,18,19,10,50,139,39,26,185,172,231,231,1,224,210,118,32,41,23,8,4,43,2,5,16,30,25,118,214,0,0,0,0,1,0,92,255,84,1,225,1,236,0,33,0,84,0,184,0,0,69,88,184,0,19,47,27,185,0,19,0,9,62,89,184,0,0,69,88,184,0,21,47,27,185,0,21,0,9,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,187,0,15,0,1,0,8,0,4,43,184,0,4,16,185,0,0,0,2,244,184,0,19,16,185,0,25,0,2,244,48,49,37,21,7,35,53,46,1,47,1,35,21,35,17,51,21,51,55,62,1,51,50,23,7,38,34,35,34,6,15,1,23,30,1,23,1,225,5,38,26,40,23,93,120,44,44,119,65,20,46,33,12,10,10,5,3,6,21,28,13,65,94,9,15,8,39,26,185,160,1,27,42,173,231,1,224,210,145,44,33,4,43,2,20,28,149,173,16,17,5,0,0,1,0,92,255,84,1,225,1,224,0,17,0,57,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,187,0,13,0,1,0,6,0,4,43,184,0,4,16,185,0,0,0,1,244,48,49,37,21,7,35,53,35,39,35,21,35,17,51,21,51,55,51,7,23,1,225,5,38,34,147,121,44,44,116,142,50,154,139,39,26,185,172,231,231,1,224,210,210,226,215,0,0,1,0,26,0,0,2,61,1,236,0,29,0,93,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,9,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,187,0,10,0,1,0,3,0,4,43,184,0,5,16,184,0,1,208,184,0,8,16,185,0,6,0,1,244,184,0,8,16,184,0,17,208,184,0,17,47,185,0,23,0,2,244,186,0,29,0,10,0,3,17,18,57,48,49,33,35,39,35,21,35,17,35,53,51,21,51,55,62,3,51,50,23,7,38,34,35,34,14,2,15,1,2,61,50,147,121,44,185,229,120,50,13,26,27,28,16,13,10,10,5,5,5,10,17,18,19,10,50,231,231,1,186,38,210,118,32,41,23,8,4,43,2,5,16,30,25,118,0,1,0,26,255,244,2,76,1,236,0,36,0,115,0,184,0,0,69,88,184,0,19,47,27,185,0,19,0,9,62,89,184,0,0,69,88,184,0,21,47,27,185,0,21,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,187,0,15,0,1,0,6,0,4,43,184,0,19,16,185,0,10,0,2,244,185,0,13,0,1,244,184,0,10,16,184,0,25,208,184,0,2,16,185,0,33,0,2,244,48,49,5,6,35,34,38,47,1,35,21,35,17,35,53,51,21,51,55,62,1,51,50,23,7,38,34,35,34,6,15,1,23,30,1,51,58,1,55,2,76,10,16,27,44,23,93,120,44,185,229,119,65,20,46,33,12,10,10,5,3,6,21,28,13,65,94,16,26,17,5,7,5,8,4,26,44,173,231,1,186,38,210,145,44,33,4,43,2,20,28,149,173,29,15,2,0,0,1,0,26,0,0,2,61,1,224,0,14,0,31,0,187,0,9,0,1,0,6,0,4,43,187,0,11,0,1,0,2,0,4,43,184,0,9,16,184,0,12,208,48,49,33,35,39,35,21,35,17,35,53,51,21,51,55,51,7,2,61,50,147,121,44,185,229,116,142,50,154,231,231,1,186,38,210,210,226,0,1,0,92,255,84,2,12,1,224,0,16,0,75,0,125,184,0,3,47,24,184,0,0,69,88,184,0,10,47,27,185,0,10,0,9,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,5,62,89,187,0,12,0,2,0,7,0,4,43,184,0,9,16,184,0,5,208,185,0,0,0,1,244,184,0,10,16,184,0,14,208,48,49,37,21,7,35,53,35,53,33,21,35,17,51,21,33,53,51,17,2,12,5,38,67,254,234,44,44,1,22,44,39,26,185,172,232,232,1,224,208,208,254,71,0,0,0,1,0,52,255,84,1,167,1,236,0,36,0,67,0,125,184,0,5,47,24,184,0,0,69,88,184,0,16,47,27,185,0,16,0,9,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,5,62,89,184,0,3,208,184,0,16,16,185,0,23,0,1,244,184,0,6,16,185,0,33,0,1,244,48,49,37,14,1,15,1,35,39,46,3,53,52,62,2,51,50,22,23,7,46,1,35,34,14,2,21,20,30,2,51,50,54,55,1,167,28,67,40,5,36,2,42,70,52,29,36,60,79,44,50,66,25,26,23,56,35,37,63,47,27,25,45,65,39,38,65,25,51,24,34,4,161,161,4,38,64,88,56,60,95,64,34,36,23,31,22,29,31,57,78,48,47,78,56,31,32,23,0,0,0,0,1,0,12,255,39,1,166,1,224,0,15,0,80,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,9,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,7,62,89,186,0,6,0,1,0,15,17,18,57,184,0,1,16,184,0,11,208,184,0,0,16,184,0,13,208,48,49,51,3,51,19,30,1,23,51,62,1,55,19,51,3,21,35,197,185,48,108,11,26,11,4,12,26,11,108,45,181,44,1,224,254,220,35,70,32,32,70,35,1,36,254,32,217,0,1,0,12,255,39,1,166,1,224,0,22,0,88,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,9,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,7,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,184,0,10,208,184,0,1,208,184,0,7,16,184,0,2,208,186,0,16,0,11,0,5,17,18,57,184,0,11,16,184,0,21,208,48,49,55,51,21,35,21,35,53,35,53,55,51,3,51,19,30,1,23,51,62,1,55,19,51,253,135,147,44,151,78,60,172,48,108,11,26,11,4,12,26,11,108,45,33,33,217,217,29,4,1,191,254,220,35,70,32,32,70,35,1,36,0,0,0,1,0,14,255,84,1,162,1,224,0,30,0,101,0,125,184,0,3,47,24,184,0,0,69,88,184,0,17,47,27,185,0,17,0,9,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,5,62,89,184,0,5,208,185,0,0,0,1,244,184,0,17,16,184,0,27,208,186,0,9,0,5,0,27,17,18,57,186,0,22,0,17,0,15,17,18,57,186,0,16,0,22,0,9,17,18,57,186,0,29,0,9,0,22,17,18,57,48,49,37,21,7,35,53,35,39,46,1,39,35,14,1,15,1,35,55,39,51,23,30,1,23,51,62,1,63,1,51,7,23,1,162,5,38,31,85,14,28,15,4,14,27,14,82,47,163,150,49,78,12,25,14,4,13,23,13,75,46,149,137,39,26,185,172,131,23,44,21,21,44,23,131,251,229,122,20,39,20,20,39,20,122,233,208,0,1,0,66,255,84,1,208,1,224,0,26,0,69,0,184,0,3,47,184,0,0,69,88,184,0,15,47,27,185,0,15,0,9,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,187,0,20,0,1,0,11,0,4,43,184,0,5,16,185,0,0,0,1,244,184,0,15,16,184,0,25,208,48,49,37,21,7,35,53,35,53,14,3,35,34,38,61,1,51,21,20,22,51,50,54,55,53,51,17,1,208,5,38,67,15,22,22,24,17,94,94,44,73,78,26,41,26,44,39,26,185,172,209,3,5,3,1,72,84,127,127,63,54,5,6,233,254,71,0,255,255,0,92,0,0,1,191,2,207,2,6,0,37,0,0,255,255,0,17,0,0,2,105,2,206,2,38,3,234,0,0,0,7,7,48,1,62,0,0,0,2,255,250,255,244,2,127,2,206,0,21,0,101,0,211,0,184,0,0,69,88,184,0,61,47,27,185,0,61,0,9,62,89,184,0,0,69,88,184,0,63,47,27,185,0,63,0,9,62,89,184,0,0,69,88,184,0,80,47,27,185,0,80,0,9,62,89,184,0,0,69,88,184,0,82,47,27,185,0,82,0,9,62,89,184,0,0,69,88,184,0,22,47,27,185,0,22,0,5,62,89,184,0,0,69,88,184,0,24,47,27,185,0,24,0,5,62,89,184,0,0,69,88,184,0,41,47,27,185,0,41,0,5,62,89,184,0,0,69,88,184,0,43,47,27,185,0,43,0,5,62,89,187,0,16,0,1,0,5,0,4,43,187,0,74,0,1,0,30,0,4,43,184,0,30,16,184,0,34,208,184,0,41,16,185,0,47,0,2,244,184,0,63,16,185,0,57,0,2,244,184,0,74,16,184,0,69,208,184,0,57,16,184,0,86,208,184,0,47,16,184,0,98,208,48,49,1,14,3,35,34,46,2,39,51,30,3,51,50,62,2,55,19,6,35,34,46,2,47,1,35,21,35,53,35,7,14,3,35,34,39,55,22,50,51,50,54,63,1,39,46,3,35,42,1,7,39,54,51,50,30,2,31,1,51,53,51,21,51,55,62,3,51,50,23,7,38,34,35,34,14,2,15,1,23,30,3,51,58,1,55,1,209,2,15,33,55,42,42,55,33,16,1,40,1,11,25,40,30,30,40,25,11,1,214,10,12,15,27,27,30,16,74,91,40,91,74,17,29,28,27,14,13,10,10,5,5,5,16,35,26,76,50,11,18,18,18,10,5,4,5,10,10,12,16,28,27,26,14,50,91,40,91,50,13,26,27,28,16,13,10,10,5,5,5,10,17,18,19,10,51,77,13,21,18,17,8,5,4,5,2,206,24,52,42,28,28,42,52,24,21,42,32,20,20,32,42,21,253,42,4,9,23,40,32,139,231,231,139,32,40,23,9,4,43,2,28,48,142,120,25,30,16,5,2,43,4,8,23,41,32,118,210,210,118,32,41,23,8,4,43,2,5,16,30,25,120,142,24,30,16,6,2,0,2,0,18,0,0,2,106,2,206,0,21,0,43,0,39,0,187,0,11,0,1,0,0,0,4,43,187,0,30,0,1,0,36,0,4,43,184,0,30,16,184,0,25,208,184,0,36,16,184,0,40,208,48,49,1,34,46,2,39,51,30,3,51,50,62,2,55,51,14,3,3,39,51,23,51,53,51,21,51,55,51,7,23,35,39,35,21,35,53,35,7,35,1,62,42,55,33,16,1,40,1,11,25,40,30,30,40,25,11,1,40,2,15,33,55,179,153,50,141,77,43,78,140,51,154,164,50,147,82,43,82,146,50,2,60,28,42,52,24,21,42,32,20,20,32,42,21,24,52,42,28,254,194,226,210,210,210,210,226,254,231,231,231,231,0,0,0,255,255,0,92,255,244,0,183,2,207,2,6,0,41,0,0,255,255,0,58,255,244,1,156,2,206,2,38,0,30,0,0,0,7,7,48,0,254,0,0,255,255,0,65,255,244,2,234,1,236,2,6,1,16,0,0,255,255,0,52,255,244,1,189,2,206,2,38,0,34,0,0,0,7,7,48,1,5,0,0,255,255,0,38,255,244,1,175,1,236,2,6,1,202,0,0,255,255,0,92,0,0,1,206,2,132,2,38,3,238,0,0,0,7,7,43,1,22,0,2,255,255,0,52,255,244,1,227,2,160,2,38,0,44,0,0,0,7,7,53,1,11,0,0,255,255,0,52,255,244,1,227,1,236,2,6,1,230,0,0,255,255,0,12,255,37,1,168,2,130,2,38,0,54,0,0,0,7,7,43,0,229,0,0,255,255,0,12,255,37,1,168,2,238,2,38,0,54,0,0,0,7,7,59,0,229,0,0,0,2,0,52,255,244,1,208,2,218,0,17,0,64,0,81,0,184,0,0,69,88,184,0,59,47,27,185,0,59,0,19,62,89,184,0,0,69,88,184,0,41,47,27,185,0,41,0,5,62,89,185,0,0,0,1,244,186,0,10,0,59,0,41,17,18,57,184,0,59,16,185,0,21,0,2,244,184,0,10,16,185,0,31,0,1,244,184,0,10,16,184,0,49,208,48,49,55,50,62,2,53,52,46,2,39,14,1,21,20,30,2,19,14,1,7,14,3,21,20,30,2,23,30,3,21,20,14,2,35,34,46,2,53,52,54,55,46,3,53,52,62,2,55,62,3,55,254,41,61,41,20,18,33,45,26,95,103,26,43,57,241,20,46,29,54,80,54,26,26,41,53,27,34,58,43,25,29,54,77,48,38,73,57,34,112,98,28,54,43,27,33,63,91,57,22,29,21,17,11,27,30,52,70,40,35,56,47,40,20,23,113,81,38,63,46,26,2,147,11,11,4,8,8,14,23,23,15,27,27,30,20,25,48,57,69,46,51,85,62,34,29,55,78,49,96,116,31,19,35,34,35,20,36,40,22,12,9,3,5,6,7,5,0,0,4,0,67,255,244,3,70,2,139,0,44,0,64,0,76,0,80,0,135,0,184,0,0,69,88,184,0,23,47,27,185,0,23,0,15,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,187,0,77,0,1,0,80,0,4,43,187,0,71,0,1,0,55,0,4,43,184,0,0,16,185,0,4,0,1,244,184,0,23,16,184,0,8,208,184,0,8,47,184,0,0,16,184,0,32,208,184,0,32,47,186,0,13,0,32,0,23,17,18,57,184,0,23,16,185,0,27,0,1,244,186,0,36,0,8,0,0,17,18,57,184,0,77,16,184,0,45,220,185,0,65,0,1,244,48,49,23,42,1,47,1,50,54,53,17,51,30,1,31,1,51,46,2,52,61,1,52,54,51,58,1,31,1,34,6,21,17,35,46,1,47,1,35,30,2,20,29,1,20,1,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,39,50,54,53,52,38,35,34,6,21,20,22,7,51,21,35,87,5,5,5,5,14,17,51,49,94,47,73,4,3,2,1,26,27,5,6,5,5,15,16,52,48,94,47,74,4,3,2,1,2,39,30,54,40,23,23,40,54,30,30,54,40,23,23,40,54,30,48,58,58,48,48,58,58,75,246,246,12,2,37,17,23,2,60,103,206,104,164,48,79,73,73,42,195,42,37,2,37,17,23,253,196,105,204,106,163,49,79,73,72,42,196,79,1,36,22,40,59,37,38,58,40,21,21,40,58,38,37,59,40,22,34,68,56,57,66,66,57,56,68,118,34,0,3,0,36,255,244,2,50,2,159,0,15,0,31,0,76,0,140,0,184,0,0,69,88,184,0,55,47,27,185,0,55,0,17,62,89,184,0,0,69,88,184,0,37,47,27,185,0,37,0,5,62,89,184,0,0,69,88,184,0,32,47,27,185,0,32,0,5,62,89,186,0,66,0,34,0,3,43,184,0,37,16,185,0,3,0,1,244,186,0,6,0,34,0,66,17,18,57,186,0,11,0,37,0,55,17,18,57,184,0,11,47,184,0,19,220,184,0,55,16,185,0,29,0,1,244,186,0,47,0,11,0,19,17,18,57,186,0,63,0,11,0,19,17,18,57,186,0,73,0,34,0,66,17,18,57,48,49,55,50,54,55,46,1,39,14,3,21,20,30,2,3,20,22,23,62,3,53,52,46,2,35,34,6,1,38,39,14,1,35,34,46,2,53,52,62,2,55,46,1,53,52,62,2,51,50,22,21,20,14,2,7,30,1,23,62,1,55,51,14,1,7,30,1,23,230,41,74,31,53,99,35,22,39,30,17,24,40,55,32,20,17,25,46,36,21,8,17,27,20,44,49,1,123,65,76,36,88,56,39,70,51,30,23,37,49,26,20,24,20,36,50,30,54,56,26,43,55,28,35,97,51,35,52,17,43,20,57,40,35,64,29,26,39,32,48,120,64,17,36,39,43,24,33,53,37,21,1,244,33,71,36,18,36,40,43,26,16,31,24,15,64,253,185,23,60,37,46,25,47,66,41,33,54,47,41,19,42,83,38,32,54,39,22,68,52,32,54,47,43,21,63,118,45,45,109,63,68,123,51,28,37,11,0,0,2,0,48,255,244,1,174,2,139,0,11,0,23,0,53,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,15,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,12,0,1,244,184,0,6,16,185,0,18,0,1,244,48,49,23,34,38,53,52,54,51,50,22,21,20,6,39,50,54,53,52,38,35,34,6,21,20,22,239,92,99,99,92,92,99,99,92,67,79,79,67,66,80,80,12,173,161,160,169,169,160,161,173,38,149,147,147,144,144,147,147,149,0,0,1,0,84,0,0,1,162,2,127,0,12,0,67,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,15,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,185,0,1,0,1,244,184,0,7,16,185,0,4,0,1,244,185,0,2,0,1,244,184,0,1,16,184,0,9,208,48,49,55,51,17,35,53,62,1,55,51,17,51,21,33,84,150,114,39,61,23,36,139,254,178,39,2,18,30,7,20,13,253,168,39,0,0,0,1,0,39,0,0,1,177,2,139,0,29,0,65,0,184,0,0,69,88,184,0,15,47,27,185,0,15,0,15,62,89,184,0,0,69,88,184,0,28,47,27,185,0,28,0,5,62,89,185,0,26,0,1,244,184,0,23,208,184,0,0,208,184,0,0,47,184,0,15,16,185,0,8,0,1,244,48,49,55,62,3,53,52,38,35,34,6,7,39,62,1,51,50,22,21,20,14,2,7,62,1,59,1,21,33,41,79,118,79,39,67,72,44,76,29,29,36,87,59,86,94,42,76,109,66,26,55,26,218,254,120,28,80,127,105,89,42,60,82,48,36,28,40,54,98,81,48,95,105,119,70,2,3,40,0,0,1,0,29,255,244,1,171,2,139,0,55,0,83,0,184,0,0,69,88,184,0,37,47,27,185,0,37,0,15,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,11,0,1,244,186,0,21,0,37,0,0,17,18,57,184,0,21,47,185,0,22,0,1,244,184,0,37,16,185,0,30,0,1,244,186,0,45,0,21,0,22,17,18,57,48,49,23,34,46,2,39,55,30,3,51,50,62,2,53,52,46,2,35,53,50,62,2,53,52,38,35,34,6,7,39,62,1,51,50,30,2,21,20,6,7,21,30,3,21,20,14,2,232,38,62,49,39,15,26,14,34,43,53,33,32,55,40,22,25,53,85,60,55,77,47,21,70,59,45,74,28,26,33,84,56,37,64,47,27,69,53,30,52,40,23,30,53,71,12,16,26,32,16,31,16,29,23,14,20,37,52,32,33,54,39,22,39,22,37,51,29,54,65,41,29,30,32,46,21,39,57,37,63,77,18,4,6,29,42,55,34,42,67,47,25,0,2,0,16,0,0,1,192,2,127,0,9,0,20,0,93,0,184,0,0,69,88,184,0,18,47,27,185,0,18,0,15,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,187,0,14,0,1,0,0,0,4,43,186,0,4,0,18,0,13,17,18,57,184,0,0,16,184,0,9,208,184,0,14,16,184,0,11,208,184,0,9,16,184,0,16,208,184,0,16,47,184,0,0,16,184,0,19,208,48,49,37,53,52,54,55,35,14,1,7,3,5,35,21,35,53,33,53,1,51,17,51,1,54,2,2,4,12,26,14,188,1]);fileData0.push.apply(fileData0,[122,95,43,254,218,1,41,40,95,229,234,22,66,22,20,38,22,254,248,38,191,191,26,1,166,254,102,0,0,1,0,26,255,244,1,175,2,127,0,40,0,77,0,184,0,0,69,88,184,0,24,47,27,185,0,24,0,15,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,11,0,1,244,186,0,19,0,24,0,0,17,18,57,184,0,19,47,184,0,24,16,185,0,26,0,1,244,184,0,19,16,185,0,31,0,1,244,48,49,23,34,46,2,39,55,30,3,51,50,62,2,53,52,38,35,34,6,7,39,19,33,21,35,7,62,1,51,50,30,2,21,20,14,2,227,38,61,49,38,15,25,14,34,42,52,33,32,58,43,26,84,72,37,53,29,31,23,1,39,255,20,25,54,35,40,72,52,31,35,57,73,12,15,25,31,15,31,15,28,22,13,25,45,63,39,78,87,23,20,19,1,43,39,231,15,19,24,49,77,52,51,79,55,28,0,2,0,52,255,244,1,180,2,139,0,17,0,48,0,67,0,184,0,0,69,88,184,0,45,47,27,185,0,45,0,15,62,89,184,0,0,69,88,184,0,37,47,27,185,0,37,0,5,62,89,187,0,29,0,1,0,10,0,4,43,184,0,37,16,185,0,0,0,1,244,184,0,45,16,185,0,21,0,1,244,48,49,37,50,62,2,53,52,46,2,35,34,6,7,30,3,19,46,1,35,34,14,2,7,62,1,51,50,22,21,20,14,2,35,34,38,53,52,62,2,51,50,22,23,1,6,28,47,34,20,16,33,53,36,34,82,39,3,23,40,59,172,21,56,31,38,68,52,31,1,33,83,45,85,93,28,48,63,36,97,112,39,65,85,46,45,65,25,26,25,44,59,34,34,59,43,24,43,53,51,83,59,33,2,21,26,27,32,74,121,88,41,48,101,97,44,73,53,30,156,146,100,138,86,37,34,28,0,1,0,44,0,0,1,181,2,127,0,15,0,55,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,15,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,7,16,185,0,5,0,1,244,184,0,9,208,184,0,9,47,48,49,51,62,3,55,33,53,33,21,14,3,7,35,188,4,25,46,70,48,254,175,1,137,57,75,45,20,4,48,97,161,143,131,68,39,26,76,140,145,158,94,0,0,0,0,3,0,40,255,244,1,181,2,139,0,41,0,59,0,77,0,77,0,184,0,0,69,88,184,0,21,47,27,185,0,21,0,15,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,186,0,42,0,0,0,21,17,18,57,184,0,21,16,185,0,50,0,1,244,184,0,0,16,185,0,60,0,1,244,186,0,70,0,21,0,0,17,18,57,48,49,23,34,46,2,53,52,62,2,55,53,46,3,53,52,62,2,51,50,30,2,21,20,14,2,7,21,30,3,21,20,14,2,19,62,1,53,52,46,2,35,34,14,2,21,20,30,2,3,50,62,2,53,52,46,2,39,14,1,21,20,30,2,243,44,74,54,31,23,37,45,23,18,33,25,16,26,45,61,35,41,64,45,23,18,27,32,14,21,40,31,20,28,51,72,4,41,43,18,33,49,31,27,45,33,18,29,48,61,15,34,55,39,21,33,55,70,37,49,64,24,42,58,12,27,47,64,38,32,56,45,35,12,4,12,29,37,43,26,34,58,41,23,25,45,61,36,26,49,42,34,11,4,13,30,38,50,32,35,61,45,26,1,91,33,73,42,27,47,36,21,18,31,44,26,34,49,37,28,254,190,20,36,48,27,37,51,39,29,15,29,79,53,30,51,38,22,0,0,2,0,43,255,244,1,170,2,139,0,17,0,48,0,67,0,184,0,0,69,88,184,0,37,47,27,185,0,37,0,15,62,89,184,0,0,69,88,184,0,45,47,27,185,0,45,0,5,62,89,187,0,0,0,1,0,29,0,4,43,184,0,37,16,185,0,8,0,1,244,184,0,45,16,185,0,21,0,1,244,48,49,19,50,54,55,46,3,35,34,14,2,21,20,30,2,7,30,1,51,50,62,2,55,14,1,35,34,38,53,52,62,2,51,50,22,21,20,14,2,35,34,38,39,226,34,83,38,3,23,41,59,39,27,48,34,20,16,34,52,106,21,56,32,38,68,52,31,1,33,84,45,84,93,28,48,63,36,96,112,39,64,86,46,45,66,24,1,35,44,53,51,83,59,32,25,43,59,34,35,59,43,24,211,26,27,32,74,121,88,40,48,101,97,43,74,52,30,155,146,101,138,85,38,34,28,0,0,3,0,48,255,244,1,174,2,139,0,11,0,23,0,35,0,71,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,15,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,12,0,1,244,184,0,6,16,185,0,18,0,1,244,186,0,24,0,6,0,0,17,18,57,184,0,24,16,184,0,30,220,48,49,23,34,38,53,52,54,51,50,22,21,20,6,39,50,54,53,52,38,35,34,6,21,20,22,55,34,38,53,52,54,51,50,22,21,20,6,239,92,99,99,92,92,99,99,92,68,79,79,68,67,80,80,67,21,33,33,21,21,34,34,12,173,161,160,169,169,160,161,173,38,150,146,146,145,145,146,146,150,241,31,29,29,31,31,29,29,31,0,3,0,48,255,244,1,174,2,139,0,7,0,17,0,29,0,93,0,184,0,0,69,88,184,0,18,47,27,185,0,18,0,15,62,89,184,0,0,69,88,184,0,24,47,27,185,0,24,0,5,62,89,186,0,0,0,24,0,18,17,18,57,185,0,5,0,1,244,186,0,7,0,24,0,18,17,18,57,186,0,8,0,24,0,18,17,18,57,184,0,18,16,185,0,14,0,1,244,186,0,17,0,18,0,24,17,18,57,48,49,19,6,21,20,22,51,50,63,1,62,1,53,52,38,35,34,6,7,55,50,22,21,20,6,35,34,38,53,52,54,109,17,80,67,79,39,13,8,8,80,67,38,60,19,117,92,99,99,92,92,99,99,1,222,65,91,147,150,100,41,32,77,47,147,145,48,48,133,169,160,161,173,173,161,160,169,0,0,2,0,56,255,244,1,202,2,139,0,11,0,23,0,53,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,15,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,12,0,1,244,184,0,6,16,185,0,18,0,1,244,48,49,5,34,38,53,52,54,51,50,22,21,20,6,39,50,54,53,52,38,35,34,6,21,20,22,1,1,97,104,104,97,97,104,104,97,71,84,84,71,72,83,83,12,174,160,159,170,170,159,160,174,39,149,146,146,144,144,146,146,149,0,1,0,57,0,0,0,216,2,127,0,8,0,53,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,15,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,184,0,6,16,185,0,2,0,1,244,185,0,0,0,1,244,48,49,19,35,53,62,1,55,51,17,35,172,115,40,60,23,36,44,2,57,30,7,20,13,253,129,0,0,1,0,39,0,0,1,176,2,139,0,31,0,65,0,184,0,0,69,88,184,0,17,47,27,185,0,17,0,15,62,89,184,0,0,69,88,184,0,30,47,27,185,0,30,0,5,62,89,185,0,28,0,1,244,184,0,25,208,184,0,0,208,184,0,0,47,184,0,17,16,185,0,10,0,1,244,48,49,55,62,3,53,52,46,2,35,34,6,7,39,62,1,51,50,22,21,20,14,2,7,62,1,59,1,21,33,42,78,118,79,39,16,34,53,36,44,76,29,29,39,87,57,85,94,41,77,108,66,26,55,26,216,254,122,28,80,127,105,89,42,30,52,38,22,48,36,28,43,51,98,81,48,95,105,119,70,2,3,40,255,255,0,29,255,244,1,171,2,139,2,6,4,68,0,0,255,255,0,32,0,0,1,208,2,127,0,6,4,69,16,0,255,255,0,26,255,244,1,175,2,127,2,6,4,70,0,0,255,255,0,63,255,244,1,191,2,139,0,6,4,71,11,0,0,1,0,44,0,0,1,167,2,127,0,15,0,55,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,15,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,7,16,185,0,5,0,1,244,184,0,9,208,184,0,9,47,48,49,51,62,3,55,33,53,33,21,14,3,7,35,178,4,24,45,68,48,254,189,1,123,57,73,43,20,4,48,97,161,143,131,68,39,26,76,140,145,158,94,0,0,0,255,255,0,57,255,244,1,198,2,139,0,6,4,73,17,0,255,255,0,52,255,244,1,179,2,139,0,6,4,74,9,0,0,3,0,56,255,244,1,202,2,139,0,11,0,23,0,35,0,71,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,15,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,12,0,1,244,184,0,6,16,185,0,18,0,1,244,186,0,24,0,6,0,0,17,18,57,184,0,24,16,184,0,30,220,48,49,5,34,38,53,52,54,51,50,22,21,20,6,39,50,54,53,52,38,35,34,6,21,20,22,55,34,38,53,52,54,51,50,22,21,20,6,1,1,97,104,104,97,97,104,104,97,72,84,84,72,72,84,84,72,21,34,34,21,21,33,33,12,174,160,159,170,170,159,160,174,39,149,146,146,144,144,146,146,149,240,31,29,29,31,31,29,29,31,0,0,0,0,3,0,56,255,244,1,202,2,139,0,7,0,15,0,27,0,93,0,184,0,0,69,88,184,0,16,47,27,185,0,16,0,15,62,89,184,0,0,69,88,184,0,22,47,27,185,0,22,0,5,62,89,186,0,0,0,22,0,16,17,18,57,185,0,5,0,1,244,186,0,7,0,22,0,16,17,18,57,186,0,8,0,22,0,16,17,18,57,184,0,16,16,185,0,13,0,1,244,186,0,15,0,16,0,22,17,18,57,48,49,19,6,21,20,22,51,50,63,1,54,53,52,38,35,34,7,55,50,22,21,20,6,35,34,38,53,52,54,118,18,85,72,85,41,13,18,85,72,84,42,126,97,104,104,97,97,104,104,1,224,65,93,147,150,100,38,64,95,147,145,96,133,170,159,160,174,174,160,159,170,0,0,0,0,2,0,48,255,244,1,174,2,71,0,11,0,23,0,53,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,13,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,12,0,1,244,184,0,6,16,185,0,18,0,1,244,48,49,23,34,38,53,52,54,51,50,22,21,20,6,39,50,54,53,52,38,35,34,6,21,20,22,239,89,102,102,89,90,101,102,89,68,78,78,68,67,79,79,12,147,151,151,146,146,151,151,147,38,135,125,125,134,134,125,125,135,0,0,1,0,84,0,0,1,162,2,59,0,12,0,67,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,13,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,185,0,1,0,1,244,184,0,7,16,185,0,4,0,1,244,185,0,2,0,1,244,184,0,1,16,184,0,9,208,48,49,55,51,17,35,53,62,1,55,51,17,51,21,33,84,150,114,39,61,23,36,139,254,178,39,1,205,31,6,21,13,253,236,39,0,0,0,1,0,39,0,0,1,177,2,69,0,31,0,65,0,184,0,0,69,88,184,0,17,47,27,185,0,17,0,13,62,89,184,0,0,69,88,184,0,30,47,27,185,0,30,0,5,62,89,185,0,28,0,1,244,184,0,25,208,184,0,0,208,184,0,0,47,184,0,17,16,185,0,10,0,1,244,48,49,55,62,3,53,52,46,2,35,34,6,7,39,62,1,51,50,22,21,20,14,2,7,62,1,59,1,21,33,41,78,118,78,40,16,34,52,36,44,76,29,29,36,87,59,85,95,43,77,105,62,27,55,26,211,254,120,28,66,106,88,76,38,30,51,38,22,48,36,27,41,54,97,81,44,82,88,97,57,2,3,40,0,1,0,29,255,173,1,171,2,71,0,55,0,70,0,184,0,0,69,88,184,0,37,47,27,185,0,37,0,13,62,89,187,0,11,0,1,0,0,0,4,43,186,0,21,0,37,0,0,17,18,57,184,0,21,47,185,0,22,0,1,244,184,0,37,16,185,0,30,0,1,244,186,0,45,0,22,0,21,17,18,57,48,49,23,34,46,2,39,55,30,3,51,50,62,2,53,52,46,2,35,53,50,62,2,53,52,38,35,34,6,7,39,62,1,51,50,30,2,21,20,6,7,21,30,3,21,20,14,2,232,38,62,49,39,15,26,14,34,43,53,33,32,55,40,22,25,53,85,60,55,77,47,21,70,59,45,74,28,26,33,84,56,37,64,47,27,69,53,30,52,40,23,30,53,71,83,16,26,32,16,31,16,29,23,14,20,38,52,32,33,54,39,22,39,22,38,51,29,54,65,40,30,31,32,46,21,40,57,37,63,78,18,4,6,28,43,56,34,42,67,47,25,0,0,2,0,16,255,185,1,192,2,59,0,9,0,20,0,72,0,184,0,0,69,88,184,0,18,47,27,185,0,18,0,13,62,89,187,0,0,0,1,0,14,0,4,43,186,0,4,0,18,0,13,17,18,57,184,0,0,16,184,0,9,208,184,0,14,16,184,0,11,208,184,0,9,16,184,0,16,208,184,0,0,16,184,0,19,208,48,49,37,53,52,54,55,35,14,1,7,3,5,35,21,35,53,33,53,1,51,17,51,1,54,2,2,4,12,26,14,188,1,122,95,43,254,218,1,41,40,95,140,254,23,62,22,22,45,22,254,240,39,172,172,27,1,187,254,81,0,0,0,1,0,26,255,173,1,175,2,59,0,40,0,60,0,184,0,0,69,88,184,0,24,47,27,185,0,24,0,13,62,89,187,0,11,0,1,0,0,0,4,43,186,0,19,0,24,0,0,17,18,57,184,0,24,16,185,0,27,0,1,244,184,0,19,16,185,0,31,0,1,244,48,49,23,34,46,2,39,55,30,3,51,50,62,2,53,52,38,35,34,6,7,39,19,33,21,35,7,62,1,51,50,30,2,21,20,14,2,227,38,61,49,38,15,25,14,34,42,52,33,32,58,43,26,84,72,37,53,29,31,23,1,39,255,20,25,54,35,40,72,52,31,35,57,73,83,15,25,31,16,30,15,28,22,13,25,46,63,39,78,87,23,19,19,1,44,40,231,14,19,24,49,77,52,51,80,55,28,0,255,255,0,54,255,244,1,182,2,139,2,6,4,71,2,0,0,1,0,44,255,185,1,181,2,59,0,15,0,34,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,13,62,89,185,0,5,0,1,244,184,0,9,208,184,0,9,47,48,49,23,62,3,55,33,53,33,21,14,3,7,35,188,4,25,46,70,48,254,175,1,137,57,75,45,20,4,48,71,97,161,144,132,68,40,27,76,141,146,158,94,0,0,0,255,255,0,40,255,244,1,181,2,139,2,6,4,73,0,0,0,2,0,33,255,173,1,171,2,71,0,17,0,47,0,50,0,184,0,0,69,88,184,0,36,47,27,185,0,36,0,13,62,89,187,0,20,0,1,0,44,0,4,43,187,0,0,0,1,0,28,0,4,43,184,0,36,16,185,0,8,0,1,244,48,49,55,50,54,55,46,3,35,34,14,2,21,20,30,2,7,22,51,50,62,2,55,14,1,35,34,38,53,52,62,2,51,50,22,21,20,14,2,35,34,38,39,219,38,85,40,2,22,41,61,40,30,51,37,21,15,34,54,99,48,68,36,65,50,32,2,33,86,49,89,92,30,50,67,37,99,111,37,63,84,46,46,67,27,206,44,54,54,89,63,35,26,47,62,36,36,62,45,25,198,52,31,71,115,84,41,47,106,99,45,77,56,31,159,144,99,139,86,39,32,27,0,0,255,255,0,56,255,244,1,182,2,71,0,6,4,89,8,0,0,1,0,57,0,0,0,216,2,59,0,8,0,53,0,184,0,0,69,88,184,0,5,47,27,185,0,5,0,13,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,184,0,5,16,185,0,2,0,1,244,185,0,0,0,1,244,48,49,19,35,53,62,1,55,51,17,35,172,115,40,60,23,36,44,1,244,31,6,21,13,253,197,0,0,1,0,46,0,0,1,175,2,69,0,31,0,65,0,184,0,0,69,88,184,0,17,47,27,185,0,17,0,13,62,89,184,0,0,69,88,184,0,30,47,27,185,0,30,0,5,62,89,185,0,28,0,1,244,184,0,25,208,184,0,0,208,184,0,0,47,184,0,17,16,185,0,10,0,1,244,48,49,55,62,3,53,52,46,2,35,34,6,7,39,62,1,51,50,22,21,20,14,2,7,62,1,59,1,21,33,49,78,115,76,37,15,33,51,36,44,72,29,29,36,83,59,85,91,41,73,103,61,26,55,26,202,254,130,28,66,106,88,76,38,30,51,38,22,48,36,27,40,55,97,81,44,82,88,97,57,2,3,40,255,255,0,29,255,173,1,171,2,71,2,6,4,92,0,0,255,255,0,24,255,185,1,200,2,59,0,6,4,93,8,0,255,255,0,26,255,173,1,175,2,59,2,6,4,94,0,0,255,255,0,62,255,244,1,190,2,139,0,6,4,71,10,0,0,1,0,44,255,185,1,167,2,59,0,15,0,34,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,13,62,89,185,0,5,0,1,244,184,0,9,208,184,0,9,47,48,49,23,62,3,55,33,53,33,21,14,3,7,35,177,4,25,45,68,48,254,189,1,123,57,73,44,20,4,48,71,97,161,144,132,68,40,27,76,141,145,159,94,0,0,0,255,255,0,48,255,244,1,189,2,139,0,6,4,73,8,0,255,255,0,41,255,173,1,179,2,71,0,6,4,98,8,0,0,2,0,48,255,244,1,174,2,159,0,11,0,23,0,53,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,12,0,1,244,184,0,6,16,185,0,18,0,1,244,48,49,23,34,38,53,52,54,51,50,22,21,20,6,39,50,54,53,52,38,35,34,6,21,20,22,239,89,102,102,89,89,102,101,90,67,79,79,67,66,80,80,12,170,174,172,167,167,172,175,169,38,154,152,149,152,152,149,152,154,0,0,1,0,84,0,0,1,162,2,147,0,12,0,67,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,17,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,185,0,0,0,1,244,184,0,7,16,185,0,4,0,1,244,185,0,2,0,1,244,184,0,0,16,184,0,10,208,48,49,55,51,17,35,53,62,1,55,51,17,51,21,33,84,150,114,39,61,23,36,139,254,178,39,2,37,31,6,21,13,253,148,39,0,0,0,1,0,39,0,0,1,177,2,159,0,31,0,65,0,184,0,0,69,88,184,0,17,47,27,185,0,17,0,17,62,89,184,0,0,69,88,184,0,30,47,27,185,0,30,0,5,62,89,185,0,28,0,1,244,184,0,25,208,184,0,0,208,184,0,0,47,184,0,17,16,185,0,10,0,1,244,48,49,55,62,3,53,52,46,2,35,34,6,7,39,62,1,51,50,22,21,20,14,2,7,62,1,59,1,21,33,41,85,120,75,35,16,35,52,36,44,76,29,29,36,87,59,86,94,39,75,107,67,27,55,26,212,254,120,28,73,127,111,98,45,31,55,41,23,47,36,27,41,54,103,85,53,106,109,117,63,2,3,40,0,1,0,29,255,244,1,171,2,160,0,55,0,83,0,184,0,0,69,88,184,0,37,47,27,185,0,37,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,11,0,1,244,186,0,21,0,37,0,0,17,18,57,184,0,21,16,185,0,22,0,1,244,184,0,37,16,185,0,30,0,1,244,186,0,46,0,21,0,22,17,18,57,48,49,23,34,46,2,39,55,30,3,51,50,62,2,53,52,46,2,35,53,50,62,2,53,52,38,39,14,1,7,39,62,1,55,50,30,2,21,20,6,7,21,30,3,21,20,14,2,232,38,62,49,39,15,26,14,34,43,53,33,32,55,40,22,25,53,85,60,55,77,47,21,70,59,45,74,28,26,33,84,56,37,64,47,27,69,53,30,52,40,23,30,53,71,12,16,26,32,16,31,16,29,23,14,21,38,55,33,34,56,40,22,39,23,39,53,30,56,66,1,1,40,29,31,32,45,1,22,41,59,37,66,81,17,4,6,29,44,57,35,43,69,48,26,0,0,2,0,16,0,0,1,192,2,147,0,9,0,20,0,85,0,184,0,0,69,88,184,0,17,47,27,185,0,17,0,17,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,187,0,0,0,1,0,14,0,4,43,186,0,4,0,17,0,13,17,18,57,184,0,14,16,184,0,10,208,184,0,0,16,184,0,16,208,184,0,16,47,184,0,0,16,184,0,20,208,48,49,37,53,52,54,55,35,14,1,7,3,5,35,21,35,53,33,53,1,51,17,51,1,54,2,2,4,12,26,14,188,1,122,95,43,254,218,1,41,40,95,229,253,23,62,22,22,45,22,254,241,39,190,190,27,1,186,254,82,0,0,1,0,26,255,244,1,175,2,147,0,40,0,73,0,184,0,0,69,88,184,0,24,47,27,185,0,24,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,11,0,1,244,186,0,19,0,24,0,0,17,18,57,184,0,24,16,185,0,26,0,1,244,184,0,19,16,185,0,31,0,1,244,48,49,23,34,46,2,39,55,30,3,51,50,62,2,53,52,38,35,34,6,7,39,19,33,21,35,7,62,1,51,50,30,2,21,20,14,2,227,38,61,49,38,15,25,14,34,42,52,33,32,58,43,26,84,72,37,53,29,31,23,1,39,255,20,25,54,35,40,72,52,31,35,57,73,12,15,25,31,15,31,15,28,22,13,26,48,67,41,81,93,22,20,19,1,43,40,230,15,18,25,52,79,55,54,83,57,29,0,2,0,54,255,244,1,182,2,159,0,17,0,48,0,67,0,184,0,0,69,88,184,0,45,47,27,185,0,45,0,17,62,89,184,0,0,69,88,184,0,37,47,27,185,0,37,0,5,62,89,187,0,29,0,1,0,10,0,4,43,184,0,37,16,185,0,0,0,1,244,184,0,45,16,185,0,21,0,1,244,48,49,37,50,62,2,53,52,46,2,35,34,6,7,30,3,19,46,1,35,34,14,2,7,62,1,51,50,22,21,20,14,2,35,34,38,53,52,62,2,51,50,22,23,1,8,28,47,34,20,16,33,53,36,34,82,39,3,22,40,60,172,21,56,31,38,68,52,31,1,33,83,45,85,93,28,48,64,35,97,112,39,65,85,46,45,65,25,26,26,47,62,36,37,62,46,26,44,52,55,91,64,36,2,41,26,27,32,74,120,88,40,47,105,103,45,77,56,31,166,155,100,139,85,38,34,28,0,1,0,44,0,0,1,181,2,147,0,15,0,55,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,7,16,185,0,5,0,1,244,184,0,9,208,184,0,9,47,48,49,51,62,3,55,33,53,33,21,14,3,7,35,188,4,24,46,69,50,254,175,1,137,59,75,44,19,4,48,100,166,148,136,69,40,27,77,145,150,163,97,0,0,0,0,3,0,40,255,244,1,181,2,155,0,41,0,59,0,77,0,77,0,184,0,0,69,88,184,0,21,47,27,185,0,21,0,17,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,186,0,42,0,0,0,21,17,18,57,184,0,21,16,185,0,50,0,1,244,184,0,0,16,185,0,60,0,1,244,186,0,70,0,21,0,0,17,18,57,48,49,23,34,46,2,53,52,62,2,55,53,46,3,53,52,62,2,51,50,30,2,21,20,14,2,7,21,30,3,21,20,14,2,19,62,1,53,52,46,2,35,34,14,2,21,20,30,2,3,50,62,2,53,52,46,2,39,14,1,21,20,30,2,243,44,74,54,31,23,37,45,23,18,33,25,16,26,45,61,35,41,64,45,23,18,27,32,14,21,40,32,19,28,51,72,4,41,43,18,33,49,31,27,45,33,18,29,48,61,15,34,55,39,21,33,55,70,37,50,63,24,42,58,12,27,47,64,38,34,58,48,37,12,4,12,30,37,44,26,36,59,42,24,26,46,63,37,27,49,43,35,11,4,13,31,41,52,34,35,61,45,26,1,99,33,76,42,27,50,37,22,19,33,45,27,35,50,37,29,254,182,20,36,48,27,39,54,41,31,15,29,86,55,30,51,38,22,0,0,2,0,43,255,244,1,170,2,159,0,17,0,47,0,67,0,184,0,0,69,88,184,0,36,47,27,185,0,36,0,17,62,89,184,0,0,69,88,184,0,44,47,27,185,0,44,0,5,62,89,187,0,0,0,1,0,28,0,4,43,184,0,36,16,185,0,8,0,1,244,184,0,44,16,185,0,20,0,1,244,48,49,19,50,54,55,46,3,35,34,14,2,21,20,30,2,7,22,51,50,62,2,55,14,1,35,34,38,53,52,62,2,51,50,22,21,20,14,2,35,34,38,39,224,38,82,38,2,22,40,61,41,28,47,35,19,16,33,52,105,47,69,35,65,49,32,2,33,82,48,83,93,28,48,63,36,96,112,38,63,83,44,48,68,26,1,35,46,52,55,90,64,35,26,46,63,36,36,63,46,26,211,53,33,74,120,88,39,49,107,101,46,76,56,31,156,147,106,145,90,39,34,28,0,1,0,67,255,244,0,152,0,79,0,11,0,24,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,6,220,48,49,23,34,38,53,52,54,51,50,22,21,20,6,110,17,26,26,17,17,25,25,12,24,21,22,24,24,22,21,24,0,0,1,0,48,255,101,0,165,0,79,0,17,0,24,0,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,184,0,11,220,48,49,23,62,1,55,6,35,34,38,53,52,54,51,50,22,21,20,6,7,48,34,42,1,4,8,17,25,26,17,23,28,58,45,125,18,61,42,1,22,20,20,22,38,33,55,84,24,255,255,0,67,255,244,0,152,1,205,2,39,4,119,0,0,1,126,0,6,4,119,0,0,255,255,0,48,255,101,0,165,1,205,2,39,4,119,0,0,1,126,0,6,4,120,0,0,255,255,0,104,255,244,3,95,0,79,0,38,4,119,37,0,0,39,4,119,1,118,0,0,0,7,4,119,2,199,0,0,0,2,0,87,255,244,0,172,2,158,0,5,0,17,0,28,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,5,62,89,184,0,12,220,184,0,5,220,48,49,19,53,51,7,3,35,23,34,38,53,52,54,51,50,22,21,20,6,107,46,1,6,33,17,17,26,26,17,17,25,25,2,87,71,71,254,92,191,24,21,22,24,24,22,21,24,0,0,0,2,0,87,255,66,0,172,1,236,0,5,0,17,0,28,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,9,62,89,184,0,6,220,184,0,1,220,48,49,23,19,51,19,23,35,19,34,38,53,52,54,51,50,22,21,20,6,107,6,33,6,1,46,23,17,26,26,17,17,25,25,119,1,164,254,92,71,2,79,24,23,20,24,24,20,23,24,0,2,0,37,255,244,1,96,2,170,0,31,0,43,0,42,0,184,0,0,69,88,184,0,32,47,27,185,0,32,0,5,62,89,187,0,19,0,1,0,12,0,4,43,184,0,32,16,184,0,38,220,184,0,0,220,48,49,55,38,62,4,53,52,46,2,35,34,6,7,39,62,1,51,50,30,2,21,20,14,4,23,7,34,38,53,52,54,51,50,22,21,20,6,163,6,17,32,40,36,24,13,28,43,29,37,67,25,27,29,79,52,36,58,40,21,25,36,41,33,19,5,17,17,25,25,17,17,26,26,179,41,67,57,50,49,52,31,23,43,32,19,33,31,25,33,45,23,41,56,33,34,57,52,51,55,63,38,191,24,21,22,24,24,22,21,24,0,0,2,0,51,255,54,1,110,1,236,0,31,0,43,0,42,0,184,0,0,69,88,184,0,38,47,27,185,0,38,0,9,62,89,187,0,25,0,1,0,0,0,4,43,184,0,38,16,184,0,32,220,184,0,12,220,48,49,23,34,46,2,53,52,62,4,39,51,22,14,4,21,20,30,2,51,50,54,55,23,14,1,3,34,38,53,52,54,51,50,22,21,20,6,206,37,57,40,21,25,36,41,33,18,5,41,5,17,32,40,36,24,13,28,43,30,36,67,25,28,29,79,42,17,25,25,17,17,25,25,202,23,41,56,33,34,57,53,50,55,63,38,41,67,57,50,49,52,31,23,42,33,19,34,30,25,32,46,2,91,24,23,20,24,24,20,23,24,0,1,0,83,1,221,0,134,2,181,0,5,0,11,0,186,0,2,0,4,0,3,43,48,49,19,39,51,21,7,35,84,1,51,9,33,2,112,69,69,147,0,0,0,255,255,0,83,1,221,1,19,2,181,0,38,4,128,0,0,0,7,4,128,0,141,0,0,0,1,0,58,1,224,0,161,2,191,0,17,0,13,0,187,0,5,0,2,0,11,0,4,43,48,49,19,14,1,21,54,51,50,22,21,20,6,35,34,38,53,52,54,55,161,33,34,2,6,15,25,23,17,20,24,45,40,2,168,27,54,43,1,18,19,19,21,35,32,54,76,26,0,0,0,0,1,0,58,1,221,0,162,2,188,0,17,0,13,0,187,0,11,0,2,0,5,0,4,43,48,49,19,62,1,53,6,35,34,38,53,52,54,51,50,22,21,20,6,7,58,33,34,2,6,14,25,22,17,20,25,45,41,1,244,27,54,43,1,18,19,19,21,35,32,54,76,26,0,0,0,255,255,0,58,1,224,1,46,2,191,0,38,4,130,0,0,0,7,4,130,0,141,0,0,255,255,0,58,1,221,1,47,2,188,0,38,4,131,0,0,0,7,4,131,0,141,0,0,255,255,0,58,255,126,0,162,0,93,2,7,4,131,0,0,253,161,0,0,255,255,0,58,255,126,1,47,0,93,0,39,4,131,0,0,253,161,0,7,4,131,0,141,253,161,0,0,0,1,0,43,0,72,0,205,1,176,0,6,0,11,0,186,0,2,0,6,0,3,43,48,49,55,53,55,23,7,23,7,43,137,25,123,123,25,233,38,161,21,159,161,19,0,0,0,0,1,0,54,0,72,0,216,1,176,0,6,0,11,0,186,0,3,0,6,0,3,43,48,49,63,1,39,55,23,21,7,54,122,122,24,138,138,91,161,159,21,161,38,161,0,0,0,255,255,0,43,0,72,1,90,1,176,0,38,4,136,0,0,0,7,4,136,0,141,0,0,255,255,0,54,0,72,1,101,1,176,0,38,4,137,0,0,0,7,4,137,0,141,0,0,0,1,0,40,0,230,1,4,1,13,0,3,0,13,0,187,0,1,0,1,0,2,0,4,43,48,49,19,51,21,35,40,220,220,1,13,39,0,0,0,255,255,0,40,0,230,1,4,1,13,2,6,4,140,0,0,0,1,0,40,0,232,1,184,1,12,0,3,0,13,0,187,0,1,0,1,0,2,0,4,43,48,49,19,33,21,33,40,1,144,254,112,1,12,36,0,0,1,0,40,0,232,2,248,1,12,0,3,0,13,0,187,0,1,0,1,0,2,0,4,43,48,49,19,33,21,33,40,2,208,253,48,1,12,36,0,0,1,0,40,0,232,5,180,1,12,0,3,0,13,0,187,0,1,0,1,0,2,0,4,43,48,49,19,33,21,33,40,5,140,250,116,1,12,36,0,0,1,0,40,0,232,8,112,1,12,0,3,0,13,0,187,0,3,0,1,0,0,0,4,43,48,49,37,33,53,33,8,112,247,184,8,72,232,36,0,0,1,0,40,0,232,1,184,1,12,0,3,0,13,0,187,0,1,0,1,0,2,0,4,43,48,49,19,33,21,33,40,1,144,254,112,1,12,36,0,255,255,0,40,0,232,2,248,1,12,2,6,4,143,0,0,255,255,0,67,1,21,0,152,1,112,2,7,4,119,0,0,1,33,0,0,0,1,0,40,0,154,0,241,1,118,0,19,0,11,0,186,0,10,0,0,0,3,43,48,49,55,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,140,19,36,28,17,17,28,36,19,19,37,28,17,17,28,37,154,15,29,40,26,25,41,28,16,16,28,41,25,26,40,29,15,0,0,0,1,0,12,255,139,1,232,255,177,0,3,0,13,0,187,0,1,0,1,0,2,0,4,43,48,49,23,33,21,33,12,1,220,254,36,79,38,0,0,0,1,0,12,2,57,1,232,2,96,0,3,0,13,0,187,0,1,0,1,0,2,0,4,43,48,49,19,33,21,33,12,1,220,254,36,2,96,39,0,0,1,254,59,255,22,1,197,255,177,0,13,0,13,0,187,0,7,0,1,0,0,0,4,43,48,49,21,34,38,39,55,30,1,51,50,54,55,23,14,1,131,222,100,16,95,224,118,118,224,95,16,100,222,234,67,63,25,60,59,59,60,25,63,67,0,0,0,0,1,0,88,255,81,0,247,2,219,0,14,0,11,0,186,0,6,0,0,0,3,43,48,49,23,46,1,53,52,54,55,23,14,1,21,20,22,23,7,220,62,70,70,62,27,60,60,60,60,27,175,100,221,132,132,221,100,16,95,223,119,119,223,95,16,0,0,0,1,0,32,255,81,0,191,2,219,0,13,0,11,0,186,0,7,0,13,0,3,43,48,49,23,62,1,53,52,38,39,55,30,1,21,20,6,7,32,60,60,60,60,27,61,71,71,61,159,95,223,119,119,223,95,16,100,221,132,132,221,100,0,0,1,0,98,255,104,1,2,2,196,0,7,0,23,0,187,0,5,0,1,0,6,0,4,43,187,0,1,0,1,0,2,0,4,43,48,49,19,51,21,35,17,51,21,35,98,160,125,125,160,2,196,29,252,222,29,0,1,0,21,255,104,0,181,2,196,0,7,0,23,0,187,0,1,0,1,0,6,0,4,43,187,0,5,0,1,0,2,0,4,43,48,49,23,51,17,35,53,51,17,35,21,125,125,160,160,123,3,34,29,252,164,0,1,0,35,255,104,1,2,2,196,0,52,0,51,0,187,0,49,0,1,0,0,0,4,43,187,0,28,0,1,0,29,0,4,43,187,0,14,0,1,0,13,0,4,43,186,0,40,0,13,0,14,17,18,57,184,0,0,16,184,0,51,208,48,49,23,34,46,2,53,52,54,53,52,46,2,35,53,50,62,2,53,52,38,53,52,62,2,59,1,21,35,34,6,21,20,22,21,20,6,7,21,30,1,21,20,6,21,20,22,59,1,21,35,224,28,41,28,14,8,7,19,34,26,26,34,19,7,8,14,28,41,28,34,31,46,31,6,21,30,30,21,6,31,46,31,34,152,12,29,49,38,56,97,52,15,30,22,14,32,14,22,28,15,54,97,56,38,49,29,12,29,50,53,49,89,54,45,50,9,4,9,52,43,54,89,49,53,50,29,0,0,0,1,0,21,255,104,0,244,2,196,0,51,0,43,0,187,0,1,0,1,0,50,0,4,43,187,0,23,0,1,0,20,0,4,43,187,0,36,0,1,0,37,0,4,43,186,0,11,0,37,0,36,17,18,57,48,49,23,51,50,54,53,52,38,53,52,54,55,53,46,1,53,52,54,53,52,38,43,1,53,51,50,30,2,21,20,6,21,20,30,2,51,21,34,14,2,21,20,22,21,20,14,2,43,1,21,31,46,31,6,22,29,29,22,6,31,46,31,34,28,41,28,14,8,7,19,34,26,26,34,19,7,8,14,28,41,28,34,123,50,53,49,89,54,43,52,9,4,9,50,45,54,89,49,53,50,29,12,29,49,38,56,97,54,15,28,22,14,32,14,22,30,15,52,97,56,38,49,29,12,0,1,0,9,255,96,1,96,2,198,0,3,0,24,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,19,62,89,184,0,2,220,48,49,1,51,1,35,1,58,38,254,207,38,2,198,252,154,0,1,0,95,255,6,0,131,2,238,0,3,0,11,0,186,0,1,0,2,0,3,43,48,49,19,51,17,35,95,36,36,2,238,252,24,0,1,0,5,255,96,1,93,2,198,0,3,0,24,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,19,62,89,184,0,2,220,48,49,19,51,1,35,5,38,1,50,38,2,198,252,154,0,0,2,0,95,255,6,0,131,2,238,0,3,0,7,0,11,0,186,0,1,0,6,0,3,43,48,49,19,51,17,35,21,51,17,35,95,36,36,36,36,2,238,254,41,59,254,42,0,0,1,0,70,1,206,1,69,2,200,0,14,0,20,0,184,0,0,69,88,184,0,5,47,27,185,0,5,0,19,62,89,48,49,19,55,39,55,23,55,51,23,55,23,7,23,7,39,7,105,55,90,10,94,7,32,7,95,10,90,54,27,64,66,1,226,88,36,30,26,102,100,24,30,36,88,20,83,83,0,0,1,0,60,255,176,1,105,2,200,0,11,0,33,0,187,0,2,0,1,0,1,0,4,43,184,0,2,16,184,0,6,208,184,0,6,47,184,0,1,16,184,0,8,208,48,49,19,7,53,23,39,51,7,55,21,39,19,35,192,132,132,3,42,2,132,132,2,42,2,10,2,42,3,153,153,3,42,2,253,166,0,0,0,0,1,0,60,255,176,1,105,2,200,0,21,0,71,0,187,0,2,0,1,0,0,0,4,43,187,0,7,0,1,0,5,0,4,43,184,0,7,16,184,0,11,208,184,0,11,47,184,0,5,16,184,0,13,208,184,0,13,47,184,0,2,16,184,0,16,208,184,0,16,47,184,0,0,16,184,0,18,208,184,0,18,47,48,49,55,7,53,23,39,55,7,53,23,39,51,7,55,21,39,23,7,55,21,39,23,35,192,132,132,3,3,132,132,3,42,2,132,132,2,2,132,132,2,42,73,3,42,3,207,207,3,42,3,153,153,3,42,3,207,207,3,42,3,153,0,0,0,0,2,0,50,255,204,1,173,2,169,0,15,0,73,0,23,0,187,0,49,0,1,0,42,0,4,43,187,0,70,0,1,0,19,0,4,43,48,49,37,62,1,53,52,46,2,39,14,1,21,20,30,2,19,46,1,35,34,14,2,21,20,30,4,21,20,6,7,30,1,21,20,14,2,35,34,38,39,55,30,1,51,50,54,53,52,46,4,53,52,54,55,46,1,53,52,62,2,51,50,22,23,1,56,36,39,45,67,76,31,34,42,45,67,76,77,24,53,38,25,36,22,11,42,62,73,62,42,49,38,16,18,23,39,52,29,52,80,29,30,26,59,46,46,54,42,63,73,63,42,51,38,15,18,16,34,50,35,42,70,28,181,17,42,41,40,51,36,31,20,20,46,38,39,49,35,30,1,139,20,26,13,21,28,14,33,41,33,29,41,60,46,50,57,21,16,41,27,27,46,33,18,35,28,28,24,30,50,35,34,43,32,29,40,58,46,48,63,20,15,40,26,21,42,33,21,30,23,0,2,0,42,255,176,1,163,2,147,0,3,0,16,0,37,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,184,0,0,69,88,184,0,14,47,27,185,0,14,0,17,62,89,48,49,1,51,17,35,3,34,46,2,53,52,62,2,59,1,17,1,117,46,46,82,55,92,66,36,34,62,86,51,44,2,147,253,29,1,68,23,49,79,56,56,79,50,23,254,97,0,0,0,2,0,95,255,6,1,3,2,238,0,3,0,7,0,27,0,186,0,1,0,2,0,3,43,184,0,1,16,184,0,4,208,184,0,2,16,184,0,6,208,48,49,19,51,17,35,19,51,17,35,95,36,36,128,36,36,2,238,252,24,3,232,252,24,0,0,0,255,255,0,87,255,244,1,167,2,158,0,38,4,124,0,0,0,7,4,124,0,251,0,0,255,255,0,37,255,244,2,218,2,170,0,38,4,126,0,0,0,7,4,126,1,122,0,0,255,255,0,87,255,244,2,75,2,170,0,38,4,124,0,0,0,7,4,126,0,235,0,0,255,255,0,37,255,244,2,38,2,170,0,38,4,126,0,0,0,7,4,124,1,122,0,0,0,2,0,34,255,244,1,98,2,170,0,34,0,46,0,60,0,184,0,0,69,88,184,0,41,47,27,185,0,41,0,5,62,89,187,0,17,0,1,0,10,0,4,43,184,0,41,16,184,0,35,220,184,0,30,220,186,0,0,0,17,0,30,17,18,57,184,0,10,16,184,0,32,220,48,49,19,62,3,53,52,46,2,35,34,6,7,39,62,1,51,50,30,2,21,20,14,4,23,35,3,39,51,21,3,50,22,21,20,6,35,34,38,53,52,54,201,14,38,33,23,14,28,44,30,38,68,26,27,30,80,52,37,59,40,22,25,37,42,34,19,5,32,5,2,43,20,17,26,26,17,17,25,25,1,55,29,49,50,53,33,24,43,33,19,34,32,25,35,44,24,41,55,32,35,59,53,50,55,62,37,1,42,68,63,254,109,24,22,21,24,24,21,22,24,0,0,1,0,98,0,0,1,2,2,176,0,5,0,13,0,187,0,1,0,1,0,2,0,4,43,48,49,19,51,21,35,17,35,98,160,125,35,2,176,28,253,108,0,0,0,1,0,21,0,0,0,181,2,176,0,5,0,13,0,187,0,3,0,1,0,0,0,4,43,48,49,19,35,53,51,17,35,146,125,160,35,2,148,28,253,80,0,0,0,1,0,98,255,207,1,2,2,127,0,5,0,13,0,187,0,3,0,1,0,4,0,4,43,48,49,19,51,17,51,21,35,98,35,125,160,2,127,253,109,29,0,0,0,1,0,21,255,207,0,181,2,127,0,5,0,13,0,187,0,1,0,1,0,4,0,4,43,48,49,23,51,17,51,17,35,21,125,35,160,20,2,147,253,80,0,0,0,2,0,98,255,104,1,66,2,196,0,7,0,11,0,39,0,187,0,5,0,1,0,6,0,4,43,187,0,1,0,1,0,2,0,4,43,184,0,5,16,184,0,8,208,184,0,2,16,184,0,9,208,48,49,19,51,21,35,17,51,21,35,55,17,35,17,98,224,121,121,224,73,41,2,196,29,252,222,29,29,3,34,252,222,0,0,0,0,2,0,21,255,104,0,245,2,196,0,7,0,11,0,39,0,187,0,8,0,1,0,6,0,4,43,187,0,5,0,1,0,9,0,4,43,184,0,8,16,184,0,0,208,184,0,9,16,184,0,2,208,48,49,23,51,17,35,53,51,17,35,55,17,35,17,21,121,121,224,224,192,41,123,3,34,29,252,164,29,3,34,252,222,0,0,0,0,1,0,98,1,22,1,2,2,196,0,5,0,13,0,187,0,1,0,1,0,2,0,4,43,48,49,19,51,21,35,17,35,98,160,125,35,2,196,29,254,111,0,0,0,1,0,21,1,22,0,181,2,196,0,5,0,13,0,187,0,3,0,1,0,0,0,4,43,48,49,19,35,53,51,17,35,146,125,160,35,2,167,29,254,82,0,0,0,1,0,98,255,104,1,2,1,22,0,5,0,13,0,187,0,3,0,1,0,4,0,4,43,48,49,19,51,17,51,21,35,98,35,125,160,1,22,254,111,29,0,0,0,1,0,21,255,104,0,181,1,22,0,5,0,13,0,187,0,1,0,1,0,4,0,4,43,48,49,23,51,17,51,17,35,21,125,35,160,123,1,145,254,82,0,0,0,3,0,51,255,244,2,178,2,140,0,19,0,39,0,69,0,68,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,187,0,30,0,1,0,10,0,4,43,184,0,0,16,185,0,20,0,1,244,184,0,40,220,184,0,30,16,184,0,50,220,185,0,57,0,1,244,184,0,40,16,185,0,63,0,1,244,48,49,5,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,39,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,55,34,46,2,53,52,62,2,51,50,22,23,7,46,1,35,34,6,21,20,22,51,50,54,55,23,14,1,1,115,65,116,88,51,51,88,116,65,64,116,88,51,51,88,116,64,57,103,78,46,46,78,103,57,58,103,78,46,46,78,103,63,36,63,48,28,30,49,65,36,40,56,24,23,23,45,30,60,76,73,61,36,56,23,20,27,62,12,48,87,123,76,75,122,86,47,47,86,122,75,76,123,87,48,31,44,79,112,68,67,111,79,43,43,79,111,67,68,112,79,44,105,27,51,73,47,43,70,48,26,31,24,26,22,22,82,68,75,86,29,21,28,24,35,0,0,0,4,0,51,255,244,2,178,2,140,0,19,0,39,0,50,0,59,0,60]);fileData0.push.apply(fileData0,[0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,187,0,10,0,1,0,30,0,4,43,187,0,58,0,1,0,40,0,4,43,187,0,51,0,1,0,47,0,4,43,184,0,0,16,185,0,20,0,1,244,48,49,5,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,39,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,3,51,50,22,21,20,6,43,1,21,35,55,50,54,53,52,38,43,1,21,1,115,65,116,88,51,51,88,116,65,64,116,88,51,51,88,116,64,57,103,78,46,46,78,103,57,58,103,78,46,46,78,103,52,134,57,78,78,57,93,41,122,48,56,56,48,81,12,48,87,123,76,75,122,86,47,47,86,122,75,76,123,87,48,31,44,79,112,68,67,111,79,43,43,79,111,67,68,112,79,44,1,222,54,55,60,63,129,163,42,47,39,36,164,0,0,0,4,0,18,1,68,1,126,2,200,0,19,0,39,0,55,0,64,0,87,0,184,0,54,47,184,0,41,47,184,0,54,16,184,0,20,220,185,0,0,0,1,244,184,0,41,16,184,0,30,220,185,0,10,0,1,244,186,0,52,0,54,0,41,17,18,57,184,0,52,47,185,0,56,0,1,244,186,0,49,0,56,0,52,17,18,57,184,0,54,16,184,0,51,208,184,0,41,16,185,0,62,0,1,244,48,49,19,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,39,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,3,51,50,30,2,21,20,6,7,23,35,39,35,21,35,55,50,54,53,52,38,43,1,21,200,37,66,50,29,29,50,66,37,37,67,49,29,29,49,67,37,31,56,40,24,24,40,56,31,32,55,40,24,24,40,55,36,69,15,27,22,13,23,17,49,37,39,47,32,61,23,28,21,27,32,1,68,28,50,71,44,44,72,51,28,28,51,72,44,44,71,50,28,29,25,43,60,36,36,61,45,25,25,45,61,36,36,60,43,25,1,15,6,15,24,19,19,32,5,86,76,76,103,17,20,17,21,75,0,0,2,0,2,1,113,2,67,2,164,0,7,0,27,0,93,0,184,0,26,47,184,0,23,47,184,0,0,208,184,0,26,16,184,0,18,208,186,0,14,0,18,0,0,17,18,57,184,0,14,47,185,0,3,0,1,244,184,0,0,16,184,0,6,208,184,0,18,16,184,0,9,208,184,0,6,16,185,0,12,0,1,244,184,0,0,16,185,0,16,0,1,244,184,0,23,16,185,0,25,0,1,244,184,0,20,208,48,49,19,35,53,51,21,35,17,35,19,51,31,1,51,63,1,51,17,35,53,55,35,7,35,39,35,23,21,35,109,107,253,108,38,198,52,52,31,4,31,50,52,37,5,4,83,34,83,4,5,37,2,129,35,35,254,240,1,51,126,86,86,126,254,205,161,98,211,211,98,161,0,0,2,0,32,1,101,2,67,2,169,0,39,0,59,0,123,0,184,0,58,47,184,0,40,47,184,0,58,16,184,0,0,208,184,0,0,47,185,0,7,0,1,244,184,0,40,16,184,0,20,208,184,0,20,47,186,0,10,0,0,0,20,17,18,57,185,0,27,0,1,244,186,0,30,0,20,0,0,17,18,57,186,0,54,0,58,0,40,17,18,57,184,0,54,47,185,0,43,0,1,244,184,0,40,16,184,0,46,208,184,0,58,16,184,0,49,208,184,0,46,16,185,0,52,0,1,244,184,0,40,16,185,0,56,0,1,244,48,49,19,34,38,39,55,30,1,51,50,54,53,52,38,47,1,46,1,53,52,54,51,50,22,23,7,46,1,35,34,6,21,20,22,31,1,30,1,21,20,6,19,51,31,1,51,63,1,51,17,35,53,55,35,7,35,39,35,23,21,35,140,33,55,20,24,19,40,28,28,31,22,24,49,21,38,55,42,25,46,16,21,15,35,18,29,29,24,21,49,29,31,53,121,52,52,31,4,31,50,52,37,5,4,83,34,83,4,5,37,1,101,25,21,25,19,20,27,23,23,18,13,26,11,36,34,38,43,21,16,26,13,18,28,20,17,24,10,25,14,37,34,32,51,1,63,126,86,86,126,254,205,161,98,211,211,98,161,0,2,0,31,1,101,2,95,2,169,0,19,0,49,0,75,0,187,0,43,0,1,0,20,0,4,43,187,0,28,0,1,0,35,0,4,43,187,0,4,0,2,0,13,0,4,43,184,0,28,16,184,0,0,208,184,0,0,47,184,0,28,16,184,0,6,208,184,0,6,47,184,0,1,208,184,0,6,16,185,0,12,0,2,244,184,0,15,208,48,49,19,51,31,1,51,63,1,51,17,35,53,55,35,7,35,39,35,23,21,35,5,34,38,53,52,62,2,51,50,22,23,7,46,1,35,34,14,2,21,20,22,51,50,54,55,23,14,1,31,52,52,31,4,31,50,52,37,5,4,83,34,83,4,5,37,1,223,60,76,22,37,52,30,27,44,14,24,13,29,20,20,36,27,17,57,41,23,33,16,23,18,49,2,164,126,86,86,126,254,205,161,98,211,211,98,161,12,87,75,37,60,42,23,22,15,25,14,16,17,33,47,31,63,69,18,17,22,20,25,0,3,0,31,1,113,2,95,2,164,0,19,0,28,0,37,0,83,0,187,0,37,0,1,0,28,0,4,43,187,0,21,0,1,0,35,0,4,43,187,0,4,0,2,0,13,0,4,43,184,0,21,16,184,0,0,208,184,0,21,16,184,0,6,208,184,0,1,208,184,0,28,16,184,0,8,208,184,0,6,16,185,0,12,0,2,244,184,0,15,208,184,0,28,16,184,0,18,208,48,49,19,51,31,1,51,63,1,51,17,35,53,55,35,7,35,39,35,23,21,35,1,51,50,22,21,20,6,43,1,55,50,54,53,52,38,43,1,21,31,52,52,31,4,31,50,52,37,5,4,83,34,83,4,5,37,1,98,77,72,73,73,71,78,77,53,52,53,54,37,2,164,126,86,86,126,254,205,161,98,211,211,98,161,1,51,82,69,72,84,33,67,56,54,64,241,0,2,0,52,255,110,2,251,2,121,0,70,0,84,0,99,0,187,0,65,0,1,0,0,0,4,43,187,0,71,0,1,0,27,0,4,43,187,0,37,0,1,0,77,0,4,43,187,0,10,0,1,0,55,0,4,43,184,0,27,16,184,0,20,208,186,0,23,0,27,0,37,17,18,57,186,0,39,0,37,0,27,17,18,57,184,0,71,16,184,0,45,208,184,0,23,16,185,0,73,0,1,244,184,0,39,16,185,0,74,0,1,244,48,49,5,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,35,34,38,39,35,14,1,35,34,46,2,53,52,62,2,51,50,23,51,55,51,7,6,51,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,51,50,54,55,23,6,39,50,63,1,46,1,35,34,14,2,21,20,22,1,132,72,123,90,51,65,109,144,79,72,117,81,44,34,54,65,31,40,53,4,2,26,61,35,23,42,31,18,25,48,69,44,53,30,2,9,34,36,34,94,24,51,41,27,39,72,103,65,69,128,99,60,44,79,111,67,50,82,36,16,86,125,50,58,31,18,33,23,34,54,37,20,46,146,47,89,129,83,98,159,113,61,46,83,117,71,64,97,66,33,37,39,29,41,17,34,51,34,36,80,66,43,48,40,189,135,30,57,82,53,64,106,74,41,56,103,145,89,73,117,81,44,26,22,30,54,244,67,173,28,21,35,54,66,31,57,46,0,0,2,0,52,255,238,2,191,2,169,0,73,0,87,0,107,0,187,0,67,0,1,0,0,0,4,43,187,0,10,0,1,0,57,0,4,43,187,0,74,0,1,0,27,0,4,43,187,0,80,0,1,0,37,0,4,43,184,0,27,16,184,0,20,208,184,0,20,47,186,0,23,0,27,0,37,17,18,57,186,0,40,0,37,0,27,17,18,57,184,0,74,16,184,0,47,208,184,0,47,47,184,0,23,16,185,0,76,0,1,244,184,0,40,16,185,0,77,0,1,244,48,49,5,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,35,34,38,39,35,14,1,35,34,46,2,53,52,62,2,51,50,22,23,51,55,51,7,6,22,51,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,51,50,54,55,23,14,1,39,50,63,1,46,1,35,34,14,2,21,20,22,1,103,66,112,82,47,60,102,135,74,62,103,74,41,29,48,60,31,37,45,2,2,25,58,37,21,38,29,17,23,45,68,44,24,40,14,2,10,36,37,16,22,41,21,45,36,23,34,65,92,58,64,118,90,54,40,72,100,60,37,68,28,17,35,76,65,48,58,31,18,31,23,32,51,36,19,44,18,40,78,114,75,88,145,103,56,40,74,105,66,59,90,61,32,40,36,29,41,17,33,47,29,35,76,63,41,24,24,40,169,72,63,27,52,76,50,59,93,65,35,50,93,131,81,68,103,69,34,17,19,28,23,20,214,67,154,28,21,32,51,62,29,50,46,0,2,0,36,0,0,1,193,2,138,0,27,0,31,0,155,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,15,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,15,62,89,184,0,0,69,88,184,0,22,47,27,185,0,22,0,5,62,89,184,0,0,69,88,184,0,26,47,27,185,0,26,0,5,62,89,187,0,3,0,1,0,0,0,4,43,187,0,7,0,1,0,4,0,4,43,184,0,7,16,184,0,10,208,184,0,7,16,184,0,14,208,184,0,4,16,184,0,16,208,184,0,3,16,184,0,18,208,184,0,0,16,184,0,20,208,184,0,0,16,184,0,24,208,184,0,3,16,184,0,28,208,184,0,4,16,184,0,29,208,48,49,55,35,53,51,55,35,53,51,55,51,7,51,55,51,7,51,21,35,7,51,21,35,7,35,55,35,7,35,63,1,35,7,119,83,87,21,88,92,25,35,25,149,26,34,25,82,85,21,86,91,25,35,25,149,26,35,215,21,150,21,214,36,170,36,194,194,194,194,36,170,36,214,214,214,250,170,170,255,255,0,75,0,0,0,155,2,163,2,6,0,38,0,0,0,2,0,8,0,0,1,187,2,0,0,9,0,17,0,84,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,11,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,184,0,0,69,88,184,0,16,47,27,185,0,16,0,5,62,89,186,0,0,0,14,0,12,17,18,57,184,0,0,47,186,0,5,0,14,0,12,17,18,57,185,0,11,0,1,244,48,49,37,39,46,1,39,35,14,1,15,1,23,35,7,35,19,51,19,35,1,65,34,17,28,15,4,15,27,17,34,204,218,62,46,194,47,194,48,205,93,47,78,45,45,79,46,93,37,168,2,0,254,0,0,3,0,97,0,0,1,213,2,0,0,15,0,24,0,35,0,87,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,14,47,27,185,0,14,0,5,62,89,186,0,33,0,0,0,14,17,18,57,184,0,33,47,185,0,16,0,1,244,186,0,7,0,16,0,33,17,18,57,184,0,0,16,185,0,22,0,1,244,184,0,14,16,185,0,25,0,1,244,48,49,19,51,50,22,21,20,6,7,21,30,1,21,20,6,43,1,19,50,54,53,52,38,43,1,21,23,50,62,2,53,52,38,43,1,21,97,153,84,101,45,44,54,69,113,95,164,139,84,72,77,75,97,108,39,64,46,25,90,84,108,2,0,59,67,39,58,12,4,10,60,53,76,74,1,32,49,48,48,43,188,252,11,27,44,32,54,50,218,0,0,0,0,1,0,55,255,244,1,200,2,12,0,29,0,57,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,11,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,10,16,185,0,17,0,1,244,184,0,0,16,185,0,23,0,1,244,48,49,5,34,46,2,53,52,62,2,51,50,22,23,7,46,1,35,34,6,21,20,22,51,50,54,55,23,14,1,1,34,52,87,62,34,35,64,88,54,48,74,23,27,23,57,38,91,102,101,88,43,65,29,27,34,78,12,37,70,99,63,61,99,70,37,38,25,30,23,29,121,105,106,122,30,31,28,36,38,0,0,0,0,2,0,97,0,0,1,229,2,0,0,12,0,23,0,53,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,185,0,13,0,1,244,184,0,0,16,185,0,21,0,1,244,48,49,19,51,50,30,2,21,20,14,2,43,1,55,50,54,53,52,46,2,43,1,17,97,131,64,97,64,32,32,64,96,64,132,129,110,101,25,51,80,55,83,2,0,35,66,95,59,59,95,67,36,37,116,104,49,80,57,32,254,74,0,1,0,97,0,0,1,158,2,0,0,11,0,77,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,5,62,89,184,0,0,16,185,0,2,0,1,244,186,0,6,0,0,0,10,17,18,57,184,0,6,47,185,0,4,0,1,244,184,0,10,16,185,0,8,0,1,244,48,49,19,33,21,33,21,51,21,35,21,33,21,33,97,1,51,254,251,221,221,1,15,254,195,2,0,38,184,37,215,38,0,0,0,0,1,0,97,0,0,1,148,2,0,0,9,0,57,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,187,0,5,0,1,0,6,0,4,43,184,0,0,16,185,0,2,0,1,244,48,49,19,33,21,33,21,51,21,35,21,35,97,1,51,254,251,220,220,46,2,0,38,196,37,241,0,0,1,0,55,255,244,1,206,2,12,0,33,0,79,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,11,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,10,16,185,0,17,0,1,244,184,0,0,16,185,0,23,0,1,244,186,0,28,0,10,0,0,17,18,57,125,184,0,28,47,24,185,0,30,0,1,244,48,49,5,34,46,2,53,52,62,2,51,50,22,23,7,46,1,35,34,6,21,20,22,51,50,54,55,53,35,53,51,21,14,1,1,40,54,89,63,35,36,66,91,56,55,73,23,27,21,58,45,94,107,103,94,37,61,20,128,172,26,85,12,37,70,99,63,61,99,70,37,39,22,30,21,29,120,106,105,123,19,17,153,37,212,23,32,0,0,0,1,0,97,0,0,1,225,2,0,0,11,0,81,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,11,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,5,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,5,62,89,187,0,3,0,1,0,8,0,4,43,48,49,19,51,21,33,53,51,17,35,53,33,21,35,97,46,1,36,46,46,254,220,46,2,0,220,220,254,0,252,252,0,1,0,97,0,0,0,143,2,0,0,3,0,37,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,48,49,19,51,17,35,97,46,46,2,0,254,0,0,0,0,1,0,41,255,244,1,68,2,0,0,17,0,43,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,11,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,7,0,1,244,48,49,23,34,38,39,55,30,1,51,50,54,53,17,51,17,20,14,2,180,48,70,21,33,20,51,34,50,49,46,16,34,55,12,42,37,23,32,29,55,62,1,110,254,141,32,55,42,24,0,1,0,97,0,0,1,225,2,0,0,12,0,101,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,11,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,186,0,3,0,7,0,0,17,18,57,186,0,6,0,0,0,7,17,18,57,186,0,9,0,7,0,0,17,18,57,48,49,19,51,17,51,1,51,7,19,35,3,7,21,35,97,46,2,1,6,53,177,198,51,176,111,46,2,0,254,236,1,20,191,254,191,1,33,113,176,0,0,0,0,1,0,97,0,0,1,139,2,0,0,5,0,43,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,185,0,2,0,1,244,48,49,19,51,17,51,21,33,97,46,252,254,214,2,0,254,39,39,0,0,0,0,1,0,97,0,0,2,15,2,0,0,25,0,111,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,11,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,184,0,0,69,88,184,0,24,47,27,185,0,24,0,5,62,89,186,0,3,0,0,0,24,17,18,57,186,0,13,0,8,0,6,17,18,57,186,0,16,0,0,0,8,17,18,57,186,0,20,0,0,0,24,17,18,57,48,49,19,51,19,23,51,55,19,51,17,35,17,52,54,55,35,7,3,35,3,39,35,30,1,21,17,35,97,61,112,40,4,42,111,60,42,2,2,4,42,114,34,114,43,4,2,4,43,2,0,254,219,111,111,1,37,254,0,1,64,32,78,34,114,254,216,1,40,114,33,79,32,254,192,0,0,0,1,0,97,0,0,1,219,2,0,0,19,0,91,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,11,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,5,62,89,184,0,0,69,88,184,0,18,47,27,185,0,18,0,5,62,89,186,0,4,0,10,0,8,17,18,57,186,0,14,0,0,0,18,17,18,57,48,49,19,51,19,23,51,46,1,53,17,51,17,35,3,39,35,30,1,21,17,35,97,48,228,61,4,2,3,42,47,228,62,4,2,4,43,2,0,254,161,102,38,78,38,1,43,254,0,1,94,104,38,75,38,254,209,0,2,0,55,255,244,2,7,2,12,0,19,0,37,0,53,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,11,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,20,0,1,244,184,0,10,16,185,0,30,0,1,244,48,49,5,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,39,50,62,2,53,52,46,2,35,34,6,21,20,30,2,1,31,51,85,62,34,34,62,85,51,51,85,61,35,35,61,85,51,41,68,48,27,27,48,68,41,84,100,26,48,68,12,38,70,99,62,62,99,69,37,37,69,99,62,62,99,70,38,41,32,59,84,53,52,84,59,31,120,106,53,84,59,32,0,0,2,0,97,0,0,1,197,2,0,0,10,0,19,0,57,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,5,62,89,187,0,11,0,1,0,7,0,4,43,184,0,0,16,185,0,17,0,1,244,48,49,19,51,50,22,21,20,6,43,1,21,35,55,50,54,53,52,38,43,1,21,97,155,94,107,107,94,109,46,150,83,76,79,84,100,2,0,65,81,78,74,214,250,54,61,62,48,225,0,2,0,55,255,114,2,8,2,12,0,17,0,50,0,75,0,184,0,0,69,88,184,0,34,47,27,185,0,34,0,11,62,89,184,0,0,69,88,184,0,24,47,27,185,0,24,0,5,62,89,187,0,47,0,1,0,21,0,4,43,184,0,24,16,185,0,5,0,1,244,184,0,34,16,185,0,15,0,1,244,184,0,24,16,184,0,44,208,48,49,19,20,30,2,51,50,62,2,53,52,46,2,35,34,6,1,14,1,35,34,38,39,46,3,53,52,62,2,51,50,30,2,21,20,14,2,7,30,1,51,50,54,55,103,26,48,68,42,41,68,48,27,27,48,68,41,84,100,1,161,11,38,22,71,95,22,46,76,54,30,34,62,85,51,51,85,61,35,31,56,77,46,19,74,51,19,27,11,1,1,53,85,60,33,33,60,85,53,52,84,59,31,120,254,18,5,6,74,57,5,42,69,95,57,62,99,69,37,37,69,99,62,58,95,70,41,4,47,44,5,3,0,0,0,2,0,97,0,0,1,200,2,0,0,7,0,23,0,84,0,184,0,0,69,88,184,0,13,47,27,185,0,13,0,11,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,187,0,1,0,1,0,9,0,4,43,184,0,13,16,185,0,6,0,1,244,186,0,22,0,1,0,9,17,18,57,48,49,19,51,50,53,52,38,43,1,1,39,35,21,35,17,51,50,30,2,21,20,6,7,23,143,106,150,77,73,106,1,6,148,114,46,162,42,68,48,27,74,64,150,1,8,108,57,46,254,37,228,228,2,0,15,33,53,38,61,72,9,231,0,0,0,0,1,0,46,255,244,1,160,2,12,0,49,0,73,0,184,0,0,69,88,184,0,26,47,27,185,0,26,0,11,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,7,0,1,244,186,0,16,0,0,0,26,17,18,57,184,0,26,16,185,0,33,0,1,244,186,0,40,0,26,0,0,17,18,57,48,49,23,34,38,39,55,30,1,51,50,54,53,52,46,2,47,1,46,3,53,52,62,2,51,50,22,23,7,46,1,35,34,6,21,20,22,31,1,30,3,21,20,14,2,237,63,93,35,28,31,83,50,62,70,15,26,36,21,70,26,46,34,20,25,44,60,36,53,80,25,26,25,66,41,54,65,52,46,71,28,47,32,18,25,47,66,12,43,33,33,32,39,54,45,24,32,23,17,9,29,10,26,32,41,26,29,48,34,19,36,25,30,23,30,48,42,39,40,19,30,11,23,31,44,31,30,51,38,21,0,0,1,0,29,0,0,1,168,2,0,0,7,0,51,0,184,0,0,69,88,184,0,2,47,27,185,0,2,0,11,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,184,0,2,16,185,0,1,0,1,244,184,0,4,208,48,49,19,35,53,33,21,35,17,35,204,175,1,139,174,46,1,217,39,39,254,39,0,0,0,0,1,0,95,255,244,1,218,2,0,0,25,0,51,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,11,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,13,0,1,244,184,0,6,16,184,0,19,208,48,49,5,34,46,2,53,17,51,17,20,30,2,51,50,62,2,53,17,51,17,20,14,2,1,29,37,69,52,32,46,23,39,53,29,29,53,40,24,43,32,52,68,12,20,48,81,61,1,58,254,203,51,67,40,16,16,40,67,51,1,53,254,198,61,81,48,20,0,0,1,0,4,0,0,1,160,2,0,0,13,0,55,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,186,0,5,0,0,0,12,17,18,57,184,0,0,16,184,0,10,208,48,49,19,51,19,30,1,23,51,62,1,55,19,51,3,35,4,49,99,16,27,16,4,16,25,16,98,46,180,49,2,0,254,222,47,79,46,46,79,47,1,34,254,0,0,0,1,0,28,0,0,2,123,2,0,0,33,0,83,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,32,47,27,185,0,32,0,5,62,89,184,0,22,208,186,0,6,0,22,0,0,17,18,57,184,0,0,16,184,0,10,208,184,0,20,208,186,0,15,0,22,0,20,17,18,57,186,0,28,0,10,0,22,17,18,57,48,49,19,51,19,30,1,23,51,62,1,55,19,51,19,30,1,23,51,62,1,55,19,51,3,35,3,46,1,39,35,14,1,7,3,35,28,47,67,9,19,10,3,10,22,11,85,44,84,11,22,12,4,9,17,10,67,44,124,49,99,8,14,7,4,8,14,8,97,50,2,0,254,219,42,83,42,42,83,42,1,37,254,219,42,83,42,42,83,42,1,37,254,0,1,82,31,55,30,30,55,31,254,174,0,0,1,0,17,0,0,1,147,2,0,0,25,0,111,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,11,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,11,62,89,184,0,0,69,88,184,0,14,47,27,185,0,14,0,5,62,89,184,0,0,69,88,184,0,24,47,27,185,0,24,0,5,62,89,186,0,0,0,1,0,24,17,18,57,186,0,7,0,14,0,1,17,18,57,186,0,13,0,14,0,11,17,18,57,186,0,20,0,14,0,1,17,18,57,48,49,19,39,51,23,30,1,23,51,62,1,63,1,51,7,19,35,39,46,1,39,35,14,1,15,1,35,183,154,49,89,11,19,14,4,11,20,10,87,48,154,166,50,94,11,24,14,4,14,23,11,93,48,1,9,247,144,17,33,22,22,33,17,144,250,254,250,151,19,39,23,23,39,19,151,0,0,1,0,3,0,0,1,126,2,0,0,15,0,55,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,11,62,89,184,0,0,69,88,184,0,14,47,27,185,0,14,0,5,62,89,186,0,7,0,14,0,1,17,18,57,184,0,1,16,184,0,11,208,48,49,55,3,51,23,30,1,23,51,62,1,63,1,51,3,21,35,169,166,48,81,14,30,16,4,15,29,14,80,48,167,46,205,1,51,154,29,53,28,28,53,29,154,254,205,205,0,0,0,1,0,50,0,0,1,168,2,0,0,9,0,69,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,11,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,185,0,6,0,1,244,184,0,0,208,184,0,0,47,184,0,3,16,185,0,1,0,1,244,184,0,5,208,184,0,5,47,48,49,55,1,33,53,33,21,1,33,21,33,50,1,58,254,225,1,87,254,199,1,61,254,138,26,1,192,38,26,254,64,38,0,0,255,255,0,8,0,0,1,187,2,222,2,38,4,195,0,0,0,7,7,34,0,225,255,138,255,255,0,8,0,0,1,187,2,222,2,38,4,195,0,0,0,7,7,37,0,225,255,138,255,255,0,8,0,0,1,187,2,209,2,38,4,195,0,0,0,7,7,40,0,225,255,138,255,255,0,8,0,0,1,187,2,204,2,38,4,195,0,0,0,7,7,42,0,225,255,138,255,255,0,8,0,0,1,187,2,168,2,38,4,195,0,0,0,7,7,54,0,225,255,138,255,255,0,8,0,0,1,187,2,149,2,38,4,195,0,0,0,7,7,44,0,225,255,138,255,255,0,8,0,0,1,187,2,209,2,38,4,195,0,0,0,7,7,49,0,225,255,138,255,255,0,8,0,0,1,187,2,241,2,38,4,195,0,0,0,7,7,58,0,225,255,138,255,255,0,8,0,0,1,187,2,211,2,38,4,195,0,0,0,7,7,62,0,225,255,138,255,255,0,8,255,62,1,187,2,0,2,38,4,195,0,0,0,7,7,51,0,225,252,234,255,255,0,8,0,0,1,187,2,233,2,38,4,195,0,0,0,7,7,56,0,225,255,138,255,255,0,8,0,0,1,187,2,254,2,38,4,195,0,0,0,7,7,119,0,225,255,138,255,255,0,8,0,0,1,187,2,254,2,38,4,195,0,0,0,7,7,121,0,225,255,138,255,255,0,8,0,0,1,187,3,13,2,38,4,195,0,0,0,7,7,123,0,225,255,138,255,255,0,8,0,0,1,187,3,39,2,38,4,195,0,0,0,7,7,125,0,225,255,138,255,255,0,8,255,62,1,187,2,209,2,38,4,195,0,0,0,39,7,40,0,225,255,138,0,7,7,51,0,225,252,234,255,255,0,8,0,0,1,187,3,39,2,38,4,195,0,0,0,7,7,127,0,225,255,138,255,255,0,8,0,0,1,187,3,39,2,38,4,195,0,0,0,7,7,129,0,225,255,138,255,255,0,8,0,0,1,187,3,53,2,38,4,195,0,0,0,7,7,131,0,225,255,138,255,255,0,8,0,0,1,187,3,40,2,38,4,195,0,0,0,7,7,133,0,225,255,138,255,255,0,8,255,62,1,187,2,209,2,38,4,195,0,0,0,39,7,49,0,225,255,138,0,7,7,51,0,225,252,234,0,2,0,8,255,51,1,223,2,0,0,9,0,36,0,87,0,184,0,0,69,88,184,0,25,47,27,185,0,25,0,11,62,89,184,0,0,69,88,184,0,23,47,27,185,0,23,0,5,62,89,186,0,33,0,13,0,3,43,186,0,5,0,25,0,23,17,18,57,186,0,21,0,25,0,23,17,18,57,184,0,21,47,185,0,9,0,1,244,184,0,23,16,184,0,20,208,184,0,27,208,48,49,37,39,46,1,39,35,14,1,15,1,1,14,1,35,34,38,53,52,54,55,35,39,35,7,35,19,51,19,14,1,21,20,22,51,50,54,55,1,65,34,17,28,15,4,15,27,17,34,1,93,11,37,17,35,49,44,27,6,61,218,62,46,194,47,194,32,42,31,19,14,19,11,205,93,47,78,45,45,79,46,93,254,126,10,14,40,42,38,66,19,168,168,2,0,254,0,20,65,31,26,26,6,8,0,0,0,2,0,21,0,0,2,136,2,0,0,6,0,22,0,107,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,11,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,186,0,0,0,14,0,12,17,18,57,186,0,1,0,14,0,12,17,18,57,184,0,9,208,185,0,7,0,1,244,184,0,0,16,185,0,11,0,1,244,184,0,14,16,185,0,16,0,1,244,186,0,21,0,14,0,9,17,18,57,184,0,21,16,185,0,19,0,1,244,48,49,37,17,35,14,1,15,1,5,21,33,53,35,7,35,1,33,21,35,21,51,21,35,21,1,93,3,25,52,26,59,1,208,254,213,186,95,47,1,48,1,57,243,202,202,198,1,21,42,90,45,100,160,38,161,161,2,0,38,184,37,215,255,255,0,21,0,0,2,136,2,222,2,38,4,243,0,0,0,7,7,37,1,217,255,138,255,255,0,21,0,0,2,136,2,149,2,38,4,243,0,0,0,7,7,44,1,217,255,138,0,3,0,37,0,0,1,230,2,0,0,14,0,23,0,43,0,103,0,184,0,0,69,88,184,0,36,47,27,185,0,36,0,11,62,89,184,0,0,69,88,184,0,30,47,27,185,0,30,0,5,62,89,186,0,11,0,12,0,3,43,186,0,16,0,8,0,3,43,184,0,30,16,185,0,0,0,1,244,184,0,36,16,185,0,22,0,1,244,186,0,24,0,16,0,8,17,18,57,184,0,12,16,184,0,32,208,184,0,11,16,184,0,34,208,184,0,34,47,48,49,37,50,62,2,53,52,38,43,1,21,51,21,35,21,53,51,50,54,53,52,38,43,1,23,30,1,21,20,6,43,1,53,35,53,55,17,51,50,22,21,20,6,7,1,12,39,64,46,25,90,84,108,145,145,93,84,72,77,75,97,203,54,69,113,95,164,77,77,153,84,101,45,44,34,12,27,44,32,54,51,91,31,98,254,50,48,49,43,205,10,60,53,76,74,132,29,2,1,93,59,67,39,58,12,0,0,0,255,255,0,97,255,97,1,213,2,0,2,38,4,196,0,0,0,7,7,43,1,24,253,3,255,255,0,55,255,37,1,200,2,12,2,38,4,197,0,0,0,7,7,87,1,31,0,0,255,255,0,55,255,244,1,200,2,222,2,38,4,197,0,0,0,7,7,37,1,32,255,138,255,255,0,55,255,244,1,200,2,209,2,38,4,197,0,0,0,7,7,40,1,32,255,138,255,255,0,55,255,244,1,200,2,211,2,38,4,197,0,0,0,7,7,62,1,32,255,138,255,255,0,55,255,244,1,200,2,171,2,38,4,197,0,0,0,7,7,52,1,32,255,138,255,255,0,97,0,0,1,229,2,211,2,38,4,198,0,0,0,7,7,62,1,20,255,138,255,255,0,97,255,62,1,229,2,0,2,38,4,198,0,0,0,7,7,51,1,16,252,234,255,255,0,97,255,97,1,229,2,0,2,38,4,198,0,0,0,7,7,43,1,16,253,3,255,255,0,37,0,0,1,246,2,0,2,6,5,155,0,0,255,255,0,97,0,0,1,158,2,222,2,38,4,199,0,0,0,7,7,34,1,5,255,138,255,255,0,97,0,0,1,158,2,222,2,38,4,199,0,0,0,7,7,37,1,5,255,138,255,255,0,97,0,0,1,158,2,209,2,38,4,199,0,0,0,7,7,40,1,5,255,138,255,255,0,97,0,0,1,158,2,211,2,38,4,199,0,0,0,7,7,62,1,5,255,138,255,255,0,97,0,0,1,158,2,168,2,38,4,199,0,0,0,7,7,54,1,5,255,138,255,255,0,97,0,0,1,158,2,149,2,38,4,199,0,0,0,7,7,44,1,5,255,138,255,255,0,97,0,0,1,158,2,209,2,38,4,199,0,0,0,7,7,49,1,5,255,138,255,255,0,97,0,0,1,158,2,171,2,38,4,199,0,0,0,7,7,52,1,5,255,138,255,255,0,97,255,62,1,158,2,0,2,38,4,199,0,0,0,7,7,51,1,8,252,234,255,255,0,97,0,0,1,158,2,233,2,38,4,199,0,0,0,7,7,56,1,5,255,138,255,255,0,96,0,0,1,170,2,204,2,38,4,199,0,0,0,7,7,42,1,5,255,138,255,255,0,97,0,0,1,208,2,254,2,38,4,199,0,0,0,7,7,119,1,5,255,138,255,255,0,76,0,0,1,158,2,254,2,38,4,199,0,0,0,7,7,121,1,5,255,138,255,255,0,97,0,0,1,186,3,13,2,38,4,199,0,0,0,7,7,123,1,5,255,138,255,255,0,97,0,0,1,158,3,39,2,38,4,199,0,0,0,7,7,125,1,5,255,138,255,255,0,97,255,62,1,158,2,209,2,38,4,199,0,0,0,39,7,40,1,5,255,138,0,7,7,51,1,8,252,234,0,1,0,97,255,51,1,171,2,0,0,32,0,93,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,11,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,186,0,27,0,0,0,3,43,184,0,8,16,185,0,10,0,1,244,186,0,14,0,8,0,7,17,18,57,184,0,14,47,185,0,12,0,1,244,184,0,7,16,185,0,17,0,1,244,184,0,7,16,184,0,18,208,48,49,5,34,38,53,52,54,55,35,17,33,21,33,21,51,21,35,21,33,21,35,14,3,21,20,22,51,50,55,23,14,1,1,106,35,49,43,30,254,1,51,254,251,221,221,1,15,2,17,34,27,17,32,19,25,18,16,11,37,205,40,42,38,66,19,2,0,38,184,37,215,38,3,21,31,39,22,26,26,14,27,10,14,0,0,0,255,255,0,97,0,0,1,158,3,59,2,38,4,199,0,0,0,7,7,137,1,5,255,138,255,255,0,55,255,244,1,206,2,222,2,38,4,201,0,0,0,7,7,37,1,46,255,138,255,255,0,55,255,244,1,206,2,209,2,38,4,201,0,0,0,7,7,40,1,46,255,138,255,255,0,55,255,244,1,206,2,209,2,38,4,201,0,0,0,7,7,49,1,46,255,138,255,255,0,55,255,244,1,206,2,171,2,38,4,201,0,0,0,7,7,52,1,46,255,138,255,255,0,55,255,37,1,206,2,12,2,38,4,201,0,0,0,7,7,84,1,40,0,0,255,255,0,55,255,244,1,206,2,211,2,38,4,201,0,0,0,7,7,62,1,46,255,138,255,255,0,55,255,244,1,206,2,149,2,38,4,201,0,0,0,7,7,44,1,46,255,138,255,255,0,55,255,244,1,211,2,204,2,38,4,201,0,0,0,7,7,42,1,46,255,138,0,1,0,55,255,244,2,1,2,111,0,50,0,89,0,184,0,0,69,88,184,0,13,47,27,185,0,13,0,11,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,5,62,89,187,0,21,0,1,0,27,0,4,43,184,0,13,16,185,0,37,0,1,244,184,0,3,16,185,0,43,0,1,244,186,0,50,0,13,0,3,17,18,57,125,184,0,50,47,24,185,0,48,0,1,244,48,49,37,14,1,35,34,46,2,53,52,62,2,51,50,22,23,38,53,52,54,51,50,23,7,46,1,35,34,6,21,20,22,23,7,46,1,35,34,6,21,20,22,51,50,54,55,53,35,53,51,1,206,26,85,55,54,89,63,35,36,66,91,56,28,45,19,9,48,35,23,20,9,7,13,11,23,22,11,16,27,21,58,45,94,107,103,94,37,61,20,128,172,43,23,32,37,70,99,63,61,99,70,37,10,8,22,22,34,39,10,33,2,4,26,17,18,34,20,30,17,25,120,106,105,123,19,17,153,37,0,255,255,0,97,0,0,1,225,2,209,2,38,4,202,0,0,0,7,7,40,1,33,255,138,255,255,0,97,255,62,1,225,2,0,2,38,4,202,0,0,0,7,7,51,1,33,252,234,255,255,0,97,255,26,1,225,2,0,2,38,4,202,0,0,0,7,7,47,1,33,252,224,0,2,0,36,0,0,2,64,2,0,0,3,0,23,0,111,0,184,0,0,69,88,184,0,16,47,27,185,0,16,0,11,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,184,0,16,16,184,0,15,220,184,0,12,220,184,0,0,208,184,0,12,16,184,0,2,220,184,0,0,16,184,0,4,208,184,0,11,16,184,0,7,208,184,0,2,16,185,0,9,0,1,244,184,0,15,16,184,0,19,208,184,0,16,16,184,0,20,208,184,0,19,16,184,0,23,208,48,49,1,33,21,33,55,35,17,35,53,33,21,35,17,35,53,55,53,51,21,33,53,51,21,51,1,199,254,220,1,36,121,75,46,254,220,46,81,81,46,1,36,46,75,1,127,92,92,254,129,253,253,1,127,27,4,98,98,98,98,0,0,255,255,0,8,0,0,0,161,2,222,2,38,4,203,0,0,0,6,7,34,120,138,0,0,255,255,0,79,0,0,0,232,2,222,2,38,4,203,0,0,0,6,7,37,120,138,0,0,255,255,255,241,0,0,0,255,2,209,2,38,4,203,0,0,0,6,7,40,120,138,0,0,255,255,255,211,0,0,1,29,2,204,2,38,4,203,0,0,0,6,7,42,120,138,0,0,255,255,255,242,0,0,0,254,2,168,2,38,4,203,0,0,0,6,7,54,120,138,0,0,255,255,255,252,0,0,0,244,2,149,2,38,4,203,0,0,0,6,7,44,120,138,0,0,255,255,0,80,0,0,0,160,2,171,2,38,4,203,0,0,0,6,7,52,120,138,0,0,255,255,255,241,0,0,0,255,2,211,2,38,4,203,0,0,0,6,7,62,120,138,0,0,255,255,0,65,0,0,0,190,2,233,2,38,4,203,0,0,0,6,7,56,120,138,0,0,255,255,0,82,255,62,0,158,2,0,2,38,4,203,0,0,0,7,7,51,0,120,252,234,0,1,0,44,255,51,0,193,2,0,0,21,0,53,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,11,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,186,0,16,0,0,0,3,43,184,0,7,16,184,0,10,208,48,49,23,34,38,53,52,54,55,35,17,51,17,14,1,21,20,22,51,50,55,23,14,1,128,35,49,36,26,9,46,26,34,32,19,25,18,16,11,37,205,40,42,41,56,26,2,0,254,0,29,54,33,26,26,14,27,10,14,255,255,255,240,0,0,1,0,2,209,2,38,4,203,0,0,0,6,7,49,120,138,0,0,255,255,0,41,255,244,1,174,2,209,2,38,4,204,0,0,0,7,7,40,1,39,255,138,255,255,0,97,255,37,1,225,2,0,2,38,4,205,0,0,0,7,7,84,1,32,0,0,255,255,0,97,255,62,1,225,2,0,2,38,4,205,0,0,0,7,7,51,1,32,252,234,255,255,0,97,255,97,1,225,2,0,2,38,4,205,0,0,0,7,7,43,1,32,253,3,255,255,0,85,0,0,1,139,2,222,2,38,4,206,0,0,0,6,7,37,126,138,0,0,255,255,0,97,0,0,1,139,2,94,2,38,4,206,0,0,0,7,7,63,1,71,255,108,255,255,0,97,255,37,1,139,2,0,2,38,4,206,0,0,0,7,7,84,1,1,0,0,255,255,0,97,0,0,1,139,2,0,2,38,4,206,0,0,0,7,4,119,0,219,0,236,255,255,0,97,255,62,1,139,2,0,2,38,4,206,0,0,0,7,7,51,1,1,252,234,255,255,0,2,255,62,1,139,2,149,2,38,4,206,0,0,0,38,7,44,126,138,0,7,7,51,1,1,252,234,0,0,255,255,0,97,255,97,1,139,2,0,2,38,4,206,0,0,0,7,7,43,1,1,253,3,0,1,0,4,0,0,1,143,2,0,0,13,0,93,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,11,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,5,62,89,186,0,10,0,11,0,3,43,186,0,5,0,4,0,3,43,184,0,1,16,185,0,0,0,1,244,186,0,3,0,1,0,7,17,18,57,184,0,3,16,184,0,6,208,184,0,3,16,184,0,12,208,184,0,9,208,48,49,37,21,33,53,7,39,55,17,51,17,55,23,7,21,1,143,254,214,78,19,97,46,157,18,175,39,39,188,42,29,53,1,28,254,248,83,30,92,170,0,0,255,255,0,97,0,0,2,15,2,222,2,38,4,207,0,0,0,7,7,37,1,56,255,138,255,255,0,97,0,0,2,15,2,171,2,38,4,207,0,0,0,7,7,52,1,56,255,138,255,255,0,97,255,62,2,15,2,0,2,38,4,207,0,0,0,7,7,51,1,56,252,234,255,255,0,97,0,0,1,219,2,222,2,38,4,208,0,0,0,7,7,37,1,38,255,138,255,255,0,97,0,0,1,219,2,222,2,38,4,208,0,0,0,7,7,34,1,38,255,138,255,255,0,97,0,0,1,219,2,211,2,38,4,208,0,0,0,7,7,62,1,38,255,138,255,255,0,97,0,0,1,219,2,204,2,38,4,208,0,0,0,7,7,42,1,38,255,138,255,255,0,97,255,37,1,219,2,0,2,38,4,208,0,0,0,7,7,84,1,38,0,0,255,255,0,97,0,0,1,219,2,171,2,38,4,208,0,0,0,7,7,52,1,38,255,138,255,255,0,97,255,62,1,219,2,0,2,38,4,208,0,0,0,7,7,51,1,38,252,234,255,255,0,97,255,97,1,219,2,0,2,38,4,208,0,0,0,7,7,43,1,38,253,3,255,255,0,55,255,244,2,7,2,222,2,38,4,209,0,0,0,7,7,34,1,31,255,138,255,255,0,55,255,244,2,7,2,222,2,38,4,209,0,0,0,7,7,37,1,31,255,138,255,255,0,55,255,244,2,7,2,209,2,38,4,209,0,0,0,7,7,40,1,31,255,138,255,255,0,55,255,244,2,7,2,204,2,38,4,209,0,0,0,7,7,42,1,31,255,138,255,255,0,55,255,244,2,7,2,168,2,38,4,209,0,0,0,7,7,54,1,31,255,138,255,255,0,55,255,244,2,7,2,149,2,38,4,209,0,0,0,7,7,44,1,31,255,138,255,255,0,55,255,244,2,7,2,239,2,38,4,209,0,0,0,7,7,60,1,31,255,138,255,255,0,55,255,244,2,7,2,211,2,38,4,209,0,0,0,7,7,62,1,31,255,138,255,255,0,55,255,62,2,7,2,12,2,38,4,209,0,0,0,7,7,51,1,31,252,234,255,255,0,55,255,244,2,7,2,233,2,38,4,209,0,0,0,7,7,56,1,31,255,138,255,255,0,55,255,244,2,7,2,254,2,38,4,209,0,0,0,7,7,119,1,31,255,138,255,255,0,55,255,244,2,7,2,254,2,38,4,209,0,0,0,7,7,121,1,31,255,138,255,255,0,55,255,244,2,7,3,13,2,38,4,209,0,0,0,7,7,123,1,31,255,138,255,255,0,55,255,244,2,7,3,39,2,38,4,209,0,0,0,7,7,125,1,31,255,138,255,255,0,55,255,62,2,7,2,209,2,38,4,209,0,0,0,39,7,40,1,31,255,138,0,7,7,51,1,31,252,234,0,3,0,46,255,234,2,16,2,23,0,9,0,20,0,47,0,133,0,184]);fileData0.push.apply(fileData0,[0,0,69,88,184,0,43,47,27,185,0,43,0,11,62,89,184,0,0,69,88,184,0,29,47,27,185,0,29,0,5,62,89,186,0,0,0,29,0,43,17,18,57,185,0,2,0,1,244,186,0,9,0,29,0,43,17,18,57,186,0,10,0,43,0,29,17,18,57,184,0,43,16,185,0,13,0,1,244,186,0,20,0,29,0,43,17,18,57,186,0,21,0,43,0,29,17,18,57,186,0,32,0,29,0,43,17,18,57,186,0,35,0,29,0,43,17,18,57,186,0,45,0,43,0,29,17,18,57,48,49,55,22,51,50,62,2,53,52,47,1,46,1,35,34,14,2,21,20,23,1,30,1,21,20,14,2,35,34,38,39,7,39,55,46,1,53,52,62,2,51,50,23,55,23,160,50,77,42,68,48,27,37,21,24,64,39,42,68,49,26,37,1,69,26,29,35,61,85,51,47,78,30,60,26,64,26,29,34,62,85,51,93,62,60,26,81,53,32,60,84,53,90,57,28,25,27,31,59,84,53,89,59,1,74,34,91,57,62,99,70,38,31,29,70,21,75,35,91,57,62,99,69,37,60,71,21,0,0,0,0,2,0,55,0,0,2,158,2,0,0,18,0,29,0,85,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,11,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,8,16,185,0,21,0,1,244,184,0,10,208,186,0,14,0,8,0,0,17,18,57,184,0,14,47,185,0,12,0,1,244,184,0,0,16,185,0,29,0,1,244,184,0,17,208,48,49,33,34,38,53,52,62,2,51,33,21,35,21,51,21,35,21,51,21,37,17,35,34,6,21,20,30,2,51,1,65,134,132,33,66,100,66,1,84,243,202,202,253,254,213,48,115,105,26,54,83,57,136,119,59,95,67,36,38,184,37,215,38,38,1,182,116,105,49,80,57,31,0,2,0,55,255,244,2,12,2,151,0,17,0,49,0,71,0,184,0,0,69,88,184,0,42,47,27,185,0,42,0,11,62,89,184,0,0,69,88,184,0,32,47,27,185,0,32,0,5,62,89,185,0,0,0,1,244,184,0,42,16,185,0,10,0,1,244,186,0,24,0,32,0,42,17,18,57,184,0,24,16,184,0,44,208,48,49,37,50,62,2,53,52,46,2,35,34,6,21,20,30,2,1,30,1,21,20,6,7,30,1,21,20,14,2,35,34,46,2,53,52,62,2,51,50,23,62,1,53,52,39,1,31,41,68,48,27,27,48,68,41,84,100,26,48,68,1,4,9,10,54,43,43,49,35,61,85,51,51,85,62,34,34,62,85,51,56,48,46,44,14,29,32,59,84,53,52,84,59,31,120,106,53,84,59,32,2,122,20,30,22,44,56,13,34,112,75,62,99,70,38,38,70,99,62,62,99,69,37,23,8,47,32,26,29,0,255,255,0,55,255,244,2,12,2,222,2,38,5,84,0,0,0,7,7,37,1,31,255,138,255,255,0,55,255,244,2,12,2,222,2,38,5,84,0,0,0,7,7,34,1,31,255,138,255,255,0,55,255,244,2,12,2,233,2,38,5,84,0,0,0,7,7,56,1,31,255,138,255,255,0,55,255,244,2,12,2,204,2,38,5,84,0,0,0,7,7,42,1,28,255,138,255,255,0,55,255,62,2,12,2,151,2,38,5,84,0,0,0,7,7,51,1,31,252,234,0,2,0,55,255,51,2,7,2,12,0,35,0,53,0,73,0,184,0,0,69,88,184,0,16,47,27,185,0,16,0,11,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,5,62,89,186,0,30,0,0,0,3,43,184,0,6,16,184,0,24,208,184,0,6,16,185,0,36,0,1,244,184,0,16,16,185,0,46,0,1,244,48,49,5,34,38,53,52,54,55,34,46,2,53,52,62,2,51,50,30,2,21,20,6,7,14,1,21,20,22,51,50,55,23,14,1,39,50,62,2,53,52,46,2,35,34,6,21,20,30,2,1,62,35,49,31,29,55,89,62,33,34,62,85,51,51,85,61,35,85,78,43,40,32,19,25,18,17,12,37,48,41,68,48,27,27,48,68,41,84,100,26,48,68,205,40,42,30,58,23,38,70,99,62,62,99,69,37,37,69,99,62,102,128,35,19,62,27,26,26,14,27,10,14,234,32,59,84,53,52,84,59,31,120,106,53,84,59,32,0,0,0,255,255,0,55,255,244,2,7,2,209,2,38,4,209,0,0,0,7,7,49,1,31,255,138,255,255,0,55,255,244,2,7,3,59,2,38,4,209,0,0,0,7,7,137,1,31,255,138,255,255,0,97,0,0,1,200,2,222,2,38,4,212,0,0,0,7,7,37,1,16,255,138,255,255,0,97,0,0,1,200,2,171,2,38,4,212,0,0,0,7,7,52,1,16,255,138,255,255,0,97,0,0,1,200,2,211,2,38,4,212,0,0,0,7,7,62,1,16,255,138,255,255,0,97,255,37,1,200,2,0,2,38,4,212,0,0,0,7,7,84,1,18,0,0,255,255,0,97,255,62,1,200,2,0,2,38,4,212,0,0,0,7,7,51,1,18,252,234,255,255,0,97,255,62,1,200,2,149,2,38,4,212,0,0,0,39,7,44,1,16,255,138,0,7,7,51,1,18,252,234,255,255,0,97,255,97,1,200,2,0,2,38,4,212,0,0,0,7,7,43,1,18,253,3,255,255,0,46,255,244,1,160,2,222,2,38,4,213,0,0,0,7,7,37,0,244,255,138,255,255,0,46,255,244,1,160,2,209,2,38,4,213,0,0,0,7,7,40,0,244,255,138,255,255,0,46,255,244,1,160,2,211,2,38,4,213,0,0,0,7,7,62,0,244,255,138,255,255,0,46,255,37,1,160,2,12,2,38,4,213,0,0,0,7,7,87,0,238,0,0,255,255,0,46,255,37,1,160,2,12,2,38,4,213,0,0,0,7,7,84,0,252,0,0,255,255,0,46,255,244,1,160,2,171,2,38,4,213,0,0,0,7,7,52,0,244,255,138,255,255,0,46,255,62,1,160,2,12,2,38,4,213,0,0,0,7,7,51,0,252,252,234,255,255,0,46,255,244,3,95,2,12,0,38,4,213,0,0,0,7,4,213,1,191,0,0,0,1,0,98,255,244,2,12,2,12,0,43,0,93,0,184,0,0,69,88,184,0,30,47,27,185,0,30,0,11,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,6,0,1,244,186,0,14,0,30,0,0,17,18,57,184,0,14,16,184,0,15,220,184,0,30,16,185,0,19,0,1,244,184,0,0,16,184,0,24,208,184,0,24,47,186,0,34,0,14,0,15,17,18,57,48,49,5,34,38,39,55,22,51,50,54,53,52,46,2,47,1,55,46,1,35,34,6,21,17,35,17,52,62,2,51,50,22,23,7,30,3,21,20,14,2,1,114,45,79,27,28,52,70,52,55,14,39,69,54,3,127,16,59,48,73,84,46,30,54,76,45,65,82,24,129,50,69,42,18,23,40,57,12,34,28,31,53,58,45,21,37,31,24,8,31,127,30,44,82,87,254,197,1,70,46,74,51,27,65,50,128,8,28,39,49,27,29,51,39,23,0,0,0,255,255,0,29,0,0,1,168,2,211,2,38,4,214,0,0,0,7,7,62,0,226,255,138,255,255,0,29,255,37,1,168,2,0,2,38,4,214,0,0,0,7,7,87,0,219,0,0,255,255,0,29,255,37,1,168,2,0,2,38,4,214,0,0,0,7,7,84,0,226,0,0,255,255,0,29,255,62,1,168,2,0,2,38,4,214,0,0,0,7,7,51,0,226,252,234,255,255,0,29,255,97,1,168,2,0,2,38,4,214,0,0,0,7,7,43,0,226,253,3,0,1,0,29,0,0,1,168,2,0,0,16,0,81,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,11,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,5,62,89,186,0,7,0,14,0,6,17,18,57,184,0,7,16,184,0,11,208,184,0,2,208,184,0,7,16,184,0,3,208,184,0,14,16,185,0,13,0,1,244,184,0,16,208,48,49,19,21,51,21,35,21,35,53,35,53,55,51,53,35,53,33,21,250,126,126,46,127,85,42,175,1,139,1,217,190,33,250,250,31,2,190,39,39,0,0,0,255,255,0,95,255,244,1,218,2,222,2,38,4,215,0,0,0,7,7,34,1,28,255,138,255,255,0,95,255,244,1,218,2,222,2,38,4,215,0,0,0,7,7,37,1,28,255,138,255,255,0,95,255,244,1,218,2,209,2,38,4,215,0,0,0,7,7,40,1,28,255,138,255,255,0,95,255,244,1,218,2,204,2,38,4,215,0,0,0,7,7,42,1,28,255,138,255,255,0,95,255,244,1,218,2,168,2,38,4,215,0,0,0,7,7,54,1,28,255,138,255,255,0,95,255,244,1,218,2,149,2,38,4,215,0,0,0,7,7,44,1,28,255,138,255,255,0,95,255,244,1,218,2,209,2,38,4,215,0,0,0,7,7,49,1,28,255,138,255,255,0,95,255,244,1,218,2,241,2,38,4,215,0,0,0,7,7,58,1,28,255,138,255,255,0,95,255,244,1,218,2,239,2,38,4,215,0,0,0,7,7,60,1,28,255,138,255,255,0,95,255,244,1,218,2,211,2,38,4,215,0,0,0,7,7,62,1,28,255,138,255,255,0,95,255,244,1,218,3,1,2,38,4,215,0,0,0,7,7,115,1,28,255,138,255,255,0,95,255,244,1,218,3,59,2,38,4,215,0,0,0,7,7,108,1,28,255,138,255,255,0,95,255,244,1,218,3,57,2,38,4,215,0,0,0,7,7,117,1,28,255,138,255,255,0,95,255,244,1,218,3,59,2,38,4,215,0,0,0,7,7,111,1,28,255,138,255,255,0,95,255,62,1,218,2,0,2,38,4,215,0,0,0,7,7,51,1,28,252,234,255,255,0,95,255,244,1,218,2,233,2,38,4,215,0,0,0,7,7,56,1,28,255,138,0,1,0,95,255,51,1,218,2,0,0,45,0,59,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,11,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,185,0,21,0,1,244,184,0,14,16,184,0,27,208,184,0,8,16,184,0,34,208,48,49,5,34,38,53,52,62,2,55,34,46,2,53,17,51,17,20,30,2,51,50,62,2,53,17,51,17,20,14,2,7,14,1,21,20,22,51,50,55,23,14,1,1,60,35,49,11,18,23,12,42,74,54,31,46,23,39,53,29,29,53,40,24,43,20,33,43,23,40,44,31,20,23,20,16,11,37,205,40,42,19,32,26,23,11,20,49,81,60,1,58,254,203,51,67,40,16,16,40,67,51,1,53,254,198,51,68,46,29,12,20,62,26,26,26,14,27,10,14,0,0,1,0,95,255,244,2,66,2,161,0,40,0,59,0,184,0,0,69,88,184,0,20,47,27,185,0,20,0,11,62,89,184,0,0,69,88,184,0,14,47,27,185,0,14,0,5,62,89,184,0,20,16,184,0,33,208,184,0,8,220,184,0,14,16,185,0,27,0,1,244,48,49,1,30,1,21,20,14,2,7,17,20,14,2,35,34,46,2,53,17,51,17,20,30,2,51,50,62,2,53,17,51,62,1,53,52,38,39,2,47,9,10,18,29,37,20,32,52,68,37,37,69,52,32,46,23,39,53,29,29,53,40,24,10,45,49,6,8,2,161,17,34,19,27,40,27,17,6,254,224,61,81,48,20,20,48,81,61,1,58,254,203,51,67,40,16,16,40,67,51,1,53,5,46,37,12,27,14,0,255,255,0,95,255,244,2,66,2,222,2,38,5,132,0,0,0,7,7,37,1,28,255,138,255,255,0,95,255,244,2,66,2,222,2,38,5,132,0,0,0,7,7,34,1,28,255,138,255,255,0,95,255,244,2,66,2,233,2,38,5,132,0,0,0,7,7,56,1,28,255,138,255,255,0,95,255,244,2,66,2,204,2,38,5,132,0,0,0,7,7,42,1,28,255,138,255,255,0,95,255,62,2,66,2,161,2,38,5,132,0,0,0,7,7,51,1,28,252,234,255,255,0,28,0,0,2,123,2,222,2,38,4,217,0,0,0,7,7,34,1,76,255,138,255,255,0,28,0,0,2,123,2,222,2,38,4,217,0,0,0,7,7,37,1,76,255,138,255,255,0,28,0,0,2,123,2,209,2,38,4,217,0,0,0,7,7,40,1,76,255,138,255,255,0,28,0,0,2,123,2,168,2,38,4,217,0,0,0,7,7,54,1,76,255,138,255,255,0,3,0,0,1,126,2,222,2,38,4,219,0,0,0,7,7,34,0,194,255,138,255,255,0,3,0,0,1,126,2,222,2,38,4,219,0,0,0,7,7,37,0,194,255,138,255,255,0,3,0,0,1,126,2,209,2,38,4,219,0,0,0,7,7,40,0,194,255,138,255,255,0,3,0,0,1,126,2,168,2,38,4,219,0,0,0,7,7,54,0,194,255,138,255,255,0,3,0,0,1,126,2,171,2,38,4,219,0,0,0,7,7,52,0,194,255,138,255,255,0,3,255,62,1,126,2,0,2,38,4,219,0,0,0,7,7,51,0,192,252,234,255,255,0,3,0,0,1,126,2,233,2,38,4,219,0,0,0,7,7,56,0,194,255,138,255,255,0,3,0,0,1,126,2,204,2,38,4,219,0,0,0,7,7,42,0,194,255,138,255,255,0,50,0,0,1,168,2,222,2,38,4,220,0,0,0,7,7,37,0,248,255,138,255,255,0,50,0,0,1,168,2,211,2,38,4,220,0,0,0,7,7,62,0,248,255,138,255,255,0,50,0,0,1,168,2,171,2,38,4,220,0,0,0,7,7,52,0,248,255,138,255,255,0,50,255,62,1,168,2,0,2,38,4,220,0,0,0,7,7,51,0,254,252,234,255,255,0,50,255,97,1,168,2,0,2,38,4,220,0,0,0,7,7,43,0,254,253,3,0,2,0,37,0,0,1,246,2,0,0,14,0,31,0,87,0,184,0,0,69,88,184,0,15,47,27,185,0,15,0,11,62,89,184,0,0,69,88,184,0,25,47,27,185,0,25,0,5,62,89,185,0,0,0,1,244,184,0,15,16,185,0,8,0,1,244,186,0,12,0,15,0,25,17,18,57,184,0,12,47,184,0,11,208,184,0,12,16,184,0,28,208,184,0,11,16,184,0,29,208,48,49,55,50,54,53,52,46,2,43,1,21,51,21,35,21,19,50,30,2,21,20,14,2,43,1,53,35,53,55,53,243,110,101,25,51,80,55,83,145,145,85,64,97,64,32,32,64,96,64,132,77,77,37,116,104,49,80,57,32,187,33,218,1,219,35,66,95,59,59,95,67,36,255,31,2,224,0,0,0,2,0,97,0,0,1,197,2,0,0,12,0,21,0,57,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,187,0,13,0,1,0,9,0,4,43,187,0,19,0,1,0,3,0,4,43,48,49,19,51,21,51,50,22,21,20,6,43,1,21,35,55,50,54,53,52,38,43,1,21,97,46,109,93,108,107,94,109,46,146,83,79,80,82,100,2,0,90,66,80,77,75,124,161,54,61,62,46,223,0,2,0,62,255,244,2,2,2,12,0,10,0,39,0,77,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,11,62,89,184,0,0,69,88,184,0,24,47,27,185,0,24,0,5,62,89,186,0,33,0,14,0,24,17,18,57,184,0,33,47,185,0,0,0,1,244,184,0,24,16,185,0,5,0,1,244,184,0,14,16,185,0,36,0,1,244,48,49,55,30,3,51,50,62,2,55,37,62,1,51,50,30,2,21,20,14,2,35,34,46,2,53,52,54,53,33,46,1,35,34,6,7,107,3,27,47,62,37,38,64,48,30,3,254,168,27,84,54,52,84,59,32,34,62,84,51,51,81,58,31,1,1,148,2,94,87,42,70,27,229,46,74,53,28,28,53,74,46,231,25,39,38,69,99,61,61,99,71,38,39,71,97,57,3,7,4,101,117,32,23,0,0,1,0,97,255,244,1,239,2,12,0,38,0,97,0,184,0,0,69,88,184,0,29,47,27,185,0,29,0,11,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,6,0,1,244,184,0,29,16,185,0,16,0,1,244,186,0,26,0,0,0,29,17,18,57,184,0,26,16,185,0,21,0,2,244,184,0,0,16,184,0,23,208,184,0,23,47,184,0,29,16,184,0,24,208,184,0,24,47,48,49,5,34,38,39,55,22,51,50,62,2,53,52,46,2,35,34,14,2,7,17,35,17,51,21,62,1,51,50,30,2,21,20,14,2,1,101,16,35,12,14,18,27,19,34,26,15,22,41,56,34,18,42,41,37,13,46,46,29,85,46,41,71,51,29,22,37,51,12,5,5,40,9,23,54,89,66,63,86,51,22,14,22,31,16,254,112,2,0,68,31,49,29,63,100,71,76,104,65,28,0,0,0,2,0,97,255,114,1,128,2,0,0,3,0,18,0,55,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,187,0,11,0,1,0,4,0,4,43,184,0,0,16,184,0,15,208,48,49,19,51,17,35,23,34,38,39,55,30,1,51,50,54,53,17,51,17,20,97,46,46,177,17,33,11,10,9,27,14,40,25,46,2,0,254,0,142,7,5,40,3,7,59,46,1,251,253,254,140,0,0,0,0,1,0,97,255,114,1,219,2,0,0,32,0,83,0,184,0,0,69,88,184,0,20,47,27,185,0,20,0,11,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,5,62,89,187,0,7,0,1,0,0,0,4,43,184,0,19,16,184,0,11,208,186,0,14,0,20,0,19,17,18,57,184,0,20,16,184,0,28,208,186,0,24,0,28,0,10,17,18,57,48,49,5,34,38,39,55,30,1,51,50,54,53,35,3,39,35,30,1,21,17,35,17,51,19,23,51,46,1,53,17,51,17,20,6,1,125,15,29,9,9,8,22,11,34,20,4,228,62,4,2,4,43,48,228,61,4,2,3,42,45,142,6,4,37,2,6,55,48,1,94,104,38,75,38,254,209,2,0,254,161,102,38,78,38,1,43,253,246,66,66,0,0,255,255,0,8,0,0,1,187,2,0,2,6,4,195,0,0,255,255,0,97,0,0,1,213,2,0,2,6,4,196,0,0,0,1,0,97,0,0,1,149,2,0,0,5,0,47,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,184,0,0,16,185,0,2,0,1,244,48,49,19,33,21,33,17,35,97,1,52,254,250,46,2,0,39,254,39,0,0,0,2,0,27,0,0,1,199,2,0,0,5,0,11,0,53,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,11,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,185,0,6,0,1,244,186,0,9,0,4,0,1,17,18,57,48,49,55,19,51,19,21,33,37,3,39,35,7,3,27,190,48,190,254,84,1,122,100,62,3,64,99,26,1,230,254,26,26,38,1,1,171,171,254,255,0,255,255,0,97,0,0,1,158,2,0,2,6,4,199,0,0,255,255,0,50,0,0,1,168,2,0,2,6,4,220,0,0,255,255,0,97,0,0,1,225,2,0,2,6,4,202,0,0,0,3,0,55,255,244,2,7,2,12,0,3,0,23,0,43,0,67,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,11,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,187,0,1,0,1,0,2,0,4,43,184,0,4,16,185,0,24,0,1,244,184,0,14,16,185,0,34,0,1,244,48,49,19,51,21,35,19,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,39,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,188,198,198,99,51,85,62,34,34,62,85,51,51,85,61,35,35,61,85,51,42,68,48,27,27,48,68,42,42,68,49,26,26,49,68,1,34,37,254,247,38,70,99,62,62,99,69,37,37,69,99,62,62,99,70,38,40,32,59,85,53,53,84,59,31,31,59,84,53,53,85,59,32,0,0,255,255,0,97,0,0,0,143,2,0,2,6,4,203,0,0,255,255,0,97,0,0,1,225,2,0,2,6,4,205,0,0,0,1,0,4,0,0,1,159,2,0,0,13,0,51,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,184,0,2,208,186,0,8,0,0,0,12,17,18,57,48,49,19,51,19,35,3,46,1,39,35,14,1,7,3,35,184,51,180,47,100,16,24,17,4,17,24,16,100,46,2,0,254,0,1,35,47,79,47,47,79,47,254,221,0,255,255,0,97,0,0,2,15,2,0,2,6,4,207,0,0,255,255,0,97,0,0,1,219,2,0,2,6,4,208,0,0,0,3,0,47,0,0,1,144,2,0,0,3,0,7,0,11,0,67,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,11,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,187,0,5,0,1,0,6,0,4,43,184,0,2,16,185,0,0,0,1,244,184,0,8,16,185,0,10,0,1,244,48,49,55,33,21,33,19,51,21,35,3,33,21,33,47,1,97,254,159,66,223,223,58,1,81,254,175,38,38,1,34,37,1,3,38,0,0,255,255,0,55,255,244,2,7,2,12,2,6,4,209,0,0,0,1,0,97,0,0,1,219,2,0,0,7,0,51,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,5,62,89,184,0,2,208,184,0,0,16,185,0,4,0,1,244,48,49,19,33,17,35,17,33,17,35,97,1,122,46,254,226,46,2,0,254,0,1,217,254,39,255,255,0,97,0,0,1,197,2,0,2,6,4,210,0,0,0,1,0,47,0,0,1,168,2,0,0,11,0,69,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,11,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,5,62,89,185,0,8,0,1,244,184,0,0,208,184,0,0,47,184,0,3,16,185,0,5,0,1,244,184,0,2,208,184,0,2,47,48,49,63,1,39,53,33,21,33,23,7,33,21,33,47,200,195,1,91,254,222,185,189,1,63,254,135,26,234,228,24,36,215,223,38,255,255,0,29,0,0,1,168,2,0,2,6,4,214,0,0,255,255,0,3,0,0,1,126,2,0,2,6,4,219,0,0,0,3,0,48,255,238,2,65,2,18,0,8,0,15,0,37,0,71,0,187,0,0,0,1,0,24,0,4,43,187,0,16,0,1,0,8,0,4,43,184,0,8,16,184,0,9,208,184,0,0,16,184,0,15,208,184,0,24,16,184,0,26,220,184,0,24,16,184,0,27,208,184,0,16,16,184,0,35,208,184,0,16,16,184,0,36,220,48,49,37,62,3,53,52,38,39,35,14,1,21,20,22,23,19,30,1,21,20,14,2,7,21,35,53,46,3,53,52,54,55,53,51,1,78,46,73,51,28,106,92,43,92,105,105,92,43,112,131,34,63,90,56,43,56,90,63,34,130,113,43,94,1,24,42,59,36,74,85,2,2,85,74,72,89,1,1,103,2,103,92,45,72,51,29,1,76,76,1,29,51,72,45,92,103,2,77,0,0,255,255,0,17,0,0,1,147,2,0,2,6,4,218,0,0,0,1,0,70,0,0,2,10,2,0,0,21,0,75,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,11,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,187,0,18,0,1,0,4,0,4,43,184,0,4,16,184,0,7,208,184,0,18,16,184,0,15,208,184,0,11,16,184,0,16,208,184,0,21,208,48,49,1,21,20,6,7,21,35,53,46,1,61,1,51,21,20,23,17,51,17,54,61,1,2,10,107,97,44,97,107,44,160,44,160,2,0,127,96,89,2,198,198,2,89,96,127,125,148,5,1,22,254,234,5,148,125,0,1,0,44,0,0,2,14,2,12,0,49,0,89,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,11,62,89,184,0,0,69,88,184,0,49,47,27,185,0,49,0,5,62,89,185,0,0,0,1,244,184,0,24,208,184,0,49,16,184,0,25,208,184,0,24,16,184,0,27,208,184,0,27,47,184,0,12,16,185,0,37,0,1,244,184,0,0,16,184,0,47,208,184,0,47,47,48,49,55,51,53,46,3,53,52,62,2,51,50,30,2,21,20,14,2,7,21,51,21,35,53,62,3,53,52,46,2,35,34,14,2,21,20,30,2,23,21,35,44,119,20,39,31,19,32,60,85,53,53,86,60,33,19,31,39,20,119,184,25,46,35,21,25,47,69,44,43,68,47,25,21,34,46,25,183,37,3,18,45,57,69,41,54,92,69,39,39,69,92,54,41,69,57,45,18,3,37,33,16,45,58,73,44,45,79,59,33,33,59,79,45,44,73,58,45,16,33,0,0,255,255,255,242,0,0,0,254,2,168,2,38,4,203,0,0,0,6,7,54,120,138,0,0,255,255,0,3,0,0,1,126,2,168,2,38,4,219,0,0,0,7,7,54,0,194,255,138,0,3,0,8,0,0,2,82,2,0,0,9,0,17,0,21,0,85,0,124,184,0,21,47,24,184,0,0,69,88,184,0,17,47,27,185,0,17,0,11,62,89,184,0,0,69,88,184,0,16,47,27,185,0,16,0,5,62,89,184,0,12,208,186,0,3,0,17,0,12,17,18,57,186,0,9,0,17,0,16,17,18,57,184,0,9,16,185,0,14,0,1,244,184,0,12,16,184,0,20,208,48,49,1,46,1,39,35,14,1,15,1,51,3,19,35,39,35,7,35,19,5,17,35,17,1,31,17,28,15,4,15,27,17,34,191,72,194,48,61,218,62,46,194,1,136,46,1,42,47,78,45,45,79,46,93,1,51,254,0,168,168,2,0,102,254,102,1,154,0,0,0,0,2,0,97,0,0,2,209,2,0,0,3,0,15,0,79,0,124,184,0,0,47,24,184,0,0,69,88,184,0,4,47,27,185,0,4,0,11,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,5,62,89,184,0,11,208,184,0,3,208,186,0,13,0,4,0,15,17,18,57,184,0,13,47,185,0,7,0,1,244,184,0,4,16,184,0,8,208,48,49,1,51,17,35,1,51,21,33,53,51,17,35,53,33,21,35,2,163,46,46,253,190,46,1,36,46,46,254,220,46,1,154,254,102,2,0,220,220,254,0,252,252,0,0,0,0,2,0,44,0,0,2,200,2,12,0,3,0,53,0,95,0,124,184,0,0,47,24,184,0,0,69,88,184,0,16,47,27,185,0,16,0,11,62,89,184,0,0,69,88,184,0,53,47,27,185,0,53,0,5,62,89,184,0,30,208,184,0,3,208,184,0,53,16,185,0,4,0,1,244,184,0,28,208,184,0,31,208,184,0,31,47,184,0,16,16,185,0,41,0,1,244,184,0,4,16,184,0,51,208,184,0,51,47,48,49,1,51,17,35,37,51,53,46,3,53,52,62,2,51,50,30,2,21,20,14,2,7,21,51,21,35,53,62,3,53,52,46,2,35,34,14,2,21,20,30,2,23,21,35,2,154,46,46,253,146,119,20,39,31,19,32,60,85,53,53,86,60,33,19,31,39,20,119,184,25,46,35,21,25,47,69,44,43,68,47,25,21,34,46,25,183,1,154,254,102,37,3,18,45,57,69,41,54,92,69,39,39,69,92,54,41,69,57,45,18,3,37,33,16,45,58,73,44,45,79,59,33,33,59,79,45,44,73,58,45,16,33,0,255,255,0,8,0,0,1,187,2,0,2,6,4,195,0,0,0,2,0,97,0,0,1,206,2,0,0,14,0,23,0,77,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,184,0,0,16,185,0,2,0,1,244,186,0,21,0,0,0,13,17,18,57,184,0,21,16,185,0,5,0,1,244,184,0,13,16,185,0,15,0,1,244,48,49,19,33,21,33,21,51,50,30,2,21,20,6,43,1,55,50,54,53,52,38,43,1,21,97,1,71,254,231,119,45,73,53,29,102,94,169,158,81,81,84,81,109,2,0,37,187,15,32,52,37,78,74,36,55,60,55,48,218,0,255,255,0,97,0,0,1,213,2,0,2,6,4,196,0,0,255,255,0,97,0,0,1,149,2,0,2,6,5,163,0,0,0,2,0,33,255,84,2,1,2,0,0,10,0,33,0,79,0,125,184,0,18,47,24,184,0,0,69,88,184,0,31,47,27,185,0,31,0,11,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,5,62,89,185,0,20,0,1,244,184,0,9,208,184,0,31,16,185,0,10,0,1,244,184,0,9,16,184,0,11,208,184,0,18,16,184,0,14,208,48,49,19,14,3,7,14,1,7,33,17,19,21,7,35,53,33,21,35,39,53,51,62,3,55,62,3,55,33,17,223,7,11,10,12,7,15,30,16,1,30,112,5,38,254,119,39,5,27,9,17,19,19,10,8,13,12,12,8,1,4,1,218,36,63,61,62,36,74,83,20,1,179,254,77,26,185,172,172,185,26,4,21,43,67,51,39,68,66,71,43,254,39,0,0,255,255,0,97,0,0,1,158,2,0,2,6,4,199,0,0,0,1,0,9,0,0,2,136,2,12,0,52,0,133,0,184,0,0,69,88,184,0,23,47,27,185,0,23,0,11,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,5,62,89,187,0,7,0,1,0,29,0,4,43,184,0,9,16,184,0,5,208,184,0,1,208,184,0,7,16,184,0,2,208,186,0,10,0,29,0,7,17,18,57,184,0,23,16,185,0,16,0,2,244,184,0,23,16,184,0,31,208,184,0,31,47,184,0,29,16,184,0,34,208,184,0,23,16,184,0,40,208,184,0,16,16,184,0,46,208,186,0,52,0,2,0,34,17,18,57,48,49,33,35,39,35,21,35,53,35,7,35,19,39,46,3,35,42,1,7,39,62,1,51,50,30,2,31,1,51,53,51,21,51,55,62,3,51,50,23,7,38,34,35,34,14,2,15,1,2,136,50,158,90,43,90,158,50,173,64,11,20,18,18,10,4,9,5,8,4,13,7,16,29,28,27,15,65,88,43,88,65,15,27,28,29,16,16,8,7,6,9,4,10,18,18,20,11,64,252,252,252,252,1,20,132,24,28,15,5,2,43,2,1,8,21,38,30,136,221,221,136,30,38,21,8,3,43,2,5,15,28,24,132,0,0,1,0,47,255,244,1,179,2,12,0,47,0,77,0,184,0,0,69,88,184,0,31,47,27,185,0,31,0,11,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,187,0,18,0,1,0,15,0,4,43,184,0,0,16,185,0,7,0,1,244,184,0,31,16,185,0,24,0,1,244,186,0,40,0,15,0,18,17,18,57,48,49,23,34,38,39,55,30,1,51,50,62,2,53,52,38,43,1,53,51,50,54,53,52,38,35,34,6,7,39,62,1,51,50,30,2,21,20,6,7,21,30,1,21,20,14,2,244,63,92,42,27,39,76,55,29,53,40,23,91,81,57,41,85,74,70,53,40,72,24,26,26,87,50,35,61,45,26,47,42,51,68,30,52,70,12,37,39,32,36,32,15,29,43,28,57,54,34,50,50,45,51,29,24,32,26,35,19,35,48,30,43,62,12,4,8,65,55,36,57,40,22,0,0,1,0,97,0,0,1,219,2,0,0,19,0,69,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,11,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,5,62,89,184,0,1,208,184,0,10,16,184,0,18,208,186,0,5,0,18,0,1,17,18,57,186,0,15,0,10,0,9,17,18,57,48,49,33,35,17,52,54,55,35,7,3,35,17,51,17,20,6,7,51,55,19,51,1,219,42,3,2,4,61,228,48,43,4,2,4,62,228,47,1,47,38,75,38,104,254,162,2,0,254,213,38,78,38,102,1,95,0,0,0,255,255,0,97,0,0,1,219,2,180,2,38,5,198,0,0,0,7,7,50,1,35,255,110,0,1,0,97,0,0,1,229,2,12,0,27,0,87,0,184,0,0,69,88,184,0,15,47,27,185,0,15,0,11,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,187,0,8,0,1,0,3,0,4,43,184,0,5,16,184,0,1,208,184,0,15,16,184,0,6,208,184,0,6,47,184,0,15,16,185,0,21,0,2,244,186,0,27,0,3,0,8,17,18,57,48,49,33,35,39,35,21,35,17,51,21,51,55,62,3,51,50,22,23,7,38,35,34,14,2,15,1,1,229,52,179,111,46,46,110,82,18,28,26,25,17,6,14,5,10,8,9,9,15,17,21,15,80,252,252,2,0,221,138,29,37,21,8,2,2,44,4,5,16,28,24,131,0,0,1,0,6,255,244,1,186,2,0,0,26,0,65,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,11,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,6,0,2,244,184,0,0,16,184,0,17,208,184,0,17,47,184,0,14,16,185,0,18,0,1,244,48,49,23,34,38,39,55,22,51,50,62,2,55,62,1,55,33,17,35,17,35,14,1,7,14,3,44,8,22,8,12,12,10,11,20,19,20,10,17,32,17,1,0,46,174,16,27,16,12,24,28,34,12,3,3,43,4,10,30,57,47,85,161,89,254,0,1,218,77,149,75,56,72,41,16,255,255,0,97,0,0,2,15,2,0,2,6,4,207,0,0,255,255,0,97,0,0,1,225,2,0,2,6,4,202,0,0,255,255,0,55,255,244,2,7,2,12,2,6,4,209,0,0,255,255,0,97,0,0,1,219,2,0,2,6,5,176,0,0,255,255,0,97,0,0,1,197,2,0,2,6,4,210,0,0,255,255,0,55,255,244,1,200,2,12,2,6,4,197,0,0,255,255,0,29,0,0,1,168,2,0,2,6,4,214,0,0,0,1,0,7,255,244,1,159,2,0,0,20,0,71,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,11,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,5,0,2,244,186,0,9,0,10,0,0,17,18,57,186,0,14,0,0,0,10,17,18,57,184,0,10,16,184,0,16,208,48,49,23,34,39,55,22,51,50,54,63,1,3,51,19,23,51,55,19,51,3,14,1,107,30,18,12,15,18,30,37,11,15,190,48,121,41,4,36,112,46,186,19,56,12,7,41,6,24,25,33,1,144,254,250,90,90,1,6,254,81,44,49,0,0,0,3,0,48,255,244,2,60,2,12,0,6,0,13,0,31,0,85,0,184,0,0,69,88,184,0,30,47,27,185,0,30,0,11,62,89,184,0,0,69,88,184,0,22,47,27,185,0,22,0,5,62,89,184,0,23,220,185,0,13,0,1,244,184,0,0,208,184,0,30,16,184,0,29,220,185,0,7,0,1,244,184,0,6,208,184,0,29,16,184,0,14,208,184,0,23,16,184,0,20,208,48,49,37,62,1,53,52,38,39,35,14,1,21,20,22,23,19,30,1,21,20,6,7,21,35,53,46,1,53,52,54,55,53,51,1,74,97,99,99,97,40,97,99,99,97,40,115,127,127,115,40,115,127,127,115,40,106,1,81,71,72,80,1,1,80,72,71,81,1,1,85,2,97,89,88,98,2,83,83,2,98,88,89,97,2,77,0,255,255,0,17,0,0,1,147,2,0,2,6,4,218,0,0,0,1,0,97,255,84,2,16,2,0,0,12,0,61,0,125,184,0,3,47,24,184,0,0,69,88,184,0,6,47,27,185,0,6,0,11,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,185,0,8,0,1,244,184,0,0,208,184,0,6,16,184,0,10,208,48,49,37,21,7,35,53,33,17,51,17,33,17,51,17,2,16,6,38,254,125,46,1,17,46,39,26,185,172,2,0,254,39,1,217,254,39,0,0,0,1,0,71,0,0,1,167,2,0,0,21,0,55,0,184,0,0,69,88,184,0,9,47,27,185,0,9,0,11,62,89,184,0,0,69,88,184,0,20,47,27,185,0,20,0,5,62,89,187,0,14,0,1,0,3,0,4,43,184,0,9,16,184,0,18,208,48,49,37,14,1,35,34,46,2,61,1,51,21,20,22,51,50,54,55,53,51,17,35,1,121,21,53,35,46,73,51,27,45,83,74,33,50,21,46,46,237,4,5,16,38,61,44,125,125,68,53,5,5,236,254,0,0,0,1,0,97,0,0,2,134,2,0,0,11,0,67,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,5,62,89,185,0,2,0,1,244,184,0,0,16,184,0,4,208,184,0,2,16,184,0,6,208,184,0,4,16,184,0,8,208,48,49,19,51,17,51,17,51,17,51,17,51,17,33,97,45,207,45,207,45,253,219,2,0,254,39,1,217,254,39,1,217,254,0,0,0,0,0,1,0,97,255,84,2,200,2,0,0,16,0,69,0,125,184,0,3,47,24,184,0,0,69,88,184,0,6,47,27,185,0,6,0,11,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,185,0,8,0,1,244,184,0,12,208,184,0,0,208,184,0,6,16,184,0,10,208,184,0,14,208,48,49,37,21,7,35,53,33,17,51,17,51,17,51,17,51,17,51,17,2,200,6,38,253,197,45,207,45,207,45,39,26,185,172,2,0,254,39,1,217,254,39,1,217,254,39,0,0,2,0,29,0,0,2,55,2,0,0,12,0,21,0,67,0,184,0,0,69,88,184,0,2,47,27,185,0,2,0,11,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,187,0,5,0,1,0,19,0,4,43,184,0,2,16,185,0,0,0,1,244,184,0,11,16,185,0,13,0,1,244,48,49,19,35,53,51,21,51,50,22,21,20,6,43,1,55,50,54,53,52,38,43,1,21,214,185,231,106,91,110,106,94,153,144,81,81,82,82,96,1,217,39,218,66,75,78,75,39,53,60,56,49,218,0,0,0,3,0,97,0,0,2,76,2,0,0,3,0,14,0,23,0,73,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,11,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,187,0,7,0,1,0,21,0,4,43,184,0,4,16,184,0,0,208,184,0,13,16,184,0,3,208,184,0,13,16,185,0,15,0,1,244,48,49,1,51,17,35,1,51,21,51,50,22,21,20,6,43,1,55,50,54,53,52,38,43,1,21,2,30,46,46,254,67,46,97,91,110,106,94,144,134,81,82,82,82,87,2,0,254,0,2,0,218,66,75,78,75,39,53,60,56,49,218,0,0,2,0,97,0,0,1,205,2,0,0,10,0,19,0,57,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,11,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,5,62,89,187,0,3,0,1,0,17,0,4,43,184,0,9,16,185,0,11,0,1,244,48,49,19,51,21,51,50,22,21,20,6,43,1,55,50,54,53,52,38,43,1,21,97,46,117,91,110,106,94,164,154,81,82,82,82,107,2,0,218,66,75,78,75,39,53,60,56,49,218,0,1,0,38,255,244,1,182,2,12,0,32,0,73,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,11,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,185,0,20,0,1,244,186,0,23,0,3,0,13,17,18,57,184,0,23,47,185,0,25,0,1,244,184,0,3,16,185,0,29,0,1,244,48,49,19,62,1,51,50,30,2,21,20,14,2,35,34,38,39,55,30,1,51,50,54,55,35,53,51,46,1,35,34,6,7,51,34,74,54,50,83,59,33,34,60,84,51,57,87,27,27,26,73,46,84,95,2,249,248,8,93,78,42,62,29,1,203,31,34,37,68,99,61,66,101,69,35,45,29,30,28,35,113,111,37,91,102,28,26,0,2,0,97,255,244,2,227,2,12,0,19,0,46,0,101,0,184,0,0,69,88,184,0,44,47,27,185,0,44,0,11,62,89,184,0,0,69,88,184,0,25,47,27,185,0,25,0,11,62,89,184,0,0,69,88,184,0,42,47,27,185,0,42,0,5,62,89,184,0,0,69,88,184,0,35,47,27,185,0,35,0,5,62,89,187,0,20,0,1,0,40,0,4,43,184,0,35,16,185,0,0,0,1,244,184,0,25,16,185,0,10,0,1,244,48,49,37,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,3,62,3,51,50,30,2,21,20,14,2,35,34,46,2,39,35,21,35,17,51,21,1,252,41,68,48,26,26,48,68,41,41,68,48,26,26,48,68,188,4,38,60,80,47,51,84,62,34,34,62,84,51,50,83,61,35,1,135,46,46,29,32,59,84,53,53,84,58,31,31,58,84,53,53,84,59,32,1,7,54,86,60,32,37,69,99,62,62,99,70,38,37,68,98,61,252,2,0,220,0,0,0,0,2,0,28,0,0,1,145,2,0,0,7,0,23,0,84,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,11,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,5,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,187,0,7,0,1,0,11,0,4,43,184,0,8,16,185,0,0,0,1,244,186,0,15,0,11,0,7,17,18,57,48,49,1,35,34,6,21,20,59,1,55,17,35,53,35,7,35,55,46,1,53,52,62,2,51,1,99,106,73,76,149,106,46,46,121,153,53,159,60,72,26,48,68,42,1,219,45,58,108,248,254,0,229,229,232,10,71,61,38,53,33,14,255,255,0,97,0,0,1,158,2,222,2,38,4,199,0,0,0,7,7,34,1,5,255,138,255,255,0,97,0,0,1,158,2,168,2,38,4,199,0,0,0,7,7,54,1,5,255,138,0,1,0,29,255,247,2,20,2,0,0,39,0,83,0,184,0,0,69,88,184,0,36,47,27,185,0,36,0,11,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,187,0,28,0,1,0,3,0,4,43,184,0,13,16,185,0,20,0,1,244,184,0,13,16,184,0,33,208,184,0,33,47,184,0,36,16,185,0,35,0,1,244,184,0,38,208,48,49,19,62,1,51,50,30,2,21,20,14,2,35,34,38,39,55,30,1,51,50,62,2,53,52,38,35,34,6,7,17,35,17,35,53,33,21,35,233,21,50,33,43,72,52,28,26,42,53,26,14,30,8,9,6,23,9,18,37,31,20,79,74,32,47,21,46,158,1,150,202,1,42,5,4,18,39,60,42,45,60,36,16,4,3,38,2,6,12,29,46,34,64,58,5,4,254,250,1,217,39,39,0,0,255,255,0,97,0,0,1,149,2,194,2,38,5,163,0,0,0,7,7,37,1,10,255,110,0,1,0,55,255,244,1,200,2,12,0,32,0,77,0,184,0,0,69,88,184,0,13,47,27,185,0,13,0,11,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,5,62,89,184,0,13,16,185,0,20,0,1,244,186,0,25,0,13,0,3,17,18,57,184,0,25,47,185,0,24,0,1,244,184,0,3,16,185,0,29,0,1,244,48,49,37,14,1,35,34,46,2,53,52,62,2,51,50,22,23,7,46,1,35,34,6,7,51,21,35,30,1,51,50,54,55,1,200,34,78,54,52,87,62,34,35,63,88,53,50,74,23,27,23,58,41,81,100,8,248,249,2,100,88,43,65,29,62,36,38,37,69,100,64,63,99,68,36,38,25,30,23,29,99,94,37,106,118,30,31,255,255,0,46,255,244,1,160,2,12,2,6,4,213,0,0,255,255,0,97,0,0,0,143,2,0,2,6,4,203,0,0,255,255,255,242,0,0,0,254,2,168,2,38,4,203,0,0,0,6,7,54,120,138,0,0,0,3,0,21,0,0,0,220,2,167,0,11,0,23,0,27,0,61,0,184,0,0,69,88,184,0,24,47,27,185,0,24]);fileData0.push.apply(fileData0,[0,11,62,89,184,0,0,69,88,184,0,26,47,27,185,0,26,0,5,62,89,186,0,6,0,0,0,3,43,184,0,0,16,184,0,12,208,184,0,6,16,184,0,18,208,48,49,19,34,38,53,52,54,51,50,22,21,20,6,51,34,38,53,52,54,51,50,22,21,20,6,7,51,17,35,56,15,20,20,15,16,20,20,112,15,21,21,15,15,21,21,102,46,46,2,94,19,17,17,20,20,17,17,19,19,17,17,20,20,17,17,19,94,254,0,0,255,255,0,41,255,244,1,68,2,0,2,6,4,204,0,0,0,2,0,6,255,244,2,197,2,0,0,8,0,42,0,83,0,184,0,0,69,88,184,0,40,47,27,185,0,40,0,11,62,89,184,0,0,69,88,184,0,26,47,27,185,0,26,0,5,62,89,187,0,42,0,1,0,7,0,4,43,184,0,26,16,185,0,32,0,2,244,184,0,8,208,184,0,26,16,184,0,16,208,184,0,16,47,184,0,40,16,185,0,17,0,1,244,48,49,37,50,54,53,52,38,43,1,21,55,50,22,21,20,6,43,1,17,35,14,1,7,14,3,35,34,38,39,55,22,51,50,62,2,55,62,1,55,51,21,1,244,81,82,82,83,76,86,91,110,105,94,134,154,16,27,16,12,24,28,34,21,8,22,8,12,12,10,11,20,19,20,10,17,32,17,236,39,53,60,56,49,218,255,66,75,78,75,1,218,77,149,75,56,72,41,16,3,3,43,4,10,30,57,47,85,161,89,218,0,2,0,97,0,0,2,244,2,0,0,8,0,27,0,99,0,184,0,0,69,88,184,0,21,47,27,185,0,21,0,11,62,89,184,0,0,69,88,184,0,20,47,27,185,0,20,0,5,62,89,184,0,16,208,185,0,0,0,1,244,186,0,18,0,21,0,20,17,18,57,184,0,18,47,184,0,7,208,184,0,7,47,184,0,18,16,185,0,23,0,1,244,184,0,21,16,184,0,25,208,184,0,23,16,184,0,27,208,184,0,27,47,48,49,37,50,54,53,52,38,43,1,21,55,50,22,21,20,6,43,1,53,33,21,35,17,51,21,33,53,51,21,2,35,81,81,82,82,77,87,91,110,106,94,134,254,233,46,46,1,23,46,39,53,60,56,49,218,255,66,75,78,75,252,252,2,0,220,220,218,0,0,0,0,1,0,29,0,0,2,12,2,0,0,23,0,69,0,184,0,0,69,88,184,0,20,47,27,185,0,20,0,11,62,89,184,0,0,69,88,184,0,17,47,27,185,0,17,0,5,62,89,187,0,3,0,1,0,12,0,4,43,184,0,17,16,184,0,8,208,184,0,20,16,185,0,19,0,1,244,184,0,22,208,48,49,19,62,1,51,50,22,29,1,35,53,52,38,35,34,6,7,17,35,17,35,53,33,21,35,233,21,50,33,88,99,46,75,70,32,47,21,46,158,1,150,202,1,42,5,4,70,87,150,150,69,52,5,4,254,250,1,217,39,39,0,0,255,255,0,97,0,0,1,229,2,194,2,38,5,200,0,0,0,7,7,37,1,22,255,110,255,255,0,97,0,0,1,219,2,194,2,38,5,198,0,0,0,7,7,34,1,35,255,110,255,255,0,7,255,244,1,159,2,180,2,38,5,209,0,0,0,7,7,50,0,210,255,110,0,1,0,97,255,84,1,218,2,0,0,11,0,55,0,125,184,0,3,47,24,184,0,0,69,88,184,0,6,47,27,185,0,6,0,11,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,184,0,1,208,184,0,6,16,184,0,10,208,48,49,33,35,7,35,39,35,17,51,17,33,17,51,1,218,164,6,36,3,168,46,1,29,46,172,172,2,0,254,39,1,217,0,2,0,29,0,0,1,226,2,34,0,8,0,27,0,72,0,184,0,0,69,88,184,0,15,47,27,185,0,15,0,5,62,89,186,0,20,0,17,0,3,43,187,0,9,0,1,0,6,0,4,43,184,0,15,16,185,0,0,0,1,244,184,0,20,16,184,0,21,220,184,0,20,16,184,0,23,208,184,0,17,16,184,0,25,208,48,49,37,50,54,53,52,38,43,1,21,55,50,22,21,20,6,43,1,17,35,53,51,53,51,21,51,21,35,21,1,17,81,82,82,83,72,82,91,110,105,94,130,124,124,46,205,205,38,53,60,56,48,217,254,66,74,78,74,1,147,34,109,109,34,111,0,3,0,55,255,244,2,7,2,12,0,8,0,15,0,35,0,81,0,184,0,0,69,88,184,0,16,47,27,185,0,16,0,11,62,89,184,0,0,69,88,184,0,26,47,27,185,0,26,0,5,62,89,186,0,0,0,16,0,26,17,18,57,184,0,0,47,184,0,26,16,185,0,3,0,1,244,184,0,0,16,185,0,9,0,1,244,184,0,16,16,185,0,12,0,1,244,48,49,55,30,1,51,50,62,2,55,39,46,1,35,34,6,7,55,50,30,2,21,20,14,2,35,34,46,2,53,52,62,2,100,2,102,83,41,68,49,27,1,1,8,99,78,78,100,8,186,51,85,61,35,35,61,85,51,51,85,62,34,34,62,85,253,107,118,30,58,84,53,37,94,100,100,94,234,36,68,99,64,63,100,69,37,37,69,100,63,64,99,68,36,0,0,1,0,4,0,0,1,198,2,12,0,26,0,69,0,184,0,0,69,88,184,0,15,47,27,185,0,15,0,11,62,89,184,0,0,69,88,184,0,26,47,27,185,0,26,0,5,62,89,184,0,15,16,184,0,0,208,184,0,0,47,186,0,5,0,0,0,26,17,18,57,184,0,15,16,185,0,21,0,2,244,48,49,19,51,19,30,1,23,51,62,3,63,1,62,1,51,50,22,23,7,38,35,34,6,7,3,35,4,49,100,16,26,16,4,8,13,13,12,8,64,16,38,35,10,14,8,11,7,13,17,21,10,133,56,2,0,254,219,46,77,47,24,42,41,40,23,205,55,45,3,3,42,4,32,32,254,96,0,0,0,1,0,97,0,0,1,157,2,171,0,7,0,53,0,124,184,0,7,47,24,184,0,0,69,88,184,0,5,47,27,185,0,5,0,11,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,5,62,89,184,0,5,16,185,0,1,0,1,244,48,49,1,7,33,17,35,17,33,55,1,157,8,254,250,46,1,11,13,2,171,210,254,39,2,0,171,0,1,0,37,0,0,1,170,2,0,0,13,0,85,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,11,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,184,0,11,16,185,0,0,0,1,244,186,0,3,0,11,0,5,17,18,57,184,0,3,47,184,0,2,220,184,0,3,16,184,0,7,208,184,0,2,16,184,0,9,208,184,0,9,47,48,49,19,21,51,21,35,21,35,53,35,53,55,53,33,21,164,163,163,46,81,81,1,52,1,217,196,34,243,243,31,3,235,39,0,0,1,0,9,255,84,2,156,2,12,0,57,0,145,0,125,184,0,3,47,24,184,0,0,69,88,184,0,27,47,27,185,0,27,0,11,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,187,0,33,0,1,0,11,0,4,43,184,0,13,16,184,0,9,208,184,0,5,208,185,0,0,0,1,244,184,0,11,16,184,0,6,208,186,0,14,0,33,0,11,17,18,57,184,0,27,16,185,0,20,0,2,244,184,0,27,16,184,0,35,208,184,0,35,47,184,0,33,16,184,0,38,208,184,0,27,16,184,0,44,208,184,0,20,16,184,0,50,208,186,0,56,0,6,0,38,17,18,57,48,49,37,21,7,35,53,35,39,35,21,35,53,35,7,35,19,39,46,3,35,42,1,7,39,62,1,51,50,30,2,31,1,51,53,51,21,51,55,62,3,51,50,23,7,38,34,35,34,14,2,15,1,23,2,156,5,38,27,158,90,43,90,158,50,173,64,11,20,18,18,10,4,9,5,8,4,13,7,16,29,28,27,15,65,88,43,88,65,15,27,28,29,16,16,8,7,6,9,4,10,18,18,20,11,64,148,39,26,185,172,252,252,252,252,1,20,132,24,28,15,5,2,43,2,1,8,21,38,30,136,221,221,136,30,38,21,8,3,43,2,5,15,28,24,132,237,0,1,0,47,255,84,1,179,2,12,0,50,0,97,0,125,184,0,10,47,24,184,0,0,69,88,184,0,42,47,27,185,0,42,0,11,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,5,62,89,184,0,8,208,184,0,11,16,185,0,18,0,1,244,186,0,27,0,42,0,11,17,18,57,184,0,27,47,185,0,28,0,1,244,184,0,42,16,185,0,35,0,1,244,186,0,50,0,28,0,27,17,18,57,48,49,1,30,1,21,20,14,2,15,1,35,39,46,1,39,55,30,1,51,50,62,2,53,52,38,43,1,53,51,50,54,53,52,38,35,34,6,7,39,62,1,51,50,30,2,21,20,6,7,1,60,51,68,27,46,64,36,4,37,2,54,80,38,27,39,76,55,29,53,40,23,91,81,57,41,85,74,70,53,40,72,24,26,26,87,50,35,61,45,26,47,42,1,15,8,65,55,33,55,40,24,2,161,161,3,37,35,32,36,32,15,29,43,28,57,54,34,50,50,45,51,29,24,32,26,35,19,35,48,30,43,62,12,0,0,1,0,97,255,84,1,251,2,12,0,32,0,99,0,125,184,0,3,47,24,184,0,0,69,88,184,0,19,47,27,185,0,19,0,11,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,5,62,89,187,0,12,0,1,0,7,0,4,43,184,0,9,16,184,0,5,208,185,0,0,0,1,244,184,0,19,16,184,0,10,208,184,0,10,47,184,0,19,16,185,0,25,0,2,244,186,0,31,0,12,0,7,17,18,57,48,49,37,21,7,35,53,35,39,35,21,35,17,51,21,51,55,62,3,51,50,22,23,7,38,35,34,14,2,15,1,23,1,251,5,39,30,179,111,46,46,110,82,18,28,26,25,17,6,14,5,10,8,9,9,15,17,21,15,80,167,39,26,185,172,252,252,2,0,221,138,29,37,21,8,2,2,44,4,5,16,28,24,131,237,0,1,0,29,0,0,2,89,2,12,0,29,0,105,0,184,0,0,69,88,184,0,17,47,27,185,0,17,0,11,62,89,184,0,0,69,88,184,0,20,47,27,185,0,20,0,11,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,187,0,11,0,1,0,2,0,4,43,184,0,17,16,185,0,6,0,1,244,185,0,9,0,1,244,184,0,6,16,184,0,23,208,48,49,33,35,39,35,21,35,17,35,53,51,21,51,55,62,3,51,50,22,23,7,38,35,34,14,2,15,1,2,89,52,178,111,46,185,231,109,82,18,28,26,26,16,7,14,5,10,10,7,9,16,17,21,15,80,252,252,1,217,39,221,138,29,37,21,8,2,2,44,4,5,16,28,24,132,0,0,0,0,1,0,97,255,84,2,35,2,0,0,16,0,81,0,125,184,0,3,47,24,184,0,0,69,88,184,0,10,47,27,185,0,10,0,11,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,5,62,89,184,0,5,208,185,0,0,0,1,244,186,0,7,0,10,0,9,17,18,57,184,0,7,47,185,0,13,0,1,244,184,0,10,16,184,0,14,208,48,49,37,21,7,35,53,35,53,33,21,35,17,51,21,33,53,51,17,2,35,6,38,68,254,220,46,46,1,36,46,39,26,185,172,252,252,2,0,220,220,254,39,0,1,0,55,255,84,1,200,2,12,0,32,0,67,0,125,184,0,5,47,24,184,0,0,69,88,184,0,16,47,27,185,0,16,0,11,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,5,62,89,184,0,3,208,184,0,16,16,185,0,23,0,1,244,184,0,6,16,185,0,29,0,1,244,48,49,37,14,1,15,1,35,39,46,3,53,52,62,2,51,50,22,23,7,46,1,35,34,6,21,20,22,51,50,54,55,1,200,32,76,51,4,37,2,45,73,52,29,35,64,88,54,48,74,23,27,23,57,38,91,102,101,88,43,65,29,62,35,37,2,160,162,6,43,68,93,57,61,99,70,37,38,25,30,23,29,121,105,106,122,30,31,0,255,255,0,3,0,0,1,126,2,0,2,6,4,219,0,0,0,1,0,3,0,0,1,126,2,0,0,22,0,85,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,11,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,186,0,10,0,11,0,5,17,18,57,184,0,10,16,184,0,1,208,184,0,10,16,184,0,6,220,184,0,2,208,184,0,11,16,184,0,21,208,186,0,16,0,21,0,5,17,18,57,48,49,55,51,21,35,21,35,53,35,53,55,51,3,51,23,30,1,23,51,62,1,63,1,51,228,96,109,46,109,85,12,154,48,81,14,30,16,4,15,29,14,80,48,228,33,195,195,31,2,1,28,154,29,53,28,28,53,29,154,0,0,0,0,1,0,17,255,84,1,169,2,0,0,30,0,101,0,125,184,0,3,47,24,184,0,0,69,88,184,0,17,47,27,185,0,17,0,11,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,5,62,89,184,0,5,208,185,0,0,0,1,244,186,0,9,0,17,0,15,17,18,57,184,0,17,16,184,0,27,208,186,0,22,0,5,0,27,17,18,57,186,0,16,0,22,0,9,17,18,57,186,0,29,0,9,0,22,17,18,57,48,49,37,21,7,35,53,35,39,46,1,39,35,14,1,15,1,35,19,39,51,23,30,1,23,51,62,1,63,1,51,7,23,1,169,5,38,29,94,11,24,14,4,14,23,11,93,48,166,154,49,89,11,19,14,4,11,20,10,87,48,154,141,39,26,185,172,151,19,39,23,23,39,19,151,1,9,247,144,17,33,22,22,33,17,144,250,223,0,0,0,0,1,0,71,255,84,1,232,2,0,0,26,0,71,0,125,184,0,3,47,24,184,0,0,69,88,184,0,15,47,27,185,0,15,0,11,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,187,0,20,0,1,0,9,0,4,43,184,0,4,16,185,0,0,0,1,244,184,0,15,16,184,0,24,208,48,49,37,21,7,35,53,35,53,14,1,35,34,46,2,61,1,51,21,20,22,51,50,54,55,53,51,17,1,232,5,38,68,21,53,35,46,73,51,27,45,83,74,33,50,21,46,39,26,185,172,237,4,5,16,38,61,44,125,125,68,53,5,5,236,254,39,0,0,0,1,0,97,0,0,1,193,2,0,0,21,0,55,0,184,0,0,69,88,184,0,20,47,27,185,0,20,0,11,62,89,184,0,0,69,88,184,0,18,47,27,185,0,18,0,5,62,89,187,0,3,0,1,0,14,0,4,43,184,0,18,16,184,0,9,208,48,49,19,62,1,51,50,30,2,29,1,35,53,52,38,35,34,6,7,17,35,17,51,143,21,52,35,46,74,51,27,45,83,74,33,50,21,46,46,1,47,5,5,17,37,61,44,154,154,68,53,5,5,254,247,2,0,255,255,0,97,0,0,0,143,2,0,2,6,4,203,0,0,255,255,0,9,0,0,2,136,2,181,2,38,5,196,0,0,0,7,7,50,1,72,255,111,255,255,0,8,0,0,1,187,2,181,2,38,4,195,0,0,0,7,7,50,0,225,255,111,255,255,0,21,0,0,2,136,2,0,2,6,4,243,0,0,255,255,0,97,0,0,1,158,2,208,2,38,4,199,0,0,0,7,7,50,1,5,255,138,255,255,0,62,255,244,2,2,2,12,2,6,5,157,0,0,255,255,0,97,0,0,1,219,2,121,2,38,5,198,0,0,0,7,7,44,1,35,255,110,255,255,0,55,255,244,2,7,2,141,2,38,4,209,0,0,0,7,7,54,1,31,255,111,255,255,0,55,255,244,2,7,2,12,2,6,5,240,0,0,255,255,0,7,255,244,1,159,2,121,2,38,5,209,0,0,0,7,7,44,0,210,255,110,255,255,0,7,255,244,1,159,2,211,2,38,5,209,0,0,0,7,7,60,0,210,255,110,0,3,0,36,255,244,1,229,2,12,0,13,0,27,0,73,0,143,0,184,0,0,69,88,184,0,52,47,27,185,0,52,0,11,62,89,184,0,0,69,88,184,0,34,47,27,185,0,34,0,5,62,89,185,0,5,0,1,244,186,0,67,0,52,0,34,17,18,57,186,0,63,0,67,0,34,17,18,57,186,0,31,0,34,0,67,17,18,57,186,0,8,0,63,0,31,17,18,57,186,0,11,0,34,0,52,17,18,57,186,0,17,0,52,0,34,17,18,57,184,0,52,16,185,0,25,0,1,244,186,0,44,0,17,0,11,17,18,57,186,0,60,0,11,0,17,17,18,57,186,0,70,0,31,0,63,17,18,57,48,49,55,20,30,2,51,50,54,55,46,1,39,14,1,55,20,22,23,62,3,53,52,38,35,34,6,1,46,1,39,14,1,35,34,46,2,53,52,62,2,55,46,1,53,52,62,2,51,50,22,21,20,14,2,7,30,1,23,62,1,55,51,14,1,7,30,1,23,80,19,33,45,25,32,61,26,45,81,30,35,50,70,16,14,21,38,29,17,25,33,35,42,1,66,27,62,33,30,75,47,34,59,44,25,19,31,40,22,17,19,17,31,43,26,47,46,22,36,45,23,29,81,43,29,43,14,41,17,47,34,29,55,23,133,24,40,29,15,28,23,36,91,48,26,56,236,24,53,27,13,28,29,33,19,24,41,49,254,61,8,32,24,29,35,21,37,52,32,25,43,36,31,15,32,63,29,25,43,33,19,58,42,25,41,37,33,16,47,88,33,34,83,48,54,94,39,20,28,8,0,0,2,0,56,255,244,1,166,2,12,0,11,0,23,0,53,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,11,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,12,0,1,244,184,0,6,16,185,0,18,0,1,244,48,49,23,34,38,53,52,54,51,50,22,21,20,6,39,50,54,53,52,38,35,34,6,21,20,22,239,88,95,95,88,88,95,95,88,62,76,76,62,62,76,76,12,144,125,126,141,141,126,125,144,38,119,112,114,115,115,114,112,119,0,0,1,0,57,0,0,0,204,2,0,0,8,0,51,0,184,0,0,69,88,184,0,5,47,27,185,0,5,0,11,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,184,0,5,16,184,0,2,220,185,0,0,0,1,244,48,49,19,35,53,62,1,55,51,17,35,160,103,36,54,21,36,44,1,192,31,5,17,11,254,0,0,0,0,0,1,0,38,0,0,1,136,2,12,0,29,0,61,0,184,0,0,69,88,184,0,15,47,27,185,0,15,0,11,62,89,184,0,0,69,88,184,0,28,47,27,185,0,28,0,5,62,89,185,0,26,0,1,244,184,0,0,208,184,0,0,47,184,0,15,16,185,0,8,0,1,244,48,49,55,62,3,53,52,38,35,34,6,7,39,62,1,51,50,22,21,20,14,2,7,62,1,59,1,21,33,42,69,105,70,35,59,63,39,68,26,28,34,79,51,77,87,37,68,95,58,23,51,30,180,254,162,28,62,100,83,70,33,48,63,38,27,25,36,41,79,66,38,77,82,93,54,2,2,39,0,0,1,0,24,255,244,1,128,2,12,0,47,0,77,0,184,0,0,69,88,184,0,29,47,27,185,0,29,0,11,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,187,0,14,0,1,0,13,0,4,43,184,0,0,16,185,0,7,0,1,244,184,0,29,16,185,0,22,0,1,244,186,0,38,0,13,0,14,17,18,57,48,49,23,34,38,39,55,30,1,51,50,54,53,52,38,35,53,50,62,2,53,52,38,35,34,6,7,39,62,1,51,50,30,2,21,20,6,7,21,30,3,21,20,14,2,207,68,88,27,25,25,74,59,57,74,91,107,49,67,42,19,62,51,38,68,26,24,29,76,51,34,58,43,24,62,45,26,47,35,20,27,48,65,12,46,27,30,26,39,60,49,52,64,35,17,29,39,23,43,50,30,26,29,28,36,17,33,47,30,50,61,15,3,5,23,33,45,28,33,54,38,21,0,0,2,0,35,0,0,1,169,2,0,0,9,0,20,0,87,0,184,0,0,69,88,184,0,17,47,27,185,0,17,0,11,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,186,0,10,0,17,0,12,17,18,57,184,0,10,47,185,0,20,0,1,244,184,0,0,208,186,0,4,0,17,0,12,17,18,57,184,0,10,16,184,0,14,208,184,0,0,16,184,0,16,208,48,49,37,53,52,54,55,35,14,1,15,1,5,35,21,35,53,33,53,1,51,17,51,1,42,1,1,3,11,21,14,162,1,80,84,43,254,249,1,7,43,84,187,175,19,54,19,17,28,19,203,36,151,151,26,1,79,254,187,0,1,0,35,255,244,1,141,2,0,0,40,0,77,0,184,0,0,69,88,184,0,24,47,27,185,0,24,0,11,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,11,0,1,244,186,0,19,0,24,0,0,17,18,57,184,0,19,47,184,0,24,16,185,0,26,0,1,244,184,0,19,16,185,0,31,0,1,244,48,49,23,34,46,2,39,55,30,3,51,50,62,2,53,52,38,35,34,6,7,39,55,33,21,35,7,62,1,51,50,30,2,21,20,14,2,213,35,54,42,34,13,23,12,30,37,46,29,28,50,38,22,74,61,33,48,25,28,19,1,10,228,15,21,48,29,36,64,48,28,32,51,67,12,12,20,25,12,30,11,22,17,11,19,34,50,30,59,69,20,16,17,244,38,179,11,16,19,40,61,42,42,64,43,23,0,0,2,0,67,255,244,1,166,2,12,0,13,0,43,0,77,0,184,0,0,69,88,184,0,40,47,27,185,0,40,0,11,62,89,184,0,0,69,88,184,0,32,47,27,185,0,32,0,5,62,89,187,0,24,0,1,0,8,0,4,43,184,0,32,16,185,0,0,0,1,244,184,0,40,16,185,0,16,0,1,244,186,0,21,0,32,0,40,17,18,57,48,49,37,50,62,2,53,52,38,35,34,6,7,30,1,19,38,35,34,14,2,7,62,1,51,50,22,21,20,14,2,35,34,38,53,52,62,2,51,50,22,23,1,5,24,43,31,18,59,66,30,75,35,6,73,191,40,61,34,61,46,28,1,31,76,42,77,85,26,44,59,33,89,104,35,60,78,43,42,60,23,26,18,33,45,27,55,70,33,42,81,92,1,161,43,25,58,94,69,32,38,82,78,36,59,43,24,124,120,80,112,69,31,28,23,0,0,0,1,0,33,0,0,1,121,2,0,0,15,0,51,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,11,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,7,16,185,0,5,0,1,244,184,0,9,208,48,49,51,62,3,55,33,53,33,21,14,3,7,35,152,4,21,41,60,43,254,224,1,88,51,66,39,18,4,47,76,127,112,105,54,38,26,60,111,115,125,75,0,0,0,0,3,0,58,255,244,1,165,2,12,0,37,0,51,0,67,0,87,0,184,0,0,69,88,184,0,19,47,27,185,0,19,0,11,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,187,0,38,0,1,0,60,0,4,43,186,0,10,0,38,0,60,17,18,57,186,0,27,0,60,0,38,17,18,57,184,0,19,16,185,0,44,0,1,244,184,0,0,16,185,0,52,0,1,244,48,49,23,34,46,2,53,52,62,2,55,53,46,1,53,52,62,2,51,50,22,21,20,14,2,7,21,30,3,21,20,14,2,19,62,1,53,52,38,35,34,6,21,20,30,2,7,50,54,53,52,46,2,39,14,1,21,20,30,2,243,40,68,49,28,21,33,41,20,31,52,24,42,56,32,75,82,16,24,28,13,19,36,28,18,26,47,65,1,36,40,61,57,48,61,26,42,54,11,61,72,28,48,62,34,42,62,21,38,53,12,22,37,52,30,27,44,36,28,10,4,19,58,40,29,47,34,19,77,59,21,39,33,28,9,3,10,24,31,40,26,29,49,37,21,1,26,26,59,32,42,59,51,42,26,39,28,22,255,56,44,28,41,30,23,12,21,63,42,23,40,29,16,0,2,0,52,255,244,1,147,2,12,0,13,0,44,0,77,0,184,0,0,69,88,184,0,33,47,27,185,0,33,0,11,62,89,184,0,0,69,88,184,0,41,47,27,185,0,41,0,5,62,89,187,0,0,0,1,0,25,0,4,43,184,0,33,16,185,0,6,0,1,244,184,0,41,16,185,0,17,0,1,244,186,0,22,0,41,0,33,17,18,57,48,49,55,50,54,55,46,1,35,34,14,2,21,20,22,7,30,1,51,50,62,2,55,14,1,35,34,38,53,52,62,2,51,50,22,21,20,14,2,35,34,38,39,219,30,74,34,6,71,70,24,42,30,18,58,65,20,51,29,34,60,47,27,1,29,75,42,75,85,25,44,58,32,88,104,35,59,76,42,43,62,22,238,33,41,80,95,19,33,46,27,55,69,171,20,20,25,58,92,68,31,38,82,79,36,59,43,24,125,120,80,111,69,31,28,22,0,0,2,0,87,255,244,0,172,2,0,0,5,0,17,0,45,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,11,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,5,62,89,184,0,12,220,184,0,5,220,48,49,19,53,51,7,3,35,23,34,38,53,52,54,51,50,22,21,20,6,107,46,1,6,33,17,17,26,26,17,17,25,25,1,189,67,67,254,246,191,24,21,22,24,24,22,21,24,0,0,2,0,87,0,0,0,172,2,12,0,5,0,17,0,49,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,11,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,184,0,12,16,184,0,6,220,184,0,1,220,48,49,55,19,51,19,23,35,19,34,38,53,52,54,51,50,22,21,20,6,107,6,33,6,1,46,23,17,26,26,17,17,25,25,67,1,10,254,246,67,1,177,24,23,20,24,24,20,23,24,0,0,0,0,2,0,47,255,244,1,86,2,32,0,26,0,38,0,42,0,184,0,0,69,88,184,0,27,47,27,185,0,27,0,5,62,89,187,0,10,0,1,0,16,0,4,43,184,0,27,16,184,0,33,220,184,0,0,220,48,49,55,38,62,4,53,52,38,35,34,7,39,62,1,51,50,22,21,20,14,4,23,7,34,38,53,52,54,51,50,22,21,20,6,163,5,15,30,37,33,23,49,54,70,51,25,28,73,49,69,76,23,34,39,30,18,5,17,17,25,25,17,17,26,26,179,30,44,34,30,33,40,28,35,53,54,28,27,37,70,51,33,47,36,30,32,39,27,191,24,21,22,24,24,22,21,24,0,0,0,2,0,61,255,224,1,100,2,12,0,27,0,39,0,42,0,184,0,0,69,88,184,0,34,47,27,185,0,34,0,11,62,89,187,0,21,0,1,0,0,0,4,43,184,0,34,16,184,0,28,220,184,0,10,220,48,49,23,34,38,53,52,62,4,39,51,22,14,4,21,20,22,51,50,54,55,23,14,1,3,34,38,53,52,54,51,50,22,21,20,6,206,69,76,23,34,38,31,16,4,41,5,16,30,37,33,23,50,54,33,61,26,26,29,72,39,17,25,25,17,17,25,25,32,70,52,33,47,35,30,32,39,27,30,44,34,30,33,40,28,35,53,27,27,27,28,37,1,209,24,23,20,24,24,20,23,24,0,0,255,255,0,83,1,126,0,134,2,86,2,6,4,128,0,161,255,255,0,83,1,126,1,19,2,86,0,38,4,128,0,161,0,7,4,128,0,141,255,161,255,255,0,58,1,129,0,161,2,96,2,6,4,130,0,161,255,255,0,58,1,126,0,162,2,93,2,6,4,131,0,161,255,255,0,58,1,129,1,46,2,96,0,38,4,130,0,161,0,7,4,130,0,141,255,161,255,255,0,58,1,126,1,47,2,93,0,38,4,131,0,161,0,7,4,131,0,141,255,161,255,255,0,40,0,251,1,4,1,34,2,6,4,140,0,21,0,1,0,40,0,254,1,113,1,34,0,3,0,13,0,187,0,1,0,1,0,2,0,4,43,48,49,19,33,21,33,40,1,73,254,183,1,34,36,0,0,1,0,40,0,254,2,130,1,34,0,3,0,13,0,187,0,1,0,1,0,2,0,4,43,48,49,19,33,21,33,40,2,90,253,166,1,34,36,0,0,1,0,88,255,131,0,247,2,111,0,14,0,11,0,186,0,6,0,0,0,3,43,48,49,23,46,1,53,52,54,55,23,14,1,21,20,22,23,7,220,62,70,70,62,27,60,60,60,60,27,125,82,183,109,109,183,82,16,77,185,96,96,185,77,16,0,0,0,1,0,32,255,131,0,191,2,111,0,13,0,11,0,186,0,7,0,13,0,3,43,48,49,23,62,1,53,52,38,39,55,30,1,21,20,6,7,32,60,60,60,60,27,62,70,70,62,109,77,185,96,96,185,77,16,82,183,109,109,183,82,0,0,1,0,98,255,154,1,2,2,88,0,7,0,23,0,187,0,5,0,1,0,6,0,4,43,187,0,1,0,1,0,2,0,4,43,48,49,19,51,21,35,17,51,21,35,98,160,125,125,160,2,88,29,253,124,29,0,1,0,21,255,154,0,181,2,88,0,7,0,23,0,187,0,1,0,1,0,6,0,4,43,187,0,5,0,1,0,2,0,4,43,48,49,23,51,17,35,53,51,17,35,21,125,125,160,160,73,2,132,29,253,66,0,1,0,35,255,154,1,2,2,88,0,52,0,51,0,187,0,49,0,1,0,0,0,4,43,187,0,28,0,1,0,29,0,4,43,187,0,14,0,1,0,13,0,4,43,186,0,40,0,13,0,14,17,18,57,184,0,0,16,184,0,51,208,48,49,23,34,46,2,53,52,54,53,52,46,2,35,53,50,62,2,53,52,38,53,52,62,2,59,1,21,35,34,6,21,20,22,21,20,6,7,21,30,1,21,20,6,21,20,22,59,1,21,35,224,28,41,28,14,8,7,19,34,26,26,34,19,7,8,14,28,41,28,34,31,46,31,6,21,30,30,21,6,31,46,31,34,102,10,25,42,32,39,69,38,15,29,23,13,32,13,22,28,15,39,69,40,32,42,25,10,29,41,43,35,61,37,44,50,9,4,9,52,42,37,61,35,43,41,29,0,0,0,1,0,21,255,154,0,244,2,88,0,51,0,43,0,187,0,1,0,1,0,50,0,4,43,187,0,23,0,1,0,20,0,4,43,187,0,36,0,1,0,37,0,4,43,186,0,11,0,37,0,36,17,18,57,48,49,23,51,50,54,53,52,38,53,52,54,55,53,46,1,53,52,54,53,52,38,43,1,53,51,50,30,2,21,20,6,21,20,30,2,51,21,34,14,2,21,20,22,21,20,14,2,43,1,21,31,46,31,6,22,29,29,22,6,31,46,31,34,28,41,28,14,8,7,19,34,26,26,34,19,7,8,14,28,41,28,34,73,41,43,35,61,37,42,52,9,4,9,50,44,37,61,35,43,41,29,10,25,42,32,40,69,39,15,28,22,13,32,13,23,29,15,38,69,39,32,42,25,10,255,255,0,40,1,138,1,66,3,40,2,7,6,68,0,0,1,150,0,0,255,255,0,94,1,150,0,214,3,28,2,7,6,69,0,0,1,150,0,0,255,255,0,47,1,150,1,55,3,40,2,7,6,70,0,0,1,150,0,0,255,255,0,40,1,138,1,52,3,40,2,7,6,71,0,0,1,150,0,0,255,255,0,46,1,150,1,61,3,28,2,7,6,72,0,0,1,150,0,0,255,255,0,40,1,138,1,57,3,28,2,7,6,73,0,0,1,150,0,0,255,255,0,50,1,138,1,61,3,40,2,7,6,74,0,0,1,150,0,0,255,255,0,50,1,150,1,55,3,28,2,7,6,75,0,0,1,150,0,0,255,255,0,49,1,138,1,54,3,40,2,7,6,76,0,0,1,150,0,0,255,255,0,41,1,138,1,52,3,40,2,7,6,77,0,0,1,150,0,0,255,255,0,66,1,78,0,178,3,97,2,7,6,78,0,0,1,150,0,0,255,255,0,41,1,78,0,153,3,97,2,7,6,79,0,0,1,150,0,0,255,255,0,44,1,142,0,115,1,217,2,7,6,80,0,0,1,150,0,0,255,255,0,34,1,43,0,125,1,217,2,7,6,81,0,0,1,150,0,0,255,255,0,40,255,73,1,66,0,231,2,7,6,68,0,0,255,85,0,0,255,255,0,94,255,85,0,214,0,219,2,7,6,69,0,0,255,85,0,0,255,255,0,47,255,85,1,55,0,231,2,7,6,70,0,0,255,85,0,0,255,255,0,40,255,73,1,52,0,231,2,7,6,71,0,0,255,85,0,0,255,255,0,46,255,85,1,61,0,219,2,7,6,72,0,0,255,85,0,0,255,255,0,40,255,73,1,57,0,219,2,7,6,73,0,0,255,85,0,0,255,255,0,50,255,73,1,61,0,231,2,7,6,74,0,0,255,85,0,0,255,255,0,50,255,85,1,55,0,219,2,7,6,75,0,0,255,85,0,0,255,255,0,49,255,73,1,54,0,231,2,7,6,76,0,0,255,85,0,0,255,255,0,41,255,73,1,52,0,231,2,7,6,77,0,0,255,85,0,0,255,255,0,66,255,13,0,178,1,32,2,7,6,78,0,0,255,85,0,0,255,255,0,41,255,13,0,153,1,32,2,7,6,79,0,0,255,85,0,0,255,255,0,44,255,77,0,115,255,152,2,7,6,80,0,0,255,85,0,0,255,255,0,34,254,234,0,125,255,152,2,7,6,81,0,0,255,85,0,0,0,2,0,40,255,244,1,66,1,146,0,11,0,23,0,36,0,184,0,6,47,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,12,220,184,0,6,16,184,0,18,220,48,49,23,34,38,53,52,54,51,50,22,21,20,6,39,50,54,53,52,38,35,34,6,21,20,22,181,66,75,75,66,66,75,75,66,47,55,55,47,47,55,55,12,107,101,100,106,106,100,101,107,33,91,84,84,89,89,84,84,91,0,0,0,1,0,94,0,0,0,214,1,134,0,8,0,32,0,184,0,6,47,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,184,0,6,16,184,0,0,220,48,49,19,35,53,62,1,55,51,17,35,176,82,29,41,17,33,38,1,68,27,6,19,14,254,122,0,0,0,1,0,47,0,0,1,55,1,146,0,26,0,44,0,184,0,15,47,184,0,0,69,88,184,0,25,47,27,185,0,25,0,5,62,89,184,0,23,220,184,0,0,208,184,0,0,47,184,0,15,16,184,0,8,220,48,49,55,62,3,53,52,38,35,34,6,7,39,62,1,51,50,22,21,20,14,2,7,51,21,35,56,50,73,47,23,47,39,27,47,17,25,18,65,37,54,67,25,44,63,37,192,255,25,46,72,58,49,25,43,50,36,26,23,30,43,61,62,31,56,58,63,37,34,0,0,0,0,1,0,40,255,244,1,52,1,146,0,42,0,60,0,184,0,27,47,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,187,0,14,0,1,0,13,0,4,43,184,0,0,16,184,0,7,220,184,0,27,16,184,0,20,220,186,0,33,0,14,0,13,17,18,57,48,49,23,34,38,39,55,30,1,51,50,54,53,52,38,35,53,50,54,53,52,38,35,34,6,7,39,62,1,51,50,22,21,20,6,7,30,3,21,20,14,2,177,46,71,20,29,18,57,34,37,54,74,64,59,63,45,38,23,47,19,25,21,59,38,49,69,43,32,18,32,26,15,20,36,48,12,45,30,22,29,35,43,40,38,42,28,50,34,32,41,29,23,22,27,36,54,49,37,49,13,3,16,24,33,21,27,43,29,16,0,0,0,2,0,46,0,0,1,61,1,134,0,5,0,16,0,78,0,184,0,14,47,184,0,0,69,88,184,0,9,47,27,185,0,9,0,5,62,89,186,0,0,0,10,0,3,43,186,0,2,0,14,0,9,17,18,57,184,0,0,16,184,0,5,208,184,0,10,16,184,0,7,208,184,0,5,16,184,0,12,208,184,0,12,47,184,0,0,16,184,0,15,208,48,49,55,53,55,35,15,1,23,35,21,35,53,35,53,55,51,21,51,223,4,4,56,73,223,58,36,177,177,36,58,146,87,104,83,108,32,114,114,21,255,244,0,0,0,1,0,40,255,244,1,57,1,134,0,34,0,48,0,184,0,18,47,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,186,0,13,0,25,0,3,43,184,0,0,16,184,0,7,220,184,0,18,16,184,0,20,220,48,49,23,34,38,39,55,30,1,51,50,54,53,52,38,35,34,6,7,39,55,51,21,35,7,62,1,51,50,30,2,21,20,14,2,181,51,68,22,29,20,54,38,40,53,52,43,27,39,16,24,20,199,166,13,15,35,23,27,46,34,20,20,36,48,12,45,30,22,29,35,57,45,47,55,23,13,16,185,36,119,8,12,17,34,49,33,30,50,35,19,0,0,2,0,50,255,244,1,61,1,146,0,11,0,42,0,48,0,184,0,39,47,184,0,0,69,88,184,0,31,47,27,185,0,31,0,5,62,89,186,0,6,0,23,0,3,43,184,0,31,16,184,0,0,220,184,0,39,16,184,0,15,220,48,49,55,50,54,53,52,38,35,34,6,7,30,1,19,46,1,35,34,14,2,7,62,1,51,50,22,21,20,14,2,35,34,38,53,52,62,2,51,50,22,23,194,38,47,44,45,26,48,27,4,55,132,14,33,21,22,42,35,23,2,24,53,30,60,62,19,33,45,27,64,79,27,45,59,32,29,38,17,21,55,41,40,54,22,29,67,72,1,70,9,13,19,41,65,46,22,23,71,55,27,48,34,20,100,92,60,85,53,24,13,11,0,0,0,1,0,50,0,0,1,55,1,134,0,15,0,40,0,184,0,7,47,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,7,16,184,0,5,220,184,0,9,208,184,0,9,47,48,49,51,62,3,55,35,53,33,21,14,3,7,35,139,4,16,30,45,32,216,1,5,37,48,30,14,3,40,54,93,85,82,42,34,23,47,88,88,92,52,0,0,0,0,3,0,49,255,244,1,54,1,146,0,31,0,42,0,57,0,68,0,184,0,15,47,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,186,0,32,0,53,0,3,43,186,0,9,0,32,0,53,17,18,57,186,0,23,0,53,0,32,17,18,57,184,0,15,16,184,0,37,220,184,0,0,16,184,0,43,220,48,49,23,34,46,2,53,52,54,55,53,46,1,53,52,54,51,50,22,21,20,14,2,7,21,30,1,21,20,14,2,39,54,53,52,38,35,34,6,21,20,22,23,50,62,2,53,52,46,2,39,6,21,20,22,179,30,48,34,18,46,29,26,32,65,48,50,67,12,18,21,9,35,39,20,35,48,1,52,47,32,31,44,59,16,19,34,25,15,20,34,43,23,65,50,12,17,30,39,22,39,57,17,4,17,39,32,45,56,55,46,19,30,24,18,7,4,18,46,35,24,41,30,17,225,40,49,30,36,38,29,35,39,207,13,21,29,16,22,28,21,15,9,36,59,30,49,0,0,2,0,41,255,244,1,52,1,146,0,11,0,41,0,48,0,184,0,30,47,184,0,0,69,88,184,0,38,47,27,185,0,38,0,5,62,89,186,0,22,0,0,0,3,43,184,0,30,16,184,0,6,220,184,0,38,16,184,0,15,220,48,49,55,50,54,55,46,1,35,34,6,21,20,22,7,30,1,51,50,62,2,55,6,35,34,38,53,52,62,2,51,50,22,21,20,14,2,35,34,38,39,168,27,47,27,4,54,47,38,47,45,45,14,33,21,21,42,35,23,2,48,59,60,62,19,33,45,27,64,79,27,45,59,31,29,39,17,179,22,29,67,72,55,41,40,54,136,9,13,19,41,65,46,45,71,55,27,48,34,20,100,92,60,85,53,24,13,11,0,0,0,1,0,66,255,184,0,178,1,203,0,14,0,11,0,186,0,6,0,0,0,3,43,48,49,23,46,1,53,52,54,55,23,14,1,21,20,22,23,7,152,42,44,44,42,26,42,32,32,42,26,72,58,126,82,81,126,58,16,58,125,66,66,125,59,16,0,0,0,1,0,41,255,184,0,153,1,203,0,13,0,11,0,186,0,7,0,13,0,3,43,48,49,23,62,1,53,52,38,39,55,30,1,21,20,6,7,41,42,31,31,42,27,42,43,43,42,56,59,125,66,66,125,58,16,58,126,81,82,126,58,0,0,1,0,44,255,248,0,115,0,67,0,11,0,26,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,185,0,6,0,2,244,48,49,23,34,38,53,52,54,51,50,22,21,20,6,79,15,20,20,15,16,20,20,8,20,18,17,20,20,17,18,20,0,0,0,0,1,0,34,255,149,0,125,0,67,0,17,0,43,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,5,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,5,62,89,185,0,11,0,2,244,48,49,23,62,1,53,6,35,34,38,53,52,54,51,50,22,21,20,6,7,34,25,31,3,6,14,22,22,14,20,24,43,35,81,11,40,29,1,15,17,18,19,30,29,37,63,15,0,0,255,255,0,40,1,1,1,66,2,159,2,7,6,68,0,0,1,13,0,0,255,255,0,94,1,13,0,214,2,147,2,7,6,69,0,0,1,13,0,0,255,255,0,47,1,13,1,55,2,159,2,7,6,70,0,0,1,13,0,0,255,255,0,40,1,1,1,52,2,159,2,7,6,71,0,0,1,13,0,0,255,255,0,46,1,13,1,61,2,147,2,7,6,72,0,0,1,13,0,0,255,255,0,40,1,1,1,57,2,147,2,7,6,73,0,0,1,13,0,0,255,255,0,50,1,1,1,61,2,159,2,7,6,74,0,0,1,13,0,0,255,255,0,50,1,13,1,55,2,147,2,7,6,75,0,0,1,13,0,0,255,255,0,49,1,1,1,54,2,159,2,7,6,76,0,0,1,13,0,0,255,255,0,41,1,1,1,52,2,159,2,7,6,77,0,0,1,13,0,0,255,255,0,66,0,197,0,178,2,216,2,7,6,78,0,0,1,13,0,0,255,255,0,41,0,197,0,153,2,216,2,7,6,79,0,0,1,13,0,0,255,255,0,44,1,5,0,115,1,80,2,7,6,80,0,0,1,13,0,0,255,255,0,34,0,162,0,125,1,80,2,7,6,81,0,0,1,13,0,0,255,255,0,42,1,142,1,29,2,219,2,6,6,125,0,0,255,255,0,37,1,142,1,53,2,219,2,6,6,159,0,0,255,255,0,33,1,142,1,69,2,219,2,6,6,139,0,0,0,2,0,2,1,150,1,91,3,70,0,9,0,17,0,43,0,184,0,13,47,184,0,16,47,184,0,14,47,186,0,5,0,14,0,13,17,18,57,186,0,10,0,14,0,13,17,18,57,184,0,10,16,184,0,9,220,48,49,19,39,46,1,39,35,14,1,15,1,23,35,7,35,19,51,19,35,248,25,13,23,12,2,11,23,13,26,159,170,49,38,153,41,151,40,2,69,75,39,71,38,39,71,38,75,32,143,1,176,254,80,0,0,3,0,61,1,150,1,100,3,70,0,15,0,24,0,33,0,55,0,184,0,1,47,184,0,14,47,186,0,31,0,1,0,14,17,18,57,184,0,31,16,184,0,16,220,186,0,7,0,31,0,16,17,18,57,184,0,1,16,184,0,22,220,184,0,14,16,184,0,25,220,48,49,19,51,50,22,21,20,6,7,21,30,1,21,20,6,43,1,55,50,54,53,52,38,43,1,21,23,50,54,53,52,38,43,1,21,61,123,66,80,39,38,48,55,89,75,131,112,64,55,58,58,76,84,63,71,69,65,84,3,70,50,55,33,51,9,3,8,52,45,63,63,244,40,42,39,36,157,213,44,51,45,43,183,0,0,1,0,34,1,142,1,94,3,78,0,31,0,27,0,184,0,10,47,184,0,0,47,184,0,10,16,184,0,17,220,184,0,0,16,184,0,25,220,48,49,19,34,46,2,53,52,62,2,51,50,22,23,7,46,1,35,34,14,2,21,20,22,51,50,54,55,23,14,1,220,41,68,50,27,28,50,69,42,39,59,18,22,18,46,29,35,55,39,21,78,69,33,51,23,22,25,63,1,142,31,58,83,52,51,83,59,31,31,21,24,20,23,27,50,69,43,89,104,27,25,24,28,33,0,2,0,61,1,150,1,111,3,70,0,8,0,17,0,27,0,184,0,7]);fileData0.push.apply(fileData0,[47,184,0,1,47,184,0,7,16,184,0,9,220,184,0,1,16,184,0,15,220,48,49,19,51,50,22,21,20,6,43,1,55,50,54,53,52,38,43,1,17,61,105,101,100,100,100,106,105,83,78,79,85,63,3,70,115,99,100,118,32,101,85,85,97,254,144,0,0,1,0,61,1,150,1,55,3,70,0,11,0,35,0,184,0,0,47,184,0,11,47,186,0,5,0,6,0,3,43,184,0,0,16,184,0,2,220,184,0,11,16,184,0,9,220,48,49,19,51,21,35,21,51,21,35,21,51,21,35,61,244,205,173,173,211,250,3,70,33,153,33,181,32,0,0,1,0,61,1,150,1,49,3,70,0,9,0,27,0,184,0,9,47,184,0,0,47,186,0,5,0,6,0,3,43,184,0,0,16,184,0,2,220,48,49,19,51,21,35,21,51,21,35,21,35,61,244,205,173,173,39,3,70,33,163,33,203,0,0,1,0,34,1,142,1,99,3,78,0,35,0,35,0,184,0,0,47,184,0,10,47,186,0,31,0,30,0,3,43,184,0,10,16,184,0,17,220,184,0,0,16,184,0,25,220,48,49,19,34,46,2,53,52,62,2,51,50,22,23,7,46,1,35,34,14,2,21,20,22,51,50,54,55,53,35,53,51,21,14,1,225,42,71,50,28,29,51,72,44,45,58,18,22,17,47,35,36,58,40,22,80,74,28,50,14,100,135,20,67,1,142,31,58,83,52,51,83,59,31,33,19,24,17,26,27,50,69,43,89,104,17,14,128,32,176,20,28,0,0,1,0,61,1,150,1,107,3,70,0,11,0,27,0,184,0,0,47,184,0,4,47,184,0,11,47,184,0,7,47,186,0,8,0,2,0,3,43,48,49,19,51,21,51,53,51,17,35,53,35,21,35,61,39,225,38,38,225,39,3,70,186,186,254,80,213,213,0,1,0,61,1,150,0,100,3,70,0,3,0,11,0,184,0,0,47,184,0,2,47,48,49,19,51,17,35,61,39,39,3,70,254,80,0,1,0,23,1,142,0,248,3,70,0,17,0,15,0,184,0,11,47,184,0,0,47,184,0,7,220,48,49,19,34,38,39,55,30,1,51,50,54,53,17,51,17,20,14,2,133,38,55,17,28,16,39,26,39,39,38,13,28,43,1,142,34,31,19,27,24,48,51,1,52,254,200,27,46,35,20,0,0,0,0,1,0,61,1,150,1,112,3,70,0,12,0,49,0,184,0,12,47,184,0,8,47,184,0,0,47,184,0,4,47,186,0,2,0,0,0,12,17,18,57,186,0,6,0,0,0,8,17,18,57,186,0,9,0,12,0,0,17,18,57,48,49,19,51,21,51,55,51,7,19,35,39,7,21,35,61,39,2,202,45,139,158,43,140,85,39,3,70,233,233,161,254,241,242,96,146,0,0,0,0,1,0,61,1,150,1,42,3,70,0,5,0,15,0,184,0,0,47,184,0,5,47,184,0,3,220,48,49,19,51,17,51,21,35,61,39,198,237,3,70,254,112,32,0,1,0,61,1,150,1,153,3,70,0,25,0,59,0,184,0,25,47,184,0,9,47,184,0,0,47,184,0,7,47,186,0,4,0,7,0,9,17,18,57,186,0,13,0,9,0,7,17,18,57,186,0,17,0,25,0,0,17,18,57,186,0,20,0,0,0,25,17,18,57,48,49,19,51,31,1,51,63,1,51,17,35,17,52,54,55,35,15,1,35,47,1,35,30,1,21,17,35,61,51,89,34,3,33,88,50,37,3,2,2,35,90,29,91,35,3,2,3,36,3,70,245,94,94,245,254,80,1,13,26,65,27,94,249,249,94,27,65,26,254,243,0,0,0,1,0,61,1,150,1,105,3,70,0,19,0,39,0,184,0,0,47,184,0,9,47,184,0,10,47,184,0,19,47,186,0,4,0,10,0,9,17,18,57,186,0,14,0,0,0,19,17,18,57,48,49,19,51,19,23,51,46,1,61,1,51,17,35,3,39,35,30,1,21,17,35,61,42,175,49,3,2,2,35,40,176,50,2,1,3,36,3,70,254,217,86,31,66,32,252,254,80,1,39,86,32,61,32,255,0,0,0,2,0,34,1,142,1,143,3,78,0,19,0,33,0,23,0,184,0,10,47,184,0,0,47,184,0,20,220,184,0,10,16,184,0,26,220,48,49,19,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,39,50,54,53,52,38,35,34,14,2,21,20,22,216,40,67,48,27,27,48,67,40,40,68,48,27,27,48,68,40,66,77,77,66,32,52,38,20,78,1,142,32,59,83,52,51,83,57,31,31,58,82,51,52,83,59,32,33,105,88,87,102,27,49,70,43,88,105,0,0,2,0,61,1,150,1,88,3,70,0,10,0,19,0,27,0,184,0,0,47,184,0,10,47,186,0,11,0,7,0,3,43,184,0,0,16,184,0,17,220,48,49,19,51,50,22,21,20,6,43,1,21,35,55,50,54,53,52,38,43,1,21,61,125,73,85,86,72,86,39,118,63,63,63,63,79,3,70,55,67,66,63,181,213,45,52,52,38,187,0,0,0,2,0,33,1,47,1,146,3,78,0,11,0,44,0,43,0,184,0,18,47,184,0,28,47,186,0,41,0,15,0,3,43,184,0,18,16,184,0,3,220,184,0,28,16,184,0,9,220,184,0,18,16,184,0,38,208,48,49,19,20,22,51,50,54,53,52,38,35,34,6,1,14,1,35,34,38,39,46,3,53,52,62,2,51,50,30,2,21,20,14,2,7,30,1,51,50,54,55,73,78,65,65,77,77,65,65,78,1,73,8,31,18,57,75,17,36,60,43,24,27,49,67,40,40,67,48,27,24,42,59,35,14,58,39,15,22,8,2,113,88,106,106,88,86,102,102,254,112,3,5,54,42,4,35,59,79,49,51,82,57,31,31,58,81,51,48,80,58,36,4,31,32,4,2,0,0,2,0,61,1,150,1,91,3,70,0,8,0,22,0,41,0,184,0,13,47,184,0,9,47,184,0,14,47,186,0,1,0,10,0,3,43,184,0,14,16,184,0,7,220,186,0,21,0,1,0,10,17,18,57,48,49,19,51,50,54,53,52,38,43,1,19,39,35,21,35,17,51,50,22,21,20,6,7,23,100,82,57,59,59,57,82,203,114,89,39,129,66,81,58,49,117,2,119,44,47,47,37,254,112,193,193,1,176,53,63,51,60,9,196,0,0,1,0,28,1,142,1,64,3,78,0,47,0,43,0,184,0,24,47,184,0,0,47,184,0,7,220,186,0,16,0,0,0,24,17,18,57,184,0,24,16,184,0,31,220,186,0,40,0,24,0,0,17,18,57,48,49,19,34,38,39,55,30,1,51,50,54,53,52,46,2,47,1,46,3,53,52,54,51,50,22,23,7,46,1,35,34,6,21,20,30,2,31,1,30,3,21,20,6,178,48,74,28,24,24,66,37,48,55,12,21,27,16,66,15,32,25,17,74,56,40,63,22,21,20,51,33,42,49,14,21,26,12,66,19,33,25,14,76,1,142,36,29,26,28,29,44,38,19,26,20,14,7,29,6,18,26,35,24,48,60,30,22,24,20,23,40,33,18,25,19,13,5,30,8,19,26,34,23,54,68,0,0,0,0,1,0,17,1,150,1,72,3,70,0,7,0,19,0,184,0,7,47,184,0,2,47,184,0,1,220,184,0,4,208,48,49,19,35,53,33,21,35,17,35,154,137,1,55,136,38,3,37,33,33,254,113,0,0,0,0,1,0,60,1,142,1,105,3,70,0,25,0,23,0,184,0,6,47,184,0,0,47,184,0,13,220,184,0,6,16,184,0,19,208,48,49,19,34,46,2,53,17,51,17,20,30,2,51,50,62,2,53,17,51,17,20,14,2,211,30,55,41,25,38,18,32,40,23,23,42,31,19,35,25,41,54,1,142,17,42,68,51,1,6,254,252,42,56,35,14,14,35,56,42,1,4,254,250,51,68,42,17,0,0,1,0,0,1,150,1,72,3,70,0,13,0,25,0,184,0,0,47,184,0,10,47,184,0,13,47,186,0,5,0,0,0,13,17,18,57,48,49,17,51,23,30,1,23,51,62,1,63,1,51,3,35,41,78,13,19,14,3,13,18,12,78,39,142,42,3,70,245,40,66,39,39,66,40,245,254,80,0,0,0,1,0,16,1,150,1,240,3,70,0,32,0,61,0,184,0,0,47,184,0,32,47,186,0,4,0,0,0,32,17,18,57,184,0,0,16,184,0,9,208,184,0,19,208,184,0,32,16,184,0,22,208,186,0,14,0,19,0,22,17,18,57,186,0,26,0,32,0,9,17,18,57,48,49,19,51,23,22,23,51,62,1,63,1,51,23,30,1,23,51,62,1,63,1,51,3,35,3,46,1,39,35,14,1,7,3,35,16,40,53,15,12,3,8,16,9,66,37,67,9,16,9,3,7,12,8,53,37,97,43,76,7,10,5,3,6,11,7,74,43,3,70,247,72,69,35,70,36,247,247,36,70,35,35,70,36,247,254,80,1,29,25,46,26,26,46,25,254,227,0,0,0,1,0,9,1,150,1,58,3,70,0,25,0,59,0,184,0,1,47,184,0,12,47,184,0,14,47,184,0,25,47,186,0,0,0,1,0,25,17,18,57,186,0,6,0,14,0,12,17,18,57,186,0,13,0,14,0,12,17,18,57,186,0,20,0,1,0,25,17,18,57,48,49,19,39,51,23,30,1,23,51,62,1,63,1,51,7,23,35,39,46,1,39,35,14,1,15,1,35,140,122,42,67,9,15,11,3,10,14,8,68,40,122,131,41,72,9,19,12,3,10,18,9,72,40,2,118,208,122,15,27,18,18,27,15,122,210,222,128,16,32,20,20,32,16,128,0,0,0,1,255,254,1,150,1,45,3,70,0,15,0,29,0,184,0,1,47,184,0,15,47,186,0,6,0,1,0,15,17,18,57,184,0,1,16,184,0,11,208,48,49,19,3,51,23,30,1,23,51,62,1,63,1,51,3,21,35,131,133,41,64,11,23,12,3,12,23,11,63,40,132,38,2,67,1,3,131,24,45,25,25,45,24,131,254,253,173,0,0,0,0,1,0,30,1,150,1,70,3,70,0,9,0,39,0,184,0,3,47,184,0,8,47,184,0,6,220,184,0,0,208,184,0,0,47,184,0,3,16,184,0,1,220,184,0,5,208,184,0,5,47,48,49,27,1,35,53,33,21,3,51,21,33,30,246,224,1,15,246,249,254,216,1,172,1,121,33,23,254,135,32,0,0,0,0,2,0,42,1,142,1,29,2,219,0,27,0,36,0,53,0,184,0,0,47,184,0,18,47,186,0,6,0,31,0,3,43,184,0,18,16,184,0,11,220,184,0,0,16,184,0,23,208,184,0,0,16,184,0,28,220,186,0,25,0,0,0,28,17,18,57,48,49,19,34,38,53,52,54,55,52,46,2,35,34,6,7,39,62,1,51,50,22,29,1,35,39,35,14,1,39,50,55,53,14,1,21,20,22,139,43,54,98,108,7,16,26,21,30,60,17,15,20,67,39,58,45,30,6,4,21,53,23,48,52,93,74,36,1,142,47,44,53,54,11,19,34,25,14,25,12,27,13,29,68,57,200,39,18,29,32,49,102,11,44,34,32,30,0,2,0,58,1,142,1,74,3,110,0,20,0,32,0,76,0,184,0,0,47,184,0,7,47,184,0,0,69,88,184,0,13,47,27,185,0,13,0,19,62,89,186,0,3,0,0,0,13,17,18,57,184,0,0,16,184,0,6,208,184,0,6,47,186,0,10,0,13,0,0,17,18,57,184,0,0,16,184,0,21,220,184,0,13,16,184,0,27,220,48,49,19,34,38,39,35,7,35,17,51,21,7,62,1,51,50,22,21,20,14,2,39,50,54,53,52,38,35,34,7,21,30,1,190,23,49,23,4,4,29,37,2,25,51,31,66,64,22,39,51,29,44,58,45,51,47,53,24,50,1,142,20,18,30,1,216,134,63,21,29,86,74,41,64,45,23,33,75,64,57,71,50,178,21,18,0,1,0,33,1,142,1,28,2,219,0,29,0,27,0,184,0,10,47,184,0,0,47,184,0,10,16,184,0,17,220,184,0,0,16,184,0,23,220,48,49,19,34,46,2,53,52,62,2,51,50,22,23,7,46,1,35,34,6,21,20,22,51,50,54,55,23,14,1,183,33,55,40,22,25,41,54,30,34,45,16,19,17,33,26,48,63,62,50,28,39,16,17,18,47,1,142,22,43,62,40,40,62,42,22,22,13,26,14,15,75,59,60,74,17,13,25,15,23,0,0,2,0,37,1,142,1,53,3,110,0,20,0,35,0,59,0,184,0,0,47,184,0,8,47,184,0,13,47,184,0,8,16,184,0,28,220,186,0,11,0,28,0,8,17,18,57,184,0,0,16,184,0,16,208,184,0,0,16,184,0,21,220,186,0,18,0,0,0,21,17,18,57,48,49,19,34,38,53,52,62,2,51,50,22,23,39,53,51,17,35,39,35,14,1,39,50,54,55,53,46,1,35,34,14,2,21,20,22,174,64,73,23,39,51,28,27,46,23,2,37,30,6,4,20,45,24,23,43,26,24,47,22,21,37,29,16,50,1,142,89,84,37,59,42,22,20,17,57,127,254,40,37,18,27,33,26,23,179,21,19,19,35,47,27,65,75,0,0,2,0,31,1,142,1,45,2,219,0,28,0,37,0,49,0,184,0,10,47,184,0,0,47,186,0,19,0,10,0,0,17,18,57,184,0,19,47,184,0,0,16,184,0,22,220,184,0,19,16,184,0,29,220,184,0,10,16,184,0,34,220,48,49,19,34,46,2,53,52,62,2,51,50,30,2,21,28,1,7,35,30,1,51,50,54,55,23,14,1,55,52,46,2,35,34,6,7,182,32,55,40,24,23,39,52,30,38,49,28,11,2,230,1,62,53,26,45,17,16,20,52,49,9,22,35,25,44,56,6,1,142,22,42,62,41,38,62,43,23,30,43,50,19,8,11,12,57,71,17,12,27,13,21,190,19,40,32,20,60,51,0,0,0,1,0,21,1,150,0,201,3,119,0,23,0,43,0,184,0,20,47,184,0,11,47,184,0,7,47,184,0,20,16,184,0,3,220,184,0,7,16,184,0,10,220,184,0,13,208,184,0,7,16,184,0,16,208,48,49,19,46,1,35,34,6,29,1,51,21,35,17,35,17,35,53,55,53,52,54,51,50,22,23,192,8,18,13,25,24,74,74,37,46,46,42,42,14,22,14,3,79,3,5,39,29,64,30,254,225,1,31,28,2,60,48,56,4,6,0,3,0,34,0,255,1,66,2,219,0,52,0,64,0,79,0,88,0,184,0,0,47,184,0,0,69,88,184,0,21,47,27,185,0,21,0,19,62,89,186,0,72,0,44,0,3,43,186,0,53,0,35,0,3,43,186,0,5,0,44,0,72,17,18,57,186,0,12,0,53,0,35,17,18,57,184,0,21,16,184,0,25,208,184,0,21,16,184,0,59,220,184,0,26,208,184,0,0,16,184,0,65,220,48,49,55,34,38,53,52,55,53,46,1,53,52,54,55,53,46,1,53,52,62,2,51,50,22,23,51,21,35,30,1,21,20,14,2,35,34,38,39,14,1,21,20,22,59,1,50,22,21,20,14,2,3,50,54,53,52,38,35,34,6,21,20,22,23,50,54,53,52,38,43,1,34,38,39,6,21,20,22,165,61,70,46,12,16,24,11,16,25,18,32,43,24,16,23,11,105,70,14,17,18,32,42,24,13,27,12,10,14,26,34,67,56,52,22,40,59,38,32,49,49,32,35,46,46,43,51,63,37,35,64,7,23,11,39,53,255,46,42,42,31,4,8,26,18,20,29,8,4,12,44,29,25,42,30,16,4,5,32,11,40,21,25,42,30,17,6,7,7,20,14,17,21,35,40,21,39,30,18,1,24,46,37,38,44,43,39,37,46,249,44,29,24,19,1,3,24,34,29,33,0,1,0,58,1,150,1,50,3,110,0,20,0,27,0,184,0,6,47,184,0,19,47,184,0,11,47,184,0,1,47,184,0,6,16,184,0,15,220,48,49,19,51,21,7,62,1,51,50,22,29,1,35,53,52,38,35,34,6,7,21,35,58,37,1,22,57,32,57,44,38,28,45,22,49,29,37,3,110,133,70,23,33,67,54,204,197,43,52,27,29,236,0,2,0,46,1,150,0,110,3,90,0,11,0,15,0,19,0,184,0,14,47,184,0,13,47,184,0,0,220,184,0,6,220,48,49,19,34,38,53,52,54,51,50,22,21,20,6,7,51,17,35,78,14,18,18,14,14,18,18,34,37,37,3,28,17,14,13,18,18,13,14,17,73,254,195,0,0,2,255,234,1,0,0,112,3,90,0,15,0,27,0,31,0,184,0,0,47,184,0,12,47,184,0,0,16,184,0,7,220,184,0,12,16,184,0,16,220,184,0,22,220,48,49,19,34,38,39,55,30,1,51,50,54,53,17,51,17,20,6,19,34,38,53,52,54,51,50,22,21,20,6,21,14,17,12,10,7,12,10,26,17,37,38,21,14,18,18,14,14,18,18,1,0,3,5,32,3,3,35,29,1,113,254,147,53,49,2,28,17,14,13,18,18,13,14,17,0,1,0,58,1,150,1,56,3,110,0,12,0,49,0,184,0,11,47,184,0,8,47,184,0,4,47,184,0,1,47,186,0,2,0,11,0,1,17,18,57,186,0,6,0,1,0,11,17,18,57,186,0,9,0,11,0,1,17,18,57,48,49,19,51,17,51,55,51,7,23,35,39,7,21,35,58,37,4,151,45,108,125,44,105,68,37,3,110,254,177,180,127,190,162,80,82,0,0,0,0,1,0,58,1,142,0,132,3,110,0,14,0,15,0,184,0,4,47,184,0,0,47,184,0,8,220,48,49,19,34,38,53,17,51,17,20,51,58,1,55,23,14,1,106,26,22,37,16,3,6,5,7,5,12,1,142,31,30,1,163,254,87,22,2,31,2,2,0,1,0,58,1,150,1,238,2,219,0,34,0,67,0,184,0,33,47,184,0,6,47,184,0,1,208,186,0,2,0,6,0,33,17,18,57,184,0,6,16,184,0,11,208,186,0,8,0,11,0,25,17,18,57,184,0,33,16,184,0,24,208,184,0,15,208,184,0,6,16,184,0,29,220,184,0,20,208,48,49,19,51,23,51,62,1,51,50,23,62,1,51,50,22,29,1,35,53,52,38,35,34,6,7,21,35,53,52,38,35,34,6,7,21,35,58,29,5,4,20,49,32,70,19,23,56,32,53,44,37,29,41,21,43,28,38,29,41,21,42,29,37,2,211,47,23,32,63,26,37,67,54,204,197,43,52,27,29,236,197,43,52,27,29,236,0,0,0,1,0,58,1,150,1,50,2,219,0,20,0,45,0,184,0,6,47,184,0,19,47,184,0,6,16,184,0,1,208,186,0,2,0,6,0,19,17,18,57,184,0,19,16,184,0,10,208,184,0,6,16,184,0,15,220,48,49,19,51,23,51,62,1,51,50,22,29,1,35,53,52,38,35,34,6,7,21,35,58,29,5,4,22,55,32,57,44,38,28,43,23,50,29,37,2,211,47,23,32,67,54,204,197,43,52,27,29,236,0,0,0,2,0,33,1,142,1,69,2,219,0,19,0,31,0,23,0,184,0,10,47,184,0,0,47,184,0,20,220,184,0,10,16,184,0,26,220,48,49,19,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,39,50,54,53,52,38,35,34,6,21,20,22,179,30,54,39,23,23,39,54,30,30,54,39,23,23,39,54,30,49,58,58,49,48,59,59,1,142,23,43,62,39,40,62,42,22,22,42,62,40,39,62,43,23,33,74,60,60,74,74,60,60,74,0,0,0,2,0,58,1,11,1,74,2,219,0,20,0,32,0,72,0,184,0,20,47,184,0,14,47,184,0,0,69,88,184,0,6,47,27,185,0,6,0,19,62,89,184,0,0,208,184,0,0,47,186,0,2,0,6,0,14,17,18,57,186,0,17,0,14,0,6,17,18,57,184,0,14,16,184,0,21,220,184,0,6,16,184,0,27,220,48,49,19,51,23,51,62,1,51,50,22,21,20,14,2,35,34,38,39,23,21,35,55,50,54,53,52,38,35,34,7,21,30,1,58,29,6,4,21,51,31,66,64,22,39,51,28,23,52,22,2,37,131,44,58,45,51,47,53,24,50,2,211,39,18,29,86,74,41,64,45,23,20,18,60,109,164,75,64,57,71,50,178,21,18,0,0,2,0,37,1,11,1,53,2,219,0,20,0,34,0,59,0,184,0,12,47,184,0,4,47,184,0,20,47,186,0,1,0,4,0,12,17,18,57,186,0,15,0,12,0,4,17,18,57,184,0,12,16,184,0,17,208,184,0,4,16,184,0,21,220,184,0,12,16,184,0,27,220,48,49,1,55,14,1,35,34,38,53,52,62,2,51,50,22,23,51,55,51,17,35,39,50,55,53,46,1,35,34,14,2,21,20,22,1,16,2,20,50,29,65,73,23,39,51,28,27,47,19,4,5,29,37,92,43,49,24,47,22,21,37,29,16,50,1,124,61,20,23,88,79,39,62,42,23,20,18,30,254,56,164,43,185,21,18,19,35,49,30,60,74,0,0,0,0,1,0,58,1,150,0,223,2,219,0,18,0,37,0,184,0,6,47,184,0,17,47,184,0,6,16,184,0,1,208,186,0,2,0,6,0,17,17,18,57,184,0,6,16,184,0,13,220,48,49,19,51,23,51,62,1,51,50,22,23,7,46,1,35,34,6,7,21,35,58,29,7,3,19,43,29,10,19,6,9,5,16,8,23,46,19,39,2,211,56,31,33,3,3,35,2,2,33,43,212,0,0,0,0,1,0,21,1,142,0,252,2,219,0,47,0,60,0,184,0,0,47,184,0,0,69,88,184,0,25,47,27,185,0,25,0,19,62,89,184,0,0,16,184,0,7,220,186,0,15,0,25,0,0,17,18,57,184,0,25,16,184,0,32,220,186,0,40,0,0,0,25,17,18,57,48,49,19,34,38,39,55,30,1,51,50,54,53,52,46,2,39,46,3,53,52,62,2,51,50,22,23,7,46,1,35,34,6,21,20,30,2,23,30,3,21,20,6,144,37,63,23,21,22,48,32,33,37,13,22,28,14,18,35,29,18,13,26,38,25,31,49,19,22,18,33,26,32,32,12,21,27,15,18,37,29,18,60,1,142,26,18,27,17,22,34,23,13,20,15,12,5,7,15,22,30,21,16,30,24,14,19,14,27,14,14,31,19,14,18,14,11,6,7,14,21,30,22,42,52,0,0,0,0,1,0,18,1,142,0,210,3,48,0,22,0,60,0,184,0,0,47,184,0,0,69,88,184,0,7,47,27,185,0,7,0,19,62,89,184,0,4,220,184,0,7,16,184,0,9,220,184,0,7,16,184,0,11,208,184,0,4,16,184,0,12,208,184,0,0,16,184,0,17,220,48,49,19,34,38,61,1,35,53,63,1,51,21,51,21,35,21,20,22,51,50,55,23,14,1,153,49,36,50,51,5,32,93,93,24,30,18,22,10,13,32,1,142,56,46,191,30,2,93,93,32,193,31,37,10,30,5,7,0,0,0,1,0,57,1,142,1,49,2,211,0,22,0,62,0,184,0,0,47,184,0,0,69,88,184,0,4,47,27,185,0,4,0,19,62,89,184,0,0,16,184,0,11,220,184,0,4,16,184,0,15,208,184,0,0,16,184,0,17,208,184,0,17,47,186,0,19,0,0,0,4,17,18,57,48,49,19,34,38,61,1,51,21,20,30,2,51,50,54,55,53,51,17,35,39,35,14,1,158,57,44,38,6,16,27,22,23,50,29,37,29,5,4,22,55,1,142,67,54,204,197,21,35,25,14,27,30,235,254,195,47,23,32,0,0,0,0,1,0,8,1,150,1,37,2,211,0,9,0,38,0,184,0,9,47,184,0,0,69,88,184,0,0,47,27,185,0,0,0,19,62,89,186,0,3,0,0,0,9,17,18,57,184,0,6,208,48,49,19,51,31,1,51,63,1,51,3,35,8,39,68,33,4,35,68,38,120,46,2,211,190,93,93,190,254,195,0,1,0,16,1,150,1,194,2,211,0,21,0,70,0,184,0,21,47,184,0,0,69,88,184,0,0,47,27,185,0,0,0,19,62,89,186,0,3,0,0,0,21,17,18,57,184,0,6,208,184,0,12,208,184,0,21,16,184,0,15,208,186,0,9,0,12,0,15,17,18,57,186,0,18,0,0,0,15,17,18,57,48,49,19,51,31,1,51,63,1,51,31,1,51,63,1,51,3,35,47,1,35,15,1,35,16,41,52,23,4,23,54,40,56,23,4,25,51,38,92,48,51,25,2,23,53,47,2,211,197,87,87,197,197,87,87,197,254,195,186,91,91,186,0,1,0,8,1,150,1,17,2,211,0,17,0,80,0,184,0,17,47,184,0,0,69,88,184,0,1,47,27,185,0,1,0,19,62,89,184,0,17,16,184,0,11,208,184,0,1,16,184,0,7,208,186,0,4,0,11,0,7,17,18,57,186,0,14,0,1,0,17,17,18,57,186,0,0,0,4,0,14,17,18,57,186,0,9,0,13,0,4,17,18,57,48,49,19,39,51,31,1,51,63,1,51,7,23,35,47,1,35,15,1,35,119,101,43,49,33,4,31,46,42,100,107,43,51,37,4,38,51,41,2,60,151,74,52,52,74,154,163,80,57,57,80,0,0,1,0,8,1,10,1,35,2,211,0,26,0,60,0,184,0,0,47,184,0,0,69,88,184,0,10,47,27,185,0,10,0,19,62,89,184,0,0,16,184,0,5,220,186,0,9,0,10,0,0,17,18,57,186,0,15,0,10,0,0,17,18,57,184,0,10,16,184,0,20,208,48,49,19,34,39,55,22,51,50,54,63,1,3,51,23,30,1,23,51,62,1,63,1,51,3,14,3,54,20,16,9,13,13,28,40,11,8,132,39,74,8,18,9,4,7,16,8,62,38,122,8,20,28,36,1,10,6,34,6,44,35,24,1,64,188,20,48,25,24,46,23,188,254,165,22,40,30,18,0,0,0,1,0,19,1,150,1,3,2,211,0,9,0,39,0,184,0,3,47,184,0,8,47,184,0,6,220,184,0,0,208,184,0,0,47,184,0,3,16,184,0,1,220,184,0,5,208,184,0,5,47,48,49,27,1,35,53,51,21,3,51,21,35,19,185,164,213,185,191,240,1,171,1,8,32,22,254,249,32,0,0,1,0,18,1,150,1,18,3,119,0,23,0,17,0,184,0,23,47,187,0,8,0,1,0,15,0,4,43,48,49,19,46,3,53,52,54,51,50,22,23,7,46,1,35,34,6,21,20,22,23,21,35,135,26,42,32,17,78,58,45,57,18,21,16,46,35,48,52,56,60,37,2,90,16,33,38,45,29,61,63,36,21,25,20,30,49,42,46,64,32,216,0,2,0,54,0,0,0,165,1,192,0,3,0,7,0,36,0,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,186,0,5,0,6,0,3,43,184,0,2,16,184,0,0,220,48,49,55,51,23,35,17,51,7,35,105,9,51,111,111,51,9,107,107,1,192,106,0,1,0,54,1,3,0,165,1,109,0,3,0,11,0,186,0,1,0,2,0,3,43,48,49,19,51,7,35,54,111,51,9,1,109,106,0,1,255,170,0,232,0,148,1,122,0,17,0,13,0,187,0,11,0,1,0,0,0,4,43,48,49,55,34,38,39,7,53,55,30,3,51,50,54,55,23,14,1,90,30,43,10,93,121,4,12,14,18,10,12,19,7,17,10,28,232,44,51,34,37,48,35,44,24,8,10,6,28,8,15,0,0,2,0,8,0,254,1,33,2,211,0,12,0,37,0,80,0,184,0,19,47,184,0,0,69,88,184,0,26,47,27,185,0,26,0,19,62,89,186,0,0,0,26,0,19,17,18,57,184,0,19,16,184,0,6,220,186,0,31,0,19,0,26,17,18,57,186,0,13,0,0,0,31,17,18,57,186,0,25,0,31,0,0,17,18,57,184,0,26,16,184,0,36,208,48,49,19,14,1,21,20,22,51,50,54,53,52,38,39,55,30,1,21,20,6,35,34,38,53,52,54,55,3,51,23,30,1,23,51,62,1,63,1,51,148,12,14,13,14,15,13,14,12,23,17,21,32,31,30,32,21,17,117,39,69,8,16,8,3,8,16,8,69,37,1,153,24,48,17,16,22,22,16,19,46,24,22,37,49,23,30,38,38,30,23,49,38,1,35,185,22,39,21,21,39,22,185,0,0,0,0,3,0,31,1,140,1,45,3,140,0,3,0,32,0,41,0,57,0,184,0,14,47,184,0,4,47,186,0,3,0,1,0,3,43,186,0,22,0,14,0,4,17,18,57,184,0,22,47,184,0,4,16,184,0,26,220,184,0,14,16,184,0,38,220,184,0,22,16,184,0,41,220,48,49,19,55,23,7,3,34,46,2,53,52,62,2,51,50,30,2,21,28,1,7,35,30,1,51,50,54,55,23,14,1,55,52,46,2,35,34,6,7,89,29,99,24,11,32,55,40,24,23,39,52,30,38,49,28,11,2,230,1,62,53,26,45,17,16,20,52,49,9,22,35,25,44,56,6,3,116,24,113,21,254,134,22,42,62,41,38,62,43,23,30,43,50,19,8,11,12,57,71,17,12,27,13,21,190,19,40,32,20,60,51,0,0,0,0,3,0,31,1,142,1,45,3,140,0,3,0,32,0,41,0,57,0,184,0,14,47,184,0,4,47,186,0,1,0,3,0,3,43,186,0,22,0,14,0,4,17,18,57,184,0,22,47,184,0,4,16,184,0,26,220,184,0,14,16,184,0,38,220,184,0,22,16,184,0,41,220,48,49,19,55,23,7,19,34,46,2,53,52,62,2,51,50,30,2,21,28,1,7,35,30,1,51,50,54,55,23,14,1,55,52,46,2,35,34,6,7,135,99,29,104,23,32,55,40,24,23,39,52,30,38,49,28,11,2,230,1,62,53,26,45,17,16,20,52,49,9,22,35,25,44,56,6,3,27,113,24,110,254,136,22,42,62,41,38,62,43,23,30,43,50,19,8,11,12,57,71,17,12,27,13,21,190,19,40,32,20,60,51,0,0,0,0,2,0,27,1,142,1,41,2,219,0,24,0,31,0,49,0,184,0,19,47,184,0,0,47,186,0,8,0,19,0,0,17,18,57,184,0,8,47,184,0,19,16,184,0,12,220,184,0,0,16,184,0,25,220,184,0,8,16,184,0,28,220,48,49,19,34,46,2,53,52,54,55,51,54,38,35,34,6,7,39,62,1,51,50,22,21,20,6,39,50,54,55,35,20,22,157,39,50,29,12,1,2,229,1,53,54,27,41,18,16,20,48,34,67,77,79,61,44,55,3,197,44,1,142,30,44,52,21,8,12,12,53,69,17,12,27,13,21,85,81,78,89,32,58,59,48,69,0,2,0,37,1,142,1,53,2,219,0,20,0,35,0,80,0,184,0,0,47,184,0,0,69,88,184,0,8,47,27,185,0,8,0,19,62,89,186,0,12,0,8,0,0,17,18,57,184,0,14,208,184,0,14,47,184,0,0,16,184,0,15,208,184,0,15,47,186,0,17,0,0,0,8,17,18,57,184,0,0,16,184,0,21,220,184,0,8,16,184,0,28,220,48,49,19,34,38,53,52,62,2,51,50,22,23,51,55,51,17,35,39,35,14,1,39,50,54,55,53,46,1,35,34,14,2,21,20,22,174,64,73,23,39,51,28,27,46,20,4,5,29,31,5,4,20,45,24,23,43,26,24,47,22,21,37,29,16,50,1,142,89,82,37,60,42,23,20,18,30,254,195,37,18,27,34,25,23,179,21,19,19,35,47,27,65,74,0,2,0,37,1,0,1,53,2,219,0,31,0,46,0,80,0,184,0,0,47,184,0,0,69,88,184,0,23,47,27,185,0,23,0,19,62,89,186,0,32,0,15,0,3,43,184,0,0,16,184,0,7,220,186,0,12,0,15,0,23,17,18,57,186,0,25,0,23,0,15,17,18,57,184,0,23,16,184,0,28,208,184,0,28,47,184,0,23,16,184,0,39,220,48,49,19,34,38,39,55,30,1,51,50,54,61,1,55,14,1,35,34,38,53,52,62,2,51,50,23,51,55,51,17,20,6,39,50,54,55,53,46,1,35,34,14,2,21,20,22,172,31,57,25,16,23,49,26,48,51,2,24,46,29,65,73,23,39,52,28,50,43,3,5,29,72,57,23,44,25,24,47,21,21,38,29,16,50,1,0,19,17,29,16,15,54,45,18,50,20,28,87,73,37,60,42,23,38,30,254,174,59,70,188,24,23,168,21,18,19,34,47,27,57,70,0,1,0,58,1,150,0,95,3,110,0,3,0,11,0,184,0,1,47,184,0,2,47,48,49,19,51,17,35,58,37,37,3,110,254,40,0,2,0,44,1,142,0,115,2,197,0,11,0,23,0,19,0,186,0,6,0,0,0,3,43,186,0,18,0,12,0,3,43,48,49,19,34,38,53,52,54,51,50,22,21,20,6,39,34,38,53,52,54,51,50,22,21,20,6,79,15,20,20,15,16,20,20,16,15,20,20,15,16,20,20,1,142,20,18,17,20,20,17,18,20,236,20,18,17,20,20,17,18,20,0,0,0,1,0,40,2,73,0,190,2,104,0,3,0,11,0,186,0,1,0,2,0,3,43,48,49,19,51,21,35,40,150,150,2,104,31,0,0,1,0,40,2,76,1,52,2,104,0,3,0,13,0,187,0,1,0,1,0,2,0,4,43,48,49,19,33,21,33,40,1,12,254,244,2,104,28,0,0,1,0,40,2,76,2,10,2,104,0,3,0,13,0,187,0,1,0,1,0,2,0,4,43,48,49,19,33,21,33,40,1,226,254,30,2,104,28,0,0,2,0,42,1,191,1,14,2,172,0,19,0,31,0,23,0,187,0,20,0,1,0,0,0,4,43,187,0,10,0,1,0,26,0,4,43,48,49,19,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,39,50,54,53,52,38,35,34,6,21,20,22,156,22,41,32,19,19,32,41,22,22,41,32,19,19,32,41,22,35,45,45,35,35,45,45,1,191,16,30,44,28,28,44,31,16,16,31,44,28,28,44,30,16,32,49,37,38,50,50,38,37,49,0,0,0,2,0,31,0,114,1,192,2,34,0,34,0,54,0,74,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,11,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,11,62,89,184,0,0,69,88,184,0,18,47,27,185,0,18,0,11,62,89,187,0,35,0,1,0,31,0,4,43,184,0,13,16,185,0,45,0,1,244,48,49,63,1,46,1,53,52,54,55,39,55,23,62,1,51,50,22,23,55,23,7,30,1,21,20,6,7,23,7,39,14,1,35,34,39,7,55,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,31,65,18,20,20,18,65,26,66,23,61,32,32,61,23,67,26,66,18,20,20,17,65,26,67,23,61,32,66,50,66,182,28,50,37,22,22,37,50,28,28,50,37,22,22,37,50,142,67,24,60,35,37,61,24,68,28,69,21,23,23,21,69,28,68,24,61,37,35,60,24,67,28,68,22,23,45,68,60,23,40,57,34,34,58,41,23,23,41,58,34,34,57,40,23,0,1,0,59,255,146,1,163,2,237,0,49,0,135,0,184,0,0,69,88,184,0,43,47,27,185,0,43,0,15,62,89,184,0,0,69,88,184,0,21,47,27,185,0,21,0,5,62,89,184,0,43,16,185,0,5,0,1,244,186,0,8,0,21,0,43,17,18,57,186,0,15,0,43,0,21,17,18,57,184,0,21,16,184,0,18,208,184,0,21,16,185,0,19,0,2,244,184,0,21,16,185,0,28,0,1,244,186,0,31,0,43,0,21,17,18,57,186,0,38,0,21,0,43,17,18,57,184,0,43,16,184,0,45,208,184,0,45,47,184,0,43,16,184,0,46,208,48,49,1,46,3,35,34,6,21,20,30,4,21,20,6,7,21,35,53,46,1,39,55,30,1,51,50,54,53,52,46,4,53,52,62,2,55,53,51,21,30,1,23,1,120,14,27,30,36,23,52,64,43,64,75,64,43,87,67,39,52,86,29,24,29,80,52,63,67,43,64,75,64,43,21,38,52,30,39,49,62,26,2,40,14,22,16,8,65,50,44,53,39,33,47,71,57,72,86,6,99,99,4,45,28,31,26,44,68,55,49,61,43,34,44,63,51,31,54,41,26,3,99,99,3,40,27,0,0,0,1,0,54,0,0,1,172,2,139,0,44,0,91,0,184,0,0,69,88,184,0,19,47,27,185,0,19,0,15,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,187,0,9,0,1,0,13,0,4,43,184,0,2,16,185,0,0,0,1,244,184,0,3,208,184,0,3,47,184,0,19,16,185,0,26,0,1,244,184,0,13,16,184,0,35,208,184,0,9,16,184,0,36,208,48,49,37,21,33,53,62,1,53,52,38,39,35,53,55,51,46,1,53,52,54,51,50,22,23,7,46,1,35,34,14,2,21,20,22,23,51,21,35,30,1,21,20,6,7,21,1,172,254,141,56,50,5,4,100,66,24,11,21,91,79,52,69,23,29,21,54,40,31,47,31,16,21,11,165,157,4,4,38,34,40,40,27,32,104,58,19,36,17,33,3,38,75,39,79,91,42,29,27,25,34,20,36,48,27,40,73,39,36,17,35,20,62,82,33,4,0,0,1,0,30,0,0,1,193,2,127,0,29,0,107,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,15,62,89,184,0,0,69,88,184,0,29,47,27,185,0,29,0,5,62,89,186,0,6,0,5,0,3,43,184,0,5,16,184,0,2,208,184,0,1,208,186,0,13,0,8,0,29,17,18,57,184,0,8,16,184,0,18,208,184,0,6,16,184,0,21,208,184,0,5,16,184,0,22,208,184,0,2,16,184,0,25,208,184,0,1,16,184,0,26,208,48,49,55,35,53,51,53,35,53,51,3,51,23,30,1,23,51,62,1,63,1,51,3,51,21,35,21,51,21,35,21,35,216,166,166,166,152,172,48,94,16,32,18,4,19,31,17,94,46,174,154,168,168,168,45,165,34,71,33,1,80,193,33,67,37,37,67,33,193,254,176,33,71,34,165,0,0,0,1,0,30,0,0,1,193,2,127,0,21,0,79,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,15,62,89,184,0,0,69,88,184,0,21,47,27,185,0,21,0,5,62,89,186,0,2,0,1,0,3,43,186,0,9,0,4,0,21,17,18,57,184,0,4,16,184,0,14,208,184,0,2,16,184,0,17,208,184,0,1,16,184,0,18,208,48,49,19,35,53,51,3,51,23,30,1,23,51,62,1,63,1,51,3,51,21,35,17,35,216,166,154,174,48,94,16,32,18,4,19,31,17,94,46,176,156,168,45,1,10,34,1,83,193,33,67,37,37,67,33,193,254,173,34,254,246,0,1,0,24,255,244,1,218,2,139,0,53,0,113,0,184,0,0,69,88,184,0,25,47,27,185,0,25,0,15,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,5,62,89,186,0,17,0,11,0,3,43,184,0,11,16,184,0,8,208,184,0,17,16,184,0,20,208,184,0,25,16,185,0,32,0,1,244,184,0,20,16,184,0,36,208,184,0,17,16,184,0,37,208,184,0,11,16,184,0,45,208,184,0,8,16,184,0,46,208,184,0,3,16,185,0,50,0,1,244,48,49,37,14,1,35,34,46,2,39,35,53,55,38,52,53,60,1,55,35,53,55,62,3,51,50,22,23,7,46,1,35,34,6,7,33,21,33,6,20,21,28,1,23,51,21,35,30,1,51,50,54,55,1,218,32,78,56,44,74,56,38,7,65,62,1,1,62,65,7,38,60,81,48,45,74,22,29,22,55,35,80,96,11,1,22,254,231,1,1,241,238,13,90,72,42,63,29,82,44,50,36,67,95,60,29,4,11,20,11,9,18,8,29,4,61,97,68,36,46,32,27,30,37,119,105,33,8,17,9,11,21,11,33,102,118,40,41,0,0,2,0,62,255,228,1,179,2,140,0,8,0,39,0,55,0,187,0,25,0,1,0,0,0,4,43,187,0,8,0,1,0,15,0,4,43,184,0,15,16,184,0,12,208,184,0,25,16,184,0,28,208,184,0,0,16,184,0,35,208,184,0,8,16,184,0,36,208,48,49,19,14,3,21,20,22,23,55,14,1,7,21,35,53,46,3,53,52,62,2,55,53,51,21,30,1,23,7,46,1,39,17,62,1,55,255,32,55,39,22,79,69,180,29,73,44,34,42,71,51,29,30,53,70,40,34,48,64,23,24,23,54,34,37,62,24,1,246,5,32,49,66,39,78,102,10,23,27,35,2,108,109,4,34,59,82,51,52,81,59,34,4,111,109,2,35,23,28,20,27,2,254,127,2,30,22,0,0,0,0,1,0,11,255,158,1,187,2,159,0,40,0,49,0,187,0,3,0,1,0,37,0,4,43,187,0,23,0,1,0,18,0,4,43,187,0,33,0,1,0,29,0,4,43,184,0,33,16,184,0,10,208,184,0,29,16,184,0,11,208,48,49,1,46,1,35,34,14,2,15,1,51,21,35,3,14,3,35,34,39,55,22,51,50,62,2,55,19,35,53,55,51,55,62,1,51,50,22,23,1,175,12,29,21,26,36,23,14,3,7,138,142,29,5,21,36,53,36,38,27,13,24,28,27,37,26,14,4,28,95,67,32,7,10,68,68,25,35,14,2,105,5,10,27,45,58,30,67,37,254,246,46,74,52,28,16,34,11,25,44,60,36,1,6,33,4,63,94,109,12,6,0,3,0,65,255,146,1,200,2,237,0,7,0,14,0,53,0,169,0,184,0,0,69,88,184,0,32,47,27,185,0,32,0,15,62,89,184,0,0,69,88,184,0,35,47,27,185,0,35,0,15,62,89,184,0,0,69,88,184,0,38,47,27,185,0,38,0,15,62,89,184,0,0,69,88,184,0,40,47,27,185,0,40,0,15,62,89,184,0,0,69,88,184,0,18,47,27,185,0,18,0,5,62,89,184,0,0,69,88,184,0,21,47,27,185,0,21,0,5,62,89,185,0,2,0,1,244,184,0,38,16,185,0,5,0,1,244,186,0,8,0,18,0,38,17,18,57,186,0,14,0,18,0,38,17,18,57,186,0,23,0,21,0,2,17,18,57,186,0,49,0,18,0,38,17,18,57,184,0,2,16,184,0,50,208,48,49,55,22,23,19,38,35,34,15,1,14,1,21,20,22,23,37,14,1,15,1,35,55,38,39,7,35,55,46,1,53,52,54,63,1,51,7,54,50,51,50,23,55,51,7,30,1,23,7,38,39,3,62,1,55,207,29,36,69,17,19,16,15,33,63,66,35,32,1,21,30,76,52,12,30,12,38,28,14,31,16,51,57,96,85,13,31,12,7,13,7,21,20,12,30,14,23,36,14,29,22,26,68,38,59,28,53,22,4,2,68,6,3,8,25,146,109,81,124,38,3,42,50,2,98,99,5,15,119,137,40,151,103,132,168,23,105,99,1,6,104,115,11,32,19,27,32,17,253,200,2,41,38,0,0,1,0,54,0,0,1,172,2,139,0,57,0,107,0,184,0,0,69,88,184,0,26,47,27,185,0,26,0,15,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,185,0,0,0,1,244,186,0,43,0,26,0,2,17,18,57,184,0,43,47,184,0,48,208,184,0,49,208,184,0,10,208,184,0,48,16,184,0,11,208,184,0,43,16,184,0,17,208,184,0,43,16,184,0,42,208,184,0,18,208,184,0,26,16,185,0,33,0,1,244,48,49,37,21,33,53,62,1,53,60,1,39,35,53,55,51,46,1,39,35,53,55,51,46,1,53,52,54,51,50,22,23,7,46,1,35,34,14,2,21,20,22,23,51,21,35,30,1,23,51,21,35,22,20,21,20,6,7,21,1,172,254,141,56,50,1,108,65,38,4,8,5,86,63,12,7,10,91,79,52,69,23,29,21,54,40,31,47,31,16,10,8,179,170,5,8,3,154,150,1,38,34,40,40,27,32,104,58,6,13,6,29,5,17,32,16,30,4,25,51,26,79,91,42,29,27,25,34,20,36,48,27,26,50,26,34,16,32,17,34,6,12,7,62,82,33,4,0,0,0,5,0,16,0,0,1,203,2,127,0,4,0,8,0,12,0,17,0,45,0,225,0,184,0,0,69,88,184,0,37,47,27,185,0,37,0,15,62,89,184,0,0,69,88,184,0,41,47,27,185,0,41,0,15,62,89,184,0,0,69,88,184,0,23,47,27,185,0,23,0,5,62,89,184,0,0,69,88,184,0,27,47,27,185,0,27,0,5,62,89,187,0,4,0,1,0,5,0,4,43,187,0,40,0,1,0,1,0,4,43,184,0,23,16,185,0,7,0,2,244,184,0,4,16,184,0,9,208,184,0,1,16,184,0,10,208,184,0,40,16,184,0,13,208,186,0,14,0,23,0,37,17,18,57,184,0,37,16,185,0,16,0,2,244,184,0,1,16,184,0,18,208,184,0,4,16,184,0,19,208,184,0,5,16,184,0,21,208,184,0,5,16,184,0,25,208,184,0,5,16,184,0,29,208,184,0,4,16,184,0,31,208,184,0,31,47,184,0,1,16,184,0,33,208,184,0,40]);fileData0.push.apply(fileData0,[16,184,0,35,208,184,0,35,47,184,0,40,16,184,0,43,208,48,49,1,53,35,23,51,23,35,23,51,47,1,35,21,39,51,47,1,35,5,21,51,21,35,21,35,39,35,21,35,53,35,53,55,53,35,53,55,17,51,19,51,17,51,17,51,21,1,89,93,24,69,1,58,61,4,119,24,76,1,66,7,62,4,1,4,73,73,54,86,112,41,77,77,77,77,54,94,104,41,73,1,25,63,68,33,189,222,68,68,99,21,190,242,68,33,243,243,243,243,29,4,68,27,4,1,8,254,248,1,8,254,248,31,0,3,0,14,0,0,1,208,2,127,0,5,0,11,0,31,0,109,0,184,0,0,69,88,184,0,24,47,27,185,0,24,0,15,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,5,62,89,187,0,17,0,1,0,5,0,4,43,184,0,24,16,185,0,6,0,1,244,186,0,4,0,5,0,6,17,18,57,184,0,4,47,185,0,7,0,1,244,184,0,4,16,184,0,13,208,184,0,4,16,184,0,20,208,184,0,7,16,184,0,23,208,184,0,7,16,184,0,30,208,48,49,19,50,54,55,35,21,17,21,51,46,1,35,5,35,14,1,43,1,17,35,17,35,53,55,53,51,50,30,2,23,51,174,82,92,5,216,216,5,91,83,1,34,66,6,117,90,48,43,80,80,91,45,76,56,33,3,66,1,43,68,71,139,1,49,130,72,58,166,89,86,254,249,1,182,31,5,165,18,40,62,45,0,4,255,243,0,0,1,232,2,127,0,5,0,11,0,17,0,41,0,153,0,184,0,0,69,88,184,0,30,47,27,185,0,30,0,15,62,89,184,0,0,69,88,184,0,25,47,27,185,0,25,0,5,62,89,186,0,29,0,26,0,3,43,184,0,26,16,184,0,12,208,184,0,22,208,184,0,0,208,184,0,25,16,184,0,21,208,186,0,3,0,21,0,30,17,18,57,184,0,29,16,184,0,33,208,184,0,6,208,186,0,9,0,25,0,30,17,18,57,186,0,15,0,30,0,25,17,18,57,184,0,0,16,184,0,18,208,186,0,35,0,30,0,21,17,18,57,184,0,6,16,184,0,37,208,184,0,30,16,184,0,38,208,184,0,37,16,184,0,41,208,48,49,1,35,31,1,51,55,47,2,35,15,2,35,31,1,51,55,37,35,3,35,3,35,3,35,3,35,53,55,3,51,19,51,19,51,19,51,19,51,3,51,1,129,74,23,15,4,15,97,12,18,4,19,11,36,72,17,13,4,15,1,84,67,43,54,48,74,46,51,45,73,69,43,46,36,81,40,50,40,83,34,43,41,63,1,54,143,128,128,176,74,144,145,73,33,143,128,128,143,254,202,1,54,254,202,1,54,29,4,1,40,254,216,1,0,255,0,1,40,254,216,0,0,0,0,3,0,69,0,0,1,209,2,161,0,3,0,18,0,47,0,76,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,5,62,89,186,0,41,0,44,0,3,43,184,0,3,16,184,0,1,220,184,0,41,16,184,0,36,208,184,0,7,220,184,0,1,16,184,0,28,208,184,0,15,220,184,0,41,16,184,0,21,208,184,0,44,16,184,0,47,208,48,49,55,33,21,33,1,46,1,35,34,14,2,21,20,22,51,50,54,55,19,21,7,17,35,39,35,14,1,35,34,38,53,52,62,2,51,50,22,23,39,53,35,53,51,53,51,21,80,1,79,254,177,1,7,29,48,32,26,44,32,19,60,57,29,55,29,122,81,33,5,3,23,58,38,71,84,27,45,59,32,38,51,26,4,146,146,41,34,34,1,130,27,24,22,38,51,29,71,82,29,33,1,133,29,5,254,68,47,24,33,96,92,41,66,47,25,28,23,93,45,34,78,78,0,4,0,14,0,0,1,208,2,127,0,7,0,13,0,19,0,49,0,139,0,184,0,0,69,88,184,0,44,47,27,185,0,44,0,15,62,89,184,0,0,69,88,184,0,35,47,27,185,0,35,0,5,62,89,184,0,44,16,185,0,14,0,1,244,184,0,43,208,184,0,40,208,184,0,6,208,184,0,40,16,184,0,39,208,184,0,7,208,184,0,39,16,184,0,36,208,184,0,12,208,184,0,36,16,184,0,13,220,184,0,43,16,184,0,15,208,184,0,6,16,184,0,20,208,184,0,7,16,184,0,27,208,184,0,12,16,184,0,28,208,184,0,13,16,184,0,33,220,184,0,15,16,184,0,49,208,48,49,1,62,1,53,52,39,35,21,23,50,54,55,35,21,17,21,51,46,1,35,5,35,22,21,20,6,7,51,21,35,14,1,43,1,17,35,17,35,53,55,53,35,53,55,53,51,50,22,23,51,1,96,1,1,3,214,37,69,86,16,208,206,18,85,66,1,34,68,3,1,1,67,73,18,110,78,48,43,80,80,80,80,91,76,108,20,75,1,171,7,15,8,20,17,67,128,47,49,96,1,49,79,43,36,110,18,19,8,14,8,32,67,65,254,249,1,139,28,4,67,27,4,114,52,62,0,1,0,52,255,146,1,184,2,237,0,41,0,109,0,184,0,0,69,88,184,0,15,47,27,185,0,15,0,15,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,5,62,89,186,0,40,0,15,0,7,17,18,57,184,0,40,47,185,0,0,0,1,244,184,0,7,16,184,0,4,208,184,0,7,16,184,0,5,220,184,0,15,16,184,0,17,220,184,0,15,16,184,0,18,208,184,0,15,16,185,0,25,0,1,244,184,0,7,16,185,0,35,0,1,244,48,49,1,21,14,1,7,21,35,53,46,3,53,52,54,55,53,51,21,30,1,23,7,46,1,35,34,14,2,21,20,30,2,51,50,54,55,53,35,53,1,184,28,72,42,38,47,77,54,30,111,97,38,44,70,22,29,23,56,35,46,71,49,25,24,46,66,43,38,64,16,120,1,57,253,32,35,4,99,99,4,50,86,119,73,142,173,13,100,98,2,46,30,27,30,37,41,76,107,67,67,109,77,42,31,20,196,39,0,0,0,0,1,0,24,255,244,1,200,2,139,0,61,0,109,0,184,0,0,69,88,184,0,51,47,27,185,0,51,0,15,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,5,62,89,186,0,31,0,34,0,3,43,184,0,31,16,184,0,4,208,184,0,31,16,184,0,27,208,184,0,5,208,184,0,19,16,185,0,12,0,1,244,184,0,34,16,184,0,38,208,184,0,51,16,185,0,44,0,1,244,184,0,38,16,184,0,60,208,184,0,34,16,184,0,61,208,48,49,1,14,1,7,51,21,33,14,1,21,20,22,51,50,54,55,23,14,1,35,34,46,2,53,52,54,55,35,53,55,51,62,1,55,35,53,55,51,62,1,53,52,38,35,34,6,7,39,62,1,51,50,30,2,21,20,6,7,51,21,1,44,23,48,23,250,254,231,20,23,66,62,47,70,26,23,29,85,52,36,64,46,27,17,15,95,65,55,20,45,23,208,67,181,30,40,56,48,42,53,26,26,26,67,53,33,55,40,23,30,23,121,1,100,20,37,20,33,23,57,35,46,59,45,26,31,30,48,19,38,54,35,34,55,23,29,4,22,37,18,29,4,26,60,41,41,56,32,29,28,29,42,20,37,50,30,40,60,25,33,0,0,2,0,65,255,146,1,200,2,238,0,8,0,39,0,89,0,184,0,0,69,88,184,0,25,47,27,185,0,25,0,15,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,5,62,89,184,0,25,16,185,0,0,0,1,244,184,0,15,16,185,0,8,0,1,244,184,0,15,16,184,0,12,208,184,0,25,16,184,0,28,208,184,0,0,16,184,0,35,208,184,0,8,16,184,0,36,208,48,49,1,14,1,21,20,30,2,23,55,14,1,7,21,35,53,46,3,53,52,62,2,55,53,51,21,30,1,23,7,46,1,39,17,62,1,55,1,18,78,84,22,41,60,39,182,29,69,48,36,48,77,54,30,29,54,78,48,36,44,71,21,29,21,53,33,35,56,26,2,98,13,152,123,63,105,77,46,4,55,39,49,5,99,99,3,50,86,120,73,70,116,84,52,6,101,99,2,45,31,27,29,36,2,253,182,4,40,36,0,0,0,0,1,0,73,0,0,1,187,2,127,0,29,0,99,0,184,0,0,69,88,184,0,28,47,27,185,0,28,0,15,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,184,0,28,16,185,0,26,0,1,244,184,0,1,208,184,0,26,16,184,0,23,220,184,0,4,208,184,0,23,16,184,0,19,220,184,0,7,208,184,0,19,16,184,0,16,220,185,0,13,0,1,244,186,0,10,0,16,0,13,17,18,57,48,49,1,35,30,1,23,51,21,35,14,1,7,19,35,3,35,53,51,50,54,55,33,53,55,51,46,1,43,1,53,33,1,187,148,32,43,7,66,64,2,95,77,201,54,197,82,75,87,96,2,254,252,67,191,11,94,78,75,1,114,2,94,15,55,37,34,82,90,10,254,229,1,25,39,70,75,30,4,55,47,38,0,0,0,0,1,0,28,255,243,1,189,2,127,0,35,0,99,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,15,62,89,184,0,0,69,88,184,0,35,47,27,185,0,35,0,5,62,89,186,0,4,0,3,0,3,43,184,0,3,16,184,0,0,208,184,0,4,16,184,0,7,220,184,0,10,208,184,0,4,16,184,0,13,208,184,0,3,16,184,0,14,208,184,0,0,16,184,0,17,208,184,0,35,16,185,0,18,0,2,244,48,49,19,7,53,55,53,7,53,55,53,51,21,55,21,7,21,55,21,7,17,50,62,2,53,52,38,39,55,30,1,21,20,14,2,39,130,102,102,102,102,46,176,176,176,176,36,81,67,44,1,5,40,4,3,52,87,114,62,1,29,52,36,52,82,52,36,53,199,177,92,36,92,82,92,36,92,254,235,23,46,68,47,11,24,16,13,20,25,16,60,88,57,26,1,0,0,0,1,0,34,0,0,1,185,2,127,0,23,0,99,0,184,0,0,69,88,184,0,21,47,27,185,0,21,0,15,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,5,62,89,186,0,15,0,14,0,3,43,184,0,15,16,184,0,18,220,184,0,1,208,184,0,15,16,184,0,4,208,184,0,14,16,184,0,5,208,184,0,14,16,184,0,11,220,184,0,8,208,184,0,21,16,185,0,20,0,1,244,184,0,23,208,48,49,1,21,55,21,7,21,55,21,7,21,35,53,7,53,55,53,7,53,55,53,35,53,33,21,1,5,140,140,140,140,45,140,140,140,140,182,1,151,2,90,195,73,37,72,82,72,36,72,253,230,72,36,72,82,72,36,73,217,37,37,0,0,0,0,2,0,34,0,0,1,185,2,127,0,8,0,12,0,57,0,184,0,0,69,88,184,0,9,47,27,185,0,9,0,15,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,5,62,89,184,0,9,16,184,0,11,208,184,0,3,208,184,0,5,208,184,0,1,208,48,49,19,35,53,55,33,21,35,17,35,3,33,21,33,216,182,67,1,84,180,45,182,1,151,254,105,1,240,29,4,33,254,16,2,127,33,0,2,0,14,0,0,1,143,2,127,0,8,0,35,0,107,0,184,0,0,69,88,184,0,24,47,27,185,0,24,0,15,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,5,62,89,186,0,9,0,24,0,15,17,18,57,124,184,0,9,47,24,184,0,0,208,184,0,24,16,185,0,7,0,1,244,184,0,9,16,184,0,10,208,184,0,13,208,184,0,16,208,184,0,10,16,184,0,19,208,184,0,9,16,184,0,20,208,184,0,0,16,184,0,23,208,48,49,19,51,50,54,53,52,38,43,1,17,21,51,21,35,21,35,53,35,53,55,53,35,53,55,17,51,50,30,2,21,20,14,2,35,137,37,88,92,93,87,37,207,207,43,80,80,80,80,91,47,79,57,31,32,57,78,47,1,58,73,78,77,62,254,188,67,34,179,179,29,5,67,29,5,1,69,19,42,66,46,48,70,46,22,0,0,1,255,91,255,244,0,241,2,159,0,3,0,24,0,184,0,0,69,88,184,0,2,47,27,185,0,2,0,5,62,89,184,0,0,220,48,49,19,51,1,35,203,38,254,145,39,2,159,253,85,0,255,255,255,91,255,244,0,241,2,159,2,6,6,190,0,0,255,255,255,91,255,244,0,241,2,159,2,6,6,190,0,0,255,255,0,40,255,244,2,253,2,159,0,39,6,68,0,0,1,13,0,39,6,190,1,107,0,0,0,7,6,68,1,187,0,0,0,0,0,7,0,40,255,244,4,98,2,159,0,11,0,23,0,35,0,47,0,59,0,71,0,75,0,126,0,184,0,0,69,88,184,0,24,47,27,185,0,24,0,5,62,89,184,0,0,69,88,184,0,48,47,27,185,0,48,0,5,62,89,184,0,0,69,88,184,0,74,47,27,185,0,74,0,5,62,89,187,0,6,0,1,0,18,0,4,43,187,0,12,0,1,0,0,0,4,43,187,0,30,0,1,0,42,0,4,43,184,0,24,16,185,0,36,0,1,244,184,0,30,16,184,0,54,208,184,0,36,16,184,0,60,208,184,0,42,16,184,0,66,208,184,0,6,16,184,0,72,208,48,49,19,34,38,53,52,54,51,50,22,21,20,6,39,50,54,53,52,38,35,34,6,21,20,22,1,34,38,53,52,54,51,50,22,21,20,6,39,50,54,53,52,38,35,34,6,21,20,22,5,34,38,53,52,54,51,50,22,21,20,6,39,50,54,53,52,38,35,34,6,21,20,22,1,51,1,35,181,66,75,75,66,66,75,75,66,47,55,55,47,47,55,55,1,231,66,75,75,66,66,75,75,66,47,55,55,47,47,55,55,1,151,66,75,75,66,66,75,75,66,47,55,55,47,47,55,55,254,140,38,254,145,39,1,1,107,101,100,106,106,100,101,107,33,91,84,84,89,89,84,84,91,254,210,107,101,100,106,106,100,101,107,33,91,84,84,89,89,84,84,91,33,107,101,100,106,106,100,101,107,33,91,84,84,89,89,84,84,91,2,138,253,85,255,255,0,74,255,244,2,207,2,159,0,39,6,69,255,236,1,13,0,39,6,190,1,86,0,0,0,7,6,72,1,146,0,0,0,0,255,255,0,74,255,244,2,223,2,159,0,39,6,69,255,236,1,13,0,39,6,190,1,63,0,0,0,7,6,70,1,168,0,0,0,0,255,255,0,40,255,244,2,226,2,159,0,39,6,71,0,0,1,13,0,39,6,190,1,133,0,0,0,7,6,72,1,165,0,0,0,0,255,255,0,74,255,244,2,219,2,159,0,39,6,69,255,236,1,13,0,39,6,190,1,57,0,0,0,7,6,71,1,167,0,0,0,0,255,255,0,47,255,244,2,238,2,159,0,39,6,70,0,0,1,13,0,39,6,190,1,107,0,0,0,7,6,71,1,186,0,0,0,0,255,255,0,74,255,244,2,224,2,159,0,39,6,69,255,236,1,13,0,39,6,190,1,57,0,0,0,7,6,73,1,167,0,0,0,0,255,255,0,47,255,244,2,243,2,159,0,39,6,70,0,0,1,13,0,39,6,190,1,107,0,0,0,7,6,73,1,186,0,0,0,0,255,255,0,40,255,244,2,243,2,159,0,39,6,71,0,0,1,13,0,39,6,190,1,106,0,0,0,7,6,73,1,186,0,0,0,0,255,255,0,46,255,244,3,1,2,159,0,39,6,72,0,0,1,13,0,39,6,190,1,120,0,0,0,7,6,73,1,200,0,0,0,0,255,255,0,74,255,244,2,218,2,159,0,39,6,69,255,236,1,13,0,39,6,190,1,67,0,0,0,7,6,74,1,157,0,0,0,0,255,255,0,40,255,244,2,237,2,159,0,39,6,73,0,0,1,13,0,39,6,190,1,106,0,0,0,7,6,74,1,176,0,0,0,0,255,255,0,74,255,244,2,222,2,159,0,39,6,69,255,236,1,13,0,39,6,190,1,57,0,0,0,7,6,75,1,167,0,0,0,0,255,255,0,74,255,244,2,221,2,159,0,39,6,69,255,236,1,13,0,39,6,190,1,67,0,0,0,7,6,76,1,167,0,0,0,0,255,255,0,40,255,244,2,240,2,159,0,39,6,71,0,0,1,13,0,39,6,190,1,106,0,0,0,7,6,76,1,186,0,0,0,0,255,255,0,40,255,244,2,240,2,159,0,39,6,73,0,0,1,13,0,39,6,190,1,106,0,0,0,7,6,76,1,186,0,0,0,0,255,255,0,31,255,244,2,220,2,159,0,39,6,75,255,237,1,13,0,39,6,190,1,56,0,0,0,7,6,76,1,166,0,0,0,0,255,255,0,74,255,244,2,228,2,159,0,39,6,69,255,236,1,13,0,39,6,190,1,67,0,0,0,7,6,77,1,176,0,0,0,0,0,5,0,73,255,244,3,246,2,159,0,8,0,17,0,29,0,41,0,45,0,94,0,184,0,0,69,88,184,0,5,47,27,185,0,5,0,17,62,89,184,0,0,69,88,184,0,18,47,27,185,0,18,0,5,62,89,184,0,0,69,88,184,0,44,47,27,185,0,44,0,5,62,89,187,0,24,0,1,0,36,0,4,43,187,0,14,0,2,0,9,0,4,43,184,0,5,16,185,0,0,0,2,244,184,0,18,16,185,0,30,0,1,244,48,49,19,35,53,62,1,55,51,17,35,37,35,53,62,1,55,51,17,35,5,34,38,53,52,54,51,50,22,21,20,6,39,50,54,53,52,38,35,34,6,21,20,22,1,51,1,35,155,82,29,41,17,33,38,1,171,82,29,41,17,33,38,1,35,66,75,75,66,66,75,75,66,47,55,55,47,47,55,55,254,212,38,254,145,39,2,81,27,6,19,14,254,122,55,27,6,19,14,254,122,12,107,101,100,106,106,100,101,107,33,91,84,84,89,89,84,84,91,2,138,253,85,0,0,0,255,255,0,40,255,244,2,238,2,159,0,39,6,68,0,0,1,13,0,39,6,190,1,106,0,0,0,7,6,71,1,186,0,0,0,0,0,1,0,34,0,110,1,189,2,38,0,11,0,29,0,187,0,3,0,1,0,0,0,4,43,184,0,3,16,184,0,6,208,184,0,0,16,184,0,8,208,48,49,19,35,53,51,53,51,21,51,21,35,21,35,219,185,185,41,185,185,41,1,55,38,201,201,38,201,0,0,0,0,1,0,34,1,55,1,189,1,93,0,3,0,13,0,187,0,1,0,1,0,2,0,4,43,48,49,19,33,21,33,34,1,155,254,101,1,93,38,0,0,1,0,52,0,135,1,171,2,13,0,11,0,37,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,11,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,11,62,89,48,49,63,1,39,55,23,55,23,7,23,7,39,7,52,161,161,26,161,162,26,161,161,26,162,161,163,167,167,28,169,169,28,167,167,28,168,168,0,0,3,0,34,0,109,1,189,2,37,0,3,0,15,0,27,0,33,0,187,0,10,0,2,0,4,0,4,43,187,0,22,0,2,0,16,0,4,43,187,0,1,0,1,0,2,0,4,43,48,49,19,33,21,33,23,34,38,53,52,54,51,50,22,21,20,6,3,34,38,53,52,54,51,50,22,21,20,6,34,1,155,254,101,205,16,22,22,16,17,21,21,17,16,22,22,16,17,21,21,1,93,38,202,22,19,17,22,22,17,19,22,1,104,22,19,17,22,22,17,19,22,0,0,255,255,0,195,1,22,1,24,1,113,0,7,4,119,0,128,1,34,0,0,255,255,0,34,0,210,1,189,1,195,2,38,6,215,0,102,0,6,6,215,0,155,0,0,0,1,0,34,0,146,1,189,2,6,0,9,0,20,0,184,0,0,69,88,184,0,2,47,27,185,0,2,0,11,62,89,48,49,19,53,37,21,15,1,21,31,1,21,34,1,155,232,133,133,232,1,54,44,164,43,90,51,4,51,90,43,0,0,0,1,0,34,0,146,1,189,2,6,0,9,0,20,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,11,62,89,48,49,63,2,53,47,1,53,5,21,5,34,232,133,133,232,1,155,254,101,189,90,51,4,51,90,43,164,44,164,0,0,0,2,0,34,0,0,1,189,2,6,0,9,0,13,0,26,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,185,0,10,0,1,244,48,49,19,53,37,21,15,1,21,31,1,21,5,33,21,33,34,1,155,232,133,133,232,254,101,1,155,254,101,1,56,46,160,43,88,50,4,50,88,43,115,37,0,0,0,2,0,34,0,0,1,189,2,6,0,9,0,13,0,26,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,5,62,89,185,0,10,0,1,244,48,49,63,2,53,47,1,53,5,21,5,21,33,21,33,34,232,133,133,232,1,155,254,101,1,155,254,101,195,88,50,4,50,88,43,160,46,160,115,37,0,2,0,34,0,0,1,189,2,38,0,11,0,15,0,56,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,5,62,89,187,0,3,0,1,0,0,0,4,43,184,0,3,16,184,0,6,208,184,0,0,16,184,0,8,208,184,0,14,16,185,0,12,0,1,244,48,49,19,35,53,51,53,51,21,51,21,35,21,35,7,33,21,33,219,185,185,41,185,185,41,185,1,155,254,101,1,54,37,203,203,37,201,72,37,0,0,0,0,1,0,66,1,34,1,157,2,158,0,9,0,26,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,17,62,89,185,0,5,0,1,244,48,49,19,51,19,35,47,1,35,15,1,35,216,46,151,43,77,52,4,51,77,43,2,158,254,132,203,133,133,203,0,1,0,34,0,80,1,189,2,68,0,19,0,55,0,187,0,3,0,1,0,17,0,4,43,187,0,7,0,1,0,13,0,4,43,184,0,17,16,184,0,0,208,184,0,13,16,184,0,4,208,184,0,7,16,184,0,10,208,184,0,3,16,184,0,14,208,48,49,55,35,53,51,55,35,53,33,55,51,7,51,21,35,7,51,21,33,7,35,145,111,134,102,236,1,3,79,41,79,111,134,102,236,254,253,79,41,209,38,166,38,129,129,38,166,38,129,0,0,0,0,1,0,40,1,10,1,182,1,138,0,23,0,43,0,186,0,12,0,5,0,3,43,184,0,5,16,184,0,17,208,184,0,17,47,184,0,0,220,184,0,5,16,184,0,8,220,184,0,17,16,184,0,20,220,48,49,1,34,46,2,35,34,6,7,39,62,1,51,50,30,2,51,50,54,55,23,14,1,1,73,29,47,43,40,22,23,38,18,29,22,59,29,29,47,43,40,22,23,38,18,28,21,59,1,10,28,34,28,28,35,18,42,41,28,34,28,28,35,20,41,40,0,0,255,255,0,40,0,165,1,182,1,240,2,38,6,227,0,102,0,6,6,227,0,155,0,0,0,1,0,34,0,110,1,189,1,93,0,5,0,13,0,187,0,3,0,1,0,0,0,4,43,48,49,1,33,53,33,21,35,1,148,254,142,1,155,41,1,55,38,239,0,3,0,41,0,167,2,210,1,238,0,41,0,53,0,69,0,83,0,187,0,54,0,2,0,0,0,4,43,187,0,32,0,1,0,64,0,4,43,187,0,21,0,2,0,48,0,4,43,187,0,42,0,1,0,11,0,4,43,186,0,6,0,32,0,11,17,18,57,186,0,26,0,21,0,0,17,18,57,186,0,45,0,26,0,5,17,18,57,186,0,67,0,5,0,26,17,18,57,48,49,37,34,46,2,39,35,14,3,35,34,46,2,53,52,62,2,51,50,30,2,23,51,62,3,51,50,30,2,21,20,14,2,37,50,54,55,46,1,35,34,6,21,20,22,5,50,62,2,53,52,46,2,35,34,6,7,30,1,2,52,32,54,48,44,22,4,13,34,44,54,33,28,51,39,23,23,40,54,31,31,52,42,34,14,4,17,41,48,57,33,36,59,42,23,23,42,58,254,100,47,77,29,38,72,44,44,61,63,1,166,27,43,30,16,17,31,46,30,49,82,41,49,82,167,19,33,46,27,14,38,34,24,22,39,54,31,34,56,39,21,22,33,39,17,23,45,36,23,24,42,59,36,36,60,45,25,53,63,43,49,59,53,50,51,60,9,19,33,43,25,27,46,34,19,65,58,63,60,0,255,255,0,92,255,76,1,248,1,224,2,6,2,109,0,0,0,2,0,36,255,244,1,205,2,159,0,17,0,55,0,50,0,184,0,0,69,88,184,0,31,47,27,185,0,31,0,5,62,89,187,0,21,0,1,0,52,0,4,43,187,0,41,0,1,0,8,0,4,43,184,0,31,16,185,0,0,0,1,244,48,49,55,50,62,2,55,46,1,35,34,14,2,21,20,30,2,3,62,1,51,50,30,2,21,20,14,2,35,34,46,2,53,52,62,2,51,50,22,23,54,52,53,52,46,2,35,34,6,7,213,41,66,50,33,8,41,79,37,46,66,42,20,21,37,48,68,27,74,44,42,73,53,30,36,66,93,57,34,62,48,29,28,56,80,53,45,84,33,1,24,42,57,34,32,62,24,27,37,66,92,55,46,37,30,49,65,36,34,56,41,22,2,69,29,34,34,74,117,82,84,139,99,54,26,49,70,44,48,82,58,33,41,35,10,20,11,75,103,63,28,27,26,0,0,1,0,58,255,98,1,18,3,20,0,41,0,23,0,187,0,6,0,1,0,0,0,4,43,187,0,21,0,1,0,27,0,4,43,48,49,23,34,39,55,30,1,51,50,62,2,53,52,46,2,53,52,62,2,51,50,22,23,7,38,35,34,14,2,21,20,30,2,21,20,14,2,100,30,12,7,6,17,11,22,27,15,5,14,17,14,9,25,43,34,13,22,5,7,11,23,21,27,14,5,13,17,13,9,24,43,158,6,36,2,2,25,45,65,41,53,136,140,134,51,46,80,58,34,3,3,36,4,25,46,66,40,53,135,140,133,52,47,79,59,33,0,0,0,1,0,49,255,151,2,29,3,52,0,14,0,13,0,187,0,7,0,2,0,14,0,4,43,48,49,19,7,39,55,19,22,23,51,62,1,55,19,51,3,35,133,69,15,109,126,8,7,4,3,4,4,189,38,217,41,1,78,32,31,51,254,135,24,28,13,26,13,3,45,252,99,0,0,0,255,255,0,27,0,0,2,18,2,147,2,6,2,68,0,0,255,255,0,46,0,0,2,101,2,159,2,6,2,88,0,0,0,1,0,19,255,136,1,231,2,127,0,13,0,40,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,15,62,89,187,0,11,0,1,0,12,0,4,43,184,0,3,16,185,0,5,0,1,244,48,49,23,1,3,53,33,21,33,21,19,3,21,33,21,33,19,1,1,245,1,169,254,145,239,250,1,153,254,44,87,1,91,1,90,33,39,4,254,177,254,175,4,40,0,1,0,94,255,136,2,46,2,127,0,7,0,26,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,15,62,89,185,0,4,0,1,244,48,49,19,33,17,35,17,33,17,35,94,1,208,48,254,142,46,2,127,253,9,2,207,253,49,0,0,2,0,28,255,244,1,102,2,219,0,9,0,49,0,40,0,184,0,0,69,88,184,0,13,47,27,185,0,13,0,5,62,89,187,0,32,0,1,0,6,0,4,43,184,0,13,16,185,0,46,0,1,244,48,49,19,62,1,53,52,38,35,34,6,21,19,14,1,35,34,46,2,61,1,14,1,7,39,62,1,55,17,52,62,2,51,50,22,21,20,14,2,7,21,20,30,2,51,50,54,55,150,65,83,40,30,32,46,208,20,57,38,28,50,37,22,14,29,15,20,20,39,19,19,33,44,25,49,64,29,51,70,40,16,26,35,20,32,41,18,1,13,69,163,83,61,49,75,78,254,14,20,35,23,44,66,44,11,12,21,11,31,14,31,17,1,49,55,77,48,21,73,72,48,99,95,89,39,40,41,56,36,16,27,17,0,0,0,2,0,46,255,244,2,242,2,148,0,17,0,50,0,75,0,184,0,0,69,88,184,0,31,47,27,185,0,31,0,17,62,89,184,0,0,69,88,184,0,21,47,27,185,0,21,0,5,62,89,186,0,0,0,37,0,3,43,184,0,31,16,185,0,8,0,1,244,186,0,18,0,21,0,31,17,18,57,184,0,21,16,185,0,47,0,1,244,48,49,1,50,61,1,52,39,46,1,35,34,6,7,14,1,29,1,20,51,5,14,1,35,34,46,2,53,52,62,2,51,50,30,2,29,1,33,34,29,1,20,22,23,30,1,51,50,54,55,2,108,6,10,42,110,62,65,111,42,3,5,4,1,246,50,146,86,74,129,96,55,55,96,129,74,73,129,96,56,253,194,4,5,3,41,112,65,68,118,42,1,78,6,184,12,10,44,50,53,45,5,11,6,180,6,214,60,72,53,91,122,70,70,122,91,53,53,91,122,70,8,4,184,6,9,5,47,53,61,51,0,1,0,29,255,242,2,68,2,6,0,9,0,13,0,187,0,5,0,1,0,6,0,4,43,48,49,55,53,1,23,7,33,21,33,23,7,29,1,13,26,231,1,231,254,25,231,26,250,4,1,8,27,220,38,220,27,0,0,0,0,1,0,43,255,232,2,64,2,14,0,9,0,34,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,11,62,89,184,0,8,220,186,0,0,0,3,0,8,17,18,57,48,49,1,7,39,1,51,1,7,39,17,35,1,34,219,28,1,9,4,1,8,27,220,39,1,206,231,26,1,13,254,243,26,231,254,26,0,0,0,1,0,38,255,242,2,77,2,6,0,9,0,13,0,187,0,4,0,1,0,1,0,4,43,48,49,37,55,33,53,33,39,55,1,21,1,1,38,230,254,26,1,230,230,26,1,13,254,243,13,220,38,220,27,254,248,4,254,248,0,1,0,43,255,232,2,64,2,14,0,9,0,34,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,11,62,89,184,0,8,220,186,0,5,0,3,0,8,17,18,57,48,49,63,1,23,17,51,17,55,23,1,35,43,28,219,39,220,27,254,248,4,245,26,231,1,230,254,26,231,26,254,243,0,0,0,1,0,45,255,196,3,93,2,244,0,3,0,11,0,186,0,1,0,2,0,3,43,48,49,19,33,17,33,45,3,48,252,208,2,244,252,208,0,0,0,1,0,25,255,176,3,113,3,8,0,3,0,11,0,186,0,1,0,3,0,3,43,48,49,19,9,2,25,1,172,1,172,254,84,1,92,1,172,254,84,254,84,0,0,3,0,35,255,181,3,104,3,3,0,19,0,39,0,59,0,23,0,187,0,20,0,1,0,0,0,4,43,187,0,10,0,1,0,30,0,4,43,48,49,5,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,39,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,55,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,1,197,83,152,115,68,68,115,152,83,83,152,115,69,69,115,152,83,72,135,105,64,64,105,135,72,71,135,106,64,64,106,135,71,54,101,76,46,46,76,101,54,54,101,77,46,46,77,101,75,56,108,158,101,99,157,109,58,58,109,157,99,101,158,108,56,37,50,98,144,94,94,144,98,50,50,98,144,94,94,144,98,50,103,39,73,105,66,65,105,73,40,40,73,105,65,66,105,73,39,0,0,0,0,2,0,45,255,196,3,93,2,244,0,5,0,9,0,23,0,187,0,6,0,1,0,4,0,4,43,187,0,2,0,2,0,7,0,4,43,48,49,19,55,33,17,7,33,37,17,33,17,45,56,2,248,46,252,254,2,236,253,53,2,198,46,253,8,56,31,2,205,253,51,0,0,1,0,54,255,196,3,84,3,8,0,5,0,11,0,186,0,2,0,4,0,3,43,48,49,23,1,51,1,21,33,54,1,141,4,1,141,252,226,58,3,66,252,190,2,0,0,0,0,2,0,54,255,196,3,84,3,8,0,5,0,8,0,13,0,187,0,6,0,1,0,4,0,4,43,48,49,23,1,51,1,21,33,37,9,1,54,1,141,4,1,141,252,226,2,227,254,172,254,172,58,3,66,252,190,2,36,2,210,253,46,0,0,1,0,45,255,205,3,113,2,235,0,5,0,11,0,186,0,1,0,4,0,3,43,48,49,19,51,1,21,1,35,45,2,3,66,252,190,2,2,235,254,115,4,254,115,0,0,0,0,2,0,45,255,205,3,113,2,235,0,5,0,8,0,41,0,186,0,1,0,4,0,3,43,186,0,6,0,4,0,1,17,18,57,186,0,7,0,4,0,1,17,18,57,186,0,8,0,4,0,1,17,18,57,48,49,19,51,1,21,1,35,9,1,17,45,2,3,66,252,190,2,2,246,253,48,2,235,254,115,4,254,115,1,143,1,84,253,88,0,0,0,1,0,54,255,176,3,84,2,244,0,5,0,11,0,186,0,5,0,1,0,3,43,48,49,9,1,35,1,53,33,3,84,254,115,4,254,115,3,30,2,242,252,190,3,66,2,0,0,2,0,54,255,176,3,84,2,244,0,5,0,8,0,13,0,187,0,4,0,1,0,6,0,4,43,48,49,9,1,35,1,53,33,5,9,1,3,84,254,115,4,254,115,3,30,253,29,1,84,1,84,2,242,252,190,3,66,2,36,253,46,2,210,0,0,0,0,1,0,25,255,205,3,93,2,235,0,5,0,21,0,186,0,5,0,0,0,3,43,186,0,3,0,0,0,5,17,18,57,48,49,5,35,1,53,1,51,3,93,2,252,190,3,66,2,51,1,141,4,1,141,0,0,2,0,25,255,205,3,93,2,235,0,5,0,8,0,51,0,186,0,5,0,0,0,3,43,186,0,3,0,0,0,5,17,18,57,186,0,6,0,0,0,5,17,18,57,186,0,7,0,0,0,5,17,18,57,186,0,8,0,0,0,5,17,18,57,48,49,5,35,1,53,1,51,9,1,17,3,93,2,252,190,3,66,2,253,10,2,208,51,1,141,4,1,141,254,113,254,172,2,168,0,2,0,74,255,246,2,208,2,157,0,5,0,9,0,53,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,17,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,185,0,6,0,1,244,184,0,1,16,185,0,7,0,2,244,48,49,19,55,33,17,7,33,37,17,33,17,74,53,2,81,45,253,167,2,67,253,222,2,114,43,253,142,53,33,2,69,253,187,0,0,0,0,2,0,74,255,246,3,35,3,16,0,18,0,30,0,98,0,184,0,0,69,88,184,0,21,47,27,185,0,21,0,17,62,89,184,0,0,69,88,184,0,26,47,27,185,0,26,0,17,62,89,184,0,0,69,88,184,0,23,47,27,185,0,23,0,5,62,89,187,0,12,0,1,0,3,0,4,43,186,0,0,0,23,0,26,17,18,57,184,0,21,16,185,0,15,0,2,244,184,0,16,208,184,0,23,16,185,0,17,0,1,244,48,49,1,14,1,15,1,46,1,39,55,30,1,23,51,62,1,55,33,17,33,19,6,7,17,7,33,17,55,33,62,1,55,2,141,77,122,37,56,27,71,42,35,38,68,20,4,34,121,76,254,2,2,34,150,42,41,45,253,167,53,2,27,26,52,27,2,71,103,242,130,7,78,141,62,24,60,135,67,117,237,106,253,187,2,217,39,47,253,145,53,2,124,43,32,57,26,0,0,0,0,1,255,252,255,236,2,85,2,169,0,19,0,47,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,5,62,89,184,0,0,69,88,184,0,18,47,27,185,0,18,0,5,62,89,184,0,0,16,185,0,6,0,1,244,48,49,23,38,39,55,30,1,23,51,62,3,55,23,14,3,15,1,143,57,90,34,42,71,23,4,26,83,103,120,63,32,64,120,104,84,27,55,20,162,131,24,63,141,70,89,182,172,154,61,32,60,149,170,186,97,7,0,1,0,31,255,235,1,197,2,182,0,38,0,21,0,186,0,8,0,0,0,3,43,186,0,11,0,0,0,8,17,18,57,48,49,23,34,38,53,52,62,2,51,50,22,23,17,51,30,3,23,30,3,21,20,6,7,39,62,1,53,52,38,39,17,20,14,2,126,40,55,21,40,55,35,20,34,7,33,4,8,15,24,19,33,41,24,9,14,8,27,8,4,68,65,28,44,57,21,37,33,21,39,30,18,7,5,2,37,11,16,16,19,13,24,46,46,50,27,37,63,22,10,25,40,27,49,86,19,254,78,37,55,37,18,0,0,2,0,59,255,246,1,184,2,158,0,5,0,15,0,53,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,17,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,5,62,89,185,0,6,0,1,244,184,0,1,16,185,0,10,0,1,244,48,49,27,1,51,19,3,35,63,2,47,1,35,15,1,31,1,59,166,49,166,166,49,26,68,76,76,68,4,68,75,75,68,1,74,1,84,254,172,254,172,38,139,163,161,141,141,161,163,139,0,0,0,0,1,0,82,1,229,0,148,2,181,0,4,0,11,0,186,0,0,0,3,0,3,43,48,49,19,23,15,1,39,105,43,10,27,29,2,181,2,70,136,1,0,0,0,255,255,0,82,1,229,1,33,2,181,0,38,7,6,0,0,0,7,7,6,0,141,0,0,0,1,0,71,1,229,0,137,2,181,0,4,0,11,0,186,0,3,0,0,0,3,43,48,49,19,47,1,55,23,108,27,10,43,23,1,229,136,70,2,207,0,0,0,255,255,0,82,1,229,0,148,2,181,2,6,7,6,0,0,255,255,0,58,1,224,0,161,2,191,2,6,4,130,0,0,255,255,0,58,1,221,0,162,2,188,2,6,4,131,0,0,255,255,0,33,2,34,0,143,2,225,0,7,7,98,0,83,3,37,0,0,255,255,0,17,2,34,0,127,2,225,0,7,7,76,0,77,3,37,0,0,255,255,0,152,2,62,1,64,2,242,0,7,7,33,1,11,0,0,0,0,255,255,0,214,2,62,1,126,2,242,0,7,7,36,1,11,0,0,0,0,255,255,0,129,2,60,1,149,2,225,0,7,7,39,1,11,0,0,0,0,255,255,0,129,2,61,1,149,2,225,0,7,7,61,1,11,0,0,0,0,0,1,0,26,2,17,0,69,2,207,0,3,0,24,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,19,62,89,184,0,2,220,48,49,19,51,7,35,26,43,6,31,2,207,190,0,0,0,255,255,0,6,2,94,0,252,2,130,0,7,7,43,0,129,0,0,0,0,255,255,0,54,2,62,0,222,2,242,0,6,7,36,107,0,255,255,255,248,2,62,0,160,2,242,0,6,7,33,107,0,255,255,0,27,254,247,0,69,255,181,0,6,7,90,48,0,255,255,0,103,2,67,1,175,2,198,0,7,7,41,1,11,0,0,0,0,255,255,0,141,2,86,1,137,2,160,0,7,7,53,1,11,0,0,0,0,255,255,0,144,2,94,1,134,2,130,0,7,7,43,1,11,0,0,0,0,255,255,0,118,2,58,1,160,2,211,0,7,7,47,1,11,0,0,0,0,255,255,0,170,2,36,1,108,2,227,0,7,7,57,1,11,0,0,0,0,255,255,0,190,2,57,1,189,2,238,0,7,7,59,1,11,0,0,0,0,255,255,0,229,2,84,1,49,2,164,0,7,7,51,1,11,0,0,0,0,255,255,0,192,255,37,1,88,0,2,0,7,7,86,1,20,0,0,0,0,255,255,0,213,255,53,1,103,0,4,0,7,7,88,1,11,0,0,0,0,0,12,0,52,255,244,2,27,1,236,0,11,0,23,0,35,0,47,0,59,0,71,0,83,0,94,0,106,0,118,0,130,0,141,0,203,0,184,0,0,69,88,184,0,78,47,27,185,0,78,0,9,62,89,184,0,0,69,88,184,0,60,47,27,185,0,60,0,5,62,89,187,0,42,0,2,0,36,0,4,43,187,0,101,0,2,0,95,0,4,43,187,0,6,0,2,0,0,0,4,43,187,0,137,0,2,0,131,0,4,43,187,0,18,0,2,0,12,0,4,43,184,0,131,16,184,0,24,208,184,0,24,47,184,0,137,16,184,0,30,208,184,0,30,47,184,0,95,16,184,0,48,208,184,0,48,47,184,0,101,16,184,0,54,208,184,0,54,47,184,0,60,16,185,0,66,0,2,244,184,0,78,16,185,0,72,0,2,244,184,0,36,16,184,0,84,208,184,0,42,16,184,0,90,208,184,0,0,16,184,0,107,208,184,0,6,16,184,0,113,208,184,0,12,16,184,0,119,208,184,0,18,16,184,0,125,208,48,49,55,34,38,53,52,54,51,50,22,21,20,6,39,34,38,53,52,54,51,50,22,21,20,6,55,34,38,53,52,54,51,50,22,21,20,6,19,34,38,53,52,54,51,50,22,21,20,6,3,34,38,53,52,54,51,50,22,21,20,6,19,34,38,53,52,54,51,50,22,21,20,6,3,34,38,53,52,54,51,50,22,21,20,6,19,34,38,53,52,54,51,50,22,21,20,3,34,38,53,52,54,51,50,22,21,20,6,19,34,38,53,52,54,51,50,22,21,20,6,55,34,38,53,52,54,51,50,22,21,20,6,39,34,38,53,52,54,51,50,22,21,20,109,12,18,18,12,14,19,18,43,11,18,18,11,15,19,19,13,12,18,18,12,14,19,18,64,12,18,18,12,14,18,18,14,12,18,18,12,14,18,18,92,12,18,18,12,14,19,19,14,12,18,18,12,14,19,19,92,12,17,17,12,14,18,32,12,17,17,12,14,18,17,64,12,18,18,12,14,18,17,13,14,17,17,14,12,20,18,42,12,18,18,12,14,18,97,18,15,17,17,17,17,15,18,110,17,16,17,16,16,17,16,17,111,17,17,16,16,16,16,17,17,254,209,18,17,15,16,16,15,17,18,1,129,17,15,17,16,16,17,15,17,254,100,16,17,16,17,17,16,17,16,1,182,17,16,16,17,17,16,16,17,254,101,18,17,15,16,16,15,35,1,128,18,15,17,15,15,17,15,18,254,210,18,15,17,17,17,17,15,18,110,17,16,17,16,16,17,16,17,110,17,16,16,16,16,16,33,0,1,255,141,2,62,0,53,2,242,0,3,0,24,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,13,62,89,184,0,1,220,48,49,3,55,23,7,115,34,134,24,2,213,29,157,23,0,0,1,255,144,2,194,0,41,3,84,0,3,0,24,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,19,62,89,184,0,1,220,48,49,3,55,23,7,112,28,125,20,3,51,33,123,23,0,0,1,255,183,2,47,0,21,2,245,0,3,0,13,0,124,184,0,3,47,24,184,0,1,220,48,49,3,55,23,7,73,51,43,33,2,235,10,190,8,0,1,255,203,2,62,0,115,2,242,0,3,0,24,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,13,62,89,184,0,1,220,48,49,3,55,23,7,53,134,34,144,2,85,157,29,151,0,0,1,255,215,2,194,0,112,3,84,0,3,0,24,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,19,62,89,184,0,1,220,48,49,3,55,23,7,41,125,28,133,2,217,123,33,113,0,0,1,255,235,2,47,0,78,2,245,0,3,0,11,0,184,0,2,47,184,0,0,220,48,49,19,23,7,39,27,51,66,33,2,245,10,188,8,0,0,0,1,255,118,2,60,0,138,2,225,0,7,0,42,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,13,62,89,184,0,0,220,184,0,6,16,184,0,3,208,186,0,5,0,0,0,6,17,18,57,48,49,3,51,23,7,39,35,7,39,21,42,117,22,114,4,114,22,2,225,144,21,126,126,21,0,0,1,255,121,2,195,0,135,3,71,0,7,0,42,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,19,62,89,184,0,0,220,184,0,6,16,184,0,3,208,186,0,5,0,0,0,6,17,18,57,48,49,3,51,23,7,39,35,7,39,22,44,113,20,113,4,113,20,3,71,113,19,98,98,19,0,0,1,255,92,2,67,0,164,2,198,0,27,0,48,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,13,62,89,184,0,19,220,184,0,5,208,184,0,0,16,184,0,8,208,184,0,5,16,184,0,14,220,184,0,22,208,48,49,19,34,46,2,35,34,6,7,39,62,3,51,50,30,2,51,50,54,55,23,14,3,76,29,39,32,31,21,27,25,2,34,1,10,21,33,24,28,39,32,32,21,26,25,2,34,2,9,21,32,2,67,30,36,30,54,39,2,24,45,35,22,30,36,30,55,38,2,23,45,36,22,0,0,0,1,255,91,2,206,0,165,3,66,0,23,0,48,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,19,62,89,184,0,17,220,184,0,5,208,184,0,0,16,184,0,8,208,184,0,5,16]);fileData0.push.apply(fileData0,[184,0,12,220,184,0,20,208,48,49,19,34,46,2,35,34,6,7,39,62,1,51,50,30,2,51,50,54,55,23,14,1,77,29,40,33,31,21,22,30,3,33,2,45,41,29,40,33,31,21,22,28,5,33,2,45,2,206,25,29,25,41,35,3,47,63,25,29,25,42,35,3,47,64,0,0,0,1,255,133,2,94,0,123,2,130,0,3,0,11,0,184,0,3,47,184,0,1,220,48,49,3,51,21,35,123,246,246,2,130,36,0,0,1,255,132,2,231,0,124,3,11,0,3,0,24,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,19,62,89,184,0,0,220,48,49,3,51,21,35,124,248,248,3,11,36,255,255,255,133,2,94,0,123,2,130,2,6,7,43,0,0,255,255,255,132,2,231,0,124,3,11,2,6,7,44,0,0,0,1,255,107,2,58,0,149,2,211,0,21,0,32,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,13,62,89,184,0,11,220,184,0,6,220,184,0,16,208,48,49,17,34,46,2,39,55,30,3,51,50,62,2,55,23,14,3,38,54,35,19,3,33,3,17,28,41,27,27,41,28,17,3,33,3,19,35,54,2,58,28,43,52,25,5,21,42,35,21,21,35,42,21,5,25,52,43,28,0,0,1,255,109,2,60,0,147,2,206,0,21,0,32,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,13,62,89,184,0,11,220,184,0,6,220,184,0,16,208,48,49,17,34,46,2,39,51,30,3,51,50,62,2,55,51,14,3,42,55,33,16,1,40,1,11,25,40,30,30,40,25,11,1,40,2,15,33,55,2,60,28,42,52,24,21,42,32,20,20,32,42,21,24,52,42,28,0,0,0,0,1,255,120,2,198,0,136,3,71,0,17,0,32,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,19,62,89,184,0,9,220,184,0,6,220,184,0,12,208,48,49,17,34,46,2,39,55,30,1,51,50,54,55,23,14,3,33,49,33,18,3,33,5,50,48,48,50,5,33,3,18,33,49,2,198,22,36,44,22,5,38,58,58,38,5,22,44,36,22,0,0,0,1,255,120,2,198,0,136,3,70,0,21,0,32,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,19,62,89,184,0,11,220,184,0,6,220,184,0,16,208,48,49,17,34,46,2,39,51,30,3,51,50,62,2,55,51,14,3,38,51,31,14,2,42,1,10,22,35,26,25,36,22,10,1,42,2,14,31,51,2,198,23,37,45,23,19,36,27,16,16,27,36,19,23,45,37,23,0,0,0,0,1,255,218,2,84,0,38,2,164,0,11,0,11,0,186,0,6,0,0,0,3,43,48,49,17,34,38,53,52,54,51,50,22,21,20,6,17,21,21,17,17,21,21,2,84,22,19,17,22,22,17,19,22,0,0,0,1,255,216,2,209,0,40,3,33,0,11,0,24,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,19,62,89,184,0,6,220,48,49,17,34,38,53,52,54,51,50,22,21,20,6,17,23,23,17,17,23,23,2,209,22,19,17,22,22,17,19,22,0,0,2,255,130,2,86,0,126,2,160,0,11,0,23,0,27,0,186,0,6,0,0,0,3,43,184,0,0,16,184,0,12,208,184,0,6,16,184,0,18,208,48,49,3,34,38,53,52,54,51,50,22,21,20,6,51,34,38,53,52,54,51,50,22,21,20,6,89,16,21,21,16,16,21,21,162,16,21,21,16,16,21,21,2,86,21,16,16,21,21,16,16,21,21,16,16,21,21,16,16,21,0,0,0,0,2,255,122,2,213,0,134,3,30,0,11,0,23,0,40,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,19,62,89,184,0,6,220,184,0,0,16,184,0,12,208,184,0,6,16,184,0,18,208,48,49,3,34,38,53,52,54,51,50,22,21,20,6,51,34,38,53,52,54,51,50,22,21,20,6,98,16,20,20,16,16,21,21,180,16,21,21,16,16,20,20,2,213,19,17,17,20,20,17,17,19,19,17,17,20,20,17,17,19,0,0,0,1,255,201,2,63,0,70,2,229,0,16,0,32,0,184,0,0,69,88,184,0,16,47,27,185,0,16,0,13,62,89,184,0,0,220,184,0,5,220,184,0,6,220,48,49,3,62,1,53,52,39,55,30,3,21,20,14,2,7,33,27,36,85,3,25,45,33,19,16,27,34,18,2,91,8,25,22,46,3,34,1,9,19,29,20,20,28,21,14,5,0,0,1,255,201,2,190,0,70,3,95,0,16,0,32,0,184,0,0,69,88,184,0,16,47,27,185,0,16,0,19,62,89,184,0,0,220,184,0,5,220,184,0,6,220,48,49,3,62,1,53,52,39,55,30,3,21,20,14,2,7,33,27,36,85,4,25,44,33,19,16,27,34,18,2,217,8,25,21,45,3,32,1,9,18,27,19,20,28,20,14,5,0,0,2,255,159,2,36,0,97,2,227,0,11,0,23,0,19,0,186,0,12,0,0,0,3,43,186,0,6,0,18,0,3,43,48,49,17,34,38,53,52,54,51,50,22,21,20,6,39,50,54,53,52,38,35,34,6,21,20,22,42,55,55,42,42,55,55,42,27,38,38,27,27,38,38,2,36,53,42,43,53,53,43,42,53,26,37,32,32,38,38,32,32,37,0,0,0,0,2,255,168,2,188,0,88,3,103,0,11,0,23,0,19,0,186,0,12,0,0,0,3,43,186,0,6,0,18,0,3,43,48,49,17,34,38,53,52,54,51,50,22,21,20,6,39,50,54,53,52,38,35,34,6,21,20,22,38,50,50,38,36,52,52,36,23,33,33,23,24,34,34,2,188,47,38,40,46,46,40,38,47,26,30,29,29,31,31,29,29,30,0,0,0,0,2,255,179,2,57,0,178,2,238,0,3,0,7,0,23,0,184,0,3,47,184,0,1,220,184,0,5,208,184,0,3,16,184,0,7,208,48,49,3,55,23,7,63,1,23,7,77,86,35,94,107,86,35,94,2,70,168,19,162,13,168,19,162,0,2,255,173,2,196,0,183,3,101,0,3,0,7,0,36,0,184,0,0,69,88,184,0,2,47,27,185,0,2,0,19,62,89,184,0,0,220,184,0,4,208,184,0,2,16,184,0,6,208,48,49,19,23,7,39,55,23,7,39,5,34,96,26,232,34,96,26,3,101,21,140,13,148,21,140,13,0,0,0,0,1,255,118,2,61,0,138,2,225,0,7,0,38,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,13,62,89,184,0,1,220,186,0,2,0,1,0,7,17,18,57,184,0,4,208,48,49,3,55,23,51,55,23,7,35,138,22,114,4,114,22,117,42,2,205,20,125,125,20,144,0,0,1,255,121,2,197,0,135,3,73,0,7,0,38,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,19,62,89,184,0,1,220,186,0,2,0,1,0,7,17,18,57,184,0,4,208,48,49,3,55,23,51,55,23,7,35,135,20,113,4,113,20,113,44,3,55,18,98,98,18,114,0,0,1,255,226,2,36,0,8,2,242,0,4,0,11,0,186,0,1,0,3,0,3,43,48,49,3,51,21,7,35,30,38,8,27,2,242,50,156,0,0,0,2,255,78,2,57,0,77,2,238,0,3,0,7,0,23,0,184,0,3,47,184,0,1,220,184,0,5,208,184,0,3,16,184,0,7,208,48,49,3,55,23,7,63,1,23,7,178,35,86,27,40,35,86,27,2,219,19,168,13,162,19,168,13,0,2,255,73,2,196,0,83,3,101,0,3,0,7,0,36,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,19,62,89,184,0,1,220,184,0,5,208,184,0,3,16,184,0,7,208,48,49,3,55,23,7,63,1,23,7,183,34,88,26,48,34,88,26,3,80,21,148,13,140,21,148,13,0,0,0,0,1,255,107,2,57,0,149,2,210,0,21,0,23,0,184,0,21,47,184,0,16,220,184,0,5,220,184,0,21,16,184,0,11,208,48,49,3,62,3,51,50,30,2,23,7,46,3,35,34,14,2,7,149,3,18,35,54,39,39,54,35,18,3,33,3,17,28,41,27,27,41,28,17,3,2,63,24,52,43,28,28,43,52,24,6,21,43,34,21,21,34,43,21,0,0,0,1,255,120,2,198,0,136,3,71,0,17,0,36,0,184,0,0,69,88,184,0,17,47,27,185,0,17,0,19,62,89,184,0,14,220,184,0,5,220,184,0,17,16,184,0,11,208,48,49,3,62,3,51,50,30,2,23,7,46,1,35,34,6,7,136,3,18,33,49,33,33,49,33,18,3,33,5,50,48,48,50,5,2,203,22,44,36,22,22,36,44,22,5,38,58,58,38,0,0,0,1,255,213,2,39,0,42,2,210,0,16,0,11,0,186,0,5,0,11,0,3,43,48,49,19,14,1,7,54,51,50,22,21,20,6,35,34,53,52,54,55,42,29,24,1,3,5,12,23,19,14,41,32,38,2,186,16,40,23,1,15,17,20,17,61,32,58,20,0,0,0,0,1,255,186,2,65,0,55,2,228,0,17,0,11,0,186,0,10,0,11,0,3,43,48,49,19,46,3,53,52,62,2,55,23,6,21,20,22,23,7,25,18,34,27,16,19,33,45,25,3,85,36,27,8,2,65,5,13,20,28,20,19,29,19,9,1,33,3,46,22,25,8,26,0,0,0,0,1,255,214,2,38,0,43,2,210,0,16,0,11,0,186,0,11,0,5,0,3,43,48,49,3,62,1,55,6,35,34,38,53,52,54,51,50,21,20,6,7,42,28,24,1,2,6,11,23,19,14,41,32,38,2,63,15,41,23,1,15,17,20,17,61,32,59,20,0,0,0,255,255,255,201,2,63,0,70,2,229,2,6,7,55,0,0,0,1,255,187,255,12,0,77,255,195,0,7,0,13,0,187,0,4,0,1,0,1,0,4,43,48,49,23,53,35,53,51,53,51,21,43,112,112,34,244,75,33,75,183,0,1,255,179,255,12,0,69,255,195,0,7,0,13,0,187,0,5,0,1,0,0,0,4,43,48,49,7,21,35,53,51,21,51,21,43,34,34,112,169,75,183,75,33,0,1,255,187,2,60,0,77,2,196,0,5,0,13,0,187,0,4,0,1,0,1,0,4,43,48,49,19,53,35,53,51,21,43,112,146,2,60,103,33,136,0,0,0,0,1,255,248,1,182,0,129,2,119,0,12,0,11,0,186,0,0,0,12,0,3,43,48,49,3,62,1,53,52,39,55,30,1,21,20,6,7,8,48,46,14,38,9,10,74,57,1,212,8,47,33,26,29,20,20,30,22,52,60,9,0,0,0,0,1,255,196,254,253,0,50,255,188,0,14,0,23,0,187,0,13,0,1,0,0,0,4,43,187,0,6,0,1,0,7,0,4,43,48,49,19,6,38,53,52,54,23,21,34,6,21,20,22,55,21,50,51,59,59,51,42,35,35,42,254,255,2,51,45,45,50,2,24,38,31,32,38,1,25,0,1,255,167,255,56,0,89,255,195,0,7,0,21,0,187,0,1,0,1,0,0,0,4,43,184,0,1,16,184,0,5,208,48,49,7,53,51,53,51,21,51,21,89,72,34,72,200,33,106,106,33,0,1,255,167,255,12,0,89,255,151,0,7,0,21,0,187,0,6,0,1,0,7,0,4,43,184,0,7,16,184,0,3,208,48,49,23,21,35,53,35,53,51,21,17,34,72,178,138,106,106,33,33,0,1,255,167,255,12,0,89,255,195,0,11,0,29,0,187,0,9,0,1,0,0,0,4,43,184,0,0,16,184,0,3,208,184,0,9,16,184,0,5,208,48,49,23,21,35,53,35,53,51,53,51,21,51,21,17,34,72,72,34,72,169,75,75,33,75,75,33,0,1,255,167,255,87,0,89,255,120,0,3,0,13,0,187,0,1,0,1,0,2,0,4,43,48,49,7,51,21,35,89,178,178,136,33,255,255,255,218,255,62,0,38,255,142,2,7,7,51,0,0,252,234,0,0,255,255,255,130,255,65,0,126,255,139,2,7,7,53,0,0,252,235,0,0,255,255,255,159,255,0,0,97,255,191,2,7,7,57,0,0,252,220,0,0,0,1,255,172,255,37,0,68,255,195,0,13,0,23,0,186,0,6,0,7,0,3,43,184,0,6,16,184,0,0,220,184,0,13,220,48,49,7,62,1,53,52,38,39,55,30,1,21,20,6,7,84,65,48,41,36,13,57,46,74,71,189,4,26,22,23,21,3,29,8,33,32,39,41,5,0,0,1,255,188,2,67,0,84,2,225,0,14,0,23,0,186,0,13,0,0,0,3,43,184,0,13,16,184,0,7,220,184,0,6,220,48,49,19,46,1,53,52,54,55,23,14,1,21,20,22,23,7,35,57,46,74,71,7,65,48,41,36,13,2,67,8,33,32,39,41,5,30,5,26,22,23,20,3,29,0,0,1,255,172,255,37,0,68,0,2,0,15,0,23,0,186,0,6,0,9,0,3,43,184,0,6,16,184,0,0,220,184,0,15,220,48,49,7,62,1,53,52,38,39,55,51,7,30,1,21,20,6,7,84,65,48,36,42,41,35,30,32,39,74,71,189,4,26,23,22,23,6,87,67,8,31,30,39,41,5,0,1,255,172,255,37,0,68,0,2,0,15,0,23,0,186,0,6,0,9,0,3,43,184,0,6,16,184,0,0,220,184,0,15,220,48,49,7,62,1,53,52,38,39,55,51,7,30,1,21,20,6,7,84,65,48,36,42,41,35,30,32,39,74,71,189,4,26,23,22,23,6,87,67,8,31,30,39,41,5,0,1,255,202,255,53,0,92,0,4,0,18,0,11,0,186,0,13,0,0,0,3,43,48,49,23,34,38,53,52,54,55,51,14,1,21,20,22,51,50,55,23,14,1,27,35,46,44,27,44,35,42,30,19,25,18,16,11,38,203,40,41,38,66,22,26,62,32,26,26,14,26,10,13,0,0,0,1,255,203,255,51,0,97,0,4,0,18,0,11,0,186,0,13,0,0,0,3,43,48,49,23,34,38,53,52,54,55,51,14,1,21,20,22,51,50,55,23,14,1,31,35,49,43,28,42,35,39,32,19,25,18,17,12,37,205,40,42,39,66,22,26,62,32,26,26,14,27,10,14,0,0,0,1,255,235,254,247,0,21,255,181,0,3,0,11,0,186,0,1,0,2,0,3,43,48,49,7,51,23,35,15,30,6,42,75,190,0,0,1,255,139,255,27,0,117,255,171,0,7,0,13,0,187,0,5,0,1,0,0,0,4,43,48,49,23,35,21,35,53,51,21,35,86,172,31,234,31,118,111,144,144,255,255,255,118,255,35,0,138,255,199,2,7,7,61,0,0,252,230,0,0,255,255,255,107,255,26,0,149,255,179,2,7,7,47,0,0,252,224,0,0,255,255,255,107,255,25,0,149,255,178,2,7,7,66,0,0,252,224,0,0,255,255,255,92,255,36,0,164,255,167,2,7,7,41,0,0,252,225,0,0,255,255,255,133,255,97,0,123,255,133,2,7,7,43,0,0,253,3,0,0,255,255,255,92,0,195,0,164,1,70,2,7,7,41,0,0,254,128,0,0,0,1,255,206,254,253,0,60,255,188,0,13,0,23,0,187,0,0,0,1,0,13,0,4,43,187,0,7,0,1,0,6,0,4,43,48,49,7,22,54,53,52,38,35,53,54,22,21,20,6,39,50,42,35,35,42,51,59,59,51,232,1,38,32,31,38,24,2,50,45,45,51,2,0,0,0,0,1,255,139,255,24,0,117,255,168,0,7,0,13,0,187,0,3,0,1,0,6,0,4,43,48,49,7,51,21,51,53,51,21,35,117,31,172,31,234,88,110,110,144,0,2,255,139,255,20,0,117,255,172,0,3,0,7,0,23,0,187,0,4,0,1,0,2,0,4,43,187,0,1,0,1,0,5,0,4,43,48,49,7,51,21,35,55,53,35,21,117,234,234,203,172,84,152,32,89,89,0,0,0,0,1,255,99,255,29,0,157,255,173,0,32,0,75,0,187,0,7,0,2,0,22,0,4,43,187,0,10,0,1,0,19,0,4,43,184,0,22,16,184,0,0,208,184,0,0,47,184,0,10,16,184,0,3,208,184,0,22,16,184,0,13,208,184,0,13,47,184,0,19,16,184,0,26,208,184,0,22,16,184,0,31,208,184,0,31,47,48,49,7,38,54,51,50,22,23,51,62,1,51,50,22,15,1,52,46,2,35,34,29,1,35,53,52,35,34,14,2,21,39,156,1,46,40,25,38,7,2,7,39,24,40,46,1,32,8,14,21,12,52,34,52,12,21,14,8,32,224,77,64,26,34,34,26,64,77,3,34,43,25,10,95,16,16,95,10,25,43,34,3,0,0,0,1,255,181,2,52,0,75,2,201,0,11,0,37,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,19,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,19,62,89,48,49,3,55,39,55,23,55,23,7,23,7,39,7,75,51,51,24,51,51,24,51,51,24,51,51,2,75,51,51,24,51,51,24,51,51,23,51,51,255,255,255,92,2,67,0,164,2,198,2,6,7,41,0,0,255,255,255,91,2,206,0,165,3,66,2,6,7,42,0,0,0,1,255,237,255,65,0,76,255,190,0,17,0,13,0,187,0,11,0,1,0,0,0,4,43,48,49,23,34,38,61,1,51,14,1,21,20,22,51,50,54,55,23,14,1,38,27,30,39,1,1,16,10,5,8,12,7,10,14,191,33,38,54,14,33,13,16,14,1,3,33,3,3,0,0,0,0,1,254,59,2,47,1,197,2,202,0,13,0,11,0,186,0,3,0,10,0,3,43,48,49,1,62,1,51,50,22,23,7,46,1,35,34,6,7,254,59,100,222,131,131,222,100,16,95,224,118,118,224,95,2,73,62,67,67,62,26,60,59,59,60,0,0,0,0,3,255,132,2,86,0,124,3,54,0,3,0,15,0,27,0,39,0,184,0,3,47,186,0,10,0,4,0,3,43,184,0,3,16,184,0,1,220,184,0,4,16,184,0,16,208,184,0,10,16,184,0,22,208,48,49,3,55,23,15,1,34,38,53,52,54,51,50,22,21,20,6,51,34,38,53,52,54,51,50,22,21,20,6,38,85,31,93,74,15,20,20,15,15,21,21,163,15,21,21,15,15,20,20,2,206,104,24,98,102,21,15,15,20,20,15,15,21,21,15,15,20,20,15,15,21,0,0,3,255,123,2,213,0,133,3,177,0,11,0,15,0,27,0,52,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,19,62,89,186,0,12,0,14,0,3,43,184,0,0,16,184,0,6,220,184,0,0,16,184,0,16,208,184,0,6,16,184,0,22,208,48,49,3,34,38,53,52,54,51,50,22,21,20,6,55,23,7,39,23,34,38,53,52,54,51,50,22,21,20,6,98,15,20,20,15,15,21,21,149,31,103,22,126,15,21,21,15,15,20,20,2,213,18,17,17,19,19,17,17,18,220,25,98,17,114,18,17,17,19,19,17,17,18,0,0,0,0,3,255,121,2,49,0,135,2,246,0,3,0,15,0,27,0,39,0,184,0,2,47,186,0,10,0,4,0,3,43,184,0,2,16,184,0,0,220,184,0,4,16,184,0,16,208,184,0,10,16,184,0,22,208,48,49,19,23,7,47,1,34,38,53,52,54,51,50,22,21,20,6,51,34,38,53,52,54,51,50,22,21,20,6,16,46,66,29,69,15,18,18,15,14,19,19,190,14,19,19,14,15,18,18,2,246,10,187,7,34,18,15,15,18,18,15,15,18,18,15,15,18,18,15,15,18,0,0,3,255,132,2,86,0,124,3,54,0,3,0,15,0,27,0,35,0,186,0,10,0,4,0,3,43,186,0,3,0,1,0,3,43,184,0,4,16,184,0,16,208,184,0,10,16,184,0,22,208,48,49,3,55,23,15,1,34,38,53,52,54,51,50,22,21,20,6,51,34,38,53,52,54,51,50,22,21,20,6,78,31,85,23,104,15,20,20,15,15,21,21,163,15,21,21,15,15,20,20,3,30,24,104,18,102,21,15,15,20,20,15,15,21,21,15,15,20,20,15,15,21,0,0,3,255,123,2,213,0,133,3,177,0,3,0,15,0,27,0,52,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,19,62,89,186,0,2,0,0,0,3,43,184,0,4,16,184,0,10,220,184,0,4,16,184,0,16,208,184,0,10,16,184,0,22,208,48,49,19,39,55,23,7,34,38,53,52,54,51,50,22,21,20,6,51,34,38,53,52,54,51,50,22,21,20,6,6,103,31,94,126,15,20,20,15,15,21,21,181,15,21,21,15,15,20,20,3,54,98,25,106,114,18,17,17,19,19,17,17,18,18,17,17,19,19,17,17,18,0,3,255,121,2,49,0,135,2,246,0,11,0,15,0,27,0,39,0,184,0,15,47,186,0,6,0,0,0,3,43,184,0,15,16,184,0,13,220,184,0,0,16,184,0,16,208,184,0,6,16,184,0,22,208,48,49,3,34,38,53,52,54,51,50,22,21,20,6,63,1,23,7,55,34,38,53,52,54,51,50,22,21,20,6,102,15,18,18,15,14,19,19,32,46,43,29,98,14,19,19,14,15,18,18,2,90,18,15,15,18,18,15,15,18,146,10,190,7,41,18,15,15,18,18,15,15,18,0,3,255,107,2,86,0,149,3,19,0,25,0,37,0,49,0,55,0,186,0,32,0,26,0,3,43,184,0,32,16,184,0,44,208,184,0,18,220,184,0,10,220,184,0,23,208,184,0,5,220,184,0,12,208,184,0,18,16,184,0,25,208,184,0,26,16,184,0,38,208,48,49,3,62,3,51,50,30,2,51,50,55,23,14,3,35,34,46,2,35,34,7,23,34,38,53,52,54,51,50,22,21,20,6,51,34,38,53,52,54,51,50,22,21,20,6,149,1,9,19,28,19,27,37,30,30,21,41,8,28,1,9,19,28,19,27,37,30,30,21,41,8,32,15,20,20,15,15,21,21,163,15,21,21,15,15,20,20,2,195,14,29,23,14,17,19,17,51,3,14,29,23,14,17,19,17,51,106,21,15,15,20,20,15,15,21,21,15,15,20,20,15,15,21,0,0,3,255,131,2,86,0,124,3,12,0,11,0,15,0,27,0,39,0,186,0,6,0,0,0,3,43,184,0,6,16,184,0,15,220,184,0,12,220,184,0,0,16,184,0,16,208,184,0,6,16,184,0,22,208,48,49,3,34,38,53,52,54,51,50,22,21,20,6,39,51,21,35,23,34,38,53,52,54,51,50,22,21,20,6,89,15,20,20,15,15,21,21,51,248,248,214,15,21,21,15,15,20,20,2,86,21,15,15,20,20,15,15,21,182,33,149,21,15,15,20,20,15,15,21,0,0,0,0,3,255,123,2,213,0,133,3,119,0,11,0,15,0,27,0,48,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,19,62,89,184,0,6,220,184,0,15,220,184,0,12,220,184,0,0,16,184,0,16,208,184,0,6,16,184,0,22,208,48,49,3,34,38,53,52,54,51,50,22,21,20,6,39,51,21,35,23,34,38,53,52,54,51,50,22,21,20,6,98,15,20,20,15,15,21,21,41,248,248,222,15,21,21,15,15,20,20,2,213,18,17,17,19,19,17,17,18,162,33,129,18,17,17,19,19,17,17,18,0,0,0,3,255,132,2,86,0,124,3,53,0,7,0,19,0,31,0,53,0,186,0,14,0,8,0,3,43,184,0,14,16,184,0,5,220,184,0,7,220,186,0,0,0,7,0,5,17,18,57,184,0,2,208,184,0,8,16,184,0,20,208,184,0,14,16,184,0,26,208,48,49,3,51,55,23,7,35,39,55,23,34,38,53,52,54,51,50,22,21,20,6,51,34,38,53,52,54,51,50,22,21,20,6,2,4,93,20,96,38,96,20,6,15,20,20,15,15,21,21,163,15,21,21,15,15,20,20,2,231,78,19,92,92,19,223,21,15,15,20,20,15,15,21,21,15,15,20,20,15,15,21,0,0,3,255,123,2,213,0,133,3,175,0,7,0,19,0,31,0,62,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,19,62,89,184,0,14,220,184,0,7,220,184,0,1,220,186,0,2,0,1,0,7,17,18,57,184,0,4,208,184,0,8,16,184,0,20,208,184,0,14,16,184,0,26,208,48,49,3,55,23,51,55,23,7,35,7,34,38,53,52,54,51,50,22,21,20,6,51,34,38,53,52,54,51,50,22,21,20,6,124,19,103,4,103,19,104,40,78,15,20,20,15,15,21,21,181,15,21,21,15,15,20,20,3,155,20,77,77,20,94,104,18,17,17,19,19,17,17,18,18,17,17,19,19,17,17,18,0,2,255,132,2,61,0,209,3,3,0,7,0,11,0,31,0,186,0,8,0,10,0,3,43,186,0,6,0,1,0,3,43,184,0,6,16,184,0,0,220,184,0,3,208,48,49,3,55,51,23,7,39,35,7,37,23,7,39,124,105,38,105,18,104,4,104,1,29,30,100,22,2,83,92,92,22,76,76,198,24,111,20,0,0,2,255,141,2,195,0,203,3,116,0,7,0,11,0,44,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,19,62,89,184,0,6,220,184,0,1,220,184,0,7,16,184,0,4,208,184,0,11,220,184,0,9,220,48,49,3,55,51,23,7,39,35,7,63,1,23,7,115,95,40,95,19,94,4,94,178,94,27,100,2,214,84,84,19,68,68,80,97,27,92,0,0,2,255,29,2,61,0,124,3,3,0,7,0,11,0,31,0,186,0,10,0,8,0,3,43,186,0,6,0,1,0,3,43,184,0,6,16,184,0,0,220,184,0,3,208,48,49,3,55,51,23,7,39,35,7,47,1,55,23,124,105,38,105,18,104,4,104,3,118,30,110,2,83,92,92,22,76,76,63,108,27,112,0,0,0,2,255,71,2,195,0,115,3,116,0,7,0,11,0,48,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,19,62,89,184,0,6,220,184,0,1,220,184,0,7,16,184,0,4,208,184,0,7,16,184,0,8,220,184,0,10,220,48,49,3,55,51,23,7,39,35,7,47,1,55,23,115,95,40,95,19,94,4,94,7,82,27,76,2,214,84,84,19,68,68,58,96,23,101,0,0,2,255,132,2,61,0,182,3,8,0,7,0,22,0,39,0,186,0,6,0,1,0,3,43,184,0,6,16,184,0,0,220,184,0,3,208,184,0,22,220,184,0,8,220,184,0,13,220,184,0,14,220,48,49,3,55,51,23,7,39,35,7,55,62,1,53,52,39,55,30,1,21,20,14,2,7,124,105,38,105,18,104,4,104,201,21,28,71,3,45,61,14,23,28,14,2,83,92,92,22,76,76,82,8,21,17,43,3,29,2,32,36,17,25,18,12,4,0,0,0,2,255,141,2,195,0,181,3,131,0,7,0,23,0,52,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,19,62,89,184,0,6,220,184,0,1,220,184,0,7,16,184,0,4,208,184,0,23,220,184,0,8,220,184,0,14,220,184,0,15,220,48,49,3,55,51,23,7,39,35,7,55,62,1,53,52,38,39,55,30,1,21,20,14,2,7,115,95,40,95,19,94,4,94,188,21,30,37,36,5,45,61,14,23,28,14,2,214,84,84,19,68,68,77,5,20,17,23,17,2,31,2,31,35,17,25,18,11,3,0,0,0,2,255,126,2,61,0,130,3,17,0,7,0,35,0,55,0,186,0,6,0,1,0,3,43,184,0,6,16,184,0,0,220,184,0,3,208,184,0,1,16,184,0,27,220,184,0,18,220,184,0,32,208,184,0,13,220,184,0,21,208,184,0,27,16,184,0,35,208,48,49,3,55,51,23,7,39,35,7,39,62,3,51,50,30,2,51,50,54,55,23,14,3,35,34,46,2,35,34,6,7,124,105,38,105,18,104,4,104,24,1,7,14,22,17,23,36,32,29,17,17,13,3,29,1,7,14,23,16,23,36,32,30,16,17,13,3,2,83,91,91,22,75,75,134,13,27,22,13,13,16,13,22,23,3,14,26,22,13,13,16,13,22,23,0,2,255,116,2,195,0,140,3,157,0,7,0,35,0,68,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,19,62,89,184,0,6,220,184,0,1,220,184,0,7,16,184,0,4,208,184,0,1,16,184,0,27,220,184,0,18,220,184,0,32,208,184,0,13,220,184,0,21,208,184,0,27,16,184,0,35,208,48,49,3,55,51,23,7,39,35,7,39,62,3,51,50,30,2,51,50,54,55,23,14,3,35,34,46,2,35,34,6,7,115,95,40,95,19,94,4,94,44,1,7,16,27,20,25,36,30,29,18,20,18,3,30,1,7,16,27,20,26,35,30,29,18,20,18,3,2,214,83,83,19,67,67,138,14,28,23,15,17,19,17,28,23,3,14,28,23,15,17,19,17,28,23,0,0,0,0,2,255,107,2,58,0,149,3,33,0,3,0,25,0,35,0,186,0,15,0,4,0,3,43,184,0,15,16,184,0,3,220,184,0,1,220,184,0,15,16,184,0,9,220,184,0,21,208,48,49,3,55,23,7,23,34,46,2,39,55,30,3,51,50,62,2,55,23,14,3,37,84,31,91,13,39,54,35,18,3,32,3,17,28,42,27,27,42,28,17,3,32,3,18,35,54,2,176,113,25,108,98,28,43,52,25,5,21,43,35,21,21,35,43,21,5,25,52,43,28,0,0,0,0,2,255,120,2,198,0,136,3,157,0,3,0,25,0,44,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,19,62,89,184,0,15,220,184,0,2,220,184,0,0,220,184,0,15,16,184,0,10,220,184,0,20,208,48,49,19,23,7,39,23,34,46,2,39,55,30,3,51,50,62,2,55,23,14,3,66,31,102,23,28,33,49,33,18,3,32,3,14,26,37,24,24,37,25,15,3,32,3,18,33,49,3,157,25,98,18,110,22,36,44,22,5,19,35,27,16,16,27,35,19,5,22,44,36,22,0,0,0,2,255,107,2,58,0,149,3,33,0,3,0,25,0,35,0,186,0,15,0,4,0,3,43,184,0,15,16,184,0,3,220,184,0,1,220,184,0,15,16,184,0,9,220,184,0,21,208,48,49,3,55,23,15,1,34,46,2,39,55,30,3,51,50,62,2,55,23,14,3,78,31,84,24,13,39,54,35,18,3,32,3,17,28,42,27,27,42,28,17,3,32,3,18,35,54,3,8,25,113,20,98,28,43,52,25,5,21,43,35,21,21,35,43,21,5,25,52,43,28,0,0,0,0,2,255,120,2,198,0,136,3,157,0,3,0,25,0,44,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,19,62,89,184,0,15,220,184,0,0,220,184,0,2,220,184,0,15,16,184,0,10,220,184,0,20,208,48,49,19,39,55,23,7,34,46,2,39,55,30,3,51,50,62,2,55,23,14,3,5,102,31,94,28,33,49,33,18,3,32,3,14,26,37,24,24,37,25,15,3,32,3,18,33,49,3,34,98,25,105,110,22,36,44,22,5,19,35,27,16,16,27,35,19,5,22,44,36,22,0,0,0,2,255,107,2,58,0,149,3,57,0,15,0,37,0,43,0,186,0,27,0,16,0,3,43,184,0,27,16,184,0,15,220,184,0,0,220,184,0,6,220,184,0,7,220,184,0,27,16,184,0,21,220,184,0,33,208,48,49,3,62,1,53,52,38,39,55,30,1,21,20,14,2,7,23,34,46,2,39,55,30,3,51,50,62,2,55,23,14,3,30,25,33,40,42,4,48,68,16,25,32,15,22,39,54,35,18,3,32,3,17,28,42,27,27,42,28,17,3,32,3,18,35,54,2,189,5,23,17,23,21,2,33,2,34,37,18,27,19,12,3,103,28,43,52,25,5,21,43,35,21,21,35,43,21,5,25,52,43,28,0,2,255,120,2,198,0,136,3,171,0,15,0,37,0,52,0,184,0,0,69,88,184,0,16,47,27,185,0,16,0,19,62,89,184,0,27,220,184,0,15,220,184,0,0,220,184,0,6,220,184,0,7,220,184,0,27,16,184,0,22,220,184,0,32,208,48,49,3,62,1,53,52,38,39,55,30,1,21,20,14,2,7,23,34,46,2,39,55,30,3,51,50,62,2,55,23,14,3,27,21,30,37,36,5,45,61,14,23,28,14,17,33,49,33,18,3,32,3,14,26,37,24,24,37,25,15,3,32,3,18,33,49,3,56,6,19,17,23,18,2,30,2,30,36,17,25,17,11,4,87,22,36,44,22,5,19,35,27,16,16,27,35,19,5,22,44,36,22,0,0,0,0,2,255,118,2,58,0,138,3,17,0,19,0,47,0,51,0,186,0,9,0,0,0,3,43,184,0,9,16,184,0,5,220,184,0,15,208,184,0,39,220,184,0,30,220,184,0,44,208,184,0,25,220,184,0,33,208,184,0,39,16,184,0,47,208,48,49,17,34,46,2,39,55,30,1,51,50,62,2,55,23,14,3,39,62,3,51,50,30,2,51,50,54,55,23,14,3,35,34,46,2,35,34,6,7,36,50,33,17,2,31,4,53,50,25,38,27,15,2,31,2,17,33,50,167,1,7,14,23,17,23,36,32,29,17,17,13,3,30,1,7,14,23,17,23,36,32,30,16,17,13,3,2,58,20,30,37,17,5,28,49,14,22,27,14,5,17,37,30,20,137,13,27,22,13,13,16,13,22,23,3,14,26,22,13,13,16,13,22,23,0,0,0,2,255,116,2,199,0,140,3,158,0,17,0,45,0,47,0,184,0,0,47,184,0,9,220,184,0,6,220,184,0,12,208,184,0,37,220,184,0,28,220,184,0,42,208,184,0,23,220,184,0,31,208,184,0,37,16,184,0,45,208,48,49,17,34,46,2,39,55,30,1,51,50,54,55,23,14,3,39,62,3,51,50,30,2,51,50,54,55,23,14,3,35,34,46,2,35,34,6,7,33,49,33,18,2,31,5,50,49,49,50,5,31,2,18,33,49,173,1,7,16,27,20,25,36,30,29,18,20,18,3,30,1,7,16,27,20,26,35,30,29,18,20,18,3,2,199,18,30,37,18,5,30,47,47,30,5,18,37,30,18,135,14,28,23,15,17,19,17,28,23,3,14,28,23,15,17,19,17,28,23,0,0,0,0,2,255,133,2,61,0,123,3,19,0,7,0,25,0,43,0,186,0,6,0,1,0,3,43,184,0,6,16,184,0,0,220,184,0,3,208,184,0,1,16,184,0,8,220,184,0,17,220,184,0,13,220,184,0,21,208,48,49,3,55,51,23,7,39,35,7,55,34,46,2,39,55,30,1,51,50,54,55,23,14,3,122,103,38,103,18,102,4,102,104,30,45,30,16,2,29,5,44,45,45,44,5,29,2,16,30,45,2,81,79,79,20,63,63,124,15,24,30,15,6,24,35,35,24,6,15,30,24,15,0,0,0,2,255,130,2,195,0,126,3,158,0,7,0,25,0,56,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,19,62,89,184,0,6,220,184,0,1,220,184,0,7,16,184,0,4,208,184,0,1,16,184,0,8,220,184,0,17,220,184,0,14,220,184,0,20,208,48,49,3,55,51,23,7,39,35,7,55,34,46,2,39,55,30,1,51,50,54,55,23,14,3,115,95,40,95,19,94,4,94,96,31,46,31,16,2,31,5,45,45,45,45,5,31,2,16,31,46,2,214,83,83,19,68,68,129,15,25,30,15,5,23,36,36,23,5,15,30,25,15,0,0,2,255,133,2,94,0,123,3,54,0,3,0,7,0,23,0,186,0,4,0,7,0,3,43,184,0,4,16,184,0,3,220,184,0,1,220,48,49,3,55,23,15,1,51,21,35,59,129,26,133,86,246,246,2,214,96,34,88,58,36,0,0,0,0,2,255,132,2,231,0,124,3,177,0,3,0,7,0,32,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,19,62,89,184,0,4,220,184,0,3,220,184,0,1,220,48,49,3,55,23,15,1,51,21,35,31,102,26,108,113,248,248,3,76,101,28,94,44,36,0,0,0,2,255,123,2,48,0,100,2,245,0,17,0,21,0,44,0,184,0,20,47,184,0,0,69,88,184,0,0,47,27,185,0,0,0,13,62,89,184,0,17,220,184,0,11,220,184,0,10,220,184,0,20,16,184,0,18,220,48,49,3,46,3,53,52,62,2,55,23,14,1,21,20,22,23,55,23,7,39,50,16,30,23,14,18,30,40,23,2,36,39,30,23,94,48,65,31,2,66,4,14,20,28,20,19,28,19,9,1,33,2,23,23,22,26,7,153,10,187,7,0,2,255,113,2,48,0,85,2,245,0,17,0,21,0,44,0,184,0,21,47,184,0,0,69,88,184,0,0,47,27,185,0,0,0,13,62,89,184,0,17,220,184,0,11,220,184,0,10,220,184,0,21,16,184,0,19,220,48,49,3,46,3,53,52,62,2,55,23,14,1,21,20,22,23,63,1,23,7,60,16,30,23,14,18,30,40,23,2,36,39,30,23,46,48,43,31,2,66,4,14,20,28,20,19,28,19,9,1,33,2,23,23,22,26,7,143,10,190,7,0,2,255,125,2,50,0,131,3,18,0,14,0,40,0,47,0,184,0,0,47,184,0,14,220,184,0,9,220,184,0,8,220,184,0,32,220,184,0,23,220,184,0,37,208,184,0,18,220,184,0,26,208,184,0,32,16,184,0,40,208,48,49,19,46,3,53,52,54,55,23,6,21,20,22,23,39,62,1,51,50,30,2,51,50,54,55,23,14,3,35,34,46,2,35,34,6,7,22,14,29,22,14,60,45,4,71,27,22,161,2,26,34,23,36,32,29,17,17,13,3,30,1,7,14,23,17,23,36,32,30,16,17,13,3,2,50,4,11,16,21,14,31,26,2,28,1,35,12,18,6,121,28,47,13,16,13,22,23,3,14,26,22,13,13,16,13,22,23,0,0,0,0,2,255,122,2,48,0,109,2,245,0,17,0,21,0,44,0,184,0,20,47,184,0,0,69,88,184,0,17,47,27,185,0,17,0,13,62,89,184,0,0,220,184,0,6,220,184,0,7,220,184,0,20,16,184,0,18,220,48,49,3,62,1,53,52,38,39,55,30,3,21,20,14,2,7,55,23,7,39,112,23,30,39,36,2,22,41,30,18,14,23,30,16,165,48,65,31,2,92,7,26,22,23,23,2,33,1,9,19,28,19,20,28,20,14,4,179,10,187,7,0,2,255,122,2,48,0,94,2,245,0,17,0,21,0,44,0,184,0,21,47,184,0,0,69,88,184,0,17,47,27,185,0,17,0,13,62,89,184,0,0,220,184,0,6,220,184,0,7,220,184,0,21,16,184,0,19,220,48,49,3,62,1,53,52,38,39,55,30,3,21,20,14,2,7,63,1,23,7,112,23,30,39,36,2,22,41,30,18,14,23,30,16,107,48,43,31,2,92,7,26,22,23,23,2,33,1,9,19,28,19,20,28,20,14,4,169,10,190,7,0,2,255,125,2,50,0,131,3,18,0,25,0,40,0,47,0,184,0,40,47,184,0,26,220,184,0,31,220,184,0,32,220,184,0,17,220,184,0,8,220,184,0,22,208,184,0,3,220,184,0,11,208,184,0,17,16,184,0,25,208,48,49,3,62,1,51,50,30,2,51,50,54,55,23,14,3,35,34,46,2,35,34,6,7,23,62,1,53,52,39,55,30,1,21,20,14,2,7,131,2,26,34,23,36,32,29,17,17,13,3,30,1,7,14,23,17,23,36,32,30,16,17,13,3,71,22,27,71,4,45,60,14,23,28,14,2,196,28,47,13,16,13,22,23,3,14,26,22,13,13,16,13,22,23,118,6,18,12,35,1,28,2,26,31,14,21,16,11,4,0,0,255,255,0,33,0,0,1,180,2,219,0,38,0,35,0,0,0,7,0,38,1,25,0,0,255,255,0,33,255,244,1,190,2,219,0,38,0,35,0,0,0,7,0,41,1,7,0,0,0,0,0,40,1,230,0,1,0,0,0,0,0,0,0,112,0,0,0,1,0,0,0,0,0,1,0,21,0,112,0,1,0,0,0,0,0,2,0,7,0,133,0,1,0,0,0,0,0,3,0,36,0,140,0,1,0,0,0,0,0,4,0,21,0,112,0,1,0,0,0,0,0,5,0,64,0,176,0,1,0,0,0,0,0,6,0,19,0,240,0,1,0,0,0,0,0,7,0,96,1,3,0,1,0,0,0,0,0,8,0,26,1,99,0,1,0,0,0,0,0,9,0,12,1,125,0,1,0,0,0,0,0,11,0,25,1,137,0,1,0,0,0,0,0,13,1,147,1,162,0,1,0,0,0,0,0,14,0,26,3,53,0,1,0,0,0,0,0,16,0,15,3,79,0,1,0,0,0,0,0,17,0,5,3,94,0,1,0,0,0,0,1,0,0,12,3,99,0,1,0,0,0,0,1,1,0,10,3,111,0,1,0,0,0,0,1,2,0,11,3,121,0,1,0,0,0,0,1,3,0,11,3,132,0,1,0,0,0,0,1,4,0,9,3,143,0,3,0,1,4,9,0,0,0,224,3,152,0,3,0,1,4,9,0,1,0,42,4,120,0,3,0,1,4,9,0,2,0,14,4,162,0,3,0,1,4,9,0,3,0,72,4,176,0,3,0,1,4,9,0,4,0,42,4,120,0,3,0,1,4,9,0,5,0,128,4,248,0,3,0,1,4,9,0,6,0,38,5,120,0,3,0,1,4,9,0,7,0,192,5,158,0,3,0,1,4,9,0,8,0,52,6,94,0,3,0,1,4,9,0,9,0,24,6,146,0,3,0,1,4,9,0,11,0,50,6,170,0,3,0,1,4,9,0,13,3,38,6,220,0,3,0,1,4,9,0,14,0,52,10,2,0,3,0,1,4,9,0,16,0,30,10,54,0,3,0,1,4,9,0,17,0,10,10,84,0,3,0,1,4,9,1,0,0,24,10,94,0,3,0,1,4,9,1,1,0,20,10,118,0,3,0,1,4,9,1,2,0,22,10,138,0,3,0,1,4,9,1,3,0,22,10,160,0,3,0,1,4,9,1,4,0,18,10,182,67,111,112,121,114,105,103,104,116,32,50,48,49,48,44,32,50,48,49,50,44,32,50,48,49,52,32,65,100,111,98,101,32,83,121,115,116,101,109,115,32,73,110,99,111,114,112,111,114,97,116,101,100,32,40,104,116,116,112,58,47,47,119,119,119,46,97,100,111,98,101,46,99,111,109,47,41,44,32,119,105,116,104,32,82,101,115,101,114,118,101,100,32,70,111,110,116,32,78,97,109,101,32,39,83,111,117,114,99,101,39,46,83,111,117,114,99,101,32,83,97,110,115,32,80,114,111,32,76,105,103,104,116,82,101,103,117,108,97,114,50,46,48,49,48,59,65,68,66,69,59,83,111,117,114,99,101,83,97,110,115,80,114,111,45,76,105,103,104,116,59,65,68,79,66,69,86,101,114,115,105,111,110,32,50,46,48,49,48,59,80,83,32,86,101,114,115,105,111,110,32,50,46,48,59,104,111,116,99,111,110,118,32,49,46,48,46,55,56,59,109,97,107,101,111,116,102,46,108,105,98,50,46,53,46,54,49,57,51,48,83,111,117,114,99,101,83,97,110,115,80,114,111,45,76,105,103,104,116,83,111,117,114,99,101,32,105,115,32,97,32,116,114,97,100,101,109,97,114,107,32,111,102,32,65,100,111,98,101,32,83,121,115,116,101,109,115,32,73,110,99,111,114,112,111,114,97,116,101,100,32,105,110,32,116,104,101,32,85,110,105,116,101,100,32,83,116,97,116,101,115,32,97,110,100,47,111,114,32,111,116,104,101,114,32,99,111,117,110,116,114,105,101,115,46,65,100,111,98,101,32,83,121,115,116,101,109,115,32,73,110,99,111,114,112,111,114,97,116,101,100,80,97,117,108,32,68,46,32,72,117,110,116,104,116,116,112,58,47,47,119,119,119,46,97,100,111,98,101,46,99,111,109,47,116,121,112,101,84,104,105,115,32,70,111,110,116,32,83,111,102,116,119,97,114,101,32,105,115,32,108,105,99,101,110,115,101,100,32,117,110,100,101,114,32,116,104,101,32,83,73,76,32,79,112,101,110,32,70,111,110,116,32,76,105,99,101,110,115,101,44,32,86,101,114,115,105,111,110,32,49,46,49,46,13,10,13,10,84,104,105,115,32,108,105,99,101,110,115,101,32,105,115,32,97,118,97,105,108,97,98,108,101,32,119,105,116,104,32,97,32,70,65,81,32,97,116,58,32,104,116,116,112,58,47,47,115,99,114,105,112,116,115,46,115,105,108,46,111,114,103,47,79,70,76,46,32,84,104,105,115,32,70,111,110,116,32,83,111,102,116,119,97,114,101,32,105,115,32,100,105,115,116,114,105,98,117,116,101,100,32,111,110,32,97,110,32,39,65,83,32,73,83,39,32,66,65,83,73,83,44,32,87,73,84,72,79,85,84,32,87,65,82,82,65,78,84,73,69,83,32,79,82,32,67,79,78,68,73,84,73,79,78,83,32,79,70,32,65,78,89,32,75,73,78,68]);fileData0.push.apply(fileData0,[44,32,101,105,116,104,101,114,32,101,120,112,114,101,115,115,32,111,114,32,105,109,112,108,105,101,100,46,32,83,101,101,32,116,104,101,32,83,73,76,32,79,112,101,110,32,70,111,110,116,32,76,105,99,101,110,115,101,32,102,111,114,32,116,104,101,32,115,112,101,99,105,102,105,99,32,108,97,110,103,117,97,103,101,44,32,112,101,114,109,105,115,115,105,111,110,115,32,97,110,100,32,108,105,109,105,116,97,116,105,111,110,115,32,103,111,118,101,114,110,105,110,103,32,121,111,117,114,32,117,115,101,32,111,102,32,116,104,105,115,32,70,111,110,116,32,83,111,102,116,119,97,114,101,46,104,116,116,112,58,47,47,115,99,114,105,112,116,115,46,115,105,108,46,111,114,103,47,79,70,76,83,111,117,114,99,101,32,83,97,110,115,32,80,114,111,76,105,103,104,116,83,108,97,115,104,101,100,32,122,101,114,111,83,116,114,97,105,103,104,116,32,108,65,108,116,101,114,110,97,116,101,32,97,65,108,116,101,114,110,97,116,101,32,103,83,101,114,105,102,101,100,32,73,0,67,0,111,0,112,0,121,0,114,0,105,0,103,0,104,0,116,0,32,0,50,0,48,0,49,0,48,0,44,0,32,0,50,0,48,0,49,0,50,0,44,0,32,0,50,0,48,0,49,0,52,0,32,0,65,0,100,0,111,0,98,0,101,0,32,0,83,0,121,0,115,0,116,0,101,0,109,0,115,0,32,0,73,0,110,0,99,0,111,0,114,0,112,0,111,0,114,0,97,0,116,0,101,0,100,0,32,0,40,0,104,0,116,0,116,0,112,0,58,0,47,0,47,0,119,0,119,0,119,0,46,0,97,0,100,0,111,0,98,0,101,0,46,0,99,0,111,0,109,0,47,0,41,0,44,0,32,0,119,0,105,0,116,0,104,0,32,0,82,0,101,0,115,0,101,0,114,0,118,0,101,0,100,0,32,0,70,0,111,0,110,0,116,0,32,0,78,0,97,0,109,0,101,0,32,0,39,0,83,0,111,0,117,0,114,0,99,0,101,0,39,0,46,0,83,0,111,0,117,0,114,0,99,0,101,0,32,0,83,0,97,0,110,0,115,0,32,0,80,0,114,0,111,0,32,0,76,0,105,0,103,0,104,0,116,0,82,0,101,0,103,0,117,0,108,0,97,0,114,0,50,0,46,0,48,0,49,0,48,0,59,0,65,0,68,0,66,0,69,0,59,0,83,0,111,0,117,0,114,0,99,0,101,0,83,0,97,0,110,0,115,0,80,0,114,0,111,0,45,0,76,0,105,0,103,0,104,0,116,0,59,0,65,0,68,0,79,0,66,0,69,0,86,0,101,0,114,0,115,0,105,0,111,0,110,0,32,0,50,0,46,0,48,0,49,0,48,0,59,0,80,0,83,0,32,0,86,0,101,0,114,0,115,0,105,0,111,0,110,0,32,0,50,0,46,0,48,0,59,0,104,0,111,0,116,0,99,0,111,0,110,0,118,0,32,0,49,0,46,0,48,0,46,0,55,0,56,0,59,0,109,0,97,0,107,0,101,0,111,0,116,0,102,0,46,0,108,0,105,0,98,0,50,0,46,0,53,0,46,0,54,0,49,0,57,0,51,0,48,0,83,0,111,0,117,0,114,0,99,0,101,0,83,0,97,0,110,0,115,0,80,0,114,0,111,0,45,0,76,0,105,0,103,0,104,0,116,0,83,0,111,0,117,0,114,0,99,0,101,0,32,0,105,0,115,0,32,0,97,0,32,0,116,0,114,0,97,0,100,0,101,0,109,0,97,0,114,0,107,0,32,0,111,0,102,0,32,0,65,0,100,0,111,0,98,0,101,0,32,0,83,0,121,0,115,0,116,0,101,0,109,0,115,0,32,0,73,0,110,0,99,0,111,0,114,0,112,0,111,0,114,0,97,0,116,0,101,0,100,0,32,0,105,0,110,0,32,0,116,0,104,0,101,0,32,0,85,0,110,0,105,0,116,0,101,0,100,0,32,0,83,0,116,0,97,0,116,0,101,0,115,0,32,0,97,0,110,0,100,0,47,0,111,0,114,0,32,0,111,0,116,0,104,0,101,0,114,0,32,0,99,0,111,0,117,0,110,0,116,0,114,0,105,0,101,0,115,0,46,0,65,0,100,0,111,0,98,0,101,0,32,0,83,0,121,0,115,0,116,0,101,0,109,0,115,0,32,0,73,0,110,0,99,0,111,0,114,0,112,0,111,0,114,0,97,0,116,0,101,0,100,0,80,0,97,0,117,0,108,0,32,0,68,0,46,0,32,0,72,0,117,0,110,0,116,0,104,0,116,0,116,0,112,0,58,0,47,0,47,0,119,0,119,0,119,0,46,0,97,0,100,0,111,0,98,0,101,0,46,0,99,0,111,0,109,0,47,0,116,0,121,0,112,0,101,0,84,0,104,0,105,0,115,0,32,0,70,0,111,0,110,0,116,0,32,0,83,0,111,0,102,0,116,0,119,0,97,0,114,0,101,0,32,0,105,0,115,0,32,0,108,0,105,0,99,0,101,0,110,0,115,0,101,0,100,0,32,0,117,0,110,0,100,0,101,0,114,0,32,0,116,0,104,0,101,0,32,0,83,0,73,0,76,0,32,0,79,0,112,0,101,0,110,0,32,0,70,0,111,0,110,0,116,0,32,0,76,0,105,0,99,0,101,0,110,0,115,0,101,0,44,0,32,0,86,0,101,0,114,0,115,0,105,0,111,0,110,0,32,0,49,0,46,0,49,0,46,0,13,0,10,0,13,0,10,0,84,0,104,0,105,0,115,0,32,0,108,0,105,0,99,0,101,0,110,0,115,0,101,0,32,0,105,0,115,0,32,0,97,0,118,0,97,0,105,0,108,0,97,0,98,0,108,0,101,0,32,0,119,0,105,0,116,0,104,0,32,0,97,0,32,0,70,0,65,0,81,0,32,0,97,0,116,0,58,0,32,0,104,0,116,0,116,0,112,0,58,0,47,0,47,0,115,0,99,0,114,0,105,0,112,0,116,0,115,0,46,0,115,0,105,0,108,0,46,0,111,0,114,0,103,0,47,0,79,0,70,0,76,0,46,0,32,0,84,0,104,0,105,0,115,0,32,0,70,0,111,0,110,0,116,0,32,0,83,0,111,0,102,0,116,0,119,0,97,0,114,0,101,0,32,0,105,0,115,0,32,0,100,0,105,0,115,0,116,0,114,0,105,0,98,0,117,0,116,0,101,0,100,0,32,0,111,0,110,0,32,0,97,0,110,0,32,0,39,0,65,0,83,0,32,0,73,0,83,0,39,0,32,0,66,0,65,0,83,0,73,0,83,0,44,0,32,0,87,0,73,0,84,0,72,0,79,0,85,0,84,0,32,0,87,0,65,0,82,0,82,0,65,0,78,0,84,0,73,0,69,0,83,0,32,0,79,0,82,0,32,0,67,0,79,0,78,0,68,0,73,0,84,0,73,0,79,0,78,0,83,0,32,0,79,0,70,0,32,0,65,0,78,0,89,0,32,0,75,0,73,0,78,0,68,0,44,0,32,0,101,0,105,0,116,0,104,0,101,0,114,0,32,0,101,0,120,0,112,0,114,0,101,0,115,0,115,0,32,0,111,0,114,0,32,0,105,0,109,0,112,0,108,0,105,0,101,0,100,0,46,0,32,0,83,0,101,0,101,0,32,0,116,0,104,0,101,0,32,0,83,0,73,0,76,0,32,0,79,0,112,0,101,0,110,0,32,0,70,0,111,0,110,0,116,0,32,0,76,0,105,0,99,0,101,0,110,0,115,0,101,0,32,0,102,0,111,0,114,0,32,0,116,0,104,0,101,0,32,0,115,0,112,0,101,0,99,0,105,0,102,0,105,0,99,0,32,0,108,0,97,0,110,0,103,0,117,0,97,0,103,0,101,0,44,0,32,0,112,0,101,0,114,0,109,0,105,0,115,0,115,0,105,0,111,0,110,0,115,0,32,0,97,0,110,0,100,0,32,0,108,0,105,0,109,0,105,0,116,0,97,0,116,0,105,0,111,0,110,0,115,0,32,0,103,0,111,0,118,0,101,0,114,0,110,0,105,0,110,0,103,0,32,0,121,0,111,0,117,0,114,0,32,0,117,0,115,0,101,0,32,0,111,0,102,0,32,0,116,0,104,0,105,0,115,0,32,0,70,0,111,0,110,0,116,0,32,0,83,0,111,0,102,0,116,0,119,0,97,0,114,0,101,0,46,0,104,0,116,0,116,0,112,0,58,0,47,0,47,0,115,0,99,0,114,0,105,0,112,0,116,0,115,0,46,0,115,0,105,0,108,0,46,0,111,0,114,0,103,0,47,0,79,0,70,0,76,0,83,0,111,0,117,0,114,0,99,0,101,0,32,0,83,0,97,0,110,0,115,0,32,0,80,0,114,0,111,0,76,0,105,0,103,0,104,0,116,0,83,0,108,0,97,0,115,0,104,0,101,0,100,0,32,0,122,0,101,0,114,0,111,0,83,0,116,0,114,0,97,0,105,0,103,0,104,0,116,0,32,0,108,0,65,0,108,0,116,0,101,0,114,0,110,0,97,0,116,0,101,0,32,0,97,0,65,0,108,0,116,0,101,0,114,0,110,0,97,0,116,0,101,0,32,0,103,0,83,0,101,0,114,0,105,0,102,0,101,0,100,0,32,0,73,0,0,0,2,0,0,0,0,0,0,255,181,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,152,0,0,1,2,1,3,0,3,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,50,0,51,0,52,0,53,0,54,0,55,0,56,0,57,0,58,0,59,0,60,0,61,0,68,0,69,0,70,0,71,0,72,0,73,0,74,0,75,0,76,0,77,0,78,0,79,0,80,0,81,0,82,0,83,0,84,0,85,0,86,0,87,0,88,0,89,0,90,0,91,0,92,0,93,0,173,0,201,0,199,0,174,0,98,1,4,1,5,0,99,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,1,17,1,18,1,19,0,144,1,20,1,21,1,22,1,23,0,100,0,253,1,24,0,255,1,25,1,26,1,27,1,28,1,29,0,203,0,101,0,200,1,30,0,202,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38,1,39,1,40,1,41,1,42,1,43,1,44,1,45,0,248,1,46,1,47,1,48,1,49,1,50,1,51,1,52,1,53,1,54,1,55,0,207,0,204,0,205,1,56,0,206,1,57,0,250,1,58,1,59,1,60,1,61,1,62,1,63,1,64,1,65,1,66,1,67,1,68,1,69,1,70,1,71,1,72,1,73,0,226,1,74,1,75,1,76,1,77,1,78,1,79,0,102,1,80,1,81,1,82,1,83,0,211,0,208,0,209,0,175,0,103,1,84,1,85,1,86,1,87,1,88,1,89,1,90,1,91,1,92,1,93,1,94,1,95,0,145,0,176,1,96,1,97,1,98,1,99,1,100,1,101,1,102,1,103,1,104,1,105,1,106,1,107,1,108,1,109,1,110,1,111,0,228,1,112,1,113,1,114,1,115,1,116,1,117,1,118,1,119,1,120,1,121,1,122,0,214,0,212,0,213,1,123,0,104,1,124,1,125,1,126,1,127,1,128,1,129,1,130,1,131,1,132,1,133,1,134,1,135,1,136,1,137,1,138,1,139,1,140,1,141,1,142,1,143,1,144,1,145,1,146,0,235,1,147,0,187,1,148,1,149,1,150,1,151,1,152,0,230,1,153,1,154,1,155,0,233,0,237,1,156,1,157,1,158,0,106,0,105,0,107,0,109,0,108,1,159,1,160,0,110,1,161,1,162,1,163,1,164,1,165,1,166,1,167,1,168,1,169,1,170,1,171,1,172,1,173,1,174,0,160,1,175,1,176,1,177,1,178,0,111,0,254,1,179,1,0,1,180,1,181,1,182,1,183,1,1,0,113,0,112,0,114,1,184,0,115,1,185,1,186,1,187,1,188,1,189,1,190,1,191,1,192,1,193,1,194,1,195,1,196,1,197,1,198,1,199,0,249,1,200,1,201,1,202,1,203,1,204,1,205,1,206,1,207,1,208,1,209,0,117,0,116,0,118,1,210,0,119,1,211,1,212,1,213,1,214,1,215,1,216,1,217,0,215,1,218,1,219,1,220,1,221,1,222,1,223,1,224,1,225,1,226,1,227,1,228,1,229,0,227,1,230,1,231,1,232,1,233,1,234,1,235,0,120,1,236,1,237,1,238,1,239,1,240,0,122,0,121,0,123,0,125,0,124,1,241,1,242,1,243,1,244,1,245,1,246,1,247,1,248,1,249,1,250,1,251,1,252,0,161,0,177,1,253,1,254,1,255,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,0,229,2,13,2,14,2,15,2,16,0,137,2,17,2,18,2,19,2,20,2,21,2,22,2,23,0,127,0,126,0,128,2,24,0,129,2,25,2,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,2,36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,2,45,2,46,2,47,0,236,2,48,0,186,2,49,2,50,2,51,2,52,2,53,0,231,2,54,2,55,2,56,0,234,0,238,2,57,2,58,2,59,2,60,2,61,2,62,2,63,2,64,2,65,2,66,2,67,2,68,2,69,2,70,2,71,2,72,2,73,2,74,2,75,2,76,2,77,2,78,2,79,2,80,2,81,2,82,2,83,2,84,2,85,2,86,2,87,2,88,2,89,2,90,2,91,2,92,2,93,2,94,2,95,2,96,2,97,2,98,2,99,2,100,2,101,2,102,2,103,2,104,2,105,2,106,2,107,2,108,2,109,2,110,2,111,2,112,2,113,2,114,2,115,2,116,2,117,2,118,2,119,2,120,2,121,2,122,2,123,2,124,2,125,2,126,2,127,2,128,2,129,2,130,2,131,2,132,2,133,2,134,2,135,2,136,2,137,2,138,2,139,2,140,2,141,2,142,2,143,2,144,2,145,2,146,2,147,2,148,2,149,2,150,2,151,2,152,2,153,2,154,2,155,2,156,2,157,2,158,2,159,2,160,2,161,2,162,2,163,2,164,2,165,2,166,2,167,2,168,2,169,2,170,2,171,2,172,2,173,2,174,2,175,2,176,2,177,2,178,2,179,2,180,2,181,2,182,2,183,2,184,2,185,2,186,2,187,2,188,2,189,2,190,2,191,2,192,2,193,2,194,2,195,2,196,2,197,2,198,2,199,2,200,2,201,2,202,2,203,2,204,2,205,2,206,2,207,2,208,2,209,2,210,2,211,2,212,2,213,2,214,2,215,2,216,2,217,2,218,2,219,2,220,2,221,2,222,2,223,2,224,2,225,2,226,2,227,2,228,2,229,2,230,2,231,2,232,2,233,2,234,2,235,2,236,0,155,2,237,2,238,2,239,2,240,2,241,2,242,2,243,2,244,2,245,2,246,2,247,2,248,2,249,2,250,2,251,2,252,2,253,2,254,2,255,3,0,3,1,3,2,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,3,16,3,17,3,18,3,19,3,20,3,21,3,22,3,23,3,24,3,25,3,26,3,27,3,28,3,29,3,30,3,31,3,32,3,33,3,34,3,35,3,36,3,37,3,38,3,39,3,40,3,41,3,42,3,43,3,44,3,45,3,46,3,47,3,48,3,49,3,50,3,51,3,52,3,53,3,54,3,55,3,56,3,57,3,58,3,59,3,60,3,61,3,62,3,63,3,64,3,65,3,66,3,67,3,68,3,69,3,70,3,71,3,72,3,73,3,74,3,75,3,76,3,77,3,78,3,79,3,80,3,81,3,82,3,83,3,84,3,85,3,86,3,87,3,88,3,89,3,90,3,91,3,92,3,93,3,94,3,95,3,96,3,97,3,98,3,99,3,100,3,101,3,102,3,103,3,104,3,105,3,106,3,107,3,108,3,109,3,110,3,111,3,112,3,113,3,114,3,115,3,116,3,117,3,118,3,119,3,120,3,121,3,122,3,123,3,124,3,125,3,126,3,127,3,128,3,129,3,130,3,131,3,132,3,133,3,134,3,135,3,136,3,137,3,138,3,139,3,140,3,141,3,142,3,143,3,144,3,145,3,146,3,147,3,148,3,149,3,150,3,151,3,152,3,153,3,154,3,155,3,156,3,157,3,158,3,159,3,160,3,161,3,162,3,163,3,164,3,165,3,166,3,167,3,168,3,169,3,170,3,171,3,172,3,173,3,174,3,175,3,176,3,177,3,178,3,179,3,180,3,181,3,182,3,183,3,184,3,185,3,186,3,187,3,188,3,189,3,190,3,191,3,192,3,193,3,194,3,195,3,196,3,197,3,198,3,199,3,200,3,201,3,202,3,203,3,204,3,205,3,206,3,207,3,208,3,209,3,210,3,211,3,212,3,213,3,214,3,215,3,216,3,217,3,218,3,219,3,220,3,221,3,222,3,223,3,224,3,225,3,226,3,227,3,228,3,229,3,230,3,231,3,232,3,233,3,234,3,235,3,236,3,237,3,238,3,239,3,240,3,241,3,242,3,243,3,244,3,245,3,246,3,247,3,248,3,249,3,250,3,251,3,252,3,253,3,254,3,255,4,0,4,1,4,2,4,3,4,4,4,5,4,6,4,7,4,8,4,9,4,10,4,11,4,12,4,13,4,14,4,15,4,16,4,17,4,18,4,19,4,20,4,21,4,22,4,23,4,24,4,25,4,26,4,27,4,28,4,29,4,30,4,31,4,32,4,33,4,34,4,35,4,36,4,37,4,38,4,39,4,40,4,41,4,42,4,43,4,44,4,45,4,46,4,47,4,48,4,49,4,50,4,51,4,52,4,53,4,54,4,55,4,56,4,57,4,58,4,59,4,60,4,61,4,62,4,63,4,64,4,65,4,66,4,67,4,68,4,69,4,70,4,71,4,72,4,73,4,74,4,75,4,76,4,77,4,78,4,79,4,80,4,81,4,82,4,83,4,84,4,85,4,86,4,87,4,88,4,89,4,90,4,91,4,92,4,93,4,94,4,95,4,96,4,97,4,98,4,99,4,100,4,101,4,102,4,103,4,104,4,105,4,106,4,107,4,108,4,109,4,110,4,111,4,112,4,113,4,114,4,115,4,116,4,117,4,118,4,119,4,120,4,121,4,122,4,123,4,124,4,125,4,126,4,127,4,128,4,129,4,130,4,131,4,132,4,133,4,134,4,135,4,136,4,137,4,138,4,139,4,140,4,141,4,142,4,143,4,144,4,145,4,146,4,147,4,148,4,149,4,150,4,151,4,152,4,153,4,154,4,155,4,156,4,157,4,158,4,159,4,160,4,161,4,162,4,163,4,164,4,165,4,166,4,167,4,168,4,169,4,170,4,171,4,172,4,173,4,174,4,175,4,176,4,177,4,178,4,179,4,180,4,181,4,182,4,183,4,184,4,185,4,186,0,9,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,4,187,4,188,4,189,4,190,4,191,4,192,4,193,4,194,4,195,4,196,4,197,4,198,4,199,4,200,4,201,4,202,4,203,4,204,4,205,4,206,4,207,4,208,4,209,4,210,4,211,4,212,4,213,4,214,4,215,4,216,4,217,4,218,4,219,4,220,4,221,4,222,4,223,4,224,4,225,4,226,4,227,4,228,4,229,4,230,0,17,0,15,0,29,0,30,0,171,0,4,0,163,0,34,0,162,0,10,0,5,0,182,0,183,0,180,0,181,0,196,0,197,0,190,0,191,0,169,0,170,0,16,4,231,0,178,0,179,4,232,4,233,4,234,4,235,0,195,0,135,0,66,4,236,4,237,0,11,0,12,0,62,0,64,0,94,0,96,0,18,0,95,0,63,0,232,0,13,0,130,0,194,0,134,0,136,4,238,4,239,4,240,4,241,4,242,4,243,4,244,4,245,4,246,4,247,4,248,4,249,4,250,4,251,4,252,4,253,0,139,4,254,0,138,0,140,4,255,5,0,5,1,0,35,5,2,0,6,5,3,5,4,5,5,5,6,5,7,5,8,5,9,5,10,5,11,5,12,5,13,5,14,5,15,5,16,5,17,5,18,5,19,5,20,5,21,5,22,5,23,5,24,5,25,5,26,5,27,5,28,5,29,5,30,5,31,5,32,5,33,5,34,5,35,5,36,5,37,5,38,5,39,5,40,5,41,5,42,5,43,5,44,5,45,5,46,5,47,5,48,5,49,5,50,5,51,5,52,5,53,5,54,5,55,5,56,5,57,5,58,5,59,5,60,5,61,5,62,5,63,5,64,5,65,5,66,5,67,5,68,5,69,5,70,5,71,5,72,5,73,5,74,5,75,5,76,5,77,5,78,5,79,5,80,5,81,5,82,5,83,5,84,5,85,5,86,5,87,5,88,5,89,5,90,5,91,5,92,5,93,5,94,5,95,5,96,5,97,5,98,5,99,5,100,5,101,5,102,5,103,5,104,5,105,5,106,5,107,5,108,5,109,5,110,5,111,5,112,5,113,5,114,5,115,5,116,5,117,5,118,5,119,5,120,5,121,5,122,5,123,5,124,5,125,5,126,5,127,5,128,5,129,5,130,5,131,5,132,5,133,5,134,5,135,5,136,5,137,5,138,5,139,5,140,5,141,5,142,5,143,5,144,5,145,5,146,5,147,5,148,5,149,5,150,5,151,5,152,5,153,5,154,5,155,5,156,5,157,5,158,5,159,5,160,5,161,5,162,5,163,5,164,5,165,5,166,5,167,5,168,5,169,5,170,5,171,5,172,5,173,5,174,5,175,5,176,5,177,5,178,5,179,5,180,5,181,5,182,5,183,5,184,5,185,5,186,5,187,5,188,5,189,5,190,5,191,5,192,5,193,5,194,5,195,5,196,5,197,5,198,5,199,5,200,5,201,5,202,5,203,5,204,5,205,5,206,5,207,5,208,5,209,5,210,5,211,5,212,5,213,5,214,5,215,5,216,5,217,5,218,5,219,5,220,5,221,5,222,5,223,5,224,5,225,5,226,5,227,5,228,5,229,5,230,5,231,5,232,5,233,5,234,5,235,5,236,5,237,5,238,5,239,5,240,5,241,5,242,5,243,5,244,5,245,5,246,5,247,5,248,5,249,5,250,5,251,5,252,5,253,5,254,5,255,6,0,6,1,6,2,6,3,6,4,6,5,6,6,6,7,6,8,6,9,6,10,6,11,6,12,6,13,6,14,6,15,6,16,6,17,6,18,6,19,6,20,6,21,6,22,6,23,6,24,6,25,6,26,6,27,6,28,6,29,6,30,6,31,6,32,6,33,6,34,6,35,6,36,6,37,6,38,6,39,6,40,6,41,6,42,6,43,6,44,6,45,6,46,6,47,6,48,6,49,6,50,6,51,6,52,6,53,6,54,6,55,6,56,6,57,6,58,6,59,6,60,6,61,6,62,6,63,6,64,6,65,6,66,6,67,6,68,6,69,6,70,6,71,6,72,6,73,6,74,6,75,6,76,6,77,6,78,6,79,6,80,6,81,6,82,6,83,6,84,6,85,6,86,6,87,6,88,6,89,6,90,6,91,6,92,6,93,6,94,6,95,6,96,6,97,6,98,6,99,6,100,6,101,6,102,6,103,6,104,6,105,6,106,6,107,6,108,6,109,6,110,6,111,6,112,6,113,6,114,6,115,6,116,6,117,6,118,6,119,6,120,6,121,6,122,6,123,6,124,6,125,6,126,6,127,6,128,6,129,6,130,6,131,6,132,6,133,6,134,6,135,6,136,6,137,6,138,6,139,6,140,6,141,6,142,6,143,6,144,6,145,6,146,6,147,6,148,6,149,6,150,6,151,6,152,6,153,6,154,6,155,6,156,6,157,6,158,6,159,6,160,0,157,6,161,0,158,6,162,6,163,6,164,6,165,6,166,6,167,6,168,6,169,6,170,6,171,6,172,6,173,6,174,6,175,6,176,6,177,6,178,6,179,6,180,6,181,6,182,6,183,6,184,6,185,6,186,6,187,6,188,6,189,6,190,6,191,6,192,6,193,6,194,6,195,6,196,6,197,6,198,6,199,6,200,6,201,6,202,6,203,6,204,6,205,6,206,6,207,6,208,6,209,6,210,6,211,6,212,6,213,6,214,6,215,6,216,6,217,6,218,6,219,6,220,6,221,6,222,6,223,6,224,6,225,6,226,6,227,6,228,0,131,0,189,0,7,0,133,0,150,6,229,6,230,0,132,6,231,6,232,6,233,6,234,6,235,6,236,6,237,6,238,6,239,6,240,6,241,6,242,6,243,6,244,6,245,6,246,0,188,6,247,6,248,0,8,0,198,0,245,0,244,0,246,6,249,6,250,6,251,6,252,6,253,6,254,6,255,7,0,7,1,7,2,7,3,7,4,7,5,7,6,7,7,7,8,0,14,0,239,0,240,0,184,7,9,0,32,0,31,0,33,0,148,0,149,0,147,0,65,0,143,0,97,0,167,0,164,0,146,7,10,0,152,0,156,0,165,7,11,7,12,0,153,0,154,7,13,7,14,7,15,7,16,7,17,7,18,7,19,7,20,7,21,7,22,7,23,7,24,7,25,7,26,7,27,7,28,7,29,7,30,7,31,7,32,7,33,7,34,0,185,7,35,7,36,7,37,7,38,7,39,7,40,7,41,7,42,0,67,0,141,0,216,0,225,7,43,7,44,7,45,7,46,7,47,0,217,0,142,0,218,0,219,0,221,0,223,0,220,0,222,0,224,7,48,7,49,7,50,7,51,7,52,7,53,7,54,7,55,7,56,7,57,7,58,7,59,7,60,7,61,7,62,7,63,7,64,7,65,7,66,7,67,7,68,7,69,7,70,7,71,7,72,7,73,7,74,7,75,7,76,7,77,7,78,7,79,7,80,7,81,7,82,7,83,7,84,7,85,7,86,7,87,7,88,7,89,7,90,7,91,7,92,7,93,7,94,7,95,7,96,7,97,7,98,7,99,7,100,7,101,7,102,7,103,7,104,7,105,7,106,7,107,7,108,7,109,7,110,7,111,7,112,7,113,7,114,7,115,7,116,7,117,7,118,7,119,7,120,7,121,7,122,7,123,7,124,7,125,7,126,7,127,7,128,7,129,7,130,7,131,7,132,7,133,7,134,7,135,7,136,7,137,7,138,7,139,7,140,7,141,7,142,7,143,7,144,7,145,7,146,7,147,7,148,7,149,7,150,7,151,7,152,7,153,7,154,7,155,7,156,7,157,7,158,7,159,7,160,7,161,7,162,7,163,7,164,7,165,0,192,0,193,4,78,85,76,76,2,67,82,7,65,109,97,99,114,111,110,6,65,98,114,101,118,101,7,117,110,105,48,49,67,68,7,117,110,105,49,69,65,48,7,117,110,105,49,69,65,50,7,117,110,105,49,69,65,52,7,117,110,105,49,69,65,54,7,117,110,105,49,69,65,56,7,117,110,105,49,69,65,65,7,117,110,105,49,69,65,67,7,117,110,105,49,69,65,69,7,117,110,105,49,69,66,48,7,117,110,105,49,69,66,50,7,117,110,105,49,69,66,52,7,117,110,105,49,69,66,54,7,65,111,103,111,110,101,107,7,117,110,105,48,49,70,67,7,117,110,105,48,49,69,50,7,117,110,105,48,50,52,51,7,117,110,105,49,69,48,54,11,67,99,105,114,99,117,109,102,108,101,120,10,67,100,111,116,97,99,99,101,110,116,6,68,99,97,114,111,110,7,117,110,105,49,69,48,67,7,117,110,105,49,69,48,69,6,68,99,114,111,97,116,6,69,99,97,114,111,110,7,69,109,97,99,114,111,110,6,69,98,114,101,118,101,10,69,100,111,116,97,99,99,101,110,116,7,117,110,105,49,69,66,56,7,117,110,105,49,69,66,65,7,117,110,105,49,69,66,67,7,117,110,105,49,69,66,69,7,117,110,105,49,69,67,48,7,117,110,105,49,69,67,50,7,117,110,105,49,69,67,52,7,117,110,105,49,69,67,54,7,69,111,103,111,110,101,107,7,117,110,105,49,69,49,54,7,117,110,105,48,49,70,52,11,71,99,105,114,99,117,109,102,108,101,120,10,71,100,111,116,97,99,99,101,110,116,7,117,110,105,48,49,50,50,6,71,99,97,114,111,110,7,117,110,105,49,69,50,48,11,117,110,105,48,48,52,55,48,51,48,51,7,117,110,105,48,49,57,51,11,72,99,105,114,99,117,109,102,108,101,120,7,117,110,105,49,69,50,52,7,117,110,105,49,69,50,65,4,72,98,97,114,6,73,116,105,108,100,101,7,73,109,97,99,114,111,110,7,117,110,105,48,49,67,70,7,117,110,105,49,69,67,56,7,117,110,105,49,69,67,65,7,73,111,103,111,110,101,107,7,117,110,105,48,49,50,67,11,74,99,105,114,99,117,109,102,108,101,120,7,117,110,105,48,49,51,54,7,117,110,105,49,69,51,50,7,117,110,105,49,69,51,52,6,76,97,99,117,116,101,6,76,99,97,114,111,110,7,117,110,105,48,49,51,66,4,76,100,111,116,7,117,110,105,49,69,51,54,7,117,110,105,49,69,51,56,7,117,110,105,49,69,51,65,7,117,110,105,49,69,51,69,7,117,110,105,49,69,52,48,7,117,110,105,49,69,52,50,6,78,97,99,117,116,101,7,117,110,105,48,49,70,56,6,78,99,97,114,111,110,7,117,110,105,48,49,52,53,7,117,110,105,49,69,52,52,7,117,110,105,49,69,52,54,7,117,110,105,49,69,52,56,7,79,109,97,99,114,111,110,13,79,104,117,110,103,97,114,117,109,108,97,117,116,7,117,110,105,48,49,68,49,7,117,110,105,49,69,67,67,7,117,110,105,49,69,67,69,7,117,110,105,49,69,68,48,7,117,110,105,49,69,68,50,7,117,110,105,49,69,68,52,7,117,110,105,49,69,68,54,7,117,110,105,49,69,68,56,7,117,110,105,48,49,52,69,7,117,110,105,49,69,53,50,5,79,104,111,114,110,7,117,110,105,49,69,68,65,7,117,110,105,49,69,68,67,7,117,110,105,49,69,68,69,7,117,110,105,49,69,69,48,7,117,110,105,49,69,69,50,7,117,110,105,48,49,69,65,6,82,97,99,117,116,101,6,82,99,97,114,111,110,7,117,110,105,49,69,53,56,7,117,110,105,48,49,53,54,7,117,110,105,49,69,53,65,7,117,110,105,49,69,53,67,7,117,110,105,49,69,53,69,6,83,97,99,117,116,101,11,83,99,105,114,99,117,109,102,108,101,120,7,117,110,105,48,49,53,69,7,117,110,105,48,50,49,56,7,117,110,105,49,69,54,48,7,117,110,105,49,69,54,50,7,117,110,105,49,69,57,69,6,84,99,97,114,111,110,7,117,110,105,48,49,54,50,7,117,110,105,48,50,49,65,7,117,110,105,49,69,54,67,7,117,110,105,49,69,54,69,7,117,110,105,48,49,54,54,6,85,116,105,108,100,101,7,85,109,97,99,114,111,110,6,85,98,114,101,118,101,5,85,114,105,110,103,13,85,104,117,110,103,97,114,117,109,108,97,117,116,7,117,110,105,48,49,68,51,7,117,110,105,48,49,68,53,7,117,110,105,48,49,68,55,7,117,110,105,48,49,68,57,7,117,110,105,48,49,68,66,7,117,110,105,49,69,69,52,7,117,110,105,49,69,69,54,7,85,111,103,111,110,101,107,5,85,104,111,114,110,7,117,110,105,49,69,69,56,7,117,110,105,49,69,69,65,7,117,110,105,49,69,69,67,7,117,110,105,49,69,69,69,7,117,110,105,49,69,70,48,6,87,103,114,97,118,101,6,87,97,99,117,116,101,11,87,99,105,114,99,117,109,102,108,101,120,9,87,100,105,101,114,101,115,105,115,6,89,103,114,97,118,101,11,89,99,105,114,99,117,109,102,108,101,120,7,117,110,105,49,69,56,69,7,117,110,105,49,69,70,52,7,117,110,105,49,69,70,54,7,117,110,105,49,69,70,56,6,90,97,99,117,116,101,10,90,100,111,116,97,99,99,101,110,116,7,117,110,105,49,69,57,50,7,117,110,105,49,69,57,52,7,117,110,105,48,49,56,70,7,117,110,105,48,49,52,65,7,117,110,105,48,49,51,50,7,97,109,97,99,114,111,110,6,97,98,114,101,118,101,7,117,110,105,48,49,67,69,7,117,110,105,49,69,65,49,7,117,110,105,49,69,65,51,7,117,110,105,49,69,65,53,7,117,110,105,49,69,65,55,7,117,110,105,49,69,65,57,7,117,110,105,49,69,65,66,7,117,110,105,49,69,65,68,7,117,110,105,49,69,65,70,7,117,110,105,49,69,66,49,7,117,110,105,49,69,66,51,7,117,110,105,49,69,66,53,7,117,110,105,49,69,66,55,7,97,111,103,111,110,101,107,7,117,110,105,48,49,70,68,7,117,110,105,48,49,69,51,7,117,110,105,48,49,56,48,7,117,110,105,49,69,48,55,11,99,99,105,114,99,117,109,102,108,101,120,10,99,100,111,116,97,99,99,101,110,116,6,100,99,97,114,111,110,7,117,110,105,49,69,48,68,7,117,110,105,49,69,48,70,6,101,99,97,114,111,110,7,101,109,97,99,114,111,110,6,101,98,114,101,118,101,10,101,100,111,116,97,99,99,101,110,116,7,117,110,105,49,69,66,57,7,117,110,105,49,69,66,66,7,117,110,105,49,69,66,68,7,117,110,105,49,69,66,70,7,117,110,105,49,69,67,49,7,117,110,105,49,69,67,51,7,117,110,105,49,69,67,53,7,117,110,105,49,69,67,55,7,101,111,103,111,110,101,107,7,117,110,105,49,69,49,55,7,117,110,105,48,49,70,53,11,103,99,105,114,99,117,109,102,108,101,120,10,103,100,111,116,97,99,99,101,110,116,7,117,110,105,48,49,50,51,6,103,99,97,114,111,110,7,117,110,105,49,69,50,49,11,117,110,105,48,48,54,55,48,51,48,51,11,104,99,105,114,99,117,109,102,108,101,120,7,117,110,105,49,69,50,53,7,117,110,105,49,69,57,54,7,117,110,105,49,69,50,66,4,104,98,97,114,6,105,116,105,108,100,101,7,105,109,97,99,114,111,110,7,117,110,105,48,49,68,48,7,117,110,105,49,69,67,57,7,117,110,105,49,69,67,66,7,105,111,103,111,110,101,107,9,105,111,103,111,110,101,107,46,100,7,117,110,105,48,49,50,68,11,106,99,105,114,99,117,109,102,108,101,120,7,117,110,105,48,49,51,55,7,117,110,105,49,69,51,51,7,117,110,105,49,69,51,53,12,107,103,114,101,101,110,108,97,110,100,105,99,6,108,97,99,117,116,101,6,108,99,97,114,111,110,4,108,100,111,116,7,117,110,105,48,49,51,67,7,117,110,105,49,69,51,55,7,117,110,105,49,69,51,57,7,117,110,105,49,69,51,66,7,117,110,105,49,69,51,70,7,117,110,105,49,69,52,49,7,117,110,105,49,69,52,51,6,110,97,99,117,116,101,7,117,110,105,48,49,70,57,6,110,99,97,114,111,110,7,117,110,105,48,49,52,54,7,117,110,105,49,69,52,53,7,117,110,105,49,69,52,55,7,117,110,105,49,69,52,57,11,110,97,112,111,115,116,114,111,112,104,101,7,111,109,97,99,114,111,110,13,111,104,117,110,103,97,114,117,109,108,97,117,116,7,117,110,105,48,49,68,50,7,117,110,105,49,69,67,68,7,117,110,105,49,69,67,70,7,117,110,105,49,69,68,49,7,117,110,105,49,69,68,51,7,117,110,105,49,69,68,53,7,117,110,105,49,69,68,55,7,117,110,105,49,69,68,57,7,117,110,105,48,49,52,70,7,117,110,105,49,69,53,51,5,111,104,111,114,110,7,117,110,105,49,69,68,66,7,117,110,105,49,69,68,68,7,117,110,105,49,69,68,70,7,117,110,105,49,69,69,49,7,117,110,105,49,69,69,51,7,117,110,105,48,49,69,66,6,114,97,99,117,116,101,7,117,110,105,48,49,53,55,6,114,99,97,114,111,110,7,117,110,105,49,69,53,57,7,117,110,105,49,69,53,66,7,117,110,105,49,69,53,68,7,117,110,105,49,69,53,70,6,115,97,99,117,116,101,11,115,99,105,114,99,117,109,102,108,101,120,7,117,110,105,48,49,53,70,7,117,110,105,48,50,49,57,7,117,110,105,49,69,54,49,7,117,110,105,49,69,54,51,6,116,99,97,114,111,110,7,117,110,105,48,49,54,51,7,117,110,105,48,50,49,66,7,117,110,105,49,69,54,68,7,117,110,105,49,69,54,70,7,117,110,105,49,69,57,55,7,117,110,105,48,49,54,55,6,117,116,105,108,100,101,7,117,109,97,99,114,111,110,6,117,98,114,101,118,101,5,117,114,105,110,103,13,117,104,117,110,103,97,114,117,109,108,97,117,116,7,117,110,105,48,49,68,52,7,117,110,105,48,49,68,54,7,117,110,105,48,49,68,56,7,117,110,105,48,49,68,65,7,117,110,105,48,49,68,67,7,117,110,105,49,69,69,53,7,117,110,105,49,69,69,55,7,117,111,103,111,110,101,107,5,117,104,111,114,110,7,117,110,105,49,69,69,57,7,117,110,105,49,69,69,66,7,117,110,105,49,69,69,68,7,117,110,105,49,69,69,70,7,117,110,105,49,69,70,49,6,119,103,114,97,118,101,6,119,97,99,117,116,101,11,119,99,105,114,99,117,109,102,108,101,120,9,119,100,105,101,114,101,115,105,115,6,121,103,114,97,118,101,11,121,99,105,114,99,117,109,102,108,101,120,7,117,110,105,49,69,56,70,7,117,110,105,49,69,70,53,7,117,110,105,49,69,70,55,7,117,110,105,49,69,70,57,6,122,97,99,117,116,101,10,122,100,111,116,97,99,99,101,110,116,7,117,110,105,49,69,57,51,7,117,110,105,49,69,57,53,7,117,110,105,48,49,52,66,7,117,110,105,48,50,51,55,7,117,110,105,48,49,51,51,7,117,110,105,48,50,53,48,7,117,110,105,48,50,53,50,7,117,110,105,48,50,53,51,7,117,110,105,48,50,53,52,7,117,110,105,48,50,53,53,7,117,110,105,48,50,53,54,7,117,110,105,48,50,53,55,7,117,110,105,48,50,53,56,7,117,110,105,48,50,53,49,7,117,110,105,48,50,57,57,7,117,110,105,48,50,53,57,7,117,110,105,48,50,53,65,7,117,110,105,48,50,53,66,7,117,110,105,48,50,53,67,7,117,110,105,48,50,53,69,7,117,110,105,48,50,53,70,7,117,110,105,48,50,54,48,7,117,110,105,48,50,54,49,7,117,110,105,48,50,54,50,7,117,110,105,48,50,54,51,7,117,110,105,48,50,54,52,7,117,110,105,48,50,54,53,7,117,110,105,48,50,54,54,7,117,110,105,48,50,54,55,7,117,110,105,48,50,57,67,7,117,110,105,48,50,54,56,7,117,110,105,48,50,54,65,7,117,110,105,48,50,57,68,7,117,110,105,48,50,54,67,7,117,110,105,48,50,54,68,7,117,110,105,48,50,54,69,7,117,110,105,48,50,57,70,7,117,110,105,48,50,54,70,7,117,110,105,48,50,55,48,7,117,110,105,48,50,55,49,7,117,110,105,48,50,55,50,7,117,110,105,48,50,55,51,7,117,110,105,48,50,55,52,7,117,110,105,48,50,55,53,7,117,110,105,48,50,55,54,7,117,110,105,48,50,55,56,7,117,110,105,48,50,55,57,7,117,110,105,48,50,55,65,7,117,110,105,48,50,55,66,7,117,110,105,48,50,55,68,7,117,110,105,48,50,55,69,7,117,110,105,48,50,56,48,7,117,110,105,48,50,56,49,7,117,110,105,48,50,56,50,7,117,110,105,48,50,56,51,7,117,110,105,48,50,56,52,7,117,110,105,48,50,56,56,7,117,110,105,48,50,56,57,7,117,110,105,48,50,56,65,7,117,110,105,48,50,56,66,7,117,110,105,48,50,56,67,7,117,110,105,48,50,56,68,7,117,110,105,48,50,56,69,7,117,110,105,48,50,56,70,7,117,110,105,48,50,57,48,7,117,110,105,48,50,57,49,7,117,110,105,48,50,57,50,7,117,110,105,48,50,57,52,7,117,110,105,48,50,57,53,7,117,110,105,48,50,65,49,7,117,110,105,48,50,65,50,7,117,110,105,48,49,67,50,7,117,110,105,48,50,57,56,3,102,95,102,5,102,95,102,95,105,5,102,95,102,95,108,3,102,95,116,5,102,95,102,95,116,3,73,46,97,8,73,103,114,97,118,101,46,97,8,73,97,99,117,116,101,46,97,13,73,99,105,114,99,117,109,102,108,101,120,46,97,8,73,116,105,108,100,101,46,97,11,73,100,105,101,114,101,115,105,115,46,97,9,73,109,97,99,114,111,110,46,97,12,73,100,111,116,97,99,99,101,110,116,46,97,9,117,110,105,48,49,67,70,46,97,9,117,110,105,49,69,67,56,46,97,9,117,110,105,49,69,67,65,46,97,9,73,111,103,111,110,101,107,46,97,9,117,110,105,48,49,50,67,46,97,9,117,110,105,48,49,52,65,46,97,3,97,46,97,8,97,103,114,97,118,101,46,97,8,97,97,99,117,116,101,46,97,13,97,99,105,114,99,117,109,102,108,101,120,46,97,8,97,116,105,108,100,101,46,97,11,97,100,105,101,114,101,115,105,115,46,97,9,97,109,97,99,114,111,110,46,97,8,97,98,114,101,118,101,46,97,7,97,114,105,110,103,46,97,9,117,110,105,48,49,67,69,46,97,9,117,110,105,49,69,65,49,46,97,9,117,110,105,49,69,65,51,46,97,9,117,110,105,49,69,65,53,46,97,9,117,110,105,49,69,65,55,46,97,9,117,110,105,49,69,65,57,46,97,9,117,110,105,49,69,65,66,46,97,9,117,110,105,49,69,65,68,46,97,9,117,110,105,49,69,65,70,46,97,9,117,110,105,49,69,66,49,46,97,9,117,110,105,49,69,66,51,46,97,9,117,110,105,49,69,66,53,46,97,9,117,110,105,49,69,66,55,46,97,9,97,111,103,111,110,101,107,46,97,3,103,46,97,9,117,110,105,48,49,70,53,46,97,13,103,99,105,114,99,117,109,102,108,101,120,46,97,8,103,98,114,101,118,101,46,97,12,103,100,111,116,97,99,99,101,110,116,46,97,9,117,110,105,48,49,50,51,46,97,8,103,99,97,114,111,110,46,97,9,117,110,105,49,69,50,49,46,97,13,117,110,105,48,48,54,55,48,51,48,51,46,97,3,108,46,97,8,108,97,99,117,116,101,46,97,8,108,99,97,114,111,110,46,97,6,108,100,111,116,46,97,9,117,110,105,48,49,51,67,46,97,9,117,110,105,49,69,51,55,46,97,9,117,110,105,49,69,51,57,46,97,9,117,110,105,49,69,51,66,46,97,8,108,115,108,97,115,104,46,97,4,102,108,46,97,5,65,108,112,104,97,4,66,101,116,97,5,71,97,109,109,97,7,117,110,105,48,51,57,52,7,69,112,115,105,108,111,110,4,90,101,116,97,3,69,116,97,5,84,104,101,116,97,4,73,111,116,97,5,75,97,112,112,97,6,76,97,109,98,100,97,2,77,117,2,78,117,2,88,105,7,79,109,105,99,114,111,110,2,80,105,3,82,104,111,5,83,105,103,109,97,3,84,97,117,7,85,112,115,105,108,111,110,3,80,104,105,3,67,104,105,3,80,115,105,7,117,110,105,48,51,65,57,10,65,108,112,104,97,116,111,110,111,115,12,69,112,115,105,108,111,110,116,111,110,111,115,8,69,116,97,116,111,110,111,115,9,73,111,116,97,116,111,110,111,115,12,73,111,116,97,100,105,101,114,101,115,105,115,12,79,109,105,99,114,111,110,116,111,110,111,115,12,85,112,115,105,108,111,110,116,111,110,111,115,15,85,112,115,105,108,111,110,100,105,101,114,101,115,105,115,10,79,109,101,103,97,116,111,110,111,115,5,97,108,112,104,97,4,98,101,116,97,5,103,97,109,109,97,5,100,101,108,116,97,7,101,112,115,105,108,111,110,4,122,101,116,97,3,101,116,97,5,116,104,101,116,97,4,105,111,116,97,5,107,97,112,112,97,6,108,97,109,98,100,97,7,117,110,105,48,51,66,67,2,110,117,2,120,105,7,111,109,105,99,114,111,110,3,114,104,111,5,115,105,103,109,97,3,116,97,117,7,117,112,115,105,108,111,110,3,112,104,105,3,99,104,105,3,112,115,105,5,111,109,101,103,97,7,117,110,105,48,51,67,50,7,117,110,105,48,51,68,48,7,117,110,105,48,51,68,49,7,117,110,105,48,51,68,53,10,97,108,112,104,97,116,111,110,111,115,12,101,112,115,105,108,111,110,116,111,110,111,115,8,101,116,97,116,111,110,111,115,9,105,111,116,97,116,111,110,111,115,12,105,111,116,97,100,105,101,114,101,115,105,115,12,111,109,105,99,114,111,110,116,111,110,111,115,12,117,112,115,105,108,111,110,116,111,110,111,115,15,117,112,115,105,108,111,110,100,105,101,114,101,115,105,115,10,111,109,101,103,97,116,111,110,111,115,17,105,111,116,97,100,105,101,114,101,115,105,115,116,111,110,111,115,20,117,112,115,105,108,111,110,100,105,101,114,101,115,105,115,116,111,110,111,115,7,117,110]);fileData0.push.apply(fileData0,[105,49,70,48,56,7,117,110,105,49,70,48,57,7,117,110,105,49,70,66,65,7,117,110,105,49,70,66,66,7,117,110,105,49,70,48,65,7,117,110,105,49,70,48,66,7,117,110,105,49,70,48,67,7,117,110,105,49,70,48,68,7,117,110,105,49,70,48,69,7,117,110,105,49,70,48,70,7,117,110,105,49,70,66,56,7,117,110,105,49,70,66,57,7,117,110,105,49,70,49,56,7,117,110,105,49,70,49,57,7,117,110,105,49,70,67,56,7,117,110,105,49,70,67,57,7,117,110,105,49,70,49,65,7,117,110,105,49,70,49,66,7,117,110,105,49,70,49,67,7,117,110,105,49,70,49,68,7,117,110,105,49,70,50,56,7,117,110,105,49,70,50,57,7,117,110,105,49,70,67,65,7,117,110,105,49,70,67,66,7,117,110,105,49,70,50,65,7,117,110,105,49,70,50,66,7,117,110,105,49,70,50,67,7,117,110,105,49,70,50,68,7,117,110,105,49,70,50,69,7,117,110,105,49,70,50,70,7,117,110,105,49,70,51,56,7,117,110,105,49,70,51,57,7,117,110,105,49,70,68,65,7,117,110,105,49,70,68,66,7,117,110,105,49,70,51,65,7,117,110,105,49,70,51,66,7,117,110,105,49,70,51,67,7,117,110,105,49,70,51,68,7,117,110,105,49,70,51,69,7,117,110,105,49,70,51,70,7,117,110,105,49,70,68,56,7,117,110,105,49,70,68,57,7,117,110,105,49,70,52,56,7,117,110,105,49,70,52,57,7,117,110,105,49,70,70,56,7,117,110,105,49,70,70,57,7,117,110,105,49,70,52,65,7,117,110,105,49,70,52,66,7,117,110,105,49,70,52,67,7,117,110,105,49,70,52,68,7,117,110,105,49,70,69,67,7,117,110,105,49,70,53,57,7,117,110,105,49,70,69,65,7,117,110,105,49,70,69,66,7,117,110,105,49,70,53,66,7,117,110,105,49,70,53,68,7,117,110,105,49,70,53,70,7,117,110,105,49,70,69,56,7,117,110,105,49,70,69,57,7,117,110,105,49,70,54,56,7,117,110,105,49,70,54,57,7,117,110,105,49,70,70,65,7,117,110,105,49,70,70,66,7,117,110,105,49,70,54,65,7,117,110,105,49,70,54,66,7,117,110,105,49,70,54,67,7,117,110,105,49,70,54,68,7,117,110,105,49,70,54,69,7,117,110,105,49,70,54,70,7,117,110,105,49,70,66,67,7,117,110,105,49,70,56,56,7,117,110,105,49,70,56,57,7,117,110,105,49,70,56,65,7,117,110,105,49,70,56,66,7,117,110,105,49,70,56,67,7,117,110,105,49,70,56,68,7,117,110,105,49,70,56,69,7,117,110,105,49,70,56,70,7,117,110,105,49,70,67,67,7,117,110,105,49,70,57,56,7,117,110,105,49,70,57,57,7,117,110,105,49,70,57,65,7,117,110,105,49,70,57,66,7,117,110,105,49,70,57,67,7,117,110,105,49,70,57,68,7,117,110,105,49,70,57,69,7,117,110,105,49,70,57,70,7,117,110,105,49,70,70,67,7,117,110,105,49,70,65,56,7,117,110,105,49,70,65,57,7,117,110,105,49,70,65,65,7,117,110,105,49,70,65,66,7,117,110,105,49,70,65,67,7,117,110,105,49,70,65,68,7,117,110,105,49,70,65,69,7,117,110,105,49,70,65,70,7,117,110,105,49,70,48,48,7,117,110,105,49,70,48,49,7,117,110,105,49,70,55,48,7,117,110,105,49,70,55,49,7,117,110,105,49,70,48,50,7,117,110,105,49,70,48,51,7,117,110,105,49,70,48,52,7,117,110,105,49,70,48,53,7,117,110,105,49,70,48,54,7,117,110,105,49,70,48,55,7,117,110,105,49,70,66,48,7,117,110,105,49,70,66,49,7,117,110,105,49,70,66,54,7,117,110,105,49,70,49,48,7,117,110,105,49,70,49,49,7,117,110,105,49,70,55,50,7,117,110,105,49,70,55,51,7,117,110,105,49,70,49,50,7,117,110,105,49,70,49,51,7,117,110,105,49,70,49,52,7,117,110,105,49,70,49,53,7,117,110,105,49,70,50,48,7,117,110,105,49,70,50,49,7,117,110,105,49,70,55,52,7,117,110,105,49,70,55,53,7,117,110,105,49,70,50,50,7,117,110,105,49,70,50,51,7,117,110,105,49,70,50,52,7,117,110,105,49,70,50,53,7,117,110,105,49,70,50,54,7,117,110,105,49,70,50,55,7,117,110,105,49,70,67,54,7,117,110,105,49,70,51,48,7,117,110,105,49,70,51,49,7,117,110,105,49,70,55,54,7,117,110,105,49,70,55,55,7,117,110,105,49,70,51,50,7,117,110,105,49,70,51,51,7,117,110,105,49,70,51,52,7,117,110,105,49,70,51,53,7,117,110,105,49,70,51,54,7,117,110,105,49,70,51,55,7,117,110,105,49,70,68,48,7,117,110,105,49,70,68,49,7,117,110,105,49,70,68,54,7,117,110,105,49,70,68,50,7,117,110,105,49,70,68,51,7,117,110,105,49,70,68,55,7,117,110,105,49,70,52,48,7,117,110,105,49,70,52,49,7,117,110,105,49,70,55,56,7,117,110,105,49,70,55,57,7,117,110,105,49,70,52,50,7,117,110,105,49,70,52,51,7,117,110,105,49,70,52,52,7,117,110,105,49,70,52,53,7,117,110,105,49,70,69,52,7,117,110,105,49,70,69,53,7,117,110,105,49,70,53,48,7,117,110,105,49,70,53,49,7,117,110,105,49,70,55,65,7,117,110,105,49,70,55,66,7,117,110,105,49,70,53,50,7,117,110,105,49,70,53,51,7,117,110,105,49,70,53,52,7,117,110,105,49,70,53,53,7,117,110,105,49,70,53,54,7,117,110,105,49,70,53,55,7,117,110,105,49,70,69,54,7,117,110,105,49,70,69,48,7,117,110,105,49,70,69,49,7,117,110,105,49,70,69,50,7,117,110,105,49,70,69,51,7,117,110,105,49,70,69,55,7,117,110,105,49,70,54,48,7,117,110,105,49,70,54,49,7,117,110,105,49,70,55,67,7,117,110,105,49,70,55,68,7,117,110,105,49,70,54,50,7,117,110,105,49,70,54,51,7,117,110,105,49,70,54,52,7,117,110,105,49,70,54,53,7,117,110,105,49,70,54,54,7,117,110,105,49,70,54,55,7,117,110,105,49,70,70,54,7,117,110,105,49,70,66,51,7,117,110,105,49,70,56,48,7,117,110,105,49,70,56,49,7,117,110,105,49,70,66,50,7,117,110,105,49,70,66,52,7,117,110,105,49,70,56,50,7,117,110,105,49,70,56,51,7,117,110,105,49,70,56,52,7,117,110,105,49,70,56,53,7,117,110,105,49,70,56,54,7,117,110,105,49,70,56,55,7,117,110,105,49,70,66,55,7,117,110,105,49,70,67,51,7,117,110,105,49,70,57,48,7,117,110,105,49,70,57,49,7,117,110,105,49,70,67,50,7,117,110,105,49,70,67,52,7,117,110,105,49,70,57,50,7,117,110,105,49,70,57,51,7,117,110,105,49,70,57,52,7,117,110,105,49,70,57,53,7,117,110,105,49,70,57,54,7,117,110,105,49,70,57,55,7,117,110,105,49,70,67,55,7,117,110,105,49,70,70,51,7,117,110,105,49,70,65,48,7,117,110,105,49,70,65,49,7,117,110,105,49,70,70,50,7,117,110,105,49,70,70,52,7,117,110,105,49,70,65,50,7,117,110,105,49,70,65,51,7,117,110,105,49,70,65,52,7,117,110,105,49,70,65,53,7,117,110,105,49,70,65,54,7,117,110,105,49,70,65,55,7,117,110,105,49,70,70,55,7,117,110,105,48,51,68,55,7,117,110,105,48,51,68,57,7,117,110,105,48,51,68,66,7,117,110,105,48,51,68,68,7,117,110,105,48,51,69,49,7,117,110,105,48,51,55,69,9,97,110,111,116,101,108,101,105,97,13,97,110,111,116,101,108,101,105,97,46,99,97,112,7,117,110,105,48,51,55,52,7,117,110,105,48,51,55,53,5,116,111,110,111,115,9,116,111,110,111,115,46,99,97,112,13,100,105,101,114,101,115,105,115,116,111,110,111,115,7,117,110,105,48,51,55,65,7,117,110,105,49,70,66,69,7,117,110,105,49,70,66,68,7,117,110,105,49,70,66,70,7,117,110,105,49,70,70,69,7,117,110,105,49,70,69,70,7,117,110,105,49,70,70,68,7,117,110,105,49,70,67,68,7,117,110,105,49,70,68,68,7,117,110,105,49,70,67,69,7,117,110,105,49,70,68,69,7,117,110,105,49,70,67,70,7,117,110,105,49,70,68,70,7,117,110,105,49,70,67,48,7,117,110,105,49,70,69,68,7,117,110,105,49,70,69,69,7,117,110,105,49,70,67,49,11,117,110,105,49,70,66,68,46,99,97,112,11,117,110,105,49,70,70,69,46,99,97,112,11,117,110,105,49,70,69,70,46,99,97,112,11,117,110,105,49,70,70,68,46,99,97,112,11,117,110,105,49,70,67,68,46,99,97,112,11,117,110,105,49,70,68,68,46,99,97,112,11,117,110,105,49,70,67,69,46,99,97,112,11,117,110,105,49,70,68,69,46,99,97,112,11,117,110,105,49,70,67,70,46,99,97,112,11,117,110,105,49,70,68,70,46,99,97,112,7,117,110,105,48,52,49,48,7,117,110,105,48,52,49,49,7,117,110,105,48,52,49,50,7,117,110,105,48,52,49,51,7,117,110,105,48,52,49,52,7,117,110,105,48,52,49,53,7,117,110,105,48,52,49,54,9,117,110,105,48,52,49,54,46,97,9,117,110,105,48,52,49,54,46,98,7,117,110,105,48,52,49,55,7,117,110,105,48,52,49,56,7,117,110,105,48,52,49,57,7,117,110,105,48,52,49,65,9,117,110,105,48,52,49,65,46,97,9,117,110,105,48,52,49,65,46,98,7,117,110,105,48,52,49,66,7,117,110,105,48,52,49,67,7,117,110,105,48,52,49,68,7,117,110,105,48,52,49,69,7,117,110,105,48,52,49,70,7,117,110,105,48,52,50,48,7,117,110,105,48,52,50,49,7,117,110,105,48,52,50,50,7,117,110,105,48,52,50,51,7,117,110,105,48,52,50,52,7,117,110,105,48,52,50,53,7,117,110,105,48,52,50,54,7,117,110,105,48,52,50,55,7,117,110,105,48,52,50,56,7,117,110,105,48,52,50,57,7,117,110,105,48,52,50,65,7,117,110,105,48,52,50,66,7,117,110,105,48,52,50,67,7,117,110,105,48,52,50,68,7,117,110,105,48,52,50,69,7,117,110,105,48,52,50,70,7,117,110,105,48,52,48,48,7,117,110,105,48,52,48,49,7,117,110,105,48,52,48,50,7,117,110,105,48,52,48,51,7,117,110,105,48,52,48,52,7,117,110,105,48,52,48,53,7,117,110,105,48,52,48,54,7,117,110,105,48,52,48,55,9,117,110,105,48,52,48,55,46,97,7,117,110,105,48,52,48,56,7,117,110,105,48,52,48,57,7,117,110,105,48,52,48,65,7,117,110,105,48,52,48,66,7,117,110,105,48,52,48,67,9,117,110,105,48,52,48,67,46,97,9,117,110,105,48,52,48,67,46,98,7,117,110,105,48,52,48,68,7,117,110,105,48,52,48,69,7,117,110,105,48,52,48,70,7,117,110,105,48,52,54,50,7,117,110,105,48,52,55,50,7,117,110,105,48,52,55,52,7,117,110,105,48,52,57,48,7,117,110,105,48,52,57,50,7,117,110,105,48,52,57,54,9,117,110,105,48,52,57,54,46,97,9,117,110,105,48,52,57,54,46,98,7,117,110,105,48,52,57,56,7,117,110,105,48,52,57,65,9,117,110,105,48,52,57,65,46,97,9,117,110,105,48,52,57,65,46,98,7,117,110,105,48,52,65,48,9,117,110,105,48,52,65,48,46,97,9,117,110,105,48,52,65,48,46,98,7,117,110,105,48,52,65,50,7,117,110,105,48,52,65,65,7,117,110,105,48,52,65,69,7,117,110,105,48,52,66,48,7,117,110,105,48,52,66,50,7,117,110,105,48,52,66,54,7,117,110,105,48,52,66,65,7,117,110,105,48,52,67,48,7,117,110,105,48,52,67,49,9,117,110,105,48,52,67,49,46,97,9,117,110,105,48,52,67,49,46,98,7,117,110,105,48,52,68,48,7,117,110,105,48,52,68,52,7,117,110,105,48,52,68,54,7,117,110,105,48,52,68,56,7,117,110,105,48,52,69,50,7,117,110,105,48,52,69,54,7,117,110,105,48,52,69,56,7,117,110,105,48,52,69,69,7,117,110,105,48,52,70,50,7,117,110,105,48,52,51,48,7,117,110,105,48,52,51,49,7,117,110,105,48,52,51,50,7,117,110,105,48,52,51,51,7,117,110,105,48,52,51,52,7,117,110,105,48,52,51,53,7,117,110,105,48,52,51,54,9,117,110,105,48,52,51,54,46,97,9,117,110,105,48,52,51,54,46,98,7,117,110,105,48,52,51,55,7,117,110,105,48,52,51,56,7,117,110,105,48,52,51,57,7,117,110,105,48,52,51,65,9,117,110,105,48,52,51,65,46,97,9,117,110,105,48,52,51,65,46,98,7,117,110,105,48,52,51,66,7,117,110,105,48,52,51,67,7,117,110,105,48,52,51,68,7,117,110,105,48,52,51,69,7,117,110,105,48,52,51,70,7,117,110,105,48,52,52,48,7,117,110,105,48,52,52,49,7,117,110,105,48,52,52,50,7,117,110,105,48,52,52,51,7,117,110,105,48,52,52,52,7,117,110,105,48,52,52,53,7,117,110,105,48,52,52,54,7,117,110,105,48,52,52,55,7,117,110,105,48,52,52,56,7,117,110,105,48,52,52,57,7,117,110,105,48,52,52,65,7,117,110,105,48,52,52,66,7,117,110,105,48,52,52,67,7,117,110,105,48,52,52,68,7,117,110,105,48,52,52,69,7,117,110,105,48,52,52,70,7,117,110,105,48,52,53,48,7,117,110,105,48,52,53,49,7,117,110,105,48,52,53,50,7,117,110,105,48,52,53,51,7,117,110,105,48,52,53,52,7,117,110,105,48,52,53,53,7,117,110,105,48,52,53,54,7,117,110,105,48,52,53,55,9,117,110,105,48,52,53,55,46,97,7,117,110,105,48,52,53,56,7,117,110,105,48,52,53,57,7,117,110,105,48,52,53,65,7,117,110,105,48,52,53,66,7,117,110,105,48,52,53,67,9,117,110,105,48,52,53,67,46,97,9,117,110,105,48,52,53,67,46,98,7,117,110,105,48,52,53,68,7,117,110,105,48,52,53,69,7,117,110,105,48,52,53,70,7,117,110,105,48,52,54,51,7,117,110,105,48,52,55,51,7,117,110,105,48,52,55,53,7,117,110,105,48,52,57,49,7,117,110,105,48,52,57,51,7,117,110,105,48,52,57,55,9,117,110,105,48,52,57,55,46,97,9,117,110,105,48,52,57,55,46,98,7,117,110,105,48,52,57,57,7,117,110,105,48,52,57,66,9,117,110,105,48,52,57,66,46,97,9,117,110,105,48,52,57,66,46,98,7,117,110,105,48,52,65,49,9,117,110,105,48,52,65,49,46,97,9,117,110,105,48,52,65,49,46,98,7,117,110,105,48,52,65,51,7,117,110,105,48,52,65,66,7,117,110,105,48,52,65,70,7,117,110,105,48,52,66,49,7,117,110,105,48,52,66,51,7,117,110,105,48,52,66,55,7,117,110,105,48,52,66,66,7,117,110,105,48,52,67,50,9,117,110,105,48,52,67,50,46,97,9,117,110,105,48,52,67,50,46,98,7,117,110,105,48,52,67,70,7,117,110,105,48,52,68,49,7,117,110,105,48,52,68,53,7,117,110,105,48,52,68,55,7,117,110,105,48,52,68,57,7,117,110,105,48,52,69,51,7,117,110,105,48,52,69,55,7,117,110,105,48,52,69,57,7,117,110,105,48,52,69,70,7,117,110,105,48,52,70,51,11,117,110,105,48,52,51,49,46,115,114,98,7,117,110,105,50,49,49,54,6,122,101,114,111,46,48,7,122,101,114,111,46,48,115,9,122,101,114,111,46,112,110,117,109,8,111,110,101,46,112,110,117,109,8,116,119,111,46,112,110,117,109,10,116,104,114,101,101,46,112,110,117,109,9,102,111,117,114,46,112,110,117,109,9,102,105,118,101,46,112,110,117,109,8,115,105,120,46,112,110,117,109,10,115,101,118,101,110,46,112,110,117,109,10,101,105,103,104,116,46,112,110,117,109,9,110,105,110,101,46,112,110,117,109,7,122,101,114,111,46,48,112,8,122,101,114,111,46,48,112,115,9,122,101,114,111,46,116,110,117,109,8,111,110,101,46,116,110,117,109,8,116,119,111,46,116,110,117,109,10,116,104,114,101,101,46,116,110,117,109,9,102,111,117,114,46,116,110,117,109,9,102,105,118,101,46,116,110,117,109,8,115,105,120,46,116,110,117,109,10,115,101,118,101,110,46,116,110,117,109,10,101,105,103,104,116,46,116,110,117,109,9,110,105,110,101,46,116,110,117,109,9,122,101,114,111,46,111,110,117,109,8,111,110,101,46,111,110,117,109,8,116,119,111,46,111,110,117,109,10,116,104,114,101,101,46,111,110,117,109,9,102,111,117,114,46,111,110,117,109,9,102,105,118,101,46,111,110,117,109,8,115,105,120,46,111,110,117,109,10,115,101,118,101,110,46,111,110,117,109,10,101,105,103,104,116,46,111,110,117,109,9,110,105,110,101,46,111,110,117,109,8,122,101,114,111,46,99,97,112,7,111,110,101,46,99,97,112,7,116,119,111,46,99,97,112,9,116,104,114,101,101,46,99,97,112,8,102,111,117,114,46,99,97,112,8,102,105,118,101,46,99,97,112,7,115,105,120,46,99,97,112,9,115,101,118,101,110,46,99,97,112,9,101,105,103,104,116,46,99,97,112,8,110,105,110,101,46,99,97,112,7,117,110,105,48,48,65,68,7,117,110,105,50,69,51,65,7,117,110,105,50,69,51,66,10,102,105,103,117,114,101,100,97,115,104,7,117,110,105,50,48,49,53,7,117,110,105,50,48,51,69,7,117,110,105,50,48,51,70,7,117,110,105,50,48,49,54,7,117,110,105,50,48,51,67,7,117,110,105,50,48,52,55,7,117,110,105,50,48,52,57,7,117,110,105,50,48,52,56,7,117,110,105,50,48,51,68,7,117,110,105,50,51,49,67,7,117,110,105,50,51,49,68,7,117,110,105,50,51,49,69,7,117,110,105,50,51,49,70,7,117,110,105,50,55,69,54,7,117,110,105,50,55,69,55,7,117,110,105,50,69,50,50,7,117,110,105,50,69,50,51,7,117,110,105,50,69,50,52,7,117,110,105,50,69,50,53,7,117,110,105,50,49,49,55,7,117,110,105,50,49,50,48,6,117,49,70,49,54,65,6,117,49,70,49,54,66,7,97,116,46,99,97,115,101,5,105,46,116,114,107,4,65,46,115,99,4,66,46,115,99,4,67,46,115,99,4,68,46,115,99,4,69,46,115,99,4,70,46,115,99,4,71,46,115,99,4,72,46,115,99,4,73,46,115,99,4,74,46,115,99,4,75,46,115,99,4,76,46,115,99,4,77,46,115,99,4,78,46,115,99,4,79,46,115,99,4,80,46,115,99,4,81,46,115,99,4,82,46,115,99,4,83,46,115,99,4,84,46,115,99,4,85,46,115,99,4,86,46,115,99,4,87,46,115,99,4,88,46,115,99,4,89,46,115,99,4,90,46,115,99,9,65,103,114,97,118,101,46,115,99,9,65,97,99,117,116,101,46,115,99,14,65,99,105,114,99,117,109,102,108,101,120,46,115,99,9,65,116,105,108,100,101,46,115,99,12,65,100,105,101,114,101,115,105,115,46,115,99,10,65,109,97,99,114,111,110,46,115,99,9,65,98,114,101,118,101,46,115,99,8,65,114,105,110,103,46,115,99,10,117,110,105,48,49,67,68,46,115,99,10,117,110,105,49,69,65,48,46,115,99,10,117,110,105,49,69,65,50,46,115,99,10,117,110,105,49,69,65,52,46,115,99,10,117,110,105,49,69,65,54,46,115,99,10,117,110,105,49,69,65,56,46,115,99,10,117,110,105,49,69,65,65,46,115,99,10,117,110,105,49,69,65,67,46,115,99,10,117,110,105,49,69,65,69,46,115,99,10,117,110,105,49,69,66,48,46,115,99,10,117,110,105,49,69,66,50,46,115,99,10,117,110,105,49,69,66,52,46,115,99,10,117,110,105,49,69,66,54,46,115,99,10,65,111,103,111,110,101,107,46,115,99,5,65,69,46,115,99,10,117,110,105,48,49,70,67,46,115,99,10,117,110,105,48,49,69,50,46,115,99,10,117,110,105,48,50,52,51,46,115,99,10,117,110,105,49,69,48,54,46,115,99,11,67,99,101,100,105,108,108,97,46,115,99,9,67,97,99,117,116,101,46,115,99,14,67,99,105,114,99,117,109,102,108,101,120,46,115,99,9,67,99,97,114,111,110,46,115,99,13,67,100,111,116,97,99,99,101,110,116,46,115,99,9,68,99,97,114,111,110,46,115,99,10,117,110,105,49,69,48,67,46,115,99,10,117,110,105,49,69,48,69,46,115,99,9,68,99,114,111,97,116,46,115,99,9,69,103,114,97,118,101,46,115,99,9,69,97,99,117,116,101,46,115,99,14,69,99,105,114,99,117,109,102,108,101,120,46,115,99,9,69,99,97,114,111,110,46,115,99,12,69,100,105,101,114,101,115,105,115,46,115,99,10,69,109,97,99,114,111,110,46,115,99,9,69,98,114,101,118,101,46,115,99,13,69,100,111,116,97,99,99,101,110,116,46,115,99,10,117,110,105,49,69,66,56,46,115,99,10,117,110,105,49,69,66,65,46,115,99,10,117,110,105,49,69,66,67,46,115,99,10,117,110,105,49,69,66,69,46,115,99,10,117,110,105,49,69,67,48,46,115,99,10,117,110,105,49,69,67,50,46,115,99,10,117,110,105,49,69,67,52,46,115,99,10,117,110,105,49,69,67,54,46,115,99,10,69,111,103,111,110,101,107,46,115,99,10,117,110,105,49,69,49,54,46,115,99,10,117,110,105,48,49,70,52,46,115,99,14,71,99,105,114,99,117,109,102,108,101,120,46,115,99,9,71,98,114,101,118,101,46,115,99,13,71,100,111,116,97,99,99,101,110,116,46,115,99,10,117,110,105,48,49,50,50,46,115,99,9,71,99,97,114,111,110,46,115,99,10,117,110,105,49,69,50,48,46,115,99,14,117,110,105,48,48,52,55,48,51,48,51,46,115,99,10,117,110,105,48,49,57,51,46,115,99,14,72,99,105,114,99,117,109,102,108,101,120,46,115,99,10,117,110,105,49,69,50,52,46,115,99,10,117,110,105,49,69,50,65,46,115,99,7,72,98,97,114,46,115,99,9,73,103,114,97,118,101,46,115,99,9,73,97,99,117,116,101,46,115,99,14,73,99,105,114,99,117,109,102,108,101,120,46,115,99,9,73,116,105,108,100,101,46,115,99,12,73,100,105,101,114,101,115,105,115,46,115,99,10,73,109,97,99,114,111,110,46,115,99,13,73,100,111,116,97,99,99,101,110,116,46,115,99,10,117,110,105,48,49,67,70,46,115,99,10,117,110,105,49,69,67,56,46,115,99,10,117,110,105,49,69,67,65,46,115,99,10,73,111,103,111,110,101,107,46,115,99,10,117,110,105,48,49,50,67,46,115,99,14,74,99,105,114,99,117,109,102,108,101,120,46,115,99,10,117,110,105,48,49,51,54,46,115,99,10,117,110,105,49,69,51,50,46,115,99,10,117,110,105,49,69,51,52,46,115,99,9,76,97,99,117,116,101,46,115,99,9,76,99,97,114,111,110,46,115,99,10,117,110,105,48,49,51,66,46,115,99,7,76,100,111,116,46,115,99,10,117,110,105,49,69,51,54,46,115,99,10,117,110,105,49,69,51,56,46,115,99,10,117,110,105,49,69,51,65,46,115,99,9,76,115,108,97,115,104,46,115,99,10,117,110,105,49,69,51,69,46,115,99,10,117,110,105,49,69,52,48,46,115,99,10,117,110,105,49,69,52,50,46,115,99,9,78,97,99,117,116,101,46,115,99,10,117,110,105,48,49,70,56,46,115,99,9,78,99,97,114,111,110,46,115,99,9,78,116,105,108,100,101,46,115,99,10,117,110,105,48,49,52,53,46,115,99,10,117,110,105,49,69,52,52,46,115,99,10,117,110,105,49,69,52,54,46,115,99,10,117,110,105,49,69,52,56,46,115,99,9,79,103,114,97,118,101,46,115,99,9,79,97,99,117,116,101,46,115,99,14,79,99,105,114,99,117,109,102,108,101,120,46,115,99,9,79,116,105,108,100,101,46,115,99,12,79,100,105,101,114,101,115,105,115,46,115,99,10,79,109,97,99,114,111,110,46,115,99,16,79,104,117,110,103,97,114,117,109,108,97,117,116,46,115,99,10,117,110,105,48,49,68,49,46,115,99,10,117,110,105,49,69,67,67,46,115,99,10,117,110,105,49,69,67,69,46,115,99,10,117,110,105,49,69,68,48,46,115,99,10,117,110,105,49,69,68,50,46,115,99,10,117,110,105,49,69,68,52,46,115,99,10,117,110,105,49,69,68,54,46,115,99,10,117,110,105,49,69,68,56,46,115,99,9,79,115,108,97,115,104,46,115,99,5,79,69,46,115,99,8,79,104,111,114,110,46,115,99,10,117,110,105,49,69,68,65,46,115,99,10,117,110,105,49,69,68,67,46,115,99,10,117,110,105,49,69,68,69,46,115,99,10,117,110,105,49,69,69,48,46,115,99,10,117,110,105,49,69,69,50,46,115,99,10,117,110,105,48,49,69,65,46,115,99,10,117,110,105,48,49,52,69,46,115,99,10,117,110,105,49,69,53,50,46,115,99,9,82,97,99,117,116,101,46,115,99,10,117,110,105,49,69,53,56,46,115,99,9,82,99,97,114,111,110,46,115,99,10,117,110,105,48,49,53,54,46,115,99,10,117,110,105,49,69,53,65,46,115,99,10,117,110,105,49,69,53,67,46,115,99,10,117,110,105,49,69,53,69,46,115,99,9,83,97,99,117,116,101,46,115,99,14,83,99,105,114,99,117,109,102,108,101,120,46,115,99,9,83,99,97,114,111,110,46,115,99,10,117,110,105,48,49,53,69,46,115,99,10,117,110,105,48,50,49,56,46,115,99,10,117,110,105,49,69,54,48,46,115,99,10,117,110,105,49,69,54,50,46,115,99,13,103,101,114,109,97,110,100,98,108,115,46,115,99,10,117,110,105,49,69,57,69,46,115,99,9,84,99,97,114,111,110,46,115,99,10,117,110,105,48,49,54,50,46,115,99,10,117,110,105,48,50,49,65,46,115,99,10,117,110,105,49,69,54,67,46,115,99,10,117,110,105,49,69,54,69,46,115,99,10,117,110,105,48,49,54,54,46,115,99,9,85,103,114,97,118,101,46,115,99,9,85,97,99,117,116,101,46,115,99,14,85,99,105,114,99,117,109,102,108,101,120,46,115,99,9,85,116,105,108,100,101,46,115,99,12,85,100,105,101,114,101,115,105,115,46,115,99,10,85,109,97,99,114,111,110,46,115,99,9,85,98,114,101,118,101,46,115,99,8,85,114,105,110,103,46,115,99,16,85,104,117,110,103,97,114,117,109,108,97,117,116,46,115,99,10,117,110,105,48,49,68,51,46,115,99,10,117,110,105,48,49,68,53,46,115,99,10,117,110,105,48,49,68,55,46,115,99,10,117,110,105,48,49,68,57,46,115,99,10,117,110,105,48,49,68,66,46,115,99,10,117,110,105,49,69,69,52,46,115,99,10,117,110,105,49,69,69,54,46,115,99,10,85,111,103,111,110,101,107,46,115,99,8,85,104,111,114,110,46,115,99,10,117,110,105,49,69,69,56,46,115,99,10,117,110,105,49,69,69,65,46,115,99,10,117,110,105,49,69,69,67,46,115,99,10,117,110,105,49,69,69,69,46,115,99,10,117,110,105,49,69,70,48,46,115,99,9,87,103,114,97,118,101,46,115,99,9,87,97,99,117,116,101,46,115,99,14,87,99,105,114,99,117,109,102,108,101,120,46,115,99,12,87,100,105,101,114,101,115,105,115,46,115,99,9,89,103,114,97,118,101,46,115,99,9,89,97,99,117,116,101,46,115,99,14,89,99,105,114,99,117,109,102,108,101,120,46,115,99,12,89,100,105,101,114,101,115,105,115,46,115,99,10,117,110,105,49,69,56,69,46,115,99,10,117,110,105,49,69,70,52,46,115,99,10,117,110,105,49,69,70,54,46,115,99,10,117,110,105,49,69,70,56,46,115,99,9,90,97,99,117,116,101,46,115,99,9,90,99,97,114,111,110,46,115,99,13,90,100,111,116,97,99,99,101,110,116,46,115,99,10,117,110,105,49,69,57,50,46,115,99,10,117,110,105,49,69,57,52,46,115,99,6,69,116,104,46,115,99,8,84,104,111,114,110,46,115,99,10,117,110,105,48,49,56,70,46,115,99,10,117,110,105,48,49,52,65,46,115,99,10,117,110,105,48,49,51,50,46,115,99,11,117,110,105,48,49,52,65,46,115,99,97,8,65,108,112,104,97,46,115,99,7,66,101,116,97,46,115,99,8,71,97,109,109,97,46,115,99,10,117,110,105,48,51,57,52,46,115,99,10,69,112,115,105,108,111,110,46,115,99,7,90,101,116,97,46,115,99,6,69,116,97,46,115,99,8,84,104,101,116,97,46,115,99,7,73,111,116,97,46,115,99,8,75,97,112,112,97,46,115,99,9,76,97,109,98,100,97,46,115,99,5,77,117,46,115,99,5,78,117,46,115,99,5,88,105,46,115,99,10,79,109,105,99,114,111,110,46,115,99,5,80,105,46,115,99,6,82,104,111,46,115,99,8,83,105,103,109,97,46,115,99,6,84,97,117,46,115,99,10,85,112,115,105,108,111,110,46,115,99,6,80,104,105,46,115,99,6,67,104,105,46,115,99,6,80,115,105,46,115,99,10,117,110,105,48,51,65,57,46,115,99,15,73,111,116,97,100,105,101,114,101,115,105,115,46,115,99,18,85,112,115,105,108,111,110,100,105,101,114,101,115,105,115,46,115,99,15,65,108,112,104,97,105,111,116,97,115,117,98,46,115,99,13,69,116,97,105,111,116,97,115,117,98,46,115,99,15,79,109,101,103,97,105,111,116,97,115,117,98,46,115,99,10,117,110,105,48,52,49,48,46,115,99,10,117,110,105,48,52,49,49,46,115,99,10,117,110,105,48,52,49,50,46,115,99,10,117,110,105,48,52,49,51,46,115,99,10,117,110,105,48,52,49,52,46,115,99,10,117,110,105,48,52,49,53,46,115,99,10,117,110,105,48,52,49,54,46,115,99,10,117,110,105,48,52,49,55,46,115,99,10,117,110,105,48,52,49,56,46,115,99,10,117,110,105,48,52,49,57,46,115,99,10,117,110,105,48,52,49,65,46,115,99,10,117,110,105,48,52,49,66,46,115,99,10,117,110,105,48,52,49,67,46,115,99,10,117,110,105,48,52,49,68,46,115,99,10,117,110,105,48,52,49,69,46,115,99,10,117,110,105,48,52,49,70,46,115,99,10,117,110,105,48,52,50,48,46,115,99,10,117,110,105,48,52,50,49,46,115,99,10,117,110,105,48,52,50,50,46,115,99,10,117,110,105,48,52,50,51,46,115,99,10,117,110,105,48,52,50,52,46,115,99,10,117,110,105,48,52,50,53,46,115,99,10,117,110,105,48,52,50,54,46,115,99,10,117,110,105,48,52,50,55,46,115,99,10,117,110,105,48,52,50,56,46,115,99,10,117,110,105,48,52,50,57,46,115,99,10,117,110,105,48,52,50,65,46,115,99,10,117,110,105,48,52,50,66,46,115,99,10,117,110,105,48,52,50,67,46,115,99,10,117,110,105,48,52,50,68,46,115,99,10,117,110,105,48,52,50,69,46,115,99,10,117,110,105,48,52,50,70,46,115,99,10,117,110,105,48,52,48,48,46,115,99,10,117,110,105,48,52,48,49,46,115,99,10,117,110,105,48,52,48,50,46,115,99,10,117,110,105,48,52,48,51,46,115,99,10,117,110,105,48,52,48,52,46,115,99,10,117,110,105,48,52,48,53,46,115,99,10,117,110,105,48,52,48,54,46,115,99,10,117,110,105,48,52,48,55,46,115,99,11,117,110,105,48,52,48,55,46,115,99,97,10,117,110,105,48,52,48,56,46,115,99,10,117,110,105,48,52,48,57,46,115,99,10,117,110,105,48,52,48,65,46,115,99,10,117,110,105,48,52,48,66,46,115,99,10,117,110,105,48,52,48,67,46,115,99,10,117,110,105,48,52,48,68,46,115,99,10,117,110,105,48,52,48,69,46,115,99,10,117,110,105,48,52,48,70,46,115,99,10,117,110,105,48,52,54,50,46,115,99,10,117,110,105,48,52,55,50,46,115,99,10,117,110,105,48,52,55,52,46,115,99,10,117,110,105,48,52,57,48,46,115,99,10,117,110,105,48,52,57,50,46,115,99,10,117,110,105,48,52,57,54,46,115,99,10,117,110,105,48,52,57,56,46,115,99,10,117,110,105,48,52,57,65,46,115,99,10,117,110,105,48,52,65,48,46,115,99,10,117,110,105,48,52,65,50,46,115,99,10,117,110,105,48,52,65,65,46,115,99,10,117,110,105,48,52,65,69,46,115,99,10,117,110,105,48,52,66,48,46,115,99,10,117,110,105,48,52,66,50,46,115,99,10,117,110,105,48,52,66,54,46,115,99,10,117,110,105,48,52,66,65,46,115,99,10,117,110,105,48,52,67,48,46,115,99,10,117,110,105,48,52,67,49,46,115,99,10,117,110,105,48,52,68,48,46,115,99,10,117,110,105,48,52,68,52,46,115,99,10,117,110,105,48,52,68,54,46,115,99,10,117,110,105,48,52,68,56,46,115,99,10,117,110,105,48,52,69,50,46,115,99,10,117,110,105,48,52,69,54,46,115,99,10,117,110,105,48,52,69,56,46,115,99,10,117,110,105,48,52,69,69,46,115,99,10,117,110,105,48,52,70,50,46,115,99,12,97,109,112,101,114,115,97,110,100,46,115,99,7,122,101,114,111,46,115,99,6,111,110,101,46,115,99,6,116,119,111,46,115,99,8,116,104,114,101,101,46,115,99,7,102,111,117,114,46,115,99,7,102,105,118,101,46,115,99,6,115,105,120,46,115,99,8,115,101,118,101,110,46,115,99,8,101,105,103,104,116,46,115,99,7,110,105,110,101,46,115,99,9,101,120,99,108,97,109,46,115,99,13,101,120,99,108,97,109,100,111,119,110,46,115,99,11,113,117,101,115,116,105,111,110,46,115,99,15,113,117,101,115,116,105,111,110,100,111,119,110,46,115,99,14,113,117,111,116,101,115,105,110,103,108,101,46,115,99,11,113,117,111,116,101,100,98,108,46,115,99,12,113,117,111,116,101,108,101,102,116,46,115,99,13,113,117,111,116,101,114,105,103,104,116,46,115,99,15,113,117,111,116,101,100,98,108,108,101,102,116,46,115,99,16,113,117,111,116,101,100,98,108,114,105,103,104,116,46,115,99,9,104,121,112,104,101,110,46,115,99,9,101,110,100,97,115,104,46,115,99,9,101,109,100,97,115,104,46,115,99,12,112,97,114,101,110,108,101,102,116,46,115,99,13,112,97,114,101,110,114,105,103,104,116,46,115,99,14,98,114,97,99,107,101,116,108,101,102,116,46,115,99,15,98,114,97,99,107,101,116,114,105,103,104,116,46,115,99,12,98,114,97,99,101,108,101,102,116,46,115,99,13,98,114,97,99,101,114,105,103,104,116,46,115,99,9,122,101,114,111,46,115,117,112,115,8,111,110,101,46,115,117,112,115,8,116,119,111,46,115,117,112,115,10,116,104,114,101,101,46,115,117,112,115,9,102,111,117,114,46,115,117,112,115,9,102,105,118,101,46,115,117,112,115,8,115,105,120,46,115,117,112,115,10,115,101,118,101,110,46,115,117,112,115,10,101,105,103,104,116,46,115,117,112,115,9,110,105,110,101,46,115,117,112,115,14,112,97,114,101,110,108,101,102,116,46,115,117,112,115,15,112,97,114,101,110,114,105,103,104,116,46,115,117,112,115,11,112,101,114,105,111,100,46,115,117,112,115,10,99,111,109,109,97,46,115,117,112,115,9,122,101,114,111,46,115,117,98,115,8,111,110,101,46,115,117,98,115,8,116,119,111,46,115,117,98,115,10,116,104,114,101,101,46,115,117,98,115,9,102,111,117,114,46,115,117,98,115,9,102,105,118,101,46,115,117,98,115,8,115,105,120,46,115,117,98,115,10,115,101,118,101,110,46,115,117,98,115,10,101,105,103,104,116,46,115,117,98,115,9,110,105,110,101,46,115,117,98,115,14,112,97,114,101,110,108,101,102,116,46,115,117,98,115,15,112,97,114,101,110,114,105,103,104,116,46,115,117,98,115,11,112,101,114,105,111,100,46,115,117,98,115,10,99,111,109,109,97,46,115,117,98,115,9,122,101,114,111,46,100,110,111,109,8,111,110,101,46,100,110,111,109,8,116,119,111,46,100,110,111,109,10,116,104,114,101,101,46,100,110,111,109,9,102,111,117,114,46,100,110,111,109,9,102,105,118,101,46,100,110,111,109,8,115,105,120,46,100,110,111,109,10,115,101,118,101,110,46,100,110,111,109,10,101,105,103,104,116,46,100,110,111,109,9,110,105,110,101,46,100,110,111,109,14,112,97,114,101,110,108,101,102,116,46,100,110,111,109,15,112,97,114,101,110,114,105,103,104,116,46,100,110,111,109,11,112,101,114,105,111,100,46,100,110,111,109,10,99,111,109,109,97,46,100,110,111,109,9,122,101,114,111,46,110,117,109,114,8,111,110,101,46,110,117,109,114,8,116,119,111,46,110,117,109,114,10,116,104,114,101,101,46,110,117,109,114,9,102,111,117,114,46,110,117,109,114,9,102,105,118,101,46,110,117,109,114,8,115,105,120,46,110,117,109,114,10,115,101,118,101,110,46,110,117,109,114,10,101,105,103,104,116,46,110,117,109,114,9,110,105,110,101,46,110,117,109,114,14,112,97,114,101,110,108,101,102,116,46,110,117,109,114,15,112,97,114,101,110,114,105,103,104,116,46,110,117,109,114,11,112,101,114,105,111,100,46,110,117,109,114,10,99,111,109,109,97,46,110,117,109,114,13,111,114,100,102,101,109,105,110,105,110,101,46,97,6,65,46,115,117,112,115,6,66,46,115,117,112,115,6,67,46,115,117,112,115,6,68,46,115,117,112,115,6,69,46,115,117,112,115,6,70,46,115,117,112,115,6,71,46,115,117,112,115,6,72,46,115,117,112,115,6,73,46,115,117,112,115,6,74,46,115,117,112,115,6,75,46,115,117,112,115,6,76,46,115,117,112,115,6,77,46,115,117,112,115,6,78,46,115,117,112,115,6,79,46,115,117,112,115,6,80,46,115,117,112,115,6,81,46,115,117,112,115,6,82,46,115,117,112,115,6,83,46,115,117,112,115,6,84,46,115,117,112,115,6,85,46,115,117,112,115,6,86,46,115,117,112,115,6,87,46,115,117,112,115,6,88,46,115,117,112,115,6,89,46,115,117,112,115,6,90,46,115,117,112,115,6,97,46,115,117,112,115,6,98,46,115,117,112,115,6,99,46,115,117,112,115,6,100,46,115,117,112,115,6,101,46,115,117,112,115,6,102,46,115,117,112,115,6,103,46,115,117,112,115,6,104,46,115,117,112,115,6,105,46,115,117,112,115,6,106,46,115,117,112,115,6,107,46,115,117,112,115,6,108,46,115,117,112,115,6,109,46,115,117,112,115,6,110,46,115,117,112,115,6,111,46,115,117,112,115,6,112,46,115,117,112,115,6,113,46,115,117,112,115,6,114,46,115,117,112,115,6,115,46,115,117,112,115,6,116,46,115,117,112,115,6,117,46,115,117,112,115,6,118,46,115,117,112,115,6,119,46,115,117,112,115,6,120,46,115,117,112,115,6,121,46,115,117,112,115,6,122,46,115,117,112,115,7,117,110,105,48,50,67,49,7,117,110,105,48,50,68,48,7,117,110,105,48,50,68,49,7,117,110,105,48,50,68,69,7,117,110,105,48,50,69,48,11,101,103,114,97,118,101,46,115,117,112,115,11,101,97,99,117,116,101,46,115,117,112,115,12,117,110,105,48,50,53,57,46,115,117,112,115,6,97,46,115,117,112,97,6,103,46,115,117,112,97,6,108,46,115,117,112,97,10,99,111,108,111,110,46,115,117,112,115,11,104,121,112,104,101,110,46,115,117,112,115,11,101,110,100,97,115,104,46,115,117,112,115,11,101,109,100,97,115,104,46,115,117,112,115,6,121,101,110,46,67,78,4,69,117,114,111,7,117,110,105,48,49,57,50,13,99,111,108,111,110,109,111,110,101,116,97,114,121,4,108,105,114,97,7,117,110,105,50,48,65,54,6,112,101,115,101,116,97,7,117,110,105,50,48,65,57,4,100,111,110,103,7,117,110,105,50,48,66,49,7,117,110,105,50,48,66,50,7,117,110,105,50,48,66,52,7,117,110,105,50,48,66,53,7,117,110,105,50,48,66,57,7,117,110,105,50,48,66,65,7,117,110,105,50,48,65,69,7,117,110,105,50,48,66,56,7,117,110,105,50,48,66,68,7,117,110,105,50,50,49,53,10,115,108,97,115,104,46,102,114,97,99,8,111,110,101,116,104,105,114,100,9,116,119,111,116,104,105,114,100,115,7,117,110,105,50,49,53,53,7,117,110,105,50,49,53,54,7,117,110,105,50,49,53,55,7,117,110,105,50,49,53,56,7,117,110,105,50,49,53,57,7,117,110,105,50,49,53,65,7,117,110,105,50,49,53,48,9,111,110,101,101,105,103,104,116,104,12,116,104,114,101,101,101,105,103,104,116,104,115,11,102,105,118,101,101,105,103,104,116,104,115,12,115,101,118,101,110,101,105,103,104,116,104,115,7,117,110,105,50,49,53,49,7,117,110,105,50,49,53,50,7,117,110,105,50,49,56,57,7,117,110,105,50,50,49,57,7,117,110,105,48,48,66,53,7,117,110,105,50,50,48,54,7,117,110,105,50,49,50,54,7,117,110,105,50,49,49,51,9,101,115,116,105,109,97,116,101,100,7,117,110,105,50,49,57,48,7,97,114,114,111,119,117,112,7,117,110,105,50,49,57,50,9,97,114,114,111,119,100,111,119,110,7,117,110,105,50,53,65,48,7,117,110,105,50,53,67,54,7,117,110,105,50,53,67,57,7,117,110,105,50,55,53,50,7,116,114,105,97,103,117,112,7,117,110,105,50,53,66,51,7,117,110,105,50,53,66,54,7,117,110,105,50,53,66,55,7,116,114,105,97,103,100,110,7,117,110,105,50,53,66,68,7,117,110,105,50,53,67,48,7,117,110,105,50,53,67,49,7,117,110,105,50,54,49,48,7,117,110,105,50,54,49,49,7,117,110,105,50,55,49,51,7,117,110,105,50,54,54,65,7,117,110,105,50,48,51,50,7,117,110,105,50,48,51,51,7,117,110,105,50,48,51,53,7,117,110,105,48,50,66,57,7,117,110,105,48,50,66,66,7,117,110,105,48,50,66,67,7,117,110,105,48,50,66,69,7,117,110,105,48,50,66,70,7,117,110,105,48,50,67,56,7,117,110,105,48,50,67,57,7,117,110,105,48,50,67,65,7,117,110,105,48,50,67,66,7,117,110,105,48,50,67,67,7,117,110,105,50,53,67,67,7,117,110,105,48,51,48,48,11,117,110,105,48,51,48,48,46,99,97,112,9,117,110,105,48,51,48,48,46,103,7,117,110,105,48,51,48,49,11,117,110,105,48,51,48,49,46,99,97,112,9,117,110,105,48,51,48,49,46,103,7,117,110,105,48,51,48,50,11,117,110,105,48,51,48,50,46,99,97,112,7,117,110,105,48,51,48,51,11,117,110,105,48,51,48,51,46,99,97,112,7,117,110,105,48,51,48,52,11,117,110,105,48,51,48,52,46,99,97,112,7,117,110,105,48,51,48,53,11,117,110,105,48,51,48,53,46,99,97,112,7,117,110,105,48,51,48,54,9,117,110,105,48,51,48,54,46,99,11,117,110,105,48,51,48,54,46,99,97,112,12,117,110,105,48,51,48,54,46,99,99,97,112,7,117,110,105,48,51,48,55,11,117,110,105,48,51,48,55,46,99,97,112,7,117,110,105,48,51,48,56,11,117,110,105,48,51,48,56,46,99,97,112,7,117,110,105,48,51,48,57,11,117,110,105,48,51,48,57,46,99,97,112,7,117,110,105,48,51,48,65,11,117,110,105,48,51,48,65,46,99,97,112,7,117,110,105,48,51,48,66,11,117,110,105,48,51,48,66,46,99,97,112,7,117,110,105,48,51,48,67,11,117,110,105,48,51,48,67,46,99,97,112,9,117,110,105,48,51,48,67,46,97,7,117,110,105,48,51,48,70,11,117,110,105,48,51,48,70,46,99,97,112,7,117,110,105,48,51,49,49,11,117,110,105,48,51,49,49,46,99,97,112,7,117,110,105,48,51,49,50,9,117,110,105,48,51,49,50,46,103,7,117,110,105,48,51,49,51,9,117,110,105,48,51,49,51,46,103,7,117,110,105,48,51,49,56,7,117,110,105,48,51,49,57,7,117,110,105,48,51,49,65,7,117]);fileData0.push.apply(fileData0,[110,105,48,51,49,66,7,117,110,105,48,51,49,67,7,117,110,105,48,51,49,68,7,117,110,105,48,51,49,69,7,117,110,105,48,51,49,70,7,117,110,105,48,51,50,48,7,117,110,105,48,51,50,51,7,117,110,105,48,51,50,52,7,117,110,105,48,51,50,53,7,117,110,105,48,51,50,54,9,117,110,105,48,51,50,54,46,97,7,117,110,105,48,51,50,55,11,117,110,105,48,51,50,55,46,99,97,112,7,117,110,105,48,51,50,56,11,117,110,105,48,51,50,56,46,99,97,112,7,117,110,105,48,51,50,57,7,117,110,105,48,51,50,65,7,117,110,105,48,51,50,67,7,117,110,105,48,51,50,69,7,117,110,105,48,51,50,70,7,117,110,105,48,51,51,48,7,117,110,105,48,51,51,49,7,117,110,105,48,51,51,52,7,117,110,105,48,51,51,57,7,117,110,105,48,51,51,65,7,117,110,105,48,51,51,66,7,117,110,105,48,51,51,67,7,117,110,105,48,51,51,68,7,117,110,105,48,51,52,50,11,117,110,105,48,51,52,50,46,99,97,112,7,117,110,105,48,51,52,53,7,117,110,105,48,51,54,49,11,117,110,105,48,51,48,56,48,51,48,49,15,117,110,105,48,51,48,56,48,51,48,49,46,99,97,112,13,117,110,105,48,51,48,56,48,51,48,49,46,103,11,117,110,105,48,51,48,56,48,51,48,48,15,117,110,105,48,51,48,56,48,51,48,48,46,99,97,112,13,117,110,105,48,51,48,56,48,51,48,48,46,103,11,117,110,105,48,51,48,56,48,51,48,51,11,117,110,105,48,51,48,56,48,51,48,52,15,117,110,105,48,51,48,56,48,51,48,52,46,99,97,112,11,117,110,105,48,51,48,56,48,51,48,67,15,117,110,105,48,51,48,56,48,51,48,67,46,99,97,112,11,117,110,105,48,51,48,50,48,51,48,49,15,117,110,105,48,51,48,50,48,51,48,49,46,99,97,112,11,117,110,105,48,51,48,50,48,51,48,48,15,117,110,105,48,51,48,50,48,51,48,48,46,99,97,112,11,117,110,105,48,51,48,50,48,51,48,57,15,117,110,105,48,51,48,50,48,51,48,57,46,99,97,112,11,117,110,105,48,51,48,50,48,51,48,51,15,117,110,105,48,51,48,50,48,51,48,51,46,99,97,112,11,117,110,105,48,51,48,54,48,51,48,49,15,117,110,105,48,51,48,54,48,51,48,49,46,99,97,112,11,117,110,105,48,51,48,54,48,51,48,48,15,117,110,105,48,51,48,54,48,51,48,48,46,99,97,112,11,117,110,105,48,51,48,54,48,51,48,57,15,117,110,105,48,51,48,54,48,51,48,57,46,99,97,112,11,117,110,105,48,51,48,54,48,51,48,51,15,117,110,105,48,51,48,54,48,51,48,51,46,99,97,112,11,117,110,105,48,51,48,50,48,51,48,54,15,117,110,105,48,51,48,50,48,51,48,54,46,99,97,112,11,117,110,105,48,51,48,52,48,51,48,49,15,117,110,105,48,51,48,52,48,51,48,49,46,99,97,112,11,117,110,105,48,51,49,50,48,51,48,49,11,117,110,105,48,51,49,50,48,51,48,48,11,117,110,105,48,51,49,50,48,51,48,51,11,117,110,105,48,51,49,51,48,51,48,49,11,117,110,105,48,51,49,51,48,51,48,48,11,117,110,105,48,51,49,51,48,51,48,51,7,117,110,105,48,48,65,48,7,117,110,105,50,48,48,55,10,115,112,97,99,101,46,102,114,97,99,12,110,98,115,112,97,99,101,46,102,114,97,99,7,117,110,105,50,48,50,70,7,117,110,105,70,69,70,70,0,0,0,1,255,255,0,2,0,1,0,0,0,12,0,0,0,0,2,248,0,2,0,124,0,4,0,55,0,1,0,77,0,78,0,1,0,108,0,108,0,1,0,117,0,117,0,2,0,133,0,133,0,1,0,175,0,177,0,1,0,183,0,183,0,1,0,221,0,222,0,1,0,247,0,248,0,1,1,15,1,16,0,1,1,26,1,26,0,2,1,46,1,46,0,1,1,52,1,52,0,2,1,55,1,55,0,2,1,70,1,70,0,2,1,71,1,71,0,1,1,73,1,73,0,1,1,80,1,80,0,2,1,116,1,118,0,1,1,124,1,124,0,1,1,140,1,140,0,2,1,163,1,164,0,1,1,188,1,190,0,1,1,192,1,194,0,1,1,196,1,196,0,1,1,198,1,211,0,1,1,213,1,214,0,1,1,218,1,218,0,1,1,223,1,231,0,1,1,233,1,236,0,1,1,238,1,238,0,1,1,240,1,240,0,1,1,243,1,253,0,1,2,4,2,4,0,2,2,7,2,8,0,2,2,9,2,9,0,1,2,20,2,20,0,1,2,23,2,23,0,1,2,35,2,35,0,1,2,45,2,46,0,1,2,51,2,51,0,2,2,55,2,55,0,1,2,65,2,65,0,4,2,69,2,69,0,4,2,71,2,71,0,4,2,73,2,73,0,4,2,79,2,79,0,4,2,81,2,81,0,4,2,84,2,84,0,4,2,88,2,88,0,4,2,93,2,93,0,2,2,96,2,96,0,2,2,98,2,98,0,1,2,102,2,102,0,1,2,104,2,104,0,1,2,106,2,106,0,1,2,112,2,112,0,1,2,114,2,114,0,1,2,117,2,117,0,1,2,121,2,121,0,1,2,130,2,130,0,2,2,133,2,133,0,2,2,137,3,97,0,2,3,99,3,99,0,1,3,101,3,101,0,1,3,112,3,112,0,4,3,114,3,114,0,4,3,120,3,120,0,4,3,123,3,123,0,4,3,138,3,138,0,1,3,141,3,141,0,1,3,143,3,144,0,1,3,148,3,148,0,1,3,150,3,150,0,1,3,156,3,156,0,1,3,161,3,161,0,1,3,164,3,165,0,1,3,169,3,169,0,1,3,171,3,173,0,1,3,194,3,194,0,1,3,210,3,211,0,1,3,225,3,225,0,1,3,228,3,228,0,1,3,231,3,231,0,1,3,233,3,234,0,1,3,238,3,238,0,1,3,240,3,240,0,1,3,246,3,246,0,1,3,251,3,251,0,1,3,254,3,255,0,1,4,3,4,3,0,1,4,5,4,7,0,1,4,12,4,12,0,1,4,28,4,28,0,1,4,44,4,45,0,1,4,59,4,59,0,1,4,195,4,220,0,1,4,242,4,243,0,1,5,17,5,17,0,1,5,42,5,42,0,1,5,84,5,84,0,1,5,90,5,90,0,1,5,114,5,114,0,1,5,131,5,132,0,1,5,158,5,158,0,1,5,161,5,162,0,1,5,165,5,167,0,1,5,169,5,170,0,1,5,172,5,173,0,1,5,175,5,175,0,1,5,177,5,177,0,1,5,179,5,180,0,1,5,182,5,182,0,1,5,193,5,193,0,1,5,195,5,196,0,1,5,198,5,198,0,1,5,200,5,200,0,1,5,209,5,209,0,1,7,16,7,16,0,1,7,26,7,26,0,1,7,32,7,32,0,1,7,33,7,62,0,3,7,64,7,105,0,3,7,107,7,143,0,3,0,2,0,33,7,33,7,33,0,1,7,35,7,36,0,1,7,38,7,39,0,1,7,41,7,41,0,1,7,43,7,43,0,1,7,45,7,45,0,1,7,47,7,48,0,1,7,51,7,51,0,1,7,53,7,53,0,1,7,55,7,55,0,1,7,57,7,57,0,1,7,59,7,59,0,1,7,61,7,61,0,1,7,64,7,64,0,1,7,66,7,66,0,1,7,68,7,71,0,1,7,85,7,85,0,1,7,102,7,103,0,1,7,107,7,107,0,1,7,109,7,110,0,1,7,112,7,114,0,1,7,116,7,116,0,1,7,118,7,118,0,1,7,120,7,120,0,1,7,122,7,122,0,1,7,124,7,124,0,1,7,126,7,126,0,1,7,128,7,128,0,1,7,130,7,130,0,1,7,132,7,132,0,1,7,134,7,134,0,1,7,136,7,136,0,1,7,138,7,143,0,1,0,0,0,1,0,0,0,10,0,228,3,82,0,4,68,70,76,84,0,26,99,121,114,108,0,44,103,114,101,107,0,82,108,97,116,110,0,100,0,4,0,0,0,0,255,255,0,4,0,0,0,10,0,20,0,30,0,10,0,1,83,82,66,32,0,24,0,0,255,255,0,4,0,1,0,11,0,21,0,31,0,0,255,255,0,4,0,2,0,12,0,22,0,32,0,4,0,0,0,0,255,255,0,4,0,3,0,13,0,23,0,33,0,34,0,5,65,90,69,32,0,48,67,82,84,32,0,62,78,83,77,32,0,76,83,75,83,32,0,90,84,82,75,32,0,104,0,0,255,255,0,4,0,4,0,14,0,24,0,34,0,0,255,255,0,4,0,5,0,15,0,25,0,35,0,0,255,255,0,4,0,6,0,16,0,26,0,36,0,0,255,255,0,4,0,7,0,17,0,27,0,37,0,0,255,255,0,4,0,8,0,18,0,28,0,38,0,0,255,255,0,4,0,9,0,19,0,29,0,39,0,40,107,101,114,110,0,242,107,101,114,110,0,248,107,101,114,110,0,254,107,101,114,110,1,4,107,101,114,110,1,10,107,101,114,110,1,16,107,101,114,110,1,22,107,101,114,110,1,28,107,101,114,110,1,34,107,101,114,110,1,40,109,97,114,107,1,46,109,97,114,107,1,68,109,97,114,107,1,90,109,97,114,107,1,112,109,97,114,107,1,134,109,97,114,107,1,156,109,97,114,107,1,178,109,97,114,107,1,200,109,97,114,107,1,222,109,97,114,107,1,244,109,107,109,107,2,10,109,107,109,107,2,16,109,107,109,107,2,22,109,107,109,107,2,28,109,107,109,107,2,34,109,107,109,107,2,40,109,107,109,107,2,46,109,107,109,107,2,52,109,107,109,107,2,58,109,107,109,107,2,64,115,105,122,101,2,70,115,105,122,101,2,74,115,105,122,101,2,78,115,105,122,101,2,82,115,105,122,101,2,86,115,105,122,101,2,90,115,105,122,101,2,94,115,105,122,101,2,98,115,105,122,101,2,102,115,105,122,101,2,106,0,0,0,1,0,10,0,0,0,1,0,10,0,0,0,1,0,10,0,0,0,1,0,10,0,0,0,1,0,10,0,0,0,1,0,10,0,0,0,1,0,10,0,0,0,1,0,10,0,0,0,1,0,10,0,0,0,1,0,10,0,0,0,9,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,0,0,9,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,0,0,9,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,0,0,9,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,0,0,9,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,0,0,9,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,0,0,9,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,0,0,9,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,0,0,9,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,0,0,9,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,0,0,1,0,9,0,0,0,1,0,9,0,0,0,1,0,9,0,0,0,1,0,9,0,0,0,1,0,9,0,0,0,1,0,9,0,0,0,1,0,9,0,0,0,1,0,9,0,0,0,1,0,9,0,0,0,1,0,9,0,168,0,0,0,164,0,0,0,160,0,0,0,156,0,0,0,152,0,0,0,148,0,0,0,144,0,0,0,140,0,0,0,136,0,0,0,132,0,0,0,11,0,24,0,32,0,40,0,48,0,56,0,64,0,72,0,80,0,88,0,96,0,104,0,4,0,0,0,1,0,114,0,4,0,0,0,1,4,32,0,4,0,0,0,1,7,48,0,4,0,0,0,1,7,74,0,4,0,0,0,1,7,182,0,4,0,0,0,1,11,2,0,4,0,0,0,1,11,28,0,4,0,0,0,1,11,102,0,4,0,0,0,1,11,202,0,6,1,0,0,1,12,50,0,2,0,0,0,9,13,18,35,212,36,214,36,240,37,160,62,68,102,194,133,254,185,174,0,100,0,0,0,0,0,0,0,0,0,1,197,208,198,52,0,1,0,12,0,206,0,48,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,0,1,202,0,131,1,14,1,20,1,26,1,32,1,38,1,44,1,50,1,56,1,62,1,68,1,20,1,74,1,80,1,86,1,92,1,86,1,26,1,98,1,104,1,110,1,116,1,122,1,128,1,134,1,140,1,146,1,14,1,152,1,38,1,158,1,158,1,92,1,164,1,92,1,92,1,170,1,176,1,20,1,86,1,158,1,182,1,188,1,194,1,200,1,182,1,206,1,212,1,218,1,200,1,224,1,230,1,236,1,242,1,242,1,122,1,116,1,248,1,80,1,80,1,80,1,86,1,86,1,254,1,92,2,4,2,10,2,16,2,10,1,98,1,104,1,110,2,22,2,28,1,38,1,122,1,128,1,140,2,10,1,146,1,146,2,34,1,182,2,40,1,182,2,22,1,56,2,46,2,52,2,58,1,158,2,64,2,70,1,212,2,76,2,64,2,82,1,14,2,88,1,38,2,94,2,22,2,28,1,92,1,140,2,100,2,106,2,112,2,118,2,124,2,130,1,26,1,92,1,122,1,122,1,92,2,136,2,142,2,148,2,154,2,160,2,166,2,172,2,178,2,184,2,190,2,196,2,202,2,208,2,214,2,220,2,226,0,1,0,0,1,248,0,1,1,7,1,248,0,1,0,117,2,218,0,1,1,13,1,248,0,1,1,127,2,218,0,1,1,5,1,248,0,1,0,214,2,228,0,1,0,251,1,248,0,1,0,115,2,218,0,1,0,113,2,166,0,1,0,116,2,166,0,1,0,113,2,218,0,1,1,152,1,248,0,1,1,26,1,248,0,1,1,11,1,248,0,1,0,199,1,248,0,1,0,210,1,248,0,1,0,129,2,121,0,1,1,9,1,248,0,1,0,218,1,248,0,1,1,86,1,248,0,1,0,203,1,248,0,1,0,229,1,248,0,1,0,220,1,248,0,1,1,158,1,248,0,1,0,115,1,248,0,1,1,193,1,248,0,1,1,9,1,246,0,1,1,8,1,248,0,1,1,16,1,248,0,1,1,32,1,248,0,1,1,14,1,248,0,1,0,234,1,248,0,1,0,244,1,246,0,1,0,235,1,248,0,1,0,225,1,248,0,1,0,214,1,248,0,1,0,253,1,248,0,1,0,121,1,248,0,1,1,21,1,248,0,1,0,156,1,248,0,1,1,12,1,248,0,1,1,159,1,248,0,1,0,193,1,248,0,1,0,103,1,248,0,1,1,23,1,248,0,1,1,10,1,248,0,1,0,178,2,4,0,1,1,12,1,246,0,1,1,20,1,248,0,1,0,239,1,248,0,1,1,25,1,248,0,1,1,6,1,248,0,1,1,33,1,248,0,1,1,76,1,248,0,1,0,248,1,248,0,1,0,249,1,248,0,1,1,62,1,248,0,1,1,15,1,248,0,1,0,231,1,248,0,1,1,75,1,248,0,1,0,200,1,248,0,1,1,123,1,248,0,1,0,252,1,248,0,1,0,225,2,50,0,1,1,12,2,50,0,1,1,6,2,50,0,1,0,247,2,50,0,1,1,33,2,50,0,1,0,120,2,50,0,1,1,25,2,50,0,1,1,56,2,50,0,1,1,38,2,50,0,1,1,31,2,50,0,1,1,21,2,50,0,1,0,227,2,50,0,1,0,194,2,50,0,1,1,11,2,197,0,1,1,11,2,188,0,1,1,39,1,248,0,1,195,136,195,202,0,1,0,12,0,138,0,31,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,0,1,80,0,104,0,216,0,222,0,228,0,234,0,240,0,246,0,252,1,2,1,8,1,14,1,20,1,26,1,32,1,38,1,44,1,50,1,44,0,246,1,56,1,62,1,68,1,74,1,80,1,86,1,92,0,222,0,216,1,98,0,240,1,8,1,104,1,110,1,116,1,122,1,68,1,2,1,128,1,134,1,140,1,146,1,152,1,158,1,158,0,216,1,164,0,240,1,170,1,176,1,182,1,44,1,188,1,68,0,240,1,194,1,62,1,200,1,206,1,44,1,92,1,92,1,44,1,212,1,218,1,224,1,230,1,236,1,242,1,248,1,254,2,4,2,10,2,16,2,22,2,28,2,34,2,40,2,46,2,40,2,52,2,58,2,64,2,70,2,76,2,82,2,88,2,94,2,100,1,212,2,106,1,236,2,4,2,40,2,40,2,64,2,70,2,70,1,134,1,224,2,112,1,236,2,118,2,124,2,130,2,136,0,1,0,0,2,169,0,1,1,7,2,169,0,1,1,23,2,169,0,1,1,65,2,169,0,1,1,46,2,169,0,1,1,27,2,169,0,1,1,29,2,169,0,1,1,89,2,169,0,1,1,62,2,169,0,1,0,120,2,169,0,1,1,85,2,169,0,1,1,50,2,169,0,1,0,121,2,169,0,1,1,96,2,169,0,1,1,67,2,169,0,1,1,70,2,169,0,1,1,39,2,169,0,1,1,15,2,169,0,1,1,4,2,169,0,1,1,60,2,169,0,1,0,245,2,169,0,1,1,129,2,169,0,1,0,242,2,169,0,1,0,223,2,169,0,1,2,68,2,182,0,1,1,69,2,169,0,1,2,21,2,169,0,1,1,74,2,169,0,1,1,68,2,169,0,1,1,83,2,169,0,1,1,79,2,169,0,1,1,45,1,248,0,1,0,121,2,50,0,1,0,250,1,248,0,1,0,156,2,169,0,1,1,31,2,169,0,1,1,123,2,169,0,1,1,70,2,170,0,1,1,56,2,170,0,1,0,233,2,169,0,1,1,138,2,169,0,1,1,169,2,169,0,1,1,25,2,169,0,1,0,225,2,50,0,1,1,12,2,50,0,1,1,32,2,68,0,1,1,20,2,50,0,1,1,6,2,50,0,1,1,8,2,50,0,1,1,46,2,50,0,1,1,33,2,50,0,1,0,120,2,50,0,1,1,39,2,50,0,1,1,25,2,50,0,1,0,126,2,50,0,1,1,56,2,50,0,1,1,38,2,50,0,1,1,31,2,50,0,1,1,21,2,50,0,1,1,16,2,50,0,1,0,244,2,50,0,1,0,227,2,50,0,1,1,29,2,50,0,1,0,213,2,50,0,1,1,76,2,50,0,1,0,214,2,50,0,1,0,194,2,50,0,1,0,247,2,50,0,1,1,217,2,50,0,1,1,11,2,22,0,1,2,41,2,170,0,1,1,35,2,22,0,1,1,22,2,22,0,1,0,205,2,22,0,1,193,134,193,140,0,1,0,12,0,18,0,1,0,0,0,10,0,1,0,10,0,1,0,0,1,248,0,1,1,218,1,248,0,1,193,112,193,120,0,1,0,12,0,22,0,2,0,0,0,38,0,0,0,38,0,13,0,34,0,40,0,46,0,52,0,58,0,64,0,70,0,76,0,82,0,82,0,82,0,70,0,88,0,1,0,0,0,0,0,1,1,83,0,0,0,1,1,13,0,0,0,1,1,6,0,0,0,1,1,11,0,0,0,1,0,218,0,0,0,1,0,206,0,0,0,1,1,31,0,0,0,1,0,238,0,0,0,1,0,219,0,0,0,1,1,39,0,0,0,1,193,34,193,68,0,1,0,12,0,106,0,23,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,144,1,40,1,46,1,52,1,58,1,64,1,70,1,52,1,76,1,82,1,88,1,94,1,100,1,106,1,76,1,112,1,118,1,58,1,124,1,130,1,136,1,142,1,148,1,154,1,160,1,166,1,172,1,178,1,184,1,190,1,196,1,202,1,208,1,166,1,214,1,220,1,226,1,214,1,232,1,238,1,184,1,244,1,250,1,214,2,0,2,6,2,12,2,0,2,18,2,24,2,30,2,0,2,36,1,136,1,52,2,42,1,214,1,184,1,166,1,178,2,48,1,166,1,178,1,190,2,54,2,60,2,66,2,72,2,78,2,0,2,60,2,84,1,190,2,0,2,12,1,166,2,90,2,96,1,232,1,232,2,102,2,108,2,108,2,108,1,214,2,60,2,66,2,114,2,0,2,18,1,160,2,120,2,126,2,60,2,132,2,138,2,144,1,166,2,78,2,144,2,150,1,160,2,156,2,162,1,238,2,168,1,70,2,174,2,180,1,82,2,186,1,100,1,226,2,192,1,190,2,162,1,118,2,48,2,198,2,204,2,210,2,216,2,150,2,222,2,120,2,228,2,162,2,204,2,210,1,160,2,156,2,168,2,228,2,180,1,82,1,100,2,192,1,190,2,162,1,118,2,204,2,120,2,162,2,168,1,46,0,1,0,0,255,234,0,1,1,7,255,234,0,1,1,39,255,234,0,1,1,83,255,234,0,1,1,44,255,234,0,1,1,43,255,234,0,1,0,121,255,234,0,1,1,62,255,234,0,1,0,120,255,234,0,1,0,244,255,234,0,1,1,69,255,234,0,1,1,32,255,234,0,1,1,98,255,234,0,1,1,70,255,234,0,1,0,123,255,234,0,1,1,13,255,234,0,1,1,6,255,234,0,1,1,60,255,234,0,1,0,248,255,234,0,1,1,133,255,234,0,1,0,239,255,234,0,1,0,225,255,234,0,1,1,26,255,234,0,1,0,245,255,234,0,1,1,22,255,234,0,1,1,11,255,234,0,1,1,38,255,234,0,1,1,2,255,234,0,1,0,122,255,234,0,1,0,250,255,26,0,1,0,113,255,234,0,1,0,48,255,27,0,1,1,1,255,234,0,1,1,161,255,234,0,1,1,15,255,234,0,1,0,109,255,38,0,1,1,167,255,38,0,1,0,218,255,234,0,1,0,199,255,234,0,1,1,27,255,234,0,1,1,86,255,234,0,1,0,203,255,234,0,1,0,184,255,14,0,1,1,68,255,234,0,1,1,170,255,234,0,1,1,18,255,234,0,1,0,246,255,234,0,1,1,16,255,234,0,1,1,10,255,234,0,1,0,233,255,234,0,1,0,247,255,234,0,1,1,9,255,31,0,1,0,156,255,234,0,1,0,252,255,234,0,1,1,173,255,234,0,1,0,18,255,234,0,1,1,21,255,234,0,1,0,192,255,234,0,1,0,158,255,234,0,1,1,12,255,234,0,1,1,180,255,38,0,1,0,115,255,234,0,1,1,76,255,234,0,1,1,23,255,234,0,1,1,31,255,234,0,1,1,9,255,234,0,1,1,40,255,234,0,1,1,33,255,234,0,1,0,200,255,234,0,1,1,56,255,234,0,1,0,253,255,234,0,1,0,227,255,234,0,1,1,29,255,234,0,1,0,213,255,234,0,1,0,222,255,234,0,1,0,254,255,234,0,1,191,2,189,162,0,1,0,12,0,18,0,1,0,0,0,10,0,1,0,10,0,1,0,0,0,241,0,1,1,39,0,241,0,1,190,230,190,236,0,1,0,12,0,18,0,1,0,0,0,22,0,7,0,22,0,28,0,34,0,40,0,46,0,52,0,58,0,1,0,0,1,224,0,1,1,203,2,137,0,1,2,2,2,157,0,1,1,104,1,224,0,1,1,144,1,234,0,1,1,156,1,238,0,1,1,193,2,12,0,1,1,154,1,224,0,1,190,172,190,178,0,1,0,12,0,18,0,1,0,0,0,30,0,11,0,30,0,36,0,42,0,48,0,54,0,42,0,60,0,66,0,72,0,78,0,84,0,1,0,0,0,0,0,1,1,151,0,0,0,1,1,128,0,0,0,1,0,136,0,0,0,1,1,58,0,0,0,1,1,156,0,0,0,1,1,72,0,0,0,1,0,230,0,0,0,1,0,233,0,0,0,1,1,127,0,0,0,1,1,39,0,0,0,1,190,96,190,102,0,1,0,12,0,18,0,1,0,0,0,34,0,13,0,34,0,40,0,46,0,52,0,58,0,64,0,64,0,70,0,76,0,46,0,82,0,88,0,82,0,1,0,0,0,0,0,1,1,203,0,0,0,1,1,129,0,0,0,1,0,95,0,0,0,1,1,70,0,0,0,1,1,60,0,0,0,1,0,131,0,0,0,1,1,108,0,0,0,1,1,69,0,0,0,1,1,31,0,0,0,1,1,29,0,0,0,1,185,200,190,20,0,1,0,12,0,206,0,48,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,0,0,202,0,3,0,14,0,20,0,20,0,1,0,0,1,248,0,1,0,0,2,217,0,1,0,0,2,168,0,1,189,54,0,4,0,0,0,140,1,34,1,52,1,94,1,104,1,110,1,116,1,122,1,128,1,134,1,140,2,66,4,224,6,170,7,240,8,58,8,64,9,202,11,84,11,90,11,108,11,122,11,132,11,138,11,144,11,230,11,248,12,2,12,20,12,66,12,104,12,126,12,148,12,186,12,224,12,254,13,8,13,18,13,24,13,62,13,100,13,138,13,176,13,214,13,252,14,34,14,72,14,90,14,108,14,126,14,144,14,162,14,180,14,186,14,196,14,202,14,208,14,214,14,220,14,230,14,236,14,242,14,252,15,6,15,12,15,18,15,24,15,30,15,36,15,46,15,52,15,58,15,64,15,70,15,112,15,118,15,124,15,130,15,136,15,142,15,156,15,162,15,180,15,222,15,252,16,22,16,48,16,78,16,124,16,146,16,164,16,182,16,188,16,226,17,0,17,30,17,60,17,86,17,128,17,154,17,176,17,254,18,76,18,82,18,88,18,94,18,132,18,166,18,172,18,178,18,184,20,34,20,52,20,70,20,76,20,98,20,116,20,134,20,156,20,178,20,184,20,210,20,216,20,222,20,240,21,6,21,28,21,50,21,60,21,94,21,124,21,142,21,156,21,174,21,216,21,238,22,0,22,10,22,52,22,118,22,144,0,4,1,63,0,37,1,64,0,39,1,65,0,39,1,66,0,37,0,10,1,61,0,20,1,62,0,18,1,63,0,58,1,64,0,61,1,65,0,61,1,66,0,58,1,67,0,55,1,68,0,18,1,71,0,18,1,72,0,58,0,2,4,120,0,2,4,122,0,2,0,1,4,177,255,254,0,1,4,177,255,254,0,1,4,177,255,254,0,1,4,177,255,254,0,1,4,177,255,254,0,1,4,177,255,254,0,45,0,23,255,235,0,25,255,246,0,26,255,255,0,28,255,235,0,55,255,247,0,199,255,235,0,200,255,235,0,201,255,235,0,202,255,235,0,203,255,235,0,204,255,235,0,228,255,255,0,229,255,255,0,230,255,255,0,231,255,255,0,232,255,235,0,233,255,235,0,234,255,235,0,235,255,235,0,236,255,235,0,237,255,235,0,238,255,235,0,239,255,235,1,182,255,247,1,183,255,247,1,184,255,247,1,185,255,247,1,186,255,247,1,251,255,247,1,252,255,247,4,126,255,234,4,131,255,246,4,133,255,246,4,140,255,246,4,141,255,246,4,142,255,246,4,143,255,246,4,146,255,246,4,147,255,246,4,163,255,196,4,170,255,234,4,172,255,234,4,173,255,234,7,11,255,246,7,12,255,246,0,167,0,23,255,236,0,25,255,245,0,28,255,235,0,30,255,246,0,32,255,253,0,33,255,253,0,34,255,253,0,36,255,246,0,44,255,253,0,46,255,253,0,51,0,9,0,52,0,9,0,53,0,15,0,199,255,236,0,200,255,236,0,201,255,236,0,202,255,236,0,203,255,236,0,204,255,236,0,232,255,235,0,233,255,235,0,234,255,235,0,235,255,235,0,236,255,235,0,237,255,235,0,238,255,235,0,239,255,235,0,250,255,246,0,251,255,246,0,252,255,246,0,253,255,246,0,254,255,246,0,255,255,246,1,0,255,246,1,1,255,246,1,2,255,246,1,3,255,246,1,4,255,246,1,5,255,246,1,6,255,246,1,7,255,246,1,8,255,246,1,9,255,246,1,10,255,246,1,11,255,246,1,12,255,246,1,13,255,246,1,14,255,246,1,15,255,246,1,16,255,246,1,17,255,246,1,18,255,246,1,21,255,253,1,22,255,253,1,23,255,253,1,24,255,253,1,25,255,253,1,26,255,253,1,27,255,253,1,28,255,253,1,29,255,253,1,30,255,253,1,31,255,253,1,32,255,253,1,33,255,253,1,34,255,253,1,35,255,253,1,36,255,253,1,37,255,253,1,38,255,253,1,39,255,253,1,40,255,253,1,41,255,253,1,42,255,253,1,43,255,253,1,44,255,253,1,45,255,253,1,46,255,253,1,47,255,253,1,48,255,246,1,49,255,246,1,50,255,246,1,51,255,246,1,52,255,246,1,53,255,246,1,54,255,246,1,55,255,246,1,99,255,253,1,100,255,253,1,101,255,253,1,102,255,253,1,103,255,253,1,104,255,253,1,105,255,253,1,106,255,253,1,107,255,253,1,108,255,253,1,109,255,253,1,110,255,253,1,111,255,253,1,112,255,253,1,113,255,253,1,114,255,253,1,115,255,253,1,116,255,253,1,117,255,253,1,118,255,253,1,119,255,253,1,120,255,253,1,121,255,253,1,122,255,253,1,123,255,253,1,124,255,253,1,170,0,9,1,171,0,9,1,172,0,9,1,173,0,9,1,196,255,253,1,197,255,253,1,198,255,253,1,200,255,253,1,208,255,253,1,209,255,253,1,210,255,253,1,230,255,253,1,231,255,253,1,232,255,253,2,23,255,253,2,24,255,253,2,25,255,253,2,26,255,253,2,27,255,253,2,28,255,253,2,29,255,253,2,30,255,253,2,31,255,253,2,32,255,253,2,33,255,253,2,34,255,253,2,35,255,253,2,36,255,253,2,37,255,253,2,38,255,253,2,39,255,253,2,40,255,253,2,41,255,253,2,42,255,253,2,43,255,253,2,44,255,253,2,45,255,253,2,46,255,253,2,47,255,253,2,48,255,253,2,49,255,253,2,50,255,253,2,51,255,253,2,52,255,253,2,53,255,253,2,54,255,253,4,140,255,245,4,141,255,245,4,142,255,245,4,143,255,245,4,146,255,245,4,147,255,245,4,148,255,245,4,186,0,29,0,114,0,13,255,236,0,22,255,236,0,23,255,235,0,25,255,246,0,26,255,246,0,28,255,236,0,30,255,241,0,35,255,255,0,36,255,246,0,49,255,245,0,51,0,12,0,52,0,12,0,53,255,254,0,55,0,5,0,135,255,236,0,191,255,236,0,192,255,236,0,193,255,236,0,194,255,236,0,195,255,236,0,196,255,236,0,197,255,236,0,199,255,235,0,200,255,235,0,201,255,235,0,202,255,235,0,203,255,235,0,204,255,235,0,228,255,246,0,229,255,246,0,230,255,246,0,231,255,246,0,232,255,236,0,233,255,236,0,234,255,236,0,235,255,236,0,236,255,236,0,237,255,236,0,238,255,236,0,239,255,236,0,250,255,241,0,251,255,241,0,252,255,241,0,253,255,241,0,254,255,241,0,255,255,241,1,0,255,241,1,1,255,241,1,2,255,241,1,3,255,241,1,4,255,241,1,5,255,241,1,6,255,241,1,7,255,241,1,8,255,241,1,9,255,241,1,10,255,241,1,11,255,241,1,12,255,241,1,13,255,241,1,14,255,241,1,15,255,241,1,16,255,241,1,17,255,241,1,18,255,241,1,48,255,246,1,49,255,246,1,50,255,246,1,51,255,246,1,52,255,246,1,53,255,246,1,54,255,246,1,55,255,246,1,140,255,245,1,141,255,245,1,142,255,245,1,143,255,245,1,144,255,245,1,145,255,245,1,146,255,245,1,170,0,12,1,171,0,12,1,172,0,12,1,173,0,12,1,182,0,5,1,183,0,5,1,184,0,5,1,185,0,5,1,186,0,5,1,243,255,245,1,251,0,5,1,252,0,5,2,4,255,255,2,7,255,255,2,8,255,255,2,64,255,255,4,131,255,246,4,133,255,246,4,136,0,7,4,138,0,7,4,140,0,9,4,141,0,9,4,142,0,9,4,143,0,9,4,146,0,9,4,147,0,9,4,161,255,245,4,163,255,216,4,186,0,7,4,187,255,244,7,11,255,246,7,12,255,246,7,150,255,255,7,151,255,255,0,81,0,13,255,216,0,23,255,236,0,25,255,255,0,28,255,254,0,29,255,255,0,30,255,236,0,39,255,246,0,55,255,235,0,135,255,216,0,199,255,236,0,200,255,236,0,201,255,236,0,202,255,236,0,203,255,236,0,204,255,236,0,232,255,254,0,233,255,254,0,234,255,254,0,235,255,254,0,236,255,254,0,237,255,254,0,238,255,254,0,239,255,254,0,240,255,255,0,241,255,255,0,242,255,255,0,243,255,255,0,244,255,255,0,250,255,236,0,251,255,236,0,252,255,236,0,253,255,236,0,254,255,236,0,255,255,236,1,0,255,236,1,1,255,236,1,2,255,236,1,3,255,236,1,4,255,236,1,5,255,236,1,6,255,236,1,7,255,236,1,8,255,236,1,9,255,236,1,10,255,236,1,11,255,236,1,12,255,236,1,13,255,236,1,14,255,236,1,15,255,236,1,16,255,236,1,17,255,236,1,18,255,236,1,74,255,246,1,182,255,235,1,183,255,235,1,184,255,235,1,185,255,235,1,186,255,235,1,190,255,246,1,207,255,246,1,227,255,246,1,241,255,246,1,242,255,246,1,251,255,235,1,252,255,235,4,119,255,236,4,120,255,236,4,123,255,236,4,134,255,236,4,135,255,236,4,140,255,254,4,141,255,254,4,142,255,254,4,143,255,254,4,146,255,254,4,147,255,254,4,159,255,236,4,163,255,245,4,186,0,56,4,187,0,18,0,18,0,23,255,236,0,25,255,245,0,28,255,226,0,199,255,236,0,200,255,236,0,201,255,236,0,202,255,236,0,203,255,236,0,204,255,236,0,232,255,226,0,233,255,226,0,234,255,226,0,235,255,226,0,236,255,226,0,237,255,226,0,238,255,226,0,239,255,226,4,163,255,226,0,1,6,31,255,236,0,98,0,13,255,212,0,29,255,246,0,30,255,233,0,36,255,246,0,39,255,247,0,48,255,246,0,51,0,27,0,52,0,18,0,55,255,246,0,135,255,212,0,240,255,246,0,241,255,246,0,242,255,246,0,243,255,246,0,244,255,246,0,250,255,233,0,251,255,233,0,252,255,233,0,253,255,233,0,254,255,233,0,255,255,233,1,0,255,233,1,1,255,233,1,2,255,233,1,3,255,233,1,4,255,233,1,5,255,233,1,6,255,233,1,7,255,233,1,8,255,233,1,9,255,233,1,10,255,233,1,11,255,233,1,12,255,233,1,13,255,233,1,14,255,233,1,15,255,233,1,16,255,233,1,17,255,233,1,18,255,233,1,48,255,246,1,49,255,246,1,50,255,246,1,51,255,246,1,52,255,246,1,53,255,246,1,54,255,246,1,55,255,246,1,74,255,247,1,132,255,246,1,133,255,246,1,134,255,246,1,135,255,246,1,136,255,246,1,137,255,246,1,138,255,246,1,170,0,18,1,171,0,18,1,172,0,18,1,173,0,18,1,182,255,246,1,183,255,246,1,184,255,246,1,185,255,246,1,186,255,246,1,190,255,247,1,207,255,247,1,227,255,247,1,240,255,246,1,241,255,247,1,242,255,247,1,251,255,246,1,252,255,246,4,119,255,217,4,120,255,217,4,123,255,217,4,130,0,40,4,131,255,254,4,132,0,40,4,133,255,254,4,134,255,217,4,135,255,217,4,136,255,236,4,138,255,236,4,140,255,235,4,141,255,235,4,142,255,235,4,143,255,235,4,146,255,235,4,147,255,235,4,148,255,237,4,159,255,216,4,161,0,18,4,186,0,79,7,10,0,40,7,11,255,254,7,12,255,254,7,13,0,40,0,98,0,13,255,212,0,29,255,246,0,30,255,233,0,36,255,246,0,39,255,247,0,48,255,246,0,51,0,27,0,52,0,18,0,55,255,246,0,135,255,212,0,240,255,246,0,241,255,246,0,242,255,246,0,243,255,246,0,244,255,246,0,250,255,233,0,251,255,233,0,252,255,233,0,253,255,233,0,254,255,233,0,255,255,233,1,0,255,233,1,1,255,233,1,2,255,233,1,3,255,233,1,4,255,233,1,5,255,233,1,6,255,233,1,7,255,233,1,8,255,233,1,9,255,233,1,10,255,233,1,11,255,233,1,12,255,233,1,13,255,233,1,14,255,233,1,15,255,233,1,16,255,233,1,17,255,233,1,18,255,233,1,48,255,246,1,49,255,246,1,50,255,246,1,51,255,246,1,52,255,246,1,53,255,246,1,54,255,246,1,55,255,246,1,74,255,247,1,132,255,246,1,133,255,246,1,134,255,246,1,135,255,246,1,136,255,246,1,137,255,246,1,138,255,246,1,170,0,18,1,171,0,18,1,172,0,18,1,173,0,18,1,182,255,246,1,183,255,246,1,184,255,246,1,185,255,246,1,186,255,246,1,190,255,247,1,207,255,247,1,227,255,247,1,240,255,246,1,241,255,247,1,242,255,247,1,251,255,246,1,252,255,246,4,119,255,217,4,120,255,217,4,123,255,217,4,130,0,40,4,131,255,254,4,132,0,40,4,133,255,254,4,134,255,217,4,135,255,217,4,136,255,236,4,138,255,236,4,140,255,235,4,141,255,235,4,142,255,235,4,143,255,235,4,146,255,235,4,147,255,235,4,148,255,237,4,159,255,216,4,161,0,18,4,186,0,79,7,10,0,40,7,11,255,254,7,12,255,254,7,13,0,40,0,1,6,31,255,245,0,4,4,159,255,236,4,163,255,158,4,186,0,56,4,187,255,230,0,3,4,163,255,178,4,186,255,232,4,187,255,232,0,2,4,186,0,56,4,187,0,54,0,1,6,31,255,225,0,1,0,45,0,38,0,21,2,106,255,252,2,129,255,236,2,238,255,166,2,240,255,166,2,250,255,202,2,251,255,202,2,252,255,202,2,253,255,202,3,9,255,254,3,10,255,254,3,11,0,20,3,12,255,234,3,17,0,34,3,18,0,34,3,19,0,4,3,30,255,166,3,32,255,166,3,68,255,166,3,70,255,166,3,112,255,252,4,177,255,250,0,4,3,11,0,2,3,17,255,255,3,18,255,255,3,19,0,2,0,2,3,19,0,2,3,20,0,2,0,4,3,11,255,255,3,17,255,255,3,18,255,255,3,19,255,255,0,11,2,250,255,252,2,251,255,252,2,252,255,252,2,253,255,252,3,10,255,254,3,11,0,20,3,12,255,229,3,17,0,16,3,18,0,16,3,19,0,2,3,20,0,4,0,9,2,250,255,252,2,251,255,252,2,252,255,252,2,253,255,252,3,11,0,40,3,17,0,36,3,18,0,36,3,19,0,6,3,20,0,6,0,5,3,11,0,20,3,17,0,18,3,18,0,18,3,19,0,4,3,20,0,4,0,5,3,11,0,19,3,17,0,17,3,18,0,17,3,19,0,2,3,20,0,2,0,9,2,250,255,252,2,251,255,252,2,252,255,252,2,253,255,252,3,11,0,40,3,17,0,36,3,18,0,36,3,19,0,6,3,20,0,6,0,9,2,250,255,252,2,251,255,252,2,252,255,252,2,253,255,252,3,11,0,40,3,17,0,36,3,18,0,36,3,19,0,6,3,20,0,6,0,7,3,9,0,8,3,10,0,8,3,11,0,40,3,17,255,255,3,18,255,255,3,19,0,4,4,122,0,27,0,2,4,122,0,27,4,175,255,254,0,2,4,120,0,2,4,122,0,2,0,1,4,175,255,252,0,9,2,250,255,252,2,251,255,252,2,252,255,252,2,253,255,252,3,11,0,40,3,17,0,36,3,18,0,36,3,19,0,6,3,20,0,6,0,9,2,250,255,252,2,251,255,252,2,252,255,252,2,253,255,252,3,11,0,40,3,17,0,36,3,18,0,36,3,19,0,6,3,20,0,6,0,9,2,250,255,252,2,251,255,252,2,252,255,252,2,253,255,252,3,11,0,40,3,17,0,36,3,18,0,36,3,19,0,6,3,20,0,6,0,9,2,250,255,252,2,251,255,252,2,252,255,252,2,253,255,252,3,11,0,40,3,17,0,36,3,18,0,36,3,19,0,6,3,20,0,6,0,9,2,250,255,252,2,251,255,252,2,252,255,252,2,253,255,252,3,11,0,40,3,17,0,36,3,18,0,36,3,19,0,6,3,20,0,6,0,9,2,250,255,252,2,251,255,252,2,252,255,252,2,253,255,252,3,11,0,40,3,17,0,36,3,18,0,36,3,19,0,6,3,20,0,6,0,9,2,250,255,252,2,251,255,252,2,252,255,252,2,253,255,252,3,11,0,40,3,17,0,36,3,18,0,36,3,19,0,6,3,20,0,6,0,9,2,250,255,252,2,251,255,252,2,252,255,252,2,253,255,252,3,11,0,40,3,17,0,36,3,18,0,36,3,19,0,6,3,20,0,6,0,4,4,131,255,254,4,133,255,254,7,11,255,254,7,12,255,254,0,4,4,131,255,254,4,133,255,254,7,11,255,254,7,12,255,254,0,4,4,131,255,254,4,133,255,254,7,11,255,254,7,12,255,254,0,4,4,131,255,254,4,133,255,254,7,11,255,254,7,12,255,254,0,4,4,131,255,254,4,133,255,254,7,11,255,254,7,12,255,254,0,4,4,131,255,254,4,133,255,254,7,11,255,254,7,12,255,254,0,1,2,119,0,36,0,2,4,177,255,214,6,1,255,202,0,1,4,175,255,252,0,1,4,177,255,243,0,1,4,175,255,252,0,1,4,175,255,252,0,2,4,177,255,214,6,1,255,202,0,1,4,177,255,243,0,1,4,15,0,83,0,2,4,177,255,214,6,1,255,202,0,2,4,177,255,214,6,1,255,202,0,1,4,175,255,252,0,1,4,175,255,252,0,1,4,177,255,243,0,1,4,177,255,243,0,1,4,175,255,252,0,2,4,120,0,2,4,122,0,2,0,1,4,175,255,252,0,1,4,175,255,252,0,1,4,16,0,11,0,1,4,154,0,18,0,10,4,128,0,36,4,129,0,36,4,130,0,54,4,131,0,36,4,132,0,54,4,133,0,36,7,10,0,54,7,11,0,36,7,12,0,36,7,13,0,54,0,1,3,232,0,36,0,1,3,232,0,36,0,1,4,175,255,252,0,1,4,31,255,253,0,1,4,31,255,253,0,3,3,232,0,36,4,120,0,2,4,122,0,2,0,1,4,175,255,252,0,4,4,78,255,246,4,79,255,245,4,80,255,246,4,84,255,235,0,10,4,77,255,246,4,78,255,227,4,79,255,237,4,80,255,246,4,81,255,216,4,82,255,246,4,83,255,237,4,84,255,225,4,86,255,236,6,173,255,225,0,7,4,78,255,246,4,79,255,246,4,80,255,245,4,82,255,246,4,84,255,245,4,86,255,246,6,173,255,245,0,6,4,78,255,236,4,79,255,246,4,80,255,246,4,82,255,244,4,84,255,236,4,86,255,245,0,6,4,78,255,234,4,79,255,246,4,80,255,245,4,82,255,246,4,84,255,235]);fileData0.push.apply(fileData0,[4,86,255,245,0,7,4,78,255,244,4,79,255,245,4,80,255,245,4,82,255,246,4,84,255,236,4,86,255,246,6,173,255,245,0,11,4,77,255,235,4,78,255,237,4,79,255,236,4,80,255,236,4,81,255,165,4,82,255,227,4,83,255,226,4,84,255,237,4,85,255,226,4,86,255,236,6,173,255,214,0,5,4,78,255,235,4,80,255,246,4,84,255,235,4,86,255,235,6,173,255,245,0,4,4,78,255,236,4,79,255,246,4,80,255,245,4,84,255,235,0,4,4,100,255,238,4,101,255,246,4,102,255,245,4,106,255,236,0,1,4,106,255,236,0,9,4,99,255,246,4,100,255,226,4,101,255,246,4,102,255,235,4,103,255,244,4,104,255,235,4,106,255,226,4,108,255,246,6,173,255,243,0,7,4,100,255,246,4,101,255,246,4,102,255,245,4,104,255,245,4,106,255,236,4,108,255,243,6,173,255,245,0,7,4,100,255,235,4,101,255,246,4,102,255,235,4,104,255,235,4,106,255,226,4,108,255,235,6,173,255,235,0,7,4,100,255,226,4,101,255,246,4,102,255,245,4,104,255,245,4,106,255,225,4,108,255,245,6,173,255,246,0,6,4,100,255,235,4,101,255,246,4,102,255,245,4,104,255,245,4,106,255,225,4,108,255,246,0,10,4,99,255,235,4,100,255,236,4,101,255,246,4,102,255,246,4,103,255,215,4,104,255,235,4,105,255,246,4,106,255,236,4,108,255,246,6,173,255,236,0,6,4,100,255,235,4,101,255,246,4,102,255,246,4,104,255,246,4,106,255,235,4,108,255,245,0,5,4,100,255,236,4,101,255,246,4,102,255,246,4,104,255,246,4,106,255,226,0,19,2,89,0,4,2,90,0,56,2,91,0,38,2,92,0,56,2,94,0,38,2,95,0,20,2,97,0,38,2,140,0,4,2,151,0,36,2,152,0,56,2,159,0,36,2,160,0,56,2,169,0,36,2,170,0,56,2,181,0,18,2,182,0,38,2,190,0,20,2,198,0,18,2,199,0,38,0,19,2,89,0,4,2,90,0,56,2,91,0,38,2,92,0,56,2,94,0,38,2,95,0,20,2,97,0,38,2,140,0,4,2,151,0,36,2,152,0,56,2,159,0,36,2,160,0,56,2,169,0,36,2,170,0,56,2,181,0,18,2,182,0,38,2,190,0,20,2,198,0,18,2,199,0,38,0,1,5,201,255,254,0,1,5,201,255,254,0,1,5,201,255,254,0,9,1,61,0,4,1,63,0,76,1,64,0,76,1,65,0,76,1,66,0,76,1,67,0,76,1,72,0,76,1,74,0,76,1,145,0,54,0,8,3,142,255,216,3,153,255,236,3,184,255,236,3,232,255,234,3,243,255,234,4,18,255,234,5,194,255,234,5,201,255,254,0,1,5,201,255,254,0,1,5,201,255,254,0,1,4,120,0,2,0,90,4,119,255,174,4,120,255,174,4,123,255,174,4,134,255,174,4,135,255,174,4,195,255,217,4,197,255,227,4,201,255,227,4,204,255,138,4,209,255,227,4,211,255,227,4,213,255,218,4,220,255,219,4,221,255,217,4,222,255,217,4,223,255,217,4,224,255,217,4,225,255,217,4,226,255,217,4,227,255,217,4,228,255,217,4,229,255,217,4,230,255,217,4,231,255,217,4,232,255,217,4,233,255,217,4,234,255,217,4,235,255,217,4,236,255,217,4,237,255,217,4,238,255,217,4,239,255,217,4,240,255,217,4,241,255,217,4,242,255,217,4,248,255,227,4,249,255,227,4,250,255,227,4,251,255,227,4,252,255,227,5,19,255,227,5,20,255,227,5,21,255,227,5,22,255,227,5,23,255,227,5,24,255,227,5,25,255,227,5,26,255,227,5,27,255,227,5,44,255,138,5,67,255,227,5,68,255,227,5,69,255,227,5,70,255,227,5,71,255,227,5,72,255,227,5,73,255,227,5,74,255,227,5,75,255,227,5,76,255,227,5,77,255,227,5,78,255,227,5,79,255,227,5,80,255,227,5,81,255,227,5,82,255,227,5,83,255,227,5,84,255,227,5,85,255,227,5,86,255,227,5,87,255,227,5,88,255,227,5,89,255,227,5,90,255,227,5,91,255,227,5,92,255,227,5,100,255,218,5,101,255,218,5,102,255,218,5,103,255,218,5,104,255,218,5,105,255,218,5,106,255,218,5,107,255,218,5,150,255,219,5,151,255,219,5,152,255,219,5,153,255,219,5,154,255,219,6,31,255,207,0,4,5,216,255,225,5,224,255,225,5,234,255,225,5,247,255,225,0,4,5,216,255,225,5,224,255,225,5,234,255,225,5,247,255,225,0,1,4,177,255,216,0,5,4,175,255,254,5,216,255,238,5,224,255,247,5,234,255,247,5,247,255,238,0,4,5,216,255,225,5,224,255,225,5,234,255,225,5,247,255,225,0,4,5,216,255,247,5,224,255,247,5,234,255,247,5,247,255,247,0,5,4,175,255,254,5,216,255,238,5,224,255,247,5,234,255,247,5,247,255,238,0,5,4,175,255,254,5,216,255,238,5,224,255,247,5,234,255,247,5,247,255,238,0,1,4,177,255,216,0,6,4,154,0,18,4,156,0,18,4,158,0,18,4,175,0,18,4,177,0,18,4,179,0,18,0,1,4,177,255,216,0,1,4,177,255,216,0,4,5,216,255,225,5,224,255,225,5,234,255,225,5,247,255,225,0,5,4,175,255,254,5,216,255,238,5,224,255,247,5,234,255,247,5,247,255,238,0,5,5,216,255,247,5,224,255,247,5,234,255,247,5,247,255,247,6,27,255,253,0,5,4,175,255,254,5,216,255,238,5,224,255,247,5,234,255,247,5,247,255,238,0,2,6,12,255,247,6,18,255,241,0,8,6,11,255,247,6,13,255,246,6,14,255,250,6,15,255,231,6,17,255,240,6,18,255,244,6,19,255,242,6,20,255,240,0,7,6,12,255,240,6,14,255,246,6,15,255,219,6,16,255,246,6,17,255,245,6,18,255,237,6,19,255,237,0,4,6,12,255,248,6,14,255,245,6,17,255,246,6,18,255,237,0,3,6,12,255,244,6,16,255,246,6,18,255,237,0,4,6,12,255,245,6,17,255,247,6,18,255,245,6,20,255,246,0,10,6,11,255,245,6,12,255,246,6,13,255,245,6,14,255,245,6,15,255,211,6,16,255,231,6,17,255,237,6,19,255,237,6,20,255,246,6,31,255,244,0,5,6,12,255,239,6,13,255,246,6,14,255,246,6,18,255,241,6,20,255,246,0,4,6,12,255,240,6,13,255,246,6,14,255,246,6,18,255,232,0,2,6,13,255,245,6,18,255,244,0,10,4,78,255,234,4,79,255,246,4,84,255,222,4,86,255,243,4,100,255,235,4,101,255,244,4,102,255,243,4,104,255,243,4,106,255,215,4,108,255,253,0,16,4,77,255,246,4,78,255,237,4,79,255,235,4,80,255,235,4,81,255,155,4,82,255,235,4,83,255,228,4,84,255,236,4,85,255,237,4,86,255,246,4,99,255,235,4,100,255,226,4,105,255,226,4,106,255,225,4,107,255,235,4,108,255,246,0,6,4,79,255,246,4,80,255,246,4,101,255,246,4,102,255,235,4,104,255,246,4,106,255,235,0,12,4,78,0,9,4,79,0,30,4,80,0,30,4,81,255,236,4,82,0,30,4,100,255,246,4,101,0,29,4,102,0,20,4,103,0,20,4,104,0,20,4,107,0,10,4,108,255,246,0,2,167,144,0,4,0,0,169,242,170,50,0,11,0,11,0,0,255,236,255,246,255,246,255,245,255,244,255,244,255,244,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,2,166,168,0,4,0,0,170,12,170,16,0,1,0,5,0,0,255,245,255,236,255,236,255,237,0,2,166,148,0,4,0,0,170,18,170,46,0,5,0,16,0,0,255,235,0,11,0,11,255,244,255,226,255,244,255,226,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,0,11,0,11,255,244,255,226,255,244,255,226,255,245,255,245,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,203,255,198,255,216,0,0,0,0,0,0,255,245,0,0,0,0,0,0,255,246,255,245,255,236,0,0,0,0,255,244,0,0,0,0,0,0,255,246,0,15,0,0,255,245,0,0,0,0,0,0,255,246,255,245,255,236,0,0,0,0,255,244,0,0,0,0,0,0,255,246,0,15,0,2,165,242,0,4,0,0,170,96,170,250,0,26,0,121,0,0,0,19,255,244,255,250,255,176,255,230,255,200,255,220,255,196,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,178,255,176,255,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,255,235,255,225,255,245,255,214,255,212,255,227,255,236,255,225,255,214,255,212,255,226,255,216,255,245,255,235,0,7,255,236,255,235,255,236,255,214,255,243,255,246,255,234,255,243,255,235,255,234,255,236,255,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,255,227,0,0,0,0,0,0,0,0,255,227,0,0,0,0,0,0,0,0,255,246,0,0,0,0,255,237,0,0,0,0,0,0,0,0,255,227,0,0,0,0,0,8,255,245,255,246,255,245,255,236,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,255,244,255,245,0,0,0,0,0,0,0,0,0,0,255,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,158,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,198,0,78,255,160,0,18,255,160,255,178,255,219,0,38,255,235,0,78,255,160,255,219,255,236,255,198,255,246,255,219,0,18,255,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,38,0,0,0,0,0,0,255,226,0,0,0,0,0,0,0,38,0,0,0,0,0,0,255,236,0,0,255,246,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,255,216,0,0,255,246,255,247,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,216,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,19,0,0,255,245,255,212,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,255,244,255,246,255,212,255,244,255,216,255,235,255,226,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,255,219,255,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,255,237,0,9,0,0,255,245,255,216,255,200,0,0,255,236,0,0,255,195,0,0,255,195,255,215,0,0,0,0,0,0,0,0,255,195,0,0,0,0,255,236,0,0,0,0,0,0,255,215,255,246,255,236,0,0,255,216,255,236,0,0,0,0,255,200,255,236,255,235,255,235,255,236,255,236,255,235,255,244,255,237,255,235,255,236,255,236,255,234,255,245,255,237,255,214,255,225,255,215,255,235,255,235,255,236,255,236,255,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,245,255,245,255,246,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,215,0,67,255,174,0,0,255,174,255,188,0,0,0,0,0,0,0,67,255,174,255,225,0,0,255,215,0,0,255,225,0,0,255,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,210,255,236,0,0,255,230,0,0,0,0,0,0,255,210,0,0,255,230,0,0,0,0,0,0,0,0,0,0,0,0,255,210,255,236,0,0,255,230,0,0,255,243,0,0,0,0,255,243,0,0,255,232,255,243,255,235,255,235,255,232,255,210,255,243,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,255,245,255,236,255,198,255,245,255,236,255,236,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,255,198,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,218,255,237,255,236,0,9,0,0,0,27,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,218,0,0,255,237,0,0,255,198,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,8,0,27,255,198,0,8,0,9,0,18,255,236,0,8,0,0,0,0,0,0,0,0,0,0,0,0,255,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,218,255,237,255,236,0,10,0,0,0,38,0,29,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,218,0,0,255,237,0,0,255,178,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,9,0,38,255,178,0,9,0,10,0,29,255,236,0,9,0,0,0,0,0,0,0,0,0,0,0,0,255,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,208,255,237,255,236,0,10,0,0,0,29,0,11,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,208,0,0,255,237,0,0,255,158,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,29,255,158,0,0,0,10,0,11,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,255,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,216,0,0,0,0,0,0,0,0,0,0,0,0,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,216,0,0,0,0,0,0,0,0,255,215,0,0,0,0,255,215,0,17,255,235,255,215,255,246,255,246,255,235,0,0,255,215,255,246,0,0,0,0,0,36,255,176,0,74,0,36,255,176,255,245,0,17,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,255,245,0,0,0,0,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,216,0,0,0,0,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,235,0,0,0,0,0,0,0,0,0,0,0,0,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,216,0,0,0,0,0,0,255,235,0,2,141,134,0,4,0,0,153,194,158,64,0,75,0,69,0,0,255,245,255,235,255,246,255,235,255,246,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,188,0,0,0,0,255,214,0,0,0,10,255,247,255,226,255,246,255,246,255,247,0,8,255,246,255,248,0,20,0,20,255,237,255,234,255,219,255,216,255,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,255,212,255,245,255,245,255,201,255,156,0,0,0,20,0,0,0,11,0,19,0,19,0,20,0,18,0,21,0,0,0,0,255,235,0,0,0,0,0,0,0,0,0,28,255,247,255,246,0,20,255,246,0,28,255,247,255,239,0,10,255,245,255,236,255,198,255,212,255,216,255,185,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,255,246,0,0,0,0,255,246,0,0,255,246,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,235,0,0,255,245,255,236,255,226,0,10,0,5,0,0,0,19,0,10,0,19,0,0,0,9,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,255,236,0,0,255,251,255,241,255,245,255,245,255,246,255,246,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,236,255,245,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,9,0,9,0,15,0,9,255,246,255,239,255,245,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,249,255,237,255,250,0,0,0,0,0,13,0,0,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,255,236,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,255,235,0,0,0,0,0,0,0,0,0,6,0,0,255,236,0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,232,0,0,255,246,255,245,0,0,255,246,0,0,0,0,0,0,0,0,0,19,0,30,0,0,0,0,255,246,255,235,255,245,255,246,0,0,255,245,255,236,0,0,255,236,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,235,255,246,255,236,255,246,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,7,255,244,0,0,0,0,255,236,255,236,0,12,0,12,0,0,0,12,255,246,0,0,0,10,0,7,0,0,255,246,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,10,255,245,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,255,246,0,0,255,233,255,246,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,0,69,0,67,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,215,255,236,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,29,0,40,0,40,0,79,0,90,0,79,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,255,241,255,246,255,245,0,0,0,0,0,49,255,245,0,0,255,246,0,57,0,20,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,255,245,0,9,0,0,0,17,0,8,0,0,0,17,255,246,0,0,255,185,0,0,0,0,0,36,0,18,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);fileData0.push.apply(fileData0,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,10,0,11,0,0,0,0,255,216,255,235,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,255,196,255,245,0,0,0,0,0,0,0,0,255,225,255,220,0,0,0,0,255,246,255,240,255,241,0,0,255,235,255,226,0,0,0,0,0,0,0,0,0,29,0,54,0,0,255,156,255,115,255,240,255,245,255,246,255,236,255,246,255,235,255,245,0,0,255,236,0,0,0,10,255,239,0,0,0,0,0,0,0,0,255,175,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,241,0,0,0,0,0,0,255,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,221,255,194,255,236,255,232,0,0,0,0,0,0,0,0,0,0,255,246,255,245,0,9,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,255,245,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,255,245,0,0,255,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,255,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,255,245,0,0,0,0,0,0,0,0,255,245,0,0,0,32,0,20,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,252,255,251,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,255,246,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,245,0,0,0,0,255,225,0,11,0,0,0,0,0,12,0,23,0,14,0,18,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,18,0,18,0,27,0,18,0,32,0,41,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,255,244,0,0,255,253,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,18,0,18,0,27,0,18,0,27,0,27,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,8,0,18,0,18,0,18,0,18,0,9,0,18,0,9,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,217,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,255,232,0,0,255,249,255,236,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,255,236,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,244,255,235,255,236,0,0,0,0,0,0,255,253,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,255,245,255,246,255,250,0,0,0,0,0,0,0,0,0,20,0,20,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,255,244,255,247,255,246,0,0,255,216,0,20,0,9,0,0,0,8,0,12,0,12,255,245,255,245,0,8,0,0,0,0,255,216,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,17,255,240,0,0,255,241,255,245,0,0,0,0,0,0,0,0,255,243,0,0,0,19,0,17,0,0,0,29,0,0,0,0,255,245,255,246,255,246,255,245,0,0,0,0,255,239,255,246,0,0,255,246,255,245,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,0,0,0,0,0,0,0,0,0,0,255,247,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,172,0,0,0,19,255,250,255,176,255,230,255,200,255,220,0,0,255,196,0,0,0,0,0,27,0,0,255,232,0,0,255,174,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,240,255,136,255,181,255,186,255,195,255,116,0,19,0,0,255,215,0,0,255,234,255,245,0,0,255,205,0,0,0,0,0,0,255,176,0,0,0,0,0,0,0,0,0,0,0,8,255,245,0,0,255,236,0,0,255,246,255,232,0,0,0,0,255,236,255,195,255,197,255,176,255,176,255,175,0,0,0,0,0,0,255,237,255,230,255,225,0,0,255,230,0,0,255,245,255,196,255,216,0,0,255,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,255,246,255,246,255,236,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,0,0,0,22,0,22,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,255,200,255,238,255,216,255,236,255,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,255,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,219,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,255,227,0,0,255,248,255,251,255,245,255,236,255,240,0,0,255,234,0,0,255,236,0,0,255,253,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,255,246,255,236,0,0,255,216,0,8,0,8,0,9,0,19,0,16,0,22,0,9,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,22,0,0,0,0,0,0,0,0,255,244,255,236,0,0,0,0,0,0,0,0,0,9,255,236,0,0,255,235,255,225,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,255,247,0,0,0,0,0,0,0,0,0,0,255,235,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,217,255,248,255,236,0,0,0,0,0,0,255,235,0,0,255,217,0,0,255,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,238,255,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,0,255,246,0,0,0,0,255,207,0,0,0,0,0,0,0,11,0,0,0,0,0,18,0,0,0,0,255,156,255,245,0,0,0,0,0,0,0,0,255,208,255,206,0,0,0,0,0,0,255,246,0,0,0,0,255,235,255,162,0,0,0,0,0,0,0,0,0,39,0,0,0,0,255,136,255,107,255,246,0,0,0,0,255,245,0,0,255,217,255,231,255,218,255,236,0,0,0,0,255,236,0,0,0,0,0,0,0,0,255,166,0,0,0,0,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,255,217,255,237,0,0,0,0,0,0,0,0,255,235,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,38,0,0,0,18,0,79,0,0,0,0,0,0,255,212,0,0,0,36,0,27,0,0,0,36,255,246,255,246,255,235,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,237,0,0,0,0,0,0,0,0,255,250,255,246,0,0,0,0,0,0,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,16,0,7,0,0,255,246,0,0,0,0,0,9,0,8,0,18,0,18,0,9,0,19,0,10,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,36,0,0,0,0,255,248,255,235,255,242,0,0,0,0,0,0,0,0,0,0,255,246,255,224,255,226,0,0,0,9,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,235,255,246,255,236,255,253,255,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,236,0,0,0,0,0,0,0,0,0,0,255,247,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,255,236,0,0,255,245,255,253,255,237,0,28,0,0,0,8,0,27,0,19,0,28,0,18,0,17,0,9,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,255,246,255,245,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,216,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,182,0,0,0,0,255,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,18,255,236,0,0,0,0,0,0,0,0,255,234,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,255,246,255,245,255,236,255,235,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,19,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,255,218,0,0,0,0,0,0,0,0,255,236,255,246,255,219,0,0,255,174,0,0,0,0,0,10,0,9,0,10,0,0,0,0,0,0,255,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,207,255,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,219,255,217,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,180,0,0,0,0,0,0,0,0,0,0,0,0,255,235,0,0,0,0,255,245,0,0,0,0,255,188,255,189,255,222,255,200,255,227,255,227,255,227,255,218,255,200,255,236,255,156,255,195,0,0,0,0,0,0,0,0,255,178,255,216,255,235,255,196,255,235,255,198,255,207,0,0,255,236,255,196,0,0,0,0,0,0,0,0,0,20,0,40,0,0,255,136,255,127,255,209,255,218,255,216,255,209,255,218,255,178,255,196,255,178,255,214,0,0,0,0,255,174,255,216,0,0,0,0,0,0,255,155,255,207,0,0,0,0,0,0,0,0,255,160,255,200,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,42,0,44,0,78,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,218,0,0,0,0,0,42,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,20,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,245,255,226,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,0,0,0,0,0,0,255,246,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,9,0,10,0,9,0,9,0,18,0,9,0,27,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,0,10,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,218,255,214,255,246,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,248,255,245,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,255,236,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,56,0,17,0,0,0,0,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,0,0,255,246,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,246,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,255,196,0,0,0,20,0,38,0,27,0,29,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,18,0,0,0,0,0,0,0,20,255,248,0,19,0,10,0,0,0,20,0,0,0,0,255,198,255,240,0,0,0,0,0,0,0,0,255,241,255,245,0,0,255,247,255,246,255,247,255,226,255,246,0,0,255,238,0,0,0,0,0,0,0,0,0,54,0,51,0,0,255,188,255,178,255,246,255,248,255,248,255,243,255,248,255,234,255,243,255,238,255,234,0,0,0,0,255,229,255,242,0,0,0,0,0,0,255,198,255,236,0,0,0,0,0,0,0,0,0,0,255,247,0,0,0,0,0,0,0,0,0,0,255,235,255,248,255,235,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,241,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,54,0,19,0,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,255,246,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,255,247,0,0,0,0,0,0,0,0,0,0,0,0,255,238,0,0,255,208,0,0,0,20,0,29,0,18,0,11,0,0,0,0,0,0,255,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,255,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,9,0,0,0,20,0,10,0,19,0,19,0,19,0,29,0,0,0,0,255,225,0,0,0,0,0,0,0,0,0,0,255,237,0,0,0,0,0,0,255,247,0,0,0,0,0,0,0,0,255,247,0,0,0,0,0,0,0,0,0,47,0,31,0,0,255,207,255,180,255,247,0,0,0,0,0,0,0,0,255,238,0,0,255,246,255,246,0,0,0,0,255,246,255,246,0,0,0,0,0,0,255,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,255,218,255,243,255,225,0,0,255,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,255,246,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,54,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,255,244,255,245,255,235,0,0,0,0,0,0,255,236,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,255,246,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,9,0,8,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,236,0,0,0,0,0,0,255,246,0,19,0,9,255,236,0,8,0,8,0,9,0,7,0,16,0,9,0,0,0,0,255,216,0,0,0,0,0,0,0,0,255,246,0,8,255,246,0,7,255,244,0,0,255,246,255,246,0,0,0,0,0,0,0,0,255,246,0,0,0,20,0,22,0,0,0,20,0,7,255,245,255,246,255,245,255,246,255,246,0,0,0,0,255,234,255,245,0,0,0,0,255,245,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,18,0,0,0,0,255,216,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,0,0,255,246,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,245,255,246,0,0,0,0,0,0,0,0,255,246,255,236,0,0,255,185,0,0,0,38,0,29,0,18,0,11,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,255,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,241,255,245,0,0,0,0,0,17,0,0,255,234,255,232,0,10,255,236,0,17,0,8,0,0,0,11,255,234,255,238,255,177,255,216,0,0,0,0,0,0,0,0,255,194,255,245,0,0,255,234,255,245,255,223,255,225,255,246,0,0,255,227,0,0,0,0,0,0,0,0,0,38,0,49,0,0,255,156,255,156,255,241,255,245,255,235,255,225,255,245,255,196,255,223,255,196,255,212,0,0,0,0,255,214,255,228,0,0,0,0,0,0,255,178,255,216,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,255,253,0,0,0,0,255,227,0,0,255,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,255,228,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,255,246,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,248,255,227,0,0,0,0,255,247,255,247,0,0,255,247,255,238,0,0,0,0,255,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,255,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,218,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,255,247,255,245,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,255,248,255,240,0,0,0,0,0,0,255,196,0,0,0,0,0,0,0,0,255,237,255,247,255,236,255,237,255,236,0,0,255,228,255,246,0,0,255,237,0,0,0,0,0,0,0,0,0,20,0,20,0,0,0,0,255,218,255,226,255,237,255,237,255,235,255,237,255,241,255,230,255,216,255,216,0,0,255,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,101,204,0,4,0,0,122,10,124,174,0,57,0,70,0,0,255,244,0,9,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,8,255,236,255,226,255,188,255,246,255,248,0,20,0,20,255,214,255,237,255,234,255,219,255,216,255,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,255,246,0,0,0,20,0,0,0,0,255,212,0,18,0,21,0,0,0,0,255,201,255,235,0,0,0,0,0,0,0,0,255,247,0,10,0,9,255,207,0,20,255,246,255,245,255,245,255,245,255,236,255,198,255,212,255,156,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,255,246,0,0,0,0,255,246,255,245,0,0,255,246,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,255,235,0,9,0,0,0,0,0,0,255,236,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,0,10,0,0,255,246,255,245,0,0,0,0,255,245,0,0,255,226,0,0,255,246,0,0,0,0,255,247,255,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,246,255,227,0,0,0,0,0,0,0,0,255,218,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,255,246,255,235,255,225,0,0,0,0,0,0,0,0,255,232,0,0,0,0,255,227,0,0,0,0,0,0,255,244,255,237,255,245,255,236,255,246,255,234,255,244,255,237,255,246,255,245,255,245,255,235,255,236,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,255,243,255,236,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,9,0,8,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,255,245,0,19,0,7,0,0,255,236,255,236,0,16,0,9,0,0,0,0,0,0,255,216,0,0,0,0,0,0,0,0,0,8,0,0,0,0,255,245,0,7,255,244,255,246,0,0,0,0,0,0,0,0,255,246,255,246,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,0,0,255,235,0,0,255,234,0,0,255,245,255,245,0,0,0,42,255,233,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,255,226,0,0,255,246,0,0,0,0,0,0,255,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,255,246,0,0,0,0,0,0,0,0,255,204,0,0,0,0,0,0,0,0,255,199,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,195,0,0,255,235,255,235,255,243,0,0,0,0,255,201,255,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0]);fileData0.push.apply(fileData0,[0,0,255,243,0,0,255,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,0,0,0,0,0,0,0,0,255,245,0,0,255,246,0,0,0,0,0,7,255,245,255,245,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,246,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,0,0,255,235,0,10,0,0,0,0,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,233,0,0,0,0,0,0,0,0,255,246,0,0,255,237,255,246,0,0,0,0,255,246,255,235,255,237,0,0,0,0,0,0,0,0,255,245,0,20,255,234,0,0,0,0,0,0,255,232,255,246,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,216,0,0,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,252,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,196,255,226,0,0,0,0,0,0,255,236,0,0,0,0,255,172,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,227,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,255,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,197,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,196,255,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,200,255,166,255,200,255,158,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,148,0,0,255,216,0,0,0,0,0,0,0,0,255,196,255,244,255,244,0,0,0,0,255,217,255,201,0,0,255,207,0,0,0,0,0,0,0,0,0,0,255,226,255,120,0,0,0,0,0,0,255,140,255,237,255,216,255,160,255,162,0,0,255,140,255,217,255,191,255,172,0,0,255,178,255,180,255,183,0,62,255,162,255,218,0,22,0,0,0,0,0,0,255,217,0,0,0,0,255,185,255,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,0,0,255,243,0,0,0,0,0,0,0,0,255,232,0,0,0,0,0,18,0,18,255,236,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,255,249,0,0,0,0,0,0,0,0,255,234,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,255,242,255,244,0,0,0,0,255,235,0,0,255,236,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,255,245,0,0,0,0,0,0,0,20,0,20,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,0,0,255,234,0,20,255,245,0,0,0,0,255,244,255,245,0,8,0,0,0,0,0,0,255,216,0,0,0,0,0,0,0,0,255,246,0,0,0,0,255,245,0,17,255,240,255,234,255,246,0,0,0,0,0,0,255,243,255,216,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,255,246,0,0,255,239,0,0,255,246,0,0,0,0,0,22,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,0,0,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,158,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,214,0,0,0,0,255,246,0,0,0,0,0,0,255,245,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,252,0,0,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,252,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,227,0,0,255,246,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,176,0,0,0,0,0,0,255,214,255,218,0,0,0,0,0,0,0,0,0,0,0,0,255,233,0,0,255,237,0,0,0,0,0,0,255,245,255,224,255,236,255,238,255,218,0,0,0,0,0,0,0,0,0,0,255,225,255,235,0,0,0,0,0,0,0,0,0,0,255,232,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,252,0,0,0,0,0,0,255,244,0,0,0,0,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,165,0,0,255,237,0,0,0,0,0,0,0,0,255,207,255,245,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,255,227,0,0,255,237,0,0,255,227,0,0,255,236,255,226,255,247,255,234,255,227,0,0,255,246,255,216,0,0,0,0,255,236,0,0,0,40,255,237,0,0,0,19,0,0,255,234,0,0,0,0,0,0,0,0,255,195,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,217,255,235,0,0,255,236,0,0,0,0,255,217,0,0,255,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,217,0,0,0,0,0,0,255,246,255,235,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,9,255,207,0,0,0,0,0,0,255,226,0,18,0,0,0,0,255,156,0,0,255,245,0,0,0,0,0,0,0,0,255,206,255,235,0,0,0,0,0,0,0,0,0,0,255,246,255,162,0,0,0,0,0,0,0,0,0,0,255,245,255,199,0,0,255,216,255,244,255,231,0,0,255,235,255,237,0,0,255,214,255,231,0,0,0,0,255,218,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,216,0,0,0,0,0,0,0,0,255,204,0,0,0,0,0,0,0,49,255,166,0,0,0,0,0,0,255,240,0,0,255,240,0,0,0,0,0,0,0,0,255,200,0,0,0,0,0,0,255,246,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,255,216,0,0,0,0,255,236,255,219,255,220,255,236,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,0,0,0,0,0,0,0,9,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,255,227,0,0,255,236,255,240,0,0,255,234,255,236,0,0,255,236,0,0,255,253,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,236,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,8,0,9,0,0,0,9,255,235,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,244,0,0,0,0,0,22,0,0,0,0,255,236,255,236,0,0,0,0,0,0,255,216,0,0,255,245,0,0,0,0,255,217,0,0,0,0,0,0,0,0,0,0,0,0,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,0,0,0,0,0,0,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,255,234,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,0,0,255,220,255,238,0,0,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,255,218,0,0,0,0,0,0,255,247,0,0,0,0,0,0,0,0,255,238,0,0,0,0,0,0,0,0,0,0,255,235,0,0,255,235,0,0,0,0,0,0,0,0,255,217,0,0,0,0,0,0,0,0,255,236,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,0,255,207,255,197,255,235,255,236,0,0,255,236,255,238,0,0,0,0,255,234,0,0,0,0,255,236,0,0,255,246,0,0,255,237,255,246,0,0,0,0,255,237,255,216,255,246,255,218,0,0,0,0,0,0,255,235,0,20,255,187,0,0,0,0,0,0,0,0,255,228,255,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,218,0,0,255,227,255,236,0,0,0,0,255,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,18,0,0,0,41,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,238,255,245,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,20,0,18,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,255,236,0,0,0,0,0,0,0,0,255,237,255,237,0,0,0,0,0,0,255,245,0,0,0,0,255,247,0,0,255,236,255,245,255,250,0,0,255,236,0,0,255,235,255,245,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,255,226,255,236,0,0,0,0,0,0,255,246,255,219,0,0,255,174,0,0,0,0,0,0,0,10,0,9,0,10,0,0,0,0,0,0,0,0,255,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,219,0,0,255,217,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,255,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,227,255,225,255,227,255,188,255,227,0,0,255,222,0,0,255,218,255,200,255,236,255,156,0,0,255,195,0,0,0,0,0,0,0,0,255,216,255,236,255,245,0,0,255,196,255,235,255,235,255,245,255,196,0,0,0,0,0,0,0,0,0,0,255,209,255,183,0,0,255,246,0,0,255,196,255,237,255,217,255,194,255,207,255,245,255,196,255,217,255,200,255,178,0,0,255,214,255,216,255,201,0,42,255,181,255,200,0,0,0,0,0,0,0,0,255,226,0,0,0,0,255,204,255,207,0,0,0,0,0,36,255,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,255,244,255,246,0,0,255,246,255,236,0,0,255,185,0,0,0,0,0,38,0,29,0,18,0,11,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,246,0,0,0,0,255,246,255,246,0,0,0,0,0,0,0,0,0,0,255,234,255,216,255,245,255,234,0,0,0,0,0,10,255,245,0,11,255,234,255,238,255,177,0,17,255,216,0,0,0,0,0,0,0,0,255,245,0,0,255,245,0,0,255,234,255,245,255,241,0,0,255,227,0,0,0,0,0,0,0,0,0,0,255,225,255,213,0,0,0,0,0,0,255,223,255,236,255,227,255,223,255,216,255,252,255,223,255,245,255,216,255,196,0,0,255,212,255,228,255,224,0,62,255,245,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,255,216,0,0,0,0,0,108,255,178,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,19,0,0,0,0,0,0,255,249,0,0,0,0,0,0,0,0,0,38,255,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,255,246,255,227,255,246,255,234,0,0,0,0,0,0,0,0,0,20,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,233,255,244,255,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,17,255,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,19,0,0,0,0,0,0,255,225,0,19,255,236,0,0,0,0,0,38,255,225,255,234,255,235,255,236,0,0,0,0,0,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,54,0,0,0,0,0,0,0,0,255,248,0,0,0,0,0,0,0,0,255,247,255,238,0,0,0,0,0,0,255,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,218,255,246,0,0,0,0,0,0,0,0,0,0,255,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,255,237,0,0,255,248,0,0,0,0,0,0,255,240,0,0,0,0,0,0,0,0,255,196,0,0,0,0,0,0,0,0,255,247,0,0,255,247,255,238,255,237,255,236,255,245,255,245,255,237,0,0,0,0,0,0,0,0,0,0,255,235,0,0,0,0,255,237,0,0,255,230,0,0,255,217,255,237,0,0,0,0,255,230,255,217,255,228,255,216,0,0,255,216,0,0,255,227,0,24,255,224,0,0,0,0,0,0,255,218,255,247,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,70,184,0,4,0,0,96,220,100,172,0,59,0,112,0,0,255,246,255,245,255,235,255,234,255,246,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,188,0,0,255,214,0,0,0,10,255,197,255,247,0,8,255,246,255,226,255,237,0,20,0,20,255,246,255,237,255,234,255,219,255,216,255,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,255,245,255,212,255,216,255,201,255,156,0,0,255,217,0,20,0,20,0,19,0,0,0,0,0,0,0,0,0,18,255,235,0,0,0,0,0,0,0,0,0,28,255,247,255,234,255,176,0,20,0,28,0,36,0,20,0,10,0,20,255,246,255,198,0,18,255,246,0,20,255,246,0,20,255,245,255,216,0,11,255,239,255,245,0,19,255,245,0,19,0,20,0,10,255,245,255,245,0,21,255,236,255,198,255,212,255,216,255,185,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,225,0,0,255,215,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,255,248,0,0,0,0,255,246,255,239,255,246,0,0,0,0,0,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,255,217,255,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,255,218,0,0,0,0,0,0,0,0,0,0,255,247,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,212,0,0,0,0,255,205,0,0,0,0,255,245,255,196,255,216,0,0,0,0,255,234,0,0,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,255,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,255,244,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,218,255,215,255,156,255,213,255,194,0,0,0,0,255,225,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,255,185,0,0,0,0,255,245,0,0,0,0,0,0,0,0,255,176,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,255,177,255,198,0,0,0,0,0,0,0,0,255,253,255,245,0,0,255,237,0,0,255,246,255,245,255,252,255,234,255,253,255,234,255,253,255,234,255,236,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,236,255,235,255,235,255,253,255,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,255,246,0,0,0,0,255,236,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,255,236,255,226,255,253,255,237,0,28,255,246,0,0,0,18,0,19,0,8,255,236,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,241,0,0,0,0,0,0,0,0,0,0,0,37,0,0,255,234,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,255,246,0,0,0,0,255,245,0,0,0,0,0,0,255,243,0,0,0,0,0,0,0,11,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,255,236,255,236,255,244,0,0,255,208,255,236,0,0,255,237,255,245,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,207,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,19,0,0,255,237,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,176,255,236,255,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,214,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,255,245,0,0,0,0,255,245,255,233,0,0,0,0,255,214,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,238,255,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,196,0,0,255,235,0,0,0,0,255,212,0,0,0,0,255,246,255,213,0,0,255,225,0,0,0,9,0,0,0,0,255,236,255,237,255,237,255,209,255,209,255,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,217,0,0,255,248,255,235,0,0,255,236,255,236,0,0,255,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,129,0,0,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,238,0,0,255,200,255,200,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,0,0,0,0,0,255,207,0,0,0,0,0,0,0,11,0,0,0,0,0,0,255,156,0,0,255,245,0,0,0,0,0,0,0,0,255,208,255,206,0,0,0,0,255,199,255,246,0,0,255,196,255,235,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,255,236,0,0,0,0,255,136,0,0,255,236,0,0,0,0,255,107,0,0,255,253,0,0,255,197,0,0,0,0,0,0,255,218,255,236,0,0,255,246,255,162,255,162,255,160,255,160,0,0,0,0,255,231,255,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,255,246,255,236,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,255,246,0,0,255,246,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,255,245,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,239,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,255,249,0,13,0,0,255,237,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,251,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,255,236,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,216,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,255,235,255,216,0,0,0,0,0,6,255,214,0,0,0,22,0,0,255,236,255,216,0,0,0,0,0,0,255,216,0,0,0,0,0,0,0,0,0,0,0,0,255,216,255,236,0,0,0,0,0,0,0,0,0,0,0,0,255,232,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,245,255,246,255,245,0,0,0,0,255,246,0,0,0,0,0,0,255,236,255,245,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,156,0,0,0,0,0,0,0,0,0,0,0,0,255,225,0,0,0,0,0,0,255,199,255,245,255,245,255,196,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0]);fileData0.push.apply(fileData0,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,0,0,255,245,255,208,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,255,246,0,0,0,0,0,0,0,0,0,0,255,246,255,200,255,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,208,0,0,255,246,0,0,0,0,0,0,255,245,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,255,196,0,0,255,226,255,226,0,17,0,0,255,238,0,0,255,172,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,87,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,255,197,0,0,255,197,0,0,255,177,255,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,189,0,0,0,0,0,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,201,0,0,255,219,0,0,0,0,255,158,255,200,255,178,0,0,0,0,0,0,0,0,255,236,255,148,0,0,255,216,0,0,0,0,0,0,0,0,255,158,255,196,255,189,0,0,255,140,255,179,255,198,255,138,255,244,0,0,255,217,255,220,255,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,255,226,255,139,0,0,0,0,255,76,0,0,255,180,255,199,255,200,255,58,255,200,0,0,255,216,255,216,255,180,0,0,0,0,255,172,255,178,0,0,255,207,255,120,255,120,255,139,255,139,0,0,0,0,255,140,0,0,255,190,0,0,0,0,255,162,0,0,0,0,255,178,255,189,255,189,255,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,255,235,255,218,255,226,0,0,255,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,255,246,0,0,255,245,0,0,0,4,0,0,0,15,0,0,255,246,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,255,246,255,247,0,0,0,7,0,0,0,0,0,0,255,236,0,0,0,0,255,245,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,255,234,255,246,0,0,0,0,255,236,255,245,0,0,0,0,0,0,255,236,0,0,0,9,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,236,255,235,0,0,255,246,0,19,255,214,0,9,0,7,0,8,255,236,255,234,0,0,0,0,0,0,255,216,0,0,0,0,0,0,0,0,255,246,0,8,255,224,255,245,0,0,0,0,0,18,0,0,0,0,0,7,255,244,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,20,0,0,0,0,255,245,255,246,0,7,255,246,0,0,0,0,255,246,255,236,0,0,0,0,255,234,255,245,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,233,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,246,255,235,255,234,255,246,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,255,236,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,7,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,255,236,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,0,0,255,228,0,0,0,0,0,10,255,236,255,245,0,0,0,0,255,237,255,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,228,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,238,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,233,0,0,0,0,0,0,255,246,0,0,255,246,255,228,255,246,0,0,255,246,0,0,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,246,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,29,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,255,214,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,0,20,0,0,255,237,0,0,0,28,255,237,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,0,38,0,0,0,114,0,0,0,19,255,246,0,11,0,0,0,0,0,0,0,0,0,20,0,29,0,0,0,28,0,0,0,0,0,0,0,9,0,0,0,18,255,246,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,19,0,58,0,40,0,4,0,0,255,196,0,58,0,0,0,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,194,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,255,245,0,0,255,237,255,237,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,0,0,0,40,255,249,0,42,0,0,255,245,0,0,255,236,0,0,0,0,255,249,0,0,255,237,255,176,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,255,246,0,19,255,218,255,246,0,0,255,216,0,28,0,0,0,0,0,4,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,42,0,21,0,0,0,0,0,0,255,246,255,235,0,34,0,20,255,176,0,0,0,0,0,0,0,0,255,156,255,246,0,58,0,0,0,0,255,236,0,58,0,0,255,218,255,234,0,0,0,0,255,218,255,218,255,218,255,218,0,58,0,0,255,240,0,0,255,245,0,0,0,0,255,247,0,0,0,0,0,0,255,236,255,236,0,0,0,0,0,0,0,0,0,0,0,21,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,8,0,9,0,18,0,18,0,0,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,255,246,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,255,217,0,0,0,0,0,0,0,0,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,255,234,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,255,244,0,0,0,4,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,0,255,252,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,255,236,0,0,0,0,255,235,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,236,0,0,0,0,0,17,0,0,255,237,0,0,0,18,0,17,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,0,0,255,226,0,0,0,0,0,0,255,218,0,0,0,0,0,0,255,219,255,218,0,0,0,0,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,0,255,235,255,237,0,20,0,18,0,37,0,20,0,0,0,0,255,246,255,237,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,255,234,255,244,0,0,0,0,0,0,0,0,0,3,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,238,255,244,255,200,255,216,255,236,255,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,255,241,0,0,0,0,0,0,0,0,0,0,255,239,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,219,255,236,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,255,237,0,0,255,245,255,248,255,227,255,236,0,0,255,234,255,236,0,0,255,236,0,0,255,253,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,227,0,0,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,255,235,255,236,0,0,255,216,0,8,0,0,0,8,0,9,0,16,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,22,0,0,255,234,255,245,0,0,0,0,0,0,0,0,0,0,255,236,0,19,0,0,0,0,0,0,255,246,0,0,0,0,255,244,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,9,255,236,255,245,0,0,0,0,0,0,255,235,0,0,255,245,0,0,0,0,255,225,0,0,0,0,0,0,255,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,228,255,237,255,246,0,0,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,255,235,0,0,0,0,0,0,0,0,255,246,255,245,255,225,255,236,0,0,0,0,0,0,0,0,0,0,0,0,255,178,0,0,255,177,255,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,218,0,0,0,0,255,236,255,236,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,180,255,176,0,0,255,212,0,0,255,245,255,246,255,246,0,0,0,0,0,0,0,0,0,0,255,224,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,194,0,0,0,0,255,205,255,245,0,0,255,245,255,205,255,218,0,0,0,0,255,234,255,237,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,255,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,255,243,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,228,255,236,255,138,255,214,255,180,0,0,0,0,255,235,255,246,0,0,0,0,255,235,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,180,0,0,0,0,255,246,0,0,255,246,0,0,0,0,255,198,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,255,180,255,160,0,0,0,0,0,0,255,246,0,0,255,246,0,0,255,236,0,0,255,235,0,0,0,0,255,237,0,0,255,233,255,245,255,235,0,0,255,233,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,255,248,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,255,236,0,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,32,0,27,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,18,0,0,255,236,0,0,0,0,0,0,0,0,255,234,0,0,0,0,0,0,255,223,255,246,255,246,255,216,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,54,0,0,255,237,255,217,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,255,236,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,19,255,246,0,0,0,0,0,0,255,245,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,255,236,255,218,255,236,0,0,0,0,255,238,0,0,255,174,255,246,0,0,0,0,0,10,0,9,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,138,0,0,255,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,255,219,255,217,255,207,0,0,255,199,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,208,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,180,0,0,0,0,0,0,0,0,0,0,255,235,0,0,255,229,0,0,0,0,255,188,255,218,255,189,255,227,255,227,255,222,0,0,255,236,255,156,0,0,255,195,0,0,0,0,0,0,0,0,255,178,255,216,255,217,0,0,255,159,255,198,255,208,255,157,255,236,255,196,255,235,255,238,255,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,209,255,158,0,0,0,0,255,136,0,0,255,200,255,209,255,218,255,127,255,218,0,0,255,236,255,235,255,216,0,0,0,0,255,178,255,214,0,0,255,209,255,160,255,160,255,180,255,179,0,0,0,0,255,196,255,155,255,209,0,0,0,0,255,181,0,0,0,0,255,198,255,207,255,207,255,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,160,0,0,0,0,0,0,0,0,255,245,0,0,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,255,246,0,38,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,236,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,20,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,40,0,0,0,0,0,39,0,0,0,0,255,246,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,22,0,22,0,22,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,0,0,0,0,255,246,255,245,255,235,255,234,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,212,0,0,0,0,255,203,0,0,0,0,0,0,255,196,255,217,0,0,0,0,255,234,255,234,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,255,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,252,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,255,218,255,194,255,214,255,194,0,0,0,0,255,243,0,0,0,0,0,0,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,255,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,196,255,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,253,0,0,255,245,255,244,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,255,253,0,0,255,246,0,0,0,0,0,0,0,0,0,0,255,216,0,0,0,0,0,0,0,0,0,0,0,0,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,255,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,255,245,255,245,255,245,0,7,255,246,0,0,0,0,255,194,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,156,0,7,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,255,245,0,0,255,225,255,225,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,255,236,0,19,0,0,255,234,255,235,255,215,0,0,0,0,255,236,255,236,0,0,255,174,0,0,255,244,0,0,0,0,0,0,0,0,255,235,255,216,255,236,255,245,255,196,255,224,255,244,255,176,255,234,0,0,0,0,0,0,255,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,10,0,0,0,0,0,0,0,0,255,245,255,214,0,20,0,0,255,152,0,0,255,234,255,245,255,237,255,136,255,237,255,236,0,0,255,235,255,232,255,236,255,234,255,216,255,234,0,0,255,245,255,195,255,195,255,196,255,195,0,0,255,246,255,216,0,0,255,245,0,0,0,0,255,235,0,0,0,0,255,234,255,226,255,226,255,235,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,0,0,0,0,255,235,0,0,255,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,255,246,255,245,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,255,227,0,0,0,0,0,0,255,245,255,227,0,0,255,246,255,247,0,0,255,246,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,235,255,226,255,236,255,226,0,10,255,237,0,5,0,0,0,10,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,228,0,0,0,0,0,0,0,0,0,0,0,10,0,0,255,228,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,255,246,255,246,0,0,0,0,255,251,0,0,255,246,0,0,255,245,255,241,255,245,0,0,0,0,255,236,0,0,255,247,0,0,0,0,0,0,0,0,255,245,0,0,0,0,255,248,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,212,0,0,0,0,255,215,255,244,0,0,0,0,255,216,255,218,0,0,0,0,255,237,255,237,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,255,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,160,255,214,255,198,0,0,0,0,255,235,0,0,0,0,0,0,255,235,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,196,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,232,255,200,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,255,246,0,0,0,0,255,236,0,0,255,246,0,0,255,244,0,0,255,236,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,19,210,0,4,0,0,55,150,56,42,0,11,0,142,0,0,0,20,0,20,0,20,0,80,255,236,0,18,255,236,0,18,0,80,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,40,0,40,0,4,0,0,0,0,0,0,0,0,0,4,0,0,255,246,0,38,0,4,255,236,255,246,255,236,255,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,40,0,40,0,20,0,0,255,236,255,178,0,0,0,20,0,0,255,246,0,38,0,40,255,176,255,246,255,176,255,135,0,20,255,232,255,214,255,212,255,237,255,214,255,236,255,197,255,198,255,244,255,227,255,220,255,179,255,158,255,236,255,234,255,198,255,244,0,20,255,214,255,165,255,244,255,227,255,220,255,179,255,158,255,186,0,20,255,244,255,227,255,220,255,179,255,158,255,236,255,240,255,236,255,197,255,198,255,241,255,208,255,225,255,236,255,186,255,195,255,175,255,179,255,246,255,245,255,226,255,226,255,234,255,226,255,226,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,246,255,219,0,0,255,236,255,234,255,216,255,234,0,0,255,236,0,0,255,246,255,219,255,196,0,0,255,196,0,0,0,0,0,0,255,246,255,236]);fileData0.push.apply(fileData0,[0,19,0,9,0,0,0,0,255,238,0,0,0,0,255,227,255,219,255,214,0,0,255,245,255,198,0,0,0,0,0,9,255,216,0,0,0,0,255,227,255,219,255,214,0,0,0,0,0,0,0,0,255,227,255,219,255,214,0,0,0,0,0,0,0,0,255,238,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,255,235,255,245,255,234,255,245,255,246,255,235,255,243,255,236,255,235,255,245,255,245,255,234,255,234,255,234,255,236,255,244,255,245,255,234,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,255,234,0,0,0,0,0,0,255,246,0,0,0,0,255,228,255,246,255,228,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,255,244,0,0,0,0,255,245,255,245,255,216,0,0,0,0,255,198,0,0,0,0,0,0,255,236,0,0,0,0,255,245,255,245,255,216,255,245,0,0,0,0,0,0,255,245,255,245,255,216,0,0,0,0,0,0,0,0,255,244,0,0,0,0,255,244,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,245,0,0,255,236,255,236,0,0,0,0,255,236,0,0,255,236,255,245,255,218,0,0,0,0,0,0,255,236,255,245,0,0,255,246,255,245,255,246,255,245,255,245,255,245,255,245,255,228,255,245,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,238,0,0,255,226,255,232,0,0,255,244,0,0,255,226,0,0,0,0,255,238,255,212,0,0,255,212,0,0,0,0,0,0,0,0,255,216,0,0,0,0,0,0,0,0,255,234,0,0,0,0,255,218,255,217,255,216,0,0,0,0,255,196,0,0,0,0,0,0,0,0,0,0,0,0,255,218,255,217,255,216,255,245,0,0,0,0,0,0,255,218,255,217,255,216,0,0,0,0,0,0,0,0,255,234,0,0,0,0,255,246,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,255,244,255,235,255,245,0,0,255,245,255,234,255,245,255,236,255,245,0,0,255,235,255,245,0,0,0,0,255,235,255,226,255,235,255,245,255,235,0,0,0,0,0,0,0,0,0,0,255,236,255,236,0,0,0,0,0,0,255,218,255,236,255,217,255,236,255,217,255,218,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,218,255,189,255,196,0,0,255,192,0,17,255,236,0,0,0,0,255,192,0,0,255,216,255,196,0,17,0,0,0,17,0,0,255,196,0,0,0,0,0,0,255,236,255,236,0,0,0,0,0,18,255,218,255,236,0,0,0,0,0,0,0,0,0,0,0,0,255,218,255,196,255,236,0,0,255,218,255,236,0,0,0,0,0,0,0,0,255,196,255,218,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,208,255,201,255,246,0,56,255,201,255,238,255,218,255,196,255,201,255,218,0,76,255,236,255,236,255,218,0,76,0,58,0,58,255,236,255,160,255,208,255,201,255,245,255,218,255,246,255,197,255,160,255,201,255,198,255,245,255,118,0,0,0,0,0,0,0,0,255,217,255,189,255,196,0,0,255,190,0,20,0,0,0,0,0,0,255,190,0,0,255,215,255,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,218,0,0,0,0,0,0,255,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,182,0,0,255,218,0,0,255,182,0,0,0,0,0,0,0,0,0,0,0,0,255,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,216,0,0,0,0,0,0,0,0,255,216,0,0,255,180,255,211,255,199,0,58,255,211,0,0,0,0,0,0,255,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,160,255,180,255,211,255,237,255,200,255,199,255,136,255,160,255,201,0,0,255,245,0,0,255,238,255,238,255,227,0,0,255,216,0,0,255,176,0,0,255,172,0,9,0,0,0,0,0,0,255,172,0,0,255,214,255,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,218,0,0,0,0,0,0,255,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,219,0,0,255,218,0,0,255,219,0,0,0,0,0,0,0,0,0,0,0,0,255,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,255,246,0,0,255,218,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,255,246,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,212,255,236,0,0,255,212,0,0,0,0,0,0,255,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,212,0,0,0,0,255,236,255,152,0,0,255,182,0,0,255,234,0,0,0,0,0,0,0,0,0,1,0,48,7,33,7,35,7,36,7,38,7,39,7,41,7,43,7,45,7,47,7,48,7,51,7,53,7,55,7,57,7,59,7,61,7,64,7,66,7,68,7,69,7,70,7,71,7,85,7,102,7,103,7,107,7,109,7,110,7,112,7,113,7,114,7,116,7,118,7,120,7,122,7,124,7,126,7,128,7,130,7,132,7,134,7,136,7,138,7,139,7,140,7,141,7,142,7,143,0,1,0,131,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,50,0,51,0,52,0,53,0,54,0,55,1,15,1,16,1,46,1,71,1,73,1,116,1,117,1,118,1,124,1,163,1,164,1,188,1,189,1,190,1,192,1,193,1,196,1,199,1,200,1,201,1,202,1,203,1,204,1,205,1,206,1,207,1,208,1,209,1,211,1,213,1,218,1,224,1,225,1,226,1,227,1,228,1,229,1,230,1,231,1,233,1,234,1,235,1,236,1,240,1,243,1,244,1,245,1,246,1,247,1,248,1,249,1,250,1,251,1,252,1,253,2,23,2,35,2,45,2,46,2,55,2,98,2,102,2,104,2,106,2,112,2,114,2,117,2,121,3,99,3,101,3,228,3,231,3,233,3,234,3,238,3,240,3,246,3,251,3,254,3,255,4,3,4,5,4,6,4,7,4,12,4,28,4,44,4,45,4,59,5,161,5,162,5,165,5,166,5,167,5,169,5,170,5,172,5,173,5,175,5,177,5,179,5,180,7,16,7,26,7,32,0,1,0,31,7,34,7,37,7,40,7,42,7,44,7,46,7,49,7,50,7,52,7,54,7,56,7,58,7,60,7,62,7,65,7,67,7,104,7,108,7,111,7,115,7,117,7,119,7,121,7,123,7,125,7,127,7,129,7,131,7,133,7,135,7,137,0,1,0,104,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,77,0,78,0,108,0,133,0,175,0,176,0,177,0,183,0,221,0,222,0,247,0,248,1,210,1,223,1,238,2,9,2,20,3,138,3,141,3,143,3,144,3,148,3,150,3,156,3,161,3,164,3,165,3,169,3,171,3,172,3,173,3,194,3,210,3,211,3,225,4,195,4,196,4,197,4,198,4,199,4,200,4,201,4,202,4,203,4,204,4,205,4,206,4,207,4,208,4,209,4,210,4,211,4,212,4,213,4,214,4,215,4,216,4,217,4,218,4,219,4,220,4,242,4,243,5,17,5,42,5,84,5,90,5,114,5,131,5,132,5,158,5,182,5,193,5,195,5,196,5,198,5,200,5,209,0,1,0,1,7,74,0,1,0,1,7,32,0,1,0,2,7,86,7,87,0,1,0,13,0,6,0,22,0,23,0,32,0,48,0,49,4,197,4,213,4,214,5,114,5,179,5,182,7,32,0,2,0,5,7,72,7,73,0,0,7,76,7,84,0,2,7,90,7,96,0,11,7,98,7,101,0,18,7,105,7,105,0,22,0,2,0,45,0,4,0,19,0,0,0,21,0,55,0,16,0,177,0,177,0,51,0,222,0,222,0,52,0,247,0,247,0,53,1,16,1,16,0,54,1,73,1,73,0,55,1,118,1,118,0,56,1,164,1,164,0,57,1,188,1,188,0,58,1,192,1,194,0,59,1,198,1,202,0,62,1,204,1,206,0,67,1,209,1,211,0,70,1,213,1,214,0,73,1,218,1,218,0,75,1,223,1,225,0,76,1,231,1,231,0,79,1,233,1,236,0,80,1,238,1,238,0,84,1,245,1,250,0,85,2,9,2,9,0,91,2,23,2,23,0,92,2,35,2,35,0,93,2,46,2,46,0,94,2,55,2,55,0,95,2,98,2,98,0,96,2,102,2,102,0,97,2,104,2,104,0,98,2,121,2,121,0,99,4,195,4,210,0,100,4,212,4,220,0,116,5,84,5,84,0,125,5,114,5,114,0,126,5,132,5,132,0,127,5,161,5,162,0,128,5,165,5,167,0,130,5,169,5,170,0,133,5,172,5,173,0,135,5,175,5,175,0,137,5,177,5,177,0,138,5,179,5,180,0,139,5,182,5,182,0,141,5,195,5,195,0,142,7,32,7,32,0,143,0,1,0,1,7,97,0,1,0,1,7,75,0,1,0,7,0,18,0,24,0,44,0,50,4,209,4,215,7,32,0,1,0,1,7,88,0,1,0,11,0,30,0,34,0,38,0,44,0,50,1,73,1,192,1,199,1,202,2,23,7,32,0,1,0,1,7,89,0,1,0,13,0,4,0,8,0,12,0,18,0,24,1,218,2,9,4,195,4,199,4,203,4,209,4,215,5,84,0,1,0,3,7,39,7,51,7,53,0,1,0,140,0,9,0,25,0,53,1,118,1,119,1,120,1,121,1,122,1,123,1,192,1,196,1,199,1,211,1,213,1,223,1,233,1,236,1,238,1,247,1,248,1,249,1,250,1,251,2,67,2,70,2,74,2,82,2,83,2,84,2,86,2,87,2,95,2,96,2,103,2,111,2,119,2,122,2,188,2,189,2,190,2,191,2,192,2,193,2,194,2,195,3,12,3,13,3,14,3,15,3,16,3,20,3,98,3,141,3,142,3,161,3,164,3,167,3,177,3,191,3,195,3,196,3,197,3,208,3,213,3,226,3,227,3,232,3,253,3,254,4,1,4,16,4,29,4,30,4,32,4,36,4,42,4,44,4,45,4,46,4,47,4,77,4,79,4,80,4,81,4,82,4,83,4,84,4,85,4,86,4,99,4,100,4,101,4,102,4,103,4,104,4,105,4,106,4,107,4,108,4,136,4,138,4,153,4,155,4,157,4,159,4,174,4,176,4,178,4,211,5,114,5,191,5,192,5,193,5,194,5,197,5,211,5,212,5,215,5,225,5,241,5,242,5,243,5,245,5,248,5,252,5,253,6,11,6,12,6,13,6,14,6,16,6,17,6,18,6,19,6,20,6,31,6,168,6,169,6,170,6,172,0,1,0,11,1,218,1,238,3,109,3,128,3,129,3,130,3,131,3,132,3,133,3,134,3,135,0,1,0,1,4,62,0,1,0,5,3,151,3,152,3,241,3,242,5,254,0,1,0,26,1,223,1,247,1,248,1,249,1,250,2,113,3,210,3,214,4,44,4,45,4,84,4,106,4,125,4,127,4,148,4,159,4,161,5,250,6,12,6,18,6,20,6,24,6,25,6,27,6,28,6,31,0,2,0,32,0,4,0,32,0,0,0,34,0,37,0,29,0,40,1,26,0,33,1,30,1,60,1,20,1,73,1,73,1,51,1,75,1,80,1,52,1,82,1,85,1,58,1,87,1,186,1,62,1,188,1,189,1,162,1,192,1,196,1,164,1,199,1,200,1,169,1,202,1,202,1,171,1,206,1,206,1,172,1,209,1,211,1,173,1,213,1,216,1,176,1,224,1,227,1,180,1,229,1,230,1,184,1,232,1,233,1,186,1,236,1,237,1,188,1,239,1,240,1,190,1,243,1,243,1,192,1,246,1,246,1,193,1,251,1,252,1,194,2,4,2,4,1,196,2,7,2,54,1,197,2,57,2,57,1,245,4,195,4,202,1,246,4,204,5,30,1,254,5,44,5,48,2,81,5,50,5,155,2,86,5,157,5,160,2,192,7,151,7,151,2,196,0,2,0,6,2,65,2,112,0,0,2,114,3,100,0,48,3,102,3,102,1,35,3,112,3,112,1,36,5,161,5,189,1,37,6,235,6,236,1,66,0,2,0,33,3,138,3,144,0,0,3,147,3,150,0,7,3,153,3,181,0,11,3,183,3,187,0,40,3,190,3,198,0,45,3,201,3,202,0,54,3,205,3,205,0,56,3,208,3,209,0,57,3,212,3,213,0,59,3,215,3,216,0,61,3,219,3,234,0,63,3,237,3,240,0,79,3,243,4,13,0,83,4,18,4,21,0,110,4,24,4,32,0,114,4,35,4,36,0,123,4,39,4,39,0,125,4,42,4,43,0,126,4,46,4,49,0,128,4,53,4,61,0,132,5,190,5,197,0,141,5,200,5,200,0,149,5,204,5,204,0,150,5,206,5,212,0,151,5,215,5,216,0,158,5,218,5,220,0,160,5,222,5,227,0,163,5,231,5,235,0,169,5,237,5,237,0,174,5,239,5,249,0,175,5,252,5,253,0,186,6,0,6,4,0,188,6,6,6,9,0,193,0,2,0,11,4,119,4,124,0,0,4,126,4,126,0,6,4,128,4,143,0,7,4,146,4,147,0,23,4,153,4,153,0,25,4,155,4,155,0,26,4,157,4,157,0,27,4,169,4,174,0,28,4,176,4,176,0,34,4,178,4,178,0,35,7,10,7,13,0,36,0,2,0,10,1,238,1,238,0,1,3,109,3,109,0,9,3,128,3,128,0,5,3,129,3,129,0,2,3,130,3,130,0,10,3,131,3,131,0,8,3,132,3,132,0,7,3,133,3,133,0,4,3,134,3,134,0,6,3,135,3,135,0,3,0,2,0,36,0,6,0,6,0,4,0,10,0,10,0,4,0,18,0,18,0,4,0,20,0,20,0,4,0,32,0,34,0,3,0,35,0,35,0,1,0,36,0,36,0,2,0,44,0,44,0,3,0,46,0,46,0,3,0,49,0,49,0,5,0,51,0,51,0,6,0,52,0,52,0,7,0,54,0,54,0,8,0,83,0,87,0,4,0,110,0,118,0,4,0,158,0,183,0,4,1,21,1,47,0,3,1,48,1,55,0,2,1,99,1,124,0,3,1,140,1,146,0,5,1,170,1,173,0,7,1,174,1,181,0,8,1,196,1,198,0,3,1,200,1,200,0,3,1,208,1,210,0,3,1,211,1,211,0,8,1,230,1,232,0,3,1,243,1,243,0,5,2,4,2,4,0,1,2,7,2,8,0,1,2,9,2,21,0,10,2,23,2,54,0,3,2,64,2,64,0,1,4,219,4,219,0,9,5,142,5,149,0,9,7,150,7,151,0,1,0,2,0,0,0,2,0,4,2,100,2,100,0,2,2,110,2,110,0,3,2,116,2,116,0,4,2,119,2,119,0,1,0,2,0,4,3,152,3,152,0,1,3,241,3,241,0,3,3,242,3,242,0,4,5,254,5,254,0,2,0,2,0,37,3,228,3,228,0,14,3,229,3,229,0,9,3,232,3,232,0,2,3,233,3,233,0,10,3,243,3,243,0,3,3,246,3,246,0,10,3,249,3,249,0,10,3,250,3,250,0,5,3,251,3,251,0,6,3,252,3,252,0,10,3,255,3,255,0,1,4,2,4,2,0,5,4,5,4,5,0,15,4,7,4,7,0,8,4,8,4,9,0,10,4,12,4,12,0,10,4,18,4,18,0,3,4,25,4,25,0,6,4,27,4,27,0,7,4,28,4,28,0,10,4,29,4,29,0,4,4,39,4,39,0,5,4,43,4,43,0,10,4,44,4,45,0,4,4,47,4,47,0,1,4,53,4,54,0,14,4,55,4,55,0,10,4,58,4,59,0,10,4,60,4,61,0,6,5,208,5,208,0,12,5,213,5,213,0,11,5,216,5,216,0,12,5,224,5,224,0,12,5,234,5,234,0,12,5,239,5,239,0,13,5,247,5,247,0,12,5,253,5,253,0,11,0,2,0,25,1,247,1,247,0,23,1,248,1,248,0,24,1,249,1,249,0,25,1,250,1,250,0,4,2,113,2,113,0,11,3,210,3,210,0,2,3,214,3,214,0,1,4,44,4,44,0,21,4,45,4,45,0,22,4,84,4,84,0,18,4,106,4,106,0,17,4,125,4,125,0,6,4,127,4,127,0,12,4,148,4,148,0,10,4,159,4,159,0,20,4,161,4,161,0,5,5,250,5,250,0,3,6,12,6,12,0,9,6,18,6,18,0,19,6,20,6,20,0,8,6,24,6,24,0,13,6,25,6,25,0,16,6,27,6,27,0,14,6,28,6,28,0,15,6,31,6,31,0,7,0,2,1,60,0,4,0,4,0,92,0,6,0,6,0,109,0,10,0,10,0,109,0,13,0,13,0,116,0,18,0,18,0,109,0,20,0,20,0,109,0,22,0,22,0,93,0,23,0,23,0,59,0,24,0,24,0,60,0,25,0,25,0,62,0,26,0,26,0,64,0,27,0,27,0,95,0,28,0,28,0,66,0,29,0,29,0,96,0,30,0,30,0,106,0,32,0,34,0,108,0,35,0,35,0,107,0,36,0,36,0,56,0,38,0,38,0,115,0,39,0,39,0,58,0,44,0,44,0,108,0,46,0,46,0,108,0,49,0,49,0,118,0,50,0,50,0,119,0,51,0,51,0,61,0,52,0,52,0,63,0,53,0,53,0,94,0,54,0,54,0,65,0,55,0,55,0,120,0,56,0,77,0,92,0,81,0,81,0,55,0,83,0,87,0,109,0,91,0,91,0,55,0,110,0,118,0,109,0,122,0,122,0,57,0,135,0,135,0,116,0,158,0,183,0,109,0,191,0,197,0,93,0,199,0,204,0,59,0,205,0,227,0,60,0,228,0,231,0,64,0,232,0,239,0,66,0,240,0,244,0,96,0,245,0,245,0,55,0,247,0,247,0,117,0,250,1,18,0,106,1,21,1,47,0,108,1,48,1,55,0,56,1,61,1,72,0,115,1,74,1,74,0,58,1,99,1,124,0,108,1,140,1,146,0,118,1,147,1,169,0,119,1,170,1,173,0,63,1,174,1,181,0,65,1,182,1,186,0,120,1,190,1,190,0,58,1,191,1,191,0,115,1,192,1,192,0,119,1,196,1,198,0,108,1,200,1,200,0,108,1,207,1,207,0,58,1,208,1,210,0,108,1,211,1,211,0,65,1,213,1,213,0,119,1,224,1,225,0,119,1,227,1,227,0,58,1,230,1,232,0,108,1,241,1,242,0,58,1,243,1,243,0,118,1,246,1,246,0,119,1,251,1,252,0,120,2,4,2,4,0,107,2,7,2,8,0,107,2,23,2,54,0,108,2,64,2,64,0,107,2,65,2,65,0,83,2,68,2,68,0,86,2,70,2,70,0,91,2,72,2,72,0,105,2,75,2,75,0,83,2,78,2,78,0,90,2,79,2,79,0,105,2,82,2,82,0,89,2,83,2,83,0,53,2,84,2,84,0,54,2,86,2,86,0,85,2,87,2,87,0,88,2,89,2,89,0,114,2,96,2,96,0,54,2,98,2,98,0,97,2,100,2,100,0,98,2,108,2,108,0,87,2,110,2,110,0,99,2,112,2,112,0,100,2,115,2,115,0,100,2,116,2,116,0,101,2,118,2,118,0,100,2,119,2,119,0,84,2,121,2,122,0,100,2,125,2,125,0,100,2,126,2,126,0,97,2,131,2,131,0,100,2,134,2,134,0,100,2,137,2,146,0,114,2,147,2,148,0,83,2,194,2,195,0,54,2,206,2,206,0,83,2,207,2,214,0,114,2,233,2,245,0,97,3,25,3,32,0,100,3,51,3,61,0,100,3,62,3,73,0,97,3,86,3,97,0,100,3,99,3,100,0,100,3,138,3,138,0,76,3,142,3,142,0,20,3,144,3,144,0,81,3,147,3,147,0,38,3,153,3,153,0,25,3,156,3,156,0,104,3,159,3,159,0,104,3,160,3,160,0,51,3,161,3,161,0,30,3,162,3,162,0,22,3,163,3,163,0,79,3,165,3,165,0,17,3,168,3,168,0,51,3,171,3,171,0,38,3,173,3,173,0,35,3,176,3,176,0,51,3,178,3,178,0,104,3,179,3,179,0,77,3,183,3,183,0,113,3,184,3,184,0,25,3,186,3,186,0,51,3,191,3,191,0,30,3,193,3,193,0,80,3,194,3,194,0,104,3,195,3,195,0,49,3,198,3,198,0,81,3,201,3,201,0,38,3,205,3,205,0,51,3,209,3,209,0,104,3,212,3,212,0,79,3,213,3,213,0,17,3,216,3,216,0,81,3,219,3,219,0,76,3,224,3,225,0,104,3,226,3,227,0,30,3,228,3,228,0,102,3,229,3,229,0,14,3,230,3,231,0,26,3,232,3,232,0,18,3,233,3,233,0,103,3,234,3,234,0,39,3,237,3,237,0,36,3,238,3,240,0,26,3,243,3,243,0,23,3,244,3,245,0,26,3,246,3,246,0,103,3,247,3,247,0,26,3,249,3,249,0,103,3,250,3,250,0,28,3,251,3,251,0,52,3,252,3,252,0,103,3,253,3,253,0,78,3,254,3,254,0,26,3,255,3,255,0,15,4,0,4,1,0,26,4,2,4,2,0,28,4,3,4,4,0,26,4,5,4,5,0,21,4,6,4,6,0,26,4,7,4,7,0,33,4,8,4,9,0,103,4,11,4,11,0,26,4,12,4,12,0,103,4,14,4,15,0,112,4,17,4,17,0,50,4,18,4,18,0,23,4,19,4,19,0,26,4,21,4,21,0,26,4,24,4,24,0,26,4,25,4,25,0,52,4,26,4,26,0,26,4,27,4,27,0,31,4,28,4,28,0,103,4,29,4,29,0,48,4,30,4,30,0,26,4,32,4,32,0,39,4,35,4,35,0,36,4,36,4,36,0,26,4,39,4,39,0,28,4,42,4,42,0,26,4,43,4,43,0,103,4,44,4,45,0,48,4,46,4,46,0,78,4,47,4,47,0,15,4,49,4,49,0,39,4,53,4,54,0,102,4,55,4,55,0,103,4,57,4,57,0,26,4,58,4,59,0,103,4,60,4,61,0,52,4,119,4,120,0,9,4,123,4,123,0,9,4,126,4,126,0,10,4,128,4,129,0,13,4,130,4,130,0,11,4,131,4,131,0,12,4,132,4,132,0,11,4,133,4,133,0,12,4,134,4,135,0,9,4,137,4,137,0,41,4,139,4,139,0,41,4,170,4,170,0,10,4,172,4,173,0,10,4,194,4,194,0,115,4,195,4,195,0,1,4,197,4,197,0,2,4,201,4,201,0,2,4,204,4,204,0,46,4,209,4,209,0,2,4,211,4,211,0,2,4,213,4,213,0,3,4,214,4,214,0,4,4,215,4,215,0,5,4,216,4,216,0,6,4,217,4,217,0,7,4,218,4,218,0,75,4,219,4,219,0,8,4,220,4,220,0,47,4,221,4,242,0,1,4,248,4,252,0,2,5,19,5,27,0,2,5,44,5,44,0,46,5,67,5,92,0,2,5,100,5,107,0,3,5,108,5,108,0,111,5,109,5,114,0,4,5,115,5,137,0,5,5,138,5,141,0,7,5,142,5,149,0,8,5,150,5,154,0,47,5,161,5,161,0,82,5,166,5,166,0,74,5,168,5,168,0,110,5,171,5,171,0,82,5,175,5,175,0,110,5,179,5,179,0,72,5,180,5,180,0,73,5,182,5,182,0,71,5,186,5,186,0,73,5,187,5,187,0,82,5,190,5,190,0,42,5,191,5,193,0,27,5,194,5,194,0,19,5,195,5,195,0,27,5,196,5,196,0,40,5,197,5,197,0,37,5,198,5,200,0,27,5,201,5,201,0,24,5,202,5,203,0,27,5,204,5,204,0,44,5,205,5,206,0,27,5,207,5,207,0,44,5,208,5,208,0,29,5,209,5,209,0,45,5,210,5,210,0,43,5,211,5,211,0,68,5,212,5,212,0,27,5,213,5,213,0,16,5,214,5,215,0,27,5,216,5,216,0,29,5,217,5,218,0,27,5,219,5,219,0,37,5,220,5,220,0,27,5,221,5,221,0,34,5,222,5,223,0,27,5,224,5,224,0,29,5,225,5,225,0,27,5,226,5,226,0,44,5,227,5,227,0,67,5,228,5,229,0,27,5,231,5,231,0,70,5,232,5,232,0,24,5,233,5,233,0,27,5,234,5,234,0,29,5,235,5,236,0,27,5,237,5,237,0,45,5,238,5,238,0,27,5,239,5,239,0,32,5,240,5,240,0,44,5,241,5,241,0,69,5,242,5,242,0,27,5,244,5,244,0,40,5,245,5,245,0,37,5,246,5,246,0,27,5,247,5,247,0,29,5,248,5,248,0,27,5,249,5,249,0,44,5,252,5,252,0,68,5,253,5,253,0,16,5,254,5,255,0,27,6,0,6,0,0,40,6,1,6,1,0,42,6,3,6,3,0,27,6,5,6,5,0,27,6,6,6,7,0,44,6,8,6,9,0,45,6,235,6,235,0,86,7,10,7,10,0,11,7,11,7,12,0,12,7,13,7,13,0,11,7,150,7,151,0,107,0,2,0,191,0,4,0,4,0,2,0,5,0,5,0,4,0,6,0,6,0,7,0,7,0,7,0,41,0,8,0,8,0,10,0,9,0,9,0,13,0,10,0,10,0,19,0,11,0,11,0,22,0,12,0,12,0,24,0,13,0,13,0,26,0,14,0,14,0,29,0,15,0,15,0,34,0,16,0,17,0,22,0,18,0,18,0,41,0,19,0,19,0,43,0,20,0,20,0,41,0,21,0,21,0,46,0,22,0,22,0,49,0,23,0,23,0,53,0,24,0,24,0,59,0,25,0,25,0,62,0,26,0,26,0,65,0,27,0,27,0,68,0,28,0,28,0,71,0,29,0,29,0,74,0,31,0,31,0,39,0,32,0,32,0,5,0,34,0,34,0,8,0,35,0,35,0,11,0,36,0,36,0,17,0,37,0,37,0,35,0,40,0,40,0,27,0,41,0,41,0,32,0,42,0,43,0,35,0,44,0,45,0,39,0,46,0,46,0,57,0,47,0,47,0,44,0,48,0,48,0,47,0,49,0,49,0,51,0,50,0,50,0,57,0,51,0,51,0,60,0,52,0,52,0,63,0,53,0,53,0,66,0,54,0,54,0,69,0,55,0,55,0,72,0,56,0,77,0,2,0,78,0,80,0,10,0,81,0,82,0,4,0,83,0,87,0,7,0,88,0,91,0,41,0,92,0,109,0,10,0,110,0,118,0,19,0,119,0,121,0,22,0,122,0,122,0,20,0,123,0,134,0,24,0,135,0,135,0,26,0,136,0,138,0,29,0,139,0,139,0,34,0,140,0,140,0,31,0,141,0,146,0,34,0,147,0,157,0,22,0,158,0,175,0,41,0,176,0,176,0,10,0,177,0,182,0,38,0,183,0,183,0,41,0,184,0,190,0,46,0,191,0,197,0,49,0,198,0,198,0,16,0,199,0,204,0,53,0,205,0,221,0,59,0,222,0,227,0,56,0,228,0,231,0,65,0,232,0,239,0,71,0,240,0,244,0,74,0,245,0,245,0,41,0,246,0,246,0,50,0,247,0,248,0,41,0,249,0,249,0,24,1,16,1,18,0,8,1,19,1,20,0,39,1,21,1,25,0,5,1,26,1,26,0,30,1,30,1,47,0,8,1,48,1,55,0,17,1,56,1,60,0,35,1,73,1,73,0,57,1,75,1,78,0,27,1,79,1,79,0,32,1,80,1,80,0,30,1,82,1,85,0,32,1,87,1,98,0,35,1,99,1,116,0,39,1,117,1,117,0,8,1,118,1,123,0,36,1,124,1,124,0,39,1,125,1,131,0,44,1,132,1,138,0,47,1,139,1,139,0,14,1,140,1,146,0,51,1,147,1,163,0,57,1,164,1,169,0,54,1,170,1,173,0,63,1,174,1,181,0,69,1,182,1,186,0,72,1,188,1,188,0,39,1,189,1,189,0,35,1,192,1,192,0,8,1,193,1,195,0,39,1,196,1,196,0,5,1,199,1,199,0,39,1,200,1,200,0,57,1,202,1,202,0,39,1,206,1,206,0,39,1,209,1,209,0,57,1,210,1,210,0,5,1,211,1,211,0,69,1,213,1,213,0,57,1,214,1,215,0,35,1,216,1,216,0,57,1,224,1,225,0,57,1,226,1,227,0,35,1,229,1,229,0,57,1,230,1,230,0,39,1,232,1,232,0,39,1,233,1,233,0,57,1,236,1,237,0,44,1,239,1,239,0,57,1,240,1,240,0,47,1,243,1,243,0,51,1,246,1,246,0,39,1,251,1,252,0,72,2,4,2,4,0,11,2,7,2,8,0,51,2,9,2,21,0,23,2,22,2,22,0,22,2,23,2,54,0,57,2,57,2,57,0,30,4,195,4,195,0,1,4,196,4,196,0,3,4,197,4,197,0,6,4,198,4,198,0,40,4,199,4,199,0,9,4,200,4,200,0,12,4,201,4,201,0,18,4,202,4,202,0,21,4,204,4,204,0,25,4,205,4,205,0,28,4,206,4,206,0,33,4,207,4,208,0,21,4,209,4,209,0,40,4,210,4,210,0,42,4,211,4,211,0,40,4,212,4,212,0,45,4,213,4,213,0,48,4,214,4,214,0,52,4,215,4,215,0,58,4,216,4,216,0,61,4,217,4,217,0,64,4,218,4,218,0,67,4,219,4,219,0,70,4,220,4,220,0,73,4,221,4,242,0,1,4,243,4,245,0,9,4,246,4,247,0,3,4,248,4,252,0,6,4,253,5,0,0,40,5,1,5,18,0,9,5,19,5,27,0,18,5,28,5,30,0,21,5,44,5,44,0,25,5,45,5,47,0,28,5,48,5,48,0,33,5,50,5,55,0,33,5,56,5,66,0,21,5,67,5,82,0,40,5,83,5,83,0,9,5,84,5,89,0,37,5,90,5,92,0,40,5,93,5,99,0,45,5,100,5,107,0,48,5,108,5,108,0,15,5,109,5,114,0,52,5,115,5,131,0,58,5,132,5,137,0,55,5,138,5,141,0,64,5,142,5,149,0,70,5,150,5,154,0,73,5,155,5,155,0,40,5,157,5,158,0,40,5,159,5,160,0,21,7,151,7,151,0,32,0,2,0,182,0,4,0,4,0,24,0,6,0,6,0,27,0,10,0,10,0,27,0,13,0,13,0,41,0,18,0,18,0,27,0,20,0,20,0,27,0,22,0,22,0,42,0,23,0,23,0,2,0,24,0,24,0,30,0,25,0,25,0,3,0,26,0,26,0,52,0,27,0,27,0,31,0,28,0,28,0,4,0,29,0,29,0,32,0,30,0,30,0,23,0,32,0,34,0,48,0,35,0,35,0,25,0,36,0,36,0,47,0,38,0,38,0,66,0,39,0,39,0,55,0,42,0,43,0,59,0,44,0,44,0,48,0,45,0,45,0,59,0,46,0,46,0,48,0,47,0,47,0,59,0,48,0,48,0,28,0,49,0,49,0,1,0,50,0,50,0,29,0,51,0,51,0,43,0,52,0,52,0,44,0,53,0,53,0,45,0,54,0,54,0,46,0,55,0,55,0,53,0,56,0,77,0,24,0,78,0,80,0,64,0,83,0,87,0,27,0,110,0,118,0,27,0,135,0,135,0,41,0,158,0,183,0,27,0,191,0,197,0,42,0,199,0,204,0,2,0,205,0,227,0,30,0,228,0,231,0,52,0,232,0,239,0,4,0,240,0,244,0,32,0,250,1,18,0,23,1,19,1,19,0,62,1,21,1,47,0,48,1,48,1,55,0,47,1,60,1,60,0,62,1,61,1,72,0,66,1,73,1,73,0,59,1,74,1,74,0,55,1,78,1,78,0,59,1,87,1,97,0,59,1,99,1,124,0,48,1,125,1,131,0,59,1,132,1,138,0,28,1,140,1,146,0,1,1,147,1,169,0,29,1,170,1,173,0,44,1,174,1,181,0,46,1,182,1,186,0,53,1,189,1,189,0,59,1,190,1,190,0,55,1,191,1,191,0,66,1,192,1,192,0,29,1,193,1,193,0,59,1,196,1,198,0,48,1,200,1,200,0,48,1,201,1,201,0,59,1,207,1,207,0,55,1,208,1,210,0,48,1,211,1,211,0,46,1,213,1,213,0,29,1,216,1,216,0,59,1,218,1,218,0,67,1,223,1,223,0,59,1,224,1,225,0,29,1,226,1,226,0,59,1,227,1,227,0,55,1,228,1,229,0,59,1,230,1,232,0,48,1,236,1,236,0,59,1,238,1,238,0,59,1,240,1,240,0,28,1,241,1,242,0,55,1,243,1,243,0,1,1,246,1,246,0,29,1,248,1,248,0,68,1,251,1,252,0,53,2,4,2,4,0,25,2,7,2,8,0,25,2,9,2,21,0,61,2,23,2,54,0,48,2,64,2,64,0,25,4,119,4,120,0,17,4,121,4,122,0,16,4,123,4,123,0,17,4,124,4,124,0,57,4,126,4,126,0,33,4,128,4,129,0,35,4,130,4,130,0,34,4,131,4,131,0,5,4,132,4,132,0,34,4,133,4,133,0,5,4,134,4,135,0,17,4,136,4,136,0,50,4,137,4,137,0,54,4,138,4,138,0,50,4,139,4,139,0,54,4,140,4,143,0,49,4,146,4,147,0,49,4,148,4,148,0,18,4,154,4,154,0,56,4,156,4,156,0,56,4,158,4,158,0,56,4,159,4,159,0,58,4,161,4,161,0,36,4,163,4,163,0,6,4,169,4,169,0,57,4,170,4,170,0,33,4,171,4,171,0,57,4,172,4,173,0,33,4,175,4,175,0,56,4,177,4,177,0,56,4,179,4,179,0,56,4,186,4,186,0,37,4,187,4,187,0,38,4,194,4,194,0,66,4,195,4,195,0,7,4,196,4,196,0,65,4,197,4,197,0,26,4,198,4,200,0,65,4,201,4,201,0,26,4,202,4,202,0,65,4,204,4,204,0,40,4,205,4,208,0,65,4,209,4,209,0,26,4,210,4,210,0,65,4,211,4,211,0,26,4,212,4,212,0,65,4,213,4,213,0,8,4,214,4,214,0,9,4,215,4,215,0,10,4,216,4,216,0,11,4,217,4,217,0,12,4,218,4,218,0,13,4,219,4,219,0,14,4,220,4,220,0,15,4,221,4,242,0,7,4,243,4,245,0,63,4,247,4,247,0,65,4,248,4,252,0,26,4,253,4,255,0,65,5,1,5,18,0,65,5,19,5,27,0,26,5,28,5,30,0,65,5,44,5,44,0,40,5,45,5,54,0,65,5,56,5,66,0,65,5,67,5,92,0,26,5,93,5,99,0,65,5,100,5,107,0,8,5,109,5,114,0,9,5,115,5,137,0,10,5,138,5,141,0,12,5,142,5,149,0,14,5,150,5,154,0,15,5,156,5,156,0,65,5,158,5,160,0,65,6,23,6,23,0,19,6,25,6,25,0,22,6,27,6,27,0,20,6,28,6,28,0,21,6,31,6,31,0,39,6,33,6,33,0,51,6,35,6,35,0,60,7,10,7,10,0,34,7,11,7,12,0,5,7,13,7,13,0,34,7,150,7,151,0,25,0,2,0,112,2,65,2,65,0,2,2,66,2,66,0,5,2,67,2,67,0,18,2,68,2,68,0,11,2,69,2,69,0,14,2,70,2,70,0,56,2,71,2,71,0,43,2,72,2,72,0,35,2,73,2,73,0,43,2,74,2,74,0,22,2,75,2,75,0,2,2,76,2,77,0,43,2,78,2,78,0,53,2,79,2,79,0,35,2,80,2,80,0,43,2,81,2,81,0,32,2,82,2,82,0,40,2,83,2,83,0,46,2,84,2,84,0,50,2,85,2,85,0,28,2,86,2,86,0,8,2,87,2,87,0,30,2,88,2,88,0,26,2,89,2,89,0,2,2,90,2,90,0,14,2,91,2,93,0,43,2,94,2,94,0,35,2,95,2,96,0,50,2,97,2,97,0,26,2,99,2,99,0,3,2,100,2,100,0,16,2,101,2,101,0,9,2,102,2,102,0,12,2,103,2,103,0,54,2,104,2,104,0,15,2,105,2,105,0,47,2,106,2,106,0,19,2,107,2,107,0,20,2,108,2,108,0,23,2,109,2,109,0,19,2,110,2,110,0,24,2,111,2,111,0,51,2,112,2,112,0,33,2,114,2,114,0,33,2,115,2,115,0,38,2,116,2,116,0,44,2,117,2,117,0,48,2,118,2,118,0,33,2,119,2,119,0,6,2,120,2,120,0,48,2,121,2,121,0,33,2,122,2,122,0,37,2,123,2,123,0,3,2,124,2,124,0,47,2,125,2,125,0,33,2,127,2,127,0,12,2,128,2,128,0,15,2,129,2,130,0,19,2,131,2,131,0,33,2,132,2,133,0,48,2,134,2,134,0,33,2,135,2,135,0,19,2,136,2,136,0,48,2,137,2,148,0,2,2,149,2,156,0,14,2,157,2,178,0,43,2,179,2,186,0,35,2,187,2,187,0,32,2,188,2,195,0,50,2,196,2,205,0,26,2,206,2,232,0,19,2,246,2,253,0,12,2,254,3,8,0,15,3,9,3,24,0,19,3,25,3,34,0,33,3,35,3,50,0,48,3,51,3,61,0,33,3,74,3,85,0,15,3,86,3,97,0,33,3,98,3,98,0,20,3,99,3,99,0,33,3,100,3,100,0,41,3,102,3,102,0,36,3,112,3,112,0,19,5,161,5,161,0,1,5,162,5,162,0,4,5,163,5,163,0,17,5,164,5,164,0,10,5,165,5,165,0,13,5,166,5,166,0,55,5,167,5,167,0,42,5,168,5,168,0,34,5,169,5,169,0,42,5,170,5,170,0,21,5,171,5,171,0,1,5,172,5,173,0,42,5,174,5,174,0,52,5,175,5,175,0,34,5,176,5,176,0,42,5,177,5,177,0,31,5,178,5,178,0,39,5,179,5,179,0,45,5,180,5,180,0,49,5,181,5,181,0,27,5,182,5,182,0,7,5,183,5,183,0,29,5,184,5,184,0,25,5,185,5,185,0,42,5,186,5,186,0,49,5,187,5,189,0,42,6,235,6,235,0,11,6,236,6,236,0,26,0,2,0,145,2,65,2,65,0,19,2,68,2,68,0,62,2,70,2,70,0,27,2,72,2,72,0,24,2,75,2,75,0,19,2,78,2,78,0,37,2,79,2,79,0,24,2,82,2,82,0,36,2,83,2,83,0,8,2,84,2,84,0,26,2,85,2,85,0,53,2,86,2,86,0,20,2,87,2,87,0,22,2,88,2,88,0,21,2,89,2,89,0,66,2,96,2,96,0,26,2,98,2,98,0,38,2,99,2,99,0,39,2,100,2,100,0,1,2,101,2,101,0,40,2,102,2,102,0,41,2,103,2,103,0,59,2,104,2,104,0,42,2,105,2,105,0,45,2,106,2,106,0,2,2,107,2,107,0,42,2,108,2,108,0,43,2,109,2,109,0,63,2,110,2,110,0,3,2,111,2,111,0,58,2,112,2,112,0,44,2,113,2,113,0,51,2,114,2,114,0,34,2,115,2,115,0,44,2,116,2,116,0,25,2,117,2,117,0,46,2,118,2,118,0,44,2,119,2,119,0,33,2,120,2,120,0,46,2,121,2,122,0,44,2,123,2,124,0,45,2,125,2,125,0,44,2,126,2,126,0,38,2,127,2,127,0,41,2,128,2,128,0,42,2,129,2,129,0,2,2,130,2,130,0,52,2,131,2,131,0,44,2,132,2,133,0,46,2,134,2,134,0,44,2,135,2,135,0,52,2,136,2,136,0,46,2,137,2,146,0,66,2,147,2,148,0,19,2,194,2,195,0,26,2,206,2,206,0,19,2,207,2,214,0,66,2,224,2,224,0,21,2,233,2,245,0,38,2,246,2,253,0,41,2,254,3,8,0,42,3,9,3,10,0,2,3,11,3,11,0,52,3,12,3,12,0,2,3,13,3,24,0,52,3,25,3,32,0,44,3,33,3,34,0,34,3,35,3,50,0,46,3,51,3,61,0,44,3,62,3,73,0,38,3,74,3,85,0,42,3,86,3,97,0,44,3,98,3,98,0,42,3,99,3,100,0,44,3,101,3,101,0,63,3,102,3,102,0,57,3,112]);fileData0.push.apply(fileData0,[3,112,0,2,4,119,4,120,0,12,4,121,4,122,0,11,4,123,4,123,0,12,4,124,4,124,0,48,4,126,4,126,0,28,4,128,4,129,0,30,4,130,4,130,0,29,4,131,4,131,0,13,4,132,4,132,0,29,4,133,4,133,0,13,4,134,4,135,0,12,4,136,4,136,0,49,4,137,4,137,0,50,4,138,4,138,0,49,4,139,4,139,0,50,4,140,4,143,0,47,4,146,4,147,0,47,4,148,4,148,0,14,4,154,4,154,0,69,4,156,4,156,0,69,4,158,4,158,0,69,4,159,4,159,0,67,4,161,4,161,0,32,4,163,4,163,0,31,4,169,4,169,0,48,4,170,4,170,0,28,4,171,4,171,0,48,4,172,4,173,0,28,4,175,4,175,0,69,4,177,4,177,0,69,4,179,4,179,0,69,4,186,4,186,0,55,5,161,5,161,0,4,5,162,5,163,0,54,5,164,5,164,0,60,5,165,5,165,0,54,5,166,5,166,0,10,5,167,5,167,0,54,5,168,5,168,0,23,5,169,5,170,0,54,5,171,5,171,0,4,5,172,5,173,0,54,5,174,5,174,0,64,5,175,5,175,0,23,5,176,5,177,0,54,5,178,5,178,0,65,5,179,5,179,0,7,5,180,5,180,0,9,5,181,5,181,0,56,5,182,5,182,0,5,5,183,5,183,0,6,5,184,5,184,0,61,5,185,5,185,0,54,5,186,5,186,0,9,5,187,5,187,0,4,5,188,5,188,0,54,5,189,5,189,0,61,6,23,6,23,0,15,6,25,6,25,0,18,6,27,6,27,0,16,6,28,6,28,0,17,6,31,6,31,0,35,6,35,6,35,0,68,6,235,6,235,0,62,6,236,6,236,0,21,7,10,7,10,0,29,7,11,7,12,0,13,7,13,7,13,0,29,0,2,0,162,3,138,3,138,0,2,3,139,3,140,0,56,3,141,3,141,0,19,3,142,3,142,0,47,3,143,3,143,0,25,3,144,3,144,0,33,3,147,3,147,0,56,3,148,3,149,0,41,3,150,3,150,0,33,3,153,3,155,0,41,3,156,3,156,0,36,3,157,3,157,0,41,3,158,3,158,0,13,3,159,3,159,0,16,3,160,3,160,0,44,3,161,3,161,0,53,3,162,3,162,0,11,3,163,3,163,0,22,3,164,3,164,0,47,3,165,3,166,0,41,3,167,3,167,0,47,3,168,3,168,0,39,3,169,3,169,0,41,3,170,3,170,0,39,3,171,3,172,0,36,3,173,3,173,0,41,3,174,3,175,0,25,3,176,3,176,0,6,3,177,3,177,0,19,3,178,3,178,0,16,3,179,3,179,0,9,3,180,3,181,0,41,3,183,3,183,0,30,3,184,3,185,0,39,3,186,3,186,0,50,3,187,3,187,0,33,3,190,3,190,0,41,3,191,3,191,0,53,3,192,3,192,0,41,3,193,3,193,0,58,3,194,3,194,0,36,3,195,3,195,0,28,3,196,3,197,0,19,3,198,3,198,0,33,3,201,3,201,0,56,3,202,3,202,0,33,3,205,3,205,0,33,3,208,3,208,0,47,3,209,3,209,0,16,3,212,3,212,0,22,3,213,3,213,0,47,3,215,3,215,0,41,3,216,3,216,0,33,3,219,3,219,0,2,3,220,3,221,0,25,3,222,3,222,0,36,3,223,3,223,0,41,3,224,3,225,0,36,3,226,3,227,0,53,3,229,3,229,0,3,3,230,3,230,0,54,3,231,3,231,0,17,3,232,3,232,0,45,3,233,3,233,0,23,3,234,3,234,0,31,3,237,3,237,0,54,3,238,3,239,0,40,3,240,3,240,0,31,3,243,3,245,0,40,3,246,3,246,0,34,3,247,3,247,0,40,3,248,3,248,0,34,3,249,3,249,0,14,3,250,3,250,0,42,3,251,3,251,0,51,3,252,3,252,0,34,3,253,3,253,0,20,3,254,3,254,0,45,3,255,4,0,0,40,4,1,4,1,0,45,4,2,4,2,0,37,4,3,4,3,0,40,4,4,4,4,0,37,4,5,4,6,0,34,4,7,4,7,0,40,4,8,4,9,0,23,4,10,4,10,0,4,4,11,4,11,0,17,4,12,4,12,0,14,4,13,4,13,0,7,4,18,4,19,0,37,4,20,4,20,0,48,4,21,4,21,0,31,4,24,4,24,0,40,4,25,4,25,0,51,4,26,4,26,0,40,4,27,4,27,0,37,4,28,4,28,0,34,4,29,4,29,0,26,4,30,4,31,0,17,4,32,4,32,0,31,4,35,4,35,0,54,4,36,4,36,0,31,4,39,4,39,0,31,4,42,4,42,0,45,4,43,4,43,0,14,4,46,4,46,0,20,4,47,4,47,0,45,4,48,4,48,0,48,4,49,4,49,0,31,4,54,4,55,0,23,4,56,4,56,0,34,4,57,4,57,0,40,4,58,4,59,0,34,4,60,4,61,0,51,5,190,5,190,0,1,5,191,5,192,0,55,5,193,5,193,0,18,5,194,5,194,0,46,5,195,5,195,0,24,5,196,5,196,0,32,5,197,5,197,0,55,5,200,5,200,0,32,5,204,5,204,0,35,5,206,5,206,0,12,5,207,5,207,0,15,5,208,5,208,0,43,5,209,5,209,0,52,5,210,5,210,0,10,5,211,5,211,0,21,5,212,5,212,0,46,5,215,5,215,0,46,5,216,5,216,0,38,5,218,5,218,0,38,5,219,5,220,0,35,5,222,5,223,0,24,5,224,5,224,0,5,5,225,5,225,0,18,5,226,5,226,0,15,5,227,5,227,0,8,5,231,5,231,0,29,5,232,5,233,0,38,5,234,5,234,0,49,5,235,5,235,0,32,5,237,5,237,0,52,5,239,5,239,0,57,5,240,5,240,0,35,5,241,5,241,0,27,5,242,5,243,0,18,5,244,5,244,0,32,5,245,5,245,0,55,5,246,5,247,0,32,5,248,5,248,0,46,5,249,5,249,0,15,5,252,5,252,0,21,5,253,5,253,0,46,6,0,6,0,0,32,6,1,6,1,0,1,6,2,6,3,0,24,6,4,6,4,0,35,6,6,6,7,0,35,6,8,6,9,0,52,0,2,1,25,0,4,0,4,0,104,0,6,0,6,0,37,0,10,0,10,0,37,0,13,0,13,0,106,0,18,0,18,0,37,0,20,0,20,0,37,0,23,0,23,0,40,0,24,0,24,0,42,0,25,0,25,0,45,0,27,0,27,0,48,0,28,0,28,0,50,0,29,0,29,0,107,0,35,0,35,0,35,0,49,0,49,0,39,0,51,0,51,0,43,0,54,0,54,0,49,0,56,0,77,0,104,0,83,0,87,0,37,0,110,0,118,0,37,0,135,0,135,0,106,0,158,0,183,0,37,0,199,0,204,0,40,0,205,0,227,0,42,0,232,0,239,0,50,0,240,0,244,0,107,1,140,1,146,0,39,1,174,1,181,0,49,1,211,1,211,0,49,1,243,1,243,0,39,2,4,2,4,0,35,2,7,2,8,0,35,2,9,2,21,0,105,2,64,2,64,0,35,3,138,3,138,0,23,3,139,3,141,0,110,3,142,3,142,0,81,3,143,3,143,0,110,3,144,3,144,0,83,3,147,3,147,0,71,3,148,3,150,0,110,3,153,3,153,0,82,3,154,3,155,0,110,3,156,3,156,0,32,3,157,3,158,0,110,3,159,3,159,0,32,3,160,3,160,0,3,3,161,3,161,0,69,3,162,3,162,0,90,3,163,3,163,0,30,3,164,3,164,0,110,3,165,3,165,0,25,3,166,3,167,0,110,3,168,3,168,0,3,3,169,3,170,0,110,3,171,3,171,0,71,3,172,3,172,0,110,3,173,3,173,0,70,3,174,3,175,0,110,3,176,3,176,0,3,3,177,3,177,0,110,3,178,3,178,0,32,3,179,3,179,0,78,3,180,3,181,0,110,3,183,3,183,0,67,3,184,3,184,0,82,3,185,3,185,0,110,3,186,3,186,0,3,3,187,3,187,0,110,3,190,3,190,0,110,3,191,3,191,0,69,3,192,3,192,0,110,3,193,3,193,0,33,3,194,3,194,0,32,3,195,3,195,0,1,3,196,3,196,0,110,3,198,3,198,0,83,3,201,3,201,0,71,3,202,3,202,0,110,3,205,3,205,0,3,3,208,3,208,0,110,3,209,3,209,0,32,3,210,3,210,0,73,3,212,3,212,0,30,3,213,3,213,0,25,3,214,3,215,0,110,3,216,3,216,0,83,3,219,3,219,0,23,3,220,3,220,0,109,3,221,3,221,0,110,3,223,3,223,0,110,3,224,3,225,0,32,3,226,3,227,0,69,3,228,3,228,0,22,3,229,3,229,0,65,3,230,3,231,0,95,3,232,3,232,0,26,3,233,3,233,0,85,3,234,3,234,0,74,3,235,3,235,0,87,3,237,3,237,0,34,3,238,3,240,0,95,3,243,3,243,0,29,3,244,3,245,0,95,3,246,3,246,0,85,3,247,3,247,0,95,3,248,3,248,0,94,3,249,3,249,0,85,3,250,3,250,0,2,3,251,3,251,0,68,3,252,3,252,0,85,3,253,3,253,0,58,3,254,3,254,0,95,3,255,3,255,0,24,4,0,4,1,0,95,4,2,4,2,0,2,4,3,4,4,0,95,4,5,4,5,0,28,4,6,4,6,0,95,4,7,4,7,0,59,4,8,4,9,0,85,4,10,4,10,0,60,4,11,4,11,0,95,4,12,4,12,0,85,4,13,4,13,0,27,4,14,4,15,0,101,4,17,4,17,0,61,4,18,4,18,0,29,4,19,4,19,0,95,4,20,4,20,0,60,4,21,4,21,0,95,4,24,4,24,0,95,4,25,4,25,0,68,4,26,4,26,0,95,4,27,4,27,0,4,4,28,4,28,0,85,4,29,4,29,0,66,4,30,4,30,0,95,4,31,4,31,0,91,4,32,4,32,0,74,4,35,4,35,0,34,4,36,4,36,0,95,4,39,4,39,0,2,4,42,4,42,0,95,4,43,4,43,0,85,4,44,4,45,0,66,4,46,4,46,0,58,4,47,4,47,0,24,4,49,4,49,0,74,4,53,4,54,0,22,4,55,4,55,0,85,4,56,4,56,0,92,4,57,4,57,0,95,4,58,4,59,0,85,4,60,4,61,0,68,4,119,4,120,0,15,4,121,4,122,0,14,4,123,4,123,0,15,4,124,4,124,0,97,4,126,4,126,0,52,4,128,4,129,0,54,4,130,4,130,0,53,4,131,4,131,0,5,4,132,4,132,0,53,4,133,4,133,0,5,4,134,4,135,0,15,4,136,4,136,0,76,4,137,4,137,0,72,4,138,4,138,0,76,4,139,4,139,0,72,4,140,4,143,0,75,4,146,4,147,0,75,4,148,4,148,0,17,4,154,4,154,0,102,4,156,4,156,0,102,4,158,4,158,0,102,4,159,4,159,0,86,4,161,4,161,0,55,4,163,4,163,0,6,4,169,4,169,0,97,4,170,4,170,0,52,4,171,4,171,0,97,4,172,4,173,0,52,4,175,4,175,0,102,4,177,4,177,0,102,4,179,4,179,0,102,4,186,4,186,0,56,4,187,4,187,0,57,4,195,4,195,0,98,4,197,4,197,0,36,4,201,4,201,0,36,4,203,4,203,0,111,4,204,4,204,0,99,4,209,4,209,0,36,4,211,4,211,0,36,4,213,4,213,0,38,4,214,4,214,0,100,4,215,4,215,0,41,4,216,4,216,0,44,4,217,4,217,0,46,4,218,4,218,0,47,4,220,4,220,0,51,4,221,4,242,0,98,4,248,4,252,0,36,5,19,5,27,0,36,5,32,5,43,0,111,5,44,5,44,0,99,5,67,5,92,0,36,5,100,5,107,0,38,5,109,5,114,0,100,5,115,5,137,0,41,5,138,5,141,0,46,5,150,5,154,0,51,5,190,5,190,0,7,5,191,5,193,0,96,5,194,5,194,0,79,5,195,5,195,0,96,5,196,5,196,0,84,5,197,5,197,0,64,5,198,5,200,0,96,5,201,5,201,0,80,5,202,5,203,0,96,5,204,5,204,0,31,5,205,5,206,0,96,5,207,5,207,0,31,5,208,5,208,0,12,5,209,5,209,0,63,5,210,5,210,0,88,5,211,5,211,0,10,5,212,5,212,0,96,5,213,5,213,0,8,5,214,5,215,0,96,5,216,5,216,0,12,5,217,5,218,0,96,5,219,5,219,0,64,5,220,5,220,0,96,5,221,5,221,0,93,5,222,5,223,0,96,5,224,5,224,0,12,5,225,5,225,0,96,5,226,5,226,0,31,5,227,5,227,0,9,5,228,5,229,0,96,5,231,5,231,0,62,5,232,5,232,0,80,5,233,5,233,0,96,5,234,5,234,0,12,5,235,5,236,0,96,5,237,5,237,0,63,5,238,5,238,0,96,5,239,5,239,0,13,5,240,5,240,0,31,5,241,5,241,0,11,5,242,5,242,0,96,5,244,5,244,0,84,5,245,5,245,0,64,5,246,5,246,0,96,5,247,5,247,0,12,5,248,5,248,0,96,5,249,5,249,0,31,5,250,5,250,0,16,5,252,5,252,0,10,5,253,5,253,0,8,5,254,5,255,0,96,6,0,6,0,0,84,6,1,6,1,0,7,6,2,6,2,0,108,6,3,6,3,0,96,6,5,6,5,0,96,6,6,6,7,0,31,6,8,6,9,0,63,6,23,6,23,0,18,6,25,6,25,0,21,6,27,6,27,0,19,6,28,6,28,0,20,6,31,6,31,0,77,6,33,6,33,0,89,6,35,6,35,0,103,7,10,7,10,0,53,7,11,7,12,0,5,7,13,7,13,0,53,7,150,7,151,0,35,0,2,0,24,4,119,4,120,0,2,4,121,4,122,0,1,4,123,4,123,0,2,4,124,4,124,0,4,4,126,4,126,0,7,4,128,4,129,0,10,4,130,4,130,0,8,4,131,4,131,0,9,4,132,4,132,0,8,4,133,4,133,0,9,4,134,4,135,0,2,4,136,4,136,0,5,4,137,4,137,0,6,4,138,4,138,0,5,4,139,4,139,0,6,4,140,4,143,0,3,4,146,4,147,0,3,4,169,4,169,0,4,4,170,4,171,0,7,4,172,4,172,0,4,4,173,4,173,0,7,7,10,7,10,0,8,7,11,7,12,0,9,7,13,7,13,0,8,0,2,1,65,0,4,0,4,0,129,0,13,0,13,0,10,0,22,0,22,0,88,0,23,0,23,0,50,0,24,0,24,0,52,0,25,0,25,0,55,0,26,0,26,0,58,0,27,0,27,0,90,0,28,0,28,0,16,0,29,0,29,0,91,0,30,0,30,0,128,0,32,0,34,0,46,0,35,0,35,0,130,0,36,0,36,0,131,0,39,0,39,0,9,0,42,0,43,0,140,0,44,0,44,0,46,0,45,0,45,0,140,0,46,0,46,0,46,0,47,0,47,0,140,0,48,0,48,0,132,0,49,0,49,0,48,0,51,0,51,0,53,0,52,0,52,0,56,0,53,0,53,0,89,0,54,0,54,0,59,0,55,0,55,0,141,0,56,0,77,0,129,0,78,0,80,0,127,0,135,0,135,0,10,0,191,0,197,0,88,0,199,0,204,0,50,0,205,0,227,0,52,0,228,0,231,0,58,0,232,0,239,0,16,0,240,0,244,0,91,0,250,1,18,0,128,1,19,1,19,0,15,1,21,1,47,0,46,1,48,1,55,0,131,1,60,1,60,0,15,1,73,1,73,0,140,1,74,1,74,0,9,1,78,1,78,0,140,1,87,1,97,0,140,1,99,1,124,0,46,1,125,1,131,0,140,1,132,1,138,0,132,1,140,1,146,0,48,1,170,1,173,0,56,1,174,1,181,0,59,1,182,1,186,0,141,1,189,1,189,0,140,1,190,1,190,0,9,1,193,1,193,0,140,1,196,1,198,0,46,1,200,1,200,0,46,1,201,1,201,0,140,1,207,1,207,0,9,1,208,1,210,0,46,1,211,1,211,0,59,1,216,1,216,0,140,1,223,1,223,0,140,1,226,1,226,0,140,1,227,1,227,0,9,1,228,1,229,0,140,1,230,1,232,0,46,1,236,1,236,0,140,1,238,1,238,0,140,1,240,1,240,0,132,1,241,1,242,0,9,1,243,1,243,0,48,1,251,1,252,0,141,2,4,2,4,0,130,2,7,2,8,0,130,2,23,2,54,0,46,2,64,2,64,0,130,2,65,2,65,0,113,2,68,2,68,0,117,2,70,2,70,0,87,2,75,2,75,0,113,2,78,2,78,0,86,2,82,2,82,0,85,2,83,2,83,0,43,2,84,2,84,0,14,2,85,2,85,0,37,2,86,2,86,0,84,2,87,2,87,0,38,2,89,2,89,0,112,2,90,2,92,0,124,2,94,2,94,0,123,2,95,2,95,0,125,2,96,2,96,0,14,2,97,2,97,0,119,2,98,2,98,0,35,2,99,2,99,0,114,2,100,2,100,0,92,2,101,2,101,0,115,2,102,2,102,0,118,2,103,2,103,0,126,2,108,2,108,0,93,2,110,2,110,0,94,2,112,2,112,0,39,2,113,2,113,0,101,2,114,2,114,0,122,2,115,2,115,0,39,2,116,2,116,0,41,2,118,2,118,0,39,2,119,2,119,0,83,2,121,2,122,0,39,2,125,2,125,0,39,2,126,2,126,0,35,2,127,2,127,0,118,2,131,2,131,0,39,2,134,2,134,0,39,2,137,2,146,0,112,2,147,2,148,0,113,2,149,2,152,0,124,2,157,2,160,0,124,2,167,2,170,0,124,2,179,2,182,0,123,2,187,2,187,0,124,2,188,2,190,0,125,2,194,2,195,0,14,2,196,2,199,0,119,2,206,2,206,0,113,2,207,2,214,0,112,2,216,2,217,0,124,2,225,2,226,0,119,2,233,2,245,0,35,2,246,2,253,0,118,3,25,3,32,0,39,3,33,3,34,0,122,3,51,3,61,0,39,3,62,3,73,0,35,3,86,3,97,0,39,3,99,3,100,0,39,3,138,3,138,0,110,3,142,3,142,0,3,3,144,3,144,0,8,3,147,3,147,0,80,3,153,3,153,0,13,3,160,3,160,0,31,3,161,3,161,0,6,3,162,3,162,0,23,3,163,3,163,0,75,3,165,3,165,0,21,3,168,3,168,0,31,3,171,3,171,0,80,3,173,3,173,0,78,3,176,3,176,0,31,3,179,3,179,0,72,3,183,3,183,0,5,3,184,3,184,0,13,3,186,3,186,0,31,3,191,3,191,0,6,3,193,3,193,0,34,3,195,3,195,0,26,3,198,3,198,0,8,3,201,3,201,0,80,3,205,3,205,0,31,3,210,3,210,0,99,3,212,3,212,0,75,3,213,3,213,0,21,3,216,3,216,0,8,3,219,3,219,0,110,3,220,3,220,0,134,3,222,3,222,0,135,3,226,3,227,0,6,3,228,3,228,0,109,3,230,3,231,0,139,3,232,3,232,0,1,3,233,3,233,0,27,3,234,3,234,0,81,3,237,3,237,0,79,3,238,3,240,0,139,3,243,3,243,0,12,3,244,3,245,0,139,3,246,3,246,0,27,3,247,3,247,0,139,3,249,3,249,0,27,3,250,3,250,0,29,3,251,3,251,0,32,3,252,3,252,0,27,3,253,3,253,0,74,3,254,3,254,0,139,3,255,3,255,0,19,4,0,4,1,0,139,4,2,4,2,0,29,4,3,4,4,0,139,4,5,4,5,0,73,4,6,4,6,0,139,4,7,4,7,0,77,4,8,4,9,0,27,4,10,4,10,0,11,4,11,4,11,0,139,4,12,4,12,0,27,4,13,4,13,0,111,4,17,4,17,0,4,4,18,4,18,0,12,4,19,4,19,0,139,4,20,4,20,0,11,4,21,4,21,0,139,4,24,4,24,0,139,4,25,4,25,0,32,4,26,4,26,0,139,4,27,4,27,0,7,4,28,4,28,0,27,4,29,4,29,0,24,4,30,4,30,0,139,4,31,4,31,0,137,4,32,4,32,0,81,4,35,4,35,0,79,4,36,4,36,0,139,4,39,4,39,0,29,4,42,4,42,0,139,4,43,4,43,0,27,4,44,4,45,0,24,4,46,4,46,0,74,4,47,4,47,0,19,4,49,4,49,0,81,4,53,4,54,0,109,4,55,4,55,0,27,4,57,4,57,0,139,4,58,4,59,0,27,4,60,4,61,0,32,4,78,4,78,0,67,4,84,4,84,0,70,4,100,4,100,0,66,4,106,4,106,0,69,4,108,4,108,0,65,4,119,4,120,0,133,4,123,4,123,0,133,4,125,4,125,0,136,4,127,4,127,0,138,4,128,4,129,0,63,4,130,4,130,0,61,4,131,4,131,0,62,4,132,4,132,0,61,4,133,4,133,0,62,4,134,4,135,0,133,4,163,4,163,0,17,4,195,4,195,0,45,4,197,4,197,0,47,4,201,4,201,0,47,4,204,4,204,0,106,4,209,4,209,0,47,4,211,4,211,0,47,4,213,4,213,0,107,4,214,4,214,0,49,4,215,4,215,0,51,4,216,4,216,0,54,4,217,4,217,0,57,4,218,4,218,0,108,4,219,4,219,0,60,4,220,4,220,0,98,4,221,4,242,0,45,4,248,4,252,0,47,5,19,5,27,0,47,5,44,5,44,0,106,5,67,5,92,0,47,5,100,5,107,0,107,5,109,5,114,0,49,5,115,5,137,0,51,5,138,5,141,0,57,5,142,5,149,0,60,5,150,5,154,0,98,5,161,5,161,0,36,5,164,5,164,0,116,5,166,5,166,0,97,5,168,5,168,0,40,5,171,5,171,0,36,5,174,5,174,0,96,5,175,5,175,0,40,5,178,5,178,0,95,5,179,5,179,0,42,5,180,5,180,0,44,5,181,5,181,0,121,5,182,5,182,0,105,5,184,5,184,0,120,5,186,5,186,0,44,5,187,5,187,0,36,5,189,5,189,0,120,5,190,5,190,0,18,5,194,5,194,0,2,5,196,5,196,0,82,5,204,5,204,0,28,5,207,5,207,0,28,5,208,5,208,0,30,5,209,5,209,0,76,5,210,5,210,0,22,5,211,5,211,0,103,5,213,5,213,0,20,5,216,5,216,0,30,5,224,5,224,0,30,5,226,5,226,0,28,5,227,5,227,0,102,5,231,5,231,0,104,5,234,5,234,0,30,5,237,5,237,0,76,5,239,5,239,0,33,5,240,5,240,0,28,5,241,5,241,0,25,5,244,5,244,0,82,5,247,5,247,0,30,5,249,5,249,0,28,5,250,5,250,0,100,5,252,5,252,0,103,5,253,5,253,0,20,6,0,6,0,0,82,6,1,6,1,0,18,6,6,6,7,0,28,6,8,6,9,0,76,6,12,6,12,0,68,6,15,6,15,0,64,6,17,6,17,0,71,6,235,6,235,0,117,7,10,7,10,0,61,7,11,7,12,0,62,7,13,7,13,0,61,7,150,7,151,0,130,0,1,0,0,0,10,2,92,15,184,0,4,68,70,76,84,0,26,99,121,114,108,0,80,103,114,101,107,0,194,108,97,116,110,0,250,0,4,0,0,0,0,255,255,0,22,0,0,0,10,0,20,0,30,0,40,0,50,0,60,0,78,0,88,0,98,0,108,0,118,0,128,0,138,0,148,0,158,0,168,0,178,0,188,0,198,0,208,0,218,0,10,0,1,83,82,66,32,0,62,0,0,255,255,0,23,0,1,0,11,0,21,0,31,0,41,0,51,0,61,0,70,0,79,0,89,0,99,0,109,0,119,0,129,0,139,0,149,0,159,0,169,0,179,0,189,0,199,0,209,0,219,0,0,255,255,0,23,0,2,0,12,0,22,0,32,0,42,0,52,0,62,0,71,0,80,0,90,0,100,0,110,0,120,0,130,0,140,0,150,0,160,0,170,0,180,0,190,0,200,0,210,0,220,0,4,0,0,0,0,255,255,0,23,0,3,0,13,0,23,0,33,0,43,0,53,0,63,0,72,0,81,0,91,0,101,0,111,0,121,0,131,0,141,0,151,0,161,0,171,0,181,0,191,0,201,0,211,0,221,0,34,0,5,65,90,69,32,0,84,67,82,84,32,0,136,78,83,77,32,0,188,83,75,83,32,0,240,84,82,75,32,1,36,0,0,255,255,0,22,0,4,0,14,0,24,0,34,0,44,0,54,0,64,0,82,0,92,0,102,0,112,0,122,0,132,0,142,0,152,0,162,0,172,0,182,0,192,0,202,0,212,0,222,0,0,255,255,0,23,0,5,0,15,0,25,0,35,0,45,0,55,0,65,0,73,0,83,0,93,0,103,0,113,0,123,0,133,0,143,0,153,0,163,0,173,0,183,0,193,0,203,0,213,0,223,0,0,255,255,0,23,0,6,0,16,0,26,0,36,0,46,0,56,0,66,0,74,0,84,0,94,0,104,0,114,0,124,0,134,0,144,0,154,0,164,0,174,0,184,0,194,0,204,0,214,0,224,0,0,255,255,0,23,0,7,0,17,0,27,0,37,0,47,0,57,0,67,0,75,0,85,0,95,0,105,0,115,0,125,0,135,0,145,0,155,0,165,0,175,0,185,0,195,0,205,0,215,0,225,0,0,255,255,0,23,0,8,0,18,0,28,0,38,0,48,0,58,0,68,0,76,0,86,0,96,0,106,0,116,0,126,0,136,0,146,0,156,0,166,0,176,0,186,0,196,0,206,0,216,0,226,0,0,255,255,0,23,0,9,0,19,0,29,0,39,0,49,0,59,0,69,0,77,0,87,0,97,0,107,0,117,0,127,0,137,0,147,0,157,0,167,0,177,0,187,0,197,0,207,0,217,0,227,0,228,97,97,108,116,5,90,97,97,108,116,5,98,97,97,108,116,5,106,97,97,108,116,5,114,97,97,108,116,5,122,97,97,108,116,5,130,97,97,108,116,5,138,97,97,108,116,5,146,97,97,108,116,5,154,97,97,108,116,5,162,99,50,115,99,5,170,99,50,115,99,5,180,99,50,115,99,5,190,99,50,115,99,5,200,99,50,115,99,5,210,99,50,115,99,5,220,99,50,115,99,5,230,99,50,115,99,5,240,99,50,115,99,5,250,99,50,115,99,6,4,99,97,115,101,6,14,99,97,115,101,6,20,99,97,115,101,6,26,99,97,115,101,6,32,99,97,115,101,6,38,99,97,115,101,6,44,99,97,115,101,6,50,99,97,115,101,6,56,99,97,115,101,6,62,99,97,115,101,6,68,99,99,109,112,6,74,99,99,109,112,6,92,99,99,109,112,6,110,99,99,109,112,6,128,99,99,109,112,6,146,99,99,109,112,6,164,99,99,109,112,6,182,99,99,109,112,6,200,99,99,109,112,6,218,99,99,109,112,6,236,100,110,111,109,6,254,100,110,111,109,7,4,100,110,111,109,7,10,100,110,111,109,7,16,100,110,111,109,7,22,100,110,111,109,7,28,100,110,111,109,7,34,100,110,111,109,7,40,100,110,111,109,7,46,100,110,111,109,7,52,102,114,97,99,7,58,102,114,97,99,7,68,102,114,97,99,7,78,102,114,97,99,7,88,102,114,97,99,7,98,102,114,97,99,7,108,102,114,97,99,7,118,102,114,97,99,7,128,102,114,97,99,7,138,102,114,97,99,7,148,108,105,103,97,7,158,108,105,103,97,7,164,108,105,103,97,7,170,108,105,103,97,7,176,108,105,103,97,7,182,108,105,103,97,7,188,108,105,103,97,7,194,108,105,103,97,7,200,108,105,103,97,7,206,108,105,103,97,7,212,108,111,99,108,7,218,108,111,99,108,7,224,108,111,99,108,7,232,108,111,99,108,7,238,108,111,99,108,7,244,108,111,99,108,7,250,108,111,99,108,8,0,108,111,99,108,8,6,110,117,109,114,8,12,110,117,109,114,8,18,110,117,109,114,8,24,110,117,109,114,8,30,110,117,109,114,8,36,110,117,109,114,8,42,110,117,109,114,8,48,110,117,109,114,8,54,110,117,109,114,8,60,110,117,109,114,8,66,111,110,117,109,8,72,111,110,117,109,8,78,111,110,117,109,8,84,111,110,117,109,8,90,111,110,117,109,8,96,111,110,117,109,8,102,111,110,117,109,8,108,111,110,117,109,8,114,111,110,117,109,8,120,111,110,117,109,8,126,111,114,100,110,8,132,111,114,100,110,8,138,111,114,100,110,8,144,111,114,100,110,8,150,111,114,100,110,8,156,111,114,100,110,8,162,111,114,100,110,8,168,111,114,100,110,8,174,111,114,100,110,8,180,111,114,100,110,8,186,112,110,117,109,8,192,112,110,117,109,8,198,112,110,117,109,8,204,112,110,117,109,8,210,112,110,117,109,8,216,112,110,117,109,8,222,112,110,117,109,8,228,112,110,117,109,8,234,112,110,117,109,8,240,112,110,117,109,8,246,115,97,108,116,8,252,115,97,108,116,9,22,115,97,108,116,9,48,115,97,108,116,9,74,115,97,108,116,9,100,115,97,108,116,9,126,115,97,108,116,9,152,115,97,108,116,9,178,115,97,108,116,9,204,115,97,108,116,9,230,115,105,110,102,10,0,115,105,110,102,10,6,115,105,110,102,10,12,115,105,110,102,10,18,115,105,110,102,10,24,115,105,110,102,10,30,115,105,110,102,10,36,115,105,110,102,10,42,115,105,110,102,10,48,115,105,110,102,10,54,115,109,99,112,10,60,115,109,99,112,10,74,115,109,99,112,10,88,115,109,99,112,10,102,115,109,99,112,10,116,115,109,99,112,10,130,115,109,99,112,10,144,115,109,99,112,10,158,115,109,99,112,10,172,115,109,99,112,10,186,115,115,48,49,10,200,115,115,48,49,10,210,115,115,48,49,10,220,115,115,48,49,10,230,115,115,48,49,10,240,115,115,48,49,10,250,115,115,48,49,11,4,115,115,48,49,11,14,115,115,48,49,11,24,115,115,48,49,11,34,115,115,48,50,11,44,115,115,48,50,11,52,115,115,48,50,11,60,115,115,48,50,11,68,115,115,48,50,11,76,115,115,48,50,11,84,115,115,48,50,11,92,115,115,48,50,11,100,115,115,48,50,11,108,115,115,48,50,11,116,115,115,48,51,11,124,115,115,48,51,11,132,115,115,48,51,11,140,115,115,48,51,11,148,115,115,48,51,11,156,115,115,48,51,11,164,115,115,48,51,11,172,115,115,48,51,11,180,115,115,48,51,11,188,115,115,48,51,11,196,115,115,48,52,11,204,115,115,48,52,11,214,115,115,48,52,11,224,115,115,48,52,11,234,115,115,48,52,11,244,115,115,48,52,11,254,115,115,48,52,12,8,115,115,48,52,12,18,115,115,48,52,12,28,115,115,48,52,12,38,115,115,48,53,12,48,115,115,48,53,12,54,115,115,48,53,12,60,115,115,48,53,12,66,115,115,48,53,12,72,115,115,48,53,12,78,115,115,48,53,12,84,115,115,48,53,12,90,115,115,48,53,12,96,115,115,48,53,12,102,115,117,98,115,12,108,115,117,98,115,12,114,115,117,98,115,12,120,115,117,98,115,12,126,115,117,98,115,12,132,115,117,98,115,12,138,115,117,98,115,12,144,115,117,98,115,12,150,115,117,98,115,12,156,115,117,98,115,12,162,115,117,112,115,12,168,115,117,112,115,12,180,115,117,112,115,12,192,115,117,112,115,12,204,115,117,112,115,12,216,115,117,112,115,12,228,115,117,112,115,12,240,115,117,112,115,12,252,115,117,112,115,13,8,115,117,112,115,13,20,122,101,114,111,13,32,122,101,114,111,13,38,122,101,114,111,13,44,122,101,114,111,13,50,122,101,114,111,13,56,122,101,114,111,13,62,122,101,114,111,13,68,122,101,114,111,13,74,122,101,114,111,13,80,122,101,114,111,13,86,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,3,0,17,0,18,0,19,0,0,0,3,0,17,0,18,0,19,0,0,0,3,0,17,0,18,0,19,0,0,0,3,0,17,0,18,0,19,0,0,0,3,0,17,0,18,0,19,0,0,0,3,0,17,0,18,0,19,0,0,0,3,0,17,0,18,0,19,0,0,0,3,0,17,0,18,0,19,0,0,0,3,0,17,0,18,0,19,0,0,0,3,0,17,0,18,0,19,0,0,0,1,0,35,0,0,0,1,0,35,0,0,0,1,0,35,0,0,0,1,0,35,0,0,0,1,0,35,0,0,0,1,0,35,0,0,0,1,0,35,0,0,0,1,0,35,0,0,0,1,0,35,0,0,0,1,0,35,0,0,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,0,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,0,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,0,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,0,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,0,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,0,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,0,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,0,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,0,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,0,0,1,0,23,0,0,0,1,0,23,0,0,0,1,0,23,0,0,0,1,0,23,0,0,0,1,0,23,0,0,0,1,0,23,0,0,0,1,0,23,0,0,0,1,0,23,0,0,0,1,0,23,0,0,0,1,0,23,0,0,0,3,0,22,0,24,0,25,0,0,0,3,0,22,0,24,0,25,0,0,0,3,0,22,0,24,0,25,0,0,0,3,0,22,0,24,0,25,0,0,0,3,0,22,0,24,0,25,0,0,0,3,0,22,0,24,0,25,0,0,0,3,0,22,0,24,0,25,0,0,0,3,0,22,0,24,0,25,0,0,0,3,0,22,0,24,0,25,0,0,0,3,0,22,0,24,0,25,0,0,0,1,0,47,0,0,0,1,0,47,0,0,0,1,0,47,0,0,0,1,0,47,0,0,0,1,0,47,0,0,0,1,0,47,0,0,0,1,0,47,0,0,0,1,0,47,0,0,0,1,0,47,0,0,0,1,0,47,0,0,0,1,0,5,0,0,0,2,0,5,0,6,0,0,0,1,0,4,0,0,0,1,0,2,0,0,0,1,0,2,0,0,0,1,0,3,0,0,0,1,0,3,0,0,0,1,0,2,0,0,0,1,0,22,0,0,0,1,0,22,0,0,0,1,0,22,0,0,0,1,0,22,0,0,0,1,0,22,0,0,0,1,0,22,0,0,0,1,0,22,0,0,0,1,0,22,0,0,0,1,0,22,0,0,0,1,0,22,0,0,0,1,0,32,0,0,0,1,0,32,0,0,0,1,0,32,0,0,0,1,0,32,0,0,0,1,0,32,0,0,0,1,0,32,0,0,0,1,0,32,0,0,0,1,0,32,0,0,0,1,0,32,0,0,0,1,0,32,0,0,0,1,0,26,0,0,0,1,0,26,0,0,0,1,0,26,0,0,0,1,0,26,0,0,0,1,0,26,0,0,0,1,0,26,0,0,0,1,0,26,0,0,0,1,0,26,0,0,0,1,0,26,0,0,0,1,0,26,0,0,0,1,0,31,0,0,0,1,0,31,0,0,0,1,0,31,0,0,0,1,0,31,0,0,0,1,0,31,0,0,0,1,0,31,0,0,0,1,0,31,0,0,0,1,0,31,0,0,0,1,0,31,0,0,0,1,0,31,0,0,0,11,0,3,0,36,0,37,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,0,0,11,0,3,0,36,0,37,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,0,0,11,0,3,0,36,0,37,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,0,0,11,0,3,0,36,0,37,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,0,0,11,0,3,0,36,0,37,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,0,0,11,0,3,0,36,0,37,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,0,0,11,0,3,0,36,0,37,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,0,0,11,0,3,0,36,0,37,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,0,0,11,0,3,0,36,0,37,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,0,0,11,0,3,0,36,0,37,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,0,0,1,0,30,0,0,0,1,0,30,0,0,0,1,0,30,0,0,0,1,0,30,0,0,0,1,0,30,0,0,0,1,0,30,0,0,0,1,0,30,0,0,0,1,0,30,0,0,0,1,0,30,0,0,0,1,0,30,0,0,0,5,0,15,0,16,0,18,0,20,0,21,0,0,0,5,0,15,0,16,0,18,0,20,0,21,0,0,0,5,0,15,0,16,0,18,0,20,0,21,0,0,0,5,0,15,0,16,0,18,0,20,0,21,0,0,0,5,0,15,0,16,0,18,0,20,0,21,0,0,0,5,0,15,0,16,0,18,0,20,0,21,0,0,0,5,0,15,0,16,0,18,0,20,0,21,0,0,0,5,0,15,0,16,0,18,0,20,0,21,0,0,0,5,0,15,0,16,0,18,0,20,0,21,0,0,0,5,0,15,0,16,0,18,0,20,0,21,27,134,0,3,0,36,0,37,0,38,27,124,0,3,0,36,0,37,0,38,27,114,0,3,0,36,0,37,0,38,27,104,0,3,0,36,0,37,0,38,27,94,0,3,0,36,0,37,0,38,27,84,0,3,0,36,0,37,0,38,27,74,0,3,0,36,0,37,0,38,27,64,0,3,0,36,0,37,0,38,27,54,0,3,0,36,0,37,0,38,27,44,0,3,0,36,0,37,0,38,27,78,0,2,0,39,0,40,27,70,0,2,0,39,0,40,27,62,0,2,0,39,0,40,27,54,0,2,0,39,0,40,27,46,0,2,0,39,0,40,27,38,0,2,0,39,0,40,27,30,0,2,0,39,0,40,27,22,0,2,0,39,0,40,27,14,0,2,0,39,0,40,27,6,0,2,0,39,0,40,27,64,0,2,0,41,0,42,27,56,0,2,0,41,0,42,27,48,0,2,0,41,0,42,27,40,0,2,0,41,0,42,27,32,0,2,0,41,0,42,27,24,0,2,0,41,0,42,27,16,0,2,0,41,0,42,27,8,0,2,0,41,0,42,27,0,0,2,0,41,0,42,26,248,0,2,0,41,0,42,27,20,0,3,0,43,0,44,0,45,27,10,0,3,0,43,0,44,0,45,27,0,0,3,0,43,0,44,0,45,26,246,0,3,0,43,0,44,0,45,26,236,0,3,0,43,0,44,0,45,26,226,0,3,0,43,0,44,0,45,26,216,0,3,0,43,0,44,0,45,26,206,0,3,0,43,0,44,0,45,26,196,0,3,0,43,0,44,0,45,26,186,0,3,0,43,0,44,0,45,25,164,0,1,0,33,25,158,0,1,0,33,25,152,0,1,0,33,25,146,0,1,0,33,25,140,0,1,0,33,25,134,0,1,0,33,25,128,0,1,0,33,25,122,0,1,0,33,25,116,0,1,0,33,25,110,0,1,0,33,0,0,0,1,0,30,0,0,0,1,0,30,0,0,0,1,0,30,0,0,0,1,0,30,0,0,0,1,0,30,0,0,0,1,0,30,0,0,0,1,0,30,0,0,0,1,0,30,0,0,0,1,0,30,0,0,0,1,0,30,0,0,0,4,0,26,0,27,0,28,0,29,0,0,0,4,0,26,0,27,0,28,0,29,0,0,0,4,0,26,0,27,0,28,0,29,0,0,0,4,0,26,0,27,0,28,0,29,0,0,0,4,0,26,0,27,0,28,0,29,0,0,0,4,0,26,0,27,0,28,0,29,0,0,0,4,0,26,0,27,0,28,0,29,0,0,0,4,0,26,0,27,0,28,0,29,0,0,0,4,0,26,0,27,0,28,0,29,0,0,0,4,0,26,0,27,0,28,0,29,0,0,0,1,0,34,0,0,0,1,0,34,0,0,0,1,0,34,0,0,0,1,0,34,0,0,0,1,0,34,0,0,0,1,0,34,0,0,0,1,0,34,0,0,0,1,0,34,0,0,0,1,0,34,0,0,0,1,0,34,0,50,0,102,0,110,0,118,0,126,0,134,0,142,0,150,0,158,0,166,0,178,0,188,0,196,0,204,0,212,0,222,0,240,0,248,1,0,1,8,1,16,1,24,1,32,1,40,1,48,1,56,1,64,1,76,1,84,1,92,1,100,1,108,1,116,1,124,1,132,1,140,1,148,1,156,1,164,1,172,1,180,1,188,1,196,1,204,1,212,1,220,1,228,1,236,1,244,1,252,2,4,0,1,0,0,0,1,25,214,0,3,0,0,0,1,31,44,0,1,0,0,0,1,1,150,0,1,0,0,0,1,1,148,0,1,0,0,0,1,1,146,0,1,0,0,0,1,1,152,0,1,0,0,0,1,1,150,0,2,0,0,0,1,1,148,0,6,0,0,0,3,1,226,1,244,2,6,0,6,0,0,0,2,2,12,2,32,0,4,0,0,0,1,2,40,0,4,0,0,0,1,3,42,0,4,0,0,0,1,3,240,0,6,0,0,0,2,14,112,14,130,0,6,0,0,0,6,14,138,14,156,14,174,14,192,14,210,14,228,0,1,0,0,0,1,14,228,0,1,0,0,0,1,15,42,0,1,0,0,0,1,16,26,0,1,0,0,0,1,19,104,0,1,0,0,0,1,19,102,0,1,0,0,0,1,19,140,0,1,0,0,0,1,21,68,0,1,0,0,0,1,21,218,0,1,0,0,0,1,21,244,0,1,0,0,0,1,22,14,0,6,0,0,0,3,22,12,22,30,22,48,0,1,0,0,0,1,22,56,0,1,0,0,0,1,22,112,0,1,0,0,0,1,22,110,0,1,0,0,0,1,22,136,0,1,0,0,0,1,22,142,0,1,0,0,0,1,22,168,0,1,0,0,0,1,22,206,0,1,0,0,0,1,22,248,0,1,0,0,0,1,22,246,0,1,0,0,0,1,22,244,0,1,0,0,0,1,23,90,0,1,0,0,0,1,23,110,0,1,0,0,0,1,23,108,0,1,0,0,0,1,23,110,0,1,0,0,0,1,23,158,0,1,0,0,0,1,23,160,0,1,0,0,0,1,23,178,0,1,0,0,0,1,23,180,0,1,0,0,0,1,23,204,0,2,0,0,0,1,23,208,0,1,0,0,0,1,24,38,0,4,0,0,0,1,24,36,0,4,0,0,0,1,34,162,0,1,0,0,0,1,34,172,0,1,35,10,4,156,0,1,35,10,1,30,0,2,35,10,0,4,7,35,7,38,7,69,7,71,0,1,35,8,0,1,0,1,35,10,0,89,0,1,35,10,0,10,0,26,0,32,0,38,0,44,0,50,0,56,0,62,0,68,0,74,0,80,0,2,0,8,7,39,0,2,0,8,7,43,0,2,0,18,7,39,0,2,0,18,7,43,0,2,0,34,7,39,0,2,0,34,7,43,0,2,0,44,7,39,0,2,0,44,7,43,0,2,0,12,7,53,0,2,1,73,7,53,0,3,0,0,0,1,34,204,0,1,34,216,0,1,0,0,0,7,0,3,0,0,0,1,34,204,0,1,34,216,0,1,0,0,0,7,0,3,0,0,0,1,34,204,0,1,34,198,0,1,0,0,0,7,0,3,0,0,0,2,34,88,34,194,0,1,34,180,0,1,0,0,0,48,0,3,0,0,0,1,34,180,0,1,34,160,0,1,0,0,0,49,0,1,34,168,0,5,0,16,0,58,0,100,0,166,0,216,0,5,0,12,0,18,0,24,0,30,0,36,7,120,0,2,7,33,7,118,0,2,7,36,7,124,0,2,7,41,7,134,0,2,7,47,7,122,0,2,7,55,0,5,0,12,0,18,0,24,0,30,0,36,7,128,0,2,7,33,7,126,0,2,7,36,7,132,0,2,7,41,7,130,0,2,7,55,7,132,0,2,7,103,0,8,0,18,0,24,0,30,0,36,0,42,0,48,0,54,0,60,7,110,0,2,7,33,7,112,0,2,7,35,7,107,0,2,7,36,7,109,0,2,7,38,7,113,0,2,7,41,7,114,0,2,7,43,7,116,0,2,7,61,7,113,0,2,7,103,0,6,0,14,0,20,0,26,0,32,0,38,0,44,7,139,0,2,7,33,7,139,0,2,7,35,7,138,0,2,7,36,7,138,0,2,7,38,7,140,0,2,7,41,7,140,0,2,7,103,0,6,0,14,0,20,0,26,0,32,0,38,0,44,7,142,0,2,7,33,7,142,0,2,7,35,7,141,0,2,7,36,7,141,0,2,7,38,7,143,0,2,7,41,7,143,0,2,7,103,0,1,33,172,0,16,0,38,0,48,0,58,0,68,0,78,0,88,0,98,0,108,0,118,0,128,0,146,0,156,0,166,0,176,0,186,0,196,0,1,0,4,0,77,0,2,7,88,0,1,0,4,0,108]);fileData0.push.apply(fileData0,[0,2,7,88,0,1,0,4,0,117,0,2,7,41,0,1,0,4,0,133,0,2,7,88,0,1,0,4,0,183,0,2,7,88,0,1,0,4,0,221,0,2,7,88,0,1,0,4,1,15,0,2,7,88,0,1,0,4,1,26,0,2,7,61,0,1,0,4,1,46,0,2,7,88,0,2,0,6,0,12,1,55,0,2,7,41,1,52,0,2,7,86,0,1,0,4,1,70,0,2,7,88,0,1,0,4,1,80,0,2,7,61,0,1,0,4,1,124,0,2,7,88,0,1,0,4,1,140,0,2,7,61,0,1,0,4,1,163,0,2,7,88,0,1,0,4,2,51,0,2,7,86,0,1,33,2,0,22,0,50,1,68,1,134,2,136,2,242,3,52,3,62,3,136,4,138,5,106,5,172,6,124,7,6,7,72,7,90,7,228,8,180,8,246,9,56,9,122,9,212,10,46,0,30,0,62,0,70,0,78,0,86,0,94,0,102,0,110,0,118,0,126,0,134,0,142,0,150,0,158,0,166,0,174,0,182,0,190,0,196,0,202,0,208,0,214,0,220,0,226,0,232,0,238,0,244,0,250,1,0,1,6,1,12,2,208,0,3,3,112,7,69,2,207,0,3,3,112,7,71,2,212,0,3,3,112,7,138,2,210,0,3,3,112,7,139,2,214,0,3,3,112,7,140,2,211,0,3,3,112,7,141,2,209,0,3,3,112,7,142,2,213,0,3,3,112,7,143,2,208,0,3,7,105,7,69,2,207,0,3,7,105,7,71,2,212,0,3,7,105,7,138,2,210,0,3,7,105,7,139,2,214,0,3,7,105,7,140,2,211,0,3,7,105,7,141,2,209,0,3,7,105,7,142,2,213,0,3,7,105,7,143,2,206,0,2,3,112,2,139,0,2,7,33,2,140,0,2,7,36,2,148,0,2,7,43,2,147,0,2,7,47,2,138,0,2,7,69,2,137,0,2,7,71,2,206,0,2,7,105,2,144,0,2,7,138,2,142,0,2,7,139,2,146,0,2,7,140,2,143,0,2,7,141,2,141,0,2,7,142,2,145,0,2,7,143,0,8,0,18,0,24,0,30,0,36,0,42,0,48,0,54,0,60,2,151,0,2,7,33,2,152,0,2,7,36,2,150,0,2,7,69,2,149,0,2,7,71,2,156,0,2,7,138,2,154,0,2,7,139,2,155,0,2,7,141,2,153,0,2,7,142,0,28,0,58,0,66,0,74,0,82,0,90,0,98,0,106,0,114,0,122,0,130,0,138,0,146,0,154,0,162,0,170,0,178,0,186,0,192,0,198,0,204,0,210,0,216,0,222,0,228,0,234,0,240,0,246,0,252,2,217,0,3,3,112,7,69,2,216,0,3,3,112,7,71,2,221,0,3,3,112,7,138,2,219,0,3,3,112,7,139,2,223,0,3,3,112,7,140,2,220,0,3,3,112,7,141,2,218,0,3,3,112,7,142,2,222,0,3,3,112,7,143,2,217,0,3,7,105,7,69,2,216,0,3,7,105,7,71,2,221,0,3,7,105,7,138,2,219,0,3,7,105,7,139,2,223,0,3,7,105,7,140,2,220,0,3,7,105,7,141,2,218,0,3,7,105,7,142,2,222,0,3,7,105,7,143,2,215,0,2,3,112,2,159,0,2,7,33,2,160,0,2,7,36,2,158,0,2,7,69,2,157,0,2,7,71,2,215,0,2,7,105,2,164,0,2,7,138,2,162,0,2,7,139,2,166,0,2,7,140,2,163,0,2,7,141,2,161,0,2,7,142,2,165,0,2,7,143,0,13,0,28,0,34,0,40,0,46,0,52,0,58,0,64,0,70,0,76,0,82,0,88,0,94,0,100,2,176,0,2,3,123,2,169,0,2,7,33,2,170,0,2,7,36,2,178,0,2,7,43,2,177,0,2,7,47,2,93,0,2,7,53,2,168,0,2,7,69,2,167,0,2,7,71,2,174,0,2,7,138,2,172,0,2,7,139,2,173,0,2,7,141,2,171,0,2,7,142,2,175,0,2,7,143,0,8,0,18,0,24,0,30,0,36,0,42,0,48,0,54,0,60,2,181,0,2,7,33,2,182,0,2,7,36,2,180,0,2,7,69,2,179,0,2,7,71,2,186,0,2,7,138,2,184,0,2,7,139,2,185,0,2,7,141,2,183,0,2,7,142,0,1,0,4,2,187,0,2,7,69,0,9,0,20,0,26,0,32,0,38,0,44,0,50,0,56,0,62,0,68,2,189,0,2,7,33,2,190,0,2,7,36,2,195,0,2,7,43,2,194,0,2,7,47,2,96,0,2,7,53,2,188,0,2,7,69,2,192,0,2,7,138,2,191,0,2,7,139,2,193,0,2,7,140,0,28,0,58,0,66,0,74,0,82,0,90,0,98,0,106,0,114,0,122,0,130,0,138,0,146,0,154,0,162,0,170,0,178,0,186,0,192,0,198,0,204,0,210,0,216,0,222,0,228,0,234,0,240,0,246,0,252,2,226,0,3,3,112,7,69,2,225,0,3,3,112,7,71,2,230,0,3,3,112,7,138,2,228,0,3,3,112,7,139,2,232,0,3,3,112,7,140,2,229,0,3,3,112,7,141,2,227,0,3,3,112,7,142,2,231,0,3,3,112,7,143,2,226,0,3,7,105,7,69,2,225,0,3,7,105,7,71,2,230,0,3,7,105,7,138,2,228,0,3,7,105,7,139,2,232,0,3,7,105,7,140,2,229,0,3,7,105,7,141,2,227,0,3,7,105,7,142,2,231,0,3,7,105,7,143,2,224,0,2,3,112,2,196,0,2,3,114,2,202,0,2,3,120,2,198,0,2,7,33,2,199,0,2,7,36,2,197,0,2,7,69,2,224,0,2,7,105,2,203,0,2,7,138,2,201,0,2,7,139,2,205,0,2,7,140,2,200,0,2,7,142,2,204,0,2,7,143,0,25,0,52,0,60,0,68,0,76,0,84,0,92,0,100,0,108,0,116,0,124,0,132,0,140,0,146,0,152,0,158,0,164,0,170,0,176,0,182,0,188,0,194,0,200,0,206,0,212,0,218,3,65,0,3,7,105,7,33,3,66,0,3,7,105,7,36,3,64,0,3,7,105,7,69,3,63,0,3,7,105,7,71,3,73,0,3,7,105,7,103,3,70,0,3,7,105,7,138,3,68,0,3,7,105,7,139,3,72,0,3,7,105,7,140,3,69,0,3,7,105,7,141,3,67,0,3,7,105,7,142,3,71,0,3,7,105,7,143,2,235,0,2,7,33,2,236,0,2,7,36,2,244,0,2,7,43,2,243,0,2,7,47,2,234,0,2,7,69,2,233,0,2,7,71,2,245,0,2,7,103,3,62,0,2,7,105,2,240,0,2,7,138,2,238,0,2,7,139,2,242,0,2,7,140,2,239,0,2,7,141,2,237,0,2,7,142,2,241,0,2,7,143,0,8,0,18,0,24,0,30,0,36,0,42,0,48,0,54,0,60,2,248,0,2,7,33,2,249,0,2,7,36,2,247,0,2,7,69,2,246,0,2,7,71,2,253,0,2,7,138,2,251,0,2,7,139,2,252,0,2,7,141,2,250,0,2,7,142,0,23,0,48,0,56,0,64,0,72,0,80,0,88,0,96,0,104,0,112,0,120,0,128,0,136,0,142,0,148,0,154,0,160,0,166,0,172,0,178,0,184,0,190,0,196,0,202,3,77,0,3,7,105,7,33,3,78,0,3,7,105,7,36,3,76,0,3,7,105,7,69,3,75,0,3,7,105,7,71,3,85,0,3,7,105,7,103,3,82,0,3,7,105,7,138,3,80,0,3,7,105,7,139,3,84,0,3,7,105,7,140,3,81,0,3,7,105,7,141,3,79,0,3,7,105,7,142,3,83,0,3,7,105,7,143,3,0,0,2,7,33,3,1,0,2,7,36,2,255,0,2,7,69,2,254,0,2,7,71,3,8,0,2,7,103,3,74,0,2,7,105,3,5,0,2,7,138,3,3,0,2,7,139,3,7,0,2,7,140,3,4,0,2,7,141,3,2,0,2,7,142,3,6,0,2,7,143,0,17,0,36,0,42,0,48,0,54,0,60,0,66,0,72,0,78,0,84,0,90,0,96,0,102,0,108,0,114,0,120,0,126,0,132,3,11,0,2,7,33,3,12,0,2,7,36,3,20,0,2,7,43,3,19,0,2,7,47,2,130,0,2,7,53,3,10,0,2,7,69,3,9,0,2,7,71,3,21,0,2,7,103,3,23,0,2,7,107,3,22,0,2,7,110,3,24,0,2,7,113,3,16,0,2,7,138,3,14,0,2,7,139,3,18,0,2,7,140,3,15,0,2,7,141,3,13,0,2,7,142,3,17,0,2,7,143,0,8,0,18,0,24,0,30,0,36,0,42,0,48,0,54,0,60,3,27,0,2,7,33,3,28,0,2,7,36,3,26,0,2,7,69,3,25,0,2,7,71,3,32,0,2,7,138,3,30,0,2,7,139,3,31,0,2,7,141,3,29,0,2,7,142,0,2,0,6,0,12,3,34,0,2,7,69,3,33,0,2,7,71,0,17,0,36,0,42,0,48,0,54,0,60,0,66,0,72,0,78,0,84,0,90,0,96,0,102,0,108,0,114,0,120,0,126,0,132,3,37,0,2,7,33,3,38,0,2,7,36,3,47,0,2,7,43,3,46,0,2,7,47,2,133,0,2,7,53,3,36,0,2,7,69,3,35,0,2,7,71,3,45,0,2,7,103,3,49,0,2,7,107,3,48,0,2,7,110,3,50,0,2,7,113,3,42,0,2,7,138,3,40,0,2,7,139,3,44,0,2,7,140,3,41,0,2,7,141,3,39,0,2,7,142,3,43,0,2,7,143,0,23,0,48,0,56,0,64,0,72,0,80,0,88,0,96,0,104,0,112,0,120,0,128,0,136,0,142,0,148,0,154,0,160,0,166,0,172,0,178,0,184,0,190,0,196,0,202,3,89,0,3,7,105,7,33,3,90,0,3,7,105,7,36,3,88,0,3,7,105,7,69,3,87,0,3,7,105,7,71,3,97,0,3,7,105,7,103,3,94,0,3,7,105,7,138,3,92,0,3,7,105,7,139,3,96,0,3,7,105,7,140,3,93,0,3,7,105,7,141,3,91,0,3,7,105,7,142,3,95,0,3,7,105,7,143,3,53,0,2,7,33,3,54,0,2,7,36,3,52,0,2,7,69,3,51,0,2,7,71,3,61,0,2,7,103,3,86,0,2,7,105,3,58,0,2,7,138,3,56,0,2,7,139,3,60,0,2,7,140,3,57,0,2,7,141,3,55,0,2,7,142,3,59,0,2,7,143,0,8,0,18,0,24,0,30,0,36,0,42,0,48,0,54,0,60,2,208,0,2,7,69,2,207,0,2,7,71,2,212,0,2,7,138,2,210,0,2,7,139,2,214,0,2,7,140,2,211,0,2,7,141,2,209,0,2,7,142,2,213,0,2,7,143,0,8,0,18,0,24,0,30,0,36,0,42,0,48,0,54,0,60,2,217,0,2,7,69,2,216,0,2,7,71,2,221,0,2,7,138,2,219,0,2,7,139,2,223,0,2,7,140,2,220,0,2,7,141,2,218,0,2,7,142,2,222,0,2,7,143,0,8,0,18,0,24,0,30,0,36,0,42,0,48,0,54,0,60,2,226,0,2,7,69,2,225,0,2,7,71,2,230,0,2,7,138,2,228,0,2,7,139,2,232,0,2,7,140,2,229,0,2,7,141,2,227,0,2,7,142,2,231,0,2,7,143,0,11,0,24,0,30,0,36,0,42,0,48,0,54,0,60,0,66,0,72,0,78,0,84,3,65,0,2,7,33,3,66,0,2,7,36,3,64,0,2,7,69,3,63,0,2,7,71,3,73,0,2,7,103,3,70,0,2,7,138,3,68,0,2,7,139,3,72,0,2,7,140,3,69,0,2,7,141,3,67,0,2,7,142,3,71,0,2,7,143,0,11,0,24,0,30,0,36,0,42,0,48,0,54,0,60,0,66,0,72,0,78,0,84,3,77,0,2,7,33,3,78,0,2,7,36,3,76,0,2,7,69,3,75,0,2,7,71,3,85,0,2,7,103,3,82,0,2,7,138,3,80,0,2,7,139,3,84,0,2,7,140,3,81,0,2,7,141,3,79,0,2,7,142,3,83,0,2,7,143,0,11,0,24,0,30,0,36,0,42,0,48,0,54,0,60,0,66,0,72,0,78,0,84,3,89,0,2,7,33,3,90,0,2,7,36,3,88,0,2,7,69,3,87,0,2,7,71,3,97,0,2,7,103,3,94,0,2,7,138,3,92,0,2,7,139,3,96,0,2,7,140,3,93,0,2,7,141,3,91,0,2,7,142,3,95,0,2,7,143,0,3,0,1,22,170,0,1,23,32,0,0,0,1,0,0,0,49,0,3,0,1,23,74,0,1,23,14,0,0,0,1,0,0,0,49,0,3,0,0,0,1,23,116,0,1,23,116,0,1,0,0,0,49,0,3,0,0,0,1,23,104,0,1,23,104,0,1,0,0,0,49,0,3,0,0,0,1,23,92,0,1,23,92,0,1,0,0,0,49,0,3,0,1,23,80,0,1,23,62,0,0,0,1,0,0,0,49,0,3,0,1,23,70,0,1,23,50,0,0,0,1,0,0,0,49,0,3,0,1,23,58,0,1,23,38,0,0,0,1,0,0,0,49,0,2,23,46,0,36,5,161,5,162,5,163,5,164,5,165,5,166,5,167,5,168,5,169,5,170,5,171,5,172,5,173,5,174,5,175,5,176,5,177,5,178,5,179,5,180,5,181,5,182,5,183,5,184,5,178,5,161,5,165,5,167,5,169,5,185,5,175,5,180,5,186,5,184,5,185,5,186,0,2,22,240,0,121,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,165,5,165,5,165,5,165,5,165,5,165,5,165,5,165,5,167,5,167,5,167,5,167,5,167,5,167,5,167,5,167,5,167,5,167,5,167,5,169,5,169,5,169,5,169,5,169,5,169,5,169,5,169,5,169,5,169,5,169,5,169,5,169,5,185,5,185,5,185,5,175,5,175,5,175,5,175,5,175,5,175,5,175,5,175,5,177,5,177,5,180,5,180,5,180,5,180,5,180,5,180,5,180,5,180,5,180,5,180,5,180,5,180,5,180,5,186,5,186,5,186,5,184,5,184,5,184,5,184,5,184,5,184,5,184,5,184,5,184,5,184,5,184,5,187,5,187,5,187,5,187,5,187,5,187,5,187,5,187,5,187,5,187,5,187,5,187,5,188,5,188,5,188,5,188,5,188,5,188,5,188,5,188,5,188,5,188,5,188,5,188,5,189,5,189,5,189,5,189,5,189,5,189,5,189,5,189,5,189,5,189,5,189,5,189,0,2,22,2,1,168,4,195,4,196,4,197,4,198,4,199,4,200,4,201,4,202,4,203,4,204,4,205,4,206,4,207,4,208,4,209,4,210,4,211,4,212,4,213,4,214,4,215,4,216,4,217,4,218,4,219,4,220,4,221,4,222,4,223,4,224,4,225,4,226,4,227,4,228,4,229,4,230,4,231,4,232,4,233,4,234,4,235,4,236,4,237,4,238,4,239,4,240,4,241,4,242,4,243,4,244,4,245,4,246,4,247,4,248,4,249,4,250,4,251,4,252,4,253,4,254,4,255,5,0,5,1,5,2,5,3,5,4,5,5,5,6,5,7,5,8,5,9,5,10,5,11,5,12,5,13,5,14,5,15,5,16,5,17,5,18,5,19,5,20,5,21,5,22,5,23,5,24,5,25,5,26,5,27,5,28,5,29,5,30,5,31,5,32,5,33,5,34,5,35,5,36,5,37,5,38,5,39,5,40,5,41,5,42,5,43,5,44,5,45,5,46,5,47,5,48,5,49,5,50,5,51,5,52,5,53,5,54,5,55,5,56,5,57,5,58,5,59,5,60,5,61,5,62,5,63,5,64,5,65,5,66,5,67,5,68,5,69,5,70,5,71,5,72,5,73,5,74,5,75,5,76,5,77,5,78,5,79,5,80,5,81,5,91,5,92,5,82,5,83,5,84,5,85,5,86,5,87,5,88,5,89,5,90,5,93,5,95,5,94,5,96,5,97,5,98,5,99,5,100,5,101,5,102,5,103,5,104,5,105,5,106,5,108,5,109,5,110,5,111,5,112,5,113,5,114,5,115,5,116,5,117,5,118,5,119,5,120,5,121,5,122,5,123,5,124,5,125,5,126,5,127,5,128,5,129,5,130,5,131,5,132,5,133,5,134,5,135,5,136,5,137,5,138,5,139,5,140,5,141,5,142,5,143,5,144,5,145,5,146,5,147,5,148,5,149,5,150,5,151,5,152,5,153,5,154,5,155,5,156,5,157,5,158,5,159,5,161,5,162,5,163,5,164,5,165,5,166,5,167,5,168,5,169,5,170,5,171,5,172,5,173,5,174,5,175,5,176,5,177,5,178,5,179,5,180,5,181,5,182,5,183,5,184,5,161,5,165,5,167,5,169,5,185,5,175,5,180,5,186,5,184,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,165,5,165,5,165,5,165,5,165,5,165,5,165,5,165,5,167,5,167,5,167,5,167,5,167,5,167,5,167,5,167,5,167,5,167,5,169,5,169,5,169,5,169,5,169,5,169,5,169,5,169,5,169,5,169,5,169,5,169,5,175,5,175,5,175,5,175,5,175,5,175,5,175,5,175,5,177,5,180,5,180,5,180,5,180,5,180,5,180,5,180,5,180,5,184,5,184,5,184,5,184,5,184,5,184,5,184,5,184,5,184,5,184,5,187,5,187,5,187,5,187,5,187,5,187,5,187,5,187,5,187,5,188,5,188,5,188,5,188,5,188,5,188,5,188,5,188,5,188,5,189,5,189,5,189,5,189,5,189,5,189,5,189,5,189,5,189,5,190,5,191,5,192,5,193,5,194,5,195,5,196,5,197,5,198,5,199,5,200,5,201,5,202,5,203,5,204,5,205,5,206,5,207,5,208,5,209,5,210,5,211,5,212,5,213,5,214,5,215,5,216,5,217,5,218,5,219,5,220,5,221,5,222,5,223,5,224,5,225,5,226,5,227,5,228,5,229,5,231,5,232,5,233,5,234,5,235,5,236,5,237,5,238,5,239,5,240,5,241,5,242,5,243,5,244,5,245,5,246,5,247,5,248,5,249,5,250,5,251,5,252,5,253,5,254,5,255,6,0,6,1,6,2,6,3,6,4,6,5,6,6,6,7,6,8,6,9,0,1,18,254,1,202,0,2,19,2,0,20,6,10,6,21,6,22,6,23,4,127,6,25,6,26,6,27,6,28,6,29,6,30,6,31,6,32,6,33,6,34,6,35,6,36,6,37,6,38,6,39,0,2,18,246,0,221,4,195,4,196,4,197,4,198,4,199,4,200,4,201,4,202,4,203,4,204,4,205,4,206,4,207,4,208,4,209,4,210,4,211,4,212,4,213,4,214,4,215,4,216,4,217,4,218,4,219,4,220,4,221,4,222,4,223,4,224,4,225,4,226,4,227,4,228,4,229,4,230,4,231,4,232,4,233,4,234,4,235,4,236,4,237,4,238,4,239,4,240,4,241,4,242,4,243,4,244,4,245,4,246,4,247,4,248,4,249,4,250,4,251,4,252,4,253,4,254,4,255,5,0,5,1,5,2,5,3,5,4,5,5,5,6,5,7,5,8,5,9,5,10,5,11,5,12,5,13,5,14,5,15,5,16,5,17,5,18,5,19,5,20,5,21,5,22,5,23,5,24,5,25,5,26,5,28,5,29,5,30,5,31,5,32,5,33,5,34,5,35,5,36,5,37,5,39,5,40,5,41,5,42,5,42,5,43,5,44,5,45,5,46,5,47,5,48,5,49,5,51,5,50,5,52,5,53,5,54,5,55,5,56,5,57,5,58,5,59,5,60,5,61,5,62,5,63,5,64,5,65,5,66,5,67,5,68,5,69,5,70,5,71,5,72,5,73,5,74,5,75,5,76,5,77,5,78,5,79,5,80,5,81,5,91,5,92,5,82,5,83,5,84,5,85,5,86,5,87,5,88,5,89,5,90,5,93,5,96,5,95,5,94,5,97,5,98,5,99,5,100,5,101,5,102,5,103,5,104,5,105,5,106,5,108,5,109,5,110,5,111,5,112,5,113,5,114,5,115,5,116,5,117,5,118,5,119,5,120,5,121,5,122,5,123,5,124,5,125,5,126,5,127,5,128,5,129,5,130,5,131,5,132,5,133,5,134,5,135,5,136,5,137,5,138,5,139,5,140,5,141,5,142,5,143,5,144,5,145,5,146,5,147,5,148,5,149,5,150,5,151,5,152,5,153,5,154,5,155,5,156,5,158,5,159,5,157,5,27,5,38,0,2,17,124,0,76,5,190,5,191,5,192,5,193,5,194,5,195,5,196,5,197,5,198,5,199,5,200,5,201,5,202,5,203,5,204,5,205,5,206,5,207,5,208,5,209,5,210,5,211,5,212,5,213,5,214,5,215,5,216,5,217,5,218,5,219,5,220,5,221,5,222,5,223,5,224,5,225,5,226,5,227,5,228,5,229,5,231,5,232,5,233,5,234,5,235,5,236,5,237,5,238,5,239,5,240,5,241,5,242,5,243,5,244,5,245,5,246,5,247,5,248,5,249,5,250,5,251,5,252,5,253,5,254,6,0,5,255,6,1,6,2,6,3,6,4,6,5,6,6,6,7,6,8,6,9,5,191,0,2,17,24,0,14,6,82,6,83,6,84,6,85,6,86,6,87,6,88,6,89,6,90,6,91,6,94,6,95,6,92,6,93,0,2,16,246,0,14,6,68,6,69,6,70,6,71,6,72,6,73,6,74,6,75,6,76,6,77,6,80,6,81,6,78,6,79,0,1,16,234,2,33,0,3,0,1,16,234,0,1,16,244,0,0,0,1,0,0,0,49,0,3,0,1,16,234,0,1,16,250,0,0,0,1,0,0,0,49,0,3,0,2,16,252,16,242,0,1,16,232,0,0,0,1,0,0,0,49,0,2,16,240,0,29,6,125,6,126,6,127,6,128,6,129,6,130,6,131,6,132,6,133,6,134,6,135,6,136,6,137,6,138,6,139,6,140,6,141,6,142,6,143,6,144,6,145,6,146,6,147,6,148,6,149,6,150,6,156,6,157,6,158,0,1,16,198,6,95,0,2,16,80,0,14,6,40,6,41,6,42,6,43,6,44,6,45,6,46,6,47,6,48,6,49,6,52,6,53,6,50,6,51,0,2,16,168,0,4,6,162,6,163,6,164,6,165,0,2,16,32,0,14,6,54,6,55,6,56,6,57,6,58,6,59,6,60,6,61,6,62,6,63,6,66,6,67,6,64,6,65,0,2,16,132,0,20,4,77,4,78,4,79,4,80,4,81,4,82,4,83,4,84,4,85,4,86,4,99,4,100,4,101,4,102,4,103,4,104,4,105,4,106,4,107,4,108,0,2,16,102,0,20,4,89,4,90,4,91,4,92,4,93,4,94,4,95,4,96,4,97,4,98,4,99,4,100,4,101,4,102,4,103,4,104,4,105,4,106,4,107,4,108,0,0,1,0,0,1,16,68,0,11,0,1,16,62,0,10,0,2,16,64,0,50,3,105,4,65,4,66,4,67,4,68,4,69,4,70,4,71,4,72,4,73,4,74,4,77,4,78,4,79,4,80,4,81,4,82,4,83,4,84,4,85,4,86,4,192,7,34,7,37,7,40,7,42,7,44,7,49,7,52,7,54,7,56,7,58,7,60,7,62,7,65,7,87,7,89,7,108,7,111,7,115,7,117,7,119,7,121,7,123,7,125,7,127,7,129,7,131,7,133,7,135,0,0,1,1,0,2,16,58,0,11,2,55,2,56,2,57,2,58,2,59,2,60,2,61,2,62,2,63,6,161,2,64,0,1,16,56,0,7,0,1,16,56,254,3,0,0,1,2,0,2,16,52,0,25,2,23,2,24,2,25,2,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,2,36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,2,45,6,97,6,159,0,1,16,24,0,24,0,0,1,3,0,2,16,20,0,10,2,46,2,47,2,48,2,49,2,50,2,51,2,52,2,53,2,54,6,160,0,1,16,16,0,19,0,0,1,4,0,2,16,12,0,13,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,0,2,15,252,0,3,2,9,2,21,2,15,0,1,15,250,0,11,0,28,0,34,0,40,0,46,0,52,0,58,0,64,0,70,0,76,0,82,0,88,0,2,3,109,2,9,0,2,3,128,2,9,0,2,3,129,2,9,0,2,3,130,2,9,0,2,3,109,2,9,0,2,3,132,2,9,0,2,3,133,2,9,0,2,3,134,2,9,0,2,3,135,2,9,0,2,3,136,2,9,0,2,3,137,2,9,0,1,15,172,0,1,0,1,15,174,0,1,0,8,0,3,0,8,0,16,0,22,2,8,0,3,0,35,0,49,2,4,0,2,0,35,2,7,0,2,0,49,0,2,15,144,2,172,4,221,4,222,4,223,4,224,4,225,4,226,4,227,4,228,4,229,4,230,4,231,4,232,4,233,4,234,4,235,4,236,4,237,4,238,4,239,4,240,4,241,4,242,4,243,4,244,4,245,4,246,4,247,4,248,4,249,4,250,4,251,4,252,4,253,4,254,4,255,5,0,5,1,5,2,5,3,5,4,5,5,5,6,5,7,5,8,5,9,5,10,5,11,5,12,5,13,5,14,5,15,5,16,5,17,5,18,5,19,5,20,5,21,5,22,5,23,5,24,5,25,5,26,5,27,5,28,5,29,5,30,5,31,5,44,5,45,5,46,5,47,5,48,5,49,5,50,5,51,5,52,5,53,5,54,5,55,5,56,5,57,5,58,5,59,5,60,5,61,5,62,5,63,5,64,5,65,5,66,5,67,5,68,5,69,5,70,5,71,5,72,5,73,5,74,5,75,5,76,5,77,5,78,5,79,5,80,5,81,5,91,5,92,5,82,5,83,5,84,5,85,5,86,5,87,5,88,5,89,5,90,5,93,5,95,5,94,5,96,5,97,5,98,5,99,5,100,5,101,5,102,5,103,5,104,5,105,5,106,5,108,5,109,5,110,5,111,5,112,5,113,5,114,5,115,5,116,5,117,5,118,5,119,5,120,5,121,5,122,5,123,5,124,5,125,5,126,5,127,5,128,5,129,5,130,5,131,5,132,5,133,5,134,5,135,5,136,5,137,5,138,5,139,5,140,5,141,5,142,5,143,5,144,5,145,5,146,5,147,5,148,5,149,5,150,5,151,5,152,5,153,5,154,5,155,5,156,5,157,5,159,4,243,4,244,4,245,4,246,4,247,4,248,4,249,4,250,4,251,4,252,4,253,4,254,4,255,5,0,5,3,5,4,5,5,5,6,5,7,5,8,5,9,5,10,5,11,5,12,5,13,5,14,5,15,5,16,5,17,5,18,5,28,5,29,5,30,5,31,5,32,5,33,5,34,5,35,5,36,5,37,5,39,5,40,5,41,5,42,5,42,5,43,5,44,5,45,5,46,5,47,5,56,5,57,5,58,5,59,5,60,5,61,5,62,5,63,5,64,5,65,5,66,5,67,5,68,5,69,5,70,5,71,5,72,5,73,5,74,5,75,5,76,5,77,5,78,5,79,5,80,5,81,5,91,5,92,5,82,5,83,5,84,5,85,5,86,5,87,5,88,5,89,5,90,5,93,5,96,5,95,5,94,5,97,5,98,5,99,5,100,5,101,5,102,5,103,5,104,5,105,5,106,5,108,5,109,5,110,5,111,5,112,5,113,5,114,5,115,5,116,5,117,5,118,5,119,5,120,5,121,5,122,5,123,5,124,5,125,5,126,5,127,5,128,5,129,5,130,5,131,5,132,5,133,5,134,5,135,5,136,5,137,5,138,5,139,5,140,5,141,5,142,5,143,5,144,5,145,5,146,5,147,5,148,5,149,5,150,5,151,5,152,5,153,5,154,5,155,5,156,5,158,5,159,5,27,5,161,5,162,5,163,5,164,5,165,5,166,5,167,5,168,5,170,5,171,5,172,5,173,5,174,5,175,5,176,5,177,5,178,5,179,5,180,5,181,5,182,5,183,5,184,5,161,5,165,5,167,5,169,5,185,5,175,5,180,5,186,5,184,2,123,2,124,2,125,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,161,5,165,5,165,5,165,5,165,5,165,5,165,5,165,5,165,5,167,5,167,5,167,5,167,5,167,5,167,5,167,5,167,5,167,5,167,5,169,5,169,5,169,5,169,5,169,5,169,5,169,5,169,5,169,5,169,5,175,5,175,5,175,5,175,5,175,5,175,5,175,5,175,5,177,5,180,5,180,5,180,5,180,5,180,5,180,5,180,5,180,5,184,5,184,5,184,5,184,5,184,5,184,5,184,5,184,5,184,5,184,5,187,5,187,5,187,5,187,5,187,5,187,5,187,5,187,5,187,5,188,5,188,5,188,5,188,5,188,5,188,5,188,5,188,5,188,5,189,5,189,5,189,5,189,5,189,5,189,5,189,5,189,5,189,3,105,5,190,5,191,5,192,5,193,5,194,5,195,5,196,5,197,5,198,5,199,5,200,5,201,5,202,5,203,5,204,5,205,5,206,5,207,5,208,5,209,5,210,5,211,5,212,5,213,5,214,5,215,5,216,5,217,5,218,5,219,5,220,5,221,5,222,5,223,5,224,5,225,5,226,5,227,5,228,5,229,5,231,5,232,5,233,5,234,5,235,5,236,5,237,5,238,5,239,5,240,5,241,5,242,5,243,5,244,5,245,5,246,5,247,5,248,5,249,5,250,5,251,5,252,5,253,5,254,5,255,6,0,6,1,6,2,6,3,6,4,6,5,6,6,6,7,6,8,6,9,5,190,5,192,5,193,5,194,5,195,5,196,5,197,5,198,5,199,5,200,5,201,5,202,5,203,5,204,5,205,5,206,5,207,5,208,5,209,5,210,5,211,5,212,5,213,5,214,5,215,5,216,5,217,5,218,5,219,5,220,5,221,5,222,5,223,5,224,5,225,5,226,5,227,5,228,5,229,5,231,5,232,5,233,5,234,5,235,5,236,5,237,5,238,5,239,5,240,5,241,5,242,5,243,5,244,5,245,5,246,5,247,5,248,5,249,5,250,5,251,5,252,5,253,5,254,6,0,6,1,6,2,6,3,6,4,6,5,6,6,6,7,6,8,6,9,5,191,6,10,4,76,4,100,4,101,4,102,4,103,4,104,4,105,4,106,4,107,4,108,4,88,4,78,4,79,4,80,4,81,4,82,4,83,4,84,4,85,4,86,6,162,6,21,6,22,6,23,4,127,6,25,6,26,6,27,6,28,6,29,6,30,6,36,6,37,6,38,6,39,4,192,5,38,6,97,6,159,6,160,6,161,7,40,7,42,7,44,7,50,7,52,7,54,7,56,7,58,7,60,7,62,7,65,7,69,7,71,7,87,7,89,7,108,7,111,7,115,7,117,7,119,7,121,7,123,7,125,7,127,7,129,7,131,7,133,7,135,2,64,0,1,12,28,0,143,1,36,1,42,1,48,1,54,1,60,1,66,1,72,1,78,1,84,1,92,1,98,1,104,1,110,1,116,1,122,1,128,1,134,1,140,1,146,1,152,1,158,1,164,1,170,1,176,1,182,1,188,1,194,1,202,1,208,1,214,1,220,1,226,1,232,1,240,1,246,1,254,2,4,2,10,2,18,2,24,2,30,2,36,2,42,2,48,2,54,2,60,2,66,2,72,2,78,2,84,2,90,2,96,2,102,2,108,2,114,2,120,2,126,2,132,2,138,2,144,2,150,2,156,2,162,2,168,2,174,2,180,2,186,2,192,2,198,2,204,2,210,2,216,2,222,2,228,2,234,2,240,2,246,2,252,3,2,3,8,3,14,3,20,3,26,3,32,3,38,3,44,3,50,3,56,3,62,3,68,3,74,3,80,3,86,3,92,3,98,3,104,3,110,3,116,3,122,3,128,3,134,3,140,3,146,3,152,3,158,3,164,3,170,3,176,3,182,3,188,3,194,3,200,3,220,3,236,3,252,4,12,4,28,4,44,4,60,4,76,4,92,4,108,4,116,4,122,4,128,4,134,4,140,4,146,4,152,4,158,4,164,4,170,4,176,4,180,4,190,4,200,4,206,4,212,4,218,4,230,4,242,4,248,4,254,0,2,4,195,6,99,0,2,4,196,6,100,0,2,4,197,6,101,0,2,4,198,6,102,0,2,4,199,6,103,0,2,4,200,6,104,0,2,4,201,6,105,0,2,4,202,6,106,0,3,4,203,6,107,2,9,0,2,4,204,6,108,0,2,4,205,6,109,0,2,4,206,6,110,0,2,4,207,6,111,0,2,4,208,6,112,0,2,4,209,6,113,0,2,4,210,6,114,0,2,4,211,6,115,0,2,4,212,6,116,0,2,4,213,6,117,0,2,4,214,6,118,0,2,4,215,6,119,0,2,4,216,6,120,0,2,4,217,6,121,0,2,4,218,6,122,0,2,4,219,6,123,0,2,4,220,6,124,0,3,4,195,6,125,2,23,0,2,4,196,6,126,0,2,4,197,6,127,0,2,4,198,6,128,0,2,4,199,6,129,0,2,4,200,6,130,0,3,4,201,6,131,2,46,0,2,4,202,6,132,0,3,4,194,4,203,6,133,0,2,4,204,6,134,0,2,4,205,6,135,0,3,4,206,6,136,2,55,0,2,4,207,6,137,0,2,4,208,6,138,0,2,4,209,6,139,0,2,4,210,6,140,0,2,4,211,6,141,0,2,4,212,6,142,0,2,4,213,6,143,0,2,4,214,6,144,0,2,4,215,6,145,0,2,4,216,6,146,0,2,4,217,6,147,0,2,4,218,6,148,0,2,4,219,6,149,0,2,4,220,6,150,0,2,5,32,2,10,0,2,5,33,2,11,0,2,5,34,2,12,0,2,5,35,2,13,0,2,5,36,2,14,0,2,5,37,2,15,0,2,5,38,2,16,0,2,5,39,2,17,0,2,5,40,2,18,0,2,5,41,2,19,0,2,5,42,2,20,0,2,5,43,2,21,0,2,2,22,5,158,0,2,4,221,2,24,0,2,4,222,2,25,0,2,4,223,2,26,0,2,4,224,2,27,0,2,4,225,2,28,0,2,4,226,2,29,0,2,4,227,2,30,0,2,4,228,2,31,0,2,4,229,2,32,0,2,4,230,2,33,0,2,4,231,2,34,0,2,4,232,2,35,0,2,4,233,2,36,0,2,4,234,2,37,0,2,4,235,2,38,0,2,4,236,2,39,0,2,4,237,2,40,0,2,4,238,2,41,0,2,4,239,2,42,0,2,4,240,2,43,0,2,4,241,2,44,0,2,4,242,2,45,0,2,5,1,6,156,0,2,5,2,6,157,0,2,5,19,2,47,0,2,5,20,2,48,0,2,5,21,2,49,0,2,5,22,2,50,0,2,5,23,2,51,0,2,5,24,2,52,0,2,5,25,2,53,0,2,5,26,2,54,0,2,5,48,2,56,0,2,5,49,2,57,0,2,5,51,2,58,0,2,5,50,2,59,0,2,5,52,2,60,0,2,5,53,2,61,0,2,5,54,2,62,0,2,5,55,2,63,0,2,5,157,6,158,0,2,5,169,2,9,0,2,5,169,2,21,0,2,5,169,2,15,0,2,4,62,5,191,0,2,5,255,2,55,0,9,6,11,6,82,6,68,6,40,6,54,4,77,4,89,4,76,4,75,0,7,6,12,6,83,6,69,6,41,6,55,4,78,4,90,0,7,6,13,6,84,6,70,6,42,6,56,4,79,4,91,0,7,6,14,6,85,6,71,6,43,6,57,4,80,4,92,0,7,6,15,6,86,6,72,6,44,6,58,4,81,4,93,0,7,6,16,6,87,6,73,6,45,6,59,4,82,4,94,0,7,6,17,6,88,6,74,6,46,6,60,4,83,4,95,0,7,6,18,6,89,6,75,6,47,6,61,4,84,4,96,0,7,6,19,6,90,6,76,6,48,6,62,4,85,4,97,0,7,6,20,6,91,6,77,6,49,6,63,4,86,4,98,0,3,4,99,4,88,4,87,0,2,4,99,4,65,0,2,4,100,4,66,0,2,4,101,4,67,0,2,4,102,4,68,0,2,4,103,4,69,0,2,4,104,4,70,0,2,4,105,4,71,0,2,4,106,4,72,0,2,4,107,4,73,0,2,4,108,4,74,0,1,4,77,0,4,6,94,6,80,6,52,6,66,0,4,6,95,6,81,6,53,6,67,0,2,6,31,6,163,0,2,6,32,6,164,0,2,6,33,6,165,0,5,6,34,6,92,6,78,6,50,6,64,0,5,6,35,6,93,6,79,6,51,6,65,0,2,7,35,7,34,0,2,7,38,7,37,0,2,7,48,7,49,0,1,0,120,0,1,0,8,0,1,0,4,1,71,0,2,7,88,0,2,7,142,0,48,7,146,1,71,3,182,4,16,5,230,6,68,6,69,6,70,6,71,6,72,6,73,6,74,6,75,6,76,6,77,6,78,6,79,6,80,6,81,7,34,7,37,7,40,7,42,7,44,7,49,7,52,7,54,7,56,7,58,7,60,7,62,7,65,7,87,7,89,7,108,7,111,7,115,7,117,7,119,7,121,7,123,7,125,7,127,7,129,7,131,7,133,7,135,7,147,0,1,0,1,0,38,0,1,0,1,0,248,0,1,0,4,7,33,7,36,7,68,7,70,0,1,0,2,7,47,7,49,0,1,0,1,3,229,0,1,0,10,0,94,0,97,0,160,0,163,1,32,1,35,1,101,1,104,3,181,4,15,0,1,0,4,0,94,0,160,1,32,1,101,0,1,0,1,7,47,0,1,0,4,0,97,0,163,1,35,1,104,0,1,0,1,7,36,0,1,0,2,3,181,4,15,0,1,0,1,7,88,0,1,0,1,1,70,0,1,0,5,7,39,7,47,7,53,7,69,7,71,0,1,0,16,0,4,0,8,0,10,0,12,0,18,0,24,0,30,0,33,0,34,0,36,0,38,0,41,0,44,0,49,0,50,2,46,0,1,0,22,2,65,2,69,2,71,2,73,2,79,2,81,2,84,2,88,2,98,2,102,2,104,2,106,2,112,2,114,2,117,2,121,2,206,2,215,2,224,3,62,3,74,3,86,0,2,0,19,0,4,0,29,0,0,0,56,0,197,0,26,0,199,0,249,0,168,2,65,2,97,0,219,2,137,2,232,0,252,3,138,3,144,1,92,3,147,3,150,1,99,3,153,3,181,1,103,3,183,3,187,1,132,3,190,3,198,1,137,3,201,3,202,1,146,3,205,3,205,1,148,3,208,3,216,1,149,3,219,3,227,1,158,4,195,5,106,1,167,5,109,5,159,2,79,5,161,5,186,2,130,5,190,5,229,2,156,5,231,6,9,2,196,0,1,0,28,7,33,7,36,7,39,7,41,7,43,7,47,7,51,7,53,7,55,7,57,7,59,7,61,7,64,7,86,7,88,7,107,7,110,7,114,7,116,7,118,7,120,7,122,7,124,7,126,7,128,7,130,7,132,7,134,0,1,0,28,7,34,7,37,7,40,7,42,7,44,7,49,7,52,7,54,7,56,7,58,7,60,7,62,7,65,7,87,7,89,7,108,7,111,7,115,7,117,7,119,7,121,7,123,7,125,7,127,7,129,7,131,7,133,7,135,0,1,0,1,4,15,0,1,0,1,3,181,0,1,0,1,5,229,0,1,0,2,4,14,4,16,0,1,0,1,3,182,0,1,0,1,5,230,0,2,0,2,2,98,2,122,0,0,2,126,2,136,0,25,0,2,0,1,2,233,3,97,0,0,0,2,0,13,0,4,0,29,0,0,0,56,0,249,0,26,2,65,2,97,0,220,2,137,2,232,0,253,3,138,3,144,1,93,3,147,3,150,1,100,3,153,3,181,1,104,3,183,3,187,1,133,3,190,3,198,1,138,3,201,3,202,1,147,3,205,3,205,1,149,3,208,3,216,1,150,3,219,3,227,1,159,0,2,0,1,4,65,4,74,0,0,0,2,0,5,4,64,4,64,0,0,4,124,4,133,0,1,4,140,4,140,0,11,4,142,4,143,0,12,4,153,4,158,0,14,0,2,0,11,0,30,0,55,0,0,0,250,1,57,0,26,1,59,1,72,0,90,1,74,1,77,0,104,1,79,1,97,0,108,1,99,1,144,0,127,1,146,1,189,0,173,1,191,1,191,0,217,1,202,1,202,0,218,1,208,1,208,0,219,4,194,4,194,0,220,0,2,0,9,3,228,3,234,0,0,3,237,3,240,0,7,3,243,4,15,0,11,4,17,4,21,0,40,4,24,4,32,0,45,4,35,4,36,0,54,4,39,4,39,0,56,4,42,4,49,0,57,4,52,4,62,0,65,0,2,0,3,4,65,4,74,0,0,4,119,4,120,0,10,4,153,4,154,0,12,0,1,0,1,4,159,0,2,0,1,6,82,6,91,0,0,0,1,0,2,0,3,7,144,0,2,0,2,6,68,6,81,0,0,6,190,6,192,0,14,0,2,0,1,6,82,6,95,0,0,0,2,0,1,6,68,6,77,0,0,0,1,0,2,7,146,7,147,0,2,0,3,0,30,0,55,0,0,1,30,1,31,0,26,1,202,1,202,0,28,0,2,0,1,0,4,0,29,0,0,0,1,0,4,4,121,4,140,4,142,4,143,0,2,0,2,4,65,4,74,0,0,4,89,4,98,0,10,0,2,0,2,4,65,4,74,0,0,4,77,4,86,0,10,0,1,0,2,4,65,4,77,0,1,0,50,3,104,4,89,4,90,4,91,4,92,4,93,4,94,4,95,4,96,4,97,4,98,4,99,4,100,4,101,4,102,4,103,4,104,4,105,4,106,4,107,4,108,4,191,7,33,7,36,7,39,7,41,7,43,7,47,7,51,7,53,7,55,7,57,7,59,7,61,7,64,7,86,7,88,7,107,7,110,7,114,7,116,7,118,7,120,7,122,7,124,7,126,7,128,7,130,7,132,7,134,0,1,0,11,0,41,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86,6,136,7,151,0,1,0,1,2,118,0,1,0,1,4,52,0,2,0,4,0,30,0,30,0,0,0,250,1,15,0,1,6,96,6,96,0,23,6,125,6,125,0,24,0,1,0,1,2,99,0,2,0,3,0,36,0,36,0,0,1,48,1,55,0,1,6,131,6,131,0,9,0,1,0,1,2,105,0,2,0,2,0,12,0,12,0,0,0,123,0,134,0,1,0,1,0,3,2,73,2,177,2,178,0,2,0,2,2,92,2,92,0,0,2,167,2,176,0,1,0,1,0,2,4,75,4,87,0,1,0,1,0,35,0,2,0,81,0,56,0,122,0,0,0,135,0,247,0,67,0,249,0,249,0,180,1,16,1,29,0,181,1,32,1,47,0,195,1,56,1,57,0,211,1,59,1,72,0,213,1,74,1,77,0,227,1,87,1,97,0,231,1,99,1,144,0,242,1,146,1,189,1,32,1,191,1,191,1,76,1,208,1,208,1,77,2,65,2,72,1,78,2,74,2,97,1,86,2,99,2,99,1,110,2,105,2,105,1,111,2,118,2,118,1,112,2,137,2,176,1,113,2,179,2,232,1,153,3,104,3,104,1,207,3,138,3,144,1,208,3,147,3,150,1,215,3,153,3,181,1,219,3,183,3,187,1,248,3,190,3,198,1,253,3,201,3,202,2,6,3,205,3,205,2,8,3,208,3,216,2,9,3,219,3,228,2,18,3,230,3,234,2,28,3,237,3,240,2,33,3,243,4,15,2,37,4,17,4,21,2,66,4,24,4,32,2,71,4,35,4,36,2,80,4,39,4,39,2,82,4,42,4,49,2,83,4,53,4,62,2,91,4,64,4,64,2,101,4,75,4,75,2,102,4,78,4,87,2,103,4,100,4,108,2,113,4,121,4,121,2,122,4,124,4,133,2,123,4,155,4,158,2,133,4,191,4,191,2,137,4,194,4,194,2,138,6,96,6,96,2,139,6,125,6,125,2,140,6,131,6,131,2,141,6,136,6,136,2,142,7,39,7,39,2,143,7,41,7,41,2,144,7,43,7,43,2,145,7,49,7,49,2,146,7,51,7,51,2,147,7,53,7,53,2,148,7,55,7,55,2,149,7,57,7,57,2,150,7,59,7,59,2,151,7,61,7,61,2,152,7,64,7,64,2,153,7,68,7,68,2,154,7,70,7,70,2,155,7,86,7,86,2,156,7,88,7,88,2,157,7,107,7,107,2,158,7,110,7,110,2,159,7,114,7,114,2,160,7,116,7,116,2,161,7,118,7,118,2,162,7,120,7,120,2,163,7,122,7,122,2,164,7,124,7,124,2,165,7,126,7,126,2,166,7,128,7,128,2,167,7,130,7,130,2,168,7,132,7,132,2,169,7,134,7,134,2,170,7,151,7,151,2,171,0,2,0,22,0,4,0,55,0,0,0,123,0,134,0,52,0,248,0,248,0,64,0,250,1,15,0,65,1,30,1,31,0,87,1,48,1,55,0,89,1,79,1,86,0,97,1,202,1,202,0,105,2,73,2,73,0,106,2,177,2,178,0,107,3,229,3,229,0,109,4,52,4,52,0,110,4,65,4,74,0,111,4,77,4,77,0,121,4,89,4,99,0,122,4,119,4,120,0,133,4,140,4,140,0,135,4,142,4,143]);fileData0.push.apply(fileData0,[0,136,4,153,4,154,0,138,7,33,7,33,0,140,7,36,7,36,0,141,7,47,7,47,0,142,0,1,0,48,0,3,1,70,3,181,4,15,5,229,6,82,6,83,6,84,6,85,6,86,6,87,6,88,6,89,6,90,6,91,6,92,6,93,6,94,6,95,7,33,7,36,7,39,7,41,7,43,7,47,7,51,7,53,7,55,7,57,7,59,7,61,7,64,7,86,7,88,7,107,7,110,7,114,7,116,7,118,7,120,7,122,7,124,7,126,7,128,7,130,7,132,7,134,7,144,0,0,0,1,0,0,0,8,0,0,0,4,0,14,0,2,105,100,101,111,114,111,109,110,0,2,68,70,76,84,0,14,108,97,116,110,0,14,0,6,0,0,0,0,0,1,0,2,0,8,0,12,0,1,255,86,0,1,0,0,0,0,0,0,0,1,0,1,0,1,0,0,0,1,0,0,24,231,0,0,0,20,0,0,0,0,0,0,24,223,48,130,24,219,6,9,42,134,72,134,247,13,1,7,2,160,130,24,204,48,130,24,200,2,1,1,49,11,48,9,6,5,43,14,3,2,26,5,0,48,97,6,10,43,6,1,4,1,130,55,2,1,4,160,83,48,81,48,44,6,10,43,6,1,4,1,130,55,2,1,28,162,30,128,28,0,60,0,60,0,60,0,79,0,98,0,115,0,111,0,108,0,101,0,116,0,101,0,62,0,62,0,62,48,33,48,9,6,5,43,14,3,2,26,5,0,4,20,140,205,119,237,236,165,170,0,143,44,73,138,236,57,191,122,219,43,41,255,160,130,19,148,48,130,3,238,48,130,3,87,160,3,2,1,2,2,16,126,147,235,251,124,198,78,89,234,75,154,119,212,6,252,59,48,13,6,9,42,134,72,134,247,13,1,1,5,5,0,48,129,139,49,11,48,9,6,3,85,4,6,19,2,90,65,49,21,48,19,6,3,85,4,8,19,12,87,101,115,116,101,114,110,32,67,97,112,101,49,20,48,18,6,3,85,4,7,19,11,68,117,114,98,97,110,118,105,108,108,101,49,15,48,13,6,3,85,4,10,19,6,84,104,97,119,116,101,49,29,48,27,6,3,85,4,11,19,20,84,104,97,119,116,101,32,67,101,114,116,105,102,105,99,97,116,105,111,110,49,31,48,29,6,3,85,4,3,19,22,84,104,97,119,116,101,32,84,105,109,101,115,116,97,109,112,105,110,103,32,67,65,48,30,23,13,49,50,49,50,50,49,48,48,48,48,48,48,90,23,13,50,48,49,50,51,48,50,51,53,57,53,57,90,48,94,49,11,48,9,6,3,85,4,6,19,2,85,83,49,29,48,27,6,3,85,4,10,19,20,83,121,109,97,110,116,101,99,32,67,111,114,112,111,114,97,116,105,111,110,49,48,48,46,6,3,85,4,3,19,39,83,121,109,97,110,116,101,99,32,84,105,109,101,32,83,116,97,109,112,105,110,103,32,83,101,114,118,105,99,101,115,32,67,65,32,45,32,71,50,48,130,1,34,48,13,6,9,42,134,72,134,247,13,1,1,1,5,0,3,130,1,15,0,48,130,1,10,2,130,1,1,0,177,172,179,73,84,75,151,28,18,10,216,37,121,145,34,87,42,111,220,184,38,196,67,115,107,194,191,46,80,90,251,20,194,118,142,67,1,37,67,180,161,226,69,244,232,183,123,195,116,204,34,215,180,148,0,2,247,77,237,191,180,183,68,36,107,205,95,69,59,209,68,206,67,18,115,23,130,139,105,180,43,203,153,30,172,114,27,38,77,113,31,177,49,221,251,81,97,2,83,166,170,245,73,44,5,120,69,165,47,137,206,231,153,231,254,140,226,87,63,61,198,146,220,74,248,123,51,228,121,10,251,240,117,136,65,156,255,197,3,81,153,170,215,108,159,147,105,135,101,41,131,133,194,96,20,196,200,201,59,20,218,192,129,240,31,13,116,222,146,34,171,202,247,251,116,124,39,230,247,74,27,127,167,195,158,45,174,138,234,166,230,170,39,22,125,97,247,152,113,17,188,226,80,161,75,229,93,250,229,14,167,44,159,170,101,32,211,216,150,232,200,124,165,78,72,68,255,25,226,68,7,146,11,215,104,132,128,93,106,120,100,69,205,96,70,126,84,193,19,124,197,121,241,201,193,113,2,3,1,0,1,163,129,250,48,129,247,48,29,6,3,85,29,14,4,22,4,20,95,154,245,110,92,204,204,116,154,212,221,125,239,63,219,236,76,128,46,221,48,50,6,8,43,6,1,5,5,7,1,1,4,38,48,36,48,34,6,8,43,6,1,5,5,7,48,1,134,22,104,116,116,112,58,47,47,111,99,115,112,46,116,104,97,119,116,101,46,99,111,109,48,18,6,3,85,29,19,1,1,255,4,8,48,6,1,1,255,2,1,0,48,63,6,3,85,29,31,4,56,48,54,48,52,160,50,160,48,134,46,104,116,116,112,58,47,47,99,114,108,46,116,104,97,119,116,101,46,99,111,109,47,84,104,97,119,116,101,84,105,109,101,115,116,97,109,112,105,110,103,67,65,46,99,114,108,48,19,6,3,85,29,37,4,12,48,10,6,8,43,6,1,5,5,7,3,8,48,14,6,3,85,29,15,1,1,255,4,4,3,2,1,6,48,40,6,3,85,29,17,4,33,48,31,164,29,48,27,49,25,48,23,6,3,85,4,3,19,16,84,105,109,101,83,116,97,109,112,45,50,48,52,56,45,49,48,13,6,9,42,134,72,134,247,13,1,1,5,5,0,3,129,129,0,3,9,155,143,121,239,127,89,48,170,239,104,181,250,227,9,29,187,79,130,6,93,55,95,166,82,159,22,141,234,28,146,9,68,110,245,109,235,88,124,48,232,249,105,141,35,115,11,18,111,71,169,174,57,17,248,42,177,155,176,26,195,142,235,89,150,0,173,206,12,77,178,208,49,166,8,92,42,122,252,226,122,29,87,76,168,101,24,233,121,64,98,37,150,110,199,199,55,106,131,33,8,142,65,234,221,217,87,63,29,119,73,135,42,22,6,94,166,56,106,34,18,163,81,25,131,126,182,48,130,4,163,48,130,3,139,160,3,2,1,2,2,16,14,207,244,56,200,254,191,53,110,4,216,106,152,27,26,80,48,13,6,9,42,134,72,134,247,13,1,1,5,5,0,48,94,49,11,48,9,6,3,85,4,6,19,2,85,83,49,29,48,27,6,3,85,4,10,19,20,83,121,109,97,110,116,101,99,32,67,111,114,112,111,114,97,116,105,111,110,49,48,48,46,6,3,85,4,3,19,39,83,121,109,97,110,116,101,99,32,84,105,109,101,32,83,116,97,109,112,105,110,103,32,83,101,114,118,105,99,101,115,32,67,65,32,45,32,71,50,48,30,23,13,49,50,49,48,49,56,48,48,48,48,48,48,90,23,13,50,48,49,50,50,57,50,51,53,57,53,57,90,48,98,49,11,48,9,6,3,85,4,6,19,2,85,83,49,29,48,27,6,3,85,4,10,19,20,83,121,109,97,110,116,101,99,32,67,111,114,112,111,114,97,116,105,111,110,49,52,48,50,6,3,85,4,3,19,43,83,121,109,97,110,116,101,99,32,84,105,109,101,32,83,116,97,109,112,105,110,103,32,83,101,114,118,105,99,101,115,32,83,105,103,110,101,114,32,45,32,71,52,48,130,1,34,48,13,6,9,42,134,72,134,247,13,1,1,1,5,0,3,130,1,15,0,48,130,1,10,2,130,1,1,0,162,99,11,57,68,184,187,35,167,68,73,187,14,255,161,240,97,10,83,147,176,152,219,173,44,15,74,197,110,255,134,60,83,85,15,21,206,4,63,43,253,169,150,150,217,190,97,121,11,91,201,76,134,118,229,224,67,75,34,149,238,194,43,67,193,159,216,104,180,142,64,79,238,133,56,185,17,197,35,242,100,88,240,21,50,111,78,87,161,174,136,164,2,215,42,30,205,75,225,221,99,213,23,137,50,91,176,94,153,90,168,157,40,80,14,23,238,150,219,97,59,69,81,29,207,18,86,11,146,71,252,171,174,246,102,61,71,172,112,114,231,146,231,95,205,16,185,196,131,100,148,25,189,37,128,225,232,210,34,165,208,186,2,122,161,119,147,91,101,195,238,23,116,188,65,134,42,220,8,76,140,146,140,145,45,158,119,68,31,104,214,168,116,119,219,14,91,50,139,86,139,51,189,217,99,200,73,157,58,197,197,234,51,11,210,241,163,27,244,139,190,217,179,87,139,59,222,4,167,122,34,178,36,174,46,199,112,197,190,78,131,38,8,251,11,189,169,79,153,8,225,16,40,114,170,205,2,3,1,0,1,163,130,1,87,48,130,1,83,48,12,6,3,85,29,19,1,1,255,4,2,48,0,48,22,6,3,85,29,37,1,1,255,4,12,48,10,6,8,43,6,1,5,5,7,3,8,48,14,6,3,85,29,15,1,1,255,4,4,3,2,7,128,48,115,6,8,43,6,1,5,5,7,1,1,4,103,48,101,48,42,6,8,43,6,1,5,5,7,48,1,134,30,104,116,116,112,58,47,47,116,115,45,111,99,115,112,46,119,115,46,115,121,109,97,110,116,101,99,46,99,111,109,48,55,6,8,43,6,1,5,5,7,48,2,134,43,104,116,116,112,58,47,47,116,115,45,97,105,97,46,119,115,46,115,121,109,97,110,116,101,99,46,99,111,109,47,116,115,115,45,99,97,45,103,50,46,99,101,114,48,60,6,3,85,29,31,4,53,48,51,48,49,160,47,160,45,134,43,104,116,116,112,58,47,47,116,115,45,99,114,108,46,119,115,46,115,121,109,97,110,116,101,99,46,99,111,109,47,116,115,115,45,99,97,45,103,50,46,99,114,108,48,40,6,3,85,29,17,4,33,48,31,164,29,48,27,49,25,48,23,6,3,85,4,3,19,16,84,105,109,101,83,116,97,109,112,45,50,48,52,56,45,50,48,29,6,3,85,29,14,4,22,4,20,70,198,105,163,14,74,20,30,213,76,218,82,99,23,63,94,54,188,13,230,48,31,6,3,85,29,35,4,24,48,22,128,20,95,154,245,110,92,204,204,116,154,212,221,125,239,63,219,236,76,128,46,221,48,13,6,9,42,134,72,134,247,13,1,1,5,5,0,3,130,1,1,0,120,59,180,145,42,0,76,240,143,98,48,55,120,163,132,39,7,111,24,178,222,37,220,160,212,148,3,170,134,78,37,159,154,64,3,28,221,206,227,121,203,33,104,6,218,182,50,180,109,191,244,44,38,99,51,228,73,100,109,13,230,195,103,14,247,5,164,53,108,124,137,22,198,233,178,223,178,233,221,32,198,113,15,205,149,116,220,182,92,222,189,55,31,67,120,230,120,181,205,40,4,32,163,170,241,75,196,136,41,145,14,128,209,17,252,221,92,118,110,79,94,14,69,70,65,110,13,176,234,56,154,177,58,218,9,113,16,252,28,121,180,128,123,172,105,244,253,156,182,12,22,43,241,127,91,9,61,155,91,226,22,202,19,129,109,0,46,56,13,168,41,143,44,225,178,244,90,169,1,175,21,156,44,47,73,27,219,34,187,195,254,120,148,81,195,134,177,130,136,93,240,61,180,81,161,121,51,43,46,123,185,220,32,9,19,113,235,106,25,91,207,232,165,48,87,44,137,73,63,185,207,127,201,191,62,34,104,99,83,154,189,105,116,172,197,29,60,127,146,224,195,188,28,216,4,117,48,130,5,106,48,130,4,82,160,3,2,1,2,2,16,108,89,239,169,225,0,225,14,227,6,186,143,224,41,37,89,48,13,6,9,42,134,72,134,247,13,1,1,5,5,0,48,129,202,49,11,48,9,6,3,85,4,6,19,2,85,83,49,23,48,21,6,3,85,4,10,19,14,86,101,114,105,83,105,103,110,44,32,73,110,99,46,49,31,48,29,6,3,85,4,11,19,22,86,101,114,105,83,105,103,110,32,84,114,117,115,116,32,78,101,116,119,111,114,107,49,58,48,56,6,3,85,4,11,19,49,40,99,41,32,50,48,48,54,32,86,101,114,105,83,105,103,110,44,32,73,110,99,46,32,45,32,70,111,114,32,97,117,116,104,111,114,105,122,101,100,32,117,115,101,32,111,110,108,121,49,69,48,67,6,3,85,4,3,19,60,86,101,114,105,83,105,103,110,32,67,108,97,115,115,32,51,32,80,117,98,108,105,99,32,80,114,105,109,97,114,121,32,67,101,114,116,105,102,105,99,97,116,105,111,110,32,65,117,116,104,111,114,105,116,121,32,45,32,71,53,48,30,23,13,49,50,48,54,48,55,48,48,48,48,48,48,90,23,13,50,50,48,54,48,54,50,51,53,57,53,57,90,48,129,140,49,11,48,9,6,3,85,4,6,19,2,85,83,49,29,48,27,6,3,85,4,10,19,20,83,121,109,97,110,116,101,99,32,67,111,114,112,111,114,97,116,105,111,110,49,31,48,29,6,3,85,4,11,19,22,83,121,109,97,110,116,101,99,32,84,114,117,115,116,32,78,101,116,119,111,114,107,49,61,48,59,6,3,85,4,3,19,52,83,121,109,97,110,116,101,99,32,67,108,97,115,115,32,51,32,69,120,116,101,110,100,101,100,32,86,97,108,105,100,97,116,105,111,110,32,67,111,100,101,32,83,105,103,110,105,110,103,32,67,65,48,130,1,34,48,13,6,9,42,134,72,134,247,13,1,1,1,5,0,3,130,1,15,0,48,130,1,10,2,130,1,1,0,139,67,175,161,196,168,77,205,208,238,199,54,192,160,138,121,115,40,216,119,229,192,84,199,53,247,187,237,27,159,234,87,112,211,85,27,39,25,169,203,224,1,5,174,5,242,173,231,6,29,209,6,168,173,135,185,24,132,47,30,29,9,98,211,221,13,245,23,180,48,111,94,82,118,22,140,86,123,197,144,58,130,125,181,173,88,230,0,231,24,5,54,237,48,32,161,240,236,195,98,244,153,16,26,148,246,240,87,104,201,114,54,189,124,144,168,22,22,32,165,73,1,81,50,160,150,243,138,48,56,171,134,161,21,163,242,28,32,87,80,75,184,100,210,177,108,230,228,60,182,8,33,196,75,64,150,23,179,203,103,219,134,65,217,91,254,152,29,68,36,58,232,105,161,26,36,107,179,72,20,243,244,14,131,197,77,49,251,189,175,174,33,60,98,235,234,218,216,157,215,236,145,30,179,195,68,30,84,29,130,155,237,89,19,238,48,112,227,108,148,225,44,7,211,143,140,234,97,201,92,171,75,152,42,135,185,218,62,55,131,10,48,186,181,68,152,253,239,189,170,128,53,177,92,173,247,2,3,1,0,1,163,130,1,134,48,130,1,130,48,52,6,8,43,6,1,5,5,7,1,1,4,40,48,38,48,36,6,8,43,6,1,5,5,7,48,1,134,24,104,116,116,112,58,47,47,111,99,115,112,46,118,101,114,105,115,105,103,110,46,99,111,109,48,18,6,3,85,29,19,1,1,255,4,8,48,6,1,1,255,2,1,0,48,101,6,3,85,29,32,4,94,48,92,48,90,6,4,85,29,32,0,48,82,48,38,6,8,43,6,1,5,5,7,2,1,22,26,104,116,116,112,58,47,47,119,119,119,46,115,121,109,97,117,116,104,46,99,111,109,47,99,112,115,48,40,6,8,43,6,1,5,5,7,2,2,48,28,26,26,104,116,116,112,58,47,47,119,119,119,46,115,121,109,97,117,116,104,46,99,111,109,47,114,112,97,48,52,6,3,85,29,31,4,45,48,43,48,41,160,39,160,37,134,35,104,116,116,112,58,47,47,99,114,108,46,118,101,114,105,115,105,103,110,46,99,111,109,47,112,99,97,51,45,103,53,46,99,114,108,48,29,6,3,85,29,37,4,22,48,20,6,8,43,6,1,5,5,7,3,2,6,8,43,6,1,5,5,7,3,3,48,14,6,3,85,29,15,1,1,255,4,4,3,2,1,6,48,42,6,3,85,29,17,4,35,48,33,164,31,48,29,49,27,48,25,6,3,85,4,3,19,18,86,101,114,105,83,105,103,110,77,80,75,73,45,50,45,50,49,52,48,29,6,3,85,29,14,4,22,4,20,163,142,207,25,66,61,49,225,171,33,137,132,109,203,217,121,162,178,178,90,48,31,6,3,85,29,35,4,24,48,22,128,20,127,211,101,167,194,221,236,187,240,48,9,243,67,57,250,2,175,51,49,51,48,13,6,9,42,134,72,134,247,13,1,1,5,5,0,3,130,1,1,0,106,243,29,188,95,77,222,3,249,73,73,29,173,61,118,28,150,186,27,67,230,244,134,2,66,117,120,199,12,194,229,157,196,52,79,14,169,233,74,180,190,65,132,135,234,244,135,180,76,219,16,73,59,247,223,21,144,186,132,248,183,71,235,91,101,80,243,163,74,113,16,22,123,28,225,245,214,237,191,80,86,111,248,153,179,169,81,182,70,174,198,151,224,231,155,12,21,62,187,40,123,49,163,0,243,46,139,135,72,18,137,130,239,9,95,73,12,144,158,200,246,150,163,123,154,117,19,200,71,240,62,63,111,11,80,41,108,43,120,76,48,252,228,96,12,19,64,214,56,117,169,7,121,100,253,202,60,228,239,72,147,11,224,10,72,255,7,107,59,2,131,209,102,213,185,225,152,244,14,159,105,196,46,85,46,1,150,125,126,132,12,128,118,117,54,203,253,70,97,244,105,204,26,157,100,43,186,4,110,233,17,82,218,18,153,161,90,176,131,196,188,71,128,166,39,77,0,122,54,3,60,190,97,152,99,203,159,5,238,128,133,238,221,149,146,247,238,80,212,99,220,143,164,36,121,191,48,130,5,137,48,130,4,113,160,3,2,1,2,2,16,2,142,167,160,17,88,230,113,250,131,157,77,24,211,39,195,48,13,6,9,42,134,72,134,247,13,1,1,5,5,0,48,129,140,49,11,48,9,6,3,85,4,6,19,2,85,83,49,29,48,27,6,3,85,4,10,19,20,83,121,109,97,110,116,101,99,32,67,111,114,112,111,114,97,116,105,111,110,49,31,48,29,6,3,85,4,11,19,22,83,121,109,97,110,116,101,99,32,84,114,117,115,116,32,78,101,116,119,111,114,107,49,61,48,59,6,3,85,4,3,19,52,83,121,109,97,110,116,101,99,32,67,108,97,115,115,32,51,32,69,120,116,101,110,100,101,100,32,86,97,108,105,100,97,116,105,111,110,32,67,111,100,101,32,83,105,103,110,105,110,103,32,67,65,48,30,23,13,49,51,48,55,51,48,48,48,48,48,48,48,90,23,13,49,53,48,55,50,53,50,51,53,57,53,57,90,48,129,244,49,19,48,17,6,11,43,6,1,4,1,130,55,60,2,1,3,19,2,85,83,49,25,48,23,6,11,43,6,1,4,1,130,55,60,2,1,2,20,8,68,101,108,97,119,97,114,101,49,29,48,27,6,3,85,4,15,19,20,80,114,105,118,97,116,101,32,79,114,103,97,110,105,122,97,116,105,111,110,49,16,48,14,6,3,85,4,5,19,7,50,55,52,56,49,50,57,49,11,48,9,6,3,85,4,6,19,2,85,83,49,19,48,17,6,3,85,4,8,12,10,67,97,108,105,102,111,114,110,105,97,49,17,48,15,6,3,85,4,7,12,8,83,97,110,32,74,111,115,101,49,35,48,33,6,3,85,4,10,12,26,65,100,111,98,101,32,83,121,115,116,101,109,115,32,73,110,99,111,114,112,111,114,97,116,101,100,49,18,48,16,6,3,85,4,11,12,9,84,121,112,101,32,70,111,110,116,49,35,48,33,6,3,85,4,3,20,26,65,100,111,98,101,32,83,121,115,116,101,109,115,32,73,110,99,111,114,112,111,114,97,116,101,100,48,130,1,34,48,13,6,9,42,134,72,134,247,13,1,1,1,5,0,3,130,1,15,0,48,130,1,10,2,130,1,1,0,223,54,155,241,225,31,63,249,26,70,250,224,219,170,247,44,11,202,111,89,161,66,239,227,126,109,201,152,186,203,20,135,246,84,157,90,241,229,172,179,45,149,245,76,9,153,24,11,87,224,49,70,227,82,19,152,25,80,59,31,6,227,171,98,140,200,177,217,205,77,186,36,172,10,29,239,207,81,185,183,255,86,30,167,18,223,39,117,75,82,222,232,24,72,121,124,81,15,47,5,40,210,22,101,77,50,243,218,18,53,18,103,38,185,96,111,245,99,101,139,60,55,98,241,187,245,71,204,57,34,64,167,212,10,222,86,176,249,14,138,22,132,90,41,214,99,7,111,78,136,85,246,65,171,118,27,203,136,37,244,204,155,181,237,77,107,229,212,148,189,216,203,238,188,140,226,41,90,233,2,232,215,222,9,43,128,105,66,137,192,251,147,148,59,144,94,68,148,85,45,94,130,212,22,243,144,181,198,161,131,158,250,138,19,57,7,40,6,98,78,153,182,155,57,57,21,37,148,255,164,244,63,119,197,141,230,239,182,133,153,248,52,215,89,75,156,86,11,106,125,132,191,107,150,7,229,2,3,1,0,1,163,130,1,123,48,130,1,119,48,46,6,3,85,29,17,4,39,48,37,160,35,6,8,43,6,1,5,5,7,8,3,160,23,48,21,12,19,85,83,45,68,101,108,97,119,97,114,101,45,50,55,52,56,49,50,57,48,9,6,3,85,29,19,4,2,48,0,48,66,6,3,85,29,32,4,59,48,57,48,55,6,11,96,134,72,1,134,248,69,1,7,23,6,48,40,48,38,6,8,43,6,1,5,5,7,2,1,22,26,104,116,116,112,58,47,47,119,119,119,46,115,121,109,97,117,116,104,46,99,111,109,47,99,112,115,48,57,6,3,85,29,31,4,50,48,48,48,46,160,44,160,42,134,40,104,116,116,112,58,47,47,101,118,99,115,45,99,114,108,46,119,115,46,115,121,109,97,110,116,101,99,46,99,111,109,47,101,118,99,115,46,99,114,108,48,22,6,3,85,29,37,1,1,255,4,12,48,10,6,8,43,6,1,5,5,7,3,3,48,14,6,3,85,29,15,1,1,255,4,4,3,2,7,128,48,114,6,8,43,6,1,5,5,7,1,1,4,102,48,100,48,44,6,8,43,6,1,5,5,7,48,1,134,32,104,116,116,112,58,47,47,101,118,99,115,45,111,99,115,112,46,119,115,46,115,121,109,97,110,116,101,99,46,99,111,109,48,52,6,8,43,6,1,5,5,7,48,2,134,40,104,116,116,112,58,47,47,101,118,99,115,45,97,105,97,46,119,115,46,115,121,109,97,110,116,101,99,46,99,111,109,47,101,118,99,115,46,99,101,114,48,31,6,3,85,29,35,4,24,48,22,128,20,163,142,207,25,66,61,49,225,171,33,137,132,109,203,217,121,162,178,178,90,48,13,6,9,42,134,72,134,247,13,1,1,5,5,0,3,130,1,1,0,119,42,188,45,111,254,135,24,174,251,54,127,68,190,100,72,197,193,109,132,176,75,98,131,18,84,215,59,202,42,90,95,37,197,24,185,221,60,88,250,214,86,216,145,212,98,224,244,220,119,137,168,197,229,108,128,53,93,28,224,116,13,100,129,67,82,86,47,21,87,86,224,2,59,152,68,120,168,40,105,202,225,212,72,215,241,171,112,166,9,100,54,209,69,3,222,100,244,242,53,47,159,152,245,114,158,172,114,132,150,213,6,216,122,131,246,204,99,207,28,239,100,143,140,2,225,138,53,122,9,154,214,207,192,81,1,70,78,150,42,40,190,133,65,245,222,240,223,121,156,83,121,95,6,223,146,178,81,247,213,151,41,38,42,110,65,234,17,129,136,136,64,71,174,44,137,124,99,92,203,73,190,234,67,81,213,131,133,244,104,179,239,65,148,145,223,32,177,189,102,116,247,176,28,7,221,21,61,180,225,202,169,97,179,116,82,78,39,243,15,182,121,78,7,87,226,23,34,189,29,251,224,30,125,252,212,150,156,136,101,251,193,70,218,93,198,147,226,36,227,162,7,193,88,49,117,49,130,4,185,48,130,4,181,2,1,1,48,129,161,48,129,140,49,11,48,9,6,3,85,4,6,19,2,85,83,49,29,48,27,6,3,85,4,10,19,20,83,121,109,97,110,116,101,99,32,67,111,114,112,111,114,97,116,105,111,110,49,31,48,29,6,3,85,4,11,19,22,83,121,109,97,110,116,101,99,32,84,114,117,115,116,32,78,101,116,119,111,114,107,49,61,48,59,6,3,85,4,3,19,52,83,121,109,97,110,116,101,99,32,67,108,97,115,115,32,51,32,69,120,116,101,110,100,101,100,32,86,97,108,105,100,97,116,105,111,110,32,67,111,100,101,32,83,105,103,110,105,110,103,32,67,65,2,16,2,142,167,160,17,88,230,113,250,131,157,77,24,211,39,195,48,9,6,5,43,14,3,2,26,5,0,160,129,222,48,25,6,9,42,134,72,134,247,13,1,9,3,49,12,6,10,43,6,1,4,1,130,55,2,1,4,48,28,6,10,43,6,1,4,1,130,55,2,1,11,49,14,48,12,6,10,43,6,1,4,1,130,55,2,1,21,48,35,6,9,42,134,72,134,247,13,1,9,4,49,22,4,20,90,11,154,77,142,53,43,27,150,31,249,226,6,248,52,237,255,188,60,5,48,126,6,10,43,6,1,4,1,130,55,2,1,12,49,112,48,110,160,108,128,106,0,83,0,111,0,117,0,114,0,99,0,101,0,32,0,83,0,97,0,110,0,115,0,32,0,80,0,114,0,111,0,32,0,102,0,97,0,109,0,105,0,108,0,121,0,32,0,119,0,105,0,116,0,104,0,32,0,71,0,114,0,101,0,101,0,107,0,32,0,97,0,110,0,100,0,32,0,67,0,121,0,114,0,105,0,108,0,108,0,105,0,99,0,32,0,82,0,111,0,109,0,97,0,110,0,115,48,13,6,9,42,134,72,134,247,13,1,1,1,5,0,4,130,1,0,134,200,23,227,22,7,141,72,5,114,203,104,93,163,2,251,39,91,118,127,191,90,79,82,98,38,122,255,154,68,138,219,130,211,211,121,52,1,2,120,176,128,119,252,249,249,23,212,15,138,6,75,217,196,13,202,146,191,174,23,215,120,68,174,211,205,54,163,199,144,175,170,184,105,190,89,215,29,28,52,49,123,156,175,116,174,255,248,135,48,11,179,174,90,219,180,7,207,38,141,253,223,126,50,221,130,180,55,159,38,118,174,48,72,166,211,194,2,220,205,52,24,154,177,2,168,232,4,78,197,168,213,113,218,156,14,162,38,211,202,57,78,120,88,175,46,82,164,237,193,76,32,3,192,77,210,239,237,246,88,95,48,136,245,121,196,221,102,219,167,226,118,226,181,49,103,199,192,13,40,230,82,117,26,105,141,29,254,162,163,83,218,196,129,239,167,65,110,177,7,187,154,116,99,169,220,75,135,49,163,24,223,17,164,107,5,162,226,196,125,107,55,192,132,90,174,167,31,133,48,151,73,22,118,94,252,205,26,229,144,88,79,69,189,231,218,177,174,5,241,168,145,179,189,243,136,161,130,2,11,48,130,2,7,6,9,42,134,72,134,247,13,1,9,6,49,130,1,248,48,130,1,244,2,1,1,48,114,48,94,49,11,48,9,6,3,85,4,6,19,2,85,83,49,29,48,27,6,3,85,4,10,19,20,83,121,109,97,110,116,101,99,32,67,111,114,112,111,114,97,116,105,111,110,49,48,48,46,6,3,85,4,3,19,39,83,121,109,97,110,116,101,99,32,84,105,109,101,32,83,116,97,109,112,105,110,103,32,83,101,114,118,105,99,101,115,32,67,65,32,45,32,71,50,2,16,14,207,244,56,200,254,191,53,110,4,216,106,152,27,26,80,48,9,6,5,43,14,3,2,26,5,0,160,93,48,24,6,9,42,134,72,134,247,13,1,9,3,49,11,6,9,42,134,72,134,247,13,1,7,1,48,28,6,9,42,134,72,134,247,13,1,9,5,49,15,23,13,49,52,48,55,48,55,49,55,53,54,51,55,90,48,35,6,9,42,134,72,134,247,13,1,9,4,49,22,4,20,138,192,238,16,92,35,97,247,10,233,28,218,48,99,123,122,70,74,98,47,48,13,6,9,42,134,72,134,247,13,1,1,1,5,0,4,130,1,0,86,199,236,234,171,44,134,142,170,168,18,171,27,185,124,128,127,245,148,73,249,248,93,91,228,43,122,76,119,23,14,113,175,5,157,125,249,94,213,80,235,247,108,106,143,100,208,77,111,117,158,52,38,52,255,46,188,125,86,134,0,103,241,65,163,149,146,160,241,109,155,197,91,38,52,248,58,236,198,86,40,87,153,168,253,187,59,236,211,64,155,253,194,109,205,151,78,182,15,225,59,14,193,241,133,227,16,138,57,133,205,122,224,79,183,106,212,217,131,100,114,154,177,251,230,60,202,187,71,77,171,248,98,68,173,217,150,31,250,154,57,215,192,162,7,20,157,73,185,146,146,10,116,205,165,36,196,70,51,13,87,249,153,38,242,174,247,12,186,246,236,193,138,238,47,222,58,137,155,76,87,157,211,201,195,197,206,114,2,181,247,125,92,87,162,66,216,222,192,238,195,26,130,40,89,54,168,226,133,152,248,84,194,4,164,116,230,69,64,219,206,110,147,80,208,32,127,79,70,212,209,19,208,87,59,194,75,29,19,62,110,78,9,130,51,115,96,119,51,147,255,35,106,208,200,155,0]);Module["FS_createDataFile"]("/res","SourceSansPro-Light.ttf",fileData0,true,true);fileData1=[];fileData1.push.apply(fileData1,[137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,8,0,0,0,8,8,2,0,0,0,75,109,41,220,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,0,9,112,72,89,115,0,0,14,193,0,0,14,193,1,184,145,107,237,0,0,0,24,116,69,88,116,83,111,102,116,119,97,114,101,0,112,97,105,110,116,46,110,101,116,32,52,46,48,46,53,101,133,50,101,0,0,0,41,73,68,65,84,24,87,99,248,111,110,128,21,17,146,112,106,249,143,198,32,36,129,137,64,18,112,85,16,4,225,66,37,208,16,84,2,11,50,55,0,0,85,130,93,245,127,135,199,35,0,0,0,0,73,69,78,68,174,66,96,130]);Module["FS_createDataFile"]("/res","tb.png",fileData1,true,true);fileData2=[];fileData2.push.apply(fileData2,[112,114,101,99,105,115,105,111,110,32,104,105,103,104,112,32,102,108,111,97,116,59,13,10,13,10,117,110,105,102,111,114,109,32,104,105,103,104,112,32,118,101,99,52,32,99,111,108,111,117,114,59,13,10,117,110,105,102,111,114,109,32,104,105,103,104,112,32,118,101,99,50,32,108,105,103,104,116,95,112,111,115,59,13,10,13,10,118,97,114,121,105,110,103,32,104,105,103,104,112,32,118,101,99,52,32,118,115,95,112,111,115,105,116,105,111,110,59,13,10,118,97,114,121,105,110,103,32,104,105,103,104,112,32,118,101,99,50,32,118,115,95,117,118,59,13,10,118,97,114,121,105,110,103,32,104,105,103,104,112,32,102,108,111,97,116,32,118,115,95,116,105,100,59,13,10,118,97,114,121,105,110,103,32,104,105,103,104,112,32,118,101,99,52,32,118,115,95,99,111,108,111,114,59,13,10,13,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,95,48,59,13,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,95,49,59,13,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,95,50,59,13,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,95,51,59,13,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,95,52,59,13,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,95,53,59,13,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,95,54,59,13,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,95,55,59,13,10,13,10,118,111,105,100,32,109,97,105,110,40,41,13,10,123,13,10,9,102,108,111,97,116,32,105,110,116,101,110,115,105,116,121,32,61,32,49,46,48,32,47,32,108,101,110,103,116,104,40,118,115,95,112,111,115,105,116,105,111,110,46,120,121,32,45,32,108,105,103,104,116,95,112,111,115,41,59,13,10,9,118,101,99,52,32,116,101,120,67,111,108,111,114,32,61,32,118,115,95,99,111,108,111,114,59,13,10,9,105,102,32,40,118,115,95,116,105,100,32,62,32,48,46,48,41,13,10,9,123,13,10,9,9,105,110,116,32,116,105,100,32,61,32,105,110,116,40,118,115,95,116,105,100,32,45,32,48,46,53,41,59,13,10,9,9,105,102,32,40,116,105,100,32,61,61,32,48,41,13,10,9,9,9,116,101,120,67,111,108,111,114,32,61,32,118,115,95,99,111,108,111,114,32,42,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,95,48,44,32,118,115,95,117,118,41,59,13,10,9,9,101,108,115,101,32,105,102,32,40,116,105,100,32,61,61,32,49,41,13,10,9,9,9,116,101,120,67,111,108,111,114,32,61,32,118,115,95,99,111,108,111,114,32,42,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,95,49,44,32,118,115,95,117,118,41,59,13,10,9,9,101,108,115,101,32,105,102,32,40,116,105,100,32,61,61,32,50,41,13,10,9,9,9,116,101,120,67,111,108,111,114,32,61,32,118,115,95,99,111,108,111,114,32,42,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,95,50,44,32,118,115,95,117,118,41,59,13,10,9,9,101,108,115,101,32,105,102,32,40,116,105,100,32,61,61,32,51,41,13,10,9,9,9,116,101,120,67,111,108,111,114,32,61,32,118,115,95,99,111,108,111,114,32,42,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,95,51,44,32,118,115,95,117,118,41,59,13,10,9,9,101,108,115,101,32,105,102,32,40,116,105,100,32,61,61,32,52,41,13,10,9,9,9,116,101,120,67,111,108,111,114,32,61,32,118,115,95,99,111,108,111,114,32,42,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,95,52,44,32,118,115,95,117,118,41,59,13,10,9,9,101,108,115,101,32,105,102,32,40,116,105,100,32,61,61,32,53,41,13,10,9,9,9,116,101,120,67,111,108,111,114,32,61,32,118,115,95,99,111,108,111,114,32,42,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,95,53,44,32,118,115,95,117,118,41,59,13,10,9,9,101,108,115,101,32,105,102,32,40,116,105,100,32,61,61,32,54,41,13,10,9,9,9,116,101,120,67,111,108,111,114,32,61,32,118,115,95,99,111,108,111,114,32,42,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,95,54,44,32,118,115,95,117,118,41,59,13,10,9,9,101,108,115,101,32,105,102,32,40,116,105,100,32,61,61,32,55,41,13,10,9,9,9,116,101,120,67,111,108,111,114,32,61,32,118,115,95,99,111,108,111,114,32,42,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,95,55,44,32,118,115,95,117,118,41,59,13,10,9,125,13,10,9,103,108,95,70,114,97,103,67,111,108,111,114,32,61,32,116,101,120,67,111,108,111,114,32,42,32,105,110,116,101,110,115,105,116,121,59,13,10,125]);Module["FS_createDataFile"]("/res/shaders","basic.es3.frag",fileData2,true,true);fileData3=[];fileData3.push.apply(fileData3,[97,116,116,114,105,98,117,116,101,32,104,105,103,104,112,32,118,101,99,52,32,112,111,115,105,116,105,111,110,59,13,10,97,116,116,114,105,98,117,116,101,32,104,105,103,104,112,32,118,101,99,50,32,117,118,59,13,10,97,116,116,114,105,98,117,116,101,32,104,105,103,104,112,32,102,108,111,97,116,32,116,105,100,59,13,10,97,116,116,114,105,98,117,116,101,32,104,105,103,104,112,32,118,101,99,52,32,99,111,108,111,114,59,13,10,13,10,117,110,105,102,111,114,109,32,104,105,103,104,112,32,109,97,116,52,32,112,114,95,109,97,116,114,105,120,59,13,10,117,110,105,102,111,114,109,32,104,105,103,104,112,32,109,97,116,52,32,118,119,95,109,97,116,114,105,120,59,13,10,117,110,105,102,111,114,109,32,104,105,103,104,112,32,109,97,116,52,32,109,108,95,109,97,116,114,105,120,59,13,10,13,10,118,97,114,121,105,110,103,32,104,105,103,104,112,32,118,101,99,52,32,118,115,95,112,111,115,105,116,105,111,110,59,13,10,118,97,114,121,105,110,103,32,104,105,103,104,112,32,118,101,99,50,32,118,115,95,117,118,59,13,10,118,97,114,121,105,110,103,32,104,105,103,104,112,32,102,108,111,97,116,32,118,115,95,116,105,100,59,13,10,118,97,114,121,105,110,103,32,104,105,103,104,112,32,118,101,99,52,32,118,115,95,99,111,108,111,114,59,13,10,13,10,118,111,105,100,32,109,97,105,110,40,41,13,10,123,13,10,9,103,108,95,80,111,115,105,116,105,111,110,32,61,32,112,114,95,109,97,116,114,105,120,32,42,32,112,111,115,105,116,105,111,110,59,13,10,9,118,115,95,112,111,115,105,116,105,111,110,32,61,32,112,111,115,105,116,105,111,110,59,13,10,9,118,115,95,117,118,32,61,32,117,118,59,13,10,9,118,115,95,116,105,100,32,61,32,116,105,100,59,13,10,9,118,115,95,99,111,108,111,114,32,61,32,99,111,108,111,114,59,13,10,125]);Module["FS_createDataFile"]("/res/shaders","basic.es3.vert",fileData3,true,true)}if(Module["calledRun"]){runWithFS()}else{if(!Module["preRun"])Module["preRun"]=[];Module["preRun"].push(runWithFS)}}))();var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function";var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write(x+"\n")};var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);if(!ret&&filename!=nodePath["resolve"](filename)){filename=path.join(__dirname,"..","src",filename);ret=nodeFS["readFileSync"](filename)}if(ret&&!binary)ret=ret.toString();return ret};Module["readBinary"]=function readBinary(filename){return Module["read"](filename,true)};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}))}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function read(){throw"no read() available (jsc?)"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.log(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}var Runtime={setTempRet0:(function(value){tempRet0=value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);return Module["dynCall_"+sig].apply(null,args)}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i=TOTAL_MEMORY){var success=enlargeMemory();if(!success)return 0}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[_malloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;function UTF8ArrayToString(u8Array,idx){var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module["lengthBytesUTF8"]=lengthBytesUTF8;function UTF16ToString(ptr){var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module["UTF16ToString"]=UTF16ToString;function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}Module["stringToUTF16"]=stringToUTF16;function lengthBytesUTF16(str){return str.length*2}Module["lengthBytesUTF16"]=lengthBytesUTF16;function UTF32ToString(ptr){var i=0;var str="";while(1){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)return str;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}}Module["UTF32ToString"]=UTF32ToString;function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}Module["stringToUTF32"]=stringToUTF32;function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}Module["lengthBytesUTF32"]=lengthBytesUTF32;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);var status=_malloc(4);var ret=Module["___cxa_demangle"](buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}}var i=3;var basicTypes={"v":"void","b":"bool","c":"char","s":"short","i":"int","l":"long","f":"float","d":"double","w":"wchar_t","a":"signed char","h":"unsigned char","t":"unsigned short","j":"unsigned int","m":"unsigned long","x":"long long","y":"unsigned long long","z":"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a"}else{ret=name}paramLoop:while(i0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var parsed=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}parsed=parse()}catch(e){parsed+="?"}if(parsed.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling")}return parsed}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function enlargeMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.")}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;var totalMemory=64*1024;while(totalMemory0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=Module.addOnPreRun=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=Module.addOnInit=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=Module.addOnPreMain=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=Module.addOnExit=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=Module.addOnPostRun=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;STATIC_BASE=8;STATICTOP=STATIC_BASE+368688;__ATINIT__.push({func:(function(){__GLOBAL__sub_I_font_manager_cpp()})},{func:(function(){__GLOBAL__sub_I_sound_manager_cpp()})},{func:(function(){__GLOBAL__sub_I_iostream_cpp()})});allocate([78,54,115,112,97,114,107,121,56,103,114,97,112,104,105,99,115,49,50,82,101,110,100,101,114,97,98,108,101,50,68,69,0,0,0,0,0,0,0,0,112,152,5,0,8,0,0,0,0,0,0,0,48,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,24,1,0,0,3,0,0,0,4,0,0,0,2,0,0,0,5,0,0,0,112,114,95,109,97,116,114,105,120,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,48,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,49,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,50,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,51,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,52,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,53,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,54,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,55,0,0,0,0,0,0,0,78,54,115,112,97,114,107,121,56,103,114,97,112,104,105,99,115,53,76,97,121,101,114,69,0,0,0,0,0,0,0,0,112,152,5,0,248,0,0,0,0,0,0,0,88,1,0,0,6,0,0,0,7,0,0,0,3,0,0,0,0,0,0,0,78,54,115,112,97,114,107,121,56,103,114,97,112,104,105,99,115,53,76,97,98,101,108,69,0,0,0,0,0,0,0,0,128,153,5,0,56,1,0,0,48,0,0,0,0,0,0,0,0,0,0,0,160,1,0,0,1,0,0,0,8,0,0,0,1,0,0,0,0,0,0,0,78,54,115,112,97,114,107,121,56,103,114,97,112,104,105,99,115,54,83,112,114,105,116,101,69,0,0,0,0,0,0,0,128,153,5,0,128,1,0,0,48,0,0,0,0,0,0,0,0,0,0,0,40,2,0,0,9,0,0,0,10,0,0,0,11,0,0,0,4,0,0,0,1,0,0,0,12,0,0,0,13,0,0,0,0,0,0,0,78,54,115,112,97,114,107,121,56,103,114,97,112,104,105,99,115,49,53,66,97,116,99,104,82,101,110,100,101,114,101,114,50,68,69,0,0,0,0,0,78,54,115,112,97,114,107,121,56,103,114,97,112,104,105,99,115,49,48,82,101,110,100,101,114,101,114,50,68,69,0,0,112,152,5,0,0,2,0,0,128,153,5,0,216,1,0,0,32,2,0,0,0,0,0,0,0,0,0,0,32,2,0,0,14,0,0,0,15,0,0,0,16,0,0,0,1,0,0,0,2,0,0,0,17,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,118,101,114,116,101,120,32,115,104,97,100,101,114,33,0,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,102,114,97,103,109,101,110,116,32,115,104,97,100,101,114,33,0,0,0,0,0,0,114,116,0,0,0,0,0,0,83,111,117,114,99,101,83,97,110,115,80,114,111,0,0,0,114,101,115,47,83,111,117,114,99,101,83,97,110,115,80,114,111,45,76,105,103,104,116,46,116,116,102,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,71,76,70,87,33,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,99,114,101,97,116,101,32,71,76,70,87,32,119,105,110,100,111,119,33,0,0,0,79,112,101,110,71,76,32,0,79,112,101,110,71,76,32,69,114,114,111,114,58,32,0,0,0,0,0,0,152,3,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,52,71,97,109,101,0,0,0,78,54,115,112,97,114,107,121,54,83,112,97,114,107,121,69,0,0,0,0,0,0,0,0,112,152,5,0,120,3,0,0,128,153,5,0,112,3,0,0,144,3,0,0,0,0,0,0,108,105,103,104,116,95,112,111,115,0,0,0,0,0,0,0,32,102,112,115,0,0,0,0,32,117,112,115,44,32,0,0,84,101,115,116,32,71,97,109,101,0,0,0,0,0,0,0,114,101,115,47,115,104,97,100,101,114,115,47,98,97,115,105,99,46,101,115,51,46,118,101,114,116,0,0,0,0,0,0,114,101,115,47,115,104,97,100,101,114,115,47,98,97,115,105,99,46,101,115,51,46,102,114,97,103,0,0,0,0,0,0,114,101,115,47,116,98,46,112,110,103,0,0,0,0,0,0,0,0,0,0,144,3,0,0,24,0,0,0,25,0,0,0,1,0,0,0,26,0,0,0,27,0,0,0,1,0,0,0,78,83,116,51,95,95,49,49,55,98,97,100,95,102,117,110,99,116,105,111,110,95,99,97,108,108,69,0,0,0,0,0,128,153,5,0,72,4,0,0,40,150,5,0,0,0,0,0,0,0,0,0,104,4,0,0,28,0,0,0,29,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,72,5,0,0,30,0,0,0,31,0,0,0,2,0,0,0,5,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,48,95,95,102,117,110,99,116,105,111,110,54,95,95,102,117,110,99,73,90,78,54,115,112,97,114,107,121,54,83,112,97,114,107,121,51,114,117,110,69,118,69,85,108,118,69,95,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,52,95,69,69,70,118,118,69,69,69,0,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,48,95,95,102,117,110,99,116,105,111,110,54,95,95,98,97,115,101,73,70,118,118,69,69,69,0,0,0,0,0,0,0,112,152,5,0,24,5,0,0,128,153,5,0,192,4,0,0,64,5,0,0,0,0,0,0,90,78,54,115,112,97,114,107,121,54,83,112,97,114,107,121,51,114,117,110,69,118,69,85,108,118,69,95,0,0,0,0,112,152,5,0,88,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,72,69,90,79,67,81,83,0,72,69,90,76,79,67,85,83,0,102,105,106,107,100,98,104,0,120,122,114,111,101,115,99,0,112,113,103,106,121,0,215,145,215,147,215,148,215,151,215,154,215,155,215,157,215,161,0,215,145,215,152,215,155,215,157,215,161,215,166,0,215,167,215,154,215,159,215,163,215,165,0,228,187,150,228,187,172,228,189,160,228,190,134,229,128,145,229,136,176,229,146,140,229,156,176,229,175,185,229,176,141,229,176,177,229,184,173,230,136,145,230,151,182,230,153,130,230,156,131,230,157,165,231,130,186,232,131,189,232,136,176,232,170,170,232,175,180,232,191,153,233,128,153,233,189,138,0,229,134,155,229,144,140,229,183,178,230,132,191,230,151,162,230,152,159,230,152,175,230,153,175,230,176,145,231,133,167,231,142,176,231,143,190,231,144,134,231,148,168,231,189,174,232,166,129,232,187,141,233,130,163,233,133,141,233,135,140,233,150,139,233,155,183,233,156,178,233,157,162,233,161,190,0,228,184,170,228,184,186,228,186,186,228,187,150,228,187,165,228,187,172,228,189,160,228,190,134,229,128,139,229,128,145,229,136,176,229,146,140,229,164,167,229,175,185,229,176,141,229,176,177,230,136,145,230,151,182,230,153,130,230,156,137,230,157,165,231,130,186,232,166,129,232,170,170,232,175,180,0,228,184,187,228,186,155,229,155,160,229,174,131,230,131,179,230,132,143,231,144,134,231,148,159,231,149,182,231,156,139,231,157,128,231,189,174,232,128,133,232,135,170,232,145,151,232,163,161,232,191,135,232,191,152,232,191,155,233,128,178,233,129,142,233,129,147,233,130,132,233,135,140,233,157,162,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,18,0,0,0,3,0,0,0,26,0,0,0,1,0,0,0,26,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,129,1,0,0,0,0,0,0,40,0,0,0,5,0,0,0,57,0,0,0,0,0,0,0,70,0,0,0,0,0,0,0,129,1,0,0,0,0,0,0,81,0,0,0,6,0,0,0,157,0,0,0,2,0,0,0,233,0,0,0,4,0,0,0,53,1,0,0,0,0,0,0,129,1,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,172,5,0,0,3,0,0,0,6,0,0,0,0,0,0,0,4,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,172,5,0,0,5,0,0,0,7,0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,172,5,0,0,7,0,0,0,8,0,0,0,0,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,152,7,0,0,184,7,0,0,216,7,0,0,248,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,200,10,0,0,111,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,11,0,0,0,2,0,0,0,192,9,0,0,48,117,0,0,0,0,0,0,3,0,0,0,7,0,0,0,1,0,0,0,168,9,0,0,221,5,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,0,0,0,192,8,0,0,111,0,0,0,0,0,0,0,48,8,0,0,72,8,0,0,96,8,0,0,120,8,0,0,144,8,0,0,0,0,0,0,32,0,0,0,127,0,0,0,160,0,0,0,255,0,0,0,0,1,0,0,127,1,0,0,128,1,0,0,79,2,0,0,80,2,0,0,175,2,0,0,176,2,0,0,255,2,0,0,0,3,0,0,111,3,0,0,112,3,0,0,255,3,0,0,0,4,0,0,255,4,0,0,0,5,0,0,47,5,0,0,0,29,0,0,127,29,0,0,128,29,0,0,191,29,0,0,192,29,0,0,255,29,0,0,0,30,0,0,255,30,0,0,0,31,0,0,255,31,0,0,0,32,0,0,111,32,0,0,112,32,0,0,159,32,0,0,160,32,0,0,207,32,0,0,80,33,0,0,143,33,0,0,96,36,0,0,255,36,0,0,96,44,0,0,127,44,0,0,224,45,0,0,255,45,0,0,0,46,0,0,127,46,0,0,64,166,0,0,159,166,0,0,32,167,0,0,255,167,0,0,0,251,0,0,6,251,0,0,0,212,1,0,255,215,1,0,0,241,1,0,255,241,1,0,0,0,0,0,0,0,0,0,144,5,0,0,255,5,0,0,29,251,0,0,79,251,0,0,0,0,0,0,0,0,0,0,0,17,0,0,255,17,0,0,128,46,0,0,255,46,0,0,0,47,0,0,223,47,0,0,240,47,0,0,255,47,0,0,0,48,0,0,63,48,0,0,64,48,0,0,159,48,0,0,160,48,0,0,255,48,0,0,0,49,0,0,47,49,0,0,48,49,0,0,143,49,0,0,144,49,0,0,159,49,0,0,160,49,0,0,191,49,0,0,192,49,0,0,239,49,0,0,240,49,0,0,255,49,0,0,0,50,0,0,255,50,0,0,0,51,0,0,255,51,0,0,0,52,0,0,191,77,0,0,192,77,0,0,255,77,0,0,0,78,0,0,255,159,0,0,96,169,0,0,127,169,0,0,0,172,0,0,175,215,0,0,176,215,0,0,255,215,0,0,0,249,0,0,255,250,0,0,16,254,0,0,31,254,0,0,48,254,0,0,79,254,0,0,0,255,0,0,239,255,0,0,0,176,1,0,255,176,1,0,0,211,1,0,95,211,1,0,0,242,1,0,255,242,1,0,0,0,2,0,223,166,2,0,0,167,2,0,63,183,2,0,64,183,2,0,31,184,2,0,0,248,2,0,31,250,2,0,0,0,0,0,0,0,0,0,0,9,0,0,255,13,0,0,0,15,0,0,255,15,0,0,0,25,0,0,79,25,0,0,128,27,0,0,191,27,0,0,128,28,0,0,223,28,0,0,0,168,0,0,47,168,0,0,0,24,1,0,223,24,1,0,0,0,0,0,0,0,0,0,102,97,108,108,98,97,99,107,45,115,99,114,105,112,116,0,105,110,99,114,101,97,115,101,45,120,45,104,101,105,103,104,116,0,0,0,0,0,0,0,103,108,121,112,104,45,116,111,45,115,99,114,105,112,116,45,109,97,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,97,117,116,111,102,105,116,116,101,114,0,0,0,0,0,0,4,0,0,0,196,0,0,0,88,11,0,0,0,0,1,0,0,0,2,0,72,11,0,0,4,0,0,0,35,0,0,0,9,0,0,0,0,0,0,0,0,81,1,0,160,11,0,0,0,0,0,0,0,0,0,0,5,0,0,0,6,0,0,0,104,91,1,0,0,0,0,0,2,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,2,0,0,0,5,0,0,0,3,0,0,0,6,0,0,0,4,0,0,0,7,0,0,0,5,0,0,0,8,0,0,0,6,0,0,0,9,0,0,0,7,0,0,0,10,0,0,0,8,0,0,0,167,144,26,0,71,9,14,0,1,32,7,0,139,147,3,0,56,202,1,0,42,229,0,0,151,114,0,0,76,57,0,0,166,28,0,0,83,14,0,0,41,7,0,0,149,3,0,0,202,1,0,0,229,0,0,0,115,0,0,0,57,0,0,0,29,0,0,0,14,0,0,0,7,0,0,0,4,0,0,0,2,0,0,0,1,0,0,0,46,65,112,112,108,101,68,111,117,98,108,101,47,0,0,0,37,0,0,0,0,0,0,0,46,114,101,115,111,117,114,99,101,47,0,0,0,0,0,0,114,101,115,111,117,114,99,101,46,102,114,107,47,0,0,0,47,46,46,110,97,109,101,100,102,111,114,107,47,114,115,114,99,0,0,0,0,0,0,0,47,114,115,114,99,0,0,0,46,95,0,0,0,0,0,0,79,84,84,79,0,0,0,0,99,105,100,0,0,0,0,0,52,0,0,0,115,116,105,98,10,0,0,0,36,0,0,0,11,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,40,0,0,0,108,116,117,111,12,0,0,0,37,0,0,0,13,0,0,0,1,0,0,0,10,0,0,0,14,0,0,0,24,0,0,0,15,0,0,0,38,0,0,0,16,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,0,0,28,0,0,0,144,70,1,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,168,0,0,0,44,0,0,0,160,0,0,0,11,0,0,0,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,20,0,0,0,83,80,65,67,73,78,71,0,67,79,77,77,69,78,84,0,83,84,65,82,84,70,79,78,84,0,0,0,0,0,0,0,40,72,0,0,1,0,0,0,1,0,0,0,0,0,0,0,168,71,0,0,2,0,0,0,1,0,0,0,0,0,0,0,152,20,0,0,2,0,0,0,1,0,0,0,0,0,0,0,176,20,0,0,2,0,0,0,1,0,0,0,0,0,0,0,200,20,0,0,2,0,0,0,1,0,0,0,0,0,0,0,216,20,0,0,1,0,0,0,1,0,0,0,0,0,0,0,208,70,1,0,1,0,0,0,1,0,0,0,0,0,0,0,184,70,1,0,1,0,0,0,1,0,0,0,0,0,0,0,144,13,0,0,1,0,0,0,1,0,0,0,0,0,0,0,240,20,0,0,1,0,0,0,1,0,0,0,0,0,0,0,88,20,0,0,3,0,0,0,1,0,0,0,0,0,0,0,0,21,0,0,3,0,0,0,1,0,0,0,0,0,0,0,16,21,0,0,1,0,0,0,1,0,0,0,0,0,0,0,40,21,0,0,2,0,0,0,1,0,0,0,0,0,0,0,56,21,0,0,1,0,0,0,1,0,0,0,0,0,0,0,152,71,0,0,1,0,0,0,1,0,0,0,0,0,0,0,72,21,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,19,0,0,1,0,0,0,1,0,0,0,0,0,0,0,88,21,0,0,1,0,0,0,1,0,0,0,0,0,0,0,32,19,0,0,2,0,0,0,1,0,0,0,0,0,0,0,48,19,0,0,2,0,0,0,1,0,0,0,0,0,0,0,112,21,0,0,1,0,0,0,1,0,0,0,0,0,0,0,120,21,0,0,1,0,0,0,1,0,0,0,0,0,0,0,136,21,0,0,2,0,0,0,1,0,0,0,0,0,0,0,152,21,0,0,2,0,0,0,1,0,0,0,0,0,0,0,168,21,0,0,2,0,0,0,1,0,0,0,0,0,0,0,184,21,0,0,2,0,0,0,1,0,0,0,0,0,0,0,200,21,0,0,1,0,0,0,1,0,0,0,0,0,0,0,200,71,0,0,2,0,0,0,1,0,0,0,0,0,0,0,184,71,0,0,2,0,0,0,1,0,0,0,0,0,0,0,208,21,0,0,2,0,0,0,1,0,0,0,0,0,0,0,224,21,0,0,2,0,0,0,1,0,0,0,0,0,0,0,240,21,0,0,2,0,0,0,1,0,0,0,0,0,0,0,8,22,0,0,2,0,0,0,1,0,0,0,0,0,0,0,32,22,0,0,2,0,0,0,1,0,0,0,0,0,0,0,56,22,0,0,2,0,0,0,1,0,0,0,0,0,0,0,72,22,0,0,2,0,0,0,1,0,0,0,0,0,0,0,88,22,0,0,2,0,0,0,1,0,0,0,0,0,0,0,104,22,0,0,2,0,0,0,1,0,0,0,0,0,0,0,128,22,0,0,2,0,0,0,1,0,0,0,0,0,0,0,144,22,0,0,2,0,0,0,1,0,0,0,0,0,0,0,160,22,0,0,2,0,0,0,1,0,0,0,0,0,0,0,176,22,0,0,2,0,0,0,1,0,0,0,0,0,0,0,192,22,0,0,2,0,0,0,1,0,0,0,0,0,0,0,208,22,0,0,2,0,0,0,1,0,0,0,0,0,0,0,224,22,0,0,2,0,0,0,1,0,0,0,0,0,0,0,240,22,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,23,0,0,2,0,0,0,1,0,0,0,0,0,0,0,24,23,0,0,2,0,0,0,1,0,0,0,0,0,0,0,48,23,0,0,2,0,0,0,1,0,0,0,0,0,0,0,72,23,0,0,2,0,0,0,1,0,0,0,0,0,0,0,96,23,0,0,2,0,0,0,1,0,0,0,0,0,0,0,112,23,0,0,2,0,0,0,1,0,0,0,0,0,0,0,128,23,0,0,2,0,0,0,1,0,0,0,0,0,0,0,152,23,0,0,2,0,0,0,1,0,0,0,0,0,0,0,176,23,0,0,2,0,0,0,1,0,0,0,0,0,0,0,200,23,0,0,2,0,0,0,1,0,0,0,0,0,0,0,224,23,0,0,2,0,0,0,1,0,0,0,0,0,0,0,248,23,0,0,2,0,0,0,1,0,0,0,0,0,0,0,8,24,0,0,3,0,0,0,1,0,0,0,0,0,0,0,32,24,0,0,3,0,0,0,1,0,0,0,0,0,0,0,48,24,0,0,2,0,0,0,1,0,0,0,0,0,0,0,216,71,0,0,3,0,0,0,1,0,0,0,0,0,0,0,232,71,0,0,3,0,0,0,1,0,0,0,0,0,0,0,24,72,0,0,1,0,0,0,1,0,0,0,0,0,0,0,248,71,0,0,1,0,0,0,1,0,0,0,0,0,0,0,64,24,0,0,2,0,0,0,1,0,0,0,0,0,0,0,136,13,0,0,1,0,0,0,1,0,0,0,0,0,0,0,80,24,0,0,2,0,0,0,1,0,0,0,0,0,0,0,104,24,0,0,2,0,0,0,1,0,0,0,0,0,0,0,128,24,0,0,2,0,0,0,1,0,0,0,0,0,0,0,144,24,0,0,2,0,0,0,1,0,0,0,0,0,0,0,160,24,0,0,2,0,0,0,1,0,0,0,0,0,0,0,176,24,0,0,2,0,0,0,1,0,0,0,0,0,0,0,200,24,0,0,2,0,0,0,1,0,0,0,0,0,0,0,216,24,0,0,2,0,0,0,1,0,0,0,0,0,0,0,232,24,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,25,0,0,2,0,0,0,1,0,0,0,0,0,0,0,24,25,0,0,3,0,0,0,1,0,0,0,0,0,0,0,8,72,0,0,1,0,0,0,1,0,0,0,0,0,0,0,32,25,0,0,2,0,0,0,1,0,0,0,0,0,0,0,48,25,0,0,2,0,0,0,1,0,0,0,0,0,0,0,72,25,0,0,2,0,0,0,1,0,0,0,0,0,0,0,83,84,65,82,84,80,82,79,80,69,82,84,73,69,83,0,32,43,0,0,0,0,0,0,70,79,78,84,66,79,85,78,68,73,78,71,66,79,88,0,70,79,78,84,0,0,0,0,83,73,90,69,0,0,0,0,67,72,65,82,83,0,0,0,37,104,100,0,0,0,0,0,70,79,78,84,95,65,83,67,69,78,84,0,0,0,0,0,70,79,78,84,95,68,69,83,67,69,78,84,0,0,0,0,69,78,68,70,79,78,84,0,69,78,68,67,72,65,82,0,83,84,65,82,84,67,72,65,82,0,0,0,0,0,0,0,69,78,67,79,68,73,78,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,3,126,0,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,128,192,224,240,248,252,254,83,87,73,68,84,72,0,0,68,87,73,68,84,72,0,0,66,66,88,0,0,0,0,0,66,73,84,77,65,80,0,0,0,0,0,0,0,0,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,69,70,65,85,76,84,95,67,72,65,82,0,0,0,0,45,0,0,0,0,0,0,0,69,78,68,80,82,79,80,69,82,84,73,69,83,0,0,0,95,88,70,82,69,69,56,54,95,71,76,89,80,72,95,82,65,78,71,69,83,0,0,0,65,86,71,95,67,65,80,73,84,65,76,95,87,73,68,84,72,0,0,0,0,0,0,0,65,86,71,95,76,79,87,69,82,67,65,83,69,95,87,73,68,84,72,0,0,0,0,0,67,65,80,95,72,69,73,71,72,84,0,0,0,0,0,0,67,72,65,82,83,69,84,95,67,79,76,76,69,67,84,73,79,78,83,0,0,0,0,0,67,79,80,89,82,73,71,72,84,0,0,0,0,0,0,0,68,69,83,84,73,78,65,84,73,79,78,0,0,0,0,0,68,69,86,73,67,69,95,70,79,78,84,95,78,65,77,69,0,0,0,0,0,0,0,0,69,78,68,95,83,80,65,67,69,0,0,0,0,0,0,0,70,65,67,69,95,78,65,77,69,0,0,0,0,0,0,0,70,73,71,85,82,69,95,87,73,68,84,72,0,0,0,0,70,79,78,84,78,65,77,69,95,82,69,71,73,83,84,82,89,0,0,0,0,0,0,0,70,79,85,78,68,82,89,0,70,85,76,76,95,78,65,77,69,0,0,0,0,0,0,0,73,84,65,76,73,67,95,65,78,71,76,69,0,0,0,0,77,65,88,95,83,80,65,67,69,0,0,0,0,0,0,0,77,73,78,95,83,80,65,67,69,0,0,0,0,0,0,0,78,79,82,77,95,83,80,65,67,69,0,0,0,0,0,0,78,79,84,73,67,69,0,0,81,85,65,68,95,87,73,68,84,72,0,0,0,0,0,0,82,65,87,95,65,83,67,69,78,84,0,0,0,0,0,0,82,65,87,95,65,86,69,82,65,71,69,95,87,73,68,84,72,0,0,0,0,0,0,0,82,65,87,95,65,86,71,95,67,65,80,73,84,65,76,95,87,73,68,84,72,0,0,0,82,65,87,95,65,86,71,95,76,79,87,69,82,67,65,83,69,95,87,73,68,84,72,0,82,65,87,95,67,65,80,95,72,69,73,71,72,84,0,0,82,65,87,95,68,69,83,67,69,78,84,0,0,0,0,0,82,65,87,95,69,78,68,95,83,80,65,67,69,0,0,0,82,65,87,95,70,73,71,85,82,69,95,87,73,68,84,72,0,0,0,0,0,0,0,0,82,65,87,95,77,65,88,95,83,80,65,67,69,0,0,0,82,65,87,95,77,73,78,95,83,80,65,67,69,0,0,0,82,65,87,95,78,79,82,77,95,83,80,65,67,69,0,0,82,65,87,95,80,73,88,69,76,95,83,73,90,69,0,0,82,65,87,95,80,79,73,78,84,95,83,73,90,69,0,0,82,65,87,95,80,73,88,69,76,83,73,90,69,0,0,0,82,65,87,95,80,79,73,78,84,83,73,90,69,0,0,0,82,65,87,95,81,85,65,68,95,87,73,68,84,72,0,0,82,65,87,95,83,77,65,76,76,95,67,65,80,95,83,73,90,69,0,0,0,0,0,0,82,65,87,95,83,84,82,73,75,69,79,85,84,95,65,83,67,69,78,84,0,0,0,0,82,65,87,95,83,84,82,73,75,69,79,85,84,95,68,69,83,67,69,78,84,0,0,0,82,65,87,95,83,85,66,83,67,82,73,80,84,95,83,73,90,69,0,0,0,0,0,0,82,65,87,95,83,85,66,83,67,82,73,80,84,95,88,0,82,65,87,95,83,85,66,83,67,82,73,80,84,95,89,0,82,65,87,95,83,85,80,69,82,83,67,82,73,80,84,95,83,73,90,69,0,0,0,0,82,65,87,95,83,85,80,69,82,83,67,82,73,80,84,95,88,0,0,0,0,0,0,0,82,65,87,95,83,85,80,69,82,83,67,82,73,80,84,95,89,0,0,0,0,0,0,0,82,65,87,95,85,78,68,69,82,76,73,78,69,95,80,79,83,73,84,73,79,78,0,0,82,65,87,95,85,78,68,69,82,76,73,78,69,95,84,72,73,67,75,78,69,83,83,0,82,65,87,95,88,95,72,69,73,71,72,84,0,0,0,0,82,69,76,65,84,73,86,69,95,83,69,84,87,73,68,84,72,0,0,0,0,0,0,0,82,69,76,65,84,73,86,69,95,87,69,73,71,72,84,0,82,69,83,79,76,85,84,73,79,78,0,0,0,0,0,0,83,77,65,76,76,95,67,65,80,95,83,73,90,69,0,0,83,84,82,73,75,69,79,85,84,95,65,83,67,69,78,84,0,0,0,0,0,0,0,0,83,84,82,73,75,69,79,85,84,95,68,69,83,67,69,78,84,0,0,0,0,0,0,0,83,85,66,83,67,82,73,80,84,95,83,73,90,69,0,0,83,85,66,83,67,82,73,80,84,95,88,0,0,0,0,0,83,85,66,83,67,82,73,80,84,95,89,0,0,0,0,0,83,85,80,69,82,83,67,82,73,80,84,95,83,73,90,69,0,0,0,0,0,0,0,0,83,85,80,69,82,83,67,82,73,80,84,95,88,0,0,0,83,85,80,69,82,83,67,82,73,80,84,95,89,0,0,0,85,78,68,69,82,76,73,78,69,95,80,79,83,73,84,73,79,78,0,0,0,0,0,0,85,78,68,69,82,76,73,78,69,95,84,72,73,67,75,78,69,83,83,0,0,0,0,0,87,69,73,71,72,84,0,0,88,95,72,69,73,71,72,84,0,0,0,0,0,0,0,0,95,77,85,76,69,95,66,65,83,69,76,73,78,69,95,79,70,70,83,69,84,0,0,0,95,77,85,76,69,95,82,69,76,65,84,73,86,69,95,67,79,77,80,79,83,69,0,0,144,70,1,0,120,25,0,0,48,99,1,0,128,25,0,0,0,0,0,0,0,0,0,0,7,0,0,0,8,0,0,0,66,68,70,0,0,0,0,0,99,102,102,0,0,0,0,0,1,5,0,0,68,0,0,0,136,25,0,0,0,0,1,0,0,0,2,0,0,0,0,0,5,0,0,0,40,0,0,0,21,0,0,0,20,3,0,0,48,0,0,0,172,0,0,0,12,0,0,0,41,0,0,0,6,0,0,0,42,0,0,0,7,0,0,0,43,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,13,0,0,0,22,0,0,0,23,0,0,0,20,0,0,0,24,0,0,0,44,0,0,0,25,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,27,0,0,0,45,0,0,0,28,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,8,1,16,0,8,1,17,0,8,1,18,0,8,1,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,50,0,51,0,52,0,53,0,54,0,55,0,56,0,57,0,58,0,59,0,60,0,61,0,62,0,63,0,64,0,65,0,66,0,67,0,68,0,69,0,70,0,71,0,72,0,73,0,74,0,75,0,76,0,77,0,78,0,79,0,80,0,81,0,82,0,83,0,84,0,85,0,86,0,87,0,88,0,89,0,90,0,91,0,92,0,93,0,94,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,97,0,98,0,99,0,100,0,101,0,102,0,103,0,104,0,105,0,106,0,107,0,108,0,109,0,110,0,0,0,111,0,112,0,113,0,114,0,0,0,115,0,116,0,117,0,118,0,119,0,120,0,121,0,122,0,0,0,123,0,0,0,124,0,125,0,126,0,127,0,128,0,129,0,130,0,131,0,0,0,132,0,133,0,0,0,134,0,135,0,136,0,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,0,0,0,139,0,0,0,0,0,0,0,0,0,140,0,141,0,142,0,143,0,0,0,0,0,0,0,0,0,0,0,144,0,0,0,0,0,0,0,145,0,0,0,0,0,146,0,147,0,148,0,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,229,0,230,0,0,0,231,0,232,0,233,0,234,0,235,0,236,0,237,0,238,0,13,0,14,0,15,0,99,0,239,0,240,0,241,0,242,0,243,0,244,0,245,0,246,0,247,0,248,0,27,0,28,0,249,0,250,0,251,0,252,0,0,0,253,0,254,0,255,0,0,1,1,1,0,0,0,0,0,0,2,1,0,0,0,0,3,1,4,1,5,1,6,1,0,0,0,0,7,1,8,1,9,1,0,0,10,1,109,0,110,0,11,1,12,1,13,1,0,0,14,1,15,1,16,1,17,1,18,1,19,1,20,1,21,1,22,1,23,1,24,1,25,1,26,1,27,1,28,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38,1,39,1,40,1,41,1,42,1,43,1,44,1,45,1,46,1,47,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,1,49,1,50,1,0,0,0,0,51,1,52,1,53,1,54,1,55,1,0,0,56,1,0,0,0,0,56,1,0,0,0,0,58,1,59,1,0,0,0,0,60,1,61,1,62,1,0,0,0,0,0,0,158,0,155,0,163,0,63,1,64,1,65,1,66,1,67,1,68,1,69,1,0,0,0,0,70,1,150,0,164,0,169,0,71,1,72,1,73,1,74,1,75,1,76,1,77,1,78,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86,1,87,1,88,1,89,1,90,1,91,1,92,1,93,1,94,1,95,1,96,1,97,1,98,1,99,1,100,1,101,1,102,1,103,1,104,1,105,1,106,1,107,1,108,1,109,1,110,1,111,1,112,1,113,1,114,1,115,1,116,1,117,1,118,1,119,1,120,1,121,1,122,1,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,50,0,51,0,52,0,53,0,54,0,55,0,56,0,57,0,58,0,59,0,60,0,61,0,62,0,63,0,64,0,65,0,66,0,67,0,68,0,69,0,70,0,71,0,72,0,73,0,74,0,75,0,76,0,77,0,78,0,79,0,80,0,81,0,82,0,83,0,84,0,85,0,86,0,87,0,88,0,89,0,90,0,91,0,92,0,93,0,94,0,95,0,96,0,97,0,98,0,99,0,100,0,101,0,102,0,103,0,104,0,105,0,106,0,107,0,108,0,109,0,110,0,111,0,112,0,113,0,114,0,115,0,116,0,117,0,118,0,119,0,120,0,121,0,122,0,123,0,124,0,125,0,126,0,127,0,128,0,129,0,130,0,131,0,132,0,133,0,134,0,135,0,136,0,137,0,138,0,139,0,140,0,141,0,142,0,143,0,144,0,145,0,146,0,147,0,148,0,149,0,150,0,151,0,152,0,153,0,154,0,155,0,156,0,157,0,158,0,159,0,160,0,161,0,162,0,163,0,164,0,165,0,166,0,167,0,168,0,169,0,170,0,171,0,172,0,173,0,174,0,175,0,176,0,177,0,178,0,179,0,180,0,181,0,182,0,183,0,184,0,185,0,186,0,187,0,188,0,189,0,190,0,191,0,192,0,193,0,194,0,195,0,196,0,197,0,198,0,199,0,200,0,201,0,202,0,203,0,204,0,205,0,206,0,207,0,208,0,209,0,210,0,211,0,212,0,213,0,214,0,215,0,216,0,217,0,218,0,219,0,220,0,221,0,222,0,223,0,224,0,225,0,226,0,227,0,228,0,0,0,0,0,0,0,0,0,1,0,229,0,230,0,231,0,232,0,233,0,234,0,235,0,236,0,237,0,238,0,13,0,14,0,15,0,99,0,239,0,240,0,241,0,242,0,243,0,244,0,245,0,246,0,247,0,248,0,27,0,28,0,249,0,250,0,251,0,252,0,253,0,254,0,255,0,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,109,0,110,0,11,1,12,1,13,1,14,1,15,1,16,1,17,1,18,1,19,1,20,1,21,1,22,1,23,1,24,1,25,1,26,1,27,1,28,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38,1,39,1,40,1,41,1,42,1,43,1,44,1,45,1,46,1,47,1,48,1,49,1,50,1,51,1,52,1,53,1,54,1,55,1,56,1,57,1,58,1,59,1,60,1,61,1,62,1,158,0,155,0,163,0,63,1,64,1,65,1,66,1,67,1,68,1,69,1,70,1,150,0,164,0,169,0,71,1,72,1,73,1,74,1,75,1,76,1,77,1,78,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86,1,87,1,88,1,89,1,90,1,91,1,92,1,93,1,94,1,95,1,96,1,97,1,98,1,99,1,100,1,101,1,102,1,103,1,104,1,105,1,106,1,107,1,108,1,109,1,110,1,111,1,112,1,113,1,114,1,115,1,116,1,117,1,118,1,119,1,120,1,121,1,122,1,0,0,0,0,0,0,1,0,231,0,232,0,235,0,236,0,237,0,238,0,13,0,14,0,15,0,99,0,239,0,240,0,241,0,242,0,243,0,244,0,245,0,246,0,247,0,248,0,27,0,28,0,249,0,250,0,251,0,253,0,254,0,255,0,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,109,0,110,0,11,1,12,1,13,1,14,1,16,1,44,1,45,1,46,1,49,1,58,1,59,1,158,0,155,0,163,0,64,1,65,1,66,1,67,1,68,1,69,1,70,1,150,0,164,0,169,0,71,1,72,1,73,1,74,1,75,1,76,1,77,1,78,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86,1,87,1,88,1,89,1,90,1,0,0,4,0,0,0,0,16,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,1,16,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,17,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,2,16,0,0,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,16,0,0,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,16,0,0,20,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,1,17,0,0,24,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,17,0,0,28,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,17,0,0,32,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,17,0,0,36,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,17,0,0,40,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,6,17,0,0,44,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,17,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,13,16,0,0,80,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,5,16,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,17,0,0,100,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,15,16,0,0,104,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,16,16,0,0,108,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,17,16,0,0,112,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,18,16,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,20,17,0,0,124,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,21,17,0,0,128,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,30,17,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,31,17,0,0,144,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,32,17,0,0,148,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,33,17,0,0,152,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,34,17,0,0,156,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,35,17,0,0,160,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,36,17,0,0,164,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,37,17,0,0,168,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,38,17,0,0,172,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,6,32,0,0,4,0,0,0,4,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,6,0,0,0,7,32,0,0,60,0,0,0,4,0,0,0,0,0,0,0,10,0,0,0,1,0,0,0,6,0,0,0,8,32,0,0,100,0,0,0,4,0,0,0,0,0,0,0,14,0,0,0,2,0,0,0,6,0,0,0,9,32,0,0,156,0,0,0,4,0,0,0,0,0,0,0,10,0,0,0,3,0,0,0,3,0,0,0,9,33,0,0,196,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,10,33,0,0,200,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,33,0,0,204,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,10,32,0,0,208,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,32,0,0,212,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,12,33,0,0,220,0,0,0,4,0,0,0,0,0,0,0,13,0,0,0,216,0,0,0,6,0,0,0,13,33,0,0,16,1,0,0,4,0,0,0,0,0,0,0,13,0,0,0,217,0,0,0,5,0,0,0,14,33,0,0,68,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,15,33,0,0,72,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,16,33,0,0,76,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,17,33,0,0,80,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,18,33,0,0,84,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,19,33,0,0,88,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,19,32,0,0,92,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,20,32,0,0,96,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,21,32,0,0,100,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,0,202,154,59,1,0,1,1,1,0,1],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([1,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,1,0,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,48,99,1,0,128,40,0,0,176,96,1,0,136,40,0,0,144,96,1,0,160,40,0,0,120,96,1,0,168,40,0,0,160,70,1,0,176,40,0,0,80,50,0,0,184,40,0,0,0,81,1,0,200,40,0,0,0,0,0,0,0,0,0,0,67,70,70,0,0,0,0,0,30,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,4,0,0,0,31,0,0,0,32,0,0,0,0,0,0,0,5,0,0,0,33,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,11,0,0,0,100,97,114,107,101,110,105,110,103,45,112,97,114,97,109,101,116,101,114,115,0,0,0,0,104,105,110,116,105,110,103,45,101,110,103,105,110,101,0,0,110,111,45,115,116,101,109,45,100,97,114,107,101,110,105,110,103,0,0,0,0,0,0,0,116,49,99,105,100,0,0,0,1,5,0,0,28,0,0,0,16,41,0,0,0,0,1,0,0,0,2,0,0,0,0,0,14,0,0,0,46,0,0,0,34,0,0,0,76,1,0,0,48,0,0,0,172,0,0,0,14,0,0,0,47,0,0,0,15,0,0,0,48,0,0,0,16,0,0,0,49,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,37,65,68,79,66,101,103,105,110,70,111,110,116,68,105,99,116,0,0,0,0,0,0,0,192,48,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,48,0,0,0,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,48,0,0,0,0,0,0,2,0,0,0,0,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,48,0,0,0,0,0,0,5,0,0,0,0,0,0,0,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,5,0,0,0,0,0,0,0,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,49,0,0,0,0,0,0,2,0,0,0,0,0,0,0,20,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,49,0,0,0,0,0,0,2,0,0,0,0,0,0,0,72,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,49,0,0,0,0,0,0,2,0,0,0,0,0,0,0,144,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,49,0,0,0,0,0,0,2,0,0,0,0,0,0,0,148,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,49,0,0,0,0,0,0,2,0,0,0,0,0,0,0,152,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,49,0,0,0,0,0,0,2,0,0,0,0,0,0,0,156,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,94,1,0,3,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,94,1,0,3,0,0,0,5,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,94,1,0,3,0,0,0,5,0,0,0,0,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,1,0,3,0,0,0,5,0,0,0,0,0,0,0,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,95,1,0,3,0,0,0,5,0,0,0,0,0,0,0,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,95,1,0,3,0,0,0,2,0,0,0,0,0,0,0,20,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,95,1,0,3,0,0,0,1,0,0,0,0,0,0,0,24,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,95,1,0,3,0,0,0,2,0,0,0,0,0,0,0,26,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,95,1,0,3,0,0,0,2,0,0,0,0,0,0,0,28,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,95,1,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,95,1,0,1,0,0,0,2,0,0,0,0,0,0,0,212,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,95,1,0,1,0,0,0,2,0,0,0,0,0,0,0,213,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,49,0,0,1,0,0,0,2,0,0,0,0,0,0,0,244,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,49,0,0,1,0,0,0,2,0,0,0,0,0,0,0,248,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,49,0,0,1,0,0,0,2,0,0,0,0,0,0,0,240,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,49,0,0,1,0,0,0,2,0,0,0,0,0,0,0,196,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,49,0,0,1,0,0,0,3,0,0,0,0,0,0,0,200,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,95,1,0,1,0,0,0,3,0,0,0,0,0,0,0,204,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,88,1,0,4,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,88,1,0,4,0,0,0,2,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,88,1,0,4,0,0,0,2,0,0,0,0,0,0,0,184,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,89,1,0,4,0,0,0,2,0,0,0,0,0,0,0,188,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,89,1,0,4,0,0,0,4,0,0,0,0,0,0,0,108,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,89,1,0,4,0,0,0,2,0,0,0,0,0,0,0,112,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,89,1,0,4,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,89,1,0,4,0,0,0,9,0,0,0,0,0,0,0,12,0,0,0,2,0,0,0,14,0,0,0,8,0,0,0,0,0,0,0,88,89,1,0,4,0,0,0,9,0,0,0,0,0,0,0,40,0,0,0,2,0,0,0,10,0,0,0,9,0,0,0,0,0,0,0,104,89,1,0,4,0,0,0,9,0,0,0,0,0,0,0,60,0,0,0,2,0,0,0,14,0,0,0,10,0,0,0,0,0,0,0,120,89,1,0,4,0,0,0,9,0,0,0,0,0,0,0,88,0,0,0,2,0,0,0,10,0,0,0,11,0,0,0,0,0,0,0,144,89,1,0,4,0,0,0,9,0,0,0,0,0,0,0,120,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,152,89,1,0,4,0,0,0,9,0,0,0,0,0,0,0,122,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,160,89,1,0,4,0,0,0,9,0,0,0,0,0,0,0,192,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,176,89,1,0,4,0,0,0,9,0,0,0,0,0,0,0,128,0,0,0,2,0,0,0,12,0,0,0,124,0,0,0,0,0,0,0,192,89,1,0,4,0,0,0,9,0,0,0,0,0,0,0,154,0,0,0,2,0,0,0,12,0,0,0,125,0,0,0,0,0,0,0,224,89,1,0,4,0,0,0,1,0,0,0,0,0,0,0,126,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,95,1,0,5,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,49,0,0,5,0,0,0,11,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,95,1,0,5,0,0,0,11,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,89,1,0,5,0,0,0,11,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,73,68,70,111,110,116,78,97,109,101,0,0,0,0,0,67,73,68,70,111,110,116,86,101,114,115,105,111,110,0,0,67,73,68,70,111,110,116,84,121,112,101,0,0,0,0,0,82,101,103,105,115,116,114,121,0,0,0,0,0,0,0,0,79,114,100,101,114,105,110,103,0,0,0,0,0,0,0,0,83,117,112,112,108,101,109,101,110,116,0,0,0,0,0,0,85,73,68,66,97,115,101,0,67,73,68,77,97,112,79,102,102,115,101,116,0,0,0,0,70,68,66,121,116,101,115,0,71,68,66,121,116,101,115,0,67,73,68,67,111,117,110,116,0,0,0,0,0,0,0,0,83,117,98,114,77,97,112,79,102,102,115,101,116,0,0,0,83,68,66,121,116,101,115,0,83,117,98,114,67,111,117,110,116,0,0,0,0,0,0,0,108,101,110,66,117,105,108,100,67,104,97,114,65,114,114,97,121,0,0,0,0,0,0,0,70,111,114,99,101,66,111,108,100,84,104,114,101,115,104,111,108,100,0,0,0,0,0,0,70,68,65,114,114,97,121,0,37,33,80,83,45,65,100,111,98,101,45,51,46,48,32,82,101,115,111,117,114,99,101,45,67,73,68,70,111,110,116,0,83,116,97,114,116,68,97,116,97,0,0,0,0,0,0,0,47,115,102,110,116,115,0,0,40,72,101,120,41,0,0,0,48,99,1,0,32,50,0,0,144,96,1,0,48,50,0,0,176,96,1,0,56,50,0,0,80,50,0,0,88,50,0,0,0,0,0,0,0,0,0,0,67,73,68,32,84,121,112,101,32,49,0,0,0,0,0,0,17,0,0,0,0,0,0,0,36,0,0,0,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,73,68,0,0,0,0,0,7,0,0,0,38,0,0,0,12,0,0,0,0,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,7,0,0,0,15,0,0,0,31,0,0,0,63,0,0,0,127,0,0,0,255,0,0,0,255,1,0,0,255,3,0,0,255,7,0,0,255,15,0,0,255,31,0,0,255,63,0,0,255,127,0,0,255,255,0,0,0,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,13,0,0,0,15,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,27,0,0,0,31,0,0,0,35,0,0,0,43,0,0,0,51,0,0,0,59,0,0,0,67,0,0,0,83,0,0,0,99,0,0,0,115,0,0,0,131,0,0,0,163,0,0,0,195,0,0,0,227,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,0,0,0,0,112,0,0,0,112,0,0,0,0,0,0,0,111,118,101,114,115,117,98,115,99,114,105,98,101,100,32,108,105,116,101,114,97,108,47,108,101,110,103,116,104,32,116,114,101,101,0,0,0,0,0,0,105,110,99,111,109,112,108,101,116,101,32,108,105,116,101,114,97,108,47,108,101,110,103,116,104,32,116,114,101,101,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,7,0,0,0,9,0,0,0,13,0,0,0,17,0,0,0,25,0,0,0,33,0,0,0,49,0,0,0,65,0,0,0,97,0,0,0,129,0,0,0,193,0,0,0,1,1,0,0,129,1,0,0,1,2,0,0,1,3,0,0,1,4,0,0,1,6,0,0,1,8,0,0,1,12,0,0,1,16,0,0,1,24,0,0,1,32,0,0,1,48,0,0,1,64,0,0,1,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,111,118,101,114,115,117,98,115,99,114,105,98,101,100,32,100,105,115,116,97,110,99,101,32,116,114,101,101,0,0,0,0,105,110,99,111,109,112,108,101,116,101,32,100,105,115,116,97,110,99,101,32,116,114,101,101,0,0,0,0,0,0,0,0,101,109,112,116,121,32,100,105,115,116,97,110,99,101,32,116,114,101,101,32,119,105,116,104,32,108,101,110,103,116,104,115,0,0,0,0,0,0,0,0,111,118,101,114,115,117,98,115,99,114,105,98,101,100,32,100,121,110,97,109,105,99,32,98,105,116,32,108,101,110,103,116,104,115,32,116,114,101,101,0,105,110,99,111,109,112,108,101,116,101,32,100,121,110,97,109,105,99,32,98,105,116,32,108,101,110,103,116,104,115,32,116,114,101,101,0,0,0,0,0,80,5,0,0,1,0,0,0,87,5,0,0,1,1,0,0,83,5,0,0,17,0,0,0,91,5,0,0,1,16,0,0,81,5,0,0,5,0,0,0,89,5,0,0,1,4,0,0,85,5,0,0,65,0,0,0,93,5,0,0,1,64,0,0,80,5,0,0,3,0,0,0,88,5,0,0,1,2,0,0,84,5,0,0,33,0,0,0,92,5,0,0,1,32,0,0,82,5,0,0,9,0,0,0,90,5,0,0,1,8,0,0,86,5,0,0,129,0,0,0,192,5,0,0,1,96,0,0,80,5,0,0,2,0,0,0,87,5,0,0,129,1,0,0,83,5,0,0,25,0,0,0,91,5,0,0,1,24,0,0,81,5,0,0,7,0,0,0,89,5,0,0,1,6,0,0,85,5,0,0,97,0,0,0,93,5,0,0,1,96,0,0,80,5,0,0,4,0,0,0,88,5,0,0,1,3,0,0,84,5,0,0,49,0,0,0,92,5,0,0,1,48,0,0,82,5,0,0,13,0,0,0,90,5,0,0,1,12,0,0,86,5,0,0,193,0,0,0,192,5,0,0,1,96,0,0,96,7,0,0,0,1,0,0,0,8,0,0,80,0,0,0,0,8,0,0,16,0,0,0,84,8,0,0,115,0,0,0,82,7,0,0,31,0,0,0,0,8,0,0,112,0,0,0,0,8,0,0,48,0,0,0,0,9,0,0,192,0,0,0,80,7,0,0,10,0,0,0,0,8,0,0,96,0,0,0,0,8,0,0,32,0,0,0,0,9,0,0,160,0,0,0,0,8,0,0,0,0,0,0,0,8,0,0,128,0,0,0,0,8,0,0,64,0,0,0,0,9,0,0,224,0,0,0,80,7,0,0,6,0,0,0,0,8,0,0,88,0,0,0,0,8,0,0,24,0,0,0,0,9,0,0,144,0,0,0,83,7,0,0,59,0,0,0,0,8,0,0,120,0,0,0,0,8,0,0,56,0,0,0,0,9,0,0,208,0,0,0,81,7,0,0,17,0,0,0,0,8,0,0,104,0,0,0,0,8,0,0,40,0,0,0,0,9,0,0,176,0,0,0,0,8,0,0,8,0,0,0,0,8,0,0,136,0,0,0,0,8,0,0,72,0,0,0,0,9,0,0,240,0,0,0,80,7,0,0,4,0,0,0,0,8,0,0,84,0,0,0,0,8,0,0,20,0,0,0,85,8,0,0,227,0,0,0,83,7,0,0,43,0,0,0,0,8,0,0,116,0,0,0,0,8,0,0,52,0,0,0,0,9,0,0,200,0,0,0,81,7,0,0,13,0,0,0,0,8,0,0,100,0,0,0,0,8,0,0,36,0,0,0,0,9,0,0,168,0,0,0,0,8,0,0,4,0,0,0,0,8,0,0,132,0,0,0,0,8,0,0,68,0,0,0,0,9,0,0,232,0,0,0,80,7,0,0,8,0,0,0,0,8,0,0,92,0,0,0,0,8,0,0,28,0,0,0,0,9,0,0,152,0,0,0,84,7,0,0,83,0,0,0,0,8,0,0,124,0,0,0,0,8,0,0,60,0,0,0,0,9,0,0,216,0,0,0,82,7,0,0,23,0,0,0,0,8,0,0,108,0,0,0,0,8,0,0,44,0,0,0,0,9,0,0,184,0,0,0,0,8,0,0,12,0,0,0,0,8,0,0,140,0,0,0,0,8,0,0,76,0,0,0,0,9,0,0,248,0,0,0,80,7,0,0,3,0,0,0,0,8,0,0,82,0,0,0,0,8,0,0,18,0,0,0,85,8,0,0,163,0,0,0,83,7,0,0,35,0,0,0,0,8,0,0,114,0,0,0,0,8,0,0,50,0,0,0,0,9,0,0,196,0,0,0,81,7,0,0,11,0,0,0,0,8,0,0,98,0,0,0,0,8,0,0,34,0,0,0,0,9,0,0,164,0,0,0,0,8,0,0,2,0,0,0,0,8,0,0,130,0,0,0,0,8,0,0,66,0,0,0,0,9,0,0,228,0,0,0,80,7,0,0,7,0,0,0,0,8,0,0,90,0,0,0,0,8,0,0,26,0,0,0,0,9,0,0,148,0,0,0,84,7,0,0,67,0,0,0,0,8,0,0,122,0,0,0,0,8,0,0,58,0,0,0,0,9,0,0,212,0,0,0,82,7,0,0,19,0,0,0,0,8,0,0,106,0,0,0,0,8,0,0,42,0,0,0,0,9,0,0,180,0,0,0,0,8,0,0,10,0,0,0,0,8,0,0,138,0,0,0,0,8,0,0,74,0,0,0,0,9,0,0,244,0,0,0,80,7,0,0,5,0,0,0,0,8,0,0,86,0,0,0,0,8,0,0,22,0,0,0,192,8,0,0,0,0,0,0,83,7,0,0,51,0,0,0,0,8,0,0,118,0,0,0,0,8,0,0,54,0,0,0,0,9,0,0,204,0,0,0,81,7,0,0,15,0,0,0,0,8,0,0,102,0,0,0,0,8,0,0,38,0,0,0,0,9,0,0,172,0,0,0,0,8,0,0,6,0,0,0,0,8,0,0,134,0,0,0,0,8,0,0,70,0,0,0,0,9,0,0,236,0,0,0,80,7,0,0,9,0,0,0,0,8,0,0,94,0,0,0,0,8,0,0,30,0,0,0,0,9,0,0,156,0,0,0,84,7,0,0,99,0,0,0,0,8,0,0,126,0,0,0,0,8,0,0,62,0,0,0,0,9,0,0,220,0,0,0,82,7,0,0,27,0,0,0,0,8,0,0,110,0,0,0,0,8,0,0,46,0,0,0,0,9,0,0,188,0,0,0,0,8,0,0,14,0,0,0,0,8,0,0,142,0,0,0,0,8,0,0,78,0,0,0,0,9,0,0,252,0,0,0,96,7,0,0,0,1,0,0,0,8,0,0,81,0,0,0,0,8,0,0,17,0,0,0,85,8,0,0,131,0,0,0,82,7,0,0,31,0,0,0,0,8,0,0,113,0,0,0,0,8,0,0,49,0,0,0,0,9,0,0,194,0,0,0,80,7,0,0,10,0,0,0,0,8,0,0,97,0,0,0,0,8,0,0,33,0,0,0,0,9,0,0,162,0,0,0,0,8,0,0,1,0,0,0,0,8,0,0,129,0,0,0,0,8,0,0,65,0,0,0,0,9,0,0,226,0,0,0,80,7,0,0,6,0,0,0,0,8,0,0,89,0,0,0,0,8,0,0,25,0,0,0,0,9,0,0,146,0,0,0,83,7,0,0,59,0,0,0,0,8,0,0,121,0,0,0,0,8,0,0,57,0,0,0,0,9,0,0,210,0,0,0,81,7,0,0,17,0,0,0,0,8,0,0,105,0,0,0,0,8,0,0,41,0,0,0,0,9,0,0,178,0,0,0,0,8,0,0,9,0,0,0,0,8,0,0,137,0,0,0,0,8,0,0,73,0,0,0,0,9,0,0,242,0,0,0,80,7,0,0,4,0,0,0,0,8,0,0,85,0,0,0,0,8,0,0,21,0,0,0,80,8,0,0,2,1,0,0,83,7,0,0,43,0,0,0,0,8,0,0,117,0,0,0,0,8,0,0,53,0,0,0,0,9,0,0,202,0,0,0,81,7,0,0,13,0,0,0,0,8,0,0,101,0,0,0,0,8,0,0,37,0,0,0,0,9,0,0,170,0,0,0,0,8,0,0,5,0,0,0,0,8,0,0,133,0,0,0,0,8,0,0,69,0,0,0,0,9,0,0,234,0,0,0,80,7,0,0,8,0,0,0,0,8,0,0,93,0,0,0,0,8,0,0,29,0,0,0,0,9,0,0,154,0,0,0,84,7,0,0,83,0,0,0,0,8,0,0,125,0,0,0,0,8,0,0,61,0,0,0,0,9,0,0,218,0,0,0,82,7,0,0,23,0,0,0,0,8,0,0,109,0,0,0,0,8,0,0,45,0,0,0,0,9,0,0,186,0,0,0,0,8,0,0,13,0,0,0,0,8,0,0,141,0,0,0,0,8,0,0,77,0,0,0,0,9,0,0,250,0,0,0,80,7,0,0,3,0,0,0,0,8,0,0,83,0,0,0,0,8,0,0,19,0,0,0,85,8,0,0,195,0,0,0,83,7,0,0,35,0,0,0,0,8,0,0,115,0,0,0,0,8,0,0,51,0,0,0,0,9,0,0,198,0,0,0,81,7,0,0,11,0,0,0,0,8,0,0,99,0,0,0,0,8,0,0,35,0,0,0,0,9,0,0,166,0,0,0,0,8,0,0,3,0,0,0,0,8,0,0,131,0,0,0,0,8,0,0,67,0,0,0,0,9,0,0,230,0,0,0,80,7,0,0,7,0,0,0,0,8,0,0,91,0,0,0,0,8,0,0,27,0,0,0,0,9,0,0,150,0,0,0,84,7,0,0,67,0,0,0,0,8,0,0,123,0,0,0,0,8,0,0,59,0,0,0,0,9,0,0,214,0,0,0,82,7,0,0,19,0,0,0,0,8,0,0,107,0,0,0,0,8,0,0,43,0,0,0,0,9,0,0,182,0,0,0,0,8,0,0,11,0,0,0,0,8,0,0,139,0,0,0,0,8,0,0,75,0,0,0,0,9,0,0,246,0,0,0,80,7,0,0,5,0,0,0,0,8,0,0,87,0,0,0,0,8,0,0,23,0,0,0,192,8,0,0,0,0,0,0,83,7,0,0,51,0,0,0,0,8,0,0,119,0,0,0,0,8,0,0,55,0,0,0,0,9,0,0,206,0,0,0,81,7,0,0,15,0,0,0,0,8,0,0,103,0,0,0,0,8,0,0,39,0,0,0,0,9,0,0,174,0,0,0,0,8,0,0,7,0,0,0,0,8,0,0,135,0,0,0,0,8,0,0,71,0,0,0,0,9,0,0,238,0,0,0,80,7,0,0,9,0,0,0,0,8,0,0,95,0,0,0,0,8,0,0,31,0,0,0,0,9,0,0,158,0,0,0,84,7,0,0,99,0,0,0,0,8,0,0,127,0,0,0,0,8,0,0,63,0,0,0,0,9,0,0,222,0,0,0,82,7,0,0,27,0,0,0,0,8,0,0,111,0,0,0,0,8,0,0,47,0,0,0,0,9,0,0,190,0,0,0,0,8,0,0,15,0,0,0,0,8,0,0,143,0,0,0,0,8,0,0,79,0,0,0,0,9,0,0,254,0,0,0,96,7,0,0,0,1,0,0,0,8,0,0,80,0,0,0,0,8,0,0,16,0,0,0,84,8,0,0,115,0,0,0,82,7,0,0,31,0,0,0,0,8,0,0,112,0,0,0,0,8,0,0,48,0,0,0,0,9,0,0,193,0,0,0,80,7,0,0,10,0,0,0,0,8,0,0,96,0,0,0,0,8,0,0,32,0,0,0,0,9,0,0,161,0,0,0,0,8,0,0,0,0,0,0,0,8,0,0,128,0,0,0,0,8,0,0,64,0,0,0,0,9,0,0,225,0,0,0,80,7,0,0,6,0,0,0,0,8,0,0,88,0,0,0,0,8,0,0,24,0,0,0,0,9,0,0,145,0,0,0,83,7,0,0,59,0,0,0,0,8,0,0,120,0,0,0,0,8,0,0,56,0,0,0,0,9,0,0,209,0,0,0,81,7,0,0,17,0,0,0,0,8,0,0,104,0,0,0,0,8,0,0,40,0,0,0,0,9,0,0,177,0,0,0,0,8,0,0,8,0,0,0,0,8,0,0,136,0,0,0,0,8,0,0,72,0,0,0,0,9,0,0,241,0,0,0,80,7,0,0,4,0,0,0,0,8,0,0,84,0,0,0,0,8,0,0,20,0,0,0,85,8,0,0,227,0,0,0,83,7,0,0,43,0,0,0,0,8,0,0,116,0,0,0,0,8,0,0,52,0,0,0,0,9,0,0,201,0,0,0,81,7,0,0,13,0,0,0,0,8,0,0,100,0,0,0,0,8,0,0,36,0,0,0,0,9,0,0,169,0,0,0,0,8,0,0,4,0,0,0,0,8,0,0,132,0,0,0,0,8,0,0,68,0,0,0,0,9,0,0,233,0,0,0,80,7,0,0,8,0,0,0,0,8,0,0,92,0,0,0,0,8,0,0,28,0,0,0,0,9,0,0,153,0,0,0,84,7,0,0,83,0,0,0,0,8,0,0,124,0,0,0,0,8,0,0,60,0,0,0,0,9,0,0,217,0,0,0,82,7,0,0,23,0,0,0,0,8,0,0,108,0,0,0,0,8,0,0,44,0,0,0,0,9,0,0,185,0,0,0,0,8,0,0,12,0,0,0,0,8,0,0,140,0,0,0,0,8,0,0,76,0,0,0,0,9,0,0,249,0,0,0,80,7,0,0,3,0,0,0,0,8,0,0,82,0,0,0,0,8,0,0,18,0,0,0,85,8,0,0,163,0,0,0,83,7,0,0,35,0,0,0,0,8,0,0,114,0,0,0,0,8,0,0,50,0,0,0,0,9,0,0,197,0,0,0,81,7,0,0,11,0,0,0,0,8,0,0,98,0,0,0,0,8,0,0,34,0,0,0,0,9,0,0,165,0,0,0,0,8,0,0,2,0,0,0,0,8,0,0,130,0,0,0,0,8,0,0,66,0,0,0,0,9,0,0,229,0,0,0,80,7,0,0,7,0,0,0,0,8,0,0,90,0,0,0,0,8,0,0,26,0,0,0,0,9,0,0,149,0,0,0,84,7,0,0,67,0,0,0,0,8,0,0,122,0,0,0,0,8,0,0,58,0,0,0,0,9,0,0,213,0,0,0,82,7,0,0,19,0,0,0,0,8,0,0,106,0,0,0,0,8,0,0,42,0,0,0,0,9,0,0,181,0,0,0,0,8,0,0,10,0,0,0,0,8,0,0,138,0,0,0,0,8,0,0,74,0,0,0,0,9,0,0,245,0,0,0,80,7,0,0,5,0,0,0,0,8,0,0,86,0,0,0,0,8,0,0,22,0,0,0,192,8,0,0,0,0,0,0,83,7,0,0,51,0,0,0,0,8,0,0,118,0,0,0,0,8,0,0,54,0,0,0,0,9,0,0,205,0,0,0,81,7,0,0,15,0,0,0,0,8,0,0,102,0,0,0,0,8,0,0,38,0,0,0,0,9,0,0,173,0,0,0,0,8,0,0,6,0,0,0,0,8,0,0,134,0,0,0,0,8,0,0,70,0,0,0,0,9,0,0,237,0,0,0,80,7,0,0,9,0,0,0,0,8,0,0,94,0,0,0,0,8,0,0,30,0,0,0,0,9,0,0,157,0,0,0,84,7,0,0,99,0,0,0,0,8,0,0,126,0,0,0,0,8,0,0,62,0,0,0,0,9,0,0,221,0,0,0,82,7,0,0,27,0,0,0,0,8,0,0,110,0,0,0,0,8,0,0,46,0,0,0,0,9,0,0,189,0,0,0,0,8,0,0,14,0,0,0,0,8,0,0,142,0,0,0,0,8,0,0,78,0,0,0,0,9,0,0,253,0,0,0,96,7,0,0,0,1,0,0,0,8,0,0,81,0,0,0,0,8,0,0,17,0,0,0,85,8,0,0,131,0,0,0,82,7,0,0,31,0,0,0,0,8,0,0,113,0,0,0,0,8,0,0,49,0,0,0,0,9,0,0,195,0,0,0,80,7,0,0,10,0,0,0,0,8,0,0,97,0,0,0,0,8,0,0,33,0,0,0,0,9,0,0,163,0,0,0,0,8,0,0,1,0,0,0,0,8,0,0,129,0,0,0,0,8,0,0,65,0,0,0,0,9,0,0,227,0,0,0,80,7,0,0,6,0,0,0,0,8,0,0,89,0,0,0,0,8,0,0,25,0,0,0,0,9,0,0,147,0,0,0,83,7,0,0,59,0,0,0,0,8,0,0,121,0,0,0,0,8,0,0,57,0,0,0,0,9,0,0,211,0,0,0,81,7,0,0,17,0,0,0,0,8,0,0,105,0,0,0,0,8,0,0,41,0,0,0,0,9,0,0,179,0,0,0,0,8,0,0,9,0,0,0,0,8,0,0,137,0,0,0,0,8,0,0,73,0,0,0,0,9,0,0,243,0,0,0,80,7,0,0,4,0,0,0,0,8,0,0,85,0,0,0,0,8,0,0,21,0,0,0,80,8,0,0,2,1,0,0,83,7,0,0,43,0,0,0,0,8,0,0,117,0,0,0,0,8,0,0,53,0,0,0,0,9,0,0,203,0,0,0,81,7,0,0,13,0,0,0,0,8,0,0,101,0,0,0,0,8,0,0,37,0,0,0,0,9,0,0,171,0,0,0,0,8,0,0,5,0,0,0,0,8,0,0,133,0,0,0,0,8,0,0,69,0,0,0,0,9,0,0,235,0,0,0,80,7,0,0,8,0,0,0,0,8,0,0,93,0,0,0,0,8,0,0,29,0,0,0,0,9,0,0,155,0,0,0,84,7,0,0,83,0,0,0,0,8,0,0,125,0,0,0,0,8,0,0,61,0,0,0,0,9,0,0,219,0,0,0,82,7,0,0,23,0,0,0,0,8,0,0,109,0,0,0,0,8,0,0,45,0,0,0,0,9,0,0,187,0,0,0,0,8,0,0,13,0,0,0,0,8,0,0,141,0,0,0,0,8,0,0,77,0,0,0,0,9,0,0,251,0,0,0,80,7,0,0,3,0,0,0,0,8,0,0,83,0,0,0,0,8,0,0,19,0,0,0,85,8,0,0,195,0,0,0,83,7,0,0,35,0,0,0,0,8,0,0,115,0,0,0,0,8,0,0,51,0,0,0,0,9,0,0,199,0,0,0,81,7,0,0,11,0,0,0,0,8,0,0,99,0,0,0,0,8,0,0,35,0,0,0,0,9,0,0,167,0,0,0,0,8,0,0,3,0,0,0,0,8,0,0,131,0,0,0,0,8,0,0,67,0,0,0,0,9,0,0,231,0,0,0,80,7,0,0,7,0,0,0,0,8,0,0,91,0,0,0,0,8,0,0,27,0,0,0,0,9,0,0,151,0,0,0,84,7,0,0,67,0,0,0,0,8,0,0,123,0,0,0,0,8,0,0,59,0,0,0,0,9,0,0,215,0,0,0,82,7,0,0,19,0,0,0,0,8,0,0,107,0,0,0,0,8,0,0,43,0,0,0,0,9,0,0,183,0,0,0,0,8,0,0,11,0,0,0,0,8,0,0,139,0,0,0,0,8,0,0,75,0,0,0,0,9,0,0,247,0,0,0,80,7,0,0,5,0,0,0,0,8,0,0,87,0,0,0,0,8,0,0,23,0,0,0,192,8,0,0,0,0,0,0,83,7,0,0,51,0,0,0,0,8,0,0,119,0,0,0,0,8,0,0,55,0,0,0,0,9,0,0,207,0,0,0,81,7,0,0,15,0,0,0,0,8,0,0,103,0,0,0,0,8,0,0,39,0,0,0,0,9,0,0,175,0,0,0,0,8,0,0,7,0,0,0,0,8,0,0,135,0,0,0,0,8,0,0,71,0,0,0,0,9,0,0,239,0,0,0,80,7,0,0,9,0,0,0,0,8,0,0,95,0,0,0,0,8,0,0,31,0,0,0,0,9,0,0,159,0,0,0,84,7,0,0,99,0,0,0,0,8,0,0,127,0,0,0,0,8,0,0,63,0,0,0,0,9,0,0,223,0,0,0,82,7,0,0,27,0,0,0,0,8,0,0,111,0,0,0,0,8,0,0,47,0,0,0,0,9,0,0,191,0,0,0,0,8,0,0,15,0,0,0,0,8,0,0,143,0,0,0,0,8,0,0,79,0,0,0,0,9,0,0,255,0,0,0,24,0,0,0,39,0,0,0,50,0,0,0,40,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,99,102,0,0,0,0,0,1,2,0,0,28,0,0,0,24,71,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,72,1,0,0,44,0,0,0,160,0,0,0,15,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,0,0,0,44,0,0,0,49,48,54,52,54,0,0,0,56,56,53,57,0,0,0,0,49,0,0,0,0,0,0,0,70,65,77,73,76,89,95,78,65,77,69,0,0,0,0,0,65,86,69,82,65,71,69,95,87,73,68,84,72,0,0,0,80,79,73,78,84,95,83,73,90,69,0,0,0,0,0,0,80,73,88,69,76,95,83,73,90,69,0,0,0,0,0,0,82,69,83,79,76,85,84,73,79,78,95,88,0,0,0,0,82,69,83,79,76,85,84,73,79,78,95,89,0,0,0,0,83,76,65,78,84,0,0,0,79,98,108,105,113,117,101,0,87,69,73,71,72,84,95,78,65,77,69,0,0,0,0,0,83,69,84,87,73,68,84,72,95,78,65,77,69,0,0,0,65,68,68,95,83,84,89,76,69,95,78,65,77,69,0,0,4,0,12,0,13,2,0,0,13,2,2,0,13,2,4,0,13,2,6,0,13,2,8,0,13,2,10,0,0,0,0,0,4,0,12,0,15,2,0,0,15,2,2,0,15,2,4,0,15,2,6,0,15,2,8,0,15,2,10,0,0,0,0,0,4,0,5,0,8,1,0,0,8,1,1,0,8,1,2,0,8,1,3,0,8,1,4,0,0,0,0,0,0,0,0,0,4,0,20,0,8,1,0,0,8,1,1,0,8,1,2,0,8,1,3,0,8,1,4,0,8,1,5,0,8,1,6,0,25,1,0,0,17,4,8,0,17,4,12,0,17,4,16,0,0,0,0,0,0,0,0,0,4,0,20,0,8,1,0,0,8,1,1,0,8,1,2,0,8,1,3,0,8,1,4,0,8,1,5,0,8,1,6,0,25,1,0,0,19,4,8,0,19,4,12,0,19,4,16,0,0,0,0,0,0,0,0,0,4,0,9,0,17,4,0,0,8,1,4,0,17,4,8,0,0,0,0,0,0,0,0,0,4,0,9,0,19,4,0,0,8,1,4,0,19,4,8,0,0,0,0,0,0,0,0,0,4,0,8,0,18,4,0,0,18,4,4,0,0,0,0,0,4,0,16,0,18,4,0,0,18,4,4,0,18,4,8,0,18,4,12,0,0,0,0,0,144,70,1,0,120,73,0,0,48,99,1,0,128,73,0,0,0,0,0,0,0,0,0,0,13,0,0,0,14,0,0,0,80,67,70,0,0,0,0,0,24,0,0,0,45,0,0,0,52,0,0,0,46,0,0,0,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,9,0,0,0,15,0,0,0,0,0,0,0,112,102,114,0,0,0,0,0,1,1,0,0,28,0,0,0,192,73,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,184,1,0,0,44,0,0,0,196,0,0,0,17,0,0,0,53,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,54,0,0,0,10,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,16,0,0,0,2,0,0,0,17,0,0,0,3,0,0,0,18,0,0,0,4,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,4,0,58,0,16,4,0,0,12,4,4,0,12,4,8,0,12,4,12,0,12,4,16,0,12,4,20,0,12,4,24,0,20,4,28,0,20,4,32,0,12,4,36,0,20,4,40,0,20,4,44,0,12,4,48,0,20,4,52,0,20,4,56,0,8,4,60,0,8,4,64,0,8,4,68,0,8,4,72,0,8,4,76,0,20,4,80,0,20,4,84,0,20,4,88,0,12,4,92,0,8,4,96,0,8,4,100,0,12,4,104,0,0,0,0,0,0,0,0,0,224,74,0,0,176,73,0,0,48,99,1,0,240,74,0,0,0,0,0,0,0,0,0,0,112,102,114,45,109,101,116,114,105,99,115,0,0,0,0,0,80,70,82,0,0,0,0,0,20,0,0,0,55,0,0,0,12,0,0,0,56,0,0,0,1,0,0,0,57,0,0,0,58,0,0,0,59,0,0,0,19,0,0,0,49,0,0,0,18,0,0,0,21,0,0,0,13,0,0,0,14,0,0,0,2,0,0,0,19,0,0,0,20,0,0,0,0,0,0,0,3,0,0,0,60,0,0,0,50,0,0,0,3,0,0,0,22,0,0,0,20,0,0,0,23,0,0,0,61,0,0,0,1,0,0,0,62,0,0,0,24,0,0,0,0,0,0,0,14,0,0,0,63,0,0,0,21,0,0,0,0,0,0,0,32,0,0,0,51,0,0,0,64,0,0,0,52,0,0,0,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,54,0,0,0,64,0,0,0,52,0,0,0,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,55,0,0,0,65,0,0,0,56,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,58,0,0,0,66,0,0,0,59,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,75,0,0,168,75,0,0,208,75,0,0,248,75,0,0,248,74,0,0,8,75,0,0,64,75,0,0,96,75,0,0,2,0,0,0,32,76,0,0,112,75,0,0,0,0,0,0,0,0,0,0,12,0,0,0,232,91,1,0,0,0,2,0,0,0,2,0,48,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,116,97,114,116,70,111,110,116,77,101,116,114,105,99,115,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,56,78,0,0,72,78,0,0,88,78,0,0,104,78,0,0,72,90,1,0,56,90,1,0,32,90,1,0,240,116,5,0,112,78,0,0,120,78,0,0,128,78,0,0,144,78,0,0,160,78,0,0,176,78,0,0,192,78,0,0,208,78,0,0,224,78,0,0,232,78,0,0,248,78,0,0,8,79,0,0,24,79,0,0,40,79,0,0,56,79,0,0,72,79,0,0,88,79,0,0,0,95,1,0,176,95,1,0,112,95,1,0,240,94,1,0,96,79,0,0,112,79,0,0,128,79,0,0,144,79,0,0,24,95,1,0,160,79,0,0,168,79,0,0,176,79,0,0,184,79,0,0,80,112,5,0,192,79,0,0,208,79,0,0,224,79,0,0,232,94,1,0,232,79,0,0,240,79,0,0,0,80,0,0,24,80,0,0,40,80,0,0,120,76,0,0,56,80,0,0,72,80,0,0,88,80,0,0,104,80,0,0,120,80,0,0,144,89,1,0,152,89,1,0,136,80,0,0,56,95,1,0,80,95,1,0,152,80,0,0,160,80,0,0,248,48,5,0,168,80,0,0,176,80,0,0,184,80,0,0,192,80,0,0,200,80,0,0,208,80,0,0,216,80,0,0,224,80,0,0,232,80,0,0,16,95,1,0,88,90,1,0,240,80,0,0,65,115,99,101,110,100,101,114,0,0,0,0,0,0,0,0,65,120,105,115,76,97,98,101,108,0,0,0,0,0,0,0,65,120,105,115,84,121,112,101,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,67,67,0,0,0,0,0,0,67,72,0,0,0,0,0,0,67,97,112,72,101,105,103,104,116,0,0,0,0,0,0,0,67,104,97,114,87,105,100,116,104,0,0,0,0,0,0,0,67,104,97,114,97,99,116,101,114,83,101,116,0,0,0,0,67,104,97,114,97,99,116,101,114,115,0,0,0,0,0,0,68,101,115,99,101,110,100,101,114,0,0,0,0,0,0,0,69,110,99,111,100,105,110,103,83,99,104,101,109,101,0,0,69,110,100,65,120,105,115,0,69,110,100,67,104,97,114,77,101,116,114,105,99,115,0,0,69,110,100,67,111,109,112,111,115,105,116,101,115,0,0,0,69,110,100,68,105,114,101,99,116,105,111,110,0,0,0,0,69,110,100,70,111,110,116,77,101,116,114,105,99,115,0,0,69,110,100,75,101,114,110,68,97,116,97,0,0,0,0,0,69,110,100,75,101,114,110,80,97,105,114,115,0,0,0,0,69,110,100,84,114,97,99,107,75,101,114,110,0,0,0,0,69,115,99,67,104,97,114,0,73,115,66,97,115,101,70,111,110,116,0,0,0,0,0,0,73,115,67,73,68,70,111,110,116,0,0,0,0,0,0,0,73,115,70,105,120,101,100,80,105,116,99,104,0,0,0,0,73,115,70,105,120,101,100,86,0,0,0,0,0,0,0,0,75,80,0,0,0,0,0,0,75,80,72,0,0,0,0,0,75,80,88,0,0,0,0,0,75,80,89,0,0,0,0,0,77,97,112,112,105,110,103,83,99,104,101,109,101,0,0,0,77,101,116,114,105,99,115,83,101,116,115,0,0,0,0,0,78,0,0,0,0,0,0,0,80,67,67,0,0,0,0,0,83,116,97,114,116,65,120,105,115,0,0,0,0,0,0,0,83,116,97,114,116,67,104,97],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);allocate([114,77,101,116,114,105,99,115,0,0,0,0,0,0,0,0,83,116,97,114,116,67,111,109,112,111,115,105,116,101,115,0,83,116,97,114,116,68,105,114,101,99,116,105,111,110,0,0,83,116,97,114,116,75,101,114,110,68,97,116,97,0,0,0,83,116,97,114,116,75,101,114,110,80,97,105,114,115,0,0,83,116,97,114,116,75,101,114,110,80,97,105,114,115,48,0,83,116,97,114,116,75,101,114,110,80,97,105,114,115,49,0,83,116,97,114,116,84,114,97,99,107,75,101,114,110,0,0,84,114,97,99,107,75,101,114,110,0,0,0,0,0,0,0,86,86,0,0,0,0,0,0,86,86,101,99,116,111,114,0,87,0,0,0,0,0,0,0,87,48,0,0,0,0,0,0,87,48,88,0,0,0,0,0,87,48,89,0,0,0,0,0,87,49,0,0,0,0,0,0,87,49,88,0,0,0,0,0,87,49,89,0,0,0,0,0,87,88,0,0,0,0,0,0,87,89,0,0,0,0,0,0,88,72,101,105,103,104,116,0,0,0,0,0,0,0,0,0,2,0,0,0,5,0,0,0,4,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,6,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,2,0,0,0,6,0,0,0,2,0,0,0,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,168,0,0,0,16,82,1,0,0,0,1,0,0,0,2,0,104,81,0,0,25,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,112,115,110,97,109,101,115,0,26,0,0,0,1,0,0,0,61,0,0,0,62,0,0,0,27,0,0,0,28,0,0,0,88,26,0,0,0,82,0,0,0,0,0,0,12,0,0,0,160,81,0,0,0,0,1,0,0,0,2,0,168,81,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,208,91,1,0,168,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,229,0,230,0,0,0,231,0,232,0,233,0,234,0,235,0,236,0,237,0,238,0,13,0,14,0,15,0,99,0,239,0,240,0,241,0,242,0,243,0,244,0,245,0,246,0,247,0,248,0,27,0,28,0,249,0,250,0,251,0,252,0,0,0,253,0,254,0,255,0,0,1,1,1,0,0,0,0,0,0,2,1,0,0,0,0,3,1,4,1,5,1,6,1,0,0,0,0,7,1,8,1,9,1,0,0,10,1,109,0,110,0,11,1,12,1,13,1,0,0,14,1,15,1,16,1,17,1,18,1,19,1,20,1,21,1,22,1,23,1,24,1,25,1,26,1,27,1,28,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38,1,39,1,40,1,41,1,42,1,43,1,44,1,45,1,46,1,47,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,1,49,1,50,1,0,0,0,0,51,1,52,1,53,1,54,1,55,1,0,0,56,1,0,0,0,0,57,1,0,0,0,0,58,1,59,1,0,0,0,0,60,1,61,1,62,1,0,0,0,0,0,0,158,0,155,0,163,0,63,1,64,1,65,1,66,1,67,1,68,1,69,1,0,0,0,0,70,1,150,0,164,0,169,0,71,1,72,1,73,1,74,1,75,1,76,1,77,1,78,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86,1,87,1,88,1,89,1,90,1,91,1,92,1,93,1,94,1,95,1,96,1,97,1,98,1,99,1,100,1,101,1,102,1,103,1,104,1,105,1,106,1,107,1,108,1,109,1,110,1,111,1,112,1,113,1,114,1,115,1,116,1,117,1,118,1,119,1,120,1,121,1,122,1,46,110,117,108,108,0,110,111,110,109,97,114,107,105,110,103,114,101,116,117,114,110,0,110,111,116,101,113,117,97,108,0,105,110,102,105,110,105,116,121,0,108,101,115,115,101,113,117,97,108,0,103,114,101,97,116,101,114,101,113,117,97,108,0,112,97,114,116,105,97,108,100,105,102,102,0,115,117,109,109,97,116,105,111,110,0,112,114,111,100,117,99,116,0,112,105,0,105,110,116,101,103,114,97,108,0,79,109,101,103,97,0,114,97,100,105,99,97,108,0,97,112,112,114,111,120,101,113,117,97,108,0,68,101,108,116,97,0,110,111,110,98,114,101,97,107,105,110,103,115,112,97,99,101,0,108,111,122,101,110,103,101,0,97,112,112,108,101,0,102,114,97,110,99,0,71,98,114,101,118,101,0,103,98,114,101,118,101,0,73,100,111,116,97,99,99,101,110,116,0,83,99,101,100,105,108,108,97,0,115,99,101,100,105,108,108,97,0,67,97,99,117,116,101,0,99,97,99,117,116,101,0,67,99,97,114,111,110,0,99,99,97,114,111,110,0,100,99,114,111,97,116,0,46,110,111,116,100,101,102,0,115,112,97,99,101,0,101,120,99,108,97,109,0,113,117,111,116,101,100,98,108,0,110,117,109,98,101,114,115,105,103,110,0,100,111,108,108,97,114,0,112,101,114,99,101,110,116,0,97,109,112,101,114,115,97,110,100,0,113,117,111,116,101,114,105,103,104,116,0,112,97,114,101,110,108,101,102,116,0,112,97,114,101,110,114,105,103,104,116,0,97,115,116,101,114,105,115,107,0,112,108,117,115,0,99,111,109,109,97,0,104,121,112,104,101,110,0,112,101,114,105,111,100,0,115,108,97,115,104,0,122,101,114,111,0,111,110,101,0,116,119,111,0,116,104,114,101,101,0,102,111,117,114,0,102,105,118,101,0,115,105,120,0,115,101,118,101,110,0,101,105,103,104,116,0,110,105,110,101,0,99,111,108,111,110,0,115,101,109,105,99,111,108,111,110,0,108,101,115,115,0,101,113,117,97,108,0,103,114,101,97,116,101,114,0,113,117,101,115,116,105,111,110,0,97,116,0,65,0,66,0,67,0,68,0,69,0,70,0,71,0,72,0,73,0,74,0,75,0,76,0,77,0,78,0,79,0,80,0,81,0,82,0,83,0,84,0,85,0,86,0,87,0,88,0,89,0,90,0,98,114,97,99,107,101,116,108,101,102,116,0,98,97,99,107,115,108,97,115,104,0,98,114,97,99,107,101,116,114,105,103,104,116,0,97,115,99,105,105,99,105,114,99,117,109,0,117,110,100,101,114,115,99,111,114,101,0,113,117,111,116,101,108,101,102,116,0,97,0,98,0,99,0,100,0,101,0,102,0,103,0,104,0,105,0,106,0,107,0,108,0,109,0,110,0,111,0,112,0,113,0,114,0,115,0,116,0,117,0,118,0,119,0,120,0,121,0,122,0,98,114,97,99,101,108,101,102,116,0,98,97,114,0,98,114,97,99,101,114,105,103,104,116,0,97,115,99,105,105,116,105,108,100,101,0,101,120,99,108,97,109,100,111,119,110,0,99,101,110,116,0,115,116,101,114,108,105,110,103,0,102,114,97,99,116,105,111,110,0,121,101,110,0,102,108,111,114,105,110,0,115,101,99,116,105,111,110,0,99,117,114,114,101,110,99,121,0,113,117,111,116,101,115,105,110,103,108,101,0,113,117,111,116,101,100,98,108,108,101,102,116,0,103,117,105,108,108,101,109,111,116,108,101,102,116,0,103,117,105,108,115,105,110,103,108,108,101,102,116,0,103,117,105,108,115,105,110,103,108,114,105,103,104,116,0,102,105,0,102,108,0,101,110,100,97,115,104,0,100,97,103,103,101,114,0,100,97,103,103,101,114,100,98,108,0,112,101,114,105,111,100,99,101,110,116,101,114,101,100,0,112,97,114,97,103,114,97,112,104,0,98,117,108,108,101,116,0,113,117,111,116,101,115,105,110,103,108,98,97,115,101,0,113,117,111,116,101,100,98,108,98,97,115,101,0,113,117,111,116,101,100,98,108,114,105,103,104,116,0,103,117,105,108,108,101,109,111,116,114,105,103,104,116,0,101,108,108,105,112,115,105,115,0,112,101,114,116,104,111,117,115,97,110,100,0,113,117,101,115,116,105,111,110,100,111,119,110,0,103,114,97,118,101,0,97,99,117,116,101,0,99,105,114,99,117,109,102,108,101,120,0,116,105,108,100,101,0,109,97,99,114,111,110,0,98,114,101,118,101,0,100,111,116,97,99,99,101,110,116,0,100,105,101,114,101,115,105,115,0,114,105,110,103,0,99,101,100,105,108,108,97,0,104,117,110,103,97,114,117,109,108,97,117,116,0,111,103,111,110,101,107,0,99,97,114,111,110,0,101,109,100,97,115,104,0,65,69,0,111,114,100,102,101,109,105,110,105,110,101,0,76,115,108,97,115,104,0,79,115,108,97,115,104,0,79,69,0,111,114,100,109,97,115,99,117,108,105,110,101,0,97,101,0,100,111,116,108,101,115,115,105,0,108,115,108,97,115,104,0,111,115,108,97,115,104,0,111,101,0,103,101,114,109,97,110,100,98,108,115,0,111,110,101,115,117,112,101,114,105,111,114,0,108,111,103,105,99,97,108,110,111,116,0,109,117,0,116,114,97,100,101,109,97,114,107,0,69,116,104,0,111,110,101,104,97,108,102,0,112,108,117,115,109,105,110,117,115,0,84,104,111,114,110,0,111,110,101,113,117,97,114,116,101,114,0,100,105,118,105,100,101,0,98,114,111,107,101,110,98,97,114,0,100,101,103,114,101,101,0,116,104,111,114,110,0,116,104,114,101,101,113,117,97,114,116,101,114,115,0,116,119,111,115,117,112,101,114,105,111,114,0,114,101,103,105,115,116,101,114,101,100,0,109,105,110,117,115,0,101,116,104,0,109,117,108,116,105,112,108,121,0,116,104,114,101,101,115,117,112,101,114,105,111,114,0,99,111,112,121,114,105,103,104,116,0,65,97,99,117,116,101,0,65,99,105,114,99,117,109,102,108,101,120,0,65,100,105,101,114,101,115,105,115,0,65,103,114,97,118,101,0,65,114,105,110,103,0,65,116,105,108,100,101,0,67,99,101,100,105,108,108,97,0,69,97,99,117,116,101,0,69,99,105,114,99,117,109,102,108,101,120,0,69,100,105,101,114,101,115,105,115,0,69,103,114,97,118,101,0,73,97,99,117,116,101,0,73,99,105,114,99,117,109,102,108,101,120,0,73,100,105,101,114,101,115,105,115,0,73,103,114,97,118,101,0,78,116,105,108,100,101,0,79,97,99,117,116,101,0,79,99,105,114,99,117,109,102,108,101,120,0,79,100,105,101,114,101,115,105,115,0,79,103,114,97,118,101,0,79,116,105,108,100,101,0,83,99,97,114,111,110,0,85,97,99,117,116,101,0,85,99,105,114,99,117,109,102,108,101,120,0,85,100,105,101,114,101,115,105,115,0,85,103,114,97,118,101,0,89,97,99,117,116,101,0,89,100,105,101,114,101,115,105,115,0,90,99,97,114,111,110,0,97,97,99,117,116,101,0,97,99,105,114,99,117,109,102,108,101,120,0,97,100,105,101,114,101,115,105,115,0,97,103,114,97,118,101,0,97,114,105,110,103,0,97,116,105,108,100,101,0,99,99,101,100,105,108,108,97,0,101,97,99,117,116,101,0,101,99,105,114,99,117,109,102,108,101,120,0,101,100,105,101,114,101,115,105,115,0,101,103,114,97,118,101,0,105,97,99,117,116,101,0,105,99,105,114,99,117,109,102,108,101,120,0,105,100,105,101,114,101,115,105,115,0,105,103,114,97,118,101,0,110,116,105,108,100,101,0,111,97,99,117,116,101,0,111,99,105,114,99,117,109,102,108,101,120,0,111,100,105,101,114,101,115,105,115,0,111,103,114,97,118,101,0,111,116,105,108,100,101,0,115,99,97,114,111,110,0,117,97,99,117,116,101,0,117,99,105,114,99,117,109,102,108,101,120,0,117,100,105,101,114,101,115,105,115,0,117,103,114,97,118,101,0,121,97,99,117,116,101,0,121,100,105,101,114,101,115,105,115,0,122,99,97,114,111,110,0,101,120,99,108,97,109,115,109,97,108,108,0,72,117,110,103,97,114,117,109,108,97,117,116,115,109,97,108,108,0,100,111,108,108,97,114,111,108,100,115,116,121,108,101,0,100,111,108,108,97,114,115,117,112,101,114,105,111,114,0,97,109,112,101,114,115,97,110,100,115,109,97,108,108,0,65,99,117,116,101,115,109,97,108,108,0,112,97,114,101,110,108,101,102,116,115,117,112,101,114,105,111,114,0,112,97,114,101,110,114,105,103,104,116,115,117,112,101,114,105,111,114,0,116,119,111,100,111,116,101,110,108,101,97,100,101,114,0,111,110,101,100,111,116,101,110,108,101,97,100,101,114,0,122,101,114,111,111,108,100,115,116,121,108,101,0,111,110,101,111,108,100,115,116,121,108,101,0,116,119,111,111,108,100,115,116,121,108,101,0,116,104,114,101,101,111,108,100,115,116,121,108,101,0,102,111,117,114,111,108,100,115,116,121,108,101,0,102,105,118,101,111,108,100,115,116,121,108,101,0,115,105,120,111,108,100,115,116,121,108,101,0,115,101,118,101,110,111,108,100,115,116,121,108,101,0,101,105,103,104,116,111,108,100,115,116,121,108,101,0,110,105,110,101,111,108,100,115,116,121,108,101,0,99,111,109,109,97,115,117,112,101,114,105,111,114,0,116,104,114,101,101,113,117,97,114,116,101,114,115,101,109,100,97,115,104,0,112,101,114,105,111,100,115,117,112,101,114,105,111,114,0,113,117,101,115,116,105,111,110,115,109,97,108,108,0,97,115,117,112,101,114,105,111,114,0,98,115,117,112,101,114,105,111,114,0,99,101,110,116,115,117,112,101,114,105,111,114,0,100,115,117,112,101,114,105,111,114,0,101,115,117,112,101,114,105,111,114,0,105,115,117,112,101,114,105,111,114,0,108,115,117,112,101,114,105,111,114,0,109,115,117,112,101,114,105,111,114,0,110,115,117,112,101,114,105,111,114,0,111,115,117,112,101,114,105,111,114,0,114,115,117,112,101,114,105,111,114,0,115,115,117,112,101,114,105,111,114,0,116,115,117,112,101,114,105,111,114,0,102,102,0,102,102,105,0,102,102,108,0,112,97,114,101,110,108,101,102,116,105,110,102,101,114,105,111,114,0,112,97,114,101,110,114,105,103,104,116,105,110,102,101,114,105,111,114,0,67,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,104,121,112,104,101,110,115,117,112,101,114,105,111,114,0,71,114,97,118,101,115,109,97,108,108,0,65,115,109,97,108,108,0,66,115,109,97,108,108,0,67,115,109,97,108,108,0,68,115,109,97,108,108,0,69,115,109,97,108,108,0,70,115,109,97,108,108,0,71,115,109,97,108,108,0,72,115,109,97,108,108,0,73,115,109,97,108,108,0,74,115,109,97,108,108,0,75,115,109,97,108,108,0,76,115,109,97,108,108,0,77,115,109,97,108,108,0,78,115,109,97,108,108,0,79,115,109,97,108,108,0,80,115,109,97,108,108,0,81,115,109,97,108,108,0,82,115,109,97,108,108,0,83,115,109,97,108,108,0,84,115,109,97,108,108,0,85,115,109,97,108,108,0,86,115,109,97,108,108,0,87,115,109,97,108,108,0,88,115,109,97,108,108,0,89,115,109,97,108,108,0,90,115,109,97,108,108,0,99,111,108,111,110,109,111,110,101,116,97,114,121,0,111,110,101,102,105,116,116,101,100,0,114,117,112,105,97,104,0,84,105,108,100,101,115,109,97,108,108,0,101,120,99,108,97,109,100,111,119,110,115,109,97,108,108,0,99,101,110,116,111,108,100,115,116,121,108,101,0,76,115,108,97,115,104,115,109,97,108,108,0,83,99,97,114,111,110,115,109,97,108,108,0,90,99,97,114,111,110,115,109,97,108,108,0,68,105,101,114,101,115,105,115,115,109,97,108,108,0,66,114,101,118,101,115,109,97,108,108,0,67,97,114,111,110,115,109,97,108,108,0,68,111,116,97,99,99,101,110,116,115,109,97,108,108,0,77,97,99,114,111,110,115,109,97,108,108,0,102,105,103,117,114,101,100,97,115,104,0,104,121,112,104,101,110,105,110,102,101,114,105,111,114,0,79,103,111,110,101,107,115,109,97,108,108,0,82,105,110,103,115,109,97,108,108,0,67,101,100,105,108,108,97,115,109,97,108,108,0,113,117,101,115,116,105,111,110,100,111,119,110,115,109,97,108,108,0,111,110,101,101,105,103,104,116,104,0,116,104,114,101,101,101,105,103,104,116,104,115,0,102,105,118,101,101,105,103,104,116,104,115,0,115,101,118,101,110,101,105,103,104,116,104,115,0,111,110,101,116,104,105,114,100,0,116,119,111,116,104,105,114,100,115,0,122,101,114,111,115,117,112,101,114,105,111,114,0,102,111,117,114,115,117,112,101,114,105,111,114,0,102,105,118,101,115,117,112,101,114,105,111,114,0,115,105,120,115,117,112,101,114,105,111,114,0,115,101,118,101,110,115,117,112,101,114,105,111,114,0,101,105,103,104,116,115,117,112,101,114,105,111,114,0,110,105,110,101,115,117,112,101,114,105,111,114,0,122,101,114,111,105,110,102,101,114,105,111,114,0,111,110,101,105,110,102,101,114,105,111,114,0,116,119,111,105,110,102,101,114,105,111,114,0,116,104,114,101,101,105,110,102,101,114,105,111,114,0,102,111,117,114,105,110,102,101,114,105,111,114,0,102,105,118,101,105,110,102,101,114,105,111,114,0,115,105,120,105,110,102,101,114,105,111,114,0,115,101,118,101,110,105,110,102,101,114,105,111,114,0,101,105,103,104,116,105,110,102,101,114,105,111,114,0,110,105,110,101,105,110,102,101,114,105,111,114,0,99,101,110,116,105,110,102,101,114,105,111,114,0,100,111,108,108,97,114,105,110,102,101,114,105,111,114,0,112,101,114,105,111,100,105,110,102,101,114,105,111,114,0,99,111,109,109,97,105,110,102,101,114,105,111,114,0,65,103,114,97,118,101,115,109,97,108,108,0,65,97,99,117,116,101,115,109,97,108,108,0,65,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,65,116,105,108,100,101,115,109,97,108,108,0,65,100,105,101,114,101,115,105,115,115,109,97,108,108,0,65,114,105,110,103,115,109,97,108,108,0,65,69,115,109,97,108,108,0,67,99,101,100,105,108,108,97,115,109,97,108,108,0,69,103,114,97,118,101,115,109,97,108,108,0,69,97,99,117,116,101,115,109,97,108,108,0,69,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,69,100,105,101,114,101,115,105,115,115,109,97,108,108,0,73,103,114,97,118,101,115,109,97,108,108,0,73,97,99,117,116,101,115,109,97,108,108,0,73,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,73,100,105,101,114,101,115,105,115,115,109,97,108,108,0,69,116,104,115,109,97,108,108,0,78,116,105,108,100,101,115,109,97,108,108,0,79,103,114,97,118,101,115,109,97,108,108,0,79,97,99,117,116,101,115,109,97,108,108,0,79,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,79,116,105,108,100,101,115,109,97,108,108,0,79,100,105,101,114,101,115,105,115,115,109,97,108,108,0,79,69,115,109,97,108,108,0,79,115,108,97,115,104,115,109,97,108,108,0,85,103,114,97,118,101,115,109,97,108,108,0,85,97,99,117,116,101,115,109,97,108,108,0,85,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,85,100,105,101,114,101,115,105,115,115,109,97,108,108,0,89,97,99,117,116,101,115,109,97,108,108,0,84,104,111,114,110,115,109,97,108,108,0,89,100,105,101,114,101,115,105,115,115,109,97,108,108,0,48,48,49,46,48,48,48,0,48,48,49,46,48,48,49,0,48,48,49,46,48,48,50,0,48,48,49,46,48,48,51,0,66,108,97,99,107,0,66,111,108,100,0,66,111,111,107,0,76,105,103,104,116,0,77,101,100,105,117,109,0,82,101,103,117,108,97,114,0,82,111,109,97,110,0,83,101,109,105,98,111,108,100,0,253,0,5,1,11,1,18,1,27,1,38,1,45,1,53,1,63,1,74,1,84,1,95,1,104,1,109,1,115,1,122,1,129,1,135,1,140,1,144,1,148,1,154,1,159,1,164,1,168,1,174,1,180,1,185,1,191,1,201,1,206,1,212,1,220,1,229,1,232,1,234,1,236,1,238,1,240,1,242,1,244,1,246,1,248,1,250,1,252,1,254,1,0,2,2,2,4,2,6,2,8,2,10,2,12,2,14,2,16,2,18,2,20,2,22,2,24,2,26,2,28,2,40,2,50,2,63,2,75,2,86,2,96,2,98,2,100,2,102,2,104,2,106,2,108,2,110,2,112,2,114,2,116,2,118,2,120,2,122,2,124,2,126,2,128,2,130,2,132,2,134,2,136,2,138,2,140,2,142,2,144,2,146,2,148,2,158,2,162,2,173,2,184,2,195,2,200,2,209,2,218,2,222,2,229,2,237,2,246,2,2,3,15,3,29,3,43,3,58,3,61,3,64,3,71,3,78,3,88,3,103,3,113,3,120,3,135,3,148,3,162,3,177,3,186,3,198,3,211,3,217,3,223,3,234,3,240,3,247,3,253,3,7,4,16,4,21,4,29,4,42,4,49,4,55,4,62,4,65,4,77,4,84,4,91,4,94,4,107,4,110,4,119,4,126,4,133,4,136,4,147,4,159,4,170,4,173,4,183,4,187,4,195,4,205,4,211,4,222,4,229,4,239,4,246,4,252,4,10,5,22,5,33,5,39,5,43,5,52,5,66,5,76,5,83,5,95,5,105,5,112,5,118,5,125,5,134,5,141,5,153,5,163,5,170,5,177,5,189,5,199,5,206,5,213,5,220,5,232,5,242,5,249,5,0,6,7,6,14,6,26,6,36,6,43,6,50,6,60,6,67,6,74,6,86,6,96,6,103,6,109,6,116,6,125,6,132,6,144,6,154,6,161,6,168,6,180,6,190,6,197,6,204,6,211,6,223,6,233,6,240,6,247,6,254,6,5,7,17,7,27,7,34,7,41,7,51,7,58,7,70,7,88,7,103,7,118,7,133,7,144,7,162,7,181,7,196,7,211,7,224,7,236,7,248,7,6,8,19,8,32,8,44,8,58,8,72,8,85,8,99,8,119,8,134,8,148,8,158,8,168,8,181,8,191,8,201,8,211,8,221,8,231,8,241,8,251,8,5,9,15,9,25,9,28,9,32,9,36,9,54,9,73,9,89,9,104,9,115,9,122,9,129,9,136,9,143,9,150,9,157,9,164,9,171,9,178,9,185,9,192,9,199,9,206,9,213,9,220,9,227,9,234,9,241,9,248,9,255,9,6,10,13,10,20,10,27,10,34,10,41,10,55,10,65,10,72,10,83,10,99,10,112,10,124,10,136,10,148,10,162,10,173,10,184,10,199,10,211,10,222,10,237,10,249,10,3,11,16,11,34,11,44,11,57,11,69,11,82,11,91,11,101,11,114,11,127,11,140,11,152,11,166,11,180,11,193,11,206,11,218,11,230,11,244,11,1,12,14,12,26,12,40,12,54,12,67,12,80,12,95,12,110,12,124,12,136,12,148,12,165,12,177,12,192,12,203,12,211,12,225,12,237,12,249,12,10,13,25,13,37,13,49,13,66,13,81,13,90,13,102,13,114,13,126,13,143,13,155,13,170,13,178,13,190,13,202,13,214,13,231,13,246,13,2,14,13,14,28,14,36,14,44,14,52,14,60,14,66,14,71,14,76,14,82,14,89,14,97,14,103,14,0,0,253,0,0,0,6,0,5,1,11,1,18,1,27,1,38,1,45,1,53,1,246,2,74,1,84,1,95,1,104,1,109,1,115,1,122,1,129,1,135,1,140,1,144,1,148,1,154,1,159,1,164,1,168,1,174,1,180,1,185,1,191,1,201,1,206,1,212,1,220,1,229,1,232,1,234,1,236,1,238,1,240,1,242,1,244,1,246,1,248,1,250,1,252,1,254,1,0,2,2,2,4,2,6,2,8,2,10,2,12,2,14,2,16,2,18,2,20,2,22,2,24,2,26,2,28,2,40,2,50,2,63,2,75,2,211,3,96,2,98,2,100,2,102,2,104,2,106,2,108,2,110,2,112,2,114,2,116,2,118,2,120,2,122,2,124,2,126,2,128,2,130,2,132,2,134,2,136,2,138,2,140,2,142,2,144,2,146,2,148,2,158,2,162,2,173,2,95,5,112,5,125,5,134,5,206,5,232,5,26,6,67,6,96,6,74,6,86,6,109,6,103,6,116,6,125,6,154,6,132,6,144,6,161,6,190,6,168,6,180,6,197,6,204,6,233,6,211,6,223,6,240,6,254,6,27,7,5,7,17,7,71,3,239,4,195,2,200,2,229,2,113,3,103,3,136,4,22,5,66,5,173,4,217,3,7,4,23,0,62,4,84,4,32,0,195,4,41,0,51,0,218,2,170,4,64,0,76,0,86,0,94,0,97,0,65,4,94,4,106,0,107,4,126,4,198,3,184,2,159,4,112,0,222,2,120,0,132,0,15,3,162,3,177,3,138,0,105,5,118,5,249,5,91,4,133,4,64,3,55,4,2,3,148,3,86,2,63,1,222,4,155,0,41,7,50,6,209,2,237,2,29,3,43,3,58,3,61,3,78,3,88,3,120,3,135,3,186,3,83,5,141,5,76,5,153,5,163,5,170,5,177,5,189,5,199,5,213,5,220,5,163,0,242,5,7,6,14,6,36,6,110,4,223,3,234,3,240,3,247,3,253,3,16,4,21,4,29,4,42,4,49,4,77,4,119,4,0,6,247,6,60,6,51,7,229,4,183,4,39,5,43,6,34,7,205,4,246,4,33,5,43,5,147,4,10,5,52,5,187,4,211,4,252,4,169,0,175,0,182,0,189,0,200,0,209,0,218,0,225,0,232,0,239,0,246,0,0,0,0,0,148,3,0,0,169,3,0,0,21,34,0,0,173,0,0,0,201,2,0,0,188,3,0,0,25,34,0,0,160,0,0,0,26,2,0,0,27,2,0,0,68,101,108,116,97,0,79,109,101,103,97,0,102,114,97,99,116,105,111,110,0,104,121,112,104,101,110,0,109,97,99,114,111,110,0,109,117,0,112,101,114,105,111,100,99,101,110,116,101,114,101,100,0,115,112,97,99,101,0,84,99,111,109,109,97,97,99,99,101,110,116,0,116,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,0,0,0,0,6,0,0,0,12,0,0,0,21,0,0,0,28,0,0,0,35,0,0,0,38,0,0,0,53,0,0,0,59,0,0,0,72,0,0,0,0,52,0,106,2,167,3,63,4,220,6,125,9,143,10,23,11,137,12,199,14,246,15,87,16,233,17,219,18,104,19,88,22,110,23,32,23,71,24,77,27,156,29,73,31,247,32,107,32,222,33,55,34,154,35,218,58,10,64,122,72,188,80,109,88,104,93,61,98,168,106,91,114,111,115,237,122,180,127,255,135,164,143,132,149,213,158,108,161,115,168,175,183,147,197,199,202,25,204,166,208,209,209,81,215,26,65,143,0,65,0,140,0,175,0,193,1,15,1,147,1,233,1,251,2,7,2,40,2,57,2,82,2,91,2,128,2,136,2,154,69,131,0,198,0,150,0,158,0,167,225,227,245,244,101,128,1,252,237,225,227,242,239,110,128,1,226,243,237,225,236,108,128,247,230,225,227,245,244,101,129,0,193,0,185,243,237,225,236,108,128,247,225,226,242,229,246,101,134,1,2,0,213,0,221,0,232,0,243,0,251,1,7,225,227,245,244,101,128,30,174,227,249,242,233,236,236,233,99,128,4,208,228,239,244,226,229,236,239,119,128,30,182,231,242,225,246,101,128,30,176,232,239,239,235,225,226,239,246,101,128,30,178,244,233,236,228,101,128,30,180,99,4,1,25,1,32,1,121,1,137,225,242,239,110,128,1,205,233,242,99,2,1,40,1,45,236,101,128,36,182,245,237,230,236,229,120,134,0,194,1,66,1,74,1,85,1,93,1,105,1,113,225,227,245,244,101,128,30,164,228,239,244,226,229,236,239,119,128,30,172,231,242,225,246,101,128,30,166,232,239,239,235,225,226,239,246,101,128,30,168,243,237,225,236,108,128,247,226,244,233,236,228,101,128,30,170,245,244,101,129,246,201,1,129,243,237,225,236,108,128,247,180,249,242,233,236,236,233,99,128,4,16,100,3,1,155,1,165,1,209,226,236,231,242,225,246,101,128,2,0,233,229,242,229,243,233,115,131,0,196,1,181,1,192,1,201,227,249,242,233,236,236,233,99,128,4,210,237,225,227,242,239,110,128,1,222,243,237,225,236,108,128,247,228,239,116,2,1,216,1,224,226,229,236,239,119,128,30,160,237,225,227,242,239,110,128,1,224,231,242,225,246,101,129,0,192,1,243,243,237,225,236,108,128,247,224,232,239,239,235,225,226,239,246,101,128,30,162,105,2,2,13,2,25,229,227,249,242,233,236,236,233,99,128,4,212,238,246,229,242,244,229,228,226,242,229,246,101,128,2,2,236,240,232,97,129,3,145,2,49,244,239,238,239,115,128,3,134,109,2,2,63,2,71,225,227,242,239,110,128,1,0,239,238,239,243,240,225,227,101,128,255,33,239,231,239,238,229,107,128,1,4,242,233,238,103,131,0,197,2,104,2,112,2,120,225,227,245,244,101,128,1,250,226,229,236,239,119,128,30,0,243,237,225,236,108,128,247,229,243,237,225,236,108,128,247,97,244,233,236,228,101,129,0,195,2,146,243,237,225,236,108,128,247,227,249,226,225,242,237,229,238,233,225,110,128,5,49,66,137,0,66,2,189,2,198,2,223,3,3,3,10,3,22,3,34,3,46,3,54,227,233,242,227,236,101,128,36,183,228,239,116,2,2,206,2,215,225,227,227,229,238,116,128,30,2,226,229,236,239,119,128,30,4,101,3,2,231,2,242,2,254,227,249,242,233,236,236,233,99,128,4,17,238,225,242,237,229,238,233,225,110,128,5,50,244,97,128,3,146,232,239,239,107,128,1,129,236,233,238,229,226,229,236,239,119,128,30,6,237,239,238,239,243,240,225,227,101,128,255,34,242,229,246,229,243,237,225,236,108,128,246,244,243,237,225,236,108,128,247,98,244,239,240,226,225,114,128,1,130,67,137,0,67,3,85,3,127,3,193,3,210,3,224,4,171,4,188,4,200,4,212,97,3,3,93,3,104,3,111,225,242,237,229,238,233,225,110,128,5,62,227,245,244,101,128,1,6,242,239,110,129,246,202,3,119,243,237,225,236,108,128,246,245,99,3,3,135,3,142,3,171,225,242,239,110,128,1,12,229,228,233,236,236,97,130,0,199,3,155,3,163,225,227,245,244,101,128,30,8,243,237,225,236,108,128,247,231,233,242,99,2,3,179,3,184,236,101,128,36,184,245,237,230,236,229,120,128,1,8,228,239,116,129,1,10,3,201,225,227,227,229,238,116,128,1,10,229,228,233,236,236,225,243,237,225,236,108,128,247,184,104,4,3,234,3,246,4,161,4,165,225,225,242,237,229,238,233,225,110,128,5,73,101,6,4,4,4,24,4,35,4,103,4,115,4,136,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,188,227,249,242,233,236,236,233,99,128,4,39,100,2,4,41,4,85,229,243,227,229,238,228,229,114,2,4,54,4,74,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,190,227,249,242,233,236,236,233,99,128,4,182,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,244,232,225,242,237,229,238,233,225,110,128,5,67,235,232,225,235,225,243,243,233,225,238,227,249,242,233,236,236,233,99,128,4,203,246,229,242,244,233,227,225,236,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,184,105,128,3,167,239,239,107,128,1,135,233,242,227,245,237,230,236,229,248,243,237,225,236,108,128,246,246,237,239,238,239,243,240,225,227,101,128,255,35,239,225,242,237,229,238,233,225,110,128,5,81,243,237,225,236,108,128,247,99,68,142,0,68,4,252,5,10,5,36,5,96,5,121,5,166,5,173,5,231,5,244,6,0,6,12,6,28,6,48,6,57,90,129,1,241,5,2,227,225,242,239,110,128,1,196,97,2,5,16,5,27,225,242,237,229,238,233,225,110,128,5,52,230,242,233,227,225,110,128,1,137,99,4,5,46,5,53,5,62,5,89,225,242,239,110,128,1,14,229,228,233,236,236,97,128,30,16,233,242,99,2,5,70,5,75,236,101,128,36,185,245,237,230,236,229,248,226,229,236,239,119,128,30,18,242,239,225,116,128,1,16,228,239,116,2,5,104,5,113,225,227,227,229,238,116,128,30,10,226,229,236,239,119,128,30,12,101,3,5,129,5,140,5,150,227,249,242,233,236,236,233,99,128,4,20,233,227,239,240,244,233,99,128,3,238,236,244,97,129,34,6,5,158,231,242,229,229,107,128,3,148,232,239,239,107,128,1,138,105,2,5,179,5,218,229,242,229,243,233,115,131,246,203,5,194,5,202,5,210,193,227,245,244,101,128,246,204,199,242,225,246,101,128,246,205,243,237,225,236,108,128,247,168,231,225,237,237,225,231,242,229,229,107,128,3,220,234,229,227,249,242,233,236,236,233,99,128,4,2,236,233,238,229,226,229,236,239,119,128,30,14,237,239,238,239,243,240,225,227,101,128,255,36,239,244,225,227,227,229,238,244,243,237,225,236,108,128,246,247,115,2,6,34,6,41,236,225,243,104,128,1,16,237,225,236,108,128,247,100,244,239,240,226,225,114,128,1,139,122,131,1,242,6,67,6,75,6,112,227,225,242,239,110,128,1,197,101,2,6,81,6,101,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,224,227,249,242,233,236,236,233,99,128,4,5,232,229,227,249,242,233,236,236,233,99,128,4,15,69,146,0,69,6,165,6,183,6,191,7,89,7,153,7,165,7,183,7,211,8,7,8,36,8,94,8,169,8,189,8,208,8,248,9,44,9,109,9,115,225,227,245,244,101,129,0,201,6,175,243,237,225,236,108,128,247,233,226,242,229,246,101,128,1,20,99,5,6,203,6,210,6,224,6,236,7,79,225,242,239,110,128,1,26,229,228,233,236,236,225,226,242,229,246,101,128,30,28,232,225,242,237,229,238,233,225,110,128,5,53,233,242,99,2,6,244,6,249,236,101,128,36,186,245,237,230,236,229,120,135,0,202,7,16,7,24,7,32,7,43,7,51,7,63,7,71,225,227,245,244,101,128,30,190,226,229,236,239,119,128,30,24,228,239,244,226,229,236,239,119,128,30,198,231,242,225,246,101,128,30,192,232,239,239,235,225,226,239,246,101,128,30,194,243,237,225,236,108,128,247,234,244,233,236,228,101,128,30,196,249,242,233,236,236,233,99,128,4,4,100,3,7,97,7,107,7,127,226,236,231,242,225,246,101,128,2,4,233,229,242,229,243,233,115,129,0,203,7,119,243,237,225,236,108,128,247,235,239,116,130,1,22,7,136,7,145,225,227,227,229,238,116,128,1,22,226,229,236,239,119,128,30,184,230,227,249,242,233,236,236,233,99,128,4,36,231,242,225,246,101,129,0,200,7,175,243,237,225,236,108,128,247,232,104,2,7,189,7,200,225,242,237,229,238,233,225,110,128,5,55,239,239,235,225,226,239,246,101,128,30,186,105,3,7,219,7,230,7,245,231,232,244,242,239,237,225,110,128,33,103,238,246,229,242,244,229,228,226,242,229,246,101,128,2,6,239,244,233,230,233,229,228,227,249,242,233,236,236,233,99,128,4,100,108,2,8,13,8,24,227,249,242,233,236,236,233,99,128,4,27,229,246,229,238,242,239,237,225,110,128,33,106,109,3,8,44,8,72,8,83,225,227,242,239,110,130,1,18,8,56,8,64,225,227,245,244,101,128,30,22,231,242,225,246,101,128,30,20,227,249,242,233,236,236,233,99,128,4,28,239,238,239,243,240,225,227,101,128,255,37,110,4,8,104,8,115,8,135,8,154,227,249,242,233,236,236,233,99,128,4,29,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,162,103,129,1,74,8,141,232,229,227,249,242,233,236,236,233,99,128,4,164,232,239,239,235,227,249,242,233,236,236,233,99,128,4,199,111,2,8,175,8,183,231,239,238,229,107,128,1,24,240,229,110,128,1,144,240,243,233,236,239,110,129,3,149,8,200,244,239,238,239,115,128,3,136,114,2,8,214,8,225,227,249,242,233,236,236,233,99,128,4,32,229,246,229,242,243,229,100,129,1,142,8,237,227,249,242,233,236,236,233,99,128,4,45,115,4,9,2,9,13,9,33,9,37,227,249,242,233,236,236,233,99,128,4,33,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,170,104,128,1,169,237,225,236,108,128,247,101,116,3,9,52,9,78,9,92,97,130,3,151,9,60,9,70,242,237,229,238,233,225,110,128,5,56,244,239,238,239,115,128,3,137,104,129,0,208,9,84,243,237,225,236,108,128,247,240,233,236,228,101,129,30,188,9,101,226,229,236,239,119,128,30,26,245,242,111,128,32,172,250,104,130,1,183,9,124,9,132,227,225,242,239,110,128,1,238,242,229,246,229,242,243,229,100,128,1,184,70,136,0,70,9,163,9,172,9,184,9,212,9,219,9,248,10,4,10,15,227,233,242,227,236,101,128,36,187,228,239,244,225,227,227,229,238,116,128,30,30,101,2,9,190,9,202,232,225,242,237,229,238,233,225,110,128,5,86,233,227,239,240,244,233,99,128,3,228,232,239,239,107,128,1,145,105,2,9,225,9,238,244,225,227,249,242,233,236,236,233,99,128,4,114,246,229,242,239,237,225,110,128,33,100,237,239,238,239,243,240,225,227,101,128,255,38,239,245,242,242,239,237,225,110,128,33,99,243,237,225,236,108,128,247,102,71,140,0,71,10,51,10,61,10,107,10,115,10,176,10,193,10,205,11,39,11,52,11,65,11,90,11,107,194,243,241,245,225,242,101,128,51,135,97,3,10,69,10,76,10,94,227,245,244,101,128,1,244,237,237,97,129,3,147,10,84,225,230,242,233,227,225,110,128,1,148,238,231,233,225,227,239,240,244,233,99,128,3,234,226,242,229,246,101,128,1,30,99,4,10,125,10,132,10,141,10,163,225,242,239,110,128,1,230,229,228,233,236,236,97,128,1,34,233,242,99,2,10,149,10,154,236,101,128,36,188,245,237,230,236,229,120,128,1,28,239,237,237,225,225,227,227,229,238,116,128,1,34,228,239,116,129,1,32,10,184,225,227,227,229,238,116,128,1,32,229,227,249,242,233,236,236,233,99,128,4,19,104,3,10,213,10,226,11,33,225,228,225,242,237,229,238,233,225,110,128,5,66,101,3,10,234,10,255,11,16,237,233,228,228,236,229,232,239,239,235,227,249,242,233,236,236,233,99,128,4,148,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,146,245,240,244,245,242,238,227,249,242,233,236,236,233,99,128,4,144,239,239,107,128,1,147,233,237,225,242,237,229,238,233,225,110,128,5,51,234,229,227,249,242,233,236,236,233,99,128,4,3,109,2,11,71,11,79,225,227,242,239,110,128,30,32,239,238,239,243,240,225,227,101,128,255,39,242,225,246,101,129,246,206,11,99,243,237,225,236,108,128,247,96,115,2,11,113,11,129,237,225,236,108,129,247,103,11,122,232,239,239,107,128,2,155,244,242,239,235,101,128,1,228,72,140,0,72,11,165,11,190,11,198,11,208,12,17,12,40,12,77,12,117,12,129,12,157,12,165,12,189,177,184,53,3,11,175,11,180,11,185,179,51,128,37,207,180,51,128,37,170,181,49,128,37,171,178,178,176,183,51,128,37,161,208,243,241,245,225,242,101,128,51,203,97,3,11,216,11,236,12,0,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,168,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,178,242,228,243,233,231,238,227,249,242,233,236,236,233,99,128,4,42,98,2,12,23,12,28,225,114,128,1,38,242,229,246,229,226,229,236,239,119,128,30,42,99,2,12,46,12,55,229,228,233,236,236,97,128,30,40,233,242,99,2,12,63,12,68,236,101,128,36,189,245,237,230,236,229,120,128,1,36,100,2,12,83,12,93,233,229,242,229,243,233,115,128,30,38,239,116,2,12,100,12,109,225,227,227,229,238,116,128,30,34,226,229,236,239,119,128,30,36,237,239,238,239,243,240,225,227,101,128,255,40,111,2,12,135,12,146,225,242,237,229,238,233,225,110,128,5,64,242,233,227,239,240,244,233,99,128,3,232,243,237,225,236,108,128,247,104,245,238,231,225,242,245,237,236,225,245,116,129,246,207,12,181,243,237,225,236,108,128,246,248,250,243,241,245,225,242,101,128,51,144,73,146,0,73,12,239,12,251,12,255,13,11,13,29,13,37,13,94,13,181,13,214,13,224,13,242,13,254,14,48,14,86,14,99,14,166,14,187,14,205,193,227,249,242,233,236,236,233,99,128,4,47,74,128,1,50,213,227,249,242,233,236,236,233,99,128,4,46,225,227,245,244,101,129,0,205,13,21,243,237,225,236,108,128,247,237,226,242,229,246,101,128,1,44,99,3,13,45,13,52,13,84,225,242,239,110,128,1,207,233,242,99,2,13,60,13,65,236,101,128,36,190,245,237,230,236,229,120,129,0,206,13,76,243,237,225,236,108,128,247,238,249,242,233,236,236,233,99,128,4,6,100,3,13,102,13,112,13,155,226,236,231,242,225,246,101,128,2,8,233,229,242,229,243,233,115,131,0,207,13,128,13,136,13,147,225,227,245,244,101,128,30,46,227,249,242,233,236,236,233,99,128,4,228,243,237,225,236,108,128,247,239,239,116,130,1,48,13,164,13,173,225,227,227,229,238,116,128,1,48,226,229,236,239,119,128,30,202,101,2,13,187,13,203,226,242,229,246,229,227,249,242,233,236,236,233,99,128,4,214,227,249,242,233,236,236,233,99,128,4,21,230,242,225,235,244,245,114,128,33,17,231,242,225,246,101,129,0,204,13,234,243,237,225,236,108,128,247,236,232,239,239,235,225,226,239,246,101,128,30,200,105,3,14,6,14,17,14,32,227,249,242,233,236,236,233,99,128,4,24,238,246,229,242,244,229,228,226,242,229,246,101,128,2,10,243,232,239,242,244,227,249,242,233,236,236,233,99,128,4,25,109,2,14,54,14,75,225,227,242,239,110,129,1,42,14,64,227,249,242,233,236,236,233,99,128,4,226,239,238,239,243,240,225,227,101,128,255,41,238,233,225,242,237,229,238,233,225,110,128,5,59,111,3,14,107,14,118,14,126,227,249,242,233,236,236,233,99,128,4,1,231,239,238,229,107,128,1,46,244,97,131,3,153,14,137,14,147,14,158,225,230,242,233,227,225,110,128,1,150,228,233,229,242,229,243,233,115,128,3,170,244,239,238,239,115,128,3,138,115,2,14,172,14,179,237,225,236,108,128,247,105,244,242,239,235,101,128,1,151,244,233,236,228,101,129,1,40,14,197,226,229,236,239,119,128,30,44,250,232,233,244,243,97,2,14,216,14,227,227,249,242,233,236,236,233,99,128,4,116,228,226,236,231,242,225,246,229,227,249,242,233,236,236,233,99,128,4,118,74,134,0,74,15,6,15,18,15,41,15,53,15,67,15,79,225,225,242,237,229,238,233,225,110,128,5,65,227,233,242,99,2,15,27,15,32,236,101,128,36,191,245,237,230,236,229,120,128,1,52,229,227,249,242,233,236,236,233,99,128,4,8,232,229,232,225,242,237,229,238,233,225,110,128,5,75,237,239,238,239,243,240,225,227,101,128,255,42,243,237,225,236,108,128,247,106,75,140,0,75,15,115,15,125,15,135,16,18,16,65,16,76,16,106,16,143,16,156,16,168,16,180,16,208,194,243,241,245,225,242,101,128,51,133,203,243,241,245,225,242,101,128,51,205,97,7,15,151,15,169,15,191,15,211,15,226,15,232,15,249,226,225,243,232,235,233,242,227,249,242,233,236,236,233,99,128,4,160,99,2,15,175,15,181,245,244,101,128,30,48,249,242,233,236,236,233,99,128,4,26,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,154,232,239,239,235,227],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+20480);allocate([249,242,233,236,236,233,99,128,4,195,240,240,97,128,3,154,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,158,246,229,242,244,233,227,225,236,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,156,99,4,16,28,16,35,16,44,16,52,225,242,239,110,128,1,232,229,228,233,236,236,97,128,1,54,233,242,227,236,101,128,36,192,239,237,237,225,225,227,227,229,238,116,128,1,54,228,239,244,226,229,236,239,119,128,30,50,101,2,16,82,16,94,232,225,242,237,229,238,233,225,110,128,5,84,238,225,242,237,229,238,233,225,110,128,5,63,104,3,16,114,16,126,16,137,225,227,249,242,233,236,236,233,99,128,4,37,229,233,227,239,240,244,233,99,128,3,230,239,239,107,128,1,152,234,229,227,249,242,233,236,236,233,99,128,4,12,236,233,238,229,226,229,236,239,119,128,30,52,237,239,238,239,243,240,225,227,101,128,255,43,239,240,240,97,2,16,189,16,200,227,249,242,233,236,236,233,99,128,4,128,231,242,229,229,107,128,3,222,115,2,16,214,16,226,233,227,249,242,233,236,236,233,99,128,4,110,237,225,236,108,128,247,107,76,138,0,76,17,1,17,5,17,9,17,29,17,95,17,133,17,147,17,165,17,177,17,189,74,128,1,199,76,128,246,191,97,2,17,15,17,22,227,245,244,101,128,1,57,237,226,228,97,128,3,155,99,4,17,39,17,46,17,55,17,82,225,242,239,110,128,1,61,229,228,233,236,236,97,128,1,59,233,242,99,2,17,63,17,68,236,101,128,36,193,245,237,230,236,229,248,226,229,236,239,119,128,30,60,239,237,237,225,225,227,227,229,238,116,128,1,59,228,239,116,130,1,63,17,105,17,114,225,227,227,229,238,116,128,1,63,226,229,236,239,119,129,30,54,17,124,237,225,227,242,239,110,128,30,56,233,247,238,225,242,237,229,238,233,225,110,128,5,60,106,129,1,200,17,153,229,227,249,242,233,236,236,233,99,128,4,9,236,233,238,229,226,229,236,239,119,128,30,58,237,239,238,239,243,240,225,227,101,128,255,44,115,2,17,195,17,212,236,225,243,104,129,1,65,17,204,243,237,225,236,108,128,246,249,237,225,236,108,128,247,108,77,137,0,77,17,241,17,251,18,24,18,33,18,58,18,71,18,83,18,91,18,100,194,243,241,245,225,242,101,128,51,134,225,99,2,18,2,18,18,242,239,110,129,246,208,18,10,243,237,225,236,108,128,247,175,245,244,101,128,30,62,227,233,242,227,236,101,128,36,194,228,239,116,2,18,41,18,50,225,227,227,229,238,116,128,30,64,226,229,236,239,119,128,30,66,229,238,225,242,237,229,238,233,225,110,128,5,68,237,239,238,239,243,240,225,227,101,128,255,45,243,237,225,236,108,128,247,109,244,245,242,238,229,100,128,1,156,117,128,3,156,78,141,0,78,18,134,18,138,18,146,18,212,18,237,18,248,19,3,19,21,19,33,19,45,19,58,19,66,19,84,74,128,1,202,225,227,245,244,101,128,1,67,99,4,18,156,18,163,18,172,18,199,225,242,239,110,128,1,71,229,228,233,236,236,97,128,1,69,233,242,99,2,18,180,18,185,236,101,128,36,195,245,237,230,236,229,248,226,229,236,239,119,128,30,74,239,237,237,225,225,227,227,229,238,116,128,1,69,228,239,116,2,18,220,18,229,225,227,227,229,238,116,128,30,68,226,229,236,239,119,128,30,70,232,239,239,235,236,229,230,116,128,1,157,233,238,229,242,239,237,225,110,128,33,104,106,129,1,203,19,9,229,227,249,242,233,236,236,233,99,128,4,10,236,233,238,229,226,229,236,239,119,128,30,72,237,239,238,239,243,240,225,227,101,128,255,46,239,247,225,242,237,229,238,233,225,110,128,5,70,243,237,225,236,108,128,247,110,244,233,236,228,101,129,0,209,19,76,243,237,225,236,108,128,247,241,117,128,3,157,79,141,0,79,19,118,19,132,19,150,19,203,20,78,20,152,20,187,21,48,21,69,21,213,21,223,21,254,22,53,69,129,1,82,19,124,243,237,225,236,108,128,246,250,225,227,245,244,101,129,0,211,19,142,243,237,225,236,108,128,247,243,98,2,19,156,19,196,225,242,242,229,100,2,19,166,19,177,227,249,242,233,236,236,233,99,128,4,232,228,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,234,242,229,246,101,128,1,78,99,4,19,213,19,220,19,235,20,68,225,242,239,110,128,1,209,229,238,244,229,242,229,228,244,233,236,228,101,128,1,159,233,242,99,2,19,243,19,248,236,101,128,36,196,245,237,230,236,229,120,134,0,212,20,13,20,21,20,32,20,40,20,52,20,60,225,227,245,244,101,128,30,208,228,239,244,226,229,236,239,119,128,30,216,231,242,225,246,101,128,30,210,232,239,239,235,225,226,239,246,101,128,30,212,243,237,225,236,108,128,247,244,244,233,236,228,101,128,30,214,249,242,233,236,236,233,99,128,4,30,100,3,20,86,20,109,20,142,226,108,2,20,93,20,101,225,227,245,244,101,128,1,80,231,242,225,246,101,128,2,12,233,229,242,229,243,233,115,130,0,214,20,123,20,134,227,249,242,233,236,236,233,99,128,4,230,243,237,225,236,108,128,247,246,239,244,226,229,236,239,119,128,30,204,103,2,20,158,20,170,239,238,229,235,243,237,225,236,108,128,246,251,242,225,246,101,129,0,210,20,179,243,237,225,236,108,128,247,242,104,4,20,197,20,208,20,212,21,34,225,242,237,229,238,233,225,110,128,5,85,109,128,33,38,111,2,20,218,20,228,239,235,225,226,239,246,101,128,30,206,242,110,133,1,160,20,243,20,251,21,6,21,14,21,26,225,227,245,244,101,128,30,218,228,239,244,226,229,236,239,119,128,30,226,231,242,225,246,101,128,30,220,232,239,239,235,225,226,239,246,101,128,30,222,244,233,236,228,101,128,30,224,245,238,231,225,242,245,237,236,225,245,116,128,1,80,105,129,1,162,21,54,238,246,229,242,244,229,228,226,242,229,246,101,128,2,14,109,4,21,79,21,107,21,184,21,202,225,227,242,239,110,130,1,76,21,91,21,99,225,227,245,244,101,128,30,82,231,242,225,246,101,128,30,80,229,231,97,132,33,38,21,121,21,132,21,140,21,156,227,249,242,233,236,236,233,99,128,4,96,231,242,229,229,107,128,3,169,242,239,245,238,228,227,249,242,233,236,236,233,99,128,4,122,116,2,21,162,21,177,233,244,236,239,227,249,242,233,236,236,233,99,128,4,124,239,238,239,115,128,3,143,233,227,242,239,110,129,3,159,21,194,244,239,238,239,115,128,3,140,239,238,239,243,240,225,227,101,128,255,47,238,229,242,239,237,225,110,128,33,96,111,2,21,229,21,248,231,239,238,229,107,129,1,234,21,239,237,225,227,242,239,110,128,1,236,240,229,110,128,1,134,115,3,22,6,22,33,22,40,236,225,243,104,130,0,216,22,17,22,25,225,227,245,244,101,128,1,254,243,237,225,236,108,128,247,248,237,225,236,108,128,247,111,244,242,239,235,229,225,227,245,244,101,128,1,254,116,2,22,59,22,70,227,249,242,233,236,236,233,99,128,4,126,233,236,228,101,131,0,213,22,83,22,91,22,102,225,227,245,244,101,128,30,76,228,233,229,242,229,243,233,115,128,30,78,243,237,225,236,108,128,247,245,80,136,0,80,22,130,22,138,22,147,22,159,22,211,22,227,22,246,23,2,225,227,245,244,101,128,30,84,227,233,242,227,236,101,128,36,197,228,239,244,225,227,227,229,238,116,128,30,86,101,3,22,167,22,178,22,190,227,249,242,233,236,236,233,99,128,4,31,232,225,242,237,229,238,233,225,110,128,5,74,237,233,228,228,236,229,232,239,239,235,227,249,242,233,236,236,233,99,128,4,166,104,2,22,217,22,221,105,128,3,166,239,239,107,128,1,164,105,129,3,160,22,233,247,242,225,242,237,229,238,233,225,110,128,5,83,237,239,238,239,243,240,225,227,101,128,255,48,115,2,23,8,23,25,105,129,3,168,23,14,227,249,242,233,236,236,233,99,128,4,112,237,225,236,108,128,247,112,81,131,0,81,23,42,23,51,23,63,227,233,242,227,236,101,128,36,198,237,239,238,239,243,240,225,227,101,128,255,49,243,237,225,236,108,128,247,113,82,138,0,82,23,95,23,119,23,166,23,217,23,230,23,240,23,245,24,19,24,31,24,43,97,2,23,101,23,112,225,242,237,229,238,233,225,110,128,5,76,227,245,244,101,128,1,84,99,4,23,129,23,136,23,145,23,153,225,242,239,110,128,1,88,229,228,233,236,236,97,128,1,86,233,242,227,236,101,128,36,199,239,237,237,225,225,227,227,229,238,116,128,1,86,100,2,23,172,23,182,226,236,231,242,225,246,101,128,2,16,239,116,2,23,189,23,198,225,227,227,229,238,116,128,30,88,226,229,236,239,119,129,30,90,23,208,237,225,227,242,239,110,128,30,92,229,232,225,242,237,229,238,233,225,110,128,5,80,230,242,225,235,244,245,114,128,33,28,232,111,128,3,161,233,110,2,23,252,24,5,231,243,237,225,236,108,128,246,252,246,229,242,244,229,228,226,242,229,246,101,128,2,18,236,233,238,229,226,229,236,239,119,128,30,94,237,239,238,239,243,240,225,227,101,128,255,50,243,237,225,236,108,129,247,114,24,53,233,238,246,229,242,244,229,100,129,2,129,24,66,243,245,240,229,242,233,239,114,128,2,182,83,139,0,83,24,103,26,17,26,55,26,182,26,221,26,250,27,84,27,105,27,117,27,135,27,143,70,6,24,117,24,209,24,241,25,77,25,119,25,221,48,9,24,137,24,145,24,153,24,161,24,169,24,177,24,185,24,193,24,201,177,176,176,176,48,128,37,12,178,176,176,176,48,128,37,20,179,176,176,176,48,128,37,16,180,176,176,176,48,128,37,24,181,176,176,176,48,128,37,60,182,176,176,176,48,128,37,44,183,176,176,176,48,128,37,52,184,176,176,176,48,128,37,28,185,176,176,176,48,128,37,36,49,3,24,217,24,225,24,233,176,176,176,176,48,128,37,0,177,176,176,176,48,128,37,2,185,176,176,176,48,128,37,97,50,9,25,5,25,13,25,21,25,29,25,37,25,45,25,53,25,61,25,69,176,176,176,176,48,128,37,98,177,176,176,176,48,128,37,86,178,176,176,176,48,128,37,85,179,176,176,176,48,128,37,99,180,176,176,176,48,128,37,81,181,176,176,176,48,128,37,87,182,176,176,176,48,128,37,93,183,176,176,176,48,128,37,92,184,176,176,176,48,128,37,91,51,4,25,87,25,95,25,103,25,111,182,176,176,176,48,128,37,94,183,176,176,176,48,128,37,95,184,176,176,176,48,128,37,90,185,176,176,176,48,128,37,84,52,10,25,141,25,149,25,157,25,165,25,173,25,181,25,189,25,197,25,205,25,213,176,176,176,176,48,128,37,105,177,176,176,176,48,128,37,102,178,176,176,176,48,128,37,96,179,176,176,176,48,128,37,80,180,176,176,176,48,128,37,108,181,176,176,176,48,128,37,103,182,176,176,176,48,128,37,104,183,176,176,176,48,128,37,100,184,176,176,176,48,128,37,101,185,176,176,176,48,128,37,89,53,5,25,233,25,241,25,249,26,1,26,9,176,176,176,176,48,128,37,88,177,176,176,176,48,128,37,82,178,176,176,176,48,128,37,83,179,176,176,176,48,128,37,107,180,176,176,176,48,128,37,106,97,2,26,23,26,44,227,245,244,101,129,1,90,26,32,228,239,244,225,227,227,229,238,116,128,30,100,237,240,233,231,242,229,229,107,128,3,224,99,5,26,67,26,98,26,107,26,147,26,169,225,242,239,110,130,1,96,26,78,26,90,228,239,244,225,227,227,229,238,116,128,30,102,243,237,225,236,108,128,246,253,229,228,233,236,236,97,128,1,94,232,247,97,130,1,143,26,117,26,128,227,249,242,233,236,236,233,99,128,4,216,228,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,218,233,242,99,2,26,155,26,160,236,101,128,36,200,245,237,230,236,229,120,128,1,92,239,237,237,225,225,227,227,229,238,116,128,2,24,228,239,116,2,26,190,26,199,225,227,227,229,238,116,128,30,96,226,229,236,239,119,129,30,98,26,209,228,239,244,225,227,227,229,238,116,128,30,104,101,2,26,227,26,239,232,225,242,237,229,238,233,225,110,128,5,77,246,229,238,242,239,237,225,110,128,33,102,104,5,27,6,27,34,27,48,27,59,27,72,97,2,27,12,27,23,225,242,237,229,238,233,225,110,128,5,71,227,249,242,233,236,236,233,99,128,4,40,227,232,225,227,249,242,233,236,236,233,99,128,4,41,229,233,227,239,240,244,233,99,128,3,226,232,225,227,249,242,233,236,236,233,99,128,4,186,233,237,225,227,239,240,244,233,99,128,3,236,105,2,27,90,27,96,231,237,97,128,3,163,248,242,239,237,225,110,128,33,101,237,239,238,239,243,240,225,227,101,128,255,51,239,230,244,243,233,231,238,227,249,242,233,236,236,233,99,128,4,44,243,237,225,236,108,128,247,115,244,233,231,237,225,231,242,229,229,107,128,3,218,84,141,0,84,27,186,27,191,27,197,28,7,28,32,28,96,28,147,28,177,28,189,28,201,28,246,29,6,29,46,225,117,128,3,164,226,225,114,128,1,102,99,4,27,207,27,214,27,223,27,250,225,242,239,110,128,1,100,229,228,233,236,236,97,128,1,98,233,242,99,2,27,231,27,236,236,101,128,36,201,245,237,230,236,229,248,226,229,236,239,119,128,30,112,239,237,237,225,225,227,227,229,238,116,128,1,98,228,239,116,2,28,15,28,24,225,227,227,229,238,116,128,30,106,226,229,236,239,119,128,30,108,101,4,28,42,28,53,28,73,28,82,227,249,242,233,236,236,233,99,128,4,34,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,172,238,242,239,237,225,110,128,33,105,244,243,229,227,249,242,233,236,236,233,99,128,4,180,104,3,28,104,28,110,28,136,229,244,97,128,3,152,111,2,28,116,28,121,239,107,128,1,172,242,110,129,0,222,28,128,243,237,225,236,108,128,247,254,242,229,229,242,239,237,225,110,128,33,98,105,2,28,153,28,164,236,228,229,243,237,225,236,108,128,246,254,247,238,225,242,237,229,238,233,225,110,128,5,79,236,233,238,229,226,229,236,239,119,128,30,110,237,239,238,239,243,240,225,227,101,128,255,52,111,2,28,207,28,218,225,242,237,229,238,233,225,110,128,5,57,238,101,3,28,227,28,234,28,240,230,233,246,101,128,1,188,243,233,120,128,1,132,244,247,111,128,1,167,242,229,244,242,239,230,236,229,248,232,239,239,107,128,1,174,115,3,29,14,29,26,29,39,229,227,249,242,233,236,236,233,99,128,4,38,232,229,227,249,242,233,236,236,233,99,128,4,11,237,225,236,108,128,247,116,119,2,29,52,29,64,229,236,246,229,242,239,237,225,110,128,33,107,239,242,239,237,225,110,128,33,97,85,142,0,85,29,105,29,123,29,131,29,198,30,69,30,87,30,198,30,214,30,226,31,21,31,30,31,142,31,149,31,219,225,227,245,244,101,129,0,218,29,115,243,237,225,236,108,128,247,250,226,242,229,246,101,128,1,108,99,3,29,139,29,146,29,188,225,242,239,110,128,1,211,233,242,99,2,29,154,29,159,236,101,128,36,202,245,237,230,236,229,120,130,0,219,29,172,29,180,226,229,236,239,119,128,30,118,243,237,225,236,108,128,247,251,249,242,233,236,236,233,99,128,4,35,100,3,29,206,29,229,30,59,226,108,2,29,213,29,221,225,227,245,244,101,128,1,112,231,242,225,246,101,128,2,20,233,229,242,229,243,233,115,134,0,220,29,251,30,3,30,11,30,34,30,42,30,51,225,227,245,244,101,128,1,215,226,229,236,239,119,128,30,114,99,2,30,17,30,24,225,242,239,110,128,1,217,249,242,233,236,236,233,99,128,4,240,231,242,225,246,101,128,1,219,237,225,227,242,239,110,128,1,213,243,237,225,236,108,128,247,252,239,244,226,229,236,239,119,128,30,228,231,242,225,246,101,129,0,217,30,79,243,237,225,236,108,128,247,249,104,2,30,93,30,171,111,2,30,99,30,109,239,235,225,226,239,246,101,128,30,230,242,110,133,1,175,30,124,30,132,30,143,30,151,30,163,225,227,245,244,101,128,30,232,228,239,244,226,229,236,239,119,128,30,240,231,242,225,246,101,128,30,234,232,239,239,235,225,226,239,246,101,128,30,236,244,233,236,228,101,128,30,238,245,238,231,225,242,245,237,236,225,245,116,129,1,112,30,187,227,249,242,233,236,236,233,99,128,4,242,233,238,246,229,242,244,229,228,226,242,229,246,101,128,2,22,235,227,249,242,233,236,236,233,99,128,4,120,109,2,30,232,31,10,225,227,242,239,110,130,1,106,30,244,30,255,227,249,242,233,236,236,233,99,128,4,238,228,233,229,242,229,243,233,115,128,30,122,239,238,239,243,240,225,227,101,128,255,53,239,231,239,238,229,107,128,1,114,240,243,233,236,239,110,133,3,165,31,49,31,53,31,90,31,121,31,134,49,128,3,210,97,2,31,59,31,81,227,245,244,229,232,239,239,235,243,249,237,226,239,236,231,242,229,229,107,128,3,211,230,242,233,227,225,110,128,1,177,228,233,229,242,229,243,233,115,129,3,171,31,103,232,239,239,235,243,249,237,226,239,236,231,242,229,229,107,128,3,212,232,239,239,235,243,249,237,226,239,108,128,3,210,244,239,238,239,115,128,3,142,242,233,238,103,128,1,110,115,3,31,157,31,172,31,179,232,239,242,244,227,249,242,233,236,236,233,99,128,4,14,237,225,236,108,128,247,117,244,242,225,233,231,232,116,2,31,191,31,202,227,249,242,233,236,236,233,99,128,4,174,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,176,244,233,236,228,101,130,1,104,31,231,31,239,225,227,245,244,101,128,30,120,226,229,236,239,119,128,30,116,86,136,0,86,32,11,32,20,32,31,32,60,32,67,32,79,32,91,32,99,227,233,242,227,236,101,128,36,203,228,239,244,226,229,236,239,119,128,30,126,101,2,32,37,32,48,227,249,242,233,236,236,233,99,128,4,18,247,225,242,237,229,238,233,225,110,128,5,78,232,239,239,107,128,1,178,237,239,238,239,243,240,225,227,101,128,255,54,239,225,242,237,229,238,233,225,110,128,5,72,243,237,225,236,108,128,247,118,244,233,236,228,101,128,30,124,87,134,0,87,32,123,32,131,32,154,32,194,32,202,32,214,225,227,245,244,101,128,30,130,227,233,242,99,2,32,140,32,145,236,101,128,36,204,245,237,230,236,229,120,128,1,116,100,2,32,160,32,170,233,229,242,229,243,233,115,128,30,132,239,116,2,32,177,32,186,225,227,227,229,238,116,128,30,134,226,229,236,239,119,128,30,136,231,242,225,246,101,128,30,128,237,239,238,239,243,240,225,227,101,128,255,55,243,237,225,236,108,128,247,119,88,134,0,88,32,238,32,247,33,18,33,31,33,35,33,47,227,233,242,227,236,101,128,36,205,100,2,32,253,33,7,233,229,242,229,243,233,115,128,30,140,239,244,225,227,227,229,238,116,128,30,138,229,232,225,242,237,229,238,233,225,110,128,5,61,105,128,3,158,237,239,238,239,243,240,225,227,101,128,255,56,243,237,225,236,108,128,247,120,89,139,0,89,33,81,33,116,33,139,33,189,33,228,33,236,33,253,34,40,34,52,34,60,34,68,97,2,33,87,33,104,227,245,244,101,129,0,221,33,96,243,237,225,236,108,128,247,253,244,227,249,242,233,236,236,233,99,128,4,98,227,233,242,99,2,33,125,33,130,236,101,128,36,206,245,237,230,236,229,120,128,1,118,100,2,33,145,33,165,233,229,242,229,243,233,115,129,1,120,33,157,243,237,225,236,108,128,247,255,239,116,2,33,172,33,181,225,227,227,229,238,116,128,30,142,226,229,236,239,119,128,30,244,229,114,2,33,196,33,208,233,227,249,242,233,236,236,233,99,128,4,43,245,228,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,248,231,242,225,246,101,128,30,242,232,239,239,107,129,1,179,33,245,225,226,239,246,101,128,30,246,105,3,34,5,34,16,34,27,225,242,237,229,238,233,225,110,128,5,69,227,249,242,233,236,236,233,99,128,4,7,247,238,225,242,237,229,238,233,225,110,128,5,82,237,239,238,239,243,240,225,227,101,128,255,57,243,237,225,236,108,128,247,121,244,233,236,228,101,128,30,248,245,115,2,34,75,34,113,226,233,103,2,34,83,34,94,227,249,242,233,236,236,233,99,128,4,106,233,239,244,233,230,233,229,228,227,249,242,233,236,236,233,99,128,4,108,236,233,244,244,236,101,2,34,124,34,135,227,249,242,233,236,236,233,99,128,4,102,233,239,244,233,230,233,229,228,227,249,242,233,236,236,233,99,128,4,104,90,136,0,90,34,174,34,198,34,243,35,14,35,81,35,173,35,185,35,197,97,2,34,180,34,191,225,242,237,229,238,233,225,110,128,5,54,227,245,244,101,128,1,121,99,2,34,204,34,221,225,242,239,110,129,1,125,34,213,243,237,225,236,108,128,246,255,233,242,99,2,34,229,34,234,236,101,128,36,207,245,237,230,236,229,120,128,30,144,228,239,116,130,1,123,34,253,35,6,225,227,227,229,238,116,128,1,123,226,229,236,239,119,128,30,146,101,3,35,22,35,33,35,76,227,249,242,233,236,236,233,99,128,4,23,100,2,35,39,35,58,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,152,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,222,244,97,128,3,150,232,101,4,35,92,35,103,35,119,35,130,225,242,237,229,238,233,225,110,128,5,58,226,242,229,246,229,227,249,242,233,236,236,233,99,128,4,193,227,249,242,233,236,236,233,99,128,4,22,100,2,35,136,35,155,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,150,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,220,236,233,238,229,226,229,236,239,119,128,30,148,237,239,238,239,243,240,225,227,101,128,255,58,115,2,35,203,35,210,237,225,236,108,128,247,122,244,242,239,235,101,128,1,181,97,158,0,97,36,26,38,154,39,4,39,68,39,132,39,196,40,4,40,68,40,126,40,190,41,70,41,217,42,137,42,237,43,17,49,192,49,229,50,0,50,225,51,7,52,96,52,168,53,123,53,132,54,5,56,13,57,3,57,50,57,201,57,215,49,138,39,1,36,50,36,114,36,154,36,218,37,26,37,90,37,154,37,218,38,26,38,90,48,138,39,33,36,74,36,78,36,82,36,86,36,90,36,94,36,98,36,102,36,106,36,110,48,128,39,94,49,128,39,97,50,128,39,98,51,128,39,99,52,128,39,100,53,128,39,16,54,128,39,101,55,128,39,102,56,128,39,103,57,128,38,96,49,134,38,27,36,130,36,134,36,138,36,142,36,146,36,150,48,128,38,101,49,128,38,102,50,128,38,99,55,128,39,9,56,128,39,8,57,128,39,7,50,138,38,30,36,178,36,182,36,186,36,190,36,194,36,198,36,202,36,206,36,210,36,214,48,128,36,96,49,128,36,97,50,128,36,98,51,128,36,99,52,128,36,100,53,128,36,101,54,128,36,102,55,128,36,103,56,128,36,104,57,128,36,105,51,138,39,12,36,242,36,246,36,250,36,254,37,2,37,6,37,10,37,14,37,18,37,22,48,128,39,118,49,128,39,119,50,128,39,120,51,128,39,121,52,128,39,122,53,128,39,123,54,128,39,124,55,128,39,125,56,128,39,126,57,128,39,127,52,138,39,13,37,50,37,54,37,58,37,62,37,66,37,70,37,74,37,78,37,82,37,86,48,128,39,128,49,128,39,129,50,128,39,130,51,128,39,131,52,128,39,132,53,128,39,133,54,128,39,134,55,128,39,135,56,128,39,136,57,128,39,137,53,138,39,14,37,114,37,118,37,122,37,126,37,130,37,134,37,138,37,142,37,146,37,150,48,128,39,138,49,128,39,139,50,128,39,140,51,128,39,141,52,128,39,142,53,128,39,143,54,128,39,144,55,128,39,145,56,128,39,146,57,128,39,147,54,138,39,15,37,178,37,182,37,186,37,190,37,194,37,198,37,202,37,206,37,210,37,214,48,128,39,148,49,128,33,146,50,128,39,163,51,128,33,148,52,128,33,149,53,128,39,153,54,128,39,155,55,128,39,156,56,128,39,157,57,128,39,158,55,138,39,17,37,242,37,246,37,250,37,254,38,2,38,6,38,10,38,14,38,18,38,22,48,128,39,159,49,128,39,160,50,128,39,161,51,128,39,162,52,128,39,164,53,128,39,165,54,128,39,166,55,128,39,167,56,128,39,168,57,128,39,169,56,138,39,18,38,50,38,54,38,58,38,62,38,66,38,70,38,74,38,78,38,82,38,86,48,128,39,171,49,128,39,173,50,128,39,175,51,128,39,178,52,128,39,179,53,128,39,181,54,128,39,184,55,128,39,186,56,128,39,187,57,128,39,188,57,138,39,19,38,114,38,118,38,122,38,126,38,130,38,134,38,138,38,142,38,146,38,150,48,128,39,189,49,128,39,190,50,128,39,154,51,128,39,170,52,128,39,182,53,128,39,185,54,128,39,152,55,128,39,180,56,128,39,183,57,128,39,172,50,138,39,2,38,178,38,224,38,228,38,232,38,236,38,240,38,244,38,248,38,252,39,0,48,135,39,20,38,196,38,200,38,204,38,208,38,212,38,216,38,220,48,128,39,174,49,128,39,177,50,128,39,3,51,128,39,80,52,128,39,82,53,128,39,110,54,128,39,112,49,128,39,21,50,128,39,22,51,128,39,23,52,128,39,24,53,128,39,25,54,128,39,26,55,128,39,27,56,128,39,28,57,128,39,34,51,138,39,4,39,28,39,32,39,36,39,40,39,44,39,48,39,52,39,56,39,60,39,64,48,128,39,35,49,128,39,36,50,128,39,37,51,128,39,38,52,128,39,39,53,128,38,5,54,128,39,41,55,128,39,42,56,128,39,43,57,128,39,44,52,138,38,14,39,92,39,96,39,100,39,104,39,108,39,112,39,116,39,120,39,124,39,128,48,128,39,45,49,128,39,46,50,128,39,47,51,128,39,48,52,128,39,49,53,128,39,50,54,128,39,51,55,128,39,52,56,128,39,53,57,128,39,54,53,138,39,6,39,156,39,160,39,164,39,168,39,172,39,176,39,180,39,184,39,188,39,192,48,128,39,55,49,128,39,56,50,128,39,57,51,128,39,58,52,128,39,59,53,128,39,60,54,128,39,61,55,128,39,62,56,128,39,63,57,128,39,64,54,138,39,29,39,220,39,224,39,228,39,232,39,236,39,240,39,244,39,248,39,252,40,0,48,128,39,65,49,128,39,66,50,128,39,67,51,128,39,68,52,128,39,69,53,128,39,70,54,128,39,71,55,128,39,72,56,128,39,73,57,128,39,74,55,138,39,30,40,28,40,32,40,36,40,40,40,44,40,48,40,52,40,56,40,60,40,64,48,128,39,75,49,128,37,207,50,128,39,77,51,128,37,160,52,128,39,79,53,128,39,81,54,128,37,178,55,128,37,188,56,128,37,198,57,128,39,86,56,137,39,31,40,90,40,94,40,98,40,102,40,106,40,110,40,114,40,118,40,122,49,128,37,215,50,128,39,88,51,128,39,89,52,128,39,90,53,128,39,111,54,128,39,113,55,128,39,114,56,128,39,115,57,128,39,104,57,138,39,32,40,150,40,154,40,158,40,162,40,166,40,170,40,174,40,178,40,182,40,186,48,128,39,105,49,128,39,108,50,128,39,109,51,128,39,106,52,128,39,107,53,128,39,116,54,128,39,117,55,128,39,91,56,128,39,92,57,128,39,93,97,7,40,206,40,216,40,223,40,230,40,255,41,15,41,26,226,229,238,231,225,236,105,128,9,134,227,245,244,101,128,0,225,228,229,246,97,128,9,6,231,117,2,40,237,40,246,234,225,242,225,244,105,128,10,134,242,237,245,235,232,105,128,10,6,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,62,242,245,243,241,245,225,242,101,128,51,3,246,239,247,229,236,243,233,231,110,3,41,42,41,52,41,59,226,229,238,231,225,236,105,128,9,190,228,229,246,97,128,9,62,231,245,234,225,242,225,244,105,128,10,190,98,4,41,80,41,121,41,130,41,140,226,242,229,246,233,225,244,233,239,110,2,41,95,41,110,237,225,242,235,225,242,237,229,238,233,225,110,128,5,95,243,233,231,238,228,229,246,97,128,9,112,229,238,231,225,236,105,128,9,133,239,240,239,237,239,230,111,128,49,26,242,229,246,101,134,1,3,41,159,41,167,41,178,41,189,41,197,41,209,225,227,245,244,101,128,30,175,227,249,242,233,236,236,233,99,128,4,209,228,239,244,226,229,236,239,119,128,30,183,231,242,225,246,101,128,30,177,232,239,239,235,225,226,239,246,101,128,30,179,244,233,236,228,101,128,30,181,99,4,41,227,41,234,42,57,42,127,225,242,239,110,128,1,206,233,242,99,2,41,242,41,247,236,101,128,36,208,245,237,230,236,229,120,133,0,226,42,10,42,18,42,29,42,37,42,49,225,227,245,244,101,128,30,165,228,239,244,226,229,236,239,119,128,30,173,231,242,225,246,101,128,30,167,232,239,239,235,225,226,239,246,101,128,30,169,244,233,236,228,101,128,30,171,245,244,101,133,0,180,42,73,42,84,42,101,42,108,42,117,226,229,236,239,247,227,237,98,128,3,23,99,2,42,90,42,95,237,98,128,3,1,239,237,98,128,3,1,228,229,246,97,128,9,84,236,239,247,237,239,100,128,2,207,244,239,238,229,227,237,98,128,3,65,249,242,233,236,236,233,99,128,4,48,100,5,42,149,42,159,42,173,42,179,42,213,226,236,231,242,225,246,101,128,2,1,228,225,235,231,245,242,237,245,235,232,105,128,10,113,229,246,97,128,9,5,233,229,242,229,243,233,115,130,0,228,42,193,42,204,227,249,242,233,236,236,233,99,128,4,211,237,225,227,242,239,110,128,1,223,239,116,2,42,220,42,228,226,229,236,239,119,128,30,161,237,225,227,242,239,110,128,1,225,101,131,0,230,42,247,42,255,43,8,225,227,245,244,101,128,1,253,235,239,242,229,225,110,128,49,80,237,225,227,242,239,110,128,1,227,230,233,105,6,43,33,43,53,45,246,45,252,46,11,49,111,48,2,43,39,43,46,176,178,176,56,128,32,21,184,185,180,49,128,32,164,177,48,3,43,62,45,86,45,221,48,9,43,82,43,102,43,164,43,226,44,32,44,94,44,156,44,218,45,24,49,3,43,90,43,94,43,98,55,128,4,16,56,128,4,17,57,128,4,18,50,10,43,124,43,128,43,132,43,136,43,140,43,144,43,148,43,152,43,156,43,160,48,128,4,19,49,128,4,20,50,128,4,21,51,128,4,1,52,128,4,22,53,128,4,23,54,128,4,24,55,128,4,25,56,128,4,26,57,128,4,27,51,10,43,186,43,190,43,194,43,198,43,202,43,206,43,210,43,214,43,218,43,222,48,128,4,28,49,128,4,29,50,128,4,30,51,128,4,31,52,128,4,32,53,128,4,33,54,128,4,34,55,128,4,35,56,128,4,36,57,128,4,37,52,10,43,248,43,252,44,0,44,4,44,8,44,12,44,16,44,20,44,24,44,28,48,128,4,38,49,128,4,39,50,128,4,40,51,128,4,41,52,128,4,42,53,128,4,43,54,128,4,44,55,128,4,45,56,128,4,46,57,128,4,47,53,10,44,54,44,58,44,62,44,66,44,70,44,74,44,78,44,82,44,86,44,90,48,128,4,144,49,128,4,2,50,128,4,3,51,128,4,4,52,128,4,5,53,128,4,6,54,128,4,7,55,128,4,8,56,128,4,9,57,128,4,10,54,10,44,116,44,120,44,124,44,128,44,132,44,136,44,140,44,144,44,148,44,152,48,128,4,11,49,128,4,12,50,128,4,14,51,128,246,196,52,128,246,197,53,128,4,48,54,128,4,49,55,128,4,50,56,128,4,51,57,128,4,52,55,10,44,178,44,182,44,186,44,190,44,194,44,198,44,202,44,206,44,210,44,214,48,128,4,53,49,128,4,81,50,128,4,54,51,128,4,55,52,128,4,56,53,128,4,57,54,128,4,58,55,128,4,59,56,128,4,60,57,128,4,61,56,10,44,240,44,244,44,248,44,252,45,0,45,4,45,8,45,12,45,16,45,20,48,128,4,62,49,128,4,63,50,128,4,64,51,128,4,65,52,128,4,66,53,128,4,67,54,128,4,68,55,128,4,69,56,128,4,70,57,128,4,71,57,10,45,46,45,50,45,54,45,58,45,62,45,66,45,70,45,74,45,78,45,82,48,128,4,72,49,128,4,73,50,128,4,74,51,128,4,75,52,128,4,76,53,128,4,77,54,128,4,78,55,128,4,79,56,128,4,145,57,128,4,82,49,4,45,96,45,158,45,163,45,189,48,10,45,118,45,122,45,126,45,130,45,134,45,138,45,142,45,146,45,150,45,154,48,128,4,83,49,128,4,84,50,128,4,85,51,128,4,86,52,128,4,87,53,128,4,88,54,128,4,89,55,128,4,90,56,128,4,91,57,128,4,92,177,48,128,4,94,52,4,45,173,45,177,45,181,45,185,53,128,4,15,54,128,4,98,55,128,4,114,56,128,4,116,57,5,45,201,45,205,45,209,45,213,45,217,50,128,246,198,51,128,4,95,52,128,4,99,53,128,4,115,54,128,4,117,56,2,45,227,45,241,51,2,45,233,45,237,49,128,246,199,50,128,246,200,180,54,128,4,217,178,185,57,128,32,14,179,48,2,46,3,46,7,48,128,32,15,49,128,32,13,181,55,7,46,28,46,98,47,163,47,240,48,197,49,34,49,105,51,2,46,34,46,48,56,2,46,40,46,44,49,128,6,106,56,128,6,12,57,8,46,66,46,70,46,74,46,78,46,82,46,86,46,90,46,94,50,128,6,96,51,128,6,97,52,128,6,98,53,128,6,99,54,128,6,100,55,128,6,101,56,128,6,102,57,128,6,103,52,7,46,114,46,146,46,208,47,14,47,46,47,102,47,158,48,5,46,126,46,130,46,134,46,138,46,142,48,128,6,104,49,128,6,105,51,128,6,27,55,128,6,31,57,128,6,33,49,10,46,168,46,172,46,176,46,180,46,184,46,188,46,192,46,196,46,200,46,204,48,128,6,34,49,128,6,35,50,128,6,36,51,128,6,37,52,128,6,38,53,128,6,39,54,128,6,40,55,128,6,41,56,128,6,42,57,128,6,43,50,10,46,230,46,234,46,238,46,242,46,246,46,250,46,254,47,2,47,6,47,10,48,128,6,44,49,128,6,45,50,128,6,46,51,128,6,47,52,128,6,48,53,128,6,49,54,128,6,50,55,128,6,51,56,128,6,52,57,128,6,53,51,5,47,26,47,30,47,34,47,38,47,42,48,128,6,54,49,128,6,55,50,128,6,56,51,128,6,57,52,128,6,58,52,9,47,66,47,70,47,74,47,78,47,82,47,86,47,90,47,94,47,98,48,128,6,64,49,128,6,65,50,128,6,66,51,128,6,67,52,128,6,68,53,128,6,69,54,128,6,70,56,128,6,72,57,128,6,73,53,9,47,122,47,126,47,130,47,134,47,138,47,142,47,146,47,150,47,154,48,128,6,74,49,128,6,75,50,128,6,76,51,128,6,77,52,128,6,78,53,128,6,79,54,128,6,80,55,128,6,81,56,128,6,82,183,48,128,6,71,53,3,47,171,47,203,47,235,48,5,47,183,47,187,47,191,47,195,47,199,53,128,6,164,54,128,6,126,55,128,6,134,56,128,6,152,57,128,6,175,49,5,47,215,47,219,47,223,47,227,47,231,49,128,6,121,50,128,6,136,51,128,6,145,52,128,6,186,57,128,6,210,179,52,128,6,213,54,7,48,0,48,5,48,10,48,15,48,53,48,115,48,177,179,54,128,32,170,180,53,128,5,190,181,56,128,5,195,54,6,48,29,48,33,48,37,48,41,48,45,48,49,52,128,5,208,53,128,5,209,54,128,5,210,55,128,5,211,56,128,5,212,57,128,5,213,55,10,48,75,48,79,48,83,48,87,48,91,48,95,48,99,48,103,48,107,48,111,48,128,5,214,49,128,5,215,50,128,5,216,51,128,5,217,52,128,5,218,53,128,5,219,54,128,5,220,55,128,5,221,56,128,5,222,57,128,5,223,56,10,48,137,48,141,48,145,48,149,48,153,48,157,48,161,48,165,48,169,48,173,48,128,5,224,49,128,5,225,50,128,5,226,51,128,5,227,52,128,5,228,53,128,5,229,54,128,5,230,55,128,5,231,56,128,5,232,57,128,5,233,57,3,48,185,48,189,48,193,48,128,5,234,52,128,251,42,53,128,251,43,55,4,48,207,48,221,48,241,48,246,48,2,48,213,48,217,48,128,251,75,53,128,251,31,49,3,48,229,48,233,48,237,54,128,5,240,55,128,5,241,56,128,5,242,178,51,128,251,53,57,7,49,6,49,10,49,14,49,18,49,22,49,26,49,30,51,128,5,180,52,128,5,181,53,128,5,182,54,128,5,187,55,128,5,184,56,128,5,183,57,128,5,176,56,3,49,42,49,86,49,91,48,7,49,58,49,62,49,66,49,70,49,74,49,78,49,82,48,128,5,178,49,128,5,177,50,128,5,179,51,128,5,194,52,128,5,193,54,128,5,185,55,128,5,188,179,57,128,5,189,52,2,49,97,49,101,49,128,5,191,50,128,5,192,185,178,57,128,2,188,54,3,49,119,49,178,49,185,49,4,49,129,49,145,49,151,49,172,50,2,49,135,49,140,180,56,128,33,5,184,57,128,33,19,179,181,50,128,33,22,181,55,3,49,160,49,164,49,168,51,128,32,44,52,128,32,45,53,128,32,46,182,182,52,128,32,12,179,177,182,55,128,6,109,180,185,179,55,128,2,189,103,2,49,198,49,205,242,225,246,101,128,0,224,117,2,49,211,49,220,234,225,242,225,244,105,128,10,133,242,237,245,235,232,105,128,10,5,104,2,49,235,49,245,233,242,225,231,225,238,97,128,48,66,239,239,235,225,226,239,246,101,128,30,163,105,7,50,16,50,41,50,48,50,60,50,85,50,101,50,181,98,2,50,22,50,31,229,238,231,225,236,105,128,9,144,239,240,239,237,239,230,111,128,49,30,228,229,246,97,128,9,16,229,227,249,242,233,236,236,233,99,128,4,213,231,117,2,50,67,50,76,234,225,242,225,244,105,128,10,144,242,237,245,235,232,105,128,10,16,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,72,110,5,50,113,50,122,50,136,50,152,50,167,225,242,225,226,233,99,128,6,57,230,233,238,225,236,225,242,225,226,233,99,128,254,202,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,203,237,229,228,233,225,236,225,242,225,226,233,99,128,254,204,246,229,242,244,229,228,226,242,229,246,101,128,2,3,246,239,247,229,236,243,233,231,110,3,50,197,50,207,50,214,226,229,238,231,225,236,105,128,9,200,228,229,246,97,128,9,72,231,245,234,225,242,225,244,105,128,10,200,107,2,50,231,50,255,225,244,225,235,225,238,97,129,48,162,50,243,232,225,236,230,247,233,228,244,104,128,255,113,239,242,229,225,110,128,49,79,108,3,51,15,52,71,52,80,101,2,51,21,52,66,102,136,5,208,51,41,51,50,51,65,51,79,51,168,51,182,52,37,52,51,225,242,225,226,233,99,128,6,39,228,225,231,229,243,232,232,229,226,242,229,119,128,251,48,230,233,238,225,236,225,242,225,226,233,99,128,254,142,104,2,51,85,51,160,225,237,250,97,2,51,94,51,127,225,226,239,246,101,2,51,104,51,113,225,242,225,226,233,99,128,6,35,230,233,238,225,236,225,242,225,226,233,99,128,254,132,226,229,236,239,119,2,51,137,51,146,225,242,225,226,233,99,128,6,37,230,233,238,225,236,225,242,225,226,233,99,128,254,136,229,226,242,229,119,128,5,208,236,225,237,229,228,232,229,226,242,229,119,128,251,79,237,97,2,51,189,51,225,228,228,225,225,226,239,246,101,2,51,202,51,211,225,242,225,226,233,99,128,6,34,230,233,238,225,236,225,242,225,226,233,99,128,254,130,235,243,245,242,97,4,51,239,51,248,52,6,52,22,225,242,225,226,233,99,128,6,73,230,233,238,225,236,225,242,225,226,233,99,128,254,240,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,243,237,229,228,233,225,236,225,242,225,226,233,99,128,254,244,240,225,244,225,232,232,229,226,242,229,119,128,251,46,241,225,237,225,244,243,232,229,226,242,229,119,128,251,47,240,104,128,33,53,236,229,241,245,225,108,128,34,76,240,232,97,129,3,177,52,88,244,239,238,239,115,128,3,172,109,4,52,106,52,114,52,125,52,159,225,227,242,239,110,128,1,1,239,238,239,243,240,225,227,101,128,255,65,240,229,242,243,225,238,100,130,0,38,52,139,52,151,237,239,238,239,243,240,225,227,101,128,255,6,243,237,225,236,108,128,247,38,243,241,245,225,242,101,128,51,194,110,4,52,178,52,189,53,55,53,65,226,239,240,239,237,239,230,111,128,49,34,103,4,52,199,52,210,52,224,53,47,226,239,240,239,237,239,230,111,128,49,36,235,232,225,238,235,232,245,244,232,225,105,128,14,90,236,101,131,34,32,52,235,53,32,53,39,226,242,225,227,235,229,116,2,52,247,53,11,236,229,230,116,129,48,8,53,0,246,229,242,244,233,227,225,108,128,254,63,242,233,231,232,116,129,48,9,53,21,246,229,242,244,233,227,225,108,128,254,64,236,229,230,116,128,35,41,242,233,231,232,116,128,35,42,243,244,242,239,109,128,33,43,239,244,229,236,229,233,97,128,3,135,117,2,53,71,53,83,228,225,244,244,225,228,229,246,97,128,9,82,243,246,225,242,97,3,53,95,53,105,53,112,226,229,238,231,225,236,105,128,9,130,228,229,246,97,128,9,2,231,245,234,225,242,225,244,105,128,10,130,239,231,239,238,229,107,128,1,5,112,3,53,140,53,164,53,194,97,2,53,146,53,158,225,244,239,243,241,245,225,242,101,128,51,0,242,229,110,128,36,156,239,243,244,242,239,240,232,101,2,53,177,53,188,225,242,237,229,238,233,225,110,128,5,90,237,239,100,128,2,188,112,2,53,200,53,205,236,101,128,248,255,242,111,2,53,212,53,220,225,227,232,229,115,128,34,80,120,2,53,226,53,246,229,241,245,225,108,129,34,72,53,236,239,242,233,237,225,231,101,128,34,82,233,237,225,244,229,236,249,229,241,245,225,108,128,34,69,114,4,54,15,54,42,54,46,54,91,225,229,97,2,54,23,54,33,229,235,239,242,229,225,110,128,49,142,235,239,242,229,225,110,128,49,141,99,128,35,18,105,2,54,52,54,66,231,232,244,232,225,236,230,242,233,238,103,128,30,154,238,103,130,0,229,54,75,54,83,225,227,245,244,101,128,1,251,226,229,236,239,119,128,30,1,242,239,119,8,54,111,54,118,54,247,55,57,55,107,55,162,55,185,56,4,226,239,244,104,128,33,148,100,3,54,126,54,165,54,212,225,243,104,4,54,138,54,145,54,152,54,160,228,239,247,110,128,33,227,236,229,230,116,128,33,224,242,233,231,232,116,128,33,226,245,112,128,33,225,226,108,5,54,178,54,185,54,192,54,199,54,207,226,239,244,104,128,33,212,228,239,247,110,128,33,211,236,229,230,116,128,33,208,242,233,231,232,116,128,33,210,245,112,128,33,209,239,247,110,131,33,147,54,224,54,231,54,239,236,229,230,116,128,33,153,242,233,231,232,116,128,33,152,247,232,233,244,101,128,33,233,104,2,54,253,55,48,229,225,100,4,55,9,55,19,55,29,55,40,228,239,247,238,237,239,100,128,2,197,236,229,230,244,237,239,100,128,2,194,242,233,231,232,244,237,239,100,128,2,195,245,240,237,239,100,128,2,196,239,242,233,250,229,120,128,248,231,236,229,230,116,131,33,144,55,70,55,87,55,99,228,226,108,129,33,208,55,78,243,244,242,239,235,101,128,33,205,239,246,229,242,242,233,231,232,116,128,33,198,247,232,233,244,101,128,33,230,242,233,231,232,116,132,33,146,55,123,55,135,55,143,55,154,228,226,236,243,244,242,239,235,101,128,33,207,232,229,225,246,121,128,39,158,239,246,229,242,236,229,230,116,128,33,196,247,232,233,244,101,128,33,232,244,225,98,2,55,170,55,177,236,229,230,116,128,33,228,242,233,231,232,116,128,33,229,245,112,132,33,145,55,198,55,226,55,244,55,252,100,2,55,204,55,216,110,129,33,149,55,210,226,243,101,128,33,168],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+30720);allocate([239,247,238,226,225,243,101,128,33,168,236,229,230,116,129,33,150,55,235,239,230,228,239,247,110,128,33,197,242,233,231,232,116,128,33,151,247,232,233,244,101,128,33,231,246,229,242,244,229,120,128,248,230,115,5,56,25,56,101,56,146,56,229,56,239,99,2,56,31,56,83,233,105,2,56,38,56,61,227,233,242,227,245,109,129,0,94,56,49,237,239,238,239,243,240,225,227,101,128,255,62,244,233,236,228,101,129,0,126,56,71,237,239,238,239,243,240,225,227,101,128,255,94,242,233,240,116,129,2,81,56,92,244,245,242,238,229,100,128,2,82,237,225,236,108,2,56,110,56,121,232,233,242,225,231,225,238,97,128,48,65,235,225,244,225,235,225,238,97,129,48,161,56,134,232,225,236,230,247,233,228,244,104,128,255,103,244,229,242,233,115,2,56,156,56,225,107,131,0,42,56,166,56,194,56,217,97,2,56,172,56,186,236,244,239,238,229,225,242,225,226,233,99,128,6,109,242,225,226,233,99,128,6,109,109,2,56,200,56,206,225,244,104,128,34,23,239,238,239,243,240,225,227,101,128,255,10,243,237,225,236,108,128,254,97,109,128,32,66,245,240,229,242,233,239,114,128,246,233,249,237,240,244,239,244,233,227,225,236,236,249,229,241,245,225,108,128,34,67,116,132,0,64,57,15,57,22,57,34,57,42,233,236,228,101,128,0,227,237,239,238,239,243,240,225,227,101,128,255,32,243,237,225,236,108,128,254,107,245,242,238,229,100,128,2,80,117,6,57,64,57,89,57,96,57,121,57,141,57,157,98,2,57,70,57,79,229,238,231,225,236,105,128,9,148,239,240,239,237,239,230,111,128,49,32,228,229,246,97,128,9,20,231,117,2,57,103,57,112,234,225,242,225,244,105,128,10,148,242,237,245,235,232,105,128,10,20,236,229,238,231,244,232,237,225,242,235,226,229,238,231,225,236,105,128,9,215,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,76,246,239,247,229,236,243,233,231,110,3,57,173,57,183,57,190,226,229,238,231,225,236,105,128,9,204,228,229,246,97,128,9,76,231,245,234,225,242,225,244,105,128,10,204,246,225,231,242,225,232,225,228,229,246,97,128,9,61,121,2,57,221,57,233,226,225,242,237,229,238,233,225,110,128,5,97,233,110,130,5,226,57,242,58,1,225,236,244,239,238,229,232,229,226,242,229,119,128,251,32,232,229,226,242,229,119,128,5,226,98,144,0,98,58,46,58,181,58,192,58,201,58,226,60,11,60,73,60,146,62,72,62,84,62,127,62,135,62,145,64,15,64,39,64,48,97,7,58,62,58,72,58,96,58,103,58,128,58,152,58,163,226,229,238,231,225,236,105,128,9,172,227,235,243,236,225,243,104,129,0,92,58,84,237,239,238,239,243,240,225,227,101,128,255,60,228,229,246,97,128,9,44,231,117,2,58,110,58,119,234,225,242,225,244,105,128,10,172,242,237,245,235,232,105,128,10,44,104,2,58,134,58,144,233,242,225,231,225,238,97,128,48,112,244,244,232,225,105,128,14,63,235,225,244,225,235,225,238,97,128,48,208,114,129,0,124,58,169,237,239,238,239,243,240,225,227,101,128,255,92,226,239,240,239,237,239,230,111,128,49,5,227,233,242,227,236,101,128,36,209,228,239,116,2,58,209,58,218,225,227,227,229,238,116,128,30,3,226,229,236,239,119,128,30,5,101,6,58,240,59,5,59,28,59,170,59,181,59,193,225,237,229,228,243,233,248,244,229,229,238,244,232,238,239,244,229,115,128,38,108,99,2,59,11,59,18,225,245,243,101,128,34,53,249,242,233,236,236,233,99,128,4,49,104,5,59,40,59,49,59,63,59,93,59,152,225,242,225,226,233,99,128,6,40,230,233,238,225,236,225,242,225,226,233,99,128,254,144,105,2,59,69,59,84,238,233,244,233,225,236,225,242,225,226,233,99,128,254,145,242,225,231,225,238,97,128,48,121,237,101,2,59,100,59,113,228,233,225,236,225,242,225,226,233,99,128,254,146,229,237,105,2,59,121,59,136,238,233,244,233,225,236,225,242,225,226,233,99,128,252,159,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,8,238,239,239,238,230,233,238,225,236,225,242,225,226,233,99,128,252,109,235,225,244,225,235,225,238,97,128,48,217,238,225,242,237,229,238,233,225,110,128,5,98,116,132,5,209,59,205,59,225,59,245,59,254,97,129,3,178,59,211,243,249,237,226,239,236,231,242,229,229,107,128,3,208,228,225,231,229,243,104,129,251,49,59,236,232,229,226,242,229,119,128,251,49,232,229,226,242,229,119,128,5,209,242,225,230,229,232,229,226,242,229,119,128,251,76,104,2,60,17,60,67,97,3,60,25,60,35,60,42,226,229,238,231,225,236,105,128,9,173,228,229,246,97,128,9,45,231,117,2,60,49,60,58,234,225,242,225,244,105,128,10,173,242,237,245,235,232,105,128,10,45,239,239,107,128,2,83,105,5,60,85,60,96,60,107,60,121,60,135,232,233,242,225,231,225,238,97,128,48,115,235,225,244,225,235,225,238,97,128,48,211,236,225,226,233,225,236,227,236,233,227,107,128,2,152,238,228,233,231,245,242,237,245,235,232,105,128,10,2,242,245,243,241,245,225,242,101,128,51,49,108,3,60,154,62,55,62,66,97,2,60,160,62,50,227,107,6,60,175,60,184,60,221,61,114,61,169,61,221,227,233,242,227,236,101,128,37,207,100,2,60,190,60,199,233,225,237,239,238,100,128,37,198,239,247,238,240,239,233,238,244,233,238,231,244,242,233,225,238,231,236,101,128,37,188,108,2,60,227,61,74,101,2,60,233,61,13,230,244,240,239,233,238,244,233,238,103,2,60,248,61,2,240,239,233,238,244,229,114,128,37,196,244,242,233,225,238,231,236,101,128,37,192,238,244,233,227,245,236,225,242,226,242,225,227,235,229,116,2,61,33,61,53,236,229,230,116,129,48,16,61,42,246,229,242,244,233,227,225,108,128,254,59,242,233,231,232,116,129,48,17,61,63,246,229,242,244,233,227,225,108,128,254,60,239,247,229,114,2,61,83,61,98,236,229,230,244,244,242,233,225,238,231,236,101,128,37,227,242,233,231,232,244,244,242,233,225,238,231,236,101,128,37,226,114,2,61,120,61,131,229,227,244,225,238,231,236,101,128,37,172,233,231,232,244,240,239,233,238,244,233,238,103,2,61,148,61,158,240,239,233,238,244,229,114,128,37,186,244,242,233,225,238,231,236,101,128,37,182,115,3,61,177,61,207,61,215,109,2,61,183,61,195,225,236,236,243,241,245,225,242,101,128,37,170,233,236,233,238,231,230,225,227,101,128,38,59,241,245,225,242,101,128,37,160,244,225,114,128,38,5,245,240,112,2,61,229,62,11,229,114,2,61,236,61,251,236,229,230,244,244,242,233,225,238,231,236,101,128,37,228,242,233,231,232,244,244,242,233,225,238,231,236,101,128,37,229,239,233,238,244,233,238,103,2,62,23,62,39,243,237,225,236,236,244,242,233,225,238,231,236,101,128,37,180,244,242,233,225,238,231,236,101,128,37,178,238,107,128,36,35,233,238,229,226,229,236,239,119,128,30,7,239,227,107,128,37,136,237,239,238,239,243,240,225,227,101,128,255,66,111,3,62,92,62,105,62,116,226,225,233,237,225,233,244,232,225,105,128,14,26,232,233,242,225,231,225,238,97,128,48,124,235,225,244,225,235,225,238,97,128,48,220,240,225,242,229,110,128,36,157,241,243,241,245,225,242,101,128,51,195,114,4,62,155,63,149,63,222,64,5,225,99,2,62,162,63,56,101,3,62,170,62,175,62,243,229,120,128,248,244,236,229,230,116,133,0,123,62,192,62,197,62,219,62,227,62,232,226,116,128,248,243,109,2,62,203,62,208,233,100,128,248,242,239,238,239,243,240,225,227,101,128,255,91,243,237,225,236,108,128,254,91,244,112,128,248,241,246,229,242,244,233,227,225,108,128,254,55,242,233,231,232,116,133,0,125,63,5,63,10,63,32,63,40,63,45,226,116,128,248,254,109,2,63,16,63,21,233,100,128,248,253,239,238,239,243,240,225,227,101,128,255,93,243,237,225,236,108,128,254,92,244,112,128,248,252,246,229,242,244,233,227,225,108,128,254,56,235,229,116,2,63,64,63,106,236,229,230,116,132,0,91,63,79,63,84,63,89,63,101,226,116,128,248,240,229,120,128,248,239,237,239,238,239,243,240,225,227,101,128,255,59,244,112,128,248,238,242,233,231,232,116,132,0,93,63,122,63,127,63,132,63,144,226,116,128,248,251,229,120,128,248,250,237,239,238,239,243,240,225,227,101,128,255,61,244,112,128,248,249,229,246,101,131,2,216,63,161,63,172,63,178,226,229,236,239,247,227,237,98,128,3,46,227,237,98,128,3,6,233,238,246,229,242,244,229,100,3,63,193,63,204,63,210,226,229,236,239,247,227,237,98,128,3,47,227,237,98,128,3,17,228,239,245,226,236,229,227,237,98,128,3,97,233,228,231,101,2,63,231,63,242,226,229,236,239,247,227,237,98,128,3,42,233,238,246,229,242,244,229,228,226,229,236,239,247,227,237,98,128,3,58,239,235,229,238,226,225,114,128,0,166,115,2,64,21,64,29,244,242,239,235,101,128,1,128,245,240,229,242,233,239,114,128,246,234,244,239,240,226,225,114,128,1,131,117,3,64,56,64,67,64,78,232,233,242,225,231,225,238,97,128,48,118,235,225,244,225,235,225,238,97,128,48,214,236,108,2,64,85,64,115,229,116,130,32,34,64,94,64,104,233,238,246,229,242,243,101,128,37,216,239,240,229,242,225,244,239,114,128,34,25,243,229,249,101,128,37,206,99,143,0,99,64,156,65,105,65,116,65,180,65,211,66,48,67,215,68,199,69,43,69,92,72,84,72,92,72,102,72,114,72,147,97,9,64,176,64,187,64,197,64,204,64,211,64,236,64,246,65,42,65,51,225,242,237,229,238,233,225,110,128,5,110,226,229,238,231,225,236,105,128,9,154,227,245,244,101,128,1,7,228,229,246,97,128,9,26,231,117,2,64,218,64,227,234,225,242,225,244,105,128,10,154,242,237,245,235,232,105,128,10,26,236,243,241,245,225,242,101,128,51,136,238,228,242,225,226,233,238,228,117,4,65,8,65,18,65,24,65,31,226,229,238,231,225,236,105,128,9,129,227,237,98,128,3,16,228,229,246,97,128,9,1,231,245,234,225,242,225,244,105,128,10,129,240,243,236,239,227,107,128,33,234,114,3,65,59,65,65,65,91,229,239,102,128,33,5,239,110,130,2,199,65,74,65,85,226,229,236,239,247,227,237,98,128,3,44,227,237,98,128,3,12,242,233,225,231,229,242,229,244,245,242,110,128,33,181,226,239,240,239,237,239,230,111,128,49,24,99,4,65,126,65,133,65,152,65,174,225,242,239,110,128,1,13,229,228,233,236,236,97,129,0,231,65,144,225,227,245,244,101,128,30,9,233,242,99,2,65,160,65,165,236,101,128,36,210,245,237,230,236,229,120,128,1,9,245,242,108,128,2,85,100,2,65,186,65,202,239,116,129,1,11,65,193,225,227,227,229,238,116,128,1,11,243,241,245,225,242,101,128,51,197,101,2,65,217,65,233,228,233,236,236,97,129,0,184,65,227,227,237,98,128,3,39,238,116,132,0,162,65,246,66,14,66,26,66,37,105,2,65,252,66,4,231,242,225,228,101,128,33,3,238,230,229,242,233,239,114,128,246,223,237,239,238,239,243,240,225,227,101,128,255,224,239,236,228,243,244,249,236,101,128,247,162,243,245,240,229,242,233,239,114,128,246,224,104,5,66,60,66,123,66,134,67,62,67,154,97,4,66,70,66,81,66,91,66,98,225,242,237,229,238,233,225,110,128,5,121,226,229,238,231,225,236,105,128,9,155,228,229,246,97,128,9,27,231,117,2,66,105,66,114,234,225,242,225,244,105,128,10,155,242,237,245,235,232,105,128,10,27,226,239,240,239,237,239,230,111,128,49,20,101,6,66,148,66,168,66,192,67,4,67,16,67,37,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,189,99,2,66,174,66,182,235,237,225,242,107,128,39,19,249,242,233,236,236,233,99,128,4,71,100,2,66,198,66,242,229,243,227,229,238,228,229,114,2,66,211,66,231,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,191,227,249,242,233,236,236,233,99,128,4,183,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,245,232,225,242,237,229,238,233,225,110,128,5,115,235,232,225,235,225,243,243,233,225,238,227,249,242,233,236,236,233,99,128,4,204,246,229,242,244,233,227,225,236,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,185,105,129,3,199,67,68,229,245,227,104,4,67,81,67,116,67,131,67,140,97,2,67,87,67,102,227,233,242,227,236,229,235,239,242,229,225,110,128,50,119,240,225,242,229,238,235,239,242,229,225,110,128,50,23,227,233,242,227,236,229,235,239,242,229,225,110,128,50,105,235,239,242,229,225,110,128,49,74,240,225,242,229,238,235,239,242,229,225,110,128,50,9,111,2,67,160,67,210,227,104,3,67,169,67,191,67,201,225,110,2,67,176,67,184,231,244,232,225,105,128,14,10,244,232,225,105,128,14,8,233,238,231,244,232,225,105,128,14,9,239,229,244,232,225,105,128,14,12,239,107,128,1,136,105,2,67,221,68,67,229,245,99,5,67,235,68,14,68,29,68,38,68,52,97,2,67,241,68,0,227,233,242,227,236,229,235,239,242,229,225,110,128,50,118,240,225,242,229,238,235,239,242,229,225,110,128,50,22,227,233,242,227,236,229,235,239,242,229,225,110,128,50,104,235,239,242,229,225,110,128,49,72,240,225,242,229,238,235,239,242,229,225,110,128,50,8,245,240,225,242,229,238,235,239,242,229,225,110,128,50,28,242,99,2,68,74,68,169,236,101,132,37,203,68,87,68,98,68,103,68,127,237,245,236,244,233,240,236,121,128,34,151,239,116,128,34,153,112,2,68,109,68,115,236,245,115,128,34,149,239,243,244,225,236,237,225,242,107,128,48,54,247,233,244,104,2,68,136,68,152,236,229,230,244,232,225,236,230,226,236,225,227,107,128,37,208,242,233,231,232,244,232,225,236,230,226,236,225,227,107,128,37,209,245,237,230,236,229,120,130,2,198,68,182,68,193,226,229,236,239,247,227,237,98,128,3,45,227,237,98,128,3,2,108,3,68,207,68,213,69,11,229,225,114,128,35,39,233,227,107,4,68,225,68,236,68,245,68,255,225,236,246,229,239,236,225,114,128,1,194,228,229,238,244,225,108,128,1,192,236,225,244,229,242,225,108,128,1,193,242,229,244,242,239,230,236,229,120,128,1,195,245,98,129,38,99,69,18,243,245,233,116,2,69,27,69,35,226,236,225,227,107,128,38,99,247,232,233,244,101,128,38,103,109,3,69,51,69,65,69,76,227,245,226,229,228,243,241,245,225,242,101,128,51,164,239,238,239,243,240,225,227,101,128,255,67,243,241,245,225,242,229,228,243,241,245,225,242,101,128,51,160,111,8,69,110,69,121,69,208,70,150,71,179,71,210,72,61,72,70,225,242,237,229,238,233,225,110,128,5,129,236,239,110,131,0,58,69,133,69,158,69,177,237,239,110,2,69,141,69,149,229,244,225,242,121,128,32,161,239,243,240,225,227,101,128,255,26,115,2,69,164,69,170,233,231,110,128,32,161,237,225,236,108,128,254,85,244,242,233,225,238,231,245,236,225,114,2,69,192,69,202,232,225,236,230,237,239,100,128,2,209,237,239,100,128,2,208,109,2,69,214,70,143,237,97,134,0,44,69,231,70,39,70,50,70,62,70,92,70,115,97,3,69,239,70,9,70,17,226,239,246,101,2,69,248,69,254,227,237,98,128,3,19,242,233,231,232,244,227,237,98,128,3,21,227,227,229,238,116,128,246,195,114,2,70,23,70,30,225,226,233,99,128,6,12,237,229,238,233,225,110,128,5,93,233,238,230,229,242,233,239,114,128,246,225,237,239,238,239,243,240,225,227,101,128,255,12,242,229,246,229,242,243,229,100,2,70,75,70,86,225,226,239,246,229,227,237,98,128,3,20,237,239,100,128,2,189,115,2,70,98,70,105,237,225,236,108,128,254,80,245,240,229,242,233,239,114,128,246,226,244,245,242,238,229,100,2,70,126,70,137,225,226,239,246,229,227,237,98,128,3,18,237,239,100,128,2,187,240,225,243,115,128,38,60,110,2,70,156,70,165,231,242,245,229,238,116,128,34,69,116,2,70,171,70,185,239,245,242,233,238,244,229,231,242,225,108,128,34,46,242,239,108,142,35,3,70,219,70,225,70,240,70,255,71,43,71,88,71,102,71,107,71,112,71,117,71,123,71,128,71,169,71,174,193,195,75,128,0,6,66,2,70,231,70,236,197,76,128,0,7,83,128,0,8,67,2,70,246,70,251,193,78,128,0,24,82,128,0,13,68,3,71,7,71,33,71,38,67,4,71,17,71,21,71,25,71,29,49,128,0,17,50,128,0,18,51,128,0,19,52,128,0,20,197,76,128,0,127,204,69,128,0,16,69,5,71,55,71,59,71,64,71,69,71,74,77,128,0,25,206,81,128,0,5,207,84,128,0,4,211,67,128,0,27,84,2,71,80,71,84,66,128,0,23,88,128,0,3,70,2,71,94,71,98,70,128,0,12,83,128,0,28,199,83,128,0,29,200,84,128,0,9,204,70,128,0,10,206,193,75,128,0,21,210,83,128,0,30,83,5,71,140,71,144,71,154,71,159,71,164,73,128,0,15,79,129,0,14,71,150,84,128,0,2,212,88,128,0,1,213,66,128,0,26,217,78,128,0,22,213,83,128,0,31,214,84,128,0,11,240,249,242,233,231,232,116,129,0,169,71,191,115,2,71,197,71,203,225,238,115,128,248,233,229,242,233,102,128,246,217,114,2,71,216,72,44,238,229,242,226,242,225,227,235,229,116,2,71,231,72,9,236,229,230,116,130,48,12,71,242,71,254,232,225,236,230,247,233,228,244,104,128,255,98,246,229,242,244,233,227,225,108,128,254,65,242,233,231,232,116,130,48,13,72,21,72,33,232,225,236,230,247,233,228,244,104,128,255,99,246,229,242,244,233,227,225,108,128,254,66,240,239,242,225,244,233,239,238,243,241,245,225,242,101,128,51,127,243,241,245,225,242,101,128,51,199,246,229,242,235,231,243,241,245,225,242,101,128,51,198,240,225,242,229,110,128,36,158,242,245,250,229,233,242,111,128,32,162,243,244,242,229,244,227,232,229,100,128,2,151,245,114,2,72,121,72,139,236,121,2,72,128,72,134,225,238,100,128,34,207,239,114,128,34,206,242,229,238,227,121,128,0,164,249,114,4,72,158,72,166,72,173,72,181,194,242,229,246,101,128,246,209,198,236,229,120,128,246,210,226,242,229,246,101,128,246,212,230,236,229,120,128,246,213,100,146,0,100,72,228,74,110,75,134,75,194,76,114,77,68,77,130,78,59,78,72,78,81,78,107,78,132,78,141,79,208,79,216,79,227,79,247,80,19,97,11,72,252,73,7,73,17,73,89,73,152,73,163,73,174,73,243,74,49,74,55,74,85,225,242,237,229,238,233,225,110,128,5,100,226,229,238,231,225,236,105,128,9,166,100,5,73,29,73,38,73,44,73,58,73,74,225,242,225,226,233,99,128,6,54,229,246,97,128,9,38,230,233,238,225,236,225,242,225,226,233,99,128,254,190,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,191,237,229,228,233,225,236,225,242,225,226,233,99,128,254,192,103,3,73,97,73,114,73,128,229,243,104,129,5,188,73,105,232,229,226,242,229,119,128,5,188,231,229,114,129,32,32,73,122,228,226,108,128,32,33,117,2,73,134,73,143,234,225,242,225,244,105,128,10,166,242,237,245,235,232,105,128,10,38,232,233,242,225,231,225,238,97,128,48,96,235,225,244,225,235,225,238,97,128,48,192,108,3,73,182,73,191,73,229,225,242,225,226,233,99,128,6,47,229,116,130,5,211,73,200,73,220,228,225,231,229,243,104,129,251,51,73,211,232,229,226,242,229,119,128,251,51,232,229,226,242,229,119,128,5,211,230,233,238,225,236,225,242,225,226,233,99,128,254,170,237,237,97,3,73,253,74,6,74,18,225,242,225,226,233,99,128,6,79,236,239,247,225,242,225,226,233,99,128,6,79,244,225,238,97,2,74,27,74,41,236,244,239,238,229,225,242,225,226,233,99,128,6,76,242,225,226,233,99,128,6,76,238,228,97,128,9,100,242,231,97,2,74,63,74,72,232,229,226,242,229,119,128,5,167,236,229,230,244,232,229,226,242,229,119,128,5,167,243,233,225,240,238,229,245,237,225,244,225,227,249,242,233,236,236,233,227,227,237,98,128,4,133,98,3,74,118,75,115,75,125,108,9,74,138,74,146,75,3,75,11,75,27,75,38,75,56,75,70,75,81,199,242,225,246,101,128,246,211,97,2,74,152,74,209,238,231,236,229,226,242,225,227,235,229,116,2,74,168,74,188,236,229,230,116,129,48,10,74,177,246,229,242,244,233,227,225,108,128,254,61,242,233,231,232,116,129,48,11,74,198,246,229,242,244,233,227,225,108,128,254,62,114,2,74,215,74,236,227,232,233,238,246,229,242,244,229,228,226,229,236,239,247,227,237,98,128,3,43,242,239,119,2,74,244,74,251,236,229,230,116,128,33,212,242,233,231,232,116,128,33,210,228,225,238,228,97,128,9,101,231,242,225,246,101,129,246,214,75,21,227,237,98,128,3,15,233,238,244,229,231,242,225,108,128,34,44,236,239,247,236,233,238,101,129,32,23,75,50,227,237,98,128,3,51,239,246,229,242,236,233,238,229,227,237,98,128,3,63,240,242,233,237,229,237,239,100,128,2,186,246,229,242,244,233,227,225,108,2,75,94,75,100,226,225,114,128,32,22,236,233,238,229,225,226,239,246,229,227,237,98,128,3,14,239,240,239,237,239,230,111,128,49,9,243,241,245,225,242,101,128,51,200,99,4,75,144,75,151,75,160,75,187,225,242,239,110,128,1,15,229,228,233,236,236,97,128,30,17,233,242,99,2,75,168,75,173,236,101,128,36,211,245,237,230,236,229,248,226,229,236,239,119,128,30,19,242,239,225,116,128,1,17,100,4,75,204,76,29,76,39,76,90,97,4,75,214,75,224,75,231,76,0,226,229,238,231,225,236,105,128,9,161,228,229,246,97,128,9,33,231,117,2,75,238,75,247,234,225,242,225,244,105,128,10,161,242,237,245,235,232,105,128,10,33,108,2,76,6,76,15,225,242,225,226,233,99,128,6,136,230,233,238,225,236,225,242,225,226,233,99,128,251,137,228,232,225,228,229,246,97,128,9,92,232,97,3,76,48,76,58,76,65,226,229,238,231,225,236,105,128,9,162,228,229,246,97,128,9,34,231,117,2,76,72,76,81,234,225,242,225,244,105,128,10,162,242,237,245,235,232,105,128,10,34,239,116,2,76,97,76,106,225,227,227,229,238,116,128,30,11,226,229,236,239,119,128,30,13,101,8,76,132,76,185,76,192,76,217,76,227,76,238,77,27,77,63,99,2,76,138,76,175,233,237,225,236,243,229,240,225,242,225,244,239,114,2,76,156,76,165,225,242,225,226,233,99,128,6,107,240,229,242,243,233,225,110,128,6,107,249,242,233,236,236,233,99,128,4,52,231,242,229,101,128,0,176,232,105,2,76,199,76,208,232,229,226,242,229,119,128,5,173,242,225,231,225,238,97,128,48,103,233,227,239,240,244,233,99,128,3,239,235,225,244,225,235,225,238,97,128,48,199,108,2,76,244,77,11,229,244,101,2,76,252,77,3,236,229,230,116,128,35,43,242,233,231,232,116,128,35,38,244,97,129,3,180,77,18,244,245,242,238,229,100,128,1,141,238,239,237,233,238,225,244,239,242,237,233,238,245,243,239,238,229,238,245,237,229,242,225,244,239,242,226,229,238,231,225,236,105,128,9,248,250,104,128,2,164,104,2,77,74,77,124,97,3,77,82,77,92,77,99,226,229,238,231,225,236,105,128,9,167,228,229,246,97,128,9,39,231,117,2,77,106,77,115,234,225,242,225,244,105,128,10,167,242,237,245,235,232,105,128,10,39,239,239,107,128,2,87,105,6,77,144,77,193,77,253,78,8,78,19,78,29,97,2,77,150,77,172,236,249,244,233,235,225,244,239,238,239,115,129,3,133,77,166,227,237,98,128,3,68,237,239,238,100,129,38,102,77,181,243,245,233,244,247,232,233,244,101,128,38,98,229,242,229,243,233,115,133,0,168,77,212,77,220,77,231,77,237,77,245,225,227,245,244,101,128,246,215,226,229,236,239,247,227,237,98,128,3,36,227,237,98,128,3,8,231,242,225,246,101,128,246,216,244,239,238,239,115,128,3,133,232,233,242,225,231,225,238,97,128,48,98,235,225,244,225,235,225,238,97,128,48,194,244,244,239,237,225,242,107,128,48,3,246,105,2,78,36,78,47,228,101,129,0,247,78,43,115,128,34,35,243,233,239,238,243,236,225,243,104,128,34,21,234,229,227,249,242,233,236,236,233,99,128,4,82,235,243,232,225,228,101,128,37,147,108,2,78,87,78,98,233,238,229,226,229,236,239,119,128,30,15,243,241,245,225,242,101,128,51,151,109,2,78,113,78,121,225,227,242,239,110,128,1,17,239,238,239,243,240,225,227,101,128,255,68,238,226,236,239,227,107,128,37,132,111,10,78,163,78,175,78,185,78,196,78,207,79,23,79,28,79,39,79,154,79,180,227,232,225,228,225,244,232,225,105,128,14,14,228,229,235,244,232,225,105,128,14,20,232,233,242,225,231,225,238,97,128,48,105,235,225,244,225,235,225,238,97,128,48,201,236,236,225,114,132,0,36,78,222,78,233,78,245,79,0,233,238,230,229,242,233,239,114,128,246,227,237,239,238,239,243,240,225,227,101,128,255,4,239,236,228,243,244,249,236,101,128,247,36,115,2,79,6,79,13,237,225,236,108,128,254,105,245,240,229,242,233,239,114,128,246,228,238,103,128,32,171,242,245,243,241,245,225,242,101,128,51,38,116,6,79,53,79,70,79,92,79,103,79,135,79,142,225,227,227,229,238,116,129,2,217,79,64,227,237,98,128,3,7,226,229,236,239,247,99,2,79,81,79,86,237,98,128,3,35,239,237,98,128,3,35,235,225,244,225,235,225,238,97,128,48,251,236,229,243,115,2,79,112,79,116,105,128,1,49,106,129,246,190,79,122,243,244,242,239,235,229,232,239,239,107,128,2,132,237,225,244,104,128,34,197,244,229,228,227,233,242,227,236,101,128,37,204,245,226,236,229,249,239,228,240,225,244,225,104,129,251,31,79,171,232,229,226,242,229,119,128,251,31,247,238,244,225,227,107,2,79,191,79,202,226,229,236,239,247,227,237,98,128,3,30,237,239,100,128,2,213,240,225,242,229,110,128,36,159,243,245,240,229,242,233,239,114,128,246,235,116,2,79,233,79,239,225,233,108,128,2,86,239,240,226,225,114,128,1,140,117,2,79,253,80,8,232,233,242,225,231,225,238,97,128,48,101,235,225,244,225,235,225,238,97,128,48,197,122,132,1,243,80,31,80,40,80,59,80,96,225,236,244,239,238,101,128,2,163,99,2,80,46,80,53,225,242,239,110,128,1,198,245,242,108,128,2,165,101,2,80,65,80,85,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,225,227,249,242,233,236,236,233,99,128,4,85,232,229,227,249,242,233,236,236,233,99,128,4,95,101,151,0,101,80,159,80,178,80,212,81,186,81,248,82,25,82,37,82,60,82,113,83,225,84,27,84,129,84,245,85,124,85,199,85,230,86,36,86,89,87,24,87,157,87,177,87,221,88,56,97,2,80,165,80,172,227,245,244,101,128,0,233,242,244,104,128,38,65,98,3,80,186,80,195,80,205,229,238,231,225,236,105,128,9,143,239,240,239,237,239,230,111,128,49,28,242,229,246,101,128,1,21,99,5,80,224,81,41,81,55,81,87,81,176,97,2,80,230,81,35,238,228,242,97,3,80,241,80,248,81,3,228,229,246,97,128,9,13,231,245,234,225,242,225,244,105,128,10,141,246,239,247,229,236,243,233,231,110,2,81,17,81,24,228,229,246,97,128,9,69,231,245,234,225,242,225,244,105,128,10,197,242,239,110,128,1,27,229,228,233,236,236,225,226,242,229,246,101,128,30,29,104,2,81,61,81,72,225,242,237,229,238,233,225,110,128,5,101,249,233,247,238,225,242,237,229,238,233,225,110,128,5,135,233,242,99,2,81,95,81,100,236,101,128,36,212,245,237,230,236,229,120,134,0,234,81,121,81,129,81,137,81,148,81,156,81,168,225,227,245,244,101,128,30,191,226,229,236,239,119,128,30,25,228,239,244,226,229,236,239,119,128,30,199,231,242,225,246,101,128,30,193,232,239,239,235,225,226,239,246,101,128,30,195,244,233,236,228,101,128,30,197,249,242,233,236,236,233,99,128,4,84,100,4,81,196,81,206,81,212,81,222,226,236,231,242,225,246,101,128,2,5,229,246,97,128,9,15,233,229,242,229,243,233,115,128,0,235,239,116,130,1,23,81,231,81,240,225,227,227,229,238,116,128,1,23,226,229,236,239,119,128,30,185,101,2,81,254,82,9,231,245,242,237,245,235,232,105,128,10,15,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,71,230,227,249,242,233,236,236,233,99,128,4,68,103,2,82,43,82,50,242,225,246,101,128,0,232,245,234,225,242,225,244,105,128,10,143,104,4,82,70,82,81,82,92,82,102,225,242,237,229,238,233,225,110,128,5,103,226,239,240,239,237,239,230,111,128,49,29,233,242,225,231,225,238,97,128,48,72,239,239,235,225,226,239,246,101,128,30,187,105,4,82,123,82,134,83,192,83,207,226,239,240,239,237,239,230,111,128,49,31,231,232,116,142,0,56,82,168,82,177,82,187,82,217,82,224,83,6,83,31,83,76,83,110,83,122,83,133,83,166,83,174,83,185,225,242,225,226,233,99,128,6,104,226,229,238,231,225,236,105,128,9,238,227,233,242,227,236,101,129,36,103,82,198,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,145,228,229,246,97,128,9,110,229,229,110,2,82,232,82,241,227,233,242,227,236,101,128,36,113,112,2,82,247,82,254,225,242,229,110,128,36,133,229,242,233,239,100,128,36,153,231,117,2,83,13,83,22,234,225,242,225,244,105,128,10,238,242,237,245,235,232,105,128,10,110,104,2,83,37,83,63,97,2,83,43,83,54,227,235,225,242,225,226,233,99,128,6,104,238,231,250,232,239,117,128,48,40,238,239,244,229,226,229,225,237,229,100,128,38,107,105,2,83,82,83,100,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,39,238,230,229,242,233,239,114,128,32,136,237,239,238,239,243,240,225,227,101,128,255,24,239,236,228,243,244,249,236,101,128,247,56,112,2,83,139,83,146,225,242,229,110,128,36,123,229,114,2,83,153,83,159,233,239,100,128,36,143,243,233,225,110,128,6,248,242,239,237,225,110,128,33,119,243,245,240,229,242,233,239,114,128,32,120,244,232,225,105,128,14,88,238,246,229,242,244,229,228,226,242,229,246,101,128,2,7,239,244,233,230,233,229,228,227,249,242,233,236,236,233,99,128,4,101,107,2,83,231,83,255,225,244,225,235,225,238,97,129,48,168,83,243,232,225,236,230,247,233,228,244,104,128,255,116,111,2,84,5,84,20,238,235,225,242,231,245,242,237,245,235,232,105,128,10,116,242,229,225,110,128,49,84,108,3,84,35,84,46,84,107,227,249,242,233,236,236,233,99,128,4,59,101,2,84,52,84,59,237,229,238,116,128,34,8,246,229,110,3,84,69,84,78,84,99,227,233,242,227,236,101,128,36,106,112,2,84,84,84,91,225,242,229,110,128,36,126,229,242,233,239,100,128,36,146,242,239,237,225,110,128,33,122,236,233,240,243,233,115,129,32,38,84,118,246,229,242,244,233,227,225,108,128,34,238,109,5,84,141,84,169,84,180,84,200,84,211,225,227,242,239,110,130,1,19,84,153,84,161,225,227,245,244,101,128,30,23,231,242,225,246,101,128,30,21,227,249,242,233,236,236,233,99,128,4,60,228,225,243,104,129,32,20,84,189,246,229,242,244,233,227,225,108,128,254,49,239,238,239,243,240,225,227,101,128,255,69,112,2,84,217,84,237,232,225,243,233,243,237,225,242,235,225,242,237,229,238,233,225,110,128,5,91,244,249,243,229,116,128,34,5,110,6,85,3,85,14,85,25,85,69,85,101,85,116,226,239,240,239,237,239,230,111,128,49,35,227,249,242,233,236,236,233,99,128,4,61,100,2,85,31,85,50,225,243,104,129,32,19,85,39,246,229,242,244,233,227,225,108,128,254,50,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,163,103,130,1,75,85,77,85,88,226,239,240,239,237,239,230,111,128,49,37,232,229,227,249,242,233,236,236,233,99,128,4,165,232,239,239,235,227,249,242,233,236,236,233,99,128,4,200,243,240,225,227,101,128,32,2,111,3,85,132,85,140,85,149,231,239,238,229,107,128,1,25,235,239,242,229,225,110,128,49,83,240,229,110,130,2,91,85,159,85,168,227,236,239,243,229,100,128,2,154,242,229,246,229,242,243,229,100,130,2,92,85,183,85,192,227,236,239,243,229,100,128,2,94,232,239,239,107,128,2,93,112,2,85,205,85,212,225,242,229,110,128,36,160,243,233,236,239,110,129,3,181,85,222,244,239,238,239,115,128,3,173,241,117,2,85,237,86,25,225,108,130,0,61,85,246,86,2,237,239,238,239,243,240,225,227,101,128,255,29,115,2,86,8,86,15,237,225,236,108,128,254,102,245,240,229,242,233,239,114,128,32,124,233,246,225,236,229,238,227,101,128,34,97,114,3,86,44,86,55,86,66,226,239,240,239,237,239,230,111,128,49,38,227,249,242,233,236,236,233,99,128,4,64,229,246,229,242,243,229,100,129,2,88,86,78,227,249,242,233,236,236,233,99,128,4,77,115,6,86,103,86,114,86,134,86,215,87,4,87,14,227,249,242,233,236,236,233,99,128,4,65,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,171,104,132,2,131,86,146,86,153,86,184,86,199,227,245,242,108,128,2,134,239,242,116,2,86,161,86,168,228,229,246,97,128,9,14,246,239,247,229,236,243,233,231,238,228,229,246,97,128,9,70,242,229,246,229,242,243,229,228,236,239,239,112,128,1,170,243,241,245,225,244,242,229,246,229,242,243,229,100,128,2,133,237,225,236,108,2,86,224,86,235,232,233,242,225,231,225,238,97,128,48,71,235,225,244,225,235,225,238,97,129,48,167,86,248,232,225,236,230,247,233,228,244,104,128,255,106,244,233,237,225,244,229,100,128,33,46,245,240,229,242,233,239,114,128,246,236,116,5,87,36,87,62,87,66,87,83,87,149,97,130,3,183,87,44,87,54,242,237,229,238,233,225,110,128,5,104,244,239,238,239,115,128,3,174,104,128,0,240,233,236,228,101,129,30,189,87,75,226,229,236,239,119,128,30,27,238,225,232,244,97,3,87,95,87,127,87,136,230,239,245,235,104,2,87,105,87,114,232,229,226,242,229,119,128,5,145,236,229,230,244,232,229,226,242,229,119,128,5,145,232,229,226,242,229,119,128,5,145,236,229,230,244,232,229,226,242,229,119,128,5,145,245,242,238,229,100,128,1,221,117,2,87,163,87,172,235,239,242,229,225,110,128,49,97,242,111,128,32,172,246,239,247,229,236,243,233,231,110,3,87,193,87,203,87,210,226,229,238,231,225,236,105,128,9,199,228,229,246,97,128,9,71,231,245,234,225,242,225,244,105,128,10,199,120,2,87,227,88,44,227,236,225,109,132,0,33,87,242,87,253,88,24,88,36,225,242,237,229,238,233,225,110,128,5,92,100,2,88,3,88,8,226,108,128,32,60,239,247,110,129,0,161,88,16,243,237,225,236,108,128,247,161,237,239,238,239,243,240,225,227,101,128,255,1,243,237,225,236,108,128,247,33,233,243,244,229,238,244,233,225,108,128,34,3,250,104,131,2,146,88,67,88,86,88,97,99,2,88,73,88,80,225,242,239,110,128,1,239,245,242,108,128,2,147,242,229,246,229,242,243,229,100,128,1,185,244,225,233,108,128,1,186,102,140,0,102,88,132,88,214,88,225,88,234,88,246,89,93,89,109,91,117,91,130,91,156,93,33,93,41,97,4,88,142,88,149,88,160,88,171,228,229,246,97,128,9,94,231,245,242,237,245,235,232,105,128,10,94,232,242,229,238,232,229,233,116,128,33,9,244,232,97,3,88,181,88,190,88,202,225,242,225,226,233,99,128,6,78,236,239,247,225,242,225,226,233,99,128,6,78,244,225,238,225,242,225,226,233,99,128,6,75,226,239,240,239,237,239,230,111,128,49,8,227,233,242,227,236,101,128,36,213,228,239,244,225,227,227,229,238,116,128,30,31,101,3,88,254,89,76,89,86,104,4,89,8,89,31,89,45,89,61,225,114,2,89,15,89,22,225,226,233,99,128,6,65,237,229,238,233,225,110,128,5,134,230,233,238,225,236,225,242,225,226,233,99,128,254,210,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,211,237,229,228,233,225,236,225,242,225,226,233,99,128,254,212,233,227,239,240,244,233,99,128,3,229,237,225,236,101,128,38,64,102,130,251,0,89,101,89,105,105,128,251,3,108,128,251,4,105,136,251,1,89,129,89,169,89,180,89,202,90,68,90,85,90,93,90,106,230,244,229,229,110,2,89,139,89,148,227,233,242,227,236,101,128,36,110,112,2,89,154,89,161,225,242,229,110,128,36,130,229,242,233,239,100,128,36,150,231,245,242,229,228,225,243,104,128,32,18,236,236,229,100,2,89,189,89,195,226,239,120,128,37,160,242,229,227,116,128,37,172,238,225,108,5,89,216,89,255,90,16,90,33,90,49,235,225,102,130,5,218,89,226,89,246,228,225,231,229,243,104,129,251,58,89,237,232,229,226,242,229,119,128,251,58,232,229,226,242,229,119,128,5,218,237,229,109,129,5,221,90,7,232,229,226,242,229,119,128,5,221,238,245,110,129,5,223,90,24,232,229,226,242,229,119,128,5,223,240,101,129,5,227,90,40,232,229,226,242,229,119,128,5,227,244,243,225,228,105,129,5,229,90,59,232,229,226,242,229,119,128,5,229,242,243,244,244,239,238,229,227,232,233,238,229,243,101,128,2,201,243,232,229,249,101,128,37,201,244,225,227,249,242,233,236,236,233,99,128,4,115,246,101,142,0,53,90,139,90,148,90,158,90,188,90,195,90,205,90,230,91,1,91,35,91,47,91,58,91,91,91,99,91,110,225,242,225,226,233,99,128,6,101,226,229,238,231,225,236,105,128,9,235,227,233,242,227,236,101,129,36,100,90,169,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,142,228,229,246,97,128,9,107,229,233,231,232,244,232,115,128,33,93,231,117,2,90,212,90,221,234,225,242,225,244,105,128,10,235,242,237,245,235,232,105,128,10,107,232,97,2,90,237,90,248,227,235,225,242,225,226,233,99,128,6,101,238,231,250,232,239,117,128,48,37,105,2,91,7,91,25,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,36,238,230,229,242,233,239,114,128,32,133,237,239,238,239,243,240,225,227,101,128,255,21,239,236,228,243,244,249,236,101,128,247,53,112,2,91,64,91,71,225,242,229,110,128,36,120,229,114,2,91,78,91,84,233,239,100,128,36,140,243,233,225,110,128,6,245,242,239,237,225,110,128,33,116,243,245,240,229,242,233,239,114,128,32,117,244,232,225,105,128,14,85,108,129,251,2,91,123,239,242,233,110,128,1,146,109,2,91,136,91,147,239,238,239,243,240,225,227,101,128,255,70,243,241,245,225,242,101,128,51,153,111,4,91,166,91,188,91,200,91,207,230,97,2,91,173,91,181,238,244,232,225,105,128,14,31,244,232,225,105,128,14,29,238,231,237,225,238,244,232,225,105,128,14,79,242,225,236,108,128,34,0,245,114,142,0,52,91,240,91,249,92,3,92,33,92,40,92,65,92,92,92,126,92,138,92,157,92,168,92,201,92,209,92,220,225,242,225,226,233,99,128,6,100,226,229,238,231,225,236,105,128,9,234,227,233,242,227,236,101,129,36,99,92,14,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,141,228,229,246,97,128,9,106,231,117,2,92,47,92,56,234,225,242,225,244,105,128,10,234,242,237,245,235,232,105,128,10,106,232,97,2,92,72,92,83,227,235,225,242,225,226,233,99,128,6,100,238,231,250,232,239,117,128,48,36,105,2,92,98,92,116,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,35,238,230,229,242,233,239,114,128,32,132,237,239,238,239,243,240,225,227,101,128,255,20,238,245,237,229,242,225,244,239,242,226,229,238,231,225,236,105,128,9,247,239,236,228,243,244,249,236,101,128,247,52,112,2,92,174,92,181,225,242,229,110,128,36,119,229,114,2,92,188,92,194,233,239,100,128,36,139,243,233,225,110,128,6,244,242,239,237,225,110,128,33,115,243,245,240,229,242,233,239,114,128,32,116,116,2,92,226,93,8,229,229,110,2,92,234,92,243,227,233,242,227,236,101,128,36,109,112,2,92,249,93,0,225,242,229,110,128,36,129,229,242,233,239,100,128,36,149,104,2,93,14,93,19,225,105,128,14,84,244,239,238,229,227,232,233,238,229,243,101,128,2,203,240,225,242,229,110,128,36,161,242,97,2,93,48,93,56,227,244,233,239,110,128,32,68,238,99,128,32,163,103,144,0,103,93,97,94,43,94,66,94,127,94,144,95,65,96,58,96,143,96,156,97,14,97,39,97,67,97,89,98,34,98,56,98,158,97,9,93,117,93,127,93,134,93,141,93,205,93,230,93,241,93,252,94,30,226,229,238,231,225,236,105,128,9,151,227,245,244,101,128,1,245,228,229,246,97,128,9,23,102,4,93,151,93,160,93,174,93,190,225,242,225,226,233,99,128,6,175,230,233,238,225,236,225,242,225,226,233,99,128,251,147,233,238,233,244,233,225,236,225,242,225,226,233,99,128,251,148,237,229,228,233,225,236,225,242,225,226,233,99,128,251,149,231,117,2,93,212,93,221,234,225,242,225,244,105,128,10,151,242,237,245,235,232,105,128,10,23,232,233,242,225,231,225,238,97,128,48,76,235,225,244,225,235,225,238,97,128,48,172,237,237,97,130,3,179,94,6,94,19,236,225,244,233,238,243,237,225,236,108,128,2,99,243,245,240,229,242,233,239,114,128,2,224,238,231,233,225,227,239,240,244,233,99,128,3,235,98,2,94,49,94,59,239,240,239,237,239,230,111,128,49,13,242,229,246,101,128,1,31,99,4,94,76,94,83,94,92,94,114,225,242,239,110,128,1,231,229,228,233,236,236,97,128,1,35,233,242,99,2,94,100,94,105,236,101,128,36,214,245,237,230,236,229,120,128,1,29,239,237,237,225,225,227,227,229,238,116,128,1,35,228,239,116,129,1,33,94,135,225,227,227,229,238,116,128,1,33,101,6,94,158,94,169,94,180,94,191,94,210,95,56,227,249,242,233,236,236,233,99,128,4,51,232,233,242,225,231,225,238,97,128,48,82,235,225,244,225,235,225,238,97,128,48,178,239,237,229,244,242,233,227,225,236,236,249,229,241,245,225,108,128,34,81,114,3,94,218,95,11,95,21,229,243,104,3,94,228,94,243,94,252,225,227,227,229,238,244,232,229,226,242,229,119,128,5,156,232,229,226,242,229,119,128,5,243,237,245,241,228,225,237,232,229,226,242,229,119,128,5,157,237,225,238,228,226,236,115,128,0,223,243,232,225,249,233,109,2,95,32,95,47,225,227,227,229,238,244,232,229,226,242,229,119,128,5,158,232,229,226,242,229,119,128,5,244,244,225,237,225,242,107,128,48,19,104,5,95,77,95,210,96,17,96,42,96,48,97,4,95,87,95,97,95,120,95,145,226,229,238,231,225,236,105,128,9,152,100,2,95,103,95,114,225,242,237,229,238,233,225,110,128,5,114,229,246,97,128,9,24,231,117,2,95,127,95,136,234,225,242,225,244,105,128,10,152,242,237,245,235,232,105,128,10,24,233,110,4,95,156,95,165,95,179,95,195,225,242,225,226,233,99,128,6,58,230,233,238,225,236,225,242,225,226,233,99,128,254,206,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,207,237,229,228,233,225,236,225,242,225,226,233,99,128,254,208,101,3,95,218,95,239],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+40960);allocate([96,0,237,233,228,228,236,229,232,239,239,235,227,249,242,233,236,236,233,99,128,4,149,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,147,245,240,244,245,242,238,227,249,242,233,236,236,233,99,128,4,145,232,97,2,96,24,96,31,228,229,246,97,128,9,90,231,245,242,237,245,235,232,105,128,10,90,239,239,107,128,2,96,250,243,241,245,225,242,101,128,51,147,105,3,96,66,96,77,96,88,232,233,242,225,231,225,238,97,128,48,78,235,225,244,225,235,225,238,97,128,48,174,109,2,96,94,96,105,225,242,237,229,238,233,225,110,128,5,99,229,108,130,5,210,96,114,96,134,228,225,231,229,243,104,129,251,50,96,125,232,229,226,242,229,119,128,251,50,232,229,226,242,229,119,128,5,210,234,229,227,249,242,233,236,236,233,99,128,4,83,236,239,244,244,225,108,2,96,167,96,184,233,238,246,229,242,244,229,228,243,244,242,239,235,101,128,1,190,243,244,239,112,132,2,148,96,199,96,210,96,216,96,248,233,238,246,229,242,244,229,100,128,2,150,237,239,100,128,2,192,242,229,246,229,242,243,229,100,130,2,149,96,231,96,237,237,239,100,128,2,193,243,245,240,229,242,233,239,114,128,2,228,243,244,242,239,235,101,129,2,161,97,3,242,229,246,229,242,243,229,100,128,2,162,109,2,97,20,97,28,225,227,242,239,110,128,30,33,239,238,239,243,240,225,227,101,128,255,71,111,2,97,45,97,56,232,233,242,225,231,225,238,97,128,48,84,235,225,244,225,235,225,238,97,128,48,180,240,97,2,97,74,97,80,242,229,110,128,36,162,243,241,245,225,242,101,128,51,172,114,2,97,95,97,192,97,2,97,101,97,109,228,233,229,238,116,128,34,7,246,101,134,0,96,97,126,97,137,97,154,97,161,97,170,97,182,226,229,236,239,247,227,237,98,128,3,22,99,2,97,143,97,148,237,98,128,3,0,239,237,98,128,3,0,228,229,246,97,128,9,83,236,239,247,237,239,100,128,2,206,237,239,238,239,243,240,225,227,101,128,255,64,244,239,238,229,227,237,98,128,3,64,229,225,244,229,114,132,0,62,97,208,97,227,97,239,98,26,229,241,245,225,108,129,34,101,97,218,239,242,236,229,243,115,128,34,219,237,239,238,239,243,240,225,227,101,128,255,30,111,2,97,245,98,15,114,2,97,251,98,8,229,241,245,233,246,225,236,229,238,116,128,34,115,236,229,243,115,128,34,119,246,229,242,229,241,245,225,108,128,34,103,243,237,225,236,108,128,254,101,115,2,98,40,98,48,227,242,233,240,116,128,2,97,244,242,239,235,101,128,1,229,117,4,98,66,98,77,98,134,98,145,232,233,242,225,231,225,238,97,128,48,80,233,108,2,98,84,98,109,236,229,237,239,116,2,98,94,98,101,236,229,230,116,128,0,171,242,233,231,232,116,128,0,187,243,233,238,231,108,2,98,119,98,126,236,229,230,116,128,32,57,242,233,231,232,116,128,32,58,235,225,244,225,235,225,238,97,128,48,176,242,225,237,245,243,241,245,225,242,101,128,51,24,249,243,241,245,225,242,101,128,51,201,104,144,0,104,98,204,101,90,101,125,101,162,101,202,103,90,103,110,104,75,104,87,104,99,105,167,105,175,105,186,105,195,106,19,106,23,97,13,98,232,99,15,99,25,99,55,99,80,99,158,99,170,99,195,99,210,99,239,99,252,100,54,100,63,97,2,98,238,99,1,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,169,236,244,239,238,229,225,242,225,226,233,99,128,6,193,226,229,238,231,225,236,105,128,9,185,228,101,2,99,32,99,50,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,179,246,97,128,9,57,231,117,2,99,62,99,71,234,225,242,225,244,105,128,10,185,242,237,245,235,232,105,128,10,57,104,4,99,90,99,99,99,113,99,143,225,242,225,226,233,99,128,6,45,230,233,238,225,236,225,242,225,226,233,99,128,254,162,105,2,99,119,99,134,238,233,244,233,225,236,225,242,225,226,233,99,128,254,163,242,225,231,225,238,97,128,48,111,237,229,228,233,225,236,225,242,225,226,233,99,128,254,164,233,244,245,243,241,245,225,242,101,128,51,42,235,225,244,225,235,225,238,97,129,48,207,99,183,232,225,236,230,247,233,228,244,104,128,255,138,236,225,238,244,231,245,242,237,245,235,232,105,128,10,77,237,250,97,2,99,218,99,227,225,242,225,226,233,99,128,6,33,236,239,247,225,242,225,226,233,99,128,6,33,238,231,245,236,230,233,236,236,229,114,128,49,100,114,2,100,2,100,18,228,243,233,231,238,227,249,242,233,236,236,233,99,128,4,74,240,239,239,110,2,100,27,100,40,236,229,230,244,226,225,242,226,245,112,128,33,188,242,233,231,232,244,226,225,242,226,245,112,128,33,192,243,241,245,225,242,101,128,51,202,244,225,102,3,100,73,100,165,101,0,240,225,244,225,104,134,5,178,100,93,100,98,100,112,100,121,100,136,100,152,177,54,128,5,178,50,2,100,104,100,108,51,128,5,178,102,128,5,178,232,229,226,242,229,119,128,5,178,238,225,242,242,239,247,232,229,226,242,229,119,128,5,178,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,178,247,233,228,229,232,229,226,242,229,119,128,5,178,241,225,237,225,244,115,135,5,179,100,188,100,193,100,198,100,203,100,212,100,227,100,243,177,98,128,5,179,178,56,128,5,179,179,52,128,5,179,232,229,226,242,229,119,128,5,179,238,225,242,242,239,247,232,229,226,242,229,119,128,5,179,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,179,247,233,228,229,232,229,226,242,229,119,128,5,179,243,229,231,239,108,135,5,177,101,22,101,27,101,32,101,37,101,46,101,61,101,77,177,55,128,5,177,178,52,128,5,177,179,48,128,5,177,232,229,226,242,229,119,128,5,177,238,225,242,242,239,247,232,229,226,242,229,119,128,5,177,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,177,247,233,228,229,232,229,226,242,229,119,128,5,177,98,3,101,98,101,103,101,113,225,114,128,1,39,239,240,239,237,239,230,111,128,49,15,242,229,246,229,226,229,236,239,119,128,30,43,99,2,101,131,101,140,229,228,233,236,236,97,128,30,41,233,242,99,2,101,148,101,153,236,101,128,36,215,245,237,230,236,229,120,128,1,37,100,2,101,168,101,178,233,229,242,229,243,233,115,128,30,39,239,116,2,101,185,101,194,225,227,227,229,238,116,128,30,35,226,229,236,239,119,128,30,37,101,136,5,212,101,222,101,255,102,19,102,248,103,8,103,53,103,62,103,75,225,242,116,129,38,101,101,230,243,245,233,116,2,101,239,101,247,226,236,225,227,107,128,38,101,247,232,233,244,101,128,38,97,228,225,231,229,243,104,129,251,52,102,10,232,229,226,242,229,119,128,251,52,104,6,102,33,102,61,102,69,102,119,102,165,102,214,97,2,102,39,102,53,236,244,239,238,229,225,242,225,226,233,99,128,6,193,242,225,226,233,99,128,6,71,229,226,242,229,119,128,5,212,230,233,238,225,236,97,2,102,80,102,111,236,116,2,102,87,102,99,239,238,229,225,242,225,226,233,99,128,251,167,244,247,239,225,242,225,226,233,99,128,254,234,242,225,226,233,99,128,254,234,232,225,237,250,225,225,226,239,246,101,2,102,134,102,148,230,233,238,225,236,225,242,225,226,233,99,128,251,165,233,243,239,236,225,244,229,228,225,242,225,226,233,99,128,251,164,105,2,102,171,102,205,238,233,244,233,225,236,97,2,102,183,102,197,236,244,239,238,229,225,242,225,226,233,99,128,251,168,242,225,226,233,99,128,254,235,242,225,231,225,238,97,128,48,120,237,229,228,233,225,236,97,2,102,226,102,240,236,244,239,238,229,225,242,225,226,233,99,128,251,169,242,225,226,233,99,128,254,236,233,243,229,233,229,242,225,243,241,245,225,242,101,128,51,123,107,2,103,14,103,38,225,244,225,235,225,238,97,129,48,216,103,26,232,225,236,230,247,233,228,244,104,128,255,141,245,244,225,225,242,245,243,241,245,225,242,101,128,51,54,238,231,232,239,239,107,128,2,103,242,245,244,245,243,241,245,225,242,101,128,51,57,116,129,5,215,103,81,232,229,226,242,229,119,128,5,215,232,239,239,107,129,2,102,103,99,243,245,240,229,242,233,239,114,128,2,177,105,4,103,120,103,205,103,216,103,241,229,245,104,4,103,132,103,167,103,182,103,191,97,2,103,138,103,153,227,233,242,227,236,229,235,239,242,229,225,110,128,50,123,240,225,242,229,238,235,239,242,229,225,110,128,50,27,227,233,242,227,236,229,235,239,242,229,225,110,128,50,109,235,239,242,229,225,110,128,49,78,240,225,242,229,238,235,239,242,229,225,110,128,50,13,232,233,242,225,231,225,238,97,128,48,114,235,225,244,225,235,225,238,97,129,48,210,103,229,232,225,236,230,247,233,228,244,104,128,255,139,242,233,113,134,5,180,104,3,104,8,104,22,104,31,104,46,104,62,177,52,128,5,180,50,2,104,14,104,18,49,128,5,180,100,128,5,180,232,229,226,242,229,119,128,5,180,238,225,242,242,239,247,232,229,226,242,229,119,128,5,180,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,180,247,233,228,229,232,229,226,242,229,119,128,5,180,236,233,238,229,226,229,236,239,119,128,30,150,237,239,238,239,243,240,225,227,101,128,255,72,111,9,104,119,104,130,104,154,104,179,105,11,105,24,105,110,105,150,105,161,225,242,237,229,238,233,225,110,128,5,112,232,105,2,104,137,104,145,240,244,232,225,105,128,14,43,242,225,231,225,238,97,128,48,123,235,225,244,225,235,225,238,97,129,48,219,104,167,232,225,236,230,247,233,228,244,104,128,255,142,236,225,109,135,5,185,104,199,104,204,104,209,104,214,104,223,104,238,104,254,177,57,128,5,185,178,54,128,5,185,179,50,128,5,185,232,229,226,242,229,119,128,5,185,238,225,242,242,239,247,232,229,226,242,229,119,128,5,185,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,185,247,233,228,229,232,229,226,242,229,119,128,5,185,238,239,235,232,245,235,244,232,225,105,128,14,46,111,2,105,30,105,100,107,4,105,40,105,52,105,58,105,80,225,226,239,246,229,227,239,237,98,128,3,9,227,237,98,128,3,9,240,225,236,225,244,225,236,233,250,229,228,226,229,236,239,247,227,237,98,128,3,33,242,229,244,242,239,230,236,229,248,226,229,236,239,247,227,237,98,128,3,34,238,243,241,245,225,242,101,128,51,66,114,2,105,116,105,143,105,2,105,122,105,131,227,239,240,244,233,99,128,3,233,250,239,238,244,225,236,226,225,114,128,32,21,238,227,237,98,128,3,27,244,243,240,242,233,238,231,115,128,38,104,245,243,101,128,35,2,240,225,242,229,110,128,36,163,243,245,240,229,242,233,239,114,128,2,176,244,245,242,238,229,100,128,2,101,117,4,105,205,105,216,105,229,105,254,232,233,242,225,231,225,238,97,128,48,117,233,233,244,239,243,241,245,225,242,101,128,51,51,235,225,244,225,235,225,238,97,129,48,213,105,242,232,225,236,230,247,233,228,244,104,128,255,140,238,231,225,242,245,237,236,225,245,116,129,2,221,106,13,227,237,98,128,3,11,118,128,1,149,249,240,232,229,110,132,0,45,106,39,106,50,106,62,106,85,233,238,230,229,242,233,239,114,128,246,229,237,239,238,239,243,240,225,227,101,128,255,13,115,2,106,68,106,75,237,225,236,108,128,254,99,245,240,229,242,233,239,114,128,246,230,244,247,111,128,32,16,105,149,0,105,106,137,106,160,106,194,106,241,110,123,110,243,111,24,111,51,111,213,111,217,111,255,112,21,112,105,113,14,113,89,113,97,113,110,113,197,113,254,114,26,114,70,225,99,2,106,144,106,150,245,244,101,128,0,237,249,242,233,236,236,233,99,128,4,79,98,3,106,168,106,177,106,187,229,238,231,225,236,105,128,9,135,239,240,239,237,239,230,111,128,49,39,242,229,246,101,128,1,45,99,3,106,202,106,209,106,231,225,242,239,110,128,1,208,233,242,99,2,106,217,106,222,236,101,128,36,216,245,237,230,236,229,120,128,0,238,249,242,233,236,236,233,99,128,4,86,100,4,106,251,107,5,110,80,110,113,226,236,231,242,225,246,101,128,2,9,101,2,107,11,110,75,239,231,242,225,240,104,7,107,32,107,46,107,59,109,244,110,19,110,32,110,44,229,225,242,244,232,227,233,242,227,236,101,128,50,143,230,233,242,229,227,233,242,227,236,101,128,50,139,233,99,14,107,90,107,106,107,205,108,3,108,69,108,98,108,114,108,171,108,220,108,232,109,3,109,70,109,208,109,237,225,236,236,233,225,238,227,229,240,225,242,229,110,128,50,63,99,4,107,116,107,127,107,141,107,148,225,236,236,240,225,242,229,110,128,50,58,229,238,244,242,229,227,233,242,227,236,101,128,50,165,236,239,243,101,128,48,6,111,3,107,156,107,171,107,191,237,237,97,129,48,1,107,164,236,229,230,116,128,255,100,238,231,242,225,244,245,236,225,244,233,239,238,240,225,242,229,110,128,50,55,242,242,229,227,244,227,233,242,227,236,101,128,50,163,101,3,107,213,107,225,107,242,225,242,244,232,240,225,242,229,110,128,50,47,238,244,229,242,240,242,233,243,229,240,225,242,229,110,128,50,61,248,227,229,236,236,229,238,244,227,233,242,227,236,101,128,50,157,102,2,108,9,108,24,229,243,244,233,246,225,236,240,225,242,229,110,128,50,64,105,2,108,30,108,59,238,225,238,227,233,225,108,2,108,42,108,51,227,233,242,227,236,101,128,50,150,240,225,242,229,110,128,50,54,242,229,240,225,242,229,110,128,50,43,104,2,108,75,108,86,225,246,229,240,225,242,229,110,128,50,50,233,231,232,227,233,242,227,236,101,128,50,164,233,244,229,242,225,244,233,239,238,237,225,242,107,128,48,5,108,3,108,122,108,148,108,160,225,226,239,114,2,108,131,108,140,227,233,242,227,236,101,128,50,152,240,225,242,229,110,128,50,56,229,230,244,227,233,242,227,236,101,128,50,167,239,247,227,233,242,227,236,101,128,50,166,109,2,108,177,108,209,101,2,108,183,108,198,228,233,227,233,238,229,227,233,242,227,236,101,128,50,169,244,225,236,240,225,242,229,110,128,50,46,239,239,238,240,225,242,229,110,128,50,42,238,225,237,229,240,225,242,229,110,128,50,52,112,2,108,238,108,246,229,242,233,239,100,128,48,2,242,233,238,244,227,233,242,227,236,101,128,50,158,114,2,109,9,109,57,101,3,109,17,109,28,109,43,225,227,232,240,225,242,229,110,128,50,67,240,242,229,243,229,238,244,240,225,242,229,110,128,50,57,243,239,245,242,227,229,240,225,242,229,110,128,50,62,233,231,232,244,227,233,242,227,236,101,128,50,168,115,5,109,82,109,111,109,125,109,150,109,178,101,2,109,88,109,101,227,242,229,244,227,233,242,227,236,101,128,50,153,236,230,240,225,242,229,110,128,50,66,239,227,233,229,244,249,240,225,242,229,110,128,50,51,112,2,109,131,109,137,225,227,101,128,48,0,229,227,233,225,236,240,225,242,229,110,128,50,53,116,2,109,156,109,167,239,227,235,240,225,242,229,110,128,50,49,245,228,249,240,225,242,229,110,128,50,59,117,2,109,184,109,193,238,240,225,242,229,110,128,50,48,240,229,242,246,233,243,229,240,225,242,229,110,128,50,60,119,2,109,214,109,226,225,244,229,242,240,225,242,229,110,128,50,44,239,239,228,240,225,242,229,110,128,50,45,250,229,242,111,128,48,7,109,2,109,250,110,7,229,244,225,236,227,233,242,227,236,101,128,50,142,239,239,238,227,233,242,227,236,101,128,50,138,238,225,237,229,227,233,242,227,236,101,128,50,148,243,245,238,227,233,242,227,236,101,128,50,144,119,2,110,50,110,63,225,244,229,242,227,233,242,227,236,101,128,50,140,239,239,228,227,233,242,227,236,101,128,50,141,246,97,128,9,7,233,229,242,229,243,233,115,130,0,239,110,94,110,102,225,227,245,244,101,128,30,47,227,249,242,233,236,236,233,99,128,4,229,239,244,226,229,236,239,119,128,30,203,101,3,110,131,110,147,110,158,226,242,229,246,229,227,249,242,233,236,236,233,99,128,4,215,227,249,242,233,236,236,233,99,128,4,53,245,238,103,4,110,170,110,205,110,220,110,229,97,2,110,176,110,191,227,233,242,227,236,229,235,239,242,229,225,110,128,50,117,240,225,242,229,238,235,239,242,229,225,110,128,50,21,227,233,242,227,236,229,235,239,242,229,225,110,128,50,103,235,239,242,229,225,110,128,49,71,240,225,242,229,238,235,239,242,229,225,110,128,50,7,103,2,110,249,111,0,242,225,246,101,128,0,236,117,2,111,6,111,15,234,225,242,225,244,105,128,10,135,242,237,245,235,232,105,128,10,7,104,2,111,30,111,40,233,242,225,231,225,238,97,128,48,68,239,239,235,225,226,239,246,101,128,30,201,105,8,111,69,111,79,111,90,111,97,111,122,111,138,111,153,111,169,226,229,238,231,225,236,105,128,9,136,227,249,242,233,236,236,233,99,128,4,56,228,229,246,97,128,9,8,231,117,2,111,104,111,113,234,225,242,225,244,105,128,10,136,242,237,245,235,232,105,128,10,8,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,64,238,246,229,242,244,229,228,226,242,229,246,101,128,2,11,243,232,239,242,244,227,249,242,233,236,236,233,99,128,4,57,246,239,247,229,236,243,233,231,110,3,111,185,111,195,111,202,226,229,238,231,225,236,105,128,9,192,228,229,246,97,128,9,64,231,245,234,225,242,225,244,105,128,10,192,106,128,1,51,107,2,111,223,111,247,225,244,225,235,225,238,97,129,48,164,111,235,232,225,236,230,247,233,228,244,104,128,255,114,239,242,229,225,110,128,49,99,108,2,112,5,112,10,228,101,128,2,220,245,249,232,229,226,242,229,119,128,5,172,109,2,112,27,112,94,97,3,112,35,112,55,112,80,227,242,239,110,129,1,43,112,44,227,249,242,233,236,236,233,99,128,4,227,231,229,239,242,225,240,240,242,239,248,233,237,225,244,229,236,249,229,241,245,225,108,128,34,83,244,242,225,231,245,242,237,245,235,232,105,128,10,63,239,238,239,243,240,225,227,101,128,255,73,110,5,112,117,112,127,112,136,112,148,112,232,227,242,229,237,229,238,116,128,34,6,230,233,238,233,244,121,128,34,30,233,225,242,237,229,238,233,225,110,128,5,107,116,2,112,154,112,222,101,2,112,160,112,211,231,242,225,108,131,34,43,112,173,112,191,112,196,98,2,112,179,112,187,239,244,244,239,109,128,35,33,116,128,35,33,229,120,128,248,245,116,2,112,202,112,207,239,112,128,35,32,112,128,35,32,242,243,229,227,244,233,239,110,128,34,41,233,243,241,245,225,242,101,128,51,5,118,3,112,240,112,249,113,2,226,245,236,236,229,116,128,37,216,227,233,242,227,236,101,128,37,217,243,237,233,236,229,230,225,227,101,128,38,59,111,3,113,22,113,33,113,41,227,249,242,233,236,236,233,99,128,4,81,231,239,238,229,107,128,1,47,244,97,131,3,185,113,52,113,73,113,81,228,233,229,242,229,243,233,115,129,3,202,113,65,244,239,238,239,115,128,3,144,236,225,244,233,110,128,2,105,244,239,238,239,115,128,3,175,240,225,242,229,110,128,36,164,242,233,231,245,242,237,245,235,232,105,128,10,114,115,4,113,120,113,165,113,179,113,187,237,225,236,108,2,113,129,113,140,232,233,242,225,231,225,238,97,128,48,67,235,225,244,225,235,225,238,97,129,48,163,113,153,232,225,236,230,247,233,228,244,104,128,255,104,243,232,225,242,226,229,238,231,225,236,105,128,9,250,244,242,239,235,101,128,2,104,245,240,229,242,233,239,114,128,246,237,116,2,113,203,113,237,229,242,225,244,233,239,110,2,113,215,113,226,232,233,242,225,231,225,238,97,128,48,157,235,225,244,225,235,225,238,97,128,48,253,233,236,228,101,129,1,41,113,246,226,229,236,239,119,128,30,45,117,2,114,4,114,15,226,239,240,239,237,239,230,111,128,49,41,227,249,242,233,236,236,233,99,128,4,78,246,239,247,229,236,243,233,231,110,3,114,42,114,52,114,59,226,229,238,231,225,236,105,128,9,191,228,229,246,97,128,9,63,231,245,234,225,242,225,244,105,128,10,191,250,232,233,244,243,97,2,114,81,114,92,227,249,242,233,236,236,233,99,128,4,117,228,226,236,231,242,225,246,229,227,249,242,233,236,236,233,99,128,4,119,106,138,0,106,114,135,114,198,114,209,115,3,115,19,115,132,115,201,115,206,115,218,115,226,97,4,114,145,114,156,114,166,114,173,225,242,237,229,238,233,225,110,128,5,113,226,229,238,231,225,236,105,128,9,156,228,229,246,97,128,9,28,231,117,2,114,180,114,189,234,225,242,225,244,105,128,10,156,242,237,245,235,232,105,128,10,28,226,239,240,239,237,239,230,111,128,49,16,99,3,114,217,114,224,114,246,225,242,239,110,128,1,240,233,242,99,2,114,232,114,237,236,101,128,36,217,245,237,230,236,229,120,128,1,53,242,239,243,243,229,228,244,225,233,108,128,2,157,228,239,244,236,229,243,243,243,244,242,239,235,101,128,2,95,101,3,115,27,115,38,115,103,227,249,242,233,236,236,233,99,128,4,88,229,109,4,115,49,115,58,115,72,115,88,225,242,225,226,233,99,128,6,44,230,233,238,225,236,225,242,225,226,233,99,128,254,158,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,159,237,229,228,233,225,236,225,242,225,226,233,99,128,254,160,104,2,115,109,115,118,225,242,225,226,233,99,128,6,152,230,233,238,225,236,225,242,225,226,233,99,128,251,139,104,2,115,138,115,188,97,3,115,146,115,156,115,163,226,229,238,231,225,236,105,128,9,157,228,229,246,97,128,9,29,231,117,2,115,170,115,179,234,225,242,225,244,105,128,10,157,242,237,245,235,232,105,128,10,29,229,232,225,242,237,229,238,233,225,110,128,5,123,233,115,128,48,4,237,239,238,239,243,240,225,227,101,128,255,74,240,225,242,229,110,128,36,165,243,245,240,229,242,233,239,114,128,2,178,107,146,0,107,116,21,118,110,118,121,118,183,118,194,119,28,119,42,120,150,121,90,121,103,121,129,121,178,122,60,122,82,122,95,122,118,122,160,122,170,97,12,116,47,116,79,116,101,116,131,116,245,117,14,117,44,117,69,117,175,117,189,118,56,118,85,98,2,116,53,116,70,225,243,232,235,233,242,227,249,242,233,236,236,233,99,128,4,161,229,238,231,225,236,105,128,9,149,99,2,116,85,116,91,245,244,101,128,30,49,249,242,233,236,236,233,99,128,4,58,228,101,2,116,108,116,126,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,155,246,97,128,9,21,102,135,5,219,116,149,116,158,116,178,116,192,116,201,116,217,116,232,225,242,225,226,233,99,128,6,67,228,225,231,229,243,104,129,251,59,116,169,232,229,226,242,229,119,128,251,59,230,233,238,225,236,225,242,225,226,233,99,128,254,218,232,229,226,242,229,119,128,5,219,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,219,237,229,228,233,225,236,225,242,225,226,233,99,128,254,220,242,225,230,229,232,229,226,242,229,119,128,251,77,231,117,2,116,252,117,5,234,225,242,225,244,105,128,10,149,242,237,245,235,232,105,128,10,21,104,2,117,20,117,30,233,242,225,231,225,238,97,128,48,75,239,239,235,227,249,242,233,236,236,233,99,128,4,196,235,225,244,225,235,225,238,97,129,48,171,117,57,232,225,236,230,247,233,228,244,104,128,255,118,112,2,117,75,117,96,240,97,129,3,186,117,82,243,249,237,226,239,236,231,242,229,229,107,128,3,240,249,229,239,245,110,3,117,108,117,122,117,156,237,233,229,245,237,235,239,242,229,225,110,128,49,113,112,2,117,128,117,143,232,233,229,245,240,232,235,239,242,229,225,110,128,49,132,233,229,245,240,235,239,242,229,225,110,128,49,120,243,243,225,238,231,240,233,229,245,240,235,239,242,229,225,110,128,49,121,242,239,242,233,233,243,241,245,225,242,101,128,51,13,115,5,117,201,117,245,118,4,118,12,118,40,232,233,228,225,225,245,244,111,2,117,214,117,223,225,242,225,226,233,99,128,6,64,238,239,243,233,228,229,226,229,225,242,233,238,231,225,242,225,226,233,99,128,6,64,237,225,236,236,235,225,244,225,235,225,238,97,128,48,245,241,245,225,242,101,128,51,132,242,97,2,118,19,118,28,225,242,225,226,233,99,128,6,80,244,225,238,225,242,225,226,233,99,128,6,77,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,159,244,225,232,233,242,225,240,242,239,236,239,238,231,237,225,242,235,232,225,236,230,247,233,228,244,104,128,255,112,246,229,242,244,233,227,225,236,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,157,226,239,240,239,237,239,230,111,128,49,14,99,4,118,131,118,153,118,162,118,170,97,2,118,137,118,147,236,243,241,245,225,242,101,128,51,137,242,239,110,128,1,233,229,228,233,236,236,97,128,1,55,233,242,227,236,101,128,36,218,239,237,237,225,225,227,227,229,238,116,128,1,55,228,239,244,226,229,236,239,119,128,30,51,101,4,118,204,118,231,119,0,119,12,104,2,118,210,118,221,225,242,237,229,238,233,225,110,128,5,132,233,242,225,231,225,238,97,128,48,81,235,225,244,225,235,225,238,97,129,48,177,118,244,232,225,236,230,247,233,228,244,104,128,255,121,238,225,242,237,229,238,233,225,110,128,5,111,243,237,225,236,236,235,225,244,225,235,225,238,97,128,48,246,231,242,229,229,238,236,225,238,228,233,99,128,1,56,104,6,119,56,119,185,119,196,119,221,120,52,120,140,97,5,119,68,119,78,119,89,119,96,119,121,226,229,238,231,225,236,105,128,9,150,227,249,242,233,236,236,233,99,128,4,69,228,229,246,97,128,9,22,231,117,2,119,103,119,112,234,225,242,225,244,105,128,10,150,242,237,245,235,232,105,128,10,22,104,4,119,131,119,140,119,154,119,170,225,242,225,226,233,99,128,6,46,230,233,238,225,236,225,242,225,226,233,99,128,254,166,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,167,237,229,228,233,225,236,225,242,225,226,233,99,128,254,168,229,233,227,239,240,244,233,99,128,3,231,232,97,2,119,203,119,210,228,229,246,97,128,9,89,231,245,242,237,245,235,232,105,128,10,89,233,229,245,235,104,4,119,235,120,14,120,29,120,38,97,2,119,241,120,0,227,233,242,227,236,229,235,239,242,229,225,110,128,50,120,240,225,242,229,238,235,239,242,229,225,110,128,50,24,227,233,242,227,236,229,235,239,242,229,225,110,128,50,106,235,239,242,229,225,110,128,49,75,240,225,242,229,238,235,239,242,229,225,110,128,50,10,111,4,120,62,120,111,120,121,120,126,235,104,4,120,73,120,82,120,91,120,101,225,233,244,232,225,105,128,14,2,239,238,244,232,225,105,128,14,5,245,225,244,244,232,225,105,128,14,3,247,225,233,244,232,225,105,128,14,4,237,245,244,244,232,225,105,128,14,91,239,107,128,1,153,242,225,235,232,225,238,231,244,232,225,105,128,14,6,250,243,241,245,225,242,101,128,51,145,105,4,120,160,120,171,120,196,120,245,232,233,242,225,231,225,238,97,128,48,77,235,225,244,225,235,225,238,97,129,48,173,120,184,232,225,236,230,247,233,228,244,104,128,255,119,242,111,3,120,205,120,220,120,236,231,245,242,225,237,245,243,241,245,225,242,101,128,51,21,237,229,229,244,239,242,245,243,241,245,225,242,101,128,51,22,243,241,245,225,242,101,128,51,20,249,229,239,107,5,121,4,121,39,121,54,121,63,121,77,97,2,121,10,121,25,227,233,242,227,236,229,235,239,242,229,225,110,128,50,110,240,225,242,229,238,235,239,242,229,225,110,128,50,14,227,233,242,227,236,229,235,239,242,229,225,110,128,50,96,235,239,242,229,225,110,128,49,49,240,225,242,229,238,235,239,242,229,225,110,128,50,0,243,233,239,243,235,239,242,229,225,110,128,49,51,234,229,227,249,242,233,236,236,233,99,128,4,92,108,2,121,109,121,120,233,238,229,226,229,236,239,119,128,30,53,243,241,245,225,242,101,128,51,152,109,3,121,137,121,151,121,162,227,245,226,229,228,243,241,245,225,242,101,128,51,166,239,238,239,243,240,225,227,101,128,255,75,243,241,245,225,242,229,228,243,241,245,225,242,101,128,51,162,111,5,121,190,121,216,121,254,122,10,122,24,104,2,121,196,121,206,233,242,225,231,225,238,97,128,48,83,237,243,241,245,225,242,101,128,51,192,235,97,2,121,223,121,231,233,244,232,225,105,128,14,1,244,225,235,225,238,97,129,48,179,121,242,232,225,236,230,247,233,228,244,104,128,255,122,239,240,239,243,241,245,225,242,101,128,51,30,240,240,225,227,249,242,233,236,236,233,99,128,4,129,114,2,122,30,122,50,229,225,238,243,244,225,238,228,225,242,228,243,249,237,226,239,108,128,50,127,239,238,233,243,227,237,98,128,3,67,240,97,2,122,67,122,73,242,229,110,128,36,166,243,241,245,225,242,101,128,51,170,243,233,227,249,242,233,236,236,233,99,128,4,111,116,2,122,101,122,110,243,241,245,225,242,101,128,51,207,245,242,238,229,100,128,2,158,117,2,122,124,122,135,232,233,242,225,231,225,238,97,128,48,79,235,225,244,225,235,225,238,97,129,48,175,122,148,232,225,236,230,247,233,228,244,104,128,255,120,246,243,241,245,225,242,101,128,51,184,247,243,241,245,225,242,101,128,51,190,108,146,0,108,122,220,124,247,125,20,125,86,125,124,126,20,126,29,126,45,126,69,126,87,126,205,126,246,127,125,127,133,127,166,127,175,127,183,127,245,97,7,122,236,122,246,122,253,123,4,123,29,123,45,124,235,226,229,238,231,225,236,105,128,9,178,227,245,244,101,128,1,58,228,229,246,97,128,9,50,231,117,2,123,11,123,20,234,225,242,225,244,105,128,10,178,242,237,245,235,232,105,128,10,50,235,235,232,225,238,231,249,225,239,244,232,225,105,128,14,69,109,10,123,67,124,6,124,23,124,61,124,75,124,94,124,110,124,130,124,150,124,173,97,2,123,73,123,254,236,229,102,4,123,85,123,99,123,191,123,208,230,233,238,225,236,225,242,225,226,233,99,128,254,252,232,225,237,250,97,2,123,109,123,150,225,226,239,246,101,2,123,119,123,133,230,233,238,225,236,225,242,225,226,233,99,128,254,248,233,243,239,236,225,244,229,228,225,242,225,226,233,99,128,254,247,226,229,236,239,119,2,123,160,123,174,230,233,238,225,236,225,242,225,226,233,99,128,254,250,233,243,239,236,225,244,229,228,225,242,225,226,233,99,128,254,249,233,243,239,236,225,244,229,228,225,242,225,226,233,99,128,254,251,237,225,228,228,225,225,226,239,246,101,2,123,223,123,237,230,233,238,225,236,225,242,225,226,233,99,128,254,246,233,243,239,236,225,244,229,228,225,242,225,226,233,99,128,254,245,242,225,226,233,99,128,6,68,226,228,97,129,3,187,124,14,243,244,242,239,235,101,128,1,155,229,100,130,5,220,124,32,124,52,228,225,231,229,243,104,129,251,60,124,43,232,229,226,242,229,119,128,251,60,232,229,226,242,229,119,128,5,220,230,233,238,225,236,225,242,225,226,233,99,128,254,222,232,225,232,233,238,233,244,233,225,236,225,242,225,226,233,99,128,252,202,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,223,234,229,229,237,233,238,233,244,233,225,236,225,242,225,226,233,99,128,252,201,235,232,225,232,233,238,233,244,233,225,236,225,242,225,226,233,99,128,252,203,236,225,237,232,229,232,233,243,239,236,225,244,229,228,225,242,225,226,233,99,128,253,242,237,101,2,124,180,124,193,228,233,225,236,225,242,225,226,233,99,128,254,224,229,109,2,124,200,124,219,232,225,232,233,238,233,244,233,225,236,225,242,225,226,233,99,128,253,136,233,238,233,244,233,225,236,225,242,225,226,233,99,128,252,204,242,231,229,227,233,242,227,236,101,128,37,239,98,3,124,255,125,4,125,10,225,114,128,1,154,229,236,116,128,2,108,239,240,239,237,239,230,111,128,49,12,99,4,125,30,125,37,125,46,125,73,225,242,239,110,128,1,62,229,228,233,236,236,97,128,1,60,233,242,99,2,125,54,125,59,236,101,128,36,219,245,237,230,236,229,248,226,229,236,239,119,128,30,61,239,237,237,225,225,227,227,229,238,116,128,1,60,228,239,116,130,1,64,125,96,125,105,225,227,227,229,238,116,128,1,64,226,229,236,239,119,129,30,55,125,115,237,225,227,242,239,110,128,30,57,101,3,125,132,125,170,126,15,230,116,2,125,139,125,155,225,238,231,236,229,225,226,239,246,229,227,237,98,128,3,26,244,225,227,235,226,229,236,239,247,227,237,98,128,3,24,243,115,132,0,60,125,183,125,205,125,217,126,7,229,241,245,225,108,129,34,100,125,193,239,242,231,242,229,225,244,229,114,128,34,218,237,239,238,239,243,240,225,227,101,128,255,28,111,2,125,223,125,252,114,2,125,229,125,242,229,241,245,233,246,225,236,229,238,116,128,34,114,231,242,229,225,244,229,114,128,34,118,246,229,242,229,241,245,225,108,128,34,102,243,237,225,236,108,128,254,100,250,104,128,2,110,230,226,236,239,227,107,128,37,140,232,239,239,235,242,229,244,242,239,230,236,229,120,128,2,109,105,2,126,51,126,56,242,97,128,32,164,247,238,225,242,237,229,238,233,225,110,128,5,108,106,129,1,201,126,75,229,227,249,242,233,236,236,233,99,128,4,89,108,132,246,192,126,99,126,123,126,134,126,143,97,2,126,105,126,112,228,229,246,97,128,9,51,231,245,234,225,242,225,244,105,128,10,179,233,238,229,226,229,236,239,119,128,30,59,236,225,228,229,246,97,128,9,52,246,239,227,225,236,233,99,3,126,157,126,167,126,174,226,229,238,231,225,236,105,128,9,225,228,229,246,97,128,9,97,246,239,247,229,236,243,233,231,110,2,126,188,126,198,226,229,238,231,225,236,105,128,9,227,228,229,246,97,128,9,99,109,3,126,213,126,226,126,237,233,228,228,236,229,244,233,236,228,101,128,2,107,239,238,239,243,240,225,227,101,128,255,76,243,241,245,225,242,101,128,51,208,111,6,127,4,127,16,127,58,127,69,127,75,127,117,227,232,245,236,225,244,232,225,105,128,14,44,231,233,227,225,108,3,127,28,127,34,127,53,225,238,100,128,34,39,238,239,116,129,0,172,127,42,242,229,246,229,242,243,229,100,128,35,16,239,114,128,34,40,236,233,238,231,244,232,225,105,128,14,37,238,231,115,128,1,127,247,236,233,238,101,2,127,85,127,108,99,2,127,91,127,103,229,238,244,229,242,236,233,238,101,128,254,78,237,98,128,3,50,228,225,243,232,229,100,128,254,77,250,229,238,231,101,128,37,202,240,225,242,229,110,128,36,167,115,3,127,141,127,148,127,156,236,225,243,104,128,1,66,241,245,225,242,101,128,33,19,245,240,229,242,233,239,114,128,246,238,244,243,232,225,228,101,128,37,145,245,244,232,225,105,128,14,38,246,239,227,225,236,233,99,3,127,197,127,207,127,214,226,229,238,231,225,236,105,128,9,140,228,229,246,97,128,9,12,246,239,247,229,236,243,233,231,110,2,127,228,127,238,226,229,238,231,225,236,105,128,9,226,228,229,246,97,128,9,98,248,243,241,245,225,242,101,128,51,211,109,144,0,109,128,35,130,144,130,169,130,196,130,221,132,18,132,40,133,95,133,125,133,174,134,25,134,47,134,72,134,81,135,108,135,136,97,12,128,61,128,71,128,135,128,142,128,167,128,215,130,51,130,76,130,81,130,95,130,107,130,112,226,229,238,231,225,236,105,128,9,174,99,2,128,77,128,129,242,239,110,132,0,175,128,91,128,102,128,108,128,117,226,229,236,239,247,227,237,98,128,3,49,227,237,98,128,3,4,236,239,247,237,239,100,128,2,205,237,239,238,239,243,240,225,227,101,128,255,227,245,244,101,128,30,63,228,229,246,97,128,9,46,231,117,2,128,149,128,158,234,225,242,225,244,105,128,10,174,242,237,245,235,232,105,128,10,46,104,2,128,173,128,205,225,240,225,235,104,2,128,183,128,192,232,229,226,242,229,119,128,5,164,236,229,230,244,232,229,226,242,229,119,128,5,164,233,242,225,231,225,238,97,128,48,126,105,5,128,227,129,40,129,103,129,133,130,39,227,232,225,244,244,225,247,97,3,128,242,129,17,129,24,236,239,119,2,128,250,129,5,236,229,230,244,244,232,225,105,128,248,149,242,233,231,232,244,244,232,225,105,128,248,148,244,232,225,105,128,14,75,245,240,240,229,242,236,229,230,244,244,232,225,105,128,248,147,229,107,3,129,49,129,80,129,87,236,239,119,2,129,57,129,68,236,229,230,244,244,232,225,105,128,248,140,242,233,231,232,244,244,232,225,105,128,248,139,244,232,225,105,128,14,72,245,240,240,229,242,236,229,230,244,244,232,225,105,128,248,138,232,225,238,225,235,225,116,2,129,115,129,126,236,229,230,244,244,232,225,105,128,248,132,244,232,225,105,128,14,49,116,3,129,141,129,169,129,232,225,233,235,232,117,2,129,151,129,162,236,229,230,244,244,232,225,105,128,248,137,244,232,225,105,128,14,71,232,111,3,129,178,129,209,129,216,236,239,119,2,129,186,129,197,236,229,230,244,244,232,225,105,128,248,143,242,233,231,232,244,244,232,225,105,128,248,142,244,232,225,105,128,14,73,245,240,240,229,242,236,229,230,244,244,232,225,105,128,248,141,242,105,3,129,241,130,16,130,23,236,239,119,2,129,249,130,4,236,229,230,244,244,232,225,105,128,248,146,242,233,231,232,244,244,232,225,105,128,248,145,244,232,225,105,128,14,74,245,240,240,229,242,236,229,230,244,244,232,225,105,128,248,144,249,225,237,239,235,244,232,225,105,128,14,70,235,225,244,225,235,225,238,97,129,48,222,130,64,232,225,236,230,247,233,228,244,104,128,255,143,236,101,128,38,66,238,243,249,239,238,243,241,245,225,242,101,128,51,71,241,225,230,232,229,226,242,229,119,128,5,190,242,115,128,38,66,115,2,130,118,130,136,239,242,225,227,233,242,227,236,229,232,229,226,242,229,119,128,5,175,241,245,225,242,101,128,51,131,98,2,130,150,130,160,239,240,239,237,239,230,111,128,49,7,243,241,245,225,242,101,128,51,212,99,2,130,175,130,183,233,242,227,236,101,128,36,220,245,226,229,228,243,241,245,225,242,101,128,51,165,228,239,116,2,130,204,130,213,225,227,227,229,238,116,128,30,65,226,229,236,239,119,128,30,67,101,7,130,237,131,108,131,119,131,134,131,159,131,196,131,208,101,2,130,243,131,95,109,4,130,253,131,6,131,20,131,36,225,242,225,226,233,99,128,6,69,230,233,238,225,236,225,242,225,226,233,99,128,254,226,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,227,237,101,2,131,43,131,56,228,233,225,236,225,242,225,226,233,99,128,254,228,229,237,105,2,131,64,131,79,238,233,244,233,225,236,225,242,225,226,233,99,128,252,209,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,72,244,239,242,245,243,241,245,225,242,101,128,51,77,232,233,242,225,231,225,238,97,128,48,129,233,250,233,229,242,225,243,241,245,225,242,101,128,51,126,235,225,244,225,235,225,238,97,129,48,225,131,147,232,225,236,230,247,233,228,244,104,128,255,146,109,130,5,222,131,167,131,187,228,225,231,229,243,104,129,251,62,131,178,232,229,226,242,229,119,128,251,62,232,229,226,242,229,119,128,5,222,238,225,242,237,229,238,233,225,110,128,5,116,242,235,232,97,3,131,219,131,228,132,5,232,229,226,242,229,119,128,5,165,235,229,230,245,236,97,2,131,239,131,248,232,229,226,242,229,119,128,5,166,236,229,230,244,232,229,226,242,229,119,128,5,166,236,229,230,244,232,229,226,242,229,119,128,5,165,104,2,132,24,132,30,239,239,107,128,2,113,250,243,241,245,225,242,101,128,51,146,105,6,132,54,132,91,132,228,132,239,133,8,133,65,228,100,2,132,61,132,86,236,229,228,239,244,235,225,244,225,235,225,238,225,232,225,236,230,247,233,228,244,104,128,255,101,239,116,128,0,183,229,245,109,5,132,105,132,140,132,155,132,164,132,215,97,2,132,111,132,126,227,233,242,227,236,229,235,239,242,229,225,110,128,50,114,240,225,242,229,238,235,239,242,229,225,110,128,50,18,227,233,242,227,236,229,235,239,242,229,225,110,128,50,100,235,239,242,229,225,110,128,49,65,112,2,132,170,132,202,97,2,132,176,132,190,238,243,233,239,243,235,239,242,229,225,110,128,49,112,242,229,238,235,239,242,229,225,110,128,50,4,233,229,245,240,235,239,242,229,225,110,128,49,110,243,233,239,243,235,239,242,229,225,110,128,49,111,232,233,242,225,231,225,238,97,128,48,127,235,225,244,225,235,225,238,97,129,48,223,132,252,232,225,236,230,247,233,228,244,104,128,255,144,238,117,2,133,15,133,60,115,132,34,18,133,27,133,38,133,47,133,53,226,229,236,239,247,227,237,98,128,3,32,227,233,242,227,236,101,128,34,150,237,239,100,128,2,215,240,236,245,115,128,34,19,244,101,128,32,50,242,105,2,133,72,133,86,226,225,225,242,245,243,241,245,225,242,101,128,51,74,243,241,245,225,242,101,128,51,73,108,2,133,101,133,116,239,238,231,236,229,231,244,245,242,238,229,100,128,2,112,243,241,245,225,242,101,128,51,150,109,3,133,133,133,147,133,158,227,245,226,229,228,243,241,245,225,242,101,128,51,163,239,238,239,243,240,225,227,101,128,255,77,243,241,245,225,242,229,228,243,241,245,225,242,101,128,51,159,111,5,133,186,133,212,133,237,133,247,134,0,104,2,133,192,133,202,233,242,225,231,225,238,97,128,48,130,237,243,241,245,225,242,101,128,51,193,235,225,244,225,235,225,238,97,129,48,226,133,225,232,225,236,230,247,233,228,244,104,128,255,147,236,243,241,245,225,242,101,128,51,214,237,225,244,232,225,105,128,14,33,246,229,242,243,243,241,245,225,242,101,129,51,167,134,15,228,243,241,245,225,242,101,128,51,168,240,97,2,134,32,134,38,242,229,110,128,36,168,243,241,245,225,242,101,128,51,171,115,2,134,53,134,62,243,241,245,225,242,101,128,51,179,245,240,229,242,233,239,114,128,246,239,244,245,242,238,229,100,128,2,111,117,141,0,181,134,111,134,115,134,125,134,149,134,159,134,181,134,192,134,217,134,240,134,250,135,24,135,88,135,98,49,128,0,181,225,243,241,245,225,242,101,128,51,130,227,104,2,134,132,134,142,231,242,229,225,244,229,114,128,34,107,236,229,243,115,128,34,106,230,243,241,245,225,242,101,128,51,140,103,2,134,165,134,172,242,229,229,107,128,3,188,243,241,245,225,242,101,128,51,141,232,233,242,225,231,225,238,97,128,48,128,235,225,244,225,235,225,238,97,129,48,224,134,205,232,225,236,230,247,233,228,244,104,128,255,145,108,2,134,223,134,232,243,241,245,225,242,101,128,51,149,244,233,240,236,121,128,0,215,237,243,241,245,225,242,101,128,51,155,238,225,104,2,135,2,135,11,232,229,226,242,229,119,128,5,163,236,229,230,244,232,229,226,242,229,119,128,5,163,115,2,135,30,135,79,233,99,3,135,39,135,56,135,67,225,236,238,239,244,101,129,38,106,135,50,228,226,108,128,38,107,230,236,225,244,243,233,231,110,128,38,109,243,232,225,242,240,243,233,231,110,128,38,111,243,241,245,225,242,101,128,51,178,246,243,241,245,225,242,101,128,51,182,247,243,241,245,225,242,101,128,51,188,118,2,135,114,135,127,237,229,231,225,243,241,245,225,242,101,128,51,185,243,241,245,225,242,101,128,51,183,119,2,135,142,135,155,237,229,231,225,243,241,245,225,242,101,128,51,191,243,241,245,225,242,101,128,51,189,110,150,0,110,135,212,136,90,136,114,136,180,136,205,137,7,137,17,137,84,137,127,139,161,139,179,139,204,139,235,140,5,140,70,142,52,142,60,142,85,142,93,143,61,143,71,143,81,97,8,135,230],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+51200);allocate([135,250,136,1,136,8,136,33,136,44,136,69,136,81,98,2,135,236,135,245,229,238,231,225,236,105,128,9,168,236,97,128,34,7,227,245,244,101,128,1,68,228,229,246,97,128,9,40,231,117,2,136,15,136,24,234,225,242,225,244,105,128,10,168,242,237,245,235,232,105,128,10,40,232,233,242,225,231,225,238,97,128,48,106,235,225,244,225,235,225,238,97,129,48,202,136,57,232,225,236,230,247,233,228,244,104,128,255,133,240,239,243,244,242,239,240,232,101,128,1,73,243,241,245,225,242,101,128,51,129,98,2,136,96,136,106,239,240,239,237,239,230,111,128,49,11,243,240,225,227,101,128,0,160,99,4,136,124,136,131,136,140,136,167,225,242,239,110,128,1,72,229,228,233,236,236,97,128,1,70,233,242,99,2,136,148,136,153,236,101,128,36,221,245,237,230,236,229,248,226,229,236,239,119,128,30,75,239,237,237,225,225,227,227,229,238,116,128,1,70,228,239,116,2,136,188,136,197,225,227,227,229,238,116,128,30,69,226,229,236,239,119,128,30,71,101,3,136,213,136,224,136,249,232,233,242,225,231,225,238,97,128,48,109,235,225,244,225,235,225,238,97,129,48,205,136,237,232,225,236,230,247,233,228,244,104,128,255,136,247,243,232,229,241,229,236,243,233,231,110,128,32,170,230,243,241,245,225,242,101,128,51,139,103,2,137,23,137,73,97,3,137,31,137,41,137,48,226,229,238,231,225,236,105,128,9,153,228,229,246,97,128,9,25,231,117,2,137,55,137,64,234,225,242,225,244,105,128,10,153,242,237,245,235,232,105,128,10,25,239,238,231,245,244,232,225,105,128,14,7,104,2,137,90,137,100,233,242,225,231,225,238,97,128,48,147,239,239,107,2,137,108,137,115,236,229,230,116,128,2,114,242,229,244,242,239,230,236,229,120,128,2,115,105,4,137,137,138,50,138,61,138,119,229,245,110,7,137,155,137,190,137,222,137,236,137,245,138,22,138,35,97,2,137,161,137,176,227,233,242,227,236,229,235,239,242,229,225,110,128,50,111,240,225,242,229,238,235,239,242,229,225,110,128,50,15,227,105,2,137,197,137,209,229,245,227,235,239,242,229,225,110,128,49,53,242,227,236,229,235,239,242,229,225,110,128,50,97,232,233,229,245,232,235,239,242,229,225,110,128,49,54,235,239,242,229,225,110,128,49,52,240,97,2,137,252,138,10,238,243,233,239,243,235,239,242,229,225,110,128,49,104,242,229,238,235,239,242,229,225,110,128,50,1,243,233,239,243,235,239,242,229,225,110,128,49,103,244,233,235,229,245,244,235,239,242,229,225,110,128,49,102,232,233,242,225,231,225,238,97,128,48,107,107,2,138,67,138,91,225,244,225,235,225,238,97,129,48,203,138,79,232,225,236,230,247,233,228,244,104,128,255,134,232,225,232,233,116,2,138,101,138,112,236,229,230,244,244,232,225,105,128,248,153,244,232,225,105,128,14,77,238,101,141,0,57,138,150,138,159,138,169,138,199,138,206,138,231,139,2,139,36,139,48,139,59,139,92,139,100,139,111,225,242,225,226,233,99,128,6,105,226,229,238,231,225,236,105,128,9,239,227,233,242,227,236,101,129,36,104,138,180,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,146,228,229,246,97,128,9,111,231,117,2,138,213,138,222,234,225,242,225,244,105,128,10,239,242,237,245,235,232,105,128,10,111,232,97,2,138,238,138,249,227,235,225,242,225,226,233,99,128,6,105,238,231,250,232,239,117,128,48,41,105,2,139,8,139,26,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,40,238,230,229,242,233,239,114,128,32,137,237,239,238,239,243,240,225,227,101,128,255,25,239,236,228,243,244,249,236,101,128,247,57,112,2,139,65,139,72,225,242,229,110,128,36,124,229,114,2,139,79,139,85,233,239,100,128,36,144,243,233,225,110,128,6,249,242,239,237,225,110,128,33,120,243,245,240,229,242,233,239,114,128,32,121,116,2,139,117,139,155,229,229,110,2,139,125,139,134,227,233,242,227,236,101,128,36,114,112,2,139,140,139,147,225,242,229,110,128,36,134,229,242,233,239,100,128,36,154,232,225,105,128,14,89,106,129,1,204,139,167,229,227,249,242,233,236,236,233,99,128,4,90,235,225,244,225,235,225,238,97,129,48,243,139,192,232,225,236,230,247,233,228,244,104,128,255,157,108,2,139,210,139,224,229,231,242,233,231,232,244,236,239,238,103,128,1,158,233,238,229,226,229,236,239,119,128,30,73,109,2,139,241,139,252,239,238,239,243,240,225,227,101,128,255,78,243,241,245,225,242,101,128,51,154,110,2,140,11,140,61,97,3,140,19,140,29,140,36,226,229,238,231,225,236,105,128,9,163,228,229,246,97,128,9,35,231,117,2,140,43,140,52,234,225,242,225,244,105,128,10,163,242,237,245,235,232,105,128,10,35,238,225,228,229,246,97,128,9,41,111,6,140,84,140,95,140,120,140,161,141,113,142,40,232,233,242,225,231,225,238,97,128,48,110,235,225,244,225,235,225,238,97,129,48,206,140,108,232,225,236,230,247,233,228,244,104,128,255,137,110,3,140,128,140,144,140,153,226,242,229,225,235,233,238,231,243,240,225,227,101,128,0,160,229,238,244,232,225,105,128,14,19,245,244,232,225,105,128,14,25,239,110,7,140,178,140,187,140,201,140,235,140,251,141,36,141,95,225,242,225,226,233,99,128,6,70,230,233,238,225,236,225,242,225,226,233,99,128,254,230,231,232,245,238,238,97,2,140,212,140,221,225,242,225,226,233,99,128,6,186,230,233,238,225,236,225,242,225,226,233,99,128,251,159,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,231,234,229,229,237,105,2,141,5,141,20,238,233,244,233,225,236,225,242,225,226,233,99,128,252,210,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,75,237,101,2,141,43,141,56,228,233,225,236,225,242,225,226,233,99,128,254,232,229,237,105,2,141,64,141,79,238,233,244,233,225,236,225,242,225,226,233,99,128,252,213,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,78,238,239,239,238,230,233,238,225,236,225,242,225,226,233,99,128,252,141,116,7,141,129,141,140,141,169,141,204,141,216,141,236,142,6,227,239,238,244,225,233,238,115,128,34,12,101,2,141,146,141,162,236,229,237,229,238,116,129,34,9,141,157,239,102,128,34,9,241,245,225,108,128,34,96,231,242,229,225,244,229,114,129,34,111,141,181,238,239,114,2,141,189,141,197,229,241,245,225,108,128,34,113,236,229,243,115,128,34,121,233,228,229,238,244,233,227,225,108,128,34,98,236,229,243,115,129,34,110,141,225,238,239,242,229,241,245,225,108,128,34,112,112,2,141,242,141,252,225,242,225,236,236,229,108,128,34,38,242,229,227,229,228,229,115,128,34,128,243,117,3,142,15,142,22,142,31,226,243,229,116,128,34,132,227,227,229,229,228,115,128,34,129,240,229,242,243,229,116,128,34,133,247,225,242,237,229,238,233,225,110,128,5,118,240,225,242,229,110,128,36,169,115,2,142,66,142,75,243,241,245,225,242,101,128,51,177,245,240,229,242,233,239,114,128,32,127,244,233,236,228,101,128,0,241,117,132,3,189,142,105,142,116,142,197,143,24,232,233,242,225,231,225,238,97,128,48,108,107,2,142,122,142,146,225,244,225,235,225,238,97,129,48,204,142,134,232,225,236,230,247,233,228,244,104,128,255,135,244,97,3,142,155,142,165,142,172,226,229,238,231,225,236,105,128,9,188,228,229,246,97,128,9,60,231,117,2,142,179,142,188,234,225,242,225,244,105,128,10,188,242,237,245,235,232,105,128,10,60,109,2,142,203,142,237,226,229,242,243,233,231,110,130,0,35,142,217,142,229,237,239,238,239,243,240,225,227,101,128,255,3,243,237,225,236,108,128,254,95,229,114,2,142,244,143,20,225,236,243,233,231,110,2,142,255,143,7,231,242,229,229,107,128,3,116,236,239,247,229,242,231,242,229,229,107,128,3,117,111,128,33,22,110,130,5,224,143,32,143,52,228,225,231,229,243,104,129,251,64,143,43,232,229,226,242,229,119,128,251,64,232,229,226,242,229,119,128,5,224,246,243,241,245,225,242,101,128,51,181,247,243,241,245,225,242,101,128,51,187,249,97,3,143,90,143,100,143,107,226,229,238,231,225,236,105,128,9,158,228,229,246,97,128,9,30,231,117,2,143,114,143,123,234,225,242,225,244,105,128,10,158,242,237,245,235,232,105,128,10,30,111,147,0,111,143,174,143,196,144,18,144,188,145,4,145,19,145,59,145,182,145,203,145,241,145,252,146,174,148,8,148,72,148,105,148,151,149,24,149,71,149,83,97,2,143,180,143,187,227,245,244,101,128,0,243,238,231,244,232,225,105,128,14,45,98,4,143,206,143,248,144,1,144,11,225,242,242,229,100,130,2,117,143,218,143,229,227,249,242,233,236,236,233,99,128,4,233,228,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,235,229,238,231,225,236,105,128,9,147,239,240,239,237,239,230,111,128,49,27,242,229,246,101,128,1,79,99,3,144,26,144,99,144,178,97,2,144,32,144,93,238,228,242,97,3,144,43,144,50,144,61,228,229,246,97,128,9,17,231,245,234,225,242,225,244,105,128,10,145,246,239,247,229,236,243,233,231,110,2,144,75,144,82,228,229,246,97,128,9,73,231,245,234,225,242,225,244,105,128,10,201,242,239,110,128,1,210,233,242,99,2,144,107,144,112,236,101,128,36,222,245,237,230,236,229,120,133,0,244,144,131,144,139,144,150,144,158,144,170,225,227,245,244,101,128,30,209,228,239,244,226,229,236,239,119,128,30,217,231,242,225,246,101,128,30,211,232,239,239,235,225,226,239,246,101,128,30,213,244,233,236,228,101,128,30,215,249,242,233,236,236,233,99,128,4,62,100,4,144,198,144,221,144,227,144,250,226,108,2,144,205,144,213,225,227,245,244,101,128,1,81,231,242,225,246,101,128,2,13,229,246,97,128,9,19,233,229,242,229,243,233,115,129,0,246,144,239,227,249,242,233,236,236,233,99,128,4,231,239,244,226,229,236,239,119,128,30,205,101,129,1,83,145,10,235,239,242,229,225,110,128,49,90,103,3,145,27,145,42,145,49,239,238,229,107,129,2,219,145,36,227,237,98,128,3,40,242,225,246,101,128,0,242,245,234,225,242,225,244,105,128,10,147,104,4,145,69,145,80,145,90,145,168,225,242,237,229,238,233,225,110,128,5,133,233,242,225,231,225,238,97,128,48,74,111,2,145,96,145,106,239,235,225,226,239,246,101,128,30,207,242,110,133,1,161,145,121,145,129,145,140,145,148,145,160,225,227,245,244,101,128,30,219,228,239,244,226,229,236,239,119,128,30,227,231,242,225,246,101,128,30,221,232,239,239,235,225,226,239,246,101,128,30,223,244,233,236,228,101,128,30,225,245,238,231,225,242,245,237,236,225,245,116,128,1,81,105,129,1,163,145,188,238,246,229,242,244,229,228,226,242,229,246,101,128,2,15,107,2,145,209,145,233,225,244,225,235,225,238,97,129,48,170,145,221,232,225,236,230,247,233,228,244,104,128,255,117,239,242,229,225,110,128,49,87,236,229,232,229,226,242,229,119,128,5,171,109,6,146,10,146,38,146,45,146,134,146,145,146,163,225,227,242,239,110,130,1,77,146,22,146,30,225,227,245,244,101,128,30,83,231,242,225,246,101,128,30,81,228,229,246,97,128,9,80,229,231,97,133,3,201,146,61,146,65,146,76,146,90,146,106,49,128,3,214,227,249,242,233,236,236,233,99,128,4,97,236,225,244,233,238,227,236,239,243,229,100,128,2,119,242,239,245,238,228,227,249,242,233,236,236,233,99,128,4,123,116,2,146,112,146,127,233,244,236,239,227,249,242,233,236,236,233,99,128,4,125,239,238,239,115,128,3,206,231,245,234,225,242,225,244,105,128,10,208,233,227,242,239,110,129,3,191,146,155,244,239,238,239,115,128,3,204,239,238,239,243,240,225,227,101,128,255,79,238,101,145,0,49,146,213,146,222,146,232,147,6,147,31,147,40,147,49,147,74,147,108,147,142,147,154,147,173,147,184,147,217,147,227,147,235,147,246,225,242,225,226,233,99,128,6,97,226,229,238,231,225,236,105,128,9,231,227,233,242,227,236,101,129,36,96,146,243,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,138,100,2,147,12,147,18,229,246,97,128,9,103,239,244,229,238,236,229,225,228,229,114,128,32,36,229,233,231,232,244,104,128,33,91,230,233,244,244,229,100,128,246,220,231,117,2,147,56,147,65,234,225,242,225,244,105,128,10,231,242,237,245,235,232,105,128,10,103,232,97,3,147,83,147,94,147,99,227,235,225,242,225,226,233,99,128,6,97,236,102,128,0,189,238,231,250,232,239,117,128,48,33,105,2,147,114,147,132,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,32,238,230,229,242,233,239,114,128,32,129,237,239,238,239,243,240,225,227,101,128,255,17,238,245,237,229,242,225,244,239,242,226,229,238,231,225,236,105,128,9,244,239,236,228,243,244,249,236,101,128,247,49,112,2,147,190,147,197,225,242,229,110,128,36,116,229,114,2,147,204,147,210,233,239,100,128,36,136,243,233,225,110,128,6,241,241,245,225,242,244,229,114,128,0,188,242,239,237,225,110,128,33,112,243,245,240,229,242,233,239,114,128,0,185,244,104,2,147,253,148,2,225,105,128,14,81,233,242,100,128,33,83,111,3,148,16,148,50,148,66,103,2,148,22,148,40,239,238,229,107,129,1,235,148,31,237,225,227,242,239,110,128,1,237,245,242,237,245,235,232,105,128,10,19,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,75,240,229,110,128,2,84,112,3,148,80,148,87,148,98,225,242,229,110,128,36,170,229,238,226,245,236,236,229,116,128,37,230,244,233,239,110,128,35,37,114,2,148,111,148,140,100,2,148,117,148,128,230,229,237,233,238,233,238,101,128,0,170,237,225,243,227,245,236,233,238,101,128,0,186,244,232,239,231,239,238,225,108,128,34,31,115,5,148,163,148,195,148,212,149,1,149,14,232,239,242,116,2,148,172,148,179,228,229,246,97,128,9,18,246,239,247,229,236,243,233,231,238,228,229,246,97,128,9,74,236,225,243,104,129,0,248,148,204,225,227,245,244,101,128,1,255,237,225,236,108,2,148,221,148,232,232,233,242,225,231,225,238,97,128,48,73,235,225,244,225,235,225,238,97,129,48,169,148,245,232,225,236,230,247,233,228,244,104,128,255,107,244,242,239,235,229,225,227,245,244,101,128,1,255,245,240,229,242,233,239,114,128,246,240,116,2,149,30,149,41,227,249,242,233,236,236,233,99,128,4,127,233,236,228,101,130,0,245,149,52,149,60,225,227,245,244,101,128,30,77,228,233,229,242,229,243,233,115,128,30,79,245,226,239,240,239,237,239,230,111,128,49,33,118,2,149,89,149,170,229,114,2,149,96,149,162,236,233,238,101,131,32,62,149,109,149,132,149,155,99,2,149,115,149,127,229,238,244,229,242,236,233,238,101,128,254,74,237,98,128,3,5,100,2,149,138,149,146,225,243,232,229,100,128,254,73,226,236,247,225,246,121,128,254,76,247,225,246,121,128,254,75,243,227,239,242,101,128,0,175,239,247,229,236,243,233,231,110,3,149,185,149,195,149,202,226,229,238,231,225,236,105,128,9,203,228,229,246,97,128,9,75,231,245,234,225,242,225,244,105,128,10,203,112,145,0,112,149,251,152,123,152,134,152,143,152,155,154,80,154,90,155,82,156,101,156,191,156,217,157,92,157,100,158,2,158,60,158,88,158,98,97,14,150,25,150,57,150,67,150,74,150,81,150,129,150,140,150,154,150,165,150,212,150,226,151,238,152,21,152,111,97,2,150,31,150,43,237,240,243,243,241,245,225,242,101,128,51,128,243,229,238,244,239,243,241,245,225,242,101,128,51,43,226,229,238,231,225,236,105,128,9,170,227,245,244,101,128,30,85,228,229,246,97,128,9,42,103,2,150,87,150,105,101,2,150,93,150,100,228,239,247,110,128,33,223,245,112,128,33,222,117,2,150,111,150,120,234,225,242,225,244,105,128,10,170,242,237,245,235,232,105,128,10,42,232,233,242,225,231,225,238,97,128,48,113,233,249,225,238,238,239,233,244,232,225,105,128,14,47,235,225,244,225,235,225,238,97,128,48,209,108,2,150,171,150,196,225,244,225,236,233,250,225,244,233,239,238,227,249,242,233,236,236,233,227,227,237,98,128,4,132,239,227,232,235,225,227,249,242,233,236,236,233,99,128,4,192,238,243,233,239,243,235,239,242,229,225,110,128,49,127,114,3,150,234,150,255,151,227,97,2,150,240,150,248,231,242,225,240,104,128,0,182,236,236,229,108,128,34,37,229,110,2,151,6,151,116,236,229,230,116,136,0,40,151,29,151,44,151,49,151,54,151,65,151,77,151,100,151,105,225,236,244,239,238,229,225,242,225,226,233,99,128,253,62,226,116,128,248,237,229,120,128,248,236,233,238,230,229,242,233,239,114,128,32,141,237,239,238,239,243,240,225,227,101,128,255,8,115,2,151,83,151,90,237,225,236,108,128,254,89,245,240,229,242,233,239,114,128,32,125,244,112,128,248,235,246,229,242,244,233,227,225,108,128,254,53,242,233,231,232,116,136,0,41,151,140,151,155,151,160,151,165,151,176,151,188,151,211,151,216,225,236,244,239,238,229,225,242,225,226,233,99,128,253,63,226,116,128,248,248,229,120,128,248,247,233,238,230,229,242,233,239,114,128,32,142,237,239,238,239,243,240,225,227,101,128,255,9,115,2,151,194,151,201,237,225,236,108,128,254,90,245,240,229,242,233,239,114,128,32,126,244,112,128,248,246,246,229,242,244,233,227,225,108,128,254,54,244,233,225,236,228,233,230,102,128,34,2,115,3,151,246,152,1,152,13,229,241,232,229,226,242,229,119,128,5,192,232,244,225,232,229,226,242,229,119,128,5,153,241,245,225,242,101,128,51,169,244,225,104,134,5,183,152,39,152,53,152,58,152,67,152,82,152,98,49,2,152,45,152,49,49,128,5,183,100,128,5,183,178,97,128,5,183,232,229,226,242,229,119,128,5,183,238,225,242,242,239,247,232,229,226,242,229,119,128,5,183,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,183,247,233,228,229,232,229,226,242,229,119,128,5,183,250,229,242,232,229,226,242,229,119,128,5,161,226,239,240,239,237,239,230,111,128,49,6,227,233,242,227,236,101,128,36,223,228,239,244,225,227,227,229,238,116,128,30,87,101,137,5,228,152,177,152,188,152,208,152,220,152,240,153,86,153,97,153,118,154,73,227,249,242,233,236,236,233,99,128,4,63,228,225,231,229,243,104,129,251,68,152,199,232,229,226,242,229,119,128,251,68,229,250,233,243,241,245,225,242,101,128,51,59,230,233,238,225,236,228,225,231,229,243,232,232,229,226,242,229,119,128,251,67,104,5,152,252,153,19,153,27,153,41,153,71,225,114,2,153,3,153,10,225,226,233,99,128,6,126,237,229,238,233,225,110,128,5,122,229,226,242,229,119,128,5,228,230,233,238,225,236,225,242,225,226,233,99,128,251,87,105,2,153,47,153,62,238,233,244,233,225,236,225,242,225,226,233,99,128,251,88,242,225,231,225,238,97,128,48,122,237,229,228,233,225,236,225,242,225,226,233,99,128,251,89,235,225,244,225,235,225,238,97,128,48,218,237,233,228,228,236,229,232,239,239,235,227,249,242,233,236,236,233,99,128,4,167,114,5,153,130,153,142,153,184,154,49,154,62,225,230,229,232,229,226,242,229,119,128,251,78,227,229,238,116,131,0,37,153,155,153,164,153,176,225,242,225,226,233,99,128,6,106,237,239,238,239,243,240,225,227,101,128,255,5,243,237,225,236,108,128,254,106,105,2,153,190,154,31,239,100,134,0,46,153,207,153,218,153,229,153,241,153,252,154,8,225,242,237,229,238,233,225,110,128,5,137,227,229,238,244,229,242,229,100,128,0,183,232,225,236,230,247,233,228,244,104,128,255,97,233,238,230,229,242,233,239,114,128,246,231,237,239,238,239,243,240,225,227,101,128,255,14,115,2,154,14,154,21,237,225,236,108,128,254,82,245,240,229,242,233,239,114,128,246,232,243,240,239,237,229,238,233,231,242,229,229,235,227,237,98,128,3,66,240,229,238,228,233,227,245,236,225,114,128,34,165,244,232,239,245,243,225,238,100,128,32,48,243,229,244,97,128,32,167,230,243,241,245,225,242,101,128,51,138,104,3,154,98,154,148,155,29,97,3,154,106,154,116,154,123,226,229,238,231,225,236,105,128,9,171,228,229,246,97,128,9,43,231,117,2,154,130,154,139,234,225,242,225,244,105,128,10,171,242,237,245,235,232,105,128,10,43,105,133,3,198,154,162,154,166,154,252,155,4,155,15,49,128,3,213,229,245,240,104,4,154,179,154,214,154,229,154,238,97,2,154,185,154,200,227,233,242,227,236,229,235,239,242,229,225,110,128,50,122,240,225,242,229,238,235,239,242,229,225,110,128,50,26,227,233,242,227,236,229,235,239,242,229,225,110,128,50,108,235,239,242,229,225,110,128,49,77,240,225,242,229,238,235,239,242,229,225,110,128,50,12,236,225,244,233,110,128,2,120,238,244,232,245,244,232,225,105,128,14,58,243,249,237,226,239,236,231,242,229,229,107,128,3,213,111,3,155,37,155,42,155,68,239,107,128,1,165,240,104,2,155,49,155,58,225,238,244,232,225,105,128,14,30,245,238,231,244,232,225,105,128,14,28,243,225,237,240,232,225,239,244,232,225,105,128,14,32,105,133,3,192,155,96,156,52,156,63,156,74,156,88,229,245,112,6,155,112,155,147,155,179,155,207,155,221,156,17,97,2,155,118,155,133,227,233,242,227,236,229,235,239,242,229,225,110,128,50,115,240,225,242,229,238,235,239,242,229,225,110,128,50,19,227,105,2,155,154,155,166,229,245,227,235,239,242,229,225,110,128,49,118,242,227,236,229,235,239,242,229,225,110,128,50,101,107,2,155,185,155,199,233,249,229,239,235,235,239,242,229,225,110,128,49,114,239,242,229,225,110,128,49,66,240,225,242,229,238,235,239,242,229,225,110,128,50,5,243,233,239,115,2,155,230,156,2,107,2,155,236,155,250,233,249,229,239,235,235,239,242,229,225,110,128,49,116,239,242,229,225,110,128,49,68,244,233,235,229,245,244,235,239,242,229,225,110,128,49,117,116,2,156,23,156,38,232,233,229,245,244,232,235,239,242,229,225,110,128,49,119,233,235,229,245,244,235,239,242,229,225,110,128,49,115,232,233,242,225,231,225,238,97,128,48,116,235,225,244,225,235,225,238,97,128,48,212,243,249,237,226,239,236,231,242,229,229,107,128,3,214,247,242,225,242,237,229,238,233,225,110,128,5,131,236,245,115,132,0,43,156,115,156,126,156,135,156,168,226,229,236,239,247,227,237,98,128,3,31,227,233,242,227,236,101,128,34,149,109,2,156,141,156,148,233,238,245,115,128,0,177,111,2,156,154,156,158,100,128,2,214,238,239,243,240,225,227,101,128,255,11,115,2,156,174,156,181,237,225,236,108,128,254,98,245,240,229,242,233,239,114,128,32,122,109,2,156,197,156,208,239,238,239,243,240,225,227,101,128,255,80,243,241,245,225,242,101,128,51,216,111,5,156,229,156,240,157,51,157,62,157,72,232,233,242,225,231,225,238,97,128,48,125,233,238,244,233,238,231,233,238,228,229,120,4,157,4,157,16,157,28,157,41,228,239,247,238,247,232,233,244,101,128,38,31,236,229,230,244,247,232,233,244,101,128,38,28,242,233,231,232,244,247,232,233,244,101,128,38,30,245,240,247,232,233,244,101,128,38,29,235,225,244,225,235,225,238,97,128,48,221,240,236,225,244,232,225,105,128,14,27,243,244,225,236,237,225,242,107,129,48,18,157,85,230,225,227,101,128,48,32,240,225,242,229,110,128,36,171,114,3,157,108,157,134,157,159,101,2,157,114,157,122,227,229,228,229,115,128,34,122,243,227,242,233,240,244,233,239,110,128,33,30,233,237,101,2,157,142,157,148,237,239,100,128,2,185,242,229,246,229,242,243,229,100,128,32,53,111,4,157,169,157,176,157,186,157,199,228,245,227,116,128,34,15,234,229,227,244,233,246,101,128,35,5,236,239,238,231,229,228,235,225,238,97,128,48,252,112,2,157,205,157,242,101,2,157,211,157,218,236,236,239,114,128,35,24,242,243,117,2,157,226,157,233,226,243,229,116,128,34,130,240,229,242,243,229,116,128,34,131,239,242,244,233,239,110,129,34,55,157,253,225,108,128,34,29,115,2,158,8,158,51,105,130,3,200,158,16,158,27,227,249,242,233,236,236,233,99,128,4,113,236,233,240,238,229,245,237,225,244,225,227,249,242,233,236,236,233,227,227,237,98,128,4,134,243,241,245,225,242,101,128,51,176,117,2,158,66,158,77,232,233,242,225,231,225,238,97,128,48,119,235,225,244,225,235,225,238,97,128,48,215,246,243,241,245,225,242,101,128,51,180,247,243,241,245,225,242,101,128,51,186,113,136,0,113,158,128,159,177,159,188,159,197,159,204,159,216,159,254,160,6,97,4,158,138,158,161,158,225,159,160,100,2,158,144,158,150,229,246,97,128,9,88,237,225,232,229,226,242,229,119,128,5,168,102,4,158,171,158,180,158,194,158,210,225,242,225,226,233,99,128,6,66,230,233,238,225,236,225,242,225,226,233,99,128,254,214,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,215,237,229,228,233,225,236,225,242,225,226,233,99,128,254,216,237,225,244,115,136,5,184,158,248,159,12,159,26,159,31,159,36,159,45,159,60,159,147,49,3,159,0,159,4,159,8,48,128,5,184,97,128,5,184,99,128,5,184,50,2,159,18,159,22,55,128,5,184,57,128,5,184,179,51,128,5,184,228,101,128,5,184,232,229,226,242,229,119,128,5,184,238,225,242,242,239,247,232,229,226,242,229,119,128,5,184,113,2,159,66,159,132,225,244,225,110,4,159,79,159,88,159,103,159,119,232,229,226,242,229,119,128,5,184,238,225,242,242,239,247,232,229,226,242,229,119,128,5,184,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,184,247,233,228,229,232,229,226,242,229,119,128,5,184,245,225,242,244,229,242,232,229,226,242,229,119,128,5,184,247,233,228,229,232,229,226,242,229,119,128,5,184,242,238,229,249,240,225,242,225,232,229,226,242,229,119,128,5,159,226,239,240,239,237,239,230,111,128,49,17,227,233,242,227,236,101,128,36,224,232,239,239,107,128,2,160,237,239,238,239,243,240,225,227,101,128,255,81,239,102,130,5,231,159,225,159,245,228,225,231,229,243,104,129,251,71,159,236,232,229,226,242,229,119,128,251,71,232,229,226,242,229,119,128,5,231,240,225,242,229,110,128,36,172,117,4,160,16,160,28,160,117,160,204,225,242,244,229,242,238,239,244,101,128,38,105,226,245,244,115,135,5,187,160,49,160,54,160,59,160,64,160,73,160,88,160,104,177,56,128,5,187,178,53,128,5,187,179,49,128,5,187,232,229,226,242,229,119,128,5,187,238,225,242,242,239,247,232,229,226,242,229,119,128,5,187,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,187,247,233,228,229,232,229,226,242,229,119,128,5,187,229,243,244,233,239,110,133,0,63,160,136,160,159,160,176,160,184,160,196,225,114,2,160,143,160,150,225,226,233,99,128,6,31,237,229,238,233,225,110,128,5,94,228,239,247,110,129,0,191,160,168,243,237,225,236,108,128,247,191,231,242,229,229,107,128,3,126,237,239,238,239,243,240,225,227,101,128,255,31,243,237,225,236,108,128,247,63,239,244,101,4,160,216,161,31,161,51,161,80,228,226,108,133,0,34,160,232,160,239,160,246,161,2,161,23,226,225,243,101,128,32,30,236,229,230,116,128,32,28,237,239,238,239,243,240,225,227,101,128,255,2,240,242,233,237,101,129,48,30,161,12,242,229,246,229,242,243,229,100,128,48,29,242,233,231,232,116,128,32,29,236,229,230,116,129,32,24,161,40,242,229,246,229,242,243,229,100,128,32,27,114,2,161,57,161,67,229,246,229,242,243,229,100,128,32,27,233,231,232,116,129,32,25,161,76,110,128,1,73,243,233,238,231,108,2,161,90,161,97,226,225,243,101,128,32,26,101,129,0,39,161,103,237,239,238,239,243,240,225,227,101,128,255,7,114,145,0,114,161,153,162,157,162,168,162,215,163,10,164,27,164,51,164,146,166,180,166,217,166,229,167,27,167,35,167,197,167,208,167,243,168,87,97,11,161,177,161,188,161,198,161,205,162,14,162,30,162,55,162,66,162,91,162,114,162,151,225,242,237,229,238,233,225,110,128,5,124,226,229,238,231,225,236,105,128,9,176,227,245,244,101,128,1,85,100,4,161,215,161,221,161,235,162,5,229,246,97,128,9,48,233,227,225,108,129,34,26,161,230,229,120,128,248,229,239,246,229,242,243,243,241,245,225,242,101,129,51,174,161,251,228,243,241,245,225,242,101,128,51,175,243,241,245,225,242,101,128,51,173,230,101,129,5,191,162,21,232,229,226,242,229,119,128,5,191,231,117,2,162,37,162,46,234,225,242,225,244,105,128,10,176,242,237,245,235,232,105,128,10,48,232,233,242,225,231,225,238,97,128,48,137,235,225,244,225,235,225,238,97,129,48,233,162,79,232,225,236,230,247,233,228,244,104,128,255,151,236,239,247,229,242,228,233,225,231,239,238,225,236,226,229,238,231,225,236,105,128,9,241,109,2,162,120,162,143,233,228,228,236,229,228,233,225,231,239,238,225,236,226,229,238,231,225,236,105,128,9,240,243,232,239,242,110,128,2,100,244,233,111,128,34,54,226,239,240,239,237,239,230,111,128,49,22,99,4,162,178,162,185,162,194,162,202,225,242,239,110,128,1,89,229,228,233,236,236,97,128,1,87,233,242,227,236,101,128,36,225,239,237,237,225,225,227,227,229,238,116,128,1,87,100,2,162,221,162,231,226,236,231,242,225,246,101,128,2,17,239,116,2,162,238,162,247,225,227,227,229,238,116,128,30,89,226,229,236,239,119,129,30,91,163,1,237,225,227,242,239,110,128,30,93,101,6,163,24,163,69,163,104,163,159,163,184,163,217,102,2,163,30,163,43,229,242,229,238,227,229,237,225,242,107,128,32,59,236,229,248,243,117,2,163,53,163,60,226,243,229,116,128,34,134,240,229,242,243,229,116,128,34,135,231,233,243,244,229,114,2,163,80,163,85,229,100,128,0,174,115,2,163,91,163,97,225,238,115,128,248,232,229,242,233,102,128,246,218,104,3,163,112,163,135,163,149,225,114,2,163,119,163,126,225,226,233,99,128,6,49,237,229,238,233,225,110,128,5,128,230,233,238,225,236,225,242,225,226,233,99,128,254,174,233,242,225,231,225,238,97,128,48,140,235,225,244,225,235,225,238,97,129,48,236,163,172,232,225,236,230,247,233,228,244,104,128,255,154,243,104,130,5,232,163,193,163,208,228,225,231,229,243,232,232,229,226,242,229,119,128,251,72,232,229,226,242,229,119,128,5,232,118,3,163,225,163,238,164,14,229,242,243,229,228,244,233,236,228,101,128,34,61,233,97,2,163,245,163,254,232,229,226,242,229,119,128,5,151,237,245,231,242,225,243,232,232,229,226,242,229,119,128,5,151,236,239,231,233,227,225,236,238,239,116,128,35,16,230,233,243,232,232,239,239,107,129,2,126,164,40,242,229,246,229,242,243,229,100,128,2,127,104,2,164,57,164,80,97,2,164,63,164,73,226,229,238,231,225,236,105,128,9,221,228,229,246,97,128,9,93,111,131,3,193,164,90,164,119,164,133,239,107,129,2,125,164,97,244,245,242,238,229,100,129,2,123,164,108,243,245,240,229,242,233,239,114,128,2,181,243,249,237,226,239,236,231,242,229,229,107,128,3,241,244,233,227,232,239,239,235,237,239,100,128,2,222,105,6,164,160,165,204,165,250,166,5,166,30,166,166,229,245,108,9,164,182,164,217,164,232,164,246,165,36,165,50,165,136,165,149,165,184,97,2,164,188,164,203,227,233,242,227,236,229,235,239,242,229,225,110,128,50,113,240,225,242,229,238,235,239,242,229,225,110,128,50,17,227,233,242,227,236,229,235,239,242,229,225,110,128,50,99,232,233,229,245,232,235,239,242,229,225,110,128,49,64,107,2,164,252,165,28,233,249,229,239,107,2,165,6,165,15,235,239,242,229,225,110,128,49,58,243,233,239,243,235,239,242,229,225,110,128,49,105,239,242,229,225,110,128,49,57,237,233,229,245,237,235,239,242,229,225,110,128,49,59,112,3,165,58,165,90,165,105,97,2,165,64,165,78,238,243,233,239,243,235,239,242,229,225,110,128,49,108,242,229,238,235,239,242,229,225,110,128,50,3,232,233,229,245,240,232,235,239,242,229,225,110,128,49,63,233,229,245,112,2,165,114,165,123,235,239,242,229,225,110,128,49,60,243,233,239,243,235,239,242,229,225,110,128,49,107,243,233,239,243,235,239,242,229,225,110,128,49,61,116,2,165,155,165,170,232,233,229,245,244,232,235,239,242,229,225,110,128,49,62,233,235,229,245,244,235,239,242,229,225,110,128,49,106,249,229,239,242,233,238,232,233,229,245,232,235,239,242,229,225,110,128,49,109,231,232,116,2,165,212,165,220,225,238,231,236,101,128,34,31,116,2,165,226,165,240,225,227,235,226,229,236,239,247,227,237,98,128,3,25,242,233,225,238,231,236,101,128,34,191,232,233,242,225,231,225,238,97,128,48,138,235,225,244,225,235,225,238,97,129,48,234,166,18,232,225,236,230,247,233,228,244,104,128,255,152,110,2,166,36,166,152,103,131,2,218,166,46,166,57,166,63,226,229,236,239,247,227,237,98,128,3,37,227,237,98,128,3,10,232,225,236,102,2,166,72,166,118,236,229,230,116,131,2,191,166,85,166,96,166,107,225,242,237,229,238,233,225,110,128,5,89,226,229,236,239,247,227,237,98,128,3,28,227,229,238,244,229,242,229,100,128,2,211,242,233,231,232,116,130,2,190,166,130,166,141,226,229,236,239,247,227,237,98,128,3,57,227,229,238,244,229,242,229,100,128,2,210,246,229,242,244,229,228,226,242,229,246,101,128,2,19,244,244,239,242,245,243,241,245,225,242,101,128,51,81,108,2,166,186,166,197,233,238,229,226,229,236,239,119,128,30,95,239,238,231,236,229,103,129,2,124,166,208,244,245,242,238,229,100,128,2,122,237,239,238,239,243,240,225,227,101,128,255,82,111,3,166,237,166,248,167,17,232,233,242,225,231,225,238,97,128,48,141,235,225,244,225,235,225,238,97,129,48,237,167,5,232,225,236,230,247,233,228,244,104,128,255,155,242,245,225,244,232,225,105,128,14,35,240,225,242,229,110,128,36,173,114,3,167,43,167,79,167,109,97,3,167,51,167,61,167,68,226,229,238,231,225,236,105,128,9,220,228,229,246,97,128,9,49,231,245,242,237,245,235,232,105,128,10,92,229,104,2,167,86,167,95,225,242,225,226,233,99,128,6,145,230,233,238,225,236,225,242,225,226,233,99,128,251,141,246,239,227,225,236,233,99,4,167,125,167,135,167,142,167,153,226,229,238,231,225,236,105,128,9,224,228,229,246,97,128,9,96,231,245,234,225,242,225,244,105,128,10,224,246,239,247,229,236,243,233,231,110,3,167,169,167,179,167,186,226,229,238,231,225,236,105,128,9,196,228,229,246,97,128,9,68,231,245,234,225,242,225,244,105,128,10,196,243,245,240,229,242,233,239,114,128,246,241,116,2,167,214,167,222,226,236,239,227,107,128,37,144,245,242,238,229,100,129,2,121,167,232,243,245,240,229,242,233,239,114,128,2,180,117,4,167,253,168,8,168,33,168,80,232,233,242,225,231,225,238,97,128,48,139,235,225,244,225,235,225,238,97,129,48,235,168,21,232,225,236,230,247,233,228,244,104,128,255,153,112,2,168,39,168,74,229,101,2,168,46,168,60,237,225,242,235,226,229,238,231,225,236,105,128,9,242,243,233,231,238,226,229,238,231,225,236,105,128,9,243,233,225,104,128,246,221,244,232,225,105,128,14,36,246,239,227,225,236,233,99,4,168,103,168,113,168,120,168,131,226,229,238,231,225,236,105,128,9,139,228,229,246,97,128,9,11,231,245,234,225,242,225,244,105,128,10,139,246,239,247,229,236,243,233,231,110,3,168,147,168,157,168,164,226,229,238,231,225,236,105,128,9,195,228,229,246,97,128,9,67,231,245,234,225,242,225,244,105,128,10,195,115,147,0,115,168,217,170,187,170,198,171,68,171,107,174,49,174,60,176,203,179,85,179,131,179,158,180,93,180,160,181,193,181,203,182,133,182,206,183,120,183,130,97,9,168,237,168,247,169,12,169,84,169,109,169,120,169,145,169,177,169,217,226,229,238,231,225,236,105,128,9,184,227,245,244,101,129,1,91,169,0,228,239,244,225,227,227,229,238,116,128,30,101,100,5,169,24,169,33,169,39,169,53,169,69,225,242,225,226,233,99,128,6,53,229,246,97,128,9,56,230,233,238,225,236,225,242,225,226,233,99,128,254,186,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,187,237,229,228,233,225,236,225,242,225,226,233,99,128,254,188,231,117,2,169,91,169,100,234,225,242,225,244,105,128,10,184,242,237,245,235,232,105,128,10,56,232,233,242,225,231,225,238,97,128,48,85,235,225,244,225,235,225,238,97,129,48,181,169,133,232,225,236,230,247,233,228,244,104,128,255,123,236,236,225,236,236,225,232,239,245,225,236,225,249,232,229,247,225,243,225,236,236,225,237,225,242,225,226,233,99,128,253,250,237,229,235,104,130,5,225,169,188,169,208,228,225,231,229,243,104,129,251,65,169,199,232,229,226,242,229,119,128,251,65,232,229,226,242,229,119,128,5,225,242,97,5,169,230,170,48,170,56,170,106,170,114,97,5,169,242,169,250,170,2,170,33,170,41,225,244,232,225,105,128,14,50,229,244,232,225,105,128,14,65,233,237,225,233,109,2,170,12,170,23,225,236,225,233,244,232,225,105,128,14,68,245,225,238,244,232,225,105,128,14,67,237,244,232,225,105,128,14,51,244,232,225,105,128,14,48,229,244,232,225,105,128,14,64,105,3,170,64,170,88,170,99,105,2,170,70,170,81,236,229,230,244,244,232,225,105,128,248,134,244,232,225,105,128,14,53,236,229,230,244,244,232,225,105,128,248,133,244,232,225,105,128,14,52,239,244,232,225,105,128,14,66,117,3,170,122,170,172,170,179,101,3,170,130,170,154,170,165,101,2,170,136,170,147,236,229,230,244,244,232,225,105,128,248,136,244,232,225,105,128,14,55,236,229,230,244,244,232,225,105,128,248,135,244,232,225,105,128,14,54,244,232,225,105,128,14,56,245,244,232,225,105,128,14,57,226,239,240,239,237,239,230,111,128,49,25,99,5,170,210,170,231,170,240,171,33,171,55,225,242,239,110,129,1,97,170,219,228,239,244,225,227,227,229,238,116,128,30,103,229,228,233,236,236,97,128,1,95,232,247,97,131,2,89,170,252,171,7,171,26,227,249,242,233,236,236,233,99,128,4,217,228,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,219,232,239,239,107,128,2,90,233,242,99,2,171,41,171,46,236,101,128,36,226,245,237,230,236,229,120,128,1,93,239,237,237,225,225,227,227,229,238,116,128,2,25,228,239,116,2,171,76,171,85,225,227,227,229,238,116,128,30,97,226,229,236,239,119,129,30,99,171,95,228,239,244,225,227,227,229,238,116,128,30,105,101,9,171,127,171,143,171,178,171,243,172,90,172,117,172,142,172,223,172,250,225,231,245,236,236,226,229,236,239,247,227,237,98,128,3,60,99,2,171,149,171,171,239,238,100,129,32,51,171,157,244,239,238,229,227,232,233,238,229,243,101,128,2,202,244,233,239,110,128,0,167,229,110,4,171,189,171,198,171,212,171,228,225,242,225,226,233,99,128,6,51,230,233,238,225,236,225,242,225,226,233,99,128,254,178,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,179,237,229,228,233,225,236,225,242,225,226,233,99,128,254,180,231,239,108,135,5,182,172,7,172,21,172,26,172,35,172,50,172,66,172,77,49,2,172,13,172,17,51,128,5,182,102,128,5,182,178,99,128,5,182,232,229,226,242,229,119,128,5,182,238,225,242,242,239,247,232,229,226,242,229,119,128,5,182,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,182,244,225,232,229,226,242,229,119,128,5,146,247,233,228,229,232,229,226,242,229,119,128,5,182,104,2,172,96,172,107,225,242,237,229,238,233,225,110,128,5,125,233,242,225,231,225,238,97,128,48,91,235,225,244,225,235,225,238,97,129,48,187,172,130,232,225,236,230,247,233,228,244,104,128,255,126,237,105,2,172,149,172,192,227,239,236,239,110,131,0,59,172,163,172,172,172,184,225,242,225,226,233,99,128,6,27,237,239,238,239,243,240,225,227,101,128,255,27,243,237,225,236,108,128,254,84,246,239,233,227,229,228,237,225,242,235,235,225,238,97,129,48,156,172,211,232,225,236,230,247,233,228,244,104,128,255,159,238,116,2,172,230,172,240,233,243,241,245,225,242,101,128,51,34,239,243,241,245,225,242,101,128,51,35,246,229,110,142,0,55,173,28,173,37,173,47,173,77,173,84,173,94,173,119,173,146,173,180,173,192,173,203,173,236,173,244,173,255,225,242,225,226,233,99,128,6,103,226,229,238,231,225,236,105,128,9,237,227,233,242,227,236,101,129,36,102,173,58,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,144,228,229,246,97,128,9,109,229,233,231,232,244,232,115,128,33,94,231,117,2,173,101,173,110,234,225,242,225,244,105,128,10,237,242,237,245,235,232,105,128,10,109,232,97,2,173,126,173,137,227,235,225,242,225,226,233,99,128,6,103,238,231,250,232,239,117,128,48,39,105,2,173,152,173,170,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,38,238,230,229,242,233,239,114,128,32,135,237,239,238,239,243,240,225,227,101,128,255,23,239,236,228,243,244,249,236,101,128,247,55,112,2,173,209,173,216,225,242,229,110,128,36,122,229,114,2,173,223,173,229,233,239,100,128,36,142,243,233,225,110,128,6,247,242,239,237,225,110,128,33,118,243,245,240,229,242,233,239,114,128,32,119,116,2,174,5,174,43,229,229,110,2,174,13,174,22,227,233,242,227,236,101,128,36,112,112,2,174,28,174,35,225,242,229,110,128,36,132,229,242,233,239,100,128,36,152,232,225,105,128,14,87,230,244,232,249,240,232,229,110,128,0,173,104,7,174,76,175,50,175,61,175,75,176,20,176,33,176,197,97,6,174,90,174,101,174,111,174,122,175,9,175,34,225,242,237,229,238,233,225,110,128,5,119,226,229,238,231,225,236,105,128,9,182,227,249,242,233,236,236,233,99,128,4,72,100,2,174,128,174,224,228,97,4,174,139,174,148,174,179,174,193,225,242,225,226,233,99,128,6,81,228,225,237,237,97,2,174,158,174,167,225,242,225,226,233,99,128,252,97,244,225,238,225,242,225,226,233,99,128,252,94,230,225,244,232,225,225,242,225,226,233,99,128,252,96,235,225,243,242,97,2,174,203,174,212,225,242,225,226,233,99,128,252,98,244,225,238,225,242,225,226,233,99,128,252,95,101,132,37,146,174,236,174,243,174,251,175,4,228,225,242,107,128,37,147,236,233,231,232,116,128,37,145,237,229,228,233,245,109,128,37,146,246,97,128,9,54,231,117,2,175,16,175,25,234,225,242,225,244,105,128,10,182,242,237,245,235,232,105,128,10,54,236,243,232,229,236,229,244,232,229,226,242,229,119,128,5,147,226,239,240,239,237,239,230,111,128,49,21,227,232,225,227,249,242,233,236,236,233,99,128,4,73,101,4,175,85,175,150,175,160,175,177,229,110,4,175,96,175,105,175,119,175,135,225,242,225,226,233,99,128,6,52,230,233,238,225,236,225,242,225,226,233,99,128,254,182,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,183,237,229,228,233,225,236,225,242,225,226,233,99,128,254,184,233,227,239,240,244,233,99,128,3,227,241,229,108,129,32,170,175,168,232,229,226,242,229,119,128,32,170,246,97,134,5,176,175,194,175,209,175,223,175,232,175,247,176,7,49,2,175,200,175,205,177,53,128,5,176,53,128,5,176,50,2,175,215,175,219,50],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+61440);allocate([128,5,176,101,128,5,176,232,229,226,242,229,119,128,5,176,238,225,242,242,239,247,232,229,226,242,229,119,128,5,176,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,176,247,233,228,229,232,229,226,242,229,119,128,5,176,232,225,227,249,242,233,236,236,233,99,128,4,187,105,2,176,39,176,50,237,225,227,239,240,244,233,99,128,3,237,110,131,5,233,176,60,176,143,176,152,100,2,176,66,176,132,225,231,229,243,104,130,251,73,176,78,176,87,232,229,226,242,229,119,128,251,73,115,2,176,93,176,113,232,233,238,228,239,116,129,251,44,176,104,232,229,226,242,229,119,128,251,44,233,238,228,239,116,129,251,45,176,123,232,229,226,242,229,119,128,251,45,239,244,232,229,226,242,229,119,128,5,193,232,229,226,242,229,119,128,5,233,115,2,176,158,176,178,232,233,238,228,239,116,129,251,42,176,169,232,229,226,242,229,119,128,251,42,233,238,228,239,116,129,251,43,176,188,232,229,226,242,229,119,128,251,43,239,239,107,128,2,130,105,8,176,221,177,9,177,20,177,45,177,75,177,83,177,96,178,11,231,237,97,131,3,195,176,233,176,237,176,245,49,128,3,194,230,233,238,225,108,128,3,194,236,245,238,225,244,229,243,249,237,226,239,236,231,242,229,229,107,128,3,242,232,233,242,225,231,225,238,97,128,48,87,235,225,244,225,235,225,238,97,129,48,183,177,33,232,225,236,230,247,233,228,244,104,128,255,124,236,245,113,2,177,53,177,62,232,229,226,242,229,119,128,5,189,236,229,230,244,232,229,226,242,229,119,128,5,189,237,233,236,225,114,128,34,60,238,228,239,244,232,229,226,242,229,119,128,5,194,239,115,6,177,111,177,146,177,178,177,206,177,220,177,252,97,2,177,117,177,132,227,233,242,227,236,229,235,239,242,229,225,110,128,50,116,240,225,242,229,238,235,239,242,229,225,110,128,50,20,227,105,2,177,153,177,165,229,245,227,235,239,242,229,225,110,128,49,126,242,227,236,229,235,239,242,229,225,110,128,50,102,107,2,177,184,177,198,233,249,229,239,235,235,239,242,229,225,110,128,49,122,239,242,229,225,110,128,49,69,238,233,229,245,238,235,239,242,229,225,110,128,49,123,112,2,177,226,177,239,225,242,229,238,235,239,242,229,225,110,128,50,6,233,229,245,240,235,239,242,229,225,110,128,49,125,244,233,235,229,245,244,235,239,242,229,225,110,128,49,124,120,141,0,54,178,41,178,50,178,60,178,90,178,97,178,122,178,149,178,183,178,195,178,206,178,239,178,247,179,2,225,242,225,226,233,99,128,6,102,226,229,238,231,225,236,105,128,9,236,227,233,242,227,236,101,129,36,101,178,71,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,143,228,229,246,97,128,9,108,231,117,2,178,104,178,113,234,225,242,225,244,105,128,10,236,242,237,245,235,232,105,128,10,108,232,97,2,178,129,178,140,227,235,225,242,225,226,233,99,128,6,102,238,231,250,232,239,117,128,48,38,105,2,178,155,178,173,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,37,238,230,229,242,233,239,114,128,32,134,237,239,238,239,243,240,225,227,101,128,255,22,239,236,228,243,244,249,236,101,128,247,54,112,2,178,212,178,219,225,242,229,110,128,36,121,229,114,2,178,226,178,232,233,239,100,128,36,141,243,233,225,110,128,6,246,242,239,237,225,110,128,33,117,243,245,240,229,242,233,239,114,128,32,118,116,2,179,8,179,79,229,229,110,2,179,16,179,58,99,2,179,22,179,30,233,242,227,236,101,128,36,111,245,242,242,229,238,227,249,228,229,238,239,237,233,238,225,244,239,242,226,229,238,231,225,236,105,128,9,249,112,2,179,64,179,71,225,242,229,110,128,36,131,229,242,233,239,100,128,36,151,232,225,105,128,14,86,108,2,179,91,179,111,225,243,104,129,0,47,179,99,237,239,238,239,243,240,225,227,101,128,255,15,239,238,103,129,1,127,179,119,228,239,244,225,227,227,229,238,116,128,30,155,109,2,179,137,179,147,233,236,229,230,225,227,101,128,38,58,239,238,239,243,240,225,227,101,128,255,83,111,6,179,172,179,222,179,233,180,2,180,47,180,58,102,2,179,178,179,192,240,225,243,245,241,232,229,226,242,229,119,128,5,195,116,2,179,198,179,207,232,249,240,232,229,110,128,0,173,243,233,231,238,227,249,242,233,236,236,233,99,128,4,76,232,233,242,225,231,225,238,97,128,48,93,235,225,244,225,235,225,238,97,129,48,189,179,246,232,225,236,230,247,233,228,244,104,128,255,127,236,233,228,245,115,2,180,12,180,29,236,239,238,231,239,246,229,242,236,225,249,227,237,98,128,3,56,243,232,239,242,244,239,246,229,242,236,225,249,227,237,98,128,3,55,242,245,243,233,244,232,225,105,128,14,41,115,3,180,66,180,76,180,84,225,236,225,244,232,225,105,128,14,40,239,244,232,225,105,128,14,11,245,225,244,232,225,105,128,14,42,240,97,3,180,102,180,122,180,154,227,101,129,0,32,180,109,232,225,227,235,225,242,225,226,233,99,128,0,32,228,101,129,38,96,180,129,243,245,233,116,2,180,138,180,146,226,236,225,227,107,128,38,96,247,232,233,244,101,128,38,100,242,229,110,128,36,174,241,245,225,242,101,11,180,188,180,199,180,213,180,238,180,255,181,25,181,40,181,73,181,100,181,156,181,171,226,229,236,239,247,227,237,98,128,3,59,99,2,180,205,180,209,99,128,51,196,109,128,51,157,228,233,225,231,239,238,225,236,227,242,239,243,243,232,225,244,227,232,230,233,236,108,128,37,169,232,239,242,233,250,239,238,244,225,236,230,233,236,108,128,37,164,107,2,181,5,181,9,103,128,51,143,109,129,51,158,181,15,227,225,240,233,244,225,108,128,51,206,108,2,181,31,181,35,110,128,51,209,239,103,128,51,210,109,4,181,50,181,54,181,59,181,63,103,128,51,142,233,108,128,51,213,109,128,51,156,243,241,245,225,242,229,100,128,51,161,239,242,244,232,239,231,239,238,225,236,227,242,239,243,243,232,225,244,227,232,230,233,236,108,128,37,166,245,240,240,229,114,2,181,110,181,133,236,229,230,244,244,239,236,239,247,229,242,242,233,231,232,244,230,233,236,108,128,37,167,242,233,231,232,244,244,239,236,239,247,229,242,236,229,230,244,230,233,236,108,128,37,168,246,229,242,244,233,227,225,236,230,233,236,108,128,37,165,247,232,233,244,229,247,233,244,232,243,237,225,236,236,226,236,225,227,107,128,37,163,242,243,241,245,225,242,101,128,51,219,115,2,181,209,182,123,97,4,181,219,181,229,181,236,181,247,226,229,238,231,225,236,105,128,9,183,228,229,246,97,128,9,55,231,245,234,225,242,225,244,105,128,10,183,238,103,8,182,10,182,24,182,38,182,52,182,67,182,81,182,95,182,108,227,233,229,245,227,235,239,242,229,225,110,128,49,73,232,233,229,245,232,235,239,242,229,225,110,128,49,133,233,229,245,238,231,235,239,242,229,225,110,128,49,128,235,233,249,229,239,235,235,239,242,229,225,110,128,49,50,238,233,229,245,238,235,239,242,229,225,110,128,49,101,240,233,229,245,240,235,239,242,229,225,110,128,49,67,243,233,239,243,235,239,242,229,225,110,128,49,70,244,233,235,229,245,244,235,239,242,229,225,110,128,49,56,245,240,229,242,233,239,114,128,246,242,116,2,182,139,182,162,229,242,236,233,238,103,129,0,163,182,150,237,239,238,239,243,240,225,227,101,128,255,225,242,239,235,101,2,182,171,182,188,236,239,238,231,239,246,229,242,236,225,249,227,237,98,128,3,54,243,232,239,242,244,239,246,229,242,236,225,249,227,237,98,128,3,53,117,7,182,222,182,254,183,20,183,31,183,72,183,82,183,86,226,243,229,116,130,34,130,182,233,182,244,238,239,244,229,241,245,225,108,128,34,138,239,242,229,241,245,225,108,128,34,134,99,2,183,4,183,12,227,229,229,228,115,128,34,123,232,244,232,225,116,128,34,11,232,233,242,225,231,225,238,97,128,48,89,107,2,183,37,183,61,225,244,225,235,225,238,97,129,48,185,183,49,232,225,236,230,247,233,228,244,104,128,255,125,245,238,225,242,225,226,233,99,128,6,82,237,237,225,244,233,239,110,128,34,17,110,128,38,60,240,229,242,243,229,116,130,34,131,183,99,183,110,238,239,244,229,241,245,225,108,128,34,139,239,242,229,241,245,225,108,128,34,135,246,243,241,245,225,242,101,128,51,220,249,239,245,247,225,229,242,225,243,241,245,225,242,101,128,51,124,116,144,0,116,183,183,184,192,184,213,185,100,185,140,187,188,191,70,192,145,192,157,192,169,193,202,193,227,194,57,194,237,195,165,195,255,97,10,183,205,183,215,183,236,183,243,184,12,184,90,184,107,184,132,184,146,184,150,226,229,238,231,225,236,105,128,9,164,227,107,2,183,222,183,229,228,239,247,110,128,34,164,236,229,230,116,128,34,163,228,229,246,97,128,9,36,231,117,2,183,250,184,3,234,225,242,225,244,105,128,10,164,242,237,245,235,232,105,128,10,36,104,4,184,22,184,31,184,45,184,75,225,242,225,226,233,99,128,6,55,230,233,238,225,236,225,242,225,226,233,99,128,254,194,105,2,184,51,184,66,238,233,244,233,225,236,225,242,225,226,233,99,128,254,195,242,225,231,225,238,97,128,48,95,237,229,228,233,225,236,225,242,225,226,233,99,128,254,196,233,243,249,239,245,229,242,225,243,241,245,225,242,101,128,51,125,235,225,244,225,235,225,238,97,129,48,191,184,120,232,225,236,230,247,233,228,244,104,128,255,128,244,247,229,229,236,225,242,225,226,233,99,128,6,64,117,128,3,196,118,130,5,234,184,158,184,183,228,225,231,229,115,129,251,74,184,168,104,129,251,74,184,174,232,229,226,242,229,119,128,251,74,232,229,226,242,229,119,128,5,234,98,2,184,198,184,203,225,114,128,1,103,239,240,239,237,239,230,111,128,49,10,99,6,184,227,184,234,184,241,184,250,185,60,185,87,225,242,239,110,128,1,101,227,245,242,108,128,2,168,229,228,233,236,236,97,128,1,99,232,229,104,4,185,6,185,15,185,29,185,45,225,242,225,226,233,99,128,6,134,230,233,238,225,236,225,242,225,226,233,99,128,251,123,233,238,233,244,233,225,236,225,242,225,226,233,99,128,251,124,237,229,228,233,225,236,225,242,225,226,233,99,128,251,125,233,242,99,2,185,68,185,73,236,101,128,36,227,245,237,230,236,229,248,226,229,236,239,119,128,30,113,239,237,237,225,225,227,227,229,238,116,128,1,99,100,2,185,106,185,116,233,229,242,229,243,233,115,128,30,151,239,116,2,185,123,185,132,225,227,227,229,238,116,128,30,107,226,229,236,239,119,128,30,109,101,9,185,160,185,171,185,191,186,201,186,226,187,34,187,101,187,106,187,158,227,249,242,233,236,236,233,99,128,4,66,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,173,104,7,185,207,185,216,185,230,186,14,186,44,186,85,186,183,225,242,225,226,233,99,128,6,42,230,233,238,225,236,225,242,225,226,233,99,128,254,150,232,225,232,105,2,185,239,185,254,238,233,244,233,225,236,225,242,225,226,233,99,128,252,162,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,12,105,2,186,20,186,35,238,233,244,233,225,236,225,242,225,226,233,99,128,254,151,242,225,231,225,238,97,128,48,102,234,229,229,237,105,2,186,54,186,69,238,233,244,233,225,236,225,242,225,226,233,99,128,252,161,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,11,109,2,186,91,186,125,225,242,226,245,244,97,2,186,102,186,111,225,242,225,226,233,99,128,6,41,230,233,238,225,236,225,242,225,226,233,99,128,254,148,101,2,186,131,186,144,228,233,225,236,225,242,225,226,233,99,128,254,152,229,237,105,2,186,152,186,167,238,233,244,233,225,236,225,242,225,226,233,99,128,252,164,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,14,238,239,239,238,230,233,238,225,236,225,242,225,226,233,99,128,252,115,235,225,244,225,235,225,238,97,129,48,198,186,214,232,225,236,230,247,233,228,244,104,128,255,131,108,2,186,232,186,251,229,240,232,239,238,101,129,33,33,186,243,226,236,225,227,107,128,38,14,233,243,232,97,2,187,4,187,19,231,229,228,239,236,225,232,229,226,242,229,119,128,5,160,241,229,244,225,238,225,232,229,226,242,229,119,128,5,169,110,4,187,44,187,53,187,72,187,93,227,233,242,227,236,101,128,36,105,233,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,41,112,2,187,78,187,85,225,242,229,110,128,36,125,229,242,233,239,100,128,36,145,242,239,237,225,110,128,33,121,243,104,128,2,167,116,131,5,216,187,116,187,136,187,145,228,225,231,229,243,104,129,251,56,187,127,232,229,226,242,229,119,128,251,56,232,229,226,242,229,119,128,5,216,243,229,227,249,242,233,236,236,233,99,128,4,181,246,233,114,2,187,166,187,175,232,229,226,242,229,119,128,5,155,236,229,230,244,232,229,226,242,229,119,128,5,155,104,6,187,202,188,98,188,220,189,96,190,3,191,60,97,5,187,214,187,224,187,231,188,0,188,29,226,229,238,231,225,236,105,128,9,165,228,229,246,97,128,9,37,231,117,2,187,238,187,247,234,225,242,225,244,105,128,10,165,242,237,245,235,232,105,128,10,37,108,2,188,6,188,15,225,242,225,226,233,99,128,6,48,230,233,238,225,236,225,242,225,226,233,99,128,254,172,238,244,232,225,235,232,225,116,3,188,44,188,75,188,82,236,239,119,2,188,52,188,63,236,229,230,244,244,232,225,105,128,248,152,242,233,231,232,244,244,232,225,105,128,248,151,244,232,225,105,128,14,76,245,240,240,229,242,236,229,230,244,244,232,225,105,128,248,150,101,3,188,106,188,170,188,193,104,4,188,116,188,125,188,139,188,155,225,242,225,226,233,99,128,6,43,230,233,238,225,236,225,242,225,226,233,99,128,254,154,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,155,237,229,228,233,225,236,225,242,225,226,233,99,128,254,156,242,101,2,188,177,188,186,229,248,233,243,244,115,128,34,3,230,239,242,101,128,34,52,244,97,130,3,184,188,202,188,206,49,128,3,209,243,249,237,226,239,236,231,242,229,229,107,128,3,209,105,2,188,226,189,56,229,245,244,104,4,188,239,189,18,189,33,189,42,97,2,188,245,189,4,227,233,242,227,236,229,235,239,242,229,225,110,128,50,121,240,225,242,229,238,235,239,242,229,225,110,128,50,25,227,233,242,227,236,229,235,239,242,229,225,110,128,50,107,235,239,242,229,225,110,128,49,76,240,225,242,229,238,235,239,242,229,225,110,128,50,11,242,244,229,229,110,2,189,66,189,75,227,233,242,227,236,101,128,36,108,112,2,189,81,189,88,225,242,229,110,128,36,128,229,242,233,239,100,128,36,148,111,6,189,110,189,127,189,132,189,146,189,151,189,204,238,225,238,231,237,239,238,244,232,239,244,232,225,105,128,14,17,239,107,128,1,173,240,232,245,244,232,225,239,244,232,225,105,128,14,18,242,110,128,0,254,244,104,3,189,160,189,184,189,194,97,2,189,166,189,176,232,225,238,244,232,225,105,128,14,23,238,244,232,225,105,128,14,16,239,238,231,244,232,225,105,128,14,24,245,238,231,244,232,225,105,128,14,22,245,243,225,238,100,2,189,214,189,225,227,249,242,233,236,236,233,99,128,4,130,243,243,229,240,225,242,225,244,239,114,2,189,240,189,249,225,242,225,226,233,99,128,6,108,240,229,242,243,233,225,110,128,6,108,242,229,101,144,0,51,190,41,190,50,190,60,190,90,190,97,190,107,190,132,190,159,190,193,190,205,190,224,190,235,191,12,191,34,191,42,191,53,225,242,225,226,233,99,128,6,99,226,229,238,231,225,236,105,128,9,233,227,233,242,227,236,101,129,36,98,190,71,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,140,228,229,246,97,128,9,105,229,233,231,232,244,232,115,128,33,92,231,117,2,190,114,190,123,234,225,242,225,244,105,128,10,233,242,237,245,235,232,105,128,10,105,232,97,2,190,139,190,150,227,235,225,242,225,226,233,99,128,6,99,238,231,250,232,239,117,128,48,35,105,2,190,165,190,183,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,34,238,230,229,242,233,239,114,128,32,131,237,239,238,239,243,240,225,227,101,128,255,19,238,245,237,229,242,225,244,239,242,226,229,238,231,225,236,105,128,9,246,239,236,228,243,244,249,236,101,128,247,51,112,2,190,241,190,248,225,242,229,110,128,36,118,229,114,2,190,255,191,5,233,239,100,128,36,138,243,233,225,110,128,6,243,241,245,225,242,244,229,242,115,129,0,190,191,25,229,237,228,225,243,104,128,246,222,242,239,237,225,110,128,33,114,243,245,240,229,242,233,239,114,128,0,179,244,232,225,105,128,14,83,250,243,241,245,225,242,101,128,51,148,105,7,191,86,191,97,191,212,192,54,192,66,192,115,192,132,232,233,242,225,231,225,238,97,128,48,97,107,2,191,103,191,127,225,244,225,235,225,238,97,129,48,193,191,115,232,225,236,230,247,233,228,244,104,128,255,129,229,245,116,4,191,139,191,174,191,189,191,198,97,2,191,145,191,160,227,233,242,227,236,229,235,239,242,229,225,110,128,50,112,240,225,242,229,238,235,239,242,229,225,110,128,50,16,227,233,242,227,236,229,235,239,242,229,225,110,128,50,98,235,239,242,229,225,110,128,49,55,240,225,242,229,238,235,239,242,229,225,110,128,50,2,236,228,101,133,2,220,191,228,191,239,192,0,192,12,192,40,226,229,236,239,247,227,237,98,128,3,48,99,2,191,245,191,250,237,98,128,3,3,239,237,98,128,3,3,228,239,245,226,236,229,227,237,98,128,3,96,111,2,192,18,192,28,240,229,242,225,244,239,114,128,34,60,246,229,242,236,225,249,227,237,98,128,3,52,246,229,242,244,233,227,225,236,227,237,98,128,3,62,237,229,243,227,233,242,227,236,101,128,34,151,112,2,192,72,192,102,229,232,97,2,192,80,192,89,232,229,226,242,229,119,128,5,150,236,229,230,244,232,229,226,242,229,119,128,5,150,240,233,231,245,242,237,245,235,232,105,128,10,112,244,236,239,227,249,242,233,236,236,233,227,227,237,98,128,4,131,247,238,225,242,237,229,238,233,225,110,128,5,127,236,233,238,229,226,229,236,239,119,128,30,111,237,239,238,239,243,240,225,227,101,128,255,84,111,7,192,185,192,196,192,207,192,232,193,96,193,108,193,192,225,242,237,229,238,233,225,110,128,5,105,232,233,242,225,231,225,238,97,128,48,104,235,225,244,225,235,225,238,97,129,48,200,192,220,232,225,236,230,247,233,228,244,104,128,255,132,110,3,192,240,193,82,193,87,101,4,192,250,193,63,193,70,193,76,226,225,114,4,193,6,193,35,193,45,193,54,229,248,244,242,97,2,193,16,193,26,232,233,231,232,237,239,100,128,2,229,236,239,247,237,239,100,128,2,233,232,233,231,232,237,239,100,128,2,230,236,239,247,237,239,100,128,2,232,237,233,228,237,239,100,128,2,231,230,233,246,101,128,1,189,243,233,120,128,1,133,244,247,111,128,1,168,239,115,128,3,132,243,241,245,225,242,101,128,51,39,240,225,244,225,235,244,232,225,105,128,14,15,242,244,239,233,243,229,243,232,229,236,236,226,242,225,227,235,229,116,2,193,131,193,161,236,229,230,116,130,48,20,193,142,193,150,243,237,225,236,108,128,254,93,246,229,242,244,233,227,225,108,128,254,57,242,233,231,232,116,130,48,21,193,173,193,181,243,237,225,236,108,128,254,94,246,229,242,244,233,227,225,108,128,254,58,244,225,239,244,232,225,105,128,14,21,240,97,2,193,209,193,221,236,225,244,225,236,232,239,239,107,128,1,171,242,229,110,128,36,175,114,3,193,235,194,10,194,25,225,228,229,237,225,242,107,129,33,34,193,247,115,2,193,253,194,3,225,238,115,128,248,234,229,242,233,102,128,246,219,229,244,242,239,230,236,229,248,232,239,239,107,128,2,136,233,225,103,4,194,37,194,42,194,47,194,52,228,110,128,37,188,236,102,128,37,196,242,116,128,37,186,245,112,128,37,178,115,132,2,166,194,69,194,108,194,214,194,227,225,228,105,130,5,230,194,79,194,99,228,225,231,229,243,104,129,251,70,194,90,232,229,226,242,229,119,128,251,70,232,229,226,242,229,119,128,5,230,101,2,194,114,194,125,227,249,242,233,236,236,233,99,128,4,70,242,101,134,5,181,194,142,194,156,194,161,194,170,194,185,194,201,49,2,194,148,194,152,50,128,5,181,101,128,5,181,178,98,128,5,181,232,229,226,242,229,119,128,5,181,238,225,242,242,239,247,232,229,226,242,229,119,128,5,181,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,181,247,233,228,229,232,229,226,242,229,119,128,5,181,232,229,227,249,242,233,236,236,233,99,128,4,91,245,240,229,242,233,239,114,128,246,243,116,4,194,247,195,41,195,106,195,157,97,3,194,255,195,9,195,16,226,229,238,231,225,236,105,128,9,159,228,229,246,97,128,9,31,231,117,2,195,23,195,32,234,225,242,225,244,105,128,10,159,242,237,245,235,232,105,128,10,31,229,104,4,195,52,195,61,195,75,195,91,225,242,225,226,233,99,128,6,121,230,233,238,225,236,225,242,225,226,233,99,128,251,103,233,238,233,244,233,225,236,225,242,225,226,233,99,128,251,104,237,229,228,233,225,236,225,242,225,226,233,99,128,251,105,232,97,3,195,115,195,125,195,132,226,229,238,231,225,236,105,128,9,160,228,229,246,97,128,9,32,231,117,2,195,139,195,148,234,225,242,225,244,105,128,10,160,242,237,245,235,232,105,128,10,32,245,242,238,229,100,128,2,135,117,3,195,173,195,184,195,209,232,233,242,225,231,225,238,97,128,48,100,235,225,244,225,235,225,238,97,129,48,196,195,197,232,225,236,230,247,233,228,244,104,128,255,130,243,237,225,236,108,2,195,219,195,230,232,233,242,225,231,225,238,97,128,48,99,235,225,244,225,235,225,238,97,129,48,195,195,243,232,225,236,230,247,233,228,244,104,128,255,111,119,2,196,5,196,110,101,2,196,11,196,59,236,246,101,3,196,21,196,30,196,51,227,233,242,227,236,101,128,36,107,112,2,196,36,196,43,225,242,229,110,128,36,127,229,242,233,239,100,128,36,147,242,239,237,225,110,128,33,123,238,244,121,3,196,69,196,78,196,89,227,233,242,227,236,101,128,36,115,232,225,238,231,250,232,239,117,128,83,68,112,2,196,95,196,102,225,242,229,110,128,36,135,229,242,233,239,100,128,36,155,111,142,0,50,196,142,196,151,196,161,196,191,196,243,197,12,197,39,197,73,197,85,197,104,197,115,197,148,197,156,197,180,225,242,225,226,233,99,128,6,98,226,229,238,231,225,236,105,128,9,232,227,233,242,227,236,101,129,36,97,196,172,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,139,100,2,196,197,196,203,229,246,97,128,9,104,239,116,2,196,210,196,221,229,238,236,229,225,228,229,114,128,32,37,236,229,225,228,229,114,129,32,37,196,232,246,229,242,244,233,227,225,108,128,254,48,231,117,2,196,250,197,3,234,225,242,225,244,105,128,10,232,242,237,245,235,232,105,128,10,104,232,97,2,197,19,197,30,227,235,225,242,225,226,233,99,128,6,98,238,231,250,232,239,117,128,48,34,105,2,197,45,197,63,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,33,238,230,229,242,233,239,114,128,32,130,237,239,238,239,243,240,225,227,101,128,255,18,238,245,237,229,242,225,244,239,242,226,229,238,231,225,236,105,128,9,245,239,236,228,243,244,249,236,101,128,247,50,112,2,197,121,197,128,225,242,229,110,128,36,117,229,114,2,197,135,197,141,233,239,100,128,36,137,243,233,225,110,128,6,242,242,239,237,225,110,128,33,113,115,2,197,162,197,170,244,242,239,235,101,128,1,187,245,240,229,242,233,239,114,128,0,178,244,104,2,197,187,197,192,225,105,128,14,82,233,242,228,115,128,33,84,117,145,0,117,197,237,197,245,198,30,198,87,198,225,199,6,199,129,199,145,199,196,200,10,200,91,200,100,200,219,200,243,201,95,201,123,201,237,225,227,245,244,101,128,0,250,98,4,197,255,198,4,198,13,198,23,225,114,128,2,137,229,238,231,225,236,105,128,9,137,239,240,239,237,239,230,111,128,49,40,242,229,246,101,128,1,109,99,3,198,38,198,45,198,77,225,242,239,110,128,1,212,233,242,99,2,198,53,198,58,236,101,128,36,228,245,237,230,236,229,120,129,0,251,198,69,226,229,236,239,119,128,30,119,249,242,233,236,236,233,99,128,4,67,100,5,198,99,198,110,198,133,198,139,198,215,225,244,244,225,228,229,246,97,128,9,81,226,108,2,198,117,198,125,225,227,245,244,101,128,1,113,231,242,225,246,101,128,2,21,229,246,97,128,9,9,233,229,242,229,243,233,115,133,0,252,198,159,198,167,198,175,198,198,198,206,225,227,245,244,101,128,1,216,226,229,236,239,119,128,30,115,99,2,198,181,198,188,225,242,239,110,128,1,218,249,242,233,236,236,233,99,128,4,241,231,242,225,246,101,128,1,220,237,225,227,242,239,110,128,1,214,239,244,226,229,236,239,119,128,30,229,103,2,198,231,198,238,242,225,246,101,128,0,249,117,2,198,244,198,253,234,225,242,225,244,105,128,10,137,242,237,245,235,232,105,128,10,9,104,3,199,14,199,24,199,102,233,242,225,231,225,238,97,128,48,70,111,2,199,30,199,40,239,235,225,226,239,246,101,128,30,231,242,110,133,1,176,199,55,199,63,199,74,199,82,199,94,225,227,245,244,101,128,30,233,228,239,244,226,229,236,239,119,128,30,241,231,242,225,246,101,128,30,235,232,239,239,235,225,226,239,246,101,128,30,237,244,233,236,228,101,128,30,239,245,238,231,225,242,245,237,236,225,245,116,129,1,113,199,118,227,249,242,233,236,236,233,99,128,4,243,233,238,246,229,242,244,229,228,226,242,229,246,101,128,2,23,107,3,199,153,199,177,199,188,225,244,225,235,225,238,97,129,48,166,199,165,232,225,236,230,247,233,228,244,104,128,255,115,227,249,242,233,236,236,233,99,128,4,121,239,242,229,225,110,128,49,92,109,2,199,202,199,255,97,2,199,208,199,241,227,242,239,110,130,1,107,199,219,199,230,227,249,242,233,236,236,233,99,128,4,239,228,233,229,242,229,243,233,115,128,30,123,244,242,225,231,245,242,237,245,235,232,105,128,10,65,239,238,239,243,240,225,227,101,128,255,85,110,2,200,16,200,71,228,229,242,243,227,239,242,101,132,0,95,200,35,200,41,200,53,200,64,228,226,108,128,32,23,237,239,238,239,243,240,225,227,101,128,255,63,246,229,242,244,233,227,225,108,128,254,51,247,225,246,121,128,254,79,105,2,200,77,200,82,239,110,128,34,42,246,229,242,243,225,108,128,34,0,239,231,239,238,229,107,128,1,115,112,5,200,112,200,119,200,127,200,142,200,193,225,242,229,110,128,36,176,226,236,239,227,107,128,37,128,240,229,242,228,239,244,232,229,226,242,229,119,128,5,196,243,233,236,239,110,131,3,197,200,156,200,177,200,185,228,233,229,242,229,243,233,115,129,3,203,200,169,244,239,238,239,115,128,3,176,236,225,244,233,110,128,2,138,244,239,238,239,115,128,3,205,244,225,227,107,2,200,202,200,213,226,229,236,239,247,227,237,98,128,3,29,237,239,100,128,2,212,114,2,200,225,200,237,225,231,245,242,237,245,235,232,105,128,10,115,233,238,103,128,1,111,115,3,200,251,201,10,201,55,232,239,242,244,227,249,242,233,236,236,233,99,128,4,94,237,225,236,108,2,201,19,201,30,232,233,242,225,231,225,238,97,128,48,69,235,225,244,225,235,225,238,97,129,48,165,201,43,232,225,236,230,247,233,228,244,104,128,255,105,244,242,225,233,231,232,116,2,201,67,201,78,227,249,242,233,236,236,233,99,128,4,175,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,177,244,233,236,228,101,130,1,105,201,107,201,115,225,227,245,244,101,128,30,121,226,229,236,239,119,128,30,117,117,5,201,135,201,145,201,152,201,177,201,193,226,229,238,231,225,236,105,128,9,138,228,229,246,97,128,9,10,231,117,2,201,159,201,168,234,225,242,225,244,105,128,10,138,242,237,245,235,232,105,128,10,10,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,66,246,239,247,229,236,243,233,231,110,3,201,209,201,219,201,226,226,229,238,231,225,236,105,128,9,194,228,229,246,97,128,9,66,231,245,234,225,242,225,244,105,128,10,194,246,239,247,229,236,243,233,231,110,3,201,253,202,7,202,14,226,229,238,231,225,236,105,128,9,193,228,229,246,97,128,9,65,231,245,234,225,242,225,244,105,128,10,193,118,139,0,118,202,51,202,199,202,208,202,219,203,148,203,155,203,253,204,9,204,109,204,117,204,138,97,4,202,61,202,68,202,93,202,104,228,229,246,97,128,9,53,231,117,2,202,75,202,84,234,225,242,225,244,105,128,10,181,242,237,245,235,232,105,128,10,53,235,225,244,225,235,225,238,97,128,48,247,118,132,5,213,202,116,202,143,202,175,202,187,228,225,231,229,243,104,130,251,53,202,129,202,134,182,53,128,251,53,232,229,226,242,229,119,128,251,53,104,2,202,149,202,157,229,226,242,229,119,128,5,213,239,236,225,109,129,251,75,202,166,232,229,226,242,229,119,128,251,75,246,225,246,232,229,226,242,229,119,128,5,240,249,239,228,232,229,226,242,229,119,128,5,241,227,233,242,227,236,101,128,36,229,228,239,244,226,229,236,239,119,128,30,127,101,6,202,233,202,244,203,52,203,63,203,69,203,136,227,249,242,233,236,236,233,99,128,4,50,104,4,202,254,203,7,203,21,203,37,225,242,225,226,233,99,128,6,164,230,233,238,225,236,225,242,225,226,233,99,128,251,107,233,238,233,244,233,225,236,225,242,225,226,233,99,128,251,108,237,229,228,233,225,236,225,242,225,226,233,99,128,251,109,235,225,244,225,235,225,238,97,128,48,249,238,245,115,128,38,64,242,244,233,227,225,108,2,203,80,203,86,226,225,114,128,0,124,236,233,238,101,4,203,99,203,110,203,121,203,130,225,226,239,246,229,227,237,98,128,3,13,226,229,236,239,247,227,237,98,128,3,41,236,239,247,237,239,100,128,2,204,237,239,100,128,2,200,247,225,242,237,229,238,233,225,110,128,5,126,232,239,239,107,128,2,139,105,3,203,163,203,174,203,213,235,225,244,225,235,225,238,97,128,48,248,242,225,237,97,3,203,185,203,195,203,202,226,229,238,231,225,236,105,128,9,205,228,229,246,97,128,9,77,231,245,234,225,242,225,244,105,128,10,205,243,225,242,231,97,3,203,225,203,235,203,242,226,229,238,231,225,236,105,128,9,131,228,229,246,97,128,9,3,231,245,234,225,242,225,244,105,128,10,131,237,239,238,239,243,240,225,227,101,128,255,86,111,3,204,17,204,28,204,98,225,242,237,229,238,233,225,110,128,5,120,233,227,229,100,2,204,37,204,73,233,244,229,242,225,244,233,239,110,2,204,51,204,62,232,233,242,225,231,225,238,97,128,48,158,235,225,244,225,235,225,238,97,128,48,254,237,225,242,235,235,225,238,97,129,48,155,204,86,232,225,236,230,247,233,228,244,104,128,255,158,235,225,244,225,235,225,238,97,128,48,250,240,225,242,229,110,128,36,177,116,2,204,123,204,130,233,236,228,101,128,30,125,245,242,238,229,100,128,2,140,117,2,204,144,204,155,232,233,242,225,231,225,238,97,128,48,148,235,225,244,225,235,225,238,97,128,48,244,119,143,0,119,204,200,205,177,205,187,205,210,205,250,206,61,206,69,208,40,208,81,208,93,208,168,208,176,208,183,208,194,208,203,97,8,204,218,204,225,204,235,204,246,205,28,205,60,205,72,205,108,227,245,244,101,128,30,131,229,235,239,242,229,225,110,128,49,89,232,233,242,225,231,225,238,97,128,48,143,107,2,204,252,205,20,225,244,225,235,225,238,97,129,48,239,205,8,232,225,236,230,247,233,228,244,104,128,255,156,239,242,229,225,110,128,49,88,243,237,225,236,108,2,205,38,205,49,232,233,242,225,231,225,238,97,128,48,142,235,225,244,225,235,225,238,97,128,48,238,244,244,239,243,241,245,225,242,101,128,51,87,118,2,205,78,205,86,229,228,225,243,104,128,48,28,249,245,238,228,229,242,243,227,239,242,229,246,229,242,244,233,227,225,108,128,254,52,119,3,205,116,205,125,205,139,225,242,225,226,233,99,128,6,72,230,233,238,225,236,225,242,225,226,233,99,128,254,238,232,225,237,250,225,225,226,239,246,101,2,205,154,205,163,225,242,225,226,233,99,128,6,36,230,233,238,225,236,225,242,225,226,233,99,128,254,134,226,243,241,245,225,242,101,128,51,221,227,233,242,99,2,205,196,205,201,236,101,128,36,230,245,237,230,236,229,120,128,1,117,100,2,205,216,205,226,233,229,242,229,243,233,115,128,30,133,239,116,2,205,233,205,242,225,227,227,229,238,116,128,30,135,226,229,236,239,119,128,30,137,101,4,206,4,206,15,206,27,206,51,232,233,242,225,231,225,238,97,128,48,145,233,229,242,243,244,242,225,243,115,128,33,24,107,2,206,33,206,43,225,244,225,235,225,238,97,128,48,241,239,242,229,225,110,128,49,94,239,235,239,242,229,225,110,128,49,93,231,242,225,246,101,128,30,129,232,233,244,101,8,206,90,206,99,206,183,207,17,207,101,207,146,207,198,207,254,226,245,236,236,229,116,128,37,230,99,2,206,105,206,125,233,242,227,236,101,129,37,203,206,115,233,238,246,229,242,243,101,128,37,217,239,242,238,229,242,226,242,225,227,235,229,116,2,206,142,206,162,236,229,230,116,129,48,14,206,151,246,229,242,244,233,227,225,108,128,254,67,242,233,231,232,116,129,48,15,206,172,246,229,242,244,233,227,225,108,128,254,68,100,2,206,189,206,230,233,225,237,239,238,100,129,37,199,206,200,227,239,238,244,225,233,238,233,238,231,226,236,225,227,235,243,237,225,236,236,228,233,225,237,239,238,100,128,37,200,239,247,238,240,239,233,238,244,233,238,103,2,206,246,207,6,243,237,225,236,236,244,242,233,225,238,231,236,101,128,37,191,244,242,233,225,238,231,236,101,128,37,189,236,101,2,207,24,207,66,230,244,240,239,233,238,244,233,238,103,2,207,39,207,55,243,237,225,236,236,244,242,233,225,238,231,236,101,128,37,195,244,242,233,225,238,231,236,101,128,37,193,238,244,233,227,245,236,225,242,226,242,225,227,235,229,116,2,207,86,207,93,236,229,230,116,128,48,22,242,233,231,232,116,128,48,23,242,233,231,232,244,240,239,233,238,244,233,238,103,2,207,119,207,135,243,237,225,236,236,244,242,233,225,238,231,236,101,128,37,185,244,242,233,225,238,231,236,101,128,37,183,115,3,207,154,207,184,207,192,109,2,207,160,207,172,225,236,236,243,241,245,225,242,101,128,37,171,233,236,233,238,231,230,225,227,101,128,38,58,241,245,225,242,101,128,37,161,244,225,114,128,38,6,116,2,207,204,207,215,229,236,229,240,232,239,238,101,128,38,15,239,242,244,239,233,243,229,243,232,229,236,236,226,242,225,227,235,229,116,2,207,239,207,246,236,229,230,116,128,48,24,242,233,231,232,116,128,48,25,245,240,240,239,233,238,244,233,238,103,2,208,13,208,29,243,237,225,236,236,244,242,233,225,238,231,236,101,128,37,181,244,242,233,225,238,231,236,101,128,37,179,105,2,208,46,208,57,232,233,242,225,231,225,238,97,128,48,144,107,2,208,63,208,73,225,244,225,235,225,238,97,128,48,240,239,242,229,225,110,128,49,95,237,239,238,239,243,240,225,227,101,128,255,87,111,4,208,103,208,114,208,139,208,157,232,233,242,225,231,225,238,97,128,48,146,235,225,244,225,235,225,238,97,129,48,242,208,127,232,225,236,230,247,233,228,244,104,128,255,102,110,129,32,169,208,145,237,239,238,239,243,240,225,227,101,128,255,230,247,225,229,238,244,232,225,105,128,14,39,240,225,242,229,110,128,36,178,242,233,238,103,128,30,152,243,245,240,229,242,233,239,114,128,2,183,244,245,242,238,229,100,128,2,141,249,238,110,128,1,191,120,137,0,120,208,231,208,242,208,253,209,6,209,33,209,46,209,50,209,62,209,70,225,226,239,246,229,227,237,98,128,3,61,226,239,240,239,237,239,230,111,128,49,18,227,233,242,227,236,101,128,36,231,100,2,209,12,209,22,233,229,242,229,243,233,115,128,30,141,239,244,225,227,227,229,238,116,128,30,139,229,232,225,242,237,229,238,233,225,110,128,5,109,105,128,3,190,237,239,238,239,243,240,225,227,101,128,255,88,240,225,242,229,110,128,36,179,243,245,240,229,242,233,239,114,128,2,227,121,143,0,121,209,115,210,74,210,97,210,137,212,103,212,111,212,128,212,192,212,204,213,201,213,241,213,253,214,8,214,29,215,2,97,11,209,139,209,151,209,161,209,168,209,175,209,185,209,210,209,221,210,3,210,16,210,62,225,228,239,243,241,245,225,242,101,128,51,78,226,229,238,231,225,236,105,128,9,175,227,245,244,101,128,0,253,228,229,246,97,128,9,47,229,235,239,242,229,225,110,128,49,82,231,117,2,209,192,209,201,234,225,242,225,244,105,128,10,175,242,237,245,235,232,105,128,10,47,232,233,242,225,231,225,238,97,128,48,132,107,2,209,227,209,251,225,244,225,235,225,238,97,129,48,228,209,239,232,225,236,230,247,233,228,244,104,128,255,148,239,242,229,225,110,128,49,81,237,225,235,235,225,238,244,232,225,105,128,14,78,243,237,225,236,108,2,210,26,210,37,232,233,242,225,231,225,238,97,128,48,131,235,225,244,225,235,225,238,97,129,48,227,210,50,232,225,236,230,247,233,228,244,104,128,255,108,244,227,249,242,233,236,236,233,99,128,4,99,227,233,242,99,2,210,83,210,88,236,101,128,36,232,245,237,230,236,229,120,128,1,119,100,2,210,103,210,113,233,229,242,229,243,233,115,128,0,255,239,116,2,210,120,210,129,225,227,227,229,238,116,128,30,143,226,229,236,239,119,128,30,245,101,7,210,153,211,161,211,170,211,188,211,220,212,40,212,91,104,8,210,171,210,180,210,214,210,228,211,45,211,61,211,120,211,138,225,242,225,226,233,99,128,6,74,226,225,242,242,229,101,2,210,191,210,200,225,242,225,226,233,99,128,6,210,230,233,238,225,236,225,242,225,226,233,99,128,251,175,230,233,238,225,236,225,242,225,226,233,99,128,254,242,232,225,237,250,225,225,226,239,246,101,4,210,247,211,0,211,14,211,30,225,242,225,226,233,99,128,6,38,230,233,238,225,236,225,242,225,226,233,99,128,254,138,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,139,237,229,228,233,225,236,225,242,225,226,233,99,128,254,140,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,243,237,101,2,211,68,211,81,228,233,225,236,225,242,225,226,233,99,128,254,244,229,237,105,2,211,89,211,104,238,233,244,233,225,236,225,242,225,226,233,99,128,252,221,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,88,238,239,239,238,230,233,238,225,236,225,242,225,226,233,99,128,252,148,244,232,242,229,229,228,239,244,243,226,229,236,239,247,225,242,225,226,233,99,128,6,209,235,239,242,229,225,110,128,49,86,110,129,0,165,211,176,237,239,238,239,243,240,225,227,101,128,255,229,111,2,211,194,211,203,235,239,242,229,225,110,128,49,85,242,233,238,232,233,229,245,232,235,239,242,229,225,110,128,49,134,114,3,211,228,212,8,212,20,225,232,226,229,238,249,239,237,111,2,211,242,211,251,232,229,226,242,229,119,128,5,170,236,229,230,244,232,229,226,242,229,119,128,5,170,233,227,249,242,233,236,236,233,99,128,4,75,245,228,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,249,243,233,229,245,238,103,3,212,53,212,62,212,78,235,239,242,229,225,110,128,49,129,240,225,238,243,233,239,243,235,239,242,229,225,110,128,49,131,243,233,239,243,235,239,242,229,225,110,128,49,130,244,233,246,232,229,226,242,229,119,128,5,154,231,242,225,246,101,128,30,243,232,239,239,107,129,1,180,212,120,225,226,239,246,101,128,30,247,105,5,212,140,212,151,212,162,212,171,212,179,225,242,237,229,238,233,225,110,128,5,117,227,249,242,233,236,236,233,99,128,4,87,235,239,242,229,225,110,128,49,98,238,249,225,238,103,128,38,47,247,238,225,242,237,229,238,233,225,110,128,5,130,237,239,238,239,243,240,225,227,101,128,255,89,111,7,212,220,213,34,213,45,213,55,213,93,213,139,213,148,100,131,5,217,212,230,212,250,213,3,228,225,231,229,243,104,129,251,57,212,241,232,229,226,242,229,119,128,251,57,232,229,226,242,229,119,128,5,217,249,239,100,2,213,11,213,20,232,229,226,242,229,119,128,5,242,240,225,244,225,232,232,229,226,242,229,119,128,251,31,232,233,242,225,231,225,238,97,128,48,136,233,235,239,242,229,225,110,128,49,137,107,2,213,61,213,85,225,244,225,235,225,238,97,129,48,232,213,73,232,225,236,230,247,233,228,244,104,128,255,150,239,242,229,225,110,128,49,91,243,237,225,236,108,2,213,103,213,114,232,233,242,225,231,225,238,97,128,48,135,235,225,244,225,235,225,238,97,129,48,231,213,127,232,225,236,230,247,233,228,244,104,128,255,110,244,231,242,229,229,107,128,3,243,121,2,213,154,213,191,97,2,213,160,213,170,229,235,239,242,229,225,110,128,49,136,107,2,213,176,213,184,239,242,229,225,110,128,49,135,244,232,225,105,128,14,34,233,238,231,244,232,225,105,128,14,13,112,2,213,207,213,214,225,242,229,110,128,36,180,239,231,229,231,242,225,237,237,229,238,105,129,3,122,213,230,231,242,229,229,235,227,237,98,128,3,69,114,129,1,166,213,247,233,238,103,128,30,153,243,245,240,229,242,233,239,114,128,2,184,116,2,214,14,214,21,233,236,228,101,128,30,249,245,242,238,229,100,128,2,142,117,5,214,41,214,52,214,62,214,100,214,232,232,233,242,225,231,225,238,97,128,48,134,233,235,239,242,229,225,110,128,49,140,107,2,214,68,214,92,225,244,225,235,225,238,97,129,48,230,214,80,232,225,236,230,247,233,228,244,104,128,255,149,239,242,229,225,110,128,49,96,115,3,214,108,214,146,214,187,226,233,103,2,214,116,214,127,227,249,242,233,236,236,233,99,128,4,107,233,239,244,233,230,233,229,228,227,249,242,233,236,236,233,99,128,4,109,236,233,244,244,236,101,2,214,157,214,168,227,249,242,233,236,236,233,99,128,4,103,233,239,244,233,230,233,229,228,227,249,242,233,236,236,233,99,128,4,105,237,225,236,108,2,214,196,214,207,232,233,242,225,231,225,238,97,128,48,133,235,225,244,225,235,225,238,97,129,48,229,214,220,232,225,236,230,247,233,228,244,104,128,255,109,249,101,2,214,239,214,248,235,239,242,229,225,110,128,49,139,239,235,239,242,229,225,110,128,49,138,249,97,2,215,9,215,19,226,229,238,231,225,236,105,128,9,223,228,229,246,97,128,9,95,122,142,0,122,215,58,216,66,216,77,216,120,216,147,217,182,218,34,218,76,218,88,218,100,218,128,218,136,218,152,218,161,97,10,215,80,215,91,215,98,215,105,215,116,215,194,215,224,215,235,216,15,216,27,225,242,237,229,238,233,225,110,128,5,102,227,245,244,101,128,1,122,228,229,246,97,128,9,91,231,245,242,237,245,235,232,105,128,10,91,104,4,215,126,215,135,215,149,215,179,225,242,225,226,233,99,128,6,56,230,233,238,225,236,225,242,225,226,233,99,128,254,198,105,2,215,155,215,170,238,233,244,233,225,236,225,242,225,226,233,99,128,254,199,242,225,231,225,238,97,128,48,86,237,229,228,233,225,236,225,242,225,226,233,99,128,254,200,233,110,2,215,201,215,210,225,242,225,226,233,99,128,6,50,230,233,238,225,236,225],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+71680);allocate([242,225,226,233,99,128,254,176,235,225,244,225,235,225,238,97,128,48,182,241,229,102,2,215,243,216,1,231,225,228,239,236,232,229,226,242,229,119,128,5,149,241,225,244,225,238,232,229,226,242,229,119,128,5,148,242,241,225,232,229,226,242,229,119,128,5,152,249,233,110,130,5,214,216,37,216,57,228,225,231,229,243,104,129,251,54,216,48,232,229,226,242,229,119,128,251,54,232,229,226,242,229,119,128,5,214,226,239,240,239,237,239,230,111,128,49,23,99,3,216,85,216,92,216,114,225,242,239,110,128,1,126,233,242,99,2,216,100,216,105,236,101,128,36,233,245,237,230,236,229,120,128,30,145,245,242,108,128,2,145,228,239,116,130,1,124,216,130,216,139,225,227,227,229,238,116,128,1,124,226,229,236,239,119,128,30,147,101,6,216,161,216,172,216,215,216,226,216,237,217,177,227,249,242,233,236,236,233,99,128,4,55,100,2,216,178,216,197,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,153,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,223,232,233,242,225,231,225,238,97,128,48,92,235,225,244,225,235,225,238,97,128,48,188,242,111,140,0,48,217,10,217,19,217,29,217,36,217,61,217,74,217,85,217,97,217,108,217,118,217,129,217,136,225,242,225,226,233,99,128,6,96,226,229,238,231,225,236,105,128,9,230,228,229,246,97,128,9,102,231,117,2,217,43,217,52,234,225,242,225,244,105,128,10,230,242,237,245,235,232,105,128,10,102,232,225,227,235,225,242,225,226,233,99,128,6,96,233,238,230,229,242,233,239,114,128,32,128,237,239,238,239,243,240,225,227,101,128,255,16,239,236,228,243,244,249,236,101,128,247,48,240,229,242,243,233,225,110,128,6,240,243,245,240,229,242,233,239,114,128,32,112,244,232,225,105,128,14,80,247,233,228,244,104,3,217,148,217,157,217,169,234,239,233,238,229,114,128,254,255,238,239,238,234,239,233,238,229,114,128,32,12,243,240,225,227,101,128,32,11,244,97,128,3,182,104,2,217,188,217,199,226,239,240,239,237,239,230,111,128,49,19,101,4,217,209,217,220,217,236,217,247,225,242,237,229,238,233,225,110,128,5,106,226,242,229,246,229,227,249,242,233,236,236,233,99,128,4,194,227,249,242,233,236,236,233,99,128,4,54,100,2,217,253,218,16,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,151,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,221,105,3,218,42,218,53,218,64,232,233,242,225,231,225,238,97,128,48,88,235,225,244,225,235,225,238,97,128,48,184,238,239,242,232,229,226,242,229,119,128,5,174,236,233,238,229,226,229,236,239,119,128,30,149,237,239,238,239,243,240,225,227,101,128,255,90,111,2,218,106,218,117,232,233,242,225,231,225,238,97,128,48,94,235,225,244,225,235,225,238,97,128,48,190,240,225,242,229,110,128,36,181,242,229,244,242,239,230,236,229,248,232,239,239,107,128,2,144,243,244,242,239,235,101,128,1,182,117,2,218,167,218,178,232,233,242,225,231,225,238,97,128,48,90,235,225,244,225,235,225,238,97,128,48,186,0,0,0,108,116,117,111,64,0,0,0,3,0,0,0,25,0,0,0,65,0,0,0,68,0,0,0,114,97,115,116,101,114,49,0,2,0,0,0,64,0,0,0,8,67,1,0,0,0,1,0,0,0,2,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,108,116,117,111,15,0,0,0,16,0,0,0,4,0,0,0,26,0,0,0,240,66,1,0,0,0,0,0,114,97,115,116,101,114,53,0,2,0,0,0,64,0,0,0,80,67,1,0,0,0,1,0,0,0,2,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,108,116,117,111,15,0,0,0,16,0,0,0,4,0,0,0,26,0,0,0,240,66,1,0,0,0,0,0,24,0,0,0,66,0,0,0,0,0,0,0,67,0,0,0,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,0,0,0,70,0,0,0,0,0,0,0,24,0,0,0,66,0,0,0,0,0,0,0,71,0,0,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,73,0,0,0,74,0,0,0,0,0,0,0,56,0,0,0,75,0,0,0,0,0,0,0,76,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,78,0,0,0,79,0,0,0,0,0,0,0,24,0,0,0,66,0,0,0,0,0,0,0,80,0,0,0,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,82,0,0,0,83,0,0,0,0,0,0,0,24,0,0,0,66,0,0,0,0,0,0,0,84,0,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,86,0,0,0,87,0,0,0,0,0,0,0,24,0,0,0,66,0,0,0,0,0,0,0,88,0,0,0,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,90,0,0,0,91,0,0,0,0,0,0,0,44,0,0,0,92,0,0,0,0,0,0,0,93,0,0,0,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,95,0,0,0,96,0,0,0,0,0,0,0,44,0,0,0,97,0,0,0,0,0,0,0,98,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,100,0,0,0,101,0,0,0,0,0,0,0,40,0,0,0,102,0,0,0,69,0,0,0,103,0,0,0,104,0,0,0,17,0,0,0,27,0,0,0,105,0,0,0,28,0,0,0,29,0,0,0,14,0,0,0,106,0,0,0,107,0,0,0,0,0,0,0,18,0,0,0,21,0,0,0,22,0,0,0,70,0,0,0,108,0,0,0,23,0,0,0,109,0,0,0,30,0,0,0,110,0,0,0,111,0,0,0,112,0,0,0,113,0,0,0,114,0,0,0,71,0,0,0,115,0,0,0,116,0,0,0,117,0,0,0,118,0,0,0,1,0,0,0,31,0,0,0,72,0,0,0,32,0,0,0,119,0,0,0,33,0,0,0,120,0,0,0,73,0,0,0,34,0,0,0,35,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,88,78,1,0,0,0,1,0,0,0,2,0,144,69,1,0,0,0,0,0,0,0,0,0,108,0,0,0,0,0,0,0,96,70,1,0,112,70,1,0,144,96,1,0,128,70,1,0,120,96,1,0,136,70,1,0,144,70,1,0,152,70,1,0,160,70,1,0,176,70,1,0,0,0,0,0,0,0,0,0,115,102,110,116,45,116,97,98,108,101,0,0,0,0,0,0,23,0,0,0,121,0,0,0,25,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,19,0,0,0,122,0,0,0,98,100,102,0,0,0,0,0,36,0,0,0,37,0,0,0,116,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,123,0,0,0,0,0,0,0,67,72,65,82,83,69,84,95,82,69,71,73,83,84,82,89,0,0,0,0,0,0,0,0,67,72,65,82,83,69,84,95,69,78,67,79,68,73,78,71,0,0,0,0,0,0,0,0,4,0,8,0,12,2,4,0,12,2,6,0,12,2,8,0,12,2,10,0,0,0,0,0,4,0,16,0,16,4,0,0,16,4,4,0,16,4,8,0,16,4,12,0,0,0,0,0,4,0,54,0,16,4,0,0,16,4,4,0,17,4,8,0,17,4,12,0,12,2,16,0,12,2,18,0,17,4,20,0,17,4,24,0,17,4,28,0,17,4,32,0,13,2,36,0,13,2,38,0,13,2,40,0,13,2,42,0,12,2,44,0,12,2,46,0,13,2,48,0,13,2,50,0,13,2,52,0,0,0,0,0,0,0,0,0,4,0,54,0,16,4,0,0,16,4,4,0,12,2,8,0,12,2,10,0,12,2,12,0,12,2,14,0,12,2,16,0,24,16,20,0,24,8,36,0,24,6,44,0,9,1,50,0,9,1,51,0,8,1,52,0,8,1,53,0,0,0,0,0,4,0,6,0,12,2,0,0,12,4,4,0,12,4,8,0,0,0,0,0,0,0,0,0,12,2,0,0,12,2,2,0,12,2,4,0,12,2,6,0,12,2,8,0,12,4,12,0,0,0,0,0,0,0,0,0,4,0,32,0,16,4,0,0,16,4,4,0,13,2,8,0,13,2,10,0,16,4,12,0,16,4,16,0,16,4,20,0,16,4,24,0,16,4,28,0,0,0,0,0,0,0,0,0,4,0,78,0,12,2,0,0,13,2,2,0,12,2,4,0,12,2,6,0,13,2,8,0,13,2,10,0,13,2,12,0,13,2,14,0,13,2,16,0,13,2,18,0,13,2,20,0,13,2,22,0,13,2,24,0,13,2,26,0,13,2,28,0,13,2,30,0,8,1,32,0,8,1,33,0,8,1,34,0,8,1,35,0,8,1,36,0,8,1,37,0,8,1,38,0,8,1,39,0,8,1,40,0,8,1,41,0,16,4,44,0,16,4,48,0,16,4,52,0,16,4,56,0,8,1,60,0,8,1,61,0,8,1,62,0,8,1,63,0,12,2,64,0,12,2,66,0,12,2,68,0,13,2,70,0,13,2,72,0,13,2,74,0,12,2,76,0,12,2,78,0,0,0,0,0,4,0,8,0,16,4,80,0,16,4,84,0,0,0,0,0,4,0,10,0,13,2,88,0,13,2,90,0,12,2,92,0,12,2,94,0,12,2,96,0,0,0,0,0,0,0,0,0,4,0,6,0,17,4,0,0,12,2,4,0,0,0,0,0,4,0,26,0,12,2,6,0,12,2,8,0,12,2,10,0,12,2,12,0,12,2,14,0,12,2,16,0,12,2,18,0,12,2,20,0,12,2,22,0,12,2,24,0,12,2,26,0,12,2,28,0,12,2,30,0,0,0,0,0,0,0,0,0,4,0,36,0,16,4,0,0,13,2,4,0,13,2,6,0,13,2,8,0,12,2,10,0,13,2,12,0,13,2,14,0,13,2,16,0,13,2,18,0,13,2,20,0,13,2,22,0,13,2,24,0,13,2,26,0,13,2,28,0,13,2,30,0,13,2,32,0,12,2,34,0,0,0,0,0,0,0,0,0,2,0,0,0,255,255,255,255,99,105,110,117,0,0,0,0,255,255,255,255,99,105,110,117,1,0,0,0,0,0,0,0,110,109,114,97,3,0,0,0,0,0,0,0,98,109,121,115,3,0,0,0,10,0,0,0,99,105,110,117,3,0,0,0,1,0,0,0,99,105,110,117,3,0,0,0,2,0,0,0,115,105,106,115,3,0,0,0,3,0,0,0,32,32,98,103,3,0,0,0,4,0,0,0,53,103,105,98,3,0,0,0,5,0,0,0,115,110,97,119,3,0,0,0,6,0,0,0,97,104,111,106,0,0,0,0,152,67,1,0,208,67,1,0,8,68,1,0,64,68,1,0,120,68,1,0,176,68,1,0,232,68,1,0,32,69,1,0,88,69,1,0,0,0,0,0,4,0,8,0,17,4,4,0,17,4,8,0,0,0,0,0,4,0,44,0,16,4,0,0,16,4,4,0,16,4,8,0,12,2,12,0,12,2,14,0,16,4,16,0,12,2,20,0,12,2,22,0,16,4,24,0,16,4,28,0,16,4,32,0,16,4,36,0,16,4,40,0,0,0,0,0,0,0,0,0,108,116,117,111,124,0,0,0,5,0,0,0,0,0,0,0,125,0,0,0,74,0,0,0,115,109,111,111,116,104,0,0,2,0,0,0,64,0,0,0,176,74,1,0,0,0,1,0,0,0,2,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,108,116,117,111,20,0,0,0,21,0,0,0,6,0,0,0,38,0,0,0,152,74,1,0,0,0,0,0,115,109,111,111,116,104,45,108,99,100,0,0,0,0,0,0,2,0,0,0,64,0,0,0,248,74,1,0,0,0,1,0,0,0,2,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,108,116,117,111,22,0,0,0,21,0,0,0,6,0,0,0,38,0,0,0,152,74,1,0,0,0,0,0,115,109,111,111,116,104,45,108,99,100,118,0,0,0,0,0,2,0,0,0,64,0,0,0,72,75,1,0,0,0,1,0,0,0,2,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,108,116,117,111,23,0,0,0,21,0,0,0,6,0,0,0,38,0,0,0,152,74,1,0,0,0,0,0,126,0,0,0,127,0,0,0,39,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,1,5,0,0,72,0,0,0,224,96,1,0,0,0,1,0,0,0,2,0,0,0,0,0,32,0,0,0,75,0,0,0,128,0,0,0,20,3,0,0,48,1,0,0,160,0,0,0,26,0,0,0,76,0,0,0,33,0,0,0,77,0,0,0,34,0,0,0,0,0,0,0,25,0,0,0,26,0,0,0,0,0,0,0,27,0,0,0,129,0,0,0,130,0,0,0,0,0,0,0,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,0,1,0,0,0,64,0,0,0,1,0,0,0,1,0,0,0,68,0,0,0,0,0,0,0,0,0,0,0,9,0,3,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,255,254,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,4,5,6,7,8,9,3,5,7,9,11,13,15,17,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,32,32,32,32,32,32,2,2,0,80,16,16,16,16,16,16,16,16,0,0,16,0,16,16,16,16,18,16,0,34,1,17,16,32,0,16,32,16,16,0,16,16,0,0,0,0,16,16,16,16,16,0,32,32,0,0,32,32,0,0,32,17,32,17,17,17,32,33,33,1,1,0,0,16,33,33,33,33,33,33,17,17,16,0,33,33,17,16,16,16,33,33,33,33,17,17,17,17,17,17,17,17,17,17,17,17,32,16,16,16,16,16,16,16,32,32,0,0,0,0,16,16,0,32,32,0,0,16,32,32,17,16,51,33,33,16,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,115,102,110,116,0,0,0,0,88,240,188,5,228,2,0,0,241,59,35,40,196,135,0,0,234,161,68,163,225,1,0,0,88,240,188,5,228,2,0,0,241,59,35,40,196,135,0,0,235,161,68,163,225,1,0,0,212,234,229,17,80,3,0,0,59,202,48,90,99,144,0,0,2,38,164,19,126,0,0,0,252,255,251,255,8,0,0,0,184,72,158,156,162,190,0,0,18,1,2,112,8,0,0,0,252,255,251,255,8,0,0,0,131,4,90,10,57,124,1,0,18,1,2,112,8,0,0,0,0,0,0,0,0,0,0,0,85,37,201,64,229,0,0,0,227,88,155,163,124,17,0,0,0,0,0,0,0,0,0,0,82,22,196,51,229,0,0,0,42,197,214,38,106,15,0,0,0,0,0,0,0,0,0,0,29,101,177,109,157,1,0,0,3,75,110,108,146,36,0,0,0,0,0,0,0,0,0,0,85,37,201,64,229,0,0,0,208,250,81,222,124,17,0,0,0,0,0,0,0,0,0,0,100,118,228,133,229,0,0,0,49,40,198,166,170,28,0,0,0,0,0,0,0,0,0,0,253,28,137,45,157,1,0,0,51,70,96,160,232,29,0,0,0,0,0,0,0,0,0,0,76,119,170,64,203,1,0,0,150,170,92,155,154,31,0,0,0,0,0,0,0,0,0,0,203,233,61,13,65,1,0,0,102,119,18,212,128,34,0,0,0,0,0,0,0,0,0,0,152,38,105,74,240,1,0,0,70,67,13,52,202,31,0,0,0,0,0,0,0,0,0,0,4,198,52,205,102,1,0,0,70,16,243,108,176,34,0,0,0,0,0,0,0,0,0,0,21,83,167,93,157,1,0,0,95,90,116,64,224,34,0,0,0,0,0,0,0,0,0,0,72,252,85,240,194,1,0,0,211,222,0,57,24,30,0,0,68,70,75,97,105,83,104,111,45,83,66,0,0,0,0,0,0,68,70,75,97,105,83,104,117,0,0,0,0,0,0,0,0,0,68,70,75,97,105,45,83,66,0,0,0,0,0,0,0,0,0,72,117,97,84,105,97,110,75,97,105,84,105,63,0,0,0,0,72,117,97,84,105,97,110,83,111,110,103,84,105,63,0,0,0,77,105,110,103,76,105,85,0,0,0,0,0,0,0,0,0,0,80,77,105,110,103,76,105,85,0,0,0,0,0,0,0,0,0,77,105,110,103,76,105,52,51,0,0,0,0,0,0,0,0,0,48,99,1,0,176,80,1,0,40,91,1,0,192,80,1,0,216,80,1,0,232,80,1,0,240,80,1,0,248,80,1,0,0,81,1,0,16,81,1,0,0,0,0,0,0,0,0,0,84,114,117,101,84,121,112,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0,0,131,0,0,0,41,0,0,0,0,0,0,0,116,114,117,101,116,121,112,101,45,101,110,103,105,110,101,0,2,0,0,0,0,0,0,0,116,116,45,103,108,121,102,0,42,0,0,0,0,0,0,0,112,114,111,112,101,114,116,105,101,115,0,0,0,0,0,0,43,0,0,0,44,0,0,0,105,110,116,101,114,112,114,101,116,101,114,45,118,101,114,115,105,111,110,0,0,0,0,0,4,0,16,0,17,4,0,0,12,2,4,0,12,2,6,0,12,2,8,0,12,2,10,0,12,2,12,0,12,2,14,0,0,0,0,0,0,0,0,0,4,0,20,0,16,4,0,0,16,4,4,0,16,4,8,0,16,4,12,0,12,2,16,0,12,2,18,0,0,0,0,0,83,108,97,110,116,0,0,0,4,0,20,0,17,4,0,0,12,2,4,0,12,2,6,0,16,4,8,0,12,2,12,0,12,2,14,0,16,4,16,0,0,0,0,0,0,0,0,0,116,121,112,101,49,0,0,0,1,5,0,0,28,0,0,0,168,81,1,0,0,0,1,0,0,0,2,0,0,0,0,0,35,0,0,0,78,0,0,0,132,0,0,0,40,2,0,0,44,0,0,0,180,0,0,0,28,0,0,0,79,0,0,0,36,0,0,0,80,0,0,0,37,0,0,0,81,0,0,0,27,0,0,0,28,0,0,0,133,0,0,0,29,0,0,0,134,0,0,0,0,0,0,0,112,115,104,105,110,116,101,114,0,0,0,0,0,0,0,0,66,108,97,99,107,0,0,0,101,101,120,101,99,0,0,0,99,108,111,115,101,102,105,108,101,0,0,0,0,0,0,0,224,94,1,0,3,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,232,94,1,0,3,0,0,0,5,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,240,94,1,0,3,0,0,0,5,0,0,0,0,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,95,1,0,3,0,0,0,5,0,0,0,0,0,0,0,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,16,95,1,0,3,0,0,0,5,0,0,0,0,0,0,0,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,24,95,1,0,3,0,0,0,2,0,0,0,0,0,0,0,20,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,40,95,1,0,3,0,0,0,1,0,0,0,0,0,0,0,24,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,56,95,1,0,3,0,0,0,2,0,0,0,0,0,0,0,26,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,80,95,1,0,3,0,0,0,2,0,0,0,0,0,0,0,28,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,104,95,1,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,224,88,1,0,4,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,240,88,1,0,4,0,0,0,2,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,248,88,1,0,4,0,0,0,2,0,0,0,0,0,0,0,184,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,8,89,1,0,4,0,0,0,2,0,0,0,0,0,0,0,188,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,24,89,1,0,4,0,0,0,4,0,0,0,0,0,0,0,108,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,40,89,1,0,4,0,0,0,2,0,0,0,0,0,0,0,112,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,56,89,1,0,4,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,72,89,1,0,4,0,0,0,9,0,0,0,0,0,0,0,12,0,0,0,2,0,0,0,14,0,0,0,8,0,0,0,2,0,0,0,88,89,1,0,4,0,0,0,9,0,0,0,0,0,0,0,40,0,0,0,2,0,0,0,10,0,0,0,9,0,0,0,2,0,0,0,104,89,1,0,4,0,0,0,9,0,0,0,0,0,0,0,60,0,0,0,2,0,0,0,14,0,0,0,10,0,0,0,2,0,0,0,120,89,1,0,4,0,0,0,9,0,0,0,0,0,0,0,88,0,0,0,2,0,0,0,10,0,0,0,11,0,0,0,2,0,0,0,144,89,1,0,4,0,0,0,9,0,0,0,0,0,0,0,120,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,152,89,1,0,4,0,0,0,9,0,0,0,0,0,0,0,122,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,160,89,1,0,4,0,0,0,9,0,0,0,0,0,0,0,192,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,176,89,1,0,4,0,0,0,9,0,0,0,0,0,0,0,128,0,0,0,2,0,0,0,12,0,0,0,124,0,0,0,2,0,0,0,192,89,1,0,4,0,0,0,9,0,0,0,0,0,0,0,154,0,0,0,2,0,0,0,12,0,0,0,125,0,0,0,2,0,0,0,208,89,1,0,4,0,0,0,3,0,0,0,0,0,0,0,180,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,224,89,1,0,4,0,0,0,1,0,0,0,0,0,0,0,126,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,112,95,1,0,1,0,0,0,6,0,0,0,0,0,0,0,232,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,128,95,1,0,1,0,0,0,2,0,0,0,0,0,0,0,44,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,144,95,1,0,1,0,0,0,2,0,0,0,0,0,0,0,45,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,160,95,1,0,1,0,0,0,3,0,0,0,0,0,0,0,92,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,176,95,1,0,5,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,240,89,1,0,7,0,0,0,2,0,0,0,0,0,0,0,20,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,248,89,1,0,7,0,0,0,2,0,0,0,0,0,0,0,24,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,90,1,0,8,0,0,0,9,0,0,0,0,0,0,0,96,1,0,0,4,0,0,0,16,0,0,0,160,1,0,0,1,0,0,0,192,95,1,0,8,0,0,0,11,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,208,95,1,0,8,0,0,0,11,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,16,90,1,0,8,0,0,0,11,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,224,95,1,0,8,0,0,0,11,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,24,90,1,0,8,0,0,0,11,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,32,90,1,0,8,0,0,0,11,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,56,90,1,0,8,0,0,0,11,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,72,90,1,0,8,0,0,0,11,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,88,90,1,0,8,0,0,0,11,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,104,90,1,0,8,0,0,0,11,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,110,105,113,117,101,73,68,0,0,0,0,0,0,0,0,108,101,110,73,86,0,0,0,76,97,110,103,117,97,103,101,71,114,111,117,112,0,0,0,112,97,115,115,119,111,114,100,0,0,0,0,0,0,0,0,66,108,117,101,83,99,97,108,101,0,0,0,0,0,0,0,66,108,117,101,83,104,105,102,116,0,0,0,0,0,0,0,66,108,117,101,70,117,122,122,0,0,0,0,0,0,0,0,66,108,117,101,86,97,108,117,101,115,0,0,0,0,0,0,79,116,104,101,114,66,108,117,101,115,0,0,0,0,0,0,70,97,109,105,108,121,66,108,117,101,115,0,0,0,0,0,70,97,109,105,108,121,79,116,104,101,114,66,108,117,101,115,0,0,0,0,0,0,0,0,83,116,100,72,87,0,0,0,83,116,100,86,87,0,0,0,77,105,110,70,101,97,116,117,114,101,0,0,0,0,0,0,83,116,101,109,83,110,97,112,72,0,0,0,0,0,0,0,83,116,101,109,83,110,97,112,86,0,0,0,0,0,0,0,69,120,112,97,110,115,105,111,110,70,97,99,116,111,114,0,70,111,114,99,101,66,111,108,100,0,0,0,0,0,0,0,78,68,86,0,0,0,0,0,67,68,86,0,0,0,0,0,68,101,115,105,103,110,86,101,99,116,111,114,0,0,0,0,83,117,98,114,115,0,0,0,80,114,105,118,97,116,101,0,66,108,101,110,100,68,101,115,105,103,110,80,111,115,105,116,105,111,110,115,0,0,0,0,66,108,101,110,100,68,101,115,105,103,110,77,97,112,0,0,66,108,101,110,100,65,120,105,115,84,121,112,101,115,0,0,87,101,105,103,104,116,86,101,99,116,111,114,0,0,0,0,66,117,105,108,100,67,104,97,114,65,114,114,97,121,0,0,139,247,225,13,14,0,0,0,100,117,112,0,0,0,0,0,112,117,116,0,0,0,0,0,37,33,80,83,45,65,100,111,98,101,70,111,110,116,0,0,37,33,70,111,110,116,84,121,112,101,0,0,0,0,0,0,144,96,1,0,232,90,1,0,120,96,1,0,240,90,1,0,48,99,1,0,248,90,1,0,176,96,1,0,0,91,1,0,24,91,1,0,32,91,1,0,40,91,1,0,56,91,1,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,29,0,0,0,135,0,0,0,84,121,112,101,32,49,0,0,136,0,0,0,137,0,0,0,39,0,0,0,138,0,0,0,30,0,0,0,0,0,0,0,107,101,114,110,105,110,103,0,30,0,0,0,0,0,0,0,109,117,108,116,105,45,109,97,115,116,101,114,115,0,0,0,139,0,0,0,45,0,0,0,46,0,0,0,140,0,0,0,47,0,0,0,0,0,0,0,87,105,100,116,104,0,0,0,79,112,116,105,99,97,108,83,105,122,101,0,0,0,0,0,116,121,112,101,52,50,0,0,1,5,0,0,36,0,0,0,104,91,1,0,0,0,1,0,0,0,2,0,0,0,0,0,40,0,0,0,82,0,0,0,141,0,0,0,48,2,0,0,48,0,0,0,164,0,0,0,31,0,0,0,83,0,0,0,41,0,0,0,84,0,0,0,42,0,0,0,85,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,0,0,0,143,0,0,0,112,111,115,116,115,99,114,105,112,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,112,115,97,117,120,0,0,0,46,110,111,116,100,101,102,0,70,111,110,116,68,105,114,101,99,116,111,114,121,0,0,0,107,110,111,119,110,0,0,0,224,94,1,0,3,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,94,1,0,3,0,0,0,5,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,94,1,0,3,0,0,0,5,0,0,0,0,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,1,0,3,0,0,0,5,0,0,0,0,0,0,0,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,95,1,0,3,0,0,0,5,0,0,0,0,0,0,0,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,95,1,0,3,0,0,0,2,0,0,0,0,0,0,0,20,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,95,1,0,3,0,0,0,1,0,0,0,0,0,0,0,24,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,95,1,0,3,0,0,0,2,0,0,0,0,0,0,0,26,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,95,1,0,3,0,0,0,2,0,0,0,0,0,0,0,28,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,95,1,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,95,1,0,1,0,0,0,6,0,0,0,0,0,0,0,232,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,95,1,0,1,0,0,0,2,0,0,0,0,0,0,0,44,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,95,1,0,1,0,0,0,2,0,0,0,0,0,0,0,45,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,95,1,0,1,0,0,0,3,0,0,0,0,0,0,0,92,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,95,1,0,5,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,95,1,0,5,0,0,0,11,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,95,1,0,5,0,0,0,11,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,95,1,0,5,0,0,0,11,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,95,1,0,5,0,0,0,11,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,101,114,115,105,111,110,0,78,111,116,105,99,101,0,0,70,117,108,108,78,97,109,101,0,0,0,0,0,0,0,0,70,97,109,105,108,121,78,97,109,101,0,0,0,0,0,0,87,101,105,103,104,116,0,0,73,116,97,108,105,99,65,110,103,108,101,0,0,0,0,0,105,115,70,105,120,101,100,80,105,116,99,104,0,0,0,0,85,110,100,101,114,108,105,110,101,80,111,115,105,116,105,111,110,0,0,0,0,0,0,0,85,110,100,101,114,108,105,110,101,84,104,105,99,107,110,101,115,115,0,0,0,0,0,0,70,83,84,121,112,101,0,0,70,111,110,116,78,97,109,101,0,0,0,0,0,0,0,0,80,97,105,110,116,84,121,112,101,0,0,0,0,0,0,0,70,111,110,116,84,121,112,101,0,0,0,0,0,0,0,0,83,116,114,111,107,101,87,105,100,116,104,0,0,0,0,0,70,111,110,116,66,66,111,120,0,0,0,0,0,0,0,0,70,111,110,116,77,97,116,114,105,120,0,0,0,0,0,0,69,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,67,104,97,114,83,116,114,105,110,103,115,0,0,0,0,0,115,102,110,116,115,0,0,0,83,116,97,110,100,97,114,100,69,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,69,120,112,101,114,116,69,110,99,111,100,105,110,103,0,0,73,83,79,76,97,116,105,110,49,69,110,99,111,100,105,110,103,0,0,0,0,0,0,0,37,33,80,83,45,84,114,117,101,84,121,112,101,70,111,110,116,0,0,0,0,0,0,0,120,96,1,0,136,96,1,0,144,96,1,0,168,96,1,0,176,96,1,0,192,96,1,0,48,99,1,0,216,96,1,0,0,0,0,0,0,0,0,0,103,108,121,112,104,45,100,105,99,116,0,0,0,0,0,0,32,0,0,0,144,0,0,0,112,111,115,116,115,99,114,105,112,116,45,102,111,110,116,45,110,97,109,101,0,0,0,0,43,0,0,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,105,110,102,111,0,145,0,0,0,146,0,0,0,44,0,0,0,147,0,0,0,0,0,0,0,0,0,0,0,84,121,112,101,32,52,50,0,116,114,117,101,116,121,112,101,0,0,0,0,0,0,0,0,119,105,110,102,111,110,116,115,0,0,0,0,0,0,0,0,1,2,0,0,28,0,0,0,240,96,1,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,148,0,0,0,152,0,0,0,44,0,0,0,160,0,0,0,32,0,0,0,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,0,0,0,150,0,0,0,82,101,103,117,108,97,114,0,66,111,108,100,32,73,116,97,108,105,99,0,0,0,0,0,66,111,108,100,0,0,0,0,73,116,97,108,105,99,0,0,24,0,0,0,151,0,0,0,0,0,0,0,152,0,0,0,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,148,0,14,2,0,0,18,4,4,0,24,60,8,0,14,2,68,0,14,2,70,0,14,2,72,0,14,2,74,0,14,2,76,0,14,2,78,0,14,2,80,0,8,1,82,0,8,1,83,0,8,1,84,0,14,2,86,0,8,1,88,0,14,2,90,0,14,2,92,0,8,1,94,0,14,2,96,0,14,2,98,0,8,1,100,0,8,1,101,0,8,1,102,0,8,1,103,0,14,2,104,0,18,4,108,0,18,4,112,0,18,4,116,0,18,4,120,0,8,1,124,0,18,4,128,0,14,2,132,0,14,2,134,0,14,2,136,0,18,2,138,0,24,16,140,0,0,0,0,0,4,0,64,0,14,2,0,0,25,58,0,0,18,2,2,0,0,0,0,0,0,0,0,0,4,0,40,0,14,2,0,0,25,34,0,0,14,2,2,0,14,2,4,0,0,0,0,0,4,0,248,0,18,4,0,0,14,2,4,0,14,2,6,0,25,12,0,0,14,2,8,0,25,2,0,0,14,2,10,0,25,110,0,0,18,4,12,0,18,4,16,0,25,104,0,0,0,0,0,0,0,0,0,0,4,0,40,0,24,8,0,0,25,4,0,0,18,4,8,0,18,4,12,0,18,4,16,0,25,16,0,0,0,0,0,0,4,0,16,0,18,4,0,0,18,4,4,0,14,2,8,0,14,2,10,0,14,2,12,0,14,2,14,0,0,0,0,0,4,0,8,0,18,4,0,0,18,4,4,0,0,0,0,0,4,0,16,0,18,4,0,0,18,4,4,0,18,4,8,0,18,4,12,0,0,0,0,0,48,99,1,0,72,99,1,0,240,96,1,0,88,99,1,0,0,0,0,0,0,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,87,105,110,100,111,119,115,32,70,78,84,0,0,0,0,0,154,0,0,0,0,0,0,0,40,100,101,112,116,104,32,61,61,32,49,41,32,124,124,32,40,100,101,112,116,104,32,61,61,32,50,41,32,124,124,32,40,100,101,112,116,104,32,61,61,32,51,41,32,124,124,32,40,100,101,112,116,104,32,61,61,32,52,41,0,0,0,0,46,46,92,46,46,92,83,112,97,114,107,121,45,99,111,114,101,92,101,120,116,92,102,114,101,101,116,121,112,101,45,103,108,92,116,101,120,116,117,114,101,45,97,116,108,97,115,46,99,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,97,116,108,97,115,95,110,101,119,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,97,116,108,97,115,95,115,101,116,95,114,101,103,105,111,110,0,0,0,0,0,0,0,0,120,32,62,32,48,0,0,0,121,32,62,32,48,0,0,0,120,32,60,32,40,115,101,108,102,45,62,119,105,100,116,104,45,49,41,0,0,0,0,0,40,120,32,43,32,119,105,100,116,104,41,32,60,61,32,40,115,101,108,102,45,62,119,105,100,116,104,45,49,41,0,0,121,32,60,32,40,115,101,108,102,45,62,104,101,105,103,104,116,45,49,41,0,0,0,0,40,121,32,43,32,104,101,105,103,104,116,41,32,60,61,32,40,115,101,108,102,45,62,104,101,105,103,104,116,45,49,41,0,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,97,116,108,97,115,95,109,101,114,103,101,0,0,0,0,0,116,101,120,116,117,114,101,95,97,116,108,97,115,95,103,101,116,95,114,101,103,105,111,110,0,0,0,0,0,0,0,0,115,101,108,102,45,62,100,97,116,97,0,0,0,0,0,0,116,101,120,116,117,114,101,95,97,116,108,97,115,95,117,112,108,111,97,100,0,0,0,0,110,111,32,101,114,114,111,114,0,0,0,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,114,101,115,111,117,114,99,101,0,0,0,0,117,110,107,110,111,119,110,32,102,105,108,101,32,102,111,114,109,97,116,0,0,0,0,0,98,114,111,107,101,110,32,102,105,108,101,0,0,0,0,0,105,110,118,97,108,105,100,32,70,114,101,101,84,121,112,101,32,118,101,114,115,105,111,110,0,0,0,0,0,0,0,0,109,111,100,117,108,101,32,118,101,114,115,105,111,110,32,105,115,32,116,111,111,32,108,111,119,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,0,0,0,0,0,0,0,117,110,105,109,112,108,101,109,101,110,116,101,100,32,102,101,97,116,117,114,101,0,0,0,98,114,111,107,101,110,32,116,97,98,108,101,0,0,0,0,98,114,111,107,101,110,32,111,102,102,115,101,116,32,119,105,116,104,105,110,32,116,97,98,108,101,0,0,0,0,0,0,97,114,114,97,121,32,97,108,108,111,99,97,116,105,111,110,32,115,105,122,101,32,116,111,111,32,108,97,114,103,101,0,109,105,115,115,105,110,103,32,109,111,100,117,108,101,0,0,109,105,115,115,105,110,103,32,112,114,111,112,101,114,116,121,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,103,108,121,112,104,32,105,110,100,101,120,0,0,0,0,0,105,110,118,97,108,105,100,32,99,104,97,114,97,99,116,101,114,32,99,111,100,101,0,0,117,110,115,117,112,112,111,114,116,101,100,32,103,108,121,112,104,32,105,109,97,103,101,32,102,111,114,109,97,116,0,0,99,97,110,110,111,116,32,114,101,110,100,101,114,32,116,104,105,115,32,103,108,121,112,104,32,102,111,114,109,97,116,0,105,110,118,97,108,105,100,32,111,117,116,108,105,110,101,0,105,110,118,97,108,105,100,32,99,111,109,112,111,115,105,116,101,32,103,108,121,112,104,0,116,111,111,32,109,97,110,121,32,104,105,110,116,115,0,0,105,110,118,97,108,105,100,32,112,105,120,101,108,32,115,105,122,101,0,0,0,0,0,0,105,110,118,97,108,105,100,32,111,98,106,101,99,116,32,104,97,110,100,108,101,0,0,0,105,110,118,97,108,105,100,32,108,105,98,114,97,114,121,32,104,97,110,100,108,101,0,0,105,110,118,97,108,105,100,32,109,111,100,117,108,101,32,104,97,110,100,108,101,0,0,0,105,110,118,97,108,105,100,32,102,97,99,101,32,104,97,110,100,108,101,0,0,0,0,0,105,110,118,97,108,105,100,32,115,105,122,101,32,104,97,110,100,108,101,0,0,0,0,0,105,110,118,97,108,105,100,32,103,108,121,112,104,32,115,108,111,116,32,104,97,110,100,108,101,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,99,104,97,114,109,97,112,32,104,97,110,100,108,101,0,0,105,110,118,97,108,105,100,32,99,97,99,104,101,32,109,97,110,97,103,101,114,32,104,97,110,100,108,101,0,0,0,0,105,110,118,97,108,105,100,32,115,116,114,101,97,109,32,104,97,110,100,108,101,0,0,0,116,111,111,32,109,97,110,121,32,109,111,100,117,108,101,115,0,0,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,101,120,116,101,110,115,105,111,110,115],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+81920);allocate([117,110,108,105,115,116,101,100,32,111,98,106,101,99,116,0,99,97,110,110,111,116,32,111,112,101,110,32,115,116,114,101,97,109,0,0,0,0,0,0,105,110,118,97,108,105,100,32,115,116,114,101,97,109,32,115,101,101,107,0,0,0,0,0,105,110,118,97,108,105,100,32,115,116,114,101,97,109,32,115,107,105,112,0,0,0,0,0,105,110,118,97,108,105,100,32,115,116,114,101,97,109,32,114,101,97,100,0,0,0,0,0,105,110,118,97,108,105,100,32,115,116,114,101,97,109,32,111,112,101,114,97,116,105,111,110,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,102,114,97,109,101,32,111,112,101,114,97,116,105,111,110,0,110,101,115,116,101,100,32,102,114,97,109,101,32,97,99,99,101,115,115,0,0,0,0,0,105,110,118,97,108,105,100,32,102,114,97,109,101,32,114,101,97,100,0,0,0,0,0,0,114,97,115,116,101,114,32,117,110,105,110,105,116,105,97,108,105,122,101,100,0,0,0,0,114,97,115,116,101,114,32,99,111,114,114,117,112,116,101,100,0,0,0,0,0,0,0,0,114,97,115,116,101,114,32,111,118,101,114,102,108,111,119,0,110,101,103,97,116,105,118,101,32,104,101,105,103,104,116,32,119,104,105,108,101,32,114,97,115,116,101,114,105,110,103,0,116,111,111,32,109,97,110,121,32,114,101,103,105,115,116,101,114,101,100,32,99,97,99,104,101,115,0,0,0,0,0,0,105,110,118,97,108,105,100,32,111,112,99,111,100,101,0,0,116,111,111,32,102,101,119,32,97,114,103,117,109,101,110,116,115,0,0,0,0,0,0,0,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,0,99,111,100,101,32,111,118,101,114,102,108,111,119,0,0,0,98,97,100,32,97,114,103,117,109,101,110,116,0,0,0,0,100,105,118,105,115,105,111,110,32,98,121,32,122,101,114,111,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,114,101,102,101,114,101,110,99,101,0,0,0,0,0,0,0,102,111,117,110,100,32,100,101,98,117,103,32,111,112,99,111,100,101,0,0,0,0,0,0,102,111,117,110,100,32,69,78,68,70,32,111,112,99,111,100,101,32,105,110,32,101,120,101,99,117,116,105,111,110,32,115,116,114,101,97,109,0,0,0,110,101,115,116,101,100,32,68,69,70,83,0,0,0,0,0,105,110,118,97,108,105,100,32,99,111,100,101,32,114,97,110,103,101,0,0,0,0,0,0,101,120,101,99,117,116,105,111,110,32,99,111,110,116,101,120,116,32,116,111,111,32,108,111,110,103,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,102,117,110,99,116,105,111,110,32,100,101,102,105,110,105,116,105,111,110,115,0,0,0,116,111,111,32,109,97,110,121,32,105,110,115,116,114,117,99,116,105,111,110,32,100,101,102,105,110,105,116,105,111,110,115,0,0,0,0,0,0,0,0,83,70,78,84,32,102,111,110,116,32,116,97,98,108,101,32,109,105,115,115,105,110,103,0,104,111,114,105,122,111,110,116,97,108,32,104,101,97,100,101,114,32,40,104,104,101,97,41,32,116,97,98,108,101,32,109,105,115,115,105,110,103,0,0,108,111,99,97,116,105,111,110,115,32,40,108,111,99,97,41,32,116,97,98,108,101,32,109,105,115,115,105,110,103,0,0,110,97,109,101,32,116,97,98,108,101,32,109,105,115,115,105,110,103,0,0,0,0,0,0,99,104,97,114,97,99,116,101,114,32,109,97,112,32,40,99,109,97,112,41,32,116,97,98,108,101,32,109,105,115,115,105,110,103,0,0,0,0,0,0,104,111,114,105,122,111,110,116,97,108,32,109,101,116,114,105,99,115,32,40,104,109,116,120,41,32,116,97,98,108,101,32,109,105,115,115,105,110,103,0,80,111,115,116,83,99,114,105,112,116,32,40,112,111,115,116,41,32,116,97,98,108,101,32,109,105,115,115,105,110,103,0,105,110,118,97,108,105,100,32,104,111,114,105,122,111,110,116,97,108,32,109,101,116,114,105,99,115,0,0,0,0,0,0,105,110,118,97,108,105,100,32,99,104,97,114,97,99,116,101,114,32,109,97,112,32,40,99,109,97,112,41,32,102,111,114,109,97,116,0,0,0,0,0,105,110,118,97,108,105,100,32,112,112,101,109,32,118,97,108,117,101,0,0,0,0,0,0,105,110,118,97,108,105,100,32,118,101,114,116,105,99,97,108,32,109,101,116,114,105,99,115,0,0,0,0,0,0,0,0,99,111,117,108,100,32,110,111,116,32,102,105,110,100,32,99,111,110,116,101,120,116,0,0,105,110,118,97,108,105,100,32,80,111,115,116,83,99,114,105,112,116,32,40,112,111,115,116,41,32,116,97,98,108,101,32,102,111,114,109,97,116,0,0,105,110,118,97,108,105,100,32,80,111,115,116,83,99,114,105,112,116,32,40,112,111,115,116,41,32,116,97,98,108,101,0,111,112,99,111,100,101,32,115,121,110,116,97,120,32,101,114,114,111,114,0,0,0,0,0,97,114,103,117,109,101,110,116,32,115,116,97,99,107,32,117,110,100,101,114,102,108,111,119,0,0,0,0,0,0,0,0,105,103,110,111,114,101,0,0,110,111,32,85,110,105,99,111,100,101,32,103,108,121,112,104,32,110,97,109,101,32,102,111,117,110,100,0,0,0,0,0,103,108,121,112,104,32,116,111,32,98,105,103,32,102,111,114,32,104,105,110,116,105,110,103,0,0,0,0,0,0,0,0,96,83,84,65,82,84,70,79,78,84,39,32,102,105,101,108,100,32,109,105,115,115,105,110,103,0,0,0,0,0,0,0,96,70,79,78,84,39,32,102,105,101,108,100,32,109,105,115,115,105,110,103,0,0,0,0,96,83,73,90,69,39,32,102,105,101,108,100,32,109,105,115,115,105,110,103,0,0,0,0,96,70,79,78,84,66,79,85,78,68,73,78,71,66,79,88,39,32,102,105,101,108,100,32,109,105,115,115,105,110,103,0,96,67,72,65,82,83,39,32,102,105,101,108,100,32,109,105,115,115,105,110,103,0,0,0,96,83,84,65,82,84,67,72,65,82,39,32,102,105,101,108,100,32,109,105,115,115,105,110,103,0,0,0,0,0,0,0,96,69,78,67,79,68,73,78,71,39,32,102,105,101,108,100,32,109,105,115,115,105,110,103,0,0,0,0,0,0,0,0,96,66,66,88,39,32,102,105,101,108,100,32,109,105,115,115,105,110,103,0,0,0,0,0,96,66,66,88,39,32,116,111,111,32,98,105,103,0,0,0,70,111,110,116,32,104,101,97,100,101,114,32,99,111,114,114,117,112,116,101,100,32,111,114,32,109,105,115,115,105,110,103,32,102,105,101,108,100,115,0,70,111,110,116,32,103,108,121,112,104,115,32,99,111,114,114,117,112,116,101,100,32,111,114,32,109,105,115,115,105,110,103,32,102,105,101,108,100,115,0,0,0,0,0,248,100,1,0,1,0,0,0,8,101,1,0,2,0,0,0,32,101,1,0,3,0,0,0,56,101,1,0,4,0,0,0,72,101,1,0,5,0,0,0,104,101,1,0,6,0,0,0,136,101,1,0,7,0,0,0,160,101,1,0,8,0,0,0,184,101,1,0,9,0,0,0,200,101,1,0,10,0,0,0,232,101,1,0,11,0,0,0,8,102,1,0,12,0,0,0,24,102,1,0,16,0,0,0,48,102,1,0,17,0,0,0,72,102,1,0,18,0,0,0,96,102,1,0,19,0,0,0,128,102,1,0,20,0,0,0,160,102,1,0,21,0,0,0,176,102,1,0,22,0,0,0,200,102,1,0,23,0,0,0,216,102,1,0,32,0,0,0,240,102,1,0,33,0,0,0,8,103,1,0,34,0,0,0,32,103,1,0,35,0,0,0,56,103,1,0,36,0,0,0,80,103,1,0,37,0,0,0,104,103,1,0,38,0,0,0,136,103,1,0,39,0,0,0,160,103,1,0,40,0,0,0,192,103,1,0,48,0,0,0,216,103,1,0,49,0,0,0,240,103,1,0,64,0,0,0,32,1,4,0,65,0,0,0,8,104,1,0,81,0,0,0,24,104,1,0,82,0,0,0,48,104,1,0,83,0,0,0,72,104,1,0,84,0,0,0,96,104,1,0,85,0,0,0,120,104,1,0,86,0,0,0,152,104,1,0,87,0,0,0,176,104,1,0,88,0,0,0,200,104,1,0,96,0,0,0,224,104,1,0,97,0,0,0,248,104,1,0,98,0,0,0,16,105,1,0,99,0,0,0,32,105,1,0,112,0,0,0,64,105,1,0,128,0,0,0,96,105,1,0,129,0,0,0,112,105,1,0,130,0,0,0,136,105,1,0,131,0,0,0,152,105,1,0,132,0,0,0,168,105,1,0,133,0,0,0,184,105,1,0,134,0,0,0,208,105,1,0,135,0,0,0,232,105,1,0,136,0,0,0,0,106,1,0,137,0,0,0,40,106,1,0,138,0,0,0,56,106,1,0,139,0,0,0,80,106,1,0,140,0,0,0,112,106,1,0,141,0,0,0,144,106,1,0,142,0,0,0,184,106,1,0,143,0,0,0,208,106,1,0,144,0,0,0,248,106,1,0,145,0,0,0,24,107,1,0,146,0,0,0,48,107,1,0,147,0,0,0,88,107,1,0,148,0,0,0,128,107,1,0,149,0,0,0,160,107,1,0,150,0,0,0,192,107,1,0,151,0,0,0,232,107,1,0,152,0,0,0,0,108,1,0,153,0,0,0,32,108,1,0,154,0,0,0,56,108,1,0,155,0,0,0,96,108,1,0,160,0,0,0,128,108,1,0,161,0,0,0,152,108,1,0,162,0,0,0,184,108,1,0,163,0,0,0,192,108,1,0,164,0,0,0,224,108,1,0,176,0,0,0,0,109,1,0,177,0,0,0,32,109,1,0,178,0,0,0,56,109,1,0,179,0,0,0,80,109,1,0,180,0,0,0,112,109,1,0,181,0,0,0,136,109,1,0,182,0,0,0,168,109,1,0,183,0,0,0,200,109,1,0,184,0,0,0,224,109,1,0,185,0,0,0,240,109,1,0,186,0,0,0,24,110,1,0,0,0,0,0,0,0,0,0,46,46,92,46,46,92,83,112,97,114,107,121,45,99,111,114,101,92,101,120,116,92,102,114,101,101,116,121,112,101,45,103,108,92,116,101,120,116,117,114,101,45,102,111,110,116,46,99,0,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,103,108,121,112,104,95,100,101,108,101,116,101,0,0,0,0,116,101,120,116,117,114,101,95,103,108,121,112,104,95,103,101,116,95,107,101,114,110,105,110,103,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,102,111,110,116,95,103,101,110,101,114,97,116,101,95,107,101,114,110,105,110,103,0,0,0,102,105,108,101,110,97,109,101,0,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,102,111,110,116,95,110,101,119,95,102,114,111,109,95,102,105,108,101,0,0,0,0,0,0,116,101,120,116,117,114,101,95,102,111,110,116,95,100,101,108,101,116,101,0,0,0,0,0,116,101,120,116,117,114,101,95,102,111,110,116,95,108,111,97,100,95,103,108,121,112,104,115,0,0,0,0,0,0,0,0,99,104,97,114,99,111,100,101,115,0,0,0,0,0,0,0,70,84,95,69,114,114,111,114,32,40,108,105,110,101,32,37,100,44,32,99,111,100,101,32,48,120,37,48,50,120,41,32,58,32,37,115,10,0,0,0,70,84,95,69,114,114,111,114,32,40,48,120,37,48,50,120,41,32,58,32,37,115,10,0,84,101,120,116,117,114,101,32,97,116,108,97,115,32,105,115,32,102,117,108,108,32,40,108,105,110,101,32,37,100,41,10,0,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,102,111,110,116,95,103,101,116,95,103,108,121,112,104,0,0,115,101,108,102,45,62,102,105,108,101,110,97,109,101,0,0,115,101,108,102,45,62,97,116,108,97,115,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,116,101,120,116,117,114,101,95,102,111,110,116,95,105,110,105,116,0,0,0,0,0,0,0,115,101,108,102,45,62,115,105,122,101,32,62,32,48,0,0,40,115,101,108,102,45,62,108,111,99,97,116,105,111,110,32,61,61,32,84,69,88,84,85,82,69,95,70,79,78,84,95,70,73,76,69,32,38,38,32,115,101,108,102,45,62,102,105,108,101,110,97,109,101,41,32,124,124,32,40,115,101,108,102,45,62,108,111,99,97,116,105,111,110,32,61,61,32,84,69,88,84,85,82,69,95,70,79,78,84,95,77,69,77,79,82,89,32,38,38,32,115,101,108,102,45,62,109,101,109,111,114,121,46,98,97,115,101,32,38,38,32,115,101,108,102,45,62,109,101,109,111,114,121,46,115,105,122,101,41,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,1,0,108,105,98,114,97,114,121,0,116,101,120,116,117,114,101,95,102,111,110,116,95,108,111,97,100,95,102,97,99,101,0,0,115,105,122,101,0,0,0,0,105,116,101,109,95,115,105,122,101,0,0,0,0,0,0,0,46,46,92,46,46,92,83,112,97,114,107,121,45,99,111,114,101,92,101,120,116,92,102,114,101,101,116,121,112,101,45,103,108,92,118,101,99,116,111,114,46,99,0,0,0,0,0,0,118,101,99,116,111,114,95,110,101,119,0,0,0,0,0,0,108,105,110,101,32,37,100,58,32,78,111,32,109,111,114,101,32,109,101,109,111,114,121,32,102,111,114,32,97,108,108,111,99,97,116,105,110,103,32,100,97,116,97,10,0,0,0,0,115,101,108,102,0,0,0,0,118,101,99,116,111,114,95,100,101,108,101,116,101,0,0,0,118,101,99,116,111,114,95,103,101,116,0,0,0,0,0,0,115,101,108,102,45,62,115,105,122,101,0,0,0,0,0,0,105,110,100,101,120,32,60,32,115,101,108,102,45,62,115,105,122,101,0,0,0,0,0,0,118,101,99,116,111,114,95,98,97,99,107,0,0,0,0,0,118,101,99,116,111,114,95,115,105,122,101,0,0,0,0,0,118,101,99,116,111,114,95,99,108,101,97,114,0,0,0,0,118,101,99,116,111,114,95,115,101,116,0,0,0,0,0,0,118,101,99,116,111,114,95,105,110,115,101,114,116,0,0,0,105,110,100,101,120,32,60,61,32,115,101,108,102,45,62,115,105,122,101,0,0,0,0,0,118,101,99,116,111,114,95,101,114,97,115,101,95,114,97,110,103,101,0,0,0,0,0,0,102,105,114,115,116,32,60,32,115,101,108,102,45,62,115,105,122,101,0,0,0,0,0,0,108,97,115,116,32,60,32,115,101,108,102,45,62,115,105,122,101,43,49,0,0,0,0,0,102,105,114,115,116,32,60,32,108,97,115,116,0,0,0,0,118,101,99,116,111,114,95,101,114,97,115,101,0,0,0,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,37,115,32,40,37,108,100,32,101,108,101,109,101,110,116,115,32,111,102,32,37,108,100,32,98,121,116,101,115,32,101,97,99,104,41,0,0,0,0,0,0,0,135,22,153,62,162,69,22,63,213,120,233,61,0,0,0,0,0,0,0,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,34,84,114,97,110,115,102,101,114,70,117,110,99,116,105,111,110,34,32,116,97,103,0,0,0,0,0,76,90,87,0,0,0,0,0,80,97,99,107,66,105,116,115,0,0,0,0,0,0,0,0,84,104,117,110,100,101,114,83,99,97,110,0,0,0,0,0,78,101,88,84,0,0,0,0,79,108,100,45,115,116,121,108,101,32,74,80,69,71,0,0,67,67,73,84,84,32,82,76,69,0,0,0,0,0,0,0,67,67,73,84,84,32,82,76,69,47,87,0,0,0,0,0,67,67,73,84,84,32,71,114,111,117,112,32,51,0,0,0,67,67,73,84,84,32,71,114,111,117,112,32,52,0,0,0,73,83,79,32,74,66,73,71,0,0,0,0,0,0,0,0,68,101,102,108,97,116,101,0,65,100,111,98,101,68,101,102,108,97,116,101,0,0,0,0,80,105,120,97,114,76,111,103,0,0,0,0,0,0,0,0,83,71,73,76,111,103,0,0,83,71,73,76,111,103,50,52,0,0,0,0,0,0,0,0,76,90,77,65,0,0,0,0,184,203,4,0,1,0,0,0,155,0,0,0,16,118,1,0,5,0,0,0,156,0,0,0,24,118,1,0,5,128,0,0,157,0,0,0,40,118,1,0,41,128,0,0,158,0,0,0,56,118,1,0,254,127,0,0,159,0,0,0,128,170,4,0,7,0,0,0,160,0,0,0,64,118,1,0,6,0,0,0,161,0,0,0,80,118,1,0,2,0,0,0,162,0,0,0,96,118,1,0,3,128,0,0,163,0,0,0,112,118,1,0,3,0,0,0,164,0,0,0,128,118,1,0,4,0,0,0,165,0,0,0,144,118,1,0,101,135,0,0,166,0,0,0,160,118,1,0,178,128,0,0,167,0,0,0,168,118,1,0,8,0,0,0,167,0,0,0,184,118,1,0,141,128,0,0,168,0,0,0,200,118,1,0,116,135,0,0,169,0,0,0,208,118,1,0,117,135,0,0,169,0,0,0,224,118,1,0,109,136,0,0,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,115,32,99,111,109,112,114,101,115,115,105,111,110,32,115,117,112,112,111,114,116,32,105,115,32,110,111,116,32,99,111,110,102,105,103,117,114,101,100,0,0,0,0,0,0,0,0,115,99,97,110,108,105,110,101,0,0,0,0,0,0,0,0,67,111,109,112,114,101,115,115,105,111,110,32,97,108,103,111,114,105,116,104,109,32,100,111,101,115,32,110,111,116,32,115,117,112,112,111,114,116,32,114,97,110,100,111,109,32,97,99,99,101,115,115,0,0,0,0,0,0,0,0,0,0,0,0,37,115,32,37,115,32,100,101,99,111,100,105,110,103,32,105,115,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,0,0,0,0,0,0,67,111,109,112,114,101,115,115,105,111,110,32,115,99,104,101,109,101,32,37,117,32,37,115,32,100,101,99,111,100,105,110,103,32,105,115,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,0,0,0,37,115,32,37,115,32,101,110,99,111,100,105,110,103,32,105,115,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,0,0,0,0,0,0,67,111,109,112,114,101,115,115,105,111,110,32,115,99,104,101,109,101,32,37,117,32,37,115,32,101,110,99,111,100,105,110,103,32,105,115,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,100,105,114,46,99,0,0,0,0,0,0,0,84,73,70,70,65,100,118,97,110,99,101,68,105,114,101,99,116,111,114,121,0,0,0,0,83,97,110,105,116,121,32,99,104,101,99,107,32,111,110,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,32,102,97,105,108,101,100,0,0,37,115,58,32,69,114,114,111,114,32,102,101,116,99,104,105,110,103,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,0,0,0,0,0,0,37,115,58,32,69,114,114,111,114,32,102,101,116,99,104,105,110,103,32,100,105,114,101,99,116,111,114,121,32,108,105,110,107,0,0,0,0,0,0,0,95,84,73,70,70,86,71,101,116,70,105,101,108,100,0,0,37,115,58,32,73,110,118,97,108,105,100,32,37,115,116,97,103,32,34,37,115,34,32,40,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,99,111,100,101,99,41,0,112,115,101,117,100,111,45,0,116,118,45,62,99,111,117,110,116,32,61,61,32,49,0,0,78,111,110,115,116,97,110,100,97,114,100,32,116,105,108,101,32,119,105,100,116,104,32,37,100,44,32,99,111,110,118,101,114,116,32,102,105,108,101,0,78,111,110,115,116,97,110,100,97,114,100,32,116,105,108,101,32,108,101,110,103,116,104,32,37,100,44,32,99,111,110,118,101,114,116,32,102,105,108,101,0,0,0,0,0,0,0,0,37,115,58,32,83,111,114,114,121,44,32,99,97,110,110,111,116,32,110,101,115,116,32,83,117,98,73,70,68,115,0,0,37,115,58,32,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,115,112,97,99,101,32,102,111,114,32,108,105,115,116,32,111,102,32,99,117,115,116,111,109,32,118,97,108,117,101,115,0,0,37,115,58,32,66,97,100,32,102,105,101,108,100,32,116,121,112,101,32,37,100,32,102,111,114,32,34,37,115,34,0,0,102,105,112,45,62,102,105,101,108,100,95,119,114,105,116,101,99,111,117,110,116,61,61,84,73,70,70,95,86,65,82,73,65,66,76,69,50,0,0,0,95,84,73,70,70,86,83,101,116,70,105,101,108,100,0,0,37,115,58,32,78,117,108,108,32,99,111,117,110,116,32,102,111,114,32,34,37,115,34,32,40,116,121,112,101,32,37,100,44,32,119,114,105,116,101,99,111,117,110,116,32,37,100,44,32,112,97,115,115,99,111,117,110,116,32,37,100,41,0,0,99,117,115,116,111,109,32,116,97,103,32,98,105,110,97,114,121,32,111,98,106,101,99,116,0,0,0,0,0,0,0,0,37,115,58,32,66,97,100,32,118,97,108,117,101,32,37,117,32,102,111,114,32,34,37,115,34,32,116,97,103,0,0,0,85,110,107,110,111,119,110,0,37,115,58,32,66,97,100,32,118,97,108,117,101,32,37,102,32,102,111,114,32,34,37,115,34,32,116,97,103,0,0,0,84,73,70,70,83,101,116,70,105,101,108,100,0,0,0,0,37,115,58,32,73,110,118,97,108,105,100,32,73,110,107,78,97,109,101,115,32,118,97,108,117,101,59,32,101,120,112,101,99,116,105,110,103,32,37,100,32,110,97,109,101,115,44,32,102,111,117,110,100,32,37,100,0,0,0,0,0,0,0,0,37,115,58,32,85,110,107,110,111,119,110,32,37,115,116,97,103,32,37,117,0,0,0,0,37,115,58,32,67,97,110,110,111,116,32,109,111,100,105,102,121,32,116,97,103,32,34,37,115,34,32,119,104,105,108,101,32,119,114,105,116,105,110,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,0,0,0,160,133,1,0,1,0,0,0,0,0,0,0,56,0,0,0,144,125,1,0,84,97,103,32,0,0,0,0,95,84,73,70,70,83,101,116,117,112,70,105,101,108,100,115,0,0,0,0,0,0,0,0,83,101,116,116,105,110,103,32,117,112,32,102,105,101,108,100,32,105,110,102,111,32,102,97,105,108,101,100,0,0,0,0,95,84,73,70,70,77,101,114,103,101,70,105,101,108,100,115,0,0,0,0,0,0,0,0,102,111,114,32,102,105,101,108,100,115,32,97,114,114,97,121,0,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,102,105,101,108,100,115,32,97,114,114,97,121,0,84,73,70,70,70,105,101,108,100,87,105,116,104,84,97,103,0,0,0,0,0,0,0,0,73,110,116,101,114,110,97,108,32,101,114,114,111,114,44,32,117,110,107,110,111,119,110,32,116,97,103,32,48,120,37,120,0,0,0,0,0,0,0,0,84,97,103,32,37,100,0,0,84,73,70,70,77,101,114,103,101,70,105,101,108,100,73,110,102,111,0,0,0,0,0,0,102,111,114,32,102,105,101,108,100,115,32,97,114,114,97,121,0,0,0,0,0,0,0,0,154,130,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,184,20,5,0,0,0,0,0,157,130,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,176,20,5,0,0,0,0,0,34,136,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,16,86,5,0,0,0,0,0,36,136,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,56,86,5,0,0,0,0,0,39,136,0,0,255,255,255,255,3,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,65,0,1,1,112,86,5,0,0,0,0,0,40,136,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,112,133,1,0,0,0,0,0,0,144,0,0,4,0,4,0,7,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,1,0,192,86,5,0,0,0,0,0,3,144,0,0,20,0,20,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,224,86,5,0,0,0,0,0,4,144,0,0,20,0,20,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,40,87,5,0,0,0,0,0,1,145,0,0,4,0,4,0,7,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,1,0,112,87,5,0,0,0,0,0,2,145,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,168,87,5,0,0,0,0,0,1,146,0,0,1,0,1,0,10,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,168,39,5,0,0,0,0,0,2,146,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,208,39,5,0,0,0,0,0,3,146,0,0,1,0,1,0,10,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,224,39,5,0,0,0,0,0,4,146,0,0,1,0,1,0,10,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,248,87,5,0,0,0,0,0,5,146,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,32,88,5,0,0,0,0,0,6,146,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,80,88,5,0,0,0,0,0,7,146,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,8,19,5,0,0,0,0,0,8,146,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,24,46,5,0,0,0,0,0,9,146,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,152,88,5,0,0,0,0,0,10,146,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,56,25,5,0,0,0,0,0,20,146,0,0,255,255,255,255,3,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,65,0,1,1,184,88,5,0,0,0,0,0,124,146,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,216,88,5,0,0,0,0,0,134,146,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,0,89,5,0,0,0,0,0,144,146,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,32,89,5,0,0,0,0,0,145,146,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,72,89,5,0,0,0,0,0,146,146,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,128,89,5,0,0,0,0,0,0,160,0,0,4,0,4,0,7,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,1,0,144,133,1,0,0,0,0,0,1,160,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,40,19,5,0,0,0,0,0,2,160,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,1,0,0,90,5,0,0,0,0,0,3,160,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,1,0,40,90,5,0,0,0,0,0,4,160,0,0,13,0,13,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,80,90,5,0,0,0,0,0,11,162,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,152,90,5,0,0,0,0,0,12,162,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,184,90,5,0,0,0,0,0,14,162,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,248,90,5,0,0,0,0,0,15,162,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,48,91,5,0,0,0,0,0,16,162,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,104,91,5,0,0,0,0,0,20,162,0,0,2,0,2,0,3,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,65,0,1,0,168,91,5,0,0,0,0,0,21,162,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,208,91,5,0,0,0,0,0,23,162,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,240,91,5,0,0,0,0,0,0,163,0,0,1,0,1,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,65,0,1,0,32,50,5,0,0,0,0,0,1,163,0,0,1,0,1,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,65,0,1,0,40,92,5,0,0,0,0,0,2,163,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,144,85,5,0,0,0,0,0,1,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,88,92,5,0,0,0,0,0,2,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,248,18,5,0,0,0,0,0,3,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,232,18,5,0,0,0,0,0,4,164,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,160,92,5,0,0,0,0,0,5,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,208,92,5,0,0,0,0,0,6,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,8,93,5,0,0,0,0,0,7,164,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,56,93,5,0,0,0,0,0,8,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,80,19,5,0,0,0,0,0,9,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,120,19,5,0,0,0,0,0,10,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,136,19,5,0,0,0,0,0,11,164,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,88,93,5,0,0,0,0,0,12,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,152,93,5,0,0,0,0,0,32,164,0,0,33,0,33,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,88,54,5,0,0,0,0,0,79,112,116,111,101,108,101,99,116,114,105,99,67,111,110,118,101,114,115,105,111,110,70,97,99,116,111,114,0,0,0,0,70,108,97,115,104,112,105,120,86,101,114,115,105,111,110,0,254,0,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,5,0,1,0,40,155,1,0,0,0,0,0,255,0,0,0,1,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,1,0,56,155,1,0,0,0,0,0,0,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,1,0,0,0,64,79,5,0,0,0,0,0,1,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,1,0,1,0,80,79,5,0,0,0,0,0,2,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,6,0,0,0,96,79,5,0,0,0,0,0,3,1,0,0,255,255,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,7,0,0,0,144,79,5,0,0,0,0,0,6,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,8,0,0,0,184,79,5,0,0,0,0,0,7,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,9,0,1,0,72,155,1,0,0,0,0,0,8,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,88,155,1,0,0,0,0,0,9,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,104,155,1,0,0,0,0,0,10,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,10,0,0,0,240,79,5,0,0,0,0,0,13,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,0,80,5,0,0,0,0,0,14,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,16,80,5,0,0,0,0,0,15,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,56,80,5,0,0,0,0,0,16,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,104,80,5,0,0,0,0,0,17,1,0,0,255,255,255,255,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,144,80,5,0,0,0,0,0,18,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,15,0,0,0,184,80,5,0,0,0,0,0,21,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,16,0,0,0,224,80,5,0,0,0,0,0,22,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,17,0,0,0,8,81,5,0,0,0,0,0,23,1,0,0,255,255,255,255,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,56,81,5,0,0,0,0,0,24,1,0,0,254,255,255,255,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,18,0,1,0,120,155,1,0,0,0,0,0,25,1,0,0,254,255,255,255,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,19,0,1,0,136,155,1,0,0,0,0,0,26,1,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,3,0,1,0,104,81,5,0,0,0,0,0,27,1,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,3,0,1,0,160,81,5,0,0,0,0,0,28,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,20,0,0,0,216,81,5,0,0,0,0,0,29,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,8,82,5,0,0,0,0,0,30,1,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,4,0,1,0,48,82,5,0,0,0,0,0,31,1,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,4,0,1,0,88,82,5,0,0,0,0,0,32,1,0,0,255,255,255,255,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,155,1,0,0,0,0,0,33,1,0,0,255,255,255,255,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,155,1,0,0,0,0,0,34,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,184,155,1,0,0,0,0,0,35,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,208,155,1,0,0,0,0,0,40,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,22,0,1,0,128,82,5,0,0,0,0,0,41,1,0,0,2,0,2,0,3,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,23,0,1,0,176,82,5,0,0,0,0,0,44,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,232,155,1,0,0,0,0,0,45,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,44,0,1,0,208,82,5,0,0,0,0,0,49,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,224,19,5,0,0,0,0,0,50,1,0,0,20,0,20,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,16,83,5,0,0,0,0,0,59,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,128,32,5,0,0,0,0,0,60,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,96,83,5,0,0,0,0,0,62,1,0,0,2,0,2,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,1,0,24,29,5,0,0,0,0,0,63,1,0,0,6,0,6,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,1,0,192,83,5,0,0,0,0,0,64,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,26,0,1,0,0,156,1,0,0,0,0,0,65,1,0,0,2,0,2,0,3,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,37,0,1,0,16,156,1,0,0,0,0,0,66,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,2,0,0,0,32,156,1,0,0,0,0,0,67,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,2,0,0,0,48,156,1,0,0,0,0,0,68,1,0,0,255,255,1,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,112,164,1,0,0,0,0,0,69,1,0,0,255,255,1,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,64,156,1,0,0,0,0,0,74,1,0,0,255,255,255,255,18,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,49,0,1,1,80,156,1,0,104,124,1,0,76,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,0,0,192,78,3,0,0,0,0,0,77,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,46,0,1,1,88,156,1,0,0,0,0,0,78,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,104,156,1,0,0,0,0,0,80,1,0,0,2,0,2,0,3,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,65,0,0,0,120,156,1,0,0,0,0,0,81,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,136,156,1,0,0,0,0,0,82,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,31,0,0,1,152,156,1,0,0,0,0,0,83,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,32,0,0,0,168,156,1,0,0,0,0,0,84,1,0,0,254,255,255,255,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,33,0,1,0,184,156,1,0,0,0,0,0,85,1,0,0,254,255,255,255,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,34,0,1,0,200,156,1,0,0,0,0,0,87,1,0,0,255,255,253,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,1,216,156,1,0,0,0,0,0,88,1,0,0,1,0,1,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,232,156,1,0,0,0,0,0,88,1,0,0,1,0,1,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,232,156,1,0,0,0,0,0,89,1,0,0,1,0,1,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,248,156,1,0,0,0,0,0,17,2,0,0,3,0,3,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,0,0,128,84,5,0,0,0,0,0,18,2,0,0,2,0,2,0,3,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,39,0,0,0,8,157,1,0,0,0,0,0,19,2,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,40,0,0,0,0,85,5,0,0,0,0,0,20,2,0,0,6,0,6,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,41,0,1,0,48,85,5,0,0,0,0,0,188,2,0,0,253,255,253,255,1,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,65,0,0,1,8,196,4,0,0,0,0,0,227,128,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,31,0,0,0,32,157,1,0,0,0,0,0,228,128,0,0,254,255,255,255,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,32,0,0,0,48,157,1,0,0,0,0,0,229,128,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,35,0,0,0,64,157,1,0,0,0,0,0,230,128,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,36,0,0,0,80,157,1,0,0,0,0,0,20,130,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,1,0,96,157,1,0,0,0,0,0,21,130,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,1,0,112,157,1,0,0,0,0,0,22,130,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,128,157,1],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+92160);allocate([23,130,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,144,157,1,0,0,0,0,0,24,130,0,0,1,0,1,0,11,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,65,0,1,0,168,157,1,0,0,0,0,0,25,130,0,0,16,0,16,0,11,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,1,0,192,157,1,0,0,0,0,0,26,130,0,0,16,0,16,0,11,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,1,0,216,157,1,0,0,0,0,0,141,130,0,0,2,0,2,0,3,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,65,0,0,0,120,85,5,0,0,0,0,0,142,130,0,0,4,0,4,0,1,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,0,0,144,85,5,0,0,0,0,0,152,130,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,136,32,5,0,0,0,0,0,187,131,0,0,253,255,253,255,4,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,65,0,0,1,240,157,1,0,0,0,0,0,73,134,0,0,253,255,253,255,1,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,65,0,0,1,0,158,1,0,0,0,0,0,105,135,0,0,1,0,1,0,18,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,65,0,0,0,16,158,1,0,120,124,1,0,115,135,0,0,253,255,253,255,7,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,65,0,0,1,32,158,1,0,0,0,0,0,37,136,0,0,1,0,1,0,18,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,65,0,0,0,48,158,1,0,0,0,0,0,92,136,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,65,0,1,0,64,158,1,0,0,0,0,0,93,136,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,65,0,1,0,80,158,1,0,0,0,0,0,94,136,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,65,0,1,0,96,158,1,0,0,0,0,0,95,136,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,65,0,1,0,112,158,1,0,0,0,0,0,63,146,0,0,1,0,1,0,12,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,120,158,1,0,0,0,0,0,5,160,0,0,1,0,1,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,128,158,1,0,0,0,0,0,18,198,0,0,4,0,4,0,1,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,0,0,160,158,1,0,0,0,0,0,19,198,0,0,4,0,4,0,1,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,0,0,176,158,1,0,0,0,0,0,20,198,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,200,158,1,0,0,0,0,0,21,198,0,0,255,255,255,255,1,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,224,158,1,0,0,0,0,0,22,198,0,0,255,255,255,255,1,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,0,1,248,158,1,0,0,0,0,0,23,198,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,0,0,8,159,1,0,0,0,0,0,24,198,0,0,255,255,255,255,3,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,65,0,0,1,72,46,5,0,0,0,0,0,25,198,0,0,2,0,2,0,3,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,65,0,0,0,24,159,1,0,0,0,0,0,26,198,0,0,255,255,255,255,5,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,144,40,5,0,0,0,0,0,27,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,48,159,1,0,0,0,0,0,28,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,72,159,1,0,0,0,0,0,29,198,0,0,255,255,255,255,4,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,65,0,0,1,96,159,1,0,0,0,0,0,30,198,0,0,2,0,2,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,0,0,112,159,1,0,0,0,0,0,92,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,128,159,1,0,0,0,0,0,31,198,0,0,2,0,2,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,0,0,152,159,1,0,0,0,0,0,32,198,0,0,2,0,2,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,0,0,176,159,1,0,0,0,0,0,33,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,192,159,1,0,0,0,0,0,34,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,208,159,1,0,0,0,0,0,35,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,224,159,1,0,0,0,0,0,36,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,248,159,1,0,0,0,0,0,37,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,16,160,1,0,0,0,0,0,38,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,40,160,1,0,0,0,0,0,39,198,0,0,255,255,255,255,5,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,64,160,1,0,0,0,0,0,40,198,0,0,255,255,255,255,5,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,80,160,1,0,0,0,0,0,41,198,0,0,2,0,2,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,0,0,96,160,1,0,0,0,0,0,42,198,0,0,1,0,1,0,10,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,112,160,1,0,0,0,0,0,43,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,136,160,1,0,0,0,0,0,44,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,152,160,1,0,0,0,0,0,45,198,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,0,0,176,160,1,0,0,0,0,0,46,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,192,160,1,0,0,0,0,0,47,198,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,216,160,1,0,0,0,0,0,48,198,0,0,4,0,4,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,0,0,136,29,5,0,0,0,0,0,49,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,240,160,1,0,0,0,0,0,50,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,8,161,1,0,0,0,0,0,51,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,32,161,1,0,0,0,0,0,52,198,0,0,255,255,255,255,1,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,0,1,48,161,1,0,0,0,0,0,53,198,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,0,0,64,161,1,0,0,0,0,0,90,198,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,0,0,80,161,1,0,0,0,0,0,91,198,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,0,0,104,161,1,0,0,0,0,0,93,198,0,0,16,0,16,0,1,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,0,0,128,161,1,0,0,0,0,0,139,198,0,0,255,255,255,255,1,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,144,161,1,0,0,0,0,0,140,198,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,0,1,168,161,1,0,0,0,0,0,141,198,0,0,4,0,4,0,4,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,65,0,0,0,192,161,1,0,0,0,0,0,142,198,0,0,255,255,255,255,4,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,65,0,0,1,208,161,1,0,0,0,0,0,143,198,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,0,1,224,161,1,0,0,0,0,0,144,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,248,161,1,0,0,0,0,0,145,198,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,0,1,16,162,1,0,0,0,0,0,146,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,40,162,1,0,0,0,0,0,27,0,1,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,64,162,1,0,0,0,0,0,90,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,0,0,80,162,1,0,0,0,0,0,144,1,0,0,1,0,1,0,18,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,65,0,0,0,88,162,1,0,0,0,0,0,145,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,0,0,112,162,1,0,0,0,0,0,146,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,65,0,0,0,128,162,1,0,0,0,0,0,147,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,0,0,144,162,1,0,0,0,0,0,148,1,0,0,4,0,4,0,1,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,0,0,160,162,1,0,0,0,0,0,149,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,65,0,0,0,176,162,1,0,0,0,0,0,177,1,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,192,162,1,0,0,0,0,0,178,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,65,0,0,1,200,162,1,0,0,0,0,0,179,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,0,0,216,162,1,0,0,0,0,0,47,2,0,0,255,255,255,255,4,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,65,0,0,1,232,162,1,0,0,0,0,0,172,135,0,0,2,0,2,0,4,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,65,0,0,0,248,162,1,0,0,0,0,0,0,0,0,0,83,117,98,102,105,108,101,84,121,112,101,0,0,0,0,0,79,108,100,83,117,98,102,105,108,101,84,121,112,101,0,0,84,104,114,101,115,104,104,111,108,100,105,110,103,0,0,0,67,101,108,108,87,105,100,116,104,0,0,0,0,0,0,0,67,101,108,108,76,101,110,103,116,104,0,0,0,0,0,0,77,105,110,83,97,109,112,108,101,86,97,108,117,101,0,0,77,97,120,83,97,109,112,108,101,86,97,108,117,101,0,0,70,114,101,101,79,102,102,115,101,116,115,0,0,0,0,0,70,114,101,101,66,121,116,101,67,111,117,110,116,115,0,0,71,114,97,121,82,101,115,112,111,110,115,101,85,110,105,116,0,0,0,0,0,0,0,0,71,114,97,121,82,101,115,112,111,110,115,101,67,117,114,118,101,0,0,0,0,0,0,0,67,111,108,111,114,82,101,115,112,111,110,115,101,85,110,105,116,0,0,0,0,0,0,0,67,111,108,111,114,77,97,112,0,0,0,0,0,0,0,0,72,97,108,102,116,111,110,101,72,105,110,116,115,0,0,0,84,105,108,101,87,105,100,116,104,0,0,0,0,0,0,0,84,105,108,101,76,101,110,103,116,104,0,0,0,0,0,0,84,105,108,101,66,121,116,101,67,111,117,110,116,115,0,0,83,117,98,73,70,68,0,0,73,110,107,78,97,109,101,115,0,0,0,0,0,0,0,0,78,117,109,98,101,114,79,102,73,110,107,115,0,0,0,0,68,111,116,82,97,110,103,101,0,0,0,0,0,0,0,0,84,97,114,103,101,116,80,114,105,110,116,101,114,0,0,0,69,120,116,114,97,83,97,109,112,108,101,115,0,0,0,0,83,97,109,112,108,101,70,111,114,109,97,116,0,0,0,0,83,77,105,110,83,97,109,112,108,101,86,97,108,117,101,0,83,77,97,120,83,97,109,112,108,101,86,97,108,117,101,0,67,108,105,112,80,97,116,104,0,0,0,0,0,0,0,0,88,67,108,105,112,80,97,116,104,85,110,105,116,115,0,0,89,67,108,105,112,80,97,116,104,85,110,105,116,115,0,0,89,67,98,67,114,83,117,98,115,97,109,112,108,105,110,103,0,0,0,0,0,0,0,0,77,97,116,116,101,105,110,103,0,0,0,0,0,0,0,0,68,97,116,97,84,121,112,101,0,0,0,0,0,0,0,0,73,109,97,103,101,68,101,112,116,104,0,0,0,0,0,0,84,105,108,101,68,101,112,116,104,0,0,0,0,0,0,0,73,109,97,103,101,70,117,108,108,87,105,100,116,104,0,0,73,109,97,103,101,70,117,108,108,76,101,110,103,116,104,0,84,101,120,116,117,114,101,70,111,114,109,97,116,0,0,0,84,101,120,116,117,114,101,87,114,97,112,77,111,100,101,115,0,0,0,0,0,0,0,0,70,105,101,108,100,79,102,86,105,101,119,67,111,116,97,110,103,101,110,116,0,0,0,0,77,97,116,114,105,120,87,111,114,108,100,84,111,83,99,114,101,101,110,0,0,0,0,0,77,97,116,114,105,120,87,111,114,108,100,84,111,67,97,109,101,114,97,0,0,0,0,0,82,105,99,104,84,73,70,70,73,80,84,67,0,0,0,0,80,104,111,116,111,115,104,111,112,0,0,0,0,0,0,0,69,88,73,70,73,70,68,79,102,102,115,101,116,0,0,0,73,67,67,32,80,114,111,102,105,108,101,0,0,0,0,0,71,80,83,73,70,68,79,102,102,115,101,116,0,0,0,0,70,97,120,82,101,99,118,80,97,114,97,109,115,0,0,0,70,97,120,83,117,98,65,100,100,114,101,115,115,0,0,0,70,97,120,82,101,99,118,84,105,109,101,0,0,0,0,0,70,97,120,68,99,115,0,0,83,116,111,78,105,116,115,0,73,110,116,101,114,111,112,101,114,97,98,105,108,105,116,121,73,70,68,79,102,102,115,101,116,0,0,0,0,0,0,0,68,78,71,86,101,114,115,105,111,110,0,0,0,0,0,0,68,78,71,66,97,99,107,119,97,114,100,86,101,114,115,105,111,110,0,0,0,0,0,0,85,110,105,113,117,101,67,97,109,101,114,97,77,111,100,101,108,0,0,0,0,0,0,0,76,111,99,97,108,105,122,101,100,67,97,109,101,114,97,77,111,100,101,108,0,0,0,0,67,70,65,80,108,97,110,101,67,111,108,111,114,0,0,0,67,70,65,76,97,121,111,117,116,0,0,0,0,0,0,0,66,108,97,99,107,76,101,118,101,108,82,101,112,101,97,116,68,105,109,0,0,0,0,0,66,108,97,99,107,76,101,118,101,108,68,101,108,116,97,72,0,0,0,0,0,0,0,0,66,108,97,99,107,76,101,118,101,108,68,101,108,116,97,86,0,0,0,0,0,0,0,0,87,104,105,116,101,76,101,118,101,108,0,0,0,0,0,0,68,101,102,97,117,108,116,83,99,97,108,101,0,0,0,0,66,101,115,116,81,117,97,108,105,116,121,83,99,97,108,101,0,0,0,0,0,0,0,0,68,101,102,97,117,108,116,67,114,111,112,79,114,105,103,105,110,0,0,0,0,0,0,0,68,101,102,97,117,108,116,67,114,111,112,83,105,122,101,0,67,111,108,111,114,77,97,116,114,105,120,49,0,0,0,0,67,111,108,111,114,77,97,116,114,105,120,50,0,0,0,0,67,97,109,101,114,97,67,97,108,105,98,114,97,116,105,111,110,49,0,0,0,0,0,0,67,97,109,101,114,97,67,97,108,105,98,114,97,116,105,111,110,50,0,0,0,0,0,0,82,101,100,117,99,116,105,111,110,77,97,116,114,105,120,49,0,0,0,0,0,0,0,0,82,101,100,117,99,116,105,111,110,77,97,116,114,105,120,50,0,0,0,0,0,0,0,0,65,110,97,108,111,103,66,97,108,97,110,99,101,0,0,0,65,115,83,104,111,116,78,101,117,116,114,97,108,0,0,0,65,115,83,104,111,116,87,104,105,116,101,88,89,0,0,0,66,97,115,101,108,105,110,101,69,120,112,111,115,117,114,101,0,0,0,0,0,0,0,0,66,97,115,101,108,105,110,101,78,111,105,115,101,0,0,0,66,97,115,101,108,105,110,101,83,104,97,114,112,110,101,115,115,0,0,0,0,0,0,0,66,97,121,101,114,71,114,101,101,110,83,112,108,105,116,0,76,105,110,101,97,114,82,101,115,112,111,110,115,101,76,105,109,105,116,0,0,0,0,0,67,97,109,101,114,97,83,101,114,105,97,108,78,117,109,98,101,114,0,0,0,0,0,0,67,104,114,111,109,97,66,108,117,114,82,97,100,105,117,115,0,0,0,0,0,0,0,0,65,110,116,105,65,108,105,97,115,83,116,114,101,110,103,116,104,0,0,0,0,0,0,0,83,104,97,100,111,119,83,99,97,108,101,0,0,0,0,0,68,78,71,80,114,105,118,97,116,101,68,97,116,97,0,0,77,97,107,101,114,78,111,116,101,83,97,102,101,116,121,0,67,97,108,105,98,114,97,116,105,111,110,73,108,108,117,109,105,110,97,110,116,49,0,0,67,97,108,105,98,114,97,116,105,111,110,73,108,108,117,109,105,110,97,110,116,50,0,0,82,97,119,68,97,116,97,85,110,105,113,117,101,73,68,0,79,114,105,103,105,110,97,108,82,97,119,70,105,108,101,78,97,109,101,0,0,0,0,0,79,114,105,103,105,110,97,108,82,97,119,70,105,108,101,68,97,116,97,0,0,0,0,0,65,99,116,105,118,101,65,114,101,97,0,0,0,0,0,0,77,97,115,107,101,100,65,114,101,97,115,0,0,0,0,0,65,115,83,104,111,116,73,67,67,80,114,111,102,105,108,101,0,0,0,0,0,0,0,0,65,115,83,104,111,116,80,114,101,80,114,111,102,105,108,101,77,97,116,114,105,120,0,0,67,117,114,114,101,110,116,73,67,67,80,114,111,102,105,108,101,0,0,0,0,0,0,0,67,117,114,114,101,110,116,80,114,101,80,114,111,102,105,108,101,77,97,116,114,105,120,0,80,101,114,83,97,109,112,108,101,0,0,0,0,0,0,0,73,110,100,101,120,101,100,0,71,108,111,98,97,108,80,97,114,97,109,101,116,101,114,115,73,70,68,0,0,0,0,0,80,114,111,102,105,108,101,84,121,112,101,0,0,0,0,0,70,97,120,80,114,111,102,105,108,101,0,0,0,0,0,0,67,111,100,105,110,103,77,101,116,104,111,100,115,0,0,0,86,101,114,115,105,111,110,89,101,97,114,0,0,0,0,0,77,111,100,101,78,117,109,98,101,114,0,0,0,0,0,0,68,101,99,111,100,101,0,0,73,109,97,103,101,66,97,115,101,67,111,108,111,114,0,0,84,56,50,79,112,116,105,111,110,115,0,0,0,0,0,0,83,116,114,105,112,82,111,119,67,111,117,110,116,115,0,0,73,109,97,103,101,76,97,121,101,114,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,114,101,97,100,32,100,105,114,101,99,116,111,114,121,32,97,116,32,111,102,102,115,101,116,32,37,108,117,0,0,85,110,107,110,111,119,110,32,102,105,101,108,100,32,119,105,116,104,32,116,97,103,32,37,100,32,40,48,120,37,120,41,32,101,110,99,111,117,110,116,101,114,101,100,0,0,0,0,82,101,103,105,115,116,101,114,105,110,103,32,97,110,111,110,121,109,111,117,115,32,102,105,101,108,100,32,119,105,116,104,32,116,97,103,32,37,100,32,40,48,120,37,120,41,32,102,97,105,108,101,100,0,0,0,102,105,105,32,33,61,32,70,65,73,76,69,68,95,70,73,73,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,100,105,114,114,101,97,100,46,99,0,0,0,84,73,70,70,82,101,97,100,68,105,114,101,99,116,111,114,121,0,0,0,0,0,0,0,80,108,97,110,97,114,99,111,110,102,105,103,32,116,97,103,32,118,97,108,117,101,32,97,115,115,117,109,101,100,32,105,110,99,111,114,114,101,99,116,44,32,97,115,115,117,109,105,110,103,32,100,97,116,97,32,105,115,32,99,111,110,116,105,103,32,105,110,115,116,101,97,100,32,111,102,32,99,104,117,110,107,121,0,0,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,122,101,114,111,32,110,117,109,98,101,114,32,111,102,32,37,115,0,116,105,108,101,115,0,0,0,115,116,114,105,112,115,0,0,84,105,108,101,79,102,102,115,101,116,115,0,0,0,0,0,117,110,107,110,111,119,110,32,116,97,103,110,97,109,101,0,73,103,110,111,114,105,110,103,32,37,115,32,115,105,110,99,101,32,66,105,116,115,80,101,114,83,97,109,112,108,101,32,116,97,103,32,110,111,116,32,102,111,117,110,100,0,0,0,80,104,111,116,111,109,101,116,114,105,99,32,116,97,103,32,105,115,32,109,105,115,115,105,110,103,44,32,97,115,115,117,109,105,110,103,32,100,97,116,97,32,105,115,32,89,67,98,67,114,0,0,0,0,0,0,80,104,111,116,111,109,101,116,114,105,99,32,116,97,103,32,118,97,108,117,101,32,97,115,115,117,109,101,100,32,105,110,99,111,114,114,101,99,116,44,32,97,115,115,117,109,105,110,103,32,100,97,116,97,32,105,115,32,89,67,98,67,114,32,105,110,115,116,101,97,100,32,111,102,32,82,71,66,0,0,66,105,116,115,80,101,114,83,97,109,112,108,101,32,116,97,103,32,105,115,32,109,105,115,115,105,110,103,44,32,97,115,115,117,109,105,110,103,32,56,32,98,105,116,115,32,112,101,114,32,115,97,109,112,108,101,0,0,0,0,0,0,0,0,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,32,116,97,103,32,105,115,32,109,105,115,115,105,110,103,44,32,97,115,115,117,109,105,110,103,32,99,111,114,114,101,99,116,32,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,32,118,97,108,117,101,32,105,115,32,51,0,0,0,0,0,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,32,116,97,103,32,105,115,32,109,105,115,115,105,110,103,44,32,97,112,112,108,121,105,110,103,32,99,111,114,114,101,99,116,32,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,32,118,97,108,117,101,32,111,102,32,51,0,0,0,0,0,67,111,108,111,114,109,97,112,0,0,0,0,0,0,0,0,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,105,115,32,109,105,115,115,105,110,103,32,114,101,113,117,105,114,101,100,32,34,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,34,32,102,105,101,108,100,44,32,99,97,108,99,117,108,97,116,105,110,103,32,102,114,111,109,32,105,109,97,103,101,108,101,110,103,116,104,0,0,0,0,0,0,0,0,66,111,103,117,115,32,34,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,34,32,102,105,101,108,100,44,32,105,103,110,111,114,105,110,103,32,97,110,100,32,99,97,108,99,117,108,97,116,105,110,103,32,102,114,111,109,32,105,109,97,103,101,108,101,110,103,116,104,0,0,0,0,0,0,0,0,87,114,111,110,103,32,34,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,34,32,102,105,101,108,100,44,32,105,103,110,111,114,105,110,103,32,97,110,100,32,99,97,108,99,117,108,97,116,105,110,103,32,102,114,111,109,32,105,109,97,103,101,108,101,110,103,116,104,0,0,0,0,0,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,122,101,114,111,32,115,99,97,110,108,105,110,101,32,115,105,122,101,0,0,0,0,0,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,122,101,114,111,32,116,105,108,101,32,115,105,122,101,0,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,122,101,114,111,32,115,116,114,105,112,32,115,105,122,101,0,0,0,70,97,105,108,101,100,32,116,111,32,114,101,97,100,32,99,117,115,116,111,109,32,100,105,114,101,99,116,111,114,121,32,97,116,32,111,102,102,115,101,116,32,37,108,117,0,0,0,84,73,70,70,82,101,97,100,67,117,115,116,111,109,68,105,114,101,99,116,111,114,121,0,87,114,111,110,103,32,100,97,116,97,32,116,121,112,101,32,37,100,32,102,111,114,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,0,0,0,0,0,0,0,102,111,114,32,99,104,111,112,112,101,100,32,34,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,34,32,97,114,114,97,121,0,0,0,0,0,102,111,114,32,99,104,111,112,112,101,100,32,34,83,116,114,105,112,79,102,102,115,101,116,115,34,32,97,114,114,97,121,0,0,0,0,0,0,0,0,84,73,70,70,70,101,116,99,104,83,117,98,106,101,99,116,68,105,115,116,97,110,99,101,0,0,0,0,0,0,0,0,84,73,70,70,70,101,116,99,104,83,116,114,105,112,84,104,105,110,103,0,0,0,0,0,102,111,114,32,115,116,114,105,112,32,97,114,114,97,121,0,40,116,109,115,105,122,101,95,116,41,100,97,116,97,115,105,122,101,62,48,0,0,0,0,84,73,70,70,82,101,97,100,68,105,114,69,110,116,114,121,65,114,114,97,121,0,0,0,82,101,97,100,68,105,114,69,110,116,114,121,65,114,114,97,121,0,0,0,0,0,0,0,84,73,70,70,70,101,116,99,104,78,111,114,109,97,108,84,97,103,0,0,0,0,0,0,78,111,32,100,101,102,105,110,105,116,105,111,110,32,102,111,117,110,100,32,102,111,114,32,116,97,103,32,37,100,0,0,102,105,112,32,33,61,32,78,85,76,76,0,0,0,0,0,102,105,112,45,62,115,101,116,95,102,105,101,108,100,95,116,121,112,101,33,61,84,73,70,70,95,83,69,84,71,69,84,95,79,84,72,69,82,0,0,102,105,112,45,62,115,101,116,95,102,105,101,108,100,95,116,121,112,101,33,61,84,73,70,70,95,83,69,84,71,69,84,95,73,78,84,0,0,0,0,102,105,112,45,62,102,105,101,108,100,95,112,97,115,115,99,111,117,110,116,61,61,48,0,65,83,67,73,73,32,118,97,108,117,101,32,102,111,114,32,116,97,103,32,34,37,115,34,32,99,111,110,116,97,105,110,115,32,110,117,108,108,32,98,121,116,101,32,105,110,32,118,97,108,117,101,59,32,118,97,108,117,101,32,105,110,99,111,114,114,101,99,116,108,121,32,116,114,117,110,99,97,116,101,100,32,100,117,114,105,110,103,32,114,101,97,100,105,110,103,32,100,117,101,32,116,111,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,108,105,109,105,116,97,116,105,111,110,115,0,0,0,0,0,0,65,83,67,73,73,32,118,97,108,117,101,32,102,111,114,32,116,97,103,32,34,37,115,34,32,100,111,101,115,32,110,111,116,32,101,110,100,32,105,110,32,110,117,108,108,32,98,121,116,101,0,0,0,0,0,0,102,105,112,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,49,0,102,105,112,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,50,0,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,32,102,111,114,32,102,105,101,108,100,32,34,37,115,34,44,32,101,120,112,101,99,116,101,100,32,50,44,32,103,111,116,32,37,100,0,0,0,0,0,0,102,105,112,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,62,61,49,0,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,32,102,111,114,32,102,105,101,108,100,32,34,37,115,34,44,32,101,120,112,101,99,116,101,100,32,37,100,44,32,103,111,116,32,37,100,0,0,0,0,0,102,105,112,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,84,73,70,70,95,86,65,82,73,65,66,76,69,0,0,0,0,0,102,105,112,45,62,102,105,101,108,100,95,112,97,115,115,99,111,117,110,116,61,61,49,0,102,105,112,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,84,73,70,70,95,86,65,82,73,65,66,76,69,50,0,0,0,0,112,100,105,114,0,0,0,0,84,73,70,70,70,101,116,99,104,68,105,114,101,99,116,111,114,121,0,0,0,0,0,0,83,97,110,105,116,121,32,99,104,101,99,107,32,111,110,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,32,102,97,105,108,101,100,44,32,116,104,105,115,32,105,115,32,112,114,111,98,97,98,108,121,32,110,111,116,32,97,32,118,97,108,105,100,32,73,70,68,32,111,102,102,115,101,116,0,116,111,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,0,0,37,46,49,48,48,115,58,32,67,97,110,32,110,111,116,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,0,0,0,0,0,67,97,110,32,110,111,116,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,0,0,0,0,0,0,0,83,97,110,105,116,121,32,99,104,101,99,107,32,111,110,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,32,102,97,105,108,101,100,44,32,122,101,114,111,32,116,97,103,32,100,105,114,101,99,116,111,114,105,101,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,0,67,97,110,32,110,111,116,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,0,0,0,0,0,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,32,102,111,114,32,102,105,101,108,100,32,34,37,115,34,32,40,37,108,117,44,32,101,120,112,101,99,116,105,110,103,32,37,117,41,59,32,116,97,103,32,105,103,110,111,114,101,100,0,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,32,102,111,114,32,102,105,101,108,100,32,34,37,115,34,32,40,37,108,117,44,32,101,120,112,101,99,116,105,110,103,32,37,117,41,59,32,116,97,103,32,116,114,105,109,109,101,100,0,84,73,70,70,67,104,101,99,107,68,105,114,79,102,102,115,101,116,0,0,0,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,109,111,114,101,32,116,104,97,110,32,54,53,53,51,53,32,84,73,70,70,32,100,105,114,101,99,116,111,114,105,101,115,0,0,102,111,114,32,73,70,68,32,108,105,115,116,0,0,0,0,77,105,115,115,105,110,103,82,101,113,117,105,114,101,100,0,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,105,115,32,109,105,115,115,105,110,103,32,114,101,113,117,105,114,101,100,32,34,37,115,34,32,102,105,101,108,100,0,0,0,69,115,116,105,109,97,116,101,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,0,102,111,114,32,34,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,34,32,97,114,114,97,121,0,0,0,0,0,67,97,110,110,111,116,32,100,101,116,101,114,109,105,110,101,32,115,105,122,101,32,111,102,32,117,110,107,110,111,119,110,32,116,97,103,32,116,121,112,101,32,37,100,0,0,0,0,84,73,70,70,82,101,97,100,68,105,114,101,99,116,111,114,121,67,104,101,99,107,79,114,100,101,114,0,0,0,0,0,73,110,118,97,108,105,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,59,32,116,97,103,115,32,97,114,101,32,110,111,116,32,115,111,114,116,101,100,32,105,110,32,97,115,99,101,110,100,105,110,103,32,111,114,100,101,114,0,0,73,110,99,111,114,114,101,99,116,32,99,111,117,110,116,32,102,111,114,32,34,37,115,34,0,0,0,0,0,0,0,0,73,110,99,111,109,112,97,116,105,98,108,101,32,116,121,112,101,32,102,111,114,32,34,37,115,34,0,0,0,0,0,0,73,79,32,101,114,114,111,114,32,100,117,114,105,110,103,32,114,101,97,100,105,110,103,32,111,102,32,34,37,115,34,0,73,110,99,111,114,114,101,99,116,32,118,97,108,117,101,32,102,111,114,32,34,37,115,34,0,0,0,0,0,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,100,105,102,102,101,114,101,110,116,32,118,97,108,117,101,115,32,112,101,114,32,115,97,109,112,108,101,32,102,111,114,32,34,37,115,34,0,0,0,0,0,0,83,97,110,105,116,121,32,99,104,101,99,107,32,111,110,32,115,105,122,101,32,111,102,32,34,37,115,34,32,118,97,108,117,101,32,102,97,105,108,101,100,0,0,0,0,0,0,0,79,117,116,32,111,102,32,109,101,109,111,114,121,32,114,101,97,100,105,110,103,32,111,102,32,34,37,115,34,0,0,0,84,73,70,70,82,101,97,100,68,105,114,69,110,116,114,121,79,117,116,112,117,116,69,114,114,0,0,0,0,0,0,0,73,110,99,111,114,114,101,99,116,32,99,111,117,110,116,32,102,111,114,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,0,0,73,110,99,111,109,112,97,116,105,98,108,101,32,116,121,112,101,32,102,111,114,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,73,79,32,101,114,114,111,114,32,100,117,114,105,110,103,32,114,101,97,100,105,110,103,32,111,102,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,0,0,0,73,110,99,111,114,114,101,99,116,32,118,97,108,117,101,32,102,111,114,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,100,105,102,102,101,114,101,110,116,32,118,97,108,117,101,115,32,112,101,114,32,115,97,109,112,108,101,32,102,111,114,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,83,97,110,105,116,121,32,99,104,101,99,107,32,111,110,32,115,105,122,101,32,111,102,32,34,37,115,34,32,118,97,108,117,101,32,102,97,105,108,101,100,59,32,116,97,103,32,105,103,110,111,114,101,100,0,0,79,117,116,32,111,102,32,109,101,109,111,114,121,32,114,101,97,100,105,110,103,32,111,102,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,0,0,0,0,0,84,73,70,70,82,101,119,114,105,116,101,68,105,114,101,99,116,111,114,121,0,0,0,0,69,114,114,111,114,32,117,112,100,97,116,105,110,103,32,84,73,70,70,32,104,101,97,100,101,114,0,0,0,0,0,0,69,114,114,111,114,32,102,101,116,99,104,105,110,103,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,0,0,69,114,114,111,114,32,102,101,116,99,104,105,110,103,32,100,105,114,101,99,116,111,114,121,32,108,105,110,107,0,0,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,100,105,114,101,99,116,111,114,121,32,108,105,110,107,0,0,0,0,83,97,110,105,116,121,32,99,104,101,99,107,32,111,110,32,116,97,103,32,99,111,117,110,116,32,102,97,105,108,101,100,44,32,108,105,107,101,108,121,32,99,111,114,114,117,112,116,32,84,73,70,70,0,0,0,84,73,70,70,82,101,115,101,116,70,105,101,108,100,0,0,77,101,109,111,114,121,32,109,97,112,112,101,100,32,102,105,108,101,115,32,110,111,116,32,99,117,114,114,101,110,116,108,121,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,116,104,105,115,32,111,112,101,114,97,116,105,111,110,46,0,65,116,116,101,109,112,116,32,116,111,32,114,101,115,101,116,32,102,105,101,108,100,32,111,110,32,100,105,114,101,99,116,111,114,121,32,110,111,116,32,97,108,114,101,97,100,121,32,111,110,32,100,105,115,107,46,0,0,0,0,0,0,0,0,37,115,58,32,83,101,101,107,32,101,114,114,111,114,32,97,99,99,101,115,115,105,110,103,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,0,37,115,58,32,67,97,110,32,110,111,116,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,0,0,0,37,115,58,32,67,97,110,32,110,111,116,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,101,110,116,114,121,46,0,0,37,115,58,32,67,111,117,108,100,32,110,111,116,32,102,105,110,100,32,116,97,103,32,37,100,46,0,0,0,0,0,0,102,111,114,32,102,105,101,108,100,32,98,117,102,102,101,114,46,0,0,0,0,0,0,0,86,97,108,117,101,32,101,120,99,101,101,100,115,32,51,50,98,105,116,32,114,97,110,103,101,32,111,102,32,111,117,116,112,117,116,32,116,121,112,101,46,0,0,0,0,0,0,0,37,115,58,32,67,97,110,32,110,111,116,32,119,114,105,116,101,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,101,110,116,114,121,46,0,69,114,114,111,114,32,112,111,115,116,45,101,110,99,111,100,105,110,103,32,98,101,102,111,114,101,32,100,105,114,101,99,116,111,114,121,32,119,114,105,116,101,0,0,0,0,0,0,69,114,114,111,114,32,102,108,117,115,104,105,110,103,32,100,97,116,97,32,98,101,102,111,114,101,32,100,105,114,101,99,116,111,114,121,32,119,114,105,116,101,0,0,0,0,0,0,111,45,62,102,105,101,108,100,95,116,121,112,101,61,61,84,73,70,70,95,65,83,67,73,73,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,100,105,114,119,114,105,116,101,46,99,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,83,101,99,0,0,0,111,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,84,73,70,70,95,86,65,82,73,65,66,76,69,0,0,0,0,0,0,0,111,45,62,102,105,101,108,100,95,112,97,115,115,99,111,117,110,116,61,61,48,0,0,0,111,45,62,102,105,101,108,100,95,116,121,112,101,61,61,84,73,70,70,95,83,72,79,82,84,0,0,0,0,0,0,0,111,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,49,0,0,0,111,45,62,102,105,101,108,100,95,116,121,112,101,61,61,84,73,70,70,95,76,79,78,71,0,0,0,0,0,0,0,0,111,45,62,102,105,101,108,100,95,116,121,112,101,61,61,84,73,70,70,95,85,78,68,69,70,73,78,69,68,0,0,0,111,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,84,73,70,70,95,86,65,82,73,65,66,76,69,50,0,0,0,0,0,0,111,45,62,102,105,101,108,100,95,112,97,115,115,99,111,117,110,116,61,61,49,0,0,0,48,0,0,0,0,0,0,0,110,97,60,110,100,105,114,0,73,79,32,101,114,114,111,114,32,119,114,105,116,105,110,103,32,100,105,114,101,99,116,111,114,121,0,0,0,0,0,0,84,73,70,70,76,105,110,107,68,105,114,101,99,116,111,114,121,0,0,0,0,0,0,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,83,117,98,73,70,68,32,100,105,114,101,99,116,111,114,121,32,108,105,110,107,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,73,102,100,73,102,100,56,65,114,114,97,121,0,0,0,0,0,0,0,65,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,118,97,108,117,101,32,108,97,114,103,101,114,32,116,104,97,110,32,48,120,70,70,70,70,70,70,70,70,32,105,110,32,67,108,97,115,115,105,99,32,84,73,70,70,32,102,105,108,101,46,0,0,0,0,0,99,111,117,110,116,60,48,120,52,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,73,102,100,65,114,114,97,121,0,0,0,0,100,105,114,91,109,93,46,116,100,105,114,95,116,97,103,33,61,116,97,103,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,68,97,116,97,0,0,0,0,0,0,0,73,79,32,101,114,114,111,114,32,119,114,105,116,105,110,103,32,116,97,103,32,100,97,116,97,0,0,0,0,0,0,0,100,97,116,97,108,101,110,103,116,104,60,48,120,56,48,48,48,48,48,48,48,85,76,0,99,111,117,110,116,60,48,120,50,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,73,102,100,56,65,114,114,97,121,0,0,0,116,105,102,45,62,116,105,102,95,102,108,97,103,115,38,84,73,70,70,95,66,73,71,84,73,70,70,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,68,111,117,98,108,101,65,114,114,97,121,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,70,108,111,97,116,65,114,114,97,121,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,83,114,97,116,105,111,110,97,108,65,114,114,97,121,0,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,83,108,111,110,103,56,65,114,114,97,121,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,76,111,110,103,56,65,114,114,97,121,0,0,84,73,70,70,87,114,105,116],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+102400);allocate([101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,83,108,111,110,103,65,114,114,97,121,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,76,111,110,103,65,114,114,97,121,0,0,0,99,111,117,110,116,60,48,120,56,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,83,115,104,111,114,116,65,114,114,97,121,0,112,97,32,33,61,32,48,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,83,117,98,105,102,100,0,0,0,0,0,42,112,97,32,60,61,32,48,120,70,70,70,70,70,70,70,70,85,76,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,84,114,97,110,115,102,101,114,102,117,110,99,116,105,111,110,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,83,104,111,114,116,65,114,114,97,121,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,82,97,116,105,111,110,97,108,65,114,114,97,121,0,0,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,83,97,109,112,108,101,102,111,114,109,97,116,65,114,114,97,121,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,111,108,111,114,109,97,112,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,76,111,110,103,76,111,110,103,56,65,114,114,97,121,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,83,104,111,114,116,80,101,114,83,97,109,112,108,101,0,0,0,0,0,118,97,108,117,101,62,61,48,46,48,0,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,82,97,116,105,111,110,97,108,0,0,0,0,110,32,62,32,48,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,100,117,109,112,109,111,100,101,46,99,0,0,68,117,109,112,77,111,100,101,69,110,99,111,100,101,0,0,68,117,109,112,77,111,100,101,68,101,99,111,100,101,0,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,102,111,114,32,115,99,97,110,108,105,110,101,32,37,108,117,44,32,101,120,112,101,99,116,101,100,32,97,32,114,101,113,117,101,115,116,32,102,111,114,32,97,116,32,109,111,115,116,32,37,108,108,100,32,98,121,116,101,115,44,32,103,111,116,32,97,32,114,101,113,117,101,115,116,32,102,111,114,32,37,108,108,100,32,98,121,116,101,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,53,0,0,0,6,0,7,0,1,0,4,0,7,0,2,0,4,0,8,0,3,0,4,0,11,0,4,0,4,0,12,0,5,0,4,0,14,0,6,0,4,0,15,0,7,0,5,0,19,0,8,0,5,0,20,0,9,0,5,0,7,0,10,0,5,0,8,0,11,0,6,0,8,0,12,0,6,0,3,0,13,0,6,0,52,0,14,0,6,0,53,0,15,0,6,0,42,0,16,0,6,0,43,0,17,0,7,0,39,0,18,0,7,0,12,0,19,0,7,0,8,0,20,0,7,0,23,0,21,0,7,0,3,0,22,0,7,0,4,0,23,0,7,0,40,0,24,0,7,0,43,0,25,0,7,0,19,0,26,0,7,0,36,0,27,0,7,0,24,0,28,0,8,0,2,0,29,0,8,0,3,0,30,0,8,0,26,0,31,0,8,0,27,0,32,0,8,0,18,0,33,0,8,0,19,0,34,0,8,0,20,0,35,0,8,0,21,0,36,0,8,0,22,0,37,0,8,0,23,0,38,0,8,0,40,0,39,0,8,0,41,0,40,0,8,0,42,0,41,0,8,0,43,0,42,0,8,0,44,0,43,0,8,0,45,0,44,0,8,0,4,0,45,0,8,0,5,0,46,0,8,0,10,0,47,0,8,0,11,0,48,0,8,0,82,0,49,0,8,0,83,0,50,0,8,0,84,0,51,0,8,0,85,0,52,0,8,0,36,0,53,0,8,0,37,0,54,0,8,0,88,0,55,0,8,0,89,0,56,0,8,0,90,0,57,0,8,0,91,0,58,0,8,0,74,0,59,0,8,0,75,0,60,0,8,0,50,0,61,0,8,0,51,0,62,0,8,0,52,0,63,0,5,0,27,0,64,0,5,0,18,0,128,0,6,0,23,0,192,0,7,0,55,0,0,1,8,0,54,0,64,1,8,0,55,0,128,1,8,0,100,0,192,1,8,0,101,0,0,2,8,0,104,0,64,2,8,0,103,0,128,2,9,0,204,0,192,2,9,0,205,0,0,3,9,0,210,0,64,3,9,0,211,0,128,3,9,0,212,0,192,3,9,0,213,0,0,4,9,0,214,0,64,4,9,0,215,0,128,4,9,0,216,0,192,4,9,0,217,0,0,5,9,0,218,0,64,5,9,0,219,0,128,5,9,0,152,0,192,5,9,0,153,0,0,6,9,0,154,0,64,6,6,0,24,0,128,6,9,0,155,0,192,6,11,0,8,0,0,7,11,0,12,0,64,7,11,0,13,0,128,7,12,0,18,0,192,7,12,0,19,0,0,8,12,0,20,0,64,8,12,0,21,0,128,8,12,0,22,0,192,8,12,0,23,0,0,9,12,0,28,0,64,9,12,0,29,0,128,9,12,0,30,0,192,9,12,0,31,0,0,10,12,0,1,0,255,255,9,0,1,0,254,255,10,0,1,0,254,255,11,0,1,0,254,255,12,0,0,0,254,255,0,0,10,0,55,0,0,0,3,0,2,0,1,0,2,0,3,0,2,0,2,0,2,0,3,0,3,0,3,0,4,0,4,0,3,0,5,0,4,0,2,0,6,0,5,0,3,0,7,0,6,0,5,0,8,0,6,0,4,0,9,0,7,0,4,0,10,0,7,0,5,0,11,0,7,0,7,0,12,0,8,0,4,0,13,0,8,0,7,0,14,0,9,0,24,0,15,0,10,0,23,0,16,0,10,0,24,0,17,0,10,0,8,0,18,0,11,0,103,0,19,0,11,0,104,0,20,0,11,0,108,0,21,0,11,0,55,0,22,0,11,0,40,0,23,0,11,0,23,0,24,0,11,0,24,0,25,0,12,0,202,0,26,0,12,0,203,0,27,0,12,0,204,0,28,0,12,0,205,0,29,0,12,0,104,0,30,0,12,0,105,0,31,0,12,0,106,0,32,0,12,0,107,0,33,0,12,0,210,0,34,0,12,0,211,0,35,0,12,0,212,0,36,0,12,0,213,0,37,0,12,0,214,0,38,0,12,0,215,0,39,0,12,0,108,0,40,0,12,0,109,0,41,0,12,0,218,0,42,0,12,0,219,0,43,0,12,0,84,0,44,0,12,0,85,0,45,0,12,0,86,0,46,0,12,0,87,0,47,0,12,0,100,0,48,0,12,0,101,0,49,0,12,0,82,0,50,0,12,0,83,0,51,0,12,0,36,0,52,0,12,0,55,0,53,0,12,0,56,0,54,0,12,0,39,0,55,0,12,0,40,0,56,0,12,0,88,0,57,0,12,0,89,0,58,0,12,0,43,0,59,0,12,0,44,0,60,0,12,0,90,0,61,0,12,0,102,0,62,0,12,0,103,0,63,0,10,0,15,0,64,0,12,0,200,0,128,0,12,0,201,0,192,0,12,0,91,0,0,1,12,0,51,0,64,1,12,0,52,0,128,1,12,0,53,0,192,1,13,0,108,0,0,2,13,0,109,0,64,2,13,0,74,0,128,2,13,0,75,0,192,2,13,0,76,0,0,3,13,0,77,0,64,3,13,0,114,0,128,3,13,0,115,0,192,3,13,0,116,0,0,4,13,0,117,0,64,4,13,0,118,0,128,4,13,0,119,0,192,4,13,0,82,0,0,5,13,0,83,0,64,5,13,0,84,0,128,5,13,0,85,0,192,5,13,0,90,0,0,6,13,0,91,0,64,6,13,0,100,0,128,6,13,0,101,0,192,6,11,0,8,0,0,7,11,0,12,0,64,7,11,0,13,0,128,7,12,0,18,0,192,7,12,0,19,0,0,8,12,0,20,0,64,8,12,0,21,0,128,8,12,0,22,0,192,8,12,0,23,0,0,9,12,0,28,0,64,9,12,0,29,0,128,9,12,0,30,0,192,9,12,0,31,0,0,10,12,0,1,0,255,255,9,0,1,0,254,255,10,0,1,0,254,255,11,0,1,0,254,255,12,0,0,0,254,255,0,0,0,128,192,224,240,248,252,254,255,0,0,0,0,0,0,0,120,32,61,61,32,108,97,115,116,120,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,102,97,120,51,46,99,0,0,0,0,0,0,95,84,73,70,70,70,97,120,51,102,105,108,108,114,117,110,115,0,0,0,0,0,0,0,36,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,73,0,0,0,56,197,1,0,0,0,0,0,0,0,0,0,84,73,70,70,73,110,105,116,67,67,73,84,84,70,97,120,51,0,0,0,0,0,0,0,77,101,114,103,105,110,103,32,67,67,73,84,84,32,70,97,120,32,51,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,0,37,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,73,0,0,0,40,197,1,0,0,0,0,0,0,0,0,0,84,73,70,70,73,110,105,116,67,67,73,84,84,70,97,120,52,0,0,0,0,0,0,0,77,101,114,103,105,110,103,32,67,67,73,84,84,32,70,97,120,32,52,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,0,70,97,120,51,68,101,99,111,100,101,82,76,69,0,0,0,37,115,32,97,116,32,108,105,110,101,32,37,117,32,111,102,32,37,115,32,37,117,32,40,103,111,116,32,37,117,44,32,101,120,112,101,99,116,101,100,32,37,117,41,0,0,0,0,80,114,101,109,97,116,117,114,101,32,69,79,76,0,0,0,76,105,110,101,32,108,101,110,103,116,104,32,109,105,115,109,97,116,99,104,0,0,0,0,80,114,101,109,97,116,117,114,101,32,69,79,70,32,97,116,32,108,105,110,101,32,37,117,32,111,102,32,37,115,32,37,117,32,40,120,32,37,117,41,0,0,0,0,0,0,0,0,66,97,100,32,99,111,100,101,32,119,111,114,100,32,97,116,32,108,105,110,101,32,37,117,32,111,102,32,37,115,32,37,117,32,40,120,32,37,117,41,0,0,0,0,0,0,0,0,108,101,110,103,116,104,32,60,32,57,0,0,0,0,0,0,70,97,120,51,80,117,116,66,105,116,115,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,7,0,0,0,15,0,0,0,31,0,0,0,63,0,0,0,127,0,0,0,255,0,0,0,0,0,0,0,70,97,120,52,69,110,99,111,100,101,0,0,0,0,0,0,70,114,97,99,116,105,111,110,97,108,32,115,99,97,110,108,105,110,101,115,32,99,97,110,110,111,116,32,98,101,32,119,114,105,116,116,101,110,0,0,7,0,3,0,0,0,6,0,3,0,0,0,3,0,3,0,0,0,1,0,1,0,0,0,3,0,2,0,0,0,6,0,2,0,0,0,7,0,2,0,0,0,0,0,0,0,0,0,112,117,116,115,112,97,110,0,116,101,45,62,114,117,110,108,101,110,32,61,61,32,54,52,42,40,115,112,97,110,62,62,54,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,7,8,8,7,6,6,5,5,5,5,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,97,120,52,68,101,99,111,100,101,0,0,0,0,0,0,85,110,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,40,110,111,116,32,115,117,112,112,111,114,116,101,100,41,32,97,116,32,108,105,110,101,32,37,117,32,111,102,32,37,115,32,37,117,32,40,120,32,37,117,41,0,0,0,0,71,114,111,117,112,52,79,112,116,105,111,110,115,0,0,0,71,114,111,117,112,51,79,112,116,105,111,110,115,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,16,201,1,0,0,0,0,0,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,24,201,1,0,0,0,0,0,70,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,66,0,1,0,40,201,1,0,0,0,0,0,71,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,67,0,1,0,56,201,1,0,0,0,0,0,72,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,68,0,1,0,72,201,1,0,0,0,0,0,0,0,0,0,73,110,105,116,67,67,73,84,84,70,97,120,51,0,0,0,77,101,114,103,105,110,103,32,99,111,109,109,111,110,32,67,67,73,84,84,32,70,97,120,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,115,116,97,116,101,32,98,108,111,99,107,0,0,0,0,0,0,0,0,70,97,120,51,67,108,101,97,110,117,112,0,0,0,0,0,70,97,120,51,69,110,99,111,100,101,0,0,0,0,0,0,116,112,97,114,109,32,60,32,57,0,0,0,0,0,0,0,70,97,120,51,80,117,116,69,79,76,0,0,0,0,0,0,70,97,120,51,80,114,101,69,110,99,111,100,101,0,0,0,70,97,120,51,68,101,99,111,100,101,49,68,0,0,0,0,70,97,120,51,80,114,101,68,101,99,111,100,101,0,0,0,70,97,120,51,83,101,116,117,112,83,116,97,116,101,0,0,66,105,116,115,47,115,97,109,112,108,101,32,109,117,115,116,32,98,101,32,49,32,102,111,114,32,71,114,111,117,112,32,51,47,52,32,101,110,99,111,100,105,110,103,47,100,101,99,111,100,105,110,103,0,0,0,82,111,119,32,112,105,120,101,108,115,32,105,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,32,40,114,111,119,112,105,120,101,108,115,32,37,117,41,0,0,0,0,0,0,102,111,114,32,71,114,111,117,112,32,51,47,52,32,114,117,110,32,97,114,114,97,121,115,0,0,0,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,71,114,111,117,112,32,51,47,52,32,114,101,102,101,114,101,110,99,101,32,108,105,110,101,0,0,0,70,97,120,51,68,101,99,111,100,101,50,68,0,0,0,0,70,97,120,51,80,114,105,110,116,68,105,114,0,0,0,0,32,0,0,0,0,0,0,0,32,32,71,114,111,117,112,32,52,32,79,112,116,105,111,110,115,58,0,0,0,0,0,0,37,115,117,110,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,0,0,0,0,0,32,32,71,114,111,117,112,32,51,32,79,112,116,105,111,110,115,58,0,0,0,0,0,0,37,115,50,45,100,32,101,110,99,111,100,105,110,103,0,0,43,0,0,0,0,0,0,0,37,115,69,79,76,32,112,97,100,100,105,110,103,0,0,0,32,40,37,108,117,32,61,32,48,120,37,108,120,41,10,0,32,32,70,97,120,32,68,97,116,97,58,0,0,0,0,0,32,99,108,101,97,110,0,0,32,114,101,99,101,105,118,101,114,32,114,101,103,101,110,101,114,97,116,101,100,0,0,0,32,117,110,99,111,114,114,101,99,116,101,100,32,101,114,114,111,114,115,0,0,0,0,0,32,40,37,117,32,61,32,48,120,37,120,41,10,0,0,0,32,32,66,97,100,32,70,97,120,32,76,105,110,101,115,58,32,37,108,117,10,0,0,0,32,32,67,111,110,115,101,99,117,116,105,118,101,32,66,97,100,32,70,97,120,32,76,105,110,101,115,58,32,37,108,117,10,0,0,0,0,0,0,0,70,97,120,51,86,83,101,116,70,105,101,108,100,0,0,0,115,112,45,62,118,115,101,116,112,97,114,101,110,116,32,33,61,32,48,0,0,0,0,0,70,97,120,51,86,71,101,116,70,105,101,108,100,0,0,0,70,97,120,77,111,100,101,0,70,97,120,70,105,108,108,70,117,110,99,0,0,0,0,0,66,97,100,70,97,120,76,105,110,101,115,0,0,0,0,0,67,108,101,97,110,70,97,120,68,97,116,97,0,0,0,0,67,111,110,115,101,99,117,116,105,118,101,66,97,100,70,97,120,76,105,110,101,115,0,0,12,7,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,5,6,0,0,2,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,5,7,0,0,3,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,4,6,0,0,2,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,6,7,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,5,6,0,0,2,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,4,7,0,0,3,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,4,6,0,0,2,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,12,11,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,11,0,0,0,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,11,0,0,64,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+112640);allocate([7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,64,8,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,64,9,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,192,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,11,0,0,128,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,192,8,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+122880);allocate([7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,192,9,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,12,11,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,11,0,0,0,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,11,0,0,64,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,128,8,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,128,9,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+133120);allocate([7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,0,8,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,11,0,0,128,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,0,9,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,0,10,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,12,11,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,0,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,23,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,20,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,25,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,128,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,56,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+143360);allocate([8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,30,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,64,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,57,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,21,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,54,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,52,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,48,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,64,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,44,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,36,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,128,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,28,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,60,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,40,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,64,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,192,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,50,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,34,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,128,6,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,26,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,128,5,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,32,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,128,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,61,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,42,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,0,4,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,0,3,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+153600);allocate([8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,62,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,192,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,46,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,38,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,0,2,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,19,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,24,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,22,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,192,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,12,11,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,0,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,23,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,20,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,25,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,192,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,0,5,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,31,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,64,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,58,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,21,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,128,3,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,128,2,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,49,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,128,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,45,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,37,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,192,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,29,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,0,6,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+163840);allocate([8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,41,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,128,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,0,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,51,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,35,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,64,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,27,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,59,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,33,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,128,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,0,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,43,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,128,4,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,55,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,63,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,0,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,47,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,39,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,53,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,19,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,24,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,22,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,0,10,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,12,11,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+174080);allocate([8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,0,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,23,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,20,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,25,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,128,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,56,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,30,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,64,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,57,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,21,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,54,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,52,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,48,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,64,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,44,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,36,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,128,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,28,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,60,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,40,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,64,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,192,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,50,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,34,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,192,6,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,26,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,192,5,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+184320);allocate([8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,32,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,128,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,61,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,42,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,64,4,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,64,3,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,62,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,192,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,46,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,38,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,64,2,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,19,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,24,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,22,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,192,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,12,11,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,0,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,23,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,20,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,25,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,192,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,64,5,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,31,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,64,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,58,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,21,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,192,3,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,192,2,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+194560);allocate([8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,49,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,128,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,45,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,37,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,192,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,29,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,64,6,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,41,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,128,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,0,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,51,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,35,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,64,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,27,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,59,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,33,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,128,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,0,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,43,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,192,4,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,55,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,63,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,0,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,47,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,39,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,53,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,19,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,24,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+204800);allocate([8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,22,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,0,10,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,83,111,114,114,121,44,32,114,101,113,117,101,115,116,101,100,32,99,111,109,112,114,101,115,115,105,111,110,32,109,101,116,104,111,100,32,105,115,32,110,111,116,32,99,111,110,102,105,103,117,114,101,100,0,0,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,105,109,97,103,101,115,32,119,105,116,104,32,37,100,45,98,105,116,32,115,97,109,112,108,101,115,0,0,0,0,0,0,0,0,77,105,115,115,105,110,103,32,110,101,101,100,101,100,32,37,115,32,116,97,103,0,0,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,99,111,110,116,105,103,117,111,117,115,32,100,97,116,97,32,119,105,116,104,32,37,115,61,37,100,44,32,97,110,100,32,37,115,61,37,100,32,97,110,100,32,66,105,116,115,47,83,97,109,112,108,101,61,37,100,0,0,83,97,109,112,108,101,115,47,112,105,120,101,108,0,0,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,82,71,66,32,105,109,97,103,101,32,119,105,116,104,32,37,115,61,37,100,0,0,0,0,0,0,67,111,108,111,114,32,99,104,97,110,110,101,108,115,0,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,115,101,112,97,114,97,116,101,100,32,105,109,97,103,101,32,119,105,116,104,32,37,115,61,37,100,0,0,0,0,0,0,0,0,73,110,107,83,101,116,0,0,83,111,114,114,121,44,32,76,111,103,76,32,100,97,116,97,32,109,117,115,116,32,104,97,118,101,32,37,115,61,37,100,0,0,0,0,0,0,0,0,83,111,114,114,121,44,32,76,111,103,76,117,118,32,100,97,116,97,32,109,117,115,116,32,104,97,118,101,32,37,115,61,37,100,32,111,114,32,37,100,0,0,0,0,0,0,0,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,76,111,103,76,117,118,32,105,109,97,103,101,115,32,119,105,116,104,32,37,115,61,37,100,0,0,80,108,97,110,97,114,99,111,110,102,105,103,117,114,97,116,105,111,110,0,0,0,0,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,105,109,97,103,101,32,119,105,116,104,32,37,115,61,37,100,0,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,105,109,97,103,101,32,119,105,116,104,32,37,115,61,37,100,32,97,110,100,32,37,115,61,37,100,0,0,0,0,0,0,0,0,66,105,116,115,47,115,97,109,112,108,101,0,0,0,0,0,77,105,115,115,105,110,103,32,114,101,113,117,105,114,101,100,32,34,67,111,108,111,114,109,97,112,34,32,116,97,103,0,79,117,116,32,111,102,32,109,101,109,111,114,121,32,102,111,114,32,99,111,108,111,114,109,97,112,32,99,111,112,121,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,105,109,97,103,101,0,0,0,0,0,78,111,32,34,103,101,116,34,32,114,111,117,116,105,110,101,32,115,101,116,117,112,0,0,78,111,32,34,112,117,116,34,32,114,111,117,116,105,110,101,32,115,101,116,117,112,108,59,32,112,114,111,98,97,98,108,121,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,105,109,97,103,101,32,102,111,114,109,97,116,0,0,0,105,110,105,116,89,67,98,67,114,67,111,110,118,101,114,115,105,111,110,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,89,67,98,67,114,45,62,82,71,66,32,99,111,110,118,101,114,115,105,111,110,32,115,116,97,116,101,0,0,0,0,0,0,0,0,105,109,103,45,62,66,105,116,100,101,112,116,104,49,54,84,111,56,61,61,78,85,76,76,0,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,103,101,116,105,109,97,103,101,46,99,0,0,66,117,105,108,100,77,97,112,66,105,116,100,101,112,116,104,49,54,84,111,56,0,0,0,105,109,103,45,62,85,97,84,111,65,97,61,61,78,85,76,76,0,0,0,0,0,0,0,66,117,105,108,100,77,97,112,85,97,84,111,65,97,0,0,73,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,32,105,110,32,37,115,0,0,103,116,83,116,114,105,112,83,101,112,97,114,97,116,101,0,78,111,32,115,112,97,99,101,32,102,111,114,32,116,105,108,101,32,98,117,102,102,101,114,0,0,0,0,0,0,0,0,103,116,84,105,108,101,83,101,112,97,114,97,116,101,0,0,105,110,105,116,67,73,69,76,97,98,67,111,110,118,101,114,115,105,111,110,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,67,73,69,32,76,42,97,42,98,42,45,62,82,71,66,32,99,111,110,118,101,114,115,105,111,110,32,115,116,97,116,101,46,0,0,139,108,79,64,134,201,196,191,128,72,255,190,126,29,120,191,197,32,240,63,195,100,42,61,211,188,99,61,96,229,80,190,199,75,135,63,0,0,200,66,0,0,200,66,0,0,200,66,255,0,0,0,255,0,0,0,255,0,0,0,0,0,128,63,0,0,128,63,0,0,128,63,154,153,25,64,154,153,25,64,154,153,25,64,0,0,0,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,67,73,69,32,76,42,97,42,98,42,45,62,82,71,66,32,99,111,110,118,101,114,115,105,111,110,32,115,116,97,116,101,46,0,0,65,115,115,117,109,105,110,103,32,56,45,98,105,116,32,99,111,108,111,114,109,97,112,0,78,111,32,115,112,97,99,101,32,102,111,114,32,80,97,108,101,116,116,101,32,109,97,112,112,105,110,103,32,116,97,98,108,101,0,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,112,104,111,116,111,109,101,116,114,105,99,32,99,111,110,118,101,114,115,105,111,110,32,116,97,98,108,101,0,0,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,66,38,87,32,109,97,112,112,105,110,103,32,116,97,98,108,101,0,0,73,110,118,97,108,105,100,32,118,101,114,116,105,99,97,108,32,89,67,98,67,114,32,115,117,98,115,97,109,112,108,105,110,103,0,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,115,116,114,105,112,32,98,117,102,102,101,114,0,0,0,0,0,0,0,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,74,80,69,71,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,106,112,101,103,46,99,0,0,0,0,0,0,84,73,70,70,73,110,105,116,74,80,69,71,0,0,0,0,91,1,0,0,253,255,253,255,7,0,0,0,0,0,0,0,40,0,0,0,40,0,0,0,66,0,0,1,248,91,3,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,1,0,72,112,5,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,72,112,5,0,0,0,0,0,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,72,112,5,0,0,0,0,0,77,101,114,103,105,110,103,32,74,80,69,71,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,78,111,32,115,112,97,99,101,32,102,111,114,32,74,80,69,71,32,115,116,97,116,101,32,98,108,111,99,107,0,0,0,74,80,69,71,67,108,101,97,110,117,112,0,0,0,0,0,74,80,69,71,69,110,99,111,100,101,0,0,0,0,0,0,102,114,97,99,116,105,111,110,97,108,32,115,99,97,110,108,105,110,101,32,100,105,115,99,97,114,100,101,100,0,0,0,74,80,69,71,80,114,101,69,110,99,111,100,101,0,0,0,33,115,112,45,62,99,105,110,102,111,46,99,111,109,109,46,105,115,95,100,101,99,111,109,112,114,101,115,115,111,114,0,83,116,114,105,112,47,116,105,108,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,74,80,69,71,0,0,0,74,80,69,71,69,110,99,111,100,101,82,97,119,0,0,0,74,80,69,71,83,101,116,117,112,69,110,99,111,100,101,0,80,104,111,116,111,109,101,116,114,105,99,73,110,116,101,114,112,114,101,116,97,116,105,111,110,32,37,100,32,110,111,116,32,97,108,108,111,119,101,100,32,102,111,114,32,74,80,69,71,0,0,0,0,0,0,0,66,105,116,115,80,101,114,83,97,109,112,108,101,32,37,100,32,110,111,116,32,97,108,108,111,119,101,100,32,102,111,114,32,74,80,69,71,0,0,0,74,80,69,71,32,116,105,108,101,32,104,101,105,103,104,116,32,109,117,115,116,32,98,101,32,109,117,108,116,105,112,108,101,32,111,102,32,37,100,0,74,80,69,71,32,116,105,108,101,32,119,105,100,116,104,32,109,117,115,116,32,98,101,32,109,117,108,116,105,112,108,101,32,111,102,32,37,100,0,0,82,111,119,115,80,101,114,83,116,114,105,112,32,109,117,115,116,32,98,101,32,109,117,108,116,105,112,108,101,32,111,102,32,37,100,32,102,111,114,32,74,80,69,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,73,70,70,106,112,101,103,95,116,97,98,108,101,115,95,100,101,115,116,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,74,80,69,71,84,97,98,108,101,115,0,74,80,69,71,76,105,98,0,102,114,97,99,116,105,111,110,97,108,32,115,99,97,110,108,105,110,101,32,110,111,116,32,114,101,97,100,0,0,0,0,74,80,69,71,80,114,101,68,101,99,111,100,101,0,0,0,115,112,45,62,99,105,110,102,111,46,99,111,109,109,46,105,115,95,100,101,99,111,109,112,114,101,115,115,111,114,0,0,73,109,112,114,111,112,101,114,32,74,80,69,71,32,115,116,114,105,112,47,116,105,108,101,32,115,105,122,101,44,32,101,120,112,101,99,116,101,100,32,37,100,120,37,100,44,32,103,111,116,32,37,100,120,37,100,0,0,0,0,0,0,0,0,74,80,69,71,32,115,116,114,105,112,47,116,105,108,101,32,115,105,122,101,32,101,120,99,101,101,100,115,32,101,120,112,101,99,116,101,100,32,100,105,109,101,110,115,105,111,110,115,44,32,101,120,112,101,99,116,101,100,32,37,100,120,37,100,44,32,103,111,116,32,37,100,120,37,100,0,0,0,0,0,73,109,112,114,111,112,101,114,32,74,80,69,71,32,99,111,109,112,111,110,101,110,116,32,99,111,117,110,116,0,0,0,73,109,112,114,111,112,101,114,32,74,80,69,71,32,100,97,116,97,32,112,114,101,99,105,115,105,111,110,0,0,0,0,73,109,112,114,111,112,101,114,32,74,80,69,71,32,115,97,109,112,108,105,110,103,32,102,97,99,116,111,114,115,32,37,100,44,37,100,10,65,112,112,97,114,101,110,116,108,121,32,115,104,111,117,108,100,32,98,101,32,37,100,44,37,100,46,0,0,0,0,0,0,0,0,73,109,112,114,111,112,101,114,32,74,80,69,71,32,115,97,109,112,108,105,110,103,32,102,97,99,116,111,114,115,0,0,74,80,69,71,68,101,99,111,100,101,82,97,119,0,0,0,97,112,112,108,105,99,97,116,105,111,110,32,98,117,102,102,101,114,32,110,111,116,32,108,97,114,103,101,32,101,110,111,117,103,104,32,102,111,114,32,97,108,108,32,100,97,116,97,46,0,0,0,0,0,0,0,97,112,112,108,105,99,97,116,105,111,110,32,98,117,102,102,101,114,32,110,111,116,32,108,97,114,103,101,32,101,110,111,117,103,104,32,102,111,114,32,97,108,108,32,100,97,116,97,44,32,112,111,115,115,105,98,108,101,32,115,117,98,115,97,109,112,108,105,110,103,32,105,115,115,117,101,0,0,0,0,84,73,70,70,82,101,97,100,83,99,97,110,108,105,110,101,0,0,0,0,0,0,0,0,115,99,97,110,108,105,110,101,32,111,114,105,101,110,116,101,100,32,97,99,99,101,115,115,32,105,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,100,111,119,110,115,97,109,112,108,101,100,32,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,105,109,97,103,101,115,44,32,99,111,110,115,105,100,101,114,32,101,110,97,98,108,105,110,103,32,84,73,70,70,95,74,80,69,71,67,79,76,79,82,77,79,68,69,32,97,115,32,74,80,69,71,67,79,76,79,82,77,79,68,69,95,82,71,66,46,0,0,0,0,74,80,69,71,83,101,116,117,112,68,101,99,111,100,101,0,66,111,103,117,115,32,74,80,69,71,84,97,98,108,101,115,32,102,105,101,108,100,0,0,255,217,0,0,0,0,0,0,74,80,69,71,70,105,120,117,112,84,97,103,115,83,117,98,115,97,109,112,108,105,110,103,0,0,0,0,0,0,0,0,85,110,97,98,108,101,32,116,111,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,97,117,116,111,45,99,111,114,114,101,99,116,105,110,103,32,111,102,32,115,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,59,32,97,117,116,111,45,99,111,114,114,101,99,116,105,110,103,32,115,107,105,112,112,101,100,0,0,0,0,85,110,97,98,108,101,32,116,111,32,97,117,116,111,45,99,111,114,114,101,99,116,32,115,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,44,32,108,105,107,101,108,121,32,99,111,114,114,117,112,116,32,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,110,32,102,105,114,115,116,32,115,116,114,105,112,47,116,105,108,101,59,32,97,117,116,111,45,99,111,114,114,101,99,116,105,110,103,32,115,107,105,112,112,101,100,0,0,0,0,0,74,80,69,71,70,105,120,117,112,84,97,103,115,83,117,98,115,97,109,112,108,105,110,103,83,101,99,0,0,0,0,0,83,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,32,105,110,115,105,100,101,32,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,104,97,118,101,32,110,111,32,84,73,70,70,32,101,113,117,105,118,97,108,101,110,116,44,32,97,117,116,111,45,99,111,114,114,101,99,116,105,111,110,32,111,102,32,84,73,70,70,32,115,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,32,102,97,105,108,101,100,0,0,0,0,0,0,0,65,117,116,111,45,99,111,114,114,101,99,116,101,100,32,102,111,114,109,101,114,32,84,73,70,70,32,115,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,32,91,37,100,44,37,100,93,32,116,111,32,109,97,116,99,104,32,115,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,32,105,110,115,105,100,101,32,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,91,37,100,44,37,100,93,0,0,0,109,60,48,120,56,48,48,48,48,48,48,48,85,76,0,0,74,80,69,71,70,105,120,117,112,84,97,103,115,83,117,98,115,97,109,112,108,105,110,103,82,101,97,100,66,121,116,101,0,0,0,0,0,0,0,0,74,80,69,71,80,114,105,110,116,68,105,114,0,0,0,0,32,32,74,80,69,71,32,84,97,98,108,101,115,58,32,40,37,108,117,32,98,121,116,101,115,41,10,0,0,0,0,0,74,80,69,71,86,83,101,116,70,105,101,108,100,0,0,0,74,80,69,71,86,71,101,116,70,105,101,108,100,0,0,0,74,80,69,71,84,97,98,108,101,115,0,0,0,0,0,0,95,155,125,62,4,0,0,0,52,161,121,62,6,0,4,0,3,124,119,62,7,0,10,0,62,149,115,62,9,0,17,0,88,145,113,62,10,0,26,0,132,185,109,62,12,0,36,0,27,213,105,62,14,0,48,0,112,176,103,62,15,0,62,0,57,181,99,62,17,0,77,0,41,179,97,62,18,0,94,0,240,220,91,62,21,0,112,0,179,209,89,62,22,0,133,0,63,199,87,62,23,0,155,0,59,229,81,62,26,0,178,0,144,219,79,62,27,0,204,0,226,6,76,62,29,0,231,0,181,55,72,62,31,0,4,1,152,52,70,62,32,0,35,1,97,111,66,62,34,0,67,1,104,175,62,62,36,0,101,1,104,175,62,62,36,0,137,1,102,249,58,62,38,0,173,1,144,76,55,62,40,0,211,1,92,173,51,62,42,0,251,1,8,33,48,62,44,0,37,2,8,33,48,62,44,0,81,2,160,168,44,62,46,0,125,2,160,168,44,62,46,0,171,2,52,128,39,62,49,0,217,2,12,115,34,62,52,0,10,3,12,115,34,62,52,0,62,3,12,115,34,62,52,0,114,3,174,129,29,62,55,0,166,3,174,129,29,62,55,0,221,3,226,172,24,62,58,0,20,4,226,172,24,62,58,0,78,4,2,44,18,62,62,0,136,4,2,44,18,62,62,0,198,4,2,44,18,62,62,0,4,5,167,150,13,62,65,0,66,5,167,150,13,62,65,0,131,5,167,150,13,62,65,0,196,5,134,86,7,62,69,0,5,6,134,86,7,62,69,0,74,6,159,59,1,62,73,0,143,6,159,59,1,62,73,0,216,6,159,59,1,62,73,0,33,7,80,138,246,61,77,0,106,7,80,138,246,61,77,0,183,7,80,138,246,61,77,0,4,8,80,138,246,61,77,0,81,8,159,88,231,61,82,0,158,8,159,88,231,61,82,0,240,8,159,88,231,61,82,0,66,9,191,14,220,61,86,0,148,9,191,14,220,61,86,0,234,9,191,14,220,61,86,0,64,10,191,14,220,61,86,0,150,10,161,128,205,61,91,0,236,10,161,128,205,61,91,0,71,11,161,128,205,61,91,0,162,11,108,209,194,61,95,0,253,11,108,209,194,61,95,0,92,12,108,209,194,61,95,0,187,12,108,209,194,61,95,0,26,13,12,202,180,61,100,0,121,13,12,202,180,61,100,0,221,13,12,202,180,61,100,0,65,14,12,202,180,61,100,0,165,14,136,245,166,61,105,0,9,15,136,245,166,61,105,0,114,15,136,245,166,61,105,0,219,15,136,245,166,61,105,0,68,16,185,80,153,61,110,0,173,16,185,80,153,61,110,0,27,17,185,80,153,61,110,0,137,17,185,80,153,61,110,0,247,17,161,219,139,61,115,0,101,18,161,219,139,61,115,0,216,18,161,219,139,61,115,0,75,19,161,219,139,61,115,0,190,19,144,50,130,61,119,0,49,20,144,50,130,61,119,0,168,20,144,50,130,61,119,0,31,21,144,50,130,61,119,0,150,21,120,94,106,61,124,0,13,22,120,94,106,61,124,0,137,22,120,94,106,61,124,0,5,23,120,94,106,61,124,0,129,23,166,213,80,61,129,0,253,23,166,213,80,61,129,0,126,24,166,213,80,61,129,0,255,24,166,213,80,61,129,0,128,25,166,213,80,61,129,0,1,26,18,190,55,61,134,0,130,26,18,190,55,61,134,0,8,27,18,190,55,61,134,0,142,27,18,190,55,61,134,0,20,28,199,45,38,61,138,0,154,28,199,45,38,61,138,0,36,29,199,45,38,61,138,0,174,29,199,45,38,61,138,0,56,30,52,216,20,61,142,0,194,30,52,216,20,61,142,0,80,31,52,216,20,61,142,0,222,31,52,216,20,61,142,0,108,32,47,164,3,61,146,0,250,32,47,164,3,61,146,0,140,33,47,164,3,61,146,0,30,34,47,164,3,61,146,0,176,34,27,241,228,60,150,0,66,35,27,241,228,60,150,0,216,35,27,241,228,60,150,0,110,36,75,120,194,60,154,0,4,37,75,120,194,60,154,0,158,37,75,120,194,60,154,0,56,38,75,120,194,60,154,0,210,38,218,198,159,60,158,0,108,39,218,198,159,60,158,0,10,40,218,198,159,60,158,0,168,40,65,17,139,60,161,0,70,41,65,17,139,60,161,0,231,41,65,17,139,60,161,0,136,42,65,17,139,60,161,0,41,43,207,19,79,60,165,0,202,43,207,19,79,60,165,0,111,44,207,19,79,60,165,0,20,45,75,177,35,60,168,0,185,45,75,177,35,60,168,0,97,46,75,177,35,60,168,0,9,47,216,183,19,60,170,0,177,47,216,183,19,60,170,0,91,48,216,183,19,60,170,0,5,49,250,183,203,59,173,0,175,49,250,183,203,59,173,0,92,50,188,4,167,59,175,0,9,51,188,4,167,59,175,0,184,51,188,4,167,59,175,0,103,52,18,23,128,59,177,0,22,53,18,23,128,59,177,0,199,53,175,90,25,59,177,0,120,54,197,144,28,59,170,0,41,55,34,252,139,58,164,0,211,55,122,169,216,58,157,0,119,56,14,245,59,58,150,0,20,57,218,140,211,58,143,0,170,57,201,142,141,57,136,0,57,58,97,193,253,57,129,0,193,58,138,146,144,58,123,0,66,59,155,202,162,58,115,0,189,59,170,182,155,58,109,0,48,60,136,131,132,58,103,0,157,60,47,220,57,58,97,0,4,61,137,207,157,57,89,0,101,61,193,85,30,59,82,0,190,61,187,14,85,59,76,0,16,62,216,186,84,59,69,0,92,62,58,177,135,59,62,0,161,62,69,101,195,59,55,0,223,62,116,209,16,60,47,0,22,63,64,222,43,60,40,0,69,63,0,55,139,60,31,0,109,63,133,208,193,60,21,0,140,63,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,83,71,73,76,79,71,50,52,32,124,124,32,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,83,71,73,76,79,71,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,108,117,118,46,99,0,0,0,0,0,0,0,84,73,70,70,73,110,105,116,83,71,73,76,111,103,0,0,24,0,1,0,0,0,0,0,3,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,1,0,0,102,3,0,0,0,0,0,25,0,1,0,0,0,0,0,3,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,1,0,16,102,3,0,0,0,0,0,77,101,114,103,105,110,103,32,83,71,73,76,111,103,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,0,0,0,0,0,0,37,115,58,32,78,111,32,115,112,97,99,101,32,102,111,114,32,76,111,103,76,117,118,32,115,116,97,116,101,32,98,108,111,99,107,0,0,0,0,0,76,111,103,76,117,118,86,83,101,116,70,105,101,108,100,0,85,110,107,110,111,119,110,32,100,97,116,97,32,102,111,114,109,97,116,32,37,100,32,102,111,114,32,76,111,103,76,117,118,32,99,111,109,112,114,101,115,115,105,111,110,0,0,0,85,110,107,110,111,119,110,32,101,110,99,111,100,105,110,103,32,37,100,32,102,111,114,32,76,111,103,76,117,118,32,99,111,109,112,114,101,115,115,105,111,110,0,0,0,0,0,0,76,111,103,76,117,118,67,108,101,97,110,117,112,0,0,0,99,99,37,114,111,119,108,101,110,32,61,61,32,48,0,0,76,111,103,76,117,118,69,110,99,111,100,101,84,105,108,101,0,0,0,0,0,0,0,0,76,111,103,76,117,118,69,110,99,111,100,101,83,116,114,105,112,0,0,0,0,0,0,0,76,111,103,76,117,118,83,101,116,117,112,69,110,99,111,100,101,0,0,0,0,0,0,0,73,110,97,112,112,114,111,112,114,105,97,116,101,32,112,104,111,116,111,109,101,116,114,105,99,32,105,110,116,101,114,112,114,101,116,97,116,105,111,110,32,37,100,32,102,111,114,32,83,71,73,76,111,103,32,99,111,109,112,114,101,115,115,105,111,110,59,32,37,115,0,0,109,117,115,116,32,98,101,32,101,105,116,104,101,114,32,76,111,103,76,85,86,32,111,114,32,76,111,103,76,0,0,0,83,71,73,76,111,103,32,99,111,109,112,114,101,115,115,105,111,110,32,115,117,112,112,111,114,116,101,100,32,111,110,108,121,32,102,111,114,32,37,115,44,32,111,114,32,114,97,119,32,100,97,116,97,0,0,0,89,44,32,76,0,0,0,0,88,89,90,44,32,76,117,118,0,0,0,0,0,0,0,0,115,32,61,61,32,48,0,0,76,111,103,76,49,54,69,110,99,111,100,101,0,0,0,0,115,112,45,62,116,98,117,102,108,101,110,32,62,61,32,110,112,105,120,101,108,115,0,0,76,111,103,76,49,54,73,110,105,116,83,116,97,116,101,0,116,100,45,62,116,100,95,112,104,111,116,111,109,101,116,114,105,99,32,61,61,32,80,72,79,84,79,77,69,84,82,73,67,95,76,79,71,76,0,0,78,111,32,115,117,112,112,111,114,116,32,102,111,114,32,99,111,110,118,101,114,116,105,110,103,32,117,115,101,114,32,100,97,116,97,32,102,111,114,109,97,116,32,116,111,32,76,111,103,76,0,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,83,71,73,76,111,103,32,116,114,97,110,115,108,97,116,105,111,110,32,98,117,102,102,101,114,0,0,76,111,103,76,117,118,69,110,99,111,100,101,51,50,0,0,76,111,103,76,117,118,69,110,99,111,100,101,50,52,0,0,76,111,103,76,117,118,73,110,105,116,83,116,97,116,101,0,116,100,45,62,116,100,95,112,104,111,116,111,109,101,116,114,105,99,32,61,61,32,80,72,79,84,79,77,69,84,82,73,67,95,76,79,71,76,85,86,0,0,0,0,0,0,0,0,83,71,73,76,111,103,32,99,111,109,112,114,101,115,115,105,111,110,32,99,97,110,110,111,116,32,104,97,110,100,108,101,32,110,111,110,45,99,111,110,116,105,103,117,111,117,115,32,100,97,116,97,0,0,0,0,78,111,32,115,117,112,112,111,114,116,32,102,111,114,32,99,111,110,118,101,114,116,105,110,103,32,117,115,101,114,32,100,97,116,97,32,102,111,114,109,97,116,32,116,111,32,76,111,103,76,117,118,0,0,0,0,76,111,103,76,117,118,68,101,99,111,100,101,84,105,108,101,0,0,0,0,0,0,0,0,76,111,103,76,117,118,68,101,99,111,100,101,83,116,114,105,112,0,0,0,0,0,0,0,76,111,103,76,117,118,83,101,116,117,112,68,101,99,111,100,101,0,0,0,0,0,0,0,76,111,103,76,49,54,68,101,99,111,100,101,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,97,116,32,114,111,119,32,37,108,117,32,40,115,104,111,114,116,32,37,108,108,117,32,112,105,120,101,108,115,41,0,0,76,111,103,76,117,118,68,101,99,111,100,101,51,50,0,0,76,111,103,76,117,118,68,101,99,111,100,101,50,52,0,0,83,71,73,76,111,103,68,97,116,97,70,109,116,0,0,0,83,71,73,76,111,103,69,110,99,111,100,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,76,90,87,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,108,122,119,46,99,0,0,0,0,0,0,0,84,73,70,70,73,110,105,116,76,90,87,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,76,90,87,32,115,116,97,116,101,32,98,108,111,99,107,0,0,0,0,116,105,102,45,62,116,105,102,95,100,97,116,97,32,33,61,32,48,0,0,0,0,0,0,76,90,87,67,108,101,97,110,117,112,0,0,0,0,0,0,115,112,45,62,101,110,99,95,104,97,115,104,116,97,98,32,33,61,32,78,85,76,76,0,76,90,87,69,110,99,111,100,101,0,0,0,0,0,0,0,110,98,105,116,115,32,60,61,32,66,73,84,83,95,77,65,88,0,0,0,0,0,0,0,76,90,87,80,114,101,69,110,99,111,100,101,0,0,0,0,76,90,87,83,101,116,117,112,69,110,99,111,100,101,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,76,90,87,32,104,97,115,104,32,116,97,98,108,101,0,0,0,0,0,76,90,87,68,101,99,111,100,101,0,0,0,0,0,0,0,115,112,45,62,100,101,99,95,99,111,100,101,116,97,98,32,33,61,32,78,85,76,76,0,76,90,87,68,101,99,111,100,101,58,32,83,116,114,105,112,32,37,100,32,110,111,116,32,116,101,114,109,105,110,97,116,101,100,32,119,105,116,104,32,69,79,73,32,99,111,100,101,0,0,0,0,0,0,0,0,76,90,87,68,101,99,111,100,101,58,32,67,111,114,114,117,112,116,101,100,32,76,90,87,32,116,97,98,108,101,32,97,116,32,115,99,97,110,108,105,110,101,32,37,100,0,0,0,67,111,114,114,117,112,116,101,100,32,76,90,87,32,116,97,98,108,101,32,97,116,32,115,99,97,110,108,105,110,101,32,37,100,0,0,0,0,0,0,87,114,111,110,103,32,108,101,110,103,116,104,32,111,102,32,100,101,99,111,100,101,100,32,115,116,114,105,110,103,58,32,100,97,116,97,32,112,114,111,98,97,98,108,121,32,99,111,114,114,117,112,116,101,100,32,97,116,32,115,99,97,110,108,105,110,101,32,37,100,0,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,97,116,32,115,99,97,110,108,105,110,101,32,37,100,32,40,115,104,111,114,116,32,37,108,108,117,32,98,121,116,101,115,41,0,0,0,0,0,0,0,66,111,103,117,115,32,101,110,99,111,100,105,110,103,44,32,108,111,111,112,32,105,110,32,116,104,101,32,99,111,100,101,32,116,97,98,108,101,59,32,115,99,97,110,108,105,110,101,32,37,100,0,0,0,0,0,76,90,87,80,114,101,68,101,99,111,100,101,0,0,0,0,79,108,100,45,115,116,121,108,101,32,76,90,87,32,99,111,100,101,115,44,32,99,111,110,118,101,114,116,32,102,105,108,101,0,0,0,0,0,0,0,76,90,87,68,101,99,111,100,101,67,111,109,112,97,116,0,76,90,87,83,101,116,117,112,68,101,99,111,100,101,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,76,90,87,32,99,111,100,101,32,116,97,98,108,101,0,0,0,0,0,78,101,88,84,68,101,99,111,100,101,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,102,111,114,32,115,99,97,110,108,105,110,101,32,37,108,100,0,0,0,0,0,0,0,0,78,101,88,84,80,114,101,68,101,99,111,100,101,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,66,105,116,115,80,101,114,83,97,109,112,108,101,32,61,32,37,100,0,0,115,99,104,101,109,101,61,61,67,79,77,80,82,69,83,83,73,79,78,95,79,74,80,69,71,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,111,106,112,101,103,46,99,0,0,0,0,0,84,73,70,70,73,110,105,116,79,74,80,69,71,0,0,0,1,2,0,0,1,0,1,0,16,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,66,0,1,0,104,123,3,0,0,0,0,0,2,2,0,0,1,0,1,0,16,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,67,0,1,0,128,123,3,0,0,0,0,0,7,2,0,0,253,255,253,255,16,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,68,0,0,1,160,123,3,0,0,0,0,0,8,2,0,0,253,255,253,255,16,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,69,0,0,1,176,123,3,0,0,0,0,0,9,2,0,0,253,255,253,255,16,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,70,0,0,1,192,123,3,0,0,0,0,0,0,2,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,71,0,0,0,208,123,3,0,0,0,0,0,3,2,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,72,0,0,0,224,123,3,0,0,0,0,0,0,0,0,0,77,101,114,103,105,110,103,32,79,108,100,32,74,80,69,71,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,79,74,80,69,71,32,115,116,97,116,101,32,98,108,111,99,107,0,0,115,112,45,62,108,105,98,106,112,101,103,95,115,101,115,115,105,111,110,95,97,99,116,105,118,101,33,61,48,0,0,0,79,74,80,69,71,76,105,98,106,112,101,103,83,101,115,115,105,111,110,65,98,111,114,116,0,0,0,0,0,0,0,0,79,74,80,69,71,80,111,115,116,69,110,99,111,100,101,0,79,74,80,69,71,32,101,110,99,111,100,105,110,103,32,110,111,116,32,115,117,112,112,111,114,116,101,100,59,32,117,115,101,32,110,101,119,45,115,116,121,108,101,32,74,80,69,71,32,99,111,109,112,114,101,115,115,105,111,110,32,105,110,115,116,101,97,100,0,0,0,0,79,74,80,69,71,69,110,99,111,100,101,0,0,0,0,0,79,74,80,69,71,80,114,101,69,110,99,111,100,101,0,0,79,74,80,69,71,83,101,116,117,112,69,110,99,111,100,101,0,0,0,0,0,0,0,0,79,74,80,69,71,80,111,115,116,68,101,99,111,100,101,0,70,114,97,99,116,105,111,110,97,108,32,115,99,97,110,108,105,110,101,32,110,111,116,32,114,101,97,100,0,0,0,0,99,99,62,48,0,0,0,0,79,74,80,69,71,68,101,99,111,100,101,83,99,97,110,108,105,110,101,115,0,0,0,0,79,74,80,69,71,68,101,99,111,100,101,82,97,119,0,0,79,74,80,69,71,80,114,101,68,101,99,111,100,101,83,107,105,112,83,99,97,110,108,105,110,101,115,0,0,0,0,0,115,112,45,62,115,117,98,115,97,109,112,108,105,110,103,95,99,111,110,118,101,114,116,95,121,99,98,99,114,98,117,102,61,61,48,0,0,0,0,0,79,74,80,69,71,87,114,105,116,101,72,101,97,100,101,114,73,110,102,111,0,0,0,0,115,112,45,62,115,117,98,115,97,109,112,108,105,110,103,95,99,111,110,118,101,114,116,95,121,99,98,99,114,105,109,97,103,101,61,61,48,0,0,0,76,105,98,74,112,101,103,0,85,110,101,120,112,101,99,116,101,100,32,101,114,114,111,114,0,0,0,0,0,0,0,0,80,114,101,109,97,116,117,114,101,32,101,110,100,32,111,102,32,74,80,69,71,32,100,97,116,97,0,0,0,0,0,0,115,112,45,62,111,117,116,95,115,116,97,116,101,60,61,111,115,111,115,69,111,105,0,0,79,74,80,69,71,87,114,105,116,101,83,116,114,101,97,109,0,0,0,0,0,0,0,0,115,112,45,62,105,110,95,98,117,102,102,101,114,95,116,111,103,111,62,48,0,0,0,0,79,74,80,69,71,87,114,105,116,101,83,116,114,101,97,109,67,111,109,112,114,101,115,115,101,100,0,0,0,0,0,0,110,62,48,0,0,0,0,0,79,74,80,69,71,82,101,97,100,66,117,102,102,101,114,70,105,108,108,0,0,0,0,0,110,60,61,79,74,80,69,71,95,66,85,70,70,69,82,0,40,117,105,110,116,54,52,41,110,60,61,115,112,45,62,105,110,95,98,117,102,102,101,114,95,102,105,108,101,95,116,111,103,111,0,0,0,0,0,0,79,74,80,69,71,87,114,105,116,101,83,116,114,101,97,109,83,111,115,0,0,0,0,0,50,53,53,62,61,54,43,115,112,45,62,115,97,109,112,108,101,115,95,112,101,114,95,112,105,120,101,108,95,112,101,114,95,112,108,97,110,101,42,50,0,0,0,0,0,0,0,0,79,74,80,69,71,87,114,105,116,101,83,116,114,101,97,109,83,111,102,0,0,0,0,0,50,53,53,62,61,56,43,115,112,45,62,115,97,109,112,108,101,115,95,112,101,114,95,112,105,120,101,108,95,112,101,114,95,112,108,97,110,101,42,51],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+215040);allocate([115,62,48,0,0,0,0,0,79,74,80,69,71,82,101,97,100,83,101,99,111,110,100,97,114,121,83,111,115,0,0,0,115,60,51,0,0,0,0,0,115,112,45,62,115,111,115,95,101,110,100,91,48,93,46,108,111,103,33,61,48,0,0,0,115,112,45,62,115,111,115,95,101,110,100,91,115,93,46,108,111,103,61,61,48,0,0,0,115,112,45,62,115,117,98,115,97,109,112,108,105,110,103,99,111,114,114,101,99,116,61,61,48,0,0,0,0,0,0,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,83,116,114,101,97,109,83,111,115,0,67,111,114,114,117,112,116,32,83,79,83,32,109,97,114,107,101,114,32,105,110,32,74,80,69,71,32,100,97,116,97,0,115,112,45,62,105,110,95,98,117,102,102,101,114,95,116,111,103,111,61,61,48,0,0,0,79,74,80,69,71,82,101,97,100,83,107,105,112,0,0,0,79,74,80,69,71,82,101,97,100,66,121,116,101,0,0,0,115,112,45,62,114,101,97,100,104,101,97,100,101,114,95,100,111,110,101,61,61,48,0,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,0,0,0,0,0,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,32,37,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,116,104,105,115,32,99,111,109,112,114,101,115,115,105,111,110,32,115,99,104,101,109,101,0,0,0,0,73,110,99,111,109,112,97,116,105,98,108,101,32,118,101,114,116,105,99,97,108,32,115,117,98,115,97,109,112,108,105,110,103,32,97,110,100,32,105,109,97,103,101,32,115,116,114,105,112,47,116,105,108,101,32,108,101,110,103,116,104,0,0,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,0,0,0,0,0,0,0,115,112,45,62,112,108,97,110,101,95,115,97,109,112,108,101,95,111,102,102,115,101,116,61,61,48,0,0,0,0,0,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,0,0,85,110,107,110,111,119,110,32,109,97,114,107,101,114,32,116,121,112,101,32,37,100,32,105,110,32,74,80,69,71,32,100,97,116,97,0,0,0,0,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,84,97,98,108,101,115,65,99,84,97,98,108,101,0,0,0,0,0,77,105,115,115,105,110,103,32,74,80,69,71,32,116,97,98,108,101,115,0,0,0,0,0,67,111,114,114,117,112,116,32,74,112,101,103,65,99,84,97,98,108,101,115,32,116,97,103,32,118,97,108,117,101,0,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,84,97,98,108,101,115,68,99,84,97,98,108,101,0,0,0,0,0,67,111,114,114,117,112,116,32,74,112,101,103,68,99,84,97,98,108,101,115,32,116,97,103,32,118,97,108,117,101,0,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,84,97,98,108,101,115,81,84,97,98,108,101,0,0,0,0,0,0,67,111,114,114,117,112,116,32,74,112,101,103,81,84,97,98,108,101,115,32,116,97,103,32,118,97,108,117,101,0,0,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,83,116,114,101,97,109,83,111,102,0,67,111,114,114,117,112,116,32,83,79,70,32,109,97,114,107,101,114,32,105,110,32,74,80,69,71,32,100,97,116,97,0,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,110,100,105,99,97,116,101,115,32,117,110,101,120,112,101,99,116,101,100,32,110,117,109,98,101,114,32,111,102,32,115,97,109,112,108,101,115,0,0,0,0,0,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,110,100,105,99,97,116,101,115,32,117,110,101,120,112,101,99,116,101,100,32,110,117,109,98,101,114,32,111,102,32,98,105,116,115,32,112,101,114,32,115,97,109,112,108,101,0,0,0,0,0,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,110,100,105,99,97,116,101,115,32,117,110,101,120,112,101,99,116,101,100,32,104,101,105,103,104,116,0,0,0,0,0,0,0,0,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,110,100,105,99,97,116,101,115,32,117,110,101,120,112,101,99,116,101,100,32,119,105,100,116,104,0,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,109,97,103,101,32,119,105,100,116,104,32,101,120,99,101,101,100,115,32,101,120,112,101,99,116,101,100,32,105,109,97,103,101,32,119,105,100,116,104,0,0,0,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,110,100,105,99,97,116,101,115,32,117,110,101,120,112,101,99,116,101,100,32,115,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,0,0,0,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,83,116,114,101,97,109,68,104,116,0,67,111,114,114,117,112,116,32,68,72,84,32,109,97,114,107,101,114,32,105,110,32,74,80,69,71,32,100,97,116,97,0,108,101,110,62,48,0,0,0,79,74,80,69,71,82,101,97,100,66,108,111,99,107,0,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,83,116,114,101,97,109,68,113,116,0,67,111,114,114,117,112,116,32,68,81,84,32,109,97,114,107,101,114,32,105,110,32,74,80,69,71,32,100,97,116,97,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,83,116,114,101,97,109,68,114,105,0,67,111,114,114,117,112,116,32,68,82,73,32,109,97,114,107,101,114,32,105,110,32,74,80,69,71,32,100,97,116,97,0,79,74,80,69,71,82,101,97,100,66,121,116,101,65,100,118,97,110,99,101,0,0,0,0,79,74,80,69,71,82,101,97,100,66,121,116,101,80,101,101,107,0,0,0,0,0,0,0,115,112,45,62,115,117,98,115,97,109,112,108,105,110,103,99,111,114,114,101,99,116,95,100,111,110,101,61,61,48,0,0,79,74,80,69,71,83,117,98,115,97,109,112,108,105,110,103,67,111,114,114,101,99,116,0,83,117,98,115,97,109,112,108,105,110,103,32,116,97,103,32,110,111,116,32,97,112,112,114,111,112,114,105,97,116,101,32,102,111,114,32,116,104,105,115,32,80,104,111,116,111,109,101,116,114,105,99,32,97,110,100,47,111,114,32,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,0,0,0,0,0,83,117,98,115,97,109,112,108,105,110,103,32,116,97,103,32,105,115,32,110,111,116,32,115,101,116,44,32,121,101,116,32,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,91,37,100,44,37,100,93,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,100,101,102,97,117,108,116,32,118,97,108,117,101,115,32,91,50,44,50,93,59,32,97,115,115,117,109,105,110,103,32,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,105,115,32,99,111,114,114,101,99,116,0,0,0,0,0,0,83,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,91,37,100,44,37,100,93,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,115,117,98,115,97,109,112,108,105,110,103,32,116,97,103,32,118,97,108,117,101,115,32,91,37,100,44,37,100,93,59,32,97,115,115,117,109,105,110,103,32,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,105,115,32,99,111,114,114,101,99,116,0,0,0,0,83,117,98,115,97,109,112,108,105,110,103,32,116,97,103,32,105,115,32,110,111,116,32,115,101,116,44,32,121,101,116,32,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,100,101,102,97,117,108,116,32,118,97,108,117,101,115,32,91,50,44,50,93,32,40,110,111,114,32,97,110,121,32,111,116,104,101,114,32,118,97,108,117,101,115,32,97,108,108,111,119,101,100,32,105,110,32,84,73,70,70,41,59,32,97,115,115,117,109,105,110,103,32,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,105,115,32,99,111,114,114,101,99,116,32,97,110,100,32,100,101,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,101,99,111,109,112,114,101,115,115,105,111,110,0,0,0,83,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,115,117,98,115,97,109,112,108,105,110,103,32,116,97,103,32,118,97,108,117,101,115,32,91,37,100,44,37,100,93,32,40,110,111,114,32,97,110,121,32,111,116,104,101,114,32,118,97,108,117,101,115,32,97,108,108,111,119,101,100,32,105,110,32,84,73,70,70,41,59,32,97,115,115,117,109,105,110,103,32,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,105,115,32,99,111,114,114,101,99,116,32,97,110,100,32,100,101,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,101,99,111,109,112,114,101,115,115,105,111,110,0,83,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,32,91,37,100,44,37,100,93,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,84,73,70,70,0,0,0,0,0,0,79,74,80,69,71,83,101,116,117,112,68,101,99,111,100,101,0,0,0,0,0,0,0,0,68,101,112,114,101,99,105,97,116,101,100,32,97,110,100,32,116,114,111,117,98,108,101,115,111,109,101,32,111,108,100,45,115,116,121,108,101,32,74,80,69,71,32,99,111,109,112,114,101,115,115,105,111,110,32,109,111,100,101,44,32,112,108,101,97,115,101,32,99,111,110,118,101,114,116,32,116,111,32,110,101,119,45,115,116,121,108,101,32,74,80,69,71,32,99,111,109,112,114,101,115,115,105,111,110,32,97,110,100,32,110,111,116,105,102,121,32,118,101,110,100,111,114,32,111,102,32,119,114,105,116,105,110,103,32,115,111,102,116,119,97,114,101,0,115,112,33,61,78,85,76,76,0,0,0,0,0,0,0,0,79,74,80,69,71,80,114,105,110,116,68,105,114,0,0,0,32,32,74,112,101,103,73,110,116,101,114,99,104,97,110,103,101,70,111,114,109,97,116,58,32,37,108,117,10,0,0,0,32,32,74,112,101,103,73,110,116,101,114,99,104,97,110,103,101,70,111,114,109,97,116,76,101,110,103,116,104,58,32,37,108,117,10,0,0,0,0,0,32,32,74,112,101,103,81,84,97,98,108,101,115,58,0,0,32,37,108,117,0,0,0,0,32,32,74,112,101,103,68,99,84,97,98,108,101,115,58,0,32,32,74,112,101,103,65,99,84,97,98,108,101,115,58,0,32,32,74,112,101,103,80,114,111,99,58,32,37,117,10,0,32,32,74,112,101,103,82,101,115,116,97,114,116,73,110,116,101,114,118,97,108,58,32,37,117,10,0,0,0,0,0,0,79,74,80,69,71,86,83,101,116,70,105,101,108,100,0,0,74,112,101,103,81,84,97,98,108,101,115,32,116,97,103,32,104,97,115,32,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,0,0,0,0,0,74,112,101,103,68,99,84,97,98,108,101,115,32,116,97,103,32,104,97,115,32,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,0,0,0,0,74,112,101,103,65,99,84,97,98,108,101,115,32,116,97,103,32,104,97,115,32,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,0,0,0,0,74,112,101,103,73,110,116,101,114,99,104,97,110,103,101,70,111,114,109,97,116,0,0,0,74,112,101,103,73,110,116,101,114,99,104,97,110,103,101,70,111,114,109,97,116,76,101,110,103,116,104,0,0,0,0,0,74,112,101,103,81,84,97,98,108,101,115,0,0,0,0,0,74,112,101,103,68,99,84,97,98,108,101,115,0,0,0,0,74,112,101,103,65,99,84,97,98,108,101,115,0,0,0,0,74,112,101,103,80,114,111,99,0,0,0,0,0,0,0,0,74,112,101,103,82,101,115,116,97,114,116,73,110,116,101,114,118,97,108,0,0,0,0,0,34,37,115,34,58,32,66,97,100,32,109,111,100,101,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,111,112,101,110,46,99,0,0,0,0,0,0,84,73,70,70,67,108,105,101,110,116,79,112,101,110,0,0,37,115,58,32,79,117,116,32,111,102,32,109,101,109,111,114,121,32,40,84,73,70,70,32,115,116,114,117,99,116,117,114,101,41,0,0,0,0,0,0,79,110,101,32,111,102,32,116,104,101,32,99,108,105,101,110,116,32,112,114,111,99,101,100,117,114,101,115,32,105,115,32,78,85,76,76,32,112,111,105,110,116,101,114,46,0,0,0,67,97,110,110,111,116,32,114,101,97,100,32,84,73,70,70,32,104,101,97,100,101,114,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,84,73,70,70,32,104,101,97,100,101,114,0,0,0,0,0,0,0,78,111,116,32,97,32,84,73,70,70,32,102,105,108,101,44,32,98,97,100,32,109,97,103,105,99,32,110,117,109,98,101,114,32,37,100,32,40,48,120,37,120,41,0,0,0,0,0,78,111,116,32,97,32,84,73,70,70,32,102,105,108,101,44,32,98,97,100,32,118,101,114,115,105,111,110,32,110,117,109,98,101,114,32,37,100,32,40,48,120,37,120,41,0,0,0,78,111,116,32,97,32,84,73,70,70,32,102,105,108,101,44,32,98,97,100,32,66,105,103,84,73,70,70,32,111,102,102,115,101,116,115,105,122,101,32,37,100,32,40,48,120,37,120,41,0,0,0,0,0,0,0,78,111,116,32,97,32,84,73,70,70,32,102,105,108,101,44,32,98,97,100,32,66,105,103,84,73,70,70,32,117,110,117,115,101,100,32,37,100,32,40,48,120,37,120,41,0,0,0,40,116,111,102,102,95,116,41,116,105,102,45,62,116,105,102,95,115,105,122,101,61,61,110,0,0,0,0,0,0,0,0,80,97,99,107,66,105,116,115,68,101,99,111,100,101,0,0,68,105,115,99,97,114,100,105,110,103,32,37,108,117,32,98,121,116,101,115,32,116,111,32,97,118,111,105,100,32,98,117,102,102,101,114,32,111,118,101,114,114,117,110,0,0,0,0,84,101,114,109,105,110,97,116,105,110,103,32,80,97,99,107,66,105,116,115,68,101,99,111,100,101,32,100,117,101,32,116,111,32,108,97,99,107,32,111,102,32,100,97,116,97,46,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,102,111,114,32,115,99,97,110,108,105,110,101,32,37,108,117,0,0,0,0,0,0,0,0,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,80,73,88,65,82,76,79,71,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,112,105,120,97,114,108,111,103,46,99,0,0,84,73,70,70,73,110,105,116,80,105,120,97,114,76,111,103,0,0,0,0,0,0,0,0,13,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,72,112,5,0,0,0,0,0,22,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,72,112,5,0,0,0,0,0,77,101,114,103,105,110,103,32,80,105,120,97,114,76,111,103,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,80,105,120,97,114,76,111,103,32,115,116,97,116,101,32,98,108,111,99,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,105,120,97,114,76,111,103,86,83,101,116,70,105,101,108,100,0,0,0,0,0,0,0,80,105,120,97,114,76,111,103,67,108,101,97,110,117,112,0,80,105,120,97,114,76,111,103,69,110,99,111,100,101,0,0,37,100,32,98,105,116,32,105,110,112,117,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,105,110,32,80,105,120,97,114,76,111,103,0,0,90,76,105,98,32,99,97,110,110,111,116,32,100,101,97,108,32,119,105,116,104,32,98,117,102,102,101,114,115,32,116,104,105,115,32,115,105,122,101,0,80,105,120,97,114,76,111,103,80,111,115,116,69,110,99,111,100,101,0,0,0,0,0,0,80,105,120,97,114,76,111,103,80,114,101,69,110,99,111,100,101,0,0,0,0,0,0,0,80,105,120,97,114,76,111,103,83,101,116,117,112,69,110,99,111,100,101,0,0,0,0,0,80,105,120,97,114,76,111,103,32,99,111,109,112,114,101,115,115,105,111,110,32,99,97,110,39,116,32,104,97,110,100,108,101,32,37,100,32,98,105,116,32,108,105,110,101,97,114,32,101,110,99,111,100,105,110,103,115,0,0,0,0,0,0,0,80,105,120,97,114,76,111,103,68,101,99,111,100,101,0,0,115,116,114,105,100,101,32,37,108,117,32,105,115,32,110,111,116,32,97,32,109,117,108,116,105,112,108,101,32,111,102,32,115,97,109,112,108,101,32,99,111,117,110,116,44,32,37,108,117,44,32,100,97,116,97,32,116,114,117,110,99,97,116,101,100,46,0,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,98,105,116,115,47,115,97,109,112,108,101,58,32,37,100,0,0,0,0,0,80,105,120,97,114,76,111,103,80,114,101,68,101,99,111,100,101,0,0,0,0,0,0,0,80,105,120,97,114,76,111,103,83,101,116,117,112,68,101,99,111,100,101,0,0,0,0,0,80,105,120,97,114,76,111,103,32,99,111,109,112,114,101,115,115,105,111,110,32,99,97,110,39,116,32,104,97,110,100,108,101,32,98,105,116,115,32,100,101,112,116,104,47,100,97,116,97,32,102,111,114,109,97,116,32,99,111,109,98,105,110,97,116,105,111,110,32,40,100,101,112,116,104,58,32,37,100,41,0,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,112,114,101,100,105,99,116,46,99,0,0,0,84,73,70,70,80,114,101,100,105,99,116,111,114,73,110,105,116,0,0,0,0,0,0,0,61,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,66,0,0,0,216,133,3,0,0,0,0,0,0,0,0,0,77,101,114,103,105,110,103,32,80,114,101,100,105,99,116,111,114,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,0,0,0,84,73,70,70,80,114,101,100,105,99,116,111,114,67,108,101,97,110,117,112,0,0,0,0,40,99,99,37,40,98,112,115,42,115,116,114,105,100,101,41,41,61,61,48,0,0,0,0,102,112,68,105,102,102,0,0,80,114,101,100,105,99,116,111,114,69,110,99,111,100,101,84,105,108,101,0,0,0,0,0,115,112,45,62,101,110,99,111,100,101,112,102,117,110,99,32,33,61,32,78,85,76,76,0,115,112,45,62,101,110,99,111,100,101,116,105,108,101,32,33,61,32,78,85,76,76,0,0,79,117,116,32,111,102,32,109,101,109,111,114,121,32,97,108,108,111,99,97,116,105,110,103,32,37,108,100,32,98,121,116,101,32,116,101,109,112,32,98,117,102,102,101,114,46,0,0,114,111,119,115,105,122,101,32,62,32,48,0,0,0,0,0,40,99,99,48,37,114,111,119,115,105,122,101,41,61,61,48,0,0,0,0,0,0,0,0,80,114,101,100,105,99,116,111,114,69,110,99,111,100,101,82,111,119,0,0,0,0,0,0,115,112,45,62,101,110,99,111,100,101,114,111,119,32,33,61,32,78,85,76,76,0,0,0,40,99,99,37,40,52,42,115,116,114,105,100,101,41,41,61,61,48,0,0,0,0,0,0,104,111,114,68,105,102,102,51,50,0,0,0,0,0,0,0,40,99,99,37,40,50,42,115,116,114,105,100,101,41,41,61,61,48,0,0,0,0,0,0,104,111,114,68,105,102,102,49,54,0,0,0,0,0,0,0,40,99,99,37,115,116,114,105,100,101,41,61,61,48,0,0,104,111,114,68,105,102,102,56,0,0,0,0,0,0,0,0,80,114,101,100,105,99,116,111,114,83,101,116,117,112,0,0,72,111,114,105,122,111,110,116,97,108,32,100,105,102,102,101,114,101,110,99,105,110,103,32,34,80,114,101,100,105,99,116,111,114,34,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,119,105,116,104,32,37,100,45,98,105,116,32,115,97,109,112,108,101,115,0,0,0,70,108,111,97,116,105,110,103,32,112,111,105,110,116,32,34,80,114,101,100,105,99,116,111,114,34,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,119,105,116,104,32,37,100,32,100,97,116,97,32,102,111,114,109,97,116,0,0,0,0,34,80,114,101,100,105,99,116,111,114,34,32,118,97,108,117,101,32,37,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,0,102,112,65,99,99,0,0,0,115,119,97,98,72,111,114,65,99,99,51,50,0,0,0,0,115,119,97,98,72,111,114,65,99,99,49,54,0,0,0,0,80,114,101,100,105,99,116,111,114,68,101,99,111,100,101,84,105,108,101,0,0,0,0,0,115,112,45,62,100,101,99,111,100,101,116,105,108,101,32,33,61,32,78,85,76,76,0,0,40,111,99,99,48,37,114,111,119,115,105,122,101,41,61,61,48,0,0,0,0,0,0,0,115,112,45,62,100,101,99,111,100,101,112,102,117,110,99,32,33,61,32,78,85,76,76,0,80,114,101,100,105,99,116,111,114,68,101,99,111,100,101,82,111,119,0,0,0,0,0,0,115,112,45,62,100,101,99,111,100,101,114,111,119,32,33,61,32,78,85,76,76,0,0,0,104,111,114,65,99,99,51,50,0,0,0,0,0,0,0,0,104,111,114,65,99,99,49,54,0,0,0,0,0,0,0,0,104,111,114,65,99,99,56,0,32,32,80,114,101,100,105,99,116,111,114,58,32,0,0,0,110,111,110,101,32,0,0,0,104,111,114,105,122,111,110,116,97,108,32,100,105,102,102,101,114,101,110,99,105,110,103,32,0,0,0,0,0,0,0,0,102,108,111,97,116,105,110,103,32,112,111,105,110,116,32,112,114,101,100,105,99,116,111,114,32,0,0,0,0,0,0,0,37,117,32,40,48,120,37,120,41,10,0,0,0,0,0,0,80,114,101,100,105,99,116,111,114,86,83,101,116,70,105,101,108,100,0,0,0,0,0,0,115,112,45,62,118,115,101,116,112,97,114,101,110,116,32,33,61,32,78,85,76,76,0,0,80,114,101,100,105,99,116,111,114,86,71,101,116,70,105,101,108,100,0,0,0,0,0,0,115,112,45,62,118,103,101,116,112,97,114,101,110,116,32,33,61,32,78,85,76,76,0,0,80,114,101,100,105,99,116,111,114,0,0,0,0,0,0,0,84,73,70,70,82,101,97,100,69,110,99,111,100,101,100,83,116,114,105,112,0,0,0,0,37,108,117,58,32,83,116,114,105,112,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,0,0,0,0,0,0,0,84,73,70,70,70,105,108,108,83,116,114,105,112,0,0,0,73,110,118,97,108,105,100,32,115,116,114,105,112,32,98,121,116,101,32,99,111,117,110,116,32,37,108,108,117,44,32,115,116,114,105,112,32,37,108,117,0,0,0,0,0,0,0,0,82,101,97,100,32,101,114,114,111,114,32,111,110,32,115,116,114,105,112,32,37,108,117,59,32,103,111,116,32,37,108,108,117,32,98,121,116,101,115,44,32,101,120,112,101,99,116,101,100,32,37,108,108,117,0,0,68,97,116,97,32,98,117,102,102,101,114,32,116,111,111,32,115,109,97,108,108,32,116,111,32,104,111,108,100,32,115,116,114,105,112,32,37,108,117,0,84,73,70,70,82,101,97,100,69,110,99,111,100,101,100,84,105,108,101,0,0,0,0,0,37,108,117,58,32,84,105,108,101,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,84,73,70,70,70,105,108,108,84,105,108,101,0,0,0,0,37,108,108,117,58,32,73,110,118,97,108,105,100,32,116,105,108,101,32,98,121,116,101,32,99,111,117,110,116,44,32,116,105,108,101,32,37,108,117,0,68,97,116,97,32,98,117,102,102,101,114,32,116,111,111,32,115,109,97,108,108,32,116,111,32,104,111,108,100,32,116,105,108,101,32,37,108,117,0,0,40,116,105,102,45,62,116,105,102,95,102,108,97,103,115,38,84,73,70,70,95,78,79,82,69,65,68,82,65,87,41,61,61,48,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,114,101,97,100,46,99,0,0,0,0,0,0,84,73,70,70,82,101,97,100,66,117,102,102,101,114,83,101,116,117,112,0,0,0,0,0,73,110,118,97,108,105,100,32,98,117,102,102,101,114,32,115,105,122,101,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,100,97,116,97,32,98,117,102,102,101,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,0,0,0,0,0,0,0,0,40,99,99,32,38,32,49,41,32,61,61,32,48,0,0,0,95,84,73,70,70,83,119,97,98,49,54,66,105,116,68,97,116,97,0,0,0,0,0,0,40,99,99,32,37,32,51,41,32,61,61,32,48,0,0,0,95,84,73,70,70,83,119,97,98,50,52,66,105,116,68,97,116,97,0,0,0,0,0,0,40,99,99,32,38,32,51,41,32,61,61,32,48,0,0,0,95,84,73,70,70,83,119,97,98,51,50,66,105,116,68,97,116,97,0,0,0,0,0,0,40,99,99,32,38,32,55,41,32,61,61,32,48,0,0,0,95,84,73,70,70,83,119,97,98,54,52,66,105,116,68,97,116,97,0,0,0,0,0,0,70,105,108,101,32,110,111,116,32,111,112,101,110,32,102,111,114,32,114,101,97,100,105,110,103,0,0,0,0,0,0,0,67,97,110,32,110,111,116,32,114,101,97,100,32,116,105,108,101,115,32,102,114,111,109,32,97,32,115,116,114,105,112,112,101,100,32,105,109,97,103,101,0,0,0,0,0,0,0,0,67,97,110,32,110,111,116,32,114,101,97,100,32,115,99,97,110,108,105,110,101,115,32,102,114,111,109,32,97,32,116,105,108,101,100,32,105,109,97,103,101,0,0,0,0,0,0,0,84,73,70,70,82,101,97,100,82,97,119,84,105,108,101,49,0,0,0,0,0,0,0,0,83,101,101,107,32,101,114,114,111,114,32,97,116,32,114,111,119,32,37,108,117,44,32,99,111,108,32,37,108,117,44,32,116,105,108,101,32,37,108,117,0,0,0,0,0,0,0,0,82,101,97,100,32,101,114,114,111,114,32,97,116,32,114,111,119,32,37,108,117,44,32,99,111,108,32,37,108,117,59,32,103,111,116,32,37,108,108,117,32,98,121,116,101,115,44,32,101,120,112,101,99,116,101,100,32,37,108,108,117,0,0,0,82,101,97,100,32,101,114,114,111,114,32,97,116,32,114,111,119,32,37,108,117,44,32,99,111,108,32,37,108,117,44,32,116,105,108,101,32,37,108,117,59,32,103,111,116,32,37,108,108,117,32,98,121,116,101,115,44,32,101,120,112,101,99,116,101,100,32,37,108,108,117,0,84,73,70,70,82,101,97,100,82,97,119,83,116,114,105,112,49,0,0,0,0,0,0,0,83,101,101,107,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,44,32,115,116,114,105,112,32,37,108,117,0,0,0,82,101,97,100,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,59,32,103,111,116,32,37,108,108,117,32,98,121,116,101,115,44,32,101,120,112,101,99,116,101,100,32,37,108,108,117,0,0,0,0,0,0,0,82,101,97,100,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,44,32,115,116,114,105,112,32,37,108,117,59,32,103,111,116,32,37,108,108,117,32,98,121,116,101,115,44,32,101,120,112,101,99,116,101,100,32,37,108,108,117,0,0,0,0,84,73,70,70,67,111,109,112,117,116,101,83,116,114,105,112,0,0,0,0,0,0,0,0,84,73,70,70,78,117,109,98,101,114,79,102,83,116,114,105,112,115,0,0,0,0,0,0,84,73,70,70,86,83,116,114,105,112,83,105,122,101,54,52,0,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,116,100,95,115,97,109,112,108,101,115,112,101,114,112,105,120,101,108,32,118,97,108,117,101,0,0,0,0,0,0,0,0,84,73,70,70,86,83,116,114,105,112,83,105,122,101,0,0,84,73,70,70,83,116,114,105,112,83,105,122,101,0,0,0,84,73,70,70,83,99,97,110,108,105,110,101,83,105,122,101,54,52,0,0,0,0,0,0,73,110,118,97,108,105,100,32,89,67,98,67,114,32,115,117,98,115,97,109,112,108,105,110,103,0,0,0,0,0,0,0,84,73,70,70,83,99,97,110,108,105,110,101,83,105,122,101,0,0,0,0,0,0,0,0,73,110,116,101,103,101,114,32,97,114,105,116,104,109,101,116,105,99,32,111,118,101,114,102,108,111,119,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,84,104,117,110,100,101,114,68,101,99,111,100,101,82,111,119,0,0,0,0,0,0,0,0,70,114,97,99,116,105,111,110,97,108,32,115,99,97,110,108,105,110,101,115,32,99,97,110,110,111,116,32,98,101,32,114,101,97,100,0,0,0,0,0,84,104,117,110,100,101,114,68,101,99,111,100,101,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,253,255,255,255,254,255,255,255,255,255,255,255,37,115,32,100,97,116,97,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,32,40,37,108,108,117,32,33,61,32,37,108,108,117,41,0,0,78,111,116,32,101,110,111,117,103,104,0,0,0,0,0,0,84,111,111,32,109,117,99,104,0,0,0,0,0,0,0,0,84,104,117,110,100,101,114,83,101,116,117,112,68,101,99,111,100,101,0,0,0,0,0,0,87,114,111,110,103,32,98,105,116,115,112,101,114,115,97,109,112,108,101,32,118,97,108,117,101,32,40,37,100,41,44,32,84,104,117,110,100,101,114,32,100,101,99,111,100,101,114,32,111,110,108,121,32,115,117,112,112,111,114,116,115,32,52,98,105,116,115,32,112,101,114,32,115,97,109,112,108,101,46,0,37,108,117,58,32,67,111,108,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,0,37,108,117,58,32,82,111,119,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,0,37,108,117,58,32,68,101,112,116,104,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,0,0,0,0,0,0,0,84,73,70,70,78,117,109,98,101,114,79,102,84,105,108,101,115,0,0,0,0,0,0,0,84,73,70,70,84,105,108,101,82,111,119,83,105,122,101,0,73,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,0,0,0,0,0,0,0,0,84,73,70,70,86,84,105,108,101,83,105,122,101,54,52,0,73,110,118,97,108,105,100,32,89,67,98,67,114,32,115,117,98,115,97,109,112,108,105,110,103,32,40,37,100,120,37,100,41,0,0,0,0,0,0,0,84,73,70,70,84,105,108,101,83,105,122,101,0,0,0,0,0,0,0,0,0,0,0,0,84,73,70,70,87,114,105,116,101,83,99,97,110,108,105,110,101,0,0,0,0,0,0,0,67,97,110,32,110,111,116,32,99,104,97,110,103,101,32,34,73,109,97,103,101,76,101,110,103,116,104,34,32,119,104,101,110,32,117,115,105,110,103,32,115,101,112,97,114,97,116,101,32,112,108,97,110,101,115,0,37,108,117,58,32,83,97,109,112,108,101,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,0,0,0,0,0,0,70,105,108,101,32,110,111,116,32,111,112,101,110,32,102,111,114,32,119,114,105,116,105,110,103,0,0,0,0,0,0,0,67,97,110,32,110,111,116,32,119,114,105,116,101,32,116,105,108,101,115,32,116,111,32,97,32,115,116,114,105,112,112,101,100,32,105,109,97,103,101,0,67,97,110,32,110,111,116,32,119,114,105,116,101,32,115,99,97,110,108,105,110,101,115,32,116,111,32,97,32,116,105,108,101,100,32,105,109,97,103,101,0,0,0,0,0,0,0,0,77,117,115,116,32,115,101,116,32,34,73,109,97,103,101,87,105,100,116,104,34,32,98,101,102,111,114,101,32,119,114,105,116,105,110,103,32,100,97,116,97,0,0,0,0,0,0,0,77,117,115,116,32,115,101,116,32,34,80,108,97,110,97,114,67,111,110,102,105,103,117,114,97,116,105,111,110,34,32,98,101,102,111,114,101,32,119,114,105,116,105,110,103,32,100,97,116,97,0,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,37,115,32,97,114,114,97,121,115,0,0,116,105,108,101,0,0,0,0,115,116,114,105,112,0,0,0,84,73,70,70,87,114,105,116,101,66,117,102,102,101,114,83,101,116,117,112,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,111,117,116,112,117,116,32,98,117,102,102,101,114,0,0,0,0,0,0,116,100,45,62,116,100,95,110,115,116,114,105,112,115,32,62,32,48,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,119,114,105,116,101,46,99,0,0,0,0,0,84,73,70,70,65,112,112,101,110,100,84,111,83,116,114,105,112,0,0,0,0,0,0,0,83,101,101,107,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,0,0,0,0,0,0,77,97,120,105,109,117,109,32,84,73,70,70,32,102,105,108,101,32,115,105,122,101,32,101,120,99,101,101,100,101,100,0,87,114,105,116,101,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,0,0,0,0,0,116,100,45,62,116,100,95,112,108,97,110,97,114,99,111,110,102,105,103,32,61,61,32,80,76,65,78,65,82,67,79,78,70,73,71,95,67,79,78,84,73,71,0,0,0,0,0,0,84,73,70,70,71,114,111,119,83,116,114,105,112,115,0,0,78,111,32,115,112,97,99,101,32,116,111,32,101,120,112,97,110,100,32,115,116,114,105,112,32,97,114,114,97,121,115,0,40,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,68,69,70,76,65,84,69,41,32,124,124,32,40,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,65,68,79,66,69,95,68,69,70,76,65,84,69,41,0,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,122,105,112,46,99,0,0,0,0,0,0,0,84,73,70,70,73,110,105,116,90,73,80,0,0,0,0,0,21,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,1,0,72,112,5,0,0,0,0,0,0,0,0,0,77,101,114,103,105,110,103,32,68,101,102,108,97,116,101,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,90,73,80,32,115,116,97,116,101,32,98,108,111,99,107,0,0,0,0,115,112,32,33,61,32,48,0,90,73,80,67,108,101,97,110,117,112,0,0,0,0,0,0,115,112,32,33,61,32,78,85,76,76,0,0,0,0,0,0,90,73,80,69,110,99,111,100,101,0,0,0,0,0,0,0,115,112,45,62,115,116,97,116,101,32,61,61,32,90,83,84,65,84,69,95,73,78,73,84,95,69,78,67,79,68,69,0,69,110,99,111,100,101,114,32,101,114,114,111,114,58,32,37,115,0,0,0,0,0,0,0,90,73,80,80,111,115,116,69,110,99,111,100,101,0,0,0,90,76,105,98,32,101,114,114,111,114,58,32,37,115,0,0,90,73,80,80,114,101,69,110,99,111,100,101,0,0,0,0,90,73,80,83,101,116,117,112,69,110,99,111,100,101,0,0,37,115,0,0,0,0,0,0,90,73,80,68,101,99,111,100,101,0,0,0,0,0,0,0,115,112,45,62,115,116,97,116,101,32,61,61,32,90,83,84,65,84,69,95,73,78,73,84,95,68,69,67,79,68,69,0,68,101,99,111,100,105,110,103,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,44,32,37,115,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,32,40,115,104,111,114,116,32,37,108,117,32,98,121,116,101,115,41,0,0,0,0,0,0,0,90,73,80,80,114,101,68,101,99,111,100,101,0,0,0,0,90,73,80,83,101,116,117,112,68,101,99,111,100,101,0,0,90,73,80,86,83,101,116,70,105,101,108,100,0,0,0,0,112,95,110,98,95,98,121,116,101,115,32,62,32,48,32,38,38,32,112,95,110,98,95,98,121,116,101,115,32,60,61,32,115,105,122,101,111,102,40,79,80,74,95,85,73,78,84,51,50,41,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,92,99,105,111,46,99,0,0,0,0,0,0,0,0,111,112,106,95,119,114,105,116,101,95,98,121,116,101,115,95,76,69,0,0,0,0,0,0,111,112,106,95,114,101,97,100,95,98,121,116,101,115,95,76,69,0,0,0,0,0,0,0,83,116,114,101,97,109,32,114,101,97,99,104,101,100,32,105,116,115,32,101,110,100,32,33,10,0,0,0,0,0,0,0,69,114,114,111,114,32,111,110,32,119,114,105,116,105,110,103,32,115,116,114,101,97,109,33,10,0,0,0,0,0,0,0,112,95,115,105,122,101,32,62,61,32,48,0,0,0,0,0,111,112,106,95,115,116,114,101,97,109,95,114,101,97,100,95,115,107,105,112,0,0,0,0,83,116,114,101,97,109,32,101,114,114,111,114,33,10,0,0,112,95,115,116,114,101,97,109,45,62,109,95,98,121,116,101,95,111,102,102,115,101,116,32,62,61,32,48,0,0,0,0,111,112,106,95,115,116,114,101,97,109,95,103,101,116,95,110,117,109,98,101,114,95,98,121,116,101,95,108,101,102,116,0,112,95,115,116,114,101,97,109,45,62,109,95,117,115,101,114,95,100,97,116,97,95,108,101,110,103,116,104,32,62,61,32,40,79,80,74,95,85,73,78,84,54,52,41,112,95,115,116,114,101,97,109,45,62,109,95,98,121,116,101,95,111,102,102,115,101,116,0,0,0,0,0,111,112,106,95,115,116,114,101,97,109,95,115,107,105,112,0,111,112,106,95,115,116,114,101,97,109,95,115,101,101,107,0,0,0,0,0,0,0,240,63,0,0,0,0,0,0,248,63,0,0,0,0,0,0,6,64,0,0,0,0,0,128,21,64,92,143,194,245,40,92,37,64,215,163,112,61,10,87,53,64,246,40,92,143,194,85,69,64,133,235,81,184,30,85,85,64,102,102,102,102,102,86,101,64,205,204,204,204,204,84,117,64,207,247,83,227,165,155,240,63,70,182,243,253,212,120,249,63,39,49,8,172,28,90,7,64,29,90,100,59,223,207,22,64,41,92,143,194,245,168,38,64,164,112,61,10,215,163,54,64,0,0,0,0,0,160,70,64,31,133,235,81,184,158,86,64,205,204,204,204,204,156,102,64,0,0,0,0,0,0,0,0,207,247,83,227,165,155,240,63,70,182,243,253,212,120,249,63,39,49,8,172,28,90,7,64,29,90,100,59,223,207,22,64,41,92,143,194,245,168,38,64,164,112,61,10,215,163,54,64,0,0,0,0,0,160,70,64,31,133,235,81,184,158,86,64,205,204,204,204,204,156,102,64,0,0,0,0,0,0,0,0,173,250,92,109,197,254,230,63,86,125,174,182,98,127,237,63,199,75,55,137,65,96,249,63,242,210,77,98,16,88,8,64,250,126,106,188,116,19,24,64,133,235,81,184,30,5,40,64,0,0,0,0,0,0,56,64,92,143,194,245,40,252,71,64,236,81,184,30,133,251,87,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,113,61,10,215,163,112,255,63,104,145,237,124,63,181,16,64,117,147,24,4,86,206,32,64,102,102,102,102,102,230,48,64,236,81,184,30,133,235,64,64,92,143,194,245,40,236,80,64,154,153,153,153,153,233,96,64,154,153,153,153,153,233,112,64,51,51,51,51,51,231,128,64,147,24,4,86,14,45,0,64,182,243,253,212,120,233,15,64,246,40,92,143,194,181,32,64,10,215,163,112,61,10,49,64,195,245,40,92,143,34,65,64,184,30,133,235,81,40,81,64,154,153,153,153,153,41,97,64,154,153,153,153,153,41,113,64,0,0,0,0,0,40,129,64,0,0,0,0,0,0,0,0,147,24,4,86,14,45,0,64,182,243,253,212,120,233,15,64,246,40,92,143,194,181,32,64,10,215,163,112,61,10,49,64,195,245,40,92,143,34,65,64,184,30,133,235,81,40,81,64,154,153,153,153,153,41,97,64,154,153,153,153,153,41,113,64,0,0,0,0,0,40,129,64,0,0,0,0,0,0,0,0,164,112,61,10,215,163,0,64,236,81,184,30,133,235,14,64],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+225280);allocate([119,190,159,26,47,157,32,64,174,71,225,122,20,46,49,64,123,20,174,71,225,90,65,64,246,40,92,143,194,101,81,64,154,153,153,153,153,105,97,64,154,153,153,153,153,105,113,64,154,153,153,153,153,105,129,64,0,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,97,100,100,32,97,32,110,101,119,32,118,97,108,105,100,97,116,105,111,110,32,112,114,111,99,101,100,117,114,101,10,0,0,0,0,85,110,97,98,108,101,32,116,111,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,105,109,97,103,101,46,10,0,0,0,112,95,105,109,97,103,101,95,115,114,99,32,33,61,32,48,48,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,92,105,109,97,103,101,46,99,0,0,0,0,0,0,111,112,106,95,99,111,112,121,95,105,109,97,103,101,95,104,101,97,100,101,114,0,0,0,112,95,105,109,97,103,101,95,100,101,115,116,32,33,61,32,48,48,0,0,0,0,0,0,4,0,0,0,67,80,82,76,0,0,0,0,0,0,0,0,76,82,67,80,0,0,0,0,3,0,0,0,80,67,82,76,0,0,0,0,1,0,0,0,82,76,67,80,0,0,0,0,2,0,0,0,82,80,67,76,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,144,255,0,0,12,0,0,0,34,0,0,0,82,255,0,0,20,0,0,0,35,0,0,0,83,255,0,0,20,0,0,0,36,0,0,0,94,255,0,0,20,0,0,0,37,0,0,0,92,255,0,0,20,0,0,0,38,0,0,0,93,255,0,0,20,0,0,0,39,0,0,0,95,255,0,0,20,0,0,0,40,0,0,0,81,255,0,0,2,0,0,0,41,0,0,0,85,255,0,0,4,0,0,0,42,0,0,0,87,255,0,0,4,0,0,0,43,0,0,0,88,255,0,0,16,0,0,0,44,0,0,0,96,255,0,0,4,0,0,0,45,0,0,0,97,255,0,0,16,0,0,0,46,0,0,0,145,255,0,0,0,0,0,0,0,0,0,0,99,255,0,0,4,0,0,0,47,0,0,0,100,255,0,0,20,0,0,0,48,0,0,0,116,255,0,0,20,0,0,0,49,0,0,0,120,255,0,0,4,0,0,0,50,0,0,0,117,255,0,0,20,0,0,0,51,0,0,0,119,255,0,0,20,0,0,0,52,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,111,112,106,95,109,97,116,114,105,120,95,105,110,118,101,114,115,105,111,110,95,102,40,108,84,109,112,66,117,102,44,40,116,99,112,45,62,109,95,109,99,116,95,100,101,99,111,100,105,110,103,95,109,97,116,114,105,120,41,44,105,109,97,103,101,45,62,110,117,109,99,111,109,112,115,41,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,92,106,50,107,46,99,0,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,115,101,116,117,112,95,101,110,99,111,100,101,114,0,0,0,116,99,99,112,45,62,110,117,109,114,101,115,111,108,117,116,105,111,110,115,32,62,32,48,0,0,0,0,0,0,0,0,114,101,115,95,115,112,101,99,62,48,0,0,0,0,0,0,112,95,106,50,107,32,33,61,32,48,48,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,104,101,97,100,101,114,0,0,0,0,0,111,112,106,95,106,50,107,95,115,101,116,117,112,95,109,99,116,95,101,110,99,111,100,105,110,103,0,0,0,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,8,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,116,105,108,101,95,104,101,97,100,101,114,0,0,0,0,0,0,0,0,83,116,114,101,97,109,32,116,111,111,32,115,104,111,114,116,10,0,0,0,0,0,0,0,77,97,114,107,101,114,32,105,115,32,110,111,116,32,99,111,109,112,108,105,97,110,116,32,119,105,116,104,32,105,116,115,32,112,111,115,105,116,105,111,110,10,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,114,101,97,100,32,104,101,97,100,101,114,10,0,0,0,0,0,0,0,78,111,116,32,115,117,114,101,32,104,111,119,32,116,104,97,116,32,104,97,112,112,101,110,101,100,46,10,0,0,0,0,70,97,105,108,32,116,111,32,114,101,97,100,32,116,104,101,32,99,117,114,114,101,110,116,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,32,40,37,35,120,41,10,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,97,100,100,32,116,108,32,109,97,114,107,101,114,10,0,0,0,0,0,67,97,110,110,111,116,32,100,101,99,111,100,101,32,116,105,108,101,44,32,109,101,109,111,114,121,32,101,114,114,111,114,10,0,0,0,0,0,0,0,72,101,97,100,101,114,32,111,102,32,116,105,108,101,32,37,100,32,47,32,37,100,32,104,97,115,32,98,101,101,110,32,114,101,97,100,46,10,0,0,111,112,106,95,106,50,107,95,100,101,99,111,100,101,95,116,105,108,101,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,100,101,99,111,100,101,46,10,0,0,0,0,0,0,83,116,114,101,97,109,32,116,111,111,32,115,104,111,114,116,44,32,101,120,112,101,99,116,101,100,32,83,79,84,10,0,78,101,101,100,32,116,111,32,100,101,99,111,100,101,32,116,104,101,32,109,97,105,110,32,104,101,97,100,101,114,32,98,101,102,111,114,101,32,98,101,103,105,110,32,116,111,32,100,101,99,111,100,101,32,116,104,101,32,114,101,109,97,105,110,105,110,103,32,99,111,100,101,115,116,114,101,97,109,0,0,78,111,32,100,101,99,111,100,101,100,32,97,114,101,97,32,112,97,114,97,109,101,116,101,114,115,44,32,115,101,116,32,116,104,101,32,100,101,99,111,100,101,100,32,97,114,101,97,32,116,111,32,116,104,101,32,119,104,111,108,101,32,105,109,97,103,101,10,0,0,0,0,112,95,115,116,97,114,116,95,120,32,62,61,32,48,0,0,111,112,106,95,106,50,107,95,115,101,116,95,100,101,99,111,100,101,95,97,114,101,97,0,112,95,115,116,97,114,116,95,121,32,62,61,32,48,0,0,76,101,102,116,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,97,114,101,97,32,40,114,101,103,105,111,110,95,120,48,61,37,100,41,32,105,115,32,111,117,116,115,105,100,101,32,116,104,101,32,105,109,97,103,101,32,97,114,101,97,32,40,88,115,105,122,61,37,100,41,46,10,0,0,76,101,102,116,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,97,114,101,97,32,40,114,101,103,105,111,110,95,120,48,61,37,100,41,32,105,115,32,111,117,116,115,105,100,101,32,116,104,101,32,105,109,97,103,101,32,97,114,101,97,32,40,88,79,115,105,122,61,37,100,41,46,10,0,85,112,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,97,114,101,97,32,40,114,101,103,105,111,110,95,121,48,61,37,100,41,32,105,115,32,111,117,116,115,105,100,101,32,116,104,101,32,105,109,97,103,101,32,97,114,101,97,32,40,89,115,105,122,61,37,100,41,46,10,0,0,0,0,85,112,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,97,114,101,97,32,40,114,101,103,105,111,110,95,121,48,61,37,100,41,32,105,115,32,111,117,116,115,105,100,101,32,116,104,101,32,105,109,97,103,101,32,97,114,101,97,32,40,89,79,115,105,122,61,37,100,41,46,10,0,0,0,40,79,80,74,95,85,73,78,84,51,50,41,112,95,101,110,100,95,120,32,62,32,48,0,40,79,80,74,95,85,73,78,84,51,50,41,112,95,101,110,100,95,121,32,62,32,48,0,82,105,103,104,116,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,97,114,101,97,32,40,114,101,103,105,111,110,95,120,49,61,37,100,41,32,105,115,32,111,117,116,115,105,100,101,32,116,104,101,32,105,109,97,103,101,32,97,114,101,97,32,40,88,79,115,105,122,61,37,100,41,46,10,0,0,0,0,0,0,0,0,82,105,103,104,116,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,97,114,101,97,32,40,114,101,103,105,111,110,95,120,49,61,37,100,41,32,105,115,32,111,117,116,115,105,100,101,32,116,104,101,32,105,109,97,103,101,32,97,114,101,97,32,40,88,115,105,122,61,37,100,41,46,10,0,66,111,116,116,111,109,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,97,114,101,97,32,40,114,101,103,105,111,110,95,121,49,61,37,100,41,32,105,115,32,111,117,116,115,105,100,101,32,116,104,101,32,105,109,97,103,101,32,97,114,101,97,32,40,89,79,115,105,122,61,37,100,41,46,10,0,0,0,0,0,0,0,66,111,116,116,111,109,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,97,114,101,97,32,40,114,101,103,105,111,110,95,121,49,61,37,100,41,32,105,115,32,111,117,116,115,105,100,101,32,116,104,101,32,105,109,97,103,101,32,97,114,101,97,32,40,89,115,105,122,61,37,100,41,46,10,0,0,0,0,0,0,0,0,83,105,122,101,32,120,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,99,111,109,112,111,110,101,110,116,32,105,109,97,103,101,32,105,115,32,105,110,99,111,114,114,101,99,116,32,40,99,111,109,112,91,37,100,93,46,119,61,37,100,41,46,10,0,0,0,0,83,105,122,101,32,121,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,99,111,109,112,111,110,101,110,116,32,105,109,97,103,101,32,105,115,32,105,110,99,111,114,114,101,99,116,32,40,99,111,109,112,91,37,100,93,46,104,61,37,100,41,46,10,0,0,0,0,83,101,116,116,105,110,103,32,100,101,99,111,100,105,110,103,32,97,114,101,97,32,116,111,32,37,100,44,37,100,44,37,100,44,37,100,10,0,0,0,87,114,111,110,103,32,102,108,97,103,10,0,0,0,0,0,91,68,69,86,93,32,68,117,109,112,32,97,110,32,105,109,97,103,101,95,104,101,97,100,101,114,32,115,116,114,117,99,116,32,123,10,0,0,0,0,73,109,97,103,101,32,105,110,102,111,32,123,10,0,0,0,37,115,32,120,48,61,37,100,44,32,121,48,61,37,100,10,0,0,0,0,0,0,0,0,37,115,32,120,49,61,37,100,44,32,121,49,61,37,100,10,0,0,0,0,0,0,0,0,37,115,32,110,117,109,99,111,109,112,115,61,37,100,10,0,37,115,9,32,99,111,109,112,111,110,101,110,116,32,37,100,32,123,10,0,0,0,0,0,37,115,125,10,0,0,0,0,125,10,0,0,0,0,0,0,91,68,69,86,93,32,68,117,109,112,32,97,110,32,105,109,97,103,101,95,99,111,109,112,95,104,101,97,100,101,114,32,115,116,114,117,99,116,32,123,10,0,0,0,0,0,0,0,37,115,32,100,120,61,37,100,44,32,100,121,61,37,100,10,0,0,0,0,0,0,0,0,37,115,32,112,114,101,99,61,37,100,10,0,0,0,0,0,37,115,32,115,103,110,100,61,37,100,10,0,0,0,0,0,87,101,32,110,101,101,100,32,97,110,32,105,109,97,103,101,32,112,114,101,118,105,111,117,115,108,121,32,99,114,101,97,116,101,100,46,10,0,0,0,84,105,108,101,32,105,110,100,101,120,32,112,114,111,118,105,100,101,100,32,98,121,32,116,104,101,32,117,115,101,114,32,105,115,32,105,110,99,111,114,114,101,99,116,32,37,100,32,40,109,97,120,32,61,32,37,100,41,32,10,0,0,0,0,82,101,115,111,108,117,116,105,111,110,32,102,97,99,116,111,114,32,105,115,32,103,114,101,97,116,101,114,32,116,104,97,110,32,116,104,101,32,109,97,120,105,109,117,109,32,114,101,115,111,108,117,116,105,111,110,32,105,110,32,116,104,101,32,99,111,109,112,111,110,101,110,116,46,10,0,0,0,0,0,111,112,106,95,106,50,107,95,101,110,99,111,100,101,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,101,110,99,111,100,101,32,97,108,108,32,116,105,108,101,115,10,0,0,111,112,106,95,106,50,107,95,115,116,97,114,116,95,99,111,109,112,114,101,115,115,0,0,69,114,114,111,114,32,119,104,105,108,101,32,111,112,106,95,106,50,107,95,112,114,101,95,119,114,105,116,101,95,116,105,108,101,32,119,105,116,104,32,116,105,108,101,32,105,110,100,101,120,32,61,32,37,100,10,0,0,0,0,0,0,0,0,69,114,114,111,114,32,119,104,105,108,101,32,111,112,106,95,106,50,107,95,112,111,115,116,95,119,114,105,116,101,95,116,105,108,101,32,119,105,116,104,32,116,105,108,101,32,105,110,100,101,120,32,61,32,37,100,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,117,112,100,97,116,101,95,114,97,116,101,115,0,0,0,0,111,112,106,95,106,50,107,95,103,101,116,95,83,80,67,111,100,95,83,80,67,111,99,95,115,105,122,101,0,0,0,0,112,95,116,105,108,101,95,110,111,32,60,32,40,108,95,99,112,45,62,116,119,32,42,32,108,95,99,112,45,62,116,104,41,0,0,0,0,0,0,0,112,95,99,111,109,112,95,110,111,32,60,32,112,95,106,50,107,45,62,109,95,112,114,105,118,97,116,101,95,105,109,97,103,101,45,62,110,117,109,99,111,109,112,115,0,0,0,0,111,112,106,95,106,50,107,95,99,114,101,97,116,101,95,116,99,100,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,99,114,101,97,116,101,32,84,105,108,101,32,67,111,100,101,114,10,0,111,112,106,95,106,50,107,95,103,101,116,95,101,110,100,95,104,101,97,100,101,114,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,109,99,116,95,100,97,116,97,95,103,114,111,117,112,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,119,114,105,116,101,32,77,67,79,32,109,97,114,107,101,114,10,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,119,114,105,116,101,32,77,67,67,32,109,97,114,107,101,114,10,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,119,114,105,116,101,32,77,67,84,32,109,97,114,107,101,114,10,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,119,114,105,116,101,32,67,66,68,32,109,97,114,107,101,114,10,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,99,111,109,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,119,114,105,116,101,32,116,104,101,32,67,79,77,32,109,97,114,107,101,114,10,0,0,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,114,101,103,105,111,110,115,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,112,111,99,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,119,114,105,116,101,32,80,79,67,32,109,97,114,107,101,114,10,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,112,111,99,95,105,110,95,109,101,109,111,114,121,0,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,116,108,109,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,119,114,105,116,101,32,84,76,77,32,109,97,114,107,101,114,10,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,113,99,100,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,119,114,105,116,101,32,81,67,68,32,109,97,114,107,101,114,10,0,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,81,67,68,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,83,81,99,100,95,83,81,99,99,0,112,95,116,105,108,101,95,110,111,32,60,32,108,95,99,112,45,62,116,119,32,42,32,108,95,99,112,45,62,116,104,0,112,95,99,111,109,112,95,110,111,32,60,112,95,106,50,107,45,62,109,95,112,114,105,118,97,116,101,95,105,109,97,103,101,45,62,110,117,109,99,111,109,112,115,0,0,0,0,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,83,81,99,100,32,83,81,99,99,32,101,108,101,109,101,110,116,10,0,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,103,101,116,95,83,81,99,100,95,83,81,99,99,95,115,105,122,101,0,0,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,99,111,100,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,119,114,105,116,101,32,67,79,68,32,109,97,114,107,101,114,10,0,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,67,79,68,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,83,80,67,111,100,95,83,80,67,111,99,0,0,0,0,0,0,0,112,95,99,111,109,112,95,110,111,32,60,40,112,95,106,50,107,45,62,109,95,112,114,105,118,97,116,101,95,105,109,97,103,101,45,62,110,117,109,99,111,109,112,115,41,0,0,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,83,80,67,111,100,32,83,80,67,111,99,32,101,108,101,109,101,110,116,10,0,0,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,115,105,122,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,102,111,114,32,116,104,101,32,83,73,90,32,109,97,114,107,101,114,10,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,115,111,99,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,105,110,105,116,95,105,110,102,111,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,99,97,108,99,117,108,97,116,101,95,116,112,0,0,0,0,116,105,108,101,110,111,32,60,32,40,99,112,45,62,116,119,32,42,32,99,112,45,62,116,104,41,0,0,0,0,0,0,111,112,106,95,106,50,107,95,103,101,116,95,110,117,109,95,116,112,0,0,0,0,0,0,112,105,110,111,32,60,32,40,99,112,45,62,116,99,112,115,91,116,105,108,101,110,111,93,46,110,117,109,112,111,99,115,32,43,32,49,41,0,0,0,116,99,112,32,33,61,32,48,48,0,0,0,0,0,0,0,115,116,114,108,101,110,40,112,114,111,103,41,32,62,32,48,0,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,109,99,116,95,118,97,108,105,100,97,116,105,111,110,0,0,111,112,106,95,106,50,107,95,101,110,99,111,100,105,110,103,95,118,97,108,105,100,97,116,105,111,110,0,0,0,0,0,78,117,109,98,101,114,32,111,102,32,114,101,115,111,108,117,116,105,111,110,115,32,105,115,32,116,111,111,32,104,105,103,104,32,105,110,32,99,111,109,112,97,114,105,115,111,110,32,116,111,32,116,104,101,32,115,105,122,101,32,111,102,32,116,105,108,101,115,10,0,0,0,111,112,106,95,106,50,107,95,115,101,116,117,112,95,101,110,100,95,99,111,109,112,114,101,115,115,0,0,0,0,0,0,111,112,106,95,106,50,107,95,100,101,115,116,114,111,121,95,104,101,97,100,101,114,95,109,101,109,111,114,121,0,0,0,111,112,106,95,106,50,107,95,101,110,100,95,101,110,99,111,100,105,110,103,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,101,112,99,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,117,112,100,97,116,101,100,95,116,108,109,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,101,111,99,0,0,0,0,0,0,0,112,95,106,50,107,45,62,109,95,115,112,101,99,105,102,105,99,95,112,97,114,97,109,46,109,95,101,110,99,111,100,101,114,46,109,95,101,110,99,111,100,101,100,95,116,105,108,101,95,100,97,116,97,0,0,0,111,112,106,95,106,50,107,95,112,111,115,116,95,119,114,105,116,101,95,116,105,108,101,0,83,105,122,101,32,109,105,115,109,97,116,99,104,32,98,101,116,119,101,101,110,32,116,105,108,101,32,100,97,116,97,32,97,110,100,32,115,101,110,116,32,100,97,116,97,46,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,115,111,100,0,0,0,0,0,0,0,67,97,110,110,111,116,32,101,110,99,111,100,101,32,116,105,108,101,10,0,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,115,111,116,0,0,0,0,0,0,0,84,104,101,32,103,105,118,101,110,32,116,105,108,101,32,105,110,100,101,120,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,46,0,0,0,0,116,105,108,101,32,110,117,109,98,101,114,32,37,100,32,47,32,37,100,10,0,0,0,0,111,112,106,95,106,50,107,95,115,101,116,117,112,95,100,101,99,111,100,105,110,103,95,116,105,108,101,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,100,101,99,111,100,101,32,111,110,101,32,116,105,108,101,10,0,0,0,80,114,111,98,108,101,109,32,119,105,116,104,32,115,101,101,107,32,102,117,110,99,116,105,111,110,10,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,100,101,99,111,100,101,32,116,105,108,101,32,37,100,47,37,100,10,0,84,105,108,101,32,37,100,47,37,100,32,104,97,115,32,98,101,101,110,32,100,101,99,111,100,101,100,46,10,0,0,0,73,109,97,103,101,32,100,97,116,97,32,104,97,115,32,98,101,101,110,32,117,112,100,97,116,101,100,32,119,105,116,104,32,116,105,108,101,32,37,100,46,10,10,0,0,0,0,0,84,105,108,101,32,114,101,97,100,44,32,100,101,99,111,100,101,32,97,110,100,32,117,112,100,97,116,101,100,32,105,115,32,110,111,116,32,116,104,101,32,100,101,115,105,114,101,100,32,40,37,100,32,118,115,32,37,100,41,46,10,0,0,0,108,95,114,101,115,45,62,120,48,32,62,61,32,48,0,0,111,112,106,95,106,50,107,95,117,112,100,97,116,101,95,105,109,97,103,101,95,100,97,116,97,0,0,0,0,0,0,0,108,95,114,101,115,45,62,120,49,32,62,61,32,48,0,0,111,112,106,95,106,50,107,95,115,101,116,117,112,95,100,101,99,111,100,105,110,103,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,100,101,99,111,100,101,32,116,105,108,101,115,10,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,100,101,99,111,100,101,32,116,105,108,101,32,37,100,47,37,100,10,0,0,0,0,67,111,100,101,115,116,114,101,97,109,32,105,110,102,111,32,102,114,111,109,32,109,97,105,110,32,104,101,97,100,101,114,58,32,123,10,0,0,0,0,9,32,116,120,48,61,37,100,44,32,116,121,48,61,37,100,10,0,0,0,0,0,0,0,9,32,116,100,120,61,37,100,44,32,116,100,121,61,37,100,10,0,0,0,0,0,0,0,9,32,116,119,61,37,100,44,32,116,104,61,37,100,10,0,67,111,100,101,115,116,114,101,97,109,32,105,110,100,101,120,32,102,114,111,109,32,109,97,105,110,32,104,101,97,100,101,114,58,32,123,10,0,0,0,9,32,77,97,105,110,32,104,101,97,100,101,114,32,115,116,97,114,116,32,112,111,115,105,116,105,111,110,61,37,108,108,105,10,9,32,77,97,105,110,32,104,101,97,100,101,114,32,101,110,100,32,112,111,115,105,116,105,111,110,61,37,108,108,105,10,0,0,0,0,0,0,9,32,77,97,114,107,101,114,32,108,105,115,116,58,32,123,10,0,0,0,0,0,0,0,9,9,32,116,121,112,101,61,37,35,120,44,32,112,111,115,61,37,108,108,105,44,32,108,101,110,61,37,100,10,0,0,9,32,125,10,0,0,0,0,9,32,84,105,108,101,32,105,110,100,101,120,58,32,123,10,0,0,0,0,0,0,0,0,9,9,32,110,98,32,111,102,32,116,105,108,101,45,112,97,114,116,32,105,110,32,116,105,108,101,32,91,37,100,93,61,37,100,10,0,0,0,0,0,9,9,9,32,116,105,108,101,45,112,97,114,116,91,37,100,93,58,32,115,116,97,114,95,112,111,115,61,37,108,108,105,44,32,101,110,100,95,104,101,97,100,101,114,61,37,108,108,105,44,32,101,110,100,95,112,111,115,61,37,108,108,105,46,10,0,0,0,0,0,0,0,9,32,100,101,102,97,117,108,116,32,116,105,108,101,32,123,10,0,0,0,0,0,0,0,9,9,32,99,115,116,121,61,37,35,120,10,0,0,0,0,9,9,32,112,114,103,61,37,35,120,10,0,0,0,0,0,9,9,32,110,117,109,108,97,121,101,114,115,61,37,100,10,0,0,0,0,0,0,0,0,9,9,32,109,99,116,61,37,120,10,0,0,0,0,0,0,9,9,32,99,111,109,112,32,37,100,32,123,10,0,0,0,9,9,9,32,99,115,116,121,61,37,35,120,10,0,0,0,9,9,9,32,110,117,109,114,101,115,111,108,117,116,105,111,110,115,61,37,100,10,0,0,9,9,9,32,99,98,108,107,119,61,50,94,37,100,10,0,9,9,9,32,99,98,108,107,104,61,50,94,37,100,10,0,9,9,9,32,99,98,108,107,115,116,121,61,37,35,120,10,0,0,0,0,0,0,0,0,9,9,9,32,113,109,102,98,105,100,61,37,100,10,0,0,9,9,9,32,112,114,101,99,99,105,110,116,115,105,122,101,32,40,119,44,104,41,61,0,40,37,100,44,37,100,41,32,0,0,0,0,0,0,0,0,9,9,9,32,113,110,116,115,116,121,61,37,100,10,0,0,9,9,9,32,110,117,109,103,98,105,116,115,61,37,100,10,0,0,0,0,0,0,0,0,9,9,9,32,115,116,101,112,115,105,122,101,115,32,40,109,44,101,41,61,0,0,0,0,9,9,9,32,114,111,105,115,104,105,102,116,61,37,100,10,0,0,0,0,0,0,0,0,9,9,32,125,10,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,100,101,99,111,100,101,32,116,105,108,101,10,0,0,0,0,0,0,0,99,115,116,114,95,105,110,100,101,120,32,33,61,32,48,48,0,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,97,100,100,95,116,108,109,97,114,107,101,114,0,0,0,0,99,115,116,114,95,105,110,100,101,120,45,62,116,105,108,101,95,105,110,100,101,120,32,33,61,32,48,48,0,0,0,0,111,112,106,95,106,50,107,95,101,120,101,99,0,0,0,0,111,112,106,95,106,50,107,95,100,101,99,111,100,105,110,103,95,118,97,108,105,100,97,116,105,111,110,0,0,0,0,0,111,112,106,95,106,50,107,95,99,111,112,121,95,100,101,102,97,117,108,116,95,116,99,112,95,97,110,100,95,99,114,101,97,116,101,95,116,99,100,0,111,112,106,95,106,50,107,95,114,101,97,100,95,104,101,97,100,101,114,95,112,114,111,99,101,100,117,114,101,0,0,0,69,120,112,101,99,116,101,100,32,97,32,83,79,67,32,109,97,114,107,101,114,32,10,0,87,101,32,101,120,112,101,99,116,101,100,32,114,101,97,100,32,97,32,109,97,114,107,101,114,32,73,68,32,40,48,120,102,102,45,45,41,32,105,110,115,116,101,97,100,32,111,102,32,37,46,56,120,10,0,0,85,110,107,110,111,119,32,109,97,114,107,101,114,32,104,97,118,101,32,98,101,101,110,32,100,101,116,101,99,116,101,100,32,97,110,100,32,103,101,110,101,114,97,116,101,100,32,101,114,114,111,114,46,10,0,0,77,97,114,107,101,114,32,104,97,110,100,108,101,114,32,102,117,110,99,116,105,111,110,32,102,97,105,108,101,100,32,116,111,32,114,101,97,100,32,116,104,101,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,10,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,97,100,100,32,109,104,32,109,97,114,107,101,114,10,0,0,0,0,0,77,97,105,110,32,104,101,97,100,101,114,32,104,97,115,32,98,101,101,110,32,99,111,114,114,101,99,116,108,121,32,100,101,99,111,100,101,100,46,10,0,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,97,100,100,95,109,104,109,97,114,107,101,114,0,0,0,0,85,110,107,110,111,119,110,32,109,97,114,107,101,114,10,0,83,116,97,114,116,32,116,111,32,114,101,97,100,32,106,50,107,32,109,97,105,110,32,104,101,97,100,101,114,32,40,37,100,41,46,10,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,102,111,114,32,99,104,101,99,107,105,110,103,32,116,104,101,32,112,111,99,32,118,97,108,117,101,115,46,10,0,77,105,115,115,105,110,103,32,112,97,99,107,101,116,115,32,112,111,115,115,105,98,108,101,32,108,111,115,115,32,111,102,32,100,97,116,97,10,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,51,32,40,50,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,51,32,99,111,109,112,111,110,101,110,116,115,45,62,32,78,117,109,98,101,114,32,111,102,32,99,111,109,112,111,110,101,110,116,115,32,111,102,32,105,110,112,117,116,32,105,109,97,103,101,32,40,37,100,41,32,105,115,32,110,111,116,32,99,111,109,112,108,105,97,110,116,10,45,62,32,78,111,110,45,112,114,111,102,105,108,101,45,51,32,99,111,100,101,115,116,114,101,97,109,32,119,105,108,108,32,98,101,32,103,101,110,101,114,97,116,101,100,10,0,0,0,115,105,103,110,101,100,0,0,117,110,115,105,103,110,101,100,0,0,0,0,0,0,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,51,32,40,50,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,80,114,101,99,105,115,105,111,110,32,111,102,32,101,97,99,104,32,99,111,109,112,111,110,101,110,116,32,115,104,97,108,108,32,98,101,32,49,50,32,98,105,116,115,32,117,110,115,105,103,110,101,100,45,62,32,65,116,32,108,101,97,115,116,32,99,111,109,112,111,110,101,110,116,32,37,100,32,111,102,32,105,110,112,117,116,32,105,109,97,103,101,32,40,37,100,32,98,105,116,115,44,32,37,115,41,32,105,115,32,110,111,116,32,99,111,109,112,108,105,97,110,116,10,45,62,32,78,111,110,45,112,114,111,102,105,108,101,45,51,32,99,111,100,101,115,116,114,101,97,109,32,119,105,108,108,32,98,101,32,103,101,110,101,114,97,116,101,100,10,0,0,0,0,0,0,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,51,32,40,50,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,119,105,100,116,104,32,60,61,32,50,48,52,56,32,97,110,100,32,104,101,105,103,104,116,32,60,61,32,49,48,56,48,10,45,62,32,73,110,112,117,116,32,105,109,97,103,101,32,115,105,122,101,32,37,100,32,120,32,37,100,32,105,115,32,110,111,116,32,99,111,109,112,108,105,97,110,116,10,45,62,32,78,111,110,45,112,114,111,102,105,108,101,45,51,32,99,111,100,101,115,116,114,101,97,109,32,119,105,108,108,32,98,101,32,103,101,110,101,114,97,116,101,100,10,0,0,0,0,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,52,32,40,52,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,119,105,100,116,104,32,60,61,32,52,48,57,54,32,97,110,100,32,104,101,105,103,104,116,32,60,61,32,50,49,54,48,10,45,62,32,73,109,97,103,101,32,115,105,122,101,32,37,100,32,120,32,37,100,32,105,115,32,110,111,116,32,99,111,109,112,108,105,97,110,116,10,45,62,32,78,111,110,45,112,114,111,102,105,108,101,45,52,32,99,111,100,101,115,116,114,101,97,109,32,119,105,108,108,32,98,101,32,103,101,110,101,114,97,116,101,100,10,0,0,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,51,32,97,110,100,32,52,32,40,50,107,47,52,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,49,32,115,105,110,103,108,101,32,113,117,97,108,105,116,121,32,108,97,121,101,114,45,62,32,78,117,109,98,101,114,32,111,102,32,108,97,121,101,114,115,32,102,111,114,99,101,100,32,116,111,32,49,32,40,114,97,116,104,101,114,32,116,104,97,110,32,37,100,41,10,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,51,32,40,50,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,78,117,109,98,101,114,32,111,102,32,100,101,99,111,109,112,111,115,105,116,105,111,110,32,108,101,118,101,108,115,32,60,61,32,53,10,45,62,32,78,117,109,98,101,114,32,111,102,32,100,101,99,111,109,112,111,115,105,116,105,111,110,32,108,101,118,101,108,115,32,102,111,114,99,101,100,32,116,111,32,53,32,40,114,97,116,104,101,114,32,116,104,97,110,32,37,100,41,10,0,0,0,0,0,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,52,32,40,52,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,78,117,109,98,101,114,32,111,102,32,100,101,99,111,109,112,111,115,105,116,105,111,110,32,108,101,118,101,108,115,32,62,61,32,49,32,38,38,32,60,61,32,54,10,45,62,32,78,117,109,98,101,114,32,111,102,32,100,101,99,111,109,112,111,115,105,116,105,111,110,32,108,101,118,101,108,115,32,102,111,114,99,101,100,32,116,111,32,49,32,40,114,97,116,104,101,114,32,116,104,97,110,32,37,100,41,10,0,0,0,0,0,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,52,32,40,52,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,78,117,109,98,101,114,32,111,102,32,100,101,99,111,109,112,111,115,105,116,105,111,110,32,108,101,118,101,108,115,32,62,61,32,49,32,38,38,32,60,61,32,54,10,45,62,32,78,117,109,98,101,114,32,111,102,32,100,101,99,111,109,112,111,115,105,116,105,111,110,32,108,101,118,101,108,115,32,102,111,114,99,101,100,32,116,111,32,54,32,40,114,97,116,104,101,114,32,116,104,97,110,32,37,100,41,10,0,0,0,0,0,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,51,32,97,110,100,32,52,32,40,50,107,47,52,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,77,97,120,105,109,117,109,32,49,51,48,50,48,56,51,32,99,111,109,112,114,101,115,115,101,100,32,98,121,116,101,115,32,64,32,50,52,102,112,115,10,45,62,32,83,112,101,99,105,102,105,101,100,32,114,97,116,101,32,40,37,51,46,49,102,41,32,101,120,99,101,101,100,115,32,116,104,105,115,32,108,105,109,105,116,46,32,82,97,116,101,32,119,105,108,108,32,98,101,32,102,111,114,99,101,100,32,116,111,32,37,51,46,49,102,46,10,0,0,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,51,32,97,110,100,32,52,32,40,50,107,47,52,107,32,100,99,32,112,114,111,102,105,108,101,41,58,10,73,78,70,79,32,58,32,83,112,101,99,105,102,105,101,100,32,114,97,116,101,32,40,37,51,46,49,102,41,32,105,115,32,98,101,108,111,119,32,116,104,101,32,50,107,47,52,107,32,108,105,109,105,116,32,64,32,50,52,102,112,115,46,10,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,51,32,40,50,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,77,97,120,105,109,117,109,32,54,53,49,48,52,49,32,99,111,109,112,114,101,115,115,101,100,32,98,121,116,101,115,32,64,32,52,56,102,112,115,10,45,62,32,83,112,101,99,105,102,105,101,100,32,114,97,116,101,32,40,37,51,46,49,102,41,32,101,120,99,101,101,100,115,32,116,104,105,115,32,108,105,109,105,116,46,32,82,97,116,101,32,119,105,108,108,32,98,101,32,102,111,114,99,101,100,32,116,111,32,37,51,46,49,102,46,10,0,0,0,0,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,51,32,40,50,107,32,100,99,32,112,114,111,102,105,108,101,41,58,10,73,78,70,79,32,58,32,83,112,101,99,105,102,105,101,100,32,114,97,116,101,32,40,37,51,46,49,102,41,32,105,115,32,98,101,108,111,119,32,116,104,101,32,50,107,32,108,105,109,105,116,32,64,32,52,56,32,102,112,115,46,10,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,99,98,100,0,0,0,0,0,0,0,0,67,114,114,111,114,32,114,101,97,100,105,110,103,32,67,66,68,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,109,99,111,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,77,67,79,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,67,97,110,110,111,116,32,116,97,107,101,32,105,110,32,99,104,97,114,103,101,32,109,117,108,116,105,112,108,101,32,116,114,97,110,115,102,111,114,109,97,116,105,111,110,32,115,116,97,103,101,115,46,10,0,0,111,112,106,95,106,50,107,95,97,100,100,95,109,99,116,0,111,112,106,95,106,50,107,95,114,101,97,100,95,109,99,99,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,77,67,67,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,67,97,110,110,111,116,32,116,97,107,101,32,105,110,32,99,104,97,114,103,101,32,109,117,108,116,105,112,108,101,32,100,97,116,97,32,115,112,97,110,110,105,110,103,10,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,114,101,97,100,32,77,67,67,32,109,97,114,107,101,114,10,0,0,0,67,97,110,110,111,116,32,116,97,107,101,32,105,110,32,99,104,97,114,103,101,32,109,117,108,116,105,112,108,101,32,99,111,108,108,101,99,116,105,111,110,115,10,0,0,0,0,0,67,97,110,110,111,116,32,116,97,107,101,32,105,110,32,99,104,97,114,103,101,32,99,111,108,108,101,99,116,105,111,110,115,32,111,116,104,101,114,32,116,104,97,110,32,97,114,114,97,121,32,100,101,99,111,114,114,101,108,97,116,105,111,110,10,0,0,0,0,0,0,0,67,97,110,110,111,116,32,116,97,107,101,32,105,110,32,99,104,97,114,103,101,32,99,111,108,108,101,99,116,105,111,110,115,32,119,105,116,104,32,105,110,100,105,120,32,115,104,117,102,102,108,101,10,0,0,0,67,97,110,110,111,116,32,116,97,107,101,32,105,110,32,99,104,97,114,103,101,32,99,111,108,108,101,99,116,105,111,110,115,32,119,105,116,104,111,117,116,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,105,110,100,105,120,101,115,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,109,99,116,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,77,67,84,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,67,97,110,110,111,116,32,116,97,107,101,32,105,110,32,99,104,97,114,103,101,32,109,99,116,32,100,97,116,97,32,119,105,116,104,105,110,32,109,117,108,116,105,112,108,101,32,77,67,84,32,114,101,99,111,114,100,115,10,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,114,101,97,100,32,77,67,84,32,109,97,114,107,101,114,10,0,0,0,67,97,110,110,111,116,32,116,97,107,101,32,105,110,32,99,104,97,114,103,101,32,109,117,108,116,105,112,108,101,32,77,67,84,32,109,97,114,107,101,114,115,10,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,114,103,110,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,82,71,78,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,98,97,100,32,99,111,109,112,111,110,101,110,116,32,110,117,109,98,101,114,32,105,110,32,82,71,78,32,40,37,100,32,119,104,101,110,32,116,104,101,114,101,32,97,114,101,32,111,110,108,121,32,37,100,41,10,0,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,115,111,116,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,83,79,84,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,116,105,108,101,32,110,117,109,98,101,114,32,37,100,10,0,69,109,112,116,121,32,83,79,84,32,109,97,114,107,101,114,32,100,101,116,101,99,116,101,100,58,32,80,115,111,116,61,37,100,46,10,0,0,0,0,80,115,111,116,32,118,97,108,117,101,32,105,115,32,110,111,116,32,99,111,114,114,101,99,116,32,114,101,103,97,114,100,115,32,116,111,32,116,104,101,32,74,80,69,71,50,48,48,48,32,110,111,114,109,58,32,37,100,46,10,0,0,0,0,80,115,111,116,32,118,97,108,117,101,32,111,102,32,116,104,101,32,99,117,114,114,101,110,116,32,116,105,108,101,45,112,97,114,116,32,105,115,32,101,113,117,97,108,32,116,111,32,122,101,114,111,44,32,119,101,32,97,115,115,117,109,105,110,103,32,105,116,32,105,115,32,116,104,101,32,108,97,115,116,32,116,105,108,101,45,112,97,114,116,32,111,102,32,116,104,101,32,99,111,100,101,115,116,114,101,97,109,46,10,0,0,73,110,32,83,79,84,32,109,97,114,107,101,114,44,32,84,80,83,111,116,32,40,37,100],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+235520);allocate([41,32,105,115,32,110,111,116,32,118,97,108,105,100,32,114,101,103,97,114,100,115,32,116,111,32,116,104,101,32,99,117,114,114,101,110,116,32,110,117,109,98,101,114,32,111,102,32,116,105,108,101,45,112,97,114,116,32,40,37,100,41,44,32,103,105,118,105,110,103,32,117,112,10,0,0,0,0,0,0,73,110,32,83,79,84,32,109,97,114,107,101,114,44,32,84,80,83,111,116,32,40,37,100,41,32,105,115,32,110,111,116,32,118,97,108,105,100,32,114,101,103,97,114,100,115,32,116,111,32,116,104,101,32,99,117,114,114,101,110,116,32,110,117,109,98,101,114,32,111,102,32,116,105,108,101,45,112,97,114,116,32,40,104,101,97,100,101,114,41,32,40,37,100,41,44,32,103,105,118,105,110,103,32,117,112,10,0,0,0,0,0,112,95,106,50,107,45,62,109,95,115,112,101,99,105,102,105,99,95,112,97,114,97,109,46,109,95,100,101,99,111,100,101,114,46,109,95,116,105,108,101,95,105,110,100,95,116,111,95,100,101,99,32,62,61,32,48,0,0,0,0,0,0,0,0,112,95,106,50,107,45,62,99,115,116,114,95,105,110,100,101,120,45,62,116,105,108,101,95,105,110,100,101,120,32,33,61,32,48,48,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,114,101,97,100,32,80,80,84,32,109,97,114,107,101,114,10,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,112,112,116,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,80,80,84,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,80,80,84,32,109,97,114,107,101,114,58,32,112,97,99,107,101,116,32,104,101,97,100,101,114,32,104,97,118,101,32,98,101,101,110,32,112,114,101,118,105,111,117,115,108,121,32,102,111,117,110,100,32,105,110,32,116,104,101,32,109,97,105,110,32,104,101,97,100,101,114,32,40,80,80,77,32,109,97,114,107,101,114,41,46,10,0,0,0,0,106,50,107,95,114,101,97,100,95,112,112,109,95,118,51,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,80,80,77,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,98,121,116,101,115,32,40,37,117,41,32,116,111,32,104,111,108,100,32,73,112,112,109,32,115,101,114,105,101,115,32,40,37,117,41,44,32,73,110,100,101,120,32,40,37,100,41,10,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,114,101,97,100,32,112,112,109,32,109,97,114,107,101,114,10,0,0,0,69,109,112,116,121,32,80,80,77,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,108,95,99,112,45,62,112,112,109,95,100,97,116,97,32,61,61,32,108,95,99,112,45,62,112,112,109,95,98,117,102,102,101,114,32,38,38,32,34,87,101,32,110,101,101,100,32,112,112,109,95,100,97,116,97,32,97,110,100,32,112,112,109,95,98,117,102,102,101,114,32,116,111,32,98,101,32,116,104,101,32,115,97,109,101,32,119,104,101,110,32,114,101,97,108,108,111,99,97,116,105,110,103,34,0,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,105,110,99,114,101,97,115,101,32,116,104,101,32,115,105,122,101,32,111,102,32,112,112,109,95,100,97,116,97,32,116,111,32,97,100,100,32,116,104,101,32,110,101,119,32,73,112,112,109,32,115,101,114,105,101,115,10,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,105,110,99,114,101,97,115,101,32,116,104,101,32,115,105,122,101,32,111,102,32,112,112,109,95,100,97,116,97,32,116,111,32,97,100,100,32,116,104,101,32,110,101,119,32,40,99,111,109,112,108,101,116,101,41,32,73,112,112,109,32,115,101,114,105,101,115,10,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,105,110,99,114,101,97,115,101,32,116,104,101,32,115,105,122,101,32,111,102,32,112,112,109,95,100,97,116,97,32,116,111,32,97,100,100,32,116,104,101,32,110,101,119,32,40,105,110,99,111,109,112,108,101,116,101,41,32,73,112,112,109,32,115,101,114,105,101,115,10,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,112,108,116,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,80,76,84,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,112,108,109,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,80,76,77,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,116,108,109,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,84,76,77,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,99,114,103,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,67,82,71,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,112,111,99,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,80,79,67,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,84,111,111,32,109,97,110,121,32,80,79,67,115,32,37,100,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,113,99,99,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,81,67,67,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,99,111,109,112,111,110,101,110,116,32,110,117,109,98,101,114,58,32,37,100,44,32,114,101,103,97,114,100,105,110,103,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,99,111,109,112,111,110,101,110,116,115,32,37,100,10,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,83,81,99,100,95,83,81,99,99,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,83,81,99,100,32,111,114,32,83,81,99,99,32,101,108,101,109,101,110,116,10,0,0,0,0,0,87,104,105,108,101,32,114,101,97,100,105,110,103,32,67,67,80,95,81,78,84,83,84,89,32,101,108,101,109,101,110,116,32,105,110,115,105,100,101,32,81,67,68,32,111,114,32,81,67,67,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,44,32,110,117,109,98,101,114,32,111,102,32,115,117,98,98,97,110,100,115,32,40,37,100,41,32,105,115,32,103,114,101,97,116,101,114,32,116,111,32,79,80,74,95,74,50,75,95,77,65,88,66,65,78,68,83,32,40,37,100,41,46,32,83,111,32,119,101,32,108,105,109,105,116,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,101,108,101,109,101,110,116,115,32,115,116,111,114,101,100,32,116,111,32,79,80,74,95,74,50,75,95,77,65,88,66,65,78,68,83,32,40,37,100,41,32,97,110,100,32,115,107,105,112,32,116,104,101,32,114,101,115,116,46,32,10,0,111,112,106,95,106,50,107,95,114,101,97,100,95,113,99,100,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,81,67,68,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,99,111,99,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,67,79,67,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,67,79,67,32,109,97,114,107,101,114,32,40,98,97,100,32,110,117,109,98,101,114,32,111,102,32,99,111,109,112,111,110,101,110,116,115,41,10,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,83,80,67,111,100,95,83,80,67,111,99,0,0,0,0,0,0,0,0,99,111,109,112,110,111,32,60,32,112,95,106,50,107,45,62,109,95,112,114,105,118,97,116,101,95,105,109,97,103,101,45,62,110,117,109,99,111,109,112,115,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,83,80,67,111,100,32,83,80,67,111,99,32,101,108,101,109,101,110,116,10,0,0,0,0,0,0,73,110,118,97,108,105,100,32,118,97,108,117,101,32,102,111,114,32,110,117,109,114,101,115,111,108,117,116,105,111,110,115,32,58,32,37,100,44,32,109,97,120,32,118,97,108,117,101,32,105,115,32,115,101,116,32,105,110,32,111,112,101,110,106,112,101,103,46,104,32,97,116,32,37,100,10,0,0,0,0,69,114,114,111,114,32,100,101,99,111,100,105,110,103,32,99,111,109,112,111,110,101,110,116,32,37,100,46,10,84,104,101,32,110,117,109,98,101,114,32,111,102,32,114,101,115,111,108,117,116,105,111,110,115,32,116,111,32,114,101,109,111,118,101,32,105,115,32,104,105,103,104,101,114,32,116,104,97,110,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,114,101,115,111,108,117,116,105,111,110,115,32,111,102,32,116,104,105,115,32,99,111,109,112,111,110,101,110,116,10,77,111,100,105,102,121,32,116,104,101,32,99,112,95,114,101,100,117,99,101,32,112,97,114,97,109,101,116,101,114,46,10,10,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,99,111,100,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,67,79,68,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,99,111,109,0,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,115,105,122,0,0,0,0,0,0,0,0,69,114,114,111,114,32,119,105,116,104,32,83,73,90,32,109,97,114,107,101,114,32,115,105,122,101,10,0,0,0,0,0,69,114,114,111,114,32,119,105,116,104,32,83,73,90,32,109,97,114,107,101,114,58,32,110,117,109,98,101,114,32,111,102,32,99,111,109,112,111,110,101,110,116,32,105,115,32,105,108,108,101,103,97,108,32,45,62,32,37,100,10,0,0,0,0,69,114,114,111,114,32,119,105,116,104,32,83,73,90,32,109,97,114,107,101,114,58,32,110,117,109,98,101,114,32,111,102,32,99,111,109,112,111,110,101,110,116,32,105,115,32,110,111,116,32,99,111,109,112,97,116,105,98,108,101,32,119,105,116,104,32,116,104,101,32,114,101,109,97,105,110,105,110,103,32,110,117,109,98,101,114,32,111,102,32,112,97,114,97,109,101,116,101,114,115,32,40,32,37,100,32,118,115,32,37,100,41,10,0,0,0,0,0,0,0,69,114,114,111,114,32,119,105,116,104,32,83,73,90,32,109,97,114,107,101,114,58,32,110,101,103,97,116,105,118,101,32,105,109,97,103,101,32,115,105,122,101,32,40,37,100,32,120,32,37,100,41,10,0,0,0,69,114,114,111,114,32,119,105,116,104,32,83,73,90,32,109,97,114,107,101,114,58,32,105,110,118,97,108,105,100,32,116,105,108,101,32,115,105,122,101,32,40,116,100,120,58,32,37,100,44,32,116,100,121,58,32,37,100,41,10,0,0,0,0,80,114,101,118,101,110,116,32,98,117,102,102,101,114,32,111,118,101,114,102,108,111,119,32,40,120,49,58,32,37,100,44,32,121,49,58,32,37,100,41,0,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,116,97,107,101,32,105,110,32,99,104,97,114,103,101,32,83,73,90,32,109,97,114,107,101,114,10,0,73,110,118,97,108,105,100,32,118,97,108,117,101,115,32,102,111,114,32,99,111,109,112,32,61,32,37,100,32,58,32,100,120,61,37,117,32,100,121,61,37,117,10,32,40,115,104,111,117,108,100,32,98,101,32,98,101,116,119,101,101,110,32,49,32,97,110,100,32,50,53,53,32,97,99,99,111,114,100,105,110,103,32,116,104,101,32,74,80,69,71,50,48,48,48,32,110,111,114,109,41,0,0,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,116,105,108,101,115,32,58,32,37,117,32,120,32,37,117,32,40,109,97,120,105,109,117,109,32,102,105,120,101,100,32,98,121,32,106,112,101,103,50,48,48,48,32,110,111,114,109,32,105,115,32,54,53,53,51,53,32,116,105,108,101,115,41,10,0,0,0,0,0,0,32,32,80,106,53,0,0,0,112,121,116,102,54,0,0,0,104,50,112,106,55,0,0,0,114,100,104,105,56,0,0,0,114,108,111,99,57,0,0,0,99,99,112,98,58,0,0,0,114,108,99,112,59,0,0,0,112,97,109,99,60,0,0,0,102,101,100,99,61,0,0,0,70,97,105,108,101,100,32,116,111,32,100,101,99,111,100,101,32,116,104,101,32,99,111,100,101,115,116,114,101,97,109,32,105,110,32,116,104,101,32,74,80,50,32,102,105,108,101,10,0,0,0,0,0,0,0,0,115,116,114,101,97,109,32,33,61,32,48,48,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,92,106,112,50,46,99,0,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,119,114,105,116,101,95,106,112,50,104,0,0,0,0,0,0,106,112,50,32,33,61,32,48,48,0,0,0,0,0,0,0,112,95,109,97,110,97,103,101,114,32,33,61,32,48,48,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,104,111,108,100,32,74,80,50,32,72,101,97,100,101,114,32,100,97,116,97,10,0,0,0,0,0,0,83,116,114,101,97,109,32,101,114,114,111,114,32,119,104,105,108,101,32,119,114,105,116,105,110,103,32,74,80,50,32,72,101,97,100,101,114,32,98,111,120,10,0,0,0,0,0,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,99,111,109,112,111,110,101,110,116,115,32,115,112,101,99,105,102,105,101,100,32,119,104,105,108,101,32,115,101,116,116,105,110,103,32,117,112,32,74,80,50,32,101,110,99,111,100,101,114,10,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,119,104,101,110,32,115,101,116,117,112,32,116,104,101,32,74,80,50,32,101,110,99,111,100,101,114,10,0,0,0,111,112,106,95,106,112,50,95,101,110,100,95,100,101,99,111,109,112,114,101,115,115,0,0,99,105,111,32,33,61,32,48,48,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,101,110,100,95,99,111,109,112,114,101,115,115,0,0,0,0,111,112,106,95,106,112,50,95,100,101,102,97,117,108,116,95,118,97,108,105,100,97,116,105,111,110,0,0,0,0,0,0,111,112,106,95,106,112,50,95,115,116,97,114,116,95,99,111,109,112,114,101,115,115,0,0,111,112,106,95,106,112,50,95,115,107,105,112,95,106,112,50,99,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,104,101,97,100,101,114,0,0,0,0,0,112,95,115,116,114,101,97,109,32,33,61,32,48,48,0,0,74,80,50,32,98,111,120,32,119,104,105,99,104,32,97,114,101,32,97,102,116,101,114,32,116,104,101,32,99,111,100,101,115,116,114,101,97,109,32,119,105,108,108,32,110,111,116,32,98,101,32,114,101,97,100,32,98,121,32,116,104,105,115,32,102,117,110,99,116,105,111,110,46,10,0,0,0,0,0,0,112,95,106,112,50,32,33,61,32,48,48,0,0,0,0,0,106,112,50,95,100,117,109,112,0,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,104,101,97,100,101,114,95,112,114,111,99,101,100,117,114,101,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,104,97,110,100,108,101,32,106,112,101,103,50,48,48,48,32,102,105,108,101,32,104,101,97,100,101,114,10,0,0,0,0,0,0,0,98,97,100,32,112,108,97,99,101,100,32,106,112,101,103,32,99,111,100,101,115,116,114,101,97,109,10,0,0,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,98,111,120,32,111,102,32,117,110,100,101,102,105,110,101,100,32,115,105,122,101,115,10,0,0,0,105,110,118,97,108,105,100,32,98,111,120,32,115,105,122,101,32,37,100,32,40,37,120,41,10,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,104,97,110,100,108,101,32,106,112,101,103,50,48,48,48,32,98,111,120,10,0,0,0,0,0,0,0,80,114,111,98,108,101,109,32,119,105,116,104,32,114,101,97,100,105,110,103,32,74,80,69,71,50,48,48,48,32,98,111,120,44,32,115,116,114,101,97,109,32,101,114,114,111,114,10,0,0,0,0,0,0,0,0,80,114,111,98,108,101,109,32,119,105,116,104,32,115,107,105,112,112,105,110,103,32,74,80,69,71,50,48,48,48,32,98,111,120,44,32,115,116,114,101,97,109,32,101,114,114,111,114,10,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,98,111,120,104,100,114,0,0,0,0,0,40,79,80,74,95,79,70,70,95,84,41,98,111,120,45,62,108,101,110,103,116,104,32,61,61,32,98,108,101,102,116,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,98,111,120,32,115,105,122,101,115,32,104,105,103,104,101,114,32,116,104,97,110,32,50,94,51,50,10,0,0,0,0,0,0,0,111,112,106,95,106,112,105,112,95,115,107,105,112,95,105,112,116,114,0,0,0,0,0,0,111,112,106,95,106,112,50,95,119,114,105,116,101,95,102,116,121,112,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,104,97,110,100,108,101,32,102,116,121,112,32,100,97,116,97,10,0,0,69,114,114,111,114,32,119,104,105,108,101,32,119,114,105,116,105,110,103,32,102,116,121,112,32,100,97,116,97,32,116,111,32,115,116,114,101,97,109,10,0,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,119,114,105,116,101,95,106,112,0,0,0,0,0,0,0,0,112,95,104,101,97,100,101,114,95,100,97,116,97,32,33,61,32,48,48,0,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,106,112,50,104,0,0,0,0,0,0,0,84,104,101,32,32,98,111,120,32,109,117,115,116,32,98,101,32,116,104,101,32,102,105,114,115,116,32,98,111,120,32,105,110,32,116,104,101,32,102,105,108,101,46,10,0,0,0,0,83,116,114,101,97,109,32,101,114,114,111,114,32,119,104,105,108,101,32,114,101,97,100,105,110,103,32,74,80,50,32,72,101,97,100,101,114,32,98,111,120,10,0,0,0,0,0,0,83,116,114,101,97,109,32,101,114,114,111,114,32,119,104,105,108,101,32,114,101,97,100,105,110,103,32,74,80,50,32,72,101,97,100,101,114,32,98,111,120,58,32,98,111,120,32,108,101,110,103,116,104,32,105,115,32,105,110,99,111,110,115,105,115,116,101,110,116,46,10,0,112,95,100,97,116,97,32,33,61,32,48,48,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,98,111,120,104,100,114,95,99,104,97,114,0,0,0,0,0,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,98,111,120,32,111,102,32,108,101,115,115,32,116,104,97,110,32,56,32,98,121,116,101,115,10,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,88,76,32,98,111,120,32,111,102,32,108,101,115,115,32,116,104,97,110,32,49,54,32,98,121,116,101,115,10,0,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,102,116,121,112,0,0,0,0,0,0,0,84,104,101,32,102,116,121,112,32,98,111,120,32,109,117,115,116,32,98,101,32,116,104,101,32,115,101,99,111,110,100,32,98,111,120,32,105,110,32,116,104,101,32,102,105,108,101,46,10,0,0,0,0,0,0,0,69,114,114,111,114,32,119,105,116,104,32,70,84,89,80,32,115,105,103,110,97,116,117,114,101,32,66,111,120,32,115,105,122,101,10,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,119,105,116,104,32,70,84,89,80,32,66,111,120,10,0,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,106,112,0,84,104,101,32,115,105,103,110,97,116,117,114,101,32,98,111,120,32,109,117,115,116,32,98,101,32,116,104,101,32,102,105,114,115,116,32,98,111,120,32,105,110,32,116,104,101,32,102,105,108,101,46,10,0,0,0,69,114,114,111,114,32,119,105,116,104,32,74,80,32,115,105,103,110,97,116,117,114,101,32,66,111,120,32,115,105,122,101,10,0,0,0,0,0,0,0,69,114,114,111,114,32,119,105,116,104,32,74,80,32,83,105,103,110,97,116,117,114,101,32,58,32,98,97,100,32,109,97,103,105,99,32,110,117,109,98,101,114,10,0,0,0,0,0,112,95,112,114,111,99,101,100,117,114,101,95,108,105,115,116,32,33,61,32,48,48,0,0,111,112,106,95,106,112,50,95,101,120,101,99,0,0,0,0,111,112,106,95,106,112,50,95,119,114,105,116,101,95,106,112,50,99,0,0,0,0,0,0,111,112,106,95,115,116,114,101,97,109,95,104,97,115,95,115,101,101,107,40,99,105,111,41,0,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,115,101,101,107,32,105,110,32,116,104,101,32,115,116,114,101,97,109,46,10,0,0,111,112,106,95,106,112,50,95,119,114,105,116,101,95,99,111,108,114,0,0,0,0,0,0,112,95,110,98,95,98,121,116,101,115,95,119,114,105,116,116,101,110,32,33,61,32,48,48,0,0,0,0,0,0,0,0,106,112,50,45,62,109,101,116,104,32,61,61,32,49,32,124,124,32,106,112,50,45,62,109,101,116,104,32,61,61,32,50,0,0,0,0,0,0,0,0,106,112,50,45,62,99,111,108,111,114,46,105,99,99,95,112,114,111,102,105,108,101,95,108,101,110,0,0,0,0,0,0,111,112,106,95,106,112,50,95,119,114,105,116,101,95,98,112,99,99,0,0,0,0,0,0,111,112,106,95,106,112,50,95,119,114,105,116,101,95,105,104,100,114,0,0,0,0,0,0,112,99,111,108,32,61,61,32,48,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,97,112,112,108,121,95,112,99,108,114,0,0,0,0,0,0,105,32,61,61,32,112,99,111,108,0,0,0,0,0,0,0,115,114,99,0,0,0,0,0,99,109,112,32,61,61,32,48,0,0,0,0,0,0,0,0,100,115,116,0,0,0,0,0,99,110,61,37,100,44,32,97,99,110,61,37,100,44,32,110,117,109,99,111,109,112,115,61,37,100,10,0,0,0,0,0,73,110,118,97,108,105,100,32,99,111,109,112,111,110,101,110,116,32,105,110,100,101,120,32,37,100,32,40,62,61,32,37,100,41,46,10,0,0,0,0,85,110,101,120,112,101,99,116,101,100,32,79,79,77,46,10,0,0,0,0,0,0,0,0,99,109,97,112,91,105,93,46,109,116,121,112,32,61,61,32,48,32,124,124,32,99,109,97,112,91,105,93,46,109,116,121,112,32,61,61,32,49,0,0,111,112,106,95,106,112,50,95,99,104,101,99,107,95,99,111,108,111,114,0,0,0,0,0,73,110,118,97,108,105,100,32,99,111,109,112,111,110,101,110,116,47,112,97,108,101,116,116,101,32,105,110,100,101,120,32,102,111,114,32,100,105,114,101,99,116,32,109,97,112,112,105,110,103,32,37,100,46,10,0,67,111,109,112,111,110,101,110,116,32,37,100,32,105,115,32,109,97,112,112,101,100,32,116,119,105,99,101,46,10,0,0,68,105,114,101,99,116,32,117,115,101,32,97,116,32,35,37,100,32,104,111,119,101,118,101,114,32,112,99,111,108,61,37,100,46,10,0,0,0,0,0,67,111,109,112,111,110,101,110,116,32,37,100,32,100,111,101,115,110,39,116,32,104,97,118,101,32,97,32,109,97,112,112,105,110,103,46,10,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,99,111,108,114,0,0,0,0,0,0,0,112,95,99,111,108,114,95,104,101,97,100,101,114,95,100,97,116,97,32,33,61,32,48,48,0,0,0,0,0,0,0,0,66,97,100,32,67,79,76,82,32,104,101,97,100,101,114,32,98,111,120,32,40,98,97,100,32,115,105,122,101,41,10,0,65,32,99,111,110,102,111,114,109,105,110,103,32,74,80,50,32,114,101,97,100,101,114,32,115,104,97,108,108,32,105,103,110,111,114,101,32,97,108,108,32,67,111,108,111,117,114,32,83,112,101,99,105,102,105,99,97,116,105,111,110,32,98,111,120,101,115,32,97,102,116,101,114,32,116,104,101,32,102,105,114,115,116,44,32,115,111,32,119,101,32,105,103,110,111,114,101,32,116,104,105,115,32,111,110,101,46,10,0,0,0,0,66,97,100,32,67,79,76,82,32,104,101,97,100,101,114,32,98,111,120,32,40,98,97,100,32,115,105,122,101,58,32,37,100,41,10,0,0,0,0,0,67,79,76,82,32,66,79,88,32,109,101,116,104,32,118,97,108,117,101,32,105,115,32,110,111,116,32,97,32,114,101,103,117,108,97,114,32,118,97,108,117,101,32,40,37,100,41,44,32,115,111,32,119,101,32,119,105,108,108,32,105,103,110,111,114,101,32,116,104,101,32,101,110,116,105,114,101,32,67,111,108,111,117,114,32,83,112,101,99,105,102,105,99,97,116,105,111,110,32,98,111,120,46,32,10,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,99,100,101,102,0,0,0,0,0,0,0,112,95,99,100,101,102,95,104,101,97,100,101,114,95,100,97,116,97,32,33,61,32,48,48,0,0,0,0,0,0,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,100,97,116,97,32,102,111,114,32,67,68,69,70,32,98,111,120,46,10,0,0,0,0,0,0,0,0,78,117,109,98,101,114,32,111,102,32,99,104,97,110,110,101,108,32,100,101,115,99,114,105,112,116,105,111,110,32,105,115,32,101,113,117,97,108,32,116,111,32,122,101,114,111,32,105,110,32,67,68,69,70,32,98,111,120,46,10,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,99,109,97,112,0,0,0,0,0,0,0,112,95,99,109,97,112,95,104,101,97,100,101,114,95,100,97,116,97,32,33,61,32,48,48,0,0,0,0,0,0,0,0,78,101,101,100,32,116,111,32,114,101,97,100,32,97,32,80,67,76,82,32,98,111,120,32,98,101,102,111,114,101,32,116,104,101,32,67,77,65,80,32,98,111,120,46,10,0,0,0,79,110,108,121,32,111,110,101,32,67,77,65,80,32,98,111,120,32,105,115,32,97,108,108,111,119,101,100,46,10,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,100,97,116,97,32,102,111,114,32,67,77,65,80,32,98,111,120,46,10,0,0,0,0,0,0,0,0,112,95,112,99,108,114,95,104,101,97,100,101,114,95,100,97,116,97,32,33,61,32,48,48,0,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,112,99,108,114,0,0,0,0,0,0,0,112,95,98,112,99,95,104,101,97,100,101,114,95,100,97,116,97,32,33,61,32,48,48,0,111,112,106,95,106,112,50,95,114,101,97,100,95,98,112,99,99,0,0,0,0,0,0,0,65,32,66,80,67,67,32,104,101,97,100,101,114,32,98,111,120,32,105,115,32,97,118,97,105,108,97,98,108,101,32,97,108,116,104,111,117,103,104,32,66,80,67,32,103,105,118,101,110,32,98,121,32,116,104,101,32,73,72,68,82,32,98,111,120,32,40,37,100,41,32,105,110,100,105,99,97,116,101,32,99,111,109,112,111,110,101,110,116,115,32,98,105,116,32,100,101,112,116,104,32,105,115,32,99,111,110,115,116,97,110,116,10,0,0,0,0,0,0,0,66,97,100,32,66,80,67,67,32,104,101,97,100,101,114,32,98,111,120,32,40,98,97,100,32,115,105,122,101,41,10,0,112,95,105,109,97,103,101,95,104,101,97,100,101,114,95,100,97,116,97,32,33,61,32,48,48,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,105,104,100,114,0,0,0,0,0,0,0,66,97,100,32,105,109,97,103,101,32,104,101,97,100,101,114,32,98,111,120,32,40,98,97,100,32,115,105,122,101,41,10,0,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,104,97,110,100,108,101,32,105,109,97,103,101,32,104,101,97,100,101,114,32,40,105,104,100,114,41,10,0,0,0,0,0,0,0,0,74,80,50,32,73,72,68,82,32,98,111,120,58,32,99,111,109,112,114,101,115,115,105,111,110,32,116,121,112,101,32,105,110,100,105,99,97,116,101,32,116,104,97,116,32,116,104,101,32,102,105,108,101,32,105,115,32,110,111,116,32,97,32,99,111,110,102,111,114,109,105,110,103,32,74,80,50,32,102,105,108,101,32,40,37,100,41,32,10,0,0,0,0,0,0,0,131,192,202,161,69,182,251,63,127,251,58,112,206,136,234,63,127,251,58,112,206,136,234,63,131,192,202,161,69,182,251,63,225,122,20,174,71,225,252,63,94,186,73,12,2,43,249,63,1,86,0,0,0,0,0,0,144,219,3,0,160,219,3,0,1,86,0,0,1,0,0,0,160,219,3,0,144,219,3,0,1,52,0,0,0,0,0,0,176,219,3,0,48,220,3,0,1,52,0,0,1,0,0,0,192,219,3,0,64,220,3,0,1,24,0,0,0,0,0,0,208,219,3,0,144,220,3,0,1,24,0,0,1,0,0,0,224,219,3,0,160,220,3,0,193,10,0,0,0,0,0,0,240,219,3,0,240,220,3,0,193,10,0,0,1,0,0,0,0,220,3,0,0,221,3,0,33,5,0,0,0,0,0,0,16,220,3,0,16,223,3,0,33,5,0,0,1,0,0,0,32,220,3,0,32,223,3,0,33,2,0,0,0,0,0,0,48,224,3,0,144,223,3,0,33,2,0,0,1,0,0,0,64,224,3,0,160,223,3,0,1,86,0,0,0,0,0,0,80,220,3,0,64,220,3,0,1,86,0,0,1,0,0,0,96,220,3,0,48,220,3,0,1,84,0,0,0,0,0,0,112,220,3,0,48,221,3,0,1,84,0,0,1,0,0,0,128,220,3,0,64,221,3,0,1,72,0,0,0,0,0,0,144,220,3,0,48,221,3,0,1,72,0,0,1,0,0,0,160,220,3,0,64,221,3,0,1,56,0,0,0,0,0,0,176,220,3,0,48,221,3,0,1,56,0,0,1,0,0,0,192,220,3,0,64,221,3,0,1,48,0,0,0,0,0,0,208,220,3,0,144,221,3,0,1,48,0,0,1,0,0,0,224,220,3,0,160,221,3,0,1,36,0,0,0,0,0,0,240,220,3,0,176,221,3,0,1,36,0,0,1,0,0,0,0,221,3,0,192,221,3,0,1,28,0,0,0,0,0,0,16,221,3,0,240,221,3,0,1,28,0,0,1,0,0,0,32,221,3,0,0,222,3,0,1,22,0,0,0,0,0,0,16,223,3,0,16,222,3,0,1,22,0,0,1,0,0,0,32,223,3,0,32,222,3,0,1,86,0,0,0,0,0,0,80,221,3,0,64,221,3,0,1,86,0,0,1,0,0,0,96,221,3,0,48,221,3,0,1,84,0,0,0,0,0,0,112,221,3,0,48,221,3,0,1,84,0,0,1,0,0,0,128,221,3,0,64,221,3,0,1,81,0,0,0,0,0,0,144,221,3,0,80,221,3,0,1,81,0,0,1,0,0,0,160,221,3,0,96,221,3,0,1,72,0,0,0,0,0,0,176,221,3,0,112,221,3,0,1,72,0,0,1,0,0,0,192,221,3,0,128,221,3,0,1,56,0,0,0,0,0,0,208,221,3,0,144,221,3,0,1,56,0,0,1,0,0,0,224,221,3,0,160,221,3,0,1,52,0,0,0,0,0,0,240,221,3,0,176,221,3,0,1,52,0,0,1,0,0,0,0,222,3,0,192,221,3,0,1,48,0,0,0,0,0,0,16,222,3,0,208,221,3,0,1,48,0,0,1,0,0,0,32,222,3,0,224,221,3,0,1,40,0,0,0,0,0,0,48,222,3,0,208,221,3,0,1,40,0,0,1,0,0,0,64,222,3,0,224,221,3,0,1,36,0,0,0,0,0,0,80,222,3,0,240,221,3,0,1,36,0,0,1,0,0,0,96,222,3,0,0,222,3,0,1,34,0,0,0,0,0,0,112,222,3,0,16,222,3,0,1,34,0,0,1,0,0,0,128,222,3,0,32,222,3,0,1,28,0,0,0,0,0,0,144,222,3,0,48,222,3,0,1,28,0,0,1,0,0,0,160,222,3,0,64,222,3,0,1,24,0,0,0,0,0,0,176,222,3,0,80,222,3,0,1,24,0,0,1,0,0,0,192,222,3,0,96,222,3,0,1,22,0,0,0,0,0,0,208,222,3,0,112,222,3,0,1,22,0,0,1,0,0,0,224,222,3,0,128,222,3,0,1,20,0,0,0,0,0,0,240,222,3,0,144,222,3,0,1,20,0,0,1,0,0,0,0,223,3,0,160,222,3,0,1,18,0,0,0,0,0,0,16,223,3,0,176,222,3,0,1,18,0,0,1,0,0,0,32,223,3,0,192,222,3,0,1,17,0,0,0,0,0,0,48,223,3,0,208,222,3,0,1,17,0,0,1,0,0,0,64,223,3,0,224,222,3,0,193,10,0,0,0,0,0,0,80,223,3,0,240,222,3,0,193,10,0,0,1,0,0,0,96,223,3,0,0,223,3,0,193,9,0,0,0,0,0,0,112,223,3,0,16,223,3,0,193,9,0,0,1,0,0,0,128,223,3,0,32,223,3,0,161,8,0,0,0,0,0,0,144,223,3,0,48,223,3,0,161,8,0,0,1,0,0,0,160,223,3,0,64,223,3,0,33,5,0,0,0,0,0,0,176,223,3,0,80,223,3,0,33,5,0,0,1,0,0,0,192,223,3,0,96,223,3,0,65,4,0,0,0,0,0,0,208,223,3,0,112,223,3,0,65,4,0,0,1,0,0,0,224,223,3,0,128,223,3,0,161,2,0,0,0,0,0,0,240,223,3,0,144,223,3,0,161,2,0,0,1,0,0,0,0,224,3,0,160,223,3,0,33,2,0,0,0,0,0,0,16,224,3,0,176,223,3,0,33,2,0,0,1,0,0,0,32,224,3,0,192,223,3,0,65,1,0,0,0,0,0,0,48,224,3,0,208,223,3,0,65,1,0,0,1,0,0,0,64,224,3,0,224,223,3,0,17,1,0,0,0,0,0,0,80,224,3,0,240,223,3,0,17,1,0,0,1,0,0,0,96,224,3,0,0,224,3,0,133,0,0,0,0,0,0,0,112,224,3,0,16,224,3,0,133,0,0,0,1,0,0,0,128,224,3,0,32,224,3,0,73,0,0,0,0,0,0,0,144,224,3,0,48,224,3,0,73,0,0,0,1,0,0,0,160,224,3,0,64,224,3,0,37,0,0,0,0,0,0,0,176,224,3,0,80,224,3,0,37,0,0,0,1,0,0,0,192,224,3,0,96,224,3,0,21,0,0,0,0,0,0,0,208,224,3,0,112,224,3,0,21,0,0,0,1,0,0,0,224,224,3,0,128,224,3,0,9,0,0,0,0,0,0,0,240,224,3,0,144,224,3,0,9,0,0,0,1,0,0,0,0,225,3,0,160,224,3,0,5,0,0,0,0,0,0,0,16,225,3,0,176,224,3,0,5,0,0,0,1,0,0,0,32,225,3,0,192,224,3,0,1,0,0,0,0,0,0,0,16,225,3,0,208,224,3,0,1,0,0,0,1,0,0,0,32,225,3,0,224,224,3,0,1,86,0,0,0,0,0,0,48,225,3,0,48,225,3,0,1,86,0,0,1,0,0,0,64,225,3,0,64,225,3,0,67,111,100,101,99,32,112,114,111,118,105,100,101,100,32,116,111,32,116,104,101,32,111,112,106,95,115,101,116,117,112,95,100,101,99,111,100,101,114,32,102,117,110,99,116,105,111,110,32,105,115,32,110,111,116,32,97,32,100,101,99,111,109,112,114,101,115,115,111,114,32,104,97,110,100,108,101,114,46,10,0,0,0,0,0,0,0,0,67,111,100,101,99,32,112,114,111,118,105,100,101,100,32,116,111,32,116,104,101,32,111,112,106,95,114,101,97,100,95,104,101,97,100,101,114,32,102,117,110,99,116,105,111,110,32,105,115,32,110,111,116,32,97,32,100,101,99,111,109,112,114,101,115,115,111,114,32,104,97,110,100,108,101,114,46,10,0,0,112,95,99,112,32,33,61,32,48,48,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,92,112,105,46,99,0,111,112,106,95,112,105,95,99,114,101,97,116,101,95,100,101,99,111,100,101,0,0,0,0,112,95,105,109,97,103,101,32,33,61,32,48,48,0,0,0,112,95,116,105,108,101,95,110,111,32,60,32,112,95,99,112,45,62,116,119,32,42,32,112,95,99,112,45,62,116,104,0,111,112,106,95,112,105,95,105,110,105,116,105,97,108,105,115,101,95,101,110,99,111,100,101,0,0,0,0,0,0,0,0,111,112,106,95,112,105,95,117,112,100,97,116,101,95,101,110,99,111,100,105,110,103,95,112,97,114,97,109,101,116,101,114,115,0,0,0,0,0,0,0,112,95,116,105,108,101,110,111,32,60,32,112,95,99,112,45,62,116,119,32,42,32,112,95,99,112,45,62,116,104,0,0,111,112,106,95,112,105,95,117,112,100,97,116,101,95,101,110,99,111,100,101,95,110,111,116,95,112,111,99,0,0,0,0,111,112,106,95,112,105,95,117,112,100,97,116,101,95,101,110,99,111,100,101,95,112,111,99,95,97,110,100,95,102,105,110,97,108,0,0,0,0,0,0,112,95,116,99,112,32,33,61,32,48,48,0,0,0,0,0,111,112,106,95,112,105,95,117,112,100,97,116,101,95,100,101,99,111,100,101,95,110,111,116,95,112,111,99,0,0,0,0,111,112,106,95,112,105,95,117,112,100,97,116,101,95,100,101,99,111,100,101,95,112,111,99,0,0,0,0,0,0,0,0,111,112,106,95,103,101,116,95,97,108,108,95,101,110,99,111,100,105,110,103,95,112,97,114,97,109,101,116,101,114,115,0,116,105,108,101,110,111,32,60,32,112,95,99,112,45,62,116,119,32,42,32,112,95,99,112,45,62,116,104,0,0,0,0,99,112,32,33,61,32,48,48,0,0,0,0,0,0,0,0,111,112,106,95,112,105,95,99,114,101,97,116,101,0,0,0,105,109,97,103,101,32,33,61,32,48,48,0,0,0,0,0,116,105,108,101,110,111,32,60,32,99,112,45,62,116,119,32,42,32,99,112,45,62,116,104,0,0,0,0,0,0,0,0,64,0,64,4,32,0,32,2,128,0,128,8,16,0,16,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,1,1,0,0,1,1,1,0,0,1,0,0,1,1,0,0,1,1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,10,12,13,10,10,13,13,12,13,12,13,13,13,13,13,9,10,12,11,10,9,13,12,12,11,12,11,13,12,13,12,9,10,12,11,10,10,11,11,12,13,9,10,13,13,10,10,9,10,12,13,10,9,11,12,12,11,9,10,13,12,10,9,9,10,12,13,10,9,11,12,12,13,12,13,11,12,11,12,9,10,12,11,10,10,11,11,12,11,12,11,11,11,11,11,9,10,12,11,10,9,13,12,12,13,9,10,11,12,10,9,9,10,12,13,10,10,13,13,12,11,9,10,11,11,10,10,9,10,12,13,10,10,13,13,12,11,9,10,11,11,10,10,9,10,12,11,10,9,13,12,12,13,9,10,11,12,10,9,9,10,12,11,10,10,11,11,12,11,12,11,11,11,11,11,9,10,12,13,10,9,11,12,12,13,12,13,11,12,11,12,9,10,12,13,10,9,11,12,12,11,9,10,13,12,10,9,9,10,12,11,10,10,11,11,12,13,9,10,13,13,10,10,9,10,12,11,10,9,13,12,12,11,12,11,13,12,13,12,9,10,12,13,10,10,13,13,12,13,12,13,13,13,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,1,0,3,128,4,0,6,128,7,0,9,128,10,0,12,128,13,0,15,128,16,0,18,128,19,0,21,128,22,0,24,128,25,0,27,128,28,0,30,128,31,0,33,128,34,0,36,128,37,0,39,128,40,0,42,128,43,0,45,128,46,0,48,128,49,0,51,128,52,0,54,128,55,0,57,128,58,0,60,128,61,0,63,128,64,0,66,128,67,0,69,128,70,0,72,128,73,0,75,128,76,0,78,128,79,0,81,128,82,0,84,128,85,0,87,128,88,0,90,128,91,0,93,128,94,0,96,128,97,0,99,128,100,0,102,128,103,0,105,128,106,0,108,128,109,0,111,128,112,0,114,128,115,0,117,128,118,0,0,0,0,0,0,0,0,0,0,0,0,128,0,128,0,128,0,128,0,0,1,0,1,0,1,128,1,128,1,0,2,0,2,128,2,128,2,0,3,0,3,128,3,0,4,0,4,128,4,0,5,128,5,128,5,0,6,128,6,0,7,128,7,0,8,128,8,0,9,128,9,0,10,128,10,128,11,0,12,128,12,0,13,0,14,128,14,0,15,0,16,128,16,128,17,0,18,0,19,128,19,128,20,0,21,0,22,0,23,128,23,128,24,128,25,128,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,128,38,128,39,128,40,128,41,0,43,0,44,0,45,128,46,128,47,0,49,0,50,128,51,128,52,0,54,0,55,128,56,0,58,0,59,128,60,0,62,128,63,128,64,0,66,128,67,0,69,128,70,0,72,128,73,0,75,128,76,0,78,128,79,128,81,0,83,128,84,0,86,0,88,128,89,0,91,0,93,128,94,128,96,0,98,0,100,128,101,128,103,0,105,0,107,0,109,128,110,128,112,128,114,128,116,0,118,0,120,0,122,0,124,0,126],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+245760);allocate([0,1,1,2,1,2,2,2,1,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,1,1,2,1,2,2,2,1,2,2,2,2,2,2,2,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,1,1,2,1,2,2,2,1,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,3,3,6,3,6,6,8,3,6,6,8,6,8,8,8,1,4,4,7,4,7,7,8,4,7,7,8,7,8,8,8,1,4,4,7,4,7,7,8,4,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,1,4,4,7,4,7,7,8,4,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,1,4,4,7,4,7,7,8,4,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,0,24,128,23,0,23,128,22,0,22,128,21,0,21,128,20,0,20,128,19,0,19,128,18,0,18,128,17,0,17,128,16,0,16,128,15,0,15,128,14,0,14,128,13,0,13,128,12,0,12,128,11,0,11,128,10,0,10,128,9,0,9,128,8,0,8,128,7,0,7,128,6,0,6,128,5,0,5,128,4,0,4,128,3,0,3,128,2,0,2,128,1,0,1,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,1,128,1,0,2,128,2,0,3,128,3,0,4,128,4,0,5,128,5,0,6,128,6,0,7,128,7,0,8,128,8,0,9,128,9,0,10,128,10,0,11,128,11,0,12,128,12,0,13,128,13,0,14,128,14,0,15,128,15,0,16,128,16,0,17,128,17,0,18,128,18,0,19,128,19,0,20,128,20,0,21,128,21,0,22,128,22,0,23,128,23,0,32,0,31,0,30,0,29,0,28,0,27,128,26,128,25,128,24,128,23,0,23,0,22,0,21,128,20,128,19,0,19,0,18,128,17,128,16,0,16,0,15,128,14,0,14,0,13,128,12,0,12,128,11,128,10,0,10,128,9,0,9,128,8,0,8,128,7,0,7,128,6,0,6,128,5,128,5,0,5,128,4,0,4,0,4,128,3,0,3,0,3,128,2,128,2,0,2,0,2,128,1,128,1,0,1,0,1,0,1,128,0,128,0,128,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,128,0,128,0,128,0,0,1,0,1,0,1,128,1,128,1,0,2,0,2,128,2,128,2,0,3,0,3,128,3,0,4,0,4,128,4,0,5,128,5,128,5,0,6,128,6,0,7,128,7,0,8,128,8,0,9,128,9,0,10,128,10,128,11,0,12,128,12,0,13,0,14,128,14,0,15,0,16,128,16,128,17,0,18,0,19,128,19,128,20,0,21,0,22,0,23,128,23,128,24,128,25,128,26,0,27,0,28,0,29,0,30,0,31,115,107,105,112,58,32,115,101,103,109,101,110,116,32,116,111,111,32,108,111,110,103,32,40,37,100,41,32,119,105,116,104,32,109,97,120,32,40,37,100,41,32,102,111,114,32,99,111,100,101,98,108,111,99,107,32,37,100,32,40,112,61,37,100,44,32,98,61,37,100,44,32,114,61,37,100,44,32,99,61,37,100,41,10,0,0,0,0,69,114,114,111,114,32,58,32,101,120,112,101,99,116,101,100,32,83,79,80,32,109,97,114,107,101,114,10,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,115,112,97,99,101,32,102,111,114,32,101,120,112,101,99,116,101,100,32,69,80,72,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,69,114,114,111,114,32,58,32,101,120,112,101,99,116,101,100,32,69,80,72,32,109,97,114,107,101,114,10,0,0,0,0,99,32,62,61,32,100,101,115,116,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,92,116,50,46,99,0,111,112,106,95,116,50,95,101,110,99,111,100,101,95,112,97,99,107,101,116,0,0,0,0,114,101,97,100,58,32,115,101,103,109,101,110,116,32,116,111,111,32,108,111,110,103,32,40,37,100,41,32,119,105,116,104,32,109,97,120,32,40,37,100,41,32,102,111,114,32,99,111,100,101,98,108,111,99,107,32,37,100,32,40,112,61,37,100,44,32,98,61,37,100,44,32,114,61,37,100,44,32,99,61,37,100,41,10,0,0,0,0,116,105,108,101,115,32,114,101,113,117,105,114,101,32,97,116,32,108,101,97,115,116,32,111,110,101,32,114,101,115,111,108,117,116,105,111,110,10,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,104,97,110,100,108,101,32,116,105,108,101,32,100,97,116,97,10,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,116,105,108,101,32,114,101,115,111,108,117,116,105,111,110,115,10,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,104,97,110,100,108,101,32,98,97,110,100,32,112,114,101,99,105,110,116,115,10,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,102,111,114,32,99,117,114,114,101,110,116,32,112,114,101,99,105,110,99,116,32,99,111,100,101,98,108,111,99,107,32,101,108,101,109,101,110,116,10,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,78,111,32,105,110,99,108,116,114,101,101,32,99,114,101,97,116,101,100,46,10,0,0,87,65,82,78,73,78,71,58,32,78,111,32,105,109,115,98,116,114,101,101,32,99,114,101,97,116,101,100,46,10,0,0,108,95,104,101,105,103,104,116,32,61,61,32,48,32,124,124,32,108,95,119,105,100,116,104,32,43,32,108,95,115,116,114,105,100,101,32,60,61,32,108,95,116,105,108,101,95,99,111,109,112,45,62,100,97,116,97,95,115,105,122,101,32,47,32,108,95,104,101,105,103,104,116,0,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,92,116,99,100,46,99,0,0,0,0,0,0,0,0,111,112,106,95,116,99,100,95,100,99,95,108,101,118,101,108,95,115,104,105,102,116,95,100,101,99,111,100,101,0,0,0,84,105,108,101,115,32,100,111,110,39,116,32,97,108,108,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,100,105,109,101,110,115,105,111,110,46,32,83,107,105,112,32,116,104,101,32,77,67,84,32,115,116,101,112,46,10,0,0,0,0,78,117,109,98,101,114,32,111,102,32,99,111,109,112,111,110,101,110,116,115,32,40,37,100,41,32,105,115,32,105,110,99,111,110,115,105,115,116,101,110,116,32,119,105,116,104,32,97,32,77,67,84,46,32,83,107,105,112,32,116,104,101,32,77,67,84,32,115,116,101,112,46,10,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,47,111,112,106,95,105,110,116,109,97,116,104,46,104,0,0,0,0,0,0,0,0,111,112,106,95,105,110,116,95,99,101,105,108,100,105,118,0,69,82,82,79,82,32,105,110,32,116,103,116,95,99,114,101,97,116,101,32,119,104,105,108,101,32,97,108,108,111,99,97,116,105,110,103,32,116,114,101,101,10,0,0,0,0,0,0,87,65,82,78,73,78,71,32,105,110,32,116,103,116,95,99,114,101,97,116,101,32,116,114,101,101,45,62,110,117,109,110,111,100,101,115,32,61,61,32,48,44,32,110,111,32,116,114,101,101,32,99,114,101,97,116,101,100,46,10,0,0,0,0,69,82,82,79,82,32,105,110,32,116,103,116,95,99,114,101,97,116,101,32,119,104,105,108,101,32,97,108,108,111,99,97,116,105,110,103,32,110,111,100,101,32,111,102,32,116,104,101,32,116,114,101,101,10,0,0,69,82,82,79,82,32,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,114,101,105,110,105,116,105,97,108,105,122,101,32,116,104,101,32,116,97,103,32,116,114,101,101,10,0,0,0,84,111,111,32,109,97,110,121,32,98,121,116,101,115,32,102,111,114,32,80,78,71,32,115,105,103,110,97,116,117,114,101,0,0,0,0,0,0,0,0,80,111,116,101,110,116,105,97,108,32,111,118,101,114,102,108,111,119,32,105,110,32,112,110,103,95,122,97,108,108,111,99,40,41,0,0,0,0,0,0,65,112,112,108,105,99,97,116,105,111,110,32,98,117,105,108,116,32,119,105,116,104,32,108,105,98,112,110,103,45,0,0,32,98,117,116,32,114,117,110,110,105,110,103,32,119,105,116,104,32,0,0,0,0,0,0,117,110,101,120,112,101,99,116,101,100,32,122,108,105,98,32,114,101,116,117,114,110,32,99,111,100,101,0,0,0,0,0,117,110,101,120,112,101,99,116,101,100,32,101,110,100,32,111,102,32,76,90,32,115,116,114,101,97,109,0,0,0,0,0,109,105,115,115,105,110,103,32,76,90,32,100,105,99,116,105,111,110,97,114,121,0,0,0,122,108,105,98,32,73,79,32,101,114,114,111,114,0,0,0,98,97,100,32,112,97,114,97,109,101,116,101,114,115,32,116,111,32,122,108,105,98,0,0,100,97,109,97,103,101,100,32,76,90,32,115,116,114,101,97,109,0,0,0,0,0,0,0,117,110,115,117,112,112,111,114,116,101,100,32,122,108,105,98,32,118,101,114,115,105,111,110,0,0,0,0,0,0,0,0,117,110,101,120,112,101,99,116,101,100,32,122,108,105,98,32,114,101,116,117,114,110,0,0,103,97,109,109,97,32,118,97,108,117,101,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,99,104,114,111,109,97,116,105,99,105,116,105,101,115,0,0,105,110,116,101,114,110,97,108,32,101,114,114,111,114,32,99,104,101,99,107,105,110,103,32,99,104,114,111,109,97,116,105,99,105,116,105,101,115,0,0,23,161,0,0,16,83,0,0,141,7,0,0,174,139,0,0,93,23,1,0,143,46,0,0,128,70,0,0,51,28,0,0,77,115,1,0,0,0,0,0,115,82,71,66,0,0,0,0,105,110,118,97,108,105,100,32,115,82,71,66,32,114,101,110,100,101,114,105,110,103,32,105,110,116,101,110,116,0,0,0,105,110,99,111,110,115,105,115,116,101,110,116,32,114,101,110,100,101,114,105,110,103,32,105,110,116,101,110,116,115,0,0,100,117,112,108,105,99,97,116,101,32,115,82,71,66,32,105,110,102,111,114,109,97,116,105,111,110,32,105,103,110,111,114,101,100,0,0,0,0,0,0,0,250,0,0,232,128,0,0,48,117,0,0,96,234,0,0,152,58,0,0,112,23,0,0,38,122,0,0,132,128,0,0,99,72,82,77,32,99,104,117,110,107,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,115,82,71,66,0,0,108,101,110,103,116,104,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,112,114,111,102,105,108,101,0,0,0,105,110,118,97,108,105,100,32,108,101,110,103,116,104,0,0,116,97,103,32,99,111,117,110,116,32,116,111,111,32,108,97,114,103,101,0,0,0,0,0,105,110,118,97,108,105,100,32,114,101,110,100,101,114,105,110,103,32,105,110,116,101,110,116,0,0,0,0,0,0,0,0,105,110,116,101,110,116,32,111,117,116,115,105,100,101,32,100,101,102,105,110,101,100,32,114,97,110,103,101,0,0,0,0,105,110,118,97,108,105,100,32,115,105,103,110,97,116,117,114,101,0,0,0,0,0,0,0,0,0,246,214,0,1,0,0,0,0,211,45,0,0,0,0,80,67,83,32,105,108,108,117,109,105,110,97,110,116,32,105,115,32,110,111,116,32,68,53,48,0,0,0,0,0,0,0,82,71,66,32,99,111,108,111,114,32,115,112,97,99,101,32,110,111,116,32,112,101,114,109,105,116,116,101,100,32,111,110,32,103,114,97,121,115,99,97,108,101,32,80,78,71,0,0,71,114,97,121,32,99,111,108,111,114,32,115,112,97,99,101,32,110,111,116,32,112,101,114,109,105,116,116,101,100,32,111,110,32,82,71,66,32,80,78,71,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,73,67,67,32,112,114,111,102,105,108,101,32,99,111,108,111,114,32,115,112,97,99,101,0,105,110,118,97,108,105,100,32,101,109,98,101,100,100,101,100,32,65,98,115,116,114,97,99,116,32,73,67,67,32,112,114,111,102,105,108,101,0,0,0,117,110,101,120,112,101,99,116,101,100,32,68,101,118,105,99,101,76,105,110,107,32,73,67,67,32,112,114,111,102,105,108,101,32,99,108,97,115,115,0,117,110,101,120,112,101,99,116,101,100,32,78,97,109,101,100,67,111,108,111,114,32,73,67,67,32,112,114,111,102,105,108,101,32,99,108,97,115,115,0,117,110,114,101,99,111,103,110,105,122,101,100,32,73,67,67,32,112,114,111,102,105,108,101,32,99,108,97,115,115,0,0,117,110,101,120,112,101,99,116,101,100,32,73,67,67,32,80,67,83,32,101,110,99,111,100,105,110,103,0,0,0,0,0,73,67,67,32,112,114,111,102,105,108,101,32,116,97,103,32,115,116,97,114,116,32,110,111,116,32,97,32,109,117,108,116,105,112,108,101,32,111,102,32,52,0,0,0,0,0,0,0,73,67,67,32,112,114,111,102,105,108,101,32,116,97,103,32,111,117,116,115,105,100,101,32,112,114,111,102,105,108,101,0,105,110,116,101,114,110,97,108,32,101,114,114,111,114,32,104,97,110,100,108,105,110,103,32,99,72,82,77,32,99,111,101,102,102,105,99,105,101,110,116,115,0,0,0,0,0,0,0,105,110,116,101,114,110,97,108,32,101,114,114,111,114,32,104,97,110,100,108,105,110,103,32,99,72,82,77,45,62,88,89,90,0,0,0,0,0,0,0,73,109,97,103,101,32,119,105,100,116,104,32,105,115,32,122,101,114,111,32,105,110,32,73,72,68,82,0,0,0,0,0,73,110,118,97,108,105,100,32,105,109,97,103,101,32,119,105,100,116,104,32,105,110,32,73,72,68,82,0,0,0,0,0,73,109,97,103,101,32,119,105,100,116,104,32,105,115,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,116,104,105,115,32,97,114,99,104,105,116,101,99,116,117,114,101,0,0,73,109,97,103,101,32,119,105,100,116,104,32,101,120,99,101,101,100,115,32,117,115,101,114,32,108,105,109,105,116,32,105,110,32,73,72,68,82,0,0,73,109,97,103,101,32,104,101,105,103,104,116,32,105,115,32,122,101,114,111,32,105,110,32,73,72,68,82,0,0,0,0,73,110,118,97,108,105,100,32,105,109,97,103,101,32,104,101,105,103,104,116,32,105,110,32,73,72,68,82,0,0,0,0,73,109,97,103,101,32,104,101,105,103,104,116,32,101,120,99,101,101,100,115,32,117,115,101,114,32,108,105,109,105,116,32,105,110,32,73,72,68,82,0,73,110,118,97,108,105,100,32,98,105,116,32,100,101,112,116,104,32,105,110,32,73,72,68,82,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,99,111,108,111,114,32,116,121,112,101,32,105,110,32,73,72,68,82,0,0,0,0,0,0,73,110,118,97,108,105,100,32,99,111,108,111,114,32,116,121,112,101,47,98,105,116,32,100,101,112,116,104,32,99,111,109,98,105,110,97,116,105,111,110,32,105,110,32,73,72,68,82,0,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,105,110,116,101,114,108,97,99,101,32,109,101,116,104,111,100,32,105,110,32,73,72,68,82,0,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,99,111,109,112,114,101,115,115,105,111,110,32,109,101,116,104,111,100,32,105,110,32,73,72,68,82,0,0,0,0,0,0,85,110,107,110,111,119,110,32,102,105,108,116,101,114,32,109,101,116,104,111,100,32,105,110,32,73,72,68,82,0,0,0,73,110,118,97,108,105,100,32,102,105,108,116,101,114,32,109,101,116,104,111,100,32,105,110,32,73,72,68,82,0,0,0,73,110,118,97,108,105,100,32,73,72,68,82,32,100,97,116,97,0,0,0,0,0,0,0,103,97,109,109,97,32,116,97,98,108,101,32,98,101,105,110,103,32,114,101,98,117,105,108,116,0,0,0,0,0,0,0,112,114,111,102,105,108,101,32,39,0,0,0,0,0,0,0,39,58,32,0,0,0,0,0,104,58,32,0,0,0,0,0,105,110,99,111,110,115,105,115,116,101,110,116,32,99,104,114,111,109,97,116,105,99,105,116,105,101,115,0,0,0,0,0,103,97,109,109,97,32,118,97,108,117,101,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,115,82,71,66,0,103,97,109,109,97,32,118,97,108,117,101,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,108,105,98,112,110,103,32,101,115,116,105,109,97,116,101,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,0,0,0,0,0,0,0,0,49,50,51,52,53,54,55,56,57,0,0,0,0,0,0,0,102,105,120,101,100,32,112,111,105,110,116,32,111,118,101,114,102,108,111,119,32,105,110,32,0,0,0,0,0,0,0,0,76,105,98,112,110,103,32,106,109,112,95,98,117,102,32,115,116,105,108,108,32,97,108,108,111,99,97,116,101,100,0,0,65,112,112,108,105,99,97,116,105,111,110,32,106,109,112,95,98,117,102,32,115,105,122,101,32,99,104,97,110,103,101,100,0,0,0,0,0,0,0,0,108,105,98,112,110,103,32,119,97,114,110,105,110,103,58,32,37,115,0,0,0,0,0,0,108,105,98,112,110,103,32,101,114,114,111,114,58,32,37,115,0,0,0,0,0,0,0,0,117,110,100,101,102,105,110,101,100,0,0,0,0,0,0,0,105,110,116,101,114,110,97,108,32,101,114,114,111,114,58,32,97,114,114,97,121,32,97,108,108,111,99,0,0,0,0,0,105,110,116,101,114,110,97,108,32,101,114,114,111,114,58,32,97,114,114,97,121,32,114,101,97,108,108,111,99,0,0,0,77,105,115,115,105,110,103,32,73,72,68,82,32,98,101,102,111,114,101,32,73,68,65,84,0,0,0,0,0,0,0,0,77,105,115,115,105,110,103,32,80,76,84,69,32,98,101,102,111,114,101,32,73,68,65,84,0,0,0,0,0,0,0,0,84,111,111,32,109,97,110,121,32,73,68,65,84,115,32,102,111,117,110,100,0,0,0,0,112,110,103,95,114,101,97,100,95,117,112,100,97,116,101,95,105,110,102,111,47,112,110,103,95,115,116,97,114,116,95,114,101,97,100,95,105,109,97,103,101,58,32,100,117,112,108,105,99,97,116,101,32,99,97,108,108,0,0,0,0,0,0,0,112,110,103,95,115,116,97,114,116,95,114,101,97,100,95,105,109,97,103,101,47,112,110,103,95,114,101,97,100,95,117,112,100,97,116,101,95,105,110,102,111,58,32,100,117,112,108,105,99,97,116,101,32,99,97,108,108,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,97,116,116,101,109,112,116,32,116,111,32,114,101,97,100,32,114,111,119,32,100,97,116,97,0,0,0,0,0,0,0,0,98,97,100,32,97,100,97,112,116,105,118,101,32,102,105,108,116,101,114,32,118,97,108,117,101,0,0,0,0,0,0,0,115,101,113,117,101,110,116,105,97,108,32,114,111,119,32,111,118,101,114,102,108,111,119,0,105,110,116,101,114,110,97,108,32,115,101,113,117,101,110,116,105,97,108,32,114,111,119,32,115,105,122,101,32,99,97,108,99,117,108,97,116,105,111,110,32,101,114,114,111,114,0,0,73,110,116,101,114,108,97,99,101,32,104,97,110,100,108,105,110,103,32,115,104,111,117,108,100,32,98,101,32,116,117,114,110,101,100,32,111,110,32,119,104,101,110,32,117,115,105,110,103,32,112,110,103,95,114,101,97,100,95,105,109,97,103,101,0,0,0,0,0,0,0,0,82,101,97,100,32,112,97,108,101,116,116,101,32,105,110,100,101,120,32,101,120,99,101,101,100,105,110,103,32,110,117,109,95,112,97,108,101,116,116,101,0,0,0,0,0,0,0,0,67,97,108,108,32,116,111,32,78,85,76,76,32,114,101,97,100,32,102,117,110,99,116,105,111,110,0,0,0,0,0,0,82,101,97,100,32,69,114,114,111,114,0,0,0,0,0,0,105,110,118,97,108,105,100,32,102,105,108,101,32,103,97,109,109,97,32,105,110,32,112,110,103,95,115,101,116,95,103,97,109,109,97,0,0,0,0,0,105,110,118,97,108,105,100,32,115,99,114,101,101,110,32,103,97,109,109,97,32,105,110,32,112,110,103,95,115,101,116,95,103,97,109,109,97,0,0,0,108,105,98,112,110,103,32,100,111,101,115,32,110,111,116,32,115,117,112,112,111,114,116,32,103,97,109,109,97,43,98,97,99,107,103,114,111,117,110,100,43,114,103,98,95,116,111,95,103,114,97,121,0,0,0,0,105,110,118,97,108,105,100,32,98,97,99,107,103,114,111,117,110,100,32,103,97,109,109,97,32,116,121,112,101,0,0,0,80,97,108,101,116,116,101,32,105,115,32,78,85,76,76,32,105,110,32,105,110,100,101,120,101,100,32,105,109,97,103,101,0,0,0,0,0,0,0,0,78,85,76,76,32,114,111,119,32,98,117,102,102,101,114,0,85,110,105,110,105,116,105,97,108,105,122,101,100,32,114,111,119,0,0,0,0,0,0,0,112,110,103,95,100,111,95,114,103,98,95,116,111,95,103,114,97,121,32,102,111,117,110,100,32,110,111,110,103,114,97,121,32,112,105,120,101,108,0,0,112,110,103,95,100,111,95,113,117,97,110,116,105,122,101,32,114,101,116,117,114,110,101,100,32,114,111,119,98,121,116,101,115,61,48,0,0,0,0,0,112,110,103,95,100,111,95,101,110,99,111,100,101,95,97,108,112,104,97,58,32,117,110,101,120,112,101,99,116,101,100,32,99,97,108,108,0,0,0,0,103,97,109,109,97,32,118,97,108,117,101,0,0,0,0,0,105,110,118,97,108,105,100,32,97,102,116,101,114,32,112,110,103,95,115,116,97,114,116,95,114,101,97,100,95,105,109,97,103,101,32,111,114,32,112,110,103,95,114,101,97,100,95,117,112,100,97,116,101,95,105,110,102,111,0,0,0,0,0,0,80,78,71,32,117,110,115,105,103,110,101,100,32,105,110,116,101,103,101,114,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,0,78,111,116,32,97,32,80,78,71,32,102,105,108,101,0,0,80,78,71,32,102,105,108,101,32,99,111,114,114,117,112,116,101,100,32,98,121,32,65,83,67,73,73,32,99,111,110,118,101,114,115,105,111,110,0,0,67,82,67,32,101,114,114,111,114,0,0,0,0,0,0,0,111,117,116,32,111,102,32,112,108,97,99,101,0,0,0,0,105,110,118,97,108,105,100,0,109,105,115,115,105,110,103,32,73,72,68,82,0,0,0,0,100,117,112,108,105,99,97,116,101,0,0,0,0,0,0,0,105,103,110,111,114,101,100,32,105,110,32,103,114,97,121,115,99,97,108,101,32,80,78,71,0,0,0,0,0,0,0,0,116,82,78,83,32,109,117,115,116,32,98,101,32,97,102,116,101,114,0,0,0,0,0,0,104,73,83,84,32,109,117,115,116,32,98,101,32,97,102,116,101,114,0,0,0,0,0,0,98,75,71,68,32,109,117,115,116,32,98,101,32,97,102,116,101,114,0,0,0,0,0,0,105,110,118,97,108,105,100,32,118,97,108,117,101,115,0,0,116,111,111,32,109,97,110,121,32,112,114,111,102,105,108,101,115,0,0,0,0,0,0,0,116,111,111,32,115,104,111,114,116,0,0,0,0,0,0,0,101,120,116,114,97,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,0,0,0,111,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,116,114,117,110,99,97,116,101,100,0,0,0,0,0,0,0,98,97,100,32,99,111,109,112,114,101,115,115,105,111,110,32,109,101,116,104,111,100,0,0,98,97,100,32,107,101,121,119,111,114,100,0,0,0,0,0,78,111,32,115,112,97,99,101,32,105,110,32,99,104,117,110,107,32,99,97,99,104,101,32,102,111,114,32,115,80,76,84,0,0,0,0,0,0,0,0,109,97,108,102,111,114,109,101,100,32,115,80,76,84,32,99,104,117,110,107,0,0,0,0,115,80,76,84,32,99,104,117,110,107,32,104,97,115,32,98,97,100,32,108,101,110,103,116,104,0,0,0,0,0,0,0,115,80,76,84,32,99,104,117,110,107,32,116,111,111,32,108,111,110,103,0,0,0,0,0,115,80,76,84,32,99,104,117,110,107,32,114,101,113,117,105,114,101,115,32,116,111,111,32,109,117,99,104,32,109,101,109,111,114,121,0,0,0,0,0,105,110,118,97,108,105,100,32,119,105,116,104,32,97,108,112,104,97,32,99,104,97,110,110,101,108,0,0,0,0,0,0,105,110,118,97,108,105,100,32,105,110,100,101,120,0,0,0,105,110,118,97,108,105,100,32,112,97,114,97,109,101,116,101,114,32,99,111,117,110,116,0,117,110,114,101,99,111,103,110,105,122,101,100,32,101,113,117,97,116,105,111,110,32,116,121,112,101,0,0,0,0,0,0,105,110,118,97,108,105,100,32,100,97,116,97,0,0,0,0,105,110,118,97,108,105,100,32,117,110,105,116,0,0,0,0,98,97,100,32,119,105,100,116,104,32,102,111,114,109,97,116,0,0,0,0,0,0,0,0,110,111,110,45,112,111,115,105,116,105,118,101,32,119,105,100,116,104,0,0,0,0,0,0,98,97,100,32,104,101,105,103,104,116,32,102,111,114,109,97,116,0,0,0,0,0,0,0,110,111,110,45,112,111,115,105,116,105,118,101,32,104,101,105,103,104,116,0,0,0,0,0,110,111,32,115,112,97,99,101,32,105,110,32,99,104,117,110,107,32,99,97,99,104,101,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,116,111,32,112,114,111,99,101,115,115,32,116,101,120,116,32,99,104,117,110,107,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,99,111,109,112,114,101,115,115,105,111,110,32,116,121,112,101,0,0,0,0,0,0,0,0,98,97,100,32,99,111,109,112,114,101,115,115,105,111,110,32,105,110,102,111,0,0,0,0,101,114,114,111,114,32,105,110,32,117,115,101,114,32,99,104,117,110,107,0,0,0,0,0,83,97,118,105,110,103,32,117,110,107,110,111,119,110,32,99,104,117,110,107,58,0,0,0,102,111,114,99,105,110,103,32,115,97,118,101,32,111,102,32,97,110,32,117,110,104,97,110,100,108,101,100,32,99,104,117,110,107,59,32,112,108,101,97,115,101,32,99,97,108,108,32,112,110,103,95,115,101,116,95,107,101,101,112,95,117,110,107,110,111,119,110,95,99,104,117,110,107,115,0,0,0,0,0,117,110,104,97,110,100,108,101,100,32,99,114,105,116,105,99,97,108,32,99,104,117,110,107,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,99,104,117,110,107,32,116,121,112,101,0,0,0,0,0,0,105,110,116,101,114,110,97,108,32,114,111,119,32,108,111,103,105,99,32,101,114,114,111,114,0,0,0,0,0,0,0,0,105,110,116,101,114,110,97,108,32,114,111,119,32,115,105,122,101,32,99,97,108,99,117,108,97,116,105,111,110,32,101,114,114,111,114,0,0,0,0,0,105,110,116,101,114,110,97,108,32,114,111,119,32,119,105,100,116,104,32,101,114,114,111,114,0,0,0,0,0,0,0,0,1,1,1,1,16,16,16,16,17,17,17,17,68,68,68,68,85,85,85,85,170,170,170,170,3,0,3,0,0,3,0,3,3,3,3,3,48,48,48,48,51,51,51,51,204,204,204,204,15,0,0,0,0,0,15,0,15,0,15,0,0,15,0,15,15,15,15,15,240,240,240,240,128,128,128,128,8,8,8,8,136,136,136,136,34,34,34,34,170,170,170,170,85,85,85,85,192,0,192,0,0,192,0,192,192,192,192,192,12,12,12,12,204,204,204,204,51,51,51,51,240,0,0,0,0,0,240,0,240,0,240,0,0,240,0,240,240,240,240,240,15,15,15,15,240,240,240,240,204,204,204,204,170,170,170,170,0,255,0,255,240,240,240,240,204,204,204,204,0,0,255,255,0,255,0,255,240,240,240,240,15,15,15,15,51,51,51,51,85,85,85,85,0,255,0,255,15,15,15,15,51,51,51,51,0,0,255,255,0,255,0,255,15,15,15,15,105,110,118,97,108,105,100,32,117,115,101,114,32,116,114,97,110,115,102,111,114,109,32,112,105,120,101,108,32,100,101,112,116,104,0,0,0,0,0,0,8,0,0,0,8,0,0,0,4,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,105,109,97,103,101,32,100,97,116,97,0,0,0,69,120,116,114,97,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,0,0,0,84,111,111,32,109,117,99,104,32,105,109,97,103,101,32,100,97,116,97,0,0,0,0,0,82,111,119,32,104,97,115,32,116,111,111,32,109,97,110,121,32,98,121,116,101,115,32,116,111,32,97,108,108,111,99,97,116,101,32,105,110,32,109,101,109,111,114,121,0,0,0,0,117,110,107,110,111,119,110,32,99,104,117,110,107,32,101,120,99,101,101,100,115,32,109,101,109,111,114,121,32,108,105,109,105,116,115,0,0,0,0,0,122,115,116,114,101,97,109,32,117,110,99,108,97,105,109,101,100,0,0,0,0,0,0,0,105,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,116,111,32,114,101,97,100,32,99,104,117,110,107,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,112,97,108,101,116,116,101,32,115,105,122,101,44,32,104,73,83,84,32,97,108,108,111,99,97,116,105,111,110,32,115,107,105,112,112,101,100,0,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,102,111,114,32,104,73,83,84,32,99,104,117,110,107,32,100,97,116,97,0,73,110,118,97,108,105,100,32,112,67,65,76,32,101,113,117,97,116,105,111,110,32,116,121,112,101,0,0,0,0,0,0,73,110,118,97,108,105,100,32,112,67,65,76,32,112,97,114,97,109,101,116,101,114,32,99,111,117,110,116,0,0,0,0,73,110,118,97,108,105,100,32,102,111,114,109,97,116,32,102,111,114,32,112,67,65,76,32,112,97,114,97,109,101,116,101,114,0,0,0,0,0,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,102,111,114,32,112,67,65,76,32,112,117,114,112,111,115,101,0,0,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,102,111,114,32,112,67,65,76,32,117,110,105,116,115,0,0,0,0,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,102,111,114,32,112,67,65,76,32,112,97,114,97,109,115,0,0,0,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,102,111,114,32,112,67,65,76,32,112,97,114,97,109,101,116,101,114,0,0,73,110,118,97,108,105,100,32,115,67,65,76,32,117,110,105,116,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,115,67,65,76,32,119,105,100,116,104,0,0,0,0,0,0,73,110,118,97,108,105,100,32,115,67,65,76,32,104,101,105,103,104,116,0,0,0,0,0,77,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,32,119,104,105,108,101,32,112,114,111,99,101,115,115,105,110,103,32,115,67,65,76,0,0,73,110,118,97,108,105,100,32,112,97,108,101,116,116,101,32,108,101,110,103,116,104,0,0,73,110,118,97,108,105,100,32,105,67,67,80,32,99,111,109,112,114,101,115,115,105,111,110,32,109,101,116,104,111,100,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,116,111,32,112,114,111,99,101,115,115,32,105,67,67,80,32,99,104,117,110,107,0,0,0,0,0,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,116,111,32,112,114,111,99,101,115,115,32,105,67,67,80,32,112,114,111,102,105,108,101,0,0,0,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,116,111,32,115,116,111,114,101,32,116,101,120,116,0,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,116,101,120,116,32,99,104,117,110,107,115,0,0,0,0,116,101,120,116,32,99,111,109,112,114,101,115,115,105,111,110,32,109,111,100,101,32,105,115,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,116,101,120,116,32,99,104,117,110,107,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,0,0,73,103,110,111,114,105,110,103,32,105,110,118,97,108,105,100,32,116,105,109,101,32,118,97,108,117,101,0,0,0,0,0,116,82,78,83,32,99,104,117,110,107,32,104,97,115,32,111,117,116,45,111,102,45,114,97,110,103,101,32,115,97,109,112,108,101,115,32,102,111,114,32,98,105,116,95,100,101,112,116,104,0,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,115,80,76,84,32,99,104,117,110,107,115,0,0,0,0,112,110,103,95,115,101,116,95,115,80,76,84,58,32,105,110,118,97,108,105,100,32,115,80,76,84,0,0,0,0,0,0,115,80,76,84,32,111,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,117,110,107,110,111,119,110,32,99,104,117,110,107,115,0,117,110,107,110,111,119,110,32,99,104,117,110,107,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,0,112,110,103,95,115,101,116,95,117,110,107,110,111,119,110,95,99,104,117,110,107,115,32,110,111,119,32,101,120,112,101,99,116,115,32,97,32,118,97,108,105,100,32,108,111,99,97,116,105,111,110,0,0,0,0,0,105,110,118,97,108,105,100,32,108,111,99,97,116,105,111,110,32,105,110,32,112,110,103,95,115,101,116,95,117,110,107,110,111,119,110,95,99,104,117,110,107,115,0,0,0,0,0,0,0,128,64,192,32,160,96,224,16,144,80,208,48,176,112,240,8,136,72,200,40,168,104,232,24,152,88,216,56,184,120,248,4,132,68,196,36,164,100,228,20,148,84,212,52,180,116,244,12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,3,131,67,195,35,163,99,227,19,147,83,211,51,179,115,243,11,139,75,203,43,171,107,235,27,155,91,219,59,187,123,251,7,135,71,199,39,167,103,231,23,151,87,215,55,183,119,247,15,143,79,207,47,175,111,239,31,159,95,223,63,191,127,255,0,64,128,192,16,80,144,208,32,96,160,224,48,112,176,240,4,68,132,196,20,84,148,212,36,100,164,228,52,116,180,244,8,72,136,200,24,88,152,216,40,104,168,232,56,120,184,248,12,76,140,204,28,92,156,220,44,108,172,236,60,124,188,252,1,65,129,193,17,81,145,209,33,97,161,225,49,113,177,241,5,69,133,197,21,85,149,213,37,101,165,229,53,117,181,245,9,73,137,201,25,89,153,217,41,105,169,233,57,121,185,249,13,77,141,205,29,93,157,221,45,109,173,237,61,125,189,253,2,66,130,194,18,82,146,210,34,98,162,226,50,114,178,242,6,70,134,198,22,86,150,214,38,102,166,230,54,118,182,246,10,74,138,202,26,90,154,218,42,106,170,234,58,122,186,250,14,78,142,206,30,94,158,222,46,110,174,238,62,126,190,254,3,67,131,195,19,83,147,211,35,99,163,227,51,115,179,243,7,71,135,199,23,87,151,215,39,103,167,231,55,119,183,247,11,75,139,203,27,91,155,219,43,107,171,235,59,123,187,251,15,79,143,207,31,95,159,223,47,111,175,239,63,127,191,255,0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,1,17,33,49,65,81,97,113,129,145,161,177,193,209,225,241,2,18,34,50,66,82,98,114,130,146,162,178,194,210,226,242,3,19,35,51,67,83,99,115,131,147,163,179,195,211,227,243,4,20,36,52,68,84,100,116,132,148,164,180,196,212,228,244,5,21,37,53,69,85,101,117,133,149,165,181,197,213,229,245,6,22,38,54,70,86,102,118,134,150,166,182,198,214,230,246,7,23,39,55,71,87,103,119,135,151,167,183,199,215,231,247,8,24,40,56,72,88,104,120,136,152,168,184,200,216,232,248,9,25,41,57,73,89,105,121,137,153,169,185,201,217,233,249,10,26,42,58,74,90,106,122,138,154,170,186,202,218,234,250,11,27,43,59,75,91,107,123,139,155,171,187,203,219,235,251,12,28,44,60,76,92,108,124,140,156,172,188,204,220,236,252,13,29,45,61,77,93,109,125,141,157,173,189,205,221,237,253,14,30,46,62,78,94,110,126,142,158,174,190,206,222,238,254,15,31,47,63,79,95,111,127,143,159,175,191,207,223,239,255,67,97,108,108,32,116,111,32,78,85,76,76,32,119,114,105,116,101,32,102,117,110,99,116,105,111,110,0,0,0,0,0,87,114,105,116,101,32,69,114,114,111,114,0,0,0,0,0,67,97,110,39,116,32,115,101,116,32,98,111,116,104,32,114,101,97,100,95,100,97,116,97,95,102,110,32,97,110,100,32,119,114,105,116,101,95,100,97,116,97,95,102,110,32,105,110,32,116,104,101,32,115,97,109,101,32,115,116,114,117,99,116,117,114,101,0,0,0,0,0,77,78,71,32,102,101,97,116,117,114,101,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,97,32,80,78,71,32,100,97,116,97,115,116,114,101,97,109,0,0,0,0,0,0,0,0,112,114,111,102,105,108,101,32,109,97,116,99,104,101,115,32,115,82,71,66,32,98,117,116,32,119,114,105,116,105,110,103,32,105,67,67,80,32,105,110,115,116,101,97,100,0,0,0,86,97,108,105,100,32,112,97,108,101,116,116,101,32,114,101,113,117,105,114,101,100,32,102,111,114,32,112,97,108,101,116,116,101,100,32,105,109,97,103,101,115,0,0,0,0,0,0,78,111,32,73,68,65,84,115,32,119,114,105,116,116,101,110,32,105,110,116,111,32,102,105,108,101,0,0,0,0,0,0,87,114,111,116,101,32,112,97,108,101,116,116,101,32,105,110,100,101,120,32,101,120,99,101,101,100,105,110,103,32,110,117,109,95,112,97,108,101,116,116,101,0,0,0,0,0,0,0,112,110,103,95,119,114,105,116,101,95,105,110,102,111,32,119,97,115,32,110,101,118,101,114,32,99,97,108,108,101,100,32,98,101,102,111,114,101,32,112,110,103,95,119,114,105,116,101,95,114,111,119,0,0,0,0,105,110,116,101,114,110,97,108,32,119,114,105,116,101,32,116,114,97,110,115,102,111,114,109,32,108,111,103,105,99,32,101,114,114,111,114,0,0,0,0,85,110,107,110,111,119,110,32,114,111,119,32,102,105,108,116,101,114,32,102,111,114,32,109,101,116,104,111,100,32,48,0,67,97,110,39,116,32,97,100,100,32,85,112,32,102,105,108,116,101,114,32,97,102,116,101,114,32,115,116,97,114,116,105,110,103,0,0,0,0,0,0,67,97,110,39,116,32,97,100,100,32,65,118,101,114,97,103,101,32,102,105,108,116,101,114,32,97,102,116,101,114,32,115,116,97,114,116,105,110,103,0,67,97,110,39,116,32,97,100],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+256e3);allocate([100,32,80,97,101,116,104,32,102,105,108,116,101,114,32,97,102,116,101,114,32,115,116,97,114,116,105,110,103,0,0,0,85,110,107,110,111,119,110,32,99,117,115,116,111,109,32,102,105,108,116,101,114,32,109,101,116,104,111,100,0,0,0,0,87,114,105,116,105,110,103,32,122,101,114,111,45,108,101,110,103,116,104,32,117,110,107,110,111,119,110,32,99,104,117,110,107,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,98,105,116,32,100,101,112,116,104,32,102,111,114,32,103,114,97,121,115,99,97,108,101,32,105,109,97,103,101,0,0,0,73,110,118,97,108,105,100,32,98,105,116,32,100,101,112,116,104,32,102,111,114,32,82,71,66,32,105,109,97,103,101,0,73,110,118,97,108,105,100,32,98,105,116,32,100,101,112,116,104,32,102,111,114,32,112,97,108,101,116,116,101,100,32,105,109,97,103,101,0,0,0,0,73,110,118,97,108,105,100,32,98,105,116,32,100,101,112,116,104,32,102,111,114,32,103,114,97,121,115,99,97,108,101,43,97,108,112,104,97,32,105,109,97,103,101,0,0,0,0,0,73,110,118,97,108,105,100,32,98,105,116,32,100,101,112,116,104,32,102,111,114,32,82,71,66,65,32,105,109,97,103,101,0,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,105,109,97,103,101,32,99,111,108,111,114,32,116,121,112,101,32,115,112,101,99,105,102,105,101,100,0,0,0,0,0,0,73,110,118,97,108,105,100,32,99,111,109,112,114,101,115,115,105,111,110,32,116,121,112,101,32,115,112,101,99,105,102,105,101,100,0,0,0,0,0,0,73,110,118,97,108,105,100,32,102,105,108,116,101,114,32,116,121,112,101,32,115,112,101,99,105,102,105,101,100,0,0,0,73,110,118,97,108,105,100,32,105,110,116,101,114,108,97,99,101,32,116,121,112,101,32,115,112,101,99,105,102,105,101,100,0,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,99,111,108,111,114,115,32,105,110,32,112,97,108,101,116,116,101,0,0,0,0,0,73,103,110,111,114,105,110,103,32,114,101,113,117,101,115,116,32,116,111,32,119,114,105,116,101,32,97,32,80,76,84,69,32,99,104,117,110,107,32,105,110,32,103,114,97,121,115,99,97,108,101,32,80,78,71,0,90,95,79,75,32,111,110,32,90,95,70,73,78,73,83,72,32,119,105,116,104,32,111,117,116,112,117,116,32,115,112,97,99,101,0,0,0,0,0,0,73,110,118,97,108,105,100,32,115,82,71,66,32,114,101,110,100,101,114,105,110,103,32,105,110,116,101,110,116,32,115,112,101,99,105,102,105,101,100,0,78,111,32,112,114,111,102,105,108,101,32,102,111,114,32,105,67,67,80,32,99,104,117,110,107,0,0,0,0,0,0,0,73,67,67,32,112,114,111,102,105,108,101,32,116,111,111,32,115,104,111,114,116,0,0,0,73,67,67,32,112,114,111,102,105,108,101,32,108,101,110,103,116,104,32,105,110,118,97,108,105,100,32,40,110,111,116,32,97,32,109,117,108,116,105,112,108,101,32,111,102,32,52,41,0,0,0,0,0,0,0,0,105,67,67,80,58,32,105,110,118,97,108,105,100,32,107,101,121,119,111,114,100,0,0,0,115,80,76,84,58,32,105,110,118,97,108,105,100,32,107,101,121,119,111,114,100,0,0,0,73,110,118,97,108,105,100,32,115,66,73,84,32,100,101,112,116,104,32,115,112,101,99,105,102,105,101,100,0,0,0,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,116,114,97,110,115,112,97,114,101,110,116,32,99,111,108,111,114,115,32,115,112,101,99,105,102,105,101,100,0,0,73,103,110,111,114,105,110,103,32,97,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,116,82,78,83,32,99,104,117,110,107,32,111,117,116,45,111,102,45,114,97,110,103,101,32,102,111,114,32,98,105,116,95,100,101,112,116,104,0,73,103,110,111,114,105,110,103,32,97,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,49,54,45,98,105,116,32,116,82,78,83,32,99,104,117,110,107,32,119,104,101,110,32,98,105,116,95,100,101,112,116,104,32,105,115,32,56,0,67,97,110,39,116,32,119,114,105,116,101,32,116,82,78,83,32,119,105,116,104,32,97,110,32,97,108,112,104,97,32,99,104,97,110,110,101,108,0,0,73,110,118,97,108,105,100,32,98,97,99,107,103,114,111,117,110,100,32,112,97,108,101,116,116,101,32,105,110,100,101,120,0,0,0,0,0,0,0,0,73,103,110,111,114,105,110,103,32,97,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,49,54,45,98,105,116,32,98,75,71,68,32,99,104,117,110,107,32,119,104,101,110,32,98,105,116,95,100,101,112,116,104,32,105,115,32,56,0,73,103,110,111,114,105,110,103,32,97,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,98,75,71,68,32,99,104,117,110,107,32,111,117,116,45,111,102,45,114,97,110,103,101,32,102,111,114,32,98,105,116,95,100,101,112,116,104,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,104,105,115,116,111,103,114,97,109,32,101,110,116,114,105,101,115,32,115,112,101,99,105,102,105,101,100,0,0,0,116,69,88,116,58,32,105,110,118,97,108,105,100,32,107,101,121,119,111,114,100,0,0,0,116,69,88,116,58,32,116,101,120,116,32,116,111,111,32,108,111,110,103,0,0,0,0,0,122,84,88,116,58,32,105,110,118,97,108,105,100,32,99,111,109,112,114,101,115,115,105,111,110,32,116,121,112,101,0,0,122,84,88,116,58,32,105,110,118,97,108,105,100,32,107,101,121,119,111,114,100,0,0,0,105,84,88,116,58,32,105,110,118,97,108,105,100,32,107,101,121,119,111,114,100,0,0,0,105,84,88,116,58,32,105,110,118,97,108,105,100,32,99,111,109,112,114,101,115,115,105,111,110,0,0,0,0,0,0,0,105,84,88,116,58,32,117,110,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,32,116,111,111,32,108,111,110,103,0,0,0,0,0,0,0,0,85,110,114,101,99,111,103,110,105,122,101,100,32,117,110,105,116,32,116,121,112,101,32,102,111,114,32,111,70,70,115,32,99,104,117,110,107,0,0,0,85,110,114,101,99,111,103,110,105,122,101,100,32,101,113,117,97,116,105,111,110,32,116,121,112,101,32,102,111,114,32,112,67,65,76,32,99,104,117,110,107,0,0,0,0,0,0,0,112,67,65,76,58,32,105,110,118,97,108,105,100,32,107,101,121,119,111,114,100,0,0,0,67,97,110,39,116,32,119,114,105,116,101,32,115,67,65,76,32,40,98,117,102,102,101,114,32,116,111,111,32,115,109,97,108,108,41,0,0,0,0,0,85,110,114,101,99,111,103,110,105,122,101,100,32,117,110,105,116,32,116,121,112,101,32,102,111,114,32,112,72,89,115,32,99,104,117,110,107,0,0,0,73,110,118,97,108,105,100,32,116,105,109,101,32,115,112,101,99,105,102,105,101,100,32,102,111,114,32,116,73,77,69,32,99,104,117,110,107,0,0,0,0,0,4,0,2,0,1,0,8,8,8,4,4,2,2,0,0,4,0,2,0,1,0,0,8,8,4,4,2,2,1,0,101,114,114,111,114,32,119,114,105,116,105,110,103,32,97,110,99,105,108,108,97,114,121,32,99,104,117,110,107,101,100,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,0,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,116,111,111,32,108,111,110,103,0,0,0,0,0,0,0,0,107,101,121,119,111,114,100,32,116,114,117,110,99,97,116,101,100,0,0,0,0,0,0,0,107,101,121,119,111,114,100,32,34,64,49,34,58,32,98,97,100,32,99,104,97,114,97,99,116,101,114,32,39,48,120,64,50,39,0,0,0,0,0,0,32,117,115,105,110,103,32,122,115,116,114,101,97,109,0,0,105,110,32,117,115,101,32,98,121,32,73,68,65,84,0,0,100,101,102,108,97,116,101,69,110,100,32,102,97,105,108,101,100,32,40,105,103,110,111,114,101,100,41,0,0,0,0,0,49,46,50,46,56,0,0,0,108,101,110,103,116,104,32,101,120,99,101,101,100,115,32,80,78,71,32,109,97,120,105,109,117,109,0,0,0,0,0,0,129,1,29,90,14,2,134,37,16,3,20,17,18,4,11,8,20,5,216,3,23,6,218,1,25,7,229,0,28,8,111,0,30,9,54,0,33,10,26,0,35,11,13,0,9,12,6,0,10,13,3,0,12,13,1,0,143,15,127,90,36,16,37,63,38,17,242,44,39,18,124,32,40,19,185,23,42,20,130,17,43,21,239,12,45,22,161,9,46,23,47,7,48,24,92,5,49,25,6,4,51,26,3,3,52,27,64,2,54,28,177,1,56,29,68,1,57,30,245,0,59,31,183,0,60,32,138,0,62,33,104,0,63,34,78,0,32,35,59,0,33,9,44,0,165,37,225,90,64,38,76,72,65,39,13,58,67,40,241,46,68,41,31,38,69,42,51,31,70,43,168,25,72,44,24,21,73,45,119,17,74,46,116,14,75,47,251,11,77,48,248,9,78,49,97,8,79,50,6,7,48,51,205,5,50,52,222,4,50,53,15,4,51,54,99,3,52,55,212,2,53,56,92,2,54,57,248,1,55,58,164,1,56,59,96,1,57,60,37,1,58,61,246,0,59,62,203,0,61,63,171,0,61,32,143,0,193,65,18,91,80,66,4,77,81,67,44,65,82,68,216,55,83,69,232,47,84,70,60,41,86,71,121,35,87,72,223,30,87,73,169,26,72,74,78,23,72,75,36,20,74,76,156,17,74,77,107,15,75,78,81,13,77,79,182,11,77,48,64,10,208,81,50,88,88,82,28,77,89,83,142,67,90,84,221,59,91,85,238,52,92,86,174,46,93,87,154,41,86,71,22,37,216,89,112,85,95,90,169,76,96,91,217,68,97,92,34,62,99,93,36,56,99,94,180,50,93,86,23,46,223,96,168,86,101,97,70,79,102,98,229,71,103,99,207,65,104,100,61,60,99,93,94,55,105,102,49,82,106,103,15,76,107,104,57,70,103,99,94,65,233,106,39,86,108,107,231,80,109,103,133,75,110,109,151,85,111,107,79,80,238,111,16,90,112,109,34,85,240,111,235,89,113,113,29,90,16,0,0,0,11,0,0,0,10,0,0,0,16,0,0,0,24,0,0,0,40,0,0,0,51,0,0,0,61,0,0,0,12,0,0,0,12,0,0,0,14,0,0,0,19,0,0,0,26,0,0,0,58,0,0,0,60,0,0,0,55,0,0,0,14,0,0,0,13,0,0,0,16,0,0,0,24,0,0,0,40,0,0,0,57,0,0,0,69,0,0,0,56,0,0,0,14,0,0,0,17,0,0,0,22,0,0,0,29,0,0,0,51,0,0,0,87,0,0,0,80,0,0,0,62,0,0,0,18,0,0,0,22,0,0,0,37,0,0,0,56,0,0,0,68,0,0,0,109,0,0,0,103,0,0,0,77,0,0,0,24,0,0,0,35,0,0,0,55,0,0,0,64,0,0,0,81,0,0,0,104,0,0,0,113,0,0,0,92,0,0,0,49,0,0,0,64,0,0,0,78,0,0,0,87,0,0,0,103,0,0,0,121,0,0,0,120,0,0,0,101,0,0,0,72,0,0,0,92,0,0,0,95,0,0,0,98,0,0,0,112,0,0,0,100,0,0,0,103,0,0,0,99,0,0,0,17,0,0,0,18,0,0,0,24,0,0,0,47,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,18,0,0,0,21,0,0,0,26,0,0,0,66,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,24,0,0,0,26,0,0,0,56,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,47,0,0,0,66,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,0,0,0,0,0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,0,0,0,0,0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125,0,0,0,0,0,0,0,1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250,0,0,0,0,0,0,0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119,0,0,0,0,0,0,0,0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250,0,0,0,0,0,0,0,64,197,88,159,83,66,75,0,64,73,50,163,34,168,17,197,88,33,123,252,115,98,104,197,88,191,69,11,48,126,24,159,83,252,115,65,109,84,98,159,83,179,65,65,45,18,23,66,75,98,104,84,98,126,88,66,75,33,59,186,40,195,20,0,64,197,88,159,83,66,75,0,64,73,50,163,34,168,17,73,50,191,69,179,65,33,59,73,50,130,39,55,27,224,13,163,34,11,48,65,45,186,40,163,34,55,27,191,18,142,9,168,17,126,24,18,23,195,20,168,17,224,13,142,9,223,4,0,0,0,0,0,0,240,63,239,97,72,177,80,49,246,63,202,111,77,145,174,231,244,63,170,17,108,239,98,208,242,63,0,0,0,0,0,0,240,63,59,191,167,192,105,36,233,63,187,32,199,123,122,81,225,63,93,171,114,222,85,168,209,63,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,2,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,12,0,0,0,3,0,0,0,8,0,0,0,11,0,0,0,13,0,0,0,9,0,0,0,10,0,0,0,14,0,0,0,15,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,14,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,13,0,0,0,15,0,0,0,3,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,21,0,0,0,9,0,0,0,11,0,0,0,17,0,0,0,20,0,0,0,22,0,0,0,10,0,0,0,18,0,0,0,19,0,0,0,23,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,14,0,0,0,15,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,13,0,0,0,16,0,0,0,25,0,0,0,3,0,0,0,8,0,0,0,12,0,0,0,17,0,0,0,24,0,0,0,26,0,0,0,9,0,0,0,11,0,0,0,18,0,0,0,23,0,0,0,27,0,0,0,32,0,0,0,10,0,0,0,19,0,0,0,22,0,0,0,28,0,0,0,31,0,0,0,33,0,0,0,20,0,0,0,21,0,0,0,29,0,0,0,30,0,0,0,34,0,0,0,35,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,14,0,0,0,15,0,0,0,27,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,13,0,0,0,16,0,0,0,26,0,0,0,28,0,0,0,3,0,0,0,8,0,0,0,12,0,0,0,17,0,0,0,25,0,0,0,29,0,0,0,38,0,0,0,9,0,0,0,11,0,0,0,18,0,0,0,24,0,0,0,30,0,0,0,37,0,0,0,39,0,0,0,10,0,0,0,19,0,0,0,23,0,0,0,31,0,0,0,36,0,0,0,40,0,0,0,45,0,0,0,20,0,0,0,22,0,0,0,32,0,0,0,35,0,0,0,41,0,0,0,44,0,0,0,46,0,0,0,21,0,0,0,33,0,0,0,34,0,0,0,42,0,0,0,43,0,0,0,47,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,14,0,0,0,15,0,0,0,27,0,0,0,28,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,13,0,0,0,16,0,0,0,26,0,0,0,29,0,0,0,42,0,0,0,3,0,0,0,8,0,0,0,12,0,0,0,17,0,0,0,25,0,0,0,30,0,0,0,41,0,0,0,43,0,0,0,9,0,0,0,11,0,0,0,18,0,0,0,24,0,0,0,31,0,0,0,40,0,0,0,44,0,0,0,53,0,0,0,10,0,0,0,19,0,0,0,23,0,0,0,32,0,0,0,39,0,0,0,45,0,0,0,52,0,0,0,54,0,0,0,20,0,0,0,22,0,0,0,33,0,0,0,38,0,0,0,46,0,0,0,51,0,0,0,55,0,0,0,60,0,0,0,21,0,0,0,34,0,0,0,37,0,0,0,47,0,0,0,50,0,0,0,56,0,0,0,59,0,0,0,61,0,0,0,35,0,0,0,36,0,0,0,48,0,0,0,49,0,0,0,57,0,0,0,58,0,0,0,62,0,0,0,63,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,7,0,0,0,15,0,0,0,31,0,0,0,63,0,0,0,127,0,0,0,255,0,0,0,255,1,0,0,255,3,0,0,255,7,0,0,255,15,0,0,255,31,0,0,255,63,0,0,255,127,0,0,76,83,69,0,0,0,0,0,83,79,83,0,0,0,0,0,66,111,103,117,115,32,109,101,115,115,97,103,101,32,99,111,100,101,32,37,100,0,0,0,65,76,73,71,78,95,84,89,80,69,32,105,115,32,119,114,111,110,103,44,32,112,108,101,97,115,101,32,102,105,120,0,77,65,88,95,65,76,76,79,67,95,67,72,85,78,75,32,105,115,32,119,114,111,110,103,44,32,112,108,101,97,115,101,32,102,105,120,0,0,0,0,66,111,103,117,115,32,98,117,102,102,101,114,32,99,111,110,116,114,111,108,32,109,111,100,101,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,99,111,109,112,111,110,101,110,116,32,73,68,32,37,100,32,105,110,32,83,79,83,0,0,73,110,118,97,108,105,100,32,99,114,111,112,32,114,101,113,117,101,115,116,0,0,0,0,68,67,84,32,99,111,101,102,102,105,99,105,101,110,116,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,68,67,84,32,115,99,97,108,101,100,32,98,108,111,99,107,32,115,105,122,101,32,37,100,120,37,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,0,0,67,111,109,112,111,110,101,110,116,32,105,110,100,101,120,32,37,100,58,32,109,105,115,109,97,116,99,104,105,110,103,32,115,97,109,112,108,105,110,103,32,114,97,116,105,111,32,37,100,58,37,100,44,32,37,100,58,37,100,44,32,37,99,0,66,111,103,117,115,32,72,117,102,102,109,97,110,32,116,97,98,108,101,32,100,101,102,105,110,105,116,105,111,110,0,0,66,111,103,117,115,32,105,110,112,117,116,32,99,111,108,111,114,115,112,97,99,101,0,0,66,111,103,117,115,32,74,80,69,71,32,99,111,108,111,114,115,112,97,99,101,0,0,0,66,111,103,117,115,32,109,97,114,107,101,114,32,108,101,110,103,116,104,0,0,0,0,0,87,114,111,110,103,32,74,80,69,71,32,108,105,98,114,97,114,121,32,118,101,114,115,105,111,110,58,32,108,105,98,114,97,114,121,32,105,115,32,37,100,44,32,99,97,108,108,101,114,32,101,120,112,101,99,116,115,32,37,100,0,0,0,0,83,97,109,112,108,105,110,103,32,102,97,99,116,111,114,115,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,105,110,116,101,114,108,101,97,118,101,100,32,115,99,97,110,0,73,110,118,97,108,105,100,32,109,101,109,111,114,121,32,112,111,111,108,32,99,111,100,101,32,37,100,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,74,80,69,71,32,100,97,116,97,32,112,114,101,99,105,115,105,111,110,32,37,100,0,0,0,0,0,0,73,110,118,97,108,105,100,32,112,114,111,103,114,101,115,115,105,118,101,32,112,97,114,97,109,101,116,101,114,115,32,83,115,61,37,100,32,83,101,61,37,100,32,65,104,61,37,100,32,65,108,61,37,100,0,0,73,110,118,97,108,105,100,32,112,114,111,103,114,101,115,115,105,118,101,32,112,97,114,97,109,101,116,101,114,115,32,97,116,32,115,99,97,110,32,115,99,114,105,112,116,32,101,110,116,114,121,32,37,100,0,0,66,111,103,117,115,32,115,97,109,112,108,105,110,103,32,102,97,99,116,111,114,115,0,0,73,110,118,97,108,105,100,32,115,99,97,110,32,115,99,114,105,112,116,32,97,116,32,101,110,116,114,121,32,37,100,0,73,109,112,114,111,112,101,114,32,99,97,108,108,32,116,111,32,74,80,69,71,32,108,105,98,114,97,114,121,32,105,110,32,115,116,97,116,101,32,37,100,0,0,0,0,0,0,0,74,80,69,71,32,112,97,114,97,109,101,116,101,114,32,115,116,114,117,99,116,32,109,105,115,109,97,116,99,104,58,32,108,105,98,114,97,114,121,32,116,104,105,110,107,115,32,115,105,122,101,32,105,115,32,37,117,44,32,99,97,108,108,101,114,32,101,120,112,101,99,116,115,32,37,117,0,0,0,0,66,111,103,117,115,32,118,105,114,116,117,97,108,32,97,114,114,97,121,32,97,99,99,101,115,115,0,0,0,0,0,0,66,117,102,102,101,114,32,112,97,115,115,101,100,32,116,111,32,74,80,69,71,32,108,105,98,114,97,114,121,32,105,115,32,116,111,111,32,115,109,97,108,108,0,0,0,0,0,0,83,117,115,112,101,110,115,105,111,110,32,110,111,116,32,97,108,108,111,119,101,100,32,104,101,114,101,0,0,0,0,0,67,67,73,82,54,48,49,32,115,97,109,112,108,105,110,103,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,0,0,0,84,111,111,32,109,97,110,121,32,99,111,108,111,114,32,99,111,109,112,111,110,101,110,116,115,58,32,37,100,44,32,109,97,120,32,37,100,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,99,111,108,111,114,32,99,111,110,118,101,114,115,105,111,110,32,114,101,113,117,101,115,116,0,0,0,0,66,111,103,117,115,32,68,65,67,32,105,110,100,101,120,32,37,100,0,0,0,0,0,0,66,111,103,117,115,32,68,65,67,32,118,97,108,117,101,32,48,120,37,120,0,0,0,0,66,111,103,117,115,32,68,72,84,32,105,110,100,101,120,32,37,100,0,0,0,0,0,0,66,111,103,117,115,32,68,81,84,32,105,110,100,101,120,32,37,100,0,0,0,0,0,0,69,109,112,116,121,32,74,80,69,71,32,105,109,97,103,101,32,40,68,78,76,32,110,111,116,32,115,117,112,112,111,114,116,101,100,41,0,0,0,0,82,101,97,100,32,102,114,111,109,32,69,77,83,32,102,97,105,108,101,100,0,0,0,0,87,114,105,116,101,32,116,111,32,69,77,83,32,102,97,105,108,101,100,0,0,0,0,0,68,105,100,110,39,116,32,101,120,112,101,99,116,32,109,111,114,101,32,116,104,97,110,32,111,110,101,32,115,99,97,110,0,0,0,0,0,0,0,0,73,110,112,117,116,32,102,105,108,101,32,114,101,97,100,32,101,114,114,111,114,0,0,0,79,117,116,112,117,116,32,102,105,108,101,32,119,114,105,116,101,32,101,114,114,111,114,32,45,45,45,32,111,117,116,32,111,102,32,100,105,115,107,32,115,112,97,99,101,63,0,0,70,114,97,99,116,105,111,110,97,108,32,115,97,109,112,108,105,110,103,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,72,117,102,102,109,97,110,32,99,111,100,101,32,115,105,122,101,32,116,97,98,108,101,32,111,118,101,114,102,108,111,119,0,0,0,0,0,0,0,0,77,105,115,115,105,110,103,32,72,117,102,102,109,97,110,32,99,111,100,101,32,116,97,98,108,101,32,101,110,116,114,121,0,0,0,0,0,0,0,0,77,97,120,105,109,117,109,32,115,117,112,112,111,114,116,101,100,32,105,109,97,103,101,32,100,105,109,101,110,115,105,111,110,32,105,115,32,37,117,32,112,105,120,101,108,115,0,0,69,109,112,116,121,32,105,110,112,117,116,32,102,105,108,101,0,0,0,0,0,0,0,0,80,114,101,109,97,116,117,114,101,32,101,110,100,32,111,102,32,105,110,112,117,116,32,102,105,108,101,0,0,0,0,0,67,97,110,110,111,116,32,116,114,97,110,115,99,111,100,101,32,100,117,101,32,116,111,32,109,117,108,116,105,112,108,101,32,117,115,101,32,111,102,32,113,117,97,110,116,105,122,97,116,105,111,110,32,116,97,98,108,101,32,37,100,0,0,0,83,99,97,110,32,115,99,114,105,112,116,32,100,111,101,115,32,110,111,116,32,116,114,97,110,115,109,105,116,32,97,108,108,32,100,97,116,97,0,0,73,110,118,97,108,105,100,32,99,111,108,111,114,32,113,117,97,110,116,105,122,97,116,105,111,110,32,109,111,100,101,32,99,104,97,110,103,101,0,0,78,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,0,0,0,0,82,101,113,117,101,115,116,101,100,32,102,101,97,116,117,114,101,32,119,97,115,32,111,109,105,116,116,101,100,32,97,116,32,99,111,109,112,105,108,101,32,116,105,109,101,0,0,0,65,114,105,116,104,109,101,116,105,99,32,116,97,98,108,101,32,48,120,37,48,50,120,32,119,97,115,32,110,111,116,32,100,101,102,105,110,101,100,0,66,97,99,107,105,110,103,32,115,116,111,114,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,72,117,102,102,109,97,110,32,116,97,98,108,101,32,48,120,37,48,50,120,32,119,97,115,32,110,111,116,32,100,101,102,105,110,101,100,0,0,0,0,74,80,69,71,32,100,97,116,97,115,116,114,101,97,109,32,99,111,110,116,97,105,110,115,32,110,111,32,105,109,97,103,101,0,0,0,0,0,0,0,81,117,97,110,116,105,122,97,116,105,111,110,32,116,97,98,108,101,32,48,120,37,48,50,120,32,119,97,115,32,110,111,116,32,100,101,102,105,110,101,100,0,0,0,0,0,0,0,78,111,116,32,97,32,74,80,69,71,32,102,105,108,101,58,32,115,116,97,114,116,115,32,119,105,116,104,32,48,120,37,48,50,120,32,48,120,37,48,50,120,0,0,0,0,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,40,99,97,115,101,32,37,100,41,0,0,0,67,97,110,110,111,116,32,113,117,97,110,116,105,122,101,32,109,111,114,101,32,116,104,97,110,32,37,100,32,99,111,108,111,114,32,99,111,109,112,111,110,101,110,116,115,0,0,0,67,97,110,110,111,116,32,113,117,97,110,116,105,122,101,32,116,111,32,102,101,119,101,114,32,116,104,97,110,32,37,100,32,99,111,108,111,114,115,0,67,97,110,110,111,116,32,113,117,97,110,116,105,122,101,32,116,111,32,109,111,114,101,32,116,104,97,110,32,37,100,32,99,111,108,111,114,115,0,0,73,110,118,97,108,105,100,32,74,80,69,71,32,102,105,108,101,32,115,116,114,117,99,116,117,114,101,58,32,37,115,32,98,101,102,111,114,101,32,83,79,70,0,0,0,0,0,0,73,110,118,97,108,105,100,32,74,80,69,71,32,102,105,108,101,32,115,116,114,117,99,116,117,114,101,58,32,116,119,111,32,83,79,70,32,109,97,114,107,101,114,115,0,0,0,0,73,110,118,97,108,105,100,32,74,80,69,71,32,102,105,108,101,32,115,116,114,117,99,116,117,114,101,58,32,109,105,115,115,105,110,103,32,83,79,83,32,109,97,114,107,101,114,0,85,110,115,117,112,112,111,114,116,101,100,32,74,80,69,71,32,112,114,111,99,101,115,115,58,32,83,79,70,32,116,121,112,101,32,48,120,37,48,50,120,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,74,80,69,71,32,102,105,108,101,32,115,116,114,117,99,116,117,114,101,58,32,116,119,111,32,83,79,73,32,109,97,114,107,101,114,115,0,0,0,0,70,97,105,108,101,100,32,116,111,32,99,114,101,97,116,101,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32,37,115,0,0,0,0,0,0,82,101,97,100,32,102,97,105,108,101,100,32,111,110,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,0,0,0,83,101,101,107,32,102,97,105,108,101,100,32,111,110,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,0,0,0,87,114,105,116,101,32,102,97,105,108,101,100,32,111,110,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32,45,45,45,32,111,117,116,32,111,102,32,100,105,115,107,32,115,112,97,99,101,63,0,0,0,65,112,112,108,105,99,97,116,105,111,110,32,116,114,97,110,115,102,101,114,114,101,100,32,116,111,111,32,102,101,119,32,115,99,97,110,108,105,110,101,115,0,0,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,109,97,114,107,101,114,32,116,121,112,101,32,48,120,37,48,50,120,0,0,86,105,114,116,117,97,108,32,97,114,114,97,121,32,99,111,110,116,114,111,108,108,101,114,32,109,101,115,115,101,100,32,117,112,0,0,0,0,0,0,73,109,97,103,101,32,116,111,111,32,119,105,100,101,32,102,111,114,32,116,104,105,115,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,0,0,82,101,97,100,32,102,114,111,109,32,88,77,83,32,102,97,105,108,101,100,0,0,0,0,87,114,105,116,101,32,116,111,32,88,77,83,32,102,97,105,108,101,100,0,0,0,0,0,67,111,112,121,114,105,103,104,116,32,40,67,41,32,50,48,49,52,44,32,84,104,111,109,97,115,32,71,46,32,76,97,110,101,44,32,71,117,105,100,111,32,86,111,108,108,98,101,100,105,110,103,0,0,0,0,57,97,32,32,49,57,45,74,97,110,45,50,48,49,52,0,67,97,117,116,105,111,110,58,32,113,117,97,110,116,105,122,97,116,105,111,110,32,116,97,98,108,101,115,32,97,114,101,32,116,111,111,32,99,111,97,114,115,101,32,102,111,114,32,98,97,115,101,108,105,110,101,32,74,80,69,71,0,0,0,65,100,111,98,101,32,65,80,80,49,52,32,109,97,114,107,101,114,58,32,118,101,114,115,105,111,110,32,37,100,44,32,102,108,97,103,115,32,48,120,37,48,52,120,32,48,120,37,48,52,120,44,32,116,114,97,110,115,102,111,114,109,32,37,100,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,65,80,80,48,32,109,97,114,107,101,114,32,40,110,111,116,32,74,70,73,70,41,44,32,108,101,110,103,116,104,32,37,117,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,65,80,80,49,52,32,109,97,114,107,101,114,32,40,110,111,116,32,65,100,111,98,101,41,44,32,108,101,110,103,116,104,32,37,117,0,0,0,0,0,68,101,102,105,110,101,32,65,114,105,116,104,109,101,116,105,99,32,84,97,98,108,101,32,48,120,37,48,50,120,58,32,48,120,37,48,50,120,0,0,68,101,102,105,110,101,32,72,117,102,102,109,97,110,32,84,97,98,108,101,32,48,120,37,48,50,120,0,0,0,0,0,68,101,102,105,110,101,32,81,117,97,110,116,105,122,97,116,105,111,110,32,84,97,98,108,101,32,37,100,32,32,112,114,101,99,105,115,105,111,110,32,37,100,0,0,0,0,0,0,68,101,102,105,110,101,32,82,101,115,116,97,114,116,32,73,110,116,101,114,118,97,108,32,37,117,0,0,0,0,0,0,70,114,101,101,100,32,69,77,83,32,104,97,110,100,108,101,32,37,117,0,0,0,0,0,79,98,116,97,105,110,101,100,32,69,77,83,32,104,97,110,100,108,101,32,37,117,0,0,69,110,100,32,79,102,32,73,109,97,103,101,0,0,0,0,32,32,32,32,32,32,32,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,0,74,70,73,70,32,65,80,80,48,32,109,97,114,107,101,114,58,32,118,101,114,115,105,111,110,32,37,100,46,37,48,50,100,44,32,100,101,110,115,105,116,121,32,37,100,120,37,100,32,32,37,100,0,0,0,0,87,97,114,110,105,110,103,58,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,32,115,105,122,101,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,100,97,116,97,32,108,101,110,103,116,104,32,37,117,0,0,0,0,0,74,70,73,70,32,101,120,116,101,110,115,105,111,110,32,109,97,114,107,101,114,58,32,116,121,112,101,32,48,120,37,48,50,120,44,32,108,101,110,103,116,104,32,37,117,0,0,0,32,32,32,32,119,105,116,104,32,37,100,32,120,32,37,100,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,0,0,0,0,0,0,0,0,77,105,115,99,101,108,108,97,110,101,111,117,115,32,109,97,114,107,101,114,32,48,120,37,48,50,120,44,32,108,101,110,103,116,104,32,37,117,0,0,85,110,101,120,112,101,99,116,101,100,32,109,97,114,107,101,114,32,48,120,37,48,50,120,0,0,0,0,0,0,0,0,32,32,32,32,32,32,32,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,0,81,117,97,110,116,105,122,105,110,103,32,116,111,32,37,100,32,61,32,37,100,42,37,100,42,37,100,32,99,111,108,111,114,115,0,0,0,0,0,0,81,117,97,110,116,105,122,105,110,103,32,116,111,32,37,100,32,99,111,108,111,114,115,0,83,101,108,101,99,116,101,100,32,37,100,32,99,111,108,111,114,115,32,102,111,114,32,113,117,97,110,116,105,122,97,116,105,111,110,0,0,0,0,0,65,116,32,109,97,114,107,101,114,32,48,120,37,48,50,120,44,32,114,101,99,111,118,101,114,121,32,97,99,116,105,111,110,32,37,100,0,0,0,0,82,83,84,37,100,0,0,0,83,109,111,111,116,104,105,110,103,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,119,105,116,104,32,110,111,110,115,116,97,110,100,97,114,100,32,115,97,109,112,108,105,110,103,32,114,97,116,105,111,115,0,0,0,0,0,0,0,0,83,116,97,114,116,32,79,102,32,70,114,97,109,101,32,48,120,37,48,50,120,58,32,119,105,100,116,104,61,37,117,44,32,104,101,105,103,104,116,61,37,117,44,32,99,111,109,112,111,110,101,110,116,115,61,37,100,0,0,0,0,0,0,0,32,32,32,32,67,111,109,112,111,110,101,110,116,32,37,100,58,32,37,100,104,120,37,100,118,32,113,61,37,100,0,0,83,116,97,114,116,32,111,102,32,73,109,97,103,101,0,0,83,116,97,114,116,32,79,102,32,83,99,97,110,58,32,37,100,32,99,111,109,112,111,110,101,110,116,115,0,0,0,0,32,32,32,32,67,111,109,112,111,110,101,110,116,32,37,100,58,32,100,99,61,37,100,32,97,99,61,37,100,0,0,0,32,32,83,115,61,37,100,44,32,83,101,61,37,100,44,32,65,104,61,37,100,44,32,65,108,61,37,100,0,0,0,0,67,108,111,115,101,100,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32,37,115,0,0,0,0,0,0,0,0,79,112,101,110,101,100,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32,37,115,0,0,0,0,0,0,0,0,74,70,73,70,32,101,120,116,101,110,115,105,111,110,32,109,97,114,107,101,114,58,32,74,80,69,71,45,99,111,109,112,114,101,115,115,101,100,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,44,32,108,101,110,103,116,104,32,37,117,0,0,0,0,0,0,0,74,70,73,70,32,101,120,116,101,110,115,105,111,110,32,109,97,114,107,101,114,58,32,112,97,108,101,116,116,101,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,44,32,108,101,110,103,116,104,32,37,117,0,0,0,0,0,0,0,74,70,73,70,32,101,120,116,101,110,115,105,111,110,32,109,97,114,107,101,114,58,32,82,71,66,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,44,32,108,101,110,103,116,104,32,37,117,0,0,0,85,110,114,101,99,111,103,110,105,122,101,100,32,99,111,109,112,111,110,101,110,116,32,73,68,115,32,37,100,32,37,100,32,37,100,44,32,97,115,115,117,109,105,110,103,32,89,67,98,67,114,0,0,0,0,0,70,114,101,101,100,32,88,77,83,32,104,97,110,100,108,101,32,37,117,0,0,0,0,0,79,98,116,97,105,110,101,100,32,88,77,83,32,104,97,110,100,108,101,32,37,117,0,0,85,110,107,110,111,119,110,32,65,100,111,98,101,32,99,111,108,111,114,32,116,114,97,110,115,102,111,114,109,32,99,111,100,101,32,37,100,0,0,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,98,97,100,32,97,114,105,116,104,109,101,116,105,99,32,99,111,100,101,0,0,73,110,99,111,110,115,105,115,116,101,110,116,32,112,114,111,103,114,101,115,115,105,111,110,32,115,101,113,117,101,110,99,101,32,102,111,114,32,99,111,109,112,111,110,101,110,116,32,37,100,32,99,111,101,102,102,105,99,105,101,110,116,32,37,100,0,0,0,0,0,0,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,37,117,32,101,120,116,114,97,110,101,111,117,115,32,98,121,116,101,115,32,98,101,102,111,114,101,32,109,97,114,107,101,114,32,48,120,37,48,50,120,0,0,0,0,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,112,114,101,109,97,116,117,114,101,32,101,110,100,32,111,102,32,100,97,116,97,32,115,101,103,109,101,110,116,0,0,0,0,0,0,0,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,98,97,100,32,72,117,102,102,109,97,110,32,99,111,100,101,0,0,0,0,0,87,97,114,110,105,110,103,58,32,117,110,107,110,111,119,110,32,74,70,73,70,32,114,101,118,105,115,105,111,110,32,110,117,109,98,101,114,32,37,100,46,37,48,50,100,0,0,0,80,114,101,109,97,116,117,114,101,32,101,110,100,32,111,102,32,74,80,69,71,32,102,105,108,101,0,0,0,0,0,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,102,111,117,110,100,32,109,97,114,107,101,114,32,48,120,37,48,50,120,32,105,110,115,116,101,97,100,32,111,102,32,82,83,84,37,100,0,73,110,118,97,108,105,100,32,83,79,83,32,112,97,114,97,109,101,116,101,114,115,32,102,111,114,32,115,101,113,117,101,110,116,105,97,108,32,74,80,69,71,0,0,0,0,0,0,65,112,112,108,105,99,97,116,105,111,110,32,116,114,97,110,115,102,101,114,114,101,100,32,116,111,111,32,109,97,110,121,32,115,99,97,110,108,105,110,101,115,0,0,0,0,0,0,152,33,4,0,176,33,4,0,208,33,4,0,248,33,4,0,24,34,4,0,56,34,4,0,80,34,4,0,112,34,4,0,160,34,4,0,224,34,4,0,0,35,4,0,24,35,4,0,48,35,4,0,72,35,4,0,136,35,4,0,184,35,4,0,216,35,4,0,0,36,4,0,56,36,4,0,112,36,4,0,136,36,4,0,168,36,4,0,216,36,4,0,40,37,4,0,72,37,4,0,120,37,4,0,152,37,4,0,192,37,4,0,232,37,4,0,16,38,4,0,40,38,4,0,64,38,4,0,88,38,4,0,112,38,4,0,152,38,4,0,176,38,4,0,200,38,4,0,240,38,4,0,8,39,4,0,56,39,4,0,96,39,4,0,136,39,4,0,176,39,4,0,224,39,4,0,248,39,4,0,24,40,4,0,88,40,4,0,128,40,4,0,168,40,4,0,192,40,4,0,240,40,4,0,24,41,4,0,56,41,4,0,96,41,4,0,136,41,4,0,184,41,4,0,232,41,4,0,8,42,4,0,56,42,4,0,96,42,4,0,136,42,4,0,184,42,4,0,232,42,4,0,24,43,4,0,72,43,4,0,120,43,4,0,160,43,4,0,192,43,4,0,224,43,4,0,24,44,4,0,72,44,4,0,104,44,4,0,144,44,4,0,184,44,4,0,208,44,4,0,232,44,4,0,32,45,4,0,48,45,4,0,112,45,4,0,184,45,4,0,232,45,4,0,24,46,4,0,64,46,4,0,96,46,4,0,144,46,4,0,176,46,4,0,200,46,4,0,224,46,4,0,240,46,4,0,24,47,4,0,80,47,4,0,144,47,4,0,192,47,4,0,232,47,4,0,16,48,4,0,48,48,4,0,88,48,4,0,128,48,4,0,152,48,4,0,192,48,4,0,232,48,4,0,240,48,4,0,48,49,4,0,112,49,4,0,144,49,4,0,160,49,4,0,192,49,4,0,224,49,4,0,0,50,4,0,32,50,4,0,64,50,4,0,136,50,4,0,200,50,4,0,0,51,4,0,56,51,4,0,80,51,4,0,104,51,4,0,144,51,4,0,184,51,4,0,0,52,4,0,64,52,4,0,120,52,4,0,160,52,4,0,208,52,4,0,240,52,4,0,40,53,4,0,88,53,4,0,0,0,0,0,74,80,69,71,77,69,77,0,37,108,100,37,99,0,0,0,64,6,0,0,128,62,0,0,0,0,0,0,136,19,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,192,48,240,12,204,60,252,3,195,51,243,15,207,63,255,128,64,176,112,140,76,188,124,131,67,179,115,143,79,191,127,32,224,16,208,44,236,28,220,35,227,19,211,47,239,31,223,160,96,144,80,172,108,156,92,163,99,147,83,175,111,159,95,8,200,56,248,4,196,52,244,11,203,59,251,7,199,55,247],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+266240);allocate([136,72,184,120,132,68,180,116,139,75,187,123,135,71,183,119,40,232,24,216,36,228,20,212,43,235,27,219,39,231,23,215,168,104,152,88,164,100,148,84,171,107,155,91,167,103,151,87,2,194,50,242,14,206,62,254,1,193,49,241,13,205,61,253,130,66,178,114,142,78,190,126,129,65,177,113,141,77,189,125,34,226,18,210,46,238,30,222,33,225,17,209,45,237,29,221,162,98,146,82,174,110,158,94,161,97,145,81,173,109,157,93,10,202,58,250,6,198,54,246,9,201,57,249,5,197,53,245,138,74,186,122,134,70,182,118,137,73,185,121,133,69,181,117,42,234,26,218,38,230,22,214,41,233,25,217,37,229,21,213,170,106,154,90,166,102,150,86,169,105,153,89,165,101,149,85,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,32,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,4,0,0,0,5,0,0,0,12,0,0,0,19,0,0,0,26,0,0,0,33,0,0,0,40,0,0,0,48,0,0,0,41,0,0,0,34,0,0,0,27,0,0,0,20,0,0,0,13,0,0,0,6,0,0,0,7,0,0,0,14,0,0,0,21,0,0,0,28,0,0,0,35,0,0,0,42,0,0,0,49,0,0,0,56,0,0,0,57,0,0,0,50,0,0,0,43,0,0,0,36,0,0,0,29,0,0,0,22,0,0,0,15,0,0,0,23,0,0,0,30,0,0,0,37,0,0,0,44,0,0,0,51,0,0,0,58,0,0,0,59,0,0,0,52,0,0,0,45,0,0,0,38,0,0,0,31,0,0,0,39,0,0,0,46,0,0,0,53,0,0,0,60,0,0,0,61,0,0,0,54,0,0,0,47,0,0,0,55,0,0,0,62,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,32,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,4,0,0,0,5,0,0,0,12,0,0,0,19,0,0,0,26,0,0,0,33,0,0,0,40,0,0,0,48,0,0,0,41,0,0,0,34,0,0,0,27,0,0,0,20,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,21,0,0,0,28,0,0,0,35,0,0,0,42,0,0,0,49,0,0,0,50,0,0,0,43,0,0,0,36,0,0,0,29,0,0,0,22,0,0,0,30,0,0,0,37,0,0,0,44,0,0,0,51,0,0,0,52,0,0,0,45,0,0,0,38,0,0,0,46,0,0,0,53,0,0,0,54,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,32,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,4,0,0,0,5,0,0,0,12,0,0,0,19,0,0,0,26,0,0,0,33,0,0,0,40,0,0,0,41,0,0,0,34,0,0,0,27,0,0,0,20,0,0,0,13,0,0,0,21,0,0,0,28,0,0,0,35,0,0,0,42,0,0,0,43,0,0,0,36,0,0,0,29,0,0,0,37,0,0,0,44,0,0,0,45,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,32,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,19,0,0,0,26,0,0,0,33,0,0,0,34,0,0,0,27,0,0,0,20,0,0,0,28,0,0,0,35,0,0,0,36,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,19,0,0,0,26,0,0,0,27,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,17,0,0,0,18,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,150,48,7,119,44,97,14,238,186,81,9,153,25,196,109,7,143,244,106,112,53,165,99,233,163,149,100,158,50,136,219,14,164,184,220,121,30,233,213,224,136,217,210,151,43,76,182,9,189,124,177,126,7,45,184,231,145,29,191,144,100,16,183,29,242,32,176,106,72,113,185,243,222,65,190,132,125,212,218,26,235,228,221,109,81,181,212,244,199,133,211,131,86,152,108,19,192,168,107,100,122,249,98,253,236,201,101,138,79,92,1,20,217,108,6,99,99,61,15,250,245,13,8,141,200,32,110,59,94,16,105,76,228,65,96,213,114,113,103,162,209,228,3,60,71,212,4,75,253,133,13,210,107,181,10,165,250,168,181,53,108,152,178,66,214,201,187,219,64,249,188,172,227,108,216,50,117,92,223,69,207,13,214,220,89,61,209,171,172,48,217,38,58,0,222,81,128,81,215,200,22,97,208,191,181,244,180,33,35,196,179,86,153,149,186,207,15,165,189,184,158,184,2,40,8,136,5,95,178,217,12,198,36,233,11,177,135,124,111,47,17,76,104,88,171,29,97,193,61,45,102,182,144,65,220,118,6,113,219,1,188,32,210,152,42,16,213,239,137,133,177,113,31,181,182,6,165,228,191,159,51,212,184,232,162,201,7,120,52,249,0,15,142,168,9,150,24,152,14,225,187,13,106,127,45,61,109,8,151,108,100,145,1,92,99,230,244,81,107,107,98,97,108,28,216,48,101,133,78,0,98,242,237,149,6,108,123,165,1,27,193,244,8,130,87,196,15,245,198,217,176,101,80,233,183,18,234,184,190,139,124,136,185,252,223,29,221,98,73,45,218,21,243,124,211,140,101,76,212,251,88,97,178,77,206,81,181,58,116,0,188,163,226,48,187,212,65,165,223,74,215,149,216,61,109,196,209,164,251,244,214,211,106,233,105,67,252,217,110,52,70,136,103,173,208,184,96,218,115,45,4,68,229,29,3,51,95,76,10,170,201,124,13,221,60,113,5,80,170,65,2,39,16,16,11,190,134,32,12,201,37,181,104,87,179,133,111,32,9,212,102,185,159,228,97,206,14,249,222,94,152,201,217,41,34,152,208,176,180,168,215,199,23,61,179,89,129,13,180,46,59,92,189,183,173,108,186,192,32,131,184,237,182,179,191,154,12,226,182,3,154,210,177,116,57,71,213,234,175,119,210,157,21,38,219,4,131,22,220,115,18,11,99,227,132,59,100,148,62,106,109,13,168,90,106,122,11,207,14,228,157,255,9,147,39,174,0,10,177,158,7,125,68,147,15,240,210,163,8,135,104,242,1,30,254,194,6,105,93,87,98,247,203,103,101,128,113,54,108,25,231,6,107,110,118,27,212,254,224,43,211,137,90,122,218,16,204,74,221,103,111,223,185,249,249,239,190,142,67,190,183,23,213,142,176,96,232,163,214,214,126,147,209,161,196,194,216,56,82,242,223,79,241,103,187,209,103,87,188,166,221,6,181,63,75,54,178,72,218,43,13,216,76,27,10,175,246,74,3,54,96,122,4,65,195,239,96,223,85,223,103,168,239,142,110,49,121,190,105,70,140,179,97,203,26,131,102,188,160,210,111,37,54,226,104,82,149,119,12,204,3,71,11,187,185,22,2,34,47,38,5,85,190,59,186,197,40,11,189,178,146,90,180,43,4,106,179,92,167,255,215,194,49,207,208,181,139,158,217,44,29,174,222,91,176,194,100,155,38,242,99,236,156,163,106,117,10,147,109,2,169,6,9,156,63,54,14,235,133,103,7,114,19,87,0,5,130,74,191,149,20,122,184,226,174,43,177,123,56,27,182,12,155,142,210,146,13,190,213,229,183,239,220,124,33,223,219,11,212,210,211,134,66,226,212,241,248,179,221,104,110,131,218,31,205,22,190,129,91,38,185,246,225,119,176,111,119,71,183,24,230,90,8,136,112,106,15,255,202,59,6,102,92,11,1,17,255,158,101,143,105,174,98,248,211,255,107,97,69,207,108,22,120,226,10,160,238,210,13,215,84,131,4,78,194,179,3,57,97,38,103,167,247,22,96,208,77,71,105,73,219,119,110,62,74,106,209,174,220,90,214,217,102,11,223,64,240,59,216,55,83,174,188,169,197,158,187,222,127,207,178,71,233,255,181,48,28,242,189,189,138,194,186,202,48,147,179,83,166,163,180,36,5,54,208,186,147,6,215,205,41,87,222,84,191,103,217,35,46,122,102,179,184,74,97,196,2,27,104,93,148,43,111,42,55,190,11,180,161,142,12,195,27,223,5,90,141,239,2,45,0,0,0,0,65,49,27,25,130,98,54,50,195,83,45,43,4,197,108,100,69,244,119,125,134,167,90,86,199,150,65,79,8,138,217,200,73,187,194,209,138,232,239,250,203,217,244,227,12,79,181,172,77,126,174,181,142,45,131,158,207,28,152,135,81,18,194,74,16,35,217,83,211,112,244,120,146,65,239,97,85,215,174,46,20,230,181,55,215,181,152,28,150,132,131,5,89,152,27,130,24,169,0,155,219,250,45,176,154,203,54,169,93,93,119,230,28,108,108,255,223,63,65,212,158,14,90,205,162,36,132,149,227,21,159,140,32,70,178,167,97,119,169,190,166,225,232,241,231,208,243,232,36,131,222,195,101,178,197,218,170,174,93,93,235,159,70,68,40,204,107,111,105,253,112,118,174,107,49,57,239,90,42,32,44,9,7,11,109,56,28,18,243,54,70,223,178,7,93,198,113,84,112,237,48,101,107,244,247,243,42,187,182,194,49,162,117,145,28,137,52,160,7,144,251,188,159,23,186,141,132,14,121,222,169,37,56,239,178,60,255,121,243,115,190,72,232,106,125,27,197,65,60,42,222,88,5,79,121,240,68,126,98,233,135,45,79,194,198,28,84,219,1,138,21,148,64,187,14,141,131,232,35,166,194,217,56,191,13,197,160,56,76,244,187,33,143,167,150,10,206,150,141,19,9,0,204,92,72,49,215,69,139,98,250,110,202,83,225,119,84,93,187,186,21,108,160,163,214,63,141,136,151,14,150,145,80,152,215,222,17,169,204,199,210,250,225,236,147,203,250,245,92,215,98,114,29,230,121,107,222,181,84,64,159,132,79,89,88,18,14,22,25,35,21,15,218,112,56,36,155,65,35,61,167,107,253,101,230,90,230,124,37,9,203,87,100,56,208,78,163,174,145,1,226,159,138,24,33,204,167,51,96,253,188,42,175,225,36,173,238,208,63,180,45,131,18,159,108,178,9,134,171,36,72,201,234,21,83,208,41,70,126,251,104,119,101,226,246,121,63,47,183,72,36,54,116,27,9,29,53,42,18,4,242,188,83,75,179,141,72,82,112,222,101,121,49,239,126,96,254,243,230,231,191,194,253,254,124,145,208,213,61,160,203,204,250,54,138,131,187,7,145,154,120,84,188,177,57,101,167,168,75,152,131,59,10,169,152,34,201,250,181,9,136,203,174,16,79,93,239,95,14,108,244,70,205,63,217,109,140,14,194,116,67,18,90,243,2,35,65,234,193,112,108,193,128,65,119,216,71,215,54,151,6,230,45,142,197,181,0,165,132,132,27,188,26,138,65,113,91,187,90,104,152,232,119,67,217,217,108,90,30,79,45,21,95,126,54,12,156,45,27,39,221,28,0,62,18,0,152,185,83,49,131,160,144,98,174,139,209,83,181,146,22,197,244,221,87,244,239,196,148,167,194,239,213,150,217,246,233,188,7,174,168,141,28,183,107,222,49,156,42,239,42,133,237,121,107,202,172,72,112,211,111,27,93,248,46,42,70,225,225,54,222,102,160,7,197,127,99,84,232,84,34,101,243,77,229,243,178,2,164,194,169,27,103,145,132,48,38,160,159,41,184,174,197,228,249,159,222,253,58,204,243,214,123,253,232,207,188,107,169,128,253,90,178,153,62,9,159,178,127,56,132,171,176,36,28,44,241,21,7,53,50,70,42,30,115,119,49,7,180,225,112,72,245,208,107,81,54,131,70,122,119,178,93,99,78,215,250,203,15,230,225,210,204,181,204,249,141,132,215,224,74,18,150,175,11,35,141,182,200,112,160,157,137,65,187,132,70,93,35,3,7,108,56,26,196,63,21,49,133,14,14,40,66,152,79,103,3,169,84,126,192,250,121,85,129,203,98,76,31,197,56,129,94,244,35,152,157,167,14,179,220,150,21,170,27,0,84,229,90,49,79,252,153,98,98,215,216,83,121,206,23,79,225,73,86,126,250,80,149,45,215,123,212,28,204,98,19,138,141,45,82,187,150,52,145,232,187,31,208,217,160,6,236,243,126,94,173,194,101,71,110,145,72,108,47,160,83,117,232,54,18,58,169,7,9,35,106,84,36,8,43,101,63,17,228,121,167,150,165,72,188,143,102,27,145,164,39,42,138,189,224,188,203,242,161,141,208,235,98,222,253,192,35,239,230,217,189,225,188,20,252,208,167,13,63,131,138,38,126,178,145,63,185,36,208,112,248,21,203,105,59,70,230,66,122,119,253,91,181,107,101,220,244,90,126,197,55,9,83,238,118,56,72,247,177,174,9,184,240,159,18,161,51,204,63,138,114,253,36,147,0,0,0,0,55,106,194,1,110,212,132,3,89,190,70,2,220,168,9,7,235,194,203,6,178,124,141,4,133,22,79,5,184,81,19,14,143,59,209,15,214,133,151,13,225,239,85,12,100,249,26,9,83,147,216,8,10,45,158,10,61,71,92,11,112,163,38,28,71,201,228,29,30,119,162,31,41,29,96,30,172,11,47,27,155,97,237,26,194,223,171,24,245,181,105,25,200,242,53,18,255,152,247,19,166,38,177,17,145,76,115,16,20,90,60,21,35,48,254,20,122,142,184,22,77,228,122,23,224,70,77,56,215,44,143,57,142,146,201,59,185,248,11,58,60,238,68,63,11,132,134,62,82,58,192,60,101,80,2,61,88,23,94,54,111,125,156,55,54,195,218,53,1,169,24,52,132,191,87,49,179,213,149,48,234,107,211,50,221,1,17,51,144,229,107,36,167,143,169,37,254,49,239,39,201,91,45,38,76,77,98,35,123,39,160,34,34,153,230,32,21,243,36,33,40,180,120,42,31,222,186,43,70,96,252,41,113,10,62,40,244,28,113,45,195,118,179,44,154,200,245,46,173,162,55,47,192,141,154,112,247,231,88,113,174,89,30,115,153,51,220,114,28,37,147,119,43,79,81,118,114,241,23,116,69,155,213,117,120,220,137,126,79,182,75,127,22,8,13,125,33,98,207,124,164,116,128,121,147,30,66,120,202,160,4,122,253,202,198,123,176,46,188,108,135,68,126,109,222,250,56,111,233,144,250,110,108,134,181,107,91,236,119,106,2,82,49,104,53,56,243,105,8,127,175,98,63,21,109,99,102,171,43,97,81,193,233,96,212,215,166,101,227,189,100,100,186,3,34,102,141,105,224,103,32,203,215,72,23,161,21,73,78,31,83,75,121,117,145,74,252,99,222,79,203,9,28,78,146,183,90,76,165,221,152,77,152,154,196,70,175,240,6,71,246,78,64,69,193,36,130,68,68,50,205,65,115,88,15,64,42,230,73,66,29,140,139,67,80,104,241,84,103,2,51,85,62,188,117,87,9,214,183,86,140,192,248,83,187,170,58,82,226,20,124,80,213,126,190,81,232,57,226,90,223,83,32,91,134,237,102,89,177,135,164,88,52,145,235,93,3,251,41,92,90,69,111,94,109,47,173,95,128,27,53,225,183,113,247,224,238,207,177,226,217,165,115,227,92,179,60,230,107,217,254,231,50,103,184,229,5,13,122,228,56,74,38,239,15,32,228,238,86,158,162,236,97,244,96,237,228,226,47,232,211,136,237,233,138,54,171,235,189,92,105,234,240,184,19,253,199,210,209,252,158,108,151,254,169,6,85,255,44,16,26,250,27,122,216,251,66,196,158,249,117,174,92,248,72,233,0,243,127,131,194,242,38,61,132,240,17,87,70,241,148,65,9,244,163,43,203,245,250,149,141,247,205,255,79,246,96,93,120,217,87,55,186,216,14,137,252,218,57,227,62,219,188,245,113,222,139,159,179,223,210,33,245,221,229,75,55,220,216,12,107,215,239,102,169,214,182,216,239,212,129,178,45,213,4,164,98,208,51,206,160,209,106,112,230,211,93,26,36,210,16,254,94,197,39,148,156,196,126,42,218,198,73,64,24,199,204,86,87,194,251,60,149,195,162,130,211,193,149,232,17,192,168,175,77,203,159,197,143,202,198,123,201,200,241,17,11,201,116,7,68,204,67,109,134,205,26,211,192,207,45,185,2,206,64,150,175,145,119,252,109,144,46,66,43,146,25,40,233,147,156,62,166,150,171,84,100,151,242,234,34,149,197,128,224,148,248,199,188,159,207,173,126,158,150,19,56,156,161,121,250,157,36,111,181,152,19,5,119,153,74,187,49,155,125,209,243,154,48,53,137,141,7,95,75,140,94,225,13,142,105,139,207,143,236,157,128,138,219,247,66,139,130,73,4,137,181,35,198,136,136,100,154,131,191,14,88,130,230,176,30,128,209,218,220,129,84,204,147,132,99,166,81,133,58,24,23,135,13,114,213,134,160,208,226,169,151,186,32,168,206,4,102,170,249,110,164,171,124,120,235,174,75,18,41,175,18,172,111,173,37,198,173,172,24,129,241,167,47,235,51,166,118,85,117,164,65,63,183,165,196,41,248,160,243,67,58,161,170,253,124,163,157,151,190,162,208,115,196,181,231,25,6,180,190,167,64,182,137,205,130,183,12,219,205,178,59,177,15,179,98,15,73,177,85,101,139,176,104,34,215,187,95,72,21,186,6,246,83,184,49,156,145,185,180,138,222,188,131,224,28,189,218,94,90,191,237,52,152,190,0,0,0,0,101,103,188,184,139,200,9,170,238,175,181,18,87,151,98,143,50,240,222,55,220,95,107,37,185,56,215,157,239,40,180,197,138,79,8,125,100,224,189,111,1,135,1,215,184,191,214,74,221,216,106,242,51,119,223,224,86,16,99,88,159,87,25,80,250,48,165,232,20,159,16,250,113,248,172,66,200,192,123,223,173,167,199,103,67,8,114,117,38,111,206,205,112,127,173,149,21,24,17,45,251,183,164,63,158,208,24,135,39,232,207,26,66,143,115,162,172,32,198,176,201,71,122,8,62,175,50,160,91,200,142,24,181,103,59,10,208,0,135,178,105,56,80,47,12,95,236,151,226,240,89,133,135,151,229,61,209,135,134,101,180,224,58,221,90,79,143,207,63,40,51,119,134,16,228,234,227,119,88,82,13,216,237,64,104,191,81,248,161,248,43,240,196,159,151,72,42,48,34,90,79,87,158,226,246,111,73,127,147,8,245,199,125,167,64,213,24,192,252,109,78,208,159,53,43,183,35,141,197,24,150,159,160,127,42,39,25,71,253,186,124,32,65,2,146,143,244,16,247,232,72,168,61,88,20,155,88,63,168,35,182,144,29,49,211,247,161,137,106,207,118,20,15,168,202,172,225,7,127,190,132,96,195,6,210,112,160,94,183,23,28,230,89,184,169,244,60,223,21,76,133,231,194,209,224,128,126,105,14,47,203,123,107,72,119,195,162,15,13,203,199,104,177,115,41,199,4,97,76,160,184,217,245,152,111,68,144,255,211,252,126,80,102,238,27,55,218,86,77,39,185,14,40,64,5,182,198,239,176,164,163,136,12,28,26,176,219,129,127,215,103,57,145,120,210,43,244,31,110,147,3,247,38,59,102,144,154,131,136,63,47,145,237,88,147,41,84,96,68,180,49,7,248,12,223,168,77,30,186,207,241,166,236,223,146,254,137,184,46,70,103,23,155,84,2,112,39,236,187,72,240,113,222,47,76,201,48,128,249,219,85,231,69,99,156,160,63,107,249,199,131,211,23,104,54,193,114,15,138,121,203,55,93,228,174,80,225,92,64,255,84,78,37,152,232,246,115,136,139,174,22,239,55,22,248,64,130,4,157,39,62,188,36,31,233,33,65,120,85,153,175,215,224,139,202,176,92,51,59,182,89,237,94,209,229,85,176,126,80,71,213,25,236,255,108,33,59,98,9,70,135,218,231,233,50,200,130,142,142,112,212,158,237,40,177,249,81,144,95,86,228,130,58,49,88,58,131,9,143,167,230,110,51,31,8,193,134,13,109,166,58,181,164,225,64,189,193,134,252,5,47,41,73,23,74,78,245,175,243,118,34,50,150,17,158,138,120,190,43,152,29,217,151,32,75,201,244,120,46,174,72,192,192,1,253,210,165,102,65,106,28,94,150,247,121,57,42,79,151,150,159,93,242,241,35,229,5,25,107,77,96,126,215,245,142,209,98,231,235,182,222,95,82,142,9,194,55,233,181,122,217,70,0,104,188,33,188,208,234,49,223,136,143,86,99,48,97,249,214,34,4,158,106,154,189,166,189,7,216,193,1,191,54,110,180,173,83,9,8,21,154,78,114,29,255,41,206,165,17,134,123,183,116,225,199,15,205,217,16,146,168,190,172,42,70,17,25,56,35,118,165,128,117,102,198,216,16,1,122,96,254,174,207,114,155,201,115,202,34,241,164,87,71,150,24,239,169,57,173,253,204,94,17,69,6,238,77,118,99,137,241,206,141,38,68,220,232,65,248,100,81,121,47,249,52,30,147,65,218,177,38,83,191,214,154,235,233,198,249,179,140,161,69,11,98,14,240,25,7,105,76,161,190,81,155,60,219,54,39,132,53,153,146,150,80,254,46,46,153,185,84,38,252,222,232,158,18,113,93,140,119,22,225,52,206,46,54,169,171,73,138,17,69,230,63,3,32,129,131,187,118,145,224,227,19,246,92,91,253,89,233,73,152,62,85,241,33,6,130,108,68,97,62,212,170,206,139,198,207,169,55,126,56,65,127,214,93,38,195,110,179,137,118,124,214,238,202,196,111,214,29,89,10,177,161,225,228,30,20,243,129,121,168,75,215,105,203,19,178,14,119,171,92,161,194,185,57,198,126,1,128,254,169,156,229,153,21,36,11,54,160,54,110,81,28,142,167,22,102,134,194,113,218,62,44,222,111,44,73,185,211,148,240,129,4,9,149,230,184,177,123,73,13,163,30,46,177,27,72,62,210,67,45,89,110,251,195,246,219,233,166,145,103,81,31,169,176,204,122,206,12,116,148,97,185,102,241,6,5,222,0,0,0,0,119,7,48,150,238,14,97,44,153,9,81,186,7,109,196,25,112,106,244,143,233,99,165,53,158,100,149,163,14,219,136,50,121,220,184,164,224,213,233,30,151,210,217,136,9,182,76,43,126,177,124,189,231,184,45,7,144,191,29,145,29,183,16,100,106,176,32,242,243,185,113,72,132,190,65,222,26,218,212,125,109,221,228,235,244,212,181,81,131,211,133,199,19,108,152,86,100,107,168,192,253,98,249,122,138,101,201,236,20,1,92,79,99,6,108,217,250,15,61,99,141,8,13,245,59,110,32,200,76,105,16,94,213,96,65,228,162,103,113,114,60,3,228,209,75,4,212,71,210,13,133,253,165,10,181,107,53,181,168,250,66,178,152,108,219,187,201,214,172,188,249,64,50,216,108,227,69,223,92,117,220,214,13,207,171,209,61,89,38,217,48,172,81,222,0,58,200,215,81,128,191,208,97,22,33,180,244,181,86,179,196,35,207,186,149,153,184,189,165,15,40,2,184,158,95,5,136,8,198,12,217,178,177,11,233,36,47,111,124,135,88,104,76,17,193,97,29,171,182,102,45,61,118,220,65,144,1,219,113,6,152,210,32,188,239,213,16,42,113,177,133,137,6,182,181,31,159,191,228,165,232,184,212,51,120,7,201,162,15,0,249,52,150,9,168,142,225,14,152,24,127,106,13,187,8,109,61,45,145,100,108,151,230,99,92,1,107,107,81,244,28,108,97,98,133,101,48,216,242,98,0,78,108,6,149,237,27,1,165,123,130,8,244,193,245,15,196,87,101,176,217,198,18,183,233,80,139,190,184,234,252,185,136,124,98,221,29,223,21,218,45,73,140,211,124,243,251,212,76,101,77,178,97,88,58,181,81,206,163,188,0,116,212,187,48,226,74,223,165,65,61,216,149,215,164,209,196,109,211,214,244,251,67,105,233,106,52,110,217,252,173,103,136,70,218,96,184,208,68,4,45,115,51,3,29,229,170,10,76,95,221,13,124,201,80,5,113,60,39,2,65,170,190,11,16,16,201,12,32,134,87,104,181,37,32,111,133,179,185,102,212,9,206,97,228,159,94,222,249,14,41,217,201,152,176,208,152,34,199,215,168,180,89,179,61,23,46,180,13,129,183,189,92,59,192,186,108,173,237,184,131,32,154,191,179,182,3,182,226,12,116,177,210,154,234,213,71,57,157,210,119,175,4,219,38,21,115,220,22,131,227,99,11,18,148,100,59,132,13,109,106,62,122,106,90,168,228,14,207,11,147,9,255,157,10,0,174,39,125,7,158,177,240,15,147,68,135,8,163,210,30,1,242,104,105,6,194,254,247,98,87,93,128,101,103,203,25,108,54,113,110,107,6,231,254,212,27,118,137,211,43,224,16,218,122,90,103,221,74,204,249,185,223,111,142,190,239,249,23,183,190,67,96,176,142,213,214,214,163,232,161,209,147,126,56,216,194,196,79,223,242,82,209,187,103,241,166,188,87,103,63,181,6,221,72,178,54,75,216,13,43,218,175,10,27,76,54,3,74,246,65,4,122,96,223,96,239,195,168,103,223,85,49,110,142,239,70,105,190,121,203,97,179,140,188,102,131,26,37,111,210,160,82,104,226,54,204,12,119,149,187,11,71,3,34,2,22,185,85,5,38,47,197,186,59,190,178,189,11,40,43,180,90,146,92,179,106,4,194,215,255,167,181,208,207,49,44,217,158,139,91,222,174,29,155,100,194,176,236,99,242,38,117,106,163,156,2,109,147,10,156,9,6,169,235,14,54,63,114,7,103,133,5,0,87,19,149,191,74,130,226,184,122,20,123,177,43,174,12,182,27,56,146,210,142,155,229,213,190,13,124,220,239,183,11,219,223,33,134,211,210,212,241,212,226,66,104,221,179,248,31,218,131,110,129,190,22,205,246,185,38,91,111,176,119,225,24,183,71,119,136,8,90,230,255,15,106,112,102,6,59,202,17,1,11,92,143,101,158,255,248,98,174,105,97,107,255,211,22,108,207,69,160,10,226,120,215,13,210,238,78,4,131,84,57,3,179,194,167,103,38,97,208,96,22,247,73,105,71,77,62,110,119,219,174,209,106,74,217,214,90,220,64,223,11,102,55,216,59,240,169,188,174,83,222,187,158,197,71,178,207,127,48,181,255,233,189,189,242,28,202,186,194,138,83,179,147,48,36,180,163,166,186,208,54,5,205,215,6,147,84,222,87,41,35,217,103,191,179,102,122,46,196,97,74,184,93,104,27,2,42,111,43,148,180,11,190,55,195,12,142,161,90,5,223,27,45,2,239,141,0,0,0,0,25,27,49,65,50,54,98,130,43,45,83,195,100,108,197,4,125,119,244,69,86,90,167,134,79,65,150,199,200,217,138,8,209,194,187,73,250,239,232,138,227,244,217,203,172,181,79,12,181,174,126,77,158,131,45,142,135,152,28,207,74,194,18,81,83,217,35,16,120,244,112,211,97,239,65,146,46,174,215,85,55,181,230,20,28,152,181,215,5,131,132,150,130,27,152,89,155,0,169,24,176,45,250,219,169,54,203,154,230,119,93,93,255,108,108,28,212,65,63,223,205,90,14,158,149,132,36,162,140,159,21,227,167,178,70,32,190,169,119,97,241,232,225,166,232,243,208,231,195,222,131,36,218,197,178,101,93,93,174,170,68,70,159,235,111,107,204,40,118,112,253,105,57,49,107,174,32,42,90,239,11,7,9,44,18,28,56,109,223,70,54,243,198,93,7,178,237,112,84,113,244,107,101,48,187,42,243,247,162,49,194,182,137,28,145,117,144,7,160,52,23,159,188,251,14,132,141,186,37,169,222,121,60,178,239,56,115,243,121,255,106,232,72,190,65,197,27,125,88,222,42,60,240,121,79,5,233,98,126,68,194,79,45,135,219,84,28,198,148,21,138,1,141,14,187,64,166,35,232,131,191,56,217,194,56,160,197,13,33,187,244,76,10,150,167,143,19,141,150,206,92,204,0,9,69,215,49,72,110,250,98,139,119,225,83,202,186,187,93,84,163,160,108,21,136,141,63,214,145,150,14,151,222,215,152,80,199,204,169,17,236,225,250,210,245,250,203,147,114,98,215,92,107,121,230,29,64,84,181,222,89,79,132,159,22,14,18,88,15,21,35,25,36,56,112,218,61,35,65,155,101,253,107,167,124,230,90,230,87,203,9,37,78,208,56,100,1,145,174,163,24,138,159,226,51,167,204,33,42,188,253,96,173,36,225,175,180,63,208,238,159,18,131,45,134,9,178,108,201,72,36,171,208,83,21,234,251,126,70,41,226,101,119,104,47,63,121,246,54,36,72,183,29,9,27,116,4,18,42,53,75,83,188,242,82,72,141,179,121,101,222,112,96,126,239,49,231,230,243,254,254,253,194,191,213,208,145,124,204,203,160,61,131,138,54,250,154,145,7,187,177,188,84,120,168,167,101,57,59,131,152,75,34,152,169,10,9,181,250,201,16,174,203,136,95,239,93,79,70,244,108,14,109,217,63,205,116,194,14,140,243,90,18,67,234,65,35,2,193,108,112,193,216,119,65,128,151,54,215,71,142,45,230,6,165,0,181,197,188,27,132,132,113,65,138,26,104,90,187,91,67,119,232,152,90,108,217,217,21,45,79,30,12,54,126,95,39,27,45,156,62,0,28,221,185,152,0,18,160,131,49,83,139,174,98,144,146,181,83,209,221,244,197,22,196,239,244,87,239,194,167,148,246,217,150,213,174,7,188,233,183,28,141,168,156,49,222,107,133,42,239,42,202,107,121,237,211,112,72,172,248,93,27,111,225,70,42,46,102,222,54,225,127,197,7,160,84,232,84,99,77,243,101,34,2,178,243,229,27,169,194,164,48,132,145,103,41,159,160,38,228,197,174,184,253,222,159,249,214,243,204,58,207,232,253,123,128,169,107,188,153,178,90,253,178,159,9,62,171,132,56,127,44,28,36,176,53,7,21,241,30,42,70,50,7,49,119,115,72,112,225,180,81,107,208,245,122,70,131,54,99,93,178,119,203,250,215,78,210,225,230,15,249,204,181,204,224,215,132,141,175,150,18,74,182,141,35,11,157,160,112,200,132,187,65,137,3,35,93,70,26,56,108,7,49,21,63,196,40,14,14,133,103,79,152,66,126,84,169,3,85,121,250,192,76,98,203,129,129,56,197,31,152,35,244,94,179,14,167,157,170,21,150,220,229,84,0,27,252,79,49,90,215,98,98,153,206,121,83,216,73,225,79,23,80,250,126,86,123,215,45,149,98,204,28,212,45,141,138,19,52,150,187,82,31,187,232,145,6,160,217,208,94,126,243,236,71,101,194,173,108,72,145,110,117,83,160,47,58,18,54,232,35,9,7,169,8,36,84,106,17,63,101,43,150,167,121,228,143,188,72,165,164,145,27,102,189,138,42,39,242,203,188,224,235,208,141,161,192,253,222,98,217,230,239,35,20,188,225,189,13,167,208,252,38,138,131,63,63,145,178,126,112,208,36,185,105,203,21,248,66,230,70,59,91,253,119,122,220,101,107,181,197,126,90,244,238,83,9,55,247,72,56,118,184,9,174,177,161,18,159,240,138,63,204,51,147,36,253,114,0,0,0,0,1,194,106,55,3,132,212,110,2,70,190,89,7,9,168,220,6,203,194,235,4,141,124,178,5,79,22,133,14,19,81,184,15,209,59,143,13,151,133,214,12,85,239,225,9,26,249,100,8,216,147,83,10,158,45,10,11,92,71,61,28,38,163,112,29,228,201,71,31,162,119,30,30,96,29,41,27,47,11,172,26,237,97,155,24,171,223,194,25,105,181,245,18,53,242,200,19,247,152,255,17,177,38,166,16,115,76,145,21,60,90,20,20,254,48,35,22,184,142,122,23,122,228,77,56,77,70,224,57,143,44,215,59,201,146,142,58,11,248,185,63,68,238,60,62,134,132,11,60,192,58,82,61,2,80,101,54,94,23,88,55,156,125,111,53,218,195,54,52,24,169,1,49,87,191,132,48,149,213,179,50,211,107,234,51,17,1,221,36,107,229,144,37,169,143,167,39,239,49,254,38,45,91,201,35,98,77,76,34,160,39,123,32,230,153,34,33,36,243,21,42,120,180,40,43,186,222,31,41,252,96,70,40,62,10,113,45,113,28,244,44,179,118,195,46,245,200,154,47,55,162,173,112,154,141,192,113,88,231,247,115,30,89,174,114,220,51,153,119,147,37,28,118,81,79,43,116,23,241,114,117,213,155,69,126,137,220,120,127,75,182,79,125,13,8,22,124,207,98,33,121,128,116,164,120,66,30,147,122,4,160,202,123,198,202,253,108,188,46,176,109,126,68,135,111,56,250,222,110,250,144,233,107,181,134,108,106,119,236,91,104,49,82,2,105,243,56,53,98,175,127,8,99,109,21,63,97,43,171,102,96,233,193,81,101,166,215,212,100,100,189,227,102,34,3,186,103,224,105,141,72,215,203,32,73,21,161,23,75,83,31,78,74,145,117,121,79,222,99,252,78,28,9,203,76,90,183,146,77,152,221,165,70,196,154,152,71,6,240,175,69,64,78,246,68,130,36,193,65,205,50,68,64,15,88,115,66,73,230,42,67,139,140,29,84,241,104,80,85,51,2,103,87,117,188,62,86,183,214,9,83,248,192,140,82,58,170,187,80,124,20,226,81,190,126,213,90,226,57,232,91,32,83,223,89,102,237,134,88,164,135,177,93,235,145,52,92,41,251,3,94,111,69,90,95,173,47,109,225,53,27,128,224,247,113,183,226,177,207,238,227,115,165,217,230,60,179,92,231,254,217,107,229,184,103,50,228,122,13,5,239,38,74,56,238,228,32,15,236,162,158,86,237,96,244,97,232,47,226,228,233,237,136,211,235,171,54,138,234,105,92,189,253,19,184,240,252,209,210,199,254,151,108,158,255,85,6,169,250,26,16,44,251,216,122,27,249,158,196,66,248,92,174,117,243,0,233,72,242,194,131,127,240,132,61,38,241,70,87,17,244,9,65,148,245,203,43,163,247,141,149,250,246,79,255,205,217,120,93,96,216,186,55,87,218,252,137,14,219,62,227,57,222,113,245,188,223,179,159,139,221,245,33,210,220,55,75,229,215,107,12,216,214,169,102,239,212,239,216,182,213,45,178,129,208,98,164,4,209,160,206,51,211,230,112,106,210,36,26,93,197,94,254,16,196,156,148,39,198,218,42,126,199,24,64,73,194,87,86,204,195,149,60,251,193,211,130,162,192,17,232,149,203,77,175,168,202,143,197,159,200,201,123,198,201,11,17,241,204,68,7,116,205,134,109,67,207,192,211,26,206,2,185,45,145,175,150,64,144,109,252,119,146,43,66,46,147,233,40,25,150,166,62,156,151,100,84,171,149,34,234,242,148,224,128,197,159,188,199,248,158,126,173,207,156,56,19,150,157,250,121,161,152,181,111,36,153,119,5,19,155,49,187,74,154,243,209,125,141,137,53,48,140,75,95,7,142,13,225,94,143,207,139,105,138,128,157,236,139,66,247,219,137,4,73,130,136,198,35,181,131,154,100,136,130,88,14,191,128,30,176,230,129,220,218,209,132,147,204,84,133,81,166,99,135,23,24,58,134,213,114,13,169,226,208,160,168,32,186,151,170,102,4,206,171,164,110,249,174,235,120,124,175,41,18,75,173,111,172,18,172,173,198,37,167,241,129,24,166,51,235,47,164,117,85,118,165,183,63,65,160,248,41,196,161,58,67,243,163,124,253,170,162,190,151,157,181,196,115,208,180,6,25,231,182,64,167,190,183,130,205,137,178,205,219,12,179,15,177,59,177,73,15,98,176,139,101,85,187,215,34,104,186,21,72,95,184,83,246,6,185,145,156,49,188,222,138,180,189,28,224,131,191,90,94,218,190,152,52,237,0,0,0,0,184,188,103,101,170,9,200,139,18,181,175,238,143,98,151,87,55,222,240,50,37,107,95,220,157,215,56,185,197,180,40,239,125,8,79,138,111,189,224,100,215,1,135,1,74,214,191,184,242,106,216,221,224,223,119,51,88,99,16,86,80,25,87,159,232,165,48,250,250,16,159,20,66,172,248,113,223,123,192,200,103,199,167,173,117,114,8,67,205,206,111,38,149,173,127,112,45,17,24,21,63,164,183,251,135,24,208,158,26,207,232,39,162,115,143,66,176,198,32,172,8,122,71,201,160,50,175,62,24,142,200,91,10,59,103,181,178,135,0,208,47,80,56,105,151,236,95,12,133,89,240,226,61,229,151,135,101,134,135,209,221,58,224,180,207,143,79,90,119,51,40,63,234,228,16,134,82,88,119,227,64,237,216,13,248,81,191,104,240,43,248,161,72,151,159,196,90,34,48,42,226,158,87,79,127,73,111,246,199,245,8,147,213,64,167,125,109,252,192,24,53,159,208,78,141,35,183,43,159,150,24,197,39,42,127,160,186,253,71,25,2,65,32,124,16,244,143,146,168,72,232,247,155,20,88,61,35,168,63,88,49,29,144,182,137,161,247,211,20,118,207,106,172,202,168,15,190,127,7,225,6,195,96,132,94,160,112,210,230,28,23,183,244,169,184,89,76,21,223,60,209,194,231,133,105,126,128,224,123,203,47,14,195,119,72,107,203,13,15,162,115,177,104,199,97,4,199,41,217,184,160,76,68,111,152,245,252,211,255,144,238,102,80,126,86,218,55,27,14,185,39,77,182,5,64,40,164,176,239,198,28,12,136,163,129,219,176,26,57,103,215,127,43,210,120,145,147,110,31,244,59,38,247,3,131,154,144,102,145,47,63,136,41,147,88,237,180,68,96,84,12,248,7,49,30,77,168,223,166,241,207,186,254,146,223,236,70,46,184,137,84,155,23,103,236,39,112,2,113,240,72,187,201,76,47,222,219,249,128,48,99,69,231,85,107,63,160,156,211,131,199,249,193,54,104,23,121,138,15,114,228,93,55,203,92,225,80,174,78,84,255,64,246,232,152,37,174,139,136,115,22,55,239,22,4,130,64,248,188,62,39,157,33,233,31,36,153,85,120,65,139,224,215,175,51,92,176,202,237,89,182,59,85,229,209,94,71,80,126,176,255,236,25,213,98,59,33,108,218,135,70,9,200,50,233,231,112,142,142,130,40,237,158,212,144,81,249,177,130,228,86,95,58,88,49,58,167,143,9,131,31,51,110,230,13,134,193,8,181,58,166,109,189,64,225,164,5,252,134,193,23,73,41,47,175,245,78,74,50,34,118,243,138,158,17,150,152,43,190,120,32,151,217,29,120,244,201,75,192,72,174,46,210,253,1,192,106,65,102,165,247,150,94,28,79,42,57,121,93,159,150,151,229,35,241,242,77,107,25,5,245,215,126,96,231,98,209,142,95,222,182,235,194,9,142,82,122,181,233,55,104,0,70,217,208,188,33,188,136,223,49,234,48,99,86,143,34,214,249,97,154,106,158,4,7,189,166,189,191,1,193,216,173,180,110,54,21,8,9,83,29,114,78,154,165,206,41,255,183,123,134,17,15,199,225,116,146,16,217,205,42,172,190,168,56,25,17,70,128,165,118,35,216,198,102,117,96,122,1,16,114,207,174,254,202,115,201,155,87,164,241,34,239,24,150,71,253,173,57,169,69,17,94,204,118,77,238,6,206,241,137,99,220,68,38,141,100,248,65,232,249,47,121,81,65,147,30,52,83,38,177,218,235,154,214,191,179,249,198,233,11,69,161,140,25,240,14,98,161,76,105,7,60,155,81,190,132,39,54,219,150,146,153,53,46,46,254,80,38,84,185,153,158,232,222,252,140,93,113,18,52,225,22,119,169,54,46,206,17,138,73,171,3,63,230,69,187,131,129,32,227,224,145,118,91,92,246,19,73,233,89,253,241,85,62,152,108,130,6,33,212,62,97,68,198,139,206,170,126,55,169,207,214,127,65,56,110,195,38,93,124,118,137,179,196,202,238,214,89,29,214,111,225,161,177,10,243,20,30,228,75,168,121,129,19,203,105,215,171,119,14,178,185,194,161,92,1,126,198,57,156,169,254,128,36,21,153,229,54,160,54,11,142,28,81,110,134,102,22,167,62,218,113,194,44,111,222,44,148,211,185,73,9,4,129,240,177,184,230,149,163,13,73,123,27,177,46,30,67,210,62,72,251,110,89,45,233,219,246,195,81,103,145,166,204,176,169,31,116,12,206,122,102,185,97,148,222,5,6,241,0,0,0,0,0,0,0,0,170,0,0,0,4,0,4,0,8,0,4,0,171,0,0,0,4,0,5,0,16,0,8,0,171,0,0,0,4,0,6,0,32,0,32,0,171,0,0,0,4,0,4,0,16,0,16,0,172,0,0,0,8,0,16,0,32,0,32,0,172,0,0,0,8,0,16,0,128,0,128,0,172,0,0,0,8,0,32,0,128,0,0,1,172,0,0,0,32,0,128,0,2,1,0,4,172,0,0,0,32,0,2,1,2,1,0,16,172,0,0,0,16,0,17,0,18,0,0,0,8,0,7,0,9,0,6,0,10,0,5,0,11,0,4,0,12,0,3,0,13,0,2,0,14,0,1,0,15,0,0,0,105,110,99,111,114,114,101,99,116,32,104,101,97,100,101,114,32,99,104,101,99,107,0,0,117,110,107,110,111,119,110,32,99,111,109,112,114,101,115,115,105,111,110,32,109,101,116,104,111,100,0,0,0,0,0,0,105,110,118,97,108,105,100,32,119,105,110,100,111,119,32,115,105,122,101,0,0,0,0,0,117,110,107,110,111,119,110,32,104,101,97,100,101,114,32,102,108,97,103,115,32,115,101,116,0,0,0,0,0,0,0,0,104,101,97,100,101,114,32,99,114,99,32,109,105,115,109,97,116,99,104,0,0,0,0,0,105,110,118,97,108,105,100,32,98,108,111,99,107,32,116,121,112,101,0,0,0,0,0,0,105,110,118,97,108,105,100,32,115,116,111,114,101,100,32,98,108,111,99,107,32,108,101,110,103,116,104,115,0,0,0,0,116,111,111,32,109,97,110,121,32,108,101,110,103,116,104,32,111,114,32,100,105,115,116,97,110,99,101,32,115,121,109,98,111,108,115,0,0,0,0,0,105,110,118,97,108,105,100,32,99,111,100,101,32,108,101,110,103,116,104,115,32,115,101,116,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,98,105,116,32,108,101,110,103,116,104,32,114,101,112,101,97,116,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,99,111,100,101,32,45,45,32,109,105,115,115,105,110,103,32,101,110,100,45,111,102,45,98,108,111,99,107,0,0,0,0,105,110,118,97,108,105,100,32,108,105,116,101,114,97,108,47,108,101,110,103,116,104,115,32,115,101,116,0,0,0,0,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,115,32,115,101,116,0,0,0,105,110,118,97,108,105,100,32,108,105,116,101,114,97,108,47,108,101,110,103,116,104,32,99,111,100,101,0,0,0,0,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+276480);allocate([32,99,111,100,101,0,0,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,32,116,111,111,32,102,97,114,32,98,97,99,107,0,0,0,105,110,99,111,114,114,101,99,116,32,100,97,116,97,32,99,104,101,99,107,0,0,0,0,105,110,99,111,114,114,101,99,116,32,108,101,110,103,116,104,32,99,104,101,99,107,0,0,96,7,0,0,0,8,80,0,0,8,16,0,20,8,115,0,18,7,31,0,0,8,112,0,0,8,48,0,0,9,192,0,16,7,10,0,0,8,96,0,0,8,32,0,0,9,160,0,0,8,0,0,0,8,128,0,0,8,64,0,0,9,224,0,16,7,6,0,0,8,88,0,0,8,24,0,0,9,144,0,19,7,59,0,0,8,120,0,0,8,56,0,0,9,208,0,17,7,17,0,0,8,104,0,0,8,40,0,0,9,176,0,0,8,8,0,0,8,136,0,0,8,72,0,0,9,240,0,16,7,4,0,0,8,84,0,0,8,20,0,21,8,227,0,19,7,43,0,0,8,116,0,0,8,52,0,0,9,200,0,17,7,13,0,0,8,100,0,0,8,36,0,0,9,168,0,0,8,4,0,0,8,132,0,0,8,68,0,0,9,232,0,16,7,8,0,0,8,92,0,0,8,28,0,0,9,152,0,20,7,83,0,0,8,124,0,0,8,60,0,0,9,216,0,18,7,23,0,0,8,108,0,0,8,44,0,0,9,184,0,0,8,12,0,0,8,140,0,0,8,76,0,0,9,248,0,16,7,3,0,0,8,82,0,0,8,18,0,21,8,163,0,19,7,35,0,0,8,114,0,0,8,50,0,0,9,196,0,17,7,11,0,0,8,98,0,0,8,34,0,0,9,164,0,0,8,2,0,0,8,130,0,0,8,66,0,0,9,228,0,16,7,7,0,0,8,90,0,0,8,26,0,0,9,148,0,20,7,67,0,0,8,122,0,0,8,58,0,0,9,212,0,18,7,19,0,0,8,106,0,0,8,42,0,0,9,180,0,0,8,10,0,0,8,138,0,0,8,74,0,0,9,244,0,16,7,5,0,0,8,86,0,0,8,22,0,64,8,0,0,19,7,51,0,0,8,118,0,0,8,54,0,0,9,204,0,17,7,15,0,0,8,102,0,0,8,38,0,0,9,172,0,0,8,6,0,0,8,134,0,0,8,70,0,0,9,236,0,16,7,9,0,0,8,94,0,0,8,30,0,0,9,156,0,20,7,99,0,0,8,126,0,0,8,62,0,0,9,220,0,18,7,27,0,0,8,110,0,0,8,46,0,0,9,188,0,0,8,14,0,0,8,142,0,0,8,78,0,0,9,252,0,96,7,0,0,0,8,81,0,0,8,17,0,21,8,131,0,18,7,31,0,0,8,113,0,0,8,49,0,0,9,194,0,16,7,10,0,0,8,97,0,0,8,33,0,0,9,162,0,0,8,1,0,0,8,129,0,0,8,65,0,0,9,226,0,16,7,6,0,0,8,89,0,0,8,25,0,0,9,146,0,19,7,59,0,0,8,121,0,0,8,57,0,0,9,210,0,17,7,17,0,0,8,105,0,0,8,41,0,0,9,178,0,0,8,9,0,0,8,137,0,0,8,73,0,0,9,242,0,16,7,4,0,0,8,85,0,0,8,21,0,16,8,2,1,19,7,43,0,0,8,117,0,0,8,53,0,0,9,202,0,17,7,13,0,0,8,101,0,0,8,37,0,0,9,170,0,0,8,5,0,0,8,133,0,0,8,69,0,0,9,234,0,16,7,8,0,0,8,93,0,0,8,29,0,0,9,154,0,20,7,83,0,0,8,125,0,0,8,61,0,0,9,218,0,18,7,23,0,0,8,109,0,0,8,45,0,0,9,186,0,0,8,13,0,0,8,141,0,0,8,77,0,0,9,250,0,16,7,3,0,0,8,83,0,0,8,19,0,21,8,195,0,19,7,35,0,0,8,115,0,0,8,51,0,0,9,198,0,17,7,11,0,0,8,99,0,0,8,35,0,0,9,166,0,0,8,3,0,0,8,131,0,0,8,67,0,0,9,230,0,16,7,7,0,0,8,91,0,0,8,27,0,0,9,150,0,20,7,67,0,0,8,123,0,0,8,59,0,0,9,214,0,18,7,19,0,0,8,107,0,0,8,43,0,0,9,182,0,0,8,11,0,0,8,139,0,0,8,75,0,0,9,246,0,16,7,5,0,0,8,87,0,0,8,23,0,64,8,0,0,19,7,51,0,0,8,119,0,0,8,55,0,0,9,206,0,17,7,15,0,0,8,103,0,0,8,39,0,0,9,174,0,0,8,7,0,0,8,135,0,0,8,71,0,0,9,238,0,16,7,9,0,0,8,95,0,0,8,31,0,0,9,158,0,20,7,99,0,0,8,127,0,0,8,63,0,0,9,222,0,18,7,27,0,0,8,111,0,0,8,47,0,0,9,190,0,0,8,15,0,0,8,143,0,0,8,79,0,0,9,254,0,96,7,0,0,0,8,80,0,0,8,16,0,20,8,115,0,18,7,31,0,0,8,112,0,0,8,48,0,0,9,193,0,16,7,10,0,0,8,96,0,0,8,32,0,0,9,161,0,0,8,0,0,0,8,128,0,0,8,64,0,0,9,225,0,16,7,6,0,0,8,88,0,0,8,24,0,0,9,145,0,19,7,59,0,0,8,120,0,0,8,56,0,0,9,209,0,17,7,17,0,0,8,104,0,0,8,40,0,0,9,177,0,0,8,8,0,0,8,136,0,0,8,72,0,0,9,241,0,16,7,4,0,0,8,84,0,0,8,20,0,21,8,227,0,19,7,43,0,0,8,116,0,0,8,52,0,0,9,201,0,17,7,13,0,0,8,100,0,0,8,36,0,0,9,169,0,0,8,4,0,0,8,132,0,0,8,68,0,0,9,233,0,16,7,8,0,0,8,92,0,0,8,28,0,0,9,153,0,20,7,83,0,0,8,124,0,0,8,60,0,0,9,217,0,18,7,23,0,0,8,108,0,0,8,44,0,0,9,185,0,0,8,12,0,0,8,140,0,0,8,76,0,0,9,249,0,16,7,3,0,0,8,82,0,0,8,18,0,21,8,163,0,19,7,35,0,0,8,114,0,0,8,50,0,0,9,197,0,17,7,11,0,0,8,98,0,0,8,34,0,0,9,165,0,0,8,2,0,0,8,130,0,0,8,66,0,0,9,229,0,16,7,7,0,0,8,90,0,0,8,26,0,0,9,149,0,20,7,67,0,0,8,122,0,0,8,58,0,0,9,213,0,18,7,19,0,0,8,106,0,0,8,42,0,0,9,181,0,0,8,10,0,0,8,138,0,0,8,74,0,0,9,245,0,16,7,5,0,0,8,86,0,0,8,22,0,64,8,0,0,19,7,51,0,0,8,118,0,0,8,54,0,0,9,205,0,17,7,15,0,0,8,102,0,0,8,38,0,0,9,173,0,0,8,6,0,0,8,134,0,0,8,70,0,0,9,237,0,16,7,9,0,0,8,94,0,0,8,30,0,0,9,157,0,20,7,99,0,0,8,126,0,0,8,62,0,0,9,221,0,18,7,27,0,0,8,110,0,0,8,46,0,0,9,189,0,0,8,14,0,0,8,142,0,0,8,78,0,0,9,253,0,96,7,0,0,0,8,81,0,0,8,17,0,21,8,131,0,18,7,31,0,0,8,113,0,0,8,49,0,0,9,195,0,16,7,10,0,0,8,97,0,0,8,33,0,0,9,163,0,0,8,1,0,0,8,129,0,0,8,65,0,0,9,227,0,16,7,6,0,0,8,89,0,0,8,25,0,0,9,147,0,19,7,59,0,0,8,121,0,0,8,57,0,0,9,211,0,17,7,17,0,0,8,105,0,0,8,41,0,0,9,179,0,0,8,9,0,0,8,137,0,0,8,73,0,0,9,243,0,16,7,4,0,0,8,85,0,0,8,21,0,16,8,2,1,19,7,43,0,0,8,117,0,0,8,53,0,0,9,203,0,17,7,13,0,0,8,101,0,0,8,37,0,0,9,171,0,0,8,5,0,0,8,133,0,0,8,69,0,0,9,235,0,16,7,8,0,0,8,93,0,0,8,29,0,0,9,155,0,20,7,83,0,0,8,125,0,0,8,61,0,0,9,219,0,18,7,23,0,0,8,109,0,0,8,45,0,0,9,187,0,0,8,13,0,0,8,141,0,0,8,77,0,0,9,251,0,16,7,3,0,0,8,83,0,0,8,19,0,21,8,195,0,19,7,35,0,0,8,115,0,0,8,51,0,0,9,199,0,17,7,11,0,0,8,99,0,0,8,35,0,0,9,167,0,0,8,3,0,0,8,131,0,0,8,67,0,0,9,231,0,16,7,7,0,0,8,91,0,0,8,27,0,0,9,151,0,20,7,67,0,0,8,123,0,0,8,59,0,0,9,215,0,18,7,19,0,0,8,107,0,0,8,43,0,0,9,183,0,0,8,11,0,0,8,139,0,0,8,75,0,0,9,247,0,16,7,5,0,0,8,87,0,0,8,23,0,64,8,0,0,19,7,51,0,0,8,119,0,0,8,55,0,0,9,207,0,17,7,15,0,0,8,103,0,0,8,39,0,0,9,175,0,0,8,7,0,0,8,135,0,0,8,71,0,0,9,239,0,16,7,9,0,0,8,95,0,0,8,31,0,0,9,159,0,20,7,99,0,0,8,127,0,0,8,63,0,0,9,223,0,18,7,27,0,0,8,111,0,0,8,47,0,0,9,191,0,0,8,15,0,0,8,143,0,0,8,79,0,0,9,255,0,16,5,1,0,23,5,1,1,19,5,17,0,27,5,1,16,17,5,5,0,25,5,1,4,21,5,65,0,29,5,1,64,16,5,3,0,24,5,1,2,20,5,33,0,28,5,1,32,18,5,9,0,26,5,1,8,22,5,129,0,64,5,0,0,16,5,2,0,23,5,129,1,19,5,25,0,27,5,1,24,17,5,7,0,25,5,1,6,21,5,97,0,29,5,1,96,16,5,4,0,24,5,1,3,20,5,49,0,28,5,1,48,18,5,13,0,26,5,1,12,22,5,193,0,64,5,0,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,13,0,15,0,17,0,19,0,23,0,27,0,31,0,35,0,43,0,51,0,59,0,67,0,83,0,99,0,115,0,131,0,163,0,195,0,227,0,2,1,0,0,0,0,0,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,17,0,17,0,17,0,17,0,18,0,18,0,18,0,18,0,19,0,19,0,19,0,19,0,20,0,20,0,20,0,20,0,21,0,21,0,21,0,21,0,16,0,72,0,78,0,0,0,1,0,2,0,3,0,4,0,5,0,7,0,9,0,13,0,17,0,25,0,33,0,49,0,65,0,97,0,129,0,193,0,1,1,129,1,1,2,1,3,1,4,1,6,1,8,1,12,1,16,1,24,1,32,1,48,1,64,1,96,0,0,0,0,16,0,16,0,16,0,16,0,17,0,17,0,18,0,18,0,19,0,19,0,20,0,20,0,21,0,21,0,22,0,22,0,23,0,23,0,24,0,24,0,25,0,25,0,26,0,26,0,27,0,27,0,28,0,28,0,29,0,29,0,64,0,64,0,0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,16,17,18,18,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,1,2,3,4,5,6,7,8,8,9,9,10,10,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,40,109,4,0,32,114,4,0,1,1,0,0,30,1,0,0,15,0,0,0,0,0,0,0,168,113,4,0,16,115,4,0,0,0,0,0,30,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,24,116,4,0,0,0,0,0,19,0,0,0,7,0,0,0,0,0,0,0,12,0,8,0,140,0,8,0,76,0,8,0,204,0,8,0,44,0,8,0,172,0,8,0,108,0,8,0,236,0,8,0,28,0,8,0,156,0,8,0,92,0,8,0,220,0,8,0,60,0,8,0,188,0,8,0,124,0,8,0,252,0,8,0,2,0,8,0,130,0,8,0,66,0,8,0,194,0,8,0,34,0,8,0,162,0,8,0,98,0,8,0,226,0,8,0,18,0,8,0,146,0,8,0,82,0,8,0,210,0,8,0,50,0,8,0,178,0,8,0,114,0,8,0,242,0,8,0,10,0,8,0,138,0,8,0,74,0,8,0,202,0,8,0,42,0,8,0,170,0,8,0,106,0,8,0,234,0,8,0,26,0,8,0,154,0,8,0,90,0,8,0,218,0,8,0,58,0,8,0,186,0,8,0,122,0,8,0,250,0,8,0,6,0,8,0,134,0,8,0,70,0,8,0,198,0,8,0,38,0,8,0,166,0,8,0,102,0,8,0,230,0,8,0,22,0,8,0,150,0,8,0,86,0,8,0,214,0,8,0,54,0,8,0,182,0,8,0,118,0,8,0,246,0,8,0,14,0,8,0,142,0,8,0,78,0,8,0,206,0,8,0,46,0,8,0,174,0,8,0,110,0,8,0,238,0,8,0,30,0,8,0,158,0,8,0,94,0,8,0,222,0,8,0,62,0,8,0,190,0,8,0,126,0,8,0,254,0,8,0,1,0,8,0,129,0,8,0,65,0,8,0,193,0,8,0,33,0,8,0,161,0,8,0,97,0,8,0,225,0,8,0,17,0,8,0,145,0,8,0,81,0,8,0,209,0,8,0,49,0,8,0,177,0,8,0,113,0,8,0,241,0,8,0,9,0,8,0,137,0,8,0,73,0,8,0,201,0,8,0,41,0,8,0,169,0,8,0,105,0,8,0,233,0,8,0,25,0,8,0,153,0,8,0,89,0,8,0,217,0,8,0,57,0,8,0,185,0,8,0,121,0,8,0,249,0,8,0,5,0,8,0,133,0,8,0,69,0,8,0,197,0,8,0,37,0,8,0,165,0,8,0,101,0,8,0,229,0,8,0,21,0,8,0,149,0,8,0,85,0,8,0,213,0,8,0,53,0,8,0,181,0,8,0,117,0,8,0,245,0,8,0,13,0,8,0,141,0,8,0,77,0,8,0,205,0,8,0,45,0,8,0,173,0,8,0,109,0,8,0,237,0,8,0,29,0,8,0,157,0,8,0,93,0,8,0,221,0,8,0,61,0,8,0,189,0,8,0,125,0,8,0,253,0,8,0,19,0,9,0,19,1,9,0,147,0,9,0,147,1,9,0,83,0,9,0,83,1,9,0,211,0,9,0,211,1,9,0,51,0,9,0,51,1,9,0,179,0,9,0,179,1,9,0,115,0,9,0,115,1,9,0,243,0,9,0,243,1,9,0,11,0,9,0,11,1,9,0,139,0,9,0,139,1,9,0,75,0,9,0,75,1,9,0,203,0,9,0,203,1,9,0,43,0,9,0,43,1,9,0,171,0,9,0,171,1,9,0,107,0,9,0,107,1,9,0,235,0,9,0,235,1,9,0,27,0,9,0,27,1,9,0,155,0,9,0,155,1,9,0,91,0,9,0,91,1,9,0,219,0,9,0,219,1,9,0,59,0,9,0,59,1,9,0,187,0,9,0,187,1,9,0,123,0,9,0,123,1,9,0,251,0,9,0,251,1,9,0,7,0,9,0,7,1,9,0,135,0,9,0,135,1,9,0,71,0,9,0,71,1,9,0,199,0,9,0,199,1,9,0,39,0,9,0,39,1,9,0,167,0,9,0,167,1,9,0,103,0,9,0,103,1,9,0,231,0,9,0,231,1,9,0,23,0,9,0,23,1,9,0,151,0,9,0,151,1,9,0,87,0,9,0,87,1,9,0,215,0,9,0,215,1,9,0,55,0,9,0,55,1,9,0,183,0,9,0,183,1,9,0,119,0,9,0,119,1,9,0,247,0,9,0,247,1,9,0,15,0,9,0,15,1,9,0,143,0,9,0,143,1,9,0,79,0,9,0,79,1,9,0,207,0,9,0,207,1,9,0,47,0,9,0,47,1,9,0,175,0,9,0,175,1,9,0,111,0,9,0,111,1,9,0,239,0,9,0,239,1,9,0,31,0,9,0,31,1,9,0,159,0,9,0,159,1,9,0,95,0,9,0,95,1,9,0,223,0,9,0,223,1,9,0,63,0,9,0,63,1,9,0,191,0,9,0,191,1,9,0,127,0,9,0,127,1,9,0,255,0,9,0,255,1,9,0,0,0,7,0,64,0,7,0,32,0,7,0,96,0,7,0,16,0,7,0,80,0,7,0,48,0,7,0,112,0,7,0,8,0,7,0,72,0,7,0,40,0,7,0,104,0,7,0,24,0,7,0,88,0,7,0,56,0,7,0,120,0,7,0,4,0,7,0,68,0,7,0,36,0,7,0,100,0,7,0,20,0,7,0,84,0,7,0,52,0,7,0,116,0,7,0,3,0,8,0,131,0,8,0,67,0,8,0,195,0,8,0,35,0,8,0,163,0,8,0,99,0,8,0,227,0,8,0,0,0,5,0,16,0,5,0,8,0,5,0,24,0,5,0,4,0,5,0,20,0,5,0,12,0,5,0,28,0,5,0,2,0,5,0,18,0,5,0,10,0,5,0,26,0,5,0,6,0,5,0,22,0,5,0,14,0,5,0,30,0,5,0,1,0,5,0,17,0,5,0,9,0,5,0,25,0,5,0,5,0,5,0,21,0,5,0,13,0,5,0,29,0,5,0,3,0,5,0,19,0,5,0,11,0,5,0,27,0,5,0,7,0,5,0,23,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,10,0,0,0,12,0,0,0,14,0,0,0,16,0,0,0,20,0,0,0,24,0,0,0,28,0,0,0,32,0,0,0,40,0,0,0,48,0,0,0,56,0,0,0,64,0,0,0,80,0,0,0,96,0,0,0,112,0,0,0,128,0,0,0,160,0,0,0,192,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,6,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,24,0,0,0,32,0,0,0,48,0,0,0,64,0,0,0,96,0,0,0,128,0,0,0,192,0,0,0,0,1,0,0,128,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,6,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,24,0,0,0,32,0,0,0,48,0,0,0,64,0,0,0,96,0,0,16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,7,0,0,0,0,0,0,0,110,101,101,100,32,100,105,99,116,105,111,110,97,114,121,0,115,116,114,101,97,109,32,101,110,100,0,0,0,0,0,0,102,105,108,101,32,101,114,114,111,114,0,0,0,0,0,0,115,116,114,101,97,109,32,101,114,114,111,114,0,0,0,0,100,97,116,97,32,101,114,114,111,114,0,0,0,0,0,0,105,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,0,0,0,0,0,98,117,102,102,101,114,32,101,114,114,111,114,0,0,0,0,105,110,99,111,109,112,97,116,105,98,108,101,32,118,101,114,115,105,111,110,0,0,0,0,104,116,4,0,120,116,4,0,72,112,5,0,136,116,4,0,152,116,4,0,168,116,4,0,184,116,4,0,208,116,4,0,224,116,4,0,72,112,5,0,73,110,118,97,108,105,100,32,100,97,116,97,32,99,111,117,110,116,32,102,111,114,32,116,97,103,32,39,37,115,39,0,97,108,105,99,101,98,108,117,101,0,0,0,0,0,0,0,97,110,116,105,113,117,101,119,104,105,116,101,0,0,0,0,97,113,117,97,109,97,114,105,110,101,0,0,0,0,0,0,97,122,117,114,101,0,0,0,98,101,105,103,101,0,0,0,98,105,115,113,117,101,0,0,98,108,97,99,107,0,0,0,98,108,97,110,99,104,101,100,97,108,109,111,110,100,0,0,98,108,117,101,0,0,0,0,98,108,117,101,118,105,111,108,101,116,0,0,0,0,0,0,98,114,111,119,110,0,0,0,98,117,114,108,121,119,111,111,100,0,0,0,0,0,0,0,99,97,100,101,116,98,108,117,101,0,0,0,0,0,0,0,99,104,97,114,116,114,101,117,115,101,0,0,0,0,0,0,99,104,111,99,111,108,97,116,101,0,0,0,0,0,0,0,99,111,114,97,108,0,0,0,99,111,114,110,102,108,111,119,101,114,98,108,117,101,0,0,99,111,114,110,115,105,108,107,0,0,0,0,0,0,0,0,99,121,97,110,0,0,0,0,100,97,114,107,98,108,117,101,0,0,0,0,0,0,0,0,100,97,114,107,99,121,97,110,0,0,0,0,0,0,0,0,100,97,114,107,103,111,108,100,101,110,114,111,100,0,0,0,100,97,114,107,103,114,101,101,110,0,0,0,0,0,0,0,100,97,114,107,107,104,97,107,105,0,0,0,0,0,0,0,100,97,114,107,109,97,103,101,110,116,97,0,0,0,0,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,0,0,100,97,114,107,111,114,97,110,103,101,0,0,0,0,0,0,100,97,114,107,111,114,99,104,105,100,0,0,0,0,0,0,100,97,114,107,114,101,100,0,100,97,114,107,115,97,108,109,111,110,0,0,0,0,0,0,100,97,114,107,115,101,97,103,114,101,101,110,0,0,0,0,100,97,114,107,115,108,97,116,101,98,108,117,101,0,0,0,100,97,114,107,115,108,97,116,101,103,114,97,121,0,0,0,100,97,114,107,115,108,97,116,101,103,114,101,121,0,0,0,100,97,114,107,116,117,114,113,117,111,105,115,101,0,0,0,100,97,114,107,118,105,111,108,101,116,0,0,0,0,0,0,100,101,101,112,112,105,110,107,0,0,0,0,0,0,0,0,100,101,101,112,115,107,121,98,108,117,101,0,0,0,0,0,100,105,109,103,114,97,121,0,100,105,109,103,114,101,121,0,100,111,100,103,101,114,98,108,117,101,0,0,0,0,0,0,102,105,114,101,98,114,105,99,107,0,0,0,0,0,0,0,102,108,111,114,97,108,119,104,105,116,101,0,0,0,0,0,102,111,114,101,115,116,103,114,101,101,110,0,0,0,0,0,103,97,105,110,115,98,111,114,111,0,0,0,0,0,0,0,103,104,111,115,116,119,104,105,116,101,0,0,0,0,0,0,103,111,108,100,0,0,0,0,103,111,108,100,101,110,114,111,100,0,0,0,0,0,0,0,103,114,97,121,0,0,0,0,103,114,101,101,110,0,0,0,103,114,101,101,110,121,101,108,108,111,119,0,0,0,0,0,103,114,101,121,0,0,0,0,104,111,110,101,121,100,101,119,0,0,0,0,0,0,0,0,104,111,116,112,105,110,107,0,105,110,100,105,97,110,114,101,100,0,0,0,0,0,0,0,105,118,111,114,121,0,0,0,107,104,97,107,105,0,0,0,108,97,118,101,110,100,101,114,0,0,0,0,0,0,0,0,108,97,118,101,110,100,101,114,98,108,117,115,104,0,0,0,108,97,119,110,103,114,101,101,110,0,0,0,0,0,0,0,108,101,109,111,110,99,104,105,102,102,111,110,0,0,0,0,108,105,103,104,116,98,108,117,101,0,0,0,0,0,0,0,108,105,103,104,116,99,111,114,97,108,0,0,0,0,0,0,108,105,103,104,116,99,121,97,110,0,0,0,0,0,0,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,121,101,108,108,111,119,0,0,0,0,108,105,103,104,116,103,114,97,121,0,0,0,0,0,0,0,108,105,103,104,116,103,114,101,101,110,0,0,0,0,0,0,108,105,103,104,116,103,114,101,121,0,0,0,0,0,0,0,108,105,103,104,116,112,105,110,107,0,0,0,0,0,0,0,108,105,103,104,116,115,97,108,109,111,110,0,0,0,0,0,108,105,103,104,116,115,101,97,103,114,101,101,110,0,0,0,108,105,103,104,116,115,107,121,98,108,117,101,0,0,0,0,108,105,103,104,116,115,108,97,116,101,103,114,97,121,0,0,108,105,103,104,116,115,108,97,116,101,103,114,101,121,0,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,0,0,108,105,103,104,116,121,101,108,108,111,119,0,0,0,0,0,108,105,109,101,103,114,101,101,110,0,0,0,0,0,0,0,108,105,110,101,110,0,0,0,109,97,103,101,110,116,97,0,109,97,114,111,111,110,0,0,109,101,100,105,117,109,97,113,117,97,109,97,114,105,110,101,0,0,0,0,0,0,0,0,109,101,100,105,117,109,98,108,117,101,0,0,0,0,0,0,109,101,100,105,117,109,111,114,99,104,105,100,0,0,0,0,109,101,100,105,117,109,112,117,114,112,108,101,0,0,0,0,109,101,100,105,117,109,115,101,97,103,114,101,101,110,0,0,109,101,100,105,117,109,115,108,97,116,101,98,108,117,101,0,109,101,100,105,117,109,115,112,114,105,110,103,103,114,101,101,110,0,0,0,0,0,0,0,109,101,100,105,117,109,116,117,114,113,117,111,105,115,101,0,109,101,100,105,117,109,118,105,111,108,101,116,114,101,100,0,109,105,100,110,105,103,104,116,98,108,117,101,0,0,0,0,109,105,110,116,99,114,101,97,109,0,0,0,0,0,0,0,109,105,115,116,121,114,111,115,101,0,0,0,0,0,0,0,109,111,99,99,97,115,105,110,0,0,0,0,0,0,0,0,110,97,118,97,106,111,119,104,105,116,101,0,0,0,0,0,110,97,118,121,0,0,0,0,111,108,100,108,97,99,101,0,111,108,105,118,101,100,114,97,98,0,0,0,0,0,0,0,111,114,97,110,103,101,0,0,111,114,97,110,103,101,114,101,100,0,0,0,0,0,0,0,111,114,99,104,105,100,0,0,112,97,108,101,103,111,108,100,101,110,114,111,100,0,0,0,112,97,108,101,103,114,101,101,110,0,0,0,0,0,0,0,112,97,108,101,116,117,114,113,117,111,105,115,101,0,0,0,112,97,108,101,118,105,111,108,101,116,114,101,100,0,0,0,112,97,112,97,121,97,119,104,105,112,0,0,0,0,0,0,112,101,97,99,104,112,117,102,102,0,0,0,0,0,0,0,112,101,114,117,0,0,0,0,112,105,110,107,0,0,0,0,112,108,117,109,0,0,0,0,112,111,119,100,101,114,98,108,117,101,0,0,0,0,0,0,112,117,114,112,108,101,0,0,114,101,100,0,0,0,0,0,114,111,115,121,98,114,111,119,110,0,0,0,0,0,0,0,114,111,121,97,108,98,108,117,101,0,0,0,0,0,0,0,115,97,100,100,108,101,98,114,111,119,110,0,0,0,0,0,115,97,108,109,111,110,0,0,115,97,110,100,121,98,114,111,119,110,0,0,0,0,0,0,115,101,97,103,114,101,101,110,0,0,0,0,0,0,0,0,115,101,97,115,104,101,108,108,0,0,0,0,0,0,0,0,115,105,101,110,110,97,0,0,115,107,121,98,108,117,101,0,115,108,97,116,101,98,108,117,101,0,0,0,0,0,0,0,115,108,97,116,101,103,114,97,121,0,0,0,0,0,0,0,115,108,97,116,101,103,114,101,121,0,0,0,0,0,0,0,115,110,111,119,0,0,0,0,115,112,114,105,110,103,103,114,101,101,110,0,0,0,0,0,115,116,101,101,108,98,108,117,101,0,0,0,0,0,0,0,116,97,110,0,0,0,0,0,116,104,105,115,116,108,101,0,116,111,109,97,116,111,0,0,116,117,114,113,117,111,105,115,101,0,0,0,0,0,0,0,118,105,111,108,101,116,0,0,119,104,101,97,116,0,0,0,119,104,105,116,101,0,0,0,119,104,105,116,101,115,109,111,107,101,0,0,0,0,0,0,121,101,108,108,111,119,0,0,121,101,108,108,111,119,103,114,101,101,110,0,0,0,0,0,97,110,116,105,113,117,101,119,104,105,116,101,49,0,0,0,97,110,116,105,113,117,101,119,104,105,116,101,50,0,0,0,97,110,116,105,113,117,101,119,104,105,116,101,51,0,0,0,97,110,116,105,113,117,101,119,104,105,116,101,52,0,0,0,97,113,117,97,109,97,114,105,110,101,49,0,0,0,0,0,97,113,117,97,109,97,114,105,110,101,50,0,0,0,0,0,97,113,117,97,109,97,114,105,110,101,51,0,0,0,0,0,97,113,117,97,109,97,114,105,110,101,52,0,0,0,0,0,97,122,117,114,101,49,0,0,97,122,117,114,101,50,0,0,97,122,117,114,101,51,0,0,97,122,117,114,101,52,0,0,98,105,115,113,117,101,49,0,98,105,115,113,117,101,50,0,98,105,115,113,117,101,51,0,98,105,115,113,117,101,52,0,98,108,117,101,49,0,0,0,98,108,117,101,50,0,0,0,98,108,117,101,51,0,0,0,98,108,117,101,52,0,0,0,98,114,111,119,110,49,0,0,98,114,111,119,110,50,0,0,98,114,111,119,110,51,0,0,98,114,111,119,110,52,0,0,98,117,114,108,121,119,111,111,100,49,0,0,0,0,0,0,98,117,114,108,121,119,111,111,100,50,0,0,0,0,0,0,98,117,114,108,121,119,111,111,100,51,0,0,0,0,0,0,98,117,114,108,121,119,111,111,100,52,0,0,0,0,0,0,99,97,100,101,116,98,108,117,101,49,0,0,0,0,0,0,99,97,100,101,116,98,108,117,101,50,0,0,0,0,0,0,99,97,100,101,116,98,108,117,101,51,0,0,0,0,0,0,99,97,100,101,116,98,108,117,101,52,0,0,0,0,0,0,99,104,97,114,116,114,101,117,115,101,49,0,0,0,0,0,99,104,97,114,116,114,101,117,115,101,50,0,0,0,0,0,99,104,97,114,116,114,101,117,115,101,51,0,0,0,0,0,99,104,97,114,116,114,101,117,115,101,52,0,0,0,0,0,99,104,111,99,111,108,97,116,101,49,0,0,0,0,0,0,99,104,111,99,111,108,97,116,101,50,0,0,0,0,0,0,99,104,111,99,111,108,97,116,101,51,0,0,0,0,0,0,99,104,111,99,111,108,97,116,101,52,0,0,0,0,0,0,99,111,114,97,108,49,0,0,99,111,114,97,108,50,0,0,99,111,114,97,108,51,0,0,99,111,114,97,108,52,0,0,99,111,114,110,115,105,108,107,49,0,0,0,0,0,0,0,99,111,114,110,115,105,108,107,50,0,0,0,0,0,0,0,99,111,114,110,115,105,108,107,51,0,0,0,0,0,0,0,99,111,114,110,115,105,108,107,52,0,0,0,0,0,0,0,99,121,97,110,49,0,0,0,99,121,97,110,50,0,0,0,99,121,97,110,51,0,0,0,99,121,97,110,52,0,0,0,100,97,114,107,103,111,108,100,101,110,114,111,100,49,0,0,100,97,114,107,103,111,108,100,101,110,114,111,100,50,0,0,100,97,114,107,103,111,108,100,101,110,114,111,100,51,0,0,100,97,114,107,103,111,108,100,101,110,114,111,100,52,0,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,49,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,50,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,51,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,52,0,100,97,114,107,111,114,97,110,103,101,49,0,0,0,0,0,100,97,114,107,111,114,97,110,103,101,50,0,0,0,0,0,100,97,114,107,111,114,97,110,103,101,51,0,0,0,0,0,100,97,114,107,111,114,97,110,103,101,52,0,0,0,0,0,100,97,114,107,111,114,99,104,105,100,49,0,0,0,0,0,100,97,114,107,111,114,99,104,105,100,50,0,0,0,0,0,100,97,114,107,111,114,99,104,105,100,51,0,0,0,0,0,100,97,114,107,111,114,99,104,105,100,52,0,0,0,0,0,100,97,114,107,115,101,97,103,114,101,101,110,49,0,0,0,100,97,114,107,115,101,97,103,114,101,101,110,50,0,0,0,100,97,114,107,115,101,97,103,114,101,101,110,51,0,0,0,100,97,114,107,115,101,97,103,114,101,101,110,52,0,0,0,100,97,114,107,115,108,97,116,101,103,114,97,121,49,0,0,100,97,114,107,115,108,97,116,101,103,114,97,121,50,0,0,100,97,114,107,115,108,97,116,101,103,114,97,121,51,0,0,100,97,114,107,115,108,97,116,101,103,114,97,121,52,0,0,100,101,101,112,112,105,110,107,49,0,0,0,0,0,0,0,100,101,101,112,112,105,110,107,50,0,0,0,0,0,0,0,100,101,101,112,112,105,110,107,51,0,0,0,0,0,0,0,100,101,101,112,112,105,110,107,52,0,0,0,0,0,0,0,100,101,101,112,115,107,121,98,108,117,101,49,0,0,0,0,100,101,101,112,115,107,121,98,108,117,101,50,0,0,0,0,100,101,101,112,115,107,121,98,108,117,101,51,0,0,0,0,100,101,101,112,115,107,121,98,108,117,101,52,0,0,0,0,100,111,100,103,101,114,98,108,117,101,49,0,0,0,0,0,100,111,100,103,101,114,98,108,117,101,50,0,0,0,0,0,100,111,100,103,101,114,98,108,117,101,51,0,0,0,0,0,100,111,100,103,101,114,98,108,117,101,52,0,0,0,0,0,102,105,114,101,98,114,105,99,107,49,0,0,0,0,0,0,102,105,114,101,98,114,105,99,107,50,0,0,0,0,0,0,102,105,114,101,98,114,105,99,107,51,0,0,0,0,0,0,102,105,114,101,98,114,105,99,107,52,0,0,0,0,0,0,103,111,108,100,49,0,0,0,103,111,108,100,50,0,0,0,103,111,108,100,51,0,0,0,103,111,108,100,52,0,0,0,103,111,108,100,101,110,114,111,100,49,0,0,0,0,0,0,103,111,108,100,101,110,114,111,100,50,0,0,0,0,0,0,103,111,108,100,101,110,114,111,100,51,0,0,0,0,0,0,103,111,108,100,101,110,114,111,100,52,0,0,0,0,0,0,103,114,101,101,110,49,0,0,103,114,101,101,110,50,0,0,103,114,101,101,110,51,0,0,103,114,101,101,110,52,0,0,104,111,110,101,121,100,101,119,49,0,0,0,0,0,0,0,104,111,110,101,121,100,101,119,50,0,0,0,0,0,0,0,104,111,110,101,121,100,101,119,51,0,0,0,0,0,0,0,104,111,110,101,121,100,101,119,52,0,0,0,0,0,0,0,104,111,116,112,105,110,107,49,0,0,0,0,0,0,0,0,104,111,116,112,105,110,107,50,0,0,0,0,0,0,0,0,104,111,116,112,105,110,107,51,0,0,0,0,0,0,0,0,104,111,116,112,105,110,107,52,0,0,0,0,0,0,0,0,105,110,100,105,97,110,114,101,100,49,0,0,0,0,0,0,105,110,100,105,97,110,114,101,100,50,0,0,0,0,0,0,105,110,100,105,97,110,114,101,100,51,0,0,0,0,0,0,105,110,100,105,97,110,114,101,100,52,0,0,0,0,0,0,105,118,111,114,121,49,0,0,105,118,111,114,121,50,0,0,105,118,111,114,121,51,0,0,105,118,111,114,121,52,0,0,107,104,97,107,105,49,0,0,107,104,97,107,105,50,0,0,107,104,97,107,105,51,0,0,107,104,97,107,105,52,0,0,108,97,118,101,110,100,101,114,98,108,117,115,104,49,0,0,108,97,118,101,110,100,101,114,98,108,117,115,104,50,0,0,108,97,118,101,110,100,101,114,98,108,117,115,104,51,0,0,108,97,118,101,110,100,101,114,98,108,117,115,104,52,0,0,108,101,109,111,110,99,104,105,102,102,111,110,49,0,0,0,108,101,109,111,110,99,104,105,102,102,111,110,50,0,0,0,108,101,109,111,110,99,104,105,102,102,111,110,51,0,0,0,108,101,109,111,110,99,104,105,102,102,111,110,52,0,0,0,108,105,103,104,116,98,108,117,101,49,0,0,0,0,0,0,108,105,103,104,116,98,108,117,101,50,0,0,0,0,0,0,108,105,103,104,116,98,108,117,101,51,0,0,0,0,0,0,108,105,103,104,116,98,108,117,101,52,0,0,0,0,0,0,108,105,103,104,116,99,121,97,110,49,0,0,0,0,0,0,108,105,103,104,116,99,121,97,110,50,0,0,0,0,0,0,108,105,103,104,116,99,121,97,110,51,0,0,0,0,0,0,108,105,103,104,116,99,121,97,110,52,0,0,0,0,0,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,0,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,49,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,50,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,51,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,52,0,108,105,103,104,116,112,105,110,107,49,0,0,0,0,0,0,108,105,103,104,116,112,105,110,107,50,0,0,0,0,0,0,108,105,103,104,116,112,105,110,107,51,0,0,0,0,0,0,108,105,103,104,116,112,105,110,107,52,0,0,0,0,0,0,108,105,103,104,116,115,97,108,109,111,110,49,0,0,0,0,108,105,103,104,116,115,97,108,109,111,110,50,0,0,0,0,108,105,103,104,116,115,97,108,109,111,110,51,0,0,0,0,108,105,103,104,116,115,97,108,109,111,110,52,0,0,0,0,108,105,103,104,116,115,107,121,98,108,117,101,49,0,0,0,108,105,103,104,116,115,107,121,98,108,117,101,50,0,0,0,108,105,103,104,116,115,107,121,98,108,117,101,51,0,0,0,108,105,103,104,116,115,107,121,98,108,117,101,52,0,0,0,108,105,103,104,116,115,108,97,116,101,98,108,117,101,0,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,49,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,50,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,51,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,52,0,108,105,103,104,116,121,101,108,108,111,119,49,0,0,0,0,108,105,103,104,116,121,101,108,108,111,119,50,0,0,0,0,108,105,103,104,116,121,101,108,108,111,119,51,0,0,0,0,108,105,103,104,116,121,101,108,108,111,119,52,0,0,0,0,109,97,103,101,110,116,97,49,0,0,0,0,0,0,0,0,109,97,103,101,110,116,97,50,0,0,0,0,0,0,0,0,109,97,103,101,110,116,97,51,0,0,0,0,0,0,0,0,109,97,103,101,110,116,97,52,0,0,0,0,0,0,0,0,109,97,114,111,111,110,49,0,109,97,114,111,111,110,50,0,109,97,114,111,111,110,51,0,109,97,114,111,111,110,52,0,109,101,100,105,117,109,111,114,99,104,105,100,49,0,0,0,109,101,100,105,117,109,111,114,99,104,105,100,50,0,0,0,109,101,100,105,117,109,111,114,99,104,105,100,51,0,0,0,109,101,100,105,117,109,111,114,99,104,105,100,52,0,0,0,109,101,100,105,117,109,112,117,114,112,108,101,49,0,0,0,109,101,100,105,117,109,112,117,114,112,108,101,50,0,0,0,109,101,100,105,117,109,112,117,114,112,108,101,51,0,0,0,109,101,100,105,117,109,112,117,114,112,108,101,52,0,0,0,109,105,115,116,121,114,111,115,101,49,0,0,0,0,0,0,109,105,115,116,121,114,111,115,101,50,0,0,0,0,0,0,109,105,115,116,121,114,111,115,101,51,0,0,0,0,0,0,109,105,115,116,121,114,111,115,101,52,0,0,0,0,0,0,110,97,118,97,106,111,119,104,105,116,101,49,0,0,0,0,110,97,118,97,106,111,119,104,105,116,101,50,0,0,0,0,110,97,118,97,106,111,119,104,105,116,101,51,0,0,0,0,110,97,118,97,106,111,119,104,105,116,101,52,0,0,0,0,110,97,118,121,98,108,117,101,0,0,0,0,0,0,0,0,111,108,105,118,101,100,114,97,98,49,0,0,0,0,0,0,111,108,105,118,101,100,114,97,98,50,0,0,0,0,0,0,111,108,105,118,101,100,114,97,98,51,0,0,0,0,0,0,111,108,105,118,101,100,114,97,98,52,0,0,0,0,0,0,111,114,97,110,103,101,49,0,111,114,97,110,103,101,50,0,111,114,97,110,103,101,51,0,111,114,97,110,103,101,52,0,111,114,97,110,103,101,114,101,100,49,0,0,0,0,0,0,111,114,97,110,103,101,114,101,100,50,0,0,0,0,0,0,111,114,97,110,103,101,114,101,100,51,0,0,0,0,0,0,111,114,97,110,103,101,114,101,100,52,0,0,0,0,0,0,111,114,99,104,105,100,49,0,111,114,99,104,105,100,50,0,111,114,99,104,105,100,51,0,111,114,99,104,105,100,52,0,112,97,108,101,103,114,101,101,110,49,0,0,0,0,0,0,112,97,108,101,103,114,101,101],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+286720);allocate([110,50,0,0,0,0,0,0,112,97,108,101,103,114,101,101,110,51,0,0,0,0,0,0,112,97,108,101,103,114,101,101,110,52,0,0,0,0,0,0,112,97,108,101,116,117,114,113,117,111,105,115,101,49,0,0,112,97,108,101,116,117,114,113,117,111,105,115,101,50,0,0,112,97,108,101,116,117,114,113,117,111,105,115,101,51,0,0,112,97,108,101,116,117,114,113,117,111,105,115,101,52,0,0,112,97,108,101,118,105,111,108,101,116,114,101,100,49,0,0,112,97,108,101,118,105,111,108,101,116,114,101,100,50,0,0,112,97,108,101,118,105,111,108,101,116,114,101,100,51,0,0,112,97,108,101,118,105,111,108,101,116,114,101,100,52,0,0,112,101,97,99,104,112,117,102,102,49,0,0,0,0,0,0,112,101,97,99,104,112,117,102,102,50,0,0,0,0,0,0,112,101,97,99,104,112,117,102,102,51,0,0,0,0,0,0,112,101,97,99,104,112,117,102,102,52,0,0,0,0,0,0,112,105,110,107,49,0,0,0,112,105,110,107,50,0,0,0,112,105,110,107,51,0,0,0,112,105,110,107,52,0,0,0,112,108,117,109,49,0,0,0,112,108,117,109,50,0,0,0,112,108,117,109,51,0,0,0,112,108,117,109,52,0,0,0,112,117,114,112,108,101,49,0,112,117,114,112,108,101,50,0,112,117,114,112,108,101,51,0,112,117,114,112,108,101,52,0,114,101,100,49,0,0,0,0,114,101,100,50,0,0,0,0,114,101,100,51,0,0,0,0,114,101,100,52,0,0,0,0,114,111,115,121,98,114,111,119,110,49,0,0,0,0,0,0,114,111,115,121,98,114,111,119,110,50,0,0,0,0,0,0,114,111,115,121,98,114,111,119,110,51,0,0,0,0,0,0,114,111,115,121,98,114,111,119,110,52,0,0,0,0,0,0,114,111,121,97,108,98,108,117,101,49,0,0,0,0,0,0,114,111,121,97,108,98,108,117,101,50,0,0,0,0,0,0,114,111,121,97,108,98,108,117,101,51,0,0,0,0,0,0,114,111,121,97,108,98,108,117,101,52,0,0,0,0,0,0,115,97,108,109,111,110,49,0,115,97,108,109,111,110,50,0,115,97,108,109,111,110,51,0,115,97,108,109,111,110,52,0,115,101,97,103,114,101,101,110,49,0,0,0,0,0,0,0,115,101,97,103,114,101,101,110,50,0,0,0,0,0,0,0,115,101,97,103,114,101,101,110,51,0,0,0,0,0,0,0,115,101,97,103,114,101,101,110,52,0,0,0,0,0,0,0,115,101,97,115,104,101,108,108,49,0,0,0,0,0,0,0,115,101,97,115,104,101,108,108,50,0,0,0,0,0,0,0,115,101,97,115,104,101,108,108,51,0,0,0,0,0,0,0,115,101,97,115,104,101,108,108,52,0,0,0,0,0,0,0,115,105,101,110,110,97,49,0,115,105,101,110,110,97,50,0,115,105,101,110,110,97,51,0,115,105,101,110,110,97,52,0,115,107,121,98,108,117,101,49,0,0,0,0,0,0,0,0,115,107,121,98,108,117,101,50,0,0,0,0,0,0,0,0,115,107,121,98,108,117,101,51,0,0,0,0,0,0,0,0,115,107,121,98,108,117,101,52,0,0,0,0,0,0,0,0,115,108,97,116,101,98,108,117,101,49,0,0,0,0,0,0,115,108,97,116,101,98,108,117,101,50,0,0,0,0,0,0,115,108,97,116,101,98,108,117,101,51,0,0,0,0,0,0,115,108,97,116,101,98,108,117,101,52,0,0,0,0,0,0,115,108,97,116,101,103,114,97,121,49,0,0,0,0,0,0,115,108,97,116,101,103,114,97,121,50,0,0,0,0,0,0,115,108,97,116,101,103,114,97,121,51,0,0,0,0,0,0,115,108,97,116,101,103,114,97,121,52,0,0,0,0,0,0,115,110,111,119,49,0,0,0,115,110,111,119,50,0,0,0,115,110,111,119,51,0,0,0,115,110,111,119,52,0,0,0,115,112,114,105,110,103,103,114,101,101,110,49,0,0,0,0,115,112,114,105,110,103,103,114,101,101,110,50,0,0,0,0,115,112,114,105,110,103,103,114,101,101,110,51,0,0,0,0,115,112,114,105,110,103,103,114,101,101,110,52,0,0,0,0,115,116,101,101,108,98,108,117,101,49,0,0,0,0,0,0,115,116,101,101,108,98,108,117,101,50,0,0,0,0,0,0,115,116,101,101,108,98,108,117,101,51,0,0,0,0,0,0,115,116,101,101,108,98,108,117,101,52,0,0,0,0,0,0,116,97,110,49,0,0,0,0,116,97,110,50,0,0,0,0,116,97,110,51,0,0,0,0,116,97,110,52,0,0,0,0,116,104,105,115,116,108,101,49,0,0,0,0,0,0,0,0,116,104,105,115,116,108,101,50,0,0,0,0,0,0,0,0,116,104,105,115,116,108,101,51,0,0,0,0,0,0,0,0,116,104,105,115,116,108,101,52,0,0,0,0,0,0,0,0,116,111,109,97,116,111,49,0,116,111,109,97,116,111,50,0,116,111,109,97,116,111,51,0,116,111,109,97,116,111,52,0,116,117,114,113,117,111,105,115,101,49,0,0,0,0,0,0,116,117,114,113,117,111,105,115,101,50,0,0,0,0,0,0,116,117,114,113,117,111,105,115,101,51,0,0,0,0,0,0,116,117,114,113,117,111,105,115,101,52,0,0,0,0,0,0,118,105,111,108,101,116,114,101,100,0,0,0,0,0,0,0,118,105,111,108,101,116,114,101,100,49,0,0,0,0,0,0,118,105,111,108,101,116,114,101,100,50,0,0,0,0,0,0,118,105,111,108,101,116,114,101,100,51,0,0,0,0,0,0,118,105,111,108,101,116,114,101,100,52,0,0,0,0,0,0,119,104,101,97,116,49,0,0,119,104,101,97,116,50,0,0,119,104,101,97,116,51,0,0,119,104,101,97,116,52,0,0,121,101,108,108,111,119,49,0,121,101,108,108,111,119,50,0,121,101,108,108,111,119,51,0,121,101,108,108,111,119,52,0,64,117,4,0,240,248,255,0,80,117,4,0,250,235,215,0,160,124,4,0,255,239,219,0,176,124,4,0,238,223,204,0,192,124,4,0,205,192,176,0,208,124,4,0,139,131,120,0,96,117,4,0,127,255,212,0,224,124,4,0,127,255,212,0,240,124,4,0,118,238,198,0,0,125,4,0,102,205,170,0,16,125,4,0,69,139,116,0,112,117,4,0,240,255,255,0,32,125,4,0,240,255,255,0,40,125,4,0,224,238,238,0,48,125,4,0,193,205,205,0,56,125,4,0,131,139,139,0,120,117,4,0,245,245,220,0,128,117,4,0,255,228,196,0,64,125,4,0,255,228,196,0,72,125,4,0,238,213,183,0,80,125,4,0,205,183,158,0,88,125,4,0,139,125,107,0,136,117,4,0,0,0,0,0,144,117,4,0,255,235,205,0,160,117,4,0,0,0,255,0,96,125,4,0,0,0,255,0,104,125,4,0,0,0,238,0,112,125,4,0,0,0,205,0,120,125,4,0,0,0,139,0,168,117,4,0,138,43,226,0,184,117,4,0,165,42,42,0,128,125,4,0,255,64,64,0,136,125,4,0,238,59,59,0,144,125,4,0,205,51,51,0,152,125,4,0,139,35,35,0,192,117,4,0,222,184,135,0,160,125,4,0,255,211,155,0,176,125,4,0,238,197,145,0,192,125,4,0,205,170,125,0,208,125,4,0,139,115,85,0,208,117,4,0,95,158,160,0,224,125,4,0,152,245,255,0,240,125,4,0,142,229,238,0,0,126,4,0,122,197,205,0,16,126,4,0,83,134,139,0,224,117,4,0,127,255,0,0,32,126,4,0,127,255,0,0,48,126,4,0,118,238,0,0,64,126,4,0,102,205,0,0,80,126,4,0,69,139,0,0,240,117,4,0,210,105,30,0,96,126,4,0,255,127,36,0,112,126,4,0,238,118,33,0,128,126,4,0,205,102,29,0,144,126,4,0,139,69,19,0,0,118,4,0,255,127,80,0,160,126,4,0,255,114,86,0,168,126,4,0,238,106,80,0,176,126,4,0,205,91,69,0,184,126,4,0,139,62,47,0,8,118,4,0,100,149,237,0,24,118,4,0,255,248,220,0,192,126,4,0,255,248,220,0,208,126,4,0,238,232,205,0,224,126,4,0,205,200,177,0,240,126,4,0,139,136,120,0,40,118,4,0,0,255,255,0,0,127,4,0,0,255,255,0,8,127,4,0,0,238,238,0,16,127,4,0,0,205,205,0,24,127,4,0,0,139,139,0,48,118,4,0,0,0,139,0,64,118,4,0,0,139,139,0,80,118,4,0,184,134,11,0,32,127,4,0,255,185,15,0,48,127,4,0,238,173,14,0,64,127,4,0,205,149,12,0,80,127,4,0,139,101,8,0,96,118,4,0,0,100,0,0,112,118,4,0,189,183,107,0,128,118,4,0,139,0,139,0,144,118,4,0,85,107,47,0,96,127,4,0,202,255,112,0,112,127,4,0,188,238,104,0,128,127,4,0,162,205,90,0,144,127,4,0,110,139,61,0,160,118,4,0,255,140,0,0,160,127,4,0,255,127,0,0,176,127,4,0,238,118,0,0,192,127,4,0,205,102,0,0,208,127,4,0,139,69,0,0,176,118,4,0,153,50,204,0,224,127,4,0,191,62,255,0,240,127,4,0,178,58,238,0,0,128,4,0,154,50,205,0,16,128,4,0,104,34,139,0,192,118,4,0,139,0,0,0,200,118,4,0,233,150,122,0,216,118,4,0,143,188,143,0,32,128,4,0,193,255,193,0,48,128,4,0,180,238,180,0,64,128,4,0,155,205,155,0,80,128,4,0,105,139,105,0,232,118,4,0,72,61,139,0,248,118,4,0,47,79,79,0,96,128,4,0,151,255,255,0,112,128,4,0,141,238,238,0,128,128,4,0,121,205,205,0,144,128,4,0,82,139,139,0,8,119,4,0,47,79,79,0,24,119,4,0,0,206,209,0,40,119,4,0,148,0,211,0,56,119,4,0,255,20,147,0,160,128,4,0,255,20,147,0,176,128,4,0,238,18,137,0,192,128,4,0,205,16,118,0,208,128,4,0,139,10,80,0,72,119,4,0,0,191,255,0,224,128,4,0,0,191,255,0,240,128,4,0,0,178,238,0,0,129,4,0,0,154,205,0,16,129,4,0,0,104,139,0,88,119,4,0,105,105,105,0,96,119,4,0,105,105,105,0,104,119,4,0,30,144,255,0,32,129,4,0,30,144,255,0,48,129,4,0,28,134,238,0,64,129,4,0,24,116,205,0,80,129,4,0,16,78,139,0,120,119,4,0,178,34,34,0,96,129,4,0,255,48,48,0,112,129,4,0,238,44,44,0,128,129,4,0,205,38,38,0,144,129,4,0,139,26,26,0,136,119,4,0,255,250,240,0,152,119,4,0,176,48,96,0,168,119,4,0,220,220,220,0,184,119,4,0,248,248,255,0,200,119,4,0,255,215,0,0,160,129,4,0,255,215,0,0,168,129,4,0,238,201,0,0,176,129,4,0,205,173,0,0,184,129,4,0,139,117,0,0,208,119,4,0,218,165,32,0,192,129,4,0,255,193,37,0,208,129,4,0,238,180,34,0,224,129,4,0,205,155,29,0,240,129,4,0,139,105,20,0,224,119,4,0,190,190,190,0,232,119,4,0,0,255,0,0,0,130,4,0,0,255,0,0,8,130,4,0,0,238,0,0,16,130,4,0,0,205,0,0,24,130,4,0,0,139,0,0,240,119,4,0,173,255,47,0,0,120,4,0,190,190,190,0,8,120,4,0,240,255,240,0,32,130,4,0,240,255,240,0,48,130,4,0,224,238,224,0,64,130,4,0,193,205,193,0,80,130,4,0,131,139,131,0,24,120,4,0,255,105,180,0,96,130,4,0,255,110,180,0,112,130,4,0,238,106,167,0,128,130,4,0,205,96,144,0,144,130,4,0,139,58,98,0,32,120,4,0,205,92,92,0,160,130,4,0,255,106,106,0,176,130,4,0,238,99,99,0,192,130,4,0,205,85,85,0,208,130,4,0,139,58,58,0,48,120,4,0,255,255,240,0,224,130,4,0,255,255,240,0,232,130,4,0,238,238,224,0,240,130,4,0,205,205,193,0,248,130,4,0,139,139,131,0,56,120,4,0,240,230,140,0,0,131,4,0,255,246,143,0,8,131,4,0,238,230,133,0,16,131,4,0,205,198,115,0,24,131,4,0,139,134,78,0,64,120,4,0,230,230,250,0,80,120,4,0,255,240,245,0,32,131,4,0,255,240,245,0,48,131,4,0,238,224,229,0,64,131,4,0,205,193,197,0,80,131,4,0,139,131,134,0,96,120,4,0,124,252,0,0,112,120,4,0,255,250,205,0,96,131,4,0,255,250,205,0,112,131,4,0,238,233,191,0,128,131,4,0,205,201,165,0,144,131,4,0,139,137,112,0,128,120,4,0,173,216,230,0,160,131,4,0,191,239,255,0,176,131,4,0,178,223,238,0,192,131,4,0,154,192,205,0,208,131,4,0,104,131,139,0,144,120,4,0,240,128,128,0,160,120,4,0,224,255,255,0,224,131,4,0,224,255,255,0,240,131,4,0,209,238,238,0,0,132,4,0,180,205,205,0,16,132,4,0,122,139,139,0,32,132,4,0,238,221,130,0,48,132,4,0,255,236,139,0,64,132,4,0,238,220,130,0,80,132,4,0,205,190,112,0,96,132,4,0,139,129,76,0,176,120,4,0,250,250,210,0,200,120,4,0,211,211,211,0,216,120,4,0,144,238,144,0,232,120,4,0,211,211,211,0,248,120,4,0,255,182,193,0,112,132,4,0,255,174,185,0,128,132,4,0,238,162,173,0,144,132,4,0,205,140,149,0,160,132,4,0,139,95,101,0,8,121,4,0,255,160,122,0,176,132,4,0,255,160,122,0,192,132,4,0,238,149,114,0,208,132,4,0,205,129,98,0,224,132,4,0,139,87,66,0,24,121,4,0,32,178,170,0,40,121,4,0,135,206,250,0,240,132,4,0,176,226,255,0,0,133,4,0,164,211,238,0,16,133,4,0,141,182,205,0,32,133,4,0,96,123,139,0,48,133,4,0,132,112,255,0,56,121,4,0,119,136,153,0,72,121,4,0,119,136,153,0,88,121,4,0,176,196,222,0,64,133,4,0,202,225,255,0,80,133,4,0,188,210,238,0,96,133,4,0,162,181,205,0,112,133,4,0,110,123,139,0,104,121,4,0,255,255,224,0,128,133,4,0,255,255,224,0,144,133,4,0,238,238,209,0,160,133,4,0,205,205,180,0,176,133,4,0,139,139,122,0,120,121,4,0,50,205,50,0,136,121,4,0,250,240,230,0,144,121,4,0,255,0,255,0,192,133,4,0,255,0,255,0,208,133,4,0,238,0,238,0,224,133,4,0,205,0,205,0,240,133,4,0,139,0,139,0,152,121,4,0,0,255,255,0,0,134,4,0,255,52,179,0,8,134,4,0,238,48,167,0,16,134,4,0,205,41,144,0,24,134,4,0,139,28,98,0,160,121,4,0,102,205,170,0,184,121,4,0,0,0,205,0,200,121,4,0,186,85,211,0,32,134,4,0,224,102,255,0,48,134,4,0,209,95,238,0,64,134,4,0,180,82,205,0,80,134,4,0,122,55,139,0,216,121,4,0,147,112,219,0,96,134,4,0,171,130,255,0,112,134,4,0,159,121,238,0,128,134,4,0,137,104,205,0,144,134,4,0,93,71,139,0,232,121,4,0,60,179,113,0,248,121,4,0,123,104,238,0,8,122,4,0,0,250,154,0,32,122,4,0,72,209,204,0,48,122,4,0,199,21,133,0,64,122,4,0,25,25,112,0,80,122,4,0,245,255,250,0,96,122,4,0,255,228,225,0,160,134,4,0,255,228,225,0,176,134,4,0,238,213,210,0,192,134,4,0,205,183,181,0,208,134,4,0,139,125,123,0,112,122,4,0,255,228,181,0,128,122,4,0,255,222,173,0,224,134,4,0,255,222,173,0,240,134,4,0,238,207,161,0,0,135,4,0,205,179,139,0,16,135,4,0,139,121,94,0,144,122,4,0,0,0,128,0,32,135,4,0,0,0,128,0,152,122,4,0,253,245,230,0,160,122,4,0,107,142,35,0,48,135,4,0,192,255,62,0,64,135,4,0,179,238,58,0,80,135,4,0,154,205,50,0,96,135,4,0,105,139,34,0,176,122,4,0,255,165,0,0,112,135,4,0,255,165,0,0,120,135,4,0,238,154,0,0,128,135,4,0,205,133,0,0,136,135,4,0,139,90,0,0,184,122,4,0,255,69,0,0,144,135,4,0,255,69,0,0,160,135,4,0,238,64,0,0,176,135,4,0,205,55,0,0,192,135,4,0,139,37,0,0,200,122,4,0,218,112,214,0,208,135,4,0,255,131,250,0,216,135,4,0,238,122,233,0,224,135,4,0,205,105,201,0,232,135,4,0,139,71,137,0,208,122,4,0,238,232,170,0,224,122,4,0,152,251,152,0,240,135,4,0,154,255,154,0,0,136,4,0,144,238,144,0,16,136,4,0,124,205,124,0,32,136,4,0,84,139,84,0,240,122,4,0,175,238,238,0,48,136,4,0,187,255,255,0,64,136,4,0,174,238,238,0,80,136,4,0,150,205,205,0,96,136,4,0,102,139,139,0,0,123,4,0,219,112,147,0,112,136,4,0,255,130,171,0,128,136,4,0,238,121,159,0,144,136,4,0,205,104,137,0,160,136,4,0,139,71,93,0,16,123,4,0,255,239,213,0,32,123,4,0,255,218,185,0,176,136,4,0,255,218,185,0,192,136,4,0,238,203,173,0,208,136,4,0,205,175,149,0,224,136,4,0,139,119,101,0,48,123,4,0,205,133,63,0,56,123,4,0,255,192,203,0,240,136,4,0,255,181,197,0,248,136,4,0,238,169,184,0,0,137,4,0,205,145,158,0,8,137,4,0,139,99,108,0,64,123,4,0,221,160,221,0,16,137,4,0,255,187,255,0,24,137,4,0,238,174,238,0,32,137,4,0,205,150,205,0,40,137,4,0,139,102,139,0,72,123,4,0,176,224,230,0,88,123,4,0,160,32,240,0,48,137,4,0,155,48,255,0,56,137,4,0,145,44,238,0,64,137,4,0,125,38,205,0,72,137,4,0,85,26,139,0,96,123,4,0,255,0,0,0,80,137,4,0,255,0,0,0,88,137,4,0,238,0,0,0,96,137,4,0,205,0,0,0,104,137,4,0,139,0,0,0,104,123,4,0,188,143,143,0,112,137,4,0,255,193,193,0,128,137,4,0,238,180,180,0,144,137,4,0,205,155,155,0,160,137,4,0,139,105,105,0,120,123,4,0,65,105,225,0,176,137,4,0,72,118,255,0,192,137,4,0,67,110,238,0,208,137,4,0,58,95,205,0,224,137,4,0,39,64,139,0,136,123,4,0,139,69,19,0,152,123,4,0,250,128,114,0,240,137,4,0,255,140,105,0,248,137,4,0,238,130,98,0,0,138,4,0,205,112,84,0,8,138,4,0,139,76,57,0,160,123,4,0,244,164,96,0,176,123,4,0,46,139,87,0,16,138,4,0,84,255,159,0,32,138,4,0,78,238,148,0,48,138,4,0,67,205,128,0,64,138,4,0,46,139,87,0,192,123,4,0,255,245,238,0,80,138,4,0,255,245,238,0,96,138,4,0,238,229,222,0,112,138,4,0,205,197,191,0,128,138,4,0,139,134,130,0,208,123,4,0,160,82,45,0,144,138,4,0,255,130,71,0,152,138,4,0,238,121,66,0,160,138,4,0,205,104,57,0,168,138,4,0,139,71,38,0,216,123,4,0,135,206,235,0,176,138,4,0,135,206,255,0,192,138,4,0,126,192,238,0,208,138,4,0,108,166,205,0,224,138,4,0,74,112,139,0,224,123,4,0,106,90,205,0,240,138,4,0,131,111,255,0,0,139,4,0,122,103,238,0,16,139,4,0,105,89,205,0,32,139,4,0,71,60,139,0,240,123,4,0,112,128,144,0,48,139,4,0,198,226,255,0,64,139,4,0,185,211,238,0,80,139,4,0,159,182,205,0,96,139,4,0,108,123,139,0,0,124,4,0,112,128,144,0,16,124,4,0,255,250,250,0,112,139,4,0,255,250,250,0,120,139,4,0,238,233,233,0,128,139,4,0,205,201,201,0,136,139,4,0,139,137,137,0,24,124,4,0,0,255,127,0,144,139,4,0,0,255,127,0,160,139,4,0,0,238,118,0,176,139,4,0,0,205,102,0,192,139,4,0,0,139,69,0,40,124,4,0,70,130,180,0,208,139,4,0,99,184,255,0,224,139,4,0,92,172,238,0,240,139,4,0,79,148,205,0,0,140,4,0,54,100,139,0,56,124,4,0,210,180,140,0,16,140,4,0,255,165,79,0,24,140,4,0,238,154,73,0,32,140,4,0,205,133,63,0,40,140,4,0,139,90,43,0,64,124,4,0,216,191,216,0,48,140,4,0,255,225,255,0,64,140,4,0,238,210,238,0,80,140,4,0,205,181,205,0,96,140,4,0,139,123,139,0,72,124,4,0,255,99,71,0,112,140,4,0,255,99,71,0,120,140,4,0,238,92,66,0,128,140,4,0,205,79,57,0,136,140,4,0,139,54,38,0,80,124,4,0,64,224,208,0,144,140,4,0,0,245,255,0,160,140,4,0,0,229,238,0,176,140,4,0,0,197,205,0,192,140,4,0,0,134,139,0,96,124,4,0,238,130,238,0,208,140,4,0,208,32,144,0,224,140,4,0,255,62,150,0,240,140,4,0,238,58,140,0,0,141,4,0,205,50,120,0,16,141,4,0,139,34,82,0,104,124,4,0,245,222,179,0,32,141,4,0,255,231,186,0,40,141,4,0,238,216,174,0,48,141,4,0,205,186,150,0,56,141,4,0,139,126,102,0,112,124,4,0,255,255,255,0,120,124,4,0,245,245,245,0,136,124,4,0,255,255,0,0,64,141,4,0,255,255,0,0,72,141,4,0,238,238,0,0,80,141,4,0,205,205,0,0,88,141,4,0,139,139,0,0,144,124,4,0,154,205,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,100,46,37,100,46,37,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,0,0,0,0,87,97,114,110,105,110,103,58,32,105,109,97,103,101,32,99,111,110,116,97,105,110,115,32,37,100,32,103,114,101,121,115,99,97,108,101,32,99,111,109,112,111,110,101,110,116,115,46,32,79,110,108,121,32,116,104,101,32,102,105,114,115,116,32,119,105,108,108,32,98,101,32,108,111,97,100,101,100,46,10,0,0,0,0,0,0,0,0,77,101,109,111,114,121,32,98,117,102,102,101,114,32,105,115,32,114,101,97,100,32,111,110,108,121,0,0,0,0,0,0,69,114,114,111,114,32,119,104,105,108,101,32,112,97,114,115,105,110,103,32,37,115,32,99,104,117,110,107,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,69,114,114,111,114,32,119,104,105,108,101,32,112,97,114,115,105,110,103,32,37,115,32,99,104,117,110,107,58,32,117,110,101,120,112,101,99,116,101,100,32,101,110,100,32,111,102,32,102,105,108,101,0,0,0,0,69,114,114,111,114,32,119,104,105,108,101,32,112,97,114,115,105,110,103,32,37,115,32,99,104,117,110,107,58,32,98,97,100,32,67,82,67,0,0,0,69,114,114,111,114,32,119,104,105,108,101,32,112,97,114,115,105,110,103,32,37,115,32,99,104,117,110,107,58,32,115,105,122,101,32,105,115,32,37,100,32,105,110,115,116,101,97,100,32,111,102,32,50,56,0,0,137,80,78,71,13,10,26,10,80,76,84,69,0,0,0,0,116,82,78,83,0,0,0,0,98,75,71,68,0,0,0,0,73,68,65,84,0,0,0,0,69,114,114,111,114,32,119,104,105,108,101,32,112,97,114,115,105,110,103,32,37,115,32,99,104,117,110,107,58,32,105,110,118,97,108,105,100,32,99,104,117,110,107,32,108,101,110,103,116,104,0,0,0,0,0,0,139,74,78,71,13,10,26,10,74,72,68,82,0,0,0,0,74,68,65,84,0,0,0,0,73,69,78,68,0,0,0,0,73,72,68,82,0,0,0,0,77,72,68,82,0,0,0,0,76,79,79,80,0,0,0,0,68,69,70,73,0,0,0,0,77,69,78,68,0,0,0,0,74,68,65,65,0,0,0,0,103,65,77,65,0,0,0,0,112,72,89,115,0,0,0,0,116,69,88,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,66,77,0,0,0,0,0,80,111,114,116,97,98,108,101,32,66,105,116,109,97,112,32,40,65,83,67,73,73,41,0,112,98,109,0,0,0,0,0,94,80,49,0,0,0,0,0,80,66,77,82,65,87,0,0,80,111,114,116,97,98,108,101,32,66,105,116,109,97,112,32,40,82,65,87,41,0,0,0,94,80,52,0,0,0,0,0,80,71,77,0,0,0,0,0,80,111,114,116,97,98,108,101,32,71,114,101,121,109,97,112,32,40,65,83,67,73,73,41,0,0,0,0,0,0,0,0,112,103,109,0,0,0,0,0,94,80,50,0,0,0,0,0,80,71,77,82,65,87,0,0,80,111,114,116,97,98,108,101,32,71,114,101,121,109,97,112,32,40,82,65,87,41,0,0,94,80,53,0,0,0,0,0,80,80,77,0,0,0,0,0,80,111,114,116,97,98,108,101,32,80,105,120,101,108,109,97,112,32,40,65,83,67,73,73,41,0,0,0,0,0,0,0,112,112,109,0,0,0,0,0,94,80,51,0,0,0,0,0,80,80,77,82,65,87,0,0,80,111,114,116,97,98,108,101,32,80,105,120,101,108,109,97,112,32,40,82,65,87,41,0,94,80,54,0,0,0,0,0,114,98,0,0,0,0,0,0,70,114,101,101,73,109,97,103,101,95,76,111,97,100,58,32,102,97,105,108,101,100,32,116,111,32,111,112,101,110,32,102,105,108,101,32,37,115,0,0,70,114,101,101,73,109,97,103,101,95,83,97,118,101,84,111,72,97,110,100,108,101,58,32,99,97,110,110,111,116,32,115,97,118,101,32,34,104,101,97,100,101,114,32,111,110,108,121,34,32,102,111,114,109,97,116,115,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,98,109,112,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,98,109,112,32,115,117,98,116,121,112,101,32,119,105,116,104,32,105,100,32,37,100,0,0,69,114,114,111,114,32,101,110,99,111,117,110,116,101,114,101,100,32,119,104,105,108,101,32,100,101,99,111,100,105,110,103,32,66,77,80,32,100,97,116,97,0,0,0,0,0,0,0,69,114,114,111,114,32,101,110,99,111,117,110,116,101,114,101,100,32,119,104,105,108,101,32,100,101,99,111,100,105,110,103,32,82,76,69,52,32,66,77,80,32,100,97,116,97,0,0,69,114,114,111,114,32,101,110,99,111,117,110,116,101,114,101,100,32,119,104,105,108,101,32,100,101,99,111,100,105,110,103,32,82,76,69,56,32,66,77,80,32,100,97,116,97,0,0,85,110,115,117,112,112,111,114,116,101,100,32,99,111,109,112,114,101,115,115,105,111,110,32,116,121,112,101,0,0,0,0,94,66,77,0,0,0,0,0,98,109,112,0,0,0,0,0,87,105,110,100,111,119,115,32,111,114,32,79,83,47,50,32,66,105,116,109,97,112,0,0,66,77,80,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,99,117,116,0,0,0,0,0,99,117,116,0,0,0,0,0,68,114,46,32,72,97,108,111,0,0,0,0,0,0,0,0,67,85,84,0,0,0,0,0,105,109,97,103,101,47,120,45,100,100,115,0,0,0,0,0,100,100,115,0,0,0,0,0,68,105,114,101,99,116,88,32,83,117,114,102,97,99,101,0,68,68,83,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,102,97,120,45,103,51,0,0,0,0,40,70,97,107,101,73,110,112,117,116,41,0,0,0,0,0,67,97,110,32,110,111,116,32,99,114,101,97,116,101,32,102,97,107,101,32,105,110,112,117,116,32,102,105,108,101,0,0,69,114,114,111,114,32,119,104,101,110,32,100,101,99,111,100,105,110,103,32,114,97,119,32,102,97,120,32,102,105,108,101,32,58,32,99,104,101,99,107,32,116,104,101,32,100,101,99,111,100,101,114,32,111,112,116,105,111,110,115,0,0,0,0,82,101,97,100,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,48,0,0,0,0,0,0,0,0,103,51,0,0,0,0,0,0,82,97,119,32,102,97,120,32,102,111,114,109,97,116,32,67,67,73,84,84,32,71,46,51,0,0,0,0,0,0,0,0,71,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,103,105,102,0,0,0,0,0,0,0,71,73,70,0,0,0,0,0,79,110,108,121,32,49,44,32,52,44,32,111,114,32,56,32,98,112,112,32,105,109,97,103,101,115,32,115,117,112,112,111,114,116,101,100,0,0,0,0,33,255,11,78,69,84,83,67,65,80,69,50,46,48,3,1,0,0,0,0,0,0,0,0,33,254,0,0,0,0,0,0,33,249,4,0,0,0,0,0,8,0,0,0,8,0,0,0,4,0,0,0,2,0,0,0,0,0,0,0,4,0,0,0,2,0,0,0,1,0,0,0,78,69,84,83,67,65,80,69,50,46,48,0,0,0,0,0,65,78,73,77,69,88,84,83,49,46,48,0,0,0,0,0,67,111,109,109,101,110,116,37,100,0,0,0,0,0,0,0,69,79,70,32,114,101,97,100,105,110,103,32,76,111,103,105,99,97,108,32,83,99,114,101,101,110,32,68,101,115,99,114,105,112,116,111,114,0,0,0,69,79,70,32,114,101,97,100,105,110,103,32,98,108,111,99,107,115,0,0,0,0,0,0,69,79,70,32,114,101,97,100,105,110,103,32,73,109,97,103,101,32,68,101,115,99,114,105,112,116,111,114,0,0,0,0,69,79,70,32,114,101,97,100,105,110,103,32,101,120,116,101,110,115,105,111,110,0,0,0,73,110,118,97,108,105,100,32,71,73,70,32,98,108,111,99,107,32,102,111,117,110,100,0,69,79,70,32,114,101,97,100,105,110,103,32,115,117,98,45,98,108,111,99,107,0,0,0,71,73,70,56,57,97,0,0,94,71,73,70,0,0,0,0,103,105,102,0,0,0,0,0,71,114,97,112,104,105,99,115,32,73,110,116,101,114,99,104,97,110,103,101,32,70,111,114,109,97,116,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,118,110,100,46,114,97,100,105,97,110,99,101,0,0,0,0,0,0,70,82,69,69,95,73,77,65,71,69,95,84,89,80,69,58,32,85,110,97,98,108,101,32,116,111,32,99,111,110,118,101,114,116,32,102,114,111,109,32,116,121,112,101,32,37,100,32,116,111,32,116,121,112,101,32,37,100,46,10,32,78,111,32,115,117,99,104,32,99,111,110,118,101,114,115,105,111,110,32,101,120,105,115,116,115,46,0,35,32,77,97,100,101,32,119,105,116,104,32,70,114,101,101,73,109,97,103,101,32,37,115,0,0,0,0,0,0,0,0,82,71,66,69,32,114,101,97,100,32,101,114,114,111,114,0,82,71,66,69,32,119,114,105,116,101,32,101,114,114,111,114,0,0,0,0,0,0,0,0,82,71,66,69,32,98,97,100,32,102,105,108,101,32,102,111,114,109,97,116,58,32,37,115,10,0,0,0,0,0,0,0,82,71,66,69,32,101,114,114,111,114,58,32,37,115,10,0,82,65,68,73,65,78,67,69,0,0,0,0,0,0,0,0,35,63,37,115,10,0,0,0,37,115,10,0,0,0,0,0,70,79,82,77,65,84,61,51,50,45,98,105,116,95,114,108,101,95,114,103,98,101,10,0,71,65,77,77,65,61,37,103,10,0,0,0,0,0,0,0,69,88,80,79,83,85,82,69,61,37,103,10,0,0,0,0,10,45,89,32,37,100,32,43,88,32,37,100,10,0,0,0,119,114,111,110,103,32,115,99,97,110,108,105,110,101,32,119,105,100,116,104,0,0,0,0,117,110,97,98,108,101,32,116,111,32,97,108,108,111,99,97,116,101,32,98,117,102,102,101,114,32,115,112,97,99,101,0,98,97,100,32,115,99,97,110,108,105,110,101,32,100,97,116,97,0,0,0,0,0,0,0,98,97,100,32,105,110,105,116,105,97,108,32,116,111,107,101,110,0,0,0,0,0,0,0,71,65,77,77,65,61,37,103,0,0,0,0,0,0,0,0,69,88,80,79,83,85,82,69,61,37,103,0,0,0,0,0,105,110,118,97,108,105,100,32,104,101,97,100,101,114,0,0,45,89,32,37,100,32,43,88,32,37,100,0,0,0,0,0,43,88,32,37,100,32,43,89,32,37,100,0,0,0,0,0,109,105,115,115,105,110,103,32,105,109,97,103,101,32,115,105,122,101,32,115,112,101,99,105,102,105,101,114,0,0,0,0,104,100,114,0,0,0,0,0,72,105,103,104,32,68,121,110,97,109,105,99,32,82,97,110,103,101,32,73,109,97,103,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,118,110,100,46,109,105,99,114,111,115,111,102,116,46,105,99,111,110,0,0,0,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,105,99,111,110,32,115,105,122,101,58,32,119,105,100,116,104,32,120,32,104,101,105,103,104,116,32,61,32,37,100,32,120,32,37,100,0,80,97,103,101,32,100,111,101,115,110,39,116,32,101,120,105,115,116,0,0,0,0,0,0,70,105,108,101,32,105,115,32,110,111,116,32,97,110,32,73,67,79,32,102,105,108,101,0,105,99,111,0,0,0,0,0,87,105,110,100,111,119,115,32,73,99,111,110,0,0,0,0,73,67,79,0,0,0,0,0,105,109,97,103,101,47,120,45,105,102,102,0,0,0,0,0,105,102,102,44,108,98,109,0,73,70,70,32,73,110,116,101,114,108,101,97,118,101,100,32,66,105,116,109,97,112,0,0,73,70,70,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,106,50,107,0,0,0,0,0,0,0,106,50,107,44,106,50,99,0,74,80,69,71,45,50,48,48,48,32,99,111,100,101,115,116,114,101,97,109,0,0,0,0,74,50,75,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,109,110,103,0,0,0,0,0,106,110,103,0,0,0,0,0,74,80,69,71,32,78,101,116,119,111,114,107,32,71,114,97,112,104,105,99,115,0,0,0,74,78,71,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,106,112,50,0,0,0,0,0,0,0,0,0,0,12,106,80,32,32,13,10,135,10,0,0,0,0,70,97,105,108,101,100,32,116,111,32,101,110,99,111,100,101,32,105,109,97,103,101,0,0,69,114,114,111,114,58,32,37,115,0,0,0,0,0,0,0,87,97,114,110,105,110,103,58,32,37,115,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,115,101,116,117,112,32,116,104,101,32,100,101,99,111,100,101,114,10,0,0,0,0,70,97,105,108,101,100,32,116,111,32,114,101,97,100,32,116,104,101,32,104,101,97,100,101,114,10,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,105,109,112,111,114,116,32,74,80,69,71,50,48,48,48,32,105,109,97,103,101,0,70,97,105,108,101,100,32,116,111,32,100,101,99,111,100,101,32,105,109,97,103,101,33,10,0,0,0,0,0,0,0,0,106,112,50,0,0,0,0,0,74,80,69,71,45,50,48,48,48,32,70,105,108,101,32,70,111,114,109,97,116,0,0,0,74,80,50,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,106,112,101,103,0,0,0,0,0,0,111,110,108,121,32,50,52,45,98,105,116,32,104,105,103,104,99,111,108,111,114,32,111,114,32,56,45,98,105,116,32,103,114,101,121,115,99,97,108,101,47,112,97,108,101,116,116,101,32,98,105,116,109,97,112,115,32,99,97,110,32,98,101,32,115,97,118,101,100,32,97,115,32,74,80,69,71,0,0,0,104,116,116,112,58,47,47,110,115,46,97,100,111,98,101,46,99,111,109,47,120,97,112,47,49,46,48,47,0,0,0,0,80,104,111,116,111,115,104,111,112,32,51,46,48,0,0,0,56,66,73,77,4,4,0,0,0,0,0,0,0,0,0,0,73,67,67,95,80,82,79,70,73,76,69,0,0,0,0,0,67,111,109,109,101,110,116,0,87,97,114,110,105,110,103,58,32,97,116,116,97,99,104,101,100,32,116,104,117,109,98,110,97,105,108,32,105,115,32,37,100,32,98,121,116,101,115,32,108,97,114,103,101,114,32,116,104,97,110,32,109,97,120,105,109,117,109,32,115,117,112,112,111,114,116,101,100,32,115,105,122,101,32,45,32,84,104,117,109,98,110,97,105,108,32,115,97,118,105,110,103,32,97,98,111,114,116,101,100,0,0,0,87,97,114,110,105,110,103,58,32,97,116,116,97,99,104,101,100,32,116,104,117,109,98,110,97,105,108,32,99,97,110,110,111,116,32,98,101,32,119,114,105,116,116,101,110,32,116,111,32,111,117,116,112,117,116,32,102,105,108,101,32,40,105,110,118,97,108,105,100,32,102,111,114,109,97,116,41,32,45,32,84,104,117,109,98,110,97,105,108,32,115,97,118,105,110,103,32,97,98,111,114,116,101,100,0,0,0,0,0,0,0,0,74,70,73,70,0,0,0,0,74,70,88,88,0,0,0,0,87,97,114,110,105,110,103,58,32,110,111,110,45,115,116,97,110,100,97,114,100,32,74,70,88,88,32,115,101,103,109,101,110,116,0,0,0,0,0,0,37,100,0,0,0,0,0,0,79,114,105,103,105,110,97,108,74,80,69,71,87,105,100,116,104,0,0,0,0,0,0,0,79,114,105,103,105,110,97,108,74,80,69,71,72,101,105,103,104,116,0,0,0,0,0,0,94,255,216,255,0,0,0,0,106,112,103,44,106,105,102,44,106,112,101,103,44,106,112,101,0,0,0,0,0,0,0,0,74,80,69,71,32,45,32,74,70,73,70,32,67,111,109,112,108,105,97,110,116,0,0,0,74,80,69,71,0,0,0,0,0,0,0,0,0,0,0,0,118,105,100,101,111,47,120,45,109,110,103,0,0,0,0,0,109,110,103,0,0,0,0,0,77,117,108,116,105,112,108,101,45,105,109,97,103,101,32,78,101,116,119,111,114,107,32,71,114,97,112,104,105,99,115,0,77,78,71,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,112,104,111,116,111,45,99,100,0,0,0,0,0,0,0,0,112,99,100,0,0,0,0,0,75,111,100,97,107,32,80,104,111,116,111,67,68,0,0,0,80,67,68,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,112,99,120,0,0,0,0,0,112,99,120,0,0,0,0,0,90,115,111,102,116,32,80,97,105,110,116,98,114,117,115,104,0,0,0,0,0,0,0,0,80,67,88,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,112,111,114,116,97,98,108,101,45,102,108,111,97,116,109,97,112,0,0,0,0,0,0,0,80,37,99,10,37,100,32,37,100,10,37,102,10,0,0,0,37,102,0,0,0,0,0,0,82,101,97,100,32,101,114,114,111,114,58,32,105,110,118,97,108,105,100,32,80,70,77,32,104,101,97,100,101,114,0,0,82,101,97,100,32,101,114,114,111,114,0,0,0,0,0,0,112,102,109,0,0,0,0,0,80,111,114,116,97,98,108,101,32,102,108,111,97,116,109,97,112,0,0,0,0,0,0,0,80,70,77,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,112,105,99,116,0,0,0,0,0,17,2,255,12,0,0,0,105,110,118,97,108,105,100,32,104,101,97,100,101,114,58,32,118,101,114,115,105,111,110,32,110,117,109,98,101,114,32,109,105,115,115,105,110,103,46,0,105,110,118,97,108,105,100,32,104,101,97,100,101,114,58,32,105,108,108,101,103,97,108,32,118,101,114,115,105,111,110,32,110,117,109,98,101,114,46,0,80,73,67,84,32,99,111,110,116,97,105,110,101,100,32,111,110,108,121,32,118,101,99,116,111,114,32,100,97,116,97,33,0,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,112,97,116,116,101,114,110,32,116,121,112,101,46,0,0,0,24,181,4,0,0,0,0,0,32,181,4,0,40,181,4,0,0,0,0,0,48,181,4,0,56,181,4,0,8,0,0,0,64,181,4,0,88,181,4,0,2,0,0,0,96,181,4,0,120,181,4,0,1,0,0,0,128,181,4,0,152,181,4,0,2,0,0,0,160,181,4,0,184,181,4,0,4,0,0,0,192,181,4,0,224,181,4,0,4,0,0,0,232,181,4,0,0,182,4,0,2,0,0,0,8,182,4,0,24,182,4,0,8,0,0,0,32,182,4,0,48,182,4,0,8,0,0,0,56,182,4,0,72,182,4,0,4,0,0,0,80,182,4,0,104,182,4,0,4,0,0,0,112,182,4,0,128,182,4,0,2,0,0,0,136,182,4,0,160,182,4,0,4,0,0,0,168,182,4,0,200,182,4,0,4,0,0,0,208,182,4,0,240,182,4,0,8,0,0,0,248,182,4,0,248,48,5,0,1,0,0,0,32,183,4,0,48,183,4,0,0,0,0,0,64,183,4,0,96,183,4,0,0,0,0,0,112,183,4,0,136,183,4,0,0,0,0,0,152,183,4,0,176,183,4,0,2,0,0,0,192,183,4,0,216,183,4,0,2,0,0,0,224,183,4,0,0,184,4,0,0,0,0,0,16,184,4,0,0,184,4,0,0,0,0,0,16,184,4,0,0,184,4,0,0,0,0,0,16,184,4,0,40,184,4,0,6,0,0,0,56,184,4,0,72,184,4,0,6,0,0,0,88,184,4,0,104,184,4,0,0,0,0,0,120,184,4,0,144,184,4,0,6,0,0,0,160,184,4,0,184,184,4,0,0,0,0,0,200,184,4,0,232,184,4,0,6,0,0,0,240,184,4,0,24,185,4,0,8,0,0,0,32,185,4,0,64,185,4,0,4,0,0,0,80,185,4,0,96,185,4,0,6,0,0,0,112,185,4,0,152,185,4,0,2,0,0,0,168,185,4,0,0,184,4,0,255,255,255,255,16,184,4,0,0,184,4,0,255,255,255,255,16,184,4,0,0,184,4,0,255,255,255,255,16,184,4,0,0,184,4,0,255,255,255,255,16,184,4,0,192,185,4,0,0,0,0,0,208,185,4,0,248,185,4,0,0,0,0,0,0,186,4,0,40,186,4,0,0,0,0,0,48,186,4,0,88,186,4,0,0,0,0,0,104,186,4,0,0,184,4,0,255,255,255,255,16,184,4,0,0,184,4,0,255,255,255,255,16,184,4,0,0,184,4,0,255,255,255,255,16,184,4,0,0,184,4,0,255,255,255,255,16,184,4,0,144,186,4,0,8,0,0,0,160,186,4,0,168,186,4,0,8,0,0,0,160,186,4,0,184,186,4,0,8,0,0,0,160,186,4,0,200,186,4,0,8,0,0,0,160,186,4,0,216,186,4,0,8,0,0,0,160,186,4,0,0,184,4,0,8,0,0,0,16,184,4,0,0,184,4,0,8,0,0,0,16,184,4,0,0,184,4,0,8,0,0,0,16,184,4,0,232,186,4,0,0,0,0,0,160,186,4,0,248,186,4,0,0,0,0,0,160,186,4,0,8,187,4,0,0,0,0,0,160,186,4,0,24,187,4,0,0,0,0,0,160,186,4,0,40,187,4,0,0,0,0,0,160,186,4,0,0,184,4,0,0,0,0,0,16,184,4,0,0,184,4,0,0,0,0,0,16,184,4,0,0,184,4,0,0,0,0,0,16,184,4,0,56,187,4,0,8,0,0,0,160,186,4,0,72,187,4,0,8,0,0,0,160,186,4,0,88,187,4,0,8,0,0,0,160,186,4,0,104,187,4,0,8,0,0,0,160,186,4,0,120,187,4,0,8,0,0,0,160,186,4,0,0,184,4,0,8,0,0,0,16,184,4,0,0,184,4,0,8,0,0,0,16,184,4,0,0,184,4,0,8,0,0,0,16,184,4,0,136,187,4,0,0,0,0,0,160,186,4,0,152,187,4],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+296960);allocate([160,186,4,0,168,187,4,0,0,0,0,0,160,186,4,0,184,187,4,0,0,0,0,0,160,186,4,0,200,187,4,0,0,0,0,0,160,186,4,0,0,184,4,0,0,0,0,0,16,184,4,0,0,184,4,0,0,0,0,0,16,184,4,0,0,184,4,0,0,0,0,0,16,184,4,0,216,187,4,0,8,0,0,0,160,186,4,0,232,187,4,0,8,0,0,0,160,186,4,0,248,187,4,0,8,0,0,0,160,186,4,0,8,188,4,0,8,0,0,0,160,186,4,0,24,188,4,0,8,0,0,0,160,186,4,0,0,184,4,0,8,0,0,0,16,184,4,0,0,184,4,0,8,0,0,0,16,184,4,0,0,184,4,0,8,0,0,0,16,184,4,0,40,188,4,0,0,0,0,0,160,186,4,0,56,188,4,0,0,0,0,0,160,186,4,0,72,188,4,0,0,0,0,0,160,186,4,0,88,188,4,0,0,0,0,0,160,186,4,0,104,188,4,0,0,0,0,0,160,186,4,0,0,184,4,0,0,0,0,0,16,184,4,0,0,184,4,0,0,0,0,0,16,184,4,0,0,184,4,0,0,0,0,0,16,184,4,0,120,188,4,0,12,0,0,0,136,188,4,0,168,188,4,0,12,0,0,0,136,188,4,0,184,188,4,0,12,0,0,0,136,188,4,0,200,188,4,0,12,0,0,0,136,188,4,0,216,188,4,0,12,0,0,0,136,188,4,0,0,184,4,0,12,0,0,0,16,184,4,0,0,184,4,0,12,0,0,0,16,184,4,0,0,184,4,0,12,0,0,0,16,184,4,0,224,188,4,0,4,0,0,0,136,188,4,0,240,188,4,0,4,0,0,0,136,188,4,0,0,189,4,0,4,0,0,0,136,188,4,0,16,189,4,0,4,0,0,0,136,188,4,0,32,189,4,0,4,0,0,0,136,188,4,0,0,184,4,0,4,0,0,0,16,184,4,0,0,184,4,0,4,0,0,0,16,184,4,0,0,184,4,0,4,0,0,0,16,184,4,0,48,189,4,0,0,0,0,0,64,189,4,0,72,189,4,0,0,0,0,0,64,189,4,0,88,189,4,0,0,0,0,0,64,189,4,0,104,189,4,0,0,0,0,0,64,189,4,0,120,189,4,0,0,0,0,0,64,189,4,0,0,184,4,0,0,0,0,0,16,184,4,0,0,184,4,0,0,0,0,0,16,184,4,0,0,184,4,0,0,0,0,0,16,184,4,0,136,189,4,0,0,0,0,0,152,189,4,0,168,189,4,0,0,0,0,0,152,189,4,0,184,189,4,0,0,0,0,0,152,189,4,0,200,189,4,0,0,0,0,0,152,189,4,0,216,189,4,0,0,0,0,0,152,189,4,0,0,184,4,0,0,0,0,0,16,184,4,0,0,184,4,0,0,0,0,0,16,184,4,0,0,184,4,0,0,0,0,0,16,184,4,0,232,189,4,0,0,0,0,0,248,189,4,0,0,190,4,0,0,0,0,0,248,189,4,0,16,190,4,0,0,0,0,0,248,189,4,0,32,190,4,0,0,0,0,0,248,189,4,0,48,190,4,0,0,0,0,0,248,189,4,0,0,184,4,0,0,0,0,0,16,184,4,0,0,184,4,0,0,0,0,0,16,184,4,0,0,184,4,0,0,0,0,0,16,184,4,0,56,190,4,0,0,0,0,0,72,190,4,0,88,190,4,0,0,0,0,0,72,190,4,0,104,190,4,0,0,0,0,0,72,190,4,0,120,190,4,0,0,0,0,0,72,190,4,0,136,190,4,0,0,0,0,0,72,190,4,0,0,184,4,0,0,0,0,0,16,184,4,0,0,184,4,0,0,0,0,0,16,184,4,0,0,184,4,0,0,0,0,0,16,184,4,0,152,190,4,0,0,0,0,0,168,190,4,0,192,190,4,0,0,0,0,0,200,190,4,0,0,184,4,0,255,255,255,255,16,184,4,0,0,184,4,0,255,255,255,255,16,184,4,0,0,184,4,0,255,255,255,255,16,184,4,0,0,184,4,0,255,255,255,255,16,184,4,0,0,184,4,0,255,255,255,255,16,184,4,0,0,184,4,0,255,255,255,255,16,184,4,0,224,190,4,0,0,0,0,0,240,190,4,0,16,191,4,0,0,0,0,0,32,191,4,0,64,191,4,0,0,0,0,0,80,191,4,0,0,184,4,0,255,255,255,255,16,184,4,0,0,184,4,0,255,255,255,255,16,184,4,0,0,184,4,0,255,255,255,255,16,184,4,0,0,184,4,0,255,255,255,255,16,184,4,0,0,184,4,0,255,255,255,255,16,184,4,0,112,191,4,0,2,0,0,0,128,191,4,0,144,191,4,0,0,0,0,0,160,191,4,0,80,73,67,84,32,102,105,108,101,32,99,111,110,116,97,105,110,115,32,117,110,114,101,99,111,103,110,105,122,101,100,32,113,117,105,99,107,116,105,109,101,32,100,97,116,97,46,0,67,97,110,39,116,32,104,97,110,100,108,101,32,111,112,99,111,100,101,32,37,120,46,10,0,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,80,73,67,84,32,102,105,108,101,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,112,105,99,116,32,116,121,112,101,0,0,0,0,0,0,0,78,111,32,112,97,108,101,116,116,101,32,102,111,114,32,98,105,116,109,97,112,33,0,0,73,108,108,101,103,97,108,32,98,112,112,32,118,97,108,117,101,32,105,110,32,117,110,112,97,99,107,98,105,116,115,58,32,37,100,10,0,0,0,0,66,97,100,32,98,105,116,115,32,112,101,114,32,112,105,120,101,108,32,105,110,32,101,120,112,97,110,100,66,117,102,56,46,0,0,0,0,0,0,0,78,79,80,0,0,0,0,0,110,111,112,0,0,0,0,0,67,108,105,112,0,0,0,0,99,108,105,112,0,0,0,0,66,107,80,97,116,0,0,0,98,97,99,107,103,114,111,117,110,100,32,112,97,116,116,101,114,110,0,0,0,0,0,0,84,120,70,111,110,116,0,0,116,101,120,116,32,102,111,110,116,32,40,119,111,114,100,41,0,0,0,0,0,0,0,0,84,120,70,97,99,101,0,0,116,101,120,116,32,102,97,99,101,32,40,98,121,116,101,41,0,0,0,0,0,0,0,0,84,120,77,111,100,101,0,0,116,101,120,116,32,109,111,100,101,32,40,119,111,114,100,41,0,0,0,0,0,0,0,0,83,112,69,120,116,114,97,0,115,112,97,99,101,32,101,120,116,114,97,32,40,102,105,120,101,100,32,112,111,105,110,116,41,0,0,0,0,0,0,0,80,110,83,105,122,101,0,0,112,101,110,32,115,105,122,101,32,40,112,111,105,110,116,41,0,0,0,0,0,0,0,0,80,110,77,111,100,101,0,0,112,101,110,32,109,111,100,101,32,40,119,111,114,100,41,0,80,110,80,97,116,0,0,0,112,101,110,32,112,97,116,116,101,114,110,0,0,0,0,0,70,105,108,108,80,97,116,0,102,105,108,108,32,112,97,116,116,101,114,110,0,0,0,0,79,118,83,105,122,101,0,0,111,118,97,108,32,115,105,122,101,32,40,112,111,105,110,116,41,0,0,0,0,0,0,0,79,114,105,103,105,110,0,0,100,104,44,32,100,118,32,40,119,111,114,100,41,0,0,0,84,120,83,105,122,101,0,0,116,101,120,116,32,115,105,122,101,32,40,119,111,114,100,41,0,0,0,0,0,0,0,0,70,103,67,111,108,111,114,0,102,111,114,101,103,114,111,117,110,100,32,99,111,108,111,114,32,40,108,111,110,103,119,111,114,100,41,0,0,0,0,0,66,107,67,111,108,111,114,0,98,97,99,107,103,114,111,117,110,100,32,99,111,108,111,114,32,40,108,111,110,103,119,111,114,100,41,0,0,0,0,0,84,120,82,97,116,105,111,0,110,117,109,101,114,97,116,111,114,32,40,112,111,105,110,116,41,44,32,100,101,110,111,109,105,110,97,116,111,114,32,40,112,111,105,110,116,41,0,0,118,101,114,115,105,111,110,32,40,98,121,116,101,41,0,0,66,107,80,105,120,80,97,116,0,0,0,0,0,0,0,0,99,111,108,111,114,32,98,97,99,107,103,114,111,117,110,100,32,112,97,116,116,101,114,110,0,0,0,0,0,0,0,0,80,110,80,105,120,80,97,116,0,0,0,0,0,0,0,0,99,111,108,111,114,32,112,101,110,32,112,97,116,116,101,114,110,0,0,0,0,0,0,0,70,105,108,108,80,105,120,80,97,116,0,0,0,0,0,0,99,111,108,111,114,32,102,105,108,108,32,112,97,116,116,101,114,110,0,0,0,0,0,0,80,110,76,111,99,72,70,114,97,99,0,0,0,0,0,0,102,114,97,99,116,105,111,110,97,108,32,112,101,110,32,112,111,115,105,116,105,111,110,0,67,104,69,120,116,114,97,0,101,120,116,114,97,32,102,111,114,32,101,97,99,104,32,99,104,97,114,97,99,116,101,114,0,0,0,0,0,0,0,0,114,101,115,101,114,118,101,100,0,0,0,0,0,0,0,0,114,101,115,101,114,118,101,100,32,102,111,114,32,65,112,112,108,101,32,117,115,101,0,0,82,71,66,70,103,67,111,108,0,0,0,0,0,0,0,0,82,71,66,32,102,111,114,101,67,111,108,111,114,0,0,0,82,71,66,66,107,67,111,108,0,0,0,0,0,0,0,0,82,71,66,32,98,97,99,107,67,111,108,111,114,0,0,0,72,105,108,105,116,101,77,111,100,101,0,0,0,0,0,0,104,105,108,105,116,101,32,109,111,100,101,32,102,108,97,103,0,0,0,0,0,0,0,0,72,105,108,105,116,101,67,111,108,111,114,0,0,0,0,0,82,71,66,32,104,105,108,105,116,101,32,99,111,108,111,114,0,0,0,0,0,0,0,0,68,101,102,72,105,108,105,116,101,0,0,0,0,0,0,0,85,115,101,32,100,101,102,97,117,108,116,32,104,105,108,105,116,101,32,99,111,108,111,114,0,0,0,0,0,0,0,0,79,112,67,111,108,111,114,0,82,71,66,32,79,112,67,111,108,111,114,32,102,111,114,32,97,114,105,116,104,109,101,116,105,99,32,109,111,100,101,115,0,0,0,0,0,0,0,0,76,105,110,101,0,0,0,0,112,110,76,111,99,32,40,112,111,105,110,116,41,44,32,110,101,119,80,116,32,40,112,111,105,110,116,41,0,0,0,0,76,105,110,101,70,114,111,109,0,0,0,0,0,0,0,0,110,101,119,80,116,32,40,112,111,105,110,116,41,0,0,0,83,104,111,114,116,76,105,110,101,0,0,0,0,0,0,0,112,110,76,111,99,32,40,112,111,105,110,116,44,32,100,104,44,32,100,118,32,40,45,49,50,56,32,46,46,32,49,50,55,41,41,0,0,0,0,0,83,104,111,114,116,76,105,110,101,70,114,111,109,0,0,0,100,104,44,32,100,118,32,40,45,49,50,56,32,46,46,32,49,50,55,41,0,0,0,0,76,111,110,103,84,101,120,116,0,0,0,0,0,0,0,0,116,120,76,111,99,32,40,112,111,105,110,116,41,44,32,99,111,117,110,116,32,40,48,46,46,50,53,53,41,44,32,116,101,120,116,0,0,0,0,0,68,72,84,101,120,116,0,0,100,104,32,40,48,46,46,50,53,53,41,44,32,99,111,117,110,116,32,40,48,46,46,50,53,53,41,44,32,116,101,120,116,0,0,0,0,0,0,0,68,86,84,101,120,116,0,0,100,118,32,40,48,46,46,50,53,53,41,44,32,99,111,117,110,116,32,40,48,46,46,50,53,53,41,44,32,116,101,120,116,0,0,0,0,0,0,0,68,72,68,86,84,101,120,116,0,0,0,0,0,0,0,0,100,104,44,32,100,118,32,40,48,46,46,50,53,53,41,44,32,99,111,117,110,116,32,40,48,46,46,50,53,53,41,44,32,116,101,120,116,0,0,0,102,114,97,109,101,82,101,99,116,0,0,0,0,0,0,0,114,101,99,116,0,0,0,0,112,97,105,110,116,82,101,99,116,0,0,0,0,0,0,0,101,114,97,115,101,82,101,99,116,0,0,0,0,0,0,0,105,110,118,101,114,116,82,101,99,116,0,0,0,0,0,0,102,105,108,108,82,101,99,116,0,0,0,0,0,0,0,0,102,114,97,109,101,83,97,109,101,82,101,99,116,0,0,0,112,97,105,110,116,83,97,109,101,82,101,99,116,0,0,0,101,114,97,115,101,83,97,109,101,82,101,99,116,0,0,0,105,110,118,101,114,116,83,97,109,101,82,101,99,116,0,0,102,105,108,108,83,97,109,101,82,101,99,116,0,0,0,0,102,114,97,109,101,82,82,101,99,116,0,0,0,0,0,0,112,97,105,110,116,82,82,101,99,116,0,0,0,0,0,0,101,114,97,115,101,82,82,101,99,116,0,0,0,0,0,0,105,110,118,101,114,116,82,82,101,99,116,0,0,0,0,0,102,105,108,108,82,82,114,101,99,116,0,0,0,0,0,0,102,114,97,109,101,83,97,109,101,82,82,101,99,116,0,0,112,97,105,110,116,83,97,109,101,82,82,101,99,116,0,0,101,114,97,115,101,83,97,109,101,82,82,101,99,116,0,0,105,110,118,101,114,116,83,97,109,101,82,82,101,99,116,0,102,105,108,108,83,97,109,101,82,82,101,99,116,0,0,0,102,114,97,109,101,79,118,97,108,0,0,0,0,0,0,0,112,97,105,110,116,79,118,97,108,0,0,0,0,0,0,0,101,114,97,115,101,79,118,97,108,0,0,0,0,0,0,0,105,110,118,101,114,116,79,118,97,108,0,0,0,0,0,0,102,105,108,108,79,118,97,108,0,0,0,0,0,0,0,0,102,114,97,109,101,83,97,109,101,79,118,97,108,0,0,0,112,97,105,110,116,83,97,109,101,79,118,97,108,0,0,0,101,114,97,115,101,83,97,109,101,79,118,97,108,0,0,0,105,110,118,101,114,116,83,97,109,101,79,118,97,108,0,0,102,105,108,108,83,97,109,101,79,118,97,108,0,0,0,0,102,114,97,109,101,65,114,99,0,0,0,0,0,0,0,0,114,101,99,116,44,32,115,116,97,114,116,65,110,103,108,101,44,32,97,114,99,65,110,103,108,101,0,0,0,0,0,0,112,97,105,110,116,65,114,99,0,0,0,0,0,0,0,0,101,114,97,115,101,65,114,99,0,0,0,0,0,0,0,0,105,110,118,101,114,116,65,114,99,0,0,0,0,0,0,0,102,105,108,108,65,114,99,0,102,114,97,109,101,83,97,109,101,65,114,99,0,0,0,0,112,97,105,110,116,83,97,109,101,65,114,99,0,0,0,0,101,114,97,115,101,83,97,109,101,65,114,99,0,0,0,0,105,110,118,101,114,116,83,97,109,101,65,114,99,0,0,0,102,105,108,108,83,97,109,101,65,114,99,0,0,0,0,0,102,114,97,109,101,80,111,108,121,0,0,0,0,0,0,0,112,111,108,121,0,0,0,0,112,97,105,110,116,80,111,108,121,0,0,0,0,0,0,0,101,114,97,115,101,80,111,108,121,0,0,0,0,0,0,0,105,110,118,101,114,116,80,111,108,121,0,0,0,0,0,0,102,105,108,108,80,111,108,121,0,0,0,0,0,0,0,0,102,114,97,109,101,83,97,109,101,80,111,108,121,0,0,0,112,111,108,121,32,40,78,89,73,41,0,0,0,0,0,0,112,97,105,110,116,83,97,109,101,80,111,108,121,0,0,0,101,114,97,115,101,83,97,109,101,80,111,108,121,0,0,0,105,110,118,101,114,116,83,97,109,101,80,111,108,121,0,0,102,105,108,108,83,97,109,101,80,111,108,121,0,0,0,0,102,114,97,109,101,82,103,110,0,0,0,0,0,0,0,0,114,101,103,105,111,110,0,0,112,97,105,110,116,82,103,110,0,0,0,0,0,0,0,0,101,114,97,115,101,82,103,110,0,0,0,0,0,0,0,0,105,110,118,101,114,116,82,103,110,0,0,0,0,0,0,0,102,105,108,108,82,103,110,0,102,114,97,109,101,83,97,109,101,82,103,110,0,0,0,0,114,101,103,105,111,110,32,40,78,89,73,41,0,0,0,0,112,97,105,110,116,83,97,109,101,82,103,110,0,0,0,0,101,114,97,115,101,83,97,109,101,82,103,110,0,0,0,0,105,110,118,101,114,116,83,97,109,101,82,103,110,0,0,0,102,105,108,108,83,97,109,101,82,103,110,0,0,0,0,0,66,105,116,115,82,101,99,116,0,0,0,0,0,0,0,0,99,111,112,121,98,105,116,115,44,32,114,101,99,116,32,99,108,105,112,112,101,100,0,0,66,105,116,115,82,103,110,0,99,111,112,121,98,105,116,115,44,32,114,103,110,32,99,108,105,112,112,101,100,0,0,0,80,97,99,107,66,105,116,115,82,101,99,116,0,0,0,0,112,97,99,107,101,100,32,99,111,112,121,98,105,116,115,44,32,114,101,99,116,32,99,108,105,112,112,101,100,0,0,0,80,97,99,107,66,105,116,115,82,103,110,0,0,0,0,0,112,97,99,107,101,100,32,99,111,112,121,98,105,116,115,44,32,114,103,110,32,99,108,105,112,112,101,100,0,0,0,0,79,112,99,111,100,101,95,57,65,0,0,0,0,0,0,0,116,104,101,32,109,121,115,116,101,114,105,111,117,115,32,111,112,99,111,100,101,32,57,65,0,0,0,0,0,0,0,0,83,104,111,114,116,67,111,109,109,101,110,116,0,0,0,0,107,105,110,100,32,40,119,111,114,100,41,0,0,0,0,0,76,111,110,103,67,111,109,109,101,110,116,0,0,0,0,0,107,105,110,100,32,40,119,111,114,100,41,44,32,115,105,122,101,32,40,119,111,114,100,41,44,32,100,97,116,97,0,0,112,105,120,101,108,32,118,97,108,117,101,32,103,114,101,97,116,101,114,32,116,104,97,110,32,99,111,108,111,114,32,116,97,98,108,101,32,115,105,122,101,46,0,0,0,0,0,0,112,99,116,44,112,105,99,116,44,112,105,99,0,0,0,0,77,97,99,105,110,116,111,115,104,32,80,73,67,84,0,0,80,73,67,84,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,112,110,103,0,0,0,0,0,0,0,49,46,54,46,49,54,0,0,69,109,98,101,100,100,101,100,32,80,114,111,102,105,108,101,0,0,0,0,0,0,0,0,88,77,76,58,99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,0,0,37,52,100,58,37,48,50,100,58,37,48,50,100,32,37,50,100,58,37,48,50,100,58,37,48,50,100,0,0,0,0,0,82,101,97,100,32,101,114,114,111,114,58,32,105,110,118,97,108,105,100,32,111,114,32,99,111,114,114,117,112,116,101,100,32,80,78,71,32,102,105,108,101,0,0,0,0,0,0,0,94,46,80,78,71,13,0,0,112,110,103,0,0,0,0,0,80,111,114,116,97,98,108,101,32,78,101,116,119,111,114,107,32,71,114,97,112,104,105,99,115,0,0,0,0,0,0,0,80,78,71,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,102,114,101,101,105,109,97,103,101,45,112,110,109,0,0,0,0,0,80,37,100,10,37,100,32,37,100,10,0,0,0,0,0,0,37,100,10,0,0,0,0,0,37,51,100,32,37,51,100,32,37,51,100,32,0,0,0,0,37,51,100,32,0,0,0,0,37,99,32,0,0,0,0,0,37,53,100,32,0,0,0,0,37,53,100,32,37,53,100,32,37,53,100,32,0,0,0,0,73,110,118,97,108,105,100,32,109,97,120,32,118,97,108,117,101,32,58,32,37,100,0,0,112,98,109,44,112,103,109,44,112,112,109,0,0,0,0,0,80,111,114,116,97,98,108,101,32,78,101,116,119,111,114,107,32,77,101,100,105,97,0,0,80,78,77,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,118,110,100,46,97,100,111,98,101,46,112,104,111,116,111,115,104,111,112,0,0,0,0,0,0,0,112,115,100,0,0,0,0,0,65,100,111,98,101,32,80,104,111,116,111,115,104,111,112,0,80,83,68,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,99,109,117,45,114,97,115,116,101,114,0,0,0,0,0,0,73,110,118,97,108,105,100,32,112,97,108,101,116,116,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,97,115,0,0,0,0,0,83,117,110,32,82,97,115,116,101,114,32,73,109,97,103,101,0,0,0,0,0,0,0,0,82,65,83,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,115,103,105,0,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,3,0,0,0,69,79,70,32,105,110,32,105,109,97,103,101,32,100,97,116,97,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,99,104,97,110,110,101,108,32,99,111,117,110,116,0,0,0,69,79,70,32,105,110,32,114,117,110,32,108,101,110,103,116,104,32,101,110,99,111,100,105,110,103,0,0,0,0,0,0,78,111,32,99,111,108,111,114,109,97,112,32,115,117,112,112,111,114,116,0,0,0,0,0,78,111,32,49,54,32,98,105,116,32,115,117,112,112,111,114,116,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,109,97,103,105,99,32,110,117,109,98,101,114,0,0,0,0,73,110,99,111,114,114,101,99,116,32,104,101,97,100,101,114,32,115,105,122,101,0,0,0,115,103,105,44,114,103,98,44,114,103,98,97,44,98,119,0,83,71,73,32,73,109,97,103,101,32,70,111,114,109,97,116,0,0,0,0,0,0,0,0,83,71,73,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,116,103,97,0,0,0,0,0,84,82,85,69,86,73,83,73,79,78,45,88,70,73,76,69,46,0,0,0,0,0,0,0,73,109,97,103,101,32,100,97,116,97,32,99,111,114,114,117,112,116,101,100,0,0,0,0,116,103,97,44,116,97,114,103,97,0,0,0,0,0,0,0,84,114,117,101,118,105,115,105,111,110,32,84,97,114,103,97,0,0,0,0,0,0,0,0,84,65,82,71,65,0,0,0,19,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,116,105,102,102,0,0,0,0,0,0,80,97,103,101,32,37,100,0,88,77,76,80,97,99,107,101,116,0,0,0,0,0,0,0,69,114,114,111,114,32,101,110,99,111,117,110,116,101,114,101,100,32,119,104,105,108,101,32,111,112,101,110,105,110,103,32,84,73,70,70,32,102,105,108,101,0,0,0,0,0,0,0,79,110,108,121,32,115,117,112,112,111,114,116,32,83,71,73,76,79,71,32,99,111,109,112,114,101,115,115,101,100,32,76,111,103,76,117,118,32,100,97,116,97,0,0,0,0,0,0,85,110,97,98,108,101,32,116,111,32,104,97,110,100,108,101,32,116,104,105,115,32,102,111,114,109,97,116,58,32,98,105,116,115,112,101,114,115,97,109,112,108,101,32,61,32,37,100,44,32,115,97,109,112,108,101,115,112,101,114,112,105,120,101,108,32,61,32,37,100,44,32,112,104,111,116,111,109,101,116,114,105,99,32,61,32,37,100,0,0,0,0,0,0,0,0,87,97,114,110,105,110,103,58,32,37,100,32,97,100,100,105,116,105,111,110,97,108,32,97,108,112,104,97,32,99,104,97,110,110,101,108,40,115,41,32,105,103,110,111,114,101,100,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,116,101,109,112,111,114,97,114,121,32,97,108,112,104,97,32,99,104,97,110,110,101,108,0,0,0,0,0,0,67,97,110,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,98,117,102,102,101,114,46,32,67,77,89,75,32,105,109,97,103,101,32,99,111,110,118,101,114,116,101,100,32,116,111,32,82,71,66,32,43,32,112,101,110,100,105,110,103,32,65,108,112,104,97,0,0,87,97,114,110,105,110,103,58,32,112,97,114,115,105,110,103,32,101,114,114,111,114,46,32,73,109,97,103,101,32,109,97,121,32,98,101,32,105,110,99,111,109,112,108,101,116,101,32,111,114,32,99,111,110,116,97,105,110,32,105,110,118,97,108,105,100,32,100,97,116,97,32,33,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,116,105,108,101,100,32,84,73,70,70,32,105,109,97,103,101,0,0,0,0,0,0,0,0,67,111,114,114,117,112,116,101,100,32,116,105,108,101,100,32,84,73,70,70,32,102,105,108,101,0,0,0,0,0,0,0,83,101,112,97,114,97,116,101,100,32,116,105,108,101,100,32,84,73,70,70,32,105,109,97,103,101,115,32,97,114,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,85,110,97,98,108,101,32,116,111,32,104,97,110,100,108,101,32,80,76,65,78,65,82,67,79,78,70,73,71,95,83,69,80,65,82,65,84,69,32,76,111,103,76,117,118,32,105,109,97,103,101,115,0,0,0,0,85,110,97,98,108,101,32,116,111,32,104,97,110,100,108,101,32,80,76,65,78,65,82,67,79,78,70,73,71,95,83,69,80,65,82,65,84,69,32,82,71,66,32,104,97,108,102,32,102,108,111,97,116,32,105,109,97,103,101,115,0,0,0,0,80,97,114,115,105,110,103,32,101,114,114,111,114,0,0,0,114,0,0,0,0,0,0,0,119,0,0,0,0,0,0,0,69,114,114,111,114,32,119,104,105,108,101,32,111,112,101,110,105,110,103,32,84,73,70,70,58,32,100,97,116,97,32,105,115,32,105,110,118,97,108,105,100,0,0,0,0,0,0,0,94,91,77,73,93,91,77,73,93,91,92,120,48,49,42,93,91,92,120,48,49,42,93,0,116,105,102,44,116,105,102,102,0,0,0,0,0,0,0,0,84,97,103,103,101,100,32,73,109,97,103,101,32,70,105,108,101,32,70,111,114,109,97,116,0,0,0,0,0,0,0,0,84,73,70,70,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,118,110,100,46,119,97,112,46,119,98,109,112,0,0,0,0,0,0,79,110,108,121,32,49,45,98,105,116,32,100,101,112,116,104,32,98,105,116,109,97,112,115,32,99,97,110,32,98,101,32,115,97,118,101,100,32,97,115,32,87,66,77,80,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,102,111,114,109,97,116,0,0,0,0,0,0,119,97,112,44,119,98,109,112,44,119,98,109,0,0,0,0,87,105,114,101,108,101,115,115,32,66,105,116,109,97,112,0,87,66,77,80,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,120,98,105,116,109,97,112,0,35,100,101,102,105,110,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,35,100,101,102,105,110,101,32,37,115,32,37,100,0,0,0,119,105,100,116,104,0,0,0,104,101,105,103,104,116,0,0,115,116,97,116,105,99,32,115,104,111,114,116,32,37,115,32,61,32,123,0,0,0,0,0,115,116,97,116,105,99,32,99,104,97,114,32,37,115,32,61,32,123,0,0,0,0,0,0,115,116,97,116,105,99,32,117,110,115,105,103,110,101,100,32,99,104,97,114,32,37,115,32,61,32,123,0,0,0,0,0,83,121,110,116,97,120,32,101,114,114,111,114,0,0,0,0,73,110,118,97,108,105,100,32,104,101,105,103,104,116,0,0,73,110,118,97,108,105,100,32,119,105,100,116,104,0,0,0,85,110,97,98,108,101,32,116,111,32,102,105,110,100,32,97,32,108,105,110,101,32,105,110,32,116,104,101,32,102,105,108,101,32,99,111,110,116,97,105,110,105,110,103,32,116,104,101,32,115,116,97,114,116,32,111,102,32,67,32,97,114,114,97,121,32,100,101,99,108,97,114,97,116,105,111,110,32,40,34,115,116,97,116,105,99,32,99,104,97,114,34,32,111,114,32,119,104,97,116,101,118,101,114,41,0,0,0,0,0,0,0,76,105,110,101,32,116,111,111,32,108,111,110,103,0,0,0,120,98,109,0,0,0,0,0,88,49,49,32,66,105,116,109,97,112,32,70,111,114,109,97,116,0,0,0,0,0,0,0,88,66,77,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,120,112,105,120,109,97,112,0,47,42,32,88,80,77,32,42,47,0,0,0,0,0,0,0,47,42,32,88,80,77,32,42,47,10,115,116,97,116,105,99,32,99,104,97,114,32,42,102,114,101,101,105,109,97,103,101,91,93,32,61,32,123,10,47,42,32,119,105,100,116,104,32,104,101,105,103,104,116,32,110,117,109,95,99,111,108,111,114,115,32,99,104,97,114,115,95,112,101,114,95,112,105,120,101,108,32,42,47,10,34,0,0,34,44,10,47,42,32,99,111,108,111,114,115,32,42,47,10,34,0,0,0,0,0,0,0,34,44,10,47,42,32,112,105,120,101,108,115,32,42,47,10,34,0,0,0,0,0,0,0,34,44,10,34,0,0,0,0,34,10,125,59,10,0,0,0,37,100,32,37,100,32,37,100,32,37,100,0,0,0,0,0,37,42,115,32,99,32,35,37,48,50,120,37,48,50,120,37,48,50,120,0,0,0,0,0,37,42,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,46,88,111,79,43,64,35,36,37,38,42,61,45,59,58,62,44,60,49,50,51,52,53,54,55,56,57,48,113,119,101,114,116,121,117,105,112,97,115,100,102,103,104,106,107,108,122,120,99,118,98,110,109,77,78,66,86,67,90,65,83,68,70,71,72,74,75,76,80,73,85,89,84,82,69,87,81,33,126,94,47,40,41,95,96,39,93,91,123,125,124,0,0,0,0,67,111,117,108,100,32,110,111,116,32,102,105,110,100,32,115,116,97,114,116,105,110,103,32,98,114,97,99,101,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,105,110,102,111,32,115,116,114,105,110,103,0,0,0,0,0,0,0,73,109,112,114,111,112,101,114,108,121,32,102,111,114,109,101,100,32,105,110,102,111,32,115,116,114,105,110,103,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,99,111,108,111,114,32,115,116,114,105,110,103,115,0,0,0,0,0,32,99,32,0,0,0,0,0,37,48,49,120,37,48,49,120,37,48,49,120,0,0,0,0,37,48,50,120,37,48,50,120,37,48,50,120,0,0,0,0,37,48,51,120,37,48,51,120,37,48,51,120,0,0,0,0,37,48,52,120,37,48,52,120,37,48,52,120,0,0,0,0,73,109,112,114,111,112,101,114,108,121,32,102,111,114,109,101,100,32,104,101,120,32,99,111,108,111,114,32,118,97,108,117,101,0,0,0,0,0,0,0,78,111,110,101,0,0,0,0,110,111,110,101,0,0,0,0,85,110,107,110,111,119,110,32,99,111,108,111,114,32,110,97,109,101,32,39,37,115,39,0,79,110,108,121,32,99,111,108,111,114,32,118,105,115,117,97,108,115,32,97,114,101,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,112,105,120,101,108,32,115,116,114,105,110,103,115,0,0,0,0,0,94,91,32,92,116,93,42,47,92,42,32,88,80,77,32,92,42,47,91,32,92,116,93,36,0,0,0,0,0,0,0,0,120,112,109,0,0,0,0,0,88,49,49,32,80,105,120,109,97,112,32,70,111,114,109,97,116,0,0,0,0,0,0,0,88,80,77,0,0,0,0,0,87,97,114,110,105,110,103,58,32,102,105,108,101,32,104,101,97,100,101,114,32,114,101,115,101,114,118,101,100,32,109,101,109,98,101,114,32,105,115,32,110,111,116,32,101,113,117,97,108,32,116,111,32,122,101,114,111,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,68,105,115,112,108,97,121,73,110,102,111,58,58,79,112,97,99,105,116,121,32,118,97,108,117,101,0,0,0,0,0,0,73,110,118,97,108,105,100,32,68,105,115,112,108,97,121,73,110,102,111,58,58,80,97,100,100,105,110,103,32,118,97,108,117,101,0,0,0,0,0,0,84,104,105,115,32,102,105,108,101,32,99,111,110,116,97,105,110,115,32,100,97,109,97,103,101,100,32,100,97,116,97,32,99,97,117,115,105,110,103,32,97,110,32,117,110,101,120,112,101,99,116,101,100,32,101,110,100,45,111,102,45,102,105,108,101,32,45,32,115,116,111,112,32,114,101,97,100,105,110,103,32,114,101,115,111,117,114,99,101,115,0,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,99,111,109,112,114,101,115,115,105,111,110,32,37,100,0,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,82,76,69,32,119,105,116,104,32,100,101,112,116,104,32,37,100,0,0,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,99,104,97,110,110,101,108,115,0,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,99,111,108,111,114,32,109,111,100,101,0,0,73,110,100,101,120,101,100,32,105,109,97,103,101,32,104,97,115,32,110,111,32,112,97,108,101,116,116,101,46,32,85,115,105,110,103,32,116,104,101,32,100,101,102,97,117,108,116,32,103,114,97,121,115,99,97,108,101,32,111,110,101,46,0,0,67,97,110,110,111,116,32,111,112,101,110,32,102,105,108,101,0,0,0,0,0,0,0,0,69,114,114,111,114,32,105,110,32,104,101,97,100,101,114,0,69,114,114,111,114,32,105,110,32,73,109,97,103,101,32,82,101,115,111,117,114,99,101,0,69,114,114,111,114,32,105,110,32,77,97,115,107,32,73,110,102,111,0,0,0,0,0,0,69,114,114,111,114,32,105,110,32,73,109,97,103,101,32,68,97,116,97,0,0,0,0,0,68,73,66,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,44,32,109,97,121,98,101,32,99,97,117,115,101,100,32,98,121,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,111,114,32,98,121,32,97,32,108,97,99,107,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,69,120,105,102,0,0,0,0,69,120,105,102,82,97,119,0,79,76,89,77,80,0,1,0,79,76,89,77,80,0,2,0,69,80,83,79,78,0,0,0,65,71,70,65,0,0,0,0,79,76,89,77,80,85,83,0,73,73,3,0,0,0,0,0,78,105,107,111,110,0,0,0,78,73,75,79,78,0,0,0,67,97,110,111,110,0,0,0,67,97,115,105,111,0,0,0,81,86,67,0,0,0,0,0,70,85,74,73,70,73,76,77,0,0,0,0,0,0,0,0,70,117,106,105,102,105,108,109,0,0,0,0,0,0,0,0,75,89,79,67,69,82,65,32,32,32,32,32,32,32,32,32,32,32,32,0,0,0,0,0,77,105,110,111,108,116,97,0,80,97,110,97,115,111,110,105,99,0,0,0,0,0,0,0,76,69,73,67,65,0,0,0,80,101,110,116,97,120,0,0,65,115,97,104,105,0,0,0,65,79,67,0,0,0,0,0,83,79,78,89,32,67,65,77,32,0,0,0,0,0,0,0,83,79,78,89,32,68,83,67,32,0,0,0,0,0,0,0,83,73,71,77,65,0,0,0,0,0,0,0,0,0,0,0,70,79,86,69,79,78,0,0,0,0,0,0,0,0,0,0,83,73,71,77,65,32,83,68,49,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,4,0,0,0,8,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,0,0,0,0,77,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,65,100,111,98,101,95,67,77,0,0,0,0,0,0,0,0,59,0,0,0,0,0,0,0,0,1,0,0,64,79,5,0,152,73,5,0,1,1,0,0,80,79,5,0,192,73,5,0,2,1,0,0,96,79,5,0,112,79,5,0,3,1,0,0,144,79,5,0,160,79,5,0,6,1,0,0,184,79,5,0,216,79,5,0,10,1,0,0,240,79,5,0,0,0,0,0,13,1,0,0,0,80,5,0,0,0,0,0,14,1,0,0,16,80,5,0,40,80,5,0,15,1,0,0,56,80,5,0,64,80,5,0,16,1,0,0,104,80,5,0,112,80,5,0,17,1,0,0,144,80,5,0,160,80,5,0,18,1,0,0,184,80,5,0,200,80,5,0,21,1,0,0,224,80,5,0,240,80,5,0,22,1,0,0,8,81,5,0,24,81,5,0,23,1,0,0,56,81,5,0,72,81,5,0,26,1,0,0,104,81,5,0,120,81,5,0,27,1,0,0,160,81,5,0,176,81,5,0,28,1,0,0,216,81,5,0,240,81,5,0,29,1,0,0,8,82,5,0,24,82,5,0,30,1,0,0,48,82,5,0,64,82,5,0,31,1,0,0,88,82,5,0,104,82,5,0,40,1,0,0,128,82,5,0,144,82,5,0,41,1,0,0,176,82,5,0,192,82,5,0,45,1,0,0,208,82,5,0,232,82,5,0,49,1,0,0,224,19,5,0,0,83,5,0,50,1,0,0,16,83,5,0,32,83,5,0,59,1,0,0,128,32,5,0,64,83,5,0,60,1,0,0,96,83,5,0,112,83,5,0,62,1,0,0,24,29,5,0,160,83,5,0,63,1,0,0,192,83,5,0,216,83,5,0,86,1,0,0,248,83,5,0,0,0,0,0,0,2,0,0,8,84,5,0,0,0,0,0,1,2,0,0,24,84,5,0,48,84,5,0,2,2,0,0,72,84,5,0,104,84,5,0,17,2,0,0,128,84,5,0,152,84,5,0,18,2,0,0,200,84,5,0,224,84,5,0,19,2,0,0,0,85,5,0,24,85,5,0,20,2,0,0,48,85,5,0,72,85,5,0,141,130,0,0,120,85,5,0,0,0,0,0,142,130,0,0,144,85,5,0,0,0,0,0,143,130,0,0,160,85,5,0,0,0,0,0,152,130,0,0,136,32,5,0,176,85,5,0,154,130,0,0,184,20,5,0,200,85,5,0,157,130,0,0,176,20,5,0,216,85,5,0,187,131,0,0,232,85,5,0,0,0,0,0,115,135,0,0,248,85,5,0,0,0,0,0,34,136,0,0,16,86,5,0,32,86,5,0,36,136,0,0,56,86,5,0,80,86,5,0,37,136,0,0,104,86,5,0,0,0,0,0,39,136,0,0,112,86,5,0,128,86,5,0,40,136,0,0,152,86,5,0,160,86,5,0,0,144,0,0,192,86,5,0,208,86,5,0,3,144,0,0,224,86,5,0,248,86,5,0,4,144,0,0,40,87,5,0,64,87,5,0,1,145,0,0,112,87,5,0,136,87,5,0,2,145,0,0,168,87,5,0,192,87,5,0,1,146,0,0,168,39,5,0,216,87,5,0,2,146,0,0,208,39,5,0,232,87,5,0,3,146,0,0,224,39,5,0,48,22,5,0,4,146,0,0,248,87,5,0,16,88,5,0,5,146,0,0,32,88,5,0,56,88,5,0,6,146,0,0,80,88,5,0,96,88,5,0,7,146,0,0,8,19,5,0,120,88,5,0,8,146,0,0,24,46,5,0,136,88,5,0,9,146,0,0,152,88,5,0,152,88,5,0,10,146,0,0,56,25,5,0,160,88,5,0,20,146,0,0,184,88,5,0,200,88,5,0,124,146,0,0,216,88,5,0,232,88,5,0,134,146,0,0,0,89,5,0,16,89,5,0,144,146,0,0,32,89,5,0,48,89,5,0,145,146,0,0,72,89,5,0,96,89,5,0,146,146,0,0,128,89,5,0,152,89,5,0,0,160,0,0,184,89,5,0,200,89,5,0,1,160,0,0,40,19,5,0,232,89,5,0,2,160,0,0,0,90,5,0,16,90,5,0,3,160,0,0,40,90,5,0,56,90,5,0,4,160,0,0,80,90,5,0,104,90,5,0,5,160,0,0,128,90,5,0,0,0,0,0,11,162,0,0,152,90,5,0,168,90,5,0,12,162,0,0,184,90,5,0,216,90,5,0,14,162,0,0,248,90,5,0,16,91,5,0,15,162,0,0,48,91,5,0,72,91,5,0,16,162,0,0,104,91,5,0,136,91,5,0,20,162,0,0,168,91,5,0,184,91,5,0,21,162,0,0,208,91,5,0,224,91,5,0,23,162,0,0,240,91,5,0,0,92,5,0,0,163,0,0,16,92,5,0,24,92,5,0,1,163,0,0,40,92,5,0,56,92,5,0,2,163,0,0,144,85,5,0,72,92,5,0,1,164,0,0,88,92,5,0,104,92,5,0,2,164,0,0,248,18,5,0,128,92,5,0,3,164,0,0,232,18,5,0,144,92,5,0,4,164,0,0,160,92,5,0,184,92,5,0,5,164,0,0,208,92,5,0,232,92,5,0,6,164,0,0,8,93,5,0,32,93,5,0,7,164,0,0,56,93,5,0,72,93,5,0,8,164,0,0,80,19,5,0,80,19,5,0,9,164,0,0,120,19,5,0,120,19,5,0,10,164,0,0,136,19,5,0,136,19,5,0,11,164,0,0,88,93,5,0,120,93,5,0,12,164,0,0,152,93,5,0,176,93,5,0,32,164,0,0,88,54,5,0,200,93,5,0,48,164,0,0,216,93,5,0,232,93,5,0,49,164,0,0,0,94,5,0,24,94,5,0,50,164,0,0,48,94,5,0,72,94,5,0,51,164,0,0,96,94,5,0,112,94,5,0,52,164,0,0,136,55,5,0,128,94,5,0,53,164,0,0,96,36,5,0,144,94,5,0,70,71,0,0,168,94,5,0,176,94,5,0,73,71,0,0,208,94,5,0,224,94,5,0,155,156,0,0,16,95,5,0,24,95,5,0,156,156,0,0,72,95,5,0,88,95,5,0,157,156,0,0,136,95,5,0,152,95,5,0,158,156,0,0,200,95,5,0,216,95,5,0,159,156,0,0,8,96,5,0,24,96,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,73,5,0,224,73,5,0,1,0,0,0,240,73,5,0,0,74,5,0,2,0,0,0,24,74,5,0,40,74,5,0,3,0,0,0,56,74,5,0,72,74,5,0,4,0,0,0,96,74,5,0,112,74,5,0,5,0,0,0,128,74,5,0,144,74,5,0,6,0,0,0,168,74,5,0,184,74,5,0,7,0,0,0,200,74,5,0,216,74,5,0,8,0,0,0,240,74,5,0,0,75,5,0,9,0,0,0,40,75,5,0,56,75,5,0,10,0,0,0,80,75,5,0,96,75,5,0,11,0,0,0,120,75,5,0,128,75,5,0,12,0,0,0,152,75,5,0,168,75,5,0,13,0,0,0,184,75,5,0,200,75,5,0,14,0,0,0,224,75,5,0,240,75,5,0,15,0,0,0,24,76,5,0,40,76,5,0,16,0,0,0,64,76,5,0,88,76,5,0,17,0,0,0,128,76,5,0,144,76,5,0,18,0,0,0,168,76,5,0,184,76,5,0,19,0,0,0,216,76,5,0,240,76,5,0,20,0,0,0,24,77,5,0,40,77,5,0,21,0,0,0,64,77,5,0,88,77,5,0,22,0,0,0,128,77,5,0,152,77,5,0,23,0,0,0,184,77,5,0,208,77,5,0,24,0,0,0,248,77,5,0,8,78,5,0,25,0,0,0,32,78,5,0,56,78,5,0,26,0,0,0,96,78,5,0,112,78,5,0,27,0,0,0,136,78,5,0,160,78,5,0,28,0,0,0,192,78,5,0,216,78,5,0,29,0,0,0,240,78,5,0,0,79,5,0,30,0,0,0,16,79,5,0,32,79,5,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,216,72,5,0,240,72,5,0,2,0,0,0,16,73,5,0,40,73,5,0,0,16,0,0,72,73,5,0,96,73,5,0,1,16,0,0,128,73,5,0,152,73,5,0,2,16,0,0,168,73,5,0,192,73,5,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,176,51,5,0,200,51,5,0,2,0,0,0,232,51,5,0,0,52,5,0,3,0,0,0,24,52,5,0,0,0,0,0,4,0,0,0,40,52,5,0,56,52,5,0,5,0,0,0,80,52,5,0,96,52,5,0,6,0,0,0,120,52,5],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+307204);allocate([7,0,0,0,136,52,5,0,0,0,0,0,8,0,0,0,160,52,5,0,0,0,0,0,9,0,0,0,176,52,5,0,0,0,0,0,10,0,0,0,192,52,5,0,208,52,5,0,12,0,0,0,160,18,5,0,0,0,0,0,13,0,0,0,232,52,5,0,248,52,5,0,14,0,0,0,16,53,5,0,0,0,0,0,15,0,0,0,32,53,5,0,56,53,5,0,16,0,0,0,80,53,5,0,0,0,0,0,18,0,0,0,96,53,5,0,112,53,5,0,19,0,0,0,136,53,5,0,0,0,0,0,21,0,0,0,160,53,5,0,0,0,0,0,26,0,0,0,184,53,5,0,0,0,0,0,28,0,0,0,200,53,5,0,0,0,0,0,29,0,0,0,216,53,5,0,0,0,0,0,30,0,0,0,232,53,5,0,0,0,0,0,35,0,0,0,0,54,5,0,0,0,0,0,36,0,0,0,16,54,5,0,0,0,0,0,37,0,0,0,32,54,5,0,0,0,0,0,38,0,0,0,48,54,5,0,64,54,5,0,40,0,0,0,88,54,5,0,0,0,0,0,129,0,0,0,104,54,5,0,0,0,0,0,131,0,0,0,120,54,5,0,0,0,0,0,144,0,0,0,152,54,5,0,176,54,5,0,145,0,0,0,208,54,5,0,232,54,5,0,146,0,0,0,8,55,5,0,32,55,5,0,147,0,0,0,72,55,5,0,88,55,5,0,148,0,0,0,112,55,5,0,0,0,0,0,149,0,0,0,136,55,5,0,0,0,0,0,150,0,0,0,152,55,5,0,0,0,0,0,151,0,0,0,168,55,5,0,0,0,0,0,152,0,0,0,184,55,5,0,0,0,0,0,153,0,0,0,200,55,5,0,0,0,0,0,154,0,0,0,224,55,5,0,0,0,0,0,160,0,0,0,240,55,5,0,0,0,0,0,161,0,0,0,0,56,5,0,0,0,0,0,162,0,0,0,16,56,5,0,0,0,0,0,163,0,0,0,32,56,5,0,0,0,0,0,164,0,0,0,56,56,5,0,0,0,0,0,169,0,0,0,96,46,5,0,0,0,0,0,170,0,0,0,80,56,5,0,0,0,0,0,174,0,0,0,216,22,5,0,0,0,0,0,176,0,0,0,96,56,5,0,0,0,0,0,177,0,0,0,112,56,5,0,0,0,0,0,178,0,0,0,128,56,5,0,0,0,0,0,179,0,0,0,152,56,5,0,0,0,0,0,180,0,0,0,40,19,5,0,0,0,0,0,182,0,0,0,176,56,5,0,0,0,0,0,208,0,0,0,200,56,5,0,216,56,5,0,224,0,0,0,8,57,5,0,0,0,0,0,1,64,0,0,24,57,5,0,40,57,5,0,2,64,0,0,64,57,5,0,0,0,0,0,3,64,0,0,128,31,5,0,0,0,0,0,5,64,0,0,80,57,5,0,0,0,0,0,8,64,0,0,88,57,5,0,0,0,0,0,16,64,0,0,104,57,5,0,0,0,0,0,19,64,0,0,136,57,5,0,0,0,0,0,21,64,0,0,152,57,5,0,0,0,0,0,22,64,0,0,168,57,5,0,0,0,0,0,24,64,0,0,184,57,5,0,0,0,0,0,25,64,0,0,136,29,5,0,0,0,0,0,32,64,0,0,200,57,5,0,0,0,0,0,36,64,0,0,48,32,5,0,0,0,0,0,1,193,0,0,216,57,5,0,0,0,0,0,2,193,0,0,248,57,5,0,0,0,0,0,3,193,0,0,24,58,5,0,0,0,0,0,4,193,0,0,48,58,5,0,0,0,0,0,5,193,0,0,80,58,5,0,0,0,0,0,6,193,0,0,112,58,5,0,0,0,0,0,7,193,0,0,136,58,5,0,0,0,0,0,8,193,0,0,168,58,5,0,0,0,0,0,9,193,0,0,192,58,5,0,0,0,0,0,10,193,0,0,224,58,5,0,0,0,0,0,11,193,0,0,0,59,5,0,0,0,0,0,12,193,0,0,24,59,5,0,0,0,0,0,13,193,0,0,56,59,5,0,0,0,0,0,14,193,0,0,80,59,5,0,0,0,0,0,15,193,0,0,112,59,5,0,0,0,0,0,16,193,0,0,144,59,5,0,0,0,0,0,17,193,0,0,176,59,5,0,0,0,0,0,18,193,0,0,208,59,5,0,0,0,0,0,19,193,0,0,240,59,5,0,0,0,0,0,20,193,0,0,8,60,5,0,0,0,0,0,21,193,0,0,48,60,5,0,0,0,0,0,22,193,0,0,72,60,5,0,0,0,0,0,23,193,0,0,96,60,5,0,0,0,0,0,24,193,0,0,128,60,5,0,0,0,0,0,25,193,0,0,160,60,5,0,192,60,5,0,26,193,0,0,216,60,5,0,0,0,0,0,27,193,0,0,248,60,5,0,0,0,0,0,28,193,0,0,24,61,5,0,0,0,0,0,29,193,0,0,56,61,5,0,0,0,0,0,30,193,0,0,88,61,5,0,0,0,0,0,31,193,0,0,112,61,5,0,0,0,0,0,32,193,0,0,136,61,5,0,0,0,0,0,33,193,0,0,168,61,5,0,0,0,0,0,34,193,0,0,200,61,5,0,0,0,0,0,35,193,0,0,240,61,5,0,0,0,0,0,36,193,0,0,16,62,5,0,0,0,0,0,37,193,0,0,48,62,5,0,0,0,0,0,38,193,0,0,80,62,5,0,0,0,0,0,39,193,0,0,104,62,5,0,0,0,0,0,40,193,0,0,136,62,5,0,0,0,0,0,41,193,0,0,168,62,5,0,0,0,0,0,42,193,0,0,208,62,5,0,0,0,0,0,43,193,0,0,240,62,5,0,0,0,0,0,44,193,0,0,8,63,5,0,0,0,0,0,45,193,0,0,32,63,5,0,0,0,0,0,46,193,0,0,56,63,5,0,0,0,0,0,47,193,0,0,88,63,5,0,0,0,0,0,48,193,0,0,112,63,5,0,0,0,0,0,0,194,0,0,136,63,5,0,0,0,0,0,1,194,0,0,160,63,5,0,0,0,0,0,2,194,0,0,184,63,5,0,0,0,0,0,3,194,0,0,216,63,5,0,0,0,0,0,1,196,0,0,248,63,5,0,0,0,0,0,2,196,0,0,16,64,5,0,0,0,0,0,3,196,0,0,40,64,5,0,0,0,0,0,4,196,0,0,64,64,5,0,0,0,0,0,5,196,0,0,88,64,5,0,0,0,0,0,6,196,0,0,120,64,5,0,0,0,0,0,7,196,0,0,152,64,5,0,0,0,0,0,8,196,0,0,176,64,5,0,0,0,0,0,9,196,0,0,200,64,5,0,0,0,0,0,10,196,0,0,224,64,5,0,0,0,0,0,11,196,0,0,0,65,5,0,0,0,0,0,12,196,0,0,16,65,5,0,0,0,0,0,13,196,0,0,48,65,5,0,0,0,0,0,14,196,0,0,80,65,5,0,0,0,0,0,15,196,0,0,112,65,5,0,0,0,0,0,16,196,0,0,144,65,5,0,0,0,0,0,17,196,0,0,176,65,5,0,0,0,0,0,18,196,0,0,208,65,5,0,0,0,0,0,19,196,0,0,232,65,5,0,0,0,0,0,20,196,0,0,8,66,5,0,0,0,0,0,21,196,0,0,40,66,5,0,0,0,0,0,22,196,0,0,64,66,5,0,0,0,0,0,23,196,0,0,88,66,5,0,0,0,0,0,24,196,0,0,112,66,5,0,0,0,0,0,25,196,0,0,136,66,5,0,0,0,0,0,26,196,0,0,152,66,5,0,0,0,0,0,27,196,0,0,176,66,5,0,0,0,0,0,28,196,0,0,200,66,5,0,0,0,0,0,29,196,0,0,224,66,5,0,0,0,0,0,30,196,0,0,248,66,5,0,0,0,0,0,31,196,0,0,8,67,5,0,0,0,0,0,32,196,0,0,24,67,5,0,0,0,0,0,33,196,0,0,40,67,5,0,0,0,0,0,0,18,0,0,64,67,5,0,0,0,0,0,1,18,0,0,88,67,5,0,0,0,0,0,2,18,0,0,112,67,5,0,0,0,0,0,3,18,0,0,136,67,5,0,0,0,0,0,4,18,0,0,160,67,5,0,0,0,0,0,5,18,0,0,184,67,5,0,0,0,0,0,6,18,0,0,208,67,5,0,0,0,0,0,7,18,0,0,232,67,5,0,0,0,0,0,8,18,0,0,0,68,5,0,0,0,0,0,9,18,0,0,24,68,5,0,0,0,0,0,10,18,0,0,48,68,5,0,0,0,0,0,11,18,0,0,72,68,5,0,0,0,0,0,12,18,0,0,96,68,5,0,0,0,0,0,13,18,0,0,120,68,5,0,0,0,0,0,14,18,0,0,136,68,5,0,0,0,0,0,15,18,0,0,152,68,5,0,0,0,0,0,16,18,0,0,168,68,5,0,0,0,0,0,17,18,0,0,184,68,5,0,0,0,0,0,18,18,0,0,200,68,5,0,0,0,0,0,19,18,0,0,216,68,5,0,0,0,0,0,20,18,0,0,232,68,5,0,0,0,0,0,21,18,0,0,248,68,5,0,0,0,0,0,22,18,0,0,8,69,5,0,0,0,0,0,23,18,0,0,24,69,5,0,0,0,0,0,24,18,0,0,40,69,5,0,0,0,0,0,25,18,0,0,56,69,5,0,0,0,0,0,26,18,0,0,72,69,5,0,0,0,0,0,27,18,0,0,88,69,5,0,0,0,0,0,1,202,0,0,104,69,5,0,0,0,0,0,2,202,0,0,136,69,5,0,0,0,0,0,3,202,0,0,168,69,5,0,0,0,0,0,4,202,0,0,208,69,5,0,0,0,0,0,5,202,0,0,240,69,5,0,0,0,0,0,6,202,0,0,16,70,5,0,0,0,0,0,7,202,0,0,48,70,5,0,0,0,0,0,8,202,0,0,80,70,5,0,0,0,0,0,9,202,0,0,112,70,5,0,0,0,0,0,10,202,0,0,144,70,5,0,0,0,0,0,11,202,0,0,176,70,5,0,0,0,0,0,12,202,0,0,208,70,5,0,0,0,0,0,13,202,0,0,240,70,5,0,0,0,0,0,1,206,0,0,16,71,5,0,0,0,0,0,2,206,0,0,40,71,5,0,0,0,0,0,3,206,0,0,64,71,5,0,0,0,0,0,4,206,0,0,88,71,5,0,0,0,0,0,5,206,0,0,112,71,5,0,0,0,0,0,6,206,0,0,144,71,5,0,0,0,0,0,7,206,0,0,176,71,5,0,0,0,0,0,8,206,0,0,208,71,5,0,0,0,0,0,9,206,0,0,240,71,5,0,0,0,0,0,10,206,0,0,16,72,5,0,0,0,0,0,11,206,0,0,48,72,5,0,0,0,0,0,12,206,0,0,80,72,5,0,0,0,0,0,13,206,0,0,120,72,5,0,0,0,0,0,14,206,0,0,144,72,5,0,0,0,0,0,15,206,0,0,168,72,5,0,0,0,0,0,16,206,0,0,192,72,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,144,51,5,0,0,0,0,0,2,0,0,0,200,19,5,0,0,0,0,0,3,0,0,0,152,23,5,0,0,0,0,0,4,0,0,0,152,24,5,0,0,0,0,0,5,0,0,0,160,51,5,0,0,0,0,0,6,0,0,0,128,50,5,0,0,0,0,0,7,0,0,0,232,18,5,0,0,0,0,0,10,0,0,0,72,25,5,0,0,0,0,0,11,0,0,0,136,19,5,0,0,0,0,0,12,0,0,0,80,19,5,0,0,0,0,0,13,0,0,0,120,19,5,0,0,0,0,0,20,0,0,0,216,24,5,0,0,0,0,0,21,0,0,0,112,50,5,0,0,0,0,0,22,0,0,0,224,50,5,0,0,0,0,0,23,0,0,0,240,50,5,0,0,0,0,0,24,0,0,0,96,20,5,0,0,0,0,0,25,0,0,0,160,51,5,0,0,0,0,0,0,14,0,0,200,21,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,48,20,5,0,0,0,0,0,3,0,0,0,24,20,5,0,0,0,0,0,4,0,0,0,0,20,5,0,0,0,0,0,8,0,0,0,80,50,5,0,0,0,0,0,9,0,0,0,96,50,5,0,0,0,0,0,13,0,0,0,152,23,5,0,0,0,0,0,20,0,0,0,216,24,5,0,0,0,0,0,25,0,0,0,232,18,5,0,0,0,0,0,29,0,0,0,56,25,5,0,0,0,0,0,31,0,0,0,120,19,5,0,0,0,0,0,32,0,0,0,80,19,5,0,0,0,0,0,33,0,0,0,136,19,5,0,0,0,0,0,0,14,0,0,200,21,5,0,0,0,0,0,0,32,0,0,32,22,5,0,0,0,0,0,1,32,0,0,112,50,5,0,0,0,0,0,17,32,0,0,72,34,5,0,0,0,0,0,18,32,0,0,232,18,5,0,0,0,0,0,33,32,0,0,32,36,5,0,0,0,0,0,34,32,0,0,128,50,5,0,0,0,0,0,52,32,0,0,144,50,5,0,0,0,0,0,118,32,0,0,160,50,5,0,0,0,0,0,0,48,0,0,184,50,5,0,0,0,0,0,1,48,0,0,216,23,5,0,0,0,0,0,2,48,0,0,200,19,5,0,0,0,0,0,3,48,0,0,152,23,5,0,0,0,0,0,6,48,0,0,112,25,5,0,0,0,0,0,7,48,0,0,200,50,5,0,0,0,0,0,8,48,0,0,216,50,5,0,0,0,0,0,9,48,0,0,208,18,5,0,0,0,0,0,17,48,0,0,136,19,5,0,0,0,0,0,18,48,0,0,80,19,5,0,0,0,0,0,19,48,0,0,120,19,5,0,0,0,0,0,20,48,0,0,216,24,5,0,0,0,0,0,21,48,0,0,136,20,5,0,0,0,0,0,22,48,0,0,224,50,5,0,0,0,0,0,23,48,0,0,240,50,5,0,0,0,0,0,27,48,0,0,0,51,5,0,0,0,0,0,28,48,0,0,232,23,5,0,0,0,0,0,29,48,0,0,8,51,5,0,0,0,0,0,32,48,0,0,64,23,5,0,0,0,0,0,42,48,0,0,24,51,5,0,0,0,0,0,43,48,0,0,40,51,5,0,0,0,0,0,48,48,0,0,56,51,5,0,0,0,0,0,49,48,0,0,80,51,5,0,0,0,0,0,3,49,0,0,176,18,5,0,0,0,0,0,1,64,0,0,104,51,5,0,0,0,0,0,3,64,0,0,128,51,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,48,5,0,0,0,0,0,16,0,0,0,112,34,5,0,0,0,0,0,0,16,0,0,200,19,5,0,0,0,0,0,1,16,0,0,136,19,5,0,0,0,0,0,2,16,0,0,232,18,5,0,0,0,0,0,3,16,0,0,120,19,5,0,0,0,0,0,4,16,0,0,80,19,5,0,0,0,0,0,5,16,0,0,216,22,5,0,0,0,0,0,10,16,0,0,160,21,5,0,0,0,0,0,11,16,0,0,200,26,5,0,0,0,0,0,16,16,0,0,0,49,5,0,0,0,0,0,17,16,0,0,0,21,5,0,0,0,0,0,32,16,0,0,144,23,5,0,0,0,0,0,33,16,0,0,152,23,5,0,0,0,0,0,35,16,0,0,16,49,5,0,0,0,0,0,48,16,0,0,32,49,5,0,0,0,0,0,49,16,0,0,24,21,5,0,0,0,0,0,51,16,0,0,48,49,5,0,0,0,0,0,52,16,0,0,56,49,5,0,0,0,0,0,0,17,0,0,64,49,5,0,0,0,0,0,1,17,0,0,232,23,5,0,0,0,0,0,16,18,0,0,136,20,5,0,0,0,0,0,0,19,0,0,80,49,5,0,0,0,0,0,1,19,0,0,96,49,5,0,0,0,0,0,2,19,0,0,112,49,5,0,0,0,0,0,0,20,0,0,128,49,5,0,0,0,0,0,1,20,0,0,192,35,5,0,0,0,0,0,2,20,0,0,144,49,5,0,0,0,0,0,3,20,0,0,168,49,5,0,0,0,0,0,4,20,0,0,192,49,5,0,0,0,0,0,5,20,0,0,208,49,5,0,0,0,0,0,6,20,0,0,224,49,5,0,0,0,0,0,7,20,0,0,248,49,5,0,0,0,0,0,0,65,0,0,176,35,5,0,0,0,0,0,3,65,0,0,16,50,5,0,0,0,0,0,0,128,0,0,32,50,5,0,0,0,0,0,2,128,0,0,48,50,5,0,0,0,0,0,3,128,0,0,248,25,5,0,0,0,0,0,17,178,0,0,64,50,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,72,38,5,0,0,0,0,0,0,14,0,0,200,21,5,0,216,48,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,20,5,0,0,0,0,0,1,0,0,0,248,37,5,0,0,0,0,0,3,0,0,0,24,38,5,0,0,0,0,0,4,0,0,0,80,48,5,0,0,0,0,0,24,0,0,0,64,23,5,0,0,0,0,0,64,0,0,0,48,38,5,0,0,0,0,0,129,0,0,0,32,22,5,0,0,0,0,0,136,0,0,0,0,20,5,0,0,0,0,0,137,0,0,0,24,20,5,0,0,0,0,0,0,1,0,0,8,23,5,0,0,0,0,0,1,1,0,0,136,20,5,0,0,0,0,0,2,1,0,0,104,48,5,0,0,0,0,0,3,1,0,0,120,48,5,0,0,0,0,0,4,1,0,0,0,21,5,0,0,0,0,0,5,1,0,0,144,21,5,0,0,0,0,0,7,1,0,0,64,23,5,0,0,0,0,0,9,1,0,0,144,48,5,0,0,0,0,0,10,1,0,0,24,23,5,0,0,0,0,0,11,1,0,0,216,22,5,0,0,0,0,0,12,1,0,0,88,23,5,0,0,0,0,0,17,1,0,0,240,22,5,0,0,0,0,0,18,1,0,0,160,21,5,0,0,0,0,0,19,1,0,0,64,23,5,0,0,0,0,0,20,1,0,0,168,48,5,0,0,0,0,0,21,1,0,0,232,18,5,0,0,0,0,0,0,14,0,0,200,21,5,0,0,0,0,0,0,15,0,0,192,48,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,16,48,5,0,0,0,0,0,3,0,0,0,200,19,5,0,0,0,0,0,4,0,0,0,136,20,5,0,0,0,0,0,5,0,0,0,176,45,5,0,0,0,0,0,6,0,0,0,32,48,5,0,0,0,0,0,7,0,0,0,232,18,5,0,0,0,0,0,8,0,0,0,48,48,5,0,0,0,0,0,10,0,0,0,72,25,5,0,0,0,0,0,11,0,0,0,56,48,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,72,20,5,0,0,0,0,0,2,0,0,0,216,24,5,0,0,0,0,0,3,0,0,0,136,20,5,0,0,0,0,0,4,0,0,0,200,19,5,0,0,0,0,0,5,0,0,0,232,18,5,0,0,0,0,0,6,0,0,0,136,19,5,0,0,0,0,0,7,0,0,0,152,23,5,0,0,0,0,0,8,0,0,0,48,44,5,0,0,0,0,0,9,0,0,0,64,44,5,0,0,0,0,0,11,0,0,0,160,21,5,0,0,0,0,0,15,0,0,0,136,44,5,0,0,0,0,0,16,0,0,0,216,32,5,0,0,0,0,0,128,0,0,0,176,45,5,0,0,0,0,0,130,0,0,0,208,45,5,0,0,0,0,0,133,0,0,0,48,40,5,0,0,0,0,0,134,0,0,0,72,25,5,0,0,0,0,0,136,0,0,0,96,31,5,0,0,0,0,0,137,0,0,0,32,34,5,0,0,0,0,0,141,0,0,0,136,20,5,0,0,0,0,0,143,0,0,0,8,23,5,0,0,0,0,0,146,0,0,0,40,46,5,0,0,0,0,0,148,0,0,0,120,19,5,0,0,0,0,0,149,0,0,0,200,26,5,0,0,0,0,0,0,14,0,0,200,21,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,72,20,5,0,0,0,0,0,2,0,0,0,216,24,5,0,0,0,0,0,3,0,0,0,136,20,5,0,0,0,0,0,4,0,0,0,200,19,5,0,0,0,0,0,5,0,0,0,232,18,5,0,0,0,0,0,6,0,0,0,136,19,5,0,0,0,0,0,7,0,0,0,152,23,5,0,0,0,0,0,8,0,0,0,48,44,5,0,0,0,0,0,9,0,0,0,64,44,5,0,0,0,0,0,11,0,0,0,160,21,5,0,0,0,0,0,12,0,0,0,80,44,5,0,0,0,0,0,13,0,0,0,96,44,5,0,0,0,0,0,14,0,0,0,112,44,5,0,0,0,0,0,15,0,0,0,136,44,5,0,0,0,0,0,16,0,0,0,216,32,5,0,0,0,0,0,17,0,0,0,152,44,5,0,0,0,0,0,18,0,0,0,0,21,5,0,0,0,0,0,19,0,0,0,168,44,5,0,0,0,0,0,20,0,0,0,184,44,5,0,0,0,0,0,22,0,0,0,200,44,5,0,0,0,0,0,23,0,0,0,0,21,5,0,0,0,0,0,24,0,0,0,216,44,5,0,0,0,0,0,25,0,0,0,248,44,5,0,0,0,0,0,26,0,0,0,24,26,5,0,0,0,0,0,27,0,0,0,16,45,5,0,0,0,0,0,28,0,0,0,32,45,5,0,0,0,0,0,29,0,0,0,160,18,5,0,0,0,0,0,30,0,0,0,40,19,5,0,0,0,0,0,31,0,0,0,48,45,5,0,0,0,0,0,32,0,0,0,56,45,5,0,0,0,0,0,34,0,0,0,80,45,5,0,0,0,0,0,35,0,0,0,104,45,5,0,0,0,0,0,36,0,0,0,120,45,5,0,0,0,0,0,37,0,0,0,136,45,5,0,0,0,0,0,42,0,0,0,144,45,5,0,0,0,0,0,43,0,0,0,160,45,5,0,0,0,0,0,128,0,0,0,176,45,5,0,0,0,0,0,129,0,0,0,192,45,5,0,0,0,0,0,130,0,0,0,208,45,5,0,0,0,0,0,131,0,0,0,88,23,5,0,0,0,0,0,132,0,0,0,224,45,5,0,0,0,0,0,133,0,0,0,48,40,5,0,0,0,0,0,134,0,0,0,72,25,5,0,0,0,0,0,135,0,0,0,152,24,5,0,0,0,0,0,136,0,0,0,96,31,5,0,0,0,0,0,137,0,0,0,32,34,5,0,0,0,0,0,139,0,0,0,232,45,5,0,0,0,0,0,140,0,0,0,248,45,5,0,0,0,0,0,141,0,0,0,8,46,5,0,0,0,0,0,143,0,0,0,8,23,5,0,0,0,0,0,144,0,0,0,24,46,5,0,0,0,0,0,145,0,0,0,160,22,5,0,0,0,0,0,146,0,0,0,40,46,5,0,0,0,0,0,147,0,0,0,56,46,5,0,0,0,0,0,148,0,0,0,120,19,5,0,0,0,0,0,149,0,0,0,200,26,5,0,0,0,0,0,150,0,0,0,72,46,5,0,0,0,0,0,151,0,0,0,96,46,5,0,0,0,0,0,152,0,0,0,112,46,5,0,0,0,0,0,153,0,0,0,128,46,5,0,0,0,0,0,154,0,0,0,144,46,5,0,0,0,0,0,156,0,0,0,160,46,5,0,0,0,0,0,158,0,0,0,176,46,5,0,0,0,0,0,160,0,0,0,160,18,5,0,0,0,0,0,162,0,0,0,192,46,5,0,0,0,0,0,165,0,0,0,208,46,5,0,0,0,0,0,166,0,0,0,224,46,5,0,0,0,0,0,167,0,0,0,24,27,5,0,0,0,0,0,168,0,0,0,176,29,5,0,0,0,0,0,169,0,0,0,248,46,5,0,0,0,0,0,170,0,0,0,120,19,5,0,0,0,0,0,171,0,0,0,16,47,5,0,0,0,0,0,172,0,0,0,64,23,5,0,0,0,0,0,173,0,0,0,32,47,5,0,0,0,0,0,176,0,0,0,48,47,5,0,0,0,0,0,177,0,0,0,96,22,5,0,0,0,0,0,179,0,0,0,64,47,5,0,0,0,0,0,182,0,0,0,80,47,5,0,0,0,0,0,183,0,0,0,96,47,5,0,0,0,0,0,184,0,0,0,104,47,5,0,0,0,0,0,185,0,0,0,120,47,5,0,0,0,0,0,189,0,0,0,104,45,5,0,0,0,0,0,0,14,0,0,200,21,5,0,0,0,0,0,1,14,0,0,128,47,5,0,0,0,0,0,9,14,0,0,152,47,5,0,0,0,0,0,14,14,0,0,176,47,5,0,0,0,0,0,16,14,0,0,200,47,5,0,0,0,0,0,29,14,0,0,216,47,5,0,0,0,0,0,30,14,0,0,232,47,5,0,0,0,0,0,34,14,0,0,0,48,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,20,5,0,0,0,0,0,1,0,0,0,248,37,5,0,0,0,0,0,3,0,0,0,24,38,5,0,0,0,0,0,64,0,0,0,48,38,5,0,0,0,0,0,129,0,0,0,56,33,5,0,0,0,0,0,136,0,0,0,0,20,5,0,0,0,0,0,137,0,0,0,24,20,5,0,0,0,0,0,0,1,0,0,72,38,5,0,0,0,0,0,4,1,0,0,88,38,5,0,0,0,0,0,0,2,0,0,112,38,5,0,0,0,0,0,1,2,0,0,200,19,5,0,0,0,0,0,2,2,0,0,144,23,5,0,0,0,0,0,3,2,0,0,128,38,5,0,0,0,0,0,4,2,0,0,72,25,5,0,0,0,0,0,5,2,0,0,136,38,5,0,0,0,0,0,6,2,0,0,160,38,5,0,0,0,0,0,7,2,0,0,184,38,5,0,0,0,0,0,8,2,0,0,200,38,5,0,216,38,5,0,9,2,0,0,240,38,5,0,0,0,0,0,11,2,0,0,0,39,5,0,0,0,0,0,12,2,0,0,16,39,5,0,0,0,0,0,13,2,0,0,40,39,5,0,0,0,0,0,128,2,0,0,32,22,5,0,0,0,0,0,0,3,0,0,56,39,5,0,0,0,0,0,1,3,0,0,80,39,5,0,0,0,0,0,2,3,0,0,96,39,5,0,0,0,0,0,3,3,0,0,112,39,5,0,0,0,0,0,4,3,0,0,72,34,5,0,0,0,0,0,3,4,0,0,8,23,5,0,0,0,0,0,4,4,0,0,160,18,5,0,0,0,0,0,5,4,0,0,208,19,5,0,0,0,0,0,0,14,0,0,200,21,5,0,136,39,5,0,0,15,0,0,216,32,5,0,0,0,0,0,1,15,0,0,152,39,5,0,0,0,0,0,0,16,0,0,168,39,5,0,0,0,0,0,1,16,0,0,192,39,5,0,0,0,0,0,2,16,0,0,208,39,5,0,0,0,0,0,3,16,0,0,224,39,5,0,0,0,0,0,4,16,0,0,152,24,5,0,0,0,0,0,5,16,0,0,240,39,5,0,0,0,0,0,6,16,0,0,56,19,5,0,0,0,0,0,7,16,0,0,232,20,5,0,0,0,0,0,8,16,0,0,0,40,5,0,0,0,0,0,9,16,0,0,16,40,5,0,0,0,0,0,10,16,0,0,32,40,5,0,0,0,0,0,11,16,0,0,152,23,5,0,0,0,0,0,12,16,0,0,48,40,5,0,0,0,0,0,13,16,0,0,72,40,5,0,0,0,0,0,14,16,0,0,88,40,5,0,0,0,0,0,15,16,0,0,136,19,5,0,0,0,0,0,16,16,0,0,104,40,5,0,0,0,0,0,17,16,0,0,128,40,5,0,0,0,0,0,18,16,0,0,144,40,5,0,0,0,0,0,21,16,0,0,160,40,5,0,0,0,0,0,23,16,0,0,40,25,5,0,0,0,0,0,24,16,0,0,24,25,5,0,0,0,0,0,25,16,0,0,168,40,5,0,0,0,0,0,26,16,0,0,160,18,5,0,0,0,0,0,35,16,0,0,0,21,5,0,0,0,0,0,36,16,0,0,192,40,5,0,0,0,0,0,37,16,0,0,216,40,5,0,0,0,0,0,38,16,0,0,240,40,5,0,0,0,0,0,39,16,0,0,8,41,5,0,0,0,0,0,40,16,0,0,32,41,5,0,0,0,0,0,41,16,0,0,80,19,5,0,0,0,0,0,42,16,0,0,56,41,5,0,0,0,0,0,43,16,0,0,72,41,5,0,0,0,0,0,44,16,0,0,88,41,5,0,0,0,0,0,45,16,0,0,104,41,5,0,0,0,0,0,46,16,0,0,120,41,5,0,0,0,0,0,47,16,0,0,144,41,5,0,0,0,0,0,48,16,0,0,168,41,5,0,0,0,0,0,49,16,0,0,184,41,5,0,0,0,0,0,51,16,0,0,200,41,5,0,0,0,0,0,52,16,0,0,224,41,5,0,0,0,0,0,53,16,0,0,248,41,5,0,0,0,0,0,54,16,0,0,0,20,5,0,0,0,0,0,55,16,0,0,24,20,5,0,0,0,0,0,56,16,0,0,16,42,5,0,0,0,0,0,57,16,0,0,32,42,5,0,0,0,0,0,58,16,0,0,200,26,5,0,0,0,0,0,59,16,0,0,48,42,5,0,0,0,0,0,60,16,0,0,72,42,5,0,0,0,0,0,61,16,0,0,88,42,5,0,0,0,0,0,62,16,0,0,112,42,5,0,0,0,0,0,16,32,0,0,136,42,5,0,152,42,5,0,32,32,0,0,184,21,5,0,176,42,5,0,48,32,0,0,208,42,5,0,224,42,5,0,64,32,0,0,24,26,5,0,0,43,5,0,80,32,0,0,32,43,5,0,48,43,5,0,0,33,0,0,72,43,5,0,88,43,5,0,0,34,0,0,104,43,5,0,88,43,5,0,0,35,0,0,120,43,5,0,88,43,5,0,0,36,0,0,136,43,5,0,88,43,5,0,0,37,0,0,152,43,5,0,88,43,5,0,0,38,0,0,168,43,5,0,88,43,5,0,0,39,0,0,184,43,5,0,88,43,5,0,0,40,0,0,200,43,5,0,88,43,5,0,0,41,0,0,216,43,5,0,88,43,5,0,0,48,0,0,232,43,5,0,240,43,5,0,0,64,0,0,8,44,5,0,24,44,5,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,240,33,5,0,0,0,0,0,2,0,0,0,152,32,5,0,0,0,0,0,3,0,0,0,232,18,5,0,0,0,0,0,7,0,0,0,152,23,5,0,0,0,0,0,15,0,0,0,0,34,5,0,0,0,0,0,26,0,0,0,64,23,5,0,0,0,0,0,28,0,0,0,16,34,5,0,0,0,0,0,31,0,0,0,32,34,5,0,0,0,0,0,32,0,0,0,48,34,5,0,0,0,0,0,33,0,0,0,216,32,5,0,0,0,0,0,34,0,0,0,56,34,5,0,0,0,0,0,35,0,0,0,72,34,5,0,0,0,0,0,36,0,0,0,96,34,5,0,0,0,0,0,37,0,0,0,112,34,5,0,0,0,0,0,38,0,0,0,136,34,5,0,0,0,0,0,40,0,0,0,160,34,5,0,0,0,0,0,41,0,0,0,176,34,5,0,0,0,0,0,42,0,0,0,200,34,5,0,0,0,0,0,43,0,0,0,232,23,5,0,0,0,0,0,44,0,0,0,216,34,5,0,0,0,0,0,45,0,0,0,200,26,5,0,0,0,0,0,46,0,0,0,232,34,5,0,0,0,0,0,48,0,0,0,248,34,5,0,0,0,0,0,49,0,0,0,8,35,5,0,0,0,0,0,50,0,0,0,136,20,5,0,0,0,0,0,51,0,0,0,24,35,5,0,0,0,0,0,52,0,0,0,40,35,5,0,0,0,0,0,53,0,0,0,56,35,5,0,0,0,0,0,54,0,0,0,72,35,5,0,0,0,0,0,57,0,0,0,80,19,5,0,0,0,0,0,58,0,0,0,88,25,5,0,0,0,0,0,59,0,0,0,88,35,5,0,0,0,0,0,60,0,0,0,112,35,5,0,0,0,0,0,61,0,0,0,128,35,5,0,0,0,0,0,62,0,0,0,152,35,5,0,0,0,0,0,63,0,0,0,176,35,5,0,0,0,0,0,64,0,0,0,120,19,5,0,0,0,0,0,65,0,0,0,136,19,5,0,0,0,0,0,66,0,0,0,192,35,5,0,0,0,0,0,70,0,0,0,208,35,5,0,0,0,0,0,71,0,0,0,224,35,5,0,0,0,0,0,75,0,0,0,240,35,5,0,0,0,0,0,76,0,0,0,8,36,5,0,0,0,0,0,77,0,0,0,32,36,5,0,0,0,0,0,78,0,0,0,48,36,5,0,64,36,5,0,81,0,0,0,88,23,5,0,0,0,0,0,82,0,0,0,96,36,5,0,0,0,0,0,83,0,0,0,120,36,5,0,0,0,0,0,89,0,0,0,136,36,5,0,0,0,0,0,93,0,0,0,152,36,5,0,0,0,0,0,97,0,0,0,176,36,5,0,192,36,5,0,98,0,0,0,224,36,5,0,0,0,0,0,99,0,0,0,240,36,5,0,0,0,0,0,101,0,0,0,168,9,5,0,0,0,0,0,102,0,0,0,8,37,5,0,0,0,0,0,103,0,0,0,24,37,5,0,0,0,0,0,105,0,0,0,40,37,5,0,0,0,0,0,107,0,0,0,48,37,5,0,0,0,0,0,109,0,0,0,152,13,5,0,0,0,0,0,111,0,0,0,56,37,5,0,0,0,0,0,112,0,0,0,72,37,5,0,0,0,0,0,121,0,0,0,96,37,5,0,0,0,0,0,0,14,0,0,200,21,5,0,0,0,0,0,0,128,0,0,72,20,5,0,0,0,0,0,1,128,0,0,8,23,5,0,0,0,0,0,4,128,0,0,120,37,5,0,0,0,0,0,5,128,0,0,136,37,5,0,0,0,0,0,6,128,0,0,152,37,5,0,0,0,0,0,7,128,0,0,168,37,5,0,0,0,0,0,8,128,0,0,184,37,5,0,0,0,0,0,9,128,0,0,208,37,5,0,0,0,0,0,16,128,0,0,232,37,5,0,0,0,0,0,18,128,0,0,136,36,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,80,33,5,0,0,0,0,0,2,0,0,0,96,33,5,0,0,0,0,0,3,0,0,0,112,33,5,0,0,0,0,0,4,0,0,0,128,33,5,0,0,0,0,0,7,0,0,0,144,33,5,0,0,0,0,0,10,0,0,0,160,33,5,0,0,0,0,0,11,0,0,0,136,19,5,0,0,0,0,0,12,0,0,0,80,19,5,0,0,0,0,0,13,0,0,0,120,19,5,0,0,0,0,0,20,0,0,0,176,33,5,0,0,0,0,0,23,0,0,0,192,33,5,0,0,0,0,0,0,14,0,0,200,21,5,0,0,0,0,0,0,16,0,0,200,33,5,0,0,0,0,0,1,16,0,0,216,33,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,24,5,0,0,0,0,0,1,0,0,0,56,24,5,0,0,0,0,0,2,0,0,0,48,20,5,0,0,0,0,0,3,0,0,0,24,20,5,0,0,0,0,0,4,0,0,0,0,20,5,0,0,0,0,0,5,0,0,0,72,24,5,0,88,24,5,0,6,0,0,0,120,24,5,0,0,0,0,0,7,0,0,0,128,24,5,0,0,0,0,0,8,0,0,0,200,19,5,0,0,0,0,0,9,0,0,0,136,24,5,0,0,0,0,0,11,0,0,0,24,21,5,0,0,0,0,0,12,0,0,0,152,24,5,0,0,0,0,0,13,0,0,0,152,23,5,0,0,0,0,0,14,0,0,0,168,24,5,0,0,0,0,0,15,0,0,0,184,24,5,0,0,0,0,0,16,0,0,0,200,24,5,0,0,0,0,0,18,0,0,0,184,20,5,0,0,0,0,0,19,0,0,0,176,20,5,0,0,0,0,0,20,0,0,0,216,24,5,0,0,0,0,0,21,0,0,0,224,24,5,0,0,0,0,0,22,0,0,0,56,19,5,0,0,0,0,0,23,0,0,0,8,19,5,0,0,0,0,0,24,0,0,0,240,24,5,0,0,0,0,0,25,0,0,0,232,18,5,0,0,0,0,0,26,0,0,0,0,25,5,0,0,0,0,0,27,0,0,0,24,25,5,0,0,0,0,0,28,0,0,0,40,25,5,0,0,0,0,0,29,0,0,0,56,25,5,0,0,0,0,0,30,0,0,0,72,25,5,0,0,0,0,0,31,0,0,0,120,19,5,0,0,0,0,0,32,0,0,0,80,19,5,0,0,0,0,0,33,0,0,0,136,19,5,0,0,0,0,0,34,0,0,0,88,25,5,0,0,0,0,0,35,0,0,0,112,25,5,0,128,25,5,0,36,0,0,0,152,25,5,0,128,25,5,0,37,0,0,0,168,25,5,0,0,0,0,0,38,0,0,0,184,25,5,0,0,0,0,0,39,0,0,0,200,25,5,0,0,0,0,0,40,0,0,0,224,25,5,0,0,0,0,0,41,0,0,0,248,25,5,0,0,0,0,0,45,0,0,0,8,26,5,0,0,0,0,0,50,0,0,0,24,26,5,0,0,0,0,0,51,0,0,0,24,21,5,0,0,0,0,0,52,0,0,0,176,18,5,0,0,0,0,0,53,0,0,0,40,26,5,0,0,0,0,0,55,0,0,0,40,19,5,0,0,0,0,0,57,0,0,0,56,26,5,0,0,0,0,0,60,0,0,0,184,24,5,0,0,0,0,0,62,0,0,0,72,26,5,0,0,0,0,0,63,0,0,0,88,23,5,0,96,26,5,0,64,0,0,0,120,26,5,0,0,0,0,0,65,0,0,0,144,26,5,0,0,0,0,0,71,0,0,0,168,26,5,0,0,0,0,0,72,0,0,0,192,26,5,0,0,0,0,0,73,0,0,0,200,26,5,0,0,0,0,0,77,0,0,0,0,21,5,0,0,0,0,0,79,0,0,0,216,26,5,0,0,0,0,0,80,0,0,0,216,22,5,0,0,0,0,0,92,0,0,0,232,26,5,0,0,27,5,0,93,0,0,0,24,27,5,0,0,0,0,0,96,0,0,0,40,27,5,0,56,27,5,0,103,0,0,0,80,27,5,0,0,0,0,0,104,0,0,0,88,27,5,0,96,27,5,0,105,0,0,0,120,27,5,0,0,0,0,0,107,0,0,0,144,27,5,0,160,27,5,0,108,0,0,0,184,27,5,0,0,0,0,0,109,0,0,0,200,27,5,0,0,0,0,0,110,0,0,0,224,27,5,0,0,0,0,0,111,0,0,0,240,27,5,0,0,0,0,0,112,0,0,0,16,28,5,0,0,0,0,0,113,0,0,0,96,22,5,0,0,0,0,0,114,0,0,0,32,28,5,0,0,0,0,0,115,0,0,0,48,28,5,0,0,0,0,0,116,0,0,0,72,28,5,0,0,0,0,0,118,0,0,0,96,28,5,0,0,0,0,0,119,0,0,0,112,28,5,0,0,0,0,0,121,0,0,0,136,28,5,0,0,0,0,0,122,0,0,0,160,28,5,0,0,0,0,0,123,0,0,0,184,28,5,0,0,0,0,0,125,0,0,0,200,28,5,0,216,28,5,0,127,0,0,0,240,28,5,0,0,0,0,0,0,2,0,0,8,29,5,0,0,0,0,0,1,2,0,0,24,29,5,0,0,0,0,0,3,2,0,0,40,29,5,0,0,0,0,0,4,2,0,0,56,29,5,0,0,0,0,0,5,2,0,0,184,21,5,0,72,29,5,0,6,2,0,0,104,29,5,0,112,29,5,0,7,2,0,0,136,29,5,0,152,29,5,0,8,2,0,0,176,29,5,0,192,29,5,0,9,2,0,0,216,29,5,0,0,0,0,0,10,2,0,0,240,29,5,0,0,0,0,0,11,2,0,0,8,30,5,0,0,0,0,0,13,2,0,0,40,30,5,0,0,0,0,0,14,2,0,0,64,30,5,0,0,0,0,0,15,2,0,0,88,30,5,0,0,0,0,0,16,2,0,0,112,30,5,0,0,0,0,0,17,2,0,0,136,30,5,0,0,0,0,0,18,2,0,0,168,30,5,0,0,0,0,0,19,2,0,0,200,30,5,0,0,0,0,0,20,2,0,0,232,30,5,0,0,0,0,0,21,2,0,0,0,31,5,0,16,31,5,0,22,2,0,0,40,31,5,0,56,31,5,0,27,2,0,0,80,31,5,0,0,0,0,0,31,2,0,0,96,31,5,0,104,31,5,0,34,2,0,0,128,31,5,0,144,31,5,0,36,2,0,0,168,31,5,0,184,31,5,0,38,2,0,0,160,22,5,0,208,31,5,0,39,2,0,0,232,31,5,0,240,31,5,0,40,2,0,0,8,32,5,0,24,32,5,0,41,2,0,0,160,18,5,0,0,0,0,0,42,2,0,0,48,32,5,0,64,32,5,0,43,2,0,0,88,32,5,0,104,32,5,0,46,2,0,0,128,32,5,0,0,0,0,0,47,2,0,0,136,32,5,0,0,0,0,0,48,2,0,0,152,32,5,0,0,0,0,0,49,2,0,0,168,32,5,0,0,0,0,0,53,2,0,0,192,32,5,0,0,0,0,0,254,3,0,0,216,32,5,0,0,0,0,0,2,4,0,0,232,32,5,0,0,0,0,0,3,4,0,0,248,32,5,0,0,0,0,0,0,14,0,0,200,21,5,0,0,0,0,0,0,16,0,0,8,33,5,0,0,0,0,0,1,16,0,0,32,33,5,0,0,0,0,0,0,32,0,0,56,33,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,200,19,5,0,0,0,0,0,4,1,0,0,0,21,5,0,0,0,0,0,5,1,0,0,144,21,5,0,0,0,0,0,18,1,0,0,160,21,5,0,0,0,0,0,20,1,0,0,184,21,5,0,0,0,0,0,21,1,0,0,232,18,5,0,0,0,0,0,0,14,0,0,200,21,5,0,0,0,0,0,0,16,0,0,208,21,5,0,0,0,0,0,1,16,0,0,224,21,5,0,0,0,0,0,2,16,0,0,248,21,5,0,0,0,0,0,3,16,0,0,16,22,5,0,0,0,0,0,1,32,0,0,32,22,5,0,0,0,0,0,4,32,0,0,80,19,5,0,0,0,0,0,5,32,0,0,120,19,5,0,0,0,0,0,6,32,0,0,136,19,5,0,0,0,0,0,7,32,0,0,48,22,5,0,0,0,0,0,8,32,0,0,64,22,5,0,0,0,0,0,9,32,0,0,96,22,5,0,0,0,0,0,10,32,0,0,120,22,5,0,0,0,0,0,11,32,0,0,128,22,5,0,0,0,0,0,0,48,0,0,160,22,5,0,0,0,0,0,0,176,0,0,104,20,5,0,0,0,0,0,1,176,0,0,176,22,5,0,0,0,0,0,32,176,0,0,192,22,5,0,0,0,0,0,33,176,0,0,216,22,5,0,0,0,0,0,34,176,0,0,240,22,5,0,0,0,0,0,35,176,0,0,8,23,5,0,0,0,0,0,36,176,0,0,24,23,5,0,0,0,0,0,37,176,0,0,40,23,5,0,0,0,0,0,38,176,0,0,64,23,5,0,0,0,0,0,39,176,0,0,88,23,5,0,0,0,0,0,40,176,0,0,104,23,5,0,0,0,0,0,41,176,0,0,136,20,5,0,0,0,0,0,43,176,0,0,128,23,5,0,0,0,0,0,44,176,0,0,48,20,5,0,0,0,0,0,64,176,0,0,144,23,5,0,0,0,0,0,65,176,0,0,248,18,5,0,0,0,0,0,66,176,0,0,152,23,5,0,0,0,0,0,67,176,0,0,208,18,5,0,0,0,0,0,68,176,0,0,168,23,5,0,0,0,0,0,71,176,0,0,184,23,5,0,0,0,0,0,72,176,0,0,200,23,5,0,0,0,0,0,73,176,0,0,216,23,5,0,0,0,0,0,74,176,0,0,232,23,5,0,0,0,0,0,75,176,0,0,248,23,5,0,0,0,0,0,78,176,0,0,64,22,5,0,0,0,0,0,79,176,0,0,40,23,5,0,0,0,0,0,82,176,0,0,8,24,5,0,0,0,0,0,84,176,0,0,24,24,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,160,18,5,0,0,0,0,0,3,0,0,0,176,18,5,0,0,0,0,0,4,0,0,0,192,18,5,0,0,0,0,0,5,0,0,0,208,18,5,0,0,0,0,0,6,0,0,0,216,18,5,0,0,0,0,0,7,0,0,0,232,18,5,0,0,0,0,0,8,0,0,0,248,18,5,0,0,0,0,0,9,0,0,0,8,19,5,0,0,0,0,0,10,0,0,0,24,19,5,0,0,0,0,0,11,0,0,0,40,19,5,0,0,0,0,0,12,0,0,0,56,19,5,0,0,0,0,0,13,0,0,0,80,19,5,0,0,0,0,0,14,0,0,0,96,19,5,0,0,0,0,0,15,0,0,0,104,19,5,0,0,0,0,0,16,0,0,0,120,19,5,0,0,0,0,0,17],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+317448);allocate([136,19,5,0,0,0,0,0,18,0,0,0,152,19,5,0,0,0,0,0,20,0,0,0,168,19,5,0,0,0,0,0,21,0,0,0,184,19,5,0,0,0,0,0,22,0,0,0,200,19,5,0,0,0,0,0,23,0,0,0,208,19,5,0,0,0,0,0,24,0,0,0,224,19,5,0,0,0,0,0,25,0,0,0,240,19,5,0,0,0,0,0,26,0,0,0,40,21,5,0,0,0,0,0,27,0,0,0,72,21,5,0,0,0,0,0,28,0,0,0,0,20,5,0,0,0,0,0,29,0,0,0,24,20,5,0,0,0,0,0,31,0,0,0,72,20,5,0,0,0,0,0,38,0,0,0,104,20,5,0,0,0,0,0,44,0,0,0,136,20,5,0,0,0,0,0,48,0,0,0,120,20,5,0,0,0,0,0,72,0,0,0,152,20,5,0,0,0,0,0,73,0,0,0,176,20,5,0,0,0,0,0,74,0,0,0,184,20,5,0,0,0,0,0,75,0,0,0,200,20,5,0,0,0,0,0,77,0,0,0,96,21,5,0,0,0,0,0,85,0,0,0,232,20,5,0,0,0,0,0,86,0,0,0,0,21,5,0,0,0,0,0,87,0,0,0,128,21,5,0,0,0,0,0,88,0,0,0,232,18,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,160,18,5,0,0,0,0,0,3,0,0,0,176,18,5,0,0,0,0,0,4,0,0,0,192,18,5,0,0,0,0,0,5,0,0,0,208,18,5,0,0,0,0,0,6,0,0,0,216,18,5,0,0,0,0,0,7,0,0,0,232,18,5,0,0,0,0,0,8,0,0,0,248,18,5,0,0,0,0,0,9,0,0,0,8,19,5,0,0,0,0,0,10,0,0,0,24,19,5,0,0,0,0,0,11,0,0,0,40,19,5,0,0,0,0,0,12,0,0,0,56,19,5,0,0,0,0,0,13,0,0,0,80,19,5,0,0,0,0,0,14,0,0,0,96,19,5,0,0,0,0,0,15,0,0,0,104,19,5,0,0,0,0,0,16,0,0,0,120,19,5,0,0,0,0,0,17,0,0,0,136,19,5,0,0,0,0,0,18,0,0,0,152,19,5,0,0,0,0,0,20,0,0,0,168,19,5,0,0,0,0,0,21,0,0,0,184,19,5,0,0,0,0,0,22,0,0,0,200,19,5,0,0,0,0,0,23,0,0,0,208,19,5,0,0,0,0,0,24,0,0,0,224,19,5,0,0,0,0,0,25,0,0,0,240,19,5,0,0,0,0,0,26,0,0,0,0,20,5,0,0,0,0,0,27,0,0,0,24,20,5,0,0,0,0,0,28,0,0,0,48,20,5,0,0,0,0,0,29,0,0,0,72,20,5,0,0,0,0,0,31,0,0,0,96,20,5,0,0,0,0,0,34,0,0,0,104,20,5,0,0,0,0,0,36,0,0,0,120,20,5,0,0,0,0,0,44,0,0,0,136,20,5,0,0,0,0,0,48,0,0,0,152,20,5,0,0,0,0,0,49,0,0,0,176,20,5,0,0,0,0,0,50,0,0,0,184,20,5,0,0,0,0,0,51,0,0,0,200,20,5,0,0,0,0,0,52,0,0,0,216,20,5,0,0,0,0,0,53,0,0,0,56,19,5,0,0,0,0,0,57,0,0,0,232,20,5,0,0,0,0,0,58,0,0,0,0,21,5,0,0,0,0,0,59,0,0,0,208,19,5,0,0,0,0,0,60,0,0,0,232,18,5,0,0,0,0,0,61,0,0,0,24,21,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,232,8,5,0,8,9,5,0,3,2,0,0,40,9,5,0,64,9,5,0,4,2,0,0,88,9,5,0,120,9,5,0,5,2,0,0,152,9,5,0,168,9,5,0,7,2,0,0,176,9,5,0,192,9,5,0,8,2,0,0,208,9,5,0,224,9,5,0,10,2,0,0,248,9,5,0,248,9,5,0,12,2,0,0,0,10,5,0,24,10,5,0,15,2,0,0,48,10,5,0,48,10,5,0,20,2,0,0,64,10,5,0,88,10,5,0,22,2,0,0,112,10,5,0,136,10,5,0,25,2,0,0,160,10,5,0,160,10,5,0,26,2,0,0,176,10,5,0,200,10,5,0,27,2,0,0,224,10,5,0,248,10,5,0,30,2,0,0,16,11,5,0,32,11,5,0,35,2,0,0,48,11,5,0,64,11,5,0,37,2,0,0,80,11,5,0,96,11,5,0,38,2,0,0,112,11,5,0,128,11,5,0,40,2,0,0,144,11,5,0,168,11,5,0,42,2,0,0,184,11,5,0,200,11,5,0,45,2,0,0,216,11,5,0,240,11,5,0,47,2,0,0,8,12,5,0,24,12,5,0,50,2,0,0,40,12,5,0,56,12,5,0,55,2,0,0,80,12,5,0,96,12,5,0,60,2,0,0,112,12,5,0,128,12,5,0,62,2,0,0,144,12,5,0,168,12,5,0,63,2,0,0,192,12,5,0,216,12,5,0,65,2,0,0,240,12,5,0,8,13,5,0,70,2,0,0,32,13,5,0,48,13,5,0,75,2,0,0,64,13,5,0,80,13,5,0,80,2,0,0,96,13,5,0,104,13,5,0,85,2,0,0,112,13,5,0,128,13,5,0,90,2,0,0,152,13,5,0,152,13,5,0,92,2,0,0,160,13,5,0,176,13,5,0,95,2,0,0,192,13,5,0,208,13,5,0,100,2,0,0,224,13,5,0,0,14,5,0,101,2,0,0,16,14,5,0,48,14,5,0,103,2,0,0,64,14,5,0,96,14,5,0,105,2,0,0,120,14,5,0,120,14,5,0,110,2,0,0,136,14,5,0,136,14,5,0,115,2,0,0,144,14,5,0,144,14,5,0,116,2,0,0,152,14,5,0,168,14,5,0,118,2,0,0,192,14,5,0,192,14,5,0,120,2,0,0,200,14,5,0,224,14,5,0,122,2,0,0,232,14,5,0,248,14,5,0,125,2,0,0,8,15,5,0,32,15,5,0,130,2,0,0,56,15,5,0,72,15,5,0,131,2,0,0,88,15,5,0,112,15,5,0,135,2,0,0,136,15,5,0,160,15,5,0,150,2,0,0,184,15,5,0,200,15,5,0,151,2,0,0,216,15,5,0,240,15,5,0,152,2,0,0,8,16,5,0,32,16,5,0,153,2,0,0,64,16,5,0,80,16,5,0,154,2,0,0,96,16,5,0,112,16,5,0,184,2,0,0,128,16,5,0,136,16,5,0,185,2,0,0,144,16,5,0,168,16,5,0,186,2,0,0,192,16,5,0,208,16,5,0,187,2,0,0,232,16,5,0,0,17,5,0,188,2,0,0,24,17,5,0,32,17,5,0,200,2,0,0,48,17,5,0,72,17,5,0,201,2,0,0,104,17,5,0,136,17,5,0,202,2,0,0,168,17,5,0,112,16,5,0,221,2,0,0,192,17,5,0,200,17,5,0,225,2,0,0,232,17,5,0,248,17,5,0,228,2,0,0,8,18,5,0,24,18,5,0,230,2,0,0,48,18,5,0,64,18,5,0,231,2,0,0,80,18,5,0,96,18,5,0,232,2,0,0,120,18,5,0,136,18,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,131,0,0,56,97,5,0,0,0,0,0,128,132,0,0,72,97,5,0,0,0,0,0,130,132,0,0,128,97,5,0,0,0,0,0,215,133,0,0,192,97,5,0,0,0,0,0,216,133,0,0,104,97,5,0,0,0,0,0,175,135,0,0,144,97,5,0,0,0,0,0,176,135,0,0,160,97,5,0,0,0,0,0,177,135,0,0,176,97,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,176,7,5,0,192,7,5,0,2,0,0,0,208,7,5,0,224,7,5,0,3,0,0,0,240,7,5,0,0,8,5,0,4,0,0,0,16,8,5,0,24,8,5,0,1,16,0,0,32,8,5,0,48,8,5,0,2,16,0,0,64,8,5,0,80,8,5,0,3,16,0,0,96,8,5,0,112,8,5,0,4,16,0,0,136,8,5,0,136,8,5,0,5,16,0,0,152,8,5,0,168,8,5,0,6,16,0,0,192,8,5,0,208,8,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,97,103,32,48,120,37,48,52,88,0,0,0,0,0,0,76,111,103,105,99,97,108,87,105,100,116,104,0,0,0,0,76,111,103,105,99,97,108,32,119,105,100,116,104,0,0,0,76,111,103,105,99,97,108,72,101,105,103,104,116,0,0,0,76,111,103,105,99,97,108,32,104,101,105,103,104,116,0,0,71,108,111,98,97,108,80,97,108,101,116,116,101,0,0,0,71,108,111,98,97,108,32,80,97,108,101,116,116,101,0,0,76,111,111,112,0,0,0,0,108,111,111,112,0,0,0,0,70,114,97,109,101,76,101,102,116,0,0,0,0,0,0,0,70,114,97,109,101,32,108,101,102,116,0,0,0,0,0,0,70,114,97,109,101,84,111,112,0,0,0,0,0,0,0,0,70,114,97,109,101,32,116,111,112,0,0,0,0,0,0,0,78,111,76,111,99,97,108,80,97,108,101,116,116,101,0,0,78,111,32,76,111,99,97,108,32,80,97,108,101,116,116,101,0,0,0,0,0,0,0,0,73,110,116,101,114,108,97,99,101,100,0,0,0,0,0,0,70,114,97,109,101,84,105,109,101,0,0,0,0,0,0,0,70,114,97,109,101,32,100,105,115,112,108,97,121,32,116,105,109,101,0,0,0,0,0,0,68,105,115,112,111,115,97,108,77,101,116,104,111,100,0,0,70,114,97,109,101,32,100,105,115,112,111,115,97,108,32,109,101,116,104,111,100,0,0,0,65,112,112,108,105,99,97,116,105,111,110,82,101,99,111,114,100,86,101,114,115,105,111,110,0,0,0,0,0,0,0,0,65,112,112,108,105,99,97,116,105,111,110,32,82,101,99,111,114,100,32,86,101,114,115,105,111,110,0,0,0,0,0,0,79,98,106,101,99,116,84,121,112,101,82,101,102,101,114,101,110,99,101,0,0,0,0,0,79,98,106,101,99,116,32,84,121,112,101,32,82,101,102,101,114,101,110,99,101,0,0,0,79,98,106,101,99,116,65,116,116,114,105,98,117,116,101,82,101,102,101,114,101,110,99,101,0,0,0,0,0,0,0,0,79,98,106,101,99,116,32,65,116,116,114,105,98,117,116,101,32,82,101,102,101,114,101,110,99,101,0,0,0,0,0,0,79,98,106,101,99,116,78,97,109,101,0,0,0,0,0,0,84,105,116,108,101,0,0,0,69,100,105,116,83,116,97,116,117,115,0,0,0,0,0,0,69,100,105,116,32,83,116,97,116,117,115,0,0,0,0,0,69,100,105,116,111,114,105,97,108,85,112,100,97,116,101,0,69,100,105,116,111,114,105,97,108,32,85,112,100,97,116,101,0,0,0,0,0,0,0,0,85,114,103,101,110,99,121,0,83,117,98,106,101,99,116,82,101,102,101,114,101,110,99,101,0,0,0,0,0,0,0,0,83,117,98,106,101,99,116,32,82,101,102,101,114,101,110,99,101,0,0,0,0,0,0,0,67,97,116,101,103,111,114,121,0,0,0,0,0,0,0,0,83,117,112,112,108,101,109,101,110,116,97,108,67,97,116,101,103,111,114,105,101,115,0,0,83,117,112,112,108,101,109,101,110,116,97,108,32,67,97,116,101,103,111,114,105,101,115,0,70,105,120,116,117,114,101,73,100,101,110,116,105,102,105,101,114,0,0,0,0,0,0,0,70,105,120,116,117,114,101,32,73,100,101,110,116,105,102,105,101,114,0,0,0,0,0,0,75,101,121,119,111,114,100,115,0,0,0,0,0,0,0,0,67,111,110,116,101,110,116,76,111,99,97,116,105,111,110,67,111,100,101,0,0,0,0,0,67,111,110,116,101,110,116,32,76,111,99,97,116,105,111,110,32,67,111,100,101,0,0,0,67,111,110,116,101,110,116,76,111,99,97,116,105,111,110,78,97,109,101,0,0,0,0,0,67,111,110,116,101,110,116,32,76,111,99,97,116,105,111,110,32,78,97,109,101,0,0,0,82,101,108,101,97,115,101,68,97,116,101,0,0,0,0,0,82,101,108,101,97,115,101,32,68,97,116,101,0,0,0,0,82,101,108,101,97,115,101,84,105,109,101,0,0,0,0,0,82,101,108,101,97,115,101,32,84,105,109,101,0,0,0,0,69,120,112,105,114,97,116,105,111,110,68,97,116,101,0,0,69,120,112,105,114,97,116,105,111,110,32,68,97,116,101,0,69,120,112,105,114,97,116,105,111,110,84,105,109,101,0,0,69,120,112,105,114,97,116,105,111,110,32,84,105,109,101,0,83,112,101,99,105,97,108,73,110,115,116,114,117,99,116,105,111,110,115,0,0,0,0,0,73,110,115,116,114,117,99,116,105,111,110,115,0,0,0,0,65,99,116,105,111,110,65,100,118,105,115,101,100,0,0,0,65,99,116,105,111,110,32,65,100,118,105,115,101,100,0,0,82,101,102,101,114,101,110,99,101,83,101,114,118,105,99,101,0,0,0,0,0,0,0,0,82,101,102,101,114,101,110,99,101,32,83,101,114,118,105,99,101,0,0,0,0,0,0,0,82,101,102,101,114,101,110,99,101,68,97,116,101,0,0,0,82,101,102,101,114,101,110,99,101,32,68,97,116,101,0,0,82,101,102,101,114,101,110,99,101,78,117,109,98,101,114,0,82,101,102,101,114,101,110,99,101,32,78,117,109,98,101,114,0,0,0,0,0,0,0,0,68,97,116,101,67,114,101,97,116,101,100,0,0,0,0,0,68,97,116,101,32,67,114,101,97,116,101,100,0,0,0,0,84,105,109,101,67,114,101,97,116,101,100,0,0,0,0,0,84,105,109,101,32,67,114,101,97,116,101,100,0,0,0,0,68,105,103,105,116,97,108,67,114,101,97,116,105,111,110,68,97,116,101,0,0,0,0,0,68,105,103,105,116,97,108,32,67,114,101,97,116,105,111,110,32,68,97,116,101,0,0,0,68,105,103,105,116,97,108,67,114,101,97,116,105,111,110,84,105,109,101,0,0,0,0,0,68,105,103,105,116,97,108,32,67,114,101,97,116,105,111,110,32,84,105,109,101,0,0,0,79,114,105,103,105,110,97,116,105,110,103,80,114,111,103,114,97,109,0,0,0,0,0,0,79,114,105,103,105,110,97,116,105,110,103,32,80,114,111,103,114,97,109,0,0,0,0,0,80,114,111,103,114,97,109,86,101,114,115,105,111,110,0,0,80,114,111,103,114,97,109,32,86,101,114,115,105,111,110,0,79,98,106,101,99,116,67,121,99,108,101,0,0,0,0,0,79,98,106,101,99,116,32,67,121,99,108,101,0,0,0,0,66,121,45,108,105,110,101,0,65,117,116,104,111,114,0,0,66,121,45,108,105,110,101,84,105,116,108,101,0,0,0,0,65,117,116,104,111,114,39,115,32,80,111,115,105,116,105,111,110,0,0,0,0,0,0,0,67,105,116,121,0,0,0,0,83,117,98,76,111,99,97,116,105,111,110,0,0,0,0,0,83,117,98,45,76,111,99,97,116,105,111,110,0,0,0,0,80,114,111,118,105,110,99,101,45,83,116,97,116,101,0,0,83,116,97,116,101,47,80,114,111,118,105,110,99,101,0,0,67,111,117,110,116,114,121,45,80,114,105,109,97,114,121,76,111,99,97,116,105,111,110,67,111,100,101,0,0,0,0,0,67,111,117,110,116,114,121,32,67,111,100,101,0,0,0,0,67,111,117,110,116,114,121,45,80,114,105,109,97,114,121,76,111,99,97,116,105,111,110,78,97,109,101,0,0,0,0,0,67,111,117,110,116,114,121,32,78,97,109,101,0,0,0,0,79,114,105,103,105,110,97,108,84,114,97,110,115,109,105,115,115,105,111,110,82,101,102,101,114,101,110,99,101,0,0,0,84,114,97,110,115,109,105,115,115,105,111,110,32,82,101,102,101,114,101,110,99,101,0,0,72,101,97,100,108,105,110,101,0,0,0,0,0,0,0,0,67,114,101,100,105,116,0,0,83,111,117,114,99,101,0,0,67,111,112,121,114,105,103,104,116,78,111,116,105,99,101,0,67,111,112,121,114,105,103,104,116,32,78,111,116,105,99,101,0,0,0,0,0,0,0,0,67,111,110,116,97,99,116,0,67,97,112,116,105,111,110,45,65,98,115,116,114,97,99,116,0,0,0,0,0,0,0,0,67,97,112,116,105,111,110,0,87,114,105,116,101,114,45,69,100,105,116,111,114,0,0,0,67,97,112,116,105,111,110,32,87,114,105,116,101,114,0,0,82,97,115,116,101,114,105,122,101,100,67,97,112,116,105,111,110,0,0,0,0,0,0,0,82,97,115,116,101,114,105,122,101,100,32,67,97,112,116,105,111,110,0,0,0,0,0,0,73,109,97,103,101,84,121,112,101,0,0,0,0,0,0,0,73,109,97,103,101,32,84,121,112,101,0,0,0,0,0,0,73,109,97,103,101,79,114,105,101,110,116,97,116,105,111,110,0,0,0,0,0,0,0,0,73,109,97,103,101,32,79,114,105,101,110,116,97,116,105,111,110,0,0,0,0,0,0,0,76,97,110,103,117,97,103,101,73,100,101,110,116,105,102,105,101,114,0,0,0,0,0,0,76,97,110,103,117,97,103,101,32,73,100,101,110,116,105,102,105,101,114,0,0,0,0,0,65,117,100,105,111,84,121,112,101,0,0,0,0,0,0,0,65,117,100,105,111,32,84,121,112,101,0,0,0,0,0,0,65,117,100,105,111,83,97,109,112,108,105,110,103,82,97,116,101,0,0,0,0,0,0,0,65,117,100,105,111,32,83,97,109,112,108,105,110,103,32,82,97,116,101,0,0,0,0,0,65,117,100,105,111,83,97,109,112,108,105,110,103,82,101,115,111,108,117,116,105,111,110,0,65,117,100,105,111,32,83,97,109,112,108,105,110,103,32,82,101,115,111,108,117,116,105,111,110,0,0,0,0,0,0,0,65,117,100,105,111,68,117,114,97,116,105,111,110,0,0,0,65,117,100,105,111,32,68,117,114,97,116,105,111,110,0,0,65,117,100,105,111,79,117,116,99,117,101,0,0,0,0,0,65,117,100,105,111,32,79,117,116,99,117,101,0,0,0,0,74,111,98,73,68,0,0,0,74,111,98,32,73,68,0,0,77,97,115,116,101,114,68,111,99,117,109,101,110,116,73,68,0,0,0,0,0,0,0,0,77,97,115,116,101,114,32,68,111,99,117,109,101,110,116,32,73,68,0,0,0,0,0,0,83,104,111,114,116,68,111,99,117,109,101,110,116,73,68,0,83,104,111,114,116,32,68,111,99,117,109,101,110,116,32,73,68,0,0,0,0,0,0,0,85,110,105,113,117,101,68,111,99,117,109,101,110,116,73,68,0,0,0,0,0,0,0,0,85,110,105,113,117,101,32,68,111,99,117,109,101,110,116,32,73,68,0,0,0,0,0,0,79,119,110,101,114,73,68,0,79,119,110,101,114,32,73,68,0,0,0,0,0,0,0,0,79,98,106,101,99,116,80,114,101,118,105,101,119,70,105,108,101,70,111,114,109,97,116,0,79,98,106,101,99,116,32,80,114,101,118,105,101,119,32,70,105,108,101,32,70,111,114,109,97,116,0,0,0,0,0,0,79,98,106,101,99,116,80,114,101,118,105,101,119,70,105,108,101,86,101,114,115,105,111,110,0,0,0,0,0,0,0,0,79,98,106,101,99,116,32,80,114,101,118,105,101,119,32,70,105,108,101,32,86,101,114,115,105,111,110,0,0,0,0,0,79,98,106,101,99,116,80,114,101,118,105,101,119,68,97,116,97,0,0,0,0,0,0,0,80,114,101,102,115,0,0,0,80,104,111,116,111,77,101,99,104,97,110,105,99,32,112,114,101,102,101,114,101,110,99,101,115,0,0,0,0,0,0,0,67,108,97,115,115,105,102,121,83,116,97,116,101,0,0,0,67,108,97,115,115,105,102,121,32,83,116,97,116,101,0,0,83,105,109,105,108,97,114,105,116,121,73,110,100,101,120,0,83,105,109,105,108,97,114,105,116,121,32,73,110,100,101,120,0,0,0,0,0,0,0,0,68,111,99,117,109,101,110,116,78,111,116,101,115,0,0,0,68,111,99,117,109,101,110,116,32,78,111,116,101,115,0,0,68,111,99,117,109,101,110,116,72,105,115,116,111,114,121,0,68,111,99,117,109,101,110,116,32,72,105,115,116,111,114,121,0,0,0,0,0,0,0,0,69,120,105,102,67,97,109,101,114,97,73,110,102,111,0,0,69,120,105,102,32,67,97,109,101,114,97,32,73,110,102,111,0,0,0,0,0,0,0,0,83,101,114,105,97,108,78,117,109,98,101,114,0,0,0,0,68,114,105,118,101,77,111,100,101,0,0,0,0,0,0,0,82,101,115,111,108,117,116,105,111,110,77,111,100,101,0,0,65,70,77,111,100,101,0,0,70,111,99,117,115,83,101,116,116,105,110,103,0,0,0,0,87,104,105,116,101,66,97,108,97,110,99,101,0,0,0,0,69,120,112,111,115,117,114,101,77,111,100,101,0,0,0,0,77,101,116,101,114,105,110,103,77,111,100,101,0,0,0,0,76,101,110,115,70,111,99,97,108,82,97,110,103,101,0,0,67,111,108,111,114,83,112,97,99,101,0,0,0,0,0,0,69,120,112,111,115,117,114,101,67,111,109,112,101,110,115,97,116,105,111,110,0,0,0,0,67,111,110,116,114,97,115,116,0,0,0,0,0,0,0,0,83,104,97,100,111,119,0,0,72,105,103,104,108,105,103,104,116,0,0,0,0,0,0,0,83,97,116,117,114,97,116,105,111,110,0,0,0,0,0,0,83,104,97,114,112,110,101,115,115,0,0,0,0,0,0,0,88,51,70,105,108,108,76,105,103,104,116,0,0,0,0,0,67,111,108,111,114,65,100,106,117,115,116,109,101,110,116,0,65,100,106,117,115,116,109,101,110,116,77,111,100,101,0,0,81,117,97,108,105,116,121,0,70,105,114,109,119,97,114,101,0,0,0,0,0,0,0,0,83,111,102,116,119,97,114,101,0,0,0,0,0,0,0,0,65,117,116,111,66,114,97,99,107,101,116,0,0,0,0,0,80,114,101,118,105,101,119,73,109,97,103,101,83,116,97,114,116,0,0,0,0,0,0,0,80,114,101,118,105,101,119,73,109,97,103,101,76,101,110,103,116,104,0,0,0,0,0,0,80,114,101,118,105,101,119,73,109,97,103,101,83,105,122,101,0,0,0,0,0,0,0,0,77,97,107,101,114,78,111,116,101,86,101,114,115,105,111,110,0,0,0,0,0,0,0,0,65,70,80,111,105,110,116,0,70,105,108,101,70,111,114,109,97,116,0,0,0,0,0,0,67,97,108,105,98,114,97,116,105,111,110,0,0,0,0,0,67,111,108,111,114,77,111,100,101,0,0,0,0,0,0,0,76,101,110,115,65,112,101,114,116,117,114,101,82,97,110,103,101,0,0,0,0,0,0,0,70,78,117,109,98,101,114,0,69,120,112,111,115,117,114,101,84,105,109,101,0,0,0,0,69,120,112,111,115,117,114,101,84,105,109,101,50,0,0,0,66,117,114,115,116,83,104,111,116,0,0,0,0,0,0,0,83,101,110,115,111,114,84,101,109,112,101,114,97,116,117,114,101,0,0,0,0,0,0,0,70,108,97,115,104,69,120,112,111,115,117,114,101,67,111,109,112,0,0,0,0,0,0,0,80,105,99,116,117,114,101,77,111,100,101,0,0,0,0,0,67,104,114,111,109,105,110,97,110,99,101,78,111,105,115,101,82,101,100,117,99,116,105,111,110,0,0,0,0,0,0,0,76,117,109,105,110,97,110,99,101,78,111,105,115,101,82,101,100,117,99,116,105,111,110,0,69,120,112,111,115,117,114,101,67,111,109,112,101,110,115,97,116,105,111,110,95,83,68,49,0,0,0,0,0,0,0,0,70,105,114,109,119,97,114,101,95,83,68,49,0,0,0,0,84,101,108,101,99,111,110,118,101,114,116,101,114,0,0,0,87,104,105,116,101,66,97,108,97,110,99,101,70,105,110,101,84,117,110,101,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,0,0,80,114,105,110,116,73,77,0,77,117,108,116,105,66,117,114,115,116,77,111,100,101,0,0,77,117,108,116,105,66,117,114,115,116,73,109,97,103,101,87,105,100,116,104,0,0,0,0,77,117,108,116,105,66,117,114,115,116,73,109,97,103,101,72,101,105,103,104,116,0,0,0,80,97,110,111,114,97,109,97,0,0,0,0,0,0,0,0,80,114,101,118,105,101,119,73,109,97,103,101,0,0,0,0,66,114,105,103,104,116,110,101,115,115,0,0,0,0,0,0,76,111,110,103,69,120,112,111,115,117,114,101,78,111,105,115,101,82,101,100,117,99,116,105,111,110,0,0,0,0,0,0,72,105,103,104,73,83,79,78,111,105,115,101,82,101,100,117,99,116,105,111,110,0,0,0,72,68,82,0,0,0,0,0,77,117,108,116,105,70,114,97,109,101,78,111,105,115,101,82,101,100,117,99,116,105,111,110,0,0,0,0,0,0,0,0,83,104,111,116,73,110,102,111,0,0,0,0,0,0,0,0,83,111,110,121,77,111,100,101,108,73,68,0,0,0,0,0,67,111,108,111,114,82,101,112,114,111,100,117,99,116,105,111,110,0,0,0,0,0,0,0,67,111,108,111,114,84,101,109,112,101,114,97,116,117,114,101,0,0,0,0,0,0,0,0,67,111,108,111,114,67,111,109,112,101,110,115,97,116,105,111,110,70,105,108,116,101,114,0,83,99,101,110,101,77,111,100,101,0,0,0,0,0,0,0,90,111,110,101,77,97,116,99,104,105,110,103,0,0,0,0,68,121,110,97,109,105,99,82,97,110,103,101,79,112,116,105,109,105,122,101,114,0,0,0,73,109,97,103,101,83,116,97,98,105,108,105,122,97,116,105,111,110,0,0,0,0,0,0,76,101,110,115,84,121,112,101,0,0,0,0,0,0,0,0,77,105,110,111,108,116,97,77,97,107,101,114,78,111,116,101,0,0,0,0,0,0,0,0,70,117,108,108,73,109,97,103,101,83,105,122,101,0,0,0,77,97,99,114,111,0,0,0,70,111,99,117,115,77,111,100,101,0,0,0,0,0,0,0,65,70,73,108,108,117,109,105,110,97,116,111,114,0,0,0,81,117,97,108,105,116,121,50,0,0,0,0,0,0,0,0,70,108,97,115,104,76,101,118,101,108,0,0,0,0,0,0,82,101,108,101,97,115,101,77,111,100,101,0,0,0,0,0,83,101,113,117,101,110,99,101,78,117,109,98,101,114,0,0,65,110,116,105,45,66,108,117,114,0,0,0,0,0,0,0,73,110,116,101,108,108,105,103,101,110,116,65,117,116,111,0,87,104,105,116,101,66,97,108,97,110,99,101,50,0,0,0,80,101,110,116,97,120,86,101,114,115,105,111,110,0,0,0,80,101,110,116,97,120,77,111,100,101,0,0,0,0,0,0,80,101,110,116,97,120,77,111,100,101,108,73,68,0,0,0,80,101,110,116,97,120,32,80,101,110,116,97,120,77,111,100,101,108,73,68,32,86,97,108,117,101,115,0,0,0,0,0,68,97,116,101,0,0,0,0,84,105,109,101,0,0,0,0,80,101,110,116,97,120,73,109,97,103,101,83,105,122,101,0,70,108,97,115,104,77,111,100,101,0,0,0,0,0,0,0,65,70,80,111,105,110,116,83,101,108,101,99,116,101,100,0,65,70,80,111,105,110,116,115,73,110,70,111,99,117,115,0,70,111,99,117,115,80,111,115,105,116,105,111,110,0,0,0,73,83,79,0,0,0,0,0,76,105,103,104,116,82,101,97,100,105,110,103,0,0,0,0,65,117,116,111,66,114,97,99,107,101,116,105,110,103,0,0,87,104,105,116,101,66,97,108,97,110,99,101,77,111,100,101,0,0,0,0,0,0,0,0,66,108,117,101,66,97,108,97,110,99,101,0,0,0,0,0,82,101,100,66,97,108,97,110,99,101,0,0,0,0,0,0,70,111,99,97,108,76,101,110,103,116,104,0,0,0,0,0,68,105,103,105,116,97,108,90,111,111,109,0,0,0,0,0,87,111,114,108,100,84,105,109,101,76,111,99,97,116,105,111,110,0,0,0,0,0,0,0,72,111,109,101,116,111,119,110,67,105,116,121,0,0,0,0,80,101,110,116,97,120,32,67,105,116,121,32,86,97,108,117,101,115,0,0,0,0,0,0,68,101,115,116,105,110,97,116,105,111,110,67,105,116,121,0,72,111,109,101,116,111,119,110,68,83,84,0,0,0,0,0,68,101,115,116,105,110,97,116,105,111,110,68,83,84,0,0,68,83,80,70,105,114,109,119,97,114,101,86,101,114,115,105,111,110,0,0,0,0,0,0,67,80,85,70,105,114,109,119,97,114,101,86,101,114,115,105,111,110,0,0,0,0,0,0,70,114,97,109,101,78,117,109,98,101,114,0,0,0,0,0,69,102,102,101,99,116,105,118,101,76,86,0,0,0,0,0,73,109,97,103,101,80,114,111,99,101,115,115,105,110,103,0,83,101,110,115,111,114,83,105,122,101,0,0,0,0,0,0,82,97,119,73,109,97,103,101,83,105,122,101,0,0,0,0,80,114,101,118,105,101,119,73,109,97,103,101,66,111,114,100,101,114,115,0,0,0,0,0,80,101,110,116,97,120,32,76,101,110,115,84,121,112,101,32,86,97,108,117,101,115,0,0,83,101,110,115,105,116,105,118,105,116,121,65,100,106,117,115,116,0,0,0,0,0,0,0,73,109,97,103,101,80,114,111,99,101,115,115,105,110,103,67,111,117,110,116,0,0,0,0,67,97,109,101,114,97,84,101,109,112,101,114,97,116,117,114,101,0,0,0,0,0,0,0,65,69,76,111,99,107,0,0,78,111,105,115,101,82,101,100,117,99,116,105,111,110,0,0,73,109,97,103,101,84,111,110,101,0,0,0,0,0,0,0,83,104,97,107,101,82,101,100,117,99,116,105,111,110,73,110,102,111,0,0,0,0,0,0,80,101,110,116,97,120,32,83,82,73,110,102,111,32,84,97,103,115,0,0,0,0,0,0,83,104,117,116,116,101,114,67,111,117,110,116,0,0,0,0,70,97,99,101,73,110,102,111,0,0,0,0,0,0,0,0,80,101,110,116,97,120,32,70,97,99,101,73,110,102,111,32,84,97,103,115,0,0,0,0,72,117,101,0,0,0,0,0,65,87,66,73,110,102,111,0,80,101,110,116,97,120,32,65,87,66,73,110,102,111,32,84,97,103,115,0,0,0,0,0,68,121,110,97,109,105,99,82,97,110,103,101,69,120,112,97,110,115,105,111,110,0,0,0,84,105,109,101,73,110,102,111,0,0,0,0,0,0,0,0,80,101,110,116,97,120,32,84,105,109,101,73,110,102,111,32,84,97,103,115,0,0,0,0,72,105,103,104,76,111,119,75,101,121,65,100,106,0,0,0,67,111,110,116,114,97,115,116,72,105,103,104,108,105,103,104,116,0,0,0,0,0,0,0,67,111,110,116,114,97,115,116,83,104,97,100,111,119,0,0,67,111,110,116,114,97,115,116,72,105,103,104,108,105,103,104,116,83,104,97,100,111,119,65,100,106,0,0,0,0,0,0,70,105,110,101,83,104,97,114,112,110,101,115,115,0,0,0,65,70,65,100,106,117,115,116,109,101,110,116,0,0,0,0,77,111,110,111,99,104,114,111,109,101,70,105,108,116,101,114,69,102,102,101,99,116,0,0,77,111,110,111,99,104,114,111,109,101,84,111,110,105,110,103,0,0,0,0,0,0,0,0,70,97,99,101,68,101,116,101,99,116,0,0,0,0,0,0,70,97,99,101,68,101,116,101,99,116,70,114,97,109,101,83,105,122,101,0,0,0,0,0,83,104,97,100,111,119,67,111,109,112,101,110,115,97,116,105,111,110,0,0,0,0,0,0,73,83,79,65,117,116,111,80,97,114,97,109,101,116,101,114,115,0,0,0,0,0,0,0,67,114,111,115,115,80,114,111,99,101,115,115,0,0,0,0,76,101,110,115,67,111,114,114,0,0,0,0,0,0,0,0,80,101,110,116,97,120,32,76,101,110,115,67,111,114,114,32,84,97,103,115,0,0,0,0,66,108,101,97,99,104,66,121,112,97,115,115,84,111,110,105,110,103,0,0,0,0,0,0,66,108,97,99,107,80,111,105,110,116,0,0,0,0,0,0,87,104,105,116,101,80,111,105,110,116,0,0,0,0,0,0,67,111,108,111,114,77,97,116,114,105,120,65,0,0,0,0,67,111,108,111,114,77,97,116,114,105,120,66,0,0,0,0,80,101,110,116,97,120,32,67,97,109,101,114,97,83,101,116,116,105,110,103,115,32,84,97,103,115,0,0,0,0,0,0,65,69,73,110,102,111,0,0,80,101,110,116,97,120,32,65,69,73,110,102,111,32,84,97,103,115,0,0,0,0,0,0,76,101,110,115,73,110,102,111,0,0,0,0,0,0,0,0,80,101,110,116,97,120,32,76,101,110,115,73,110,102,111,32,84,97,103,115,0,0,0,0,70,108,97,115,104,73,110,102,111,0,0,0,0,0,0,0,80,101,110,116,97,120,32,70,108,97,115,104,73,110,102,111,32,84,97,103,115,0,0,0,65,69,77,101,116,101,114,105,110,103,83,101,103,109,101,110,116,115,0,0,0,0,0,0,70,108,97,115,104,77,101,116,101,114,105,110,103,83,101,103,109,101,110,116,115,0,0,0,83,108,97,118,101,70,108,97,115,104,77,101,116,101,114,105,110,103,83,101,103,109,101,110,116,115,0,0,0,0,0,0,87,66,95,82,71,71,66,76,101,118,101,108,115,68,97,121,108,105,103,104,116,0,0,0,87,66,95,82,71,71,66,76,101,118,101,108,115,83,104,97,100,101,0,0,0,0,0,0,87,66,95,82,71,71,66,76,101,118,101,108,115,67,108,111,117,100,121,0,0,0,0,0,87,66,95,82,71,71,66,76,101,118,101,108,115,84,117,110,103,115,116,101,110,0,0,0,87,66,95,82,71,71,66,76,101,118,101,108,115,70,108,117,111,114,101,115,99,101,110,116,68,0,0,0,0,0,0,0,87,66,95,82,71,71,66,76,101,118,101,108,115,70,108,117,111,114,101,115,99,101,110,116,78,0,0,0,0,0,0,0,87,66,95,82,71,71,66,76,101,118,101,108,115,70,108,117,111,114,101,115,99,101,110,116,87,0,0,0,0,0,0,0,87,66,95,82,71,71,66,76,101,118,101,108,115,70,108,97,115,104,0,0,0,0,0,0,67,97,109,101,114,97,73,110,102,111,0,0,0,0,0,0,80,101,110,116,97,120,32,67,97,109,101,114,97,73,110,102,111,32,84,97,103,115,0,0,66,97,116,116,101,114,121,73,110,102,111,0,0,0,0,0,80,101,110,116,97,120,32,66,97,116,116,101,114,121,73,110,102,111,32,84,97,103,115,0,83,97,116,117,114,97,116,105,111,110,73,110,102,111,0,0,65,70,73,110,102,111,0,0,80,101,110,116,97,120,32,65,70,73,110,102,111,32,84,97,103,115,0,0,0,0,0,0,67,111,108,111,114,73,110,102,111,0,0,0,0,0,0,0,80,101,110,116,97,120,32,67,111,108,111,114,73,110,102,111,32,84,97,103,115,0,0,0,69,86,83,116,101,112,73,110,102,111,0,0,0,0,0,0,80,101,110,116,97,120,32,69,86,83,116,101,112,73,110,102,111,32,84,97,103,115,0,0,80,101,110,116,97,120,32,83,104,111,116,73,110,102,111,32,84,97,103,115,0,0,0,0,70,97,99,101,80,111,115,0,80,101,110,116,97,120,32,70,97,99,101,80,111,115,32,84,97,103,115,0,0,0,0,0,70,97,99,101,83,105,122,101,0,0,0,0,0,0,0,0,80,101,110,116,97,120,32,70,97,99,101,83,105,122,101,32,84,97,103,115,0,0,0,0,70,105,108,116,101,114,73,110,102,111,0,0,0,0,0,0,80,101,110,116,97,120,32,70,105,108,116,101,114,73,110,102,111,32,84,97,103,115,0,0,76,101,118,101,108,73,110,102,111,0,0,0,0,0,0,0,80,101,110,116,97,120,32,76,101,118,101,108,73,110,102,111,32,84,97,103,115,0,0,0,65,114,116,105,115,116,0,0,67,111,112,121,114,105,103,104,116,0,0,0,0,0,0,0,70,105,114,109,119,97,114,101,86,101,114,115,105,111,110,0,67,111,110,116,114,97,115,116,68,101,116,101,99,116,65,70,65,114,101,97,0,0,0,0,67,114,111,115,115,80,114,111,99,101,115,115,80,97,114,97,109,115,0,0,0,0,0,0,68,97,116,97,68,117,109,112,0,0,0,0,0,0,0,0,84,111,110,101,67,117,114,118,101,0,0,0,0,0,0,0,84,111,110,101,67,117,114,118,101,115,0,0,0,0,0,0,72,111,109,101,116,111,119,110,67,105,116,121,67,111,100,101,0,0,0,0,0,0,0,0,68,101,115,116,105,110,97,116,105,111,110,67,105,116,121,67,111,100,101,0,0,0,0,0,80,114,101,118,105,101,119,73,109,97,103,101,68,97,116,97,0,0,0,0,0,0,0,0,67,97,112,116,117,114,101,32,77,111,100,101,0,0,0,0,81,117,97,108,105,116,121,32,76,101,118,101,108,0,0,0,70,111,99,117,115,32,77,111,100,101,0,0,0,0,0,0,70,108,97,115,104,32,77,111,100,101,0,0,0,0,0,0,87,104,105,116,101,32,66,97,108,97,110,99,101,0,0,0,68,105,103,105,116,97,108,32,90,111,111,109,0,0,0,0,73,83,79,32,83,112,101,101,100,0,0,0,0,0,0,0,67,111,108,111,114,0,0,0,84,105,109,101,32,90,111,110,101,0,0,0,0,0,0,0,68,97,121,108,105,103,104,116,32,83,97,118,105,110,103,115,0,0,0,0,0,0,0,0,73,109,97,103,101,81,117,97,108,105,116,121,0,0,0,0,65,70,65,114,101,97,77,111,100,101,0,0,0,0,0,0,77,97,99,114,111,77,111,100,101,0,0,0,0,0,0,0,83,104,111,111,116,105,110,103,77,111,100,101,0,0,0,0,65,117,100,105,111,0,0,0,69,97,115,121,77,111,100,101,0,0,0,0,0,0,0,0,87,104,105,116,101,66,97,108,97,110,99,101,66,105,97,115,0,0,0,0,0,0,0,0,70,108,97,115,104,66,105,97,115,0,0,0,0,0,0,0,73,110,116,101,114,110,97,108,83,101,114,105,97,108,78,117,109,98,101,114,0,0,0,0,80,97,110,97,115,111,110,105,99,69,120,105,102,86,101,114,115,105,111,110,0,0,0,0,67,111,108,111,114,69,102,102,101,99,116,0,0,0,0,0,84,105,109,101,83,105,110,99,101,80,111,119,101,114,79,110,0,0,0,0,0,0,0,0,66,117,114,115,116,77,111,100,101,0,0,0,0,0,0,0,67,111,110,116,114,97,115,116,77,111,100,101,0,0,0,0,83,101,108,102,84,105,109,101,114,0,0,0,0,0,0,0,82,111,116,97,116,105,111,110,0,0,0,0,0,0,0,0,65,70,65,115,115,105,115,116,76,97,109,112,0,0,0,0,66,97,98,121,65,103,101,95,48,120,48,48,51,51,0,0,79,112,116,105,99,97,108,90,111,111,109,77,111,100,101,0,67,111,110,118,101,114,115,105,111,110,76,101,110,115,0,0,84,114,97,118,101,108,68,97,121,0,0,0,0,0,0,0,84,101,120,116,83,116,97,109,112,95,48,120,48,48,51,66,0,0,0,0,0,0,0,0,80,114,111,103,114,97,109,73,83,79,0,0,0,0,0,0,65,100,118,97,110,99,101,100,83,99,101,110,101,77,111,100,101,0,0,0,0,0,0,0,84,101,120,116,83,116,97,109,112,95,48,120,48,48,51,69,0,0,0,0,0,0,0,0,70,97,99,101,115,68,101,116,101,99,116,101,100,0,0,0,70,105,108,109,77,111,100,101,0,0,0,0,0,0,0,0,87,66,65,100,106,117,115,116,65,66,0,0,0,0,0,0,87,66,65,100,106,117,115,116,71,77,0,0,0,0,0,0,80,97,110,97,115,111,110,105,99,73,109,97,103,101,87,105,100,116,104,0,0,0,0,0,80,97,110,97,115,111,110,105,99,73,109,97,103,101,72,101,105,103,104,116,0,0,0,0,65,70,80,111,105,110,116,80,111,115,105,116,105,111,110,0,70,97,99,101,68,101,116,73,110,102,111,0,0,0,0,0,80,97,110,97,115,111,110,105,99,32,70,97,99,101,68,101,116,73,110,102,111,32,84,97,103,115,0,0,0,0,0,0,76,101,110,115,83,101,114,105,97,108,78,117,109,98,101,114,0,0,0,0,0,0,0,0,65,99,99,101,115,115,111,114,121,84,121,112,101,0,0,0,84,114,97,110,115,102,111,114,109,0,0,0,0,0,0,0,73,110,116,101,108,108,105,103,101,110,116,69,120,112,111,115,117,114,101,0,0,0,0,0,70,97,99,101,82,101,99,73,110,102,111,0,0,0,0,0,80,97,110,97,115,111,110,105,99,32,70,97,99,101,82,101,99,73,110,102,111,32,84,97,103,115,0,0,0,0,0,0,70,108,97,115,104,87,97,114,110,105,110,103,0,0,0,0,82,101,99,111,103,110,105,122,101,100,70,97,99,101,70,108,97,103,115,63,0,0,0,0,66,97,98,121,78,97,109,101,0,0,0,0,0,0,0,0,76,111,99,97,116,105,111,110,0,0,0,0,0,0,0,0,67,111,117,110,116,114,121,0,83,116,97,116,101,0,0,0,76,97,110,100,109,97,114,107,0,0,0,0,0,0,0,0,73,110,116,101,108,108,105,103,101,110,116,82,101,115,111,108,117,116,105,111,110,0,0,0,73,110,116,101,108,108,105,103,101,110,116,68,45,82,97,110,103,101,0,0,0,0,0,0,87,66,82,101,100,76,101,118,101,108,0,0,0,0,0,0,87,66,71,114,101,101,110,76,101,118,101,108,0,0,0,0,87,66,66,108,117,101,76,101,118,101,108,0,0,0,0,0,70,108,97,115,104,70,105,114,101,100,0,0,0,0,0,0,84,101,120,116,83,116,97,109,112,95,48,120,56,48,48,56,0,0,0,0,0,0,0,0,84,101,120,116,83,116,97,109,112,95,48,120,56,48,48,57,0,0,0,0,0,0,0,0,66,97,98,121,65,103,101,95,48,120,56,48,49,48,0,0,77,105,110,111,108,116,97,67,97,109,101,114,97,83,101,116,116,105,110,103,115,79,108,100,0,0,0,0,0,0,0,0,77,105,110,111,108,116,97,67,97,109,101,114,97,83,101,116,116,105,110,103,115,0,0,0,67,111,109,112,114,101,115,115,101,100,73,109,97,103,101,83,105,122,101,0,0,0,0,0,84,104,117,109,98,110,97,105,108,73,109,97,103,101,0,0,66,111,100,121,70,105,114,109,119,97,114,101,86,101,114,115,105,111,110,0,0,0,0,0,83,112,101,99,105,97,108,77,111,100,101,0,0,0,0,0,66,87,77,111,100,101,0,0,70,111,99,97,108,80,108,97,110,101,68,105,97,103,111,110,97,108,0,0,0,0,0,0,76,101,110,115,68,105,115,116,111,114,116,105,111,110,80,97,114,97,109,115,0,0,0,0,67,97,109,101,114,97,84,121,112,101,0,0,0,0,0,0,84,101,120,116,73,110,102,111,0,0,0,0,0,0,0,0,79,108,121,109,112,117,115,32,84,101,120,116,73,110,102,111,32,84,97,103,115,0,0,0,67,97,109,101,114,97,73,68,0,0,0,0,0,0,0,0,69,112,115,111,110,73,109,97,103,101,87,105,100,116,104,0,69,112,115,111,110,73,109,97,103,101,72,101,105,103,104,116,0,0,0,0,0,0,0,0,69,112,115,111,110,83,111,102,116,119,97,114,101,0,0,0,80,114,101,67,97,112,116,117,114,101,70,114,97,109,101,115,0,0,0,0,0,0,0,0,87,104,105,116,101,66,111,97,114,100,0,0,0,0,0,0,79,110,101,84,111,117,99,104,87,66,0,0,0,0,0,0,87,104,105,116,101,66,97,108,97,110,99,101,66,114,97,99,107,101,116,0,0,0,0,0,80,114,105,110,116,73,77,32,84,97,103,115,0,0,0,0,68,97,116,97,68,117,109,112,50,0,0,0,0,0,0,0,83,104,117,116,116,101,114,83,112,101,101,100,86,97,108,117,101,0,0,0,0,0,0,0,73,83,79,86,97,108,117,101,0,0,0,0,0,0,0,0,65,112,101,114,116,117,114,101,86,97,108,117,101,0,0,0,66,114,105,103,104,116,110,101,115,115,86,97,108,117,101,0,70,108,97,115,104,68,101,118,105,99,101,0,0,0,0,0,76,101,110,115,84,101,109,112,101,114,97,116,117,114,101],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+327688);allocate([76,105,103,104,116,67,111,110,100,105,116,105,111,110,0,0,70,111,99,117,115,82,97,110,103,101,0,0,0,0,0,0,77,97,110,117,97,108,70,111,99,117,115,68,105,115,116,97,110,99,101,0,0,0,0,0,90,111,111,109,83,116,101,112,67,111,117,110,116,0,0,0,70,111,99,117,115,83,116,101,112,67,111,117,110,116,0,0,70,108,97,115,104,67,104,97,114,103,101,76,101,118,101,108,0,0,0,0,0,0,0,0,67,111,108,111,114,77,97,116,114,105,120,0,0,0,0,0,66,108,97,99,107,76,101,118,101,108,0,0,0,0,0,0,87,66,77,111,100,101,0,0,67,111,108,111,114,77,97,116,114,105,120,78,117,109,98,101,114,0,0,0,0,0,0,0,73,110,116,101,114,110,97,108,70,108,97,115,104,84,97,98,108,101,0,0,0,0,0,0,69,120,116,101,114,110,97,108,70,108,97,115,104,71,86,97,108,117,101,0,0,0,0,0,69,120,116,101,114,110,97,108,70,108,97,115,104,66,111,117,110,99,101,0,0,0,0,0,69,120,116,101,114,110,97,108,70,108,97,115,104,90,111,111,109,0,0,0,0,0,0,0,69,120,116,101,114,110,97,108,70,108,97,115,104,77,111,100,101,0,0,0,0,0,0,0,83,104,97,114,112,110,101,115,115,70,97,99,116,111,114,0,67,111,108,111,114,67,111,110,116,114,111,108,0,0,0,0,86,97,108,105,100,66,105,116,115,0,0,0,0,0,0,0,67,111,114,105,110,103,70,105,108,116,101,114,0,0,0,0,79,108,121,109,112,117,115,73,109,97,103,101,87,105,100,116,104,0,0,0,0,0,0,0,79,108,121,109,112,117,115,73,109,97,103,101,72,101,105,103,104,116,0,0,0,0,0,0,83,99,101,110,101,68,101,116,101,99,116,0,0,0,0,0,83,99,101,110,101,65,114,101,97,63,0,0,0,0,0,0,83,99,101,110,101,68,101,116,101,99,116,68,97,116,97,63,0,0,0,0,0,0,0,0,67,111,109,112,114,101,115,115,105,111,110,82,97,116,105,111,0,0,0,0,0,0,0,0,80,114,101,118,105,101,119,73,109,97,103,101,86,97,108,105,100,0,0,0,0,0,0,0,65,70,82,101,115,117,108,116,0,0,0,0,0,0,0,0,67,67,68,83,99,97,110,77,111,100,101,0,0,0,0,0,73,110,102,105,110,105,116,121,76,101,110,115,83,116,101,112,0,0,0,0,0,0,0,0,78,101,97,114,76,101,110,115,83,116,101,112,0,0,0,0,76,105,103,104,116,86,97,108,117,101,67,101,110,116,101,114,0,0,0,0,0,0,0,0,76,105,103,104,116,86,97,108,117,101,80,101,114,105,112,104,101,114,121,0,0,0,0,0,69,113,117,105,112,109,101,110,116,0,0,0,0,0,0,0,79,108,121,109,112,117,115,32,69,113,117,105,112,109,101,110,116,32,84,97,103,115,0,0,79,108,121,109,112,117,115,32,67,97,109,101,114,97,83,101,116,116,105,110,103,115,32,84,97,103,115,0,0,0,0,0,82,97,119,68,101,118,101,108,111,112,109,101,110,116,0,0,79,108,121,109,112,117,115,32,82,97,119,68,101,118,101,108,111,112,109,101,110,116,32,84,97,103,115,0,0,0,0,0,79,108,121,109,112,117,115,32,73,109,97,103,101,80,114,111,99,101,115,115,105,110,103,32,84,97,103,115,0,0,0,0,70,111,99,117,115,73,110,102,111,0,0,0,0,0,0,0,79,108,121,109,112,117,115,32,70,111,99,117,115,73,110,102,111,32,84,97,103,115,0,0,79,108,121,109,112,117,115,50,49,48,48,0,0,0,0,0,79,108,121,109,112,117,115,32,70,69,32,84,97,103,115,0,79,108,121,109,112,117,115,50,50,48,48,0,0,0,0,0,79,108,121,109,112,117,115,50,51,48,48,0,0,0,0,0,79,108,121,109,112,117,115,50,52,48,48,0,0,0,0,0,79,108,121,109,112,117,115,50,53,48,48,0,0,0,0,0,79,108,121,109,112,117,115,50,54,48,48,0,0,0,0,0,79,108,121,109,112,117,115,50,55,48,48,0,0,0,0,0,79,108,121,109,112,117,115,50,56,48,48,0,0,0,0,0,79,108,121,109,112,117,115,50,57,48,48,0,0,0,0,0,82,97,119,73,110,102,111,0,79,108,121,109,112,117,115,32,82,97,119,73,110,102,111,32,84,97,103,115,0,0,0,0,77,97,105,110,73,110,102,111,0,0,0,0,0,0,0,0,79,108,121,109,112,117,115,32,77,97,105,110,73,110,102,111,32,84,97,103,115,0,0,0,70,108,97,115,104,83,101,116,116,105,110,103,0,0,0,0,70,108,97,115,104,84,121,112,101,0,0,0,0,0,0,0,87,66,95,82,66,76,101,118,101,108,115,0,0,0,0,0,80,114,111,103,114,97,109,83,104,105,102,116,0,0,0,0,69,120,112,111,115,117,114,101,68,105,102,102,101,114,101,110,99,101,0,0,0,0,0,0,73,83,79,83,101,108,101,99,116,105,111,110,0,0,0,0,80,114,101,118,105,101,119,73,70,68,0,0,0,0,0,0,73,83,79,83,101,116,116,105,110,103,0,0,0,0,0,0,67,111,108,111,114,66,97,108,97,110,99,101,65,0,0,0,73,109,97,103,101,66,111,117,110,100,97,114,121,0,0,0,70,108,97,115,104,69,120,112,111,115,117,114,101,66,114,97,99,107,101,116,86,97,108,117,101,0,0,0,0,0,0,0,69,120,112,111,115,117,114,101,66,114,97,99,107,101,116,86,97,108,117,101,0,0,0,0,67,114,111,112,72,105,83,112,101,101,100,0,0,0,0,0,69,120,112,111,115,117,114,101,84,117,110,105,110,103,0,0,86,82,73,110,102,111,0,0,73,109,97,103,101,65,117,116,104,101,110,116,105,99,97,116,105,111,110,0,0,0,0,0,65,99,116,105,118,101,68,45,76,105,103,104,116,105,110,103,0,0,0,0,0,0,0,0,80,105,99,116,117,114,101,67,111,110,116,114,111,108,0,0,87,111,114,108,100,84,105,109,101,0,0,0,0,0,0,0,73,83,79,73,110,102,111,0,86,105,103,110,101,116,116,101,67,111,110,116,114,111,108,0,68,105,115,116,111,114,116,73,110,102,111,0,0,0,0,0,73,109,97,103,101,65,100,106,117,115,116,109,101,110,116,0,84,111,110,101,67,111,109,112,0,0,0,0,0,0,0,0,65,117,120,105,108,105,97,114,121,76,101,110,115,0,0,0,76,101,110,115,0,0,0,0,76,101,110,115,70,83,116,111,112,115,0,0,0,0,0,0,67,111,110,116,114,97,115,116,67,117,114,118,101,0,0,0,67,111,108,111,114,72,117,101,0,0,0,0,0,0,0,0,76,105,103,104,116,83,111,117,114,99,101,0,0,0,0,0,72,117,101,65,100,106,117,115,116,109,101,110,116,0,0,0,78,69,70,67,111,109,112,114,101,115,115,105,111,110,0,0,76,105,110,101,97,114,105,122,97,116,105,111,110,84,97,98,108,101,0,0,0,0,0,0,67,111,108,111,114,66,97,108,97,110,99,101,0,0,0,0,76,101,110,115,68,97,116,97,0,0,0,0,0,0,0,0,82,97,119,73,109,97,103,101,67,101,110,116,101,114,0,0,83,101,110,115,111,114,80,105,120,101,108,83,105,122,101,0,83,99,101,110,101,65,115,115,105,115,116,0,0,0,0,0,82,101,116,111,117,99,104,72,105,115,116,111,114,121,0,0,73,109,97,103,101,68,97,116,97,83,105,122,101,0,0,0,73,109,97,103,101,67,111,117,110,116,0,0,0,0,0,0,68,101,108,101,116,101,100,73,109,97,103,101,67,111,117,110,116,0,0,0,0,0,0,0,73,109,97,103,101,79,112,116,105,109,105,122,97,116,105,111,110,0,0,0,0,0,0,0,86,97,114,105,80,114,111,103,114,97,109,0,0,0,0,0,65,70,82,101,115,112,111,110,115,101,0,0,0,0,0,0,77,117,108,116,105,69,120,112,111,115,117,114,101,0,0,0,84,111,110,105,110,103,69,102,102,101,99,116,0,0,0,0,80,111,119,101,114,85,112,84,105,109,101,0,0,0,0,0,65,70,73,110,102,111,50,0,70,105,108,101,73,110,102,111,0,0,0,0,0,0,0,0,65,70,84,117,110,101,0,0,78,105,107,111,110,67,97,112,116,117,114,101,68,97,116,97,0,0,0,0,0,0,0,0,78,105,107,111,110,67,97,112,116,117,114,101,86,101,114,115,105,111,110,0,0,0,0,0,78,105,107,111,110,67,97,112,116,117,114,101,79,102,102,115,101,116,115,0,0,0,0,0,78,105,107,111,110,83,99,97,110,73,70,68,0,0,0,0,78,105,107,111,110,73,67,67,80,114,111,102,105,108,101,0,78,105,107,111,110,67,97,112,116,117,114,101,79,117,116,112,117,116,0,0,0,0,0,0,78,69,70,66,105,116,68,101,112,116,104,0,0,0,0,0,70,97,109,105,108,121,73,68,0,0,0,0,0,0,0,0,67,67,68,83,101,110,115,105,116,105,118,105,116,121,0,0,70,111,99,117,115,0,0,0,70,105,115,104,101,121,101,67,111,110,118,101,114,116,101,114,0,0,0,0,0,0,0,0,77,105,110,111,108,116,97,67,97,109,101,114,97,83,101,116,116,105,110,103,115,55,68,0,77,105,110,111,108,116,97,81,117,97,108,105,116,121,0,0,77,105,110,111,108,116,97,73,109,97,103,101,83,105,122,101,0,0,0,0,0,0,0,0,82,97,119,65,110,100,74,112,103,82,101,99,111,114,100,105,110,103,0,0,0,0,0,0,77,105,110,111,108,116,97,67,97,109,101,114,97,83,101,116,116,105,110,103,115,53,68,0,77,105,110,111,108,116,97,67,97,109,101,114,97,83,101,116,116,105,110,103,115,50,0,0,80,114,105,110,116,32,73,109,97,103,101,32,77,97,116,99,104,105,110,103,32,73,110,102,111,0,0,0,0,0,0,0,86,101,114,115,105,111,110,0,70,117,106,105,70,108,97,115,104,77,111,100,101,0,0,0,70,111,99,117,115,80,105,120,101,108,0,0,0,0,0,0,83,108,111,119,83,121,110,99,0,0,0,0,0,0,0,0,69,88,82,65,117,116,111,0,69,88,82,77,111,100,101,0,65,117,116,111,66,114,97,99,107,101,116,116,105,110,103,0,66,108,117,114,87,97,114,110,105,110,103,0,0,0,0,0,70,111,99,117,115,87,97,114,110,105,110,103,0,0,0,0,69,120,112,111,115,117,114,101,87,97,114,110,105,110,103,0,68,121,110,97,109,105,99,82,97,110,103,101,0,0,0,0,68,121,110,97,109,105,99,82,97,110,103,101,83,101,116,116,105,110,103,0,0,0,0,0,68,101,118,101,108,111,112,109,101,110,116,68,121,110,97,109,105,99,82,97,110,103,101,0,77,105,110,70,111,99,97,108,76,101,110,103,116,104,0,0,77,97,120,70,111,99,97,108,76,101,110,103,116,104,0,0,77,97,120,65,112,101,114,116,117,114,101,65,116,77,105,110,70,111,99,97,108,0,0,0,77,97,120,65,112,101,114,116,117,114,101,65,116,77,97,120,70,111,99,97,108,0,0,0,70,97,99,101,80,111,115,105,116,105,111,110,115,0,0,0,70,105,108,101,83,111,117,114,99,101,0,0,0,0,0,0,79,114,100,101,114,78,117,109,98,101,114,0,0,0,0,0,80,97,114,97,108,108,97,120,0,0,0,0,0,0,0,0,81,117,97,108,105,116,121,77,111,100,101,0,0,0,0,0,67,97,115,105,111,73,109,97,103,101,83,105,122,101,0,0,70,105,114,109,119,97,114,101,68,97,116,101,0,0,0,0,79,98,106,101,99,116,68,105,115,116,97,110,99,101,0,0,70,108,97,115,104,68,105,115,116,97,110,99,101,0,0,0,83,112,101,99,105,97,108,69,102,102,101,99,116,77,111,100,101,0,0,0,0,0,0,0,82,101,99,111,114,100,77,111,100,101,0,0,0,0,0,0,66,101,115,116,83,104,111,116,77,111,100,101,0,0,0,0,65,117,116,111,73,83,79,0,69,110,104,97,110,99,101,109,101,110,116,0,0,0,0,0,67,111,108,111,114,70,105,108,116,101,114,0,0,0,0,0,65,114,116,77,111,100,101,0,66,114,97,99,107,101,116,83,101,113,117,101,110,99,101,0,76,105,103,104,116,105,110,103,77,111,100,101,0,0,0,0,80,111,114,116,114,97,105,116,82,101,102,105,110,101,114,0,83,112,101,99,105,97,108,69,102,102,101,99,116,76,101,118,101,108,0,0,0,0,0,0,83,112,101,99,105,97,108,69,102,102,101,99,116,83,101,116,116,105,110,103,0,0,0,0,67,97,112,116,117,114,101,70,114,97,109,101,82,97,116,101,0,0,0,0,0,0,0,0,86,105,100,101,111,81,117,97,108,105,116,121,0,0,0,0,82,101,99,111,114,100,105,110,103,77,111,100,101,0,0,0,70,108,97,115,104,73,110,116,101,110,115,105,116,121,0,0,67,97,110,111,110,67,97,109,101,114,97,83,101,116,116,105,110,103,115,0,0,0,0,0,67,97,110,111,110,32,67,97,109,101,114,97,83,101,116,116,105,110,103,115,32,84,97,103,115,0,0,0,0,0,0,0,67,97,110,111,110,70,111,99,97,108,76,101,110,103,116,104,0,0,0,0,0,0,0,0,67,97,110,111,110,32,70,111,99,97,108,76,101,110,103,116,104,32,84,97,103,115,0,0,67,97,110,111,110,70,108,97,115,104,73,110,102,111,63,0,67,97,110,111,110,83,104,111,116,73,110,102,111,0,0,0,67,97,110,111,110,32,83,104,111,116,73,110,102,111,32,84,97,103,115,0,0,0,0,0,67,97,110,111,110,80,97,110,111,114,97,109,97,0,0,0,67,97,110,111,110,32,80,97,110,111,114,97,109,97,32,84,97,103,115,0,0,0,0,0,67,97,110,111,110,73,109,97,103,101,84,121,112,101,0,0,67,97,110,111,110,70,105,114,109,119,97,114,101,86,101,114,115,105,111,110,0,0,0,0,70,105,108,101,78,117,109,98,101,114,0,0,0,0,0,0,79,119,110,101,114,78,97,109,101,0,0,0,0,0,0,0,85,110,107,110,111,119,110,68,51,48,0,0,0,0,0,0,67,97,110,111,110,32,85,110,107,110,111,119,110,68,51,48,32,84,97,103,115,0,0,0,67,97,110,111,110,67,97,109,101,114,97,73,110,102,111,0,67,97,110,111,110,32,67,97,109,101,114,97,73,110,102,111,32,84,97,103,115,0,0,0,67,97,110,111,110,70,105,108,101,76,101,110,103,116,104,0,67,97,110,111,110,67,117,115,116,111,109,70,117,110,99,116,105,111,110,115,0,0,0,0,67,117,115,116,111,109,32,70,117,110,99,116,105,111,110,115,0,0,0,0,0,0,0,0,67,97,110,111,110,77,111,100,101,108,73,68,0,0,0,0,67,97,110,111,110,65,70,73,110,102,111,0,0,0,0,0,67,97,110,111,110,32,65,70,73,110,102,111,32,84,97,103,115,0,0,0,0,0,0,0,84,104,117,109,98,110,97,105,108,73,109,97,103,101,86,97,108,105,100,65,114,101,97,0,83,101,114,105,97,108,78,117,109,98,101,114,70,111,114,109,97,116,0,0,0,0,0,0,83,117,112,101,114,77,97,99,114,111,0,0,0,0,0,0,68,97,116,101,83,116,97,109,112,77,111,100,101,0,0,0,77,121,67,111,108,111,114,115,0,0,0,0,0,0,0,0,70,105,114,109,119,97,114,101,82,101,118,105,115,105,111,110,0,0,0,0,0,0,0,0,67,97,116,101,103,111,114,105,101,115,0,0,0,0,0,0,70,97,99,101,68,101,116,101,99,116,49,0,0,0,0,0,70,97,99,101,68,101,116,101,99,116,50,0,0,0,0,0,67,97,110,111,110,65,70,73,110,102,111,50,0,0,0,0,67,97,110,111,110,32,65,70,73,110,102,111,50,32,84,97,103,115,0,0,0,0,0,0,73,109,97,103,101,85,110,105,113,117,101,73,68,0,0,0,82,97,119,68,97,116,97,79,102,102,115,101,116,0,0,0,79,114,105,103,105,110,97,108,68,101,99,105,115,105,111,110,68,97,116,97,79,102,102,115,101,116,0,0,0,0,0,0,67,117,115,116,111,109,70,117,110,99,116,105,111,110,115,49,68,0,0,0,0,0,0,0,67,97,110,111,110,67,117,115,116,111,109,32,70,117,110,99,116,105,111,110,115,49,68,32,84,97,103,115,0,0,0,0,80,101,114,115,111,110,97,108,70,117,110,99,116,105,111,110,115,0,0,0,0,0,0,0,67,97,110,111,110,67,117,115,116,111,109,32,80,101,114,115,111,110,97,108,70,117,110,99,115,32,84,97,103,115,0,0,80,101,114,115,111,110,97,108,70,117,110,99,116,105,111,110,86,97,108,117,101,115,0,0,67,97,110,111,110,67,117,115,116,111,109,32,80,101,114,115,111,110,97,108,70,117,110,99,86,97,108,117,101,115,32,84,97,103,115,0,0,0,0,0,67,97,110,111,110,70,105,108,101,73,110,102,111,0,0,0,67,97,110,111,110,32,70,105,108,101,73,110,102,111,32,84,97,103,115,0,0,0,0,0,65,70,80,111,105,110,116,115,73,110,70,111,99,117,115,49,68,0,0,0,0,0,0,0,76,101,110,115,77,111,100,101,108,0,0,0,0,0,0,0,83,101,114,105,97,108,73,110,102,111,0,0,0,0,0,0,68,117,115,116,82,101,109,111,118,97,108,68,97,116,97,0,67,114,111,112,73,110,102,111,0,0,0,0,0,0,0,0,67,117,115,116,111,109,70,117,110,99,116,105,111,110,115,50,0,0,0,0,0,0,0,0,65,115,112,101,99,116,73,110,102,111,0,0,0,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,0,0,84,111,110,101,67,117,114,118,101,84,97,98,108,101,0,0,83,104,97,114,112,110,101,115,115,84,97,98,108,101,0,0,83,104,97,114,112,110,101,115,115,70,114,101,113,84,97,98,108,101,0,0,0,0,0,0,87,104,105,116,101,66,97,108,97,110,99,101,84,97,98,108,101,0,0,0,0,0,0,0,77,101,97,115,117,114,101,100,67,111,108,111,114,0,0,0,67,97,110,111,110,70,108,97,103,115,0,0,0,0,0,0,77,111,100,105,102,105,101,100,73,110,102,111,0,0,0,0,84,111,110,101,67,117,114,118,101,77,97,116,99,104,105,110,103,0,0,0,0,0,0,0,87,104,105,116,101,66,97,108,97,110,99,101,77,97,116,99,104,105,110,103,0,0,0,0,80,114,101,118,105,101,119,73,109,97,103,101,73,110,102,111,0,0,0,0,0,0,0,0,86,82,68,79,102,102,115,101,116,0,0,0,0,0,0,0,79,102,102,115,101,116,32,111,102,32,86,82,68,32,39,114,101,99,105,112,101,32,100,97,116,97,39,32,105,102,32,105,116,32,101,120,105,115,116,115,0,0,0,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,0,0,0,0,0,0,67,111,108,111,114,68,97,116,97,0,0,0,0,0,0,0,67,97,110,111,110,32,67,111,108,111,114,68,97,116,97,32,84,97,103,115,0,0,0,0,67,82,87,80,97,114,97,109,63,0,0,0,0,0,0,0,70,108,97,118,111,114,63,0,66,108,97,99,107,76,101,118,101,108,63,0,0,0,0,0,67,117,115,116,111,109,80,105,99,116,117,114,101,83,116,121,108,101,70,105,108,101,78,97,109,101,0,0,0,0,0,0,65,70,77,105,99,114,111,65,100,106,0,0,0,0,0,0,86,105,103,110,101,116,116,105,110,103,67,111,114,114,0,0,86,105,103,110,101,116,116,105,110,103,67,111,114,114,50,0,76,105,103,104,116,105,110,103,79,112,116,0,0,0,0,0,65,109,98,105,101,110,99,101,73,110,102,111,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,77,97,99,114,111,77,111,100,101,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,83,101,108,102,84,105,109,101,114,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,81,117,97,108,105,116,121,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,67,97,110,111,110,70,108,97,115,104,77,111,100,101,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,67,111,110,116,105,110,117,111,117,115,68,114,105,118,101,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,48,54,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,70,111,99,117,115,77,111,100,101,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,48,56,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,82,101,99,111,114,100,77,111,100,101,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,67,97,110,111,110,73,109,97,103,101,83,105,122,101,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,69,97,115,121,77,111,100,101,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,68,105,103,105,116,97,108,90,111,111,109,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,67,111,110,116,114,97,115,116,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,83,97,116,117,114,97,116,105,111,110,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,83,104,97,114,112,110,101,115,115,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,67,97,109,101,114,97,73,83,79,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,77,101,116,101,114,105,110,103,77,111,100,101,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,70,111,99,117,115,82,97,110,103,101,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,65,70,80,111,105,110,116,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,67,97,110,111,110,69,120,112,111,115,117,114,101,77,111,100,101,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,49,53,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,76,101,110,115,84,121,112,101,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,76,111,110,103,70,111,99,97,108,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,83,104,111,114,116,70,111,99,97,108,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,70,111,99,97,108,85,110,105,116,115,0,0,0,0,0,0,0,70,111,99,97,108,32,85,110,105,116,115,32,112,101,114,32,109,109,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,77,97,120,65,112,101,114,116,117,114,101,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,77,105,110,65,112,101,114,116,117,114,101,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,70,108,97,115,104,65,99,116,105,118,105,116,121,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,70,108,97,115,104,66,105,116,115,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,49,69,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,49,70,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,70,111,99,117,115,67,111,110,116,105,110,117,111,117,115,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,65,69,83,101,116,116,105,110,103,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,73,109,97,103,101,83,116,97,98,105,108,105,122,97,116,105,111,110,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,68,105,115,112,108,97,121,65,112,101,114,116,117,114,101,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,90,111,111,109,83,111,117,114,99,101,87,105,100,116,104,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,90,111,111,109,84,97,114,103,101,116,87,105,100,116,104,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,50,54,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,83,112,111,116,77,101,116,101,114,105,110,103,77,111,100,101,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,80,104,111,116,111,69,102,102,101,99,116,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,77,97,110,117,97,108,70,108,97,115,104,79,117,116,112,117,116,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,67,111,108,111,114,84,111,110,101,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,50,66,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,50,67,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,50,68,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,83,82,65,87,81,117,97,108,105,116,121,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,50,70,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,51,48,0,0,0,70,111,99,97,108,76,101,110,103,116,104,58,70,111,99,97,108,84,121,112,101,0,0,0,70,111,99,97,108,76,101,110,103,116,104,58,70,111,99,97,108,76,101,110,103,116,104,0,70,111,99,97,108,76,101,110,103,116,104,58,70,111,99,97,108,80,108,97,110,101,88,83,105,122,101,0,0,0,0,0,70,111,99,97,108,76,101,110,103,116,104,58,70,111,99,97,108,80,108,97,110,101,89,83,105,122,101,0,0,0,0,0,83,104,111,116,73,110,102,111,58,65,117,116,111,73,83,79,0,0,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,66,97,115,101,73,83,79,0,0,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,77,101,97,115,117,114,101,100,69,86,0,0,0,0,0,83,104,111,116,73,110,102,111,58,84,97,114,103,101,116,65,112,101,114,116,117,114,101,0,83,104,111,116,73,110,102,111,58,84,97,114,103,101,116,69,120,112,111,115,117,114,101,84,105,109,101,0,0,0,0,0,83,104,111,116,73,110,102,111,58,69,120,112,111,115,117,114,101,67,111,109,112,101,110,115,97,116,105,111,110,0,0,0,83,104,111,116,73,110,102,111,58,87,104,105,116,101,66,97,108,97,110,99,101,0,0,0,83,104,111,116,73,110,102,111,58,83,108,111,119,83,104,117,116,116,101,114,0,0,0,0,83,104,111,116,73,110,102,111,58,83,101,113,117,101,110,99,101,78,117,109,98,101,114,0,83,104,111,116,73,110,102,111,58,79,112,116,105,99,97,108,90,111,111,109,67,111,100,101,0,0,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,48,120,48,48,48,66,0,83,104,111,116,73,110,102,111,58,67,97,109,101,114,97,84,101,109,112,101,114,97,116,117,114,101,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,70,108,97,115,104,71,117,105,100,101,78,117,109,98,101,114,0,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,65,70,80,111,105,110,116,115,73,110,70,111,99,117,115,0,0,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,70,108,97,115,104,69,120,112,111,115,117,114,101,67,111,109,112,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,65,117,116,111,69,120,112,111,115,117,114,101,66,114,97,99,107,101,116,105,110,103,0,83,104,111,116,73,110,102,111,58,65,69,66,66,114,97,99,107,101,116,86,97,108,117,101,0,0,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,67,111,110,116,114,111,108,77,111,100,101,0,0,0,0,83,104,111,116,73,110,102,111,58,70,111,99,117,115,68,105,115,116,97,110,99,101,85,112,112,101,114,0,0,0,0,0,83,104,111,116,73,110,102,111,58,70,111,99,117,115,68,105,115,116,97,110,99,101,76,111,119,101,114,0,0,0,0,0,83,104,111,116,73,110,102,111,58,70,78,117,109,98,101,114,0,0,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,69,120,112,111,115,117,114,101,84,105,109,101,0,0,0,83,104,111,116,73,110,102,111,58,77,101,97,115,117,114,101,100,69,86,50,0,0,0,0,83,104,111,116,73,110,102,111,58,66,117,108,98,68,117,114,97,116,105,111,110,0,0,0,83,104,111,116,73,110,102,111,58,48,120,48,48,49,57,0,83,104,111,116,73,110,102,111,58,67,97,109,101,114,97,84,121,112,101,0,0,0,0,0,83,104,111,116,73,110,102,111,58,65,117,116,111,82,111,116,97,116,101,0,0,0,0,0,83,104,111,116,73,110,102,111,58,78,68,70,105,108,116,101,114,0,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,83,101,108,102,84,105,109,101,114,50,0,0,0,0,0,83,104,111,116,73,110,102,111,58,48,120,48,48,49,69,0,83,104,111,116,73,110,102,111,58,48,120,48,48,49,70,0,83,104,111,116,73,110,102,111,58,48,120,48,48,50,48,0,83,104,111,116,73,110,102,111,58,70,108,97,115,104,79,117,116,112,117,116,0,0,0,0,65,70,73,110,102,111,58,78,117,109,65,70,80,111,105,110,116,115,0,0,0,0,0,0,65,70,73,110,102,111,58,86,97,108,105,100,65,70,80,111,105,110,116,115,0,0,0,0,65,70,73,110,102,111,58,67,97,110,111,110,73,109,97,103,101,87,105,100,116,104,0,0,65,70,73,110,102,111,58,67,97,110,111,110,73,109,97,103,101,72,101,105,103,104,116,0,65,70,73,110,102,111,58,65,70,73,109,97,103,101,87,105,100,116,104,0,0,0,0,0,65,70,73,110,102,111,58,65,70,73,109,97,103,101,72,101,105,103,104,116,0,0,0,0,65,70,73,110,102,111,58,65,70,65,114,101,97,87,105,100,116,104,0,0,0,0,0,0,65,70,73,110,102,111,58,65,70,65,114,101,97,72,101,105,103,104,116,0,0,0,0,0,65,70,73,110,102,111,58,65,70,65,114,101,97,88,80,111,115,105,116,105,111,110,115,0,65,70,73,110,102,111,58,65,70,65,114,101,97,89,80,111,115,105,116,105,111,110,115,0,65,70,73,110,102,111,58,65,70,80,111,105,110,116,115,73,110,70,111,99,117,115,0,0,65,70,73,110,102,111,58,80,114,105,109,97,114,121,65,70,80,111,105,110,116,63,0,0,65,70,73,110,102,111,58,80,114,105,109,97,114,121,65,70,80,111,105,110,116,0,0,0,65,70,73,110,102,111,58,48,120,48,48,48,68,0,0,0,65,70,73,110,102,111,58,48,120,48,48,48,69,0,0,0,65,70,73,110,102,111,58,48,120,48,48,48,70,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,48,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,49,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,50,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,51,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,52,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,53,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,54,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,55,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,56,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,57,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,65,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,66,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,84,111,110,101,67,117,114,118,101,0,0,0,0,0,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,83,104,97,114,112,110,101,115,115,0,0,0,0,0,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,83,104,97,114,112,110,101,115,115,70,114,101,113,117,101,110,99,121,0,0,0,0,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,83,101,110,115,111,114,82,101,100,76,101,118,101,108,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,83,101,110,115,111,114,66,108,117,101,76,101,118,101,108,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,87,104,105,116,101,66,97,108,97,110,99,101,82,101,100,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,87,104,105,116,101,66,97,108,97,110,99,101,66,108,117,101,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,87,104,105,116,101,66,97,108,97,110,99,101,0,0,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,67,111,108,111,114,84,101,109,112,101,114,97,116,117,114,101,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,80,105,99,116,117,114,101,83,116,121,108,101,0,0,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,68,105,103,105,116,97,108,71,97,105,110,0,0,0,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,87,66,83,104,105,102,116,65,66,0,0,0,0,0,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,87,66,83,104,105,102,116,71,77,0,0,0,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,83,101,110,115,111,114,87,105,100,116,104,0,0,83,101,110,115,111,114,73,110,102,111,58,83,101,110,115,111,114,72,101,105,103,104,116,0,83,101,110,115,111,114,73,110,102,111,58,48,120,48,48,48,51,0,0,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,48,120,48,48,48,52,0,0,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,83,101,110,115,111,114,76,101,102,116,66,111,114,100,101,114,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,83,101,110,115,111,114,84,111,112,66,111,114,100,101,114,0,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,83,101,110,115,111,114,82,105,103,104,116,66,111,114,100,101,114,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,83,101,110,115,111,114,66,111,116,116,111,109,66,111,114,100,101,114,0,0,0,83,101,110,115,111,114,73,110,102,111,58,66,108,97,99,107,77,97,115,107,76,101,102,116,66,111,114,100,101,114,0,0,83,101,110,115,111,114,73,110,102,111,58,66,108,97,99,107,77,97,115,107,84,111,112,66,111,114,100,101,114,0,0,0,83,101,110,115,111,114,73,110,102,111,58,66,108,97,99,107,77,97,115,107,82,105,103,104,116,66,111,114,100,101,114,0,83,101,110,115,111,114,73,110,102,111,58,66,108,97,99,107,77,97,115,107,66,111,116,116,111,109,66,111,114,100,101,114,0,0,0,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,48,120,48,48,48,68,0,0,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,48,120,48,48,48,69,0,0,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,48,120,48,48,48,70,0,0,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,48,120,48,48,49,48,0,0,0,0,0,0,0,73,110,116,101,114,111,112,101,114,97,98,105,108,105,116,121,73,110,100,101,120,0,0,0,73,110,116,101,114,111,112,101,114,97,98,105,108,105,116,121,32,73,100,101,110,116,105,102,105,99,97,116,105,111,110,0,73,110,116,101,114,111,112,101,114,97,98,105,108,105,116,121,86,101,114,115,105,111,110,0,73,110,116,101,114,111,112,101,114,97,98,105,108,105,116,121,32,118,101,114,115,105,111,110,0,0,0,0,0,0,0,0,82,101,108,97,116,101,100,73,109,97,103,101,70,105,108,101,70,111,114,109,97,116,0,0,70,105,108,101,32,102,111,114,109,97,116,32,111,102,32,105,109,97,103,101,32,102,105,108,101,0,0,0,0,0,0,0,82,101,108,97,116,101,100,73,109,97,103,101,87,105,100,116,104,0,0,0,0,0,0,0,73,109,97,103,101,32,119,105,100,116,104,0,0,0,0,0,82,101,108,97,116,101,100,73,109,97,103,101,76,101,110,103,116,104,0,0,0,0,0,0,73,109,97,103,101,32,104,101,105,103,104,116,0,0,0,0,71,80,83,86,101,114,115,105,111,110,73,68,0,0,0,0,71,80,83,32,116,97,103,32,118,101,114,115,105,111,110,0,71,80,83,76,97,116,105,116,117,100,101,82,101,102,0,0,78,111,114,116,104,32,111,114,32,83,111,117,116,104,32,76,97,116,105,116,117,100,101,0,71,80,83,76,97,116,105,116,117,100,101,0,0,0,0,0,76,97,116,105,116,117,100,101,0,0,0,0,0,0,0,0,71,80,83,76,111,110,103,105,116,117,100,101,82,101,102,0,69,97,115,116,32,111,114,32,87,101,115,116,32,76,111,110,103,105,116,117,100,101,0,0,71,80,83,76,111,110,103,105,116,117,100,101,0,0,0,0,76,111,110,103,105,116,117,100,101,0,0,0,0,0,0,0,71,80,83,65,108,116,105,116,117,100,101,82,101,102,0,0,65,108,116,105,116,117,100,101,32,114,101,102,101,114,101,110,99,101,0,0,0,0,0,0,71,80,83,65,108,116,105,116,117,100,101,0,0,0,0,0,65,108,116,105,116,117,100,101,0,0,0,0,0,0,0,0,71,80,83,84,105,109,101,83,116,97,109,112,0,0,0,0,71,80,83,32,116,105,109,101,32,40,97,116,111,109,105,99,32,99,108,111,99,107,41,0,71,80,83,83,97,116,101,108,108,105,116,101,115,0,0,0,71,80,83,32,115,97,116,101,108,108,105,116,101,115,32,117,115,101,100,32,102,111,114,32,109,101,97,115,117,114,101,109,101,110,116,0,0,0,0,0,71,80,83,83,116,97,116,117,115,0,0,0,0,0,0,0,71,80,83,32,114,101,99,101,105,118,101,114,32,115,116,97,116,117,115,0,0,0,0,0,71,80,83,77,101,97,115,117,114,101,77,111,100,101,0,0,71,80,83,32,109,101,97,115,117,114,101,109,101,110,116,32,109,111,100,101,0,0,0,0,71,80,83,68,79,80,0,0,77,101,97,115,117,114,101,109,101,110,116,32,112,114,101,99,105,115,105,111,110,0,0,0,71,80,83,83,112,101,101,100,82,101,102,0,0,0,0,0,83,112,101,101,100,32,117,110,105,116,0,0,0,0,0,0,71,80,83,83,112,101,101,100,0,0,0,0,0,0,0,0,83,112,101,101,100,32,111,102,32,71,80,83,32,114,101,99,101,105,118,101,114,0,0,0,71,80,83,84,114,97,99,107,82,101,102,0,0,0,0,0,82,101,102,101,114,101,110,99,101,32,102,111,114,32,100,105,114,101,99,116,105,111,110,32,111,102,32,109,111,118,101,109,101,110,116,0,0,0,0,0,71,80,83,84,114,97,99,107,0,0,0,0,0,0,0,0,68,105,114,101,99,116,105,111,110,32,111,102,32,109,111,118,101,109,101,110,116,0,0,0,71,80,83,73,109,103,68,105,114,101,99,116,105,111,110,82,101,102,0,0,0,0,0,0,82,101,102,101,114,101,110,99,101,32,102,111,114,32,100,105,114,101,99,116,105,111,110,32,111,102,32,105,109,97,103,101,0,0,0,0,0,0,0,0,71,80,83,73,109,103,68,105,114,101,99,116,105,111,110,0,68,105,114,101,99,116,105,111,110,32,111,102,32,105,109,97,103,101,0,0,0,0,0,0,71,80,83,77,97,112,68,97,116,117,109,0,0,0,0,0,71,101,111,100,101,116,105,99,32,115,117,114,118,101,121,32,100,97,116,97,32,117,115,101,100,0,0,0,0,0,0,0,71,80,83,68,101,115,116,76,97,116,105,116,117,100,101,82,101,102,0,0,0,0,0,0,82,101,102,101,114,101,110,99,101,32,102,111,114,32,108,97,116,105,116,117,100,101,32,111,102,32,100,101,115,116,105,110,97,116,105,111,110,0,0,0,71,80,83,68,101,115,116,76,97,116,105,116,117,100,101,0,76,97,116,105,116,117,100,101,32,111,102,32,100,101,115,116,105,110,97,116,105,111,110,0,71,80,83,68,101,115,116,76,111,110,103,105,116,117,100,101,82,101,102,0,0,0,0,0,82,101,102,101,114,101,110,99,101,32,102,111,114,32,108,111,110,103,105,116,117,100,101,32,111,102,32,100,101,115,116,105,110,97,116,105,111,110,0,0,71,80,83,68,101,115,116,76,111,110,103,105,116,117,100,101,0,0,0,0,0,0,0,0,76,111,110,103,105,116,117,100,101,32,111,102,32,100,101,115,116,105,110,97,116,105,111,110,0,0,0,0,0,0,0,0,71,80,83,68,101,115,116,66,101,97,114,105,110,103,82,101,102,0,0,0,0,0,0,0,82,101,102,101,114,101,110,99,101,32,102,111,114,32,98,101,97,114,105,110,103,32,111,102,32,100,101,115,116,105,110,97,116,105,111,110,0,0,0,0,71,80,83,68,101,115,116,66,101,97,114,105,110,103,0,0,66,101,97,114,105,110,103,32,111,102,32,100,101,115,116,105,110,97,116,105,111,110,0,0,71,80,83,68,101,115,116,68,105,115,116,97,110,99,101,82,101,102,0,0,0,0,0,0,82,101,102,101,114,101,110,99,101,32,102,111,114,32,100,105,115,116,97,110,99,101,32,116,111,32,100,101,115,116,105,110,97,116,105,111,110,0,0,0,71,80,83,68,101,115,116,68,105,115,116,97,110,99,101,0,68,105,115,116,97,110,99,101,32,116,111,32,100,101,115,116,105,110,97,116,105,111,110,0,71,80,83,80,114,111,99,101,115,115,105,110,103,77,101,116,104,111,100,0,0,0,0,0,78,97,109,101,32,111,102,32,71,80,83,32,112,114,111,99,101,115,115,105,110,103,32,109,101,116,104,111,100,0,0,0,71,80,83,65,114,101,97,73,110,102,111,114,109,97,116,105,111,110,0,0,0,0,0,0,78,97,109,101,32,111,102,32,71,80,83,32,97,114,101,97,0,0,0,0,0,0,0,0,71,80,83,68,97,116,101,83,116,97,109,112,0,0,0,0,71,80,83,32,100,97,116,101,0,0,0,0,0,0,0,0,71,80,83,68,105,102,102,101,114,101,110,116,105,97,108,0,71,80,83,32,100,105,102,102,101,114,101,110,116,105,97,108,32,99,111,114,114,101,99,116,105,111,110,0,0,0,0,0,73,109,97,103,101,87,105,100,116,104,0,0,0,0,0,0,73,109,97,103,101,76,101,110,103,116,104,0,0,0,0,0,66,105,116,115,80,101,114,83,97,109,112,108,101,0,0,0,78,117,109,98,101,114,32,111,102,32,98,105,116,115,32,112,101,114,32,99,111,109,112,111,110,101,110,116,0,0,0,0,67,111,109,112,114,101,115,115,105,111,110,0,0,0,0,0,67,111,109,112,114,101,115,115,105,111,110,32,115,99,104,101,109,101,0,0,0,0,0,0,80,104,111,116,111,109,101,116,114,105,99,73,110,116,101,114,112,114,101,116,97,116,105,111,110,0,0,0,0,0,0,0,80,105,120,101,108,32,99,111,109,112,111,115,105,116,105,111,110,0,0,0,0,0,0,0,70,105,108,108,79,114,100,101,114,0,0,0,0,0,0,0,68,111,99,117,109,101,110,116,78,97,109,101],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+337928);allocate([73,109,97,103,101,68,101,115,99,114,105,112,116,105,111,110,0,0,0,0,0,0,0,0,73,109,97,103,101,32,116,105,116,108,101,0,0,0,0,0,77,97,107,101,0,0,0,0,73,109,97,103,101,32,105,110,112,117,116,32,101,113,117,105,112,109,101,110,116,32,109,97,110,117,102,97,99,116,117,114,101,114,0,0,0,0,0,0,77,111,100,101,108,0,0,0,73,109,97,103,101,32,105,110,112,117,116,32,101,113,117,105,112,109,101,110,116,32,109,111,100,101,108,0,0,0,0,0,83,116,114,105,112,79,102,102,115,101,116,115,0,0,0,0,73,109,97,103,101,32,100,97,116,97,32,108,111,99,97,116,105,111,110,0,0,0,0,0,79,114,105,101,110,116,97,116,105,111,110,0,0,0,0,0,79,114,105,101,110,116,97,116,105,111,110,32,111,102,32,105,109,97,103,101,0,0,0,0,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,0,78,117,109,98,101,114,32,111,102,32,99,111,109,112,111,110,101,110,116,115,0,0,0,0,82,111,119,115,80,101,114,83,116,114,105,112,0,0,0,0,78,117,109,98,101,114,32,111,102,32,114,111,119,115,32,112,101,114,32,115,116,114,105,112,0,0,0,0,0,0,0,0,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,0,66,121,116,101,115,32,112,101,114,32,99,111,109,112,114,101,115,115,101,100,32,115,116,114,105,112,0,0,0,0,0,0,88,82,101,115,111,108,117,116,105,111,110,0,0,0,0,0,73,109,97,103,101,32,114,101,115,111,108,117,116,105,111,110,32,105,110,32,119,105,100,116,104,32,100,105,114,101,99,116,105,111,110,0,0,0,0,0,89,82,101,115,111,108,117,116,105,111,110,0,0,0,0,0,73,109,97,103,101,32,114,101,115,111,108,117,116,105,111,110,32,105,110,32,104,101,105,103,104,116,32,100,105,114,101,99,116,105,111,110,0,0,0,0,80,108,97,110,97,114,67,111,110,102,105,103,117,114,97,116,105,111,110,0,0,0,0,0,73,109,97,103,101,32,100,97,116,97,32,97,114,114,97,110,103,101,109,101,110,116,0,0,80,97,103,101,78,97,109,101,0,0,0,0,0,0,0,0,78,97,109,101,32,111,102,32,116,104,101,32,112,97,103,101,0,0,0,0,0,0,0,0,88,80,111,115,105,116,105,111,110,0,0,0,0,0,0,0,88,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,105,109,97,103,101,0,89,80,111,115,105,116,105,111,110,0,0,0,0,0,0,0,89,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,105,109,97,103,101,0,82,101,115,111,108,117,116,105,111,110,85,110,105,116,0,0,85,110,105,116,32,111,102,32,88,32,97,110,100,32,89,32,114,101,115,111,108,117,116,105,111,110,0,0,0,0,0,0,80,97,103,101,78,117,109,98,101,114,0,0,0,0,0,0,80,97,103,101,32,110,117,109,98,101,114,0,0,0,0,0,84,114,97,110,115,102,101,114,70,117,110,99,116,105,111,110,0,0,0,0,0,0,0,0,84,114,97,110,115,102,101,114,32,102,117,110,99,116,105,111,110,0,0,0,0,0,0,0,83,111,102,116,119,97,114,101,32,117,115,101,100,0,0,0,68,97,116,101,84,105,109,101,0,0,0,0,0,0,0,0,70,105,108,101,32,99,104,97,110,103,101,32,100,97,116,101,32,97,110,100,32,116,105,109,101,0,0,0,0,0,0,0,80,101,114,115,111,110,32,119,104,111,32,99,114,101,97,116,101,100,32,116,104,101,32,105,109,97,103,101,0,0,0,0,72,111,115,116,67,111,109,112,117,116,101,114,0,0,0,0,72,111,115,116,32,99,111,109,112,117,116,101,114,32,117,115,101,100,32,116,111,32,103,101,110,101,114,97,116,101,32,116,104,101,32,105,109,97,103,101,0,0,0,0,0,0,0,0,87,104,105,116,101,32,112,111,105,110,116,32,99,104,114,111,109,97,116,105,99,105,116,121,0,0,0,0,0,0,0,0,80,114,105,109,97,114,121,67,104,114,111,109,97,116,105,99,105,116,105,101,115,0,0,0,67,104,114,111,109,97,116,105,99,105,116,105,101,115,32,111,102,32,112,114,105,109,97,114,105,101,115,0,0,0,0,0,84,114,97,110,115,102,101,114,82,97,110,103,101,0,0,0,74,80,69,71,80,114,111,99,0,0,0,0,0,0,0,0,74,80,69,71,73,110,116,101,114,99,104,97,110,103,101,70,111,114,109,97,116,0,0,0,79,102,102,115,101,116,32,116,111,32,74,80,69,71,32,83,79,73,0,0,0,0,0,0,74,80,69,71,73,110,116,101,114,99,104,97,110,103,101,70,111,114,109,97,116,76,101,110,103,116,104,0,0,0,0,0,66,121,116,101,115,32,111,102,32,74,80,69,71,32,100,97,116,97,0,0,0,0,0,0,89,67,98,67,114,67,111,101,102,102,105,99,105,101,110,116,115,0,0,0,0,0,0,0,67,111,108,111,114,32,115,112,97,99,101,32,116,114,97,110,115,102,111,114,109,97,116,105,111,110,32,109,97,116,114,105,120,32,99,111,101,102,102,105,99,105,101,110,116,115,0,0,89,67,98,67,114,83,117,98,83,97,109,112,108,105,110,103,0,0,0,0,0,0,0,0,83,117,98,115,97,109,112,108,105,110,103,32,114,97,116,105,111,32,111,102,32,89,32,116,111,32,67,0,0,0,0,0,89,67,98,67,114,80,111,115,105,116,105,111,110,105,110,103,0,0,0,0,0,0,0,0,89,32,97,110,100,32,67,32,112,111,115,105,116,105,111,110,105,110,103,0,0,0,0,0,82,101,102,101,114,101,110,99,101,66,108,97,99,107,87,104,105,116,101,0,0,0,0,0,80,97,105,114,32,111,102,32,98,108,97,99,107,32,97,110,100,32,119,104,105,116,101,32,114,101,102,101,114,101,110,99,101,32,118,97,108,117,101,115,0,0,0,0,0,0,0,0,67,70,65,82,101,112,101,97,116,80,97,116,116,101,114,110,68,105,109,0,0,0,0,0,67,70,65,80,97,116,116,101,114,110,0,0,0,0,0,0,66,97,116,116,101,114,121,76,101,118,101,108,0,0,0,0,67,111,112,121,114,105,103,104,116,32,104,111,108,100,101,114,0,0,0,0,0,0,0,0,69,120,112,111,115,117,114,101,32,116,105,109,101,0,0,0,70,32,110,117,109,98,101,114,0,0,0,0,0,0,0,0,73,80,84,67,47,78,65,65,0,0,0,0,0,0,0,0,73,110,116,101,114,67,111,108,111,114,80,114,111,102,105,108,101,0,0,0,0,0,0,0,69,120,112,111,115,117,114,101,80,114,111,103,114,97,109,0,69,120,112,111,115,117,114,101,32,112,114,111,103,114,97,109,0,0,0,0,0,0,0,0,83,112,101,99,116,114,97,108,83,101,110,115,105,116,105,118,105,116,121,0,0,0,0,0,83,112,101,99,116,114,97,108,32,115,101,110,115,105,116,105,118,105,116,121,0,0,0,0,71,80,83,73,110,102,111,0,73,83,79,83,112,101,101,100,82,97,116,105,110,103,115,0,73,83,79,32,115,112,101,101,100,32,114,97,116,105,110,103,0,0,0,0,0,0,0,0,79,69,67,70,0,0,0,0,79,112,116,111,101,108,101,99,116,114,105,99,32,99,111,110,118,101,114,115,105,111,110,32,102,97,99,116,111,114,0,0,69,120,105,102,86,101,114,115,105,111,110,0,0,0,0,0,69,120,105,102,32,118,101,114,115,105,111,110,0,0,0,0,68,97,116,101,84,105,109,101,79,114,105,103,105,110,97,108,0,0,0,0,0,0,0,0,68,97,116,101,32,97,110,100,32,116,105,109,101,32,111,102,32,111,114,105,103,105,110,97,108,32,100,97,116,97,32,103,101,110,101,114,97,116,105,111,110,0,0,0,0,0,0,0,68,97,116,101,84,105,109,101,68,105,103,105,116,105,122,101,100,0,0,0,0,0,0,0,68,97,116,101,32,97,110,100,32,116,105,109,101,32,111,102,32,100,105,103,105,116,97,108,32,100,97,116,97,32,103,101,110,101,114,97,116,105,111,110,0,0,0,0,0,0,0,0,67,111,109,112,111,110,101,110,116,115,67,111,110,102,105,103,117,114,97,116,105,111,110,0,77,101,97,110,105,110,103,32,111,102,32,101,97,99,104,32,99,111,109,112,111,110,101,110,116,0,0,0,0,0,0,0,67,111,109,112,114,101,115,115,101,100,66,105,116,115,80,101,114,80,105,120,101,108,0,0,73,109,97,103,101,32,99,111,109,112,114,101,115,115,105,111,110,32,109,111,100,101,0,0,83,104,117,116,116,101,114,32,115,112,101,101,100,0,0,0,65,112,101,114,116,117,114,101,0,0,0,0,0,0,0,0,69,120,112,111,115,117,114,101,66,105,97,115,86,97,108,117,101,0,0,0,0,0,0,0,69,120,112,111,115,117,114,101,32,98,105,97,115,0,0,0,77,97,120,65,112,101,114,116,117,114,101,86,97,108,117,101,0,0,0,0,0,0,0,0,77,97,120,105,109,117,109,32,108,101,110,115,32,97,112,101,114,116,117,114,101,0,0,0,83,117,98,106,101,99,116,68,105,115,116,97,110,99,101,0,83,117,98,106,101,99,116,32,100,105,115,116,97,110,99,101,0,0,0,0,0,0,0,0,77,101,116,101,114,105,110,103,32,109,111,100,101,0,0,0,76,105,103,104,116,32,115,111,117,114,99,101,0,0,0,0,70,108,97,115,104,0,0,0,76,101,110,115,32,102,111,99,97,108,32,108,101,110,103,116,104,0,0,0,0,0,0,0,83,117,98,106,101,99,116,65,114,101,97,0,0,0,0,0,83,117,98,106,101,99,116,32,97,114,101,97,0,0,0,0,77,97,107,101,114,78,111,116,101,0,0,0,0,0,0,0,77,97,110,117,102,97,99,116,117,114,101,114,32,110,111,116,101,115,0,0,0,0,0,0,85,115,101,114,67,111,109,109,101,110,116,0,0,0,0,0,85,115,101,114,32,99,111,109,109,101,110,116,115,0,0,0,83,117,98,83,101,99,84,105,109,101,0,0,0,0,0,0,68,97,116,101,84,105,109,101,32,115,117,98,115,101,99,111,110,100,115,0,0,0,0,0,83,117,98,83,101,99,84,105,109,101,79,114,105,103,105,110,97,108,0,0,0,0,0,0,68,97,116,101,84,105,109,101,79,114,105,103,105,110,97,108,32,115,117,98,115,101,99,111,110,100,115,0,0,0,0,0,83,117,98,83,101,99,84,105,109,101,68,105,103,105,116,105,122,101,100,0,0,0,0,0,68,97,116,101,84,105,109,101,68,105,103,105,116,105,122,101,100,32,115,117,98,115,101,99,111,110,100,115,0,0,0,0,70,108,97,115,104,80,105,120,86,101,114,115,105,111,110,0,83,117,112,112,111,114,116,101,100,32,70,108,97,115,104,112,105,120,32,118,101,114,115,105,111,110,0,0,0,0,0,0,67,111,108,111,114,32,115,112,97,99,101,32,105,110,102,111,114,109,97,116,105,111,110,0,80,105,120,101,108,88,68,105,109,101,110,115,105,111,110,0,86,97,108,105,100,32,105,109,97,103,101,32,119,105,100,116,104,0,0,0,0,0,0,0,80,105,120,101,108,89,68,105,109,101,110,115,105,111,110,0,86,97,108,105,100,32,105,109,97,103,101,32,104,101,105,103,104,116,0,0,0,0,0,0,82,101,108,97,116,101,100,83,111,117,110,100,70,105,108,101,0,0,0,0,0,0,0,0,82,101,108,97,116,101,100,32,97,117,100,105,111,32,102,105,108,101,0,0,0,0,0,0,73,110,116,101,114,111,112,101,114,97,98,105,108,105,116,121,79,102,102,115,101,116,0,0,70,108,97,115,104,69,110,101,114,103,121,0,0,0,0,0,70,108,97,115,104,32,101,110,101,114,103,121,0,0,0,0,83,112,97,116,105,97,108,70,114,101,113,117,101,110,99,121,82,101,115,112,111,110,115,101,0,0,0,0,0,0,0,0,83,112,97,116,105,97,108,32,102,114,101,113,117,101,110,99,121,32,114,101,115,112,111,110,115,101,0,0,0,0,0,0,70,111,99,97,108,80,108,97,110,101,88,82,101,115,111,108,117,116,105,111,110,0,0,0,70,111,99,97,108,32,112,108,97,110,101,32,88,32,114,101,115,111,108,117,116,105,111,110,0,0,0,0,0,0,0,0,70,111,99,97,108,80,108,97,110,101,89,82,101,115,111,108,117,116,105,111,110,0,0,0,70,111,99,97,108,32,112,108,97,110,101,32,89,32,114,101,115,111,108,117,116,105,111,110,0,0,0,0,0,0,0,0,70,111,99,97,108,80,108,97,110,101,82,101,115,111,108,117,116,105,111,110,85,110,105,116,0,0,0,0,0,0,0,0,70,111,99,97,108,32,112,108,97,110,101,32,114,101,115,111,108,117,116,105,111,110,32,117,110,105,116,0,0,0,0,0,83,117,98,106,101,99,116,76,111,99,97,116,105,111,110,0,83,117,98,106,101,99,116,32,108,111,99,97,116,105,111,110,0,0,0,0,0,0,0,0,69,120,112,111,115,117,114,101,73,110,100,101,120,0,0,0,69,120,112,111,115,117,114,101,32,105,110,100,101,120,0,0,83,101,110,115,105,110,103,77,101,116,104,111,100,0,0,0,83,101,110,115,105,110,103,32,109,101,116,104,111,100,0,0,70,105,108,101,83,114,99,0,70,105,108,101,32,115,111,117,114,99,101,0,0,0,0,0,83,99,101,110,101,84,121,112,101,0,0,0,0,0,0,0,83,99,101,110,101,32,116,121,112,101,0,0,0,0,0,0,67,70,65,32,112,97,116,116,101,114,110,0,0,0,0,0,67,117,115,116,111,109,82,101,110,100,101,114,101,100,0,0,67,117,115,116,111,109,32,105,109,97,103,101,32,112,114,111,99,101,115,115,105,110,103,0,69,120,112,111,115,117,114,101,32,109,111,100,101,0,0,0,87,104,105,116,101,32,98,97,108,97,110,99,101,0,0,0,68,105,103,105,116,97,108,90,111,111,109,82,97,116,105,111,0,0,0,0,0,0,0,0,68,105,103,105,116,97,108,32,122,111,111,109,32,114,97,116,105,111,0,0,0,0,0,0,70,111,99,97,108,76,101,110,103,116,104,73,110,51,53,109,109,70,105,108,109,0,0,0,70,111,99,97,108,32,108,101,110,103,116,104,32,105,110,32,51,53,32,109,109,32,102,105,108,109,0,0,0,0,0,0,83,99,101,110,101,67,97,112,116,117,114,101,84,121,112,101,0,0,0,0,0,0,0,0,83,99,101,110,101,32,99,97,112,116,117,114,101,32,116,121,112,101,0,0,0,0,0,0,71,97,105,110,67,111,110,116,114,111,108,0,0,0,0,0,71,97,105,110,32,99,111,110,116,114,111,108,0,0,0,0,68,101,118,105,99,101,83,101,116,116,105,110,103,68,101,115,99,114,105,112,116,105,111,110,0,0,0,0,0,0,0,0,68,101,118,105,99,101,32,115,101,116,116,105,110,103,115,32,100,101,115,99,114,105,112,116,105,111,110,0,0,0,0,0,83,117,98,106,101,99,116,68,105,115,116,97,110,99,101,82,97,110,103,101,0,0,0,0,83,117,98,106,101,99,116,32,100,105,115,116,97,110,99,101,32,114,97,110,103,101,0,0,85,110,105,113,117,101,32,105,109,97,103,101,32,73,68,0,67,97,109,101,114,97,79,119,110,101,114,78,97,109,101,0,67,97,109,101,114,97,32,111,119,110,101,114,32,110,97,109,101,0,0,0,0,0,0,0,66,111,100,121,83,101,114,105,97,108,78,117,109,98,101,114,0,0,0,0,0,0,0,0,66,111,100,121,32,115,101,114,105,97,108,32,110,117,109,98,101,114,0,0,0,0,0,0,76,101,110,115,83,112,101,99,105,102,105,99,97,116,105,111,110,0,0,0,0,0,0,0,76,101,110,115,32,115,112,101,99,105,102,105,99,97,116,105,111,110,0,0,0,0,0,0,76,101,110,115,77,97,107,101,0,0,0,0,0,0,0,0,76,101,110,115,32,109,97,107,101,0,0,0,0,0,0,0,76,101,110,115,32,109,111,100,101,108,0,0,0,0,0,0,76,101,110,115,32,115,101,114,105,97,108,32,110,117,109,98,101,114,0,0,0,0,0,0,82,97,116,105,110,103,0,0,82,97,116,105,110,103,32,116,97,103,32,117,115,101,100,32,98,121,32,87,105,110,100,111,119,115,0,0,0,0,0,0,82,97,116,105,110,103,80,101,114,99,101,110,116,0,0,0,82,97,116,105,110,103,32,116,97,103,32,117,115,101,100,32,98,121,32,87,105,110,100,111,119,115,44,32,118,97,108,117,101,32,105,110,32,112,101,114,99,101,110,116,0,0,0,0,88,80,84,105,116,108,101,0,84,105,116,108,101,32,116,97,103,32,117,115,101,100,32,98,121,32,87,105,110,100,111,119,115,44,32,101,110,99,111,100,101,100,32,105,110,32,85,67,83,50,0,0,0,0,0,0,88,80,67,111,109,109,101,110,116,0,0,0,0,0,0,0,67,111,109,109,101,110,116,32,116,97,103,32,117,115,101,100,32,98,121,32,87,105,110,100,111,119,115,44,32,101,110,99,111,100,101,100,32,105,110,32,85,67,83,50,0,0,0,0,88,80,65,117,116,104,111,114,0,0,0,0,0,0,0,0,65,117,116,104,111,114,32,116,97,103,32,117,115,101,100,32,98,121,32,87,105,110,100,111,119,115,44,32,101,110,99,111,100,101,100,32,105,110,32,85,67,83,50,0,0,0,0,0,88,80,75,101,121,119,111,114,100,115,0,0,0,0,0,0,75,101,121,119,111,114,100,115,32,116,97,103,32,117,115,101,100,32,98,121,32,87,105,110,100,111,119,115,44,32,101,110,99,111,100,101,100,32,105,110,32,85,67,83,50,0,0,0,88,80,83,117,98,106,101,99,116,0,0,0,0,0,0,0,83,117,98,106,101,99,116,32,116,97,103,32,117,115,101,100,32,98,121,32,87,105,110,100,111,119,115,44,32,101,110,99,111,100,101,100,32,105,110,32,85,67,83,50,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,131,0,0,255,255,255,255,12,0,0,0,65,0,1,1,56,97,5,0,128,132,0,0,255,255,255,255,12,0,0,0,65,0,1,1,72,97,5,0,216,133,0,0,255,255,255,255,12,0,0,0,65,0,1,1,104,97,5,0,130,132,0,0,255,255,255,255,12,0,0,0,65,0,1,1,128,97,5,0,175,135,0,0,255,255,255,255,3,0,0,0,65,0,1,1,144,97,5,0,176,135,0,0,255,255,255,255,12,0,0,0,65,0,1,1,160,97,5,0,177,135,0,0,255,255,255,255,2,0,0,0,65,0,1,0,176,97,5,0,215,133,0,0,1,0,1,0,4,0,0,0,65,0,1,1,192,97,5,0,85,110,105,109,112,108,101,109,101,110,116,101,100,32,118,97,114,105,97,98,108,101,32,110,117,109,98,101,114,32,111,102,32,112,97,114,97,109,101,116,101,114,115,32,102,111,114,32,84,105,102,102,32,84,97,103,32,37,115,0,0,0,0,0,71,101,111,80,105,120,101,108,83,99,97,108,101,0,0,0,73,110,116,101,114,103,114,97,112,104,32,84,114,97,110,115,102,111,114,109,97,116,105,111,110,77,97,116,114,105,120,0,71,101,111,84,114,97,110,115,102,111,114,109,97,116,105,111,110,77,97,116,114,105,120,0,71,101,111,84,105,101,80,111,105,110,116,115,0,0,0,0,71,101,111,75,101,121,68,105,114,101,99,116,111,114,121,0,71,101,111,68,111,117,98,108,101,80,97,114,97,109,115,0,71,101,111,65,83,67,73,73,80,97,114,97,109,115,0,0,74,80,76,32,67,97,114,116,111,32,73,70,68,32,111,102,102,115,101,116],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+348168);allocate([128,102,5,0,87,0,0,0,88,0,0,0,29,0,0,0,48,0,0,0,1,0,0,0,4,0,0,0,45,0,0,0,46,0,0,0,49,0,0,0,47,0,0,0,48,0,0,0,173,0,0,0,50,0,0,0,174,0,0,0,78,83,116,51,95,95,49,49,49,95,95,115,116,100,111,117,116,98,117,102,73,119,69,69,0,0,0,0,0,0,0,0,128,153,5,0,96,102,5,0,104,109,5,0,0,0,0,0,0,0,0,0,232,102,5,0,87,0,0,0,89,0,0,0,30,0,0,0,48,0,0,0,1,0,0,0,4,0,0,0,49,0,0,0,46,0,0,0,49,0,0,0,50,0,0,0,51,0,0,0,175,0,0,0,51,0,0,0,176,0,0,0,78,83,116,51,95,95,49,49,48,95,95,115,116,100,105,110,98,117,102,73,119,69,69,0,128,153,5,0,208,102,5,0,104,109,5,0,0,0,0,0,117,110,115,117,112,112,111,114,116,101,100,32,108,111,99,97,108,101,32,102,111,114,32,115,116,97,110,100,97,114,100,32,105,110,112,117,116,0,0,0,0,0,0,0,128,103,5,0,90,0,0,0,91,0,0,0,31,0,0,0,52,0,0,0,2,0,0,0,5,0,0,0,52,0,0,0,53,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,177,0,0,0,54,0,0,0,178,0,0,0,78,83,116,51,95,95,49,49,49,95,95,115,116,100,111,117,116,98,117,102,73,99,69,69,0,0,0,0,0,0,0,0,128,153,5,0,96,103,5,0,40,109,5,0,0,0,0,0,0,0,0,0,232,103,5,0,90,0,0,0,92,0,0,0,32,0,0,0,52,0,0,0,2,0,0,0,5,0,0,0,56,0,0,0,53,0,0,0,53,0,0,0,57,0,0,0,58,0,0,0,179,0,0,0,55,0,0,0,180,0,0,0,78,83,116,51,95,95,49,49,48,95,95,115,116,100,105,110,98,117,102,73,99,69,69,0,128,153,5,0,208,103,5,0,40,109,5,0,0,0,0,0,78,83,116,51,95,95,49,49,52,95,95,115,104,97,114,101,100,95,99,111,117,110,116,69,0,0,0,0,0,0,0,0,112,152,5,0,248,103,5,0,103,101,110,101,114,105,99,0,117,110,115,112,101,99,105,102,105,101,100,32,103,101,110,101,114,105,99,95,99,97,116,101,103,111,114,121,32,101,114,114,111,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,121,115,116,101,109,0,0,117,110,115,112,101,99,105,102,105,101,100,32,115,121,115,116,101,109,95,99,97,116,101,103,111,114,121,32,101,114,114,111,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,32,0,0,0,0,0,0,0,0,0,0,216,104,5,0,93,0,0,0,94,0,0,0,59,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,50,115,121,115,116,101,109,95,101,114,114,111,114,69,0,0,128,153,5,0,192,104,5,0,24,151,5,0,0,0,0,0,78,83,116,51,95,95,49,49,52,101,114,114,111,114,95,99,97,116,101,103,111,114,121,69,0,0,0,0,0,0,0,0,112,152,5,0,232,104,5,0,78,83,116,51,95,95,49,49,50,95,95,100,111,95,109,101,115,115,97,103,101,69,0,0,128,153,5,0,16,105,5,0,8,105,5,0,0,0,0,0,0,0,0,0,136,105,5,0,95,0,0,0,96,0,0,0,60,0,0,0,21,0,0,0,56,0,0,0,57,0,0,0,22,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,52,95,95,103,101,110,101,114,105,99,95,101,114,114,111,114,95,99,97,116,101,103,111,114,121,69,0,0,0,0,0,0,128,153,5,0,96,105,5,0,40,105,5,0,0,0,0,0,0,0,0,0,232,105,5,0,95,0,0,0,97,0,0,0,61,0,0,0,23,0,0,0,56,0,0,0,57,0,0,0,24,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,51,95,95,115,121,115,116,101,109,95,101,114,114,111,114,95,99,97,116,101,103,111,114,121,69,0,0,0,0,0,0,0,128,153,5,0,192,105,5,0,40,105,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,97,115,105,99,95,115,116,114,105,110,103,0,0,0,0,37,117,0,0,0,0,0,0,99,108,111,99,107,95,103,101,116,116,105,109,101,40,67,76,79,67,75,95,77,79,78,79,84,79,78,73,67,41,32,102,97,105,108,101,100,0,0,0,0,0,0,0,40,109,5,0,98,0,0,0,99,0,0,0,33,0,0,0,52,0,0,0,2,0,0,0,5,0,0,0,56,0,0,0,53,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,177,0,0,0,55,0,0,0,180,0,0,0,0,0,0,0,104,109,5,0,100,0,0,0,101,0,0,0,34,0,0,0,48,0,0,0,1,0,0,0,4,0,0,0,49,0,0,0,46,0,0,0,49,0,0,0,47,0,0,0,48,0,0,0,173,0,0,0,51,0,0,0,176,0,0,0,8,0,0,0,0,0,0,0,160,109,5,0,102,0,0,0,103,0,0,0,248,255,255,255,248,255,255,255,160,109,5,0,104,0,0,0,105,0,0,0,8,0,0,0,0,0,0,0,232,109,5,0,106,0,0,0,107,0,0,0,248,255,255,255,248,255,255,255,232,109,5,0,108,0,0,0,109,0,0,0,4,0,0,0,0,0,0,0,48,110,5,0,110,0,0,0,111,0,0,0,252,255,255,255,252,255,255,255,48,110,5,0,112,0,0,0,113,0,0,0,4,0,0,0,0,0,0,0,120,110,5,0,114,0,0,0,115,0,0,0,252,255,255,255,252,255,255,255,120,110,5,0,116,0,0,0,117,0,0,0,105,111,115,116,114,101,97,109,0,0,0,0,0,0,0,0,117,110,115,112,101,99,105,102,105,101,100,32,105,111,115,116,114,101,97,109,95,99,97,116,101,103,111,114,121,32,101,114,114,111,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,108,5,0,118,0,0,0,119,0,0,0,59,0,0,0,0,0,0,0,0,0,0,0,104,108,5,0,120,0,0,0,121,0,0,0,105,111,115,95,98,97,115,101,58,58,99,108,101,97,114,0,78,83,116,51,95,95,49,56,105,111,115,95,98,97,115,101,55,102,97,105,108,117,114,101,69,0,0,0,0,0,0,0,128,153,5,0,32,108,5,0,216,104,5,0,0,0,0,0,78,83,116,51,95,95,49,56,105,111,115,95,98,97,115,101,69,0,0,0,0,0,0,0,112,152,5,0,80,108,5,0,78,83,116,51,95,95,49,57,98,97,115,105,99,95,105,111,115,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,0,0,0,0,0,0,128,153,5,0,112,108,5,0,104,108,5,0,0,0,0,0,78,83,116,51,95,95,49,57,98,97,115,105,99,95,105,111,115,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,0,0,0,0,0,0,128,153,5,0,176,108,5,0,104,108,5,0,0,0,0,0,78,83,116,51,95,95,49,49,53,98,97,115,105,99,95,115,116,114,101,97,109,98,117,102,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,0,0,0,0,0,0,0,112,152,5,0,240,108,5,0,78,83,116,51,95,95,49,49,53,98,97,115,105,99,95,115,116,114,101,97,109,98,117,102,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,0,0,0,0,0,0,0,112,152,5,0,48,109,5,0,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,105,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,0,224,153,5,0,112,109,5,0,0,0,0,0,1,0,0,0,160,108,5,0,3,244,255,255,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,105,115,116,114,101,97,109,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,0,224,153,5,0,184,109,5,0,0,0,0,0,1,0,0,0,224,108,5,0,3,244,255,255,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,111,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,0,224,153,5,0,0,110,5,0,0,0,0,0,1,0,0,0,160,108,5,0,3,244,255,255,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,111,115,116,114,101,97,109,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,0,224,153,5,0,72,110,5,0,0,0,0,0,1,0,0,0,224,108,5,0,3,244,255,255,0,0,0,0,216,110,5,0,95,0,0,0,122,0,0,0,62,0,0,0,21,0,0,0,56,0,0,0,57,0,0,0,25,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,57,95,95,105,111,115,116,114,101,97,109,95,99,97,116,101,103,111,114,121,69,0,0,0,128,153,5,0,184,110,5,0,40,105,5,0,0,0,0,0,0,0,0,0,32,125,5,0,123,0,0,0,124,0,0,0,125,0,0,0,33,0,0,0,6,0,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,125,5,0,126,0,0,0,127,0,0,0,125,0,0,0,34,0,0,0,7,0,0,0,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,127,5,0,128,0,0,0,129,0,0,0,125,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,65,66,67,68,69,70,120,88,43,45,112,80,105,73,110,78,0,0,0,0,0,0,0,0,37,112,0,0,0,0,0,0,0,0,0,0,176,127,5,0,130,0,0,0,131,0,0,0,125,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,128,5,0,132,0,0,0,133,0,0,0,125,0,0,0,3,0,0,0,4,0,0,0,23,0,0,0,5,0,0,0,24,0,0,0,1,0,0,0,2,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,0,0,0,0,0,0,0,108,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,8,129,5,0,134,0,0,0,135,0,0,0,125,0,0,0,7,0,0,0,8,0,0,0,25,0,0,0,9,0,0,0,26,0,0,0,3,0,0,0,4,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,0,0,0,0,37,112,0,0,0,0,0,0,0,0,0,0,192,129,5,0,136,0,0,0,137,0,0,0,125,0,0,0,63,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,1,0,0,0,248,255,255,255,192,129,5,0,64,0,0,0,65,0,0,0,66,0,0,0,67,0,0,0,68,0,0,0,69,0,0,0,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,72,58,37,77,58,37,83,37,109,47,37,100,47,37,121,37,89,45,37,109,45,37,100,37,73,58,37,77,58,37,83,32,37,112,0,0,0,0,0,37,72,58,37,77,0,0,0,37,72,58,37,77,58,37,83,0,0,0,0,96,130,5,0,138,0,0,0,139,0,0,0,125,0,0,0,71,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,2,0,0,0,248,255,255,255,96,130,5,0,72,0,0,0,73,0,0,0,74,0,0,0,75,0,0,0,76,0,0,0,77,0,0,0,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,37,0,0,0,109,0,0,0,47,0,0,0,37,0,0,0,100,0,0,0,47,0,0,0,37,0,0,0,121,0,0,0,37,0,0,0,89,0,0,0,45,0,0,0,37,0,0,0,109,0,0,0,45,0,0,0,37,0,0,0,100,0,0,0,37,0,0,0,73,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,112,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,0,0,0,0,240,130,5,0,140,0,0,0,141,0,0,0,125,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,131,5,0,142,0,0,0,143,0,0,0,125,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,125,5,0,144,0,0,0,145,0,0,0,125,0,0,0,79,0,0,0,80,0,0,0,35,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,81,0,0,0,39,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,125,5,0,146,0,0,0,147,0,0,0,125,0,0,0,82,0,0,0,83,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,84,0,0,0,45,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,126,5,0,148,0,0,0,149,0,0,0,125,0,0,0,85,0,0,0,86,0,0,0,47,0,0,0,48,0,0,0,49,0,0,0,50,0,0,0,87,0,0,0,51,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,126,5,0,150,0,0,0,151,0,0,0,125,0,0,0,88,0,0,0,89,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,90,0,0,0,57,0,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,131,5,0,152,0,0,0,153,0,0,0,125,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,0,0,0,0,0,0,37,76,102,0,0,0,0,0,109,111,110,101,121,95,103,101,116,32,101,114,114,111,114,0,0,0,0,0,120,132,5,0,154,0,0,0,155,0,0,0,125,0,0,0,5,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,0,0,0,0,0,0,0,0,0,0,8,133,5,0,156,0,0,0,157,0,0,0,125,0,0,0,1,0,0,0,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,46,48,76,102,0,0,0,0,0,0,0,152,133,5,0,158,0,0,0,159,0,0,0,125,0,0,0,2,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,133,5,0,160,0,0,0,161,0,0,0,125,0,0,0,60,0,0,0,11,0,0,0,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,134,5,0,162,0,0,0,163,0,0,0,125,0,0,0,61,0,0,0,12,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,118,101,99,116,111,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,248,124,5,0,164,0,0,0,165,0,0,0,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,121,5,0,166,0,0,0,167,0,0,0,125,0,0,0,181,0,0,0,62,0,0,0,182,0,0,0,63,0,0,0,183,0,0,0,62,0,0,0,64,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,122,5,0,168,0,0,0,169,0,0,0,125,0,0,0,1,0,0,0,2,0,0,0,36,0,0,0,91,0,0,0,92,0,0,0,37,0,0,0,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,124,5,0,170,0,0,0,171,0,0,0,125,0,0,0,94,0,0,0,95,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,0,0,0,0,208,124,5,0,172,0,0,0,173,0,0,0,125,0,0,0,96,0,0,0,97,0,0,0,64,0,0,0,65,0,0,0,66,0,0,0,116,114,117,101,0,0,0,0,116,0,0,0,114,0,0,0,117,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,102,97,108,115,101,0,0,0,102,0,0,0,97,0,0,0,108,0,0,0,115,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,109,47,37,100,47,37,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,109,0,0,0,47,0,0,0,37,0,0,0,100,0,0,0,47,0,0,0,37,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,72,58,37,77,58,37,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,97,32,37,98,32,37,100,32,37,72,58,37,77,58,37,83,32,37,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,97,0,0,0,32,0,0,0,37,0,0,0,98,0,0,0,32,0,0,0,37,0,0,0,100,0,0,0,32,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,73,58,37,77,58,37,83,32,37,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,73,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,112,0,0,0,0,0,0,0,108,111,99,97,108,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,0,0,0,8,121,5,0,174,0,0,0,175,0,0,0,125,0,0,0,0,0,0,0,78,83,116,51,95,95,49,54,108,111,99,97,108,101,53,102,97,99,101,116,69,0,0,0,128,153,5,0,240,120,5,0,24,104,5,0,0,0,0,0,0,0,0,0,152,121,5,0,174,0,0,0,176,0,0,0,125,0,0,0,65,0,0,0,63,0,0,0,64,0,0,0,65,0,0,0,184,0,0,0,66,0,0,0,185,0,0,0,67,0,0,0,186,0,0,0,66,0,0,0,68,0,0,0,38,0,0,0,0,0,0,0,78,83,116,51,95,95,49,53,99,116,121,112,101,73,119,69,69,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,48,99,116,121,112,101,95,98,97,115,101,69,0,0,0,0,112,152,5,0,120,121,5,0,224,153,5,0,96,121,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,144,121,5,0,2,0,0,0,78,83,116,51,95,95,49,53,99,116,121,112,101,73,99,69,69,0,0,0,0,0,0,0,224,153,5,0,184,121,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,144,121,5,0,2,0,0,0,0,0,0,0,104,122,5,0,174,0,0,0,177,0,0,0,125,0,0,0,3,0,0,0,4,0,0,0,39,0,0,0,98,0,0,0,99,0,0,0,40,0,0,0,100,0,0,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,99,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,50,99,111,100,101,99,118,116,95,98,97,115,101,69,0,0,112,152,5,0,72,122,5,0,224,153,5,0,32,122,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,96,122,5,0,2,0,0,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,119,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,0,0,0,0,0,0,224,153,5,0,136,122,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,96,122,5,0,2,0,0,0,0,0,0,0,40,123,5,0,174,0,0,0,178,0,0,0,125,0,0,0,5,0,0,0,6,0,0,0,41,0,0,0,101,0,0,0,102,0,0,0,42,0,0,0,103,0,0,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,68,115,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,0,0,0,0,0,224,153,5,0,0,123,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,96,122,5,0,2,0,0,0,0,0,0,0,160,123,5,0,174,0,0,0,179,0,0,0,125,0,0,0,7,0,0,0,8,0,0,0,43,0,0,0,104,0,0,0,105,0,0,0,44,0,0,0,106,0,0,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,68,105,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,0,0,0,0,0,224,153,5,0,120,123,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,96,122,5,0,2,0,0,0,0,0,0,0,24,124,5,0,174,0,0,0,180,0,0,0,125,0,0,0,7,0,0,0,8,0,0,0,43,0,0,0,104,0,0,0,105,0,0,0,44,0,0,0,106,0,0,0,78,83,116,51,95,95,49,49,54,95,95,110,97,114,114,111,119,95,116,111,95,117,116,102,56,73,76,106,51,50,69,69,69,0,0,0,0,0,0,0,128,153,5,0,240,123,5,0,160,123,5,0,0,0,0,0,0,0,0,0,128,124,5,0,174,0,0,0,181,0,0,0,125,0,0,0,7,0,0,0,8,0,0,0,43,0,0,0,104,0,0,0,105,0,0,0,44,0,0,0,106,0,0,0,78,83,116,51,95,95,49,49,55,95,95,119,105,100,101,110,95,102,114,111,109,95,117,116,102,56,73,76,106,51,50,69,69,69,0,0,0,0,0,0,128,153,5,0,88,124,5,0,160,123,5,0,0,0,0,0,78,83,116,51,95,95,49,56,110,117,109,112,117,110,99,116,73,99,69,69,0,0,0,0,128,153,5,0,144,124,5,0,8,121,5,0,0,0,0,0,78,83,116,51,95,95,49,56,110,117,109,112,117,110,99,116,73,119,69,69,0,0,0,0,128,153,5,0,184,124,5,0,8,121,5,0,0,0,0,0,78,83,116,51,95,95,49,54,108,111,99,97,108,101,53,95,95,105,109,112,69,0,0,0,128,153,5,0,224,124,5,0,8,121,5,0,0,0,0,0,78,83,116,51,95,95,49,55,99,111,108,108,97,116,101,73,99,69,69,0,0,0,0,0,128,153,5,0,8,125,5,0,8,121,5,0,0,0,0,0,78,83,116,51,95,95,49,55,99,111,108,108,97,116,101,73,119,69,69,0,0,0,0,0,128,153,5,0,48,125,5,0,8,121,5,0,0,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,99,76,98,48,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,95,98,97,115,101,69,0,0,0,0,112,152,5,0,120,125,5,0,224,153,5,0,88,125,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,144,125,5,0,2,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,99,76,98,49,69,69,69,0,0,0,0,0,224,153,5,0,184,125,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,144,125,5,0,2,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,119,76,98,48,69,69,69,0,0,0,0,0,224,153,5,0,248,125,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,144,125,5,0,2,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,119,76,98,49,69,69,69,0,0,0,0,0,224,153,5,0,56,126,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,144,125,5,0,2,0,0,0,78,83,116,51,95,95,49,55,110,117,109,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,103,101,116,73,99,69,69,0,0,0,78,83,116,51,95,95,49,49,52,95,95,110,117,109,95,103,101,116,95,98,97,115,101,69,0,0,0,0,0,0,0,0,112,152,5,0,216,126,5,0,224,153,5,0,192,126,5,0,0,0,0,0,1,0,0,0,248,126,5,0,0,0,0,0,224,153,5,0,120,126,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,0,127,5,0,0,0,0,0,78,83,116,51,95,95,49,55,110,117,109,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,103,101,116,73,119,69,69,0,0,0,224,153,5,0,128,127,5,0,0,0,0,0,1,0,0,0,248,126,5,0,0,0,0,0,224,153,5,0,56,127,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,152,127,5,0,0,0,0,0,78,83,116,51,95,95,49,55,110,117,109,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,112,117,116,73,99,69,69,0,0,0,78,83,116,51,95,95,49,49,52,95,95,110,117,109,95,112,117,116,95,98,97,115,101,69,0,0,0,0,0,0,0,0,112,152,5,0,48,128,5,0,224,153,5,0,24,128,5,0,0,0,0,0,1,0,0,0,80,128,5,0,0,0,0,0,224,153,5,0,208,127,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,88,128,5,0,0,0,0,0,78,83,116,51,95,95,49,55,110,117,109,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,112,117,116,73,119,69,69,0,0,0,224,153,5,0,216,128,5,0,0,0,0,0,1,0,0,0,80,128,5,0,0,0,0,0,224,153,5,0,144,128,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,240,128,5,0,0,0,0,0,78,83,116,51,95,95,49,56,116,105,109,101,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,0,78,83,116,51,95,95,49,57,116,105,109,101,95,98,97,115,101,69,0,0,0,0,0,0,112,152,5,0,112,129,5,0,78,83,116,51,95,95,49,50,48,95,95,116,105,109,101,95,103,101,116,95,99,95,115,116,111,114,97,103,101,73,99,69,69,0,0,0,0,0,0,0,112,152,5,0,144,129,5,0,224,153,5,0,40,129,5,0,0,0,0,0,3,0,0,0,8,121,5,0,2,0,0,0,136,129,5,0,2,0,0,0,184,129,5,0,0,8,0,0,78,83,116,51,95,95,49,56,116,105,109,101,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,116,105,109,101,95,103,101,116,95,99,95,115,116,111,114,97,103,101,73,119,69,69,0,0,0,0,0,0,0,112,152,5,0,48,130,5,0,224,153,5,0,232,129,5,0,0,0,0,0,3,0,0,0,8,121,5,0,2,0,0,0,136,129,5,0,2,0,0,0,88,130,5,0,0,8,0,0,78,83,116,51,95,95,49,56,116,105,109,101,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,0,78,83,116,51,95,95,49,49,48,95,95,116,105,109,101,95,112,117,116,69,0,0,0,0,112,152,5,0,208,130,5,0,224,153,5,0,136,130,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,232,130,5,0,0,8,0,0,78,83,116,51,95,95,49,56,116,105,109,101,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,0,224,153,5,0,16,131,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,232,130,5,0,0,8,0,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,103,101,116,73,99,69,69,0,0,0,0,0,0,0,0,112,152,5,0,192,131,5,0,224,153,5,0,120,131,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,224,131,5,0,0,0,0,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,103,101,116,73,119,69,69,0,0,0,0,0,0,0,0,112,152,5,0,80,132,5,0,224,153,5,0,8,132,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,112,132,5,0,0,0,0,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,112,117,116,73,99,69,69,0,0,0,0,0,0,0,0,112,152,5,0,224,132,5,0,224,153,5,0,152,132,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,0,133,5,0,0,0,0,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,112,117,116,73,119,69,69,0,0,0,0,0,0,0,0,112,152,5,0,112,133,5,0,224,153,5,0,40,133,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,144,133,5,0,0,0,0,0,78,83,116,51,95,95,49,56,109,101,115,115,97,103,101,115,73,99,69,69,0,0,0,0,78,83,116,51,95,95,49,49,51,109,101,115,115,97,103,101,115,95,98,97,115,101,69,0,112,152,5,0,208,133,5,0,224,153,5,0,184,133,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,232,133,5,0,2,0,0,0,78,83,116,51,95,95,49,56,109,101,115,115,97,103,101,115,73,119,69,69,0,0,0,0,224,153,5,0,16,134,5,0,0,0,0,0,2,0,0,0,8,121,5,0,2,0,0,0,232,133,5,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,77,0,0,0,0,0,0,80,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,97,0,0,0,110,0,0,0,117,0,0,0,97,0,0,0,114,0,0,0,121,0,0,0,0,0,0,0,70,0,0,0,101,0,0,0,98,0,0,0,114,0,0,0,117,0,0,0,97,0,0,0,114,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,114,0,0,0,99,0,0,0,104,0,0,0,0,0,0,0,65,0,0,0,112,0,0,0,114,0,0,0,105,0,0,0,108,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,110,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,108,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,117,0,0,0,103,0,0,0,117,0,0,0,115,0,0,0,116,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,101,0,0,0,112,0,0,0,116,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,79,0,0,0,99,0,0,0,116,0,0,0,111,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,78,0,0,0,111,0,0,0,118,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,0,0,0,0,68,0,0,0,101,0,0,0,99,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,97,0,0,0,110,0,0,0,0,0,0,0,70,0,0,0,101,0,0,0,98,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,114,0,0,0,0,0,0,0,65,0,0,0,112,0,0,0,114,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,110,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,108,0,0,0,0,0,0,0,65,0,0,0,117,0,0,0,103,0,0,0,0,0,0,0,83,0,0,0,101,0,0,0,112,0,0,0,0,0,0,0,79,0,0,0,99,0,0,0,116,0,0,0,0,0,0,0,78,0,0,0,111,0,0,0,118,0,0,0,0,0,0,0,68,0,0,0,101,0,0,0,99],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+353820);allocate([74,97,110,117,97,114,121,0,70,101,98,114,117,97,114,121,0,0,0,0,0,0,0,0,77,97,114,99,104,0,0,0,65,112,114,105,108,0,0,0,77,97,121,0,0,0,0,0,74,117,110,101,0,0,0,0,74,117,108,121,0,0,0,0,65,117,103,117,115,116,0,0,83,101,112,116,101,109,98,101,114,0,0,0,0,0,0,0,79,99,116,111,98,101,114,0,78,111,118,101,109,98,101,114,0,0,0,0,0,0,0,0,68,101,99,101,109,98,101,114,0,0,0,0,0,0,0,0,74,97,110,0,0,0,0,0,70,101,98,0,0,0,0,0,77,97,114,0,0,0,0,0,65,112,114,0,0,0,0,0,74,117,110,0,0,0,0,0,74,117,108,0,0,0,0,0,65,117,103,0,0,0,0,0,83,101,112,0,0,0,0,0,79,99,116,0,0,0,0,0,78,111,118,0,0,0,0,0,68,101,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,117,0,0,0,110,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,111,0,0,0,110,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,117,0,0,0,101,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,87,0,0,0,101,0,0,0,100,0,0,0,110,0,0,0,101,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,84,0,0,0,104,0,0,0,117,0,0,0,114,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,114,0,0,0,105,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,97,0,0,0,116,0,0,0,117,0,0,0,114,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,117,0,0,0,110,0,0,0,0,0,0,0,77,0,0,0,111,0,0,0,110,0,0,0,0,0,0,0,84,0,0,0,117,0,0,0,101,0,0,0,0,0,0,0,87,0,0,0,101,0,0,0,100,0,0,0,0,0,0,0,84,0,0,0,104,0,0,0,117,0,0,0,0,0,0,0,70,0,0,0,114,0,0,0,105,0,0,0,0,0,0,0,83,0,0,0,97,0,0,0,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,117,110,100,97,121,0,0,77,111,110,100,97,121,0,0,84,117,101,115,100,97,121,0,87,101,100,110,101,115,100,97,121,0,0,0,0,0,0,0,84,104,117,114,115,100,97,121,0,0,0,0,0,0,0,0,70,114,105,100,97,121,0,0,83,97,116,117,114,100,97,121,0,0,0,0,0,0,0,0,83,117,110,0,0,0,0,0,77,111,110,0,0,0,0,0,84,117,101,0,0,0,0,0,87,101,100,0,0,0,0,0,84,104,117,0,0,0,0,0,70,114,105,0,0,0,0,0,83,97,116,0,0,0,0,0,2,0,0,192,3,0,0,192,4,0,0,192,5,0,0,192,6,0,0,192,7,0,0,192,8,0,0,192,9,0,0,192,10,0,0,192,11,0,0,192,12,0,0,192,13,0,0,192,14,0,0,192,15,0,0,192,16,0,0,192,17,0,0,192,18,0,0,192,19,0,0,192,20,0,0,192,21,0,0,192,22,0,0,192,23,0,0,192,24,0,0,192,25,0,0,192,26,0,0,192,27,0,0,192,28,0,0,192,29,0,0,192,30,0,0,192,31,0,0,192,0,0,0,179,1,0,0,195,2,0,0,195,3,0,0,195,4,0,0,195,5,0,0,195,6,0,0,195,7,0,0,195,8,0,0,195,9,0,0,195,10,0,0,195,11,0,0,195,12,0,0,195,13,0,0,211,14,0,0,195,15,0,0,195,0,0,12,187,1,0,12,195,2,0,12,195,3,0,12,195,4,0,12,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,48,148,5,0,0,0,0,0,117,110,99,97,117,103,104,116,0,0,0,0,0,0,0,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,0,0,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,0,0,0,0,0,0,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,0,0,116,101,114,109,105,110,97,116,105,110,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,0,0,0,0,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,0,0,0,0,0,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,0,0,0,0,0,0,0,200,149,5,0,182,0,0,0,183,0,0,0,107,0,0,0,0,0,0,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,0,83,116,57,98,97,100,95,97,108,108,111,99,0,0,0,0,128,153,5,0,184,149,5,0,40,150,5,0,0,0,0,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,0,0,0,0,0,0,0,0,115,116,100,58,58,101,120,99,101,112,116,105,111,110,0,0,83,116,57,101,120,99,101,112,116,105,111,110,0,0,0,0,112,152,5,0,24,150,5,0,0,0,0,0,112,150,5,0,184,0,0,0,185,0,0,0,108,0,0,0,0,0,0,0,0,0,0,0,24,151,5,0,186,0,0,0,187,0,0,0,59,0,0,0,0,0,0,0,83,116,49,49,108,111,103,105,99,95,101,114,114,111,114,0,128,153,5,0,96,150,5,0,40,150,5,0,0,0,0,0,0,0,0,0,176,150,5,0,184,0,0,0,188,0,0,0,108,0,0,0,0,0,0,0,83,116,49,50,108,101,110,103,116,104,95,101,114,114,111,114,0,0,0,0,0,0,0,0,128,153,5,0,152,150,5,0,112,150,5,0,0,0,0,0,0,0,0,0,240,150,5,0,184,0,0,0,189,0,0,0,108,0,0,0,0,0,0,0,83,116,49,50,111,117,116,95,111,102,95,114,97,110,103,101,0,0,0,0,0,0,0,0,128,153,5,0,216,150,5,0,112,150,5,0,0,0,0,0,83,116,49,51,114,117,110,116,105,109,101,95,101,114,114,111,114,0,0,0,0,0,0,0,128,153,5,0,0,151,5,0,40,150,5,0,0,0,0,0,0,0,0,0,120,151,5,0,190,0,0,0,191,0,0,0,109,0,0,0,0,0,0,0,115,116,100,58,58,98,97,100,95,99,97,115,116,0,0,0,83,116,57,116,121,112,101,95,105,110,102,111,0,0,0,0,112,152,5,0,80,151,5,0,83,116,56,98,97,100,95,99,97,115,116,0,0,0,0,0,128,153,5,0,104,151,5,0,40,150,5,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,0,128,153,5,0,136,151,5,0,96,151,5,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,128,153,5,0,192,151,5,0,176,151,5,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,128,153,5,0,32,152,5,0,176,151,5,0,0,0,0,0,128,153,5,0,248,151,5,0,72,152,5,0,0,0,0,0,0,0,0,0,232,151,5,0,192,0,0,0,193,0,0,0,194,0,0,0,195,0,0,0,69,0,0,0,13,0,0,0,4,0,0,0,8,0,0,0,0,0,0,0,88,152,5,0,192,0,0,0,196,0,0,0,194,0,0,0,195,0,0,0,70,0,0,0,0,0,0,0,0,0,0,0,248,152,5,0,192,0,0,0,197,0,0,0,194,0,0,0,195,0,0,0,71,0,0,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,51,95,95,102,117,110,100,97,109,101,110,116,97,108,95,116,121,112,101,95,105,110,102,111,69,0,128,153,5,0,208,152,5,0,176,151,5,0,0,0,0,0,118,0,0,0,0,0,0,0,184,152,5,0,8,153,5,0,68,110,0,0,0,0,0,0,184,152,5,0,24,153,5,0,99,0,0,0,0,0,0,0,184,152,5,0,40,153,5,0,80,99,0,0,0,0,0,0,152,152,5,0,56,153,5,0,0,0,0,0,48,153,5,0,80,75,99,0,0,0,0,0,152,152,5,0,80,153,5,0,1,0,0,0,48,153,5,0,105,0,0,0,0,0,0,0,184,152,5,0,104,153,5,0,0,0,0,0,200,153,5,0,192,0,0,0,198,0,0,0,194,0,0,0,195,0,0,0,69,0,0,0,14,0,0,0,5,0,0,0,9,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,128,153,5,0,160,153,5,0,232,151,5,0,0,0,0,0,0,0,0,0,40,154,5,0,192,0,0,0,199,0,0,0,194,0,0,0,195,0,0,0,69,0,0,0,15,0,0,0,6,0,0,0,10,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,49,95,95,118,109,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,128,153,5,0,0,154,5,0,232,151,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,1,2,4,7,3,6,5,0,0,0,0,0,0,0,0,105,110,102,105,110,105,116,121,0,0,0,0,0,0,0,0,95,112,137,0,255,9,47,15,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,0,0,0,0,0,0,0,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,0,0,0,0,0,0,40,110,117,108,108,41,0,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,0,0,0,0,0,105,110,102,0,0,0,0,0,73,78,70,0,0,0,0,0,110,97,110,0,0,0,0,0,78,65,78,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+364296);var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3];HEAP8[tempDoublePtr+4]=HEAP8[ptr+4];HEAP8[tempDoublePtr+5]=HEAP8[ptr+5];HEAP8[tempDoublePtr+6]=HEAP8[ptr+6];HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};var ___errno_state=0;function ___setErrNo(value){HEAP32[___errno_state>>2]=value;return value}var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.buffer.byteLength:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var errored=false;var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:(function(flags){if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{return flags}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var accmode=flag&2097155;var perms=["r","w","rw"][accmode];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if((flags&2097155)!==0||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),getStreamFromPtr:(function(ptr){return FS.streams[ptr-1]}),getPtrForStream:(function(stream){return stream?stream.fd+1:0}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}var mounts=FS.getMounts(FS.root.mount);var completed=0;function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=mounts.length){callback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdev:(function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){if(err===ERRNO_CODES.EISDIR)err=ERRNO_CODES.EPERM;throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(lookup.node.parent),link.node_ops.readlink(link))}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module["printErr"]("read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream}),close:(function(stream){try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret}),writeFile:(function(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";opts.encoding=opts.encoding||"utf8";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var stream=FS.open(path,opts.flags,opts.mode);if(opts.encoding==="utf8"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,0,opts.canOwn)}else if(opts.encoding==="binary"){FS.write(stream,data,0,data.length,0,opts.canOwn)}FS.close(stream)}),cwd:(function(){return FS.currentPath}),chdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,"x");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path}),createDefaultDirectories:(function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")}),createDefaultDevices:(function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:(function(){return 0}),write:(function(){return 0})});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto!=="undefined"){var randomBuffer=new Uint8Array(1);random_device=(function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]})}else if(ENVIRONMENT_IS_NODE){random_device=(function(){return require("crypto").randomBytes(1)[0]})}else{random_device=(function(){return Math.random()*256|0})}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")}),createStandardStreams:(function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin","r");HEAP32[_stdin>>2]=FS.getPtrForStream(stdin);assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");HEAP32[_stdout>>2]=FS.getPtrForStream(stdout);assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");HEAP32[_stderr>>2]=FS.getPtrForStream(stderr);assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno]};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices()}),init:(function(input,output,error){assert(!FS.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperty(lazyArray,"length",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})});Object.defineProperty(lazyArray,"chunkSize",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperty(node,"usedBytes",{get:(function(){return this.contents.length})});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i>2];if(len<0){frag=Pointer_stringify(HEAP32[string+i*4>>2])}else{frag=Pointer_stringify(HEAP32[string+i*4>>2],len)}}else{frag=Pointer_stringify(HEAP32[string+i*4>>2])}source+=frag}return source}),computeImageSize:(function(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return Math.floor((x+y-1)/y)*y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height<=0?0:(height-1)*alignedRowSize+plainRowSize}),get:(function(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=="Integer"){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats.length;break;case 35738:ret=5121;break;case 35739:ret=6408;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34068:{ret=0;break};default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case"Float":HEAPF32[p+i*4>>2]=result[i];break;case"Boolean":HEAP8[p+i>>0]=result[i]?1:0;break;default:throw"internal glGet error, bad type: "+type}}return}else if(result instanceof WebGLBuffer||result instanceof WebGLProgram||result instanceof WebGLFramebuffer||result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}}switch(type){case"Integer":HEAP32[p>>2]=ret;break;case"Float":HEAPF32[p>>2]=ret;break;case"Boolean":HEAP8[p>>0]=ret?1:0;break;default:throw"internal glGet error, bad type: "+type}}),getTexPixelData:(function(type,format,width,height,pixels,internalFormat){var sizePerPixel;var numChannels;switch(format){case 6406:case 6409:case 6402:case 6403:numChannels=1;break;case 6410:case 33319:numChannels=2;break;case 6407:numChannels=3;break;case 6408:numChannels=4;break;default:GL.recordError(1280);return{pixels:null,internalFormat:0}}switch(type){case 5121:sizePerPixel=numChannels*1;break;case 5123:case 36193:sizePerPixel=numChannels*2;break;case 5125:case 5126:sizePerPixel=numChannels*4;break;case 34042:sizePerPixel=4;break;case 33635:case 32819:case 32820:sizePerPixel=2;break;default:GL.recordError(1280);return{pixels:null,internalFormat:0}}var bytes=GL.computeImageSize(width,height,sizePerPixel,GL.unpackAlignment);if(type==5121){pixels=HEAPU8.subarray(pixels,pixels+bytes)}else if(type==5126){pixels=HEAPF32.subarray(pixels>>2,pixels+bytes>>2)}else if(type==5125||type==34042){pixels=HEAPU32.subarray(pixels>>2,pixels+bytes>>2)}else{pixels=HEAPU16.subarray(pixels>>1,pixels+bytes>>1)}return{pixels:pixels,internalFormat:internalFormat}}),validateBufferTarget:(function(target){switch(target){case 34962:case 34963:case 36662:case 36663:case 35051:case 35052:case 35882:case 35982:case 35345:return true;default:return false}}),createContext:(function(canvas,webGLContextAttributes){if(typeof webGLContextAttributes.majorVersion==="undefined"&&typeof webGLContextAttributes.minorVersion==="undefined"){webGLContextAttributes.majorVersion=1;webGLContextAttributes.minorVersion=0}var ctx;var errorInfo="?";function onContextCreationError(event){errorInfo=event.statusMessage||errorInfo}try{canvas.addEventListener("webglcontextcreationerror",onContextCreationError,false);try{if(webGLContextAttributes.majorVersion==1&&webGLContextAttributes.minorVersion==0){ctx=canvas.getContext("webgl",webGLContextAttributes)||canvas.getContext("experimental-webgl",webGLContextAttributes)}else if(webGLContextAttributes.majorVersion==2&&webGLContextAttributes.minorVersion==0){ctx=canvas.getContext("webgl2",webGLContextAttributes)||canvas.getContext("experimental-webgl2",webGLContextAttributes)}else{throw"Unsupported WebGL context version "+majorVersion+"."+minorVersion+"!"}}finally{canvas.removeEventListener("webglcontextcreationerror",onContextCreationError,false)}if(!ctx)throw":("}catch(e){Module.print("Could not create canvas: "+[errorInfo,e,JSON.stringify(webGLContextAttributes)]);return 0}if(!ctx)return 0;return GL.registerContext(ctx,webGLContextAttributes)}),registerContext:(function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes["enableExtensionsByDefault"]==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle}),makeContextCurrent:(function(contextHandle){var context=GL.contexts[contextHandle];if(!context)return false;GLctx=Module.ctx=context.GLctx;GL.currentContext=context;return true}),getContext:(function(contextHandle){return GL.contexts[contextHandle]}),deleteContext:(function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null}),initExtensions:(function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;context.maxVertexAttribs=GLctx.getParameter(GLctx.MAX_VERTEX_ATTRIBS);context.compressionExt=GLctx.getExtension("WEBGL_compressed_texture_s3tc")||GLctx.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||GLctx.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");context.anisotropicExt=GLctx.getExtension("EXT_texture_filter_anisotropic")||GLctx.getExtension("MOZ_EXT_texture_filter_anisotropic")||GLctx.getExtension("WEBKIT_EXT_texture_filter_anisotropic");context.floatExt=GLctx.getExtension("OES_texture_float");context.instancedArraysExt=GLctx.getExtension("ANGLE_instanced_arrays");context.vaoExt=GLctx.getExtension("OES_vertex_array_object");if(context.version===2){context.drawBuffersExt=(function(n,bufs){GLctx.drawBuffers(n,bufs)})}else{var ext=GLctx.getExtension("WEBGL_draw_buffers");if(ext){context.drawBuffersExt=(function(n,bufs){ext.drawBuffersWEBGL(n,bufs)})}}var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","WEBGL_compressed_texture_atc","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_frag_depth","EXT_sRGB","WEBGL_draw_buffers","WEBGL_shared_resources","EXT_shader_texture_lod"];function shouldEnableAutomatically(extension){var ret=false;automaticallyEnabledExtensions.forEach((function(include){if(ext.indexOf(include)!=-1){ret=true}}));return ret}var exts=GLctx.getSupportedExtensions();if(exts&&exts.length>0){GLctx.getSupportedExtensions().forEach((function(ext){ext=ext.replace("MOZ_","").replace("WEBKIT_","");if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}}))}}),populateUniformTable:(function(program){var p=GL.programs[program];GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1};var ptable=GL.programInfos[program];var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,GLctx.ACTIVE_UNIFORMS);for(var i=0;i>8,sock.sport&255]))}return peer}),getPeer:(function(sock,addr,port){return sock.peers[addr+":"+port]}),addPeer:(function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer}),removePeer:(function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]}),handlePeerEvents:(function(sock,peer){var first=true;var handleOpen=(function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}});function handleMessage(data){assert(typeof data!=="string"&&data.byteLength!==undefined);data=new Uint8Array(data);var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(function(data,flags){if(!flags.binary){return}handleMessage((new Uint8Array(data)).buffer)}));peer.socket.on("close",(function(){Module["websocket"].emit("close",sock.stream.fd)}));peer.socket.on("error",(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}))}else{peer.socket.onopen=handleOpen;peer.socket.onclose=(function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}}),poll:(function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask}),ioctl:(function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return ERRNO_CODES.EINVAL}}),close:(function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i>0]=chr;var fd=_fileno(stream);var ret=_write(fd,_fputc.ret,1);if(ret==-1){var streamObj=FS.getStreamFromPtr(stream);if(streamObj)streamObj.error=true;return-1}else{return chr}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7936:case 7937:case 7938:ret=allocate(intArrayFromString(GLctx.getParameter(name_)),"i8",ALLOC_NORMAL);break;case 7939:var exts=GLctx.getSupportedExtensions();var gl_exts=[];for(var i in exts){gl_exts.push(exts[i]);gl_exts.push("GL_"+exts[i])}ret=allocate(intArrayFromString(gl_exts.join(" ")),"i8",ALLOC_NORMAL);break;case 35724:ret=allocate(intArrayFromString("OpenGL ES GLSL 1.00 (WebGL)"),"i8",ALLOC_NORMAL);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}var _floorf=Math_floor;function _fwrite(ptr,size,nitems,stream){var bytesToWrite=nitems*size;if(bytesToWrite==0)return 0;var fd=_fileno(stream);var bytesWritten=_write(fd,ptr,bytesToWrite);if(bytesWritten==-1){var streamObj=FS.getStreamFromPtr(stream);if(streamObj)streamObj.error=true;return 0}else{return bytesWritten/size|0}}var _llvm_pow_f32=Math_pow;function __exit(status){Module["exit"](status)}function _exit(status){__exit(status)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}Module["_bitshift64Ashr"]=_bitshift64Ashr;var PTHREAD_SPECIFIC={};function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL}PTHREAD_SPECIFIC[key]=value;return 0}var _ceil=Math_ceil;function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;Module["_memmove"]=_memmove;function _glGenTextures(n,textures){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.textures);texture.name=id;GL.textures[id]=texture;HEAP32[textures+i*4>>2]=id}}var LOCALE={curr:0,check:(function(locale){if(locale)locale=Pointer_stringify(locale);return locale==="C"||locale==="POSIX"||!locale})};function _calloc(n,s){var ret=_malloc(n*s);_memset(ret,0,n*s);return ret}Module["_calloc"]=_calloc;function _newlocale(mask,locale,base){if(!LOCALE.check(locale)){___setErrNo(ERRNO_CODES.ENOENT);return 0}if(!base)base=_calloc(1,4);return base}var _emscripten_preinvoke=true;function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _pthread_cond_wait(){return 0}function _free(){}Module["_free"]=_free;function ___cxa_free_exception(ptr){try{return _free(ptr)}catch(e){}}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:(function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var ptr in EXCEPTIONS.infos){var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr}}return adjusted}),addRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++}),decRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0){if(info.destructor){Runtime.dynCall("vi",info.destructor,[ptr])}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___cxa_end_catch(){if(___cxa_end_catch.rethrown){___cxa_end_catch.rethrown=false;return}asm["setThrew"](0);var ptr=EXCEPTIONS.caught.pop();if(ptr){EXCEPTIONS.decRef(EXCEPTIONS.deAdjust(ptr));EXCEPTIONS.last=0}}function ___cxa_rethrow(){___cxa_end_catch.rethrown=true;var ptr=EXCEPTIONS.caught.pop();EXCEPTIONS.last=ptr;throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function _div(divt,numer,denom){var quot=numer/denom|0;var rem=numer-quot*denom;HEAP32[divt>>2]=quot;HEAP32[divt+4>>2]=rem;return divt}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glUniform1i(location,v0){location=GL.uniforms[location];GLctx.uniform1i(location,v0)}function _emscripten_get_now(){if(!_emscripten_get_now.actual){if(ENVIRONMENT_IS_NODE){_emscripten_get_now.actual=function _emscripten_get_now_actual(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now.actual=dateNow}else if(typeof self==="object"&&self["performance"]&&typeof self["performance"]["now"]==="function"){_emscripten_get_now.actual=function _emscripten_get_now_actual(){return self["performance"]["now"]()}}else if(typeof performance==="object"&&typeof performance["now"]==="function"){_emscripten_get_now.actual=function _emscripten_get_now_actual(){return performance["now"]()}}else{_emscripten_get_now.actual=Date.now}}return _emscripten_get_now.actual()}function _emscripten_get_now_is_monotonic(){return ENVIRONMENT_IS_NODE||typeof dateNow!=="undefined"||(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&self["performance"]&&self["performance"]["now"]}function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if(clk_id===1&&_emscripten_get_now_is_monotonic()){now=_emscripten_get_now()}else{___setErrNo(ERRNO_CODES.EINVAL);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}var _emscripten_cleanup_setjmp=true;function _glUniform2f(location,v0,v1){location=GL.uniforms[location];GLctx.uniform2f(location,v0,v1)}Module["_memset"]=_memset;var _BDtoILow=true;Module["_strlen"]=_strlen;Module["_strcat"]=_strcat;function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,normalized,stride,ptr)}Module["_bitshift64Shl"]=_bitshift64Shl;function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}function _glGetUniformLocation(program,name){name=Pointer_stringify(name);var arrayOffset=0;if(name.indexOf("]",name.length-1)!==-1){var ls=name.lastIndexOf("[");var arrayIndex=name.slice(ls+1,-1);if(arrayIndex.length>0){arrayOffset=parseInt(arrayIndex);if(arrayOffset<0){return-1}}name=name.slice(0,ls)}var ptable=GL.programInfos[program];if(!ptable){return-1}var utable=ptable.uniforms;var uniformInfo=utable[name];if(uniformInfo&&arrayOffset0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}if(Browser.mainLoop.method==="timeout"&&Module.ctx){Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!");Browser.mainLoop.method=""}Browser.mainLoop.runIter((function(){if(typeof arg!=="undefined"){Runtime.dynCall("vi",func,[arg])}else{Runtime.dynCall("v",func)}}));if(thisMainLoopId0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"SimulateInfiniteLoop"}}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:(function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++}),resume:(function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;_emscripten_set_main_loop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()}),updateStatus:(function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout((function(){finish(audio)}),1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);var canvas=Module["canvas"];function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===canvas||document["mozPointerLockElement"]===canvas||document["webkitPointerLockElement"]===canvas||document["msPointerLockElement"]===canvas}if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(function(){});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(function(){});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",(function(ev){if(!Browser.pointerLock&&canvas.requestPointerLock){canvas.requestPointerLock();ev.preventDefault()}}),false)}}}),createContext:(function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}canvas.style.backgroundColor="black"}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach((function(callback){callback()}));Browser.init()}return ctx}),destroyContext:(function(canvas,useWebGL,setInModule){}),fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:(function(lockPointer,resizeCanvas,vrDevice){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;Browser.vrDevice=vrDevice;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;if(typeof Browser.vrDevice==="undefined")Browser.vrDevice=null;var canvas=Module["canvas"];function fullScreenChange(){Browser.isFullScreen=false;var canvasContainer=canvas.parentNode;if((document["webkitFullScreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"]||document["mozFullscreenElement"]||document["fullScreenElement"]||document["fullscreenElement"]||document["msFullScreenElement"]||document["msFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.cancelFullScreen=document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["webkitCancelFullScreen"]||document["msExitFullscreen"]||document["exitFullscreen"]||(function(){});canvas.cancelFullScreen=canvas.cancelFullScreen.bind(document);if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullScreen=true;if(Browser.resizeCanvas)Browser.setFullScreenCanvasSize()}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas)Browser.setWindowedCanvasSize()}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullScreen);Browser.updateCanvasDimensions(canvas)}if(!Browser.fullScreenHandlersInstalled){Browser.fullScreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullScreenChange,false);document.addEventListener("mozfullscreenchange",fullScreenChange,false);document.addEventListener("webkitfullscreenchange",fullScreenChange,false);document.addEventListener("MSFullscreenChange",fullScreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullScreen=canvasContainer["requestFullScreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullScreen"]?(function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}):null);if(vrDevice){canvasContainer.requestFullScreen({vrDisplay:vrDevice})}else{canvasContainer.requestFullScreen()}}),nextRAF:0,fakeRequestAnimationFrame:(function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)}),requestAnimationFrame:function requestAnimationFrame(func){if(typeof window==="undefined"){Browser.fakeRequestAnimationFrame(func)}else{if(!window.requestAnimationFrame){window.requestAnimationFrame=window["requestAnimationFrame"]||window["mozRequestAnimationFrame"]||window["webkitRequestAnimationFrame"]||window["msRequestAnimationFrame"]||window["oRequestAnimationFrame"]||Browser.fakeRequestAnimationFrame}window.requestAnimationFrame(func)}},safeCallback:(function(func){return(function(){if(!ABORT)return func.apply(null,arguments)})}),allowAsyncCallbacks:true,queuedAsyncCallbacks:[],pauseAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=false}),resumeAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=true;if(Browser.queuedAsyncCallbacks.length>0){var callbacks=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[];callbacks.forEach((function(func){func()}))}}),safeRequestAnimationFrame:(function(func){return Browser.requestAnimationFrame((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}))}),safeSetTimeout:(function(func,timeout){Module["noExitRuntime"]=true;return setTimeout((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}),timeout)}),safeSetInterval:(function(func,timeout){Module["noExitRuntime"]=true;return setInterval((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}}),timeout)}),getMimetype:(function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]}),getUserMedia:(function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)}),getMovementX:(function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0}),getMovementY:(function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0}),getMouseWheelDelta:(function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail;break;case"mousewheel":delta=event.wheelDelta;break;case"wheel":delta=event["deltaY"];break;default:throw"unrecognized mouse wheel event: "+event.type}return delta}),mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:(function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){Browser.lastTouches[touch.identifier]=Browser.touches[touch.identifier];Browser.touches[touch.identifier]={x:adjustedX,y:adjustedY}}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}}),xhrLoad:(function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)}),asyncLoad:(function(url,onload,onerror,noRunDep){Browser.xhrLoad(url,(function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(!noRunDep)removeRunDependency("al "+url)}),(function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}}));if(!noRunDep)addRunDependency("al "+url)}),resizeListeners:[],updateResizeListeners:(function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach((function(listener){listener(canvas.width,canvas.height)}))}),setCanvasSize:(function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()}),windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags|8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),setWindowedCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags&~8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),updateCanvasDimensions:(function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h=0&&charCode<=31)return;Runtime.dynCall("vii",GLFW.active.charFunc,[GLFW.active.id,charCode])}),onKeyChanged:(function(event,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(event.keyCode);if(key==-1)return;GLFW.active.keys[key]=status;if(!GLFW.active.keyFunc)return;Runtime.dynCall("viiiii",GLFW.active.keyFunc,[GLFW.active.id,key,event.keyCode,status,GLFW.getModBits(GLFW.active)])}),onKeydown:(function(event){GLFW.onKeyChanged(event,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}}),onKeyup:(function(event){GLFW.onKeyChanged(event,0)}),onMousemove:(function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;Runtime.dynCall("vidd",GLFW.active.cursorPosFunc,[GLFW.active.id,Browser.mouseX,Browser.mouseY])}),onMouseButtonChanged:(function(event,status){if(!GLFW.active||!GLFW.active.mouseButtonFunc)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;if(status==1){try{event.target.setCapture()}catch(e){}}var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}Runtime.dynCall("viiii",GLFW.active.mouseButtonFunc,[GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active)])}),onMouseButtonDown:(function(event){if(!GLFW.active)return;GLFW.active.buttons|=1<0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}Runtime.dynCall("vidd",GLFW.active.scrollFunc,[GLFW.active.id,sx,sy]);event.preventDefault()}),onFullScreenEventChange:(function(event){if(!GLFW.active)return;if(document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.x=GLFW.active.y=0;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.width=screen.width;GLFW.active.height=screen.height}else{document.removeEventListener("fullscreenchange",GLFW.onFullScreenEventChange,true);document.removeEventListener("mozfullscreenchange",GLFW.onFullScreenEventChange,true);document.removeEventListener("webkitfullscreenchange",GLFW.onFullScreenEventChange,true);GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight}Browser.setCanvasSize(GLFW.active.width,GLFW.active.height);if(!GLFW.active.windowResizeFunc)return;Runtime.dynCall("viii",GLFW.active.windowResizeFunc,[GLFW.active.id,width,height])}),requestFullScreen:(function(){var RFS=Module["canvas"]["requestFullscreen"]||Module["canvas"]["requestFullScreen"]||Module["canvas"]["mozRequestFullScreen"]||Module["canvas"]["webkitRequestFullScreen"]||(function(){});RFS.apply(Module["canvas"],[])}),cancelFullScreen:(function(){var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["webkitCancelFullScreen"]||(function(){});CFS.apply(document,[])}),getTime:(function(){return _emscripten_get_now()/1e3}),setWindowTitle:(function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=Pointer_stringify(title);if(GLFW.active.id==win.id){document.title=win.title}}),setKeyCallback:(function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return;win.keyFunc=cbfun}),setCharCallback:(function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return;win.charFunc=cbfun}),setMouseButtonCallback:(function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return;win.mouseButtonFunc=cbfun}),setCursorPosCallback:(function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return;win.cursorPosFunc=cbfun}),setScrollCallback:(function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return;win.scrollFunc=cbfun}),setWindowSizeCallback:(function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return;win.windowSizeFunc=cbfun}),setWindowCloseCallback:(function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return;win.windowCloseFunc=cbfun}),setWindowRefreshCallback:(function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return;win.windowRefreshFunc=cbfun}),getKey:(function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]}),getMouseButton:(function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<0}),getCursorPos:(function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")}),getMousePos:(function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")}),setCursorPos:(function(winid,x,y){}),getWindowPos:(function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}setValue(x,wx,"i32");setValue(y,wy,"i32")}),setWindowPos:(function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y}),getWindowSize:(function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}setValue(width,ww,"i32");setValue(height,wh,"i32")}),setWindowSize:(function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){GLFW.requestFullScreen()}else{GLFW.cancelFullScreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowResizeFunc)return;Runtime.dynCall("viii",win.windowResizeFunc,[win.id,width,height])}),createWindow:(function(width,height,title,monitor,share){var i,id;for(i=0;i0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){GLFW.requestFullScreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}var win=new GLFW.Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id}),destroyWindow:(function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)Runtime.dynCall("vi",win.windowCloseFunc,[win.id]);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i>1]=values[i]}me.ret=allocate([arr+128*i16size],"i16*",ALLOC_NORMAL)}return me.ret}function _freelocale(locale){_free(locale)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _catgets(catd,set_id,msg_id,s){return s}function _glfwSetFramebufferSizeCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return;win.windowFramebufferSizeFunc=cbfun}function ___cxa_guard_acquire(variable){if(!HEAP8[variable>>0]){HEAP8[variable>>0]=1;return 1}return 0}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}function ___cxa_begin_catch(ptr){__ZSt18uncaught_exceptionv.uncaught_exception--;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}function _glfwTerminate(){window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwSetWindowUserPointer(winid,ptr){var win=GLFW.WindowFromId(winid);if(!win)return;win.userptr=ptr}function _glGenVertexArrays(n,arrays){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.vaos);vao.name=id;GL.vaos[id]=vao;HEAP32[arrays+i*4>>2]=id}}var _cos=Math_cos;function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glfwGetWindowUserPointer(winid){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.userptr}Module["_strcpy"]=_strcpy;function _glGetShaderiv(shader,pname,p){if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(!log)log="(unknown error)";HEAP32[p>>2]=log.length+1}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _atexit(func,arg){__ATEXIT__.unshift({func:func,arg:arg})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}Module["_i64Subtract"]=_i64Subtract;var _fabsf=Math_abs;Module["_i64Add"]=_i64Add;function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}EXCEPTIONS.clearRef(EXCEPTIONS.deAdjust(ptr));throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(asm["setTempRet0"](0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(asm["setTempRet0"](0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(asm["setTempRet0"](typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(asm["setTempRet0"](throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _open(path,oflag,varargs){var mode=HEAP32[varargs>>2];path=Pointer_stringify(path);try{var stream=FS.open(path,oflag,mode);return stream.fd}catch(e){FS.handleFSError(e);return-1}}function _fopen(filename,mode){var flags;mode=Pointer_stringify(mode);if(mode[0]=="r"){if(mode.indexOf("+")!=-1){flags=2}else{flags=0}}else if(mode[0]=="w"){if(mode.indexOf("+")!=-1){flags=2}else{flags=1}flags|=64;flags|=512}else if(mode[0]=="a"){if(mode.indexOf("+")!=-1){flags=2}else{flags=1}flags|=64;flags|=1024}else{___setErrNo(ERRNO_CODES.EINVAL);return 0}var fd=_open(filename,flags,allocate([511,0,0,0],"i32",ALLOC_STACK));return fd===-1?0:FS.getPtrForStream(FS.getStream(fd))}Module["_strncpy"]=_strncpy;function _realloc(ptr,size){if(!size){if(ptr)_free(ptr);return 0}var ret=_malloc(size);if(ptr){_memcpy(ret,ptr,size);_free(ptr)}return ret}Module["_realloc"]=_realloc;Module["_saveSetjmp"]=_saveSetjmp;var _log=Math_log;var _emscripten_postinvoke=true;var PTHREAD_SPECIFIC_NEXT_KEY=1;function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}function _glClear(x0){GLctx.clear(x0)}function _glActiveTexture(x0){GLctx.activeTexture(x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glBindBuffer(target,buffer){var bufferObj=buffer?GL.buffers[buffer]:null;GLctx.bindBuffer(target,bufferObj)}Module["_bitshift64Lshr"]=_bitshift64Lshr;var _emscripten_prep_setjmp=true;function _glBufferData(target,size,data,usage){switch(usage){case 35041:case 35042:usage=35040;break;case 35045:case 35046:usage=35044;break;case 35049:case 35050:usage=35048;break}if(!data){GLctx.bufferData(target,size,usage)}else{GLctx.bufferData(target,HEAPU8.subarray(data,data+size),usage)}}function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}var _BDtoIHigh=true;function _pthread_cond_broadcast(){return 0}Module["_testSetjmp"]=_testSetjmp;function _longjmp(env,value){asm["setThrew"](env,value||1);throw"longjmp"}function _emscripten_longjmp(env,value){_longjmp(env,value)}var _environ=allocate(1,"i32*",ALLOC_STATIC);var ___environ=_environ;function ___buildEnvironment(env){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV["USER"]="web_user";ENV["PATH"]="/";ENV["PWD"]="/";ENV["HOME"]="/home/web_user";ENV["LANG"]="C";ENV["_"]=Module["thisProgram"];poolPtr=allocate(TOTAL_ENV_SIZE,"i8",ALLOC_STATIC);envPtr=allocate(MAX_ENV_VALUES*4,"i8*",ALLOC_STATIC);HEAP32[envPtr>>2]=poolPtr;HEAP32[_environ>>2]=envPtr}else{envPtr=HEAP32[_environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in env){if(typeof env[key]==="string"){var line=key+"="+env[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}var ENV={};function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocate(intArrayFromString(ENV[name]),"i8",ALLOC_NORMAL);return _getenv.ret}function _glGetError(){if(GL.lastError){var error=GL.lastError;GL.lastError=0;return error}else{return GLctx.getError()}}function __reallyNegative(x){return x<0||x===0&&1/x===-Infinity}function __formatString(format,varargs){var textIndex=format;var argIndex=0;function getNextArg(type){var ret;if(type==="double"){ret=(HEAP32[tempDoublePtr>>2]=HEAP32[varargs+argIndex>>2],HEAP32[tempDoublePtr+4>>2]=HEAP32[varargs+(argIndex+4)>>2],+HEAPF64[tempDoublePtr>>3])}else if(type=="i64"){ret=[HEAP32[varargs+argIndex>>2],HEAP32[varargs+(argIndex+4)>>2]]}else{type="i32";ret=HEAP32[varargs+argIndex>>2]}argIndex+=Runtime.getNativeFieldSize(type);return ret}var ret=[];var curr,next,currArg;while(1){var startTextIndex=textIndex;curr=HEAP8[textIndex>>0];if(curr===0)break;next=HEAP8[textIndex+1>>0];if(curr==37){var flagAlwaysSigned=false;var flagLeftAlign=false;var flagAlternative=false;var flagZeroPad=false;var flagPadSign=false;flagsLoop:while(1){switch(next){case 43:flagAlwaysSigned=true;break;case 45:flagLeftAlign=true;break;case 35:flagAlternative=true;break;case 48:if(flagZeroPad){break flagsLoop}else{flagZeroPad=true;break};case 32:flagPadSign=true;break;default:break flagsLoop}textIndex++;next=HEAP8[textIndex+1>>0]}var width=0;if(next==42){width=getNextArg("i32");textIndex++;next=HEAP8[textIndex+1>>0]}else{while(next>=48&&next<=57){width=width*10+(next-48);textIndex++;next=HEAP8[textIndex+1>>0]}}var precisionSet=false,precision=-1;if(next==46){precision=0;precisionSet=true;textIndex++;next=HEAP8[textIndex+1>>0];if(next==42){precision=getNextArg("i32");textIndex++}else{while(1){var precisionChr=HEAP8[textIndex+1>>0];if(precisionChr<48||precisionChr>57)break;precision=precision*10+(precisionChr-48);textIndex++}}next=HEAP8[textIndex+1>>0]}if(precision<0){precision=6;precisionSet=false}var argSize;switch(String.fromCharCode(next)){case"h":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==104){textIndex++;argSize=1}else{argSize=2}break;case"l":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==108){textIndex++;argSize=8}else{argSize=4}break;case"L":case"q":case"j":argSize=8;break;case"z":case"t":case"I":argSize=4;break;default:argSize=null}if(argSize)textIndex++;next=HEAP8[textIndex+1>>0];switch(String.fromCharCode(next)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":{var signed=next==100||next==105;argSize=argSize||4;var currArg=getNextArg("i"+argSize*8);var origArg=currArg;var argText;if(argSize==8){currArg=Runtime.makeBigInt(currArg[0],currArg[1],next==117)}if(argSize<=4){var limit=Math.pow(256,argSize)-1;currArg=(signed?reSign:unSign)(currArg&limit,argSize*8)}var currAbsArg=Math.abs(currArg);var prefix="";if(next==100||next==105){if(argSize==8&&i64Math)argText=i64Math.stringify(origArg[0],origArg[1],null);else argText=reSign(currArg,8*argSize,1).toString(10)}else if(next==117){if(argSize==8&&i64Math)argText=i64Math.stringify(origArg[0],origArg[1],true);else argText=unSign(currArg,8*argSize,1).toString(10);currArg=Math.abs(currArg)}else if(next==111){argText=(flagAlternative?"0":"")+currAbsArg.toString(8)}else if(next==120||next==88){prefix=flagAlternative&&currArg!=0?"0x":"";if(argSize==8&&i64Math){if(origArg[1]){argText=(origArg[1]>>>0).toString(16);var lower=(origArg[0]>>>0).toString(16);while(lower.length<8)lower="0"+lower;argText+=lower}else{argText=(origArg[0]>>>0).toString(16)}}else if(currArg<0){currArg=-currArg;argText=(currAbsArg-1).toString(16);var buffer=[];for(var i=0;i=0){if(flagAlwaysSigned){prefix="+"+prefix}else if(flagPadSign){prefix=" "+prefix}}if(argText.charAt(0)=="-"){prefix="-"+prefix;argText=argText.substr(1)}while(prefix.length+argText.lengthexponent&&exponent>=-4){next=(next==103?"f":"F").charCodeAt(0);precision-=exponent+1}else{next=(next==103?"e":"E").charCodeAt(0);precision--}effectivePrecision=Math.min(precision,20)}if(next==101||next==69){argText=currArg.toExponential(effectivePrecision);if(/[eE][-+]\d$/.test(argText)){argText=argText.slice(0,-1)+"0"+argText.slice(-1)}}else if(next==102||next==70){argText=currArg.toFixed(effectivePrecision);if(currArg===0&&__reallyNegative(currArg)){argText="-"+argText}}var parts=argText.split("e");if(isGeneral&&!flagAlternative){while(parts[0].length>1&&parts[0].indexOf(".")!=-1&&(parts[0].slice(-1)=="0"||parts[0].slice(-1)==".")){parts[0]=parts[0].slice(0,-1)}}else{if(flagAlternative&&argText.indexOf(".")==-1)parts[0]+=".";while(precision>effectivePrecision++)parts[0]+="0"}argText=parts[0]+(parts.length>1?"e"+parts[1]:"");if(next==69)argText=argText.toUpperCase();if(currArg>=0){if(flagAlwaysSigned){argText="+"+argText}else if(flagPadSign){argText=" "+argText}}}while(argText.length>0])}}else{ret=ret.concat(intArrayFromString("(null)".substr(0,argLength),true))}if(flagLeftAlign){while(argLength0){ret.push(32)}if(!flagLeftAlign)ret.push(getNextArg("i8"));break};case"n":{var ptr=getNextArg("i32*");HEAP32[ptr>>2]=ret.length;break};case"%":{ret.push(curr);break};default:{for(var i=startTextIndex;i>0])}}}textIndex+=2}else{ret.push(curr);textIndex+=1}}return ret}function _fprintf(stream,format,varargs){var result=__formatString(format,varargs);var stack=Runtime.stackSave();var ret=_fwrite(allocate(result,"i8",ALLOC_STACK),1,result.length,stream);Runtime.stackRestore(stack);return ret}function _vfprintf(s,f,va_arg){return _fprintf(s,f,HEAP32[va_arg>>2])}function _pthread_mutex_unlock(){}function _glBindVertexArray(vao){GL.currentContext.vaoExt.bindVertexArrayOES(GL.vaos[vao])}var _llvm_pow_f64=Math_pow;function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=(function(){abort("cannot dynamically allocate, sbrk now has control")})}var ret=DYNAMICTOP;if(bytes!=0){var success=self.alloc(bytes);if(!success)return-1>>>0}return ret}function ___errno_location(){return ___errno_state}function _strerror_r(errnum,strerrbuf,buflen){if(errnum in ERRNO_MESSAGES){if(ERRNO_MESSAGES[errnum].length>buflen-1){return ___setErrNo(ERRNO_CODES.ERANGE)}else{var msg=ERRNO_MESSAGES[errnum];writeAsciiToMemory(msg,strerrbuf);return 0}}else{return ___setErrNo(ERRNO_CODES.EINVAL)}}function _strerror(errnum){if(!_strerror.buffer)_strerror.buffer=_malloc(256);_strerror_r(errnum,_strerror.buffer,256);return _strerror.buffer}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);return 1}function _catclose(catd){return 0}Module["_llvm_bswap_i32"]=_llvm_bswap_i32;function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function ___cxa_guard_release(){}function _ungetc(c,stream){stream=FS.getStreamFromPtr(stream);if(!stream){return-1}if(c===-1){return c}c=unSign(c&255);stream.ungotten.push(c);stream.eof=false;return c}function _uselocale(locale){var old=LOCALE.curr;if(locale)LOCALE.curr=locale;return old}function _glUseProgram(program){GLctx.useProgram(program?GL.programs[program]:null)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(pixels){var data=GL.getTexPixelData(type,format,width,height,pixels,internalFormat);pixels=data.pixels;internalFormat=data.internalFormat}else{pixels=null}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 79:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}var _SItoD=true;var _SItoF=true;function _recv(fd,buf,len,flags){var sock=SOCKFS.getSocket(fd);if(!sock){___setErrNo(ERRNO_CODES.EBADF);return-1}return _read(fd,buf,len)}function _pread(fildes,buf,nbyte,offset){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}try{var slab=HEAP8;return FS.read(stream,slab,buf,nbyte,offset)}catch(e){FS.handleFSError(e);return-1}}function _read(fildes,buf,nbyte){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}try{var slab=HEAP8;return FS.read(stream,slab,buf,nbyte)}catch(e){FS.handleFSError(e);return-1}}function _fread(ptr,size,nitems,stream){var bytesToRead=nitems*size;if(bytesToRead==0){return 0}var bytesRead=0;var streamObj=FS.getStreamFromPtr(stream);if(!streamObj){___setErrNo(ERRNO_CODES.EBADF);return 0}while(streamObj.ungotten.length&&bytesToRead>0){HEAP8[ptr++>>0]=streamObj.ungotten.pop();bytesToRead--;bytesRead++}var err=_read(streamObj.fd,ptr,bytesToRead);if(err==-1){if(streamObj)streamObj.error=true;return 0}bytesRead+=err;if(bytesRead0&&infoLog){writeStringToMemory(log,infoLog);if(length)HEAP32[length>>2]=log.length}else{if(length)HEAP32[length>>2]=0}}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]);return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?Pointer_stringify(tm_zone):""};var pattern=Pointer_stringify(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":(function(date){return WEEKDAYS[date.tm_wday].substring(0,3)}),"%A":(function(date){return WEEKDAYS[date.tm_wday]}),"%b":(function(date){return MONTHS[date.tm_mon].substring(0,3)}),"%B":(function(date){return MONTHS[date.tm_mon]}),"%C":(function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)}),"%d":(function(date){return leadingNulls(date.tm_mday,2)}),"%e":(function(date){return leadingSomething(date.tm_mday,2," ")}),"%g":(function(date){return getWeekBasedYear(date).toString().substring(2)}),"%G":(function(date){return getWeekBasedYear(date)}),"%H":(function(date){return leadingNulls(date.tm_hour,2)}),"%I":(function(date){return leadingNulls(date.tm_hour<13?date.tm_hour:date.tm_hour-12,2)}),"%j":(function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)}),"%m":(function(date){return leadingNulls(date.tm_mon+1,2)}),"%M":(function(date){return leadingNulls(date.tm_min,2)}),"%n":(function(){return"\n"}),"%p":(function(date){if(date.tm_hour>0&&date.tm_hour<13){return"AM"}else{return"PM"}}),"%S":(function(date){return leadingNulls(date.tm_sec,2)}),"%t":(function(){return"\t"}),"%u":(function(date){var day=new Date(date.tm_year+1900,date.tm_mon+1,date.tm_mday,0,0,0,0);return day.getDay()||7}),"%U":(function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"}),"%V":(function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)}),"%Z":(function(date){return date.tm_zone}),"%%":(function(){return"%"})};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _abort(){Module["abort"]()}function _glDeleteBuffers(n,buffers){for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GL.currArrayBuffer)GL.currArrayBuffer=0;if(id==GL.currElementArrayBuffer)GL.currElementArrayBuffer=0}}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Runtime.dynCall("v",func);_pthread_once.seen[ptr]=1}function _glfwMakeContextCurrent(winid){}var _tan=Math_tan;function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0}function _glEnable(x0){GLctx.enable(x0)}var _fabs=Math_abs;var _floor=Math_floor;function _fgetc(stream){var streamObj=FS.getStreamFromPtr(stream);if(!streamObj)return-1;if(streamObj.eof||streamObj.error)return-1;var ret=_fread(_fgetc.ret,1,1,stream);if(ret==0){return-1}else if(ret==-1){streamObj.error=true;return-1}else{return HEAPU8[_fgetc.ret>>0]}}function _getc(){return _fgetc.apply(null,arguments)}var _sqrt=Math_sqrt;function _glGenBuffers(n,buffers){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.buffers);buffer.name=id;GL.buffers[id]=buffer;HEAP32[buffers+i*4>>2]=id}}function _malloc(bytes){var ptr=Runtime.dynamicAlloc(bytes+8);return ptr+8&4294967288}Module["_malloc"]=_malloc;function ___cxa_allocate_exception(size){return _malloc(size)}var _sin=Math_sin;function _glBlendFunc(x0,x1){GLctx.blendFunc(x0,x1)}function _FreeImage_ConvertToRGBF(){Module["printErr"]("missing function: FreeImage_ConvertToRGBF");abort(-1)}var _ceilf=Math_ceil;function ___cxa_pure_virtual(){ABORT=true;throw"Pure virtual function called!"}function _glViewport(x0,x1,x2,x3){GLctx.viewport(x0,x1,x2,x3)}function _glfwPollEvents(){}function _catopen(name,oflag){return-1}function ___ctype_toupper_loc(){var me=___ctype_toupper_loc;if(!me.ret){var values=[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255];var i32size=4;var arr=_malloc(values.length*i32size);for(var i=0;i>2]=values[i]}me.ret=allocate([arr+128*i32size],"i32*",ALLOC_NORMAL)}return me.ret}function ___ctype_tolower_loc(){var me=___ctype_tolower_loc;if(!me.ret){var values=[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255];var i32size=4;var arr=_malloc(values.length*i32size);for(var i=0;i>2]=values[i]}me.ret=allocate([arr+128*i32size],"i32*",ALLOC_NORMAL)}return me.ret}function _glUniformMatrix4fv(location,count,transpose,value){location=GL.uniforms[location];var view;if(count===1){view=GL.miniTempBufferViews[15];for(var i=0;i<16;i++){view[i]=HEAPF32[value+i*4>>2]}}else{view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(location,transpose,view)}var _emscripten_setjmp=true;var _BItoD=true;function _glTexParameteri(x0,x1,x2){GLctx.texParameteri(x0,x1,x2)}function _glfwSetKeyCallback(winid,cbfun){GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){GLFW.setMouseButtonCallback(winid,cbfun)}var _atan2=Math_atan2;var _exp=Math_exp;function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function _glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function __ZN4half8_toFloatE(){Module["printErr"]("missing function: _ZN4half8_toFloatE");abort(-1)}var ___dso_handle=allocate(1,"i32*",ALLOC_STATIC);FS.staticInit();__ATINIT__.unshift({func:(function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()})});__ATMAIN__.push({func:(function(){FS.ignorePermissions=false})});__ATEXIT__.push({func:(function(){FS.quit()})});Module["FS_createFolder"]=FS.createFolder;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createLink"]=FS.createLink;Module["FS_createDevice"]=FS.createDevice;___errno_state=Runtime.staticAlloc(4);HEAP32[___errno_state>>2]=0;__ATINIT__.unshift({func:(function(){TTY.init()})});__ATEXIT__.push({func:(function(){TTY.shutdown()})});if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}var GLctx;GL.init();_fputc.ret=allocate([0],"i8",ALLOC_STATIC);__ATINIT__.push({func:(function(){SOCKFS.root=FS.mount(SOCKFS,{},null)})});Module["requestFullScreen"]=function Module_requestFullScreen(lockPointer,resizeCanvas,vrDevice){Browser.requestFullScreen(lockPointer,resizeCanvas,vrDevice)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};___buildEnvironment(ENV);_fgetc.ret=allocate([0],"i8",ALLOC_STATIC);STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}))}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function read(){throw"no read() available (jsc?)"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}this["Module"]=Module}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.log(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WEB){window["Module"]=Module}else{Module["load"]=importScripts}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}var Runtime={setTempRet0:(function(value){tempRet0=value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);return Module["dynCall_"+sig].apply(null,args)}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i0)return""}var c1=buffer[0];var c2=buffer[1];var c3=buffer[2];var c4=buffer[3];var ret;if(buffer.length==2){ret=String.fromCharCode((c1&31)<<6|c2&63)}else if(buffer.length==3){ret=String.fromCharCode((c1&15)<<12|(c2&63)<<6|c3&63)}else{var codePoint=(c1&7)<<18|(c2&63)<<12|(c3&63)<<6|c4&63;ret=String.fromCharCode(((codePoint-65536)/1024|0)+55296,(codePoint-65536)%1024+56320)}buffer.length=0;return ret});this.processJSString=function processJSString(string){string=unescape(encodeURIComponent(string));var ret=[];for(var i=0;i=TOTAL_MEMORY)enlargeMemory();return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[_malloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];if(t>=128)hasUtf=true;else if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(!hasUtf){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}var utf8=new Runtime.UTF8Processor;for(i=0;i>0];ret+=utf8.processCChar(t)}return ret}Module["Pointer_stringify"]=Pointer_stringify;function UTF16ToString(ptr){var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module["UTF16ToString"]=UTF16ToString;function stringToUTF16(str,outPtr){for(var i=0;i>1]=codeUnit}HEAP16[outPtr+str.length*2>>1]=0}Module["stringToUTF16"]=stringToUTF16;function UTF32ToString(ptr){var i=0;var str="";while(1){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)return str;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}}Module["UTF32ToString"]=UTF32ToString;function stringToUTF32(str,outPtr){var iChar=0;for(var iCodeUnit=0;iCodeUnit=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++iCodeUnit);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr+iChar*4>>2]=codeUnit;++iChar}HEAP32[outPtr+iChar*4>>2]=0}Module["stringToUTF32"]=stringToUTF32;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);var status=_malloc(4);var ret=Module["___cxa_demangle"](buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}}var i=3;var basicTypes={"v":"void","b":"bool","c":"char","s":"short","i":"int","l":"long","f":"float","d":"double","w":"wchar_t","a":"signed char","h":"unsigned char","t":"unsigned short","j":"unsigned int","m":"unsigned long","x":"long long","y":"unsigned long long","z":"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a"}else{ret=name}paramLoop:while(i0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var parsed=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}parsed=parse()}catch(e){parsed+="?"}if(parsed.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling")}return parsed}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){return x+4095&-4096}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function enlargeMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.")}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;var FAST_MEMORY=Module["FAST_MEMORY"]||2097152;var totalMemory=64*1024;while(totalMemory0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=Module.addOnPreRun=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=Module.addOnInit=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=Module.addOnPreMain=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=Module.addOnExit=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=Module.addOnPostRun=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var ret=(new Runtime.UTF8Processor).processJSString(stringy);if(length){ret.length=length}if(!dontAddNull){ret.push(0)}return ret}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer+str.length>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;STATIC_BASE=8;STATICTOP=STATIC_BASE+380448;__ATINIT__.push({func:(function(){__GLOBAL__I_a()})},{func:(function(){__GLOBAL__I_a32()})},{func:(function(){__GLOBAL__I_a75()})},{func:(function(){__GLOBAL__I_a1405()})});allocate([78,54,115,112,97,114,107,121,56,103,114,97,112,104,105,99,115,49,50,82,101,110,100,101,114,97,98,108,101,50,68,69,0,0,0,0,0,0,0,0,80,198,5,0,8,0,0,0,0,0,0,0,48,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,24,1,0,0,3,0,0,0,4,0,0,0,2,0,0,0,5,0,0,0,112,114,95,109,97,116,114,105,120,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,48,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,49,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,50,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,51,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,52,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,53,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,54,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,55,0,0,0,0,0,0,0,78,54,115,112,97,114,107,121,56,103,114,97,112,104,105,99,115,53,76,97,121,101,114,69,0,0,0,0,0,0,0,0,80,198,5,0,248,0,0,0,0,0,0,0,104,1,0,0,6,0,0,0,7,0,0,0,3,0,0,0,0,0,0,0,83,111,117,114,99,101,83,97,110,115,80,114,111,0,0,0,78,54,115,112,97,114,107,121,56,103,114,97,112,104,105,99,115,53,76,97,98,101,108,69,0,0,0,0,0,0,0,0,96,199,5,0,72,1,0,0,48,0,0,0,0,0,0,0,0,0,0,0,176,1,0,0,1,0,0,0,8,0,0,0,1,0,0,0,0,0,0,0,78,54,115,112,97,114,107,121,56,103,114,97,112,104,105,99,115,54,83,112,114,105,116,101,69,0,0,0,0,0,0,0,96,199,5,0,144,1,0,0,48,0,0,0,0,0,0,0,0,0,0,0,56,2,0,0,9,0,0,0,10,0,0,0,11,0,0,0,4,0,0,0,1,0,0,0,12,0,0,0,13,0,0,0,0,0,0,0,78,54,115,112,97,114,107,121,56,103,114,97,112,104,105,99,115,49,53,66,97,116,99,104,82,101,110,100,101,114,101,114,50,68,69,0,0,0,0,0,78,54,115,112,97,114,107,121,56,103,114,97,112,104,105,99,115,49,48,82,101,110,100,101,114,101,114,50,68,69,0,0,80,198,5,0,16,2,0,0,96,199,5,0,232,1,0,0,48,2,0,0,0,0,0,0,0,0,0,0,48,2,0,0,14,0,0,0,15,0,0,0,16,0,0,0,1,0,0,0,2,0,0,0,17,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,118,101,114,116,101,120,32,115,104,97,100,101,114,33,0,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,102,114,97,103,109,101,110,116,32,115,104,97,100,101,114,33,0,0,0,0,0,0,114,116,0,0,0,0,0,0,91,83,80,65,82,75,89,93,91,69,82,82,79,82,93,58,32,0,0,0,0,0,0,0,91,84,101,120,116,117,114,101,93,32,85,110,115,117,112,112,111,114,116,101,100,32,105,109,97,103,101,32,98,105,116,45,100,101,112,116,104,33,32,40,37,100,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,114,99,101,83,97,110,115,80,114,111,0,0,0,114,101,115,47,83,111,117,114,99,101,83,97,110,115,80,114,111,45,76,105,103,104,116,46,116,116,102,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,71,76,70,87,33,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,99,114,101,97,116,101,32,71,76,70,87,32,119,105,110,100,111,119,33,0,0,0,79,112,101,110,71,76,32,0,79,112,101,110,71,76,32,69,114,114,111,114,58,32,0,0,91,83,111,117,110,100,93,32,73,110,118,97,108,105,100,32,102,105,108,101,32,110,97,109,101,32,39,0,0,0,0,0,39,33,0,0,0,0,0,0,64,0,0,0,0,0,0,0,32,5,0,0,18,0,0,0,19,0,0,0,56,0,0,0,248,255,255,255,32,5,0,0,20,0,0,0,21,0,0,0,192,255,255,255,192,255,255,255,32,5,0,0,22,0,0,0,23,0,0,0,0,0,0,0,236,3,0,0,84,4,0,0,148,4,0,0,168,4,0,0,188,4,0,0,208,4,0,0,124,4,0,0,104,4,0,0,20,4,0,0,0,4,0,0,64,0,0,0,0,0,0,0,24,156,5,0,24,0,0,0,25,0,0,0,56,0,0,0,248,255,255,255,24,156,5,0,26,0,0,0,27,0,0,0,192,255,255,255,192,255,255,255,24,156,5,0,28,0,0,0,29,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,248,154,5,0,30,0,0,0,31,0,0,0,192,255,255,255,192,255,255,255,248,154,5,0,32,0,0,0,33,0,0,0,56,0,0,0,0,0,0,0,136,155,5,0,34,0,0,0,35,0,0,0,200,255,255,255,200,255,255,255,136,155,5,0,36,0,0,0,37,0,0,0,78,83,116,51,95,95,49,49,56,98,97,115,105,99,95,115,116,114,105,110,103,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,0,0,0,96,199,5,0,216,4,0,0,24,156,5,0,0,0,0,0,0,0,0,0,184,5,0,0,38,0,0,0,39,0,0,0,5,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,78,83,116,51,95,95,49,49,53,98,97,115,105,99,95,115,116,114,105,110,103,98,117,102,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,0,0,0,0,0,0,96,199,5,0,112,5,0,0,128,154,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,111,100,117,108,101,46,83,111,117,110,100,77,97,110,97,103,101,114,32,61,32,123,32,125,59,32,77,111,100,117,108,101,46,83,111,117,110,100,77,97,110,97,103,101,114,46,109,95,83,111,117,110,100,115,32,61,32,123,32,125,59,32,77,111,100,117,108,101,46,83,111,117,110,100,77,97,110,97,103,101,114,65,100,100,32,61,32,102,117,110,99,116,105,111,110,40,110,97,109,101,44,32,102,105,108,101,110,97,109,101,41,32,123,32,77,111,100,117,108,101,46,83,111,117,110,100,77,97,110,97,103,101,114,46,109,95,83,111,117,110,100,115,91,110,97,109,101,93,32,61,32,110,101,119,32,65,117,100,105,111,40,102,105,108,101,110,97,109,101,41,59,32,125,59,32,77,111,100,117,108,101,46,83,111,117,110,100,77,97,110,97,103,101,114,80,108,97,121,32,61,32,102,117,110,99,116,105,111,110,40,110,97,109,101,41,32,123,32,77,111,100,117,108,101,46,83,111,117,110,100,77,97,110,97,103,101,114,46,109,95,83,111,117,110,100,115,91,110,97,109,101,93,46,112,108,97,121,40,41,59,32,125,59,32,77,111,100,117,108,101,46,83,111,117,110,100,77,97,110,97,103,101,114,80,97,117,115,101,32,61,32,102,117,110,99,116,105,111,110,40,110,97,109,101,41,32,123,32,77,111,100,117,108,101,46,83,111,117,110,100,77,97,110,97,103,101,114,46,109,95,83,111,117,110,100,115,91,110,97,109,101,93,46,112,97,117,115,101,40,41,59,32,125,59,32,77,111,100,117,108,101,46,83,111,117,110,100,77,97,110,97,103,101,114,83,116,111,112,32,61,32,102,117,110,99,116,105,111,110,40,110,97,109,101,41,32,123,32,77,111,100,117,108,101,46,83,111,117,110,100,77,97,110,97,103,101,114,80,97,117,115,101,40,110,97,109,101,41,59,32,77,111,100,117,108,101,46,83,111,117,110,100,77,97,110,97,103,101,114,46,109,95,83,111,117,110,100,115,91,110,97,109,101,93,46,99,117,114,114,101,110,116,84,105,109,101,32,61,32,48,59,32,77,111,100,117,108,101,46,83,111,117,110,100,77,97,110,97,103,101,114,46,109,95,83,111,117,110,100,115,91,110,97,109,101,93,46,108,111,111,112,32,61,32,102,97,108,115,101,59,32,125,59,32,77,111,100,117,108,101,46,83,111,117,110,100,77,97,110,97,103,101,114,76,111,111,112,32,61,32,102,117,110,99,116,105,111,110,40,110,97,109,101,41,32,123,32,77,111,100,117,108,101,46,83,111,117,110,100,77,97,110,97,103,101,114,46,109,95,83,111,117,110,100,115,91,110,97,109,101,93,46,112,108,97,121,40,41,59,32,77,111,100,117,108,101,46,83,111,117,110,100,77,97,110,97,103,101,114,46,109,95,83,111,117,110,100,115,91,110,97,109,101,93,46,108,111,111,112,32,61,32,116,114,117,101,59,32,125,59,32,77,111,100,117,108,101,46,83,111,117,110,100,77,97,110,97,103,101,114,83,101,116,71,97,105,110,32,61,32,102,117,110,99,116,105,111,110,40,110,97,109,101,44,32,103,97,105,110,41,32,123,32,77,111,100,117,108,101,46,83,111,117,110,100,77,97,110,97,103,101,114,46,109,95,83,111,117,110,100,115,91,110,97,109,101,93,46,118,111,108,117,109,101,32,61,32,103,97,105,110,59,32,125,59,0,0,0,0,0,0,0,0,0,0,0,0,48,9,0,0,40,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,52,71,97,109,101,0,0,0,78,54,115,112,97,114,107,121,54,83,112,97,114,107,121,69,0,0,0,0,0,0,0,0,80,198,5,0,16,9,0,0,96,199,5,0,8,9,0,0,40,9,0,0,0,0,0,0,108,105,103,104,116,95,112,111,115,0,0,0,0,0,0,0,32,102,112,115,0,0,0,0,32,117,112,115,44,32,0,0,84,101,115,116,32,71,97,109,101,0,0,0,0,0,0,0,114,101,115,47,115,104,97,100,101,114,115,47,98,97,115,105,99,46,101,115,51,46,118,101,114,116,0,0,0,0,0,0,114,101,115,47,115,104,97,100,101,114,115,47,98,97,115,105,99,46,101,115,51,46,102,114,97,103,0,0,0,0,0,0,84,101,120,0,0,0,0,0,114,101,115,47,116,98,46,112,110,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,111,108,0,0,0,0,0,67,104,101,114,110,111,46,111,103,103,0,0,0,0,0,0,0,0,0,0,40,9,0,0,46,0,0,0,47,0,0,0,1,0,0,0,48,0,0,0,49,0,0,0,1,0,0,0,78,83,116,51,95,95,49,49,55,98,97,100,95,102,117,110,99,116,105,111,110,95,99,97,108,108,69,0,0,0,0,0,96,199,5,0,8,10,0,0,8,196,5,0,0,0,0,0,0,0,0,0,40,10,0,0,50,0,0,0,51,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,8,11,0,0,52,0,0,0,53,0,0,0,6,0,0,0,6,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,3,0,0,0,7,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,48,95,95,102,117,110,99,116,105,111,110,54,95,95,102,117,110,99,73,90,78,54,115,112,97,114,107,121,54,83,112,97,114,107,121,51,114,117,110,69,118,69,85,108,118,69,95,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,52,95,69,69,70,118,118,69,69,69,0,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,48,95,95,102,117,110,99,116,105,111,110,54,95,95,98,97,115,101,73,70,118,118,69,69,69,0,0,0,0,0,0,0,80,198,5,0,216,10,0,0,96,199,5,0,128,10,0,0,0,11,0,0,0,0,0,0,90,78,54,115,112,97,114,107,121,54,83,112,97,114,107,121,51,114,117,110,69,118,69,85,108,118,69,95,0,0,0,0,80,198,5,0,24,11,0,0,84,72,69,90,79,67,81,83,0,72,69,90,76,79,67,85,83,0,102,105,106,107,100,98,104,0,120,122,114,111,101,115,99,0,112,113,103,106,121,0,215,145,215,147,215,148,215,151,215,154,215,155,215,157,215,161,0,215,145,215,152,215,155,215,157,215,161,215,166,0,215,167,215,154,215,159,215,163,215,165,0,228,187,150,228,187,172,228,189,160,228,190,134,229,128,145,229,136,176,229,146,140,229,156,176,229,175,185,229,176,141,229,176,177,229,184,173,230,136,145,230,151,182,230,153,130,230,156,131,230,157,165,231,130,186,232,131,189,232,136,176,232,170,170,232,175,180,232,191,153,233,128,153,233,189,138,0,229,134,155,229,144,140,229,183,178,230,132,191,230,151,162,230,152,159,230,152,175,230,153,175,230,176,145,231,133,167,231,142,176,231,143,190,231,144,134,231,148,168,231,189,174,232,166,129,232,187,141,233,130,163,233,133,141,233,135,140,233,150,139,233,155,183,233,156,178,233,157,162,233,161,190,0,228,184,170,228,184,186,228,186,186,228,187,150,228,187,165,228,187,172,228,189,160,228,190,134,229,128,139,229,128,145,229,136,176,229,146,140,229,164,167,229,175,185,229,176,141,229,176,177,230,136,145,230,151,182,230,153,130,230,156,137,230,157,165,231,130,186,232,166,129,232,170,170,232,175,180,0,228,184,187,228,186,155,229,155,160,229,174,131,230,131,179,230,132,143,231,144,134,231,148,159,231,149,182,231,156,139,231,157,128,231,189,174,232,128,133,232,135,170,232,145,151,232,163,161,232,191,135,232,191,152,232,191,155,233,128,178,233,129,142,233,129,147,233,130,132,233,135,140,233,157,162,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,18,0,0,0,3,0,0,0,26,0,0,0,1,0,0,0,26,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,129,1,0,0,0,0,0,0,40,0,0,0,5,0,0,0,57,0,0,0,0,0,0,0,70,0,0,0,0,0,0,0,129,1,0,0,0,0,0,0,81,0,0,0,6,0,0,0,157,0,0,0,2,0,0,0,233,0,0,0,4,0,0,0,53,1,0,0,0,0,0,0,129,1,0,0,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,1,0,0,0,172,5,0,0,5,0,0,0,7,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,0,0,0,0,2,0,0,0,172,5,0,0,7,0,0,0,8,0,0,0,0,0,0,0,8,0,0,0,6,0,0,0,0,0,0,0,3,0,0,0,172,5,0,0,9,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,7,0,0,0,0,0,0,0,72,13,0,0,104,13,0,0,136,13,0,0,168,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,120,16,0,0,111,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,11,0,0,0,2,0,0,0,112,15,0,0,48,117,0,0,0,0,0,0,3,0,0,0,7,0,0,0,1,0,0,0,88,15,0,0,221,5,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,0,0,0,112,14,0,0,111,0,0,0,0,0,0,0,224,13,0,0,248,13,0,0,16,14,0,0,40,14,0,0,64,14,0,0,0,0,0,0,32,0,0,0,127,0,0,0,160,0,0,0,255,0,0,0,0,1,0,0,127,1,0,0,128,1,0,0,79,2,0,0,80,2,0,0,175,2,0,0,176,2,0,0,255,2,0,0,0,3,0,0,111,3,0,0,112,3,0,0,255,3,0,0,0,4,0,0,255,4,0,0,0,5,0,0,47,5,0,0,0,29,0,0,127,29,0,0,128,29,0,0,191,29,0,0,192,29,0,0,255,29,0,0,0,30,0,0,255,30,0,0,0,31,0,0,255,31,0,0,0,32,0,0,111,32,0,0,112,32,0,0,159,32,0,0,160,32,0,0,207,32,0,0,80,33,0,0,143,33,0,0,96,36,0,0,255,36,0,0,96,44,0,0,127,44,0,0,224,45,0,0,255,45,0,0,0,46,0,0,127,46,0,0,64,166,0,0,159,166,0,0,32,167,0,0,255,167,0,0,0,251,0,0,6,251,0,0,0,212,1,0,255,215,1,0,0,241,1,0,255,241,1,0,0,0,0,0,0,0,0,0,144,5,0,0,255,5,0,0,29,251,0,0,79,251,0,0,0,0,0,0,0,0,0,0,0,17,0,0,255,17,0,0,128,46,0,0,255,46,0,0,0,47,0,0,223,47,0,0,240,47,0,0,255,47,0,0,0,48,0,0,63,48,0,0,64,48,0,0,159,48,0,0,160,48,0,0,255,48,0,0,0,49,0,0,47,49,0,0,48,49,0,0,143,49,0,0,144,49,0,0,159,49,0,0,160,49,0,0,191,49,0,0,192,49,0,0,239,49,0,0,240,49,0,0,255,49,0,0,0,50,0,0,255,50,0,0,0,51,0,0,255,51,0,0,0,52,0,0,191,77,0,0,192,77,0,0,255,77,0,0,0,78,0,0,255,159,0,0,96,169,0,0,127,169,0,0,0,172,0,0,175,215,0,0,176,215,0,0,255,215,0,0,0,249,0,0,255,250,0,0,16,254,0,0,31,254,0,0,48,254,0,0,79,254,0,0,0,255,0,0,239,255,0,0,0,176,1,0,255,176,1,0,0,211,1,0,95,211,1,0,0,242,1,0,255,242,1,0,0,0,2,0,223,166,2,0,0,167,2,0,63,183,2,0,64,183,2,0,31,184,2,0,0,248,2,0,31,250,2,0,0,0,0,0,0,0,0,0,0,9,0,0,255,13,0,0,0,15,0,0,255,15,0,0,0,25,0,0,79,25,0,0,128,27,0,0,191,27,0,0,128,28,0,0,223,28,0,0,0,168,0,0,47,168,0,0,0,24,1,0,223,24,1,0,0,0,0,0,0,0,0,0,102,97,108,108,98,97,99,107,45,115,99,114,105,112,116,0,105,110,99,114,101,97,115,101,45,120,45,104,101,105,103,104,116,0,0,0,0,0,0,0,103,108,121,112,104,45,116,111,45,115,99,114,105,112,116,45,109,97,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,97,117,116,111,102,105,116,116,101,114,0,0,0,0,0,0,4,0,0,0,196,0,0,0,8,17,0,0,0,0,1,0,0,0,2,0,248,16,0,0,8,0,0,0,57,0,0,0,11,0,0,0,0,0,0,0,80,17,0,0,96,17,0,0,0,0,0,0,0,0,0,0,112,114,111,112,101,114,116,105,101,115,0,0,0,0,0,0,8,0,0,0,9,0,0,0,116,114,117,101,116,121,112,101,0,0,0,0,0,0,0,0,103,108,121,112,104,45,100,105,99,116,0,0,0,0,0,0,116,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,116,121,112,101,52,50,0,0,152,17,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,2,0,0,0,5,0,0,0,3,0,0,0,6,0,0,0,4,0,0,0,7,0,0,0,5,0,0,0,8,0,0,0,6,0,0,0,9,0,0,0,7,0,0,0,10,0,0,0,8,0,0,0,167,144,26,0,71,9,14,0,1,32,7,0,139,147,3,0,56,202,1,0,42,229,0,0,151,114,0,0,76,57,0,0,166,28,0,0,83,14,0,0,41,7,0,0,149,3,0,0,202,1,0,0,229,0,0,0,115,0,0,0,57,0,0,0,29,0,0,0,14,0,0,0,7,0,0,0,4,0,0,0,2,0,0,0,1,0,0,0,46,65,112,112,108,101,68,111,117,98,108,101,47,0,0,0,37,0,0,0,0,0,0,0,46,114,101,115,111,117,114,99,101,47,0,0,0,0,0,0,114,101,115,111,117,114,99,101,46,102,114,107,47,0,0,0,47,46,46,110,97,109,101,100,102,111,114,107,47,114,115,114,99,0,0,0,0,0,0,0,47,114,115,114,99,0,0,0,46,95,0,0,0,0,0,0,79,84,84,79,0,0,0,0,99,102,102,0,0,0,0,0,116,121,112,101,49,0,0,0,99,105,100,0,0,0,0,0,52,0,0,0,115,116,105,98,12,0,0,0,58,0,0,0,13,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,40,0,0,0,108,116,117,111,14,0,0,0,59,0,0,0,15,0,0,0,1,0,0,0,11,0,0,0,16,0,0,0,114,98,0,0,0,0,0,0,24,0,0,0,17,0,0,0,60,0,0,0,18,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,100,102,0,0,0,0,0,1,2,0,0,28,0,0,0,56,19,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,168,0,0,0,44,0,0,0,160,0,0,0,11,0,0,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,22,0,0,0,83,80,65,67,73,78,71,0,70,65,77,73,76,89,95,78,65,77,69,0,0,0,0,0,65,86,69,82,65,71,69,95,87,73,68,84,72,0,0,0,80,79,73,78,84,95,83,73,90,69,0,0,0,0,0,0,80,73,88,69,76,95,83,73,90,69,0,0,0,0,0,0,82,69,83,79,76,85,84,73,79,78,95,88,0,0,0,0,82,69,83,79,76,85,84,73,79,78,95,89,0,0,0,0,67,72,65,82,83,69,84,95,82,69,71,73,83,84,82,89,0,0,0,0,0,0,0,0,67,72,65,82,83,69,84,95,69,78,67,79,68,73,78,71,0,0,0,0,0,0,0,0,49,48,54,52,54,0,0,0,56,56,53,57,0,0,0,0,49,0,0,0,0,0,0,0,83,76,65,78,84,0,0,0,79,98,108,105,113,117,101,0,73,116,97,108,105,99,0,0,87,69,73,71,72,84,95,78,65,77,69,0,0,0,0,0,66,111,108,100,0,0,0,0,83,69,84,87,73,68,84,72,95,78,65,77,69,0,0,0,65,68,68,95,83,84,89,76,69,95,78,65,77,69,0,0,82,101,103,117,108,97,114,0,67,79,77,77,69,78,84,0,83,84,65,82,84,70,79,78,84,0,0,0,0,0,0,0,144,20,0,0,1,0,0,0,1,0,0,0,0,0,0,0,184,19,0,0,2,0,0,0,1,0,0,0,0,0,0,0,184,27,0,0,2,0,0,0,1,0,0,0,0,0,0,0,208,27,0,0,2,0,0,0,1,0,0,0,0,0,0,0,232,27,0,0,2,0,0,0,1,0,0,0,0,0,0,0,248,27,0,0,1,0,0,0,1,0,0,0,0,0,0,0,32,20,0,0,1,0,0,0,1,0,0,0,0,0,0,0,8,20,0,0,1,0,0,0,1,0,0,0,0,0,0,0,168,20,0,0,1,0,0,0,1,0,0,0,0,0,0,0,16,28,0,0,1,0,0,0,1,0,0,0,0,0,0,0,112,27,0,0,3,0,0,0,1,0,0,0,0,0,0,0,32,28,0,0,3,0,0,0,1,0,0,0,0,0,0,0,48,28,0,0,1,0,0,0,1,0,0,0,0,0,0,0,72,28,0,0,2,0,0,0,1,0,0,0,0,0,0,0,88,28,0,0,1,0,0,0,1,0,0,0,0,0,0,0,168,19,0,0,1,0,0,0,1,0,0,0,0,0,0,0,104,28,0,0,2,0,0,0,1,0,0,0,0,0,0,0,24,26,0,0,1,0,0,0,1,0,0,0,0,0,0,0,120,28,0,0,1,0,0,0,1,0,0,0,0,0,0,0,56,26,0,0,2,0,0,0,1,0,0,0,0,0,0,0,72,26,0,0,2,0,0,0,1,0,0,0,0,0,0,0,144,28,0,0,1,0,0,0,1,0,0,0,0,0,0,0,152,28,0,0,1,0,0,0,1,0,0,0,0,0,0,0,168,28,0,0,2,0,0,0,1,0,0,0,0,0,0,0,184,28,0,0,2,0,0,0,1,0,0,0,0,0,0,0,200,28,0,0,2,0,0,0,1,0,0,0,0,0,0,0,216,28,0,0,2,0,0,0,1,0,0,0,0,0,0,0,232,28,0,0,1,0,0,0,1,0,0,0,0,0,0,0,216,19,0,0,2,0,0,0,1,0,0,0,0,0,0,0,200,19,0,0,2,0,0,0,1,0,0,0,0,0,0,0,240,28,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,29,0,0,2,0,0,0,1,0,0,0,0,0,0,0,16,29,0,0,2,0,0,0,1,0,0,0,0,0,0,0,40,29,0,0,2,0,0,0,1,0,0,0,0,0,0,0,64,29,0,0,2,0,0,0,1,0,0,0,0,0,0,0,88,29,0,0,2,0,0,0,1,0,0,0,0,0,0,0,104,29,0,0,2,0,0,0,1,0,0,0,0,0,0,0,120,29,0,0,2,0,0,0,1,0,0,0,0,0,0,0,136,29,0,0,2,0,0,0,1,0,0,0,0,0,0,0,160,29,0,0,2,0,0,0,1,0,0,0,0,0,0,0,176,29,0,0,2,0,0,0,1,0,0,0,0,0,0,0,192,29,0,0,2,0,0,0,1,0,0,0,0,0,0,0,208,29,0,0,2,0,0,0,1,0,0,0,0,0,0,0,224,29,0,0,2,0,0,0,1,0,0,0,0,0,0,0,240,29,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,30,0,0,2,0,0,0,1,0,0,0,0,0,0,0,16,30,0,0,2,0,0,0,1,0,0,0,0,0,0,0,32,30,0,0,2,0,0,0,1,0,0,0,0,0,0,0,56,30,0,0,2,0,0,0,1,0,0,0,0,0,0,0,80,30,0,0,2,0,0,0,1,0,0,0,0,0,0,0,104,30,0,0,2,0,0,0,1,0,0,0,0,0,0,0,128,30,0,0,2,0,0,0,1,0,0,0,0,0,0,0,144,30,0,0,2,0,0,0,1,0,0,0,0,0,0,0,160,30,0,0,2,0,0,0,1,0,0,0,0,0,0,0,184,30,0,0,2,0,0,0,1,0,0,0,0,0,0,0,208,30,0,0,2,0,0,0,1,0,0,0,0,0,0,0,232,30,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,31,0,0,2,0,0,0,1,0,0,0,0,0,0,0,24,31,0,0,2,0,0,0,1,0,0,0,0,0,0,0,40,31,0,0,3,0,0,0,1,0,0,0,0,0,0,0,64,31,0,0,3,0,0,0,1,0,0,0,0,0,0,0,80,31,0,0,2,0,0,0,1,0,0,0,0,0,0,0,232,19,0,0,3,0,0,0,1,0,0,0,0,0,0,0,248,19,0,0,3,0,0,0,1,0,0,0,0,0,0,0,128,20,0,0,1,0,0,0,1,0,0,0,0,0,0,0,80,20,0,0,1,0,0,0,1,0,0,0,0,0,0,0,96,31,0,0,2,0,0,0,1,0,0,0,0,0,0,0,160,19,0,0,1,0,0,0,1,0,0,0,0,0,0,0,112,31,0,0,2,0,0,0,1,0,0,0,0,0,0,0,136,31,0,0,2,0,0,0,1,0,0,0,0,0,0,0,160,31,0,0,2,0,0,0,1,0,0,0,0,0,0,0,176,31,0,0,2,0,0,0,1,0,0,0,0,0,0,0,192,31,0,0,2,0,0,0,1,0,0,0,0,0,0,0,208,31,0,0,2,0,0,0,1,0,0,0,0,0,0,0,232,31,0,0,2,0,0,0,1,0,0,0,0,0,0,0,248,31,0,0,2,0,0,0,1,0,0,0,0,0,0,0,8,32,0,0,2,0,0,0,1,0,0,0,0,0,0,0,32,32,0,0,2,0,0,0,1,0,0,0,0,0,0,0,56,32,0,0,3,0,0,0,1,0,0,0,0,0,0,0,104,20,0,0,1,0,0,0,1,0,0,0,0,0,0,0,64,32,0,0,2,0,0,0,1,0,0,0,0,0,0,0,80,32,0,0,2,0,0,0,1,0,0,0,0,0,0,0,104,32,0,0,2,0,0,0,1,0,0,0,0,0,0,0,83,84,65,82,84,80,82,79,80,69,82,84,73,69,83,0,32,43,0,0,0,0,0,0,70,79,78,84,66,79,85,78,68,73,78,71,66,79,88,0,70,79,78,84,0,0,0,0,83,73,90,69,0,0,0,0,67,72,65,82,83,0,0,0,37,104,100,0,0,0,0,0,70,79,78,84,95,65,83,67,69,78,84,0,0,0,0,0,70,79,78,84,95,68,69,83,67,69,78,84,0,0,0,0,69,78,68,70,79,78,84,0,69,78,68,67,72,65,82,0,83,84,65,82,84,67,72,65,82,0,0,0,0,0,0,0,69,78,67,79,68,73,78,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,3,126,0,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,128,192,224,240,248,252,254,83,87,73,68,84,72,0,0,68,87,73,68,84,72,0,0,66,66,88,0,0,0,0,0,66,73,84,77,65,80,0,0,0,0,0,0,0,0,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,69,70,65,85,76,84,95,67,72,65,82,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,78,68,80,82,79,80,69,82,84,73,69,83,0,0,0,95,88,70,82,69,69,56,54,95,71,76,89,80,72,95,82,65,78,71,69,83,0,0,0,65,86,71,95,67,65,80,73,84,65,76,95,87,73,68,84,72,0,0,0,0,0,0,0,65,86,71,95,76,79,87,69,82,67,65,83,69,95,87,73,68,84,72,0,0,0,0,0,67,65,80,95,72,69,73,71,72,84,0,0,0,0,0,0,67,72,65,82,83,69,84,95,67,79,76,76,69,67,84,73,79,78,83,0,0,0,0,0,67,79,80,89,82,73,71,72,84,0,0,0,0,0,0,0,68,69,83,84,73,78,65,84,73,79,78,0,0,0,0,0,68,69,86,73,67,69,95,70,79,78,84,95,78,65,77,69,0,0,0,0,0,0,0,0,69,78,68,95,83,80,65,67,69,0,0,0,0,0,0,0,70,65,67,69,95,78,65,77,69,0,0,0,0,0,0,0,70,73,71,85,82,69,95,87,73,68,84,72,0,0,0,0,70,79,78,84,78,65,77,69,95,82,69,71,73,83,84,82,89,0,0,0,0,0,0,0,70,79,85,78,68,82,89,0,70,85,76,76,95,78,65,77,69,0,0,0,0,0,0,0,73,84,65,76,73,67,95,65,78,71,76,69,0,0,0,0,77,65,88,95,83,80,65,67,69,0,0,0,0,0,0,0,77,73,78,95,83,80,65,67,69,0,0,0,0,0,0,0,78,79,82,77,95,83,80,65,67,69,0,0,0,0,0,0,78,79,84,73,67,69,0,0,81,85,65,68,95,87,73,68,84,72,0,0,0,0,0,0,82,65,87,95,65,83,67,69,78,84,0,0,0,0,0,0,82,65,87,95,65,86,69,82,65,71,69,95,87,73,68,84,72,0,0,0,0,0,0,0,82,65,87,95,65,86,71,95,67,65,80,73,84,65,76,95,87,73,68,84,72,0,0,0,82,65,87,95,65,86,71,95,76,79,87,69,82,67,65,83,69,95,87,73,68,84,72,0,82,65,87,95,67,65,80,95,72,69,73,71,72,84,0,0,82,65,87,95,68,69,83,67,69,78,84,0,0,0,0,0,82,65,87,95,69,78,68,95,83,80,65,67,69,0,0,0,82,65,87,95,70,73,71,85,82,69,95,87,73,68,84,72,0,0,0,0,0,0,0,0,82,65,87,95,77,65,88,95,83,80,65,67,69,0,0,0,82,65,87,95,77,73,78,95,83,80,65,67,69,0,0,0,82,65,87,95,78,79,82,77,95,83,80,65,67,69,0,0,82,65,87,95,80,73,88,69,76,95,83,73,90,69,0,0,82,65,87,95,80,79,73,78,84,95,83,73,90,69,0,0,82,65,87,95,80,73,88,69,76,83,73,90,69,0,0,0,82,65,87,95,80,79,73,78,84,83,73,90,69,0,0,0,82,65,87,95,81,85,65,68,95,87,73,68,84,72,0,0,82,65,87,95,83,77,65,76,76,95,67,65,80,95,83,73,90,69,0,0,0,0,0,0,82,65,87,95,83,84,82,73,75,69,79,85,84,95,65,83,67,69,78,84,0,0,0,0,82,65,87,95,83,84,82,73,75,69,79,85,84,95,68,69,83,67,69,78,84,0,0,0,82,65,87,95,83,85,66,83,67,82,73,80,84,95,83,73,90,69,0,0,0,0,0,0,82,65,87,95,83,85,66,83,67,82,73,80,84,95,88,0,82,65,87,95,83,85,66,83,67,82,73,80,84,95,89,0,82,65,87,95,83,85,80,69,82,83,67,82,73,80,84,95,83,73,90,69,0,0,0,0,82,65,87,95,83,85,80,69,82,83,67,82,73,80,84,95,88,0,0,0,0,0,0,0,82,65,87,95,83,85,80,69,82,83,67,82,73,80,84,95,89,0,0,0,0,0,0,0,82,65,87,95,85,78,68,69,82,76,73,78,69,95,80,79,83,73,84,73,79,78,0,0,82,65,87,95,85,78,68,69,82,76,73,78,69,95,84,72,73,67,75,78,69,83,83,0,82,65,87,95,88,95,72,69,73,71,72,84,0,0,0,0,82,69,76,65,84,73,86,69,95,83,69,84,87,73,68,84,72,0,0,0,0,0,0,0,82,69,76,65,84,73,86,69,95,87,69,73,71,72,84,0,82,69,83,79,76,85,84,73,79,78,0,0,0,0,0,0,83,77,65,76,76,95,67,65,80,95,83,73,90,69,0,0,83,84,82,73,75,69,79,85,84,95,65,83,67,69,78,84,0,0,0,0,0,0,0,0,83,84,82,73,75,69,79,85,84,95,68,69,83,67,69,78,84,0,0,0,0,0,0,0,83,85,66,83,67,82,73,80,84,95,83,73,90,69,0,0,83,85,66,83,67,82,73,80,84,95,88,0,0,0,0,0,83,85,66,83,67,82,73,80,84,95,89,0,0,0,0,0,83,85,80,69,82,83,67,82,73,80,84,95,83,73,90,69,0,0,0,0,0,0,0,0,83,85,80,69,82,83,67,82,73,80,84,95,88,0,0,0,83,85,80,69,82,83,67,82,73,80,84,95,89,0,0,0,85,78,68,69,82,76,73,78,69,95,80,79,83,73,84,73,79,78,0,0,0,0,0,0,85,78,68,69,82,76,73,78,69,95,84,72,73,67,75,78,69,83,83,0,0,0,0,0,87,69,73,71,72,84,0,0,88,95,72,69,73,71,72,84,0,0,0,0,0,0,0,0,95,77,85,76,69,95,66,65,83,69,76,73,78,69,95,79,70,70,83,69,84,0,0,0,95,77,85,76,69,95,82,69,76,65,84,73,86,69,95,67,79,77,80,79,83,69,0,0,56,19,0,0,152,32,0,0,160,32,0,0,184,32,0,0,0,0,0,0,0,0,0,0,10,0,0,0,11,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,66,68,70,0,0,0,0,0,99,102,102,0,0,0,0,0,1,5,0,0,68,0,0,0,192,32,0,0,0,0,1,0,0,0,2,0,0,0,0,0,9,0,0,0,62,0,0,0,23,0,0,0,20,3,0,0,48,0,0,0,172,0,0,0,12,0,0,0,63,0,0,0,10,0,0,0,64,0,0,0,11,0,0,0,65,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,13,0,0,0,24,0,0,0,25,0,0,0,20,0,0,0,26,0,0,0,66,0,0,0,27,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,29,0,0,0,67,0,0,0,30,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,102,110,116,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,112,115,104,105,110,116,101,114,0,0,0,0,0,0,0,0,82,101,103,117,108,97,114,0,66,111,108,100,0,0,0,0,66,108,97,99,107,0,0,0,4,0,4,0,8,1,16,0,8,1,17,0,8,1,18,0,8,1,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,50,0,51,0,52,0,53,0,54,0,55,0,56,0,57,0,58,0,59,0,60,0,61,0,62,0,63,0,64,0,65,0,66,0,67,0,68,0,69,0,70,0,71,0,72,0,73,0,74,0,75,0,76,0,77,0,78,0,79,0,80,0,81,0,82,0,83,0,84,0,85,0,86,0,87,0,88,0,89,0,90,0,91,0,92,0,93,0,94,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,97,0,98,0,99,0,100,0,101,0,102,0,103,0,104,0,105,0,106,0,107,0,108,0,109,0,110,0,0,0,111,0,112,0,113,0,114,0,0,0,115,0,116,0,117,0,118,0,119,0,120,0,121,0,122,0,0,0,123,0,0,0,124,0,125,0,126,0,127,0,128,0,129,0,130,0,131,0,0,0,132,0,133,0,0,0,134,0,135,0,136,0,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,0,0,0,139,0,0,0,0,0,0,0,0,0,140,0,141,0,142,0,143,0,0,0,0,0,0,0,0,0,0,0,144,0,0,0,0,0,0,0,145,0,0,0,0,0,146,0,147,0,148,0,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,229,0,230,0,0,0,231,0,232,0,233,0,234,0,235,0,236,0,237,0,238,0,13,0,14,0,15,0,99,0,239,0,240,0,241,0,242,0,243,0,244,0,245,0,246,0,247,0,248,0,27,0,28,0,249,0,250,0,251,0,252,0,0,0,253,0,254,0,255,0,0,1,1,1,0,0,0,0,0,0,2,1,0,0,0,0,3,1,4,1,5,1,6,1,0,0,0,0,7,1,8,1,9,1,0,0,10,1,109,0,110,0,11,1,12,1,13,1,0,0,14,1,15,1,16,1,17,1,18,1,19,1,20,1,21,1,22,1,23,1,24,1,25,1,26,1,27,1,28,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38,1,39,1,40,1,41,1,42,1,43,1,44,1,45,1,46,1,47,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,1,49,1,50,1,0,0,0,0,51,1,52,1,53,1,54,1,55,1,0,0,56,1,0,0,0,0,56,1,0,0,0,0,58,1,59,1,0,0,0,0,60,1,61,1,62,1,0,0,0,0,0,0,158,0,155,0,163,0,63,1,64,1,65,1,66,1,67,1,68,1,69,1,0,0,0,0,70,1,150,0,164,0,169,0,71,1,72,1,73,1,74,1,75,1,76,1,77,1,78,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86,1,87,1,88,1,89,1,90,1,91,1,92,1,93,1,94,1,95,1,96,1,97,1,98,1,99,1,100,1,101,1,102,1,103,1,104,1,105,1,106,1,107,1,108,1,109,1,110,1,111,1,112,1,113,1,114,1,115,1,116,1,117,1,118,1,119,1,120,1,121,1,122,1,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,50,0,51,0,52,0,53,0,54,0,55,0,56,0,57,0,58,0,59,0,60,0,61,0,62,0,63,0,64,0,65,0,66,0,67,0,68,0,69,0,70,0,71,0,72,0,73,0,74,0,75,0,76,0,77,0,78,0,79,0,80,0,81,0,82,0,83,0,84,0,85,0,86,0,87,0,88,0,89,0,90,0,91,0,92,0,93,0,94,0,95,0,96,0,97,0,98,0,99,0,100,0,101,0,102,0,103,0,104,0,105,0,106,0,107,0,108,0,109,0,110,0,111,0,112,0,113,0,114,0,115,0,116,0,117,0,118,0,119,0,120,0,121,0,122,0,123,0,124,0,125,0,126,0,127,0,128,0,129,0,130,0,131,0,132,0,133,0,134,0,135,0,136,0,137,0,138,0,139,0,140,0,141,0,142,0,143,0,144,0,145,0,146,0,147,0,148,0,149,0,150,0,151,0,152,0,153,0,154,0,155,0,156,0,157,0,158,0,159,0,160,0,161,0,162,0,163,0,164,0,165,0,166,0,167,0,168,0,169,0,170,0,171,0,172,0,173,0,174,0,175,0,176,0,177,0,178,0,179,0,180,0,181,0,182,0,183,0,184,0,185,0,186,0,187,0,188,0,189,0,190,0,191,0,192,0,193,0,194,0,195,0,196,0,197,0,198,0,199,0,200,0,201,0,202,0,203,0,204,0,205,0,206,0,207,0,208,0,209,0,210,0,211,0,212,0,213,0,214,0,215,0,216,0,217,0,218,0,219,0,220,0,221,0,222,0,223,0,224,0,225,0,226,0,227,0,228,0,0,0,0,0,0,0,0,0,1,0,229,0,230,0,231,0,232,0,233,0,234,0,235,0,236,0,237,0,238,0,13,0,14,0,15,0,99,0,239,0,240,0,241,0,242,0,243,0,244,0,245,0,246,0,247,0,248,0,27,0,28,0,249,0,250,0,251,0,252,0,253,0,254,0,255,0,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,109,0,110],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([11,1,12,1,13,1,14,1,15,1,16,1,17,1,18,1,19,1,20,1,21,1,22,1,23,1,24,1,25,1,26,1,27,1,28,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38,1,39,1,40,1,41,1,42,1,43,1,44,1,45,1,46,1,47,1,48,1,49,1,50,1,51,1,52,1,53,1,54,1,55,1,56,1,57,1,58,1,59,1,60,1,61,1,62,1,158,0,155,0,163,0,63,1,64,1,65,1,66,1,67,1,68,1,69,1,70,1,150,0,164,0,169,0,71,1,72,1,73,1,74,1,75,1,76,1,77,1,78,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86,1,87,1,88,1,89,1,90,1,91,1,92,1,93,1,94,1,95,1,96,1,97,1,98,1,99,1,100,1,101,1,102,1,103,1,104,1,105,1,106,1,107,1,108,1,109,1,110,1,111,1,112,1,113,1,114,1,115,1,116,1,117,1,118,1,119,1,120,1,121,1,122,1,0,0,0,0,0,0,1,0,231,0,232,0,235,0,236,0,237,0,238,0,13,0,14,0,15,0,99,0,239,0,240,0,241,0,242,0,243,0,244,0,245,0,246,0,247,0,248,0,27,0,28,0,249,0,250,0,251,0,253,0,254,0,255,0,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,109,0,110,0,11,1,12,1,13,1,14,1,16,1,44,1,45,1,46,1,49,1,58,1,59,1,158,0,155,0,163,0,64,1,65,1,66,1,67,1,68,1,69,1,70,1,150,0,164,0,169,0,71,1,72,1,73,1,74,1,75,1,76,1,77,1,78,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86,1,87,1,88,1,89,1,90,1,0,0,4,0,0,0,0,16,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,1,16,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,17,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,2,16,0,0,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,16,0,0,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,16,0,0,20,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,1,17,0,0,24,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,17,0,0,28,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,17,0,0,32,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,17,0,0,36,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,17,0,0,40,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,6,17,0,0,44,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,17,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,13,16,0,0,80,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,5,16,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,17,0,0,100,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,15,16,0,0,104,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,16,16,0,0,108,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,17,16,0,0,112,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,18,16,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,20,17,0,0,124,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,21,17,0,0,128,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,30,17,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,31,17,0,0,144,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,32,17,0,0,148,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,33,17,0,0,152,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,34,17,0,0,156,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,35,17,0,0,160,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,36,17,0,0,164,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,37,17,0,0,168,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,38,17,0,0,172,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,6,32,0,0,4,0,0,0,4,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,6,0,0,0,7,32,0,0,60,0,0,0,4,0,0,0,0,0,0,0,10,0,0,0,1,0,0,0,6,0,0,0,8,32,0,0,100,0,0,0,4,0,0,0,0,0,0,0,14,0,0,0,2,0,0,0,6,0,0,0,9,32,0,0,156,0,0,0,4,0,0,0,0,0,0,0,10,0,0,0,3,0,0,0,3,0,0,0,9,33,0,0,196,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,10,33,0,0,200,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,33,0,0,204,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,10,32,0,0,208,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,32,0,0,212,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,12,33,0,0,220,0,0,0,4,0,0,0,0,0,0,0,13,0,0,0,216,0,0,0,6,0,0,0,13,33,0,0,16,1,0,0,4,0,0,0,0,0,0,0,13,0,0,0,217,0,0,0,5,0,0,0,14,33,0,0,68,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,15,33,0,0,72,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,16,33,0,0,76,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,17,33,0,0,80,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,18,33,0,0,84,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,19,33,0,0,88,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,19,32,0,0,92,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,20,32,0,0,96,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,21,32,0,0,100,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,0,202,154,59,1,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,1,0,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,48,0,0,24,48,0,0,32,48,0,0,48,48,0,0,72,48,0,0,96,48,0,0,104,48,0,0,120,48,0,0,128,48,0,0,144,48,0,0,152,48,0,0,160,48,0,0,176,48,0,0,192,48,0,0,0,0,0,0,0,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,67,70,70,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,105,110,102,111,0,32,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,102,111,110,116,45,110,97,109,101,0,0,0,0,17,0,0,0,0,0,0,0,103,108,121,112,104,45,100,105,99,116,0,0,0,0,0,0,4,0,0,0,33,0,0,0,116,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,67,73,68,0,0,0,0,0,5,0,0,0,35,0,0,0,12,0,0,0,0,0,0,0,112,114,111,112,101,114,116,105,101,115,0,0,0,0,0,0,13,0,0,0,14,0,0,0,100,97,114,107,101,110,105,110,103,45,112,97,114,97,109,101,116,101,114,115,0,0,0,0,104,105,110,116,105,110,103,45,101,110,103,105,110,101,0,0,110,111,45,115,116,101,109,45,100,97,114,107,101,110,105,110,103,0,0,0,0,0,0,0,116,49,99,105,100,0,0,0,1,5,0,0,28,0,0,0,8,49,0,0,0,0,1,0,0,0,2,0,0,0,0,0,18,0,0,0,68,0,0,0,36,0,0,0,76,1,0,0,48,0,0,0,172,0,0,0,14,0,0,0,69,0,0,0,19,0,0,0,70,0,0,0,20,0,0,0,71,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,0,0,0,0,112,115,104,105,110,116,101,114,0,0,0,0,0,0,0,0,112,115,97,117,120,0,0,0,82,101,103,117,108,97,114,0,66,111,108,100,0,0,0,0,66,108,97,99,107,0,0,0,37,65,68,79,66,101,103,105,110,70,111,110,116,68,105,99,116,0,0,0,0,0,0,0,232,56,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,56,0,0,0,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,57,0,0,0,0,0,0,2,0,0,0,0,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,57,0,0,0,0,0,0,5,0,0,0,0,0,0,0,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,57,0,0,0,0,0,0,5,0,0,0,0,0,0,0,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,57,0,0,0,0,0,0,2,0,0,0,0,0,0,0,20,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,57,0,0,0,0,0,0,2,0,0,0,0,0,0,0,72,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,57,0,0,0,0,0,0,2,0,0,0,0,0,0,0,144,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,57,0,0,0,0,0,0,2,0,0,0,0,0,0,0,148,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,57,0,0,0,0,0,0,2,0,0,0,0,0,0,0,152,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,57,0,0,0,0,0,0,2,0,0,0,0,0,0,0,156,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,57,0,0,3,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,57,0,0,3,0,0,0,5,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,57,0,0,3,0,0,0,5,0,0,0,0,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,57,0,0,3,0,0,0,5,0,0,0,0,0,0,0,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,57,0,0,3,0,0,0,5,0,0,0,0,0,0,0,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,57,0,0,3,0,0,0,2,0,0,0,0,0,0,0,20,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,57,0,0,3,0,0,0,1,0,0,0,0,0,0,0,24,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,57,0,0,3,0,0,0,2,0,0,0,0,0,0,0,26,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,57,0,0,3,0,0,0,2,0,0,0,0,0,0,0,28,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,58,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,58,0,0,1,0,0,0,2,0,0,0,0,0,0,0,212,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,58,0,0,1,0,0,0,2,0,0,0,0,0,0,0,213,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,58,0,0,1,0,0,0,2,0,0,0,0,0,0,0,244,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,58,0,0,1,0,0,0,2,0,0,0,0,0,0,0,248,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,58,0,0,1,0,0,0,2,0,0,0,0,0,0,0,240,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,58,0,0,1,0,0,0,2,0,0,0,0,0,0,0,196,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,58,0,0,1,0,0,0,3,0,0,0,0,0,0,0,200,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,58,0,0,1,0,0,0,3,0,0,0,0,0,0,0,204,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,58,0,0,4,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,58,0,0,4,0,0,0,2,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,58,0,0,4,0,0,0,2,0,0,0,0,0,0,0,184,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,58,0,0,4,0,0,0,2,0,0,0,0,0,0,0,188,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,58,0,0,4,0,0,0,4,0,0,0,0,0,0,0,108,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,58,0,0,4,0,0,0,2,0,0,0,0,0,0,0,112,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,58,0,0,4,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,0,0,4,0,0,0,9,0,0,0,0,0,0,0,12,0,0,0,2,0,0,0,14,0,0,0,8,0,0,0,0,0,0,0,16,59,0,0,4,0,0,0,9,0,0,0,0,0,0,0,40,0,0,0,2,0,0,0,10,0,0,0,9,0,0,0,0,0,0,0,32,59,0,0,4,0,0,0,9,0,0,0,0,0,0,0,60,0,0,0,2,0,0,0,14,0,0,0,10,0,0,0,0,0,0,0,48,59,0,0,4,0,0,0,9,0,0,0,0,0,0,0,88,0,0,0,2,0,0,0,10,0,0,0,11,0,0,0,0,0,0,0,72,59,0,0,4,0,0,0,9,0,0,0,0,0,0,0,120,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,80,59,0,0,4,0,0,0,9,0,0,0,0,0,0,0,122,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,88,59,0,0,4,0,0,0,9,0,0,0,0,0,0,0,192,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,104,59,0,0,4,0,0,0,9,0,0,0,0,0,0,0,128,0,0,0,2,0,0,0,12,0,0,0,124,0,0,0,0,0,0,0,120,59,0,0,4,0,0,0,9,0,0,0,0,0,0,0,154,0,0,0,2,0,0,0,12,0,0,0,125,0,0,0,0,0,0,0,136,59,0,0,4,0,0,0,1,0,0,0,0,0,0,0,126,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,59,0,0,5,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,59,0,0,5,0,0,0,11,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,59,0,0,5,0,0,0,11,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,59,0,0,5,0,0,0,11,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,73,68,70,111,110,116,78,97,109,101,0,0,0,0,0,67,73,68,70,111,110,116,86,101,114,115,105,111,110,0,0,67,73,68,70,111,110,116,84,121,112,101,0,0,0,0,0,82,101,103,105,115,116,114,121,0,0,0,0,0,0,0,0,79,114,100,101,114,105,110,103,0,0,0,0,0,0,0,0,83,117,112,112,108,101,109,101,110,116,0,0,0,0,0,0,85,73,68,66,97,115,101,0,67,73,68,77,97,112,79,102,102,115,101,116,0,0,0,0,70,68,66,121,116,101,115,0,71,68,66,121,116,101,115,0,67,73,68,67,111,117,110,116,0,0,0,0,0,0,0,0,118,101,114,115,105,111,110,0,78,111,116,105,99,101,0,0,70,117,108,108,78,97,109,101,0,0,0,0,0,0,0,0,70,97,109,105,108,121,78,97,109,101,0,0,0,0,0,0,87,101,105,103,104,116,0,0,73,116,97,108,105,99,65,110,103,108,101,0,0,0,0,0,105,115,70,105,120,101,100,80,105,116,99,104,0,0,0,0,85,110,100,101,114,108,105,110,101,80,111,115,105,116,105,111,110,0,0,0,0,0,0,0,85,110,100,101,114,108,105,110,101,84,104,105,99,107,110,101,115,115,0,0,0,0,0,0,70,83,84,121,112,101,0,0,80,97,105,110,116,84,121,112,101,0,0,0,0,0,0,0,70,111,110,116,84,121,112,101,0,0,0,0,0,0,0,0,83,117,98,114,77,97,112,79,102,102,115,101,116,0,0,0,83,68,66,121,116,101,115,0,83,117,98,114,67,111,117,110,116,0,0,0,0,0,0,0,108,101,110,66,117,105,108,100,67,104,97,114,65,114,114,97,121,0,0,0,0,0,0,0,70,111,114,99,101,66,111,108,100,84,104,114,101,115,104,111,108,100,0,0,0,0,0,0,83,116,114,111,107,101,87,105,100,116,104,0,0,0,0,0,85,110,105,113,117,101,73,68,0,0,0,0,0,0,0,0,108,101,110,73,86,0,0,0,76,97,110,103,117,97,103,101,71,114,111,117,112,0,0,0,112,97,115,115,119,111,114,100,0,0,0,0,0,0,0,0,66,108,117,101,83,99,97,108,101,0,0,0,0,0,0,0,66,108,117,101,83,104,105,102,116,0,0,0,0,0,0,0,66,108,117,101,70,117,122,122,0,0,0,0,0,0,0,0,66,108,117,101,86,97,108,117,101,115,0,0,0,0,0,0,79,116,104,101,114,66,108,117,101,115,0,0,0,0,0,0,70,97,109,105,108,121,66,108,117,101,115,0,0,0,0,0,70,97,109,105,108,121,79,116,104,101,114,66,108,117,101,115,0,0,0,0,0,0,0,0,83,116,100,72,87,0,0,0,83,116,100,86,87,0,0,0,77,105,110,70,101,97,116,117,114,101,0,0,0,0,0,0,83,116,101,109,83,110,97,112,72,0,0,0,0,0,0,0,83,116,101,109,83,110,97,112,86,0,0,0,0,0,0,0,70,111,114,99,101,66,111,108,100,0,0,0,0,0,0,0,70,111,110,116,66,66,111,120,0,0,0,0,0,0,0,0,70,68,65,114,114,97,121,0,70,111,110,116,77,97,116,114,105,120,0,0,0,0,0,0,69,120,112,97,110,115,105,111,110,70,97,99,116,111,114,0,37,33,80,83,45,65,100,111,98,101,45,51,46,48,32,82,101,115,111,117,114,99,101,45,67,73,68,70,111,110,116,0,83,116,97,114,116,68,97,116,97,0,0,0,0,0,0,0,47,115,102,110,116,115,0,0,40,72,101,120,41,0,0,0,56,60,0,0,80,60,0,0,96,60,0,0,120,60,0,0,128,60,0,0,144,60,0,0,168,60,0,0,176,60,0,0,0,0,0,0,0,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,67,73,68,32,84,121,112,101,32,49,0,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,102,111,110,116,45,110,97,109,101,0,0,0,0,21,0,0,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,105,110,102,111,0,38,0,0,0,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,73,68,0,0,0,0,0,7,0,0,0,40,0,0,0,15,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,99,111,109,112,114,101,115,115,105,111,110,32,109,101,116,104,111,100,0,0,0,0,0,0,105,110,118,97,108,105,100,32,119,105,110,100,111,119,32,115,105,122,101,0,0,0,0,0,105,110,99,111,114,114,101,99,116,32,104,101,97,100,101,114,32,99,104,101,99,107,0,0,110,101,101,100,32,100,105,99,116,105,111,110,97,114,121,0,105,110,99,111,114,114,101,99,116,32,100,97,116,97,32,99,104,101,99,107,0,0,0,0,105,110,118,97,108,105,100,32,98,108,111,99,107,32,116,121,112,101,0,0,0,0,0,0,105,110,118,97,108,105,100,32,115,116,111,114,101,100,32,98,108,111,99,107,32,108,101,110,103,116,104,115,0,0,0,0,116,111,111,32,109,97,110,121,32,108,101,110,103,116,104,32,111,114,32,100,105,115,116,97,110,99,101,32,115,121,109,98,111,108,115,0,0,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,7,0,0,0,15,0,0,0,31,0,0,0,63,0,0,0,127,0,0,0,255,0,0,0,255,1,0,0,255,3,0,0,255,7,0,0,255,15,0,0,255,31,0,0,255,63,0,0,255,127,0,0,255,255,0,0,0,0,0,0,105,110,118,97,108,105,100,32,98,105,116,32,108,101,110,103,116,104,32,114,101,112,101,97,116,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,108,105,116,101,114,97,108,47,108,101,110,103,116,104,32,99,111,100,101,0,0,0,0,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,32,99,111,100,101,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,13,0,0,0,15,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,27,0,0,0,31,0,0,0,35,0,0,0,43,0,0,0,51,0,0,0,59,0,0,0,67,0,0,0,83,0,0,0,99,0,0,0,115,0,0,0,131,0,0,0,163,0,0,0,195,0,0,0,227,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,0,0,0,0,112,0,0,0,112,0,0,0,0,0,0,0,111,118,101,114,115,117,98,115,99,114,105,98,101,100,32,108,105,116,101,114,97,108,47,108,101,110,103,116,104,32,116,114,101,101,0,0,0,0,0,0,105,110,99,111,109,112,108,101,116,101,32,108,105,116,101,114,97,108,47,108,101,110,103,116,104,32,116,114,101,101,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,7,0,0,0,9,0,0,0,13,0,0,0,17,0,0,0,25,0,0,0,33,0,0,0,49,0,0,0,65,0,0,0,97,0,0,0,129,0,0,0,193,0,0,0,1,1,0,0,129,1,0,0,1,2,0,0,1,3,0,0,1,4,0,0,1,6,0,0,1,8,0,0,1,12,0,0,1,16,0,0,1,24,0,0,1,32,0,0,1,48,0,0,1,64,0,0,1,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,111,118,101,114,115,117,98,115,99,114,105,98,101,100,32,100,105,115,116,97,110,99,101,32,116,114,101,101,0,0,0,0,105,110,99,111,109,112,108,101,116,101,32,100,105,115,116,97,110,99,101,32,116,114,101,101,0,0,0,0,0,0,0,0,101,109,112,116,121,32,100,105,115,116,97,110,99,101,32,116,114,101,101,32,119,105,116,104,32,108,101,110,103,116,104,115,0,0,0,0,0,0,0,0,111,118,101,114,115,117,98,115,99,114,105,98,101,100,32,100,121,110,97,109,105,99,32,98,105,116,32,108,101,110,103,116,104,115,32,116,114,101,101,0,105,110,99,111,109,112,108,101,116,101,32,100,121,110,97,109,105,99,32,98,105,116,32,108,101,110,103,116,104,115,32,116,114,101,101,0,0,0,0,0,80,5,0,0,1,0,0,0,87,5,0,0,1,1,0,0,83,5,0,0,17,0,0,0,91,5,0,0,1,16,0,0,81,5,0,0,5,0,0,0,89,5,0,0,1,4,0,0,85,5,0,0,65,0,0,0,93,5,0,0,1,64,0,0,80,5,0,0,3,0,0,0,88,5,0,0,1,2,0,0,84,5,0,0,33,0,0,0,92,5,0,0,1,32,0,0,82,5,0,0,9,0,0,0,90,5,0,0,1,8,0,0,86,5,0,0,129,0,0,0,192,5,0,0,1,96,0,0,80,5,0,0,2,0,0,0,87,5,0,0,129,1,0,0,83,5,0,0,25,0,0,0,91,5,0,0,1,24,0,0,81,5,0,0,7,0,0,0,89,5,0,0,1,6,0,0,85,5,0,0,97,0,0,0,93,5,0,0,1,96,0,0,80,5,0,0,4,0,0,0,88,5,0,0,1,3,0,0,84,5,0,0,49,0,0,0,92,5,0,0,1,48,0,0,82,5,0,0,13,0,0,0,90,5,0,0,1,12,0,0,86,5,0,0,193,0,0,0,192,5,0,0,1,96,0,0,96,7,0,0,0,1,0,0,0,8,0,0,80,0,0,0,0,8,0,0,16,0,0,0,84,8,0,0,115,0,0,0,82,7,0,0,31,0,0,0,0,8,0,0,112,0,0,0,0,8,0,0,48,0,0,0,0,9,0,0,192,0,0,0,80,7,0,0,10,0,0,0,0,8,0,0,96,0,0,0,0,8,0,0,32,0,0,0,0,9,0,0,160,0,0,0,0,8,0,0,0,0,0,0,0,8,0,0,128,0,0,0,0,8,0,0,64,0,0,0,0,9,0,0,224,0,0,0,80,7,0,0,6,0,0,0,0,8,0,0,88,0,0,0,0,8,0,0,24,0,0,0,0,9,0,0,144,0,0,0,83,7,0,0,59,0,0,0,0,8,0,0,120,0,0,0,0,8,0,0,56,0,0,0,0,9,0,0,208,0,0,0,81,7,0,0,17,0,0,0,0,8,0,0,104,0,0,0,0,8,0,0,40,0,0,0,0,9,0,0,176,0,0,0,0,8,0,0,8,0,0,0,0,8,0,0,136,0,0,0,0,8,0,0,72,0,0,0,0,9,0,0,240,0,0,0,80,7,0,0,4,0,0,0,0,8,0,0,84,0,0,0,0,8,0,0,20,0,0,0,85,8,0,0,227,0,0,0,83,7,0,0,43,0,0,0,0,8,0,0,116,0,0,0,0,8,0,0,52,0,0,0,0,9,0,0,200,0,0,0,81,7,0,0,13,0,0,0,0,8,0,0,100,0,0,0,0,8,0,0,36,0,0,0,0,9,0,0,168,0,0,0,0,8,0,0,4,0,0,0,0,8,0,0,132,0,0,0,0,8,0,0,68,0,0,0,0,9,0,0,232,0,0,0,80,7,0,0,8,0,0,0,0,8,0,0,92,0,0,0,0,8,0,0,28,0,0,0,0,9,0,0,152,0,0,0,84,7,0,0,83,0,0,0,0,8,0,0,124,0,0,0,0,8,0,0,60,0,0,0,0,9,0,0,216,0,0,0,82,7,0,0,23,0,0,0,0,8,0,0,108,0,0,0,0,8,0,0,44,0,0,0,0,9,0,0,184,0,0,0,0,8,0,0,12,0,0,0,0,8,0,0,140,0,0,0,0,8,0,0,76,0,0,0,0,9,0,0,248,0,0,0,80,7,0,0,3,0,0,0,0,8,0,0,82,0,0,0,0,8,0,0,18,0,0,0,85,8,0,0,163,0,0,0,83,7,0,0,35,0,0,0,0,8,0,0,114,0,0,0,0,8,0,0,50,0,0,0,0,9,0,0,196,0,0,0,81,7,0,0,11,0,0,0,0,8,0,0,98,0,0,0,0,8,0,0,34,0,0,0,0,9,0,0,164,0,0,0,0,8,0,0,2,0,0,0,0,8,0,0,130,0,0,0,0,8,0,0,66,0,0,0,0,9,0,0,228,0,0,0,80,7,0,0,7,0,0,0,0,8,0,0,90,0,0,0,0,8,0,0,26,0,0,0,0,9,0,0,148,0,0,0,84,7,0,0,67,0,0,0,0,8,0,0,122,0,0,0,0,8,0,0,58,0,0,0,0,9,0,0,212,0,0,0,82,7,0,0,19,0,0,0,0,8,0,0,106,0,0,0,0,8,0,0,42,0,0,0,0,9,0,0,180,0,0,0,0,8,0,0,10,0,0,0,0,8,0,0,138,0,0,0,0,8,0,0,74,0,0,0,0,9,0,0,244,0,0,0,80,7,0,0,5,0,0,0,0,8,0,0,86,0,0,0,0,8,0,0,22,0,0,0,192,8,0,0,0,0,0,0,83,7,0,0,51,0,0,0,0,8,0,0,118,0,0,0,0,8,0,0,54,0,0,0,0,9,0,0,204,0,0,0,81,7,0,0,15,0,0,0,0,8,0,0,102,0,0,0,0,8,0,0,38,0,0,0,0,9,0,0,172,0,0,0,0,8,0,0,6,0,0,0,0,8,0,0,134,0,0,0,0,8,0,0,70,0,0,0,0,9,0,0,236,0,0,0,80,7,0,0,9,0,0,0,0,8,0,0,94,0,0,0,0,8,0,0,30,0,0,0,0,9,0,0,156,0,0,0,84,7,0,0,99,0,0,0,0,8,0,0,126,0,0,0,0,8,0,0,62,0,0,0,0,9,0,0,220,0,0,0,82,7,0,0,27,0,0,0,0,8,0,0,110,0,0,0,0,8,0,0,46,0,0,0,0,9,0,0,188,0,0,0,0,8,0,0,14,0,0,0,0,8,0,0,142,0,0,0,0,8,0,0,78,0,0,0,0,9,0,0,252,0,0,0,96,7,0,0,0,1,0,0,0,8,0,0,81,0,0,0,0,8,0,0,17,0,0,0,85,8,0,0,131,0,0,0,82,7,0,0,31,0,0,0,0,8,0,0,113,0,0,0,0,8,0,0,49,0,0,0,0,9,0,0,194,0,0,0,80,7,0,0,10,0,0,0,0,8,0,0,97,0,0,0,0,8,0,0,33,0,0,0,0,9,0,0,162,0,0,0,0,8,0,0,1,0,0,0,0,8,0,0,129,0,0,0,0,8,0,0,65,0,0,0,0,9,0,0,226,0,0,0,80,7,0,0,6,0,0,0,0,8,0,0,89,0,0,0,0,8,0,0,25,0,0,0,0,9,0,0,146,0,0,0,83,7,0,0,59,0,0,0,0,8,0,0,121,0,0,0,0,8,0,0,57,0,0,0,0,9,0,0,210,0,0,0,81,7,0,0,17,0,0,0,0,8,0,0,105,0,0,0,0,8,0,0,41,0,0,0,0,9,0,0,178,0,0,0,0,8,0,0,9,0,0,0,0,8,0,0,137,0,0,0,0,8,0,0,73,0,0,0,0,9,0,0,242,0,0,0,80,7,0,0,4,0,0,0,0,8,0,0,85,0,0,0,0,8,0,0,21,0,0,0,80,8,0,0,2,1,0,0,83,7,0,0,43,0,0,0,0,8,0,0,117,0,0,0,0,8,0,0,53,0,0,0,0,9,0,0,202,0,0,0,81,7,0,0,13,0,0,0,0,8,0,0,101,0,0,0,0,8,0,0,37,0,0,0,0,9,0,0,170,0,0,0,0,8,0,0,5,0,0,0,0,8,0,0,133,0,0,0,0,8,0,0,69,0,0,0,0,9,0,0,234,0,0,0,80,7,0,0,8,0,0,0,0,8,0,0,93,0,0,0,0,8,0,0,29,0,0,0,0,9,0,0,154,0,0,0,84,7,0,0,83,0,0,0,0,8,0,0,125,0,0,0,0,8,0,0,61,0,0,0,0,9,0,0,218,0,0,0,82,7,0,0,23,0,0,0,0,8,0,0,109,0,0,0,0,8,0,0,45,0,0,0,0,9,0,0,186,0,0,0,0,8,0,0,13,0,0,0,0,8,0,0,141,0,0,0,0,8,0,0,77,0,0,0,0,9,0,0,250,0,0,0,80,7,0,0,3,0,0,0,0,8,0,0,83,0,0,0,0,8,0,0,19,0,0,0,85,8,0,0,195,0,0,0,83,7,0,0,35,0,0,0,0,8,0,0,115,0,0,0,0,8,0,0,51,0,0,0,0,9,0,0,198,0,0,0,81,7,0,0,11,0,0,0,0,8,0,0,99,0,0,0,0,8,0,0,35,0,0,0,0,9,0,0,166,0,0,0,0,8,0,0,3,0,0,0,0,8,0,0,131,0,0,0,0,8,0,0,67,0,0,0,0,9,0,0,230,0,0,0,80,7,0,0,7,0,0,0,0,8,0,0,91,0,0,0,0,8,0,0,27,0,0,0,0,9,0,0,150,0,0,0,84,7,0,0,67,0,0,0,0,8,0,0,123,0,0,0,0,8,0,0,59,0,0,0,0,9,0,0,214,0,0,0,82,7,0,0,19,0,0,0,0,8,0,0,107,0,0,0,0,8,0,0,43,0,0,0,0,9,0,0,182,0,0,0,0,8,0,0,11,0,0,0,0,8,0,0,139,0,0,0,0,8,0,0,75,0,0,0,0,9,0,0,246,0,0,0,80,7,0,0,5,0,0,0,0,8,0,0,87,0,0,0,0,8,0,0,23,0,0,0,192,8,0,0,0,0,0,0,83,7,0,0,51,0,0,0,0,8,0,0,119,0,0,0,0,8,0,0,55,0,0,0,0,9,0,0,206,0,0,0,81,7,0,0,15,0,0,0,0,8,0,0,103,0,0,0,0,8,0,0,39,0,0,0,0,9,0,0,174,0,0,0,0,8,0,0,7,0,0,0,0,8,0,0,135,0,0,0,0,8,0,0,71,0,0,0,0,9,0,0,238,0,0,0,80,7,0,0,9,0,0,0,0,8,0,0,95,0,0,0,0,8,0,0,31,0,0,0,0,9,0,0,158,0,0,0,84,7,0,0,99,0,0,0,0,8,0,0,127,0,0,0,0,8,0,0,63,0,0,0,0,9,0,0,222,0,0,0,82,7,0,0,27,0,0,0,0,8,0,0,111,0,0,0,0,8,0,0,47,0,0,0,0,9,0,0,190,0,0,0,0,8,0,0,15,0,0,0,0,8,0,0,143,0,0,0,0,8,0,0,79,0,0,0,0,9,0,0,254,0,0,0,96,7,0,0,0,1,0,0,0,8,0,0,80,0,0,0,0,8,0,0,16,0,0,0,84,8,0,0,115,0,0,0,82,7,0,0,31,0,0,0,0,8,0,0,112,0,0,0,0,8,0,0,48,0,0,0,0,9,0,0,193,0,0,0,80,7,0,0,10,0,0,0,0,8,0,0,96,0,0,0,0,8,0,0,32,0,0,0,0,9,0,0,161,0,0,0,0,8,0,0,0,0,0,0,0,8,0,0,128,0,0,0,0,8,0,0,64,0,0,0,0,9,0,0,225,0,0,0,80,7,0,0,6,0,0,0,0,8,0,0,88,0,0,0,0,8,0,0,24,0,0,0,0,9,0,0,145,0,0,0,83,7,0,0,59,0,0,0,0,8,0,0,120,0,0,0,0,8,0,0,56,0,0,0,0,9,0,0,209,0,0,0,81,7,0,0,17,0,0,0,0,8,0,0,104,0,0,0,0,8,0,0,40,0,0,0,0,9,0,0,177,0,0,0,0,8,0,0,8,0,0,0,0,8,0,0,136,0,0,0,0,8,0,0,72,0,0,0,0,9,0,0,241,0,0,0,80,7,0,0,4,0,0,0,0,8,0,0,84,0,0,0,0,8,0,0,20,0,0,0,85,8,0,0,227,0,0,0,83,7,0,0,43,0,0,0,0,8,0,0,116,0,0,0,0,8,0,0,52,0,0,0,0,9,0,0,201,0,0,0,81,7,0,0,13,0,0,0,0,8,0,0,100,0,0,0,0,8,0,0,36,0,0,0,0,9,0,0,169,0,0,0,0,8,0,0,4,0,0,0,0,8,0,0,132,0,0,0,0,8,0,0,68,0,0,0,0,9,0,0,233,0,0,0,80,7,0,0,8,0,0,0,0,8,0,0,92,0,0,0,0,8,0,0,28,0,0,0,0,9,0,0,153,0,0,0,84,7,0,0,83,0,0,0,0,8,0,0,124,0,0,0,0,8,0,0,60,0,0,0,0,9,0,0,217,0,0,0,82,7,0,0,23,0,0,0,0,8,0,0,108,0,0,0,0,8,0,0,44,0,0,0,0,9,0,0,185,0,0,0,0,8,0,0,12,0,0,0,0,8,0,0,140,0,0,0,0,8,0,0,76,0,0,0,0,9,0,0,249,0,0,0,80,7,0,0,3,0,0,0,0,8,0,0,82,0,0,0,0,8,0,0,18,0,0,0,85,8,0,0,163,0,0,0,83,7,0,0,35,0,0,0,0,8,0,0,114,0,0,0,0,8,0,0,50,0,0,0,0,9,0,0,197,0,0,0,81,7,0,0,11,0,0,0,0,8,0,0,98,0,0,0,0,8,0,0,34,0,0,0,0,9,0,0,165,0,0,0,0,8,0,0,2,0,0,0,0,8,0,0,130,0,0,0,0,8,0,0,66,0,0,0,0,9,0,0,229,0,0,0,80,7,0,0,7,0,0,0,0,8,0,0,90,0,0,0,0,8,0,0,26,0,0,0,0,9,0,0,149,0,0,0,84,7,0,0,67,0,0,0,0,8,0,0,122,0,0,0,0,8,0,0,58,0,0,0,0,9,0,0,213,0,0,0,82,7,0,0,19,0,0,0,0,8,0,0,106,0,0,0,0,8,0,0,42,0,0,0,0,9,0,0,181,0,0,0,0,8,0,0,10,0,0,0,0,8,0,0,138,0,0,0,0,8,0,0,74,0,0,0,0,9,0,0,245,0,0,0,80,7,0,0,5,0,0,0,0,8,0,0,86,0,0,0,0,8,0,0,22,0,0,0,192,8,0,0,0,0,0,0,83,7,0,0,51,0,0,0,0,8,0,0,118,0,0,0,0,8,0,0,54,0,0,0,0,9,0,0,205,0,0,0,81,7,0,0,15,0,0,0,0,8,0,0,102,0,0,0,0,8,0,0,38,0,0,0,0,9,0,0,173,0,0,0,0,8,0,0,6,0,0,0,0,8,0,0,134,0,0,0,0,8,0,0,70,0,0,0,0,9,0,0,237,0,0,0,80,7,0,0,9,0,0,0,0,8,0,0,94,0,0,0,0,8,0,0,30,0,0,0,0,9,0,0,157,0,0,0,84,7,0,0,99,0,0,0,0,8,0,0,126,0,0,0,0,8,0,0,62,0,0,0,0,9,0,0,221,0,0,0,82,7,0,0,27,0,0,0,0,8,0,0,110,0,0,0,0,8,0,0,46,0,0,0,0,9,0,0,189,0,0,0,0,8,0,0,14,0,0,0,0,8,0,0,142,0,0,0,0,8,0,0,78,0,0,0,0,9,0,0,253,0,0,0,96,7,0,0,0,1,0,0,0,8,0,0,81,0,0,0,0,8,0,0,17,0,0,0,85,8,0,0,131,0,0,0,82,7,0,0,31,0,0,0,0,8,0,0,113,0,0,0,0,8,0,0,49,0,0,0,0,9,0,0,195,0,0,0,80,7,0,0,10,0,0,0,0,8,0,0,97,0,0,0,0,8,0,0,33,0,0,0,0,9,0,0,163,0,0,0,0,8,0,0,1,0,0,0,0,8,0,0,129,0,0,0,0,8,0,0,65,0,0,0,0,9,0,0,227,0,0,0,80,7,0,0,6,0,0,0,0,8,0,0,89,0,0,0,0,8,0,0,25,0,0,0,0,9,0,0,147,0,0,0,83,7,0,0,59,0,0,0,0,8,0,0,121,0,0,0,0,8,0,0,57,0,0,0,0,9,0,0,211,0,0,0,81,7,0,0,17,0,0,0,0,8,0,0,105,0,0,0,0,8,0,0,41,0,0,0,0,9,0,0,179,0,0,0,0,8,0,0,9,0,0,0,0,8,0,0,137,0,0,0,0,8,0,0,73,0,0,0,0,9,0,0,243,0,0,0,80,7,0,0,4,0,0,0,0,8,0,0,85,0,0,0,0,8,0,0,21,0,0,0,80,8,0,0,2,1,0,0,83,7,0,0,43,0,0,0,0,8,0,0,117,0,0,0,0,8,0,0,53,0,0,0,0,9,0,0,203,0,0,0,81,7,0,0,13,0,0,0,0,8,0,0,101,0,0,0,0,8,0,0,37,0,0,0,0,9,0,0,171,0,0,0,0,8,0,0,5,0,0,0,0,8,0,0,133,0,0,0,0,8,0,0,69,0,0,0,0,9,0,0,235,0,0,0,80,7,0,0,8,0,0,0,0,8,0,0,93],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);allocate([8,0,0,29,0,0,0,0,9,0,0,155,0,0,0,84,7,0,0,83,0,0,0,0,8,0,0,125,0,0,0,0,8,0,0,61,0,0,0,0,9,0,0,219,0,0,0,82,7,0,0,23,0,0,0,0,8,0,0,109,0,0,0,0,8,0,0,45,0,0,0,0,9,0,0,187,0,0,0,0,8,0,0,13,0,0,0,0,8,0,0,141,0,0,0,0,8,0,0,77,0,0,0,0,9,0,0,251,0,0,0,80,7,0,0,3,0,0,0,0,8,0,0,83,0,0,0,0,8,0,0,19,0,0,0,85,8,0,0,195,0,0,0,83,7,0,0,35,0,0,0,0,8,0,0,115,0,0,0,0,8,0,0,51,0,0,0,0,9,0,0,199,0,0,0,81,7,0,0,11,0,0,0,0,8,0,0,99,0,0,0,0,8,0,0,35,0,0,0,0,9,0,0,167,0,0,0,0,8,0,0,3,0,0,0,0,8,0,0,131,0,0,0,0,8,0,0,67,0,0,0,0,9,0,0,231,0,0,0,80,7,0,0,7,0,0,0,0,8,0,0,91,0,0,0,0,8,0,0,27,0,0,0,0,9,0,0,151,0,0,0,84,7,0,0,67,0,0,0,0,8,0,0,123,0,0,0,0,8,0,0,59,0,0,0,0,9,0,0,215,0,0,0,82,7,0,0,19,0,0,0,0,8,0,0,107,0,0,0,0,8,0,0,43,0,0,0,0,9,0,0,183,0,0,0,0,8,0,0,11,0,0,0,0,8,0,0,139,0,0,0,0,8,0,0,75,0,0,0,0,9,0,0,247,0,0,0,80,7,0,0,5,0,0,0,0,8,0,0,87,0,0,0,0,8,0,0,23,0,0,0,192,8,0,0,0,0,0,0,83,7,0,0,51,0,0,0,0,8,0,0,119,0,0,0,0,8,0,0,55,0,0,0,0,9,0,0,207,0,0,0,81,7,0,0,15,0,0,0,0,8,0,0,103,0,0,0,0,8,0,0,39,0,0,0,0,9,0,0,175,0,0,0,0,8,0,0,7,0,0,0,0,8,0,0,135,0,0,0,0,8,0,0,71,0,0,0,0,9,0,0,239,0,0,0,80,7,0,0,9,0,0,0,0,8,0,0,95,0,0,0,0,8,0,0,31,0,0,0,0,9,0,0,159,0,0,0,84,7,0,0,99,0,0,0,0,8,0,0,127,0,0,0,0,8,0,0,63,0,0,0,0,9,0,0,223,0,0,0,82,7,0,0,27,0,0,0,0,8,0,0,111,0,0,0,0,8,0,0,47,0,0,0,0,9,0,0,191,0,0,0,0,8,0,0,15,0,0,0,0,8,0,0,143,0,0,0,0,8,0,0,79,0,0,0,0,9,0,0,255,0,0,0,24,0,0,0,41,0,0,0,72,0,0,0,42,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,99,102,0,0,0,0,0,1,2,0,0,28,0,0,0,160,82,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,72,1,0,0,44,0,0,0,160,0,0,0,15,0,0,0,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,0,46,0,0,0,49,48,54,52,54,0,0,0,56,56,53,57,0,0,0,0,49,0,0,0,0,0,0,0,70,65,77,73,76,89,95,78,65,77,69,0,0,0,0,0,65,86,69,82,65,71,69,95,87,73,68,84,72,0,0,0,80,79,73,78,84,95,83,73,90,69,0,0,0,0,0,0,80,73,88,69,76,95,83,73,90,69,0,0,0,0,0,0,82,69,83,79,76,85,84,73,79,78,95,88,0,0,0,0,82,69,83,79,76,85,84,73,79,78,95,89,0,0,0,0,67,72,65,82,83,69,84,95,82,69,71,73,83,84,82,89,0,0,0,0,0,0,0,0,67,72,65,82,83,69,84,95,69,78,67,79,68,73,78,71,0,0,0,0,0,0,0,0,83,76,65,78,84,0,0,0,79,98,108,105,113,117,101,0,73,116,97,108,105,99,0,0,87,69,73,71,72,84,95,78,65,77,69,0,0,0,0,0,66,111,108,100,0,0,0,0,83,69,84,87,73,68,84,72,95,78,65,77,69,0,0,0,65,68,68,95,83,84,89,76,69,95,78,65,77,69,0,0,82,101,103,117,108,97,114,0,4,0,12,0,13,2,0,0,13,2,2,0,13,2,4,0,13,2,6,0,13,2,8,0,13,2,10,0,0,0,0,0,4,0,12,0,15,2,0,0,15,2,2,0,15,2,4,0,15,2,6,0,15,2,8,0,15,2,10,0,0,0,0,0,4,0,5,0,8,1,0,0,8,1,1,0,8,1,2,0,8,1,3,0,8,1,4,0,0,0,0,0,0,0,0,0,4,0,20,0,8,1,0,0,8,1,1,0,8,1,2,0,8,1,3,0,8,1,4,0,8,1,5,0,8,1,6,0,25,1,0,0,17,4,8,0,17,4,12,0,17,4,16,0,0,0,0,0,0,0,0,0,4,0,20,0,8,1,0,0,8,1,1,0,8,1,2,0,8,1,3,0,8,1,4,0,8,1,5,0,8,1,6,0,25,1,0,0,19,4,8,0,19,4,12,0,19,4,16,0,0,0,0,0,0,0,0,0,4,0,9,0,17,4,0,0,8,1,4,0,17,4,8,0,0,0,0,0,0,0,0,0,4,0,9,0,19,4,0,0,8,1,4,0,19,4,8,0,0,0,0,0,0,0,0,0,4,0,8,0,18,4,0,0,18,4,4,0,0,0,0,0,4,0,16,0,18,4,0,0,18,4,4,0,18,4,8,0,18,4,12,0,0,0,0,0,72,85,0,0,80,85,0,0,88,85,0,0,112,85,0,0,0,0,0,0,0,0,0,0,98,100,102,0,0,0,0,0,16,0,0,0,17,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,80,67,70,0,0,0,0,0,24,0,0,0,47,0,0,0,74,0,0,0,48,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,9,0,0,0,18,0,0,0,0,0,0,0,112,102,114,0,0,0,0,0,1,1,0,0,28,0,0,0,176,85,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,184,1,0,0,44,0,0,0,196,0,0,0,17,0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,76,0,0,0,10,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,19,0,0,0,2,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,4,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,4,0,58,0,16,4,0,0,12,4,4,0,12,4,8,0,12,4,12,0,12,4,16,0,12,4,20,0,12,4,24,0,20,4,28,0,20,4,32,0,12,4,36,0,20,4,40,0,20,4,44,0,12,4,48,0,20,4,52,0,20,4,56,0,8,4,60,0,8,4,64,0,8,4,68,0,8,4,72,0,8,4,76,0,20,4,80,0,20,4,84,0,20,4,88,0,12,4,92,0,8,4,96,0,8,4,100,0,12,4,104,0,0,0,0,0,0,0,0,0,208,86,0,0,160,85,0,0,224,86,0,0,248,86,0,0,0,0,0,0,0,0,0,0,112,102,114,45,109,101,116,114,105,99,115,0,0,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,80,70,82,0,0,0,0,0,23,0,0,0,77,0,0,0,12,0,0,0,78,0,0,0,2,0,0,0,79,0,0,0,80,0,0,0,81,0,0,0,23,0,0,0,51,0,0,0,18,0,0,0,24,0,0,0,13,0,0,0,15,0,0,0,3,0,0,0,19,0,0,0,20,0,0,0,0,0,0,0,3,0,0,0,82,0,0,0,52,0,0,0,4,0,0,0,25,0,0,0,24,0,0,0,26,0,0,0,83,0,0,0,1,0,0,0,84,0,0,0,27,0,0,0,0,0,0,0,14,0,0,0,85,0,0,0,25,0,0,0,0,0,0,0,32,0,0,0,53,0,0,0,86,0,0,0,54,0,0,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,56,0,0,0,86,0,0,0,54,0,0,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,57,0,0,0,87,0,0,0,58,0,0,0,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,60,0,0,0,88,0,0,0,61,0,0,0,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,87,0,0,176,87,0,0,216,87,0,0,0,88,0,0,112,115,97,117,120,0,0,0,0,87,0,0,16,87,0,0,72,87,0,0,104,87,0,0,2,0,0,0,40,88,0,0,120,87,0,0,0,0,0,0,0,0,0,0,12,0,0,0,56,88,0,0,0,0,2,0,0,0,2,0,64,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,116,97,114,116,70,111,110,116,77,101,116,114,105,99,115,0,0,0,0,0,0,0,0,116,114,117,101,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,80,90,0,0,96,90,0,0,112,90,0,0,128,90,0,0,136,90,0,0,152,90,0,0,168,90,0,0,192,90,0,0,200,90,0,0,208,90,0,0,216,90,0,0,232,90,0,0,248,90,0,0,8,91,0,0,24,91,0,0,40,91,0,0,56,91,0,0,64,91,0,0,80,91,0,0,96,91,0,0,112,91,0,0,128,91,0,0,144,91,0,0,160,91,0,0,176,91,0,0,184,91,0,0,200,91,0,0,216,91,0,0,232,91,0,0,248,91,0,0,8,92,0,0,24,92,0,0,40,92,0,0,56,92,0,0,72,92,0,0,80,92,0,0,88,92,0,0,96,92,0,0,104,92,0,0,112,92,0,0,128,92,0,0,144,92,0,0,152,92,0,0,160,92,0,0,168,92,0,0,184,92,0,0,208,92,0,0,224,92,0,0,136,88,0,0,240,92,0,0,0,93,0,0,16,93,0,0,32,93,0,0,48,93,0,0,64,93,0,0,72,93,0,0,80,93,0,0,96,93,0,0,120,93,0,0,144,93,0,0,152,93,0,0,160,93,0,0,168,93,0,0,176,93,0,0,184,93,0,0,192,93,0,0,200,93,0,0,208,93,0,0,216,93,0,0,224,93,0,0,232,93,0,0,240,93,0,0,248,93,0,0,8,94,0,0,65,115,99,101,110,100,101,114,0,0,0,0,0,0,0,0,65,120,105,115,76,97,98,101,108,0,0,0,0,0,0,0,65,120,105,115,84,121,112,101,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,66,108,101,110,100,65,120,105,115,84,121,112,101,115,0,0,66,108,101,110,100,68,101,115,105,103,110,77,97,112,0,0,66,108,101,110,100,68,101,115,105,103,110,80,111,115,105,116,105,111,110,115,0,0,0,0,67,0,0,0,0,0,0,0,67,67,0,0,0,0,0,0,67,72,0,0,0,0,0,0,67,97,112,72,101,105,103,104,116,0,0,0,0,0,0,0,67,104,97,114,87,105,100,116,104,0,0,0,0,0,0,0,67,104,97,114,97,99,116,101,114,83,101,116,0,0,0,0,67,104,97,114,97,99,116,101,114,115,0,0,0,0,0,0,68,101,115,99,101,110,100,101,114,0,0,0,0,0,0,0,69,110,99,111,100,105,110,103,83,99,104,101,109,101,0,0,69,110,100,65,120,105,115,0,69,110,100,67,104,97,114,77,101,116,114,105,99,115,0,0,69,110,100,67,111,109,112,111,115,105,116,101,115,0,0,0,69,110,100,68,105,114,101,99,116,105,111,110,0,0,0,0,69,110,100,70,111,110,116,77,101,116,114,105,99,115,0,0,69,110,100,75,101,114,110,68,97,116,97,0,0,0,0,0,69,110,100,75,101,114,110,80,97,105,114,115,0,0,0,0,69,110,100,84,114,97,99,107,75,101,114,110,0,0,0,0,69,115,99,67,104,97,114,0,70,97,109,105,108,121,78,97,109,101,0,0,0,0,0,0,70,111,110,116,66,66,111,120,0,0,0,0,0,0,0,0,70,111,110,116,78,97,109,101,0,0,0,0,0,0,0,0,70,117,108,108,78,97,109,101,0,0,0,0,0,0,0,0,73,115,66,97,115,101,70,111,110,116,0,0,0,0,0,0,73,115,67,73,68,70,111,110,116,0,0,0,0,0,0,0,73,115,70,105,120,101,100,80,105,116,99,104,0,0,0,0,73,115,70,105,120,101,100,86,0,0,0,0,0,0,0,0,73,116,97,108,105,99,65,110,103,108,101,0,0,0,0,0,75,80,0,0,0,0,0,0,75,80,72,0,0,0,0,0,75,80,88,0,0,0,0,0,75,80,89,0,0,0,0,0,76,0,0,0,0,0,0,0,77,97,112,112,105,110,103,83,99,104,101,109,101,0,0,0,77,101,116,114,105,99,115,83,101,116,115,0,0,0,0,0,78,0,0,0,0,0,0,0,78,111,116,105,99,101,0,0,80,67,67,0,0,0,0,0,83,116,97,114,116,65,120,105,115,0,0,0,0,0,0,0,83,116,97,114,116,67,104,97,114,77,101,116,114,105,99,115,0,0,0,0,0,0,0,0,83,116,97,114,116,67,111,109,112,111,115,105,116,101,115,0,83,116,97,114,116,68,105,114,101,99,116,105,111,110,0,0,83,116,97,114,116,75,101,114,110,68,97,116,97,0,0,0,83,116,97,114,116,75,101,114,110,80,97,105,114,115,0,0,83,116,97,114,116,75,101,114,110,80,97,105,114,115,48,0,83,116,97,114,116,75,101,114,110,80,97,105,114,115,49,0,83,116,97,114,116,84,114,97,99,107,75,101,114,110,0,0,83,116,100,72,87,0,0,0,83,116,100,86,87,0,0,0,84,114,97,99,107,75,101,114,110,0,0,0,0,0,0,0,85,110,100,101,114,108,105,110,101,80,111,115,105,116,105,111,110,0,0,0,0,0,0,0,85,110,100,101,114,108,105,110,101,84,104,105,99,107,110,101,115,115,0,0,0,0,0,0,86,86,0,0,0,0,0,0,86,86,101,99,116,111,114,0,86,101,114,115,105,111,110,0,87,0,0,0,0,0,0,0,87,48,0,0,0,0,0,0,87,48,88,0,0,0,0,0,87,48,89,0,0,0,0,0,87,49,0,0,0,0,0,0,87,49,88,0,0,0,0,0,87,49,89,0,0,0,0,0,87,88,0,0,0,0,0,0,87,89,0,0,0,0,0,0,87,101,105,103,104,116,0,0,87,101,105,103,104,116,86,101,99,116,111,114,0,0,0,0,88,72,101,105,103,104,116,0,112,111,115,116,115,99,114,105,112,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,5,0,0,0,4,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,6,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,2,0,0,0,6,0,0,0,2,0,0,0,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,112,115,104,105,110,116,101,114,0,0,0,0,0,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,168,0,0,0,152,94,0,0,0,0,1,0,0,0,2,0,168,94,0,0,29,0,0,0,89,0,0,0,0,0,0,0,0,0,0,0,112,115,110,97,109,101,115,0,30,0,0,0,1,0,0,0,63,0,0,0,64,0,0,0,31,0,0,0,32,0,0,0,88,95,0,0,88,97,0,0,0,0,0,0,12,0,0,0,224,94,0,0,0,0,1,0,0,0,2,0,232,94,0,0,0,0,0,0,0,0,0,0,65,0,0,0,0,0,0,0,64,95,0,0,232,94,0,0,0,0,0,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,50,0,51,0,52,0,53,0,54,0,55,0,56,0,57,0,58,0,59,0,60,0,61,0,62,0,63,0,64,0,65,0,66,0,67,0,68,0,69,0,70,0,71,0,72,0,73,0,74,0,75,0,76,0,77,0,78,0,79,0,80,0,81,0,82,0,83,0,84,0,85,0,86,0,87,0,88,0,89,0,90,0,91,0,92,0,93,0,94,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,97,0,98,0,99,0,100,0,101,0,102,0,103,0,104,0,105,0,106,0,107,0,108,0,109,0,110,0,0,0,111,0,112,0,113,0,114,0,0,0,115,0,116,0,117,0,118,0,119,0,120,0,121,0,122,0,0,0,123,0,0,0,124,0,125,0,126,0,127,0,128,0,129,0,130,0,131,0,0,0,132,0,133,0,0,0,134,0,135,0,136,0,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,0,0,0,139,0,0,0,0,0,0,0,0,0,140,0,141,0,142,0,143,0,0,0,0,0,0,0,0,0,0,0,144,0,0,0,0,0,0,0,145,0,0,0,0,0,146,0,147,0,148,0,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,229,0,230,0,0,0,231,0,232,0,233,0,234,0,235,0,236,0,237,0,238,0,13,0,14,0,15,0,99,0,239,0,240,0,241,0,242,0,243,0,244,0,245,0,246,0,247,0,248,0,27,0,28,0,249,0,250,0,251,0,252,0,0,0,253,0,254,0,255,0,0,1,1,1,0,0,0,0,0,0,2,1,0,0,0,0,3,1,4,1,5,1,6,1,0,0,0,0,7,1,8,1,9,1,0,0,10,1,109,0,110,0,11,1,12,1,13,1,0,0,14,1,15,1,16,1,17,1,18,1,19,1,20,1,21,1,22,1,23,1,24,1,25,1,26,1,27,1,28,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38,1,39,1,40,1,41,1,42,1,43,1,44,1,45,1,46,1,47,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,1,49,1,50,1,0,0,0,0,51,1,52,1,53,1,54,1,55,1,0,0,56,1,0,0,0,0,57,1,0,0,0,0,58,1,59,1,0,0,0,0,60,1,61,1,62,1,0,0,0,0,0,0,158,0,155,0,163,0,63,1,64,1,65,1,66,1,67,1,68,1,69,1,0,0,0,0,70,1,150,0,164,0,169,0,71,1,72,1,73,1,74,1,75,1,76,1,77,1,78,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86,1,87,1,88,1,89,1,90,1,91,1,92,1,93,1,94,1,95,1,96,1,97,1,98,1,99,1,100,1,101,1,102,1,103,1,104,1,105,1,106,1,107,1,108,1,109,1,110,1,111,1,112,1,113,1,114,1,115,1,116,1,117,1,118,1,119,1,120,1,121,1,122,1,46,110,117,108,108,0,110,111,110,109,97,114,107,105,110,103,114,101,116,117,114,110,0,110,111,116,101,113,117,97,108,0,105,110,102,105,110,105,116,121,0,108,101,115,115,101,113,117,97,108,0,103,114,101,97,116,101,114,101,113,117,97,108,0,112,97,114,116,105,97,108,100,105,102,102,0,115,117,109,109,97,116,105,111,110,0,112,114,111,100,117,99,116,0,112,105,0,105,110,116,101,103,114,97,108,0,79,109,101,103,97,0,114,97,100,105,99,97,108,0,97,112,112,114,111,120,101,113,117,97,108,0,68,101,108,116,97,0,110,111,110,98,114,101,97,107,105,110,103,115,112,97,99,101,0,108,111,122,101,110,103,101,0,97,112,112,108,101,0,102,114,97,110,99,0,71,98,114,101,118,101,0,103,98,114,101,118,101,0,73,100,111,116,97,99,99,101,110,116,0,83,99,101,100,105,108,108,97,0,115,99,101,100,105,108,108,97,0,67,97,99,117,116,101,0,99,97,99,117,116,101,0,67,99,97,114,111,110,0,99,99,97,114,111,110,0,100,99,114,111,97,116,0,46,110,111,116,100,101,102,0,115,112,97,99,101,0,101,120,99,108,97,109,0,113,117,111,116,101,100,98,108,0,110,117,109,98,101,114,115,105,103,110,0,100,111,108,108,97,114,0,112,101,114,99,101,110,116,0,97,109,112,101,114,115,97,110,100,0,113,117,111,116,101,114,105,103,104,116,0,112,97,114,101,110,108,101,102,116,0,112,97,114,101,110,114,105,103,104,116,0,97,115,116,101,114,105,115,107,0,112,108,117,115,0,99,111,109,109,97,0,104,121,112,104,101,110,0,112,101,114,105,111,100,0,115,108,97,115,104,0,122,101,114,111,0,111,110,101,0,116,119,111,0,116,104,114,101,101,0,102,111,117,114,0,102,105,118,101,0,115,105,120,0,115,101,118,101,110,0,101,105,103,104,116,0,110,105,110,101,0,99,111,108,111,110,0,115,101,109,105,99,111,108,111,110,0,108,101,115,115,0,101,113,117,97,108,0,103,114,101,97,116,101,114,0,113,117,101,115,116,105,111,110,0,97,116,0,65,0,66,0,67,0,68,0,69,0,70,0,71,0,72,0,73,0,74,0,75,0,76,0,77,0,78,0,79,0,80,0,81,0,82,0,83,0,84,0,85,0,86,0,87,0,88,0,89,0,90,0,98,114,97,99,107,101,116,108,101,102,116,0,98,97,99,107,115,108,97,115,104,0,98,114,97,99,107,101,116,114,105,103,104,116,0,97,115,99,105,105,99,105,114,99,117,109,0,117,110,100,101,114,115,99,111,114,101,0,113,117,111,116,101,108,101,102,116,0,97,0,98,0,99,0,100,0,101,0,102,0,103,0,104,0,105,0,106,0,107,0,108,0,109,0,110,0,111,0,112,0,113,0,114,0,115,0,116,0,117,0,118,0,119,0,120,0,121,0,122,0,98,114,97,99,101,108,101,102,116,0,98,97,114,0,98,114,97,99,101,114,105,103,104,116,0,97,115,99,105,105,116,105,108,100,101,0,101,120,99,108,97,109,100,111,119,110,0,99,101,110,116,0,115,116,101,114,108,105,110,103,0,102,114,97,99,116,105,111,110,0,121,101,110,0,102,108,111,114,105,110,0,115,101,99,116,105,111,110,0,99,117,114,114,101,110,99,121,0,113,117,111,116,101,115,105,110,103,108,101,0,113,117,111,116,101,100,98,108,108,101,102,116,0,103,117,105,108,108,101,109,111,116,108,101,102,116,0,103,117,105,108,115,105,110,103,108,108,101,102,116,0,103,117,105,108,115,105,110,103,108,114,105,103,104,116,0,102,105,0,102,108,0,101,110,100,97,115,104,0,100,97,103,103,101,114,0,100,97,103,103,101,114,100,98,108,0,112,101,114,105,111,100,99,101,110,116,101,114,101,100,0,112,97,114,97,103,114,97,112,104,0,98,117,108,108,101,116,0,113,117,111,116,101,115,105,110,103,108,98,97,115,101,0,113,117,111,116,101,100,98,108,98,97,115,101,0,113,117,111,116,101,100,98,108,114,105,103,104,116,0,103,117,105,108,108,101,109,111,116,114,105,103,104,116,0,101,108,108,105,112,115,105,115,0,112,101,114,116,104,111,117,115,97,110,100,0,113,117,101,115,116,105,111,110,100,111,119,110,0,103,114,97,118,101,0,97,99,117,116,101,0,99,105,114,99,117,109,102,108,101,120,0,116,105,108,100,101,0,109,97,99,114,111,110,0,98,114,101,118,101,0,100,111,116,97,99,99,101,110,116,0,100,105,101,114,101,115,105,115,0,114,105,110,103,0,99,101,100,105,108,108,97,0,104,117,110,103,97,114,117,109,108,97,117,116,0,111,103,111,110,101,107,0,99,97,114,111,110,0,101,109,100,97,115,104,0,65,69,0,111,114,100,102,101,109,105,110,105,110,101,0,76,115,108,97,115,104,0,79,115,108,97,115,104,0,79,69,0,111,114,100,109,97,115,99,117,108,105,110,101,0,97,101,0,100,111,116,108,101,115,115,105,0,108,115,108,97,115,104,0,111,115,108,97,115,104,0,111,101,0,103,101,114,109,97,110,100,98,108,115,0,111,110,101,115,117,112,101,114,105,111,114,0,108,111,103,105,99,97,108,110,111,116,0,109,117,0,116,114,97,100,101,109,97,114,107,0,69,116,104,0,111,110,101,104,97,108,102,0,112,108,117,115,109,105,110,117,115,0,84,104,111,114,110,0,111,110,101,113,117,97,114,116,101,114,0,100,105,118,105,100,101,0,98,114,111,107,101,110,98,97,114,0,100,101,103,114,101,101,0,116,104,111,114,110,0,116,104,114,101,101,113,117,97,114,116,101,114,115,0,116,119,111,115,117,112,101,114,105,111,114,0,114,101,103,105,115,116,101,114,101,100,0,109,105,110,117,115,0,101,116,104,0,109,117,108,116,105,112,108,121,0,116,104,114,101,101,115,117,112,101,114,105,111,114,0,99,111,112,121,114,105,103,104,116,0,65,97,99,117,116,101,0,65,99,105,114,99,117,109,102,108,101,120,0,65,100,105,101,114,101,115,105,115,0,65,103,114,97,118,101,0,65,114,105,110,103,0,65,116,105,108,100,101,0,67,99,101,100,105,108,108,97,0,69,97,99,117,116,101,0,69,99,105,114,99,117,109,102,108,101,120,0,69,100,105,101,114,101,115,105,115,0,69,103,114,97,118,101,0,73,97,99,117,116,101,0,73,99,105,114,99,117,109,102,108,101,120,0,73,100,105,101,114,101,115,105,115,0,73,103,114,97,118,101,0,78,116,105,108,100,101,0,79,97,99,117,116,101,0,79,99,105,114,99,117,109,102,108,101,120,0,79,100,105,101,114,101,115,105,115,0,79,103,114,97,118,101,0,79,116,105,108,100,101,0,83,99,97,114,111,110,0,85,97,99,117,116,101,0,85,99,105,114,99,117,109,102,108,101,120,0,85,100,105,101,114,101,115,105,115,0,85,103,114,97,118,101,0,89,97,99,117,116,101,0,89,100,105,101,114,101,115,105,115,0,90,99,97,114,111,110,0,97,97,99,117,116,101,0,97,99,105,114,99,117,109,102,108,101,120,0,97,100,105,101,114,101,115,105,115,0,97,103,114,97,118,101,0,97,114,105,110,103,0,97,116,105,108,100,101,0,99,99,101,100,105,108,108,97,0,101,97,99,117,116,101,0,101,99,105,114,99,117,109,102,108,101,120,0,101,100,105,101,114,101,115,105,115,0,101,103,114,97,118,101,0,105,97,99,117,116,101,0,105,99,105,114,99,117,109,102,108,101,120,0,105,100,105,101,114,101,115,105,115,0,105,103,114,97,118,101,0,110,116,105,108,100,101,0,111,97,99,117,116,101,0,111,99,105,114,99,117,109,102,108,101,120,0,111,100,105,101,114,101,115,105,115,0,111,103,114,97,118,101,0,111,116,105,108,100,101,0,115,99,97,114,111,110,0,117,97,99,117,116,101,0,117,99,105,114,99,117,109,102,108,101,120,0,117,100,105,101,114,101,115,105,115,0,117,103,114,97,118,101,0,121,97,99,117,116,101,0,121,100,105,101,114,101,115,105,115,0,122,99,97,114,111,110,0,101,120,99,108,97,109,115,109,97,108,108,0,72,117,110,103,97,114,117,109,108,97,117,116,115,109,97,108,108,0,100,111,108,108,97,114,111,108,100,115,116,121,108,101,0,100,111,108,108,97,114,115,117,112,101,114,105,111,114,0,97,109,112,101,114,115,97,110,100,115,109,97,108,108,0,65,99,117,116,101,115,109,97,108,108,0,112,97,114,101,110,108,101,102,116,115,117,112,101,114,105,111,114,0,112,97,114,101,110,114,105,103,104,116,115,117,112,101,114,105,111,114,0,116,119,111,100,111,116,101,110,108,101,97,100,101,114,0,111,110,101,100,111,116,101,110,108,101,97,100,101,114,0,122,101,114,111,111,108,100,115,116,121,108,101,0,111,110,101,111,108,100,115,116,121,108,101,0,116,119,111,111,108,100,115,116,121,108,101,0,116,104,114,101,101,111,108,100,115,116,121,108,101,0,102,111,117,114,111,108,100,115,116,121,108,101,0,102,105,118,101,111,108,100,115,116,121,108,101,0,115,105,120,111,108,100,115,116,121,108,101,0,115,101,118,101,110,111,108,100,115,116,121,108,101,0,101,105,103,104,116,111,108,100,115,116,121,108,101,0,110,105,110,101,111,108,100,115,116,121,108,101,0,99,111,109,109,97,115,117,112,101,114,105,111,114,0,116,104,114,101,101,113,117,97,114,116,101,114,115,101,109,100,97,115,104,0,112,101,114,105,111,100,115,117,112,101,114,105,111,114,0,113,117,101,115,116,105,111,110,115,109,97,108,108,0,97,115,117,112,101,114,105,111,114,0,98,115,117,112,101,114,105,111,114,0,99,101,110,116,115,117,112,101,114,105,111,114,0,100,115,117,112,101,114,105,111,114,0,101,115,117,112,101,114,105,111,114,0,105,115,117,112,101,114,105,111,114,0,108,115,117,112,101,114,105,111,114,0,109,115,117,112,101,114,105,111,114,0,110,115,117,112,101,114,105,111,114,0,111,115,117,112,101,114,105,111,114,0,114,115,117,112,101,114,105,111,114,0,115,115,117,112,101,114,105,111,114,0,116,115,117,112,101,114,105,111,114,0,102,102,0,102,102,105,0,102,102,108,0,112,97,114,101,110,108,101,102,116,105,110,102,101,114,105,111,114,0,112,97,114,101,110,114,105,103,104,116,105,110,102,101,114,105,111,114,0,67,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,104,121,112,104,101,110,115,117,112,101,114,105,111,114,0,71,114,97,118,101,115,109,97,108,108,0,65,115,109,97,108,108,0,66,115,109,97,108,108,0,67,115,109,97,108,108,0,68,115,109,97,108,108,0,69,115,109,97,108,108,0,70,115,109,97,108,108,0,71,115,109,97,108,108,0,72,115,109,97,108,108,0,73,115,109,97,108,108,0,74,115,109,97,108,108,0,75,115,109,97,108,108,0,76,115,109,97,108,108,0,77,115,109,97,108,108,0,78,115,109,97,108,108,0,79,115,109,97,108,108,0,80,115,109,97,108,108,0,81,115,109,97,108,108,0,82,115,109,97,108,108,0,83,115,109,97,108,108,0,84,115,109,97,108,108,0,85,115,109,97,108,108,0,86,115,109,97,108,108,0,87,115,109,97,108,108,0,88,115,109,97,108,108,0,89,115,109,97,108,108,0,90,115,109,97,108,108,0,99,111,108,111,110,109,111,110,101,116,97,114,121,0,111,110,101,102,105,116,116,101,100,0,114,117,112,105,97,104,0,84,105,108,100,101,115,109,97,108,108,0,101,120,99,108,97,109,100,111,119,110,115,109,97,108,108,0,99,101,110,116,111,108,100,115,116,121,108,101,0,76,115,108,97,115,104,115,109,97,108,108,0,83,99,97,114,111,110,115,109,97,108,108,0,90,99,97,114,111,110,115,109,97,108,108,0,68,105,101,114,101,115,105,115,115,109,97,108,108,0,66,114,101,118,101,115,109,97,108,108,0,67,97,114,111,110,115,109,97,108,108,0,68,111,116,97,99,99,101,110,116,115,109,97,108,108,0,77,97,99,114,111,110,115,109,97,108,108,0,102,105,103,117,114,101,100,97,115,104,0,104,121,112,104,101,110,105,110,102,101,114,105,111,114,0,79,103,111,110,101,107,115,109,97,108,108,0,82,105,110,103,115,109,97,108,108,0,67,101,100,105,108,108,97,115,109,97,108,108,0,113,117,101,115,116,105,111,110,100,111,119,110,115,109,97,108,108,0,111,110,101,101,105,103,104,116,104,0,116,104,114,101,101,101,105,103,104,116,104,115,0,102,105,118,101,101,105,103,104,116,104,115,0,115,101,118,101,110,101,105,103,104,116,104,115,0,111,110,101,116,104,105,114,100,0,116,119,111,116,104,105,114,100,115,0,122,101,114,111,115,117,112,101,114,105,111,114,0,102,111,117,114,115,117,112,101,114,105,111,114,0,102,105,118,101,115,117,112,101,114,105,111,114,0,115,105,120,115,117,112,101,114,105,111,114,0,115,101,118,101,110,115,117,112,101,114,105,111,114,0,101,105,103,104,116,115,117,112,101,114,105,111,114,0,110,105,110,101,115,117,112,101,114,105,111,114,0,122,101,114,111,105,110,102,101,114,105,111,114,0,111,110,101,105,110,102,101,114,105,111,114,0,116,119,111,105,110,102,101,114,105,111,114,0,116,104,114,101,101,105,110,102,101,114,105,111,114,0,102,111,117,114,105,110,102,101,114,105,111,114,0,102,105,118,101,105,110,102,101,114,105,111,114,0,115,105,120,105,110,102,101,114,105,111,114,0,115,101,118,101,110,105,110,102,101,114,105,111,114,0,101,105,103,104,116,105,110,102,101,114,105,111,114,0,110,105,110,101,105,110,102,101,114,105,111,114,0,99,101,110,116,105,110,102,101,114,105,111,114,0,100,111,108,108,97,114,105,110,102,101,114,105,111,114,0,112,101,114,105,111,100,105,110,102,101,114,105,111,114,0,99,111,109,109,97,105,110,102,101,114,105,111,114,0,65,103,114,97,118,101,115,109,97,108,108,0,65,97,99,117,116,101,115,109,97,108,108,0,65,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,65,116,105,108,100,101,115,109,97,108,108,0,65,100,105,101,114,101,115,105,115,115,109,97,108,108,0,65,114,105,110,103,115,109,97,108,108,0,65,69,115,109,97,108,108,0,67,99,101,100,105,108,108,97,115,109,97,108,108,0,69,103,114,97,118,101,115,109,97,108,108,0,69,97,99,117,116,101,115,109,97,108,108,0,69,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,69,100,105,101,114,101,115,105,115,115,109,97,108,108,0,73,103,114,97,118,101,115,109,97,108,108,0,73,97,99,117,116,101,115,109,97,108,108,0,73,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,73,100,105,101,114,101,115,105,115,115,109,97,108,108,0,69,116,104,115,109,97,108,108,0,78,116,105,108,100,101,115,109,97,108,108,0,79,103,114,97,118,101,115,109,97,108,108,0,79,97,99,117,116,101,115,109,97,108,108,0,79,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,79,116,105,108,100,101,115,109,97,108,108,0,79,100,105,101,114,101,115,105,115,115,109,97,108,108,0,79,69,115,109,97,108,108,0,79,115,108,97,115,104,115,109,97,108,108,0,85,103,114,97,118,101,115,109,97,108,108,0,85,97,99,117,116,101,115,109,97,108,108,0,85,99,105,114,99,117,109,102,108,101,120,115,109,97,108,108,0,85,100,105,101,114,101,115,105,115,115,109,97,108,108,0,89,97,99,117,116,101,115,109,97,108,108,0,84,104,111,114,110,115,109,97,108,108,0,89,100,105,101,114,101,115,105,115,115,109,97,108,108,0,48,48,49,46,48,48,48,0,48,48,49,46,48,48,49,0,48,48,49,46,48,48,50,0,48,48,49,46,48,48,51,0,66,108,97,99,107,0,66,111,108,100,0,66,111,111,107,0,76,105,103,104,116,0,77,101,100,105,117,109,0,82,101,103,117,108,97,114,0,82,111,109,97,110,0,83,101,109,105,98,111,108,100,0,253,0,5,1,11,1,18,1,27,1,38,1,45,1,53,1,63,1,74,1,84,1,95,1,104,1,109,1,115,1,122,1,129,1,135,1,140,1,144,1,148,1,154,1,159,1,164,1,168,1,174,1,180,1,185,1,191,1,201,1,206,1,212,1,220,1,229,1,232,1,234,1,236,1,238,1,240,1,242,1,244,1,246,1,248,1,250,1,252,1,254,1,0,2,2,2,4,2,6,2,8,2,10,2,12,2,14,2,16,2,18,2,20,2,22,2,24,2,26,2,28,2,40,2,50,2,63,2,75,2,86,2,96,2,98,2,100,2,102,2,104,2,106,2,108,2,110,2,112,2,114,2,116,2,118,2,120,2,122,2,124,2,126,2,128,2,130,2,132,2,134,2,136,2,138,2,140,2,142,2,144,2,146,2,148,2,158,2,162,2,173,2,184,2,195,2,200,2,209,2,218,2,222,2,229,2,237,2,246,2,2,3,15,3,29,3,43,3,58,3,61,3,64,3,71,3,78,3,88,3,103,3,113,3,120,3,135,3,148,3,162,3,177,3,186,3,198,3,211,3,217,3,223,3,234,3,240,3,247,3,253,3,7,4,16,4,21,4,29,4,42,4,49,4,55,4,62,4,65,4,77,4,84,4,91,4,94,4,107,4,110,4,119,4,126,4,133,4,136,4,147,4,159,4,170,4,173,4,183,4,187,4,195,4,205,4,211,4,222,4,229,4,239,4,246,4,252,4,10,5,22,5,33,5,39,5,43,5,52,5,66,5,76,5,83,5,95,5,105,5,112,5,118,5,125,5,134,5,141,5,153,5,163,5,170,5,177,5,189,5,199,5,206,5,213,5,220,5,232,5,242,5,249,5,0,6,7,6,14,6,26,6,36,6,43,6,50,6,60,6,67,6,74,6,86,6,96,6,103,6,109,6,116,6,125,6,132,6,144,6,154,6,161,6,168,6,180,6,190,6,197,6,204,6,211,6,223,6,233,6,240,6,247,6,254,6,5,7,17,7,27,7,34,7,41,7,51,7,58,7,70,7,88,7,103,7,118,7,133,7,144,7,162,7,181,7,196,7,211,7,224,7,236,7,248,7,6,8,19,8,32,8,44,8,58,8,72,8,85,8,99,8,119,8,134,8,148,8,158,8,168,8,181,8,191,8,201,8,211,8,221,8,231,8,241,8,251,8,5,9,15,9,25,9,28,9,32,9,36,9,54,9,73,9,89,9,104,9,115,9,122,9,129,9,136,9,143,9,150,9,157,9,164,9,171,9,178,9,185,9,192,9,199,9,206,9,213,9,220,9,227,9,234,9,241,9,248,9,255,9,6,10,13,10,20,10,27,10,34,10,41,10,55,10,65,10,72,10,83,10,99,10,112,10,124,10,136,10,148,10,162,10,173,10,184,10,199,10,211,10,222,10,237,10,249,10,3,11,16,11,34,11,44,11,57,11,69,11,82,11,91,11,101,11,114,11,127,11,140,11,152,11,166,11,180,11,193,11,206,11,218,11,230,11,244,11,1,12,14,12,26,12,40,12,54,12,67,12,80,12,95,12,110,12,124,12,136,12,148,12,165,12,177,12,192,12,203,12,211,12,225,12,237,12,249,12,10,13,25,13,37,13,49,13,66,13,81,13,90,13,102,13,114,13,126,13,143,13,155,13,170,13,178,13,190,13,202,13,214,13,231,13,246,13,2,14,13,14,28,14,36,14,44,14,52,14,60,14,66,14,71,14,76,14,82,14,89,14,97,14,103,14,0,0,253,0,0,0,6,0,5,1,11,1,18,1,27,1,38,1,45,1,53,1,246,2,74,1,84,1,95,1,104,1,109,1,115,1,122,1,129,1,135,1,140,1,144,1,148,1,154,1,159,1,164,1,168,1,174,1,180,1,185,1,191,1,201,1,206,1,212,1,220,1,229,1,232,1,234,1,236,1,238,1,240,1,242,1,244,1,246,1,248,1,250,1,252,1,254,1,0,2,2,2,4,2,6,2,8,2,10,2,12,2,14,2,16,2,18,2,20,2,22,2,24,2,26,2,28,2,40,2,50,2,63,2,75,2,211,3,96,2,98,2,100,2,102,2,104,2,106,2,108,2,110,2,112,2,114,2,116,2,118,2,120,2,122,2,124,2,126,2,128,2,130,2,132,2,134,2,136,2,138,2,140,2,142,2,144,2,146,2,148,2,158,2,162,2,173,2,95,5,112,5,125,5,134,5,206,5,232,5,26,6,67,6,96,6,74,6,86,6,109,6,103,6,116,6,125,6,154,6,132,6,144,6,161,6,190,6,168,6,180,6,197,6,204,6,233,6,211,6,223,6,240,6,254,6,27,7,5,7,17,7,71,3,239,4,195,2,200,2,229,2,113,3,103,3,136,4,22,5,66,5,173,4,217,3,7,4,23,0,62,4,84,4,32,0,195,4,41,0,51,0,218,2,170,4,64,0,76,0,86,0,94,0,97,0,65,4,94,4,106,0,107,4,126,4,198,3,184,2,159,4,112,0,222,2,120,0,132,0,15,3,162,3,177,3,138,0,105,5,118,5,249,5,91,4,133,4,64,3,55,4,2,3,148,3,86,2,63,1,222,4,155,0,41,7,50,6,209,2,237,2,29,3,43,3,58,3,61,3,78,3,88,3,120,3,135,3,186,3,83,5,141,5,76,5,153,5,163,5,170,5,177,5,189,5,199,5,213,5,220,5,163,0,242,5,7,6,14,6,36,6,110,4,223,3,234,3,240,3,247,3,253,3,16,4,21,4,29,4,42,4,49,4,77,4,119,4,0,6,247,6,60,6,51,7,229,4,183,4,39,5,43,6,34,7,205,4,246,4,33,5,43,5,147,4,10,5,52,5,187,4,211,4,252,4,169,0,175,0,182,0,189,0,200,0,209,0,218,0,225,0,232,0,239,0,246,0,0,0,0,0,148,3,0,0,169,3,0,0,21,34,0,0,173,0,0,0,201,2,0,0,188,3,0,0,25,34,0,0,160,0,0,0,26,2,0,0,27,2,0,0,68,101,108,116,97,0,79,109,101,103,97,0,102,114,97,99,116,105,111,110,0,104,121,112,104,101,110,0,109,97,99,114,111,110,0,109,117,0,112,101,114,105,111,100,99,101,110,116,101,114,101,100,0,115,112,97,99,101,0,84,99,111,109,109,97,97,99,99,101,110,116,0,116,99,111,109,109,97,97,99,99,101,110,116,0,0,0,0,0,0,0,0,6,0,0,0,12,0,0,0,21,0,0,0,28,0,0,0,35,0,0,0,38,0,0,0,53,0,0,0,59,0,0,0,72,0,0,0,0,52,0,106,2,167,3,63,4,220,6,125,9,143,10,23,11,137,12,199,14,246,15,87,16,233,17,219,18,104,19,88,22,110,23,32,23,71,24,77,27,156,29,73,31,247,32,107,32,222,33,55,34,154,35,218,58,10,64,122,72,188,80,109,88,104,93,61,98,168,106,91,114,111,115,237,122,180,127,255,135,164,143,132,149,213,158,108,161,115,168,175,183,147,197,199,202,25,204,166,208,209,209,81,215,26,65,143,0,65,0,140,0,175,0,193,1,15,1,147,1,233,1,251,2,7,2,40,2],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+20481);allocate([57,2,82,2,91,2,128,2,136,2,154,69,131,0,198,0,150,0,158,0,167,225,227,245,244,101,128,1,252,237,225,227,242,239,110,128,1,226,243,237,225,236,108,128,247,230,225,227,245,244,101,129,0,193,0,185,243,237,225,236,108,128,247,225,226,242,229,246,101,134,1,2,0,213,0,221,0,232,0,243,0,251,1,7,225,227,245,244,101,128,30,174,227,249,242,233,236,236,233,99,128,4,208,228,239,244,226,229,236,239,119,128,30,182,231,242,225,246,101,128,30,176,232,239,239,235,225,226,239,246,101,128,30,178,244,233,236,228,101,128,30,180,99,4,1,25,1,32,1,121,1,137,225,242,239,110,128,1,205,233,242,99,2,1,40,1,45,236,101,128,36,182,245,237,230,236,229,120,134,0,194,1,66,1,74,1,85,1,93,1,105,1,113,225,227,245,244,101,128,30,164,228,239,244,226,229,236,239,119,128,30,172,231,242,225,246,101,128,30,166,232,239,239,235,225,226,239,246,101,128,30,168,243,237,225,236,108,128,247,226,244,233,236,228,101,128,30,170,245,244,101,129,246,201,1,129,243,237,225,236,108,128,247,180,249,242,233,236,236,233,99,128,4,16,100,3,1,155,1,165,1,209,226,236,231,242,225,246,101,128,2,0,233,229,242,229,243,233,115,131,0,196,1,181,1,192,1,201,227,249,242,233,236,236,233,99,128,4,210,237,225,227,242,239,110,128,1,222,243,237,225,236,108,128,247,228,239,116,2,1,216,1,224,226,229,236,239,119,128,30,160,237,225,227,242,239,110,128,1,224,231,242,225,246,101,129,0,192,1,243,243,237,225,236,108,128,247,224,232,239,239,235,225,226,239,246,101,128,30,162,105,2,2,13,2,25,229,227,249,242,233,236,236,233,99,128,4,212,238,246,229,242,244,229,228,226,242,229,246,101,128,2,2,236,240,232,97,129,3,145,2,49,244,239,238,239,115,128,3,134,109,2,2,63,2,71,225,227,242,239,110,128,1,0,239,238,239,243,240,225,227,101,128,255,33,239,231,239,238,229,107,128,1,4,242,233,238,103,131,0,197,2,104,2,112,2,120,225,227,245,244,101,128,1,250,226,229,236,239,119,128,30,0,243,237,225,236,108,128,247,229,243,237,225,236,108,128,247,97,244,233,236,228,101,129,0,195,2,146,243,237,225,236,108,128,247,227,249,226,225,242,237,229,238,233,225,110,128,5,49,66,137,0,66,2,189,2,198,2,223,3,3,3,10,3,22,3,34,3,46,3,54,227,233,242,227,236,101,128,36,183,228,239,116,2,2,206,2,215,225,227,227,229,238,116,128,30,2,226,229,236,239,119,128,30,4,101,3,2,231,2,242,2,254,227,249,242,233,236,236,233,99,128,4,17,238,225,242,237,229,238,233,225,110,128,5,50,244,97,128,3,146,232,239,239,107,128,1,129,236,233,238,229,226,229,236,239,119,128,30,6,237,239,238,239,243,240,225,227,101,128,255,34,242,229,246,229,243,237,225,236,108,128,246,244,243,237,225,236,108,128,247,98,244,239,240,226,225,114,128,1,130,67,137,0,67,3,85,3,127,3,193,3,210,3,224,4,171,4,188,4,200,4,212,97,3,3,93,3,104,3,111,225,242,237,229,238,233,225,110,128,5,62,227,245,244,101,128,1,6,242,239,110,129,246,202,3,119,243,237,225,236,108,128,246,245,99,3,3,135,3,142,3,171,225,242,239,110,128,1,12,229,228,233,236,236,97,130,0,199,3,155,3,163,225,227,245,244,101,128,30,8,243,237,225,236,108,128,247,231,233,242,99,2,3,179,3,184,236,101,128,36,184,245,237,230,236,229,120,128,1,8,228,239,116,129,1,10,3,201,225,227,227,229,238,116,128,1,10,229,228,233,236,236,225,243,237,225,236,108,128,247,184,104,4,3,234,3,246,4,161,4,165,225,225,242,237,229,238,233,225,110,128,5,73,101,6,4,4,4,24,4,35,4,103,4,115,4,136,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,188,227,249,242,233,236,236,233,99,128,4,39,100,2,4,41,4,85,229,243,227,229,238,228,229,114,2,4,54,4,74,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,190,227,249,242,233,236,236,233,99,128,4,182,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,244,232,225,242,237,229,238,233,225,110,128,5,67,235,232,225,235,225,243,243,233,225,238,227,249,242,233,236,236,233,99,128,4,203,246,229,242,244,233,227,225,236,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,184,105,128,3,167,239,239,107,128,1,135,233,242,227,245,237,230,236,229,248,243,237,225,236,108,128,246,246,237,239,238,239,243,240,225,227,101,128,255,35,239,225,242,237,229,238,233,225,110,128,5,81,243,237,225,236,108,128,247,99,68,142,0,68,4,252,5,10,5,36,5,96,5,121,5,166,5,173,5,231,5,244,6,0,6,12,6,28,6,48,6,57,90,129,1,241,5,2,227,225,242,239,110,128,1,196,97,2,5,16,5,27,225,242,237,229,238,233,225,110,128,5,52,230,242,233,227,225,110,128,1,137,99,4,5,46,5,53,5,62,5,89,225,242,239,110,128,1,14,229,228,233,236,236,97,128,30,16,233,242,99,2,5,70,5,75,236,101,128,36,185,245,237,230,236,229,248,226,229,236,239,119,128,30,18,242,239,225,116,128,1,16,228,239,116,2,5,104,5,113,225,227,227,229,238,116,128,30,10,226,229,236,239,119,128,30,12,101,3,5,129,5,140,5,150,227,249,242,233,236,236,233,99,128,4,20,233,227,239,240,244,233,99,128,3,238,236,244,97,129,34,6,5,158,231,242,229,229,107,128,3,148,232,239,239,107,128,1,138,105,2,5,179,5,218,229,242,229,243,233,115,131,246,203,5,194,5,202,5,210,193,227,245,244,101,128,246,204,199,242,225,246,101,128,246,205,243,237,225,236,108,128,247,168,231,225,237,237,225,231,242,229,229,107,128,3,220,234,229,227,249,242,233,236,236,233,99,128,4,2,236,233,238,229,226,229,236,239,119,128,30,14,237,239,238,239,243,240,225,227,101,128,255,36,239,244,225,227,227,229,238,244,243,237,225,236,108,128,246,247,115,2,6,34,6,41,236,225,243,104,128,1,16,237,225,236,108,128,247,100,244,239,240,226,225,114,128,1,139,122,131,1,242,6,67,6,75,6,112,227,225,242,239,110,128,1,197,101,2,6,81,6,101,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,224,227,249,242,233,236,236,233,99,128,4,5,232,229,227,249,242,233,236,236,233,99,128,4,15,69,146,0,69,6,165,6,183,6,191,7,89,7,153,7,165,7,183,7,211,8,7,8,36,8,94,8,169,8,189,8,208,8,248,9,44,9,109,9,115,225,227,245,244,101,129,0,201,6,175,243,237,225,236,108,128,247,233,226,242,229,246,101,128,1,20,99,5,6,203,6,210,6,224,6,236,7,79,225,242,239,110,128,1,26,229,228,233,236,236,225,226,242,229,246,101,128,30,28,232,225,242,237,229,238,233,225,110,128,5,53,233,242,99,2,6,244,6,249,236,101,128,36,186,245,237,230,236,229,120,135,0,202,7,16,7,24,7,32,7,43,7,51,7,63,7,71,225,227,245,244,101,128,30,190,226,229,236,239,119,128,30,24,228,239,244,226,229,236,239,119,128,30,198,231,242,225,246,101,128,30,192,232,239,239,235,225,226,239,246,101,128,30,194,243,237,225,236,108,128,247,234,244,233,236,228,101,128,30,196,249,242,233,236,236,233,99,128,4,4,100,3,7,97,7,107,7,127,226,236,231,242,225,246,101,128,2,4,233,229,242,229,243,233,115,129,0,203,7,119,243,237,225,236,108,128,247,235,239,116,130,1,22,7,136,7,145,225,227,227,229,238,116,128,1,22,226,229,236,239,119,128,30,184,230,227,249,242,233,236,236,233,99,128,4,36,231,242,225,246,101,129,0,200,7,175,243,237,225,236,108,128,247,232,104,2,7,189,7,200,225,242,237,229,238,233,225,110,128,5,55,239,239,235,225,226,239,246,101,128,30,186,105,3,7,219,7,230,7,245,231,232,244,242,239,237,225,110,128,33,103,238,246,229,242,244,229,228,226,242,229,246,101,128,2,6,239,244,233,230,233,229,228,227,249,242,233,236,236,233,99,128,4,100,108,2,8,13,8,24,227,249,242,233,236,236,233,99,128,4,27,229,246,229,238,242,239,237,225,110,128,33,106,109,3,8,44,8,72,8,83,225,227,242,239,110,130,1,18,8,56,8,64,225,227,245,244,101,128,30,22,231,242,225,246,101,128,30,20,227,249,242,233,236,236,233,99,128,4,28,239,238,239,243,240,225,227,101,128,255,37,110,4,8,104,8,115,8,135,8,154,227,249,242,233,236,236,233,99,128,4,29,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,162,103,129,1,74,8,141,232,229,227,249,242,233,236,236,233,99,128,4,164,232,239,239,235,227,249,242,233,236,236,233,99,128,4,199,111,2,8,175,8,183,231,239,238,229,107,128,1,24,240,229,110,128,1,144,240,243,233,236,239,110,129,3,149,8,200,244,239,238,239,115,128,3,136,114,2,8,214,8,225,227,249,242,233,236,236,233,99,128,4,32,229,246,229,242,243,229,100,129,1,142,8,237,227,249,242,233,236,236,233,99,128,4,45,115,4,9,2,9,13,9,33,9,37,227,249,242,233,236,236,233,99,128,4,33,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,170,104,128,1,169,237,225,236,108,128,247,101,116,3,9,52,9,78,9,92,97,130,3,151,9,60,9,70,242,237,229,238,233,225,110,128,5,56,244,239,238,239,115,128,3,137,104,129,0,208,9,84,243,237,225,236,108,128,247,240,233,236,228,101,129,30,188,9,101,226,229,236,239,119,128,30,26,245,242,111,128,32,172,250,104,130,1,183,9,124,9,132,227,225,242,239,110,128,1,238,242,229,246,229,242,243,229,100,128,1,184,70,136,0,70,9,163,9,172,9,184,9,212,9,219,9,248,10,4,10,15,227,233,242,227,236,101,128,36,187,228,239,244,225,227,227,229,238,116,128,30,30,101,2,9,190,9,202,232,225,242,237,229,238,233,225,110,128,5,86,233,227,239,240,244,233,99,128,3,228,232,239,239,107,128,1,145,105,2,9,225,9,238,244,225,227,249,242,233,236,236,233,99,128,4,114,246,229,242,239,237,225,110,128,33,100,237,239,238,239,243,240,225,227,101,128,255,38,239,245,242,242,239,237,225,110,128,33,99,243,237,225,236,108,128,247,102,71,140,0,71,10,51,10,61,10,107,10,115,10,176,10,193,10,205,11,39,11,52,11,65,11,90,11,107,194,243,241,245,225,242,101,128,51,135,97,3,10,69,10,76,10,94,227,245,244,101,128,1,244,237,237,97,129,3,147,10,84,225,230,242,233,227,225,110,128,1,148,238,231,233,225,227,239,240,244,233,99,128,3,234,226,242,229,246,101,128,1,30,99,4,10,125,10,132,10,141,10,163,225,242,239,110,128,1,230,229,228,233,236,236,97,128,1,34,233,242,99,2,10,149,10,154,236,101,128,36,188,245,237,230,236,229,120,128,1,28,239,237,237,225,225,227,227,229,238,116,128,1,34,228,239,116,129,1,32,10,184,225,227,227,229,238,116,128,1,32,229,227,249,242,233,236,236,233,99,128,4,19,104,3,10,213,10,226,11,33,225,228,225,242,237,229,238,233,225,110,128,5,66,101,3,10,234,10,255,11,16,237,233,228,228,236,229,232,239,239,235,227,249,242,233,236,236,233,99,128,4,148,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,146,245,240,244,245,242,238,227,249,242,233,236,236,233,99,128,4,144,239,239,107,128,1,147,233,237,225,242,237,229,238,233,225,110,128,5,51,234,229,227,249,242,233,236,236,233,99,128,4,3,109,2,11,71,11,79,225,227,242,239,110,128,30,32,239,238,239,243,240,225,227,101,128,255,39,242,225,246,101,129,246,206,11,99,243,237,225,236,108,128,247,96,115,2,11,113,11,129,237,225,236,108,129,247,103,11,122,232,239,239,107,128,2,155,244,242,239,235,101,128,1,228,72,140,0,72,11,165,11,190,11,198,11,208,12,17,12,40,12,77,12,117,12,129,12,157,12,165,12,189,177,184,53,3,11,175,11,180,11,185,179,51,128,37,207,180,51,128,37,170,181,49,128,37,171,178,178,176,183,51,128,37,161,208,243,241,245,225,242,101,128,51,203,97,3,11,216,11,236,12,0,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,168,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,178,242,228,243,233,231,238,227,249,242,233,236,236,233,99,128,4,42,98,2,12,23,12,28,225,114,128,1,38,242,229,246,229,226,229,236,239,119,128,30,42,99,2,12,46,12,55,229,228,233,236,236,97,128,30,40,233,242,99,2,12,63,12,68,236,101,128,36,189,245,237,230,236,229,120,128,1,36,100,2,12,83,12,93,233,229,242,229,243,233,115,128,30,38,239,116,2,12,100,12,109,225,227,227,229,238,116,128,30,34,226,229,236,239,119,128,30,36,237,239,238,239,243,240,225,227,101,128,255,40,111,2,12,135,12,146,225,242,237,229,238,233,225,110,128,5,64,242,233,227,239,240,244,233,99,128,3,232,243,237,225,236,108,128,247,104,245,238,231,225,242,245,237,236,225,245,116,129,246,207,12,181,243,237,225,236,108,128,246,248,250,243,241,245,225,242,101,128,51,144,73,146,0,73,12,239,12,251,12,255,13,11,13,29,13,37,13,94,13,181,13,214,13,224,13,242,13,254,14,48,14,86,14,99,14,166,14,187,14,205,193,227,249,242,233,236,236,233,99,128,4,47,74,128,1,50,213,227,249,242,233,236,236,233,99,128,4,46,225,227,245,244,101,129,0,205,13,21,243,237,225,236,108,128,247,237,226,242,229,246,101,128,1,44,99,3,13,45,13,52,13,84,225,242,239,110,128,1,207,233,242,99,2,13,60,13,65,236,101,128,36,190,245,237,230,236,229,120,129,0,206,13,76,243,237,225,236,108,128,247,238,249,242,233,236,236,233,99,128,4,6,100,3,13,102,13,112,13,155,226,236,231,242,225,246,101,128,2,8,233,229,242,229,243,233,115,131,0,207,13,128,13,136,13,147,225,227,245,244,101,128,30,46,227,249,242,233,236,236,233,99,128,4,228,243,237,225,236,108,128,247,239,239,116,130,1,48,13,164,13,173,225,227,227,229,238,116,128,1,48,226,229,236,239,119,128,30,202,101,2,13,187,13,203,226,242,229,246,229,227,249,242,233,236,236,233,99,128,4,214,227,249,242,233,236,236,233,99,128,4,21,230,242,225,235,244,245,114,128,33,17,231,242,225,246,101,129,0,204,13,234,243,237,225,236,108,128,247,236,232,239,239,235,225,226,239,246,101,128,30,200,105,3,14,6,14,17,14,32,227,249,242,233,236,236,233,99,128,4,24,238,246,229,242,244,229,228,226,242,229,246,101,128,2,10,243,232,239,242,244,227,249,242,233,236,236,233,99,128,4,25,109,2,14,54,14,75,225,227,242,239,110,129,1,42,14,64,227,249,242,233,236,236,233,99,128,4,226,239,238,239,243,240,225,227,101,128,255,41,238,233,225,242,237,229,238,233,225,110,128,5,59,111,3,14,107,14,118,14,126,227,249,242,233,236,236,233,99,128,4,1,231,239,238,229,107,128,1,46,244,97,131,3,153,14,137,14,147,14,158,225,230,242,233,227,225,110,128,1,150,228,233,229,242,229,243,233,115,128,3,170,244,239,238,239,115,128,3,138,115,2,14,172,14,179,237,225,236,108,128,247,105,244,242,239,235,101,128,1,151,244,233,236,228,101,129,1,40,14,197,226,229,236,239,119,128,30,44,250,232,233,244,243,97,2,14,216,14,227,227,249,242,233,236,236,233,99,128,4,116,228,226,236,231,242,225,246,229,227,249,242,233,236,236,233,99,128,4,118,74,134,0,74,15,6,15,18,15,41,15,53,15,67,15,79,225,225,242,237,229,238,233,225,110,128,5,65,227,233,242,99,2,15,27,15,32,236,101,128,36,191,245,237,230,236,229,120,128,1,52,229,227,249,242,233,236,236,233,99,128,4,8,232,229,232,225,242,237,229,238,233,225,110,128,5,75,237,239,238,239,243,240,225,227,101,128,255,42,243,237,225,236,108,128,247,106,75,140,0,75,15,115,15,125,15,135,16,18,16,65,16,76,16,106,16,143,16,156,16,168,16,180,16,208,194,243,241,245,225,242,101,128,51,133,203,243,241,245,225,242,101,128,51,205,97,7,15,151,15,169,15,191,15,211,15,226,15,232,15,249,226,225,243,232,235,233,242,227,249,242,233,236,236,233,99,128,4,160,99,2,15,175,15,181,245,244,101,128,30,48,249,242,233,236,236,233,99,128,4,26,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,154,232,239,239,235,227,249,242,233,236,236,233,99,128,4,195,240,240,97,128,3,154,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,158,246,229,242,244,233,227,225,236,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,156,99,4,16,28,16,35,16,44,16,52,225,242,239,110,128,1,232,229,228,233,236,236,97,128,1,54,233,242,227,236,101,128,36,192,239,237,237,225,225,227,227,229,238,116,128,1,54,228,239,244,226,229,236,239,119,128,30,50,101,2,16,82,16,94,232,225,242,237,229,238,233,225,110,128,5,84,238,225,242,237,229,238,233,225,110,128,5,63,104,3,16,114,16,126,16,137,225,227,249,242,233,236,236,233,99,128,4,37,229,233,227,239,240,244,233,99,128,3,230,239,239,107,128,1,152,234,229,227,249,242,233,236,236,233,99,128,4,12,236,233,238,229,226,229,236,239,119,128,30,52,237,239,238,239,243,240,225,227,101,128,255,43,239,240,240,97,2,16,189,16,200,227,249,242,233,236,236,233,99,128,4,128,231,242,229,229,107,128,3,222,115,2,16,214,16,226,233,227,249,242,233,236,236,233,99,128,4,110,237,225,236,108,128,247,107,76,138,0,76,17,1,17,5,17,9,17,29,17,95,17,133,17,147,17,165,17,177,17,189,74,128,1,199,76,128,246,191,97,2,17,15,17,22,227,245,244,101,128,1,57,237,226,228,97,128,3,155,99,4,17,39,17,46,17,55,17,82,225,242,239,110,128,1,61,229,228,233,236,236,97,128,1,59,233,242,99,2,17,63,17,68,236,101,128,36,193,245,237,230,236,229,248,226,229,236,239,119,128,30,60,239,237,237,225,225,227,227,229,238,116,128,1,59,228,239,116,130,1,63,17,105,17,114,225,227,227,229,238,116,128,1,63,226,229,236,239,119,129,30,54,17,124,237,225,227,242,239,110,128,30,56,233,247,238,225,242,237,229,238,233,225,110,128,5,60,106,129,1,200,17,153,229,227,249,242,233,236,236,233,99,128,4,9,236,233,238,229,226,229,236,239,119,128,30,58,237,239,238,239,243,240,225,227,101,128,255,44,115,2,17,195,17,212,236,225,243,104,129,1,65,17,204,243,237,225,236,108,128,246,249,237,225,236,108,128,247,108,77,137,0,77,17,241,17,251,18,24,18,33,18,58,18,71,18,83,18,91,18,100,194,243,241,245,225,242,101,128,51,134,225,99,2,18,2,18,18,242,239,110,129,246,208,18,10,243,237,225,236,108,128,247,175,245,244,101,128,30,62,227,233,242,227,236,101,128,36,194,228,239,116,2,18,41,18,50,225,227,227,229,238,116,128,30,64,226,229,236,239,119,128,30,66,229,238,225,242,237,229,238,233,225,110,128,5,68,237,239,238,239,243,240,225,227,101,128,255,45,243,237,225,236,108,128,247,109,244,245,242,238,229,100,128,1,156,117,128,3,156,78,141,0,78,18,134,18,138,18,146,18,212,18,237,18,248,19,3,19,21,19,33,19,45,19,58,19,66,19,84,74,128,1,202,225,227,245,244,101,128,1,67,99,4,18,156,18,163,18,172,18,199,225,242,239,110,128,1,71,229,228,233,236,236,97,128,1,69,233,242,99,2,18,180,18,185,236,101,128,36,195,245,237,230,236,229,248,226,229,236,239,119,128,30,74,239,237,237,225,225,227,227,229,238,116,128,1,69,228,239,116,2,18,220,18,229,225,227,227,229,238,116,128,30,68,226,229,236,239,119,128,30,70,232,239,239,235,236,229,230,116,128,1,157,233,238,229,242,239,237,225,110,128,33,104,106,129,1,203,19,9,229,227,249,242,233,236,236,233,99,128,4,10,236,233,238,229,226,229,236,239,119,128,30,72,237,239,238,239,243,240,225,227,101,128,255,46,239,247,225,242,237,229,238,233,225,110,128,5,70,243,237,225,236,108,128,247,110,244,233,236,228,101,129,0,209,19,76,243,237,225,236,108,128,247,241,117,128,3,157,79,141,0,79,19,118,19,132,19,150,19,203,20,78,20,152,20,187,21,48,21,69,21,213,21,223,21,254,22,53,69,129,1,82,19,124,243,237,225,236,108,128,246,250,225,227,245,244,101,129,0,211,19,142,243,237,225,236,108,128,247,243,98,2,19,156,19,196,225,242,242,229,100,2,19,166,19,177,227,249,242,233,236,236,233,99,128,4,232,228,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,234,242,229,246,101,128,1,78,99,4,19,213,19,220,19,235,20,68,225,242,239,110,128,1,209,229,238,244,229,242,229,228,244,233,236,228,101,128,1,159,233,242,99,2,19,243,19,248,236,101,128,36,196,245,237,230,236,229,120,134,0,212,20,13,20,21,20,32,20,40,20,52,20,60,225,227,245,244,101,128,30,208,228,239,244,226,229,236,239,119,128,30,216,231,242,225,246,101,128,30,210,232,239,239,235,225,226,239,246,101,128,30,212,243,237,225,236,108,128,247,244,244,233,236,228,101,128,30,214,249,242,233,236,236,233,99,128,4,30,100,3,20,86,20,109,20,142,226,108,2,20,93,20,101,225,227,245,244,101,128,1,80,231,242,225,246,101,128,2,12,233,229,242,229,243,233,115,130,0,214,20,123,20,134,227,249,242,233,236,236,233,99,128,4,230,243,237,225,236,108,128,247,246,239,244,226,229,236,239,119,128,30,204,103,2,20,158,20,170,239,238,229,235,243,237,225,236,108,128,246,251,242,225,246,101,129,0,210,20,179,243,237,225,236,108,128,247,242,104,4,20,197,20,208,20,212,21,34,225,242,237,229,238,233,225,110,128,5,85,109,128,33,38,111,2,20,218,20,228,239,235,225,226,239,246,101,128,30,206,242,110,133,1,160,20,243,20,251,21,6,21,14,21,26,225,227,245,244,101,128,30,218,228,239,244,226,229,236,239,119,128,30,226,231,242,225,246,101,128,30,220,232,239,239,235,225,226,239,246,101,128,30,222,244,233,236,228,101,128,30,224,245,238,231,225,242,245,237,236,225,245,116,128,1,80,105,129,1,162,21,54,238,246,229,242,244,229,228,226,242,229,246,101,128,2,14,109,4,21,79,21,107,21,184,21,202,225,227,242,239,110,130,1,76,21,91,21,99,225,227,245,244,101,128,30,82,231,242,225,246,101,128,30,80,229,231,97,132,33,38,21,121,21,132,21,140,21,156,227,249,242,233,236,236,233,99,128,4,96,231,242,229,229,107,128,3,169,242,239,245,238,228,227,249,242,233,236,236,233,99,128,4,122,116,2,21,162,21,177,233,244,236,239,227,249,242,233,236,236,233,99,128,4,124,239,238,239,115,128,3,143,233,227,242,239,110,129,3,159,21,194,244,239,238,239,115,128,3,140,239,238,239,243,240,225,227,101,128,255,47,238,229,242,239,237,225,110,128,33,96,111,2,21,229,21,248,231,239,238,229,107,129,1,234,21,239,237,225,227,242,239,110,128,1,236,240,229,110,128,1,134,115,3,22,6,22,33,22,40,236,225,243,104,130,0,216,22,17,22,25,225,227,245,244,101,128,1,254,243,237,225,236,108,128,247,248,237,225,236,108,128,247,111,244,242,239,235,229,225,227,245,244,101,128,1,254,116,2,22,59,22,70,227,249,242,233,236,236,233,99,128,4,126,233,236,228,101,131,0,213,22,83,22,91,22,102,225,227,245,244,101,128,30,76,228,233,229,242,229,243,233,115,128,30,78,243,237,225,236,108,128,247,245,80,136,0,80,22,130,22,138,22,147,22,159,22,211,22,227,22,246,23,2,225,227,245,244,101,128,30,84,227,233,242,227,236,101,128,36,197,228,239,244,225,227,227,229,238,116,128,30,86,101,3,22,167,22,178,22,190,227,249,242,233,236,236,233,99,128,4,31,232,225,242,237,229,238,233,225,110,128,5,74,237,233,228,228,236,229,232,239,239,235,227,249,242,233,236,236,233,99,128,4,166,104,2,22,217,22,221,105,128,3,166,239,239,107,128,1,164,105,129,3,160,22,233,247,242,225,242,237,229,238,233,225,110,128,5,83,237,239,238,239,243,240,225,227,101,128,255,48,115,2,23,8,23,25,105,129,3,168,23,14,227,249,242,233,236,236,233,99,128,4,112,237,225,236,108,128,247,112,81,131,0,81,23,42,23,51,23,63,227,233,242,227,236,101,128,36,198,237,239,238,239,243,240,225,227,101,128,255,49,243,237,225,236,108,128,247,113,82,138,0,82,23,95,23,119,23,166,23,217,23,230,23,240,23,245,24,19,24,31,24,43,97,2,23,101,23,112,225,242,237,229,238,233,225,110,128,5,76,227,245,244,101,128,1,84,99,4,23,129,23,136,23,145,23,153,225,242,239,110,128,1,88,229,228,233,236,236,97,128,1,86,233,242,227,236,101,128,36,199,239,237,237,225,225,227,227,229,238,116,128,1,86,100,2,23,172,23,182,226,236,231,242,225,246,101,128,2,16,239,116,2,23,189,23,198,225,227,227,229,238,116,128,30,88,226,229,236,239,119,129,30,90,23,208,237,225,227,242,239,110,128,30,92,229,232,225,242,237,229,238,233,225,110,128,5,80,230,242,225,235,244,245,114,128,33,28,232,111,128,3,161,233,110,2,23,252,24,5,231,243,237,225,236,108,128,246,252,246,229,242,244,229,228,226,242,229,246,101,128,2,18,236,233,238,229,226,229,236,239,119,128,30,94,237,239,238,239,243,240,225,227,101,128,255,50,243,237,225,236,108,129,247,114,24,53,233,238,246,229,242,244,229,100,129,2,129,24,66,243,245,240,229,242,233,239,114,128,2,182,83,139,0,83,24,103,26,17,26,55,26,182,26,221,26,250,27,84,27,105,27,117,27,135,27,143,70,6,24,117,24,209,24,241,25,77,25,119,25,221,48,9,24,137,24,145,24,153,24,161,24,169,24,177,24,185,24,193,24,201,177,176,176,176,48,128,37,12,178,176,176,176,48,128,37,20,179,176,176,176,48,128,37,16,180,176,176,176,48,128,37,24,181,176,176,176,48,128,37,60,182,176,176,176,48,128,37,44,183,176,176,176,48,128,37,52,184,176,176,176,48,128,37,28,185,176,176,176,48,128,37,36,49,3,24,217,24,225,24,233,176,176,176,176,48,128,37,0,177,176,176,176,48,128,37,2,185,176,176,176,48,128,37,97,50,9,25,5,25,13,25,21,25,29,25,37,25,45,25,53,25,61,25,69,176,176,176,176,48,128,37,98,177,176,176,176,48,128,37,86,178,176,176,176,48,128,37,85,179,176,176,176,48,128,37,99,180,176,176,176,48,128,37,81,181,176,176,176,48,128,37,87,182,176,176,176,48,128,37,93,183,176,176,176,48,128,37,92,184,176,176,176,48,128,37,91,51,4,25,87,25,95,25,103,25,111,182,176,176,176,48,128,37,94,183,176,176,176,48,128,37,95,184,176,176,176,48,128,37,90,185,176,176,176,48,128,37,84,52,10,25,141,25,149,25,157,25,165,25,173,25,181,25,189,25,197,25,205,25,213,176,176,176,176,48,128,37,105,177,176,176,176,48,128,37,102,178,176,176,176,48,128,37,96,179,176,176,176,48,128,37,80,180,176,176,176,48,128,37,108,181,176,176,176,48,128,37,103,182,176,176,176,48,128,37,104,183,176,176,176,48,128,37,100,184,176,176,176,48,128,37,101,185,176,176,176,48,128,37,89,53,5,25,233,25,241,25,249,26,1,26,9,176,176,176,176,48,128,37,88,177,176,176,176,48,128,37,82,178,176,176,176,48,128,37,83,179,176,176,176,48,128,37,107,180,176,176,176,48,128,37,106,97,2,26,23,26,44,227,245,244,101,129,1,90,26,32,228,239,244,225,227,227,229,238,116,128,30,100,237,240,233,231,242,229,229,107,128,3,224,99,5,26,67,26,98,26,107,26,147,26,169,225,242,239,110,130,1,96,26,78,26,90,228,239,244,225,227,227,229,238,116,128,30,102,243,237,225,236,108,128,246,253,229,228,233,236,236,97,128,1,94,232,247,97,130,1,143,26,117,26,128,227,249,242,233,236,236,233,99,128,4,216,228,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,218,233,242,99,2,26,155,26,160,236,101,128,36,200,245,237,230,236,229,120,128,1,92,239,237,237,225,225,227,227,229,238,116,128,2,24,228,239,116,2,26,190,26,199,225,227,227,229,238,116,128,30,96,226,229,236,239,119,129,30,98,26,209,228,239,244,225,227,227,229,238,116,128,30,104,101,2,26,227,26,239,232,225,242,237,229,238,233,225,110,128,5,77,246,229,238,242,239,237,225,110,128,33,102,104,5,27,6,27,34,27,48,27,59,27,72,97,2,27,12,27,23,225,242,237,229,238,233,225,110,128,5,71,227,249,242,233,236,236,233,99,128,4,40,227,232,225,227,249,242,233,236,236,233,99,128,4,41,229,233,227,239,240,244,233,99,128,3,226,232,225,227,249,242,233,236,236,233,99,128,4,186,233,237,225,227,239,240,244,233,99,128,3,236,105,2,27,90,27,96,231,237,97,128,3,163,248,242,239,237,225,110,128,33,101,237,239,238,239,243,240,225,227,101,128,255,51,239,230,244,243,233,231,238,227,249,242,233,236,236,233,99,128,4,44,243,237,225,236,108,128,247,115,244,233,231,237,225,231,242,229,229,107,128,3,218,84,141,0,84,27,186,27,191,27,197,28,7,28,32,28,96,28,147,28,177,28,189,28,201,28,246,29,6,29,46,225,117,128,3,164,226,225,114,128,1,102,99,4,27,207,27,214,27,223,27,250,225,242,239,110,128,1,100,229,228,233,236,236,97,128,1,98,233,242,99,2,27,231,27,236,236,101,128,36,201,245,237,230,236,229,248,226,229,236,239,119,128,30,112,239,237,237,225,225,227,227,229,238,116,128,1,98,228,239,116,2,28,15,28,24,225,227,227,229,238,116,128,30,106,226,229,236,239,119,128,30,108,101,4,28,42,28,53,28,73,28,82,227,249,242,233,236,236,233,99,128,4,34,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,172,238,242,239,237,225,110,128,33,105,244,243,229,227,249,242,233,236,236,233,99,128,4,180,104,3,28,104,28,110,28,136,229,244,97,128,3,152,111,2,28,116,28,121,239,107,128,1,172,242,110,129,0,222,28,128,243,237,225,236,108,128,247,254,242,229,229,242,239,237,225,110,128,33,98,105,2,28,153,28,164,236,228,229,243,237,225,236,108,128,246,254,247,238,225,242,237,229,238,233,225,110,128,5,79,236,233,238,229,226,229,236,239,119,128,30,110,237,239,238,239,243,240,225,227,101,128,255,52,111,2,28,207,28,218,225,242,237,229,238,233,225,110,128,5,57,238,101,3,28,227,28,234,28,240,230,233,246,101,128,1,188,243,233,120,128,1,132,244,247,111,128,1,167,242,229,244,242,239,230,236,229,248,232,239,239,107,128,1,174,115,3,29,14,29,26,29,39,229,227,249,242,233,236,236,233,99,128,4,38,232,229,227,249,242,233,236,236,233,99,128,4,11,237,225,236,108,128,247,116,119,2,29,52,29,64,229,236,246,229,242,239,237,225,110,128,33,107,239,242,239,237,225,110,128,33,97,85,142,0,85,29,105,29,123,29,131,29,198,30,69,30,87,30,198,30,214,30,226,31,21,31,30,31,142,31,149,31,219,225,227,245,244,101,129,0,218,29,115,243,237,225,236,108,128,247,250,226,242,229,246,101,128,1,108,99,3,29,139,29,146,29,188,225,242,239,110,128,1,211,233,242,99,2,29,154,29,159,236,101,128,36,202,245,237,230,236,229,120,130,0,219,29,172,29,180,226,229,236,239,119,128,30,118,243,237,225,236,108,128,247,251,249,242,233,236,236,233,99,128,4,35,100,3,29,206,29,229,30,59,226,108,2,29,213,29,221,225,227,245,244,101,128,1,112,231,242,225,246,101,128,2,20,233,229,242,229,243,233,115,134,0,220,29,251,30,3,30,11,30,34,30,42,30,51,225,227,245,244,101,128,1,215,226,229,236,239,119,128,30,114,99,2,30,17,30,24,225,242,239,110,128,1,217,249,242,233,236,236,233,99,128,4,240,231,242,225,246,101,128,1,219,237,225,227,242,239,110,128,1,213,243,237,225,236,108,128,247,252,239,244,226,229,236,239,119,128,30,228,231,242,225,246,101,129,0,217,30,79,243,237,225,236,108,128,247,249,104,2,30,93,30,171,111,2,30,99,30,109,239,235,225,226,239,246,101,128,30,230,242,110,133,1,175,30,124,30,132,30,143,30,151,30,163,225,227,245,244,101,128,30,232,228,239,244,226,229,236,239,119,128,30,240,231,242,225,246,101,128,30,234,232,239,239,235,225,226,239,246,101,128,30,236,244,233,236,228,101,128,30,238,245,238,231,225,242,245,237,236,225,245,116,129,1,112,30,187,227,249,242,233,236,236,233,99,128,4,242,233,238,246,229,242,244,229,228,226,242,229,246,101,128,2,22,235,227,249,242,233,236,236,233,99,128,4,120,109,2,30,232,31,10,225,227,242,239,110,130,1,106,30,244,30,255,227,249,242,233,236,236,233,99,128,4,238,228,233,229,242,229,243,233,115,128,30,122,239,238,239,243,240,225,227,101,128,255,53,239,231,239,238,229,107,128,1,114,240,243,233,236,239,110,133,3,165,31,49,31,53,31,90,31,121,31,134,49,128,3,210,97,2,31,59,31,81,227,245,244,229,232,239,239,235,243,249,237,226,239,236,231,242,229,229,107,128,3,211,230,242,233,227,225,110,128,1,177,228,233,229,242,229,243,233,115,129,3,171,31,103,232,239,239,235,243,249,237,226,239,236,231,242,229,229,107,128,3,212,232,239,239,235,243,249,237,226,239,108,128,3,210,244,239,238,239,115,128,3,142,242,233,238,103,128,1,110,115,3,31,157,31,172,31,179,232,239,242,244,227,249,242,233,236,236,233,99,128,4,14,237,225,236,108,128,247,117,244,242,225,233,231,232,116,2,31,191,31,202,227,249,242,233,236,236,233,99,128,4,174,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,176,244,233,236,228,101,130,1,104,31,231,31,239,225,227,245,244,101,128,30,120,226,229,236,239,119,128,30,116,86,136,0,86,32,11,32,20,32,31,32,60,32,67,32,79,32,91,32,99,227,233,242,227,236,101,128,36,203,228,239,244,226,229,236,239,119,128,30,126,101,2,32,37,32,48,227,249,242,233,236,236,233,99,128,4,18,247,225,242,237,229,238,233,225,110,128,5,78,232,239,239,107,128,1,178,237,239,238,239,243,240,225,227,101,128,255,54,239,225,242,237,229,238,233,225,110,128,5,72,243,237,225,236,108,128,247,118,244,233,236,228,101,128,30,124,87,134,0,87,32,123,32,131,32,154,32,194,32,202,32,214,225,227,245,244,101,128,30,130,227,233,242,99,2,32,140,32,145,236,101,128,36,204,245,237,230,236,229,120,128,1,116,100,2,32,160,32,170,233,229,242,229,243,233,115,128,30,132,239,116,2,32,177,32,186,225,227,227,229,238,116,128,30,134,226,229,236,239,119,128,30,136,231,242,225,246,101,128,30,128,237,239,238,239,243,240,225,227,101,128,255,55,243,237,225,236,108,128,247,119,88,134,0,88,32,238,32,247,33,18,33,31,33,35,33,47,227,233,242,227,236,101,128,36,205,100,2,32,253,33,7,233,229,242,229,243,233,115,128,30,140,239,244,225,227,227,229,238,116,128,30,138,229,232,225,242,237,229,238,233,225,110,128,5,61,105,128,3,158,237,239,238,239,243,240,225,227,101,128,255,56,243,237,225,236,108,128,247,120,89,139,0,89,33,81,33,116,33,139,33,189,33,228,33,236,33,253,34,40,34,52,34,60,34,68,97,2,33,87,33,104,227,245,244,101,129,0,221,33,96,243,237,225,236,108,128,247,253,244,227,249,242,233,236,236,233,99,128,4,98,227,233,242,99,2,33,125,33,130,236,101,128,36,206,245,237,230,236,229,120,128,1,118,100,2,33,145,33,165,233,229,242,229,243,233,115,129,1,120,33,157,243,237,225,236,108,128,247,255,239,116,2,33,172,33,181,225,227,227,229,238,116,128,30,142,226,229,236,239,119,128,30,244,229,114,2,33,196,33,208,233,227,249,242,233,236,236,233,99,128,4,43,245,228,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,248,231,242,225,246,101,128,30,242,232,239,239,107,129,1,179,33,245,225,226,239,246,101,128,30,246,105,3,34,5,34,16,34,27,225,242,237,229,238,233,225,110,128,5,69,227,249,242,233,236,236,233,99,128,4,7,247,238,225,242,237,229,238,233,225,110,128,5,82,237,239,238,239,243,240,225,227,101,128,255,57,243,237,225,236,108,128,247,121,244,233,236,228,101,128,30,248,245,115,2,34,75,34,113,226,233,103,2,34,83,34,94,227,249,242,233,236,236,233,99,128,4,106,233,239,244,233,230,233,229,228,227,249,242,233,236,236,233,99,128,4,108,236,233,244,244,236,101,2,34,124,34,135,227,249,242,233,236,236,233,99,128,4,102,233,239,244,233,230,233,229,228,227,249,242,233,236,236,233,99,128,4,104,90,136,0,90,34,174,34,198,34,243,35,14,35,81,35,173,35,185,35,197,97,2,34,180,34,191,225,242,237,229,238,233,225,110,128,5,54,227,245,244,101,128,1,121,99,2,34,204,34,221,225,242,239,110,129,1,125,34,213,243,237,225,236,108,128,246,255,233,242,99,2,34,229,34,234,236,101,128,36,207,245,237,230,236,229,120,128,30,144,228,239,116,130,1,123,34,253,35,6,225,227,227,229,238,116,128,1,123,226,229,236,239,119,128,30,146,101,3,35,22,35,33,35,76,227,249,242,233,236,236,233,99,128,4,23,100,2,35,39,35,58,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,152,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,222,244,97,128,3,150,232,101,4,35,92,35,103,35,119,35,130,225,242,237,229,238,233,225,110,128,5,58,226,242,229,246,229,227,249,242,233,236,236,233,99,128,4,193,227,249,242,233,236,236,233,99,128,4,22,100,2,35,136,35,155,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,150,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,220,236,233,238,229,226,229,236,239,119,128,30,148,237,239,238,239,243,240,225,227,101,128,255,58,115,2,35,203,35,210,237,225,236,108,128,247,122,244,242,239,235,101,128,1,181,97,158,0,97,36,26,38,154,39,4,39,68,39,132,39,196,40,4,40,68,40,126,40,190,41,70,41,217,42,137,42,237,43,17,49,192,49,229,50,0,50,225,51,7,52,96,52,168,53,123,53,132,54,5,56,13,57,3,57,50,57,201,57,215,49,138,39,1,36,50,36,114,36,154,36,218,37,26,37,90,37,154,37,218,38,26,38,90,48,138,39,33,36,74,36,78,36,82,36,86,36,90,36,94,36,98,36,102,36,106,36,110,48,128,39,94,49,128,39,97,50,128,39,98,51,128,39,99,52,128,39,100,53,128,39,16,54,128,39,101,55,128,39,102,56,128,39,103,57,128,38,96,49,134,38,27,36,130,36,134,36,138,36,142,36,146,36,150,48,128,38,101,49,128,38,102,50,128,38,99,55,128,39,9,56,128,39,8,57,128,39,7,50,138,38,30,36,178,36,182,36,186,36,190,36,194,36,198,36,202,36,206,36,210,36,214,48,128,36,96,49,128,36,97,50,128,36,98,51,128,36,99,52,128,36,100,53,128,36,101,54,128,36,102,55,128,36,103,56,128,36,104,57,128,36,105,51,138,39,12,36,242,36,246,36,250,36,254,37,2,37,6,37,10,37,14,37,18,37,22,48,128,39,118,49,128,39,119,50,128,39,120,51,128,39,121,52,128,39,122,53,128,39,123,54,128,39,124,55,128,39,125,56,128,39,126,57,128,39,127,52,138,39,13,37,50,37,54,37,58,37,62,37,66,37,70,37,74,37,78,37,82,37,86,48,128,39,128,49,128,39,129,50,128,39,130,51,128,39,131,52,128,39,132,53,128,39,133,54,128,39,134,55,128,39,135,56,128,39,136,57,128,39,137,53,138,39,14,37,114,37,118,37,122,37,126,37,130,37,134,37,138,37,142,37,146,37,150,48,128,39,138,49,128,39,139,50,128,39,140,51,128,39,141,52,128,39,142,53,128,39,143,54,128,39,144,55,128,39,145,56,128,39,146,57,128,39,147,54,138,39,15,37,178,37,182,37,186,37,190,37,194,37,198,37,202,37,206,37,210,37,214,48,128,39,148,49,128,33,146,50,128,39,163,51,128,33,148,52,128,33,149,53,128,39,153,54,128,39,155,55,128,39,156,56,128,39,157,57,128,39,158,55,138,39,17,37,242,37,246,37,250,37,254,38,2,38,6,38,10,38,14,38,18,38,22,48,128,39,159,49,128,39,160,50,128,39,161,51,128,39,162,52,128,39,164,53,128,39,165,54,128,39,166,55,128,39,167,56,128,39,168,57,128,39,169,56,138,39,18,38,50,38,54,38,58,38,62,38,66,38,70,38,74,38,78,38,82,38,86,48,128,39,171,49,128,39,173,50,128,39,175,51,128,39,178,52,128,39,179,53,128,39,181,54,128,39,184,55,128,39,186,56,128,39,187,57,128,39,188,57,138,39,19,38,114,38,118,38,122,38,126,38,130,38,134,38,138,38,142,38,146,38,150,48,128,39,189,49,128,39,190,50,128,39,154,51,128,39,170,52,128,39,182,53,128,39,185,54,128,39,152,55,128,39,180,56,128,39,183,57,128,39,172,50,138,39,2,38,178,38,224,38,228,38,232,38,236,38,240,38,244,38,248,38,252,39,0,48,135,39,20,38,196,38,200,38,204,38,208,38,212,38,216,38,220,48,128,39,174,49,128,39,177,50,128,39,3,51,128,39,80,52,128,39,82,53,128,39,110,54,128,39,112,49,128,39,21,50,128,39,22,51,128,39,23,52,128,39,24,53,128,39,25,54,128,39,26,55,128,39,27,56,128,39,28,57,128,39,34,51,138,39,4,39,28,39,32,39,36,39,40,39,44,39,48,39,52,39,56,39,60,39,64,48,128,39,35,49,128,39,36,50,128,39,37,51,128,39,38,52,128,39,39,53,128,38,5,54,128,39,41,55,128,39,42,56,128,39,43,57,128,39,44,52,138,38,14,39,92,39,96,39,100,39,104,39,108,39,112,39,116,39,120,39,124,39,128,48,128,39,45,49,128,39,46,50,128,39,47,51,128,39,48,52,128,39,49,53,128,39,50,54,128,39,51,55,128,39,52,56,128,39,53,57,128,39,54,53,138,39,6,39,156,39,160,39,164,39,168,39,172,39,176,39,180,39,184,39,188,39,192,48,128,39,55,49,128,39,56,50,128,39,57,51,128,39,58,52,128,39,59,53,128,39,60,54,128,39,61,55,128,39,62,56,128,39,63,57,128,39,64,54,138,39,29,39,220,39,224,39,228,39,232,39,236,39,240,39,244,39,248,39,252,40,0,48,128,39,65,49,128,39,66,50,128,39,67,51,128,39,68,52,128,39,69,53,128,39,70,54,128,39,71,55,128,39,72,56,128,39,73,57,128,39,74,55,138,39,30,40,28,40,32,40,36,40,40,40,44,40,48,40,52,40,56,40,60,40,64,48,128,39,75,49,128,37,207,50,128,39,77,51,128,37,160,52,128,39,79,53,128,39,81,54,128,37,178,55,128,37,188,56,128,37,198,57,128,39,86,56,137,39,31,40,90,40,94,40,98,40,102,40,106,40,110,40,114,40,118,40,122,49,128,37,215,50,128,39,88,51,128,39,89,52,128,39,90,53,128,39,111,54,128,39,113,55,128,39,114,56,128,39,115,57,128,39,104,57,138,39],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+30721);allocate([32,40,150,40,154,40,158,40,162,40,166,40,170,40,174,40,178,40,182,40,186,48,128,39,105,49,128,39,108,50,128,39,109,51,128,39,106,52,128,39,107,53,128,39,116,54,128,39,117,55,128,39,91,56,128,39,92,57,128,39,93,97,7,40,206,40,216,40,223,40,230,40,255,41,15,41,26,226,229,238,231,225,236,105,128,9,134,227,245,244,101,128,0,225,228,229,246,97,128,9,6,231,117,2,40,237,40,246,234,225,242,225,244,105,128,10,134,242,237,245,235,232,105,128,10,6,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,62,242,245,243,241,245,225,242,101,128,51,3,246,239,247,229,236,243,233,231,110,3,41,42,41,52,41,59,226,229,238,231,225,236,105,128,9,190,228,229,246,97,128,9,62,231,245,234,225,242,225,244,105,128,10,190,98,4,41,80,41,121,41,130,41,140,226,242,229,246,233,225,244,233,239,110,2,41,95,41,110,237,225,242,235,225,242,237,229,238,233,225,110,128,5,95,243,233,231,238,228,229,246,97,128,9,112,229,238,231,225,236,105,128,9,133,239,240,239,237,239,230,111,128,49,26,242,229,246,101,134,1,3,41,159,41,167,41,178,41,189,41,197,41,209,225,227,245,244,101,128,30,175,227,249,242,233,236,236,233,99,128,4,209,228,239,244,226,229,236,239,119,128,30,183,231,242,225,246,101,128,30,177,232,239,239,235,225,226,239,246,101,128,30,179,244,233,236,228,101,128,30,181,99,4,41,227,41,234,42,57,42,127,225,242,239,110,128,1,206,233,242,99,2,41,242,41,247,236,101,128,36,208,245,237,230,236,229,120,133,0,226,42,10,42,18,42,29,42,37,42,49,225,227,245,244,101,128,30,165,228,239,244,226,229,236,239,119,128,30,173,231,242,225,246,101,128,30,167,232,239,239,235,225,226,239,246,101,128,30,169,244,233,236,228,101,128,30,171,245,244,101,133,0,180,42,73,42,84,42,101,42,108,42,117,226,229,236,239,247,227,237,98,128,3,23,99,2,42,90,42,95,237,98,128,3,1,239,237,98,128,3,1,228,229,246,97,128,9,84,236,239,247,237,239,100,128,2,207,244,239,238,229,227,237,98,128,3,65,249,242,233,236,236,233,99,128,4,48,100,5,42,149,42,159,42,173,42,179,42,213,226,236,231,242,225,246,101,128,2,1,228,225,235,231,245,242,237,245,235,232,105,128,10,113,229,246,97,128,9,5,233,229,242,229,243,233,115,130,0,228,42,193,42,204,227,249,242,233,236,236,233,99,128,4,211,237,225,227,242,239,110,128,1,223,239,116,2,42,220,42,228,226,229,236,239,119,128,30,161,237,225,227,242,239,110,128,1,225,101,131,0,230,42,247,42,255,43,8,225,227,245,244,101,128,1,253,235,239,242,229,225,110,128,49,80,237,225,227,242,239,110,128,1,227,230,233,105,6,43,33,43,53,45,246,45,252,46,11,49,111,48,2,43,39,43,46,176,178,176,56,128,32,21,184,185,180,49,128,32,164,177,48,3,43,62,45,86,45,221,48,9,43,82,43,102,43,164,43,226,44,32,44,94,44,156,44,218,45,24,49,3,43,90,43,94,43,98,55,128,4,16,56,128,4,17,57,128,4,18,50,10,43,124,43,128,43,132,43,136,43,140,43,144,43,148,43,152,43,156,43,160,48,128,4,19,49,128,4,20,50,128,4,21,51,128,4,1,52,128,4,22,53,128,4,23,54,128,4,24,55,128,4,25,56,128,4,26,57,128,4,27,51,10,43,186,43,190,43,194,43,198,43,202,43,206,43,210,43,214,43,218,43,222,48,128,4,28,49,128,4,29,50,128,4,30,51,128,4,31,52,128,4,32,53,128,4,33,54,128,4,34,55,128,4,35,56,128,4,36,57,128,4,37,52,10,43,248,43,252,44,0,44,4,44,8,44,12,44,16,44,20,44,24,44,28,48,128,4,38,49,128,4,39,50,128,4,40,51,128,4,41,52,128,4,42,53,128,4,43,54,128,4,44,55,128,4,45,56,128,4,46,57,128,4,47,53,10,44,54,44,58,44,62,44,66,44,70,44,74,44,78,44,82,44,86,44,90,48,128,4,144,49,128,4,2,50,128,4,3,51,128,4,4,52,128,4,5,53,128,4,6,54,128,4,7,55,128,4,8,56,128,4,9,57,128,4,10,54,10,44,116,44,120,44,124,44,128,44,132,44,136,44,140,44,144,44,148,44,152,48,128,4,11,49,128,4,12,50,128,4,14,51,128,246,196,52,128,246,197,53,128,4,48,54,128,4,49,55,128,4,50,56,128,4,51,57,128,4,52,55,10,44,178,44,182,44,186,44,190,44,194,44,198,44,202,44,206,44,210,44,214,48,128,4,53,49,128,4,81,50,128,4,54,51,128,4,55,52,128,4,56,53,128,4,57,54,128,4,58,55,128,4,59,56,128,4,60,57,128,4,61,56,10,44,240,44,244,44,248,44,252,45,0,45,4,45,8,45,12,45,16,45,20,48,128,4,62,49,128,4,63,50,128,4,64,51,128,4,65,52,128,4,66,53,128,4,67,54,128,4,68,55,128,4,69,56,128,4,70,57,128,4,71,57,10,45,46,45,50,45,54,45,58,45,62,45,66,45,70,45,74,45,78,45,82,48,128,4,72,49,128,4,73,50,128,4,74,51,128,4,75,52,128,4,76,53,128,4,77,54,128,4,78,55,128,4,79,56,128,4,145,57,128,4,82,49,4,45,96,45,158,45,163,45,189,48,10,45,118,45,122,45,126,45,130,45,134,45,138,45,142,45,146,45,150,45,154,48,128,4,83,49,128,4,84,50,128,4,85,51,128,4,86,52,128,4,87,53,128,4,88,54,128,4,89,55,128,4,90,56,128,4,91,57,128,4,92,177,48,128,4,94,52,4,45,173,45,177,45,181,45,185,53,128,4,15,54,128,4,98,55,128,4,114,56,128,4,116,57,5,45,201,45,205,45,209,45,213,45,217,50,128,246,198,51,128,4,95,52,128,4,99,53,128,4,115,54,128,4,117,56,2,45,227,45,241,51,2,45,233,45,237,49,128,246,199,50,128,246,200,180,54,128,4,217,178,185,57,128,32,14,179,48,2,46,3,46,7,48,128,32,15,49,128,32,13,181,55,7,46,28,46,98,47,163,47,240,48,197,49,34,49,105,51,2,46,34,46,48,56,2,46,40,46,44,49,128,6,106,56,128,6,12,57,8,46,66,46,70,46,74,46,78,46,82,46,86,46,90,46,94,50,128,6,96,51,128,6,97,52,128,6,98,53,128,6,99,54,128,6,100,55,128,6,101,56,128,6,102,57,128,6,103,52,7,46,114,46,146,46,208,47,14,47,46,47,102,47,158,48,5,46,126,46,130,46,134,46,138,46,142,48,128,6,104,49,128,6,105,51,128,6,27,55,128,6,31,57,128,6,33,49,10,46,168,46,172,46,176,46,180,46,184,46,188,46,192,46,196,46,200,46,204,48,128,6,34,49,128,6,35,50,128,6,36,51,128,6,37,52,128,6,38,53,128,6,39,54,128,6,40,55,128,6,41,56,128,6,42,57,128,6,43,50,10,46,230,46,234,46,238,46,242,46,246,46,250,46,254,47,2,47,6,47,10,48,128,6,44,49,128,6,45,50,128,6,46,51,128,6,47,52,128,6,48,53,128,6,49,54,128,6,50,55,128,6,51,56,128,6,52,57,128,6,53,51,5,47,26,47,30,47,34,47,38,47,42,48,128,6,54,49,128,6,55,50,128,6,56,51,128,6,57,52,128,6,58,52,9,47,66,47,70,47,74,47,78,47,82,47,86,47,90,47,94,47,98,48,128,6,64,49,128,6,65,50,128,6,66,51,128,6,67,52,128,6,68,53,128,6,69,54,128,6,70,56,128,6,72,57,128,6,73,53,9,47,122,47,126,47,130,47,134,47,138,47,142,47,146,47,150,47,154,48,128,6,74,49,128,6,75,50,128,6,76,51,128,6,77,52,128,6,78,53,128,6,79,54,128,6,80,55,128,6,81,56,128,6,82,183,48,128,6,71,53,3,47,171,47,203,47,235,48,5,47,183,47,187,47,191,47,195,47,199,53,128,6,164,54,128,6,126,55,128,6,134,56,128,6,152,57,128,6,175,49,5,47,215,47,219,47,223,47,227,47,231,49,128,6,121,50,128,6,136,51,128,6,145,52,128,6,186,57,128,6,210,179,52,128,6,213,54,7,48,0,48,5,48,10,48,15,48,53,48,115,48,177,179,54,128,32,170,180,53,128,5,190,181,56,128,5,195,54,6,48,29,48,33,48,37,48,41,48,45,48,49,52,128,5,208,53,128,5,209,54,128,5,210,55,128,5,211,56,128,5,212,57,128,5,213,55,10,48,75,48,79,48,83,48,87,48,91,48,95,48,99,48,103,48,107,48,111,48,128,5,214,49,128,5,215,50,128,5,216,51,128,5,217,52,128,5,218,53,128,5,219,54,128,5,220,55,128,5,221,56,128,5,222,57,128,5,223,56,10,48,137,48,141,48,145,48,149,48,153,48,157,48,161,48,165,48,169,48,173,48,128,5,224,49,128,5,225,50,128,5,226,51,128,5,227,52,128,5,228,53,128,5,229,54,128,5,230,55,128,5,231,56,128,5,232,57,128,5,233,57,3,48,185,48,189,48,193,48,128,5,234,52,128,251,42,53,128,251,43,55,4,48,207,48,221,48,241,48,246,48,2,48,213,48,217,48,128,251,75,53,128,251,31,49,3,48,229,48,233,48,237,54,128,5,240,55,128,5,241,56,128,5,242,178,51,128,251,53,57,7,49,6,49,10,49,14,49,18,49,22,49,26,49,30,51,128,5,180,52,128,5,181,53,128,5,182,54,128,5,187,55,128,5,184,56,128,5,183,57,128,5,176,56,3,49,42,49,86,49,91,48,7,49,58,49,62,49,66,49,70,49,74,49,78,49,82,48,128,5,178,49,128,5,177,50,128,5,179,51,128,5,194,52,128,5,193,54,128,5,185,55,128,5,188,179,57,128,5,189,52,2,49,97,49,101,49,128,5,191,50,128,5,192,185,178,57,128,2,188,54,3,49,119,49,178,49,185,49,4,49,129,49,145,49,151,49,172,50,2,49,135,49,140,180,56,128,33,5,184,57,128,33,19,179,181,50,128,33,22,181,55,3,49,160,49,164,49,168,51,128,32,44,52,128,32,45,53,128,32,46,182,182,52,128,32,12,179,177,182,55,128,6,109,180,185,179,55,128,2,189,103,2,49,198,49,205,242,225,246,101,128,0,224,117,2,49,211,49,220,234,225,242,225,244,105,128,10,133,242,237,245,235,232,105,128,10,5,104,2,49,235,49,245,233,242,225,231,225,238,97,128,48,66,239,239,235,225,226,239,246,101,128,30,163,105,7,50,16,50,41,50,48,50,60,50,85,50,101,50,181,98,2,50,22,50,31,229,238,231,225,236,105,128,9,144,239,240,239,237,239,230,111,128,49,30,228,229,246,97,128,9,16,229,227,249,242,233,236,236,233,99,128,4,213,231,117,2,50,67,50,76,234,225,242,225,244,105,128,10,144,242,237,245,235,232,105,128,10,16,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,72,110,5,50,113,50,122,50,136,50,152,50,167,225,242,225,226,233,99,128,6,57,230,233,238,225,236,225,242,225,226,233,99,128,254,202,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,203,237,229,228,233,225,236,225,242,225,226,233,99,128,254,204,246,229,242,244,229,228,226,242,229,246,101,128,2,3,246,239,247,229,236,243,233,231,110,3,50,197,50,207,50,214,226,229,238,231,225,236,105,128,9,200,228,229,246,97,128,9,72,231,245,234,225,242,225,244,105,128,10,200,107,2,50,231,50,255,225,244,225,235,225,238,97,129,48,162,50,243,232,225,236,230,247,233,228,244,104,128,255,113,239,242,229,225,110,128,49,79,108,3,51,15,52,71,52,80,101,2,51,21,52,66,102,136,5,208,51,41,51,50,51,65,51,79,51,168,51,182,52,37,52,51,225,242,225,226,233,99,128,6,39,228,225,231,229,243,232,232,229,226,242,229,119,128,251,48,230,233,238,225,236,225,242,225,226,233,99,128,254,142,104,2,51,85,51,160,225,237,250,97,2,51,94,51,127,225,226,239,246,101,2,51,104,51,113,225,242,225,226,233,99,128,6,35,230,233,238,225,236,225,242,225,226,233,99,128,254,132,226,229,236,239,119,2,51,137,51,146,225,242,225,226,233,99,128,6,37,230,233,238,225,236,225,242,225,226,233,99,128,254,136,229,226,242,229,119,128,5,208,236,225,237,229,228,232,229,226,242,229,119,128,251,79,237,97,2,51,189,51,225,228,228,225,225,226,239,246,101,2,51,202,51,211,225,242,225,226,233,99,128,6,34,230,233,238,225,236,225,242,225,226,233,99,128,254,130,235,243,245,242,97,4,51,239,51,248,52,6,52,22,225,242,225,226,233,99,128,6,73,230,233,238,225,236,225,242,225,226,233,99,128,254,240,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,243,237,229,228,233,225,236,225,242,225,226,233,99,128,254,244,240,225,244,225,232,232,229,226,242,229,119,128,251,46,241,225,237,225,244,243,232,229,226,242,229,119,128,251,47,240,104,128,33,53,236,229,241,245,225,108,128,34,76,240,232,97,129,3,177,52,88,244,239,238,239,115,128,3,172,109,4,52,106,52,114,52,125,52,159,225,227,242,239,110,128,1,1,239,238,239,243,240,225,227,101,128,255,65,240,229,242,243,225,238,100,130,0,38,52,139,52,151,237,239,238,239,243,240,225,227,101,128,255,6,243,237,225,236,108,128,247,38,243,241,245,225,242,101,128,51,194,110,4,52,178,52,189,53,55,53,65,226,239,240,239,237,239,230,111,128,49,34,103,4,52,199,52,210,52,224,53,47,226,239,240,239,237,239,230,111,128,49,36,235,232,225,238,235,232,245,244,232,225,105,128,14,90,236,101,131,34,32,52,235,53,32,53,39,226,242,225,227,235,229,116,2,52,247,53,11,236,229,230,116,129,48,8,53,0,246,229,242,244,233,227,225,108,128,254,63,242,233,231,232,116,129,48,9,53,21,246,229,242,244,233,227,225,108,128,254,64,236,229,230,116,128,35,41,242,233,231,232,116,128,35,42,243,244,242,239,109,128,33,43,239,244,229,236,229,233,97,128,3,135,117,2,53,71,53,83,228,225,244,244,225,228,229,246,97,128,9,82,243,246,225,242,97,3,53,95,53,105,53,112,226,229,238,231,225,236,105,128,9,130,228,229,246,97,128,9,2,231,245,234,225,242,225,244,105,128,10,130,239,231,239,238,229,107,128,1,5,112,3,53,140,53,164,53,194,97,2,53,146,53,158,225,244,239,243,241,245,225,242,101,128,51,0,242,229,110,128,36,156,239,243,244,242,239,240,232,101,2,53,177,53,188,225,242,237,229,238,233,225,110,128,5,90,237,239,100,128,2,188,112,2,53,200,53,205,236,101,128,248,255,242,111,2,53,212,53,220,225,227,232,229,115,128,34,80,120,2,53,226,53,246,229,241,245,225,108,129,34,72,53,236,239,242,233,237,225,231,101,128,34,82,233,237,225,244,229,236,249,229,241,245,225,108,128,34,69,114,4,54,15,54,42,54,46,54,91,225,229,97,2,54,23,54,33,229,235,239,242,229,225,110,128,49,142,235,239,242,229,225,110,128,49,141,99,128,35,18,105,2,54,52,54,66,231,232,244,232,225,236,230,242,233,238,103,128,30,154,238,103,130,0,229,54,75,54,83,225,227,245,244,101,128,1,251,226,229,236,239,119,128,30,1,242,239,119,8,54,111,54,118,54,247,55,57,55,107,55,162,55,185,56,4,226,239,244,104,128,33,148,100,3,54,126,54,165,54,212,225,243,104,4,54,138,54,145,54,152,54,160,228,239,247,110,128,33,227,236,229,230,116,128,33,224,242,233,231,232,116,128,33,226,245,112,128,33,225,226,108,5,54,178,54,185,54,192,54,199,54,207,226,239,244,104,128,33,212,228,239,247,110,128,33,211,236,229,230,116,128,33,208,242,233,231,232,116,128,33,210,245,112,128,33,209,239,247,110,131,33,147,54,224,54,231,54,239,236,229,230,116,128,33,153,242,233,231,232,116,128,33,152,247,232,233,244,101,128,33,233,104,2,54,253,55,48,229,225,100,4,55,9,55,19,55,29,55,40,228,239,247,238,237,239,100,128,2,197,236,229,230,244,237,239,100,128,2,194,242,233,231,232,244,237,239,100,128,2,195,245,240,237,239,100,128,2,196,239,242,233,250,229,120,128,248,231,236,229,230,116,131,33,144,55,70,55,87,55,99,228,226,108,129,33,208,55,78,243,244,242,239,235,101,128,33,205,239,246,229,242,242,233,231,232,116,128,33,198,247,232,233,244,101,128,33,230,242,233,231,232,116,132,33,146,55,123,55,135,55,143,55,154,228,226,236,243,244,242,239,235,101,128,33,207,232,229,225,246,121,128,39,158,239,246,229,242,236,229,230,116,128,33,196,247,232,233,244,101,128,33,232,244,225,98,2,55,170,55,177,236,229,230,116,128,33,228,242,233,231,232,116,128,33,229,245,112,132,33,145,55,198,55,226,55,244,55,252,100,2,55,204,55,216,110,129,33,149,55,210,226,243,101,128,33,168,239,247,238,226,225,243,101,128,33,168,236,229,230,116,129,33,150,55,235,239,230,228,239,247,110,128,33,197,242,233,231,232,116,128,33,151,247,232,233,244,101,128,33,231,246,229,242,244,229,120,128,248,230,115,5,56,25,56,101,56,146,56,229,56,239,99,2,56,31,56,83,233,105,2,56,38,56,61,227,233,242,227,245,109,129,0,94,56,49,237,239,238,239,243,240,225,227,101,128,255,62,244,233,236,228,101,129,0,126,56,71,237,239,238,239,243,240,225,227,101,128,255,94,242,233,240,116,129,2,81,56,92,244,245,242,238,229,100,128,2,82,237,225,236,108,2,56,110,56,121,232,233,242,225,231,225,238,97,128,48,65,235,225,244,225,235,225,238,97,129,48,161,56,134,232,225,236,230,247,233,228,244,104,128,255,103,244,229,242,233,115,2,56,156,56,225,107,131,0,42,56,166,56,194,56,217,97,2,56,172,56,186,236,244,239,238,229,225,242,225,226,233,99,128,6,109,242,225,226,233,99,128,6,109,109,2,56,200,56,206,225,244,104,128,34,23,239,238,239,243,240,225,227,101,128,255,10,243,237,225,236,108,128,254,97,109,128,32,66,245,240,229,242,233,239,114,128,246,233,249,237,240,244,239,244,233,227,225,236,236,249,229,241,245,225,108,128,34,67,116,132,0,64,57,15,57,22,57,34,57,42,233,236,228,101,128,0,227,237,239,238,239,243,240,225,227,101,128,255,32,243,237,225,236,108,128,254,107,245,242,238,229,100,128,2,80,117,6,57,64,57,89,57,96,57,121,57,141,57,157,98,2,57,70,57,79,229,238,231,225,236,105,128,9,148,239,240,239,237,239,230,111,128,49,32,228,229,246,97,128,9,20,231,117,2,57,103,57,112,234,225,242,225,244,105,128,10,148,242,237,245,235,232,105,128,10,20,236,229,238,231,244,232,237,225,242,235,226,229,238,231,225,236,105,128,9,215,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,76,246,239,247,229,236,243,233,231,110,3,57,173,57,183,57,190,226,229,238,231,225,236,105,128,9,204,228,229,246,97,128,9,76,231,245,234,225,242,225,244,105,128,10,204,246,225,231,242,225,232,225,228,229,246,97,128,9,61,121,2,57,221,57,233,226,225,242,237,229,238,233,225,110,128,5,97,233,110,130,5,226,57,242,58,1,225,236,244,239,238,229,232,229,226,242,229,119,128,251,32,232,229,226,242,229,119,128,5,226,98,144,0,98,58,46,58,181,58,192,58,201,58,226,60,11,60,73,60,146,62,72,62,84,62,127,62,135,62,145,64,15,64,39,64,48,97,7,58,62,58,72,58,96,58,103,58,128,58,152,58,163,226,229,238,231,225,236,105,128,9,172,227,235,243,236,225,243,104,129,0,92,58,84,237,239,238,239,243,240,225,227,101,128,255,60,228,229,246,97,128,9,44,231,117,2,58,110,58,119,234,225,242,225,244,105,128,10,172,242,237,245,235,232,105,128,10,44,104,2,58,134,58,144,233,242,225,231,225,238,97,128,48,112,244,244,232,225,105,128,14,63,235,225,244,225,235,225,238,97,128,48,208,114,129,0,124,58,169,237,239,238,239,243,240,225,227,101,128,255,92,226,239,240,239,237,239,230,111,128,49,5,227,233,242,227,236,101,128,36,209,228,239,116,2,58,209,58,218,225,227,227,229,238,116,128,30,3,226,229,236,239,119,128,30,5,101,6,58,240,59,5,59,28,59,170,59,181,59,193,225,237,229,228,243,233,248,244,229,229,238,244,232,238,239,244,229,115,128,38,108,99,2,59,11,59,18,225,245,243,101,128,34,53,249,242,233,236,236,233,99,128,4,49,104,5,59,40,59,49,59,63,59,93,59,152,225,242,225,226,233,99,128,6,40,230,233,238,225,236,225,242,225,226,233,99,128,254,144,105,2,59,69,59,84,238,233,244,233,225,236,225,242,225,226,233,99,128,254,145,242,225,231,225,238,97,128,48,121,237,101,2,59,100,59,113,228,233,225,236,225,242,225,226,233,99,128,254,146,229,237,105,2,59,121,59,136,238,233,244,233,225,236,225,242,225,226,233,99,128,252,159,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,8,238,239,239,238,230,233,238,225,236,225,242,225,226,233,99,128,252,109,235,225,244,225,235,225,238,97,128,48,217,238,225,242,237,229,238,233,225,110,128,5,98,116,132,5,209,59,205,59,225,59,245,59,254,97,129,3,178,59,211,243,249,237,226,239,236,231,242,229,229,107,128,3,208,228,225,231,229,243,104,129,251,49,59,236,232,229,226,242,229,119,128,251,49,232,229,226,242,229,119,128,5,209,242,225,230,229,232,229,226,242,229,119,128,251,76,104,2,60,17,60,67,97,3,60,25,60,35,60,42,226,229,238,231,225,236,105,128,9,173,228,229,246,97,128,9,45,231,117,2,60,49,60,58,234,225,242,225,244,105,128,10,173,242,237,245,235,232,105,128,10,45,239,239,107,128,2,83,105,5,60,85,60,96,60,107,60,121,60,135,232,233,242,225,231,225,238,97,128,48,115,235,225,244,225,235,225,238,97,128,48,211,236,225,226,233,225,236,227,236,233,227,107,128,2,152,238,228,233,231,245,242,237,245,235,232,105,128,10,2,242,245,243,241,245,225,242,101,128,51,49,108,3,60,154,62,55,62,66,97,2,60,160,62,50,227,107,6,60,175,60,184,60,221,61,114,61,169,61,221,227,233,242,227,236,101,128,37,207,100,2,60,190,60,199,233,225,237,239,238,100,128,37,198,239,247,238,240,239,233,238,244,233,238,231,244,242,233,225,238,231,236,101,128,37,188,108,2,60,227,61,74,101,2,60,233,61,13,230,244,240,239,233,238,244,233,238,103,2,60,248,61,2,240,239,233,238,244,229,114,128,37,196,244,242,233,225,238,231,236,101,128,37,192,238,244,233,227,245,236,225,242,226,242,225,227,235,229,116,2,61,33,61,53,236,229,230,116,129,48,16,61,42,246,229,242,244,233,227,225,108,128,254,59,242,233,231,232,116,129,48,17,61,63,246,229,242,244,233,227,225,108,128,254,60,239,247,229,114,2,61,83,61,98,236,229,230,244,244,242,233,225,238,231,236,101,128,37,227,242,233,231,232,244,244,242,233,225,238,231,236,101,128,37,226,114,2,61,120,61,131,229,227,244,225,238,231,236,101,128,37,172,233,231,232,244,240,239,233,238,244,233,238,103,2,61,148,61,158,240,239,233,238,244,229,114,128,37,186,244,242,233,225,238,231,236,101,128,37,182,115,3,61,177,61,207,61,215,109,2,61,183,61,195,225,236,236,243,241,245,225,242,101,128,37,170,233,236,233,238,231,230,225,227,101,128,38,59,241,245,225,242,101,128,37,160,244,225,114,128,38,5,245,240,112,2,61,229,62,11,229,114,2,61,236,61,251,236,229,230,244,244,242,233,225,238,231,236,101,128,37,228,242,233,231,232,244,244,242,233,225,238,231,236,101,128,37,229,239,233,238,244,233,238,103,2,62,23,62,39,243,237,225,236,236,244,242,233,225,238,231,236,101,128,37,180,244,242,233,225,238,231,236,101,128,37,178,238,107,128,36,35,233,238,229,226,229,236,239,119,128,30,7,239,227,107,128,37,136,237,239,238,239,243,240,225,227,101,128,255,66,111,3,62,92,62,105,62,116,226,225,233,237,225,233,244,232,225,105,128,14,26,232,233,242,225,231,225,238,97,128,48,124,235,225,244,225,235,225,238,97,128,48,220,240,225,242,229,110,128,36,157,241,243,241,245,225,242,101,128,51,195,114,4,62,155,63,149,63,222,64,5,225,99,2,62,162,63,56,101,3,62,170,62,175,62,243,229,120,128,248,244,236,229,230,116,133,0,123,62,192,62,197,62,219,62,227,62,232,226,116,128,248,243,109,2,62,203,62,208,233,100,128,248,242,239,238,239,243,240,225,227,101,128,255,91,243,237,225,236,108,128,254,91,244,112,128,248,241,246,229,242,244,233,227,225,108,128,254,55,242,233,231,232,116,133,0,125,63,5,63,10,63,32,63,40,63,45,226,116,128,248,254,109,2,63,16,63,21,233,100,128,248,253,239,238,239,243,240,225,227,101,128,255,93,243,237,225,236,108,128,254,92,244,112,128,248,252,246,229,242,244,233,227,225,108,128,254,56,235,229,116,2,63,64,63,106,236,229,230,116,132,0,91,63,79,63,84,63,89,63,101,226,116,128,248,240,229,120,128,248,239,237,239,238,239,243,240,225,227,101,128,255,59,244,112,128,248,238,242,233,231,232,116,132,0,93,63,122,63,127,63,132,63,144,226,116,128,248,251,229,120,128,248,250,237,239,238,239,243,240,225,227,101,128,255,61,244,112,128,248,249,229,246,101,131,2,216,63,161,63,172,63,178,226,229,236,239,247,227,237,98,128,3,46,227,237,98,128,3,6,233,238,246,229,242,244,229,100,3,63,193,63,204,63,210,226,229,236,239,247,227,237,98,128,3,47,227,237,98,128,3,17,228,239,245,226,236,229,227,237,98,128,3,97,233,228,231,101,2,63,231,63,242,226,229,236,239,247,227,237,98,128,3,42,233,238,246,229,242,244,229,228,226,229,236,239,247,227,237,98,128,3,58,239,235,229,238,226,225,114,128,0,166,115,2,64,21,64,29,244,242,239,235,101,128,1,128,245,240,229,242,233,239,114,128,246,234,244,239,240,226,225,114,128,1,131,117,3,64,56,64,67,64,78,232,233,242,225,231,225,238,97,128,48,118,235,225,244,225,235,225,238,97,128,48,214,236,108,2,64,85,64,115,229,116,130,32,34,64,94,64,104,233,238,246,229,242,243,101,128,37,216,239,240,229,242,225,244,239,114,128,34,25,243,229,249,101,128,37,206,99,143,0,99,64,156,65,105,65,116,65,180,65,211,66,48,67,215,68,199,69,43,69,92,72,84,72,92,72,102,72,114,72,147,97,9,64,176,64,187,64,197,64,204,64,211,64,236,64,246,65,42,65,51,225,242,237,229,238,233,225,110,128,5,110,226,229,238,231,225,236,105,128,9,154,227,245,244,101,128,1,7,228,229,246,97,128,9,26,231,117,2,64,218,64,227,234,225,242,225,244,105,128,10,154,242,237,245,235,232,105,128,10,26,236,243,241,245,225,242,101,128,51,136,238,228,242,225,226,233,238,228,117,4,65,8,65,18,65,24,65,31,226,229,238,231,225,236,105,128,9,129,227,237,98,128,3,16,228,229,246,97,128,9,1,231,245,234,225,242,225,244,105,128,10,129,240,243,236,239,227,107,128,33,234,114,3,65,59,65,65,65,91,229,239,102,128,33,5,239,110,130,2,199,65,74,65,85,226,229,236,239,247,227,237,98,128,3,44,227,237,98,128,3,12,242,233,225,231,229,242,229,244,245,242,110,128,33,181,226,239,240,239,237,239,230,111,128,49,24,99,4,65,126,65,133,65,152,65,174,225,242,239,110,128,1,13,229,228,233,236,236,97,129,0,231,65,144,225,227,245,244,101,128,30,9,233,242,99,2,65,160,65,165,236,101,128,36,210,245,237,230,236,229,120,128,1,9,245,242,108,128,2,85,100,2,65,186,65,202,239,116,129,1,11,65,193,225,227,227,229,238,116,128,1,11,243,241,245,225,242,101,128,51,197,101,2,65,217,65,233,228,233,236,236,97,129,0,184,65,227,227,237,98,128,3,39,238,116,132,0,162,65,246,66,14,66,26,66,37,105,2,65,252,66,4,231,242,225,228,101,128,33,3,238,230,229,242,233,239,114,128,246,223,237,239,238,239,243,240,225,227,101,128,255,224,239,236,228,243,244,249,236,101,128,247,162,243,245,240,229,242,233,239,114,128,246,224,104,5,66,60,66,123,66,134,67,62,67,154,97,4,66,70,66,81,66,91,66,98,225,242,237,229,238,233,225,110,128,5,121,226,229,238,231,225,236,105,128,9,155,228,229,246,97,128,9,27,231,117,2,66,105,66,114,234,225,242,225,244,105,128,10,155,242,237,245,235,232,105,128,10,27,226,239,240,239,237,239,230,111,128,49,20,101,6,66,148,66,168,66,192,67,4,67,16,67,37,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,189,99,2,66,174,66,182,235,237,225,242,107,128,39,19,249,242,233,236,236,233,99,128,4,71,100,2,66,198,66,242,229,243,227,229,238,228,229,114,2,66,211,66,231,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,191,227,249,242,233,236,236,233,99,128,4,183,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,245,232,225,242,237,229,238,233,225,110,128,5,115,235,232,225,235,225,243,243,233,225,238,227,249,242,233,236,236,233,99,128,4,204,246,229,242,244,233,227,225,236,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,185,105,129,3,199,67,68,229,245,227,104,4,67,81,67,116,67,131,67,140,97,2,67,87,67,102,227,233,242,227,236,229,235,239,242,229,225,110,128,50,119,240,225,242,229,238,235,239,242,229,225,110,128,50,23,227,233,242,227,236,229,235,239,242,229,225,110,128,50,105,235,239,242,229,225,110,128,49,74,240,225,242,229,238,235,239,242,229,225,110,128,50,9,111,2,67,160,67,210,227,104,3,67,169,67,191,67,201,225,110,2,67,176,67,184,231,244,232,225,105,128,14,10,244,232,225,105,128,14,8,233,238,231,244,232,225,105,128,14,9,239,229,244,232,225,105,128,14,12,239,107,128,1,136,105,2,67,221,68,67,229,245,99,5,67,235,68,14,68,29,68,38,68,52,97,2,67,241,68,0,227,233,242,227,236,229,235,239,242,229,225,110,128,50,118,240,225,242,229,238,235,239,242,229,225,110,128,50,22,227,233,242,227,236,229,235,239,242,229,225,110,128,50,104,235,239,242,229,225,110,128,49,72,240,225,242,229,238,235,239,242,229,225,110,128,50,8,245,240,225,242,229,238,235,239,242,229,225,110,128,50,28,242,99,2,68,74,68,169,236,101,132,37,203,68,87,68,98,68,103,68,127,237,245,236,244,233,240,236,121,128,34,151,239,116,128,34,153,112,2,68,109,68,115,236,245,115,128,34,149,239,243,244,225,236,237,225,242,107,128,48,54,247,233,244,104,2,68,136,68,152,236,229,230,244,232,225,236,230,226,236,225,227,107,128,37,208,242,233,231,232,244,232,225,236,230,226,236,225,227,107,128,37,209,245,237,230,236,229,120,130,2,198,68,182,68,193,226,229,236,239,247,227,237,98,128,3,45,227,237,98,128,3,2,108,3,68,207,68,213,69,11,229,225,114,128,35,39,233,227,107,4,68,225,68,236,68,245,68,255,225,236,246,229,239,236,225,114,128,1,194,228,229,238,244,225,108,128,1,192,236,225,244,229,242,225,108,128,1,193,242,229,244,242,239,230,236,229,120,128,1,195,245,98,129,38,99,69,18,243,245,233,116,2,69,27,69,35,226,236,225,227,107,128,38,99,247,232,233,244,101,128,38,103,109,3,69,51,69,65,69,76,227,245,226,229,228,243,241,245,225,242,101,128,51,164,239,238,239,243,240,225,227,101,128,255,67,243,241,245,225,242,229,228,243,241,245,225,242,101,128,51,160,111,8,69,110,69,121,69,208,70,150,71,179,71,210,72,61,72,70,225,242,237,229,238,233,225,110,128,5,129,236,239,110,131,0,58,69,133,69,158,69,177,237,239,110,2,69,141,69,149,229,244,225,242,121,128,32,161,239,243,240,225,227,101,128,255,26,115,2,69,164,69,170,233,231,110,128,32,161,237,225,236,108,128,254,85,244,242,233,225,238,231,245,236,225,114,2,69,192,69,202,232,225,236,230,237,239,100,128,2,209,237,239,100,128,2,208,109,2,69,214,70,143,237,97,134,0,44,69,231,70,39,70,50,70,62,70,92,70,115,97,3,69,239,70,9,70,17,226,239,246,101,2,69,248,69,254,227,237,98,128,3,19,242,233,231,232,244,227,237,98,128,3,21,227,227,229,238,116,128,246,195,114,2,70,23,70,30,225,226,233,99,128,6,12,237,229,238,233,225,110,128,5,93,233,238,230,229,242,233,239,114,128,246,225,237,239,238,239,243,240,225,227,101,128,255,12,242,229,246,229,242,243,229,100,2,70,75,70,86,225,226,239,246,229,227,237,98,128,3,20,237,239,100,128,2,189,115,2,70,98,70,105,237,225,236,108,128,254,80,245,240,229,242,233,239,114,128,246,226,244,245,242,238,229,100,2,70,126,70,137,225,226,239,246,229,227,237,98,128,3,18,237,239,100,128,2,187,240,225,243,115,128,38,60,110,2,70,156,70,165,231,242,245,229,238,116,128,34,69,116,2,70,171,70,185,239,245,242,233,238,244,229,231,242,225,108,128,34,46,242,239,108,142,35,3,70,219,70,225,70,240,70,255,71,43,71,88,71,102,71,107,71,112,71,117,71,123,71,128,71,169,71,174,193,195,75,128,0,6,66,2,70,231,70,236,197,76,128,0,7,83,128,0,8,67,2,70,246,70,251,193,78,128,0,24,82,128,0,13,68,3,71,7,71,33,71,38,67,4,71,17,71,21,71,25,71,29,49,128,0,17,50,128,0,18,51,128,0,19,52,128,0,20,197,76,128,0,127,204,69,128,0,16,69,5,71,55,71,59,71,64,71,69,71,74,77,128,0,25,206,81,128,0,5,207,84,128,0,4,211,67,128,0,27,84,2,71,80,71,84,66,128,0,23,88,128,0,3,70,2,71,94,71,98,70,128,0,12,83,128,0,28,199,83,128,0,29,200,84,128,0,9,204,70,128,0,10,206,193,75,128,0,21,210,83,128,0,30,83,5,71,140,71,144,71,154,71,159,71,164,73,128,0,15,79,129,0,14,71,150,84,128,0,2,212,88,128,0,1,213,66,128,0,26,217,78,128,0,22,213,83,128,0,31,214,84,128,0,11,240,249,242,233,231,232,116,129,0,169,71,191,115,2,71,197,71,203,225,238,115,128,248,233,229,242,233,102,128,246,217,114,2,71,216,72,44,238,229,242,226,242,225,227,235,229,116,2,71,231,72,9,236,229,230,116,130,48,12,71,242,71,254,232,225,236,230,247,233,228,244,104,128,255,98,246,229,242,244,233,227,225,108,128,254,65,242,233,231,232,116,130,48,13,72,21,72,33,232,225,236,230,247,233,228,244,104,128,255,99,246,229,242,244,233,227,225,108,128,254,66,240,239,242,225,244,233,239,238,243,241,245,225,242,101,128,51,127,243,241,245,225,242,101,128,51,199,246,229,242,235,231,243,241,245,225,242,101,128,51,198,240,225,242,229,110,128,36,158,242,245,250,229,233,242,111,128,32,162,243,244,242,229,244,227,232,229,100,128,2,151,245,114,2,72,121,72,139,236,121,2,72,128,72,134,225,238,100,128,34,207,239,114,128,34,206,242,229,238,227,121,128,0,164,249,114,4,72,158,72,166,72,173,72,181,194,242,229,246,101,128,246,209,198,236,229,120,128,246,210,226,242,229,246,101,128,246,212,230,236,229,120,128,246,213,100,146,0,100,72,228,74,110,75,134,75,194,76,114,77,68,77,130,78,59,78,72,78,81,78,107,78,132,78,141,79,208,79,216,79,227,79,247,80,19,97,11,72,252,73,7,73,17,73,89,73,152,73,163,73,174,73,243,74,49,74,55,74,85,225,242,237,229,238,233,225,110,128,5,100,226,229,238,231,225,236,105,128,9,166,100,5,73,29,73,38,73,44,73,58,73,74,225,242,225,226,233,99,128,6,54,229,246,97,128,9,38,230,233,238,225,236,225,242,225,226,233,99,128,254,190,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,191,237,229,228,233,225,236,225,242,225,226,233,99,128,254,192,103,3,73,97,73,114,73,128,229,243,104,129,5,188,73,105,232,229,226,242,229,119,128,5,188,231,229,114,129,32,32,73,122,228,226,108,128,32,33,117,2,73,134,73,143,234,225,242,225,244,105,128,10,166,242,237,245,235,232,105,128,10,38,232,233,242,225,231,225,238,97,128,48,96,235,225,244,225,235,225,238,97,128,48,192,108,3,73,182,73,191,73,229,225,242,225,226,233,99,128,6,47,229,116,130,5,211,73,200,73,220,228,225,231,229,243,104,129,251,51,73,211,232,229,226,242,229,119,128,251,51,232,229,226,242,229,119,128,5,211,230,233,238,225,236,225,242,225,226,233,99,128,254,170,237,237,97,3,73,253,74,6,74,18,225,242,225,226,233,99,128,6,79,236,239,247,225,242,225,226,233,99,128,6,79,244,225,238,97,2,74,27,74,41,236,244,239,238,229,225,242,225,226,233,99,128,6,76,242,225,226,233,99,128,6,76,238,228,97,128,9,100,242,231,97,2,74,63,74,72,232,229,226,242,229,119,128,5,167,236,229,230,244,232,229,226,242,229,119,128,5,167,243,233,225,240,238,229,245,237,225,244,225,227,249,242,233,236,236,233,227,227,237,98,128,4,133,98,3,74,118,75,115,75,125,108,9,74,138,74,146,75,3,75,11,75,27,75,38,75,56,75,70,75,81,199,242,225,246,101,128,246,211,97,2,74,152,74,209,238,231,236,229,226,242,225,227,235,229,116,2,74,168,74,188,236,229,230,116,129,48,10,74,177,246,229,242,244,233,227,225,108,128,254,61,242,233,231,232,116,129,48,11,74,198,246,229,242,244,233,227,225,108,128,254,62,114,2,74,215,74,236,227,232,233,238,246,229,242,244,229,228,226,229,236,239,247,227,237,98,128,3,43,242,239,119,2,74,244,74,251,236,229,230,116,128,33,212,242,233,231,232,116,128,33,210,228,225,238,228,97,128,9,101,231,242,225,246,101,129,246,214,75,21,227,237,98,128,3,15,233,238,244,229,231,242,225,108,128,34,44,236,239,247,236,233,238,101,129,32,23,75,50,227,237,98,128,3,51,239,246,229,242,236,233,238,229,227,237,98,128,3,63,240,242,233,237,229,237,239,100,128,2,186,246,229,242,244,233,227,225,108,2,75,94,75,100,226,225,114,128,32,22,236,233,238,229,225,226,239,246,229,227,237,98,128,3,14,239,240,239,237,239,230,111,128,49,9,243,241,245,225,242,101,128,51,200,99,4,75,144,75,151,75,160,75,187,225,242,239,110,128,1,15,229,228,233,236,236,97,128,30,17,233,242,99,2,75,168,75,173,236,101,128,36,211,245,237,230,236,229,248,226,229,236,239,119,128,30,19,242,239,225,116,128,1,17,100,4,75,204,76,29,76,39,76,90,97,4,75,214,75,224,75,231,76,0,226,229,238,231,225,236,105,128,9,161,228,229,246,97,128,9,33,231,117,2,75,238,75,247,234,225,242,225,244,105,128,10,161,242,237,245,235,232,105,128,10,33,108,2,76,6,76,15,225,242,225,226,233,99,128,6,136,230,233,238,225,236,225,242,225,226,233,99,128,251,137,228,232,225,228,229,246,97,128,9,92,232,97,3,76,48,76,58,76,65,226,229,238,231,225,236,105,128,9,162,228,229,246,97,128,9,34,231,117,2,76,72,76,81,234,225,242,225,244,105,128,10,162,242,237,245,235,232,105,128,10,34,239,116,2,76,97,76,106,225,227,227,229,238,116,128,30,11,226,229,236,239,119,128,30,13,101,8,76,132,76,185,76,192,76,217,76,227,76,238,77,27,77,63,99,2,76,138,76,175,233,237,225,236,243,229,240,225,242,225,244,239,114,2,76,156,76,165,225,242,225,226,233,99,128,6,107,240,229,242,243,233,225,110,128,6,107,249,242,233,236,236,233,99,128,4,52,231,242,229,101,128,0,176,232,105,2,76,199,76,208,232,229,226,242,229,119,128,5,173,242,225,231,225,238,97,128,48,103,233,227,239,240,244,233,99,128,3,239,235,225,244,225,235,225,238,97,128,48,199,108,2,76,244,77,11,229,244,101,2,76,252,77,3,236,229,230,116,128,35,43,242,233,231,232,116,128,35,38,244,97,129,3,180,77,18,244,245,242,238,229,100,128,1,141,238,239,237,233,238,225,244,239,242,237,233,238,245,243,239,238,229,238,245,237,229,242,225,244,239,242,226,229,238,231,225,236,105,128,9,248,250,104,128,2,164,104,2,77,74,77,124,97,3,77,82,77,92,77,99,226,229,238,231,225,236,105,128,9,167,228,229,246,97,128,9,39,231,117,2,77,106,77,115,234,225,242,225,244,105,128,10,167,242,237,245,235,232,105,128,10,39,239,239,107,128,2,87,105,6,77,144,77,193,77,253,78,8,78,19,78,29,97,2,77,150,77,172,236,249,244,233,235,225,244,239,238,239,115,129,3,133,77,166,227,237,98,128,3,68,237,239,238,100,129,38,102,77,181,243,245,233,244,247,232,233,244,101,128,38,98,229,242,229,243,233,115,133,0,168,77,212,77,220,77,231,77,237,77,245,225,227,245,244,101,128,246,215,226,229,236,239,247,227,237,98,128,3,36,227,237,98,128,3,8,231,242,225,246,101,128,246,216,244,239,238,239,115,128,3,133,232,233,242,225,231,225,238,97,128,48,98,235,225,244,225,235,225,238,97,128,48,194,244,244,239,237,225,242,107,128,48,3,246,105,2,78,36,78,47,228,101,129,0,247,78,43,115,128,34,35,243,233,239,238,243,236,225,243,104,128,34,21,234,229,227,249,242,233,236,236,233,99,128,4,82,235,243,232,225,228,101,128,37,147,108,2,78,87,78,98,233,238,229,226,229,236,239,119,128,30,15,243,241,245,225,242,101,128,51,151,109,2,78,113,78,121,225,227,242,239,110,128,1,17,239,238,239,243,240,225,227,101,128,255,68,238,226,236,239,227,107,128,37,132,111,10,78,163,78,175,78,185,78,196,78,207,79,23,79,28,79,39,79,154,79,180,227,232,225,228,225,244,232,225,105,128,14,14,228,229,235,244,232,225,105,128,14,20,232,233,242,225,231,225,238,97,128,48,105,235,225,244,225,235,225,238,97,128,48,201,236,236,225,114,132,0,36,78,222,78,233,78,245,79,0,233,238,230,229,242,233,239,114,128,246,227,237,239,238,239,243,240,225,227,101,128,255,4,239,236,228,243,244,249,236,101,128,247,36,115,2,79,6,79,13,237,225,236,108,128,254,105,245,240,229,242,233,239,114,128,246,228,238,103,128,32,171,242,245,243,241,245,225,242,101,128,51,38,116,6,79,53,79,70,79,92,79,103,79,135,79,142,225,227,227,229,238,116,129,2,217,79,64,227,237,98,128,3,7,226,229,236,239,247,99,2,79,81,79,86,237,98,128,3,35,239,237,98,128,3,35,235,225,244,225,235,225,238,97,128,48,251,236,229,243,115,2,79,112,79,116,105,128,1,49,106,129,246,190,79,122,243,244,242,239,235,229,232,239,239,107,128,2,132,237,225,244,104,128,34,197,244,229,228,227,233,242,227,236,101,128,37,204,245,226,236,229,249,239,228,240,225,244,225,104,129,251,31,79,171,232,229,226,242,229,119,128,251,31,247,238,244,225,227,107,2,79,191,79,202,226,229,236,239,247,227,237,98,128,3,30,237,239,100,128,2,213,240,225,242,229,110,128,36,159,243,245,240,229,242,233,239,114,128,246,235,116,2,79,233,79,239,225,233,108,128,2,86,239,240,226,225,114,128,1,140,117,2,79,253,80,8,232,233,242,225,231,225,238,97,128,48,101,235,225,244,225,235,225,238,97,128,48,197,122,132,1,243,80,31,80,40,80,59,80,96,225,236,244,239,238,101,128,2,163,99,2,80,46,80,53,225,242,239,110,128,1,198,245,242,108,128,2,165,101,2,80,65,80,85,225,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,225,227,249,242,233,236,236,233,99,128,4,85,232,229,227,249,242,233,236,236,233,99,128,4,95,101,151,0,101,80,159,80,178,80,212,81,186,81,248,82,25,82,37,82,60],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+40961);allocate([82,113,83,225,84,27,84,129,84,245,85,124,85,199,85,230,86,36,86,89,87,24,87,157,87,177,87,221,88,56,97,2,80,165,80,172,227,245,244,101,128,0,233,242,244,104,128,38,65,98,3,80,186,80,195,80,205,229,238,231,225,236,105,128,9,143,239,240,239,237,239,230,111,128,49,28,242,229,246,101,128,1,21,99,5,80,224,81,41,81,55,81,87,81,176,97,2,80,230,81,35,238,228,242,97,3,80,241,80,248,81,3,228,229,246,97,128,9,13,231,245,234,225,242,225,244,105,128,10,141,246,239,247,229,236,243,233,231,110,2,81,17,81,24,228,229,246,97,128,9,69,231,245,234,225,242,225,244,105,128,10,197,242,239,110,128,1,27,229,228,233,236,236,225,226,242,229,246,101,128,30,29,104,2,81,61,81,72,225,242,237,229,238,233,225,110,128,5,101,249,233,247,238,225,242,237,229,238,233,225,110,128,5,135,233,242,99,2,81,95,81,100,236,101,128,36,212,245,237,230,236,229,120,134,0,234,81,121,81,129,81,137,81,148,81,156,81,168,225,227,245,244,101,128,30,191,226,229,236,239,119,128,30,25,228,239,244,226,229,236,239,119,128,30,199,231,242,225,246,101,128,30,193,232,239,239,235,225,226,239,246,101,128,30,195,244,233,236,228,101,128,30,197,249,242,233,236,236,233,99,128,4,84,100,4,81,196,81,206,81,212,81,222,226,236,231,242,225,246,101,128,2,5,229,246,97,128,9,15,233,229,242,229,243,233,115,128,0,235,239,116,130,1,23,81,231,81,240,225,227,227,229,238,116,128,1,23,226,229,236,239,119,128,30,185,101,2,81,254,82,9,231,245,242,237,245,235,232,105,128,10,15,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,71,230,227,249,242,233,236,236,233,99,128,4,68,103,2,82,43,82,50,242,225,246,101,128,0,232,245,234,225,242,225,244,105,128,10,143,104,4,82,70,82,81,82,92,82,102,225,242,237,229,238,233,225,110,128,5,103,226,239,240,239,237,239,230,111,128,49,29,233,242,225,231,225,238,97,128,48,72,239,239,235,225,226,239,246,101,128,30,187,105,4,82,123,82,134,83,192,83,207,226,239,240,239,237,239,230,111,128,49,31,231,232,116,142,0,56,82,168,82,177,82,187,82,217,82,224,83,6,83,31,83,76,83,110,83,122,83,133,83,166,83,174,83,185,225,242,225,226,233,99,128,6,104,226,229,238,231,225,236,105,128,9,238,227,233,242,227,236,101,129,36,103,82,198,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,145,228,229,246,97,128,9,110,229,229,110,2,82,232,82,241,227,233,242,227,236,101,128,36,113,112,2,82,247,82,254,225,242,229,110,128,36,133,229,242,233,239,100,128,36,153,231,117,2,83,13,83,22,234,225,242,225,244,105,128,10,238,242,237,245,235,232,105,128,10,110,104,2,83,37,83,63,97,2,83,43,83,54,227,235,225,242,225,226,233,99,128,6,104,238,231,250,232,239,117,128,48,40,238,239,244,229,226,229,225,237,229,100,128,38,107,105,2,83,82,83,100,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,39,238,230,229,242,233,239,114,128,32,136,237,239,238,239,243,240,225,227,101,128,255,24,239,236,228,243,244,249,236,101,128,247,56,112,2,83,139,83,146,225,242,229,110,128,36,123,229,114,2,83,153,83,159,233,239,100,128,36,143,243,233,225,110,128,6,248,242,239,237,225,110,128,33,119,243,245,240,229,242,233,239,114,128,32,120,244,232,225,105,128,14,88,238,246,229,242,244,229,228,226,242,229,246,101,128,2,7,239,244,233,230,233,229,228,227,249,242,233,236,236,233,99,128,4,101,107,2,83,231,83,255,225,244,225,235,225,238,97,129,48,168,83,243,232,225,236,230,247,233,228,244,104,128,255,116,111,2,84,5,84,20,238,235,225,242,231,245,242,237,245,235,232,105,128,10,116,242,229,225,110,128,49,84,108,3,84,35,84,46,84,107,227,249,242,233,236,236,233,99,128,4,59,101,2,84,52,84,59,237,229,238,116,128,34,8,246,229,110,3,84,69,84,78,84,99,227,233,242,227,236,101,128,36,106,112,2,84,84,84,91,225,242,229,110,128,36,126,229,242,233,239,100,128,36,146,242,239,237,225,110,128,33,122,236,233,240,243,233,115,129,32,38,84,118,246,229,242,244,233,227,225,108,128,34,238,109,5,84,141,84,169,84,180,84,200,84,211,225,227,242,239,110,130,1,19,84,153,84,161,225,227,245,244,101,128,30,23,231,242,225,246,101,128,30,21,227,249,242,233,236,236,233,99,128,4,60,228,225,243,104,129,32,20,84,189,246,229,242,244,233,227,225,108,128,254,49,239,238,239,243,240,225,227,101,128,255,69,112,2,84,217,84,237,232,225,243,233,243,237,225,242,235,225,242,237,229,238,233,225,110,128,5,91,244,249,243,229,116,128,34,5,110,6,85,3,85,14,85,25,85,69,85,101,85,116,226,239,240,239,237,239,230,111,128,49,35,227,249,242,233,236,236,233,99,128,4,61,100,2,85,31,85,50,225,243,104,129,32,19,85,39,246,229,242,244,233,227,225,108,128,254,50,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,163,103,130,1,75,85,77,85,88,226,239,240,239,237,239,230,111,128,49,37,232,229,227,249,242,233,236,236,233,99,128,4,165,232,239,239,235,227,249,242,233,236,236,233,99,128,4,200,243,240,225,227,101,128,32,2,111,3,85,132,85,140,85,149,231,239,238,229,107,128,1,25,235,239,242,229,225,110,128,49,83,240,229,110,130,2,91,85,159,85,168,227,236,239,243,229,100,128,2,154,242,229,246,229,242,243,229,100,130,2,92,85,183,85,192,227,236,239,243,229,100,128,2,94,232,239,239,107,128,2,93,112,2,85,205,85,212,225,242,229,110,128,36,160,243,233,236,239,110,129,3,181,85,222,244,239,238,239,115,128,3,173,241,117,2,85,237,86,25,225,108,130,0,61,85,246,86,2,237,239,238,239,243,240,225,227,101,128,255,29,115,2,86,8,86,15,237,225,236,108,128,254,102,245,240,229,242,233,239,114,128,32,124,233,246,225,236,229,238,227,101,128,34,97,114,3,86,44,86,55,86,66,226,239,240,239,237,239,230,111,128,49,38,227,249,242,233,236,236,233,99,128,4,64,229,246,229,242,243,229,100,129,2,88,86,78,227,249,242,233,236,236,233,99,128,4,77,115,6,86,103,86,114,86,134,86,215,87,4,87,14,227,249,242,233,236,236,233,99,128,4,65,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,171,104,132,2,131,86,146,86,153,86,184,86,199,227,245,242,108,128,2,134,239,242,116,2,86,161,86,168,228,229,246,97,128,9,14,246,239,247,229,236,243,233,231,238,228,229,246,97,128,9,70,242,229,246,229,242,243,229,228,236,239,239,112,128,1,170,243,241,245,225,244,242,229,246,229,242,243,229,100,128,2,133,237,225,236,108,2,86,224,86,235,232,233,242,225,231,225,238,97,128,48,71,235,225,244,225,235,225,238,97,129,48,167,86,248,232,225,236,230,247,233,228,244,104,128,255,106,244,233,237,225,244,229,100,128,33,46,245,240,229,242,233,239,114,128,246,236,116,5,87,36,87,62,87,66,87,83,87,149,97,130,3,183,87,44,87,54,242,237,229,238,233,225,110,128,5,104,244,239,238,239,115,128,3,174,104,128,0,240,233,236,228,101,129,30,189,87,75,226,229,236,239,119,128,30,27,238,225,232,244,97,3,87,95,87,127,87,136,230,239,245,235,104,2,87,105,87,114,232,229,226,242,229,119,128,5,145,236,229,230,244,232,229,226,242,229,119,128,5,145,232,229,226,242,229,119,128,5,145,236,229,230,244,232,229,226,242,229,119,128,5,145,245,242,238,229,100,128,1,221,117,2,87,163,87,172,235,239,242,229,225,110,128,49,97,242,111,128,32,172,246,239,247,229,236,243,233,231,110,3,87,193,87,203,87,210,226,229,238,231,225,236,105,128,9,199,228,229,246,97,128,9,71,231,245,234,225,242,225,244,105,128,10,199,120,2,87,227,88,44,227,236,225,109,132,0,33,87,242,87,253,88,24,88,36,225,242,237,229,238,233,225,110,128,5,92,100,2,88,3,88,8,226,108,128,32,60,239,247,110,129,0,161,88,16,243,237,225,236,108,128,247,161,237,239,238,239,243,240,225,227,101,128,255,1,243,237,225,236,108,128,247,33,233,243,244,229,238,244,233,225,108,128,34,3,250,104,131,2,146,88,67,88,86,88,97,99,2,88,73,88,80,225,242,239,110,128,1,239,245,242,108,128,2,147,242,229,246,229,242,243,229,100,128,1,185,244,225,233,108,128,1,186,102,140,0,102,88,132,88,214,88,225,88,234,88,246,89,93,89,109,91,117,91,130,91,156,93,33,93,41,97,4,88,142,88,149,88,160,88,171,228,229,246,97,128,9,94,231,245,242,237,245,235,232,105,128,10,94,232,242,229,238,232,229,233,116,128,33,9,244,232,97,3,88,181,88,190,88,202,225,242,225,226,233,99,128,6,78,236,239,247,225,242,225,226,233,99,128,6,78,244,225,238,225,242,225,226,233,99,128,6,75,226,239,240,239,237,239,230,111,128,49,8,227,233,242,227,236,101,128,36,213,228,239,244,225,227,227,229,238,116,128,30,31,101,3,88,254,89,76,89,86,104,4,89,8,89,31,89,45,89,61,225,114,2,89,15,89,22,225,226,233,99,128,6,65,237,229,238,233,225,110,128,5,134,230,233,238,225,236,225,242,225,226,233,99,128,254,210,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,211,237,229,228,233,225,236,225,242,225,226,233,99,128,254,212,233,227,239,240,244,233,99,128,3,229,237,225,236,101,128,38,64,102,130,251,0,89,101,89,105,105,128,251,3,108,128,251,4,105,136,251,1,89,129,89,169,89,180,89,202,90,68,90,85,90,93,90,106,230,244,229,229,110,2,89,139,89,148,227,233,242,227,236,101,128,36,110,112,2,89,154,89,161,225,242,229,110,128,36,130,229,242,233,239,100,128,36,150,231,245,242,229,228,225,243,104,128,32,18,236,236,229,100,2,89,189,89,195,226,239,120,128,37,160,242,229,227,116,128,37,172,238,225,108,5,89,216,89,255,90,16,90,33,90,49,235,225,102,130,5,218,89,226,89,246,228,225,231,229,243,104,129,251,58,89,237,232,229,226,242,229,119,128,251,58,232,229,226,242,229,119,128,5,218,237,229,109,129,5,221,90,7,232,229,226,242,229,119,128,5,221,238,245,110,129,5,223,90,24,232,229,226,242,229,119,128,5,223,240,101,129,5,227,90,40,232,229,226,242,229,119,128,5,227,244,243,225,228,105,129,5,229,90,59,232,229,226,242,229,119,128,5,229,242,243,244,244,239,238,229,227,232,233,238,229,243,101,128,2,201,243,232,229,249,101,128,37,201,244,225,227,249,242,233,236,236,233,99,128,4,115,246,101,142,0,53,90,139,90,148,90,158,90,188,90,195,90,205,90,230,91,1,91,35,91,47,91,58,91,91,91,99,91,110,225,242,225,226,233,99,128,6,101,226,229,238,231,225,236,105,128,9,235,227,233,242,227,236,101,129,36,100,90,169,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,142,228,229,246,97,128,9,107,229,233,231,232,244,232,115,128,33,93,231,117,2,90,212,90,221,234,225,242,225,244,105,128,10,235,242,237,245,235,232,105,128,10,107,232,97,2,90,237,90,248,227,235,225,242,225,226,233,99,128,6,101,238,231,250,232,239,117,128,48,37,105,2,91,7,91,25,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,36,238,230,229,242,233,239,114,128,32,133,237,239,238,239,243,240,225,227,101,128,255,21,239,236,228,243,244,249,236,101,128,247,53,112,2,91,64,91,71,225,242,229,110,128,36,120,229,114,2,91,78,91,84,233,239,100,128,36,140,243,233,225,110,128,6,245,242,239,237,225,110,128,33,116,243,245,240,229,242,233,239,114,128,32,117,244,232,225,105,128,14,85,108,129,251,2,91,123,239,242,233,110,128,1,146,109,2,91,136,91,147,239,238,239,243,240,225,227,101,128,255,70,243,241,245,225,242,101,128,51,153,111,4,91,166,91,188,91,200,91,207,230,97,2,91,173,91,181,238,244,232,225,105,128,14,31,244,232,225,105,128,14,29,238,231,237,225,238,244,232,225,105,128,14,79,242,225,236,108,128,34,0,245,114,142,0,52,91,240,91,249,92,3,92,33,92,40,92,65,92,92,92,126,92,138,92,157,92,168,92,201,92,209,92,220,225,242,225,226,233,99,128,6,100,226,229,238,231,225,236,105,128,9,234,227,233,242,227,236,101,129,36,99,92,14,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,141,228,229,246,97,128,9,106,231,117,2,92,47,92,56,234,225,242,225,244,105,128,10,234,242,237,245,235,232,105,128,10,106,232,97,2,92,72,92,83,227,235,225,242,225,226,233,99,128,6,100,238,231,250,232,239,117,128,48,36,105,2,92,98,92,116,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,35,238,230,229,242,233,239,114,128,32,132,237,239,238,239,243,240,225,227,101,128,255,20,238,245,237,229,242,225,244,239,242,226,229,238,231,225,236,105,128,9,247,239,236,228,243,244,249,236,101,128,247,52,112,2,92,174,92,181,225,242,229,110,128,36,119,229,114,2,92,188,92,194,233,239,100,128,36,139,243,233,225,110,128,6,244,242,239,237,225,110,128,33,115,243,245,240,229,242,233,239,114,128,32,116,116,2,92,226,93,8,229,229,110,2,92,234,92,243,227,233,242,227,236,101,128,36,109,112,2,92,249,93,0,225,242,229,110,128,36,129,229,242,233,239,100,128,36,149,104,2,93,14,93,19,225,105,128,14,84,244,239,238,229,227,232,233,238,229,243,101,128,2,203,240,225,242,229,110,128,36,161,242,97,2,93,48,93,56,227,244,233,239,110,128,32,68,238,99,128,32,163,103,144,0,103,93,97,94,43,94,66,94,127,94,144,95,65,96,58,96,143,96,156,97,14,97,39,97,67,97,89,98,34,98,56,98,158,97,9,93,117,93,127,93,134,93,141,93,205,93,230,93,241,93,252,94,30,226,229,238,231,225,236,105,128,9,151,227,245,244,101,128,1,245,228,229,246,97,128,9,23,102,4,93,151,93,160,93,174,93,190,225,242,225,226,233,99,128,6,175,230,233,238,225,236,225,242,225,226,233,99,128,251,147,233,238,233,244,233,225,236,225,242,225,226,233,99,128,251,148,237,229,228,233,225,236,225,242,225,226,233,99,128,251,149,231,117,2,93,212,93,221,234,225,242,225,244,105,128,10,151,242,237,245,235,232,105,128,10,23,232,233,242,225,231,225,238,97,128,48,76,235,225,244,225,235,225,238,97,128,48,172,237,237,97,130,3,179,94,6,94,19,236,225,244,233,238,243,237,225,236,108,128,2,99,243,245,240,229,242,233,239,114,128,2,224,238,231,233,225,227,239,240,244,233,99,128,3,235,98,2,94,49,94,59,239,240,239,237,239,230,111,128,49,13,242,229,246,101,128,1,31,99,4,94,76,94,83,94,92,94,114,225,242,239,110,128,1,231,229,228,233,236,236,97,128,1,35,233,242,99,2,94,100,94,105,236,101,128,36,214,245,237,230,236,229,120,128,1,29,239,237,237,225,225,227,227,229,238,116,128,1,35,228,239,116,129,1,33,94,135,225,227,227,229,238,116,128,1,33,101,6,94,158,94,169,94,180,94,191,94,210,95,56,227,249,242,233,236,236,233,99,128,4,51,232,233,242,225,231,225,238,97,128,48,82,235,225,244,225,235,225,238,97,128,48,178,239,237,229,244,242,233,227,225,236,236,249,229,241,245,225,108,128,34,81,114,3,94,218,95,11,95,21,229,243,104,3,94,228,94,243,94,252,225,227,227,229,238,244,232,229,226,242,229,119,128,5,156,232,229,226,242,229,119,128,5,243,237,245,241,228,225,237,232,229,226,242,229,119,128,5,157,237,225,238,228,226,236,115,128,0,223,243,232,225,249,233,109,2,95,32,95,47,225,227,227,229,238,244,232,229,226,242,229,119,128,5,158,232,229,226,242,229,119,128,5,244,244,225,237,225,242,107,128,48,19,104,5,95,77,95,210,96,17,96,42,96,48,97,4,95,87,95,97,95,120,95,145,226,229,238,231,225,236,105,128,9,152,100,2,95,103,95,114,225,242,237,229,238,233,225,110,128,5,114,229,246,97,128,9,24,231,117,2,95,127,95,136,234,225,242,225,244,105,128,10,152,242,237,245,235,232,105,128,10,24,233,110,4,95,156,95,165,95,179,95,195,225,242,225,226,233,99,128,6,58,230,233,238,225,236,225,242,225,226,233,99,128,254,206,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,207,237,229,228,233,225,236,225,242,225,226,233,99,128,254,208,101,3,95,218,95,239,96,0,237,233,228,228,236,229,232,239,239,235,227,249,242,233,236,236,233,99,128,4,149,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,147,245,240,244,245,242,238,227,249,242,233,236,236,233,99,128,4,145,232,97,2,96,24,96,31,228,229,246,97,128,9,90,231,245,242,237,245,235,232,105,128,10,90,239,239,107,128,2,96,250,243,241,245,225,242,101,128,51,147,105,3,96,66,96,77,96,88,232,233,242,225,231,225,238,97,128,48,78,235,225,244,225,235,225,238,97,128,48,174,109,2,96,94,96,105,225,242,237,229,238,233,225,110,128,5,99,229,108,130,5,210,96,114,96,134,228,225,231,229,243,104,129,251,50,96,125,232,229,226,242,229,119,128,251,50,232,229,226,242,229,119,128,5,210,234,229,227,249,242,233,236,236,233,99,128,4,83,236,239,244,244,225,108,2,96,167,96,184,233,238,246,229,242,244,229,228,243,244,242,239,235,101,128,1,190,243,244,239,112,132,2,148,96,199,96,210,96,216,96,248,233,238,246,229,242,244,229,100,128,2,150,237,239,100,128,2,192,242,229,246,229,242,243,229,100,130,2,149,96,231,96,237,237,239,100,128,2,193,243,245,240,229,242,233,239,114,128,2,228,243,244,242,239,235,101,129,2,161,97,3,242,229,246,229,242,243,229,100,128,2,162,109,2,97,20,97,28,225,227,242,239,110,128,30,33,239,238,239,243,240,225,227,101,128,255,71,111,2,97,45,97,56,232,233,242,225,231,225,238,97,128,48,84,235,225,244,225,235,225,238,97,128,48,180,240,97,2,97,74,97,80,242,229,110,128,36,162,243,241,245,225,242,101,128,51,172,114,2,97,95,97,192,97,2,97,101,97,109,228,233,229,238,116,128,34,7,246,101,134,0,96,97,126,97,137,97,154,97,161,97,170,97,182,226,229,236,239,247,227,237,98,128,3,22,99,2,97,143,97,148,237,98,128,3,0,239,237,98,128,3,0,228,229,246,97,128,9,83,236,239,247,237,239,100,128,2,206,237,239,238,239,243,240,225,227,101,128,255,64,244,239,238,229,227,237,98,128,3,64,229,225,244,229,114,132,0,62,97,208,97,227,97,239,98,26,229,241,245,225,108,129,34,101,97,218,239,242,236,229,243,115,128,34,219,237,239,238,239,243,240,225,227,101,128,255,30,111,2,97,245,98,15,114,2,97,251,98,8,229,241,245,233,246,225,236,229,238,116,128,34,115,236,229,243,115,128,34,119,246,229,242,229,241,245,225,108,128,34,103,243,237,225,236,108,128,254,101,115,2,98,40,98,48,227,242,233,240,116,128,2,97,244,242,239,235,101,128,1,229,117,4,98,66,98,77,98,134,98,145,232,233,242,225,231,225,238,97,128,48,80,233,108,2,98,84,98,109,236,229,237,239,116,2,98,94,98,101,236,229,230,116,128,0,171,242,233,231,232,116,128,0,187,243,233,238,231,108,2,98,119,98,126,236,229,230,116,128,32,57,242,233,231,232,116,128,32,58,235,225,244,225,235,225,238,97,128,48,176,242,225,237,245,243,241,245,225,242,101,128,51,24,249,243,241,245,225,242,101,128,51,201,104,144,0,104,98,204,101,90,101,125,101,162,101,202,103,90,103,110,104,75,104,87,104,99,105,167,105,175,105,186,105,195,106,19,106,23,97,13,98,232,99,15,99,25,99,55,99,80,99,158,99,170,99,195,99,210,99,239,99,252,100,54,100,63,97,2,98,238,99,1,226,235,232,225,243,233,225,238,227,249,242,233,236,236,233,99,128,4,169,236,244,239,238,229,225,242,225,226,233,99,128,6,193,226,229,238,231,225,236,105,128,9,185,228,101,2,99,32,99,50,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,179,246,97,128,9,57,231,117,2,99,62,99,71,234,225,242,225,244,105,128,10,185,242,237,245,235,232,105,128,10,57,104,4,99,90,99,99,99,113,99,143,225,242,225,226,233,99,128,6,45,230,233,238,225,236,225,242,225,226,233,99,128,254,162,105,2,99,119,99,134,238,233,244,233,225,236,225,242,225,226,233,99,128,254,163,242,225,231,225,238,97,128,48,111,237,229,228,233,225,236,225,242,225,226,233,99,128,254,164,233,244,245,243,241,245,225,242,101,128,51,42,235,225,244,225,235,225,238,97,129,48,207,99,183,232,225,236,230,247,233,228,244,104,128,255,138,236,225,238,244,231,245,242,237,245,235,232,105,128,10,77,237,250,97,2,99,218,99,227,225,242,225,226,233,99,128,6,33,236,239,247,225,242,225,226,233,99,128,6,33,238,231,245,236,230,233,236,236,229,114,128,49,100,114,2,100,2,100,18,228,243,233,231,238,227,249,242,233,236,236,233,99,128,4,74,240,239,239,110,2,100,27,100,40,236,229,230,244,226,225,242,226,245,112,128,33,188,242,233,231,232,244,226,225,242,226,245,112,128,33,192,243,241,245,225,242,101,128,51,202,244,225,102,3,100,73,100,165,101,0,240,225,244,225,104,134,5,178,100,93,100,98,100,112,100,121,100,136,100,152,177,54,128,5,178,50,2,100,104,100,108,51,128,5,178,102,128,5,178,232,229,226,242,229,119,128,5,178,238,225,242,242,239,247,232,229,226,242,229,119,128,5,178,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,178,247,233,228,229,232,229,226,242,229,119,128,5,178,241,225,237,225,244,115,135,5,179,100,188,100,193,100,198,100,203,100,212,100,227,100,243,177,98,128,5,179,178,56,128,5,179,179,52,128,5,179,232,229,226,242,229,119,128,5,179,238,225,242,242,239,247,232,229,226,242,229,119,128,5,179,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,179,247,233,228,229,232,229,226,242,229,119,128,5,179,243,229,231,239,108,135,5,177,101,22,101,27,101,32,101,37,101,46,101,61,101,77,177,55,128,5,177,178,52,128,5,177,179,48,128,5,177,232,229,226,242,229,119,128,5,177,238,225,242,242,239,247,232,229,226,242,229,119,128,5,177,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,177,247,233,228,229,232,229,226,242,229,119,128,5,177,98,3,101,98,101,103,101,113,225,114,128,1,39,239,240,239,237,239,230,111,128,49,15,242,229,246,229,226,229,236,239,119,128,30,43,99,2,101,131,101,140,229,228,233,236,236,97,128,30,41,233,242,99,2,101,148,101,153,236,101,128,36,215,245,237,230,236,229,120,128,1,37,100,2,101,168,101,178,233,229,242,229,243,233,115,128,30,39,239,116,2,101,185,101,194,225,227,227,229,238,116,128,30,35,226,229,236,239,119,128,30,37,101,136,5,212,101,222,101,255,102,19,102,248,103,8,103,53,103,62,103,75,225,242,116,129,38,101,101,230,243,245,233,116,2,101,239,101,247,226,236,225,227,107,128,38,101,247,232,233,244,101,128,38,97,228,225,231,229,243,104,129,251,52,102,10,232,229,226,242,229,119,128,251,52,104,6,102,33,102,61,102,69,102,119,102,165,102,214,97,2,102,39,102,53,236,244,239,238,229,225,242,225,226,233,99,128,6,193,242,225,226,233,99,128,6,71,229,226,242,229,119,128,5,212,230,233,238,225,236,97,2,102,80,102,111,236,116,2,102,87,102,99,239,238,229,225,242,225,226,233,99,128,251,167,244,247,239,225,242,225,226,233,99,128,254,234,242,225,226,233,99,128,254,234,232,225,237,250,225,225,226,239,246,101,2,102,134,102,148,230,233,238,225,236,225,242,225,226,233,99,128,251,165,233,243,239,236,225,244,229,228,225,242,225,226,233,99,128,251,164,105,2,102,171,102,205,238,233,244,233,225,236,97,2,102,183,102,197,236,244,239,238,229,225,242,225,226,233,99,128,251,168,242,225,226,233,99,128,254,235,242,225,231,225,238,97,128,48,120,237,229,228,233,225,236,97,2,102,226,102,240,236,244,239,238,229,225,242,225,226,233,99,128,251,169,242,225,226,233,99,128,254,236,233,243,229,233,229,242,225,243,241,245,225,242,101,128,51,123,107,2,103,14,103,38,225,244,225,235,225,238,97,129,48,216,103,26,232,225,236,230,247,233,228,244,104,128,255,141,245,244,225,225,242,245,243,241,245,225,242,101,128,51,54,238,231,232,239,239,107,128,2,103,242,245,244,245,243,241,245,225,242,101,128,51,57,116,129,5,215,103,81,232,229,226,242,229,119,128,5,215,232,239,239,107,129,2,102,103,99,243,245,240,229,242,233,239,114,128,2,177,105,4,103,120,103,205,103,216,103,241,229,245,104,4,103,132,103,167,103,182,103,191,97,2,103,138,103,153,227,233,242,227,236,229,235,239,242,229,225,110,128,50,123,240,225,242,229,238,235,239,242,229,225,110,128,50,27,227,233,242,227,236,229,235,239,242,229,225,110,128,50,109,235,239,242,229,225,110,128,49,78,240,225,242,229,238,235,239,242,229,225,110,128,50,13,232,233,242,225,231,225,238,97,128,48,114,235,225,244,225,235,225,238,97,129,48,210,103,229,232,225,236,230,247,233,228,244,104,128,255,139,242,233,113,134,5,180,104,3,104,8,104,22,104,31,104,46,104,62,177,52,128,5,180,50,2,104,14,104,18,49,128,5,180,100,128,5,180,232,229,226,242,229,119,128,5,180,238,225,242,242,239,247,232,229,226,242,229,119,128,5,180,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,180,247,233,228,229,232,229,226,242,229,119,128,5,180,236,233,238,229,226,229,236,239,119,128,30,150,237,239,238,239,243,240,225,227,101,128,255,72,111,9,104,119,104,130,104,154,104,179,105,11,105,24,105,110,105,150,105,161,225,242,237,229,238,233,225,110,128,5,112,232,105,2,104,137,104,145,240,244,232,225,105,128,14,43,242,225,231,225,238,97,128,48,123,235,225,244,225,235,225,238,97,129,48,219,104,167,232,225,236,230,247,233,228,244,104,128,255,142,236,225,109,135,5,185,104,199,104,204,104,209,104,214,104,223,104,238,104,254,177,57,128,5,185,178,54,128,5,185,179,50,128,5,185,232,229,226,242,229,119,128,5,185,238,225,242,242,239,247,232,229,226,242,229,119,128,5,185,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,185,247,233,228,229,232,229,226,242,229,119,128,5,185,238,239,235,232,245,235,244,232,225,105,128,14,46,111,2,105,30,105,100,107,4,105,40,105,52,105,58,105,80,225,226,239,246,229,227,239,237,98,128,3,9,227,237,98,128,3,9,240,225,236,225,244,225,236,233,250,229,228,226,229,236,239,247,227,237,98,128,3,33,242,229,244,242,239,230,236,229,248,226,229,236,239,247,227,237,98,128,3,34,238,243,241,245,225,242,101,128,51,66,114,2,105,116,105,143,105,2,105,122,105,131,227,239,240,244,233,99,128,3,233,250,239,238,244,225,236,226,225,114,128,32,21,238,227,237,98,128,3,27,244,243,240,242,233,238,231,115,128,38,104,245,243,101,128,35,2,240,225,242,229,110,128,36,163,243,245,240,229,242,233,239,114,128,2,176,244,245,242,238,229,100,128,2,101,117,4,105,205,105,216,105,229,105,254,232,233,242,225,231,225,238,97,128,48,117,233,233,244,239,243,241,245,225,242,101,128,51,51,235,225,244,225,235,225,238,97,129,48,213,105,242,232,225,236,230,247,233,228,244,104,128,255,140,238,231,225,242,245,237,236,225,245,116,129,2,221,106,13,227,237,98,128,3,11,118,128,1,149,249,240,232,229,110,132,0,45,106,39,106,50,106,62,106,85,233,238,230,229,242,233,239,114,128,246,229,237,239,238,239,243,240,225,227,101,128,255,13,115,2,106,68,106,75,237,225,236,108,128,254,99,245,240,229,242,233,239,114,128,246,230,244,247,111,128,32,16,105,149,0,105,106,137,106,160,106,194,106,241,110,123,110,243,111,24,111,51,111,213,111,217,111,255,112,21,112,105,113,14,113,89,113,97,113,110,113,197,113,254,114,26,114,70,225,99,2,106,144,106,150,245,244,101,128,0,237,249,242,233,236,236,233,99,128,4,79,98,3,106,168,106,177,106,187,229,238,231,225,236,105,128,9,135,239,240,239,237,239,230,111,128,49,39,242,229,246,101,128,1,45,99,3,106,202,106,209,106,231,225,242,239,110,128,1,208,233,242,99,2,106,217,106,222,236,101,128,36,216,245,237,230,236,229,120,128,0,238,249,242,233,236,236,233,99,128,4,86,100,4,106,251,107,5,110,80,110,113,226,236,231,242,225,246,101,128,2,9,101,2,107,11,110,75,239,231,242,225,240,104,7,107,32,107,46,107,59,109,244,110,19,110,32,110,44,229,225,242,244,232,227,233,242,227,236,101,128,50,143,230,233,242,229,227,233,242,227,236,101,128,50,139,233,99,14,107,90,107,106,107,205,108,3,108,69,108,98,108,114,108,171,108,220,108,232,109,3,109,70,109,208,109,237,225,236,236,233,225,238,227,229,240,225,242,229,110,128,50,63,99,4,107,116,107,127,107,141,107,148,225,236,236,240,225,242,229,110,128,50,58,229,238,244,242,229,227,233,242,227,236,101,128,50,165,236,239,243,101,128,48,6,111,3,107,156,107,171,107,191,237,237,97,129,48,1,107,164,236,229,230,116,128,255,100,238,231,242,225,244,245,236,225,244,233,239,238,240,225,242,229,110,128,50,55,242,242,229,227,244,227,233,242,227,236,101,128,50,163,101,3,107,213,107,225,107,242,225,242,244,232,240,225,242,229,110,128,50,47,238,244,229,242,240,242,233,243,229,240,225,242,229,110,128,50,61,248,227,229,236,236,229,238,244,227,233,242,227,236,101,128,50,157,102,2,108,9,108,24,229,243,244,233,246,225,236,240,225,242,229,110,128,50,64,105,2,108,30,108,59,238,225,238,227,233,225,108,2,108,42,108,51,227,233,242,227,236,101,128,50,150,240,225,242,229,110,128,50,54,242,229,240,225,242,229,110,128,50,43,104,2,108,75,108,86,225,246,229,240,225,242,229,110,128,50,50,233,231,232,227,233,242,227,236,101,128,50,164,233,244,229,242,225,244,233,239,238,237,225,242,107,128,48,5,108,3,108,122,108,148,108,160,225,226,239,114,2,108,131,108,140,227,233,242,227,236,101,128,50,152,240,225,242,229,110,128,50,56,229,230,244,227,233,242,227,236,101,128,50,167,239,247,227,233,242,227,236,101,128,50,166,109,2,108,177,108,209,101,2,108,183,108,198,228,233,227,233,238,229,227,233,242,227,236,101,128,50,169,244,225,236,240,225,242,229,110,128,50,46,239,239,238,240,225,242,229,110,128,50,42,238,225,237,229,240,225,242,229,110,128,50,52,112,2,108,238,108,246,229,242,233,239,100,128,48,2,242,233,238,244,227,233,242,227,236,101,128,50,158,114,2,109,9,109,57,101,3,109,17,109,28,109,43,225,227,232,240,225,242,229,110,128,50,67,240,242,229,243,229,238,244,240,225,242,229,110,128,50,57,243,239,245,242,227,229,240,225,242,229,110,128,50,62,233,231,232,244,227,233,242,227,236,101,128,50,168,115,5,109,82,109,111,109,125,109,150,109,178,101,2,109,88,109,101,227,242,229,244,227,233,242,227,236,101,128,50,153,236,230,240,225,242,229,110,128,50,66,239,227,233,229,244,249,240,225,242,229,110,128,50,51,112,2,109,131,109,137,225,227,101,128,48,0,229,227,233,225,236,240,225,242,229,110,128,50,53,116,2,109,156,109,167,239,227,235,240,225,242,229,110,128,50,49,245,228,249,240,225,242,229,110,128,50,59,117,2,109,184,109,193,238,240,225,242,229,110,128,50,48,240,229,242,246,233,243,229,240,225,242,229,110,128,50,60,119,2,109,214,109,226,225,244,229,242,240,225,242,229,110,128,50,44,239,239,228,240,225,242,229,110,128,50,45,250,229,242,111,128,48,7,109,2,109,250,110,7,229,244,225,236,227,233,242,227,236,101,128,50,142,239,239,238,227,233,242,227,236,101,128,50,138,238,225,237,229,227,233,242,227,236,101,128,50,148,243,245,238,227,233,242,227,236,101,128,50,144,119,2,110,50,110,63,225,244,229,242,227,233,242,227,236,101,128,50,140,239,239,228,227,233,242,227,236,101,128,50,141,246,97,128,9,7,233,229,242,229,243,233,115,130,0,239,110,94,110,102,225,227,245,244,101,128,30,47,227,249,242,233,236,236,233,99,128,4,229,239,244,226,229,236,239,119,128,30,203,101,3,110,131,110,147,110,158,226,242,229,246,229,227,249,242,233,236,236,233,99,128,4,215,227,249,242,233,236,236,233,99,128,4,53,245,238,103,4,110,170,110,205,110,220,110,229,97,2,110,176,110,191,227,233,242,227,236,229,235,239,242,229,225,110,128,50,117,240,225,242,229,238,235,239,242,229,225,110,128,50,21,227,233,242,227,236,229,235,239,242,229,225,110,128,50,103,235,239,242,229,225,110,128,49,71,240,225,242,229,238,235,239,242,229,225,110,128,50,7,103,2,110,249,111,0,242,225,246,101,128,0,236,117,2,111,6,111,15,234,225,242,225,244,105,128,10,135,242,237,245,235,232,105,128,10,7,104,2,111,30,111,40,233,242,225,231,225,238,97,128,48,68,239,239,235,225,226,239,246,101,128,30,201,105,8,111,69,111,79,111,90,111,97,111,122,111,138,111,153,111,169,226,229,238,231,225,236,105,128,9,136,227,249,242,233,236,236,233,99,128,4,56,228,229,246,97,128,9,8,231,117,2,111,104,111,113,234,225,242,225,244,105,128,10,136,242,237,245,235,232,105,128,10,8,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,64,238,246,229,242,244,229,228,226,242,229,246,101,128,2,11,243,232,239,242,244,227,249,242,233,236,236,233,99,128,4,57,246,239,247,229,236,243,233,231,110,3,111,185,111,195,111,202,226,229,238,231,225,236,105,128,9,192,228,229,246,97,128,9,64,231,245,234,225,242,225,244,105,128,10,192,106,128,1,51,107,2,111,223,111,247,225,244,225,235,225,238,97,129,48,164,111,235,232,225,236,230,247,233,228,244,104,128,255,114,239,242,229,225,110,128,49,99,108,2,112,5,112,10,228,101,128,2,220,245,249,232,229,226,242,229,119,128,5,172,109,2,112,27,112,94,97,3,112,35,112,55,112,80,227,242,239,110,129,1,43,112,44,227,249,242,233,236,236,233,99,128,4,227,231,229,239,242,225,240,240,242,239,248,233,237,225,244,229,236,249,229,241,245,225,108,128,34,83,244,242,225,231,245,242,237,245,235,232,105,128,10,63,239,238,239,243,240,225,227,101,128,255,73,110,5,112,117,112,127,112,136,112,148,112,232,227,242,229,237,229,238,116,128,34,6,230,233,238,233,244,121,128,34,30,233,225,242,237,229,238,233,225,110,128,5,107,116,2,112,154,112,222,101,2,112,160,112,211,231,242,225,108,131,34,43,112,173,112,191,112,196,98,2,112,179,112,187,239,244,244,239,109,128,35,33,116,128,35,33,229,120,128,248,245,116,2,112,202,112,207,239,112,128,35,32,112,128,35,32,242,243,229,227,244,233,239,110,128,34,41,233,243,241,245,225,242,101,128,51,5,118,3,112,240,112,249,113,2,226,245,236,236,229,116,128,37,216,227,233,242,227,236,101,128,37,217,243,237,233,236,229,230,225,227,101,128,38,59,111,3,113,22,113,33,113,41,227,249,242,233,236,236,233,99,128,4,81,231,239,238,229,107,128,1,47,244,97,131,3,185,113,52,113,73,113,81,228,233,229,242,229,243,233,115,129,3,202,113,65,244,239,238,239,115,128,3,144,236,225,244,233,110,128,2,105,244,239,238,239,115,128,3,175,240,225,242,229,110,128,36,164,242,233,231,245,242,237,245,235,232,105,128,10,114,115,4,113,120,113,165,113,179,113,187,237,225,236,108,2,113,129,113,140,232,233,242,225,231,225,238,97,128,48,67,235,225,244,225,235,225,238,97,129,48,163,113,153,232,225,236,230,247,233,228,244,104,128,255,104,243,232,225,242,226,229,238,231,225,236,105,128,9,250,244,242,239,235,101,128,2,104,245,240,229,242,233,239,114,128,246,237,116,2,113,203,113,237,229,242,225,244,233,239,110,2,113,215,113,226,232,233,242,225,231,225,238,97,128,48,157,235,225,244,225,235,225,238,97,128,48,253,233,236,228,101,129,1,41,113,246,226,229,236,239,119,128,30,45,117,2,114,4,114,15,226,239,240,239,237,239,230,111,128,49,41,227,249,242,233,236,236,233,99,128,4,78,246,239,247,229,236,243,233,231,110,3,114,42,114,52,114,59,226,229,238,231,225,236,105,128,9,191,228,229,246,97,128,9,63,231,245,234,225,242,225,244,105,128,10,191,250,232,233,244,243,97,2,114,81,114,92,227,249,242,233,236,236,233,99,128,4,117,228,226,236,231,242,225,246,229,227,249,242,233,236,236,233,99,128,4,119,106,138,0,106,114,135,114,198,114,209,115,3,115,19,115,132,115,201,115,206,115,218,115,226,97,4,114,145,114,156,114,166,114,173,225,242,237,229,238,233,225,110,128,5,113,226,229,238,231,225,236,105,128,9,156,228,229,246,97,128,9,28,231,117,2,114,180,114,189,234,225,242,225,244,105,128,10,156,242,237,245,235,232,105,128,10,28,226,239,240,239,237,239,230,111,128,49,16,99,3,114,217,114,224,114,246,225,242,239,110,128,1,240,233,242,99,2,114,232,114,237,236,101,128,36,217,245,237,230,236,229,120,128,1,53,242,239,243,243,229,228,244,225,233,108,128,2,157,228,239,244,236,229,243,243,243,244,242,239,235,101,128,2,95,101,3,115,27,115,38,115,103,227,249,242,233,236,236,233,99,128,4,88,229,109,4,115,49,115,58,115,72,115,88,225,242,225,226,233,99,128,6,44,230,233,238,225,236,225,242,225,226,233,99,128,254,158,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,159,237,229,228,233,225,236,225,242,225,226,233,99,128,254,160,104,2,115,109,115,118,225,242,225,226,233,99,128,6,152,230,233,238,225,236,225,242,225,226,233,99,128,251,139,104,2,115,138,115,188,97,3,115,146,115,156,115,163,226,229,238,231,225,236,105,128,9,157,228,229,246,97,128,9,29,231,117,2,115,170,115,179,234,225,242,225,244,105,128,10,157,242,237,245,235,232,105,128,10,29,229,232,225,242,237,229,238,233,225,110,128,5,123,233,115,128,48,4,237,239,238,239,243,240,225,227,101,128,255,74,240,225,242,229,110,128,36,165,243,245,240,229,242,233,239,114,128,2,178,107,146,0,107,116,21,118,110,118,121,118,183,118,194,119,28,119,42,120,150,121,90,121,103,121,129,121,178,122,60,122,82,122,95,122,118,122,160,122,170,97,12,116,47,116,79,116,101,116,131,116,245,117,14,117,44,117,69,117,175,117,189,118,56,118,85,98,2,116,53,116,70,225,243,232,235,233,242,227,249,242,233,236,236,233,99,128,4,161,229,238,231,225,236,105,128,9,149,99,2,116,85,116,91,245,244,101,128,30,49,249,242,233,236,236,233,99,128,4,58,228,101,2,116,108,116,126,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,155,246,97,128,9,21,102,135,5,219,116,149,116,158,116,178,116,192,116,201,116,217,116,232,225,242,225,226,233,99,128,6,67,228,225,231,229,243,104,129,251,59,116,169,232,229,226,242,229,119,128,251,59,230,233,238,225,236,225,242,225,226,233,99,128,254,218,232,229,226,242,229,119,128,5,219,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,219,237,229,228,233,225,236,225,242,225,226,233,99,128,254,220,242,225,230,229,232,229,226,242,229,119,128,251,77,231,117,2,116,252,117,5,234,225,242,225,244,105,128,10,149,242,237,245,235,232,105,128,10,21,104,2,117,20,117,30,233,242,225,231,225,238,97,128,48,75,239,239,235,227,249,242,233,236,236,233,99,128,4,196,235,225,244,225,235,225,238,97,129,48,171,117,57,232,225,236,230,247,233,228,244,104,128,255,118,112,2,117,75,117,96,240,97,129,3,186,117,82,243,249,237,226,239,236,231,242,229,229,107,128,3,240,249,229,239,245,110,3,117,108,117,122,117,156,237,233,229,245,237,235,239,242,229,225,110,128,49,113,112,2,117,128,117,143,232,233,229,245,240,232,235,239,242,229,225,110,128,49,132,233,229,245,240,235,239,242,229,225,110,128,49,120,243,243,225,238,231,240,233,229,245,240,235,239,242,229,225,110,128,49,121,242,239,242,233,233,243,241,245,225,242,101,128,51,13,115,5,117,201,117,245,118,4,118,12,118,40,232,233,228,225,225,245,244,111,2,117,214,117,223,225,242,225,226,233,99,128,6,64,238,239,243,233,228,229,226,229,225,242,233,238,231,225,242,225,226,233,99,128,6,64,237,225,236,236,235,225,244,225,235,225,238,97,128,48,245,241,245,225,242,101,128,51,132,242,97,2,118,19,118,28,225,242,225,226,233,99,128,6,80,244,225,238,225,242,225,226,233,99,128,6,77,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,159,244,225,232,233,242,225,240,242,239,236,239,238,231,237,225,242,235,232,225,236,230,247,233,228,244,104,128,255,112,246,229,242,244,233,227,225,236,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,157,226,239,240,239,237,239,230,111,128,49,14,99,4,118,131,118,153,118,162,118,170,97,2,118,137,118,147,236,243,241,245,225,242,101,128,51,137,242,239,110,128,1,233,229,228,233,236,236,97,128,1,55,233,242,227,236,101,128,36,218,239,237,237,225,225,227,227,229,238,116,128,1,55,228,239,244,226,229,236,239,119,128,30,51,101,4,118,204,118,231,119,0,119,12,104,2,118,210,118,221,225,242,237,229,238,233,225,110,128,5,132,233,242,225,231,225,238,97,128,48,81,235,225,244,225,235,225,238,97,129,48,177,118,244,232,225,236,230,247,233,228,244,104,128,255,121,238,225,242,237,229,238,233,225,110,128,5,111,243,237,225,236,236,235,225,244,225,235,225,238,97,128,48,246,231,242,229,229,238,236,225,238,228,233,99,128,1,56,104,6,119,56,119,185,119,196,119,221,120,52,120,140,97,5,119,68,119,78,119,89,119,96,119,121,226,229,238,231,225,236,105,128,9,150,227,249,242,233,236,236,233,99,128,4,69,228,229,246,97,128,9,22,231,117,2,119,103,119,112,234,225,242,225,244,105,128,10,150,242,237,245,235,232,105,128,10,22,104,4,119,131,119,140,119,154,119,170,225,242,225,226,233,99,128,6,46,230,233,238,225,236,225,242,225,226,233,99,128,254,166,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,167,237,229,228,233,225,236,225,242,225,226,233,99,128,254,168,229,233,227,239,240,244,233,99,128,3,231,232,97,2,119,203,119,210,228,229,246,97,128,9,89,231,245,242,237,245,235,232,105,128,10,89,233,229,245,235,104,4,119,235,120,14,120,29,120,38,97,2,119,241,120,0,227,233,242,227,236,229,235,239,242,229,225,110,128,50,120,240,225,242,229,238,235,239,242,229,225,110,128,50,24,227,233,242,227,236,229,235,239,242,229,225,110,128,50,106,235,239,242,229,225,110,128,49,75,240,225,242,229,238,235,239,242,229,225,110,128,50,10,111,4,120,62,120,111,120,121,120,126,235,104,4,120,73,120,82,120,91,120,101,225,233,244,232,225,105,128,14,2,239,238,244,232,225,105,128,14,5,245,225,244,244,232,225,105,128,14,3,247,225,233,244,232,225,105,128,14,4,237,245,244,244,232,225,105,128,14,91,239,107,128,1,153,242,225,235],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+51201);allocate([232,225,238,231,244,232,225,105,128,14,6,250,243,241,245,225,242,101,128,51,145,105,4,120,160,120,171,120,196,120,245,232,233,242,225,231,225,238,97,128,48,77,235,225,244,225,235,225,238,97,129,48,173,120,184,232,225,236,230,247,233,228,244,104,128,255,119,242,111,3,120,205,120,220,120,236,231,245,242,225,237,245,243,241,245,225,242,101,128,51,21,237,229,229,244,239,242,245,243,241,245,225,242,101,128,51,22,243,241,245,225,242,101,128,51,20,249,229,239,107,5,121,4,121,39,121,54,121,63,121,77,97,2,121,10,121,25,227,233,242,227,236,229,235,239,242,229,225,110,128,50,110,240,225,242,229,238,235,239,242,229,225,110,128,50,14,227,233,242,227,236,229,235,239,242,229,225,110,128,50,96,235,239,242,229,225,110,128,49,49,240,225,242,229,238,235,239,242,229,225,110,128,50,0,243,233,239,243,235,239,242,229,225,110,128,49,51,234,229,227,249,242,233,236,236,233,99,128,4,92,108,2,121,109,121,120,233,238,229,226,229,236,239,119,128,30,53,243,241,245,225,242,101,128,51,152,109,3,121,137,121,151,121,162,227,245,226,229,228,243,241,245,225,242,101,128,51,166,239,238,239,243,240,225,227,101,128,255,75,243,241,245,225,242,229,228,243,241,245,225,242,101,128,51,162,111,5,121,190,121,216,121,254,122,10,122,24,104,2,121,196,121,206,233,242,225,231,225,238,97,128,48,83,237,243,241,245,225,242,101,128,51,192,235,97,2,121,223,121,231,233,244,232,225,105,128,14,1,244,225,235,225,238,97,129,48,179,121,242,232,225,236,230,247,233,228,244,104,128,255,122,239,240,239,243,241,245,225,242,101,128,51,30,240,240,225,227,249,242,233,236,236,233,99,128,4,129,114,2,122,30,122,50,229,225,238,243,244,225,238,228,225,242,228,243,249,237,226,239,108,128,50,127,239,238,233,243,227,237,98,128,3,67,240,97,2,122,67,122,73,242,229,110,128,36,166,243,241,245,225,242,101,128,51,170,243,233,227,249,242,233,236,236,233,99,128,4,111,116,2,122,101,122,110,243,241,245,225,242,101,128,51,207,245,242,238,229,100,128,2,158,117,2,122,124,122,135,232,233,242,225,231,225,238,97,128,48,79,235,225,244,225,235,225,238,97,129,48,175,122,148,232,225,236,230,247,233,228,244,104,128,255,120,246,243,241,245,225,242,101,128,51,184,247,243,241,245,225,242,101,128,51,190,108,146,0,108,122,220,124,247,125,20,125,86,125,124,126,20,126,29,126,45,126,69,126,87,126,205,126,246,127,125,127,133,127,166,127,175,127,183,127,245,97,7,122,236,122,246,122,253,123,4,123,29,123,45,124,235,226,229,238,231,225,236,105,128,9,178,227,245,244,101,128,1,58,228,229,246,97,128,9,50,231,117,2,123,11,123,20,234,225,242,225,244,105,128,10,178,242,237,245,235,232,105,128,10,50,235,235,232,225,238,231,249,225,239,244,232,225,105,128,14,69,109,10,123,67,124,6,124,23,124,61,124,75,124,94,124,110,124,130,124,150,124,173,97,2,123,73,123,254,236,229,102,4,123,85,123,99,123,191,123,208,230,233,238,225,236,225,242,225,226,233,99,128,254,252,232,225,237,250,97,2,123,109,123,150,225,226,239,246,101,2,123,119,123,133,230,233,238,225,236,225,242,225,226,233,99,128,254,248,233,243,239,236,225,244,229,228,225,242,225,226,233,99,128,254,247,226,229,236,239,119,2,123,160,123,174,230,233,238,225,236,225,242,225,226,233,99,128,254,250,233,243,239,236,225,244,229,228,225,242,225,226,233,99,128,254,249,233,243,239,236,225,244,229,228,225,242,225,226,233,99,128,254,251,237,225,228,228,225,225,226,239,246,101,2,123,223,123,237,230,233,238,225,236,225,242,225,226,233,99,128,254,246,233,243,239,236,225,244,229,228,225,242,225,226,233,99,128,254,245,242,225,226,233,99,128,6,68,226,228,97,129,3,187,124,14,243,244,242,239,235,101,128,1,155,229,100,130,5,220,124,32,124,52,228,225,231,229,243,104,129,251,60,124,43,232,229,226,242,229,119,128,251,60,232,229,226,242,229,119,128,5,220,230,233,238,225,236,225,242,225,226,233,99,128,254,222,232,225,232,233,238,233,244,233,225,236,225,242,225,226,233,99,128,252,202,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,223,234,229,229,237,233,238,233,244,233,225,236,225,242,225,226,233,99,128,252,201,235,232,225,232,233,238,233,244,233,225,236,225,242,225,226,233,99,128,252,203,236,225,237,232,229,232,233,243,239,236,225,244,229,228,225,242,225,226,233,99,128,253,242,237,101,2,124,180,124,193,228,233,225,236,225,242,225,226,233,99,128,254,224,229,109,2,124,200,124,219,232,225,232,233,238,233,244,233,225,236,225,242,225,226,233,99,128,253,136,233,238,233,244,233,225,236,225,242,225,226,233,99,128,252,204,242,231,229,227,233,242,227,236,101,128,37,239,98,3,124,255,125,4,125,10,225,114,128,1,154,229,236,116,128,2,108,239,240,239,237,239,230,111,128,49,12,99,4,125,30,125,37,125,46,125,73,225,242,239,110,128,1,62,229,228,233,236,236,97,128,1,60,233,242,99,2,125,54,125,59,236,101,128,36,219,245,237,230,236,229,248,226,229,236,239,119,128,30,61,239,237,237,225,225,227,227,229,238,116,128,1,60,228,239,116,130,1,64,125,96,125,105,225,227,227,229,238,116,128,1,64,226,229,236,239,119,129,30,55,125,115,237,225,227,242,239,110,128,30,57,101,3,125,132,125,170,126,15,230,116,2,125,139,125,155,225,238,231,236,229,225,226,239,246,229,227,237,98,128,3,26,244,225,227,235,226,229,236,239,247,227,237,98,128,3,24,243,115,132,0,60,125,183,125,205,125,217,126,7,229,241,245,225,108,129,34,100,125,193,239,242,231,242,229,225,244,229,114,128,34,218,237,239,238,239,243,240,225,227,101,128,255,28,111,2,125,223,125,252,114,2,125,229,125,242,229,241,245,233,246,225,236,229,238,116,128,34,114,231,242,229,225,244,229,114,128,34,118,246,229,242,229,241,245,225,108,128,34,102,243,237,225,236,108,128,254,100,250,104,128,2,110,230,226,236,239,227,107,128,37,140,232,239,239,235,242,229,244,242,239,230,236,229,120,128,2,109,105,2,126,51,126,56,242,97,128,32,164,247,238,225,242,237,229,238,233,225,110,128,5,108,106,129,1,201,126,75,229,227,249,242,233,236,236,233,99,128,4,89,108,132,246,192,126,99,126,123,126,134,126,143,97,2,126,105,126,112,228,229,246,97,128,9,51,231,245,234,225,242,225,244,105,128,10,179,233,238,229,226,229,236,239,119,128,30,59,236,225,228,229,246,97,128,9,52,246,239,227,225,236,233,99,3,126,157,126,167,126,174,226,229,238,231,225,236,105,128,9,225,228,229,246,97,128,9,97,246,239,247,229,236,243,233,231,110,2,126,188,126,198,226,229,238,231,225,236,105,128,9,227,228,229,246,97,128,9,99,109,3,126,213,126,226,126,237,233,228,228,236,229,244,233,236,228,101,128,2,107,239,238,239,243,240,225,227,101,128,255,76,243,241,245,225,242,101,128,51,208,111,6,127,4,127,16,127,58,127,69,127,75,127,117,227,232,245,236,225,244,232,225,105,128,14,44,231,233,227,225,108,3,127,28,127,34,127,53,225,238,100,128,34,39,238,239,116,129,0,172,127,42,242,229,246,229,242,243,229,100,128,35,16,239,114,128,34,40,236,233,238,231,244,232,225,105,128,14,37,238,231,115,128,1,127,247,236,233,238,101,2,127,85,127,108,99,2,127,91,127,103,229,238,244,229,242,236,233,238,101,128,254,78,237,98,128,3,50,228,225,243,232,229,100,128,254,77,250,229,238,231,101,128,37,202,240,225,242,229,110,128,36,167,115,3,127,141,127,148,127,156,236,225,243,104,128,1,66,241,245,225,242,101,128,33,19,245,240,229,242,233,239,114,128,246,238,244,243,232,225,228,101,128,37,145,245,244,232,225,105,128,14,38,246,239,227,225,236,233,99,3,127,197,127,207,127,214,226,229,238,231,225,236,105,128,9,140,228,229,246,97,128,9,12,246,239,247,229,236,243,233,231,110,2,127,228,127,238,226,229,238,231,225,236,105,128,9,226,228,229,246,97,128,9,98,248,243,241,245,225,242,101,128,51,211,109,144,0,109,128,35,130,144,130,169,130,196,130,221,132,18,132,40,133,95,133,125,133,174,134,25,134,47,134,72,134,81,135,108,135,136,97,12,128,61,128,71,128,135,128,142,128,167,128,215,130,51,130,76,130,81,130,95,130,107,130,112,226,229,238,231,225,236,105,128,9,174,99,2,128,77,128,129,242,239,110,132,0,175,128,91,128,102,128,108,128,117,226,229,236,239,247,227,237,98,128,3,49,227,237,98,128,3,4,236,239,247,237,239,100,128,2,205,237,239,238,239,243,240,225,227,101,128,255,227,245,244,101,128,30,63,228,229,246,97,128,9,46,231,117,2,128,149,128,158,234,225,242,225,244,105,128,10,174,242,237,245,235,232,105,128,10,46,104,2,128,173,128,205,225,240,225,235,104,2,128,183,128,192,232,229,226,242,229,119,128,5,164,236,229,230,244,232,229,226,242,229,119,128,5,164,233,242,225,231,225,238,97,128,48,126,105,5,128,227,129,40,129,103,129,133,130,39,227,232,225,244,244,225,247,97,3,128,242,129,17,129,24,236,239,119,2,128,250,129,5,236,229,230,244,244,232,225,105,128,248,149,242,233,231,232,244,244,232,225,105,128,248,148,244,232,225,105,128,14,75,245,240,240,229,242,236,229,230,244,244,232,225,105,128,248,147,229,107,3,129,49,129,80,129,87,236,239,119,2,129,57,129,68,236,229,230,244,244,232,225,105,128,248,140,242,233,231,232,244,244,232,225,105,128,248,139,244,232,225,105,128,14,72,245,240,240,229,242,236,229,230,244,244,232,225,105,128,248,138,232,225,238,225,235,225,116,2,129,115,129,126,236,229,230,244,244,232,225,105,128,248,132,244,232,225,105,128,14,49,116,3,129,141,129,169,129,232,225,233,235,232,117,2,129,151,129,162,236,229,230,244,244,232,225,105,128,248,137,244,232,225,105,128,14,71,232,111,3,129,178,129,209,129,216,236,239,119,2,129,186,129,197,236,229,230,244,244,232,225,105,128,248,143,242,233,231,232,244,244,232,225,105,128,248,142,244,232,225,105,128,14,73,245,240,240,229,242,236,229,230,244,244,232,225,105,128,248,141,242,105,3,129,241,130,16,130,23,236,239,119,2,129,249,130,4,236,229,230,244,244,232,225,105,128,248,146,242,233,231,232,244,244,232,225,105,128,248,145,244,232,225,105,128,14,74,245,240,240,229,242,236,229,230,244,244,232,225,105,128,248,144,249,225,237,239,235,244,232,225,105,128,14,70,235,225,244,225,235,225,238,97,129,48,222,130,64,232,225,236,230,247,233,228,244,104,128,255,143,236,101,128,38,66,238,243,249,239,238,243,241,245,225,242,101,128,51,71,241,225,230,232,229,226,242,229,119,128,5,190,242,115,128,38,66,115,2,130,118,130,136,239,242,225,227,233,242,227,236,229,232,229,226,242,229,119,128,5,175,241,245,225,242,101,128,51,131,98,2,130,150,130,160,239,240,239,237,239,230,111,128,49,7,243,241,245,225,242,101,128,51,212,99,2,130,175,130,183,233,242,227,236,101,128,36,220,245,226,229,228,243,241,245,225,242,101,128,51,165,228,239,116,2,130,204,130,213,225,227,227,229,238,116,128,30,65,226,229,236,239,119,128,30,67,101,7,130,237,131,108,131,119,131,134,131,159,131,196,131,208,101,2,130,243,131,95,109,4,130,253,131,6,131,20,131,36,225,242,225,226,233,99,128,6,69,230,233,238,225,236,225,242,225,226,233,99,128,254,226,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,227,237,101,2,131,43,131,56,228,233,225,236,225,242,225,226,233,99,128,254,228,229,237,105,2,131,64,131,79,238,233,244,233,225,236,225,242,225,226,233,99,128,252,209,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,72,244,239,242,245,243,241,245,225,242,101,128,51,77,232,233,242,225,231,225,238,97,128,48,129,233,250,233,229,242,225,243,241,245,225,242,101,128,51,126,235,225,244,225,235,225,238,97,129,48,225,131,147,232,225,236,230,247,233,228,244,104,128,255,146,109,130,5,222,131,167,131,187,228,225,231,229,243,104,129,251,62,131,178,232,229,226,242,229,119,128,251,62,232,229,226,242,229,119,128,5,222,238,225,242,237,229,238,233,225,110,128,5,116,242,235,232,97,3,131,219,131,228,132,5,232,229,226,242,229,119,128,5,165,235,229,230,245,236,97,2,131,239,131,248,232,229,226,242,229,119,128,5,166,236,229,230,244,232,229,226,242,229,119,128,5,166,236,229,230,244,232,229,226,242,229,119,128,5,165,104,2,132,24,132,30,239,239,107,128,2,113,250,243,241,245,225,242,101,128,51,146,105,6,132,54,132,91,132,228,132,239,133,8,133,65,228,100,2,132,61,132,86,236,229,228,239,244,235,225,244,225,235,225,238,225,232,225,236,230,247,233,228,244,104,128,255,101,239,116,128,0,183,229,245,109,5,132,105,132,140,132,155,132,164,132,215,97,2,132,111,132,126,227,233,242,227,236,229,235,239,242,229,225,110,128,50,114,240,225,242,229,238,235,239,242,229,225,110,128,50,18,227,233,242,227,236,229,235,239,242,229,225,110,128,50,100,235,239,242,229,225,110,128,49,65,112,2,132,170,132,202,97,2,132,176,132,190,238,243,233,239,243,235,239,242,229,225,110,128,49,112,242,229,238,235,239,242,229,225,110,128,50,4,233,229,245,240,235,239,242,229,225,110,128,49,110,243,233,239,243,235,239,242,229,225,110,128,49,111,232,233,242,225,231,225,238,97,128,48,127,235,225,244,225,235,225,238,97,129,48,223,132,252,232,225,236,230,247,233,228,244,104,128,255,144,238,117,2,133,15,133,60,115,132,34,18,133,27,133,38,133,47,133,53,226,229,236,239,247,227,237,98,128,3,32,227,233,242,227,236,101,128,34,150,237,239,100,128,2,215,240,236,245,115,128,34,19,244,101,128,32,50,242,105,2,133,72,133,86,226,225,225,242,245,243,241,245,225,242,101,128,51,74,243,241,245,225,242,101,128,51,73,108,2,133,101,133,116,239,238,231,236,229,231,244,245,242,238,229,100,128,2,112,243,241,245,225,242,101,128,51,150,109,3,133,133,133,147,133,158,227,245,226,229,228,243,241,245,225,242,101,128,51,163,239,238,239,243,240,225,227,101,128,255,77,243,241,245,225,242,229,228,243,241,245,225,242,101,128,51,159,111,5,133,186,133,212,133,237,133,247,134,0,104,2,133,192,133,202,233,242,225,231,225,238,97,128,48,130,237,243,241,245,225,242,101,128,51,193,235,225,244,225,235,225,238,97,129,48,226,133,225,232,225,236,230,247,233,228,244,104,128,255,147,236,243,241,245,225,242,101,128,51,214,237,225,244,232,225,105,128,14,33,246,229,242,243,243,241,245,225,242,101,129,51,167,134,15,228,243,241,245,225,242,101,128,51,168,240,97,2,134,32,134,38,242,229,110,128,36,168,243,241,245,225,242,101,128,51,171,115,2,134,53,134,62,243,241,245,225,242,101,128,51,179,245,240,229,242,233,239,114,128,246,239,244,245,242,238,229,100,128,2,111,117,141,0,181,134,111,134,115,134,125,134,149,134,159,134,181,134,192,134,217,134,240,134,250,135,24,135,88,135,98,49,128,0,181,225,243,241,245,225,242,101,128,51,130,227,104,2,134,132,134,142,231,242,229,225,244,229,114,128,34,107,236,229,243,115,128,34,106,230,243,241,245,225,242,101,128,51,140,103,2,134,165,134,172,242,229,229,107,128,3,188,243,241,245,225,242,101,128,51,141,232,233,242,225,231,225,238,97,128,48,128,235,225,244,225,235,225,238,97,129,48,224,134,205,232,225,236,230,247,233,228,244,104,128,255,145,108,2,134,223,134,232,243,241,245,225,242,101,128,51,149,244,233,240,236,121,128,0,215,237,243,241,245,225,242,101,128,51,155,238,225,104,2,135,2,135,11,232,229,226,242,229,119,128,5,163,236,229,230,244,232,229,226,242,229,119,128,5,163,115,2,135,30,135,79,233,99,3,135,39,135,56,135,67,225,236,238,239,244,101,129,38,106,135,50,228,226,108,128,38,107,230,236,225,244,243,233,231,110,128,38,109,243,232,225,242,240,243,233,231,110,128,38,111,243,241,245,225,242,101,128,51,178,246,243,241,245,225,242,101,128,51,182,247,243,241,245,225,242,101,128,51,188,118,2,135,114,135,127,237,229,231,225,243,241,245,225,242,101,128,51,185,243,241,245,225,242,101,128,51,183,119,2,135,142,135,155,237,229,231,225,243,241,245,225,242,101,128,51,191,243,241,245,225,242,101,128,51,189,110,150,0,110,135,212,136,90,136,114,136,180,136,205,137,7,137,17,137,84,137,127,139,161,139,179,139,204,139,235,140,5,140,70,142,52,142,60,142,85,142,93,143,61,143,71,143,81,97,8,135,230,135,250,136,1,136,8,136,33,136,44,136,69,136,81,98,2,135,236,135,245,229,238,231,225,236,105,128,9,168,236,97,128,34,7,227,245,244,101,128,1,68,228,229,246,97,128,9,40,231,117,2,136,15,136,24,234,225,242,225,244,105,128,10,168,242,237,245,235,232,105,128,10,40,232,233,242,225,231,225,238,97,128,48,106,235,225,244,225,235,225,238,97,129,48,202,136,57,232,225,236,230,247,233,228,244,104,128,255,133,240,239,243,244,242,239,240,232,101,128,1,73,243,241,245,225,242,101,128,51,129,98,2,136,96,136,106,239,240,239,237,239,230,111,128,49,11,243,240,225,227,101,128,0,160,99,4,136,124,136,131,136,140,136,167,225,242,239,110,128,1,72,229,228,233,236,236,97,128,1,70,233,242,99,2,136,148,136,153,236,101,128,36,221,245,237,230,236,229,248,226,229,236,239,119,128,30,75,239,237,237,225,225,227,227,229,238,116,128,1,70,228,239,116,2,136,188,136,197,225,227,227,229,238,116,128,30,69,226,229,236,239,119,128,30,71,101,3,136,213,136,224,136,249,232,233,242,225,231,225,238,97,128,48,109,235,225,244,225,235,225,238,97,129,48,205,136,237,232,225,236,230,247,233,228,244,104,128,255,136,247,243,232,229,241,229,236,243,233,231,110,128,32,170,230,243,241,245,225,242,101,128,51,139,103,2,137,23,137,73,97,3,137,31,137,41,137,48,226,229,238,231,225,236,105,128,9,153,228,229,246,97,128,9,25,231,117,2,137,55,137,64,234,225,242,225,244,105,128,10,153,242,237,245,235,232,105,128,10,25,239,238,231,245,244,232,225,105,128,14,7,104,2,137,90,137,100,233,242,225,231,225,238,97,128,48,147,239,239,107,2,137,108,137,115,236,229,230,116,128,2,114,242,229,244,242,239,230,236,229,120,128,2,115,105,4,137,137,138,50,138,61,138,119,229,245,110,7,137,155,137,190,137,222,137,236,137,245,138,22,138,35,97,2,137,161,137,176,227,233,242,227,236,229,235,239,242,229,225,110,128,50,111,240,225,242,229,238,235,239,242,229,225,110,128,50,15,227,105,2,137,197,137,209,229,245,227,235,239,242,229,225,110,128,49,53,242,227,236,229,235,239,242,229,225,110,128,50,97,232,233,229,245,232,235,239,242,229,225,110,128,49,54,235,239,242,229,225,110,128,49,52,240,97,2,137,252,138,10,238,243,233,239,243,235,239,242,229,225,110,128,49,104,242,229,238,235,239,242,229,225,110,128,50,1,243,233,239,243,235,239,242,229,225,110,128,49,103,244,233,235,229,245,244,235,239,242,229,225,110,128,49,102,232,233,242,225,231,225,238,97,128,48,107,107,2,138,67,138,91,225,244,225,235,225,238,97,129,48,203,138,79,232,225,236,230,247,233,228,244,104,128,255,134,232,225,232,233,116,2,138,101,138,112,236,229,230,244,244,232,225,105,128,248,153,244,232,225,105,128,14,77,238,101,141,0,57,138,150,138,159,138,169,138,199,138,206,138,231,139,2,139,36,139,48,139,59,139,92,139,100,139,111,225,242,225,226,233,99,128,6,105,226,229,238,231,225,236,105,128,9,239,227,233,242,227,236,101,129,36,104,138,180,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,146,228,229,246,97,128,9,111,231,117,2,138,213,138,222,234,225,242,225,244,105,128,10,239,242,237,245,235,232,105,128,10,111,232,97,2,138,238,138,249,227,235,225,242,225,226,233,99,128,6,105,238,231,250,232,239,117,128,48,41,105,2,139,8,139,26,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,40,238,230,229,242,233,239,114,128,32,137,237,239,238,239,243,240,225,227,101,128,255,25,239,236,228,243,244,249,236,101,128,247,57,112,2,139,65,139,72,225,242,229,110,128,36,124,229,114,2,139,79,139,85,233,239,100,128,36,144,243,233,225,110,128,6,249,242,239,237,225,110,128,33,120,243,245,240,229,242,233,239,114,128,32,121,116,2,139,117,139,155,229,229,110,2,139,125,139,134,227,233,242,227,236,101,128,36,114,112,2,139,140,139,147,225,242,229,110,128,36,134,229,242,233,239,100,128,36,154,232,225,105,128,14,89,106,129,1,204,139,167,229,227,249,242,233,236,236,233,99,128,4,90,235,225,244,225,235,225,238,97,129,48,243,139,192,232,225,236,230,247,233,228,244,104,128,255,157,108,2,139,210,139,224,229,231,242,233,231,232,244,236,239,238,103,128,1,158,233,238,229,226,229,236,239,119,128,30,73,109,2,139,241,139,252,239,238,239,243,240,225,227,101,128,255,78,243,241,245,225,242,101,128,51,154,110,2,140,11,140,61,97,3,140,19,140,29,140,36,226,229,238,231,225,236,105,128,9,163,228,229,246,97,128,9,35,231,117,2,140,43,140,52,234,225,242,225,244,105,128,10,163,242,237,245,235,232,105,128,10,35,238,225,228,229,246,97,128,9,41,111,6,140,84,140,95,140,120,140,161,141,113,142,40,232,233,242,225,231,225,238,97,128,48,110,235,225,244,225,235,225,238,97,129,48,206,140,108,232,225,236,230,247,233,228,244,104,128,255,137,110,3,140,128,140,144,140,153,226,242,229,225,235,233,238,231,243,240,225,227,101,128,0,160,229,238,244,232,225,105,128,14,19,245,244,232,225,105,128,14,25,239,110,7,140,178,140,187,140,201,140,235,140,251,141,36,141,95,225,242,225,226,233,99,128,6,70,230,233,238,225,236,225,242,225,226,233,99,128,254,230,231,232,245,238,238,97,2,140,212,140,221,225,242,225,226,233,99,128,6,186,230,233,238,225,236,225,242,225,226,233,99,128,251,159,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,231,234,229,229,237,105,2,141,5,141,20,238,233,244,233,225,236,225,242,225,226,233,99,128,252,210,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,75,237,101,2,141,43,141,56,228,233,225,236,225,242,225,226,233,99,128,254,232,229,237,105,2,141,64,141,79,238,233,244,233,225,236,225,242,225,226,233,99,128,252,213,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,78,238,239,239,238,230,233,238,225,236,225,242,225,226,233,99,128,252,141,116,7,141,129,141,140,141,169,141,204,141,216,141,236,142,6,227,239,238,244,225,233,238,115,128,34,12,101,2,141,146,141,162,236,229,237,229,238,116,129,34,9,141,157,239,102,128,34,9,241,245,225,108,128,34,96,231,242,229,225,244,229,114,129,34,111,141,181,238,239,114,2,141,189,141,197,229,241,245,225,108,128,34,113,236,229,243,115,128,34,121,233,228,229,238,244,233,227,225,108,128,34,98,236,229,243,115,129,34,110,141,225,238,239,242,229,241,245,225,108,128,34,112,112,2,141,242,141,252,225,242,225,236,236,229,108,128,34,38,242,229,227,229,228,229,115,128,34,128,243,117,3,142,15,142,22,142,31,226,243,229,116,128,34,132,227,227,229,229,228,115,128,34,129,240,229,242,243,229,116,128,34,133,247,225,242,237,229,238,233,225,110,128,5,118,240,225,242,229,110,128,36,169,115,2,142,66,142,75,243,241,245,225,242,101,128,51,177,245,240,229,242,233,239,114,128,32,127,244,233,236,228,101,128,0,241,117,132,3,189,142,105,142,116,142,197,143,24,232,233,242,225,231,225,238,97,128,48,108,107,2,142,122,142,146,225,244,225,235,225,238,97,129,48,204,142,134,232,225,236,230,247,233,228,244,104,128,255,135,244,97,3,142,155,142,165,142,172,226,229,238,231,225,236,105,128,9,188,228,229,246,97,128,9,60,231,117,2,142,179,142,188,234,225,242,225,244,105,128,10,188,242,237,245,235,232,105,128,10,60,109,2,142,203,142,237,226,229,242,243,233,231,110,130,0,35,142,217,142,229,237,239,238,239,243,240,225,227,101,128,255,3,243,237,225,236,108,128,254,95,229,114,2,142,244,143,20,225,236,243,233,231,110,2,142,255,143,7,231,242,229,229,107,128,3,116,236,239,247,229,242,231,242,229,229,107,128,3,117,111,128,33,22,110,130,5,224,143,32,143,52,228,225,231,229,243,104,129,251,64,143,43,232,229,226,242,229,119,128,251,64,232,229,226,242,229,119,128,5,224,246,243,241,245,225,242,101,128,51,181,247,243,241,245,225,242,101,128,51,187,249,97,3,143,90,143,100,143,107,226,229,238,231,225,236,105,128,9,158,228,229,246,97,128,9,30,231,117,2,143,114,143,123,234,225,242,225,244,105,128,10,158,242,237,245,235,232,105,128,10,30,111,147,0,111,143,174,143,196,144,18,144,188,145,4,145,19,145,59,145,182,145,203,145,241,145,252,146,174,148,8,148,72,148,105,148,151,149,24,149,71,149,83,97,2,143,180,143,187,227,245,244,101,128,0,243,238,231,244,232,225,105,128,14,45,98,4,143,206,143,248,144,1,144,11,225,242,242,229,100,130,2,117,143,218,143,229,227,249,242,233,236,236,233,99,128,4,233,228,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,235,229,238,231,225,236,105,128,9,147,239,240,239,237,239,230,111,128,49,27,242,229,246,101,128,1,79,99,3,144,26,144,99,144,178,97,2,144,32,144,93,238,228,242,97,3,144,43,144,50,144,61,228,229,246,97,128,9,17,231,245,234,225,242,225,244,105,128,10,145,246,239,247,229,236,243,233,231,110,2,144,75,144,82,228,229,246,97,128,9,73,231,245,234,225,242,225,244,105,128,10,201,242,239,110,128,1,210,233,242,99,2,144,107,144,112,236,101,128,36,222,245,237,230,236,229,120,133,0,244,144,131,144,139,144,150,144,158,144,170,225,227,245,244,101,128,30,209,228,239,244,226,229,236,239,119,128,30,217,231,242,225,246,101,128,30,211,232,239,239,235,225,226,239,246,101,128,30,213,244,233,236,228,101,128,30,215,249,242,233,236,236,233,99,128,4,62,100,4,144,198,144,221,144,227,144,250,226,108,2,144,205,144,213,225,227,245,244,101,128,1,81,231,242,225,246,101,128,2,13,229,246,97,128,9,19,233,229,242,229,243,233,115,129,0,246,144,239,227,249,242,233,236,236,233,99,128,4,231,239,244,226,229,236,239,119,128,30,205,101,129,1,83,145,10,235,239,242,229,225,110,128,49,90,103,3,145,27,145,42,145,49,239,238,229,107,129,2,219,145,36,227,237,98,128,3,40,242,225,246,101,128,0,242,245,234,225,242,225,244,105,128,10,147,104,4,145,69,145,80,145,90,145,168,225,242,237,229,238,233,225,110,128,5,133,233,242,225,231,225,238,97,128,48,74,111,2,145,96,145,106,239,235,225,226,239,246,101,128,30,207,242,110,133,1,161,145,121,145,129,145,140,145,148,145,160,225,227,245,244,101,128,30,219,228,239,244,226,229,236,239,119,128,30,227,231,242,225,246,101,128,30,221,232,239,239,235,225,226,239,246,101,128,30,223,244,233,236,228,101,128,30,225,245,238,231,225,242,245,237,236,225,245,116,128,1,81,105,129,1,163,145,188,238,246,229,242,244,229,228,226,242,229,246,101,128,2,15,107,2,145,209,145,233,225,244,225,235,225,238,97,129,48,170,145,221,232,225,236,230,247,233,228,244,104,128,255,117,239,242,229,225,110,128,49,87,236,229,232,229,226,242,229,119,128,5,171,109,6,146,10,146,38,146,45,146,134,146,145,146,163,225,227,242,239,110,130,1,77,146,22,146,30,225,227,245,244,101,128,30,83,231,242,225,246,101,128,30,81,228,229,246,97,128,9,80,229,231,97,133,3,201,146,61,146,65,146,76,146,90,146,106,49,128,3,214,227,249,242,233,236,236,233,99,128,4,97,236,225,244,233,238,227,236,239,243,229,100,128,2,119,242,239,245,238,228,227,249,242,233,236,236,233,99,128,4,123,116,2,146,112,146,127,233,244,236,239,227,249,242,233,236,236,233,99,128,4,125,239,238,239,115,128,3,206,231,245,234,225,242,225,244,105,128,10,208,233,227,242,239,110,129,3,191,146,155,244,239,238,239,115,128,3,204,239,238,239,243,240,225,227,101,128,255,79,238,101,145,0,49,146,213,146,222,146,232,147,6,147,31,147,40,147,49,147,74,147,108,147,142,147,154,147,173,147,184,147,217,147,227,147,235,147,246,225,242,225,226,233,99,128,6,97,226,229,238,231,225,236,105,128,9,231,227,233,242,227,236,101,129,36,96,146,243,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,138,100,2,147,12,147,18,229,246,97,128,9,103,239,244,229,238,236,229,225,228,229,114,128,32,36,229,233,231,232,244,104,128,33,91,230,233,244,244,229,100,128,246,220,231,117,2,147,56,147,65,234,225,242,225,244,105,128,10,231,242,237,245,235,232,105,128,10,103,232,97,3,147,83,147,94,147,99,227,235,225,242,225,226,233,99,128,6,97,236,102,128,0,189,238,231,250,232,239,117,128,48,33,105,2,147,114,147,132,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,32,238,230,229,242,233,239,114,128,32,129,237,239,238,239,243,240,225,227,101,128,255,17,238,245,237,229,242,225,244,239,242,226,229,238,231,225,236,105,128,9,244,239,236,228,243,244,249,236,101,128,247,49,112,2,147,190,147,197,225,242,229,110,128,36,116,229,114,2,147,204,147,210,233,239,100,128,36,136,243,233,225,110,128,6,241,241,245,225,242,244,229,114,128,0,188,242,239,237,225,110,128,33,112,243,245,240,229,242,233,239,114,128,0,185,244,104,2,147,253,148,2,225,105,128,14,81,233,242,100,128,33,83,111,3,148,16,148,50,148,66,103,2,148,22,148,40,239,238,229,107,129,1,235,148,31,237,225,227,242,239,110,128,1,237,245,242,237,245,235,232,105,128,10,19,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,75,240,229,110,128,2,84,112,3,148,80,148,87,148,98,225,242,229,110,128,36,170,229,238,226,245,236,236,229,116,128,37,230,244,233,239,110,128,35,37,114,2,148,111,148,140,100,2,148,117,148,128,230,229,237,233,238,233,238,101,128,0,170,237,225,243,227,245,236,233,238,101,128,0,186,244,232,239,231,239,238,225,108,128,34,31,115,5,148,163,148,195,148,212,149,1,149,14,232,239,242,116,2,148,172,148,179,228,229,246,97,128,9,18,246,239,247,229,236,243,233,231,238,228,229,246,97,128,9,74,236,225,243,104,129,0,248,148,204,225,227,245,244,101,128,1,255,237,225,236,108,2,148,221,148,232,232,233,242,225,231,225,238,97,128,48,73,235,225,244,225,235,225,238,97,129,48,169,148,245,232,225,236,230,247,233,228,244,104,128,255,107,244,242,239,235,229,225,227,245,244,101,128,1,255,245,240,229,242,233,239,114,128,246,240,116,2,149,30,149,41,227,249,242,233,236,236,233,99,128,4,127,233,236,228,101,130,0,245,149,52,149,60,225,227,245,244,101,128,30,77,228,233,229,242,229,243,233,115,128,30,79,245,226,239,240,239,237,239,230,111,128,49,33,118,2,149,89,149,170,229,114,2,149,96,149,162,236,233,238,101,131,32,62,149,109,149,132,149,155,99,2,149,115,149,127,229,238,244,229,242,236,233,238,101,128,254,74,237,98,128,3,5,100,2,149,138,149,146,225,243,232,229,100,128,254,73,226,236,247,225,246,121,128,254,76,247,225,246,121,128,254,75,243,227,239,242,101,128,0,175,239,247,229,236,243,233,231,110,3,149,185,149,195,149,202,226,229,238,231,225,236,105,128,9,203,228,229,246,97,128,9,75,231,245,234,225,242,225,244,105,128,10,203,112,145,0,112,149,251,152,123,152,134,152,143,152,155,154,80,154,90,155,82,156,101,156,191,156,217,157,92,157,100,158,2,158,60,158,88,158,98,97,14,150,25,150,57,150,67,150,74,150,81,150,129,150,140,150,154,150,165,150,212,150,226,151,238,152,21,152,111,97,2,150,31,150,43,237,240,243,243,241,245,225,242,101,128,51,128,243,229,238,244,239,243,241,245,225,242,101,128,51,43,226,229,238,231,225,236,105,128,9,170,227,245,244,101,128,30,85,228,229,246,97,128,9,42,103,2,150,87,150,105,101,2,150,93,150,100,228,239,247,110,128,33,223,245,112,128,33,222,117,2,150,111,150,120,234,225,242,225,244,105,128,10,170,242,237,245,235,232,105,128,10,42,232,233,242,225,231,225,238,97,128,48,113,233,249,225,238,238,239,233,244,232,225,105,128,14,47,235,225,244,225,235,225,238,97,128,48,209,108,2,150,171,150,196,225,244,225,236,233,250,225,244,233,239,238,227,249,242,233,236,236,233,227,227,237,98,128,4,132,239,227,232,235,225,227,249,242,233,236,236,233,99,128,4,192,238,243,233,239,243,235,239,242,229,225,110,128,49,127,114,3,150,234,150,255,151,227,97,2,150,240,150,248,231,242,225,240,104,128,0,182,236,236,229,108,128,34,37,229,110,2,151,6,151,116,236,229,230,116,136,0,40,151,29,151,44,151,49,151,54,151,65,151,77,151,100,151,105,225,236,244,239,238,229,225,242,225,226,233,99,128,253,62,226,116,128,248,237,229,120,128,248,236,233,238,230,229,242,233,239,114,128,32,141,237,239,238,239,243,240,225,227,101,128,255,8,115,2,151,83,151,90,237,225,236,108,128,254,89,245,240,229,242,233,239,114,128,32,125,244,112,128,248,235,246,229,242,244,233,227,225,108,128,254,53,242,233,231,232,116,136,0,41,151,140,151,155,151,160,151,165,151,176,151,188,151,211,151,216,225,236,244,239,238,229,225,242,225,226,233,99,128,253,63,226,116,128,248,248,229,120,128,248,247,233,238,230,229,242,233,239,114,128,32,142,237,239,238,239,243,240,225,227,101,128,255,9,115,2,151,194,151,201,237,225,236,108,128,254,90,245,240,229,242,233,239,114,128,32,126,244,112,128,248,246,246,229,242,244,233,227,225,108,128,254,54,244,233,225,236,228,233,230,102,128,34,2,115,3,151,246,152,1,152,13,229,241,232,229,226,242,229,119,128,5,192,232,244,225,232,229,226,242,229,119,128,5,153,241,245,225,242,101,128,51,169,244,225,104,134,5,183,152,39,152,53,152,58,152,67,152,82,152,98,49,2,152,45,152,49,49,128,5,183,100,128,5,183,178,97,128,5,183,232,229,226,242,229,119,128,5,183,238,225,242,242,239,247,232,229,226,242,229,119,128,5,183,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,183,247,233,228,229,232,229,226,242,229,119,128,5,183,250,229,242,232,229,226,242,229,119,128,5,161,226,239,240,239,237,239,230,111,128,49,6,227,233,242,227,236,101,128,36,223,228,239,244,225,227,227,229,238,116,128,30,87,101,137,5,228,152,177,152,188,152,208,152,220,152,240,153,86,153,97,153,118,154,73,227,249,242,233,236,236,233,99,128,4,63,228,225,231,229,243,104,129,251,68,152,199,232,229,226,242,229,119,128,251,68,229,250,233,243,241,245,225,242,101,128,51,59,230,233,238,225,236,228,225,231,229,243,232,232,229,226,242,229,119,128,251,67,104,5,152,252,153,19,153,27,153,41,153,71,225,114,2,153,3,153,10,225,226,233,99,128,6,126,237,229,238,233,225,110,128,5,122,229,226,242,229,119,128,5,228,230,233,238,225,236,225,242,225,226,233,99,128,251,87,105,2,153,47,153,62,238,233,244,233,225,236,225,242,225,226,233,99,128,251,88,242,225,231,225,238,97,128,48,122,237,229,228,233,225,236,225,242,225,226,233,99,128,251,89,235,225,244,225,235,225,238,97,128,48,218,237,233,228,228,236,229,232,239,239,235,227,249,242,233,236,236,233,99,128,4,167,114,5,153,130,153,142,153,184,154,49,154,62,225,230,229,232,229,226,242,229,119,128,251,78,227,229,238,116,131,0,37,153,155,153,164,153,176,225,242,225,226,233,99,128,6,106,237,239,238,239,243,240,225,227,101,128,255,5,243,237,225,236,108,128,254,106,105,2,153,190,154,31,239,100,134,0,46,153,207,153,218,153,229,153,241,153,252,154,8,225,242,237,229,238,233,225,110,128,5,137,227,229,238,244,229,242,229,100,128,0,183,232,225,236,230,247,233,228,244,104,128,255,97,233,238,230,229,242,233,239,114,128,246,231,237,239,238,239,243,240,225,227,101,128,255,14,115,2,154,14,154,21,237,225,236,108,128,254,82,245,240,229,242,233,239,114,128,246,232,243,240,239,237,229,238,233,231,242,229,229,235,227,237,98,128,3,66,240,229,238,228,233,227,245,236,225,114,128,34,165,244,232,239,245,243,225,238,100,128,32,48,243,229,244,97,128,32,167,230,243,241,245,225,242,101,128,51,138,104,3,154,98,154,148,155,29,97,3,154,106,154,116,154,123,226,229,238,231,225,236,105,128,9,171,228,229,246,97,128,9,43,231,117,2,154,130,154,139,234,225,242,225,244,105,128,10,171,242,237,245,235,232,105,128,10,43,105,133,3,198,154,162,154,166,154,252,155,4,155,15,49,128,3,213,229,245,240,104,4,154,179,154,214,154,229,154,238,97,2,154,185,154,200,227,233,242,227,236,229,235,239,242,229,225,110,128,50,122,240,225,242,229,238,235,239,242,229,225,110,128,50,26,227,233,242,227,236,229,235,239,242,229,225,110,128,50,108,235,239,242,229,225,110,128,49,77,240,225,242,229,238,235,239,242,229,225,110,128,50,12,236,225,244,233,110,128,2,120,238,244,232,245,244,232,225,105,128,14,58,243,249,237,226,239,236,231,242,229,229,107,128,3,213,111,3,155,37,155,42,155,68,239,107,128,1,165,240,104,2,155,49,155,58,225,238,244,232,225,105,128,14,30,245,238,231,244,232,225,105,128,14,28,243,225,237,240,232,225,239,244,232,225,105,128,14,32,105,133,3,192,155,96,156,52,156,63,156,74,156,88,229,245,112,6,155,112,155,147,155,179,155,207,155,221,156,17,97,2,155,118,155,133,227,233,242,227,236,229,235,239,242,229,225,110,128,50,115,240,225,242,229,238,235,239,242,229,225,110,128,50,19,227,105,2,155,154,155,166,229,245,227,235,239,242,229,225,110,128,49,118,242,227,236,229,235,239,242,229,225,110,128,50,101,107,2,155,185,155,199,233,249,229,239,235,235,239,242,229,225,110,128,49,114,239,242,229,225,110,128,49,66,240,225,242,229,238,235,239,242,229,225,110,128,50,5,243,233,239,115,2,155,230,156,2,107,2,155,236,155,250,233,249,229,239,235,235,239,242,229,225,110,128,49,116,239,242,229,225,110,128,49,68,244,233,235,229,245,244,235,239,242,229,225,110,128,49,117,116,2,156,23,156,38,232,233,229,245,244,232,235,239,242,229,225,110,128,49,119,233,235,229,245,244,235,239,242,229,225,110,128,49,115,232,233,242,225,231,225,238,97,128,48,116,235,225,244,225,235,225,238,97,128,48,212,243,249,237,226,239,236,231,242,229,229,107,128,3,214,247,242,225,242,237,229,238,233,225,110,128,5,131,236,245,115,132,0,43,156,115,156,126,156,135,156,168,226,229,236,239,247,227,237,98,128,3,31,227,233,242,227,236,101,128,34,149,109,2,156,141,156,148,233,238,245,115,128,0,177,111,2,156,154,156,158,100,128,2,214,238,239,243,240,225,227,101,128,255,11,115,2,156,174,156,181,237,225,236,108,128,254,98,245,240,229,242,233,239,114,128,32,122,109,2,156,197,156,208,239,238,239,243,240,225,227,101,128,255,80,243,241,245,225,242,101,128,51,216,111,5,156,229,156,240,157,51,157,62,157,72,232,233,242,225,231,225,238,97,128,48,125,233,238,244,233,238,231,233,238,228,229,120,4,157,4,157,16,157,28,157,41,228,239,247,238,247,232,233,244,101,128,38,31,236,229,230,244,247,232,233,244,101,128,38,28,242,233,231,232,244,247,232,233,244,101,128,38,30,245,240,247,232,233,244,101,128,38,29,235,225,244,225,235,225,238,97,128,48,221,240,236,225,244,232,225,105,128,14,27,243,244,225,236,237,225,242,107,129,48,18,157,85,230,225,227,101,128,48,32,240,225,242,229,110,128,36,171,114,3,157,108,157,134,157,159,101,2,157,114,157,122,227,229,228,229,115,128,34,122,243,227,242,233,240,244,233,239,110,128,33,30,233,237,101,2,157,142,157,148,237,239,100,128,2,185,242,229,246,229,242,243,229,100,128,32,53,111,4,157,169,157,176,157,186,157,199,228,245,227,116,128,34,15,234,229,227,244,233,246,101,128,35,5,236,239,238,231,229,228,235,225,238,97,128,48,252,112,2,157,205,157,242,101,2,157,211,157,218,236,236,239,114,128,35,24,242,243,117,2,157,226,157,233,226,243,229,116,128,34,130,240,229,242,243,229,116,128,34,131,239,242,244,233,239,110,129,34,55,157,253,225,108,128,34,29,115,2,158,8,158,51,105,130,3,200,158,16,158,27,227,249,242,233,236,236,233,99,128,4,113,236,233,240,238,229,245,237,225,244,225,227,249,242,233,236,236,233,227,227,237,98,128,4,134,243,241,245,225,242,101,128,51,176,117,2,158,66,158,77,232,233,242,225,231,225,238,97,128,48,119,235,225,244,225,235,225,238,97,128,48,215,246,243,241,245,225,242,101,128,51,180,247,243,241,245,225,242,101,128,51,186,113,136,0,113,158,128,159,177,159,188,159,197,159,204,159,216,159,254,160,6,97,4,158,138,158,161,158,225,159,160,100,2,158,144,158,150,229,246,97,128,9,88,237,225,232,229,226,242,229,119,128,5,168,102,4,158,171,158,180,158,194,158,210,225,242,225,226,233,99,128,6,66,230,233,238,225,236,225,242,225,226,233,99,128,254,214,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,215,237,229,228,233,225,236,225,242,225,226,233,99,128,254,216,237,225,244,115,136,5,184,158,248,159,12,159,26,159,31,159,36,159,45,159,60,159,147,49,3,159,0,159,4,159,8,48,128,5,184,97,128,5,184,99,128,5,184,50,2,159,18,159,22,55,128,5,184,57,128,5,184,179,51,128,5,184,228,101,128,5,184,232,229,226,242,229,119,128,5,184,238,225,242,242,239,247,232,229,226,242,229,119,128,5,184,113,2,159,66,159,132,225,244,225,110,4,159,79,159,88,159,103,159,119,232,229,226,242,229,119,128,5,184,238,225,242,242,239,247,232,229,226,242,229,119,128,5,184,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,184,247,233,228,229,232,229,226,242,229,119,128,5,184,245,225,242,244,229,242,232,229,226,242,229,119,128,5,184,247,233,228,229,232,229,226,242,229,119,128,5,184,242,238,229,249,240,225,242,225,232,229,226,242,229,119,128,5,159,226,239,240,239,237,239,230,111,128,49,17,227,233,242,227,236,101,128,36,224,232,239,239,107,128,2,160,237,239,238,239,243,240,225,227,101,128,255,81,239,102,130,5,231,159,225,159,245,228,225,231,229,243,104,129,251,71,159,236,232,229,226,242,229,119,128,251,71,232,229,226,242,229,119,128,5,231,240,225,242,229,110,128,36,172,117,4,160,16,160,28,160,117,160,204,225,242,244,229,242,238,239,244,101,128,38,105,226,245,244,115,135,5,187,160,49,160,54,160,59,160,64,160,73,160,88,160,104,177,56,128,5,187,178,53,128,5,187,179,49,128,5,187,232,229,226,242,229,119,128,5,187,238,225,242,242,239,247,232,229,226,242,229,119,128,5,187,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,187,247,233,228,229,232,229,226,242,229,119,128,5,187,229,243,244,233,239,110,133,0,63,160,136,160],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+61441);allocate([159,160,176,160,184,160,196,225,114,2,160,143,160,150,225,226,233,99,128,6,31,237,229,238,233,225,110,128,5,94,228,239,247,110,129,0,191,160,168,243,237,225,236,108,128,247,191,231,242,229,229,107,128,3,126,237,239,238,239,243,240,225,227,101,128,255,31,243,237,225,236,108,128,247,63,239,244,101,4,160,216,161,31,161,51,161,80,228,226,108,133,0,34,160,232,160,239,160,246,161,2,161,23,226,225,243,101,128,32,30,236,229,230,116,128,32,28,237,239,238,239,243,240,225,227,101,128,255,2,240,242,233,237,101,129,48,30,161,12,242,229,246,229,242,243,229,100,128,48,29,242,233,231,232,116,128,32,29,236,229,230,116,129,32,24,161,40,242,229,246,229,242,243,229,100,128,32,27,114,2,161,57,161,67,229,246,229,242,243,229,100,128,32,27,233,231,232,116,129,32,25,161,76,110,128,1,73,243,233,238,231,108,2,161,90,161,97,226,225,243,101,128,32,26,101,129,0,39,161,103,237,239,238,239,243,240,225,227,101,128,255,7,114,145,0,114,161,153,162,157,162,168,162,215,163,10,164,27,164,51,164,146,166,180,166,217,166,229,167,27,167,35,167,197,167,208,167,243,168,87,97,11,161,177,161,188,161,198,161,205,162,14,162,30,162,55,162,66,162,91,162,114,162,151,225,242,237,229,238,233,225,110,128,5,124,226,229,238,231,225,236,105,128,9,176,227,245,244,101,128,1,85,100,4,161,215,161,221,161,235,162,5,229,246,97,128,9,48,233,227,225,108,129,34,26,161,230,229,120,128,248,229,239,246,229,242,243,243,241,245,225,242,101,129,51,174,161,251,228,243,241,245,225,242,101,128,51,175,243,241,245,225,242,101,128,51,173,230,101,129,5,191,162,21,232,229,226,242,229,119,128,5,191,231,117,2,162,37,162,46,234,225,242,225,244,105,128,10,176,242,237,245,235,232,105,128,10,48,232,233,242,225,231,225,238,97,128,48,137,235,225,244,225,235,225,238,97,129,48,233,162,79,232,225,236,230,247,233,228,244,104,128,255,151,236,239,247,229,242,228,233,225,231,239,238,225,236,226,229,238,231,225,236,105,128,9,241,109,2,162,120,162,143,233,228,228,236,229,228,233,225,231,239,238,225,236,226,229,238,231,225,236,105,128,9,240,243,232,239,242,110,128,2,100,244,233,111,128,34,54,226,239,240,239,237,239,230,111,128,49,22,99,4,162,178,162,185,162,194,162,202,225,242,239,110,128,1,89,229,228,233,236,236,97,128,1,87,233,242,227,236,101,128,36,225,239,237,237,225,225,227,227,229,238,116,128,1,87,100,2,162,221,162,231,226,236,231,242,225,246,101,128,2,17,239,116,2,162,238,162,247,225,227,227,229,238,116,128,30,89,226,229,236,239,119,129,30,91,163,1,237,225,227,242,239,110,128,30,93,101,6,163,24,163,69,163,104,163,159,163,184,163,217,102,2,163,30,163,43,229,242,229,238,227,229,237,225,242,107,128,32,59,236,229,248,243,117,2,163,53,163,60,226,243,229,116,128,34,134,240,229,242,243,229,116,128,34,135,231,233,243,244,229,114,2,163,80,163,85,229,100,128,0,174,115,2,163,91,163,97,225,238,115,128,248,232,229,242,233,102,128,246,218,104,3,163,112,163,135,163,149,225,114,2,163,119,163,126,225,226,233,99,128,6,49,237,229,238,233,225,110,128,5,128,230,233,238,225,236,225,242,225,226,233,99,128,254,174,233,242,225,231,225,238,97,128,48,140,235,225,244,225,235,225,238,97,129,48,236,163,172,232,225,236,230,247,233,228,244,104,128,255,154,243,104,130,5,232,163,193,163,208,228,225,231,229,243,232,232,229,226,242,229,119,128,251,72,232,229,226,242,229,119,128,5,232,118,3,163,225,163,238,164,14,229,242,243,229,228,244,233,236,228,101,128,34,61,233,97,2,163,245,163,254,232,229,226,242,229,119,128,5,151,237,245,231,242,225,243,232,232,229,226,242,229,119,128,5,151,236,239,231,233,227,225,236,238,239,116,128,35,16,230,233,243,232,232,239,239,107,129,2,126,164,40,242,229,246,229,242,243,229,100,128,2,127,104,2,164,57,164,80,97,2,164,63,164,73,226,229,238,231,225,236,105,128,9,221,228,229,246,97,128,9,93,111,131,3,193,164,90,164,119,164,133,239,107,129,2,125,164,97,244,245,242,238,229,100,129,2,123,164,108,243,245,240,229,242,233,239,114,128,2,181,243,249,237,226,239,236,231,242,229,229,107,128,3,241,244,233,227,232,239,239,235,237,239,100,128,2,222,105,6,164,160,165,204,165,250,166,5,166,30,166,166,229,245,108,9,164,182,164,217,164,232,164,246,165,36,165,50,165,136,165,149,165,184,97,2,164,188,164,203,227,233,242,227,236,229,235,239,242,229,225,110,128,50,113,240,225,242,229,238,235,239,242,229,225,110,128,50,17,227,233,242,227,236,229,235,239,242,229,225,110,128,50,99,232,233,229,245,232,235,239,242,229,225,110,128,49,64,107,2,164,252,165,28,233,249,229,239,107,2,165,6,165,15,235,239,242,229,225,110,128,49,58,243,233,239,243,235,239,242,229,225,110,128,49,105,239,242,229,225,110,128,49,57,237,233,229,245,237,235,239,242,229,225,110,128,49,59,112,3,165,58,165,90,165,105,97,2,165,64,165,78,238,243,233,239,243,235,239,242,229,225,110,128,49,108,242,229,238,235,239,242,229,225,110,128,50,3,232,233,229,245,240,232,235,239,242,229,225,110,128,49,63,233,229,245,112,2,165,114,165,123,235,239,242,229,225,110,128,49,60,243,233,239,243,235,239,242,229,225,110,128,49,107,243,233,239,243,235,239,242,229,225,110,128,49,61,116,2,165,155,165,170,232,233,229,245,244,232,235,239,242,229,225,110,128,49,62,233,235,229,245,244,235,239,242,229,225,110,128,49,106,249,229,239,242,233,238,232,233,229,245,232,235,239,242,229,225,110,128,49,109,231,232,116,2,165,212,165,220,225,238,231,236,101,128,34,31,116,2,165,226,165,240,225,227,235,226,229,236,239,247,227,237,98,128,3,25,242,233,225,238,231,236,101,128,34,191,232,233,242,225,231,225,238,97,128,48,138,235,225,244,225,235,225,238,97,129,48,234,166,18,232,225,236,230,247,233,228,244,104,128,255,152,110,2,166,36,166,152,103,131,2,218,166,46,166,57,166,63,226,229,236,239,247,227,237,98,128,3,37,227,237,98,128,3,10,232,225,236,102,2,166,72,166,118,236,229,230,116,131,2,191,166,85,166,96,166,107,225,242,237,229,238,233,225,110,128,5,89,226,229,236,239,247,227,237,98,128,3,28,227,229,238,244,229,242,229,100,128,2,211,242,233,231,232,116,130,2,190,166,130,166,141,226,229,236,239,247,227,237,98,128,3,57,227,229,238,244,229,242,229,100,128,2,210,246,229,242,244,229,228,226,242,229,246,101,128,2,19,244,244,239,242,245,243,241,245,225,242,101,128,51,81,108,2,166,186,166,197,233,238,229,226,229,236,239,119,128,30,95,239,238,231,236,229,103,129,2,124,166,208,244,245,242,238,229,100,128,2,122,237,239,238,239,243,240,225,227,101,128,255,82,111,3,166,237,166,248,167,17,232,233,242,225,231,225,238,97,128,48,141,235,225,244,225,235,225,238,97,129,48,237,167,5,232,225,236,230,247,233,228,244,104,128,255,155,242,245,225,244,232,225,105,128,14,35,240,225,242,229,110,128,36,173,114,3,167,43,167,79,167,109,97,3,167,51,167,61,167,68,226,229,238,231,225,236,105,128,9,220,228,229,246,97,128,9,49,231,245,242,237,245,235,232,105,128,10,92,229,104,2,167,86,167,95,225,242,225,226,233,99,128,6,145,230,233,238,225,236,225,242,225,226,233,99,128,251,141,246,239,227,225,236,233,99,4,167,125,167,135,167,142,167,153,226,229,238,231,225,236,105,128,9,224,228,229,246,97,128,9,96,231,245,234,225,242,225,244,105,128,10,224,246,239,247,229,236,243,233,231,110,3,167,169,167,179,167,186,226,229,238,231,225,236,105,128,9,196,228,229,246,97,128,9,68,231,245,234,225,242,225,244,105,128,10,196,243,245,240,229,242,233,239,114,128,246,241,116,2,167,214,167,222,226,236,239,227,107,128,37,144,245,242,238,229,100,129,2,121,167,232,243,245,240,229,242,233,239,114,128,2,180,117,4,167,253,168,8,168,33,168,80,232,233,242,225,231,225,238,97,128,48,139,235,225,244,225,235,225,238,97,129,48,235,168,21,232,225,236,230,247,233,228,244,104,128,255,153,112,2,168,39,168,74,229,101,2,168,46,168,60,237,225,242,235,226,229,238,231,225,236,105,128,9,242,243,233,231,238,226,229,238,231,225,236,105,128,9,243,233,225,104,128,246,221,244,232,225,105,128,14,36,246,239,227,225,236,233,99,4,168,103,168,113,168,120,168,131,226,229,238,231,225,236,105,128,9,139,228,229,246,97,128,9,11,231,245,234,225,242,225,244,105,128,10,139,246,239,247,229,236,243,233,231,110,3,168,147,168,157,168,164,226,229,238,231,225,236,105,128,9,195,228,229,246,97,128,9,67,231,245,234,225,242,225,244,105,128,10,195,115,147,0,115,168,217,170,187,170,198,171,68,171,107,174,49,174,60,176,203,179,85,179,131,179,158,180,93,180,160,181,193,181,203,182,133,182,206,183,120,183,130,97,9,168,237,168,247,169,12,169,84,169,109,169,120,169,145,169,177,169,217,226,229,238,231,225,236,105,128,9,184,227,245,244,101,129,1,91,169,0,228,239,244,225,227,227,229,238,116,128,30,101,100,5,169,24,169,33,169,39,169,53,169,69,225,242,225,226,233,99,128,6,53,229,246,97,128,9,56,230,233,238,225,236,225,242,225,226,233,99,128,254,186,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,187,237,229,228,233,225,236,225,242,225,226,233,99,128,254,188,231,117,2,169,91,169,100,234,225,242,225,244,105,128,10,184,242,237,245,235,232,105,128,10,56,232,233,242,225,231,225,238,97,128,48,85,235,225,244,225,235,225,238,97,129,48,181,169,133,232,225,236,230,247,233,228,244,104,128,255,123,236,236,225,236,236,225,232,239,245,225,236,225,249,232,229,247,225,243,225,236,236,225,237,225,242,225,226,233,99,128,253,250,237,229,235,104,130,5,225,169,188,169,208,228,225,231,229,243,104,129,251,65,169,199,232,229,226,242,229,119,128,251,65,232,229,226,242,229,119,128,5,225,242,97,5,169,230,170,48,170,56,170,106,170,114,97,5,169,242,169,250,170,2,170,33,170,41,225,244,232,225,105,128,14,50,229,244,232,225,105,128,14,65,233,237,225,233,109,2,170,12,170,23,225,236,225,233,244,232,225,105,128,14,68,245,225,238,244,232,225,105,128,14,67,237,244,232,225,105,128,14,51,244,232,225,105,128,14,48,229,244,232,225,105,128,14,64,105,3,170,64,170,88,170,99,105,2,170,70,170,81,236,229,230,244,244,232,225,105,128,248,134,244,232,225,105,128,14,53,236,229,230,244,244,232,225,105,128,248,133,244,232,225,105,128,14,52,239,244,232,225,105,128,14,66,117,3,170,122,170,172,170,179,101,3,170,130,170,154,170,165,101,2,170,136,170,147,236,229,230,244,244,232,225,105,128,248,136,244,232,225,105,128,14,55,236,229,230,244,244,232,225,105,128,248,135,244,232,225,105,128,14,54,244,232,225,105,128,14,56,245,244,232,225,105,128,14,57,226,239,240,239,237,239,230,111,128,49,25,99,5,170,210,170,231,170,240,171,33,171,55,225,242,239,110,129,1,97,170,219,228,239,244,225,227,227,229,238,116,128,30,103,229,228,233,236,236,97,128,1,95,232,247,97,131,2,89,170,252,171,7,171,26,227,249,242,233,236,236,233,99,128,4,217,228,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,219,232,239,239,107,128,2,90,233,242,99,2,171,41,171,46,236,101,128,36,226,245,237,230,236,229,120,128,1,93,239,237,237,225,225,227,227,229,238,116,128,2,25,228,239,116,2,171,76,171,85,225,227,227,229,238,116,128,30,97,226,229,236,239,119,129,30,99,171,95,228,239,244,225,227,227,229,238,116,128,30,105,101,9,171,127,171,143,171,178,171,243,172,90,172,117,172,142,172,223,172,250,225,231,245,236,236,226,229,236,239,247,227,237,98,128,3,60,99,2,171,149,171,171,239,238,100,129,32,51,171,157,244,239,238,229,227,232,233,238,229,243,101,128,2,202,244,233,239,110,128,0,167,229,110,4,171,189,171,198,171,212,171,228,225,242,225,226,233,99,128,6,51,230,233,238,225,236,225,242,225,226,233,99,128,254,178,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,179,237,229,228,233,225,236,225,242,225,226,233,99,128,254,180,231,239,108,135,5,182,172,7,172,21,172,26,172,35,172,50,172,66,172,77,49,2,172,13,172,17,51,128,5,182,102,128,5,182,178,99,128,5,182,232,229,226,242,229,119,128,5,182,238,225,242,242,239,247,232,229,226,242,229,119,128,5,182,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,182,244,225,232,229,226,242,229,119,128,5,146,247,233,228,229,232,229,226,242,229,119,128,5,182,104,2,172,96,172,107,225,242,237,229,238,233,225,110,128,5,125,233,242,225,231,225,238,97,128,48,91,235,225,244,225,235,225,238,97,129,48,187,172,130,232,225,236,230,247,233,228,244,104,128,255,126,237,105,2,172,149,172,192,227,239,236,239,110,131,0,59,172,163,172,172,172,184,225,242,225,226,233,99,128,6,27,237,239,238,239,243,240,225,227,101,128,255,27,243,237,225,236,108,128,254,84,246,239,233,227,229,228,237,225,242,235,235,225,238,97,129,48,156,172,211,232,225,236,230,247,233,228,244,104,128,255,159,238,116,2,172,230,172,240,233,243,241,245,225,242,101,128,51,34,239,243,241,245,225,242,101,128,51,35,246,229,110,142,0,55,173,28,173,37,173,47,173,77,173,84,173,94,173,119,173,146,173,180,173,192,173,203,173,236,173,244,173,255,225,242,225,226,233,99,128,6,103,226,229,238,231,225,236,105,128,9,237,227,233,242,227,236,101,129,36,102,173,58,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,144,228,229,246,97,128,9,109,229,233,231,232,244,232,115,128,33,94,231,117,2,173,101,173,110,234,225,242,225,244,105,128,10,237,242,237,245,235,232,105,128,10,109,232,97,2,173,126,173,137,227,235,225,242,225,226,233,99,128,6,103,238,231,250,232,239,117,128,48,39,105,2,173,152,173,170,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,38,238,230,229,242,233,239,114,128,32,135,237,239,238,239,243,240,225,227,101,128,255,23,239,236,228,243,244,249,236,101,128,247,55,112,2,173,209,173,216,225,242,229,110,128,36,122,229,114,2,173,223,173,229,233,239,100,128,36,142,243,233,225,110,128,6,247,242,239,237,225,110,128,33,118,243,245,240,229,242,233,239,114,128,32,119,116,2,174,5,174,43,229,229,110,2,174,13,174,22,227,233,242,227,236,101,128,36,112,112,2,174,28,174,35,225,242,229,110,128,36,132,229,242,233,239,100,128,36,152,232,225,105,128,14,87,230,244,232,249,240,232,229,110,128,0,173,104,7,174,76,175,50,175,61,175,75,176,20,176,33,176,197,97,6,174,90,174,101,174,111,174,122,175,9,175,34,225,242,237,229,238,233,225,110,128,5,119,226,229,238,231,225,236,105,128,9,182,227,249,242,233,236,236,233,99,128,4,72,100,2,174,128,174,224,228,97,4,174,139,174,148,174,179,174,193,225,242,225,226,233,99,128,6,81,228,225,237,237,97,2,174,158,174,167,225,242,225,226,233,99,128,252,97,244,225,238,225,242,225,226,233,99,128,252,94,230,225,244,232,225,225,242,225,226,233,99,128,252,96,235,225,243,242,97,2,174,203,174,212,225,242,225,226,233,99,128,252,98,244,225,238,225,242,225,226,233,99,128,252,95,101,132,37,146,174,236,174,243,174,251,175,4,228,225,242,107,128,37,147,236,233,231,232,116,128,37,145,237,229,228,233,245,109,128,37,146,246,97,128,9,54,231,117,2,175,16,175,25,234,225,242,225,244,105,128,10,182,242,237,245,235,232,105,128,10,54,236,243,232,229,236,229,244,232,229,226,242,229,119,128,5,147,226,239,240,239,237,239,230,111,128,49,21,227,232,225,227,249,242,233,236,236,233,99,128,4,73,101,4,175,85,175,150,175,160,175,177,229,110,4,175,96,175,105,175,119,175,135,225,242,225,226,233,99,128,6,52,230,233,238,225,236,225,242,225,226,233,99,128,254,182,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,183,237,229,228,233,225,236,225,242,225,226,233,99,128,254,184,233,227,239,240,244,233,99,128,3,227,241,229,108,129,32,170,175,168,232,229,226,242,229,119,128,32,170,246,97,134,5,176,175,194,175,209,175,223,175,232,175,247,176,7,49,2,175,200,175,205,177,53,128,5,176,53,128,5,176,50,2,175,215,175,219,50,128,5,176,101,128,5,176,232,229,226,242,229,119,128,5,176,238,225,242,242,239,247,232,229,226,242,229,119,128,5,176,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,176,247,233,228,229,232,229,226,242,229,119,128,5,176,232,225,227,249,242,233,236,236,233,99,128,4,187,105,2,176,39,176,50,237,225,227,239,240,244,233,99,128,3,237,110,131,5,233,176,60,176,143,176,152,100,2,176,66,176,132,225,231,229,243,104,130,251,73,176,78,176,87,232,229,226,242,229,119,128,251,73,115,2,176,93,176,113,232,233,238,228,239,116,129,251,44,176,104,232,229,226,242,229,119,128,251,44,233,238,228,239,116,129,251,45,176,123,232,229,226,242,229,119,128,251,45,239,244,232,229,226,242,229,119,128,5,193,232,229,226,242,229,119,128,5,233,115,2,176,158,176,178,232,233,238,228,239,116,129,251,42,176,169,232,229,226,242,229,119,128,251,42,233,238,228,239,116,129,251,43,176,188,232,229,226,242,229,119,128,251,43,239,239,107,128,2,130,105,8,176,221,177,9,177,20,177,45,177,75,177,83,177,96,178,11,231,237,97,131,3,195,176,233,176,237,176,245,49,128,3,194,230,233,238,225,108,128,3,194,236,245,238,225,244,229,243,249,237,226,239,236,231,242,229,229,107,128,3,242,232,233,242,225,231,225,238,97,128,48,87,235,225,244,225,235,225,238,97,129,48,183,177,33,232,225,236,230,247,233,228,244,104,128,255,124,236,245,113,2,177,53,177,62,232,229,226,242,229,119,128,5,189,236,229,230,244,232,229,226,242,229,119,128,5,189,237,233,236,225,114,128,34,60,238,228,239,244,232,229,226,242,229,119,128,5,194,239,115,6,177,111,177,146,177,178,177,206,177,220,177,252,97,2,177,117,177,132,227,233,242,227,236,229,235,239,242,229,225,110,128,50,116,240,225,242,229,238,235,239,242,229,225,110,128,50,20,227,105,2,177,153,177,165,229,245,227,235,239,242,229,225,110,128,49,126,242,227,236,229,235,239,242,229,225,110,128,50,102,107,2,177,184,177,198,233,249,229,239,235,235,239,242,229,225,110,128,49,122,239,242,229,225,110,128,49,69,238,233,229,245,238,235,239,242,229,225,110,128,49,123,112,2,177,226,177,239,225,242,229,238,235,239,242,229,225,110,128,50,6,233,229,245,240,235,239,242,229,225,110,128,49,125,244,233,235,229,245,244,235,239,242,229,225,110,128,49,124,120,141,0,54,178,41,178,50,178,60,178,90,178,97,178,122,178,149,178,183,178,195,178,206,178,239,178,247,179,2,225,242,225,226,233,99,128,6,102,226,229,238,231,225,236,105,128,9,236,227,233,242,227,236,101,129,36,101,178,71,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,143,228,229,246,97,128,9,108,231,117,2,178,104,178,113,234,225,242,225,244,105,128,10,236,242,237,245,235,232,105,128,10,108,232,97,2,178,129,178,140,227,235,225,242,225,226,233,99,128,6,102,238,231,250,232,239,117,128,48,38,105,2,178,155,178,173,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,37,238,230,229,242,233,239,114,128,32,134,237,239,238,239,243,240,225,227,101,128,255,22,239,236,228,243,244,249,236,101,128,247,54,112,2,178,212,178,219,225,242,229,110,128,36,121,229,114,2,178,226,178,232,233,239,100,128,36,141,243,233,225,110,128,6,246,242,239,237,225,110,128,33,117,243,245,240,229,242,233,239,114,128,32,118,116,2,179,8,179,79,229,229,110,2,179,16,179,58,99,2,179,22,179,30,233,242,227,236,101,128,36,111,245,242,242,229,238,227,249,228,229,238,239,237,233,238,225,244,239,242,226,229,238,231,225,236,105,128,9,249,112,2,179,64,179,71,225,242,229,110,128,36,131,229,242,233,239,100,128,36,151,232,225,105,128,14,86,108,2,179,91,179,111,225,243,104,129,0,47,179,99,237,239,238,239,243,240,225,227,101,128,255,15,239,238,103,129,1,127,179,119,228,239,244,225,227,227,229,238,116,128,30,155,109,2,179,137,179,147,233,236,229,230,225,227,101,128,38,58,239,238,239,243,240,225,227,101,128,255,83,111,6,179,172,179,222,179,233,180,2,180,47,180,58,102,2,179,178,179,192,240,225,243,245,241,232,229,226,242,229,119,128,5,195,116,2,179,198,179,207,232,249,240,232,229,110,128,0,173,243,233,231,238,227,249,242,233,236,236,233,99,128,4,76,232,233,242,225,231,225,238,97,128,48,93,235,225,244,225,235,225,238,97,129,48,189,179,246,232,225,236,230,247,233,228,244,104,128,255,127,236,233,228,245,115,2,180,12,180,29,236,239,238,231,239,246,229,242,236,225,249,227,237,98,128,3,56,243,232,239,242,244,239,246,229,242,236,225,249,227,237,98,128,3,55,242,245,243,233,244,232,225,105,128,14,41,115,3,180,66,180,76,180,84,225,236,225,244,232,225,105,128,14,40,239,244,232,225,105,128,14,11,245,225,244,232,225,105,128,14,42,240,97,3,180,102,180,122,180,154,227,101,129,0,32,180,109,232,225,227,235,225,242,225,226,233,99,128,0,32,228,101,129,38,96,180,129,243,245,233,116,2,180,138,180,146,226,236,225,227,107,128,38,96,247,232,233,244,101,128,38,100,242,229,110,128,36,174,241,245,225,242,101,11,180,188,180,199,180,213,180,238,180,255,181,25,181,40,181,73,181,100,181,156,181,171,226,229,236,239,247,227,237,98,128,3,59,99,2,180,205,180,209,99,128,51,196,109,128,51,157,228,233,225,231,239,238,225,236,227,242,239,243,243,232,225,244,227,232,230,233,236,108,128,37,169,232,239,242,233,250,239,238,244,225,236,230,233,236,108,128,37,164,107,2,181,5,181,9,103,128,51,143,109,129,51,158,181,15,227,225,240,233,244,225,108,128,51,206,108,2,181,31,181,35,110,128,51,209,239,103,128,51,210,109,4,181,50,181,54,181,59,181,63,103,128,51,142,233,108,128,51,213,109,128,51,156,243,241,245,225,242,229,100,128,51,161,239,242,244,232,239,231,239,238,225,236,227,242,239,243,243,232,225,244,227,232,230,233,236,108,128,37,166,245,240,240,229,114,2,181,110,181,133,236,229,230,244,244,239,236,239,247,229,242,242,233,231,232,244,230,233,236,108,128,37,167,242,233,231,232,244,244,239,236,239,247,229,242,236,229,230,244,230,233,236,108,128,37,168,246,229,242,244,233,227,225,236,230,233,236,108,128,37,165,247,232,233,244,229,247,233,244,232,243,237,225,236,236,226,236,225,227,107,128,37,163,242,243,241,245,225,242,101,128,51,219,115,2,181,209,182,123,97,4,181,219,181,229,181,236,181,247,226,229,238,231,225,236,105,128,9,183,228,229,246,97,128,9,55,231,245,234,225,242,225,244,105,128,10,183,238,103,8,182,10,182,24,182,38,182,52,182,67,182,81,182,95,182,108,227,233,229,245,227,235,239,242,229,225,110,128,49,73,232,233,229,245,232,235,239,242,229,225,110,128,49,133,233,229,245,238,231,235,239,242,229,225,110,128,49,128,235,233,249,229,239,235,235,239,242,229,225,110,128,49,50,238,233,229,245,238,235,239,242,229,225,110,128,49,101,240,233,229,245,240,235,239,242,229,225,110,128,49,67,243,233,239,243,235,239,242,229,225,110,128,49,70,244,233,235,229,245,244,235,239,242,229,225,110,128,49,56,245,240,229,242,233,239,114,128,246,242,116,2,182,139,182,162,229,242,236,233,238,103,129,0,163,182,150,237,239,238,239,243,240,225,227,101,128,255,225,242,239,235,101,2,182,171,182,188,236,239,238,231,239,246,229,242,236,225,249,227,237,98,128,3,54,243,232,239,242,244,239,246,229,242,236,225,249,227,237,98,128,3,53,117,7,182,222,182,254,183,20,183,31,183,72,183,82,183,86,226,243,229,116,130,34,130,182,233,182,244,238,239,244,229,241,245,225,108,128,34,138,239,242,229,241,245,225,108,128,34,134,99,2,183,4,183,12,227,229,229,228,115,128,34,123,232,244,232,225,116,128,34,11,232,233,242,225,231,225,238,97,128,48,89,107,2,183,37,183,61,225,244,225,235,225,238,97,129,48,185,183,49,232,225,236,230,247,233,228,244,104,128,255,125,245,238,225,242,225,226,233,99,128,6,82,237,237,225,244,233,239,110,128,34,17,110,128,38,60,240,229,242,243,229,116,130,34,131,183,99,183,110,238,239,244,229,241,245,225,108,128,34,139,239,242,229,241,245,225,108,128,34,135,246,243,241,245,225,242,101,128,51,220,249,239,245,247,225,229,242,225,243,241,245,225,242,101,128,51,124,116,144,0,116,183,183,184,192,184,213,185,100,185,140,187,188,191,70,192,145,192,157,192,169,193,202,193,227,194,57,194,237,195,165,195,255,97,10,183,205,183,215,183,236,183,243,184,12,184,90,184,107,184,132,184,146,184,150,226,229,238,231,225,236,105,128,9,164,227,107,2,183,222,183,229,228,239,247,110,128,34,164,236,229,230,116,128,34,163,228,229,246,97,128,9,36,231,117,2,183,250,184,3,234,225,242,225,244,105,128,10,164,242,237,245,235,232,105,128,10,36,104,4,184,22,184,31,184,45,184,75,225,242,225,226,233,99,128,6,55,230,233,238,225,236,225,242,225,226,233,99,128,254,194,105,2,184,51,184,66,238,233,244,233,225,236,225,242,225,226,233,99,128,254,195,242,225,231,225,238,97,128,48,95,237,229,228,233,225,236,225,242,225,226,233,99,128,254,196,233,243,249,239,245,229,242,225,243,241,245,225,242,101,128,51,125,235,225,244,225,235,225,238,97,129,48,191,184,120,232,225,236,230,247,233,228,244,104,128,255,128,244,247,229,229,236,225,242,225,226,233,99,128,6,64,117,128,3,196,118,130,5,234,184,158,184,183,228,225,231,229,115,129,251,74,184,168,104,129,251,74,184,174,232,229,226,242,229,119,128,251,74,232,229,226,242,229,119,128,5,234,98,2,184,198,184,203,225,114,128,1,103,239,240,239,237,239,230,111,128,49,10,99,6,184,227,184,234,184,241,184,250,185,60,185,87,225,242,239,110,128,1,101,227,245,242,108,128,2,168,229,228,233,236,236,97,128,1,99,232,229,104,4,185,6,185,15,185,29,185,45,225,242,225,226,233,99,128,6,134,230,233,238,225,236,225,242,225,226,233,99,128,251,123,233,238,233,244,233,225,236,225,242,225,226,233,99,128,251,124,237,229,228,233,225,236,225,242,225,226,233,99,128,251,125,233,242,99,2,185,68,185,73,236,101,128,36,227,245,237,230,236,229,248,226,229,236,239,119,128,30,113,239,237,237,225,225,227,227,229,238,116,128,1,99,100,2,185,106,185,116,233,229,242,229,243,233,115,128,30,151,239,116,2,185,123,185,132,225,227,227,229,238,116,128,30,107,226,229,236,239,119,128,30,109,101,9,185,160,185,171,185,191,186,201,186,226,187,34,187,101,187,106,187,158,227,249,242,233,236,236,233,99,128,4,66,228,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,173,104,7,185,207,185,216,185,230,186,14,186,44,186,85,186,183,225,242,225,226,233,99,128,6,42,230,233,238,225,236,225,242,225,226,233,99,128,254,150,232,225,232,105,2,185,239,185,254,238,233,244,233,225,236,225,242,225,226,233,99,128,252,162,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,12,105,2,186,20,186,35,238,233,244,233,225,236,225,242,225,226,233,99,128,254,151,242,225,231,225,238,97,128,48,102,234,229,229,237,105,2,186,54,186,69,238,233,244,233,225,236,225,242,225,226,233,99,128,252,161,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,11,109,2,186,91,186,125,225,242,226,245,244,97,2,186,102,186,111,225,242,225,226,233,99,128,6,41,230,233,238,225,236,225,242,225,226,233,99,128,254,148,101,2,186,131,186,144,228,233,225,236,225,242,225,226,233,99,128,254,152,229,237,105,2,186,152,186,167,238,233,244,233,225,236,225,242,225,226,233,99,128,252,164,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,14,238,239,239,238,230,233,238,225,236,225,242,225,226,233,99,128,252,115,235,225,244,225,235,225,238,97,129,48,198,186,214,232,225,236,230,247,233,228,244,104,128,255,131,108,2,186,232,186,251,229,240,232,239,238,101,129,33,33,186,243,226,236,225,227,107,128,38,14,233,243,232,97,2,187,4,187,19,231,229,228,239,236,225,232,229,226,242,229,119,128,5,160,241,229,244,225,238,225,232,229,226,242,229,119,128,5,169,110,4,187,44,187,53,187,72,187,93,227,233,242,227,236,101,128,36,105,233,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,41,112,2,187,78,187,85,225,242,229,110,128,36,125,229,242,233,239,100,128,36,145,242,239,237,225,110,128,33,121,243,104,128,2,167,116,131,5,216,187,116,187,136,187,145,228,225,231,229,243,104,129,251,56,187,127,232,229,226,242,229,119,128,251,56,232,229,226,242,229,119,128,5,216,243,229,227,249,242,233,236,236,233,99,128,4,181,246,233,114,2,187,166,187,175,232,229,226,242,229,119,128,5,155,236,229,230,244,232,229,226,242,229,119,128,5,155,104,6,187,202,188,98,188,220,189,96,190,3,191,60,97,5,187,214,187,224,187,231,188,0,188,29,226,229,238,231,225,236,105,128,9,165,228,229,246,97,128,9,37,231,117,2,187,238,187,247,234,225,242,225,244,105,128,10,165,242,237,245,235,232,105,128,10,37,108,2,188,6,188,15,225,242,225,226,233,99,128,6,48,230,233,238,225,236,225,242,225,226,233,99,128,254,172,238,244,232,225,235,232,225,116,3,188,44,188,75,188,82,236,239,119,2,188,52,188,63,236,229,230,244,244,232,225,105,128,248,152,242,233,231,232,244,244,232,225,105,128,248,151,244,232,225,105,128,14,76,245,240,240,229,242,236,229,230,244,244,232,225,105,128,248,150,101,3,188,106,188,170,188,193,104,4,188,116,188,125,188,139,188,155,225,242,225,226,233,99,128,6,43,230,233,238,225,236,225,242,225,226,233,99,128,254,154,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,155,237,229,228,233,225,236,225,242,225,226,233,99,128,254,156,242,101,2,188,177,188,186,229,248,233,243,244,115,128,34,3,230,239,242,101,128,34,52,244,97,130,3,184,188,202,188,206,49,128,3,209,243,249,237,226,239,236,231,242,229,229,107,128,3,209,105,2,188,226,189,56,229,245,244,104,4,188,239,189,18,189,33,189,42,97,2,188,245,189,4,227,233,242,227,236,229,235,239,242,229,225,110,128,50,121,240,225,242,229,238,235,239,242,229,225,110,128,50,25,227,233,242,227,236,229,235,239,242,229,225,110,128,50,107,235,239,242,229,225,110,128,49,76,240,225,242,229,238,235,239,242,229,225,110,128,50,11,242,244,229,229,110,2,189,66,189,75,227,233,242,227,236,101,128,36,108,112,2,189,81,189,88,225,242,229,110,128,36,128,229,242,233,239,100,128,36,148,111,6,189,110,189,127,189,132,189,146,189,151,189,204,238,225,238,231,237,239,238,244,232,239,244,232,225,105,128,14,17,239,107,128,1,173,240,232,245,244,232,225,239,244,232,225,105,128,14,18,242,110,128,0,254,244,104,3,189,160,189,184,189,194,97,2,189,166,189,176,232,225,238,244,232,225,105,128,14,23,238,244,232,225,105,128,14,16,239,238,231,244,232,225,105,128,14,24,245,238,231,244,232,225,105,128,14,22,245,243,225,238,100,2,189,214,189,225,227,249,242,233,236,236,233,99,128,4,130,243,243,229,240,225,242,225,244,239,114,2,189,240,189,249,225,242,225,226,233,99,128,6,108,240,229,242,243,233,225,110,128,6,108,242,229,101,144,0,51,190,41,190,50,190,60,190,90,190,97,190,107,190,132,190,159,190,193,190,205,190,224,190,235,191,12,191,34,191,42,191,53,225,242,225,226,233,99,128,6,99,226,229,238,231,225,236,105,128,9,233,227,233,242,227,236,101,129,36,98,190,71,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,140,228,229,246,97,128,9,105,229,233,231,232,244,232,115,128,33,92,231,117,2,190,114,190,123,234,225,242,225,244,105,128,10,233,242,237,245,235,232,105,128,10,105,232,97,2,190,139,190,150,227,235,225,242,225,226,233,99,128,6,99,238,231,250,232,239,117,128,48,35,105,2,190,165,190,183,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,34,238,230,229,242,233,239,114,128,32,131,237,239,238,239,243,240,225,227,101,128,255,19,238,245,237,229,242,225,244,239,242,226,229,238,231,225,236,105,128,9,246,239,236,228,243,244,249,236,101,128,247,51,112,2,190,241,190,248,225,242,229,110,128,36,118,229,114,2,190,255,191,5,233,239,100,128,36,138,243,233,225,110,128,6,243,241,245,225,242,244,229,242,115,129,0,190,191,25,229,237,228,225,243,104,128,246,222,242,239,237,225,110,128,33,114,243,245,240,229,242,233,239,114,128,0,179,244,232,225,105,128,14,83,250,243,241,245,225,242,101,128,51,148,105,7,191,86,191,97,191,212,192,54,192,66,192,115,192,132,232,233,242,225,231,225,238,97,128,48,97,107,2,191,103,191,127,225,244,225,235,225,238,97,129,48,193,191,115,232,225,236,230,247,233,228,244,104,128,255,129,229,245,116,4,191,139,191,174,191,189,191,198,97,2,191,145,191,160,227,233,242,227,236,229,235,239,242,229,225,110,128,50,112,240,225,242,229,238,235,239,242,229,225,110,128,50,16,227,233,242,227,236,229,235,239,242,229,225,110,128,50,98,235,239,242,229,225,110,128,49,55,240,225,242,229,238,235,239,242,229,225,110,128,50,2,236,228,101,133,2,220,191,228,191,239,192,0,192,12,192,40,226,229,236,239,247,227,237,98,128,3,48,99,2,191,245,191,250,237,98,128,3,3,239,237,98,128,3,3,228,239,245,226,236,229,227,237,98,128,3,96,111,2,192,18,192,28,240,229,242,225,244,239,114,128,34,60,246,229,242,236,225,249,227,237,98,128,3,52,246,229,242,244,233,227,225,236,227,237,98,128,3,62,237,229,243,227,233,242,227,236,101,128,34,151,112,2,192,72,192,102,229,232,97,2,192,80,192,89,232,229,226,242,229,119,128,5,150,236,229,230,244,232,229,226,242,229,119,128,5,150,240,233,231,245,242,237,245,235,232,105,128,10,112,244,236,239,227,249,242,233,236,236,233,227,227,237,98,128,4,131,247,238,225,242,237,229,238,233,225,110,128,5,127,236,233,238,229,226,229,236,239,119,128,30,111,237,239,238,239,243,240,225,227,101,128,255,84,111,7,192,185,192,196,192,207,192,232,193,96,193,108,193,192,225,242,237,229,238,233,225,110,128,5,105,232,233,242,225,231,225,238,97,128,48,104,235,225,244,225,235,225,238,97,129,48,200,192,220,232,225,236,230,247,233,228,244,104,128,255,132,110,3,192,240,193,82,193,87,101,4,192,250,193,63,193,70,193,76,226,225,114,4,193,6,193,35,193,45,193,54,229,248,244,242,97,2,193,16,193,26,232,233,231,232,237,239,100,128,2,229,236,239,247,237,239,100,128,2,233,232,233,231,232,237,239,100,128,2,230,236,239,247,237,239,100,128,2,232,237,233,228,237,239,100,128,2,231,230,233,246,101,128,1,189,243,233,120,128,1,133,244,247,111,128,1,168,239,115,128,3,132,243,241,245,225,242,101,128,51,39,240,225,244,225,235,244,232,225,105,128,14,15,242,244,239,233,243,229,243,232,229,236,236,226,242,225,227,235,229,116,2,193,131,193,161,236,229,230,116,130,48,20,193,142,193,150,243,237,225,236,108,128,254,93,246,229,242,244,233,227,225,108,128,254,57,242,233,231,232,116,130,48,21,193,173,193,181,243,237,225,236,108,128,254,94,246,229,242,244,233,227,225,108,128,254,58,244,225,239,244,232,225,105,128,14,21,240,97,2,193,209,193,221,236,225,244,225,236,232,239,239,107,128,1,171,242,229,110,128,36,175,114,3,193,235,194,10,194,25,225,228,229,237,225,242,107,129,33,34,193,247,115,2,193,253,194,3,225,238,115,128,248,234,229,242,233,102,128,246,219,229,244,242,239,230,236,229,248,232,239,239,107,128,2,136,233,225,103,4,194,37,194,42,194,47,194,52,228,110,128,37,188,236,102,128,37,196,242,116,128,37,186,245,112,128,37,178,115,132,2,166,194,69,194,108,194,214,194,227,225,228,105,130,5,230,194,79,194,99,228,225,231,229,243,104,129,251,70,194,90,232,229,226,242,229,119,128,251,70,232,229,226,242,229,119,128,5,230,101,2,194,114,194,125,227,249,242,233,236,236,233,99,128,4,70,242,101,134,5,181,194,142,194,156,194,161,194,170,194,185,194,201,49,2,194,148,194,152,50,128,5,181,101,128,5,181,178,98,128,5,181,232,229,226,242,229,119,128,5,181,238,225,242,242,239,247,232,229,226,242,229,119,128,5,181,241,245,225,242,244,229,242,232,229,226,242,229,119,128,5,181,247,233,228,229,232,229,226,242,229,119,128,5,181,232,229,227,249,242,233,236,236,233,99,128,4,91,245,240,229,242,233,239,114,128,246,243,116,4,194,247,195,41,195,106,195,157,97,3,194,255,195,9,195,16,226,229,238,231,225,236,105,128,9,159,228,229,246,97,128,9,31,231,117,2,195,23,195,32,234,225,242,225,244,105,128,10,159,242,237,245,235,232,105,128,10,31,229,104,4,195,52,195,61,195,75,195,91,225,242,225,226,233,99,128,6,121,230,233,238,225,236,225,242,225,226,233,99,128,251,103,233,238,233,244,233,225,236,225,242,225,226,233,99,128,251,104,237,229,228,233,225,236,225,242,225,226,233,99,128,251,105,232,97,3,195,115,195,125,195,132,226,229,238,231,225,236,105,128,9,160,228,229,246,97,128,9,32,231,117,2,195,139,195,148,234,225,242,225,244,105,128,10,160,242,237,245,235,232,105,128,10,32,245,242,238,229,100,128,2,135,117,3,195,173,195,184,195,209,232,233,242,225,231,225,238,97,128,48,100,235,225,244,225,235,225,238,97,129,48,196,195,197,232,225,236,230,247,233,228,244,104,128,255,130,243,237,225,236,108,2,195,219,195,230,232,233,242,225,231,225,238,97,128,48,99,235,225,244,225,235,225,238,97,129,48,195,195,243,232,225,236,230,247,233,228,244,104,128,255,111,119,2,196,5,196,110,101,2,196,11,196,59,236,246,101,3,196,21,196,30,196,51,227,233,242,227,236,101,128,36,107,112,2,196,36,196,43,225,242,229,110,128,36,127,229,242,233,239,100,128,36,147,242,239,237,225,110,128,33,123,238,244,121,3,196,69,196,78,196,89,227,233,242,227,236,101,128,36,115,232,225,238,231,250,232,239,117,128,83,68,112,2,196,95,196,102,225,242,229,110,128,36,135,229,242,233,239,100,128,36,155,111,142,0,50,196,142,196,151,196,161,196,191,196,243,197,12,197,39,197,73,197,85,197,104,197,115,197,148,197,156,197,180,225,242,225,226,233,99,128,6,98,226,229,238,231,225,236,105,128,9,232,227,233,242,227,236,101,129,36,97,196,172,233,238,246,229,242,243,229,243,225,238,243,243,229,242,233,102,128,39,139,100,2,196,197,196,203,229,246,97,128,9,104,239,116,2,196,210,196,221,229,238,236,229,225,228,229,114,128,32,37,236,229,225,228,229,114,129,32,37,196,232,246,229,242,244,233,227,225,108,128,254,48,231,117,2,196,250,197,3,234,225,242,225,244,105,128,10,232,242,237,245,235,232,105,128,10,104,232,97,2,197,19,197,30,227,235,225,242,225,226,233,99,128,6,98,238,231,250,232,239,117,128,48,34,105,2,197,45,197,63,228,229,239,231,242,225,240,232,233,227,240,225,242,229,110,128,50,33,238,230,229,242,233,239,114,128,32,130,237,239,238,239,243,240,225,227,101,128,255,18,238,245,237,229,242,225,244,239,242,226,229,238,231,225,236,105,128,9,245,239,236,228,243,244,249,236,101,128,247,50,112,2,197,121,197,128,225,242,229,110,128,36,117,229,114,2,197,135,197,141,233,239,100,128,36,137,243,233,225,110,128,6,242,242,239,237,225,110,128,33,113,115,2,197,162,197,170,244,242,239,235,101,128,1,187,245,240,229,242,233,239,114,128,0,178,244,104,2,197,187,197,192,225,105,128,14,82,233,242,228,115,128,33,84,117,145,0,117,197,237,197,245,198,30,198,87,198,225,199,6,199,129,199,145,199,196,200,10,200,91,200,100,200,219,200,243,201,95,201,123,201,237,225,227,245,244,101,128,0,250,98,4,197,255,198,4,198,13,198,23,225,114,128,2,137,229,238,231,225,236,105,128,9,137,239,240,239,237,239,230,111,128,49,40,242,229,246,101,128,1,109,99,3,198,38,198,45,198,77,225,242,239,110,128,1,212,233,242,99,2,198,53,198,58,236,101,128,36,228,245,237,230,236,229,120,129,0,251,198,69,226,229,236,239,119,128,30,119,249,242,233,236,236,233,99,128,4,67,100,5,198,99,198,110,198,133,198,139,198,215,225,244,244,225,228,229,246,97,128,9,81,226,108,2,198,117,198,125,225,227,245,244,101,128,1,113,231,242,225,246,101,128,2,21,229,246,97,128,9,9,233,229,242,229,243,233,115,133,0,252,198,159,198,167,198,175,198,198,198,206,225,227,245,244,101,128,1,216,226,229,236,239,119,128,30,115,99,2,198,181,198,188,225,242,239,110,128,1,218,249,242,233,236,236,233,99,128,4,241,231,242,225,246,101,128,1,220,237,225,227,242,239,110,128,1,214,239,244,226,229,236,239,119,128,30,229,103,2,198,231,198,238,242,225,246,101,128,0,249,117,2,198,244,198,253,234,225,242,225,244,105,128,10,137,242,237,245,235,232,105,128,10,9,104,3,199,14,199,24,199,102,233,242,225,231,225,238,97,128,48,70,111,2,199,30,199,40,239,235,225,226,239,246,101,128,30,231,242,110,133,1,176,199,55,199,63,199,74,199,82,199,94,225,227,245,244,101,128,30,233,228,239,244,226,229,236,239,119,128,30,241,231,242,225,246,101,128,30,235,232,239,239,235,225,226,239,246,101,128,30,237,244,233,236,228,101,128,30,239,245,238,231,225,242,245,237,236,225,245,116,129,1,113,199,118,227,249,242,233,236,236,233,99,128,4,243,233,238,246,229,242,244,229,228,226,242,229,246,101,128,2,23,107,3,199,153,199,177,199,188,225,244,225,235,225,238,97,129,48,166,199,165,232,225,236,230,247,233,228,244,104,128,255,115,227,249,242,233,236,236,233,99,128,4,121,239,242,229,225,110,128,49,92,109,2,199,202,199,255,97,2,199,208,199,241,227,242,239,110,130,1,107,199,219,199,230,227,249,242,233,236,236,233,99,128,4,239,228,233,229,242,229,243,233,115,128,30,123,244,242,225,231,245,242,237,245,235,232,105,128,10,65,239,238,239,243,240,225,227,101,128,255,85,110,2,200,16,200,71,228,229,242,243,227,239,242,101,132,0,95,200,35,200,41,200,53,200,64,228,226,108,128,32,23,237,239,238,239,243,240,225,227,101,128,255,63,246,229,242,244,233,227,225,108,128,254,51,247,225,246,121,128,254,79,105,2,200,77,200,82,239,110,128,34,42,246,229,242,243,225,108,128,34,0,239,231,239,238,229,107,128,1,115,112,5,200,112,200,119,200,127,200,142,200,193,225,242,229,110,128,36,176,226,236,239,227,107,128,37,128,240,229],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+71681);allocate([242,228,239,244,232,229,226,242,229,119,128,5,196,243,233,236,239,110,131,3,197,200,156,200,177,200,185,228,233,229,242,229,243,233,115,129,3,203,200,169,244,239,238,239,115,128,3,176,236,225,244,233,110,128,2,138,244,239,238,239,115,128,3,205,244,225,227,107,2,200,202,200,213,226,229,236,239,247,227,237,98,128,3,29,237,239,100,128,2,212,114,2,200,225,200,237,225,231,245,242,237,245,235,232,105,128,10,115,233,238,103,128,1,111,115,3,200,251,201,10,201,55,232,239,242,244,227,249,242,233,236,236,233,99,128,4,94,237,225,236,108,2,201,19,201,30,232,233,242,225,231,225,238,97,128,48,69,235,225,244,225,235,225,238,97,129,48,165,201,43,232,225,236,230,247,233,228,244,104,128,255,105,244,242,225,233,231,232,116,2,201,67,201,78,227,249,242,233,236,236,233,99,128,4,175,243,244,242,239,235,229,227,249,242,233,236,236,233,99,128,4,177,244,233,236,228,101,130,1,105,201,107,201,115,225,227,245,244,101,128,30,121,226,229,236,239,119,128,30,117,117,5,201,135,201,145,201,152,201,177,201,193,226,229,238,231,225,236,105,128,9,138,228,229,246,97,128,9,10,231,117,2,201,159,201,168,234,225,242,225,244,105,128,10,138,242,237,245,235,232,105,128,10,10,237,225,244,242,225,231,245,242,237,245,235,232,105,128,10,66,246,239,247,229,236,243,233,231,110,3,201,209,201,219,201,226,226,229,238,231,225,236,105,128,9,194,228,229,246,97,128,9,66,231,245,234,225,242,225,244,105,128,10,194,246,239,247,229,236,243,233,231,110,3,201,253,202,7,202,14,226,229,238,231,225,236,105,128,9,193,228,229,246,97,128,9,65,231,245,234,225,242,225,244,105,128,10,193,118,139,0,118,202,51,202,199,202,208,202,219,203,148,203,155,203,253,204,9,204,109,204,117,204,138,97,4,202,61,202,68,202,93,202,104,228,229,246,97,128,9,53,231,117,2,202,75,202,84,234,225,242,225,244,105,128,10,181,242,237,245,235,232,105,128,10,53,235,225,244,225,235,225,238,97,128,48,247,118,132,5,213,202,116,202,143,202,175,202,187,228,225,231,229,243,104,130,251,53,202,129,202,134,182,53,128,251,53,232,229,226,242,229,119,128,251,53,104,2,202,149,202,157,229,226,242,229,119,128,5,213,239,236,225,109,129,251,75,202,166,232,229,226,242,229,119,128,251,75,246,225,246,232,229,226,242,229,119,128,5,240,249,239,228,232,229,226,242,229,119,128,5,241,227,233,242,227,236,101,128,36,229,228,239,244,226,229,236,239,119,128,30,127,101,6,202,233,202,244,203,52,203,63,203,69,203,136,227,249,242,233,236,236,233,99,128,4,50,104,4,202,254,203,7,203,21,203,37,225,242,225,226,233,99,128,6,164,230,233,238,225,236,225,242,225,226,233,99,128,251,107,233,238,233,244,233,225,236,225,242,225,226,233,99,128,251,108,237,229,228,233,225,236,225,242,225,226,233,99,128,251,109,235,225,244,225,235,225,238,97,128,48,249,238,245,115,128,38,64,242,244,233,227,225,108,2,203,80,203,86,226,225,114,128,0,124,236,233,238,101,4,203,99,203,110,203,121,203,130,225,226,239,246,229,227,237,98,128,3,13,226,229,236,239,247,227,237,98,128,3,41,236,239,247,237,239,100,128,2,204,237,239,100,128,2,200,247,225,242,237,229,238,233,225,110,128,5,126,232,239,239,107,128,2,139,105,3,203,163,203,174,203,213,235,225,244,225,235,225,238,97,128,48,248,242,225,237,97,3,203,185,203,195,203,202,226,229,238,231,225,236,105,128,9,205,228,229,246,97,128,9,77,231,245,234,225,242,225,244,105,128,10,205,243,225,242,231,97,3,203,225,203,235,203,242,226,229,238,231,225,236,105,128,9,131,228,229,246,97,128,9,3,231,245,234,225,242,225,244,105,128,10,131,237,239,238,239,243,240,225,227,101,128,255,86,111,3,204,17,204,28,204,98,225,242,237,229,238,233,225,110,128,5,120,233,227,229,100,2,204,37,204,73,233,244,229,242,225,244,233,239,110,2,204,51,204,62,232,233,242,225,231,225,238,97,128,48,158,235,225,244,225,235,225,238,97,128,48,254,237,225,242,235,235,225,238,97,129,48,155,204,86,232,225,236,230,247,233,228,244,104,128,255,158,235,225,244,225,235,225,238,97,128,48,250,240,225,242,229,110,128,36,177,116,2,204,123,204,130,233,236,228,101,128,30,125,245,242,238,229,100,128,2,140,117,2,204,144,204,155,232,233,242,225,231,225,238,97,128,48,148,235,225,244,225,235,225,238,97,128,48,244,119,143,0,119,204,200,205,177,205,187,205,210,205,250,206,61,206,69,208,40,208,81,208,93,208,168,208,176,208,183,208,194,208,203,97,8,204,218,204,225,204,235,204,246,205,28,205,60,205,72,205,108,227,245,244,101,128,30,131,229,235,239,242,229,225,110,128,49,89,232,233,242,225,231,225,238,97,128,48,143,107,2,204,252,205,20,225,244,225,235,225,238,97,129,48,239,205,8,232,225,236,230,247,233,228,244,104,128,255,156,239,242,229,225,110,128,49,88,243,237,225,236,108,2,205,38,205,49,232,233,242,225,231,225,238,97,128,48,142,235,225,244,225,235,225,238,97,128,48,238,244,244,239,243,241,245,225,242,101,128,51,87,118,2,205,78,205,86,229,228,225,243,104,128,48,28,249,245,238,228,229,242,243,227,239,242,229,246,229,242,244,233,227,225,108,128,254,52,119,3,205,116,205,125,205,139,225,242,225,226,233,99,128,6,72,230,233,238,225,236,225,242,225,226,233,99,128,254,238,232,225,237,250,225,225,226,239,246,101,2,205,154,205,163,225,242,225,226,233,99,128,6,36,230,233,238,225,236,225,242,225,226,233,99,128,254,134,226,243,241,245,225,242,101,128,51,221,227,233,242,99,2,205,196,205,201,236,101,128,36,230,245,237,230,236,229,120,128,1,117,100,2,205,216,205,226,233,229,242,229,243,233,115,128,30,133,239,116,2,205,233,205,242,225,227,227,229,238,116,128,30,135,226,229,236,239,119,128,30,137,101,4,206,4,206,15,206,27,206,51,232,233,242,225,231,225,238,97,128,48,145,233,229,242,243,244,242,225,243,115,128,33,24,107,2,206,33,206,43,225,244,225,235,225,238,97,128,48,241,239,242,229,225,110,128,49,94,239,235,239,242,229,225,110,128,49,93,231,242,225,246,101,128,30,129,232,233,244,101,8,206,90,206,99,206,183,207,17,207,101,207,146,207,198,207,254,226,245,236,236,229,116,128,37,230,99,2,206,105,206,125,233,242,227,236,101,129,37,203,206,115,233,238,246,229,242,243,101,128,37,217,239,242,238,229,242,226,242,225,227,235,229,116,2,206,142,206,162,236,229,230,116,129,48,14,206,151,246,229,242,244,233,227,225,108,128,254,67,242,233,231,232,116,129,48,15,206,172,246,229,242,244,233,227,225,108,128,254,68,100,2,206,189,206,230,233,225,237,239,238,100,129,37,199,206,200,227,239,238,244,225,233,238,233,238,231,226,236,225,227,235,243,237,225,236,236,228,233,225,237,239,238,100,128,37,200,239,247,238,240,239,233,238,244,233,238,103,2,206,246,207,6,243,237,225,236,236,244,242,233,225,238,231,236,101,128,37,191,244,242,233,225,238,231,236,101,128,37,189,236,101,2,207,24,207,66,230,244,240,239,233,238,244,233,238,103,2,207,39,207,55,243,237,225,236,236,244,242,233,225,238,231,236,101,128,37,195,244,242,233,225,238,231,236,101,128,37,193,238,244,233,227,245,236,225,242,226,242,225,227,235,229,116,2,207,86,207,93,236,229,230,116,128,48,22,242,233,231,232,116,128,48,23,242,233,231,232,244,240,239,233,238,244,233,238,103,2,207,119,207,135,243,237,225,236,236,244,242,233,225,238,231,236,101,128,37,185,244,242,233,225,238,231,236,101,128,37,183,115,3,207,154,207,184,207,192,109,2,207,160,207,172,225,236,236,243,241,245,225,242,101,128,37,171,233,236,233,238,231,230,225,227,101,128,38,58,241,245,225,242,101,128,37,161,244,225,114,128,38,6,116,2,207,204,207,215,229,236,229,240,232,239,238,101,128,38,15,239,242,244,239,233,243,229,243,232,229,236,236,226,242,225,227,235,229,116,2,207,239,207,246,236,229,230,116,128,48,24,242,233,231,232,116,128,48,25,245,240,240,239,233,238,244,233,238,103,2,208,13,208,29,243,237,225,236,236,244,242,233,225,238,231,236,101,128,37,181,244,242,233,225,238,231,236,101,128,37,179,105,2,208,46,208,57,232,233,242,225,231,225,238,97,128,48,144,107,2,208,63,208,73,225,244,225,235,225,238,97,128,48,240,239,242,229,225,110,128,49,95,237,239,238,239,243,240,225,227,101,128,255,87,111,4,208,103,208,114,208,139,208,157,232,233,242,225,231,225,238,97,128,48,146,235,225,244,225,235,225,238,97,129,48,242,208,127,232,225,236,230,247,233,228,244,104,128,255,102,110,129,32,169,208,145,237,239,238,239,243,240,225,227,101,128,255,230,247,225,229,238,244,232,225,105,128,14,39,240,225,242,229,110,128,36,178,242,233,238,103,128,30,152,243,245,240,229,242,233,239,114,128,2,183,244,245,242,238,229,100,128,2,141,249,238,110,128,1,191,120,137,0,120,208,231,208,242,208,253,209,6,209,33,209,46,209,50,209,62,209,70,225,226,239,246,229,227,237,98,128,3,61,226,239,240,239,237,239,230,111,128,49,18,227,233,242,227,236,101,128,36,231,100,2,209,12,209,22,233,229,242,229,243,233,115,128,30,141,239,244,225,227,227,229,238,116,128,30,139,229,232,225,242,237,229,238,233,225,110,128,5,109,105,128,3,190,237,239,238,239,243,240,225,227,101,128,255,88,240,225,242,229,110,128,36,179,243,245,240,229,242,233,239,114,128,2,227,121,143,0,121,209,115,210,74,210,97,210,137,212,103,212,111,212,128,212,192,212,204,213,201,213,241,213,253,214,8,214,29,215,2,97,11,209,139,209,151,209,161,209,168,209,175,209,185,209,210,209,221,210,3,210,16,210,62,225,228,239,243,241,245,225,242,101,128,51,78,226,229,238,231,225,236,105,128,9,175,227,245,244,101,128,0,253,228,229,246,97,128,9,47,229,235,239,242,229,225,110,128,49,82,231,117,2,209,192,209,201,234,225,242,225,244,105,128,10,175,242,237,245,235,232,105,128,10,47,232,233,242,225,231,225,238,97,128,48,132,107,2,209,227,209,251,225,244,225,235,225,238,97,129,48,228,209,239,232,225,236,230,247,233,228,244,104,128,255,148,239,242,229,225,110,128,49,81,237,225,235,235,225,238,244,232,225,105,128,14,78,243,237,225,236,108,2,210,26,210,37,232,233,242,225,231,225,238,97,128,48,131,235,225,244,225,235,225,238,97,129,48,227,210,50,232,225,236,230,247,233,228,244,104,128,255,108,244,227,249,242,233,236,236,233,99,128,4,99,227,233,242,99,2,210,83,210,88,236,101,128,36,232,245,237,230,236,229,120,128,1,119,100,2,210,103,210,113,233,229,242,229,243,233,115,128,0,255,239,116,2,210,120,210,129,225,227,227,229,238,116,128,30,143,226,229,236,239,119,128,30,245,101,7,210,153,211,161,211,170,211,188,211,220,212,40,212,91,104,8,210,171,210,180,210,214,210,228,211,45,211,61,211,120,211,138,225,242,225,226,233,99,128,6,74,226,225,242,242,229,101,2,210,191,210,200,225,242,225,226,233,99,128,6,210,230,233,238,225,236,225,242,225,226,233,99,128,251,175,230,233,238,225,236,225,242,225,226,233,99,128,254,242,232,225,237,250,225,225,226,239,246,101,4,210,247,211,0,211,14,211,30,225,242,225,226,233,99,128,6,38,230,233,238,225,236,225,242,225,226,233,99,128,254,138,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,139,237,229,228,233,225,236,225,242,225,226,233,99,128,254,140,233,238,233,244,233,225,236,225,242,225,226,233,99,128,254,243,237,101,2,211,68,211,81,228,233,225,236,225,242,225,226,233,99,128,254,244,229,237,105,2,211,89,211,104,238,233,244,233,225,236,225,242,225,226,233,99,128,252,221,243,239,236,225,244,229,228,225,242,225,226,233,99,128,252,88,238,239,239,238,230,233,238,225,236,225,242,225,226,233,99,128,252,148,244,232,242,229,229,228,239,244,243,226,229,236,239,247,225,242,225,226,233,99,128,6,209,235,239,242,229,225,110,128,49,86,110,129,0,165,211,176,237,239,238,239,243,240,225,227,101,128,255,229,111,2,211,194,211,203,235,239,242,229,225,110,128,49,85,242,233,238,232,233,229,245,232,235,239,242,229,225,110,128,49,134,114,3,211,228,212,8,212,20,225,232,226,229,238,249,239,237,111,2,211,242,211,251,232,229,226,242,229,119,128,5,170,236,229,230,244,232,229,226,242,229,119,128,5,170,233,227,249,242,233,236,236,233,99,128,4,75,245,228,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,249,243,233,229,245,238,103,3,212,53,212,62,212,78,235,239,242,229,225,110,128,49,129,240,225,238,243,233,239,243,235,239,242,229,225,110,128,49,131,243,233,239,243,235,239,242,229,225,110,128,49,130,244,233,246,232,229,226,242,229,119,128,5,154,231,242,225,246,101,128,30,243,232,239,239,107,129,1,180,212,120,225,226,239,246,101,128,30,247,105,5,212,140,212,151,212,162,212,171,212,179,225,242,237,229,238,233,225,110,128,5,117,227,249,242,233,236,236,233,99,128,4,87,235,239,242,229,225,110,128,49,98,238,249,225,238,103,128,38,47,247,238,225,242,237,229,238,233,225,110,128,5,130,237,239,238,239,243,240,225,227,101,128,255,89,111,7,212,220,213,34,213,45,213,55,213,93,213,139,213,148,100,131,5,217,212,230,212,250,213,3,228,225,231,229,243,104,129,251,57,212,241,232,229,226,242,229,119,128,251,57,232,229,226,242,229,119,128,5,217,249,239,100,2,213,11,213,20,232,229,226,242,229,119,128,5,242,240,225,244,225,232,232,229,226,242,229,119,128,251,31,232,233,242,225,231,225,238,97,128,48,136,233,235,239,242,229,225,110,128,49,137,107,2,213,61,213,85,225,244,225,235,225,238,97,129,48,232,213,73,232,225,236,230,247,233,228,244,104,128,255,150,239,242,229,225,110,128,49,91,243,237,225,236,108,2,213,103,213,114,232,233,242,225,231,225,238,97,128,48,135,235,225,244,225,235,225,238,97,129,48,231,213,127,232,225,236,230,247,233,228,244,104,128,255,110,244,231,242,229,229,107,128,3,243,121,2,213,154,213,191,97,2,213,160,213,170,229,235,239,242,229,225,110,128,49,136,107,2,213,176,213,184,239,242,229,225,110,128,49,135,244,232,225,105,128,14,34,233,238,231,244,232,225,105,128,14,13,112,2,213,207,213,214,225,242,229,110,128,36,180,239,231,229,231,242,225,237,237,229,238,105,129,3,122,213,230,231,242,229,229,235,227,237,98,128,3,69,114,129,1,166,213,247,233,238,103,128,30,153,243,245,240,229,242,233,239,114,128,2,184,116,2,214,14,214,21,233,236,228,101,128,30,249,245,242,238,229,100,128,2,142,117,5,214,41,214,52,214,62,214,100,214,232,232,233,242,225,231,225,238,97,128,48,134,233,235,239,242,229,225,110,128,49,140,107,2,214,68,214,92,225,244,225,235,225,238,97,129,48,230,214,80,232,225,236,230,247,233,228,244,104,128,255,149,239,242,229,225,110,128,49,96,115,3,214,108,214,146,214,187,226,233,103,2,214,116,214,127,227,249,242,233,236,236,233,99,128,4,107,233,239,244,233,230,233,229,228,227,249,242,233,236,236,233,99,128,4,109,236,233,244,244,236,101,2,214,157,214,168,227,249,242,233,236,236,233,99,128,4,103,233,239,244,233,230,233,229,228,227,249,242,233,236,236,233,99,128,4,105,237,225,236,108,2,214,196,214,207,232,233,242,225,231,225,238,97,128,48,133,235,225,244,225,235,225,238,97,129,48,229,214,220,232,225,236,230,247,233,228,244,104,128,255,109,249,101,2,214,239,214,248,235,239,242,229,225,110,128,49,139,239,235,239,242,229,225,110,128,49,138,249,97,2,215,9,215,19,226,229,238,231,225,236,105,128,9,223,228,229,246,97,128,9,95,122,142,0,122,215,58,216,66,216,77,216,120,216,147,217,182,218,34,218,76,218,88,218,100,218,128,218,136,218,152,218,161,97,10,215,80,215,91,215,98,215,105,215,116,215,194,215,224,215,235,216,15,216,27,225,242,237,229,238,233,225,110,128,5,102,227,245,244,101,128,1,122,228,229,246,97,128,9,91,231,245,242,237,245,235,232,105,128,10,91,104,4,215,126,215,135,215,149,215,179,225,242,225,226,233,99,128,6,56,230,233,238,225,236,225,242,225,226,233,99,128,254,198,105,2,215,155,215,170,238,233,244,233,225,236,225,242,225,226,233,99,128,254,199,242,225,231,225,238,97,128,48,86,237,229,228,233,225,236,225,242,225,226,233,99,128,254,200,233,110,2,215,201,215,210,225,242,225,226,233,99,128,6,50,230,233,238,225,236,225,242,225,226,233,99,128,254,176,235,225,244,225,235,225,238,97,128,48,182,241,229,102,2,215,243,216,1,231,225,228,239,236,232,229,226,242,229,119,128,5,149,241,225,244,225,238,232,229,226,242,229,119,128,5,148,242,241,225,232,229,226,242,229,119,128,5,152,249,233,110,130,5,214,216,37,216,57,228,225,231,229,243,104,129,251,54,216,48,232,229,226,242,229,119,128,251,54,232,229,226,242,229,119,128,5,214,226,239,240,239,237,239,230,111,128,49,23,99,3,216,85,216,92,216,114,225,242,239,110,128,1,126,233,242,99,2,216,100,216,105,236,101,128,36,233,245,237,230,236,229,120,128,30,145,245,242,108,128,2,145,228,239,116,130,1,124,216,130,216,139,225,227,227,229,238,116,128,1,124,226,229,236,239,119,128,30,147,101,6,216,161,216,172,216,215,216,226,216,237,217,177,227,249,242,233,236,236,233,99,128,4,55,100,2,216,178,216,197,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,153,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,223,232,233,242,225,231,225,238,97,128,48,92,235,225,244,225,235,225,238,97,128,48,188,242,111,140,0,48,217,10,217,19,217,29,217,36,217,61,217,74,217,85,217,97,217,108,217,118,217,129,217,136,225,242,225,226,233,99,128,6,96,226,229,238,231,225,236,105,128,9,230,228,229,246,97,128,9,102,231,117,2,217,43,217,52,234,225,242,225,244,105,128,10,230,242,237,245,235,232,105,128,10,102,232,225,227,235,225,242,225,226,233,99,128,6,96,233,238,230,229,242,233,239,114,128,32,128,237,239,238,239,243,240,225,227,101,128,255,16,239,236,228,243,244,249,236,101,128,247,48,240,229,242,243,233,225,110,128,6,240,243,245,240,229,242,233,239,114,128,32,112,244,232,225,105,128,14,80,247,233,228,244,104,3,217,148,217,157,217,169,234,239,233,238,229,114,128,254,255,238,239,238,234,239,233,238,229,114,128,32,12,243,240,225,227,101,128,32,11,244,97,128,3,182,104,2,217,188,217,199,226,239,240,239,237,239,230,111,128,49,19,101,4,217,209,217,220,217,236,217,247,225,242,237,229,238,233,225,110,128,5,106,226,242,229,246,229,227,249,242,233,236,236,233,99,128,4,194,227,249,242,233,236,236,233,99,128,4,54,100,2,217,253,218,16,229,243,227,229,238,228,229,242,227,249,242,233,236,236,233,99,128,4,151,233,229,242,229,243,233,243,227,249,242,233,236,236,233,99,128,4,221,105,3,218,42,218,53,218,64,232,233,242,225,231,225,238,97,128,48,88,235,225,244,225,235,225,238,97,128,48,184,238,239,242,232,229,226,242,229,119,128,5,174,236,233,238,229,226,229,236,239,119,128,30,149,237,239,238,239,243,240,225,227,101,128,255,90,111,2,218,106,218,117,232,233,242,225,231,225,238,97,128,48,94,235,225,244,225,235,225,238,97,128,48,190,240,225,242,229,110,128,36,181,242,229,244,242,239,230,236,229,248,232,239,239,107,128,2,144,243,244,242,239,235,101,128,1,182,117,2,218,167,218,178,232,233,242,225,231,225,238,97,128,48,90,235,225,244,225,235,225,238,97,128,48,186,0,0,0,108,116,117,111,66,0,0,0,3,0,0,0,28,0,0,0,67,0,0,0,90,0,0,0,114,97,115,116,101,114,49,0,2,0,0,0,64,0,0,0,96,82,1,0,0,0,1,0,0,0,2,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,108,116,117,111,15,0,0,0,16,0,0,0,4,0,0,0,29,0,0,0,72,82,1,0,0,0,0,0,114,97,115,116,101,114,53,0,2,0,0,0,64,0,0,0,168,82,1,0,0,0,1,0,0,0,2,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,108,116,117,111,15,0,0,0,16,0,0,0,4,0,0,0,29,0,0,0,72,82,1,0,0,0,0,0,24,0,0,0,68,0,0,0,0,0,0,0,69,0,0,0,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,0,0,0,72,0,0,0,0,0,0,0,24,0,0,0,68,0,0,0,0,0,0,0,73,0,0,0,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,75,0,0,0,76,0,0,0,0,0,0,0,56,0,0,0,77,0,0,0,0,0,0,0,78,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,80,0,0,0,81,0,0,0,0,0,0,0,24,0,0,0,68,0,0,0,0,0,0,0,82,0,0,0,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,84,0,0,0,85,0,0,0,0,0,0,0,24,0,0,0,68,0,0,0,0,0,0,0,86,0,0,0,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,88,0,0,0,89,0,0,0,0,0,0,0,24,0,0,0,68,0,0,0,0,0,0,0,90,0,0,0,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,92,0,0,0,93,0,0,0,0,0,0,0,44,0,0,0,94,0,0,0,0,0,0,0,95,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,97,0,0,0,98,0,0,0,0,0,0,0,44,0,0,0,99,0,0,0,0,0,0,0,100,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,102,0,0,0,103,0,0,0,0,0,0,0,40,0,0,0,104,0,0,0,91,0,0,0,105,0,0,0,106,0,0,0,17,0,0,0,30,0,0,0,107,0,0,0,31,0,0,0,32,0,0,0,14,0,0,0,108,0,0,0,109,0,0,0,0,0,0,0,115,102,110,116,0,0,0,0,18,0,0,0,21,0,0,0,22,0,0,0,92,0,0,0,110,0,0,0,23,0,0,0,111,0,0,0,33,0,0,0,112,0,0,0,113,0,0,0,114,0,0,0,115,0,0,0,116,0,0,0,93,0,0,0,117,0,0,0,118,0,0,0,119,0,0,0,120,0,0,0,1,0,0,0,34,0,0,0,94,0,0,0,35,0,0,0,121,0,0,0,36,0,0,0,122,0,0,0,95,0,0,0,37,0,0,0,38,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,232,84,1,0,0,0,1,0,0,0,2,0,240,84,1,0,0,0,0,0,0,0,0,0,110,0,0,0,0,0,0,0,192,85,1,0,208,85,1,0,224,85,1,0,248,85,1,0,0,86,1,0,16,86,1,0,24,86,1,0,32,86,1,0,40,86,1,0,56,86,1,0,0,0,0,0,0,0,0,0,115,102,110,116,45,116,97,98,108,101,0,0,0,0,0,0,23,0,0,0,123,0,0,0,25,0,0,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,102,111,110,116,45,110,97,109,101,0,0,0,0,34,0,0,0,0,0,0,0,103,108,121,112,104,45,100,105,99,116,0,0,0,0,0,0,19,0,0,0,124,0,0,0,98,100,102,0,0,0,0,0,39,0,0,0,40,0,0,0,116,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,125,0,0,0,0,0,0,0,67,72,65,82,83,69,84,95,82,69,71,73,83,84,82,89,0,0,0,0,0,0,0,0,67,72,65,82,83,69,84,95,69,78,67,79,68,73,78,71,0,0,0,0,0,0,0,0,4,0,8,0,12,2,4,0,12,2,6,0,12,2,8,0,12,2,10,0,0,0,0,0,4,0,16,0,16,4,0,0,16,4,4,0,16,4,8,0,16,4,12,0,0,0,0,0,4,0,54,0,16,4,0,0,16,4,4,0,17,4,8,0,17,4,12,0,12,2,16,0,12,2,18,0,17,4,20,0,17,4,24,0,17,4,28,0,17,4,32,0,13,2,36,0,13,2,38,0,13,2,40,0,13,2,42,0,12,2,44,0,12,2,46,0,13,2,48,0,13,2,50,0,13,2,52,0,0,0,0,0,0,0,0,0,4,0,54,0,16,4,0,0,16,4,4,0,12,2,8,0,12,2,10,0,12,2,12,0,12,2,14,0,12,2,16,0,24,16,20,0,24,8,36,0,24,6,44,0,9,1,50,0,9,1,51,0,8,1,52,0,8,1,53,0,0,0,0,0,4,0,6,0,12,2,0,0,12,4,4,0,12,4,8,0,0,0,0,0,0,0,0,0,12,2,0,0,12,2,2,0,12,2,4,0,12,2,6,0,12,2,8,0,12,4,12,0,0,0,0,0,0,0,0,0,4,0,32,0,16,4,0,0,16,4,4,0,13,2,8,0,13,2,10,0,16,4,12,0,16,4,16,0,16,4,20,0,16,4,24,0,16,4,28,0,0,0,0,0,0,0,0,0,4,0,78,0,12,2,0,0,13,2,2,0,12,2,4,0,12,2,6,0,13,2,8,0,13,2,10,0,13,2,12,0,13,2,14,0,13,2,16,0,13,2,18,0,13,2,20,0,13,2,22,0,13,2,24,0,13,2,26,0,13,2,28,0,13,2,30,0,8,1,32,0,8,1,33,0,8,1,34,0,8,1,35,0,8,1,36,0,8,1,37,0,8,1,38,0,8,1,39,0,8,1,40,0,8,1,41,0,16,4,44,0,16,4,48,0,16,4,52,0,16,4,56,0,8,1,60,0,8,1,61,0,8,1,62,0,8,1,63,0,12,2,64,0,12,2,66,0,12,2,68,0,13,2,70,0,13,2,72,0,13,2,74,0,12,2,76,0,12,2,78,0,0,0,0,0,4,0,8,0,16,4,80,0,16,4,84,0,0,0,0,0,4,0,10,0,13,2,88,0,13,2,90,0,12,2,92,0,12,2,94,0,12,2,96,0,0,0,0,0,0,0,0,0,4,0,6,0,17,4,0,0,12,2,4,0,0,0,0,0,4,0,26,0,12,2,6,0,12,2,8,0,12,2,10,0,12,2,12,0,12,2,14,0,12,2,16,0,12,2,18,0,12,2,20,0,12,2,22,0,12,2,24,0,12,2,26,0,12,2,28,0,12,2,30,0,0,0,0,0,0,0,0,0,4,0,36,0,16,4,0,0,13,2,4,0,13,2,6,0,13,2,8,0,12,2,10,0,13,2,12,0,13,2,14,0,13,2,16,0,13,2,18,0,13,2,20,0,13,2,22,0,13,2,24,0,13,2,26,0,13,2,28,0,13,2,30,0,13,2,32,0,12,2,34,0,0,0,0,0,0,0,0,0,2,0,0,0,255,255,255,255,99,105,110,117,0,0,0,0,255,255,255,255,99,105,110,117,1,0,0,0,0,0,0,0,110,109,114,97,3,0,0,0,0,0,0,0,98,109,121,115,3,0,0,0,10,0,0,0,99,105,110,117,3,0,0,0,1,0,0,0,99,105,110,117,3,0,0,0,2,0,0,0,115,105,106,115,3,0,0,0,3,0,0,0,32,32,98,103,3,0,0,0,4,0,0,0,53,103,105,98,3,0,0,0,5,0,0,0,115,110,97,119,3,0,0,0,6,0,0,0,97,104,111,106,0,0,0,0,240,82,1,0,40,83,1,0,96,83,1,0,152,83,1,0,208,83,1,0,8,84,1,0,64,84,1,0,120,84,1,0,176,84,1,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,4,0,8,0,17,4,4,0,17,4,8,0,0,0,0,0,4,0,44,0,16,4,0,0,16,4,4,0,16,4,8,0,12,2,12,0,12,2,14,0,16,4,16,0,12,2,20,0,12,2,22,0,16,4,24,0,16,4,28,0,16,4,32,0,16,4,36,0,16,4,40,0,0,0,0,0,0,0,0,0,108,116,117,111,126,0,0,0,5,0,0,0,0,0,0,0,127,0,0,0,96,0,0,0,115,109,111,111,116,104,0,0,2,0,0,0,64,0,0,0,80,90,1,0,0,0,1,0,0,0,2,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,108,116,117,111,20,0,0,0,21,0,0,0,6,0,0,0,41,0,0,0,56,90,1,0,0,0,0,0,115,109,111,111,116,104,45,108,99,100,0,0,0,0,0,0,2,0,0,0,64,0,0,0,152,90,1,0,0,0,1,0,0,0,2,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,108,116,117,111,22,0,0,0,21,0,0,0,6,0,0,0,41,0,0,0,56,90,1,0,0,0,0,0,115,109,111,111,116,104,45,108,99,100,118,0,0,0,0,0,2,0,0,0,64,0,0,0,232,90,1,0,0,0,1,0,0,0,2,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,108,116,117,111,23,0,0,0,21,0,0,0,6,0,0,0,41,0,0,0,56,90,1,0,0,0,0,0,128,0,0,0,129,0,0,0,42,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,116,114,117,101,116,121,112,101,0,0,0,0,0,0,0,0,1,5,0,0,72,0,0,0,80,91,1,0,0,0,1,0,0,0,2,0,0,0,0,0,36,0,0,0,97,0,0,0,130,0,0,0,20,3,0,0,48,1,0,0,160,0,0,0,26,0,0,0,98,0,0,0,37,0,0,0,99,0,0,0,38,0,0,0,0,0,0,0,25,0,0,0,26,0,0,0,0,0,0,0,27,0,0,0,131,0,0,0,132,0,0,0,0,0,0,0,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,0,1,0,0,0,64,0,0,0,1,0,0,0,1,0,0,0,68,0,0,0,0,0,0,0,0,0,0,0,9,0,3,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,255,254,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,4,5,6,7,8,9,3,5,7,9,11,13,15,17,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,32,32,32,32,32,32,2,2,0,80,16,16,16,16,16,16,16,16,0,0,16,0,16,16,16,16,18,16,0,34,1,17,16,32,0,16,32,16,16,0,16,16,0,0,0,0,16,16,16,16,16,0,32,32,0,0,32,32,0,0,32,17,32,17,17,17,32,33,33,1,1,0,0,16,33,33,33,33,33,33,17,17,16,0,33,33,17,16,16,16,33,33,33,33,17,17,17,17,17,17,17,17,17,17,17,17,32,16,16,16,16,16,16,16,32,32,0,0,0,0,16,16,0,32,32,0,0,16,32,32,17,16,51,33,33,16,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,115,102,110,116,0,0,0,0,46,110,111,116,100,101,102,0,88,240,188,5,228,2,0,0,241,59,35,40,196,135,0,0,234,161,68,163,225,1,0,0,88,240,188,5,228,2,0,0,241,59,35,40,196,135,0,0,235,161,68,163,225,1,0,0,212,234,229,17,80,3,0,0,59,202,48,90,99,144,0,0,2,38,164,19,126,0,0,0,252,255,251,255,8,0,0,0,184,72,158,156,162,190,0,0,18,1,2,112,8,0,0,0,252,255,251,255,8,0,0,0,131,4,90,10,57,124,1,0,18,1,2,112,8,0,0,0,0,0,0,0,0,0,0,0,85,37,201,64,229,0,0,0,227,88,155,163,124,17,0,0,0,0,0,0,0,0,0,0,82,22,196,51,229,0,0,0,42,197,214,38,106,15,0,0,0,0,0,0,0,0,0,0,29,101,177,109,157,1,0,0,3,75,110,108,146,36,0,0,0,0,0,0,0,0,0,0,85,37,201,64,229,0,0,0,208,250,81,222,124,17,0,0,0,0,0,0,0,0,0,0,100,118,228,133,229,0,0,0,49,40,198,166,170,28,0,0,0,0,0,0,0,0,0,0,253,28,137,45,157,1,0,0,51,70,96,160,232,29,0,0,0,0,0,0,0,0,0,0,76,119,170,64,203,1,0,0,150,170,92,155,154,31,0,0,0,0,0,0,0,0,0,0,203,233,61,13,65,1,0,0,102,119,18,212,128,34,0,0,0,0,0,0,0,0,0,0,152,38,105,74,240,1,0,0,70,67,13,52,202,31,0,0,0,0,0,0,0,0,0,0,4,198,52,205,102,1,0,0,70,16,243,108,176,34,0,0,0,0,0,0,0,0,0,0,21,83,167,93,157,1,0,0,95,90,116,64,224,34,0,0,0,0,0,0,0,0,0,0,72,252,85,240,194,1,0,0,211,222,0,57,24,30,0,0,68,70,75,97,105,83,104,111,45,83,66,0,0,0,0,0,0,68,70,75,97,105,83,104,117,0,0,0,0,0,0,0,0,0,68,70,75,97,105,45,83,66,0,0,0,0,0,0,0,0,0,72,117,97,84,105,97,110,75,97,105,84,105,63,0,0,0,0,72,117,97,84,105,97,110,83,111,110,103,84,105,63,0,0,0,77,105,110,103,76,105,85,0,0,0,0,0,0,0,0,0,0,80,77,105,110,103,76,105,85,0,0,0,0,0,0,0,0,0,77,105,110,103,76,105,52,51,0,0,0,0,0,0,0,0,0,104,96,1,0,128,96,1,0,144,96,1,0,160,96,1,0,184,96,1,0,200,96,1,0,208,96,1,0,216,96,1,0,224,96,1,0,240,96,1,0,0,0,0,0,0,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,84,114,117,101,84,121,112,101,0,0,0,0,0,0,0,0,109,117,108,116,105,45,109,97,115,116,101,114,115,0,0,0,0,0,0,0,0,0,0,0,43,0,0,0,133,0,0,0,44,0,0,0,0,0,0,0,116,114,117,101,116,121,112,101,45,101,110,103,105,110,101,0,2,0,0,0,0,0,0,0,116,116,45,103,108,121,102,0,45,0,0,0,0,0,0,0,112,114,111,112,101,114,116,105,101,115,0,0,0,0,0,0,46,0,0,0,47,0,0,0,105,110,116,101,114,112,114,101,116,101,114,45,118,101,114,115,105,111,110,0,0,0,0,0,4,0,16,0,17,4,0,0,12,2,4,0,12,2,6,0,12,2,8,0,12,2,10,0,12,2,12,0,12,2,14,0,0,0,0,0,0,0,0,0,4,0,20,0,16,4,0,0,16,4,4,0,16,4,8,0,16,4,12,0,12,2,16,0,12,2,18,0,0,0,0,0,87,101,105,103,104,116,0,0,87,105,100,116,104,0,0,0,79,112,116,105,99,97,108,83,105,122,101,0,0,0,0,0,83,108,97,110,116,0,0,0,4,0,20,0,17,4,0,0,12,2,4,0,12,2,6,0,16,4,8,0,12,2,12,0,12,2,14,0,16,4,16,0,0,0,0,0,0,0,0,0,116,121,112,101,49,0,0,0,1,5,0,0,28,0,0,0,168,97,1,0,0,0,1,0,0,0,2,0,0,0,0,0,39,0,0,0,100,0,0,0,134,0,0,0,40,2,0,0,44,0,0,0,180,0,0,0,28,0,0,0,101,0,0,0,40,0,0,0,102,0,0,0,41,0,0,0,103,0,0,0,27,0,0,0,28,0,0,0,135,0,0,0,29,0,0,0,136,0,0,0,0,0,0,0,112,115,104,105,110,116,101,114,0,0,0,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,112,115,97,117,120,0,0,0,82,101,103,117,108,97,114,0,66,111,108,100,0,0,0,0,66,108,97,99,107,0,0,0,46,110,111,116,100,101,102,0,101,101,120,101,99,0,0,0,99,108,111,115,101,102,105,108,101,0,0,0,0,0,0,0,70,111,110,116,68,105,114,101,99,116,111,114,121,0,0,0,56,105,1,0,3,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,105,1,0,3,0,0,0,5,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,72,105,1,0,3,0,0,0,5,0,0,0,0,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,88,105,1,0,3,0,0,0,5,0,0,0,0,0,0,0,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,104,105,1,0,3,0,0,0,5,0,0,0,0,0,0,0,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,112,105,1,0,3,0,0,0,2,0,0,0,0,0,0,0,20,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,128,105,1,0,3,0,0,0,1,0,0,0,0,0,0,0,24,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,144,105,1,0,3,0,0,0,2,0,0,0,0,0,0,0,26,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,168,105,1,0,3,0,0,0,2,0,0,0,0,0,0,0,28,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,192,105,1,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,200,105,1,0,4,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,216,105,1,0,4,0,0,0,2,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,224,105,1,0,4,0,0,0,2,0,0,0,0,0,0,0,184,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,240,105,1,0,4,0,0,0,2,0,0,0,0,0,0,0,188,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,106,1,0,4,0,0,0,4,0,0,0,0,0,0,0,108,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,16,106,1,0,4,0,0,0,2,0,0,0,0,0,0,0,112,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,32,106,1,0,4,0,0,0,2,0,0,0,0,0,0,0,116,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,48,106,1,0,4,0,0,0,9,0,0,0,0,0,0,0,12,0,0,0,2,0,0,0,14,0,0,0,8,0,0,0,2,0,0,0,64,106,1,0,4,0,0,0,9,0,0,0,0,0,0,0,40,0,0,0,2,0,0,0,10,0,0,0,9,0,0,0,2,0,0,0,80,106,1,0,4,0,0,0,9,0,0,0,0,0,0,0,60,0,0,0,2,0,0,0,14,0,0,0,10,0,0,0,2,0,0,0,96,106,1,0,4,0,0,0,9,0,0,0,0,0,0,0,88,0,0,0,2,0,0,0,10,0,0,0,11,0,0,0,2,0,0,0,120,106,1,0,4,0,0,0,9,0,0,0,0,0,0,0,120,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,128,106,1,0,4,0,0,0,9,0,0,0,0,0,0,0,122,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,136,106,1,0,4,0,0,0,9,0,0,0,0,0,0,0,192,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,152,106,1,0,4,0,0,0,9,0,0,0,0,0,0,0,128,0,0,0,2,0,0,0,12,0,0,0,124,0,0,0,2,0,0,0,168,106,1,0,4,0,0,0,9,0,0,0,0,0,0,0,154,0,0,0,2,0,0,0,12,0,0,0,125,0,0,0,2,0,0,0,184,106,1,0,4,0,0,0,3,0,0,0,0,0,0,0,180,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,200,106,1,0,4,0,0,0,1,0,0,0,0,0,0,0,126,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,216,106,1,0,1,0,0,0,6,0,0,0,0,0,0,0,232,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,232,106,1,0,1,0,0,0,2,0,0,0,0,0,0,0,44,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,248,106,1,0,1,0,0,0,2,0,0,0,0,0,0,0,45,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,107,1,0,1,0,0,0,3,0,0,0,0,0,0,0,92,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,24,107,1,0,5,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,40,107,1,0,7,0,0,0,2,0,0,0,0,0,0,0,20,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,48,107,1,0,7,0,0,0,2,0,0,0,0,0,0,0,24,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,56,107,1,0,8,0,0,0,9,0,0,0,0,0,0,0,96,1,0,0,4,0,0,0,16,0,0,0,160,1,0,0,1,0,0,0,72,107,1,0,8,0,0,0,11,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,88,107,1,0,8,0,0,0,11,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,104,107,1,0,8,0,0,0,11,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,40,105,1,0,8],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+81921);allocate([0,0,0,11,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,112,107,1,0,8,0,0,0,11,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,120,107,1,0,8,0,0,0,11,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,144,107,1,0,8,0,0,0,11,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,160,107,1,0,8,0,0,0,11,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,176,107,1,0,8,0,0,0,11,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,192,107,1,0,8,0,0,0,11,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,104,97,114,83,116,114,105,110,103,115,0,0,0,0,0,118,101,114,115,105,111,110,0,78,111,116,105,99,101,0,0,70,117,108,108,78,97,109,101,0,0,0,0,0,0,0,0,70,97,109,105,108,121,78,97,109,101,0,0,0,0,0,0,87,101,105,103,104,116,0,0,73,116,97,108,105,99,65,110,103,108,101,0,0,0,0,0,105,115,70,105,120,101,100,80,105,116,99,104,0,0,0,0,85,110,100,101,114,108,105,110,101,80,111,115,105,116,105,111,110,0,0,0,0,0,0,0,85,110,100,101,114,108,105,110,101,84,104,105,99,107,110,101,115,115,0,0,0,0,0,0,70,83,84,121,112,101,0,0,85,110,105,113,117,101,73,68,0,0,0,0,0,0,0,0,108,101,110,73,86,0,0,0,76,97,110,103,117,97,103,101,71,114,111,117,112,0,0,0,112,97,115,115,119,111,114,100,0,0,0,0,0,0,0,0,66,108,117,101,83,99,97,108,101,0,0,0,0,0,0,0,66,108,117,101,83,104,105,102,116,0,0,0,0,0,0,0,66,108,117,101,70,117,122,122,0,0,0,0,0,0,0,0,66,108,117,101,86,97,108,117,101,115,0,0,0,0,0,0,79,116,104,101,114,66,108,117,101,115,0,0,0,0,0,0,70,97,109,105,108,121,66,108,117,101,115,0,0,0,0,0,70,97,109,105,108,121,79,116,104,101,114,66,108,117,101,115,0,0,0,0,0,0,0,0,83,116,100,72,87,0,0,0,83,116,100,86,87,0,0,0,77,105,110,70,101,97,116,117,114,101,0,0,0,0,0,0,83,116,101,109,83,110,97,112,72,0,0,0,0,0,0,0,83,116,101,109,83,110,97,112,86,0,0,0,0,0,0,0,69,120,112,97,110,115,105,111,110,70,97,99,116,111,114,0,70,111,114,99,101,66,111,108,100,0,0,0,0,0,0,0,70,111,110,116,78,97,109,101,0,0,0,0,0,0,0,0,80,97,105,110,116,84,121,112,101,0,0,0,0,0,0,0,70,111,110,116,84,121,112,101,0,0,0,0,0,0,0,0,83,116,114,111,107,101,87,105,100,116,104,0,0,0,0,0,70,111,110,116,66,66,111,120,0,0,0,0,0,0,0,0,78,68,86,0,0,0,0,0,67,68,86,0,0,0,0,0,68,101,115,105,103,110,86,101,99,116,111,114,0,0,0,0,70,111,110,116,77,97,116,114,105,120,0,0,0,0,0,0,69,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,83,117,98,114,115,0,0,0,80,114,105,118,97,116,101,0,66,108,101,110,100,68,101,115,105,103,110,80,111,115,105,116,105,111,110,115,0,0,0,0,66,108,101,110,100,68,101,115,105,103,110,77,97,112,0,0,66,108,101,110,100,65,120,105,115,84,121,112,101,115,0,0,87,101,105,103,104,116,86,101,99,116,111,114,0,0,0,0,66,117,105,108,100,67,104,97,114,65,114,114,97,121,0,0,139,247,225,13,14,0,0,0,100,117,112,0,0,0,0,0,112,117,116,0,0,0,0,0,83,116,97,110,100,97,114,100,69,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,69,120,112,101,114,116,69,110,99,111,100,105,110,103,0,0,73,83,79,76,97,116,105,110,49,69,110,99,111,100,105,110,103,0,0,0,0,0,0,0,37,33,80,83,45,65,100,111,98,101,70,111,110,116,0,0,37,33,70,111,110,116,84,121,112,101,0,0,0,0,0,0,128,108,1,0,152,108,1,0,160,108,1,0,176,108,1,0,184,108,1,0,208,108,1,0,216,108,1,0,232,108,1,0,0,109,1,0,8,109,1,0,16,109,1,0,32,109,1,0,0,0,0,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,102,111,110,116,45,110,97,109,101,0,0,0,0,42,0,0,0,0,0,0,0,103,108,121,112,104,45,100,105,99,116,0,0,0,0,0,0,29,0,0,0,137,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,84,121,112,101,32,49,0,0,112,111,115,116,115,99,114,105,112,116,45,105,110,102,111,0,138,0,0,0,139,0,0,0,43,0,0,0,140,0,0,0,30,0,0,0,0,0,0,0,107,101,114,110,105,110,103,0,30,0,0,0,0,0,0,0,109,117,108,116,105,45,109,97,115,116,101,114,115,0,0,0,141,0,0,0,48,0,0,0,49,0,0,0,142,0,0,0,50,0,0,0,0,0,0,0,87,105,100,116,104,0,0,0,79,112,116,105,99,97,108,83,105,122,101,0,0,0,0,0,116,121,112,101,52,50,0,0,1,5,0,0,36,0,0,0,80,109,1,0,0,0,1,0,0,0,2,0,0,0,0,0,44,0,0,0,104,0,0,0,143,0,0,0,48,2,0,0,48,0,0,0,164,0,0,0,31,0,0,0,105,0,0,0,45,0,0,0,106,0,0,0,46,0,0,0,107,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,0,0,0,145,0,0,0,112,111,115,116,115,99,114,105,112,116,45,99,109,97,112,115,0,0,0,0,0,0,0,0,112,115,97,117,120,0,0,0,82,101,103,117,108,97,114,0,46,110,111,116,100,101,102,0,70,111,110,116,68,105,114,101,99,116,111,114,121,0,0,0,107,110,111,119,110,0,0,0,208,112,1,0,3,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,112,1,0,3,0,0,0,5,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,112,1,0,3,0,0,0,5,0,0,0,0,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,112,1,0,3,0,0,0,5,0,0,0,0,0,0,0,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,1,0,3,0,0,0,5,0,0,0,0,0,0,0,16,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,113,1,0,3,0,0,0,2,0,0,0,0,0,0,0,20,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,113,1,0,3,0,0,0,1,0,0,0,0,0,0,0,24,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,113,1,0,3,0,0,0,2,0,0,0,0,0,0,0,26,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,113,1,0,3,0,0,0,2,0,0,0,0,0,0,0,28,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,113,1,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,113,1,0,1,0,0,0,6,0,0,0,0,0,0,0,232,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,113,1,0,1,0,0,0,2,0,0,0,0,0,0,0,44,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,113,1,0,1,0,0,0,2,0,0,0,0,0,0,0,45,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,113,1,0,1,0,0,0,3,0,0,0,0,0,0,0,92,1,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,113,1,0,5,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,113,1,0,5,0,0,0,11,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,113,1,0,5,0,0,0,11,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,113,1,0,5,0,0,0,11,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,113,1,0,5,0,0,0,11,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,101,114,115,105,111,110,0,78,111,116,105,99,101,0,0,70,117,108,108,78,97,109,101,0,0,0,0,0,0,0,0,70,97,109,105,108,121,78,97,109,101,0,0,0,0,0,0,87,101,105,103,104,116,0,0,73,116,97,108,105,99,65,110,103,108,101,0,0,0,0,0,105,115,70,105,120,101,100,80,105,116,99,104,0,0,0,0,85,110,100,101,114,108,105,110,101,80,111,115,105,116,105,111,110,0,0,0,0,0,0,0,85,110,100,101,114,108,105,110,101,84,104,105,99,107,110,101,115,115,0,0,0,0,0,0,70,83,84,121,112,101,0,0,70,111,110,116,78,97,109,101,0,0,0,0,0,0,0,0,80,97,105,110,116,84,121,112,101,0,0,0,0,0,0,0,70,111,110,116,84,121,112,101,0,0,0,0,0,0,0,0,83,116,114,111,107,101,87,105,100,116,104,0,0,0,0,0,70,111,110,116,66,66,111,120,0,0,0,0,0,0,0,0,70,111,110,116,77,97,116,114,105,120,0,0,0,0,0,0,69,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,67,104,97,114,83,116,114,105,110,103,115,0,0,0,0,0,115,102,110,116,115,0,0,0,83,116,97,110,100,97,114,100,69,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,69,120,112,101,114,116,69,110,99,111,100,105,110,103,0,0,73,83,79,76,97,116,105,110,49,69,110,99,111,100,105,110,103,0,0,0,0,0,0,0,37,33,80,83,45,84,114,117,101,84,121,112,101,70,111,110,116,0,0,0,0,0,0,0,104,114,1,0,120,114,1,0,128,114,1,0,152,114,1,0,160,114,1,0,176,114,1,0,200,114,1,0,224,114,1,0,0,0,0,0,0,0,0,0,103,108,121,112,104,45,100,105,99,116,0,0,0,0,0,0,32,0,0,0,146,0,0,0,112,111,115,116,115,99,114,105,112,116,45,102,111,110,116,45,110,97,109,101,0,0,0,0,47,0,0,0,0,0,0,0,112,111,115,116,115,99,114,105,112,116,45,105,110,102,111,0,147,0,0,0,148,0,0,0,48,0,0,0,149,0,0,0,0,0,0,0,0,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,84,121,112,101,32,52,50,0,116,114,117,101,116,121,112,101,0,0,0,0,0,0,0,0,119,105,110,102,111,110,116,115,0,0,0,0,0,0,0,0,1,2,0,0,28,0,0,0,248,114,1,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,150,0,0,0,152,0,0,0,44,0,0,0,160,0,0,0,32,0,0,0,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,0,0,0,152,0,0,0,82,101,103,117,108,97,114,0,66,111,108,100,32,73,116,97,108,105,99,0,0,0,0,0,66,111,108,100,0,0,0,0,73,116,97,108,105,99,0,0,24,0,0,0,153,0,0,0,0,0,0,0,154,0,0,0,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,148,0,14,2,0,0,18,4,4,0,24,60,8,0,14,2,68,0,14,2,70,0,14,2,72,0,14,2,74,0,14,2,76,0,14,2,78,0,14,2,80,0,8,1,82,0,8,1,83,0,8,1,84,0,14,2,86,0,8,1,88,0,14,2,90,0,14,2,92,0,8,1,94,0,14,2,96,0,14,2,98,0,8,1,100,0,8,1,101,0,8,1,102,0,8,1,103,0,14,2,104,0,18,4,108,0,18,4,112,0,18,4,116,0,18,4,120,0,8,1,124,0,18,4,128,0,14,2,132,0,14,2,134,0,14,2,136,0,18,2,138,0,24,16,140,0,0,0,0,0,4,0,64,0,14,2,0,0,25,58,0,0,18,2,2,0,0,0,0,0,0,0,0,0,4,0,40,0,14,2,0,0,25,34,0,0,14,2,2,0,14,2,4,0,0,0,0,0,4,0,248,0,18,4,0,0,14,2,4,0,14,2,6,0,25,12,0,0,14,2,8,0,25,2,0,0,14,2,10,0,25,110,0,0,18,4,12,0,18,4,16,0,25,104,0,0,0,0,0,0,0,0,0,0,4,0,40,0,24,8,0,0,25,4,0,0,18,4,8,0,18,4,12,0,18,4,16,0,25,16,0,0,0,0,0,0,4,0,16,0,18,4,0,0,18,4,4,0,14,2,8,0,14,2,10,0,14,2,12,0,14,2,14,0,0,0,0,0,4,0,8,0,18,4,0,0,18,4,4,0,0,0,0,0,4,0,16,0,18,4,0,0,18,4,4,0,18,4,8,0,18,4,12,0,0,0,0,0,56,117,1,0,80,117,1,0,248,114,1,0,96,117,1,0,0,0,0,0,0,0,0,0,120,102,56,54,45,100,114,105,118,101,114,45,110,97,109,101,0,0,0,0,0,0,0,0,87,105,110,100,111,119,115,32,70,78,84,0,0,0,0,0,156,0,0,0,0,0,0,0,40,100,101,112,116,104,32,61,61,32,49,41,32,124,124,32,40,100,101,112,116,104,32,61,61,32,50,41,32,124,124,32,40,100,101,112,116,104,32,61,61,32,51,41,32,124,124,32,40,100,101,112,116,104,32,61,61,32,52,41,0,0,0,0,46,46,92,46,46,92,83,112,97,114,107,121,45,99,111,114,101,92,101,120,116,92,102,114,101,101,116,121,112,101,45,103,108,92,116,101,120,116,117,114,101,45,97,116,108,97,115,46,99,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,97,116,108,97,115,95,110,101,119,0,0,0,0,0,0,0,108,105,110,101,32,37,100,58,32,78,111,32,109,111,114,101,32,109,101,109,111,114,121,32,102,111,114,32,97,108,108,111,99,97,116,105,110,103,32,100,97,116,97,10,0,0,0,0,115,101,108,102,0,0,0,0,116,101,120,116,117,114,101,95,97,116,108,97,115,95,115,101,116,95,114,101,103,105,111,110,0,0,0,0,0,0,0,0,120,32,62,32,48,0,0,0,121,32,62,32,48,0,0,0,120,32,60,32,40,115,101,108,102,45,62,119,105,100,116,104,45,49,41,0,0,0,0,0,40,120,32,43,32,119,105,100,116,104,41,32,60,61,32,40,115,101,108,102,45,62,119,105,100,116,104,45,49,41,0,0,121,32,60,32,40,115,101,108,102,45,62,104,101,105,103,104,116,45,49,41,0,0,0,0,40,121,32,43,32,104,101,105,103,104,116,41,32,60,61,32,40,115,101,108,102,45,62,104,101,105,103,104,116,45,49,41,0,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,97,116,108,97,115,95,109,101,114,103,101,0,0,0,0,0,116,101,120,116,117,114,101,95,97,116,108,97,115,95,103,101,116,95,114,101,103,105,111,110,0,0,0,0,0,0,0,0,115,101,108,102,45,62,100,97,116,97,0,0,0,0,0,0,116,101,120,116,117,114,101,95,97,116,108,97,115,95,117,112,108,111,97,100,0,0,0,0,110,111,32,101,114,114,111,114,0,0,0,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,114,101,115,111,117,114,99,101,0,0,0,0,117,110,107,110,111,119,110,32,102,105,108,101,32,102,111,114,109,97,116,0,0,0,0,0,98,114,111,107,101,110,32,102,105,108,101,0,0,0,0,0,105,110,118,97,108,105,100,32,70,114,101,101,84,121,112,101,32,118,101,114,115,105,111,110,0,0,0,0,0,0,0,0,109,111,100,117,108,101,32,118,101,114,115,105,111,110,32,105,115,32,116,111,111,32,108,111,119,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,0,0,0,0,0,0,0,117,110,105,109,112,108,101,109,101,110,116,101,100,32,102,101,97,116,117,114,101,0,0,0,98,114,111,107,101,110,32,116,97,98,108,101,0,0,0,0,98,114,111,107,101,110,32,111,102,102,115,101,116,32,119,105,116,104,105,110,32,116,97,98,108,101,0,0,0,0,0,0,97,114,114,97,121,32,97,108,108,111,99,97,116,105,111,110,32,115,105,122,101,32,116,111,111,32,108,97,114,103,101,0,109,105,115,115,105,110,103,32,109,111,100,117,108,101,0,0,109,105,115,115,105,110,103,32,112,114,111,112,101,114,116,121,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,103,108,121,112,104,32,105,110,100,101,120,0,0,0,0,0,105,110,118,97,108,105,100,32,99,104,97,114,97,99,116,101,114,32,99,111,100,101,0,0,117,110,115,117,112,112,111,114,116,101,100,32,103,108,121,112,104,32,105,109,97,103,101,32,102,111,114,109,97,116,0,0,99,97,110,110,111,116,32,114,101,110,100,101,114,32,116,104,105,115,32,103,108,121,112,104,32,102,111,114,109,97,116,0,105,110,118,97,108,105,100,32,111,117,116,108,105,110,101,0,105,110,118,97,108,105,100,32,99,111,109,112,111,115,105,116,101,32,103,108,121,112,104,0,116,111,111,32,109,97,110,121,32,104,105,110,116,115,0,0,105,110,118,97,108,105,100,32,112,105,120,101,108,32,115,105,122,101,0,0,0,0,0,0,105,110,118,97,108,105,100,32,111,98,106,101,99,116,32,104,97,110,100,108,101,0,0,0,105,110,118,97,108,105,100,32,108,105,98,114,97,114,121,32,104,97,110,100,108,101,0,0,105,110,118,97,108,105,100,32,109,111,100,117,108,101,32,104,97,110,100,108,101,0,0,0,105,110,118,97,108,105,100,32,102,97,99,101,32,104,97,110,100,108,101,0,0,0,0,0,105,110,118,97,108,105,100,32,115,105,122,101,32,104,97,110,100,108,101,0,0,0,0,0,105,110,118,97,108,105,100,32,103,108,121,112,104,32,115,108,111,116,32,104,97,110,100,108,101,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,99,104,97,114,109,97,112,32,104,97,110,100,108,101,0,0,105,110,118,97,108,105,100,32,99,97,99,104,101,32,109,97,110,97,103,101,114,32,104,97,110,100,108,101,0,0,0,0,105,110,118,97,108,105,100,32,115,116,114,101,97,109,32,104,97,110,100,108,101,0,0,0,116,111,111,32,109,97,110,121,32,109,111,100,117,108,101,115,0,0,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,101,120,116,101,110,115,105,111,110,115,0,0,0,0,0,111,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,117,110,108,105,115,116,101,100,32,111,98,106,101,99,116,0,99,97,110,110,111,116,32,111,112,101,110,32,115,116,114,101,97,109,0,0,0,0,0,0,105,110,118,97,108,105,100,32,115,116,114,101,97,109,32,115,101,101,107,0,0,0,0,0,105,110,118,97,108,105,100,32,115,116,114,101,97,109,32,115,107,105,112,0,0,0,0,0,105,110,118,97,108,105,100,32,115,116,114,101,97,109,32,114,101,97,100,0,0,0,0,0,105,110,118,97,108,105,100,32,115,116,114,101,97,109,32,111,112,101,114,97,116,105,111,110,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,102,114,97,109,101,32,111,112,101,114,97,116,105,111,110,0,110,101,115,116,101,100,32,102,114,97,109,101,32,97,99,99,101,115,115,0,0,0,0,0,105,110,118,97,108,105,100,32,102,114,97,109,101,32,114,101,97,100,0,0,0,0,0,0,114,97,115,116,101,114,32,117,110,105,110,105,116,105,97,108,105,122,101,100,0,0,0,0,114,97,115,116,101,114,32,99,111,114,114,117,112,116,101,100,0,0,0,0,0,0,0,0,114,97,115,116,101,114,32,111,118,101,114,102,108,111,119,0,110,101,103,97,116,105,118,101,32,104,101,105,103,104,116,32,119,104,105,108,101,32,114,97,115,116,101,114,105,110,103,0,116,111,111,32,109,97,110,121,32,114,101,103,105,115,116,101,114,101,100,32,99,97,99,104,101,115,0,0,0,0,0,0,105,110,118,97,108,105,100,32,111,112,99,111,100,101,0,0,116,111,111,32,102,101,119,32,97,114,103,117,109,101,110,116,115,0,0,0,0,0,0,0,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,0,99,111,100,101,32,111,118,101,114,102,108,111,119,0,0,0,98,97,100,32,97,114,103,117,109,101,110,116,0,0,0,0,100,105,118,105,115,105,111,110,32,98,121,32,122,101,114,111,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,114,101,102,101,114,101,110,99,101,0,0,0,0,0,0,0,102,111,117,110,100,32,100,101,98,117,103,32,111,112,99,111,100,101,0,0,0,0,0,0,102,111,117,110,100,32,69,78,68,70,32,111,112,99,111,100,101,32,105,110,32,101,120,101,99,117,116,105,111,110,32,115,116,114,101,97,109,0,0,0,110,101,115,116,101,100,32,68,69,70,83,0,0,0,0,0,105,110,118,97,108,105,100,32,99,111,100,101,32,114,97,110,103,101,0,0,0,0,0,0,101,120,101,99,117,116,105,111,110,32,99,111,110,116,101,120,116,32,116,111,111,32,108,111,110,103,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,102,117,110,99,116,105,111,110,32,100,101,102,105,110,105,116,105,111,110,115,0,0,0,116,111,111,32,109,97,110,121,32,105,110,115,116,114,117,99,116,105,111,110,32,100,101,102,105,110,105,116,105,111,110,115,0,0,0,0,0,0,0,0,83,70,78,84,32,102,111,110,116,32,116,97,98,108,101,32,109,105,115,115,105,110,103,0,104,111,114,105,122,111,110,116,97,108,32,104,101,97,100,101,114,32,40,104,104,101,97,41,32,116,97,98,108,101,32,109,105,115,115,105,110,103,0,0,108,111,99,97,116,105,111,110,115,32,40,108,111,99,97,41,32,116,97,98,108,101,32,109,105,115,115,105,110,103,0,0,110,97,109,101,32,116,97,98,108,101,32,109,105,115,115,105,110,103,0,0,0,0,0,0,99,104,97,114,97,99,116,101,114,32,109,97,112,32,40,99,109,97,112,41,32,116,97,98,108,101,32,109,105,115,115,105,110,103,0,0,0,0,0,0,104,111,114,105,122,111,110,116,97,108,32,109,101,116,114,105,99,115,32,40,104,109,116,120,41,32,116,97,98,108,101,32,109,105,115,115,105,110,103,0,80,111,115,116,83,99,114,105,112,116,32,40,112,111,115,116,41,32,116,97,98,108,101,32,109,105,115,115,105,110,103,0,105,110,118,97,108,105,100,32,104,111,114,105,122,111,110,116,97,108,32,109,101,116,114,105,99,115,0,0,0,0,0,0,105,110,118,97,108,105,100,32,99,104,97,114,97,99,116,101,114,32,109,97,112,32,40,99,109,97,112,41,32,102,111,114,109,97,116,0,0,0,0,0,105,110,118,97,108,105,100,32,112,112,101,109,32,118,97,108,117,101,0,0,0,0,0,0,105,110,118,97,108,105,100,32,118,101,114,116,105,99,97,108,32,109,101,116,114,105,99,115,0,0,0,0,0,0,0,0,99,111,117,108,100,32,110,111,116,32,102,105,110,100,32,99,111,110,116,101,120,116,0,0,105,110,118,97,108,105,100,32,80,111,115,116,83,99,114,105,112,116,32,40,112,111,115,116,41,32,116,97,98,108,101,32,102,111,114,109,97,116,0,0,105,110,118,97,108,105,100,32,80,111,115,116,83,99,114,105,112,116,32,40,112,111,115,116,41,32,116,97,98,108,101,0,111,112,99,111,100,101,32,115,121,110,116,97,120,32,101,114,114,111,114,0,0,0,0,0,97,114,103,117,109,101,110,116,32,115,116,97,99,107,32,117,110,100,101,114,102,108,111,119,0,0,0,0,0,0,0,0,105,103,110,111,114,101,0,0,110,111,32,85,110,105,99,111,100,101,32,103,108,121,112,104,32,110,97,109,101,32,102,111,117,110,100,0,0,0,0,0,103,108,121,112,104,32,116,111,32,98,105,103,32,102,111,114,32,104,105,110,116,105,110,103,0,0,0,0,0,0,0,0,96,83,84,65,82,84,70,79,78,84,39,32,102,105,101,108,100,32,109,105,115,115,105,110,103,0,0,0,0,0,0,0,96,70,79,78,84,39,32,102,105,101,108,100,32,109,105,115,115,105,110,103,0,0,0,0,96,83,73,90,69,39,32,102,105,101,108,100,32,109,105,115,115,105,110,103,0,0,0,0,96,70,79,78,84,66,79,85,78,68,73,78,71,66,79,88,39,32,102,105,101,108,100,32,109,105,115,115,105,110,103,0,96,67,72,65,82,83,39,32,102,105,101,108,100,32,109,105,115,115,105,110,103,0,0,0,96,83,84,65,82,84,67,72,65,82,39,32,102,105,101,108,100,32,109,105,115,115,105,110,103,0,0,0,0,0,0,0,96,69,78,67,79,68,73,78,71,39,32,102,105,101,108,100,32,109,105,115,115,105,110,103,0,0,0,0,0,0,0,0,96,66,66,88,39,32,102,105,101,108,100,32,109,105,115,115,105,110,103,0,0,0,0,0,96,66,66,88,39,32,116,111,111,32,98,105,103,0,0,0,70,111,110,116,32,104,101,97,100,101,114,32,99,111,114,114,117,112,116,101,100,32,111,114,32,109,105,115,115,105,110,103,32,102,105,101,108,100,115,0,70,111,110,116,32,103,108,121,112,104,115,32,99,111,114,114,117,112,116,101,100,32,111,114,32,109,105,115,115,105,110,103,32,102,105,101,108,100,115,0,0,0,0,0,56,119,1,0,1,0,0,0,72,119,1,0,2,0,0,0,96,119,1,0,3,0,0,0,120,119,1,0,4,0,0,0,136,119,1,0,5,0,0,0,168,119,1,0,6,0,0,0,200,119,1,0,7,0,0,0,224,119,1,0,8,0,0,0,248,119,1,0,9,0,0,0,8,120,1,0,10,0,0,0,40,120,1,0,11,0,0,0,72,120,1,0,12,0,0,0,88,120,1,0,16,0,0,0,112,120,1,0,17,0,0,0,136,120,1,0,18,0,0,0,160,120,1,0,19,0,0,0,192,120,1,0,20,0,0,0,224,120,1,0,21,0,0,0,240,120,1,0,22,0,0,0,8,121,1,0,23,0,0,0,24,121,1,0,32,0,0,0,48,121,1,0,33,0,0,0,72,121,1,0,34,0,0,0,96,121,1,0,35,0,0,0,120,121,1,0,36,0,0,0,144,121,1,0,37,0,0,0,168,121,1,0,38,0,0,0,200,121,1,0,39,0,0,0,224,121,1,0,40,0,0,0,0,122,1,0,48,0,0,0,24,122,1,0,49,0,0,0,48,122,1,0,64,0,0,0,72,122,1,0,65,0,0,0,88,122,1,0,81,0,0,0,104,122,1,0,82,0,0,0,128,122,1,0,83,0,0,0,152,122,1,0,84,0,0,0,176,122,1,0,85,0,0,0,200,122,1,0,86,0,0,0,232,122,1,0,87,0,0,0,0,123,1,0,88,0,0,0,24,123,1,0,96,0,0,0,48,123,1,0,97,0,0,0,72,123,1,0,98,0,0,0,96,123,1,0,99,0,0,0,112,123,1,0,112,0,0,0,144,123,1,0,128,0,0,0,176,123,1,0,129,0,0,0,192,123,1,0,130,0,0,0,216,123,1,0,131,0,0,0,232,123,1,0,132,0,0,0,248,123,1,0,133,0,0,0,8,124,1,0,134,0,0,0,32,124,1,0,135,0,0,0,56,124,1,0,136,0,0,0,80,124,1,0,137,0,0,0,120,124,1,0,138,0,0,0,136,124,1,0,139,0,0,0,160,124,1,0,140,0,0,0,192,124,1,0,141,0,0,0,224,124,1,0,142,0,0,0,8,125,1,0,143,0,0,0,32,125,1,0,144,0,0,0,72,125,1,0,145,0,0,0,104,125,1,0,146,0,0,0,128,125,1,0,147,0,0,0,168,125,1,0,148,0,0,0,208,125,1,0,149,0,0,0,240,125,1,0,150,0,0,0,16,126,1,0,151,0,0,0,56,126,1,0,152,0,0,0,80,126,1,0,153,0,0,0,112,126,1,0,154,0,0,0,136,126,1,0,155,0,0,0,176,126,1,0,160,0,0,0,208,126,1,0,161,0,0,0,232,126,1,0,162,0,0,0,8,127,1,0,163,0,0,0,16,127,1,0,164,0,0,0,48,127,1,0,176,0,0,0,80,127,1,0,177,0,0,0,112,127,1,0,178,0,0,0,136,127,1,0,179,0,0,0,160,127,1,0,180,0,0,0,192,127,1,0,181,0,0,0,216,127,1,0,182,0,0,0,248,127,1,0,183,0,0,0,24,128,1,0,184,0,0,0,48,128,1,0,185,0,0,0,64,128,1,0,186,0,0,0,104,128,1,0,0,0,0,0,0,0,0,0,108,105,110,101,32,37,100,58,32,78,111,32,109,111,114,101,32,109,101,109,111,114,121,32,102,111,114,32,97,108,108,111,99,97,116,105,110,103,32,100,97,116,97,10,0,0,0,0,115,101,108,102,0,0,0,0,46,46,92,46,46,92,83,112,97,114,107,121,45,99,111,114,101,92,101,120,116,92,102,114,101,101,116,121,112,101,45,103,108,92,116,101,120,116,117,114,101,45,102,111,110,116,46,99,0,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,103,108,121,112,104,95,100,101,108,101,116,101,0,0,0,0,116,101,120,116,117,114,101,95,103,108,121,112,104,95,103,101,116,95,107,101,114,110,105,110,103,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,102,111,110,116,95,103,101,110,101,114,97,116,101,95,107,101,114,110,105,110,103,0,0,0,102,105,108,101,110,97,109,101,0,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,102,111,110,116,95,110,101,119,95,102,114,111,109,95,102,105,108,101,0,0,0,0,0,0,116,101,120,116,117,114,101,95,102,111,110,116,95,100,101,108,101,116,101,0,0,0,0,0,116,101,120,116,117,114,101,95,102,111,110,116,95,108,111,97,100,95,103,108,121,112,104,115,0,0,0,0,0,0,0,0,99,104,97,114,99,111,100,101,115,0,0,0,0,0,0,0,70,84,95,69,114,114,111,114,32,40,108,105,110,101,32,37,100,44,32,99,111,100,101,32,48,120,37,48,50,120,41,32,58,32,37,115,10,0,0,0,70,84,95,69,114,114,111,114,32,40,48,120,37,48,50,120,41,32,58,32,37,115,10,0,84,101,120,116,117,114,101,32,97,116,108,97,115,32,105,115,32,102,117,108,108,32,40,108,105,110,101,32,37,100,41,10,0,0,0,0,0,0,0,0,116,101,120,116,117,114,101,95,102,111,110,116,95,103,101,116,95,103,108,121,112,104,0,0,115,101,108,102,45,62,102,105,108,101,110,97,109,101,0,0,115,101,108,102,45,62,97,116,108,97,115,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,116,101,120,116,117,114,101,95,102,111,110,116,95,105,110,105,116,0,0,0,0,0,0,0,115,101,108,102,45,62,115,105,122,101,32,62,32,48,0,0,40,115,101,108,102,45,62,108,111,99,97,116,105,111,110,32,61,61,32,84,69,88,84,85,82,69,95,70,79,78,84,95,70,73,76,69,32,38,38,32,115,101,108,102,45,62,102,105,108,101,110,97,109,101,41,32,124,124,32,40,115,101,108,102,45,62,108,111,99,97,116,105,111,110,32,61,61,32,84,69,88,84,85,82,69,95,70,79,78,84,95,77,69,77,79,82,89,32,38,38,32,115,101,108,102,45,62,109,101,109,111,114,121,46,98,97,115,101,32,38,38,32,115,101,108,102,45,62,109,101,109,111,114,121,46,115,105,122,101,41,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,1,0,108,105,98,114,97,114,121,0,116,101,120,116,117,114,101,95,102,111,110,116,95,108,111,97,100,95,102,97,99,101,0,0,115,105,122,101,0,0,0,0,105,116,101,109,95,115,105,122,101,0,0,0,0,0,0,0,46,46,92,46,46,92,83,112,97,114,107,121,45,99,111,114,101,92,101,120,116,92,102,114,101,101,116,121,112,101,45,103,108,92,118,101,99,116,111,114,46,99,0,0,0,0,0,0,118,101,99,116,111,114,95,110,101,119,0,0,0,0,0,0,108,105,110,101,32,37,100,58,32,78,111,32,109,111,114,101,32,109,101,109,111,114,121,32,102,111,114,32,97,108,108,111,99,97,116,105,110,103,32,100,97,116,97,10,0,0,0,0,115,101,108,102,0,0,0,0,118,101,99,116,111,114,95,100,101,108,101,116,101,0,0,0,118,101,99,116,111,114,95,103,101,116,0,0,0,0,0,0,115,101,108,102,45,62,115,105,122,101,0,0,0,0,0,0,105,110,100,101,120,32,60,32,115,101,108,102,45,62,115,105,122,101,0,0,0,0,0,0,118,101,99,116,111,114,95,98,97,99,107,0,0,0,0,0,118,101,99,116,111,114,95,115,105,122,101,0,0,0,0,0,118,101,99,116,111,114,95,99,108,101,97,114,0,0,0,0,118,101,99,116,111,114,95,115,101,116,0,0,0,0,0,0,118,101,99,116,111,114,95,105,110,115,101,114,116,0,0,0,105,110,100,101,120,32,60,61,32,115,101,108,102,45,62,115,105,122,101,0,0,0,0,0,118,101,99,116,111,114,95,101,114,97,115,101,95,114,97,110,103,101,0,0,0,0,0,0,102,105,114,115,116,32,60,32,115,101,108,102,45,62,115,105,122,101,0,0,0,0,0,0,108,97,115,116,32,60,32,115,101,108,102,45,62,115,105,122,101,43,49,0,0,0,0,0,102,105,114,115,116,32,60,32,108,97,115,116,0,0,0,0,118,101,99,116,111,114,95,101,114,97,115,101,0,0,0,0,73,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,32,105,110,32,37,115,0,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,37,115,32,40,37,108,100,32,101,108,101,109,101,110,116,115,32,111,102,32,37,108,100,32,98,121,116,101,115,32,101,97,99,104,41,0,0,0,0,0,0,0,135,22,153,62,162,69,22,63,213,120,233,61,0,0,0,0,0,0,0,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,34,84,114,97,110,115,102,101,114,70,117,110,99,116,105,111,110,34,32,116,97,103,0,0,0,0,0,84,97,103,32,0,0,0,0,78,111,110,101,0,0,0,0,76,90,87,0,0,0,0,0,80,97,99,107,66,105,116,115,0,0,0,0,0,0,0,0,84,104,117,110,100,101,114,83,99,97,110,0,0,0,0,0,78,101,88,84,0,0,0,0,74,80,69,71,0,0,0,0,79,108,100,45,115,116,121,108,101,32,74,80,69,71,0,0,67,67,73,84,84,32,82,76,69,0,0,0,0,0,0,0,67,67,73,84,84,32,82,76,69,47,87,0,0,0,0,0,67,67,73,84,84,32,71,114,111,117,112,32,51,0,0,0,67,67,73,84,84,32,71,114,111,117,112,32,52,0,0,0,73,83,79,32,74,66,73,71,0,0,0,0,0,0,0,0,68,101,102,108,97,116,101,0,65,100,111,98,101,68,101,102,108,97,116,101,0,0,0,0,80,105,120,97,114,76,111,103,0,0,0,0,0,0,0,0,83,71,73,76,111,103,0,0,83,71,73,76,111,103,50,52,0,0,0,0,0,0,0,0,76,90,77,65,0,0,0,0,184,136,1,0,1,0,0,0,157,0,0,0,192,136,1,0,5,0,0,0,158,0,0,0,200,136,1,0,5,128,0,0,159,0,0,0,216,136,1,0,41,128,0,0,160,0,0,0,232,136,1,0,254,127,0,0,161,0,0,0,240,136,1,0,7,0,0,0,162,0,0,0,248,136,1,0,6,0,0,0,163,0,0,0,8,137,1,0,2,0,0,0,164,0,0,0,24,137,1,0,3,128,0,0,165,0,0,0,40,137,1,0,3,0,0,0,166,0,0,0,56,137,1,0,4,0,0,0,167,0,0,0,72,137,1,0,101,135,0,0,168,0,0,0,88,137,1,0,178,128,0,0,169,0,0,0,96,137,1,0,8,0,0,0,169,0,0,0,112,137,1,0,141,128,0,0,170,0,0,0,128,137,1,0,116,135,0,0,171,0,0,0,136,137,1,0,117,135,0,0,171,0,0,0,152,137,1,0,109,136,0,0,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,100,0,0,0,0,0,0,37,115,32,99,111,109,112,114,101,115,115,105,111,110,32,115,117,112,112,111,114,116,32,105,115,32,110,111,116,32,99,111,110,102,105,103,117,114,101,100,0,0,0,0,0,0,0,0,115,99,97,110,108,105,110,101,0,0,0,0,0,0,0,0,115,116,114,105,112,0,0,0,116,105,108,101,0,0,0,0,67,111,109,112,114,101,115,115,105,111,110,32,97,108,103,111,114,105,116,104,109,32,100,111,101,115,32,110,111,116,32,115,117,112,112,111,114,116,32,114,97,110,100,111,109,32,97,99,99,101,115,115,0,0,0,0,0,0,0,0,0,0,0,0,37,115,32,37,115,32,100,101,99,111,100,105,110,103,32,105,115,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,0,0,0,0,0,0,67,111,109,112,114,101,115,115,105,111,110,32,115,99,104,101,109,101,32,37,117,32,37,115,32,100,101,99,111,100,105,110,103,32,105,115,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,0,0,0,37,115,32,37,115,32,101,110,99,111,100,105,110,103,32,105,115,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,0,0,0,0,0,0,67,111,109,112,114,101,115,115,105,111,110,32,115,99,104,101,109,101,32,37,117,32,37,115,32,101,110,99,111,100,105,110,103,32,105,115,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,100,105,114,46,99,0,0,0,0,0,0,0,84,73,70,70,65,100,118,97,110,99,101,68,105,114,101,99,116,111,114,121,0,0,0,0,69,114,114,111,114,32,102,101,116,99,104,105,110,103,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,0,0,69,114,114,111,114,32,102,101,116,99,104,105,110,103,32,100,105,114,101,99,116,111,114,121,32,108,105,110,107,0,0,0,83,97,110,105,116,121,32,99,104,101,99,107,32,111,110,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,32,102,97,105,108,101,100,0,0,37,115,58,32,69,114,114,111,114,32,102,101,116,99,104,105,110,103,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,0,0,0,0,0,0,37,115,58,32,69,114,114,111,114,32,102,101,116,99,104,105,110,103,32,100,105,114,101,99,116,111,114,121,32,108,105,110,107,0,0,0,0,0,0,0,95,84,73,70,70,86,71,101,116,70,105,101,108,100,0,0,37,115,58,32,73,110,118,97,108,105,100,32,37,115,116,97,103,32,34,37,115,34,32,40,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,99,111,100,101,99,41,0,112,115,101,117,100,111,45,0,0,0,0,0,0,0,0,0,68,111,116,82,97,110,103,101,0,0,0,0,0,0,0,0,116,118,45,62,99,111,117,110,116,32,61,61,32,49,0,0,78,111,110,115,116,97,110,100,97,114,100,32,116,105,108,101,32,119,105,100,116,104,32,37,100,44,32,99,111,110,118,101,114,116,32,102,105,108,101,0,78,111,110,115,116,97,110,100,97,114,100,32,116,105,108,101,32,108,101,110,103,116,104,32,37,100,44,32,99,111,110,118,101,114,116,32,102,105,108,101,0,0,0,0,0,0,0,0,37,115,58,32,83,111,114,114,121,44,32,99,97,110,110,111,116,32,110,101,115,116,32,83,117,98,73,70,68,115,0,0,37,115,58,32,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,115,112,97,99,101,32,102,111,114,32,108,105,115,116,32,111,102,32,99,117,115,116,111,109,32,118,97,108,117,101,115,0,0,37,115,58,32,66,97,100,32,102,105,101,108,100,32,116,121,112,101,32,37,100,32,102,111,114,32,34,37,115,34,0,0,102,105,112,45,62,102,105,101,108,100,95,119,114,105,116,101,99,111,117,110,116,61,61,84,73,70,70,95,86,65,82,73,65,66,76,69,50,0,0,0,95,84,73,70,70,86,83,101,116,70,105,101,108,100,0,0,37,115,58,32,78,117,108,108,32,99,111,117,110,116,32,102,111,114,32,34,37,115,34,32,40,116,121,112,101,32,37,100,44,32,119,114,105,116,101,99,111,117,110,116,32,37,100,44,32,112,97,115,115,99,111,117,110,116,32,37,100,41,0,0,99,117,115,116,111,109,32,116,97,103,32,98,105,110,97,114,121,32,111,98,106,101,99,116,0,0,0,0,0,0,0,0,37,115,58,32,66,97,100,32,118,97,108,117,101,32,37,117,32,102,111,114,32,34,37,115,34,32,116,97,103,0,0,0,85,110,107,110,111,119,110,0,37,115,58,32,66,97,100,32,118,97,108,117,101,32,37,102,32,102,111,114,32,34,37,115,34,32,116,97,103,0,0,0,84,73,70,70,83,101,116,70,105,101,108,100,0,0,0,0,37,115,58,32,73,110,118,97,108,105,100,32,73,110,107,78,97,109,101,115,32,118,97,108,117,101,59,32,101,120,112,101,99,116,105,110,103,32,37,100,32,110,97,109,101,115,44,32,102,111,117,110,100,32,37,100,0,0,0,0,0,0,0,0,37,115,58,32,85,110,107,110,111,119,110,32,37,115,116,97,103,32,37,117,0,0,0,0,37,115,58,32,67,97,110,110,111,116,32,109,111,100,105,102,121,32,116,97,103,32,34,37,115,34,32,119,104,105,108,101,32,119,114,105,116,105,110,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,0,0,0,208,156,1,0,1,0,0,0,0,0,0,0,56,0,0,0,184,144,1,0,84,97,103,32,0,0,0,0,95,84,73,70,70,83,101,116,117,112,70,105,101,108,100,115,0,0,0,0,0,0,0,0,83,101,116,116,105,110,103,32,117,112,32,102,105,101,108,100,32,105,110,102,111,32,102,97,105,108,101,100,0,0,0,0,95,84,73,70,70,77,101,114,103,101,70,105,101,108,100,115,0,0,0,0,0,0,0,0,102],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+92161);allocate([111,114,32,102,105,101,108,100,115,32,97,114,114,97,121,0,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,102,105,101,108,100,115,32,97,114,114,97,121,0,84,73,70,70,70,105,101,108,100,87,105,116,104,84,97,103,0,0,0,0,0,0,0,0,73,110,116,101,114,110,97,108,32,101,114,114,111,114,44,32,117,110,107,110,111,119,110,32,116,97,103,32,48,120,37,120,0,0,0,0,0,0,0,0,84,97,103,32,37,100,0,0,84,73,70,70,77,101,114,103,101,70,105,101,108,100,73,110,102,111,0,0,0,0,0,0,102,111,114,32,102,105,101,108,100,115,32,97,114,114,97,121,0,0,0,0,0,0,0,0,154,130,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,152,152,1,0,0,0,0,0,157,130,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,168,152,1,0,0,0,0,0,34,136,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,176,152,1,0,0,0,0,0,36,136,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,192,152,1,0,0,0,0,0,39,136,0,0,255,255,255,255,3,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,65,0,1,1,216,152,1,0,0,0,0,0,40,136,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,232,152,1,0,0,0,0,0,0,144,0,0,4,0,4,0,7,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,1,0,8,153,1,0,0,0,0,0,3,144,0,0,20,0,20,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,24,153,1,0,0,0,0,0,4,144,0,0,20,0,20,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,48,153,1,0,0,0,0,0,1,145,0,0,4,0,4,0,7,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,1,0,72,153,1,0,0,0,0,0,2,145,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,96,153,1,0,0,0,0,0,1,146,0,0,1,0,1,0,10,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,120,153,1,0,0,0,0,0,2,146,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,144,153,1,0,0,0,0,0,3,146,0,0,1,0,1,0,10,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,160,153,1,0,0,0,0,0,4,146,0,0,1,0,1,0,10,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,176,153,1,0,0,0,0,0,5,146,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,200,153,1,0,0,0,0,0,6,146,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,224,153,1,0,0,0,0,0,7,146,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,240,153,1,0,0,0,0,0,8,146,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,0,154,1,0,0,0,0,0,9,146,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,16,154,1,0,0,0,0,0,10,146,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,24,154,1,0,0,0,0,0,20,146,0,0,255,255,255,255,3,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,65,0,1,1,40,154,1,0,0,0,0,0,124,146,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,56,154,1,0,0,0,0,0,134,146,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,72,154,1,0,0,0,0,0,144,146,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,88,154,1,0,0,0,0,0,145,146,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,104,154,1,0,0,0,0,0,146,146,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,128,154,1,0,0,0,0,0,0,160,0,0,4,0,4,0,7,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,1,0,152,154,1,0,0,0,0,0,1,160,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,168,154,1,0,0,0,0,0,2,160,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,1,0,184,154,1,0,0,0,0,0,3,160,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,1,0,200,154,1,0,0,0,0,0,4,160,0,0,13,0,13,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,216,154,1,0,0,0,0,0,11,162,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,240,154,1,0,0,0,0,0,12,162,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,0,155,1,0,0,0,0,0,14,162,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,32,155,1,0,0,0,0,0,15,162,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,56,155,1,0,0,0,0,0,16,162,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,80,155,1,0,0,0,0,0,20,162,0,0,2,0,2,0,3,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,65,0,1,0,112,155,1,0,0,0,0,0,21,162,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,128,155,1,0,0,0,0,0,23,162,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,144,155,1,0,0,0,0,0,0,163,0,0,1,0,1,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,65,0,1,0,160,155,1,0,0,0,0,0,1,163,0,0,1,0,1,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,65,0,1,0,176,155,1,0,0,0,0,0,2,163,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,192,155,1,0,0,0,0,0,1,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,208,155,1,0,0,0,0,0,2,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,224,155,1,0,0,0,0,0,3,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,240,155,1,0,0,0,0,0,4,164,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,0,156,1,0,0,0,0,0,5,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,24,156,1,0,0,0,0,0,6,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,48,156,1,0,0,0,0,0,7,164,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,72,156,1,0,0,0,0,0,8,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,88,156,1,0,0,0,0,0,9,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,104,156,1,0,0,0,0,0,10,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,120,156,1,0,0,0,0,0,11,164,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,136,156,1,0,0,0,0,0,12,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,168,156,1,0,0,0,0,0,32,164,0,0,33,0,33,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,192,156,1,0,0,0,0,0,69,120,112,111,115,117,114,101,84,105,109,101,0,0,0,0,70,78,117,109,98,101,114,0,69,120,112,111,115,117,114,101,80,114,111,103,114,97,109,0,83,112,101,99,116,114,97,108,83,101,110,115,105,116,105,118,105,116,121,0,0,0,0,0,73,83,79,83,112,101,101,100,82,97,116,105,110,103,115,0,79,112,116,111,101,108,101,99,116,114,105,99,67,111,110,118,101,114,115,105,111,110,70,97,99,116,111,114,0,0,0,0,69,120,105,102,86,101,114,115,105,111,110,0,0,0,0,0,68,97,116,101,84,105,109,101,79,114,105,103,105,110,97,108,0,0,0,0,0,0,0,0,68,97,116,101,84,105,109,101,68,105,103,105,116,105,122,101,100,0,0,0,0,0,0,0,67,111,109,112,111,110,101,110,116,115,67,111,110,102,105,103,117,114,97,116,105,111,110,0,67,111,109,112,114,101,115,115,101,100,66,105,116,115,80,101,114,80,105,120,101,108,0,0,83,104,117,116,116,101,114,83,112,101,101,100,86,97,108,117,101,0,0,0,0,0,0,0,65,112,101,114,116,117,114,101,86,97,108,117,101,0,0,0,66,114,105,103,104,116,110,101,115,115,86,97,108,117,101,0,69,120,112,111,115,117,114,101,66,105,97,115,86,97,108,117,101,0,0,0,0,0,0,0,77,97,120,65,112,101,114,116,117,114,101,86,97,108,117,101,0,0,0,0,0,0,0,0,83,117,98,106,101,99,116,68,105,115,116,97,110,99,101,0,77,101,116,101,114,105,110,103,77,111,100,101,0,0,0,0,76,105,103,104,116,83,111,117,114,99,101,0,0,0,0,0,70,108,97,115,104,0,0,0,70,111,99,97,108,76,101,110,103,116,104,0,0,0,0,0,83,117,98,106,101,99,116,65,114,101,97,0,0,0,0,0,77,97,107,101,114,78,111,116,101,0,0,0,0,0,0,0,85,115,101,114,67,111,109,109,101,110,116,0,0,0,0,0,83,117,98,83,101,99,84,105,109,101,0,0,0,0,0,0,83,117,98,83,101,99,84,105,109,101,79,114,105,103,105,110,97,108,0,0,0,0,0,0,83,117,98,83,101,99,84,105,109,101,68,105,103,105,116,105,122,101,100,0,0,0,0,0,70,108,97,115,104,112,105,120,86,101,114,115,105,111,110,0,67,111,108,111,114,83,112,97,99,101,0,0,0,0,0,0,80,105,120,101,108,88,68,105,109,101,110,115,105,111,110,0,80,105,120,101,108,89,68,105,109,101,110,115,105,111,110,0,82,101,108,97,116,101,100,83,111,117,110,100,70,105,108,101,0,0,0,0,0,0,0,0,70,108,97,115,104,69,110,101,114,103,121,0,0,0,0,0,83,112,97,116,105,97,108,70,114,101,113,117,101,110,99,121,82,101,115,112,111,110,115,101,0,0,0,0,0,0,0,0,70,111,99,97,108,80,108,97,110,101,88,82,101,115,111,108,117,116,105,111,110,0,0,0,70,111,99,97,108,80,108,97,110,101,89,82,101,115,111,108,117,116,105,111,110,0,0,0,70,111,99,97,108,80,108,97,110,101,82,101,115,111,108,117,116,105,111,110,85,110,105,116,0,0,0,0,0,0,0,0,83,117,98,106,101,99,116,76,111,99,97,116,105,111,110,0,69,120,112,111,115,117,114,101,73,110,100,101,120,0,0,0,83,101,110,115,105,110,103,77,101,116,104,111,100,0,0,0,70,105,108,101,83,111,117,114,99,101,0,0,0,0,0,0,83,99,101,110,101,84,121,112,101,0,0,0,0,0,0,0,67,70,65,80,97,116,116,101,114,110,0,0,0,0,0,0,67,117,115,116,111,109,82,101,110,100,101,114,101,100,0,0,69,120,112,111,115,117,114,101,77,111,100,101,0,0,0,0,87,104,105,116,101,66,97,108,97,110,99,101,0,0,0,0,68,105,103,105,116,97,108,90,111,111,109,82,97,116,105,111,0,0,0,0,0,0,0,0,70,111,99,97,108,76,101,110,103,116,104,73,110,51,53,109,109,70,105,108,109,0,0,0,83,99,101,110,101,67,97,112,116,117,114,101,84,121,112,101,0,0,0,0,0,0,0,0,71,97,105,110,67,111,110,116,114,111,108,0,0,0,0,0,67,111,110,116,114,97,115,116,0,0,0,0,0,0,0,0,83,97,116,117,114,97,116,105,111,110,0,0,0,0,0,0,83,104,97,114,112,110,101,115,115,0,0,0,0,0,0,0,68,101,118,105,99,101,83,101,116,116,105,110,103,68,101,115,99,114,105,112,116,105,111,110,0,0,0,0,0,0,0,0,83,117,98,106,101,99,116,68,105,115,116,97,110,99,101,82,97,110,103,101,0,0,0,0,73,109,97,103,101,85,110,105,113,117,101,73,68,0,0,0,254,0,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,5,0,1,0,88,178,1,0,0,0,0,0,255,0,0,0,1,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,1,0,104,178,1,0,0,0,0,0,0,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,1,0,0,0,120,178,1,0,0,0,0,0,1,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,1,0,1,0,136,178,1,0,0,0,0,0,2,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,6,0,0,0,152,178,1,0,0,0,0,0,3,1,0,0,255,255,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,7,0,0,0,168,178,1,0,0,0,0,0,6,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,8,0,0,0,184,178,1,0,0,0,0,0,7,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,9,0,1,0,216,178,1,0,0,0,0,0,8,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,232,178,1,0,0,0,0,0,9,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,248,178,1,0,0,0,0,0,10,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,10,0,0,0,8,179,1,0,0,0,0,0,13,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,24,179,1,0,0,0,0,0,14,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,40,179,1,0,0,0,0,0,15,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,64,179,1,0,0,0,0,0,16,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,72,179,1,0,0,0,0,0,17,1,0,0,255,255,255,255,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,80,179,1,0,0,0,0,0,18,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,15,0,0,0,96,179,1,0,0,0,0,0,21,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,16,0,0,0,112,179,1,0,0,0,0,0,22,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,17,0,0,0,128,179,1,0,0,0,0,0,23,1,0,0,255,255,255,255,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,144,179,1,0,0,0,0,0,24,1,0,0,254,255,255,255,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,18,0,1,0,160,179,1,0,0,0,0,0,25,1,0,0,254,255,255,255,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,19,0,1,0,176,179,1,0,0,0,0,0,26,1,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,3,0,1,0,192,179,1,0,0,0,0,0,27,1,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,3,0,1,0,208,179,1,0,0,0,0,0,28,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,20,0,0,0,224,179,1,0,0,0,0,0,29,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,248,179,1,0,0,0,0,0,30,1,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,4,0,1,0,8,180,1,0,0,0,0,0,31,1,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,4,0,1,0,24,180,1,0,0,0,0,0,32,1,0,0,255,255,255,255,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,180,1,0,0,0,0,0,33,1,0,0,255,255,255,255,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,180,1,0,0,0,0,0,34,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,72,180,1,0,0,0,0,0,35,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,96,180,1,0,0,0,0,0,40,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,22,0,1,0,120,180,1,0,0,0,0,0,41,1,0,0,2,0,2,0,3,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,23,0,1,0,136,180,1,0,0,0,0,0,44,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,152,180,1,0,0,0,0,0,45,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,44,0,1,0,176,180,1,0,0,0,0,0,49,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,200,180,1,0,0,0,0,0,50,1,0,0,20,0,20,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,216,180,1,0,0,0,0,0,59,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,232,180,1,0,0,0,0,0,60,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,240,180,1,0,0,0,0,0,62,1,0,0,2,0,2,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,1,0,0,181,1,0,0,0,0,0,63,1,0,0,6,0,6,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,1,0,16,181,1,0,0,0,0,0,64,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,26,0,1,0,40,181,1,0,0,0,0,0,65,1,0,0,2,0,2,0,3,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,37,0,1,0,56,181,1,0,0,0,0,0,66,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,2,0,0,0,72,181,1,0,0,0,0,0,67,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,2,0,0,0,88,181,1,0,0,0,0,0,68,1,0,0,255,255,1,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,104,181,1,0,0,0,0,0,69,1,0,0,255,255,1,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,120,181,1,0,0,0,0,0,74,1,0,0,255,255,255,255,18,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,49,0,1,1,136,181,1,0,144,143,1,0,76,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,0,0,144,181,1,0,0,0,0,0,77,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,46,0,1,1,152,181,1,0,0,0,0,0,78,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,168,181,1,0,0,0,0,0,80,1,0,0,2,0,2,0,3,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,65,0,0,0,184,181,1,0,0,0,0,0,81,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,200,181,1,0,0,0,0,0,82,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,31,0,0,1,216,181,1,0,0,0,0,0,83,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,32,0,0,0,232,181,1,0,0,0,0,0,84,1,0,0,254,255,255,255,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,33,0,1,0,248,181,1,0,0,0,0,0,85,1,0,0,254,255,255,255,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,34,0,1,0,8,182,1,0,0,0,0,0,87,1,0,0,255,255,253,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,1,24,182,1,0,0,0,0,0,88,1,0,0,1,0,1,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,40,182,1,0,0,0,0,0,88,1,0,0,1,0,1,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,40,182,1,0,0,0,0,0,89,1,0,0,1,0,1,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,56,182,1,0,0,0,0,0,17,2,0,0,3,0,3,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,0,0,72,182,1,0,0,0,0,0,18,2,0,0,2,0,2,0,3,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,39,0,0,0,96,182,1,0,0,0,0,0,19,2,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,40,0,0,0,120,182,1,0,0,0,0,0,20,2,0,0,6,0,6,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,41,0,1,0,144,182,1,0,0,0,0,0,188,2,0,0,253,255,253,255,1,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,65,0,0,1,168,182,1,0,0,0,0,0,227,128,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,31,0,0,0,184,182,1,0,0,0,0,0,228,128,0,0,254,255,255,255,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,32,0,0,0,200,182,1,0,0,0,0,0,229,128,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,35,0,0,0,216,182,1,0,0,0,0,0,230,128,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,36,0,0,0,232,182,1,0,0,0,0,0,20,130,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,1,0,248,182,1,0,0,0,0,0,21,130,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,1,0,8,183,1,0,0,0,0,0,22,130,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,24,183,1,0,0,0,0,0,23,130,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,40,183,1,0,0,0,0,0,24,130,0,0,1,0,1,0,11,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,65,0,1,0,64,183,1,0,0,0,0,0,25,130,0,0,16,0,16,0,11,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,1,0,88,183,1,0,0,0,0,0,26,130,0,0,16,0,16,0,11,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,1,0,112,183,1,0,0,0,0,0,141,130,0,0,2,0,2,0,3,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,65,0,0,0,136,183,1,0,0,0,0,0,142,130,0,0,4,0,4,0,1,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,0,0,192,155,1,0,0,0,0,0,152,130,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,160,183,1,0,0,0,0,0,187,131,0,0,253,255,253,255,4,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,65,0,0,1,176,183,1,0,0,0,0,0,73,134,0,0,253,255,253,255,1,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,65,0,0,1,192,183,1,0,0,0,0,0,105,135,0,0,1,0,1,0,18,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,65,0,0,0,208,183,1,0,160,143,1,0,115,135,0,0,253,255,253,255,7,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,65,0,0,1,224,183,1,0,0,0,0,0,37,136,0,0,1,0,1,0,18,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,65,0,0,0,240,183,1,0,0,0,0,0,92,136,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,65,0,1,0,0,184,1,0,0,0,0,0,93,136,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,65,0,1,0,16,184,1,0,0,0,0,0,94,136,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,65,0,1,0,32,184,1,0,0,0,0,0,95,136,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,65,0,1,0,48,184,1,0,0,0,0,0,63,146,0,0,1,0,1,0,12,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,56,184,1,0,0,0,0,0,5,160,0,0,1,0,1,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,64,184,1,0,0,0,0,0,18,198,0,0,4,0,4,0,1,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,0,0,96,184,1,0,0,0,0,0,19,198,0,0,4,0,4,0,1,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,0,0,112,184,1,0,0,0,0,0,20,198,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,136,184,1,0,0,0,0,0,21,198,0,0,255,255,255,255,1,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,160,184,1,0,0,0,0,0,22,198,0,0,255,255,255,255,1,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,0,1,184,184,1,0,0,0,0,0,23,198,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,0,0,200,184,1,0,0,0,0,0,24,198,0,0,255,255,255,255,3,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,65,0,0,1,216,184,1,0,0,0,0,0,25,198,0,0,2,0,2,0,3,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,65,0,0,0,240,184,1,0,0,0,0,0,26,198,0,0,255,255,255,255,5,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,8,185,1,0,0,0,0,0,27,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,24,185,1,0,0,0,0,0,28,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,48,185,1,0,0,0,0,0,29,198,0,0,255,255,255,255,4,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,65,0,0,1,72,185,1,0,0,0,0,0,30,198,0,0,2,0,2,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,0,0,88,185,1,0,0,0,0,0,92,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,104,185,1,0,0,0,0,0,31,198,0,0,2,0,2,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,0,0,128,185,1,0,0,0,0,0,32,198,0,0,2,0,2,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,0,0,152,185,1,0,0,0,0,0,33,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,168,185,1,0,0,0,0,0,34,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,184,185,1,0,0,0,0,0,35,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,200,185,1,0,0,0,0,0,36,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,224,185,1,0,0,0,0,0,37,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,248,185,1,0,0,0,0,0,38,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,16,186,1,0,0,0,0,0,39,198,0,0,255,255,255,255,5,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,40,186,1,0,0,0,0,0,40,198,0,0,255,255,255,255,5,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,56,186,1,0,0,0,0,0,41,198,0,0,2,0,2,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,0,0,72,186,1,0,0,0,0,0,42,198,0,0,1,0,1,0,10,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,88,186,1,0,0,0,0,0,43,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,112,186,1,0,0,0,0,0,44,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,128,186,1,0,0,0,0,0,45,198,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,0,0,152,186,1,0,0,0,0,0,46,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,168,186,1,0,0,0,0,0,47,198,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,192,186,1,0,0,0,0,0,48,198,0,0,4,0,4,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,0,0,216,186,1,0,0,0,0,0,49,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,232,186,1,0,0,0,0,0,50,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,0,187,1,0,0,0,0,0,51,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,24,187,1,0,0,0,0,0,52,198,0,0,255,255,255,255,1,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,0,1,40,187,1,0,0,0,0,0,53,198,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,0,0,56,187,1,0,0,0,0,0,90,198,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,0,0,72,187,1,0,0,0,0,0,91,198,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,0,0,96,187,1,0,0,0,0,0,93,198,0,0,16,0,16,0,1,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,0,0,120,187,1,0,0,0,0,0,139,198,0,0,255,255,255,255,1,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,136,187,1,0,0,0,0,0,140,198,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,0,1,160,187,1,0,0,0,0,0,141,198,0,0,4,0,4,0,4,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,65,0,0,0,184,187,1,0,0,0,0,0,142,198,0,0,255,255,255,255,4,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,65,0,0,1,200,187,1,0,0,0,0,0,143,198,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,0,1,216,187,1,0,0,0,0,0,144,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,240,187,1,0,0,0,0,0,145,198,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,0,1,8,188,1,0,0,0,0,0,146,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,32,188,1,0,0,0,0,0,27,0,1,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,56,188,1,0,0,0,0,0,90,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,0,0,72,188,1,0,0,0,0,0,144,1,0,0,1,0,1,0,18,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,65,0,0,0,80,188,1,0,0,0,0,0,145,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,0,0,104,188,1,0,0,0,0,0,146,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,65,0,0,0,120,188,1,0,0,0,0,0,147,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,0,0,136,188,1,0,0,0,0,0,148,1,0,0,4,0,4,0,1,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,0,0,152,188,1,0,0,0,0,0,149,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,65,0,0,0,168,188,1,0,0,0,0,0,177,1,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,184,188,1,0,0,0,0,0,178,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,65,0,0,1,192,188,1,0,0,0,0,0,179,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,0,0,208,188,1,0,0,0,0,0,47,2,0,0,255,255,255,255,4,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,65,0,0,1,224,188,1,0,0,0,0,0,172,135,0,0,2,0,2,0,4,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,65,0,0,0,240,188,1,0,0,0,0,0,0,0,0,0,83,117,98,102,105,108,101,84,121,112,101,0,0,0,0,0,79,108,100,83,117,98,102,105,108,101,84,121,112,101,0,0,73,109,97,103,101,87,105,100,116,104,0,0,0,0,0,0,73,109,97,103,101,76,101,110,103,116,104,0,0,0,0,0,66,105,116,115,80,101,114,83,97,109,112,108,101,0,0,0,67,111,109,112,114,101,115,115,105,111,110,0,0,0,0,0,80,104,111,116,111,109,101,116,114,105,99,73,110,116,101,114,112,114,101,116,97,116,105,111,110,0,0,0,0,0,0,0,84,104,114,101,115,104,104,111,108,100,105,110,103,0,0,0,67,101,108,108,87,105,100,116,104,0,0,0,0,0,0,0,67,101,108,108,76,101,110,103,116,104,0,0,0,0,0,0,70,105,108,108,79,114,100,101,114,0,0,0,0,0,0,0,68,111,99,117,109,101,110,116,78,97,109,101,0,0,0,0,73,109,97,103,101,68,101,115,99,114,105,112,116,105,111,110,0,0,0,0,0,0,0,0,77,97,107,101,0,0,0,0,77,111,100,101,108,0,0,0,83,116,114,105,112,79,102,102,115,101,116,115,0,0,0,0,79,114,105,101,110,116,97,116,105,111,110,0,0,0,0,0,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,0,82,111,119,115,80,101,114,83,116,114,105,112,0,0,0,0,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,0,77,105,110,83,97,109,112,108,101,86,97,108,117,101,0,0,77,97,120,83,97,109,112,108,101,86,97,108,117,101,0,0,88,82,101,115,111,108,117,116,105,111,110,0,0,0,0,0,89,82,101,115,111,108,117,116,105,111,110,0,0,0,0,0,80,108,97,110,97,114,67,111,110,102,105,103,117,114,97,116,105,111,110,0,0,0,0,0,80,97,103,101,78,97,109,101,0,0,0,0,0,0,0,0,88,80,111,115,105,116,105,111,110,0,0,0,0,0,0,0,89,80,111,115,105,116,105,111,110,0,0,0,0,0,0,0,70,114,101,101,79,102,102,115,101,116,115,0,0,0,0,0,70,114,101,101,66,121,116,101,67,111,117,110,116,115,0,0,71,114,97,121,82,101,115,112,111,110,115,101,85,110,105,116,0,0,0,0,0,0,0,0,71,114,97,121,82,101,115,112,111,110,115,101,67,117,114,118,101,0,0,0,0,0,0,0,82,101,115,111,108,117,116,105,111,110,85,110,105,116,0,0,80,97,103,101,78,117,109,98,101,114,0,0,0,0,0,0,67,111,108,111,114,82,101,115,112,111,110,115,101,85,110,105,116,0,0,0,0,0,0,0,84,114,97,110,115,102,101,114,70,117,110,99,116,105,111,110,0,0,0,0,0,0,0,0,83,111,102,116,119,97,114,101,0,0,0,0,0,0,0,0,68,97,116,101,84,105,109,101,0,0,0,0,0,0,0,0,65,114,116,105,115,116,0,0,72,111,115,116,67,111,109,112,117,116,101,114,0,0,0,0,87,104,105,116,101,80,111,105,110,116,0,0,0,0,0,0,80,114,105,109,97,114,121,67,104,114,111,109,97,116,105,99,105,116,105,101,115,0,0,0,67,111,108,111,114,77,97,112,0,0,0,0,0,0,0,0,72,97,108,102,116,111,110,101,72,105,110,116,115,0,0,0,84,105,108,101,87,105,100,116,104,0,0,0,0,0,0,0,84,105,108,101,76,101,110,103,116,104,0,0,0,0,0,0,84,105,108,101,79,102,102,115,101,116,115,0,0,0,0,0,84,105,108,101,66,121,116,101,67,111,117,110,116,115,0,0,83,117,98,73,70,68,0,0,73,110,107,83,101,116,0,0,73,110,107,78,97,109,101,115,0,0,0,0,0,0,0,0,78,117,109,98,101,114,79,102,73,110,107,115,0,0,0,0,68,111,116,82,97,110,103,101,0,0,0,0,0,0,0,0,84,97,114,103,101,116,80,114,105,110,116,101,114,0,0,0,69,120,116,114,97,83,97,109,112,108,101,115,0,0,0,0,83,97,109,112,108,101,70,111,114,109,97,116,0,0,0,0,83,77,105,110,83,97,109,112,108,101,86,97,108,117,101,0,83,77,97,120,83,97,109,112,108,101,86,97,108,117,101,0,67,108,105,112,80,97,116,104,0,0,0,0,0,0,0,0,88,67,108,105,112,80,97,116,104,85,110,105,116,115,0,0,89,67,108,105,112,80,97,116,104,85,110,105,116,115,0,0,89,67,98,67,114,67,111,101,102,102,105,99,105,101,110,116,115,0,0,0,0,0,0,0,89,67,98,67,114,83,117,98,115,97,109,112,108,105,110,103,0,0,0,0,0,0,0,0,89,67,98,67,114,80,111,115,105,116,105,111,110,105,110,103,0,0,0,0,0,0,0,0,82,101,102,101,114,101,110,99,101,66,108,97,99,107,87,104,105,116,101,0,0,0,0,0,88,77,76,80,97,99,107,101,116,0,0,0,0,0,0,0,77,97,116,116,101,105,110,103,0,0,0,0,0,0,0,0,68,97,116,97,84,121,112,101,0,0,0,0,0,0,0,0,73,109,97,103,101,68,101,112,116,104,0,0,0,0,0,0,84,105,108,101,68,101,112,116,104,0,0,0,0,0,0,0,73,109,97,103,101,70,117,108,108,87,105,100,116,104,0,0,73,109,97,103,101,70,117,108,108,76,101,110,103,116,104,0,84,101,120,116,117,114,101,70,111,114,109,97,116,0,0,0,84,101,120,116,117,114,101,87,114,97,112,77,111,100,101,115,0,0,0,0,0,0,0,0,70,105,101,108,100,79,102,86,105,101,119,67,111,116,97,110,103,101,110,116,0,0,0,0,77,97,116,114,105,120,87,111,114,108,100,84,111,83,99,114,101,101,110,0,0,0,0,0,77,97,116,114,105,120,87,111,114,108,100,84,111,67,97,109,101,114,97,0,0,0,0,0,67,70,65,82,101,112,101,97,116,80,97,116,116,101,114,110,68,105,109,0,0,0,0,0,67,111,112,121,114,105,103,104,116,0,0,0,0,0,0,0,82,105,99,104,84,73,70,70,73,80,84,67,0,0,0,0,80,104,111,116,111,115,104,111,112,0,0,0,0,0,0,0,69,88,73,70,73,70,68,79,102,102,115,101,116,0,0,0,73,67,67,32,80,114,111,102,105,108,101,0,0,0,0,0,71,80,83,73,70,68,79,102,102,115,101,116,0,0,0,0,70,97,120,82,101,99,118,80,97],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+102401);allocate([114,97,109,115,0,0,0,70,97,120,83,117,98,65,100,100,114,101,115,115,0,0,0,70,97,120,82,101,99,118,84,105,109,101,0,0,0,0,0,70,97,120,68,99,115,0,0,83,116,111,78,105,116,115,0,73,110,116,101,114,111,112,101,114,97,98,105,108,105,116,121,73,70,68,79,102,102,115,101,116,0,0,0,0,0,0,0,68,78,71,86,101,114,115,105,111,110,0,0,0,0,0,0,68,78,71,66,97,99,107,119,97,114,100,86,101,114,115,105,111,110,0,0,0,0,0,0,85,110,105,113,117,101,67,97,109,101,114,97,77,111,100,101,108,0,0,0,0,0,0,0,76,111,99,97,108,105,122,101,100,67,97,109,101,114,97,77,111,100,101,108,0,0,0,0,67,70,65,80,108,97,110,101,67,111,108,111,114,0,0,0,67,70,65,76,97,121,111,117,116,0,0,0,0,0,0,0,76,105,110,101,97,114,105,122,97,116,105,111,110,84,97,98,108,101,0,0,0,0,0,0,66,108,97,99,107,76,101,118,101,108,82,101,112,101,97,116,68,105,109,0,0,0,0,0,66,108,97,99,107,76,101,118,101,108,0,0,0,0,0,0,66,108,97,99,107,76,101,118,101,108,68,101,108,116,97,72,0,0,0,0,0,0,0,0,66,108,97,99,107,76,101,118,101,108,68,101,108,116,97,86,0,0,0,0,0,0,0,0,87,104,105,116,101,76,101,118,101,108,0,0,0,0,0,0,68,101,102,97,117,108,116,83,99,97,108,101,0,0,0,0,66,101,115,116,81,117,97,108,105,116,121,83,99,97,108,101,0,0,0,0,0,0,0,0,68,101,102,97,117,108,116,67,114,111,112,79,114,105,103,105,110,0,0,0,0,0,0,0,68,101,102,97,117,108,116,67,114,111,112,83,105,122,101,0,67,111,108,111,114,77,97,116,114,105,120,49,0,0,0,0,67,111,108,111,114,77,97,116,114,105,120,50,0,0,0,0,67,97,109,101,114,97,67,97,108,105,98,114,97,116,105,111,110,49,0,0,0,0,0,0,67,97,109,101,114,97,67,97,108,105,98,114,97,116,105,111,110,50,0,0,0,0,0,0,82,101,100,117,99,116,105,111,110,77,97,116,114,105,120,49,0,0,0,0,0,0,0,0,82,101,100,117,99,116,105,111,110,77,97,116,114,105,120,50,0,0,0,0,0,0,0,0,65,110,97,108,111,103,66,97,108,97,110,99,101,0,0,0,65,115,83,104,111,116,78,101,117,116,114,97,108,0,0,0,65,115,83,104,111,116,87,104,105,116,101,88,89,0,0,0,66,97,115,101,108,105,110,101,69,120,112,111,115,117,114,101,0,0,0,0,0,0,0,0,66,97,115,101,108,105,110,101,78,111,105,115,101,0,0,0,66,97,115,101,108,105,110,101,83,104,97,114,112,110,101,115,115,0,0,0,0,0,0,0,66,97,121,101,114,71,114,101,101,110,83,112,108,105,116,0,76,105,110,101,97,114,82,101,115,112,111,110,115,101,76,105,109,105,116,0,0,0,0,0,67,97,109,101,114,97,83,101,114,105,97,108,78,117,109,98,101,114,0,0,0,0,0,0,76,101,110,115,73,110,102,111,0,0,0,0,0,0,0,0,67,104,114,111,109,97,66,108,117,114,82,97,100,105,117,115,0,0,0,0,0,0,0,0,65,110,116,105,65,108,105,97,115,83,116,114,101,110,103,116,104,0,0,0,0,0,0,0,83,104,97,100,111,119,83,99,97,108,101,0,0,0,0,0,68,78,71,80,114,105,118,97,116,101,68,97,116,97,0,0,77,97,107,101,114,78,111,116,101,83,97,102,101,116,121,0,67,97,108,105,98,114,97,116,105,111,110,73,108,108,117,109,105,110,97,110,116,49,0,0,67,97,108,105,98,114,97,116,105,111,110,73,108,108,117,109,105,110,97,110,116,50,0,0,82,97,119,68,97,116,97,85,110,105,113,117,101,73,68,0,79,114,105,103,105,110,97,108,82,97,119,70,105,108,101,78,97,109,101,0,0,0,0,0,79,114,105,103,105,110,97,108,82,97,119,70,105,108,101,68,97,116,97,0,0,0,0,0,65,99,116,105,118,101,65,114,101,97,0,0,0,0,0,0,77,97,115,107,101,100,65,114,101,97,115,0,0,0,0,0,65,115,83,104,111,116,73,67,67,80,114,111,102,105,108,101,0,0,0,0,0,0,0,0,65,115,83,104,111,116,80,114,101,80,114,111,102,105,108,101,77,97,116,114,105,120,0,0,67,117,114,114,101,110,116,73,67,67,80,114,111,102,105,108,101,0,0,0,0,0,0,0,67,117,114,114,101,110,116,80,114,101,80,114,111,102,105,108,101,77,97,116,114,105,120,0,80,101,114,83,97,109,112,108,101,0,0,0,0,0,0,0,73,110,100,101,120,101,100,0,71,108,111,98,97,108,80,97,114,97,109,101,116,101,114,115,73,70,68,0,0,0,0,0,80,114,111,102,105,108,101,84,121,112,101,0,0,0,0,0,70,97,120,80,114,111,102,105,108,101,0,0,0,0,0,0,67,111,100,105,110,103,77,101,116,104,111,100,115,0,0,0,86,101,114,115,105,111,110,89,101,97,114,0,0,0,0,0,77,111,100,101,78,117,109,98,101,114,0,0,0,0,0,0,68,101,99,111,100,101,0,0,73,109,97,103,101,66,97,115,101,67,111,108,111,114,0,0,84,56,50,79,112,116,105,111,110,115,0,0,0,0,0,0,83,116,114,105,112,82,111,119,67,111,117,110,116,115,0,0,73,109,97,103,101,76,97,121,101,114,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,114,101,97,100,32,100,105,114,101,99,116,111,114,121,32,97,116,32,111,102,102,115,101,116,32,37,108,117,0,0,67,111,109,112,114,101,115,115,105,111,110,0,0,0,0,0,85,110,107,110,111,119,110,32,102,105,101,108,100,32,119,105,116,104,32,116,97,103,32,37,100,32,40,48,120,37,120,41,32,101,110,99,111,117,110,116,101,114,101,100,0,0,0,0,82,101,103,105,115,116,101,114,105,110,103,32,97,110,111,110,121,109,111,117,115,32,102,105,101,108,100,32,119,105,116,104,32,116,97,103,32,37,100,32,40,48,120,37,120,41,32,102,97,105,108,101,100,0,0,0,102,105,105,32,33,61,32,70,65,73,76,69,68,95,70,73,73,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,100,105,114,114,101,97,100,46,99,0,0,0,84,73,70,70,82,101,97,100,68,105,114,101,99,116,111,114,121,0,0,0,0,0,0,0,80,108,97,110,97,114,99,111,110,102,105,103,32,116,97,103,32,118,97,108,117,101,32,97,115,115,117,109,101,100,32,105,110,99,111,114,114,101,99,116,44,32,97,115,115,117,109,105,110,103,32,100,97,116,97,32,105,115,32,99,111,110,116,105,103,32,105,110,115,116,101,97,100,32,111,102,32,99,104,117,110,107,121,0,0,0,0,0,73,109,97,103,101,76,101,110,103,116,104,0,0,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,122,101,114,111,32,110,117,109,98,101,114,32,111,102,32,37,115,0,116,105,108,101,115,0,0,0,115,116,114,105,112,115,0,0,84,105,108,101,79,102,102,115,101,116,115,0,0,0,0,0,83,116,114,105,112,79,102,102,115,101,116,115,0,0,0,0,117,110,107,110,111,119,110,32,116,97,103,110,97,109,101,0,73,103,110,111,114,105,110,103,32,37,115,32,115,105,110,99,101,32,66,105,116,115,80,101,114,83,97,109,112,108,101,32,116,97,103,32,110,111,116,32,102,111,117,110,100,0,0,0,80,104,111,116,111,109,101,116,114,105,99,32,116,97,103,32,105,115,32,109,105,115,115,105,110,103,44,32,97,115,115,117,109,105,110,103,32,100,97,116,97,32,105,115,32,89,67,98,67,114,0,0,0,0,0,0,80,104,111,116,111,109,101,116,114,105,99,32,116,97,103,32,118,97,108,117,101,32,97,115,115,117,109,101,100,32,105,110,99,111,114,114,101,99,116,44,32,97,115,115,117,109,105,110,103,32,100,97,116,97,32,105,115,32,89,67,98,67,114,32,105,110,115,116,101,97,100,32,111,102,32,82,71,66,0,0,66,105,116,115,80,101,114,83,97,109,112,108,101,32,116,97,103,32,105,115,32,109,105,115,115,105,110,103,44,32,97,115,115,117,109,105,110,103,32,56,32,98,105,116,115,32,112,101,114,32,115,97,109,112,108,101,0,0,0,0,0,0,0,0,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,32,116,97,103,32,105,115,32,109,105,115,115,105,110,103,44,32,97,115,115,117,109,105,110,103,32,99,111,114,114,101,99,116,32,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,32,118,97,108,117,101,32,105,115,32,51,0,0,0,0,0,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,32,116,97,103,32,105,115,32,109,105,115,115,105,110,103,44,32,97,112,112,108,121,105,110,103,32,99,111,114,114,101,99,116,32,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,32,118,97,108,117,101,32,111,102,32,51,0,0,0,0,0,67,111,108,111,114,109,97,112,0,0,0,0,0,0,0,0,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,0,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,105,115,32,109,105,115,115,105,110,103,32,114,101,113,117,105,114,101,100,32,34,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,34,32,102,105,101,108,100,44,32,99,97,108,99,117,108,97,116,105,110,103,32,102,114,111,109,32,105,109,97,103,101,108,101,110,103,116,104,0,0,0,0,0,0,0,0,66,111,103,117,115,32,34,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,34,32,102,105,101,108,100,44,32,105,103,110,111,114,105,110,103,32,97,110,100,32,99,97,108,99,117,108,97,116,105,110,103,32,102,114,111,109,32,105,109,97,103,101,108,101,110,103,116,104,0,0,0,0,0,0,0,0,87,114,111,110,103,32,34,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,34,32,102,105,101,108,100,44,32,105,103,110,111,114,105,110,103,32,97,110,100,32,99,97,108,99,117,108,97,116,105,110,103,32,102,114,111,109,32,105,109,97,103,101,108,101,110,103,116,104,0,0,0,0,0,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,122,101,114,111,32,115,99,97,110,108,105,110,101,32,115,105,122,101,0,0,0,0,0,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,122,101,114,111,32,116,105,108,101,32,115,105,122,101,0,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,122,101,114,111,32,115,116,114,105,112,32,115,105,122,101,0,0,0,70,97,105,108,101,100,32,116,111,32,114,101,97,100,32,99,117,115,116,111,109,32,100,105,114,101,99,116,111,114,121,32,97,116,32,111,102,102,115,101,116,32,37,108,117,0,0,0,84,73,70,70,82,101,97,100,67,117,115,116,111,109,68,105,114,101,99,116,111,114,121,0,87,114,111,110,103,32,100,97,116,97,32,116,121,112,101,32,37,100,32,102,111,114,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,0,0,0,0,0,0,0,102,111,114,32,99,104,111,112,112,101,100,32,34,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,34,32,97,114,114,97,121,0,0,0,0,0,102,111,114,32,99,104,111,112,112,101,100,32,34,83,116,114,105,112,79,102,102,115,101,116,115,34,32,97,114,114,97,121,0,0,0,0,0,0,0,0,84,73,70,70,70,101,116,99,104,83,117,98,106,101,99,116,68,105,115,116,97,110,99,101,0,0,0,0,0,0,0,0,83,117,98,106,101,99,116,68,105,115,116,97,110,99,101,0,84,73,70,70,70,101,116,99,104,83,116,114,105,112,84,104,105,110,103,0,0,0,0,0,102,111,114,32,115,116,114,105,112,32,97,114,114,97,121,0,40,116,109,115,105,122,101,95,116,41,100,97,116,97,115,105,122,101,62,48,0,0,0,0,84,73,70,70,82,101,97,100,68,105,114,69,110,116,114,121,65,114,114,97,121,0,0,0,82,101,97,100,68,105,114,69,110,116,114,121,65,114,114,97,121,0,0,0,0,0,0,0,84,73,70,70,70,101,116,99,104,78,111,114,109,97,108,84,97,103,0,0,0,0,0,0,78,111,32,100,101,102,105,110,105,116,105,111,110,32,102,111,117,110,100,32,102,111,114,32,116,97,103,32,37,100,0,0,102,105,112,32,33,61,32,78,85,76,76,0,0,0,0,0,102,105,112,45,62,115,101,116,95,102,105,101,108,100,95,116,121,112,101,33,61,84,73,70,70,95,83,69,84,71,69,84,95,79,84,72,69,82,0,0,102,105,112,45,62,115,101,116,95,102,105,101,108,100,95,116,121,112,101,33,61,84,73,70,70,95,83,69,84,71,69,84,95,73,78,84,0,0,0,0,102,105,112,45,62,102,105,101,108,100,95,112,97,115,115,99,111,117,110,116,61,61,48,0,65,83,67,73,73,32,118,97,108,117,101,32,102,111,114,32,116,97,103,32,34,37,115,34,32,99,111,110,116,97,105,110,115,32,110,117,108,108,32,98,121,116,101,32,105,110,32,118,97,108,117,101,59,32,118,97,108,117,101,32,105,110,99,111,114,114,101,99,116,108,121,32,116,114,117,110,99,97,116,101,100,32,100,117,114,105,110,103,32,114,101,97,100,105,110,103,32,100,117,101,32,116,111,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,108,105,109,105,116,97,116,105,111,110,115,0,0,0,0,0,0,65,83,67,73,73,32,118,97,108,117,101,32,102,111,114,32,116,97,103,32,34,37,115,34,32,100,111,101,115,32,110,111,116,32,101,110,100,32,105,110,32,110,117,108,108,32,98,121,116,101,0,0,0,0,0,0,102,105,112,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,49,0,102,105,112,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,50,0,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,32,102,111,114,32,102,105,101,108,100,32,34,37,115,34,44,32,101,120,112,101,99,116,101,100,32,50,44,32,103,111,116,32,37,100,0,0,0,0,0,0,102,105,112,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,62,61,49,0,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,32,102,111,114,32,102,105,101,108,100,32,34,37,115,34,44,32,101,120,112,101,99,116,101,100,32,37,100,44,32,103,111,116,32,37,100,0,0,0,0,0,102,105,112,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,84,73,70,70,95,86,65,82,73,65,66,76,69,0,0,0,0,0,102,105,112,45,62,102,105,101,108,100,95,112,97,115,115,99,111,117,110,116,61,61,49,0,102,105,112,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,84,73,70,70,95,86,65,82,73,65,66,76,69,50,0,0,0,0,48,0,0,0,0,0,0,0,112,100,105,114,0,0,0,0,84,73,70,70,70,101,116,99,104,68,105,114,101,99,116,111,114,121,0,0,0,0,0,0,37,115,58,32,83,101,101,107,32,101,114,114,111,114,32,97,99,99,101,115,115,105,110,103,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,0,37,115,58,32,67,97,110,32,110,111,116,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,0,0,0,83,97,110,105,116,121,32,99,104,101,99,107,32,111,110,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,32,102,97,105,108,101,100,44,32,116,104,105,115,32,105,115,32,112,114,111,98,97,98,108,121,32,110,111,116,32,97,32,118,97,108,105,100,32,73,70,68,32,111,102,102,115,101,116,0,116,111,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,0,0,37,46,49,48,48,115,58,32,67,97,110,32,110,111,116,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,0,0,0,0,0,67,97,110,32,110,111,116,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,0,0,0,0,0,0,0,83,97,110,105,116,121,32,99,104,101,99,107,32,111,110,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,32,102,97,105,108,101,100,44,32,122,101,114,111,32,116,97,103,32,100,105,114,101,99,116,111,114,105,101,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,0,67,97,110,32,110,111,116,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,0,0,0,0,0,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,32,102,111,114,32,102,105,101,108,100,32,34,37,115,34,32,40,37,108,117,44,32,101,120,112,101,99,116,105,110,103,32,37,117,41,59,32,116,97,103,32,105,103,110,111,114,101,100,0,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,32,102,111,114,32,102,105,101,108,100,32,34,37,115,34,32,40,37,108,117,44,32,101,120,112,101,99,116,105,110,103,32,37,117,41,59,32,116,97,103,32,116,114,105,109,109,101,100,0,84,73,70,70,67,104,101,99,107,68,105,114,79,102,102,115,101,116,0,0,0,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,109,111,114,101,32,116,104,97,110,32,54,53,53,51,53,32,84,73,70,70,32,100,105,114,101,99,116,111,114,105,101,115,0,0,102,111,114,32,73,70,68,32,108,105,115,116,0,0,0,0,77,105,115,115,105,110,103,82,101,113,117,105,114,101,100,0,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,105,115,32,109,105,115,115,105,110,103,32,114,101,113,117,105,114,101,100,32,34,37,115,34,32,102,105,101,108,100,0,0,0,69,115,116,105,109,97,116,101,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,0,102,111,114,32,34,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,34,32,97,114,114,97,121,0,0,0,0,0,67,97,110,110,111,116,32,100,101,116,101,114,109,105,110,101,32,115,105,122,101,32,111,102,32,117,110,107,110,111,119,110,32,116,97,103,32,116,121,112,101,32,37,100,0,0,0,0,84,73,70,70,82,101,97,100,68,105,114,101,99,116,111,114,121,67,104,101,99,107,79,114,100,101,114,0,0,0,0,0,73,110,118,97,108,105,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,59,32,116,97,103,115,32,97,114,101,32,110,111,116,32,115,111,114,116,101,100,32,105,110,32,97,115,99,101,110,100,105,110,103,32,111,114,100,101,114,0,0,73,110,99,111,114,114,101,99,116,32,99,111,117,110,116,32,102,111,114,32,34,37,115,34,0,0,0,0,0,0,0,0,73,110,99,111,109,112,97,116,105,98,108,101,32,116,121,112,101,32,102,111,114,32,34,37,115,34,0,0,0,0,0,0,73,79,32,101,114,114,111,114,32,100,117,114,105,110,103,32,114,101,97,100,105,110,103,32,111,102,32,34,37,115,34,0,73,110,99,111,114,114,101,99,116,32,118,97,108,117,101,32,102,111,114,32,34,37,115,34,0,0,0,0,0,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,100,105,102,102,101,114,101,110,116,32,118,97,108,117,101,115,32,112,101,114,32,115,97,109,112,108,101,32,102,111,114,32,34,37,115,34,0,0,0,0,0,0,83,97,110,105,116,121,32,99,104,101,99,107,32,111,110,32,115,105,122,101,32,111,102,32,34,37,115,34,32,118,97,108,117,101,32,102,97,105,108,101,100,0,0,0,0,0,0,0,79,117,116,32,111,102,32,109,101,109,111,114,121,32,114,101,97,100,105,110,103,32,111,102,32,34,37,115,34,0,0,0,84,73,70,70,82,101,97,100,68,105,114,69,110,116,114,121,79,117,116,112,117,116,69,114,114,0,0,0,0,0,0,0,73,110,99,111,114,114,101,99,116,32,99,111,117,110,116,32,102,111,114,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,0,0,73,110,99,111,109,112,97,116,105,98,108,101,32,116,121,112,101,32,102,111,114,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,73,79,32,101,114,114,111,114,32,100,117,114,105,110,103,32,114,101,97,100,105,110,103,32,111,102,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,0,0,0,73,110,99,111,114,114,101,99,116,32,118,97,108,117,101,32,102,111,114,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,100,105,102,102,101,114,101,110,116,32,118,97,108,117,101,115,32,112,101,114,32,115,97,109,112,108,101,32,102,111,114,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,83,97,110,105,116,121,32,99,104,101,99,107,32,111,110,32,115,105,122,101,32,111,102,32,34,37,115,34,32,118,97,108,117,101,32,102,97,105,108,101,100,59,32,116,97,103,32,105,103,110,111,114,101,100,0,0,79,117,116,32,111,102,32,109,101,109,111,114,121,32,114,101,97,100,105,110,103,32,111,102,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,0,0,0,0,0,84,73,70,70,82,101,119,114,105,116,101,68,105,114,101,99,116,111,114,121,0,0,0,0,69,114,114,111,114,32,117,112,100,97,116,105,110,103,32,84,73,70,70,32,104,101,97,100,101,114,0,0,0,0,0,0,69,114,114,111,114,32,102,101,116,99,104,105,110,103,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,0,0,69,114,114,111,114,32,102,101,116,99,104,105,110,103,32,100,105,114,101,99,116,111,114,121,32,108,105,110,107,0,0,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,100,105,114,101,99,116,111,114,121,32,108,105,110,107,0,0,0,0,83,97,110,105,116,121,32,99,104,101,99,107,32,111,110,32,116,97,103,32,99,111,117,110,116,32,102,97,105,108,101,100,44,32,108,105,107,101,108,121,32,99,111,114,114,117,112,116,32,84,73,70,70,0,0,0,84,73,70,70,82,101,115,101,116,70,105,101,108,100,0,0,77,101,109,111,114,121,32,109,97,112,112,101,100,32,102,105,108,101,115,32,110,111,116,32,99,117,114,114,101,110,116,108,121,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,116,104,105,115,32,111,112,101,114,97,116,105,111,110,46,0,65,116,116,101,109,112,116,32,116,111,32,114,101,115,101,116,32,102,105,101,108,100,32,111,110,32,100,105,114,101,99,116,111,114,121,32,110,111,116,32,97,108,114,101,97,100,121,32,111,110,32,100,105,115,107,46,0,0,0,0,0,0,0,0,37,115,58,32,83,101,101,107,32,101,114,114,111,114,32,97,99,99,101,115,115,105,110,103,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,0,37,115,58,32,67,97,110,32,110,111,116,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,0,0,0,37,115,58,32,67,97,110,32,110,111,116,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,101,110,116,114,121,46,0,0,37,115,58,32,67,111,117,108,100,32,110,111,116,32,102,105,110,100,32,116,97,103,32,37,100,46,0,0,0,0,0,0,102,111,114,32,102,105,101,108,100,32,98,117,102,102,101,114,46,0,0,0,0,0,0,0,86,97,108,117,101,32,101,120,99,101,101,100,115,32,51,50,98,105,116,32,114,97,110,103,101,32,111,102,32,111,117,116,112,117,116,32,116,121,112,101,46,0,0,0,0,0,0,0,37,115,58,32,67,97,110,32,110,111,116,32,119,114,105,116,101,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,101,110,116,114,121,46,0,69,114,114,111,114,32,112,111,115,116,45,101,110,99,111,100,105,110,103,32,98,101,102,111,114,101,32,100,105,114,101,99,116,111,114,121,32,119,114,105,116,101,0,0,0,0,0,0,69,114,114,111,114,32,102,108,117,115,104,105,110,103,32,100,97,116,97,32,98,101,102,111,114,101,32,100,105,114,101,99,116,111,114,121,32,119,114,105,116,101,0,0,0,0,0,0,111,45,62,102,105,101,108,100,95,116,121,112,101,61,61,84,73,70,70,95,65,83,67,73,73,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,100,105,114,119,114,105,116,101,46,99,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,83,101,99,0,0,0,111,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,84,73,70,70,95,86,65,82,73,65,66,76,69,0,0,0,0,0,0,0,111,45,62,102,105,101,108,100,95,112,97,115,115,99,111,117,110,116,61,61,48,0,0,0,111,45,62,102,105,101,108,100,95,116,121,112,101,61,61,84,73,70,70,95,83,72,79,82,84,0,0,0,0,0,0,0,111,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,49,0,0,0,111,45,62,102,105,101,108,100,95,116,121,112,101,61,61,84,73,70,70,95,76,79,78,71,0,0,0,0,0,0,0,0,111,45,62,102,105,101,108,100,95,116,121,112,101,61,61,84,73,70,70,95,85,78,68,69,70,73,78,69,68,0,0,0,111,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,84,73,70,70,95,86,65,82,73,65,66,76,69,50,0,0,0,0,0,0,111,45,62,102,105,101,108,100,95,112,97,115,115,99,111,117,110,116,61,61,49,0,0,0,48,0,0,0,0,0,0,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,77,97,120,105,109,117,109,32,84,73,70,70,32,102,105,108,101,32,115,105,122,101,32,101,120,99,101,101,100,101,100,0,110,97,60,110,100,105,114,0,73,79,32,101,114,114,111,114,32,119,114,105,116,105,110,103,32,100,105,114,101,99,116,111,114,121,0,0,0,0,0,0,84,73,70,70,76,105,110,107,68,105,114,101,99,116,111,114,121,0,0,0,0,0,0,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,83,117,98,73,70,68,32,100,105,114,101,99,116,111,114,121,32,108,105,110,107,0,0,0,0,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,84,73,70,70,32,104,101,97,100,101,114,0,0,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,73,102,100,73,102,100,56,65,114,114,97,121,0,0,0,0,0,0,0,65,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,118,97,108,117,101,32,108,97,114,103,101,114,32,116,104,97,110,32,48,120,70,70,70,70,70,70,70,70,32,105,110,32,67,108,97,115,115,105,99,32,84,73,70,70,32,102,105,108,101,46,0,0,0,0,0,99,111,117,110,116,60,48,120,52,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,73,102,100,65,114,114,97,121,0,0,0,0,100,105,114,91,109,93,46,116,100,105,114,95,116,97,103,33,61,116,97,103,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,68,97,116,97,0,0,0,0,0,0,0,73,79,32,101,114,114,111,114,32,119,114,105,116,105,110,103,32,116,97,103,32,100,97,116,97,0,0,0,0,0,0,0,100,97,116,97,108,101,110,103,116,104,60,48,120,56,48,48,48,48,48,48,48,85,76,0,99,111,117,110,116,60,48,120,50,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,73,102,100,56,65,114,114,97,121,0,0,0,116,105,102,45,62,116,105,102,95,102,108,97,103,115,38,84,73,70,70,95,66,73,71,84,73,70,70,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,68,111,117,98,108,101,65,114,114,97,121,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,70,108,111,97,116,65,114,114,97,121,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,83,114,97,116,105,111,110,97,108,65,114,114,97,121,0,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,83,108,111,110,103,56,65,114,114,97,121,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,76,111,110,103,56,65,114,114,97,121,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,83,108,111,110,103,65,114,114,97,121,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,76,111,110,103,65,114,114,97,121,0,0,0,99,111,117,110,116,60,48,120,56,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,83,115,104,111,114,116,65,114,114,97,121,0,112,97,32,33,61,32,48,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,83,117,98,105,102,100,0,0,0,0,0,42,112,97,32,60,61,32,48,120,70,70,70,70,70,70,70,70,85,76,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,84,114,97,110,115,102,101,114,102,117,110,99,116,105,111,110,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,83,104,111,114,116,65,114,114,97,121,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,82,97,116,105,111,110,97,108,65,114,114,97,121,0,0,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,83,97,109,112,108,101,102,111,114,109,97,116,65,114,114,97,121,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,111,108,111,114,109,97,112,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,76,111,110,103,76,111,110,103,56,65,114,114,97,121,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,83,104,111,114,116,80,101,114,83,97,109,112,108,101,0,0,0,0,0,118,97,108,117,101,62,61,48,46,48,0,0,0,0,0,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,82,97,116,105,111,110,97,108,0,0,0,0,110,32,62,32,48,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,100,117,109,112,109,111,100,101,46,99,0,0,68,117,109,112,77,111,100,101,69,110,99,111,100,101,0,0,68,117,109,112,77,111,100,101,68,101,99,111,100,101,0,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,102,111,114,32,115,99,97,110,108,105,110,101,32,37,108,117,44,32,101,120,112,101,99,116,101,100,32,97,32,114,101,113,117,101,115,116,32,102,111,114,32,97,116,32,109,111,115,116,32,37,108,108,100,32,98,121,116,101,115,44,32,103,111,116,32,97,32,114,101,113,117,101,115,116,32,102,111,114,32,37,108,108,100,32,98,121,116,101,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,53,0,0,0,6,0,7,0,1,0,4,0,7,0,2,0,4,0,8,0,3,0,4,0,11,0,4,0,4,0,12,0,5,0,4,0,14,0,6,0,4,0,15,0,7,0,5,0,19,0,8,0,5,0,20,0,9,0,5,0,7,0,10,0,5,0,8,0,11,0,6,0,8,0,12,0,6,0,3,0,13,0,6,0,52,0,14,0,6,0,53,0,15,0,6,0,42,0,16,0,6,0,43,0,17,0,7,0,39,0,18,0,7,0,12,0,19,0,7,0,8,0,20,0,7,0,23,0,21,0,7,0,3,0,22,0,7,0,4,0,23,0,7,0,40,0,24,0,7,0,43,0,25,0,7,0,19,0,26,0,7,0,36,0,27,0,7,0,24,0,28,0,8,0,2,0,29,0,8,0,3,0,30,0,8,0,26,0,31,0,8,0,27,0,32,0,8,0,18,0,33,0,8,0,19,0,34,0,8,0,20,0,35,0,8,0,21,0,36,0,8,0,22,0,37,0,8,0,23,0,38,0,8,0,40,0,39,0,8,0,41,0,40,0,8,0,42,0,41,0,8,0,43,0,42,0,8,0,44,0,43,0,8,0,45,0,44,0,8,0,4,0,45,0,8,0,5,0,46,0,8,0,10,0,47,0,8,0,11,0,48,0,8,0,82,0,49,0,8,0,83,0,50,0,8,0,84,0,51,0,8,0,85,0,52,0,8,0,36,0,53,0,8,0,37,0,54,0,8,0,88,0,55,0,8,0,89,0,56,0,8,0,90,0,57,0,8,0,91,0,58,0,8,0,74,0,59,0,8,0,75,0,60,0,8,0,50,0,61,0,8,0,51,0,62,0,8,0,52,0,63,0,5,0,27,0,64,0,5,0,18,0,128,0,6,0,23,0,192,0,7,0,55,0,0,1,8,0,54,0,64,1,8,0,55,0,128,1,8,0,100,0,192,1,8,0,101,0,0,2,8,0,104,0,64,2,8,0,103,0,128,2,9,0,204,0,192,2,9,0,205,0,0,3,9,0,210,0,64,3,9,0,211,0,128,3,9,0,212,0,192,3,9,0,213,0,0,4,9,0,214,0,64,4,9,0,215,0,128,4,9,0,216,0,192,4,9,0,217,0,0,5,9,0,218,0,64,5,9,0,219,0,128,5,9,0,152,0,192,5,9,0,153,0,0,6,9,0,154,0,64,6,6,0,24,0,128,6,9,0,155,0,192,6,11,0,8,0,0,7,11,0,12,0,64,7,11,0,13,0,128,7,12,0,18,0,192,7,12,0,19,0,0,8,12,0,20,0,64,8,12,0,21,0,128,8,12,0,22,0,192,8,12,0,23,0,0,9,12,0,28,0,64,9,12,0,29,0,128,9,12,0,30,0,192,9,12,0,31,0,0,10,12,0,1,0,255,255,9,0,1,0,254,255,10,0,1,0,254,255,11,0,1,0,254,255,12,0,0,0,254,255,0,0,10,0,55,0,0,0,3,0,2,0,1,0,2,0,3,0,2,0,2,0,2,0,3,0,3,0,3,0,4,0,4,0,3,0,5,0,4,0,2,0,6,0,5,0,3,0,7,0,6,0,5,0,8,0,6,0,4,0,9,0,7,0,4,0,10,0,7,0,5,0,11,0,7,0,7,0,12,0,8,0,4,0,13,0,8,0,7,0,14,0,9,0,24,0,15,0,10,0,23,0,16,0,10,0,24,0,17,0,10,0,8,0,18,0,11,0,103,0,19,0,11,0,104,0,20,0,11,0,108,0,21,0,11,0,55,0,22,0,11,0,40,0,23,0,11,0,23,0,24,0,11,0,24,0,25,0,12,0,202,0,26,0,12,0,203,0,27,0,12,0,204,0,28,0,12,0,205,0,29,0,12,0,104,0,30,0,12,0,105,0,31,0,12,0,106,0,32,0,12,0,107,0,33,0,12,0,210,0,34,0,12,0,211,0,35,0,12,0,212,0,36,0,12,0,213,0,37,0,12,0,214,0,38,0,12,0,215,0,39,0,12,0,108,0,40,0,12,0,109,0,41,0,12,0,218,0,42,0,12,0,219,0,43,0,12,0,84,0,44,0,12,0,85,0,45,0,12,0,86,0,46,0,12,0,87,0,47,0,12,0,100,0,48,0,12,0,101,0,49,0,12,0,82,0,50,0,12,0,83,0,51,0,12,0,36,0,52,0,12,0,55,0,53,0,12,0,56,0,54,0,12,0,39,0,55,0,12,0,40,0,56,0,12,0,88,0,57,0,12,0,89,0,58,0,12,0,43,0,59,0,12,0,44,0,60,0,12,0,90,0,61,0,12,0,102,0,62,0,12,0,103,0,63,0,10,0,15,0,64,0,12,0,200,0,128,0,12,0,201,0,192,0,12,0,91,0,0,1,12,0,51,0,64,1,12,0,52,0,128,1,12,0,53,0,192,1,13,0,108,0,0,2,13,0,109,0,64,2,13,0,74,0,128,2,13,0,75,0,192,2,13,0,76,0,0,3,13,0,77,0,64,3,13,0,114,0,128,3,13,0,115,0,192,3,13,0,116,0,0,4,13,0,117,0,64,4,13,0,118,0,128,4,13,0,119,0,192,4,13,0,82,0,0,5,13,0,83,0,64,5,13,0,84,0,128,5,13,0,85,0,192,5,13,0,90,0,0,6,13,0,91,0,64,6,13,0,100,0,128,6,13,0,101,0,192,6,11,0,8,0,0,7,11,0,12,0,64,7,11,0,13,0,128,7,12,0,18,0,192,7,12,0,19,0,0,8,12,0,20,0,64,8,12,0,21,0,128,8,12,0,22,0,192,8,12,0,23,0,0,9,12,0,28,0,64,9,12,0,29,0,128,9,12,0,30,0,192,9,12,0,31,0,0,10,12,0,1,0,255,255,9,0,1,0,254,255,10,0,1,0,254,255,11,0,1,0,254,255,12,0,0,0,254,255,0,0,0,128,192,224,240,248,252,254,255,0,0,0,0,0,0,0,120,32,61,61,32,108,97,115,116,120,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,102,97,120,51,46,99,0,0,0,0,0,0,95,84,73,70,70,70,97,120,51,102,105,108,108,114,117,110,115,0,0,0,0,0,0,0,36,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,73,0,0,0,96,224,1,0,0,0,0,0,0,0,0,0,84,73,70,70,73,110,105,116,67,67,73,84,84,70,97,120,51,0,0,0,0,0,0,0,77,101,114,103,105,110,103,32,67,67,73,84,84,32,70,97,120,32,51,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,0,37,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,73,0,0,0,80,224,1,0,0,0,0,0,0,0,0,0,84,73,70,70,73,110,105,116,67,67,73,84,84,70,97,120,52,0,0,0,0,0,0,0,77,101,114,103,105,110,103,32,67,67,73,84,84,32,70,97,120,32,52,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,0,70,97,120,51,68,101,99,111,100,101,82,76,69,0,0,0,70,114,97,99,116,105,111,110,97,108,32,115,99,97,110,108,105,110,101,115,32,99,97,110,110,111,116,32,98,101,32,114,101,97,100,0,0,0,0,0,37,115,32,97,116,32,108,105,110,101,32,37,117,32,111,102,32,37,115,32,37,117,32,40,103,111,116,32,37,117,44,32,101,120,112,101,99,116,101,100,32,37,117,41,0,0,0,0,80,114,101,109,97,116,117,114,101,32,69,79,76,0,0,0,76,105,110,101,32,108,101,110,103,116,104,32,109,105,115,109,97,116,99,104,0,0,0,0,116,105,108,101,0,0,0,0,115,116,114,105,112,0,0,0,80,114,101,109,97,116,117,114,101,32,69,79,70,32,97,116,32,108,105,110,101,32,37,117,32,111,102,32,37,115,32,37,117,32,40,120,32,37,117,41,0,0,0,0,0,0,0,0,66,97,100,32,99,111,100,101,32,119,111,114,100,32,97,116,32,108,105,110,101,32,37,117,32,111,102,32,37,115,32,37,117,32,40,120,32,37,117,41,0,0,0,0,0,0,0,0,108,101,110,103,116,104,32,60,32,57,0,0,0,0,0,0,70,97,120,51,80,117,116,66,105,116,115,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,7,0,0,0,15,0,0,0,31,0,0,0,63,0,0,0,127,0,0,0,255,0,0,0,0,0,0,0,70,97,120,52,69,110,99,111,100,101,0,0,0,0,0,0,70,114,97,99,116,105,111,110,97,108,32,115,99,97,110,108,105,110,101,115,32,99,97,110,110,111,116,32,98,101,32,119,114,105,116,116,101,110,0,0,7,0,3,0,0,0,6,0,3,0,0,0,3,0,3,0,0,0,1,0,1,0,0,0,3,0,2,0,0,0,6,0,2,0,0,0,7,0,2,0,0,0,0,0,0,0,0,0,112,117,116,115,112,97,110,0,116,101,45,62,114,117,110,108,101,110,32,61,61,32,54,52,42,40,115,112,97,110,62,62,54,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,7,8,8,7,6,6,5,5,5,5,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,97,120,52,68,101,99,111,100],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+112641);allocate([101,0,0,0,0,0,0,85,110,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,40,110,111,116,32,115,117,112,112,111,114,116,101,100,41,32,97,116,32,108,105,110,101,32,37,117,32,111,102,32,37,115,32,37,117,32,40,120,32,37,117,41,0,0,0,0,71,114,111,117,112,52,79,112,116,105,111,110,115,0,0,0,71,114,111,117,112,51,79,112,116,105,111,110,115,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,80,228,1,0,0,0,0,0,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,88,228,1,0,0,0,0,0,70,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,66,0,1,0,104,228,1,0,0,0,0,0,71,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,67,0,1,0,120,228,1,0,0,0,0,0,72,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,68,0,1,0,136,228,1,0,0,0,0,0,0,0,0,0,73,110,105,116,67,67,73,84,84,70,97,120,51,0,0,0,77,101,114,103,105,110,103,32,99,111,109,109,111,110,32,67,67,73,84,84,32,70,97,120,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,115,116,97,116,101,32,98,108,111,99,107,0,0,0,0,0,0,0,0,115,112,32,33,61,32,48,0,70,97,120,51,67,108,101,97,110,117,112,0,0,0,0,0,70,97,120,51,69,110,99,111,100,101,0,0,0,0,0,0,116,112,97,114,109,32,60,32,57,0,0,0,0,0,0,0,70,97,120,51,80,117,116,69,79,76,0,0,0,0,0,0,115,112,32,33,61,32,78,85,76,76,0,0,0,0,0,0,70,97,120,51,80,114,101,69,110,99,111,100,101,0,0,0,70,97,120,51,68,101,99,111,100,101,49,68,0,0,0,0,70,97,120,51,80,114,101,68,101,99,111,100,101,0,0,0,70,97,120,51,83,101,116,117,112,83,116,97,116,101,0,0,66,105,116,115,47,115,97,109,112,108,101,32,109,117,115,116,32,98,101,32,49,32,102,111,114,32,71,114,111,117,112,32,51,47,52,32,101,110,99,111,100,105,110,103,47,100,101,99,111,100,105,110,103,0,0,0,82,111,119,32,112,105,120,101,108,115,32,105,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,32,40,114,111,119,112,105,120,101,108,115,32,37,117,41,0,0,0,0,0,0,102,111,114,32,71,114,111,117,112,32,51,47,52,32,114,117,110,32,97,114,114,97,121,115,0,0,0,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,71,114,111,117,112,32,51,47,52,32,114,101,102,101,114,101,110,99,101,32,108,105,110,101,0,0,0,70,97,120,51,68,101,99,111,100,101,50,68,0,0,0,0,70,97,120,51,80,114,105,110,116,68,105,114,0,0,0,0,32,0,0,0,0,0,0,0,32,32,71,114,111,117,112,32,52,32,79,112,116,105,111,110,115,58,0,0,0,0,0,0,37,115,117,110,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,0,0,0,0,0,32,32,71,114,111,117,112,32,51,32,79,112,116,105,111,110,115,58,0,0,0,0,0,0,37,115,50,45,100,32,101,110,99,111,100,105,110,103,0,0,43,0,0,0,0,0,0,0,37,115,69,79,76,32,112,97,100,100,105,110,103,0,0,0,32,40,37,108,117,32,61,32,48,120,37,108,120,41,10,0,32,32,70,97,120,32,68,97,116,97,58,0,0,0,0,0,32,99,108,101,97,110,0,0,32,114,101,99,101,105,118,101,114,32,114,101,103,101,110,101,114,97,116,101,100,0,0,0,32,117,110,99,111,114,114,101,99,116,101,100,32,101,114,114,111,114,115,0,0,0,0,0,32,40,37,117,32,61,32,48,120,37,120,41,10,0,0,0,32,32,66,97,100,32,70,97,120,32,76,105,110,101,115,58,32,37,108,117,10,0,0,0,32,32,67,111,110,115,101,99,117,116,105,118,101,32,66,97,100,32,70,97,120,32,76,105,110,101,115,58,32,37,108,117,10,0,0,0,0,0,0,0,70,97,120,51,86,83,101,116,70,105,101,108,100,0,0,0,115,112,45,62,118,115,101,116,112,97,114,101,110,116,32,33,61,32,48,0,0,0,0,0,70,97,120,51,86,71,101,116,70,105,101,108,100,0,0,0,70,97,120,77,111,100,101,0,70,97,120,70,105,108,108,70,117,110,99,0,0,0,0,0,66,97,100,70,97,120,76,105,110,101,115,0,0,0,0,0,67,108,101,97,110,70,97,120,68,97,116,97,0,0,0,0,67,111,110,115,101,99,117,116,105,118,101,66,97,100,70,97,120,76,105,110,101,115,0,0,12,7,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,5,6,0,0,2,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,5,7,0,0,3,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,4,6,0,0,2,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,6,7,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,5,6,0,0,2,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,4,7,0,0,3,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,4,6,0,0,2,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,12,11,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,11,0,0,0,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,11,0,0,64,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,64,8,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,64,9,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+122881);allocate([4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,192,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,11,0,0,128,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,192,8,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,192,9,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,12,11,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,11,0,0,0,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+133121);allocate([4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,11,0,0,64,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,128,8,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,128,9,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,0,8,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,11,0,0,128,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+143361);allocate([4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,0,9,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,0,10,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,12,11,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,0,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,23,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,20,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,25,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,128,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,56,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,30,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,64,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,57,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,21,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,54,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,52,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,48,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,64,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,44,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,36,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,128,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+153601);allocate([2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,28,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,60,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,40,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,64,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,192,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,50,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,34,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,128,6,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,26,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,128,5,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,32,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,128,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,61,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,42,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,0,4,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,0,3,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,62,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,192,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,46,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,38,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,0,2,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,19,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,24,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,22,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,192,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+163841);allocate([2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,12,11,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,0,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,23,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,20,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,25,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,192,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,0,5,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,31,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,64,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,58,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,21,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,128,3,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,128,2,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,49,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,128,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,45,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,37,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,192,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,29,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,0,6,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,41,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,128,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,0,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,51,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,35,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,64,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+174081);allocate([2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,27,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,59,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,33,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,128,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,0,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,43,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,128,4,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,55,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,63,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,0,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,47,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,39,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,53,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,19,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,24,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,22,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,0,10,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,12,11,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,0,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,23,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,20,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,25,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,128,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,56,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,30,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,64,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,57,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,21,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,54,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+184321);allocate([2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,52,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,48,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,64,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,44,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,36,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,128,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,28,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,60,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,40,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,64,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,192,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,50,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,34,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,192,6,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,26,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,192,5,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,32,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,128,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,61,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,42,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,64,4,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,64,3,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,62,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,192,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,46,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,38,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,64,2,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+194561);allocate([2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,19,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,24,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,22,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,192,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,12,11,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,0,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,23,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,20,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,25,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,192,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,64,5,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,31,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,64,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,58,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,21,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,192,3,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,192,2,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,49,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,128,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,45,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,37,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,192,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,29,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,64,6,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,41,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,128,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+204801);allocate([2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,0,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,51,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,35,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,64,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,27,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,59,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,33,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,128,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,0,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,43,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,192,4,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,55,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,63,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,0,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,47,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,39,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,53,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,19,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,24,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,22,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,0,10,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,83,111,114,114,121,44,32,114,101,113,117,101,115,116,101,100,32,99,111,109,112,114,101,115,115,105,111,110,32,109,101,116,104,111,100,32,105,115,32,110,111,116,32,99,111,110,102,105,103,117,114,101,100,0,0,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,105,109,97,103,101,115,32,119,105,116,104,32,37,100,45,98,105,116,32,115,97,109,112,108,101,115,0,0,0,0,0,0,0,0,77,105,115,115,105,110,103,32,110,101,101,100,101,100,32,37,115,32,116,97,103,0,0,0,80,104,111,116,111,109,101,116,114,105,99,73,110,116,101,114,112,114,101,116,97,116,105,111,110,0,0,0,0,0,0,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,99,111,110,116,105,103,117,111,117,115,32,100,97,116,97,32,119,105,116,104,32,37,115,61,37,100,44,32,97,110,100,32,37,115,61,37,100,32,97,110,100,32,66,105,116,115,47,83,97,109,112,108,101,61,37,100,0,0,83,97,109,112,108,101,115,47,112,105,120,101,108,0,0,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,82,71,66,32,105,109,97,103,101,32,119,105,116,104,32,37,115,61,37,100,0,0,0,0,0,0,67,111,108,111,114,32,99,104,97,110,110,101,108,115,0,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,115,101,112,97,114,97,116,101,100,32,105,109,97,103,101,32,119,105,116,104,32,37,115,61,37,100,0,0,0,0,0,0,0,0,73,110,107,83,101,116,0,0,83,111,114,114,121,44,32,76,111,103,76,32,100,97,116,97,32,109,117,115,116,32,104,97,118,101,32,37,115,61,37,100,0,0,0,0,0,0,0,0,67,111,109,112,114,101,115,115,105,111,110,0,0,0,0,0,83,111,114,114,121,44,32,76,111,103,76,117,118,32,100,97,116,97,32,109,117,115,116,32,104,97,118,101,32,37,115,61,37,100,32,111,114,32,37,100,0,0,0,0,0,0,0,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,76,111,103,76,117,118,32,105,109,97,103,101,115,32,119,105,116,104,32,37,115,61,37,100,0,0,80,108,97,110,97,114,99,111,110,102,105,103,117,114,97,116,105,111,110,0,0,0,0,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,105,109,97,103,101,32,119,105,116,104,32,37,115,61,37,100,0,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,105,109,97,103,101,32,119,105,116,104,32,37,115,61,37,100,32,97,110,100,32,37,115,61,37,100,0,0,0,0,0,0,0,0,66,105,116,115,47,115,97,109,112,108,101,0,0,0,0,0,77,105,115,115,105,110,103,32,114,101,113,117,105,114,101,100,32,34,67,111,108,111,114,109,97,112,34,32,116,97,103,0,79,117,116,32,111,102,32,109,101,109,111,114,121,32,102,111,114,32,99,111,108,111,114,109,97,112,32,99,111,112,121,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,105,109,97,103,101,0,0,0,0,0,78,111,32,34,103,101,116,34,32,114,111,117,116,105,110,101,32,115,101,116,117,112,0,0,78,111,32,34,112,117,116,34,32,114,111,117,116,105,110,101,32,115,101,116,117,112,108,59,32,112,114,111,98,97,98,108,121,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,105,109,97,103,101,32,102,111,114,109,97,116,0,0,0,37,115,0,0,0,0,0,0,105,110,105,116,89,67,98,67,114,67,111,110,118,101,114,115,105,111,110,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,89,67,98,67,114,45,62,82,71,66,32,99,111,110,118,101,114,115,105,111,110,32,115,116,97,116,101,0,0,0,0,0,0,0,0,105,109,103,45,62,66,105,116,100,101,112,116,104,49,54,84,111,56,61,61,78,85,76,76,0,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,103,101,116,105,109,97,103,101,46,99,0,0,66,117,105,108,100,77,97,112,66,105,116,100,101,112,116,104,49,54,84,111,56,0,0,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,105,109,103,45,62,85,97,84,111,65,97,61,61,78,85,76,76,0,0,0,0,0,0,0,66,117,105,108,100,77,97,112,85,97,84,111,65,97,0,0,73,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,32,105,110,32,37,115,0,0,103,116,83,116,114,105,112,83,101,112,97,114,97,116,101,0,78,111,32,115,112,97,99,101,32,102,111,114,32,116,105,108,101,32,98,117,102,102,101,114,0,0,0,0,0,0,0,0,103,116,84,105,108,101,83,101,112,97,114,97,116,101,0,0,105,110,105,116,67,73,69,76,97,98,67,111,110,118,101,114,115,105,111,110,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,67,73,69,32,76,42,97,42,98,42,45,62,82,71,66,32,99,111,110,118,101,114,115,105,111,110,32,115,116,97,116,101,46,0,0,139,108,79,64,134,201,196,191,128,72,255,190,126,29,120,191,197,32,240,63,195,100,42,61,211,188,99,61,96,229,80,190,199,75,135,63,0,0,200,66,0,0,200,66,0,0,200,66,255,0,0,0,255,0,0,0,255,0,0,0,0,0,128,63,0,0,128,63,0,0,128,63,154,153,25,64,154,153,25,64,154,153,25,64,0,0,0,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,67,73,69,32,76,42,97,42,98,42,45,62,82,71,66,32,99,111,110,118,101,114,115,105,111,110,32,115,116,97,116,101,46,0,0,65,115,115,117,109,105,110,103,32,56,45,98,105,116,32,99,111,108,111,114,109,97,112,0,78,111,32,115,112,97,99,101,32,102,111,114,32,80,97,108,101,116,116,101,32,109,97,112,112,105,110,103,32,116,97,98,108,101,0,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,112,104,111,116,111,109,101,116,114,105,99,32,99,111,110,118,101,114,115,105,111,110,32,116,97,98,108,101,0,0,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,66,38,87,32,109,97,112,112,105,110,103,32,116,97,98,108,101,0,0,73,110,118,97,108,105,100,32,118,101,114,116,105,99,97,108,32,89,67,98,67,114,32,115,117,98,115,97,109,112,108,105,110,103,0,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,115,116,114,105,112,32,98,117,102,102,101,114,0,0,0,0,0,0,0,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,74,80,69,71,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,106,112,101,103,46,99,0,0,0,0,0,0,84,73,70,70,73,110,105,116,74,80,69,71,0,0,0,0,91,1,0,0,253,255,253,255,7,0,0,0,0,0,0,0,40,0,0,0,40,0,0,0,66,0,0,1,160,119,3,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,1,0,176,119,3,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,176,119,3,0,0,0,0,0,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,176,119,3,0,0,0,0,0,77,101,114,103,105,110,103,32,74,80,69,71,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,78,111,32,115,112,97,99,101,32,102,111,114,32,74,80,69,71,32,115,116,97,116,101,32,98],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+215041);allocate([108,111,99,107,0,0,0,115,112,32,33,61,32,48,0,74,80,69,71,67,108,101,97,110,117,112,0,0,0,0,0,115,112,32,33,61,32,78,85,76,76,0,0,0,0,0,0,74,80,69,71,69,110,99,111,100,101,0,0,0,0,0,0,102,114,97,99,116,105,111,110,97,108,32,115,99,97,110,108,105,110,101,32,100,105,115,99,97,114,100,101,100,0,0,0,74,80,69,71,80,114,101,69,110,99,111,100,101,0,0,0,33,115,112,45,62,99,105,110,102,111,46,99,111,109,109,46,105,115,95,100,101,99,111,109,112,114,101,115,115,111,114,0,83,116,114,105,112,47,116,105,108,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,74,80,69,71,0,0,0,74,80,69,71,69,110,99,111,100,101,82,97,119,0,0,0,74,80,69,71,83,101,116,117,112,69,110,99,111,100,101,0,80,104,111,116,111,109,101,116,114,105,99,73,110,116,101,114,112,114,101,116,97,116,105,111,110,32,37,100,32,110,111,116,32,97,108,108,111,119,101,100,32,102,111,114,32,74,80,69,71,0,0,0,0,0,0,0,66,105,116,115,80,101,114,83,97,109,112,108,101,32,37,100,32,110,111,116,32,97,108,108,111,119,101,100,32,102,111,114,32,74,80,69,71,0,0,0,74,80,69,71,32,116,105,108,101,32,104,101,105,103,104,116,32,109,117,115,116,32,98,101,32,109,117,108,116,105,112,108,101,32,111,102,32,37,100,0,74,80,69,71,32,116,105,108,101,32,119,105,100,116,104,32,109,117,115,116,32,98,101,32,109,117,108,116,105,112,108,101,32,111,102,32,37,100,0,0,82,111,119,115,80,101,114,83,116,114,105,112,32,109,117,115,116,32,98,101,32,109,117,108,116,105,112,108,101,32,111,102,32,37,100,32,102,111,114,32,74,80,69,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,73,70,70,106,112,101,103,95,116,97,98,108,101,115,95,100,101,115,116,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,74,80,69,71,84,97,98,108,101,115,0,74,80,69,71,76,105,98,0,37,115,0,0,0,0,0,0,102,114,97,99,116,105,111,110,97,108,32,115,99,97,110,108,105,110,101,32,110,111,116,32,114,101,97,100,0,0,0,0,74,80,69,71,80,114,101,68,101,99,111,100,101,0,0,0,115,112,45,62,99,105,110,102,111,46,99,111,109,109,46,105,115,95,100,101,99,111,109,112,114,101,115,115,111,114,0,0,73,109,112,114,111,112,101,114,32,74,80,69,71,32,115,116,114,105,112,47,116,105,108,101,32,115,105,122,101,44,32,101,120,112,101,99,116,101,100,32,37,100,120,37,100,44,32,103,111,116,32,37,100,120,37,100,0,0,0,0,0,0,0,0,74,80,69,71,32,115,116,114,105,112,47,116,105,108,101,32,115,105,122,101,32,101,120,99,101,101,100,115,32,101,120,112,101,99,116,101,100,32,100,105,109,101,110,115,105,111,110,115,44,32,101,120,112,101,99,116,101,100,32,37,100,120,37,100,44,32,103,111,116,32,37,100,120,37,100,0,0,0,0,0,73,109,112,114,111,112,101,114,32,74,80,69,71,32,99,111,109,112,111,110,101,110,116,32,99,111,117,110,116,0,0,0,73,109,112,114,111,112,101,114,32,74,80,69,71,32,100,97,116,97,32,112,114,101,99,105,115,105,111,110,0,0,0,0,73,109,112,114,111,112,101,114,32,74,80,69,71,32,115,97,109,112,108,105,110,103,32,102,97,99,116,111,114,115,32,37,100,44,37,100,10,65,112,112,97,114,101,110,116,108,121,32,115,104,111,117,108,100,32,98,101,32,37,100,44,37,100,46,0,0,0,0,0,0,0,0,73,109,112,114,111,112,101,114,32,74,80,69,71,32,115,97,109,112,108,105,110,103,32,102,97,99,116,111,114,115,0,0,74,80,69,71,68,101,99,111,100,101,82,97,119,0,0,0,97,112,112,108,105,99,97,116,105,111,110,32,98,117,102,102,101,114,32,110,111,116,32,108,97,114,103,101,32,101,110,111,117,103,104,32,102,111,114,32,97,108,108,32,100,97,116,97,46,0,0,0,0,0,0,0,97,112,112,108,105,99,97,116,105,111,110,32,98,117,102,102,101,114,32,110,111,116,32,108,97,114,103,101,32,101,110,111,117,103,104,32,102,111,114,32,97,108,108,32,100,97,116,97,44,32,112,111,115,115,105,98,108,101,32,115,117,98,115,97,109,112,108,105,110,103,32,105,115,115,117,101,0,0,0,0,84,73,70,70,82,101,97,100,83,99,97,110,108,105,110,101,0,0,0,0,0,0,0,0,115,99,97,110,108,105,110,101,32,111,114,105,101,110,116,101,100,32,97,99,99,101,115,115,32,105,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,100,111,119,110,115,97,109,112,108,101,100,32,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,105,109,97,103,101,115,44,32,99,111,110,115,105,100,101,114,32,101,110,97,98,108,105,110,103,32,84,73,70,70,95,74,80,69,71,67,79,76,79,82,77,79,68,69,32,97,115,32,74,80,69,71,67,79,76,79,82,77,79,68,69,95,82,71,66,46,0,0,0,0,74,80,69,71,83,101,116,117,112,68,101,99,111,100,101,0,66,111,103,117,115,32,74,80,69,71,84,97,98,108,101,115,32,102,105,101,108,100,0,0,255,217,0,0,0,0,0,0,74,80,69,71,70,105,120,117,112,84,97,103,115,83,117,98,115,97,109,112,108,105,110,103,0,0,0,0,0,0,0,0,85,110,97,98,108,101,32,116,111,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,97,117,116,111,45,99,111,114,114,101,99,116,105,110,103,32,111,102,32,115,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,59,32,97,117,116,111,45,99,111,114,114,101,99,116,105,110,103,32,115,107,105,112,112,101,100,0,0,0,0,85,110,97,98,108,101,32,116,111,32,97,117,116,111,45,99,111,114,114,101,99,116,32,115,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,44,32,108,105,107,101,108,121,32,99,111,114,114,117,112,116,32,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,110,32,102,105,114,115,116,32,115,116,114,105,112,47,116,105,108,101,59,32,97,117,116,111,45,99,111,114,114,101,99,116,105,110,103,32,115,107,105,112,112,101,100,0,0,0,0,0,74,80,69,71,70,105,120,117,112,84,97,103,115,83,117,98,115,97,109,112,108,105,110,103,83,101,99,0,0,0,0,0,83,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,32,105,110,115,105,100,101,32,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,104,97,118,101,32,110,111,32,84,73,70,70,32,101,113,117,105,118,97,108,101,110,116,44,32,97,117,116,111,45,99,111,114,114,101,99,116,105,111,110,32,111,102,32,84,73,70,70,32,115,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,32,102,97,105,108,101,100,0,0,0,0,0,0,0,65,117,116,111,45,99,111,114,114,101,99,116,101,100,32,102,111,114,109,101,114,32,84,73,70,70,32,115,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,32,91,37,100,44,37,100,93,32,116,111,32,109,97,116,99,104,32,115,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,32,105,110,115,105,100,101,32,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,91,37,100,44,37,100,93,0,0,0,109,60,48,120,56,48,48,48,48,48,48,48,85,76,0,0,74,80,69,71,70,105,120,117,112,84,97,103,115,83,117,98,115,97,109,112,108,105,110,103,82,101,97,100,66,121,116,101,0,0,0,0,0,0,0,0,74,80,69,71,80,114,105,110,116,68,105,114,0,0,0,0,32,32,74,80,69,71,32,84,97,98,108,101,115,58,32,40,37,108,117,32,98,121,116,101,115,41,10,0,0,0,0,0,74,80,69,71,86,83,101,116,70,105,101,108,100,0,0,0,74,80,69,71,86,71,101,116,70,105,101,108,100,0,0,0,74,80,69,71,84,97,98,108,101,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,155,125,62,4,0,0,0,52,161,121,62,6,0,4,0,3,124,119,62,7,0,10,0,62,149,115,62,9,0,17,0,88,145,113,62,10,0,26,0,132,185,109,62,12,0,36,0,27,213,105,62,14,0,48,0,112,176,103,62,15,0,62,0,57,181,99,62,17,0,77,0,41,179,97,62,18,0,94,0,240,220,91,62,21,0,112,0,179,209,89,62,22,0,133,0,63,199,87,62,23,0,155,0,59,229,81,62,26,0,178,0,144,219,79,62,27,0,204,0,226,6,76,62,29,0,231,0,181,55,72,62,31,0,4,1,152,52,70,62,32,0,35,1,97,111,66,62,34,0,67,1,104,175,62,62,36,0,101,1,104,175,62,62,36,0,137,1,102,249,58,62,38,0,173,1,144,76,55,62,40,0,211,1,92,173,51,62,42,0,251,1,8,33,48,62,44,0,37,2,8,33,48,62,44,0,81,2,160,168,44,62,46,0,125,2,160,168,44,62,46,0,171,2,52,128,39,62,49,0,217,2,12,115,34,62,52,0,10,3,12,115,34,62,52,0,62,3,12,115,34,62,52,0,114,3,174,129,29,62,55,0,166,3,174,129,29,62,55,0,221,3,226,172,24,62,58,0,20,4,226,172,24,62,58,0,78,4,2,44,18,62,62,0,136,4,2,44,18,62,62,0,198,4,2,44,18,62,62,0,4,5,167,150,13,62,65,0,66,5,167,150,13,62,65,0,131,5,167,150,13,62,65,0,196,5,134,86,7,62,69,0,5,6,134,86,7,62,69,0,74,6,159,59,1,62,73,0,143,6,159,59,1,62,73,0,216,6,159,59,1,62,73,0,33,7,80,138,246,61,77,0,106,7,80,138,246,61,77,0,183,7,80,138,246,61,77,0,4,8,80,138,246,61,77,0,81,8,159,88,231,61,82,0,158,8,159,88,231,61,82,0,240,8,159,88,231,61,82,0,66,9,191,14,220,61,86,0,148,9,191,14,220,61,86,0,234,9,191,14,220,61,86,0,64,10,191,14,220,61,86,0,150,10,161,128,205,61,91,0,236,10,161,128,205,61,91,0,71,11,161,128,205,61,91,0,162,11,108,209,194,61,95,0,253,11,108,209,194,61,95,0,92,12,108,209,194,61,95,0,187,12,108,209,194,61,95,0,26,13,12,202,180,61,100,0,121,13,12,202,180,61,100,0,221,13,12,202,180,61,100,0,65,14,12,202,180,61,100,0,165,14,136,245,166,61,105,0,9,15,136,245,166,61,105,0,114,15,136,245,166,61,105,0,219,15,136,245,166,61,105,0,68,16,185,80,153,61,110,0,173,16,185,80,153,61,110,0,27,17,185,80,153,61,110,0,137,17,185,80,153,61,110,0,247,17,161,219,139,61,115,0,101,18,161,219,139,61,115,0,216,18,161,219,139,61,115,0,75,19,161,219,139,61,115,0,190,19,144,50,130,61,119,0,49,20,144,50,130,61,119,0,168,20,144,50,130,61,119,0,31,21,144,50,130,61,119,0,150,21,120,94,106,61,124,0,13,22,120,94,106,61,124,0,137,22,120,94,106,61,124,0,5,23,120,94,106,61,124,0,129,23,166,213,80,61,129,0,253,23,166,213,80,61,129,0,126,24,166,213,80,61,129,0,255,24,166,213,80,61,129,0,128,25,166,213,80,61,129,0,1,26,18,190,55,61,134,0,130,26,18,190,55,61,134,0,8,27,18,190,55,61,134,0,142,27,18,190,55,61,134,0,20,28,199,45,38,61,138,0,154,28,199,45,38,61,138,0,36,29,199,45,38,61,138,0,174,29,199,45,38,61,138,0,56,30,52,216,20,61,142,0,194,30,52,216,20,61,142,0,80,31,52,216,20,61,142,0,222,31,52,216,20,61,142,0,108,32,47,164,3,61,146,0,250,32,47,164,3,61,146,0,140,33,47,164,3,61,146,0,30,34,47,164,3,61,146,0,176,34,27,241,228,60,150,0,66,35,27,241,228,60,150,0,216,35,27,241,228,60,150,0,110,36,75,120,194,60,154,0,4,37,75,120,194,60,154,0,158,37,75,120,194,60,154,0,56,38,75,120,194,60,154,0,210,38,218,198,159,60,158,0,108,39,218,198,159,60,158,0,10,40,218,198,159,60,158,0,168,40,65,17,139,60,161,0,70,41,65,17,139,60,161,0,231,41,65,17,139,60,161,0,136,42,65,17,139,60,161,0,41,43,207,19,79,60,165,0,202,43,207,19,79,60,165,0,111,44,207,19,79,60,165,0,20,45,75,177,35,60,168,0,185,45,75,177,35,60,168,0,97,46,75,177,35,60,168,0,9,47,216,183,19,60,170,0,177,47,216,183,19,60,170,0,91,48,216,183,19,60,170,0,5,49,250,183,203,59,173,0,175,49,250,183,203,59,173,0,92,50,188,4,167,59,175,0,9,51,188,4,167,59,175,0,184,51,188,4,167,59,175,0,103,52,18,23,128,59,177,0,22,53,18,23,128,59,177,0,199,53,175,90,25,59,177,0,120,54,197,144,28,59,170,0,41,55,34,252,139,58,164,0,211,55,122,169,216,58,157,0,119,56,14,245,59,58,150,0,20,57,218,140,211,58,143,0,170,57,201,142,141,57,136,0,57,58,97,193,253,57,129,0,193,58,138,146,144,58,123,0,66,59,155,202,162,58,115,0,189,59,170,182,155,58,109,0,48,60,136,131,132,58,103,0,157,60,47,220,57,58,97,0,4,61,137,207,157,57,89,0,101,61,193,85,30,59,82,0,190,61,187,14,85,59,76,0,16,62,216,186,84,59,69,0,92,62,58,177,135,59,62,0,161,62,69,101,195,59,55,0,223,62,116,209,16,60,47,0,22,63,64,222,43,60,40,0,69,63,0,55,139,60,31,0,109,63,133,208,193,60,21,0,140,63,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,83,71,73,76,79,71,50,52,32,124,124,32,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,83,71,73,76,79,71,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,108,117,118,46,99,0,0,0,0,0,0,0,84,73,70,70,73,110,105,116,83,71,73,76,111,103,0,0,24,0,1,0,0,0,0,0,3,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,1,0,200,129,3,0,0,0,0,0,25,0,1,0,0,0,0,0,3,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,1,0,216,129,3,0,0,0,0,0,77,101,114,103,105,110,103,32,83,71,73,76,111,103,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,0,0,0,0,0,0,37,115,58,32,78,111,32,115,112,97,99,101,32,102,111,114,32,76,111,103,76,117,118,32,115,116,97,116,101,32,98,108,111,99,107,0,0,0,0,0,76,111,103,76,117,118,86,83,101,116,70,105,101,108,100,0,85,110,107,110,111,119,110,32,100,97,116,97,32,102,111,114,109,97,116,32,37,100,32,102,111,114,32,76,111,103,76,117,118,32,99,111,109,112,114,101,115,115,105,111,110,0,0,0,85,110,107,110,111,119,110,32,101,110,99,111,100,105,110,103,32,37,100,32,102,111,114,32,76,111,103,76,117,118,32,99,111,109,112,114,101,115,115,105,111,110,0,0,0,0,0,0,115,112,32,33,61,32,48,0,76,111,103,76,117,118,67,108,101,97,110,117,112,0,0,0,99,99,37,114,111,119,108,101,110,32,61,61,32,48,0,0,76,111,103,76,117,118,69,110,99,111,100,101,84,105,108,101,0,0,0,0,0,0,0,0,76,111,103,76,117,118,69,110,99,111,100,101,83,116,114,105,112,0,0,0,0,0,0,0,76,111,103,76,117,118,83,101,116,117,112,69,110,99,111,100,101,0,0,0,0,0,0,0,73,110,97,112,112,114,111,112,114,105,97,116,101,32,112,104,111,116,111,109,101,116,114,105,99,32,105,110,116,101,114,112,114,101,116,97,116,105,111,110,32,37,100,32,102,111,114,32,83,71,73,76,111,103,32,99,111,109,112,114,101,115,115,105,111,110,59,32,37,115,0,0,109,117,115,116,32,98,101,32,101,105,116,104,101,114,32,76,111,103,76,85,86,32,111,114,32,76,111,103,76,0,0,0,83,71,73,76,111,103,32,99,111,109,112,114,101,115,115,105,111,110,32,115,117,112,112,111,114,116,101,100,32,111,110,108,121,32,102,111,114,32,37,115,44,32,111,114,32,114,97,119,32,100,97,116,97,0,0,0,89,44,32,76,0,0,0,0,88,89,90,44,32,76,117,118,0,0,0,0,0,0,0,0,115,32,61,61,32,48,0,0,76,111,103,76,49,54,69,110,99,111,100,101,0,0,0,0,115,112,32,33,61,32,78,85,76,76,0,0,0,0,0,0,115,112,45,62,116,98,117,102,108,101,110,32,62,61,32,110,112,105,120,101,108,115,0,0,76,111,103,76,49,54,73,110,105,116,83,116,97,116,101,0,116,100,45,62,116,100,95,112,104,111,116,111,109,101,116,114,105,99,32,61,61,32,80,72,79,84,79,77,69,84,82,73,67,95,76,79,71,76,0,0,78,111,32,115,117,112,112,111,114,116,32,102,111,114,32,99,111,110,118,101,114,116,105,110,103,32,117,115,101,114,32,100,97,116,97,32,102,111,114,109,97,116,32,116,111,32,76,111,103,76,0,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,83,71,73,76,111,103,32,116,114,97,110,115,108,97,116,105,111,110,32,98,117,102,102,101,114,0,0,76,111,103,76,117,118,69,110,99,111,100,101,51,50,0,0,76,111,103,76,117,118,69,110,99,111,100,101,50,52,0,0,76,111,103,76,117,118,73,110,105,116,83,116,97,116,101,0,116,100,45,62,116,100,95,112,104,111,116,111,109,101,116,114,105,99,32,61,61,32,80,72,79,84,79,77,69,84,82,73,67,95,76,79,71,76,85,86,0,0,0,0,0,0,0,0,83,71,73,76,111,103,32,99,111,109,112,114,101,115,115,105,111,110,32,99,97,110,110,111,116,32,104,97,110,100,108,101,32,110,111,110,45,99,111,110,116,105,103,117,111,117,115,32,100,97,116,97,0,0,0,0,78,111,32,115,117,112,112,111,114,116,32,102,111,114,32,99,111,110,118,101,114,116,105,110,103,32,117,115,101,114,32,100,97,116,97,32,102,111,114,109,97,116,32,116,111,32,76,111,103,76,117,118,0,0,0,0,76,111,103,76,117,118,68,101,99,111,100,101,84,105,108,101,0,0,0,0,0,0,0,0,76,111,103,76,117,118,68,101,99,111,100,101,83,116,114,105,112,0,0,0,0,0,0,0,76,111,103,76,117,118,83,101,116,117,112,68,101,99,111,100,101,0,0,0,0,0,0,0,76,111,103,76,49,54,68,101,99,111,100,101,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,97,116,32,114,111,119,32,37,108,117,32,40,115,104,111,114,116,32,37,108,108,117,32,112,105,120,101,108,115,41,0,0,76,111,103,76,117,118,68,101,99,111,100,101,51,50,0,0,76,111,103,76,117,118,68,101,99,111,100,101,50,52,0,0,83,71,73,76,111,103,68,97,116,97,70,109,116,0,0,0,83,71,73,76,111,103,69,110,99,111,100,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,76,90,87,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,108,122,119,46,99,0,0,0,0,0,0,0,84,73,70,70,73,110,105,116,76,90,87,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,76,90,87,32,115,116,97,116,101,32,98,108,111,99,107,0,0,0,0,116,105,102,45,62,116,105,102,95,100,97,116,97,32,33,61,32,48,0,0,0,0,0,0,76,90,87,67,108,101,97,110,117,112,0,0,0,0,0,0,115,112,45,62,101,110,99,95,104,97,115,104,116,97,98,32,33,61,32,78,85,76,76,0,76,90,87,69,110,99,111,100,101,0,0,0,0,0,0,0,110,98,105,116,115,32,60,61,32,66,73,84,83,95,77,65,88,0,0,0,0,0,0,0,115,112,32,33,61,32,78,85,76,76,0,0,0,0,0,0,76,90,87,80,114,101,69,110,99,111,100,101,0,0,0,0,76,90,87,83,101,116,117,112,69,110,99,111,100,101,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,76,90,87,32,104,97,115,104,32,116,97,98,108,101,0,0,0,0,0,76,90,87,68,101,99,111,100,101,0,0,0,0,0,0,0,115,112,45,62,100,101,99,95,99,111,100,101,116,97,98,32,33,61,32,78,85,76,76,0,76,90,87,68,101,99,111,100,101,58,32,83,116,114,105,112,32,37,100,32,110,111,116,32,116,101,114,109,105,110,97,116,101,100,32,119,105,116,104,32,69,79,73,32,99,111,100,101,0,0,0,0,0,0,0,0,76,90,87,68,101,99,111,100,101,58,32,67,111,114,114,117,112,116,101,100,32,76,90,87,32,116,97,98,108,101,32,97,116,32,115,99,97,110,108,105,110,101,32,37,100,0,0,0,67,111,114,114,117,112,116,101,100,32,76,90,87,32,116,97,98,108,101,32,97,116,32,115,99,97,110,108,105,110,101,32,37,100,0,0,0,0,0,0,87,114,111,110,103,32,108,101,110,103,116,104,32,111,102,32,100,101,99,111,100,101,100,32,115,116,114,105,110,103,58,32,100,97,116,97,32,112,114,111,98,97,98,108,121,32,99,111,114,114,117,112,116,101,100,32,97,116,32,115,99,97,110,108,105,110,101,32,37,100,0,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,97,116,32,115,99,97,110,108,105,110,101,32,37,100,32,40,115,104,111,114,116,32,37,108,108,117,32,98,121,116,101,115,41,0,0,0,0,0,0,0,66,111,103,117,115,32,101,110,99,111,100,105,110,103,44,32,108,111,111,112,32,105,110,32,116,104,101,32,99,111,100,101,32,116,97,98,108,101,59,32,115,99,97,110,108,105,110,101,32,37,100,0,0,0,0,0,76,90,87,80,114,101,68,101,99,111,100,101,0,0,0,0,79,108,100,45,115,116,121,108,101,32,76,90,87,32,99,111,100,101,115,44,32,99,111,110,118,101,114,116,32,102,105,108,101,0,0,0,0,0,0,0,76,90,87,68,101,99,111,100,101,67,111,109,112,97,116,0,76,90,87,83,101,116,117,112,68,101,99,111,100,101,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,76,90,87,32,99,111,100,101,32,116,97,98,108,101,0,0,0,0,0,78,101,88,84,68,101,99,111,100,101,0,0,0,0,0,0,70,114,97,99,116,105,111,110,97,108,32,115,99,97,110,108,105,110,101,115,32,99,97,110,110,111,116,32,98,101,32,114,101,97,100,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,102,111,114,32,115,99,97,110,108,105,110,101,32,37,108,100,0,0,0,0,0,0,0,0,78,101,88,84,80,114,101,68,101,99,111,100,101,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,66,105,116,115,80,101,114,83,97,109,112,108,101,32,61,32,37,100,0,0,115,99,104,101,109,101,61,61,67,79,77,80,82,69,83,83,73,79,78,95,79,74,80,69,71,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,111,106,112,101,103,46,99,0,0,0,0,0,84,73,70,70,73,110,105,116,79,74,80,69,71,0,0,0,1,2,0,0,1,0,1,0,16,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,66,0,1,0,128,151,3,0,0,0,0,0,2,2,0,0,1,0,1,0,16,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,67,0,1,0,152,151,3,0,0,0,0,0,7,2,0,0,253,255,253,255,16,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,68,0,0,1,184,151,3,0,0,0,0,0,8,2,0,0,253,255,253,255,16,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,69,0,0,1,200,151,3,0,0,0,0,0,9,2,0,0,253,255,253,255,16,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,70,0,0,1,216,151,3,0,0,0,0,0,0,2,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,71,0,0,0,232,151,3,0,0,0,0,0,3,2,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,72,0,0,0,248,151,3,0,0,0,0,0,0,0,0,0,77,101,114,103,105,110,103,32,79,108,100,32,74,80,69,71,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,79,74,80,69,71,32,115,116,97,116,101,32,98,108,111,99,107,0,0,115,112,45,62,108,105,98,106,112,101,103,95,115,101,115,115,105,111,110,95,97,99,116,105,118,101,33,61,48,0,0,0,79,74,80,69,71,76,105,98,106,112,101,103,83,101,115,115,105,111,110,65,98,111,114,116,0,0,0,0,0,0,0,0,79,74,80,69,71,80,111,115,116,69,110,99,111,100,101,0,79,74,80,69,71,32,101,110,99,111,100,105,110,103,32,110,111,116,32,115,117,112,112,111,114,116,101,100,59,32,117,115,101,32,110,101,119,45,115,116,121,108,101,32,74,80,69,71,32,99,111,109,112,114,101,115,115,105,111,110,32,105,110,115,116,101,97,100,0,0,0,0,79,74,80,69,71,69,110,99,111,100,101,0,0,0,0,0,79,74,80,69,71,80,114,101,69,110,99,111,100,101,0,0,79,74,80,69,71,83,101,116,117,112,69,110,99,111,100,101,0,0,0,0,0,0,0,0,79,74,80,69,71,80,111,115,116,68,101,99,111,100,101,0,70,114,97,99,116,105,111,110,97,108,32,115,99,97,110,108,105,110,101,32,110,111,116,32,114,101,97,100,0,0,0,0,99,99,62,48,0,0,0,0,79,74,80,69,71,68,101,99,111,100,101,83,99,97,110,108,105,110,101,115,0,0,0,0,79,74,80,69,71,68,101,99,111,100,101,82,97,119,0,0,79,74,80,69,71,80,114,101,68,101,99,111,100,101,83,107,105,112,83,99,97,110,108,105,110,101,115,0,0,0,0,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,115,112,45,62,115,117,98,115,97,109,112,108,105,110,103,95,99,111,110,118,101,114,116,95,121,99,98,99,114,98,117,102,61,61,48,0,0,0,0,0,79,74,80,69,71,87,114,105,116,101,72,101,97,100,101,114,73,110,102,111,0,0,0,0,115,112,45,62,115,117,98,115,97,109,112,108,105,110,103,95,99,111,110,118,101,114,116,95,121,99,98,99,114,105,109,97,103,101,61,61,48,0,0,0,76,105,98,74,112,101,103,0,85,110,101,120,112,101,99,116,101,100,32,101,114,114,111,114,0,0,0,0,0,0,0,0,80,114,101,109,97,116,117,114,101,32,101,110,100,32,111,102,32,74,80,69,71,32,100,97,116,97,0,0,0,0,0,0,115,112,45,62,111,117,116,95,115,116,97,116,101,60,61,111,115,111,115,69,111,105,0,0,79,74,80,69,71,87,114,105,116,101,83,116,114,101,97,109,0,0,0,0,0,0,0,0,115,112,45,62,105,110,95,98,117,102,102,101,114,95,116,111,103,111,62,48,0,0,0,0,79,74,80,69,71,87,114,105,116,101,83,116,114,101,97,109,67,111,109,112,114,101,115,115,101,100,0,0,0,0,0,0,110,62,48,0,0,0,0,0,79,74,80,69,71,82,101,97,100,66,117,102,102,101,114,70,105,108,108,0,0,0,0,0,110,60,61,79,74,80,69,71,95,66,85,70,70,69,82,0,40,117,105,110,116,54,52,41,110,60,61,115,112,45,62,105,110,95,98,117,102,102,101,114,95,102,105,108,101,95,116,111,103,111,0,0,0,0,0,0,79,74,80,69,71,87,114,105,116,101,83,116,114,101,97,109,83,111,115,0,0,0,0,0,50,53,53,62,61,54,43,115,112,45,62,115,97,109,112,108,101,115,95,112,101,114,95,112,105,120,101,108,95,112,101,114,95,112,108,97,110,101,42,50,0,0,0,0,0,0,0,0,79,74,80,69,71,87,114,105,116,101,83,116,114,101,97,109,83,111,102,0,0,0,0,0,50,53,53,62,61,56,43,115,112,45,62,115,97,109,112,108,101,115,95,112,101,114,95,112,105,120,101,108,95,112,101,114,95,112,108,97,110,101,42,51,0,0,0,0,0,0,0,0,37,115,0,0,0,0,0,0,115,62,48,0,0,0,0,0,79,74,80,69,71,82,101,97,100,83,101,99,111,110,100,97,114,121,83,111,115,0,0,0,115,60,51,0,0,0,0,0,115,112,45,62,115,111,115,95,101,110,100,91,48,93,46,108,111,103,33,61,48,0,0,0,115,112,45,62,115,111,115,95,101,110,100,91,115,93,46,108,111,103,61,61,48,0,0,0,115,112,45,62,115,117,98,115,97,109,112,108,105,110,103,99,111,114,114,101,99,116,61,61,48,0,0,0,0,0,0,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,83,116,114,101,97,109,83,111,115,0,67,111,114,114,117,112,116,32,83,79,83,32,109,97,114,107,101,114,32,105,110,32,74,80,69,71,32,100,97,116,97,0,115,112,45,62,105,110,95,98,117,102,102,101,114,95,116,111,103,111,61,61,48,0,0,0,79,74,80,69,71,82,101,97,100,83,107,105,112,0,0,0,79,74,80,69,71,82,101,97,100,66,121,116,101,0,0,0,115,112,45,62,114,101,97,100,104,101,97,100,101,114,95,100,111,110,101,61,61,48,0,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,0,0,0,0,0,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,32,37,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,116,104,105,115,32,99,111,109,112,114,101,115,115,105,111,110,32,115,99,104,101,109,101,0,0,0,0,73,110,99,111,109,112,97,116,105,98,108,101,32,118,101,114,116,105,99,97,108,32,115,117,98,115,97,109,112,108,105,110,103,32,97,110,100,32,105,109,97,103,101,32,115,116,114,105,112,47,116,105,108,101,32,108,101,110,103,116,104,0,0,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,0,0,0,0,0,0,0,115,112,45,62,112,108,97,110,101,95,115,97,109,112,108,101,95,111,102,102,115,101,116,61,61,48,0,0,0,0,0,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,0,0,85,110,107,110,111,119,110,32,109,97,114,107,101,114,32,116,121,112,101,32,37,100,32,105,110,32,74,80,69,71,32,100,97,116,97,0,0,0,0,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,84,97,98,108,101,115,65,99,84,97,98,108,101,0,0,0,0,0,77,105,115,115,105,110,103,32,74,80,69,71,32,116,97,98,108,101,115,0,0,0,0,0,67,111,114,114,117,112,116,32,74,112,101,103,65,99,84,97,98,108,101,115,32,116,97,103,32,118,97,108,117,101,0,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,84,97,98,108,101,115,68,99,84,97,98,108,101,0,0,0,0,0,67,111,114,114,117,112,116,32,74,112,101,103,68,99,84,97,98,108,101,115,32,116,97,103,32,118,97,108,117,101,0,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,84,97,98,108,101,115,81,84,97,98,108,101,0,0,0,0,0,0,67,111,114,114,117,112,116,32,74,112,101,103,81,84,97,98,108,101,115,32,116,97,103,32,118,97,108,117,101,0,0,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,83,116,114,101,97,109,83,111,102,0,67,111,114,114,117,112,116,32,83,79,70,32,109,97,114,107,101,114,32,105,110,32,74,80,69,71,32,100,97,116,97,0,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,110,100,105,99,97,116,101,115,32,117,110,101,120,112,101,99,116,101,100,32,110,117,109,98,101,114,32,111,102,32,115,97,109,112,108,101,115,0,0,0,0,0,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,110,100,105,99,97,116,101,115,32,117,110,101,120,112,101,99,116,101,100,32,110,117,109,98,101,114,32,111,102,32,98,105,116,115,32,112,101,114,32,115,97,109,112,108,101,0,0,0,0,0,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,110,100,105,99,97,116,101,115,32,117,110,101,120,112,101,99,116,101,100,32,104,101,105,103,104,116,0,0,0,0,0,0,0,0,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,110,100,105,99,97,116,101,115,32,117,110,101,120,112,101,99,116,101,100,32,119,105,100,116,104,0,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,109,97,103,101,32,119,105,100,116,104,32,101,120,99,101,101,100,115,32,101,120,112,101,99,116,101,100,32,105,109,97,103,101,32,119,105,100,116,104,0,0,0,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,110,100,105,99,97,116,101,115,32,117,110,101,120,112,101,99,116,101,100,32,115,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,0,0,0,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,83,116,114,101,97,109,68,104,116,0,67,111,114,114,117,112,116,32,68,72,84,32,109,97,114,107,101,114,32,105,110,32,74,80,69,71,32,100,97,116,97,0,108,101,110,62,48,0,0,0,79,74,80,69,71,82,101,97,100,66,108,111,99,107,0,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,83,116,114,101,97,109,68,113,116,0,67,111,114,114,117,112,116,32,68,81,84,32,109,97,114,107,101,114,32,105,110,32,74,80,69,71,32,100,97,116,97,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,83,116,114,101,97,109,68,114,105,0,67,111,114,114,117,112,116,32,68,82,73,32,109,97,114,107,101,114,32,105,110,32,74,80,69,71,32,100,97,116,97,0,79,74,80,69,71,82,101,97,100,66,121,116,101,65,100,118,97,110,99,101,0,0,0,0,79,74,80,69,71,82,101,97,100,66,121,116,101,80,101,101,107,0,0,0,0,0,0,0,115,112,45,62,115,117,98,115,97,109,112,108,105,110,103,99,111,114,114,101,99,116,95,100,111,110,101,61,61,48,0,0,79,74,80,69,71,83,117,98,115,97,109,112,108,105,110,103,67,111,114,114,101,99,116,0,83,117,98,115,97,109,112,108,105,110,103,32,116,97,103,32,110,111,116,32,97,112,112,114,111,112,114,105,97,116,101,32,102,111,114,32,116,104,105,115,32,80,104,111,116,111,109,101,116,114,105,99,32,97,110,100,47,111,114,32,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,0,0,0,0,0,83,117,98,115,97,109,112,108,105,110,103,32,116,97,103,32,105,115,32,110,111,116,32,115,101,116,44,32,121,101,116,32,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,91,37,100,44,37,100,93,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,100,101,102,97,117,108,116,32,118,97,108,117,101,115,32,91,50,44,50,93,59,32,97,115,115,117,109,105,110,103,32,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,105,115,32,99,111,114,114,101,99,116,0,0,0,0,0,0,83,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,91,37,100,44,37,100,93,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,115,117,98,115,97,109,112,108,105,110,103,32,116,97,103,32,118,97,108,117,101,115,32,91,37,100,44,37,100,93,59,32,97,115,115,117,109,105,110,103,32,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,105,115,32,99,111,114,114,101,99,116,0,0,0,0,83,117,98,115,97,109,112,108,105,110,103,32,116,97,103,32,105,115,32,110,111,116,32,115,101,116,44,32,121,101,116,32,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,100,101,102,97,117,108,116,32,118,97,108,117,101,115,32,91,50,44,50,93,32,40,110,111,114,32,97,110,121,32,111,116,104,101,114,32,118,97,108,117,101,115,32,97,108,108,111,119,101,100,32,105,110,32,84,73,70,70,41,59,32,97,115,115,117,109,105,110,103,32,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,105,115,32,99,111,114,114,101,99,116,32,97,110,100,32,100,101,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,101,99,111,109,112,114,101,115,115,105,111,110,0,0,0,83,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,115,117,98,115,97,109,112,108,105,110,103,32,116,97,103,32,118,97,108,117,101,115,32,91,37,100,44,37,100,93,32,40,110,111,114,32,97,110,121,32,111,116,104,101,114,32,118,97,108,117,101,115,32,97,108,108,111,119,101,100,32,105,110,32,84,73,70,70,41,59,32,97,115,115,117,109,105,110,103,32,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,105,115,32,99,111,114,114,101,99,116,32,97,110,100,32,100,101,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,101,99,111,109,112,114,101,115,115,105,111,110,0,83,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,32,91,37,100,44,37,100,93,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,84,73,70,70,0,0,0,0,0,0,79,74,80,69,71,83,101,116,117,112,68,101,99,111,100,101,0,0,0,0,0,0,0,0,68,101,112,114,101,99,105,97,116,101,100,32,97,110,100,32,116,114,111,117,98,108,101,115,111,109,101,32,111,108,100,45,115,116,121,108,101,32,74,80,69,71,32,99,111,109,112,114,101,115,115,105,111,110,32,109,111,100,101,44,32,112,108,101,97,115,101,32,99,111,110,118,101,114,116,32,116,111,32,110,101,119,45,115,116,121,108,101,32,74,80,69,71,32,99,111,109,112,114,101,115,115,105,111,110,32,97,110,100,32,110,111,116,105,102,121,32,118,101,110,100,111,114,32,111,102,32,119,114,105,116,105,110,103,32,115,111,102,116,119,97,114,101,0,115,112,33,61,78,85,76,76,0,0,0,0,0,0,0,0,79,74,80,69,71,80,114,105,110,116,68,105,114,0,0,0,32,32,74,112,101,103,73,110,116,101,114,99,104,97,110,103,101,70,111,114,109,97,116,58,32,37,108,117,10,0,0,0,32,32,74,112,101,103,73,110,116,101,114,99,104,97,110,103,101,70,111,114,109,97,116,76,101,110,103,116,104,58,32,37,108,117,10,0,0,0,0,0,32,32,74,112,101,103,81,84,97,98,108,101,115,58,0,0,32,37,108,117,0,0,0,0,32,32,74,112,101,103,68,99,84,97,98,108,101,115,58,0,32,32,74,112,101,103,65,99,84,97,98,108,101,115,58,0,32,32,74,112,101,103,80,114,111,99,58,32,37,117,10,0,32,32,74,112,101,103,82,101,115,116,97,114,116,73,110,116,101,114,118,97,108,58,32,37,117,10,0,0,0,0,0,0,79,74,80,69,71,86,83,101,116,70,105,101,108,100,0,0,74,112,101,103,81,84,97,98,108,101,115,32,116,97,103,32,104,97,115,32,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,0,0,0,0,0,74,112,101,103,68,99,84,97,98,108,101,115,32,116,97,103,32,104,97,115,32,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,0,0,0,0,74,112,101,103,65,99,84,97,98,108,101,115,32,116,97,103,32,104,97,115,32,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,0,0,0,0,74,112,101,103,73,110,116,101,114,99,104,97,110,103,101,70,111,114,109,97,116,0,0,0,74,112,101,103,73,110,116,101,114,99,104,97,110,103,101,70,111,114,109,97,116,76,101,110,103,116,104,0,0,0,0,0,74,112,101,103,81,84,97,98,108,101,115,0,0,0,0,0,74,112,101,103,68,99,84,97,98,108,101,115,0,0,0,0,74,112,101,103,65,99,84,97,98,108,101,115,0,0,0,0,74,112,101,103,80,114,111,99,0,0,0,0,0,0,0,0,74,112,101,103,82,101,115,116,97,114,116,73,110,116,101,114,118],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+225281);allocate([97,108,0,0,0,0,0,34,37,115,34,58,32,66,97,100,32,109,111,100,101,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,111,112,101,110,46,99,0,0,0,0,0,0,84,73,70,70,67,108,105,101,110,116,79,112,101,110,0,0,37,115,58,32,79,117,116,32,111,102,32,109,101,109,111,114,121,32,40,84,73,70,70,32,115,116,114,117,99,116,117,114,101,41,0,0,0,0,0,0,79,110,101,32,111,102,32,116,104,101,32,99,108,105,101,110,116,32,112,114,111,99,101,100,117,114,101,115,32,105,115,32,78,85,76,76,32,112,111,105,110,116,101,114,46,0,0,0,67,97,110,110,111,116,32,114,101,97,100,32,84,73,70,70,32,104,101,97,100,101,114,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,84,73,70,70,32,104,101,97,100,101,114,0,0,0,0,0,0,0,78,111,116,32,97,32,84,73,70,70,32,102,105,108,101,44,32,98,97,100,32,109,97,103,105,99,32,110,117,109,98,101,114,32,37,100,32,40,48,120,37,120,41,0,0,0,0,0,78,111,116,32,97,32,84,73,70,70,32,102,105,108,101,44,32,98,97,100,32,118,101,114,115,105,111,110,32,110,117,109,98,101,114,32,37,100,32,40,48,120,37,120,41,0,0,0,78,111,116,32,97,32,84,73,70,70,32,102,105,108,101,44,32,98,97,100,32,66,105,103,84,73,70,70,32,111,102,102,115,101,116,115,105,122,101,32,37,100,32,40,48,120,37,120,41,0,0,0,0,0,0,0,78,111,116,32,97,32,84,73,70,70,32,102,105,108,101,44,32,98,97,100,32,66,105,103,84,73,70,70,32,117,110,117,115,101,100,32,37,100,32,40,48,120,37,120,41,0,0,0,40,116,111,102,102,95,116,41,116,105,102,45,62,116,105,102,95,115,105,122,101,61,61,110,0,0,0,0,0,0,0,0,80,97,99,107,66,105,116,115,68,101,99,111,100,101,0,0,68,105,115,99,97,114,100,105,110,103,32,37,108,117,32,98,121,116,101,115,32,116,111,32,97,118,111,105,100,32,98,117,102,102,101,114,32,111,118,101,114,114,117,110,0,0,0,0,84,101,114,109,105,110,97,116,105,110,103,32,80,97,99,107,66,105,116,115,68,101,99,111,100,101,32,100,117,101,32,116,111,32,108,97,99,107,32,111,102,32,100,97,116,97,46,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,102,111,114,32,115,99,97,110,108,105,110,101,32,37,108,117,0,0,0,0,0,0,0,0,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,80,73,88,65,82,76,79,71,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,112,105,120,97,114,108,111,103,46,99,0,0,84,73,70,70,73,110,105,116,80,105,120,97,114,76,111,103,0,0,0,0,0,0,0,0,13,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,48,158,3,0,0,0,0,0,22,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,48,158,3,0,0,0,0,0,77,101,114,103,105,110,103,32,80,105,120,97,114,76,111,103,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,80,105,120,97,114,76,111,103,32,115,116,97,116,101,32,98,108,111,99,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,105,120,97,114,76,111,103,86,83,101,116,70,105,101,108,100,0,0,0,0,0,0,0,90,76,105,98,32,101,114,114,111,114,58,32,37,115,0,0,115,112,32,33,61,32,48,0,80,105,120,97,114,76,111,103,67,108,101,97,110,117,112,0,80,105,120,97,114,76,111,103,69,110,99,111,100,101,0,0,37,100,32,98,105,116,32,105,110,112,117,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,105,110,32,80,105,120,97,114,76,111,103,0,0,90,76,105,98,32,99,97,110,110,111,116,32,100,101,97,108,32,119,105,116,104,32,98,117,102,102,101,114,115,32,116,104,105,115,32,115,105,122,101,0,69,110,99,111,100,101,114,32,101,114,114,111,114,58,32,37,115,0,0,0,0,0,0,0,80,105,120,97,114,76,111,103,80,111,115,116,69,110,99,111,100,101,0,0,0,0,0,0,115,112,32,33,61,32,78,85,76,76,0,0,0,0,0,0,80,105,120,97,114,76,111,103,80,114,101,69,110,99,111,100,101,0,0,0,0,0,0,0,80,105,120,97,114,76,111,103,83,101,116,117,112,69,110,99,111,100,101,0,0,0,0,0,80,105,120,97,114,76,111,103,32,99,111,109,112,114,101,115,115,105,111,110,32,99,97,110,39,116,32,104,97,110,100,108,101,32,37,100,32,98,105,116,32,108,105,110,101,97,114,32,101,110,99,111,100,105,110,103,115,0,0,0,0,0,0,0,49,46,50,46,56,0,0,0,37,115,0,0,0,0,0,0,80,105,120,97,114,76,111,103,68,101,99,111,100,101,0,0,68,101,99,111,100,105,110,103,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,44,32,37,115,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,32,40,115,104,111,114,116,32,37,108,117,32,98,121,116,101,115,41,0,0,0,0,0,0,0,115,116,114,105,100,101,32,37,108,117,32,105,115,32,110,111,116,32,97,32,109,117,108,116,105,112,108,101,32,111,102,32,115,97,109,112,108,101,32,99,111,117,110,116,44,32,37,108,117,44,32,100,97,116,97,32,116,114,117,110,99,97,116,101,100,46,0,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,98,105,116,115,47,115,97,109,112,108,101,58,32,37,100,0,0,0,0,0,80,105,120,97,114,76,111,103,80,114,101,68,101,99,111,100,101,0,0,0,0,0,0,0,80,105,120,97,114,76,111,103,83,101,116,117,112,68,101,99,111,100,101,0,0,0,0,0,80,105,120,97,114,76,111,103,32,99,111,109,112,114,101,115,115,105,111,110,32,99,97,110,39,116,32,104,97,110,100,108,101,32,98,105,116,115,32,100,101,112,116,104,47,100,97,116,97,32,102,111,114,109,97,116,32,99,111,109,98,105,110,97,116,105,111,110,32,40,100,101,112,116,104,58,32,37,100,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,112,32,33,61,32,48,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,112,114,101,100,105,99,116,46,99,0,0,0,84,73,70,70,80,114,101,100,105,99,116,111,114,73,110,105,116,0,0,0,0,0,0,0,61,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,66,0,0,0,192,162,3,0,0,0,0,0,0,0,0,0,77,101,114,103,105,110,103,32,80,114,101,100,105,99,116,111,114,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,0,0,0,84,73,70,70,80,114,101,100,105,99,116,111,114,67,108,101,97,110,117,112,0,0,0,0,40,99,99,37,40,98,112,115,42,115,116,114,105,100,101,41,41,61,61,48,0,0,0,0,102,112,68,105,102,102,0,0,115,112,32,33,61,32,78,85,76,76,0,0,0,0,0,0,80,114,101,100,105,99,116,111,114,69,110,99,111,100,101,84,105,108,101,0,0,0,0,0,115,112,45,62,101,110,99,111,100,101,112,102,117,110,99,32,33,61,32,78,85,76,76,0,115,112,45,62,101,110,99,111,100,101,116,105,108,101,32,33,61,32,78,85,76,76,0,0,79,117,116,32,111,102,32,109,101,109,111,114,121,32,97,108,108,111,99,97,116,105,110,103,32,37,108,100,32,98,121,116,101,32,116,101,109,112,32,98,117,102,102,101,114,46,0,0,114,111,119,115,105,122,101,32,62,32,48,0,0,0,0,0,40,99,99,48,37,114,111,119,115,105,122,101,41,61,61,48,0,0,0,0,0,0,0,0,80,114,101,100,105,99,116,111,114,69,110,99,111,100,101,82,111,119,0,0,0,0,0,0,115,112,45,62,101,110,99,111,100,101,114,111,119,32,33,61,32,78,85,76,76,0,0,0,40,99,99,37,40,52,42,115,116,114,105,100,101,41,41,61,61,48,0,0,0,0,0,0,104,111,114,68,105,102,102,51,50,0,0,0,0,0,0,0,40,99,99,37,40,50,42,115,116,114,105,100,101,41,41,61,61,48,0,0,0,0,0,0,104,111,114,68,105,102,102,49,54,0,0,0,0,0,0,0,40,99,99,37,115,116,114,105,100,101,41,61,61,48,0,0,104,111,114,68,105,102,102,56,0,0,0,0,0,0,0,0,80,114,101,100,105,99,116,111,114,83,101,116,117,112,0,0,72,111,114,105,122,111,110,116,97,108,32,100,105,102,102,101,114,101,110,99,105,110,103,32,34,80,114,101,100,105,99,116,111,114,34,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,119,105,116,104,32,37,100,45,98,105,116,32,115,97,109,112,108,101,115,0,0,0,70,108,111,97,116,105,110,103,32,112,111,105,110,116,32,34,80,114,101,100,105,99,116,111,114,34,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,119,105,116,104,32,37,100,32,100,97,116,97,32,102,111,114,109,97,116,0,0,0,0,34,80,114,101,100,105,99,116,111,114,34,32,118,97,108,117,101,32,37,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,0,102,112,65,99,99,0,0,0,115,119,97,98,72,111,114,65,99,99,51,50,0,0,0,0,115,119,97,98,72,111,114,65,99,99,49,54,0,0,0,0,80,114,101,100,105,99,116,111,114,68,101,99,111,100,101,84,105,108,101,0,0,0,0,0,115,112,45,62,100,101,99,111,100,101,116,105,108,101,32,33,61,32,78,85,76,76,0,0,40,111,99,99,48,37,114,111,119,115,105,122,101,41,61,61,48,0,0,0,0,0,0,0,115,112,45,62,100,101,99,111,100,101,112,102,117,110,99,32,33,61,32,78,85,76,76,0,80,114,101,100,105,99,116,111,114,68,101,99,111,100,101,82,111,119,0,0,0,0,0,0,115,112,45,62,100,101,99,111,100,101,114,111,119,32,33,61,32,78,85,76,76,0,0,0,104,111,114,65,99,99,51,50,0,0,0,0,0,0,0,0,104,111,114,65,99,99,49,54,0,0,0,0,0,0,0,0,104,111,114,65,99,99,56,0,32,32,80,114,101,100,105,99,116,111,114,58,32,0,0,0,110,111,110,101,32,0,0,0,104,111,114,105,122,111,110,116,97,108,32,100,105,102,102,101,114,101,110,99,105,110,103,32,0,0,0,0,0,0,0,0,102,108,111,97,116,105,110,103,32,112,111,105,110,116,32,112,114,101,100,105,99,116,111,114,32,0,0,0,0,0,0,0,37,117,32,40,48,120,37,120,41,10,0,0,0,0,0,0,80,114,101,100,105,99,116,111,114,86,83,101,116,70,105,101,108,100,0,0,0,0,0,0,115,112,45,62,118,115,101,116,112,97,114,101,110,116,32,33,61,32,78,85,76,76,0,0,80,114,101,100,105,99,116,111,114,86,71,101,116,70,105,101,108,100,0,0,0,0,0,0,115,112,45,62,118,103,101,116,112,97,114,101,110,116,32,33,61,32,78,85,76,76,0,0,80,114,101,100,105,99,116,111,114,0,0,0,0,0,0,0,84,73,70,70,82,101,97,100,69,110,99,111,100,101,100,83,116,114,105,112,0,0,0,0,37,108,117,58,32,83,116,114,105,112,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,0,0,0,0,0,0,0,73,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,0,0,0,0,0,0,0,0,84,73,70,70,70,105,108,108,83,116,114,105,112,0,0,0,73,110,118,97,108,105,100,32,115,116,114,105,112,32,98,121,116,101,32,99,111,117,110,116,32,37,108,108,117,44,32,115,116,114,105,112,32,37,108,117,0,0,0,0,0,0,0,0,82,101,97,100,32,101,114,114,111,114,32,111,110,32,115,116,114,105,112,32,37,108,117,59,32,103,111,116,32,37,108,108,117,32,98,121,116,101,115,44,32,101,120,112,101,99,116,101,100,32,37,108,108,117,0,0,68,97,116,97,32,98,117,102,102,101,114,32,116,111,111,32,115,109,97,108,108,32,116,111,32,104,111,108,100,32,115,116,114,105,112,32,37,108,117,0,84,73,70,70,82,101,97,100,69,110,99,111,100,101,100,84,105,108,101,0,0,0,0,0,37,108,117,58,32,84,105,108,101,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,84,73,70,70,70,105,108,108,84,105,108,101,0,0,0,0,37,108,108,117,58,32,73,110,118,97,108,105,100,32,116,105,108,101,32,98,121,116,101,32,99,111,117,110,116,44,32,116,105,108,101,32,37,108,117,0,68,97,116,97,32,98,117,102,102,101,114,32,116,111,111,32,115,109,97,108,108,32,116,111,32,104,111,108,100,32,116,105,108,101,32,37,108,117,0,0,40,116,105,102,45,62,116,105,102,95,102,108,97,103,115,38,84,73,70,70,95,78,79,82,69,65,68,82,65,87,41,61,61,48,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,114,101,97,100,46,99,0,0,0,0,0,0,84,73,70,70,82,101,97,100,66,117,102,102,101,114,83,101,116,117,112,0,0,0,0,0,73,110,118,97,108,105,100,32,98,117,102,102,101,114,32,115,105,122,101,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,100,97,116,97,32,98,117,102,102,101,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,0,0,0,0,0,0,0,0,40,99,99,32,38,32,49,41,32,61,61,32,48,0,0,0,95,84,73,70,70,83,119,97,98,49,54,66,105,116,68,97,116,97,0,0,0,0,0,0,40,99,99,32,37,32,51,41,32,61,61,32,48,0,0,0,95,84,73,70,70,83,119,97,98,50,52,66,105,116,68,97,116,97,0,0,0,0,0,0,40,99,99,32,38,32,51,41,32,61,61,32,48,0,0,0,95,84,73,70,70,83,119,97,98,51,50,66,105,116,68,97,116,97,0,0,0,0,0,0,40,99,99,32,38,32,55,41,32,61,61,32,48,0,0,0,95,84,73,70,70,83,119,97,98,54,52,66,105,116,68,97,116,97,0,0,0,0,0,0,70,105,108,101,32,110,111,116,32,111,112,101,110,32,102,111,114,32,114,101,97,100,105,110,103,0,0,0,0,0,0,0,67,97,110,32,110,111,116,32,114,101,97,100,32,116,105,108,101,115,32,102,114,111,109,32,97,32,115,116,114,105,112,112,101,100,32,105,109,97,103,101,0,0,0,0,0,0,0,0,67,97,110,32,110,111,116,32,114,101,97,100,32,115,99,97,110,108,105,110,101,115,32,102,114,111,109,32,97,32,116,105,108,101,100,32,105,109,97,103,101,0,0,0,0,0,0,0,84,73,70,70,82,101,97,100,82,97,119,84,105,108,101,49,0,0,0,0,0,0,0,0,83,101,101,107,32,101,114,114,111,114,32,97,116,32,114,111,119,32,37,108,117,44,32,99,111,108,32,37,108,117,44,32,116,105,108,101,32,37,108,117,0,0,0,0,0,0,0,0,82,101,97,100,32,101,114,114,111,114,32,97,116,32,114,111,119,32,37,108,117,44,32,99,111,108,32,37,108,117,59,32,103,111,116,32,37,108,108,117,32,98,121,116,101,115,44,32,101,120,112,101,99,116,101,100,32,37,108,108,117,0,0,0,82,101,97,100,32,101,114,114,111,114,32,97,116,32,114,111,119,32,37,108,117,44,32,99,111,108,32,37,108,117,44,32,116,105,108,101,32,37,108,117,59,32,103,111,116,32,37,108,108,117,32,98,121,116,101,115,44,32,101,120,112,101,99,116,101,100,32,37,108,108,117,0,84,73,70,70,82,101,97,100,82,97,119,83,116,114,105,112,49,0,0,0,0,0,0,0,83,101,101,107,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,44,32,115,116,114,105,112,32,37,108,117,0,0,0,82,101,97,100,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,59,32,103,111,116,32,37,108,108,117,32,98,121,116,101,115,44,32,101,120,112,101,99,116,101,100,32,37,108,108,117,0,0,0,0,0,0,0,82,101,97,100,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,44,32,115,116,114,105,112,32,37,108,117,59,32,103,111,116,32,37,108,108,117,32,98,121,116,101,115,44,32,101,120,112,101,99,116,101,100,32,37,108,108,117,0,0,0,0,84,73,70,70,67,111,109,112,117,116,101,83,116,114,105,112,0,0,0,0,0,0,0,0,37,108,117,58,32,83,97,109,112,108,101,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,0,0,0,0,0,0,84,73,70,70,78,117,109,98,101,114,79,102,83,116,114,105,112,115,0,0,0,0,0,0,84,73,70,70,86,83,116,114,105,112,83,105,122,101,54,52,0,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,116,100,95,115,97,109,112,108,101,115,112,101,114,112,105,120,101,108,32,118,97,108,117,101,0,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,89,67,98,67,114,32,115,117,98,115,97,109,112,108,105,110,103,32,40,37,100,120,37,100,41,0,0,0,0,0,0,0,84,73,70,70,86,83,116,114,105,112,83,105,122,101,0,0,73,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,0,0,0,0,0,0,0,0,84,73,70,70,83,116,114,105,112,83,105,122,101,0,0,0,84,73,70,70,83,99,97,110,108,105,110,101,83,105,122,101,54,52,0,0,0,0,0,0,73,110,118,97,108,105,100,32,89,67,98,67,114,32,115,117,98,115,97,109,112,108,105,110,103,0,0,0,0,0,0,0,84,73,70,70,83,99,97,110,108,105,110,101,83,105,122,101,0,0,0,0,0,0,0,0,73,110,116,101,103,101,114,32,97,114,105,116,104,109,101,116,105,99,32,111,118,101,114,102,108,111,119,0,0,0,0,0,0,128,64,192,32,160,96,224,16,144,80,208,48,176,112,240,8,136,72,200,40,168,104,232,24,152,88,216,56,184,120,248,4,132,68,196,36,164,100,228,20,148,84,212,52,180,116,244,12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,3,131,67,195,35,163,99,227,19,147,83,211,51,179,115,243,11,139,75,203,43,171,107,235,27,155,91,219,59,187,123,251,7,135,71,199,39,167,103,231,23,151,87,215,55,183,119,247,15,143,79,207,47,175,111,239,31,159,95,223,63,191,127,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,84,104,117,110,100,101,114,68,101,99,111,100,101,82,111,119,0,0,0,0,0,0,0,0,70,114,97,99,116,105,111,110,97,108,32,115,99,97,110,108,105,110,101,115,32,99,97,110,110,111,116,32,98,101,32,114,101,97,100,0,0,0,0,0,84,104,117,110,100,101,114,68,101,99,111,100,101,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,253,255,255,255,254,255,255,255,255,255,255,255,37,115,32,100,97,116,97,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,32,40,37,108,108,117,32,33,61,32,37,108,108,117,41,0,0,78,111,116,32,101,110,111,117,103,104,0,0,0,0,0,0,84,111,111,32,109,117,99,104,0,0,0,0,0,0,0,0,84,104,117,110,100,101,114,83,101,116,117,112,68,101,99,111,100,101,0,0,0,0,0,0,87,114,111,110,103,32,98,105,116,115,112,101,114,115,97,109,112,108,101,32,118,97,108,117,101,32,40,37,100,41,44,32,84,104,117,110,100,101,114,32,100,101,99,111,100,101,114,32,111,110,108,121,32,115,117,112,112,111,114,116,115,32,52,98,105,116,115,32,112,101,114,32,115,97,109,112,108,101,46,0,37,108,117,58,32,67,111,108,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,0,37,108,117,58,32,82,111,119,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,0,37,108,117,58,32,68,101,112,116,104,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,0,0,0,0,0,0,0,37,108,117,58,32,83,97,109,112,108,101,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,0,0,0,0,0,0,84,73,70,70,78,117,109,98,101,114,79,102,84,105,108,101,115,0,0,0,0,0,0,0,84,73,70,70,84,105,108,101,82,111,119,83,105,122,101,0,73,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,0,0,0,0,0,0,0,0,84,73,70,70,86,84,105,108,101,83,105,122,101,54,52,0,73,110,118,97,108,105,100,32,89,67,98,67,114,32,115,117,98,115,97,109,112,108,105,110,103,32,40,37,100,120,37,100,41,0,0,0,0,0,0,0,84,73,70,70,84,105,108,101,83,105,122,101,0,0,0,0,0,0,0,0,0,0,0,0,84,73,70,70,87,114,105,116,101,83,99,97,110,108,105,110,101,0,0,0,0,0,0,0,67,97,110,32,110,111,116,32,99,104,97,110,103,101,32,34,73,109,97,103,101,76,101,110,103,116,104,34,32,119,104,101,110,32,117,115,105,110,103,32,115,101,112,97,114,97,116,101,32,112,108,97,110,101,115,0,37,108,117,58,32,83,97,109,112,108,101,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,0,0,0,0,0,0,70,105,108,101,32,110,111,116,32,111,112,101,110,32,102,111,114,32,119,114,105,116,105,110,103,0,0,0,0,0,0,0,67,97,110,32,110,111,116,32,119,114,105,116,101,32,116,105,108,101,115,32,116,111,32,97,32,115,116,114,105,112,112,101,100,32,105,109,97,103,101,0,67,97,110,32,110,111,116,32,119,114,105,116,101,32,115,99,97,110,108,105,110,101,115,32,116,111,32,97,32,116,105,108,101,100,32,105,109,97,103,101,0,0,0,0,0,0,0,0,77,117,115,116,32,115,101,116,32,34,73,109,97,103,101,87,105,100,116,104,34,32,98,101,102,111,114,101,32,119,114,105,116,105,110,103,32,100,97,116,97,0,0,0,0,0,0,0,77,117,115,116,32,115,101,116,32,34,80,108,97,110,97,114,67,111,110,102,105,103,117,114,97,116,105,111,110,34,32,98,101,102,111,114,101,32,119,114,105,116,105,110,103,32,100,97,116,97,0,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,37,115,32,97,114,114,97,121,115,0,0,116,105,108,101,0,0,0,0,115,116,114,105,112,0,0,0,84,73,70,70,87,114,105,116,101,66,117,102,102,101,114,83,101,116,117,112,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,111,117,116,112,117,116,32,98,117,102,102,101,114,0,0,0,0,0,0,116,100,45,62,116,100,95,110,115,116,114,105,112,115,32,62,32,48,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,119,114,105,116,101,46,99,0,0,0,0,0,84,73,70,70,65,112,112,101,110,100,84,111,83,116,114,105,112,0,0,0,0,0,0,0,83,101,101,107,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,0,0,0,0,0,0,77,97,120,105,109,117,109,32,84,73,70,70,32,102,105,108,101,32,115,105,122,101,32,101,120,99,101,101,100,101,100,0,87,114,105,116,101,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,0,0,0,0,0,116,100,45,62,116,100,95,112,108,97,110,97,114,99,111,110,102,105,103,32,61,61,32,80,76,65,78,65,82,67,79,78,70,73,71,95,67,79,78,84,73,71,0,0,0,0,0,0,84,73,70,70,71,114,111,119,83,116,114,105,112,115,0,0,78,111,32,115,112,97,99,101,32,116,111,32,101,120,112,97,110,100,32,115,116,114,105,112,32,97,114,114,97,121,115,0,40,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,68,69,70,76,65,84,69,41,32,124,124,32,40,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,65,68,79,66,69,95,68,69,70,76,65,84,69,41,0,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,84,73,70,70,52,92,116,105,102,95,122,105,112,46,99,0,0,0,0,0,0,0,84,73,70,70,73,110,105,116,90,73,80,0,0,0,0,0,21,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,1,0,168,177,3,0,0,0,0,0,0,0,0,0,77,101,114,103,105,110,103,32,68,101,102,108,97,116,101,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,0,0,0,0,0,78,111,32,115,112,97,99,101,32,102,111,114,32,90,73,80,32,115,116,97,116,101,32,98,108,111,99,107,0,0,0,0,115,112,32,33,61,32,48,0,90,73,80,67,108,101,97,110,117,112,0,0,0,0,0,0,115,112,32,33,61,32,78,85,76,76,0,0,0,0,0,0,90,73,80,69,110,99,111,100,101,0,0,0,0,0,0,0,115,112,45,62,115,116,97,116,101,32,61,61,32,90,83,84,65,84,69,95,73,78,73,84,95,69,78,67,79,68,69,0,69,110,99,111,100,101,114,32,101,114,114,111,114,58,32,37,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,73,80,80,111,115,116,69,110,99,111,100,101,0,0,0,90,76,105,98,32,101,114,114,111,114,58,32,37,115,0,0,90,73,80,80,114,101,69,110,99,111,100,101,0,0,0,0,90,73,80,83,101,116,117,112,69,110,99,111,100,101,0,0,49,46,50,46,56,0,0,0,37,115,0,0,0,0,0,0,90,73,80,68,101,99,111,100,101,0,0,0,0,0,0,0,115,112,45,62,115,116,97,116,101,32,61,61,32,90,83,84,65,84,69,95,73,78,73,84,95,68,69,67,79,68,69,0,68,101,99,111,100,105,110,103,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,44,32,37,115,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,32,40,115,104,111,114,116,32,37,108,117,32,98,121,116,101,115,41,0,0,0,0,0,0,0,90,73,80,80,114,101,68,101,99,111,100,101,0,0,0,0,90,73,80,83,101,116,117,112,68,101,99,111,100,101,0,0,90,73,80,86,83,101,116,70,105,101,108,100,0,0,0,0,112,95,110,98,95,98,121,116,101,115,32,62,32,48,32,38,38,32,112,95,110,98,95,98,121,116,101,115,32,60,61,32,115,105,122,101,111,102,40,79,80,74,95,85,73,78,84,51,50,41,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,92,99,105,111,46,99,0,0,0,0,0,0,0,0,111,112,106,95,119,114,105,116,101,95,98,121,116,101,115,95,76,69,0,0,0,0,0,0,111,112,106,95,114,101,97,100,95,98,121,116,101,115,95,76,69,0,0,0,0,0,0,0,83,116,114,101,97,109,32,114,101,97,99,104,101,100,32,105,116,115,32,101,110,100,32,33,10,0,0,0,0,0,0,0,69,114,114,111,114,32,111,110,32,119,114,105,116,105,110,103,32,115,116,114,101,97,109,33,10,0,0,0,0,0,0,0,112,95,115,105,122,101,32,62,61,32,48,0,0,0,0,0,111,112,106,95,115,116,114,101,97,109,95,114,101,97,100,95,115,107,105,112,0,0,0,0,83,116,114,101,97,109,32,101,114,114,111,114,33,10,0,0,112,95,115,116,114,101,97,109,45,62,109,95,98,121,116,101,95,111,102,102,115,101,116,32,62,61,32,48,0,0,0,0,111,112,106,95,115,116,114,101,97,109,95,103,101,116,95,110,117,109,98,101,114,95,98,121,116,101,95,108,101,102,116,0,112,95,115,116,114,101,97,109,45,62,109,95,117,115,101,114,95,100,97,116,97,95,108,101,110,103,116,104,32,62,61,32,40,79,80,74,95,85,73,78,84,54,52,41,112,95,115,116,114,101,97,109,45,62,109,95,98,121,116,101,95,111,102,102,115,101,116,0,0,0,0,0,111,112,106,95,115,116,114,101,97,109,95,115,107,105,112,0,111,112,106,95,115,116,114,101,97,109,95,115,101,101,107,0,0,0,0,0,0,0,240,63,0,0,0,0,0,0,248,63,0,0,0,0,0,0,6,64,0,0,0,0,0,128,21,64,92,143,194,245,40,92,37,64,215,163,112,61,10,87,53,64,246,40,92,143,194,85,69,64,133,235,81,184,30,85,85,64,102,102,102,102,102,86,101,64,205,204,204,204,204,84,117,64,207,247,83,227,165,155,240,63,70,182,243,253,212,120,249,63,39,49,8,172,28,90,7,64,29,90,100,59,223,207,22,64,41,92,143,194,245,168,38,64,164,112,61,10,215,163,54,64,0,0,0,0,0,160,70,64,31,133,235,81,184,158,86,64,205,204,204,204,204,156,102,64,0,0,0,0,0,0,0,0,207,247,83,227,165,155,240,63,70,182,243,253,212,120,249,63,39,49,8,172,28,90,7,64,29,90,100,59,223,207,22,64,41,92,143,194,245,168,38,64,164,112,61,10,215,163,54,64,0,0,0,0,0,160,70,64,31,133,235,81,184,158,86,64,205,204,204,204,204,156,102,64,0,0,0,0,0,0,0,0,173,250,92,109,197,254,230,63,86,125,174,182,98,127,237,63,199,75,55,137,65,96,249,63,242,210,77,98,16,88,8,64,250,126,106,188,116,19,24,64,133,235,81,184,30,5,40,64,0,0,0,0,0,0,56,64,92,143,194,245,40,252,71,64,236,81,184,30,133,251,87,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,113,61,10,215,163,112,255,63,104,145,237,124,63,181,16,64,117,147,24,4,86,206,32,64,102,102,102,102,102,230,48,64,236,81,184,30,133,235,64,64,92,143,194,245,40,236,80,64,154,153,153,153,153,233,96,64,154,153,153,153,153,233,112,64,51,51,51,51,51,231,128,64,147,24,4,86,14,45,0,64,182,243,253,212,120,233,15,64,246,40,92,143,194,181,32,64,10,215,163,112,61,10,49,64,195,245,40,92,143,34,65,64,184,30,133,235,81,40,81,64,154,153,153,153,153,41,97,64,154,153,153,153,153,41,113,64,0,0,0,0,0,40,129,64,0,0,0,0,0,0,0,0,147,24,4,86,14,45,0,64,182,243,253,212,120,233,15,64,246,40,92,143,194,181,32,64,10,215,163,112,61,10,49,64,195,245,40,92,143,34,65,64,184,30,133,235,81,40,81,64,154,153,153,153,153,41,97,64,154,153,153,153,153,41,113,64,0,0,0,0,0,40,129,64,0,0,0,0,0,0,0,0,164,112,61,10,215,163,0,64,236,81,184,30,133,235,14,64,119,190,159,26,47,157,32,64,174,71,225,122,20,46,49,64,123,20,174,71,225,90,65,64,246,40,92,143,194,101,81,64,154,153,153,153,153,105,97,64,154,153,153,153,153,105,113,64,154,153,153,153,153,105,129,64,0,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,97,100,100,32,97,32,110,101,119,32,118,97,108,105,100,97,116,105,111,110,32,112,114,111,99,101,100,117,114,101,10,0,0,0,0,85,110,97,98,108,101,32,116,111,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,105,109,97,103,101,46,10,0,0,0,112,95,105,109,97,103,101,95,115,114,99,32,33,61,32,48,48,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,92,105,109,97,103,101,46,99,0,0,0,0,0,0,111,112,106,95,99,111,112,121,95,105,109,97,103,101,95,104,101,97,100,101,114,0,0,0,112,95,105,109,97,103,101,95,100,101,115,116,32,33,61,32,48,48,0,0,0,0,0,0,98,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,47,111,112,106,95,105,110,116,109,97,116,104,46,104,0,0,0,0,0,0,0,0,111,112,106,95,105,110,116,95,99,101,105,108,100,105,118,0,4,0,0,0,67,80,82,76,0,0,0,0,0,0,0,0,76,82,67,80,0,0,0,0,3,0,0,0,80,67,82,76,0,0,0,0,1,0,0,0,82,76,67,80,0,0,0,0,2,0,0,0,82,80,67,76,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,144,255,0,0,12,0,0,0,34,0,0,0,82,255,0,0,20,0,0,0,35,0,0,0,83,255,0,0,20,0,0,0,36,0,0,0,94,255,0,0,20,0,0,0,37,0,0,0,92,255,0,0,20,0,0,0,38,0,0,0,93,255,0,0,20,0,0,0,39,0,0,0,95,255,0,0,20,0,0,0,40,0,0,0,81,255,0,0,2,0,0,0,41,0,0,0,85,255,0,0,4,0,0,0,42,0,0,0,87,255,0,0,4,0,0,0,43,0,0,0,88,255,0,0,16,0,0,0,44,0,0,0,96,255,0,0,4,0,0,0,45,0,0,0,97,255,0,0,16,0,0,0,46,0,0,0,145,255,0,0,0,0,0,0,0,0,0,0,99,255,0,0,4,0,0,0,47,0,0,0,100,255,0,0,20,0,0,0,48,0,0,0,116,255,0,0,20,0,0,0,49,0,0,0,120,255,0,0,4,0,0,0,50,0,0,0,117,255,0,0,20,0,0,0,51,0,0,0,119,255,0,0,20,0,0,0,52,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,111,112,106,95,109,97,116,114,105,120,95,105,110,118,101,114,115,105,111,110,95,102,40,108,84,109,112,66,117,102,44,40,116,99,112,45,62,109,95,109,99,116,95,100,101,99,111,100,105,110,103,95,109,97,116,114,105,120,41,44,105,109,97,103,101,45,62,110,117,109,99,111,109,112,115,41,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,92,106,50,107,46,99,0,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,115,101,116,117,112,95,101,110,99,111,100,101,114,0,0,0,116,99,99,112,45,62,110,117,109,114,101,115,111,108,117,116,105,111,110,115,32,62,32,48,0,0,0,0,0,0,0,0,114,101,115,95,115,112,101,99,62,48,0,0,0,0,0,0,112,95,106,50,107,32,33,61,32,48,48,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,104,101,97,100,101,114,0,0,0,0,0,112,95,115,116,114,101,97,109,32,33,61,32,48,48,0,0,112,95,109,97,110,97,103,101,114,32,33,61,32,48,48,0,112,95,116,99,112,32,33,61,32,48,48,0,0,0,0,0,111,112,106,95,106,50,107,95,115,101,116,117,112,95,109,99,116,95,101,110,99,111,100,105,110,103,0,0,0,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,8,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,116,105,108,101,95,104,101,97,100,101,114,0,0,0,0,0,0,0,0,83,116,114,101,97,109,32,116,111,111,32,115,104,111,114,116,10,0,0,0,0,0,0,0,77,97,114,107,101,114,32,105,115,32,110,111,116,32,99,111,109,112,108,105,97,110,116,32,119,105,116,104,32,105,116,115,32,112,111,115,105,116,105,111,110,10,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,114,101,97,100,32,104,101,97,100,101,114,10,0,0,0,0,0,0,0,78,111,116,32,115,117,114,101,32,104,111,119,32,116,104,97,116,32,104,97,112,112,101,110,101,100,46,10,0,0,0,0,70,97,105,108,32,116,111,32,114,101,97,100,32,116,104,101,32,99,117,114,114,101,110,116,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,32,40,37,35,120,41,10,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,97,100,100,32,116,108,32,109,97,114,107,101,114,10,0,0,0,0,0,67,97,110,110,111,116,32,100,101,99,111,100,101,32,116,105,108,101,44,32,109,101,109,111,114,121,32,101,114,114,111,114,10,0,0,0,0,0,0,0,72,101,97,100,101,114,32,111,102,32,116,105,108,101,32,37,100,32,47,32,37,100,32,104,97,115,32,98,101,101,110,32,114,101,97,100,46,10,0,0,111,112,106,95,106,50,107,95,100,101,99,111,100,101,95,116,105,108,101,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,100,101,99,111,100,101,46,10,0,0,0,0,0,0,83,116,114,101,97,109,32,116,111,111,32,115,104,111,114,116,44,32,101,120,112,101,99,116,101,100,32,83,79,84,10,0,78,101,101,100,32,116,111,32,100,101,99,111,100,101,32,116,104,101,32,109,97,105,110,32,104,101,97,100,101,114,32,98,101,102,111,114,101,32,98,101,103,105,110,32,116,111,32,100,101,99,111,100,101,32,116,104,101,32,114,101,109,97,105,110,105,110,103,32,99,111,100,101,115,116,114,101,97,109,0,0,78,111,32,100,101,99,111,100,101,100,32,97,114,101,97,32,112,97,114,97,109,101,116,101,114,115,44,32,115,101,116,32,116,104,101,32,100,101,99,111,100,101,100,32,97,114,101,97,32,116,111,32,116,104,101,32,119,104,111,108,101,32,105,109,97,103,101,10,0,0,0,0,112,95,115,116,97,114,116,95,120,32,62,61,32,48,0,0,111,112,106,95,106,50,107,95,115,101,116,95,100,101,99,111,100,101,95,97,114,101,97,0,112,95,115,116,97,114,116,95,121,32,62,61,32,48,0,0,76,101,102,116,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,97,114,101,97,32,40,114,101,103,105,111,110,95,120,48,61,37,100,41,32,105,115,32,111,117,116,115,105,100,101,32,116,104,101,32,105,109,97,103,101,32,97,114,101,97,32,40,88,115,105,122,61,37,100,41,46,10,0,0,76,101,102,116,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,97,114,101,97,32,40,114,101,103,105,111,110,95,120,48,61,37,100,41,32,105,115,32,111,117,116,115,105,100,101,32,116,104,101,32,105,109,97,103,101,32,97,114,101,97,32,40,88,79,115,105,122,61,37,100,41,46,10,0,85,112,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,97,114,101,97,32,40,114,101,103,105,111,110,95,121,48,61,37,100,41,32,105,115,32,111,117,116,115,105,100,101,32,116,104,101,32,105,109,97,103,101,32,97,114,101,97,32,40,89,115,105,122,61,37,100,41,46,10,0,0,0,0,85,112,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,97,114,101,97,32,40,114,101,103,105,111,110,95,121,48,61,37,100,41,32,105,115,32,111,117,116,115,105,100,101,32,116,104,101,32,105,109,97,103,101,32,97,114,101,97,32,40,89,79,115,105,122,61,37,100,41,46,10,0,0,0,40,79,80,74,95,85,73,78,84,51,50,41,112,95,101,110,100,95,120,32,62,32,48,0,40,79,80,74,95,85,73,78,84,51,50,41,112,95,101,110,100,95,121,32,62,32,48,0,82,105,103,104,116,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,97,114,101,97,32,40,114,101,103,105,111,110,95,120,49,61,37,100,41,32,105,115,32,111,117,116,115,105,100,101,32,116,104,101,32,105,109,97,103,101,32,97,114,101,97,32,40,88,79,115,105,122,61,37,100,41,46,10,0,0,0,0,0,0,0,0,82,105,103,104,116,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,97,114,101,97,32,40,114,101,103,105,111,110,95,120,49,61,37,100,41,32,105,115,32,111,117,116,115,105,100,101,32,116,104,101,32,105,109,97,103,101,32,97,114,101,97,32,40,88,115,105,122,61,37,100,41,46,10,0,66,111,116,116,111,109,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,97,114,101,97,32,40,114,101,103,105,111,110,95,121,49,61,37,100,41,32,105,115,32,111,117,116,115,105,100,101,32,116,104,101,32,105,109,97,103,101,32,97,114,101,97,32,40,89,79,115,105,122,61,37,100,41,46,10,0,0,0,0,0,0,0,66,111,116,116,111,109,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,97,114,101,97,32,40,114,101,103,105,111,110,95,121,49,61,37,100,41,32,105,115,32,111,117,116,115,105,100,101,32,116,104,101],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+235521);allocate([32,105,109,97,103,101,32,97,114,101,97,32,40,89,115,105,122,61,37,100,41,46,10,0,0,0,0,0,0,0,0,83,105,122,101,32,120,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,99,111,109,112,111,110,101,110,116,32,105,109,97,103,101,32,105,115,32,105,110,99,111,114,114,101,99,116,32,40,99,111,109,112,91,37,100,93,46,119,61,37,100,41,46,10,0,0,0,0,83,105,122,101,32,121,32,111,102,32,116,104,101,32,100,101,99,111,100,101,100,32,99,111,109,112,111,110,101,110,116,32,105,109,97,103,101,32,105,115,32,105,110,99,111,114,114,101,99,116,32,40,99,111,109,112,91,37,100,93,46,104,61,37,100,41,46,10,0,0,0,0,83,101,116,116,105,110,103,32,100,101,99,111,100,105,110,103,32,97,114,101,97,32,116,111,32,37,100,44,37,100,44,37,100,44,37,100,10,0,0,0,87,114,111,110,103,32,102,108,97,103,10,0,0,0,0,0,91,68,69,86,93,32,68,117,109,112,32,97,110,32,105,109,97,103,101,95,104,101,97,100,101,114,32,115,116,114,117,99,116,32,123,10,0,0,0,0,73,109,97,103,101,32,105,110,102,111,32,123,10,0,0,0,37,115,32,120,48,61,37,100,44,32,121,48,61,37,100,10,0,0,0,0,0,0,0,0,37,115,32,120,49,61,37,100,44,32,121,49,61,37,100,10,0,0,0,0,0,0,0,0,37,115,32,110,117,109,99,111,109,112,115,61,37,100,10,0,37,115,9,32,99,111,109,112,111,110,101,110,116,32,37,100,32,123,10,0,0,0,0,0,37,115,125,10,0,0,0,0,125,10,0,0,0,0,0,0,91,68,69,86,93,32,68,117,109,112,32,97,110,32,105,109,97,103,101,95,99,111,109,112,95,104,101,97,100,101,114,32,115,116,114,117,99,116,32,123,10,0,0,0,0,0,0,0,37,115,32,100,120,61,37,100,44,32,100,121,61,37,100,10,0,0,0,0,0,0,0,0,37,115,32,112,114,101,99,61,37,100,10,0,0,0,0,0,37,115,32,115,103,110,100,61,37,100,10,0,0,0,0,0,87,101,32,110,101,101,100,32,97,110,32,105,109,97,103,101,32,112,114,101,118,105,111,117,115,108,121,32,99,114,101,97,116,101,100,46,10,0,0,0,84,105,108,101,32,105,110,100,101,120,32,112,114,111,118,105,100,101,100,32,98,121,32,116,104,101,32,117,115,101,114,32,105,115,32,105,110,99,111,114,114,101,99,116,32,37,100,32,40,109,97,120,32,61,32,37,100,41,32,10,0,0,0,0,82,101,115,111,108,117,116,105,111,110,32,102,97,99,116,111,114,32,105,115,32,103,114,101,97,116,101,114,32,116,104,97,110,32,116,104,101,32,109,97,120,105,109,117,109,32,114,101,115,111,108,117,116,105,111,110,32,105,110,32,116,104,101,32,99,111,109,112,111,110,101,110,116,46,10,0,0,0,0,0,111,112,106,95,106,50,107,95,101,110,99,111,100,101,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,101,110,99,111,100,101,32,97,108,108,32,116,105,108,101,115,10,0,0,111,112,106,95,106,50,107,95,115,116,97,114,116,95,99,111,109,112,114,101,115,115,0,0,69,114,114,111,114,32,119,104,105,108,101,32,111,112,106,95,106,50,107,95,112,114,101,95,119,114,105,116,101,95,116,105,108,101,32,119,105,116,104,32,116,105,108,101,32,105,110,100,101,120,32,61,32,37,100,10,0,0,0,0,0,0,0,0,69,114,114,111,114,32,119,104,105,108,101,32,111,112,106,95,106,50,107,95,112,111,115,116,95,119,114,105,116,101,95,116,105,108,101,32,119,105,116,104,32,116,105,108,101,32,105,110,100,101,120,32,61,32,37,100,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,117,112,100,97,116,101,95,114,97,116,101,115,0,0,0,0,111,112,106,95,106,50,107,95,103,101,116,95,83,80,67,111,100,95,83,80,67,111,99,95,115,105,122,101,0,0,0,0,112,95,116,105,108,101,95,110,111,32,60,32,40,108,95,99,112,45,62,116,119,32,42,32,108,95,99,112,45,62,116,104,41,0,0,0,0,0,0,0,112,95,99,111,109,112,95,110,111,32,60,32,112,95,106,50,107,45,62,109,95,112,114,105,118,97,116,101,95,105,109,97,103,101,45,62,110,117,109,99,111,109,112,115,0,0,0,0,111,112,106,95,106,50,107,95,99,114,101,97,116,101,95,116,99,100,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,99,114,101,97,116,101,32,84,105,108,101,32,67,111,100,101,114,10,0,111,112,106,95,106,50,107,95,103,101,116,95,101,110,100,95,104,101,97,100,101,114,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,109,99,116,95,100,97,116,97,95,103,114,111,117,112,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,119,114,105,116,101,32,77,67,79,32,109,97,114,107,101,114,10,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,119,114,105,116,101,32,77,67,67,32,109,97,114,107,101,114,10,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,119,114,105,116,101,32,77,67,84,32,109,97,114,107,101,114,10,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,119,114,105,116,101,32,67,66,68,32,109,97,114,107,101,114,10,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,99,111,109,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,119,114,105,116,101,32,116,104,101,32,67,79,77,32,109,97,114,107,101,114,10,0,0,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,114,101,103,105,111,110,115,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,112,111,99,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,119,114,105,116,101,32,80,79,67,32,109,97,114,107,101,114,10,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,112,111,99,95,105,110,95,109,101,109,111,114,121,0,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,116,108,109,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,119,114,105,116,101,32,84,76,77,32,109,97,114,107,101,114,10,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,113,99,100,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,119,114,105,116,101,32,81,67,68,32,109,97,114,107,101,114,10,0,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,81,67,68,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,83,81,99,100,95,83,81,99,99,0,112,95,116,105,108,101,95,110,111,32,60,32,108,95,99,112,45,62,116,119,32,42,32,108,95,99,112,45,62,116,104,0,112,95,99,111,109,112,95,110,111,32,60,112,95,106,50,107,45,62,109,95,112,114,105,118,97,116,101,95,105,109,97,103,101,45,62,110,117,109,99,111,109,112,115,0,0,0,0,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,83,81,99,100,32,83,81,99,99,32,101,108,101,109,101,110,116,10,0,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,103,101,116,95,83,81,99,100,95,83,81,99,99,95,115,105,122,101,0,0,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,99,111,100,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,119,114,105,116,101,32,67,79,68,32,109,97,114,107,101,114,10,0,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,67,79,68,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,83,80,67,111,100,95,83,80,67,111,99,0,0,0,0,0,0,0,112,95,99,111,109,112,95,110,111,32,60,40,112,95,106,50,107,45,62,109,95,112,114,105,118,97,116,101,95,105,109,97,103,101,45,62,110,117,109,99,111,109,112,115,41,0,0,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,83,80,67,111,100,32,83,80,67,111,99,32,101,108,101,109,101,110,116,10,0,0,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,115,105,122,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,102,111,114,32,116,104,101,32,83,73,90,32,109,97,114,107,101,114,10,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,115,111,99,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,105,110,105,116,95,105,110,102,111,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,99,97,108,99,117,108,97,116,101,95,116,112,0,0,0,0,105,109,97,103,101,32,33,61,32,48,48,0,0,0,0,0,116,105,108,101,110,111,32,60,32,40,99,112,45,62,116,119,32,42,32,99,112,45,62,116,104,41,0,0,0,0,0,0,111,112,106,95,106,50,107,95,103,101,116,95,110,117,109,95,116,112,0,0,0,0,0,0,112,105,110,111,32,60,32,40,99,112,45,62,116,99,112,115,91,116,105,108,101,110,111,93,46,110,117,109,112,111,99,115,32,43,32,49,41,0,0,0,116,99,112,32,33,61,32,48,48,0,0,0,0,0,0,0,115,116,114,108,101,110,40,112,114,111,103,41,32,62,32,48,0,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,109,99,116,95,118,97,108,105,100,97,116,105,111,110,0,0,111,112,106,95,106,50,107,95,101,110,99,111,100,105,110,103,95,118,97,108,105,100,97,116,105,111,110,0,0,0,0,0,78,117,109,98,101,114,32,111,102,32,114,101,115,111,108,117,116,105,111,110,115,32,105,115,32,116,111,111,32,104,105,103,104,32,105,110,32,99,111,109,112,97,114,105,115,111,110,32,116,111,32,116,104,101,32,115,105,122,101,32,111,102,32,116,105,108,101,115,10,0,0,0,111,112,106,95,106,50,107,95,115,101,116,117,112,95,101,110,100,95,99,111,109,112,114,101,115,115,0,0,0,0,0,0,111,112,106,95,106,50,107,95,100,101,115,116,114,111,121,95,104,101,97,100,101,114,95,109,101,109,111,114,121,0,0,0,111,112,106,95,106,50,107,95,101,110,100,95,101,110,99,111,100,105,110,103,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,101,112,99,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,117,112,100,97,116,101,100,95,116,108,109,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,101,111,99,0,0,0,0,0,0,0,112,95,106,50,107,45,62,109,95,115,112,101,99,105,102,105,99,95,112,97,114,97,109,46,109,95,101,110,99,111,100,101,114,46,109,95,101,110,99,111,100,101,100,95,116,105,108,101,95,100,97,116,97,0,0,0,111,112,106,95,106,50,107,95,112,111,115,116,95,119,114,105,116,101,95,116,105,108,101,0,83,105,122,101,32,109,105,115,109,97,116,99,104,32,98,101,116,119,101,101,110,32,116,105,108,101,32,100,97,116,97,32,97,110,100,32,115,101,110,116,32,100,97,116,97,46,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,115,111,100,0,0,0,0,0,0,0,67,97,110,110,111,116,32,101,110,99,111,100,101,32,116,105,108,101,10,0,0,0,0,0,111,112,106,95,106,50,107,95,119,114,105,116,101,95,115,111,116,0,0,0,0,0,0,0,84,104,101,32,103,105,118,101,110,32,116,105,108,101,32,105,110,100,101,120,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,46,0,0,0,0,116,105,108,101,32,110,117,109,98,101,114,32,37,100,32,47,32,37,100,10,0,0,0,0,111,112,106,95,106,50,107,95,115,101,116,117,112,95,100,101,99,111,100,105,110,103,95,116,105,108,101,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,100,101,99,111,100,101,32,111,110,101,32,116,105,108,101,10,0,0,0,80,114,111,98,108,101,109,32,119,105,116,104,32,115,101,101,107,32,102,117,110,99,116,105,111,110,10,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,100,101,99,111,100,101,32,116,105,108,101,32,37,100,47,37,100,10,0,84,105,108,101,32,37,100,47,37,100,32,104,97,115,32,98,101,101,110,32,100,101,99,111,100,101,100,46,10,0,0,0,73,109,97,103,101,32,100,97,116,97,32,104,97,115,32,98,101,101,110,32,117,112,100,97,116,101,100,32,119,105,116,104,32,116,105,108,101,32,37,100,46,10,10,0,0,0,0,0,84,105,108,101,32,114,101,97,100,44,32,100,101,99,111,100,101,32,97,110,100,32,117,112,100,97,116,101,100,32,105,115,32,110,111,116,32,116,104,101,32,100,101,115,105,114,101,100,32,40,37,100,32,118,115,32,37,100,41,46,10,0,0,0,108,95,114,101,115,45,62,120,48,32,62,61,32,48,0,0,111,112,106,95,106,50,107,95,117,112,100,97,116,101,95,105,109,97,103,101,95,100,97,116,97,0,0,0,0,0,0,0,108,95,114,101,115,45,62,120,49,32,62,61,32,48,0,0,111,112,106,95,106,50,107,95,115,101,116,117,112,95,100,101,99,111,100,105,110,103,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,100,101,99,111,100,101,32,116,105,108,101,115,10,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,100,101,99,111,100,101,32,116,105,108,101,32,37,100,47,37,100,10,0,0,0,0,67,111,100,101,115,116,114,101,97,109,32,105,110,102,111,32,102,114,111,109,32,109,97,105,110,32,104,101,97,100,101,114,58,32,123,10,0,0,0,0,9,32,116,120,48,61,37,100,44,32,116,121,48,61,37,100,10,0,0,0,0,0,0,0,9,32,116,100,120,61,37,100,44,32,116,100,121,61,37,100,10,0,0,0,0,0,0,0,9,32,116,119,61,37,100,44,32,116,104,61,37,100,10,0,67,111,100,101,115,116,114,101,97,109,32,105,110,100,101,120,32,102,114,111,109,32,109,97,105,110,32,104,101,97,100,101,114,58,32,123,10,0,0,0,9,32,77,97,105,110,32,104,101,97,100,101,114,32,115,116,97,114,116,32,112,111,115,105,116,105,111,110,61,37,108,108,105,10,9,32,77,97,105,110,32,104,101,97,100,101,114,32,101,110,100,32,112,111,115,105,116,105,111,110,61,37,108,108,105,10,0,0,0,0,0,0,9,32,77,97,114,107,101,114,32,108,105,115,116,58,32,123,10,0,0,0,0,0,0,0,9,9,32,116,121,112,101,61,37,35,120,44,32,112,111,115,61,37,108,108,105,44,32,108,101,110,61,37,100,10,0,0,9,32,125,10,0,0,0,0,9,32,84,105,108,101,32,105,110,100,101,120,58,32,123,10,0,0,0,0,0,0,0,0,9,9,32,110,98,32,111,102,32,116,105,108,101,45,112,97,114,116,32,105,110,32,116,105,108,101,32,91,37,100,93,61,37,100,10,0,0,0,0,0,9,9,9,32,116,105,108,101,45,112,97,114,116,91,37,100,93,58,32,115,116,97,114,95,112,111,115,61,37,108,108,105,44,32,101,110,100,95,104,101,97,100,101,114,61,37,108,108,105,44,32,101,110,100,95,112,111,115,61,37,108,108,105,46,10,0,0,0,0,0,0,0,9,32,100,101,102,97,117,108,116,32,116,105,108,101,32,123,10,0,0,0,0,0,0,0,9,9,32,99,115,116,121,61,37,35,120,10,0,0,0,0,9,9,32,112,114,103,61,37,35,120,10,0,0,0,0,0,9,9,32,110,117,109,108,97,121,101,114,115,61,37,100,10,0,0,0,0,0,0,0,0,9,9,32,109,99,116,61,37,120,10,0,0,0,0,0,0,9,9,32,99,111,109,112,32,37,100,32,123,10,0,0,0,9,9,9,32,99,115,116,121,61,37,35,120,10,0,0,0,9,9,9,32,110,117,109,114,101,115,111,108,117,116,105,111,110,115,61,37,100,10,0,0,9,9,9,32,99,98,108,107,119,61,50,94,37,100,10,0,9,9,9,32,99,98,108,107,104,61,50,94,37,100,10,0,9,9,9,32,99,98,108,107,115,116,121,61,37,35,120,10,0,0,0,0,0,0,0,0,9,9,9,32,113,109,102,98,105,100,61,37,100,10,0,0,9,9,9,32,112,114,101,99,99,105,110,116,115,105,122,101,32,40,119,44,104,41,61,0,40,37,100,44,37,100,41,32,0,0,0,0,0,0,0,0,9,9,9,32,113,110,116,115,116,121,61,37,100,10,0,0,9,9,9,32,110,117,109,103,98,105,116,115,61,37,100,10,0,0,0,0,0,0,0,0,9,9,9,32,115,116,101,112,115,105,122,101,115,32,40,109,44,101,41,61,0,0,0,0,9,9,9,32,114,111,105,115,104,105,102,116,61,37,100,10,0,0,0,0,0,0,0,0,9,9,32,125,10,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,100,101,99,111,100,101,32,116,105,108,101,10,0,0,0,0,0,0,0,99,115,116,114,95,105,110,100,101,120,32,33,61,32,48,48,0,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,97,100,100,95,116,108,109,97,114,107,101,114,0,0,0,0,99,115,116,114,95,105,110,100,101,120,45,62,116,105,108,101,95,105,110,100,101,120,32,33,61,32,48,48,0,0,0,0,112,95,112,114,111,99,101,100,117,114,101,95,108,105,115,116,32,33,61,32,48,48,0,0,111,112,106,95,106,50,107,95,101,120,101,99,0,0,0,0,111,112,106,95,106,50,107,95,100,101,99,111,100,105,110,103,95,118,97,108,105,100,97,116,105,111,110,0,0,0,0,0,111,112,106,95,106,50,107,95,99,111,112,121,95,100,101,102,97,117,108,116,95,116,99,112,95,97,110,100,95,99,114,101,97,116,101,95,116,99,100,0,111,112,106,95,106,50,107,95,114,101,97,100,95,104,101,97,100,101,114,95,112,114,111,99,101,100,117,114,101,0,0,0,69,120,112,101,99,116,101,100,32,97,32,83,79,67,32,109,97,114,107,101,114,32,10,0,87,101,32,101,120,112,101,99,116,101,100,32,114,101,97,100,32,97,32,109,97,114,107,101,114,32,73,68,32,40,48,120,102,102,45,45,41,32,105,110,115,116,101,97,100,32,111,102,32,37,46,56,120,10,0,0,85,110,107,110,111,119,32,109,97,114,107,101,114,32,104,97,118,101,32,98,101,101,110,32,100,101,116,101,99,116,101,100,32,97,110,100,32,103,101,110,101,114,97,116,101,100,32,101,114,114,111,114,46,10,0,0,77,97,114,107,101,114,32,104,97,110,100,108,101,114,32,102,117,110,99,116,105,111,110,32,102,97,105,108,101,100,32,116,111,32,114,101,97,100,32,116,104,101,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,10,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,97,100,100,32,109,104,32,109,97,114,107,101,114,10,0,0,0,0,0,77,97,105,110,32,104,101,97,100,101,114,32,104,97,115,32,98,101,101,110,32,99,111,114,114,101,99,116,108,121,32,100,101,99,111,100,101,100,46,10,0,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,97,100,100,95,109,104,109,97,114,107,101,114,0,0,0,0,85,110,107,110,111,119,110,32,109,97,114,107,101,114,10,0,83,116,97,114,116,32,116,111,32,114,101,97,100,32,106,50,107,32,109,97,105,110,32,104,101,97,100,101,114,32,40,37,100,41,46,10,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,102,111,114,32,99,104,101,99,107,105,110,103,32,116,104,101,32,112,111,99,32,118,97,108,117,101,115,46,10,0,77,105,115,115,105,110,103,32,112,97,99,107,101,116,115,32,112,111,115,115,105,98,108,101,32,108,111,115,115,32,111,102,32,100,97,116,97,10,0,0,98,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,47,111,112,106,95,105,110,116,109,97,116,104,46,104,0,0,0,0,0,0,0,0,111,112,106,95,105,110,116,95,99,101,105,108,100,105,118,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,51,32,40,50,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,51,32,99,111,109,112,111,110,101,110,116,115,45,62,32,78,117,109,98,101,114,32,111,102,32,99,111,109,112,111,110,101,110,116,115,32,111,102,32,105,110,112,117,116,32,105,109,97,103,101,32,40,37,100,41,32,105,115,32,110,111,116,32,99,111,109,112,108,105,97,110,116,10,45,62,32,78,111,110,45,112,114,111,102,105,108,101,45,51,32,99,111,100,101,115,116,114,101,97,109,32,119,105,108,108,32,98,101,32,103,101,110,101,114,97,116,101,100,10,0,0,0,115,105,103,110,101,100,0,0,117,110,115,105,103,110,101,100,0,0,0,0,0,0,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,51,32,40,50,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,80,114,101,99,105,115,105,111,110,32,111,102,32,101,97,99,104,32,99,111,109,112,111,110,101,110,116,32,115,104,97,108,108,32,98,101,32,49,50,32,98,105,116,115,32,117,110,115,105,103,110,101,100,45,62,32,65,116,32,108,101,97,115,116,32,99,111,109,112,111,110,101,110,116,32,37,100,32,111,102,32,105,110,112,117,116,32,105,109,97,103,101,32,40,37,100,32,98,105,116,115,44,32,37,115,41,32,105,115,32,110,111,116,32,99,111,109,112,108,105,97,110,116,10,45,62,32,78,111,110,45,112,114,111,102,105,108,101,45,51,32,99,111,100,101,115,116,114,101,97,109,32,119,105,108,108,32,98,101,32,103,101,110,101,114,97,116,101,100,10,0,0,0,0,0,0,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,51,32,40,50,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,119,105,100,116,104,32,60,61,32,50,48,52,56,32,97,110,100,32,104,101,105,103,104,116,32,60,61,32,49,48,56,48,10,45,62,32,73,110,112,117,116,32,105,109,97,103,101,32,115,105,122,101,32,37,100,32,120,32,37,100,32,105,115,32,110,111,116,32,99,111,109,112,108,105,97,110,116,10,45,62,32,78,111,110,45,112,114,111,102,105,108,101,45,51,32,99,111,100,101,115,116,114,101,97,109,32,119,105,108,108,32,98,101,32,103,101,110,101,114,97,116,101,100,10,0,0,0,0,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,52,32,40,52,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,119,105,100,116,104,32,60,61,32,52,48,57,54,32,97,110,100,32,104,101,105,103,104,116,32,60,61,32,50,49,54,48,10,45,62,32,73,109,97,103,101,32,115,105,122,101,32,37,100,32,120,32,37,100,32,105,115,32,110,111,116,32,99,111,109,112,108,105,97,110,116,10,45,62,32,78,111,110,45,112,114,111,102,105,108,101,45,52,32,99,111,100,101,115,116,114,101,97,109,32,119,105,108,108,32,98,101,32,103,101,110,101,114,97,116,101,100,10,0,0,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,51,32,97,110,100,32,52,32,40,50,107,47,52,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,49,32,115,105,110,103,108,101,32,113,117,97,108,105,116,121,32,108,97,121,101,114,45,62,32,78,117,109,98,101,114,32,111,102,32,108,97,121,101,114,115,32,102,111,114,99,101,100,32,116,111,32,49,32,40,114,97,116,104,101,114,32,116,104,97,110,32,37,100,41,10,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,51,32,40,50,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,78,117,109,98,101,114,32,111,102,32,100,101,99,111,109,112,111,115,105,116,105,111,110,32,108,101,118,101,108,115,32,60,61,32,53,10,45,62,32,78,117,109,98,101,114,32,111,102,32,100,101,99,111,109,112,111,115,105,116,105,111,110,32,108,101,118,101,108,115,32,102,111,114,99,101,100,32,116,111,32,53,32,40,114,97,116,104,101,114,32,116,104,97,110,32,37,100,41,10,0,0,0,0,0,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,52,32,40,52,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,78,117,109,98,101,114,32,111,102,32,100,101,99,111,109,112,111,115,105,116,105,111,110,32,108,101,118,101,108,115,32,62,61,32,49,32,38,38,32,60,61,32,54,10,45,62,32,78,117,109,98,101,114,32,111,102,32,100,101,99,111,109,112,111,115,105,116,105,111,110,32,108,101,118,101,108,115,32,102,111,114,99,101,100,32,116,111,32,49,32,40,114,97,116,104,101,114,32,116,104,97,110,32,37,100,41,10,0,0,0,0,0,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,52,32,40,52,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,78,117,109,98,101,114,32,111,102,32,100,101,99,111,109,112,111,115,105,116,105,111,110,32,108,101,118,101,108,115,32,62,61,32,49,32,38,38,32,60,61,32,54,10,45,62,32,78,117,109,98,101,114,32,111,102,32,100,101,99,111,109,112,111,115,105,116,105,111,110,32,108,101,118,101,108,115,32,102,111,114,99,101,100,32,116,111,32,54,32,40,114,97,116,104,101,114,32,116,104,97,110,32,37,100,41,10,0,0,0,0,0,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,51,32,97,110,100,32,52,32,40,50,107,47,52,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,77,97,120,105,109,117,109,32,49,51,48,50,48,56,51,32,99,111,109,112,114,101,115,115,101,100,32,98,121,116,101,115,32,64,32,50,52,102,112,115,10,45,62,32,83,112,101,99,105,102,105,101,100,32,114,97,116,101,32,40,37,51,46,49,102,41,32,101,120,99,101,101,100,115,32,116,104,105,115,32,108,105,109,105,116,46,32,82,97,116,101,32,119,105,108,108,32,98,101,32,102,111,114,99,101,100,32,116,111,32,37,51,46,49,102,46,10,0,0,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,51,32,97,110,100,32,52,32,40,50,107,47,52,107,32,100,99,32,112,114,111,102,105,108,101,41,58,10,73,78,70,79,32,58,32,83,112,101,99,105,102,105,101,100,32,114,97,116,101,32,40,37,51,46,49,102,41,32,105,115,32,98,101,108,111,119,32,116,104,101,32,50,107,47,52,107,32,108,105,109,105,116,32,64,32,50,52,102,112,115,46,10,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,51,32,40,50,107,32,100,99,32,112,114,111,102,105,108,101,41,32,114,101,113,117,105,114,101,115,58,10,77,97,120,105,109,117,109,32,54,53,49,48,52,49,32,99,111,109,112,114,101,115,115,101,100,32,98,121,116,101,115,32,64,32,52,56,102,112,115,10,45,62,32,83,112,101,99,105,102,105,101,100,32,114,97,116,101,32,40,37,51,46,49,102,41,32,101,120,99,101,101,100,115,32,116,104,105,115,32,108,105,109,105,116,46,32,82,97,116,101,32,119,105,108,108,32,98,101,32,102,111,114,99,101,100,32,116,111,32,37,51,46,49,102,46,10,0,0,0,0,0,0,74,80,69,71,32,50,48,48,48,32,80,114,111,102,105,108,101,45,51,32,40,50,107,32,100,99,32,112,114,111,102,105,108,101,41,58,10,73,78,70,79,32,58,32,83,112,101,99,105,102,105,101,100,32,114,97,116,101,32,40,37,51,46,49,102,41,32,105,115,32,98,101,108,111,119,32,116,104,101,32,50,107,32,108,105,109,105,116,32,64,32,52,56,32,102,112,115,46,10,0,0,0,0,0,112,95,104,101,97,100,101,114,95,100,97,116,97,32,33,61,32,48,48,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,99,98,100,0,0,0,0,0,0,0,0,67,114,114,111,114,32,114,101,97,100,105,110,103,32,67,66,68,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,109,99,111,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,77,67,79,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,67,97,110,110,111,116,32,116,97,107,101,32,105,110,32,99,104,97,114,103,101,32,109,117,108,116,105,112,108,101,32,116,114,97,110,115,102,111,114,109,97,116,105,111,110,32,115,116,97,103,101,115,46,10,0,0,111,112,106,95,106,50,107,95,97,100,100,95,109,99,116,0,111,112,106,95,106,50,107,95,114,101,97,100,95,109,99,99,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,77,67,67,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,67,97,110,110,111,116,32,116,97,107,101,32,105,110,32,99,104,97,114,103,101,32,109,117,108,116,105,112,108,101,32,100,97,116,97,32,115,112,97,110,110,105,110,103,10,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,114,101,97,100,32,77,67,67,32,109,97,114,107,101,114,10,0,0,0,67,97,110,110,111,116,32,116,97,107,101,32,105,110,32,99,104,97,114,103,101,32,109,117,108,116,105,112,108,101,32,99,111,108,108,101,99,116,105,111,110,115,10,0,0,0,0,0,67,97,110,110,111,116,32,116,97,107,101,32,105,110,32,99,104,97,114,103,101,32,99,111,108,108,101,99,116,105,111,110,115,32,111,116,104,101,114,32,116,104,97,110,32,97,114,114,97,121,32,100,101,99,111,114,114,101,108,97,116,105,111,110,10,0,0,0,0,0,0,0,67,97,110,110,111,116,32,116,97,107,101,32,105,110,32,99,104,97,114,103,101,32,99,111,108,108,101,99,116,105,111,110,115,32,119,105,116,104,32,105,110,100,105,120,32,115,104,117,102,102,108,101,10,0,0,0,67,97,110,110,111,116,32,116,97,107,101,32,105,110,32,99,104,97,114,103,101,32,99,111,108,108,101,99,116,105,111,110,115,32,119,105,116,104,111,117,116,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,105,110,100,105,120,101,115,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,109,99,116,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,77,67,84,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,67,97,110,110,111,116,32,116,97,107,101,32,105,110,32,99,104,97,114,103,101,32,109,99,116,32,100,97,116,97,32,119,105,116,104,105,110,32,109,117,108,116,105,112,108,101,32,77,67,84,32,114,101,99,111,114,100,115,10,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,114,101,97,100,32,77,67,84,32,109,97,114,107,101,114,10,0,0,0,67,97,110,110,111,116,32,116,97,107,101,32,105,110,32,99,104,97,114,103,101,32,109,117,108,116,105,112,108,101,32,77,67,84,32,109,97,114,107,101,114,115,10,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,114,103,110,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,82,71,78,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,98,97,100,32,99,111,109,112,111,110,101,110,116,32,110,117,109,98,101,114,32,105,110,32,82,71,78,32,40,37,100,32,119,104,101,110,32,116,104,101,114,101,32,97,114,101,32,111,110,108,121,32,37,100,41,10,0,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,115,111,116,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,83,79,84,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,116,105,108,101,32,110,117,109,98,101,114,32,37,100,10,0,69,109,112,116,121,32,83,79,84,32,109,97,114,107,101,114,32,100,101,116,101,99,116,101,100,58,32,80,115,111,116,61,37,100,46,10,0,0,0,0,80,115,111,116,32,118,97,108,117,101,32,105,115,32,110,111,116,32,99,111,114,114,101,99,116,32,114,101,103,97,114,100,115,32,116,111,32,116,104,101,32,74,80,69,71,50,48,48,48,32,110,111,114,109,58,32,37,100,46,10,0,0,0,0,80,115,111,116,32,118,97,108,117,101,32,111,102,32,116,104,101,32,99,117,114,114,101,110,116,32,116,105,108,101,45,112,97,114,116,32,105,115,32,101,113,117,97,108,32,116,111,32,122,101,114,111,44,32,119,101,32,97,115,115,117,109,105,110,103,32,105,116,32,105,115,32,116,104,101,32,108,97,115,116,32,116,105,108,101,45,112,97,114,116,32,111,102,32,116,104,101,32,99,111,100,101,115,116,114,101,97,109,46,10,0,0,73,110,32,83,79,84,32,109,97,114,107,101,114,44,32,84,80,83,111,116,32,40,37,100,41,32,105,115,32,110,111,116,32,118,97,108,105,100,32,114,101,103,97,114,100,115,32,116,111,32,116,104,101,32,99,117,114,114,101,110,116,32,110,117,109,98,101,114,32,111,102,32,116,105,108,101,45,112,97,114,116,32,40,37,100,41,44,32,103,105,118,105,110,103,32,117,112,10,0,0,0,0,0,0,73,110,32,83,79,84,32,109,97,114,107,101,114,44,32,84,80,83,111,116,32,40,37,100,41,32,105,115,32,110,111,116,32,118,97,108,105,100,32,114,101,103,97,114,100,115,32,116,111,32,116,104,101,32,99,117,114,114,101,110,116,32,110,117,109,98,101,114,32,111,102,32,116,105,108,101,45,112,97,114,116,32,40,104,101,97,100,101,114,41,32,40,37,100,41,44,32,103,105,118,105,110,103,32,117,112,10,0,0,0,0,0,112,95,106,50,107,45,62,109,95,115,112,101,99,105,102,105,99,95,112,97,114,97,109,46,109,95,100,101,99,111,100,101,114,46,109,95,116,105,108,101,95,105,110,100,95,116,111,95,100,101,99,32,62,61,32,48,0,0,0,0,0,0,0,0,112,95,106,50,107,45,62,99,115,116,114,95,105,110,100,101,120,45,62,116,105,108,101,95,105,110,100,101,120,32,33,61,32,48,48,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,114,101,97,100,32,80,80,84,32,109,97,114,107,101,114,10,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,112,112,116,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,80,80,84,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,80,80,84,32,109,97,114,107,101,114,58,32,112,97,99,107,101,116,32,104,101,97,100,101,114,32,104,97,118,101,32,98,101,101,110,32,112,114,101,118,105,111,117,115,108,121,32,102,111,117,110,100,32,105,110,32,116,104,101,32,109,97,105,110,32,104,101,97,100,101,114,32,40,80,80,77,32,109,97,114,107,101,114,41,46,10,0,0,0,0,106,50,107,95,114,101,97,100,95,112,112,109,95,118,51,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,80,80,77,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,98,121,116,101,115,32,40,37,117,41,32,116,111,32,104,111,108,100,32,73,112,112,109,32,115,101,114,105,101,115,32,40,37,117,41,44,32,73,110,100,101,120,32,40,37,100,41,10,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,114,101,97,100,32,112,112,109,32,109,97,114,107,101,114,10,0,0,0,69,109,112,116,121,32,80,80,77,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,108,95,99,112,45,62,112,112,109,95,100,97,116,97,32,61,61,32,108,95,99,112,45,62,112,112,109,95,98,117,102,102,101,114,32,38,38,32,34,87,101,32,110,101,101,100,32,112,112,109,95,100,97,116,97,32,97,110,100,32,112,112,109,95,98,117,102,102,101,114,32,116,111,32,98,101,32,116,104,101,32,115,97,109,101,32,119,104,101,110,32,114,101,97,108,108,111,99,97,116,105,110,103,34,0,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,105,110,99,114,101,97,115,101,32,116,104,101,32,115,105,122,101,32,111,102,32,112,112,109,95,100,97,116,97,32,116,111,32,97,100,100,32,116,104,101,32,110,101,119,32,73,112,112,109,32,115,101,114,105,101,115,10,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,105,110,99,114,101,97,115,101,32,116,104,101,32,115,105,122,101,32,111,102,32,112,112,109,95,100,97,116,97,32,116,111,32,97,100,100,32,116,104,101,32,110,101,119,32,40,99,111,109,112,108,101,116,101,41,32,73,112,112,109,32,115,101,114,105,101,115,10,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,105,110,99,114,101,97,115,101,32,116,104,101,32,115,105,122,101,32,111,102,32,112,112,109,95,100,97,116,97,32,116,111,32,97,100,100,32,116,104,101,32,110,101,119,32,40,105,110,99,111,109,112,108,101,116,101,41,32,73,112,112,109,32,115,101,114,105,101,115,10,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,112,108,116,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,80,76,84,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,112,108,109,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,80,76,77,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,116,108,109,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,84,76,77,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,99,114,103,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,67,82,71,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,112,111,99,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,80,79,67,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,84,111,111,32,109,97,110,121,32,80,79,67,115,32,37,100,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,113,99,99,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,81,67,67,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,99,111,109,112,111,110,101,110,116,32,110,117,109,98,101,114,58,32,37,100,44,32,114,101,103,97,114,100,105,110,103,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,99,111,109,112,111,110,101,110,116,115,32,37,100,10,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,83,81,99,100,95,83,81,99,99,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,83,81,99,100,32,111,114,32,83,81,99,99,32,101,108,101,109,101,110,116,10,0,0,0,0,0,87,104,105,108,101,32,114,101,97,100,105,110,103,32,67,67,80,95,81,78,84,83,84,89,32,101,108,101,109,101,110,116,32,105,110,115,105,100,101,32,81,67,68,32,111,114,32,81,67,67,32,109,97,114,107,101,114,32,115,101,103,109,101,110,116,44,32,110,117,109,98,101,114,32,111,102,32,115,117,98,98,97,110,100,115,32,40,37,100,41,32,105,115,32,103,114,101,97,116,101,114,32,116,111,32,79,80,74,95,74,50,75,95,77,65,88,66,65,78,68,83,32,40,37,100,41,46,32,83,111,32,119,101,32,108,105,109,105,116,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,101,108,101,109,101,110,116,115,32,115,116,111,114,101,100,32,116,111,32,79,80,74,95,74,50,75,95,77,65,88,66,65,78,68,83,32,40,37,100,41,32,97,110,100,32,115,107,105,112,32,116,104,101,32,114,101,115,116,46,32,10,0,111,112,106,95,106,50,107,95,114,101,97,100,95,113,99,100,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,81,67,68,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,99,111,99,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,67,79,67,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,67,79,67,32,109,97,114,107,101,114,32,40,98,97,100,32,110,117,109,98,101,114,32,111,102,32,99,111,109,112,111,110,101,110,116,115,41,10,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,83,80,67,111,100,95,83,80,67,111,99,0,0,0,0,0,0,0,0,99,111,109,112,110,111,32,60,32,112,95,106,50,107,45,62,109,95,112,114,105,118,97,116,101,95,105,109,97,103,101,45,62,110,117,109,99,111,109,112,115,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,83,80,67,111,100,32,83,80,67,111,99,32,101,108,101,109,101,110,116,10,0,0,0,0,0,0,73,110,118,97,108,105,100,32,118,97,108,117,101,32,102,111,114,32,110,117,109,114,101,115,111,108,117,116,105,111,110,115,32,58,32,37,100,44,32,109,97,120,32,118,97,108,117,101,32,105,115,32,115,101,116,32,105,110,32,111,112,101,110,106,112,101,103,46,104,32,97,116,32,37,100,10,0,0,0,0,69,114,114,111,114,32,100,101,99,111,100,105,110,103,32,99,111,109,112,111,110,101,110,116,32],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+245761);allocate([37,100,46,10,84,104,101,32,110,117,109,98,101,114,32,111,102,32,114,101,115,111,108,117,116,105,111,110,115,32,116,111,32,114,101,109,111,118,101,32,105,115,32,104,105,103,104,101,114,32,116,104,97,110,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,114,101,115,111,108,117,116,105,111,110,115,32,111,102,32,116,104,105,115,32,99,111,109,112,111,110,101,110,116,10,77,111,100,105,102,121,32,116,104,101,32,99,112,95,114,101,100,117,99,101,32,112,97,114,97,109,101,116,101,114,46,10,10,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,99,111,100,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,67,79,68,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,99,111,109,0,0,0,0,0,0,0,0,111,112,106,95,106,50,107,95,114,101,97,100,95,115,105,122,0,0,0,0,0,0,0,0,69,114,114,111,114,32,119,105,116,104,32,83,73,90,32,109,97,114,107,101,114,32,115,105,122,101,10,0,0,0,0,0,69,114,114,111,114,32,119,105,116,104,32,83,73,90,32,109,97,114,107,101,114,58,32,110,117,109,98,101,114,32,111,102,32,99,111,109,112,111,110,101,110,116,32,105,115,32,105,108,108,101,103,97,108,32,45,62,32,37,100,10,0,0,0,0,69,114,114,111,114,32,119,105,116,104,32,83,73,90,32,109,97,114,107,101,114,58,32,110,117,109,98,101,114,32,111,102,32,99,111,109,112,111,110,101,110,116,32,105,115,32,110,111,116,32,99,111,109,112,97,116,105,98,108,101,32,119,105,116,104,32,116,104,101,32,114,101,109,97,105,110,105,110,103,32,110,117,109,98,101,114,32,111,102,32,112,97,114,97,109,101,116,101,114,115,32,40,32,37,100,32,118,115,32,37,100,41,10,0,0,0,0,0,0,0,69,114,114,111,114,32,119,105,116,104,32,83,73,90,32,109,97,114,107,101,114,58,32,110,101,103,97,116,105,118,101,32,105,109,97,103,101,32,115,105,122,101,32,40,37,100,32,120,32,37,100,41,10,0,0,0,69,114,114,111,114,32,119,105,116,104,32,83,73,90,32,109,97,114,107,101,114,58,32,105,110,118,97,108,105,100,32,116,105,108,101,32,115,105,122,101,32,40,116,100,120,58,32,37,100,44,32,116,100,121,58,32,37,100,41,10,0,0,0,0,80,114,101,118,101,110,116,32,98,117,102,102,101,114,32,111,118,101,114,102,108,111,119,32,40,120,49,58,32,37,100,44,32,121,49,58,32,37,100,41,0,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,116,97,107,101,32,105,110,32,99,104,97,114,103,101,32,83,73,90,32,109,97,114,107,101,114,10,0,73,110,118,97,108,105,100,32,118,97,108,117,101,115,32,102,111,114,32,99,111,109,112,32,61,32,37,100,32,58,32,100,120,61,37,117,32,100,121,61,37,117,10,32,40,115,104,111,117,108,100,32,98,101,32,98,101,116,119,101,101,110,32,49,32,97,110,100,32,50,53,53,32,97,99,99,111,114,100,105,110,103,32,116,104,101,32,74,80,69,71,50,48,48,48,32,110,111,114,109,41,0,0,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,116,105,108,101,115,32,58,32,37,117,32,120,32,37,117,32,40,109,97,120,105,109,117,109,32,102,105,120,101,100,32,98,121,32,106,112,101,103,50,48,48,48,32,110,111,114,109,32,105,115,32,54,53,53,51,53,32,116,105,108,101,115,41,10,0,0,0,0,0,0,32,32,80,106,53,0,0,0,112,121,116,102,54,0,0,0,104,50,112,106,55,0,0,0,114,100,104,105,56,0,0,0,114,108,111,99,57,0,0,0,99,99,112,98,58,0,0,0,114,108,99,112,59,0,0,0,112,97,109,99,60,0,0,0,102,101,100,99,61,0,0,0,70,97,105,108,101,100,32,116,111,32,100,101,99,111,100,101,32,116,104,101,32,99,111,100,101,115,116,114,101,97,109,32,105,110,32,116,104,101,32,74,80,50,32,102,105,108,101,10,0,0,0,0,0,0,0,0,115,116,114,101,97,109,32,33,61,32,48,48,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,92,106,112,50,46,99,0,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,119,114,105,116,101,95,106,112,50,104,0,0,0,0,0,0,106,112,50,32,33,61,32,48,48,0,0,0,0,0,0,0,112,95,109,97,110,97,103,101,114,32,33,61,32,48,48,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,104,111,108,100,32,74,80,50,32,72,101,97,100,101,114,32,100,97,116,97,10,0,0,0,0,0,0,83,116,114,101,97,109,32,101,114,114,111,114,32,119,104,105,108,101,32,119,114,105,116,105,110,103,32,74,80,50,32,72,101,97,100,101,114,32,98,111,120,10,0,0,0,0,0,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,99,111,109,112,111,110,101,110,116,115,32,115,112,101,99,105,102,105,101,100,32,119,104,105,108,101,32,115,101,116,116,105,110,103,32,117,112,32,74,80,50,32,101,110,99,111,100,101,114,10,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,119,104,101,110,32,115,101,116,117,112,32,116,104,101,32,74,80,50,32,101,110,99,111,100,101,114,10,0,0,0,111,112,106,95,106,112,50,95,101,110,100,95,100,101,99,111,109,112,114,101,115,115,0,0,99,105,111,32,33,61,32,48,48,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,101,110,100,95,99,111,109,112,114,101,115,115,0,0,0,0,111,112,106,95,106,112,50,95,100,101,102,97,117,108,116,95,118,97,108,105,100,97,116,105,111,110,0,0,0,0,0,0,111,112,106,95,106,112,50,95,115,116,97,114,116,95,99,111,109,112,114,101,115,115,0,0,111,112,106,95,106,112,50,95,115,107,105,112,95,106,112,50,99,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,104,101,97,100,101,114,0,0,0,0,0,112,95,115,116,114,101,97,109,32,33,61,32,48,48,0,0,74,80,50,32,98,111,120,32,119,104,105,99,104,32,97,114,101,32,97,102,116,101,114,32,116,104,101,32,99,111,100,101,115,116,114,101,97,109,32,119,105,108,108,32,110,111,116,32,98,101,32,114,101,97,100,32,98,121,32,116,104,105,115,32,102,117,110,99,116,105,111,110,46,10,0,0,0,0,0,0,112,95,106,112,50,32,33,61,32,48,48,0,0,0,0,0,106,112,50,95,100,117,109,112,0,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,104,101,97,100,101,114,95,112,114,111,99,101,100,117,114,101,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,104,97,110,100,108,101,32,106,112,101,103,50,48,48,48,32,102,105,108,101,32,104,101,97,100,101,114,10,0,0,0,0,0,0,0,98,97,100,32,112,108,97,99,101,100,32,106,112,101,103,32,99,111,100,101,115,116,114,101,97,109,10,0,0,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,98,111,120,32,111,102,32,117,110,100,101,102,105,110,101,100,32,115,105,122,101,115,10,0,0,0,105,110,118,97,108,105,100,32,98,111,120,32,115,105,122,101,32,37,100,32,40,37,120,41,10,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,104,97,110,100,108,101,32,106,112,101,103,50,48,48,48,32,98,111,120,10,0,0,0,0,0,0,0,80,114,111,98,108,101,109,32,119,105,116,104,32,114,101,97,100,105,110,103,32,74,80,69,71,50,48,48,48,32,98,111,120,44,32,115,116,114,101,97,109,32,101,114,114,111,114,10,0,0,0,0,0,0,0,0,80,114,111,98,108,101,109,32,119,105,116,104,32,115,107,105,112,112,105,110,103,32,74,80,69,71,50,48,48,48,32,98,111,120,44,32,115,116,114,101,97,109,32,101,114,114,111,114,10,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,98,111,120,104,100,114,0,0,0,0,0,40,79,80,74,95,79,70,70,95,84,41,98,111,120,45,62,108,101,110,103,116,104,32,61,61,32,98,108,101,102,116,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,98,111,120,32,115,105,122,101,115,32,104,105,103,104,101,114,32,116,104,97,110,32,50,94,51,50,10,0,0,0,0,0,0,0,111,112,106,95,106,112,105,112,95,115,107,105,112,95,105,112,116,114,0,0,0,0,0,0,111,112,106,95,106,112,50,95,119,114,105,116,101,95,102,116,121,112,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,104,97,110,100,108,101,32,102,116,121,112,32,100,97,116,97,10,0,0,69,114,114,111,114,32,119,104,105,108,101,32,119,114,105,116,105,110,103,32,102,116,121,112,32,100,97,116,97,32,116,111,32,115,116,114,101,97,109,10,0,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,119,114,105,116,101,95,106,112,0,0,0,0,0,0,0,0,112,95,104,101,97,100,101,114,95,100,97,116,97,32,33,61,32,48,48,0,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,106,112,50,104,0,0,0,0,0,0,0,84,104,101,32,32,98,111,120,32,109,117,115,116,32,98,101,32,116,104,101,32,102,105,114,115,116,32,98,111,120,32,105,110,32,116,104,101,32,102,105,108,101,46,10,0,0,0,0,83,116,114,101,97,109,32,101,114,114,111,114,32,119,104,105,108,101,32,114,101,97,100,105,110,103,32,74,80,50,32,72,101,97,100,101,114,32,98,111,120,10,0,0,0,0,0,0,83,116,114,101,97,109,32,101,114,114,111,114,32,119,104,105,108,101,32,114,101,97,100,105,110,103,32,74,80,50,32,72,101,97,100,101,114,32,98,111,120,58,32,98,111,120,32,108,101,110,103,116,104,32,105,115,32,105,110,99,111,110,115,105,115,116,101,110,116,46,10,0,112,95,100,97,116,97,32,33,61,32,48,48,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,98,111,120,104,100,114,95,99,104,97,114,0,0,0,0,0,0,0,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,98,111,120,32,111,102,32,108,101,115,115,32,116,104,97,110,32,56,32,98,121,116,101,115,10,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,88,76,32,98,111,120,32,111,102,32,108,101,115,115,32,116,104,97,110,32,49,54,32,98,121,116,101,115,10,0,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,102,116,121,112,0,0,0,0,0,0,0,84,104,101,32,102,116,121,112,32,98,111,120,32,109,117,115,116,32,98,101,32,116,104,101,32,115,101,99,111,110,100,32,98,111,120,32,105,110,32,116,104,101,32,102,105,108,101,46,10,0,0,0,0,0,0,0,69,114,114,111,114,32,119,105,116,104,32,70,84,89,80,32,115,105,103,110,97,116,117,114,101,32,66,111,120,32,115,105,122,101,10,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,119,105,116,104,32,70,84,89,80,32,66,111,120,10,0,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,106,112,0,84,104,101,32,115,105,103,110,97,116,117,114,101,32,98,111,120,32,109,117,115,116,32,98,101,32,116,104,101,32,102,105,114,115,116,32,98,111,120,32,105,110,32,116,104,101,32,102,105,108,101,46,10,0,0,0,69,114,114,111,114,32,119,105,116,104,32,74,80,32,115,105,103,110,97,116,117,114,101,32,66,111,120,32,115,105,122,101,10,0,0,0,0,0,0,0,69,114,114,111,114,32,119,105,116,104,32,74,80,32,83,105,103,110,97,116,117,114,101,32,58,32,98,97,100,32,109,97,103,105,99,32,110,117,109,98,101,114,10,0,0,0,0,0,112,95,112,114,111,99,101,100,117,114,101,95,108,105,115,116,32,33,61,32,48,48,0,0,111,112,106,95,106,112,50,95,101,120,101,99,0,0,0,0,111,112,106,95,106,112,50,95,119,114,105,116,101,95,106,112,50,99,0,0,0,0,0,0,111,112,106,95,115,116,114,101,97,109,95,104,97,115,95,115,101,101,107,40,99,105,111,41,0,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,115,101,101,107,32,105,110,32,116,104,101,32,115,116,114,101,97,109,46,10,0,0,111,112,106,95,106,112,50,95,119,114,105,116,101,95,99,111,108,114,0,0,0,0,0,0,112,95,110,98,95,98,121,116,101,115,95,119,114,105,116,116,101,110,32,33,61,32,48,48,0,0,0,0,0,0,0,0,106,112,50,45,62,109,101,116,104,32,61,61,32,49,32,124,124,32,106,112,50,45,62,109,101,116,104,32,61,61,32,50,0,0,0,0,0,0,0,0,106,112,50,45,62,99,111,108,111,114,46,105,99,99,95,112,114,111,102,105,108,101,95,108,101,110,0,0,0,0,0,0,111,112,106,95,106,112,50,95,119,114,105,116,101,95,98,112,99,99,0,0,0,0,0,0,111,112,106,95,106,112,50,95,119,114,105,116,101,95,105,104,100,114,0,0,0,0,0,0,112,99,111,108,32,61,61,32,48,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,97,112,112,108,121,95,112,99,108,114,0,0,0,0,0,0,105,32,61,61,32,112,99,111,108,0,0,0,0,0,0,0,115,114,99,0,0,0,0,0,99,109,112,32,61,61,32,48,0,0,0,0,0,0,0,0,100,115,116,0,0,0,0,0,99,110,61,37,100,44,32,97,99,110,61,37,100,44,32,110,117,109,99,111,109,112,115,61,37,100,10,0,0,0,0,0,73,110,118,97,108,105,100,32,99,111,109,112,111,110,101,110,116,32,105,110,100,101,120,32,37,100,32,40,62,61,32,37,100,41,46,10,0,0,0,0,85,110,101,120,112,101,99,116,101,100,32,79,79,77,46,10,0,0,0,0,0,0,0,0,99,109,97,112,91,105,93,46,109,116,121,112,32,61,61,32,48,32,124,124,32,99,109,97,112,91,105,93,46,109,116,121,112,32,61,61,32,49,0,0,111,112,106,95,106,112,50,95,99,104,101,99,107,95,99,111,108,111,114,0,0,0,0,0,73,110,118,97,108,105,100,32,99,111,109,112,111,110,101,110,116,47,112,97,108,101,116,116,101,32,105,110,100,101,120,32,102,111,114,32,100,105,114,101,99,116,32,109,97,112,112,105,110,103,32,37,100,46,10,0,67,111,109,112,111,110,101,110,116,32,37,100,32,105,115,32,109,97,112,112,101,100,32,116,119,105,99,101,46,10,0,0,68,105,114,101,99,116,32,117,115,101,32,97,116,32,35,37,100,32,104,111,119,101,118,101,114,32,112,99,111,108,61,37,100,46,10,0,0,0,0,0,67,111,109,112,111,110,101,110,116,32,37,100,32,100,111,101,115,110,39,116,32,104,97,118,101,32,97,32,109,97,112,112,105,110,103,46,10,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,99,111,108,114,0,0,0,0,0,0,0,112,95,99,111,108,114,95,104,101,97,100,101,114,95,100,97,116,97,32,33,61,32,48,48,0,0,0,0,0,0,0,0,66,97,100,32,67,79,76,82,32,104,101,97,100,101,114,32,98,111,120,32,40,98,97,100,32,115,105,122,101,41,10,0,65,32,99,111,110,102,111,114,109,105,110,103,32,74,80,50,32,114,101,97,100,101,114,32,115,104,97,108,108,32,105,103,110,111,114,101,32,97,108,108,32,67,111,108,111,117,114,32,83,112,101,99,105,102,105,99,97,116,105,111,110,32,98,111,120,101,115,32,97,102,116,101,114,32,116,104,101,32,102,105,114,115,116,44,32,115,111,32,119,101,32,105,103,110,111,114,101,32,116,104,105,115,32,111,110,101,46,10,0,0,0,0,66,97,100,32,67,79,76,82,32,104,101,97,100,101,114,32,98,111,120,32,40,98,97,100,32,115,105,122,101,58,32,37,100,41,10,0,0,0,0,0,67,79,76,82,32,66,79,88,32,109,101,116,104,32,118,97,108,117,101,32,105,115,32,110,111,116,32,97,32,114,101,103,117,108,97,114,32,118,97,108,117,101,32,40,37,100,41,44,32,115,111,32,119,101,32,119,105,108,108,32,105,103,110,111,114,101,32,116,104,101,32,101,110,116,105,114,101,32,67,111,108,111,117,114,32,83,112,101,99,105,102,105,99,97,116,105,111,110,32,98,111,120,46,32,10,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,99,100,101,102,0,0,0,0,0,0,0,112,95,99,100,101,102,95,104,101,97,100,101,114,95,100,97,116,97,32,33,61,32,48,48,0,0,0,0,0,0,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,100,97,116,97,32,102,111,114,32,67,68,69,70,32,98,111,120,46,10,0,0,0,0,0,0,0,0,78,117,109,98,101,114,32,111,102,32,99,104,97,110,110,101,108,32,100,101,115,99,114,105,112,116,105,111,110,32,105,115,32,101,113,117,97,108,32,116,111,32,122,101,114,111,32,105,110,32,67,68,69,70,32,98,111,120,46,10,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,99,109,97,112,0,0,0,0,0,0,0,112,95,99,109,97,112,95,104,101,97,100,101,114,95,100,97,116,97,32,33,61,32,48,48,0,0,0,0,0,0,0,0,78,101,101,100,32,116,111,32,114,101,97,100,32,97,32,80,67,76,82,32,98,111,120,32,98,101,102,111,114,101,32,116,104,101,32,67,77,65,80,32,98,111,120,46,10,0,0,0,79,110,108,121,32,111,110,101,32,67,77,65,80,32,98,111,120,32,105,115,32,97,108,108,111,119,101,100,46,10,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,100,97,116,97,32,102,111,114,32,67,77,65,80,32,98,111,120,46,10,0,0,0,0,0,0,0,0,112,95,112,99,108,114,95,104,101,97,100,101,114,95,100,97,116,97,32,33,61,32,48,48,0,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,112,99,108,114,0,0,0,0,0,0,0,112,95,98,112,99,95,104,101,97,100,101,114,95,100,97,116,97,32,33,61,32,48,48,0,111,112,106,95,106,112,50,95,114,101,97,100,95,98,112,99,99,0,0,0,0,0,0,0,65,32,66,80,67,67,32,104,101,97,100,101,114,32,98,111,120,32,105,115,32,97,118,97,105,108,97,98,108,101,32,97,108,116,104,111,117,103,104,32,66,80,67,32,103,105,118,101,110,32,98,121,32,116,104,101,32,73,72,68,82,32,98,111,120,32,40,37,100,41,32,105,110,100,105,99,97,116,101,32,99,111,109,112,111,110,101,110,116,115,32,98,105,116,32,100,101,112,116,104,32,105,115,32,99,111,110,115,116,97,110,116,10,0,0,0,0,0,0,0,66,97,100,32,66,80,67,67,32,104,101,97,100,101,114,32,98,111,120,32,40,98,97,100,32,115,105,122,101,41,10,0,112,95,105,109,97,103,101,95,104,101,97,100,101,114,95,100,97,116,97,32,33,61,32,48,48,0,0,0,0,0,0,0,111,112,106,95,106,112,50,95,114,101,97,100,95,105,104,100,114,0,0,0,0,0,0,0,66,97,100,32,105,109,97,103,101,32,104,101,97,100,101,114,32,98,111,120,32,40,98,97,100,32,115,105,122,101,41,10,0,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,104,97,110,100,108,101,32,105,109,97,103,101,32,104,101,97,100,101,114,32,40,105,104,100,114,41,10,0,0,0,0,0,0,0,0,74,80,50,32,73,72,68,82,32,98,111,120,58,32,99,111,109,112,114,101,115,115,105,111,110,32,116,121,112,101,32,105,110,100,105,99,97,116,101,32,116,104,97,116,32,116,104,101,32,102,105,108,101,32,105,115,32,110,111,116,32,97,32,99,111,110,102,111,114,109,105,110,103,32,74,80,50,32,102,105,108,101,32,40,37,100,41,32,10,0,0,0,0,0,0,0,131,192,202,161,69,182,251,63,127,251,58,112,206,136,234,63,127,251,58,112,206,136,234,63,131,192,202,161,69,182,251,63,225,122,20,174,71,225,252,63,94,186,73,12,2,43,249,63,1,86,0,0,0,0,0,0,32,251,3,0,48,251,3,0,1,86,0,0,1,0,0,0,48,251,3,0,32,251,3,0,1,52,0,0,0,0,0,0,64,251,3,0,192,251,3,0,1,52,0,0,1,0,0,0,80,251,3,0,208,251,3,0,1,24,0,0,0,0,0,0,96,251,3,0,32,252,3,0,1,24,0,0,1,0,0,0,112,251,3,0,48,252,3,0,193,10,0,0,0,0,0,0,128,251,3,0,128,252,3,0,193,10,0,0,1,0,0,0,144,251,3,0,144,252,3,0,33,5,0,0,0,0,0,0,160,251,3,0,160,254,3,0,33,5,0,0,1,0,0,0,176,251,3,0,176,254,3,0,33,2,0,0,0,0,0,0,192,255,3,0,32,255,3,0,33,2,0,0,1,0,0,0,208,255,3,0,48,255,3,0,1,86,0,0,0,0,0,0,224,251,3,0,208,251,3,0,1,86,0,0,1,0,0,0,240,251,3,0,192,251,3,0,1,84,0,0,0,0,0,0,0,252,3,0,192,252,3,0,1,84,0,0,1,0,0,0,16,252,3,0,208,252,3,0,1,72,0,0,0,0,0,0,32,252,3,0,192,252,3,0,1,72,0,0,1,0,0,0,48,252,3,0,208,252,3,0,1,56,0,0,0,0,0,0,64,252,3,0,192,252,3,0,1,56,0,0,1,0,0,0,80,252,3,0,208,252,3,0,1,48,0,0,0,0,0,0,96,252,3,0,32,253,3,0,1,48,0,0,1,0,0,0,112,252,3,0,48,253,3,0,1,36,0,0,0,0,0,0,128,252,3,0,64,253,3,0,1,36,0,0,1,0,0,0,144,252,3,0,80,253,3,0,1,28,0,0,0,0,0,0,160,252,3,0,128,253,3,0,1,28,0,0,1,0,0,0,176,252,3,0,144,253,3,0,1,22,0,0,0,0,0,0,160,254,3,0,160,253,3,0,1,22,0,0,1,0,0,0,176,254,3,0,176,253,3,0,1,86,0,0,0,0,0,0,224,252,3,0,208,252,3,0,1,86,0,0,1,0,0,0,240,252,3,0,192,252,3,0,1,84,0,0,0,0,0,0,0,253,3,0,192,252,3,0,1,84,0,0,1,0,0,0,16,253,3,0,208,252,3,0,1,81,0,0,0,0,0,0,32,253,3,0,224,252,3,0,1,81,0,0,1,0,0,0,48,253,3,0,240,252,3,0,1,72,0,0,0,0,0,0,64,253,3,0,0,253,3,0,1,72,0,0,1,0,0,0,80,253,3,0,16,253,3,0,1,56,0,0,0,0,0,0,96,253,3,0,32,253,3,0,1,56,0,0,1,0,0,0,112,253,3,0,48,253,3,0,1,52,0,0,0,0,0,0,128,253,3,0,64,253,3,0,1,52,0,0,1,0,0,0,144,253,3,0,80,253,3,0,1,48,0,0,0,0,0,0,160,253,3,0,96,253,3,0,1,48,0,0,1,0,0,0,176,253,3,0,112,253,3,0,1,40,0,0,0,0,0,0,192,253,3,0,96,253,3,0,1,40,0,0,1,0,0,0,208,253,3,0,112,253,3,0,1,36,0,0,0,0,0,0,224,253,3,0,128,253,3,0,1,36,0,0,1,0,0,0,240,253,3,0,144,253,3,0,1,34,0,0,0,0,0,0,0,254,3,0,160,253,3,0,1,34,0,0,1,0,0,0,16,254,3,0,176,253,3,0,1,28,0,0,0,0,0,0,32,254,3,0,192,253,3,0,1,28,0,0,1,0,0,0,48,254,3,0,208,253,3,0,1,24,0,0,0,0,0,0,64,254,3,0,224,253,3,0,1,24,0,0,1,0,0,0,80,254,3,0,240,253,3,0,1,22,0,0,0,0,0,0,96,254,3,0,0,254,3,0,1,22,0,0,1,0,0,0,112,254,3,0,16,254,3,0,1,20,0,0,0,0,0,0,128,254,3,0,32,254,3,0,1,20,0,0,1,0,0,0,144,254,3,0,48,254,3,0,1,18,0,0,0,0,0,0,160,254,3,0,64,254,3,0,1,18,0,0,1,0,0,0,176,254,3,0,80,254,3,0,1,17,0,0,0,0,0,0,192,254,3,0,96,254,3,0,1,17,0,0,1,0,0,0,208,254,3,0,112,254,3,0,193,10,0,0,0,0,0,0,224,254,3,0,128,254,3,0,193,10,0,0,1,0,0,0,240,254,3,0,144,254,3,0,193,9,0,0,0,0,0,0,0,255,3,0,160,254,3,0,193,9,0,0,1,0,0,0,16,255,3,0,176,254,3,0,161,8,0,0,0,0,0,0,32,255,3,0,192,254,3,0,161,8,0,0,1,0,0,0,48,255,3,0,208,254,3,0,33,5,0,0,0,0,0,0,64,255,3,0,224,254,3,0,33,5,0,0,1,0,0,0,80,255,3,0,240,254,3,0,65,4,0,0,0,0,0,0,96,255,3,0,0,255,3,0,65,4,0,0,1,0,0,0,112,255,3,0,16,255,3,0,161,2,0,0,0,0,0,0,128,255,3,0,32,255,3,0,161,2,0,0,1,0,0,0,144,255,3,0,48,255,3,0,33,2,0,0,0,0,0,0,160,255,3,0,64,255,3,0,33,2,0,0,1,0,0,0,176,255,3,0,80,255,3,0,65,1,0,0,0,0,0,0,192,255,3,0,96,255,3,0,65,1,0,0,1,0,0,0,208,255,3,0,112,255,3,0,17,1,0,0,0,0,0,0,224,255,3,0,128,255,3,0,17,1,0,0,1,0,0,0,240,255,3,0,144,255,3,0,133,0,0,0,0,0,0,0,0,0,4,0,160,255,3,0,133,0,0,0,1,0,0,0,16,0,4,0,176,255,3,0,73,0,0,0,0,0,0,0,32,0,4,0,192,255,3,0,73,0,0,0,1,0,0,0,48,0,4,0,208,255,3,0,37,0,0,0,0,0,0,0,64,0,4,0,224,255,3,0,37,0,0,0,1,0,0,0,80,0,4,0,240,255,3,0,21,0,0,0,0,0,0,0,96,0,4,0,0,0,4,0,21,0,0,0,1,0,0,0,112,0,4,0,16,0,4,0,9,0,0,0,0,0,0,0,128,0,4,0,32,0,4,0,9,0,0,0,1,0,0,0,144,0,4,0,48,0,4,0,5,0,0,0,0,0,0,0,160,0,4,0,64,0,4,0,5,0,0,0,1,0,0,0,176,0,4,0,80,0,4,0,1,0,0,0,0,0,0,0,160,0,4,0,96,0,4,0,1,0,0,0,1,0,0,0,176,0,4,0,112,0,4,0,1,86,0,0,0,0,0,0,192,0,4,0,192,0,4,0,1,86,0,0,1,0,0,0,208,0,4,0,208,0,4,0,67,111,100,101,99,32,112,114,111,118,105,100,101,100,32,116,111,32,116,104,101,32,111,112,106,95,115,101,116,117,112,95,100,101,99,111,100,101,114,32,102,117,110,99,116,105,111,110,32,105,115,32,110,111,116,32,97,32,100,101,99,111,109,112,114,101,115,115,111,114,32,104,97,110,100,108,101,114,46,10,0,0,0,0,0,0,0,0,67,111,100,101,99,32,112,114,111,118,105,100,101,100,32,116,111,32,116,104,101,32,111,112,106,95,114,101,97,100,95,104,101,97,100,101,114,32,102,117,110,99,116,105,111,110,32,105,115,32,110,111,116,32,97,32,100,101,99,111,109,112,114,101,115,115,111,114,32,104,97,110,100,108,101,114,46,10,0,0,112,95,99,112,32,33,61,32,48,48,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,92,112,105,46,99,0,111,112,106,95,112,105,95,99,114,101,97,116,101,95,100,101,99,111,100,101,0,0,0,0,112,95,105,109,97,103,101,32,33,61,32,48,48,0,0,0,112,95,116,105,108,101,95,110,111,32,60,32,112,95,99,112,45,62,116,119,32,42,32,112,95,99,112,45,62,116,104,0,111,112,106,95,112,105,95,105,110,105,116,105,97,108,105,115,101,95,101,110,99,111,100,101,0,0,0,0,0,0,0,0,111,112,106,95,112,105,95,117,112,100,97,116,101,95,101,110,99,111,100,105,110,103,95,112,97,114,97,109,101,116,101,114,115,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,47,111,112,106,95,105,110,116,109,97,116,104,46,104,0,0,0,0,0,0,0,0,111,112,106,95,105,110,116,95,99,101,105,108,100,105,118,0,112,95,116,105,108,101,110,111,32,60,32,112,95,99,112,45,62,116,119,32,42,32,112,95,99,112,45,62,116,104,0,0,111,112,106,95,112,105,95,117,112,100,97,116,101,95,101,110,99,111,100,101,95,110,111,116,95,112,111,99,0,0,0,0,111,112,106,95,112,105,95,117,112,100,97,116,101,95,101,110,99,111,100,101,95,112,111,99,95,97,110,100,95,102,105,110,97,108,0,0,0,0,0,0,112,95,116,99,112,32,33,61,32,48,48,0,0,0,0,0,111,112,106,95,112,105,95,117,112,100,97,116,101,95,100,101,99,111,100,101,95,110,111,116,95,112,111,99,0,0,0,0,111,112,106,95,112,105,95,117,112,100,97,116,101,95,100,101,99,111,100,101,95,112,111,99,0,0,0,0,0,0,0,0,111,112,106,95,103,101,116,95,97,108,108,95,101,110,99,111,100,105,110,103,95,112,97,114,97,109,101,116,101,114,115,0,116,105,108,101,110,111,32,60,32,112,95,99,112,45,62,116,119,32,42,32,112,95,99,112,45,62,116,104,0,0,0,0,99,112,32,33,61,32,48,48,0,0,0,0,0,0,0,0,111,112,106,95,112,105,95,99,114,101,97,116,101,0,0,0,105,109,97,103,101,32,33,61,32,48,48,0,0,0,0,0,116,105,108,101,110,111,32,60,32,99,112,45,62,116,119,32,42,32,99,112,45,62,116,104,0,0,0,0,0,0,0,0,64,0,64,4,32,0,32,2,128,0,128,8,16,0,16,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,1,1,0,0,1,1,1,0,0,1,0,0,1,1,0,0,1,1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,10,12,13,10,10,13,13,12,13,12,13,13,13,13,13,9,10,12,11,10,9,13,12,12,11,12,11,13,12,13,12,9,10,12,11,10,10,11,11,12,13,9,10,13,13,10,10,9,10,12,13,10,9,11,12,12,11,9,10,13,12,10,9,9,10,12,13,10,9,11,12,12,13,12,13,11,12,11,12,9,10,12,11,10,10,11,11,12,11,12,11,11,11,11,11,9,10,12,11,10,9,13,12,12,13,9,10,11,12,10,9,9,10,12,13,10,10,13,13,12,11,9,10,11,11,10,10,9,10,12,13,10,10,13,13,12,11,9,10,11,11,10,10,9,10,12,11,10,9,13,12,12,13,9,10,11,12,10,9,9,10,12,11,10,10,11,11,12,11,12,11,11,11,11,11,9,10,12,13,10,9,11,12,12,13,12,13,11,12,11,12,9,10,12,13,10,9,11,12,12,11,9,10,13,12,10,9,9,10,12,11,10,10,11,11,12,13,9,10,13,13,10,10,9,10,12,11,10,9,13,12,12,11,12,11,13,12,13,12,9,10,12,13,10,10,13,13,12,13,12,13,13,13,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,1,0,3,128,4,0,6,128,7,0,9,128,10,0,12,128,13,0,15,128,16,0,18,128,19,0,21,128,22,0,24,128,25,0,27,128,28,0,30,128,31,0,33,128,34,0,36,128,37,0,39,128,40,0,42,128,43,0,45,128,46,0,48,128,49,0,51,128,52,0,54,128,55,0,57,128,58,0,60,128,61,0,63,128,64,0,66,128,67,0,69,128,70,0,72,128,73,0,75,128,76,0,78,128,79,0,81,128,82,0,84,128,85,0,87,128,88,0,90,128,91,0,93,128,94,0,96,128,97,0,99,128,100,0,102,128,103,0,105,128,106,0,108,128,109,0,111,128,112,0,114,128,115,0,117,128,118,0,0,0,0,0,0,0,0,0,0,0,0,128,0,128,0,128,0,128,0,0,1,0,1,0,1,128,1,128,1,0,2,0,2,128,2,128,2,0,3,0,3,128,3,0,4,0,4,128,4,0,5,128,5,128,5,0,6,128,6,0,7,128,7,0,8,128,8,0,9,128,9,0,10,128,10,128,11,0,12,128,12,0,13,0,14,128,14,0,15,0,16,128,16,128,17,0,18,0,19,128,19,128,20,0,21,0,22,0,23,128,23,128,24,128,25,128,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,128,38,128,39,128,40,128,41,0,43,0,44,0,45,128,46,128,47,0,49,0,50,128,51,128,52,0,54,0,55,128,56,0,58,0,59,128,60,0,62,128,63,128,64,0,66,128,67,0,69,128,70,0,72,128,73,0,75,128,76,0,78,128,79,128,81,0,83,128,84,0,86,0,88,128,89,0,91,0,93,128,94,128,96,0,98,0,100,128,101,128,103,0,105,0,107,0,109,128,110,128,112,128,114,128,116,0,118,0,120,0,122,0,124,0,126,0,1,1,2,1,2,2,2,1,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,1,1,2,1,2,2,2,1,2,2,2,2,2,2,2,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,1,1,2,1,2,2,2,1,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,3,3,6,3,6,6,8,3,6,6,8,6,8,8,8,1,4,4,7,4,7,7,8,4,7,7,8,7,8,8,8,1,4,4,7,4,7,7,8,4,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,1,4,4,7,4,7,7,8,4,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,1,4,4,7,4,7,7,8,4,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,2,5,5,7,5,7,7,8,5,7,7,8,7,8,8,8,0,24,128,23,0,23,128,22,0,22,128,21,0,21,128,20,0,20,128,19,0,19,128,18,0,18,128,17,0,17,128,16,0,16,128,15,0,15,128,14,0,14,128,13,0,13,128,12,0,12,128,11,0,11,128,10,0,10,128,9,0,9,128,8,0,8,128,7,0,7,128,6,0,6,128,5,0,5,128,4,0,4,128,3,0,3,128,2,0,2,128,1,0,1,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,1,128,1,0,2,128,2,0,3,128,3,0,4,128,4,0,5,128,5,0,6,128,6,0,7,128,7,0,8,128,8,0,9,128,9,0,10,128,10,0,11,128,11,0,12,128,12,0,13,128,13,0,14,128,14,0,15,128,15,0,16,128,16,0,17,128,17,0,18,128,18,0,19,128,19,0,20,128,20,0,21,128,21,0,22,128,22,0,23,128,23,0,32,0,31,0,30,0,29,0,28,0,27,128,26,128,25,128,24,128,23,0,23,0,22,0,21,128,20,128,19,0,19,0,18,128,17,128,16,0,16,0,15,128,14,0,14,0,13,128,12,0,12,128,11,128,10,0,10,128,9,0,9,128,8,0,8,128,7,0,7,128,6,0,6,128,5,128,5,0,5,128,4,0,4,0,4,128,3,0,3,0,3,128,2,128,2,0,2,0,2,128,1,128,1,0,1,0,1,0,1,128,0,128,0,128,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,128,0,128,0,128,0,0,1,0,1,0,1,128,1,128,1,0,2,0,2,128,2,128,2,0,3,0,3,128,3,0,4,0,4,128,4,0,5,128,5,128,5,0,6,128,6,0,7,128,7,0,8,128,8,0,9,128,9,0,10,128,10,128,11,0,12,128,12,0,13,0,14,128,14,0,15,0,16,128,16,128,17,0,18,0,19,128,19,128,20,0,21,0,22,0,23,128,23,128,24,128,25,128,26,0,27,0,28,0,29,0,30,0,31,115,107,105,112,58,32,115,101,103,109,101,110,116,32,116,111,111,32,108,111,110,103,32,40,37,100,41,32,119,105,116,104,32,109,97,120,32,40,37,100,41,32,102,111,114,32,99,111,100,101,98,108,111,99,107,32,37,100,32,40,112,61,37,100,44,32,98,61,37,100,44,32,114,61,37,100,44,32,99,61,37,100,41,10,0,0,0,0,69,114,114,111,114,32,58,32,101,120,112,101,99,116,101,100,32,83,79,80,32,109,97,114,107,101,114,10,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,115,112,97,99,101,32,102,111,114,32,101,120,112,101,99,116,101,100,32,69,80,72,32,109,97,114,107,101,114,10,0,0,0,0,0,0,0,69,114,114,111,114,32,58,32,101,120,112,101,99,116,101,100,32,69,80,72,32,109,97,114,107,101,114,10,0,0,0,0,99,32,62,61,32,100,101,115,116,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,92,116,50,46,99,0,111,112,106,95,116,50,95,101,110,99,111,100,101,95,112,97,99,107,101,116,0,0,0,0,114,101,97,100,58,32,115,101,103,109,101,110,116,32,116,111,111,32,108,111,110,103,32,40,37,100,41,32,119,105,116,104,32,109,97,120,32,40,37,100,41,32,102,111,114,32,99,111,100,101,98,108,111,99,107,32,37,100,32,40,112,61,37,100,44,32,98,61,37,100,44,32,114,61,37,100,44,32,99,61,37,100,41,10,0,0,0,0,116,105,108,101,115,32,114,101,113,117,105,114,101,32,97,116,32,108,101,97,115,116,32,111,110,101,32,114,101,115,111,108,117,116,105,111,110,10,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,104,97,110,100,108,101,32,116,105,108,101,32,100,97,116,97,10,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,116,105,108,101,32,114,101,115,111,108,117,116,105,111,110,115,10,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,104,97,110,100,108,101,32,98,97,110,100,32,112,114,101,99,105,110,116,115,10,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,102,111,114,32,99,117,114,114,101,110,116,32,112,114,101,99,105,110,99,116,32,99,111],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+256001);allocate([100,101,98,108,111,99,107,32,101,108,101,109,101,110,116,10,0,0,0,0,0,0,0,87,65,82,78,73,78,71,58,32,78,111,32,105,110,99,108,116,114,101,101,32,99,114,101,97,116,101,100,46,10,0,0,87,65,82,78,73,78,71,58,32,78,111,32,105,109,115,98,116,114,101,101,32,99,114,101,97,116,101,100,46,10,0,0,108,95,104,101,105,103,104,116,32,61,61,32,48,32,124,124,32,108,95,119,105,100,116,104,32,43,32,108,95,115,116,114,105,100,101,32,60,61,32,108,95,116,105,108,101,95,99,111,109,112,45,62,100,97,116,97,95,115,105,122,101,32,47,32,108,95,104,101,105,103,104,116,0,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,92,116,99,100,46,99,0,0,0,0,0,0,0,0,111,112,106,95,116,99,100,95,100,99,95,108,101,118,101,108,95,115,104,105,102,116,95,100,101,99,111,100,101,0,0,0,84,105,108,101,115,32,100,111,110,39,116,32,97,108,108,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,100,105,109,101,110,115,105,111,110,46,32,83,107,105,112,32,116,104,101,32,77,67,84,32,115,116,101,112,46,10,0,0,0,0,78,117,109,98,101,114,32,111,102,32,99,111,109,112,111,110,101,110,116,115,32,40,37,100,41,32,105,115,32,105,110,99,111,110,115,105,115,116,101,110,116,32,119,105,116,104,32,97,32,77,67,84,46,32,83,107,105,112,32,116,104,101,32,77,67,84,32,115,116,101,112,46,10,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,83,111,117,114,99,101,92,76,105,98,79,112,101,110,74,80,69,71,47,111,112,106,95,105,110,116,109,97,116,104,46,104,0,0,0,0,0,0,0,0,111,112,106,95,105,110,116,95,99,101,105,108,100,105,118,0,69,82,82,79,82,32,105,110,32,116,103,116,95,99,114,101,97,116,101,32,119,104,105,108,101,32,97,108,108,111,99,97,116,105,110,103,32,116,114,101,101,10,0,0,0,0,0,0,87,65,82,78,73,78,71,32,105,110,32,116,103,116,95,99,114,101,97,116,101,32,116,114,101,101,45,62,110,117,109,110,111,100,101,115,32,61,61,32,48,44,32,110,111,32,116,114,101,101,32,99,114,101,97,116,101,100,46,10,0,0,0,0,69,82,82,79,82,32,105,110,32,116,103,116,95,99,114,101,97,116,101,32,119,104,105,108,101,32,97,108,108,111,99,97,116,105,110,103,32,110,111,100,101,32,111,102,32,116,104,101,32,116,114,101,101,10,0,0,69,82,82,79,82,32,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,32,116,111,32,114,101,105,110,105,116,105,97,108,105,122,101,32,116,104,101,32,116,97,103,32,116,114,101,101,10,0,0,0,84,111,111,32,109,97,110,121,32,98,121,116,101,115,32,102,111,114,32,80,78,71,32,115,105,103,110,97,116,117,114,101,0,0,0,0,0,0,0,0,80,111,116,101,110,116,105,97,108,32,111,118,101,114,102,108,111,119,32,105,110,32,112,110,103,95,122,97,108,108,111,99,40,41,0,0,0,0,0,0,49,46,54,46,49,54,0,0,65,112,112,108,105,99,97,116,105,111,110,32,98,117,105,108,116,32,119,105,116,104,32,108,105,98,112,110,103,45,0,0,32,98,117,116,32,114,117,110,110,105,110,103,32,119,105,116,104,32,0,0,0,0,0,0,117,110,101,120,112,101,99,116,101,100,32,122,108,105,98,32,114,101,116,117,114,110,32,99,111,100,101,0,0,0,0,0,117,110,101,120,112,101,99,116,101,100,32,101,110,100,32,111,102,32,76,90,32,115,116,114,101,97,109,0,0,0,0,0,109,105,115,115,105,110,103,32,76,90,32,100,105,99,116,105,111,110,97,114,121,0,0,0,122,108,105,98,32,73,79,32,101,114,114,111,114,0,0,0,98,97,100,32,112,97,114,97,109,101,116,101,114,115,32,116,111,32,122,108,105,98,0,0,100,97,109,97,103,101,100,32,76,90,32,115,116,114,101,97,109,0,0,0,0,0,0,0,105,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,0,0,0,0,0,116,114,117,110,99,97,116,101,100,0,0,0,0,0,0,0,117,110,115,117,112,112,111,114,116,101,100,32,122,108,105,98,32,118,101,114,115,105,111,110,0,0,0,0,0,0,0,0,117,110,101,120,112,101,99,116,101,100,32,122,108,105,98,32,114,101,116,117,114,110,0,0,103,97,109,109,97,32,118,97,108,117,101,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,0,0,100,117,112,108,105,99,97,116,101,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,99,104,114,111,109,97,116,105,99,105,116,105,101,115,0,0,105,110,116,101,114,110,97,108,32,101,114,114,111,114,32,99,104,101,99,107,105,110,103,32,99,104,114,111,109,97,116,105,99,105,116,105,101,115,0,0,23,161,0,0,16,83,0,0,141,7,0,0,174,139,0,0,93,23,1,0,143,46,0,0,128,70,0,0,51,28,0,0,77,115,1,0,0,0,0,0,115,82,71,66,0,0,0,0,105,110,118,97,108,105,100,32,115,82,71,66,32,114,101,110,100,101,114,105,110,103,32,105,110,116,101,110,116,0,0,0,105,110,99,111,110,115,105,115,116,101,110,116,32,114,101,110,100,101,114,105,110,103,32,105,110,116,101,110,116,115,0,0,100,117,112,108,105,99,97,116,101,32,115,82,71,66,32,105,110,102,111,114,109,97,116,105,111,110,32,105,103,110,111,114,101,100,0,0,0,0,0,0,0,250,0,0,232,128,0,0,48,117,0,0,96,234,0,0,152,58,0,0,112,23,0,0,38,122,0,0,132,128,0,0,99,72,82,77,32,99,104,117,110,107,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,115,82,71,66,0,0,116,111,111,32,115,104,111,114,116,0,0,0,0,0,0,0,108,101,110,103,116,104,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,112,114,111,102,105,108,101,0,0,0,105,110,118,97,108,105,100,32,108,101,110,103,116,104,0,0,116,97,103,32,99,111,117,110,116,32,116,111,111,32,108,97,114,103,101,0,0,0,0,0,105,110,118,97,108,105,100,32,114,101,110,100,101,114,105,110,103,32,105,110,116,101,110,116,0,0,0,0,0,0,0,0,105,110,116,101,110,116,32,111,117,116,115,105,100,101,32,100,101,102,105,110,101,100,32,114,97,110,103,101,0,0,0,0,105,110,118,97,108,105,100,32,115,105,103,110,97,116,117,114,101,0,0,0,0,0,0,0,0,0,246,214,0,1,0,0,0,0,211,45,0,0,0,0,80,67,83,32,105,108,108,117,109,105,110,97,110,116,32,105,115,32,110,111,116,32,68,53,48,0,0,0,0,0,0,0,82,71,66,32,99,111,108,111,114,32,115,112,97,99,101,32,110,111,116,32,112,101,114,109,105,116,116,101,100,32,111,110,32,103,114,97,121,115,99,97,108,101,32,80,78,71,0,0,71,114,97,121,32,99,111,108,111,114,32,115,112,97,99,101,32,110,111,116,32,112,101,114,109,105,116,116,101,100,32,111,110,32,82,71,66,32,80,78,71,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,73,67,67,32,112,114,111,102,105,108,101,32,99,111,108,111,114,32,115,112,97,99,101,0,105,110,118,97,108,105,100,32,101,109,98,101,100,100,101,100,32,65,98,115,116,114,97,99,116,32,73,67,67,32,112,114,111,102,105,108,101,0,0,0,117,110,101,120,112,101,99,116,101,100,32,68,101,118,105,99,101,76,105,110,107,32,73,67,67,32,112,114,111,102,105,108,101,32,99,108,97,115,115,0,117,110,101,120,112,101,99,116,101,100,32,78,97,109,101,100,67,111,108,111,114,32,73,67,67,32,112,114,111,102,105,108,101,32,99,108,97,115,115,0,117,110,114,101,99,111,103,110,105,122,101,100,32,73,67,67,32,112,114,111,102,105,108,101,32,99,108,97,115,115,0,0,117,110,101,120,112,101,99,116,101,100,32,73,67,67,32,80,67,83,32,101,110,99,111,100,105,110,103,0,0,0,0,0,73,67,67,32,112,114,111,102,105,108,101,32,116,97,103,32,115,116,97,114,116,32,110,111,116,32,97,32,109,117,108,116,105,112,108,101,32,111,102,32,52,0,0,0,0,0,0,0,73,67,67,32,112,114,111,102,105,108,101,32,116,97,103,32,111,117,116,115,105,100,101,32,112,114,111,102,105,108,101,0,105,110,116,101,114,110,97,108,32,101,114,114,111,114,32,104,97,110,100,108,105,110,103,32,99,72,82,77,32,99,111,101,102,102,105,99,105,101,110,116,115,0,0,0,0,0,0,0,105,110,116,101,114,110,97,108,32,101,114,114,111,114,32,104,97,110,100,108,105,110,103,32,99,72,82,77,45,62,88,89,90,0,0,0,0,0,0,0,73,109,97,103,101,32,119,105,100,116,104,32,105,115,32,122,101,114,111,32,105,110,32,73,72,68,82,0,0,0,0,0,73,110,118,97,108,105,100,32,105,109,97,103,101,32,119,105,100,116,104,32,105,110,32,73,72,68,82,0,0,0,0,0,73,109,97,103,101,32,119,105,100,116,104,32,105,115,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,116,104,105,115,32,97,114,99,104,105,116,101,99,116,117,114,101,0,0,73,109,97,103,101,32,119,105,100,116,104,32,101,120,99,101,101,100,115,32,117,115,101,114,32,108,105,109,105,116,32,105,110,32,73,72,68,82,0,0,73,109,97,103,101,32,104,101,105,103,104,116,32,105,115,32,122,101,114,111,32,105,110,32,73,72,68,82,0,0,0,0,73,110,118,97,108,105,100,32,105,109,97,103,101,32,104,101,105,103,104,116,32,105,110,32,73,72,68,82,0,0,0,0,73,109,97,103,101,32,104,101,105,103,104,116,32,101,120,99,101,101,100,115,32,117,115,101,114,32,108,105,109,105,116,32,105,110,32,73,72,68,82,0,73,110,118,97,108,105,100,32,98,105,116,32,100,101,112,116,104,32,105,110,32,73,72,68,82,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,99,111,108,111,114,32,116,121,112,101,32,105,110,32,73,72,68,82,0,0,0,0,0,0,73,110,118,97,108,105,100,32,99,111,108,111,114,32,116,121,112,101,47,98,105,116,32,100,101,112,116,104,32,99,111,109,98,105,110,97,116,105,111,110,32,105,110,32,73,72,68,82,0,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,105,110,116,101,114,108,97,99,101,32,109,101,116,104,111,100,32,105,110,32,73,72,68,82,0,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,99,111,109,112,114,101,115,115,105,111,110,32,109,101,116,104,111,100,32,105,110,32,73,72,68,82,0,0,0,0,0,0,77,78,71,32,102,101,97,116,117,114,101,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,97,32,80,78,71,32,100,97,116,97,115,116,114,101,97,109,0,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,102,105,108,116,101,114,32,109,101,116,104,111,100,32,105,110,32,73,72,68,82,0,0,0,73,110,118,97,108,105,100,32,102,105,108,116,101,114,32,109,101,116,104,111,100,32,105,110,32,73,72,68,82,0,0,0,73,110,118,97,108,105,100,32,73,72,68,82,32,100,97,116,97,0,0,0,0,0,0,0,103,97,109,109,97,32,116,97,98,108,101,32,98,101,105,110,103,32,114,101,98,117,105,108,116,0,0,0,0,0,0,0,112,114,111,102,105,108,101,32,39,0,0,0,0,0,0,0,39,58,32,0,0,0,0,0,104,58,32,0,0,0,0,0,105,110,99,111,110,115,105,115,116,101,110,116,32,99,104,114,111,109,97,116,105,99,105,116,105,101,115,0,0,0,0,0,103,97,109,109,97,32,118,97,108,117,101,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,115,82,71,66,0,103,97,109,109,97,32,118,97,108,117,101,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,108,105,98,112,110,103,32,101,115,116,105,109,97,116,101,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,0,0,0,0,0,0,0,0,49,50,51,52,53,54,55,56,57,0,0,0,0,0,0,0,102,105,120,101,100,32,112,111,105,110,116,32,111,118,101,114,102,108,111,119,32,105,110,32,0,0,0,0,0,0,0,0,76,105,98,112,110,103,32,106,109,112,95,98,117,102,32,115,116,105,108,108,32,97,108,108,111,99,97,116,101,100,0,0,65,112,112,108,105,99,97,116,105,111,110,32,106,109,112,95,98,117,102,32,115,105,122,101,32,99,104,97,110,103,101,100,0,0,0,0,0,0,0,0,108,105,98,112,110,103,32,119,97,114,110,105,110,103,58,32,37,115,0,0,0,0,0,0,108,105,98,112,110,103,32,101,114,114,111,114,58,32,37,115,0,0,0,0,0,0,0,0,117,110,100,101,102,105,110,101,100,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,105,110,116,101,114,110,97,108,32,101,114,114,111,114,58,32,97,114,114,97,121,32,97,108,108,111,99,0,0,0,0,0,105,110,116,101,114,110,97,108,32,101,114,114,111,114,58,32,97,114,114,97,121,32,114,101,97,108,108,111,99,0,0,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,77,105,115,115,105,110,103,32,73,72,68,82,32,98,101,102,111,114,101,32,73,68,65,84,0,0,0,0,0,0,0,0,77,105,115,115,105,110,103,32,80,76,84,69,32,98,101,102,111,114,101,32,73,68,65,84,0,0,0,0,0,0,0,0,84,111,111,32,109,97,110,121,32,73,68,65,84,115,32,102,111,117,110,100,0,0,0,0,112,110,103,95,114,101,97,100,95,117,112,100,97,116,101,95,105,110,102,111,47,112,110,103,95,115,116,97,114,116,95,114,101,97,100,95,105,109,97,103,101,58,32,100,117,112,108,105,99,97,116,101,32,99,97,108,108,0,0,0,0,0,0,0,112,110,103,95,115,116,97,114,116,95,114,101,97,100,95,105,109,97,103,101,47,112,110,103,95,114,101,97,100,95,117,112,100,97,116,101,95,105,110,102,111,58,32,100,117,112,108,105,99,97,116,101,32,99,97,108,108,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,97,116,116,101,109,112,116,32,116,111,32,114,101,97,100,32,114,111,119,32,100,97,116,97,0,0,0,0,0,0,0,0,98,97,100,32,97,100,97,112,116,105,118,101,32,102,105,108,116,101,114,32,118,97,108,117,101,0,0,0,0,0,0,0,115,101,113,117,101,110,116,105,97,108,32,114,111,119,32,111,118,101,114,102,108,111,119,0,105,110,116,101,114,110,97,108,32,115,101,113,117,101,110,116,105,97,108,32,114,111,119,32,115,105,122,101,32,99,97,108,99,117,108,97,116,105,111,110,32,101,114,114,111,114,0,0,73,110,116,101,114,108,97,99,101,32,104,97,110,100,108,105,110,103,32,115,104,111,117,108,100,32,98,101,32,116,117,114,110,101,100,32,111,110,32,119,104,101,110,32,117,115,105,110,103,32,112,110,103,95,114,101,97,100,95,105,109,97,103,101,0,0,0,0,0,0,0,0,82,101,97,100,32,112,97,108,101,116,116,101,32,105,110,100,101,120,32,101,120,99,101,101,100,105,110,103,32,110,117,109,95,112,97,108,101,116,116,101,0,0,0,0,0,0,0,0,67,97,108,108,32,116,111,32,78,85,76,76,32,114,101,97,100,32,102,117,110,99,116,105,111,110,0,0,0,0,0,0,82,101,97,100,32,69,114,114,111,114,0,0,0,0,0,0,67,97,110,39,116,32,115,101,116,32,98,111,116,104,32,114,101,97,100,95,100,97,116,97,95,102,110,32,97,110,100,32,119,114,105,116,101,95,100,97,116,97,95,102,110,32,105,110,32,116,104,101,32,115,97,109,101,32,115,116,114,117,99,116,117,114,101,0,0,0,0,0,105,110,118,97,108,105,100,32,102,105,108,101,32,103,97,109,109,97,32,105,110,32,112,110,103,95,115,101,116,95,103,97,109,109,97,0,0,0,0,0,105,110,118,97,108,105,100,32,115,99,114,101,101,110,32,103,97,109,109,97,32,105,110,32,112,110,103,95,115,101,116,95,103,97,109,109,97,0,0,0,108,105,98,112,110,103,32,100,111,101,115,32,110,111,116,32,115,117,112,112,111,114,116,32,103,97,109,109,97,43,98,97,99,107,103,114,111,117,110,100,43,114,103,98,95,116,111,95,103,114,97,121,0,0,0,0,105,110,118,97,108,105,100,32,98,97,99,107,103,114,111,117,110,100,32,103,97,109,109,97,32,116,121,112,101,0,0,0,80,97,108,101,116,116,101,32,105,115,32,78,85,76,76,32,105,110,32,105,110,100,101,120,101,100,32,105,109,97,103,101,0,0,0,0,0,0,0,0,78,85,76,76,32,114,111,119,32,98,117,102,102,101,114,0,85,110,105,110,105,116,105,97,108,105,122,101,100,32,114,111,119,0,0,0,0,0,0,0,112,110,103,95,100,111,95,114,103,98,95,116,111,95,103,114,97,121,32,102,111,117,110,100,32,110,111,110,103,114,97,121,32,112,105,120,101,108,0,0,112,110,103,95,100,111,95,113,117,97,110,116,105,122,101,32,114,101,116,117,114,110,101,100,32,114,111,119,98,121,116,101,115,61,48,0,0,0,0,0,112,110,103,95,100,111,95,101,110,99,111,100,101,95,97,108,112,104,97,58,32,117,110,101,120,112,101,99,116,101,100,32,99,97,108,108,0,0,0,0,103,97,109,109,97,32,118,97,108,117,101,0,0,0,0,0,105,110,118,97,108,105,100,32,97,102,116,101,114,32,112,110,103,95,115,116,97,114,116,95,114,101,97,100,95,105,109,97,103,101,32,111,114,32,112,110,103,95,114,101,97,100,95,117,112,100,97,116,101,95,105,110,102,111,0,0,0,0,0,0,80,78,71,32,117,110,115,105,103,110,101,100,32,105,110,116,101,103,101,114,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,0,78,111,116,32,97,32,80,78,71,32,102,105,108,101,0,0,80,78,71,32,102,105,108,101,32,99,111,114,114,117,112,116,101,100,32,98,121,32,65,83,67,73,73,32,99,111,110,118,101,114,115,105,111,110,0,0,67,82,67,32,101,114,114,111,114,0,0,0,0,0,0,0,111,117,116,32,111,102,32,112,108,97,99,101,0,0,0,0,105,110,118,97,108,105,100,0,109,105,115,115,105,110,103,32,73,72,68,82,0,0,0,0,100,117,112,108,105,99,97,116,101,0,0,0,0,0,0,0,105,103,110,111,114,101,100,32,105,110,32,103,114,97,121,115,99,97,108,101,32,80,78,71,0,0,0,0,0,0,0,0,116,82,78,83,32,109,117,115,116,32,98,101,32,97,102,116,101,114,0,0,0,0,0,0,104,73,83,84,32,109,117,115,116,32,98,101,32,97,102,116,101,114,0,0,0,0,0,0,98,75,71,68,32,109,117,115,116,32,98,101,32,97,102,116,101,114,0,0,0,0,0,0,105,110,118,97,108,105,100,32,118,97,108,117,101,115,0,0,116,111,111,32,109,97,110,121,32,112,114,111,102,105,108,101,115,0,0,0,0,0,0,0,116,111,111,32,115,104,111,114,116,0,0,0,0,0,0,0,101,120,116,114,97,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,0,0,0,111,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,116,114,117,110,99,97,116,101,100,0,0,0,0,0,0,0,98,97,100,32,99,111,109,112,114,101,115,115,105,111,110,32,109,101,116,104,111,100,0,0,98,97,100,32,107,101,121,119,111,114,100,0,0,0,0,0,78,111,32,115,112,97,99,101,32,105,110,32,99,104,117,110,107,32,99,97,99,104,101,32,102,111,114,32,115,80,76,84,0,0,0,0,0,0,0,0,109,97,108,102,111,114,109,101,100,32,115,80,76,84,32,99,104,117,110,107,0,0,0,0,115,80,76,84,32,99,104,117,110,107,32,104,97,115,32,98,97,100,32,108,101,110,103,116,104,0,0,0,0,0,0,0,115,80,76,84,32,99,104,117,110,107,32,116,111,111,32,108,111,110,103,0,0,0,0,0,115,80,76,84,32,99,104,117,110,107,32,114,101,113,117,105,114,101,115,32,116,111,111,32,109,117,99,104,32,109,101,109,111,114,121,0,0,0,0,0,105,110,118,97,108,105,100,32,119,105,116,104,32,97,108,112,104,97,32,99,104,97,110,110,101,108,0,0,0,0,0,0,105,110,118,97,108,105,100,32,105,110,100,101,120,0,0,0,105,110,118,97,108,105,100,32,112,97,114,97,109,101,116,101,114,32,99,111,117,110,116,0,117,110,114,101,99,111,103,110,105,122,101,100,32,101,113,117,97,116,105,111,110,32,116,121,112,101,0,0,0,0,0,0,105,110,118,97,108,105,100,32,100,97,116,97,0,0,0,0,105,110,118,97,108,105,100,32,117,110,105,116,0,0,0,0,98,97,100,32,119,105,100,116,104,32,102,111,114,109,97,116,0,0,0,0,0,0,0,0,110,111,110,45,112,111,115,105,116,105,118,101,32,119,105,100,116,104,0,0,0,0,0,0,98,97,100,32,104,101,105,103,104,116,32,102,111,114,109,97,116,0,0,0,0,0,0,0,110,111,110,45,112,111,115,105,116,105,118,101,32,104,101,105,103,104,116,0,0,0,0,0,110,111,32,115,112,97,99,101,32,105,110,32,99,104,117,110,107,32,99,97,99,104,101,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,116,111,32,112,114,111,99,101,115,115,32,116,101,120,116,32,99,104,117,110,107,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,99,111,109,112,114,101,115,115,105,111,110,32,116,121,112,101,0,0,0,0,0,0,0,0,105,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,0,0,0,0,0,98,97,100,32,99,111,109,112,114,101,115,115,105,111,110,32,105,110,102,111,0,0,0,0,101,114,114,111,114,32,105,110,32,117,115,101,114,32,99,104,117,110,107,0,0,0,0,0,83,97,118,105,110,103,32,117,110,107,110,111,119,110,32,99,104,117,110,107,58,0,0,0,102,111,114,99,105,110,103,32,115,97,118,101,32,111,102,32,97,110,32,117,110,104,97,110,100,108,101,100,32,99,104,117,110,107,59,32,112,108,101,97,115,101,32,99,97,108,108,32,112,110,103,95,115,101,116,95,107,101,101,112,95,117,110,107,110,111,119,110,95,99,104,117,110,107,115,0,0,0,0,0,117,110,104,97,110,100,108,101,100,32,99,114,105,116,105,99,97,108,32,99,104,117,110,107,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,99,104,117,110,107,32,116,121,112,101,0,0,0,0,0,0,105,110,116,101,114,110,97,108,32,114,111,119,32,108,111,103,105,99,32,101,114,114,111,114,0,0,0,0,0,0,0,0,105,110,116,101,114,110,97,108,32,114,111,119,32,115,105,122,101,32,99,97,108,99,117,108,97,116,105,111,110,32,101,114,114,111,114,0,0,0,0,0,105,110,116,101,114,110,97,108,32,114,111,119,32,119,105,100,116,104,32,101,114,114,111,114,0,0,0,0,0,0,0,0,1,1,1,1,16,16,16,16,17,17,17,17,68,68,68,68,85,85,85,85,170,170,170,170,3,0,3,0,0,3,0,3,3,3,3,3,48,48,48,48,51,51,51,51,204,204,204,204,15,0,0,0,0,0,15,0,15,0,15,0,0,15,0,15,15,15,15,15,240,240,240,240,128,128,128,128,8,8,8,8,136,136,136,136,34,34,34,34,170,170,170,170,85,85,85,85,192,0,192,0,0,192,0,192,192,192,192,192,12,12,12,12,204,204,204,204,51,51,51,51,240,0,0,0,0,0,240,0,240,0,240,0,0,240,0,240,240,240,240,240,15,15,15,15,240,240,240,240,204,204,204,204,170,170,170,170,0,255,0,255,240,240,240,240,204,204,204,204,0,0,255,255,0,255,0,255,240,240,240,240,15,15,15,15,51,51,51,51,85,85,85,85,0,255,0,255,15,15,15,15,51,51,51,51,0,0,255,255,0,255,0,255,15,15,15,15,105,110,118,97,108,105,100,32,117,115,101,114,32,116,114,97,110,115,102,111,114,109,32,112,105,120,101,108,32,100,101,112,116,104,0,0,0,0,0,0,8,0,0,0,8,0,0,0,4,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,78,111,116,32,101,110,111,117,103,104,32,105,109,97,103,101,32,100,97,116,97,0,0,0,69,120,116,114,97,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,0,0,0,84,111,111,32,109,117,99,104,32,105,109,97,103,101,32,100,97,116,97,0,0,0,0,0,0,0,4,0,2,0,1,0,8,8,8,4,4,2,2,0,0,4,0,2,0,1,0,0,8,8,4,4,2,2,1,0,82,111,119,32,104,97,115,32,116,111,111,32,109,97,110,121,32,98,121,116,101,115,32,116,111,32,97,108,108,111,99,97,116,101,32,105,110,32,109,101,109,111,114,121,0,0,0,0,117,110,107,110,111,119,110,32,99,104,117,110,107,32,101,120,99,101,101,100,115,32,109,101,109,111,114,121,32,108,105,109,105,116,115,0,0,0,0,0,122,115,116,114,101,97,109,32,117,110,99,108,97,105,109,101,100,0,0,0,0,0,0,0,105,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,116,111,32,114,101,97,100,32,99,104,117,110,107,0,0,0,0,0,0,0,32,117,115,105,110,103,32,122,115,116,114,101,97,109,0,0,49,46,50,46,56,0,0,0,73,110,118,97,108,105,100,32,112,97,108,101,116,116,101,32,115,105,122,101,44,32,104,73,83,84,32,97,108,108,111,99,97,116,105,111,110,32,115,107,105,112,112,101,100,0,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,102,111,114,32,104,73,83,84,32,99,104,117,110,107,32,100,97,116,97,0,73,110,118,97,108,105,100,32,112,67,65,76,32,101,113,117,97,116,105,111,110,32,116,121,112,101,0,0,0,0,0,0,73,110,118,97,108,105,100,32,112,67,65,76,32,112,97,114,97,109,101,116,101,114,32,99,111,117,110,116,0,0,0,0,73,110,118,97,108,105,100,32,102,111,114,109,97,116,32,102,111,114,32,112,67,65,76,32,112,97,114,97,109,101,116,101,114,0,0,0,0,0,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,102,111,114,32,112,67,65,76,32,112,117,114,112,111,115,101,0,0,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,102,111,114,32,112,67,65,76,32,117,110,105,116,115,0,0,0,0,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,102,111,114,32,112,67,65,76,32,112,97,114,97,109,115,0,0,0,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,102,111,114,32,112,67,65,76,32,112,97,114,97,109,101,116,101,114,0,0,73,110,118,97,108,105,100,32,115,67,65,76,32,117,110,105,116,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,115,67,65,76,32,119,105,100,116,104,0,0,0,0,0,0,73,110,118,97,108,105,100,32,115,67,65,76,32,104,101,105,103,104,116,0,0,0,0,0,77,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,32,119,104,105,108,101,32,112,114,111,99,101,115,115,105,110,103,32,115,67,65,76,0,0,73,110,118,97,108,105,100,32,112,97,108,101,116,116,101,32,108,101,110,103,116,104,0,0,73,110,118,97,108,105,100,32,112,97,108,101,116,116,101,0,73,110,118,97,108,105,100,32,105,67,67,80,32,99,111,109,112,114,101,115,115,105,111,110,32,109,101,116,104,111,100,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,116,111,32,112,114,111,99,101,115,115,32,105,67,67,80,32,99,104,117,110,107,0,0,0,0,0,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,116,111,32,112,114,111,99,101,115,115,32,105,67,67,80,32,112,114,111,102,105,108,101,0,0,0,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,116,111,32,115,116,111,114,101,32,116,101,120,116,0,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,116,101,120,116,32,99,104,117,110,107,115,0,0,0,0,116,101,120,116,32,99,111,109,112,114,101,115,115,105,111,110,32,109,111,100,101,32,105,115,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,116,101,120,116,32,99,104,117,110,107,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,0,0,73,103,110,111,114,105,110,103,32,105,110,118,97,108,105,100,32,116,105,109,101,32,118,97,108,117,101,0,0,0,0,0,116,82,78,83,32,99,104,117,110,107,32,104,97,115,32,111,117,116,45,111,102,45,114,97,110,103,101,32,115,97,109,112,108,101,115,32,102,111,114,32,98,105,116,95,100,101,112,116,104,0,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,115,80,76,84,32,99,104,117,110,107,115,0,0,0,0,112,110,103,95,115,101,116,95,115,80,76,84,58,32,105,110,118,97,108,105,100,32,115,80,76,84,0,0,0,0,0,0,115,80,76,84,32,111,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,117,110,107,110,111,119,110,32,99,104,117,110,107,115,0,117,110,107,110,111,119,110,32,99,104,117,110,107,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,0,112,110,103,95,115,101,116,95,117,110,107,110,111,119,110,95,99,104,117,110,107,115,32,110,111,119,32,101,120,112,101,99,116,115,32,97,32,118,97,108,105,100,32,108,111,99,97,116,105,111,110,0,0,0,0,0,105,110,118,97,108,105,100,32,108,111,99,97,116,105,111,110,32,105,110,32,112,110,103,95,115,101,116,95,117,110,107,110,111,119,110,95,99,104,117,110,107,115,0,0,0,0,0,0,0,128,64,192,32,160,96,224,16,144,80,208,48,176,112,240,8,136,72,200,40,168,104,232,24,152,88,216,56,184,120,248,4,132,68,196,36,164,100,228,20,148,84,212,52,180,116,244,12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,3,131,67,195,35,163,99,227,19,147,83,211,51,179,115,243,11,139,75,203,43,171,107,235,27,155,91,219,59,187,123,251,7,135,71,199,39,167,103,231,23,151,87,215,55,183,119,247,15,143,79,207,47,175,111,239,31,159,95,223,63,191,127,255,0,64,128,192,16,80,144,208,32,96,160,224,48,112,176,240,4,68,132,196,20,84,148,212,36,100,164,228,52,116,180,244,8,72,136,200,24,88,152,216,40,104,168,232,56,120,184,248,12,76,140,204,28,92,156,220,44,108,172,236,60,124,188,252,1,65,129,193,17,81,145,209,33,97,161,225,49,113,177,241,5,69,133,197,21,85,149,213,37,101,165,229,53,117,181,245,9,73,137,201,25,89,153,217,41,105,169,233,57,121,185,249,13,77,141,205,29,93,157,221,45,109,173,237,61,125,189,253,2,66,130,194,18,82,146,210,34,98,162,226,50,114,178,242,6,70,134,198,22,86,150,214,38,102,166,230,54,118,182,246,10,74,138,202,26,90,154,218,42,106,170,234,58,122,186,250,14,78,142,206,30,94,158,222,46,110,174,238,62,126,190,254,3,67,131,195,19,83,147,211,35,99,163,227,51,115,179,243,7,71,135,199,23,87,151,215,39,103,167,231,55,119,183,247,11,75,139,203,27,91,155,219,43,107,171,235,59,123,187,251,15,79,143,207,31,95,159,223,47,111,175,239,63,127,191,255,0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,1,17,33,49,65,81,97,113,129,145,161,177,193,209,225,241,2,18,34,50,66,82,98,114,130,146,162,178,194,210,226,242,3,19,35,51,67,83,99,115,131,147,163,179,195,211,227,243,4,20,36,52,68,84,100,116,132,148,164,180,196,212,228,244,5,21,37,53,69,85,101,117,133,149,165,181,197,213,229,245,6,22,38,54,70,86,102,118,134,150,166,182,198,214,230,246,7,23,39,55,71,87,103,119,135,151,167,183,199,215,231,247,8,24,40,56,72,88,104,120,136,152,168,184,200,216,232,248,9,25,41,57,73,89,105,121,137,153,169,185,201,217,233,249,10,26,42,58,74,90,106,122,138,154,170,186,202,218,234,250,11,27,43,59,75,91,107,123,139,155,171,187,203,219,235,251,12,28,44,60,76,92,108,124,140,156,172,188,204,220,236,252,13,29,45,61,77,93,109,125,141,157,173,189,205,221,237,253,14,30,46,62,78,94,110,126,142,158,174,190,206,222,238,254,15,31,47,63,79,95,111,127,143,159,175,191,207,223,239,255,67,97,108,108,32,116,111,32,78,85,76,76,32,119,114,105,116,101,32,102,117,110,99,116,105,111,110,0,0,0,0,0,87,114,105,116,101,32,69,114,114,111,114,0,0,0,0,0,67,97,110,39,116,32,115,101,116,32,98,111,116,104,32,114,101,97,100,95,100,97,116,97,95,102,110,32,97,110,100,32,119,114,105,116,101,95,100,97,116,97,95,102,110,32,105,110,32,116,104,101,32,115,97,109,101,32,115,116,114,117,99,116,117,114,101,0,0,0,0,0,77,78,71,32,102,101,97,116,117,114,101,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,97,32,80,78,71,32,100,97,116,97,115,116,114,101,97,109,0,0,0,0,0,0,0,0,112,114,111,102,105,108,101,32,109,97,116,99,104,101,115,32,115,82,71,66,32,98,117,116,32,119,114,105,116,105,110,103,32,105,67,67,80,32,105,110,115,116,101,97,100,0,0,0,86,97,108,105,100,32,112,97,108,101,116,116,101,32,114,101,113,117,105,114,101,100,32,102,111,114,32,112,97,108,101,116,116,101,100,32,105,109,97,103,101,115,0,0,0,0,0,0,78,111,32,73,68,65,84,115,32,119,114,105,116,116,101,110,32,105,110,116,111,32,102,105,108,101,0,0,0,0,0,0,87,114,111,116,101,32,112,97,108,101,116,116,101,32,105,110,100,101,120,32,101,120,99,101,101,100,105,110,103,32,110,117,109,95,112,97,108,101,116,116,101,0,0,0,0,0,0,0,112,110,103,95,119,114,105,116,101,95,105,110,102,111,32,119,97,115,32,110,101,118,101,114,32,99,97,108,108,101,100,32,98,101,102,111,114,101,32,112,110,103,95,119,114,105,116,101,95,114,111,119,0,0,0,0,105,110,116,101,114,110,97,108,32,119,114,105,116,101,32,116,114,97,110,115,102,111,114,109,32,108,111,103,105,99,32,101,114,114,111,114,0,0,0,0,85,110,107,110,111,119,110,32,114,111,119,32,102,105,108,116,101,114,32,102,111,114,32,109,101,116,104,111,100,32,48,0,67,97,110,39,116,32,97,100,100,32,85,112,32,102,105,108,116,101,114,32,97,102,116,101,114,32,115,116,97,114,116,105,110,103,0,0,0,0,0,0,67,97,110,39,116,32,97,100,100,32,65,118,101,114,97,103,101,32,102,105,108,116,101,114,32,97,102,116,101,114,32,115,116,97,114,116,105,110,103,0,67,97,110,39,116,32,97,100,100,32,80,97,101,116,104,32,102,105,108,116,101,114,32,97,102,116,101,114,32,115,116,97,114,116,105,110,103,0,0,0,85,110,107,110,111,119,110,32,99,117,115,116,111,109,32,102,105,108,116,101,114,32,109,101,116,104,111,100,0,0,0,0,87,114,105,116,105,110,103,32,122,101,114,111,45,108,101,110,103,116,104,32,117,110,107,110,111,119,110,32,99,104,117,110,107,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,98,105,116,32,100,101,112,116,104,32,102,111,114,32,103,114,97,121,115,99,97,108,101,32,105,109,97,103,101,0,0,0,73,110,118,97,108,105,100,32,98,105,116,32,100,101,112,116,104,32,102,111,114,32,82,71,66,32,105,109,97,103,101,0,73,110,118,97,108,105,100,32,98,105,116,32,100,101,112,116,104,32,102,111,114,32,112,97,108,101,116,116,101,100,32,105,109,97,103,101,0,0,0,0,73,110,118,97,108,105,100,32,98,105,116,32,100,101,112,116,104,32,102,111,114,32,103,114,97,121,115,99,97,108,101,43,97,108,112,104,97,32,105,109,97,103,101,0,0,0,0,0,73,110,118,97,108,105,100,32,98,105,116,32,100,101,112,116,104,32,102,111,114,32,82,71,66,65,32,105,109,97,103,101,0,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,105,109,97,103,101,32,99,111,108,111,114,32,116,121,112,101,32,115,112,101,99,105,102,105,101,100,0,0,0,0,0,0,73,110,118,97,108,105,100,32,99,111,109,112,114,101,115,115,105,111,110,32,116,121,112,101,32,115,112,101,99,105,102,105,101,100,0,0,0,0,0,0,73,110,118,97,108,105,100,32,102,105,108,116,101,114,32,116,121,112,101,32,115,112,101,99,105,102,105,101,100,0,0,0,73,110,118,97,108,105,100,32,105,110,116,101,114,108,97,99,101,32,116,121,112,101,32,115,112,101,99,105,102,105,101,100,0,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,99,111,108,111,114,115,32,105,110,32,112,97,108,101,116,116,101,0,0,0,0,0,73,103,110,111,114,105,110,103,32,114,101,113,117,101,115,116,32,116,111,32,119,114,105,116,101,32,97,32,80,76,84,69,32,99,104,117,110,107,32,105,110,32,103,114,97,121,115,99,97,108,101,32,80,78,71,0,90,95,79,75,32,111,110,32,90,95,70,73,78,73,83,72,32,119,105,116,104,32,111,117,116,112,117,116,32,115,112,97,99,101,0,0,0,0,0,0,73,110,118,97,108,105,100,32,115,82,71,66,32,114,101,110,100,101,114,105,110,103,32,105,110,116,101,110,116,32,115,112,101,99,105,102,105,101,100,0,78,111,32,112,114,111,102,105,108,101,32,102,111,114,32,105,67,67,80,32,99,104,117,110,107,0,0,0,0,0,0,0,73,67,67,32,112,114,111,102,105,108,101,32,116,111,111,32,115,104,111,114,116,0,0,0,73,67,67,32,112,114,111,102,105,108,101,32,108,101,110,103,116,104,32,105,110,118,97,108,105,100,32,40,110,111,116,32,97,32,109,117,108,116,105,112,108,101,32,111,102,32,52,41,0,0,0,0,0,0,0,0,105,67,67,80,58,32,105,110,118,97,108,105,100,32,107,101,121,119,111,114,100,0,0,0,115,80,76,84,58,32,105,110,118,97,108,105,100,32,107,101,121,119,111,114,100,0,0,0,73,110,118,97,108,105,100,32,115,66,73,84,32,100,101,112,116,104,32,115,112,101,99,105,102,105,101,100,0,0,0,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,116,114,97,110,115,112,97,114,101,110,116,32,99,111,108,111,114,115,32,115,112,101,99,105,102,105,101,100,0,0,73,103,110,111,114,105,110,103,32,97,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,116,82,78,83,32,99,104,117,110,107,32,111,117,116,45,111,102,45,114,97,110,103,101,32,102,111,114,32,98,105,116,95,100,101,112,116,104,0,73,103,110,111,114,105,110,103,32,97,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,49,54,45,98,105,116,32,116,82,78,83,32,99,104,117,110,107,32,119,104,101,110,32,98,105,116,95,100,101,112,116,104,32,105,115,32,56,0,67,97,110,39,116,32,119,114,105,116,101,32,116,82,78,83,32,119,105,116,104,32,97,110,32,97,108,112,104,97,32,99,104,97,110,110,101,108,0,0,73,110,118,97,108,105,100,32,98,97,99,107,103,114,111,117,110,100,32,112,97,108,101,116,116,101,32,105,110,100,101,120,0,0,0,0,0,0,0,0,73,103,110,111,114,105,110,103,32,97,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,49,54,45,98,105,116,32,98,75,71,68,32,99,104,117,110,107,32,119,104,101,110,32,98,105,116,95,100,101,112,116,104,32,105,115,32,56,0,73,103,110,111,114,105,110,103,32,97,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,98,75,71,68,32,99,104,117,110,107,32,111,117,116,45,111,102,45,114,97,110,103,101,32,102,111,114,32,98,105,116,95,100,101,112,116,104,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,104,105,115,116,111,103,114,97,109,32,101,110,116,114,105,101,115,32,115,112,101,99,105,102,105,101,100,0,0,0,116,69,88,116,58,32,105,110,118,97,108,105,100,32,107,101,121,119,111,114,100,0,0,0,116,69,88,116,58,32,116,101,120,116,32,116,111,111,32,108,111,110,103,0,0,0,0,0,122,84,88,116,58,32,105,110,118,97,108,105,100,32,99,111,109,112,114,101,115,115,105,111,110,32,116,121,112,101,0,0,122,84,88,116,58,32,105,110,118,97,108,105,100,32,107,101,121,119,111,114,100,0,0,0,105,84,88,116,58,32,105,110,118,97,108,105,100,32,107,101,121,119,111,114,100,0,0,0,105,84,88,116,58,32,105,110,118,97,108,105,100,32,99,111,109,112,114,101,115,115,105,111,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,84,88,116,58,32,117,110,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,32,116,111,111,32,108,111,110,103,0,0,0,0,0,0,0,0,85,110,114,101,99,111,103,110,105,122,101,100,32,117,110,105,116,32,116,121,112,101,32,102,111,114,32,111,70,70,115,32,99,104,117,110,107,0,0,0,85,110,114,101,99,111,103,110,105,122,101,100,32,101,113,117,97,116,105,111,110,32,116,121,112,101,32,102,111,114,32,112,67,65,76,32,99,104,117,110,107,0,0,0,0,0,0,0,112,67,65,76,58,32,105,110,118,97,108,105,100,32,107,101,121,119,111,114,100,0,0,0,67,97,110,39,116,32,119,114,105,116,101,32,115,67,65,76,32,40,98,117,102,102,101,114,32,116,111,111,32,115,109,97,108,108,41,0,0,0,0,0,85,110,114,101,99,111,103,110,105,122,101,100,32,117,110,105,116,32,116,121,112,101,32,102,111,114,32,112,72,89,115,32,99,104,117,110,107,0,0,0,73,110,118,97,108,105,100,32,116,105,109,101,32,115,112,101,99,105,102,105,101,100,32,102,111,114,32,116,73,77,69,32,99,104,117,110,107,0,0,0,0,0,4,0,2,0,1,0,8,8,8,4,4,2,2,0,0,4,0,2,0,1,0,0,8,8,4,4,2,2,1,0,101,114,114,111,114,32,119,114,105,116,105,110,103,32,97,110,99,105,108,108,97,114,121,32,99,104,117,110,107,101,100,32,99],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+266241);allocate([111,109,112,114,101,115,115,101,100,32,100,97,116,97,0,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,116,111,111,32,108,111,110,103,0,0,0,0,0,0,0,0,107,101,121,119,111,114,100,32,116,114,117,110,99,97,116,101,100,0,0,0,0,0,0,0,107,101,121,119,111,114,100,32,34,64,49,34,58,32,98,97,100,32,99,104,97,114,97,99,116,101,114,32,39,48,120,64,50,39,0,0,0,0,0,0,32,117,115,105,110,103,32,122,115,116,114,101,97,109,0,0,105,110,32,117,115,101,32,98,121,32,73,68,65,84,0,0,100,101,102,108,97,116,101,69,110,100,32,102,97,105,108,101,100,32,40,105,103,110,111,114,101,100,41,0,0,0,0,0,49,46,50,46,56,0,0,0,108,101,110,103,116,104,32,101,120,99,101,101,100,115,32,80,78,71,32,109,97,120,105,109,117,109,0,0,0,0,0,0,129,1,29,90,14,2,134,37,16,3,20,17,18,4,11,8,20,5,216,3,23,6,218,1,25,7,229,0,28,8,111,0,30,9,54,0,33,10,26,0,35,11,13,0,9,12,6,0,10,13,3,0,12,13,1,0,143,15,127,90,36,16,37,63,38,17,242,44,39,18,124,32,40,19,185,23,42,20,130,17,43,21,239,12,45,22,161,9,46,23,47,7,48,24,92,5,49,25,6,4,51,26,3,3,52,27,64,2,54,28,177,1,56,29,68,1,57,30,245,0,59,31,183,0,60,32,138,0,62,33,104,0,63,34,78,0,32,35,59,0,33,9,44,0,165,37,225,90,64,38,76,72,65,39,13,58,67,40,241,46,68,41,31,38,69,42,51,31,70,43,168,25,72,44,24,21,73,45,119,17,74,46,116,14,75,47,251,11,77,48,248,9,78,49,97,8,79,50,6,7,48,51,205,5,50,52,222,4,50,53,15,4,51,54,99,3,52,55,212,2,53,56,92,2,54,57,248,1,55,58,164,1,56,59,96,1,57,60,37,1,58,61,246,0,59,62,203,0,61,63,171,0,61,32,143,0,193,65,18,91,80,66,4,77,81,67,44,65,82,68,216,55,83,69,232,47,84,70,60,41,86,71,121,35,87,72,223,30,87,73,169,26,72,74,78,23,72,75,36,20,74,76,156,17,74,77,107,15,75,78,81,13,77,79,182,11,77,48,64,10,208,81,50,88,88,82,28,77,89,83,142,67,90,84,221,59,91,85,238,52,92,86,174,46,93,87,154,41,86,71,22,37,216,89,112,85,95,90,169,76,96,91,217,68,97,92,34,62,99,93,36,56,99,94,180,50,93,86,23,46,223,96,168,86,101,97,70,79,102,98,229,71,103,99,207,65,104,100,61,60,99,93,94,55,105,102,49,82,106,103,15,76,107,104,57,70,103,99,94,65,233,106,39,86,108,107,231,80,109,103,133,75,110,109,151,85,111,107,79,80,238,111,16,90,112,109,34,85,240,111,235,89,113,113,29,90,0,64,197,88,159,83,66,75,0,64,73,50,163,34,168,17,197,88,33,123,252,115,98,104,197,88,191,69,11,48,126,24,159,83,252,115,65,109,84,98,159,83,179,65,65,45,18,23,66,75,98,104,84,98,126,88,66,75,33,59,186,40,195,20,0,64,197,88,159,83,66,75,0,64,73,50,163,34,168,17,73,50,191,69,179,65,33,59,73,50,130,39,55,27,224,13,163,34,11,48,65,45,186,40,163,34,55,27,191,18,142,9,168,17,126,24,18,23,195,20,168,17,224,13,142,9,223,4,0,0,0,0,0,0,240,63,239,97,72,177,80,49,246,63,202,111,77,145,174,231,244,63,170,17,108,239,98,208,242,63,0,0,0,0,0,0,240,63,59,191,167,192,105,36,233,63,187,32,199,123,122,81,225,63,93,171,114,222,85,168,209,63,16,0,0,0,11,0,0,0,10,0,0,0,16,0,0,0,24,0,0,0,40,0,0,0,51,0,0,0,61,0,0,0,12,0,0,0,12,0,0,0,14,0,0,0,19,0,0,0,26,0,0,0,58,0,0,0,60,0,0,0,55,0,0,0,14,0,0,0,13,0,0,0,16,0,0,0,24,0,0,0,40,0,0,0,57,0,0,0,69,0,0,0,56,0,0,0,14,0,0,0,17,0,0,0,22,0,0,0,29,0,0,0,51,0,0,0,87,0,0,0,80,0,0,0,62,0,0,0,18,0,0,0,22,0,0,0,37,0,0,0,56,0,0,0,68,0,0,0,109,0,0,0,103,0,0,0,77,0,0,0,24,0,0,0,35,0,0,0,55,0,0,0,64,0,0,0,81,0,0,0,104,0,0,0,113,0,0,0,92,0,0,0,49,0,0,0,64,0,0,0,78,0,0,0,87,0,0,0,103,0,0,0,121,0,0,0,120,0,0,0,101,0,0,0,72,0,0,0,92,0,0,0,95,0,0,0,98,0,0,0,112,0,0,0,100,0,0,0,103,0,0,0,99,0,0,0,17,0,0,0,18,0,0,0,24,0,0,0,47,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,18,0,0,0,21,0,0,0,26,0,0,0,66,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,24,0,0,0,26,0,0,0,56,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,47,0,0,0,66,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,0,0,0,0,0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,0,0,0,0,0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125,0,0,0,0,0,0,0,1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250,0,0,0,0,0,0,0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119,0,0,0,0,0,0,0,0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250,0,0,0,0,0,0,0,64,197,88,159,83,66,75,0,64,73,50,163,34,168,17,197,88,33,123,252,115,98,104,197,88,191,69,11,48,126,24,159,83,252,115,65,109,84,98,159,83,179,65,65,45,18,23,66,75,98,104,84,98,126,88,66,75,33,59,186,40,195,20,0,64,197,88,159,83,66,75,0,64,73,50,163,34,168,17,73,50,191,69,179,65,33,59,73,50,130,39,55,27,224,13,163,34,11,48,65,45,186,40,163,34,55,27,191,18,142,9,168,17,126,24,18,23,195,20,168,17,224,13,142,9,223,4,0,0,0,0,0,0,240,63,239,97,72,177,80,49,246,63,202,111,77,145,174,231,244,63,170,17,108,239,98,208,242,63,0,0,0,0,0,0,240,63,59,191,167,192,105,36,233,63,187,32,199,123,122,81,225,63,93,171,114,222,85,168,209,63,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,2,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,12,0,0,0,3,0,0,0,8,0,0,0,11,0,0,0,13,0,0,0,9,0,0,0,10,0,0,0,14,0,0,0,15,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,14,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,13,0,0,0,15,0,0,0,3,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,21,0,0,0,9,0,0,0,11,0,0,0,17,0,0,0,20,0,0,0,22,0,0,0,10,0,0,0,18,0,0,0,19,0,0,0,23,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,14,0,0,0,15,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,13,0,0,0,16,0,0,0,25,0,0,0,3,0,0,0,8,0,0,0,12,0,0,0,17,0,0,0,24,0,0,0,26,0,0,0,9,0,0,0,11,0,0,0,18,0,0,0,23,0,0,0,27,0,0,0,32,0,0,0,10,0,0,0,19,0,0,0,22,0,0,0,28,0,0,0,31,0,0,0,33,0,0,0,20,0,0,0,21,0,0,0,29,0,0,0,30,0,0,0,34,0,0,0,35,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,14,0,0,0,15,0,0,0,27,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,13,0,0,0,16,0,0,0,26,0,0,0,28,0,0,0,3,0,0,0,8,0,0,0,12,0,0,0,17,0,0,0,25,0,0,0,29,0,0,0,38,0,0,0,9,0,0,0,11,0,0,0,18,0,0,0,24,0,0,0,30,0,0,0,37,0,0,0,39,0,0,0,10,0,0,0,19,0,0,0,23,0,0,0,31,0,0,0,36,0,0,0,40,0,0,0,45,0,0,0,20,0,0,0,22,0,0,0,32,0,0,0,35,0,0,0,41,0,0,0,44,0,0,0,46,0,0,0,21,0,0,0,33,0,0,0,34,0,0,0,42,0,0,0,43,0,0,0,47,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,14,0,0,0,15,0,0,0,27,0,0,0,28,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,13,0,0,0,16,0,0,0,26,0,0,0,29,0,0,0,42,0,0,0,3,0,0,0,8,0,0,0,12,0,0,0,17,0,0,0,25,0,0,0,30,0,0,0,41,0,0,0,43,0,0,0,9,0,0,0,11,0,0,0,18,0,0,0,24,0,0,0,31,0,0,0,40,0,0,0,44,0,0,0,53,0,0,0,10,0,0,0,19,0,0,0,23,0,0,0,32,0,0,0,39,0,0,0,45,0,0,0,52,0,0,0,54,0,0,0,20,0,0,0,22,0,0,0,33,0,0,0,38,0,0,0,46,0,0,0,51,0,0,0,55,0,0,0,60,0,0,0,21,0,0,0,34,0,0,0,37,0,0,0,47,0,0,0,50,0,0,0,56,0,0,0,59,0,0,0,61,0,0,0,35,0,0,0,36,0,0,0,48,0,0,0,49,0,0,0,57,0,0,0,58,0,0,0,62,0,0,0,63,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,7,0,0,0,15,0,0,0,31,0,0,0,63,0,0,0,127,0,0,0,255,0,0,0,255,1,0,0,255,3,0,0,255,7,0,0,255,15,0,0,255,31,0,0,255,63,0,0,255,127,0,0,76,83,69,0,0,0,0,0,83,79,83,0,0,0,0,0,66,111,103,117,115,32,109,101,115,115,97,103,101,32,99,111,100,101,32,37,100,0,0,0,65,76,73,71,78,95,84,89,80,69,32,105,115,32,119,114,111,110,103,44,32,112,108,101,97,115,101,32,102,105,120,0,77,65,88,95,65,76,76,79,67,95,67,72,85,78,75,32,105,115,32,119,114,111,110,103,44,32,112,108,101,97,115,101,32,102,105,120,0,0,0,0,66,111,103,117,115,32,98,117,102,102,101,114,32,99,111,110,116,114,111,108,32,109,111,100,101,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,99,111,109,112,111,110,101,110,116,32,73,68,32,37,100,32,105,110,32,83,79,83,0,0,73,110,118,97,108,105,100,32,99,114,111,112,32,114,101,113,117,101,115,116,0,0,0,0,68,67,84,32,99,111,101,102,102,105,99,105,101,110,116,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,68,67,84,32,115,99,97,108,101,100,32,98,108,111,99,107,32,115,105,122,101,32,37,100,120,37,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,0,0,67,111,109,112,111,110,101,110,116,32,105,110,100,101,120,32,37,100,58,32,109,105,115,109,97,116,99,104,105,110,103,32,115,97,109,112,108,105,110,103,32,114,97,116,105,111,32,37,100,58,37,100,44,32,37,100,58,37,100,44,32,37,99,0,66,111,103,117,115,32,72,117,102,102,109,97,110,32,116,97,98,108,101,32,100,101,102,105,110,105,116,105,111,110,0,0,66,111,103,117,115,32,105,110,112,117,116,32,99,111,108,111,114,115,112,97,99,101,0,0,66,111,103,117,115,32,74,80,69,71,32,99,111,108,111,114,115,112,97,99,101,0,0,0,66,111,103,117,115,32,109,97,114,107,101,114,32,108,101,110,103,116,104,0,0,0,0,0,87,114,111,110,103,32,74,80,69,71,32,108,105,98,114,97,114,121,32,118,101,114,115,105,111,110,58,32,108,105,98,114,97,114,121,32,105,115,32,37,100,44,32,99,97,108,108,101,114,32,101,120,112,101,99,116,115,32,37,100,0,0,0,0,83,97,109,112,108,105,110,103,32,102,97,99,116,111,114,115,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,105,110,116,101,114,108,101,97,118,101,100,32,115,99,97,110,0,73,110,118,97,108,105,100,32,109,101,109,111,114,121,32,112,111,111,108,32,99,111,100,101,32,37,100,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,74,80,69,71,32,100,97,116,97,32,112,114,101,99,105,115,105,111,110,32,37,100,0,0,0,0,0,0,73,110,118,97,108,105,100,32,112,114,111,103,114,101,115,115,105,118,101,32,112,97,114,97,109,101,116,101,114,115,32,83,115,61,37,100,32,83,101,61,37,100,32,65,104,61,37,100,32,65,108,61,37,100,0,0,73,110,118,97,108,105,100,32,112,114,111,103,114,101,115,115,105,118,101,32,112,97,114,97,109,101,116,101,114,115,32,97,116,32,115,99,97,110,32,115,99,114,105,112,116,32,101,110,116,114,121,32,37,100,0,0,66,111,103,117,115,32,115,97,109,112,108,105,110,103,32,102,97,99,116,111,114,115,0,0,73,110,118,97,108,105,100,32,115,99,97,110,32,115,99,114,105,112,116,32,97,116,32,101,110,116,114,121,32,37,100,0,73,109,112,114,111,112,101,114,32,99,97,108,108,32,116,111,32,74,80,69,71,32,108,105,98,114,97,114,121,32,105,110,32,115,116,97,116,101,32,37,100,0,0,0,0,0,0,0,74,80,69,71,32,112,97,114,97,109,101,116,101,114,32,115,116,114,117,99,116,32,109,105,115,109,97,116,99,104,58,32,108,105,98,114,97,114,121,32,116,104,105,110,107,115,32,115,105,122,101,32,105,115,32,37,117,44,32,99,97,108,108,101,114,32,101,120,112,101,99,116,115,32,37,117,0,0,0,0,66,111,103,117,115,32,118,105,114,116,117,97,108,32,97,114,114,97,121,32,97,99,99,101,115,115,0,0,0,0,0,0,66,117,102,102,101,114,32,112,97,115,115,101,100,32,116,111,32,74,80,69,71,32,108,105,98,114,97,114,121,32,105,115,32,116,111,111,32,115,109,97,108,108,0,0,0,0,0,0,83,117,115,112,101,110,115,105,111,110,32,110,111,116,32,97,108,108,111,119,101,100,32,104,101,114,101,0,0,0,0,0,67,67,73,82,54,48,49,32,115,97,109,112,108,105,110,103,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,0,0,0,84,111,111,32,109,97,110,121,32,99,111,108,111,114,32,99,111,109,112,111,110,101,110,116,115,58,32,37,100,44,32,109,97,120,32,37,100,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,99,111,108,111,114,32,99,111,110,118,101,114,115,105,111,110,32,114,101,113,117,101,115,116,0,0,0,0,66,111,103,117,115,32,68,65,67,32,105,110,100,101,120,32,37,100,0,0,0,0,0,0,66,111,103,117,115,32,68,65,67,32,118,97,108,117,101,32,48,120,37,120,0,0,0,0,66,111,103,117,115,32,68,72,84,32,105,110,100,101,120,32,37,100,0,0,0,0,0,0,66,111,103,117,115,32,68,81,84,32,105,110,100,101,120,32,37,100,0,0,0,0,0,0,69,109,112,116,121,32,74,80,69,71,32,105,109,97,103,101,32,40,68,78,76,32,110,111,116,32,115,117,112,112,111,114,116,101,100,41,0,0,0,0,82,101,97,100,32,102,114,111,109,32,69,77,83,32,102,97,105,108,101,100,0,0,0,0,87,114,105,116,101,32,116,111,32,69,77,83,32,102,97,105,108,101,100,0,0,0,0,0,68,105,100,110,39,116,32,101,120,112,101,99,116,32,109,111,114,101,32,116,104,97,110,32,111,110,101,32,115,99,97,110,0,0,0,0,0,0,0,0,73,110,112,117,116,32,102,105,108,101,32,114,101,97,100,32,101,114,114,111,114,0,0,0,79,117,116,112,117,116,32,102,105,108,101,32,119,114,105,116,101,32,101,114,114,111,114,32,45,45,45,32,111,117,116,32,111,102,32,100,105,115,107,32,115,112,97,99,101,63,0,0,70,114,97,99,116,105,111,110,97,108,32,115,97,109,112,108,105,110,103,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,72,117,102,102,109,97,110,32,99,111,100,101,32,115,105,122,101,32,116,97,98,108,101,32,111,118,101,114,102,108,111,119,0,0,0,0,0,0,0,0,77,105,115,115,105,110,103,32,72,117,102,102,109,97,110,32,99,111,100,101,32,116,97,98,108,101,32,101,110,116,114,121,0,0,0,0,0,0,0,0,77,97,120,105,109,117,109,32,115,117,112,112,111,114,116,101,100,32,105,109,97,103,101,32,100,105,109,101,110,115,105,111,110,32,105,115,32,37,117,32,112,105,120,101,108,115,0,0,69,109,112,116,121,32,105,110,112,117,116,32,102,105,108,101,0,0,0,0,0,0,0,0,80,114,101,109,97,116,117,114,101,32,101,110,100,32,111,102,32,105,110,112,117,116,32,102,105,108,101,0,0,0,0,0,67,97,110,110,111,116,32,116,114,97,110,115,99,111,100,101,32,100,117,101,32,116,111,32,109,117,108,116,105,112,108,101,32,117,115,101,32,111,102,32,113,117,97,110,116,105,122,97,116,105,111,110,32,116,97,98,108,101,32,37,100,0,0,0,83,99,97,110,32,115,99,114,105,112,116,32,100,111,101,115,32,110,111,116,32,116,114,97,110,115,109,105,116,32,97,108,108,32,100,97,116,97,0,0,73,110,118,97,108,105,100,32,99,111,108,111,114,32,113,117,97,110,116,105,122,97,116,105,111,110,32,109,111,100,101,32,99,104,97,110,103,101,0,0,78,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,0,0,0,0,82,101,113,117,101,115,116,101,100,32,102,101,97,116,117,114,101,32,119,97,115,32,111,109,105,116,116,101,100,32,97,116,32,99,111,109,112,105,108,101,32,116,105,109,101,0,0,0,65,114,105,116,104,109,101,116,105,99,32,116,97,98,108,101,32,48,120,37,48,50,120,32,119,97,115,32,110,111,116,32,100,101,102,105,110,101,100,0,66,97,99,107,105,110,103,32,115,116,111,114,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,72,117,102,102,109,97,110,32,116,97,98,108,101,32,48,120,37,48,50,120,32,119,97,115,32,110,111,116,32,100,101,102,105,110,101,100,0,0,0,0,74,80,69,71,32,100,97,116,97,115,116,114,101,97,109,32,99,111,110,116,97,105,110,115,32,110,111,32,105,109,97,103,101,0,0,0,0,0,0,0,81,117,97,110,116,105,122,97,116,105,111,110,32,116,97,98,108,101,32,48,120,37,48,50,120,32,119,97,115,32,110,111,116,32,100,101,102,105,110,101,100,0,0,0,0,0,0,0,78,111,116,32,97,32,74,80,69,71,32,102,105,108,101,58,32,115,116,97,114,116,115,32,119,105,116,104,32,48,120,37,48,50,120,32,48,120,37,48,50,120,0,0,0,0,0,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,40,99,97,115,101,32,37,100,41,0,0,0,67,97,110,110,111,116,32,113,117,97,110,116,105,122,101,32,109,111,114,101,32,116,104,97,110,32,37,100,32,99,111,108,111,114,32,99,111,109,112,111,110,101,110,116,115,0,0,0,67,97,110,110,111,116,32,113,117,97,110,116,105,122,101,32,116,111,32,102,101,119,101,114,32,116,104,97,110,32,37,100,32,99,111,108,111,114,115,0,67,97,110,110,111,116,32,113,117,97,110,116,105,122,101,32,116,111,32,109,111,114,101,32,116,104,97,110,32,37,100,32,99,111,108,111,114,115,0,0,73,110,118,97,108,105,100,32,74,80,69,71,32,102,105,108,101,32,115,116,114,117,99,116,117,114,101,58,32,37,115,32,98,101,102,111,114,101,32,83,79,70,0,0,0,0,0,0,73,110,118,97,108,105,100,32,74,80,69,71,32,102,105,108,101,32,115,116,114,117,99,116,117,114,101,58,32,116,119,111,32,83,79,70,32,109,97,114,107,101,114,115,0,0,0,0,73,110,118,97,108,105,100,32,74,80,69,71,32,102,105,108,101,32,115,116,114,117,99,116,117,114,101,58,32,109,105,115,115,105,110,103,32,83,79,83,32,109,97,114,107,101,114,0,85,110,115,117,112,112,111,114,116,101,100,32,74,80,69,71,32,112,114,111,99,101,115,115,58,32,83,79,70,32,116,121,112,101,32,48,120,37,48,50,120,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,74,80,69,71,32,102,105,108,101,32,115,116,114,117,99,116,117,114,101,58,32,116,119,111,32,83,79,73,32,109,97,114,107,101,114,115,0,0,0,0,70,97,105,108,101,100,32,116,111,32,99,114,101,97,116,101,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32,37,115,0,0,0,0,0,0,82,101,97,100,32,102,97,105,108,101,100,32,111,110,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,0,0,0,83,101,101,107,32,102,97,105,108,101,100,32,111,110,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,0,0,0,87,114,105,116,101,32,102,97,105,108,101,100,32,111,110,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32,45,45,45,32,111,117,116,32,111,102,32,100,105,115,107,32,115,112,97,99,101,63,0,0,0,65,112,112,108,105,99,97,116,105,111,110,32,116,114,97,110,115,102,101,114,114,101,100,32,116,111,111,32,102,101,119,32,115,99,97,110,108,105,110,101,115,0,0,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,109,97,114,107,101,114,32,116,121,112,101,32,48,120,37,48,50,120,0,0,86,105,114,116,117,97,108,32,97,114,114,97,121,32,99,111,110,116,114,111,108,108,101,114,32,109,101,115,115,101,100,32,117,112,0,0,0,0,0,0,73,109,97,103,101,32,116,111,111,32,119,105,100,101,32,102,111,114,32,116,104,105,115,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,0,0,82,101,97,100,32,102,114,111,109,32,88,77,83,32,102,97,105,108,101,100,0,0,0,0,87,114,105,116,101,32,116,111,32,88,77,83,32,102,97,105,108,101,100,0,0,0,0,0,67,111,112,121,114,105,103,104,116,32,40,67,41,32,50,48,49,52,44,32,84,104,111,109,97,115,32,71,46,32,76,97,110,101,44,32,71,117,105,100,111,32,86,111,108,108,98,101,100,105,110,103,0,0,0,0,57,97,32,32,49,57,45,74,97,110,45,50,48,49,52,0,67,97,117,116,105,111,110,58,32,113,117,97,110,116,105,122,97,116,105,111,110,32,116,97,98,108,101,115,32,97,114,101,32,116,111,111,32,99,111,97,114,115,101,32,102,111,114,32,98,97,115,101,108,105,110,101,32,74,80,69,71,0,0,0,65,100,111,98,101,32,65,80,80,49,52,32,109,97,114,107,101,114,58,32,118,101,114,115,105,111,110,32,37,100,44,32,102,108,97,103,115,32,48,120,37,48,52,120,32,48,120,37,48,52,120,44,32,116,114,97,110,115,102,111,114,109,32,37,100,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,65,80,80,48,32,109,97,114,107,101,114,32,40,110,111,116,32,74,70,73,70,41,44,32,108,101,110,103,116,104,32,37,117,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,65,80,80,49,52,32,109,97,114,107,101,114,32,40,110,111,116,32,65,100,111,98,101,41,44,32,108,101,110,103,116,104,32,37,117,0,0,0,0,0,68,101,102,105,110,101,32,65,114,105,116,104,109,101,116,105,99,32,84,97,98,108,101,32,48,120,37,48,50,120,58,32,48,120,37,48,50,120,0,0,68,101,102,105,110,101,32,72,117,102,102,109,97,110,32,84,97,98,108,101,32,48,120,37,48,50,120,0,0,0,0,0,68,101,102,105,110,101,32,81,117,97,110,116,105,122,97,116,105,111,110,32,84,97,98,108,101,32,37,100,32,32,112,114,101,99,105,115,105,111,110,32,37,100,0,0,0,0,0,0,68,101,102,105,110,101,32,82,101,115,116,97,114,116,32,73,110,116,101,114,118,97,108,32,37,117,0,0,0,0,0,0,70,114,101,101,100,32,69,77,83,32,104,97,110,100,108,101,32,37,117,0,0,0,0,0,79,98,116,97,105,110,101,100,32,69,77,83,32,104,97,110,100,108,101,32,37,117,0,0,69,110,100,32,79,102,32,73,109,97,103,101,0,0,0,0,32,32,32,32,32,32,32,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,0,74,70,73,70,32,65,80,80,48,32,109,97,114,107,101,114,58,32,118,101,114,115,105,111,110,32,37,100,46,37,48,50,100,44,32,100,101,110,115,105,116,121,32,37,100,120,37,100,32,32,37,100,0,0,0,0,87,97,114,110,105,110,103,58,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,32,115,105,122,101,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,100,97,116,97,32,108,101,110,103,116,104,32,37,117,0,0,0,0,0,74,70,73,70,32,101,120,116,101,110,115,105,111,110,32,109,97,114,107,101,114,58,32,116,121,112,101,32,48,120,37,48,50,120,44,32,108,101,110,103,116,104,32,37,117,0,0,0,32,32,32,32,119,105,116,104,32,37,100,32,120,32,37,100,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,0,0,0,0,0,0,0,0,77,105,115,99,101,108,108,97,110,101,111,117,115,32,109,97,114,107,101,114,32,48,120,37,48,50,120,44,32,108,101,110,103,116,104,32,37,117,0,0,85,110,101,120,112,101,99,116,101,100,32,109,97,114,107,101,114,32,48,120,37,48,50,120,0,0,0,0,0,0,0,0,32,32,32,32,32,32,32,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,0,81,117,97,110,116,105,122,105,110,103,32,116,111,32,37,100,32,61,32,37,100,42,37,100,42,37,100,32,99,111,108,111,114,115,0,0,0,0,0,0,81,117,97,110,116,105,122,105,110,103,32,116,111,32,37,100,32,99,111,108,111,114,115,0,83,101,108,101,99,116,101,100,32,37,100,32,99,111,108,111,114,115,32,102,111,114,32,113,117,97,110,116,105,122,97,116,105,111,110,0,0,0,0,0,65,116,32,109,97,114,107,101,114,32,48,120,37,48,50,120,44,32,114,101,99,111,118,101,114,121,32,97,99,116,105,111,110,32,37,100,0,0,0,0,82,83,84,37,100,0,0,0,83,109,111,111,116,104,105,110,103,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,119,105,116,104,32,110,111,110,115,116,97,110,100,97,114,100,32,115,97,109,112,108,105,110,103,32,114,97,116,105,111,115,0,0,0,0,0,0,0,0,83,116,97,114,116,32,79,102,32,70,114,97,109,101,32,48,120,37,48,50,120,58,32,119,105,100,116,104,61,37,117,44,32,104,101,105,103,104,116,61,37,117,44,32,99,111,109,112,111,110,101,110,116,115,61,37,100,0,0,0,0,0,0,0,32,32,32,32,67,111,109,112,111,110,101,110,116,32,37,100,58,32,37,100,104,120,37,100,118,32,113,61,37,100,0,0,83,116,97,114,116,32,111,102,32,73,109,97,103,101,0,0,83,116,97,114,116,32,79,102,32,83,99,97,110,58,32,37,100,32,99,111,109,112,111,110,101,110,116,115,0,0,0,0,32,32,32,32,67,111,109,112,111,110,101,110,116,32,37,100,58,32,100,99,61,37,100,32,97,99,61,37,100,0,0,0,32,32,83,115,61,37,100,44,32,83,101,61,37,100,44,32,65,104,61,37,100,44,32,65,108,61,37,100,0,0,0,0,67,108,111,115,101,100,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32,37,115,0,0,0,0,0,0,0,0,79,112,101,110,101,100,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32,37,115,0,0,0,0,0,0,0,0,74,70,73,70,32,101,120,116,101,110,115,105,111,110,32,109,97,114,107,101,114,58,32,74,80,69,71,45,99,111,109,112,114,101,115,115,101,100,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,44,32,108,101,110,103,116,104,32,37,117,0,0,0,0,0,0,0,74,70,73,70,32,101,120,116,101,110,115,105,111,110,32,109,97,114,107,101,114,58,32,112,97,108,101,116,116,101,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,44,32,108,101,110,103,116,104,32,37,117,0,0,0,0,0,0,0,74,70,73,70,32,101,120,116,101,110,115,105,111,110,32,109,97,114,107,101,114,58,32,82,71,66,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,44,32,108,101,110,103,116,104,32,37,117,0,0,0,85,110,114,101,99,111,103,110,105,122,101,100,32,99,111,109,112,111,110,101,110,116,32,73,68,115,32,37,100,32,37,100,32,37,100,44,32,97,115,115,117,109,105,110,103,32,89,67,98,67,114,0,0,0,0,0,70,114,101,101,100,32,88,77,83,32,104,97,110,100,108,101,32,37,117,0,0,0,0,0,79,98,116,97,105,110,101,100,32,88,77,83,32,104,97,110,100,108,101,32,37,117,0,0,85,110,107,110,111,119,110,32,65,100,111,98,101,32,99,111,108,111,114,32,116,114,97,110,115,102,111,114,109,32,99,111,100,101,32,37,100,0,0,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,98,97,100,32,97,114,105,116,104,109,101,116,105,99,32,99,111,100,101,0,0,73,110,99,111,110,115,105,115,116,101,110,116,32,112,114,111,103,114,101,115,115,105,111,110,32,115,101,113,117,101,110,99,101,32,102,111,114,32,99,111,109,112,111,110,101,110,116,32,37,100,32,99,111,101,102,102,105,99,105,101,110,116,32,37,100,0,0,0,0,0,0,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,37,117,32,101,120,116,114,97,110,101,111,117,115,32,98,121,116,101,115,32,98,101,102,111,114,101,32,109,97,114,107,101,114,32,48,120,37,48,50,120,0,0,0,0,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,112,114,101,109,97,116,117,114,101,32,101,110,100,32,111,102,32,100,97,116,97,32,115,101,103,109,101,110,116,0,0,0,0,0,0,0,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,98,97,100,32,72,117,102,102,109,97,110,32,99,111,100,101,0,0,0,0,0,87,97,114,110,105,110,103,58,32,117,110,107,110,111,119,110,32,74,70,73,70,32,114,101,118,105,115,105,111,110,32,110,117,109,98,101,114,32,37,100,46,37,48,50,100,0,0,0,80,114,101,109,97,116,117,114,101,32,101,110,100,32,111,102,32,74,80,69,71,32,102,105,108,101,0,0,0,0,0,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,102,111,117,110,100,32,109,97,114,107,101,114,32,48,120,37,48,50,120,32,105,110,115,116,101,97,100,32,111,102,32,82,83,84,37,100,0,73,110,118,97,108,105,100,32,83,79,83,32,112,97,114,97,109,101,116,101,114,115,32,102,111,114,32,115,101,113,117,101,110,116,105,97,108,32,74,80,69,71,0,0,0,0,0,0,65,112,112,108,105,99,97,116,105,111,110,32,116,114,97,110,115,102,101,114,114,101,100,32,116,111,111,32,109,97,110,121,32,115,99,97,110,108,105,110,101,115,0,0,0,0,0,0,128,67,4,0,152,67,4,0,184,67,4,0,224,67,4,0,0,68,4,0,32,68,4,0,56,68,4,0,88,68,4,0,136,68,4,0,200,68,4,0,232,68,4,0,0,69,4,0,24,69,4,0,48,69,4,0,112,69,4,0,160,69,4,0,192,69,4,0,232,69,4,0,32,70,4,0,88,70,4,0,112,70,4,0,144,70,4,0,192,70,4,0,16,71,4,0,48,71,4,0,96,71,4,0,128,71,4,0,168,71,4,0,208,71,4,0,248,71,4,0,16,72,4,0,40,72,4,0,64,72,4,0,88,72,4,0,128,72,4,0,152,72,4,0,176,72,4,0,216,72,4,0,240,72,4,0,32,73,4,0,72,73,4,0,112,73,4,0,152,73,4,0,200,73,4,0,224,73,4,0,0,74,4,0,64,74,4,0,104,74,4,0,144,74,4,0,168,74,4,0,216,74,4,0,0,75,4,0,32,75,4,0,72,75,4,0,112,75,4,0,160,75,4,0,208,75,4,0,240,75,4,0,32,76,4,0,72,76,4,0,112,76,4,0,160,76,4,0,208,76,4,0,0,77,4,0,48,77,4,0,96,77,4,0,136,77,4,0,168,77,4,0,200,77,4,0,0,78,4,0,48,78,4,0,80,78,4,0,120,78,4,0,160,78,4,0,184,78,4,0,208,78,4,0,8,79,4,0,24,79,4,0,88,79,4,0,160,79,4,0,208,79,4,0,0,80,4,0,40,80,4,0,72,80,4,0,120,80,4,0,152,80,4,0,176,80,4,0,200,80,4,0,216,80,4,0,0,81,4,0,56,81,4,0,120,81,4,0,168,81,4,0,208,81,4,0,248,81,4,0,24,82,4,0,64,82,4,0,104,82,4,0,128,82,4,0,168,82,4,0,208,82,4,0,216,82,4,0,24,83,4,0,88,83,4,0,120,83,4,0,136,83,4,0,168,83,4,0,200,83,4,0,232,83,4,0,8,84,4,0,40,84,4,0,112,84,4,0,176,84,4,0,232,84,4,0,32,85,4,0,56,85,4,0,80,85,4,0,120,85,4,0,160,85,4,0,232,85,4,0,40,86,4,0,96,86,4,0,136,86,4,0,184,86,4,0,216,86,4,0,16,87,4,0,64,87,4,0,0,0,0,0,37,115,10,0,0,0,0,0,74,80,69,71,77,69,77,0,37,108,100,37,99,0,0,0,64,6,0,0,128,62,0,0,0,0,0,0,136,19,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,192,48,240,12,204,60,252,3,195,51,243,15,207,63,255,128,64,176,112,140,76,188,124,131,67,179,115,143,79,191,127,32,224,16,208,44,236,28,220,35,227,19,211,47,239,31,223,160,96,144,80,172,108,156,92,163,99,147,83,175,111,159,95,8,200,56,248,4,196,52,244,11,203,59,251,7,199,55,247,136,72,184,120,132,68,180,116,139,75,187,123,135,71,183,119,40,232,24,216,36,228,20,212,43,235,27,219,39,231,23,215,168,104,152,88,164,100,148,84,171,107,155,91,167,103,151,87,2,194,50,242,14,206,62,254,1,193,49,241,13,205,61,253,130,66,178,114,142,78,190,126,129,65,177,113,141,77,189,125,34,226,18,210,46,238,30,222,33,225,17,209,45,237,29,221,162,98,146,82,174,110,158,94,161,97,145,81,173,109,157,93,10,202,58,250,6,198,54,246,9,201,57,249,5,197,53,245,138,74,186,122,134,70,182,118,137,73,185,121,133,69,181,117,42,234,26,218,38,230,22,214,41,233,25,217,37,229,21,213,170,106,154,90,166,102,150,86,169,105,153,89,165,101,149,85,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,32,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,4,0,0,0,5,0,0,0,12,0,0,0,19,0,0,0,26,0,0,0,33,0,0,0,40,0,0,0,48,0,0,0,41,0,0,0,34,0,0,0,27,0,0,0,20,0,0,0,13,0,0,0,6,0,0,0,7,0,0,0,14,0,0,0,21,0,0,0,28,0,0,0,35,0,0,0,42,0,0,0,49,0,0,0,56,0,0,0,57,0,0,0,50,0,0,0,43,0,0,0,36,0,0,0,29,0,0,0,22,0,0,0,15,0,0,0,23,0,0,0,30,0,0,0,37,0,0,0,44,0,0,0,51,0,0,0,58,0,0,0,59,0,0,0,52,0,0,0,45,0,0,0,38,0,0,0,31,0,0,0,39,0,0,0,46,0,0,0,53,0,0,0,60,0,0,0,61,0,0,0,54,0,0,0,47,0,0,0,55,0,0,0,62,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,32,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,4,0,0,0,5,0,0,0,12,0,0,0,19,0,0,0,26,0,0,0,33,0,0,0,40,0,0,0,48,0,0,0,41,0,0,0,34,0,0,0,27,0,0,0,20,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,21,0,0,0,28,0,0,0,35,0,0,0,42,0,0,0,49,0,0,0,50,0,0,0,43,0,0,0,36,0,0,0,29,0,0,0,22,0,0,0,30,0,0,0,37,0,0,0,44,0,0,0,51,0,0,0,52,0,0,0,45,0,0,0,38,0,0,0,46,0,0,0,53,0,0,0,54,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,32,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,4,0,0,0,5,0,0,0,12,0,0,0,19,0,0,0,26,0,0,0,33,0,0,0,40,0,0,0,41,0,0,0,34,0,0,0,27,0,0,0,20,0,0,0,13,0,0,0,21,0,0,0,28,0,0,0,35,0,0,0,42,0,0,0,43,0,0,0,36,0,0,0,29,0,0,0,37,0,0,0,44,0,0,0,45,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,32,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,19,0,0,0,26,0,0,0,33,0,0,0,34,0,0,0,27,0,0,0,20,0,0,0,28,0,0,0,35,0,0,0,36,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,19,0,0,0,26,0,0,0,27,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,17,0,0,0,18,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,150,48,7,119,44,97,14,238,186,81,9,153,25,196,109,7,143,244,106,112,53,165,99,233,163,149,100,158,50,136,219,14,164,184,220,121,30,233,213,224,136,217,210,151,43,76,182,9,189,124,177,126,7,45,184,231,145,29,191,144,100,16,183,29,242,32,176,106,72,113,185,243,222,65,190,132,125,212,218,26,235,228,221,109,81,181,212,244,199,133,211,131,86,152,108,19,192,168,107,100,122],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+276481);allocate([249,98,253,236,201,101,138,79,92,1,20,217,108,6,99,99,61,15,250,245,13,8,141,200,32,110,59,94,16,105,76,228,65,96,213,114,113,103,162,209,228,3,60,71,212,4,75,253,133,13,210,107,181,10,165,250,168,181,53,108,152,178,66,214,201,187,219,64,249,188,172,227,108,216,50,117,92,223,69,207,13,214,220,89,61,209,171,172,48,217,38,58,0,222,81,128,81,215,200,22,97,208,191,181,244,180,33,35,196,179,86,153,149,186,207,15,165,189,184,158,184,2,40,8,136,5,95,178,217,12,198,36,233,11,177,135,124,111,47,17,76,104,88,171,29,97,193,61,45,102,182,144,65,220,118,6,113,219,1,188,32,210,152,42,16,213,239,137,133,177,113,31,181,182,6,165,228,191,159,51,212,184,232,162,201,7,120,52,249,0,15,142,168,9,150,24,152,14,225,187,13,106,127,45,61,109,8,151,108,100,145,1,92,99,230,244,81,107,107,98,97,108,28,216,48,101,133,78,0,98,242,237,149,6,108,123,165,1,27,193,244,8,130,87,196,15,245,198,217,176,101,80,233,183,18,234,184,190,139,124,136,185,252,223,29,221,98,73,45,218,21,243,124,211,140,101,76,212,251,88,97,178,77,206,81,181,58,116,0,188,163,226,48,187,212,65,165,223,74,215,149,216,61,109,196,209,164,251,244,214,211,106,233,105,67,252,217,110,52,70,136,103,173,208,184,96,218,115,45,4,68,229,29,3,51,95,76,10,170,201,124,13,221,60,113,5,80,170,65,2,39,16,16,11,190,134,32,12,201,37,181,104,87,179,133,111,32,9,212,102,185,159,228,97,206,14,249,222,94,152,201,217,41,34,152,208,176,180,168,215,199,23,61,179,89,129,13,180,46,59,92,189,183,173,108,186,192,32,131,184,237,182,179,191,154,12,226,182,3,154,210,177,116,57,71,213,234,175,119,210,157,21,38,219,4,131,22,220,115,18,11,99,227,132,59,100,148,62,106,109,13,168,90,106,122,11,207,14,228,157,255,9,147,39,174,0,10,177,158,7,125,68,147,15,240,210,163,8,135,104,242,1,30,254,194,6,105,93,87,98,247,203,103,101,128,113,54,108,25,231,6,107,110,118,27,212,254,224,43,211,137,90,122,218,16,204,74,221,103,111,223,185,249,249,239,190,142,67,190,183,23,213,142,176,96,232,163,214,214,126,147,209,161,196,194,216,56,82,242,223,79,241,103,187,209,103,87,188,166,221,6,181,63,75,54,178,72,218,43,13,216,76,27,10,175,246,74,3,54,96,122,4,65,195,239,96,223,85,223,103,168,239,142,110,49,121,190,105,70,140,179,97,203,26,131,102,188,160,210,111,37,54,226,104,82,149,119,12,204,3,71,11,187,185,22,2,34,47,38,5,85,190,59,186,197,40,11,189,178,146,90,180,43,4,106,179,92,167,255,215,194,49,207,208,181,139,158,217,44,29,174,222,91,176,194,100,155,38,242,99,236,156,163,106,117,10,147,109,2,169,6,9,156,63,54,14,235,133,103,7,114,19,87,0,5,130,74,191,149,20,122,184,226,174,43,177,123,56,27,182,12,155,142,210,146,13,190,213,229,183,239,220,124,33,223,219,11,212,210,211,134,66,226,212,241,248,179,221,104,110,131,218,31,205,22,190,129,91,38,185,246,225,119,176,111,119,71,183,24,230,90,8,136,112,106,15,255,202,59,6,102,92,11,1,17,255,158,101,143,105,174,98,248,211,255,107,97,69,207,108,22,120,226,10,160,238,210,13,215,84,131,4,78,194,179,3,57,97,38,103,167,247,22,96,208,77,71,105,73,219,119,110,62,74,106,209,174,220,90,214,217,102,11,223,64,240,59,216,55,83,174,188,169,197,158,187,222,127,207,178,71,233,255,181,48,28,242,189,189,138,194,186,202,48,147,179,83,166,163,180,36,5,54,208,186,147,6,215,205,41,87,222,84,191,103,217,35,46,122,102,179,184,74,97,196,2,27,104,93,148,43,111,42,55,190,11,180,161,142,12,195,27,223,5,90,141,239,2,45,0,0,0,0,65,49,27,25,130,98,54,50,195,83,45,43,4,197,108,100,69,244,119,125,134,167,90,86,199,150,65,79,8,138,217,200,73,187,194,209,138,232,239,250,203,217,244,227,12,79,181,172,77,126,174,181,142,45,131,158,207,28,152,135,81,18,194,74,16,35,217,83,211,112,244,120,146,65,239,97,85,215,174,46,20,230,181,55,215,181,152,28,150,132,131,5,89,152,27,130,24,169,0,155,219,250,45,176,154,203,54,169,93,93,119,230,28,108,108,255,223,63,65,212,158,14,90,205,162,36,132,149,227,21,159,140,32,70,178,167,97,119,169,190,166,225,232,241,231,208,243,232,36,131,222,195,101,178,197,218,170,174,93,93,235,159,70,68,40,204,107,111,105,253,112,118,174,107,49,57,239,90,42,32,44,9,7,11,109,56,28,18,243,54,70,223,178,7,93,198,113,84,112,237,48,101,107,244,247,243,42,187,182,194,49,162,117,145,28,137,52,160,7,144,251,188,159,23,186,141,132,14,121,222,169,37,56,239,178,60,255,121,243,115,190,72,232,106,125,27,197,65,60,42,222,88,5,79,121,240,68,126,98,233,135,45,79,194,198,28,84,219,1,138,21,148,64,187,14,141,131,232,35,166,194,217,56,191,13,197,160,56,76,244,187,33,143,167,150,10,206,150,141,19,9,0,204,92,72,49,215,69,139,98,250,110,202,83,225,119,84,93,187,186,21,108,160,163,214,63,141,136,151,14,150,145,80,152,215,222,17,169,204,199,210,250,225,236,147,203,250,245,92,215,98,114,29,230,121,107,222,181,84,64,159,132,79,89,88,18,14,22,25,35,21,15,218,112,56,36,155,65,35,61,167,107,253,101,230,90,230,124,37,9,203,87,100,56,208,78,163,174,145,1,226,159,138,24,33,204,167,51,96,253,188,42,175,225,36,173,238,208,63,180,45,131,18,159,108,178,9,134,171,36,72,201,234,21,83,208,41,70,126,251,104,119,101,226,246,121,63,47,183,72,36,54,116,27,9,29,53,42,18,4,242,188,83,75,179,141,72,82,112,222,101,121,49,239,126,96,254,243,230,231,191,194,253,254,124,145,208,213,61,160,203,204,250,54,138,131,187,7,145,154,120,84,188,177,57,101,167,168,75,152,131,59,10,169,152,34,201,250,181,9,136,203,174,16,79,93,239,95,14,108,244,70,205,63,217,109,140,14,194,116,67,18,90,243,2,35,65,234,193,112,108,193,128,65,119,216,71,215,54,151,6,230,45,142,197,181,0,165,132,132,27,188,26,138,65,113,91,187,90,104,152,232,119,67,217,217,108,90,30,79,45,21,95,126,54,12,156,45,27,39,221,28,0,62,18,0,152,185,83,49,131,160,144,98,174,139,209,83,181,146,22,197,244,221,87,244,239,196,148,167,194,239,213,150,217,246,233,188,7,174,168,141,28,183,107,222,49,156,42,239,42,133,237,121,107,202,172,72,112,211,111,27,93,248,46,42,70,225,225,54,222,102,160,7,197,127,99,84,232,84,34,101,243,77,229,243,178,2,164,194,169,27,103,145,132,48,38,160,159,41,184,174,197,228,249,159,222,253,58,204,243,214,123,253,232,207,188,107,169,128,253,90,178,153,62,9,159,178,127,56,132,171,176,36,28,44,241,21,7,53,50,70,42,30,115,119,49,7,180,225,112,72,245,208,107,81,54,131,70,122,119,178,93,99,78,215,250,203,15,230,225,210,204,181,204,249,141,132,215,224,74,18,150,175,11,35,141,182,200,112,160,157,137,65,187,132,70,93,35,3,7,108,56,26,196,63,21,49,133,14,14,40,66,152,79,103,3,169,84,126,192,250,121,85,129,203,98,76,31,197,56,129,94,244,35,152,157,167,14,179,220,150,21,170,27,0,84,229,90,49,79,252,153,98,98,215,216,83,121,206,23,79,225,73,86,126,250,80,149,45,215,123,212,28,204,98,19,138,141,45,82,187,150,52,145,232,187,31,208,217,160,6,236,243,126,94,173,194,101,71,110,145,72,108,47,160,83,117,232,54,18,58,169,7,9,35,106,84,36,8,43,101,63,17,228,121,167,150,165,72,188,143,102,27,145,164,39,42,138,189,224,188,203,242,161,141,208,235,98,222,253,192,35,239,230,217,189,225,188,20,252,208,167,13,63,131,138,38,126,178,145,63,185,36,208,112,248,21,203,105,59,70,230,66,122,119,253,91,181,107,101,220,244,90,126,197,55,9,83,238,118,56,72,247,177,174,9,184,240,159,18,161,51,204,63,138,114,253,36,147,0,0,0,0,55,106,194,1,110,212,132,3,89,190,70,2,220,168,9,7,235,194,203,6,178,124,141,4,133,22,79,5,184,81,19,14,143,59,209,15,214,133,151,13,225,239,85,12,100,249,26,9,83,147,216,8,10,45,158,10,61,71,92,11,112,163,38,28,71,201,228,29,30,119,162,31,41,29,96,30,172,11,47,27,155,97,237,26,194,223,171,24,245,181,105,25,200,242,53,18,255,152,247,19,166,38,177,17,145,76,115,16,20,90,60,21,35,48,254,20,122,142,184,22,77,228,122,23,224,70,77,56,215,44,143,57,142,146,201,59,185,248,11,58,60,238,68,63,11,132,134,62,82,58,192,60,101,80,2,61,88,23,94,54,111,125,156,55,54,195,218,53,1,169,24,52,132,191,87,49,179,213,149,48,234,107,211,50,221,1,17,51,144,229,107,36,167,143,169,37,254,49,239,39,201,91,45,38,76,77,98,35,123,39,160,34,34,153,230,32,21,243,36,33,40,180,120,42,31,222,186,43,70,96,252,41,113,10,62,40,244,28,113,45,195,118,179,44,154,200,245,46,173,162,55,47,192,141,154,112,247,231,88,113,174,89,30,115,153,51,220,114,28,37,147,119,43,79,81,118,114,241,23,116,69,155,213,117,120,220,137,126,79,182,75,127,22,8,13,125,33,98,207,124,164,116,128,121,147,30,66,120,202,160,4,122,253,202,198,123,176,46,188,108,135,68,126,109,222,250,56,111,233,144,250,110,108,134,181,107,91,236,119,106,2,82,49,104,53,56,243,105,8,127,175,98,63,21,109,99,102,171,43,97,81,193,233,96,212,215,166,101,227,189,100,100,186,3,34,102,141,105,224,103,32,203,215,72,23,161,21,73,78,31,83,75,121,117,145,74,252,99,222,79,203,9,28,78,146,183,90,76,165,221,152,77,152,154,196,70,175,240,6,71,246,78,64,69,193,36,130,68,68,50,205,65,115,88,15,64,42,230,73,66,29,140,139,67,80,104,241,84,103,2,51,85,62,188,117,87,9,214,183,86,140,192,248,83,187,170,58,82,226,20,124,80,213,126,190,81,232,57,226,90,223,83,32,91,134,237,102,89,177,135,164,88,52,145,235,93,3,251,41,92,90,69,111,94,109,47,173,95,128,27,53,225,183,113,247,224,238,207,177,226,217,165,115,227,92,179,60,230,107,217,254,231,50,103,184,229,5,13,122,228,56,74,38,239,15,32,228,238,86,158,162,236,97,244,96,237,228,226,47,232,211,136,237,233,138,54,171,235,189,92,105,234,240,184,19,253,199,210,209,252,158,108,151,254,169,6,85,255,44,16,26,250,27,122,216,251,66,196,158,249,117,174,92,248,72,233,0,243,127,131,194,242,38,61,132,240,17,87,70,241,148,65,9,244,163,43,203,245,250,149,141,247,205,255,79,246,96,93,120,217,87,55,186,216,14,137,252,218,57,227,62,219,188,245,113,222,139,159,179,223,210,33,245,221,229,75,55,220,216,12,107,215,239,102,169,214,182,216,239,212,129,178,45,213,4,164,98,208,51,206,160,209,106,112,230,211,93,26,36,210,16,254,94,197,39,148,156,196,126,42,218,198,73,64,24,199,204,86,87,194,251,60,149,195,162,130,211,193,149,232,17,192,168,175,77,203,159,197,143,202,198,123,201,200,241,17,11,201,116,7,68,204,67,109,134,205,26,211,192,207,45,185,2,206,64,150,175,145,119,252,109,144,46,66,43,146,25,40,233,147,156,62,166,150,171,84,100,151,242,234,34,149,197,128,224,148,248,199,188,159,207,173,126,158,150,19,56,156,161,121,250,157,36,111,181,152,19,5,119,153,74,187,49,155,125,209,243,154,48,53,137,141,7,95,75,140,94,225,13,142,105,139,207,143,236,157,128,138,219,247,66,139,130,73,4,137,181,35,198,136,136,100,154,131,191,14,88,130,230,176,30,128,209,218,220,129,84,204,147,132,99,166,81,133,58,24,23,135,13,114,213,134,160,208,226,169,151,186,32,168,206,4,102,170,249,110,164,171,124,120,235,174,75,18,41,175,18,172,111,173,37,198,173,172,24,129,241,167,47,235,51,166,118,85,117,164,65,63,183,165,196,41,248,160,243,67,58,161,170,253,124,163,157,151,190,162,208,115,196,181,231,25,6,180,190,167,64,182,137,205,130,183,12,219,205,178,59,177,15,179,98,15,73,177,85,101,139,176,104,34,215,187,95,72,21,186,6,246,83,184,49,156,145,185,180,138,222,188,131,224,28,189,218,94,90,191,237,52,152,190,0,0,0,0,101,103,188,184,139,200,9,170,238,175,181,18,87,151,98,143,50,240,222,55,220,95,107,37,185,56,215,157,239,40,180,197,138,79,8,125,100,224,189,111,1,135,1,215,184,191,214,74,221,216,106,242,51,119,223,224,86,16,99,88,159,87,25,80,250,48,165,232,20,159,16,250,113,248,172,66,200,192,123,223,173,167,199,103,67,8,114,117,38,111,206,205,112,127,173,149,21,24,17,45,251,183,164,63,158,208,24,135,39,232,207,26,66,143,115,162,172,32,198,176,201,71,122,8,62,175,50,160,91,200,142,24,181,103,59,10,208,0,135,178,105,56,80,47,12,95,236,151,226,240,89,133,135,151,229,61,209,135,134,101,180,224,58,221,90,79,143,207,63,40,51,119,134,16,228,234,227,119,88,82,13,216,237,64,104,191,81,248,161,248,43,240,196,159,151,72,42,48,34,90,79,87,158,226,246,111,73,127,147,8,245,199,125,167,64,213,24,192,252,109,78,208,159,53,43,183,35,141,197,24,150,159,160,127,42,39,25,71,253,186,124,32,65,2,146,143,244,16,247,232,72,168,61,88,20,155,88,63,168,35,182,144,29,49,211,247,161,137,106,207,118,20,15,168,202,172,225,7,127,190,132,96,195,6,210,112,160,94,183,23,28,230,89,184,169,244,60,223,21,76,133,231,194,209,224,128,126,105,14,47,203,123,107,72,119,195,162,15,13,203,199,104,177,115,41,199,4,97,76,160,184,217,245,152,111,68,144,255,211,252,126,80,102,238,27,55,218,86,77,39,185,14,40,64,5,182,198,239,176,164,163,136,12,28,26,176,219,129,127,215,103,57,145,120,210,43,244,31,110,147,3,247,38,59,102,144,154,131,136,63,47,145,237,88,147,41,84,96,68,180,49,7,248,12,223,168,77,30,186,207,241,166,236,223,146,254,137,184,46,70,103,23,155,84,2,112,39,236,187,72,240,113,222,47,76,201,48,128,249,219,85,231,69,99,156,160,63,107,249,199,131,211,23,104,54,193,114,15,138,121,203,55,93,228,174,80,225,92,64,255,84,78,37,152,232,246,115,136,139,174,22,239,55,22,248,64,130,4,157,39,62,188,36,31,233,33,65,120,85,153,175,215,224,139,202,176,92,51,59,182,89,237,94,209,229,85,176,126,80,71,213,25,236,255,108,33,59,98,9,70,135,218,231,233,50,200,130,142,142,112,212,158,237,40,177,249,81,144,95,86,228,130,58,49,88,58,131,9,143,167,230,110,51,31,8,193,134,13,109,166,58,181,164,225,64,189,193,134,252,5,47,41,73,23,74,78,245,175,243,118,34,50,150,17,158,138,120,190,43,152,29,217,151,32,75,201,244,120,46,174,72,192,192,1,253,210,165,102,65,106,28,94,150,247,121,57,42,79,151,150,159,93,242,241,35,229,5,25,107,77,96,126,215,245,142,209,98,231,235,182,222,95,82,142,9,194,55,233,181,122,217,70,0,104,188,33,188,208,234,49,223,136,143,86,99,48,97,249,214,34,4,158,106,154,189,166,189,7,216,193,1,191,54,110,180,173,83,9,8,21,154,78,114,29,255,41,206,165,17,134,123,183,116,225,199,15,205,217,16,146,168,190,172,42,70,17,25,56,35,118,165,128,117,102,198,216,16,1,122,96,254,174,207,114,155,201,115,202,34,241,164,87,71,150,24,239,169,57,173,253,204,94,17,69,6,238,77,118,99,137,241,206,141,38,68,220,232,65,248,100,81,121,47,249,52,30,147,65,218,177,38,83,191,214,154,235,233,198,249,179,140,161,69,11,98,14,240,25,7,105,76,161,190,81,155,60,219,54,39,132,53,153,146,150,80,254,46,46,153,185,84,38,252,222,232,158,18,113,93,140,119,22,225,52,206,46,54,169,171,73,138,17,69,230,63,3,32,129,131,187,118,145,224,227,19,246,92,91,253,89,233,73,152,62,85,241,33,6,130,108,68,97,62,212,170,206,139,198,207,169,55,126,56,65,127,214,93,38,195,110,179,137,118,124,214,238,202,196,111,214,29,89,10,177,161,225,228,30,20,243,129,121,168,75,215,105,203,19,178,14,119,171,92,161,194,185,57,198,126,1,128,254,169,156,229,153,21,36,11,54,160,54,110,81,28,142,167,22,102,134,194,113,218,62,44,222,111,44,73,185,211,148,240,129,4,9,149,230,184,177,123,73,13,163,30,46,177,27,72,62,210,67,45,89,110,251,195,246,219,233,166,145,103,81,31,169,176,204,122,206,12,116,148,97,185,102,241,6,5,222,0,0,0,0,119,7,48,150,238,14,97,44,153,9,81,186,7,109,196,25,112,106,244,143,233,99,165,53,158,100,149,163,14,219,136,50,121,220,184,164,224,213,233,30,151,210,217,136,9,182,76,43,126,177,124,189,231,184,45,7,144,191,29,145,29,183,16,100,106,176,32,242,243,185,113,72,132,190,65,222,26,218,212,125,109,221,228,235,244,212,181,81,131,211,133,199,19,108,152,86,100,107,168,192,253,98,249,122,138,101,201,236,20,1,92,79,99,6,108,217,250,15,61,99,141,8,13,245,59,110,32,200,76,105,16,94,213,96,65,228,162,103,113,114,60,3,228,209,75,4,212,71,210,13,133,253,165,10,181,107,53,181,168,250,66,178,152,108,219,187,201,214,172,188,249,64,50,216,108,227,69,223,92,117,220,214,13,207,171,209,61,89,38,217,48,172,81,222,0,58,200,215,81,128,191,208,97,22,33,180,244,181,86,179,196,35,207,186,149,153,184,189,165,15,40,2,184,158,95,5,136,8,198,12,217,178,177,11,233,36,47,111,124,135,88,104,76,17,193,97,29,171,182,102,45,61,118,220,65,144,1,219,113,6,152,210,32,188,239,213,16,42,113,177,133,137,6,182,181,31,159,191,228,165,232,184,212,51,120,7,201,162,15,0,249,52,150,9,168,142,225,14,152,24,127,106,13,187,8,109,61,45,145,100,108,151,230,99,92,1,107,107,81,244,28,108,97,98,133,101,48,216,242,98,0,78,108,6,149,237,27,1,165,123,130,8,244,193,245,15,196,87,101,176,217,198,18,183,233,80,139,190,184,234,252,185,136,124,98,221,29,223,21,218,45,73,140,211,124,243,251,212,76,101,77,178,97,88,58,181,81,206,163,188,0,116,212,187,48,226,74,223,165,65,61,216,149,215,164,209,196,109,211,214,244,251,67,105,233,106,52,110,217,252,173,103,136,70,218,96,184,208,68,4,45,115,51,3,29,229,170,10,76,95,221,13,124,201,80,5,113,60,39,2,65,170,190,11,16,16,201,12,32,134,87,104,181,37,32,111,133,179,185,102,212,9,206,97,228,159,94,222,249,14,41,217,201,152,176,208,152,34,199,215,168,180,89,179,61,23,46,180,13,129,183,189,92,59,192,186,108,173,237,184,131,32,154,191,179,182,3,182,226,12,116,177,210,154,234,213,71,57,157,210,119,175,4,219,38,21,115,220,22,131,227,99,11,18,148,100,59,132,13,109,106,62,122,106,90,168,228,14,207,11,147,9,255,157,10,0,174,39,125,7,158,177,240,15,147,68,135,8,163,210,30,1,242,104,105,6,194,254,247,98,87,93,128,101,103,203,25,108,54,113,110,107,6,231,254,212,27,118,137,211,43,224,16,218,122,90,103,221,74,204,249,185,223,111,142,190,239,249,23,183,190,67,96,176,142,213,214,214,163,232,161,209,147,126,56,216,194,196,79,223,242,82,209,187,103,241,166,188,87,103,63,181,6,221,72,178,54,75,216,13,43,218,175,10,27,76,54,3,74,246,65,4,122,96,223,96,239,195,168,103,223,85,49,110,142,239,70,105,190,121,203,97,179,140,188,102,131,26,37,111,210,160,82,104,226,54,204,12,119,149,187,11,71,3,34,2,22,185,85,5,38,47,197,186,59,190,178,189,11,40,43,180,90,146,92,179,106,4,194,215,255,167,181,208,207,49,44,217,158,139,91,222,174,29,155,100,194,176,236,99,242,38,117,106,163,156,2,109,147,10,156,9,6,169,235,14,54,63,114,7,103,133,5,0,87,19,149,191,74,130,226,184,122,20,123,177,43,174,12,182,27,56,146,210,142,155,229,213,190,13,124,220,239,183,11,219,223,33,134,211,210,212,241,212,226,66,104,221,179,248,31,218,131,110,129,190,22,205,246,185,38,91,111,176,119,225,24,183,71,119,136,8,90,230,255,15,106,112,102,6,59,202,17,1,11,92,143,101,158,255,248,98,174,105,97,107,255,211,22,108,207,69,160,10,226,120,215,13,210,238,78,4,131,84,57,3,179,194,167,103,38,97,208,96,22,247,73,105,71,77,62,110,119,219,174,209,106,74,217,214,90,220,64,223,11,102,55,216,59,240,169,188,174,83,222,187,158,197,71,178,207,127,48,181,255,233,189,189,242,28,202,186,194,138,83,179,147,48,36,180,163,166,186,208,54,5,205,215,6,147,84,222,87,41,35,217,103,191,179,102,122,46,196,97,74,184,93,104,27,2,42,111,43,148,180,11,190,55,195,12,142,161,90,5,223,27,45,2,239,141,0,0,0,0,25,27,49,65,50,54,98,130,43,45,83,195,100,108,197,4,125,119,244,69,86,90,167,134,79,65,150,199,200,217,138,8,209,194,187,73,250,239,232,138,227,244,217,203,172,181,79,12,181,174,126,77,158,131,45,142,135,152,28,207,74,194,18,81,83,217,35,16,120,244,112,211,97,239,65,146,46,174,215,85,55,181,230,20,28,152,181,215,5,131,132,150,130,27,152,89,155,0,169,24,176,45,250,219,169,54,203,154,230,119,93,93,255,108,108,28,212,65,63,223,205,90,14,158,149,132,36,162,140,159,21,227,167,178,70,32,190,169,119,97,241,232,225,166,232,243,208,231,195,222,131,36,218,197,178,101,93,93,174,170,68,70,159,235,111,107,204,40,118,112,253,105,57,49,107,174,32,42,90,239,11,7,9,44,18,28,56,109,223,70,54,243,198,93,7,178,237,112,84,113,244,107,101,48,187,42,243,247,162,49,194,182,137,28,145,117,144,7,160,52,23,159,188,251,14,132,141,186,37,169,222,121,60,178,239,56,115,243,121,255,106,232,72,190,65,197,27,125,88,222,42,60,240,121,79,5,233,98,126,68,194,79,45,135,219,84,28,198,148,21,138,1,141,14,187,64,166,35,232,131,191,56,217,194,56,160,197,13,33,187,244,76,10,150,167,143,19,141,150,206,92,204,0,9,69,215,49,72,110,250,98,139,119,225,83,202,186,187,93,84,163,160,108,21,136,141,63,214,145,150,14,151,222,215,152,80,199,204,169,17,236,225,250,210,245,250,203,147,114,98,215,92,107,121,230,29,64,84,181,222,89,79,132,159,22,14,18,88,15,21,35,25,36,56,112,218,61,35,65,155,101,253,107,167,124,230,90,230,87,203,9,37,78,208,56,100,1,145,174,163,24,138,159,226,51,167,204,33,42,188,253,96,173,36,225,175,180,63,208,238,159,18,131,45,134,9,178,108,201,72,36,171,208,83,21,234,251,126,70,41,226,101,119,104,47,63,121,246,54,36,72,183,29,9,27,116,4,18,42,53,75,83,188,242,82,72,141,179,121,101,222,112,96,126,239,49,231,230,243,254,254,253,194,191,213,208,145,124,204,203,160,61,131,138,54,250,154,145,7,187,177,188,84,120,168,167,101,57,59,131,152,75,34,152,169,10,9,181,250,201,16,174,203,136,95,239,93,79,70,244,108,14,109,217,63,205,116,194,14,140,243,90,18,67,234,65,35,2,193,108,112,193,216,119,65,128,151,54,215,71,142,45,230,6,165,0,181,197,188,27,132,132,113,65,138,26,104,90,187,91,67,119,232,152,90,108,217,217,21,45,79,30,12,54,126,95,39,27,45,156,62,0,28,221,185,152,0,18,160,131,49,83,139,174,98,144,146,181,83,209,221,244,197,22,196,239,244,87,239,194,167,148,246,217,150,213,174,7,188,233,183,28,141,168,156,49,222,107,133,42,239,42,202,107,121,237,211,112,72,172,248,93,27,111,225,70,42,46,102,222,54,225,127,197,7,160,84,232,84,99,77,243,101,34,2,178,243,229,27,169,194,164,48,132,145,103,41,159,160,38,228,197,174,184,253,222,159,249,214,243,204,58,207,232,253,123,128,169,107,188,153,178,90,253,178,159,9,62,171,132,56,127,44,28,36,176,53,7,21,241,30,42,70,50,7,49,119,115,72,112,225,180,81,107,208,245,122,70,131,54,99,93,178,119,203,250,215,78,210,225,230,15,249,204,181,204,224,215,132,141,175,150,18,74,182,141,35,11,157,160,112,200,132,187,65,137,3,35,93,70,26,56,108,7,49,21,63,196,40,14,14,133,103,79,152,66,126,84,169,3,85,121,250,192,76,98,203,129,129,56,197,31,152,35,244,94,179,14,167,157,170,21,150,220,229,84,0,27,252,79,49,90,215,98,98,153,206,121,83,216,73,225,79,23,80,250,126,86,123,215,45,149,98,204,28,212,45,141,138,19,52,150,187,82,31,187,232,145,6,160,217,208,94,126,243,236,71,101,194,173,108,72,145,110,117,83,160,47,58,18,54,232,35,9,7,169,8,36,84,106,17,63,101,43,150,167,121,228,143,188,72,165,164,145,27,102,189,138,42,39,242,203,188,224,235,208,141,161,192,253,222,98,217,230,239,35,20,188,225,189,13,167,208,252,38,138,131,63,63,145,178,126,112,208,36,185,105,203,21,248,66,230,70,59,91,253,119,122,220,101,107,181,197,126,90,244,238,83,9,55,247,72,56,118,184,9,174,177,161,18,159,240,138,63,204,51,147,36,253,114,0,0,0,0,1,194,106,55,3,132,212,110,2,70,190,89,7,9,168,220,6,203,194,235,4,141,124,178,5,79,22,133,14,19,81,184,15,209,59,143,13,151,133,214,12,85,239,225,9,26,249,100,8,216,147,83,10,158,45,10,11,92,71,61,28,38,163,112,29,228,201,71,31,162,119,30,30,96,29,41,27,47,11,172,26,237,97,155,24,171,223,194,25,105,181,245,18,53,242,200,19,247,152,255,17,177,38,166,16,115,76,145,21,60,90,20,20,254,48,35,22,184,142,122,23,122,228,77,56,77,70,224,57,143,44,215,59,201,146,142,58,11,248,185,63,68,238,60,62,134,132,11,60,192,58,82,61,2,80,101,54,94,23,88,55,156,125,111,53,218,195,54,52,24,169,1,49,87,191,132,48,149,213,179,50,211,107,234,51,17,1,221,36,107,229,144,37,169,143,167,39,239,49,254,38,45,91,201,35,98,77,76,34,160,39,123,32,230,153,34,33,36,243,21,42,120,180,40,43,186,222,31,41,252,96,70,40,62,10,113,45,113,28,244,44,179,118,195,46,245,200,154,47,55,162,173,112,154,141,192,113,88,231,247,115,30,89,174,114,220,51,153,119,147,37,28,118,81,79,43,116,23,241,114,117,213,155,69,126,137,220,120,127,75,182,79,125,13,8,22,124,207,98,33,121,128,116,164,120,66,30,147,122,4,160,202,123,198,202,253,108,188,46,176,109,126,68,135,111,56,250,222,110,250,144,233,107,181,134,108,106,119,236,91,104,49,82,2,105,243,56,53,98,175,127,8,99,109,21,63,97,43,171,102,96,233,193,81,101,166,215,212,100,100,189,227,102,34,3,186,103,224,105,141,72,215,203,32,73,21,161,23,75,83,31,78,74,145,117,121,79,222,99,252,78,28,9,203,76,90,183,146,77,152,221,165,70,196,154,152,71,6,240,175,69,64,78,246,68,130,36,193,65,205,50,68,64,15,88,115,66,73,230,42,67,139,140,29,84,241,104,80,85,51,2,103,87,117,188,62,86,183,214,9,83,248,192,140,82,58,170,187,80,124,20,226,81,190,126,213,90,226,57,232,91,32,83,223,89,102,237,134,88,164,135,177,93,235,145,52,92,41,251,3,94,111,69,90,95,173,47,109,225,53,27,128,224,247,113,183,226,177,207,238,227,115,165,217,230,60,179,92,231,254,217,107,229,184,103,50,228,122,13,5,239,38,74,56,238,228,32,15,236,162,158,86,237,96,244,97,232,47,226,228,233,237,136,211,235,171,54,138,234,105,92,189,253,19,184,240,252,209,210,199,254,151,108,158,255,85,6,169,250,26,16,44,251,216,122,27,249,158,196,66,248,92,174,117,243,0,233,72,242,194,131,127,240,132,61,38,241,70,87,17,244,9,65,148,245,203,43,163,247,141,149,250,246,79,255,205,217,120,93,96,216,186,55,87,218,252,137,14,219,62,227,57,222,113,245,188,223,179,159,139,221,245,33,210,220,55,75,229,215,107,12,216,214,169,102,239,212,239,216,182,213,45,178,129,208,98,164,4,209,160,206,51,211,230,112,106,210,36,26,93,197,94,254,16,196,156,148,39,198,218,42,126,199,24,64,73,194,87,86,204,195,149,60,251,193,211,130,162,192,17,232,149,203,77,175,168,202,143,197,159,200,201,123,198,201,11,17,241,204,68,7,116,205,134,109,67,207,192,211,26,206,2,185,45,145,175,150,64,144,109,252,119,146,43,66,46,147,233,40,25,150,166,62,156,151,100,84,171,149,34,234,242,148,224,128,197,159,188,199,248,158,126,173,207,156,56,19,150,157,250,121,161,152,181,111,36,153,119,5,19,155,49,187,74,154,243,209,125,141,137,53,48,140,75,95,7,142,13,225,94,143,207,139,105,138,128,157,236,139,66,247,219,137,4,73,130,136,198,35,181,131,154,100,136,130,88,14,191,128,30,176,230,129,220,218,209,132,147,204,84,133,81,166,99,135,23,24,58,134,213,114,13,169,226,208,160,168,32,186,151,170,102,4,206,171,164,110,249,174,235,120,124,175,41,18,75,173,111,172,18,172,173,198,37,167,241,129,24,166,51,235,47,164,117,85,118,165,183,63,65,160,248,41,196,161,58,67,243,163,124,253,170,162,190,151,157,181,196,115,208,180,6,25,231,182,64,167,190,183,130,205,137,178,205,219,12,179,15,177,59,177,73,15,98,176,139,101,85,187,215,34,104,186,21,72,95,184,83,246,6,185,145,156,49,188,222,138,180,189,28,224,131,191,90,94,218,190,152,52,237,0,0,0,0,184,188,103,101,170,9,200,139,18,181,175,238,143,98,151,87,55,222,240,50,37,107,95,220,157,215,56,185,197,180,40,239,125,8,79,138,111,189,224,100,215,1,135,1,74,214,191,184,242,106,216,221,224,223,119,51,88,99,16,86,80,25,87,159,232,165,48,250,250,16,159,20,66,172,248,113,223,123,192,200,103,199,167,173,117,114,8,67,205,206,111,38,149,173,127,112,45,17,24,21,63,164,183,251,135,24,208,158,26,207,232,39,162,115,143,66,176,198,32,172,8,122,71,201,160,50,175,62,24,142,200,91,10,59,103,181,178,135,0,208,47,80,56,105,151,236,95,12,133,89,240,226,61,229,151,135,101,134,135,209,221,58,224,180,207,143,79,90,119,51,40,63,234,228,16,134,82,88,119,227,64,237,216,13,248,81,191,104,240,43,248,161,72,151,159,196,90,34,48,42,226,158,87,79,127,73,111,246,199,245,8,147,213,64,167,125,109,252,192,24,53,159,208,78,141,35,183,43,159,150,24,197,39,42,127,160,186,253,71,25,2,65,32,124,16,244,143,146,168,72,232,247,155,20,88,61,35,168,63,88,49,29,144,182,137,161,247,211,20,118,207,106,172,202,168,15,190,127,7,225,6,195,96,132,94,160,112,210,230,28,23,183,244,169,184,89,76,21,223,60,209,194,231,133,105,126,128,224,123,203,47,14,195,119,72,107,203,13,15,162,115,177,104,199,97,4,199,41,217,184,160,76,68,111,152,245,252,211,255,144,238,102,80,126,86,218,55,27,14,185,39,77,182,5,64,40,164,176,239,198,28,12,136,163,129,219,176,26,57,103,215,127,43,210,120,145,147,110,31,244,59,38,247,3,131,154,144,102,145,47,63,136,41,147,88,237,180,68,96,84,12,248,7,49,30,77,168,223,166,241,207,186,254,146,223,236,70,46,184,137,84,155,23,103,236,39,112,2,113,240,72,187,201,76,47,222,219,249,128,48,99,69,231,85,107,63,160,156,211,131,199,249,193,54,104,23,121,138,15,114,228,93,55,203,92,225,80,174,78,84,255,64,246,232,152,37,174,139,136,115,22,55,239,22,4,130,64,248,188,62,39,157,33,233,31,36,153,85,120,65,139,224,215,175,51,92,176,202,237,89,182,59,85,229,209,94,71,80,126,176,255,236,25,213,98,59,33,108,218,135,70,9,200,50,233,231,112,142,142,130,40,237,158,212,144,81,249,177,130,228,86,95,58,88,49,58,167,143,9,131,31,51,110,230,13,134,193,8,181,58,166,109,189,64,225,164,5,252,134,193,23,73,41,47,175,245,78,74,50,34,118,243,138,158,17,150,152,43,190,120,32,151,217,29,120,244,201,75,192,72,174,46,210,253,1,192,106,65,102,165,247,150,94,28,79,42,57,121,93,159,150,151,229,35,241,242,77,107,25,5,245,215,126,96,231,98,209,142,95,222,182,235,194,9,142,82,122,181,233,55,104,0,70,217,208,188,33,188,136,223,49,234,48,99,86,143,34,214,249,97,154,106,158,4,7,189,166,189,191,1,193,216,173,180,110,54,21,8,9,83,29,114,78,154,165,206,41,255,183,123,134,17,15,199,225,116,146,16,217,205,42,172,190,168,56,25,17,70,128,165,118,35,216,198,102,117,96,122,1,16,114,207,174,254,202,115,201,155,87,164,241,34,239,24,150,71,253,173,57,169,69,17,94,204,118,77,238,6,206,241,137,99,220,68,38,141,100,248,65,232,249,47,121,81,65,147,30,52,83,38,177,218,235,154,214,191,179,249,198,233,11,69,161,140,25,240,14,98,161,76,105,7,60,155,81,190,132,39,54,219,150,146,153,53,46,46,254,80,38,84,185,153,158,232,222,252,140,93,113,18,52,225,22,119,169,54,46,206,17,138,73,171,3,63,230,69,187,131,129,32,227,224,145,118,91,92,246,19,73,233,89,253,241,85,62,152,108,130,6,33,212,62,97,68,198,139,206,170,126,55,169,207,214,127,65,56,110,195,38,93,124,118,137,179,196,202,238,214,89,29,214,111,225,161,177,10,243,20,30,228,75,168,121,129,19,203,105,215,171,119,14,178,185,194,161,92,1,126,198,57,156,169,254,128,36,21,153,229,54,160,54,11,142,28,81,110,134,102,22,167,62,218,113,194,44,111,222,44,148,211,185,73,9,4,129,240,177,184,230,149,163,13,73,123,27,177,46,30,67,210,62,72,251,110,89,45,233,219,246,195,81,103,145,166,204,176,169,31,116,12,206,122,102,185,97,148,222,5,6,241,0,0,0,0,0,0,0,0,172,0,0,0,4,0,4,0,8,0,4,0,173,0,0,0,4,0,5,0,16,0,8,0,173,0,0,0,4,0,6,0,32,0,32,0,173,0,0,0,4,0,4,0,16,0,16,0,174,0,0,0,8,0,16,0,32,0,32,0,174,0,0,0,8,0,16,0,128,0,128,0,174,0,0,0,8,0,32,0,128,0,0,1,174,0,0,0,32,0,128,0,2,1,0,4,174,0,0,0,32,0,2,1,2,1,0,16,174,0,0,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,32,116,111,111,32,102,97,114,32,98,97,99,107,0,0,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,32,99,111,100,101,0,0,0,105,110,118,97,108,105,100,32,108,105,116,101,114,97,108,47,108,101,110,103,116,104,32,99,111,100,101,0,0,0,0,0,16,0,17,0,18,0,0,0,8,0,7,0,9,0,6,0,10,0,5,0,11,0,4,0,12,0,3,0,13,0,2,0,14,0,1,0,15,0,0,0,105,110,99,111,114,114,101,99,116,32,104,101,97,100,101,114,32,99,104,101,99,107,0,0,117,110,107,110,111,119,110,32,99,111,109,112,114,101,115,115,105,111,110,32,109,101,116,104,111,100,0,0,0,0,0,0,105,110,118,97,108,105,100,32,119,105,110,100,111,119,32,115,105,122,101,0,0,0,0,0,117,110,107,110,111,119,110,32,104,101,97,100,101,114,32,102,108,97,103,115,32,115,101,116,0,0,0,0,0,0,0,0,104,101,97,100,101,114,32,99,114,99,32,109,105,115,109,97,116,99,104,0,0,0,0,0,105,110,118,97,108,105,100,32,98,108,111,99,107,32,116,121,112,101,0,0,0,0,0,0,105,110,118,97,108,105,100,32,115,116,111,114,101,100,32,98,108,111,99,107,32,108,101,110,103,116,104,115,0,0,0,0,116,111,111,32,109,97,110,121,32,108,101,110,103,116,104,32,111,114,32,100,105,115,116,97,110,99,101,32,115,121,109,98,111,108,115,0,0,0,0,0,105,110,118,97,108,105,100,32,99,111,100,101,32,108,101,110,103,116,104,115,32,115,101,116,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,98,105,116,32,108,101,110,103,116,104,32,114,101,112,101,97,116,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,99,111,100,101,32,45,45,32,109,105,115,115,105,110,103,32,101,110,100,45,111,102,45,98,108,111,99,107,0,0,0,0,105,110,118,97,108,105,100,32,108,105,116,101,114,97,108,47,108,101,110,103,116,104,115,32,115,101,116,0,0,0,0,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,115,32,115,101,116,0,0,0,105,110,118,97,108,105,100,32,108,105,116,101,114,97,108,47,108,101,110,103,116,104,32,99,111,100,101,0,0,0,0,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,32,99,111,100,101,0,0,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,32,116,111,111,32,102,97,114,32,98,97,99,107,0,0,0,105,110,99,111,114,114,101,99,116,32,100,97,116,97,32,99,104,101,99,107,0,0,0,0,105,110,99,111,114,114,101,99,116,32,108,101,110,103,116,104,32,99,104,101,99,107,0,0,96,7,0,0,0,8,80,0,0,8,16,0,20,8,115,0,18,7,31,0,0,8,112,0,0,8,48,0,0,9,192,0,16,7,10,0,0,8,96,0,0,8,32,0,0,9,160,0,0,8,0,0,0,8,128,0,0,8,64,0,0,9,224,0,16,7,6,0,0,8,88,0,0,8,24,0,0,9,144,0,19,7,59,0,0,8,120,0,0,8,56,0,0,9,208,0,17,7,17,0,0,8,104,0,0,8,40,0,0,9,176,0,0,8,8,0,0,8,136,0,0,8,72,0,0,9,240,0,16,7,4,0,0,8,84,0,0,8,20,0,21,8,227,0,19,7,43,0,0,8,116,0,0,8,52,0,0,9,200,0,17,7,13,0,0,8,100,0,0,8,36,0,0,9,168,0,0,8,4,0,0,8,132,0,0,8,68,0,0,9,232,0,16,7,8,0,0,8,92,0,0,8,28,0,0,9,152,0,20,7,83,0,0,8,124,0,0,8,60,0,0,9,216,0,18,7,23,0,0,8,108,0,0,8,44,0,0,9,184,0,0,8,12,0,0,8,140,0,0,8,76,0,0,9,248,0,16,7,3,0,0,8,82,0,0,8,18,0,21,8,163,0,19,7,35,0,0,8,114,0,0,8,50,0,0,9,196,0,17,7,11,0,0,8,98,0,0,8,34,0,0,9,164,0,0,8,2,0,0,8,130,0,0,8,66,0,0,9,228,0,16,7,7,0,0,8,90,0,0,8,26,0,0,9,148,0,20,7,67,0,0,8,122,0,0,8,58,0,0,9,212,0,18,7,19,0,0,8,106,0,0,8,42,0,0,9,180,0,0,8,10,0,0,8,138,0,0,8,74,0,0,9,244,0,16,7,5,0,0,8,86,0,0,8,22,0,64,8,0,0,19,7,51,0,0,8,118,0,0,8,54,0,0,9,204,0,17,7,15,0,0,8,102,0,0,8,38,0,0,9,172,0,0,8,6,0,0,8,134,0,0,8,70,0,0,9,236,0,16,7,9,0,0,8,94,0,0,8,30,0,0,9,156,0,20,7,99,0,0,8,126,0,0,8,62,0,0,9,220,0,18,7,27,0,0,8,110,0,0,8,46,0,0,9,188,0,0,8,14,0,0,8,142,0,0,8,78,0,0,9,252,0,96,7,0,0,0,8,81,0,0,8,17,0,21,8,131,0,18,7,31,0,0,8,113,0,0,8,49,0,0,9,194,0,16,7,10,0,0,8,97,0,0,8,33,0,0,9,162,0,0,8,1,0,0,8,129,0,0,8,65,0,0,9,226,0,16,7,6,0,0,8,89,0,0,8,25,0,0,9,146,0,19,7,59,0,0,8,121,0,0,8,57,0,0,9,210,0,17,7,17,0,0,8,105,0,0,8,41,0,0,9,178,0,0,8,9,0,0,8,137,0,0,8,73,0,0,9,242,0,16,7,4,0,0,8,85,0,0,8,21,0,16,8,2,1,19,7,43,0,0,8,117,0,0,8,53,0,0,9,202,0,17,7,13,0,0,8,101,0,0,8,37,0,0,9,170,0,0,8,5,0,0,8,133,0,0,8,69,0,0,9,234,0,16,7,8,0,0,8,93,0,0,8,29,0,0,9,154,0,20,7,83,0,0,8,125,0,0,8,61,0,0,9,218,0,18,7,23,0,0,8,109,0,0,8,45,0,0,9,186,0,0,8,13,0,0,8,141,0,0,8,77,0,0,9,250,0,16,7,3,0,0,8,83,0,0,8,19,0,21,8,195,0,19,7,35,0,0,8,115,0,0,8,51,0,0,9,198,0,17,7,11,0,0,8,99,0,0,8,35,0,0,9,166,0,0,8,3,0,0,8,131,0,0,8,67,0,0,9,230,0,16,7,7,0,0,8,91,0,0,8,27,0,0,9,150,0,20,7,67,0,0,8,123,0,0,8,59,0,0,9,214,0,18,7,19,0,0,8,107,0,0,8,43,0,0,9,182,0,0,8,11,0,0,8,139,0,0,8,75,0,0,9,246,0,16,7,5,0,0,8,87,0,0,8,23,0,64,8,0,0,19,7,51,0,0,8,119,0,0,8,55,0,0,9,206,0,17,7,15,0,0,8,103,0,0,8,39,0,0,9,174,0,0,8,7,0,0,8,135,0,0,8,71,0,0,9,238,0,16,7,9,0,0,8,95,0,0,8,31,0,0,9,158,0,20,7,99,0,0,8,127,0,0,8,63,0,0,9,222,0,18,7,27,0,0,8,111,0,0,8,47,0,0,9,190,0,0,8,15,0,0,8,143,0,0,8,79,0,0,9,254,0,96,7,0,0,0,8,80,0,0,8,16,0,20,8,115,0,18,7,31,0,0,8,112,0,0,8,48,0,0,9,193,0,16,7,10,0,0,8,96,0,0,8,32,0,0,9,161,0,0,8,0,0,0,8,128,0,0,8,64,0,0,9,225,0,16,7,6,0,0,8,88,0,0,8,24,0,0,9,145,0,19,7,59,0,0,8,120,0,0,8,56,0,0,9,209,0,17,7,17,0,0,8,104,0,0,8,40,0,0,9,177,0,0,8,8,0,0,8,136,0,0,8,72,0,0,9,241,0,16,7,4,0,0,8,84,0,0,8,20,0,21,8,227,0,19,7,43,0,0,8,116,0,0,8,52,0,0,9,201,0,17,7,13,0,0,8,100,0,0,8,36,0,0,9,169,0,0,8,4,0,0,8,132,0,0,8,68,0,0,9,233,0,16,7,8,0,0,8,92,0,0,8,28,0,0,9,153,0,20,7,83,0,0,8,124,0,0,8,60,0,0,9,217,0,18,7,23,0,0,8,108,0,0,8,44,0,0,9,185,0,0,8,12,0,0,8,140,0,0,8,76,0,0,9,249,0,16,7,3,0,0,8,82,0,0,8,18,0,21,8,163,0,19,7,35,0,0,8,114,0,0,8,50,0,0,9,197,0,17,7,11,0,0,8,98,0,0,8,34,0,0,9,165,0,0,8,2,0,0,8,130,0,0,8,66,0,0,9,229,0,16,7,7,0,0,8,90,0,0,8,26,0,0,9,149,0,20,7,67,0,0,8,122,0,0,8,58,0,0,9,213,0,18],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+286721);allocate([7,19,0,0,8,106,0,0,8,42,0,0,9,181,0,0,8,10,0,0,8,138,0,0,8,74,0,0,9,245,0,16,7,5,0,0,8,86,0,0,8,22,0,64,8,0,0,19,7,51,0,0,8,118,0,0,8,54,0,0,9,205,0,17,7,15,0,0,8,102,0,0,8,38,0,0,9,173,0,0,8,6,0,0,8,134,0,0,8,70,0,0,9,237,0,16,7,9,0,0,8,94,0,0,8,30,0,0,9,157,0,20,7,99,0,0,8,126,0,0,8,62,0,0,9,221,0,18,7,27,0,0,8,110,0,0,8,46,0,0,9,189,0,0,8,14,0,0,8,142,0,0,8,78,0,0,9,253,0,96,7,0,0,0,8,81,0,0,8,17,0,21,8,131,0,18,7,31,0,0,8,113,0,0,8,49,0,0,9,195,0,16,7,10,0,0,8,97,0,0,8,33,0,0,9,163,0,0,8,1,0,0,8,129,0,0,8,65,0,0,9,227,0,16,7,6,0,0,8,89,0,0,8,25,0,0,9,147,0,19,7,59,0,0,8,121,0,0,8,57,0,0,9,211,0,17,7,17,0,0,8,105,0,0,8,41,0,0,9,179,0,0,8,9,0,0,8,137,0,0,8,73,0,0,9,243,0,16,7,4,0,0,8,85,0,0,8,21,0,16,8,2,1,19,7,43,0,0,8,117,0,0,8,53,0,0,9,203,0,17,7,13,0,0,8,101,0,0,8,37,0,0,9,171,0,0,8,5,0,0,8,133,0,0,8,69,0,0,9,235,0,16,7,8,0,0,8,93,0,0,8,29,0,0,9,155,0,20,7,83,0,0,8,125,0,0,8,61,0,0,9,219,0,18,7,23,0,0,8,109,0,0,8,45,0,0,9,187,0,0,8,13,0,0,8,141,0,0,8,77,0,0,9,251,0,16,7,3,0,0,8,83,0,0,8,19,0,21,8,195,0,19,7,35,0,0,8,115,0,0,8,51,0,0,9,199,0,17,7,11,0,0,8,99,0,0,8,35,0,0,9,167,0,0,8,3,0,0,8,131,0,0,8,67,0,0,9,231,0,16,7,7,0,0,8,91,0,0,8,27,0,0,9,151,0,20,7,67,0,0,8,123,0,0,8,59,0,0,9,215,0,18,7,19,0,0,8,107,0,0,8,43,0,0,9,183,0,0,8,11,0,0,8,139,0,0,8,75,0,0,9,247,0,16,7,5,0,0,8,87,0,0,8,23,0,64,8,0,0,19,7,51,0,0,8,119,0,0,8,55,0,0,9,207,0,17,7,15,0,0,8,103,0,0,8,39,0,0,9,175,0,0,8,7,0,0,8,135,0,0,8,71,0,0,9,239,0,16,7,9,0,0,8,95,0,0,8,31,0,0,9,159,0,20,7,99,0,0,8,127,0,0,8,63,0,0,9,223,0,18,7,27,0,0,8,111,0,0,8,47,0,0,9,191,0,0,8,15,0,0,8,143,0,0,8,79,0,0,9,255,0,16,5,1,0,23,5,1,1,19,5,17,0,27,5,1,16,17,5,5,0,25,5,1,4,21,5,65,0,29,5,1,64,16,5,3,0,24,5,1,2,20,5,33,0,28,5,1,32,18,5,9,0,26,5,1,8,22,5,129,0,64,5,0,0,16,5,2,0,23,5,129,1,19,5,25,0,27,5,1,24,17,5,7,0,25,5,1,6,21,5,97,0,29,5,1,96,16,5,4,0,24,5,1,3,20,5,49,0,28,5,1,48,18,5,13,0,26,5,1,12,22,5,193,0,64,5,0,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,13,0,15,0,17,0,19,0,23,0,27,0,31,0,35,0,43,0,51,0,59,0,67,0,83,0,99,0,115,0,131,0,163,0,195,0,227,0,2,1,0,0,0,0,0,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,17,0,17,0,17,0,17,0,18,0,18,0,18,0,18,0,19,0,19,0,19,0,19,0,20,0,20,0,20,0,20,0,21,0,21,0,21,0,21,0,16,0,72,0,78,0,0,0,1,0,2,0,3,0,4,0,5,0,7,0,9,0,13,0,17,0,25,0,33,0,49,0,65,0,97,0,129,0,193,0,1,1,129,1,1,2,1,3,1,4,1,6,1,8,1,12,1,16,1,24,1,32,1,48,1,64,1,96,0,0,0,0,16,0,16,0,16,0,16,0,17,0,17,0,18,0,18,0,19,0,19,0,20,0,20,0,21,0,21,0,22,0,22,0,23,0,23,0,24,0,24,0,25,0,25,0,26,0,26,0,27,0,27,0,28,0,28,0,29,0,29,0,64,0,64,0,0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,16,17,18,18,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,1,2,3,4,5,6,7,8,8,9,9,10,10,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,112,143,4,0,104,148,4,0,1,1,0,0,30,1,0,0,15,0,0,0,0,0,0,0,240,147,4,0,88,149,4,0,0,0,0,0,30,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,96,150,4,0,0,0,0,0,19,0,0,0,7,0,0,0,0,0,0,0,12,0,8,0,140,0,8,0,76,0,8,0,204,0,8,0,44,0,8,0,172,0,8,0,108,0,8,0,236,0,8,0,28,0,8,0,156,0,8,0,92,0,8,0,220,0,8,0,60,0,8,0,188,0,8,0,124,0,8,0,252,0,8,0,2,0,8,0,130,0,8,0,66,0,8,0,194,0,8,0,34,0,8,0,162,0,8,0,98,0,8,0,226,0,8,0,18,0,8,0,146,0,8,0,82,0,8,0,210,0,8,0,50,0,8,0,178,0,8,0,114,0,8,0,242,0,8,0,10,0,8,0,138,0,8,0,74,0,8,0,202,0,8,0,42,0,8,0,170,0,8,0,106,0,8,0,234,0,8,0,26,0,8,0,154,0,8,0,90,0,8,0,218,0,8,0,58,0,8,0,186,0,8,0,122,0,8,0,250,0,8,0,6,0,8,0,134,0,8,0,70,0,8,0,198,0,8,0,38,0,8,0,166,0,8,0,102,0,8,0,230,0,8,0,22,0,8,0,150,0,8,0,86,0,8,0,214,0,8,0,54,0,8,0,182,0,8,0,118,0,8,0,246,0,8,0,14,0,8,0,142,0,8,0,78,0,8,0,206,0,8,0,46,0,8,0,174,0,8,0,110,0,8,0,238,0,8,0,30,0,8,0,158,0,8,0,94,0,8,0,222,0,8,0,62,0,8,0,190,0,8,0,126,0,8,0,254,0,8,0,1,0,8,0,129,0,8,0,65,0,8,0,193,0,8,0,33,0,8,0,161,0,8,0,97,0,8,0,225,0,8,0,17,0,8,0,145,0,8,0,81,0,8,0,209,0,8,0,49,0,8,0,177,0,8,0,113,0,8,0,241,0,8,0,9,0,8,0,137,0,8,0,73,0,8,0,201,0,8,0,41,0,8,0,169,0,8,0,105,0,8,0,233,0,8,0,25,0,8,0,153,0,8,0,89,0,8,0,217,0,8,0,57,0,8,0,185,0,8,0,121,0,8,0,249,0,8,0,5,0,8,0,133,0,8,0,69,0,8,0,197,0,8,0,37,0,8,0,165,0,8,0,101,0,8,0,229,0,8,0,21,0,8,0,149,0,8,0,85,0,8,0,213,0,8,0,53,0,8,0,181,0,8,0,117,0,8,0,245,0,8,0,13,0,8,0,141,0,8,0,77,0,8,0,205,0,8,0,45,0,8,0,173,0,8,0,109,0,8,0,237,0,8,0,29,0,8,0,157,0,8,0,93,0,8,0,221,0,8,0,61,0,8,0,189,0,8,0,125,0,8,0,253,0,8,0,19,0,9,0,19,1,9,0,147,0,9,0,147,1,9,0,83,0,9,0,83,1,9,0,211,0,9,0,211,1,9,0,51,0,9,0,51,1,9,0,179,0,9,0,179,1,9,0,115,0,9,0,115,1,9,0,243,0,9,0,243,1,9,0,11,0,9,0,11,1,9,0,139,0,9,0,139,1,9,0,75,0,9,0,75,1,9,0,203,0,9,0,203,1,9,0,43,0,9,0,43,1,9,0,171,0,9,0,171,1,9,0,107,0,9,0,107,1,9,0,235,0,9,0,235,1,9,0,27,0,9,0,27,1,9,0,155,0,9,0,155,1,9,0,91,0,9,0,91,1,9,0,219,0,9,0,219,1,9,0,59,0,9,0,59,1,9,0,187,0,9,0,187,1,9,0,123,0,9,0,123,1,9,0,251,0,9,0,251,1,9,0,7,0,9,0,7,1,9,0,135,0,9,0,135,1,9,0,71,0,9,0,71,1,9,0,199,0,9,0,199,1,9,0,39,0,9,0,39,1,9,0,167,0,9,0,167,1,9,0,103,0,9,0,103,1,9,0,231,0,9,0,231,1,9,0,23,0,9,0,23,1,9,0,151,0,9,0,151,1,9,0,87,0,9,0,87,1,9,0,215,0,9,0,215,1,9,0,55,0,9,0,55,1,9,0,183,0,9,0,183,1,9,0,119,0,9,0,119,1,9,0,247,0,9,0,247,1,9,0,15,0,9,0,15,1,9,0,143,0,9,0,143,1,9,0,79,0,9,0,79,1,9,0,207,0,9,0,207,1,9,0,47,0,9,0,47,1,9,0,175,0,9,0,175,1,9,0,111,0,9,0,111,1,9,0,239,0,9,0,239,1,9,0,31,0,9,0,31,1,9,0,159,0,9,0,159,1,9,0,95,0,9,0,95,1,9,0,223,0,9,0,223,1,9,0,63,0,9,0,63,1,9,0,191,0,9,0,191,1,9,0,127,0,9,0,127,1,9,0,255,0,9,0,255,1,9,0,0,0,7,0,64,0,7,0,32,0,7,0,96,0,7,0,16,0,7,0,80,0,7,0,48,0,7,0,112,0,7,0,8,0,7,0,72,0,7,0,40,0,7,0,104,0,7,0,24,0,7,0,88,0,7,0,56,0,7,0,120,0,7,0,4,0,7,0,68,0,7,0,36,0,7,0,100,0,7,0,20,0,7,0,84,0,7,0,52,0,7,0,116,0,7,0,3,0,8,0,131,0,8,0,67,0,8,0,195,0,8,0,35,0,8,0,163,0,8,0,99,0,8,0,227,0,8,0,0,0,5,0,16,0,5,0,8,0,5,0,24,0,5,0,4,0,5,0,20,0,5,0,12,0,5,0,28,0,5,0,2,0,5,0,18,0,5,0,10,0,5,0,26,0,5,0,6,0,5,0,22,0,5,0,14,0,5,0,30,0,5,0,1,0,5,0,17,0,5,0,9,0,5,0,25,0,5,0,5,0,5,0,21,0,5,0,13,0,5,0,29,0,5,0,3,0,5,0,19,0,5,0,11,0,5,0,27,0,5,0,7,0,5,0,23,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,10,0,0,0,12,0,0,0,14,0,0,0,16,0,0,0,20,0,0,0,24,0,0,0,28,0,0,0,32,0,0,0,40,0,0,0,48,0,0,0,56,0,0,0,64,0,0,0,80,0,0,0,96,0,0,0,112,0,0,0,128,0,0,0,160,0,0,0,192,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,6,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,24,0,0,0,32,0,0,0,48,0,0,0,64,0,0,0,96,0,0,0,128,0,0,0,192,0,0,0,0,1,0,0,128,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,6,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,24,0,0,0,32,0,0,0,48,0,0,0,64,0,0,0,96,0,0,16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,7,0,0,0,0,0,0,0,110,101,101,100,32,100,105,99,116,105,111,110,97,114,121,0,115,116,114,101,97,109,32,101,110,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,105,108,101,32,101,114,114,111,114,0,0,0,0,0,0,115,116,114,101,97,109,32,101,114,114,111,114,0,0,0,0,100,97,116,97,32,101,114,114,111,114,0,0,0,0,0,0,105,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,0,0,0,0,0,98,117,102,102,101,114,32,101,114,114,111,114,0,0,0,0,105,110,99,111,109,112,97,116,105,98,108,101,32,118,101,114,115,105,111,110,0,0,0,0,176,150,4,0,192,150,4,0,208,150,4,0,216,150,4,0,232,150,4,0,248,150,4,0,8,151,4,0,32,151,4,0,48,151,4,0,208,150,4,0,80,104,111,116,111,109,101,116,114,105,99,73,110,116,101,114,112,114,101,116,97,116,105,111,110,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,100,97,116,97,32,99,111,117,110,116,32,102,111,114,32,116,97,103,32,39,37,115,39,0,97,108,105,99,101,98,108,117,101,0,0,0,0,0,0,0,97,110,116,105,113,117,101,119,104,105,116,101,0,0,0,0,97,113,117,97,109,97,114,105,110,101,0,0,0,0,0,0,97,122,117,114,101,0,0,0,98,101,105,103,101,0,0,0,98,105,115,113,117,101,0,0,98,108,97,99,107,0,0,0,98,108,97,110,99,104,101,100,97,108,109,111,110,100,0,0,98,108,117,101,0,0,0,0,98,108,117,101,118,105,111,108,101,116,0,0,0,0,0,0,98,114,111,119,110,0,0,0,98,117,114,108,121,119,111,111,100,0,0,0,0,0,0,0,99,97,100,101,116,98,108,117,101,0,0,0,0,0,0,0,99,104,97,114,116,114,101,117,115,101,0,0,0,0,0,0,99,104,111,99,111,108,97,116,101,0,0,0,0,0,0,0,99,111,114,97,108,0,0,0,99,111,114,110,102,108,111,119,101,114,98,108,117,101,0,0,99,111,114,110,115,105,108,107,0,0,0,0,0,0,0,0,99,121,97,110,0,0,0,0,100,97,114,107,98,108,117,101,0,0,0,0,0,0,0,0,100,97,114,107,99,121,97,110,0,0,0,0,0,0,0,0,100,97,114,107,103,111,108,100,101,110,114,111,100,0,0,0,100,97,114,107,103,114,101,101,110,0,0,0,0,0,0,0,100,97,114,107,107,104,97,107,105,0,0,0,0,0,0,0,100,97,114,107,109,97,103,101,110,116,97,0,0,0,0,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,0,0,100,97,114,107,111,114,97,110,103,101,0,0,0,0,0,0,100,97,114,107,111,114,99,104,105,100,0,0,0,0,0,0,100,97,114,107,114,101,100,0,100,97,114,107,115,97,108,109,111,110,0,0,0,0,0,0,100,97,114,107,115,101,97,103,114,101,101,110,0,0,0,0,100,97,114,107,115,108,97,116,101,98,108,117,101,0,0,0,100,97,114,107,115,108,97,116,101,103,114,97,121,0,0,0,100,97,114,107,115,108,97,116,101,103,114,101,121,0,0,0,100,97,114,107,116,117,114,113,117,111,105,115,101,0,0,0,100,97,114,107,118,105,111,108,101,116,0,0,0,0,0,0,100,101,101,112,112,105,110,107,0,0,0,0,0,0,0,0,100,101,101,112,115,107,121,98,108,117,101,0,0,0,0,0,100,105,109,103,114,97,121,0,100,105,109,103,114,101,121,0,100,111,100,103,101,114,98,108,117,101,0,0,0,0,0,0,102,105,114,101,98,114,105,99,107,0,0,0,0,0,0,0,102,108,111,114,97,108,119,104,105,116,101,0,0,0,0,0,102,111,114,101,115,116,103,114,101,101,110,0,0,0,0,0,103,97,105,110,115,98,111,114,111,0,0,0,0,0,0,0,103,104,111,115,116,119,104,105,116,101,0,0,0,0,0,0,103,111,108,100,0,0,0,0,103,111,108,100,101,110,114,111,100,0,0,0,0,0,0,0,103,114,97,121,0,0,0,0,103,114,101,101,110,0,0,0,103,114,101,101,110,121,101,108,108,111,119,0,0,0,0,0,103,114,101,121,0,0,0,0,104,111,110,101,121,100,101,119,0,0,0,0,0,0,0,0,104,111,116,112,105,110,107,0,105,110,100,105,97,110,114,101,100,0,0,0,0,0,0,0,105,118,111,114,121,0,0,0,107,104,97,107,105,0,0,0,108,97,118,101,110,100,101,114,0,0,0,0,0,0,0,0,108,97,118,101,110,100,101,114,98,108,117,115,104,0,0,0,108,97,119,110,103,114,101,101,110,0,0,0,0,0,0,0,108,101,109,111,110,99,104,105,102,102,111,110,0,0,0,0,108,105,103,104,116,98,108,117,101,0,0,0,0,0,0,0,108,105,103,104,116,99,111,114,97,108,0,0,0,0,0,0,108,105,103,104,116,99,121,97,110,0,0,0,0,0,0,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,121,101,108,108,111,119,0,0,0,0,108,105,103,104,116,103,114,97,121,0,0,0,0,0,0,0,108,105,103,104,116,103,114,101,101,110,0,0,0,0,0,0,108,105,103,104,116,103,114,101,121,0,0,0,0,0,0,0,108,105,103,104,116,112,105,110,107,0,0,0,0,0,0,0,108,105,103,104,116,115,97,108,109,111,110,0,0,0,0,0,108,105,103,104,116,115,101,97,103,114,101,101,110,0,0,0,108,105,103,104,116,115,107,121,98,108,117,101,0,0,0,0,108,105,103,104,116,115,108,97,116,101,103,114,97,121,0,0,108,105,103,104,116,115,108,97,116,101,103,114,101,121,0,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,0,0,108,105,103,104,116,121,101,108,108,111,119,0,0,0,0,0,108,105,109,101,103,114,101,101,110,0,0,0,0,0,0,0,108,105,110,101,110,0,0,0,109,97,103,101,110,116,97,0,109,97,114,111,111,110,0,0,109,101,100,105,117,109,97,113,117,97,109,97,114,105,110,101,0,0,0,0,0,0,0,0,109,101,100,105,117,109,98,108,117,101,0,0,0,0,0,0,109,101,100,105,117,109,111,114,99,104,105,100,0,0,0,0,109,101,100,105,117,109,112,117,114,112,108,101,0,0,0,0,109,101,100,105,117,109,115,101,97,103,114,101,101,110,0,0,109,101,100,105,117,109,115,108,97,116,101,98,108,117,101,0,109,101,100,105,117,109,115,112,114,105,110,103,103,114,101,101,110,0,0,0,0,0,0,0,109,101,100,105,117,109,116,117,114,113,117,111,105,115,101,0,109,101,100,105,117,109,118,105,111,108,101,116,114,101,100,0,109,105,100,110,105,103,104,116,98,108,117,101,0,0,0,0,109,105,110,116,99,114,101,97,109,0,0,0,0,0,0,0,109,105,115,116,121,114,111,115,101,0,0,0,0,0,0,0,109,111,99,99,97,115,105,110,0,0,0,0,0,0,0,0,110,97,118,97,106,111,119,104,105,116,101,0,0,0,0,0,110,97,118,121,0,0,0,0,111,108,100,108,97,99,101,0,111,108,105,118,101,100,114,97,98,0,0,0,0,0,0,0,111,114,97,110,103,101,0,0,111,114,97,110,103,101,114,101,100,0,0,0,0,0,0,0,111,114,99,104,105,100,0,0,112,97,108,101,103,111,108,100,101,110,114,111,100,0,0,0,112,97,108,101,103,114,101,101,110,0,0,0,0,0,0,0,112,97,108,101,116,117,114,113,117,111,105,115,101,0,0,0,112,97,108,101,118,105,111,108,101,116,114,101,100,0,0,0,112,97,112,97,121,97,119,104,105,112,0,0,0,0,0,0,112,101,97,99,104,112,117,102,102,0,0,0,0,0,0,0,112,101,114,117,0,0,0,0,112,105,110,107,0,0,0,0,112,108,117,109,0,0,0,0,112,111,119,100,101,114,98,108,117,101,0,0,0,0,0,0,112,117,114,112,108,101,0,0,114,101,100,0,0,0,0,0,114,111,115,121,98,114,111,119,110,0,0,0,0,0,0,0,114,111,121,97,108,98,108,117,101,0,0,0,0,0,0,0,115,97,100,100,108,101,98,114,111,119,110,0,0,0,0,0,115,97,108,109,111,110,0,0,115,97,110,100,121,98,114,111,119,110,0,0,0,0,0,0,115,101,97,103,114,101,101,110,0,0,0,0,0,0,0,0,115,101,97,115,104,101,108,108,0,0,0,0,0,0,0,0,115,105,101,110,110,97,0,0,115,107,121,98,108,117,101,0,115,108,97,116,101,98,108,117,101,0,0,0,0,0,0,0,115,108,97,116,101,103,114,97,121,0,0,0,0,0,0,0,115,108,97,116,101,103,114,101,121,0,0,0,0,0,0,0,115,110,111,119,0,0,0,0,115,112,114,105,110,103,103,114,101,101,110,0,0,0,0,0,115,116,101,101,108,98,108,117,101,0,0,0,0,0,0,0,116,97,110,0,0,0,0,0,116,104,105,115,116,108,101,0,116,111,109,97,116,111,0,0,116,117,114,113,117,111,105,115,101,0,0,0,0,0,0,0,118,105,111,108,101,116,0,0,119,104,101,97,116,0,0,0,119,104,105,116,101,0,0,0,119,104,105,116,101,115,109,111,107,101,0,0,0,0,0,0,121,101,108,108,111,119,0,0,121,101,108,108,111,119,103,114,101,101,110,0,0,0,0,0,97,110,116,105,113,117,101,119,104,105,116,101,49,0,0,0,97,110,116,105,113,117,101,119,104,105,116,101,50,0,0,0,97,110,116,105,113,117,101,119,104,105,116,101,51,0,0,0,97,110,116,105,113,117,101,119,104,105,116,101,52,0,0,0,97,113,117,97,109,97,114,105,110,101,49,0,0,0,0,0,97,113,117,97,109,97,114,105,110,101,50,0,0,0,0,0,97,113,117,97,109,97,114,105,110,101,51,0,0,0,0,0,97,113,117,97,109,97,114,105,110,101,52,0,0,0,0,0,97,122,117,114,101,49,0,0,97,122,117,114,101,50,0,0,97,122,117,114,101,51,0,0,97,122,117,114,101,52,0,0,98,105,115,113,117,101,49,0,98,105,115,113,117,101,50,0,98,105,115,113,117,101,51,0,98,105,115,113,117,101,52,0,98,108,117,101,49,0,0,0,98,108,117,101,50,0,0,0,98,108,117,101,51,0,0,0,98,108,117,101,52,0,0,0,98,114,111,119,110,49,0,0,98,114,111,119,110,50,0,0,98,114,111,119,110,51,0,0,98,114,111,119,110,52,0,0,98,117,114,108,121,119,111,111,100,49,0,0,0,0,0,0,98,117,114,108,121,119,111,111,100,50,0,0,0,0,0,0,98,117,114,108,121,119,111,111,100,51,0,0,0,0,0,0,98,117,114,108,121,119,111,111,100,52,0,0,0,0,0,0,99,97,100,101,116,98,108,117,101,49,0,0,0,0,0,0,99,97,100,101,116,98,108,117,101,50,0,0,0,0,0,0,99,97,100,101,116,98,108,117,101,51,0,0,0,0,0,0,99,97,100,101,116,98,108,117,101,52,0,0,0,0,0,0,99,104,97,114,116,114,101,117,115,101,49,0,0,0,0,0,99,104,97,114,116,114,101,117,115,101,50,0,0,0,0,0,99,104,97,114,116,114,101,117,115,101,51,0,0,0,0,0,99,104,97,114,116,114,101,117,115,101,52,0,0,0,0,0,99,104,111,99,111,108,97,116,101,49,0,0,0,0,0,0,99,104,111,99,111,108,97,116,101,50,0,0,0,0,0,0,99,104,111,99,111,108,97,116,101,51,0,0,0,0,0,0,99,104,111,99,111,108,97,116,101,52,0,0,0,0,0,0,99,111,114,97,108,49,0,0,99,111,114,97,108,50,0,0,99,111,114,97,108,51,0,0,99,111,114,97,108,52,0,0,99,111,114,110,115,105,108,107,49,0,0,0,0,0,0,0,99,111,114,110,115,105,108,107,50,0,0,0,0,0,0,0,99,111,114,110,115,105,108,107,51,0,0,0,0,0,0,0,99,111,114,110,115,105,108,107,52,0,0,0,0,0,0,0,99,121,97,110,49,0,0,0,99,121,97,110,50,0,0,0,99,121,97,110,51,0,0,0,99,121,97,110,52,0,0,0,100,97,114,107,103,111,108,100,101,110,114,111,100,49,0,0,100,97,114,107,103,111,108,100,101,110,114,111,100,50,0,0,100,97,114,107,103,111,108,100,101,110,114,111,100,51,0,0,100,97,114,107,103,111,108,100,101,110,114,111,100,52,0,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,49,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,50,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,51,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,52,0,100,97,114,107,111,114,97,110,103,101,49,0,0,0,0,0,100,97,114,107,111,114,97,110,103,101,50,0,0,0,0,0,100,97,114,107,111,114,97,110,103,101,51,0,0,0,0,0,100,97,114,107,111,114,97,110,103,101,52,0,0,0,0,0,100,97,114,107,111,114,99,104,105,100,49,0,0,0,0,0,100,97,114,107,111,114,99,104,105,100,50,0,0,0,0,0,100,97,114,107,111,114,99,104,105,100,51,0,0,0,0,0,100,97,114,107,111,114,99,104,105,100,52,0,0,0,0,0,100,97,114,107,115,101,97,103,114,101,101,110,49,0,0,0,100,97,114,107,115,101,97,103,114,101,101,110,50,0,0,0,100,97,114,107,115,101,97,103,114,101,101,110,51,0,0,0,100,97,114,107,115,101,97,103,114,101,101,110,52,0,0,0,100,97,114,107,115,108,97,116,101,103,114,97,121,49,0,0,100,97,114,107,115,108,97,116,101,103,114,97,121,50,0,0,100,97,114,107,115,108,97,116,101,103,114,97,121,51,0,0,100,97,114,107,115,108,97,116,101,103,114,97,121,52,0,0,100,101,101,112,112,105,110,107,49,0,0,0,0,0,0,0,100,101,101,112,112,105,110,107,50,0,0,0,0,0,0,0,100,101,101,112,112,105,110,107,51,0,0,0,0,0,0,0,100,101,101,112,112,105,110,107,52,0,0,0,0,0,0,0,100,101,101,112,115,107,121,98,108,117,101,49,0,0,0,0,100,101,101,112,115,107,121,98,108,117,101,50,0,0,0,0,100,101,101,112,115,107,121,98,108,117,101,51,0,0,0,0,100,101,101,112,115,107,121,98,108,117,101,52,0,0,0,0,100,111,100,103,101,114,98,108,117,101,49,0,0,0,0,0,100,111,100,103,101,114,98,108,117,101,50,0,0,0,0,0,100,111,100,103,101,114,98,108,117,101,51,0,0,0,0,0,100,111,100,103,101,114,98,108,117,101,52,0,0,0,0,0,102,105,114,101,98,114,105,99,107,49,0,0,0,0,0,0,102,105,114,101,98,114,105,99,107,50,0,0,0,0,0,0,102,105,114,101,98,114,105,99,107,51,0,0,0,0,0,0,102,105,114,101,98,114,105,99,107,52,0,0,0,0,0,0,103,111,108,100,49,0,0,0,103,111,108,100,50,0,0,0,103,111,108,100,51,0,0,0,103,111,108,100,52,0,0,0,103,111,108,100,101,110,114,111,100,49,0,0,0,0,0,0,103,111,108,100,101,110,114,111,100,50,0,0,0,0,0,0,103,111,108,100,101,110,114,111,100,51,0,0,0,0,0,0,103,111,108,100,101,110,114,111,100,52,0,0,0,0,0,0,103,114,101,101,110,49,0,0,103,114,101,101,110,50,0,0,103,114,101,101,110,51,0,0,103,114,101,101,110,52,0,0,104,111,110,101,121,100,101,119,49,0,0,0,0,0,0,0,104,111,110,101,121,100,101,119,50,0,0,0,0,0,0,0,104,111,110,101,121,100,101,119,51,0,0,0,0,0,0,0,104,111,110,101,121,100,101,119,52,0,0,0,0,0,0,0,104,111,116,112,105,110,107,49,0,0,0,0,0,0,0,0,104,111,116,112,105,110,107,50,0,0,0,0,0,0,0,0,104,111,116,112,105,110,107,51,0,0,0,0,0,0,0,0,104,111,116,112,105,110,107,52,0,0,0,0,0,0,0,0,105,110,100,105,97,110,114,101,100,49,0,0,0,0,0,0,105,110,100,105,97,110,114,101,100,50,0,0,0,0,0,0,105,110,100,105,97,110,114,101,100,51,0,0,0,0,0,0,105,110,100,105,97,110,114,101,100,52,0,0,0,0,0,0,105,118,111,114,121,49,0,0,105,118,111,114,121,50,0,0,105,118,111,114,121,51,0,0,105,118,111,114,121,52,0,0,107,104,97,107,105,49,0,0,107,104,97,107,105,50,0,0,107,104,97,107,105,51,0,0,107,104,97,107,105,52,0,0,108,97,118,101,110,100,101,114,98,108,117,115,104,49,0,0,108,97,118,101,110,100,101,114,98,108,117,115,104,50,0,0,108,97,118,101,110,100,101,114,98,108,117,115,104,51,0,0,108,97,118,101,110,100,101,114,98,108,117,115,104,52,0,0,108,101,109,111,110,99,104,105,102,102,111,110,49,0,0,0,108,101,109,111,110,99,104,105,102,102,111,110,50,0,0,0,108,101,109,111,110,99,104,105,102,102,111,110,51,0,0,0,108,101,109,111,110,99,104,105,102,102,111,110,52,0,0,0,108,105,103,104,116,98,108,117,101,49,0,0,0,0,0,0,108,105,103,104,116,98,108,117,101,50,0,0,0,0,0,0,108,105,103,104,116,98,108,117,101,51,0,0,0,0,0,0,108,105,103,104,116,98,108,117,101,52,0,0,0,0,0,0,108,105,103,104,116,99,121,97,110,49,0,0,0,0,0,0,108,105,103,104,116,99,121,97,110,50,0,0,0,0,0,0,108,105,103,104,116,99,121,97,110,51,0,0,0,0,0,0,108,105,103,104,116,99,121,97,110,52,0,0,0,0,0,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,0,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,49,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,50,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,51,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,52,0,108,105,103,104,116,112,105,110,107,49,0,0,0,0,0,0,108,105,103,104,116,112,105,110,107,50,0,0,0,0,0,0,108,105,103,104,116,112,105,110,107,51,0,0,0,0,0,0,108,105,103,104,116,112,105,110,107,52,0,0,0,0,0,0,108,105,103,104,116,115,97,108,109,111,110,49,0,0,0,0,108,105,103,104,116,115,97,108,109,111,110,50,0,0,0,0,108,105,103,104,116,115,97,108,109,111,110,51,0,0,0,0,108,105,103,104,116,115,97,108,109,111,110,52,0,0,0,0,108,105,103,104,116,115,107,121,98,108,117,101,49,0,0,0,108,105,103,104,116,115,107,121,98,108,117,101,50,0,0,0,108,105,103,104,116,115,107,121,98,108,117,101,51,0,0,0,108,105,103,104,116,115,107,121,98,108,117,101,52,0,0,0,108,105,103,104,116,115,108,97,116,101,98,108,117,101,0,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,49,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,50,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,51,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,52,0,108,105,103,104,116,121,101,108,108,111,119,49,0,0,0,0,108,105,103,104,116,121,101,108,108,111,119,50,0,0,0,0,108,105,103,104,116,121,101,108,108,111,119,51,0,0,0,0,108,105,103,104,116,121,101,108,108,111,119,52,0,0,0,0,109,97,103,101,110,116,97,49,0,0,0,0,0,0,0,0,109,97,103,101,110,116,97,50,0,0,0,0,0,0,0,0,109,97,103,101,110,116,97,51,0,0,0,0,0,0,0,0,109,97,103,101,110,116,97,52,0,0,0,0,0,0,0,0,109,97,114,111,111,110,49,0,109,97,114,111,111,110,50,0,109,97,114,111,111,110,51,0,109,97,114,111,111,110,52,0,109,101,100,105,117,109,111,114,99,104,105,100,49,0,0,0,109,101,100,105,117,109,111,114,99,104,105,100,50,0,0,0,109,101,100,105,117,109,111,114,99,104,105,100,51,0,0,0,109,101,100,105,117,109,111,114,99,104,105,100,52,0,0,0,109,101,100,105,117,109,112,117,114,112,108,101,49,0,0,0,109,101,100,105,117,109,112,117,114,112,108,101,50,0,0,0,109,101,100,105,117,109,112,117,114,112,108,101,51,0,0,0,109,101,100,105,117,109,112,117,114,112,108,101,52,0,0,0,109,105,115,116,121,114,111,115,101,49,0,0,0,0,0,0,109,105,115,116,121,114,111,115,101,50,0,0,0,0,0,0,109,105,115,116,121,114,111,115,101,51,0,0,0,0,0,0,109,105,115,116,121,114,111,115,101,52,0,0,0,0,0,0,110,97,118,97,106,111,119,104,105,116,101,49,0,0,0,0,110,97,118,97,106,111,119,104,105,116,101,50,0,0,0,0,110,97,118,97,106,111,119,104,105,116,101,51,0,0,0,0,110,97,118,97,106,111,119,104,105,116,101,52,0,0,0,0,110,97,118,121,98,108,117,101,0,0,0,0,0,0,0,0,111,108,105,118,101,100,114,97,98,49,0,0,0,0,0,0,111,108,105,118,101,100,114,97,98,50,0,0,0,0,0,0,111,108,105,118,101,100,114,97,98,51,0,0,0,0,0,0,111,108,105,118,101,100,114,97,98,52,0,0,0,0,0,0,111,114,97,110,103,101,49,0,111,114,97,110,103,101,50,0,111,114,97,110,103,101,51,0,111,114,97,110,103,101,52,0,111,114,97,110,103,101,114,101,100,49,0,0,0,0,0,0,111,114,97,110,103,101,114,101,100,50,0,0,0,0,0,0,111,114,97,110,103,101,114,101,100,51,0,0,0,0,0,0,111,114,97,110,103,101,114,101,100,52,0,0,0,0,0,0,111,114,99,104,105,100,49,0,111,114,99,104,105,100,50,0,111,114,99,104,105,100,51,0,111,114,99,104,105,100,52,0,112,97,108,101,103,114,101,101,110,49,0,0,0,0,0,0,112,97,108,101,103,114,101,101,110,50,0,0,0,0,0,0,112,97,108,101,103,114,101,101,110,51,0,0,0,0,0,0,112,97,108,101,103,114,101,101,110,52,0,0,0,0,0,0,112,97,108,101,116,117,114,113,117,111,105,115,101,49,0,0,112,97,108,101,116,117,114,113,117,111,105,115,101,50,0,0,112,97,108,101,116,117,114,113,117,111,105,115,101,51,0,0,112,97,108,101,116,117,114,113,117,111,105,115,101,52,0,0,112,97,108,101,118,105,111,108,101,116,114,101,100,49,0,0,112,97,108,101,118,105,111,108,101,116,114,101,100,50,0,0,112,97,108,101,118,105,111,108,101,116,114,101,100,51,0,0,112,97,108,101,118,105,111,108,101,116,114,101,100,52,0,0,112,101,97,99,104,112,117,102,102,49,0,0,0,0,0,0,112,101,97,99,104,112,117,102,102,50,0,0,0,0,0,0,112,101,97,99,104,112,117,102,102,51,0,0,0,0,0,0,112,101,97,99,104,112,117,102,102,52,0,0,0,0,0,0,112,105,110,107,49,0,0,0,112,105,110,107,50,0,0,0,112,105,110,107,51,0,0,0,112,105,110,107,52,0,0,0,112,108,117,109,49,0,0,0,112,108,117,109,50,0,0,0,112,108,117,109,51,0,0,0,112,108,117,109,52,0,0,0,112,117,114,112,108,101,49,0,112,117,114,112,108,101,50,0,112,117,114,112,108,101,51,0,112,117,114,112,108,101,52,0,114,101,100,49,0,0,0,0,114,101,100,50,0,0,0,0,114,101,100,51,0,0,0,0,114,101,100,52,0,0,0,0,114,111,115,121,98,114,111,119,110,49,0,0,0,0,0,0,114,111,115,121,98,114,111,119,110,50,0,0,0,0,0,0,114,111,115,121,98,114,111,119,110,51,0,0,0,0,0,0,114,111,115,121,98,114,111,119,110,52,0,0,0,0,0,0,114,111,121,97,108,98,108,117,101,49,0,0,0,0,0,0,114,111,121,97,108,98,108,117,101,50,0,0,0,0,0,0,114,111,121,97,108,98,108,117,101,51,0,0,0,0,0,0,114,111,121,97,108,98,108,117,101,52,0,0,0,0,0,0,115,97,108,109,111,110,49,0,115,97,108,109,111,110,50,0,115,97,108,109,111,110,51,0,115,97,108,109,111,110,52,0,115,101,97,103,114,101,101,110,49,0,0,0,0,0,0,0,115,101,97,103,114,101,101,110,50,0,0,0,0,0,0,0,115,101,97,103,114,101,101,110,51,0,0,0,0,0,0,0,115,101,97,103,114,101,101,110,52,0,0,0,0,0,0,0,115,101,97,115,104,101,108,108,49,0,0,0,0,0,0,0,115,101,97,115,104,101,108,108,50,0,0,0,0,0,0,0,115,101,97,115,104,101,108,108,51,0,0,0,0,0,0,0,115,101,97,115,104,101,108,108,52,0,0,0,0,0,0,0,115,105,101,110,110,97,49,0,115,105,101,110,110,97,50,0,115,105,101,110,110,97,51,0,115,105,101,110,110,97,52,0,115,107,121,98,108,117,101,49,0,0,0,0,0,0,0,0,115,107,121,98,108,117,101,50,0,0,0,0,0,0,0,0,115,107,121,98,108,117,101,51,0,0,0,0,0,0,0,0,115,107,121,98,108,117,101,52,0,0,0,0,0,0,0,0,115,108,97,116,101,98,108,117,101,49,0,0,0,0,0,0,115,108,97,116,101,98,108,117,101,50,0,0,0,0,0,0,115,108,97,116,101,98,108,117,101,51,0,0,0,0,0,0,115,108,97,116,101,98,108,117,101,52,0,0,0,0,0,0,115,108,97,116,101,103,114,97,121,49,0,0,0,0,0,0,115,108,97,116,101,103,114,97,121,50,0,0,0,0,0,0,115,108,97,116,101,103,114,97,121,51,0,0,0,0,0,0,115,108,97,116,101,103,114,97,121,52,0,0,0,0,0,0,115,110,111,119,49,0,0,0,115,110,111,119,50,0,0,0,115,110,111,119,51,0,0,0,115,110,111,119,52,0,0,0,115,112,114,105,110,103,103,114,101,101,110,49,0,0,0,0,115,112,114,105,110,103,103,114,101,101,110,50,0,0,0,0,115,112,114,105,110,103,103,114,101,101,110,51,0,0,0,0,115,112,114,105,110,103,103,114,101,101,110,52,0,0,0,0,115,116,101,101,108,98,108,117,101,49,0,0,0,0,0,0,115,116,101,101,108,98,108,117,101,50,0,0,0,0,0,0,115,116,101,101,108,98,108,117,101,51,0,0,0,0,0,0,115,116,101,101,108,98,108,117,101,52,0,0,0,0,0,0,116,97,110,49,0,0,0,0,116,97,110,50,0,0,0,0,116,97,110,51,0,0,0,0,116,97,110,52,0,0,0,0,116,104,105,115,116,108,101,49,0,0,0,0,0,0,0,0,116,104,105,115,116,108,101,50,0,0,0,0,0,0,0,0,116,104,105,115,116,108,101,51,0,0,0,0,0,0,0,0,116,104,105,115,116,108,101,52,0,0,0,0,0,0,0,0,116,111,109,97,116,111,49,0,116,111,109,97,116,111,50,0,116,111,109,97,116,111,51,0,116,111,109,97,116,111,52,0,116,117,114,113,117,111,105,115,101,49,0,0,0,0,0,0,116,117,114,113,117,111,105,115,101,50,0,0,0,0,0,0,116,117,114,113,117,111,105,115,101,51,0,0,0,0,0,0,116,117,114,113,117,111,105,115,101,52,0,0,0,0,0,0,118,105,111,108,101,116,114,101,100,0,0,0,0,0,0,0,118,105,111,108,101,116,114,101,100,49,0,0,0,0,0,0,118,105,111,108,101,116,114,101,100,50,0,0,0,0,0,0,118,105,111,108,101,116,114,101,100,51,0,0,0,0,0,0,118,105,111,108,101,116,114,101,100,52,0,0,0,0,0,0,119,104,101,97,116,49,0,0,119,104,101,97,116,50,0,0,119,104,101,97,116,51,0,0,119,104,101,97,116,52,0,0,121,101,108,108,111,119,49,0,121,101,108,108,111,119,50,0,121,101,108,108,111,119,51,0,121,101,108,108,111,119,52,0,176,151,4,0,240,248,255,0,192,151,4,0,250,235,215,0,16,159,4,0,255,239,219,0,32,159,4,0,238,223,204,0,48,159,4,0,205,192,176,0,64,159,4,0,139,131,120,0,208,151,4,0,127,255,212,0,80],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+296961);allocate([159,4,0,127,255,212,0,96,159,4,0,118,238,198,0,112,159,4,0,102,205,170,0,128,159,4,0,69,139,116,0,224,151,4,0,240,255,255,0,144,159,4,0,240,255,255,0,152,159,4,0,224,238,238,0,160,159,4,0,193,205,205,0,168,159,4,0,131,139,139,0,232,151,4,0,245,245,220,0,240,151,4,0,255,228,196,0,176,159,4,0,255,228,196,0,184,159,4,0,238,213,183,0,192,159,4,0,205,183,158,0,200,159,4,0,139,125,107,0,248,151,4,0,0,0,0,0,0,152,4,0,255,235,205,0,16,152,4,0,0,0,255,0,208,159,4,0,0,0,255,0,216,159,4,0,0,0,238,0,224,159,4,0,0,0,205,0,232,159,4,0,0,0,139,0,24,152,4,0,138,43,226,0,40,152,4,0,165,42,42,0,240,159,4,0,255,64,64,0,248,159,4,0,238,59,59,0,0,160,4,0,205,51,51,0,8,160,4,0,139,35,35,0,48,152,4,0,222,184,135,0,16,160,4,0,255,211,155,0,32,160,4,0,238,197,145,0,48,160,4,0,205,170,125,0,64,160,4,0,139,115,85,0,64,152,4,0,95,158,160,0,80,160,4,0,152,245,255,0,96,160,4,0,142,229,238,0,112,160,4,0,122,197,205,0,128,160,4,0,83,134,139,0,80,152,4,0,127,255,0,0,144,160,4,0,127,255,0,0,160,160,4,0,118,238,0,0,176,160,4,0,102,205,0,0,192,160,4,0,69,139,0,0,96,152,4,0,210,105,30,0,208,160,4,0,255,127,36,0,224,160,4,0,238,118,33,0,240,160,4,0,205,102,29,0,0,161,4,0,139,69,19,0,112,152,4,0,255,127,80,0,16,161,4,0,255,114,86,0,24,161,4,0,238,106,80,0,32,161,4,0,205,91,69,0,40,161,4,0,139,62,47,0,120,152,4,0,100,149,237,0,136,152,4,0,255,248,220,0,48,161,4,0,255,248,220,0,64,161,4,0,238,232,205,0,80,161,4,0,205,200,177,0,96,161,4,0,139,136,120,0,152,152,4,0,0,255,255,0,112,161,4,0,0,255,255,0,120,161,4,0,0,238,238,0,128,161,4,0,0,205,205,0,136,161,4,0,0,139,139,0,160,152,4,0,0,0,139,0,176,152,4,0,0,139,139,0,192,152,4,0,184,134,11,0,144,161,4,0,255,185,15,0,160,161,4,0,238,173,14,0,176,161,4,0,205,149,12,0,192,161,4,0,139,101,8,0,208,152,4,0,0,100,0,0,224,152,4,0,189,183,107,0,240,152,4,0,139,0,139,0,0,153,4,0,85,107,47,0,208,161,4,0,202,255,112,0,224,161,4,0,188,238,104,0,240,161,4,0,162,205,90,0,0,162,4,0,110,139,61,0,16,153,4,0,255,140,0,0,16,162,4,0,255,127,0,0,32,162,4,0,238,118,0,0,48,162,4,0,205,102,0,0,64,162,4,0,139,69,0,0,32,153,4,0,153,50,204,0,80,162,4,0,191,62,255,0,96,162,4,0,178,58,238,0,112,162,4,0,154,50,205,0,128,162,4,0,104,34,139,0,48,153,4,0,139,0,0,0,56,153,4,0,233,150,122,0,72,153,4,0,143,188,143,0,144,162,4,0,193,255,193,0,160,162,4,0,180,238,180,0,176,162,4,0,155,205,155,0,192,162,4,0,105,139,105,0,88,153,4,0,72,61,139,0,104,153,4,0,47,79,79,0,208,162,4,0,151,255,255,0,224,162,4,0,141,238,238,0,240,162,4,0,121,205,205,0,0,163,4,0,82,139,139,0,120,153,4,0,47,79,79,0,136,153,4,0,0,206,209,0,152,153,4,0,148,0,211,0,168,153,4,0,255,20,147,0,16,163,4,0,255,20,147,0,32,163,4,0,238,18,137,0,48,163,4,0,205,16,118,0,64,163,4,0,139,10,80,0,184,153,4,0,0,191,255,0,80,163,4,0,0,191,255,0,96,163,4,0,0,178,238,0,112,163,4,0,0,154,205,0,128,163,4,0,0,104,139,0,200,153,4,0,105,105,105,0,208,153,4,0,105,105,105,0,216,153,4,0,30,144,255,0,144,163,4,0,30,144,255,0,160,163,4,0,28,134,238,0,176,163,4,0,24,116,205,0,192,163,4,0,16,78,139,0,232,153,4,0,178,34,34,0,208,163,4,0,255,48,48,0,224,163,4,0,238,44,44,0,240,163,4,0,205,38,38,0,0,164,4,0,139,26,26,0,248,153,4,0,255,250,240,0,8,154,4,0,176,48,96,0,24,154,4,0,220,220,220,0,40,154,4,0,248,248,255,0,56,154,4,0,255,215,0,0,16,164,4,0,255,215,0,0,24,164,4,0,238,201,0,0,32,164,4,0,205,173,0,0,40,164,4,0,139,117,0,0,64,154,4,0,218,165,32,0,48,164,4,0,255,193,37,0,64,164,4,0,238,180,34,0,80,164,4,0,205,155,29,0,96,164,4,0,139,105,20,0,80,154,4,0,190,190,190,0,88,154,4,0,0,255,0,0,112,164,4,0,0,255,0,0,120,164,4,0,0,238,0,0,128,164,4,0,0,205,0,0,136,164,4,0,0,139,0,0,96,154,4,0,173,255,47,0,112,154,4,0,190,190,190,0,120,154,4,0,240,255,240,0,144,164,4,0,240,255,240,0,160,164,4,0,224,238,224,0,176,164,4,0,193,205,193,0,192,164,4,0,131,139,131,0,136,154,4,0,255,105,180,0,208,164,4,0,255,110,180,0,224,164,4,0,238,106,167,0,240,164,4,0,205,96,144,0,0,165,4,0,139,58,98,0,144,154,4,0,205,92,92,0,16,165,4,0,255,106,106,0,32,165,4,0,238,99,99,0,48,165,4,0,205,85,85,0,64,165,4,0,139,58,58,0,160,154,4,0,255,255,240,0,80,165,4,0,255,255,240,0,88,165,4,0,238,238,224,0,96,165,4,0,205,205,193,0,104,165,4,0,139,139,131,0,168,154,4,0,240,230,140,0,112,165,4,0,255,246,143,0,120,165,4,0,238,230,133,0,128,165,4,0,205,198,115,0,136,165,4,0,139,134,78,0,176,154,4,0,230,230,250,0,192,154,4,0,255,240,245,0,144,165,4,0,255,240,245,0,160,165,4,0,238,224,229,0,176,165,4,0,205,193,197,0,192,165,4,0,139,131,134,0,208,154,4,0,124,252,0,0,224,154,4,0,255,250,205,0,208,165,4,0,255,250,205,0,224,165,4,0,238,233,191,0,240,165,4,0,205,201,165,0,0,166,4,0,139,137,112,0,240,154,4,0,173,216,230,0,16,166,4,0,191,239,255,0,32,166,4,0,178,223,238,0,48,166,4,0,154,192,205,0,64,166,4,0,104,131,139,0,0,155,4,0,240,128,128,0,16,155,4,0,224,255,255,0,80,166,4,0,224,255,255,0,96,166,4,0,209,238,238,0,112,166,4,0,180,205,205,0,128,166,4,0,122,139,139,0,144,166,4,0,238,221,130,0,160,166,4,0,255,236,139,0,176,166,4,0,238,220,130,0,192,166,4,0,205,190,112,0,208,166,4,0,139,129,76,0,32,155,4,0,250,250,210,0,56,155,4,0,211,211,211,0,72,155,4,0,144,238,144,0,88,155,4,0,211,211,211,0,104,155,4,0,255,182,193,0,224,166,4,0,255,174,185,0,240,166,4,0,238,162,173,0,0,167,4,0,205,140,149,0,16,167,4,0,139,95,101,0,120,155,4,0,255,160,122,0,32,167,4,0,255,160,122,0,48,167,4,0,238,149,114,0,64,167,4,0,205,129,98,0,80,167,4,0,139,87,66,0,136,155,4,0,32,178,170,0,152,155,4,0,135,206,250,0,96,167,4,0,176,226,255,0,112,167,4,0,164,211,238,0,128,167,4,0,141,182,205,0,144,167,4,0,96,123,139,0,160,167,4,0,132,112,255,0,168,155,4,0,119,136,153,0,184,155,4,0,119,136,153,0,200,155,4,0,176,196,222,0,176,167,4,0,202,225,255,0,192,167,4,0,188,210,238,0,208,167,4,0,162,181,205,0,224,167,4,0,110,123,139,0,216,155,4,0,255,255,224,0,240,167,4,0,255,255,224,0,0,168,4,0,238,238,209,0,16,168,4,0,205,205,180,0,32,168,4,0,139,139,122,0,232,155,4,0,50,205,50,0,248,155,4,0,250,240,230,0,0,156,4,0,255,0,255,0,48,168,4,0,255,0,255,0,64,168,4,0,238,0,238,0,80,168,4,0,205,0,205,0,96,168,4,0,139,0,139,0,8,156,4,0,0,255,255,0,112,168,4,0,255,52,179,0,120,168,4,0,238,48,167,0,128,168,4,0,205,41,144,0,136,168,4,0,139,28,98,0,16,156,4,0,102,205,170,0,40,156,4,0,0,0,205,0,56,156,4,0,186,85,211,0,144,168,4,0,224,102,255,0,160,168,4,0,209,95,238,0,176,168,4,0,180,82,205,0,192,168,4,0,122,55,139,0,72,156,4,0,147,112,219,0,208,168,4,0,171,130,255,0,224,168,4,0,159,121,238,0,240,168,4,0,137,104,205,0,0,169,4,0,93,71,139,0,88,156,4,0,60,179,113,0,104,156,4,0,123,104,238,0,120,156,4,0,0,250,154,0,144,156,4,0,72,209,204,0,160,156,4,0,199,21,133,0,176,156,4,0,25,25,112,0,192,156,4,0,245,255,250,0,208,156,4,0,255,228,225,0,16,169,4,0,255,228,225,0,32,169,4,0,238,213,210,0,48,169,4,0,205,183,181,0,64,169,4,0,139,125,123,0,224,156,4,0,255,228,181,0,240,156,4,0,255,222,173,0,80,169,4,0,255,222,173,0,96,169,4,0,238,207,161,0,112,169,4,0,205,179,139,0,128,169,4,0,139,121,94,0,0,157,4,0,0,0,128,0,144,169,4,0,0,0,128,0,8,157,4,0,253,245,230,0,16,157,4,0,107,142,35,0,160,169,4,0,192,255,62,0,176,169,4,0,179,238,58,0,192,169,4,0,154,205,50,0,208,169,4,0,105,139,34,0,32,157,4,0,255,165,0,0,224,169,4,0,255,165,0,0,232,169,4,0,238,154,0,0,240,169,4,0,205,133,0,0,248,169,4,0,139,90,0,0,40,157,4,0,255,69,0,0,0,170,4,0,255,69,0,0,16,170,4,0,238,64,0,0,32,170,4,0,205,55,0,0,48,170,4,0,139,37,0,0,56,157,4,0,218,112,214,0,64,170,4,0,255,131,250,0,72,170,4,0,238,122,233,0,80,170,4,0,205,105,201,0,88,170,4,0,139,71,137,0,64,157,4,0,238,232,170,0,80,157,4,0,152,251,152,0,96,170,4,0,154,255,154,0,112,170,4,0,144,238,144,0,128,170,4,0,124,205,124,0,144,170,4,0,84,139,84,0,96,157,4,0,175,238,238,0,160,170,4,0,187,255,255,0,176,170,4,0,174,238,238,0,192,170,4,0,150,205,205,0,208,170,4,0,102,139,139,0,112,157,4,0,219,112,147,0,224,170,4,0,255,130,171,0,240,170,4,0,238,121,159,0,0,171,4,0,205,104,137,0,16,171,4,0,139,71,93,0,128,157,4,0,255,239,213,0,144,157,4,0,255,218,185,0,32,171,4,0,255,218,185,0,48,171,4,0,238,203,173,0,64,171,4,0,205,175,149,0,80,171,4,0,139,119,101,0,160,157,4,0,205,133,63,0,168,157,4,0,255,192,203,0,96,171,4,0,255,181,197,0,104,171,4,0,238,169,184,0,112,171,4,0,205,145,158,0,120,171,4,0,139,99,108,0,176,157,4,0,221,160,221,0,128,171,4,0,255,187,255,0,136,171,4,0,238,174,238,0,144,171,4,0,205,150,205,0,152,171,4,0,139,102,139,0,184,157,4,0,176,224,230,0,200,157,4,0,160,32,240,0,160,171,4,0,155,48,255,0,168,171,4,0,145,44,238,0,176,171,4,0,125,38,205,0,184,171,4,0,85,26,139,0,208,157,4,0,255,0,0,0,192,171,4,0,255,0,0,0,200,171,4,0,238,0,0,0,208,171,4,0,205,0,0,0,216,171,4,0,139,0,0,0,216,157,4,0,188,143,143,0,224,171,4,0,255,193,193,0,240,171,4,0,238,180,180,0,0,172,4,0,205,155,155,0,16,172,4,0,139,105,105,0,232,157,4,0,65,105,225,0,32,172,4,0,72,118,255,0,48,172,4,0,67,110,238,0,64,172,4,0,58,95,205,0,80,172,4,0,39,64,139,0,248,157,4,0,139,69,19,0,8,158,4,0,250,128,114,0,96,172,4,0,255,140,105,0,104,172,4,0,238,130,98,0,112,172,4,0,205,112,84,0,120,172,4,0,139,76,57,0,16,158,4,0,244,164,96,0,32,158,4,0,46,139,87,0,128,172,4,0,84,255,159,0,144,172,4,0,78,238,148,0,160,172,4,0,67,205,128,0,176,172,4,0,46,139,87,0,48,158,4,0,255,245,238,0,192,172,4,0,255,245,238,0,208,172,4,0,238,229,222,0,224,172,4,0,205,197,191,0,240,172,4,0,139,134,130,0,64,158,4,0,160,82,45,0,0,173,4,0,255,130,71,0,8,173,4,0,238,121,66,0,16,173,4,0,205,104,57,0,24,173,4,0,139,71,38,0,72,158,4,0,135,206,235,0,32,173,4,0,135,206,255,0,48,173,4,0,126,192,238,0,64,173,4,0,108,166,205,0,80,173,4,0,74,112,139,0,80,158,4,0,106,90,205,0,96,173,4,0,131,111,255,0,112,173,4,0,122,103,238,0,128,173,4,0,105,89,205,0,144,173,4,0,71,60,139,0,96,158,4,0,112,128,144,0,160,173,4,0,198,226,255,0,176,173,4,0,185,211,238,0,192,173,4,0,159,182,205,0,208,173,4,0,108,123,139,0,112,158,4,0,112,128,144,0,128,158,4,0,255,250,250,0,224,173,4,0,255,250,250,0,232,173,4,0,238,233,233,0,240,173,4,0,205,201,201,0,248,173,4,0,139,137,137,0,136,158,4,0,0,255,127,0,0,174,4,0,0,255,127,0,16,174,4,0,0,238,118,0,32,174,4,0,0,205,102,0,48,174,4,0,0,139,69,0,152,158,4,0,70,130,180,0,64,174,4,0,99,184,255,0,80,174,4,0,92,172,238,0,96,174,4,0,79,148,205,0,112,174,4,0,54,100,139,0,168,158,4,0,210,180,140,0,128,174,4,0,255,165,79,0,136,174,4,0,238,154,73,0,144,174,4,0,205,133,63,0,152,174,4,0,139,90,43,0,176,158,4,0,216,191,216,0,160,174,4,0,255,225,255,0,176,174,4,0,238,210,238,0,192,174,4,0,205,181,205,0,208,174,4,0,139,123,139,0,184,158,4,0,255,99,71,0,224,174,4,0,255,99,71,0,232,174,4,0,238,92,66,0,240,174,4,0,205,79,57,0,248,174,4,0,139,54,38,0,192,158,4,0,64,224,208,0,0,175,4,0,0,245,255,0,16,175,4,0,0,229,238,0,32,175,4,0,0,197,205,0,48,175,4,0,0,134,139,0,208,158,4,0,238,130,238,0,64,175,4,0,208,32,144,0,80,175,4,0,255,62,150,0,96,175,4,0,238,58,140,0,112,175,4,0,205,50,120,0,128,175,4,0,139,34,82,0,216,158,4,0,245,222,179,0,144,175,4,0,255,231,186,0,152,175,4,0,238,216,174,0,160,175,4,0,205,186,150,0,168,175,4,0,139,126,102,0,224,158,4,0,255,255,255,0,232,158,4,0,245,245,245,0,248,158,4,0,255,255,0,0,176,175,4,0,255,255,0,0,184,175,4,0,238,238,0,0,192,175,4,0,205,205,0,0,200,175,4,0,139,139,0,0,0,159,4,0,154,205,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,100,46,37,100,46,37,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,0,0,0,0,114,98,0,0,0,0,0,0,87,97,114,110,105,110,103,58,32,105,109,97,103,101,32,99,111,110,116,97,105,110,115,32,37,100,32,103,114,101,121,115,99,97,108,101,32,99,111,109,112,111,110,101,110,116,115,46,32,79,110,108,121,32,116,104,101,32,102,105,114,115,116,32,119,105,108,108,32,98,101,32,108,111,97,100,101,100,46,10,0,0,0,0,0,0,0,0,68,73,66,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,44,32,109,97,121,98,101,32,99,97,117,115,101,100,32,98,121,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,111,114,32,98,121,32,97,32,108,97,99,107,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,102,111,114,109,97,116,0,0,0,0,0,0,77,101,109,111,114,121,32,98,117,102,102,101,114,32,105,115,32,114,101,97,100,32,111,110,108,121,0,0,0,0,0,0,69,114,114,111,114,32,119,104,105,108,101,32,112,97,114,115,105,110,103,32,37,115,32,99,104,117,110,107,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,69,114,114,111,114,32,119,104,105,108,101,32,112,97,114,115,105,110,103,32,37,115,32,99,104,117,110,107,58,32,117,110,101,120,112,101,99,116,101,100,32,101,110,100,32,111,102,32,102,105,108,101,0,0,0,0,69,114,114,111,114,32,119,104,105,108,101,32,112,97,114,115,105,110,103,32,37,115,32,99,104,117,110,107,58,32,98,97,100,32,67,82,67,0,0,0,69,114,114,111,114,32,119,104,105,108,101,32,112,97,114,115,105,110,103,32,37,115,32,99,104,117,110,107,58,32,115,105,122,101,32,105,115,32,37,100,32,105,110,115,116,101,97,100,32,111,102,32,50,56,0,0,69,114,114,111,114,32,119,104,105,108,101,32,112,97,114,115,105,110,103,32,37,115,32,99,104,117,110,107,58,32,117,110,101,120,112,101,99,116,101,100,32,101,110,100,32,111,102,32,80,78,71,32,102,105,108,101,0,0,0,0,0,0,0,0,137,80,78,71,13,10,26,10,80,76,84,69,0,0,0,0,116,82,78,83,0,0,0,0,98,75,71,68,0,0,0,0,73,68,65,84,0,0,0,0,69,114,114,111,114,32,119,104,105,108,101,32,112,97,114,115,105,110,103,32,37,115,32,99,104,117,110,107,58,32,105,110,118,97,108,105,100,32,99,104,117,110,107,32,108,101,110,103,116,104,0,0,0,0,0,0,139,74,78,71,13,10,26,10,74,72,68,82,0,0,0,0,74,68,65,84,0,0,0,0,73,69,78,68,0,0,0,0,73,72,68,82,0,0,0,0,77,72,68,82,0,0,0,0,76,79,79,80,0,0,0,0,68,69,70,73,0,0,0,0,77,69,78,68,0,0,0,0,74,68,65,65,0,0,0,0,103,65,77,65,0,0,0,0,112,72,89,115,0,0,0,0,116,69,88,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,66,77,0,0,0,0,0,80,111,114,116,97,98,108,101,32,66,105,116,109,97,112,32,40,65,83,67,73,73,41,0,112,98,109,0,0,0,0,0,94,80,49,0,0,0,0,0,80,66,77,82,65,87,0,0,80,111,114,116,97,98,108,101,32,66,105,116,109,97,112,32,40,82,65,87,41,0,0,0,94,80,52,0,0,0,0,0,80,71,77,0,0,0,0,0,80,111,114,116,97,98,108,101,32,71,114,101,121,109,97,112,32,40,65,83,67,73,73,41,0,0,0,0,0,0,0,0,112,103,109,0,0,0,0,0,94,80,50,0,0,0,0,0,80,71,77,82,65,87,0,0,80,111,114,116,97,98,108,101,32,71,114,101,121,109,97,112,32,40,82,65,87,41,0,0,94,80,53,0,0,0,0,0,80,80,77,0,0,0,0,0,80,111,114,116,97,98,108,101,32,80,105,120,101,108,109,97,112,32,40,65,83,67,73,73,41,0,0,0,0,0,0,0,112,112,109,0,0,0,0,0,94,80,51,0,0,0,0,0,80,80,77,82,65,87,0,0,80,111,114,116,97,98,108,101,32,80,105,120,101,108,109,97,112,32,40,82,65,87,41,0,94,80,54,0,0,0,0,0,114,98,0,0,0,0,0,0,70,114,101,101,73,109,97,103,101,95,76,111,97,100,58,32,102,97,105,108,101,100,32,116,111,32,111,112,101,110,32,102,105,108,101,32,37,115,0,0,70,114,101,101,73,109,97,103,101,95,83,97,118,101,84,111,72,97,110,100,108,101,58,32,99,97,110,110,111,116,32,115,97,118,101,32,34,104,101,97,100,101,114,32,111,110,108,121,34,32,102,111,114,109,97,116,115,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,77,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,98,109,112,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,98,109,112,32,115,117,98,116,121,112,101,32,119,105,116,104,32,105,100,32,37,100,0,0,69,114,114,111,114,32,101,110,99,111,117,110,116,101,114,101,100,32,119,104,105,108,101,32,100,101,99,111,100,105,110,103,32,66,77,80,32,100,97,116,97,0,0,0,0,0,0,0,69,114,114,111,114,32,101,110,99,111,117,110,116,101,114,101,100,32,119,104,105,108,101,32,100,101,99,111,100,105,110,103,32,82,76,69,52,32,66,77,80,32,100,97,116,97,0,0,69,114,114,111,114,32,101,110,99,111,117,110,116,101,114,101,100,32,119,104,105,108,101,32,100,101,99,111,100,105,110,103,32,82,76,69,56,32,66,77,80,32,100,97,116,97,0,0,85,110,115,117,112,112,111,114,116,101,100,32,99,111,109,112,114,101,115,115,105,111,110,32,116,121,112,101,0,0,0,0,68,73,66,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,44,32,109,97,121,98,101,32,99,97,117,115,101,100,32,98,121,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,111,114,32,98,121,32,97,32,108,97,99,107,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,73,110,118,97,108,105,100,32,109,97,103,105,99,32,110,117,109,98,101,114,0,0,0,0,94,66,77,0,0,0,0,0,98,109,112,0,0,0,0,0,87,105,110,100,111,119,115,32,111,114,32,79,83,47,50,32,66,105,116,109,97,112,0,0,66,77,80,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,99,117,116,0,0,0,0,0,68,73,66,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,44,32,109,97,121,98,101,32,99,97,117,115,101,100,32,98,121,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,111,114,32,98,121,32,97,32,108,97,99,107,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,80,97,114,115,105,110,103,32,101,114,114,111,114,0,0,0,99,117,116,0,0,0,0,0,68,114,46,32,72,97,108,111,0,0,0,0,0,0,0,0,67,85,84,0,0,0,0,0,105,109,97,103,101,47,120,45,100,100,115,0,0,0,0,0,100,100,115,0,0,0,0,0,68,105,114,101,99,116,88,32,83,117,114,102,97,99,101,0,68,68,83,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,102,97,120,45,103,51,0,0,0,0,40,70,97,107,101,73,110,112,117,116,41,0,0,0,0,0,119,0,0,0,0,0,0,0,67,97,110,32,110,111,116,32,99,114,101,97,116,101,32,102,97,107,101,32,105,110,112,117,116,32,102,105,108,101,0,0,69,114,114,111,114,32,119,104,101,110,32,100,101,99,111,100,105,110,103,32,114,97,119,32,102,97,120,32,102,105,108,101,32,58,32,99,104,101,99,107,32,116,104,101,32,100,101,99,111,100,101,114,32,111,112,116,105,111,110,115,0,0,0,0,82,101,97,100,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,48,0,0,0,0,0,0,0,0,77,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,103,51,0,0,0,0,0,0,82,97,119,32,102,97,120,32,102,111,114,109,97,116,32,67,67,73,84,84,32,71,46,51,0,0,0,0,0,0,0,0,71,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,103,105,102,0,0,0,0,0,0,0,71,73,70,0,0,0,0,0,79,110,108,121,32,49,44,32,52,44,32,111,114,32,56,32,98,112,112,32,105,109,97,103,101,115,32,115,117,112,112,111,114,116,101,100,0,0,0,0,70,114,97,109,101,76,101,102,116,0,0,0,0,0,0,0,70,114,97,109,101,84,111,112,0,0,0,0,0,0,0,0,78,111,76,111,99,97,108,80,97,108,101,116,116,101,0,0,73,110,116,101,114,108,97,99,101,100,0,0,0,0,0,0,70,114,97,109,101,84,105,109,101,0,0,0,0,0,0,0,68,105,115,112,111,115,97,108,77,101,116,104,111,100,0,0,76,111,103,105,99,97,108,87,105,100,116,104,0,0,0,0,76,111,103,105,99,97,108,72,101,105,103,104,116,0,0,0,71,108,111,98,97,108,80,97,108,101,116,116,101,0,0,0,76,111,111,112,0,0,0,0,33,255,11,78,69,84,83,67,65,80,69,50,46,48,3,1,0,0,0,0,0,0,0,0,33,254,0,0,0,0,0,0,33,249,4,0,0,0,0,0,8,0,0,0,8,0,0,0,4,0,0,0,2,0,0,0,0,0,0,0,4,0,0,0,2,0,0,0,1,0,0,0,78,69,84,83,67,65,80,69,50,46,48,0,0,0,0,0,65,78,73,77,69,88,84,83,49,46,48,0,0,0,0,0,67,111,109,109,101,110,116,37,100,0,0,0,0,0,0,0,68,73,66,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,44,32,109,97,121,98,101,32,99,97,117,115,101,100,32,98,121,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,111,114,32,98,121,32,97,32,108,97,99,107,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,69,79,70,32,114,101,97,100,105,110,103,32,76,111,103,105,99,97,108,32,83,99,114,101,101,110,32,68,101,115,99,114,105,112,116,111,114,0,0,0,69,79,70,32,114,101,97,100,105,110,103,32,98,108,111,99,107,115,0,0,0,0,0,0,69,79,70,32,114,101,97,100,105,110,103,32,73,109,97,103,101,32,68,101,115,99,114,105,112,116,111,114,0,0,0,0,69,79,70,32,114,101,97,100,105,110,103,32,101,120,116,101,110,115,105,111,110,0,0,0,73,110,118,97,108,105,100,32,71,73,70,32,98,108,111,99,107,32,102,111,117,110,100,0,69,79,70,32,114,101,97,100,105,110,103,32,115,117,98,45,98,108,111,99,107,0,0,0,71,73,70,56,57,97,0,0,73,110,118,97,108,105,100,32,109,97,103,105,99,32,110,117,109,98,101,114,0,0,0,0,94,71,73,70,0,0,0,0,103,105,102,0,0,0,0,0,71,114,97,112,104,105,99,115,32,73,110,116,101,114,99,104,97,110,103,101,32,70,111,114,109,97,116,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,118,110,100,46,114,97,100,105,97,110,99,101,0,0,0,0,0,0,70,82,69,69,95,73,77,65,71,69,95,84,89,80,69,58,32,85,110,97,98,108,101,32,116,111,32,99,111,110,118,101,114,116,32,102,114,111,109,32,116,121,112,101,32,37,100,32,116,111,32,116,121,112,101,32,37,100,46,10,32,78,111,32,115,117,99,104,32,99,111,110,118,101,114,115,105,111,110,32,101,120,105,115,116,115,46,0,35,32,77,97,100,101,32,119,105,116,104,32,70,114,101,101,73,109,97,103,101,32,37,115,0,0,0,0,0,0,0,0,82,71,66,69,32,114,101,97,100,32,101,114,114,111,114,0,82,71,66,69,32,119,114,105,116,101,32,101,114,114,111,114,0,0,0,0,0,0,0,0,82,71,66,69,32,98,97,100,32,102,105,108,101,32,102,111,114,109,97,116,58,32,37,115,10,0,0,0,0,0,0,0,82,71,66,69,32,101,114,114,111,114,58,32,37,115,10,0,82,65,68,73,65,78,67,69,0,0,0,0,0,0,0,0,35,63,37,115,10,0,0,0,37,115,10,0,0,0,0,0,70,79,82,77,65,84,61,51,50,45,98,105,116,95,114,108,101,95,114,103,98,101,10,0,71,65,77,77,65,61,37,103,10,0,0,0,0,0,0,0,69,88,80,79,83,85,82,69,61,37,103,10,0,0,0,0,10,45,89,32,37,100,32,43,88,32,37,100,10,0,0,0,119,114,111,110,103,32,115,99,97,110,108,105,110,101,32,119,105,100,116,104,0,0,0,0,117,110,97,98,108,101,32,116,111,32,97,108,108,111,99,97,116,101,32,98,117,102,102,101,114,32,115,112,97,99,101,0,98,97,100,32,115,99,97,110,108,105,110,101,32,100,97,116,97,0,0,0,0,0,0,0,77,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,98,97,100,32,105,110,105,116,105,97,108,32,116,111,107,101,110,0,0,0,0,0,0,0,71,65,77,77,65,61,37,103,0,0,0,0,0,0,0,0,69,88,80,79,83,85,82,69,61,37,103,0,0,0,0,0,105,110,118,97,108,105,100,32,104,101,97,100,101,114,0,0,45,89,32,37,100,32,43,88,32,37,100,0,0,0,0,0,43,88,32,37,100,32,43,89,32,37,100,0,0,0,0,0,109,105,115,115,105,110,103,32,105,109,97,103,101,32,115,105,122,101,32,115,112,101,99,105,102,105,101,114,0,0,0,0,104,100,114,0,0,0,0,0,72,105,103,104,32,68,121,110,97,109,105,99,32,82,97,110,103,101,32,73,109,97,103,101,0,0,0,0,0,0,0,0,72,68,82,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,118,110,100,46,109,105,99,114,111,115,111,102,116,46,105,99,111,110,0,0,0,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,105,99,111,110,32,115,105,122,101,58,32,119,105,100,116,104,32,120,32,104,101,105,103,104,116,32,61,32,37,100,32,120,32,37,100,0,77,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,68,73,66,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,44,32,109,97,121,98,101,32,99,97,117,115,101,100,32,98,121,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,111,114,32,98,121,32,97,32,108,97,99,107,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,80,97,103,101,32,100,111,101,115,110,39,116,32,101,120,105,115,116,0,0,0,0,0,0,70,105,108,101,32,105,115,32,110,111,116,32,97,110,32,73,67,79,32,102,105,108,101,0,105,99,111,0,0,0,0,0,87,105,110,100,111,119,115,32,73,99,111,110,0,0,0,0,73,67,79,0,0,0,0,0,105,109,97,103,101,47,120,45,105,102,102,0,0,0,0,0,105,102,102,44,108,98,109,0,73,70,70,32,73,110,116,101,114,108,101,97,118,101,100,32,66,105,116,109,97,112,0,0,73,70,70,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,106,50,107,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,101,110,99,111,100,101,32,105,109,97,103,101,0,0,69,114,114,111,114,58,32,37,115,0,0,0,0,0,0,0,87,97,114,110,105,110,103,58,32,37,115,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,115,101,116,117,112,32,116,104,101,32,100,101,99,111,100,101,114,10,0,0,0,0,70,97,105,108,101,100,32,116,111,32,114,101,97,100,32,116,104,101,32,104,101,97,100,101,114,10,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,105,109,112,111,114,116,32,74,80,69,71,50,48,48,48,32,105,109,97,103,101,0,70,97,105,108,101,100,32,116,111,32,100,101,99,111,100,101,32,105,109,97,103,101,33,10,0,0,0,0,0,0,0,0,106,50,107,44,106,50,99,0,74,80,69,71,45,50,48,48,48,32,99,111,100,101,115,116,114,101,97,109,0,0,0,0,74,50,75,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,109,110,103,0,0,0,0,0,106,110,103,0,0,0,0,0,74,80,69,71,32,78,101,116,119,111,114,107,32,71,114,97,112,104,105,99,115,0,0,0,74,78,71,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,106,112,50,0,0,0,0,0,0,0,0,0,0,12,106,80,32,32,13,10,135,10,0,0,0,0,70,97,105,108,101,100,32,116,111,32,101,110,99,111,100,101,32,105,109,97,103,101,0,0,69,114,114,111,114,58,32,37,115,0,0,0,0,0,0,0,87,97,114,110,105,110,103,58,32,37,115,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,115,101,116,117,112,32,116,104,101,32,100,101,99,111,100,101,114,10,0,0,0,0,70,97,105,108,101,100,32,116,111,32,114,101,97,100,32,116,104,101,32,104,101,97,100,101,114,10,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,105,109,112,111,114,116,32,74,80,69,71,50,48,48,48,32,105,109,97,103,101,0,70,97,105,108,101,100,32,116,111,32,100,101,99,111,100,101,32,105,109,97,103,101,33,10,0,0,0,0,0,0,0,0,106,112,50,0,0,0,0,0,74,80,69,71,45,50,48,48,48,32,70,105,108,101,32,70,111,114,109,97,116,0,0,0,74,80,50,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,106,112,101,103,0,0,0,0,0,0,111,110,108,121,32,50,52,45,98,105,116,32,104,105,103,104,99,111,108,111,114,32,111,114,32,56,45,98,105,116,32,103,114,101,121,115,99,97,108,101,47,112,97,108,101,116,116,101,32,98,105,116,109,97,112,115,32,99,97,110,32,98,101,32,115,97,118,101,100,32,97,115,32,74,80,69,71,0,0,0,77,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,69,120,105,102,0,0,0,0,69,120,105,102,82,97,119,0,104,116,116,112,58,47,47,110,115,46,97,100,111,98,101,46,99,111,109,47,120,97,112,47,49,46,48,47,0,0,0,0,88,77,76,80,97,99,107,101,116,0,0,0,0,0,0,0,80,104,111,116,111,115,104,111,112,32,51,46,48,0,0,0,56,66,73,77,4,4,0,0,0,0,0,0,0,0,0,0,73,67,67,95,80,82,79,70,73,76,69,0,0,0,0,0,67,111,109,109,101,110,116,0,87,97,114,110,105,110,103,58,32,97,116,116,97,99,104,101,100,32,116,104,117,109,98,110,97,105,108,32,105,115,32,37,100,32,98,121,116,101,115,32,108,97,114,103,101,114,32,116,104,97,110,32,109,97,120,105,109,117,109,32,115,117,112,112,111,114,116,101,100,32,115,105,122,101,32,45,32,84,104,117,109,98,110,97,105,108,32,115,97,118,105,110,103,32,97,98,111,114,116,101,100,0,0,0,87,97,114,110,105,110,103,58,32,97,116,116,97,99,104,101,100,32,116,104,117,109,98,110,97,105,108,32,99,97,110,110,111,116,32,98,101,32,119,114,105,116,116,101,110,32,116,111,32,111,117,116,112,117,116,32,102,105,108,101,32,40,105,110,118,97,108,105,100,32,102,111,114,109,97,116,41,32,45,32,84,104,117,109,98,110,97,105,108,32,115,97,118,105,110,103,32,97,98,111,114,116,101,100,0,0,0,0,0,0,0,0,74,70,73,70,0,0,0,0,74,70,88,88,0,0,0,0,87,97,114,110,105,110,103,58,32,110,111,110,45,115,116,97,110,100,97,114,100,32,74,70,88,88,32,115,101,103,109,101,110,116,0,0,0,0,0,0,37,100,0,0,0,0,0,0,79,114,105,103,105,110,97,108,74,80,69,71,87,105,100,116,104,0,0,0,0,0,0,0,79,114,105,103,105,110,97,108,74,80,69,71,72,101,105,103,104,116,0,0,0,0,0,0,68,73,66,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,44,32,109,97,121,98,101,32,99,97,117,115,101,100,32,98,121,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,111,114,32,98,121,32,97,32,108,97,99,107,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,94,255,216,255,0,0,0,0,106,112,103,44,106,105,102,44,106,112,101,103,44,106,112,101,0,0,0,0,0,0,0,0,74,80,69,71,32,45,32,74,70,73,70,32,67,111,109,112,108,105,97,110,116,0,0,0,74,80,69,71,0,0,0,0,0,0,0,0,0,0,0,0,118,105,100,101,111,47,120,45,109,110,103,0,0,0,0,0,109,110,103,0,0,0,0,0,77,117,108,116,105,112,108,101,45,105,109,97,103,101,32,78,101,116,119,111,114,107,32,71,114,97,112,104,105,99,115,0,77,78,71,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,112,104,111,116,111,45,99,100,0,0,0,0,0,0,0,0,77,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,68,73,66,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,44,32,109,97,121,98,101,32,99,97,117,115,101,100,32,98,121,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,111,114,32,98,121,32,97,32,108,97,99,107,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,112,99,100,0,0,0,0,0,75,111,100,97,107,32,80,104,111,116,111,67,68,0,0,0,80,67,68,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,112,99,120,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,102,111,114,109,97,116,0,0,0,0,0,0,77,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,68,73,66,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,44,32,109,97,121,98,101,32,99,97,117,115,101,100,32,98,121,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,111,114,32,98,121,32,97,32,108,97,99,107,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,80,97,114,115,105,110,103,32,101,114,114,111,114,0,0,0,73,110,118,97,108,105,100,32,109,97,103,105,99,32,110,117,109,98,101,114,0,0,0,0,112,99,120,0,0,0,0,0,90,115,111,102,116,32,80,97,105,110,116,98,114,117,115,104,0,0,0,0,0,0,0,0,80,67,88,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,112,111,114,116,97,98,108,101,45,102,108,111,97,116,109,97,112,0,0,0,0,0,0,0,80,37,99,10,37,100,32,37,100,10,37,102,10,0,0,0,37,102,0,0,0,0,0,0,82,101,97,100,32,101,114,114,111,114,58,32,105,110,118,97,108,105,100,32,80,70,77,32,104,101,97,100,101,114,0,0,82,101,97,100,32,101,114,114,111,114,0,0,0,0,0,0,77,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,68,73,66,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,44,32,109,97,121,98,101,32,99,97,117,115,101,100,32,98,121,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,111,114,32,98,121,32,97,32,108,97,99,107,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,80,97,114,115,105,110,103,32,101,114,114,111,114,0,0,0,73,110,118,97,108,105,100,32,109,97,103,105,99,32,110,117,109,98,101,114,0,0,0,0,112,102,109,0,0,0,0,0,80,111,114,116,97,98,108,101,32,102,108,111,97,116,109,97,112,0,0,0,0,0,0,0,80,70,77,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,112,105,99,116,0,0,0,0,0,17,2,255,12,0,0,0,105,110,118,97,108,105,100,32,104,101,97,100,101,114,58,32,118,101,114,115,105,111,110,32,110,117,109,98,101,114,32,109,105,115,115,105,110,103,46,0,105,110,118,97,108,105,100,32,104,101,97,100,101,114,58,32,105,108,108,101,103,97,108,32,118,101,114,115,105,111,110,32,110,117,109,98,101,114,46,0,80,73,67,84,32,99,111,110,116,97,105,110,101,100,32,111,110,108,121,32,118,101,99,116,111,114,32,100,97,116,97,33,0,0,0,0,0,0,0,0,85,110,107,110,111,119,110,32,112,97,116,116,101,114,110,32,116,121,112,101,46,0,0,0,40,222,4,0,0,0,0,0,48,222,4,0,56,222,4,0,0,0,0,0,64,222,4,0,72,222,4,0,8,0,0,0,80,222,4,0,104,222,4,0,2,0,0,0,112,222,4,0,136,222,4,0,1,0,0,0,144,222,4,0,168,222,4,0,2,0,0,0,176,222,4,0,200,222,4,0,4,0,0,0,208,222,4,0,240,222,4,0,4,0,0,0,248,222,4,0,16,223,4,0,2,0,0,0,24,223,4,0,40,223,4,0,8,0,0,0,48,223,4,0,64,223,4,0,8,0,0,0,72,223,4,0,88,223,4,0,4,0,0,0,96,223,4,0,120,223,4,0,4,0,0,0,128,223,4,0,144,223,4,0,2,0,0,0,152,223,4,0,176,223,4,0,4,0,0,0,184,223,4,0,216,223,4,0,4,0,0,0,224,223,4,0,0,224,4,0,8,0,0,0,8,224,4,0,48,224,4,0,1,0,0,0,56,224,4,0,72,224,4,0,0,0,0,0,88,224,4,0,120,224,4,0,0,0,0,0,136,224,4,0,160,224,4,0,0,0,0,0,176,224,4,0,200,224,4,0,2,0,0,0,216,224,4,0,240,224,4,0,2,0,0,0,248,224,4,0,24,225,4,0,0,0,0,0,40,225,4,0,24,225,4,0,0,0,0,0,40,225,4,0,24,225,4,0,0,0,0,0,40,225,4,0,64,225,4,0,6,0,0,0,80,225,4,0,96,225,4,0,6,0,0,0,112,225,4,0,128,225,4,0,0,0,0,0,144,225,4,0,168,225,4,0,6,0,0,0,184,225,4,0,208,225,4,0,0,0,0,0,224,225,4,0,0,226,4,0,6,0,0,0,8,226,4,0,48,226,4,0,8,0,0,0,56,226,4,0,88,226,4,0,4,0,0,0,104,226,4,0,120,226,4,0,6,0,0,0,136,226,4,0,176,226,4,0,2,0,0,0,192,226,4,0,24,225,4,0,255,255,255,255,40,225,4,0,24,225,4,0,255,255,255,255,40,225,4,0,24,225,4,0,255,255,255,255,40,225,4,0,24,225,4,0,255,255,255,255,40,225,4,0,216,226,4,0,0,0,0,0,232,226,4,0,16,227,4,0,0,0,0,0,24,227,4,0,64,227,4,0,0,0,0,0,72,227,4,0,112,227,4,0,0,0,0,0,128,227,4,0,24,225,4,0,255,255,255,255,40,225,4,0,24,225,4,0,255,255,255,255,40,225,4,0,24,225,4,0,255,255,255,255,40,225,4,0,24,225,4,0,255,255,255,255,40,225,4,0,168,227,4,0,8,0,0,0,184,227,4,0,192,227,4,0,8,0,0,0,184,227,4,0,208,227,4,0,8,0,0,0,184],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+307201);allocate([227,4,0,224,227,4,0,8,0,0,0,184,227,4,0,240,227,4,0,8,0,0,0,184,227,4,0,24,225,4,0,8,0,0,0,40,225,4,0,24,225,4,0,8,0,0,0,40,225,4,0,24,225,4,0,8,0,0,0,40,225,4,0,0,228,4,0,0,0,0,0,184,227,4,0,16,228,4,0,0,0,0,0,184,227,4,0,32,228,4,0,0,0,0,0,184,227,4,0,48,228,4,0,0,0,0,0,184,227,4,0,64,228,4,0,0,0,0,0,184,227,4,0,24,225,4,0,0,0,0,0,40,225,4,0,24,225,4,0,0,0,0,0,40,225,4,0,24,225,4,0,0,0,0,0,40,225,4,0,80,228,4,0,8,0,0,0,184,227,4,0,96,228,4,0,8,0,0,0,184,227,4,0,112,228,4,0,8,0,0,0,184,227,4,0,128,228,4,0,8,0,0,0,184,227,4,0,144,228,4,0,8,0,0,0,184,227,4,0,24,225,4,0,8,0,0,0,40,225,4,0,24,225,4,0,8,0,0,0,40,225,4,0,24,225,4,0,8,0,0,0,40,225,4,0,160,228,4,0,0,0,0,0,184,227,4,0,176,228,4,0,0,0,0,0,184,227,4,0,192,228,4,0,0,0,0,0,184,227,4,0,208,228,4,0,0,0,0,0,184,227,4,0,224,228,4,0,0,0,0,0,184,227,4,0,24,225,4,0,0,0,0,0,40,225,4,0,24,225,4,0,0,0,0,0,40,225,4,0,24,225,4,0,0,0,0,0,40,225,4,0,240,228,4,0,8,0,0,0,184,227,4,0,0,229,4,0,8,0,0,0,184,227,4,0,16,229,4,0,8,0,0,0,184,227,4,0,32,229,4,0,8,0,0,0,184,227,4,0,48,229,4,0,8,0,0,0,184,227,4,0,24,225,4,0,8,0,0,0,40,225,4,0,24,225,4,0,8,0,0,0,40,225,4,0,24,225,4,0,8,0,0,0,40,225,4,0,64,229,4,0,0,0,0,0,184,227,4,0,80,229,4,0,0,0,0,0,184,227,4,0,96,229,4,0,0,0,0,0,184,227,4,0,112,229,4,0,0,0,0,0,184,227,4,0,128,229,4,0,0,0,0,0,184,227,4,0,24,225,4,0,0,0,0,0,40,225,4,0,24,225,4,0,0,0,0,0,40,225,4,0,24,225,4,0,0,0,0,0,40,225,4,0,144,229,4,0,12,0,0,0,160,229,4,0,192,229,4,0,12,0,0,0,160,229,4,0,208,229,4,0,12,0,0,0,160,229,4,0,224,229,4,0,12,0,0,0,160,229,4,0,240,229,4,0,12,0,0,0,160,229,4,0,24,225,4,0,12,0,0,0,40,225,4,0,24,225,4,0,12,0,0,0,40,225,4,0,24,225,4,0,12,0,0,0,40,225,4,0,248,229,4,0,4,0,0,0,160,229,4,0,8,230,4,0,4,0,0,0,160,229,4,0,24,230,4,0,4,0,0,0,160,229,4,0,40,230,4,0,4,0,0,0,160,229,4,0,56,230,4,0,4,0,0,0,160,229,4,0,24,225,4,0,4,0,0,0,40,225,4,0,24,225,4,0,4,0,0,0,40,225,4,0,24,225,4,0,4,0,0,0,40,225,4,0,72,230,4,0,0,0,0,0,88,230,4,0,96,230,4,0,0,0,0,0,88,230,4,0,112,230,4,0,0,0,0,0,88,230,4,0,128,230,4,0,0,0,0,0,88,230,4,0,144,230,4,0,0,0,0,0,88,230,4,0,24,225,4,0,0,0,0,0,40,225,4,0,24,225,4,0,0,0,0,0,40,225,4,0,24,225,4,0,0,0,0,0,40,225,4,0,160,230,4,0,0,0,0,0,176,230,4,0,192,230,4,0,0,0,0,0,176,230,4,0,208,230,4,0,0,0,0,0,176,230,4,0,224,230,4,0,0,0,0,0,176,230,4,0,240,230,4,0,0,0,0,0,176,230,4,0,24,225,4,0,0,0,0,0,40,225,4,0,24,225,4,0,0,0,0,0,40,225,4,0,24,225,4,0,0,0,0,0,40,225,4,0,0,231,4,0,0,0,0,0,16,231,4,0,24,231,4,0,0,0,0,0,16,231,4,0,40,231,4,0,0,0,0,0,16,231,4,0,56,231,4,0,0,0,0,0,16,231,4,0,72,231,4,0,0,0,0,0,16,231,4,0,24,225,4,0,0,0,0,0,40,225,4,0,24,225,4,0,0,0,0,0,40,225,4,0,24,225,4,0,0,0,0,0,40,225,4,0,80,231,4,0,0,0,0,0,96,231,4,0,112,231,4,0,0,0,0,0,96,231,4,0,128,231,4,0,0,0,0,0,96,231,4,0,144,231,4,0,0,0,0,0,96,231,4,0,160,231,4,0,0,0,0,0,96,231,4,0,24,225,4,0,0,0,0,0,40,225,4,0,24,225,4,0,0,0,0,0,40,225,4,0,24,225,4,0,0,0,0,0,40,225,4,0,176,231,4,0,0,0,0,0,192,231,4,0,216,231,4,0,0,0,0,0,224,231,4,0,24,225,4,0,255,255,255,255,40,225,4,0,24,225,4,0,255,255,255,255,40,225,4,0,24,225,4,0,255,255,255,255,40,225,4,0,24,225,4,0,255,255,255,255,40,225,4,0,24,225,4,0,255,255,255,255,40,225,4,0,24,225,4,0,255,255,255,255,40,225,4,0,248,231,4,0,0,0,0,0,8,232,4,0,40,232,4,0,0,0,0,0,56,232,4,0,88,232,4,0,0,0,0,0,104,232,4,0,24,225,4,0,255,255,255,255,40,225,4,0,24,225,4,0,255,255,255,255,40,225,4,0,24,225,4,0,255,255,255,255,40,225,4,0,24,225,4,0,255,255,255,255,40,225,4,0,24,225,4,0,255,255,255,255,40,225,4,0,136,232,4,0,2,0,0,0,152,232,4,0,168,232,4,0,0,0,0,0,184,232,4,0,80,73,67,84,32,102,105,108,101,32,99,111,110,116,97,105,110,115,32,117,110,114,101,99,111,103,110,105,122,101,100,32,113,117,105,99,107,116,105,109,101,32,100,97,116,97,46,0,67,97,110,39,116,32,104,97,110,100,108,101,32,111,112,99,111,100,101,32,37,120,46,10,0,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,80,73,67,84,32,102,105,108,101,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,112,105,99,116,32,116,121,112,101,0,0,0,0,0,0,0,78,111,32,112,97,108,101,116,116,101,32,102,111,114,32,98,105,116,109,97,112,33,0,0,73,108,108,101,103,97,108,32,98,112,112,32,118,97,108,117,101,32,105,110,32,117,110,112,97,99,107,98,105,116,115,58,32,37,100,10,0,0,0,0,66,97,100,32,98,105,116,115,32,112,101,114,32,112,105,120,101,108,32,105,110,32,101,120,112,97,110,100,66,117,102,56,46,0,0,0,0,0,0,0,78,79,80,0,0,0,0,0,110,111,112,0,0,0,0,0,67,108,105,112,0,0,0,0,99,108,105,112,0,0,0,0,66,107,80,97,116,0,0,0,98,97,99,107,103,114,111,117,110,100,32,112,97,116,116,101,114,110,0,0,0,0,0,0,84,120,70,111,110,116,0,0,116,101,120,116,32,102,111,110,116,32,40,119,111,114,100,41,0,0,0,0,0,0,0,0,84,120,70,97,99,101,0,0,116,101,120,116,32,102,97,99,101,32,40,98,121,116,101,41,0,0,0,0,0,0,0,0,84,120,77,111,100,101,0,0,116,101,120,116,32,109,111,100,101,32,40,119,111,114,100,41,0,0,0,0,0,0,0,0,83,112,69,120,116,114,97,0,115,112,97,99,101,32,101,120,116,114,97,32,40,102,105,120,101,100,32,112,111,105,110,116,41,0,0,0,0,0,0,0,80,110,83,105,122,101,0,0,112,101,110,32,115,105,122,101,32,40,112,111,105,110,116,41,0,0,0,0,0,0,0,0,80,110,77,111,100,101,0,0,112,101,110,32,109,111,100,101,32,40,119,111,114,100,41,0,80,110,80,97,116,0,0,0,112,101,110,32,112,97,116,116,101,114,110,0,0,0,0,0,70,105,108,108,80,97,116,0,102,105,108,108,32,112,97,116,116,101,114,110,0,0,0,0,79,118,83,105,122,101,0,0,111,118,97,108,32,115,105,122,101,32,40,112,111,105,110,116,41,0,0,0,0,0,0,0,79,114,105,103,105,110,0,0,100,104,44,32,100,118,32,40,119,111,114,100,41,0,0,0,84,120,83,105,122,101,0,0,116,101,120,116,32,115,105,122,101,32,40,119,111,114,100,41,0,0,0,0,0,0,0,0,70,103,67,111,108,111,114,0,102,111,114,101,103,114,111,117,110,100,32,99,111,108,111,114,32,40,108,111,110,103,119,111,114,100,41,0,0,0,0,0,66,107,67,111,108,111,114,0,98,97,99,107,103,114,111,117,110,100,32,99,111,108,111,114,32,40,108,111,110,103,119,111,114,100,41,0,0,0,0,0,84,120,82,97,116,105,111,0,110,117,109,101,114,97,116,111,114,32,40,112,111,105,110,116,41,44,32,100,101,110,111,109,105,110,97,116,111,114,32,40,112,111,105,110,116,41,0,0,86,101,114,115,105,111,110,0,118,101,114,115,105,111,110,32,40,98,121,116,101,41,0,0,66,107,80,105,120,80,97,116,0,0,0,0,0,0,0,0,99,111,108,111,114,32,98,97,99,107,103,114,111,117,110,100,32,112,97,116,116,101,114,110,0,0,0,0,0,0,0,0,80,110,80,105,120,80,97,116,0,0,0,0,0,0,0,0,99,111,108,111,114,32,112,101,110,32,112,97,116,116,101,114,110,0,0,0,0,0,0,0,70,105,108,108,80,105,120,80,97,116,0,0,0,0,0,0,99,111,108,111,114,32,102,105,108,108,32,112,97,116,116,101,114,110,0,0,0,0,0,0,80,110,76,111,99,72,70,114,97,99,0,0,0,0,0,0,102,114,97,99,116,105,111,110,97,108,32,112,101,110,32,112,111,115,105,116,105,111,110,0,67,104,69,120,116,114,97,0,101,120,116,114,97,32,102,111,114,32,101,97,99,104,32,99,104,97,114,97,99,116,101,114,0,0,0,0,0,0,0,0,114,101,115,101,114,118,101,100,0,0,0,0,0,0,0,0,114,101,115,101,114,118,101,100,32,102,111,114,32,65,112,112,108,101,32,117,115,101,0,0,82,71,66,70,103,67,111,108,0,0,0,0,0,0,0,0,82,71,66,32,102,111,114,101,67,111,108,111,114,0,0,0,82,71,66,66,107,67,111,108,0,0,0,0,0,0,0,0,82,71,66,32,98,97,99,107,67,111,108,111,114,0,0,0,72,105,108,105,116,101,77,111,100,101,0,0,0,0,0,0,104,105,108,105,116,101,32,109,111,100,101,32,102,108,97,103,0,0,0,0,0,0,0,0,72,105,108,105,116,101,67,111,108,111,114,0,0,0,0,0,82,71,66,32,104,105,108,105,116,101,32,99,111,108,111,114,0,0,0,0,0,0,0,0,68,101,102,72,105,108,105,116,101,0,0,0,0,0,0,0,85,115,101,32,100,101,102,97,117,108,116,32,104,105,108,105,116,101,32,99,111,108,111,114,0,0,0,0,0,0,0,0,79,112,67,111,108,111,114,0,82,71,66,32,79,112,67,111,108,111,114,32,102,111,114,32,97,114,105,116,104,109,101,116,105,99,32,109,111,100,101,115,0,0,0,0,0,0,0,0,76,105,110,101,0,0,0,0,112,110,76,111,99,32,40,112,111,105,110,116,41,44,32,110,101,119,80,116,32,40,112,111,105,110,116,41,0,0,0,0,76,105,110,101,70,114,111,109,0,0,0,0,0,0,0,0,110,101,119,80,116,32,40,112,111,105,110,116,41,0,0,0,83,104,111,114,116,76,105,110,101,0,0,0,0,0,0,0,112,110,76,111,99,32,40,112,111,105,110,116,44,32,100,104,44,32,100,118,32,40,45,49,50,56,32,46,46,32,49,50,55,41,41,0,0,0,0,0,83,104,111,114,116,76,105,110,101,70,114,111,109,0,0,0,100,104,44,32,100,118,32,40,45,49,50,56,32,46,46,32,49,50,55,41,0,0,0,0,76,111,110,103,84,101,120,116,0,0,0,0,0,0,0,0,116,120,76,111,99,32,40,112,111,105,110,116,41,44,32,99,111,117,110,116,32,40,48,46,46,50,53,53,41,44,32,116,101,120,116,0,0,0,0,0,68,72,84,101,120,116,0,0,100,104,32,40,48,46,46,50,53,53,41,44,32,99,111,117,110,116,32,40,48,46,46,50,53,53,41,44,32,116,101,120,116,0,0,0,0,0,0,0,68,86,84,101,120,116,0,0,100,118,32,40,48,46,46,50,53,53,41,44,32,99,111,117,110,116,32,40,48,46,46,50,53,53,41,44,32,116,101,120,116,0,0,0,0,0,0,0,68,72,68,86,84,101,120,116,0,0,0,0,0,0,0,0,100,104,44,32,100,118,32,40,48,46,46,50,53,53,41,44,32,99,111,117,110,116,32,40,48,46,46,50,53,53,41,44,32,116,101,120,116,0,0,0,102,114,97,109,101,82,101,99,116,0,0,0,0,0,0,0,114,101,99,116,0,0,0,0,112,97,105,110,116,82,101,99,116,0,0,0,0,0,0,0,101,114,97,115,101,82,101,99,116,0,0,0,0,0,0,0,105,110,118,101,114,116,82,101,99,116,0,0,0,0,0,0,102,105,108,108,82,101,99,116,0,0,0,0,0,0,0,0,102,114,97,109,101,83,97,109,101,82,101,99,116,0,0,0,112,97,105,110,116,83,97,109,101,82,101,99,116,0,0,0,101,114,97,115,101,83,97,109,101,82,101,99,116,0,0,0,105,110,118,101,114,116,83,97,109,101,82,101,99,116,0,0,102,105,108,108,83,97,109,101,82,101,99,116,0,0,0,0,102,114,97,109,101,82,82,101,99,116,0,0,0,0,0,0,112,97,105,110,116,82,82,101,99,116,0,0,0,0,0,0,101,114,97,115,101,82,82,101,99,116,0,0,0,0,0,0,105,110,118,101,114,116,82,82,101,99,116,0,0,0,0,0,102,105,108,108,82,82,114,101,99,116,0,0,0,0,0,0,102,114,97,109,101,83,97,109,101,82,82,101,99,116,0,0,112,97,105,110,116,83,97,109,101,82,82,101,99,116,0,0,101,114,97,115,101,83,97,109,101,82,82,101,99,116,0,0,105,110,118,101,114,116,83,97,109,101,82,82,101,99,116,0,102,105,108,108,83,97,109,101,82,82,101,99,116,0,0,0,102,114,97,109,101,79,118,97,108,0,0,0,0,0,0,0,112,97,105,110,116,79,118,97,108,0,0,0,0,0,0,0,101,114,97,115,101,79,118,97,108,0,0,0,0,0,0,0,105,110,118,101,114,116,79,118,97,108,0,0,0,0,0,0,102,105,108,108,79,118,97,108,0,0,0,0,0,0,0,0,102,114,97,109,101,83,97,109,101,79,118,97,108,0,0,0,112,97,105,110,116,83,97,109,101,79,118,97,108,0,0,0,101,114,97,115,101,83,97,109,101,79,118,97,108,0,0,0,105,110,118,101,114,116,83,97,109,101,79,118,97,108,0,0,102,105,108,108,83,97,109,101,79,118,97,108,0,0,0,0,102,114,97,109,101,65,114,99,0,0,0,0,0,0,0,0,114,101,99,116,44,32,115,116,97,114,116,65,110,103,108,101,44,32,97,114,99,65,110,103,108,101,0,0,0,0,0,0,112,97,105,110,116,65,114,99,0,0,0,0,0,0,0,0,101,114,97,115,101,65,114,99,0,0,0,0,0,0,0,0,105,110,118,101,114,116,65,114,99,0,0,0,0,0,0,0,102,105,108,108,65,114,99,0,102,114,97,109,101,83,97,109,101,65,114,99,0,0,0,0,112,97,105,110,116,83,97,109,101,65,114,99,0,0,0,0,101,114,97,115,101,83,97,109,101,65,114,99,0,0,0,0,105,110,118,101,114,116,83,97,109,101,65,114,99,0,0,0,102,105,108,108,83,97,109,101,65,114,99,0,0,0,0,0,102,114,97,109,101,80,111,108,121,0,0,0,0,0,0,0,112,111,108,121,0,0,0,0,112,97,105,110,116,80,111,108,121,0,0,0,0,0,0,0,101,114,97,115,101,80,111,108,121,0,0,0,0,0,0,0,105,110,118,101,114,116,80,111,108,121,0,0,0,0,0,0,102,105,108,108,80,111,108,121,0,0,0,0,0,0,0,0,102,114,97,109,101,83,97,109,101,80,111,108,121,0,0,0,112,111,108,121,32,40,78,89,73,41,0,0,0,0,0,0,112,97,105,110,116,83,97,109,101,80,111,108,121,0,0,0,101,114,97,115,101,83,97,109,101,80,111,108,121,0,0,0,105,110,118,101,114,116,83,97,109,101,80,111,108,121,0,0,102,105,108,108,83,97,109,101,80,111,108,121,0,0,0,0,102,114,97,109,101,82,103,110,0,0,0,0,0,0,0,0,114,101,103,105,111,110,0,0,112,97,105,110,116,82,103,110,0,0,0,0,0,0,0,0,101,114,97,115,101,82,103,110,0,0,0,0,0,0,0,0,105,110,118,101,114,116,82,103,110,0,0,0,0,0,0,0,102,105,108,108,82,103,110,0,102,114,97,109,101,83,97,109,101,82,103,110,0,0,0,0,114,101,103,105,111,110,32,40,78,89,73,41,0,0,0,0,112,97,105,110,116,83,97,109,101,82,103,110,0,0,0,0,101,114,97,115,101,83,97,109,101,82,103,110,0,0,0,0,105,110,118,101,114,116,83,97,109,101,82,103,110,0,0,0,102,105,108,108,83,97,109,101,82,103,110,0,0,0,0,0,66,105,116,115,82,101,99,116,0,0,0,0,0,0,0,0,99,111,112,121,98,105,116,115,44,32,114,101,99,116,32,99,108,105,112,112,101,100,0,0,66,105,116,115,82,103,110,0,99,111,112,121,98,105,116,115,44,32,114,103,110,32,99,108,105,112,112,101,100,0,0,0,80,97,99,107,66,105,116,115,82,101,99,116,0,0,0,0,112,97,99,107,101,100,32,99,111,112,121,98,105,116,115,44,32,114,101,99,116,32,99,108,105,112,112,101,100,0,0,0,80,97,99,107,66,105,116,115,82,103,110,0,0,0,0,0,112,97,99,107,101,100,32,99,111,112,121,98,105,116,115,44,32,114,103,110,32,99,108,105,112,112,101,100,0,0,0,0,79,112,99,111,100,101,95,57,65,0,0,0,0,0,0,0,116,104,101,32,109,121,115,116,101,114,105,111,117,115,32,111,112,99,111,100,101,32,57,65,0,0,0,0,0,0,0,0,83,104,111,114,116,67,111,109,109,101,110,116,0,0,0,0,107,105,110,100,32,40,119,111,114,100,41,0,0,0,0,0,76,111,110,103,67,111,109,109,101,110,116,0,0,0,0,0,107,105,110,100,32,40,119,111,114,100,41,44,32,115,105,122,101,32,40,119,111,114,100,41,44,32,100,97,116,97,0,0,112,105,120,101,108,32,118,97,108,117,101,32,103,114,101,97,116,101,114,32,116,104,97,110,32,99,111,108,111,114,32,116,97,98,108,101,32,115,105,122,101,46,0,0,0,0,0,0,112,99,116,44,112,105,99,116,44,112,105,99,0,0,0,0,77,97,99,105,110,116,111,115,104,32,80,73,67,84,0,0,80,73,67,84,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,112,110,103,0,0,0,0,0,0,0,49,46,54,46,49,54,0,0,69,109,98,101,100,100,101,100,32,80,114,111,102,105,108,101,0,0,0,0,0,0,0,0,88,77,76,58,99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,0,0,68,97,116,101,84,105,109,101,0,0,0,0,0,0,0,0,37,52,100,58,37,48,50,100,58,37,48,50,100,32,37,50,100,58,37,48,50,100,58,37,48,50,100,0,0,0,0,0,88,77,76,80,97,99,107,101,116,0,0,0,0,0,0,0,68,73,66,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,44,32,109,97,121,98,101,32,99,97,117,115,101,100,32,98,121,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,111,114,32,98,121,32,97,32,108,97,99,107,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,102,111,114,109,97,116,0,0,0,0,0,0,82,101,97,100,32,101,114,114,111,114,58,32,105,110,118,97,108,105,100,32,111,114,32,99,111,114,114,117,112,116,101,100,32,80,78,71,32,102,105,108,101,0,0,0,0,0,0,0,94,46,80,78,71,13,0,0,112,110,103,0,0,0,0,0,80,111,114,116,97,98,108,101,32,78,101,116,119,111,114,107,32,71,114,97,112,104,105,99,115,0,0,0,0,0,0,0,80,78,71,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,102,114,101,101,105,109,97,103,101,45,112,110,109,0,0,0,0,0,80,37,100,10,37,100,32,37,100,10,0,0,0,0,0,0,37,100,10,0,0,0,0,0,37,51,100,32,37,51,100,32,37,51,100,32,0,0,0,0,37,51,100,32,0,0,0,0,37,99,32,0,0,0,0,0,37,53,100,32,0,0,0,0,37,53,100,32,37,53,100,32,37,53,100,32,0,0,0,0,73,110,118,97,108,105,100,32,109,97,120,32,118,97,108,117,101,32,58,32,37,100,0,0,68,73,66,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,44,32,109,97,121,98,101,32,99,97,117,115,101,100,32,98,121,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,111,114,32,98,121,32,97,32,108,97,99,107,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,80,97,114,115,105,110,103,32,101,114,114,111,114,0,0,0,73,110,118,97,108,105,100,32,109,97,103,105,99,32,110,117,109,98,101,114,0,0,0,0,112,98,109,44,112,103,109,44,112,112,109,0,0,0,0,0,80,111,114,116,97,98,108,101,32,78,101,116,119,111,114,107,32,77,101,100,105,97,0,0,80,78,77,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,118,110,100,46,97,100,111,98,101,46,112,104,111,116,111,115,104,111,112,0,0,0,0,0,0,0,112,115,100,0,0,0,0,0,65,100,111,98,101,32,80,104,111,116,111,115,104,111,112,0,80,83,68,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,99,109,117,45,114,97,115,116,101,114,0,0,0,0,0,0,73,110,118,97,108,105,100,32,112,97,108,101,116,116,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,102,111,114,109,97,116,0,0,0,0,0,0,68,73,66,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,44,32,109,97,121,98,101,32,99,97,117,115,101,100,32,98,121,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,111,114,32,98,121,32,97,32,108,97,99,107,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,73,110,118,97,108,105,100,32,109,97,103,105,99,32,110,117,109,98,101,114,0,0,0,0,114,97,115,0,0,0,0,0,83,117,110,32,82,97,115,116,101,114,32,73,109,97,103,101,0,0,0,0,0,0,0,0,82,65,83,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,115,103,105,0,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,3,0,0,0,69,79,70,32,105,110,32,105,109,97,103,101,32,100,97,116,97,0,0,0,0,0,0,0,68,73,66,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,44,32,109,97,121,98,101,32,99,97,117,115,101,100,32,98,121,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,111,114,32,98,121,32,97,32,108,97,99,107,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,73,110,118,97,108,105,100,32,99,104,97,110,110,101,108,32,99,111,117,110,116,0,0,0,69,79,70,32,105,110,32,114,117,110,32,108,101,110,103,116,104,32,101,110,99,111,100,105,110,103,0,0,0,0,0,0,77,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,78,111,32,99,111,108,111,114,109,97,112,32,115,117,112,112,111,114,116,0,0,0,0,0,78,111,32,49,54,32,98,105,116,32,115,117,112,112,111,114,116,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,109,97,103,105,99,32,110,117,109,98,101,114,0,0,0,0,73,110,99,111,114,114,101,99,116,32,104,101,97,100,101,114,32,115,105,122,101,0,0,0,115,103,105,44,114,103,98,44,114,103,98,97,44,98,119,0,83,71,73,32,73,109,97,103,101,32,70,111,114,109,97,116,0,0,0,0,0,0,0,0,83,71,73,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,116,103,97,0,0,0,0,0,84,82,85,69,86,73,83,73,79,78,45,88,70,73,76,69,46,0,0,0,0,0,0,0,73,109,97,103,101,32,100,97,116,97,32,99,111,114,114,117,112,116,101,100,0,0,0,0,77,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,68,73,66,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,44,32,109,97,121,98,101,32,99,97,117,115,101,100,32,98,121,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,111,114,32,98,121,32,97,32,108,97,99,107,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,116,103,97,44,116,97,114,103,97,0,0,0,0,0,0,0,84,114,117,101,118,105,115,105,111,110,32,84,97,114,103,97,0,0,0,0,0,0,0,0,84,65,82,71,65,0,0,0,19,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,116,105,102,102,0,0,0,0,0,0,80,97,103,101,32,37,100,0,88,77,76,80,97,99,107,101,116,0,0,0,0,0,0,0,77,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,69,114,114,111,114,32,101,110,99,111,117,110,116,101,114,101,100,32,119,104,105,108,101,32,111,112,101,110,105,110,103,32,84,73,70,70,32,102,105,108,101,0,0,0,0,0,0,0,79,110,108,121,32,115,117,112,112,111,114,116,32,83,71,73,76,79,71,32,99,111,109,112,114,101,115,115,101,100,32,76,111,103,76,117,118,32,100,97,116,97,0,0,0,0,0,0,85,110,97,98,108,101,32,116,111,32,104,97,110,100,108,101,32,116,104,105,115,32,102,111,114,109,97,116,58,32,98,105,116,115,112,101,114,115,97,109,112,108,101,32,61,32,37,100,44,32,115,97,109,112,108,101,115,112,101,114,112,105,120,101,108,32,61,32,37,100,44,32,112,104,111,116,111,109,101,116,114,105,99,32,61,32,37,100,0,0,0,0,0,0,0,0,87,97,114,110,105,110,103,58,32,37,100,32,97,100,100,105,116,105,111,110,97,108,32,97,108,112,104,97,32,99,104,97,110,110,101,108,40,115,41,32,105,103,110,111,114,101,100,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,116,101,109,112,111,114,97,114,121,32,97,108,112,104,97,32,99,104,97,110,110,101,108,0,0,0,0,0,0,67,97,110,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,98,117,102,102,101,114,46,32,67,77,89,75,32,105,109,97,103,101,32,99,111,110,118,101,114,116,101,100,32,116,111,32,82,71,66,32,43,32,112,101,110,100,105,110,103,32,65,108,112,104,97,0,0,87,97,114,110,105,110,103,58,32,112,97,114,115,105,110,103,32,101,114,114,111,114,46,32,73,109,97,103,101,32,109,97,121,32,98,101,32,105,110,99,111,109,112,108,101,116,101,32,111,114,32,99,111,110,116,97,105,110,32,105,110,118,97,108,105,100,32,100,97,116,97,32,33,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,116,105,108,101,100,32,84,73,70,70,32,105,109,97,103,101,0,0,0,0,0,0,0,0,67,111,114,114,117,112,116,101,100,32,116,105,108,101,100,32,84,73,70,70,32,102,105,108,101,0,0,0,0,0,0,0,83,101,112,97,114,97,116,101,100,32,116,105,108,101,100,32,84,73,70,70,32,105,109,97,103,101,115,32,97,114,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,85,110,97,98,108,101,32,116,111,32,104,97,110,100,108,101,32,80,76,65,78,65,82,67,79,78,70,73,71,95,83,69,80,65,82,65,84,69,32,76,111,103,76,117,118,32,105,109,97,103,101,115,0,0,0,0,85,110,97,98,108,101,32,116,111,32,104,97,110,100,108,101,32,80,76,65,78,65,82,67,79,78,70,73,71,95,83,69,80,65,82,65,84,69,32,82,71,66,32,104,97,108,102,32,102,108,111,97,116,32,105,109,97,103,101,115,0,0,0,0,80,97,114,115,105,110,103,32,101,114,114,111,114,0,0,0,68,73,66,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,44,32,109,97,121,98,101,32,99,97,117,115,101,100,32,98,121,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,111,114,32,98,121,32,97,32,108,97,99,107,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,102,111,114,109,97,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,0,0,0,0,0,0,0,119,0,0,0,0,0,0,0,69,114,114,111,114,32,119,104,105,108,101,32,111,112,101,110,105,110,103,32,84,73,70,70,58,32,100,97,116,97,32,105,115,32,105,110,118,97,108,105,100,0,0,0,0,0,0,0,94,91,77,73,93,91,77,73,93,91,92,120,48,49,42,93,91,92,120,48,49,42,93,0,116,105,102,44,116,105,102,102,0,0,0,0,0,0,0,0,84,97,103,103,101,100,32,73,109,97,103,101,32,70,105,108,101,32,70,111,114,109,97,116,0,0,0,0,0,0,0,0,84,73,70,70,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,118,110,100,46,119,97,112,46,119,98,109,112,0,0,0,0,0,0,79,110,108,121,32,49,45,98,105,116,32,100,101,112,116,104,32,98,105,116,109,97,112,115,32,99,97,110,32,98,101,32,115,97,118,101,100,32,97,115,32,87,66,77,80,0,0,0,68,73,66,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,44,32,109,97,121,98,101,32,99,97,117,115,101,100,32,98,121,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,111,114,32,98,121,32,97,32,108,97,99,107,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,102,111,114,109,97,116,0,0,0,0,0,0,119,97,112,44,119,98,109,112,44,119,98,109,0,0,0,0,87,105,114,101,108,101,115,115,32,66,105,116,109,97,112,0,87,66,77,80,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,120,98,105,116,109,97,112,0,35,100,101,102,105,110,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,35,100,101,102,105,110,101,32,37,115,32,37,100,0,0,0,119,105,100,116,104,0,0,0,104,101,105,103,104,116,0,0,115,116,97,116,105,99,32,115,104,111,114,116,32,37,115,32,61,32,123,0,0,0,0,0,115,116,97,116,105,99,32,99,104,97,114,32,37,115,32,61,32,123,0,0,0,0,0,0,115,116,97,116,105,99,32,117,110,115,105,103,110,101,100,32,99,104,97,114,32,37,115,32,61,32,123,0,0,0,0,0,83,121,110,116,97,120,32,101,114,114,111,114,0,0,0,0,73,110,118,97,108,105,100,32,104,101,105,103,104,116,0,0,73,110,118,97,108,105,100,32,119,105,100,116,104,0,0,0,85,110,97,98,108,101,32,116,111,32,102,105,110,100,32,97,32,108,105,110,101,32,105,110,32,116,104,101,32,102,105,108,101,32,99,111,110,116,97,105,110,105,110,103,32,116,104,101,32,115,116,97,114,116,32,111,102,32,67,32,97,114,114,97,121,32,100,101,99,108,97,114,97,116,105,111,110,32,40,34,115,116,97,116,105,99,32,99,104,97,114,34,32,111,114,32,119,104,97,116,101,118,101,114,41,0,0,0,0,0,0,0,76,105,110,101,32,116,111,111,32,108,111,110,103,0,0,0,120,98,109,0,0,0,0,0,88,49,49,32,66,105,116,109,97,112,32,70,111,114,109,97,116,0,0,0,0,0,0,0,88,66,77,0,0,0,0,0,0,0,0,0,0,0,0,0,105,109,97,103,101,47,120,45,120,112,105,120,109,97,112,0,47,42,32,88,80,77,32,42,47,0,0,0,0,0,0,0,47,42,32,88,80,77,32,42,47,10,115,116,97,116,105,99,32,99,104,97,114,32,42,102,114,101,101,105,109,97,103,101,91,93,32,61,32,123,10,47,42,32,119,105,100,116,104,32,104,101,105,103,104,116,32,110,117,109,95,99,111,108,111,114,115,32,99,104,97,114,115,95,112,101,114,95,112,105,120,101,108,32,42,47,10,34,0,0,34,44,10,47,42,32,99,111,108,111,114,115,32,42,47,10,34,0,0,0,0,0,0,0,34,44,10,47,42,32,112,105,120,101,108,115,32,42,47,10,34,0,0,0,0,0,0,0,34,44,10,34,0,0,0,0,34,10,125,59,10,0,0,0,37,100,32,37,100,32,37,100,32,37,100,0,0,0,0,0,37,42,115,32,99,32,35,37,48,50,120,37,48,50,120,37,48,50,120,0,0,0,0,0,37,42,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,46,88,111,79,43,64,35,36,37,38,42,61,45,59,58,62,44,60,49,50,51,52,53,54,55,56,57,48,113,119,101,114,116,121,117,105,112,97,115,100,102,103,104,106,107,108,122,120,99,118,98,110,109,77,78,66,86,67,90,65,83,68,70,71,72,74,75,76,80,73,85,89,84,82,69,87,81,33,126,94,47,40,41,95,96,39,93,91,123,125,124,0,0,0,0,67,111,117,108,100,32,110,111,116,32,102,105,110,100,32,115,116,97,114,116,105,110,103,32,98,114,97,99,101,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,105,110,102,111,32,115,116,114,105,110,103,0,0,0,0,0,0,0,73,109,112,114,111,112,101,114,108,121,32,102,111,114,109,101,100,32,105,110,102,111,32,115,116,114,105,110,103,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,99,111,108,111,114,32,115,116,114,105,110,103,115,0,0,0,0,0,32,99,32,0,0,0,0,0,37,48,49,120,37,48,49,120,37,48,49,120,0,0,0,0,37,48,50,120,37,48,50,120,37,48,50,120,0,0,0,0,37,48,51,120,37,48,51,120,37,48,51,120,0,0,0,0,37,48,52,120,37,48,52,120,37,48,52,120,0,0,0,0,73,109,112,114,111,112,101,114,108,121,32,102,111,114,109,101,100,32,104,101,120,32,99,111,108,111,114,32,118,97,108,117,101,0,0,0,0,0,0,0,78,111,110,101,0,0,0,0,110,111,110,101,0,0,0,0,85,110,107,110,111,119,110,32,99,111,108,111,114,32,110,97,109,101,32,39,37,115,39,0,79,110,108,121,32,99,111,108,111,114,32,118,105,115,117,97,108,115,32,97,114,101,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,0,0,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,112,105,120,101,108,32,115,116,114,105,110,103,115,0,0,0,0,0,94,91,32,92,116,93,42,47,92,42,32,88,80,77,32,92,42,47,91,32,92,116,93,36,0,0,0,0,0,0,0,0,120,112,109,0,0,0,0,0,88,49,49,32,80,105,120,109,97,112,32,70,111,114,109,97,116,0,0,0,0,0,0,0,88,80,77,0,0,0,0,0,87,97,114,110,105,110,103,58,32,102,105,108,101,32,104,101,97,100,101,114,32,114,101,115,101,114,118,101,100,32,109,101,109,98,101,114,32,105,115,32,110,111,116,32,101,113,117,97,108,32,116,111,32,122,101,114,111,0,0,0,0,0,0,0,73,110,118,97,108,105,100,32,68,105,115,112,108,97,121,73,110,102,111,58,58,79,112,97,99,105,116,121,32,118,97,108,117,101,0,0,0,0,0,0,73,110,118,97,108,105,100,32,68,105,115,112,108,97,121,73,110,102,111,58,58,80,97,100,100,105,110,103,32,118,97,108,117,101,0,0,0,0,0,0,84,104,105,115,32,102,105,108,101,32,99,111,110,116,97,105,110,115,32,100,97,109,97,103,101,100,32,100,97,116,97,32,99,97,117,115,105,110,103,32,97,110,32,117,110,101,120,112,101,99,116,101,100,32,101,110,100,45,111,102,45,102,105,108,101,32,45,32,115,116,111,112,32,114,101,97,100,105,110,103,32,114,101,115,111,117,114,99,101,115,0,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,99,111,109,112,114,101,115,115,105,111,110,32,37,100,0,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,82,76,69,32,119,105,116,104,32,100,101,112,116,104,32,37,100,0,0,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,99,104,97,110,110,101,108,115,0,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,99,111,108,111,114,32,109,111,100,101,0,0,73,110,100,101,120,101,100,32,105,109,97,103,101,32,104,97,115,32,110,111,32,112,97,108,101,116,116,101,46,32,85,115,105,110,103,32,116,104,101,32,100,101,102,97,117,108,116,32,103,114,97,121,115,99,97,108,101,32,111,110,101,46,0,0,67,97,110,110,111,116,32,111,112,101,110,32,102,105,108,101,0,0,0,0,0,0,0,0,69,114,114,111,114,32,105,110,32,104,101,97,100,101,114,0,69,114,114,111,114,32,105,110,32,73,109,97,103,101,32,82,101,115,111,117,114,99,101,0,69,114,114,111,114,32,105,110,32,77,97,115,107,32,73,110,102,111,0,0,0,0,0,0,69,114,114,111,114,32,105,110,32,73,109,97,103,101,32,68,97,116,97,0,0,0,0,0,37,115,0,0,0,0,0,0,68,73,66,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,44,32,109,97,121,98,101,32,99,97,117,115,101,100,32,98,121,32,97,110,32,105,110,118,97,108,105,100,32,105,109,97,103,101,32,115,105,122,101,32,111,114,32,98,121,32,97,32,108,97,99,107,32,111,102,32,109,101,109,111,114,121,0,0,0,0,0,69,120,105,102,0,0,0,0,79,114,105,101,110,116,97,116,105,111,110,0,0,0,0,0,69,120,105,102,82,97,119,0,77,97,107,101,0,0,0,0,79,76,89,77,80,0,1,0,79,76,89,77,80,0,2,0,69,80,83,79,78,0,0,0,65,71,70,65,0,0,0,0,79,76,89,77,80,85,83,0,73,73,3,0,0,0,0,0,78,105,107,111,110,0,0,0,78,73,75,79,78,0,0,0,67,97,110,111,110,0,0,0,67,97,115,105,111,0,0,0,81,86,67,0,0,0,0,0,70,85,74,73,70,73,76,77,0,0,0,0,0,0,0,0,70,117,106,105,102,105,108,109,0,0,0,0,0,0,0,0,75,89,79,67,69,82,65,32,32,32,32,32,32,32,32,32,32,32,32,0,0,0,0,0,77,105,110,111,108,116,97,0,80,97,110,97,115,111,110,105,99,0,0,0,0,0,0,0,76,69,73,67,65,0,0,0,80,101,110,116,97,120,0,0,65,115,97,104,105,0,0,0,65,79,67,0,0,0,0,0,83,79,78,89,32,67,65,77,32,0,0,0,0,0,0,0,83,79,78,89,32,68,83,67,32,0,0,0,0,0,0,0,83,73,71,77,65,0,0,0,0,0,0,0,0,0,0,0,70,79,86,69,79,78,0,0,0,0,0,0,0,0,0,0,77,111,100,101,108,0,0,0,83,73,71,77,65,32,83,68,49,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,4,0,0,0,8,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,0,0,0,0,77,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,65,100,111,98,101,95,67,77,0,0,0,0,0,0,0,0,59,0,0,0,0,0,0,0,0,1,0,0,152,124,5,0,240,118,5,0,1,1,0,0,168,124,5,0,24,119,5,0,2,1,0,0,184,124,5,0,200,124,5,0,3,1,0,0,232,124,5,0,248,124,5,0,6,1,0,0,16,125,5,0,48,125,5,0,10,1,0,0,72,125,5,0,0,0,0,0,13,1,0,0,88,125,5,0,0,0,0,0,14,1,0,0,104,125,5,0,128,125,5,0,15,1,0,0,144,125,5,0,152,125,5,0,16,1,0,0,192,125,5,0,200,125,5,0,17,1,0,0,232,125,5,0,248,125,5,0,18,1,0,0,16,126,5,0,32,126,5,0,21,1,0,0,56,126,5,0,72,126,5,0,22,1,0,0,96,126,5,0,112,126,5,0,23,1,0,0,144,126,5,0,160,126,5,0,26,1,0,0,192,126,5,0,208,126,5,0,27,1,0,0,248,126,5,0,8,127,5,0,28,1,0,0,48,127,5,0,72,127,5,0,29,1,0,0,96,127,5,0,112,127,5,0,30,1,0,0,136,127,5,0,152,127,5,0,31,1,0,0,176,127,5,0,192,127,5,0,40,1,0,0,216,127,5,0,232,127,5,0,41,1,0,0,8,128,5,0,24,128,5,0,45,1,0,0,40,128,5,0,64,128,5,0,49,1,0,0,56,65,5,0,88,128,5,0,50,1,0,0,104,128,5,0,120,128,5,0,59,1,0,0,216,77,5,0,152,128,5,0,60,1,0,0,184,128,5,0,200,128,5,0,62,1,0,0,112,74,5,0,248,128,5,0,63,1,0,0,24,129,5,0,48,129,5,0,86,1,0,0,80,129,5,0,0,0,0,0,0,2,0,0,96,129,5,0,0,0,0,0,1,2,0,0,112,129,5,0,136,129,5,0,2,2,0,0,160,129,5,0,192,129,5,0,17,2,0,0,216,129,5,0,240,129,5,0,18,2,0,0,32,130,5,0,56,130,5,0,19,2,0,0,88,130,5,0,112,130,5,0,20,2,0,0,136,130,5,0,160,130,5,0,141,130,0,0,208,130,5,0,0,0,0,0,142,130,0,0,232,130,5,0,0,0,0,0,143,130,0,0,248,130,5,0,0,0,0,0,152,130,0,0,224,77,5,0,8,131,5,0,154,130,0,0,16,66,5,0,32,131,5,0,157,130,0,0,8,66,5,0,48,131,5,0,187,131,0,0,64,131,5,0,0,0,0,0,115,135,0,0,80,131,5,0,0,0,0,0,34,136,0,0,104,131,5,0,120,131,5,0,36,136,0,0,144,131,5,0,168,131,5,0,37,136,0,0,192,131,5,0,0,0,0,0,39,136,0,0,200,131,5,0,216,131,5,0,40,136,0,0,240,131,5,0,248,131,5,0,0,144,0,0,24,132,5,0,40,132,5,0,3,144,0,0,56,132,5,0,80,132,5,0,4,144,0,0,128,132,5,0,152,132,5,0,1,145,0,0,200,132,5,0,224,132,5,0,2,145,0,0,0,133,5,0,24,133,5,0,1,146,0,0,0,85,5,0,48,133,5,0,2,146,0,0,40,85,5,0,64,133,5,0,3,146,0,0,56,85,5,0,136],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+317441);allocate([67,5,0,4,146,0,0,80,133,5,0,104,133,5,0,5,146,0,0,120,133,5,0,144,133,5,0,6,146,0,0,168,133,5,0,184,133,5,0,7,146,0,0,96,64,5,0,208,133,5,0,8,146,0,0,112,91,5,0,224,133,5,0,9,146,0,0,240,133,5,0,240,133,5,0,10,146,0,0,144,70,5,0,248,133,5,0,20,146,0,0,16,134,5,0,32,134,5,0,124,146,0,0,48,134,5,0,64,134,5,0,134,146,0,0,88,134,5,0,104,134,5,0,144,146,0,0,120,134,5,0,136,134,5,0,145,146,0,0,160,134,5,0,184,134,5,0,146,146,0,0,216,134,5,0,240,134,5,0,0,160,0,0,16,135,5,0,32,135,5,0,1,160,0,0,128,64,5,0,64,135,5,0,2,160,0,0,88,135,5,0,104,135,5,0,3,160,0,0,128,135,5,0,144,135,5,0,4,160,0,0,168,135,5,0,192,135,5,0,5,160,0,0,216,135,5,0,0,0,0,0,11,162,0,0,240,135,5,0,0,136,5,0,12,162,0,0,16,136,5,0,48,136,5,0,14,162,0,0,80,136,5,0,104,136,5,0,15,162,0,0,136,136,5,0,160,136,5,0,16,162,0,0,192,136,5,0,224,136,5,0,20,162,0,0,0,137,5,0,16,137,5,0,21,162,0,0,40,137,5,0,56,137,5,0,23,162,0,0,72,137,5,0,88,137,5,0,0,163,0,0,104,137,5,0,112,137,5,0,1,163,0,0,128,137,5,0,144,137,5,0,2,163,0,0,232,130,5,0,160,137,5,0,1,164,0,0,176,137,5,0,192,137,5,0,2,164,0,0,80,64,5,0,216,137,5,0,3,164,0,0,64,64,5,0,232,137,5,0,4,164,0,0,248,137,5,0,16,138,5,0,5,164,0,0,40,138,5,0,64,138,5,0,6,164,0,0,96,138,5,0,120,138,5,0,7,164,0,0,144,138,5,0,160,138,5,0,8,164,0,0,168,64,5,0,168,64,5,0,9,164,0,0,208,64,5,0,208,64,5,0,10,164,0,0,224,64,5,0,224,64,5,0,11,164,0,0,176,138,5,0,208,138,5,0,12,164,0,0,240,138,5,0,8,139,5,0,32,164,0,0,176,99,5,0,32,139,5,0,48,164,0,0,48,139,5,0,64,139,5,0,49,164,0,0,88,139,5,0,112,139,5,0,50,164,0,0,136,139,5,0,160,139,5,0,51,164,0,0,184,139,5,0,200,139,5,0,52,164,0,0,224,100,5,0,216,139,5,0,53,164,0,0,184,81,5,0,232,139,5,0,70,71,0,0,0,140,5,0,8,140,5,0,73,71,0,0,40,140,5,0,56,140,5,0,155,156,0,0,104,140,5,0,112,140,5,0,156,156,0,0,160,140,5,0,176,140,5,0,157,156,0,0,224,140,5,0,240,140,5,0,158,156,0,0,32,141,5,0,48,141,5,0,159,156,0,0,96,141,5,0,112,141,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,119,5,0,56,119,5,0,1,0,0,0,72,119,5,0,88,119,5,0,2,0,0,0,112,119,5,0,128,119,5,0,3,0,0,0,144,119,5,0,160,119,5,0,4,0,0,0,184,119,5,0,200,119,5,0,5,0,0,0,216,119,5,0,232,119,5,0,6,0,0,0,0,120,5,0,16,120,5,0,7,0,0,0,32,120,5,0,48,120,5,0,8,0,0,0,72,120,5,0,88,120,5,0,9,0,0,0,128,120,5,0,144,120,5,0,10,0,0,0,168,120,5,0,184,120,5,0,11,0,0,0,208,120,5,0,216,120,5,0,12,0,0,0,240,120,5,0,0,121,5,0,13,0,0,0,16,121,5,0,32,121,5,0,14,0,0,0,56,121,5,0,72,121,5,0,15,0,0,0,112,121,5,0,128,121,5,0,16,0,0,0,152,121,5,0,176,121,5,0,17,0,0,0,216,121,5,0,232,121,5,0,18,0,0,0,0,122,5,0,16,122,5,0,19,0,0,0,48,122,5,0,72,122,5,0,20,0,0,0,112,122,5,0,128,122,5,0,21,0,0,0,152,122,5,0,176,122,5,0,22,0,0,0,216,122,5,0,240,122,5,0,23,0,0,0,16,123,5,0,40,123,5,0,24,0,0,0,80,123,5,0,96,123,5,0,25,0,0,0,120,123,5,0,144,123,5,0,26,0,0,0,184,123,5,0,200,123,5,0,27,0,0,0,224,123,5,0,248,123,5,0,28,0,0,0,24,124,5,0,48,124,5,0,29,0,0,0,72,124,5,0,88,124,5,0,30,0,0,0,104,124,5,0,120,124,5,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,48,118,5,0,72,118,5,0,2,0,0,0,104,118,5,0,128,118,5,0,0,16,0,0,160,118,5,0,184,118,5,0,1,16,0,0,216,118,5,0,240,118,5,0,2,16,0,0,0,119,5,0,24,119,5,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,97,5,0,32,97,5,0,2,0,0,0,64,97,5,0,88,97,5,0,3,0,0,0,112,97,5,0,0,0,0,0,4,0,0,0,128,97,5,0,144,97,5,0,5,0,0,0,168,97,5,0,184,97,5,0,6,0,0,0,208,97,5,0,0,0,0,0,7,0,0,0,224,97,5,0,0,0,0,0,8,0,0,0,248,97,5,0,0,0,0,0,9,0,0,0,8,98,5,0,0,0,0,0,10,0,0,0,24,98,5,0,40,98,5,0,12,0,0,0,248,63,5,0,0,0,0,0,13,0,0,0,64,98,5,0,80,98,5,0,14,0,0,0,104,98,5,0,0,0,0,0,15,0,0,0,120,98,5,0,144,98,5,0,16,0,0,0,168,98,5,0,0,0,0,0,18,0,0,0,184,98,5,0,200,98,5,0,19,0,0,0,224,98,5,0,0,0,0,0,21,0,0,0,248,98,5,0,0,0,0,0,26,0,0,0,16,99,5,0,0,0,0,0,28,0,0,0,32,99,5,0,0,0,0,0,29,0,0,0,48,99,5,0,0,0,0,0,30,0,0,0,64,99,5,0,0,0,0,0,35,0,0,0,88,99,5,0,0,0,0,0,36,0,0,0,104,99,5,0,0,0,0,0,37,0,0,0,120,99,5,0,0,0,0,0,38,0,0,0,136,99,5,0,152,99,5,0,40,0,0,0,176,99,5,0,0,0,0,0,129,0,0,0,192,99,5,0,0,0,0,0,131,0,0,0,208,99,5,0,0,0,0,0,144,0,0,0,240,99,5,0,8,100,5,0,145,0,0,0,40,100,5,0,64,100,5,0,146,0,0,0,96,100,5,0,120,100,5,0,147,0,0,0,160,100,5,0,176,100,5,0,148,0,0,0,200,100,5,0,0,0,0,0,149,0,0,0,224,100,5,0,0,0,0,0,150,0,0,0,240,100,5,0,0,0,0,0,151,0,0,0,0,101,5,0,0,0,0,0,152,0,0,0,16,101,5,0,0,0,0,0,153,0,0,0,32,101,5,0,0,0,0,0,154,0,0,0,56,101,5,0,0,0,0,0,160,0,0,0,72,101,5,0,0,0,0,0,161,0,0,0,88,101,5,0,0,0,0,0,162,0,0,0,104,101,5,0,0,0,0,0,163,0,0,0,120,101,5,0,0,0,0,0,164,0,0,0,144,101,5,0,0,0,0,0,169,0,0,0,184,91,5,0,0,0,0,0,170,0,0,0,168,101,5,0,0,0,0,0,174,0,0,0,48,68,5,0,0,0,0,0,176,0,0,0,184,101,5,0,0,0,0,0,177,0,0,0,200,101,5,0,0,0,0,0,178,0,0,0,216,101,5,0,0,0,0,0,179,0,0,0,240,101,5,0,0,0,0,0,180,0,0,0,128,64,5,0,0,0,0,0,182,0,0,0,8,102,5,0,0,0,0,0,208,0,0,0,32,102,5,0,48,102,5,0,224,0,0,0,96,102,5,0,0,0,0,0,1,64,0,0,112,102,5,0,128,102,5,0,2,64,0,0,152,102,5,0,0,0,0,0,3,64,0,0,216,76,5,0,0,0,0,0,5,64,0,0,168,102,5,0,0,0,0,0,8,64,0,0,176,102,5,0,0,0,0,0,16,64,0,0,192,102,5,0,0,0,0,0,19,64,0,0,224,102,5,0,0,0,0,0,21,64,0,0,240,102,5,0,0,0,0,0,22,64,0,0,0,103,5,0,0,0,0,0,24,64,0,0,16,103,5,0,0,0,0,0,25,64,0,0,224,74,5,0,0,0,0,0,32,64,0,0,32,103,5,0,0,0,0,0,36,64,0,0,136,77,5,0,0,0,0,0,1,193,0,0,48,103,5,0,0,0,0,0,2,193,0,0,80,103,5,0,0,0,0,0,3,193,0,0,112,103,5,0,0,0,0,0,4,193,0,0,136,103,5,0,0,0,0,0,5,193,0,0,168,103,5,0,0,0,0,0,6,193,0,0,200,103,5,0,0,0,0,0,7,193,0,0,224,103,5,0,0,0,0,0,8,193,0,0,0,104,5,0,0,0,0,0,9,193,0,0,24,104,5,0,0,0,0,0,10,193,0,0,56,104,5,0,0,0,0,0,11,193,0,0,88,104,5,0,0,0,0,0,12,193,0,0,112,104,5,0,0,0,0,0,13,193,0,0,144,104,5,0,0,0,0,0,14,193,0,0,168,104,5,0,0,0,0,0,15,193,0,0,200,104,5,0,0,0,0,0,16,193,0,0,232,104,5,0,0,0,0,0,17,193,0,0,8,105,5,0,0,0,0,0,18,193,0,0,40,105,5,0,0,0,0,0,19,193,0,0,72,105,5,0,0,0,0,0,20,193,0,0,96,105,5,0,0,0,0,0,21,193,0,0,136,105,5,0,0,0,0,0,22,193,0,0,160,105,5,0,0,0,0,0,23,193,0,0,184,105,5,0,0,0,0,0,24,193,0,0,216,105,5,0,0,0,0,0,25,193,0,0,248,105,5,0,24,106,5,0,26,193,0,0,48,106,5,0,0,0,0,0,27,193,0,0,80,106,5,0,0,0,0,0,28,193,0,0,112,106,5,0,0,0,0,0,29,193,0,0,144,106,5,0,0,0,0,0,30,193,0,0,176,106,5,0,0,0,0,0,31,193,0,0,200,106,5,0,0,0,0,0,32,193,0,0,224,106,5,0,0,0,0,0,33,193,0,0,0,107,5,0,0,0,0,0,34,193,0,0,32,107,5,0,0,0,0,0,35,193,0,0,72,107,5,0,0,0,0,0,36,193,0,0,104,107,5,0,0,0,0,0,37,193,0,0,136,107,5,0,0,0,0,0,38,193,0,0,168,107,5,0,0,0,0,0,39,193,0,0,192,107,5,0,0,0,0,0,40,193,0,0,224,107,5,0,0,0,0,0,41,193,0,0,0,108,5,0,0,0,0,0,42,193,0,0,40,108,5,0,0,0,0,0,43,193,0,0,72,108,5,0,0,0,0,0,44,193,0,0,96,108,5,0,0,0,0,0,45,193,0,0,120,108,5,0,0,0,0,0,46,193,0,0,144,108,5,0,0,0,0,0,47,193,0,0,176,108,5,0,0,0,0,0,48,193,0,0,200,108,5,0,0,0,0,0,0,194,0,0,224,108,5,0,0,0,0,0,1,194,0,0,248,108,5,0,0,0,0,0,2,194,0,0,16,109,5,0,0,0,0,0,3,194,0,0,48,109,5,0,0,0,0,0,1,196,0,0,80,109,5,0,0,0,0,0,2,196,0,0,104,109,5,0,0,0,0,0,3,196,0,0,128,109,5,0,0,0,0,0,4,196,0,0,152,109,5,0,0,0,0,0,5,196,0,0,176,109,5,0,0,0,0,0,6,196,0,0,208,109,5,0,0,0,0,0,7,196,0,0,240,109,5,0,0,0,0,0,8,196,0,0,8,110,5,0,0,0,0,0,9,196,0,0,32,110,5,0,0,0,0,0,10,196,0,0,56,110,5,0,0,0,0,0,11,196,0,0,88,110,5,0,0,0,0,0,12,196,0,0,104,110,5,0,0,0,0,0,13,196,0,0,136,110,5,0,0,0,0,0,14,196,0,0,168,110,5,0,0,0,0,0,15,196,0,0,200,110,5,0,0,0,0,0,16,196,0,0,232,110,5,0,0,0,0,0,17,196,0,0,8,111,5,0,0,0,0,0,18,196,0,0,40,111,5,0,0,0,0,0,19,196,0,0,64,111,5,0,0,0,0,0,20,196,0,0,96,111,5,0,0,0,0,0,21,196,0,0,128,111,5,0,0,0,0,0,22,196,0,0,152,111,5,0,0,0,0,0,23,196,0,0,176,111,5,0,0,0,0,0,24,196,0,0,200,111,5,0,0,0,0,0,25,196,0,0,224,111,5,0,0,0,0,0,26,196,0,0,240,111,5,0,0,0,0,0,27,196,0,0,8,112,5,0,0,0,0,0,28,196,0,0,32,112,5,0,0,0,0,0,29,196,0,0,56,112,5,0,0,0,0,0,30,196,0,0,80,112,5,0,0,0,0,0,31,196,0,0,96,112,5,0,0,0,0,0,32,196,0,0,112,112,5,0,0,0,0,0,33,196,0,0,128,112,5,0,0,0,0,0,0,18,0,0,152,112,5,0,0,0,0,0,1,18,0,0,176,112,5,0,0,0,0,0,2,18,0,0,200,112,5,0,0,0,0,0,3,18,0,0,224,112,5,0,0,0,0,0,4,18,0,0,248,112,5,0,0,0,0,0,5,18,0,0,16,113,5,0,0,0,0,0,6,18,0,0,40,113,5,0,0,0,0,0,7,18,0,0,64,113,5,0,0,0,0,0,8,18,0,0,88,113,5,0,0,0,0,0,9,18,0,0,112,113,5,0,0,0,0,0,10,18,0,0,136,113,5,0,0,0,0,0,11,18,0,0,160,113,5,0,0,0,0,0,12,18,0,0,184,113,5,0,0,0,0,0,13,18,0,0,208,113,5,0,0,0,0,0,14,18,0,0,224,113,5,0,0,0,0,0,15,18,0,0,240,113,5,0,0,0,0,0,16,18,0,0,0,114,5,0,0,0,0,0,17,18,0,0,16,114,5,0,0,0,0,0,18,18,0,0,32,114,5,0,0,0,0,0,19,18,0,0,48,114,5,0,0,0,0,0,20,18,0,0,64,114,5,0,0,0,0,0,21,18,0,0,80,114,5,0,0,0,0,0,22,18,0,0,96,114,5,0,0,0,0,0,23,18,0,0,112,114,5,0,0,0,0,0,24,18,0,0,128,114,5,0,0,0,0,0,25,18,0,0,144,114,5,0,0,0,0,0,26,18,0,0,160,114,5,0,0,0,0,0,27,18,0,0,176,114,5,0,0,0,0,0,1,202,0,0,192,114,5,0,0,0,0,0,2,202,0,0,224,114,5,0,0,0,0,0,3,202,0,0,0,115,5,0,0,0,0,0,4,202,0,0,40,115,5,0,0,0,0,0,5,202,0,0,72,115,5,0,0,0,0,0,6,202,0,0,104,115,5,0,0,0,0,0,7,202,0,0,136,115,5,0,0,0,0,0,8,202,0,0,168,115,5,0,0,0,0,0,9,202,0,0,200,115,5,0,0,0,0,0,10,202,0,0,232,115,5,0,0,0,0,0,11,202,0,0,8,116,5,0,0,0,0,0,12,202,0,0,40,116,5,0,0,0,0,0,13,202,0,0,72,116,5,0,0,0,0,0,1,206,0,0,104,116,5,0,0,0,0,0,2,206,0,0,128,116,5,0,0,0,0,0,3,206,0,0,152,116,5,0,0,0,0,0,4,206,0,0,176,116,5,0,0,0,0,0,5,206,0,0,200,116,5,0,0,0,0,0,6,206,0,0,232,116,5,0,0,0,0,0,7,206,0,0,8,117,5,0,0,0,0,0,8,206,0,0,40,117,5,0,0,0,0,0,9,206,0,0,72,117,5,0,0,0,0,0,10,206,0,0,104,117,5,0,0,0,0,0,11,206,0,0,136,117,5,0,0,0,0,0,12,206,0,0,168,117,5,0,0,0,0,0,13,206,0,0,208,117,5,0,0,0,0,0,14,206,0,0,232,117,5,0,0,0,0,0,15,206,0,0,0,118,5,0,0,0,0,0,16,206,0,0,24,118,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,232,96,5,0,0,0,0,0,2,0,0,0,32,65,5,0,0,0,0,0,3,0,0,0,240,68,5,0,0,0,0,0,4,0,0,0,240,69,5,0,0,0,0,0,5,0,0,0,248,96,5,0,0,0,0,0,6,0,0,0,216,95,5,0,0,0,0,0,7,0,0,0,64,64,5,0,0,0,0,0,10,0,0,0,160,70,5,0,0,0,0,0,11,0,0,0,224,64,5,0,0,0,0,0,12,0,0,0,168,64,5,0,0,0,0,0,13,0,0,0,208,64,5,0,0,0,0,0,20,0,0,0,48,70,5,0,0,0,0,0,21,0,0,0,200,95,5,0,0,0,0,0,22,0,0,0,56,96,5,0,0,0,0,0,23,0,0,0,72,96,5,0,0,0,0,0,24,0,0,0,184,65,5,0,0,0,0,0,25,0,0,0,248,96,5,0,0,0,0,0,0,14,0,0,32,67,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,136,65,5,0,0,0,0,0,3,0,0,0,112,65,5,0,0,0,0,0,4,0,0,0,88,65,5,0,0,0,0,0,8,0,0,0,168,95,5,0,0,0,0,0,9,0,0,0,184,95,5,0,0,0,0,0,13,0,0,0,240,68,5,0,0,0,0,0,20,0,0,0,48,70,5,0,0,0,0,0,25,0,0,0,64,64,5,0,0,0,0,0,29,0,0,0,144,70,5,0,0,0,0,0,31,0,0,0,208,64,5,0,0,0,0,0,32,0,0,0,168,64,5,0,0,0,0,0,33,0,0,0,224,64,5,0,0,0,0,0,0,14,0,0,32,67,5,0,0,0,0,0,0,32,0,0,120,67,5,0,0,0,0,0,1,32,0,0,200,95,5,0,0,0,0,0,17,32,0,0,160,79,5,0,0,0,0,0,18,32,0,0,64,64,5,0,0,0,0,0,33,32,0,0,120,81,5,0,0,0,0,0,34,32,0,0,216,95,5,0,0,0,0,0,52,32,0,0,232,95,5,0,0,0,0,0,118,32,0,0,248,95,5,0,0,0,0,0,0,48,0,0,16,96,5,0,0,0,0,0,1,48,0,0,48,69,5,0,0,0,0,0,2,48,0,0,32,65,5,0,0,0,0,0,3,48,0,0,240,68,5,0,0,0,0,0,6,48,0,0,200,70,5,0,0,0,0,0,7,48,0,0,32,96,5,0,0,0,0,0,8,48,0,0,48,96,5,0,0,0,0,0,9,48,0,0,40,64,5,0,0,0,0,0,17,48,0,0,224,64,5,0,0,0,0,0,18,48,0,0,168,64,5,0,0,0,0,0,19,48,0,0,208,64,5,0,0,0,0,0,20,48,0,0,48,70,5,0,0,0,0,0,21,48,0,0,224,65,5,0,0,0,0,0,22,48,0,0,56,96,5,0,0,0,0,0,23,48,0,0,72,96,5,0,0,0,0,0,27,48,0,0,88,96,5,0,0,0,0,0,28,48,0,0,64,69,5,0,0,0,0,0,29,48,0,0,96,96,5,0,0,0,0,0,32,48,0,0,152,68,5,0,0,0,0,0,42,48,0,0,112,96,5,0,0,0,0,0,43,48,0,0,128,96,5,0,0,0,0,0,48,48,0,0,144,96,5,0,0,0,0,0,49,48,0,0,168,96,5,0,0,0,0,0,3,49,0,0,8,64,5,0,0,0,0,0,1,64,0,0,192,96,5,0,0,0,0,0,3,64,0,0,216,96,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,94,5,0,0,0,0,0,16,0,0,0,200,79,5,0,0,0,0,0,0,16,0,0,32,65,5,0,0,0,0,0,1,16,0,0,224,64,5,0,0,0,0,0,2,16,0,0,64,64,5,0,0,0,0,0,3,16,0,0,208,64,5,0,0,0,0,0,4,16,0,0,168,64,5,0,0,0,0,0,5,16,0,0,48,68,5,0,0,0,0,0,10,16,0,0,248,66,5,0,0,0,0,0,11,16,0,0,32,72,5,0,0,0,0,0,16,16,0,0,88,94,5,0,0,0,0,0,17,16,0,0,88,66,5,0,0,0,0,0,32,16,0,0,232,68,5,0,0,0,0,0,33,16,0,0,240,68,5,0,0,0,0,0,35,16,0,0,104,94,5,0,0,0,0,0,48,16,0,0,120,94,5,0,0,0,0,0,49,16,0,0,112,66,5,0,0,0,0,0,51,16,0,0,136,94,5,0,0,0,0,0,52,16,0,0,144,94,5,0,0,0,0,0,0,17,0,0,152,94,5,0,0,0,0,0,1,17,0,0,64,69,5,0,0,0,0,0,16,18,0,0,224,65,5,0,0,0,0,0,0,19,0,0,168,94,5,0,0,0,0,0,1,19,0,0,184,94,5,0,0,0,0,0,2,19,0,0,200,94,5,0,0,0,0,0,0,20,0,0,216,94,5,0,0,0,0,0,1,20,0,0,24,81,5,0,0,0,0,0,2,20,0,0,232,94,5,0,0,0,0,0,3,20,0,0,0,95,5,0,0,0,0,0,4,20,0,0,24,95,5,0,0,0,0,0,5,20,0,0,40,95,5,0,0,0,0,0,6,20,0,0,56,95,5,0,0,0,0,0,7,20,0,0,80,95,5,0,0,0,0,0,0,65,0,0,8,81,5,0,0,0,0,0,3,65,0,0,104,95,5,0,0,0,0,0,0,128,0,0,120,95,5,0,0,0,0,0,2,128,0,0,136,95,5,0,0,0,0,0,3,128,0,0,80,71,5,0,0,0,0,0,17,178,0,0,152,95,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,160,83,5,0,0,0,0,0,0,14,0,0,32,67,5,0,48,94,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,65,5,0,0,0,0,0,1,0,0,0,80,83,5,0,0,0,0,0,3,0,0,0,112,83,5,0,0,0,0,0,4,0,0,0,168,93,5,0,0,0,0,0,24,0,0,0,152,68,5,0,0,0,0,0,64,0,0,0,136,83,5,0,0,0,0,0,129,0,0,0,120,67,5,0,0,0,0,0,136,0,0,0,88,65,5,0,0,0,0,0,137,0,0,0,112,65,5,0,0,0,0,0,0,1,0,0,96,68,5,0,0,0,0,0,1,1,0,0,224,65,5,0,0,0,0,0,2,1,0,0,192,93,5,0,0,0,0,0,3,1,0,0,208,93,5,0,0,0,0,0,4,1,0,0,88,66,5,0,0,0,0,0,5,1,0,0,232,66,5,0,0,0,0,0,7,1,0,0,152,68,5,0,0,0,0,0,9,1,0,0,232,93,5,0,0,0,0,0,10,1,0,0,112,68,5,0,0,0,0,0,11,1,0,0,48,68,5,0,0,0,0,0,12,1,0,0,176,68,5,0,0,0,0,0,17,1,0,0,72,68,5,0,0,0,0,0,18,1,0,0,248,66,5,0,0,0,0,0,19,1,0,0,152,68,5,0,0,0,0,0,20,1,0,0,0,94,5,0,0,0,0,0,21,1,0,0,64,64,5,0,0,0,0,0,0,14,0,0,32,67,5,0,0,0,0,0,0,15,0,0,24,94,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,104,93,5,0,0,0,0,0,3,0,0,0,32,65,5,0,0,0,0,0,4,0,0,0,224,65,5,0,0,0,0,0,5,0,0,0,8,91,5,0,0,0,0,0,6,0,0,0,120,93,5,0,0,0,0,0,7,0,0,0,64,64,5,0,0,0,0,0,8,0,0,0,136,93,5,0,0,0,0,0,10,0,0,0,160,70,5,0,0,0,0,0,11,0,0,0,144,93,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,160,65,5,0,0,0,0,0,2,0,0,0,48,70,5,0,0,0,0,0,3,0,0,0,224,65,5,0,0,0,0,0,4,0,0,0,32,65,5,0,0,0,0,0,5,0,0,0,64,64,5,0,0,0,0,0,6,0,0,0,224,64,5,0,0,0,0,0,7,0,0,0,240,68,5,0,0,0,0,0,8,0,0,0,136,89,5,0,0,0,0,0,9,0,0,0,152,89,5,0,0,0,0,0,11,0,0,0,248,66,5,0,0,0,0,0,15,0,0,0,224,89,5,0,0,0,0,0,16,0,0,0,48,78,5,0,0,0,0,0,128,0,0,0,8,91,5,0,0,0,0,0,130,0,0,0,40,91,5,0,0,0,0,0,133,0,0,0,136,85,5,0,0,0,0,0,134,0,0,0,160,70,5,0,0,0,0,0,136,0,0,0,184,76,5,0,0,0,0,0,137,0,0,0,120,79,5,0,0,0,0,0,141,0,0,0,224,65,5,0,0,0,0,0,143,0,0,0,96,68,5,0,0,0,0,0,146,0,0,0,128,91,5,0,0,0,0,0,148,0,0,0,208,64,5,0,0,0,0,0,149,0,0,0,32,72,5,0,0,0,0,0,0,14,0,0,32,67,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,160,65,5,0,0,0,0,0,2,0,0,0,48,70,5,0,0,0,0,0,3,0,0,0,224,65,5,0,0,0,0,0,4,0,0,0,32,65,5,0,0,0,0,0,5,0,0,0,64,64,5,0,0,0,0,0,6,0,0,0,224,64,5,0,0,0,0,0,7,0,0,0,240,68,5,0,0,0,0,0,8,0,0,0,136,89,5,0,0,0,0,0,9,0,0,0,152,89,5,0,0,0,0,0,11,0,0,0,248,66,5,0,0,0,0,0,12,0,0,0,168,89,5,0,0,0,0,0,13,0,0,0,184,89,5,0,0,0,0,0,14,0,0,0,200,89,5,0,0,0,0,0,15,0,0,0,224,89,5,0,0,0,0,0,16,0,0,0,48,78,5,0,0,0,0,0,17,0,0,0,240,89,5,0,0,0,0,0,18,0,0,0,88,66,5,0,0,0,0,0,19,0,0,0,0,90,5,0,0,0,0,0,20,0,0,0,16,90,5,0,0,0,0,0,22,0,0,0,32,90,5,0,0,0,0,0,23,0,0,0,88,66,5,0,0,0,0,0,24,0,0,0,48,90,5,0,0,0,0,0,25,0,0,0,80,90,5,0,0,0,0,0,26,0,0,0,112,71,5,0,0,0,0,0,27,0,0,0,104,90,5,0,0,0,0,0,28,0,0,0,120,90,5,0,0,0,0,0,29,0,0,0,248,63,5,0,0,0,0,0,30,0,0,0,128,64,5,0,0,0,0,0,31,0,0,0,136,90,5,0,0,0,0,0,32,0,0,0,144,90,5,0,0,0,0,0,34,0,0,0,168,90,5,0,0,0,0,0,35,0,0,0,192,90,5,0,0,0,0,0,36,0,0,0,208,90,5,0,0,0,0,0,37,0,0,0,224,90,5,0,0,0,0,0,42,0,0,0,232,90,5,0,0,0,0,0,43,0,0,0,248,90,5,0,0,0,0,0,128,0,0,0,8,91,5,0,0,0,0,0,129,0,0,0,24,91,5,0,0,0,0,0,130,0,0,0,40,91,5,0,0,0,0,0,131,0,0,0,176,68,5,0,0,0,0,0,132,0,0,0,56,91,5,0,0,0,0,0,133,0,0,0,136,85,5,0,0,0,0,0,134,0,0,0,160,70,5,0,0,0,0,0,135,0,0,0,240,69,5,0,0,0,0,0,136,0,0,0,184,76,5,0,0,0,0,0,137,0,0,0,120,79,5,0,0,0,0,0,139,0,0,0,64,91,5,0,0,0,0,0,140,0,0,0,80,91,5,0,0,0,0,0,141,0,0,0,96,91,5,0,0,0,0,0,143,0,0,0,96,68,5,0,0,0,0,0,144,0,0,0,112,91,5,0,0,0,0,0,145,0,0,0,248,67,5,0,0,0,0,0,146,0,0,0,128,91,5,0,0,0,0,0,147,0,0,0,144,91,5,0,0,0,0,0,148,0,0,0,208,64,5,0,0,0,0,0,149,0,0,0,32,72,5,0,0,0,0,0,150,0,0,0,160,91,5,0,0,0,0,0,151,0,0,0,184,91,5,0,0,0,0,0,152,0,0,0,200,91,5,0,0,0,0,0,153,0,0,0,216,91,5,0,0,0,0,0,154,0,0,0,232,91,5,0,0,0,0,0,156,0,0,0,248,91,5,0,0,0,0,0,158,0,0,0,8,92,5,0,0,0,0,0,160,0,0,0,248,63,5,0,0,0,0,0,162,0,0,0,24,92,5,0,0,0,0,0,165,0,0,0,40,92,5,0,0,0,0,0,166,0,0,0,56,92,5,0,0,0,0,0,167,0,0,0,112,72,5,0,0,0,0,0,168,0,0,0,8,75,5,0,0,0,0,0,169,0,0,0,80,92,5,0,0,0,0,0,170,0,0,0,208,64,5,0,0,0,0,0,171,0,0,0,104,92,5,0,0,0,0,0,172,0,0,0,152,68,5,0,0,0,0,0,173,0,0,0,120,92,5,0,0,0,0,0,176,0,0,0,136,92,5,0,0,0,0,0,177,0,0,0,184,67,5,0,0,0,0,0,179,0,0,0,152,92,5,0,0,0,0,0,182,0,0,0,168,92,5,0,0,0,0,0,183,0,0,0,184,92,5,0,0,0,0,0,184,0,0,0,192,92,5,0,0,0,0,0,185,0,0,0,208,92,5,0,0,0,0,0,189,0,0,0,192,90,5,0,0,0,0,0,0,14,0,0,32,67,5,0,0,0,0,0,1,14,0,0,216,92,5,0,0,0,0,0,9,14,0,0,240,92,5,0,0,0,0,0,14,14,0,0,8,93,5,0,0,0,0,0,16,14,0,0,32,93,5,0,0,0,0,0,29,14,0,0,48,93,5,0,0,0,0,0,30,14,0,0,64,93,5,0,0,0,0,0,34,14,0,0,88,93,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,65,5,0,0,0,0,0,1,0,0,0,80,83,5,0,0,0,0,0,3,0,0,0,112,83,5,0,0,0,0,0,64,0,0,0,136,83,5,0,0,0,0,0,129,0,0,0,144,78,5,0,0,0,0,0,136,0,0,0,88,65,5,0,0,0,0,0,137,0,0,0,112,65,5,0,0,0,0,0,0,1,0,0,160,83,5,0,0,0,0,0,4,1,0,0,176,83,5,0,0,0,0,0,0,2,0,0,200,83,5,0,0,0,0,0,1,2,0,0,32,65,5,0,0,0,0,0,2,2,0,0,232,68,5,0,0,0,0,0,3,2,0,0,216,83,5,0,0,0,0,0,4,2,0,0,160,70,5,0,0,0,0,0,5,2,0,0,224,83,5,0,0,0,0,0,6,2,0,0,248,83,5,0,0,0,0,0,7,2,0,0,16,84,5,0,0,0,0,0,8,2,0,0,32,84,5,0,48,84,5,0,9,2,0,0,72,84,5,0,0,0,0,0,11,2,0,0,88,84,5,0,0,0,0,0,12,2,0,0,104,84,5,0,0,0,0,0,13,2,0,0,128,84,5,0,0,0,0,0,128,2,0,0,120,67,5,0,0,0,0,0,0,3,0,0,144,84,5,0,0,0,0,0,1,3,0,0,168,84,5,0,0,0,0,0,2,3,0,0,184,84,5,0,0,0,0,0,3,3,0,0,200,84,5,0,0,0,0,0,4,3,0,0,160,79,5,0,0,0,0,0,3,4,0,0,96,68,5,0,0,0,0,0,4,4,0,0,248,63,5,0,0,0,0,0,5,4,0,0,40,65,5,0,0,0,0,0,0,14,0,0,32,67,5,0,224,84,5,0,0,15,0,0,48,78,5,0,0,0,0,0,1,15,0,0,240,84,5,0,0,0,0,0,0,16,0,0,0,85,5,0,0,0,0,0,1,16,0,0,24,85,5,0,0,0,0,0,2,16,0,0,40,85,5,0,0,0,0,0,3,16,0,0,56,85,5,0,0,0,0,0,4,16,0,0,240,69,5,0,0,0,0,0,5,16,0,0,72,85,5,0,0,0,0,0,6,16,0,0,144,64,5,0,0,0,0,0,7,16,0,0,64,66,5,0,0,0,0,0,8,16,0,0,88,85,5,0,0,0,0,0,9,16,0,0,104,85,5,0,0,0,0,0,10,16,0,0,120,85,5,0,0,0,0,0,11,16,0,0,240,68,5,0,0,0,0,0,12,16,0,0,136,85,5,0,0,0,0,0,13,16,0,0,160,85,5,0,0,0,0,0,14,16,0,0,176,85,5,0,0,0,0,0,15,16,0,0,224,64,5,0,0,0,0,0,16,16,0,0,192,85,5,0,0,0,0,0,17,16,0,0,216,85,5,0,0,0,0,0,18,16,0,0,232,85,5,0,0,0,0,0,21,16,0,0,248,85,5,0,0,0,0,0,23,16,0,0,128,70,5,0,0,0,0,0,24,16,0,0,112,70,5,0,0,0,0,0,25,16,0,0,0,86,5,0,0,0,0,0,26,16,0,0,248,63,5,0,0,0,0,0,35,16,0,0,88,66,5,0,0,0,0,0,36,16,0,0,24,86,5,0,0,0,0,0,37,16,0,0,48,86,5,0,0,0,0,0,38,16,0,0,72,86,5,0,0,0,0,0,39,16,0,0,96,86,5,0,0,0,0,0,40,16,0,0,120,86,5,0,0,0,0,0,41,16,0,0,168,64,5,0,0,0,0,0,42,16,0,0,144,86,5,0,0,0,0,0,43,16,0,0,160,86,5,0,0,0,0,0,44,16,0,0,176,86,5,0,0,0,0,0,45,16,0,0,192,86,5,0,0,0,0,0,46,16,0,0,208,86,5,0,0,0,0,0,47,16,0,0,232,86,5,0,0,0,0,0,48,16,0,0,0,87,5,0,0,0,0,0,49,16,0,0,16,87,5,0,0,0,0,0,51,16,0,0,32,87,5,0,0,0,0,0,52,16,0,0,56,87,5,0,0,0,0,0,53,16,0,0,80,87,5,0,0,0,0,0,54,16,0,0,88,65,5,0,0,0,0,0,55,16,0,0,112,65,5,0,0,0,0,0,56,16,0,0,104,87,5,0,0,0,0,0,57,16,0,0,120,87,5,0,0,0,0,0,58,16,0,0,32,72,5,0,0,0,0,0,59,16,0,0,136,87,5,0,0,0,0,0,60,16,0,0,160,87,5,0,0,0,0,0,61,16,0,0,176,87,5,0,0,0,0,0,62,16,0,0,200,87,5,0,0,0,0,0,16,32,0,0,224,87,5,0,240,87,5,0,32,32,0,0,16,67,5,0,8,88,5,0,48,32,0,0,40,88,5,0,56,88,5,0,64,32,0,0,112,71,5,0,88,88,5,0,80,32,0,0,120,88,5,0,136,88,5,0,0,33,0,0,160,88,5,0,176,88,5,0,0,34,0,0,192,88,5,0,176,88,5,0,0,35,0,0,208,88,5,0,176,88,5,0,0,36,0,0,224,88,5,0,176,88,5,0,0,37,0,0,240,88,5,0,176,88,5,0,0,38,0,0,0,89,5,0,176,88,5,0,0,39,0,0,16,89,5,0,176,88,5,0,0,40,0,0,32,89,5,0,176,88,5,0,0,41,0,0,48,89,5,0,176,88,5,0,0,48,0,0,64,89,5,0,72,89,5,0,0,64,0,0,96,89,5,0,112,89,5,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,72,79,5,0,0,0,0,0,2,0,0,0,240,77,5,0,0,0,0,0,3,0,0,0,64,64,5,0,0,0,0,0,7,0,0,0,240,68,5,0,0,0,0,0,15,0,0,0,88,79,5,0,0,0,0,0,26,0,0,0,152,68,5,0,0,0,0,0,28,0,0,0,104,79,5,0,0,0,0,0,31,0,0,0,120,79,5,0,0,0,0,0,32,0,0,0,136,79,5,0,0,0,0,0,33,0,0,0,48,78,5,0,0,0,0,0,34,0,0,0,144,79,5,0,0,0,0,0,35,0,0,0,160,79,5,0,0,0,0,0,36,0,0,0,184,79,5,0,0,0,0,0,37,0,0,0,200,79,5,0,0,0,0,0,38,0,0,0,224,79,5,0,0,0,0,0,40,0,0,0,248,79,5,0,0,0,0,0,41,0,0,0,8,80,5,0,0,0,0,0,42,0,0,0,32,80,5,0,0,0,0,0,43,0,0,0,64,69,5,0,0,0,0,0,44,0,0,0,48,80,5,0,0,0,0,0,45,0,0,0,32,72,5,0,0,0,0,0,46,0,0,0,64,80,5,0,0,0,0,0,48,0,0,0,80,80,5,0,0,0,0,0,49,0,0,0,96,80,5,0,0,0,0,0,50,0,0,0,224,65,5,0,0,0,0,0,51,0,0,0,112,80,5,0,0,0,0,0,52,0,0,0,128,80,5,0,0,0,0,0,53,0,0,0,144,80,5,0,0,0,0,0,54,0,0,0,160,80,5,0,0,0,0,0,57,0,0,0,168,64,5,0,0,0,0,0,58,0,0,0,176,70,5,0,0,0,0,0,59,0,0,0,176,80,5,0,0,0,0,0,60,0,0,0,200,80,5,0,0,0,0,0,61,0,0,0,216,80,5,0,0,0,0,0,62,0,0,0,240,80,5,0,0,0,0,0,63,0,0,0,8,81,5,0,0,0,0,0,64,0,0,0,208,64,5,0,0,0,0,0,65,0,0,0,224,64,5,0,0,0,0,0,66,0,0,0,24,81,5,0,0,0,0,0,70,0,0,0,40,81,5,0,0,0,0,0,71,0,0,0,56,81,5,0,0,0,0,0,75,0,0,0,72,81,5,0,0,0,0,0,76,0,0,0,96,81,5,0,0,0,0,0,77,0,0,0,120,81,5,0,0,0,0,0,78,0,0,0,136,81,5,0,152,81,5,0,81,0,0,0,176,68,5,0,0,0,0,0,82,0,0,0,184,81,5,0,0,0,0,0,83,0,0,0,208,81,5,0,0,0,0,0,89,0,0,0,224,81,5,0,0,0,0,0,93,0,0,0,240,81,5,0,0,0,0,0,97,0,0,0,8,82,5,0,24,82,5,0,98,0,0,0,56,82,5,0,0,0,0,0,99,0,0,0,72,82,5,0,0,0,0,0,101,0,0,0,0,55,5,0,0,0,0,0,102,0,0,0,96,82,5,0,0,0,0,0,103,0,0,0,112,82,5,0,0,0,0,0,105,0,0,0,128,82,5,0,0,0,0,0,107,0,0,0,136,82,5,0,0,0,0,0,109,0,0,0,240,58,5,0,0,0,0,0,111,0,0,0,144,82,5,0,0,0,0,0,112,0,0,0,160,82,5,0,0,0,0,0,121,0,0,0,184,82,5,0,0,0,0,0,0,14,0,0,32,67,5,0,0,0,0,0,0,128,0,0,160,65,5,0,0,0,0,0,1,128,0,0,96,68,5,0,0,0,0,0,4,128,0,0,208,82,5,0,0,0,0,0,5,128,0,0,224,82,5,0,0,0,0,0,6,128,0,0,240,82,5,0,0,0,0,0,7,128,0,0,0,83,5,0,0,0,0,0,8,128,0,0,16,83,5,0,0,0,0,0,9,128,0,0,40,83,5,0,0,0,0,0,16,128,0,0,64,83,5,0,0,0,0,0,18,128,0,0,224,81,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,168,78,5,0,0,0,0,0,2,0,0,0,184,78,5,0,0,0,0,0,3,0,0,0,200,78,5,0,0,0,0,0,4,0,0,0,216,78,5,0,0,0,0,0,7,0,0,0,232,78,5,0,0,0,0,0,10,0,0,0,248,78,5,0,0,0,0,0,11,0,0,0,224,64,5,0,0,0,0,0,12,0,0,0,168,64,5,0,0,0,0,0,13,0,0,0,208,64,5,0,0,0,0,0,20,0,0,0,8,79,5,0,0,0,0,0,23,0,0,0,24,79,5,0,0,0,0,0,0,14,0,0,32,67,5,0,0,0,0,0,0,16,0,0,32,79,5,0,0,0,0,0,1,16,0,0,48,79,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,69,5,0,0,0,0,0,1,0,0,0,144,69,5,0,0,0,0,0,2,0,0,0,136,65,5,0,0,0,0,0,3,0,0,0,112,65,5,0,0,0,0,0,4,0,0,0,88,65,5,0,0,0,0,0,5,0,0,0,160,69,5,0,176,69,5,0,6,0,0,0,208,69,5,0,0,0,0,0,7,0,0,0,216,69,5,0,0,0,0,0,8,0,0,0,32,65,5,0,0,0,0,0,9,0,0,0,224,69,5,0,0,0,0,0,11,0,0,0,112,66,5,0,0,0,0,0,12,0,0,0,240,69,5,0,0,0,0,0,13,0,0,0,240,68,5,0,0,0,0,0,14,0,0,0,0,70,5,0,0,0,0,0,15,0,0,0,16,70,5,0,0,0,0,0,16,0,0,0,32,70,5,0,0,0,0,0,18,0,0,0,16,66,5,0,0,0,0,0,19,0,0,0,8,66,5,0,0,0,0,0,20,0,0,0,48,70,5,0,0,0,0,0,21,0,0,0,56,70,5,0,0,0,0,0,22,0,0,0,144,64,5,0,0,0,0,0,23,0,0,0,96,64,5,0,0,0,0,0,24,0,0,0,72,70,5,0,0,0,0,0,25,0,0,0,64,64,5,0,0,0,0,0,26,0,0,0,88,70,5,0,0,0,0,0,27,0,0,0,112,70,5,0,0,0,0,0,28,0,0,0,128,70,5,0,0,0,0,0,29,0,0,0,144,70,5,0,0,0,0,0,30,0,0,0,160,70,5,0,0,0,0,0,31,0,0,0,208,64,5,0,0,0,0,0,32,0,0,0,168,64,5,0,0,0,0,0,33,0,0,0,224,64,5,0,0,0,0,0,34,0,0,0,176,70,5,0,0,0,0,0,35,0,0,0,200,70,5,0,216,70,5,0,36,0,0,0,240,70,5,0,216,70,5,0,37,0,0,0,0,71,5,0,0,0,0,0,38,0,0,0,16,71,5,0,0,0,0,0,39,0,0,0,32,71,5,0,0,0,0,0,40,0,0,0,56,71,5,0,0,0,0,0,41,0,0,0,80,71,5,0,0,0,0,0,45,0,0,0,96,71,5,0,0,0,0,0,50,0,0,0,112,71,5,0,0,0,0,0,51,0,0,0,112,66,5,0,0,0,0,0,52,0,0,0,8,64,5,0,0,0,0,0,53,0,0,0,128,71,5,0,0,0,0,0,55,0,0,0,128,64,5,0,0,0,0,0,57,0,0,0,144,71,5,0,0,0,0,0,60,0,0,0,16,70,5,0,0,0,0,0,62,0,0,0,160,71,5,0,0,0,0,0,63,0,0,0,176,68,5,0,184,71,5,0,64,0,0,0,208,71,5,0,0,0,0,0,65,0,0,0,232,71,5,0,0,0,0,0,71,0,0,0,0,72,5,0,0,0,0,0,72,0,0,0,24,72,5,0,0,0,0,0,73,0,0,0,32,72,5,0,0,0,0,0,77,0,0,0,88,66,5,0,0,0,0,0,79,0,0,0,48,72,5,0,0,0,0,0,80,0,0,0,48,68,5,0,0,0,0,0,92,0,0,0,64,72,5,0,88,72,5,0,93,0,0,0,112,72,5,0,0,0,0,0,96,0,0,0,128,72,5,0,144,72,5,0,103,0,0,0,168,72,5,0,0,0,0,0,104,0,0,0,176,72,5,0,184,72,5,0,105,0,0,0,208,72,5,0,0,0,0,0,107,0,0,0,232,72,5,0,248,72,5,0,108,0,0,0,16,73,5,0,0,0,0,0,109,0,0,0,32,73,5,0,0,0,0,0,110,0,0,0,56,73,5,0,0,0,0,0,111,0,0,0,72,73,5,0,0,0,0,0,112,0,0,0,104,73,5,0,0,0,0,0,113,0,0,0,184,67,5,0,0,0,0,0,114,0,0,0,120,73,5,0,0,0,0,0,115,0,0,0,136,73,5,0,0,0,0,0,116,0,0,0,160,73,5,0,0,0,0,0,118,0,0,0,184,73,5,0,0,0,0,0,119,0,0,0,200,73,5,0,0,0,0,0,121,0,0,0,224,73,5,0,0,0,0,0,122,0,0,0,248,73,5,0,0,0,0,0,123,0,0,0,16,74,5,0,0,0,0,0,125,0,0,0,32,74,5,0,48,74,5,0,127,0,0,0,72,74,5,0,0,0,0,0,0,2,0,0,96,74,5,0,0,0,0,0,1,2,0,0,112,74,5,0,0,0,0,0,3,2,0,0,128,74,5,0,0,0,0,0,4,2,0,0,144,74,5,0,0,0,0,0,5,2,0,0,16,67,5,0,160,74,5,0,6,2,0,0,192,74,5,0,200,74,5,0,7,2,0,0,224,74,5,0,240,74,5,0,8,2,0,0,8,75,5,0,24,75,5,0,9,2,0,0,48],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+327681);allocate([75,5,0,0,0,0,0,10,2,0,0,72,75,5,0,0,0,0,0,11,2,0,0,96,75,5,0,0,0,0,0,13,2,0,0,128,75,5,0,0,0,0,0,14,2,0,0,152,75,5,0,0,0,0,0,15,2,0,0,176,75,5,0,0,0,0,0,16,2,0,0,200,75,5,0,0,0,0,0,17,2,0,0,224,75,5,0,0,0,0,0,18,2,0,0,0,76,5,0,0,0,0,0,19,2,0,0,32,76,5,0,0,0,0,0,20,2,0,0,64,76,5,0,0,0,0,0,21,2,0,0,88,76,5,0,104,76,5,0,22,2,0,0,128,76,5,0,144,76,5,0,27,2,0,0,168,76,5,0,0,0,0,0,31,2,0,0,184,76,5,0,192,76,5,0,34,2,0,0,216,76,5,0,232,76,5,0,36,2,0,0,0,77,5,0,16,77,5,0,38,2,0,0,248,67,5,0,40,77,5,0,39,2,0,0,64,77,5,0,72,77,5,0,40,2,0,0,96,77,5,0,112,77,5,0,41,2,0,0,248,63,5,0,0,0,0,0,42,2,0,0,136,77,5,0,152,77,5,0,43,2,0,0,176,77,5,0,192,77,5,0,46,2,0,0,216,77,5,0,0,0,0,0,47,2,0,0,224,77,5,0,0,0,0,0,48,2,0,0,240,77,5,0,0,0,0,0,49,2,0,0,0,78,5,0,0,0,0,0,53,2,0,0,24,78,5,0,0,0,0,0,254,3,0,0,48,78,5,0,0,0,0,0,2,4,0,0,64,78,5,0,0,0,0,0,3,4,0,0,80,78,5,0,0,0,0,0,0,14,0,0,32,67,5,0,0,0,0,0,0,16,0,0,96,78,5,0,0,0,0,0,1,16,0,0,120,78,5,0,0,0,0,0,0,32,0,0,144,78,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,32,65,5,0,0,0,0,0,4,1,0,0,88,66,5,0,0,0,0,0,5,1,0,0,232,66,5,0,0,0,0,0,18,1,0,0,248,66,5,0,0,0,0,0,20,1,0,0,16,67,5,0,0,0,0,0,21,1,0,0,64,64,5,0,0,0,0,0,0,14,0,0,32,67,5,0,0,0,0,0,0,16,0,0,40,67,5,0,0,0,0,0,1,16,0,0,56,67,5,0,0,0,0,0,2,16,0,0,80,67,5,0,0,0,0,0,3,16,0,0,104,67,5,0,0,0,0,0,1,32,0,0,120,67,5,0,0,0,0,0,4,32,0,0,168,64,5,0,0,0,0,0,5,32,0,0,208,64,5,0,0,0,0,0,6,32,0,0,224,64,5,0,0,0,0,0,7,32,0,0,136,67,5,0,0,0,0,0,8,32,0,0,152,67,5,0,0,0,0,0,9,32,0,0,184,67,5,0,0,0,0,0,10,32,0,0,208,67,5,0,0,0,0,0,11,32,0,0,216,67,5,0,0,0,0,0,0,48,0,0,248,67,5,0,0,0,0,0,0,176,0,0,192,65,5,0,0,0,0,0,1,176,0,0,8,68,5,0,0,0,0,0,32,176,0,0,24,68,5,0,0,0,0,0,33,176,0,0,48,68,5,0,0,0,0,0,34,176,0,0,72,68,5,0,0,0,0,0,35,176,0,0,96,68,5,0,0,0,0,0,36,176,0,0,112,68,5,0,0,0,0,0,37,176,0,0,128,68,5,0,0,0,0,0,38,176,0,0,152,68,5,0,0,0,0,0,39,176,0,0,176,68,5,0,0,0,0,0,40,176,0,0,192,68,5,0,0,0,0,0,41,176,0,0,224,65,5,0,0,0,0,0,43,176,0,0,216,68,5,0,0,0,0,0,44,176,0,0,136,65,5,0,0,0,0,0,64,176,0,0,232,68,5,0,0,0,0,0,65,176,0,0,80,64,5,0,0,0,0,0,66,176,0,0,240,68,5,0,0,0,0,0,67,176,0,0,40,64,5,0,0,0,0,0,68,176,0,0,0,69,5,0,0,0,0,0,71,176,0,0,16,69,5,0,0,0,0,0,72,176,0,0,32,69,5,0,0,0,0,0,73,176,0,0,48,69,5,0,0,0,0,0,74,176,0,0,64,69,5,0,0,0,0,0,75,176,0,0,80,69,5,0,0,0,0,0,78,176,0,0,152,67,5,0,0,0,0,0,79,176,0,0,128,68,5,0,0,0,0,0,82,176,0,0,96,69,5,0,0,0,0,0,84,176,0,0,112,69,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,248,63,5,0,0,0,0,0,3,0,0,0,8,64,5,0,0,0,0,0,4,0,0,0,24,64,5,0,0,0,0,0,5,0,0,0,40,64,5,0,0,0,0,0,6,0,0,0,48,64,5,0,0,0,0,0,7,0,0,0,64,64,5,0,0,0,0,0,8,0,0,0,80,64,5,0,0,0,0,0,9,0,0,0,96,64,5,0,0,0,0,0,10,0,0,0,112,64,5,0,0,0,0,0,11,0,0,0,128,64,5,0,0,0,0,0,12,0,0,0,144,64,5,0,0,0,0,0,13,0,0,0,168,64,5,0,0,0,0,0,14,0,0,0,184,64,5,0,0,0,0,0,15,0,0,0,192,64,5,0,0,0,0,0,16,0,0,0,208,64,5,0,0,0,0,0,17,0,0,0,224,64,5,0,0,0,0,0,18,0,0,0,240,64,5,0,0,0,0,0,20,0,0,0,0,65,5,0,0,0,0,0,21,0,0,0,16,65,5,0,0,0,0,0,22,0,0,0,32,65,5,0,0,0,0,0,23,0,0,0,40,65,5,0,0,0,0,0,24,0,0,0,56,65,5,0,0,0,0,0,25,0,0,0,72,65,5,0,0,0,0,0,26,0,0,0,128,66,5,0,0,0,0,0,27,0,0,0,160,66,5,0,0,0,0,0,28,0,0,0,88,65,5,0,0,0,0,0,29,0,0,0,112,65,5,0,0,0,0,0,31,0,0,0,160,65,5,0,0,0,0,0,38,0,0,0,192,65,5,0,0,0,0,0,44,0,0,0,224,65,5,0,0,0,0,0,48,0,0,0,208,65,5,0,0,0,0,0,72,0,0,0,240,65,5,0,0,0,0,0,73,0,0,0,8,66,5,0,0,0,0,0,74,0,0,0,16,66,5,0,0,0,0,0,75,0,0,0,32,66,5,0,0,0,0,0,77,0,0,0,184,66,5,0,0,0,0,0,85,0,0,0,64,66,5,0,0,0,0,0,86,0,0,0,88,66,5,0,0,0,0,0,87,0,0,0,216,66,5,0,0,0,0,0,88,0,0,0,64,64,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,248,63,5,0,0,0,0,0,3,0,0,0,8,64,5,0,0,0,0,0,4,0,0,0,24,64,5,0,0,0,0,0,5,0,0,0,40,64,5,0,0,0,0,0,6,0,0,0,48,64,5,0,0,0,0,0,7,0,0,0,64,64,5,0,0,0,0,0,8,0,0,0,80,64,5,0,0,0,0,0,9,0,0,0,96,64,5,0,0,0,0,0,10,0,0,0,112,64,5,0,0,0,0,0,11,0,0,0,128,64,5,0,0,0,0,0,12,0,0,0,144,64,5,0,0,0,0,0,13,0,0,0,168,64,5,0,0,0,0,0,14,0,0,0,184,64,5,0,0,0,0,0,15,0,0,0,192,64,5,0,0,0,0,0,16,0,0,0,208,64,5,0,0,0,0,0,17,0,0,0,224,64,5,0,0,0,0,0,18,0,0,0,240,64,5,0,0,0,0,0,20,0,0,0,0,65,5,0,0,0,0,0,21,0,0,0,16,65,5,0,0,0,0,0,22,0,0,0,32,65,5,0,0,0,0,0,23,0,0,0,40,65,5,0,0,0,0,0,24,0,0,0,56,65,5,0,0,0,0,0,25,0,0,0,72,65,5,0,0,0,0,0,26,0,0,0,88,65,5,0,0,0,0,0,27,0,0,0,112,65,5,0,0,0,0,0,28,0,0,0,136,65,5,0,0,0,0,0,29,0,0,0,160,65,5,0,0,0,0,0,31,0,0,0,184,65,5,0,0,0,0,0,34,0,0,0,192,65,5,0,0,0,0,0,36,0,0,0,208,65,5,0,0,0,0,0,44,0,0,0,224,65,5,0,0,0,0,0,48,0,0,0,240,65,5,0,0,0,0,0,49,0,0,0,8,66,5,0,0,0,0,0,50,0,0,0,16,66,5,0,0,0,0,0,51,0,0,0,32,66,5,0,0,0,0,0,52,0,0,0,48,66,5,0,0,0,0,0,53,0,0,0,144,64,5,0,0,0,0,0,57,0,0,0,64,66,5,0,0,0,0,0,58,0,0,0,88,66,5,0,0,0,0,0,59,0,0,0,40,65,5,0,0,0,0,0,60,0,0,0,64,64,5,0,0,0,0,0,61,0,0,0,112,66,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,64,54,5,0,96,54,5,0,3,2,0,0,128,54,5,0,152,54,5,0,4,2,0,0,176,54,5,0,208,54,5,0,5,2,0,0,240,54,5,0,0,55,5,0,7,2,0,0,8,55,5,0,24,55,5,0,8,2,0,0,40,55,5,0,56,55,5,0,10,2,0,0,80,55,5,0,80,55,5,0,12,2,0,0,88,55,5,0,112,55,5,0,15,2,0,0,136,55,5,0,136,55,5,0,20,2,0,0,152,55,5,0,176,55,5,0,22,2,0,0,200,55,5,0,224,55,5,0,25,2,0,0,248,55,5,0,248,55,5,0,26,2,0,0,8,56,5,0,32,56,5,0,27,2,0,0,56,56,5,0,80,56,5,0,30,2,0,0,104,56,5,0,120,56,5,0,35,2,0,0,136,56,5,0,152,56,5,0,37,2,0,0,168,56,5,0,184,56,5,0,38,2,0,0,200,56,5,0,216,56,5,0,40,2,0,0,232,56,5,0,0,57,5,0,42,2,0,0,16,57,5,0,32,57,5,0,45,2,0,0,48,57,5,0,72,57,5,0,47,2,0,0,96,57,5,0,112,57,5,0,50,2,0,0,128,57,5,0,144,57,5,0,55,2,0,0,168,57,5,0,184,57,5,0,60,2,0,0,200,57,5,0,216,57,5,0,62,2,0,0,232,57,5,0,0,58,5,0,63,2,0,0,24,58,5,0,48,58,5,0,65,2,0,0,72,58,5,0,96,58,5,0,70,2,0,0,120,58,5,0,136,58,5,0,75,2,0,0,152,58,5,0,168,58,5,0,80,2,0,0,184,58,5,0,192,58,5,0,85,2,0,0,200,58,5,0,216,58,5,0,90,2,0,0,240,58,5,0,240,58,5,0,92,2,0,0,248,58,5,0,8,59,5,0,95,2,0,0,24,59,5,0,40,59,5,0,100,2,0,0,56,59,5,0,88,59,5,0,101,2,0,0,104,59,5,0,136,59,5,0,103,2,0,0,152,59,5,0,184,59,5,0,105,2,0,0,208,59,5,0,208,59,5,0,110,2,0,0,224,59,5,0,224,59,5,0,115,2,0,0,232,59,5,0,232,59,5,0,116,2,0,0,240,59,5,0,0,60,5,0,118,2,0,0,24,60,5,0,24,60,5,0,120,2,0,0,32,60,5,0,56,60,5,0,122,2,0,0,64,60,5,0,80,60,5,0,125,2,0,0,96,60,5,0,120,60,5,0,130,2,0,0,144,60,5,0,160,60,5,0,131,2,0,0,176,60,5,0,200,60,5,0,135,2,0,0,224,60,5,0,248,60,5,0,150,2,0,0,16,61,5,0,32,61,5,0,151,2,0,0,48,61,5,0,72,61,5,0,152,2,0,0,96,61,5,0,120,61,5,0,153,2,0,0,152,61,5,0,168,61,5,0,154,2,0,0,184,61,5,0,200,61,5,0,184,2,0,0,216,61,5,0,224,61,5,0,185,2,0,0,232,61,5,0,0,62,5,0,186,2,0,0,24,62,5,0,40,62,5,0,187,2,0,0,64,62,5,0,88,62,5,0,188,2,0,0,112,62,5,0,120,62,5,0,200,2,0,0,136,62,5,0,160,62,5,0,201,2,0,0,192,62,5,0,224,62,5,0,202,2,0,0,0,63,5,0,200,61,5,0,221,2,0,0,24,63,5,0,32,63,5,0,225,2,0,0,64,63,5,0,80,63,5,0,228,2,0,0,96,63,5,0,112,63,5,0,230,2,0,0,136,63,5,0,152,63,5,0,231,2,0,0,168,63,5,0,184,63,5,0,232,2,0,0,208,63,5,0,224,63,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,131,0,0,160,53,5,0,0,0,0,0,128,132,0,0,176,53,5,0,0,0,0,0,130,132,0,0,208,53,5,0,0,0,0,0,215,133,0,0,224,53,5,0,0,0,0,0,216,133,0,0,248,53,5,0,0,0,0,0,175,135,0,0,16,54,5,0,0,0,0,0,176,135,0,0,32,54,5,0,0,0,0,0,177,135,0,0,48,54,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,104,52,5,0,120,52,5,0,2,0,0,0,136,52,5,0,152,52,5,0,3,0,0,0,168,52,5,0,184,52,5,0,4,0,0,0,200,52,5,0,208,52,5,0,1,16,0,0,216,52,5,0,232,52,5,0,2,16,0,0,248,52,5,0,8,53,5,0,3,16,0,0,24,53,5,0,40,53,5,0,4,16,0,0,64,53,5,0,64,53,5,0,5,16,0,0,80,53,5,0,96,53,5,0,6,16,0,0,120,53,5,0,136,53,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,97,103,32,48,120,37,48,52,88,0,0,0,0,0,0,76,111,103,105,99,97,108,87,105,100,116,104,0,0,0,0,76,111,103,105,99,97,108,32,119,105,100,116,104,0,0,0,76,111,103,105,99,97,108,72,101,105,103,104,116,0,0,0,76,111,103,105,99,97,108,32,104,101,105,103,104,116,0,0,71,108,111,98,97,108,80,97,108,101,116,116,101,0,0,0,71,108,111,98,97,108,32,80,97,108,101,116,116,101,0,0,76,111,111,112,0,0,0,0,108,111,111,112,0,0,0,0,70,114,97,109,101,76,101,102,116,0,0,0,0,0,0,0,70,114,97,109,101,32,108,101,102,116,0,0,0,0,0,0,70,114,97,109,101,84,111,112,0,0,0,0,0,0,0,0,70,114,97,109,101,32,116,111,112,0,0,0,0,0,0,0,78,111,76,111,99,97,108,80,97,108,101,116,116,101,0,0,78,111,32,76,111,99,97,108,32,80,97,108,101,116,116,101,0,0,0,0,0,0,0,0,73,110,116,101,114,108,97,99,101,100,0,0,0,0,0,0,70,114,97,109,101,84,105,109,101,0,0,0,0,0,0,0,70,114,97,109,101,32,100,105,115,112,108,97,121,32,116,105,109,101,0,0,0,0,0,0,68,105,115,112,111,115,97,108,77,101,116,104,111,100,0,0,70,114,97,109,101,32,100,105,115,112,111,115,97,108,32,109,101,116,104,111,100,0,0,0,71,101,111,80,105,120,101,108,83,99,97,108,101,0,0,0,73,110,116,101,114,103,114,97,112,104,32,84,114,97,110,115,102,111,114,109,97,116,105,111,110,77,97,116,114,105,120,0,71,101,111,84,105,101,80,111,105,110,116,115,0,0,0,0,74,80,76,32,67,97,114,116,111,32,73,70,68,32,111,102,102,115,101,116,0,0,0,0,71,101,111,84,114,97,110,115,102,111,114,109,97,116,105,111,110,77,97,116,114,105,120,0,71,101,111,75,101,121,68,105,114,101,99,116,111,114,121,0,71,101,111,68,111,117,98,108,101,80,97,114,97,109,115,0,71,101,111,65,83,67,73,73,80,97,114,97,109,115,0,0,65,112,112,108,105,99,97,116,105,111,110,82,101,99,111,114,100,86,101,114,115,105,111,110,0,0,0,0,0,0,0,0,65,112,112,108,105,99,97,116,105,111,110,32,82,101,99,111,114,100,32,86,101,114,115,105,111,110,0,0,0,0,0,0,79,98,106,101,99,116,84,121,112,101,82,101,102,101,114,101,110,99,101,0,0,0,0,0,79,98,106,101,99,116,32,84,121,112,101,32,82,101,102,101,114,101,110,99,101,0,0,0,79,98,106,101,99,116,65,116,116,114,105,98,117,116,101,82,101,102,101,114,101,110,99,101,0,0,0,0,0,0,0,0,79,98,106,101,99,116,32,65,116,116,114,105,98,117,116,101,32,82,101,102,101,114,101,110,99,101,0,0,0,0,0,0,79,98,106,101,99,116,78,97,109,101,0,0,0,0,0,0,84,105,116,108,101,0,0,0,69,100,105,116,83,116,97,116,117,115,0,0,0,0,0,0,69,100,105,116,32,83,116,97,116,117,115,0,0,0,0,0,69,100,105,116,111,114,105,97,108,85,112,100,97,116,101,0,69,100,105,116,111,114,105,97,108,32,85,112,100,97,116,101,0,0,0,0,0,0,0,0,85,114,103,101,110,99,121,0,83,117,98,106,101,99,116,82,101,102,101,114,101,110,99,101,0,0,0,0,0,0,0,0,83,117,98,106,101,99,116,32,82,101,102,101,114,101,110,99,101,0,0,0,0,0,0,0,67,97,116,101,103,111,114,121,0,0,0,0,0,0,0,0,83,117,112,112,108,101,109,101,110,116,97,108,67,97,116,101,103,111,114,105,101,115,0,0,83,117,112,112,108,101,109,101,110,116,97,108,32,67,97,116,101,103,111,114,105,101,115,0,70,105,120,116,117,114,101,73,100,101,110,116,105,102,105,101,114,0,0,0,0,0,0,0,70,105,120,116,117,114,101,32,73,100,101,110,116,105,102,105,101,114,0,0,0,0,0,0,75,101,121,119,111,114,100,115,0,0,0,0,0,0,0,0,67,111,110,116,101,110,116,76,111,99,97,116,105,111,110,67,111,100,101,0,0,0,0,0,67,111,110,116,101,110,116,32,76,111,99,97,116,105,111,110,32,67,111,100,101,0,0,0,67,111,110,116,101,110,116,76,111,99,97,116,105,111,110,78,97,109,101,0,0,0,0,0,67,111,110,116,101,110,116,32,76,111,99,97,116,105,111,110,32,78,97,109,101,0,0,0,82,101,108,101,97,115,101,68,97,116,101,0,0,0,0,0,82,101,108,101,97,115,101,32,68,97,116,101,0,0,0,0,82,101,108,101,97,115,101,84,105,109,101,0,0,0,0,0,82,101,108,101,97,115,101,32,84,105,109,101,0,0,0,0,69,120,112,105,114,97,116,105,111,110,68,97,116,101,0,0,69,120,112,105,114,97,116,105,111,110,32,68,97,116,101,0,69,120,112,105,114,97,116,105,111,110,84,105,109,101,0,0,69,120,112,105,114,97,116,105,111,110,32,84,105,109,101,0,83,112,101,99,105,97,108,73,110,115,116,114,117,99,116,105,111,110,115,0,0,0,0,0,73,110,115,116,114,117,99,116,105,111,110,115,0,0,0,0,65,99,116,105,111,110,65,100,118,105,115,101,100,0,0,0,65,99,116,105,111,110,32,65,100,118,105,115,101,100,0,0,82,101,102,101,114,101,110,99,101,83,101,114,118,105,99,101,0,0,0,0,0,0,0,0,82,101,102,101,114,101,110,99,101,32,83,101,114,118,105,99,101,0,0,0,0,0,0,0,82,101,102,101,114,101,110,99,101,68,97,116,101,0,0,0,82,101,102,101,114,101,110,99,101,32,68,97,116,101,0,0,82,101,102,101,114,101,110,99,101,78,117,109,98,101,114,0,82,101,102,101,114,101,110,99,101,32,78,117,109,98,101,114,0,0,0,0,0,0,0,0,68,97,116,101,67,114,101,97,116,101,100,0,0,0,0,0,68,97,116,101,32,67,114,101,97,116,101,100,0,0,0,0,84,105,109,101,67,114,101,97,116,101,100,0,0,0,0,0,84,105,109,101,32,67,114,101,97,116,101,100,0,0,0,0,68,105,103,105,116,97,108,67,114,101,97,116,105,111,110,68,97,116,101,0,0,0,0,0,68,105,103,105,116,97,108,32,67,114,101,97,116,105,111,110,32,68,97,116,101,0,0,0,68,105,103,105,116,97,108,67,114,101,97,116,105,111,110,84,105,109,101,0,0,0,0,0,68,105,103,105,116,97,108,32,67,114,101,97,116,105,111,110,32,84,105,109,101,0,0,0,79,114,105,103,105,110,97,116,105,110,103,80,114,111,103,114,97,109,0,0,0,0,0,0,79,114,105,103,105,110,97,116,105,110,103,32,80,114,111,103,114,97,109,0,0,0,0,0,80,114,111,103,114,97,109,86,101,114,115,105,111,110,0,0,80,114,111,103,114,97,109,32,86,101,114,115,105,111,110,0,79,98,106,101,99,116,67,121,99,108,101,0,0,0,0,0,79,98,106,101,99,116,32,67,121,99,108,101,0,0,0,0,66,121,45,108,105,110,101,0,65,117,116,104,111,114,0,0,66,121,45,108,105,110,101,84,105,116,108,101,0,0,0,0,65,117,116,104,111,114,39,115,32,80,111,115,105,116,105,111,110,0,0,0,0,0,0,0,67,105,116,121,0,0,0,0,83,117,98,76,111,99,97,116,105,111,110,0,0,0,0,0,83,117,98,45,76,111,99,97,116,105,111,110,0,0,0,0,80,114,111,118,105,110,99,101,45,83,116,97,116,101,0,0,83,116,97,116,101,47,80,114,111,118,105,110,99,101,0,0,67,111,117,110,116,114,121,45,80,114,105,109,97,114,121,76,111,99,97,116,105,111,110,67,111,100,101,0,0,0,0,0,67,111,117,110,116,114,121,32,67,111,100,101,0,0,0,0,67,111,117,110,116,114,121,45,80,114,105,109,97,114,121,76,111,99,97,116,105,111,110,78,97,109,101,0,0,0,0,0,67,111,117,110,116,114,121,32,78,97,109,101,0,0,0,0,79,114,105,103,105,110,97,108,84,114,97,110,115,109,105,115,115,105,111,110,82,101,102,101,114,101,110,99,101,0,0,0,84,114,97,110,115,109,105,115,115,105,111,110,32,82,101,102,101,114,101,110,99,101,0,0,72,101,97,100,108,105,110,101,0,0,0,0,0,0,0,0,67,114,101,100,105,116,0,0,83,111,117,114,99,101,0,0,67,111,112,121,114,105,103,104,116,78,111,116,105,99,101,0,67,111,112,121,114,105,103,104,116,32,78,111,116,105,99,101,0,0,0,0,0,0,0,0,67,111,110,116,97,99,116,0,67,97,112,116,105,111,110,45,65,98,115,116,114,97,99,116,0,0,0,0,0,0,0,0,67,97,112,116,105,111,110,0,87,114,105,116,101,114,45,69,100,105,116,111,114,0,0,0,67,97,112,116,105,111,110,32,87,114,105,116,101,114,0,0,82,97,115,116,101,114,105,122,101,100,67,97,112,116,105,111,110,0,0,0,0,0,0,0,82,97,115,116,101,114,105,122,101,100,32,67,97,112,116,105,111,110,0,0,0,0,0,0,73,109,97,103,101,84,121,112,101,0,0,0,0,0,0,0,73,109,97,103,101,32,84,121,112,101,0,0,0,0,0,0,73,109,97,103,101,79,114,105,101,110,116,97,116,105,111,110,0,0,0,0,0,0,0,0,73,109,97,103,101,32,79,114,105,101,110,116,97,116,105,111,110,0,0,0,0,0,0,0,76,97,110,103,117,97,103,101,73,100,101,110,116,105,102,105,101,114,0,0,0,0,0,0,76,97,110,103,117,97,103,101,32,73,100,101,110,116,105,102,105,101,114,0,0,0,0,0,65,117,100,105,111,84,121,112,101,0,0,0,0,0,0,0,65,117,100,105,111,32,84,121,112,101,0,0,0,0,0,0,65,117,100,105,111,83,97,109,112,108,105,110,103,82,97,116,101,0,0,0,0,0,0,0,65,117,100,105,111,32,83,97,109,112,108,105,110,103,32,82,97,116,101,0,0,0,0,0,65,117,100,105,111,83,97,109,112,108,105,110,103,82,101,115,111,108,117,116,105,111,110,0,65,117,100,105,111,32,83,97,109,112,108,105,110,103,32,82,101,115,111,108,117,116,105,111,110,0,0,0,0,0,0,0,65,117,100,105,111,68,117,114,97,116,105,111,110,0,0,0,65,117,100,105,111,32,68,117,114,97,116,105,111,110,0,0,65,117,100,105,111,79,117,116,99,117,101,0,0,0,0,0,65,117,100,105,111,32,79,117,116,99,117,101,0,0,0,0,74,111,98,73,68,0,0,0,74,111,98,32,73,68,0,0,77,97,115,116,101,114,68,111,99,117,109,101,110,116,73,68,0,0,0,0,0,0,0,0,77,97,115,116,101,114,32,68,111,99,117,109,101,110,116,32,73,68,0,0,0,0,0,0,83,104,111,114,116,68,111,99,117,109,101,110,116,73,68,0,83,104,111,114,116,32,68,111,99,117,109,101,110,116,32,73,68,0,0,0,0,0,0,0,85,110,105,113,117,101,68,111,99,117,109,101,110,116,73,68,0,0,0,0,0,0,0,0,85,110,105,113,117,101,32,68,111,99,117,109,101,110,116,32,73,68,0,0,0,0,0,0,79,119,110,101,114,73,68,0,79,119,110,101,114,32,73,68,0,0,0,0,0,0,0,0,79,98,106,101,99,116,80,114,101,118,105,101,119,70,105,108,101,70,111,114,109,97,116,0,79,98,106,101,99,116,32,80,114,101,118,105,101,119,32,70,105,108,101,32,70,111,114,109,97,116,0,0,0,0,0,0,79,98,106,101,99,116,80,114,101,118,105,101,119,70,105,108,101,86,101,114,115,105,111,110,0,0,0,0,0,0,0,0,79,98,106,101,99,116,32,80,114,101,118,105,101,119,32,70,105,108,101,32,86,101,114,115,105,111,110,0,0,0,0,0,79,98,106,101,99,116,80,114,101,118,105,101,119,68,97,116,97,0,0,0,0,0,0,0,80,114,101,102,115,0,0,0,80,104,111,116,111,77,101,99,104,97,110,105,99,32,112,114,101,102,101,114,101,110,99,101,115,0,0,0,0,0,0,0,67,108,97,115,115,105,102,121,83,116,97,116,101,0,0,0,67,108,97,115,115,105,102,121,32,83,116,97,116,101,0,0,83,105,109,105,108,97,114,105,116,121,73,110,100,101,120,0,83,105,109,105,108,97,114,105,116,121,32,73,110,100,101,120,0,0,0,0,0,0,0,0,68,111,99,117,109,101,110,116,78,111,116,101,115,0,0,0,68,111,99,117,109,101,110,116,32,78,111,116,101,115,0,0,68,111,99,117,109,101,110,116,72,105,115,116,111,114,121,0,68,111,99,117,109,101,110,116,32,72,105,115,116,111,114,121,0,0,0,0,0,0,0,0,69,120,105,102,67,97,109,101,114,97,73,110,102,111,0,0,69,120,105,102,32,67,97,109,101,114,97,32,73,110,102,111,0,0,0,0,0,0,0,0,83,101,114,105,97,108,78,117,109,98,101,114,0,0,0,0,68,114,105,118,101,77,111,100,101,0,0,0,0,0,0,0,82,101,115,111,108,117,116,105,111,110,77,111,100,101,0,0,65,70,77,111,100,101,0,0,70,111,99,117,115,83,101,116,116,105,110,103,0,0,0,0,87,104,105,116,101,66,97,108,97,110,99,101,0,0,0,0,69,120,112,111,115,117,114,101,77,111,100,101,0,0,0,0,77,101,116,101,114,105,110,103,77,111,100,101,0,0,0,0,76,101,110,115,70,111,99,97,108,82,97,110,103,101,0,0,67,111,108,111,114,83,112,97,99,101,0,0,0,0,0,0,69,120,112,111,115,117,114,101,67,111,109,112,101,110,115,97,116,105,111,110,0,0,0,0,67,111,110,116,114,97,115,116,0,0,0,0,0,0,0,0,83,104,97,100,111,119,0,0,72,105,103,104,108,105,103,104,116,0,0,0,0,0,0,0,83,97,116,117,114,97,116,105,111,110,0,0,0,0,0,0,83,104,97,114,112,110,101,115,115,0,0,0,0,0,0,0,88,51,70,105,108,108,76,105,103,104,116,0,0,0,0,0,67,111,108,111,114,65,100,106,117,115,116,109,101,110,116,0,65,100,106,117,115,116,109,101,110,116,77,111,100,101,0,0,81,117,97,108,105,116,121,0,70,105,114,109,119,97,114,101,0,0,0,0,0,0,0,0,83,111,102,116,119,97,114,101,0,0,0,0,0,0,0,0,65,117,116,111,66,114,97,99,107,101,116,0,0,0,0,0,80,114,101,118,105,101,119,73,109,97,103,101,83,116,97,114,116,0,0,0,0,0,0,0,80,114,101,118,105,101,119,73,109,97,103,101,76,101,110,103,116,104,0,0,0,0,0,0,80,114,101,118,105,101,119,73,109,97,103,101,83,105,122,101,0,0,0,0,0,0,0,0,77,97,107,101,114,78,111,116,101,86,101,114,115,105,111,110,0,0,0,0,0,0,0,0,65,70,80,111,105,110,116,0,70,105,108,101,70,111,114,109,97,116,0,0,0,0,0,0,67,97,108,105,98,114,97,116,105,111,110,0,0,0,0,0,67,111,108,111,114,77,111,100,101,0,0,0,0,0,0,0,76,101,110,115,65,112,101,114,116,117,114,101,82,97,110,103,101,0,0,0,0,0,0,0,70,78,117,109,98,101,114,0,69,120,112,111,115,117,114,101,84,105,109,101,0,0,0,0,69,120,112,111,115,117,114,101,84,105,109,101,50,0,0,0,66,117,114,115,116,83,104,111,116,0,0,0,0,0,0,0,83,101,110,115,111,114,84,101,109,112,101,114,97,116,117,114,101,0,0,0,0,0,0,0,70,108,97,115,104,69,120,112,111,115,117,114,101,67,111,109,112,0,0,0,0,0,0,0,80,105,99,116,117,114,101,77,111,100,101,0,0,0,0,0,67,104,114,111,109,105,110,97,110,99,101,78,111,105,115,101,82,101,100,117,99,116,105,111,110,0,0,0,0,0,0,0,76,117,109,105,110,97,110,99,101,78,111,105,115,101,82,101,100,117,99,116,105,111,110,0,69,120,112,111,115,117,114,101,67,111,109,112,101,110,115,97,116,105,111,110,95,83,68,49,0,0,0,0,0,0,0,0,70,105,114,109,119,97,114,101,95,83,68,49,0,0,0,0,84,101,108,101,99,111,110,118,101,114,116,101,114,0,0,0,87,104,105,116,101,66,97,108,97,110,99,101,70,105,110,101,84,117,110,101,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,0,0,80,114,105,110,116,73,77,0,77,117,108,116,105,66,117,114,115,116,77,111,100,101,0,0,77,117,108,116,105,66,117,114,115,116,73,109,97,103,101,87,105,100,116,104,0,0,0,0,77,117,108,116,105,66,117,114,115,116,73,109,97,103,101,72,101,105,103,104,116,0,0,0,80,97,110,111,114,97,109,97,0,0,0,0,0,0,0,0,80,114,101,118,105,101,119,73,109,97,103,101,0,0,0,0,66,114,105,103,104,116,110,101,115,115,0,0,0,0,0,0,76,111,110,103,69,120,112,111,115,117,114,101,78,111,105,115,101,82,101,100,117,99,116,105,111,110,0,0,0,0,0,0,72,105,103,104,73,83,79,78,111,105,115,101,82,101,100,117,99,116,105,111,110,0,0,0,72,68,82,0,0,0,0,0,77,117,108,116,105,70,114,97,109,101,78,111,105,115,101,82,101,100,117,99,116,105,111,110,0,0,0,0,0,0,0,0,83,104,111,116,73,110,102,111,0,0,0,0,0,0,0,0,83,111,110,121,77,111,100,101,108,73,68,0,0,0,0,0,67,111,108,111,114,82,101,112,114,111,100,117,99,116,105,111,110,0,0,0,0,0,0,0,67,111,108,111,114,84,101,109,112,101,114,97,116,117,114,101,0,0,0,0,0,0,0,0,67,111,108,111,114,67,111,109,112,101,110,115,97,116,105,111,110,70,105,108,116,101,114,0,83,99,101,110,101,77,111,100,101,0,0,0,0,0,0,0,90,111,110,101,77,97,116,99,104,105,110,103,0,0,0,0,68,121,110,97,109,105,99,82,97,110,103,101,79,112,116,105,109,105,122,101,114,0,0,0,73,109,97,103,101,83,116,97,98,105,108,105,122,97,116,105,111,110,0,0,0,0,0,0,76,101,110,115,84,121,112,101,0,0,0,0,0,0,0,0,77,105,110,111,108,116,97,77,97,107,101,114,78,111,116,101,0,0,0,0,0,0,0,0,70,117,108,108,73,109,97,103,101,83,105,122,101,0,0,0,77,97,99,114,111,0,0,0,70,111,99,117,115,77,111,100,101,0,0,0,0,0,0,0,65,70,73,108,108,117,109,105,110,97,116,111,114,0,0,0,81,117,97,108,105,116,121,50,0,0,0,0,0,0,0,0,70,108,97,115,104,76,101,118,101,108,0,0,0,0,0,0,82,101,108,101,97,115,101,77,111,100,101,0,0,0,0,0,83,101,113,117,101,110,99,101,78,117,109,98,101,114,0,0,65,110,116,105,45,66,108,117,114,0,0,0,0,0,0,0,73,110,116,101,108,108,105,103,101,110,116,65,117,116,111,0,87,104,105,116,101,66,97,108,97,110,99,101,50,0,0,0,80,101,110,116,97,120,86,101,114,115,105,111,110,0,0,0,80,101,110,116,97,120,77,111,100,101,0,0,0,0,0,0,80,101,110,116,97,120,77,111,100,101,108,73,68,0,0,0,80,101,110,116,97,120,32,80,101,110,116,97,120,77,111,100,101,108,73,68,32,86,97,108,117,101,115,0,0,0,0,0,68,97,116,101,0,0,0,0,84,105,109,101,0,0,0,0,80,101,110,116,97,120,73,109,97,103,101,83,105,122,101,0,70,108,97,115,104,77,111,100,101,0,0,0,0,0,0,0,65,70,80,111,105,110,116,83,101,108,101,99,116,101,100,0,65,70,80,111,105,110,116,115,73,110,70,111,99,117,115,0,70,111,99,117,115,80,111,115,105,116,105,111,110,0,0,0,73,83,79,0,0,0,0,0,76,105,103,104,116,82,101,97,100,105,110,103,0,0,0,0,65,117,116,111,66,114,97,99,107,101,116,105,110,103,0,0,87,104,105,116,101,66,97,108,97,110,99,101,77,111,100,101,0,0,0,0,0,0,0,0,66,108,117,101,66,97,108,97,110,99,101,0,0,0,0,0,82,101,100,66,97,108,97,110,99,101,0,0,0,0,0,0,70,111,99,97,108,76,101,110,103,116,104,0,0,0,0,0,68,105,103,105,116,97,108,90,111,111,109,0,0,0,0,0,87,111,114,108,100,84,105,109,101,76,111,99,97,116,105,111,110,0,0,0,0,0,0,0,72,111,109,101,116,111,119,110,67,105,116,121,0,0,0,0,80,101,110,116,97,120,32,67,105,116,121,32,86,97,108,117,101,115,0,0,0,0,0,0,68,101,115,116,105,110,97,116,105,111,110,67,105,116,121,0,72,111,109,101,116,111,119,110,68,83,84,0,0,0,0,0,68,101,115,116,105,110,97,116,105,111,110,68,83,84,0,0,68,83,80,70,105,114,109,119,97,114,101,86,101,114,115,105,111,110,0,0,0,0,0,0,67,80,85,70,105,114,109,119,97,114,101,86,101,114,115,105,111,110,0,0,0,0,0,0,70,114,97,109,101,78,117,109,98,101,114,0,0,0,0,0,69,102,102,101,99,116,105,118,101,76,86,0,0,0,0,0,73,109,97,103,101,80,114,111,99,101,115,115,105,110,103,0,83,101,110,115,111,114,83,105,122,101,0,0,0,0,0,0,82,97,119,73,109,97,103,101,83,105,122,101,0,0,0,0,80,114,101,118,105,101,119,73,109,97,103,101,66,111,114,100,101,114,115,0,0,0,0,0,80,101,110,116,97,120,32,76,101,110,115,84,121,112,101,32,86,97,108,117,101,115,0,0,83,101,110,115,105,116,105,118,105,116,121,65,100,106,117,115,116,0,0,0,0,0,0,0,73,109,97,103,101,80,114,111,99,101,115,115,105,110,103,67,111,117,110,116,0,0,0,0,67,97,109,101,114,97,84,101,109,112,101,114,97,116,117,114,101,0,0,0,0,0,0,0,65,69,76,111,99,107,0,0,78,111,105,115,101,82,101,100,117,99,116,105,111,110,0,0,73,109,97,103,101,84,111,110,101,0,0,0,0,0,0,0,83,104,97,107,101,82,101,100,117,99,116,105,111,110,73,110,102,111,0,0,0,0,0,0,80,101,110,116,97,120,32,83,82,73,110,102,111,32,84,97,103,115,0,0,0,0,0,0,83,104,117,116,116,101,114,67,111,117,110,116,0,0,0,0,70,97,99,101,73,110,102,111,0,0,0,0,0,0,0,0,80,101,110,116,97,120,32,70,97,99,101,73,110,102,111,32,84,97,103,115,0,0,0,0,72,117,101,0,0,0,0,0,65,87,66,73,110,102,111,0,80,101,110,116,97,120,32,65,87,66,73,110,102,111,32,84,97,103,115,0,0,0,0,0,68,121,110,97,109,105,99,82,97,110,103,101,69,120,112,97,110,115,105,111,110,0,0,0,84,105,109,101,73,110,102,111,0,0,0,0,0,0,0,0,80,101,110,116,97,120,32,84,105,109,101,73,110,102,111,32,84,97,103,115,0,0,0,0,72,105,103,104,76,111,119,75,101,121,65,100,106,0,0,0,67,111,110,116,114,97,115,116,72,105,103,104,108,105,103,104,116,0,0,0,0,0,0,0,67,111,110,116,114,97,115,116,83,104,97,100,111,119,0,0,67,111,110,116,114,97,115,116,72,105,103,104,108,105,103,104,116,83,104,97,100,111,119,65,100,106,0,0,0,0,0,0,70,105,110,101,83,104,97,114,112,110,101,115,115,0,0,0,65,70,65,100,106,117,115,116,109,101,110,116,0,0,0,0,77,111,110,111,99,104,114,111,109,101,70,105,108,116,101,114,69,102,102,101,99,116,0,0,77,111,110,111,99,104,114,111,109,101,84,111,110,105,110,103,0,0,0,0,0,0,0,0,70,97,99,101,68,101,116,101,99,116,0,0,0,0,0,0,70,97,99,101,68,101,116,101,99,116,70,114,97,109,101,83,105,122,101,0,0,0,0,0,83,104,97,100,111,119,67,111,109,112,101,110,115,97,116,105,111,110,0,0,0,0,0,0,73,83,79,65,117,116,111,80,97,114,97,109,101,116,101,114,115,0,0,0,0,0,0,0,67,114,111,115,115,80,114,111,99,101,115,115,0,0,0,0,76,101,110,115,67,111,114,114,0,0,0,0,0,0,0,0,80,101,110,116,97,120,32,76,101,110,115,67,111,114,114,32,84,97,103,115,0,0,0,0,66,108,101,97,99,104,66,121,112,97,115,115,84,111,110,105,110,103,0,0,0,0,0,0,66,108,97,99,107,80,111,105,110,116,0,0,0,0,0,0,87,104,105,116,101,80,111,105,110,116,0,0,0,0,0,0,67,111,108,111,114,77,97,116,114,105,120,65,0,0,0,0,67,111,108,111,114,77,97,116,114,105,120,66,0,0,0,0,80,101,110,116,97,120,32,67,97,109,101,114,97,83,101,116,116,105,110,103,115,32,84,97,103,115,0,0,0,0,0,0,65,69,73,110,102,111,0,0,80,101,110,116,97,120,32,65,69,73,110,102,111,32,84,97,103,115,0,0,0,0,0,0,76,101,110,115,73,110,102,111,0,0,0,0,0,0,0,0,80,101,110,116,97,120,32,76,101,110,115,73,110,102,111,32,84,97,103,115,0,0,0,0,70,108,97,115,104,73,110,102,111,0,0,0,0,0,0,0,80,101,110,116,97,120,32,70,108,97,115,104,73,110,102,111,32,84,97,103,115,0,0,0,65,69,77,101,116,101,114,105,110,103,83,101,103,109,101,110,116,115,0,0,0,0,0,0,70,108,97,115,104,77,101,116,101,114,105,110,103,83,101,103,109,101,110,116,115,0,0,0,83,108,97,118,101,70,108,97,115,104,77,101,116,101,114,105,110,103,83,101,103,109,101,110,116,115,0,0,0,0,0,0,87,66,95,82,71,71,66,76,101,118,101,108,115,68,97,121,108,105,103,104,116,0,0,0,87,66,95,82,71,71,66,76,101,118,101,108,115,83,104,97,100,101,0,0,0,0,0,0,87,66,95,82,71,71,66,76,101,118,101,108,115,67,108,111,117,100,121,0,0,0,0,0,87,66,95,82,71,71,66,76,101,118,101,108,115,84,117,110,103,115,116,101,110,0,0,0,87,66,95,82,71,71,66,76,101,118,101,108,115,70,108,117,111,114,101,115,99,101,110,116,68,0,0,0,0,0,0,0,87,66,95,82,71,71,66,76,101,118,101,108,115,70,108,117,111,114,101,115,99,101,110,116,78,0,0,0,0,0,0,0,87,66,95,82,71,71,66,76,101,118,101,108,115,70,108,117,111,114,101,115,99,101,110,116,87,0,0,0,0,0,0,0,87,66,95,82,71,71,66,76,101,118,101,108,115,70,108,97,115,104,0,0,0,0,0,0,67,97,109,101,114,97,73,110,102,111,0,0,0,0,0,0,80,101,110,116,97,120,32,67,97,109,101,114,97,73,110,102,111,32,84,97,103,115,0,0,66,97,116,116,101,114,121,73,110,102,111,0,0,0,0,0,80,101,110,116,97,120,32,66,97,116,116,101,114,121,73,110,102,111,32,84,97,103,115,0,83,97,116,117,114,97,116,105,111,110,73,110,102,111,0,0,65,70,73,110,102,111,0,0,80,101,110,116,97,120,32,65,70,73,110,102,111,32,84,97,103,115,0,0,0,0,0,0,67,111,108,111,114,73,110,102,111,0,0,0,0,0,0,0,80,101,110,116,97,120,32,67,111,108,111,114,73,110,102,111,32,84,97,103,115,0,0,0,69,86,83,116,101,112,73,110,102,111,0,0,0,0,0,0,80,101,110,116,97,120,32,69,86,83,116,101,112,73,110,102,111,32,84,97,103,115,0,0,80,101,110,116,97,120,32,83,104,111,116,73,110,102,111,32,84,97,103,115,0,0,0,0,70,97,99,101,80,111,115,0,80,101,110,116,97,120,32,70,97,99,101,80,111,115,32,84,97,103,115,0,0,0,0,0,70,97,99,101,83,105,122,101,0,0,0,0,0,0,0,0,80,101,110,116,97,120,32,70,97,99,101,83,105,122,101,32,84,97,103,115,0,0,0,0,70,105,108,116,101,114,73,110,102,111,0,0,0,0,0,0,80,101,110,116,97,120,32,70,105,108,116,101,114,73,110,102,111,32,84,97,103,115,0,0,76,101,118,101,108,73,110,102,111,0,0,0,0,0,0,0,80,101,110,116,97,120,32,76,101,118,101,108,73,110,102,111,32,84,97,103,115,0,0,0,65,114,116,105,115,116,0,0,67,111,112,121,114,105,103,104,116,0,0,0,0,0,0,0,70,105,114,109,119,97,114,101,86,101,114,115,105,111,110,0,67,111,110,116,114,97,115,116,68,101,116,101,99,116,65,70,65,114,101,97,0,0,0,0,67,114,111,115,115,80,114,111,99,101,115,115,80,97,114,97,109,115,0,0,0,0,0,0,68,97,116,97,68,117,109,112,0,0,0,0,0,0,0,0,84,111,110,101,67,117,114,118,101,0,0,0,0,0,0,0,84,111,110,101,67,117,114,118,101,115,0,0,0,0,0,0,72,111,109,101,116,111,119,110,67,105,116,121,67,111,100,101,0,0,0,0,0,0,0,0,68,101,115,116,105,110,97,116,105,111,110,67,105,116,121,67,111,100,101,0,0,0,0,0,80,114,101,118,105,101,119,73,109,97,103,101,68,97,116,97,0,0,0,0,0,0,0,0,67,97,112,116,117,114,101,32,77,111,100,101,0,0,0,0,81,117,97,108,105,116,121,32,76,101,118,101,108,0,0,0,70,111,99,117,115,32,77,111,100,101,0,0,0,0,0,0,70,108,97,115,104,32,77,111,100,101,0,0,0,0,0,0,87,104,105,116,101,32,66,97,108,97,110,99,101,0,0,0,68,105,103,105,116,97,108,32,90,111,111,109,0,0,0,0,73,83,79,32,83,112,101,101,100,0,0,0,0,0,0,0,67,111,108,111,114,0,0,0,84,105,109,101,32,90,111,110,101,0,0,0,0,0,0,0,68,97,121,108,105,103,104,116,32,83,97,118,105,110,103,115,0,0,0,0,0,0,0,0,73,109,97,103,101,81,117,97,108,105,116,121,0,0,0,0,65,70,65,114,101,97,77,111,100,101,0,0,0,0,0,0,77,97,99,114,111,77,111,100,101,0,0,0,0,0,0,0,83,104,111,111,116,105,110,103,77,111,100,101,0,0,0,0,65,117,100,105,111,0,0,0,69,97,115,121,77,111,100,101,0,0,0,0,0,0,0,0,87,104,105,116,101,66,97,108,97,110,99,101,66,105,97,115,0,0,0,0,0,0,0,0,70,108,97,115,104,66,105,97,115,0,0,0,0,0,0,0,73,110,116,101,114,110,97,108,83,101,114,105,97,108,78,117,109,98,101,114,0,0,0,0,80,97,110,97,115,111,110,105,99,69,120,105,102,86,101,114,115,105,111,110,0,0,0,0,67,111,108,111,114,69,102,102,101,99,116,0,0,0,0,0,84],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+337921);allocate([105,109,101,83,105,110,99,101,80,111,119,101,114,79,110,0,0,0,0,0,0,0,0,66,117,114,115,116,77,111,100,101,0,0,0,0,0,0,0,67,111,110,116,114,97,115,116,77,111,100,101,0,0,0,0,83,101,108,102,84,105,109,101,114,0,0,0,0,0,0,0,82,111,116,97,116,105,111,110,0,0,0,0,0,0,0,0,65,70,65,115,115,105,115,116,76,97,109,112,0,0,0,0,66,97,98,121,65,103,101,95,48,120,48,48,51,51,0,0,79,112,116,105,99,97,108,90,111,111,109,77,111,100,101,0,67,111,110,118,101,114,115,105,111,110,76,101,110,115,0,0,84,114,97,118,101,108,68,97,121,0,0,0,0,0,0,0,84,101,120,116,83,116,97,109,112,95,48,120,48,48,51,66,0,0,0,0,0,0,0,0,80,114,111,103,114,97,109,73,83,79,0,0,0,0,0,0,65,100,118,97,110,99,101,100,83,99,101,110,101,77,111,100,101,0,0,0,0,0,0,0,84,101,120,116,83,116,97,109,112,95,48,120,48,48,51,69,0,0,0,0,0,0,0,0,70,97,99,101,115,68,101,116,101,99,116,101,100,0,0,0,70,105,108,109,77,111,100,101,0,0,0,0,0,0,0,0,87,66,65,100,106,117,115,116,65,66,0,0,0,0,0,0,87,66,65,100,106,117,115,116,71,77,0,0,0,0,0,0,80,97,110,97,115,111,110,105,99,73,109,97,103,101,87,105,100,116,104,0,0,0,0,0,80,97,110,97,115,111,110,105,99,73,109,97,103,101,72,101,105,103,104,116,0,0,0,0,65,70,80,111,105,110,116,80,111,115,105,116,105,111,110,0,70,97,99,101,68,101,116,73,110,102,111,0,0,0,0,0,80,97,110,97,115,111,110,105,99,32,70,97,99,101,68,101,116,73,110,102,111,32,84,97,103,115,0,0,0,0,0,0,76,101,110,115,83,101,114,105,97,108,78,117,109,98,101,114,0,0,0,0,0,0,0,0,65,99,99,101,115,115,111,114,121,84,121,112,101,0,0,0,84,114,97,110,115,102,111,114,109,0,0,0,0,0,0,0,73,110,116,101,108,108,105,103,101,110,116,69,120,112,111,115,117,114,101,0,0,0,0,0,70,97,99,101,82,101,99,73,110,102,111,0,0,0,0,0,80,97,110,97,115,111,110,105,99,32,70,97,99,101,82,101,99,73,110,102,111,32,84,97,103,115,0,0,0,0,0,0,70,108,97,115,104,87,97,114,110,105,110,103,0,0,0,0,82,101,99,111,103,110,105,122,101,100,70,97,99,101,70,108,97,103,115,63,0,0,0,0,66,97,98,121,78,97,109,101,0,0,0,0,0,0,0,0,76,111,99,97,116,105,111,110,0,0,0,0,0,0,0,0,67,111,117,110,116,114,121,0,83,116,97,116,101,0,0,0,76,97,110,100,109,97,114,107,0,0,0,0,0,0,0,0,73,110,116,101,108,108,105,103,101,110,116,82,101,115,111,108,117,116,105,111,110,0,0,0,73,110,116,101,108,108,105,103,101,110,116,68,45,82,97,110,103,101,0,0,0,0,0,0,87,66,82,101,100,76,101,118,101,108,0,0,0,0,0,0,87,66,71,114,101,101,110,76,101,118,101,108,0,0,0,0,87,66,66,108,117,101,76,101,118,101,108,0,0,0,0,0,70,108,97,115,104,70,105,114,101,100,0,0,0,0,0,0,84,101,120,116,83,116,97,109,112,95,48,120,56,48,48,56,0,0,0,0,0,0,0,0,84,101,120,116,83,116,97,109,112,95,48,120,56,48,48,57,0,0,0,0,0,0,0,0,66,97,98,121,65,103,101,95,48,120,56,48,49,48,0,0,77,105,110,111,108,116,97,67,97,109,101,114,97,83,101,116,116,105,110,103,115,79,108,100,0,0,0,0,0,0,0,0,77,105,110,111,108,116,97,67,97,109,101,114,97,83,101,116,116,105,110,103,115,0,0,0,67,111,109,112,114,101,115,115,101,100,73,109,97,103,101,83,105,122,101,0,0,0,0,0,84,104,117,109,98,110,97,105,108,73,109,97,103,101,0,0,66,111,100,121,70,105,114,109,119,97,114,101,86,101,114,115,105,111,110,0,0,0,0,0,83,112,101,99,105,97,108,77,111,100,101,0,0,0,0,0,66,87,77,111,100,101,0,0,70,111,99,97,108,80,108,97,110,101,68,105,97,103,111,110,97,108,0,0,0,0,0,0,76,101,110,115,68,105,115,116,111,114,116,105,111,110,80,97,114,97,109,115,0,0,0,0,67,97,109,101,114,97,84,121,112,101,0,0,0,0,0,0,84,101,120,116,73,110,102,111,0,0,0,0,0,0,0,0,79,108,121,109,112,117,115,32,84,101,120,116,73,110,102,111,32,84,97,103,115,0,0,0,67,97,109,101,114,97,73,68,0,0,0,0,0,0,0,0,69,112,115,111,110,73,109,97,103,101,87,105,100,116,104,0,69,112,115,111,110,73,109,97,103,101,72,101,105,103,104,116,0,0,0,0,0,0,0,0,69,112,115,111,110,83,111,102,116,119,97,114,101,0,0,0,80,114,101,67,97,112,116,117,114,101,70,114,97,109,101,115,0,0,0,0,0,0,0,0,87,104,105,116,101,66,111,97,114,100,0,0,0,0,0,0,79,110,101,84,111,117,99,104,87,66,0,0,0,0,0,0,87,104,105,116,101,66,97,108,97,110,99,101,66,114,97,99,107,101,116,0,0,0,0,0,80,114,105,110,116,73,77,32,84,97,103,115,0,0,0,0,68,97,116,97,68,117,109,112,50,0,0,0,0,0,0,0,83,104,117,116,116,101,114,83,112,101,101,100,86,97,108,117,101,0,0,0,0,0,0,0,73,83,79,86,97,108,117,101,0,0,0,0,0,0,0,0,65,112,101,114,116,117,114,101,86,97,108,117,101,0,0,0,66,114,105,103,104,116,110,101,115,115,86,97,108,117,101,0,70,108,97,115,104,68,101,118,105,99,101,0,0,0,0,0,76,101,110,115,84,101,109,112,101,114,97,116,117,114,101,0,76,105,103,104,116,67,111,110,100,105,116,105,111,110,0,0,70,111,99,117,115,82,97,110,103,101,0,0,0,0,0,0,77,97,110,117,97,108,70,111,99,117,115,68,105,115,116,97,110,99,101,0,0,0,0,0,90,111,111,109,83,116,101,112,67,111,117,110,116,0,0,0,70,111,99,117,115,83,116,101,112,67,111,117,110,116,0,0,70,108,97,115,104,67,104,97,114,103,101,76,101,118,101,108,0,0,0,0,0,0,0,0,67,111,108,111,114,77,97,116,114,105,120,0,0,0,0,0,66,108,97,99,107,76,101,118,101,108,0,0,0,0,0,0,87,66,77,111,100,101,0,0,67,111,108,111,114,77,97,116,114,105,120,78,117,109,98,101,114,0,0,0,0,0,0,0,73,110,116,101,114,110,97,108,70,108,97,115,104,84,97,98,108,101,0,0,0,0,0,0,69,120,116,101,114,110,97,108,70,108,97,115,104,71,86,97,108,117,101,0,0,0,0,0,69,120,116,101,114,110,97,108,70,108,97,115,104,66,111,117,110,99,101,0,0,0,0,0,69,120,116,101,114,110,97,108,70,108,97,115,104,90,111,111,109,0,0,0,0,0,0,0,69,120,116,101,114,110,97,108,70,108,97,115,104,77,111,100,101,0,0,0,0,0,0,0,83,104,97,114,112,110,101,115,115,70,97,99,116,111,114,0,67,111,108,111,114,67,111,110,116,114,111,108,0,0,0,0,86,97,108,105,100,66,105,116,115,0,0,0,0,0,0,0,67,111,114,105,110,103,70,105,108,116,101,114,0,0,0,0,79,108,121,109,112,117,115,73,109,97,103,101,87,105,100,116,104,0,0,0,0,0,0,0,79,108,121,109,112,117,115,73,109,97,103,101,72,101,105,103,104,116,0,0,0,0,0,0,83,99,101,110,101,68,101,116,101,99,116,0,0,0,0,0,83,99,101,110,101,65,114,101,97,63,0,0,0,0,0,0,83,99,101,110,101,68,101,116,101,99,116,68,97,116,97,63,0,0,0,0,0,0,0,0,67,111,109,112,114,101,115,115,105,111,110,82,97,116,105,111,0,0,0,0,0,0,0,0,80,114,101,118,105,101,119,73,109,97,103,101,86,97,108,105,100,0,0,0,0,0,0,0,65,70,82,101,115,117,108,116,0,0,0,0,0,0,0,0,67,67,68,83,99,97,110,77,111,100,101,0,0,0,0,0,73,110,102,105,110,105,116,121,76,101,110,115,83,116,101,112,0,0,0,0,0,0,0,0,78,101,97,114,76,101,110,115,83,116,101,112,0,0,0,0,76,105,103,104,116,86,97,108,117,101,67,101,110,116,101,114,0,0,0,0,0,0,0,0,76,105,103,104,116,86,97,108,117,101,80,101,114,105,112,104,101,114,121,0,0,0,0,0,69,113,117,105,112,109,101,110,116,0,0,0,0,0,0,0,79,108,121,109,112,117,115,32,69,113,117,105,112,109,101,110,116,32,84,97,103,115,0,0,79,108,121,109,112,117,115,32,67,97,109,101,114,97,83,101,116,116,105,110,103,115,32,84,97,103,115,0,0,0,0,0,82,97,119,68,101,118,101,108,111,112,109,101,110,116,0,0,79,108,121,109,112,117,115,32,82,97,119,68,101,118,101,108,111,112,109,101,110,116,32,84,97,103,115,0,0,0,0,0,79,108,121,109,112,117,115,32,73,109,97,103,101,80,114,111,99,101,115,115,105,110,103,32,84,97,103,115,0,0,0,0,70,111,99,117,115,73,110,102,111,0,0,0,0,0,0,0,79,108,121,109,112,117,115,32,70,111,99,117,115,73,110,102,111,32,84,97,103,115,0,0,79,108,121,109,112,117,115,50,49,48,48,0,0,0,0,0,79,108,121,109,112,117,115,32,70,69,32,84,97,103,115,0,79,108,121,109,112,117,115,50,50,48,48,0,0,0,0,0,79,108,121,109,112,117,115,50,51,48,48,0,0,0,0,0,79,108,121,109,112,117,115,50,52,48,48,0,0,0,0,0,79,108,121,109,112,117,115,50,53,48,48,0,0,0,0,0,79,108,121,109,112,117,115,50,54,48,48,0,0,0,0,0,79,108,121,109,112,117,115,50,55,48,48,0,0,0,0,0,79,108,121,109,112,117,115,50,56,48,48,0,0,0,0,0,79,108,121,109,112,117,115,50,57,48,48,0,0,0,0,0,82,97,119,73,110,102,111,0,79,108,121,109,112,117,115,32,82,97,119,73,110,102,111,32,84,97,103,115,0,0,0,0,77,97,105,110,73,110,102,111,0,0,0,0,0,0,0,0,79,108,121,109,112,117,115,32,77,97,105,110,73,110,102,111,32,84,97,103,115,0,0,0,70,108,97,115,104,83,101,116,116,105,110,103,0,0,0,0,70,108,97,115,104,84,121,112,101,0,0,0,0,0,0,0,87,66,95,82,66,76,101,118,101,108,115,0,0,0,0,0,80,114,111,103,114,97,109,83,104,105,102,116,0,0,0,0,69,120,112,111,115,117,114,101,68,105,102,102,101,114,101,110,99,101,0,0,0,0,0,0,73,83,79,83,101,108,101,99,116,105,111,110,0,0,0,0,80,114,101,118,105,101,119,73,70,68,0,0,0,0,0,0,73,83,79,83,101,116,116,105,110,103,0,0,0,0,0,0,67,111,108,111,114,66,97,108,97,110,99,101,65,0,0,0,73,109,97,103,101,66,111,117,110,100,97,114,121,0,0,0,70,108,97,115,104,69,120,112,111,115,117,114,101,66,114,97,99,107,101,116,86,97,108,117,101,0,0,0,0,0,0,0,69,120,112,111,115,117,114,101,66,114,97,99,107,101,116,86,97,108,117,101,0,0,0,0,67,114,111,112,72,105,83,112,101,101,100,0,0,0,0,0,69,120,112,111,115,117,114,101,84,117,110,105,110,103,0,0,86,82,73,110,102,111,0,0,73,109,97,103,101,65,117,116,104,101,110,116,105,99,97,116,105,111,110,0,0,0,0,0,65,99,116,105,118,101,68,45,76,105,103,104,116,105,110,103,0,0,0,0,0,0,0,0,80,105,99,116,117,114,101,67,111,110,116,114,111,108,0,0,87,111,114,108,100,84,105,109,101,0,0,0,0,0,0,0,73,83,79,73,110,102,111,0,86,105,103,110,101,116,116,101,67,111,110,116,114,111,108,0,68,105,115,116,111,114,116,73,110,102,111,0,0,0,0,0,73,109,97,103,101,65,100,106,117,115,116,109,101,110,116,0,84,111,110,101,67,111,109,112,0,0,0,0,0,0,0,0,65,117,120,105,108,105,97,114,121,76,101,110,115,0,0,0,76,101,110,115,0,0,0,0,76,101,110,115,70,83,116,111,112,115,0,0,0,0,0,0,67,111,110,116,114,97,115,116,67,117,114,118,101,0,0,0,67,111,108,111,114,72,117,101,0,0,0,0,0,0,0,0,76,105,103,104,116,83,111,117,114,99,101,0,0,0,0,0,72,117,101,65,100,106,117,115,116,109,101,110,116,0,0,0,78,69,70,67,111,109,112,114,101,115,115,105,111,110,0,0,76,105,110,101,97,114,105,122,97,116,105,111,110,84,97,98,108,101,0,0,0,0,0,0,67,111,108,111,114,66,97,108,97,110,99,101,0,0,0,0,76,101,110,115,68,97,116,97,0,0,0,0,0,0,0,0,82,97,119,73,109,97,103,101,67,101,110,116,101,114,0,0,83,101,110,115,111,114,80,105,120,101,108,83,105,122,101,0,83,99,101,110,101,65,115,115,105,115,116,0,0,0,0,0,82,101,116,111,117,99,104,72,105,115,116,111,114,121,0,0,73,109,97,103,101,68,97,116,97,83,105,122,101,0,0,0,73,109,97,103,101,67,111,117,110,116,0,0,0,0,0,0,68,101,108,101,116,101,100,73,109,97,103,101,67,111,117,110,116,0,0,0,0,0,0,0,73,109,97,103,101,79,112,116,105,109,105,122,97,116,105,111,110,0,0,0,0,0,0,0,86,97,114,105,80,114,111,103,114,97,109,0,0,0,0,0,65,70,82,101,115,112,111,110,115,101,0,0,0,0,0,0,77,117,108,116,105,69,120,112,111,115,117,114,101,0,0,0,84,111,110,105,110,103,69,102,102,101,99,116,0,0,0,0,80,111,119,101,114,85,112,84,105,109,101,0,0,0,0,0,65,70,73,110,102,111,50,0,70,105,108,101,73,110,102,111,0,0,0,0,0,0,0,0,65,70,84,117,110,101,0,0,78,105,107,111,110,67,97,112,116,117,114,101,68,97,116,97,0,0,0,0,0,0,0,0,78,105,107,111,110,67,97,112,116,117,114,101,86,101,114,115,105,111,110,0,0,0,0,0,78,105,107,111,110,67,97,112,116,117,114,101,79,102,102,115,101,116,115,0,0,0,0,0,78,105,107,111,110,83,99,97,110,73,70,68,0,0,0,0,78,105,107,111,110,73,67,67,80,114,111,102,105,108,101,0,78,105,107,111,110,67,97,112,116,117,114,101,79,117,116,112,117,116,0,0,0,0,0,0,78,69,70,66,105,116,68,101,112,116,104,0,0,0,0,0,70,97,109,105,108,121,73,68,0,0,0,0,0,0,0,0,67,67,68,83,101,110,115,105,116,105,118,105,116,121,0,0,70,111,99,117,115,0,0,0,70,105,115,104,101,121,101,67,111,110,118,101,114,116,101,114,0,0,0,0,0,0,0,0,77,105,110,111,108,116,97,67,97,109,101,114,97,83,101,116,116,105,110,103,115,55,68,0,77,105,110,111,108,116,97,81,117,97,108,105,116,121,0,0,77,105,110,111,108,116,97,73,109,97,103,101,83,105,122,101,0,0,0,0,0,0,0,0,82,97,119,65,110,100,74,112,103,82,101,99,111,114,100,105,110,103,0,0,0,0,0,0,77,105,110,111,108,116,97,67,97,109,101,114,97,83,101,116,116,105,110,103,115,53,68,0,77,105,110,111,108,116,97,67,97,109,101,114,97,83,101,116,116,105,110,103,115,50,0,0,80,114,105,110,116,32,73,109,97,103,101,32,77,97,116,99,104,105,110,103,32,73,110,102,111,0,0,0,0,0,0,0,86,101,114,115,105,111,110,0,70,117,106,105,70,108,97,115,104,77,111,100,101,0,0,0,70,111,99,117,115,80,105,120,101,108,0,0,0,0,0,0,83,108,111,119,83,121,110,99,0,0,0,0,0,0,0,0,69,88,82,65,117,116,111,0,69,88,82,77,111,100,101,0,65,117,116,111,66,114,97,99,107,101,116,116,105,110,103,0,66,108,117,114,87,97,114,110,105,110,103,0,0,0,0,0,70,111,99,117,115,87,97,114,110,105,110,103,0,0,0,0,69,120,112,111,115,117,114,101,87,97,114,110,105,110,103,0,68,121,110,97,109,105,99,82,97,110,103,101,0,0,0,0,68,121,110,97,109,105,99,82,97,110,103,101,83,101,116,116,105,110,103,0,0,0,0,0,68,101,118,101,108,111,112,109,101,110,116,68,121,110,97,109,105,99,82,97,110,103,101,0,77,105,110,70,111,99,97,108,76,101,110,103,116,104,0,0,77,97,120,70,111,99,97,108,76,101,110,103,116,104,0,0,77,97,120,65,112,101,114,116,117,114,101,65,116,77,105,110,70,111,99,97,108,0,0,0,77,97,120,65,112,101,114,116,117,114,101,65,116,77,97,120,70,111,99,97,108,0,0,0,70,97,99,101,80,111,115,105,116,105,111,110,115,0,0,0,70,105,108,101,83,111,117,114,99,101,0,0,0,0,0,0,79,114,100,101,114,78,117,109,98,101,114,0,0,0,0,0,80,97,114,97,108,108,97,120,0,0,0,0,0,0,0,0,81,117,97,108,105,116,121,77,111,100,101,0,0,0,0,0,67,97,115,105,111,73,109,97,103,101,83,105,122,101,0,0,70,105,114,109,119,97,114,101,68,97,116,101,0,0,0,0,79,98,106,101,99,116,68,105,115,116,97,110,99,101,0,0,70,108,97,115,104,68,105,115,116,97,110,99,101,0,0,0,83,112,101,99,105,97,108,69,102,102,101,99,116,77,111,100,101,0,0,0,0,0,0,0,82,101,99,111,114,100,77,111,100,101,0,0,0,0,0,0,66,101,115,116,83,104,111,116,77,111,100,101,0,0,0,0,65,117,116,111,73,83,79,0,69,110,104,97,110,99,101,109,101,110,116,0,0,0,0,0,67,111,108,111,114,70,105,108,116,101,114,0,0,0,0,0,65,114,116,77,111,100,101,0,66,114,97,99,107,101,116,83,101,113,117,101,110,99,101,0,76,105,103,104,116,105,110,103,77,111,100,101,0,0,0,0,80,111,114,116,114,97,105,116,82,101,102,105,110,101,114,0,83,112,101,99,105,97,108,69,102,102,101,99,116,76,101,118,101,108,0,0,0,0,0,0,83,112,101,99,105,97,108,69,102,102,101,99,116,83,101,116,116,105,110,103,0,0,0,0,67,97,112,116,117,114,101,70,114,97,109,101,82,97,116,101,0,0,0,0,0,0,0,0,86,105,100,101,111,81,117,97,108,105,116,121,0,0,0,0,82,101,99,111,114,100,105,110,103,77,111,100,101,0,0,0,70,108,97,115,104,73,110,116,101,110,115,105,116,121,0,0,67,97,110,111,110,67,97,109,101,114,97,83,101,116,116,105,110,103,115,0,0,0,0,0,67,97,110,111,110,32,67,97,109,101,114,97,83,101,116,116,105,110,103,115,32,84,97,103,115,0,0,0,0,0,0,0,67,97,110,111,110,70,111,99,97,108,76,101,110,103,116,104,0,0,0,0,0,0,0,0,67,97,110,111,110,32,70,111,99,97,108,76,101,110,103,116,104,32,84,97,103,115,0,0,67,97,110,111,110,70,108,97,115,104,73,110,102,111,63,0,67,97,110,111,110,83,104,111,116,73,110,102,111,0,0,0,67,97,110,111,110,32,83,104,111,116,73,110,102,111,32,84,97,103,115,0,0,0,0,0,67,97,110,111,110,80,97,110,111,114,97,109,97,0,0,0,67,97,110,111,110,32,80,97,110,111,114,97,109,97,32,84,97,103,115,0,0,0,0,0,67,97,110,111,110,73,109,97,103,101,84,121,112,101,0,0,67,97,110,111,110,70,105,114,109,119,97,114,101,86,101,114,115,105,111,110,0,0,0,0,70,105,108,101,78,117,109,98,101,114,0,0,0,0,0,0,79,119,110,101,114,78,97,109,101,0,0,0,0,0,0,0,85,110,107,110,111,119,110,68,51,48,0,0,0,0,0,0,67,97,110,111,110,32,85,110,107,110,111,119,110,68,51,48,32,84,97,103,115,0,0,0,67,97,110,111,110,67,97,109,101,114,97,73,110,102,111,0,67,97,110,111,110,32,67,97,109,101,114,97,73,110,102,111,32,84,97,103,115,0,0,0,67,97,110,111,110,70,105,108,101,76,101,110,103,116,104,0,67,97,110,111,110,67,117,115,116,111,109,70,117,110,99,116,105,111,110,115,0,0,0,0,67,117,115,116,111,109,32,70,117,110,99,116,105,111,110,115,0,0,0,0,0,0,0,0,67,97,110,111,110,77,111,100,101,108,73,68,0,0,0,0,67,97,110,111,110,65,70,73,110,102,111,0,0,0,0,0,67,97,110,111,110,32,65,70,73,110,102,111,32,84,97,103,115,0,0,0,0,0,0,0,84,104,117,109,98,110,97,105,108,73,109,97,103,101,86,97,108,105,100,65,114,101,97,0,83,101,114,105,97,108,78,117,109,98,101,114,70,111,114,109,97,116,0,0,0,0,0,0,83,117,112,101,114,77,97,99,114,111,0,0,0,0,0,0,68,97,116,101,83,116,97,109,112,77,111,100,101,0,0,0,77,121,67,111,108,111,114,115,0,0,0,0,0,0,0,0,70,105,114,109,119,97,114,101,82,101,118,105,115,105,111,110,0,0,0,0,0,0,0,0,67,97,116,101,103,111,114,105,101,115,0,0,0,0,0,0,70,97,99,101,68,101,116,101,99,116,49,0,0,0,0,0,70,97,99,101,68,101,116,101,99,116,50,0,0,0,0,0,67,97,110,111,110,65,70,73,110,102,111,50,0,0,0,0,67,97,110,111,110,32,65,70,73,110,102,111,50,32,84,97,103,115,0,0,0,0,0,0,73,109,97,103,101,85,110,105,113,117,101,73,68,0,0,0,82,97,119,68,97,116,97,79,102,102,115,101,116,0,0,0,79,114,105,103,105,110,97,108,68,101,99,105,115,105,111,110,68,97,116,97,79,102,102,115,101,116,0,0,0,0,0,0,67,117,115,116,111,109,70,117,110,99,116,105,111,110,115,49,68,0,0,0,0,0,0,0,67,97,110,111,110,67,117,115,116,111,109,32,70,117,110,99,116,105,111,110,115,49,68,32,84,97,103,115,0,0,0,0,80,101,114,115,111,110,97,108,70,117,110,99,116,105,111,110,115,0,0,0,0,0,0,0,67,97,110,111,110,67,117,115,116,111,109,32,80,101,114,115,111,110,97,108,70,117,110,99,115,32,84,97,103,115,0,0,80,101,114,115,111,110,97,108,70,117,110,99,116,105,111,110,86,97,108,117,101,115,0,0,67,97,110,111,110,67,117,115,116,111,109,32,80,101,114,115,111,110,97,108,70,117,110,99,86,97,108,117,101,115,32,84,97,103,115,0,0,0,0,0,67,97,110,111,110,70,105,108,101,73,110,102,111,0,0,0,67,97,110,111,110,32,70,105,108,101,73,110,102,111,32,84,97,103,115,0,0,0,0,0,65,70,80,111,105,110,116,115,73,110,70,111,99,117,115,49,68,0,0,0,0,0,0,0,76,101,110,115,77,111,100,101,108,0,0,0,0,0,0,0,83,101,114,105,97,108,73,110,102,111,0,0,0,0,0,0,68,117,115,116,82,101,109,111,118,97,108,68,97,116,97,0,67,114,111,112,73,110,102,111,0,0,0,0,0,0,0,0,67,117,115,116,111,109,70,117,110,99,116,105,111,110,115,50,0,0,0,0,0,0,0,0,65,115,112,101,99,116,73,110,102,111,0,0,0,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,0,0,84,111,110,101,67,117,114,118,101,84,97,98,108,101,0,0,83,104,97,114,112,110,101,115,115,84,97,98,108,101,0,0,83,104,97,114,112,110,101,115,115,70,114,101,113,84,97,98,108,101,0,0,0,0,0,0,87,104,105,116,101,66,97,108,97,110,99,101,84,97,98,108,101,0,0,0,0,0,0,0,77,101,97,115,117,114,101,100,67,111,108,111,114,0,0,0,67,97,110,111,110,70,108,97,103,115,0,0,0,0,0,0,77,111,100,105,102,105,101,100,73,110,102,111,0,0,0,0,84,111,110,101,67,117,114,118,101,77,97,116,99,104,105,110,103,0,0,0,0,0,0,0,87,104,105,116,101,66,97,108,97,110,99,101,77,97,116,99,104,105,110,103,0,0,0,0,80,114,101,118,105,101,119,73,109,97,103,101,73,110,102,111,0,0,0,0,0,0,0,0,86,82,68,79,102,102,115,101,116,0,0,0,0,0,0,0,79,102,102,115,101,116,32,111,102,32,86,82,68,32,39,114,101,99,105,112,101,32,100,97,116,97,39,32,105,102,32,105,116,32,101,120,105,115,116,115,0,0,0,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,0,0,0,0,0,0,67,111,108,111,114,68,97,116,97,0,0,0,0,0,0,0,67,97,110,111,110,32,67,111,108,111,114,68,97,116,97,32,84,97,103,115,0,0,0,0,67,82,87,80,97,114,97,109,63,0,0,0,0,0,0,0,70,108,97,118,111,114,63,0,66,108,97,99,107,76,101,118,101,108,63,0,0,0,0,0,67,117,115,116,111,109,80,105,99,116,117,114,101,83,116,121,108,101,70,105,108,101,78,97,109,101,0,0,0,0,0,0,65,70,77,105,99,114,111,65,100,106,0,0,0,0,0,0,86,105,103,110,101,116,116,105,110,103,67,111,114,114,0,0,86,105,103,110,101,116,116,105,110,103,67,111,114,114,50,0,76,105,103,104,116,105,110,103,79,112,116,0,0,0,0,0,65,109,98,105,101,110,99,101,73,110,102,111,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,77,97,99,114,111,77,111,100,101,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,83,101,108,102,84,105,109,101,114,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,81,117,97,108,105,116,121,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,67,97,110,111,110,70,108,97,115,104,77,111,100,101,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,67,111,110,116,105,110,117,111,117,115,68,114,105,118,101,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,48,54,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,70,111,99,117,115,77,111,100,101,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,48,56,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,82,101,99,111,114,100,77,111,100,101,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,67,97,110,111,110,73,109,97,103,101,83,105,122,101,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,69,97,115,121,77,111,100,101,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,68,105,103,105,116,97,108,90,111,111,109,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,67,111,110,116,114,97,115,116,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,83,97,116,117,114,97,116,105,111,110,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,83,104,97,114,112,110,101,115,115,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,67,97,109,101,114,97,73,83,79,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,77,101,116,101,114,105,110,103,77,111,100,101,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,70,111,99,117,115,82,97,110,103,101,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,65,70,80,111,105,110,116,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,67,97,110,111,110,69,120,112,111,115,117,114,101,77,111,100,101,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,49,53,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,76,101,110,115,84,121,112,101,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,76,111,110,103,70,111,99,97,108,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,83,104,111,114,116,70,111,99,97,108,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,70,111,99,97,108,85,110,105,116,115,0,0,0,0,0,0,0,70,111,99,97,108,32,85,110,105,116,115,32,112,101,114,32,109,109,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,77,97,120,65,112,101,114,116,117,114,101,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,77,105,110,65,112,101,114,116,117,114,101,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,70,108,97,115,104,65,99,116,105,118,105,116,121,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,70,108,97,115,104,66,105,116,115,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,49,69,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,49,70,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,70,111,99,117,115,67,111,110,116,105,110,117,111,117,115,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,65,69,83,101,116,116,105,110,103,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,73,109,97,103,101,83,116,97,98,105,108,105,122,97,116,105,111,110,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,68,105,115,112,108,97,121,65,112,101,114,116,117,114,101,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,90,111,111,109,83,111,117,114,99,101,87,105,100,116,104,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,90,111,111,109,84,97,114,103,101,116,87,105,100,116,104,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,50,54,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,83,112,111,116,77,101,116,101,114,105,110,103,77,111,100,101,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,80,104,111,116,111,69,102,102,101,99,116,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,77,97,110,117,97,108,70,108,97,115,104,79,117,116,112,117,116,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,67,111,108,111,114,84,111,110,101,0,0,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,50,66,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,50,67,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,50,68,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,83,82,65,87,81,117,97,108,105,116,121,0,0,0,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,50,70,0,0,0,67,97,109,101,114,97,83,101,116,116,105,110,103,115,58,48,120,48,48,51,48,0,0,0,70,111,99,97,108,76,101,110,103,116,104,58,70,111,99,97,108,84,121,112,101,0,0,0,70,111,99,97,108,76,101,110,103,116,104,58,70,111,99,97,108,76,101,110,103,116,104,0,70,111,99,97,108,76,101,110,103,116,104,58,70,111,99,97,108,80,108,97,110,101,88,83,105,122,101,0,0,0,0,0,70,111,99,97,108,76,101,110,103,116,104,58,70,111,99,97,108,80,108,97,110,101,89,83,105,122,101,0,0,0,0,0,83,104,111,116,73,110,102,111,58,65,117,116,111,73,83,79,0,0,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,66,97,115,101,73,83,79,0,0,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,77,101,97,115,117,114,101,100,69,86,0,0,0,0,0,83,104,111,116,73,110,102,111,58,84,97,114,103,101,116,65,112,101,114,116,117,114,101,0,83,104,111,116,73,110,102,111,58,84,97,114,103,101,116,69,120,112,111,115,117,114,101,84,105,109,101,0,0,0,0,0,83,104,111,116,73,110,102,111,58,69,120,112,111,115,117,114,101,67,111,109,112,101,110,115,97,116,105,111,110,0,0,0,83,104,111,116,73,110,102,111,58,87,104,105,116,101,66,97,108,97,110,99,101,0,0,0,83,104,111,116,73,110,102,111,58,83,108,111,119,83,104,117,116,116,101,114,0,0,0,0,83,104,111,116,73,110,102,111,58,83,101,113,117,101,110,99,101,78,117,109,98,101,114,0,83,104,111,116,73,110,102,111,58,79,112,116,105,99,97,108,90,111,111,109,67,111,100,101,0,0,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,48,120,48,48,48,66,0,83,104,111,116,73,110,102,111,58,67,97,109,101,114,97,84,101,109,112,101,114,97,116,117,114,101,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,70,108,97,115,104,71,117,105,100,101,78,117,109,98,101,114,0,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,65,70,80,111,105,110,116,115,73,110,70,111,99,117,115,0,0,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,70,108,97,115,104,69,120,112,111,115,117,114,101,67,111,109,112,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,65,117,116,111,69,120,112,111,115,117,114,101,66,114,97,99,107,101,116,105,110,103,0,83,104,111,116,73,110,102,111,58,65,69,66,66,114,97,99,107,101,116,86,97,108,117,101,0,0,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,67,111,110,116,114,111,108,77,111,100,101,0,0,0,0,83,104,111,116,73,110,102,111,58,70,111,99,117,115,68,105,115,116,97,110,99,101,85,112,112,101,114,0,0,0,0,0,83,104,111,116,73,110,102,111,58,70,111,99,117,115,68,105,115,116,97,110,99,101,76,111,119,101,114,0,0,0,0,0,83,104,111,116,73,110,102,111,58,70,78,117,109,98,101,114,0,0,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,69,120,112,111,115,117,114,101,84,105,109,101,0,0,0,83,104,111,116,73,110,102,111,58,77,101,97,115,117,114,101,100,69,86,50,0,0,0,0,83,104,111,116,73,110,102,111,58,66,117,108,98,68,117,114,97,116,105,111,110,0,0,0,83,104,111,116,73,110,102,111,58,48,120,48,48,49,57,0,83,104,111,116,73,110,102,111,58,67,97,109,101,114,97,84,121,112,101,0,0,0,0,0,83,104,111,116,73,110,102,111,58,65,117,116,111,82,111,116,97,116,101,0,0,0,0,0,83,104,111,116,73,110,102,111,58,78,68,70,105,108,116,101,114,0,0,0,0,0,0,0,83,104,111,116,73,110,102,111,58,83,101,108,102,84,105,109,101,114,50,0,0,0,0,0,83,104,111,116,73,110,102,111,58,48,120,48,48,49,69,0,83,104,111,116,73,110,102,111,58,48,120,48,48,49,70,0,83,104,111,116,73,110,102,111,58,48,120,48,48,50,48,0,83,104,111,116,73,110,102,111,58,70,108,97,115,104,79,117,116,112,117,116,0,0,0,0,65,70,73,110,102,111,58,78,117,109,65,70,80,111,105,110,116,115,0,0,0,0,0,0,65,70,73,110,102,111,58,86,97,108,105,100,65,70,80,111,105,110,116,115,0,0,0,0,65,70,73,110,102,111,58,67,97,110,111,110,73,109,97,103,101,87,105,100,116,104,0,0,65,70,73,110,102,111,58,67,97,110,111,110,73,109,97,103,101,72,101,105,103,104,116,0,65,70,73,110,102,111,58,65,70,73,109,97,103,101,87,105,100,116,104,0,0,0,0,0,65,70,73,110,102,111,58,65,70,73,109,97,103,101,72,101,105,103,104,116,0,0,0,0,65,70,73,110,102,111,58,65,70,65,114,101,97,87,105,100,116,104,0,0,0,0,0,0,65,70,73,110,102,111,58,65,70,65,114,101,97,72,101,105,103,104,116,0,0,0,0,0,65,70,73,110,102,111,58,65,70,65,114,101,97,88,80,111,115,105,116,105,111,110,115,0,65,70,73,110,102,111,58,65,70,65,114,101,97,89,80,111,115,105,116,105,111,110,115,0,65,70,73,110,102,111,58,65,70,80,111,105,110,116,115,73,110,70,111,99,117,115,0,0,65,70,73,110,102,111,58,80,114,105,109,97,114,121,65,70,80,111,105,110,116,63,0,0,65,70,73,110,102,111,58,80,114,105,109,97,114,121,65,70,80,111,105,110,116,0,0,0,65,70,73,110,102,111,58,48,120,48,48,48,68,0,0,0,65,70,73,110,102,111,58,48,120,48,48,48,69,0,0,0,65,70,73,110,102,111,58,48,120,48,48,48,70,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,48,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,49,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,50,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,51,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,52,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,53,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,54,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,55,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,56,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,57,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,65,0,0,0,65,70,73,110,102,111,58,48,120,48,48,49,66,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,84,111,110,101,67,117,114,118,101,0,0,0,0,0,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,83,104,97,114,112,110,101,115,115,0,0,0,0,0,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,83,104,97,114,112,110,101,115,115,70,114,101,113,117,101,110,99,121,0,0,0,0,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,83,101,110,115,111,114,82,101,100,76,101,118,101,108,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,83,101,110,115,111,114,66,108,117,101,76,101,118,101,108,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,87,104,105,116,101,66,97,108,97,110,99,101,82,101,100,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,87,104,105,116,101,66,97,108,97,110,99,101,66,108,117,101,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,87,104,105,116,101,66,97,108,97,110,99,101,0,0,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,67,111,108,111,114,84,101,109,112,101,114,97,116,117,114,101,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,80,105,99,116,117,114,101,83,116,121,108,101,0,0,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,68,105,103,105,116,97,108,71,97,105,110,0,0,0,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,87,66,83,104,105,102,116,65,66,0,0,0,0,0,0,0,0,80,114,111,99,101,115,115,105,110,103,73,110,102,111,58,87,66,83,104,105,102,116,71,77,0,0,0,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,83,101,110,115,111,114,87,105,100,116,104,0,0,83,101,110,115,111,114,73,110,102,111,58,83,101,110,115,111,114,72,101,105,103,104,116,0,83,101,110,115,111,114,73,110,102,111,58,48,120,48,48,48,51,0,0,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,48,120,48,48,48,52,0,0,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,83,101,110,115,111,114,76,101,102,116,66,111,114,100,101,114,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,83,101,110,115,111,114,84,111,112,66,111,114,100,101,114,0,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,83,101,110,115,111,114,82,105,103,104,116,66,111,114,100,101,114,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,83,101,110,115,111,114,66,111,116,116,111,109,66,111,114,100,101,114,0,0,0,83,101,110,115,111,114,73,110,102,111,58,66,108,97,99,107,77,97,115,107,76,101,102,116,66,111,114,100,101,114,0,0,83,101,110,115,111,114,73,110,102,111,58,66,108,97,99,107,77,97,115,107,84,111,112,66,111,114,100,101,114,0,0,0,83,101,110,115,111,114,73,110,102,111,58,66,108,97,99,107,77,97,115,107,82,105,103,104,116,66,111,114,100,101,114,0,83,101,110,115,111,114,73,110,102,111,58,66,108,97,99,107,77,97,115,107,66,111,116,116,111,109,66,111,114,100,101,114,0,0,0,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,48,120,48,48,48,68,0,0,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,48,120,48,48,48,69,0,0,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,48,120,48,48,48,70,0,0,0,0,0,0,0,83,101,110,115,111,114,73,110,102,111,58,48,120,48,48,49,48,0,0,0,0,0,0,0,73,110,116,101,114,111,112,101,114,97,98,105,108,105,116,121,73,110,100,101,120,0,0,0,73,110,116,101,114,111,112,101,114,97,98,105,108,105,116,121,32,73,100,101,110,116,105,102,105,99,97,116,105,111,110,0,73,110,116,101,114,111,112,101,114,97,98,105,108,105,116,121,86,101,114,115,105,111,110,0,73,110,116,101,114,111,112,101,114,97,98,105,108,105,116,121,32,118,101,114,115,105,111,110,0,0,0,0,0,0,0,0,82,101,108,97,116,101,100,73,109,97,103,101,70,105,108,101,70,111,114,109,97,116,0,0,70,105,108,101,32,102,111,114,109,97,116,32,111,102,32,105,109,97,103,101,32,102,105,108,101,0,0,0,0,0,0,0,82,101,108,97,116,101,100,73,109,97,103,101,87,105,100,116,104,0,0,0,0,0,0,0,73,109,97,103,101,32,119,105,100,116,104,0,0,0,0,0,82,101,108,97,116,101,100,73,109,97,103,101,76,101,110,103,116,104,0,0,0,0,0,0,73,109,97,103,101,32,104,101,105,103,104,116,0,0,0,0,71,80,83,86,101,114,115,105,111,110,73,68,0,0,0,0,71,80,83,32,116,97,103,32,118,101,114,115,105,111,110,0,71,80,83,76,97,116,105,116,117,100,101,82,101,102,0,0,78,111,114,116,104,32,111,114,32,83,111,117,116,104,32,76,97,116,105,116,117,100,101,0,71,80,83,76,97,116,105,116,117,100,101,0,0,0,0,0,76,97,116,105,116,117,100,101,0,0,0,0,0,0,0,0,71,80,83,76,111,110,103,105,116,117,100,101,82,101,102,0,69,97,115,116,32,111,114,32,87,101,115,116,32,76,111,110,103,105,116,117,100,101,0,0,71,80,83,76,111,110,103,105,116,117,100,101,0,0,0,0,76,111,110,103,105,116,117,100,101,0,0,0,0,0,0,0,71,80,83,65,108,116,105,116,117,100,101,82,101,102,0,0,65,108,116,105,116,117,100,101,32,114,101,102,101,114,101,110,99,101,0,0,0,0,0,0,71,80,83,65,108,116,105,116,117],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+348161);allocate([100,101,0,0,0,0,0,65,108,116,105,116,117,100,101,0,0,0,0,0,0,0,0,71,80,83,84,105,109,101,83,116,97,109,112,0,0,0,0,71,80,83,32,116,105,109,101,32,40,97,116,111,109,105,99,32,99,108,111,99,107,41,0,71,80,83,83,97,116,101,108,108,105,116,101,115,0,0,0,71,80,83,32,115,97,116,101,108,108,105,116,101,115,32,117,115,101,100,32,102,111,114,32,109,101,97,115,117,114,101,109,101,110,116,0,0,0,0,0,71,80,83,83,116,97,116,117,115,0,0,0,0,0,0,0,71,80,83,32,114,101,99,101,105,118,101,114,32,115,116,97,116,117,115,0,0,0,0,0,71,80,83,77,101,97,115,117,114,101,77,111,100,101,0,0,71,80,83,32,109,101,97,115,117,114,101,109,101,110,116,32,109,111,100,101,0,0,0,0,71,80,83,68,79,80,0,0,77,101,97,115,117,114,101,109,101,110,116,32,112,114,101,99,105,115,105,111,110,0,0,0,71,80,83,83,112,101,101,100,82,101,102,0,0,0,0,0,83,112,101,101,100,32,117,110,105,116,0,0,0,0,0,0,71,80,83,83,112,101,101,100,0,0,0,0,0,0,0,0,83,112,101,101,100,32,111,102,32,71,80,83,32,114,101,99,101,105,118,101,114,0,0,0,71,80,83,84,114,97,99,107,82,101,102,0,0,0,0,0,82,101,102,101,114,101,110,99,101,32,102,111,114,32,100,105,114,101,99,116,105,111,110,32,111,102,32,109,111,118,101,109,101,110,116,0,0,0,0,0,71,80,83,84,114,97,99,107,0,0,0,0,0,0,0,0,68,105,114,101,99,116,105,111,110,32,111,102,32,109,111,118,101,109,101,110,116,0,0,0,71,80,83,73,109,103,68,105,114,101,99,116,105,111,110,82,101,102,0,0,0,0,0,0,82,101,102,101,114,101,110,99,101,32,102,111,114,32,100,105,114,101,99,116,105,111,110,32,111,102,32,105,109,97,103,101,0,0,0,0,0,0,0,0,71,80,83,73,109,103,68,105,114,101,99,116,105,111,110,0,68,105,114,101,99,116,105,111,110,32,111,102,32,105,109,97,103,101,0,0,0,0,0,0,71,80,83,77,97,112,68,97,116,117,109,0,0,0,0,0,71,101,111,100,101,116,105,99,32,115,117,114,118,101,121,32,100,97,116,97,32,117,115,101,100,0,0,0,0,0,0,0,71,80,83,68,101,115,116,76,97,116,105,116,117,100,101,82,101,102,0,0,0,0,0,0,82,101,102,101,114,101,110,99,101,32,102,111,114,32,108,97,116,105,116,117,100,101,32,111,102,32,100,101,115,116,105,110,97,116,105,111,110,0,0,0,71,80,83,68,101,115,116,76,97,116,105,116,117,100,101,0,76,97,116,105,116,117,100,101,32,111,102,32,100,101,115,116,105,110,97,116,105,111,110,0,71,80,83,68,101,115,116,76,111,110,103,105,116,117,100,101,82,101,102,0,0,0,0,0,82,101,102,101,114,101,110,99,101,32,102,111,114,32,108,111,110,103,105,116,117,100,101,32,111,102,32,100,101,115,116,105,110,97,116,105,111,110,0,0,71,80,83,68,101,115,116,76,111,110,103,105,116,117,100,101,0,0,0,0,0,0,0,0,76,111,110,103,105,116,117,100,101,32,111,102,32,100,101,115,116,105,110,97,116,105,111,110,0,0,0,0,0,0,0,0,71,80,83,68,101,115,116,66,101,97,114,105,110,103,82,101,102,0,0,0,0,0,0,0,82,101,102,101,114,101,110,99,101,32,102,111,114,32,98,101,97,114,105,110,103,32,111,102,32,100,101,115,116,105,110,97,116,105,111,110,0,0,0,0,71,80,83,68,101,115,116,66,101,97,114,105,110,103,0,0,66,101,97,114,105,110,103,32,111,102,32,100,101,115,116,105,110,97,116,105,111,110,0,0,71,80,83,68,101,115,116,68,105,115,116,97,110,99,101,82,101,102,0,0,0,0,0,0,82,101,102,101,114,101,110,99,101,32,102,111,114,32,100,105,115,116,97,110,99,101,32,116,111,32,100,101,115,116,105,110,97,116,105,111,110,0,0,0,71,80,83,68,101,115,116,68,105,115,116,97,110,99,101,0,68,105,115,116,97,110,99,101,32,116,111,32,100,101,115,116,105,110,97,116,105,111,110,0,71,80,83,80,114,111,99,101,115,115,105,110,103,77,101,116,104,111,100,0,0,0,0,0,78,97,109,101,32,111,102,32,71,80,83,32,112,114,111,99,101,115,115,105,110,103,32,109,101,116,104,111,100,0,0,0,71,80,83,65,114,101,97,73,110,102,111,114,109,97,116,105,111,110,0,0,0,0,0,0,78,97,109,101,32,111,102,32,71,80,83,32,97,114,101,97,0,0,0,0,0,0,0,0,71,80,83,68,97,116,101,83,116,97,109,112,0,0,0,0,71,80,83,32,100,97,116,101,0,0,0,0,0,0,0,0,71,80,83,68,105,102,102,101,114,101,110,116,105,97,108,0,71,80,83,32,100,105,102,102,101,114,101,110,116,105,97,108,32,99,111,114,114,101,99,116,105,111,110,0,0,0,0,0,73,109,97,103,101,87,105,100,116,104,0,0,0,0,0,0,73,109,97,103,101,76,101,110,103,116,104,0,0,0,0,0,66,105,116,115,80,101,114,83,97,109,112,108,101,0,0,0,78,117,109,98,101,114,32,111,102,32,98,105,116,115,32,112,101,114,32,99,111,109,112,111,110,101,110,116,0,0,0,0,67,111,109,112,114,101,115,115,105,111,110,0,0,0,0,0,67,111,109,112,114,101,115,115,105,111,110,32,115,99,104,101,109,101,0,0,0,0,0,0,80,104,111,116,111,109,101,116,114,105,99,73,110,116,101,114,112,114,101,116,97,116,105,111,110,0,0,0,0,0,0,0,80,105,120,101,108,32,99,111,109,112,111,115,105,116,105,111,110,0,0,0,0,0,0,0,70,105,108,108,79,114,100,101,114,0,0,0,0,0,0,0,68,111,99,117,109,101,110,116,78,97,109,101,0,0,0,0,73,109,97,103,101,68,101,115,99,114,105,112,116,105,111,110,0,0,0,0,0,0,0,0,73,109,97,103,101,32,116,105,116,108,101,0,0,0,0,0,77,97,107,101,0,0,0,0,73,109,97,103,101,32,105,110,112,117,116,32,101,113,117,105,112,109,101,110,116,32,109,97,110,117,102,97,99,116,117,114,101,114,0,0,0,0,0,0,77,111,100,101,108,0,0,0,73,109,97,103,101,32,105,110,112,117,116,32,101,113,117,105,112,109,101,110,116,32,109,111,100,101,108,0,0,0,0,0,83,116,114,105,112,79,102,102,115,101,116,115,0,0,0,0,73,109,97,103,101,32,100,97,116,97,32,108,111,99,97,116,105,111,110,0,0,0,0,0,79,114,105,101,110,116,97,116,105,111,110,0,0,0,0,0,79,114,105,101,110,116,97,116,105,111,110,32,111,102,32,105,109,97,103,101,0,0,0,0,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,0,78,117,109,98,101,114,32,111,102,32,99,111,109,112,111,110,101,110,116,115,0,0,0,0,82,111,119,115,80,101,114,83,116,114,105,112,0,0,0,0,78,117,109,98,101,114,32,111,102,32,114,111,119,115,32,112,101,114,32,115,116,114,105,112,0,0,0,0,0,0,0,0,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,0,66,121,116,101,115,32,112,101,114,32,99,111,109,112,114,101,115,115,101,100,32,115,116,114,105,112,0,0,0,0,0,0,88,82,101,115,111,108,117,116,105,111,110,0,0,0,0,0,73,109,97,103,101,32,114,101,115,111,108,117,116,105,111,110,32,105,110,32,119,105,100,116,104,32,100,105,114,101,99,116,105,111,110,0,0,0,0,0,89,82,101,115,111,108,117,116,105,111,110,0,0,0,0,0,73,109,97,103,101,32,114,101,115,111,108,117,116,105,111,110,32,105,110,32,104,101,105,103,104,116,32,100,105,114,101,99,116,105,111,110,0,0,0,0,80,108,97,110,97,114,67,111,110,102,105,103,117,114,97,116,105,111,110,0,0,0,0,0,73,109,97,103,101,32,100,97,116,97,32,97,114,114,97,110,103,101,109,101,110,116,0,0,80,97,103,101,78,97,109,101,0,0,0,0,0,0,0,0,78,97,109,101,32,111,102,32,116,104,101,32,112,97,103,101,0,0,0,0,0,0,0,0,88,80,111,115,105,116,105,111,110,0,0,0,0,0,0,0,88,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,105,109,97,103,101,0,89,80,111,115,105,116,105,111,110,0,0,0,0,0,0,0,89,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,105,109,97,103,101,0,82,101,115,111,108,117,116,105,111,110,85,110,105,116,0,0,85,110,105,116,32,111,102,32,88,32,97,110,100,32,89,32,114,101,115,111,108,117,116,105,111,110,0,0,0,0,0,0,80,97,103,101,78,117,109,98,101,114,0,0,0,0,0,0,80,97,103,101,32,110,117,109,98,101,114,0,0,0,0,0,84,114,97,110,115,102,101,114,70,117,110,99,116,105,111,110,0,0,0,0,0,0,0,0,84,114,97,110,115,102,101,114,32,102,117,110,99,116,105,111,110,0,0,0,0,0,0,0,83,111,102,116,119,97,114,101,32,117,115,101,100,0,0,0,68,97,116,101,84,105,109,101,0,0,0,0,0,0,0,0,70,105,108,101,32,99,104,97,110,103,101,32,100,97,116,101,32,97,110,100,32,116,105,109,101,0,0,0,0,0,0,0,80,101,114,115,111,110,32,119,104,111,32,99,114,101,97,116,101,100,32,116,104,101,32,105,109,97,103,101,0,0,0,0,72,111,115,116,67,111,109,112,117,116,101,114,0,0,0,0,72,111,115,116,32,99,111,109,112,117,116,101,114,32,117,115,101,100,32,116,111,32,103,101,110,101,114,97,116,101,32,116,104,101,32,105,109,97,103,101,0,0,0,0,0,0,0,0,87,104,105,116,101,32,112,111,105,110,116,32,99,104,114,111,109,97,116,105,99,105,116,121,0,0,0,0,0,0,0,0,80,114,105,109,97,114,121,67,104,114,111,109,97,116,105,99,105,116,105,101,115,0,0,0,67,104,114,111,109,97,116,105,99,105,116,105,101,115,32,111,102,32,112,114,105,109,97,114,105,101,115,0,0,0,0,0,84,114,97,110,115,102,101,114,82,97,110,103,101,0,0,0,74,80,69,71,80,114,111,99,0,0,0,0,0,0,0,0,74,80,69,71,73,110,116,101,114,99,104,97,110,103,101,70,111,114,109,97,116,0,0,0,79,102,102,115,101,116,32,116,111,32,74,80,69,71,32,83,79,73,0,0,0,0,0,0,74,80,69,71,73,110,116,101,114,99,104,97,110,103,101,70,111,114,109,97,116,76,101,110,103,116,104,0,0,0,0,0,66,121,116,101,115,32,111,102,32,74,80,69,71,32,100,97,116,97,0,0,0,0,0,0,89,67,98,67,114,67,111,101,102,102,105,99,105,101,110,116,115,0,0,0,0,0,0,0,67,111,108,111,114,32,115,112,97,99,101,32,116,114,97,110,115,102,111,114,109,97,116,105,111,110,32,109,97,116,114,105,120,32,99,111,101,102,102,105,99,105,101,110,116,115,0,0,89,67,98,67,114,83,117,98,83,97,109,112,108,105,110,103,0,0,0,0,0,0,0,0,83,117,98,115,97,109,112,108,105,110,103,32,114,97,116,105,111,32,111,102,32,89,32,116,111,32,67,0,0,0,0,0,89,67,98,67,114,80,111,115,105,116,105,111,110,105,110,103,0,0,0,0,0,0,0,0,89,32,97,110,100,32,67,32,112,111,115,105,116,105,111,110,105,110,103,0,0,0,0,0,82,101,102,101,114,101,110,99,101,66,108,97,99,107,87,104,105,116,101,0,0,0,0,0,80,97,105,114,32,111,102,32,98,108,97,99,107,32,97,110,100,32,119,104,105,116,101,32,114,101,102,101,114,101,110,99,101,32,118,97,108,117,101,115,0,0,0,0,0,0,0,0,67,70,65,82,101,112,101,97,116,80,97,116,116,101,114,110,68,105,109,0,0,0,0,0,67,70,65,80,97,116,116,101,114,110,0,0,0,0,0,0,66,97,116,116,101,114,121,76,101,118,101,108,0,0,0,0,67,111,112,121,114,105,103,104,116,32,104,111,108,100,101,114,0,0,0,0,0,0,0,0,69,120,112,111,115,117,114,101,32,116,105,109,101,0,0,0,70,32,110,117,109,98,101,114,0,0,0,0,0,0,0,0,73,80,84,67,47,78,65,65,0,0,0,0,0,0,0,0,73,110,116,101,114,67,111,108,111,114,80,114,111,102,105,108,101,0,0,0,0,0,0,0,69,120,112,111,115,117,114,101,80,114,111,103,114,97,109,0,69,120,112,111,115,117,114,101,32,112,114,111,103,114,97,109,0,0,0,0,0,0,0,0,83,112,101,99,116,114,97,108,83,101,110,115,105,116,105,118,105,116,121,0,0,0,0,0,83,112,101,99,116,114,97,108,32,115,101,110,115,105,116,105,118,105,116,121,0,0,0,0,71,80,83,73,110,102,111,0,73,83,79,83,112,101,101,100,82,97,116,105,110,103,115,0,73,83,79,32,115,112,101,101,100,32,114,97,116,105,110,103,0,0,0,0,0,0,0,0,79,69,67,70,0,0,0,0,79,112,116,111,101,108,101,99,116,114,105,99,32,99,111,110,118,101,114,115,105,111,110,32,102,97,99,116,111,114,0,0,69,120,105,102,86,101,114,115,105,111,110,0,0,0,0,0,69,120,105,102,32,118,101,114,115,105,111,110,0,0,0,0,68,97,116,101,84,105,109,101,79,114,105,103,105,110,97,108,0,0,0,0,0,0,0,0,68,97,116,101,32,97,110,100,32,116,105,109,101,32,111,102,32,111,114,105,103,105,110,97,108,32,100,97,116,97,32,103,101,110,101,114,97,116,105,111,110,0,0,0,0,0,0,0,68,97,116,101,84,105,109,101,68,105,103,105,116,105,122,101,100,0,0,0,0,0,0,0,68,97,116,101,32,97,110,100,32,116,105,109,101,32,111,102,32,100,105,103,105,116,97,108,32,100,97,116,97,32,103,101,110,101,114,97,116,105,111,110,0,0,0,0,0,0,0,0,67,111,109,112,111,110,101,110,116,115,67,111,110,102,105,103,117,114,97,116,105,111,110,0,77,101,97,110,105,110,103,32,111,102,32,101,97,99,104,32,99,111,109,112,111,110,101,110,116,0,0,0,0,0,0,0,67,111,109,112,114,101,115,115,101,100,66,105,116,115,80,101,114,80,105,120,101,108,0,0,73,109,97,103,101,32,99,111,109,112,114,101,115,115,105,111,110,32,109,111,100,101,0,0,83,104,117,116,116,101,114,32,115,112,101,101,100,0,0,0,65,112,101,114,116,117,114,101,0,0,0,0,0,0,0,0,69,120,112,111,115,117,114,101,66,105,97,115,86,97,108,117,101,0,0,0,0,0,0,0,69,120,112,111,115,117,114,101,32,98,105,97,115,0,0,0,77,97,120,65,112,101,114,116,117,114,101,86,97,108,117,101,0,0,0,0,0,0,0,0,77,97,120,105,109,117,109,32,108,101,110,115,32,97,112,101,114,116,117,114,101,0,0,0,83,117,98,106,101,99,116,68,105,115,116,97,110,99,101,0,83,117,98,106,101,99,116,32,100,105,115,116,97,110,99,101,0,0,0,0,0,0,0,0,77,101,116,101,114,105,110,103,32,109,111,100,101,0,0,0,76,105,103,104,116,32,115,111,117,114,99,101,0,0,0,0,70,108,97,115,104,0,0,0,76,101,110,115,32,102,111,99,97,108,32,108,101,110,103,116,104,0,0,0,0,0,0,0,83,117,98,106,101,99,116,65,114,101,97,0,0,0,0,0,83,117,98,106,101,99,116,32,97,114,101,97,0,0,0,0,77,97,107,101,114,78,111,116,101,0,0,0,0,0,0,0,77,97,110,117,102,97,99,116,117,114,101,114,32,110,111,116,101,115,0,0,0,0,0,0,85,115,101,114,67,111,109,109,101,110,116,0,0,0,0,0,85,115,101,114,32,99,111,109,109,101,110,116,115,0,0,0,83,117,98,83,101,99,84,105,109,101,0,0,0,0,0,0,68,97,116,101,84,105,109,101,32,115,117,98,115,101,99,111,110,100,115,0,0,0,0,0,83,117,98,83,101,99,84,105,109,101,79,114,105,103,105,110,97,108,0,0,0,0,0,0,68,97,116,101,84,105,109,101,79,114,105,103,105,110,97,108,32,115,117,98,115,101,99,111,110,100,115,0,0,0,0,0,83,117,98,83,101,99,84,105,109,101,68,105,103,105,116,105,122,101,100,0,0,0,0,0,68,97,116,101,84,105,109,101,68,105,103,105,116,105,122,101,100,32,115,117,98,115,101,99,111,110,100,115,0,0,0,0,70,108,97,115,104,80,105,120,86,101,114,115,105,111,110,0,83,117,112,112,111,114,116,101,100,32,70,108,97,115,104,112,105,120,32,118,101,114,115,105,111,110,0,0,0,0,0,0,67,111,108,111,114,32,115,112,97,99,101,32,105,110,102,111,114,109,97,116,105,111,110,0,80,105,120,101,108,88,68,105,109,101,110,115,105,111,110,0,86,97,108,105,100,32,105,109,97,103,101,32,119,105,100,116,104,0,0,0,0,0,0,0,80,105,120,101,108,89,68,105,109,101,110,115,105,111,110,0,86,97,108,105,100,32,105,109,97,103,101,32,104,101,105,103,104,116,0,0,0,0,0,0,82,101,108,97,116,101,100,83,111,117,110,100,70,105,108,101,0,0,0,0,0,0,0,0,82,101,108,97,116,101,100,32,97,117,100,105,111,32,102,105,108,101,0,0,0,0,0,0,73,110,116,101,114,111,112,101,114,97,98,105,108,105,116,121,79,102,102,115,101,116,0,0,70,108,97,115,104,69,110,101,114,103,121,0,0,0,0,0,70,108,97,115,104,32,101,110,101,114,103,121,0,0,0,0,83,112,97,116,105,97,108,70,114,101,113,117,101,110,99,121,82,101,115,112,111,110,115,101,0,0,0,0,0,0,0,0,83,112,97,116,105,97,108,32,102,114,101,113,117,101,110,99,121,32,114,101,115,112,111,110,115,101,0,0,0,0,0,0,70,111,99,97,108,80,108,97,110,101,88,82,101,115,111,108,117,116,105,111,110,0,0,0,70,111,99,97,108,32,112,108,97,110,101,32,88,32,114,101,115,111,108,117,116,105,111,110,0,0,0,0,0,0,0,0,70,111,99,97,108,80,108,97,110,101,89,82,101,115,111,108,117,116,105,111,110,0,0,0,70,111,99,97,108,32,112,108,97,110,101,32,89,32,114,101,115,111,108,117,116,105,111,110,0,0,0,0,0,0,0,0,70,111,99,97,108,80,108,97,110,101,82,101,115,111,108,117,116,105,111,110,85,110,105,116,0,0,0,0,0,0,0,0,70,111,99,97,108,32,112,108,97,110,101,32,114,101,115,111,108,117,116,105,111,110,32,117,110,105,116,0,0,0,0,0,83,117,98,106,101,99,116,76,111,99,97,116,105,111,110,0,83,117,98,106,101,99,116,32,108,111,99,97,116,105,111,110,0,0,0,0,0,0,0,0,69,120,112,111,115,117,114,101,73,110,100,101,120,0,0,0,69,120,112,111,115,117,114,101,32,105,110,100,101,120,0,0,83,101,110,115,105,110,103,77,101,116,104,111,100,0,0,0,83,101,110,115,105,110,103,32,109,101,116,104,111,100,0,0,70,105,108,101,83,114,99,0,70,105,108,101,32,115,111,117,114,99,101,0,0,0,0,0,83,99,101,110,101,84,121,112,101,0,0,0,0,0,0,0,83,99,101,110,101,32,116,121,112,101,0,0,0,0,0,0,67,70,65,32,112,97,116,116,101,114,110,0,0,0,0,0,67,117,115,116,111,109,82,101,110,100,101,114,101,100,0,0,67,117,115,116,111,109,32,105,109,97,103,101,32,112,114,111,99,101,115,115,105,110,103,0,69,120,112,111,115,117,114,101,32,109,111,100,101,0,0,0,87,104,105,116,101,32,98,97,108,97,110,99,101,0,0,0,68,105,103,105,116,97,108,90,111,111,109,82,97,116,105,111,0,0,0,0,0,0,0,0,68,105,103,105,116,97,108,32,122,111,111,109,32,114,97,116,105,111,0,0,0,0,0,0,70,111,99,97,108,76,101,110,103,116,104,73,110,51,53,109,109,70,105,108,109,0,0,0,70,111,99,97,108,32,108,101,110,103,116,104,32,105,110,32,51,53,32,109,109,32,102,105,108,109,0,0,0,0,0,0,83,99,101,110,101,67,97,112,116,117,114,101,84,121,112,101,0,0,0,0,0,0,0,0,83,99,101,110,101,32,99,97,112,116,117,114,101,32,116,121,112,101,0,0,0,0,0,0,71,97,105,110,67,111,110,116,114,111,108,0,0,0,0,0,71,97,105,110,32,99,111,110,116,114,111,108,0,0,0,0,68,101,118,105,99,101,83,101,116,116,105,110,103,68,101,115,99,114,105,112,116,105,111,110,0,0,0,0,0,0,0,0,68,101,118,105,99,101,32,115,101,116,116,105,110,103,115,32,100,101,115,99,114,105,112,116,105,111,110,0,0,0,0,0,83,117,98,106,101,99,116,68,105,115,116,97,110,99,101,82,97,110,103,101,0,0,0,0,83,117,98,106,101,99,116,32,100,105,115,116,97,110,99,101,32,114,97,110,103,101,0,0,85,110,105,113,117,101,32,105,109,97,103,101,32,73,68,0,67,97,109,101,114,97,79,119,110,101,114,78,97,109,101,0,67,97,109,101,114,97,32,111,119,110,101,114,32,110,97,109,101,0,0,0,0,0,0,0,66,111,100,121,83,101,114,105,97,108,78,117,109,98,101,114,0,0,0,0,0,0,0,0,66,111,100,121,32,115,101,114,105,97,108,32,110,117,109,98,101,114,0,0,0,0,0,0,76,101,110,115,83,112,101,99,105,102,105,99,97,116,105,111,110,0,0,0,0,0,0,0,76,101,110,115,32,115,112,101,99,105,102,105,99,97,116,105,111,110,0,0,0,0,0,0,76,101,110,115,77,97,107,101,0,0,0,0,0,0,0,0,76,101,110,115,32,109,97,107,101,0,0,0,0,0,0,0,76,101,110,115,32,109,111,100,101,108,0,0,0,0,0,0,76,101,110,115,32,115,101,114,105,97,108,32,110,117,109,98,101,114,0,0,0,0,0,0,82,97,116,105,110,103,0,0,82,97,116,105,110,103,32,116,97,103,32,117,115,101,100,32,98,121,32,87,105,110,100,111,119,115,0,0,0,0,0,0,82,97,116,105,110,103,80,101,114,99,101,110,116,0,0,0,82,97,116,105,110,103,32,116,97,103,32,117,115,101,100,32,98,121,32,87,105,110,100,111,119,115,44,32,118,97,108,117,101,32,105,110,32,112,101,114,99,101,110,116,0,0,0,0,88,80,84,105,116,108,101,0,84,105,116,108,101,32,116,97,103,32,117,115,101,100,32,98,121,32,87,105,110,100,111,119,115,44,32,101,110,99,111,100,101,100,32,105,110,32,85,67,83,50,0,0,0,0,0,0,88,80,67,111,109,109,101,110,116,0,0,0,0,0,0,0,67,111,109,109,101,110,116,32,116,97,103,32,117,115,101,100,32,98,121,32,87,105,110,100,111,119,115,44,32,101,110,99,111,100,101,100,32,105,110,32,85,67,83,50,0,0,0,0,88,80,65,117,116,104,111,114,0,0,0,0,0,0,0,0,65,117,116,104,111,114,32,116,97,103,32,117,115,101,100,32,98,121,32,87,105,110,100,111,119,115,44,32,101,110,99,111,100,101,100,32,105,110,32,85,67,83,50,0,0,0,0,0,88,80,75,101,121,119,111,114,100,115,0,0,0,0,0,0,75,101,121,119,111,114,100,115,32,116,97,103,32,117,115,101,100,32,98,121,32,87,105,110,100,111,119,115,44,32,101,110,99,111,100,101,100,32,105,110,32,85,67,83,50,0,0,0,88,80,83,117,98,106,101,99,116,0,0,0,0,0,0,0,83,117,98,106,101,99,116,32,116,97,103,32,117,115,101,100,32,98,121,32,87,105,110,100,111,119,115,44,32,101,110,99,111,100,101,100,32,105,110,32,85,67,83,50,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,131,0,0,255,255,255,255,12,0,0,0,65,0,1,1,144,142,5,0,128,132,0,0,255,255,255,255,12,0,0,0,65,0,1,1,160,142,5,0,216,133,0,0,255,255,255,255,12,0,0,0,65,0,1,1,192,142,5,0,130,132,0,0,255,255,255,255,12,0,0,0,65,0,1,1,216,142,5,0,175,135,0,0,255,255,255,255,3,0,0,0,65,0,1,1,232,142,5,0,176,135,0,0,255,255,255,255,12,0,0,0,65,0,1,1,248,142,5,0,177,135,0,0,255,255,255,255,2,0,0,0,65,0,1,0,8,143,5,0,215,133,0,0,1,0,1,0,4,0,0,0,65,0,1,1,24,143,5,0,85,110,105,109,112,108,101,109,101,110,116,101,100,32,118,97,114,105,97,98,108,101,32,110,117,109,98,101,114,32,111,102,32,112,97,114,97,109,101,116,101,114,115,32,102,111,114,32,84,105,102,102,32,84,97,103,32,37,115,0,0,0,0,0,71,101,111,80,105,120,101,108,83,99,97,108,101,0,0,0,73,110,116,101,114,103,114,97,112,104,32,84,114,97,110,115,102,111,114,109,97,116,105,111,110,77,97,116,114,105,120,0,71,101,111,84,114,97,110,115,102,111,114,109,97,116,105,111,110,77,97,116,114,105,120,0,71,101,111,84,105,101,80,111,105,110,116,115,0,0,0,0,71,101,111,75,101,121,68,105,114,101,99,116,111,114,121,0,71,101,111,68,111,117,98,108,101,80,97,114,97,109,115,0,71,101,111,65,83,67,73,73,80,97,114,97,109,115,0,0,74,80,76,32,67,97,114,116,111,32,73,70,68,32,111,102,102,115,101,116],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+358401);allocate([216,147,5,0,109,0,0,0,110,0,0,0,30,0,0,0,51,0,0,0,2,0,0,0,5,0,0,0,49,0,0,0,50,0,0,0,52,0,0,0,51,0,0,0,52,0,0,0,175,0,0,0,53,0,0,0,176,0,0,0,78,83,116,51,95,95,49,49,49,95,95,115,116,100,111,117,116,98,117,102,73,119,69,69,0,0,0,0,0,0,0,0,96,199,5,0,184,147,5,0,192,154,5,0,0,0,0,0,0,0,0,0,64,148,5,0,109,0,0,0,111,0,0,0,31,0,0,0,51,0,0,0,2,0,0,0,5,0,0,0,53,0,0,0,50,0,0,0,52,0,0,0,54,0,0,0,55,0,0,0,177,0,0,0,54,0,0,0,178,0,0,0,78,83,116,51,95,95,49,49,48,95,95,115,116,100,105,110,98,117,102,73,119,69,69,0,96,199,5,0,40,148,5,0,192,154,5,0,0,0,0,0,117,110,115,117,112,112,111,114,116,101,100,32,108,111,99,97,108,101,32,102,111,114,32,115,116,97,110,100,97,114,100,32,105,110,112,117,116,0,0,0,0,0,0,0,216,148,5,0,112,0,0,0,113,0,0,0,32,0,0,0,1,0,0,0,3,0,0,0,6,0,0,0,56,0,0,0,2,0,0,0,2,0,0,0,57,0,0,0,4,0,0,0,179,0,0,0,55,0,0,0,180,0,0,0,78,83,116,51,95,95,49,49,49,95,95,115,116,100,111,117,116,98,117,102,73,99,69,69,0,0,0,0,0,0,0,0,96,199,5,0,184,148,5,0,128,154,5,0,0,0,0,0,0,0,0,0,64,149,5,0,112,0,0,0,114,0,0,0,33,0,0,0,1,0,0,0,3,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,58,0,0,0,59,0,0,0,181,0,0,0,3,0,0,0,182,0,0,0,78,83,116,51,95,95,49,49,48,95,95,115,116,100,105,110,98,117,102,73,99,69,69,0,96,199,5,0,40,149,5,0,128,154,5,0,0,0,0,0,78,83,116,51,95,95,49,49,52,95,95,115,104,97,114,101,100,95,99,111,117,110,116,69,0,0,0,0,0,0,0,0,80,198,5,0,80,149,5,0,103,101,110,101,114,105,99,0,117,110,115,112,101,99,105,102,105,101,100,32,103,101,110,101,114,105,99,95,99,97,116,101,103,111,114,121,32,101,114,114,111,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,121,115,116,101,109,0,0,117,110,115,112,101,99,105,102,105,101,100,32,115,121,115,116,101,109,95,99,97,116,101,103,111,114,121,32,101,114,114,111,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,32,0,0,0,0,0,0,0,0,0,0,48,150,5,0,115,0,0,0,116,0,0,0,60,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,50,115,121,115,116,101,109,95,101,114,114,111,114,69,0,0,96,199,5,0,24,150,5,0,248,196,5,0,0,0,0,0,78,83,116,51,95,95,49,49,52,101,114,114,111,114,95,99,97,116,101,103,111,114,121,69,0,0,0,0,0,0,0,0,80,198,5,0,64,150,5,0,78,83,116,51,95,95,49,49,50,95,95,100,111,95,109,101,115,115,97,103,101,69,0,0,96,199,5,0,104,150,5,0,96,150,5,0,0,0,0,0,0,0,0,0,224,150,5,0,117,0,0,0,118,0,0,0,61,0,0,0,21,0,0,0,56,0,0,0,57,0,0,0,22,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,52,95,95,103,101,110,101,114,105,99,95,101,114,114,111,114,95,99,97,116,101,103,111,114,121,69,0,0,0,0,0,0,96,199,5,0,184,150,5,0,128,150,5,0,0,0,0,0,0,0,0,0,64,151,5,0,117,0,0,0,119,0,0,0,62,0,0,0,23,0,0,0,56,0,0,0,57,0,0,0,24,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,51,95,95,115,121,115,116,101,109,95,101,114,114,111,114,95,99,97,116,101,103,111,114,121,69,0,0,0,0,0,0,0,96,199,5,0,24,151,5,0,128,150,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,97,115,105,99,95,115,116,114,105,110,103,0,0,0,0,37,117,0,0,0,0,0,0,99,108,111,99,107,95,103,101,116,116,105,109,101,40,67,76,79,67,75,95,77,79,78,79,84,79,78,73,67,41,32,102,97,105,108,101,100,0,0,0,0,0,0,0,128,154,5,0,120,0,0,0,121,0,0,0,5,0,0,0,1,0,0,0,3,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,57,0,0,0,4,0,0,0,179,0,0,0,3,0,0,0,182,0,0,0,0,0,0,0,192,154,5,0,122,0,0,0,123,0,0,0,34,0,0,0,51,0,0,0,2,0,0,0,5,0,0,0,53,0,0,0,50,0,0,0,52,0,0,0,51,0,0,0,52,0,0,0,175,0,0,0,54,0,0,0,178,0,0,0,8,0,0,0,0,0,0,0,248,154,5,0,30,0,0,0,31,0,0,0,248,255,255,255,248,255,255,255,248,154,5,0,32,0,0,0,33,0,0,0,8,0,0,0,0,0,0,0,64,155,5,0,124,0,0,0,125,0,0,0,248,255,255,255,248,255,255,255,64,155,5,0,126,0,0,0,127,0,0,0,4,0,0,0,0,0,0,0,136,155,5,0,34,0,0,0,35,0,0,0,252,255,255,255,252,255,255,255,136,155,5,0,36,0,0,0,37,0,0,0,4,0,0,0,0,0,0,0,208,155,5,0,128,0,0,0,129,0,0,0,252,255,255,255,252,255,255,255,208,155,5,0,130,0,0,0,131,0,0,0,105,111,115,116,114,101,97,109,0,0,0,0,0,0,0,0,117,110,115,112,101,99,105,102,105,101,100,32,105,111,115,116,114,101,97,109,95,99,97,116,101,103,111,114,121,32,101,114,114,111,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,153,5,0,132,0,0,0,133,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,192,153,5,0,134,0,0,0,135,0,0,0,105,111,115,95,98,97,115,101,58,58,99,108,101,97,114,0,78,83,116,51,95,95,49,56,105,111,115,95,98,97,115,101,55,102,97,105,108,117,114,101,69,0,0,0,0,0,0,0,96,199,5,0,120,153,5,0,48,150,5,0,0,0,0,0,78,83,116,51,95,95,49,56,105,111,115,95,98,97,115,101,69,0,0,0,0,0,0,0,80,198,5,0,168,153,5,0,78,83,116,51,95,95,49,57,98,97,115,105,99,95,105,111,115,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,0,0,0,0,0,0,96,199,5,0,200,153,5,0,192,153,5,0,0,0,0,0,78,83,116,51,95,95,49,57,98,97,115,105,99,95,105,111,115,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,0,0,0,0,0,0,96,199,5,0,8,154,5,0,192,153,5,0,0,0,0,0,78,83,116,51,95,95,49,49,53,98,97,115,105,99,95,115,116,114,101,97,109,98,117,102,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,0,0,0,0,0,0,0,80,198,5,0,72,154,5,0,78,83,116,51,95,95,49,49,53,98,97,115,105,99,95,115,116,114,101,97,109,98,117,102,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,0,0,0,0,0,0,0,80,198,5,0,136,154,5,0,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,105,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,0,192,199,5,0,200,154,5,0,0,0,0,0,1,0,0,0,248,153,5,0,3,244,255,255,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,105,115,116,114,101,97,109,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,0,192,199,5,0,16,155,5,0,0,0,0,0,1,0,0,0,56,154,5,0,3,244,255,255,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,111,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,0,192,199,5,0,88,155,5,0,0,0,0,0,1,0,0,0,248,153,5,0,3,244,255,255,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,111,115,116,114,101,97,109,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,0,192,199,5,0,160,155,5,0,0,0,0,0,1,0,0,0,56,154,5,0,3,244,255,255,78,83,116,51,95,95,49,49,52,98,97,115,105,99,95,105,111,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,192,199,5,0,232,155,5,0,3,0,0,0,2,0,0,0,248,154,5,0,2,0,0,0,136,155,5,0,2,8,0,0,0,0,0,0,128,156,5,0,117,0,0,0,136,0,0,0,63,0,0,0,21,0,0,0,56,0,0,0,57,0,0,0,25,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,57,95,95,105,111,115,116,114,101,97,109,95,99,97,116,101,103,111,114,121,69,0,0,0,96,199,5,0,96,156,5,0,128,150,5,0,0,0,0,0,0,0,0,0,200,170,5,0,137,0,0,0,138,0,0,0,139,0,0,0,33,0,0,0,7,0,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,170,5,0,140,0,0,0,141,0,0,0,139,0,0,0,34,0,0,0,8,0,0,0,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,175,5,0,142,0,0,0,143,0,0,0,139,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,65,66,67,68,69,70,120,88,43,45,112,80,105,73,110,78,0,0,0,0,0,0,0,0,37,112,0,0,0,0,0,0,0,0,0,0,56,176,5,0,144,0,0,0,145,0,0,0,139,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,176,5,0,146,0,0,0,147,0,0,0,139,0,0,0,4,0,0,0,5,0,0,0,23,0,0,0,6,0,0,0,24,0,0,0,1,0,0,0,2,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,0,0,0,0,0,0,0,108,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,144,177,5,0,148,0,0,0,149,0,0,0,139,0,0,0,8,0,0,0,9,0,0,0,25,0,0,0,10,0,0,0,26,0,0,0,3,0,0,0,4,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,0,0,0,0,37,112,0,0,0,0,0,0,0,0,0,0,184,172,5,0,150,0,0,0,151,0,0,0,139,0,0,0,64,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,1,0,0,0,248,255,255,255,184,172,5,0,65,0,0,0,66,0,0,0,67,0,0,0,68,0,0,0,69,0,0,0,70,0,0,0,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,72,58,37,77,58,37,83,37,109,47,37,100,47,37,121,37,89,45,37,109,45,37,100,37,73,58,37,77,58,37,83,32,37,112,0,0,0,0,0,37,72,58,37,77,0,0,0,37,72,58,37,77,58,37,83,0,0,0,0,88,173,5,0,152,0,0,0,153,0,0,0,139,0,0,0,72,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,2,0,0,0,248,255,255,255,88,173,5,0,73,0,0,0,74,0,0,0,75,0,0,0,76,0,0,0,77,0,0,0,78,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,37,0,0,0,109,0,0,0,47,0,0,0,37,0,0,0,100,0,0,0,47,0,0,0,37,0,0,0,121,0,0,0,37,0,0,0,89,0,0,0,45,0,0,0,37,0,0,0,109,0,0,0,45,0,0,0,37,0,0,0,100,0,0,0,37,0,0,0,73,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,112,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,0,0,0,0,232,173,5,0,154,0,0,0,155,0,0,0,139,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,174,5,0,156,0,0,0,157,0,0,0,139,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,171,5,0,158,0,0,0,159,0,0,0,139,0,0,0,80,0,0,0,81,0,0,0,35,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,82,0,0,0,39,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,171,5,0,160,0,0,0,161,0,0,0,139,0,0,0,83,0,0,0,84,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,85,0,0,0,45,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,171,5,0,162,0,0,0,163,0,0,0,139,0,0,0,86,0,0,0,87,0,0,0,47,0,0,0,48,0,0,0,49,0,0,0,50,0,0,0,88,0,0,0,51,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,5,0,164,0,0,0,165,0,0,0,139,0,0,0,89,0,0,0,90,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,91,0,0,0,57,0,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,178,5,0,166,0,0,0,167,0,0,0,139,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,0,0,0,0,0,0,37,76,102,0,0,0,0,0,109,111,110,101,121,95,103,101,116,32,101,114,114,111,114,0,0,0,0,0,176,178,5,0,168,0,0,0,169,0,0,0,139,0,0,0,5,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,0,0,0,0,0,0,0,0,0,0,64,179,5,0,170,0,0,0,171,0,0,0,139,0,0,0,1,0,0,0,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,46,48,76,102,0,0,0,0,0,0,0,208,179,5,0,172,0,0,0,173,0,0,0,139,0,0,0,2,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,174,5,0,174,0,0,0,175,0,0,0,139,0,0,0,60,0,0,0,12,0,0,0,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,174,5,0,176,0,0,0,177,0,0,0,139,0,0,0,61,0,0,0,13,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,118,101,99,116,111,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,160,170,5,0,178,0,0,0,179,0,0,0,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,167,5,0,180,0,0,0,181,0,0,0,139,0,0,0,183,0,0,0,62,0,0,0,184,0,0,0,63,0,0,0,185,0,0,0,62,0,0,0,64,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,168,5,0,182,0,0,0,183,0,0,0,139,0,0,0,1,0,0,0,2,0,0,0,36,0,0,0,92,0,0,0,93,0,0,0,37,0,0,0,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,170,5,0,184,0,0,0,185,0,0,0,139,0,0,0,95,0,0,0,96,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,0,0,0,0,120,170,5,0,186,0,0,0,187,0,0,0,139,0,0,0,97,0,0,0,98,0,0,0,64,0,0,0,65,0,0,0,66,0,0,0,116,114,117,101,0,0,0,0,116,0,0,0,114,0,0,0,117,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,102,97,108,115,101,0,0,0,102,0,0,0,97,0,0,0,108,0,0,0,115,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,109,47,37,100,47,37,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,109,0,0,0,47,0,0,0,37,0,0,0,100,0,0,0,47,0,0,0,37,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,72,58,37,77,58,37,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,97,32,37,98,32,37,100,32,37,72,58,37,77,58,37,83,32,37,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,97,0,0,0,32,0,0,0,37,0,0,0,98,0,0,0,32,0,0,0,37,0,0,0,100,0,0,0,32,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,73,58,37,77,58,37,83,32,37,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,73,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,112,0,0,0,0,0,0,0,108,111,99,97,108,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,0,0,0,176,166,5,0,188,0,0,0,189,0,0,0,139,0,0,0,0,0,0,0,78,83,116,51,95,95,49,54,108,111,99,97,108,101,53,102,97,99,101,116,69,0,0,0,96,199,5,0,152,166,5,0,112,149,5,0,0,0,0,0,0,0,0,0,64,167,5,0,188,0,0,0,190,0,0,0,139,0,0,0,65,0,0,0,63,0,0,0,64,0,0,0,65,0,0,0,186,0,0,0,66,0,0,0,187,0,0,0,67,0,0,0,188,0,0,0,66,0,0,0,68,0,0,0,38,0,0,0,0,0,0,0,78,83,116,51,95,95,49,53,99,116,121,112,101,73,119,69,69,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,48,99,116,121,112,101,95,98,97,115,101,69,0,0,0,0,80,198,5,0,32,167,5,0,192,199,5,0,8,167,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,56,167,5,0,2,0,0,0,78,83,116,51,95,95,49,53,99,116,121,112,101,73,99,69,69,0,0,0,0,0,0,0,192,199,5,0,96,167,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,56,167,5,0,2,0,0,0,0,0,0,0,16,168,5,0,188,0,0,0,191,0,0,0,139,0,0,0,3,0,0,0,4,0,0,0,39,0,0,0,99,0,0,0,100,0,0,0,40,0,0,0,101,0,0,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,99,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,50,99,111,100,101,99,118,116,95,98,97,115,101,69,0,0,80,198,5,0,240,167,5,0,192,199,5,0,200,167,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,8,168,5,0,2,0,0,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,119,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,0,0,0,0,0,0,192,199,5,0,48,168,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,8,168,5,0,2,0,0,0,0,0,0,0,208,168,5,0,188,0,0,0,192,0,0,0,139,0,0,0,5,0,0,0,6,0,0,0,41,0,0,0,102,0,0,0,103,0,0,0,42,0,0,0,104,0,0,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,68,115,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,0,0,0,0,0,192,199,5,0,168,168,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,8,168,5,0,2,0,0,0,0,0,0,0,72,169,5,0,188,0,0,0,193,0,0,0,139,0,0,0,7,0,0,0,8,0,0,0,43,0,0,0,105,0,0,0,106,0,0,0,44,0,0,0,107,0,0,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,68,105,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,0,0,0,0,0,192,199,5,0,32,169,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,8,168,5,0,2,0,0,0,0,0,0,0,192,169,5,0,188,0,0,0,194,0,0,0,139,0,0,0,7,0,0,0,8,0,0,0,43,0,0,0,105,0,0,0,106,0,0,0,44,0,0,0,107,0,0,0,78,83,116,51,95,95,49,49,54,95,95,110,97,114,114,111,119,95,116,111,95,117,116,102,56,73,76,106,51,50,69,69,69,0,0,0,0,0,0,0,96,199,5,0,152,169,5,0,72,169,5,0,0,0,0,0,0,0,0,0,40,170,5,0,188,0,0,0,195,0,0,0,139,0,0,0,7,0,0,0,8,0,0,0,43,0,0,0,105,0,0,0,106,0,0,0,44,0,0,0,107,0,0,0,78,83,116,51,95,95,49,49,55,95,95,119,105,100,101,110,95,102,114,111,109,95,117,116,102,56,73,76,106,51,50,69,69,69,0,0,0,0,0,0,96,199,5,0,0,170,5,0,72,169,5,0,0,0,0,0,78,83,116,51,95,95,49,56,110,117,109,112,117,110,99,116,73,99,69,69,0,0,0,0,96,199,5,0,56,170,5,0,176,166,5,0,0,0,0,0,78,83,116,51,95,95,49,56,110,117,109,112,117,110,99,116,73,119,69,69,0,0,0,0,96,199,5,0,96,170,5,0,176,166,5,0,0,0,0,0,78,83,116,51,95,95,49,54,108,111,99,97,108,101,53,95,95,105,109,112,69,0,0,0,96,199,5,0,136,170,5,0,176,166,5,0,0,0,0,0,78,83,116,51,95,95,49,55,99,111,108,108,97,116,101,73,99,69,69,0,0,0,0,0,96,199,5,0,176,170,5,0,176,166,5,0,0,0,0,0,78,83,116,51,95,95,49,55,99,111,108,108,97,116,101,73,119,69,69,0,0,0,0,0,96,199,5,0,216,170,5,0,176,166,5,0,0,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,99,76,98,48,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,95,98,97,115,101,69,0,0,0,0,80,198,5,0,32,171,5,0,192,199,5,0,0,171,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,56,171,5,0,2,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,99,76,98,49,69,69,69,0,0,0,0,0,192,199,5,0,96,171,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,56,171,5,0,2,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,119,76,98,48,69,69,69,0,0,0,0,0,192,199,5,0,160,171,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,56,171,5,0,2,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,119,76,98,49,69,69,69,0,0,0,0,0,192,199,5,0,224,171,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,56,171,5,0,2,0,0,0,78,83,116,51,95,95,49,56,116,105,109,101,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,0,78,83,116,51,95,95,49,57,116,105,109,101,95,98,97,115,101,69,0,0,0,0,0,0,80,198,5,0,104,172,5,0,78,83,116,51,95,95,49,50,48,95,95,116,105,109,101,95,103,101,116,95,99,95,115,116,111,114,97,103,101,73,99,69,69,0,0,0,0,0,0,0,80,198,5,0,136,172,5,0,192,199,5,0,32,172,5,0,0,0,0,0,3,0,0,0,176,166,5,0,2,0,0,0,128,172,5,0,2,0,0,0,176,172,5,0,0,8,0,0,78,83,116,51,95,95,49,56,116,105,109,101,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,116,105,109,101,95,103,101,116,95,99,95,115,116,111,114,97,103,101,73,119,69,69,0,0,0,0,0,0,0,80,198,5,0,40,173,5,0,192,199,5,0,224,172,5,0,0,0,0,0,3,0,0,0,176,166,5,0,2,0,0,0,128,172,5,0,2,0,0,0,80,173,5,0,0,8,0,0,78,83,116,51,95,95,49,56,116,105,109,101,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,0,78,83,116,51,95,95,49,49,48,95,95,116,105,109,101,95,112,117,116,69,0,0,0,0,80,198,5,0,200,173,5,0,192,199,5,0,128,173,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,224,173,5,0,0,8,0,0,78,83,116,51,95,95,49,56,116,105,109,101,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,0,192,199,5,0,8,174,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,224,173,5,0,0,8,0,0,78,83,116,51,95,95,49,56,109,101,115,115,97,103,101,115,73,99,69,69,0,0,0,0,78,83,116,51,95,95,49,49,51,109,101,115,115,97,103,101,115,95,98,97,115,101,69,0,80,198,5,0,136,174,5,0,192,199,5,0,112,174,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,160,174,5,0,2,0,0,0,78,83,116,51,95,95,49,56,109,101,115,115,97,103,101,115,73,119,69,69,0,0,0,0,192,199,5,0,200,174,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,160,174,5,0,2,0,0,0,78,83,116,51,95,95,49,55,110,117,109,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,103,101,116,73,99,69,69,0,0,0,78,83,116,51,95,95,49,49,52,95,95,110,117,109,95,103,101,116,95,98,97,115,101,69,0,0,0,0,0,0,0,0,80,198,5,0,96,175,5,0,192,199,5,0,72,175,5,0,0,0,0,0,1,0,0,0,128,175,5,0,0,0,0,0,192,199,5,0,0,175,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,136,175,5,0,0,0,0,0,78,83,116,51,95,95,49,55,110,117,109,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,103,101,116,73,119,69,69,0,0,0,192,199,5,0,8,176,5,0,0,0,0,0,1,0,0,0,128,175,5,0,0,0,0,0,192,199,5,0,192,175,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,32,176,5,0,0,0,0,0,78,83,116,51,95,95,49,55,110,117,109,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,112,117,116,73,99,69,69,0,0,0,78,83,116,51,95,95,49,49,52,95,95,110,117,109,95,112,117,116,95,98,97,115,101,69,0,0,0,0,0,0,0,0,80,198,5,0,184,176,5,0,192,199,5,0,160,176,5,0,0,0,0,0,1,0,0,0,216,176,5,0,0,0,0,0,192,199,5,0,88,176,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,224,176,5,0,0,0,0,0,78,83,116,51,95,95,49,55,110,117,109,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,112,117,116,73,119,69,69,0,0,0,192,199,5,0,96,177,5,0,0,0,0,0,1,0,0,0,216,176,5,0,0,0,0,0,192,199,5,0,24,177,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,120,177,5,0,0,0,0,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,103,101,116,73,99,69,69,0,0,0,0,0,0,0,0,80,198,5,0,248,177,5,0,192,199,5,0,176,177,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,24,178,5,0,0,0,0,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,103,101,116,73,119,69,69,0,0,0,0,0,0,0,0,80,198,5,0,136,178,5,0,192,199,5,0,64,178,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,168,178,5,0,0,0,0,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,112,117,116,73,99,69,69,0,0,0,0,0,0,0,0,80,198,5,0,24,179,5,0,192,199,5,0,208,178,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,56,179,5,0,0,0,0,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,112,117,116,73,119,69,69,0,0,0,0,0,0,0,0,80,198,5,0,168,179,5,0,192,199,5,0,96,179,5,0,0,0,0,0,2,0,0,0,176,166,5,0,2,0,0,0,200,179,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,77,0,0,0,0,0,0,80,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,97,0,0,0,110,0,0,0,117,0,0,0,97,0,0,0,114,0,0,0,121,0,0,0,0,0,0,0,70,0,0,0,101,0,0,0,98,0,0,0,114,0,0,0,117,0,0,0,97,0,0,0,114,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,114,0,0,0,99,0,0,0,104,0,0,0,0,0,0,0,65,0,0,0,112,0,0,0,114,0,0,0,105,0,0,0,108,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,110,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,108,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,117,0,0,0,103,0,0,0,117,0,0,0,115,0,0,0,116,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,101,0,0,0,112,0,0,0,116,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,79,0,0,0,99,0,0,0,116,0,0,0,111,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,78,0,0,0,111,0,0,0,118,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,0,0,0,0,68,0,0,0,101,0,0,0,99,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,97,0,0,0,110,0,0,0,0,0,0,0,70,0,0,0,101,0,0,0,98,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,114,0,0,0,0,0,0,0,65,0,0,0,112,0,0,0,114,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,110,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,108,0,0,0,0,0,0,0,65,0,0,0,117,0,0,0,103,0,0,0,0,0,0,0,83,0,0,0,101,0,0,0,112,0,0,0,0,0,0,0,79,0,0,0,99,0,0,0,116,0,0,0,0,0,0,0,78,0,0,0,111,0,0,0,118],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+365428);allocate([68,0,0,0,101,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,97,110,117,97,114,121,0,70,101,98,114,117,97,114,121,0,0,0,0,0,0,0,0,77,97,114,99,104,0,0,0,65,112,114,105,108,0,0,0,77,97,121,0,0,0,0,0,74,117,110,101,0,0,0,0,74,117,108,121,0,0,0,0,65,117,103,117,115,116,0,0,83,101,112,116,101,109,98,101,114,0,0,0,0,0,0,0,79,99,116,111,98,101,114,0,78,111,118,101,109,98,101,114,0,0,0,0,0,0,0,0,68,101,99,101,109,98,101,114,0,0,0,0,0,0,0,0,74,97,110,0,0,0,0,0,70,101,98,0,0,0,0,0,77,97,114,0,0,0,0,0,65,112,114,0,0,0,0,0,74,117,110,0,0,0,0,0,74,117,108,0,0,0,0,0,65,117,103,0,0,0,0,0,83,101,112,0,0,0,0,0,79,99,116,0,0,0,0,0,78,111,118,0,0,0,0,0,68,101,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,117,0,0,0,110,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,111,0,0,0,110,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,117,0,0,0,101,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,87,0,0,0,101,0,0,0,100,0,0,0,110,0,0,0,101,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,84,0,0,0,104,0,0,0,117,0,0,0,114,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,114,0,0,0,105,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,97,0,0,0,116,0,0,0,117,0,0,0,114,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,117,0,0,0,110,0,0,0,0,0,0,0,77,0,0,0,111,0,0,0,110,0,0,0,0,0,0,0,84,0,0,0,117,0,0,0,101,0,0,0,0,0,0,0,87,0,0,0,101,0,0,0,100,0,0,0,0,0,0,0,84,0,0,0,104,0,0,0,117,0,0,0,0,0,0,0,70,0,0,0,114,0,0,0,105,0,0,0,0,0,0,0,83,0,0,0,97,0,0,0,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,117,110,100,97,121,0,0,77,111,110,100,97,121,0,0,84,117,101,115,100,97,121,0,87,101,100,110,101,115,100,97,121,0,0,0,0,0,0,0,84,104,117,114,115,100,97,121,0,0,0,0,0,0,0,0,70,114,105,100,97,121,0,0,83,97,116,117,114,100,97,121,0,0,0,0,0,0,0,0,83,117,110,0,0,0,0,0,77,111,110,0,0,0,0,0,84,117,101,0,0,0,0,0,87,101,100,0,0,0,0,0,84,104,117,0,0,0,0,0,70,114,105,0,0,0,0,0,83,97,116,0,0,0,0,0,2,0,0,192,3,0,0,192,4,0,0,192,5,0,0,192,6,0,0,192,7,0,0,192,8,0,0,192,9,0,0,192,10,0,0,192,11,0,0,192,12,0,0,192,13,0,0,192,14,0,0,192,15,0,0,192,16,0,0,192,17,0,0,192,18,0,0,192,19,0,0,192,20,0,0,192,21,0,0,192,22,0,0,192,23,0,0,192,24,0,0,192,25,0,0,192,26,0,0,192,27,0,0,192,28,0,0,192,29,0,0,192,30,0,0,192,31,0,0,192,0,0,0,179,1,0,0,195,2,0,0,195,3,0,0,195,4,0,0,195,5,0,0,195,6,0,0,195,7,0,0,195,8,0,0,195,9,0,0,195,10,0,0,195,11,0,0,195,12,0,0,195,13,0,0,211,14,0,0,195,15,0,0,195,0,0,12,187,1,0,12,195,2,0,12,195,3,0,12,195,4,0,12,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,216,193,5,0,0,0,0,0,117,110,99,97,117,103,104,116,0,0,0,0,0,0,0,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,0,0,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,0,0,0,0,0,0,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,0,0,116,101,114,109,105,110,97,116,105,110,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,0,0,0,0,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,0,0,0,0,0,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,0,0,0,0,0,0,0,112,195,5,0,196,0,0,0,197,0,0,0,108,0,0,0,0,0,0,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,0,83,116,57,98,97,100,95,97,108,108,111,99,0,0,0,0,96,199,5,0,96,195,5,0,8,196,5,0,0,0,0,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,116,104,114,101,119,32,97,110,32,101,120,99,101,112,116,105,111,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,116,100,58,58,101,120,99,101,112,116,105,111,110,0,0,83,116,57,101,120,99,101,112,116,105,111,110,0,0,0,0,80,198,5,0,248,195,5,0,0,0,0,0,80,196,5,0,198,0,0,0,199,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,248,196,5,0,200,0,0,0,201,0,0,0,60,0,0,0,0,0,0,0,83,116,49,49,108,111,103,105,99,95,101,114,114,111,114,0,96,199,5,0,64,196,5,0,8,196,5,0,0,0,0,0,0,0,0,0,144,196,5,0,198,0,0,0,202,0,0,0,109,0,0,0,0,0,0,0,83,116,49,50,108,101,110,103,116,104,95,101,114,114,111,114,0,0,0,0,0,0,0,0,96,199,5,0,120,196,5,0,80,196,5,0,0,0,0,0,0,0,0,0,208,196,5,0,198,0,0,0,203,0,0,0,109,0,0,0,0,0,0,0,83,116,49,50,111,117,116,95,111,102,95,114,97,110,103,101,0,0,0,0,0,0,0,0,96,199,5,0,184,196,5,0,80,196,5,0,0,0,0,0,83,116,49,51,114,117,110,116,105,109,101,95,101,114,114,111,114,0,0,0,0,0,0,0,96,199,5,0,224,196,5,0,8,196,5,0,0,0,0,0,0,0,0,0,88,197,5,0,204,0,0,0,205,0,0,0,110,0,0,0,0,0,0,0,115,116,100,58,58,98,97,100,95,99,97,115,116,0,0,0,83,116,57,116,121,112,101,95,105,110,102,111,0,0,0,0,80,198,5,0,48,197,5,0,83,116,56,98,97,100,95,99,97,115,116,0,0,0,0,0,96,199,5,0,72,197,5,0,8,196,5,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,0,96,199,5,0,104,197,5,0,64,197,5,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,96,199,5,0,160,197,5,0,144,197,5,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,96,199,5,0,0,198,5,0,144,197,5,0,0,0,0,0,96,199,5,0,216,197,5,0,40,198,5,0,0,0,0,0,0,0,0,0,200,197,5,0,206,0,0,0,207,0,0,0,208,0,0,0,209,0,0,0,69,0,0,0,14,0,0,0,4,0,0,0,9,0,0,0,0,0,0,0,56,198,5,0,206,0,0,0,210,0,0,0,208,0,0,0,209,0,0,0,70,0,0,0,0,0,0,0,0,0,0,0,216,198,5,0,206,0,0,0,211,0,0,0,208,0,0,0,209,0,0,0,71,0,0,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,51,95,95,102,117,110,100,97,109,101,110,116,97,108,95,116,121,112,101,95,105,110,102,111,69,0,96,199,5,0,176,198,5,0,144,197,5,0,0,0,0,0,118,0,0,0,0,0,0,0,152,198,5,0,232,198,5,0,68,110,0,0,0,0,0,0,152,198,5,0,248,198,5,0,99,0,0,0,0,0,0,0,152,198,5,0,8,199,5,0,80,99,0,0,0,0,0,0,120,198,5,0,24,199,5,0,0,0,0,0,16,199,5,0,80,75,99,0,0,0,0,0,120,198,5,0,48,199,5,0,1,0,0,0,16,199,5,0,105,0,0,0,0,0,0,0,152,198,5,0,72,199,5,0,0,0,0,0,168,199,5,0,206,0,0,0,212,0,0,0,208,0,0,0,209,0,0,0,69,0,0,0,15,0,0,0,5,0,0,0,10,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,96,199,5,0,128,199,5,0,200,197,5,0,0,0,0,0,0,0,0,0,8,200,5,0,206,0,0,0,213,0,0,0,208,0,0,0,209,0,0,0,69,0,0,0,16,0,0,0,6,0,0,0,11,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,49,95,95,118,109,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,96,199,5,0,224,199,5,0,200,197,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,1,2,4,7,3,6,5,0,0,0,0,0,0,0,0,105,110,102,105,110,105,116,121,0,0,0,0,0,0,0,0,110,97,110,0,0,0,0,0,95,112,137,0,255,9,47,15,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,0,0,0,0,0,0,0,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,0,0,0,0,0,0,40,110,117,108,108,41,0,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,0,0,0,0,0,105,110,102,0,0,0,0,0,73,78,70,0,0,0,0,0,110,97,110,0,0,0,0,0,78,65,78,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+375672);var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3];HEAP8[tempDoublePtr+4]=HEAP8[ptr+4];HEAP8[tempDoublePtr+5]=HEAP8[ptr+5];HEAP8[tempDoublePtr+6]=HEAP8[ptr+6];HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};var ___errno_state=0;function ___setErrNo(value){HEAP32[___errno_state>>2]=value;return value}var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){Module["print"](tty.output.join(""));tty.output=[]}}),put_char:(function(tty,val){if(val===null||val===10){Module["print"](tty.output.join(""));tty.output=[]}else{tty.output.push(TTY.utf8.processCChar(val))}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](tty.output.join(""));tty.output=[]}else{tty.output.push(TTY.utf8.processCChar(val))}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](tty.output.join(""));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.buffer.byteLength:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var errored=false;var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(){done(this.error)});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:(function(flags){if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{return flags}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{return fs.readlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var accmode=flag&2097155;var perms=["r","w","rw"][accmode];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if((flags&2097155)!==0||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),getStreamFromPtr:(function(ptr){return FS.streams[ptr-1]}),getPtrForStream:(function(stream){return stream?stream.fd+1:0}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}var mounts=FS.getMounts(FS.root.mount);var completed=0;function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=mounts.length){callback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdev:(function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){if(err===ERRNO_CODES.EISDIR)err=ERRNO_CODES.EPERM;throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return link.node_ops.readlink(link)}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module["printErr"]("read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream}),close:(function(stream){try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret="";var utf8=new Runtime.UTF8Processor;for(var i=0;i>2]=FS.getPtrForStream(stdin);assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");HEAP32[_stdout>>2]=FS.getPtrForStream(stdout);assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");HEAP32[_stderr>>2]=FS.getPtrForStream(stderr);assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno]};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices()}),init:(function(input,output,error){assert(!FS.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperty(lazyArray,"length",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})});Object.defineProperty(lazyArray,"chunkSize",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperty(node,"usedBytes",{get:(function(){return this.contents.length})});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i>2];if(len<0){frag=Pointer_stringify(HEAP32[string+i*4>>2])}else{frag=Pointer_stringify(HEAP32[string+i*4>>2],len)}}else{frag=Pointer_stringify(HEAP32[string+i*4>>2])}source+=frag}return source}),computeImageSize:(function(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return Math.floor((x+y-1)/y)*y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height<=0?0:(height-1)*alignedRowSize+plainRowSize}),get:(function(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=="Integer"){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats.length;break;case 35738:ret=5121;break;case 35739:ret=6408;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34068:{ret=0;break};default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case"Float":HEAPF32[p+i*4>>2]=result[i];break;case"Boolean":HEAP8[p+i>>0]=result[i]?1:0;break;default:throw"internal glGet error, bad type: "+type}}return}else if(result instanceof WebGLBuffer||result instanceof WebGLProgram||result instanceof WebGLFramebuffer||result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}}switch(type){case"Integer":HEAP32[p>>2]=ret;break;case"Float":HEAPF32[p>>2]=ret;break;case"Boolean":HEAP8[p>>0]=ret?1:0;break;default:throw"internal glGet error, bad type: "+type}}),getTexPixelData:(function(type,format,width,height,pixels,internalFormat){var sizePerPixel;var numChannels;switch(format){case 6406:case 6409:case 6402:numChannels=1;break;case 6410:case 33319:numChannels=2;break;case 6407:numChannels=3;break;case 6408:numChannels=4;break;default:GL.recordError(1280);return{pixels:null,internalFormat:0}}switch(type){case 5121:sizePerPixel=numChannels*1;break;case 5123:case 36193:sizePerPixel=numChannels*2;break;case 5125:case 5126:sizePerPixel=numChannels*4;break;case 34042:sizePerPixel=4;break;case 33635:case 32819:case 32820:sizePerPixel=2;break;default:GL.recordError(1280);return{pixels:null,internalFormat:0}}var bytes=GL.computeImageSize(width,height,sizePerPixel,GL.unpackAlignment);if(type==5121){pixels=HEAPU8.subarray(pixels,pixels+bytes)}else if(type==5126){pixels=HEAPF32.subarray(pixels>>2,pixels+bytes>>2)}else if(type==5125||type==34042){pixels=HEAPU32.subarray(pixels>>2,pixels+bytes>>2)}else{pixels=HEAPU16.subarray(pixels>>1,pixels+bytes>>1)}return{pixels:pixels,internalFormat:internalFormat}}),validateBufferTarget:(function(target){switch(target){case 34962:case 34963:case 36662:case 36663:case 35051:case 35052:case 35882:case 35982:case 35345:return true;default:return false}}),createContext:(function(canvas,webGLContextAttributes){if(typeof webGLContextAttributes.majorVersion==="undefined"&&typeof webGLContextAttributes.minorVersion==="undefined"){webGLContextAttributes.majorVersion=1;webGLContextAttributes.minorVersion=0}var ctx;var errorInfo="?";function onContextCreationError(event){errorInfo=event.statusMessage||errorInfo}try{canvas.addEventListener("webglcontextcreationerror",onContextCreationError,false);try{if(webGLContextAttributes.majorVersion==1&&webGLContextAttributes.minorVersion==0){ctx=canvas.getContext("webgl",webGLContextAttributes)||canvas.getContext("experimental-webgl",webGLContextAttributes)}else if(webGLContextAttributes.majorVersion==2&&webGLContextAttributes.minorVersion==0){ctx=canvas.getContext("webgl2",webGLContextAttributes)||canvas.getContext("experimental-webgl2",webGLContextAttributes)}else{throw"Unsupported WebGL context version "+majorVersion+"."+minorVersion+"!"}}finally{canvas.removeEventListener("webglcontextcreationerror",onContextCreationError,false)}if(!ctx)throw":("}catch(e){Module.print("Could not create canvas: "+[errorInfo,e,JSON.stringify(webGLContextAttributes)]);return 0}if(!ctx)return 0;return GL.registerContext(ctx,webGLContextAttributes)}),registerContext:(function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes["webGLContextAttributes"]==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle}),makeContextCurrent:(function(contextHandle){var context=GL.contexts[contextHandle];if(!context)return false;GLctx=Module.ctx=context.GLctx;GL.currentContext=context;return true}),getContext:(function(contextHandle){return GL.contexts[contextHandle]}),deleteContext:(function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=0;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null}),initExtensions:(function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;context.maxVertexAttribs=GLctx.getParameter(GLctx.MAX_VERTEX_ATTRIBS);context.compressionExt=GLctx.getExtension("WEBGL_compressed_texture_s3tc")||GLctx.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||GLctx.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");context.anisotropicExt=GLctx.getExtension("EXT_texture_filter_anisotropic")||GLctx.getExtension("MOZ_EXT_texture_filter_anisotropic")||GLctx.getExtension("WEBKIT_EXT_texture_filter_anisotropic");context.floatExt=GLctx.getExtension("OES_texture_float");context.instancedArraysExt=GLctx.getExtension("ANGLE_instanced_arrays");context.vaoExt=GLctx.getExtension("OES_vertex_array_object");if(context.version===2){context.drawBuffersExt=(function(n,bufs){GLctx.drawBuffers(n,bufs)})}else{var ext=GLctx.getExtension("WEBGL_draw_buffers");if(ext){context.drawBuffersExt=(function(n,bufs){ext.drawBuffersWEBGL(n,bufs)})}}var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","WEBGL_compressed_texture_atc","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_frag_depth","EXT_sRGB","WEBGL_draw_buffers","WEBGL_shared_resources","EXT_shader_texture_lod"];function shouldEnableAutomatically(extension){var ret=false;automaticallyEnabledExtensions.forEach((function(include){if(ext.indexOf(include)!=-1){ret=true}}));return ret}GLctx.getSupportedExtensions().forEach((function(ext){ext=ext.replace("MOZ_","").replace("WEBKIT_","");if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}}))}),populateUniformTable:(function(program){var p=GL.programs[program];GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1};var ptable=GL.programInfos[program];var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,GLctx.ACTIVE_UNIFORMS);for(var i=0;i>8,sock.sport&255]))}return peer}),getPeer:(function(sock,addr,port){return sock.peers[addr+":"+port]}),addPeer:(function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer}),removePeer:(function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]}),handlePeerEvents:(function(sock,peer){var first=true;var handleOpen=(function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}});function handleMessage(data){assert(typeof data!=="string"&&data.byteLength!==undefined);data=new Uint8Array(data);var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(function(data,flags){if(!flags.binary){return}handleMessage((new Uint8Array(data)).buffer)}));peer.socket.on("close",(function(){Module["websocket"].emit("close",sock.stream.fd)}));peer.socket.on("error",(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}))}else{peer.socket.onopen=handleOpen;peer.socket.onclose=(function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}}),poll:(function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask}),ioctl:(function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return ERRNO_CODES.EINVAL}}),close:(function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i>0]=chr;var fd=_fileno(stream);var ret=_write(fd,_fputc.ret,1);if(ret==-1){var streamObj=FS.getStreamFromPtr(stream);if(streamObj)streamObj.error=true;return-1}else{return chr}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7936:case 7937:case 7938:ret=allocate(intArrayFromString(GLctx.getParameter(name_)),"i8",ALLOC_NORMAL);break;case 7939:var exts=GLctx.getSupportedExtensions();var gl_exts=[];for(i in exts){gl_exts.push(exts[i]);gl_exts.push("GL_"+exts[i])}ret=allocate(intArrayFromString(gl_exts.join(" ")),"i8",ALLOC_NORMAL);break;case 35724:ret=allocate(intArrayFromString("OpenGL ES GLSL 1.00 (WebGL)"),"i8",ALLOC_NORMAL);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}var _floorf=Math_floor;function _fwrite(ptr,size,nitems,stream){var bytesToWrite=nitems*size;if(bytesToWrite==0)return 0;var fd=_fileno(stream);var bytesWritten=_write(fd,ptr,bytesToWrite);if(bytesWritten==-1){var streamObj=FS.getStreamFromPtr(stream);if(streamObj)streamObj.error=true;return 0}else{return bytesWritten/size|0}}var _llvm_pow_f32=Math_pow;function _SoundManagerPlay(){Module["printErr"]("missing function: SoundManagerPlay");abort(-1)}function __exit(status){Module["exit"](status)}function _exit(status){__exit(status)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}Module["_bitshift64Ashr"]=_bitshift64Ashr;var PTHREAD_SPECIFIC={};function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL}PTHREAD_SPECIFIC[key]=value;return 0}var _ceil=Math_ceil;function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;Module["_memmove"]=_memmove;function _glGenTextures(n,textures){for(var i=0;i>2]=id}}var LOCALE={curr:0,check:(function(locale){if(locale)locale=Pointer_stringify(locale);return locale==="C"||locale==="POSIX"||!locale})};function _calloc(n,s){var ret=_malloc(n*s);_memset(ret,0,n*s);return ret}Module["_calloc"]=_calloc;function _newlocale(mask,locale,base){if(!LOCALE.check(locale)){___setErrNo(ERRNO_CODES.ENOENT);return 0}if(!base)base=_calloc(1,4);return base}var _emscripten_preinvoke=true;function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _pthread_cond_wait(){return 0}function _free(){}Module["_free"]=_free;function ___cxa_free_exception(ptr){try{return _free(ptr)}catch(e){}}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:(function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var ptr in EXCEPTIONS.infos){var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr}}return adjusted}),addRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++}),decRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0){if(info.destructor){Runtime.dynCall("vi",info.destructor,[ptr])}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___cxa_end_catch(){if(___cxa_end_catch.rethrown){___cxa_end_catch.rethrown=false;return}asm["setThrew"](0);var ptr=EXCEPTIONS.caught.pop();if(ptr){EXCEPTIONS.decRef(EXCEPTIONS.deAdjust(ptr));EXCEPTIONS.last=0}}function ___cxa_rethrow(){___cxa_end_catch.rethrown=true;var ptr=EXCEPTIONS.caught.pop();EXCEPTIONS.last=ptr;throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function _div(divt,numer,denom){var quot=numer/denom|0;var rem=numer-quot*denom;HEAP32[divt>>2]=quot;HEAP32[divt+4>>2]=rem;return divt}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glUniform1i(location,v0){location=GL.uniforms[location];GLctx.uniform1i(location,v0)}function _emscripten_get_now(){if(!_emscripten_get_now.actual){if(ENVIRONMENT_IS_NODE){_emscripten_get_now.actual=function _emscripten_get_now_actual(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now.actual=dateNow}else if(typeof self==="object"&&self["performance"]&&typeof self["performance"]["now"]==="function"){_emscripten_get_now.actual=function _emscripten_get_now_actual(){return self["performance"]["now"]()}}else if(typeof performance==="object"&&typeof performance["now"]==="function"){_emscripten_get_now.actual=function _emscripten_get_now_actual(){return performance["now"]()}}else{_emscripten_get_now.actual=Date.now}}return _emscripten_get_now.actual()}function _emscripten_get_now_is_monotonic(){return ENVIRONMENT_IS_NODE||typeof dateNow!=="undefined"||(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&self["performance"]&&self["performance"]["now"]}function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if(clk_id===1&&_emscripten_get_now_is_monotonic()){now=_emscripten_get_now()}else{___setErrNo(ERRNO_CODES.EINVAL);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}function _glUniform2f(location,v0,v1){location=GL.uniforms[location];GLctx.uniform2f(location,v0,v1)}Module["_memset"]=_memset;var _BDtoILow=true;Module["_strlen"]=_strlen;Module["_strcat"]=_strcat;function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,normalized,stride,ptr)}Module["_bitshift64Shl"]=_bitshift64Shl;function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}function _glGetUniformLocation(program,name){name=Pointer_stringify(name);var arrayOffset=0;if(name.indexOf("]",name.length-1)!==-1){var ls=name.lastIndexOf("[");var arrayIndex=name.slice(ls+1,-1);if(arrayIndex.length>0){arrayOffset=parseInt(arrayIndex);if(arrayOffset<0){return-1}}name=name.slice(0,ls)}var ptable=GL.programInfos[program];if(!ptable){return-1}var utable=ptable.uniforms;var uniformInfo=utable[name];if(uniformInfo&&arrayOffset0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}if(Browser.mainLoop.method==="timeout"&&Module.ctx){Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!");Browser.mainLoop.method=""}Browser.mainLoop.runIter((function(){if(typeof arg!=="undefined"){Runtime.dynCall("vi",func,[arg])}else{Runtime.dynCall("v",func)}}));if(thisMainLoopId0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler();if(simulateInfiniteLoop){throw"SimulateInfiniteLoop"}}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:(function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++}),resume:(function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;_emscripten_set_main_loop(func,0,false,Browser.mainLoop.arg);_emscripten_set_main_loop_timing(timingMode,timingValue)}),updateStatus:(function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout((function(){finish(audio)}),1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);var canvas=Module["canvas"];function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===canvas||document["mozPointerLockElement"]===canvas||document["webkitPointerLockElement"]===canvas||document["msPointerLockElement"]===canvas}if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(function(){});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(function(){});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",(function(ev){if(!Browser.pointerLock&&canvas.requestPointerLock){canvas.requestPointerLock();ev.preventDefault()}}),false)}}}),createContext:(function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}canvas.style.backgroundColor="black"}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach((function(callback){callback()}));Browser.init()}return ctx}),destroyContext:(function(canvas,useWebGL,setInModule){}),fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:(function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullScreenChange(){Browser.isFullScreen=false;var canvasContainer=canvas.parentNode;if((document["webkitFullScreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"]||document["mozFullscreenElement"]||document["fullScreenElement"]||document["fullscreenElement"]||document["msFullScreenElement"]||document["msFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.cancelFullScreen=document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["webkitCancelFullScreen"]||document["msExitFullscreen"]||document["exitFullscreen"]||(function(){});canvas.cancelFullScreen=canvas.cancelFullScreen.bind(document);if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullScreen=true;if(Browser.resizeCanvas)Browser.setFullScreenCanvasSize()}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas)Browser.setWindowedCanvasSize()}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullScreen);Browser.updateCanvasDimensions(canvas)}if(!Browser.fullScreenHandlersInstalled){Browser.fullScreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullScreenChange,false);document.addEventListener("mozfullscreenchange",fullScreenChange,false);document.addEventListener("webkitfullscreenchange",fullScreenChange,false);document.addEventListener("MSFullscreenChange",fullScreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullScreen=canvasContainer["requestFullScreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullScreen"]?(function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}):null);canvasContainer.requestFullScreen()}),nextRAF:0,fakeRequestAnimationFrame:(function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)}),requestAnimationFrame:function requestAnimationFrame(func){if(typeof window==="undefined"){Browser.fakeRequestAnimationFrame(func)}else{if(!window.requestAnimationFrame){window.requestAnimationFrame=window["requestAnimationFrame"]||window["mozRequestAnimationFrame"]||window["webkitRequestAnimationFrame"]||window["msRequestAnimationFrame"]||window["oRequestAnimationFrame"]||Browser.fakeRequestAnimationFrame}window.requestAnimationFrame(func)}},safeCallback:(function(func){return(function(){if(!ABORT)return func.apply(null,arguments)})}),safeRequestAnimationFrame:(function(func){return Browser.requestAnimationFrame((function(){if(!ABORT)func()}))}),safeSetTimeout:(function(func,timeout){Module["noExitRuntime"]=true;return setTimeout((function(){if(!ABORT)func()}),timeout)}),safeSetInterval:(function(func,timeout){Module["noExitRuntime"]=true;return setInterval((function(){if(!ABORT)func()}),timeout)}),getMimetype:(function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]}),getUserMedia:(function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)}),getMovementX:(function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0}),getMovementY:(function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0}),getMouseWheelDelta:(function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail;break;case"mousewheel":delta=event.wheelDelta;break;case"wheel":delta=event["deltaY"];break;default:throw"unrecognized mouse wheel event: "+event.type}return delta}),mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:(function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){Browser.lastTouches[touch.identifier]=Browser.touches[touch.identifier];Browser.touches[touch.identifier]={x:adjustedX,y:adjustedY}}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}}),xhrLoad:(function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)}),asyncLoad:(function(url,onload,onerror,noRunDep){Browser.xhrLoad(url,(function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(!noRunDep)removeRunDependency("al "+url)}),(function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}}));if(!noRunDep)addRunDependency("al "+url)}),resizeListeners:[],updateResizeListeners:(function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach((function(listener){listener(canvas.width,canvas.height)}))}),setCanvasSize:(function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()}),windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags|8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),setWindowedCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags&~8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),updateCanvasDimensions:(function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h=0&&charCode<=31)return;Runtime.dynCall("vii",GLFW.active.charFunc,[GLFW.active.id,charCode])}),onKeyChanged:(function(event,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(event.keyCode);if(key==-1)return;GLFW.active.keys[key]=status;if(!GLFW.active.keyFunc)return;Runtime.dynCall("viiiii",GLFW.active.keyFunc,[GLFW.active.id,key,event.keyCode,status,GLFW.getModBits(GLFW.active)])}),onKeydown:(function(event){GLFW.onKeyChanged(event,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}}),onKeyup:(function(event){GLFW.onKeyChanged(event,0)}),onMousemove:(function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;Runtime.dynCall("vidd",GLFW.active.cursorPosFunc,[GLFW.active.id,Browser.mouseX,Browser.mouseY])}),onMouseButtonChanged:(function(event,status){if(!GLFW.active||!GLFW.active.mouseButtonFunc)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;if(status==1){try{event.target.setCapture()}catch(e){}}var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}Runtime.dynCall("viiii",GLFW.active.mouseButtonFunc,[GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active)])}),onMouseButtonDown:(function(event){if(!GLFW.active)return;GLFW.active.buttons|=1<0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}Runtime.dynCall("vidd",GLFW.active.scrollFunc,[GLFW.active.id,sx,sy]);event.preventDefault()}),onFullScreenEventChange:(function(event){if(!GLFW.active)return;if(document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.x=GLFW.active.y=0;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.width=screen.width;GLFW.active.height=screen.height}else{document.removeEventListener("fullscreenchange",GLFW.onFullScreenEventChange,true);document.removeEventListener("mozfullscreenchange",GLFW.onFullScreenEventChange,true);document.removeEventListener("webkitfullscreenchange",GLFW.onFullScreenEventChange,true);GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight}Browser.setCanvasSize(GLFW.active.width,GLFW.active.height);if(!GLFW.active.windowResizeFunc)return;Runtime.dynCall("viii",GLFW.active.windowResizeFunc,[GLFW.active.id,width,height])}),requestFullScreen:(function(){var RFS=Module["canvas"]["requestFullscreen"]||Module["canvas"]["requestFullScreen"]||Module["canvas"]["mozRequestFullScreen"]||Module["canvas"]["webkitRequestFullScreen"]||(function(){});RFS.apply(Module["canvas"],[])}),cancelFullScreen:(function(){var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["webkitCancelFullScreen"]||(function(){});CFS.apply(document,[])}),getTime:(function(){return _emscripten_get_now()/1e3}),setWindowTitle:(function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=Pointer_stringify(title);if(GLFW.active.id==win.id){document.title=win.title}}),setKeyCallback:(function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return;win.keyFunc=cbfun}),setCharCallback:(function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return;win.charFunc=cbfun}),setMouseButtonCallback:(function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return;win.mouseButtonFunc=cbfun}),setCursorPosCallback:(function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return;win.cursorPosFunc=cbfun}),setScrollCallback:(function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return;win.scrollFunc=cbfun}),setWindowSizeCallback:(function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return;win.windowSizeFunc=cbfun}),setWindowCloseCallback:(function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return;win.windowCloseFunc=cbfun}),setWindowRefreshCallback:(function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return;win.windowRefreshFunc=cbfun}),getKey:(function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]}),getMouseButton:(function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<0}),getCursorPos:(function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")}),getMousePos:(function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")}),setCursorPos:(function(winid,x,y){}),getWindowPos:(function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}setValue(x,wx,"i32");setValue(y,wy,"i32")}),setWindowPos:(function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y}),getWindowSize:(function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}setValue(width,ww,"i32");setValue(height,wh,"i32")}),setWindowSize:(function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){GLFW.requestFullScreen()}else{GLFW.cancelFullScreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowResizeFunc)return;Runtime.dynCall("viii",win.windowResizeFunc,[win.id,width,height])}),createWindow:(function(width,height,title,monitor,share){var i,id;for(i=0;i0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){GLFW.requestFullScreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}var win=new GLFW.Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id}),destroyWindow:(function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)Runtime.dynCall("vi",win.windowCloseFunc,[win.id]);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i>1]=values[i]}me.ret=allocate([arr+128*i16size],"i16*",ALLOC_NORMAL)}return me.ret}function _freelocale(locale){_free(locale)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _catgets(catd,set_id,msg_id,s){return s}function _glfwSetFramebufferSizeCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return;win.windowFramebufferSizeFunc=cbfun}function ___cxa_guard_acquire(variable){if(!HEAP8[variable>>0]){HEAP8[variable>>0]=1;return 1}return 0}function _glDeleteVertexArrays(n,vaos){for(var i=0;i>2];GL.currentContext.vaoExt.deleteVertexArrayOES(GL.vaos[id]);GL.vaos[id]=null}}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}function ___cxa_begin_catch(ptr){__ZSt18uncaught_exceptionv.uncaught_exception--;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}function _glfwTerminate(){window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwSetWindowUserPointer(winid,ptr){var win=GLFW.WindowFromId(winid);if(!win)return;win.userptr=ptr}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glGenVertexArrays(n,arrays){for(var i=0;i>2]=id}}var _cos=Math_cos;function _putchar(c){return _fputc(c,HEAP32[_stdout>>2])}function _glfwGetWindowUserPointer(winid){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.userptr}Module["_strcpy"]=_strcpy;function _glGetShaderiv(shader,pname,p){if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(!log)log="(unknown error)";HEAP32[p>>2]=log.length+1}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _atexit(func,arg){__ATEXIT__.unshift({func:func,arg:arg})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}Module["_i64Subtract"]=_i64Subtract;var _fabsf=Math_abs;Module["_i64Add"]=_i64Add;function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}EXCEPTIONS.clearRef(EXCEPTIONS.deAdjust(ptr));throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(asm["setTempRet0"](0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(asm["setTempRet0"](0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(asm["setTempRet0"](typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(asm["setTempRet0"](throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0}function __reallyNegative(x){return x<0||x===0&&1/x===-Infinity}function __formatString(format,varargs){var textIndex=format;var argIndex=0;function getNextArg(type){var ret;if(type==="double"){ret=(HEAP32[tempDoublePtr>>2]=HEAP32[varargs+argIndex>>2],HEAP32[tempDoublePtr+4>>2]=HEAP32[varargs+(argIndex+4)>>2],+HEAPF64[tempDoublePtr>>3])}else if(type=="i64"){ret=[HEAP32[varargs+argIndex>>2],HEAP32[varargs+(argIndex+4)>>2]]}else{type="i32";ret=HEAP32[varargs+argIndex>>2]}argIndex+=Runtime.getNativeFieldSize(type);return ret}var ret=[];var curr,next,currArg;while(1){var startTextIndex=textIndex;curr=HEAP8[textIndex>>0];if(curr===0)break;next=HEAP8[textIndex+1>>0];if(curr==37){var flagAlwaysSigned=false;var flagLeftAlign=false;var flagAlternative=false;var flagZeroPad=false;var flagPadSign=false;flagsLoop:while(1){switch(next){case 43:flagAlwaysSigned=true;break;case 45:flagLeftAlign=true;break;case 35:flagAlternative=true;break;case 48:if(flagZeroPad){break flagsLoop}else{flagZeroPad=true;break};case 32:flagPadSign=true;break;default:break flagsLoop}textIndex++;next=HEAP8[textIndex+1>>0]}var width=0;if(next==42){width=getNextArg("i32");textIndex++;next=HEAP8[textIndex+1>>0]}else{while(next>=48&&next<=57){width=width*10+(next-48);textIndex++;next=HEAP8[textIndex+1>>0]}}var precisionSet=false,precision=-1;if(next==46){precision=0;precisionSet=true;textIndex++;next=HEAP8[textIndex+1>>0];if(next==42){precision=getNextArg("i32");textIndex++}else{while(1){var precisionChr=HEAP8[textIndex+1>>0];if(precisionChr<48||precisionChr>57)break;precision=precision*10+(precisionChr-48);textIndex++}}next=HEAP8[textIndex+1>>0]}if(precision<0){precision=6;precisionSet=false}var argSize;switch(String.fromCharCode(next)){case"h":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==104){textIndex++;argSize=1}else{argSize=2}break;case"l":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==108){textIndex++;argSize=8}else{argSize=4}break;case"L":case"q":case"j":argSize=8;break;case"z":case"t":case"I":argSize=4;break;default:argSize=null}if(argSize)textIndex++;next=HEAP8[textIndex+1>>0];switch(String.fromCharCode(next)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":{var signed=next==100||next==105;argSize=argSize||4;var currArg=getNextArg("i"+argSize*8);var origArg=currArg;var argText;if(argSize==8){currArg=Runtime.makeBigInt(currArg[0],currArg[1],next==117)}if(argSize<=4){var limit=Math.pow(256,argSize)-1;currArg=(signed?reSign:unSign)(currArg&limit,argSize*8)}var currAbsArg=Math.abs(currArg);var prefix="";if(next==100||next==105){if(argSize==8&&i64Math)argText=i64Math.stringify(origArg[0],origArg[1],null);else argText=reSign(currArg,8*argSize,1).toString(10)}else if(next==117){if(argSize==8&&i64Math)argText=i64Math.stringify(origArg[0],origArg[1],true);else argText=unSign(currArg,8*argSize,1).toString(10);currArg=Math.abs(currArg)}else if(next==111){argText=(flagAlternative?"0":"")+currAbsArg.toString(8)}else if(next==120||next==88){prefix=flagAlternative&&currArg!=0?"0x":"";if(argSize==8&&i64Math){if(origArg[1]){argText=(origArg[1]>>>0).toString(16);var lower=(origArg[0]>>>0).toString(16);while(lower.length<8)lower="0"+lower;argText+=lower}else{argText=(origArg[0]>>>0).toString(16)}}else if(currArg<0){currArg=-currArg;argText=(currAbsArg-1).toString(16);var buffer=[];for(var i=0;i=0){if(flagAlwaysSigned){prefix="+"+prefix}else if(flagPadSign){prefix=" "+prefix}}if(argText.charAt(0)=="-"){prefix="-"+prefix;argText=argText.substr(1)}while(prefix.length+argText.lengthexponent&&exponent>=-4){next=(next==103?"f":"F").charCodeAt(0);precision-=exponent+1}else{next=(next==103?"e":"E").charCodeAt(0);precision--}effectivePrecision=Math.min(precision,20)}if(next==101||next==69){argText=currArg.toExponential(effectivePrecision);if(/[eE][-+]\d$/.test(argText)){argText=argText.slice(0,-1)+"0"+argText.slice(-1)}}else if(next==102||next==70){argText=currArg.toFixed(effectivePrecision);if(currArg===0&&__reallyNegative(currArg)){argText="-"+argText}}var parts=argText.split("e");if(isGeneral&&!flagAlternative){while(parts[0].length>1&&parts[0].indexOf(".")!=-1&&(parts[0].slice(-1)=="0"||parts[0].slice(-1)==".")){parts[0]=parts[0].slice(0,-1)}}else{if(flagAlternative&&argText.indexOf(".")==-1)parts[0]+=".";while(precision>effectivePrecision++)parts[0]+="0"}argText=parts[0]+(parts.length>1?"e"+parts[1]:"");if(next==69)argText=argText.toUpperCase();if(currArg>=0){if(flagAlwaysSigned){argText="+"+argText}else if(flagPadSign){argText=" "+argText}}}while(argText.length>0])}}else{ret=ret.concat(intArrayFromString("(null)".substr(0,argLength),true))}if(flagLeftAlign){while(argLength0){ret.push(32)}if(!flagLeftAlign)ret.push(getNextArg("i8"));break};case"n":{var ptr=getNextArg("i32*");HEAP32[ptr>>2]=ret.length;break};case"%":{ret.push(curr);break};default:{for(var i=startTextIndex;i>0])}}}textIndex+=2}else{ret.push(curr);textIndex+=1}}return ret}function _fprintf(stream,format,varargs){var result=__formatString(format,varargs);var stack=Runtime.stackSave();var ret=_fwrite(allocate(result,"i8",ALLOC_STACK),1,result.length,stream);Runtime.stackRestore(stack);return ret}function _printf(format,varargs){var stdout=HEAP32[_stdout>>2];return _fprintf(stdout,format,varargs)}function _open(path,oflag,varargs){var mode=HEAP32[varargs>>2];path=Pointer_stringify(path);try{var stream=FS.open(path,oflag,mode);return stream.fd}catch(e){FS.handleFSError(e);return-1}}function _fopen(filename,mode){var flags;mode=Pointer_stringify(mode);if(mode[0]=="r"){if(mode.indexOf("+")!=-1){flags=2}else{flags=0}}else if(mode[0]=="w"){if(mode.indexOf("+")!=-1){flags=2}else{flags=1}flags|=64;flags|=512}else if(mode[0]=="a"){if(mode.indexOf("+")!=-1){flags=2}else{flags=1}flags|=64;flags|=1024}else{___setErrNo(ERRNO_CODES.EINVAL);return 0}var fd=_open(filename,flags,allocate([511,0,0,0],"i32",ALLOC_STACK));return fd===-1?0:FS.getPtrForStream(FS.getStream(fd))}Module["_strncpy"]=_strncpy;Module["_saveSetjmp"]=_saveSetjmp;var _log=Math_log;var _emscripten_postinvoke=true;var PTHREAD_SPECIFIC_NEXT_KEY=1;function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}function _glClear(x0){GLctx.clear(x0)}function _glActiveTexture(x0){GLctx.activeTexture(x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glBindBuffer(target,buffer){var bufferObj=buffer?GL.buffers[buffer]:null;GLctx.bindBuffer(target,bufferObj)}Module["_bitshift64Lshr"]=_bitshift64Lshr;var _emscripten_prep_setjmp=true;function _glBufferData(target,size,data,usage){switch(usage){case 35041:case 35042:usage=35040;break;case 35045:case 35046:usage=35044;break;case 35049:case 35050:usage=35048;break}if(!data){GLctx.bufferData(target,size,usage)}else{GLctx.bufferData(target,HEAPU8.subarray(data,data+size),usage)}}function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}var _BDtoIHigh=true;function _pthread_cond_broadcast(){return 0}Module["_testSetjmp"]=_testSetjmp;function _longjmp(env,value){asm["setThrew"](env,value||1);throw"longjmp"}function _emscripten_longjmp(env,value){_longjmp(env,value)}var _environ=allocate(1,"i32*",ALLOC_STATIC);var ___environ=_environ;function ___buildEnvironment(env){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV["USER"]="web_user";ENV["PATH"]="/";ENV["PWD"]="/";ENV["HOME"]="/home/web_user";ENV["LANG"]="C";ENV["_"]=Module["thisProgram"];poolPtr=allocate(TOTAL_ENV_SIZE,"i8",ALLOC_STATIC);envPtr=allocate(MAX_ENV_VALUES*4,"i8*",ALLOC_STATIC);HEAP32[envPtr>>2]=poolPtr;HEAP32[_environ>>2]=envPtr}else{envPtr=HEAP32[_environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in env){if(typeof env[key]==="string"){var line=key+"="+env[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}var ENV={};function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocate(intArrayFromString(ENV[name]),"i8",ALLOC_NORMAL);return _getenv.ret}function _glGetError(){if(GL.lastError){var error=GL.lastError;GL.lastError=0;return error}else{return GLctx.getError()}}function _vfprintf(s,f,va_arg){return _fprintf(s,f,HEAP32[va_arg>>2])}function _pthread_mutex_unlock(){}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glBindVertexArray(vao){GL.currentContext.vaoExt.bindVertexArrayOES(GL.vaos[vao])}var _llvm_pow_f64=Math_pow;function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=(function(){abort("cannot dynamically allocate, sbrk now has control")})}var ret=DYNAMICTOP;if(bytes!=0)self.alloc(bytes);return ret}function ___errno_location(){return ___errno_state}function _strerror_r(errnum,strerrbuf,buflen){if(errnum in ERRNO_MESSAGES){if(ERRNO_MESSAGES[errnum].length>buflen-1){return ___setErrNo(ERRNO_CODES.ERANGE)}else{var msg=ERRNO_MESSAGES[errnum];writeAsciiToMemory(msg,strerrbuf);return 0}}else{return ___setErrNo(ERRNO_CODES.EINVAL)}}function _strerror(errnum){if(!_strerror.buffer)_strerror.buffer=_malloc(256);_strerror_r(errnum,_strerror.buffer,256);return _strerror.buffer}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);return 1}function _catclose(catd){return 0}Module["_llvm_bswap_i32"]=_llvm_bswap_i32;function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function ___cxa_guard_release(){}function _ungetc(c,stream){stream=FS.getStreamFromPtr(stream);if(!stream){return-1}if(c===-1){return c}c=unSign(c&255);stream.ungotten.push(c);stream.eof=false;return c}function _uselocale(locale){var old=LOCALE.curr;if(locale)LOCALE.curr=locale;return old}function _glUseProgram(program){GLctx.useProgram(program?GL.programs[program]:null)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(pixels){var data=GL.getTexPixelData(type,format,width,height,pixels,internalFormat);pixels=data.pixels;internalFormat=data.internalFormat}else{pixels=null}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 79:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}var _SItoD=true;var _SItoF=true;function _recv(fd,buf,len,flags){var sock=SOCKFS.getSocket(fd);if(!sock){___setErrNo(ERRNO_CODES.EBADF);return-1}return _read(fd,buf,len)}function _pread(fildes,buf,nbyte,offset){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}try{var slab=HEAP8;return FS.read(stream,slab,buf,nbyte,offset)}catch(e){FS.handleFSError(e);return-1}}function _read(fildes,buf,nbyte){var stream=FS.getStream(fildes);if(!stream){___setErrNo(ERRNO_CODES.EBADF);return-1}try{var slab=HEAP8;return FS.read(stream,slab,buf,nbyte)}catch(e){FS.handleFSError(e);return-1}}function _fread(ptr,size,nitems,stream){var bytesToRead=nitems*size;if(bytesToRead==0){return 0}var bytesRead=0;var streamObj=FS.getStreamFromPtr(stream);if(!streamObj){___setErrNo(ERRNO_CODES.EBADF);return 0}while(streamObj.ungotten.length&&bytesToRead>0){HEAP8[ptr++>>0]=streamObj.ungotten.pop();bytesToRead--;bytesRead++}var err=_read(streamObj.fd,ptr,bytesToRead);if(err==-1){if(streamObj)streamObj.error=true;return 0}bytesRead+=err;if(bytesRead0&&infoLog){writeStringToMemory(log,infoLog);if(length)HEAP32[length>>2]=log.length}else{if(length)HEAP32[length>>2]=0}}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]);return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?Pointer_stringify(tm_zone):""};var pattern=Pointer_stringify(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":(function(date){return WEEKDAYS[date.tm_wday].substring(0,3)}),"%A":(function(date){return WEEKDAYS[date.tm_wday]}),"%b":(function(date){return MONTHS[date.tm_mon].substring(0,3)}),"%B":(function(date){return MONTHS[date.tm_mon]}),"%C":(function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)}),"%d":(function(date){return leadingNulls(date.tm_mday,2)}),"%e":(function(date){return leadingSomething(date.tm_mday,2," ")}),"%g":(function(date){return getWeekBasedYear(date).toString().substring(2)}),"%G":(function(date){return getWeekBasedYear(date)}),"%H":(function(date){return leadingNulls(date.tm_hour,2)}),"%I":(function(date){return leadingNulls(date.tm_hour<13?date.tm_hour:date.tm_hour-12,2)}),"%j":(function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)}),"%m":(function(date){return leadingNulls(date.tm_mon+1,2)}),"%M":(function(date){return leadingNulls(date.tm_min,2)}),"%n":(function(){return"\n"}),"%p":(function(date){if(date.tm_hour>0&&date.tm_hour<13){return"AM"}else{return"PM"}}),"%S":(function(date){return leadingNulls(date.tm_sec,2)}),"%t":(function(){return"\t"}),"%u":(function(date){var day=new Date(date.tm_year+1900,date.tm_mon+1,date.tm_mday,0,0,0,0);return day.getDay()||7}),"%U":(function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"}),"%V":(function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)}),"%Z":(function(date){return date.tm_zone}),"%%":(function(){return"%"})};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _abort(){Module["abort"]()}function _glDeleteBuffers(n,buffers){for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GL.currArrayBuffer)GL.currArrayBuffer=0;if(id==GL.currElementArrayBuffer)GL.currElementArrayBuffer=0}}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Runtime.dynCall("v",func);_pthread_once.seen[ptr]=1}function _glfwMakeContextCurrent(winid){}var _tan=Math_tan;function _emscripten_asm_const(code){Runtime.getAsmConst(code,0)()}function _glEnable(x0){GLctx.enable(x0)}var _fabs=Math_abs;var _floor=Math_floor;function _fgetc(stream){var streamObj=FS.getStreamFromPtr(stream);if(!streamObj)return-1;if(streamObj.eof||streamObj.error)return-1;var ret=_fread(_fgetc.ret,1,1,stream);if(ret==0){return-1}else if(ret==-1){streamObj.error=true;return-1}else{return HEAPU8[_fgetc.ret>>0]}}function _getc(){return _fgetc.apply(null,arguments)}var _sqrt=Math_sqrt;function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glGenBuffers(n,buffers){for(var i=0;i>2]=id}}function _malloc(bytes){var ptr=Runtime.dynamicAlloc(bytes+8);return ptr+8&4294967288}Module["_malloc"]=_malloc;function ___cxa_allocate_exception(size){return _malloc(size)}var _sin=Math_sin;function _glBlendFunc(x0,x1){GLctx.blendFunc(x0,x1)}function _FreeImage_ConvertToRGBF(){Module["printErr"]("missing function: FreeImage_ConvertToRGBF");abort(-1)}var _ceilf=Math_ceil;function ___cxa_pure_virtual(){ABORT=true;throw"Pure virtual function called!"}function _SoundManagerAdd(){Module["printErr"]("missing function: SoundManagerAdd");abort(-1)}function _glViewport(x0,x1,x2,x3){GLctx.viewport(x0,x1,x2,x3)}function _glfwPollEvents(){}function _catopen(name,oflag){return-1}function ___ctype_toupper_loc(){var me=___ctype_toupper_loc;if(!me.ret){var values=[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255];var i32size=4;var arr=_malloc(values.length*i32size);for(var i=0;i>2]=values[i]}me.ret=allocate([arr+128*i32size],"i32*",ALLOC_NORMAL)}return me.ret}function ___ctype_tolower_loc(){var me=___ctype_tolower_loc;if(!me.ret){var values=[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255];var i32size=4;var arr=_malloc(values.length*i32size);for(var i=0;i>2]=values[i]}me.ret=allocate([arr+128*i32size],"i32*",ALLOC_NORMAL)}return me.ret}function _glUniformMatrix4fv(location,count,transpose,value){location=GL.uniforms[location];var view;if(count===1){view=GL.miniTempBufferViews[15];for(var i=0;i<16;i++){view[i]=HEAPF32[value+i*4>>2]}}else{view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(location,transpose,view)}var _emscripten_setjmp=true;var _BItoD=true;function _glTexParameteri(x0,x1,x2){GLctx.texParameteri(x0,x1,x2)}function _glfwSetKeyCallback(winid,cbfun){GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){GLFW.setMouseButtonCallback(winid,cbfun)}var _atan2=Math_atan2;var _exp=Math_exp;function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function _glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function __ZN4half8_toFloatE(){Module["printErr"]("missing function: _ZN4half8_toFloatE");abort(-1)}var ___dso_handle=allocate(1,"i32*",ALLOC_STATIC);FS.staticInit();__ATINIT__.unshift({func:(function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()})});__ATMAIN__.push({func:(function(){FS.ignorePermissions=false})});__ATEXIT__.push({func:(function(){FS.quit()})});Module["FS_createFolder"]=FS.createFolder;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createLink"]=FS.createLink;Module["FS_createDevice"]=FS.createDevice;___errno_state=Runtime.staticAlloc(4);HEAP32[___errno_state>>2]=0;__ATINIT__.unshift({func:(function(){TTY.init()})});__ATEXIT__.push({func:(function(){TTY.shutdown()})});TTY.utf8=new Runtime.UTF8Processor;if(ENVIRONMENT_IS_NODE){var fs=require("fs");NODEFS.staticInit()}var GLctx;GL.init();_fputc.ret=allocate([0],"i8",ALLOC_STATIC);__ATINIT__.push({func:(function(){SOCKFS.root=FS.mount(SOCKFS,{},null)})});Module["requestFullScreen"]=function Module_requestFullScreen(lockPointer,resizeCanvas){Browser.requestFullScreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};___buildEnvironment(ENV);_fgetc.ret=allocate([0],"i8",ALLOC_STATIC);STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE>2]=0;k=f+0|0;j=k+12|0;do{a[k>>0]=0;k=k+1|0}while((k|0)<(j|0));j=b+12|0;j=Ed[(d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24)&511](e)|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](f,1,12,e)|0;b=b+8|0;Hd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](e,j,0)|0;if(ffa(304976,f,12)|0){h=0;i=n;return h|0}g=g&32768;j=g>>>15;f=c[h+8>>2]|0;$z(l);k=_z(2)|0;Xz(k,0,0)|0;Yz(k,125,0)|0;Zz(k,126,0)|0;if(!(aA(k,l)|0)){n=gc(4)|0;c[n>>2]=305048;qd(n|0,366936,0)}if(!(bA(f,k,m)|0)){n=gc(4)|0;c[n>>2]=305080;qd(n|0,366936,0)}if(g){f=cJ(c[76238]|0,c[m>>2]|0,j)|0;if(!f){n=gc(4)|0;c[n>>2]=305112;qd(n|0,366936,0)}kA(k);By(c[m>>2]|0);h=f;i=n;return h|0}if(!(cA(k,f,c[m>>2]|0)|0)){n=gc(4)|0;c[n>>2]=305144;qd(n|0,366936,0)}if(!(jA(k,f)|0)){n=gc(4)|0;c[n>>2]=305144;qd(n|0,366936,0)}kA(k);f=cJ(c[76238]|0,c[m>>2]|0,j)|0;if(!f){n=gc(4)|0;c[n>>2]=305112;qd(n|0,366936,0)}By(c[m>>2]|0);h=f;i=n;return h|0}function tU(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0.0,l=0,m=0;m=i;i=i+18704|0;l=m;if(!((d|0)!=0&(e|0)!=0&(j|0)!=0)){d=0;i=m;return d|0}e=c[j+8>>2]|0;eA(l);b=l+4788|0;c[b>>2]=0;if(!h)k=16.0;else k=+(h&1023|0);g[l+4792>>2]=k;c[b>>2]=1;c[l+20>>2]=1;f=dJ(c[76238]|0,d,l)|0;if(!f){d=0;i=m;return d|0}a[l+18690>>0]=(c[f+16>>2]|0)==3&1;j=dA(2)|0;Xz(j,0,0)|0;Yz(j,125,0)|0;Zz(j,126,0)|0;fA(j,l,f)|0;if(!(gA(j,f,e)|0)){d=gc(4)|0;c[d>>2]=304992;qd(d|0,366936,0)}b=(hA(j,e)|0)!=0;if(b)b=(iA(j,e)|0)!=0&1;else b=b&1;if(!b){d=gc(4)|0;c[d>>2]=304992;qd(d|0,366936,0)}kA(j);By(f);d=1;i=m;return d|0}function uU(b,c){b=b|0;c=c|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g;f=e+0|0;h=f+12|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(h|0));h=b+12|0;h=Ed[(d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24)&511](c)|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](e,1,12,c)|0;f=b+8|0;Hd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](c,h,0)|0;h=(ffa(304976,e,12)|0)==0&1;i=g;return h|0}function vU(){return 304960}function wU(a){a=a|0;return ((a&-17|0)==8|(a|0)==32)&1|0}function xU(a){a=a|0;a=a+-1|0;if(a>>>0>=10){a=0;return a|0}a=771>>>(a&1023)&1;return a|0}function yU(b){b=b|0;a[(c[b+24>>2]|0)+40>>0]=1;return}function zU(b){b=b|0;var e=0,f=0,g=0,h=0;f=c[b+24>>2]|0;e=c[f+32>>2]|0;h=f+36|0;e=Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](c[h>>2]|0,1,4096,c[f+28>>2]|0)|0;g=f+40|0;if(e){b=c[h>>2]|0;c[f>>2]=b;b=f+4|0;c[b>>2]=e;a[g>>0]=0;return 1}if(!(a[g>>0]|0))e=b;else{eF(b);e=c[b>>2]|0;c[e+20>>2]=43;Bd[c[e>>2]&511](b);e=b}e=c[e>>2]|0;c[e+20>>2]=123;Cd[c[e+4>>2]&255](b,-1);a[c[h>>2]>>0]=-1;a[(c[h>>2]|0)+1>>0]=-39;e=2;b=c[h>>2]|0;c[f>>2]=b;b=f+4|0;c[b>>2]=e;a[g>>0]=0;return 1}function AU(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=b+24|0;k=c[j>>2]|0;if((e|0)<=0)return;l=k+4|0;f=c[l>>2]|0;a:do if((f|0)<(e|0)){i=k;while(1){e=e-f|0;f=c[i+32>>2]|0;g=i+36|0;f=Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](c[g>>2]|0,1,4096,c[i+28>>2]|0)|0;h=i+40|0;if(!f){if(a[h>>0]|0){eF(b);f=c[b>>2]|0;c[f+20>>2]=43;Bd[c[f>>2]&511](b)}f=c[b>>2]|0;c[f+20>>2]=123;Cd[c[f+4>>2]&255](b,-1);a[c[g>>2]>>0]=-1;a[(c[g>>2]|0)+1>>0]=-39;f=2}c[i>>2]=c[g>>2];c[i+4>>2]=f;a[h>>0]=0;f=c[l>>2]|0;if((e|0)<=(f|0))break a;i=c[j>>2]|0}}while(0);c[k>>2]=(c[k>>2]|0)+e;c[l>>2]=f-e;return}function BU(a){a=a|0;return}function CU(a){a=a|0;var b=0;b=c[a+24>>2]|0;a=Hd[c[c[a+4>>2]>>2]&255](a,1,4096)|0;c[b+28>>2]=a;c[b>>2]=a;c[b+4>>2]=4096;return}function DU(a){a=a|0;var b=0,e=0,f=0;b=c[a+24>>2]|0;f=(c[b+24>>2]|0)+4|0;e=b+28|0;if((Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](c[e>>2]|0,1,4096,c[b+20>>2]|0)|0)==4096){a=c[e>>2]|0;c[b>>2]=a;a=b+4|0;c[a>>2]=4096;return 1}eF(a);f=c[a>>2]|0;c[f+20>>2]=38;Bd[c[f>>2]&511](a);a=c[e>>2]|0;c[b>>2]=a;a=b+4|0;c[a>>2]=4096;return 1}function EU(a){a=a|0;var b=0,e=0,f=0;b=c[a+24>>2]|0;f=c[b+4>>2]|0;e=4096-f|0;if((f|0)==4096)return;f=(c[b+24>>2]|0)+4|0;if((Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](c[b+28>>2]|0,1,e,c[b+20>>2]|0)|0)==(e|0))return;eF(a);f=c[a>>2]|0;c[f+20>>2]=38;Bd[c[f>>2]&511](a);return}function FU(){return 305792}function GU(){return 305768}function HU(){return 305744}function IU(){return 305736}function JU(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0.0;L=i;i=i+3072|0;I=L+456|0;K=4;J=qea(40)|0;c[J>>2]=0;D=L+1784|0;E=L+472|0;B=L+2808|0;F=L+464|0;C=L;n=L+1496|0;G=L+460|0;if(!g){M=0;rea(J|0);i=L;return M|0}c[F>>2]=0;z=j&32768;A=(z|0)==0;z=z>>>15;s=0;k=na(224,n|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)!=1){c[C>>2]=k;c[n>>2]=288;c[n+8>>2]=289;J=Afa(n+132|0,1,J|0,K|0)|0;K=H;s=0;h=s;s=0;if((h|0)!=0&(t|0)!=0){k=Cfa(c[h>>2]|0,J|0,K|0)|0;if(!k)Ua(h|0,t|0);H=t}else k=-1;if((k|0)!=1)k=0;else k=H}else k=H;a:while(1){if(k){s=0;ka(290,C|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}s=0;k=na(225,4)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}c[k>>2]=0;s=0;Da(124,k|0,366936,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}else{M=9;break}}s=0;Da(125,C|0,90,456);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}o=C+24|0;k=c[o>>2]|0;if(!k){k=C+4|0;s=0;n=qa(c[c[k>>2]>>2]|0,C|0,0,44)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}c[o>>2]=n;s=0;k=qa(c[c[k>>2]>>2]|0,C|0,0,4096)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}c[n+36>>2]=k;k=c[o>>2]|0}c[k+8>>2]=291;c[k+12>>2]=226;c[k+16>>2]=127;c[k+20>>2]=254;c[k+24>>2]=292;c[k+28>>2]=g;c[k+32>>2]=f;c[k+4>>2]=0;c[k>>2]=0;s=0;Da(126,C|0,254,65535);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}h=0;while(1){s=0;Da(126,C|0,h+224|0,65535);k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue a}h=h+1|0;if((h|0)>=16)break}s=0;ya(282,C|0,1)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}k=j>>16;if((k|0)>0){N=+((c[C+28>>2]|0)>>>0);l=+((c[C+32>>2]|0)>>>0);l=(N>l?N:l)/+(k|0);if(!(l>=8.0))if(!(l>=4.0))if(!(l>=2.0))q=1;else q=2;else q=4;else q=8}else q=1;c[C+48>>2]=1;c[C+52>>2]=q;if(!(j&2)){c[C+68>>2]=1;a[C+72>>0]=0}if(j&16)c[C+44>>2]=1;s=0;na(227,C|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}y=C+104|0;k=c[y>>2]|0;do if((k|0)==4?(c[C+44>>2]|0)==4:0){m=c[C+92>>2]|0;k=c[C+96>>2]|0;if(!(j&4)){s=0;k=ia(4,z|0,m|0,k|0,24,16711680,65280,255)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}c[F>>2]=k;if(k)break;s=0;k=na(225,4)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}c[k>>2]=315016;s=0;Da(124,k|0,366936,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}else{M=44;break a}}s=0;k=ia(4,z|0,m|0,k|0,32,16711680,65280,255)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}c[F>>2]=k;if(!k){s=0;k=na(225,4)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){m=Cfa(c[h>>2]|0,J|0,K|0)|0;if(!m)Ua(h|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue a}c[k>>2]=315016;s=0;Da(124,k|0,366936,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}else{M=37;break a}}else{s=0;k=na(228,k|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}b[k>>1]=e[k>>1]|1;break}}else M=45;while(0);if((M|0)==45){M=0;s=0;k=ia(4,z|0,c[C+92>>2]|0,c[C+96>>2]|0,k<<3|0,16711680,65280,255)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}c[F>>2]=k;if(!k){s=0;k=na(225,4)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}c[k>>2]=315016;s=0;Da(124,k|0,366936,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}else{M=49;break}}if((c[y>>2]|0)==1){s=0;h=na(229,k|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}k=0;do{x=k&255;a[h+(k<<2)+2>>0]=x;a[h+(k<<2)+1>>0]=x;a[h+(k<<2)>>0]=x;k=k+1|0}while((k|0)!=256)}}if((q|0)!=1){u=c[F>>2]|0;k=c[C+28>>2]|0;q=c[C+32>>2]|0;s=0;r=Aa(158)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}if(r){s=0;c[I>>2]=k;qa(179,B|0,305680,I|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}s=0;k=na(230,B|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}h=k+1|0;s=0;ya(283,r|0,305688)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}s=0;ya(284,r|0,h|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}s=0;ya(285,r|0,h|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}s=0;ya(286,r|0,2)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}s=0;ya(287,r|0,B|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}s=0;k=na(231,r|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}s=0;Ga(141,0,u|0,k|0,r|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}s=0;c[I>>2]=q;qa(179,B|0,305680,I|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}s=0;k=na(230,B|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}h=k+1|0;s=0;ya(283,r|0,305712)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}s=0;ya(284,r|0,h|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}s=0;ya(285,r|0,h|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}s=0;ya(286,r|0,2)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}s=0;ya(287,r|0,B|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}s=0;k=na(231,r|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}s=0;Ga(141,0,u|0,k|0,r|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}s=0;ka(293,r|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}}}k=a[C+259>>0]|0;if(k<<24>>24==2){s=0;la(128,c[F>>2]|0,(e[C+260>>1]|0)*100|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}s=0;la(129,c[F>>2]|0,(e[C+262>>1]|0)*100|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}}else if(k<<24>>24==1){s=0;la(128,c[F>>2]|0,~~(+(e[C+260>>1]|0)/.0254+.5)>>>0|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}s=0;la(129,c[F>>2]|0,~~(+(e[C+262>>1]|0)/.0254+.5)>>>0|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}}x=c[F>>2]|0;v=C+276|0;k=c[v>>2]|0;if(!k)q=0;else{w=C+256|0;while(1){m=d[k+4>>0]|0;do if((m|0)==254){m=c[k+16>>2]|0;h=c[k+12>>2]|0;q=h+1|0;s=0;p=na(232,q|0)|0;o=s;s=0;if((o|0)!=0&(t|0)!=0){n=Cfa(c[o>>2]|0,J|0,K|0)|0;if(!n)Ua(o|0,t|0);H=t}else n=-1;if((n|0)==1){k=H;continue a}if(p){qfa(p|0,m|0,h|0)|0;a[p+h>>0]=0;s=0;r=Aa(158)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}if(r){s=0;ya(290,r|0,254)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;ya(283,r|0,305400)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;ya(284,r|0,q|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;ya(285,r|0,q|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;ya(286,r|0,2)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;ya(287,r|0,p|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;m=na(231,r|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){o=Cfa(c[h>>2]|0,J|0,K|0)|0;if(!o)Ua(h|0,t|0);H=t}else o=-1;if((o|0)==1){k=H;continue a}s=0;Ga(141,0,x|0,m|0,r|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;ka(293,r|0);m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}}s=0;ka(296,p|0);m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}}}else if((m|0)==225){p=k+16|0;u=k+12|0;s=0;qa(182,x|0,c[p>>2]|0,c[u>>2]|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}q=c[p>>2]|0;m=c[u>>2]|0;do if(m>>>0>=30){s=0;h=qa(180,305320,q|0,28)|0;o=s;s=0;if((o|0)!=0&(t|0)!=0){n=Cfa(c[o>>2]|0,J|0,K|0)|0;if(!n)Ua(o|0,t|0);H=t}else n=-1;if((n|0)==1){k=H;continue a}if(h)break;r=m+-29|0;s=0;n=Aa(158)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}if(!n)break;q=q+29|0;s=0;ya(290,n|0,225)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;ya(283,n|0,312328)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;ya(284,n|0,r|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;ya(285,n|0,r|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;ya(286,n|0,2)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;ya(287,n|0,q|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;m=na(231,n|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){o=Cfa(c[h>>2]|0,J|0,K|0)|0;if(!o)Ua(h|0,t|0);H=t}else o=-1;if((o|0)==1){k=H;continue a}s=0;Ga(141,7,x|0,m|0,n|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;ka(293,n|0);m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}}while(0);s=0;qa(183,x|0,c[p>>2]|0,c[u>>2]|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}}else if((m|0)==224){q=k+16|0;m=c[q>>2]|0;s=0;h=qa(180,m|0,305624,5)|0;o=s;s=0;if((o|0)!=0&(t|0)!=0){n=Cfa(c[o>>2]|0,J|0,K|0)|0;if(!n)Ua(o|0,t|0);H=t}else n=-1;if((n|0)==1){k=H;continue a}if(h){s=0;h=qa(180,m|0,305632,5)|0;o=s;s=0;if((o|0)!=0&(t|0)!=0){n=Cfa(c[o>>2]|0,J|0,K|0)|0;if(!n)Ua(o|0,t|0);H=t}else n=-1;if((n|0)==1){k=H;continue a}if(h)break;p=c[w>>2]|0;if((p&255)<<24>>24==0|(p>>>16&255)<2){s=0;Da(127,c[76304]|0,305640,I|0);m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}m=c[q>>2]|0}h=c[k+12>>2]|0;if(h>>>0<6)break;if((a[m+5>>0]|0)!=16)break;s=0;o=ya(288,m+6|0,h+-6|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;n=qa(181,2,o|0,0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;ka(294,o|0);m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;ya(289,x|0,n|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;ka(295,n|0);m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}}}else if((m|0)==237){s=0;qa(184,x|0,c[k+16>>2]|0,c[k+12>>2]|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}}while(0);k=c[k>>2]|0;if(!k)break}q=c[v>>2]|0}sfa(B|0,0,256)|0;b:do if(q){r=q;h=0;while(1){do if((a[r+4>>0]|0)==-30){p=c[r+12>>2]|0;if(p>>>0<=13)break;n=c[r+16>>2]|0;s=0;k=qa(180,305384,n|0,12)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){o=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!o)Ua(m|0,t|0);H=t}else o=-1;if((o|0)==1){k=H;continue a}if(k)break;k=d[n+13>>0]|0;if(h){if((h|0)!=(k|0)){n=0;k=0;h=0;break b}}else h=k;w=a[n+12>>0]|0;k=w&255;if(w<<24>>24==0|(k|0)>(h|0)){n=0;k=0;h=0;break b}m=B+k|0;if(a[m>>0]|0){n=0;k=0;h=0;break b}a[m>>0]=1;c[D+(k<<2)>>2]=p+-14}while(0);r=c[r>>2]|0;if(!r)break}if((h|0)>=1){m=1;k=0;while(1){if(!(a[B+m>>0]|0)){n=0;k=0;h=0;break b}c[E+(m<<2)>>2]=k;k=(c[D+(m<<2)>>2]|0)+k|0;if((m|0)>=(h|0))break;else m=m+1|0}if(k){s=0;h=na(232,k|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){n=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!n)Ua(m|0,t|0);H=t}else n=-1;if((n|0)==1){k=H;continue a}m=(h|0)==0;if(m){n=m&1^1;k=m?0:k;h=0;break}while(1){do if((a[q+4>>0]|0)==-30){if((c[q+12>>2]|0)>>>0<=13)break;p=c[q+16>>2]|0;s=0;m=qa(180,305384,p|0,12)|0;o=s;s=0;if((o|0)!=0&(t|0)!=0){n=Cfa(c[o>>2]|0,J|0,K|0)|0;if(!n)Ua(o|0,t|0);H=t}else n=-1;if((n|0)==1){k=H;continue a}if(m)break;m=d[p+12>>0]|0;o=c[D+(m<<2)>>2]|0;if(!o)break;n=h+(c[E+(m<<2)>>2]|0)|0;m=p+14|0;while(1){o=o+-1|0;a[n>>0]=a[m>>0]|0;if(!o)break;else{n=n+1|0;m=m+1|0}}}while(0);q=c[q>>2]|0;if(!q){n=1;break}}}else{n=0;k=0;h=0}}else{n=0;k=0;h=0}}else{n=0;k=0;h=0}while(0);if(n){s=0;qa(185,x|0,h|0,k|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}s=0;ka(296,h|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue}}if(!A){s=0;ka(290,C|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}else{M=171;break}}k=c[C+44>>2]|0;m=(j&4|0)==0;do if(!((k|0)==4&m))if((k|0)!=4|m){o=C+120|0;n=C+96|0;while(1){k=c[o>>2]|0;m=c[n>>2]|0;h=c[F>>2]|0;if(m>>>0<=k>>>0)break;s=0;k=ya(291,h|0,m+~k|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,J|0,K|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}c[G>>2]=k;s=0;qa(186,C|0,G|0,1)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue a}}s=0;na(233,h|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}break}else{p=C+92|0;n=da(c[y>>2]|0,c[p>>2]|0)|0;s=0;n=Ga(c[(c[C+4>>2]|0)+8>>2]|0,C|0,1,n|0,1)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue a}q=C+120|0;k=c[q>>2]|0;r=C+96|0;m=c[r>>2]|0;if(m>>>0<=k>>>0)break;while(1){o=c[n>>2]|0;s=0;h=ya(291,c[F>>2]|0,m+~k|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue a}s=0;qa(186,C|0,n|0,1)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue a}if(c[p>>2]|0){k=o;m=0;while(1){a[h>>0]=d[k>>0]^255;a[h+1>>0]=d[k+1>>0]^255;a[h+2>>0]=d[k+2>>0]^255;a[h+3>>0]=d[k+3>>0]^255;m=m+1|0;if(m>>>0>=(c[p>>2]|0)>>>0)break;else{h=h+4|0;k=k+4|0}}}k=c[q>>2]|0;m=c[r>>2]|0;if(m>>>0<=k>>>0)break}}else{p=C+92|0;n=da(c[y>>2]|0,c[p>>2]|0)|0;s=0;n=Ga(c[(c[C+4>>2]|0)+8>>2]|0,C|0,1,n|0,1)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue a}q=C+120|0;k=c[q>>2]|0;r=C+96|0;m=c[r>>2]|0;if(m>>>0<=k>>>0)break;while(1){o=c[n>>2]|0;s=0;h=ya(291,c[F>>2]|0,m+~k|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue a}s=0;qa(186,C|0,n|0,1)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue a}if(c[p>>2]|0){k=o;m=0;while(1){y=d[k+3>>0]|0;a[h+2>>0]=((da(d[k>>0]|0,y)|0)>>>0)/255|0;a[h+1>>0]=((da(d[k+1>>0]|0,y)|0)>>>0)/255|0;a[h>>0]=((da(d[k+2>>0]|0,y)|0)>>>0)/255|0;m=m+1|0;if(m>>>0>=(c[p>>2]|0)>>>0)break;else{h=h+3|0;k=k+4|0}}}k=c[q>>2]|0;m=c[r>>2]|0;if(m>>>0<=k>>>0)break}}while(0);s=0;na(234,C|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}s=0;ka(290,C|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}if((j&32776|0)!=8)break;s=0;ka(297,F|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,J|0,K|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1)k=H;else{M=199;break}}if((M|0)!=9)if((M|0)!=37)if((M|0)!=44)if((M|0)!=49)if((M|0)==171){M=c[F>>2]|0;rea(J|0);i=L;return M|0}M=c[F>>2]|0;rea(J|0);i=L;return M|0}function KU(e,f,g,h,j,k){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=i;i=i+1024|0;M=P+424|0;O=4;N=qea(40)|0;c[N>>2]=0;E=P+752|0;F=P+748|0;A=P+744|0;B=P+740|0;D=P+736|0;K=P+732|0;L=P+756|0;z=P;q=P+432|0;G=P+428|0;y=P+720|0;I=P+724|0;C=P+760|0;J=P+728|0;if(!((f|0)!=0&(g|0)!=0)){g=0;rea(N|0);i=P;return g|0}s=0;x=na(235,f|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;do if((h|0)!=1){s=0;k=na(236,f|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)!=1){k=k&65535;if((k|0)==8)m=8;else if((k|0)!=24){s=0;k=na(225,4)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;break}c[k>>2]=305240;s=0;Da(124,k|0,366936,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;break}}if((m|0)==8?!((x|0)==0|(x|0)==1|(x|0)==3):0){s=0;k=na(225,4)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;break}c[k>>2]=305240;s=0;Da(124,k|0,366936,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;break}}s=0;k=na(224,q|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)!=1){c[z>>2]=k;c[q>>2]=288;c[q+8>>2]=289;N=Afa(q+132|0,1,N|0,O|0)|0;O=H;s=0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)!=1)k=0;else k=H}else k=H}else k=H}else k=H;while(0);a:while(1){if(k){s=0;ka(298,z|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}s=0;k=na(225,4)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue}c[k>>2]=0;s=0;Da(124,k|0,366936,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}else{m=19;break}}s=0;Da(128,z|0,90,424);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}o=z+24|0;k=c[o>>2]|0;if(!k){s=0;k=qa(c[c[z+4>>2]>>2]|0,z|0,0,32)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue}c[o>>2]=k}c[k+8>>2]=299;c[k+12>>2]=237;c[k+16>>2]=300;c[k+20>>2]=g;c[k+24>>2]=e;s=0;l=na(238,f|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}v=z+28|0;c[v>>2]=l;s=0;l=na(239,f|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}w=z+32|0;c[w>>2]=l;k=x>>>0<2;q=z+40|0;c[q>>2]=k?1:2;c[z+36>>2]=k?1:3;s=0;ka(301,z|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}if(j&8192){s=0;ka(302,z|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}}if(j&131072)a[z+210>>0]=1;s=0;k=na(240,f|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue}b[z+236>>1]=~~(+(k>>>0)*.0254+.5);s=0;k=na(241,f|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue}b[z+238>>1]=~~(+(k>>>0)*.0254+.5);a[z+235>>0]=1;s=0;k=na(242,f|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue}if(k){a[z+232>>0]=1;a[z+234>>0]=2}m=(j&262144|0)==0;if(!m){a[z+232>>0]=0;a[z+240>>0]=0}do if((c[q>>2]|0)==2){if(j&4096){u=c[z+84>>2]|0;c[u+8>>2]=4;c[u+12>>2]=1;c[u+96>>2]=1;c[u+100>>2]=1;c[u+184>>2]=1;c[u+188>>2]=1;break}if(j&16384){u=c[z+84>>2]|0;c[u+8>>2]=2;c[u+12>>2]=2;c[u+96>>2]=1;c[u+100>>2]=1;c[u+184>>2]=1;c[u+188>>2]=1;break}if(j&32768){u=c[z+84>>2]|0;c[u+8>>2]=2;c[u+12>>2]=1;c[u+96>>2]=1;c[u+100>>2]=1;c[u+184>>2]=1;c[u+188>>2]=1;break}if(!(j&65536))break;u=c[z+84>>2]|0;c[u+8>>2]=1;c[u+12>>2]=1;c[u+96>>2]=1;c[u+100>>2]=1;c[u+184>>2]=1;c[u+188>>2]=1}while(0);do if(!(j&2048))if(!(j&1024)){if(j&512){k=50;break}if(j&256){k=75;break}if(j&128){k=100;break}k=j&127;k=(k|0)==0?75:k}else k=25;else k=10;while(0);s=0;Da(129,z|0,k|0,1);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}s=0;la(130,z|0,1);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}do if(m){s=0;q=na(242,f|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}b:do if(q){s=0;k=na(243,q|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}do if((k|0)==1){s=0;k=na(236,q|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}if((k|0)!=8){s=0;k=na(236,q|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}if((k|0)!=24)break}s=0;r=ya(288,0,0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;k=Ga(142,2,q|0,r|0,262144)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}if(!k){s=0;ka(294,r|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}break b}s=0;qa(187,r|0,0,2)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;k=na(244,r|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}if((k|0)>65527){u=c[76304]|0;s=0;c[M>>2]=k+-65527;Da(127,u|0,305408,M|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;ka(294,r|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}break b}c[K>>2]=0;c[L>>2]=0;s=0;qa(188,r|0,K|0,L|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;Da(130,z|0,224,(c[L>>2]|0)+6|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;la(131,z|0,74);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;la(131,z|0,70);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;la(131,z|0,88);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;la(131,z|0,88);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;la(131,z|0,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;la(131,z|0,16);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}l=c[o>>2]|0;n=l+4|0;k=c[K>>2]|0;u=c[L>>2]|0;o=k+u|0;p=l+12|0;c:do if((u|0)>0)while(1){c[K>>2]=k+1;h=a[k>>0]|0;u=c[l>>2]|0;c[l>>2]=u+1;a[u>>0]=h;u=(c[n>>2]|0)+-1|0;c[n>>2]=u;if(!u){s=0;k=na(c[p>>2]|0,z|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,N|0,O|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}if(!(k<<24>>24))break c}k=c[K>>2]|0;if(k>>>0>=o>>>0)break}while(0);s=0;ka(294,r|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}break b}while(0);s=0;Da(127,c[76304]|0,305512,M|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}}while(0);c[D>>2]=0;s=0;Ga(143,0,f|0,305400,D|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}k=c[D>>2]|0;do if(k){s=0;q=na(245,k|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}if(!q)break;s=0;k=na(230,q|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}if((k|0)>0)o=0;else break;while(1){k=q+o|0;s=0;h=na(230,k|0)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){m=Cfa(c[l>>2]|0,N|0,O|0)|0;if(!m)Ua(l|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue a}s=0;Ha(56,z|0,254,k|0,((h|0)<65533?h:65533)|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}o=o+65533|0;s=0;k=na(230,q|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}if((o|0)>=(k|0))break}}while(0);s=0;l=na(228,f|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}u=l+4|0;k=c[u>>2]|0;do if(k){r=l+8|0;if(!(c[r>>2]|0))break;s=0;p=na(232,k+14|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}if(!p)break;k=p+0|0;m=305384|0;q=k+12|0;do{a[k>>0]=a[m>>0]|0;k=k+1|0;m=m+1|0}while((k|0)<(q|0));k=c[u>>2]|0;if((k|0)>0){l=p+12|0;o=p+13|0;n=p+14|0;h=0;while(1){k=k-h|0;k=(k|0)<65519?k:65519;a[l>>0]=((h|0)/65519|0)+1;a[o>>0]=(((c[u>>2]|0)>>>0)/65519|0)+1;qfa(n|0,(c[r>>2]|0)+h|0,k|0)|0;s=0;Ha(56,z|0,226,p|0,k+14|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue a}h=h+65519|0;k=c[u>>2]|0;if((k|0)<=(h|0))break}}s=0;ka(296,p|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}}while(0);s=0;k=ya(292,6,f|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}do if(k){c[A>>2]=0;c[B>>2]=0;s=0;k=qa(189,f|0,A|0,B|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}if(!k)break;k=c[B>>2]|0;d:do if((k|0)>0){r=0;while(1){h=k-r|0;h=(h|0)<65517?h:65517;l=h&1;o=h+26|0;n=o+l|0;s=0;p=na(232,n|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue a}if(!p)break d;k=p+0|0;m=305352|0;q=k+14|0;do{a[k>>0]=a[m>>0]|0;k=k+1|0;m=m+1|0}while((k|0)<(q|0));k=p+14|0;m=305368|0;q=k+10|0;do{a[k>>0]=a[m>>0]|0;k=k+1|0;m=m+1|0}while((k|0)<(q|0));a[p+24>>0]=h>>>8;a[p+25>>0]=h;qfa(p+26|0,(c[A>>2]|0)+r|0,h|0)|0;if(l)a[p+o>>0]=0;s=0;Ha(56,z|0,237,p|0,n|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;ka(296,p|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}r=r+65517|0;k=c[B>>2]|0;if((k|0)<=(r|0))break}}while(0);s=0;ka(296,c[A>>2]|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}}while(0);c[F>>2]=0;s=0;Ga(143,7,f|0,312328,F|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}k=c[F>>2]|0;do if(k){s=0;p=na(245,k|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}if(!p)break;s=0;n=na(246,c[F>>2]|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;o=na(232,n+29|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}if(!o)break;k=o+0|0;m=305320|0;q=k+29|0;do{a[k>>0]=a[m>>0]|0;k=k+1|0;m=m+1|0}while((k|0)<(q|0));if(n){k=o+29|0;l=0;while(1){m=n-l|0;m=(m|0)<65504?m:65504;qfa(k|0,p+l|0,m|0)|0;s=0;Ha(56,z|0,225,o|0,m+29|0);m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,N|0,O|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}l=l+65504|0;if(n>>>0<=l>>>0)break}}s=0;ka(296,o|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}}while(0);c[E>>2]=0;s=0;Ga(143,11,f|0,315112,E|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}k=c[E>>2]|0;if(!k)break;s=0;n=na(245,k|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;k=qa(180,315104,n|0,6)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}if((k|0)!=0|(n|0)==0)break;s=0;o=na(246,c[E>>2]|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;l=na(232,o|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}if(!l)break;if(o){h=0;while(1){k=o-h|0;k=(k|0)<65504?k:65504;qfa(l|0,n+h|0,k|0)|0;s=0;Ha(56,z|0,225,l|0,k|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){m=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!m)Ua(k|0,t|0);H=t}else m=-1;if((m|0)==1){k=H;continue a}h=h+65504|0;if(o>>>0<=h>>>0)break}}s=0;ka(296,l|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}}while(0);e:do if((x|0)==1){m=z+248|0;while(1){if((c[m>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break e;s=0;k=na(239,f|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}s=0;k=ya(291,f|0,k+-1-(c[m>>2]|0)|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}c[y>>2]=k;s=0;qa(190,z|0,y|0,1)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}}}else if((x|0)==2){s=0;q=na(247,f|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;l=na(232,q|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}c[G>>2]=l;if(!l){s=0;k=na(225,4)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}c[k>>2]=315480;s=0;Da(124,k|0,366936,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}else{m=162;break a}}o=z+248|0;while(1){if((c[o>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;s=0;k=na(239,f|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,N|0,O|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;k=ya(291,f|0,k+-1-(c[o>>2]|0)|0)|0;m=s;s=0;if((m|0)!=0&(t|0)!=0){h=Cfa(c[m>>2]|0,N|0,O|0)|0;if(!h)Ua(m|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}qfa(l|0,k|0,q|0)|0;if(c[v>>2]|0){k=c[G>>2]|0;h=0;while(1){p=k+2|0;u=a[p>>0]|0;a[p>>0]=a[k>>0]|0;a[k>>0]=u;h=h+1|0;if(h>>>0>=(c[v>>2]|0)>>>0)break;else k=k+3|0}}s=0;qa(190,z|0,G|0,1)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}l=c[G>>2]|0}s=0;ka(296,l|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}}else if((x|0)==3){s=0;q=na(229,f|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;k=na(232,(c[v>>2]|0)*3|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}c[I>>2]=k;if(!k){s=0;k=na(225,4)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}c[k>>2]=315480;s=0;Da(124,k|0,366936,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}else{m=184;break a}}m=z+248|0;while(1){if((c[m>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;s=0;k=na(239,f|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}s=0;k=ya(291,f|0,k+-1-(c[m>>2]|0)|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}s=0;Ha(57,c[I>>2]|0,k|0,c[v>>2]|0,q|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}if(c[v>>2]|0){k=c[I>>2]|0;h=0;while(1){p=k+2|0;u=a[p>>0]|0;a[p>>0]=a[k>>0]|0;a[k>>0]=u;h=h+1|0;if(h>>>0>=(c[v>>2]|0)>>>0)break;else k=k+3|0}}s=0;qa(190,z|0,I|0,1)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}}s=0;ka(296,c[I>>2]|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}}else if(!x){s=0;k=na(232,c[v>>2]|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}c[J>>2]=k;if(!k){s=0;k=na(225,4)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}c[k>>2]=315480;s=0;Da(124,k|0,366936,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}else{m=200;break a}}else k=0;do{a[C+k>>0]=255-k;k=k+1|0}while((k|0)!=256);m=z+248|0;while(1){if((c[m>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;s=0;k=na(239,f|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){l=Cfa(c[h>>2]|0,N|0,O|0)|0;if(!l)Ua(h|0,t|0);H=t}else l=-1;if((l|0)==1){k=H;continue a}s=0;l=ya(291,f|0,k+-1-(c[m>>2]|0)|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}if(c[v>>2]|0){k=0;do{a[(c[J>>2]|0)+k>>0]=a[C+(d[l+k>>0]|0)>>0]|0;k=k+1|0}while(k>>>0<(c[v>>2]|0)>>>0)}s=0;qa(190,z|0,J|0,1)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}}s=0;ka(296,c[J>>2]|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}}while(0);s=0;ka(303,z|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}s=0;ka(298,z|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,N|0,O|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1)k=H;else{m=214;break}}if((m|0)!=19)if((m|0)!=162)if((m|0)!=184)if((m|0)!=200)if((m|0)==214){g=1;rea(N|0);i=P;return g|0}return 0}function LU(a,c){a=a|0;c=c|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+2|0;f=e;b[g>>1]=-9985;b[f>>1]=0;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,2,c)|0;a=(ffa(g,f,2)|0)==0&1;i=e;return a|0}function MU(){return 305224}function NU(a){a=a|0;return (a&-17|0)==8|0}function OU(a){a=a|0;return (a|0)==1|0}function PU(){return 1}function QU(){return 1}function RU(){return 305864}function SU(){return 305832}function TU(){return 305824}function UU(){return 0}function VU(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function WU(a,b,c){a=a|0;b=b|0;c=c|0;return}function XU(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;g=i;i=i+16|0;h=g+8|0;e=g;j=h;c[j>>2]=1196313994;c[j+4>>2]=169478669;j=e;c[j>>2]=0;c[j+4>>2]=0;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,1,8,b)|0;if(ffa(h,e,8)|0){j=0;i=g;return j|0}j=oJ(c[76450]|0,a,b,8,f)|0;i=g;return j|0}function YU(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;f=e;h=g;c[h>>2]=1196313994;c[h+4>>2]=169478669;h=f;c[h>>2]=0;c[h+4>>2]=0;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,8,b)|0;a=(ffa(g,f,8)|0)==0&1;i=e;return a|0}function ZU(){return 305808}function _U(a){a=a|0;return 0}function $U(a){a=a|0;return 0}function aV(){return 1}function bV(){return 0}function cV(){return 305928}function dV(){return 305912}function eV(){return 305904}function fV(){return 0}function gV(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+144|0;j=B+8|0;A=B;h=g&32768;f=(h|0)==0;h=h>>>15;k=b+12|0;k=Ed[(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24)&511](e)|0;if((g|0)==3){l=256;g=47104;z=384}else if((g|0)==2){l=128;g=8192;z=192}else{l=512;g=196608;z=768}y=OH(h,z,l,24,16711680,65280,255)|0;if(!y){b=gc(4)|0;c[b>>2]=315016;qd(b|0,366936,0)}if(!f){i=B;return y|0}Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,128,1,e)|0;h=(a[j+72>>0]&63)==8;u=h?-1:1;v=qea(z)|0;w=qea(z)|0;x=qea(z)|0;if(!((v|0)!=0&(w|0)!=0&(x|0)!=0)){b=gc(4)|0;c[b>>2]=315480;qd(b|0,366936,0)}c[A>>2]=v;c[A+4>>2]=w;s=b+8|0;Hd[(d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24)&255](e,k,0)|0;Hd[(d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24)&255](e,g,1)|0;s=l>>>1;if(s){t=z>>>1;h=h?l+-1|0:0;j=0;do{Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](v,z,1,e)|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](w,z,1,e)|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](x,z,1,e)|0;r=0;do{k=A+(r<<2)|0;p=qJ(y,h)|0;q=0;while(1){f=q>>>1;m=+(d[(c[k>>2]|0)+q>>0]|0|0)*1.407488;n=+((d[x+f>>0]|0)+-156|0);o=+((d[x+(f+t)>>0]|0)+-137|0);f=~~+R(+(m+n*.0000256+o*1.3230336+.5));if((f|0)<0)l=0;else l=(f|0)>255?-1:f&255;f=~~+R(+(m+n*-.3954176+o*-.67392+.5));if((f|0)<0)g=0;else g=(f|0)>255?-1:f&255;f=~~+R(+(m+n*2.0360448+o*.0000256+.5));if((f|0)<0)f=0;else f=(f|0)>255?-1:f&255;a[p>>0]=f;a[p+1>>0]=g;a[p+2>>0]=l;q=q+1|0;if(q>>>0>=z>>>0)break;else p=p+3|0}h=h+u|0;r=r+1|0}while((r|0)<2);j=j+1|0}while(j>>>0>>0)}rea(x);rea(w);rea(v);i=B;return y|0}function hV(){return 305880}function iV(a){a=a|0;return 0}function jV(a){a=a|0;return 0}function kV(){return 1}function lV(){return 305992}function mV(){return 305968}function nV(){return 305960}function oV(){return 0}function pV(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+144|0;k=I;j=I+130|0;s=I+128|0;A=I+129|0;if(!e){b=0;i=I;return b|0}g=g&32768;n=(g|0)==0;g=g>>>15;f=b+12|0;f=Ed[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&511](e)|0;G=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;c[k>>2]=0;do if((Xd[G&255](k,1,4,e)|0)==4){F=c[k>>2]|0;G=F>>>24&255;if(((F&255)<<24>>24==10?((F&65535)>>>8&255)<6&(F>>>16&255)<2:0)?G<<24>>24==8|G<<24>>24==1:0){h=1;break}h=0}else h=0;while(0);l=b+8|0;Hd[(d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24)&255](e,f,0)|0;if(!h){b=gc(4)|0;c[b>>2]=312064;qd(b|0,366936,0)}if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](k,128,1,e)|0)!=1){b=gc(4)|0;c[b>>2]=313024;qd(b|0,366936,0)}u=k+8|0;u=(d[u>>0]|d[u+1>>0]<<8)&65535;v=k+4|0;v=(d[v>>0]|d[v+1>>0]<<8)&65535;z=u-v+1|0;H=k+10|0;o=k+6|0;o=((d[H>>0]|d[H+1>>0]<<8)&65535)-((d[o>>0]|d[o+1>>0]<<8)&65535)|0;H=o+1|0;p=k+3|0;m=k+65|0;h=da(d[m>>0]|0,d[p>>0]|0)|0;if((h|0)==24)G=OH(g,z,H,24,16711680,65280,255)|0;else G=OH(g,z,H,h,0,0,0)|0;if(!G){b=gc(4)|0;c[b>>2]=315016;qd(b|0,366936,0)}F=k+12|0;vI(G,~~(+((d[F>>0]|d[F+1>>0]<<8)&65535)/.0254+.5)>>>0);F=k+14|0;wI(G,~~(+((d[F>>0]|d[F+1>>0]<<8)&65535)/.0254+.5)>>>0);if((h|0)==1){F=kI(G)|0;a[F>>0]=0;a[F+1>>0]=0;a[F+2>>0]=0;a[F+4>>0]=-1;a[F+5>>0]=-1;a[F+6>>0]=-1}else if((h|0)==4){h=kI(G)|0;f=0;g=k+16|0;while(1){a[h+(f<<2)+2>>0]=a[g>>0]|0;a[h+(f<<2)+1>>0]=a[g+1>>0]|0;a[h+(f<<2)>>0]=a[g+2>>0]|0;f=f+1|0;if((f|0)==16)break;else g=g+3|0}}else if((h|0)==8){Hd[(d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24)&255](e,-769,2)|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0;if((a[j>>0]|0)!=12){F=k+68|0;if((d[F>>0]|d[F+1>>0]<<8)<<16>>16==2){h=kI(G)|0;f=0;do{F=f&255;a[h+(f<<2)+2>>0]=F;a[h+(f<<2)+1>>0]=F;a[h+(f<<2)>>0]=F;f=f+1|0}while((f|0)!=256)}}else{h=qea(768)|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](h,768,1,e)|0;f=kI(G)|0;g=0;j=h;while(1){a[f+(g<<2)+2>>0]=a[j>>0]|0;a[f+(g<<2)+1>>0]=a[j+1>>0]|0;a[f+(g<<2)>>0]=a[j+2>>0]|0;g=g+1|0;if((g|0)==256)break;else j=j+3|0}rea(h)}Hd[(d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24)&255](e,128,0)|0}if(!n){b=G;i=I;return b|0}B=k+66|0;F=da(d[m>>0]|0,(d[B>>0]|d[B+1>>0]<<8)&65535)|0;n=dI(G)|0;C=(a[k+2>>0]|0)==1;D=qea(F)|0;if(!D){b=gc(4)|0;c[b>>2]=315480;qd(b|0,366936,0)}E=qea(2048)|0;if(!E){b=gc(4)|0;c[b>>2]=315480;qd(b|0,366936,0)}f=qJ(G,o)|0;g=a[m>>0]|0;h=a[p>>0]|0;a:do if(g<<24>>24==1){if(!(h<<24>>24==8|h<<24>>24==1)){b=gc(4)|0;c[b>>2]=313264;qd(b|0,366936,0)}if(H){o=(F|0)==0;p=E+2047|0;q=E+1|0;r=0-n|0;if(C){h=2048;n=0}else{g=0;while(1){h=Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](f,F,1,e)|0;if(h>>>0>>0)do{Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](s,1,1,e)|0;h=h+1|0}while(h>>>0>>0);g=g+1|0;if(g>>>0>=H>>>0)break a;else f=f+r|0}}while(1){if(!o){m=F;j=0;g=0;l=0;while(1){m=m+-1|0;do if(!(j<<24>>24)){do if((h|0)>2046)if((h|0)==2047){a[E>>0]=a[p>>0]|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](q,1,2047,e)|0;h=0;break}else{Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](E,1,2048,e)|0;h=0;break}while(0);k=h+1|0;g=a[E+h>>0]|0;j=g&255;if((j&192|0)!=192){h=k;j=1;break}h=h+2|0;j=j&63;g=a[E+k>>0]|0}while(0);a[f+l>>0]=g;if(!m)break;else{j=j+-1<<24>>24;l=l+1|0}}}n=n+1|0;if(n>>>0>=H>>>0)break;else f=f+r|0}}}else{if(!(g<<24>>24==4&h<<24>>24==1)){if(!(g<<24>>24==3&h<<24>>24==8)){b=gc(4)|0;c[b>>2]=313264;qd(b|0,366936,0)}if(!H)break;r=(F|0)==0;s=E+2047|0;t=E+1|0;q=(z|0)==0;p=0-n|0;m=u+1-v|0;h=2048;o=0;while(1){if(C)if(r)g=h;else{l=F;j=0;g=0;n=0;while(1){l=l+-1|0;do if(!(j<<24>>24)){do if((h|0)>2046)if((h|0)==2047){a[E>>0]=a[s>>0]|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](t,1,2047,e)|0;h=0;break}else{Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](E,1,2048,e)|0;h=0;break}while(0);k=h+1|0;g=a[E+h>>0]|0;j=g&255;if((j&192|0)!=192){h=k;j=1;break}h=h+2|0;j=j&63;g=a[E+k>>0]|0}while(0);a[D+n>>0]=g;if(!l){g=h;break}else{j=j+-1<<24>>24;n=n+1|0}}}else{Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](D,F,1,e)|0;g=h}do if(!q){h=0;do{a[f+((h*3|0)+2)>>0]=a[D+h>>0]|0;h=h+1|0}while((h|0)!=(m|0));h=(d[B>>0]|d[B+1>>0]<<8)&65535;if(!q){j=0;do{a[f+((j*3|0)+1)>>0]=a[D+(j+h)>>0]|0;j=j+1|0}while((j|0)!=(m|0));h=((d[B>>0]|d[B+1>>0]<<8)&65535)+h|0;if(q)break;else j=0;do{a[f+(j*3|0)>>0]=a[D+(h+j)>>0]|0;j=j+1|0}while((j|0)!=(m|0))}}while(0);o=o+1|0;if(o>>>0>=H>>>0)break a;else{h=g;f=f+p|0}}}q=qea(z)|0;if(!q){b=gc(4)|0;c[b>>2]=315480;qd(b|0,366936,0)}if(H){r=(F|0)==0;s=E+2047|0;t=E+1|0;w=(z|0)==0;x=z>>>1;y=(x|0)==0;p=0-n|0;m=u+1-v|0;h=2048;k=0;while(1){if(C)if(r)j=0;else{l=F;n=0;j=0;o=0;while(1){l=l+-1|0;do if(!(n<<24>>24)){do if((h|0)>2046)if((h|0)==2047){a[E>>0]=a[s>>0]|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](t,1,2047,e)|0;h=0;break}else{Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](E,1,2048,e)|0;h=0;break}while(0);g=h+1|0;j=a[E+h>>0]|0;n=j&255;if((n&192|0)!=192){h=g;n=1;break}h=h+2|0;n=n&63;j=a[E+g>>0]|0}while(0);a[D+o>>0]=j;if(!l){j=F;break}else{n=n+-1<<24>>24;o=o+1|0}}}else j=Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](D,F,1,e)|0;sfa(q|0,0,z|0)|0;n=(d[B>>0]|d[B+1>>0]<<8)&65535;if(!w){g=0;do{v=q+g|0;a[v>>0]=(128>>>(g&7)&d[D+(g>>>3)>>0]|0)!=0|d[v>>0];g=g+1|0}while((g|0)!=(m|0));g=0;do{v=q+g|0;a[v>>0]=((128>>>(g&7)&d[D+(n+(g>>>3))>>0]|0)==0?0:2)|d[v>>0];g=g+1|0}while((g|0)!=(m|0));g=n<<1;l=0;do{v=q+l|0;a[v>>0]=((128>>>(l&7)&d[D+(g+(l>>>3))>>0]|0)==0?0:4)|d[v>>0];l=l+1|0}while((l|0)!=(m|0));g=n*3|0;l=0;do{v=q+l|0;a[v>>0]=((128>>>(l&7)&d[D+(g+(l>>>3))>>0]|0)==0?0:8)|d[v>>0];l=l+1|0}while((l|0)!=(m|0))}if(!y){g=0;do{v=g<<1;a[f+g>>0]=d[q+v>>0]<<4|d[q+(v|1)>>0];g=g+1|0}while(g>>>0>>0)}if(j>>>0>>0)do{if((h|0)<2048)h=h+1|0;else Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](A,1,1,e)|0;j=j+1|0}while(j>>>0>>0);k=k+1|0;if(k>>>0>=H>>>0)break;else f=f+p|0}}rea(q)}while(0);rea(D);rea(E);b=G;i=I;return b|0}function qV(a,b){a=a|0;b=b|0;var e=0,f=0;f=i;i=i+16|0;e=f;a=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;c[e>>2]=0;if((Xd[a&255](e,1,4,b)|0)!=4){e=0;i=f;return e|0}a=c[e>>2]|0;e=a>>>24&255;if(((a&255)<<24>>24==10?((a&65535)>>>8&255)<6&(a>>>16&255)<2:0)?e<<24>>24==8|e<<24>>24==1:0){e=1;i=f;return e|0}e=0;i=f;return e|0}function rV(){return 305944}function sV(a){a=a|0;return 0}function tV(a){a=a|0;return 0}function uV(){return 1}function vV(){return 306144}function wV(){return 306120}function xV(){return 306112}function yV(){return 0}function zV(b,e,f,h,j){b=b|0;e=e|0;f=f|0;h=h|0;j=j|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;t=i;i=i+272|0;o=t;m=t+16|0;j=t+9|0;f=t+8|0;s=t+4|0;a[j>>0]=0;a[f>>0]=0;if(!e){b=0;i=t;return b|0}l=h&32768;n=(l|0)==0;l=l>>>15;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](f,1,1,e)|0;if((a[j>>0]|0)!=80){b=gc(4)|0;c[b>>2]=312064;qd(b|0,366936,0)}j=a[f>>0]|0;if(j<<24>>24!=70)if(j<<24>>24==102)h=6;else{b=gc(4)|0;c[b>>2]=312064;qd(b|0,366936,0)}else h=11;q=B0(b,e)|0;r=B0(b,e)|0;g[s>>2]=1.0;sfa(m|0,0,256)|0;f=0;while(1){j=m+f|0;if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){j=11;break}f=f+1|0;if((a[j>>0]|0)==10){j=10;break}if((f|0)>=256){j=11;break}}if((j|0)==10){c[o>>2]=s;if((Oca(m,306056,o)|0)!=1){b=gc(4)|0;c[b>>2]=306064;qd(b|0,366936,0)}p=NH(l,h,q,r,8,0,0,0)|0;if(!p){b=gc(4)|0;c[b>>2]=315016;qd(b|0,366936,0)}if(!n){b=p;i=t;return b|0}if((h|0)==11){n=q*3|0;m=qea(q*12|0)|0;if(!m){b=gc(4)|0;c[b>>2]=315480;qd(b|0,366936,0)}a:do if(r){o=r+-1|0;if(!q){j=0;while(1){qJ(p,o-j|0)|0;if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](m,4,n,e)|0)!=(n|0))break;j=j+1|0;if(j>>>0>=r>>>0)break a}b=gc(4)|0;c[b>>2]=306096;qd(b|0,366936,0)}else h=0;while(1){l=qJ(p,o-h|0)|0;if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](m,4,n,e)|0)!=(n|0))break;if(+g[s>>2]>0.0){j=m;f=0;while(1){w=j+4|0;v=l+(f*12|0)|0;a[v>>0]=a[j+3>>0]|0;a[v+1>>0]=a[j+2>>0]|0;a[v+2>>0]=a[j+1>>0]|0;a[v+3>>0]=a[j>>0]|0;v=j+8|0;u=l+(f*12|0)+4|0;a[u>>0]=a[w+3>>0]|0;a[u+1>>0]=a[w+2>>0]|0;a[u+2>>0]=a[w+1>>0]|0;a[u+3>>0]=a[w>>0]|0;u=l+(f*12|0)+8|0;a[u>>0]=a[v+3>>0]|0;a[u+1>>0]=a[v+2>>0]|0;a[u+2>>0]=a[v+1>>0]|0;a[u+3>>0]=a[v>>0]|0;f=f+1|0;if((f|0)==(q|0))break;else j=j+12|0}}else{j=m;f=0;while(1){w=l+(f*12|0)|0;g[k>>2]=+g[j>>2];a[w>>0]=a[k>>0];a[w+1>>0]=a[k+1>>0];a[w+2>>0]=a[k+2>>0];a[w+3>>0]=a[k+3>>0];w=l+(f*12|0)+4|0;g[k>>2]=+g[j+4>>2];a[w>>0]=a[k>>0];a[w+1>>0]=a[k+1>>0];a[w+2>>0]=a[k+2>>0];a[w+3>>0]=a[k+3>>0];w=l+(f*12|0)+8|0;g[k>>2]=+g[j+8>>2];a[w>>0]=a[k>>0];a[w+1>>0]=a[k+1>>0];a[w+2>>0]=a[k+2>>0];a[w+3>>0]=a[k+3>>0];f=f+1|0;if((f|0)==(q|0))break;else j=j+12|0}}h=h+1|0;if(h>>>0>=r>>>0)break a}w=gc(4)|0;c[w>>2]=306096;qd(w|0,366936,0)}while(0);rea(m);w=p;i=t;return w|0}else if((h|0)==6){n=qea(q<<2)|0;if(!n){w=gc(4)|0;c[w>>2]=315480;qd(w|0,366936,0)}b:do if(r){h=r+-1|0;l=(q|0)==0;o=0;while(1){m=qJ(p,h-o|0)|0;if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](n,4,q,e)|0)!=(q|0))break;if(+g[s>>2]>0.0){if(!l){j=n;f=0;while(1){w=m+(f<<2)|0;a[w>>0]=a[j+3>>0]|0;a[w+1>>0]=a[j+2>>0]|0;a[w+2>>0]=a[j+1>>0]|0;a[w+3>>0]=a[j>>0]|0;f=f+1|0;if((f|0)==(q|0))break;else j=j+4|0}}}else if(!l){j=n;f=0;while(1){g[m+(f<<2)>>2]=+g[j>>2];f=f+1|0;if((f|0)==(q|0))break;else j=j+4|0}}o=o+1|0;if(o>>>0>=r>>>0)break b}w=gc(4)|0;c[w>>2]=306096;qd(w|0,366936,0)}while(0);rea(n);w=p;i=t;return w|0}else{w=p;i=t;return w|0}}else if((j|0)==11){w=gc(4)|0;c[w>>2]=306064;qd(w|0,366936,0)}return 0}function AV(a,b,e,f,g,j){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;var l=0,m=0,n=0,o=0;o=i;i=i+288|0;f=o;l=o+24|0;if(!((b|0)!=0&(e|0)!=0)){e=0;i=o;return e|0}j=VH(b)|0;if(!((j|0)==6|(j|0)==11)){e=0;i=o;return e|0}g=WH(b)|0;m=XH(b)|0;n=eI(b)|0;if((j|0)==6)j=102;else if((j|0)==11)j=70;else{e=0;i=o;return e|0}c[f>>2]=j;c[f+4>>2]=g;c[f+8>>2]=m;g=f+12|0;h[k>>3]=-1.0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];Xea(l,306040,f)|0;f=a+4|0;g=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a=tfa(l|0)|0;Xd[g&255](l,a,1,e)|0;if(!m){e=1;i=o;return e|0}j=m+-1|0;g=0;do{a=qJ(b,j-g|0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](a,1,n,e)|0;g=g+1|0}while((g|0)!=(m|0));j=1;i=o;return j|0}function BV(a,c){a=a|0;c=c|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;h=g+4|0;e=g;f=g+2|0;b[h>>1]=18e3;b[e>>1]=26192;b[f>>1]=0;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,2,c)|0;if(!(ffa(h,f,2)|0)){h=1;i=g;return h|0}h=(ffa(e,f,2)|0)==0&1;i=g;return h|0}function CV(){return 306008}function DV(a){a=a|0;return 0}function EV(a){a=a|0;return ((a|0)==6|(a|0)==11)&1|0}function FV(){return 1}function GV(){return 311312}function HV(){return 311296}function IV(){return 311280}function JV(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;R=i;i=i+2432|0;P=R+56|0;D=R+2169|0;k=R+2168|0;M=R+104|0;O=R+1144|0;E=R+1139|0;C=R+1138|0;H=R+2176|0;L=R;Q=R+8|0;G=R+60|0;F=R+106|0;A=R+112|0;B=R+1136|0;sfa(H|0,0,256)|0;N=f+8|0;if(Hd[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,512,1)|0){g=0;i=R;return g|0}K=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[K&255](P,1,1,g)|0;K=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[K&255](P,1,1,g)|0;K=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[K&255](P,1,1,g)|0;K=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[K&255](P,1,1,g)|0;K=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[K&255](P,1,1,g)|0;K=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[K&255](P,1,1,g)|0;K=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[K&255](P,1,1,g)|0;K=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[K&255](P,1,1,g)|0;K=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[K&255](P,1,1,g)|0;K=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[k>>0]=0;Xd[K&255](k,1,1,g)|0;while(1){k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=a[P>>0]|0;if(k<<24>>24==17)break;else if(k<<24>>24){l=4;break}}if((l|0)==4){g=gc(4)|0;c[g>>2]=306184;qd(g|0,366936,0)}k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=a[P>>0]|0;y=k<<24>>24==2;if(y?(K=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24,a[P>>0]=0,Xd[K&255](P,1,1,g)|0,(a[P>>0]|0)!=-1):0){g=gc(4)|0;c[g>>2]=306224;qd(g|0,366936,0)}x=f+12|0;r=k<<24>>24==1;s=G+2|0;t=G+4|0;u=G+6|0;v=G+26|0;I=Q+2|0;J=Q+4|0;K=Q+6|0;w=B+1|0;k=0;j=4718592;m=0;h=0;n=0;z=4718592;a:while(1){if(k){k=z;l=62;break}q=Ed[(d[x>>0]|d[x+1>>0]<<8|d[x+2>>0]<<16|d[x+3>>0]<<24)&511](g)|0;if(!r?((Ed[(d[x>>0]|d[x+1>>0]<<8|d[x+2>>0]<<16|d[x+3>>0]<<24)&511](g)|0)&1|0)==0:0)k=0;else{k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[P>>0]|0}if(y){l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[l&255](P,1,1,g)|0;l=a[P>>0]|0;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[o&255](P,1,1,g)|0;l=(d[P>>0]|(l&255)<<8)&65535}else l=k;k=l&65535;if(l<<16>>16==-1|l<<16>>16==255){l=16;break}b:do if((l&65535)>=162)if(l<<16>>16==3072){k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[P>>0]|0;z=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[z&255](P,1,1,g)|0;z=d[P>>0]|0;j=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[j&255](P,1,1,g)|0;j=a[P>>0]|0;p=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[p&255](P,1,1,g)|0;j=z<<16|k<<24|(j&255)<<8|d[P>>0];k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[P>>0]|0;z=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[z&255](P,1,1,g)|0;z=d[P>>0]|0;p=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[p&255](P,1,1,g)|0;p=a[P>>0]|0;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[o&255](P,1,1,g)|0;p=z<<16|k<<24|(p&255)<<8|d[P>>0];k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[E>>0]=0;Xd[k&255](E,1,1,g)|0;k=0;break}else if(l<<16>>16==-32256){p=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[p&255](P,1,1,g)|0;p=d[P>>0]|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[P>>0]|0;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[o&255](P,1,1,g)|0;o=a[P>>0]|0;h=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[h&255](P,1,1,g)|0;o=k<<16|p<<24|(o&255)<<8|d[P>>0];p=0;k=0;c:while(1){h=p^1;while(1){l=(k|0)<(o|0)&h;do if(!l)break c;while((Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](B,2,1,g)|0)==0);Hd[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,-2,1)|0;if((a[B>>0]|0)==-1&(a[w>>0]|0)==-40){p=1;continue c}l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[l&255](P,1,1,g)|0;k=k+1|0}}if(p){k=1;h=2;p=z;break}else{l=50;break a}}else{if((l&65535)<176){k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=a[P>>0]|0;p=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[p&255](P,1,1,g)|0;Hd[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,d[P>>0]|(k&255)<<8,1)|0;k=0;p=z;break}if((l+-176&65535)<32){k=0;p=z;break}if(l<<16>>16<0&(l&65535)<33024){k=0;p=z;break}if((l+-208&65535)<47|(l&65535)>8099){p=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[p&255](P,1,1,g)|0;p=d[P>>0]|0;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[o&255](P,1,1,g)|0;o=d[P>>0]|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=a[P>>0]|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[l&255](P,1,1,g)|0;Hd[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,o<<16|p<<24|(k&255)<<8|d[P>>0],1)|0;k=0;p=z;break}if(!((l&65535)>255&l<<16>>16>-1)){l=59;break a}Hd[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,k>>>7&255,1)|0;k=0;p=z;break}else switch(k|0){case 1:{k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=a[P>>0]|0;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[o&255](P,1,1,g)|0;k=d[P>>0]|(k&255)<<8;if((k|0)==10){k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[D>>0]=0;Xd[k&255](D,1,1,g)|0;k=0;p=z;break b}else{Hd[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,k+-2|0,1)|0;k=0;p=z;break b}}case 119:case 118:case 117:case 116:case 115:case 114:case 113:case 112:{k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=a[P>>0]|0;p=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[p&255](P,1,1,g)|0;Hd[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,(d[P>>0]|(k&255)<<8)+65534&65535,1)|0;k=0;p=z;break b}case 153:case 145:{n=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[n&255](P,1,1,g)|0;n=a[P>>0]|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;n=(d[P>>0]|(n&255)<<8)&65535;k=1;m=1;h=n<<16>>16<0?3:4;p=z;break b}case 154:{k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=a[P>>0]|0;h=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[h&255](P,1,1,g)|0;b[Q>>1]=d[P>>0]|(k&255)<<8;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=a[P>>0]|0;h=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[h&255](P,1,1,g)|0;b[I>>1]=d[P>>0]|(k&255)<<8;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=a[P>>0]|0;h=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[h&255](P,1,1,g)|0;b[J>>1]=d[P>>0]|(k&255)<<8;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=a[P>>0]|0;h=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[h&255](P,1,1,g)|0;b[K>>1]=d[P>>0]|(k&255)<<8;C0(f,g,Q);k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[C>>0]=0;Xd[k&255](C,1,1,g)|0;k=1;h=1;p=z;break b}case 20:case 19:case 18:{k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=a[P>>0]|0;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[o&255](P,1,1,g)|0;k=d[P>>0]|(k&255)<<8;if((k|0)==2){Hd[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,8,1)|0;Hd[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,5,1)|0;k=0;p=z;break b}else if((k|0)!=1){l=30;break a}Hd[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,8,1)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=a[P>>0]|0;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[o&255](P,1,1,g)|0;k=d[P>>0]|(k&255)<<8;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[o&255](P,1,1,g)|0;o=a[P>>0]|0;S=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[S&255](P,1,1,g)|0;b[G>>1]=d[P>>0]|(o&255)<<8;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[o&255](P,1,1,g)|0;o=a[P>>0]|0;S=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[S&255](P,1,1,g)|0;b[s>>1]=d[P>>0]|(o&255)<<8;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[o&255](P,1,1,g)|0;o=a[P>>0]|0;S=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[S&255](P,1,1,g)|0;b[t>>1]=d[P>>0]|(o&255)<<8;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[o&255](P,1,1,g)|0;o=a[P>>0]|0;S=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[S&255](P,1,1,g)|0;b[u>>1]=d[P>>0]|(o&255)<<8;C0(f,g,G);D0(f,g,F,A);o=b[v>>1]|0;S=c[t>>2]|0;p=c[G>>2]|0;l=(S&65535)-(p&65535)|0;k=((o&65535)<9?k&32767:k)&65535;k=k<<16>>16==0?(S>>>16)-(p>>>16)<<(o<<16>>16==16&1)&65535:k;if((k&65535)<8){k=da(k&65535,l)|0;Hd[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,k,1)|0;k=0;p=z;break b}if((l|0)<=0){k=0;p=z;break b}if((k&65535)>250){k=0;do{S=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[S&255](P,1,1,g)|0;S=a[P>>0]|0;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[o&255](P,1,1,g)|0;Hd[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,d[P>>0]|(S&255)<<8,1)|0;k=k+1|0}while((k|0)!=(l|0));k=0;p=z}else{k=0;do{S=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[S&255](P,1,1,g)|0;Hd[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,d[P>>0]|0,1)|0;k=k+1|0}while((k|0)!=(l|0));k=0;p=z}break}case 152:case 144:{n=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[n&255](P,1,1,g)|0;n=a[P>>0]|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;n=(d[P>>0]|(n&255)<<8)&65535;k=1;m=0;h=n<<16>>16<0?3:4;p=z;break b}case 161:{k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=a[P>>0]|0;S=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[S&255](P,1,1,g)|0;k=d[P>>0]|(k&255)<<8;if(!k){k=0;p=z;break b}Hd[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,k,1)|0;k=0;p=z;break b}default:{k=c[306332+(k*12|0)>>2]|0;if((k|0)==-1){k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;k=a[P>>0]|0;p=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[p&255](P,1,1,g)|0;Hd[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,d[P>>0]|(k&255)<<8,1)|0;k=0;p=z;break b}else{Hd[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,k,1)|0;k=0;p=z;break b}}}while(0);if((q|0)==(Ed[(d[x>>0]|d[x+1>>0]<<8|d[x+2>>0]<<16|d[x+3>>0]<<24)&511](g)|0)){l=61;break}else z=p}if((l|0)==16){g=gc(4)|0;c[g>>2]=306264;qd(g|0,366936,0)}else if((l|0)==30){g=gc(4)|0;c[g>>2]=306304;qd(g|0,366936,0)}else if((l|0)==50){g=gc(4)|0;c[g>>2]=308272;qd(g|0,366936,0)}else if((l|0)==59){c[P>>2]=k;Xea(H,308320,P)|0;g=gc(4)|0;c[g>>2]=H;qd(g|0,366912,0)}else if((l|0)==61){g=gc(4)|0;c[g>>2]=308352;qd(g|0,366936,0)}else if((l|0)==62){if((h|0)==3){j=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[j&255](P,1,1,g)|0;j=a[P>>0]|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;b[Q>>1]=d[P>>0]|(j&255)<<8;j=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[j&255](P,1,1,g)|0;j=a[P>>0]|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[k&255](P,1,1,g)|0;b[I>>1]=d[P>>0]|(j&255)<<8;j=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[j&255](P,1,1,g)|0;j=a[P>>0]|0;I=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[I&255](P,1,1,g)|0;b[J>>1]=d[P>>0]|(j&255)<<8;j=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[j&255](P,1,1,g)|0;j=a[P>>0]|0;I=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[I&255](P,1,1,g)|0;b[K>>1]=d[P>>0]|(j&255)<<8;C0(f,g,Q);K=Q;j=c[K>>2]|0;K=c[K+4>>2]|0;I=L;c[I>>2]=j;c[I+4>>2]=K;I=Bfa(j|0,K|0,48)|0;k=Bfa(j|0,K|0,16)|0;k=I-(k&65535)|0;j=(K&65535)-(j&65535)|0;if((e[Q+26>>1]|0)>8)k=PH(k,j,32,16711680,65280,255)|0;else k=PH(k,j,8,0,0,0)|0;l=k;j=c[Q+16>>2]<<16;k=c[Q+20>>2]<<16}else if((h|0)==4){l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[l&255](P,1,1,g)|0;l=a[P>>0]|0;I=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[I&255](P,1,1,g)|0;l=d[P>>0]|(l&255)<<8;b[L>>1]=l;I=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[I&255](P,1,1,g)|0;I=a[P>>0]|0;K=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[K&255](P,1,1,g)|0;I=d[P>>0]|(I&255)<<8;b[L+2>>1]=I;K=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[K&255](P,1,1,g)|0;K=a[P>>0]|0;H=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[H&255](P,1,1,g)|0;K=d[P>>0]|(K&255)<<8;b[L+4>>1]=K;H=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[H&255](P,1,1,g)|0;H=a[P>>0]|0;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[G&255](P,1,1,g)|0;H=d[P>>0]|(H&255)<<8;b[L+6>>1]=H;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[G&255](P,1,1,g)|0;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[G&255](P,1,1,g)|0;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[G&255](P,1,1,g)|0;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[G&255](P,1,1,g)|0;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[G&255](P,1,1,g)|0;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[G&255](P,1,1,g)|0;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[G&255](P,1,1,g)|0;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[G&255](P,1,1,g)|0;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[G&255](P,1,1,g)|0;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[G&255](P,1,1,g)|0;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[G&255](P,1,1,g)|0;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[G&255](P,1,1,g)|0;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[G&255](P,1,1,g)|0;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[G&255](P,1,1,g)|0;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[G&255](P,1,1,g)|0;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[G&255](P,1,1,g)|0;l=PH(H-I&65535,K-l&65535,8,0,0,0)|0}else if((h|0)==1){K=Q;j=c[K>>2]|0;K=c[K+4>>2]|0;I=L;c[I>>2]=j;c[I+4>>2]=K;I=Bfa(j|0,K|0,48)|0;k=Bfa(j|0,K|0,16)|0;k=I-(k&65535)|0;j=(K&65535)-(j&65535)|0;if((e[Q+26>>1]|0)>8)k=PH(k,j,32,16711680,65280,255)|0;else k=PH(k,j,8,0,0,0)|0;l=k;j=c[Q+16>>2]<<16;k=c[Q+20>>2]<<16}else if((h|0)==2)l=tJ(2,f,g,0)|0;else{g=0;i=R;return g|0}if(!l){g=0;i=R;return g|0}vI(l,~~(+(j|0)*6.011963123455644e-004));wI(l,~~(+(k|0)*6.011963123455644e-004));if((h|0)==2){g=l;i=R;return g|0}else if((h|0)==3){D0(f,g,M,O);if((YH(l)|0)==8){h=kI(l)|0;if(!h){g=gc(4)|0;c[g>>2]=308400;qd(g|0,366936,0)}k=b[M>>1]|0;if(k<<16>>16){k=k&65535;j=0;do{a[h+(j<<2)+2>>0]=a[O+(j<<2)+2>>0]|0;a[h+(j<<2)+1>>0]=a[O+(j<<2)+1>>0]|0;a[h+(j<<2)>>0]=a[O+(j<<2)>>0]|0;j=j+1|0}while((j|0)<(k|0))}}O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;if(m){O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=a[P>>0]|0;M=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[M&255](P,1,1,g)|0;Hd[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,(d[P>>0]|(O&255)<<8)+65534&65535,1)|0}k=e[Q+26>>1]|0;if((k|0)==8){F0(f,g,l,Q,n);g=l;i=R;return g|0}else if((k|0)==32){E0(f,g,l,Q,n,e[Q+28>>1]|0);g=l;i=R;return g|0}else{G0(f,g,l,Q,n,k);g=l;i=R;return g|0}}else if((h|0)==4){O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;if(m){O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[O&255](P,1,1,g)|0;O=a[P>>0]|0;M=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;Xd[M&255](P,1,1,g)|0;Hd[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,(d[P>>0]|(O&255)<<8)+65534&65535,1)|0}k=kI(l)|0;if(!k){g=gc(4)|0;c[g>>2]=308400;qd(g|0,366936,0)}a[k+2>>0]=0;a[k+1>>0]=0;a[k>>0]=0;a[k+6>>0]=-1;a[k+5>>0]=-1;a[k+4>>0]=-1;G0(f,g,l,L,n,1);g=l;i=R;return g|0}else if((h|0)==1){k=e[Q+26>>1]|0;if((k|0)==8){F0(f,g,l,Q,0);g=l;i=R;return g|0}else if((k|0)==32){E0(f,g,l,Q,0,e[Q+28>>1]|0);g=l;i=R;return g|0}else{G0(f,g,l,Q,0,k);g=l;i=R;return g|0}}else{g=gc(4)|0;c[g>>2]=308376;qd(g|0,366936,0)}}return 0}function KV(a,b){a=a|0;b=b|0;var c=0,e=0,f=0;e=i;i=i+16|0;c=e;f=a+8|0;if(Hd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](b,522,0)|0){f=0;i=e;return f|0}if(!(Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](c,1,6,b)|0)){f=0;i=e;return f|0}f=(ffa(306176,c,6)|0)==0&1;i=e;return f|0}function LV(){return 306160}function MV(a){a=a|0;return 0}function NV(a){a=a|0;return 0}function OV(){return 0}function PV(){return 311528}function QV(){return 311496}function RV(){return 311488}function SV(){return 311480}function TV(f,g,j,k,l){f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=i;i=i+368|0;U=4;V=qea(40)|0;c[V>>2]=0;A=W;I=W+56|0;D=W+60|0;T=W+64|0;B=W+68|0;y=W+76|0;x=W+80|0;n=W+88|0;j=W+352|0;G=W+52|0;F=W+20|0;R=W+24|0;E=W+72|0;S=W+12|0;Q=W+96|0;C=W+16|0;P=W+360|0;N=W+48|0;O=W+28|0;M=W+32|0;L=W+36|0;J=W+40|0;K=W+44|0;z=W+8|0;c[I>>2]=0;c[D>>2]=0;c[n+4>>2]=g;c[n>>2]=f;if(!g){U=0;rea(V|0);i=W;return U|0}v=k&32768;w=(v|0)==0;v=v>>>15;s=0;Ga(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24|0,j|0,8,1,g|0)|0;g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;do if((l|0)!=1){s=0;l=qa(191,j|0,0,8)|0;j=s;s=0;if((j|0)!=0&(t|0)!=0){g=Cfa(c[j>>2]|0,V|0,U|0)|0;if(!g)Ua(j|0,t|0);H=t}else g=-1;if((g|0)!=1){if(l){U=0;rea(V|0);i=W;return U|0}s=0;g=Ga(144,311344,0,132,133)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)!=1){c[I>>2]=g;if(!g){U=0;rea(V|0);i=W;return U|0}s=0;g=na(248,g|0)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)!=1){c[D>>2]=g;if(!g){s=0;Da(131,I|0,0,0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;break}U=0;rea(V|0);i=W;return U|0}s=0;Da(132,c[I>>2]|0,n|0,133);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)!=1){s=0;g=qa(192,c[I>>2]|0,74,156)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)!=1){V=Afa(g,1,V|0,U|0)|0;U=H;s=0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)!=1)l=0;else l=H}else l=H}else l=H}else l=H}else l=H}else l=H}else l=H;while(0);a:while(1){if(l){s=0;Da(131,I|0,D|0,0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}else{o=17;break}}s=0;la(134,c[I>>2]|0,8);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}s=0;la(135,c[I>>2]|0,c[D>>2]|0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}s=0;Ca(2,c[I>>2]|0,c[D>>2]|0,T|0,B|0,x|0,y|0,0,0,0)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}q=c[I>>2]|0;r=c[D>>2]|0;s=0;p=ya(293,q|0,r|0)|0;g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue}o=p&255;s=0;g=ya(294,q|0,r|0)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}f=g&255;s=0;g=ya(295,q|0,r|0)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}n=da(g&255,f)|0;s=0;g=qa(193,q|0,r|0,16)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}j=(g|0)==16;b:do switch(o|0){case 3:{if((f|0)==8|(f|0)==4|(f|0)==2|(f|0)==1){if((n|0)==2){s=0;ka(307,q|0);g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue a}}if(j&n>>>0<8){s=0;ka(307,q|0);g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue a}o=62}else o=62}else o=76;break}case 0:{switch(f|0){case 16:{g=(n|0)==16;if(!(j&g)){g=g?2:0;o=59;break b}s=0;ka(305,q|0);g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue a}s=0;ka(306,q|0);g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue a}g=10;o=60;break b}case 8:case 4:case 2:case 1:break;default:{o=76;break b}}if((n|0)==2){s=0;ka(304,q|0);g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue a}}if(j&n>>>0<8){s=0;ka(304,q|0);g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue a}o=62}else o=62;break}case 4:{if((f|0)==8)g=(n|0)==16&1;else if((f|0)==16)g=(n|0)==32?10:0;else g=0;s=0;ka(306,q|0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue a}o=59;break}case 6:{if((f|0)==8){o=62;break b}else if((f|0)!=16){o=76;break b}g=(n|0)==64?10:0;o=59;break}case 2:{if((f|0)==16)g=(n|0)==48?9:0;else if((f|0)==8)g=(n|0)==24&1;else{o=76;break b}if(j&(g|0)!=0){if((n|0)==24)g=1;else g=(n|0)==48?10:0;s=0;ka(305,q|0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue a}o=59}else o=59;break}default:o=62}while(0);if((o|0)==59){o=0;switch(g|0){case 2:case 9:case 10:{o=60;break}case 1:{o=62;break}case 0:{o=76;break}default:u=g}}if((o|0)==60){o=0;s=0;ka(308,q|0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}if((g|0)==1&(p&-5)<<24>>24==2)o=63;else u=g}else if((o|0)==62){o=0;if((p&-5)<<24>>24==2)o=63;else u=1}else if((o|0)==76){s=0;l=na(225,4)|0;j=s;s=0;if((j|0)!=0&(t|0)!=0){g=Cfa(c[j>>2]|0,V|0,U|0)|0;if(!g)Ua(j|0,t|0);H=t}else g=-1;if((g|0)==1){l=H;continue}c[l>>2]=313264;s=0;Da(124,l|0,366936,0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}else{o=78;break}}if((o|0)==63){o=0;s=0;ka(309,q|0);g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue}u=1}s=0;g=qa(193,q|0,r|0,1)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}if(g){h[A>>3]=0.0;s=0;g=qa(194,q|0,r|0,A|0)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}if((g|0)!=0&(k&1|0)==0){s=0;pa(2,q|0,2.2,+(+h[A>>3]));g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue}}}s=0;la(136,q|0,r|0);g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue}s=0;g=ya(293,c[I>>2]|0,c[D>>2]|0)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}c[y>>2]=g&255;s=0;g=ya(294,c[I>>2]|0,c[D>>2]|0)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}g=g&255;c[x>>2]=g;s=0;l=ya(295,c[I>>2]|0,c[D>>2]|0)|0;j=s;s=0;if((j|0)!=0&(t|0)!=0){f=Cfa(c[j>>2]|0,V|0,U|0)|0;if(!f)Ua(j|0,t|0);H=t}else f=-1;if((f|0)==1){l=H;continue}p=da(l&255,g)|0;g=c[y>>2]|0;do if(!g){s=0;f=Fa(9,v|0,u|0,c[T>>2]|0,c[B>>2]|0,p|0,16711680,65280,255)|0;g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue a}if((f|0)!=0&p>>>0<9){s=0;j=na(229,f|0)|0;g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue a}m=1<>0]=r;a[j+(l<<2)+1>>0]=r;a[j+(l<<2)+2>>0]=r;l=l+1|0}while((l|0)<(m|0));m=f;o=98}else{m=f;o=98}}else if((g|0)==6|(g|0)==2){s=0;g=Fa(9,v|0,u|0,c[T>>2]|0,c[B>>2]|0,p|0,16711680,65280,255)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue a}m=g;o=98}else if((g|0)==3){s=0;n=Fa(9,v|0,u|0,c[T>>2]|0,c[B>>2]|0,p|0,16711680,65280,255)|0;g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue a}if(n){c[G>>2]=0;c[F>>2]=0;s=0;Ga(145,c[I>>2]|0,c[D>>2]|0,G|0,F|0)|0;g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue a}g=c[F>>2]|0;s=0;l=na(249,n|0)|0;j=s;s=0;if((j|0)!=0&(t|0)!=0){f=Cfa(c[j>>2]|0,V|0,U|0)|0;if(!f)Ua(j|0,t|0);H=t}else f=-1;if((f|0)==1){l=H;continue a}c[F>>2]=g>>>0>>0?g:l;s=0;j=na(229,n|0)|0;g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue a}m=c[F>>2]|0;if((m|0)<=0){m=n;o=98;break}g=c[G>>2]|0;l=0;do{a[j+(l<<2)+2>>0]=a[g+(l*3|0)>>0]|0;a[j+(l<<2)+1>>0]=a[g+(l*3|0)+1>>0]|0;a[j+(l<<2)>>0]=a[g+(l*3|0)+2>>0]|0;l=l+1|0}while((l|0)<(m|0));m=n;o=98}}else{s=0;g=na(225,4)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue a}c[g>>2]=313264;s=0;Da(124,g|0,366936,0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue a}else{o=97;break a}}while(0);if((o|0)==98?(0,(m|0)!=0):0){s=0;g=qa(193,c[I>>2]|0,c[D>>2]|0,16)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}do if(g){c[R>>2]=0;c[E>>2]=0;c[S>>2]=0;s=0;za(83,c[I>>2]|0,c[D>>2]|0,R|0,E|0,S|0)|0;g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue a}l=c[y>>2]|0;g=c[S>>2]|0;if(!((l|0)==0&(g|0)!=0)){g=c[R>>2]|0;if(!((l|0)==3&(g|0)!=0))break;s=0;Da(134,m|0,g|0,c[E>>2]|0);g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue a}break}g=g+8|0;if((e[g>>1]|0)<256){sfa(Q|0,-1,256)|0;a[Q+(e[g>>1]|0)>>0]=0;s=0;Da(134,m|0,Q|0,256);g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue a}break}g=c[R>>2]|0;if(!((g|0)!=0&p>>>0<9))break;s=0;Da(134,m|0,g|0,c[E>>2]|0);g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue a}}while(0);do if((u|0)==1){s=0;g=qa(193,c[I>>2]|0,c[D>>2]|0,32)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue a}if(!g)break;c[C>>2]=0;s=0;g=qa(195,c[I>>2]|0,c[D>>2]|0,C|0)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue a}if(!g)break;l=c[C>>2]|0;a[P+2>>0]=b[l+2>>1];a[P+1>>0]=b[l+4>>1];a[P>>0]=b[l+6>>1];a[P+3>>0]=0;s=0;ya(296,m|0,P|0)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue a}}while(0);s=0;g=qa(193,c[I>>2]|0,c[D>>2]|0,128)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}do if(g){c[M>>2]=0;s=0;za(84,c[I>>2]|0,c[D>>2]|0,N|0,O|0,M|0)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue a}if((c[M>>2]|0)!=1)break;s=0;la(128,m|0,c[N>>2]|0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue a}s=0;la(129,m|0,c[O>>2]|0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue a}}while(0);s=0;g=qa(193,c[I>>2]|0,c[D>>2]|0,4096)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}if(g){c[L>>2]=0;c[J>>2]=0;c[K>>2]=0;s=0;ma(23,c[I>>2]|0,c[D>>2]|0,L|0,z|0,J|0,K|0)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}s=0;qa(185,m|0,c[J>>2]|0,c[K>>2]|0)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}}if(!w){s=0;Da(135,c[I>>2]|0,c[D>>2]|0,m|0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}if(!(c[I>>2]|0)){o=163;break}s=0;Da(131,I|0,D|0,0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}else{o=138;break}}g=c[B>>2]|0;s=0;n=na(232,g<<2|0)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}if(!n){s=0;Da(131,I|0,D|0,0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}s=0;ka(295,m|0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}else{o=144;break}}if(g){f=0;while(1){s=0;g=ya(291,m|0,f|0)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue a}u=c[B>>2]|0;c[n+(u+~f<<2)>>2]=g;f=f+1|0;if(f>>>0>=u>>>0)break}}s=0;la(137,c[I>>2]|0,1);g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue}s=0;la(138,c[I>>2]|0,n|0);g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue}s=0;g=na(236,m|0)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}do if((g|0)==32){s=0;g=na(235,m|0)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue a}if((g|0)==4){s=0;la(139,m|0,1);g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue a}break}else{s=0;la(139,m|0,0);g=s;s=0;if((g|0)!=0&(t|0)!=0){l=Cfa(c[g>>2]|0,V|0,U|0)|0;if(!l)Ua(g|0,t|0);H=t}else l=-1;if((l|0)==1){l=H;continue a}break}}while(0);s=0;ka(296,n|0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}s=0;la(140,c[I>>2]|0,c[D>>2]|0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}s=0;Da(135,c[I>>2]|0,c[D>>2]|0,m|0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}if(!(c[I>>2]|0)){o=163;break}s=0;Da(131,I|0,D|0,0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}else{o=162;break}}s=0;g=na(225,4)|0;l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1){l=H;continue}c[g>>2]=315016;s=0;Da(124,g|0,366936,0);l=s;s=0;if((l|0)!=0&(t|0)!=0){j=Cfa(c[l>>2]|0,V|0,U|0)|0;if(!j)Ua(l|0,t|0);H=t}else j=-1;if((j|0)==1)l=H;else{o=101;break}}if((o|0)==17){U=0;rea(V|0);i=W;return U|0}else if((o|0)!=78)if((o|0)!=97)if((o|0)!=101)if((o|0)==138){U=m;rea(V|0);i=W;return U|0}else if((o|0)==144){U=0;rea(V|0);i=W;return U|0}else if((o|0)==162){U=m;rea(V|0);i=W;return U|0}else if((o|0)==163){rea(V|0);i=W;return m|0}return 0}function UV(e,f,g,h,j,k){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;V=i;i=i+128|0;R=V;U=4;T=qea(40)|0;c[T>>2]=0;P=V+92|0;Q=V+64|0;K=V+112|0;S=V+60|0;L=V+56|0;D=V+52|0;F=V+48|0;J=V+36|0;O=V+32|0;M=V+28|0;I=V+24|0;E=V+40|0;G=V+96|0;N=V+120|0;c[E+4>>2]=g;c[E>>2]=e;if(!((f|0)!=0&(g|0)!=0)){U=0;rea(T|0);i=V;return U|0}s=0;k=Ga(146,311344,0,132,133)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){g=Cfa(c[h>>2]|0,T|0,U|0)|0;if(!g)Ua(h|0,t|0);H=t}else g=-1;do if((g|0)!=1){c[M>>2]=k;if(!k){U=0;rea(T|0);i=V;return U|0}s=0;h=na(248,k|0)|0;g=s;s=0;if((g|0)!=0&(t|0)!=0){k=Cfa(c[g>>2]|0,T|0,U|0)|0;if(!k)Ua(g|0,t|0);H=t}else k=-1;if((k|0)!=1){c[I>>2]=h;if(!h){s=0;la(141,M|0,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;break}U=0;rea(T|0);i=V;return U|0}else{s=0;k=qa(192,c[M>>2]|0,74,156)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){g=Cfa(c[h>>2]|0,T|0,U|0)|0;if(!g)Ua(h|0,t|0);H=t}else g=-1;if((g|0)==1){k=H;break}T=Afa(k,1,T|0,U|0)|0;U=H;s=0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;break}k=0;break}}else k=H}else k=H;while(0);a:while(1){if(k){s=0;la(141,M|0,I|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}else{X=13;break}}s=0;Ha(58,c[M>>2]|0,E|0,136,310);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}s=0;e=na(240,f|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}s=0;k=na(241,f|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){g=Cfa(c[h>>2]|0,T|0,U|0)|0;if(!g)Ua(h|0,t|0);H=t}else g=-1;if((g|0)==1){k=H;continue}if((e|0)!=0&(k|0)!=0){s=0;ja(59,c[M>>2]|0,c[I>>2]|0,e|0,k|0,1);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}}s=0;B=na(238,f|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}s=0;C=na(239,f|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}s=0;A=na(236,f|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}o=j&512;z=(o|0)==0;o=o>>>9;k=j&15;if((k|0)!=0&k>>>0<10){s=0;la(142,c[M>>2]|0,k|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}}else if(j&256){s=0;la(142,c[M>>2]|0,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}}k=c[M>>2]|0;if((A|0)>15){s=0;la(143,k|0,1);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}s=0;Da(137,c[M>>2]|0,0,152);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}}else{s=0;la(143,k|0,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}}s=0;k=na(243,f|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}m=(k|0)==1;if(m){g=(A|0)>8?8:A;s=0;k=na(250,f|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}if(!k){w=0;x=g}else{s=0;e=na(251,f|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){k=Cfa(c[h>>2]|0,T|0,U|0)|0;if(!k)Ua(h|0,t|0);H=t}else k=-1;if((k|0)==1){k=H;continue}w=(e|0)!=0;x=g}}else{w=0;x=16}s=0;k=na(235,f|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}switch(k|0){case 3:{X=49;break}case 0:{if(w)X=49;else{s=0;ka(311,c[M>>2]|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue a}X=47}break}case 4:{s=0;xa(29,c[M>>2]|0,c[I>>2]|0,B|0,C|0,x|0,6,o|0,0,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue a}if(m){s=0;ka(309,c[M>>2]|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue a}v=1;y=0}else{v=1;y=0}break}case 2:{s=0;xa(29,c[M>>2]|0,c[I>>2]|0,B|0,C|0,x|0,2,o|0,0,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue a}if(m){s=0;ka(309,c[M>>2]|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue a}v=0;y=0}else{v=0;y=0}break}case 1:{if(w)X=49;else X=47;break}default:{v=0;y=0}}if((X|0)==47){X=0;s=0;xa(29,c[M>>2]|0,c[I>>2]|0,B|0,C|0,x|0,0,o|0,0,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}v=0;y=0}else if((X|0)==49){X=0;s=0;xa(29,c[M>>2]|0,c[I>>2]|0,B|0,C|0,x|0,3,o|0,0,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}g=1<>2]|0,3<>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}s=0;h=na(229,f|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}if((x|0)!=31){k=0;do{a[m+(k*3|0)>>0]=a[h+(k<<2)+2>>0]|0;a[m+(k*3|0)+1>>0]=a[h+(k<<2)+1>>0]|0;a[m+(k*3|0)+2>>0]=a[h+(k<<2)>>0]|0;k=k+1|0}while((k|0)<(g|0))}s=0;Ha(59,c[M>>2]|0,c[I>>2]|0,m|0,g|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}v=0;y=m}s=0;h=na(228,f|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}k=c[h+4>>2]|0;if((k|0)!=0?(W=c[h+8>>2]|0,(W|0)!=0):0){s=0;ta(20,c[M>>2]|0,c[I>>2]|0,311352,0,W|0,k|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}}r=c[M>>2]|0;u=c[I>>2]|0;c[P>>2]=0;s=0;q=qa(196,0,f|0,P|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}if(q){o=Q+4|0;g=Q+8|0;m=Q+12|0;l=Q+16|0;n=Q+20|0;p=Q+24|0;while(1){c[Q+0>>2]=0;c[Q+4>>2]=0;c[Q+8>>2]=0;c[Q+12>>2]=0;c[Q+16>>2]=0;c[Q+20>>2]=0;c[Q+24>>2]=0;c[Q>>2]=1;s=0;k=na(231,c[P>>2]|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}c[o>>2]=k;s=0;k=na(245,c[P>>2]|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}c[g>>2]=k;s=0;k=na(246,c[P>>2]|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}c[m>>2]=k;s=0;k=na(246,c[P>>2]|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}c[l>>2]=k;c[n>>2]=0;c[p>>2]=0;s=0;Ha(60,r|0,u|0,Q|0,1);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue a}s=0;k=ya(298,q|0,P|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}if(!k)break}s=0;ka(312,q|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}}c[P>>2]=0;s=0;Ga(143,7,f|0,312328,P|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}k=c[P>>2]|0;do if(k){s=0;k=na(246,k|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}if(!k)break;c[Q+0>>2]=0;c[Q+4>>2]=0;c[Q+8>>2]=0;c[Q+12>>2]=0;c[Q+16>>2]=0;c[Q+20>>2]=0;c[Q+24>>2]=0;c[Q>>2]=1;c[Q+4>>2]=311376;s=0;k=na(245,c[P>>2]|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}c[Q+8>>2]=k;s=0;k=na(246,c[P>>2]|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}c[Q+12>>2]=k;s=0;k=na(246,c[P>>2]|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}c[Q+16>>2]=k;c[Q+20>>2]=0;c[Q+24>>2]=0;s=0;Ha(60,r|0,u|0,Q|0,1);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue a}}while(0);c[P>>2]=0;s=0;Ga(143,1,f|0,348944,P|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}k=c[P>>2]|0;do if(k){s=0;k=na(246,k|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}if(!k)break;s=0;k=na(245,c[P>>2]|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;c[R>>2]=S;c[R+4>>2]=L;c[R+8>>2]=D;c[R+12>>2]=F;c[R+16>>2]=J;c[R+20>>2]=O;k=qa(197,k|0,311400,R|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}if((k|0)!=6)break;b[K>>1]=c[S>>2];a[K+2>>0]=c[L>>2];a[K+3>>0]=c[D>>2];a[K+4>>0]=c[F>>2];a[K+5>>0]=c[J>>2];a[K+6>>0]=c[O>>2];s=0;Da(138,r|0,u|0,K|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue a}}while(0);if(w){g=c[M>>2]|0;m=c[I>>2]|0;s=0;l=na(252,f|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}s=0;k=na(251,f|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}s=0;ja(60,g|0,m|0,l|0,k|0,0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}}s=0;k=na(253,f|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}if(k){s=0;ya(299,f|0,N|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue};b[G+0>>1]=0;b[G+2>>1]=0;b[G+4>>1]=0;b[G+6>>1]=0;b[G+8>>1]=0;b[G+6>>1]=d[N>>0]|0;b[G+4>>1]=d[N+1>>0]|0;b[G+2>>1]=d[N+2>>0]|0;a[G>>0]=a[N+3>>0]|0;s=0;Da(139,c[M>>2]|0,c[I>>2]|0,G|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}}s=0;la(144,c[M>>2]|0,c[I>>2]|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}if((x|0)==16){s=0;ka(308,c[M>>2]|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue}}if(z)o=1;else{s=0;k=na(254,c[M>>2]|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}o=k}b:do if(!((A|0)!=32|(v|0)!=0)){s=0;n=na(232,B*3|0)|0;k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue a}c:do if((o|0)>0){g=C+-1|0;if(!C){k=0;while(1){k=k+1|0;if((k|0)>=(o|0))break c}}else l=0;while(1){m=0;while(1){s=0;k=ya(291,f|0,g-m|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){h=Cfa(c[e>>2]|0,T|0,U|0)|0;if(!h)Ua(e|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}s=0;Da(140,n|0,k|0,B|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue a}s=0;la(145,c[M>>2]|0,n|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue a}m=m+1|0;if(C>>>0<=m>>>0)break}l=l+1|0;if((l|0)>=(o|0))break}}while(0);s=0;ka(296,n|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue a}}else{if((o|0)<=0)break;l=C+-1|0;if(!C){k=0;while(1){k=k+1|0;if((k|0)>=(o|0))break b}}else n=0;while(1){m=0;while(1){k=c[M>>2]|0;s=0;e=ya(291,f|0,l-m|0)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){g=Cfa(c[h>>2]|0,T|0,U|0)|0;if(!g)Ua(h|0,t|0);H=t}else g=-1;if((g|0)==1){k=H;continue a}s=0;la(145,k|0,e|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){e=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!e)Ua(k|0,t|0);H=t}else e=-1;if((e|0)==1){k=H;continue a}m=m+1|0;if(C>>>0<=m>>>0)break}n=n+1|0;if((n|0)>=(o|0))break}}while(0);s=0;la(146,c[M>>2]|0,c[I>>2]|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}if(y){s=0;la(79,c[M>>2]|0,y|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1){k=H;continue}}s=0;la(141,M|0,I|0);k=s;s=0;if((k|0)!=0&(t|0)!=0){h=Cfa(c[k>>2]|0,T|0,U|0)|0;if(!h)Ua(k|0,t|0);H=t}else h=-1;if((h|0)==1)k=H;else{X=142;break}}if((X|0)==13){U=0;rea(T|0);i=V;return U|0}else if((X|0)==142){U=1;rea(T|0);i=V;return U|0}return 0}function VV(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;f=e;h=g;c[h>>2]=1196314761;c[h+4>>2]=169478669;h=f;c[h>>2]=0;c[h+4>>2]=0;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,8,b)|0;a=(ffa(g,f,8)|0)==0&1;i=e;return a|0}function WV(){return 311328}function XV(a){a=a|0;a=a+-1|0;if(a>>>0>=32){a=0;return a|0}a=-2139094903>>>a&1;return a|0}function YV(a){a=a|0;a=a+-1|0;if(a>>>0>=10){a=0;return a|0}a=771>>>(a&1023)&1;return a|0}function ZV(){return 1}function _V(){return 1}function $V(){return 311712}function aW(){return 311688}function bW(){return 311672}function cW(){return 0}function dW(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=i;i=i+16|0;s=w;k=w+7|0;p=w+4|0;q=w+5|0;r=w+6|0;a[k>>0]=0;a[p>>0]=0;if(!g){f=0;i=w;return f|0}h=j&32768;m=(h|0)==0;h=h>>>15;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](k,1,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](p,1,1,g)|0;if((a[k>>0]|0)!=80){w=gc(4)|0;c[w>>2]=312064;qd(w|0,366936,0)}if(((a[p>>0]|0)+-49&255)>5){w=gc(4)|0;c[w>>2]=312064;qd(w|0,366936,0)}u=N0(f,g)|0;v=N0(f,g)|0;k=a[p>>0]|0;do if(k<<24>>24==54|k<<24>>24==51|k<<24>>24==53|k<<24>>24==50){j=N0(f,g)|0;if((j+-1|0)>>>0>65534){w=c[77884]|0;c[s>>2]=j;PI(w,311648,s);w=gc(4)|0;c[w>>2]=0;qd(w|0,366936,0)}else{k=a[p>>0]|0;t=j;break}}else t=1;while(0);a:do switch(k<<24>>24|0){case 53:case 50:if((t|0)>255){k=NH(h,2,u,v,8,0,0,0)|0;n=2;break a}else{k=OH(h,u,v,8,0,0,0)|0;n=1;break a}case 54:case 51:if((t|0)>255){k=NH(h,9,u,v,8,0,0,0)|0;n=9;break a}else{k=OH(h,u,v,24,16711680,65280,255)|0;n=1;break a}case 52:case 49:{k=OH(h,u,v,1,0,0,0)|0;n=1;break}default:{w=gc(4)|0;c[w>>2]=315016;qd(w|0,366936,0)}}while(0);if(!k){w=gc(4)|0;c[w>>2]=315016;qd(w|0,366936,0)}l=(n|0)==1;do if(l){j=a[p>>0]|0;if((j|0)==52|(j|0)==49){h=kI(k)|0;a[h>>0]=0;a[h+1>>0]=0;a[h+2>>0]=0;a[h+4>>0]=-1;a[h+5>>0]=-1;a[h+6>>0]=-1;break}else if(!((j|0)==53|(j|0)==50))break;j=kI(k)|0;h=0;do{x=h&255;a[j+(h<<2)>>0]=x;a[j+(h<<2)+1>>0]=x;a[j+(h<<2)+2>>0]=x;h=h+1|0}while((h|0)!=256)}while(0);if(!m){x=k;i=w;return x|0}j=a[p>>0]|0;switch(j<<24>>24|0){case 52:case 49:{if(j<<24>>24!=49){h=yfa(u|0,0,7,0)|0;h=Bfa(h|0,H|0,3)|0;if((v|0)<=0){x=k;i=w;return x|0}n=v+-1|0;if(!h){h=0;do{qJ(k,n-h|0)|0;h=h+1|0}while((h|0)<(v|0));i=w;return k|0}else m=0;do{l=qJ(k,n-m|0)|0;j=0;do{x=l+j|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](x,1,1,g)|0;a[x>>0]=d[x>>0]^255;j=j+1|0}while((j|0)<(h|0));m=m+1|0}while((m|0)<(v|0));i=w;return k|0}if((v|0)<=0){x=k;i=w;return x|0}m=v+-1|0;if((u|0)>0)n=0;else{h=0;do{qJ(k,m-h|0)|0;h=h+1|0}while((h|0)<(v|0));i=w;return k|0}do{j=qJ(k,m-n|0)|0;l=0;do{h=l&7;if(!(N0(f,g)|0)){x=j+(l>>3)|0;a[x>>0]=d[x>>0]|128>>>h}else{x=j+(l>>3)|0;a[x>>0]=d[x>>0]&65407>>>h}l=l+1|0}while((l|0)<(u|0));n=n+1|0}while((n|0)<(v|0));i=w;return k|0}case 53:case 50:if(!l){if((n|0)!=2){x=k;i=w;return x|0}h=(v|0)>0;if(j<<24>>24==50){if(!h){x=k;i=w;return x|0}n=v+-1|0;m=(u|0)>0;o=+(t|0);l=0;do{j=qJ(k,n-l|0)|0;if(m){h=0;do{b[j+(h<<1)>>1]=~~(+(N0(f,g)|0)*65535.0/o);h=h+1|0}while((h|0)<(u|0))}l=l+1|0}while((l|0)<(v|0));i=w;return k|0}else{if(!h){x=k;i=w;return x|0}n=v+-1|0;m=(u|0)>0;o=+(t|0);l=0;do{j=qJ(k,n-l|0)|0;if(m){h=0;do{x=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;b[s>>1]=0;Xd[x&255](s,2,1,g)|0;x=e[s>>1]|0;b[j+(h<<1)>>1]=~~(+((x<<8|x>>>8)&65535)*65535.0/o);h=h+1|0}while((h|0)<(u|0))}l=l+1|0}while((l|0)<(v|0));i=w;return k|0}}else{if(j<<24>>24!=50){a[q>>0]=0;if((v|0)<=0){x=k;i=w;return x|0}j=v+-1|0;h=(u|0)>0;m=0;do{l=qJ(k,j-m|0)|0;if(h){n=0;do{Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](q,1,1,g)|0;a[l+n>>0]=((d[q>>0]|0)*255|0)/(t|0)|0;n=n+1|0}while((n|0)<(u|0))}m=m+1|0}while((m|0)<(v|0));i=w;return k|0}if((v|0)<=0){x=k;i=w;return x|0}n=v+-1|0;if((u|0)>0)l=0;else{h=0;do{qJ(k,n-h|0)|0;h=h+1|0}while((h|0)<(v|0));i=w;return k|0}do{j=qJ(k,n-l|0)|0;h=0;do{a[j+h>>0]=((N0(f,g)|0)*255|0)/(t|0)|0;h=h+1|0}while((h|0)<(u|0));l=l+1|0}while((l|0)<(v|0));i=w;return k|0}case 54:case 51:{if(l)if(j<<24>>24==51){if((v|0)<=0){x=k;i=w;return x|0}l=v+-1|0;n=(u|0)>0;m=0;do{j=qJ(k,l-m|0)|0;if(n){h=0;while(1){a[j+2>>0]=((N0(f,g)|0)*255|0)/(t|0)|0;a[j+1>>0]=((N0(f,g)|0)*255|0)/(t|0)|0;a[j>>0]=((N0(f,g)|0)*255|0)/(t|0)|0;h=h+1|0;if((h|0)>=(u|0))break;else j=j+3|0}}m=m+1|0}while((m|0)<(v|0));i=w;return k|0}else{a[r>>0]=0;if((v|0)<=0){x=k;i=w;return x|0}l=v+-1|0;n=(u|0)>0;m=0;do{j=qJ(k,l-m|0)|0;if(n){h=0;while(1){Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](r,1,1,g)|0;a[j+2>>0]=((d[r>>0]|0)*255|0)/(t|0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](r,1,1,g)|0;a[j+1>>0]=((d[r>>0]|0)*255|0)/(t|0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](r,1,1,g)|0;a[j>>0]=((d[r>>0]|0)*255|0)/(t|0)|0;h=h+1|0;if((h|0)>=(u|0))break;else j=j+3|0}}m=m+1|0}while((m|0)<(v|0));i=w;return k|0}if((n|0)!=9){x=k;i=w;return x|0}h=(v|0)>0;if(j<<24>>24==51){if(!h){x=k;i=w;return x|0}n=v+-1|0;m=(u|0)>0;o=+(t|0);l=0;do{j=qJ(k,n-l|0)|0;if(m){h=0;do{t=~~(+(N0(f,g)|0)*65535.0/o)&65535;x=j+(h*6|0)|0;a[x>>0]=t;a[x+1>>0]=t>>8;x=~~(+(N0(f,g)|0)*65535.0/o)&65535;t=j+(h*6|0)+2|0;a[t>>0]=x;a[t+1>>0]=x>>8;t=~~(+(N0(f,g)|0)*65535.0/o)&65535;x=j+(h*6|0)+4|0;a[x>>0]=t;a[x+1>>0]=t>>8;h=h+1|0}while((h|0)<(u|0))}l=l+1|0}while((l|0)<(v|0));i=w;return k|0}else{if(!h){x=k;i=w;return x|0}n=v+-1|0;m=(u|0)>0;o=+(t|0);l=0;do{j=qJ(k,n-l|0)|0;if(m){h=0;do{t=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;b[s>>1]=0;Xd[t&255](s,2,1,g)|0;t=e[s>>1]|0;t=~~(+((t<<8|t>>>8)&65535)*65535.0/o)&65535;x=j+(h*6|0)|0;a[x>>0]=t;a[x+1>>0]=t>>8;x=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;b[s>>1]=0;Xd[x&255](s,2,1,g)|0;x=e[s>>1]|0;x=~~(+((x<<8|x>>>8)&65535)*65535.0/o)&65535;t=j+(h*6|0)+2|0;a[t>>0]=x;a[t+1>>0]=x>>8;t=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;b[s>>1]=0;Xd[t&255](s,2,1,g)|0;t=e[s>>1]|0;t=~~(+((t<<8|t>>>8)&65535)*65535.0/o)&65535;x=j+(h*6|0)+4|0;a[x>>0]=t;a[x+1>>0]=t>>8;h=h+1|0}while((h|0)<(u|0))}l=l+1|0}while((l|0)<(v|0));i=w;return k|0}}default:{x=0;i=w;return x|0}}return 0}function eW(a,f,g,h,j,k){a=a|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=i;i=i+272|0;o=s;n=s+16|0;if(!((f|0)!=0&(g|0)!=0)){g=0;i=s;return g|0}l=VH(f)|0;h=YH(f)|0;p=WH(f)|0;r=XH(f)|0;do if((l|0)==2){k=2;m=65535}else if((l|0)==1)if((h|0)==24){k=3;m=255;break}else if((h|0)==1){k=1;m=255;break}else if((h|0)==8){k=2;m=255;break}else{g=0;i=s;return g|0}else if((l|0)==9){k=3;m=65535}else{g=0;i=s;return g|0}while(0);j=(j|0)==0;c[o>>2]=j?k+3|0:k;c[o+4>>2]=p;c[o+8>>2]=r;Xea(n,311568,o)|0;q=a+4|0;k=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;a=tfa(n|0)|0;Xd[k&255](n,a,1,g)|0;if((h|0)!=1){c[o>>2]=m;Xea(n,311584,o)|0;a=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;m=tfa(n|0)|0;Xd[a&255](n,m,1,g)|0}if((l|0)==2){k=(r|0)>0;if(j){if(!k){g=1;i=s;return g|0}k=r+-1|0;l=(p|0)>0;m=0;do{h=qJ(f,k-m|0)|0;if(l){j=0;do{n=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;a=e[h+(j<<1)>>1]|0;b[o>>1]=a<<8|a>>>8;Xd[n&255](o,2,1,g)|0;j=j+1|0}while((j|0)!=(p|0))}m=m+1|0}while((m|0)!=(r|0));k=1;i=s;return k|0}if(!k){g=1;i=s;return g|0}j=r+-1|0;a=(p|0)>0;k=0;m=0;do{h=qJ(f,j-m|0)|0;if(a){l=0;do{c[o>>2]=e[h+(l<<1)>>1];Xea(n,311624,o)|0;u=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;t=tfa(n|0)|0;Xd[u&255](n,t,1,g)|0;k=k+6|0;if((k|0)>64){b[n>>1]=10;u=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;k=tfa(n|0)|0;Xd[u&255](n,k,1,g)|0;k=0}l=l+1|0}while((l|0)!=(p|0))}m=m+1|0}while((m|0)!=(r|0));k=1;i=s;return k|0}else if((l|0)==1)if((h|0)==1){k=(r|0)>0;if(j){if(!k){u=1;i=s;return u|0}k=r+-1|0;l=0;do{h=qJ(f,k-l|0)|0;if((eI(f)|0)>0){j=0;do{Xd[(d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24)&255](h+j|0,1,1,g)|0;j=j+1|0}while((j|0)<(eI(f)|0))}l=l+1|0}while((l|0)!=(r|0));k=1;i=s;return k|0}if(!k){u=1;i=s;return u|0}j=r+-1|0;k=0;a=0;do{h=qJ(f,j-a|0)|0;if((eI(f)|0)>0){l=0;do{c[o>>2]=((d[h+(l>>3)>>0]|0)&128>>>(l&7)|0)!=0?49:48;Xea(n,311616,o)|0;t=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;u=tfa(n|0)|0;Xd[t&255](n,u,1,g)|0;k=k+2|0;if((k|0)>68){b[n>>1]=10;u=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;k=tfa(n|0)|0;Xd[u&255](n,k,1,g)|0;k=0}l=l+1|0}while((l|0)<((eI(f)|0)<<3|0))}a=a+1|0}while((a|0)!=(r|0));k=1;i=s;return k|0}else if((h|0)==24){k=(r|0)>0;if(j){if(!k){u=1;i=s;return u|0}h=r+-1|0;j=(p|0)>0;m=0;do{k=qJ(f,h-m|0)|0;if(j){l=0;while(1){Xd[(d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24)&255](k+2|0,1,1,g)|0;Xd[(d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24)&255](k+1|0,1,1,g)|0;Xd[(d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24)&255](k,1,1,g)|0;l=l+1|0;if((l|0)==(p|0))break;else k=k+3|0}}m=m+1|0}while((m|0)!=(r|0));k=1;i=s;return k|0}if(!k){u=1;i=s;return u|0}j=r+-1|0;a=(p|0)>0;k=0;m=0;do{l=qJ(f,j-m|0)|0;if(a){h=0;while(1){u=d[l+1>>0]|0;t=d[l>>0]|0;c[o>>2]=d[l+2>>0];c[o+4>>2]=u;c[o+8>>2]=t;Xea(n,311592,o)|0;t=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;u=tfa(n|0)|0;Xd[t&255](n,u,1,g)|0;k=k+12|0;if((k|0)>58){b[n>>1]=10;u=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;k=tfa(n|0)|0;Xd[u&255](n,k,1,g)|0;k=0}h=h+1|0;if((h|0)==(p|0))break;else l=l+3|0}}m=m+1|0}while((m|0)!=(r|0));k=1;i=s;return k|0}else if((h|0)==8){k=(r|0)>0;if(j){if(!k){u=1;i=s;return u|0}k=r+-1|0;l=(p|0)>0;m=0;do{h=qJ(f,k-m|0)|0;if(l){j=0;do{Xd[(d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24)&255](h+j|0,1,1,g)|0;j=j+1|0}while((j|0)!=(p|0))}m=m+1|0}while((m|0)!=(r|0));k=1;i=s;return k|0}if(!k){u=1;i=s;return u|0}j=r+-1|0;a=(p|0)>0;k=0;m=0;do{h=qJ(f,j-m|0)|0;if(a){l=0;do{c[o>>2]=d[h+l>>0];Xea(n,311608,o)|0;t=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;u=tfa(n|0)|0;Xd[t&255](n,u,1,g)|0;k=k+4|0;if((k|0)>66){b[n>>1]=10;u=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;k=tfa(n|0)|0;Xd[u&255](n,k,1,g)|0;k=0}l=l+1|0}while((l|0)!=(p|0))}m=m+1|0}while((m|0)!=(r|0));k=1;i=s;return k|0}else{u=1;i=s;return u|0}else if((l|0)==9){k=(r|0)>0;if(j){if(!k){u=1;i=s;return u|0}k=r+-1|0;l=(p|0)>0;m=0;do{h=qJ(f,k-m|0)|0;if(l){j=0;do{t=h+(j*6|0)|0;u=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;t=(d[t>>0]|d[t+1>>0]<<8)&65535;b[o>>1]=t<<8|t>>>8;Xd[u&255](o,2,1,g)|0;u=h+(j*6|0)+2|0;t=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;u=(d[u>>0]|d[u+1>>0]<<8)&65535;b[o>>1]=u<<8|u>>>8;Xd[t&255](o,2,1,g)|0;t=h+(j*6|0)+4|0;u=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;t=(d[t>>0]|d[t+1>>0]<<8)&65535;b[o>>1]=t<<8|t>>>8;Xd[u&255](o,2,1,g)|0;j=j+1|0}while((j|0)!=(p|0))}m=m+1|0}while((m|0)!=(r|0));k=1;i=s;return k|0}if(!k){u=1;i=s;return u|0}j=r+-1|0;a=(p|0)>0;k=0;m=0;do{h=qJ(f,j-m|0)|0;if(a){l=0;do{v=h+(l*6|0)|0;u=h+(l*6|0)+2|0;u=(d[u>>0]|d[u+1>>0]<<8)&65535;t=h+(l*6|0)+4|0;t=(d[t>>0]|d[t+1>>0]<<8)&65535;c[o>>2]=(d[v>>0]|d[v+1>>0]<<8)&65535;c[o+4>>2]=u;c[o+8>>2]=t;Xea(n,311632,o)|0;t=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;u=tfa(n|0)|0;Xd[t&255](n,u,1,g)|0;k=k+18|0;if((k|0)>52){b[n>>1]=10;v=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;k=tfa(n|0)|0;Xd[v&255](n,k,1,g)|0;k=0}l=l+1|0}while((l|0)!=(p|0))}m=m+1|0}while((m|0)!=(r|0));k=1;i=s;return k|0}else{v=1;i=s;return v|0}return 0}function fW(a,c){a=a|0;c=c|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;m=l+12|0;e=l;f=l+2|0;g=l+4|0;h=l+6|0;j=l+8|0;k=l+10|0;b[m>>1]=12624;b[e>>1]=13392;b[f>>1]=12880;b[g>>1]=13648;b[h>>1]=13136;b[j>>1]=13904;b[k>>1]=0;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](k,1,2,c)|0;if(!(ffa(m,k,2)|0)){m=1;i=l;return m|0}if(!(ffa(e,k,2)|0)){m=1;i=l;return m|0}if(!(ffa(f,k,2)|0)){m=1;i=l;return m|0}if(!(ffa(g,k,2)|0)){m=1;i=l;return m|0}if(!(ffa(h,k,2)|0)){m=1;i=l;return m|0}m=(ffa(j,k,2)|0)==0&1;i=l;return m|0}function gW(){return 311544}function hW(a){a=a|0;a=a+-1|0;if(a>>>0>=24){a=0;return a|0}a=8388737>>>(a&16777215)&1;return a|0}function iW(a){a=a|0;return ((a+-1|0)>>>0<2|(a|0)==9)&1|0}function jW(){return 1}function kW(){return 311784}function lW(){return 311768}function mW(){return 311760}function nW(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;d=i;i=i+128|0;f=d;if(!b){a=0;i=d;return a|0}mK(f);a=qK(f,a,b,c[77930]|0,e)|0;nK(f);i=d;return a|0}function oW(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+4|0;f=e;c[g>>2]=1397768760;c[f>>2]=0;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,4,b)|0;a=(ffa(g,f,4)|0)==0&1;i=e;return a|0}function pW(){return 311728}function qW(a){a=a|0;return 0}function rW(a){a=a|0;return 0}function sW(){return 1}function tW(){return 1}function uW(){return 311888}function vW(){return 311864}function wW(){return 311856}function xW(){return 0}function yW(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+48|0;l=z;y=z+32|0;if(!e){b=0;i=z;return b|0}h=g&32768;p=(h|0)==0;h=h>>>15;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](l,32,1,e)|0;v=c[l>>2]|0;c[l>>2]=Dfa(v|0)|0;w=l+4|0;g=Dfa(c[w>>2]|0)|0;c[w>>2]=g;x=l+8|0;j=Dfa(c[x>>2]|0)|0;c[x>>2]=j;t=l+12|0;f=Dfa(c[t>>2]|0)|0;c[t>>2]=f;k=l+16|0;c[k>>2]=Dfa(c[k>>2]|0)|0;k=l+20|0;c[k>>2]=Dfa(c[k>>2]|0)|0;m=l+24|0;c[m>>2]=Dfa(c[m>>2]|0)|0;l=l+28|0;c[l>>2]=Dfa(c[l>>2]|0)|0;if((v|0)!=-1788172711){b=gc(4)|0;c[b>>2]=312064;qd(b|0,366936,0)}if((f|0)==24)h=OH(h,g,j,24,16711680,65280,255)|0;else if((f|0)==8|(f|0)==1)h=OH(h,g,j,f,0,0,0)|0;else if((f|0)==32)h=OH(h,g,j,32,16711680,65280,255)|0;else{b=gc(4)|0;c[b>>2]=315016;qd(b|0,366936,0)}if(!h){b=gc(4)|0;c[b>>2]=315016;qd(b|0,366936,0)}switch(c[k>>2]|0){case 2:{q=0;s=1;break}case 3:{q=1;s=0;break}case 5:case 4:case 1:case 0:{q=0;s=0;break}default:{b=gc(4)|0;c[b>>2]=313264;qd(b|0,366936,0)}}f=c[m>>2]|0;if((f|0)==1){f=c[l>>2]|0;if(3<>2]>>>0<=f>>>0){b=gc(4)|0;c[b>>2]=311824;qd(b|0,366936,0)}j=(f>>>0)/3|0;v=j*3|0;k=qea(v)|0;g=j<<1;l=kI(h)|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](k,v,1,e)|0;if(f>>>0>2){f=0;do{a[l+(f<<2)+2>>0]=a[k+f>>0]|0;a[l+(f<<2)+1>>0]=a[k+(f+j)>>0]|0;a[l+(f<<2)>>0]=a[k+(f+g)>>0]|0;f=f+1|0}while((f|0)<(j|0))}rea(k)}else if(!f){if((c[t>>2]|0)>>>0<24?(n=kI(h)|0,v=c[t>>2]|0,o=1<>0]=v;a[n+(g<<2)+1>>0]=v;a[n+(g<<2)>>0]=v;g=g+1|0}while((g|0)<(o|0))}}else if((f|0)==2){u=c[l>>2]|0;v=qea(u)|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](v,u,1,e)|0;rea(v)}if(!p){b=h;i=z;return b|0}f=c[w>>2]|0;if((c[t>>2]|0)==1)f=((f&7|0)!=0&1)+(f>>>3)|0;r=f&65535;v=f&1;g=v&65535;u=dI(h)|0;f=c[t>>2]|0;if((f|0)==8|(f|0)==1){j=fI(h)|0;f=c[x>>2]|0;if(!f){b=h;i=z;return b|0}p=(s|0)==0;q=0-u|0;n=g<<16>>16==0;o=(v|0)==0;m=(r|0)==0;l=j+(da(f+-1|0,u)|0)|0;k=0;do{if(!p){if(!m){f=l;g=r;while(1){g=g+-1|0;j=a[311848]|0;do if(!(j<<24>>24)){Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](311840,1,1,e)|0;j=a[311840]|0;if(j<<24>>24!=-128){a[f>>0]=j;break}Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](311848,1,1,e)|0;if(!(a[311848]|0)){a[f>>0]=-128;break}else{Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](311840,1,1,e)|0;a[f>>0]=a[311840]|0;break}}else{a[311848]=j+-1<<24>>24;a[f>>0]=a[311840]|0}while(0);if(!g)break;else f=f+1|0}}}else Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](l,r,1,e)|0;l=l+q|0;do if(!n){if(p){Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](y,v,1,e)|0;break}if(!o){f=y;g=v;while(1){g=g+-1|0;j=a[311848]|0;do if(!(j<<24>>24)){Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](311840,1,1,e)|0;j=a[311840]|0;if(j<<24>>24!=-128){a[f>>0]=j;break}Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](311848,1,1,e)|0;if(!(a[311848]|0)){a[f>>0]=-128;break}else{Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](311840,1,1,e)|0;a[f>>0]=a[311840]|0;break}}else{a[311848]=j+-1<<24>>24;a[f>>0]=a[311840]|0}while(0);if(!g)break;else f=f+1|0}}}while(0);k=k+1<<16>>16}while((k&65535)>>>0<(c[x>>2]|0)>>>0);i=z;return h|0}else if((f|0)==24){r=qea((c[w>>2]|0)*3|0)|0;if(c[x>>2]|0){p=(s|0)==0;m=(q|0)==0;n=g<<16>>16==0;o=(v|0)==0;f=0;k=0;do{l=fI(h)|0;l=l+(da((c[x>>2]|0)+~f|0,u)|0)|0;j=(c[w>>2]|0)*3|0;if(!p){if(j){g=r;while(1){j=j+-1|0;f=a[311848]|0;do if(!(f<<24>>24)){Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](311840,1,1,e)|0;f=a[311840]|0;if(f<<24>>24!=-128){a[g>>0]=f;break}Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](311848,1,1,e)|0;if(!(a[311848]|0)){a[g>>0]=-128;break}else{Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](311840,1,1,e)|0;a[g>>0]=a[311840]|0;break}}else{a[311848]=f+-1<<24>>24;a[g>>0]=a[311840]|0}while(0);if(!j)break;else g=g+1|0}}}else Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](r,j,1,e)|0;f=(c[w>>2]|0)==0;if(m){if(!f){j=l;f=r;g=0;while(1){a[j+2>>0]=a[f+2>>0]|0;a[j+1>>0]=a[f+1>>0]|0;a[j>>0]=a[f>>0]|0;g=g+1<<16>>16;if((g&65535)>>>0>=(c[w>>2]|0)>>>0)break;else{j=j+3|0;f=f+3|0}}}}else if(!f){j=l;f=r;g=0;while(1){a[j+2>>0]=a[f>>0]|0;a[j+1>>0]=a[f+1>>0]|0;a[j>>0]=a[f+2>>0]|0;g=g+1<<16>>16;if((g&65535)>>>0>=(c[w>>2]|0)>>>0)break;else{j=j+3|0;f=f+3|0}}}do if(!n){if(p){Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](y,v,1,e)|0;break}if(!o){f=y;g=v;while(1){g=g+-1|0;j=a[311848]|0;do if(!(j<<24>>24)){Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](311840,1,1,e)|0;j=a[311840]|0;if(j<<24>>24!=-128){a[f>>0]=j;break}Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](311848,1,1,e)|0;if(!(a[311848]|0)){a[f>>0]=-128;break}else{Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](311840,1,1,e)|0;a[f>>0]=a[311840]|0;break}}else{a[311848]=j+-1<<24>>24;a[f>>0]=a[311840]|0}while(0);if(!g)break;else f=f+1|0}}}while(0);k=k+1<<16>>16;f=k&65535}while(f>>>0<(c[x>>2]|0)>>>0)}rea(r);b=h;i=z;return b|0}else if((f|0)==32){r=qea(c[w>>2]<<2)|0;if(c[x>>2]|0){p=(s|0)==0;m=(q|0)==0;n=g<<16>>16==0;o=(v|0)==0;f=0;k=0;do{l=fI(h)|0;l=l+(da((c[x>>2]|0)+~f|0,u)|0)|0;j=c[w>>2]<<2;if(!p){if(j){g=r;while(1){j=j+-1|0;f=a[311848]|0;do if(!(f<<24>>24)){Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](311840,1,1,e)|0;f=a[311840]|0;if(f<<24>>24!=-128){a[g>>0]=f;break}Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](311848,1,1,e)|0;if(!(a[311848]|0)){a[g>>0]=-128;break}else{Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](311840,1,1,e)|0;a[g>>0]=a[311840]|0;break}}else{a[311848]=f+-1<<24>>24;a[g>>0]=a[311840]|0}while(0);if(!j)break;else g=g+1|0}}}else Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](r,j,1,e)|0;f=(c[w>>2]|0)==0;if(m){if(!f){j=l;f=r;g=0;while(1){a[j+2>>0]=a[f+3>>0]|0;a[j+1>>0]=a[f+2>>0]|0;a[j>>0]=a[f+1>>0]|0;a[j+3>>0]=a[f>>0]|0;g=g+1<<16>>16;if((g&65535)>>>0>=(c[w>>2]|0)>>>0)break;else{j=j+4|0;f=f+4|0}}}}else if(!f){j=l;f=r;g=0;while(1){a[j+3>>0]=a[f>>0]|0;a[j+2>>0]=a[f+1>>0]|0;a[j+1>>0]=a[f+2>>0]|0;a[j>>0]=a[f+3>>0]|0;g=g+1<<16>>16;if((g&65535)>>>0>=(c[w>>2]|0)>>>0)break;else{j=j+4|0;f=f+4|0}}}do if(!n){if(p){Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](y,v,1,e)|0;break}if(!o){f=y;g=v;while(1){g=g+-1|0;j=a[311848]|0;do if(!(j<<24>>24)){Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](311840,1,1,e)|0;j=a[311840]|0;if(j<<24>>24!=-128){a[f>>0]=j;break}Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](311848,1,1,e)|0;if(!(a[311848]|0)){a[f>>0]=-128;break}else{Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](311840,1,1,e)|0;a[f>>0]=a[311840]|0;break}}else{a[311848]=j+-1<<24>>24;a[f>>0]=a[311840]|0}while(0);if(!g)break;else f=f+1|0}}}while(0);k=k+1<<16>>16;f=k&65535}while(f>>>0<(c[x>>2]|0)>>>0)}rea(r);b=h;i=z;return b|0}else{b=h;i=z;return b|0}return 0}function zW(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+4|0;f=e;c[g>>2]=-1788172711;c[f>>2]=0;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,4,b)|0;a=(ffa(g,f,4)|0)==0&1;i=e;return a|0}function AW(){return 311800}function BW(a){a=a|0;return 0}function CW(a){a=a|0;return 0}function DW(){return 1}function EW(){return 312152}function FW(){return 312128}function GW(){return 312112}function HW(){return 0}function IW(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=i;i=i+544|0;G=L+532|0;I=L+530|0;J=L+528|0;k=L;o=L+529|0;F=L+512|0;H=L+531|0;sfa(k|0,0,512)|0;if((Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](k,1,512,g)|0)>>>0<512){L=gc(4)|0;c[L>>2]=312088;qd(L|0,366936,0)}K=e[k>>1]|0;K=(K<<8|K>>>8)&65535;b[k>>1]=K;D=k+4|0;h=e[D>>1]|0;h=(h<<8|h>>>8)&65535;b[D>>1]=h;D=k+6|0;l=e[D>>1]|0;l=l<<8|l>>>8;E=l&65535;b[D>>1]=E;D=k+8|0;n=e[D>>1]|0;n=n<<8|n>>>8;b[D>>1]=n;D=k+10|0;m=e[D>>1]|0;m=m<<8|m>>>8;b[D>>1]=m;D=k+12|0;c[D>>2]=Dfa(c[D>>2]|0)|0;D=k+16|0;c[D>>2]=Dfa(c[D>>2]|0)|0;D=k+104|0;j=c[D>>2]|0;c[D>>2]=Dfa(j|0)|0;if(K<<16>>16!=474){L=gc(4)|0;c[L>>2]=312064;qd(L|0,366936,0)}K=b[k+2>>1]|0;C=(K&255)<<24>>24==1;if((K&-256)<<16>>16!=256){L=gc(4)|0;c[L>>2]=312040;qd(L|0,366936,0)}if(j){L=gc(4)|0;c[L>>2]=312016;qd(L|0,366936,0)}K=l&65535;if((h&65535)<3)if((h&65535)<2){D=1;A=1}else{k=1;B=12}else{k=m&65535;B=12}if((B|0)==12){D=n&65535;A=k}a:do if(C){k=da(D,A)|0;j=k<<2;h=qea(j)|0;if(!h){L=gc(4)|0;c[L>>2]=315480;qd(L|0,366936,0)}if((k|0)!=(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](h,4,k,g)|0)){L=gc(4)|0;c[L>>2]=311984;qd(L|0,366936,0)}if((k|0)>0){l=0;do{B=h+(l<<2)|0;c[B>>2]=Dfa(c[B>>2]|0)|0;l=l+1|0}while((l|0)!=(k|0))}if((j|0)>0){k=0;while(1){a[o>>0]=0;k=k+1|0;if(!(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](o,1,1,g)|0))break;if((k|0)>=(j|0)){z=h;break a}}L=gc(4)|0;c[L>>2]=311984;qd(L|0,366936,0)}else z=h}else z=0;while(0);if((A|0)==3)k=24;else if((A|0)==4)k=32;else if((A|0)==2)k=32;else if((A|0)==1)k=8;else{L=gc(4)|0;c[L>>2]=311960;qd(L|0,366936,0)}y=PH(K,D,k,0,0,0)|0;if(!y){L=gc(4)|0;c[L>>2]=315016;qd(L|0,366936,0)}if((k|0)==8){k=kI(y)|0;l=0;do{B=l&255;a[k+(l<<2)+2>>0]=B;a[k+(l<<2)+1>>0]=B;a[k+(l<<2)>>0]=B;a[k+(l<<2)+3>>0]=0;l=l+1|0}while((l|0)!=256)}x=dI(y)|0;h=qJ(y,0)|0;c[F+0>>2]=c[77980];c[F+4>>2]=c[77981];c[F+8>>2]=c[77982];c[F+12>>2]=c[77983];if(A>>>0<3?(c[F>>2]=0,(A|0)==2):0){c[F+4>>2]=3;u=0;w=4;B=38}else B=37;if((B|0)==37?(A|0)>0:0){u=1;w=A;B=38}b:do if((B|0)==38){r=(D|0)==0;s=f+8|0;t=E<<16>>16==0;k=0;l=0;v=0;j=z;c:do{if(!r){p=0;q=h+(c[F+(v<<2)>>2]|0)|0;while(1){if(C){Hd[(d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24)&255](g,c[j>>2]|0,0)|0;k=0}if(!t){m=0;o=q;while(1){a[H>>0]=0;if(C){d:do if(k){k=k+-1|0;if((l|0)==-1)B=53;else n=l}else{do{a[G>>0]=0;if(!(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](G,1,1,g)|0)){n=-1;k=0;break d}k=a[G>>0]|0}while(k<<24>>24==0);n=k&255;k=n&127;if(n&128){k=k+-1|0;B=53;break}a[I>>0]=0;if(!(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](I,1,1,g)|0)){n=-1;break}l=d[I>>0]|0;n=l;k=k+-1|0}while(0);do if((B|0)==53){B=0;a[J>>0]=0;if(!(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](J,1,1,g)|0)){n=-1;l=-1;break}n=d[J>>0]|0;l=-1}while(0);a[H>>0]=n}else n=Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](H,1,1,g)|0;if((n|0)==-1){B=58;break c}a[o>>0]=a[H>>0]|0;m=m+1|0;if((m|0)>=(K|0))break;else o=o+w|0}}p=p+1|0;j=j+4|0;if((p|0)>=(D|0))break;else q=q+x|0}}v=v+1|0}while((v|0)<(A|0));if((B|0)==58){L=gc(4)|0;c[L>>2]=311936;qd(L|0,366936,0)}if(!(u|(D|0)==0)){if(!(E<<16>>16)){k=0;while(1){k=k+1|0;if((k|0)>=(D|0))break b}}else l=0;while(1){k=0;j=h;while(1){f=a[j>>0]|0;a[j+1>>0]=f;a[j+2>>0]=f;k=k+1|0;if((k|0)>=(K|0))break;else j=j+4|0}l=l+1|0;if((l|0)>=(D|0))break;else h=h+x|0}}}while(0);if(!z){i=L;return y|0}rea(z);i=L;return y|0}function JW(a,c){a=a|0;c=c|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+2|0;f=e;b[g>>1]=-9727;b[f>>1]=0;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,2,c)|0;a=(ffa(g,f,2)|0)==0&1;i=e;return a|0}function KW(){return 311904}function LW(a){a=a|0;return 0}function MW(a){a=a|0;return 0}function NW(){return 312272}function OW(){return 312248}function PW(){return 312232}function QW(){return 0}function RW(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;Y=i;i=i+832|0;U=Y;M=Y+48|0;h=Y+20|0;k=Y+336|0;O=Y+56|0;D=Y+80|0;if(!g){f=0;i=Y;return f|0}w=j&32768;N=(w|0)!=0;w=w>>>15;R=f+12|0;E=Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](g)|0;T=f+8|0;Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0,2)|0;S=Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](g)|0;Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,E,0)|0;a[M>>0]=0;K=M+1|0;a[K>>0]=0;L=M+2|0;a[L>>0]=0;X=M+4|0;c[X>>2]=0;G=Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](g)|0;Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0,2)|0;V=Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](g)|0;Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,G+-18+V|0,0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](U,1,18,g)|0;Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,G,0)|0;if((((ffa(312184,U,18)|0)==0?(m=E+-26+S|0,Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,m,0)|0,Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](h,26,1,g)|0,n=c[h>>2]|0,(n|0)!=0):0)?(Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,n,0)|0,Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](k,495,1,g)|0,q=k+486|0,q=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24,m>>>0>q>>>0&(q|0)!=0):0)?(Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,q,0)|0,Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](M,1,1,g)|0,Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](K,1,1,g)|0,p=m-q+-2|0,o=qea(p)|0,c[X>>2]=o,(o|0)!=0):0)Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](o,1,p,g)|0;Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,E,0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](O,18,1,g)|0;o=O+16|0;p=a[o>>0]|0;a[L>>0]=p;Q=O+12|0;k=p&255;G=Ifa(p&255|0,0,(d[Q>>0]|d[Q+1>>0]<<8)&65535|0,0)|0;G=yfa(G|0,H|0,7,0)|0;G=Bfa(G|0,H|0,3)|0;p=(p&255)>>>3&255;W=d[O+17>>0]|0;V=(W&16|0)==0;W=(W&32|0)==0;Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,d[O>>0]|0,1)|0;a:do switch(d[o>>0]|0){case 8:{o=O+14|0;m=OH(w,(d[Q>>0]|d[Q+1>>0]<<8)&65535,(d[o>>0]|d[o+1>>0]<<8)&65535,8,0,0,0)|0;if(!m){Y=gc(4)|0;c[Y>>2]=315016;qd(Y|0,366936,0)}q=kI(m)|0;if(a[O+1>>0]|0){h=O+5|0;l=O+7|0;k=(da(d[l>>0]|0,(d[h>>0]|d[h+1>>0]<<8)&65535)|0)>>>3;p=qea(k)|0;if(!p){Y=gc(4)|0;c[Y>>2]=315016;qd(Y|0,366936,0)}Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](p,1,k,g)|0;l=d[l>>0]|0;if((l|0)==32){sfa(D|0,-1,256)|0;n=O+3|0;n=(d[n>>0]|d[n+1>>0]<<8)&65535;l=d[h>>0]|d[h+1>>0]<<8;k=l&65535;if(n>>>0<(k>>>0>256?256:k)>>>0){k=(l&65535)<256?k:256;h=p;l=n;while(1){a[q+(l<<2)>>0]=a[h>>0]|0;a[q+(l<<2)+1>>0]=a[h+1>>0]|0;a[q+(l<<2)+2>>0]=a[h+2>>0]|0;a[D+l>>0]=a[h+3>>0]|0;l=l+1|0;if((l|0)==(k|0))break;else h=h+4|0}}sI(m,D,256)}else if((l|0)==16){n=O+3|0;n=(d[n>>0]|d[n+1>>0]<<8)&65535;l=d[h>>0]|d[h+1>>0]<<8;k=l&65535;if(n>>>0<(k>>>0>256?256:k)>>>0){h=(l&65535)<256?k:256;l=n;k=p;while(1){E=e[k>>1]|0;a[q+(l<<2)+2>>0]=(((E>>>10&31)*255|0)>>>0)/31|0;a[q+(l<<2)+1>>0]=(((E>>>5&31)*255|0)>>>0)/31|0;a[q+(l<<2)>>0]=(((E&31)*255|0)>>>0)/31|0;l=l+1|0;if((l|0)==(h|0))break;else k=k+2|0}}}else if((l|0)==24?(A=O+3|0,A=(d[A>>0]|d[A+1>>0]<<8)&65535,x=d[h>>0]|d[h+1>>0]<<8,y=x&65535,A>>>0<(y>>>0>256?256:y)>>>0):0){k=(x&65535)<256?y:256;h=p;l=A;while(1){a[q+(l<<2)>>0]=a[h>>0]|0;a[q+(l<<2)+1>>0]=a[h+1>>0]|0;a[q+(l<<2)+2>>0]=a[h+2>>0]|0;l=l+1|0;if((l|0)==(k|0))break;else h=h+3|0}}rea(p)}if(((c[X>>2]|0)!=0?(L=a[L>>0]|0,F=L&255,L<<24>>24!=0):0)?(J=b[M>>1]|0,M=J&255,I=(da(M,F)|0)>>>3,J=PH(M,(J&65535)>>>8&65535,F,0,0,0)|0,(J|0)!=0):0){l=a[K>>0]|0;if(l<<24>>24){k=(l&255)+-1|0;h=0;n=c[X>>2]|0;while(1){qfa(qJ(J,k-h|0)|0,n|0,I|0)|0;h=h+1|0;if((h&255)<<24>>24==l<<24>>24)break;else n=n+I|0}}l=kI(m)|0;k=kI(J)|0;b:do if((k|0)!=0&(l|0)!=0){h=0;while(1){if(h>>>0>=(hI(m)|0)>>>0)break b;M=k+(h<<2)|0;L=l+(h<<2)|0;L=d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24;a[M>>0]=L;a[M+1>>0]=L>>8;a[M+2>>0]=L>>16;a[M+3>>0]=L>>24;h=h+1|0}}while(0);M=pI(m)|0;sI(J,M,rI(m)|0);cI(m,J)|0;RH(J)}if(!N){l=d[O+2>>0]|0;if((l|0)==3|(l|0)==1){if(!((d[o>>0]|d[o+1>>0]<<8)<<16>>16)){P=198;break a}else l=0;do{T=qJ(m,l)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](T,1,G,g)|0;l=l+1|0}while(l>>>0<((d[o>>0]|d[o+1>>0]<<8)&65535)>>>0);P=198}else if((l|0)==11|(l|0)==9){x=(d[Q>>0]|d[Q+1>>0]<<8)&65535;l=d[o>>0]|d[o+1>>0]<<8;v=l&65535;w=qJ(m,v)|0;s=(S-(Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](g)|0)|0)/(v|0)|0;t=qea(s)|0;if(!t){RH(m);P=198;break a}u=t+s|0;n=qJ(m,0)|0;c:do if(l<<16>>16){r=t;l=u;q=0;o=0;while(1){if(l>>>0>=u>>>0){Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](t,1,s,g)|0;l=t}h=l+1|0;k=d[l>>0]|0;j=(k&127)+1|0;if((n+(j+q)|0)>>>0>w>>>0)break;if(!(k&128)){p=0;k=o;do{if((l+2|0)>>>0>>0)l=h;else{Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0-(s+(r-h))|0,1)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](t,1,s,g)|0;l=t}h=l+1|0;a[n+q>>0]=a[l>>0]|0;q=q+1|0;if((q|0)>=(x|0)){k=k+1|0;n=qJ(m,k)|0;q=0}p=p+1|0}while((p|0)<(j|0));l=h}else{if((l+2|0)>>>0>=u>>>0){Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0-(s+(r-h))|0,1)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](t,1,s,g)|0;h=t}l=h+1|0;p=0;k=o;do{a[n+q>>0]=a[h>>0]|0;q=q+1|0;if((q|0)>=(x|0)){k=k+1|0;n=qJ(m,k)|0;q=0}p=p+1|0}while((p|0)<(j|0))}if((k|0)<(v|0))o=k;else break c}PI(c[78040]|0,312208,U)}while(0);rea(t);P=198;break a}else{RH(m);m=0;break a}}break}case 16:case 15:{j=j&1;p=(j|0)!=0;l=(d[Q>>0]|d[Q+1>>0]<<8)&65535;o=O+14|0;k=(d[o>>0]|d[o+1>>0]<<8)&65535;if(p){m=OH(w,l,k,24,16711680,65280,255)|0;q=24}else{m=OH(w,l,k,16,31744,992,31)|0;q=16}if(!m){Y=gc(4)|0;c[Y>>2]=315016;qd(Y|0,366936,0)}if(((c[X>>2]|0)!=0?(L=a[L>>0]|0,v=L&255,L<<24>>24!=0):0)?(C=b[M>>1]|0,M=C&255,B=(da(M,v)|0)>>>3,C=PH(M,(C&65535)>>>8&65535,v,0,0,0)|0,(C|0)!=0):0){l=a[K>>0]|0;if(l<<24>>24){k=(l&255)+-1|0;h=0;n=c[X>>2]|0;while(1){qfa(qJ(C,k-h|0)|0,n|0,B|0)|0;h=h+1|0;if((h&255)<<24>>24==l<<24>>24)break;else n=n+B|0}}if(p){l=LI(C)|0;RH(C)}else l=C;cI(m,l)|0;RH(l)}if(!N){u=(da((d[Q>>0]|d[Q+1>>0]<<8)&65535,q)|0)>>>3;t=q>>>3;if(!(a[O+1>>0]|0))l=18;else{l=O+5|0;l=(da(((d[O+7>>0]|0)+7|0)>>>3,(d[l>>0]|d[l+1>>0]<<8)&65535)|0)+18|0}Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,E,0)|0;Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,l+(d[O>>0]|0)|0,0)|0;l=d[O+2>>0]|0;if((l|0)==2){s=qea(((d[Q>>0]|d[Q+1>>0]<<8)&65535)<<1)|0;if(!s){Y=gc(4)|0;c[Y>>2]=315480;qd(Y|0,366936,0)}T=d[o>>0]|d[o+1>>0]<<8;q=T&65535;if(T<<16>>16){r=(u|0)==0;l=(j|0)==0;k=0;do{n=qJ(m,k)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](s,2,(d[Q>>0]|d[Q+1>>0]<<8)&65535,g)|0;if(!r){p=s;j=0;while(1){h=n+j|0;o=e[p>>1]|0;if(l)b[h>>1]=o&32767;else{a[h>>0]=(((o&31)*255|0)>>>0)/31|0;a[n+(j+1)>>0]=(((o>>>5&31)*255|0)>>>0)/31|0;a[n+(j+2)>>0]=(((o>>>10&31)*255|0)>>>0)/31|0}j=j+t|0;if((j|0)>=(u|0))break;else p=p+2|0}}k=k+1|0}while((k|0)<(q|0))}rea(s);P=198;break a}else if((l|0)==10){l=d[o>>0]|d[o+1>>0]<<8;z=l&65535;A=j|2;x=(da((d[Q>>0]|d[Q+1>>0]<<8)&65535,j<<3|16)|0)>>>3;y=qJ(m,z)|0;u=(S-(Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](g)|0)|0)/(z|0)|0;v=qea(u)|0;if(!v){RH(m);P=198;break a}w=v+u|0;k=qJ(m,0)|0;d:do if(l<<16>>16){s=(j|0)==0;t=v;l=w;q=0;j=0;while(1){if(l>>>0>=w>>>0){Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,1,u,g)|0;l=v}h=l+1|0;n=d[l>>0]|0;r=(n&127)+1|0;if((k+((da(r,A)|0)+q)|0)>>>0>y>>>0)break;if(n&128){if((l+3|0)>>>0>=w>>>0){Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0-(u+(t-h))|0,1)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,1,u,g)|0;h=v}l=h+2|0;if(s){p=0;n=j;do{b[k+q>>1]=e[h>>1]&32767;q=q+A|0;if((q|0)>=(x|0)){n=n+1|0;k=qJ(m,n)|0;q=0}p=p+1|0}while((p|0)<(r|0));h=q}else{p=0;n=j;do{S=e[h>>1]|0;a[k+q>>0]=(((S&31)*255|0)>>>0)/31|0;a[k+(q+1)>>0]=(((S>>>5&31)*255|0)>>>0)/31|0;a[k+(q+2)>>0]=(((S>>>10&31)*255|0)>>>0)/31|0;q=q+A|0;if((q|0)>=(x|0)){n=n+1|0;k=qJ(m,n)|0;q=0}p=p+1|0}while((p|0)<(r|0));h=q}}else{l=h;o=0;h=q;n=j;do{if((l+2|0)>>>0>>0)q=l;else{Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0-(u+(t-l))|0,1)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,1,u,g)|0;q=v}l=q+2|0;p=k+h|0;q=e[q>>1]|0;if(s)b[p>>1]=q&32767;else{a[p>>0]=(((q&31)*255|0)>>>0)/31|0;a[k+(h+1)>>0]=(((q>>>5&31)*255|0)>>>0)/31|0;a[k+(h+2)>>0]=(((q>>>10&31)*255|0)>>>0)/31|0}h=h+A|0;if((h|0)>=(x|0)){n=n+1|0;k=qJ(m,n)|0;h=0}o=o+1|0}while((o|0)<(r|0))}if((n|0)<(z|0)){q=h;j=n}else break d}PI(c[78040]|0,312208,U)}while(0);rea(v);P=198;break a}else{RH(m);m=0;break a}}break}case 32:{o=j&1;B=(o|0)==0;p=O+14|0;m=OH(w,(d[Q>>0]|d[Q+1>>0]<<8)&65535,(d[p>>0]|d[p+1>>0]<<8)&65535,(o<<3^8)+24|0,16711680,65280,255)|0;if(!m){Y=gc(4)|0;c[Y>>2]=315016;qd(Y|0,366936,0)}if(((c[X>>2]|0)!=0?(L=a[L>>0]|0,s=L&255,L<<24>>24!=0):0)?(l=b[M>>1]|0,M=l&255,z=(da(M,s)|0)>>>3,l=PH(M,(l&65535)>>>8&65535,s,0,0,0)|0,(l|0)!=0):0){k=a[K>>0]|0;if(k<<24>>24){h=(k&255)+-1|0;n=0;q=c[X>>2]|0;while(1){qfa(qJ(l,h-n|0)|0,q|0,z|0)|0;n=n+1|0;if((n&255)<<24>>24==k<<24>>24)break;else q=q+z|0}}if(!B){M=LI(l)|0;RH(l);l=M}cI(m,l)|0;RH(l)}if(!N){l=d[O+2>>0]|0;if((l|0)==2){O0(m,(d[Q>>0]|d[Q+1>>0]<<8)&65535,(d[p>>0]|d[p+1>>0]<<8)&65535,4,f,g,o);P=198;break a}else if((l|0)==10){k=d[p>>0]|d[p+1>>0]<<8;z=k&65535;A=4-o|0;y=(d[Q>>0]|d[Q+1>>0]<<8)&65535;x=vfa(o|0,0,3)|0;x=yfa(x^8|0,H|0,24,0)|0;x=Ifa(y|0,0,x|0,H|0)|0;x=Bfa(x|0,H|0,3)|0;y=qJ(m,z)|0;u=(S-(Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](g)|0)|0)/(z|0)|0;v=qea(u)|0;if(!v){RH(m);P=198;break a}w=v+u|0;l=qJ(m,0)|0;e:do if(k<<16>>16){t=v;k=w;p=0;q=0;while(1){if(k>>>0>=w>>>0){Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,1,u,g)|0;k=v}h=k+1|0;n=d[k>>0]|0;s=(n&127)+1|0;if((l+((da(s,A)|0)+p)|0)>>>0>y>>>0)break;if(!(n&128)){k=h;o=0;h=p;n=q;do{if((k+4|0)>>>0>>0)q=k;else{Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0-(u+(t-k))|0,1)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,1,u,g)|0;q=v}k=q+4|0;p=l+h|0;if(B)c[p>>2]=c[q>>2];else{a[p>>0]=a[q>>0]|0;a[l+(h+1)>>0]=a[q+1>>0]|0;a[l+(h+2)>>0]=a[q+2>>0]|0}h=h+A|0;if((h|0)>=(x|0)){n=n+1|0;l=qJ(m,n)|0;h=0}o=o+1|0}while((o|0)<(s|0))}else{if((k+5|0)>>>0>=w>>>0){Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0-(u+(t-h))|0,1)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,1,u,g)|0;h=v}k=h+4|0;o=h+1|0;j=h+2|0;r=0;n=q;while(1){q=l+p|0;if(B)c[q>>2]=c[h>>2];else{a[q>>0]=a[h>>0]|0;a[l+(p+1)>>0]=a[o>>0]|0;a[l+(p+2)>>0]=a[j>>0]|0}q=p+A|0;if((q|0)>=(x|0)){n=n+1|0;l=qJ(m,n)|0;q=0}r=r+1|0;if((r|0)>=(s|0)){h=q;break}else p=q}}if((n|0)<(z|0)){p=h;q=n}else break e}PI(c[78040]|0,312208,U)}while(0);rea(v);P=198;break a}else{RH(m);m=0;break a}}break}case 24:{q=O+14|0;m=OH(w,(d[Q>>0]|d[Q+1>>0]<<8)&65535,(d[q>>0]|d[q+1>>0]<<8)&65535,k,16711680,65280,255)|0;if(!m){Y=gc(4)|0;c[Y>>2]=315016;qd(Y|0,366936,0)}if(((c[X>>2]|0)!=0?(L=a[L>>0]|0,r=L&255,L<<24>>24!=0):0)?(u=b[M>>1]|0,M=u&255,t=(da(M,r)|0)>>>3,u=PH(M,(u&65535)>>>8&65535,r,0,0,0)|0,(u|0)!=0):0){l=a[K>>0]|0;if(l<<24>>24){k=(l&255)+-1|0;h=0;n=c[X>>2]|0;while(1){qfa(qJ(u,k-h|0)|0,n|0,t|0)|0;h=h+1|0;if((h&255)<<24>>24==l<<24>>24)break;else n=n+t|0}}cI(m,u)|0;RH(u)}if(!N){l=d[O+2>>0]|0;if((l|0)==2){O0(m,(d[Q>>0]|d[Q+1>>0]<<8)&65535,(d[q>>0]|d[q+1>>0]<<8)&65535,p,f,g,1);P=198;break a}else if((l|0)==10){h=d[q>>0]|d[q+1>>0]<<8;z=h&65535;x=(((d[Q>>0]|d[Q+1>>0]<<8)&65535)*24|0)>>>3;y=qJ(m,z)|0;u=(S-(Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](g)|0)|0)/(z|0)|0;v=qea(u)|0;if(!v){RH(m);P=198;break a}w=v+u|0;l=qJ(m,0)|0;f:do if(h<<16>>16){t=v;k=w;q=0;r=0;while(1){if(k>>>0>=w>>>0){Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,1,u,g)|0;k=v}h=k+1|0;n=d[k>>0]|0;s=(n&127)+1|0;if((l+((s*3|0)+q)|0)>>>0>y>>>0)break;if(!(n&128)){k=h;p=0;n=r;while(1){if((k+3|0)>>>0>>0)h=k;else{Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0-(u+(t-k))|0,1)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,1,u,g)|0;h=v}k=h+3|0;a[l+q>>0]=a[h>>0]|0;a[l+(q+1)>>0]=a[h+1>>0]|0;a[l+(q+2)>>0]=a[h+2>>0]|0;h=q+3|0;if((h|0)>=(x|0)){n=n+1|0;l=qJ(m,n)|0;h=0}p=p+1|0;if((p|0)>=(s|0))break;else q=h}}else{if((k+4|0)>>>0>=w>>>0){Hd[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0-(u+(t-h))|0,1)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,1,u,g)|0;h=v}k=h+3|0;p=h+1|0;o=h+2|0;j=0;n=r;do{a[l+q>>0]=a[h>>0]|0;a[l+(q+1)>>0]=a[p>>0]|0;a[l+(q+2)>>0]=a[o>>0]|0;q=q+3|0;if((q|0)>=(x|0)){n=n+1|0;l=qJ(m,n)|0;q=0}j=j+1|0}while((j|0)<(s|0));h=q}if((n|0)<(z|0)){q=h;r=n}else break f}PI(c[78040]|0,312208,U)}while(0);rea(v);P=198;break a}else{RH(m);m=0;break a}}break}default:{m=0;P=198}}while(0);if((P|0)==198){if(!W)lL(m)|0;if(!V)kL(m)|0}l=c[X>>2]|0;if(!l){f=m;i=Y;return f|0}rea(l);f=m;i=Y;return f|0}function SW(f,h,j,k,l,m){f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+544|0;o=O+524|0;J=O+26|0;L=O+522|0;M=O+521|0;N=O;if((h|0)==0|(j|0)==0){N=0;i=O;return N|0}t=kI(h)|0;u=YH(h)|0;a[o>>0]=0;m=o+3|0;a[m>>0]=0;a[m+1>>0]=0;m=o+8|0;a[m>>0]=0;a[m+1>>0]=0;m=o+10|0;a[m>>0]=0;a[m+1>>0]=0;m=(WH(h)|0)&65535;p=o+12|0;a[p>>0]=m;a[p+1>>0]=m>>8;m=(XH(h)|0)&65535;r=o+14|0;a[r>>0]=m;a[r+1>>0]=m>>8;a[o+16>>0]=u;a[o+17>>0]=(u|0)==32?8:0;m=o+1|0;do if(t){a[m>>0]=1;a[o+2>>0]=l<<2&8|1;m=1<>0]=m;a[q+1>>0]=m>>8;m=o+7|0;if(!(oI(h)|0)){a[m>>0]=24;s=f+4|0;Xd[(d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24)&255](o,18,1,j)|0}else{a[m>>0]=32;s=f+4|0;Xd[(d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24)&255](o,18,1,j)|0}I=(oI(h)|0)==0;m=d[q>>0]|d[q+1>>0]<<8;k=m&65535;if(I){o=qea(k*3|0)|0;if(m<<16>>16){m=0;do{a[o+(m*3|0)>>0]=a[t+(m<<2)>>0]|0;a[o+(m*3|0)+1>>0]=a[t+(m<<2)+1>>0]|0;a[o+(m*3|0)+2>>0]=a[t+(m<<2)+2>>0]|0;m=m+1|0}while(m>>>0>>0)}Xd[(d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24)&255](o,3,k,j)|0;rea(o);I=s;break}else{k=qea(k<<2)|0;n=pI(h)|0;I=d[q>>0]|d[q+1>>0]<<8;m=I&65535;if(I<<16>>16){o=0;do{a[k+(o<<2)>>0]=a[t+(o<<2)>>0]|0;a[k+(o<<2)+1>>0]=a[t+(o<<2)+1>>0]|0;a[k+(o<<2)+2>>0]=a[t+(o<<2)+2>>0]|0;a[k+(o<<2)+3>>0]=a[n+o>>0]|0;o=o+1|0}while(o>>>0>>0)}Xd[(d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24)&255](k,4,m,j)|0;rea(k);I=s;break}}else{a[m>>0]=0;a[o+2>>0]=l<<2&8|2;I=o+5|0;a[I>>0]=0;a[I+1>>0]=0;a[o+7>>0]=0;I=f+4|0;Xd[(d[I>>0]|d[I+1>>0]<<8|d[I+2>>0]<<16|d[I+3>>0]<<24)&255](o,18,1,j)|0}while(0);if(!(l&2)){m=d[p>>0]|d[p+1>>0]<<8;l=m&65535;o=d[r>>0]|d[r+1>>0]<<8;s=u>>>3;t=qea(da(l,s)|0)|0;if(o<<16>>16){r=m<<16>>16==0;p=o&65535;m=t;q=0;do{o=qJ(h,q)|0;if((u|0)==24)m=o;else if((u|0)==32)m=o;else if((u|0)==16){if(!r){k=t;n=0;while(1){b[k>>1]=b[o+(n<<1)>>1]|0;n=n+1|0;if((n|0)==(l|0))break;else k=k+s|0}}}else if((u|0)==8)m=o;Xd[(d[I>>0]|d[I+1>>0]<<8|d[I+2>>0]<<16|d[I+3>>0]<<24)&255](m,s,l,j)|0;q=q+1|0}while((q|0)!=(p|0))}rea(t)}else{u=WH(h)|0;C=XH(h)|0;D=(YH(h)|0)>>>3;E=eI(h)|0;F=qea(D<<7)|0;u=qea((~~+ca(+(+(u>>>0)/3.0))>>>0)+(da(D,u)|0)|0)|0;v=qea(D)|0;if(C){w=v+2|0;x=v+4|0;y=v+8|0;z=v+12|0;A=v+1|0;l=D+1|0;B=u;s=F;o=0;m=0;G=0;do{r=qJ(h,G)|0;n=u;k=0;a:while(1){q=(o|0)==0;p=(o|0)!=0;b:while(1){while(1){if(k>>>0>=E>>>0)break a;t=r+k|0;switch(D|0){case 6:{c[v>>2]=c[t>>2];b[x>>1]=b[r+(k+4)>>1]|0;break}case 4:{c[v>>2]=c[t>>2];break}case 2:{b[v>>1]=b[t>>1]|0;break}case 12:{g[v>>2]=+g[t>>2];g[x>>2]=+g[r+(k+4)>>2];g[y>>2]=+g[r+(k+8)>>2];break}case 16:{g[v>>2]=+g[t>>2];g[x>>2]=+g[r+(k+4)>>2];g[y>>2]=+g[r+(k+8)>>2];g[z>>2]=+g[r+(k+12)>>2];break}case 3:{b[v>>1]=b[t>>1]|0;a[w>>0]=a[r+(k+2)>>0]|0;break}case 8:{c[v>>2]=c[t>>2];c[x>>2]=c[r+(k+4)>>2];break}case 1:{a[v>>0]=a[t>>0]|0;break}default:{}}k=k+D|0;if(k>>>0>=E>>>0){H=40;break a}t=r+k|0;if((D|0)==3){if((b[v>>1]|0)==(b[t>>1]|0))t=(a[w>>0]|0)==(a[r+(k+2)>>0]|0);else t=0;t=t&1;H=39}else if((D|0)==1){t=(a[v>>0]|0)==(a[t>>0]|0)&1;H=39}else if((D|0)==4){t=(c[v>>2]|0)==(c[t>>2]|0)&1;H=39}else if((D|0)!=2){if(q){H=61;break}}else{t=(b[v>>1]|0)==(b[t>>1]|0)&1;H=39}if((H|0)==39){H=0;if(t){H=49;break}if(!p){H=61;break}}m=m+1<<24>>24;if(!(m<<24>>24))m=0;else{H=60;break b}}if((H|0)==49){H=0;if(!p){H=50;break}}else if((H|0)==61){H=0;if((D|0)==4)c[s>>2]=c[v>>2];else if((D|0)==1)a[s>>0]=a[v>>0]|0;else if((D|0)==2)b[s>>1]=b[v>>1]|0;else if((D|0)==3){a[s>>0]=a[v>>0]|0;a[s+1>>0]=a[A>>0]|0;a[s+2>>0]=a[w>>0]|0}s=s+D|0}m=m+1<<24>>24;if(m<<24>>24==-128){H=68;break}}if((H|0)==50){H=0;if(m<<24>>24){p=m&255;a[n>>0]=p+255;p=da(p,D)|0;qfa(n+1|0,F|0,p|0)|0;s=F;n=n+(p+1)|0}if((D|0)==3){a[s>>0]=a[v>>0]|0;a[s+1>>0]=a[A>>0]|0;a[s+2>>0]=a[w>>0]|0}else if((D|0)==1)a[s>>0]=a[v>>0]|0;else if((D|0)==2)b[s>>1]=b[v>>1]|0;else if((D|0)==4)c[s>>2]=c[v>>2];m=1;o=1;s=s+D|0;continue}else if((H|0)==60){H=0;a[n>>0]=(m&255)+127|128;qfa(n+1|0,F|0,D|0)|0;m=0;o=0;s=F;n=n+l|0;continue}else if((H|0)==68){H=0;a[n>>0]=p?-1:127;p=da(p?1:128,D)|0;qfa(n+1|0,F|0,p|0)|0;m=0;o=0;s=F;n=n+(p+1)|0;continue}}if((H|0)==40){H=0;if(q){if((D|0)==2)b[s>>1]=b[v>>1]|0;else if((D|0)==1)a[s>>0]=a[v>>0]|0;else if((D|0)==4)c[s>>2]=c[v>>2];else if((D|0)==3){a[s>>0]=a[v>>0]|0;a[s+1>>0]=a[A>>0]|0;a[s+2>>0]=a[w>>0]|0}s=s+D|0}m=m+1<<24>>24;if(!(m<<24>>24))m=0;else{m=m&255;a[n>>0]=m+255|(p?128:0);m=da(p?1:m,D)|0;qfa(n+1|0,F|0,m|0)|0;n=n+(m+1)|0;m=0;o=0;s=F}}Xd[(d[I>>0]|d[I+1>>0]<<8|d[I+2>>0]<<16|d[I+3>>0]<<24)&255](u,1,n-B|0,j)|0;G=G+1|0}while((G|0)!=(C|0))}rea(u);rea(F);rea(v)}m=TH(h)|0;if((((((((m|0)!=0?(VH(m)|0)==1:0)?(K=(YH(m)|0)+-8|0,K>>>0<25):0)?(16843009>>>(K&33554431)&1|0)!=0:0)?(K=YH(m)|0,(K|0)==(YH(h)|0)):0)?(K=VH(m)|0,(K|0)==(VH(h)|0)):0)?(WH(m)|0)>>>0<256:0)?(XH(m)|0)>>>0<256:0){m=f+12|0;m=Ed[(d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24)&511](j)|0;sfa(J|0,0,494)|0;b[J>>1]=495;o=m+495|0;p=J+486|0;b[p>>1]=o;b[p+2>>1]=o>>>16;o=(YH(h)|0)==32;a[J+494>>0]=o?3:0;Xd[(d[I>>0]|d[I+1>>0]<<8|d[I+2>>0]<<16|d[I+3>>0]<<24)&255](J,495,1,j)|0;o=f+8|0;Hd[(d[o>>0]|d[o+1>>0]<<8|d[o+2>>0]<<16|d[o+3>>0]<<24)&255](j,e[p>>1]|e[p+2>>1]<<16,0)|0;p=TH(h)|0;a[L>>0]=WH(p)|0;a[M>>0]=XH(p)|0;Xd[(d[I>>0]|d[I+1>>0]<<8|d[I+2>>0]<<16|d[I+3>>0]<<24)&255](L,1,1,j)|0;Xd[(d[I>>0]|d[I+1>>0]<<8|d[I+2>>0]<<16|d[I+3>>0]<<24)&255](M,1,1,j)|0;o=eI(p)|0;k=a[M>>0]|0;if(k<<24>>24){n=0;do{f=qJ(p,(k&255)+~(n&255)|0)|0;Xd[(d[I>>0]|d[I+1>>0]<<8|d[I+2>>0]<<16|d[I+3>>0]<<24)&255](f,1,o,j)|0;n=n+1<<24>>24;k=a[M>>0]|0}while((n&255)<(k&255))}}else m=0;c[N>>2]=m;c[N+4>>2]=0;m=N+8|0;k=312184;n=m+18|0;do{a[m>>0]=a[k>>0]|0;m=m+1|0;k=k+1|0}while((m|0)<(n|0));Xd[(d[I>>0]|d[I+1>>0]<<8|d[I+2>>0]<<16|d[I+3>>0]<<24)&255](N,26,1,j)|0;N=1;i=O;return N|0}function TW(b,c){b=b|0;c=c|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;h=i;i=i+48|0;j=h+18|0;g=h;e=b+12|0;k=Ed[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&511](c)|0;f=b+8|0;Hd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](c,0,2)|0;l=Ed[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&511](c)|0;Hd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](c,k+-18+l|0,0)|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,18,c)|0;Hd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](c,k,0)|0;if(!(ffa(312184,j,18)|0)){j=1;i=h;return j|0}e=Ed[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&511](c)|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](g,18,1,c)|0;Hd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](c,e,0)|0;e=a[g+1>>0]|0;if((e&255)>=2){j=0;i=h;return j|0}if(e<<24>>24){l=g+3|0;j=g+5|0;if(((d[l>>0]|d[l+1>>0]<<8)&65535)>=((d[j>>0]|d[j+1>>0]<<8)&65535)){j=0;i=h;return j|0}if(((a[g+7>>0]|0)+-1&255)>31){j=0;i=h;return j|0}}j=g+12|0;if(!((d[j>>0]|d[j+1>>0]<<8)<<16>>16)){j=0;i=h;return j|0}j=g+14|0;if(!((d[j>>0]|d[j+1>>0]<<8)<<16>>16)){j=0;i=h;return j|0}switch(d[g+2>>0]|0|0){case 11:case 10:case 9:case 3:case 2:case 1:break;default:{j=0;i=h;return j|0}}j=d[g+16>>0]|0;if((j|0)==32|(j|0)==24|(j|0)==16|(j|0)==8){j=1;i=h;return j|0}j=0;i=h;return j|0}function UW(){return 312168}function VW(a){a=a|0;a=a+-8|0;if(a>>>0>=25){a=0;return a|0}a=16843009>>>(a&33554431)&1;return a|0}function WW(a){a=a|0;return (a|0)==1|0}function XW(){return 1}function YW(a,b,e){a=a|0;b=b|0;e=e|0;var f=0;f=c[a>>2]|0;return da(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](b,e,1,c[a+4>>2]|0)|0,e)|0}function ZW(a,b,e){a=a|0;b=b|0;e=e|0;var f=0;f=(c[a>>2]|0)+4|0;return da(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](b,e,1,c[a+4>>2]|0)|0,e)|0}function _W(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0;g=(c[a>>2]|0)+8|0;e=a+4|0;Hd[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](c[e>>2]|0,b,f)|0;a=(c[a>>2]|0)+12|0;a=Ed[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&511](c[e>>2]|0)|0;H=((a|0)<0)<<31>>31;return a|0}function $W(a){a=a|0;return 0}function aX(a){a=a|0;var b=0,e=0,f=0;e=(c[a>>2]|0)+12|0;f=a+4|0;e=Ed[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&511](c[f>>2]|0)|0;b=(c[a>>2]|0)+8|0;Hd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](c[f>>2]|0,0,2)|0;b=(c[a>>2]|0)+12|0;b=Ed[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&511](c[f>>2]|0)|0;a=(c[a>>2]|0)+8|0;Hd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](c[f>>2]|0,e,0)|0;H=((b|0)<0)<<31>>31;return b|0}function bX(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function cX(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function dX(){return 313176}function eX(){return 313144}function fX(){return 313128}function gX(){return 313104}function hX(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=qea(12)|0;if(!e){d=0;i=f;return d|0}c[e>>2]=a;c[e+4>>2]=b;if(!d){b=uw(356424,313048,e,198,199,147,255,256,200,61)|0;c[e+8>>2]=b}else{b=uw(356424,313040,e,198,199,147,255,256,200,61)|0;c[e+8>>2]=b}if(b){d=e;i=f;return d|0}rea(e);PI(c[78074]|0,313056,f);d=0;i=f;return d|0}function iX(a,b,d){a=a|0;b=b|0;d=d|0;if(!d)return;_u(c[d+8>>2]|0);rea(d);return}function jX(a,b,d){a=a|0;b=b|0;d=d|0;if(!d){a=0;return a|0}b=c[d+8>>2]|0;d=0;do d=d+1|0;while((Qv(b)|0)!=0);return d|0} -function VQ(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0;ub=i;i=i+288|0;Wa=ub+256|0;_a=ub;rb=f+404|0;sb=f+428|0;J=f+24|0;U=f+203|0;da=f+219|0;oa=f+235|0;za=f+204|0;Ka=f+220|0;Ua=f+236|0;Va=f+205|0;z=f+221|0;A=f+237|0;B=f+206|0;C=f+222|0;D=f+238|0;E=f+207|0;F=f+223|0;G=f+239|0;H=f+208|0;I=f+224|0;K=f+240|0;L=f+209|0;M=f+225|0;N=f+241|0;O=f+210|0;P=f+226|0;Q=f+242|0;R=f+211|0;S=f+227|0;T=f+243|0;V=f+212|0;W=f+228|0;X=f+244|0;Y=f+213|0;Z=f+229|0;_=f+245|0;$=f+214|0;aa=f+230|0;ba=f+246|0;ca=f+215|0;ea=f+231|0;fa=f+247|0;ga=f+216|0;ha=f+232|0;ia=f+248|0;ja=f+217|0;ka=f+233|0;la=f+249|0;ma=f+218|0;na=f+234|0;pa=f+250|0;qa=f+252|0;ra=f+40|0;sa=f+268|0;ta=f+272|0;ua=f+256|0;va=f+257|0;wa=f+258|0;xa=f+259|0;ya=f+260|0;Aa=f+262|0;Ba=f+264|0;Ca=f+265|0;Da=Wa+1|0;Ea=Wa+2|0;Fa=Wa+3|0;Ga=Wa+4|0;Ha=Wa+5|0;Ia=Wa+6|0;Ja=Wa+7|0;La=Wa+8|0;Ma=Wa+9|0;Na=Wa+10|0;Oa=Wa+11|0;Pa=Wa+12|0;Qa=Wa+13|0;Ra=Wa+14|0;Sa=Wa+15|0;Ta=Wa+16|0;jb=f+36|0;kb=f+196|0;g=c[rb>>2]|0;a:while(1){do if(!g){if(a[(c[sb>>2]|0)+12>>0]|0){if(!((TQ(f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[rb>>2]|0;break}p=c[J>>2]|0;m=p+4|0;g=c[m>>2]|0;if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0}h=c[p>>2]|0;g=g+-1|0;o=h+1|0;h=a[h>>0]|0;j=h&255;if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}k=c[m>>2]|0;o=c[p>>2]|0}else k=g;r=a[o>>0]|0;g=r&255;if(h<<24>>24!=-1|r<<24>>24!=-40){r=c[f>>2]|0;c[r+20>>2]=55;c[r+24>>2]=j;c[r+28>>2]=g;Bd[c[r>>2]&511](f)}c[rb>>2]=g;c[p>>2]=o+1;c[m>>2]=k+-1}while(0);do switch(g|0){case 193:{if(!((R$(f,0,0,0)|0)<<24>>24)){bb=0;fb=305;break a}break}case 218:{fb=25;break a}case 202:{if(!((R$(f,0,1,1)|0)<<24>>24)){bb=0;fb=305;break a}break}case 216:{g=c[f>>2]|0;c[g+20>>2]=104;Cd[c[g+4>>2]&255](f,1);g=c[sb>>2]|0;if(a[g+12>>0]|0){g=c[f>>2]|0;c[g+20>>2]=64;Bd[c[g>>2]&511](f);g=c[sb>>2]|0}a[U>>0]=0;a[da>>0]=1;a[oa>>0]=5;a[za>>0]=0;a[Ka>>0]=1;a[Ua>>0]=5;a[Va>>0]=0;a[z>>0]=1;a[A>>0]=5;a[B>>0]=0;a[C>>0]=1;a[D>>0]=5;a[E>>0]=0;a[F>>0]=1;a[G>>0]=5;a[H>>0]=0;a[I>>0]=1;a[K>>0]=5;a[L>>0]=0;a[M>>0]=1;a[N>>0]=5;a[O>>0]=0;a[P>>0]=1;a[Q>>0]=5;a[R>>0]=0;a[S>>0]=1;a[T>>0]=5;a[V>>0]=0;a[W>>0]=1;a[X>>0]=5;a[Y>>0]=0;a[Z>>0]=1;a[_>>0]=5;a[$>>0]=0;a[aa>>0]=1;a[ba>>0]=5;a[ca>>0]=0;a[ea>>0]=1;a[fa>>0]=5;a[ga>>0]=0;a[ha>>0]=1;a[ia>>0]=5;a[ja>>0]=0;a[ka>>0]=1;a[la>>0]=5;a[ma>>0]=0;a[na>>0]=1;a[pa>>0]=5;c[qa>>2]=0;c[ra>>2]=0;c[sa>>2]=0;a[ta>>0]=0;a[ua>>0]=0;a[va>>0]=1;a[wa>>0]=1;a[xa>>0]=0;b[ya>>1]=1;b[Aa>>1]=1;a[Ba>>0]=0;a[Ca>>0]=0;a[g+12>>0]=1;break}case 192:{if(!((R$(f,1,0,0)|0)<<24>>24)){bb=0;fb=305;break a}break}case 207:case 206:case 205:case 203:case 200:case 199:case 198:case 197:case 195:{r=c[f>>2]|0;c[r+20>>2]=63;c[r+24>>2]=g;Bd[c[r>>2]&511](f);break}case 194:{if(!((R$(f,0,1,0)|0)<<24>>24)){bb=0;fb=305;break a}break}case 201:{if(!((R$(f,0,0,1)|0)<<24>>24)){bb=0;fb=305;break a}break}case 204:{n=c[J>>2]|0;q=n+4|0;g=c[q>>2]|0;if(!g){if(!((Ed[c[n+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[q>>2]|0}k=c[n>>2]|0;g=g+-1|0;o=k+1|0;k=d[k>>0]<<8;if(!g){if(!((Ed[c[n+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[q>>2]|0;o=c[n>>2]|0}h=g+-1|0;g=o+1|0;k=(d[o>>0]|k)+-2|0;if((k|0)>0){l=n+12|0;o=h;do{if(!o){if(!((Ed[c[l>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}o=c[q>>2]|0;g=c[n>>2]|0}o=o+-1|0;h=g+1|0;p=a[g>>0]|0;m=p&255;if(!o){if(!((Ed[c[l>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}o=c[q>>2]|0;h=c[n>>2]|0}o=o+-1|0;g=h+1|0;h=a[h>>0]|0;j=h&255;k=k+-2|0;r=c[f>>2]|0;c[r+20>>2]=81;c[r+24>>2]=m;c[r+28>>2]=j;Cd[c[r+4>>2]&255](f,1);if((p&255)<=31)if((p&255)<=15){p=j&15;a[f+m+203>>0]=p;r=(h&255)>>>4;a[f+m+219>>0]=r;if((p&255)>(r&255)){r=c[f>>2]|0;c[r+20>>2]=30;c[r+24>>2]=j;Bd[c[r>>2]&511](f)}}else fb=90;else{fb=c[f>>2]|0;c[fb+20>>2]=29;c[fb+24>>2]=m;Bd[c[fb>>2]&511](f);fb=90}if((fb|0)==90){fb=0;a[f+(m+-16)+235>>0]=h}}while((k|0)>0)}else o=h;if(k){r=c[f>>2]|0;c[r+20>>2]=12;Bd[c[r>>2]&511](f)}c[n>>2]=g;c[q>>2]=o;break}case 196:{n=c[J>>2]|0;q=n+4|0;g=c[q>>2]|0;if(!g){if(!((Ed[c[n+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[q>>2]|0}h=c[n>>2]|0;g=g+-1|0;o=h+1|0;h=d[h>>0]<<8;if(!g){if(!((Ed[c[n+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[q>>2]|0;o=c[n>>2]|0}k=g+-1|0;g=o+1|0;o=(d[o>>0]|h)+-2|0;if((o|0)>16){l=n+12|0;do{if(!k){if(!((Ed[c[l>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}k=c[q>>2]|0;g=c[n>>2]|0}h=d[g>>0]|0;j=c[f>>2]|0;c[j+20>>2]=82;c[j+24>>2]=h;Cd[c[j+4>>2]&255](f,1);a[Wa>>0]=0;k=k+-1|0;j=0;p=1;g=g+1|0;do{if(!k){if(!((Ed[c[l>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}k=c[q>>2]|0;g=c[n>>2]|0}r=a[g>>0]|0;a[Wa+p>>0]=r;j=(r&255)+j|0;p=p+1|0;k=k+-1|0;g=g+1|0}while((p|0)<17);m=o+-17|0;r=c[f>>2]|0;c[r+24>>2]=d[Da>>0];c[r+28>>2]=d[Ea>>0];c[r+32>>2]=d[Fa>>0];c[r+36>>2]=d[Ga>>0];c[r+40>>2]=d[Ha>>0];c[r+44>>2]=d[Ia>>0];c[r+48>>2]=d[Ja>>0];c[r+52>>2]=d[La>>0];c[r+20>>2]=88;Cd[c[r+4>>2]&255](f,2);r=c[f>>2]|0;c[r+24>>2]=d[Ma>>0];c[r+28>>2]=d[Na>>0];c[r+32>>2]=d[Oa>>0];c[r+36>>2]=d[Pa>>0];c[r+40>>2]=d[Qa>>0];c[r+44>>2]=d[Ra>>0];c[r+48>>2]=d[Sa>>0];c[r+52>>2]=d[Ta>>0];c[r+20>>2]=88;Cd[c[r+4>>2]&255](f,2);if((j|0)>256|(m|0)<(j|0)){r=c[f>>2]|0;c[r+20>>2]=9;Bd[c[r>>2]&511](f)}sfa(_a|0,0,256)|0;if((j|0)>0){p=0;do{if(!k){if(!((Ed[c[l>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}k=c[q>>2]|0;o=c[n>>2]|0}else o=g;k=k+-1|0;g=o+1|0;a[_a+p>>0]=a[o>>0]|0;p=p+1|0}while((p|0)<(j|0))}o=m-j|0;if(!(h&16))m=f+(h<<2)+160|0;else{h=h+-16|0;m=f+(h<<2)+176|0}if(h>>>0>3){r=c[f>>2]|0;c[r+20>>2]=31;c[r+24>>2]=h;Bd[c[r>>2]&511](f)}h=c[m>>2]|0;if(!h){h=gF(f)|0;c[m>>2]=h}h=h+0|0;j=Wa+0|0;p=h+17|0;do{a[h>>0]=a[j>>0]|0;h=h+1|0;j=j+1|0}while((h|0)<(p|0));qfa((c[m>>2]|0)+17|0,_a|0,256)|0}while((o|0)>16)}if(o){r=c[f>>2]|0;c[r+20>>2]=12;Bd[c[r>>2]&511](f)}c[n>>2]=g;c[q>>2]=k;break}case 217:{fb=72;break a}case 219:{q=c[J>>2]|0;r=q+4|0;g=c[r>>2]|0;if(!g){if(!((Ed[c[q+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[r>>2]|0}h=c[q>>2]|0;g=g+-1|0;o=h+1|0;h=d[h>>0]<<8;if(!g){if(!((Ed[c[q+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[r>>2]|0;o=c[q>>2]|0}k=g+-1|0;g=o+1|0;o=(d[o>>0]|h)+-2|0;if((o|0)>0){n=q+12|0;while(1){l=o+-1|0;if(!k){if(!((Ed[c[n>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}p=c[r>>2]|0;g=c[q>>2]|0}else p=k;k=d[g>>0]|0;j=k>>>4;k=k&15;fb=c[f>>2]|0;c[fb+20>>2]=83;c[fb+24>>2]=k;c[fb+28>>2]=j;Cd[c[fb+4>>2]&255](f,1);if(k>>>0>3){fb=c[f>>2]|0;c[fb+20>>2]=32;c[fb+24>>2]=k;Bd[c[fb>>2]&511](f)}k=f+(k<<2)+144|0;h=c[k>>2]|0;if(!h){h=fF(f)|0;c[k>>2]=h}m=(j|0)!=0;if(m)if((o|0)<129){o=0;do{b[h+(o<<1)>>1]=1;o=o+1|0}while((o|0)!=64);v=l>>1;fb=152}else fb=159;else if((o|0)<65){o=0;do{b[h+(o<<1)>>1]=1;o=o+1|0}while((o|0)!=64);v=l;fb=152}else fb=159;b:do if((fb|0)==152){fb=0;switch(v|0){case 36:{o=v;k=277248;break}case 49:{o=v;k=276984;break}case 4:{o=4;k=277856;break}case 25:{o=v;k=277456;break}case 16:{o=v;k=277624;break}case 9:{o=v;k=277752;break}default:{o=p+-1|0;g=g+1|0;if((v|0)>0){Za=o;y=v;w=276664;x=g;fb=161;break b}else{t=o;u=v;s=g;break b}}}Za=p+-1|0;y=o;w=k;x=g+1|0;fb=161}else if((fb|0)==159){Za=p+-1|0;y=64;w=276664;x=g+1|0;fb=161}while(0);if((fb|0)==161){fb=0;o=Za;p=0;k=x;while(1){g=(o|0)==0;if(m){if(g){if(!((Ed[c[n>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[r>>2]|0;o=c[q>>2]|0}else{g=o;o=k}g=g+-1|0;k=o+1|0;o=d[o>>0]<<8;if(!g){if(!((Ed[c[n>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[r>>2]|0;k=c[q>>2]|0}j=k;o=d[k>>0]|o}else{if(g){if(!((Ed[c[n>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[r>>2]|0;o=c[q>>2]|0}else{g=o;o=k}j=o;o=d[o>>0]|0}b[h+(c[w+(p<<2)>>2]<<1)>>1]=o;p=p+1|0;g=g+-1|0;k=j+1|0;if((p|0)>=(y|0)){t=g;u=y;s=k;break}else o=g}}g=c[f>>2]|0;c:do if((c[g+104>>2]|0)>1){o=0;while(1){c[g+24>>2]=e[h+(o<<1)>>1];c[g+28>>2]=e[h+((o|1)<<1)>>1];c[g+32>>2]=e[h+((o|2)<<1)>>1];c[g+36>>2]=e[h+((o|3)<<1)>>1];c[g+40>>2]=e[h+((o|4)<<1)>>1];c[g+44>>2]=e[h+((o|5)<<1)>>1];c[g+48>>2]=e[h+((o|6)<<1)>>1];c[g+52>>2]=e[h+((o|7)<<1)>>1];c[g+20>>2]=95;Cd[c[g+4>>2]&255](f,2);o=o+8|0;if((o|0)>=64)break c;g=c[f>>2]|0}}while(0);g=l-u+(m?0-u|0:0)|0;if((g|0)>0){k=t;o=g;g=s}else{k=t;o=g;g=s;break}}}if(o){n=c[f>>2]|0;c[n+20>>2]=12;Bd[c[n>>2]&511](f)}c[q>>2]=g;c[r>>2]=k;break}case 248:{p=c[J>>2]|0;o=c[p>>2]|0;m=p+4|0;g=c[m>>2]|0;if(!(a[(c[sb>>2]|0)+13>>0]|0)){r=c[f>>2]|0;c[r+20>>2]=60;zfa(r+24|0,270728,80)|0;Bd[c[c[f>>2]>>2]&511](f)}do if((c[jb>>2]|0)>=3){if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}g=g+-1|0;k=o+1|0;h=d[o>>0]<<8;if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}else o=k;g=g+-1|0;k=o+1|0;if((d[o>>0]|h|0)!=24){r=c[f>>2]|0;c[r+20>>2]=12;Bd[c[r>>2]&511](f)}if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;k=c[p>>2]|0}g=g+-1|0;o=k+1|0;if((a[k>>0]|0)!=13){r=c[f>>2]|0;c[r+20>>2]=70;c[r+24>>2]=c[rb>>2];Bd[c[r>>2]&511](f)}if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}g=g+-1|0;k=o+1|0;h=d[o>>0]<<8;if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}else o=k;g=g+-1|0;k=o+1|0;if((d[o>>0]|h|0)==255){if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;k=c[p>>2]|0}g=g+-1|0;o=k+1|0;if((a[k>>0]|0)==3){if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}k=g+-1|0;h=o+1|0;g=c[kb>>2]|0;if((d[o>>0]|0)==(c[g+88>>2]|0)){if(!k){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[kb>>2]|0;o=c[m>>2]|0;k=c[p>>2]|0}else{o=k;k=h}o=o+-1|0;h=k+1|0;if((d[k>>0]|0)==(c[g>>2]|0)){if(!o){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}j=c[kb>>2]|0;g=c[m>>2]|0;o=c[p>>2]|0}else{j=g;g=o;o=h}g=g+-1|0;k=o+1|0;if((d[o>>0]|0)!=(c[j+176>>2]|0)){Xa=g;$a=k;fb=290;break}if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;k=c[p>>2]|0}g=g+-1|0;o=k+1|0;if((a[k>>0]|0)!=-128){Xa=g;$a=o;fb=290;break}if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}g=g+-1|0;k=o+1|0;h=d[o>>0]<<8;if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;k=c[p>>2]|0}g=g+-1|0;o=k+1|0;if(d[k>>0]|h){Xa=g;$a=o;fb=290;break}if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}g=g+-1|0;k=o+1|0;h=d[o>>0]<<8;if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}else o=k;g=g+-1|0;k=o+1|0;if(d[o>>0]|h){Xa=g;$a=k;fb=290;break}if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;k=c[p>>2]|0}g=g+-1|0;o=k+1|0;if(a[k>>0]|0){Xa=g;$a=o;fb=290;break}if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}g=g+-1|0;k=o+1|0;h=d[o>>0]<<8;if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;k=c[p>>2]|0}g=g+-1|0;o=k+1|0;if((d[k>>0]|h|0)!=1){Xa=g;$a=o;fb=290;break}if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}g=g+-1|0;k=o+1|0;h=d[o>>0]<<8;if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}else o=k;g=g+-1|0;k=o+1|0;if(d[o>>0]|h){Xa=g;$a=k;fb=290;break}if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;k=c[p>>2]|0}g=g+-1|0;o=k+1|0;if(a[k>>0]|0){Xa=g;$a=o;fb=290;break}if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}g=g+-1|0;k=o+1|0;h=d[o>>0]<<8;if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;k=c[p>>2]|0}g=g+-1|0;o=k+1|0;if((d[k>>0]|h|0)!=1){Xa=g;$a=o;fb=290;break}if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}g=g+-1|0;k=o+1|0;h=d[o>>0]<<8;if(!g){if(!((Ed[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;k=c[p>>2]|0}g=g+-1|0;o=k+1|0;if(!(d[k>>0]|h)){Ya=g;ab=o}else{Xa=g;$a=o;fb=290}}else{Xa=o;$a=h;fb=290}}else{Xa=k;$a=h;fb=290}}else{Xa=g;$a=o;fb=290}}else{Xa=g;$a=k;fb=290}}else{Xa=g;$a=o;fb=290}while(0);if((fb|0)==290){fb=0;Ya=c[f>>2]|0;c[Ya+20>>2]=28;Bd[c[Ya>>2]&511](f);Ya=Xa;ab=$a}c[sa>>2]=1;c[p>>2]=ab;c[m>>2]=Ya;break}case 221:{j=c[J>>2]|0;p=j+4|0;g=c[p>>2]|0;if(!g){if(!((Ed[c[j+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[p>>2]|0}h=c[j>>2]|0;g=g+-1|0;o=h+1|0;h=d[h>>0]<<8;if(!g){if(!((Ed[c[j+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[p>>2]|0;o=c[j>>2]|0}g=g+-1|0;k=o+1|0;if((d[o>>0]|h|0)!=4){r=c[f>>2]|0;c[r+20>>2]=12;Bd[c[r>>2]&511](f)}if(!g){if(!((Ed[c[j+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[p>>2]|0;k=c[j>>2]|0}o=g+-1|0;g=k+1|0;k=d[k>>0]<<8;if(!o){if(!((Ed[c[j+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}o=c[p>>2]|0;g=c[j>>2]|0}r=d[g>>0]|k;q=c[f>>2]|0;c[q+20>>2]=84;c[q+24>>2]=r;Cd[c[q+4>>2]&255](f,1);c[qa>>2]=r;c[j>>2]=g+1;c[p>>2]=o+-1;break}case 239:case 238:case 237:case 236:case 235:case 234:case 233:case 232:case 231:case 230:case 229:case 228:case 227:case 226:case 225:case 224:{if(!((Ed[c[(c[sb>>2]|0)+28+(g+-224<<2)>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}break}case 254:{if(!((Ed[c[(c[sb>>2]|0)+24>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}break}case 1:case 215:case 214:case 213:case 212:case 211:case 210:case 209:case 208:{r=c[f>>2]|0;c[r+20>>2]=94;c[r+24>>2]=g;Cd[c[r+4>>2]&255](f,1);break}case 220:{j=c[J>>2]|0;p=j+4|0;g=c[p>>2]|0;if(!g){if(!((Ed[c[j+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[p>>2]|0}h=c[j>>2]|0;g=g+-1|0;o=h+1|0;h=d[h>>0]<<8;if(!g){if(!((Ed[c[j+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[p>>2]|0;k=c[j>>2]|0}else k=o;o=(d[k>>0]|h)+-2|0;r=c[f>>2]|0;c[r+20>>2]=93;c[r+24>>2]=c[rb>>2];c[r+28>>2]=o;Cd[c[r+4>>2]&255](f,1);c[j>>2]=k+1;c[p>>2]=g+-1;if((o|0)>0)Cd[c[(c[J>>2]|0)+16>>2]&255](f,o);break}default:{r=c[f>>2]|0;c[r+20>>2]=70;c[r+24>>2]=g;Bd[c[r>>2]&511](f)}}while(0);c[rb>>2]=0;g=0}if((fb|0)==25){r=c[J>>2]|0;k=c[r>>2]|0;s=r+4|0;g=c[s>>2]|0;if(!(a[(c[sb>>2]|0)+13>>0]|0)){ab=c[f>>2]|0;c[ab+20>>2]=60;zfa(ab+24|0,270736,80)|0;Bd[c[c[f>>2]>>2]&511](f)}do if(!g)if(!((Ed[c[r+12>>2]&511](f)|0)<<24>>24)){tb=0;i=ub;return tb|0}else{g=c[s>>2]|0;k=c[r>>2]|0;break}while(0);g=g+-1|0;h=k+1|0;j=d[k>>0]<<8;do if(!g)if(!((Ed[c[r+12>>2]&511](f)|0)<<24>>24)){tb=0;i=ub;return tb|0}else{g=c[s>>2]|0;h=c[r>>2]|0;break}while(0);g=g+-1|0;k=h+1|0;h=d[h>>0]|j;do if(!g)if(!((Ed[c[r+12>>2]&511](f)|0)<<24>>24)){tb=0;i=ub;return tb|0}else{g=c[s>>2]|0;j=c[r>>2]|0;break}else j=k;while(0);l=a[j>>0]|0;q=l&255;ab=c[f>>2]|0;c[ab+20>>2]=105;c[ab+24>>2]=q;Cd[c[ab+4>>2]&255](f,1);do if(!((h|0)!=((q<<1)+6|0)|(l&255)>4)){if(l<<24>>24){c[f+304>>2]=q;db=g+-1|0;cb=(db|0)==0;eb=j+1|0;fb=42;break}if(a[f+201>>0]|0){c[f+304>>2]=q;k=g+-1|0;if(!k){hb=1;fb=61}else{tb=1;mb=k;qb=j+1|0}}else fb=41}else fb=41;while(0);if((fb|0)==41){h=c[f>>2]|0;c[h+20>>2]=12;Bd[c[h>>2]&511](f);c[f+304>>2]=q;h=g+-1|0;k=j+1|0;g=(h|0)==0;if(!(l<<24>>24)){gb=g;ib=1;lb=h;pb=k;fb=60}else{cb=g;db=h;eb=k;fb=42}}d:do if((fb|0)==42){o=r+12|0;p=f+308|0;g=cb;h=db;n=0;k=eb;while(1){if(g){if(!((Ed[c[o>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break}g=c[s>>2]|0;h=c[r>>2]|0}else{g=h;h=k}m=g+-1|0;k=h+1|0;g=d[h>>0]|0;e:do if((n|0)>0){h=0;while(1){if((g|0)==(c[c[f+(h<<2)+308>>2]>>2]|0))break;h=h+1|0;if((h|0)>=(n|0))break e}g=c[c[p>>2]>>2]|0;if((n|0)>1){h=1;do{eb=c[c[f+(h<<2)+308>>2]>>2]|0;g=(eb|0)>(g|0)?eb:g;h=h+1|0}while((h|0)!=(n|0))}g=g+1|0}while(0);h=c[kb>>2]|0;j=c[jb>>2]|0;f:do if((j|0)>0){l=0;while(1){if((g|0)==(c[h>>2]|0)){ob=h;break f}l=l+1|0;h=h+88|0;if((l|0)>=(j|0)){nb=h;fb=55;break}}}else{nb=h;fb=55}while(0);if((fb|0)==55){fb=0;ob=c[f>>2]|0;c[ob+20>>2]=4;c[ob+24>>2]=g;Bd[c[ob>>2]&511](f);ob=nb}c[f+(n<<2)+308>>2]=ob;if(!m){if(!((Ed[c[o>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break}g=c[s>>2]|0;k=c[r>>2]|0}else g=m;h=d[k>>0]|0;db=ob+20|0;c[db>>2]=h>>>4;eb=ob+24|0;c[eb>>2]=h&15;h=c[f>>2]|0;c[h+24>>2]=c[ob>>2];c[h+28>>2]=c[db>>2];c[h+32>>2]=c[eb>>2];c[h+20>>2]=106;Cd[c[h+4>>2]&255](f,1);n=n+1|0;h=g+-1|0;k=k+1|0;g=(h|0)==0;if((n|0)>=(q|0)){gb=g;ib=0;lb=h;pb=k;fb=60;break d}}if((fb|0)==305){i=ub;return bb|0}}while(0);if((fb|0)==60)if(gb){hb=ib;fb=61}else{tb=ib;mb=lb;qb=pb}do if((fb|0)==61)if(!((Ed[c[r+12>>2]&511](f)|0)<<24>>24)){tb=0;i=ub;return tb|0}else{tb=hb;mb=c[s>>2]|0;qb=c[r>>2]|0;break}while(0);g=mb+-1|0;h=qb+1|0;l=f+376|0;c[l>>2]=d[qb>>0];do if(!g)if(!((Ed[c[r+12>>2]&511](f)|0)<<24>>24)){tb=0;i=ub;return tb|0}else{g=c[s>>2]|0;h=c[r>>2]|0;break}while(0);j=g+-1|0;g=h+1|0;k=f+380|0;c[k>>2]=d[h>>0];do if(!j)if(!((Ed[c[r+12>>2]&511](f)|0)<<24>>24)){tb=0;i=ub;return tb|0}else{j=c[s>>2]|0;g=c[r>>2]|0;break}while(0);qb=d[g>>0]|0;ob=f+384|0;c[ob>>2]=qb>>>4;pb=f+388|0;c[pb>>2]=qb&15;qb=c[f>>2]|0;c[qb+24>>2]=c[l>>2];c[qb+28>>2]=c[k>>2];c[qb+32>>2]=c[ob>>2];c[qb+36>>2]=c[pb>>2];c[qb+20>>2]=107;Cd[c[qb+4>>2]&255](f,1);c[(c[sb>>2]|0)+16>>2]=0;if(!tb){tb=f+124|0;c[tb>>2]=(c[tb>>2]|0)+1}c[r>>2]=g+1;c[s>>2]=j+-1;c[rb>>2]=0;tb=1;i=ub;return tb|0}else if((fb|0)==72){tb=c[f>>2]|0;c[tb+20>>2]=87;Cd[c[tb+4>>2]&255](f,1);c[rb>>2]=0;tb=2;i=ub;return tb|0}else if((fb|0)==305){i=ub;return bb|0}return 0}function WQ(a){a=a|0;var b=0,d=0,e=0,f=0;f=a+404|0;b=c[f>>2]|0;do if(!b)if(!((TQ(a)|0)<<24>>24)){a=0;return a|0}else{b=c[f>>2]|0;break}while(0);d=a+428|0;e=c[(c[d>>2]|0)+16>>2]|0;if((b|0)!=(e+208|0)){if(!((Pd[c[(c[a+24>>2]|0)+20>>2]&511](a,e)|0)<<24>>24)){a=0;return a|0}}else{b=c[a>>2]|0;c[b+20>>2]=100;c[b+24>>2]=e;Cd[c[b+4>>2]&255](a,3);c[f>>2]=0}a=(c[d>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+1&7;a=1;return a|0}function XQ(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0,j=0;h=a+24|0;i=c[h>>2]|0;j=i+4|0;b=c[j>>2]|0;do if(!b)if(!((Ed[c[i+12>>2]&511](a)|0)<<24>>24)){j=0;return j|0}else{b=c[j>>2]|0;break}while(0);g=c[i>>2]|0;b=b+-1|0;e=g+1|0;g=(d[g>>0]|0)<<8;do if(!b)if(!((Ed[c[i+12>>2]&511](a)|0)<<24>>24)){j=0;return j|0}else{b=c[j>>2]|0;f=c[i>>2]|0;break}else f=e;while(0);e=(d[f>>0]|0|g)+-2|0;g=c[a>>2]|0;c[g+20>>2]=93;c[g+24>>2]=c[a+404>>2];c[g+28>>2]=e;Cd[c[g+4>>2]&255](a,1);c[i>>2]=f+1;c[j>>2]=b+-1;if((e|0)<=0){j=1;return j|0}Cd[c[(c[h>>2]|0)+16>>2]&255](a,e);j=1;return j|0}function YQ(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;p=q;m=b+24|0;n=c[m>>2]|0;o=n+4|0;e=c[o>>2]|0;do if(!e)if(!((Ed[c[n+12>>2]&511](b)|0)<<24>>24)){b=0;i=q;return b|0}else{e=c[o>>2]|0;break}while(0);g=c[n>>2]|0;e=e+-1|0;f=g+1|0;g=d[g>>0]<<8;do if(!e)if(!((Ed[c[n+12>>2]&511](b)|0)<<24>>24)){b=0;i=q;return b|0}else{e=c[o>>2]|0;f=c[n>>2]|0;break}while(0);l=(d[f>>0]|g)+-2|0;if((l|0)<=13)if((l|0)>0){g=l;k=10}else{j=e+-1|0;h=f+1|0;g=0}else{g=14;k=10}a:do if((k|0)==10){j=n+12|0;e=e+-1|0;h=0;f=f+1|0;while(1){if(!e){if(!((Ed[c[j>>2]&511](b)|0)<<24>>24)){e=0;break}e=c[o>>2]|0;f=c[n>>2]|0}a[p+h>>0]=a[f>>0]|0;h=h+1|0;e=e+-1|0;f=f+1|0;if(h>>>0>=g>>>0){j=e;h=f;break a}}i=q;return e|0}while(0);e=l-g|0;f=c[b+404>>2]|0;do if((f|0)==224)S$(b,p,g,e);else if((f|0)==238){if((((g>>>0>11&(a[p>>0]|0)==65?(a[p+1>>0]|0)==100:0)?(a[p+2>>0]|0)==111:0)?(a[p+3>>0]|0)==98:0)?(a[p+4>>0]|0)==101:0){f=d[p+7>>0]<<8|d[p+8>>0];g=d[p+9>>0]<<8|d[p+10>>0];l=a[p+11>>0]|0;k=c[b>>2]|0;c[k+24>>2]=d[p+5>>0]<<8|d[p+6>>0];c[k+28>>2]=f;c[k+32>>2]=g;c[k+36>>2]=l&255;c[k+20>>2]=78;Cd[c[k+4>>2]&255](b,1);a[b+264>>0]=1;a[b+265>>0]=l;break}p=c[b>>2]|0;c[p+20>>2]=80;c[p+24>>2]=l;Cd[c[p+4>>2]&255](b,1)}else{p=c[b>>2]|0;c[p+20>>2]=70;c[p+24>>2]=f;Bd[c[p>>2]&511](b)}while(0);c[n>>2]=h;c[o>>2]=j;if((e|0)<=0){b=1;i=q;return b|0}Cd[c[(c[m>>2]|0)+16>>2]&255](b,e);b=1;i=q;return b|0}function ZQ(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=c[b+428>>2]|0;q=j+160|0;g=c[q>>2]|0;r=b+24|0;s=c[r>>2]|0;f=c[s>>2]|0;t=s+4|0;e=c[t>>2]|0;if(!g){do if(!e)if(!((Ed[c[s+12>>2]&511](b)|0)<<24>>24)){b=0;return b|0}else{e=c[t>>2]|0;f=c[s>>2]|0;break}while(0);e=e+-1|0;g=f+1|0;f=d[f>>0]<<8;do if(!e)if(!((Ed[c[s+12>>2]&511](b)|0)<<24>>24)){b=0;return b|0}else{e=c[t>>2]|0;g=c[s>>2]|0;break}while(0);e=e+-1|0;l=g+1|0;i=(d[g>>0]|f)+-2|0;if((i|0)>-1){g=b+404|0;f=c[g>>2]|0;if((f|0)==254)f=j+92|0;else f=j+96+(f+-224<<2)|0;o=c[f>>2]|0;o=i>>>0>>0?i:o;p=Hd[c[(c[b+4>>2]|0)+4>>2]&255](b,1,o+20|0)|0;c[p>>2]=0;a[p+4>>0]=c[g>>2];c[p+8>>2]=i;c[p+12>>2]=o;h=p+20|0;c[p+16>>2]=h;c[q>>2]=p;c[j+164>>2]=0;k=0;f=l;m=14}else{h=0;j=0;g=l}}else{h=c[j+164>>2]|0;k=h;p=g;h=(c[g+16>>2]|0)+h|0;o=c[g+12>>2]|0;i=0;m=14}if((m|0)==14){a:do if(k>>>0>>0){m=j+164|0;n=s+12|0;j=h;while(1){c[s>>2]=f;c[t>>2]=e;c[m>>2]=k;if(!e){if(!((Ed[c[n>>2]&511](b)|0)<<24>>24)){e=0;break}e=c[t>>2]|0;g=c[s>>2]|0}else g=f;if(k>>>0>>0&(e|0)!=0){f=0-e|0;l=k-o|0;l=l>>>0>>0?f:l;k=k-l|0;f=0-l|0;h=j+f|0;f=g+f|0;while(1){a[j>>0]=a[g>>0]|0;g=g+1|0;if((g|0)==(f|0))break;else j=j+1|0}e=e+l|0}else{h=j;f=g}if(k>>>0>>0)j=h;else{j=e;g=f;break a}}return e|0}else{j=e;g=f}while(0);if(!p){e=j;j=o}else{f=b+276|0;e=c[f>>2]|0;if(!e)c[f>>2]=p;else{while(1){f=c[e>>2]|0;if(!f)break;else e=f}c[e>>2]=p}e=j;h=c[p+16>>2]|0;j=o;i=(c[p+8>>2]|0)-o|0}}c[q>>2]=0;f=c[b+404>>2]|0;do if((f|0)==224)S$(b,h,j,i);else if((f|0)==238){if(((((j>>>0>11?(a[h>>0]|0)==65:0)?(a[h+1>>0]|0)==100:0)?(a[h+2>>0]|0)==111:0)?(a[h+3>>0]|0)==98:0)?(a[h+4>>0]|0)==101:0){n=d[h+7>>0]<<8|d[h+8>>0];o=d[h+9>>0]<<8|d[h+10>>0];q=a[h+11>>0]|0;p=c[b>>2]|0;c[p+24>>2]=d[h+5>>0]<<8|d[h+6>>0];c[p+28>>2]=n;c[p+32>>2]=o;c[p+36>>2]=q&255;c[p+20>>2]=78;Cd[c[p+4>>2]&255](b,1);a[b+264>>0]=1;a[b+265>>0]=q;break}q=c[b>>2]|0;c[q+20>>2]=80;c[q+24>>2]=i+j;Cd[c[q+4>>2]&255](b,1)}else{q=c[b>>2]|0;c[q+20>>2]=93;c[q+24>>2]=f;c[q+28>>2]=i+j;Cd[c[q+4>>2]&255](b,1)}while(0);c[s>>2]=g;c[t>>2]=e;if((i|0)<=0){b=1;return b|0}Cd[c[(c[r>>2]|0)+16>>2]&255](b,i);b=1;return b|0}function _Q(b){b=b|0;var d=0,e=0;if(a[b+72>>0]|0)return 0;if(a[b+272>>0]|0)return 0;if((c[b+40>>2]|0)!=3)return 0;if((c[b+36>>2]|0)!=3)return 0;if((c[b+44>>2]|0)!=2)return 0;if((c[b+100>>2]|0)!=3)return 0;if(c[b+268>>2]|0)return 0;e=c[b+196>>2]|0;if((c[e+8>>2]|0)!=2)return 0;if((c[e+96>>2]|0)!=1)return 0;if((c[e+184>>2]|0)!=1)return 0;if((c[e+12>>2]|0)>2)return 0;if((c[e+100>>2]|0)!=1)return 0;if((c[e+188>>2]|0)!=1)return 0;d=c[e+36>>2]|0;if((d|0)!=(c[b+288>>2]|0))return 0;if((c[e+124>>2]|0)!=(d|0))return 0;if((c[e+212>>2]|0)!=(d|0))return 0;d=c[e+40>>2]|0;if((d|0)!=(c[b+292>>2]|0))return 0;if((c[e+128>>2]|0)==(d|0))return (c[e+216>>2]|0)==(d|0)|0;else return 0;return 0}function $Q(b){b=b|0;var d=0,e=0,f=0,g=0;e=c[b+408>>2]|0;f=e+8|0;if(!(a[f>>0]|0)){d=b+74|0;do if((a[d>>0]|0)!=0?(c[b+116>>2]|0)==0:0){if((a[b+80>>0]|0)!=0?(a[b+90>>0]|0)!=0:0){c[b+448>>2]=c[e+24>>2];a[f>>0]=1;break}if(!(a[b+88>>0]|0)){g=c[b>>2]|0;c[g+20>>2]=47;Bd[c[g>>2]&511](b);break}else{c[b+448>>2]=c[e+20>>2];break}}while(0);Bd[c[c[b+436>>2]>>2]&511](b);Bd[c[(c[b+416>>2]|0)+8>>2]&511](b);if(!(a[b+65>>0]|0)){if(!(a[e+16>>0]|0))Bd[c[c[b+444>>2]>>2]&511](b);Bd[c[c[b+440>>2]>>2]&511](b);if(a[d>>0]|0)Cd[c[c[b+448>>2]>>2]&255](b,a[f>>0]|0);Cd[c[c[b+420>>2]>>2]&255](b,(a[f>>0]|0)!=0?3:0);Cd[c[c[b+412>>2]>>2]&255](b,0)}}else{a[f>>0]=0;Cd[c[c[b+448>>2]>>2]&255](b,0);Cd[c[c[b+420>>2]>>2]&255](b,2);Cd[c[c[b+412>>2]>>2]&255](b,2)}d=c[b+8>>2]|0;if(!d)return;e=c[e+12>>2]|0;c[d+12>>2]=e;e=((a[f>>0]|0)!=0?2:1)+e|0;d=d+16|0;c[d>>2]=e;if(!(a[b+64>>0]|0))return;if(a[(c[b+424>>2]|0)+17>>0]|0)return;c[d>>2]=e+((a[b+90>>0]|0)!=0?2:1);return}function aR(b){b=b|0;var d=0;d=c[b+408>>2]|0;if(a[b+74>>0]|0)Bd[c[(c[b+448>>2]|0)+8>>2]&511](b);b=d+12|0;c[b>>2]=(c[b>>2]|0)+1;return}function bR(b){b=b|0;var d=0;d=c[b+440>>2]|0;a[d+36>>0]=0;c[d+44>>2]=c[b+96>>2];return}function cR(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+16|0;n=o;k=c[b+440>>2]|0;m=k+36|0;if(!(a[m>>0]|0)){l=k+44|0;p=c[l>>2]|0;p=p>>>0<2?p:2;f=c[h>>2]|0;j=j-f|0;j=p>>>0>j>>>0?j:p;c[n>>2]=c[g+(f<<2)>>2];if(j>>>0>1)f=c[g+(f+1<<2)>>2]|0;else{f=c[k+32>>2]|0;a[m>>0]=1}c[n+4>>2]=f;Yd[c[k+12>>2]&63](b,d,c[e>>2]|0,n);p=(a[m>>0]|0)==0;c[h>>2]=(c[h>>2]|0)+j;c[l>>2]=(c[l>>2]|0)-j;if(!p){i=o;return}}else{nH(k+32|0,0,g+(c[h>>2]<<2)|0,0,1,c[k+40>>2]|0);a[m>>0]=0;p=k+44|0;c[h>>2]=(c[h>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+-1}c[e>>2]=(c[e>>2]|0)+1;i=o;return}function dR(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;u=c[b+440>>2]|0;v=c[b+300>>2]|0;w=c[u+16>>2]|0;x=c[u+20>>2]|0;y=c[u+24>>2]|0;u=c[u+28>>2]|0;i=f<<1;h=c[e>>2]|0;j=c[h+(i<<2)>>2]|0;i=c[h+((i|1)<<2)>>2]|0;h=c[(c[e+4>>2]|0)+(f<<2)>>2]|0;l=c[(c[e+8>>2]|0)+(f<<2)>>2]|0;k=c[g>>2]|0;f=c[g+4>>2]|0;q=b+92|0;e=c[q>>2]|0;s=e>>>1;if(!s){b=l;g=k}else{t=s*6|0;r=s<<1;g=k+t|0;b=l+s|0;m=s;n=j;o=i;p=h;e=k;k=f;while(1){z=d[p>>0]|0;B=d[l>>0]|0;C=c[w+(B<<2)>>2]|0;B=(c[y+(B<<2)>>2]|0)+(c[u+(z<<2)>>2]|0)>>16;z=c[x+(z<<2)>>2]|0;A=d[n>>0]|0;a[e>>0]=a[v+(A+C)>>0]|0;a[e+1>>0]=a[v+(A+B)>>0]|0;a[e+2>>0]=a[v+(A+z)>>0]|0;A=d[n+1>>0]|0;a[e+3>>0]=a[v+(A+C)>>0]|0;a[e+4>>0]=a[v+(A+B)>>0]|0;a[e+5>>0]=a[v+(A+z)>>0]|0;A=d[o>>0]|0;a[k>>0]=a[v+(A+C)>>0]|0;a[k+1>>0]=a[v+(A+B)>>0]|0;a[k+2>>0]=a[v+(A+z)>>0]|0;A=d[o+1>>0]|0;a[k+3>>0]=a[v+(A+C)>>0]|0;a[k+4>>0]=a[v+(A+B)>>0]|0;a[k+5>>0]=a[v+(A+z)>>0]|0;m=m+-1|0;if(!m)break;else{n=n+2|0;o=o+2|0;p=p+1|0;l=l+1|0;e=e+6|0;k=k+6|0}}e=c[q>>2]|0;j=j+r|0;i=i+r|0;h=h+s|0;f=f+t|0}if(!(e&1))return;C=d[h>>0]|0;A=d[b>>0]|0;z=c[w+(A<<2)>>2]|0;A=(c[y+(A<<2)>>2]|0)+(c[u+(C<<2)>>2]|0)>>16;C=c[x+(C<<2)>>2]|0;B=d[j>>0]|0;a[g>>0]=a[v+(B+z)>>0]|0;a[g+1>>0]=a[v+(B+A)>>0]|0;a[g+2>>0]=a[v+(B+C)>>0]|0;B=d[i>>0]|0;a[f>>0]=a[v+(B+z)>>0]|0;a[f+1>>0]=a[v+(B+A)>>0]|0;a[f+2>>0]=a[v+(B+C)>>0]|0;return}function eR(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;Yd[c[(c[a+440>>2]|0)+12>>2]&63](a,b,c[d>>2]|0,f+(c[g>>2]<<2)|0);c[g>>2]=(c[g>>2]|0)+1;c[d>>2]=(c[d>>2]|0)+1;return}function fR(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;r=c[b+440>>2]|0;s=c[b+300>>2]|0;t=c[r+16>>2]|0;u=c[r+20>>2]|0;v=c[r+24>>2]|0;r=c[r+28>>2]|0;h=c[(c[e>>2]|0)+(f<<2)>>2]|0;q=c[(c[e+4>>2]|0)+(f<<2)>>2]|0;o=c[(c[e+8>>2]|0)+(f<<2)>>2]|0;f=c[g>>2]|0;l=b+92|0;e=c[l>>2]|0;n=e>>>1;if(!n){b=q;g=o}else{p=n*6|0;m=n<<1;g=o+n|0;i=n;j=h;k=q;b=o;e=f;while(1){o=d[k>>0]|0;x=d[b>>0]|0;y=c[t+(x<<2)>>2]|0;x=(c[v+(x<<2)>>2]|0)+(c[r+(o<<2)>>2]|0)>>16;o=c[u+(o<<2)>>2]|0;w=d[j>>0]|0;a[e>>0]=a[s+(w+y)>>0]|0;a[e+1>>0]=a[s+(w+x)>>0]|0;a[e+2>>0]=a[s+(w+o)>>0]|0;w=d[j+1>>0]|0;a[e+3>>0]=a[s+(w+y)>>0]|0;a[e+4>>0]=a[s+(w+x)>>0]|0;a[e+5>>0]=a[s+(w+o)>>0]|0;i=i+-1|0;if(!i)break;else{j=j+2|0;k=k+1|0;b=b+1|0;e=e+6|0}}e=c[l>>2]|0;h=h+m|0;b=q+n|0;f=f+p|0}if(!(e&1))return;y=d[b>>0]|0;q=d[g>>0]|0;w=(c[v+(q<<2)>>2]|0)+(c[r+(y<<2)>>2]|0)>>16;y=c[u+(y<<2)>>2]|0;x=d[h>>0]|0;a[f>>0]=a[s+(x+(c[t+(q<<2)>>2]|0))>>0]|0;a[f+1>>0]=a[s+(x+w)>>0]|0;a[f+2>>0]=a[s+(x+y)>>0]|0;return}function gR(b,d){b=b|0;d=d|0;var e=0;e=c[b+420>>2]|0;do if(!d){if(!(a[b+74>>0]|0)){c[e+4>>2]=c[(c[b+440>>2]|0)+4>>2];break}c[e+4>>2]=46;d=e+12|0;if(!(c[d>>2]|0))c[d>>2]=Qd[c[(c[b+4>>2]|0)+28>>2]&127](b,c[e+8>>2]|0,0,c[e+16>>2]|0,1)|0}else if((d|0)==3){if(!(c[e+8>>2]|0)){d=c[b>>2]|0;c[d+20>>2]=3;Bd[c[d>>2]&511](b)}c[e+4>>2]=47}else if((d|0)==2){if(!(c[e+8>>2]|0)){d=c[b>>2]|0;c[d+20>>2]=3;Bd[c[d>>2]&511](b)}c[e+4>>2]=48}else{d=c[b>>2]|0;c[d+20>>2]=3;Bd[c[d>>2]&511](b)}while(0);c[e+24>>2]=0;c[e+20>>2]=0;return}function hR(a){a=a|0;var b=0;b=c[a+440>>2]|0;c[b+92>>2]=c[a+284>>2];c[b+96>>2]=c[a+96>>2];return}function iR(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=c[a+440>>2]|0;o=n+92|0;i=c[o>>2]|0;p=a+284|0;e=c[p>>2]|0;if((i|0)>=(e|0)){m=a+36|0;if((c[m>>2]|0)>0){e=n+52|0;i=n+100|0;j=n+12|0;k=0;l=c[a+196>>2]|0;while(1){q=(c[b+(k<<2)>>2]|0)+((da(c[i+(k<<2)>>2]|0,c[d>>2]|0)|0)<<2)|0;Yd[c[e+(k<<2)>>2]&63](a,l,q,j+(k<<2)|0);k=k+1|0;if((k|0)>=(c[m>>2]|0))break;else l=l+88|0}e=c[p>>2]|0}c[o>>2]=0;i=0}q=e-i|0;b=n+96|0;l=c[b>>2]|0;q=q>>>0>l>>>0?l:q;l=c[g>>2]|0;h=h-l|0;q=q>>>0>h>>>0?h:q;Ad[c[(c[a+444>>2]|0)+4>>2]&63](a,n+12|0,i,f+(l<<2)|0,q);c[g>>2]=(c[g>>2]|0)+q;c[b>>2]=(c[b>>2]|0)-q;q=(c[o>>2]|0)+q|0;c[o>>2]=q;if((q|0)<(c[p>>2]|0))return;c[d>>2]=(c[d>>2]|0)+1;return}function jR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[e>>2]=0;return}function kR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[e>>2]=d;return}function lR(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;j=c[f>>2]|0;k=b+284|0;d=c[k>>2]|0;if((d|0)<=0)return;i=b+92|0;h=0;do{f=c[j+(h<<2)>>2]|0;b=c[i>>2]|0;g=f+b|0;if((b|0)>0){b=c[e+(h<<2)>>2]|0;d=f;while(1){f=a[b>>0]|0;a[d>>0]=f;a[d+1>>0]=f;d=d+2|0;if(d>>>0>=g>>>0)break;else b=b+1|0}d=c[k>>2]|0}h=h+1|0}while((h|0)<(d|0));return}function mR(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=c[f>>2]|0;l=b+284|0;if((c[l>>2]|0)<=0)return;h=b+92|0;i=0;j=0;while(1){f=c[k+(j<<2)>>2]|0;d=c[h>>2]|0;g=f+d|0;if((d|0)>0){b=c[e+(i<<2)>>2]|0;d=f;while(1){f=a[b>>0]|0;a[d>>0]=f;a[d+1>>0]=f;d=d+2|0;if(d>>>0>=g>>>0)break;else b=b+1|0}d=c[h>>2]|0}nH(k,j,k,j|1,1,d);j=j+2|0;if((j|0)>=(c[l>>2]|0))break;else i=i+1|0}return}function nR(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=c[b+440>>2]|0;p=c[f>>2]|0;g=c[d+4>>2]|0;f=a[n+140+g>>0]|0;d=f&255;g=a[n+g+150>>0]|0;n=g&255;o=b+284|0;if((c[o>>2]|0)<=0)return;m=b+92|0;l=f<<24>>24!=0;j=n+-1|0;k=0-d|0;k=((k|0)>-1?k:-1)+d+1|0;if((g&255)>1){i=0;h=0;while(1){g=c[p+(h<<2)>>2]|0;f=c[m>>2]|0;b=g+f|0;if((f|0)>0)if(l){d=c[e+(i<<2)>>2]|0;f=g;while(1){sfa(f|0,a[d>>0]|0,k|0)|0;f=f+k|0;if(f>>>0>=b>>>0)break;else d=d+1|0}}else do{}while((f|0)>0);nH(p,h,p,h+1|0,j,c[m>>2]|0);h=h+n|0;if((h|0)>=(c[o>>2]|0))break;else i=i+1|0}return}else{h=0;i=0;while(1){g=c[p+(i<<2)>>2]|0;f=c[m>>2]|0;b=g+f|0;if((f|0)>0)if(l){d=c[e+(h<<2)>>2]|0;f=g;while(1){sfa(f|0,a[d>>0]|0,k|0)|0;f=f+k|0;if(f>>>0>=b>>>0)break;else d=d+1|0}}else do{}while((f|0)>0);i=i+n|0;if((i|0)>=(c[o>>2]|0))break;else h=h+1|0}return}}function oR(a){a=a|0;Bd[c[(c[a>>2]|0)+8>>2]&511](a);eF(a);ld(1)}function pR(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a>>2]|0;if((b|0)>=0){if((c[d+104>>2]|0)<(b|0))return;Bd[c[d+8>>2]&511](a);return}e=d+108|0;b=c[e>>2]|0;if(!((b|0)!=0?(c[d+104>>2]|0)<=2:0)){Bd[c[d+8>>2]&511](a);b=c[e>>2]|0}c[e>>2]=b+1;return}function qR(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+208|0;d=b;e=b+8|0;Cd[c[(c[a>>2]|0)+12>>2]&255](a,e);a=c[p>>2]|0;c[d>>2]=e;Uc(a|0,304264,d|0)|0;i=b;return}function rR(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;l=i;i=i+32|0;k=l;h=c[b>>2]|0;f=c[h+20>>2]|0;if((f|0)>0?(f|0)<=(c[h+116>>2]|0):0){b=(c[h+112>>2]|0)+(f<<2)|0;g=8}else{b=c[h+120>>2]|0;if(((b|0)!=0?(e=c[h+124>>2]|0,(f|0)>=(e|0)):0)?(f|0)<=(c[h+128>>2]|0):0){b=b+(f-e<<2)|0;g=8}else g=9}if((g|0)==8){b=c[b>>2]|0;if(!b)g=9}if((g|0)==9){c[h+24>>2]=f;b=c[c[h+112>>2]>>2]|0}e=b;while(1){f=e+1|0;e=a[e>>0]|0;if(!(e<<24>>24))break;else if(e<<24>>24==37){j=f;g=12;break}else e=f}if((g|0)==12?(a[j>>0]|0)==115:0){c[k>>2]=h+24;Xea(d,b,k)|0;i=l;return}o=c[h+28>>2]|0;n=c[h+32>>2]|0;m=c[h+36>>2]|0;g=c[h+40>>2]|0;e=c[h+44>>2]|0;f=c[h+48>>2]|0;j=c[h+52>>2]|0;c[k>>2]=c[h+24>>2];c[k+4>>2]=o;c[k+8>>2]=n;c[k+12>>2]=m;c[k+16>>2]=g;c[k+20>>2]=e;c[k+24>>2]=f;c[k+28>>2]=j;Xea(d,b,k)|0;i=l;return}function sR(a){a=a|0;a=c[a>>2]|0;c[a+108>>2]=0;c[a+20>>2]=0;return}function tR(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=c[a+4>>2]|0;if(d>>>0>999999984){k=c[a>>2]|0;c[k+20>>2]=56;c[k+24>>2]=1;Bd[c[k>>2]&511](a)}e=d&7;if(e)d=d+8-e|0;if(b>>>0>1){k=c[a>>2]|0;c[k+20>>2]=15;c[k+24>>2]=b;Bd[c[k>>2]&511](a)}k=l+52+(b<<2)|0;e=c[k>>2]|0;a:do if(!e){j=0;g=10}else while(1){if((c[e+8>>2]|0)>>>0>=d>>>0)break a;f=c[e>>2]|0;if(!f){j=e;g=10;break}else e=f}while(0);do if((g|0)==10){h=d+16|0;i=(j|0)==0;f=c[(i?276376:276384)+(b<<2)>>2]|0;g=999999984-d|0;f=f>>>0>g>>>0?g:f;g=h+f|0;e=bH(a,g)|0;if(!e){e=f;while(1){f=e>>>1;if(e>>>0<100){b=c[a>>2]|0;c[b+20>>2]=56;c[b+24>>2]=2;Bd[c[b>>2]&511](a)}g=h+f|0;e=bH(a,g)|0;if(!e)e=f;else break}}l=l+76|0;c[l>>2]=(c[l>>2]|0)+g;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=f+d;if(i){c[k>>2]=e;break}else{c[j>>2]=e;break}}while(0);k=e+4|0;l=c[k>>2]|0;c[k>>2]=l+d;k=e+8|0;c[k>>2]=(c[k>>2]|0)-d;return e+16+l|0}function uR(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;if(d>>>0>999999984){f=c[a>>2]|0;c[f+20>>2]=56;c[f+24>>2]=3;Bd[c[f>>2]&511](a)}e=d&7;if(e)d=d+8-e|0;if(b>>>0>1){f=c[a>>2]|0;c[f+20>>2]=15;c[f+24>>2]=b;Bd[c[f>>2]&511](a)}e=d+16|0;f=dH(a,e)|0;if(!f){h=c[a>>2]|0;c[h+20>>2]=56;c[h+24>>2]=4;Bd[c[h>>2]&511](a)}h=g+76|0;c[h>>2]=(c[h>>2]|0)+e;h=g+60+(b<<2)|0;c[f>>2]=c[h>>2];c[f+4>>2]=d;c[f+8>>2]=0;c[h>>2]=f;return f+16|0}function vR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[a+4>>2]|0;f=999999984/(d>>>0)|0;if(!f){l=c[a>>2]|0;c[l+20>>2]=72;Bd[c[l>>2]&511](a)}h=(f|0)<(e|0)?f:e;c[g+80>>2]=h;m=tR(a,b,e<<2)|0;if(!e)return m|0;n=~e;f=0;do{i=e-f|0;g=h;h=h>>>0>>0?h:i;i=uR(a,b,da(h,d)|0)|0;if(h){j=f+n|0;l=~g;l=j>>>0>l>>>0?j:l;j=f;k=h;g=i;while(1){c[m+(j<<2)>>2]=g;k=k+-1|0;if(!k)break;else{j=j+1|0;g=g+d|0}}f=f+-1-l|0}}while(f>>>0>>0);return m|0}function wR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=c[a+4>>2]|0;o=d<<7;f=999999984/(o>>>0)|0;if(!f){l=c[a>>2]|0;c[l+20>>2]=72;Bd[c[l>>2]&511](a)}h=(f|0)<(e|0)?f:e;c[g+80>>2]=h;m=tR(a,b,e<<2)|0;if(!e)return m|0;n=~e;f=0;do{i=e-f|0;g=h;h=h>>>0>>0?h:i;i=uR(a,b,da(o,h)|0)|0;if(h){j=f+n|0;l=~g;l=j>>>0>l>>>0?j:l;j=f;k=h;g=i;while(1){c[m+(j<<2)>>2]=g;k=k+-1|0;if(!k)break;else{j=j+1|0;g=g+(d<<7)|0}}f=f+-1-l|0}}while(f>>>0>>0);return m|0}function xR(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;i=c[b+4>>2]|0;if((d|0)!=1){j=c[b>>2]|0;c[j+20>>2]=15;c[j+24>>2]=d;Bd[c[j>>2]&511](b)}d=tR(b,d,120)|0;c[d>>2]=0;c[d+4>>2]=g;c[d+8>>2]=f;c[d+12>>2]=h;a[d+32>>0]=e;a[d+34>>0]=0;f=i+68|0;c[d+36>>2]=c[f>>2];c[f>>2]=d;return d|0}function yR(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;i=c[b+4>>2]|0;if((d|0)!=1){j=c[b>>2]|0;c[j+20>>2]=15;c[j+24>>2]=d;Bd[c[j>>2]&511](b)}d=tR(b,d,120)|0;c[d>>2]=0;c[d+4>>2]=g;c[d+8>>2]=f;c[d+12>>2]=h;a[d+32>>0]=e;a[d+34>>0]=0;e=i+72|0;c[d+36>>2]=c[e>>2];c[e>>2]=d;return d|0}function zR(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=b+4|0;t=c[v>>2]|0;k=t+68|0;d=c[k>>2]|0;if(!d){e=0;f=0}else{e=0;f=0;do{if(!(c[d>>2]|0)){u=c[d+8>>2]|0;f=(da(u,c[d+12>>2]|0)|0)+f|0;e=(da(c[d+4>>2]|0,u)|0)+e|0}d=c[d+36>>2]|0}while((d|0)!=0)}s=t+72|0;d=c[s>>2]|0;if(d)do{if(!(c[d>>2]|0)){u=c[d+8>>2]|0;f=(da(c[d+12>>2]<<7,u)|0)+f|0;e=(da(u<<7,c[d+4>>2]|0)|0)+e|0}d=c[d+36>>2]|0}while((d|0)!=0);if((f|0)<1)return;d=fH(b,f,e,c[t+76>>2]|0)|0;if((d|0)<(e|0)){u=(d|0)/(f|0)|0;u=(u|0)<1?1:u}else u=1e9;d=c[k>>2]|0;if(d){r=t+80|0;do{if(!(c[d>>2]|0)){f=c[d+4>>2]|0;e=c[d+12>>2]|0;if(((((f+-1|0)>>>0)/(e>>>0)|0)+1|0)>(u|0)){q=d+16|0;c[q>>2]=da(e,u)|0;e=d+8|0;gH(b,d+40|0,da(c[e>>2]|0,f)|0);a[d+34>>0]=1;f=c[q>>2]|0}else{c[d+16>>2]=f;e=d+8|0}q=c[e>>2]|0;e=c[v>>2]|0;g=999999984/(q>>>0)|0;if(!g){p=c[b>>2]|0;c[p+20>>2]=72;Bd[c[p>>2]&511](b)}h=(g|0)<(f|0)?g:f;c[e+80>>2]=h;o=tR(b,1,f<<2)|0;if(f){p=~f;g=0;do{e=f-g|0;l=h;h=h>>>0>>0?h:e;e=da(h,q)|0;k=c[v>>2]|0;if(e>>>0>999999984){n=c[b>>2]|0;c[n+20>>2]=56;c[n+24>>2]=3;Bd[c[n>>2]&511](b)}i=e&7;if(i)e=e+8-i|0;i=e+16|0;n=dH(b,i)|0;if(!n){m=c[b>>2]|0;c[m+20>>2]=56;c[m+24>>2]=4;Bd[c[m>>2]&511](b)}m=k+76|0;c[m>>2]=(c[m>>2]|0)+i;m=k+64|0;c[n>>2]=c[m>>2];c[n+4>>2]=e;c[n+8>>2]=0;c[m>>2]=n;if(h){m=g+p|0;e=~l;l=m>>>0>e>>>0;i=g;j=h;k=n+16|0;while(1){c[o+(i<<2)>>2]=k;j=j+-1|0;if(!j)break;else{i=i+1|0;k=k+q|0}}g=g+-1-(l?m:e)|0}}while(g>>>0>>0)}c[d>>2]=o;c[d+20>>2]=c[r>>2];c[d+24>>2]=0;c[d+28>>2]=0;a[d+33>>0]=0}d=c[d+36>>2]|0}while((d|0)!=0)}d=c[s>>2]|0;if(!d)return;s=t+80|0;do{if(!(c[d>>2]|0)){f=c[d+4>>2]|0;e=c[d+12>>2]|0;if(((((f+-1|0)>>>0)/(e>>>0)|0)+1|0)>(u|0)){t=d+16|0;c[t>>2]=da(e,u)|0;e=d+8|0;gH(b,d+40|0,da(f<<7,c[e>>2]|0)|0);a[d+34>>0]=1;f=c[t>>2]|0}else{c[d+16>>2]=f;e=d+8|0}q=c[e>>2]|0;g=c[v>>2]|0;r=q<<7;e=999999984/(r>>>0)|0;if(!e){t=c[b>>2]|0;c[t+20>>2]=72;Bd[c[t>>2]&511](b)}e=(e|0)<(f|0)?e:f;c[g+80>>2]=e;o=tR(b,1,f<<2)|0;if(f){p=~f;g=0;do{h=f-g|0;k=e;e=e>>>0>>0?e:h;h=da(e,r)|0;i=c[v>>2]|0;if(h>>>0>999999984){t=c[b>>2]|0;c[t+20>>2]=56;c[t+24>>2]=3;Bd[c[t>>2]&511](b)}j=h|16;n=dH(b,j)|0;if(!n){t=c[b>>2]|0;c[t+20>>2]=56;c[t+24>>2]=4;Bd[c[t>>2]&511](b)}t=i+76|0;c[t>>2]=(c[t>>2]|0)+j;t=i+64|0;c[n>>2]=c[t>>2];c[n+4>>2]=h;c[n+8>>2]=0;c[t>>2]=n;if(e){m=g+p|0;i=~k;h=m>>>0>i>>>0;j=g;l=e;k=n+16|0;while(1){c[o+(j<<2)>>2]=k;l=l+-1|0;if(!l)break;else{j=j+1|0;k=k+(q<<7)|0}}g=g+-1-(h?m:i)|0}}while(g>>>0>>0)}c[d>>2]=o;c[d+20>>2]=c[s>>2];c[d+24>>2]=0;c[d+28>>2]=0;a[d+33>>0]=0}d=c[d+36>>2]|0}while((d|0)!=0);return}function AR(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=f+e|0;u=d+4|0;if(!((y>>>0<=(c[u>>2]|0)>>>0?(c[d+12>>2]|0)>>>0>=f>>>0:0)?(c[d>>2]|0)!=0:0)){z=c[b>>2]|0;c[z+20>>2]=23;Bd[c[z>>2]&511](b)}z=d+24|0;p=c[z>>2]|0;if(!(p>>>0<=e>>>0?y>>>0<=((c[d+16>>2]|0)+p|0)>>>0:0))x=7;a:do if((x|0)==7){if(!(a[d+34>>0]|0)){p=c[b>>2]|0;c[p+20>>2]=71;Bd[c[p>>2]&511](b)}k=d+33|0;if(a[k>>0]|0){m=c[d+8>>2]|0;h=c[z>>2]|0;o=d+20|0;p=d+16|0;f=c[p>>2]|0;b:do if((f|0)>0?(q=d+28|0,r=d+40|0,s=d+44|0,j=c[o>>2]|0,j=(j|0)<(f|0)?j:f,l=(c[q>>2]|0)-h|0,l=(j|0)<(l|0)?j:l,j=(c[u>>2]|0)-h|0,j=(l|0)<(j|0)?l:j,(j|0)>=1):0){i=da(h,m)|0;l=0;while(1){h=da(j,m)|0;Ad[c[s>>2]&63](b,r,c[(c[d>>2]|0)+(l<<2)>>2]|0,i,h);f=c[o>>2]|0;n=c[p>>2]|0;l=f+l|0;if((n|0)<=(l|0))break b;j=n-l|0;f=(f|0)<(j|0)?f:j;j=l+(c[z>>2]|0)|0;n=(c[q>>2]|0)-j|0;n=(f|0)<(n|0)?f:n;j=(c[u>>2]|0)-j|0;j=(n|0)<(j|0)?n:j;if((j|0)<1)break;else i=h+i|0}}while(0);a[k>>0]=0}f=c[d+16>>2]|0;if((c[z>>2]|0)>>>0>>0)h=e;else{h=y-f|0;h=(h|0)<0?0:h}c[z>>2]=h;l=c[d+8>>2]|0;m=d+20|0;n=d+16|0;if((f|0)>0?(v=d+28|0,w=d+40|0,t=c[m>>2]|0,t=(t|0)<(f|0)?t:f,s=(c[v>>2]|0)-h|0,s=(t|0)<(s|0)?t:s,t=(c[u>>2]|0)-h|0,t=(s|0)<(t|0)?s:t,(t|0)>=1):0){f=t;j=da(l,h)|0;k=0;while(1){i=da(f,l)|0;Ad[c[w>>2]&63](b,w,c[(c[d>>2]|0)+(k<<2)>>2]|0,j,i);f=c[m>>2]|0;h=c[n>>2]|0;k=f+k|0;if((h|0)<=(k|0))break a;s=h-k|0;s=(f|0)<(s|0)?f:s;f=k+(c[z>>2]|0)|0;t=(c[v>>2]|0)-f|0;t=(s|0)<(t|0)?s:t;f=(c[u>>2]|0)-f|0;f=(t|0)<(f|0)?t:f;if((f|0)<1)break;else j=i+j|0}}}while(0);h=d+28|0;f=c[h>>2]|0;do if(f>>>0>>0){if(f>>>0>>0)if(!(g<<24>>24)){h=0;f=e}else{f=c[b>>2]|0;c[f+20>>2]=23;Bd[c[f>>2]&511](b);f=e;x=27}else x=27;if((x|0)==27)if(!(g<<24>>24))h=0;else{c[h>>2]=y;h=1}if(!(a[d+32>>0]|0)){if(h)break;y=c[b>>2]|0;c[y+20>>2]=23;Bd[c[y>>2]&511](b);break}i=c[d+8>>2]|0;h=c[z>>2]|0;f=f-h|0;h=y-h|0;if(f>>>0>>0)do{sfa(c[(c[d>>2]|0)+(f<<2)>>2]|0,0,i|0)|0;f=f+1|0}while((f|0)!=(h|0))}while(0);if(!(g<<24>>24)){d=c[d>>2]|0;g=c[z>>2]|0;g=e-g|0;g=d+(g<<2)|0;return g|0}a[d+33>>0]=1;d=c[d>>2]|0;g=c[z>>2]|0;g=e-g|0;g=d+(g<<2)|0;return g|0}function BR(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=f+e|0;u=d+4|0;if(!((y>>>0<=(c[u>>2]|0)>>>0?(c[d+12>>2]|0)>>>0>=f>>>0:0)?(c[d>>2]|0)!=0:0)){z=c[b>>2]|0;c[z+20>>2]=23;Bd[c[z>>2]&511](b)}z=d+24|0;p=c[z>>2]|0;if(!(p>>>0<=e>>>0?y>>>0<=((c[d+16>>2]|0)+p|0)>>>0:0))x=7;a:do if((x|0)==7){if(!(a[d+34>>0]|0)){p=c[b>>2]|0;c[p+20>>2]=71;Bd[c[p>>2]&511](b)}k=d+33|0;if(a[k>>0]|0){m=c[d+8>>2]<<7;h=c[z>>2]|0;o=d+20|0;p=d+16|0;f=c[p>>2]|0;b:do if((f|0)>0?(q=d+28|0,r=d+40|0,s=d+44|0,j=c[o>>2]|0,j=(j|0)<(f|0)?j:f,l=(c[q>>2]|0)-h|0,l=(j|0)<(l|0)?j:l,j=(c[u>>2]|0)-h|0,j=(l|0)<(j|0)?l:j,(j|0)>=1):0){i=da(h,m)|0;l=0;while(1){h=da(j,m)|0;Ad[c[s>>2]&63](b,r,c[(c[d>>2]|0)+(l<<2)>>2]|0,i,h);f=c[o>>2]|0;n=c[p>>2]|0;l=f+l|0;if((n|0)<=(l|0))break b;j=n-l|0;f=(f|0)<(j|0)?f:j;j=l+(c[z>>2]|0)|0;n=(c[q>>2]|0)-j|0;n=(f|0)<(n|0)?f:n;j=(c[u>>2]|0)-j|0;j=(n|0)<(j|0)?n:j;if((j|0)<1)break;else i=h+i|0}}while(0);a[k>>0]=0}f=c[d+16>>2]|0;if((c[z>>2]|0)>>>0>>0)h=e;else{h=y-f|0;h=(h|0)<0?0:h}c[z>>2]=h;l=c[d+8>>2]<<7;m=d+20|0;n=d+16|0;if((f|0)>0?(v=d+28|0,w=d+40|0,t=c[m>>2]|0,t=(t|0)<(f|0)?t:f,s=(c[v>>2]|0)-h|0,s=(t|0)<(s|0)?t:s,t=(c[u>>2]|0)-h|0,t=(s|0)<(t|0)?s:t,(t|0)>=1):0){f=t;j=da(l,h)|0;k=0;while(1){i=da(f,l)|0;Ad[c[w>>2]&63](b,w,c[(c[d>>2]|0)+(k<<2)>>2]|0,j,i);f=c[m>>2]|0;h=c[n>>2]|0;k=f+k|0;if((h|0)<=(k|0))break a;s=h-k|0;s=(f|0)<(s|0)?f:s;f=k+(c[z>>2]|0)|0;t=(c[v>>2]|0)-f|0;t=(s|0)<(t|0)?s:t;f=(c[u>>2]|0)-f|0;f=(t|0)<(f|0)?t:f;if((f|0)<1)break;else j=i+j|0}}}while(0);h=d+28|0;f=c[h>>2]|0;do if(f>>>0>>0){if(f>>>0>>0)if(!(g<<24>>24)){h=0;f=e}else{f=c[b>>2]|0;c[f+20>>2]=23;Bd[c[f>>2]&511](b);f=e;x=27}else x=27;if((x|0)==27)if(!(g<<24>>24))h=0;else{c[h>>2]=y;h=1}if(!(a[d+32>>0]|0)){if(h)break;y=c[b>>2]|0;c[y+20>>2]=23;Bd[c[y>>2]&511](b);break}i=c[d+8>>2]<<7;h=c[z>>2]|0;f=f-h|0;h=y-h|0;if(f>>>0>>0)do{sfa(c[(c[d>>2]|0)+(f<<2)>>2]|0,0,i|0)|0;f=f+1|0}while((f|0)!=(h|0))}while(0);if(!(g<<24>>24)){d=c[d>>2]|0;g=c[z>>2]|0;g=e-g|0;g=d+(g<<2)|0;return g|0}a[d+33>>0]=1;d=c[d>>2]|0;g=c[z>>2]|0;g=e-g|0;g=d+(g<<2)|0;return g|0}function CR(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=c[b+4>>2]|0;if(d>>>0<=1){if((d|0)==1){g=h+68|0;e=c[g>>2]|0;if(e)do{f=e+34|0;if(a[f>>0]|0){a[f>>0]=0;Cd[c[e+48>>2]&255](b,e+40|0)}e=c[e+36>>2]|0}while((e|0)!=0);c[g>>2]=0;g=h+72|0;e=c[g>>2]|0;if(e)do{f=e+34|0;if(a[f>>0]|0){a[f>>0]=0;Cd[c[e+48>>2]&255](b,e+40|0)}e=c[e+36>>2]|0}while((e|0)!=0);c[g>>2]=0}}else{g=c[b>>2]|0;c[g+20>>2]=15;c[g+24>>2]=d;Bd[c[g>>2]&511](b)}g=h+60+(d<<2)|0;e=c[g>>2]|0;c[g>>2]=0;if(e){f=h+76|0;do{i=e;e=c[e>>2]|0;g=(c[i+4>>2]|0)+16+(c[i+8>>2]|0)|0;eH(b,i,g);c[f>>2]=(c[f>>2]|0)-g}while((e|0)!=0)}i=h+52+(d<<2)|0;e=c[i>>2]|0;c[i>>2]=0;if(!e)return;f=h+76|0;do{h=e;e=c[e>>2]|0;i=(c[h+4>>2]|0)+16+(c[h+8>>2]|0)|0;cH(b,h,i);c[f>>2]=(c[f>>2]|0)-i}while((e|0)!=0);return}function DR(a){a=a|0;var b=0;CR(a,1);CR(a,0);b=a+4|0;cH(a,c[b>>2]|0,84);c[b>>2]=0;iH(a);return}function ER(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=b+448|0;g=c[f>>2]|0;c[b+116>>2]=c[g+16>>2];c[b+112>>2]=c[g+20>>2];e=c[b+76>>2]|0;if((e|0)==1){n=b+100|0;c[g+4>>2]=(c[n>>2]|0)==3?50:49;c[g+48>>2]=0;if(!(a[g+28>>0]|0))HR(b);if(c[g+52>>2]|0)return;e=c[f>>2]|0;h=c[n>>2]|0;if((h|0)<=0)return;l=e+32|0;m=b+4|0;k=e+52|0;i=0;do{f=c[l+(i<<2)>>2]|0;a:do if((i|0)>0){e=0;while(1){if((f|0)==(c[l+(e<<2)>>2]|0))break;e=e+1|0;if((e|0)>=(i|0)){o=14;break a}}e=c[k+(e<<2)>>2]|0;if(!e)o=14}else o=14;while(0);if((o|0)==14){o=0;e=Hd[c[c[m>>2]>>2]&255](b,1,1024)|0;f=(f<<9)+-512|0;g=0;do{j=0;do{p=255-(d[276408+(g<<4)+j>>0]<<1)|0;h=p*255|0;if((p|0)<0)h=0-((0-h|0)/(f|0)|0)|0;else h=(h|0)/(f|0)|0;c[e+(g<<6)+(j<<2)>>2]=h;j=j+1|0}while((j|0)!=16);g=g+1|0}while((g|0)!=16);h=c[n>>2]|0}c[k+(i<<2)>>2]=e;i=i+1|0}while((i|0)<(h|0));return}else if((e|0)==2){c[g+4>>2]=51;a[g+84>>0]=0;k=g+68|0;if(!(c[k>>2]|0)){e=b+92|0;f=(c[e>>2]<<1)+4|0;g=b+100|0;if((c[g>>2]|0)<=0)return;i=b+4|0;j=0;do{c[k+(j<<2)>>2]=Hd[c[(c[i>>2]|0)+4>>2]&255](b,1,f)|0;j=j+1|0;h=c[g>>2]|0}while((j|0)<(h|0))}else{e=b+92|0;h=c[b+100>>2]|0}g=(c[e>>2]<<1)+4|0;f=b+100|0;if((h|0)>0)e=0;else return;do{sfa(c[k+(e<<2)>>2]|0,0,g|0)|0;e=e+1|0}while((e|0)<(c[f>>2]|0));return}else if(!e){e=g+4|0;if((c[b+100>>2]|0)==3){c[e>>2]=47;return}else{c[e>>2]=48;return}}else{p=c[b>>2]|0;c[p+20>>2]=49;Bd[c[p>>2]&511](b);return}}function FR(a){a=a|0;return}function GR(a){a=a|0;var b=0;b=c[a>>2]|0;c[b+20>>2]=47;Bd[c[b>>2]&511](a);return}function HR(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=c[b+448>>2]|0;n=(c[b+76>>2]|0)==1;a[d+28>>0]=n&1;l=b+100|0;m=d+24|0;c[m>>2]=Xd[c[(c[b+4>>2]|0)+8>>2]&255](b,1,n?766:256,c[l>>2]|0)|0;if((c[l>>2]|0)<=0)return;k=d+32|0;i=c[d+20>>2]|0;j=0;do{b=c[k+(j<<2)>>2]|0;i=(i|0)/(b|0)|0;if(n){g=(c[m>>2]|0)+(j<<2)|0;c[g>>2]=(c[g>>2]|0)+255}h=c[(c[m>>2]|0)+(j<<2)>>2]|0;e=b+-1|0;f=e<<1;g=0;d=(b+254|0)/(f|0)|0;b=0;do{if((g|0)>(d|0))do{b=b+1|0;d=(((b<<1|1)*255|0)+e|0)/(f|0)|0}while((g|0)>(d|0));a[h+g>>0]=da(b,i)|0;g=g+1|0}while((g|0)!=256);if(n){b=h+255|0;d=1;do{a[h+(0-d)>>0]=a[h>>0]|0;a[h+(d+255)>>0]=a[b>>0]|0;d=d+1|0}while((d|0)!=256)}j=j+1|0}while((j|0)<(c[l>>2]|0));return}function IR(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=c[b+448>>2]|0;h=c[g+24>>2]|0;f=b+76|0;if(!(c[f>>2]|0))e=0;else{c[f>>2]=2;e=2}if(!(d<<24>>24)){c[g+4>>2]=(e|0)==2?54:53;c[g+8>>2]=287;e=c[b+112>>2]|0;if((e|0)>=1){if((e|0)>256){d=c[b>>2]|0;c[d+20>>2]=59;c[d+24>>2]=256;Bd[c[d>>2]&511](b)}}else{d=c[b>>2]|0;c[d+20>>2]=58;c[d+24>>2]=1;Bd[c[d>>2]&511](b)}if((c[f>>2]|0)==2){f=((c[b+92>>2]|0)*6|0)+12|0;d=g+32|0;e=c[d>>2]|0;if(!e){e=Hd[c[(c[b+4>>2]|0)+4>>2]&255](b,1,f)|0;c[d>>2]=e}sfa(e|0,0,f|0)|0;if(!(c[g+40>>2]|0))KR(b);a[g+36>>0]=0}}else{c[g+4>>2]=52;c[g+8>>2]=286;a[g+28>>0]=1}e=g+28|0;if(!(a[e>>0]|0))return;else d=0;do{sfa(c[h+(d<<2)>>2]|0,0,4096)|0;d=d+1|0}while((d|0)!=32);a[e>>0]=0;return}function JR(b){b=b|0;a[(c[b+448>>2]|0)+28>>0]=1;return}function KR(a){a=a|0;var b=0,d=0,e=0;d=c[a+448>>2]|0;b=Hd[c[c[a+4>>2]>>2]&255](a,1,2044)|0;e=b+1020|0;c[d+40>>2]=e;c[e>>2]=0;c[b+1024>>2]=1;c[b+1016>>2]=-1;c[b+1028>>2]=2;c[b+1012>>2]=-2;c[b+1032>>2]=3;c[b+1008>>2]=-3;c[b+1036>>2]=4;c[b+1004>>2]=-4;c[b+1040>>2]=5;c[b+1e3>>2]=-5;c[b+1044>>2]=6;c[b+996>>2]=-6;c[b+1048>>2]=7;c[b+992>>2]=-7;c[b+1052>>2]=8;c[b+988>>2]=-8;c[b+1056>>2]=9;c[b+984>>2]=-9;c[b+1060>>2]=10;c[b+980>>2]=-10;c[b+1064>>2]=11;c[b+976>>2]=-11;c[b+1068>>2]=12;c[b+972>>2]=-12;c[b+1072>>2]=13;c[b+968>>2]=-13;c[b+1076>>2]=14;c[b+964>>2]=-14;c[b+1080>>2]=15;c[b+960>>2]=-15;b=16;a=16;do{c[e+(b<<2)>>2]=a;c[e+(0-b<<2)>>2]=0-a;b=b+1|0;a=(b&1^1)+a|0}while((b|0)!=48);b=0-a|0;d=48;do{c[e+(d<<2)>>2]=a;c[e+(0-d<<2)>>2]=b;d=d+1|0}while((d|0)!=256);return}function LR(a){a=a|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;m=a+44|0;n=c[m>>2]|0;z=a+60|0;A=a+116|0;B=a+108|0;v=n+-262|0;C=a+56|0;w=a+5812|0;x=a+72|0;y=a+88|0;o=a+84|0;p=a+68|0;q=a+52|0;r=a+64|0;s=a+112|0;t=a+92|0;u=a+76|0;f=c[A>>2]|0;g=n;while(1){i=c[B>>2]|0;k=(c[z>>2]|0)-f-i|0;if(i>>>0<(v+g|0)>>>0)g=k;else{i=c[C>>2]|0;qfa(i|0,i+n|0,n|0)|0;c[s>>2]=(c[s>>2]|0)-n;i=(c[B>>2]|0)-n|0;c[B>>2]=i;c[t>>2]=(c[t>>2]|0)-n;h=c[u>>2]|0;g=h;h=(c[p>>2]|0)+(h<<1)|0;do{h=h+-2|0;f=e[h>>1]|0;if(f>>>0>>0)f=0;else f=f-n&65535;b[h>>1]=f;g=g+-1|0}while((g|0)!=0);g=n;h=(c[r>>2]|0)+(n<<1)|0;do{h=h+-2|0;f=e[h>>1]|0;if(f>>>0>>0)f=0;else f=f-n&65535;b[h>>1]=f;g=g+-1|0}while((g|0)!=0);g=k+n|0}l=c[a>>2]|0;h=l+4|0;j=c[h>>2]|0;if(!j)break;f=c[A>>2]|0;k=(c[C>>2]|0)+(f+i)|0;i=j>>>0>g>>>0?g:j;if(!i)i=0;else{c[h>>2]=j-i;qfa(k|0,c[l>>2]|0,i|0)|0;f=c[(c[l+28>>2]|0)+24>>2]|0;if((f|0)==2){j=l+48|0;c[j>>2]=qH(c[j>>2]|0,k,i)|0}else if((f|0)==1){j=l+48|0;c[j>>2]=pH(c[j>>2]|0,k,i)|0}c[l>>2]=(c[l>>2]|0)+i;f=l+8|0;c[f>>2]=(c[f>>2]|0)+i;f=c[A>>2]|0}f=f+i|0;c[A>>2]=f;i=c[w>>2]|0;a:do if((f+i|0)>>>0>2){h=(c[B>>2]|0)-i|0;k=c[C>>2]|0;g=d[k+h>>0]|0;c[x>>2]=g;l=c[y>>2]|0;j=c[o>>2]|0;g=((d[k+(h+1)>>0]|0)^g<>2]=g;while(1){if(!i)break a;g=((d[k+(h+2)>>0]|0)^g<>2]=g;D=(c[p>>2]|0)+(g<<1)|0;b[(c[r>>2]|0)+((c[q>>2]&h)<<1)>>1]=b[D>>1]|0;b[D>>1]=h;i=i+-1|0;c[w>>2]=i;if((f+i|0)>>>0<3)break;else h=h+1|0}}while(0);if(f>>>0>=262)break;if(!(c[(c[a>>2]|0)+4>>2]|0))break;g=c[m>>2]|0}h=a+5824|0;i=c[h>>2]|0;g=c[z>>2]|0;if(g>>>0<=i>>>0)return;f=(c[A>>2]|0)+(c[B>>2]|0)|0;if(i>>>0>>0){D=g-f|0;D=D>>>0>258?258:D;sfa((c[C>>2]|0)+f|0,0,D|0)|0;c[h>>2]=D+f;return}f=f+258|0;if(f>>>0<=i>>>0)return;D=f-i|0;B=g-i|0;D=D>>>0>B>>>0?B:D;sfa((c[C>>2]|0)+i|0,0,D|0)|0;c[h>>2]=(c[h>>2]|0)+D;return}function MR(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=c[a+28>>2]|0;i=h+52|0;e=c[i>>2]|0;if(!e){e=Hd[c[a+32>>2]&255](c[a+40>>2]|0,1<>2],1)|0;c[i>>2]=e;if(!e){b=1;return b|0}}g=h+40|0;a=c[g>>2]|0;if(!a){a=1<>2];c[g>>2]=a;c[h+48>>2]=0;c[h+44>>2]=0}if(a>>>0<=d>>>0){qfa(e|0,b+(0-a)|0,a|0)|0;c[h+48>>2]=0;c[h+44>>2]=c[g>>2];b=0;return b|0}f=h+48|0;j=c[f>>2]|0;a=a-j|0;a=a>>>0>d>>>0?d:a;qfa(e+j|0,b+(0-d)|0,a|0)|0;e=d-a|0;if((a|0)!=(d|0)){qfa(c[i>>2]|0,b+(0-e)|0,e|0)|0;c[f>>2]=e;c[h+44>>2]=c[g>>2];b=0;return b|0}e=(c[f>>2]|0)+d|0;b=c[g>>2]|0;c[f>>2]=(e|0)==(b|0)?0:e;e=h+44|0;a=c[e>>2]|0;if(a>>>0>=b>>>0){b=0;return b|0}c[e>>2]=a+d;b=0;return b|0}function NR(a){a=a|0;var d=0;d=0;do{b[a+(d<<2)+148>>1]=0;d=d+1|0}while((d|0)!=286);b[a+2440>>1]=0;b[a+2444>>1]=0;b[a+2448>>1]=0;b[a+2452>>1]=0;b[a+2456>>1]=0;b[a+2460>>1]=0;b[a+2464>>1]=0;b[a+2468>>1]=0;b[a+2472>>1]=0;b[a+2476>>1]=0;b[a+2480>>1]=0;b[a+2484>>1]=0;b[a+2488>>1]=0;b[a+2492>>1]=0;b[a+2496>>1]=0;b[a+2500>>1]=0;b[a+2504>>1]=0;b[a+2508>>1]=0;b[a+2512>>1]=0;b[a+2516>>1]=0;b[a+2520>>1]=0;b[a+2524>>1]=0;b[a+2528>>1]=0;b[a+2532>>1]=0;b[a+2536>>1]=0;b[a+2540>>1]=0;b[a+2544>>1]=0;b[a+2548>>1]=0;b[a+2552>>1]=0;b[a+2556>>1]=0;b[a+2684>>1]=0;b[a+2688>>1]=0;b[a+2692>>1]=0;b[a+2696>>1]=0;b[a+2700>>1]=0;b[a+2704>>1]=0;b[a+2708>>1]=0;b[a+2712>>1]=0;b[a+2716>>1]=0;b[a+2720>>1]=0;b[a+2724>>1]=0;b[a+2728>>1]=0;b[a+2732>>1]=0;b[a+2736>>1]=0;b[a+2740>>1]=0;b[a+2744>>1]=0;b[a+2748>>1]=0;b[a+2752>>1]=0;b[a+2756>>1]=0;b[a+1172>>1]=1;c[a+5804>>2]=0;c[a+5800>>2]=0;c[a+5808>>2]=0;c[a+5792>>2]=0;return}function OR(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+32|0;B=C;A=c[g>>2]|0;x=g+8|0;t=c[x>>2]|0;p=c[t>>2]|0;t=c[t+12>>2]|0;w=f+5200|0;c[w>>2]=0;y=f+5204|0;c[y>>2]=573;if((t|0)>0){l=-1;h=0;do{if(!(b[A+(h<<2)>>1]|0))b[A+(h<<2)+2>>1]=0;else{l=(c[w>>2]|0)+1|0;c[w>>2]=l;c[f+(l<<2)+2908>>2]=h;a[f+h+5208>>0]=0;l=h}h=h+1|0}while((h|0)!=(t|0));h=c[w>>2]|0;if((h|0)<2)j=3;else z=l}else{h=0;l=-1;j=3}if((j|0)==3){k=f+5800|0;j=f+5804|0;if(!p){do{v=(l|0)<2;z=l+1|0;l=v?z:l;z=v?z:0;h=h+1|0;c[w>>2]=h;c[f+(h<<2)+2908>>2]=z;b[A+(z<<2)>>1]=1;a[f+z+5208>>0]=0;c[k>>2]=(c[k>>2]|0)+-1;h=c[w>>2]|0}while((h|0)<2);z=l}else{do{v=(l|0)<2;z=l+1|0;l=v?z:l;z=v?z:0;h=h+1|0;c[w>>2]=h;c[f+(h<<2)+2908>>2]=z;b[A+(z<<2)>>1]=1;a[f+z+5208>>0]=0;c[k>>2]=(c[k>>2]|0)+-1;c[j>>2]=(c[j>>2]|0)-(e[p+(z<<2)+2>>1]|0);h=c[w>>2]|0}while((h|0)<2);z=l}}v=g+4|0;c[v>>2]=z;l=h;s=(h|0)/2|0;while(1){r=c[f+(s<<2)+2908>>2]|0;m=f+r+5208|0;h=s<<1;a:do if((h|0)>(l|0))h=s;else{o=A+(r<<2)|0;q=s;p=h;while(1){do if((p|0)<(l|0)){h=p|1;l=c[f+(h<<2)+2908>>2]|0;j=b[A+(l<<2)>>1]|0;k=c[f+(p<<2)+2908>>2]|0;n=b[A+(k<<2)>>1]|0;if((j&65535)>=(n&65535)){if(j<<16>>16!=n<<16>>16){h=p;break}if((d[f+l+5208>>0]|0)>(d[f+k+5208>>0]|0)){h=p;break}}}else h=p;while(0);l=b[o>>1]|0;j=c[f+(h<<2)+2908>>2]|0;k=b[A+(j<<2)>>1]|0;if((l&65535)<(k&65535)){h=q;break a}if(l<<16>>16==k<<16>>16?(d[m>>0]|0)<=(d[f+j+5208>>0]|0):0){h=q;break a}c[f+(q<<2)+2908>>2]=j;p=h<<1;l=c[w>>2]|0;if((p|0)>(l|0))break;else q=h}}while(0);c[f+(h<<2)+2908>>2]=r;s=s+-1|0;h=c[w>>2]|0;if((s|0)<=0)break;else l=h}u=f+2912|0;do{s=c[u>>2]|0;l=h+-1|0;c[w>>2]=l;r=c[f+(h<<2)+2908>>2]|0;c[u>>2]=r;o=f+r+5208|0;b:do if((h|0)<3)h=1;else{m=A+(r<<2)|0;q=1;p=2;while(1){do if((p|0)<(l|0)){h=p|1;l=c[f+(h<<2)+2908>>2]|0;j=b[A+(l<<2)>>1]|0;k=c[f+(p<<2)+2908>>2]|0;n=b[A+(k<<2)>>1]|0;if((j&65535)>=(n&65535)){if(j<<16>>16!=n<<16>>16){h=p;break}if((d[f+l+5208>>0]|0)>(d[f+k+5208>>0]|0)){h=p;break}}}else h=p;while(0);l=b[m>>1]|0;j=c[f+(h<<2)+2908>>2]|0;k=b[A+(j<<2)>>1]|0;if((l&65535)<(k&65535)){h=q;break b}if(l<<16>>16==k<<16>>16?(d[o>>0]|0)<=(d[f+j+5208>>0]|0):0){h=q;break b}c[f+(q<<2)+2908>>2]=j;p=h<<1;l=c[w>>2]|0;if((p|0)>(l|0))break;else q=h}}while(0);c[f+(h<<2)+2908>>2]=r;r=c[u>>2]|0;o=(c[y>>2]|0)+-1|0;c[y>>2]=o;c[f+(o<<2)+2908>>2]=s;o=(c[y>>2]|0)+-1|0;c[y>>2]=o;c[f+(o<<2)+2908>>2]=r;o=A+(t<<2)|0;b[o>>1]=(e[A+(r<<2)>>1]|0)+(e[A+(s<<2)>>1]|0);h=a[f+s+5208>>0]|0;m=a[f+r+5208>>0]|0;q=f+t+5208|0;a[q>>0]=(((h&255)<(m&255)?m:h)&255)+1;h=t&65535;b[A+(r<<2)+2>>1]=h;b[A+(s<<2)+2>>1]=h;c[u>>2]=t;h=c[w>>2]|0;c:do if((h|0)<2)h=1;else{m=1;l=h;p=2;while(1){do if((p|0)<(l|0)){h=p|1;l=c[f+(h<<2)+2908>>2]|0;j=b[A+(l<<2)>>1]|0;k=c[f+(p<<2)+2908>>2]|0;n=b[A+(k<<2)>>1]|0;if((j&65535)>=(n&65535)){if(j<<16>>16!=n<<16>>16){h=p;break}if((d[f+l+5208>>0]|0)>(d[f+k+5208>>0]|0)){h=p;break}}}else h=p;while(0);l=b[o>>1]|0;j=c[f+(h<<2)+2908>>2]|0;k=b[A+(j<<2)>>1]|0;if((l&65535)<(k&65535)){h=m;break c}if(l<<16>>16==k<<16>>16?(d[q>>0]|0)<=(d[f+j+5208>>0]|0):0){h=m;break c}c[f+(m<<2)+2908>>2]=j;p=h<<1;l=c[w>>2]|0;if((p|0)>(l|0))break;else m=h}}while(0);c[f+(h<<2)+2908>>2]=t;t=t+1|0;h=c[w>>2]|0}while((h|0)>1);t=c[u>>2]|0;u=(c[y>>2]|0)+-1|0;c[y>>2]=u;c[f+(u<<2)+2908>>2]=t;u=c[g>>2]|0;t=c[v>>2]|0;j=c[x>>2]|0;p=c[j>>2]|0;q=c[j+4>>2]|0;r=c[j+8>>2]|0;j=c[j+16>>2]|0;h=f+2876|0;l=h+32|0;do{b[h>>1]=0;h=h+2|0}while((h|0)<(l|0));h=c[y>>2]|0;b[u+(c[f+(h<<2)+2908>>2]<<2)+2>>1]=0;h=h+1|0;d:do if((h|0)<573){s=f+5800|0;o=f+5804|0;if(!p){n=h;h=0;do{m=c[f+(n<<2)+2908>>2]|0;y=u+(m<<2)+2|0;k=e[u+(e[y>>1]<<2)+2>>1]|0;x=(k|0)<(j|0);k=x?k+1|0:j;h=(x&1^1)+h|0;b[y>>1]=k;if((m|0)<=(t|0)){y=f+(k<<1)+2876|0;b[y>>1]=(b[y>>1]|0)+1<<16>>16;if((m|0)<(r|0))l=0;else l=c[q+(m-r<<2)>>2]|0;y=da(e[u+(m<<2)>>1]|0,l+k|0)|0;c[s>>2]=y+(c[s>>2]|0)}n=n+1|0}while((n|0)!=573)}else{m=h;h=0;do{n=c[f+(m<<2)+2908>>2]|0;y=u+(n<<2)+2|0;k=e[u+(e[y>>1]<<2)+2>>1]|0;x=(k|0)<(j|0);k=x?k+1|0:j;h=(x&1^1)+h|0;b[y>>1]=k;if((n|0)<=(t|0)){y=f+(k<<1)+2876|0;b[y>>1]=(b[y>>1]|0)+1<<16>>16;if((n|0)<(r|0))l=0;else l=c[q+(n-r<<2)>>2]|0;y=e[u+(n<<2)>>1]|0;x=da(y,l+k|0)|0;c[s>>2]=x+(c[s>>2]|0);y=da((e[p+(n<<2)+2>>1]|0)+l|0,y)|0;c[o>>2]=y+(c[o>>2]|0)}m=m+1|0}while((m|0)!=573)}if(h){o=f+(j<<1)+2876|0;n=h;do{h=j;while(1){m=h+-1|0;k=f+(m<<1)+2876|0;l=b[k>>1]|0;if(!(l<<16>>16))h=m;else break}b[k>>1]=l+-1<<16>>16;h=f+(h<<1)+2876|0;b[h>>1]=(e[h>>1]|0)+2;h=(b[o>>1]|0)+-1<<16>>16;b[o>>1]=h;n=n+-2|0}while((n|0)>0);if(j){l=573;while(1){o=j&65535;if(h<<16>>16){n=h&65535;do{do{l=l+-1|0;h=c[f+(l<<2)+2908>>2]|0}while((h|0)>(t|0));k=u+(h<<2)+2|0;m=e[k>>1]|0;if((j|0)!=(m|0)){y=da(e[u+(h<<2)>>1]|0,j-m|0)|0;c[s>>2]=y+(c[s>>2]|0);b[k>>1]=o}n=n+-1|0}while((n|0)!=0)}j=j+-1|0;if(!j)break d;h=b[f+(j<<1)+2876>>1]|0}}}}while(0);h=1;j=0;do{j=(e[f+(h+-1<<1)+2876>>1]|0)+(j&65534)<<1;b[B+(h<<1)>>1]=j;h=h+1|0}while((h|0)!=16);if((z|0)<0){i=C;return}else l=0;while(1){f=b[A+(l<<2)+2>>1]|0;h=f&65535;if(f<<16>>16){j=B+(h<<1)|0;k=b[j>>1]|0;b[j>>1]=k+1<<16>>16;j=h;k=k&65535;h=0;while(1){h=h|k&1;j=j+-1|0;if((j|0)<=0)break;else{k=k>>>1;h=h<<1}}b[A+(l<<2)>>1]=h}if((l|0)==(z|0))break;else l=l+1|0}i=C;return}function PR(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;q=f+5792|0;if(!(c[q>>2]|0)){n=c[f+5820>>2]|0;i=b[f+5816>>1]|0}else{r=f+5796|0;s=f+5784|0;t=f+5820|0;u=f+5816|0;v=f+20|0;w=f+8|0;x=0;do{m=b[(c[r>>2]|0)+(x<<1)>>1]|0;o=m&65535;p=d[(c[s>>2]|0)+x>>0]|0;x=x+1|0;do if(!(m<<16>>16)){k=e[g+(p<<2)+2>>1]|0;n=c[t>>2]|0;l=e[g+(p<<2)>>1]|0;j=e[u>>1]|0|l<>1]=i;if((n|0)>(16-k|0)){i=c[v>>2]|0;c[v>>2]=i+1;a[(c[w>>2]|0)+i>>0]=j;i=(e[u>>1]|0)>>>8&255;n=c[v>>2]|0;c[v>>2]=n+1;a[(c[w>>2]|0)+n>>0]=i;n=c[t>>2]|0;i=l>>>(16-n|0)&65535;b[u>>1]=i;n=k+-16+n|0;c[t>>2]=n;break}else{n=n+k|0;c[t>>2]=n;break}}else{m=d[289760+p>>0]|0;i=(m|256)+1|0;k=e[g+(i<<2)+2>>1]|0;n=c[t>>2]|0;i=e[g+(i<<2)>>1]|0;l=e[u>>1]|0|i<>1]=j;if((n|0)>(16-k|0)){j=c[v>>2]|0;c[v>>2]=j+1;a[(c[w>>2]|0)+j>>0]=l;j=(e[u>>1]|0)>>>8&255;n=c[v>>2]|0;c[v>>2]=n+1;a[(c[w>>2]|0)+n>>0]=j;n=c[t>>2]|0;j=i>>>(16-n|0)&65535;b[u>>1]=j;k=k+-16+n|0}else k=n+k|0;c[t>>2]=k;n=c[291360+(m<<2)>>2]|0;do if((m+-8|0)>>>0<20){l=p-(c[291480+(m<<2)>>2]|0)&65535;i=l<>1]=j;if((k|0)>(16-n|0)){j=c[v>>2]|0;c[v>>2]=j+1;a[(c[w>>2]|0)+j>>0]=i;j=(e[u>>1]|0)>>>8&255;p=c[v>>2]|0;c[v>>2]=p+1;a[(c[w>>2]|0)+p>>0]=j;p=c[t>>2]|0;j=l>>>(16-p|0)&65535;b[u>>1]=j;p=n+-16+p|0;c[t>>2]=p;break}else{p=k+n|0;c[t>>2]=p;break}}else p=k;while(0);o=o+-1|0;if(o>>>0<256)i=o;else i=(o>>>7)+256|0;m=d[289248+i>>0]|0;k=e[h+(m<<2)+2>>1]|0;n=e[h+(m<<2)>>1]|0;l=j&65535|n<>1]=i;if((p|0)>(16-k|0)){i=c[v>>2]|0;c[v>>2]=i+1;a[(c[w>>2]|0)+i>>0]=l;i=(e[u>>1]|0)>>>8&255;j=c[v>>2]|0;c[v>>2]=j+1;a[(c[w>>2]|0)+j>>0]=i;j=c[t>>2]|0;i=n>>>(16-j|0)&65535;b[u>>1]=i;n=k+-16+j|0}else n=p+k|0;c[t>>2]=n;k=c[291600+(m<<2)>>2]|0;if((m+-4|0)>>>0<26){j=o-(c[291720+(m<<2)>>2]|0)&65535;l=j<>1]=i;if((n|0)>(16-k|0)){i=c[v>>2]|0;c[v>>2]=i+1;a[(c[w>>2]|0)+i>>0]=l;i=(e[u>>1]|0)>>>8&255;n=c[v>>2]|0;c[v>>2]=n+1;a[(c[w>>2]|0)+n>>0]=i;n=c[t>>2]|0;i=j>>>(16-n|0)&65535;b[u>>1]=i;n=k+-16+n|0;c[t>>2]=n;break}else{n=n+k|0;c[t>>2]=n;break}}}while(0)}while(x>>>0<(c[q>>2]|0)>>>0)}l=e[g+1026>>1]|0;m=f+5820|0;j=e[g+1024>>1]|0;k=f+5816|0;i=i&65535|j<>1]=i;if((n|0)>(16-l|0)){h=f+20|0;x=c[h>>2]|0;c[h>>2]=x+1;g=f+8|0;a[(c[g>>2]|0)+x>>0]=i;x=(e[k>>1]|0)>>>8&255;f=c[h>>2]|0;c[h>>2]=f+1;a[(c[g>>2]|0)+f>>0]=x;f=c[m>>2]|0;b[k>>1]=j>>>(16-f|0);f=l+-16+f|0;c[m>>2]=f;return}else{f=n+l|0;c[m>>2]=f;return}}function QR(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=b[f+2>>1]|0;o=D<<16>>16==0;x=d+2754|0;y=d+5820|0;z=d+2752|0;A=d+5816|0;B=d+20|0;C=d+8|0;t=d+2758|0;u=d+2756|0;v=d+2750|0;w=d+2748|0;l=o?138:7;o=o?3:4;h=0;D=D&65535;p=-1;a:while(1){n=0;while(1){if((h|0)>(g|0))break a;h=h+1|0;k=b[f+(h<<2)+2>>1]|0;i=k&65535;j=n+1|0;m=(D|0)==(i|0);if((j|0)<(l|0)&m)n=j;else{r=k;s=i;q=m;break}}do if((j|0)>=(o|0)){if(D){if((D|0)==(p|0)){k=b[A>>1]|0;m=c[y>>2]|0;n=j}else{l=e[d+(D<<2)+2686>>1]|0;m=c[y>>2]|0;i=e[d+(D<<2)+2684>>1]|0;j=e[A>>1]|0|i<>1]=k;if((m|0)>(16-l|0)){k=c[B>>2]|0;c[B>>2]=k+1;a[(c[C>>2]|0)+k>>0]=j;k=(e[A>>1]|0)>>>8&255;m=c[B>>2]|0;c[B>>2]=m+1;a[(c[C>>2]|0)+m>>0]=k;m=c[y>>2]|0;k=i>>>(16-m|0)&65535;b[A>>1]=k;i=l+-16+m|0}else i=m+l|0;c[y>>2]=i;m=i}j=e[v>>1]|0;l=e[w>>1]|0;i=k&65535|l<>1]=i;if((m|0)>(16-j|0)){k=c[B>>2]|0;c[B>>2]=k+1;a[(c[C>>2]|0)+k>>0]=i;i=(e[A>>1]|0)>>>8&255;k=c[B>>2]|0;c[B>>2]=k+1;a[(c[C>>2]|0)+k>>0]=i;k=c[y>>2]|0;i=l>>>(16-k|0);b[A>>1]=i;k=j+-16+k|0}else k=m+j|0;c[y>>2]=k;j=n+65533&65535;i=i&65535|j<>1]=i;if((k|0)>14){l=c[B>>2]|0;c[B>>2]=l+1;a[(c[C>>2]|0)+l>>0]=i;l=(e[A>>1]|0)>>>8&255;n=c[B>>2]|0;c[B>>2]=n+1;a[(c[C>>2]|0)+n>>0]=l;n=c[y>>2]|0;b[A>>1]=j>>>(16-n|0);c[y>>2]=n+-14;break}else{c[y>>2]=k+2;break}}if((j|0)<11){j=e[x>>1]|0;k=c[y>>2]|0;l=e[z>>1]|0;i=e[A>>1]|0|l<>1]=i;if((k|0)>(16-j|0)){k=c[B>>2]|0;c[B>>2]=k+1;a[(c[C>>2]|0)+k>>0]=i;i=(e[A>>1]|0)>>>8&255;k=c[B>>2]|0;c[B>>2]=k+1;a[(c[C>>2]|0)+k>>0]=i;k=c[y>>2]|0;i=l>>>(16-k|0);b[A>>1]=i;k=j+-16+k|0}else k=k+j|0;c[y>>2]=k;j=n+65534&65535;i=i&65535|j<>1]=i;if((k|0)>13){l=c[B>>2]|0;c[B>>2]=l+1;a[(c[C>>2]|0)+l>>0]=i;l=(e[A>>1]|0)>>>8&255;n=c[B>>2]|0;c[B>>2]=n+1;a[(c[C>>2]|0)+n>>0]=l;n=c[y>>2]|0;b[A>>1]=j>>>(16-n|0);c[y>>2]=n+-13;break}else{c[y>>2]=k+3;break}}else{k=e[t>>1]|0;j=c[y>>2]|0;l=e[u>>1]|0;i=e[A>>1]|0|l<>1]=i;if((j|0)>(16-k|0)){m=c[B>>2]|0;c[B>>2]=m+1;a[(c[C>>2]|0)+m>>0]=i;i=(e[A>>1]|0)>>>8&255;m=c[B>>2]|0;c[B>>2]=m+1;a[(c[C>>2]|0)+m>>0]=i;m=c[y>>2]|0;i=l>>>(16-m|0);b[A>>1]=i;k=k+-16+m|0}else k=j+k|0;c[y>>2]=k;j=n+65526&65535;i=i&65535|j<>1]=i;if((k|0)>9){l=c[B>>2]|0;c[B>>2]=l+1;a[(c[C>>2]|0)+l>>0]=i;l=(e[A>>1]|0)>>>8&255;n=c[B>>2]|0;c[B>>2]=n+1;a[(c[C>>2]|0)+n>>0]=l;n=c[y>>2]|0;b[A>>1]=j>>>(16-n|0);c[y>>2]=n+-9;break}else{c[y>>2]=k+7;break}}}else{o=d+(D<<2)+2686|0;p=d+(D<<2)+2684|0;k=c[y>>2]|0;i=b[A>>1]|0;do{n=e[o>>1]|0;l=e[p>>1]|0;m=i&65535|l<>1]=i;if((k|0)>(16-n|0)){i=c[B>>2]|0;c[B>>2]=i+1;a[(c[C>>2]|0)+i>>0]=m;i=(e[A>>1]|0)>>>8&255;k=c[B>>2]|0;c[B>>2]=k+1;a[(c[C>>2]|0)+k>>0]=i;k=c[y>>2]|0;i=l>>>(16-k|0)&65535;b[A>>1]=i;k=n+-16+k|0}else k=k+n|0;c[y>>2]=k;j=j+-1|0}while((j|0)!=0)}while(0);if(!(r<<16>>16)){p=D;l=138;o=3;D=s;continue}p=D;l=q?6:7;o=q?3:4;D=s}return}function RR(d,f,g,h,i,j,k,l,m,n){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;w=(i|0)>-1?i:0-i|0;u=(j|0)>-1?j:0-j|0;if(!((w|0)>0&(u|0)>0)){l=0;return l|0}o=(f|0)!=0;if(o&(g|0)==0){l=0;return l|0}a:do switch(h|0){case 4:{k=32;i=0;break}case 7:{k=64;i=0;break}case 12:{k=128;i=0;break}case 11:{k=96;i=0;break}case 8:{k=128;i=0;break}case 1:switch(k|0){case 16:{k=16;i=1;break a}case 32:case 24:case 8:case 4:case 1:{i=0;break a}default:{k=8;i=0;break a}}case 3:case 2:{k=16;i=0;break}case 5:{k=32;i=0;break}case 9:{k=48;i=0;break}case 10:{k=64;i=0;break}case 6:{k=32;i=0;break}default:{l=0;return l|0}}while(0);x=qea(4)|0;if(!x){l=0;return l|0}p=(d|0)!=0;q=(k|0)!=0&k>>>0<9;v=(i|0)!=0;j=(q?(4<>>0)+ +(u>>>0)*(+R(+((+(w>>>0)*+(k>>>0)+31.0)*.03125))*4.0);if(!(y!=+(i>>>0)|y>4294967167.0)){t=i;r=19}}else{t=j;r=19}if((r|0)==19?(t|0)!=0:0){i=qea(t+32|0)|0;if((i|0)!=0?(j=i,o=32-(j&15)+j|0,s=o,c[o+-4>>2]=j,c[x>>2]=s,(o|0)!=0):0){sfa(s|0,0,t|0)|0;d=c[x>>2]|0;c[d>>2]=h;i=d+4|0;a[i>>0]=0;a[i+1>>0]=0;a[i+2>>0]=0;a[i+3>>0]=0;c[d+268>>2]=0;c[d+264>>2]=0;sfa(d+8|0,-1,256)|0;c[d+288>>2]=p&1^1;c[d+276>>2]=0;c[d+280>>2]=0;b[d+272>>1]=0;i=kda(12,367160)|0;if(!i)i=0;else{h=i+4|0;c[h>>2]=0;c[i+8>>2]=0;c[i>>2]=h}c[d+284>>2]=i;c[d+292>>2]=0;c[d+296>>2]=f;c[d+300>>2]=g;f=d;g=f&15;g=f+312+((g|0)==0?0:16-g|0)|0;c[g>>2]=40;c[g+4>>2]=w;c[g+8>>2]=u;b[g+12>>1]=1;c[g+16>>2]=v?3:0;b[g+14>>1]=k;f=q?1<>2]=f;c[g+36>>2]=f;c[g+24>>2]=2835;c[g+28>>2]=2835;if((k|0)==8){g=d;i=g&15;i=g+312+((i|0)==0?0:16-i|0)|0;if((e[i+14>>1]|0)<16)i=i+40|0;else i=0;j=0;do{g=j&255;a[i+(j<<2)+2>>0]=g;a[i+(j<<2)+1>>0]=g;a[i+(j<<2)>>0]=g;j=j+1|0}while((j|0)!=256)}if(!v){l=x;return l|0}g=d;i=g&15;i=g+312+((i|0)==0?0:16-i|0)|0;if((c[i+16>>2]|0)==3)i=i+40|0;else i=0;c[i>>2]=l;c[i+4>>2]=m;c[i+8>>2]=n;l=x;return l|0}rea(x);l=0;return l|0}rea(x);l=0;return l|0}function SR(a,b){a=a|0;b=b|0;if(!b)return;SR(a,c[b>>2]|0);SR(a,c[b+4>>2]|0);v2(b+16|0);nda(b);return}function TR(a,b){a=a|0;b=b|0;if(!b)return;else{TR(a,c[b>>2]|0);TR(a,c[b+4>>2]|0);nda(b);return}}function UR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h;f=e0(a,e,b)|0;d=c[f>>2]|0;if(d){a=d;a=a+28|0;i=h;return a|0}g=jda(32)|0;q2(g+16|0,b);c[g+28>>2]=0;d=c[e>>2]|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=d;c[f>>2]=g;d=c[c[a>>2]>>2]|0;if(!d)d=g;else{c[a>>2]=d;d=c[f>>2]|0}VR(c[a+4>>2]|0,d);a=a+8|0;c[a>>2]=(c[a>>2]|0)+1;a=g;a=a+28|0;i=h;return a|0}function VR(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=(d|0)==(b|0);a[d+12>>0]=j&1;if(j)return;while(1){f=d+8|0;h=c[f>>2]|0;j=h+12|0;if(a[j>>0]|0){g=37;break}i=h+8|0;e=d;d=c[i>>2]|0;g=c[d>>2]|0;if((g|0)==(h|0)){g=c[d+4>>2]|0;if(!g){g=7;break}g=g+12|0;if(a[g>>0]|0){g=7;break}a[j>>0]=1;a[d+12>>0]=(d|0)==(b|0)&1;a[g>>0]=1}else{if(!g){b=f;g=24;break}g=g+12|0;if(a[g>>0]|0){b=f;g=24;break}a[j>>0]=1;a[d+12>>0]=(d|0)==(b|0)&1;a[g>>0]=1}if((d|0)==(b|0)){g=37;break}}if((g|0)==7){if((c[h>>2]|0)==(e|0))e=h;else{j=h+4|0;f=c[j>>2]|0;e=c[f>>2]|0;c[j>>2]=e;if(e){c[e+8>>2]=h;d=c[i>>2]|0}g=f+8|0;c[g>>2]=d;d=c[i>>2]|0;if((c[d>>2]|0)==(h|0))c[d>>2]=f;else c[d+4>>2]=f;c[f>>2]=h;c[i>>2]=f;h=c[g>>2]|0;e=f;d=h;h=c[h>>2]|0}a[e+12>>0]=1;a[d+12>>0]=0;g=h+4|0;e=c[g>>2]|0;c[d>>2]=e;if(e)c[e+8>>2]=d;e=d+8|0;c[h+8>>2]=c[e>>2];f=c[e>>2]|0;if((c[f>>2]|0)==(d|0))c[f>>2]=h;else c[f+4>>2]=h;c[g>>2]=d;c[e>>2]=h;return}else if((g|0)==24){if((c[h>>2]|0)==(e|0)){f=e+4|0;g=c[f>>2]|0;c[h>>2]=g;if(g){c[g+8>>2]=h;d=c[i>>2]|0}c[b>>2]=d;d=c[i>>2]|0;if((c[d>>2]|0)==(h|0))c[d>>2]=e;else c[d+4>>2]=e;c[f>>2]=h;c[i>>2]=e;d=c[b>>2]|0}else e=h;a[e+12>>0]=1;a[d+12>>0]=0;j=d+4|0;g=c[j>>2]|0;e=c[g>>2]|0;c[j>>2]=e;if(e)c[e+8>>2]=d;e=d+8|0;c[g+8>>2]=c[e>>2];f=c[e>>2]|0;if((c[f>>2]|0)==(d|0))c[f>>2]=g;else c[f+4>>2]=g;c[g>>2]=d;c[e>>2]=g;return}else if((g|0)==37)return}function WR(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=c[d+4>>2]|0;p=d+4|0;do if(g){l=a[e>>0]|0;n=(l&1)==0;l=(l&255)>>>1;o=e+1|0;m=c[e+8>>2]|0;k=c[e+4>>2]|0;h=n?l:k;j=n?o:m;d=p;e=g;a:while(1){while(1){f=e+16|0;g=a[f>>0]|0;if(!(g&1)){i=(g&255)>>>1;g=f+1|0}else{i=c[e+20>>2]|0;g=c[e+24>>2]|0}g=ffa(g,j,h>>>0>>0?h:i)|0;if(!g){if(i>>>0>=h>>>0){d=e;break}}else if((g|0)>=0){d=e;break}e=c[e+4>>2]|0;if(!e){i=d;break a}}e=c[d>>2]|0;if(!e){i=d;break}}if((i|0)!=(p|0)){h=i+16|0;g=n?l:k;d=a[h>>0]|0;e=(d&1)==0;if(e)f=(d&255)>>>1;else f=c[i+20>>2]|0;if(e)d=h+1|0;else d=c[i+24>>2]|0;d=ffa(n?o:m,d,f>>>0>>0?f:g)|0;if(!d){if(g>>>0>>0)break}else if((d|0)<0)break;c[b>>2]=i;return}}while(0);c[b>>2]=p;return}function XR(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=c[d>>2]|0;if(f){e=c[d+4>>2]|0;if(!e)e=d;else while(1){f=c[e>>2]|0;if(!f){f=0;break}else e=f}}else{e=d;f=0}m=e+4|0;k=c[((f|0)==0?m:e)>>2]|0;l=(k|0)==0;j=e+8|0;if(!l)c[k+8>>2]=c[j>>2];g=c[j>>2]|0;f=c[g>>2]|0;if((f|0)==(e|0)){c[g>>2]=k;if((e|0)==(b|0)){b=k;f=0}else f=c[g+4>>2]|0}else c[g+4>>2]=k;h=e+12|0;i=(a[h>>0]|0)==0;if((e|0)!=(d|0)){n=d+8|0;g=c[n>>2]|0;c[j>>2]=g;if((c[c[n>>2]>>2]|0)==(d|0))c[g>>2]=e;else c[g+4>>2]=e;g=c[d>>2]|0;c[e>>2]=g;c[g+8>>2]=e;g=c[d+4>>2]|0;c[m>>2]=g;if(g)c[g+8>>2]=e;a[h>>0]=a[d+12>>0]|0;b=(b|0)==(d|0)?e:b}if(i|(b|0)==0)return;if(l)k=f;else{a[k+12>>0]=1;return}while(1){h=k+8|0;i=c[h>>2]|0;e=k+12|0;g=(a[e>>0]|0)!=0;if((c[i>>2]|0)==(k|0)){if(g)g=k;else{a[e>>0]=1;a[i+12>>0]=0;f=k+4|0;e=c[f>>2]|0;c[i>>2]=e;if(e)c[e+8>>2]=i;g=i+8|0;c[h>>2]=c[g>>2];e=c[g>>2]|0;if((c[e>>2]|0)==(i|0))c[e>>2]=k;else c[e+4>>2]=k;c[f>>2]=i;c[g>>2]=k;b=(b|0)==(i|0)?k:b;g=c[i>>2]|0}e=c[g>>2]|0;f=(e|0)==0;if(!f?(a[e+12>>0]|0)==0:0){b=g;k=66;break}n=c[g+4>>2]|0;if((n|0)!=0?(a[n+12>>0]|0)==0:0){k=65;break}a[g+12>>0]=0;f=c[g+8>>2]|0;e=f+12|0;if((a[e>>0]|0)==0|(f|0)==(b|0)){k=62;break}e=c[f+8>>2]|0;e=(c[e>>2]|0)==(f|0)?e+4|0:e}else{if(g)h=k;else{a[e>>0]=1;a[i+12>>0]=0;n=i+4|0;f=c[n>>2]|0;e=c[f>>2]|0;c[n>>2]=e;if(e)c[e+8>>2]=i;e=i+8|0;c[f+8>>2]=c[e>>2];g=c[e>>2]|0;if((c[g>>2]|0)==(i|0))c[g>>2]=f;else c[g+4>>2]=f;c[f>>2]=i;c[e>>2]=f;h=c[k>>2]|0;b=(b|0)==(h|0)?k:b;h=c[h+4>>2]|0}e=c[h>>2]|0;if((e|0)!=0?(a[e+12>>0]|0)==0:0){g=h;k=36;break}g=c[h+4>>2]|0;if((g|0)!=0?(a[g+12>>0]|0)==0:0){f=h;b=g;g=h;k=37;break}a[h+12>>0]=0;e=c[h+8>>2]|0;if((e|0)==(b|0)){e=b;k=34;break}if(!(a[e+12>>0]|0)){k=34;break}n=c[e+8>>2]|0;e=(c[n>>2]|0)==(e|0)?n+4|0:n}k=c[e>>2]|0}if((k|0)==34){a[e+12>>0]=1;return}else if((k|0)==36){b=c[h+4>>2]|0;if(!b){f=g;k=38}else{f=g;g=h;k=37}}else if((k|0)==62){a[e>>0]=1;return}else if((k|0)==65)if(f)k=67;else{b=g;k=66}if((k|0)==37)if(!(a[b+12>>0]|0)){e=g;k=44}else{h=g;k=38}else if((k|0)==66)if(!(a[e+12>>0]|0))k=73;else{g=b;k=67}if((k|0)==38){a[e+12>>0]=1;a[h+12>>0]=0;g=e+4|0;b=c[g>>2]|0;c[f>>2]=b;if(b)c[b+8>>2]=h;b=h+8|0;c[e+8>>2]=c[b>>2];f=c[b>>2]|0;if((c[f>>2]|0)==(h|0))c[f>>2]=e;else c[f+4>>2]=e;c[g>>2]=h;c[b>>2]=e;b=h;k=44}else if((k|0)==67){n=g+4|0;f=c[n>>2]|0;a[f+12>>0]=1;a[g+12>>0]=0;e=c[f>>2]|0;c[n>>2]=e;if(e)c[e+8>>2]=g;e=g+8|0;c[f+8>>2]=c[e>>2];b=c[e>>2]|0;if((c[b>>2]|0)==(g|0))c[b>>2]=f;else c[b+4>>2]=f;c[f>>2]=g;c[e>>2]=f;e=g;b=f;k=73}if((k|0)==44){g=c[e+8>>2]|0;n=g+12|0;a[e+12>>0]=a[n>>0]|0;a[n>>0]=1;a[b+12>>0]=1;n=g+4|0;f=c[n>>2]|0;e=c[f>>2]|0;c[n>>2]=e;if(e)c[e+8>>2]=g;e=g+8|0;c[f+8>>2]=c[e>>2];b=c[e>>2]|0;if((c[b>>2]|0)==(g|0))c[b>>2]=f;else c[b+4>>2]=f;c[f>>2]=g;c[e>>2]=f;return}else if((k|0)==73){h=c[b+8>>2]|0;f=h+12|0;a[b+12>>0]=a[f>>0]|0;a[f>>0]=1;a[e+12>>0]=1;f=c[h>>2]|0;g=f+4|0;e=c[g>>2]|0;c[h>>2]=e;if(e)c[e+8>>2]=h;e=h+8|0;c[f+8>>2]=c[e>>2];b=c[e>>2]|0;if((c[b>>2]|0)==(h|0))c[b>>2]=f;else c[b+4>>2]=f;c[g>>2]=h;c[e>>2]=f;return}}function YR(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+64|0;j=k;f=a[b>>0]|0;if(!(f<<24>>24))f=0;else{h=f;g=b;f=0;do{do if(!(wea(h<<24>>24)|0)){h=(xea(a[g>>0]|0)|0)==0;g=a[g>>0]|0;if(h){a[j+f>>0]=g;break}else{a[j+f>>0]=zea(g<<24>>24)|0;break}}while(0);f=f+1|0;g=b+f|0;h=a[g>>0]|0}while(f>>>0<63&h<<24>>24!=0)}a[j+f>>0]=0;if((e|0)<1){d=-1;i=k;return d|0}g=e+-1|0;h=0;a:while(1){while(1){f=(g+h|0)/2|0;b=gfa(j,c[d+(f<<3)>>2]|0)|0;if((b|0)>=0)break;g=f+-1|0;if((h|0)>(g|0)){f=-1;g=14;break a}}if((b|0)<=0){g=14;break}if((f|0)<(g|0))h=f+1|0;else{f=-1;g=14;break}}if((g|0)==14){i=k;return f|0}return 0}function ZR(b,c,e,f,g,h){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;if((e|0)<=0)return;if((h|0)>0){m=0;i=0;j=0;while(1){l=(i|0)!=0;i=c+j|0;k=d[i>>0]|0;if(l){a[b>>0]=a[f+((k&15)<<2)>>0]|0;a[b+1>>0]=a[f+(((d[i>>0]|0)&15)<<2)+1>>0]|0;a[b+2>>0]=a[f+(((d[i>>0]|0)&15)<<2)+2>>0]|0;i=(d[i>>0]|0)&15;if((i|0)<(h|0))i=a[g+i>>0]|0;else i=-1;a[b+3>>0]=i;j=j+1|0}else{a[b>>0]=a[f+(k>>>4<<2)>>0]|0;a[b+1>>0]=a[f+((d[i>>0]|0)>>>4<<2)+1>>0]|0;a[b+2>>0]=a[f+((d[i>>0]|0)>>>4<<2)+2>>0]|0;a[b+3>>0]=a[g+((d[i>>0]|0)>>>4)>>0]|0}m=m+1|0;if((m|0)==(e|0))break;else{b=b+4|0;i=l&1^1}}return}else{m=0;i=0;j=0;while(1){l=(i|0)!=0;k=c+j|0;i=d[k>>0]|0;if(l){a[b>>0]=a[f+((i&15)<<2)>>0]|0;a[b+1>>0]=a[f+(((d[k>>0]|0)&15)<<2)+1>>0]|0;a[b+2>>0]=a[f+(((d[k>>0]|0)&15)<<2)+2>>0]|0;i=(d[k>>0]|0)&15;if((i|0)<(h|0))i=a[g+i>>0]|0;else i=-1;a[b+3>>0]=i;j=j+1|0}else{a[b>>0]=a[f+(i>>>4<<2)>>0]|0;a[b+1>>0]=a[f+((d[k>>0]|0)>>>4<<2)+1>>0]|0;a[b+2>>0]=a[f+((d[k>>0]|0)>>>4<<2)+2>>0]|0;a[b+3>>0]=-1}m=m+1|0;if((m|0)==(e|0))break;else{b=b+4|0;i=l&1^1}}return}}function _R(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=(b>>>0)/(d>>>0)|0;if(e)c=_R(e,c,d)|0;a[c>>0]=a[302008+((b>>>0)%(d>>>0)|0)>>0]|0;return c+1|0}function $R(a,b,e){a=a|0;b=b|0;e=e|0;var f=0;f=c[e>>2]|0;e=Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](a,1,b,c[e+4>>2]|0)|0;return ((e|0)!=0?e:-1)|0}function aS(a,b,e){a=a|0;b=b|0;e=e|0;var f=0;f=(c[e>>2]|0)+4|0;return Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](a,1,b,c[e+4>>2]|0)|0}function bS(a,b,e){a=a|0;b=b|0;e=e|0;var f=0;f=(c[e>>2]|0)+8|0;e=(Hd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](c[e+4>>2]|0,a,1)|0)==0;H=e?b:-1;return (e?a:-1)|0}function cS(a,b,e){a=a|0;b=b|0;e=e|0;b=(c[e>>2]|0)+8|0;return (Hd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](c[e+4>>2]|0,a,0)|0)==0|0}function dS(a){a=a|0;if(ffa(a,302504,4)|0)if(ffa(a,302512,4)|0)if(ffa(a,302520,4)|0)if(ffa(a,302376,4)|0)if(ffa(a,302384,4)|0)if(ffa(a,302496,4)|0)if(ffa(a,302472,4)|0)if(ffa(a,302528,4)|0)if(ffa(a,302488,4)|0)if(ffa(a,302480,4)|0)if(ffa(a,302400,4)|0)if(ffa(a,302536,4)|0)if(ffa(a,302544,4)|0)if(ffa(a,302552,4)|0)if(!(ffa(a,302392,4)|0))a=24;else{a=(ffa(a,302560,4)|0)==0;a=a?45:0}else a=31;else a=26;else a=37;else a=35;else a=36;else a=11;else a=16;else a=13;else a=12;else a=34;else a=19;else a=6;else a=14;else a=1;return a|0}function eS(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;e=m+12|0;f=m;k=m+4|0;l=m+8|0;c[e>>2]=0;c[f>>2]=0;iJ(a,e,f)|0;e=c[e>>2]|0;f=c[f>>2]|0;if((f|0)==0|(e|0)==0|f>>>0<20|(f+-8|0)>>>0<20){i=m;return}else j=8;while(1){h=j+4|0;if(h>>>0>f>>>0){e=9;break}g=e+j|0;g=j+12+(Dfa(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24|0)|0)|0;if(g>>>0>f>>>0){e=9;break}if(!(ffa(e+h|0,b,4)|0)){b=g;e=5;break}else j=g}if((e|0)==5){c[k>>2]=0;c[l>>2]=0;e=b-j|0;if((b|0)==(j|0)){i=m;return}iJ(a,k,l)|0;h=c[k>>2]|0;g=c[l>>2]|0;if(!(e>>>0>>0&(((g|0)==0|(h|0)==0|g>>>0<20)^1))){i=m;return}e=g+e|0;f=qea(e)|0;if(!f){i=m;return}qfa(f|0,h|0,j|0)|0;qfa(f+j|0,h+b|0,g-b|0)|0;kJ(a,0,0)|0;nJ(f,1,e,a)|0;rea(f);i=m;return}else if((e|0)==9){i=m;return}}function fS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[g>>2]=0;c[f>>2]=Dfa(d|0)|0;nJ(f,1,4,e)|0;c[f>>2]=Dfa(c[f>>2]|0)|0;nJ(a,1,4,e)|0;d=c[f>>2]|0;if((b|0)!=0&(d|0)!=0){nJ(b,1,d,e)|0;a=tK(0,a,4)|0;c[g>>2]=a;c[g>>2]=Dfa(tK(a,b,c[f>>2]|0)|0)|0;nJ(g,1,4,e)|0;i=h;return}else{c[g>>2]=Dfa(tK(0,a,4)|0)|0;nJ(g,1,4,e)|0;i=h;return}}function gS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h;f=f0(a,e,b)|0;d=c[f>>2]|0;if(d){a=d;a=a+28|0;i=h;return a|0}g=jda(40)|0;q2(g+16|0,b);d=g+28|0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;d=c[e>>2]|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=d;c[f>>2]=g;d=c[c[a>>2]>>2]|0;if(!d)d=g;else{c[a>>2]=d;d=c[f>>2]|0}VR(c[a+4>>2]|0,d);a=a+8|0;c[a>>2]=(c[a>>2]|0)+1;a=g;a=a+28|0;i=h;return a|0}function hS(a,b){a=a|0;b=b|0;if(!b)return;hS(a,c[b>>2]|0);hS(a,c[b+4>>2]|0);v2(b+28|0);v2(b+16|0);nda(b);return}function iS(){return 303256}function jS(){return 303232}function kS(){return 303224}function lS(){return 303216}function mS(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+176|0;x=C;t=C+128|0;u=C+112|0;v=C+72|0;z=C+164|0;y=C+161|0;q=C+40|0;l=C+52|0;w=C+158|0;h=C+144|0;k=C+64|0;if(!g){f=0;i=C;return f|0}c[k>>2]=0;m=f+12|0;m=Ed[(d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24)&511](g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](h,14,1,g)|0;B=b[h>>1]|0;if(!(B<<16>>16==16706|B<<16>>16==19778)){PI(c[75746]|0,312064,x);f=0;i=C;return f|0}Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](k,4,1,g)|0;B=f+8|0;Hd[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,-4,1)|0;s=c[k>>2]|0;switch(s|0){case 12:{p=h+10|0;p=(e[p>>1]|e[p+2>>1]<<16)+m|0;m=j&32768;q=(m|0)!=0;m=m>>>15;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](l,12,1,g)|0;j=l+4|0;j=d[j>>0]|d[j+1>>0]<<8;h=j&65535;r=l+6|0;r=d[r>>0]|d[r+1>>0]<<8;s=r&65535;A=l+10|0;A=d[A>>0]|d[A+1>>0]<<8;k=A&65535;j=(Bfa(yfa(Ifa(A&65535|0,0,j&65535|0,0)|0,H|0,7,0)|0,H|0,3)|0)+3&-4;switch(k|0){case 32:case 24:{k=OH(m,h,s,k,16711680,65280,255)|0;if(!k){f=gc(4)|0;c[f>>2]=315016;qd(f|0,366936,0)}vI(k,2835);wI(k,2835);if(q){f=k;i=C;return f|0}if(r<<16>>16){A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=fI(k)|0;f=da(j,s)|0;Xd[A&255](B,f,1,g)|0}qI(k,(iI(k)|0)==4&1);f=k;i=C;return f|0}case 8:case 4:case 1:{o=1<>2]=315016;qd(f|0,366936,0)}vI(k,2835);wI(k,2835);m=kI(k)|0;h=w+2|0;l=w+1|0;n=0;do{Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](w,3,1,g)|0;a[m+(n<<2)+2>>0]=a[h>>0]|0;a[m+(n<<2)+1>>0]=a[l>>0]|0;a[m+(n<<2)>>0]=a[w>>0]|0;n=n+1|0}while(n>>>0>>0);if(q){f=k;i=C;return f|0}Hd[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,p,0)|0;if(!(r<<16>>16)){f=k;i=C;return f|0}A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=fI(k)|0;f=da(j,s)|0;Xd[A&255](B,f,1,g)|0;f=k;i=C;return f|0}case 16:{k=OH(m,h,s,16,31744,992,31)|0;if(!k){f=gc(4)|0;c[f>>2]=315016;qd(f|0,366936,0)}vI(k,2835);wI(k,2835);if(!(r<<16>>16!=0&(q^1))){f=k;i=C;return f|0}A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=fI(k)|0;f=da(j,s)|0;Xd[A&255](B,f,1,g)|0;f=k;i=C;return f|0}default:{f=0;i=C;return f|0}}}case 64:{s=h+10|0;s=(e[s>>1]|e[s+2>>1]<<16)+m|0;k=j&32768;p=(k|0)!=0;k=k>>>15;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,40,1,g)|0;h=c[v+32>>2]|0;o=c[v+4>>2]|0;r=c[v+8>>2]|0;t=b[v+14>>1]|0;m=t&65535;n=c[v+16>>2]|0;t=Ifa(t&65535|0,0,o|0,0)|0;t=yfa(t|0,H|0,7,0)|0;t=Bfa(t|0,H|0,3)|0;t=t+3&-4;switch(m|0){case 16:{if((n|0)==3){Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](q,12,1,g)|0;k=OH(k,o,r,16,c[q>>2]|0,c[q+4>>2]|0,c[q+8>>2]|0)|0}else k=OH(k,o,r,16,31744,992,31)|0;if(!k){f=gc(4)|0;c[f>>2]=315016;qd(f|0,366936,0)}vI(k,c[v+24>>2]|0);wI(k,c[v+28>>2]|0);if(p){f=k;i=C;return f|0}if(((h*3|0)+54|0)>>>0>>0)Hd[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,s,0)|0;if((r|0)>0){A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=fI(k)|0;f=da(t,r)|0;Xd[A&255](B,f,1,g)|0;f=k;i=C;return f|0}h=(r|0)>-1?r:0-r|0;if((h|0)<=0){f=k;i=C;return f|0}l=h+-1|0;m=0;do{A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=qJ(k,l-m|0)|0;m=m+1|0}while((Xd[A&255](B,t,1,g)|0)==1&(h|0)>(m|0));i=C;return k|0}case 8:case 4:case 1:{q=1<>>0>=q>>>0?q:h;k=OH(k,o,r,m,0,0,0)|0;if(!k){f=gc(4)|0;c[f>>2]=315016;qd(f|0,366936,0)}vI(k,c[v+24>>2]|0);wI(k,c[v+28>>2]|0);j=c[v>>2]|0;m=((s+-14-j|0)>>>0)/(q>>>0)|0;Hd[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,j+14|0,0)|0;j=kI(k)|0;if((m|0)==3){if(q){m=y+2|0;h=y+1|0;l=0;do{Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](y,3,1,g)|0;a[j+(l<<2)+2>>0]=a[m>>0]|0;a[j+(l<<2)+1>>0]=a[h>>0]|0;a[j+(l<<2)>>0]=a[y>>0]|0;l=l+1|0}while(l>>>0>>0)}}else if((m|0)==4?(q|0)!=0:0){m=z+2|0;h=z+1|0;l=0;do{Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](z,4,1,g)|0;a[j+(l<<2)+2>>0]=a[m>>0]|0;a[j+(l<<2)+1>>0]=a[h>>0]|0;a[j+(l<<2)>>0]=a[z>>0]|0;l=l+1|0}while(l>>>0>>0)}if(p){f=k;i=C;return f|0}if(((q*3|0)+54|0)>>>0>>0)Hd[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,s,0)|0;if((n|0)==1)if(!(h0(f,g,o,r,k)|0)){f=gc(4)|0;c[f>>2]=303136;qd(f|0,366936,0)}else{f=k;i=C;return f|0}else if(!n){if((r|0)>0){A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=fI(k)|0;f=da(t,r)|0;Xd[A&255](B,f,1,g)|0;f=k;i=C;return f|0}h=(r|0)>-1?r:0-r|0;if((h|0)<=0){f=k;i=C;return f|0}l=h+-1|0;m=0;do{A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=qJ(k,l-m|0)|0;m=m+1|0}while((Xd[A&255](B,t,1,g)|0)==1&(h|0)>(m|0));i=C;return k|0}else if((n|0)==2)if(!(g0(f,g,o,r,k)|0)){f=gc(4)|0;c[f>>2]=303088;qd(f|0,366936,0)}else{f=k;i=C;return f|0}else{f=gc(4)|0;c[f>>2]=303184;qd(f|0,366936,0)}}case 32:case 24:{m=OH(k,o,r,m,16711680,65280,255)|0;if(!m){f=gc(4)|0;c[f>>2]=315016;qd(f|0,366936,0)}vI(m,c[v+24>>2]|0);wI(m,c[v+28>>2]|0);if(p){f=m;i=C;return f|0}if(((h*3|0)+54|0)>>>0>>0)Hd[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,s,0)|0;if((r|0)<=0){k=(r|0)>-1?r:0-r|0;if((k|0)>0){h=k+-1|0;l=0;do{A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=qJ(m,h-l|0)|0;l=l+1|0}while((Xd[A&255](B,t,1,g)|0)==1&(k|0)>(l|0))}}else{A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=fI(m)|0;f=da(t,r)|0;Xd[A&255](B,f,1,g)|0}qI(m,(iI(m)|0)==4&1);f=m;i=C;return f|0}default:{f=0;i=C;return f|0}}}case 124:case 108:case 56:case 52:case 40:{r=h+10|0;r=(e[r>>1]|e[r+2>>1]<<16)+m|0;n=j&32768;q=(n|0)!=0;n=n>>>15;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](x,40,1,g)|0;h=c[x+32>>2]|0;j=c[x+4>>2]|0;p=c[x+8>>2]|0;v=b[x+14>>1]|0;l=v&65535;o=c[x+16>>2]|0;v=Ifa(v&65535|0,0,j|0,0)|0;v=yfa(v|0,H|0,7,0)|0;v=Bfa(v|0,H|0,3)|0;v=v+3&-4;switch(l|0){case 8:case 4:case 1:{m=1<>2]=315016;qd(f|0,366936,0)}vI(k,c[x+24>>2]|0);wI(k,c[x+28>>2]|0);if((s|0)==108|(s|0)==56|(s|0)==52|(s|0)==124)Hd[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,s+-40|0,1)|0;z=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;A=kI(k)|0;Xd[z&255](A,((h+-1|0)>>>0>=m>>>0?m:h)<<2,1,g)|0;if(q){f=k;i=C;return f|0}Hd[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,r,0)|0;if(!o){if((p|0)>0){A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=fI(k)|0;f=da(v,p)|0;if((Xd[A&255](B,f,1,g)|0)==1){f=k;i=C;return f|0}else{f=gc(4)|0;c[f>>2]=303040;qd(f|0,366936,0)}}h=(p|0)>-1?p:0-p|0;if((h|0)<=0){f=k;i=C;return f|0}l=h+-1|0;m=0;while(1){A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=qJ(k,l-m|0)|0;m=m+1|0;if((Xd[A&255](B,v,1,g)|0)!=1){A=84;break}if((h|0)<=(m|0)){A=120;break}}if((A|0)==84){f=gc(4)|0;c[f>>2]=303040;qd(f|0,366936,0)}else if((A|0)==120){i=C;return k|0}}else if((o|0)==2)if(!(g0(f,g,j,p,k)|0)){f=gc(4)|0;c[f>>2]=303088;qd(f|0,366936,0)}else{f=k;i=C;return f|0}else if((o|0)==1)if(!(h0(f,g,j,p,k)|0)){f=gc(4)|0;c[f>>2]=303136;qd(f|0,366936,0)}else{f=k;i=C;return f|0}else{f=gc(4)|0;c[f>>2]=303184;qd(f|0,366936,0)}break}case 16:{if((o|0)==3){k=12;A=94}else if((o|0)!=6)if((s|0)!=52)if((s|0)>55){k=16;A=94}else k=OH(n,j,p,16,31744,992,31)|0;else{k=12;A=94}else{k=16;A=94}if((A|0)==94){Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](t,k,1,g)|0;k=OH(n,j,p,16,c[t>>2]|0,c[t+4>>2]|0,c[t+8>>2]|0)|0}if(!k){f=gc(4)|0;c[f>>2]=315016;qd(f|0,366936,0)}vI(k,c[x+24>>2]|0);wI(k,c[x+28>>2]|0);if(q){f=k;i=C;return f|0}Hd[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,r,0)|0;if((p|0)>0){A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=fI(k)|0;f=da(v,p)|0;Xd[A&255](B,f,1,g)|0;f=k;i=C;return f|0}h=(p|0)>-1?p:0-p|0;if((h|0)<=0){f=k;i=C;return f|0}l=h+-1|0;m=0;do{A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=qJ(k,l-m|0)|0;m=m+1|0}while((Xd[A&255](B,v,1,g)|0)==1&(h|0)>(m|0));i=C;return k|0}case 32:case 24:{if((o|0)==6){k=16;A=108}else if((o|0)!=3?(s|0)!=52:0)if((s|0)>55){k=16;A=108}else m=OH(n,j,p,l,16711680,65280,255)|0;else{k=12;A=108}if((A|0)==108){Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](u,k,1,g)|0;m=OH(n,j,p,l,c[u>>2]|0,c[u+4>>2]|0,c[u+8>>2]|0)|0}if(!m){f=gc(4)|0;c[f>>2]=315016;qd(f|0,366936,0)}vI(m,c[x+24>>2]|0);wI(m,c[x+28>>2]|0);if(q){f=m;i=C;return f|0}Hd[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,r,0)|0;if((p|0)<=0){k=(p|0)>-1?p:0-p|0;if((k|0)>0){h=k+-1|0;l=0;do{A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=qJ(m,h-l|0)|0;l=l+1|0}while((Xd[A&255](B,v,1,g)|0)==1&(k|0)>(l|0))}}else{A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=fI(m)|0;f=da(v,p)|0;Xd[A&255](B,f,1,g)|0}qI(m,(iI(m)|0)==4&1);f=m;i=C;return f|0}default:{f=0;i=C;return f|0}}break}default:{f=c[75746]|0;c[x>>2]=s;PI(f,303008,x);f=0;i=C;return f|0}}return 0}function nS(e,f,g,h,j,k){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=i;i=i+320|0;y=z+64|0;n=z+44|0;p=z;q=z+40|0;r=z+60|0;if(!((f|0)!=0&(g|0)!=0)){g=0;i=z;return g|0}b[n>>1]=19778;m=(hI(f)|0)<<2;l=m+54|0;h=n+10|0;b[h>>1]=l;b[h+2>>1]=l>>>16;k=XH(f)|0;l=(da(dI(f)|0,k)|0)+l|0;k=n+2|0;b[k>>1]=l;b[k+2>>1]=l>>>16;b[n+6>>1]=0;b[n+8>>1]=0;o=(YH(f)|0)==16;if(o){w=l+12|0;b[k>>1]=w;b[k+2>>1]=w>>>16;w=m+66|0;b[h>>1]=w;b[h+2>>1]=w>>>16}w=e+4|0;if((Xd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](n,14,1,g)|0)!=1){g=0;i=z;return g|0}k=p+0|0;m=(gI(f)|0)+0|0;h=k+40|0;do{c[k>>2]=c[m>>2];k=k+4|0;m=m+4|0}while((k|0)<(h|0));do if(!o){k=p+16|0;if((j&1|0)==0?1:(b[p+14>>1]|0)!=8){c[k>>2]=0;break}else{c[k>>2]=1;break}}else c[p+16>>2]=3;while(0);if((Xd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](p,40,1,g)|0)!=1){g=0;i=z;return g|0}if(o){c[q>>2]=_H(f)|0;if((Xd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](q,4,1,g)|0)!=1){g=0;i=z;return g|0}c[q>>2]=$H(f)|0;if((Xd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](q,4,1,g)|0)!=1){g=0;i=z;return g|0}c[q>>2]=aI(f)|0;if((Xd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](q,4,1,g)|0)!=1){g=0;i=z;return g|0}}a:do if((kI(f)|0)!=0?(s=kI(f)|0,(hI(f)|0)!=0):0){k=r+1|0;h=r+2|0;l=r+3|0;m=0;while(1){a[r>>0]=a[s+(m<<2)>>0]|0;a[k>>0]=a[s+(m<<2)+1>>0]|0;a[h>>0]=a[s+(m<<2)+2>>0]|0;a[l>>0]=a[s+(m<<2)+3>>0]|0;m=m+1|0;if((Xd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](r,4,1,g)|0)!=1){k=0;break}if(m>>>0>=(hI(f)|0)>>>0)break a}i=z;return k|0}while(0);if((YH(f)|0)!=8|(j&1|0)==0){y=d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24;A=fI(f)|0;x=XH(f)|0;f=da(dI(f)|0,x)|0;if((Xd[y&255](A,f,1,g)|0)!=1){g=0;i=z;return g|0}}else{t=qea((dI(f)|0)<<1)|0;b:do if(XH(f)|0){u=y+1|0;v=0;while(1){r=qJ(f,v)|0;s=eI(f)|0;do if((s|0)>0){j=s+-1|0;h=0;m=0;k=0;do{p=r+m|0;l=a[p>>0]|0;c:do if((m|0)<(j|0)?(A=m+1|0,l<<24>>24==(a[r+A>>0]|0)):0){e=m+254|0;o=A;while(1){if(!((o|0)<(j|0)&(o|0)<(e|0)))break;n=o+1|0;if(l<<24>>24==(a[r+n>>0]|0))o=n;else break}l=o-m|0;q=l+1|0;if((l|0)<=2){if((l|0)>-1)e=0;else{m=o;x=42;break}while(1){l=h+1|0;a[y+h>>0]=a[r+(e+m)>>0]|0;if((l|0)==254){a[t+k>>0]=0;a[t+(k+1)>>0]=-2;qfa(t+(k+2)|0,y|0,254)|0;h=0;k=k+256|0}else h=l;e=e+1|0;if((e|0)>=(q|0)){m=o;x=42;break c}}}if((h|0)==1){a[t+k>>0]=1;a[t+(k+1)>>0]=a[y>>0]|0;k=k+2|0}else if(h)if((h|0)==2){a[t+k>>0]=1;a[t+(k+1)>>0]=a[y>>0]|0;a[t+(k+2)>>0]=1;a[t+(k+3)>>0]=a[u>>0]|0;k=k+4|0}else{a[t+k>>0]=0;n=k+2|0;a[t+(k+1)>>0]=h;qfa(t+n|0,y|0,h|0)|0;k=(h&1)+h+n|0}a[t+k>>0]=q;a[t+(k+1)>>0]=a[p>>0]|0;h=0;m=o;k=k+2|0}else x=41;while(0);if((x|0)==41){a[y+h>>0]=l;h=h+1|0;x=42}if((x|0)==42){x=0;if((h|0)==254){a[t+k>>0]=0;a[t+(k+1)>>0]=-2;qfa(t+(k+2)|0,y|0,254)|0;h=0;k=k+256|0}}m=m+1|0}while((m|0)<(s|0));if((h|0)==1){a[t+k>>0]=1;a[t+(k+1)>>0]=a[y>>0]|0;k=k+2|0;break}else if(!h)break;else if((h|0)==2){a[t+k>>0]=1;a[t+(k+1)>>0]=a[y>>0]|0;a[t+(k+2)>>0]=1;a[t+(k+3)>>0]=a[u>>0]|0;k=k+4|0;break}else{a[t+k>>0]=0;j=k+2|0;a[t+(k+1)>>0]=h;qfa(t+j|0,y|0,h|0)|0;k=j+h+(h&1)|0;break}}else k=0;while(0);a[t+k>>0]=0;a[t+(k+1)>>0]=0;v=v+1|0;if((Xd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](t,k+2|0,1,g)|0)!=1)break;if(v>>>0>=(XH(f)|0)>>>0)break b}rea(t);g=0;i=z;return g|0}while(0);a[t>>0]=0;a[t+1>>0]=1;g=(Xd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](t,2,1,g)|0)==1;rea(t);if(!g){g=0;i=z;return g|0}}g=1;i=z;return g|0}function oS(a,c){a=a|0;c=c|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;h=g+4|0;e=g;f=g+2|0;b[h>>1]=19778;b[e>>1]=16706;b[f>>1]=0;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,2,c)|0;if(!(ffa(h,f,2)|0)){h=1;i=g;return h|0}h=(ffa(e,f,2)|0)==0&1;i=g;return h|0}function pS(){return 302992}function qS(a){a=a|0;a=a+-1|0;if(a>>>0>=32){a=0;return a|0}a=-2139062135>>>a&1;return a|0}function rS(a){a=a|0;return (a|0)==1|0}function sS(){return 1}function tS(){return 303312}function uS(){return 303296}function vS(){return 303288}function wS(){return 0}function xS(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+16|0;q=s;p=s+9|0;r=s+8|0;if(!g){f=0;i=s;return f|0}k=j&32768;m=(k|0)==0;if((Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](q,1,8,g)|0)!=8){s=gc(4)|0;c[s>>2]=313024;qd(s|0,366936,0)}j=b[q>>1]|0;if(!(j<<16>>16)){f=0;i=s;return f|0}l=q+2|0;h=b[l>>1]|0;if(!(h<<16>>16)){f=0;i=s;return f|0}k=OH(k>>>15,j&65535,h&65535,8,0,0,0)|0;if(!k){s=gc(4)|0;c[s>>2]=315016;qd(s|0,366936,0)}h=kI(k)|0;j=0;do{o=j&255;a[h+(j<<2)+2>>0]=o;a[h+(j<<2)+1>>0]=o;a[h+(j<<2)>>0]=o;j=j+1|0}while((j|0)!=256);if(!m){f=k;i=s;return f|0}o=qJ(k,(e[l>>1]|0)+-1|0)|0;n=dI(k)|0;m=da(e[l>>1]|0,e[q>>1]|0)|0;a[p>>0]=0;a[r>>0]=0;n=0-n|0;h=0;a:while(1){if(h>>>0>>0)l=0;else{h=28;break}while(1){if((Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](p,1,1,g)|0)!=1){h=14;break a}t=a[p>>0]|0;j=t&255;if(!(t<<24>>24))break;if(!(j&128)){if((j+l|0)>>>0>(e[q>>1]|0)>>>0){h=26;break a}if((Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](o+l|0,j,1,g)|0)!=1){h=25;break a}}else{a[p>>0]=j&127;if((Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](r,1,1,g)|0)!=1){h=19;break a}j=d[p>>0]|0;if((j+l|0)>>>0>(e[q>>1]|0)>>>0){h=22;break a}sfa(o+l|0,a[r>>0]|0,j|0)|0}j=d[p>>0]|0;h=j+h|0;if(h>>>0>=m>>>0){h=28;break a}else l=j+l|0}Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](p,1,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](p,1,1,g)|0;o=o+n|0}if((h|0)==14){t=gc(4)|0;c[t>>2]=313024;qd(t|0,366936,0)}else if((h|0)==19){t=gc(4)|0;c[t>>2]=313024;qd(t|0,366936,0)}else if((h|0)==22){t=gc(4)|0;c[t>>2]=313024;qd(t|0,366936,0)}else if((h|0)==25){t=gc(4)|0;c[t>>2]=313024;qd(t|0,366936,0)}else if((h|0)==26){t=gc(4)|0;c[t>>2]=313024;qd(t|0,366936,0)}else if((h|0)==28){i=s;return k|0}return 0}function yS(a,b){a=a|0;b=b|0;return 0}function zS(){return 303272}function AS(a){a=a|0;return 0}function BS(a){a=a|0;return 0}function CS(){return 1}function DS(){return 303360}function ES(){return 303344}function FS(){return 303336}function GS(){return 0}function HS(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function IS(a,b,c){a=a|0;b=b|0;c=c|0;return}function JS(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+128|0;h=o;g=h+0|0;f=g+128|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(f|0));Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](h,1,128,c)|0;n=h+80|0;g=d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24;if(!(g&64)){if(!(g&4)){b=0;i=o;return b|0}g=h+84|0;g=d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24;if((g|0)==894720068){j=h+12|0;l=h+16|0;b=i0(5,d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24,d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24,b,c)|0;i=o;return b|0}else if((g|0)==827611204){j=h+12|0;l=h+16|0;b=i0(1,d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24,d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24,b,c)|0;i=o;return b|0}else if((g|0)==861165636){j=h+12|0;l=h+16|0;b=i0(3,d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24,d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24,b,c)|0;i=o;return b|0}else{b=0;i=o;return b|0}}g=h+16|0;g=(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&-4;k=h+12|0;k=(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24)&-4;l=h+88|0;l=d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24;e=h+92|0;j=h+96|0;m=h+100|0;m=PH(g,k,l,d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24,d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24,d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24)|0;if(!m){b=0;i=o;return b|0}j=Ifa(l|0,0,g|0,0)|0;j=yfa(j|0,H|0,7,0)|0;j=Bfa(j|0,H|0,3)|0;e=h+8|0;if(!((d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&8))g=j;else{g=h+20|0;g=d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24}g=g-j|0;if((k|0)>0){f=k+-1|0;e=b+8|0;h=0;do{p=qJ(m,f-h|0)|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](p,1,j,c)|0;Hd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](c,g,1)|0;h=h+1|0}while((h|0)!=(k|0))}qI(m,(d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24)&1);if(!((l|0)==32?((d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24)&1|0)==0:0)){p=m;i=o;return p|0}p=LI(m)|0;RH(m);i=o;return p|0}function KS(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;g=i;i=i+128|0;e=g;f=e+0|0;h=f+128|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,1,128,b)|0;if((c[e>>2]|0)!=542327876){h=0;i=g;return h|0}if((c[e+4>>2]|0)!=124){h=0;i=g;return h|0}h=(c[e+76>>2]|0)==32&1;i=g;return h|0}function LS(){return 303320}function MS(a){a=a|0;return 0}function NS(a){a=a|0;return 0}function OS(){return 303576}function PS(){return 303544}function QS(){return 303536}function RS(){return 0}function SS(b,e,f,j,l){b=b|0;e=e|0;f=f|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;l=t;q=t+8|0;g[q>>2]=196.0;if(!e){s=0;i=t;return s|0}r=eJ(0,0)|0;if(!r){t=gc(4)|0;c[t>>2]=315480;qd(t|0,366936,0)}s=uw(303392,313048,0,176,177,140,222,223,178,55)|0;if(!s){t=gc(4)|0;c[t>>2]=303408;qd(t|0,366936,0)}ww(s,0)|0;c[l>>2]=1728;rv(s,256,l)|0;c[l>>2]=1;rv(s,277,l)|0;c[l>>2]=1;rv(s,258,l)|0;c[l>>2]=1;rv(s,266,l)|0;c[l>>2]=1;rv(s,284,l)|0;c[l>>2]=0;rv(s,262,l)|0;h[k>>3]=+g[q>>2];c[l>>2]=c[k>>2];c[l+4>>2]=c[k+4>>2];rv(s,283,l)|0;c[l>>2]=2;rv(s,296,l)|0;c[l>>2]=3;rv(s,259,l)|0;c[l>>2]=0;rv(s,292,l)|0;c[l>>2]=q;sv(s,283,l)|0;p=_J(216)|0;n=_J(216)|0;if((p|0)==0|(n|0)==0){t=gc(4)|0;c[t>>2]=315480;qd(t|0,366936,0)}l=b+12|0;m=Ed[(d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24)&511](e)|0;o=b+8|0;Hd[(d[o>>0]|d[o+1>>0]<<8|d[o+2>>0]<<16|d[o+3>>0]<<24)&255](e,0,2)|0;l=Ed[(d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24)&511](e)|0;Hd[(d[o>>0]|d[o+1>>0]<<8|d[o+2>>0]<<16|d[o+3>>0]<<24)&255](e,m,0)|0;m=s+592|0;c[m>>2]=l;l=_J(l)|0;o=s+588|0;c[o>>2]=l;if(!l){t=gc(4)|0;c[t>>2]=315480;qd(t|0,366936,0)}f=c[m>>2]|0;if((da(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](l,f,1,e)|0,f)|0)!=(f|0)){t=gc(4)|0;c[t>>2]=303504;qd(t|0,366936,0)}c[s+604>>2]=c[o>>2];f=s+608|0;c[f>>2]=c[m>>2];Ed[c[s+508>>2]&511](s)|0;Pd[c[s+512>>2]&511](s,0)|0;m=s+444|0;c[m>>2]=0;bK(n,0,216);if((c[f>>2]|0)>0){j=s+532|0;l=0;do{if(!(Xd[c[j>>2]&255](s,p,216,0)|0))cK(p,n,216);else cK(n,p,216);c[m>>2]=(c[m>>2]|0)+1;nJ(p,216,1,r)|0;l=l+1|0}while((c[f>>2]|0)>0);e=l}else e=0;$J(c[o>>2]|0);c[o>>2]=0;$J(p);$J(n);if((e|0)<1){t=gc(4)|0;c[t>>2]=303440;qd(t|0,366936,0)}m=PH(1728,e,1,0,0,0)|0;l=dI(m)|0;j=kI(m)|0;a[j>>0]=-1;a[j+1>>0]=-1;a[j+2>>0]=-1;a[j+4>>0]=0;a[j+5>>0]=0;a[j+6>>0]=0;vI(m,8031);wI(m,~~(+g[q>>2]/.0254+.5)>>>0);kJ(r,0,0)|0;j=qJ(m,e+-1|0)|0;if((e|0)>0){f=0-l|0;l=0;while(1){mJ(j,216,1,r)|0;l=l+1|0;if((l|0)>=(e|0))break;else j=j+f|0}}_u(s);fJ(r);s=m;i=t;return s|0}function TS(){return 303376}function US(a){a=a|0;return 0}function VS(){return 303608}function WS(){return 303968}function XS(){return 303960}function YS(){return 303952}function ZS(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+32|0;h=G+20|0;F=G+19|0;D=G+4|0;B=G+18|0;x=G+12|0;C=G+16|0;y=G+8|0;z=G;E=G+17|0;g=kda(64,367160)|0;if(!g){E=0;i=G;return E|0}A=g+16|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;a[g+12>>0]=0;j=A+0|0;k=j+48|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));c[g>>2]=f;if(!f){E=b+4|0;Xd[(d[E>>0]|d[E+1>>0]<<8|d[E+2>>0]<<16|d[E+3>>0]<<24)&255](303944,6,1,e)|0;E=g;i=G;return E|0}if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](h,6,1,e)|0)){G=gc(4)|0;c[G>>2]=312064;qd(G|0,366936,0)}if(((hfa(h,303608,3)|0)==0?((a[h+3>>0]|0)+-48&255)<10:0)?((a[h+4>>0]|0)+-48&255)<10:0)h=((a[h+5>>0]|0)+-97&255)<26&1;else h=0;w=b+8|0;Hd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](e,-6,1)|0;if(!h){G=gc(4)|0;c[G>>2]=312064;qd(G|0,366936,0)}Hd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](e,6,1)|0;Hd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](e,4,1)|0;if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](F,1,1,e)|0)){G=gc(4)|0;c[G>>2]=303776;qd(G|0,366936,0)}if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](g+12|0,1,1,e)|0)){G=gc(4)|0;c[G>>2]=303776;qd(G|0,366936,0)}Hd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](e,1,1)|0;k=b+12|0;if((a[F>>0]|0)<0){c[g+4>>2]=Ed[(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24)&511](e)|0;v=2<<(d[F>>0]&7);c[g+8>>2]=v;Hd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](e,v*3|0,1)|0}c[D>>2]=0;a[B>>0]=0;l=g+56|0;m=g+60|0;n=g+52|0;o=g+44|0;p=g+48|0;q=g+40|0;r=g+32|0;s=g+36|0;t=g+28|0;u=g+20|0;v=g+24|0;h=0;a:while(1){if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](B,1,1,e)|0)){h=19;break}j=a[B>>0]|0;do if(j<<24>>24==44){j=Ed[(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24)&511](e)|0;c[x>>2]=j;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))r0(n,x);else{if(f)c[f>>2]=j;c[l>>2]=f+4}j=c[o>>2]|0;if((j|0)==(c[p>>2]|0))r0(q,D);else{if(j)c[j>>2]=h;c[o>>2]=j+4}c[D>>2]=0;Hd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](e,8,1)|0;if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](F,1,1,e)|0)){h=32;break a}j=d[F>>0]|0;if(j&128)Hd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](e,(2<<(j&7))*3|0,1)|0;Hd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](e,1,1)|0;h=0}else if(j<<24>>24==33){if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](C,1,1,e)|0)){h=37;break a}j=a[C>>0]|0;if(j<<24>>24==-1){j=Ed[(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24)&511](e)|0;c[z>>2]=j;f=c[u>>2]|0;if((f|0)==(c[v>>2]|0)){r0(A,z);break}if(f)c[f>>2]=j;c[u>>2]=f+4;break}else if(j<<24>>24==-2){j=Ed[(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24)&511](e)|0;c[y>>2]=j;f=c[r>>2]|0;if((f|0)==(c[s>>2]|0)){r0(t,y);break}if(f)c[f>>2]=j;c[r>>2]=f+4;break}else if(j<<24>>24==-7){h=Ed[(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24)&511](e)|0;c[D>>2]=h;break}else break}else if(j<<24>>24==59){h=57;break a}else{h=50;break a}while(0);if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](E,1,1,e)|0)){h=52;break}while(1){j=a[E>>0]|0;if(!(j<<24>>24))break;Hd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](e,j&255,1)|0;if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](E,1,1,e)|0)){h=55;break a}}if((a[B>>0]|0)==59){h=57;break}}if((h|0)==19){G=gc(4)|0;c[G>>2]=303816;qd(G|0,366936,0)}else if((h|0)==32){G=gc(4)|0;c[G>>2]=303840;qd(G|0,366936,0)}else if((h|0)==37){G=gc(4)|0;c[G>>2]=303872;qd(G|0,366936,0)}else if((h|0)==50){G=gc(4)|0;c[G>>2]=303896;qd(G|0,366936,0)}else if((h|0)==52){G=gc(4)|0;c[G>>2]=303920;qd(G|0,366936,0)}else if((h|0)==55){G=gc(4)|0;c[G>>2]=303920;qd(G|0,366936,0)}else if((h|0)==57){i=G;return g|0}return 0}function _S(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+16|0;g=h;if(!f){i=h;return}if(!(c[f>>2]|0)){a[g>>0]=59;b=b+4|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](g,1,1,e)|0}q0(f);nda(f);i=h;return}function $S(a,b,d){a=a|0;b=b|0;d=d|0;if(!d){a=0;return a|0}a=(c[d+56>>2]|0)-(c[d+52>>2]|0)>>2;return a|0}function aT(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;$=i;i=i+5728|0;U=$;_=$+308|0;y=$+312|0;z=$+322|0;S=$+320|0;R=$+324|0;X=$+1627|0;V=$+1626|0;T=$+318|0;x=$+326|0;F=$+328|0;E=$+292|0;G=$+280|0;w=$+268|0;H=$+264|0;I=$+1632|0;L=$+260|0;K=$+316|0;J=$+314|0;M=$+336|0;O=$+256|0;N=$+1360|0;Q=$+296|0;P=$+1371|0;if(!k){f=0;i=$;return f|0}Z=(h|0)==-1?0:h;if((Z|0)<0){f=0;i=$;return f|0}v=k+52|0;q=c[v>>2]|0;if((Z|0)>=((c[k+56>>2]|0)-q>>2|0)){f=0;i=$;return f|0}c[_>>2]=0;W=f+8|0;h=d[W>>0]|d[W+1>>0]<<8|d[W+2>>0]<<16|d[W+3>>0]<<24;if(j&2){Hd[h&255](g,6,0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](x,2,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](F,2,1,g)|0;h=c[k+4>>2]|0;if((h|0)!=0?(m=d[k+12>>0]|0,(m|0)<(c[k+8>>2]|0)):0){Hd[(d[W>>0]|d[W+1>>0]<<8|d[W+2>>0]<<16|d[W+3>>0]<<24)&255](g,(m*3|0)+h|0,0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](E+2|0,1,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](E+1|0,1,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](E,1,1,g)|0}else{a[E+2>>0]=0;a[E+1>>0]=0;a[E>>0]=0}a[E+3>>0]=0;B=PH(e[x>>1]|0,e[F>>1]|0,32,0,0,0)|0;if(!B){$=gc(4)|0;c[$>>2]=315016;qd($|0,366936,0)}if(b[F>>1]|0){j=0;do{m=qJ(B,j)|0;h=b[x>>1]|0;if(h<<16>>16){q=h&65535;h=0;while(1){T=c[E>>2]|0;a[m>>0]=T;a[m+1>>0]=T>>8;a[m+2>>0]=T>>16;a[m+3>>0]=T>>24;h=h+1|0;if((h|0)>=(q|0))break;else m=m+4|0}}j=j+1|0}while((j|0)<(e[F>>1]|0))}c[G>>2]=0;A=G+4|0;c[A>>2]=0;o=G+8|0;c[o>>2]=0;a:do if((Z|0)>-1){n=k+40|0;p=w+4|0;s=w+6|0;t=w+8|0;u=w+10|0;h=Z;b:while(1){Hd[(d[W>>0]|d[W+1>>0]<<8|d[W+2>>0]<<16|d[W+3>>0]<<24)&255](g,(c[(c[n>>2]|0)+(h<<2)>>2]|0)+1|0,0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](X,1,1,g)|0;r=d[X>>0]|0;l=(r&1|0)==0;r=r>>>2&7;Hd[(d[W>>0]|d[W+1>>0]<<8|d[W+2>>0]<<16|d[W+3>>0]<<24)&255](g,c[(c[v>>2]|0)+(h<<2)>>2]|0,0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](y,2,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](z,2,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](S,2,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](R,2,1,g)|0;q=b[y>>1]|0;m=b[z>>1]|0;T=b[S>>1]|0;j=b[R>>1]|0;c[w>>2]=r;b[p>>1]=q;b[s>>1]=m;b[t>>1]=T;b[u>>1]=j;j=c[A>>2]|0;if((j|0)==(c[o>>2]|0)){s0(G,w);m=b[z>>1]|0;q=b[y>>1]|0}else{if(!j)j=0;else{c[j+0>>2]=c[w+0>>2];c[j+4>>2]=c[w+4>>2];c[j+8>>2]=c[w+8>>2];j=c[A>>2]|0}c[A>>2]=j+12}do if(((h|0)!=(Z|0)&q<<16>>16==0&m<<16>>16==0?(b[S>>1]|0)==(b[x>>1]|0):0)?(b[R>>1]|0)==(b[F>>1]|0):0){if((r|0)==3)break;else if((r|0)==2)break b;if(l)break a}while(0);q=h+-1|0;if((h|0)>0)h=q;else{h=q;break a}}c[A>>2]=(c[A>>2]|0)+-12;h=h+1|0}else h=Z;while(0);h=(h|0)<0?0:h;c[_>>2]=0;if((Z|0)>=(h|0)){r=0;while(1){m=Z-h|0;l=c[G>>2]|0;y=(Z|0)==(h|0);c:do if(!y){j=c[l+(m*12|0)>>2]|0;if((j|0)==3){j=r;break}else if((j|0)!=2){Y=40;break}o=l+(m*12|0)+10|0;if(!(b[o>>1]|0))j=r;else{p=l+(m*12|0)+6|0;q=l+(m*12|0)+4|0;l=l+(m*12|0)+8|0;n=0;while(1){j=(e[F>>1]|0)-n-(e[p>>1]|0)|0;if((j|0)<1){j=r;break c}j=qJ(B,j+-1|0)|0;if(b[l>>1]|0){m=j+(e[q>>1]<<2)|0;j=0;while(1){T=c[E>>2]|0;a[m>>0]=T;a[m+1>>0]=T>>8;a[m+2>>0]=T>>16;a[m+3>>0]=T>>24;j=j+1|0;if((j|0)>=(e[l>>1]|0))break;else m=m+4|0}}n=n+1|0;if((n|0)>=(e[o>>1]|0)){j=r;break}}}}else Y=40;while(0);if((Y|0)==40){Y=0;v=aT(f,g,h,1,k)|0;if(!v)j=r;else{w=kI(v)|0;d:do if((oI(v)|0)!=0?(C=rI(v)|0,D=pI(v)|0,(C|0)>0):0){j=0;while(1){if(!(a[D+j>>0]|0)){x=1;break d}j=j+1|0;if((j|0)>=(C|0)){x=0;j=r;break}}}else{x=0;j=r}while(0);s=l+(m*12|0)+10|0;e:do if(b[s>>1]|0){t=l+(m*12|0)+6|0;u=l+(m*12|0)+4|0;r=l+(m*12|0)+8|0;m=0;p=0;while(1){q=(e[F>>1]|0)+m-(e[t>>1]|0)|0;if((q|0)<1)break e;q=qJ(B,q+-1|0)|0;o=b[u>>1]|0;m=qJ(v,m+-1+(e[s>>1]|0)|0)|0;o=q+((o&65535)<<2)|0;q=b[r>>1]|0;f:do if(q<<16>>16){if(x)n=0;else{l=m;q=o;m=0;while(1){T=w+(d[l>>0]<<2)|0;T=d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24;a[q>>0]=T;a[q+1>>0]=T>>8;a[q+2>>0]=T>>16;a[q+3>>0]=T>>24;a[q+3>>0]=-1;m=m+1|0;if((m|0)>=(e[r>>1]|0))break f;else{l=l+1|0;q=q+4|0}}}while(1){l=d[m>>0]|0;if((l|0)!=(j|0)){q=w+(l<<2)|0;q=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;a[o>>0]=q;a[o+1>>0]=q>>8;a[o+2>>0]=q>>16;a[o+3>>0]=q>>24;a[o+3>>0]=-1;q=b[r>>1]|0}n=n+1|0;if((n|0)>=(q&65535|0))break;else{m=m+1|0;o=o+4|0}}}while(0);q=p+1|0;if((q|0)<(e[s>>1]|0)){m=~p;p=q}else break}}while(0);do if(y?(jI(9,v,329880,H)|0)!=0:0){if((GK(c[H>>2]|0)|0)!=4)break;c[_>>2]=c[(JK(c[H>>2]|0)|0)>>2]}while(0);RH(v)}}h=h+1|0;if((Z|0)<(h|0))break;else r=j}}t0(9,B,329880,4101,4,1,4,_);h=c[G>>2]|0;if(!h){f=B;i=$;return f|0}j=c[A>>2]|0;if((j|0)!=(h|0))c[A>>2]=j+(~(((j+-12-h|0)>>>0)/12|0)*12|0);nda(h);f=B;i=$;return f|0}Hd[h&255](g,c[q+(Z<<2)>>2]|0,0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](y,2,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](z,2,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](S,2,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](R,2,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](X,1,1,g)|0;h=d[X>>0]|0;q=h&64;B=(q|0)==0;m=h>>>7;do if(!(j&1)){if((m|0)==1){h=2<<(h&7);if((h|0)<3){A=1;break}A=(h|0)<17?4:8;break}if(c[k+4>>2]|0){h=c[k+8>>2]|0;if((h|0)<3)A=1;else A=(h|0)<17?4:8}else A=8}else A=8;while(0);F=PH(e[S>>1]|0,e[R>>1]|0,A,0,0,0)|0;if(!F){$=gc(4)|0;c[$>>2]=315016;qd($|0,366936,0)}t0(9,F,329760,4097,3,1,2,y);t0(9,F,329792,4098,3,1,2,z);a[V>>0]=m^1;t0(9,F,329824,4099,1,1,1,V);a[V>>0]=q>>>6;t0(9,F,329864,4100,1,1,1,V);j=kI(F)|0;g:do if((m|0)==1){h=2<<(d[X>>0]&7);if((h|0)>0){q=0;do{Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](j+(q<<2)+2|0,1,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](j+(q<<2)+1|0,1,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](j+(q<<2)|0,1,1,g)|0;q=q+1|0}while((q|0)<(h|0))}}else{h=k+4|0;if(!(c[h>>2]|0)){h=0;while(1){H=h&255;a[j+(h<<2)+2>>0]=H;a[j+(h<<2)+1>>0]=H;a[j+(h<<2)>>0]=H;h=h+1|0;if((h|0)==256)break g}}m=f+12|0;m=Ed[(d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24)&511](g)|0;Hd[(d[W>>0]|d[W+1>>0]<<8|d[W+2>>0]<<16|d[W+3>>0]<<24)&255](g,c[h>>2]|0,0)|0;h=k+8|0;if((c[h>>2]|0)>0){q=0;do{Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](j+(q<<2)+2|0,1,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](j+(q<<2)+1|0,1,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](j+(q<<2)|0,1,1,g)|0;q=q+1|0}while((q|0)<(c[h>>2]|0))}Hd[(d[W>>0]|d[W+1>>0]<<8|d[W+2>>0]<<16|d[W+3>>0]<<24)&255](g,m,0)|0}while(0);Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](V,1,1,g)|0;h=kda(49232,367160)|0;if(!h)E=0;else{c[h+49212>>2]=0;sfa(h+52|0,0,49156)|0;c[h+49208>>2]=mda(4194304,367160)|0;E=h}EJ(E,d[V>>0]|0);t=8-A|0;C=1<>1]|0)+-1|0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](V,1,1,g)|0;D=E+49212|0;v=E+49220|0;w=E+49216|0;x=E+49224|0;y=E+20|0;z=E+49228|0;p=0;r=t;j=0;q=0;s=0;while(1){h=a[V>>0]|0;if(!(h<<24>>24))break;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;n=h&255;m=c[D>>2]|0;if(m){if((c[v>>2]|0)<(n|0)){oda(m);m=mda(n,367160)|0;c[D>>2]=m;c[v>>2]=n;h=a[V>>0]|0}}else{m=mda(n,367160)|0;c[D>>2]=m;c[v>>2]=n}c[w>>2]=n;c[x>>2]=0;c[z>>2]=8-(c[y>>2]|0);Xd[o&255](m,h&255,1,g)|0;o=p;m=s;h:while(1){i:while(1){do{c[L>>2]=4096;if(!(GJ(E,I,L)|0)){h=o;break h}}while((c[L>>2]|0)<=0);if(B){h=0;n=m}else{h=0;p=l;Y=100;break}while(1){H=l+q|0;a[H>>0]=(d[I+h>>0]&u)<>0];H=(r|0)>0;p=(H&1^1)+q|0;r=H?r-A|0:t;j=j+1|0;if((j|0)<(e[S>>1]|0)){q=p;m=n}else{m=n+1|0;q=e[R>>1]|0;if((q|0)<=(m|0)){q=p;break i}l=qJ(F,q+(-2-n)|0)|0;r=t;j=0;q=0}h=h+1|0;if((h|0)<(c[L>>2]|0))n=m;else continue i}}j:do if((Y|0)==100)while(1){Y=0;H=p+q|0;a[H>>0]=(d[I+h>>0]&u)<>0];H=(r|0)>0;n=(H&1^1)+q|0;r=H?r-A|0:t;j=j+1|0;if((j|0)<(e[S>>1]|0)){l=p;q=n}else{m=(c[303696+(o<<2)>>2]|0)+m|0;l=b[R>>1]|0;if((m|0)>=(l&65535|0)){q=o+1|0;if((q|0)<4){o=q;m=c[303712+(q<<2)>>2]|0}else o=q}q=l&65535;if((q|0)<=(m|0)){l=p;q=n;break j}l=qJ(F,q+~m|0)|0;r=t;j=0;q=0}h=h+1|0;if((h|0)<(c[L>>2]|0)){p=l;Y=100}else continue h}while(0);a[E>>0]=1}Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](V,1,1,g)|0;p=h;s=m}if(!Z){Hd[(d[W>>0]|d[W+1>>0]<<8|d[W+2>>0]<<16|d[W+3>>0]<<24)&255](g,6,0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](K,2,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](J,2,1,g)|0;t0(9,F,329648,1,3,1,2,K);t0(9,F,329680,2,3,1,2,J);h=c[k+4>>2]|0;if(h){Hd[(d[W>>0]|d[W+1>>0]<<8|d[W+2>>0]<<16|d[W+3>>0]<<24)&255](g,h,0)|0;m=k+8|0;h=c[m>>2]|0;if((h|0)>0){j=0;do{Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](M+(j<<2)+2|0,1,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](M+(j<<2)+1|0,1,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](M+(j<<2)|0,1,1,g)|0;a[M+(j<<2)+3>>0]=0;j=j+1|0;h=c[m>>2]|0}while((j|0)<(h|0))}t0(9,F,329712,3,14,h,h<<2,M);h=d[k+12>>0]|0;if((h|0)<(c[m>>2]|0))nI(F,M+(h<<2)|0)|0}c[O>>2]=1;l=k+16|0;m=k+20|0;h=c[l>>2]|0;k:do if((c[m>>2]|0)!=(h|0)){j=0;l:while(1){Hd[(d[W>>0]|d[W+1>>0]<<8|d[W+2>>0]<<16|d[W+3>>0]<<24)&255](g,c[h+(j<<2)>>2]|0,0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](V,1,1,g)|0;do if((a[V>>0]|0)==11){Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](N,11,1,g)|0;if((ffa(N,303728,11)|0)!=0?(ffa(N,303744,11)|0)!=0:0)break;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](V,1,1,g)|0;if((a[V>>0]|0)==3)break l}while(0);j=j+1|0;h=c[l>>2]|0;if(j>>>0>=(c[m>>2]|0)-h>>2>>>0)break k}Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](V,1,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](T,2,1,g)|0;S=b[T>>1]|0;h=S&65535;c[O>>2]=h;if(S<<16>>16)c[O>>2]=h+1}while(0);t0(9,F,329744,4,4,1,4,O);j=k+28|0;l=k+32|0;h=c[j>>2]|0;if((c[l>>2]|0)!=(h|0)){o=Q+1|0;n=Q+8|0;p=Q+4|0;q=0;do{Hd[(d[W>>0]|d[W+1>>0]<<8|d[W+2>>0]<<16|d[W+3>>0]<<24)&255](g,c[h+(q<<2)>>2]|0,0)|0;c[Q+0>>2]=0;c[Q+4>>2]=0;c[Q+8>>2]=0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](V,1,1,g)|0;while(1){h=a[V>>0]|0;if(!(h<<24>>24))break;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](P,h&255,1,g)|0;E2(Q,P,d[V>>0]|0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](V,1,1,g)|0}A2(Q,1,0)|0;c[U>>2]=q;Xea(P,303760,U)|0;h=a[Q>>0]|0;if(!(h&1)){h=(h&255)>>>1;m=o}else{h=c[p>>2]|0;m=c[n>>2]|0}t0(0,F,P,1,2,h,h,m);v2(Q);q=q+1|0;h=c[j>>2]|0}while(q>>>0<(c[l>>2]|0)-h>>2>>>0)}}h=c[(c[k+40>>2]|0)+(Z<<2)>>2]|0;if(h){Hd[(d[W>>0]|d[W+1>>0]<<8|d[W+2>>0]<<16|d[W+3>>0]<<24)&255](g,h+1|0,0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](X,1,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](T,2,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](V,1,1,g)|0;f=d[X>>0]|0;h=f>>>2&7;c[_>>2]=(e[T>>1]|0)*10;j=d[V>>0]|0;if(!((f&1|0)==0|(j|0)>(C|0))){sfa(U|0,-1,C|0)|0;a[U+j>>0]=0;sI(F,U,C)}}else h=1;t0(9,F,329880,4101,4,1,4,_);a[V>>0]=h;t0(9,F,329920,4102,1,1,1,V);if(!E){f=F;i=$;return f|0}h=c[D>>2]|0;if(h)oda(h);h=E+49208|0;j=c[h>>2]|0;if(j){oda(j);c[h>>2]=0}h=E+56|0;j=E+49208|0;do{j=j+-12|0;v2(j)}while((j|0)!=(h|0));nda(E);f=F;i=$;return f|0}function bT(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=i;i=i+304|0;E=Q+293|0;M=Q+292|0;P=Q+24|0;s=Q+8|0;A=Q+22|0;B=Q+20|0;H=Q+16|0;z=Q+18|0;o=Q+14|0;m=Q+12|0;q=Q+28|0;v=Q+4|0;N=Q+32|0;L=Q;O=Q+288|0;if(!l){h=0;i=Q;return h|0}G=YH(g)|0;if(!((G|0)==1|(G|0)==4|(G|0)==8)){Q=gc(4)|0;c[Q>>2]=303616;qd(Q|0,366936,0)}b[A>>1]=0;b[B>>1]=0;b[H>>1]=WH(g)|0;I=XH(g)|0;b[z>>1]=I;if((jI(9,g,329760,s)|0)!=0?(GK(c[s>>2]|0)|0)==3:0)b[A>>1]=b[(JK(c[s>>2]|0)|0)>>1]|0;if((jI(9,g,329792,s)|0)!=0?(GK(c[s>>2]|0)|0)==3:0)b[B>>1]=b[(JK(c[s>>2]|0)|0)>>1]|0;if((jI(9,g,329824,s)|0)!=0?(GK(c[s>>2]|0)|0)==1:0)C=(a[(JK(c[s>>2]|0)|0)>>0]|0)!=0;else C=0;if((jI(9,g,329864,s)|0)!=0?(GK(c[s>>2]|0)|0)==1:0)K=(a[(JK(c[s>>2]|0)|0)>>0]|0)!=0;else K=0;if((jI(9,g,329880,s)|0)!=0?(GK(c[s>>2]|0)|0)==4:0)y=((c[(JK(c[s>>2]|0)|0)>>2]|0)/10|0)&65535;else y=10;if((jI(9,g,329920,s)|0)!=0?(GK(c[s>>2]|0)|0)==1:0)k=d[(JK(c[s>>2]|0)|0)>>0]<<2&28;else k=8;D=kI(g)|0;if((j|0)==0|(j|0)==-1){b[o>>1]=b[H>>1]|0;if((jI(9,g,329648,s)|0)!=0?(GK(c[s>>2]|0)|0)==3:0)b[o>>1]=b[(JK(c[s>>2]|0)|0)>>1]|0;b[m>>1]=b[z>>1]|0;if((jI(9,g,329680,s)|0)!=0?(GK(c[s>>2]|0)|0)==3:0)b[m>>1]=b[(JK(c[s>>2]|0)|0)>>1]|0;if((jI(9,g,329712,s)|0)!=0?(GK(c[s>>2]|0)|0)==14:0){l=HK(c[s>>2]|0)|0;if((l|0)>1)r=JK(c[s>>2]|0)|0;else r=0}else{r=0;l=0}u=f+4|0;Xd[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](o,2,1,h)|0;Xd[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](m,2,1,h)|0;a[E>>0]=112;a[M>>0]=0;p=(r|0)!=0;a:do if(p){a[E>>0]=-16;do if((l|0)>=4){if((l|0)<8){a[E>>0]=-15;j=4;break}if((l|0)<16){a[E>>0]=-14;j=8;break}if((l|0)<32){a[E>>0]=-13;j=16;break}if((l|0)<64){a[E>>0]=-12;j=32;break}if((l|0)<128){a[E>>0]=-11;j=64;break}if((l|0)<256){a[E>>0]=-10;j=128;break}else{a[E>>0]=-9;j=256;break}}else{a[E>>0]=-16;j=2}while(0);if(mI(g,q)|0){n=a[q+2>>0]|0;o=a[q+1>>0]|0;m=a[q>>0]|0;l=0;b:while(1){do if(n<<24>>24==(a[r+(l<<2)+2>>0]|0)){if(o<<24>>24!=(a[r+(l<<2)+1>>0]|0))break;if(m<<24>>24==(a[r+(l<<2)>>0]|0))break b}while(0);l=l+1|0;if((l|0)>=(j|0))break a}a[M>>0]=l}}else{a[E>>0]=G+7&7|112;j=l}while(0);Xd[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](E,1,1,h)|0;Xd[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](M,1,1,h)|0;a[M>>0]=0;Xd[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](M,1,1,h)|0;if(p&(j|0)>0){l=0;do{Xd[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](r+(l<<2)+2|0,1,1,h)|0;Xd[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](r+(l<<2)+1|0,1,1,h)|0;Xd[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](r+(l<<2)|0,1,1,h)|0;l=l+1|0}while((l|0)<(j|0))}if((jI(9,g,329744,s)|0)!=0?(GK(c[s>>2]|0)|0)==4:0){l=c[(JK(c[s>>2]|0)|0)>>2]|0;if((l|0)!=1)t=62}else{l=0;t=62}if((t|0)==62){t=(((l|0)>1)<<31>>31)+l|0;b[P>>1]=(t|0)>65535?-1:t&65535;Xd[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](303656,16,1,h)|0;Xd[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](P,2,1,h)|0;a[M>>0]=0;Xd[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](M,1,1,h)|0}c[v>>2]=0;n=xI(0,g,v)|0;if(n){do if((GK(c[v>>2]|0)|0)==2){l=IK(c[v>>2]|0)|0;j=JK(c[v>>2]|0)|0;l=l+-1|0;Xd[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](303680,2,1,h)|0;if((l|0)>0)while(1){a[M>>0]=(l|0)<255?l&255:-1;Xd[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](M,1,1,h)|0;Xd[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](j,d[M>>0]|0,1,h)|0;m=d[M>>0]|0;l=l-m|0;if((l|0)<=0)break;else j=j+m|0}a[M>>0]=0;Xd[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](M,1,1,h)|0}while((yI(n,v)|0)!=0);zI(n)}}c:do if((oI(g)|0)!=0?(w=rI(g)|0,x=pI(g)|0,(w|0)>0):0){j=0;while(1){if(!(a[x+j>>0]|0)){l=1;break c}j=j+1|0;if((j|0)>=(w|0)){l=0;j=0;break}}}else{l=0;j=0}while(0);J=f+4|0;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](303688,3,1,h)|0;if(l)k=(k&255|1)&255;a[M>>0]=k;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;b[P>>1]=y;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](P,2,1,h)|0;a[M>>0]=j;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;a[M>>0]=0;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;a[M>>0]=44;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](A,2,1,h)|0;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](B,2,1,h)|0;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](H,2,1,h)|0;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](z,2,1,h)|0;if(C)k=0;else k=(G+7&7|128)&255;if(K)k=(k&255|64)&255;a[E>>0]=k;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](E,1,1,h)|0;if(!C?(F=1<>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](D+(k<<2)+2|0,1,1,h)|0;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](D+(k<<2)+1|0,1,1,h)|0;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](D+(k<<2)|0,1,1,h)|0;k=k+1|0}while((k|0)<(F|0))}a[M>>0]=(G|0)==1?2:G&255;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;k=kda(49232,367160)|0;if(!k)E=0;else{c[k+49212>>2]=0;sfa(k+52|0,0,49156)|0;c[k+49208>>2]=mda(4194304,367160)|0;E=k}EJ(E,d[M>>0]|0);B=e[H>>1]|0;y=E+20|0;c[y>>2]=G;c[E+24>>2]=(8-((da(B,G)|0)%8|0)|0)%8|0;B=E+48|0;D=c[B>>2]|0;C=E+44|0;c[C>>2]=c[C>>2]|c[E+8>>2]<>2]=(c[z>>2]|0)+D;D=E+49208|0;k=c[D>>2]|0;if(k)sfa(k|0,-1,4194304)|0;A=E+12|0;c[E+16>>2]=(c[A>>2]|0)+1;f=E+28|0;c[f>>2]=0;c[z>>2]=(c[E+4>>2]|0)+1;x=eI(g)|0;c[L>>2]=255;a[M>>0]=-1;r=I&65535;d:do if(!r){j=N;k=N}else{o=E+49212|0;n=(x|0)>-1?x:-1;p=E+49220|0;s=E+49216|0;t=E+49224|0;u=E+49228|0;v=r+-1|0;j=N;k=N;w=0;l=0;do{q=303696+(w<<2)|0;while(1){m=c[o>>2]|0;do if(!m){m=mda(n,367160)|0;c[o>>2]=m;c[p>>2]=x}else{if((c[p>>2]|0)>=(x|0))break;oda(m);m=mda(n,367160)|0;c[o>>2]=m;c[p>>2]=x}while(0);c[s>>2]=x;c[t>>2]=0;c[u>>2]=8-(c[y>>2]|0);qfa(m|0,qJ(g,v-l|0)|0,x|0)|0;if(FJ(E,k,L)|0)do{k=k+(c[L>>2]|0)|0;m=k-j|0;if((m|0)==255){Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](N,255,1,h)|0;k=N;m=255}else m=255-m|0;c[L>>2]=m}while(FJ(E,k,L)|0);if(K){l=(c[q>>2]|0)+l|0;if((l|0)>=(r|0))break}else l=l+1|0;if((r|0)<=(l|0))break d}w=w+1|0;if((w|0)<4)l=c[303712+(w<<2)>>2]|0}while((r|0)>(l|0))}while(0);c[L>>2]=k-j;k=c[B>>2]|0;j=c[C>>2]|c[f>>2]<>2]=j;n=c[z>>2]|0;k=n+k|0;c[B>>2]=k;if((k|0)>7){l=O;k=0;while(1){m=l+1|0;a[l>>0]=j;j=c[C>>2]>>8;c[C>>2]=j;l=(c[B>>2]|0)+-8|0;c[B>>2]=l;k=k+1|0;if((l|0)>7)l=m;else break}n=c[z>>2]|0}else{m=O;l=k;k=0}j=c[A>>2]<>2]=j;g=l+n|0;c[B>>2]=g;if((g|0)>0)while(1){a[m>>0]=j;j=c[C>>2]>>8;c[C>>2]=j;g=(c[B>>2]|0)+-8|0;c[B>>2]=g;k=k+1|0;if((g|0)<=0)break;else m=m+1|0}b[P>>1]=k;j=c[L>>2]|0;k=j+(k&65535)|0;do if(k>>>0>254){Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](N,j,1,h)|0;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](O,255-j|0,1,h)|0;N=j+1+(e[P>>1]|0)|0;a[M>>0]=N;if(!(N&255))break;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;N=d[M>>0]|0;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](O+((e[P>>1]|0)-N)|0,N,1,h)|0}else{a[M>>0]=k;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](N,j,1,h)|0;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](O,e[P>>1]|0,1,h)|0}while(0);a[M>>0]=0;Xd[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;if(!E){h=1;i=Q;return h|0}k=c[E+49212>>2]|0;if(k)oda(k);k=c[D>>2]|0;if(k){oda(k);c[D>>2]=0}k=E+56|0;j=E+49208|0;do{j=j+-12|0;v2(j)}while((j|0)!=(k|0));nda(E);h=1;i=Q;return h|0}function cT(b,c){b=b|0;c=c|0;var e=0,f=0;f=i;i=i+16|0;e=f;if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](e,6,1,c)|0)){b=0;i=f;return b|0}if(((hfa(e,303608,3)|0)==0?((a[e+3>>0]|0)+-48&255)<10:0)?((a[e+4>>0]|0)+-48&255)<10:0)e=((a[e+5>>0]|0)+-97&255)<26&1;else e=0;b=b+8|0;Hd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](c,-6,1)|0;b=e;i=f;return b|0}function dT(){return 303592}function eT(a){a=a|0;a=a+-1|0;if(a>>>0>=8){a=0;return a|0}a=(-119&255)>>>(a&255)&1;return a|0}function fT(a){a=a|0;return (a|0)==1|0}function gT(){return 333432}function hT(){return 304568}function iT(){return 304560}function jT(){return 0}function kT(b,e,f,h,j){b=b|0;e=e|0;f=f|0;h=h|0;j=j|0;var l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=i;i=i+576|0;L=M;I=M+560|0;H=M+304|0;F=M+12|0;p=M+16|0;J=M+8|0;G=M+300|0;if(!e){L=0;i=M;return L|0}q=h&32768;s=(q|0)==0;q=q>>>15;c[p>>2]=0;a[p+4>>0]=0;n=p+276|0;g[n>>2]=1.0;o=p+280|0;g[o>>2]=1.0;sfa(H|0,0,256)|0;f=0;while(1){j=H+f|0;if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){t=6;break}f=f+1|0;if((a[j>>0]|0)==10)break;if((f|0)>=256){t=6;break}}if((t|0)==6){PI(c[76e3]|0,304152,L);L=0;i=M;return L|0}if((a[H>>0]|0)==35?(r=H+1|0,(a[r>>0]|0)==63):0){c[p>>2]=c[p>>2]|1;j=0;do{f=H+(j+2)|0;h=a[f>>0]|0;if(!(h<<24>>24))break;if(wea(h<<24>>24)|0)break;a[p+j+4>>0]=a[f>>0]|0;j=j+1|0}while(j>>>0<15);a[p+j+4>>0]=0;f=p+20|0;j=0;a:while(1)while(1){sfa(H|0,0,256)|0;l=0;while(1){h=H+l|0;if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](h,1,1,e)|0)){t=20;break a}l=l+1|0;if((a[h>>0]|0)==10)break;if((l|0)>=256){t=20;break a}}E=a[H>>0]|0;if(E<<24>>24==10|E<<24>>24==0)break a;if(!(gfa(H,304272)|0)){j=1;continue a}c[L>>2]=F;if((Oca(H,304448,L)|0)==1){g[n>>2]=+g[F>>2];c[p>>2]=c[p>>2]|4;continue}c[L>>2]=F;if((Oca(H,304464,L)|0)==1){g[o>>2]=+g[F>>2];c[p>>2]=c[p>>2]|8;continue}if(!((a[H>>0]|0)==35&(a[r>>0]|0)==32))continue;c[p>>2]=c[p>>2]|2;wfa(f|0,H|0)|0}if((t|0)==20){PI(c[76e3]|0,304152,L);L=0;i=M;return L|0}if(!j){b=c[76e3]|0;c[L>>2]=304480;PI(b,304192,L);L=0;i=M;return L|0}sfa(H|0,0,256)|0;f=0;while(1){j=H+f|0;if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){t=35;break}f=f+1|0;if((a[j>>0]|0)==10)break;if((f|0)>=256){t=35;break}}if((t|0)==35){PI(c[76e3]|0,304152,L);L=0;i=M;return L|0}c[L>>2]=G;c[L+4>>2]=J;if((Oca(H,304496,L)|0)<2?(c[L>>2]=G,c[L+4>>2]=J,(Oca(H,304512,L)|0)<2):0){b=c[76e3]|0;c[L>>2]=304528;PI(b,304192,L);L=0;i=M;return L|0}j=NH(q,11,c[J>>2]|0,c[G>>2]|0,8,0,0,0)|0;if(!j){M=gc(4)|0;c[M>>2]=315480;qd(M|0,366936,0)}if(!s){L=j;i=M;return L|0}f=c[G>>2]|0;if(!f){L=j;i=M;return L|0}y=I+3|0;z=I+1|0;A=I+2|0;B=H+1|0;C=H+2|0;D=H+3|0;E=F+1|0;x=0;b:while(1){v=qJ(j,f+~x|0)|0;w=c[J>>2]|0;do if((w+-8|0)>>>0>32759){if(w){h=0;do{if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](I,1,4,e)|0)){t=47;break b}l=v+(h*12|0)|0;f=a[y>>0]|0;if(!(f<<24>>24)){u=v+(h*12|0)+4|0;g[k>>2]=0.0;a[u>>0]=a[k>>0];a[u+1>>0]=a[k+1>>0];a[u+2>>0]=a[k+2>>0];a[u+3>>0]=a[k+3>>0];g[k>>2]=0.0;a[l>>0]=a[k>>0];a[l+1>>0]=a[k+1>>0];a[l+2>>0]=a[k+2>>0];a[l+3>>0]=a[k+3>>0];m=0.0}else{m=+Eca(1.0,(f&255)+-136|0);g[k>>2]=m*+(d[I>>0]|0);a[l>>0]=a[k>>0];a[l+1>>0]=a[k+1>>0];a[l+2>>0]=a[k+2>>0];a[l+3>>0]=a[k+3>>0];u=v+(h*12|0)+4|0;g[k>>2]=m*+(d[z>>0]|0);a[u>>0]=a[k>>0];a[u+1>>0]=a[k+1>>0];a[u+2>>0]=a[k+2>>0];a[u+3>>0]=a[k+3>>0];m=m*+(d[A>>0]|0)}u=v+(h*12|0)+8|0;g[k>>2]=m;a[u>>0]=a[k>>0];a[u+1>>0]=a[k+1>>0];a[u+2>>0]=a[k+2>>0];a[u+3>>0]=a[k+3>>0];h=h+1|0}while(h>>>0>>0)}}else{l=w<<2;s=(w|0)>0;t=w<<1;u=w*3|0;if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](H,1,4,e)|0)){t=53;break b}f=a[H>>0]|0;if(f<<24>>24==2&(a[B>>0]|0)==2?(K=d[C>>0]|0,(K&128|0)==0):0){if((d[D>>0]|K<<8|0)!=(w|0)){t=67;break b}f=qea(l)|0;if(!f){t=69;break b}else{o=0;l=f}do{o=o+1|0;q=f+(da(o,w)|0)|0;if(l>>>0>>0){n=q;r=l;while(1){if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](F,1,2,e)|0)){t=76;break b}p=a[F>>0]|0;h=p&255;do if((p&255)>128){p=h+-128|0;if(!p){t=81;break b}if((p|0)>(n-r|0)){t=81;break b}if((p|0)>0){l=p;h=r}else{l=r;break}while(1){l=l+-1|0;a[h>>0]=a[E>>0]|0;if((l|0)<=0)break;else h=h+1|0}l=r+p|0}else{if(!(p<<24>>24)){t=85;break b}if((h|0)>(n-r|0)){t=85;break b}l=r+1|0;a[r>>0]=a[E>>0]|0;p=h+-1|0;if((p|0)<=0)break;if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](l,1,p,e)|0)){t=89;break b}l=r+h|0}while(0);if(l>>>0>>0)r=l;else break}}}while((o|0)<4);if(s){n=v;o=0;while(1){l=a[f+o>>0]|0;a[H>>0]=l;a[B>>0]=a[f+(o+w)>>0]|0;a[C>>0]=a[f+(o+t)>>0]|0;h=a[f+(o+u)>>0]|0;a[D>>0]=h;if(!(h<<24>>24)){v=n+4|0;g[k>>2]=0.0;a[v>>0]=a[k>>0];a[v+1>>0]=a[k+1>>0];a[v+2>>0]=a[k+2>>0];a[v+3>>0]=a[k+3>>0];g[k>>2]=0.0;a[n>>0]=a[k>>0];a[n+1>>0]=a[k+1>>0];a[n+2>>0]=a[k+2>>0];a[n+3>>0]=a[k+3>>0];m=0.0}else{m=+Eca(1.0,(h&255)+-136|0);g[k>>2]=+(l&255|0)*m;a[n>>0]=a[k>>0];a[n+1>>0]=a[k+1>>0];a[n+2>>0]=a[k+2>>0];a[n+3>>0]=a[k+3>>0];v=n+4|0;g[k>>2]=m*+(d[B>>0]|0);a[v>>0]=a[k>>0];a[v+1>>0]=a[k+1>>0];a[v+2>>0]=a[k+2>>0];a[v+3>>0]=a[k+3>>0];m=m*+(d[C>>0]|0)}v=n+8|0;g[k>>2]=m;a[v>>0]=a[k>>0];a[v+1>>0]=a[k+1>>0];a[v+2>>0]=a[k+2>>0];a[v+3>>0]=a[k+3>>0];o=o+1|0;if((o|0)==(w|0))break;else n=n+12|0}}rea(f);break}l=a[D>>0]|0;if(!(l<<24>>24)){u=v+4|0;g[k>>2]=0.0;a[u>>0]=a[k>>0];a[u+1>>0]=a[k+1>>0];a[u+2>>0]=a[k+2>>0];a[u+3>>0]=a[k+3>>0];g[k>>2]=0.0;a[v>>0]=a[k>>0];a[v+1>>0]=a[k+1>>0];a[v+2>>0]=a[k+2>>0];a[v+3>>0]=a[k+3>>0];m=0.0}else{m=+Eca(1.0,(l&255)+-136|0);g[k>>2]=+(f&255|0)*m;a[v>>0]=a[k>>0];a[v+1>>0]=a[k+1>>0];a[v+2>>0]=a[k+2>>0];a[v+3>>0]=a[k+3>>0];u=v+4|0;g[k>>2]=m*+(d[B>>0]|0);a[u>>0]=a[k>>0];a[u+1>>0]=a[k+1>>0];a[u+2>>0]=a[k+2>>0];a[u+3>>0]=a[k+3>>0];m=m*+(d[C>>0]|0)}h=v+8|0;g[k>>2]=m;a[h>>0]=a[k>>0];a[h+1>>0]=a[k+1>>0];a[h+2>>0]=a[k+2>>0];a[h+3>>0]=a[k+3>>0];h=w+-1|0;if(h){n=0;do{if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](I,1,4,e)|0)){t=61;break b}n=n+1|0;l=v+(n*12|0)|0;f=a[y>>0]|0;if(!(f<<24>>24)){w=v+(n*12|0)+4|0;g[k>>2]=0.0;a[w>>0]=a[k>>0];a[w+1>>0]=a[k+1>>0];a[w+2>>0]=a[k+2>>0];a[w+3>>0]=a[k+3>>0];g[k>>2]=0.0;a[l>>0]=a[k>>0];a[l+1>>0]=a[k+1>>0];a[l+2>>0]=a[k+2>>0];a[l+3>>0]=a[k+3>>0];m=0.0}else{m=+Eca(1.0,(f&255)+-136|0);g[k>>2]=m*+(d[I>>0]|0);a[l>>0]=a[k>>0];a[l+1>>0]=a[k+1>>0];a[l+2>>0]=a[k+2>>0];a[l+3>>0]=a[k+3>>0];w=v+(n*12|0)+4|0;g[k>>2]=m*+(d[z>>0]|0);a[w>>0]=a[k>>0];a[w+1>>0]=a[k+1>>0];a[w+2>>0]=a[k+2>>0];a[w+3>>0]=a[k+3>>0];m=m*+(d[A>>0]|0)}w=v+(n*12|0)+8|0;g[k>>2]=m;a[w>>0]=a[k>>0];a[w+1>>0]=a[k+1>>0];a[w+2>>0]=a[k+2>>0];a[w+3>>0]=a[k+3>>0]}while(n>>>0>>0)}}while(0);x=x+1|0;f=c[G>>2]|0;if(x>>>0>=f>>>0){t=98;break}}switch(t|0){case 47:{PI(c[76e3]|0,304152,L);break}case 53:{PI(c[76e3]|0,304152,L);break}case 61:{PI(c[76e3]|0,304152,L);break}case 67:{b=c[76e3]|0;c[L>>2]=304344;PI(b,304192,L);break}case 69:{b=c[76e3]|0;c[L>>2]=304368;PI(b,304224,L);break}case 76:{rea(f);PI(c[76e3]|0,304152,L);break}case 81:{rea(f);b=c[76e3]|0;c[L>>2]=304400;PI(b,304192,L);break}case 85:{rea(f);b=c[76e3]|0;c[L>>2]=304400;PI(b,304192,L);break}case 89:{rea(f);PI(c[76e3]|0,304152,L);break}case 98:{i=M;return j|0}}RH(j);L=0;i=M;return L|0}b=c[76e3]|0;c[L>>2]=304424;PI(b,304192,L);L=0;i=M;return L|0}function lT(b,e,f,j,l,m){b=b|0;e=e|0;f=f|0;j=j|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0.0;S=i;i=i+560|0;R=S;q=S+304|0;O=S+300|0;Q=S+292|0;P=S+296|0;p=S+8|0;if(!e){R=0;i=S;return R|0}m=VH(e)|0;if((m|0)!=11){f=c[76e3]|0;c[R>>2]=m;c[R+4>>2]=11;PI(f,304032,R);R=0;i=S;return R|0}M=WH(e)|0;N=XH(e)|0;sfa(p|0,0,280)|0;n=p+276|0;g[n>>2]=1.0;o=p+280|0;g[o>>2]=0.0;c[p>>2]=12;m=p+20|0;c[R>>2]=OI()|0;Xea(m,304120,R)|0;c[R>>2]=(c[p>>2]&1|0)==0?304240:p+4|0;Xea(q,304256,R)|0;L=b+4|0;I=d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24;J=tfa(q|0)|0;if(!(Xd[I&255](q,1,J,f)|0)){PI(c[76e3]|0,304168,R);R=0;i=S;return R|0}c[R>>2]=m;Xea(q,304264,R)|0;I=d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24;J=tfa(q|0)|0;if(!(Xd[I&255](q,1,J,f)|0)){PI(c[76e3]|0,304168,R);R=0;i=S;return R|0}m=q+0|0;l=304272;j=m+24|0;do{a[m>>0]=a[l>>0]|0;m=m+1|0;l=l+1|0}while((m|0)<(j|0));I=d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24;J=tfa(q|0)|0;if(!(Xd[I&255](q,1,J,f)|0)){PI(c[76e3]|0,304168,R);R=0;i=S;return R|0}m=c[p>>2]|0;do if(m&4){h[k>>3]=+g[n>>2];c[R>>2]=c[k>>2];c[R+4>>2]=c[k+4>>2];Xea(q,304296,R)|0;I=d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24;J=tfa(q|0)|0;if(Xd[I&255](q,1,J,f)|0){m=c[p>>2]|0;break}PI(c[76e3]|0,304168,R);R=0;i=S;return R|0}while(0);if((m&8|0)!=0?(h[k>>3]=+g[o>>2],c[R>>2]=c[k>>2],c[R+4>>2]=c[k+4>>2],Xea(q,304312,R)|0,I=d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24,J=tfa(q|0)|0,(Xd[I&255](q,1,J,f)|0)==0):0){PI(c[76e3]|0,304168,R);R=0;i=S;return R|0}c[R>>2]=N;c[R+4>>2]=M;Xea(q,304328,R)|0;I=d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24;J=tfa(q|0)|0;if(!(Xd[I&255](q,1,J,f)|0)){PI(c[76e3]|0,304168,R);R=0;i=S;return R|0}if(!N){R=1;i=S;return R|0}u=N+-1|0;v=(M+-8|0)>>>0>32759;w=(M|0)==0;x=Q+2|0;y=Q+1|0;z=Q+3|0;A=M<<2;B=P+1|0;C=M>>>8&255;D=P+2|0;E=M&255;F=P+3|0;G=(M|0)>0;H=O+1|0;I=M<<1;J=M*3|0;K=0;a:while(1){o=qJ(e,u-K|0)|0;b:do if(v){if(!w){l=0;do{m=o+(l*12|0)|0;a[k>>0]=a[m>>0];a[k+1>>0]=a[m+1>>0];a[k+2>>0]=a[m+2>>0];a[k+3>>0]=a[m+3>>0];r=+g[k>>2];q=o+(l*12|0)+4|0;a[k>>0]=a[q>>0];a[k+1>>0]=a[q+1>>0];a[k+2>>0]=a[q+2>>0];a[k+3>>0]=a[q+3>>0];T=+g[k>>2];r=T>r?T:r;b=o+(l*12|0)+8|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];T=+g[k>>2];r=T>r?T:r;if(r<1.0e-032){a[x>>0]=0;a[y>>0]=0;a[Q>>0]=0;m=0}else{T=+Iea(r,R)*256.0/r;a[k>>0]=a[m>>0];a[k+1>>0]=a[m+1>>0];a[k+2>>0]=a[m+2>>0];a[k+3>>0]=a[m+3>>0];a[Q>>0]=~~(+g[k>>2]*T);a[k>>0]=a[q>>0];a[k+1>>0]=a[q+1>>0];a[k+2>>0]=a[q+2>>0];a[k+3>>0]=a[q+3>>0];a[y>>0]=~~(T*+g[k>>2]);a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[x>>0]=~~(T*+g[k>>2]);m=(c[R>>2]|0)+128&255}a[z>>0]=m;l=l+1|0;if(!(Xd[(d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24)&255](Q,4,1,f)|0)){l=28;break a}}while(l>>>0>>0)}}else{m=qea(A)|0;if(!m){if(w)break;else l=0;while(1){m=o+(l*12|0)|0;a[k>>0]=a[m>>0];a[k+1>>0]=a[m+1>>0];a[k+2>>0]=a[m+2>>0];a[k+3>>0]=a[m+3>>0];r=+g[k>>2];q=o+(l*12|0)+4|0;a[k>>0]=a[q>>0];a[k+1>>0]=a[q+1>>0];a[k+2>>0]=a[q+2>>0];a[k+3>>0]=a[q+3>>0];T=+g[k>>2];r=T>r?T:r;b=o+(l*12|0)+8|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];T=+g[k>>2];r=T>r?T:r;if(r<1.0e-032){a[x>>0]=0;a[y>>0]=0;a[Q>>0]=0;m=0}else{T=+Iea(r,R)*256.0/r;a[k>>0]=a[m>>0];a[k+1>>0]=a[m+1>>0];a[k+2>>0]=a[m+2>>0];a[k+3>>0]=a[m+3>>0];a[Q>>0]=~~(+g[k>>2]*T);a[k>>0]=a[q>>0];a[k+1>>0]=a[q+1>>0];a[k+2>>0]=a[q+2>>0];a[k+3>>0]=a[q+3>>0];a[y>>0]=~~(T*+g[k>>2]);a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[x>>0]=~~(T*+g[k>>2]);m=(c[R>>2]|0)+128&255}a[z>>0]=m;l=l+1|0;if(!(Xd[(d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24)&255](Q,4,1,f)|0)){l=36;break a}if(l>>>0>=M>>>0)break b}}a[P>>0]=2;a[B>>0]=2;a[D>>0]=C;a[F>>0]=E;if(!(Xd[(d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24)&255](P,4,1,f)|0)){l=39;break a}if(w)t=0;else{n=0;while(1){a[k>>0]=a[o>>0];a[k+1>>0]=a[o+1>>0];a[k+2>>0]=a[o+2>>0];a[k+3>>0]=a[o+3>>0];r=+g[k>>2];q=o+4|0;a[k>>0]=a[q>>0];a[k+1>>0]=a[q+1>>0];a[k+2>>0]=a[q+2>>0];a[k+3>>0]=a[q+3>>0];T=+g[k>>2];r=T>r?T:r;b=o+8|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];T=+g[k>>2];r=T>r?T:r;if(r<1.0e-032){a[D>>0]=0;a[B>>0]=0;a[P>>0]=0;q=0;b=0;l=0;j=0}else{T=+Iea(r,R)*256.0/r;a[k>>0]=a[o>>0];a[k+1>>0]=a[o+1>>0];a[k+2>>0]=a[o+2>>0];a[k+3>>0]=a[o+3>>0];t=~~(+g[k>>2]*T)&255;a[P>>0]=t;a[k>>0]=a[q>>0];a[k+1>>0]=a[q+1>>0];a[k+2>>0]=a[q+2>>0];a[k+3>>0]=a[q+3>>0];l=~~(T*+g[k>>2])&255;a[B>>0]=l;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];j=~~(T*+g[k>>2])&255;a[D>>0]=j;q=(c[R>>2]|0)+128&255;b=t}a[F>>0]=q;a[m+n>>0]=b;a[m+(n+M)>>0]=l;a[m+(n+I)>>0]=j;a[m+(n+J)>>0]=q;n=n+1|0;if((n|0)==(M|0)){t=0;break}else o=o+12|0}}do{s=da(t,M)|0;if(G){q=0;do do if((q|0)<(M|0)){b=q;p=0;while(1){b=b+p|0;l=b+1|0;c:do if((l|0)<(M|0)){n=a[m+(b+s)>>0]|0;o=1;while(1){j=o+1|0;if(n<<24>>24!=(a[m+(l+s)>>0]|0)){j=o;break c}l=j+b|0;if(!((l|0)<(M|0)&(j|0)<127))break;else o=j}}else j=1;while(0);if((j|0)<4&(b|0)<(M|0))p=j;else{l=p;o=j;break}}do if((l|0)>1&(l|0)==(b-q|0)){a[O>>0]=l+128;a[H>>0]=a[m+(q+s)>>0]|0;if(!(Xd[(d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24)&255](O,2,1,f)|0)){l=54;break a}else q=b}else{if((b|0)>(q|0))j=q;else break;while(1){l=b-j|0;l=(l|0)>128?128:l;a[O>>0]=l;if(!(Xd[(d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24)&255](O,1,1,f)|0)){l=57;break a}q=l+j|0;if(!(Xd[(d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24)&255](m+(j+s)|0,l,1,f)|0)){l=59;break a}if((b|0)>(q|0))j=q;else break}}while(0);if((o|0)<=3)break;a[O>>0]=o+128;a[H>>0]=a[m+(b+s)>>0]|0;if(!(Xd[(d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24)&255](O,2,1,f)|0)){l=62;break a}q=q+o|0}while(0);while((q|0)<(M|0))}t=t+1|0}while((t|0)<4);rea(m)}while(0);K=K+1|0;if(K>>>0>=N>>>0){m=1;l=69;break}}if((l|0)==28){PI(c[76e3]|0,304168,R);R=0;i=S;return R|0}else if((l|0)==36){PI(c[76e3]|0,304168,R);R=0;i=S;return R|0}else if((l|0)==39){rea(m);PI(c[76e3]|0,304168,R);R=0;i=S;return R|0}else if((l|0)==54)PI(c[76e3]|0,304168,R);else if((l|0)==57)PI(c[76e3]|0,304168,R);else if((l|0)==59)PI(c[76e3]|0,304168,R);else if((l|0)==62)PI(c[76e3]|0,304168,R);else if((l|0)==69){i=S;return m|0}rea(m);R=0;i=S;return R|0}function mT(a,c){a=a|0;c=c|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+2|0;f=e;b[g>>1]=16163;b[f>>1]=0;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,2,c)|0;a=(ffa(g,f,2)|0)==0&1;i=e;return a|0}function nT(){return 304008}function oT(a){a=a|0;return 0}function pT(a){a=a|0;return (a|0)==11|0}function qT(){return 1}function rT(){return 304760}function sT(){return 304744}function tT(){return 304736}function uT(){return 0}function vT(b,c,e){b=b|0;c=c|0;e=e|0;var f=0;f=qea(6)|0;if(!f){b=0;return b|0}if(!e){a[f>>0]=0;a[f+1>>0]=0;b=f+2|0;a[b>>0]=1;a[b+1>>0]=0;b=f+4|0;a[b>>0]=0;a[b+1>>0]=0;b=f;return b|0}Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](f,1,6,c)|0;if((d[f>>0]|d[f+1>>0]<<8)<<16>>16==0?(b=f+2|0,(d[b>>0]|d[b+1>>0]<<8)<<16>>16==1):0){b=f;return b|0}rea(f);b=0;return b|0}function wT(a,b,c){a=a|0;b=b|0;c=c|0;rea(c);return}function xT(a,b,c){a=a|0;b=b|0;c=c|0;if(!c){a=1;return a|0}a=c+4|0;a=(d[a>>0]|d[a+1>>0]<<8)&65535;return a|0}function yT(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+48|0;n=u+8|0;o=u;m=(h|0)==-1?0:h;l=j&32768;q=l>>>15;if(!g){f=0;i=u;return f|0}if(!k){PI(c[76150]|0,304712,n);f=0;i=u;return f|0}k=k+4|0;t=qea(((d[k>>0]|d[k+1>>0]<<8)&65535)<<4)|0;if(!t){f=0;i=u;return f|0}h=f+8|0;Hd[(d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24)&255](g,6,0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](t,((d[k>>0]|d[k+1>>0]<<8)&65535)<<4,1,g)|0;if((m|0)>=((d[k>>0]|d[k+1>>0]<<8)&65535|0)){rea(t);PI(c[76150]|0,304688,n);f=0;i=u;return f|0}p=t+(m<<4)+12|0;Hd[(d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24)&255](g,d[p>>0]|d[p+1>>0]<<8|d[p+2>>0]<<16|d[p+3>>0]<<24,0)|0;p=n;c[p>>2]=1196314761;c[p+4>>2]=169478669;p=o;c[p>>2]=0;c[p+4>>2]=0;p=f+12|0;p=Ed[(d[p>>0]|d[p+1>>0]<<8|d[p+2>>0]<<16|d[p+3>>0]<<24)&511](g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](o,1,8,g)|0;s=(ffa(n,o,8)|0)==0;Hd[(d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24)&255](g,p,0)|0;do if(!s){Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,40,1,g)|0;r=c[n+4>>2]|0;p=c[n+8>>2]|0;s=(p|0)/2|0;h=n+14|0;m=b[h>>1]|0;k=m&65535;l=Ifa(m&65535|0,0,r|0,0)|0;l=yfa(l|0,H|0,7,0)|0;l=Bfa(l|0,H|0,3)|0;l=l+3&-4;o=OH(q,r,s,k,0,0,0)|0;if(o){if((e[h>>1]|0)<9){h=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;n=kI(o)|0;Xd[h&255](n,m<<16>>16!=0&(m&65535)<9?4<>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24,k=fI(o)|0,n=da(l,s)|0,Xd[q&255](k,n,1,g)|0,(j&1|0)!=0&(m&65535)<32):0){h=MI(o)|0;RH(o);if(!h)h=0;else{n=r+31>>5<<2;o=qea(n)|0;if(!o){RH(h);h=0;break}a:do if((p|0)>1){if((r|0)>0)m=0;else{k=0;while(1){qJ(h,k)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](o,n,1,g)|0;k=k+1|0;if((k|0)>=(s|0))break a}}do{k=qJ(h,m)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](o,n,1,g)|0;l=0;while(1){j=((d[o+(l>>3)>>0]|0)&128>>>(l&7)|0)==0;a[k+3>>0]=j<<31>>31;if(!j){a[k>>0]=(d[k>>0]|0)^255;j=k+1|0;a[j>>0]=(d[j>>0]|0)^255;j=k+2|0;a[j>>0]=(d[j>>0]|0)^255}l=l+1|0;if((l|0)==(r|0))break;else k=k+4|0}m=m+1|0}while((m|0)<(s|0))}while(0);rea(o)}}else h=o}else h=0}else h=tJ(13,f,g,l)|0;while(0);rea(t);f=h;i=u;return f|0}function zT(e,f,g,h,j,k){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0;L=i;i=i+32|0;F=L;J=L+12|0;I=L+8|0;c[J>>2]=0;K=J+4|0;c[K>>2]=0;n=J+8|0;c[n>>2]=0;do if((f|0)!=0&(g|0)!=0&(k|0)!=0){h=WH(f)|0;l=XH(f)|0;if(!((h|0)==(l|0)&(((h+-16|0)>>>0>240|l>>>0<16|l>>>0>256)^1))){m=c[76150]|0;c[F>>2]=h;c[F+4>>2]=l;PI(m,304640,F);m=0;break}c[I>>2]=0;E=k+4|0;a:do if((d[E>>0]|d[E+1>>0]<<8)<<16>>16){m=0;while(1){h=yT(e,g,m,j,k)|0;c[I>>2]=h;if(!h)break;l=c[K>>2]|0;if((l|0)==(c[n>>2]|0))u0(J,I);else{if(!l)h=0;else{c[l>>2]=h;h=c[K>>2]|0}c[K>>2]=h+4}m=m+1|0;if((m|0)>=((d[E>>0]|d[E+1>>0]<<8)&65535|0))break a}L=gc(4)|0;c[L>>2]=315016;qd(L|0,366936,0)}while(0);h=UH(f)|0;c[I>>2]=h;l=c[K>>2]|0;if((l|0)==(c[n>>2]|0))u0(J,I);else{if(!l)h=0;else{c[l>>2]=h;h=c[K>>2]|0}c[K>>2]=h+4}C=(d[E>>0]|d[E+1>>0]<<8)+1<<16>>16;a[E>>0]=C;a[E+1>>0]=C>>8;C=e+8|0;Hd[(d[C>>0]|d[C+1>>0]<<8|d[C+2>>0]<<16|d[C+3>>0]<<24)&255](g,0,0)|0;D=e+4|0;Xd[(d[D>>0]|d[D+1>>0]<<8|d[D+2>>0]<<16|d[D+3>>0]<<24)&255](k,6,1,g)|0;h=d[E>>0]|d[E+1>>0]<<8;l=(h&65535)<<4;B=qea(l)|0;if(!B){L=gc(4)|0;c[L>>2]=315480;qd(L|0,366936,0)}sfa(B|0,0,l|0)|0;if(h<<16>>16){n=0;do{h=c[(c[J>>2]|0)+(n<<2)>>2]|0;l=gI(h)|0;A=c[l+4>>2]|0;a[B+(n<<4)>>0]=(A|0)>255?0:A&255;A=c[l+8>>2]|0;a[B+(n<<4)+1>>0]=(A|0)>255?0:A&255;a[B+(n<<4)+3>>0]=0;A=b[l+12>>1]|0;z=B+(n<<4)+4|0;a[z>>0]=A;a[z+1>>0]=A>>8;l=b[l+14>>1]|0;z=B+(n<<4)+6|0;a[z>>0]=l;a[z+1>>0]=l>>8;l=da(A&65535,l&65535)|0;if(l>>>0>7)l=0;else l=1<>0]=l;A=hI(h)|0;m=WH(h)|0;l=XH(h)|0;l=(A<<2)+40+(da((dI(h)|0)+(m+31>>5<<2)|0,l)|0)|0;m=B+(n<<4)+8|0;a[m>>0]=l;a[m+1>>0]=l>>8;a[m+2>>0]=l>>16;a[m+3>>0]=l>>24;m=c[J>>2]|0;l=(c[K>>2]|0)-m<<2|6;b:do if((n|0)>0){f=0;while(1){y=c[m+(f<<2)>>2]|0;x=hI(y)|0;z=WH(y)|0;A=XH(y)|0;l=l+40+(x<<2)+(da((dI(y)|0)+(z+31>>5<<2)|0,A)|0)|0;f=f+1|0;if((f|0)==(n|0))break b;m=c[J>>2]|0}}while(0);A=B+(n<<4)+12|0;a[A>>0]=l;a[A+1>>0]=l>>8;a[A+2>>0]=l>>16;a[A+3>>0]=l>>24;n=n+1|0}while((n|0)<((d[E>>0]|d[E+1>>0]<<8)&65535|0));c[I>>2]=h}w=e+12|0;x=Ed[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&511](g)|0;Xd[(d[D>>0]|d[D+1>>0]<<8|d[D+2>>0]<<16|d[D+3>>0]<<24)&255](B,((d[E>>0]|d[E+1>>0]<<8)&65535)<<4,1,g)|0;h=Ed[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&511](g)|0;if((d[E>>0]|d[E+1>>0]<<8)<<16>>16){y=F+1|0;z=F+2|0;A=F+3|0;v=0;do{u=c[(c[J>>2]|0)+(v<<2)>>2]|0;c[I>>2]=u;if((a[B+(v<<4)>>0]|0)==0?(a[B+(v<<4)+1>>0]|0)==0:0)wJ(13,u,e,g,0)|0;else{m=gI(u)|0;l=m+8|0;c[l>>2]=c[l>>2]<<1;Xd[(d[D>>0]|d[D+1>>0]<<8|d[D+2>>0]<<16|d[D+3>>0]<<24)&255](m,40,1,g)|0;c[l>>2]=(c[l>>2]|0)/2|0;if((kI(u)|0)!=0?(G=kI(u)|0,(hI(u)|0)!=0):0){f=0;do{a[F>>0]=a[G+(f<<2)>>0]|0;a[y>>0]=a[G+(f<<2)+1>>0]|0;a[z>>0]=a[G+(f<<2)+2>>0]|0;a[A>>0]=a[G+(f<<2)+3>>0]|0;Xd[(d[D>>0]|d[D+1>>0]<<8|d[D+2>>0]<<16|d[D+3>>0]<<24)&255](F,4,1,g)|0;f=f+1|0}while(f>>>0<(hI(u)|0)>>>0)}q=c[m+4>>2]|0;t=c[l>>2]|0;f=b[m+14>>1]|0;p=q+31>>5<<2;r=da(p,t)|0;k=fI(u)|0;s=Ifa(f&65535|0,0,q|0,0)|0;s=yfa(s|0,H|0,7,0)|0;s=Bfa(s|0,H|0,3)|0;s=da(s+3&-4,t)|0;Xd[(d[D>>0]|d[D+1>>0]<<8|d[D+2>>0]<<16|d[D+3>>0]<<24)&255](k,s,1,g)|0;s=qea(r)|0;if(s){c:do if(oI(u)|0){if(f<<16>>16==32){sfa(s|0,0,r|0)|0;if((t|0)<=0)break;if((q|0)>0){l=s;n=0}else{f=0;while(1){qJ(u,f)|0;f=f+1|0;if((f|0)==(t|0))break c}}while(1){f=qJ(u,n)|0;m=0;do{if((a[f+(m<<2)+3>>0]|0)!=-1){k=l+(m>>3)|0;a[k>>0]=d[k>>0]|128>>>(m&7)}m=m+1|0}while((m|0)!=(q|0));n=n+1|0;if((n|0)==(t|0))break c;else l=l+p|0}}if((f&65535)<9){o=pI(u)|0;sfa(s|0,0,r|0)|0;f=YH(u)|0;if((f|0)==8){if((t|0)<=0)break;f=(q|0)>0;m=s;j=0;while(1){l=qJ(u,j)|0;if(f){n=0;do{if((a[o+(d[l+n>>0]|0)>>0]|0)!=-1){k=m+(n>>3)|0;a[k>>0]=d[k>>0]|128>>>(n&7)}n=n+1|0}while((n|0)!=(q|0))}j=j+1|0;if((j|0)==(t|0))break;else m=m+p|0}}else if((f|0)==4){if((t|0)<=0)break;f=(q|0)>0;m=s;j=0;while(1){l=qJ(u,j)|0;if(f){n=0;do{k=1-((n|0)%2|0)<<2&252;if((a[o+((15<>1)>>0])>>>k&255)>>0]|0)!=-1){k=m+(n>>3)|0;a[k>>0]=d[k>>0]|128>>>(n&7)}n=n+1|0}while((n|0)!=(q|0))}j=j+1|0;if((j|0)==(t|0))break;else m=m+p|0}}else if((f|0)==1){if((t|0)<=0)break;if((q|0)>0){n=s;k=0}else{f=0;while(1){qJ(u,f)|0;f=f+1|0;if((f|0)==(t|0))break c}}while(1){l=qJ(u,k)|0;j=0;do{f=j>>3;m=128>>>(j&7);if((a[o+((d[l+f>>0]&m|0)!=0&1)>>0]|0)!=-1){f=n+f|0;a[f>>0]=d[f>>0]|m}j=j+1|0}while((j|0)!=(q|0));k=k+1|0;if((k|0)==(t|0))break;else n=n+p|0}}else break}}else sfa(s|0,0,r|0)|0;while(0);Xd[(d[D>>0]|d[D+1>>0]<<8|d[D+2>>0]<<16|d[D+3>>0]<<24)&255](s,r,1,g)|0;rea(s)}}s=h;h=Ed[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&511](g)|0;t=h-s|0;u=B+(v<<4)+12|0;a[u>>0]=s;a[u+1>>0]=s>>8;a[u+2>>0]=s>>16;a[u+3>>0]=s>>24;u=B+(v<<4)+8|0;a[u>>0]=t;a[u+1>>0]=t>>8;a[u+2>>0]=t>>16;a[u+3>>0]=t>>24;v=v+1|0}while((v|0)<((d[E>>0]|d[E+1>>0]<<8)&65535|0))}G=Ed[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&511](g)|0;Hd[(d[C>>0]|d[C+1>>0]<<8|d[C+2>>0]<<16|d[C+3>>0]<<24)&255](g,x,0)|0;Xd[(d[D>>0]|d[D+1>>0]<<8|d[D+2>>0]<<16|d[D+3>>0]<<24)&255](B,((d[E>>0]|d[E+1>>0]<<8)&65535)<<4,1,g)|0;Hd[(d[C>>0]|d[C+1>>0]<<8|d[C+2>>0]<<16|d[C+3>>0]<<24)&255](g,G,0)|0;rea(B);if(!((d[E>>0]|d[E+1>>0]<<8)<<16>>16))m=1;else{l=0;do{h=c[(c[J>>2]|0)+(l<<2)>>2]|0;RH(h);l=l+1|0}while((l|0)<((d[E>>0]|d[E+1>>0]<<8)&65535|0));c[I>>2]=h;m=1}}else m=0;while(0);h=c[J>>2]|0;if(!h){i=L;return m|0}l=c[K>>2]|0;if((l|0)!=(h|0))c[K>>2]=l+(~((l+-4-h|0)>>>2)<<2);nda(h);i=L;return m|0}function AT(a,c){a=a|0;c=c|0;var e=0,f=0;f=i;i=i+16|0;e=f;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,6,1,c)|0;if(b[e>>1]|0){a=0;a=a&1;i=f;return a|0}if((b[e+2>>1]|0)!=1){a=0;a=a&1;i=f;return a|0}a=(b[e+4>>1]|0)!=0;a=a&1;i=f;return a|0}function BT(){return 304608}function CT(a){a=a|0;a=a+-1|0;if(a>>>0>=32){a=0;return a|0}a=-2139062135>>>a&1;return a|0}function DT(a){a=a|0;return (a|0)==1|0}function ET(){return 1}function FT(){return 304816}function GT(){return 304792}function HT(){return 304784}function IT(){return 0}function JT(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=i;i=i+48|0;I=N+12|0;F=N;E=N+4|0;D=N+8|0;C=N+16|0;K=N+39|0;J=N+36|0;M=N+37|0;L=N+38|0;if(!g){g=0;i=N;return g|0}Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](I,4,1,g)|0;B=c[I>>2]|0;c[I>>2]=Dfa(B|0)|0;if((B|0)!=1297239878){g=0;i=N;return g|0}Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](F,4,1,g)|0;c[F>>2]=Dfa(c[F>>2]|0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](I,4,1,g)|0;B=Dfa(c[I>>2]|0)|0;c[I>>2]=B;if(!((B|0)==1229734477|(B|0)==1346522400)){g=0;i=N;return g|0}B=(c[F>>2]|0)+-4|0;c[F>>2]=B;if(!B){g=0;i=N;return g|0}r=f+12|0;s=f+8|0;t=C+2|0;u=C+4|0;v=C+6|0;w=C+12|0;x=C+16|0;y=C+18|0;A=C+8|0;B=C+10|0;h=0;q=0;k=0;j=0;o=0;z=0;a:while(1){Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](E,4,1,g)|0;c[E>>2]=Dfa(c[E>>2]|0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](D,4,1,g)|0;c[D>>2]=Dfa(c[D>>2]|0)|0;p=Ed[(d[r>>0]|d[r+1>>0]<<8|d[r+2>>0]<<16|d[r+3>>0]<<24)&511](g)|0;p=(c[D>>2]|0)+p|0;l=c[E>>2]|0;do if((l|0)==1129136464){if(!k){k=0;r=61;break a}n=kI(k)|0;if((n|0)!=0?(G=((c[D>>2]|0)>>>0)/3|0,H=hI(k)|0,((G>>>0>>0?G:H)|0)!=0):0){m=~H;l=~G;l=~(m>>>0>l>>>0?m:l);m=0;do{Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n+(m<<2)+2|0,1,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n+(m<<2)+1|0,1,1,g)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n+(m<<2)|0,1,1,g)|0;m=m+1|0}while((m|0)!=(l|0));n=o;m=z}else{n=o;m=z}}else if((l|0)==1112491097){C=q;B=j;A=o;r=18;break a}else if((l|0)==1112361028){if(k)RH(k);Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](C,20,1,g)|0;m=e[C>>1]|0;m=m<<8|m>>>8;b[C>>1]=m;j=e[t>>1]|0;j=j<<8|j>>>8;b[t>>1]=j;n=e[u>>1]|0;b[u>>1]=n<<8|n>>>8;n=e[v>>1]|0;b[v>>1]=n<<8|n>>>8;n=e[w>>1]|0;b[w>>1]=n<<8|n>>>8;n=e[x>>1]|0;b[x>>1]=n<<8|n>>>8;n=e[y>>1]|0;b[y>>1]=n<<8|n>>>8;m=m&65535;j=j&65535;n=b[A>>1]|0;h=d[B>>0]|0;n=((n&65535)>>>8&1)+(n&255)|0;k=n>>>0>8;if(k&(n|0)!=24){k=0;r=61;break a}l=k?24:8;if(k){q=l;k=PH(m,j,l,16711680,65280,255)|0;break}else{q=l;k=PH(m,j,l,0,0,0)|0;break}}else{n=o;m=z}while(0);l=c[D>>2]|0;if(l&1){c[D>>2]=l+1;p=p+1|0}o=d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24;z=p-(Ed[(d[r>>0]|d[r+1>>0]<<8|d[r+2>>0]<<16|d[r+3>>0]<<24)&511](g)|0)|0;Hd[o&255](g,z,1)|0;z=-8-(c[D>>2]|0)+(c[F>>2]|0)|0;c[F>>2]=z;if(!z){r=59;break}else{o=n;z=m}}if((r|0)==18){if(!k){g=0;i=N;return g|0}if((c[I>>2]|0)==1346522400){p=(eI(k)|0)+1&-2;if(!(XH(k)|0)){g=k;i=N;return g|0}o=(p|0)==0;if((h|0)==1)n=0;else{j=0;do{M=qJ(k,(XH(k)|0)+~j|0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](M,p,1,g)|0;j=j+1|0}while(j>>>0<(XH(k)|0)>>>0);i=N;return k|0}do{m=qJ(k,(XH(k)|0)+~n|0)|0;if(!o){h=0;while(1){while(1){Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](K,1,1,g)|0;j=a[K>>0]|0;if(j<<24>>24>-1){l=0;r=26;break}if((j&255)>128){r=30;break}}if((r|0)==26)while(1){Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](J,1,1,g)|0;j=h+1|0;M=m+h|0;a[M>>0]=(d[M>>0]|0)+(d[J>>0]|0);if((l|0)<(d[K>>0]|0)){l=l+1|0;h=j;r=26}else break}else if((r|0)==30){Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](J,1,1,g)|0;l=0;while(1){j=h+1|0;M=m+h|0;a[M>>0]=(d[M>>0]|0)+(d[J>>0]|0);l=l+1|0;if((l|0)>=(257-(d[K>>0]|0)|0))break;else h=j}}if(j>>>0

>>0)h=j;else break}}n=n+1|0}while(n>>>0<(XH(k)|0)>>>0);i=N;return k|0}v=C>>>3;w=(z+15|0)>>>3&536870910;x=da(w,A)|0;y=qea(x)|0;l=fI(k)|0;j=dI(k)|0;if(B){s=(h|0)==0;t=(z|0)==0;u=(A|0)==0;o=l+(da(j,B)|0)|0;q=0;do{m=dI(k)|0;b:do if(s)Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](y,x,1,g)|0;else{h=0;while(1){l=x>>>0>h>>>0;while(1){if(!l)break b;a[M>>0]=0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](M,1,1,g)|0;p=a[M>>0]|0;if(p<<24>>24>-1){r=38;break}if(p<<24>>24!=-128){r=42;break}}if((r|0)==38){p=(p<<24>>24)+1|0;l=p+h|0;if(l>>>0>x>>>0){Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](y+h|0,x-h|0,1,g)|0;h=h+1+(a[M>>0]|0)|0;continue}else{Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](y+h|0,p,1,g)|0;h=l;continue}}else if((r|0)==42){a[L>>0]=0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](L,1,1,g)|0;p=a[M>>0]|0;l=1-p|0;j=l+h|0;if(j>>>0>x>>>0){sfa(y+h|0,a[L>>0]|0,x-h|0)|0;h=h+1-p|0;continue}else{sfa(y+h|0,a[L>>0]|0,l|0)|0;h=j;continue}}}}while(0);if(!t){n=0;do{if(!u){p=n>>>3;l=n&7^7;j=(da(n,v)|0)-m|0;h=0;do{I=((d[y+((da(h,w)|0)+p)>>0]|0)>>>l&1)<<(h&7);K=o+(j+(h>>>3))|0;a[K>>0]=I|d[K>>0];h=h+1|0}while((h|0)!=(A|0))}n=n+1|0}while((n|0)!=(z|0))}if(!((C|0)!=24|t)){p=2-m|0;l=0;do{H=l*3|0;K=o+(H-m)|0;H=o+(p+H)|0;I=a[K>>0]^a[H>>0];a[K>>0]=I;I=a[H>>0]^I;a[H>>0]=I;a[K>>0]=a[K>>0]^I;l=l+1|0}while((l|0)!=(z|0))}o=o+(0-m)|0;q=q+1|0}while((q|0)!=(B|0))}rea(y);g=k;i=N;return g|0}else if((r|0)==59){if(!k){g=0;i=N;return g|0}RH(k);g=0;i=N;return g|0}else if((r|0)==61){i=N;return k|0}return 0}function KT(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;f=i;i=i+16|0;e=f;c[e>>2]=0;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,4,1,b)|0;g=c[e>>2]|0;c[e>>2]=Dfa(g|0)|0;if((g|0)!=1297239878){g=0;i=f;return g|0}Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,4,1,b)|0;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,4,1,b)|0;g=c[e>>2]|0;c[e>>2]=Dfa(g|0)|0;g=((g|0)==1296190537|(g|0)==541934160)&1;i=f;return g|0}function LT(){return 304768}function MT(a){a=a|0;return 0}function NT(a){a=a|0;return 0}function OT(){return 304880}function PT(){return 304856}function QT(){return 304848}function RT(){return 0}function ST(a,b,c){a=a|0;b=b|0;c=c|0;return aJ(a,b,c)|0}function TT(a,b,c){a=a|0;b=b|0;c=c|0;bJ(c);return}function UT(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;m=i;i=i+8272|0;f=m+8258|0;j=m+8256|0;k=m;l=m+8252|0;if(!((e|0)!=0&(h|0)!=0)){k=0;i=m;return k|0}c[l>>2]=0;b[f>>1]=20479;b[j>>1]=0;n=a+12|0;n=Ed[(d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24)&511](e)|0;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](j,1,2,e)|0;a=a+8|0;Hd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,n,0)|0;if(ffa(f,j,2)|0){n=0;i=m;return n|0}e=g&32768;g=e>>>15;f=c[h+8>>2]|0;$z(k);j=_z(0)|0;Xz(j,0,0)|0;Yz(j,123,0)|0;Zz(j,124,0)|0;if(!(aA(j,k)|0)){n=gc(4)|0;c[n>>2]=305048;qd(n|0,366936,0)}if(!(bA(f,j,l)|0)){n=gc(4)|0;c[n>>2]=305080;qd(n|0,366936,0)}if(e){f=cJ(c[76206]|0,c[l>>2]|0,g)|0;if(!f){n=gc(4)|0;c[n>>2]=305112;qd(n|0,366936,0)}kA(j);By(c[l>>2]|0);n=f;i=m;return n|0}if(!(cA(j,f,c[l>>2]|0)|0)){n=gc(4)|0;c[n>>2]=305144;qd(n|0,366936,0)}if(!(jA(j,f)|0)){n=gc(4)|0;c[n>>2]=305144;qd(n|0,366936,0)}kA(j);f=cJ(c[76206]|0,c[l>>2]|0,g)|0;if(!f){n=gc(4)|0;c[n>>2]=305112;qd(n|0,366936,0)}By(c[l>>2]|0);n=f;i=m;return n|0}function VT(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0.0,l=0,m=0;m=i;i=i+18704|0;l=m;if(!((d|0)!=0&(e|0)!=0&(j|0)!=0)){d=0;i=m;return d|0}e=c[j+8>>2]|0;eA(l);b=l+4788|0;c[b>>2]=0;if(!h)k=16.0;else k=+(h&1023|0);g[l+4792>>2]=k;c[b>>2]=1;c[l+20>>2]=1;f=dJ(c[76206]|0,d,l)|0;if(!f){d=0;i=m;return d|0}a[l+18690>>0]=(c[f+16>>2]|0)==3&1;j=dA(0)|0;Xz(j,0,0)|0;Yz(j,123,0)|0;Zz(j,124,0)|0;fA(j,l,f)|0;if(!(gA(j,f,e)|0)){d=gc(4)|0;c[d>>2]=304992;qd(d|0,366936,0)}b=(hA(j,e)|0)!=0;if(b)b=(iA(j,e)|0)!=0&1;else b=b&1;if(!b){d=gc(4)|0;c[d>>2]=304992;qd(d|0,366936,0)}kA(j);By(f);d=1;i=m;return d|0}function WT(a,c){a=a|0;c=c|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+2|0;f=e;b[g>>1]=20479;b[f>>1]=0;h=a+12|0;h=Ed[(d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24)&511](c)|0;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,2,c)|0;a=a+8|0;Hd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](c,h,0)|0;a=(ffa(g,f,2)|0)==0&1;i=e;return a|0}function XT(){return 304832}function YT(a){a=a|0;return ((a&-17|0)==8|(a|0)==32)&1|0}function ZT(a){a=a|0;a=a+-1|0;if(a>>>0>=10){a=0;return a|0}a=771>>>(a&1023)&1;return a|0}function _T(){return 304944}function $T(){return 304920}function aU(){return 304912}function bU(){return 0}function cU(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function dU(a,b,c){a=a|0;b=b|0;c=c|0;return}function eU(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;g=i;i=i+16|0;h=g+8|0;e=g;j=h;c[j>>2]=1196313227;c[j+4>>2]=169478669;j=e;c[j>>2]=0;c[j+4>>2]=0;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,1,8,b)|0;if(ffa(h,e,8)|0){j=0;i=g;return j|0}j=oJ(c[76222]|0,a,b,8,f)|0;i=g;return j|0}function fU(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;return pJ(c[76222]|0,a,b,d,f)|0}function gU(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;f=e;h=g;c[h>>2]=1196313227;c[h+4>>2]=169478669;h=f;c[h>>2]=0;c[h+4>>2]=0;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,8,b)|0;a=(ffa(g,f,8)|0)==0&1;i=e;return a|0}function hU(){return 304896} -function gw(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;o=p;h=p+22|0;l=p+20|0;if(!(c[d+500>>2]|0)){g=f+0|0;h=216416;j=g+54|0;do{a[g>>0]=a[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(j|0));o=0;i=p;return o|0}n=d+84|0;g=e[n>>1]|0;switch(g|0){case 16:case 8:case 4:case 2:case 1:break;default:{c[o>>2]=g;Xea(f,216472,o)|0;o=0;i=p;return o|0}}m=d+98|0;j=(e[m>>1]|0)-(e[d+156>>1]|0)|0;c[o>>2]=h;do if(!(sv(d,262,o)|0))if((j|0)==1){b[h>>1]=1;g=1;break}else if((j|0)==3){b[h>>1]=2;g=2;break}else{c[o>>2]=348088;Xea(f,216528,o)|0;o=0;i=p;return o|0}else g=b[h>>1]|0;while(0);k=g&65535;if((k|0)==2){if((j|0)>=3){o=1;i=p;return o|0}c[o>>2]=216696;c[o+4>>2]=j;Xea(f,216648,o)|0;o=0;i=p;return o|0}else if((k|0)==8){h=b[m>>1]|0;g=b[n>>1]|0;if(h<<16>>16==3&g<<16>>16==8){o=1;i=p;return o|0}c[o>>2]=216632;c[o+4>>2]=h&65535;c[o+8>>2]=217032;c[o+12>>2]=g&65535;Xea(f,216976,o)|0;o=0;i=p;return o|0}else if((k|0)==5){c[o>>2]=l;Yu(d,332,o)|0;g=b[l>>1]|0;if(g<<16>>16!=1){c[o>>2]=216768;c[o+4>>2]=g&65535;Xea(f,216712,o)|0;o=0;i=p;return o|0}g=b[m>>1]|0;if((g&65535)>=4){o=1;i=p;return o|0}c[o>>2]=216632;c[o+4>>2]=g&65535;Xea(f,216712,o)|0;o=0;i=p;return o|0}else if((k|0)==32844){if((b[d+88>>1]|0)==-30860){o=1;i=p;return o|0}c[o>>2]=348048;c[o+4>>2]=34676;Xea(f,216776,o)|0;o=0;i=p;return o|0}else if((k|0)==6){o=1;i=p;return o|0}else if((k|0)==32845){if((b[d+88>>1]&-2)<<16>>16!=-30860){c[o>>2]=348048;c[o+4>>2]=34676;c[o+8>>2]=34677;Xea(f,216816,o)|0;o=0;i=p;return o|0}g=b[d+126>>1]|0;if(g<<16>>16!=1){c[o>>2]=216912;c[o+4>>2]=g&65535;Xea(f,216864,o)|0;o=0;i=p;return o|0}g=b[m>>1]|0;if(g<<16>>16==3){o=1;i=p;return o|0}c[o>>2]=216632;c[o+4>>2]=g&65535;Xea(f,216936,o)|0;o=0;i=p;return o|0}else if((k|0)==3|(k|0)==1|(k|0)==0){if((b[d+126>>1]|0)!=1){o=1;i=p;return o|0}h=b[m>>1]|0;if(h<<16>>16==1){o=1;i=p;return o|0}g=b[n>>1]|0;if((g&65535)>=8){o=1;i=p;return o|0}c[o>>2]=348088;c[o+4>>2]=k;c[o+8>>2]=216632;c[o+12>>2]=h&65535;c[o+16>>2]=g&65535;Xea(f,216552,o)|0;o=0;i=p;return o|0}else{c[o>>2]=348088;c[o+4>>2]=k;Xea(f,216936,o)|0;o=0;i=p;return o|0}return 0}function hw(a){a=a|0;var b=0,d=0;b=a+56|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}b=a+60|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}b=a+64|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}d=a+68|0;b=c[d>>2]|0;if(b){$J(b);c[d>>2]=0}b=a+72|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}b=a+76|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}b=a+80|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}b=a+36|0;d=c[b>>2]|0;if(!d)return;$J(d);d=a+40|0;$J(c[d>>2]|0);a=a+44|0;$J(c[a>>2]|0);c[a>>2]=0;c[d>>2]=0;c[b>>2]=0;return}function iw(d,f,h,j){d=d|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0;H=i;i=i+64|0;D=H;B=H+44|0;C=H+20|0;x=H+60|0;y=H+58|0;m=H+48|0;k=H+62|0;v=H+54|0;l=H+52|0;q=H+40|0;p=H+36|0;o=H+32|0;n=H+56|0;c[d+84>>2]=0;c[d+88>>2]=0;E=d+36|0;c[E>>2]=0;F=d+40|0;c[F>>2]=0;G=d+44|0;c[G>>2]=0;b[d+30>>1]=4;c[d>>2]=f;c[d+4>>2]=h;z=d+24|0;c[D>>2]=z;Yu(f,258,D)|0;h=e[z>>1]|0;a:do switch(h|0){case 16:case 8:case 4:case 2:case 1:{A=d+12|0;c[A>>2]=0;w=d+26|0;c[D>>2]=w;Yu(f,277,D)|0;c[D>>2]=k;c[D+4>>2]=m;Yu(f,338,D)|0;do if(b[k>>1]|0){h=e[c[m>>2]>>1]|0;if((h|0)==2|(h|0)==1){c[A>>2]=h;break}else if(h)break;if((e[w>>1]|0)>3)c[A>>2]=1}while(0);u=d+32|0;c[D>>2]=u;if(!(sv(f,262,D)|0))b[u>>1]=0;h=b[k>>1]|0;m=b[w>>1]|0;if(!(h<<16>>16))if(m<<16>>16==4)if((b[u>>1]|0)==2){c[A>>2]=1;b[k>>1]=1;m=4;h=1}else{m=4;h=0}else h=0;m=(m&65535)-(h&65535)|0;c[D>>2]=l;Yu(f,259,D)|0;c[D>>2]=v;Yu(f,284,D)|0;c[D>>2]=u;do if(!(sv(f,262,D)|0))if((m|0)==3){b[u>>1]=2;h=2;break}else if((m|0)==1){c[D>>2]=B;sv(f,259,D)|0;k=b[B>>1]|0;if(k<<16>>16==-32765|k<<16>>16==2|k<<16>>16==4|k<<16>>16==3){b[u>>1]=0;h=0;break}else{b[u>>1]=1;h=1;break}}else{c[D>>2]=348088;Xea(j,216528,D)|0;break a}else h=b[u>>1]|0;while(0);h=h&65535;do if((h|0)==32844)if((b[l>>1]|0)==-30860){c[D>>2]=3;rv(f,65560,D)|0;b[u>>1]=1;b[z>>1]=8;break}else{c[D>>2]=348048;c[D+4>>2]=34676;Xea(j,216776,D)|0;break a}else if((h|0)==5){c[D>>2]=n;Yu(f,332,D)|0;h=b[n>>1]|0;if(h<<16>>16!=1){c[D>>2]=216768;c[D+4>>2]=h&65535;Xea(j,216712,D)|0;break a}h=b[w>>1]|0;if((h&65535)<4){c[D>>2]=216632;c[D+4>>2]=h&65535;Xea(j,216712,D)|0;break a}}else if((h|0)==3){c[D>>2]=q;c[D+4>>2]=p;c[D+8>>2]=o;if(!(sv(f,320,D)|0)){h=j+0|0;k=217048;l=h+32|0;do{a[h>>0]=a[k>>0]|0;h=h+1|0;k=k+1|0}while((h|0)<(l|0));break a}h=2<>1];c[E>>2]=_J(h)|0;c[F>>2]=_J(h)|0;n=_J(h)|0;c[G>>2]=n;m=c[E>>2]|0;if((m|0)!=0?!((c[F>>2]|0)==0|(n|0)==0):0){cK(m,c[q>>2]|0,h);cK(c[F>>2]|0,c[p>>2]|0,h);cK(c[G>>2]|0,c[o>>2]|0,h);r=29;break}h=j+0|0;k=217080;l=h+32|0;do{a[h>>0]=a[k>>0]|0;h=h+1|0;k=k+1|0}while((h|0)<(l|0));break a}else if((h|0)==1|(h|0)==0)r=29;else if((h|0)==32845){if((b[l>>1]&-2)<<16>>16!=-30860){c[D>>2]=348048;c[D+4>>2]=34676;c[D+8>>2]=34677;Xea(j,216816,D)|0;break a}h=b[v>>1]|0;if(h<<16>>16==1){c[D>>2]=3;rv(f,65560,D)|0;b[u>>1]=2;b[z>>1]=8;break}c[D>>2]=216912;c[D+4>>2]=h&65535;Xea(j,216864,D)|0;G=0;i=H;return G|0}else if((h|0)==6){if((b[v>>1]|0)==1&(b[l>>1]|0)==7){c[D>>2]=1;rv(f,65538,D)|0;b[u>>1]=2}}else if((h|0)==2){if((m|0)<3){c[D>>2]=216696;c[D+4>>2]=m;Xea(j,216648,D)|0;break a}}else if((h|0)!=8){c[D>>2]=348088;c[D+4>>2]=h;Xea(j,216936,D)|0;break a}while(0);if((((r|0)==29?(b[v>>1]|0)==1:0)?(p=b[w>>1]|0,s=p&65535,p<<16>>16!=1):0)?(t=b[z>>1]|0,(t&65535)<8):0){d=e[u>>1]|0;c[D>>2]=348088;c[D+4>>2]=d;c[D+8>>2]=216632;c[D+12>>2]=s;c[D+16>>2]=t&65535;Xea(j,216552,D)|0;break a}h=d+56|0;m=d+72|0;p=d+76|0;l=d+80|0;c[h+0>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;c[h+24>>2]=0;c[D>>2]=d+16;sv(f,256,D)|0;c[D>>2]=d+20;sv(f,257,D)|0;c[D>>2]=d+28;Yu(f,274,D)|0;if((b[v>>1]|0)==2){f=(e[w>>1]|0)<2;c[d+8>>2]=f&1;if(!f){o=(xw(c[d>>2]|0)|0)!=0;n=d+48|0;c[n>>2]=o?88:87;o=d+52|0;c[o>>2]=0;b:do switch(e[u>>1]|0){case 2:case 1:case 0:{h=e[z>>1]|0;if((h|0)==8){h=c[A>>2]|0;if((h|0)==1){c[o>>2]=1;break b}else if((h|0)==2){if(c[p>>2]|0)Ra(217392,217336,2690,217416);k=_J(65536)|0;c[p>>2]=k;if(!k){Yv(c[(c[d>>2]|0)+628>>2]|0,217416,313360,D);break b}else m=0;while(1){h=0;l=k;while(1){a[l>>0]=(((da(h,m)|0)+127|0)>>>0)/255|0;h=h+1|0;if((h|0)==256)break;else l=l+1|0}m=m+1|0;if((m|0)==256)break;else k=k+256|0}c[o>>2]=2;break b}else{c[o>>2]=3;break b}}else if((h|0)!=16)break b;h=c[A>>2]|0;if((h|0)==1){if(c[l>>2]|0)Ra(217304,217336,2712,217368);h=_J(65536)|0;c[l>>2]=h;if(!h){Yv(c[(c[d>>2]|0)+628>>2]|0,217368,313360,D);break b}else k=0;while(1){a[h>>0]=((k+128|0)>>>0)/257|0;k=k+1|0;if((k|0)==65536)break;else h=h+1|0}c[o>>2]=4;break b}k=(h|0)==2;if(c[l>>2]|0)Ra(217304,217336,2712,217368);h=_J(65536)|0;c[l>>2]=h;if(!h){Yv(c[(c[d>>2]|0)+628>>2]|0,217368,313360,D);h=0}else{m=0;while(1){a[h>>0]=((m+128|0)>>>0)/257|0;m=m+1|0;if((m|0)==65536){h=1;break}else h=h+1|0}}if(!k){if(!h)break b;c[o>>2]=6;break b}if(h){if(c[p>>2]|0)Ra(217392,217336,2690,217416);k=_J(65536)|0;c[p>>2]=k;if(!k){Yv(c[(c[d>>2]|0)+628>>2]|0,217416,313360,D);break b}else m=0;while(1){h=0;l=k;while(1){a[l>>0]=(((da(h,m)|0)+127|0)>>>0)/255|0;h=h+1|0;if((h|0)==256)break;else l=l+1|0}m=m+1|0;if((m|0)==256)break;else k=k+256|0}c[o>>2]=5}break}case 5:{if((b[z>>1]|0)==8?(b[w>>1]|0)==4:0){c[A>>2]=1;c[o>>2]=7}break}case 6:{if((((b[z>>1]|0)==8?(b[w>>1]|0)==3:0)?(fM(d)|0)!=0:0)?(d=c[d>>2]|0,c[D>>2]=B,c[D+4>>2]=C,Yu(d,530,D)|0,(e[B>>1]<<4|e[C>>1]|0)==17):0)c[o>>2]=8;break}default:{}}while(0);if((c[n>>2]|0)!=0?(c[o>>2]|0)!=0:0){G=1;i=H;return G|0}h=j+0|0;k=217112;l=h+28|0;do{a[h>>0]=a[k>>0]|0;h=h+1|0;k=k+1|0}while((h|0)<(l|0));break a}}else c[d+8>>2]=1;r=(xw(c[d>>2]|0)|0)!=0;q=d+48|0;c[q>>2]=r?86:85;r=d+52|0;c[r>>2]=0;c:do switch(e[u>>1]|0){case 5:{if((UL(d)|0)!=0?(b[z>>1]|0)==8:0)if(!(c[h>>2]|0)){c[r>>2]=9;break c}else{c[r>>2]=10;break c}break}case 6:{if(((b[z>>1]|0)==8?(b[w>>1]|0)==3:0)?(fM(d)|0)!=0:0){d=c[d>>2]|0;c[D>>2]=x;c[D+4>>2]=y;Yu(d,530,D)|0;switch(e[x>>1]<<4|e[y>>1]|0){case 66:{c[r>>2]=22;break c}case 65:{c[r>>2]=23;break c}case 34:{c[r>>2]=24;break c}case 33:{c[r>>2]=25;break c}case 18:{c[r>>2]=26;break c}case 17:{c[r>>2]=27;break c}case 68:{c[r>>2]=21;break c}default:break c}}break}case 3:{if(UL(d)|0){h=e[z>>1]|0;if((h|0)==8){c[r>>2]=11;break c}else if((h|0)==2){c[r>>2]=13;break c}else if((h|0)==4){c[r>>2]=12;break c}else if((h|0)==1){c[r>>2]=14;break c}else break c}break}case 1:case 0:{if(UL(d)|0)switch(e[z>>1]|0){case 4:{c[r>>2]=18;break c}case 16:{c[r>>2]=15;break c}case 1:{c[r>>2]=20;break c}case 8:{if((c[A>>2]|0)!=0?(b[w>>1]|0)==2:0){c[r>>2]=16;break c}c[r>>2]=17;break c}case 2:{c[r>>2]=19;break c}default:break c}break}case 8:{if((UL(d)|0)!=0?(b[z>>1]|0)==8:0){if((c[m>>2]|0)==0?(A=_J(18124)|0,c[m>>2]=A,(A|0)==0):0){Yv(c[(c[d>>2]|0)+628>>2]|0,217520,217544,D);h=0}else{A=c[d>>2]|0;c[D>>2]=B;Yu(A,318,D)|0;g[C+4>>2]=100.0;B=c[B>>2]|0;A=B+4|0;g[C>>2]=+g[B>>2]/+g[A>>2]*100.0;I=+g[A>>2];g[C+8>>2]=(1.0-+g[B>>2]-I)/I*100.0;if((bv(c[m>>2]|0,217592,C)|0)<0){Yv(c[(c[d>>2]|0)+628>>2]|0,217520,217680,D);$J(c[m>>2]|0);h=0}else h=28}c[r>>2]=h}break}case 2:{h=e[z>>1]|0;if((h|0)==8){h=c[A>>2]|0;if((h|0)==2){if(c[p>>2]|0)Ra(217392,217336,2690,217416);k=_J(65536)|0;c[p>>2]=k;if(!k){Yv(c[(c[d>>2]|0)+628>>2]|0,217416,313360,D);break c}else m=0;while(1){h=0;l=k;while(1){a[l>>0]=(((da(h,m)|0)+127|0)>>>0)/255|0;h=h+1|0;if((h|0)==256)break;else l=l+1|0}m=m+1|0;if((m|0)==256)break;else k=k+256|0}c[r>>2]=4;break c}else if((h|0)==1){c[r>>2]=3;break c}else{c[r>>2]=5;break c}}else if((h|0)!=16)break c;h=c[A>>2]|0;if((h|0)==1){if(c[l>>2]|0)Ra(217304,217336,2712,217368);h=_J(65536)|0;c[l>>2]=h;if(!h){Yv(c[(c[d>>2]|0)+628>>2]|0,217368,313360,D);break c}else k=0;while(1){a[h>>0]=((k+128|0)>>>0)/257|0;k=k+1|0;if((k|0)==65536)break;else h=h+1|0}c[r>>2]=6;break c}k=(h|0)==2;if(c[l>>2]|0)Ra(217304,217336,2712,217368);h=_J(65536)|0;c[l>>2]=h;if(!h){Yv(c[(c[d>>2]|0)+628>>2]|0,217368,313360,D);h=0}else{m=0;while(1){a[h>>0]=((m+128|0)>>>0)/257|0;m=m+1|0;if((m|0)==65536){h=1;break}else h=h+1|0}}if(!k){if(!h)break c;c[r>>2]=8;break c}if(h){if(c[p>>2]|0)Ra(217392,217336,2690,217416);k=_J(65536)|0;c[p>>2]=k;if(!k){Yv(c[(c[d>>2]|0)+628>>2]|0,217416,313360,D);break c}else m=0;while(1){h=0;l=k;while(1){a[l>>0]=(((da(h,m)|0)+127|0)>>>0)/255|0;h=h+1|0;if((h|0)==256)break;else l=l+1|0}m=m+1|0;if((m|0)==256)break;else k=k+256|0}c[r>>2]=7}break}default:{}}while(0);if((c[q>>2]|0)!=0?(c[r>>2]|0)!=0:0){G=1;i=H;return G|0}h=j+0|0;k=217112;l=h+28|0;do{a[h>>0]=a[k>>0]|0;h=h+1|0;k=k+1|0}while((h|0)<(l|0));break}default:{c[D>>2]=h;Xea(j,216472,D)|0}}while(0);$J(c[E>>2]|0);$J(c[F>>2]|0);$J(c[G>>2]|0);c[G>>2]=0;c[F>>2]=0;c[E>>2]=0;G=0;i=H;return G|0}function jw(a,d,e,f,g,h){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;m=i;i=i+1120|0;k=m;j=m+96|0;l=m+4|0;sfa(j|0,0,1024)|0;if((gw(a,j)|0)!=0?(iw(l,a,h,j)|0)!=0:0){b[l+30>>1]=g;h=c[l+20>>2]|0;j=f+((da(e-h|0,d)|0)<<2)|0;g=c[l+48>>2]|0;do if(g)if(!(c[l+52>>2]|0)){j=c[l>>2]|0;d=c[j+628>>2]|0;Yv(d,vw(j)|0,217168,k);j=0;break}else{j=Xd[g&255](l,j,d,h)|0;break}else{j=c[l>>2]|0;d=c[j+628>>2]|0;Yv(d,vw(j)|0,217144,k);j=0}while(0);hw(l);d=j;i=m;return d|0}f=c[a+628>>2]|0;d=vw(a)|0;c[k>>2]=j;Yv(f,d,234328,k);d=0;i=m;return d|0}function kw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return jw(a,b,c,d,4,e)|0}function lw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;e=f;if((b|0)!=7)Ra(217952,217984,2249,218016);if(!(Ev(a,218032,4)|0)){Yv(c[a+628>>2]|0,218016,218176,e);e=0;i=f;return e|0}b=_J(904)|0;d=a+576|0;c[d>>2]=b;if(!b){Yv(c[a+628>>2]|0,218016,218216,e);e=0;i=f;return e|0}bK(b,0,904);e=c[d>>2]|0;c[e+796>>2]=a;b=a+672|0;c[e+860>>2]=c[b>>2];c[b>>2]=93;b=a+668|0;c[e+864>>2]=c[b>>2];c[b>>2]=94;b=a+676|0;c[e+868>>2]=c[b>>2];c[b>>2]=38;b=e+880|0;c[b>>2]=0;d=e+884|0;c[d>>2]=0;c[e+888>>2]=75;c[e+892>>2]=0;c[e+896>>2]=3;c[e+900>>2]=0;c[a+504>>2]=118;c[a+508>>2]=119;c[a+512>>2]=208;c[a+532>>2]=89;c[a+540>>2]=89;c[a+548>>2]=89;c[a+516>>2]=120;c[a+524>>2]=209;c[a+528>>2]=121;c[a+536>>2]=90;c[a+544>>2]=90;c[a+552>>2]=90;c[a+564>>2]=219;g=a+568|0;c[e+872>>2]=c[g>>2];c[g>>2]=210;g=a+572|0;c[e+876>>2]=c[g>>2];c[g>>2]=39;g=a+12|0;c[g>>2]=c[g>>2]|256;c[e+456>>2]=0;e=a+16|0;if(!((c[e>>2]|0)==0&(c[e+4>>2]|0)==0)){g=1;i=f;return g|0}c[d>>2]=2e3;g=_J(2e3)|0;c[b>>2]=g;bK(g,0,2e3);g=1;i=f;return g|0}function mw(a,c,d){a=+a;c=+c;d=d|0;var e=0.0,f=0;if(c<.016939999535679817){f=MM(a,c)|0;return f|0}d=(d|0)==0;e=(c+-.016939999535679817)*285.7142768952314;if(!d)e=e+ +(Rea()|0)*4.656612875245797e-010+-.5;f=~~e;if((f|0)>162){f=MM(a,c)|0;return f|0}e=+g[220168+(f<<3)>>2];if(e>a){f=MM(a,c)|0;return f|0}e=(a-e)*285.7142768952314;if(!d)e=e+ +(Rea()|0)*4.656612875245797e-010+-.5;d=~~e;if((d|0)<(b[220172+(f<<3)>>1]|0)){f=(b[220174+(f<<3)>>1]|0)+d|0;return f|0}else{f=MM(a,c)|0;return f|0}return 0}function nw(a,c){a=a|0;c=c|0;var d=0.0,e=0,f=0.0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0;e=a>>>14&1023;if((e|0)!=0?(m=+aa(+((+(e|0)+.5)*.010830424696249145+-8.317766166719343)),!(m<=0.0)):0){k=a&16383;if(k>>>0>16288){f=.210526316;d=.473684211}else{e=0;a=163;a:while(1){while(1){if((a-e|0)<=1){a=e;l=9;break a}i=e+a>>1;h=b[220174+(i<<3)>>1]|0;j=k-(h<<16>>16)|0;if((j|0)>0)e=i;else{a=i;i=j;break}}if((i|0)>=0){e=h;break}}if((l|0)==9)e=b[220174+(a<<3)>>1]|0;f=+g[220168+(a<<3)>>2]+(+(k-(e<<16>>16)|0)+.5)*3.5000001080334187e-003;d=(+(a|0)+.5)*3.5000001080334187e-003+.016939999535679817}o=1.0/(f*6.0-d*16.0+12.0);n=f*9.0*o;f=d*4.0*o;g[c>>2]=m*(n/f);g[c+4>>2]=m;g[c+8>>2]=m*((1.0-n-f)/f);return}g[c+8>>2]=0.0;g[c+4>>2]=0.0;g[c>>2]=0.0;return}function ow(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0,f=0.0,h=0.0;e=a+4|0;d=+g[e>>2];c=d;if(!(c>=15.742))if(!(c<=.00024283)){c=(+ba(+c)*1.4426950408889634+12.0)*64.0;if(b){c=c+ +(Rea()|0)*4.656612875245797e-010+-.5;d=+g[e>>2]}e=~~c;c=d}else{e=0;c=d}else{e=1023;c=d}f=+g[a>>2];d=f+c*15.0+ +g[a+8>>2]*3.0;if((e|0)==0|d<=0.0){d=.210526316;f=.473684211;a=mw(d,f,b)|0;b=(a|0)<0;a=b?12266:a;b=e<<14;b=a|b;return b|0}h=f*4.0/d;f=c*9.0/d;a=mw(h,f,b)|0;b=(a|0)<0;a=b?12266:a;b=e<<14;b=a|b;return b|0}function pw(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0,f=0.0,h=0,i=0;e=a+4|0;c=+g[e>>2];do if(!(c>=18371976.0e12))if(!(c<=-18371976.0e12)){if(c>5.4136769e-020){c=(+ba(+c)*1.4426950408889634+64.0)*256.0;if(b)c=c+ +(Rea()|0)*4.656612875245797e-010+-.5;h=~~c;break}if(c<-5.4136769e-020){c=(+ba(+-c)*1.4426950408889634+64.0)*256.0;if(b)c=c+ +(Rea()|0)*4.656612875245797e-010+-.5;h=~~c|-32768}else h=0}else h=65535;else h=32767;while(0);c=+g[a>>2];f=+g[e>>2];d=c+f*15.0+ +g[a+8>>2]*3.0;if(!((h|0)==0|d<=0.0)){c=c*4.0/d;d=f*9.0/d;if(!(c<=0.0))i=13;else{a=0;c=d}}else{c=.210526316;d=.473684211;i=13}if((i|0)==13){c=c*410.0;if(b)c=c+ +(Rea()|0)*4.656612875245797e-010+-.5;a=~~c;c=d}e=a>>>0>255;if(c<=0.0){b=0;i=b>>>0>255;b=i?255:b;i=h<<16;h=a<<8;h=e?65280:h;i=h|i;b=i|b;return b|0}c=c*410.0;if(b)c=c+ +(Rea()|0)*4.656612875245797e-010+-.5;b=~~c;i=b>>>0>255;b=i?255:b;i=h<<16;h=a<<8;h=e?65280:h;i=h|i;b=i|b;return b|0}function qw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;if((b&-2|0)!=34676)Ra(221472,221536,1620,221568);if(!(Ev(a,221584,2)|0)){Yv(c[a+628>>2]|0,221568,221656,e);a=0;i=f;return a|0}d=_J(32)|0;c[a+576>>2]=d;if(!d){b=c[a+628>>2]|0;c[e>>2]=c[a>>2];Yv(b,221568,221704,e);a=0;i=f;return a|0}else{bK(d,0,32);c[d>>2]=-1;c[d+4>>2]=(b|0)==34677&1;c[d+20>>2]=40;c[a+504>>2]=122;c[a+508>>2]=123;c[a+540>>2]=91;c[a+548>>2]=92;c[a+516>>2]=124;c[a+544>>2]=93;c[a+552>>2]=94;c[a+556>>2]=220;c[a+564>>2]=221;e=a+672|0;c[d+24>>2]=c[e>>2];c[e>>2]=95;a=a+668|0;c[d+28>>2]=c[a>>2];c[a>>2]=96;a=1;i=f;return a|0}return 0}function rw(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;if((b|0)!=5)Ra(223160,223192,1101,223224);b=_J(160)|0;c[a+576>>2]=b;if(!b){Yv(c[a+628>>2]|0,223224,223240,d);a=0;i=d;return a|0}else{c[b+124>>2]=0;c[b+104>>2]=0;c[b+152>>2]=0;c[b+80>>2]=c[a+8>>2];c[a+504>>2]=125;c[a+508>>2]=126;c[a+512>>2]=211;c[a+532>>2]=95;c[a+540>>2]=95;c[a+548>>2]=95;c[a+516>>2]=127;c[a+524>>2]=212;c[a+528>>2]=128;c[a+536>>2]=96;c[a+544>>2]=96;c[a+552>>2]=96;c[a+564>>2]=222;Cw(a)|0;a=1;i=d;return a|0}return 0}function sw(a,b){a=a|0;b=b|0;c[a+512>>2]=213;c[a+532>>2]=97;c[a+540>>2]=97;c[a+548>>2]=97;return 1}function tw(b,d){b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;if((d|0)!=6)Ra(224032,224064,424,224096);if(!(Ev(b,224112,7)|0)){Yv(c[b+628>>2]|0,224096,224368,e);e=0;i=f;return e|0}d=_J(5336)|0;if(!d){Yv(c[b+628>>2]|0,224096,224416,e);e=0;i=f;return e|0}else{bK(d,0,5336);c[d>>2]=b;a[d+224>>0]=1;a[d+228>>0]=2;a[d+229>>0]=2;c[e>>2]=2;c[e+4>>2]=2;rv(b,530,e)|0;c[b+504>>2]=129;c[b+508>>2]=130;c[b+512>>2]=214;c[b+652>>2]=41;c[b+532>>2]=98;c[b+540>>2]=98;c[b+548>>2]=98;c[b+516>>2]=131;c[b+524>>2]=215;c[b+528>>2]=132;c[b+536>>2]=99;c[b+544>>2]=99;c[b+552>>2]=99;c[b+564>>2]=223;c[b+576>>2]=d;e=b+672|0;c[d+160>>2]=c[e>>2];c[e>>2]=97;e=b+668|0;c[d+164>>2]=c[e>>2];c[e>>2]=98;e=b+676|0;c[d+168>>2]=c[e>>2];c[e>>2]=42;e=b+12|0;c[e>>2]=c[e>>2]|131072;e=1;i=f;return e|0}return 0}function uw(d,f,g,h,j,k,l,m,n,o){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;y=E+8|0;A=E;p=a[f>>0]|0;q=p<<24>>24;if((q|0)==114)r=(a[f+1>>0]|0)==43?2:0;else if((q|0)==97|(q|0)==119)r=p<<24>>24==119?578:66;else{c[y>>2]=f;Yv(0,228392,228344,y);D=0;i=E;return D|0}p=_J((tfa(d|0)|0)+697|0)|0;if(!p){c[y>>2]=d;Yv(g,228392,228408,y);D=0;i=E;return D|0}bK(p,0,696);C=p+696|0;c[p>>2]=C;wfa(C|0,d|0)|0;C=p+8|0;c[C>>2]=r&2;b[p+448>>1]=-1;D=p+456|0;c[D>>2]=0;c[D+4>>2]=0;c[p+452>>2]=-1;c[p+444>>2]=-1;D=p+628|0;c[D>>2]=g;if(!((h|0)!=0&(j|0)!=0&(k|0)!=0&(l|0)!=0&(m|0)!=0)){Yv(g,228392,228448,y);D=0;i=E;return D|0}v=p+632|0;c[v>>2]=h;t=p+636|0;c[t>>2]=j;s=p+640|0;c[s>>2]=k;c[p+644>>2]=l;c[p+648>>2]=m;w=p+620|0;c[w>>2]=(n|0)==0?99:n;c[p+624>>2]=(o|0)==0?22:o;nv(p);x=p+12|0;q=(r|0)==0;m=q?2049:1;m=(r&576|0)==0?m|32768:m;c[x>>2]=m;g=a[f>>0]|0;a:do if(g<<24>>24){o=(r&64|0)==0;if(q){j=m;q=m;h=m;n=m;l=m;k=f}else{q=m;h=m;j=f;while(1){switch(g<<24>>24|0){case 98:{if(!o){q=q|128;c[x>>2]=q;h=q}break}case 76:{q=q&-4|2;c[x>>2]=q;h=q;break}case 56:{if(!o){q=q|524288;c[x>>2]=q;h=q}break}case 66:{q=q&-4|1;c[x>>2]=q;h=q;break}case 104:{q=h|65536;c[x>>2]=q;h=q;break}case 72:{q=q&-4|2;c[x>>2]=q;h=q;break}default:{}}j=j+1|0;g=a[j>>0]|0;if(!(g<<24>>24))break a}}while(1){do switch(g<<24>>24|0){case 98:{if(o)m=j;else{l=l|128;c[x>>2]=l;m=l;q=l;h=l;n=l}break}case 72:{l=l&-4|2;c[x>>2]=l;m=l;q=l;h=l;n=l;break}case 109:{l=h&-2049;c[x>>2]=l;m=l;q=l;h=l;n=l;break}case 56:{if(o)m=j;else{l=l|524288;c[x>>2]=l;m=l;q=l;h=l;n=l}break}case 66:{l=l&-4|1;c[x>>2]=l;m=l;q=l;h=l;n=l;break}case 99:{l=j&-32769;c[x>>2]=l;m=l;q=l;h=l;n=l;break}case 77:{l=n|2048;c[x>>2]=l;m=l;q=l;h=l;n=l;break}case 67:{l=q|32768;c[x>>2]=l;m=l;q=l;h=l;n=l;break}case 76:{l=l&-4|2;c[x>>2]=l;m=l;q=l;h=l;n=l;break}case 104:{l=j|65536;c[x>>2]=l;m=l;q=l;h=l;n=l;break}default:m=j}while(0);k=k+1|0;g=a[k>>0]|0;if(!(g<<24>>24))break a;else j=m}}while(0);b:do if((r&512|0)==0?(u=p+424|0,(Hd[c[v>>2]&255](c[D>>2]|0,u,8)|0)==8):0){q=b[u>>1]|0;g=q&65535;if(q<<16>>16==18761)g=c[x>>2]|0;else if(q<<16>>16==19789){g=c[x>>2]|128;c[x>>2]=g}else{D=c[D>>2]|0;c[y>>2]=g;c[y+4>>2]=g;Yv(D,d,228552,y);break}q=p+426|0;if(g&128)Yw(q);q=b[q>>1]|0;g=q&65535;if((q&-2)<<16>>16!=42){D=c[D>>2]|0;c[y>>2]=g;c[y+4>>2]=g;Yv(D,d,228600,y);break}do if(q<<16>>16!=42){g=p+432|0;if((Hd[c[v>>2]&255](c[D>>2]|0,g,8)|0)!=8){Yv(c[D>>2]|0,d,228496,y);break b}q=p+428|0;if(c[x>>2]&128){Yw(q);_w(g)}v=b[q>>1]|0;g=v&65535;if(v<<16>>16!=8){D=c[D>>2]|0;c[y>>2]=g;c[y+4>>2]=g;Yv(D,d,228648,y);break b}v=b[p+430>>1]|0;g=v&65535;if(!(v<<16>>16)){b[p+440>>1]=16;g=c[x>>2]|524288;c[x>>2]=g;break}else{D=c[D>>2]|0;c[y>>2]=g;c[y+4>>2]=g;Yv(D,d,228704,y);break b}}else{g=c[x>>2]|0;if(g&128){Zw(p+428|0);g=c[x>>2]|0}b[p+440>>1]=8}while(0);q=g|512;c[x>>2]=q;h=p+588|0;c[h+0>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;h=a[f>>0]|0;if((h|0)==97){if(!(xv(p)|0))break;i=E;return p|0}else if((h|0)!=114)break;if(!(g&524288)){y=p+24|0;c[y>>2]=c[p+428>>2];c[y+4>>2]=0}else{f=p+432|0;d=c[f+4>>2]|0;y=p+24|0;c[y>>2]=c[f>>2];c[y+4>>2]=d}do if(g&2048){if(!(Hd[c[w>>2]&255](c[D>>2]|0,p+612|0,A)|0)){z=c[x>>2]&-2049;c[x>>2]=z;break}D=A;A=c[D>>2]|0;D=c[D+4>>2]|0;c[p+616>>2]=A;if((A|0)==(A|0)&(((A|0)<0)<<31>>31|0)==(D|0)){z=c[x>>2]|0;break}else Ra(228752,228360,449,228392)}else z=q;while(0);if(z&65536){D=p;i=E;return D|0}if(Qv(p)|0){c[p+608>>2]=-1;c[x>>2]=c[x>>2]|16;D=p;i=E;return D|0}}else B=37;while(0);do if((B|0)==37){if(!(c[C>>2]|0)){Yv(c[D>>2]|0,d,228496,y);break}B=c[x>>2]|0;q=B&128;j=p+424|0;b[j>>1]=(q|0)!=0?19789:18761;g=p+426|0;if(!(B&524288)){b[g>>1]=42;c[p+428>>2]=0;if(q)Yw(g);b[p+440>>1]=8}else{b[g>>1]=43;h=p+428|0;b[h>>1]=8;b[p+430>>1]=0;B=p+432|0;c[B>>2]=0;c[B+4>>2]=0;if(q){Yw(g);Yw(h)}b[p+440>>1]=16}Xd[c[s>>2]&255](c[D>>2]|0,0,0,0)|0;B=p+440|0;A=Hd[c[t>>2]&255](c[D>>2]|0,j,e[B>>1]|0)|0;if((A|0)!=(e[B>>1]|0)){Yv(c[D>>2]|0,d,228520,y);break}if((b[j>>1]|0)==19789)c[x>>2]=c[x>>2]|128;if(xv(p)|0){D=p+16|0;c[D>>2]=0;c[D+4>>2]=0;c[p+32>>2]=0;b[p+36>>1]=0;b[p+38>>1]=0;D=p;i=E;return D|0}}while(0);c[C>>2]=0;Zu(p);D=0;i=E;return D|0}function vw(a){a=a|0;return c[a>>2]|0}function ww(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=c[d>>2]|0;c[d>>2]=b;return a|0}function xw(a){a=a|0;return (c[a+12>>2]|0)>>>10&1|0}function yw(a){a=a|0;return b[a+448>>1]|0}function zw(a){a=a|0;return (c[a+12>>2]|0)>>>7&1|0}function Aw(a,b){a=a|0;b=b|0;c[a+532>>2]=100;c[a+540>>2]=100;c[a+548>>2]=100;c[a+524>>2]=216;c[a+528>>2]=133;c[a+536>>2]=101;c[a+544>>2]=102;c[a+552>>2]=102;return 1}function Bw(d,e){d=d|0;e=e|0;var f=0,h=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=i;i=i+16|0;f=u;if((e|0)!=32909)Ra(228936,228968,1366,229e3);if(!(Ev(d,229024,2)|0)){Yv(c[d+628>>2]|0,229e3,229096,f);t=0;i=u;return t|0}t=_J(172)|0;c[d+576>>2]=t;if(!t){Yv(c[d+628>>2]|0,229e3,229144,f);t=0;i=u;return t|0}bK(t,0,172);c[t+108>>2]=0;c[t+132>>2]=-1;c[d+504>>2]=134;c[d+508>>2]=135;c[d+512>>2]=217;c[d+532>>2]=103;c[d+540>>2]=103;c[d+548>>2]=103;c[d+516>>2]=136;c[d+524>>2]=218;c[d+528>>2]=137;c[d+536>>2]=104;c[d+544>>2]=104;c[d+552>>2]=104;c[d+556>>2]=224;c[d+564>>2]=225;n=d+672|0;c[t+140>>2]=c[n>>2];c[n>>2]=100;n=d+668|0;c[t+144>>2]=c[n>>2];c[n>>2]=101;c[t+136>>2]=-1;c[t+128>>2]=0;Cw(d)|0;g[57296]=250.0;g[57298]=148.4131622314453;n=_J(54600)|0;o=_J(32768)|0;p=_J(512)|0;q=_J(8196)|0;r=_J(4098)|0;s=_J(2049)|0;e=(n|0)==0;d=(o|0)==0;f=(p|0)==0;k=(q|0)==0;l=(r|0)==0;m=(s|0)==0;if(e|d|f|k|l|m){if(!e)$J(n);if(!d)$J(o);if(!f)$J(p);if(!k)$J(q);if(!l)$J(r);if(!m)$J(s);t=t+148|0;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t+16>>2]=0;c[t+20>>2]=0;t=1;i=u;return t|0}else e=0;do{g[q+(e<<2)>>2]=+(e|0)*7.326255555493672e-005;e=e+1|0}while((e|0)!=250);e=250;do{g[q+(e<<2)>>2]=+aa(+(+(e|0)*.004))*.006737946999085467;e=e+1|0}while((e|0)!=2048);g[q+8192>>2]=+g[q+8188>>2];m=0;do{j=+g[q+(m<<2)>>2];h=j*65535.0+.5;if(h>65535.0)e=-1;else e=~~h&65535;b[r+(m<<1)>>1]=e;h=j*255.0+.5;if(h>255.0)e=-1;else e=~~h&255;a[s+m>>0]=e;m=m+1|0}while((m|0)!=2049);e=0;d=0;do{j=+(e|0)*7.326255555493672e-005;l=d+1|0;d=j*j>+g[q+(d<<2)>>2]*+g[q+(l<<2)>>2]?l:d;b[n+(e<<1)>>1]=d;e=e+1|0}while((e|0)!=27300);e=0;d=0;do{h=+(e|0)/16383.0;h=h*h;j=+g[q+(d<<2)>>2];while(1){f=d+1|0;v=j;j=+g[q+(f<<2)>>2];if(!(h>v*j))break;else d=f}b[o+(e<<1)>>1]=d;e=e+1|0}while((e|0)!=16384);e=0;d=0;do{h=+(e|0)/255.0;h=h*h;j=+g[q+(d<<2)>>2];while(1){f=d+1|0;v=j;j=+g[q+(f<<2)>>2];if(!(h>v*j))break;else d=f}b[p+(e<<1)>>1]=d;e=e+1|0}while((e|0)!=256);g[57300]=13650.0;c[t+148>>2]=q;c[t+152>>2]=r;c[t+156>>2]=s;c[t+160>>2]=n;c[t+164>>2]=o;c[t+168>>2]=p;t=1;i=u;return t|0}function Cw(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=c[a+576>>2]|0;if(!b)Ra(234152,229736,705,229768);if(!(Ev(a,229792,1)|0)){Yv(c[a+628>>2]|0,229768,229832,d);a=0;i=d;return a|0}else{e=a+672|0;c[b+44>>2]=c[e>>2];c[e>>2]=102;e=a+668|0;c[b+48>>2]=c[e>>2];c[e>>2]=103;e=a+676|0;c[b+52>>2]=c[e>>2];c[e>>2]=43;e=a+508|0;c[b+56>>2]=c[e>>2];c[e>>2]=138;a=a+516|0;c[b+60>>2]=c[a>>2];c[a>>2]=139;c[b>>2]=1;c[b+24>>2]=0;c[b+40>>2]=0;a=1;i=d;return a|0}return 0}function Dw(a){a=a|0;var b=0;b=c[a+576>>2]|0;if(!b)Ra(234152,229736,746,229880);else{c[a+672>>2]=c[b+44>>2];c[a+668>>2]=c[b+48>>2];c[a+676>>2]=c[b+52>>2];c[a+508>>2]=c[b+56>>2];c[a+516>>2]=c[b+60>>2];return 1}return 0}function Ew(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;h=i;i=i+16|0;g=h;if((c[a+8>>2]|0)==1){Yv(c[a+628>>2]|0,c[a>>2]|0,231592,g);a=-1;i=h;return a|0}if(c[a+12>>2]&1024){Yv(c[a+628>>2]|0,c[a>>2]|0,231672,g);a=-1;i=h;return a|0}f=c[a+168>>2]|0;if(f>>>0<=b>>>0){a=c[a+628>>2]|0;c[g>>2]=b;c[g+4>>2]=f;Yv(a,230888,230912,g);a=-1;i=h;return a|0}j=c[a+100>>2]|0;f=c[a+60>>2]|0;j=j>>>0>f>>>0?f:j;g=((f+-1+j|0)>>>0)/(j>>>0)|0;f=f-(da((b>>>0)%(g>>>0)|0,j)|0)|0;f=Tw(a,f>>>0>j>>>0?j:f)|0;if(!f){a=-1;i=h;return a|0}f=(e|0)!=-1&(f|0)>(e|0)?e:f;if(!(Fw(a,b)|0)){a=-1;i=h;return a|0}if((Xd[c[a+540>>2]&255](a,d,f,((b>>>0)/(g>>>0)|0)&65535)|0)<1){a=-1;i=h;return a|0}Ud[c[a+652>>2]&255](a,d,f);a=f;i=h;return a|0}function Fw(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=i;i=i+32|0;l=p;if(!(Rv(a)|0)){a=0;i=p;return a|0}n=a+176|0;f=c[n>>2]|0;if(!f){a=0;i=p;return a|0}o=a+12|0;d=c[o>>2]|0;do if(!(d&131072)){k=f+(b<<3)|0;m=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)<0|(k|0)==0&m>>>0<1){a=c[a+628>>2]|0;o=l;c[o>>2]=m;c[o+4>>2]=k;c[l+8>>2]=b;Yv(a,230952,230968,l);a=0;i=p;return a|0}if((d&2048|0)!=0?((e[a+94>>1]|0|256)&d|0)!=0:0){if((d&512|0)!=0?(g=a+588|0,h=c[g>>2]|0,(h|0)!=0):0){$J(h);c[g>>2]=0;c[a+592>>2]=0;d=c[o>>2]|0}d=d&-513;c[o>>2]=d;h=c[a+616>>2]|0;f=((h|0)<0)<<31>>31;j=(c[a+172>>2]|0)+(b<<3)|0;g=c[j>>2]|0;j=c[j+4>>2]|0;q=xfa(h|0,f|0,m|0,k|0)|0;r=H;if(!(f>>>0>>0|(f|0)==(k|0)&h>>>0>>0|(j>>>0>r>>>0|(j|0)==(r|0)&g>>>0>q>>>0))){c[a+592>>2]=m;c[a+588>>2]=(c[a+612>>2]|0)+g;c[a+596>>2]=0;c[a+600>>2]=m;c[o>>2]=d|8388608;break}r=c[a+628>>2]|0;o=xfa(h|0,f|0,g|0,j|0)|0;c[l>>2]=b;q=l+4|0;c[q>>2]=o;c[q+4>>2]=H;q=l+12|0;c[q>>2]=m;c[q+4>>2]=k;Yv(r,230952,231016,l);c[a+452>>2]=-1;r=0;i=p;return r|0}if(!((m|0)==(m|0)&(((m|0)<0)<<31>>31|0)==(k|0))){Yv(c[a+628>>2]|0,230952,233088,l);r=0;i=p;return r|0}do if((m|0)>(c[a+592>>2]|0)){c[a+452>>2]=-1;if(!(d&512)){r=c[a+628>>2]|0;c[l>>2]=b;Yv(r,230952,231072,l);r=0;i=p;return r|0}if(!(Gw(a,0,m)|0)){r=0;i=p;return r|0}else{d=c[o>>2]|0;break}}while(0);if((d&8388608|0)!=0?(c[a+452>>2]=-1,(Gw(a,0,m)|0)==0):0){r=0;i=p;return r|0}d=a+588|0;if((TN(a,b,c[d>>2]|0,m,230952)|0)!=(m|0)){r=0;i=p;return r|0}c[a+596>>2]=0;c[a+600>>2]=m;if(!((e[a+94>>1]|0|256)&c[o>>2]))gx(c[d>>2]|0,m)}while(0);if(!(Rv(a)|0)){r=0;i=p;return r|0}if(!(c[n>>2]|0)){r=0;i=p;return r|0}d=c[o>>2]|0;do if(!(d&32))if(!(Ed[c[a+508>>2]&511](a)|0)){r=0;i=p;return r|0}else{d=c[o>>2]|32;c[o>>2]=d;break}while(0);c[a+452>>2]=b;f=c[a+164>>2]|0;c[a+444>>2]=da(c[a+100>>2]|0,(b>>>0)%(f>>>0)|0)|0;c[o>>2]=d&-1048577;if(!(d&131072)){c[a+604>>2]=c[a+588>>2];d=c[(c[n>>2]|0)+(b<<3)>>2]|0}else{c[a+604>>2]=0;d=0}c[a+608>>2]=d;r=Pd[c[a+512>>2]&511](a,((b>>>0)/(f>>>0)|0)&65535)|0;i=p;return r|0}function Gw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;g=a+12|0;e=c[g>>2]|0;if(e&131072)Ra(231264,231304,918,231336);c[g>>2]=e&-8388609;h=a+588|0;f=c[h>>2]|0;if(f){if(e&512)$J(f);c[h>>2]=0;c[a+592>>2]=0}if(b){c[a+592>>2]=d;c[h>>2]=b;c[g>>2]=c[g>>2]&-513;a=1;i=k;return a|0}e=d+1023&-1024;c[a+592>>2]=e;if(!e){Yv(c[a+628>>2]|0,231336,231360,j);a=0;i=k;return a|0}b=_J(e)|0;c[h>>2]=b;c[g>>2]=c[g>>2]|512;if(b){a=1;i=k;return a|0}g=c[a+628>>2]|0;c[j>>2]=c[a+444>>2];Yv(g,231336,231384,j);c[a+592>>2]=0;a=0;i=k;return a|0}function Hw(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;j=i;i=i+16|0;h=j;if((c[a+8>>2]|0)==1){Yv(c[a+628>>2]|0,c[a>>2]|0,231592,h);f=-1;i=j;return f|0}if(!(c[a+12>>2]&1024)){Yv(c[a+628>>2]|0,c[a>>2]|0,231624,h);f=-1;i=j;return f|0}if(!(jx(a,d,e,f,g)|0)){f=-1;i=j;return f|0}f=Iw(a,ix(a,d,e,f,g)|0,b,-1)|0;i=j;return f|0}function Iw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;f=c[a+496>>2]|0;if((c[a+8>>2]|0)==1){Yv(c[a+628>>2]|0,c[a>>2]|0,231592,h);b=-1;i=j;return b|0}if(!(c[a+12>>2]&1024)){Yv(c[a+628>>2]|0,c[a>>2]|0,231624,h);b=-1;i=j;return b|0}g=c[a+168>>2]|0;if(g>>>0<=b>>>0){a=c[a+628>>2]|0;c[h>>2]=b;c[h+4>>2]=g;Yv(a,231112,231136,h);b=-1;i=j;return b|0}if((e|0)!=-1)f=(f|0)<(e|0)?f:e;if(!(Jw(a,b)|0)){b=-1;i=j;return b|0}if(!(Xd[c[a+548>>2]&255](a,d,f,((b>>>0)/((c[a+164>>2]|0)>>>0)|0)&65535)|0)){b=-1;i=j;return b|0}Ud[c[a+652>>2]&255](a,d,f);b=f;i=j;return b|0}function Jw(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;j=p;if(!(Rv(a)|0)){b=0;i=p;return b|0}n=a+176|0;f=c[n>>2]|0;if(!f){b=0;i=p;return b|0}o=a+12|0;d=c[o>>2]|0;do if(!(d&131072)){k=f+(b<<3)|0;m=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)<0|(k|0)==0&m>>>0<1){a=c[a+628>>2]|0;o=j;c[o>>2]=m;c[o+4>>2]=k;c[j+8>>2]=b;Yv(a,231168,231184,j);b=0;i=p;return b|0}if((d&2048|0)!=0?((e[a+94>>1]|0|256)&d|0)!=0:0){if((d&512|0)!=0?(h=a+588|0,g=c[h>>2]|0,(g|0)!=0):0){$J(g);c[h>>2]=0;c[a+592>>2]=0;d=c[o>>2]|0}d=d&-513;c[o>>2]=d;f=c[a+616>>2]|0;g=((f|0)<0)<<31>>31;if(!(g>>>0>>0|(g|0)==(k|0)&f>>>0>>0)?(h=(c[a+172>>2]|0)+(b<<3)|0,l=c[h>>2]|0,h=c[h+4>>2]|0,j=xfa(f|0,g|0,m|0,k|0)|0,k=H,!(h>>>0>k>>>0|(h|0)==(k|0)&l>>>0>j>>>0)):0){c[a+592>>2]=m;c[a+588>>2]=(c[a+612>>2]|0)+l;c[a+596>>2]=0;c[a+600>>2]=m;c[o>>2]=d|8388608;break}c[a+492>>2]=-1;b=0;i=p;return b|0}if(!((m|0)==(m|0)&(((m|0)<0)<<31>>31|0)==(k|0))){Yv(c[a+628>>2]|0,231168,233088,j);b=0;i=p;return b|0}do if((m|0)>(c[a+592>>2]|0)){c[a+492>>2]=-1;if(!(d&512)){a=c[a+628>>2]|0;c[j>>2]=b;Yv(a,231168,231224,j);b=0;i=p;return b|0}if(!(Gw(a,0,m)|0)){b=0;i=p;return b|0}else{d=c[o>>2]|0;break}}while(0);if((d&8388608|0)!=0?(c[a+492>>2]=-1,(Gw(a,0,m)|0)==0):0){b=0;i=p;return b|0}d=a+588|0;if((UN(a,b,c[d>>2]|0,m,231168)|0)!=(m|0)){b=0;i=p;return b|0}c[a+596>>2]=0;c[a+600>>2]=m;if(!((e[a+94>>1]|0|256)&c[o>>2]))gx(c[d>>2]|0,m)}while(0);if(!(Rv(a)|0)){b=0;i=p;return b|0}if(!(c[n>>2]|0)){b=0;i=p;return b|0}d=c[o>>2]|0;do if(!(d&32))if(!(Ed[c[a+508>>2]&511](a)|0)){b=0;i=p;return b|0}else{d=c[o>>2]|32;c[o>>2]=d;break}while(0);c[a+492>>2]=b;f=c[a+56>>2]|0;h=c[a+68>>2]|0;if(f>>>0<(0-h|0)>>>0)f=((f+-1+h|0)>>>0)/(h>>>0)|0;else f=0;g=c[a+72>>2]|0;c[a+444>>2]=da(g,(b>>>0)%(f>>>0)|0)|0;f=c[a+60>>2]|0;if(f>>>0<(0-g|0)>>>0)f=((g+-1+f|0)>>>0)/(g>>>0)|0;else f=0;c[a+488>>2]=da((b>>>0)%(f>>>0)|0,h)|0;c[o>>2]=d&-1048577;if(!(d&131072)){c[a+604>>2]=c[a+588>>2];d=c[(c[n>>2]|0)+(b<<3)>>2]|0}else{c[a+604>>2]=0;d=0}c[a+608>>2]=d;b=Pd[c[a+512>>2]&511](a,((b>>>0)/((c[a+164>>2]|0)>>>0)|0)&65535)|0;i=p;return b|0}function Kw(a,b,c){a=a|0;b=b|0;c=c|0;return}function Lw(a,b,c){a=a|0;b=b|0;c=c|0;if(!(c&1)){$w(b,(c|0)/2|0);return}else Ra(231432,231304,1051,231448)}function Mw(a,b,c){a=a|0;b=b|0;c=c|0;if(!((c|0)%3|0)){ax(b,(c|0)/3|0);return}else Ra(231472,231304,1059,231488)}function Nw(a,b,c){a=a|0;b=b|0;c=c|0;if(!(c&3)){bx(b,(c|0)/4|0);return}else Ra(231512,231304,1067,231528)}function Ow(a,b,c){a=a|0;b=b|0;c=c|0;if(!(c&7)){ex(b,(c|0)/8|0);return}else Ra(231552,231304,1075,231568)}function Pw(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;d=(d>>>0)/((c[a+100>>2]|0)>>>0)|0;if((b[a+126>>1]|0)!=2){h=d;i=j;return h|0}f=e&65535;g=b[a+98>>1]|0;if((g&65535)>(e&65535)){h=(da(c[a+164>>2]|0,f)|0)+d|0;i=j;return h|0}else{a=c[a+628>>2]|0;c[h>>2]=f;c[h+4>>2]=g&65535;Yv(a,232128,233272,h);h=0;i=j;return h|0}return 0}function Qw(a){a=a|0;var d=0,f=0;d=c[a+100>>2]|0;if((d|0)!=-1){f=c[a+60>>2]|0;if(f>>>0<(0-d|0)>>>0)d=((d+-1+f|0)>>>0)/(d>>>0)|0;else d=0}else d=1;if((b[a+126>>1]|0)!=2){a=d;return a|0}a=Tu(a,d,e[a+98>>1]|0,232152)|0;return a|0}function Rw(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;h=m;f=m+8|0;if((d|0)==-1)l=c[a+60>>2]|0;else l=d;if(((b[a+126>>1]|0)==1?(b[a+90>>1]|0)==6:0)?(c[a+12>>2]&16384|0)==0:0){if((b[a+98>>1]|0)!=3){Yv(c[a+628>>2]|0,232176,232200,h);j=0;l=0;H=j;i=m;return l|0}d=f+2|0;c[h>>2]=f;c[h+4>>2]=d;Yu(a,530,h)|0;f=b[f>>1]|0;if(f<<16>>16==4|f<<16>>16==2|f<<16>>16==1){d=b[d>>1]|0;if(d<<16>>16==4|d<<16>>16==2|d<<16>>16==1){f=f&65535;g=d&65535;k=(da(g,f)|0)+2|0;d=c[a+56>>2]|0;if(d>>>0<(0-f|0)>>>0){h=((f+-1+d|0)>>>0)/(f>>>0)|0;j=0}else{h=0;j=0}if(l>>>0<(0-g|0)>>>0){d=((l+-1+g|0)>>>0)/(g>>>0)|0;f=0}else{d=0;f=0}g=Uu(a,h,j,k&65535,0,232176)|0;k=H;j=a+84|0;l=Uu(a,g,k,e[j>>1]|0,0,232176)|0;j=Uu(a,g,k,e[j>>1]|0,0,232176)|0;j=Bfa(j|0,H|0,3)|0;l=yfa(j|0,H|0,((l&7|0)!=0|0!=0)&1|0,0)|0;l=Uu(a,l,H,d,f,232176)|0;j=H;H=j;i=m;return l|0}}else d=b[d>>1]|0;j=c[a+628>>2]|0;c[h>>2]=f&65535;c[h+4>>2]=d&65535;Yv(j,232176,233128,h);j=0;l=0;H=j;i=m;return l|0}j=Sw(a)|0;l=Uu(a,l,0,j,H,232176)|0;j=H;H=j;i=m;return l|0}function Sw(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k;f=k+8|0;if((b[a+126>>1]|0)!=1){a=Uu(a,c[a+56>>2]|0,0,e[a+84>>1]|0,0,232272)|0;a=yfa(a|0,H|0,7,0)|0;a=Bfa(a|0,H|0,3)|0;j=H;H=j;i=k;return a|0}d=b[a+98>>1]|0;if(d<<16>>16==3?(b[a+90>>1]|0)==6:0)if(!(c[a+12>>2]&16384)){j=f+2|0;c[g>>2]=f;c[g+4>>2]=j;Yu(a,530,g)|0;d=b[f>>1]|0;if(d<<16>>16==4|d<<16>>16==2|d<<16>>16==1?(h=b[j>>1]|0,h<<16>>16==4|h<<16>>16==2|h<<16>>16==1):0){f=d&65535;g=(da(h&65535,f)|0)+2|0;d=c[a+56>>2]|0;if(d>>>0<(0-f|0)>>>0){d=((f+-1+d|0)>>>0)/(f>>>0)|0;f=0}else{d=0;f=0}g=Uu(a,d,f,g&65535,0,232272)|0;a=Uu(a,g,H,e[a+84>>1]|0,0,232272)|0;a=yfa(a|0,H|0,7,0)|0;a=Bfa(a|0,H|0,3)|0;a=Jfa(a|0,H|0,e[j>>1]|0,0)|0;j=H;H=j;i=k;return a|0}Yv(c[a+628>>2]|0,232272,232296,g);j=0;a=0;H=j;i=k;return a|0}else d=3;j=Uu(a,c[a+56>>2]|0,0,d&65535,0,232272)|0;a=Uu(a,j,H,e[a+84>>1]|0,0,232272)|0;a=yfa(a|0,H|0,7,0)|0;a=Bfa(a|0,H|0,3)|0;j=H;H=j;i=k;return a|0}function Tw(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;b=Rw(a,b)|0;if((b|0)==(b|0)&(((b|0)<0)<<31>>31|0)==(H|0)){a=b;i=d;return a|0}Yv(c[a+628>>2]|0,232240,233088,d);a=0;i=d;return a|0}function Uw(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=c[a+100>>2]|0;e=c[a+60>>2]|0;b=Rw(a,b>>>0>e>>>0?e:b)|0;if((b|0)==(b|0)&(((b|0)<0)<<31>>31|0)==(H|0)){e=b;i=d;return e|0}Yv(c[a+628>>2]|0,232256,233088,d);e=0;i=d;return e|0}function Vw(a,b){a=a|0;b=b|0;return Pd[c[a+568>>2]&511](a,b)|0}function Ww(a,b){a=a|0;b=b|0;var c=0;if((b|0)>=1){a=b;return a|0}c=Sw(a)|0;a=H;b=(c|0)==0&(a|0)==0;a=Jfa(8192,0,(b?1:c)|0,(b?0:a)|0)|0;a=(a|0)==0&(H|0)==0?1:a;return a|0}function Xw(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=Sw(a)|0;if((b|0)==(b|0)&(((b|0)<0)<<31>>31|0)==(H|0)){a=b;i=d;return a|0}Yv(c[a+628>>2]|0,232328,232352,d);a=0;i=d;return a|0}function Yw(b){b=b|0;var c=0,d=0;d=b+1|0;c=a[d>>0]|0;a[d>>0]=a[b>>0]|0;a[b>>0]=c;return}function Zw(b){b=b|0;var c=0,d=0;c=b+3|0;d=a[c>>0]|0;a[c>>0]=a[b>>0]|0;a[b>>0]=d;d=b+2|0;c=a[d>>0]|0;b=b+1|0;a[d>>0]=a[b>>0]|0;a[b>>0]=c;return}function _w(b){b=b|0;var c=0,d=0,e=0;c=b+7|0;d=a[c>>0]|0;a[c>>0]=a[b>>0]|0;a[b>>0]=d;d=b+6|0;c=a[d>>0]|0;e=b+1|0;a[d>>0]=a[e>>0]|0;a[e>>0]=c;e=b+5|0;c=a[e>>0]|0;d=b+2|0;a[e>>0]=a[d>>0]|0;a[d>>0]=c;d=b+4|0;c=a[d>>0]|0;b=b+3|0;a[d>>0]=a[b>>0]|0;a[b>>0]=c;return}function $w(b,c){b=b|0;c=c|0;var d=0,e=0;if((c|0)<=0)return;while(1){c=c+-1|0;e=b+1|0;d=a[e>>0]|0;a[e>>0]=a[b>>0]|0;a[b>>0]=d;if((c|0)<=0)break;else b=b+2|0}return}function ax(b,c){b=b|0;c=c|0;var d=0,e=0;if((c|0)<=0)return;while(1){c=c+-1|0;e=b+2|0;d=a[e>>0]|0;a[e>>0]=a[b>>0]|0;a[b>>0]=d;if((c|0)<=0)break;else b=b+3|0}return}function bx(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;if((c|0)<=0)return;while(1){c=c+-1|0;e=b+3|0;f=a[e>>0]|0;a[e>>0]=a[b>>0]|0;a[b>>0]=f;f=b+2|0;e=a[f>>0]|0;d=b+1|0;a[f>>0]=a[d>>0]|0;a[d>>0]=e;if((c|0)<=0)break;else b=b+4|0}return}function cx(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;if((c|0)<=0)return;while(1){c=c+-1|0;e=b+7|0;f=a[e>>0]|0;a[e>>0]=a[b>>0]|0;a[b>>0]=f;f=b+6|0;e=a[f>>0]|0;d=b+1|0;a[f>>0]=a[d>>0]|0;a[d>>0]=e;d=b+5|0;e=a[d>>0]|0;f=b+2|0;a[d>>0]=a[f>>0]|0;a[f>>0]=e;f=b+4|0;e=a[f>>0]|0;d=b+3|0;a[f>>0]=a[d>>0]|0;a[d>>0]=e;if((c|0)<=0)break;else b=b+8|0}return}function dx(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;if((c|0)<=0)return;while(1){c=c+-1|0;e=b+3|0;f=a[e>>0]|0;a[e>>0]=a[b>>0]|0;a[b>>0]=f;f=b+2|0;e=a[f>>0]|0;d=b+1|0;a[f>>0]=a[d>>0]|0;a[d>>0]=e;if((c|0)<=0)break;else b=b+4|0}return}function ex(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;if((c|0)<=0)return;while(1){c=c+-1|0;e=b+7|0;f=a[e>>0]|0;a[e>>0]=a[b>>0]|0;a[b>>0]=f;f=b+6|0;e=a[f>>0]|0;d=b+1|0;a[f>>0]=a[d>>0]|0;a[d>>0]=e;d=b+5|0;e=a[d>>0]|0;f=b+2|0;a[d>>0]=a[f>>0]|0;a[f>>0]=e;f=b+4|0;e=a[f>>0]|0;d=b+3|0;a[f>>0]=a[d>>0]|0;a[d>>0]=e;if((c|0)<=0)break;else b=b+8|0}return}function fx(a){a=a|0;return ((a|0)!=0?264912:232384)|0}function gx(b,c){b=b|0;c=c|0;var e=0,f=0,g=0,h=0,i=0;if((c|0)>8){g=c+-9&-8;h=g+8|0;e=b;f=c;while(1){a[e>>0]=a[264912+(d[e>>0]|0)>>0]|0;i=e+1|0;a[i>>0]=a[264912+(d[i>>0]|0)>>0]|0;i=e+2|0;a[i>>0]=a[264912+(d[i>>0]|0)>>0]|0;i=e+3|0;a[i>>0]=a[264912+(d[i>>0]|0)>>0]|0;i=e+4|0;a[i>>0]=a[264912+(d[i>>0]|0)>>0]|0;i=e+5|0;a[i>>0]=a[264912+(d[i>>0]|0)>>0]|0;i=e+6|0;a[i>>0]=a[264912+(d[i>>0]|0)>>0]|0;i=e+7|0;a[i>>0]=a[264912+(d[i>>0]|0)>>0]|0;f=f+-8|0;if((f|0)<=8)break;else e=e+8|0}c=c+-8-g|0;b=b+h|0}if((c|0)<=0)return;while(1){c=c+-1|0;a[b>>0]=a[264912+(d[b>>0]|0)>>0]|0;if((c|0)<=0)break;else b=b+1|0}return}function hx(a,b){a=a|0;b=b|0;c[a+508>>2]=140;c[a+532>>2]=105;c[a+540>>2]=105;return 1}function ix(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=c[a+68>>2]|0;i=c[a+72>>2]|0;j=c[a+76>>2]|0;m=c[a+64>>2]|0;n=(m|0)==1?0:f;if((h|0)==-1)h=c[a+56>>2]|0;if((i|0)==-1)i=c[a+60>>2]|0;l=(j|0)==-1?m:j;if(!((h|0)!=0&(i|0)!=0&(l|0)!=0)){e=1;return e|0}f=c[a+56>>2]|0;if(f>>>0<(0-h|0)>>>0)k=((h+-1+f|0)>>>0)/(h>>>0)|0;else k=0;f=c[a+60>>2]|0;if(f>>>0<(0-i|0)>>>0)f=((i+-1+f|0)>>>0)/(i>>>0)|0;else f=0;if(m>>>0<(0-l|0)>>>0)j=((l+-1+m|0)>>>0)/(l>>>0)|0;else j=0;f=da(f,k)|0;if((b[a+126>>1]|0)==2){e=((d>>>0)/(h>>>0)|0)+(da((e>>>0)/(i>>>0)|0,k)|0)+(da(((n>>>0)/(l>>>0)|0)+(da(j,g&65535)|0)|0,f)|0)|0;return e|0}else{e=(da((e>>>0)/(i>>>0)|0,k)|0)+(da((n>>>0)/(l>>>0)|0,f)|0)+((d>>>0)/(h>>>0)|0)|0;return e|0}return 0}function jx(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=c[a+56>>2]|0;if(h>>>0<=d>>>0){g=c[a+628>>2]|0;a=c[a>>2]|0;c[j>>2]=d;c[j+4>>2]=h+-1;Yv(g,a,232944,j);j=0;i=k;return j|0}h=c[a+60>>2]|0;if(h>>>0<=e>>>0){g=c[a+628>>2]|0;a=c[a>>2]|0;c[j>>2]=e;c[j+4>>2]=h+-1;Yv(g,a,232976,j);j=0;i=k;return j|0}h=c[a+64>>2]|0;if(h>>>0<=f>>>0){g=c[a+628>>2]|0;a=c[a>>2]|0;c[j>>2]=f;c[j+4>>2]=h+-1;Yv(g,a,233008,j);j=0;i=k;return j|0}if((b[a+126>>1]|0)!=2){j=1;i=k;return j|0}h=b[a+98>>1]|0;if((h&65535)>(g&65535)){j=1;i=k;return j|0}e=c[a+628>>2]|0;a=c[a>>2]|0;c[j>>2]=g&65535;c[j+4>>2]=(h&65535)+-1;Yv(e,a,233272,j);j=0;i=k;return j|0}function kx(a){a=a|0;var d=0,f=0,g=0,h=0;d=c[a+68>>2]|0;f=c[a+72>>2]|0;g=c[a+76>>2]|0;if((d|0)==-1)d=c[a+56>>2]|0;if((f|0)==-1)h=c[a+60>>2]|0;else h=f;if((g|0)==-1)g=c[a+64>>2]|0;if((d|0)==0|(h|0)==0|(g|0)==0)d=0;else{f=c[a+56>>2]|0;if(f>>>0<(0-d|0)>>>0)f=((d+-1+f|0)>>>0)/(d>>>0)|0;else f=0;d=c[a+60>>2]|0;if(d>>>0<(0-h|0)>>>0)d=((h+-1+d|0)>>>0)/(h>>>0)|0;else d=0;f=Tu(a,f,d,233048)|0;d=c[a+64>>2]|0;if(d>>>0<(0-g|0)>>>0)d=((g+-1+d|0)>>>0)/(g>>>0)|0;else d=0;d=Tu(a,f,d,233048)|0}if((b[a+126>>1]|0)!=2){a=d;return a|0}a=Tu(a,d,e[a+98>>1]|0,233048)|0;return a|0}function lx(a){a=a|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;if((c[a+72>>2]|0)!=0?(d=c[a+68>>2]|0,(d|0)!=0):0){f=Uu(a,e[a+84>>1]|0,0,d,0,233072)|0;d=H;if((b[a+126>>1]|0)==1){f=Uu(a,f,d,e[a+98>>1]|0,0,233072)|0;d=H}d=Bfa(f|0,d|0,3)|0;d=yfa(((f&7|0)!=0|0!=0)&1|0,0,d|0,H|0)|0;f=H}else{d=0;f=0}if((d|0)==(d|0)&(((d|0)<0)<<31>>31|0)==(f|0)){a=d;i=h;return a|0}Yv(c[a+628>>2]|0,233072,233088,g);a=0;i=h;return a|0}function mx(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;l=n;j=n+8|0;if(!(c[a+72>>2]|0)){k=0;m=0;H=k;i=n;return m|0}m=a+68|0;f=c[m>>2]|0;if(!f){k=0;m=0;H=k;i=n;return m|0}if(!(c[a+76>>2]|0)){k=0;m=0;H=k;i=n;return m|0}h=a+126|0;if((((b[h>>1]|0)==1?(b[a+90>>1]|0)==6:0)?(b[a+98>>1]|0)==3:0)?(c[a+12>>2]&16384|0)==0:0){f=j+2|0;c[l>>2]=j;c[l+4>>2]=f;Yu(a,530,l)|0;g=b[j>>1]|0;if(g<<16>>16==4|g<<16>>16==2|g<<16>>16==1){f=b[f>>1]|0;if(f<<16>>16==4|f<<16>>16==2|f<<16>>16==1){g=g&65535;k=f&65535;l=(da(k,g)|0)+2|0;f=c[m>>2]|0;if(f>>>0<(0-g|0)>>>0){h=((g+-1+f|0)>>>0)/(g>>>0)|0;j=0}else{h=0;j=0}if(d>>>0<(0-k|0)>>>0){f=((d+-1+k|0)>>>0)/(k>>>0)|0;g=0}else{f=0;g=0}h=Uu(a,h,j,l&65535,0,233112)|0;l=H;k=a+84|0;m=Uu(a,h,l,e[k>>1]|0,0,233112)|0;k=Uu(a,h,l,e[k>>1]|0,0,233112)|0;k=Bfa(k|0,H|0,3)|0;m=yfa(k|0,H|0,((m&7|0)!=0|0!=0)&1|0,0)|0;m=Uu(a,m,H,f,g,233112)|0;k=H;H=k;i=n;return m|0}}else f=b[f>>1]|0;k=c[a+628>>2]|0;c[l>>2]=g&65535;c[l+4>>2]=f&65535;Yv(k,233112,233128,l);k=0;m=0;H=k;i=n;return m|0}g=Uu(a,e[a+84>>1]|0,0,f,0,233072)|0;f=H;if((b[h>>1]|0)==1){g=Uu(a,g,f,e[a+98>>1]|0,0,233072)|0;f=H}m=Bfa(g|0,f|0,3)|0;m=yfa(((g&7|0)!=0|0!=0)&1|0,0,m|0,H|0)|0;m=Uu(a,d,0,m,H,233112)|0;k=H;H=k;i=n;return m|0}function nx(a){a=a|0;a=mx(a,c[a+72>>2]|0)|0;return a|0}function ox(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=mx(a,c[a+72>>2]|0)|0;if((b|0)==(b|0)&(((b|0)<0)<<31>>31|0)==(H|0)){a=b;i=d;return a|0}Yv(c[a+628>>2]|0,233168,233088,d);a=0;i=d;return a|0}function px(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[b>>2]|0;if((a|0)<1){c[b>>2]=256;e=256}else e=a;a=c[d>>2]|0;if((a|0)<1){c[d>>2]=256;a=256;e=c[b>>2]|0}if(e&15){if(e>>>0<4294967280)a=e+15&-16;else a=0;c[b>>2]=a;a=c[d>>2]|0}if(!(a&15))return;if(a>>>0<4294967280)a=a+15&-16;else a=0;c[d>>2]=a;return}function qx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g;c[f>>2]=e;e=c[78070]|0;if(e)Ud[e&255](b,d,f);e=c[58296]|0;if(!e){i=g;return}Yd[e&63](a,b,d,f);i=g;return}function rx(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;k=o;n=a+12|0;g=c[n>>2]|0;do if(!(g&64))if(!(sx(a,0,233192)|0)){a=-1;i=o;return a|0}else{g=c[n>>2]|0;break}while(0);if(!((g&16|0)!=0?(c[a+588>>2]|0)!=0:0))l=6;do if((l|0)==6)if(!(tx(a,0,-1)|0)){a=-1;i=o;return a|0}else{g=c[n>>2]|0;break}while(0);c[n>>2]=g|1048576;j=a+60|0;g=(b[a+126>>1]|0)==2;do if((c[j>>2]|0)>>>0>e>>>0)if(g){g=f&65535;h=b[a+98>>1]|0;if((h&65535)>(f&65535)){m=da(c[a+164>>2]|0,g)|0;g=0;m=((e>>>0)/((c[a+100>>2]|0)>>>0)|0)+m|0;break}a=c[a+628>>2]|0;c[k>>2]=g;c[k+4>>2]=h&65535;Yv(a,233192,233272,k);a=-1;i=o;return a|0}else{g=0;l=16}else{if(!g){c[j>>2]=e+1;g=1;l=16;break}Yv(c[a+628>>2]|0,233192,233216,k);a=-1;i=o;return a|0}while(0);if((l|0)==16)m=(e>>>0)/((c[a+100>>2]|0)>>>0)|0;if(m>>>0>=(c[a+168>>2]|0)>>>0?(XN(a,233192)|0)==0:0){a=-1;i=o;return a|0}h=a+452|0;do if((m|0)!=(c[h>>2]|0)){if(!(fw(a)|0)){a=-1;i=o;return a|0}c[h>>2]=m;k=a+164|0;h=c[k>>2]|0;if(m>>>0>=h>>>0&(g|0)!=0){g=c[j>>2]|0;j=c[a+100>>2]|0;if(g>>>0<(0-j|0)>>>0)g=((g+-1+j|0)>>>0)/(j>>>0)|0;else g=0;c[k>>2]=g}else{g=h;j=c[a+100>>2]|0}h=a+444|0;c[h>>2]=da(j,(m>>>0)%(g>>>0)|0)|0;do if(!(c[n>>2]&32))if(!(Ed[c[a+516>>2]&511](a)|0)){a=-1;i=o;return a|0}else{c[n>>2]=c[n>>2]|32;break}while(0);c[a+608>>2]=0;c[a+604>>2]=c[a+588>>2];g=(c[a+176>>2]|0)+(m<<3)|0;l=g;if(!((c[l>>2]|0)==0&(c[l+4>>2]|0)==0)){l=g;c[l>>2]=0;c[l+4>>2]=0;l=a+456|0;c[l>>2]=0;c[l+4>>2]=0}if(!(Pd[c[a+524>>2]&511](a,f)|0)){a=-1;i=o;return a|0}else{c[n>>2]=c[n>>2]|4096;break}}else h=a+444|0;while(0);g=c[h>>2]|0;do if((g|0)!=(e|0)){if(g>>>0>e>>>0){g=da(c[a+100>>2]|0,(m>>>0)%((c[a+164>>2]|0)>>>0)|0)|0;c[h>>2]=g;c[a+604>>2]=c[a+588>>2]}if(!(Pd[c[a+560>>2]&511](a,e-g|0)|0)){a=-1;i=o;return a|0}else{c[h>>2]=e;break}}while(0);n=a+580|0;Ud[c[a+652>>2]&255](a,d,c[n>>2]|0);a=Xd[c[a+536>>2]&255](a,d,c[n>>2]|0,f)|0;c[h>>2]=e+1;i=o;return a|0}function sx(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(!(c[a+8>>2]|0)){Yv(c[a+628>>2]|0,e,233312,g);g=0;i=h;return g|0}f=a+12|0;if(((c[f>>2]|0)>>>10&1|0)!=(d|0)){Yv(c[a+628>>2]|0,e,(d|0)!=0?233344:233384,g);g=0;i=h;return g|0}Rv(a)|0;d=c[a+40>>2]|0;if(!(d&2)){Yv(c[a+628>>2]|0,e,233432,g);g=0;i=h;return g|0}d=(d&1048576|0)!=0;if((b[a+98>>1]|0)==1){if(!d)b[a+126>>1]=1}else if(!d){Yv(c[a+628>>2]|0,e,233480,g);g=0;i=h;return g|0}if((c[a+172>>2]|0)==0?(ux(a)|0)==0:0){c[a+168>>2]=0;a=c[a+628>>2]|0;c[g>>2]=(c[f>>2]&1024|0)!=0?233560:233568;Yv(a,e,233536,g);g=0;i=h;return g|0}if(c[f>>2]&1024){g=ox(a)|0;c[a+496>>2]=g;if(!g){g=0;i=h;return g|0}}else c[a+496>>2]=-1;g=Xw(a)|0;c[a+580>>2]=g;if(!g){g=0;i=h;return g|0}c[f>>2]=c[f>>2]|64;g=1;i=h;return g|0}function tx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k;j=a+588|0;e=c[j>>2]|0;if(e){f=a+12|0;if(c[f>>2]&512){$J(e);c[f>>2]=c[f>>2]&-513}c[j>>2]=0}if((d|0)!=-1)if(!b)h=11;else{g=a+12|0;e=c[g>>2]&-513;c[g>>2]=e}else{if(!(c[a+12>>2]&1024))d=Uw(a)|0;else d=c[a+496>>2]|0;d=(d|0)<8192?8192:d;h=11}do if((h|0)==11){b=_J(d)|0;if(b){g=a+12|0;e=c[g>>2]|512;c[g>>2]=e;break}Yv(c[a+628>>2]|0,233576,233600,g);j=0;i=k;return j|0}while(0);c[j>>2]=b;c[a+592>>2]=d;c[a+608>>2]=0;c[a+604>>2]=b;c[a+12>>2]=e|16;j=1;i=k;return j|0}function ux(a){a=a|0;var d=0,f=0,g=0,h=0,i=0;g=a+40|0;d=c[g>>2]|0;if(!(c[a+12>>2]&1024)){if((d&131072|0)!=0?(c[a+60>>2]|0)==0:0)d=e[a+98>>1]|0;else d=Qw(a)|0;c[a+164>>2]=d}else{if((d&4|0)!=0?(c[a+60>>2]|0)==0:0)d=e[a+98>>1]|0;else d=kx(a)|0;c[a+164>>2]=d}f=a+168|0;c[f>>2]=d;if((b[a+126>>1]|0)==2)c[a+164>>2]=(d>>>0)/((e[a+98>>1]|0)>>>0)|0;i=a+172|0;c[i>>2]=_J(d<<3)|0;h=_J(c[f>>2]<<3)|0;d=a+176|0;c[d>>2]=h;a=c[i>>2]|0;if((a|0)==0|(h|0)==0){i=0;return i|0}bK(a,0,c[f>>2]<<3);bK(c[d>>2]|0,0,c[f>>2]<<3);c[g>>2]=c[g>>2]|50331648;i=1;return i|0}function vx(a){a=a|0;var b=0,d=0,f=0,g=0,h=0;g=a+608|0;b=c[g>>2]|0;if((b|0)<=0){a=1;return a|0}f=a+12|0;d=c[f>>2]|0;if(!(d&1048576)){a=1;return a|0}h=a+588|0;if(!((e[a+94>>1]|0|256)&d)){gx(c[h>>2]|0,b);d=c[f>>2]|0;b=c[g>>2]|0}if(!(YN(a,c[((d&1024|0)==0?a+452|0:a+492|0)>>2]|0,c[h>>2]|0,b)|0)){a=0;return a|0}c[g>>2]=0;c[a+604>>2]=c[h>>2];a=1;return a|0}function wx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e;if(!((b|0)==8|(b|0)==32946))Ra(233904,233984,402,234016);if(!(Ev(a,234032,1)|0)){Yv(c[a+628>>2]|0,234016,234072,d);d=0;i=e;return d|0}b=_J(136)|0;c[a+576>>2]=b;if(!b){Yv(c[a+628>>2]|0,234016,234120,d);d=0;i=e;return d|0}else{f=b+96|0;d=a+672|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[b+128>>2]=c[d>>2];c[d>>2]=104;d=a+668|0;c[b+132>>2]=c[d>>2];c[d>>2]=105;c[b+120>>2]=-1;c[b+124>>2]=0;c[a+504>>2]=141;c[a+508>>2]=142;c[a+512>>2]=219;c[a+532>>2]=106;c[a+540>>2]=106;c[a+548>>2]=106;c[a+516>>2]=143;c[a+524>>2]=220;c[a+528>>2]=144;c[a+536>>2]=107;c[a+544>>2]=107;c[a+552>>2]=107;c[a+564>>2]=226;Cw(a)|0;d=1;i=e;return d|0}return 0}function xx(){return qea(20)|0}function yx(a){a=a|0;if(!a)return;rea(a);return}function zx(a){a=a|0;return (c[a+8>>2]|0)-(c[a>>2]|0)|0}function Ax(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=b+d;c[a+8>>2]=b;c[a+12>>2]=0;c[a+16>>2]=8;return}function Bx(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=b+d;c[a+8>>2]=b;c[a+12>>2]=0;c[a+16>>2]=0;return}function Cx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(e>>>0<=0)return;k=b+16|0;l=b+12|0;m=b+8|0;h=b+4|0;b=c[k>>2]|0;j=e+-1|0;do{i=d>>>j&1;if(!b){g=c[l>>2]|0;b=g<<8&65280;c[l>>2]=b;b=(b|0)==65280?7:8;c[k>>2]=b;f=c[m>>2]|0;if(f>>>0<(c[h>>2]|0)>>>0){c[m>>2]=f+1;a[f>>0]=g;b=c[k>>2]|0}}b=b+-1|0;c[k>>2]=b;c[l>>2]=i<>2];j=j+-1|0}while(j>>>0>>0);return}function Dx(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(b>>>0<=0){b=0;return b|0}j=a+16|0;k=a+12|0;l=a+8|0;h=a+4|0;e=c[j>>2]|0;f=c[k>>2]|0;i=b+-1|0;a=0;do{if(!e){g=f<<8&65280;c[k>>2]=g;e=(g|0)==65280?7:8;c[j>>2]=e;f=c[l>>2]|0;if(f>>>0<(c[h>>2]|0)>>>0){c[l>>2]=f+1;f=d[f>>0]|0|g;c[k>>2]=f}else f=g}e=e+-1|0;c[j>>2]=e;a=((f>>>e&1)<>>0>>0);return a|0}function Ex(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=b+16|0;g=b+12|0;d=c[g>>2]|0;i=d<<8&65280;c[g>>2]=i;c[f>>2]=(i|0)==65280?7:8;i=b+8|0;e=c[i>>2]|0;h=b+4|0;if(e>>>0>=(c[h>>2]|0)>>>0){i=0;return i|0}c[i>>2]=e+1;a[e>>0]=d;if((c[f>>2]|0)!=7){i=1;return i|0}d=c[g>>2]|0;b=d<<8&65280;c[g>>2]=b;c[f>>2]=(b|0)==65280?7:8;b=c[i>>2]|0;if(b>>>0>=(c[h>>2]|0)>>>0){i=0;return i|0}c[i>>2]=b+1;a[b>>0]=d;i=1;return i|0}function Fx(a){a=a|0;var b=0,e=0,f=0,g=0,h=0;g=a+16|0;c[g>>2]=0;h=a+12|0;b=c[h>>2]|0;if((b&255|0)!=255){a=1;return a|0}e=b<<8&65280;c[h>>2]=e;c[g>>2]=(e|0)==65280?7:8;f=a+8|0;b=c[f>>2]|0;if(b>>>0>=(c[a+4>>2]|0)>>>0){a=0;return a|0}c[f>>2]=b+1;c[h>>2]=d[b>>0]|0|e;c[g>>2]=0;a=1;return a|0}function Gx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;c[g>>2]=d;if(!((e|0)!=0&e>>>0<5))Ra(234528,234584,55,234616);d=b;f=0;b=g+(e+-1)|0;while(1){a[d>>0]=a[b>>0]|0;f=f+1|0;if((f|0)==(e|0))break;else{d=d+1|0;b=b+-1|0}}i=h;return}function Hx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!((e|0)!=0&e>>>0<5))Ra(234528,234584,77,234640);c[d>>2]=0;f=0;d=d+(e+-1)|0;while(1){a[d>>0]=a[b>>0]|0;f=f+1|0;if((f|0)==(e|0))break;else{b=b+1|0;d=d+-1|0}}return}function Ix(b,d){b=b|0;d=+d;var e=0,f=0,g=0,j=0,l=0;e=i;i=i+16|0;j=e;h[j>>3]=d;j=j+8|0;h[k>>3]=d;f=c[k>>2]|0;g=c[k+4>>2]|0;l=Bfa(f|0,g|0,56)|0;a[b>>0]=l;l=Bfa(f|0,g|0,48)|0;a[b+1>>0]=l;l=Bfa(f|0,g|0,40)|0;a[b+2>>0]=l;a[b+3>>0]=g;a[b+4>>0]=a[j+-5>>0]|0;a[b+5>>0]=a[j+-6>>0]|0;g=Bfa(f|0,g|0,8)|0;a[b+6>>0]=g;a[b+7>>0]=f;i=e;return}function Jx(b,c){b=b|0;c=c|0;var d=0;d=c+8|0;a[d+-1>>0]=a[b>>0]|0;a[d+-2>>0]=a[b+1>>0]|0;a[d+-3>>0]=a[b+2>>0]|0;a[d+-4>>0]=a[b+3>>0]|0;a[d+-5>>0]=a[b+4>>0]|0;a[d+-6>>0]=a[b+5>>0]|0;a[d+-7>>0]=a[b+6>>0]|0;a[c>>0]=a[b+7>>0]|0;return}function Kx(b,d){b=b|0;d=+d;var e=0;e=(g[k>>2]=d,c[k>>2]|0);a[b>>0]=e>>>24;a[b+1>>0]=e>>>16;a[b+2>>0]=e>>>8;a[b+3>>0]=e;return}function Lx(b,c){b=b|0;c=c|0;var d=0;d=c+4|0;a[d+-1>>0]=a[b>>0]|0;a[d+-2>>0]=a[b+1>>0]|0;a[d+-3>>0]=a[b+2>>0]|0;a[c>>0]=a[b+3>>0]|0;return}function Mx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=qea(72)|0;if(!f){b=0;return b|0}d=f+0|0;e=d+72|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));c[f+64>>2]=a;a=qea(a)|0;c[f+32>>2]=a;if(!a){rea(f);b=0;return b|0}c[f+36>>2]=a;a=f+68|0;if(!b){c[a>>2]=1;c[f+40>>2]=110;c[f+44>>2]=111}else{c[a>>2]=2;c[f+40>>2]=108;c[f+44>>2]=109}c[f+16>>2]=106;c[f+20>>2]=107;c[f+24>>2]=108;c[f+28>>2]=109;b=f;return b|0}function Nx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;if(!((d|0)>-1|(d|0)==-1&b>>>0>4294967295))Ra(234728,234584,455,234744);f=a+48|0;g=c[f>>2]|0;if(g>>>0>=b>>>0){m=a+36|0;c[m>>2]=(c[m>>2]|0)+b;c[f>>2]=g-b;m=a+56|0;a=m;a=yfa(c[a>>2]|0,c[a+4>>2]|0,b|0,d|0)|0;c[m>>2]=a;c[m+4>>2]=H;m=d;a=b;H=m;i=n;return a|0}l=a+68|0;if(c[l>>2]&4){m=a+36|0;c[m>>2]=(c[m>>2]|0)+g;c[f>>2]=0;a=a+56|0;m=a;m=yfa(c[m>>2]|0,c[m+4>>2]|0,g|0,0)|0;c[a>>2]=m;c[a+4>>2]=H;a=(g|0)!=0;m=a?0:-1;a=a?g:-1;H=m;i=n;return a|0}if(!g){g=0;f=0}else{c[a+36>>2]=c[a+32>>2];b=xfa(b|0,d|0,g|0,0)|0;c[f>>2]=0;f=0;d=H}a:do if((d|0)>0|(d|0)==0&b>>>0>0){k=a+24|0;while(1){h=Hd[c[k>>2]&255](b,d,c[a>>2]|0)|0;j=H;if((h|0)==-1&(j|0)==-1)break;b=xfa(b|0,d|0,h|0,j|0)|0;d=H;g=yfa(h|0,j|0,g|0,f|0)|0;f=H;if(!((d|0)>0|(d|0)==0&b>>>0>0))break a}ry(e,4,234664,m)|0;c[l>>2]=c[l>>2]|4;a=a+56|0;m=a;m=yfa(c[m>>2]|0,c[m+4>>2]|0,g|0,f|0)|0;c[a>>2]=m;c[a+4>>2]=H;a=(g|0)!=0|(f|0)!=0;m=a?f:-1;a=a?g:-1;H=m;i=n;return a|0}while(0);m=a+56|0;a=m;a=yfa(c[a>>2]|0,c[a+4>>2]|0,g|0,f|0)|0;c[m>>2]=a;c[m+4>>2]=H;m=f;a=g;H=m;i=n;return a|0}function Ox(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;c[a+36>>2]=c[a+32>>2];c[a+48>>2]=0;g=(Hd[c[a+28>>2]&255](b,d,c[a>>2]|0)|0)==0;e=a+68|0;f=c[e>>2]|0;if(g){c[e>>2]=f|4;g=0;return g|0}else{c[e>>2]=f&-5;g=a+56|0;c[g>>2]=b;c[g+4>>2]=d;g=1;return g|0}return 0}function Px(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+16|0;p=q;o=a+68|0;if(c[o>>2]&8){p=-1;a=-1;H=p;i=q;return a|0}k=a+32|0;f=c[k>>2]|0;n=a+36|0;c[n>>2]=f;l=a+48|0;j=c[l>>2]|0;do if(j){h=a+20|0;while(1){g=Hd[c[h>>2]&255](f,j,c[a>>2]|0)|0;if((g|0)==-1)break;f=(c[n>>2]|0)+g|0;c[n>>2]=f;r=c[l>>2]|0;j=r-g|0;c[l>>2]=j;if((r|0)==(g|0)){m=6;break}}if((m|0)==6){f=c[k>>2]|0;break}c[o>>2]=c[o>>2]|8;ry(e,4,234696,p)|0;c[o>>2]=c[o>>2]|8;c[l>>2]=0;a=-1;r=-1;H=a;i=q;return r|0}while(0);c[n>>2]=f;a:do if((d|0)>0|(d|0)==0&b>>>0>0){k=a+24|0;g=0;f=0;while(1){h=Hd[c[k>>2]&255](b,d,c[a>>2]|0)|0;j=H;if((h|0)==-1&(j|0)==-1)break;b=xfa(b|0,d|0,h|0,j|0)|0;d=H;g=yfa(h|0,j|0,g|0,f|0)|0;f=H;if(!((d|0)>0|(d|0)==0&b>>>0>0))break a}ry(e,4,234768,p)|0;c[o>>2]=c[o>>2]|8;r=a+56|0;a=r;a=yfa(c[a>>2]|0,c[a+4>>2]|0,g|0,f|0)|0;c[r>>2]=a;c[r+4>>2]=H;r=(g|0)!=0|(f|0)!=0;a=r?f:-1;r=r?g:-1;H=a;i=q;return r|0}else{g=0;f=0}while(0);a=a+56|0;r=a;r=yfa(c[r>>2]|0,c[r+4>>2]|0,g|0,f|0)|0;c[a>>2]=r;c[a+4>>2]=H;a=f;r=g;H=a;i=q;return r|0}function Qx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+16|0;k=p;m=a+32|0;f=c[m>>2]|0;n=a+36|0;c[n>>2]=f;o=a+48|0;g=c[o>>2]|0;do if(!g)g=a;else{j=a+20|0;while(1){h=Hd[c[j>>2]&255](f,g,c[a>>2]|0)|0;if((h|0)==-1)break;f=(c[n>>2]|0)+h|0;c[n>>2]=f;q=c[o>>2]|0;g=q-h|0;c[o>>2]=g;if((q|0)==(h|0)){l=6;break}}if((l|0)==6){g=a;f=c[m>>2]|0;break}q=a+68|0;c[q>>2]=c[q>>2]|8;ry(e,4,234696,k)|0;c[q>>2]=c[q>>2]|8;q=0;i=p;return q|0}while(0);c[n>>2]=f;c[o>>2]=0;if(!(Hd[c[a+28>>2]&255](b,d,c[g>>2]|0)|0)){q=a+68|0;c[q>>2]=c[q>>2]|8;q=0;i=p;return q|0}else{q=a+56|0;c[q>>2]=b;c[q+4>>2]=d;q=1;i=p;return q|0}return 0}function Rx(a,b,c){a=a|0;b=b|0;c=c|0;return -1}function Sx(a,b,c){a=a|0;b=b|0;c=c|0;return -1}function Tx(a,b,c){a=a|0;b=b|0;c=c|0;H=-1;return -1}function Ux(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function Vx(a){a=a|0;var b=0;if(!a)return;b=c[a+4>>2]|0;if(b)Bd[b&511](c[a>>2]|0);rea(c[a+32>>2]|0);rea(a);return}function Wx(a,b){a=a|0;b=b|0;if(!a)return;if(!(c[a+68>>2]&2))return;c[a+16>>2]=b;return}function Xx(a,b){a=a|0;b=b|0;if(!a)return;c[a+28>>2]=b;return}function Yx(a,b){a=a|0;b=b|0;if(!a)return;if(!(c[a+68>>2]&1))return;c[a+20>>2]=b;return}function Zx(a,b){a=a|0;b=b|0;if(!a)return;c[a+24>>2]=b;return}function _x(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)return;c[a>>2]=b;c[a+4>>2]=d;return}function $x(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)return;a=a+8|0;c[a>>2]=b;c[a+4>>2]=d;return}function ay(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;r=u;t=a+48|0;f=c[t>>2]|0;if(f>>>0>=d>>>0){s=a+36|0;qfa(b|0,c[s>>2]|0,d|0)|0;c[s>>2]=(c[s>>2]|0)+d;c[t>>2]=(c[t>>2]|0)-d;t=a+56|0;s=t;s=yfa(c[s>>2]|0,c[s+4>>2]|0,d|0,0)|0;c[t>>2]=s;c[t+4>>2]=H;t=d;i=u;return t|0}p=a+68|0;if(c[p>>2]&4){s=a+36|0;qfa(b|0,c[s>>2]|0,f|0)|0;r=c[t>>2]|0;c[s>>2]=(c[s>>2]|0)+r;s=a+56|0;e=s;r=yfa(c[e>>2]|0,c[e+4>>2]|0,r|0,0)|0;c[s>>2]=r;c[s+4>>2]=H;c[t>>2]=0;t=(f|0)!=0?f:-1;i=u;return t|0}if(!f){h=c[a+32>>2]|0;c[a+36>>2]=h;g=b;s=a+56|0;f=0}else{g=a+36|0;qfa(b|0,c[g>>2]|0,f|0)|0;h=c[a+32>>2]|0;c[g>>2]=h;g=c[t>>2]|0;s=a+56|0;o=s;o=yfa(c[o>>2]|0,c[o+4>>2]|0,g|0,0)|0;q=s;c[q>>2]=o;c[q+4>>2]=H;c[t>>2]=0;d=d-g|0;g=b+g|0}m=a+64|0;n=a+16|0;o=a+32|0;q=a+36|0;b=d;while(1){d=c[m>>2]|0;j=c[n>>2]|0;k=c[a>>2]|0;if(b>>>0>>0){j=Hd[j&255](h,d,k)|0;c[t>>2]=j;if((j|0)==-1){g=11;break}if(j>>>0>=b>>>0){d=g;g=14;break}qfa(g|0,c[q>>2]|0,j|0)|0;h=c[o>>2]|0;c[q>>2]=h;d=c[t>>2]|0;k=s;k=yfa(c[k>>2]|0,c[k+4>>2]|0,d|0,0)|0;l=H;f=j+f|0}else{d=Hd[j&255](g,b,k)|0;c[t>>2]=d;if((d|0)==-1){g=16;break}f=d+f|0;if(d>>>0>=b>>>0){g=20;break}h=c[o>>2]|0;c[q>>2]=h;k=s;k=yfa(c[k>>2]|0,c[k+4>>2]|0,d|0,0)|0;l=H}j=s;c[j>>2]=k;c[j+4>>2]=l;c[t>>2]=0;b=b-d|0;g=g+d|0}if((g|0)==11){ry(e,4,234664,r)|0;c[t>>2]=0;c[p>>2]=c[p>>2]|4;t=(f|0)!=0?f:-1;i=u;return t|0}else if((g|0)==14){qfa(d|0,c[q>>2]|0,b|0)|0;c[q>>2]=(c[q>>2]|0)+b;c[t>>2]=(c[t>>2]|0)-b;r=s;r=yfa(c[r>>2]|0,c[r+4>>2]|0,b|0,0)|0;t=s;c[t>>2]=r;c[t+4>>2]=H;t=f+b|0;i=u;return t|0}else if((g|0)==16){ry(e,4,234664,r)|0;c[t>>2]=0;c[p>>2]=c[p>>2]|4;t=(f|0)!=0?f:-1;i=u;return t|0}else if((g|0)==20){r=s;r=yfa(c[r>>2]|0,c[r+4>>2]|0,d|0,0)|0;c[s>>2]=r;c[s+4>>2]=H;c[q>>2]=c[o>>2];c[t>>2]=0;t=f;i=u;return t|0}return 0}function by(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+16|0;r=t;m=a+68|0;if(c[m>>2]&8){a=-1;i=t;return a|0}q=a+64|0;f=c[q>>2]|0;s=a+48|0;j=c[s>>2]|0;g=f-j|0;a:do if(g>>>0>>0){n=a+32|0;o=a+36|0;p=a+20|0;h=a+56|0;k=f;l=g;f=0;b:while(1){if((k|0)==(j|0))g=c[n>>2]|0;else{qfa(c[o>>2]|0,b|0,l|0)|0;g=c[n>>2]|0;c[o>>2]=g;j=(c[s>>2]|0)+l|0;c[s>>2]=j;u=h;u=yfa(c[u>>2]|0,c[u+4>>2]|0,l|0,0)|0;k=h;c[k>>2]=u;c[k+4>>2]=H;d=d-l|0;b=b+l|0;f=l+f|0}c[o>>2]=g;if(!j)j=0;else{do{k=Hd[c[p>>2]&255](g,j,c[a>>2]|0)|0;if((k|0)==-1)break b;g=(c[o>>2]|0)+k|0;c[o>>2]=g;u=c[s>>2]|0;j=u-k|0;c[s>>2]=j}while((u|0)!=(k|0));g=c[n>>2]|0}c[o>>2]=g;k=c[q>>2]|0;l=k-j|0;if(d>>>0<=l>>>0)break a}c[m>>2]=c[m>>2]|8;ry(e,4,234696,r)|0;u=-1;i=t;return u|0}else{h=a+56|0;g=c[a+36>>2]|0;f=0}while(0);a=a+36|0;qfa(g|0,b|0,d|0)|0;c[a>>2]=(c[a>>2]|0)+d;c[s>>2]=(c[s>>2]|0)+d;a=h;a=yfa(c[a>>2]|0,c[a+4>>2]|0,d|0,0)|0;u=h;c[u>>2]=a;c[u+4>>2]=H;u=f+d|0;i=t;return u|0}function cy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+16|0;k=n;g=a+32|0;d=c[g>>2]|0;m=a+36|0;c[m>>2]=d;h=a+48|0;e=c[h>>2]|0;do if(e){j=a+20|0;while(1){f=Hd[c[j>>2]&255](d,e,c[a>>2]|0)|0;if((f|0)==-1)break;d=(c[m>>2]|0)+f|0;c[m>>2]=d;o=c[h>>2]|0;e=o-f|0;c[h>>2]=e;if((o|0)==(f|0)){l=6;break}}if((l|0)==6){d=c[g>>2]|0;break}o=a+68|0;c[o>>2]=c[o>>2]|8;ry(b,4,234696,k)|0;o=0;i=n;return o|0}while(0);c[m>>2]=d;o=1;i=n;return o|0}function dy(a){a=a|0;a=a+56|0;H=c[a+4>>2]|0;return c[a>>2]|0}function ey(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+56|0;d=c[e>>2]|0;e=c[e+4>>2]|0;if(!((e|0)>-1|(e|0)==-1&d>>>0>4294967295))Ra(234784,234584,551,234816);b=a+8|0;a=c[b>>2]|0;b=c[b+4>>2]|0;if(b>>>0>>0|(b|0)==(e|0)&a>>>0>>0)Ra(234848,234584,552,234816);else{f=(a|0)==0&(b|0)==0;d=xfa(a|0,b|0,d|0,e|0)|0;H=f?0:H;return (f?0:d)|0}return 0}function fy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((d|0)>-1|(d|0)==-1&b>>>0>4294967295){e=Xd[c[a+40>>2]&255](a,b,d,e)|0;return e|0}else Ra(234728,234584,560,234920);return 0}function gy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((d|0)>-1|(d|0)==-1&b>>>0>4294967295)return Xd[c[a+44>>2]&255](a,b,d,e)|0;else Ra(234728,234584,607,234936);return 0}function hy(a){a=a|0;return (c[a+28>>2]|0)!=109|0}function iy(a){a=a|0;return jO(a,23)|0}function jy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+32|0;B=D+16|0;C=D;m=c[a+24>>2]|0;k=c[m+8>>2]|0;l=c[m>>2]|0;h=c[m+12>>2]|0;j=c[m+4>>2]|0;A=(c[a+8>>2]|0)-(c[a>>2]|0)|0;g=b+-1|0;f=(g|0)==0;if(f)b=0;else{d=m;e=g;b=0;do{z=d;d=d+136|0;y=(c[z+144>>2]|0)-(c[d>>2]|0)|0;b=b>>>0>>0?y:b;z=(c[z+148>>2]|0)-(c[z+140>>2]|0)|0;b=b>>>0>>0?z:b;e=e+-1|0}while((e|0)!=0);b=b<<2}z=uea(16,b)|0;c[B>>2]=z;if(!z){C=0;i=D;return C|0}c[C>>2]=z;if(!f){s=a+32|0;t=B+8|0;u=C+8|0;v=B+4|0;w=B+12|0;x=C+4|0;y=C+12|0;r=h-j|0;q=k-l|0;do{o=c[s>>2]|0;h=m;m=m+136|0;c[t>>2]=q;c[u>>2]=r;l=c[h+144>>2]|0;n=c[m>>2]|0;d=q;q=l-n|0;b=c[h+148>>2]|0;h=h+140|0;p=c[h>>2]|0;f=r;r=b-p|0;c[v>>2]=q-d;c[w>>2]=(n|0)%2|0;p=(b|0)==(p|0);if(!p){a=q<<2;b=0;while(1){e=da(b,A)|0;k=o+(e<<2)|0;if(d){j=k;f=z+(c[w>>2]<<2)|0;while(1){d=d+-1|0;c[f>>2]=c[j>>2];if(!d)break;else{j=j+4|0;f=f+8|0}}}f=c[v>>2]|0;if(f){j=o+((c[t>>2]|0)+e<<2)|0;d=z+(1-(c[w>>2]|0)<<2)|0;while(1){f=f+-1|0;c[d>>2]=c[j>>2];if(!f)break;else{j=j+4|0;d=d+8|0}}}kO(B);qfa(k|0,z|0,a|0)|0;b=b+1|0;if((b|0)==(r|0))break;d=c[t>>2]|0}f=c[u>>2]|0;b=c[h>>2]|0}c[x>>2]=r-f;c[y>>2]=(b|0)%2|0;a:do if((l|0)!=(n|0)){b=0;while(1){if(f){d=o+(b<<2)|0;e=z+(c[y>>2]<<2)|0;while(1){f=f+-1|0;c[e>>2]=c[d>>2];if(!f)break;else{d=d+(A<<2)|0;e=e+8|0}}}f=c[x>>2]|0;if(f){d=o+((da(c[u>>2]|0,A)|0)+b<<2)|0;e=z+(1-(c[y>>2]|0)<<2)|0;while(1){f=f+-1|0;c[e>>2]=c[d>>2];if(!f)break;else{d=d+(A<<2)|0;e=e+8|0}}}kO(C);if(!p){f=0;do{c[o+((da(f,A)|0)+b<<2)>>2]=c[z+(f<<2)>>2];f=f+1|0}while((f|0)!=(r|0))}b=b+1|0;if((b|0)==(q|0))break a;f=c[u>>2]|0}}while(0);g=g+-1|0}while((g|0)!=0)}rea(z);C=1;i=D;return C|0}function ky(a){a=a|0;if(!a){a=0;return a|0}a=(a+-1|0)>>>0<2?1:2;return a|0}function ly(a,b){a=a|0;b=b|0;return +(+h[234952+(b*80|0)+(a<<3)>>3])}function my(a){a=a|0;return jO(a,24)|0}function ny(a){a=a|0;return 0}function oy(a,b){a=a|0;b=b|0;return +(+h[235272+(b*80|0)+(a<<3)>>3])}function py(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=a+4|0;l=((c[k>>2]|0)*3|0)+-2|0;if(!l)return;m=a+20|0;n=a+24|0;o=0;do{if(o){f=o+-1|0;e=(f>>>0)%3|0;g=e+1|0;f=-2-((f>>>0)/3|0)+(c[k>>2]|0)|0;if(c[m>>2]|0)if(!e){e=1;g=1}else{e=g;g=(g|0)==2?1:2}else{e=g;g=0}}else{e=0;f=(c[k>>2]|0)+-1|0;g=0}if(!(c[n>>2]|0))d=8192.0;else d=+(1<>3]*8192.0;i=~~+R(+d);j=g+b|0;if((i|0)>1){e=i;f=0;while(1){e=e>>1;if((e|0)<=1)break;else f=f+1|0}g=i;e=0;do{g=g>>1;e=e+1|0}while((g|0)>1);g=f+-12|0}else{g=-13;e=0}e=11-e|0;if((e|0)<0)e=i>>0-e;else e=i<>2]=e&2047;c[a+(o<<3)+28>>2]=j-g;o=o+1|0}while((o|0)!=(l|0));return}function qy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=i;i=i+32|0;M=P+16|0;N=P;m=c[a+24>>2]|0;n=(c[m+8>>2]|0)-(c[m>>2]|0)|0;l=(c[m+12>>2]|0)-(c[m+4>>2]|0)|0;K=a+8|0;j=c[K>>2]|0;k=c[a>>2]|0;L=j-k|0;h=b+-1|0;f=(h|0)==0;if(f)b=80;else{d=m;e=h;b=0;do{J=d;d=d+136|0;I=(c[J+144>>2]|0)-(c[d>>2]|0)|0;b=b>>>0>>0?I:b;J=(c[J+148>>2]|0)-(c[J+140>>2]|0)|0;b=b>>>0>>0?J:b;e=e+-1|0}while((e|0)!=0);b=(b<<4)+80|0}J=uea(16,b)|0;c[M>>2]=J;c[N>>2]=J;if(f){rea(J);i=P;return 1}x=a+32|0;y=a+12|0;z=a+4|0;A=M+8|0;B=N+8|0;C=M+4|0;D=M+12|0;E=N+4|0;F=N+12|0;G=L<<1;H=L<<2;I=L*3|0;b=h;d=j;f=k;e=m;j=n;while(1){h=c[x>>2]|0;f=da((c[y>>2]|0)-(c[z>>2]|0)|0,d-f|0)|0;c[A>>2]=j;c[B>>2]=l;v=e+136|0;q=c[e+144>>2]|0;r=c[v>>2]|0;w=q-r|0;t=c[e+148>>2]|0;p=e+140|0;s=c[p>>2]|0;u=t-s|0;c[C>>2]=w-j;c[D>>2]=(r|0)%2|0;if((u|0)>3){m=(w|0)>0;e=(t+-4-s|0)>>>2;o=da(L,-4-(e<<2)|0)|0;e=h+(da(L,(e<<4)+16|0)|0)|0;j=h;k=f;n=u;while(1){mO(M,j,L,k);nO(M);if(m){d=w;do{d=d+-1|0;g[j+(d<<2)>>2]=+g[J+(d<<4)>>2];g[j+(d+L<<2)>>2]=+g[J+(d<<4)+4>>2];g[j+(d+G<<2)>>2]=+g[J+(d<<4)+8>>2];g[j+(d+I<<2)>>2]=+g[J+(d<<4)+12>>2]}while((d|0)>0)}n=n+-4|0;if((n|0)<=3)break;else{j=j+(H<<2)|0;k=k-H|0}}f=f+o|0}else e=h;d=u&3;do if(!d)O=20;else{mO(M,e,L,f);nO(M);if((w|0)>0)f=w;else{m=u-l|0;c[E>>2]=m;e=(c[p>>2]|0)%2|0;c[F>>2]=e;break}do{f=f+-1|0;if((d|0)==2)O=17;else if((d|0)==1)O=18;else if((d|0)==3){g[e+(f+G<<2)>>2]=+g[J+(f<<4)+8>>2];O=17}if((O|0)==17){g[e+(f+L<<2)>>2]=+g[J+(f<<4)+4>>2];O=18}if((O|0)==18){O=0;g[e+(f<<2)>>2]=+g[J+(f<<4)>>2]}}while((f|0)>0);O=20}while(0);if((O|0)==20){O=0;m=u-l|0;c[E>>2]=m;e=(c[p>>2]|0)%2|0;c[F>>2]=e;if((w|0)>3){k=(t|0)==(s|0);n=h+((q+-4-r+4&-4)<<2)|0;j=h;h=w;while(1){if((l|0)>0){f=0;do{r=J+((f<<1)+e<<4)|0;q=j+((da(f,L)|0)<<2)|0;c[r+0>>2]=c[q+0>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];f=f+1|0}while((f|0)!=(l|0))}f=1-e|0;if((m|0)>0){d=0;do{r=J+(f+(d<<1)<<4)|0;q=j+((da(d+l|0,L)|0)<<2)|0;c[r+0>>2]=c[q+0>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];d=d+1|0}while((d|0)!=(m|0))}nO(N);if(!k){f=0;do{r=j+((da(f,L)|0)<<2)|0;q=J+(f<<4)|0;c[r+0>>2]=c[q+0>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];f=f+1|0}while((f|0)!=(u|0))}h=h+-4|0;if((h|0)<=3)break;else j=j+16|0}h=n}}j=w&3;if(j){if((l|0)>0){f=j<<2;d=0;do{qfa(J+((d<<1)+e<<4)|0,h+((da(d,L)|0)<<2)|0,f|0)|0;d=d+1|0}while((d|0)!=(l|0))}f=1-e|0;if((m|0)>0){d=j<<2;e=0;do{qfa(J+(f+(e<<1)<<4)|0,h+((da(e+l|0,L)|0)<<2)|0,d|0)|0;e=e+1|0}while((e|0)!=(m|0))}nO(N);if((t|0)!=(s|0)){f=j<<2;d=0;do{qfa(h+((da(d,L)|0)<<2)|0,J+(d<<4)|0,f|0)|0;d=d+1|0}while((d|0)!=(u|0))}}b=b+-1|0;if(!b)break;d=c[K>>2]|0;f=c[a>>2]|0;l=u;e=v;j=w}rea(J);i=P;return 1}function ry(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+528|0;g=j;h=j+16|0;do if(a){if((b|0)==1){b=a;f=a+12|0}else if((b|0)==4){b=a+8|0;f=a+20|0}else if((b|0)==2){b=a+4|0;f=a+16|0}else{b=0;break}a=c[b>>2]|0;b=c[f>>2]|0;if(b)if(!d)b=1;else{sfa(h|0,0,512)|0;c[g>>2]=e;_ea(h,d,g)|0;Cd[b&255](h,a);b=1}else b=0}else b=0;while(0);i=j;return b|0}function sy(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=75;c[a+20>>2]=75;c[a+16>>2]=75;return}function ty(){var a=0,b=0,d=0;d=qea(12)|0;if(!d){d=0;return d|0}a=d;c[a>>2]=0;c[a+4>>2]=0;c[d+4>>2]=10;a=qea(40)|0;c[d+8>>2]=a;if(!a){rea(d);d=0;return d|0}else{a=a+0|0;b=a+40|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return d|0}return 0}function uy(a){a=a|0;var b=0;if(!a)return;b=c[a+8>>2]|0;if(b)rea(b);rea(a);return}function vy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;e=c[f>>2]|0;d=c[a>>2]|0;do if((e|0)==(d|0)){e=e+10|0;c[f>>2]=e;d=a+8|0;e=tea(c[d>>2]|0,e<<2)|0;if(e){c[d>>2]=e;d=c[a>>2]|0;break}rea(c[d>>2]|0);c[f>>2]=0;c[a>>2]=0;Xb(235592,52,1,c[p>>2]|0)|0;a=0;return a|0}else e=c[a+8>>2]|0;while(0);c[e+(d<<2)>>2]=b;c[a>>2]=d+1;a=1;return a|0}function wy(a){a=a|0;return c[a>>2]|0}function xy(a){a=a|0;return c[a+8>>2]|0}function yy(a){a=a|0;c[a>>2]=0;return}function zy(){return sea(1,36)|0}function Ay(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=sea(1,36)|0;if(!e){a=e;return a|0}c[e+20>>2]=d;c[e+16>>2]=a;f=sea(1,a*52|0)|0;c[e+24>>2]=f;if(!f){Xb(235648,37,1,c[p>>2]|0)|0;rea(e);a=0;return a|0}if(!a){a=e;return a|0}else d=0;while(1){c[f+(d*52|0)>>2]=c[b+(d*36|0)>>2];c[f+(d*52|0)+4>>2]=c[b+(d*36|0)+4>>2];h=c[b+(d*36|0)+8>>2]|0;c[f+(d*52|0)+8>>2]=h;i=c[b+(d*36|0)+12>>2]|0;c[f+(d*52|0)+12>>2]=i;c[f+(d*52|0)+16>>2]=c[b+(d*36|0)+16>>2];c[f+(d*52|0)+20>>2]=c[b+(d*36|0)+20>>2];c[f+(d*52|0)+24>>2]=c[b+(d*36|0)+24>>2];c[f+(d*52|0)+28>>2]=c[b+(d*36|0)+28>>2];c[f+(d*52|0)+32>>2]=c[b+(d*36|0)+32>>2];h=sea(da(i,h)|0,4)|0;c[f+(d*52|0)+44>>2]=h;d=d+1|0;if(!h)break;if(d>>>0>=a>>>0){g=14;break}}if((g|0)==14)return e|0;Xb(235648,37,1,c[p>>2]|0)|0;if(f){b=0;do{d=c[f+(b*52|0)+44>>2]|0;if(d)rea(d);b=b+1|0}while(b>>>0>>0);rea(f);d=c[e+28>>2]|0;if(d)rea(d)}rea(e);h=0;return h|0}function By(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;if(!a)return;g=a+24|0;b=c[g>>2]|0;if(b){h=a+16|0;d=c[h>>2]|0;if(d){f=0;do{e=c[b+(f*52|0)+44>>2]|0;if(e){rea(e);d=c[h>>2]|0;b=c[g>>2]|0}f=f+1|0}while(f>>>0>>0)}rea(b)}b=c[a+28>>2]|0;if(b)rea(b);rea(a);return}function Cy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;f=c[b+4>>2]|0;d=c[a>>2]|0;e=c[b+8>>2]|0;h=c[a+4>>2]|0;g=(da(c[b+12>>2]|0,c[b+24>>2]|0)|0)+f|0;i=c[a+8>>2]|0;b=(da(c[b+16>>2]|0,c[b+28>>2]|0)|0)+e|0;j=c[a+12>>2]|0;m=c[a+16>>2]|0;if(!m)return;l=((f|0)>(d|0)?f:d)+-1|0;k=((e|0)>(h|0)?e:h)+-1|0;i=((g|0)<(i|0)?g:i)+-1|0;g=((b|0)<(j|0)?b:j)+-1|0;h=0;f=c[a+24>>2]|0;while(1){b=c[f>>2]|0;if(!b){b=4;break}d=(l+b|0)/(b|0)|0;e=c[f+4>>2]|0;if(!e){b=6;break}a=(k+e|0)/(e|0)|0;j=((i+b|0)/(b|0)|0)-d|0;b=c[f+40>>2]|0;o=1<>31;j=yfa(j|0,((j|0)<0)<<31>>31|0,-1,-1)|0;j=yfa(j|0,H|0,o|0,n|0)|0;j=pfa(j|0,H|0,b|0)|0;e=((g+e|0)/(e|0)|0)-a|0;e=yfa(e|0,((e|0)<0)<<31>>31|0,-1,-1)|0;e=yfa(e|0,H|0,o|0,n|0)|0;e=pfa(e|0,H|0,b|0)|0;c[f+8>>2]=j;c[f+12>>2]=e;c[f+16>>2]=d;c[f+20>>2]=a;h=h+1|0;if(h>>>0>=m>>>0){b=8;break}else f=f+52|0}if((b|0)==4)Ra(258480,258488,105,258528);else if((b|0)==6)Ra(258480,258488,105,258528);else if((b|0)==8)return}function Dy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)Ra(235688,235712,144,235744);if(!b)Ra(235768,235712,145,235744);c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];j=b+24|0;d=c[j>>2]|0;i=b+16|0;if(d){e=c[i>>2]|0;if(e){f=0;do{g=c[d+(f*52|0)+44>>2]|0;if(g){rea(g);e=c[i>>2]|0;d=c[j>>2]|0}f=f+1|0}while(f>>>0>>0)}rea(d);c[j>>2]=0}d=c[a+16>>2]|0;c[i>>2]=d;e=qea(d*52|0)|0;c[j>>2]=e;if(!e){c[j>>2]=0;c[i>>2]=0;return}if(d){h=a+24|0;f=0;do{d=e+(f*52|0)+0|0;g=(c[h>>2]|0)+(f*52|0)+0|0;e=d+52|0;do{c[d>>2]=c[g>>2];d=d+4|0;g=g+4|0}while((d|0)<(e|0));e=c[j>>2]|0;c[e+(f*52|0)+44>>2]=0;f=f+1|0}while(f>>>0<(c[i>>2]|0)>>>0)}c[b+20>>2]=c[a+20>>2];f=a+32|0;d=c[f>>2]|0;g=b+32|0;c[g>>2]=d;if(!d){c[b+28>>2]=0;return}e=qea(d)|0;d=b+28|0;c[d>>2]=e;if(!e){c[d>>2]=0;c[g>>2]=0;return}else{qfa(e|0,c[a+28>>2]|0,c[f>>2]|0)|0;return}}function Ey(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=d<<2;z=qea(d<<4)|0;if(!z){a=0;return a|0}A=z+y|0;sfa(z|0,0,y|0)|0;x=d+-1|0;u=(d|0)==0;if(!u){e=0;f=z;while(1){c[f>>2]=e;e=e+1|0;if((e|0)==(d|0))break;else f=f+4|0}}a:do if(x){q=x;p=0;e=0;r=a;s=1;t=z;while(1){o=r+(p<<2)|0;if(p>>>0>>0){m=p;f=o;h=0.0}else break;while(1){i=+g[f>>2];if(!(i>0.0))i=-i;w=i>h;e=w?m:e;h=w?i:h;m=m+1|0;if((m|0)==(d|0))break;else f=f+(d<<2)|0}if(h==0.0)break;if((e|0)!=(p|0)){w=e-p|0;v=t+(w<<2)|0;l=c[t>>2]|0;c[t>>2]=c[v>>2];c[v>>2]=l;w=r+((da(w,d)|0)<<2)|0;qfa(A|0,w|0,y|0)|0;qfa(w|0,r|0,y|0)|0;qfa(r|0,A|0,y|0)|0}f=p;p=p+1|0;i=+g[o>>2];if(s>>>0>>0){j=r+(p<<2)|0;o=p+q|0;l=s;f=r+(f+d<<2)|0;while(1){h=+g[f>>2]/i;g[f>>2]=h;m=s;n=f;k=j;while(1){n=n+4|0;g[n>>2]=+g[n>>2]-h*+g[k>>2];m=m+1|0;if((m|0)==(d|0))break;else k=k+4|0}l=l+1|0;if((l|0)==(d|0))break;else f=f+(o<<2)|0}}if(p>>>0>>0){q=q+-1|0;r=r+(d<<2)|0;s=s+1|0;t=t+4|0}else break a}rea(z);a=0;return a|0}while(0);e=d<<1;w=A+(e<<2)|0;if(!u){v=A+(x+d<<2)|0;r=A+(e+x<<2)|0;s=a+((da(d,d)|0)+-1<<2)|0;t=~d;u=0;q=b;while(1){sfa(A|0,0,y|0)|0;g[A+(u<<2)>>2]=1.0;k=0;l=z;m=w;n=a;while(1){if(!k)h=0.0;else{e=1;f=w;j=n;h=0.0;while(1){h=h+ +g[j>>2]*+g[f>>2];e=e+1|0;if(e>>>0>k>>>0)break;else{f=f+4|0;j=j+4|0}}}g[m>>2]=+g[A+(c[l>>2]<<2)>>2]-h;k=k+1|0;if((k|0)==(d|0)){o=d;n=v;k=w;j=r;p=s;break}else{l=l+4|0;m=m+4|0;n=n+(d<<2)|0}}while(1){e=o;o=o+-1|0;i=+g[p>>2];if(e>>>0>>0){m=k;f=p;h=0.0;while(1){f=f+4|0;h=h+ +g[f>>2]*+g[m>>2];e=e+1|0;if((e|0)==(d|0))break;else m=m+4|0}}else h=0.0;k=k+-4|0;g[n>>2]=(+g[j>>2]-h)/i;if(!o){e=0;f=q;break}else{n=n+-4|0;j=j+-4|0;p=p+(t<<2)|0}}while(1){g[f>>2]=+g[A+(e+d<<2)>>2];e=e+1|0;if((e|0)==(d|0))break;else f=f+(d<<2)|0}u=u+1|0;if((u|0)==(d|0))break;else q=q+4|0}}rea(z);a=1;return a|0}function Fy(a){a=a|0;var b=0,d=0;b=235792;while(1){d=c[b>>2]|0;if((d|0)==-1|(d|0)==(a|0))break;else b=b+12|0}return b+4|0}function Gy(a,b){a=a|0;b=b|0;if(!((a|0)!=0&(b|0)!=0))return;c[a+164>>2]=c[b+4>>2];c[a+160>>2]=c[b>>2];return}function Hy(){var a=0,b=0;a=qea(208)|0;if(!a){a=0;return a|0}sfa(a|0,0,208)|0;b=qea(1e3)|0;c[a+44>>2]=b;if(!b){Iy(a);b=0;return b|0}c[a+48>>2]=1e3;b=ty()|0;c[a+188>>2]=b;if(!b){Iy(a);b=0;return b|0}b=ty()|0;c[a+184>>2]=b;if(b){b=a;return b|0}Iy(a);b=0;return b|0}function Iy(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;if(!b)return;if(!(c[b>>2]|0)){d=b+36|0;e=c[d>>2]|0;if(e){rea(e);c[d>>2]=0}d=b+24|0;e=c[d>>2]|0;if(e){rea(e);c[d>>2]=0;c[b+28>>2]=0}d=b+44|0;e=c[d>>2]|0;if(e){rea(e);c[d>>2]=0;c[b+48>>2]=0}}else{d=b+12|0;e=c[d>>2]|0;if(e){pO(e);rea(c[d>>2]|0);c[d>>2]=0}d=b+16|0;e=c[d>>2]|0;if(e){rea(e);c[d>>2]=0;c[b+20>>2]=0}}LA(c[b+200>>2]|0);g=b+88|0;h=b+156|0;d=c[h>>2]|0;if(d){e=da(c[b+112>>2]|0,c[b+116>>2]|0)|0;if(e){f=0;while(1){pO(d);f=f+1|0;if((f|0)==(e|0))break;else d=d+5632|0}d=c[h>>2]|0}rea(d);c[h>>2]=0}h=b+136|0;rea(c[h>>2]|0);c[h>>2]=0;c[b+120>>2]=0;h=b+108|0;rea(c[h>>2]|0);c[h>>2]=0;if(!(a[b+180>>0]&2)){h=b+172|0;rea(c[h>>2]|0);c[h>>2]=0}d=g+0|0;e=d+96|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));h=b+184|0;uy(c[h>>2]|0);c[h>>2]=0;uy(c[b+188>>2]|0);c[h>>2]=0;h=b+192|0;Ny(c[h>>2]|0);c[h>>2]=0;h=b+80|0;By(c[h>>2]|0);c[h>>2]=0;By(c[b+84>>2]|0);rea(b);return}function Jy(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;U=i;i=i+32|0;I=U;v=U+25|0;u=U+16|0;if(!((b|0)!=0&(d|0)!=0&(e|0)!=0)){i=U;return}R=b+112|0;c[R>>2]=1;S=b+116|0;c[S>>2]=1;w=d+18676|0;j=c[w>>2]|0;if((j|0)==2|(j|0)==1){c[d+18684>>2]=3;Q=5}else if(!j)j=0;else if((j|0)==3){c[d+18684>>2]=4;Q=5}else Q=5;a:do if((Q|0)==5){c[d>>2]=0;c[d+12>>2]=1;c[d+16>>2]=1;a[d+18689>>0]=67;a[d+18688>>0]=1;c[d+4>>2]=0;c[d+8>>2]=0;c[d+18180>>2]=0;c[d+18184>>2]=0;c[d+5596>>2]=32;c[d+5600>>2]=32;c[d+5604>>2]=0;c[d+5612>>2]=-1;c[d+18188>>2]=1;c[d+18192>>2]=1;c[d+5608>>2]=1;l=d+4788|0;m=c[l>>2]|0;if((m|0)>1){c[I>>2]=m;ry(f,2,243384,I)|0;c[l>>2]=1;j=c[w>>2]|0}do if((j|0)==2|(j|0)==1){j=d+5592|0;l=c[j>>2]|0;if((l|0)>6){c[I>>2]=l+1;ry(f,2,243512,I)|0;c[j>>2]=6;l=6}}else if((j|0)==3){j=d+5592|0;l=c[j>>2]|0;if((l|0)<2){c[I>>2]=l+1;ry(f,2,243664,I)|0;c[j>>2]=1;l=1;break}if((l|0)>7){c[I>>2]=l+1;ry(f,2,243824,I)|0;c[j>>2]=7;l=7}}else l=c[d+5592>>2]|0;while(0);m=d+40|0;c[m>>2]=c[m>>2]|1;m=d+5592|0;O=l+-1|0;j=d+5620|0;c[j>>2]=O;if((O|0)>0){l=0;do{c[d+(l<<2)+5624>>2]=256;c[d+(l<<2)+5756>>2]=256;l=l+1|0}while((l|0)<(c[j>>2]|0))}c[d+44>>2]=4;j=c[w>>2]|0;do if((j|0)==3){Q=c[m>>2]|0;c[d+96>>2]=1;c[d+48>>2]=0;c[d+52>>2]=0;c[d+56>>2]=1;O=Q+-1|0;c[d+60>>2]=O;c[d+64>>2]=3;c[d+80>>2]=4;c[d+244>>2]=1;c[d+196>>2]=O;c[d+200>>2]=0;c[d+204>>2]=1;c[d+208>>2]=Q;c[d+212>>2]=3;c[d+228>>2]=4;c[d+4784>>2]=2;c[d+20>>2]=1;Q=21}else{c[d+4784>>2]=0;c[d+20>>2]=1;if((j|0)==1){Q=21;break}else if((j|0)!=2){l=e+16|0;break}l=e+16|0;n=c[e+24>>2]|0;j=da(c[n+8>>2]|0,c[l>>2]|0)|0;j=da(j,c[n+12>>2]|0)|0;q=+((da(j,c[n+24>>2]|0)|0)>>>0);j=c[n>>2]|0;m=da(j,5208328)|0;n=c[n+4>>2]|0;r=q/+((da(m,n)|0)>>>0);m=d+4792|0;s=+g[m>>2];do if(!(s==0.0)){t=s;if(q/(+(n>>>0)*(+(j>>>0)*(s*8.0)))>651041.0){h[k>>3]=t;c[I>>2]=c[k>>2];c[I+4>>2]=c[k+4>>2];O=I+8|0;h[k>>3]=r;c[O>>2]=c[k>>2];c[O+4>>2]=c[k+4>>2];ry(f,2,244272,I)|0;g[m>>2]=r;break}else{h[k>>3]=t;c[I>>2]=c[k>>2];c[I+4>>2]=c[k+4>>2];ry(f,2,244440,I)|0;break}}else g[m>>2]=r;while(0);c[d+18680>>2]=520833}while(0);if((Q|0)==21){l=e+16|0;n=c[e+24>>2]|0;j=da(c[n+8>>2]|0,c[l>>2]|0)|0;j=da(j,c[n+12>>2]|0)|0;r=+((da(j,c[n+24>>2]|0)|0)>>>0);j=c[n>>2]|0;m=da(j,10416664)|0;n=c[n+4>>2]|0;t=r/+((da(m,n)|0)>>>0);m=d+4792|0;s=+g[m>>2];do if(!(s==0.0)){q=s;if(r/(+(n>>>0)*(+(j>>>0)*(s*8.0)))>1302083.0){h[k>>3]=q;c[I>>2]=c[k>>2];c[I+4>>2]=c[k+4>>2];O=I+8|0;h[k>>3]=t;c[O>>2]=c[k>>2];c[O+4>>2]=c[k+4>>2];ry(f,2,243984,I)|0;g[m>>2]=t;break}else{h[k>>3]=q;c[I>>2]=c[k>>2];c[I+4>>2]=c[k+4>>2];ry(f,2,244160,I)|0;break}}else g[m>>2]=t;while(0);c[d+18680>>2]=1041666}j=c[w>>2]|0;l=c[l>>2]|0;do if((l|0)==3){n=c[e+24>>2]|0;p=0;do{l=n+(p*52|0)+28|0;m=n+(p*52|0)+32|0;if((c[l>>2]|0)!=12|c[m>>2]){j=p;Q=38;break}p=p+1|0}while(p>>>0<3);if((Q|0)==38){a[v+0>>0]=a[242792]|0;a[v+1>>0]=a[242793]|0;a[v+2>>0]=a[242794]|0;a[v+3>>0]=a[242795]|0;a[v+4>>0]=a[242796]|0;a[v+5>>0]=a[242797]|0;a[v+6>>0]=a[242798]|0;n=u+0|0;o=242800;p=n+9|0;do{a[n>>0]=a[o>>0]|0;n=n+1|0;o=o+1|0}while((n|0)<(p|0));O=(c[m>>2]|0)!=0?v:u;N=c[l>>2]|0;c[I>>2]=j;c[I+4>>2]=N;c[I+8>>2]=O;ry(f,2,242816,I)|0;break}if((j|0)==3){l=c[n+8>>2]|0;j=c[n+12>>2]|0;if(!(j>>>0>2160|l>>>0>4096)){j=3;break a}c[I>>2]=l;c[I+4>>2]=j;ry(f,2,243216,I)|0;break}else if((j|0)==2|(j|0)==1){m=c[n+8>>2]|0;l=c[n+12>>2]|0;if(!(l>>>0>1080|m>>>0>2048))break a;c[I>>2]=m;c[I+4>>2]=l;ry(f,2,243040,I)|0;break}else break a}else{c[I>>2]=l;ry(f,2,242624,I)|0}while(0);c[d+18684>>2]=0;j=c[w>>2]|0}while(0);O=b+160|0;c[O>>2]=j;c[b+164>>2]=c[d+18680>>2];c[b+88>>2]=c[d+18684>>2];N=b+177|0;L=a[N>>0]&-2|c[d+20>>2]&1;a[N>>0]=L;M=d+24|0;L=(c[M>>2]&255)<<1&2|L&-3;a[N>>0]=L;a[N>>0]=L&-5|(c[d+28>>2]&255)<<2&4;if((c[M>>2]|0)!=0?(x=c[d+32>>2]|0,(x|0)!=0):0){M=da((c[d+4788>>2]|0)*12|0,c[d+5592>>2]|0)|0;L=qea(M)|0;c[b+172>>2]=L;qfa(L|0,x|0,M|0)|0}n=b+100|0;c[n>>2]=c[d+12>>2];p=b+104|0;c[p>>2]=c[d+16>>2];j=c[d+4>>2]|0;l=b+92|0;c[l>>2]=j;o=b+96|0;c[o>>2]=c[d+8>>2];m=c[d+36>>2]|0;if((m|0)!=0?(y=qea((tfa(m|0)|0)+1|0)|0,c[b+108>>2]=y,(y|0)!=0):0){wfa(y|0,m|0)|0;j=c[l>>2]|0}l=(c[e+8>>2]|0)-j|0;do if(c[d>>2]|0){j=c[n>>2]|0;if(!j)Ra(258480,258488,105,258528);c[R>>2]=(l+-1+j|0)/(j|0)|0;j=c[p>>2]|0;if(!j)Ra(258480,258488,105,258528);else{c[S>>2]=(j+-1+(c[e+12>>2]|0)-(c[o>>2]|0)|0)/(j|0)|0;break}}else{c[n>>2]=l;c[p>>2]=(c[e+12>>2]|0)-(c[o>>2]|0)}while(0);if(a[d+18688>>0]|0){a[b+176>>0]=a[d+18689>>0]|0;a[N>>0]=a[N>>0]|8}L=b+156|0;c[L>>2]=sea(da(c[S>>2]|0,c[R>>2]|0)|0,5632)|0;M=d+4784|0;C=c[M>>2]|0;do if(C){A=d+48|0;E=c[d+5592>>2]|0;F=c[e+16>>2]|0;G=c[d+4788>>2]|0;D=da(F,E)|0;j=da(D,G)|0;H=sea(j,4)|0;if(!H){ry(f,1,242536,I)|0;break}sfa(H|0,0,j<<2|0)|0;j=c[A>>2]|0;v=c[d+60>>2]|0;if(j>>>0>>0){z=da(j,F)|0;w=c[d+52>>2]|0;x=c[d+64>>2]|0;y=w>>>0>>0;b=d+56|0;while(1){if(y){n=c[b>>2]|0;l=(n|0)==0;p=w;u=z+w|0;while(1){if(!l){m=u;o=0;while(1){c[H+(m<<2)>>2]=1;o=o+1|0;if((o|0)==(n|0))break;else m=m+D|0}}p=p+1|0;if((p|0)==(x|0))break;else u=u+1|0}}j=j+1|0;if((j|0)==(v|0))break;else z=z+F|0}}if(C>>>0>1){B=1;do{j=A;A=A+148|0;y=c[j+8>>2]|0;x=j+156|0;m=c[x>>2]|0;y=m>>>0>y>>>0?y:0;v=c[A>>2]|0;b=j+160|0;n=c[b>>2]|0;if(v>>>0>>0){o=da(v,F)|0;z=j+152|0;u=j+164|0;w=da(y,D)|0;l=c[u>>2]|0;j=m;while(1){m=c[z>>2]|0;if(m>>>0>>0){p=m;m=m+o|0;while(1){if(y>>>0>>0){n=m+w|0;l=y;while(1){c[H+(n<<2)>>2]=1;l=l+1|0;j=c[x>>2]|0;if(l>>>0>=j>>>0)break;else n=n+D|0}l=c[u>>2]|0}p=p+1|0;if(p>>>0>=l>>>0)break;else m=m+1|0}n=c[b>>2]|0}v=v+1|0;if(v>>>0>=n>>>0)break;else o=o+F|0}}B=B+1|0}while((B|0)!=(C|0))}if(G){v=(E|0)==0;o=(F|0)==0;n=0;u=0;j=0;do{if(!v){p=0;do{if(!o){l=0;m=n;while(1){j=(c[H+(m<<2)>>2]|0)!=1|j;l=l+1|0;if((l|0)==(F|0))break;else m=m+1|0}n=n+F|0}p=p+1|0}while((p|0)!=(E|0))}u=u+1|0}while((u|0)!=(G|0));if(j)ry(f,1,242584,I)|0}rea(H)}while(0);b:do if(da(c[S>>2]|0,c[R>>2]|0)|0){x=d+4788|0;y=d+40|0;b=d+44|0;z=d+18690|0;A=e+16|0;B=d+18696|0;C=d+5592|0;D=d+5596|0;E=d+5600|0;F=d+5604|0;G=d+5608|0;H=d+5612|0;I=d+5616|0;J=e+24|0;f=d+5620|0;K=0;c:while(1){o=c[L>>2]|0;u=o+(K*5632|0)|0;w=c[x>>2]|0;j=o+(K*5632|0)+8|0;c[j>>2]=w;if(w){n=(c[O>>2]|0)==0;m=0;do{l=(a[N>>0]&4)!=0;do if(n)if(l){g[o+(K*5632|0)+(m<<2)+5176>>2]=+g[d+(m<<2)+5192>>2];break}else{g[o+(K*5632|0)+(m<<2)+20>>2]=+g[d+(m<<2)+4792>>2];break}else{if(l)g[o+(K*5632|0)+(m<<2)+5176>>2]=+g[d+(m<<2)+5192>>2];g[o+(K*5632|0)+(m<<2)+20>>2]=+g[d+(m<<2)+4792>>2]}while(0);m=m+1|0}while(m>>>0<(c[j>>2]|0)>>>0)}c[u>>2]=c[y>>2];c[o+(K*5632|0)+4>>2]=c[b>>2];p=o+(K*5632|0)+16|0;c[p>>2]=a[z>>0];j=o+(K*5632|0)+5628|0;n=a[j>>0]|0;a[j>>0]=n&-3;if(!(c[M>>2]|0))c[o+(K*5632|0)+420>>2]=0;else{a[j>>0]=n|2;n=c[M>>2]|0;if(!n)j=0;else{l=K+1|0;v=0;j=0;do{if((l|0)==(c[d+(v*148|0)+96>>2]|0)){c[o+(K*5632|0)+(j*148|0)+424>>2]=c[d+(j*148|0)+48>>2];c[o+(K*5632|0)+(j*148|0)+428>>2]=c[d+(j*148|0)+52>>2];c[o+(K*5632|0)+(j*148|0)+432>>2]=c[d+(j*148|0)+56>>2];c[o+(K*5632|0)+(j*148|0)+436>>2]=c[d+(j*148|0)+60>>2];c[o+(K*5632|0)+(j*148|0)+440>>2]=c[d+(j*148|0)+64>>2];c[o+(K*5632|0)+(j*148|0)+456>>2]=c[d+(j*148|0)+80>>2];c[o+(K*5632|0)+(j*148|0)+472>>2]=c[d+(j*148|0)+96>>2];j=j+1|0}v=v+1|0}while(v>>>0>>0)}c[o+(K*5632|0)+420>>2]=j+-1}m=c[A>>2]|0;l=sea(m,1080)|0;w=o+(K*5632|0)+5576|0;c[w>>2]=l;j=c[B>>2]|0;if(!j){if(m){j=c[J>>2]|0;n=0;do{if(!(c[j+(n*52|0)+32>>2]|0))c[l+(n*1080|0)+1076>>2]=1<<(c[j+(n*52|0)+24>>2]|0)+-1;n=n+1|0}while(n>>>0>>0);P=m;Q=125}}else{Q=da(m<<2,m)|0;n=qea(Q)|0;v=j+Q|0;c[p>>2]=2;P=qea(Q)|0;c[o+(K*5632|0)+5600>>2]=P;qfa(P|0,j|0,Q|0)|0;qfa(n|0,j|0,Q|0)|0;Q=qea(Q)|0;j=o+(K*5632|0)+5596|0;c[j>>2]=Q;if(!(Ey(n,Q,m)|0)){Q=120;break}Q=c[A>>2]|0;P=qea(Q<<3)|0;c[o+(K*5632|0)+5592>>2]=P;Gz(P,Q,c[j>>2]|0);rea(n);j=c[A>>2]|0;if(j){n=c[w>>2]|0;l=0;do{c[n+(l*1080|0)+1076>>2]=c[v+(l<<2)>>2];l=l+1|0}while(l>>>0>>0)}Ky(u,e)|0;P=c[A>>2]|0;Q=125}if((Q|0)==125?(Q=0,(P|0)!=0):0){u=0;do{p=c[w>>2]|0;o=p+(u*1080|0)|0;c[o>>2]=c[y>>2]&1;l=c[C>>2]|0;v=p+(u*1080|0)+4|0;c[v>>2]=l;j=c[D>>2]|0;if((j|0)>1){n=0;do{j=j>>1;n=n+1|0}while((j|0)>1);j=n}else j=0;c[p+(u*1080|0)+8>>2]=j;j=c[E>>2]|0;if((j|0)>1){n=0;do{j=j>>1;n=n+1|0}while((j|0)>1);j=n}else j=0;c[p+(u*1080|0)+12>>2]=j;c[p+(u*1080|0)+16>>2]=c[F>>2];m=c[G>>2]|0;c[p+(u*1080|0)+20>>2]=(m|0)==0&1;c[p+(u*1080|0)+24>>2]=(m|0)!=0?2:0;c[p+(u*1080|0)+804>>2]=2;if((u|0)==(c[H>>2]|0))j=c[I>>2]|0;else j=0;c[p+(u*1080|0)+808>>2]=j;j=(l|0)==0;do if(!(c[y>>2]&1)){if(j)break;else j=0;do{c[p+(u*1080|0)+(j<<2)+812>>2]=15;c[p+(u*1080|0)+(j<<2)+944>>2]=15;j=j+1|0}while(j>>>0<(c[v>>2]|0)>>>0)}else{if(j){Q=139;break c}if((l|0)>0){v=l;m=0}else break;while(1){v=v+-1|0;j=c[f>>2]|0;do if((m|0)<(j|0)){j=c[d+(m<<2)+5624>>2]|0;if((j|0)<1)c[p+(u*1080|0)+(v<<2)+812>>2]=1;else{if((j|0)>1){n=0;do{j=j>>1;n=n+1|0}while((j|0)>1);j=n}else j=0;c[p+(u*1080|0)+(v<<2)+812>>2]=j}j=c[d+(m<<2)+5756>>2]|0;if((j|0)<1){c[p+(u*1080|0)+(v<<2)+944>>2]=1;break}if((j|0)>1){n=0;do{j=j>>1;n=n+1|0}while((j|0)>1);j=n}else j=0;c[p+(u*1080|0)+(v<<2)+944>>2]=j}else{if((j|0)<=0){Q=152;break c}l=j+-1|0;n=m-l|0;j=c[d+(l<<2)+5624>>2]>>n;n=c[d+(l<<2)+5756>>2]>>n;if((j|0)<1)c[p+(u*1080|0)+(v<<2)+812>>2]=1;else{if((j|0)>1){l=0;do{j=j>>1;l=l+1|0}while((j|0)>1);j=l}else j=0;c[p+(u*1080|0)+(v<<2)+812>>2]=j}if((n|0)<1){c[p+(u*1080|0)+(v<<2)+944>>2]=1;break}if((n|0)>1){j=0;do{n=n>>1;j=j+1|0}while((n|0)>1)}else j=0;c[p+(u*1080|0)+(v<<2)+944>>2]=j}while(0);if((v|0)<=0)break;else m=m+1|0}}while(0);py(o,c[(c[J>>2]|0)+(u*52|0)+24>>2]|0);u=u+1|0}while(u>>>0<(c[A>>2]|0)>>>0)}K=K+1|0;if(K>>>0>=(da(c[S>>2]|0,c[R>>2]|0)|0)>>>0){T=B;break b}}if((Q|0)==120)Ra(236168,236248,6349,236280);else if((Q|0)==139)Ra(236304,236248,6395,236280);else if((Q|0)==152)Ra(236336,236248,6416,236280)}else T=d+18696|0;while(0);j=c[T>>2]|0;if(!j){i=U;return}rea(j);c[T>>2]=0;i=U;return}function Ky(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;if(!b)Ra(254744,236248,6656,236392);if((c[b+16>>2]|0)!=2){b=1;return b|0}n=b+5596|0;m=b+5608|0;e=c[m>>2]|0;o=b+5612|0;do if(c[n>>2]|0){do if((e|0)==(c[o>>2]|0)){f=e+10|0;c[o>>2]=f;e=b+5604|0;f=tea(c[e>>2]|0,f*20|0)|0;if(f){c[e>>2]=f;e=c[m>>2]|0;sfa(f+(e*20|0)|0,0,((c[o>>2]|0)-e|0)*20|0)|0;break}rea(c[e>>2]|0);c[e>>2]=0;c[o>>2]=0;c[m>>2]=0;b=0;return b|0}else f=c[b+5604>>2]|0;while(0);l=f+(e*20|0)|0;k=f+(e*20|0)+12|0;h=c[k>>2]|0;if(h){rea(h);c[k>>2]=0}c[f+(e*20|0)+8>>2]=1;c[f+(e*20|0)+4>>2]=1;c[l>>2]=2;h=c[d+16>>2]|0;h=da(h,h)|0;i=h<<2;j=qea(i)|0;c[k>>2]=j;if(!j){b=0;return b|0}else{Ud[c[235896+(c[l>>2]<<2)>>2]&255](c[n>>2]|0,j,h);c[f+(e*20|0)+16>>2]=i;e=(c[m>>2]|0)+1|0;c[m>>2]=e;n=2;i=l;break}}else{n=1;i=0}while(0);p=b+5608|0;do if((e|0)==(c[o>>2]|0)){h=e+10|0;c[o>>2]=h;e=b+5604|0;h=tea(c[e>>2]|0,h*20|0)|0;if(!h){rea(c[e>>2]|0);c[e>>2]=0;c[o>>2]=0;c[p>>2]=0;b=0;return b|0}else{c[e>>2]=h;f=c[p>>2]|0;sfa(h+(f*20|0)|0,0,((c[o>>2]|0)-f|0)*20|0)|0;if(!i){o=h;e=f;s=0;break}o=h;e=f;s=h+((f+-1|0)*20|0)|0;break}}else{o=c[b+5604>>2]|0;s=i}while(0);r=o+(e*20|0)|0;m=o+(e*20|0)+12|0;f=c[m>>2]|0;if(f){rea(f);c[m>>2]=0}q=n+1|0;c[o+(e*20|0)+8>>2]=n;c[o+(e*20|0)+4>>2]=2;c[r>>2]=2;n=d+16|0;i=c[n>>2]|0;f=i<<2;d=qea(f)|0;c[m>>2]=d;if(!d){b=0;return b|0}h=qea(f)|0;if(!h){rea(c[m>>2]|0);c[m>>2]=0;b=0;return b|0}if(i){k=0;j=h;l=c[b+5576>>2]|0;while(1){g[j>>2]=+(c[l+1076>>2]|0);k=k+1|0;if((k|0)==(i|0))break;else{j=j+4|0;l=l+1080|0}}}Ud[c[235896+(c[r>>2]<<2)>>2]&255](h,c[m>>2]|0,i);rea(h);c[o+(e*20|0)+16>>2]=f;c[p>>2]=(c[p>>2]|0)+1;i=b+5620|0;e=c[i>>2]|0;h=b+5624|0;do if((e|0)==(c[h>>2]|0)){e=e+10|0;c[h>>2]=e;f=b+5616|0;e=tea(c[f>>2]|0,e*20|0)|0;if(e){c[f>>2]=e;b=c[i>>2]|0;sfa(e+(b*20|0)|0,0,((c[h>>2]|0)-b|0)*20|0)|0;f=e;e=b;break}rea(c[f>>2]|0);c[f>>2]=0;c[h>>2]=0;c[i>>2]=0;b=0;return b|0}else f=c[b+5616>>2]|0;while(0);c[f+(e*20|0)+8>>2]=s;b=f+(e*20|0)+16|0;a[b>>0]=a[b>>0]|1;c[f+(e*20|0)+4>>2]=c[n>>2];c[f+(e*20|0)>>2]=q;c[f+(e*20|0)+12>>2]=r;c[i>>2]=(c[i>>2]|0)+1;b=1;return b|0}function Ly(a,b,c){a=a|0;b=b|0;c=c|0;return 1}function My(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;if(!b)Ra(236352,236248,6543,236368);if(!a)Ra(249408,236248,6544,236368);if(!e)Ra(249008,236248,6545,236368);g=zy()|0;f=b+80|0;c[f>>2]=g;if(!g){g=0;return g|0}g=b+188|0;vy(c[g>>2]|0,110)|0;vy(c[g>>2]|0,111)|0;if(!(sO(b,c[g>>2]|0,a,e)|0)){By(c[f>>2]|0);c[f>>2]=0;g=0;return g|0}g=b+184|0;vy(c[g>>2]|0,112)|0;vy(c[g>>2]|0,113)|0;if(!(sO(b,c[g>>2]|0,a,e)|0)){By(c[f>>2]|0);c[f>>2]=0;g=0;return g|0}e=zy()|0;c[d>>2]=e;if(!e){g=0;return g|0}Dy(c[f>>2]|0,e);e=da(c[b+116>>2]|0,c[b+112>>2]|0)|0;a=c[b+192>>2]|0;d=a+36|0;c[d>>2]=e;e=sea(e,40)|0;a=a+40|0;c[a>>2]=e;if(!e){g=0;return g|0}if(!(c[d>>2]|0)){g=1;return g|0}else f=0;while(1){c[e+(f*40|0)+28>>2]=100;c[e+(f*40|0)+20>>2]=0;g=sea(100,24)|0;e=c[a>>2]|0;c[e+(f*40|0)+24>>2]=g;f=f+1|0;if(!g){e=0;f=17;break}if(f>>>0>=(c[d>>2]|0)>>>0){e=1;f=17;break}}if((f|0)==17)return e|0;return 0}function Ny(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(!a)return;b=a+28|0;d=c[b>>2]|0;if(d){rea(d);c[b>>2]=0}f=a+40|0;b=c[f>>2]|0;if(b){g=a+36|0;if(c[g>>2]|0){e=0;do{d=c[b+(e*40|0)+36>>2]|0;if(d){rea(d);b=c[f>>2]|0;c[b+(e*40|0)+36>>2]=0}d=c[b+(e*40|0)+16>>2]|0;if(d){rea(d);b=c[f>>2]|0;c[b+(e*40|0)+16>>2]=0}d=c[b+(e*40|0)+24>>2]|0;if(d){rea(d);b=c[f>>2]|0;c[b+(e*40|0)+24>>2]=0}e=e+1|0}while(e>>>0<(c[g>>2]|0)>>>0)}rea(b)}rea(a);return}function Oy(b,d,e,f,g,h,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;I=i;i=i+16|0;G=I;C=I+12|0;D=I+8|0;c[C>>2]=65424;if(!m)Ra(249408,236248,7407,236440);if(!b)Ra(236352,236248,7408,236440);if(!n)Ra(249008,236248,7409,236440);F=b+8|0;o=c[F>>2]|0;do if((o|0)==8){B=b+76|0;if(!(a[B>>0]&1)){t=b+196|0;u=b+156|0;v=b+72|0;w=b+24|0;x=b+192|0;y=b+16|0;z=b+20|0;A=b+64|0;o=65424;a:while(1){b:do if((o|0)!=65427){while(1){s=ey(m)|0;if((s|0)==0&(H|0)==0){E=13;break}if((ay(m,c[y>>2]|0,2,n)|0)!=2){E=15;break a}Hx(c[y>>2]|0,D,2);if((c[C>>2]|0)==32896?(s=ey(m)|0,(s|0)==0&(H|0)==0):0){E=18;break}q=c[F>>2]|0;o=c[D>>2]|0;if(q&16)c[w>>2]=-2-o+(c[w>>2]|0);r=o+-2|0;c[D>>2]=r;o=c[C>>2]|0;p=235912;while(1){s=c[p>>2]|0;if((s|0)==0|(s|0)==(o|0)){s=p;break}else p=p+12|0}if(!(c[p+4>>2]&q)){E=24;break a}o=c[y>>2]|0;if(r>>>0>(c[z>>2]|0)>>>0){o=tea(o,r)|0;if(!o){E=27;break a}c[y>>2]=o;r=c[D>>2]|0;c[z>>2]=r}r=ay(m,o,r,n)|0;if((r|0)!=(c[D>>2]|0)){E=30;break a}o=c[p+8>>2]|0;if(!o){E=32;break a}if(!(Xd[o&255](b,c[y>>2]|0,r,n)|0)){E=34;break a}J=c[t>>2]|0;o=c[x>>2]|0;r=c[s>>2]|0;p=dy(m)|0;q=c[D>>2]|0;if(!(vO(J,o,r,-4-q+p|0,0,q+4|0)|0)){E=36;break a}do if((c[s>>2]|0)==65424){o=dy(m)|0;o=-4-(c[D>>2]|0)+o|0;J=A;s=c[J+4>>2]|0;if(!(0>(s|0)|(0==(s|0)?o>>>0>(c[J>>2]|0)>>>0:0)))break;J=A;c[J>>2]=o;c[J+4>>2]=0}while(0);if(a[B>>0]&4){E=41;break}if((ay(m,c[y>>2]|0,2,n)|0)!=2){E=45;break a}Hx(c[y>>2]|0,C,2);if((c[C>>2]|0)==65427)break b}if((E|0)==13){E=0;c[F>>2]=64;break}else if((E|0)==18){E=0;c[F>>2]=64;break}else if((E|0)==41){E=0;J=fy(m,c[w>>2]|0,0,n)|0;if(!((H|0)==0?(J|0)==(c[w>>2]|0):0)){E=42;break a}c[C>>2]=65427;break}}while(0);J=ey(m)|0;if((J|0)==0&(H|0)==0?(c[F>>2]|0)==64:0){E=74;break}o=a[B>>0]|0;if(!(o&4)){r=c[t>>2]|0;p=c[u>>2]|0;if(!(c[v>>2]|0)){o=c[w>>2]|0;if(o>>>0>1){q=o+-2|0;c[w>>2]=q}else q=o}else{q=ey(m)|0;q=yfa(q|0,H|0,-2,0)|0;c[w>>2]=q}o=p+(r*5632|0)+5584|0;s=p+(r*5632|0)+5588|0;do if(!q)p=1;else{r=c[o>>2]|0;if(!r){J=qea(q)|0;c[o>>2]=J;if(!J)break a;else{p=0;break}}r=tea(r,(c[s>>2]|0)+q|0)|0;if(!r){E=58;break a}c[o>>2]=r;p=0}while(0);r=c[x>>2]|0;if((r|0)!=0?(P=dy(m)|0,N=H,K=yfa(P|0,N|0,-2,-1)|0,q=H,L=c[t>>2]|0,O=c[r+40>>2]|0,M=c[O+(L*40|0)+12>>2]|0,O=c[O+(L*40|0)+16>>2]|0,J=O+(M*24|0)+8|0,c[J>>2]=K,c[J+4>>2]=q,J=c[w>>2]|0,N=yfa(J|0,0,P|0,N|0)|0,M=O+(M*24|0)+16|0,c[M>>2]=N,c[M+4>>2]=H,(vO(L,r,65427,K,q,J+2|0)|0)==0):0){E=63;break}if(!p)o=ay(m,(c[o>>2]|0)+(c[s>>2]|0)|0,c[w>>2]|0,n)|0;else o=0;c[F>>2]=(o|0)==(c[w>>2]|0)?8:64;c[s>>2]=(c[s>>2]|0)+o;if(!(a[B>>0]&1)){if((ay(m,c[y>>2]|0,2,n)|0)!=2){E=68;break}Hx(c[y>>2]|0,C,2)}}else{a[B>>0]=o&-6;c[F>>2]=8;if((ay(m,c[y>>2]|0,2,n)|0)!=2){E=72;break}Hx(c[y>>2]|0,C,2)}o=c[C>>2]|0;if(!((a[B>>0]&1)==0&(o|0)!=65497)){E=75;break}}switch(E|0){case 15:{ry(n,1,236472,G)|0;O=0;i=I;return O|0}case 24:{ry(n,1,236496,G)|0;O=0;i=I;return O|0}case 27:{rea(c[y>>2]|0);c[y>>2]=0;c[z>>2]=0;ry(n,1,236544,G)|0;O=0;i=I;return O|0}case 30:{ry(n,1,236472,G)|0;O=0;i=I;return O|0}case 32:{ry(n,1,236584,G)|0;O=0;i=I;return O|0}case 34:{c[G>>2]=c[C>>2];ry(n,1,236616,G)|0;O=0;i=I;return O|0}case 36:{ry(n,1,236664,G)|0;O=0;i=I;return O|0}case 42:{ry(n,1,236472,G)|0;O=0;i=I;return O|0}case 45:{ry(n,1,236472,G)|0;O=0;i=I;return O|0}case 58:{rea(c[o>>2]|0);c[o>>2]=0;break}case 63:{ry(n,1,236664,G)|0;O=0;i=I;return O|0}case 68:{ry(n,1,236472,G)|0;O=0;i=I;return O|0}case 72:{ry(n,1,236472,G)|0;O=0;i=I;return O|0}case 74:{o=c[C>>2]|0;E=75;break}}if((E|0)==75)if((o|0)==65497){o=B;E=76;break}else{o=B;break}ry(n,1,241928,G)|0;O=0;i=I;return O|0}else o=B}else if((o|0)==256){c[C>>2]=65497;o=b+76|0;E=76}else{O=0;i=I;return O|0}while(0);if((E|0)==76)if((c[F>>2]|0)!=256){c[b+196>>2]=0;c[F>>2]=256}q=b+196|0;if(!(a[o>>0]&1)){r=da(c[b+112>>2]|0,c[b+116>>2]|0)|0;p=c[q>>2]|0;c:do if(p>>>0>>0){o=p;p=(c[b+156>>2]|0)+(p*5632|0)|0;while(1){if(c[p+5584>>2]|0)break c;o=o+1|0;c[q>>2]=o;if(o>>>0>>0)p=p+5632|0;else break}}else o=p;while(0);if((o|0)==(r|0)){c[l>>2]=0;O=1;i=I;return O|0}}else o=c[q>>2]|0;p=b+200|0;q=b+196|0;if(!(NA(c[p>>2]|0,o)|0)){ry(n,1,236704,G)|0;O=0;i=I;return O|0}else{O=(da(c[b+112>>2]|0,c[b+116>>2]|0)|0)+-1|0;c[G>>2]=c[q>>2];c[G+4>>2]=O;ry(n,4,236744,G)|0;c[d>>2]=c[q>>2];c[l>>2]=1;c[e>>2]=OA(c[p>>2]|0)|0;O=c[c[(c[p>>2]|0)+20>>2]>>2]|0;c[f>>2]=c[O>>2];c[g>>2]=c[O+4>>2];c[h>>2]=c[O+8>>2];c[j>>2]=c[O+12>>2];c[k>>2]=c[O+16>>2];c[F>>2]=c[F>>2]|128;O=1;i=I;return O|0}return 0}function Py(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;t=u;p=u+4|0;q=u+8|0;if(!g)Ra(249408,236248,7629,236784);if(!b)Ra(236352,236248,7630,236784);if(!h)Ra(249008,236248,7631,236784);r=b+8|0;if(!(c[r>>2]&128)){t=0;i=u;return t|0}s=b+196|0;if((c[s>>2]|0)!=(d|0)){t=0;i=u;return t|0}j=c[b+156>>2]|0;k=j+(d*5632|0)|0;o=j+(d*5632|0)+5584|0;l=c[o>>2]|0;if(!l){pO(k);t=0;i=u;return t|0}m=b+200|0;n=j+(d*5632|0)+5588|0;if(!(QA(c[m>>2]|0,l,c[n>>2]|0,d,c[b+192>>2]|0)|0)){pO(k);c[r>>2]=c[r>>2]|32768;ry(h,1,236808,t)|0;t=0;i=u;return t|0}if(!(RA(c[m>>2]|0,e,f)|0)){t=0;i=u;return t|0}j=c[o>>2]|0;if(j){rea(j);c[o>>2]=0;c[n>>2]=0}f=b+76|0;a[f>>0]=a[f>>0]&-2;c[r>>2]=c[r>>2]&-129;f=ey(g)|0;b=c[r>>2]|0;if((f|0)==0&(H|0)==0&(b|0)==64|(b|0)==256){t=1;i=u;return t|0}if((ay(g,q,2,h)|0)!=2){ry(h,1,236472,t)|0;t=0;i=u;return t|0}Hx(q,p,2);j=c[p>>2]|0;if((j|0)==65497){c[s>>2]=0;c[r>>2]=256;t=1;i=u;return t|0}else if((j|0)==65424){t=1;i=u;return t|0}else{ry(h,1,236832,t)|0;t=ey(g)|0;if(!((t|0)==0&(H|0)==0)){t=0;i=u;return t|0}c[r>>2]=64;t=1;i=u;return t|0}return 0}function Qy(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=i;i=i+16|0;y=z;l=c[b+80>>2]|0;if((c[b+8>>2]|0)!=8){ry(j,1,236864,y)|0;y=0;i=z;return y|0}if(!(f|e|g|h)){ry(j,4,236944,y)|0;c[b+28>>2]=0;c[b+32>>2]=0;c[b+36>>2]=c[b+112>>2];c[b+40>>2]=c[b+116>>2];y=1;i=z;return y|0}if((e|0)<=-1)Ra(237016,236248,7996,237032);if((f|0)<=-1)Ra(237056,236248,7997,237032);n=l+8|0;k=c[n>>2]|0;if(k>>>0>>0){c[y>>2]=e;c[y+4>>2]=k;ry(j,1,237072,y)|0;y=0;i=z;return y|0}k=c[l>>2]|0;if(k>>>0>e>>>0){c[y>>2]=e;c[y+4>>2]=k;ry(j,2,237160,y)|0;c[b+28>>2]=0;e=c[l>>2]|0}else c[b+28>>2]=((e-(c[b+92>>2]|0)|0)>>>0)/((c[b+100>>2]|0)>>>0)|0;c[d>>2]=e;m=l+12|0;e=c[m>>2]|0;if(e>>>0>>0){c[y>>2]=f;c[y+4>>2]=e;ry(j,1,237248,y)|0;y=0;i=z;return y|0}k=l+4|0;e=c[k>>2]|0;if(e>>>0>f>>>0){c[y>>2]=f;c[y+4>>2]=e;ry(j,2,237336,y)|0;c[b+32>>2]=0;e=c[k>>2]|0}else{c[b+32>>2]=((f-(c[b+96>>2]|0)|0)>>>0)/((c[b+104>>2]|0)>>>0)|0;e=f}u=d+4|0;c[u>>2]=e;if(!g)Ra(237424,236248,8037,237032);if(!h)Ra(237448,236248,8038,237032);e=c[l>>2]|0;if(e>>>0>g>>>0){c[y>>2]=g;c[y+4>>2]=e;ry(j,1,237472,y)|0;y=0;i=z;return y|0}e=c[n>>2]|0;do if(e>>>0>=g>>>0){e=c[b+100>>2]|0;if(!e)Ra(258480,258488,105,258528);else{c[b+36>>2]=(g+-1+e-(c[b+92>>2]|0)|0)/(e|0)|0;c[d+8>>2]=g;break}}else{c[y>>2]=g;c[y+4>>2]=e;ry(j,2,237568,y)|0;c[b+36>>2]=c[b+112>>2];c[d+8>>2]=c[n>>2]}while(0);e=c[k>>2]|0;if(e>>>0>h>>>0){c[y>>2]=h;c[y+4>>2]=e;ry(j,1,237656,y)|0;y=0;i=z;return y|0}e=c[m>>2]|0;do if(e>>>0>=h>>>0){e=c[b+104>>2]|0;if(!e)Ra(258480,258488,105,258528);else{c[b+40>>2]=(h+-1+e-(c[b+96>>2]|0)|0)/(e|0)|0;c[d+12>>2]=h;break}}else{c[y>>2]=h;c[y+4>>2]=e;ry(j,2,237752,y)|0;c[b+40>>2]=c[b+116>>2];c[d+12>>2]=c[m>>2]}while(0);s=b+76|0;a[s>>0]=a[s>>0]|2;s=c[d+16>>2]|0;t=c[d>>2]|0;a:do if(s){q=d+8|0;r=d+12|0;e=0;p=c[d+24>>2]|0;while(1){k=c[p>>2]|0;if(!k){f=41;break}l=(t+-1+k|0)/(k|0)|0;c[p+16>>2]=l;b=c[p+4>>2]|0;if(!b){f=43;break}d=c[u>>2]|0;n=b+-1|0;g=(n+d|0)/(b|0)|0;c[p+20>>2]=g;o=c[q>>2]|0;A=(k+-1+o|0)/(k|0)|0;f=c[p+40>>2]|0;h=1<>31;A=yfa(A|0,((A|0)<0)<<31>>31|0,-1,-1)|0;A=yfa(A|0,H|0,h|0,m|0)|0;A=pfa(A|0,H|0,f|0)|0;k=yfa(l|0,((l|0)<0)<<31>>31|0,-1,-1)|0;k=yfa(k|0,H|0,h|0,m|0)|0;k=pfa(k|0,H|0,f|0)|0;k=A-k|0;if((k|0)<0){f=45;break}l=c[r>>2]|0;A=(n+l|0)/(b|0)|0;c[p+8>>2]=k;A=yfa(A|0,((A|0)<0)<<31>>31|0,-1,-1)|0;A=yfa(A|0,H|0,h|0,m|0)|0;A=pfa(A|0,H|0,f|0)|0;k=yfa(g|0,((g|0)<0)<<31>>31|0,-1,-1)|0;k=yfa(k|0,H|0,h|0,m|0)|0;k=pfa(k|0,H|0,f|0)|0;k=A-k|0;if((k|0)<0){f=47;break}c[p+12>>2]=k;e=e+1|0;if(e>>>0>=s>>>0){v=d;w=o;x=l;break a}else p=p+52|0}if((f|0)==41)Ra(258480,258488,105,258528);else if((f|0)==43)Ra(258480,258488,105,258528);else if((f|0)==45){c[y>>2]=e;c[y+4>>2]=k;ry(j,1,237848,y)|0;A=0;i=z;return A|0}else if((f|0)==47){c[y>>2]=e;c[y+4>>2]=k;ry(j,1,237920,y)|0;A=0;i=z;return A|0}}else{v=c[u>>2]|0;w=c[d+8>>2]|0;x=c[d+12>>2]|0}while(0);c[y>>2]=t;c[y+4>>2]=v;c[y+8>>2]=w;c[y+12>>2]=x;ry(j,4,237992,y)|0;A=1;i=z;return A|0}function Ry(){var b=0,d=0,e=0;d=qea(208)|0;if(!d){d=0;return d|0}sfa(d|0,0,208)|0;c[d>>2]=1;a[d+180>>0]=2;b=qea(5632)|0;c[d+12>>2]=b;if(!b){Iy(d);d=0;return d|0}sfa(b|0,0,5632)|0;b=qea(1e3)|0;c[d+16>>2]=b;if(!b){Iy(d);d=0;return d|0}c[d+20>>2]=1e3;c[d+60>>2]=-1;b=d+64|0;c[b>>2]=0;c[b+4>>2]=0;b=sea(1,48)|0;if((b|0)!=0?(c[b+32>>2]=100,c[b+24>>2]=0,e=sea(100,24)|0,c[b+28>>2]=e,(e|0)!=0):0)c[b+40>>2]=0;else b=0;c[d+192>>2]=b;e=ty()|0;c[d+188>>2]=e;if(!e){Iy(d);e=0;return e|0}e=ty()|0;c[d+184>>2]=e;if(e){e=d;return e|0}Iy(d);e=0;return e|0}function Sy(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;o=i;i=i+32|0;n=o;if(b&384){Xb(238032,11,1,d|0)|0;i=o;return}if((b&1|0)!=0?(f=c[a+80>>2]|0,(f|0)!=0):0)Ty(f,0,d);if(b&2){Xb(241152,36,1,d|0)|0;h=c[a+96>>2]|0;c[n>>2]=c[a+92>>2];c[n+4>>2]=h;Uc(d|0,241192,n|0)|0;h=c[a+104>>2]|0;c[n>>2]=c[a+100>>2];c[n+4>>2]=h;Uc(d|0,241216,n|0)|0;h=c[a+116>>2]|0;c[n>>2]=c[a+112>>2];c[n+4>>2]=h;Uc(d|0,241240,n|0)|0;wO(c[a+12>>2]|0,c[(c[a+80>>2]|0)+16>>2]|0,d);Xb(238200,2,1,d|0)|0}if((b&8|0)!=0?(j=da(c[a+112>>2]|0,c[a+116>>2]|0)|0,(j|0)!=0):0){f=a+80|0;g=0;h=c[a+156>>2]|0;while(1){wO(h,c[(c[f>>2]|0)+16>>2]|0,d);g=g+1|0;if((g|0)==(j|0))break;else h=h+5632|0}}if(!(b&16)){i=o;return}j=c[a+192>>2]|0;Xb(241256,37,1,d|0)|0;g=j;a=c[g+4>>2]|0;f=j+8|0;b=c[f>>2]|0;f=c[f+4>>2]|0;h=n;c[h>>2]=c[g>>2];c[h+4>>2]=a;h=n+8|0;c[h>>2]=b;c[h+4>>2]=f;Uc(d|0,241296,n|0)|0;Xb(241368,17,1,d|0)|0;h=j+28|0;f=c[h>>2]|0;a:do if((f|0)!=0?(k=j+24|0,(c[k>>2]|0)!=0):0){g=0;while(1){p=f+(g*24|0)+8|0;q=c[p>>2]|0;p=c[p+4>>2]|0;b=c[f+(g*24|0)+16>>2]|0;c[n>>2]=e[f+(g*24|0)>>1];a=n+4|0;c[a>>2]=q;c[a+4>>2]=p;c[n+12>>2]=b;Uc(d|0,241392,n|0)|0;g=g+1|0;if(g>>>0>=(c[k>>2]|0)>>>0)break a;f=c[h>>2]|0}}while(0);Xb(241424,4,1,d|0)|0;b=j+40|0;h=c[b>>2]|0;if((h|0)!=0?(m=j+36|0,l=c[m>>2]|0,(l|0)!=0):0){g=0;f=0;do{f=(c[h+(g*40|0)+4>>2]|0)+f|0;g=g+1|0}while((g|0)!=(l|0));if(f){Xb(241432,16,1,d|0)|0;if(c[m>>2]|0){f=c[b>>2]|0;a=0;do{j=c[f+(a*40|0)+4>>2]|0;c[n>>2]=a;c[n+4>>2]=j;Uc(d|0,241456,n|0)|0;f=c[b>>2]|0;g=c[f+(a*40|0)+16>>2]|0;b:do if(!((g|0)==0|(j|0)==0)){f=0;while(1){r=g+(f*24|0)|0;s=c[r>>2]|0;r=c[r+4>>2]|0;k=g+(f*24|0)+8|0;l=c[k>>2]|0;k=c[k+4>>2]|0;q=g+(f*24|0)+16|0;p=c[q>>2]|0;q=c[q+4>>2]|0;c[n>>2]=f;h=n+4|0;c[h>>2]=s;c[h+4>>2]=r;h=n+12|0;c[h>>2]=l;c[h+4>>2]=k;h=n+20|0;c[h>>2]=p;c[h+4>>2]=q;Uc(d|0,241496,n|0)|0;h=f+1|0;f=c[b>>2]|0;if((h|0)==(j|0))break b;g=c[f+(a*40|0)+16>>2]|0;f=h}}while(0);g=c[f+(a*40|0)+24>>2]|0;c:do if((g|0)!=0?(c[f+(a*40|0)+20>>2]|0)!=0:0){f=0;while(1){r=g+(f*24|0)+8|0;q=c[r>>2]|0;r=c[r+4>>2]|0;h=c[g+(f*24|0)+16>>2]|0;c[n>>2]=e[g+(f*24|0)>>1];s=n+4|0;c[s>>2]=q;c[s+4>>2]=r;c[n+12>>2]=h;Uc(d|0,241392,n|0)|0;h=f+1|0;f=c[b>>2]|0;if(h>>>0>=(c[f+(a*40|0)+20>>2]|0)>>>0)break c;g=c[f+(a*40|0)+24>>2]|0;f=h}}while(0);a=a+1|0}while(a>>>0<(c[m>>2]|0)>>>0)}Xb(241424,4,1,d|0)|0}}Xb(238200,2,1,d|0)|0;i=o;return}function Ty(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=k+12|0;if(!d){Xb(238088,13,1,e|0)|0;a[h+1>>0]=0;f=9}else{Xb(238048,36,1,c[r>>2]|0)|0;f=0}a[h>>0]=f;g=c[b>>2]|0;f=c[b+4>>2]|0;c[j>>2]=h;c[j+4>>2]=g;c[j+8>>2]=f;Uc(e|0,238104,j|0)|0;f=c[b+8>>2]|0;g=c[b+12>>2]|0;c[j>>2]=h;c[j+4>>2]=f;c[j+8>>2]=g;Uc(e|0,238128,j|0)|0;g=b+16|0;f=c[g>>2]|0;c[j>>2]=h;c[j+4>>2]=f;Uc(e|0,238152,j|0)|0;f=b+24|0;if(!(c[f>>2]|0)){Xb(238200,2,1,e|0)|0;i=k;return}if(!(c[g>>2]|0)){Xb(238200,2,1,e|0)|0;i=k;return}else b=0;do{c[j>>2]=h;c[j+4>>2]=b;Uc(e|0,238168,j|0)|0;Uy((c[f>>2]|0)+(b*52|0)|0,d,e);c[j>>2]=h;Uc(e|0,238192,j|0)|0;b=b+1|0}while(b>>>0<(c[g>>2]|0)>>>0);Xb(238200,2,1,e|0)|0;i=k;return}function Uy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;h=j;g=j+12|0;f=(d|0)!=0;if(f){Xb(238208,41,1,c[r>>2]|0)|0;d=0}else{a[g+1>>0]=9;a[g+2>>0]=0;d=9}a[g>>0]=d;k=c[b>>2]|0;d=c[b+4>>2]|0;c[h>>2]=g;c[h+4>>2]=k;c[h+8>>2]=d;Uc(e|0,238256,h|0)|0;d=c[b+24>>2]|0;c[h>>2]=g;c[h+4>>2]=d;Uc(e|0,238280,h|0)|0;b=c[b+32>>2]|0;c[h>>2]=g;c[h+4>>2]=b;Uc(e|0,238296,h|0)|0;if(!f){i=j;return}Xb(238200,2,1,e|0)|0;i=j;return}function Vy(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;e=m;d=(c[a+80>>2]|0)+16|0;k=c[d>>2]|0;b=sea(1,56)|0;c[e>>2]=b;if(!b){l=0;i=m;return l|0}j=c[d>>2]|0;c[b+24>>2]=j;c[b>>2]=c[a+92>>2];c[b+4>>2]=c[a+96>>2];c[b+8>>2]=c[a+100>>2];c[b+12>>2]=c[a+104>>2];c[b+16>>2]=c[a+112>>2];c[b+20>>2]=c[a+116>>2];c[b+52>>2]=0;d=c[a+12>>2]|0;c[b+32>>2]=c[d>>2];c[b+36>>2]=c[d+4>>2];c[b+40>>2]=c[d+8>>2];c[b+44>>2]=c[d+16>>2];a=sea(j,1080)|0;j=b+48|0;c[j>>2]=a;if(!a){lA(e);l=0;i=m;return l|0}if(!k){l=b;i=m;return l|0}h=d+5576|0;d=0;while(1){g=c[h>>2]|0;c[a+(d*1080|0)+4>>2]=c[g+(d*1080|0)>>2];e=g+(d*1080|0)+4|0;f=c[e>>2]|0;c[a+(d*1080|0)+8>>2]=f;c[a+(d*1080|0)+12>>2]=c[g+(d*1080|0)+8>>2];c[a+(d*1080|0)+16>>2]=c[g+(d*1080|0)+12>>2];c[a+(d*1080|0)+20>>2]=c[g+(d*1080|0)+16>>2];c[a+(d*1080|0)+24>>2]=c[g+(d*1080|0)+20>>2];if(f>>>0<33){qfa(a+(d*1080|0)+948|0,g+(d*1080|0)+944|0,f|0)|0;qfa(a+(d*1080|0)+816|0,g+(d*1080|0)+812|0,c[e>>2]|0)|0}f=c[g+(d*1080|0)+24>>2]|0;c[a+(d*1080|0)+28>>2]=f;c[a+(d*1080|0)+808>>2]=c[g+(d*1080|0)+804>>2];if((f|0)!=1){e=(c[e>>2]|0)*3|0;if((e+-3|0)>>>0<96){e=e+-2|0;l=10}}else{e=1;l=10}if((l|0)==10){l=0;f=0;do{c[a+(d*1080|0)+(f<<2)+32>>2]=c[g+(d*1080|0)+(f<<3)+32>>2];c[a+(d*1080|0)+(f<<2)+420>>2]=c[g+(d*1080|0)+(f<<3)+28>>2];f=f+1|0}while((f|0)!=(e|0))}c[a+(d*1080|0)+812>>2]=c[g+(d*1080|0)+808>>2];d=d+1|0;if((d|0)==(k|0))break;a=c[j>>2]|0}i=m;return b|0}function Wy(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;b=sea(1,48)|0;if(!b){l=0;return l|0}j=a+192|0;a=c[j>>2]|0;l=a;f=c[l+4>>2]|0;d=b;c[d>>2]=c[l>>2];c[d+4>>2]=f;d=a+8|0;f=c[d+4>>2]|0;l=b+8|0;c[l>>2]=c[d>>2];c[l+4>>2]=f;l=a+16|0;f=c[l+4>>2]|0;d=b+16|0;c[d>>2]=c[l>>2];c[d+4>>2]=f;d=c[a+24>>2]|0;c[b+24>>2]=d;d=d*24|0;f=qea(d)|0;l=b+28|0;c[l>>2]=f;if(!f){rea(b);l=0;return l|0}e=c[a+28>>2]|0;if(!e){rea(f);c[l>>2]=0;a=c[j>>2]|0;f=0}else qfa(f|0,e|0,d|0)|0;i=c[a+36>>2]|0;c[b+36>>2]=i;k=sea(i,40)|0;d=b+40|0;c[d>>2]=k;if(!k){rea(f);rea(b);l=0;return l|0}e=c[a+40>>2]|0;if(!e){rea(k);c[d>>2]=0;l=b;return l|0}if(!i){l=b;return l|0}else d=0;while(1){e=c[e+(d*40|0)+20>>2]|0;c[k+(d*40|0)+20>>2]=e;e=e*24|0;f=qea(e)|0;g=k+(d*40|0)+24|0;c[g>>2]=f;if(!f){e=13;break}h=c[(c[a+40>>2]|0)+(d*40|0)+24>>2]|0;if(!h){rea(f);c[g>>2]=0;a=c[j>>2]|0}else qfa(f|0,h|0,e|0)|0;e=a+40|0;a=c[(c[e>>2]|0)+(d*40|0)+4>>2]|0;c[k+(d*40|0)+4>>2]=a;a=a*24|0;g=qea(a)|0;f=k+(d*40|0)+16|0;c[f>>2]=g;if(!g){e=20;break}e=c[(c[e>>2]|0)+(d*40|0)+16>>2]|0;if(!e){rea(g);c[f>>2]=0}else qfa(g|0,e|0,a|0)|0;c[k+(d*40|0)+32>>2]=0;c[k+(d*40|0)+36>>2]=0;d=d+1|0;if(d>>>0>=i>>>0){e=28;break}a=c[j>>2]|0;e=c[a+40>>2]|0}if((e|0)==13){if(d){a=0;do{rea(c[k+(a*40|0)+24>>2]|0);a=a+1|0}while((a|0)!=(d|0))}rea(k);rea(c[l>>2]|0);rea(b);l=0;return l|0}else if((e|0)==20){if(d){a=0;do{rea(c[k+(a*40|0)+24>>2]|0);rea(c[k+(a*40|0)+16>>2]|0);a=a+1|0}while((a|0)!=(d|0))}rea(k);rea(c[l>>2]|0);rea(b);l=0;return l|0}else if((e|0)==28)return b|0;return 0}function Xy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;if(!d){d=0;return d|0}f=zy()|0;g=a+84|0;c[g>>2]=f;if(!f){d=0;return d|0}Dy(d,f);if(!a)Ra(236352,236248,9191,241056);f=a+184|0;vy(c[f>>2]|0,114)|0;if(!(sO(a,c[f>>2]|0,b,e)|0)){d=a+80|0;By(c[d>>2]|0);c[d>>2]=0;d=0;return d|0}a=c[d+16>>2]|0;if(!a){d=1;return d|0}b=c[(c[g>>2]|0)+24>>2]|0;f=c[d+24>>2]|0;e=0;do{c[f+(e*52|0)+36>>2]=c[b+(e*52|0)+36>>2];d=b+(e*52|0)+44|0;c[f+(e*52|0)+44>>2]=c[d>>2];c[d>>2]=0;e=e+1|0}while(e>>>0>>0);f=1;return f|0}function Yy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=i;i=i+16|0;j=x;if(!d){ry(e,1,238312,j)|0;w=0;i=x;return w|0}g=c[a+112>>2]|0;h=da(c[a+116>>2]|0,g)|0;if(h>>>0<=f>>>0){c[j>>2]=f;c[j+4>>2]=h+-1;ry(e,1,238352,j)|0;w=0;i=x;return w|0}w=(f>>>0)%(g>>>0)|0;v=(f>>>0)/(g>>>0)|0;q=c[a+100>>2]|0;p=da(q,w)|0;r=c[a+92>>2]|0;p=p+r|0;c[d>>2]=p;u=a+80|0;g=c[u>>2]|0;s=c[g>>2]|0;p=p>>>0>>0?s:p;c[d>>2]=p;r=(da(q,w+1|0)|0)+r|0;w=d+8|0;c[w>>2]=r;q=c[g+8>>2]|0;r=r>>>0>q>>>0?q:r;c[w>>2]=r;w=c[a+104>>2]|0;q=da(w,v)|0;s=c[a+96>>2]|0;q=q+s|0;t=d+4|0;c[t>>2]=q;n=c[g+4>>2]|0;q=q>>>0>>0?n:q;c[t>>2]=q;s=(da(w,v+1|0)|0)+s|0;v=d+12|0;c[v>>2]=s;w=c[g+12>>2]|0;s=s>>>0>w>>>0?w:s;c[v>>2]=s;v=d+24|0;w=d+16|0;t=c[w>>2]|0;a:do if(t){g=c[g+24>>2]|0;n=0;o=c[v>>2]|0;while(1){k=c[g+(n*52|0)+40>>2]|0;c[o+40>>2]=k;h=c[o>>2]|0;if(!h){g=8;break}j=h+-1|0;m=(j+p|0)/(h|0)|0;c[o+16>>2]=m;l=c[o+4>>2]|0;if(!l){g=10;break}A=l+-1|0;y=(A+q|0)/(l|0)|0;c[o+20>>2]=y;z=(j+r|0)/(h|0)|0;h=(A+s|0)/(l|0)|0;j=1<>31;z=yfa(z|0,((z|0)<0)<<31>>31|0,-1,-1)|0;z=yfa(z|0,H|0,j|0,l|0)|0;z=pfa(z|0,H|0,k|0)|0;m=yfa(m|0,((m|0)<0)<<31>>31|0,-1,-1)|0;m=yfa(m|0,H|0,j|0,l|0)|0;m=pfa(m|0,H|0,k|0)|0;c[o+8>>2]=z-m;m=yfa(h|0,((h|0)<0)<<31>>31|0,-1,-1)|0;m=yfa(m|0,H|0,j|0,l|0)|0;m=pfa(m|0,H|0,k|0)|0;h=yfa(y|0,((y|0)<0)<<31>>31|0,-1,-1)|0;l=yfa(h|0,H|0,j|0,l|0)|0;l=pfa(l|0,H|0,k|0)|0;c[o+12>>2]=m-l;n=n+1|0;if(n>>>0>=t>>>0)break a;else o=o+52|0}if((g|0)==8)Ra(258480,258488,105,258528);else if((g|0)==10)Ra(258480,258488,105,258528)}while(0);m=a+84|0;g=c[m>>2]|0;if(g)By(g);g=zy()|0;c[m>>2]=g;if(!g){A=0;i=x;return A|0}Dy(d,g);c[a+60>>2]=f;if(!a)Ra(236352,236248,9324,240704);A=a+184|0;vy(c[A>>2]|0,115)|0;if(!(sO(a,c[A>>2]|0,b,e)|0)){By(c[u>>2]|0);c[u>>2]=0;A=0;i=x;return A|0}g=c[w>>2]|0;if(!g){A=1;i=x;return A|0}k=c[(c[m>>2]|0)+24>>2]|0;j=c[v>>2]|0;l=0;while(1){c[j+(l*52|0)+36>>2]=c[k+(l*52|0)+36>>2];h=c[j+(l*52|0)+44>>2]|0;if(!h)h=k;else{rea(h);h=c[(c[m>>2]|0)+24>>2]|0;j=c[v>>2]|0;g=c[w>>2]|0}A=h+(l*52|0)+44|0;c[j+(l*52|0)+44>>2]=c[A>>2];c[A>>2]=0;l=l+1|0;if(l>>>0>=g>>>0){g=1;break}else k=h}i=x;return g|0}function Zy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;c[a+160>>2]=b;e=c[a+80>>2]|0;a:do if((((e|0)!=0?(h=c[e+24>>2]|0,(h|0)!=0):0)?(f=c[a+12>>2]|0,(f|0)!=0):0)?(g=c[f+5576>>2]|0,(g|0)!=0):0){e=c[e+16>>2]|0;if(!e)e=1;else{f=0;while(1){if((c[g+(f*1080|0)+4>>2]|0)>>>0<=b>>>0)break;c[h+(f*52|0)+40>>2]=b;f=f+1|0;if(f>>>0>=e>>>0){e=1;break a}}ry(d,1,238416,j)|0;e=0}}else e=0;while(0);i=k;return e|0}function _y(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=i;i=i+16|0;N=P;if(!d)Ra(236352,236248,9507,238496);if(!e)Ra(249408,236248,9508,238496);if(!f)Ra(249008,236248,9509,238496);g=qea(1e3)|0;if(!g){ry(f,1,238512,N)|0;O=0;i=P;return O|0}I=d+116|0;J=d+112|0;K=da(c[J>>2]|0,c[I>>2]|0)|0;a:do if(K){D=d+196|0;E=d+12|0;F=d+156|0;G=d+200|0;H=d+8|0;L=0;h=1e3;b:while(1){if((c[D>>2]|0)!=(L|0)){O=13;break}B=L;L=L+1|0;C=da(c[I>>2]|0,c[J>>2]|0)|0;c[N>>2]=L;c[N+4>>2]=C;ry(f,4,240680,N)|0;c[E>>2]=0;C=c[G>>2]|0;c[C+12>>2]=c[(c[F>>2]|0)+(B*5632|0)+5580>>2];c[H>>2]=0;if(!(MA(C,c[D>>2]|0)|0)){M=g;break}C=SA(c[G>>2]|0)|0;if(C>>>0>h>>>0){h=tea(g,C)|0;if(!h){O=18;break}else{g=h;h=C}}k=c[G>>2]|0;w=k+24|0;x=c[w>>2]|0;if(c[x+16>>2]|0){y=x+4|0;z=x+8|0;j=g;A=0;B=c[x+24>>2]|0;v=c[(c[c[k+20>>2]>>2]|0)+20>>2]|0;while(1){n=c[B+24>>2]|0;n=((n&7|0)!=0&1)+(n>>>3)|0;n=(n|0)==3?4:n;o=c[v+8>>2]|0;p=c[v>>2]|0;t=o-p|0;r=c[v+12>>2]|0;s=c[v+4>>2]|0;k=c[x>>2]|0;m=c[B>>2]|0;if(!m){O=22;break b}l=c[B+4>>2]|0;if(!l){O=24;break b}q=(m+~k+(c[z>>2]|0)|0)/(m|0)|0;u=q-t|0;k=(c[B+44>>2]|0)+(p-((k+-1+m|0)/(m|0)|0)+(da(q,s-((l+-1+(c[y>>2]|0)|0)/(l|0)|0)|0)|0)<<2)|0;do if((n|0)==2){l=(r|0)==(s|0);if(!(c[B+32>>2]|0)){if(!l){q=(o|0)==(p|0);o=r-s|0;p=0;while(1){if(!q){l=0;m=j;n=k;while(1){b[m>>1]=c[n>>2];l=l+1|0;if((l|0)==(t|0))break;else{m=m+2|0;n=n+4|0}}j=j+(t<<1)|0;k=k+(t<<2)|0}p=p+1|0;if((p|0)==(o|0))break;else k=k+(u<<2)|0}}}else if(!l){q=(o|0)==(p|0);o=r-s|0;p=0;while(1){if(!q){l=0;m=j;n=k;while(1){b[m>>1]=c[n>>2];l=l+1|0;if((l|0)==(t|0))break;else{m=m+2|0;n=n+4|0}}j=j+(t<<1)|0;k=k+(t<<2)|0}p=p+1|0;if((p|0)==(o|0))break;else k=k+(u<<2)|0}}}else if((n|0)==1){l=(r|0)==(s|0);if(!(c[B+32>>2]|0)){if(l)break;q=(o|0)==(p|0);o=r-s|0;p=0;while(1){if(!q){l=0;m=j;n=k;while(1){a[m>>0]=c[n>>2];l=l+1|0;if((l|0)==(t|0))break;else{m=m+1|0;n=n+4|0}}j=j+t|0;k=k+(t<<2)|0}p=p+1|0;if((p|0)==(o|0))break;else k=k+(u<<2)|0}}else{if(l)break;q=(o|0)==(p|0);o=r-s|0;p=0;while(1){if(!q){l=0;m=j;n=k;while(1){a[m>>0]=c[n>>2];l=l+1|0;if((l|0)==(t|0))break;else{m=m+1|0;n=n+4|0}}j=j+t|0;k=k+(t<<2)|0}p=p+1|0;if((p|0)==(o|0))break;else k=k+(u<<2)|0}}}else if((n|0)==4)if((r|0)!=(s|0)){q=(o|0)==(p|0);o=r-s|0;p=0;while(1){if(!q){l=0;m=j;n=k;while(1){c[m>>2]=c[n>>2];l=l+1|0;if((l|0)==(t|0))break;else{m=m+4|0;n=n+4|0}}j=j+(t<<2)|0;k=k+(t<<2)|0}p=p+1|0;if((p|0)==(o|0))break;else k=k+(u<<2)|0}}while(0);A=A+1|0;if(A>>>0>=(c[(c[w>>2]|0)+16>>2]|0)>>>0)break;else{B=B+52|0;v=v+44|0}}}if(!(zO(d,g,C,e,f)|0)){g=0;O=63;break}if(L>>>0>=K>>>0)break a}if((O|0)==13){ry(f,1,240640,N)|0;M=g}else if((O|0)==18){rea(g);ry(f,1,238512,N)|0;O=0;i=P;return O|0}else if((O|0)==22)Ra(258480,258488,105,258528);else if((O|0)==24)Ra(258480,258488,105,258528);else if((O|0)==63){i=P;return g|0}rea(M);O=0;i=P;return O|0}while(0);rea(g);O=1;i=P;return O|0}function $y(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(!a)Ra(236352,236248,9790,240272);e=a+184|0;vy(c[e>>2]|0,116)|0;if(c[a+160>>2]|0)vy(c[e>>2]|0,117)|0;vy(c[e>>2]|0,118)|0;vy(c[e>>2]|0,119)|0;vy(c[e>>2]|0,120)|0;return (sO(a,c[e>>2]|0,b,d)|0)!=0|0}function az(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;if(!a)Ra(236352,236248,9569,238552);if(!b)Ra(249408,236248,9570,238552);if(!e)Ra(249008,236248,9571,238552);i=zy()|0;h=a+80|0;c[h>>2]=i;Dy(d,i);i=c[d+24>>2]|0;if((i|0)!=0?(j=c[d+16>>2]|0,(j|0)!=0):0){g=0;do{d=i+(g*52|0)+44|0;f=c[d>>2]|0;if(f){c[(c[(c[h>>2]|0)+24>>2]|0)+(g*52|0)+44>>2]=f;c[d>>2]=0}g=g+1|0}while(g>>>0>>0)}i=a+188|0;vy(c[i>>2]|0,121)|0;vy(c[i>>2]|0,122)|0;vy(c[i>>2]|0,123)|0;if(!(sO(a,c[i>>2]|0,b,e)|0)){a=0;return a|0}d=a+184|0;vy(c[d>>2]|0,124)|0;vy(c[d>>2]|0,125)|0;vy(c[d>>2]|0,126)|0;vy(c[d>>2]|0,127)|0;vy(c[d>>2]|0,128)|0;f=a+160|0;if((c[f>>2]|0)!=0?(vy(c[d>>2]|0,129)|0,(c[f>>2]|0)==3):0)vy(c[d>>2]|0,130)|0;vy(c[d>>2]|0,131)|0;if(c[a+108>>2]|0)vy(c[d>>2]|0,132)|0;if(c[a+88>>2]&33024)vy(c[d>>2]|0,133)|0;if(c[a+192>>2]|0)vy(c[d>>2]|0,134)|0;vy(c[d>>2]|0,135)|0;vy(c[d>>2]|0,136)|0;a=(sO(a,c[d>>2]|0,b,e)|0)!=0&1;return a|0}function bz(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;k=i;i=i+16|0;j=k;h=a+196|0;if((c[h>>2]|0)==(b|0)){l=da(c[a+116>>2]|0,c[a+112>>2]|0)|0;c[j>>2]=b+1;c[j+4>>2]=l;ry(g,4,240680,j)|0;c[a+12>>2]=0;l=c[a+200>>2]|0;c[l+12>>2]=c[(c[a+156>>2]|0)+(b*5632|0)+5580>>2];c[a+8>>2]=0;if(MA(l,c[h>>2]|0)|0){if(zO(a,d,e,f,g)|0){l=1;i=k;return l|0}c[j>>2]=b;ry(g,1,238640,j)|0;l=0;i=k;return l|0}}else ry(g,1,240640,j)|0;c[j>>2]=b;ry(g,1,238576,j)|0;l=0;i=k;return l|0}function cz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;if(!d){d=0;i=h;return d|0}if(!(Xy(c[a>>2]|0,b,d,e)|0)){ry(e,1,248864,h)|0;d=0;i=h;return d|0}if(c[a+128>>2]|0){d=1;i=h;return d|0}g=a+108|0;if(!(VO(d,g,e)|0)){d=0;i=h;return d|0}b=c[a+48>>2]|0;do if((b|0)==16)c[d+20>>2]=1;else if((b|0)==17)c[d+20>>2]=2;else if((b|0)!=18){e=d+20|0;if((b|0)==24){c[e>>2]=4;break}else{c[e>>2]=-1;break}}else c[d+20>>2]=3;while(0);if(c[a+116>>2]|0)WO(d,g);f=a+120|0;b=c[f>>2]|0;do if(b){if(c[b+12>>2]|0){XO(d,g);break}rea(c[b+4>>2]|0);rea(c[(c[f>>2]|0)+8>>2]|0);rea(c[c[f>>2]>>2]|0);b=c[f>>2]|0;e=c[b+12>>2]|0;if(e){rea(e);b=c[f>>2]|0}rea(b);c[f>>2]=0}while(0);b=c[g>>2]|0;if(!b){d=1;i=h;return d|0}c[d+28>>2]=b;c[d+32>>2]=c[a+112>>2];c[g>>2]=0;d=1;i=h;return d|0}function dz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;m=o;f=o+4|0;k=o+40|0;if(!b)Ra(248920,248936,1350,248968);if(!a)Ra(248992,248936,1351,248968);if(!d)Ra(249008,248936,1352,248968);e=f+0|0;h=e+36|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(h|0));n=(c[a+24>>2]|0)==255;c[f>>2]=221;e=f+12|0;if(n){c[e>>2]=222;c[f+24>>2]=223;n=3}else{c[e>>2]=223;n=2}Gx(k+4|0,1785737832,4);g=0;j=f;e=8;while(1){h=j+8|0;p=Pd[c[j>>2]&511](a,h)|0;c[j+4>>2]=p;if(!p){l=12;break}e=(c[h>>2]|0)+e|0;g=g+1|0;if((g|0)>=(n|0))break;else j=j+12|0}if((l|0)==12){ry(d,1,249024,m)|0;g=0;while(1){e=c[f+4>>2]|0;if(e)rea(e);g=g+1|0;if((g|0)>=(n|0)){e=0;break}else f=f+12|0}i=o;return e|0}Gx(k,e,4);a:do if((by(b,k,8,d)|0)==8){e=0;h=f;while(1){p=h+8|0;k=by(b,c[h+4>>2]|0,c[p>>2]|0,d)|0;if((k|0)!=(c[p>>2]|0))break;e=e+1|0;if((e|0)>=(n|0)){e=1;break a}else h=h+12|0}ry(d,1,249072,m)|0;e=0}else{ry(d,1,249072,m)|0;e=0}while(0);h=0;while(1){g=c[f+4>>2]|0;if(g)rea(g);h=h+1|0;if((h|0)>=(n|0))break;else f=f+12|0}i=o;return e|0}function ez(b,d){b=b|0;d=d|0;Gy(c[b>>2]|0,d);a[b+124>>0]=0;c[b+128>>2]=c[d+8248>>2]&1;return}function fz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;j=m;if(!((a|0)!=0&(b|0)!=0&(d|0)!=0)){i=m;return}h=d+16|0;if(((c[h>>2]|0)+-1|0)>>>0>16383){ry(e,1,249120,j)|0;i=m;return}Jy(c[a>>2]|0,b,d,e);c[a+56>>2]=1785737760;c[a+60>>2]=0;c[a+64>>2]=1;f=qea(4)|0;g=a+68|0;c[g>>2]=f;if(!f){c[g>>2]=0;ry(e,1,249192,j)|0;i=m;return}c[f>>2]=1785737760;k=c[h>>2]|0;c[a+20>>2]=k;l=qea(k*12|0)|0;f=a+72|0;c[f>>2]=l;if(!l){c[f>>2]=0;ry(e,1,249192,j)|0;i=m;return}c[a+16>>2]=(c[d+12>>2]|0)-(c[d+4>>2]|0);c[a+12>>2]=(c[d+8>>2]|0)-(c[d>>2]|0);j=c[d+24>>2]|0;f=c[j+24>>2]|0;e=c[j+32>>2]|0;g=a+24|0;c[g>>2]=f+-1+(e<<7);if(k>>>0>1){h=1;do{if((f|0)!=(c[j+(h*52|0)+24>>2]|0))c[g>>2]=255;h=h+1|0}while(h>>>0>>0)}c[a+28>>2]=7;c[a+32>>2]=0;c[a+36>>2]=0;a:do if(k){h=f;g=e;f=0;while(1){c[l+(f*12|0)+8>>2]=h+-1+(g<<7);f=f+1|0;if(f>>>0>=k>>>0)break a;h=c[j+(f*52|0)+24>>2]|0;g=c[j+(f*52|0)+32>>2]|0}}while(0);f=a+40|0;do if(!(c[d+32>>2]|0)){c[f>>2]=1;f=c[d+20>>2]|0;if((f|0)==1){c[a+48>>2]=16;break}else if((f|0)==3){c[a+48>>2]=18;break}else if((f|0)==2){c[a+48>>2]=17;break}else break}else{c[f>>2]=2;c[a+48>>2]=0}while(0);c[a+52>>2]=0;c[a+44>>2]=0;c[a+96>>2]=c[b+18692>>2];i=m;return}function gz(a,b,d){a=a|0;b=b|0;d=d|0;return _y(c[a>>2]|0,b,d)|0}function hz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(!a)Ra(248992,248936,1669,249240);if(!b)Ra(249264,248936,1670,249240);if(!d)Ra(249008,248936,1671,249240);e=a+8|0;vy(c[e>>2]|0,137)|0;if(!(aP(a,c[e>>2]|0,b,d)|0)){d=0;return d|0}d=Ly(c[a>>2]|0,b,d)|0;return d|0}function iz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(!a)Ra(248992,248936,1690,249280);if(!b)Ra(249264,248936,1691,249280);if(!d)Ra(249008,248936,1692,249280);e=a+8|0;vy(c[e>>2]|0,138)|0;if(!($y(c[a>>2]|0,b,d)|0)){a=0;return a|0}a=aP(a,c[e>>2]|0,b,d)|0;return a|0}function jz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if(!a)Ra(248992,248936,1742,249304);if(!b)Ra(249264,248936,1743,249304);if(!d)Ra(249008,248936,1744,249304);d=((c[a>>2]|0)!=0?(c[a+104>>2]|c[a+100>>2]|0)==0:0)&(c[a+8>>2]|0)!=0&(c[a+4>>2]|0)!=0&(c[a+64>>2]|0)!=0&(c[a+16>>2]|0)!=0&(c[a+12>>2]|0)!=0&1;e=c[a+20>>2]|0;if(!e){f=d;a=a+40|0;a=c[a>>2]|0;g=a>>>0<3;a=(a|0)!=0;a=g&a;a=a&1;b=hy(b)|0;b=b&f;a=b&a;return a|0}f=c[a+72>>2]|0;g=0;do{d=(c[f+(g*12|0)+8>>2]|0)!=0&d;g=g+1|0}while(g>>>0>>0);a=a+40|0;a=c[a>>2]|0;f=a>>>0<3;a=(a|0)!=0;a=f&a;a=a&1;b=hy(b)|0;b=b&d;a=b&a;return a|0}function kz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if(!a)Ra(248992,248936,1927,249336);if(!b)Ra(248920,248936,1928,249336);if(!e)Ra(249008,248936,1929,249336);f=a+4|0;vy(c[f>>2]|0,139)|0;if(!(aP(a,c[f>>2]|0,b,e)|0)){b=0;return b|0}f=a+8|0;vy(c[f>>2]|0,140)|0;vy(c[f>>2]|0,141)|0;vy(c[f>>2]|0,142)|0;if(c[a+96>>2]|0)vy(c[f>>2]|0,143)|0;vy(c[f>>2]|0,144)|0;if(!(aP(a,c[f>>2]|0,b,e)|0)){b=0;return b|0}b=az(c[a>>2]|0,b,d,e)|0;return b|0}function lz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(!a)Ra(248992,248936,2104,249360);if(!b)Ra(248920,248936,2105,249360);if(!d)Ra(249008,248936,2106,249360);else{e=dy(b)|0;a=a+80|0;c[a>>2]=e;c[a+4>>2]=H;b=fy(b,8,0,d)|0;return (b|0)==8&(H|0)==0&1|0}return 0}function mz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if(!b)Ra(248992,248936,2277,249384);if(!a)Ra(249408,248936,2278,249384);if(!e)Ra(249008,248936,2279,249384);f=b+8|0;vy(c[f>>2]|0,137)|0;if(!(aP(b,c[b+4>>2]|0,a,e)|0)){a=0;return a|0}if(!(aP(b,c[f>>2]|0,a,e)|0)){a=0;return a|0}a=My(a,c[b>>2]|0,d,e)|0;return a|0}function nz(a,b,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return Oy(c[a>>2]|0,b,d,e,f,g,h,i,j,k,l)|0}function oz(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;return bz(c[a>>2]|0,b,d,e,f,g)|0}function pz(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;return Py(c[a>>2]|0,b,d,e,f,g)|0}function qz(a){a=a|0;var b=0,d=0,e=0;if(!a)return;Iy(c[a>>2]|0);c[a>>2]=0;b=a+72|0;d=c[b>>2]|0;if(d){rea(d);c[b>>2]=0}b=a+68|0;d=c[b>>2]|0;if(d){rea(d);c[b>>2]=0}b=a+108|0;d=c[b>>2]|0;if(d){rea(d);c[b>>2]=0}e=a+116|0;b=c[e>>2]|0;if(b){d=c[b>>2]|0;if(d){rea(d);b=c[e>>2]|0;c[b>>2]=0}rea(b);c[e>>2]=0}e=a+120|0;b=c[e>>2]|0;if(b){d=c[b+12>>2]|0;if(d){rea(d);b=c[e>>2]|0;c[b+12>>2]=0}d=c[b+4>>2]|0;if(d){rea(d);b=c[e>>2]|0;c[b+4>>2]=0}d=c[b+8>>2]|0;if(d){rea(d);b=c[e>>2]|0;c[b+8>>2]=0}d=c[b>>2]|0;if(d){rea(d);b=c[e>>2]|0;c[b>>2]=0}rea(b);c[e>>2]=0}b=a+4|0;d=c[b>>2]|0;if(d){uy(d);c[b>>2]=0}b=c[a+8>>2]|0;if(b)uy(b);rea(a);return}function rz(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return Qy(c[a>>2]|0,b,d,e,f,g,h)|0}function sz(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+16|0;g=h;if(!d){a=0;i=h;return a|0}ry(e,2,249424,g)|0;if(!(Yy(c[a>>2]|0,b,d,e,f)|0)){ry(e,1,248864,g)|0;a=0;i=h;return a|0}g=a+108|0;if(!(VO(d,g,e)|0)){a=0;i=h;return a|0}f=c[a+48>>2]|0;do if((f|0)==17)c[d+20>>2]=2;else if((f|0)!=16){b=d+20|0;if((f|0)==18){c[b>>2]=3;break}else{c[b>>2]=-1;break}}else c[d+20>>2]=1;while(0);if(c[a+116>>2]|0)WO(d,g);e=a+120|0;b=c[e>>2]|0;do if(b){if(c[b+12>>2]|0){XO(d,g);break}rea(c[b+4>>2]|0);rea(c[(c[e>>2]|0)+8>>2]|0);rea(c[c[e>>2]>>2]|0);b=c[e>>2]|0;f=c[b+12>>2]|0;if(f){rea(f);b=c[e>>2]|0}rea(b);c[e>>2]=0}while(0);b=c[g>>2]|0;if(!b){a=1;i=h;return a|0}c[d+28>>2]=b;c[d+32>>2]=c[a+112>>2];c[g>>2]=0;a=1;i=h;return a|0}function tz(b){b=b|0;var d=0;d=qea(136)|0;if(!d)return d|0;sfa(d|0,0,136)|0;if(!b){b=Hy()|0;c[d>>2]=b}else{b=Ry()|0;c[d>>2]=b}if(!b){qz(d);d=0;return d|0}b=d+108|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;a[b+16>>0]=0;b=ty()|0;c[d+4>>2]=b;if(!b){qz(d);d=0;return d|0}b=ty()|0;c[d+8>>2]=b;if(b)return d|0;qz(d);d=0;return d|0}function uz(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)Ra(249504,248936,2573,249520);else{Sy(c[a>>2]|0,b,d);return}}function vz(a){a=a|0;return Wy(c[a>>2]|0)|0}function wz(a){a=a|0;return Vy(c[a>>2]|0)|0}function xz(a,b,d){a=a|0;b=b|0;d=d|0;return Zy(c[a>>2]|0,b,d)|0}function yz(){return 252736}function zz(){return 252760}function Az(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!e)return;else f=0;do{l=a+(f<<2)|0;i=c[l>>2]|0;j=b+(f<<2)|0;h=c[j>>2]|0;g=d+(f<<2)|0;k=c[g>>2]|0;c[l>>2]=(h<<1)+i+k>>2;c[j>>2]=k-h;c[g>>2]=i-h;f=f+1|0}while((f|0)!=(e|0));return}function Bz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!e)return;else f=0;do{k=a+(f<<2)|0;j=b+(f<<2)|0;h=c[j>>2]|0;g=d+(f<<2)|0;l=c[g>>2]|0;i=(c[k>>2]|0)-(l+h>>2)|0;c[k>>2]=i+l;c[j>>2]=i;c[g>>2]=i+h;f=f+1|0}while((f|0)!=(e|0));return}function Cz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;if(!e)return;else f=0;do{o=a+(f<<2)|0;u=c[o>>2]|0;k=b+(f<<2)|0;t=c[k>>2]|0;g=d+(f<<2)|0;s=c[g>>2]|0;j=((u|0)<0)<<31>>31;q=Ifa(u|0,j|0,2449,0)|0;q=yfa(q&4096|0,0,q|0,H|0)|0;q=Bfa(q|0,H|0,13)|0;i=((t|0)<0)<<31>>31;r=Ifa(t|0,i|0,4809,0)|0;r=yfa(r&4096|0,0,r|0,H|0)|0;r=Bfa(r|0,H|0,13)|0;h=((s|0)<0)<<31>>31;p=Ifa(s|0,h|0,934,0)|0;p=yfa(p&4096|0,0,p|0,H|0)|0;p=Bfa(p|0,H|0,13)|0;l=Ifa(u|0,j|0,1382,0)|0;l=yfa(l&4096|0,0,l|0,H|0)|0;l=Bfa(l|0,H|0,13)|0;m=Ifa(t|0,i|0,2714,0)|0;m=yfa(m&4096|0,0,m|0,H|0)|0;m=Bfa(m|0,H|0,13)|0;n=vfa(s|0,h|0,12)|0;n=yfa(n&4096|0,0,n|0,H|0)|0;n=Bfa(n|0,H|0,13)|0;j=vfa(u|0,j|0,12)|0;j=yfa(j&4096|0,0,j|0,H|0)|0;j=Bfa(j|0,H|0,13)|0;i=Ifa(t|0,i|0,3430,0)|0;i=yfa(i&4096|0,0,i|0,H|0)|0;i=Bfa(i|0,H|0,13)|0;h=Ifa(s|0,h|0,666,0)|0;h=yfa(h&4096|0,0,h|0,H|0)|0;h=Bfa(h|0,H|0,13)|0;c[o>>2]=r+q+p;c[k>>2]=n-(m+l);c[g>>2]=j-i-h;f=f+1|0}while((f|0)!=(e|0));return}function Dz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0,k=0.0,l=0;if(!d)return;else e=0;do{l=a+(e<<2)|0;i=+g[l>>2];j=b+(e<<2)|0;h=+g[j>>2];f=c+(e<<2)|0;k=+g[f>>2];g[l>>2]=i+k*1.4019999504089355;g[j>>2]=i-h*.3441300094127655-k*.714139997959137;g[f>>2]=i+h*1.7719999551773071;e=e+1|0}while((e|0)!=(d|0));return}function Ez(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;h=da(e,e)|0;m=qea(h+e<<2)|0;if(!m){e=0;return e|0}if(h){i=0;f=a;while(1){c[m+(i+e<<2)>>2]=~~(+g[f>>2]*8192.0);i=i+1|0;if((i|0)==(h|0))break;else f=f+4|0}}if(b){k=(e|0)==0;l=0;do{if(!k){f=0;do{c[m+(f<<2)>>2]=c[c[d+(f<<2)>>2]>>2];f=f+1|0}while((f|0)!=(e|0));if(!k){a=0;i=m;do{i=i+(e<<2)|0;f=d+(a<<2)|0;c[c[f>>2]>>2]=0;h=0;j=i;while(1){o=c[j>>2]|0;n=c[m+(h<<2)>>2]|0;o=Ifa(n|0,((n|0)<0)<<31>>31|0,o|0,((o|0)<0)<<31>>31|0)|0;o=yfa(o&4096|0,0,o|0,H|0)|0;o=Bfa(o|0,H|0,13)|0;n=c[f>>2]|0;c[n>>2]=o+(c[n>>2]|0);h=h+1|0;if((h|0)==(e|0))break;else j=j+4|0}c[f>>2]=(c[f>>2]|0)+4;a=a+1|0}while((a|0)!=(e|0))}}l=l+1|0}while((l|0)!=(b|0))}rea(m);o=1;return o|0}function Fz(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=qea(e<<3)|0;if(!m){e=0;return e|0}if(b){n=(e|0)==0;o=0;do{if(!n){f=0;do{g[m+(f<<2)>>2]=+g[c[d+(f<<2)>>2]>>2];f=f+1|0}while((f|0)!=(e|0));if(!n){k=0;l=a;while(1){f=m+(k+e<<2)|0;g[f>>2]=0.0;h=0.0;i=0;j=l;while(1){h=h+ +g[j>>2]*+g[m+(i<<2)>>2];g[f>>2]=h;i=i+1|0;if((i|0)==(e|0))break;else j=j+4|0}i=d+(k<<2)|0;j=c[i>>2]|0;c[i>>2]=j+4;g[j>>2]=h;k=k+1|0;if((k|0)==(e|0))break;else l=l+(e<<2)|0}}}o=o+1|0}while((o|0)!=(b|0))}rea(m);e=1;return e|0}function Gz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,i=0,j=0,k=0.0;if(!b)return;else j=0;do{i=a+(j<<3)|0;h[i>>3]=0.0;d=0.0;e=0;f=j;while(1){k=+g[c+(f<<2)>>2];d=d+k*k;e=e+1|0;if((e|0)==(b|0))break;else f=f+b|0}h[i>>3]=+T(+d);j=j+1|0}while((j|0)!=(b|0));return}function Hz(){return qea(104)|0}function Iz(a){a=a|0;if(!a)return;rea(a);return}function Jz(a){a=a|0;return (c[a+12>>2]|0)-(c[a+16>>2]|0)|0}function Kz(b,d){b=b|0;d=d|0;var e=0,f=0;c[b+100>>2]=b+24;c[b+4>>2]=32768;c[b>>2]=0;f=d+-1|0;c[b+12>>2]=f;e=b+8|0;c[e>>2]=12;c[e>>2]=(a[f>>0]|0)==-1?13:12;c[b+16>>2]=d;return}function Lz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;g=c[b+100>>2]|0;h=c[g>>2]|0;i=(c[h+4>>2]|0)==(d|0);d=c[h>>2]|0;j=b+4|0;f=(c[j>>2]|0)-d|0;c[j>>2]=f;if(!i){if(f>>>0>>0){e=(c[b>>2]|0)+d|0;c[b>>2]=e}else{c[j>>2]=d;f=d;e=c[b>>2]|0}c[g>>2]=c[h+12>>2];i=b+8|0;h=b+12|0;d=c[i>>2]|0;do{f=f<<1;c[j>>2]=f;g=e<<1;c[b>>2]=g;d=d+-1|0;c[i>>2]=d;if(!d){d=c[h>>2]|0;f=a[d>>0]|0;do if(f<<24>>24!=-1){if(!(g&134217728)){d=d+1|0;c[h>>2]=d;a[d>>0]=e>>>18;e=c[b>>2]&524287;c[b>>2]=e;c[i>>2]=8;d=8;break}a[d>>0]=f+1<<24>>24;d=c[h>>2]|0;if((a[d>>0]|0)==-1){f=c[b>>2]&134217727;c[b>>2]=f;e=d+1|0;c[h>>2]=e;a[e>>0]=f>>>20;e=c[b>>2]&1048575;c[b>>2]=e;c[i>>2]=7;d=7;break}else{e=d+1|0;c[h>>2]=e;a[e>>0]=(c[b>>2]|0)>>>19;e=c[b>>2]&524287;c[b>>2]=e;c[i>>2]=8;d=8;break}}else{d=d+1|0;c[h>>2]=d;a[d>>0]=e>>>19;e=c[b>>2]&1048575;c[b>>2]=e;c[i>>2]=7;d=7}while(0);f=c[j>>2]|0}else e=g}while((f&32768|0)==0);return}if(f&32768){c[b>>2]=(c[b>>2]|0)+d;return}if(f>>>0>>0){c[j>>2]=d;e=c[b>>2]|0;f=d}else{e=(c[b>>2]|0)+d|0;c[b>>2]=e}c[g>>2]=c[h+8>>2];h=b+8|0;i=b+12|0;d=c[h>>2]|0;do{f=f<<1;c[j>>2]=f;g=e<<1;c[b>>2]=g;d=d+-1|0;c[h>>2]=d;if(!d){d=c[i>>2]|0;f=a[d>>0]|0;do if(f<<24>>24!=-1){if(!(g&134217728)){d=d+1|0;c[i>>2]=d;a[d>>0]=e>>>18;e=c[b>>2]&524287;c[b>>2]=e;c[h>>2]=8;d=8;break}a[d>>0]=f+1<<24>>24;d=c[i>>2]|0;if((a[d>>0]|0)==-1){f=c[b>>2]&134217727;c[b>>2]=f;e=d+1|0;c[i>>2]=e;a[e>>0]=f>>>20;e=c[b>>2]&1048575;c[b>>2]=e;c[h>>2]=7;d=7;break}else{e=d+1|0;c[i>>2]=e;a[e>>0]=(c[b>>2]|0)>>>19;e=c[b>>2]&524287;c[b>>2]=e;c[h>>2]=8;d=8;break}}else{d=d+1|0;c[i>>2]=d;a[d>>0]=e>>>19;e=c[b>>2]&1048575;c[b>>2]=e;c[h>>2]=7;d=7}while(0);f=c[j>>2]|0}else e=g}while((f&32768|0)==0);return}function Mz(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=c[b>>2]|0;f=h|65535;g=b+8|0;f=(f>>>0<((c[b+4>>2]|0)+h|0)>>>0?f:f+-32768|0)<>2];c[b>>2]=f;h=b+12|0;d=c[h>>2]|0;e=a[d>>0]|0;do if(e<<24>>24!=-1){if(!(f&134217728)){d=d+1|0;c[h>>2]=d;a[d>>0]=f>>>19;d=c[b>>2]&524287;c[b>>2]=d;c[g>>2]=8;e=8;break}a[d>>0]=e+1<<24>>24;d=c[h>>2]|0;if((a[d>>0]|0)==-1){e=c[b>>2]&134217727;c[b>>2]=e;d=d+1|0;c[h>>2]=d;a[d>>0]=e>>>20;d=c[b>>2]&1048575;c[b>>2]=d;c[g>>2]=7;e=7;break}else{d=d+1|0;c[h>>2]=d;a[d>>0]=(c[b>>2]|0)>>>19;d=c[b>>2]&524287;c[b>>2]=d;c[g>>2]=8;e=8;break}}else{d=d+1|0;c[h>>2]=d;a[d>>0]=f>>>20;d=c[b>>2]&1048575;c[b>>2]=d;c[g>>2]=7;e=7}while(0);d=d<>2]=d;e=c[h>>2]|0;f=a[e>>0]|0;do if(f<<24>>24!=-1){if(!(d&134217728)){f=e+1|0;c[h>>2]=f;a[f>>0]=d>>>19;c[b>>2]=c[b>>2]&524287;c[g>>2]=8;break}a[e>>0]=f+1<<24>>24;d=c[h>>2]|0;if((a[d>>0]|0)==-1){e=c[b>>2]&134217727;c[b>>2]=e;f=d+1|0;c[h>>2]=f;a[f>>0]=e>>>20;c[b>>2]=c[b>>2]&1048575;c[g>>2]=7;break}else{f=d+1|0;c[h>>2]=f;a[f>>0]=(c[b>>2]|0)>>>19;c[b>>2]=c[b>>2]&524287;c[g>>2]=8;break}}else{f=e+1|0;c[h>>2]=f;a[f>>0]=d>>>20;c[b>>2]=c[b>>2]&1048575;c[g>>2]=7}while(0);d=c[h>>2]|0;if((a[d>>0]|0)==-1)return;c[h>>2]=d+1;return}function Nz(a){a=a|0;c[a>>2]=0;c[a+8>>2]=8;return}function Oz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=b+8|0;f=(c[e>>2]|0)+-1|0;c[e>>2]=f;d=(d<>2]|0)|0;c[b>>2]=d;if(f)return;f=b+12|0;g=(c[f>>2]|0)+1|0;c[f>>2]=g;a[g>>0]=d;c[e>>2]=8;c[e>>2]=(a[c[f>>2]>>0]|0)==-1?7:8;c[b>>2]=0;return}function Pz(a){a=a|0;c[a+28>>2]=252784;c[a+32>>2]=252784;c[a+36>>2]=252784;c[a+40>>2]=252784;c[a+44>>2]=252784;c[a+48>>2]=252784;c[a+52>>2]=252784;c[a+56>>2]=252784;c[a+60>>2]=252784;c[a+64>>2]=252784;c[a+68>>2]=252784;c[a+72>>2]=252784;c[a+76>>2]=252784;c[a+80>>2]=252784;c[a+84>>2]=252784;c[a+88>>2]=252784;c[a+96>>2]=254256;c[a+92>>2]=252880;c[a+24>>2]=252912;return}function Qz(a){a=a|0;c[a+24>>2]=252784;c[a+28>>2]=252784;c[a+32>>2]=252784;c[a+36>>2]=252784;c[a+40>>2]=252784;c[a+44>>2]=252784;c[a+48>>2]=252784;c[a+52>>2]=252784;c[a+56>>2]=252784;c[a+60>>2]=252784;c[a+64>>2]=252784;c[a+68>>2]=252784;c[a+72>>2]=252784;c[a+76>>2]=252784;c[a+80>>2]=252784;c[a+84>>2]=252784;c[a+88>>2]=252784;c[a+92>>2]=252784;c[a+96>>2]=252784;return}function Rz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a+(b<<2)+24>>2]=252784+((e<<1)+d<<4);return}function Sz(b){b=b|0;var d=0,e=0;c[b+100>>2]=b+24;c[b+4>>2]=32768;c[b>>2]=0;d=b+8|0;c[d>>2]=12;e=b+12|0;b=(c[e>>2]|0)+-1|0;c[e>>2]=b;if((a[b>>0]|0)!=-1)return;c[d>>2]=13;return}function Tz(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=b+8|0;d=c[i>>2]|0;f=12-d|0;if((f|0)>0){g=b+12|0;e=c[b>>2]|0;do{d=e<>2]=d;c[i>>2]=0;e=c[g>>2]|0;h=a[e>>0]|0;do if(h<<24>>24!=-1){if(!(d&134217728)){e=e+1|0;c[g>>2]=e;a[e>>0]=d>>>19;e=c[b>>2]&524287;c[b>>2]=e;c[i>>2]=8;d=8;break}a[e>>0]=h+1<<24>>24;d=c[g>>2]|0;if((a[d>>0]|0)==-1){h=c[b>>2]&134217727;c[b>>2]=h;e=d+1|0;c[g>>2]=e;a[e>>0]=h>>>20;e=c[b>>2]&1048575;c[b>>2]=e;c[i>>2]=7;d=7;break}else{e=d+1|0;c[g>>2]=e;a[e>>0]=(c[b>>2]|0)>>>19;e=c[b>>2]&524287;c[b>>2]=e;c[i>>2]=8;d=8;break}}else{e=e+1|0;c[g>>2]=e;a[e>>0]=d>>>20;e=c[b>>2]&1048575;c[b>>2]=e;c[i>>2]=7;d=7}while(0);f=f-d|0}while((f|0)>0)}else g=b+12|0;d=c[g>>2]|0;e=a[d>>0]|0;if(e<<24>>24==-1)return;f=c[b>>2]|0;if(!(f&134217728)){h=d+1|0;c[g>>2]=h;a[h>>0]=f>>>19;c[b>>2]=c[b>>2]&524287;c[i>>2]=8;return}a[d>>0]=e+1<<24>>24;d=c[g>>2]|0;if((a[d>>0]|0)==-1){f=c[b>>2]&134217727;c[b>>2]=f;h=d+1|0;c[g>>2]=h;a[h>>0]=f>>>20;c[b>>2]=c[b>>2]&1048575;c[i>>2]=7;return}else{h=d+1|0;c[g>>2]=h;a[h>>0]=(c[b>>2]|0)>>>19;c[b>>2]=c[b>>2]&524287;c[i>>2]=8;return}}function Uz(a){a=a|0;c[a+100>>2]=a+96;Lz(a,1);Lz(a,0);Lz(a,1);Lz(a,0);return}function Vz(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0;c[b+100>>2]=b+24;c[b+16>>2]=e;c[b+20>>2]=e+f;h=b+12|0;c[h>>2]=e;do if(f){i=d[e>>0]<<16;c[b>>2]=i;g=e+1|0;if((f|0)==1)f=255;else f=d[g>>0]|0;if((a[e>>0]|0)!=-1){c[h>>2]=g;f=i|f<<8;c[b>>2]=f;c[b+8>>2]=8;g=b;h=1;break}if(f>>>0>143){f=i|65280;c[b>>2]=f;c[b+8>>2]=8;g=b;h=1;break}else{c[h>>2]=g;f=i+(f<<9)|0;c[b>>2]=f;c[b+8>>2]=7;g=b;h=0;break}}else{c[b>>2]=16776960;c[b+8>>2]=8;f=16776960;g=b;h=1}while(0);c[g>>2]=f<<7;c[b+8>>2]=h;c[b+4>>2]=32768;return 1}function Wz(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[b+100>>2]|0;f=c[g>>2]|0;j=c[f>>2]|0;n=b+4|0;i=(c[n>>2]|0)-j|0;c[n>>2]=i;h=c[b>>2]|0;if(h>>>16>>>0>>0){c[n>>2]=j;e=c[f+4>>2]|0;if(i>>>0>>0)f=f+8|0;else{e=1-e|0;f=f+12|0}c[g>>2]=c[f>>2];k=b+8|0;l=b+12|0;m=b+20|0;f=h;g=c[k>>2]|0;do{do if(!g){h=c[l>>2]|0;g=c[m>>2]|0;if((h|0)==(g|0)){f=f+65280|0;c[b>>2]=f;c[k>>2]=8;g=8;break}i=h+1|0;if((i|0)==(g|0))g=255;else g=d[i>>0]|0;if((a[h>>0]|0)!=-1){c[l>>2]=i;f=f+(g<<8)|0;c[b>>2]=f;c[k>>2]=8;g=8;break}if(g>>>0>143){f=f+65280|0;c[b>>2]=f;c[k>>2]=8;g=8;break}else{c[l>>2]=i;f=f+(g<<9)|0;c[b>>2]=f;c[k>>2]=7;g=7;break}}while(0);j=j<<1;c[n>>2]=j;f=f<<1;c[b>>2]=f;g=g+-1|0;c[k>>2]=g}while(j>>>0<32768);return e|0}h=h-(j<<16)|0;c[b>>2]=h;if(i&32768){b=c[f+4>>2]|0;return b|0}e=c[f+4>>2]|0;if(j>>>0>i>>>0){e=1-e|0;f=f+12|0}else f=f+8|0;c[g>>2]=c[f>>2];l=b+8|0;m=b+12|0;k=b+20|0;f=h;g=c[l>>2]|0;j=i;do{do if(!g){h=c[m>>2]|0;g=c[k>>2]|0;if((h|0)==(g|0)){f=f+65280|0;c[b>>2]=f;c[l>>2]=8;g=8;break}i=h+1|0;if((i|0)==(g|0))g=255;else g=d[i>>0]|0;if((a[h>>0]|0)!=-1){c[m>>2]=i;f=f+(g<<8)|0;c[b>>2]=f;c[l>>2]=8;g=8;break}if(g>>>0>143){f=f+65280|0;c[b>>2]=f;c[l>>2]=8;g=8;break}else{c[m>>2]=i;f=f+(g<<9)|0;c[b>>2]=f;c[l>>2]=7;g=7;break}}while(0);j=j<<1;c[n>>2]=j;f=f<<1;c[b>>2]=f;g=g+-1|0;c[l>>2]=g}while(j>>>0<32768);return e|0}function Xz(a,b,d){a=a|0;b=b|0;d=d|0;if(!a){d=0;return d|0}c[a+64>>2]=b;c[a+52>>2]=d;d=1;return d|0}function Yz(a,b,d){a=a|0;b=b|0;d=d|0;if(!a){d=0;return d|0}c[a+60>>2]=b;c[a+48>>2]=d;d=1;return d|0}function Zz(a,b,d){a=a|0;b=b|0;d=d|0;if(!a){d=0;return d|0}c[a+56>>2]=b;c[a+44>>2]=d;d=1;return d|0}function _z(a){a=a|0;var b=0,d=0,e=0;b=sea(1,84)|0;if(!b){d=0;return d|0}d=b+0|0;e=d+84|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));c[b+68>>2]=1;if((a|0)==2){c[b+72>>2]=45;c[b+76>>2]=147;c[b+80>>2]=148;c[b+4>>2]=114;c[b+16>>2]=147;c[b>>2]=115;c[b+8>>2]=2;c[b+12>>2]=3;c[b+20>>2]=228;c[b+24>>2]=77;c[b+28>>2]=3;c[b+32>>2]=53;c[b+36>>2]=148;d=tz(1)|0;c[b+40>>2]=d;if(!d){rea(b);d=0;return d|0}}else if(!((a|0)==0?(c[b+72>>2]=44,c[b+76>>2]=145,c[b+80>>2]=146,c[b+4>>2]=112,c[b+16>>2]=145,c[b>>2]=113,c[b+20>>2]=227,c[b+24>>2]=76,c[b+8>>2]=1,c[b+12>>2]=2,c[b+28>>2]=2,c[b+32>>2]=52,c[b+36>>2]=146,d=Ry()|0,c[b+40>>2]=d,(d|0)!=0):0)){rea(b);d=0;return d|0}sy(b+44|0);d=b;return d|0}function $z(a){a=a|0;if(!a)return;sfa(a|0,0,8248)|0;c[a+8200>>2]=-1;c[a+8204>>2]=-1;c[a+8248>>2]=0;return}function aA(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;if(!((a|0)!=0&(b|0)!=0)){b=0;i=d;return b|0}if(!(c[a+68>>2]|0)){ry(a+44|0,1,254288,d)|0;b=0;i=d;return b|0}else{Cd[c[a+24>>2]&255](c[a+40>>2]|0,b);b=1;i=d;return b|0}return 0}function bA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;i=i+16|0;if(!((b|0)!=0&(a|0)!=0)){a=0;i=e;return a|0}if(!(c[b+68>>2]|0)){ry(b+44|0,1,254376,e)|0;a=0;i=e;return a|0}else{a=Xd[c[b>>2]&255](a,c[b+40>>2]|0,d,b+44|0)|0;i=e;return a|0}return 0}function cA(a,b,d){a=a|0;b=b|0;d=d|0;if(!((a|0)!=0&(b|0)!=0)){b=0;return b|0}if(!(c[a+68>>2]|0)){b=0;return b|0}b=Xd[c[a+4>>2]&255](c[a+40>>2]|0,b,d,a+44|0)|0;return b|0}function dA(a){a=a|0;var b=0,d=0,e=0;b=sea(1,84)|0;if(!b){d=0;return d|0}d=b+0|0;e=d+84|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));if(!a){c[b+4>>2]=149;c[b+12>>2]=150;c[b>>2]=116;c[b+8>>2]=4;c[b+16>>2]=227;c[b+20>>2]=25;d=Hy()|0;c[b+40>>2]=d;if(!d){rea(b);d=0;return d|0}}else if(!((a|0)==2?(c[b+4>>2]=151,c[b+12>>2]=152,c[b>>2]=117,c[b+8>>2]=5,c[b+16>>2]=228,c[b+20>>2]=26,d=tz(0)|0,c[b+40>>2]=d,(d|0)!=0):0)){rea(b);d=0;return d|0}sy(b+44|0);d=b;return d|0}function eA(b){b=b|0;if(!b)return;sfa(b|0,0,18700)|0;c[b+5592>>2]=6;c[b+18684>>2]=0;c[b+5596>>2]=64;c[b+5600>>2]=64;c[b+44>>2]=0;c[b+5612>>2]=-1;c[b+18188>>2]=1;c[b+18192>>2]=1;a[b+18688>>0]=0;c[b+18196>>2]=-1;c[b+18200>>2]=-1;g[b+4792>>2]=0.0;c[b+4788>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;c[b+18692>>2]=0;return}function fA(a,b,d){a=a|0;b=b|0;d=d|0;if(!((a|0)!=0&(b|0)!=0&(d|0)!=0)){b=0;return b|0}if(c[a+68>>2]|0){b=0;return b|0}Yd[c[a+20>>2]&63](c[a+40>>2]|0,b,d,a+44|0);b=1;return b|0}function gA(a,b,d){a=a|0;b=b|0;d=d|0;if(!((a|0)!=0&(d|0)!=0)){d=0;return d|0}if(c[a+68>>2]|0){d=0;return d|0}d=Xd[c[a>>2]&255](c[a+40>>2]|0,d,b,a+44|0)|0;return d|0}function hA(a,b){a=a|0;b=b|0;if(!((a|0)!=0&(b|0)!=0)){b=0;return b|0}if(c[a+68>>2]|0){b=0;return b|0}b=Hd[c[a+4>>2]&255](c[a+40>>2]|0,b,a+44|0)|0;return b|0}function iA(a,b){a=a|0;b=b|0;if(!((a|0)!=0&(b|0)!=0)){b=0;return b|0}if(c[a+68>>2]|0){b=0;return b|0}b=Hd[c[a+12>>2]&255](c[a+40>>2]|0,b,a+44|0)|0;return b|0}function jA(a,b){a=a|0;b=b|0;if(!((a|0)!=0&(b|0)!=0)){b=0;return b|0}if(!(c[a+68>>2]|0)){b=0;return b|0}b=Hd[c[a+16>>2]&255](c[a+40>>2]|0,b,a+44|0)|0;return b|0}function kA(a){a=a|0;var b=0;if(!a)return;b=c[a+40>>2]|0;if(!(c[a+68>>2]|0))Bd[c[a+16>>2]&511](b);else Bd[c[a+20>>2]&511](b);rea(a);return}function lA(a){a=a|0;var b=0,d=0;if(!a)return;b=c[a>>2]|0;d=c[b+48>>2]|0;if(d){rea(d);b=c[a>>2]|0}rea(b);c[a>>2]=0;return}function mA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=c[d+68>>2]|0;if((b|0)>-1)h=b;else{g=0;return g|0}while(1){i=a[g+h>>0]|0;if((i|0)==76){i=8;break}else if((i|0)==67){i=6;break}else if((i|0)==80){i=10;break}else if((i|0)==82){i=4;break}h=h+-1|0}if((i|0)==4)if((c[j+(e*5632|0)+(f*148|0)+552>>2]|0)==(c[j+(e*5632|0)+(f*148|0)+512>>2]|0))return (mA(b+-1|0,d,e,f,g)|0)!=0|0;else{g=1;return g|0}else if((i|0)==6)if((c[j+(e*5632|0)+(f*148|0)+556>>2]|0)==(c[j+(e*5632|0)+(f*148|0)+516>>2]|0))return (mA(b+-1|0,d,e,f,g)|0)!=0|0;else{g=1;return g|0}else if((i|0)==8)if((c[j+(e*5632|0)+(f*148|0)+548>>2]|0)==(c[j+(e*5632|0)+(f*148|0)+508>>2]|0))return (mA(b+-1|0,d,e,f,g)|0)!=0|0;else{g=1;return g|0}else if((i|0)==10){if((c[j+(e*5632|0)+(f*148|0)+460>>2]|0)==1)if((c[j+(e*5632|0)+(f*148|0)+560>>2]|0)==(c[j+(e*5632|0)+(f*148|0)+520>>2]|0))return (mA(h+-1|0,d,e,f,g)|0)!=0|0;else{g=1;return g|0}if((c[j+(e*5632|0)+(f*148|0)+564>>2]|0)!=(c[j+(e*5632|0)+(f*148|0)+528>>2]|0)){g=1;return g|0}if((c[j+(e*5632|0)+(f*148|0)+568>>2]|0)==(c[j+(e*5632|0)+(f*148|0)+536>>2]|0))return (mA(h+-1|0,d,e,f,g)|0)!=0|0;else{g=1;return g|0}}return 0}function nA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+32|0;B=G+28|0;w=G;x=G+4|0;y=G+8|0;z=G+12|0;A=G+16|0;h=G+20|0;m=G+24|0;if(!d)Ra(254456,254472,1176,254496);if(!b)Ra(254520,254472,1177,254496);if((da(c[d+28>>2]|0,c[d+24>>2]|0)|0)>>>0<=e>>>0)Ra(254536,254472,1178,254496);E=c[d+68>>2]|0;C=E+(e*5632|0)|0;D=E+(e*5632|0)+420|0;F=(c[D>>2]|0)+1|0;k=b+16|0;f=c[k>>2]|0;v=qea(f*528|0)|0;if(!v){F=0;i=G;return F|0}u=qea(f<<2)|0;if(!u){rea(v);F=0;i=G;return F|0}f=fP(b,d,e)|0;if(!f){rea(v);rea(u);F=0;i=G;return F|0}l=c[k>>2]|0;if(l){j=0;g=v;while(1){c[u+(j<<2)>>2]=g;j=j+1|0;if(j>>>0>=l>>>0)break;else g=g+528|0}}gP(b,d,e,x,y,z,A,h,m,w,B,u);s=c[w>>2]|0;q=da(c[k>>2]|0,s)|0;r=da(c[B>>2]|0,q)|0;t=E+(e*5632|0)+8|0;l=sea(da((c[t>>2]|0)+1|0,r)|0,2)|0;j=f+4|0;c[j>>2]=l;if(!l){rea(v);rea(u);g=c[j>>2]|0;if(g){rea(g);c[j>>2]=0}if(F){m=f;n=0;while(1){l=m+196|0;g=c[l>>2]|0;if(g){b=m+192|0;j=c[b>>2]|0;if(j){k=0;while(1){h=g+12|0;d=c[h>>2]|0;if(d){rea(d);c[h>>2]=0;j=c[b>>2]|0}k=k+1|0;if(k>>>0>=j>>>0)break;else g=g+16|0}g=c[l>>2]|0}rea(g);c[l>>2]=0}n=n+1|0;if((n|0)==(F|0))break;else m=m+232|0}}rea(f);F=0;i=G;return F|0}sfa(l|0,0,da(r<<1,(c[t>>2]|0)+1|0)|0)|0;l=c[f+196>>2]|0;p=c[b+24>>2]|0;c[f+200>>2]=c[x>>2];c[f+204>>2]=c[z>>2];c[f+208>>2]=c[y>>2];c[f+212>>2]=c[A>>2];c[f+20>>2]=1;c[f+16>>2]=s;c[f+12>>2]=q;c[f+8>>2]=r;k=c[f+192>>2]|0;if(k){b=0;d=p;while(1){g=c[l+12>>2]|0;j=c[u+(b<<2)>>2]|0;c[l>>2]=c[d>>2];c[l+4>>2]=c[d+4>>2];m=c[l+8>>2]|0;if(m){h=0;while(1){c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];h=h+1|0;if(h>>>0>=m>>>0)break;else{j=j+16|0;g=g+16|0}}}b=b+1|0;if(b>>>0>=k>>>0)break;else{l=l+16|0;d=d+52|0}}}if(F>>>0>1){k=f;o=1;do{l=c[k+428>>2]|0;c[k+432>>2]=c[x>>2];c[k+436>>2]=c[z>>2];c[k+440>>2]=c[y>>2];c[k+444>>2]=c[A>>2];c[k+252>>2]=1;c[k+248>>2]=s;c[k+244>>2]=q;c[k+240>>2]=r;b=c[k+424>>2]|0;if(b){n=0;d=p;while(1){g=c[l+12>>2]|0;j=c[u+(n<<2)>>2]|0;c[l>>2]=c[d>>2];c[l+4>>2]=c[d+4>>2];m=c[l+8>>2]|0;if(m){h=0;while(1){c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];h=h+1|0;if(h>>>0>=m>>>0)break;else{j=j+16|0;g=g+16|0}}}n=n+1|0;if(n>>>0>=b>>>0)break;else{l=l+16|0;d=d+52|0}}}c[k+236>>2]=c[k+4>>2];k=k+232|0;o=o+1|0}while((o|0)!=(F|0))}rea(v);rea(u);l=c[w>>2]|0;if(!(a[E+(e*5632|0)+5628>>0]&2)){b=c[B>>2]|0;if(!C)Ra(254744,254472,1033,254760);d=(c[D>>2]|0)+1|0;if(!d){F=f;i=G;return F|0}k=c[E+(e*5632|0)+4>>2]|0;j=c[t>>2]|0;g=f;h=0;while(1){c[g+80>>2]=k;c[g+40>>2]=1;c[g+44>>2]=0;c[g+48>>2]=0;c[g+64>>2]=0;c[g+68>>2]=0;c[g+56>>2]=b;c[g+60>>2]=c[g+192>>2];c[g+52>>2]=j;c[g+72>>2]=l;h=h+1|0;if((h|0)==(d|0))break;else g=g+232|0}i=G;return f|0}else{if(!C)Ra(254744,254472,996,254792);j=(c[D>>2]|0)+1|0;if(!j){F=f;i=G;return F|0}k=f;g=E+(e*5632|0)+424|0;h=0;while(1){c[k+80>>2]=c[g+36>>2];c[k+40>>2]=1;c[k+44>>2]=c[g>>2];c[k+48>>2]=c[g+4>>2];c[k+64>>2]=0;c[k+68>>2]=0;c[k+56>>2]=c[g+12>>2];c[k+60>>2]=c[g+16>>2];c[k+52>>2]=c[g+8>>2];c[k+72>>2]=l;h=h+1|0;if((h|0)==(j|0))break;else{k=k+232|0;g=g+148|0}}i=G;return f|0}return 0}function oA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!a)return;d=a+4|0;e=c[d>>2]|0;if(e){rea(e);c[d>>2]=0}if(b){k=a;l=0;while(1){j=k+196|0;d=c[j>>2]|0;if(d){i=k+192|0;e=c[i>>2]|0;if(e){h=0;while(1){f=d+12|0;g=c[f>>2]|0;if(g){rea(g);c[f>>2]=0;e=c[i>>2]|0}h=h+1|0;if(h>>>0>=e>>>0)break;else d=d+16|0}d=c[j>>2]|0}rea(d);c[j>>2]=0}l=l+1|0;if((l|0)==(b|0))break;else k=k+232|0}}rea(a);return}function pA(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=i;i=i+32|0;F=M+28|0;E=M;A=M+4|0;B=M+8|0;C=M+12|0;D=M+16|0;G=M+20|0;H=M+24|0;if(!e)Ra(254456,254472,1378,254568);if(!b)Ra(254520,254472,1379,254568);I=e+24|0;J=e+28|0;if((da(c[J>>2]|0,c[I>>2]|0)|0)>>>0<=f>>>0)Ra(254536,254472,1380,254568);K=e+68|0;z=c[K>>2]|0;L=(c[z+(f*5632|0)+420>>2]|0)+1|0;x=b+16|0;h=c[x>>2]|0;y=qea(h*528|0)|0;if(!y){L=0;i=M;return L|0}w=qea(h<<2)|0;if(!w){rea(y);L=0;i=M;return L|0}h=fP(b,e,f)|0;if(!h){rea(y);rea(w);L=0;i=M;return L|0}o=c[x>>2]|0;if(o){k=0;j=y;while(1){c[w+(k<<2)>>2]=j;k=k+1|0;if(k>>>0>=o>>>0)break;else j=j+528|0}}gP(b,e,f,A,B,C,D,G,H,E,F,w);t=c[E>>2]|0;u=da(c[x>>2]|0,t)|0;v=da(c[F>>2]|0,u)|0;a[h>>0]=(d[e+89>>0]|0)>>>3&1;o=z+(f*5632|0)+8|0;k=sea(da(c[o>>2]|0,v)|0,2)|0;c[h+4>>2]=k;if(!k){rea(y);rea(w);if(L){p=h;q=0;while(1){o=p+196|0;j=c[o>>2]|0;if(j){n=p+192|0;b=c[n>>2]|0;if(b){m=0;while(1){k=j+12|0;l=c[k>>2]|0;if(l){rea(l);c[k>>2]=0;b=c[n>>2]|0}m=m+1|0;if(m>>>0>=b>>>0)break;else j=j+16|0}j=c[o>>2]|0}rea(j);c[o>>2]=0}q=q+1|0;if((q|0)==(L|0))break;else p=p+232|0}}rea(h);L=0;i=M;return L|0}sfa(k|0,0,da(v<<1,c[o>>2]|0)|0)|0;o=c[h+196>>2]|0;s=c[b+24>>2]|0;c[h+200>>2]=c[A>>2];c[h+204>>2]=c[C>>2];c[h+208>>2]=c[B>>2];c[h+212>>2]=c[D>>2];c[h+224>>2]=c[G>>2];c[h+228>>2]=c[H>>2];c[h+20>>2]=1;c[h+16>>2]=t;c[h+12>>2]=u;c[h+8>>2]=v;l=c[h+192>>2]|0;if(l){n=0;m=s;while(1){j=c[o+12>>2]|0;k=c[w+(n<<2)>>2]|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];p=c[o+8>>2]|0;if(p){b=0;while(1){c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];b=b+1|0;if(b>>>0>=p>>>0)break;else{k=k+16|0;j=j+16|0}}}n=n+1|0;if(n>>>0>=l>>>0)break;else{o=o+16|0;m=m+52|0}}}if(L>>>0>1){l=h;r=1;do{o=c[l+428>>2]|0;c[l+432>>2]=c[A>>2];c[l+436>>2]=c[C>>2];c[l+440>>2]=c[B>>2];c[l+444>>2]=c[D>>2];c[l+456>>2]=c[G>>2];c[l+460>>2]=c[H>>2];c[l+252>>2]=1;c[l+248>>2]=t;c[l+244>>2]=u;c[l+240>>2]=v;n=c[l+424>>2]|0;if(n){q=0;m=s;while(1){j=c[o+12>>2]|0;k=c[w+(q<<2)>>2]|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];p=c[o+8>>2]|0;if(p){b=0;while(1){c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];b=b+1|0;if(b>>>0>=p>>>0)break;else{k=k+16|0;j=j+16|0}}}q=q+1|0;if(q>>>0>=n>>>0)break;else{o=o+16|0;m=m+52|0}}}c[l+236>>2]=c[l+4>>2];l=l+232|0;r=r+1|0}while((r|0)!=(L|0))}rea(y);rea(w);if((a[z+(f*5632|0)+5628>>0]&2)!=0?(c[e+72>>2]|0)!=0|(g|0)==1:0){hP(e,f,c[A>>2]|0,c[B>>2]|0,c[C>>2]|0,c[D>>2]|0,c[E>>2]|0,c[G>>2]|0,c[H>>2]|0);L=h;i=M;return L|0}v=c[x>>2]|0;u=c[A>>2]|0;t=c[B>>2]|0;s=c[C>>2]|0;r=c[D>>2]|0;q=c[E>>2]|0;n=c[F>>2]|0;l=c[G>>2]|0;m=c[H>>2]|0;if((da(c[J>>2]|0,c[I>>2]|0)|0)>>>0<=f>>>0)Ra(254640,254472,946,254672);k=c[K>>2]|0;j=(c[k+(f*5632|0)+420>>2]|0)+1|0;if(!j){L=h;i=M;return L|0}b=c[k+(f*5632|0)+8>>2]|0;p=c[k+(f*5632|0)+4>>2]|0;o=k+(f*5632|0)+424|0;k=0;while(1){c[o+76>>2]=0;c[o+92>>2]=v;c[o+72>>2]=0;c[o+88>>2]=n;c[o+68>>2]=0;c[o+84>>2]=b;c[o+36>>2]=p;c[o+80>>2]=0;c[o+96>>2]=q;c[o+100>>2]=u;c[o+104>>2]=t;c[o+108>>2]=s;c[o+112>>2]=r;c[o+116>>2]=l;c[o+120>>2]=m;k=k+1|0;if((k|0)==(j|0))break;else o=o+148|0}i=M;return h|0}function qA(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;P=c[d+68>>2]|0;Q=P+(e*5632|0)+(f*148|0)+460|0;R=Fy(c[Q>>2]|0)|0;c[b+(f*232|0)+40>>2]=1;S=b+(f*232|0)+44|0;c[b+(f*232|0)+80>>2]=c[Q>>2];if((a[d+89>>0]&8)!=0?!((c[d+72>>2]|0)==0&(i|0)!=1):0){i=h+1|0;if((i|0)<4){k=P+(e*5632|0)+(f*148|0)+496|0;j=P+(e*5632|0)+(f*148|0)+512|0;p=b+(f*232|0)+56|0;m=P+(e*5632|0)+(f*148|0)+500|0;l=b+(f*232|0)+48|0;n=P+(e*5632|0)+(f*148|0)+516|0;q=b+(f*232|0)+60|0;r=P+(e*5632|0)+(f*148|0)+492|0;s=b+(f*232|0)+64|0;t=P+(e*5632|0)+(f*148|0)+508|0;u=b+(f*232|0)+52|0;v=P+(e*5632|0)+(f*148|0)+504|0;w=b+(f*232|0)+68|0;x=P+(e*5632|0)+(f*148|0)+520|0;y=b+(f*232|0)+72|0;z=P+(e*5632|0)+(f*148|0)+524|0;A=b+(f*232|0)+96|0;B=P+(e*5632|0)+(f*148|0)+532|0;C=b+(f*232|0)+104|0;D=P+(e*5632|0)+(f*148|0)+528|0;E=b+(f*232|0)+100|0;F=P+(e*5632|0)+(f*148|0)+536|0;G=b+(f*232|0)+108|0;do{o=a[R+i>>0]|0;do if((o|0)==76){c[s>>2]=c[r>>2];c[u>>2]=c[t>>2]}else if((o|0)==80)if((c[Q>>2]|0)>>>0<2){c[w>>2]=c[v>>2];c[y>>2]=c[x>>2];break}else{c[A>>2]=c[z>>2];c[C>>2]=c[B>>2];c[E>>2]=c[D>>2];c[G>>2]=c[F>>2];break}else if((o|0)==67){c[l>>2]=c[m>>2];c[q>>2]=c[n>>2]}else if((o|0)==82){c[S>>2]=c[k>>2];c[p>>2]=c[j>>2]}while(0);i=i+1|0}while((i|0)!=4)}i=(h|0)>-1;if(!g){if(!i)return;l=P+(e*5632|0)+(f*148|0)+500|0;m=P+(e*5632|0)+(f*148|0)+556|0;n=b+(f*232|0)+48|0;o=b+(f*232|0)+60|0;p=P+(e*5632|0)+(f*148|0)+496|0;q=P+(e*5632|0)+(f*148|0)+552|0;r=b+(f*232|0)+56|0;s=P+(e*5632|0)+(f*148|0)+492|0;t=P+(e*5632|0)+(f*148|0)+548|0;u=b+(f*232|0)+64|0;v=b+(f*232|0)+52|0;w=P+(e*5632|0)+(f*148|0)+504|0;x=P+(e*5632|0)+(f*148|0)+560|0;y=b+(f*232|0)+68|0;z=b+(f*232|0)+72|0;A=P+(e*5632|0)+(f*148|0)+524|0;B=P+(e*5632|0)+(f*148|0)+564|0;C=P+(e*5632|0)+(f*148|0)+532|0;D=P+(e*5632|0)+(f*148|0)+568|0;E=b+(f*232|0)+96|0;F=P+(e*5632|0)+(f*148|0)+540|0;G=b+(f*232|0)+100|0;g=b+(f*232|0)+104|0;k=P+(e*5632|0)+(f*148|0)+544|0;j=b+(f*232|0)+108|0;while(1){i=a[R+h>>0]|0;do if((i|0)==82){b=c[p>>2]|0;c[S>>2]=b;b=b+1|0;c[r>>2]=b;c[q>>2]=b}else if((i|0)==76){b=c[s>>2]|0;c[u>>2]=b;b=b+1|0;c[v>>2]=b;c[t>>2]=b}else if((i|0)==67){b=c[l>>2]|0;c[n>>2]=b;b=b+1|0;c[o>>2]=b;c[m>>2]=b}else if((i|0)==80)if((c[Q>>2]|0)>>>0<2){b=c[w>>2]|0;c[y>>2]=b;b=b+1|0;c[z>>2]=b;c[x>>2]=b;break}else{b=c[A>>2]|0;M=c[C>>2]|0;c[E>>2]=b;d=c[F>>2]|0;d=d+b-((b>>>0)%(d>>>0)|0)|0;c[G>>2]=d;c[g>>2]=M;b=c[k>>2]|0;b=b+M-((M>>>0)%(b>>>0)|0)|0;c[j>>2]=b;c[B>>2]=d;c[D>>2]=b;break}while(0);if((h|0)>0)h=h+-1|0;else break}return}if(!i)return;J=P+(e*5632|0)+(f*148|0)+552|0;K=P+(e*5632|0)+(f*148|0)+512|0;L=P+(e*5632|0)+(f*148|0)+496|0;M=b+(f*232|0)+56|0;N=P+(e*5632|0)+(f*148|0)+556|0;O=P+(e*5632|0)+(f*148|0)+516|0;l=P+(e*5632|0)+(f*148|0)+500|0;n=b+(f*232|0)+48|0;q=b+(f*232|0)+60|0;r=P+(e*5632|0)+(f*148|0)+548|0;s=P+(e*5632|0)+(f*148|0)+508|0;t=P+(e*5632|0)+(f*148|0)+492|0;u=b+(f*232|0)+64|0;v=b+(f*232|0)+52|0;w=P+(e*5632|0)+(f*148|0)+560|0;x=P+(e*5632|0)+(f*148|0)+520|0;y=P+(e*5632|0)+(f*148|0)+504|0;z=b+(f*232|0)+68|0;A=b+(f*232|0)+72|0;B=P+(e*5632|0)+(f*148|0)+564|0;C=P+(e*5632|0)+(f*148|0)+528|0;D=b+(f*232|0)+96|0;E=P+(e*5632|0)+(f*148|0)+540|0;F=b+(f*232|0)+100|0;G=P+(e*5632|0)+(f*148|0)+568|0;g=P+(e*5632|0)+(f*148|0)+536|0;H=b+(f*232|0)+104|0;I=P+(e*5632|0)+(f*148|0)+544|0;p=b+(f*232|0)+108|0;m=P+(e*5632|0)+(f*148|0)+524|0;j=P+(e*5632|0)+(f*148|0)+532|0;i=1;while(1){o=R+h|0;k=a[o>>0]|0;do if((k|0)==67){b=c[N>>2]|0;c[n>>2]=b+-1;c[q>>2]=b}else if((k|0)==82){b=c[J>>2]|0;c[S>>2]=b+-1;c[M>>2]=b}else if((k|0)==76){b=c[r>>2]|0;c[u>>2]=b+-1;c[v>>2]=b}else if((k|0)==80)if((c[Q>>2]|0)>>>0<2){b=c[w>>2]|0;c[z>>2]=b+-1;c[A>>2]=b;break}else{b=c[B>>2]|0;P=c[E>>2]|0;c[D>>2]=b-P-((b>>>0)%(P>>>0)|0);c[F>>2]=b;b=c[G>>2]|0;P=c[I>>2]|0;c[H>>2]=b-P-((b>>>0)%(P>>>0)|0);c[p>>2]=b;break}while(0);do if((i|0)==1){i=a[o>>0]|0;if((i|0)==76){i=c[r>>2]|0;if((i|0)!=(c[s>>2]|0)){c[u>>2]=i;i=i+1|0;c[v>>2]=i;c[r>>2]=i;i=0;break}if(!(mA(h+-1|0,d,e,f,R)|0)){i=0;break}i=c[t>>2]|0;c[u>>2]=i;i=i+1|0;c[v>>2]=i;c[r>>2]=i;i=1;break}else if((i|0)==80){if((c[Q>>2]|0)>>>0<2){i=c[w>>2]|0;if((i|0)!=(c[x>>2]|0)){c[z>>2]=i;i=i+1|0;c[A>>2]=i;c[w>>2]=i;i=0;break}if(!(mA(h+-1|0,d,e,f,R)|0)){i=0;break}i=c[y>>2]|0;c[z>>2]=i;i=i+1|0;c[A>>2]=i;c[w>>2]=i;i=1;break}i=c[B>>2]|0;if(i>>>0<(c[C>>2]|0)>>>0){c[D>>2]=i;b=c[E>>2]|0;i=b+i-((i>>>0)%(b>>>0)|0)|0;c[F>>2]=i;c[B>>2]=i;i=0;break}o=c[G>>2]|0;if(o>>>0<(c[g>>2]|0)>>>0){c[H>>2]=o;b=c[I>>2]|0;i=0;o=b+o-((o>>>0)%(b>>>0)|0)|0}else{if(!(mA(h+-1|0,d,e,f,R)|0)){i=0;break}b=c[j>>2]|0;c[G>>2]=b;c[H>>2]=b;o=c[I>>2]|0;i=1;o=o+b-((b>>>0)%(o>>>0)|0)|0}c[p>>2]=o;c[G>>2]=o;P=c[m>>2]|0;c[D>>2]=P;b=c[E>>2]|0;b=b+P-((P>>>0)%(b>>>0)|0)|0;c[F>>2]=b;c[B>>2]=b;break}else if((i|0)==82){i=c[J>>2]|0;if((i|0)!=(c[K>>2]|0)){c[S>>2]=i;i=i+1|0;c[M>>2]=i;c[J>>2]=i;i=0;break}if(!(mA(h+-1|0,d,e,f,R)|0)){i=0;break}i=c[L>>2]|0;c[S>>2]=i;i=i+1|0;c[M>>2]=i;c[J>>2]=i;i=1;break}else if((i|0)==67){i=c[N>>2]|0;if((i|0)!=(c[O>>2]|0)){c[n>>2]=i;i=i+1|0;c[q>>2]=i;c[N>>2]=i;i=0;break}if(!(mA(h+-1|0,d,e,f,R)|0)){i=0;break}i=c[l>>2]|0;c[n>>2]=i;i=i+1|0;c[q>>2]=i;c[N>>2]=i;i=1;break}else{i=1;break}}while(0);if((h|0)>0)h=h+-1|0;else break}return}c[S>>2]=c[P+(e*5632|0)+(f*148|0)+496>>2];c[b+(f*232|0)+56>>2]=c[P+(e*5632|0)+(f*148|0)+512>>2];c[b+(f*232|0)+48>>2]=c[P+(e*5632|0)+(f*148|0)+500>>2];c[b+(f*232|0)+60>>2]=c[P+(e*5632|0)+(f*148|0)+516>>2];c[b+(f*232|0)+64>>2]=c[P+(e*5632|0)+(f*148|0)+492>>2];c[b+(f*232|0)+52>>2]=c[P+(e*5632|0)+(f*148|0)+508>>2];c[b+(f*232|0)+68>>2]=c[P+(e*5632|0)+(f*148|0)+504>>2];c[b+(f*232|0)+72>>2]=c[P+(e*5632|0)+(f*148|0)+520>>2];c[b+(f*232|0)+96>>2]=c[P+(e*5632|0)+(f*148|0)+524>>2];c[b+(f*232|0)+104>>2]=c[P+(e*5632|0)+(f*148|0)+532>>2];c[b+(f*232|0)+100>>2]=c[P+(e*5632|0)+(f*148|0)+528>>2];c[b+(f*232|0)+108>>2]=c[P+(e*5632|0)+(f*148|0)+536>>2];return}function rA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;if(!d)Ra(254456,254472,1836,254600);if(!b)Ra(254520,254472,1837,254600);f=c[d+24>>2]|0;if((da(c[d+28>>2]|0,f)|0)>>>0<=e>>>0)Ra(254536,254472,1838,254600);F=c[d+68>>2]|0;I=(e>>>0)%(f>>>0)|0;K=(e>>>0)/(f>>>0)|0;D=c[d+4>>2]|0;E=c[d+12>>2]|0;C=(da(E,I)|0)+D|0;G=c[b>>2]|0;G=(C|0)>(G|0)?C:G;D=(da(E,I+1|0)|0)+D|0;I=c[b+8>>2]|0;I=(D|0)<(I|0)?D:I;D=c[d+8>>2]|0;E=c[d+16>>2]|0;C=(da(E,K)|0)+D|0;J=c[b+4>>2]|0;J=(C|0)>(J|0)?C:J;D=(da(E,K+1|0)|0)+D|0;K=c[b+12>>2]|0;K=(D|0)<(K|0)?D:K;D=c[b+16>>2]|0;a:do if(D){g=0;l=2147483647;f=2147483647;j=0;E=0;B=c[b+24>>2]|0;C=c[F+(e*5632|0)+5576>>2]|0;while(1){y=c[B>>2]|0;if(!y){f=10;break}b=y+-1|0;h=(b+G|0)/(y|0)|0;z=c[B+4>>2]|0;if(!z){f=12;break}i=z+-1|0;A=c[C+4>>2]|0;j=A>>>0>j>>>0?A:j;if(!A)b=l;else{w=(i+K|0)/(z|0)|0;u=(b+I|0)/(y|0)|0;s=(i+J|0)/(z|0)|0;q=yfa(h|0,((h|0)<0)<<31>>31|0,-1,-1)|0;r=H;s=yfa(s|0,((s|0)<0)<<31>>31|0,-1,-1)|0;t=H;u=yfa(u|0,((u|0)<0)<<31>>31|0,-1,-1)|0;v=H;w=yfa(w|0,((w|0)<0)<<31>>31|0,-1,-1)|0;x=H;b=l;h=0;p=0;while(1){n=c[C+(p<<2)+812>>2]|0;o=c[C+(p<<2)+944>>2]|0;l=h+-1+A|0;m=y<>>0>>0?b:m;f=f>>>0>>0?f:Q;Q=1<>31;h=yfa(q|0,r|0,Q|0,m|0)|0;h=pfa(h|0,H|0,l|0)|0;k=yfa(s|0,t|0,Q|0,m|0)|0;k=pfa(k|0,H|0,l|0)|0;i=yfa(u|0,v|0,Q|0,m|0)|0;i=pfa(i|0,H|0,l|0)|0;m=yfa(w|0,x|0,Q|0,m|0)|0;l=pfa(m|0,H|0,l|0)|0;m=1<>31|0,-1,-1)|0;m=yfa(m|0,H|0,l|0,((l|0)<0)<<31>>31|0)|0;m=pfa(m|0,H|0,o|0)|0;if((h|0)==(i|0))i=0;else{Q=1<>31|0,-1,-1)|0;i=yfa(Q|0,H|0,i|0,((i|0)<0)<<31>>31|0)|0;i=pfa(i|0,H|0,n|0)|0;i=(i<>n<>n}if((k|0)==(l|0))h=0;else h=(m<>o<>o;i=da(h,i)|0;g=i>>>0>g>>>0?i:g;i=p+1|0;if(i>>>0>>0){h=~p;p=i}else break}}E=E+1|0;if(E>>>0>=D>>>0){L=g;M=b;N=f;O=D;P=j;break a}else{l=b;B=B+52|0;C=C+1080|0}}if((f|0)==10)Ra(258480,258488,105,258528);else if((f|0)==12)Ra(258480,258488,105,258528)}else{L=0;M=2147483647;N=2147483647;O=0;P=0}while(0);if(a[F+(e*5632|0)+5628>>0]&2){hP(d,e,G,I,J,K,L,M,N);return}h=(c[F+(e*5632|0)+420>>2]|0)+1|0;if(!h)return;b=c[F+(e*5632|0)+8>>2]|0;i=c[F+(e*5632|0)+4>>2]|0;f=F+(e*5632|0)+424|0;g=0;while(1){c[f+76>>2]=0;c[f+92>>2]=O;c[f+72>>2]=0;c[f+88>>2]=P;c[f+68>>2]=0;c[f+84>>2]=b;c[f+36>>2]=i;c[f+80>>2]=0;c[f+96>>2]=L;c[f+100>>2]=G;c[f+104>>2]=I;c[f+108>>2]=J;c[f+112>>2]=K;c[f+116>>2]=M;c[f+120>>2]=N;g=g+1|0;if((g|0)==(h|0))break;else f=f+148|0}return} -function Zd(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;return b|0}function _d(){return i|0}function $d(a){a=a|0;i=a}function ae(a,b){a=a|0;b=b|0;if(!s){s=a;t=b}}function be(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function ce(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function de(a){a=a|0;H=a}function ee(){return H|0}function fe(a){a=a|0;db(a|0)|0;uda()}function ge(a,b,d){a=a|0;b=b|0;d=d|0;c[a+4>>2]=d;ob(1,a|0);Wa(34963,c[a>>2]|0);Jc(34963,d<<2|0,b|0,35044);Wa(34963,0);return}function he(a){a=a|0;Ic(1,a|0);return}function ie(a){a=a|0;Wa(34963,c[a>>2]|0);return}function je(a){a=a|0;Wa(34963,0);return}function ke(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+64|0;b=s+8|0;d=s+48|0;r=s+36|0;h=s+16|0;e=s+60|0;f=s+32|0;l=s+24|0;j=s+40|0;k=s+44|0;q=s;m=s+52|0;n=s+56|0;p=a+28|0;g[d>>2]=0.0;g[r>>2]=0.0;Bf(b,d,r);r=a+32|0;d=c[r>>2]|0;o=a+36|0;if(d>>>0<(c[o>>2]|0)>>>0){if(!d)a=0;else{t=b;b=c[t+4>>2]|0;a=d;c[a>>2]=c[t>>2];c[a+4>>2]=b;a=c[r>>2]|0}c[r>>2]=a+8}else qe(p,b);g[e>>2]=0.0;g[f>>2]=1.0;Bf(h,e,f);a=c[r>>2]|0;if(a>>>0<(c[o>>2]|0)>>>0){if(!a)a=0;else{f=h;t=c[f+4>>2]|0;c[a>>2]=c[f>>2];c[a+4>>2]=t;a=c[r>>2]|0}c[r>>2]=a+8}else qe(p,h);g[j>>2]=1.0;g[k>>2]=1.0;Bf(l,j,k);a=c[r>>2]|0;if(a>>>0<(c[o>>2]|0)>>>0){if(!a)a=0;else{j=l;t=c[j+4>>2]|0;c[a>>2]=c[j>>2];c[a+4>>2]=t;a=c[r>>2]|0}c[r>>2]=a+8}else qe(p,l);g[m>>2]=1.0;g[n>>2]=0.0;Bf(q,m,n);a=c[r>>2]|0;if(a>>>0>=(c[o>>2]|0)>>>0){qe(p,q);i=s;return}if(!a)a=0;else{t=c[q+4>>2]|0;c[a>>2]=c[q>>2];c[a+4>>2]=t;a=c[r>>2]|0}c[r>>2]=a+8;i=s;return}function le(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+4|0;k=c[a>>2]|0;e=((c[j>>2]|0)-k>>2)+1|0;if(e>>>0>1073741823)i8(a);l=a+8|0;f=k;d=(c[l>>2]|0)-f|0;if(d>>2>>>0<536870911){d=d>>1;d=d>>>0>>0?e:d;e=(c[j>>2]|0)-f|0;f=e>>2;if(!d){h=0;g=0}else i=6}else{e=(c[j>>2]|0)-f|0;d=1073741823;f=e>>2;i=6}if((i|0)==6){h=d;g=jda(d<<2)|0}d=g+(f<<2)|0;if(d)c[d>>2]=c[b>>2];qfa(g|0,k|0,e|0)|0;c[a>>2]=g;c[j>>2]=g+(f+1<<2);c[l>>2]=g+(h<<2);if(!k)return;nda(k);return}function me(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=a+4|0;l=c[a>>2]|0;e=((c[k>>2]|0)-l>>6)+1|0;if(e>>>0>67108863)i8(a);m=a+8|0;f=l;d=(c[m>>2]|0)-f|0;if(d>>6>>>0<33554431){d=d>>5;d=d>>>0>>0?e:d;f=(c[k>>2]|0)-f|0;e=f>>6;if(!d){g=0;j=0;i=e}else h=6}else{f=(c[k>>2]|0)-f|0;d=67108863;e=f>>6;h=6}if((h|0)==6){g=d;j=jda(d<<6)|0;i=e}d=j+(i<<6)|0;h=j+(g<<6)|0;if(d){g=d+0|0;d=b+0|0;e=g+64|0;do{c[g>>2]=c[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(e|0))}qfa(j|0,l|0,f|0)|0;c[a>>2]=j;c[k>>2]=j+(i+1<<6);c[m>>2]=h;if(!l)return;nda(l);return}function ne(a){a=a|0;var b=0,d=0;c[a>>2]=64;d=c[a+28>>2]|0;if(!d)return;a=a+32|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-d|0)>>>3)<<3);nda(d);return}function oe(a){a=a|0;var b=0,d=0,e=0;c[a>>2]=64;b=c[a+28>>2]|0;if(!b){nda(a);return}d=a+32|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-8-b|0)>>>3)<<3);nda(b);nda(a);return}function pe(a,b){a=a|0;b=b|0;Cd[c[(c[b>>2]|0)+12>>2]&255](b,a);return}function qe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=a+4|0;k=c[a>>2]|0;e=((c[j>>2]|0)-k>>3)+1|0;if(e>>>0>536870911)i8(a);l=a+8|0;f=k;d=(c[l>>2]|0)-f|0;if(d>>3>>>0<268435455){d=d>>2;d=d>>>0>>0?e:d;e=(c[j>>2]|0)-f|0;f=e>>3;if(!d){h=0;g=0}else i=6}else{e=(c[j>>2]|0)-f|0;d=536870911;f=e>>3;i=6}if((i|0)==6){h=d;g=jda(d<<3)|0}d=g+(f<<3)|0;if(d){m=b;i=c[m+4>>2]|0;b=d;c[b>>2]=c[m>>2];c[b+4>>2]=i}qfa(g|0,k|0,e|0)|0;c[a>>2]=g;c[j>>2]=g+(f+1<<3);c[l>>2]=g+(h<<3);if(!k)return;nda(k);return}function re(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;c[a>>2]=88;c[a+4>>2]=b;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;h=a+20|0;c[h>>2]=d;f=a+24|0;g=f+0|0;b=e+0|0;a=g+64|0;do{c[g>>2]=c[b>>2];g=g+4|0;b=b+4|0}while((g|0)<(a|0));hf(d);gf(c[h>>2]|0,104,f);ef(c[h>>2]|0,120,0);ef(c[h>>2]|0,136,1);ef(c[h>>2]|0,152,2);ef(c[h>>2]|0,168,3);ef(c[h>>2]|0,184,4);ef(c[h>>2]|0,200,5);ef(c[h>>2]|0,216,6);ef(c[h>>2]|0,232,7);jf(c[h>>2]|0);return}function se(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;c[a>>2]=88;b=c[a+20>>2]|0;if(b){df(b);nda(b)}b=c[a+4>>2]|0;if(b)Bd[c[(c[b>>2]|0)+4>>2]&511](b);g=a+12|0;b=c[g>>2]|0;f=a+8|0;a=c[f>>2]|0;if((b|0)==(a|0))a=b;else{e=0;do{d=c[a+(e<<2)>>2]|0;if(d){Bd[c[(c[d>>2]|0)+4>>2]&511](d);b=c[g>>2]|0;a=c[f>>2]|0}e=e+1|0}while(e>>>0>2>>>0)}if(!a)return;if((b|0)!=(a|0))c[g>>2]=b+(~((b+-4-a|0)>>>2)<<2);nda(a);return}function te(a){a=a|0;se(a);nda(a);return}function ue(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g;c[d>>2]=b;f=a+12|0;e=c[f>>2]|0;if((e|0)==(c[a+16>>2]|0)){le(a+8|0,d);i=g;return}if(!e)d=0;else{c[e>>2]=b;d=c[f>>2]|0}c[f>>2]=d+4;i=g;return}function ve(a){a=a|0;var b=0,d=0,e=0;hf(c[a+20>>2]|0);d=a+4|0;b=c[d>>2]|0;Bd[c[(c[b>>2]|0)+8>>2]&511](b);b=c[a+8>>2]|0;a=c[a+12>>2]|0;if((b|0)!=(a|0))do{e=c[b>>2]|0;Cd[c[(c[e>>2]|0)+8>>2]&255](e,c[d>>2]|0);b=b+4|0}while((b|0)!=(a|0));e=c[d>>2]|0;Bd[c[(c[e>>2]|0)+20>>2]&511](e);d=c[d>>2]|0;Bd[c[(c[d>>2]|0)+24>>2]&511](d);return}function we(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=i;i=i+48|0;n=h+32|0;m=h;p=h+4|0;k=h+16|0;l=h+28|0;g[n>>2]=d;g[m>>2]=e;c[a>>2]=64;j=a+4|0;Cf(j);Af(a+16|0);o=a+28|0;c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;ke(a);c[a>>2]=296;p2(p,712,13);o=Ye(p)|0;v2(p);c[a+44>>2]=o;q2(a+48|0,b);c[a+60>>2]=j;g[l>>2]=0.0;Df(k,n,m,l);c[j+0>>2]=c[k+0>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[a+24>>2]=f;i=h;return}function xe(a,b){a=a|0;b=b|0;Ad[c[(c[b>>2]|0)+16>>2]&63](b,a+48|0,c[a+60>>2]|0,c[a+44>>2]|0,c[a+24>>2]|0);return}function ye(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;j=o+16|0;n=o;k=o+8|0;l=o+12|0;V3(n,b);if(!(a[n>>0]|0)){X3(n);i=o;return b|0}f=c[(c[b>>2]|0)+-12>>2]|0;c[k>>2]=c[b+(f+24)>>2];if((c[b+(f+4)>>2]&176|0)==32)m=d+e|0;else m=d;g=b+f|0;h=b+(f+76)|0;f=c[h>>2]|0;if((f|0)==-1){Y2(j,g);f=w8(j,357712)|0;f=Pd[c[(c[f>>2]|0)+28>>2]&511](f,32)|0;u8(j);f=f<<24>>24;c[h>>2]=f}c[j+0>>2]=c[k+0>>2];Be(l,j,d,m,d+e|0,g,f&255);if(c[l>>2]|0){X3(n);i=o;return b|0}d=c[(c[b>>2]|0)+-12>>2]|0;U2(b+d|0,c[b+(d+16)>>2]|5);X3(n);i=o;return b|0}function ze(a){a=a|0;var b=0,d=0;c[a>>2]=296;v2(a+48|0);c[a>>2]=64;d=c[a+28>>2]|0;if(!d)return;a=a+32|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-d|0)>>>3)<<3);nda(d);return}function Ae(a){a=a|0;var b=0,d=0,e=0;c[a>>2]=296;v2(a+48|0);c[a>>2]=64;b=c[a+28>>2]|0;if(!b){nda(a);return}d=a+32|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-8-b|0)>>>3)<<3);nda(b);nda(a);return}function Be(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+16|0;n=p;o=c[d>>2]|0;if(!o){c[b>>2]=0;i=p;return}q=e;l=g-q|0;m=h+12|0;k=c[m>>2]|0;l=(k|0)>(l|0)?k-l|0:0;k=f;h=k-q|0;if((h|0)>0?(Hd[c[(c[o>>2]|0)+48>>2]&255](o,e,h)|0)!=(h|0):0){c[d>>2]=0;c[b>>2]=0;i=p;return}do if((l|0)>0){r2(n,l,j);if(!(a[n>>0]&1))h=n+1|0;else h=c[n+8>>2]|0;if((Hd[c[(c[o>>2]|0)+48>>2]&255](o,h,l)|0)==(l|0)){v2(n);break}c[d>>2]=0;c[b>>2]=0;v2(n);i=p;return}while(0);g=g-k|0;if((g|0)>0?(Hd[c[(c[o>>2]|0)+48>>2]&255](o,f,g)|0)!=(g|0):0){c[d>>2]=0;c[b>>2]=0;i=p;return}c[m>>2]=0;c[b>>2]=o;i=p;return}function Ce(a,b,d,e,f,h){a=a|0;b=+b;d=+d;e=+e;f=+f;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+48|0;q=j+36|0;p=j+32|0;k=j+8|0;n=j+12|0;l=j+16|0;o=j+28|0;m=j;g[q>>2]=b;g[p>>2]=d;g[k>>2]=e;g[n>>2]=f;g[o>>2]=0.0;Df(l,q,p,o);Bf(m,k,n);n=c[m>>2]|0;m=c[m+4>>2]|0;c[a>>2]=64;k=a+4|0;c[k+0>>2]=c[l+0>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];l=a+16|0;c[l>>2]=n;c[l+4>>2]=m;c[a+24>>2]=-1;l=a+28|0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;ke(a);c[a>>2]=368;c[a+44>>2]=k;c[a+40>>2]=h;i=j;return}function De(a){a=a|0;var b=0,d=0,e=0;c[a>>2]=64;b=c[a+28>>2]|0;if(!b){nda(a);return}d=a+32|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-8-b|0)>>>3)<<3);nda(b);nda(a);return}function Ee(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;i=i+64|0;e=h;c[a>>2]=576;b=a+4|0;c[b>>2]=0;g=a+8|0;c[g>>2]=0;f=a+12|0;c[f>>2]=0;xf(e);d=c[g>>2]|0;if(d>>>0<(c[f>>2]|0)>>>0){if(!d)b=0;else{f=d+0|0;b=e+0|0;d=f+64|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0}while((f|0)<(d|0));b=c[g>>2]|0}b=b+64|0;c[g>>2]=b}else{me(b,e);b=c[g>>2]|0}c[a+16>>2]=b+-64;c[a>>2]=440;c[a+44>>2]=0;c[a+48>>2]=0;c[a+52>>2]=0;Fe(a);i=h;return}function Fe(a){a=a|0;var b=0,d=0,e=0,f=0;d=a+20|0;Qc(1,d|0);b=a+24|0;ob(1,b|0);Hc(c[d>>2]|0);Wa(34962,c[b>>2]|0);Jc(34962,672e4,0,35048);Fc(0);Fc(1);Fc(2);Fc(3);hc(0,3,5126,0,28,0);hc(1,2,5126,0,28,12);hc(2,1,5126,0,28,20);hc(3,4,5121,1,28,24);Wa(34962,0);b=lda(144e4)|0;d=0;e=0;while(1){c[b+(d<<2)>>2]=e;c[b+((d|1)<<2)>>2]=e|1;f=e|2;c[b+(d+2<<2)>>2]=f;c[b+(d+3<<2)>>2]=f;c[b+(d+4<<2)>>2]=e|3;c[b+(d+5<<2)>>2]=e;d=d+6|0;if((d|0)>=36e4)break;else e=e+4|0}d=jda(8)|0;ge(d,b,36e4);c[a+28>>2]=d;Hc(0);b=lda(672e4)|0;d=b+672e4|0;e=b;do{Cf(e);Af(e+12|0);e=e+28|0}while((e|0)!=(d|0));c[a+40>>2]=b;return}function Ge(a){a=a|0;var b=0,d=0,e=0;c[a>>2]=440;b=c[a+28>>2]|0;if(b){he(b);nda(b)}Ic(1,a+24|0);b=c[a+44>>2]|0;if(b){d=a+48|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-4-b|0)>>>2)<<2);nda(b)}c[a>>2]=576;e=c[a+4>>2]|0;if(!e)return;b=a+8|0;d=c[b>>2]|0;if((d|0)!=(e|0))c[b>>2]=d+(~((d+-64-e|0)>>>6)<<6);nda(e);return}function He(a){a=a|0;Ge(a);nda(a);return}function Ie(a){a=a|0;Wa(34962,c[a+24>>2]|0);c[a+36>>2]=c[a+40>>2];return}function Je(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+112|0;o=D+100|0;q=D+88|0;r=D+76|0;v=D+64|0;w=D+60|0;x=D+48|0;y=D+36|0;z=D+28|0;A=D+24|0;B=D+12|0;C=D;s=D+32|0;t=b+4|0;u=c[b+24>>2]|0;e=c[b+40>>2]|0;do if(e){l=c[e+12>>2]|0;c[o>>2]=l;if(!l)d=0.0;else{n=a+44|0;m=a+48|0;f=c[m>>2]|0;h=c[n>>2]|0;j=f-h>>2;k=0;while(1){if(k>>>0>=j>>>0)break;e=k+1|0;if((c[h+(k<<2)>>2]|0)==(l|0)){p=7;break}else k=e}if((p|0)==7){d=+(e|0);break}if(j>>>0>31){Bd[c[(c[a>>2]|0)+20>>2]&511](a);Bd[c[(c[a>>2]|0)+24>>2]&511](a);Bd[c[(c[a>>2]|0)+8>>2]&511](a);e=c[m>>2]|0}else e=f;if((e|0)==(c[a+52>>2]|0)){Ne(n,o);e=c[m>>2]|0}else{if(e)c[e>>2]=l;e=e+4|0;c[m>>2]=e}d=+(e-(c[n>>2]|0)>>2>>>0)}}else{c[o>>2]=0;d=0.0}while(0);p=a+36|0;j=c[p>>2]|0;k=a+16|0;yf(q,c[k>>2]|0,t);c[j+0>>2]=c[q+0>>2];c[j+4>>2]=c[q+4>>2];c[j+8>>2]=c[q+8>>2];q=b+28|0;j=c[q>>2]|0;f=c[j+4>>2]|0;o=(c[p>>2]|0)+12|0;c[o>>2]=c[j>>2];c[o+4>>2]=f;o=c[p>>2]|0;g[o+20>>2]=d;c[o+24>>2]=u;o=o+28|0;c[p>>2]=o;f=c[k>>2]|0;j=b+8|0;n=b+20|0;g[w>>2]=+g[j>>2]+ +g[n>>2];l=b+12|0;Df(v,t,w,l);yf(r,f,v);c[o+0>>2]=c[r+0>>2];c[o+4>>2]=c[r+4>>2];c[o+8>>2]=c[r+8>>2];w=(c[q>>2]|0)+8|0;r=c[w+4>>2]|0;v=(c[p>>2]|0)+12|0;c[v>>2]=c[w>>2];c[v+4>>2]=r;v=c[p>>2]|0;g[v+20>>2]=d;c[v+24>>2]=u;v=v+28|0;c[p>>2]=v;r=c[k>>2]|0;w=b+16|0;g[z>>2]=+g[t>>2]+ +g[w>>2];g[A>>2]=+g[j>>2]+ +g[n>>2];Df(y,z,A,l);yf(x,r,y);c[v+0>>2]=c[x+0>>2];c[v+4>>2]=c[x+4>>2];c[v+8>>2]=c[x+8>>2];z=(c[q>>2]|0)+16|0;A=c[z+4>>2]|0;b=(c[p>>2]|0)+12|0;c[b>>2]=c[z>>2];c[b+4>>2]=A;b=c[p>>2]|0;g[b+20>>2]=d;c[b+24>>2]=u;b=b+28|0;c[p>>2]=b;A=c[k>>2]|0;g[s>>2]=+g[t>>2]+ +g[w>>2];Df(C,s,j,l);yf(B,A,C);c[b+0>>2]=c[B+0>>2];c[b+4>>2]=c[B+4>>2];c[b+8>>2]=c[B+8>>2];B=(c[q>>2]|0)+24|0;C=c[B+4>>2]|0;b=(c[p>>2]|0)+12|0;c[b>>2]=c[B>>2];c[b+4>>2]=C;b=c[p>>2]|0;g[b+20>>2]=d;c[b+24>>2]=u;c[p>>2]=b+28;a=a+32|0;c[a>>2]=(c[a>>2]|0)+6;i=D;return}function Ke(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0.0,Z=0.0,_=0.0;X=i;i=i+192|0;s=X+100|0;T=X+68|0;V=X+32|0;U=X+128|0;W=X+176|0;P=X+172|0;R=X+168|0;Q=X+164|0;S=X+160|0;z=X+148|0;H=X+136|0;I=X+132|0;J=X+24|0;K=X+116|0;L=X+104|0;M=X+60|0;N=X+8|0;O=X+36|0;A=X+48|0;B=X+64|0;C=X;D=X+72|0;E=X+84|0;F=X+96|0;G=X+16|0;u=b+44|0;t=b+48|0;k=c[t>>2]|0;l=c[u>>2]|0;p=k-l>>2;q=c[f>>2]|0;m=q+20|0;n=0;while(1){if(n>>>0>=p>>>0){l=5;break}j=n+1|0;if((c[l+(n<<2)>>2]|0)==(c[m>>2]|0)){l=4;break}else n=j}if((l|0)==4)y=+(j|0);else if((l|0)==5){if(p>>>0>31){Bd[c[(c[b>>2]|0)+20>>2]&511](b);Bd[c[(c[b>>2]|0)+24>>2]&511](b);Bd[c[(c[b>>2]|0)+8>>2]&511](b);j=c[f>>2]|0;k=c[t>>2]|0}else j=q;j=c[j+20>>2]|0;c[s>>2]=j;if(k>>>0<(c[b+52>>2]|0)>>>0){if(k)c[k>>2]=j;j=k+4|0;c[t>>2]=j}else{Oe(u,s);j=c[t>>2]|0}y=+(j-(c[u>>2]|0)>>2>>>0)}p=c[f+4>>2]|0;u=d+1|0;v=f+12|0;w=d+8|0;x=e+4|0;s=f+16|0;n=b+36|0;t=b+16|0;m=b+32|0;k=d+4|0;l=0;o=+g[e>>2];while(1){j=a[d>>0]|0;q=(j&1)==0;if(q)j=(j&255)>>>1;else j=c[k>>2]|0;if(l>>>0>=j>>>0)break;j=ij(p,a[(q?u:c[w>>2]|0)+l>>0]|0)|0;if(j){if((l|0)>0){Z=+dj(j,a[((a[d>>0]&1)==0?u:c[w>>2]|0)+(l+-1)>>0]|0);Y=+g[v>>2];r=Y;o=o+Z/Y}else r=+g[v>>2];_=o+ +(c[j+16>>2]|0)/r;g[T>>2]=_;Z=+g[s>>2];Y=+g[x>>2]+ +(c[j+20>>2]|0)/Z;g[V>>2]=Y;g[U>>2]=_+ +((c[j+8>>2]|0)>>>0)/r;g[W>>2]=Y-+((c[j+12>>2]|0)>>>0)/Z;g[P>>2]=+g[j+32>>2];g[R>>2]=+g[j+36>>2];g[Q>>2]=+g[j+40>>2];g[S>>2]=+g[j+44>>2];e=c[n>>2]|0;b=c[t>>2]|0;g[I>>2]=0.0;Df(H,T,V,I);yf(z,b,H);c[e+0>>2]=c[z+0>>2];c[e+4>>2]=c[z+4>>2];c[e+8>>2]=c[z+8>>2];e=(c[n>>2]|0)+12|0;Bf(J,P,R);b=J;f=c[b+4>>2]|0;c[e>>2]=c[b>>2];c[e+4>>2]=f;e=c[n>>2]|0;g[e+20>>2]=y;c[e+24>>2]=h;e=e+28|0;c[n>>2]=e;f=c[t>>2]|0;g[M>>2]=0.0;Df(L,T,W,M);yf(K,f,L);c[e+0>>2]=c[K+0>>2];c[e+4>>2]=c[K+4>>2];c[e+8>>2]=c[K+8>>2];e=(c[n>>2]|0)+12|0;Bf(N,P,S);f=N;b=c[f+4>>2]|0;c[e>>2]=c[f>>2];c[e+4>>2]=b;e=c[n>>2]|0;g[e+20>>2]=y;c[e+24>>2]=h;e=e+28|0;c[n>>2]=e;b=c[t>>2]|0;g[B>>2]=0.0;Df(A,U,W,B);yf(O,b,A);c[e+0>>2]=c[O+0>>2];c[e+4>>2]=c[O+4>>2];c[e+8>>2]=c[O+8>>2];e=(c[n>>2]|0)+12|0;Bf(C,Q,S);b=C;f=c[b+4>>2]|0;c[e>>2]=c[b>>2];c[e+4>>2]=f;e=c[n>>2]|0;g[e+20>>2]=y;c[e+24>>2]=h;e=e+28|0;c[n>>2]=e;f=c[t>>2]|0;g[F>>2]=0.0;Df(E,U,V,F);yf(D,f,E);c[e+0>>2]=c[D+0>>2];c[e+4>>2]=c[D+4>>2];c[e+8>>2]=c[D+8>>2];e=(c[n>>2]|0)+12|0;Bf(G,Q,R);f=G;b=c[f+4>>2]|0;c[e>>2]=c[f>>2];c[e+4>>2]=b;e=c[n>>2]|0;g[e+20>>2]=y;c[e+24>>2]=h;c[n>>2]=e+28;c[m>>2]=(c[m>>2]|0)+6;o=o+ +g[j+24>>2]/+g[v>>2]}l=l+1|0}i=X;return}function Le(a){a=a|0;var b=0,d=0;Wa(34962,c[a+24>>2]|0);b=a+36|0;a=a+40|0;d=c[a>>2]|0;Eb(34962,0,(c[b>>2]|0)-d|0,d|0);c[b>>2]=c[a>>2];Wa(34962,0);return}function Me(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+48|0;b=a+44|0;if((c[e>>2]|0)!=(c[b>>2]|0)){d=0;do{zc(d+33984|0);nc(3553,c[(c[b>>2]|0)+(d<<2)>>2]|0);d=d+1|0}while(d>>>0<(c[e>>2]|0)-(c[b>>2]|0)>>2>>>0)}Hc(c[a+20>>2]|0);f=a+28|0;ie(c[f>>2]|0);d=a+32|0;Cb(4,c[d>>2]|0,5125,0);je(c[f>>2]|0);Hc(0);c[d>>2]=0;b=c[b>>2]|0;d=c[e>>2]|0;if((d|0)==(b|0))return;c[e>>2]=d+(~((d+-4-b|0)>>>2)<<2);return}function Ne(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+4|0;k=c[a>>2]|0;e=((c[j>>2]|0)-k>>2)+1|0;if(e>>>0>1073741823)i8(a);l=a+8|0;f=k;d=(c[l>>2]|0)-f|0;if(d>>2>>>0<536870911){d=d>>1;d=d>>>0>>0?e:d;e=(c[j>>2]|0)-f|0;f=e>>2;if(!d){h=0;g=0}else i=6}else{e=(c[j>>2]|0)-f|0;d=1073741823;f=e>>2;i=6}if((i|0)==6){h=d;g=jda(d<<2)|0}d=g+(f<<2)|0;if(d)c[d>>2]=c[b>>2];qfa(g|0,k|0,e|0)|0;c[a>>2]=g;c[j>>2]=g+(f+1<<2);c[l>>2]=g+(h<<2);if(!k)return;nda(k);return}function Oe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+4|0;k=c[a>>2]|0;e=((c[j>>2]|0)-k>>2)+1|0;if(e>>>0>1073741823)i8(a);l=a+8|0;f=k;d=(c[l>>2]|0)-f|0;if(d>>2>>>0<536870911){d=d>>1;d=d>>>0>>0?e:d;e=(c[j>>2]|0)-f|0;f=e>>2;if(!d){h=0;g=0}else i=6}else{e=(c[j>>2]|0)-f|0;d=1073741823;f=e>>2;i=6}if((i|0)==6){h=d;g=jda(d<<2)|0}d=g+(f<<2)|0;if(d)c[d>>2]=c[b>>2];qfa(g|0,k|0,e|0)|0;c[a>>2]=g;c[j>>2]=g+(f+1<<2);c[l>>2]=g+(h<<2);if(!k)return;nda(k);return}function Pe(a){a=a|0;var b=0,d=0;c[a>>2]=576;d=c[a+4>>2]|0;if(!d)return;a=a+8|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-64-d|0)>>>6)<<6);nda(d);return}function Qe(a){a=a|0;var b=0,d=0,e=0;c[a>>2]=576;b=c[a+4>>2]|0;if(!b){nda(a);return}d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-64-b|0)>>>6)<<6);nda(b);nda(a);return}function Re(a){a=a|0;return}function Se(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function Te(a){a=a|0;return}function Ue(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0;c[b+8>>2]=f;Af(b+12|0);q2(b+20|0,d);q2(b+32|0,e);d=_i(512,512,2)|0;c[b>>2]=d;g=+(f|0);if(!(a[e>>0]&1)){f=e+1|0;f=fj(d,g,f)|0;b=b+4|0;c[b>>2]=f;return}else{f=c[e+8>>2]|0;f=fj(d,g,f)|0;b=b+4|0;c[b>>2]=f;return}}function Ve(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0,h=0,j=0;e=i;i=i+16|0;j=e+12|0;f=e+8|0;h=e;g[j>>2]=b;g[f>>2]=d;Bf(h,j,f);f=c[h+4>>2]|0;a=a+12|0;c[a>>2]=c[h>>2];c[a+4>>2]=f;i=e;return}function We(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;d=c[153]|0;if((d|0)==(c[154]|0)){_e(608,b);i=e;return}if(!d)b=0;else{c[d>>2]=a;b=c[153]|0}c[153]=b+4;i=e;return}function Xe(){return c[c[152]>>2]|0}function Ye(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;d=c[152]|0;m=c[153]|0;if((d|0)==(m|0)){m=0;return m|0}g=a[b>>0]|0;k=(g&255)>>>1;l=b+1|0;j=c[b+8>>2]|0;i=c[b+4>>2]|0;if(!(g&1)){a:while(1){b=c[d>>2]|0;h=b+20|0;e=a[h>>0]|0;f=(e&1)==0;if(f)e=(e&255)>>>1;else e=c[b+24>>2]|0;b:do if((e|0)==(k|0)){if(!f)if(!(ffa(c[b+28>>2]|0,l,k)|0)){d=23;break a}else break;if(!k){d=23;break a}else{g=k;e=h+1|0;f=l}while(1){if((a[e>>0]|0)!=(a[f>>0]|0))break b;g=g+-1|0;if(!g){d=23;break a}else{e=e+1|0;f=f+1|0}}}while(0);d=d+4|0;if((d|0)==(m|0)){b=0;d=23;break}}if((d|0)==23)return b|0}else{c:while(1){b=c[d>>2]|0;h=b+20|0;e=a[h>>0]|0;f=(e&1)==0;if(f)e=(e&255)>>>1;else e=c[b+24>>2]|0;d:do if((e|0)==(i|0)){if(!f)if(!(ffa(c[b+28>>2]|0,j,i)|0)){d=23;break c}else break;if(!i){d=23;break c}else{g=i;e=h+1|0;f=j}while(1){if((a[e>>0]|0)!=(a[f>>0]|0))break d;g=g+-1|0;if(!g){d=23;break c}else{e=e+1|0;f=f+1|0}}}while(0);d=d+4|0;if((d|0)==(m|0)){b=0;d=23;break}}if((d|0)==23)return b|0}return 0}function Ze(){var a=0,b=0,d=0,e=0;a=c[153]|0;b=c[152]|0;if((a|0)==(b|0))return;else e=0;do{d=c[b+(e<<2)>>2]|0;if(d){v2(d+32|0);v2(d+20|0);nda(d);a=c[153]|0;b=c[152]|0}e=e+1|0}while(e>>>0>2>>>0);return}function _e(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+4|0;k=c[a>>2]|0;e=((c[j>>2]|0)-k>>2)+1|0;if(e>>>0>1073741823)i8(a);l=a+8|0;f=k;d=(c[l>>2]|0)-f|0;if(d>>2>>>0<536870911){d=d>>1;d=d>>>0>>0?e:d;e=(c[j>>2]|0)-f|0;f=e>>2;if(!d){h=0;g=0}else i=6}else{e=(c[j>>2]|0)-f|0;d=1073741823;f=e>>2;i=6}if((i|0)==6){h=d;g=jda(d<<2)|0}d=g+(f<<2)|0;if(d)c[d>>2]=c[b>>2];qfa(g|0,k|0,e|0)|0;c[a>>2]=g;c[j>>2]=g+(f+1<<2);c[l>>2]=g+(h<<2);if(!k)return;nda(k);return}function $e(){c[152]=0;c[153]=0;c[154]=0;qb(200,608,o|0)|0;return}function af(a){a=a|0;var b=0,d=0;d=c[a>>2]|0;if(!d)return;a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-4-d|0)>>>2)<<2);nda(d);return}function bf(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=cf(a)|0;return}function cf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;r=i;i=i+80|0;o=r+68|0;q=r+56|0;p=r+44|0;g=r+40|0;e=r+36|0;f=r+32|0;m=r+16|0;k=r+4|0;n=r;l=r+20|0;d=Xa()|0;h=sc(35633)|0;j=sc(35632)|0;t=Lc(c[b>>2]|0,704)|0;uc(t|0,0,2)|0;u=nb(t|0)|0;v=u+1|0;s=lda(v)|0;sfa(s|0,0,v|0)|0;uc(t|0,0,0)|0;Na(s|0,1,u|0,t|0)|0;wc(t|0)|0;p2(q,s,tfa(s|0)|0);oda(s);s=Lc(c[b+4>>2]|0,704)|0;uc(s|0,0,2)|0;t=nb(s|0)|0;u=t+1|0;b=lda(u)|0;sfa(b|0,0,u|0)|0;uc(s|0,0,0)|0;Na(b|0,1,t|0,s|0)|0;wc(s|0)|0;p2(p,b,tfa(b|0)|0);oda(b);if(!(a[q>>0]&1))b=q+1|0;else b=c[q+8>>2]|0;c[g>>2]=b;if(!(a[p>>0]&1))b=p+1|0;else b=c[p+8>>2]|0;c[e>>2]=b;pb(h|0,1,g|0,0);Dc(h|0);Qa(h|0,35713,f|0);if(!(c[f>>2]|0)){Qa(h|0,35716,m|0);b=c[m>>2]|0;c[k>>2]=0;e=k+4|0;c[e>>2]=0;d=k+8|0;c[d>>2]=0;if(!b){b=0;d=0}else{if((b|0)<0)i8(k);v=jda(b)|0;c[e>>2]=v;c[k>>2]=v;c[d>>2]=v+b;d=v;do{a[d>>0]=0;d=(c[e>>2]|0)+1|0;c[e>>2]=d;b=b+-1|0}while((b|0)!=0);b=c[m>>2]|0;d=c[k>>2]|0}Tb(h|0,b|0,m|0,d|0);v=ye(352848,624,32)|0;Y2(o,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);b=w8(o,357712)|0;b=Pd[c[(c[b>>2]|0)+28>>2]&511](b,10)|0;u8(o);Z3(v,b)|0;J3(v)|0;b=c[k>>2]|0;b=ye(v,b,tfa(b|0)|0)|0;Y2(o,b+(c[(c[b>>2]|0)+-12>>2]|0)|0);v=w8(o,357712)|0;v=Pd[c[(c[v>>2]|0)+28>>2]&511](v,10)|0;u8(o);Z3(b,v)|0;J3(b)|0;yb(h|0);b=c[k>>2]|0;if(!b){v=0;v2(p);v2(q);i=r;return v|0}if((c[e>>2]|0)!=(b|0))c[e>>2]=b;nda(b);v=0;v2(p);v2(q);i=r;return v|0}pb(j|0,1,e|0,0);Dc(j|0);Qa(j|0,35713,f|0);if(c[f>>2]|0){Sb(d|0,h|0);Sb(d|0,j|0);Sc(d|0);ub(d|0);yb(h|0);yb(j|0);v=d;v2(p);v2(q);i=r;return v|0}Qa(j|0,35716,n|0);b=c[n>>2]|0;c[l>>2]=0;e=l+4|0;c[e>>2]=0;d=l+8|0;c[d>>2]=0;if(!b){b=0;d=0}else{if((b|0)<0)i8(l);v=jda(b)|0;c[e>>2]=v;c[l>>2]=v;c[d>>2]=v+b;d=v;do{a[d>>0]=0;d=(c[e>>2]|0)+1|0;c[e>>2]=d;b=b+-1|0}while((b|0)!=0);b=c[n>>2]|0;d=c[l>>2]|0}Tb(j|0,b|0,n|0,d|0);v=ye(352848,664,34)|0;Y2(o,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);b=w8(o,357712)|0;b=Pd[c[(c[b>>2]|0)+28>>2]&511](b,10)|0;u8(o);Z3(v,b)|0;J3(v)|0;b=c[l>>2]|0;b=ye(v,b,tfa(b|0)|0)|0;Y2(o,b+(c[(c[b>>2]|0)+-12>>2]|0)|0);v=w8(o,357712)|0;v=Pd[c[(c[v>>2]|0)+28>>2]&511](v,10)|0;u8(o);Z3(b,v)|0;J3(b)|0;yb(j|0);b=c[l>>2]|0;if(!b){v=0;v2(p);v2(q);i=r;return v|0}if((c[e>>2]|0)!=(b|0))c[e>>2]=b;nda(b);v=0;v2(p);v2(q);i=r;return v|0}function df(a){a=a|0;Sa(c[a+8>>2]|0);return}function ef(a,b,d){a=a|0;b=b|0;d=d|0;qc(_a(c[a+8>>2]|0,b|0)|0,d|0);return}function ff(a,b,d){a=a|0;b=b|0;d=d|0;a=_a(c[a+8>>2]|0,b|0)|0;ac(a|0,+(+g[d>>2]),+(+g[d+4>>2]));return}function gf(a,b,d){a=a|0;b=b|0;d=d|0;Oa(_a(c[a+8>>2]|0,b|0)|0,1,0,d|0);return}function hf(a){a=a|0;Ia(c[a+8>>2]|0);return}function jf(a){a=a|0;Ia(0);return}function kf(a,b){a=a|0;b=b|0;q2(a,b);c[a+12>>2]=lf(a)|0;return}function lf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;h=k;if(!(a[b>>0]&1))f=b+1|0;else f=c[b+8>>2]|0;g=b+16|0;e=b+20|0;b=$I(f,0)|0;if((b|0)==-1){b=yJ(f)|0;if((b|0)==-1)b=0;else j=6}else j=6;if((j|0)==6)if((xJ(b)|0)!=0?(d=vJ(b,f,0)|0,(d|0)!=0):0){f=fI(d)|0;c[g>>2]=WH(d)|0;c[e>>2]=XH(d)|0;j=YH(d)|0;EI(d)|0;j=da(da(c[e>>2]|0,c[g>>2]|0)|0,(j|0)/8|0)|0;b=lda((j|0)>-1?j:-1)|0;qfa(b|0,f|0,j|0)|0;RH(d)}else b=0;Pb(1,h|0);nc(3553,c[h>>2]|0);sd(3553,10241,9728);sd(3553,10240,9728);Kc(3553,0,6407,c[g>>2]|0,c[e>>2]|0,0,6407,5121,b|0);nc(3553,0);if(!b){j=c[h>>2]|0;i=k;return j|0}oda(b);j=c[h>>2]|0;i=k;return j|0}function mf(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+32|0;g=j+12|0;h=j;c[b>>2]=d;c[b+4>>2]=e;c[b+8>>2]=f;if(!(nf(b)|0))jb();e=jda(44)|0;p2(g,712,13);p2(h,728,27);Ue(e,g,h,32);We(e);v2(h);v2(g);sJ(0);g=0;do{a[b+g+17>>0]=0;a[b+g+1041>>0]=0;a[b+g+2065>>0]=0;g=g+1|0}while((g|0)!=1024);g=0;do{a[b+g+3089>>0]=0;a[b+g+3121>>0]=0;a[b+g+3153>>0]=0;g=g+1|0}while((g|0)!=32);i=j;return}function nf(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f;if(!(kb()|0)){e=ye(352848,760,26)|0;Y2(b,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);a=w8(b,357712)|0;a=Pd[c[(c[a>>2]|0)+28>>2]&511](a,10)|0;u8(b);Z3(e,a)|0;J3(e)|0;e=0;i=f;return e|0}d=La(c[a+4>>2]|0,c[a+8>>2]|0,c[a>>2]|0,0,0)|0;e=a+12|0;c[e>>2]=d;if(!d){e=ye(352848,792,29)|0;Y2(b,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);a=w8(b,357712)|0;a=Pd[c[(c[a>>2]|0)+28>>2]&511](a,10)|0;u8(b);Z3(e,a)|0;J3(e)|0;e=0;i=f;return e|0}else{Bb(d|0);bd(c[e>>2]|0,a|0);cb(c[e>>2]|0,26)|0;rd(c[e>>2]|0,7)|0;_b(c[e>>2]|0,11)|0;xd(c[e>>2]|0,1)|0;Ec(0);ed(3042);bb(770,771);a=ye(352848,824,7)|0;e=Qb(7938)|0;e=ye(a,e,tfa(e|0)|0)|0;Y2(b,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);a=w8(b,357712)|0;a=Pd[c[(c[a>>2]|0)+28>>2]&511](a,10)|0;u8(b);Z3(e,a)|0;J3(e)|0;e=1;i=f;return e|0}return 0}function of(a){a=a|0;Ze();cg();jb();return}function pf(a,b,d){a=a|0;b=b|0;d=d|0;Gb(0,0,b|0,d|0);a=Ub(a|0)|0;c[a+4>>2]=b;c[a+8>>2]=d;return}function qf(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;a[(Ub(b|0)|0)+(c+17)>>0]=(e|0)!=0&1;return}function rf(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;a[(Ub(b|0)|0)+(c+3089)>>0]=(d|0)!=0&1;return}function sf(a,b,c){a=a|0;b=+b;c=+c;a=Ub(a|0)|0;h[a+3192>>3]=b;h[a+3200>>3]=c;return}function tf(b,c){b=b|0;c=c|0;if(c>>>0>1023){b=0;return b|0}b=(a[b+c+17>>0]|0)!=0;return b|0}function uf(a,b,c){a=a|0;b=b|0;c=c|0;h[b>>3]=+h[a+3192>>3];h[c>>3]=+h[a+3200>>3];return}function vf(a){a=a|0;Yc(16640);return}function wf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;e=0;do{if(!(a[b+e+17>>0]|0))d=0;else d=a[b+e+1041>>0]^1;a[b+e+2065>>0]=d;e=e+1|0}while((e|0)!=1024);e=0;do{if(!(a[b+e+3089>>0]|0))d=0;else d=a[b+e+3121>>0]^1;a[b+e+3153>>0]=d;e=e+1|0}while((e|0)!=32);qfa(b+1041|0,b+17|0,1024)|0;d=b+3121|0;e=b+3089|0;f=d+32|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));d=tc()|0;if(!d){cc();b=b+12|0;b=c[b>>2]|0;id(b|0);i=h;return}f=Y3(ye(352848,832,14)|0,d)|0;Y2(g,f+(c[(c[f>>2]|0)+-12>>2]|0)|0);e=w8(g,357712)|0;e=Pd[c[(c[e>>2]|0)+28>>2]&511](e,10)|0;u8(g);Z3(f,e)|0;J3(f)|0;cc();b=b+12|0;b=c[b>>2]|0;id(b|0);i=h;return}function xf(a){a=a|0;var b=0,d=0;b=a+0|0;d=b+60|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));g[a>>2]=1.0;g[a+20>>2]=1.0;g[a+40>>2]=1.0;g[a+60>>2]=1.0;return}function yf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,j=0.0,k=0.0,l=0.0;d=i;i=i+16|0;h=d+8|0;f=d;e=d+4|0;l=+g[c>>2];k=+g[c+4>>2];j=+g[c+8>>2];g[h>>2]=+g[b+48>>2]+(+g[b>>2]*l+ +g[b+16>>2]*k+ +g[b+32>>2]*j);g[f>>2]=+g[b+52>>2]+(l*+g[b+4>>2]+k*+g[b+20>>2]+j*+g[b+36>>2]);g[e>>2]=+g[b+56>>2]+(l*+g[b+8>>2]+k*+g[b+24>>2]+j*+g[b+40>>2]);Df(a,h,f,e);i=d;return}function zf(a,b,d,e,f,h,i){a=a|0;b=+b;d=+d;e=+e;f=+f;h=+h;i=+i;var j=0,k=0;j=a+0|0;k=j+56|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));g[a+60>>2]=1.0;g[a>>2]=2.0/(d-b);g[a+20>>2]=2.0/(f-e);g[a+40>>2]=2.0/(h-i);g[a+48>>2]=(b+d)/(b-d);g[a+52>>2]=(e+f)/(e-f);g[a+56>>2]=(h+i)/(i-h);return}function Af(a){a=a|0;g[a>>2]=0.0;g[a+4>>2]=0.0;return}function Bf(a,b,c){a=a|0;b=b|0;c=c|0;g[a>>2]=+g[b>>2];g[a+4>>2]=+g[c>>2];return}function Cf(a){a=a|0;g[a>>2]=0.0;g[a+4>>2]=0.0;g[a+8>>2]=0.0;return}function Df(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;g[a>>2]=+g[b>>2];g[a+4>>2]=+g[c>>2];g[a+8>>2]=+g[d>>2];return}function Ef(){var a=0,b=0,d=0;d=i;i=i+48|0;b=d;c[b+12>>2]=0;c[b+16>>2]=0;c[b>>2]=856;Ff(b);Gf(b);c[b>>2]=856;a=c[b+24>>2]|0;if(a)Bd[c[(c[a>>2]|0)+4>>2]&511](a);c[b>>2]=1072;a=c[b+8>>2]|0;if(a)nda(a);a=c[b+4>>2]|0;if(!a){i=d;return 0}of(a);nda(a);i=d;return 0}function Ff(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+160|0;b=k+88|0;l=k;d=k+64|0;g=k+76|0;h=jda(3208)|0;mf(h,968,960,540);c[a+4>>2]=h;e=a+20|0;c[e>>2]=h;h=Xe()|0;e=c[e>>2]|0;Ve(h,+(c[e+4>>2]|0)*.03125,+(c[e+8>>2]|0)/18.0);e=jda(12)|0;bf(e,984,1016);h=a+36|0;c[h>>2]=e;e=jda(88)|0;f=jda(56)|0;Ee(f);h=c[h>>2]|0;zf(l,-16.0,16.0,-9.0,9.0,-1.0,1.0);j=b+0|0;l=l+0|0;m=j+64|0;do{c[j>>2]=c[l>>2];j=j+4|0;l=l+4|0}while((j|0)<(m|0));re(e,f,h,b);l=a+24|0;c[l>>2]=e;m=jda(48)|0;h=jda(24)|0;p2(d,1048,10);kf(h,d);Ce(m,0.0,0.0,4.0,4.0,h);h=a+32|0;c[h>>2]=m;v2(d);m=c[l>>2]|0;Cd[c[(c[m>>2]|0)+8>>2]&255](m,c[h>>2]|0);h=jda(72)|0;p2(g,356424,0);we(h,g,-15.5,7.800000190734863,-1);m=a+28|0;c[m>>2]=h;v2(g);l=c[l>>2]|0;Cd[c[(c[l>>2]|0)+8>>2]&255](l,c[m>>2]|0);i=k;return}function Gf(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;b=i;i=i+64|0;o=b+24|0;h=b+48|0;m=b+44|0;l=b+32|0;j=b+36|0;k=b+40|0;d=b;e=jda(8)|0;T2(o);n=c[o+4>>2]|0;f=e;c[f>>2]=c[o>>2];c[f+4>>2]=n;c[a+8>>2]=e;g[h>>2]=0.0;g[m>>2]=0.0;g[l>>2]=.01666666753590107;c[j>>2]=0;c[k>>2]=0;e=d+16|0;f=jda(28)|0;c[f>>2]=1176;c[f+4>>2]=a;c[f+8>>2]=m;c[f+12>>2]=l;c[f+16>>2]=k;c[f+20>>2]=j;c[f+24>>2]=h;c[e>>2]=f;fb(201,d|0,0,1);a=c[e>>2]|0;if((a|0)==(d|0)){Bd[c[(c[a>>2]|0)+16>>2]&511](a);i=b;return}if(!a){i=b;return}Bd[c[(c[a>>2]|0)+20>>2]&511](a);i=b;return}function Hf(a){a=a|0;var b=0;c[a>>2]=856;b=c[a+24>>2]|0;if(b)Bd[c[(c[b>>2]|0)+4>>2]&511](b);c[a>>2]=1072;b=c[a+8>>2]|0;if(b)nda(b);b=c[a+4>>2]|0;if(!b)return;of(b);nda(b);return}function If(a){a=a|0;var b=0;c[a>>2]=856;b=c[a+24>>2]|0;if(b)Bd[c[(c[b>>2]|0)+4>>2]&511](b);c[a>>2]=1072;b=c[a+8>>2]|0;if(b)nda(b);b=c[a+4>>2]|0;if(!b){nda(a);return}of(b);nda(b);nda(a);return}function Jf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;d=k+24|0;e=k;f=k+12|0;g=c[b+28>>2]|0;h=b+12|0;S2(f,c[h>>2]|0);j=C2(f,952)|0;c[e+0>>2]=c[j+0>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[j+0>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;j=g+48|0;if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[g+56>>2]>>0]=0;c[g+52>>2]=0}B2(j,0);c[j+0>>2]=c[e+0>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;v2(e);v2(f);b=ye(Y3(352848,c[b+16>>2]|0)|0,960,6)|0;b=ye(Y3(b,c[h>>2]|0)|0,952,4)|0;Y2(d,b+(c[(c[b>>2]|0)+-12>>2]|0)|0);j=w8(d,357712)|0;j=Pd[c[(c[j>>2]|0)+28>>2]&511](j,10)|0;u8(d);Z3(b,j)|0;J3(b)|0;i=k;return}function Kf(a){a=a|0;var b=0,d=0,e=0,f=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;j=l+8|0;k=l;b=l+24|0;d=l+16|0;e=l+20|0;f=a+20|0;if(!(tf(c[f>>2]|0,265)|0)){if(tf(c[f>>2]|0,264)|0){m=(c[(c[a+32>>2]|0)+44>>2]|0)+4|0;g[m>>2]=+g[m>>2]+-.5}}else{m=(c[(c[a+32>>2]|0)+44>>2]|0)+4|0;g[m>>2]=+g[m>>2]+.5}if(!(tf(c[f>>2]|0,263)|0)){if(tf(c[f>>2]|0,262)|0){m=c[(c[a+32>>2]|0)+44>>2]|0;g[m>>2]=+g[m>>2]+.5}}else{m=c[(c[a+32>>2]|0)+44>>2]|0;g[m>>2]=+g[m>>2]+-.5}uf(c[f>>2]|0,j,k);a=c[a+36>>2]|0;m=c[f>>2]|0;g[d>>2]=+h[j>>3]*32.0/+(c[m+4>>2]|0)+-16.0;g[e>>2]=9.0-+h[k>>3]*18.0/+(c[m+8>>2]|0);Bf(b,d,e);ff(a,936,b);i=l;return}function Lf(a){a=a|0;a=c[a+24>>2]|0;Bd[c[(c[a>>2]|0)+12>>2]&511](a);return}function Mf(a){a=a|0;var b=0;c[a>>2]=1072;b=c[a+8>>2]|0;if(b)nda(b);b=c[a+4>>2]|0;if(!b)return;of(b);nda(b);return}function Nf(a){a=a|0;var b=0;c[a>>2]=1072;b=c[a+8>>2]|0;if(b)nda(b);b=c[a+4>>2]|0;if(!b){nda(a);return}of(b);nda(b);nda(a);return}function Of(a){a=a|0;return}function Pf(a){a=a|0;return}function Qf(a){a=a|0;nda(a);return}function Rf(a){a=a|0;return}function Sf(a){a=a|0;nda(a);return}function Tf(a){a=a|0;var b=0,d=0;b=jda(28)|0;d=a+4|0;c[b>>2]=1176;a=b+4|0;c[a+0>>2]=c[d+0>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];return b|0}function Uf(a,b){a=a|0;b=b|0;var d=0;if(!b)return;d=a+4|0;c[b>>2]=1176;a=b+4|0;c[a+0>>2]=c[d+0>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];return}function Vf(a){a=a|0;return}function Wf(a){a=a|0;nda(a);return}function Xf(a){a=a|0;$f(a+4|0);return}function Yf(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)!=1368){a=0;return a|0}a=a+4|0;return a|0}function Zf(a){a=a|0;return 1400}function _f(a){a=a|0;a=c[a+16>>2]|0;if(!a){a=gc(4)|0;c[a>>2]=1152;qd(a|0,1128,28)}else{Bd[c[(c[a>>2]|0)+24>>2]&511](a);return}}function $f(a){a=a|0;var b=0,d=0.0,e=0,f=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;f=l;k=c[a>>2]|0;h=k+4|0;vf(c[h>>2]|0);j=k+8|0;m=c[j>>2]|0;T2(f);b=f;m=xfa(c[b>>2]|0,c[b+4>>2]|0,c[m>>2]|0,c[m+4>>2]|0)|0;b=a+4|0;e=a+8|0;if((+(m>>>0)+4294967296.0*+(H|0))/1.0e6/1.0e3-+g[c[b>>2]>>2]>+g[c[e>>2]>>2]){Bd[c[(c[k>>2]|0)+16>>2]&511](k);m=c[a+12>>2]|0;c[m>>2]=(c[m>>2]|0)+1;m=c[b>>2]|0;g[m>>2]=+g[c[e>>2]>>2]+ +g[m>>2]}Bd[c[(c[k>>2]|0)+20>>2]&511](k);e=a+16|0;b=c[e>>2]|0;c[b>>2]=(c[b>>2]|0)+1;wf(c[h>>2]|0);h=c[j>>2]|0;T2(f);b=f;h=xfa(c[b>>2]|0,c[b+4>>2]|0,c[h>>2]|0,c[h+4>>2]|0)|0;b=c[a+20>>2]|0;d=+g[b>>2];if(!((+(h>>>0)+4294967296.0*+(H|0))/1.0e6/1.0e3-d>1.0)){i=l;return}g[b>>2]=d+1.0;c[k+12>>2]=c[c[e>>2]>>2];h=a+12|0;c[k+16>>2]=c[c[h>>2]>>2];c[c[e>>2]>>2]=0;c[c[h>>2]>>2]=0;Bd[c[(c[k>>2]|0)+12>>2]&511](k);i=l;return}function ag(a){a=a|0;v2(a+12|0);v2(a);return}function bg(){return}function cg(){var a=0,b=0,d=0,e=0;a=c[353]|0;b=c[352]|0;if((a|0)==(b|0))return;else e=0;do{d=c[b+(e<<2)>>2]|0;if(d){ag(d);nda(d);b=c[352]|0;a=c[353]|0}e=e+1|0}while(e>>>0>2>>>0);return}function dg(){return}function eg(){c[352]=0;c[353]=0;c[354]=0;qb(202,1408,o|0)|0;return}function fg(a){a=a|0;var b=0,d=0;d=c[a>>2]|0;if(!d)return;a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-4-d|0)>>>2)<<2);nda(d);return}function gg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(!(gfa(b,2824)|0)){c[a+12>>2]=c[d>>2];d=0;i=h;return d|0}if(gfa(b,2840)|0){d=12;i=h;return d|0}e=c[d>>2]|0;if(!e){d=6;i=h;return d|0}f=e+116|0;b=c[f>>2]|0;c[g>>2]=b;do if(!b){b=tj(e,g,a)|0;if(!b){b=c[g>>2]|0;c[f>>2]=b;c[e+120>>2]=203;break}else{d=b;i=h;return d|0}}while(0);c[b+12>>2]=c[d+4>>2];d=0;i=h;return d|0}function hg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j+4|0;g=j;e=c[a+12>>2]|0;if(!(gfa(b,2864)|0)){b=c[d>>2]|0;if(!b){d=6;i=j;return d|0}f=b+116|0;e=c[f>>2]|0;c[g>>2]=e;do if(!e){e=tj(b,g,a)|0;if(!e){e=c[g>>2]|0;c[f>>2]=e;c[b+120>>2]=203;break}else{d=e;i=j;return d|0}}while(0);c[d+4>>2]=c[e+8>>2];d=0;i=j;return d|0}if(!(gfa(b,2824)|0)){c[d>>2]=e;d=0;i=j;return d|0}if(gfa(b,2840)|0){d=12;i=j;return d|0}b=c[d>>2]|0;if(!b){d=6;i=j;return d|0}f=b+116|0;e=c[f>>2]|0;c[h>>2]=e;do if(!e){e=tj(b,h,a)|0;if(!e){e=c[h>>2]|0;c[f>>2]=e;c[b+120>>2]=203;break}else{d=e;i=j;return d|0}}while(0);c[d+4>>2]=c[e+12>>2];d=0;i=j;return d|0}function ig(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if(!a){e=35;return e|0}if((c[a+16>>2]|0)>>>0<=b>>>0){e=16;return e|0}f=c[(c[(c[a+96>>2]|0)+12>>2]|0)+84>>2]|0;do if((f|0)!=0?(d&3|0)!=0|(d&983040|0)==65536:0){f=Qd[f&127](a,b,1,d,e)|0;if(f){if((f&255|0)==7)break;return f|0}if(d&1){e=0;return e|0}f=c[a+88>>2]|0;if(!f){e=36;return e|0}c[e>>2]=og(c[e>>2]|0,c[((d&16|0)==0?f+16|0:f+20|0)>>2]|0,64)|0;e=0;return e|0}while(0);e=jg(a,b,1,d,e)|0;return e|0}function jg(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;if(!a){b=35;return b|0}g=c[a+16>>2]|0;h=b+d|0;if(g>>>0<=b>>>0){b=16;return b|0}if(h>>>0>>0|h>>>0>g>>>0){b=16;return b|0}if(!d){b=0;return b|0}g=c[(c[(c[a+96>>2]|0)+12>>2]|0)+84>>2]|0;do if((g|0)!=0?(e&3|0)!=0|(e&983040|0)==65536:0){g=Qd[g&127](a,b,d,e,f)|0;if(g){if((g&255|0)==7)break;return g|0}if(e&1){b=0;return b|0}g=c[a+88>>2]|0;if(!g){b=36;return b|0}h=c[((e&16|0)==0?g+16|0:g+20|0)>>2]|0;g=0;do{b=f+(g<<2)|0;c[b>>2]=og(c[b>>2]|0,h,64)|0;g=g+1|0}while((g|0)!=(d|0));g=0;return g|0}while(0);if(e&536870912){b=7;return b|0}i=e|256;j=a+84|0;if(!(e&16)){h=0;while(1){g=kg(a,h+b|0,i)|0;if(g){h=19;break}c[f+(h<<2)>>2]=c[(c[j>>2]|0)+64>>2]<<10;h=h+1|0;if(h>>>0>=d>>>0){g=0;h=19;break}}if((h|0)==19)return g|0}else{h=0;while(1){g=kg(a,h+b|0,i)|0;if(g){h=19;break}c[f+(h<<2)>>2]=c[(c[j>>2]|0)+68>>2]<<10;h=h+1|0;if(h>>>0>=d>>>0){g=0;h=19;break}}if((h|0)==19)return g|0}return 0}function kg(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;if(!d){D=35;return D|0}t=d+88|0;if(!(c[t>>2]|0)){D=35;return D|0}D=c[d+84>>2]|0;if(!D){D=35;return D|0}n=D+156|0;i=c[n>>2]|0;if((i|0)!=0?(g=c[i+4>>2]|0,(g&1|0)!=0):0){k=c[(c[D+4>>2]|0)+100>>2]|0;o=D+88|0;m=c[o>>2]|0;if(m){Cd[c[k+8>>2]&255](k,m);g=c[n>>2]|0;i=g;g=c[g+4>>2]|0}c[o>>2]=0;c[i+4>>2]=g&-2}else c[D+88>>2]=0;s=D+24|0;a[D+94>>0]=0;g=D+100|0;w=D+72|0;i=s+0|0;k=i+40|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(k|0));c[w+0>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;c[w+12>>2]=0;i=g+0|0;k=i+56|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(k|0));n=c[d+96>>2]|0;i=c[(c[n+4>>2]|0)+160>>2]|0;g=(f&1024|0)==0?f:f|2049;if(!(g&1))v=g;else v=g&-15|10;p=(v&2|0)==0;a:do if(((i|0)!=0&p&(v&32768|0)==0?(q=c[c[n>>2]>>2]|0,(q&768|0)==256):0)?(r=c[d+8>>2]|0,(r&8192|0)==0):0){do if(!(v&2048)){f=c[d+128>>2]|0;g=(c[f>>2]|0)==0;if(!(c[f+8>>2]|0))if(g){u=29;break a}else break;else if(g)break;else{u=29;break a}}while(0);if(((v&32|0)==0?!((q&1024|0)==0|(v&983040|0)==65536):0)?(a[(c[d+128>>2]|0)+52>>0]|0)==0:0){if(!(r&8)){u=29;break}if(!(c[d+692>>2]|0)){u=29;break}if(b[d+286>>1]|0){u=29;break}}if(((r&2|0)!=0&(v&8|0)==0?(Xd[c[(c[n+12>>2]|0)+72>>2]&255](D,c[t>>2]|0,e,v|16384)|0)==0:0)?(c[w>>2]|0)==1651078259:0){g=0;break}s=(c[d+128>>2]|0)+24|0;r=c[s>>2]|0;c[s>>2]=0;g=Qd[c[(c[(c[i>>2]|0)+20>>2]|0)+12>>2]&127](i,D,c[t>>2]|0,e,v)|0;c[s>>2]=r}else u=29;while(0);if((u|0)==29){g=Xd[c[(c[n+12>>2]|0)+72>>2]&255](D,c[t>>2]|0,e,v)|0;if(g){D=g;return D|0}if((c[w>>2]|0)==1869968492){m=b[D+110>>1]|0;f=m<<16>>16;g=b[D+108>>1]|0;o=g<<16>>16;if((g|m)<<16>>16){if(m<<16>>16<1|g<<16>>16<1){D=6;return D|0}b:do if(g<<16>>16>0){i=c[D+120>>2]|0;n=-1;k=0;while(1){u=b[i+(k<<1)>>1]|0;g=u<<16>>16;k=k+1|0;if(!((g|0)>(n|0)?u<<16>>16>16:0)){g=6;break}if((k|0)>=(o|0))break b;else n=g}return g|0}else g=-1;while(0);if((g|0)!=(f+-1|0)){D=6;return D|0}}if(p){if(!(v&16)){m=D+44|0;c[m>>2]=c[m>>2]&-64;m=D+48|0;c[m>>2]=c[m>>2]&-64;m=D+32|0;q=c[m>>2]|0;p=q+63+(c[s>>2]|0)&-64;f=D+36|0;r=c[f>>2]|0;u=D+28|0;e=r-(c[u>>2]|0)&-64;q=q&-64;c[m>>2]=q;r=r+63&-64;c[f>>2]=r;c[s>>2]=p-q;c[u>>2]=r-e}else{m=D+32|0;c[m>>2]=c[m>>2]&-64;m=D+36|0;c[m>>2]=(c[m>>2]|0)+63&-64;m=D+44|0;q=c[m>>2]|0;p=q+63+(c[s>>2]|0)&-64;f=D+48|0;e=c[f>>2]|0;u=D+28|0;r=e+63+(c[u>>2]|0)&-64;q=q&-64;c[m>>2]=q;e=e&-64;c[f>>2]=e;c[s>>2]=p-q;c[u>>2]=r-e}g=D+40|0;c[g>>2]=(c[g>>2]|0)+32&-64;g=D+52|0;c[g>>2]=(c[g>>2]|0)+32&-64;g=0}else g=0}else g=0}if(!(v&16)){c[D+64>>2]=c[D+40>>2];i=0}else{c[D+64>>2]=0;i=c[D+52>>2]|0}c[D+68>>2]=i;if((v&8192|0)==0?(c[d+8>>2]&1|0)!=0:0){t=c[t>>2]|0;u=D+56|0;c[u>>2]=og(c[u>>2]|0,c[t+16>>2]|0,64)|0;u=D+60|0;c[u>>2]=og(c[u>>2]|0,c[t+20>>2]|0,64)|0}if((v&2048|0)==0?(C=c[d+128>>2]|0,x=C+24|0,h=c[x>>2]|0,(h|0)!=0):0){m=c[(c[(c[D+4>>2]|0)+96>>2]|0)+4>>2]|0;i=c[m+156>>2]|0;if(i){k=c[w>>2]|0;if((c[i+16>>2]|0)==(k|0)){g=i;u=59}else u=54}else{k=c[w>>2]|0;u=54}c:do if((u|0)==54){d:do if((m|0)!=0?(l=c[m+148>>2]|0,(l|0)!=0):0){while(1){i=c[l+8>>2]|0;if((c[i+16>>2]|0)==(k|0))break;l=c[l+4>>2]|0;if(!l)break d}if(i){g=i;u=59;break c}}while(0);if((k|0)==1869968492){if(((h&1|0)!=0?(C|0)!=0:0)?(j=c[D+112>>2]|0,d=b[D+110>>1]|0,y=j+(d<<16>>16<<3)|0,d<<16>>16>0):0){do{Yg(j,C);j=j+8|0}while(j>>>0>>0);h=c[x>>2]|0}if((h&2|0)!=0?(A=c[C+16>>2]|0,B=c[C+20>>2]|0,z=b[D+110>>1]|0,z<<16>>16>0):0){h=z<<16>>16;i=0;j=c[D+112>>2]|0;while(1){c[j>>2]=(c[j>>2]|0)+A;z=j+4|0;c[z>>2]=(c[z>>2]|0)+B;i=i+1<<16>>16;if((i&65535|0)>=(h|0))break;else j=j+8|0}}}}while(0);if((u|0)==59)g=Xd[c[(c[g+12>>2]|0)+44>>2]&255](g,D,C,C+16|0)|0;Yg(D+64|0,C)}if(g){D=g;return D|0}C=c[w>>2]|0;if((C|0)==1668246896|(C|0)==1651078259){D=0;return D|0}if(!(v&4)){D=0;return D|0}g=v>>>16&15;h=c[D+4>>2]|0;if(!h){D=6;return D|0}D=vh(c[(c[h+96>>2]|0)+4>>2]|0,D,(g|0)!=0|(v&4096|0)==0?g:2)|0;return D|0}function lg(a){a=a|0;if((a|0)>-1){a=a+32768&-65536;return a|0}else{a=0-(32768-a&-65536)|0;return a|0}return 0}function mg(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=ng(e)|0;i=d;return b|0}function ng(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=a;g=c[e>>2]|0;e=c[e+4>>2]|0;if(!g){h=(e|0)<0?0-e|0:e;return h|0}a=(g|0)<0?0-g|0:g;if(!e){h=a;return h|0}a=((e|0)<0?0-e|0:e)|a;b=a>>>0>65535;a=b?a>>>16:a;b=b?16:0;if(a>>>0>255){a=a>>>8;b=b|8}if(a>>>0>15){a=a>>>4;b=b+4|0}if(a>>>0>3){a=a>>>2;b=b+2|0}a=(a>>>0>1&1)+b|0;if((a|0)<30){h=29-a|0;d=e<>b;b=g>>b;h=29-a|0}a=0-b|0;if((d|0)>(b|0)){b=(d|0)>(a|0);e=1;f=1;g=b?d:a;b=b?a:0-d|0}else{a=(d|0)<(a|0);e=1;f=1;g=a?0-d|0:b;b=a?b:d}while(1){a=b+e>>f;if((b|0)>0){a=a+g|0;b=b-(g+e>>f)|0}else{a=g-a|0;b=(g+e>>f)+b|0}f=f+1|0;if((f|0)==23)break;else{e=e<<1;g=a}}f=(a|0)<0?0-a|0:a;g=f>>>16;f=f&65535;d=(f*56281|0)+(g*23318|0)|0;f=(f*23318|0)>>>16;e=d+f|0;g=(e>>>16)+(g*56281|0)|0;g=e>>>0<(d>>>0>f>>>0?d:f)>>>0?g+65536|0:g;a=(a|0)>-1?g:0-g|0;if((h|0)>0){h=a+(1<>h;return h|0}else{h=a<<0-h;return h|0}return 0}function og(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;if((a|0)==0|(b|0)==(c|0)){g=a;return g|0}e=(a|0)<0?0-a|0:a;f=(b|0)<0?0-b|0:b;h=b^a^c;b=(c|0)<0?0-c|0:c;a=(b|0)>0;if(!((e|0)<46341&(f|0)<46341&(b|0)<176096&a))if(a?(d=e&65535,a=e>>>16,c=f&65535,i=f>>>16,f=da(c,d)|0,e=da(i,d)|0,c=e+(da(c,a)|0)|0,d=f+(c<<16)|0,g=d+(b>>1)|0,d=(c>>>16)+(da(i,a)|0)+((c>>>0>>0&1)<<16)+(d>>>0>>0&1)+(g>>>0>>0&1)|0,d>>>0>>0):0){c=32;a=0;while(1){a=a<<1;d=d<<1|g>>>31;if(d>>>0>=b>>>0){a=a|1;d=d-b|0}c=c+-1|0;if(!c)break;else g=g<<1}}else a=2147483647;else a=((b>>1)+(da(f,e)|0)|0)/(b|0)|0;g=(h|0)<0?0-a|0:a;return g|0}function pg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;if((a|0)==0|(b|0)==(c|0)){g=a;return g|0}e=(a|0)<0?0-a|0:a;f=(b|0)<0?0-b|0:b;h=b^a^c;b=(c|0)<0?0-c|0:c;a=(b|0)>0;if(!((e|0)<46341&(f|0)<46341&a))if(a?(g=e&65535,c=e>>>16,e=f&65535,a=f>>>16,d=da(e,g)|0,f=da(a,g)|0,e=f+(da(e,c)|0)|0,g=d+(e<<16)|0,d=(e>>>16)+(da(a,c)|0)+((e>>>0>>0&1)<<16)+(g>>>0>>0&1)|0,d>>>0>>0):0){c=32;a=0;while(1){a=a<<1;d=d<<1|g>>>31;if(d>>>0>=b>>>0){a=a|1;d=d-b|0}c=c+-1|0;if(!c)break;else g=g<<1}}else a=2147483647;else a=(da(f,e)|0)/(b|0)|0;g=(h|0)<0?0-a|0:a;return g|0}function qg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if((a|0)==0|(b|0)==65536)return a|0;c=(a|0)<0?0-a|0:a;d=(b|0)<0?0-b|0:b;if(c>>>0<2049&d>>>0<1048577)c=((da(d,c)|0)+32768|0)>>>16;else{e=c&65535;c=(da(d>>>16,e)|0)+(da(c>>>16,d)|0)+(((da(d&65535,e)|0)+32768|0)>>>16)|0}e=(b^a|0)<0?0-c|0:c;return e|0}function rg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=(a|0)<0?0-a|0:a;f=b^a;e=(b|0)<0?0-b|0:b;do if(e){d=c>>16;b=c<<16;a=e>>1;if(!d){a=((a+b|0)>>>0)/(e>>>0)|0;break}a=b+a|0;b=(a>>>0>>0&1)+d|0;if(b>>>0>>0){d=a;c=32;a=0;while(1){a=a<<1;b=b<<1|d>>>31;if(b>>>0>=e>>>0){a=a|1;b=b-e|0}c=c+-1|0;if(!c)break;else d=d<<1}}else a=2147483647}else a=2147483647;while(0);return ((f|0)<0?0-a|0:a)|0}function sg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if(!a){p=6;return p|0}n=c[a>>2]|0;p=a+12|0;k=c[p>>2]|0;if((n|0)==0|(k|0)==65536)f=n;else{d=(n|0)<0?0-n|0:n;b=(k|0)<0?0-k|0:k;if(d>>>0<2049&b>>>0<1048577)b=((da(b,d)|0)+32768|0)>>>16;else{o=d&65535;b=(da(b>>>16,o)|0)+(da(d>>>16,b)|0)+(((da(b&65535,o)|0)+32768|0)>>>16)|0}f=(k^n|0)<0?0-b|0:b}h=a+4|0;e=c[h>>2]|0;j=a+8|0;i=c[j>>2]|0;if((e|0)==0|(i|0)==65536)b=e;else{b=(e|0)<0?0-e|0:e;d=(i|0)<0?0-i|0:i;if(b>>>0<2049&d>>>0<1048577)b=((da(d,b)|0)+32768|0)>>>16;else{o=b&65535;b=(da(d>>>16,o)|0)+(da(b>>>16,d)|0)+(((da(d&65535,o)|0)+32768|0)>>>16)|0}b=(i^e|0)<0?0-b|0:b}m=f-b|0;if((f|0)==(b|0)){p=6;return p|0}b=(e|0)<0?0-e|0:e;g=e^m;o=(m|0)<0?0-m|0:m;l=(o|0)==0;do if(!l){d=b>>16;f=b<<16;b=o>>1;if(!d){b=((f+b|0)>>>0)/(o>>>0)|0;break}b=f+b|0;f=(b>>>0>>0&1)+d|0;if(f>>>0>>0){d=b;e=32;b=0;while(1){b=b<<1;f=f<<1|d>>>31;if(f>>>0>=o>>>0){b=b|1;f=f-o|0}e=e+-1|0;if(!e)break;else d=d<<1}}else b=2147483647}else b=2147483647;while(0);c[h>>2]=0-((g|0)<0?0-b|0:b);b=(i|0)<0?0-i|0:i;g=i^m;do if(!l){d=b>>16;f=b<<16;b=o>>1;if(!d){b=((f+b|0)>>>0)/(o>>>0)|0;break}b=f+b|0;f=(b>>>0>>0&1)+d|0;if(f>>>0>>0){d=b;e=32;b=0;while(1){b=b<<1;f=f<<1|d>>>31;if(f>>>0>=o>>>0){b=b|1;f=f-o|0}e=e+-1|0;if(!e)break;else d=d<<1}}else b=2147483647}else b=2147483647;while(0);c[j>>2]=0-((g|0)<0?0-b|0:b);b=(k|0)<0?0-k|0:k;g=k^m;do if(!l){e=b>>16;d=b<<16;b=o>>1;if(!e){b=((d+b|0)>>>0)/(o>>>0)|0;break}b=d+b|0;d=(b>>>0>>0&1)+e|0;if(d>>>0>>0){f=b;e=32;b=0;while(1){b=b<<1;d=d<<1|f>>>31;if(d>>>0>=o>>>0){b=b|1;d=d-o|0}e=e+-1|0;if(!e)break;else f=f<<1}}else b=2147483647}else b=2147483647;while(0);c[a>>2]=(g|0)<0?0-b|0:b;b=(n|0)<0?0-n|0:n;g=n^m;do if(!l){e=b>>16;d=b<<16;b=o>>1;if(!e){b=((d+b|0)>>>0)/(o>>>0)|0;break}b=d+b|0;d=(b>>>0>>0&1)+e|0;if(d>>>0>>0){e=b;f=32;b=0;while(1){b=b<<1;d=d<<1|e>>>31;if(d>>>0>=o>>>0){b=b|1;d=d-o|0}f=f+-1|0;if(!f)break;else e=e<<1}}else b=2147483647}else b=2147483647;while(0);c[p>>2]=(g|0)<0?0-b|0:b;p=0;return p|0}function tg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=d<<16;if(!((a|0)!=0&(b|0)!=0))return;i=c[a>>2]|0;g=c[b>>2]|0;j=og(i,g,d)|0;n=c[a+4>>2]|0;f=b+8|0;o=c[f>>2]|0;j=(og(n,o,d)|0)+j|0;h=b+4|0;m=c[h>>2]|0;i=og(i,m,d)|0;e=b+12|0;k=c[e>>2]|0;i=(og(n,k,d)|0)+i|0;n=c[a+8>>2]|0;g=og(n,g,d)|0;l=c[a+12>>2]|0;g=(og(l,o,d)|0)+g|0;a=og(n,m,d)|0;a=(og(l,k,d)|0)+a|0;c[b>>2]=j;c[h>>2]=i;c[f>>2]=g;c[e>>2]=a;return}function ug(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;d=d<<16;if(!((a|0)!=0&(b|0)!=0))return;g=c[a>>2]|0;f=og(g,c[b>>2]|0,d)|0;e=a+4|0;h=c[e>>2]|0;f=(og(h,c[b+4>>2]|0,d)|0)+f|0;g=og(g,c[b+8>>2]|0,d)|0;b=(og(h,c[b+12>>2]|0,d)|0)+g|0;c[a>>2]=f;c[e>>2]=b;return}function vg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;if(!b)return ((a|0)>-1?d:0-d|0)|0;if(!a){f=(b|0)>-1?0-c|0:c;return f|0}if(!d){f=(c|0)>-1?b:0-b|0;return f|0}if(!c){f=(d|0)>-1?0-a|0:a;return f|0}f=a&65535;h=a>>>16;g=d&65535;a=d>>>16;e=da(g,f)|0;d=da(a,f)|0;g=d+(da(g,h)|0)|0;f=e+(g<<16)|0;e=(g>>>16)+(da(a,h)|0)+((g>>>0>>0&1)<<16)+(f>>>0>>0&1)|0;d=b&65535;g=b>>>16;b=c&65535;h=c>>>16;a=da(b,d)|0;c=da(h,d)|0;b=c+(da(b,g)|0)|0;d=a+(b<<16)|0;a=(b>>>16)+(da(h,g)|0)+((b>>>0>>0&1)<<16)+(d>>>0>>0&1)|0;if(e>>>0>a>>>0){g=1;return g|0}if(e>>>0>>0){g=-1;return g|0}if(f>>>0>d>>>0){g=1;return g|0}g=(f>>>0>>0)<<31>>31;return g|0}function wg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=c+a|0;f=d+b|0;e=((f|0)<0?0-f|0:f)+((e|0)<0?0-e|0:e)|0;return (((b|0)<0?0-b|0:b)+((a|0)<0?0-a|0:a)+((c|0)<0?0-c|0:c)+((d|0)<0?0-d|0:d)-e|0)<(e>>4|0)|0}function xg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=Pd[c[b+4>>2]&511](b,96)|0;h=(f|0)==0;e=h?64:0;if(h)return e|0;g=f+0|0;h=g+96|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));c[f>>2]=b;c[d>>2]=f;return e|0}function yg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((b|0)>0){e=Pd[c[a+4>>2]&511](a,b)|0;f=(e|0)==0;a=f?64:0;if(f)e=0;else sfa(e|0,0,b|0)|0}else{e=0;a=b>>31&6}c[d>>2]=a;return e|0}function zg(a){a=a|0;var d=0,e=0;d=a+20|0;b[a+22>>1]=0;b[d>>1]=0;c[a+48>>2]=0;a=a+56|0;d=d+0|0;e=a+36|0;do{c[a>>2]=c[d>>2];a=a+4|0;d=d+4|0}while((a|0)<(e|0));return}function Ag(a,b){a=a|0;b=b|0;if(!b)return;Cd[c[a+8>>2]&255](a,b);return}function Bg(a){a=a|0;var d=0,e=0,f=0,g=0;if(!a)return;g=c[a>>2]|0;d=a+24|0;e=c[d>>2]|0;if(e)Cd[c[g+8>>2]&255](g,e);c[d>>2]=0;d=a+28|0;e=c[d>>2]|0;if(e)Cd[c[g+8>>2]&255](g,e);c[d>>2]=0;d=a+32|0;e=c[d>>2]|0;if(e)Cd[c[g+8>>2]&255](g,e);c[d>>2]=0;d=a+40|0;e=c[d>>2]|0;if(e)Cd[c[g+8>>2]&255](g,e);c[d>>2]=0;d=a+52|0;e=c[d>>2]|0;if(e)Cd[c[g+8>>2]&255](g,e);c[d>>2]=0;c[a+44>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;e=a+20|0;b[a+22>>1]=0;b[e>>1]=0;c[a+48>>2]=0;d=a+56|0;e=e+0|0;f=d+36|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));Cd[c[g+8>>2]&255](g,a);return}function Cg(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=c[d>>2]|0;k=d+4|0;e=c[k>>2]|0;j=e<<1;a:do if((j|0)<0)e=6;else{do if(j){if((j|0)>268435455){e=10;break a}i=e<<4;if((i|0)>0){e=Pd[c[f+4>>2]&511](f,i)|0;g=(e|0)==0;f=g?64:0;if(g){e=0;g=f}else{sfa(e|0,0,i|0)|0;g=f}}else{e=0;g=i>>31&6}h=(g|0)==0;if(h&(j|0)>0){sfa(e|0,0,i|0)|0;l=10;break}f=d+40|0;c[f>>2]=e;if(h)e=f;else{k=g;return k|0}}else{e=0;l=10}while(0);if((l|0)==10){i=d+40|0;c[i>>2]=e;e=i}a[d+16>>0]=1;j=c[e>>2]|0;i=c[k>>2]|0;c[d+44>>2]=j+(i<<3);k=b[d+22>>1]|0;c[d+60>>2]=(c[d+24>>2]|0)+(k<<3);c[d+64>>2]=(c[d+28>>2]|0)+k;c[d+68>>2]=(c[d+32>>2]|0)+(b[d+20>>1]<<1);c[d+76>>2]=(c[e>>2]|0)+(k<<3);c[d+80>>2]=j+(i+k<<3);k=0;return k|0}while(0);c[d+40>>2]=0;k=e;return k|0}function Dg(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;if((d|b|e|0)<0){e=f;b=6;c[g>>2]=b;return e|0}do if((e|0)==0|(b|0)==0)if(!f){a=0;f=0}else{Cd[c[a+8>>2]&255](a,f);a=0;f=0}else{if((2147483647/(b|0)|0|0)<(e|0)){e=f;b=10;c[g>>2]=b;return e|0}if(d){i=da(d,b)|0;h=da(e,b)|0;a=Xd[c[a+12>>2]&255](a,i,h,f)|0;h=(a|0)==0;a=h?f:a;f=h?64:0;break}h=da(e,b)|0;if((h|0)<=0){a=0;f=h>>31&6;break}a=Pd[c[a+4>>2]&511](a,h)|0;i=(a|0)==0;f=i?64:0;if(i)a=0;else sfa(a|0,0,h|0)|0}while(0);if(!((f|0)==0&(e|0)>(d|0))){e=a;b=f;c[g>>2]=b;return e|0}sfa(a+(da(d,b)|0)|0,0,da(e-d|0,b)|0)|0;e=a;b=0;c[g>>2]=b;return e|0}function Eg(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=c[d>>2]|0;r=d+22|0;e=(b[r>>1]|0)+e+(b[d+58>>1]|0)|0;q=d+4|0;n=c[q>>2]|0;a:do if(e>>>0>n>>>0){m=e+7|0;l=m&-8;if(l>>>0>32767){d=10;return d|0}i=d+24|0;g=c[i>>2]|0;b:do if((m|n|0)<0)e=6;else{k=(l|0)==0;do if(k)if(!g){g=0;h=0}else{Cd[c[p+8>>2]&255](p,g);g=0;h=0}else{if((l|0)>268435455){e=10;break b}if(n){j=Xd[c[p+12>>2]&255](p,n<<3,l<<3,g)|0;h=(j|0)==0;g=h?g:j;h=h?64:0;break}e=l<<3;if((l|0)<=0){g=0;h=m>>>28&6;break}g=Pd[c[p+4>>2]&511](p,e)|0;j=(g|0)==0;h=j?64:0;if(j)g=0;else sfa(g|0,0,e|0)|0}while(0);e=(h|0)==0;j=(l|0)>(n|0);if(!(e&j)){c[i>>2]=g;if(!e){i=h;break a}}else{sfa(g+(n<<3)|0,0,l-n<<3|0)|0;c[i>>2]=g}i=d+28|0;e=c[i>>2]|0;do if(k)if(!e){e=0;g=0}else{Cd[c[p+8>>2]&255](p,e);e=0;g=0}else{if(n){k=Xd[c[p+12>>2]&255](p,n,l,e)|0;g=(k|0)==0;e=g?e:k;g=g?64:0;break}if((l|0)<=0){e=0;g=m>>31&6;break}e=Pd[c[p+4>>2]&511](p,l)|0;k=(e|0)==0;g=k?64:0;if(k)e=0;else sfa(e|0,0,l|0)|0}while(0);h=(g|0)==0;if(!(h&j)){c[i>>2]=e;if(!h){i=g;break a}}else{sfa(e+n|0,0,l-n|0)|0;c[i>>2]=e}c:do if(a[d+16>>0]|0){i=n<<1;j=l<<1;k=d+40|0;g=c[k>>2]|0;d:do if((j|i|0)<0)e=6;else{do if(!j)if(!g){e=0;g=0}else{Cd[c[p+8>>2]&255](p,g);e=0;g=0}else{if((j|0)>268435455){e=10;break d}if(i){e=Xd[c[p+12>>2]&255](p,n<<4,l<<4,g)|0;h=(e|0)==0;e=h?g:e;g=h?64:0;break}h=l<<4;if((h|0)<=0){e=0;g=h>>31&6;break}e=Pd[c[p+4>>2]&511](p,h)|0;m=(e|0)==0;g=m?64:0;if(m)e=0;else sfa(e|0,0,h|0)|0}while(0);h=(g|0)==0;if(!(h&(j|0)>(i|0))){c[k>>2]=e;if(!h){i=g;break a}}else{sfa(e+(n<<4)|0,0,j-i<<3|0)|0;c[k>>2]=e}rfa(e+(l<<3)|0,e+(n<<3)|0,n<<3|0)|0;c[d+44>>2]=(c[k>>2]|0)+(l<<3);break c}while(0);c[k>>2]=g;i=e;break a}while(0);c[q>>2]=l;g=1;o=48;break a}while(0);c[i>>2]=g;i=e}else{g=0;o=48}while(0);e:do if((o|0)==48){l=d+8|0;k=c[l>>2]|0;m=d+20|0;h=b[m>>1]|0;e=(h<<16>>16)+f+(b[d+56>>1]|0)|0;f:do if(e>>>0<=k>>>0)if(!(g<<24>>24)){d=0;return d|0}else{g=c[d+32>>2]|0;break}else{e=e+3|0;i=e&-4;if(i>>>0>32767){d=10;return d|0}j=d+32|0;g=c[j>>2]|0;g:do if((e|k|0)<0)e=6;else{do if(!i)if(!g){g=0;e=0}else{Cd[c[p+8>>2]&255](p,g);g=0;e=0}else{if((i|0)>1073741823){e=10;break g}if(k){p=Xd[c[p+12>>2]&255](p,k<<1,i<<1,g)|0;e=(p|0)==0;g=e?g:p;e=e?64:0;break}h=i<<1;if((i|0)<=0){g=0;e=e>>30&6;break}g=Pd[c[p+4>>2]&511](p,h)|0;p=(g|0)==0;e=p?64:0;if(p)g=0;else sfa(g|0,0,h|0)|0}while(0);h=(e|0)==0;if(!(h&(i|0)>(k|0))){c[j>>2]=g;if(!h){i=e;break e}}else{sfa(g+(k<<1)|0,0,i-k<<1|0)|0;c[j>>2]=g}c[l>>2]=i;h=b[m>>1]|0;break f}while(0);c[j>>2]=g;i=e;break e}while(0);e=b[r>>1]|0;c[d+60>>2]=(c[d+24>>2]|0)+(e<<3);c[d+64>>2]=(c[d+28>>2]|0)+e;c[d+68>>2]=g+(h<<16>>16<<1);if(!(a[d+16>>0]|0)){d=0;return d|0}c[d+76>>2]=(c[d+40>>2]|0)+(e<<3);c[d+80>>2]=(c[d+44>>2]|0)+(e<<3);d=0;return d|0}while(0);h=c[d>>2]|0;e=d+24|0;g=c[e>>2]|0;if(g)Cd[c[h+8>>2]&255](h,g);c[e>>2]=0;e=d+28|0;g=c[e>>2]|0;if(g)Cd[c[h+8>>2]&255](h,g);c[e>>2]=0;e=d+32|0;g=c[e>>2]|0;if(g)Cd[c[h+8>>2]&255](h,g);c[e>>2]=0;e=d+40|0;g=c[e>>2]|0;if(g)Cd[c[h+8>>2]&255](h,g);c[e>>2]=0;e=d+52|0;g=c[e>>2]|0;if(g)Cd[c[h+8>>2]&255](h,g);c[e>>2]=0;c[d+44>>2]=0;c[q>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;g=d+20|0;b[r>>1]=0;b[g>>1]=0;c[d+48>>2]=0;e=d+56|0;g=g+0|0;h=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(h|0));d=i;return d|0}function Fg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=c[a>>2]|0;l=a+48|0;b=(c[l>>2]|0)+b+(c[a+84>>2]|0)|0;k=a+12|0;j=c[k>>2]|0;if(b>>>0<=j>>>0){a=0;return a|0}e=b+1|0;h=e&-2;i=a+52|0;d=c[i>>2]|0;a:do if((e|j|0)<0)b=6;else{do if(!h)if(!d){b=0;d=0}else{Cd[c[g+8>>2]&255](g,d);b=0;d=0}else{if((h|0)>67108863){b=10;break a}if(j){b=Xd[c[g+12>>2]&255](g,j<<5,h<<5,d)|0;g=(b|0)==0;b=g?d:b;d=g?64:0;break}f=h<<5;if((h|0)<=0){b=0;d=e>>>26&6;break}b=Pd[c[g+4>>2]&511](g,f)|0;g=(b|0)==0;d=g?64:0;if(g)b=0;else sfa(b|0,0,f|0)|0}while(0);e=(d|0)==0;if(!(e&(h|0)>(j|0))){c[i>>2]=b;if(!e){a=d;return a|0}}else{sfa(b+(j<<5)|0,0,h-j<<5|0)|0;c[i>>2]=b}c[k>>2]=h;c[a+88>>2]=b+(c[l>>2]<<5);a=0;return a|0}while(0);c[i>>2]=d;a=b;return a|0}function Gg(d){d=d|0;var e=0,f=0;b[d+58>>1]=0;b[d+56>>1]=0;c[d+84>>2]=0;e=b[d+22>>1]|0;c[d+60>>2]=(c[d+24>>2]|0)+(e<<3);c[d+64>>2]=(c[d+28>>2]|0)+e;c[d+68>>2]=(c[d+32>>2]|0)+(b[d+20>>1]<<1);if(!(a[d+16>>0]|0)){f=d+52|0;f=c[f>>2]|0;e=d+48|0;e=c[e>>2]|0;e=f+(e<<5)|0;d=d+88|0;c[d>>2]=e;return}c[d+76>>2]=(c[d+40>>2]|0)+(e<<3);c[d+80>>2]=(c[d+44>>2]|0)+(e<<3);f=d+52|0;f=c[f>>2]|0;e=d+48|0;e=c[e>>2]|0;e=f+(e<<5)|0;f=d+88|0;c[f>>2]=e;return}function Hg(d){d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;if(!d)return;l=d+56|0;q=b[l>>1]|0;h=q<<16>>16;i=d+22|0;j=b[i>>1]|0;n=d+58|0;f=(e[n>>1]|0)+j&65535;b[i>>1]=f;k=d+20|0;g=(q&65535)+(e[k>>1]|0)&65535;b[k>>1]=g;m=d+84|0;o=d+48|0;p=(c[o>>2]|0)+(c[m>>2]|0)|0;c[o>>2]=p;o=d+68|0;if(q<<16>>16){f=c[o>>2]|0;g=0;do{q=f+(g<<1)|0;b[q>>1]=(e[q>>1]|0)+j;g=g+1|0}while(g>>>0>>0);f=b[i>>1]|0;g=b[k>>1]|0}b[n>>1]=0;b[l>>1]=0;c[m>>2]=0;f=f<<16>>16;c[d+60>>2]=(c[d+24>>2]|0)+(f<<3);c[d+64>>2]=(c[d+28>>2]|0)+f;c[o>>2]=(c[d+32>>2]|0)+(g<<16>>16<<1);if(a[d+16>>0]|0){c[d+76>>2]=(c[d+40>>2]|0)+(f<<3);c[d+80>>2]=(c[d+44>>2]|0)+(f<<3)}c[d+88>>2]=(c[d+52>>2]|0)+(p<<5);return}function Ig(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;i=b[e+22>>1]|0;l=i<<16>>16;m=b[e+20>>1]|0;n=m<<16>>16;o=Eg(d,l,n)|0;if(o)return o|0;p=d+24|0;g=l<<3;qfa(c[p>>2]|0,c[e+24>>2]|0,g|0)|0;j=d+28|0;qfa(c[j>>2]|0,c[e+28>>2]|0,l|0)|0;k=d+32|0;qfa(c[k>>2]|0,c[e+32>>2]|0,n<<1|0)|0;h=d+16|0;f=a[h>>0]|0;if(f<<24>>24){if(a[e+16>>0]|0){qfa(c[d+40>>2]|0,c[e+40>>2]|0,g|0)|0;qfa(c[d+44>>2]|0,c[e+44>>2]|0,g|0)|0;f=a[h>>0]|0}}else f=0;b[d+22>>1]=i;b[d+20>>1]=m;c[d+60>>2]=(c[p>>2]|0)+(l<<3);c[d+64>>2]=(c[j>>2]|0)+l;c[d+68>>2]=(c[k>>2]|0)+(n<<1);if(!(f<<24>>24))return o|0;c[d+76>>2]=(c[d+40>>2]|0)+(l<<3);c[d+80>>2]=(c[d+44>>2]|0)+(l<<3);return o|0}function Jg(a,b){a=a|0;b=b|0;var d=0,e=0;if(!((a|0)!=0&(b|0)!=0)){b=0;return b|0}d=c[a>>2]|0;if(!d){b=0;return b|0}while(1){if(!(gfa(d,b)|0))break;a=a+8|0;d=c[a>>2]|0;if(!d){a=0;e=6;break}}if((e|0)==6)return a|0;b=c[a+4>>2]|0;return b|0}function Kg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=e;c[a+12>>2]=0;return}function Lg(a,b){a=a|0;b=b|0;c[a+12>>2]=b;Ua(a+16|0,1)}function Mg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;c[e>>2]=0;if(!b){j=33;return j|0}if(!d){j=6;return j|0}k=c[b>>2]|0;b=Pd[c[k+4>>2]&511](k,40)|0;g=(b|0)==0;f=g?64:0;if(g){j=64;return j|0}g=b+0|0;h=g+40|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));c[b+28>>2]=k;g=c[d>>2]|0;do if(!(g&1)){if(g&4){g=d+12|0;f=Qi(b,c[g>>2]|0)|0;c[b+16>>2]=c[g>>2];g=12;break}if((g&2|0)!=0?(i=d+16|0,j=c[i>>2]|0,(j|0)!=0):0)if(!b){b=j;g=12}else{Cd[c[k+8>>2]&255](k,b);b=c[i>>2]|0;g=12}else{f=6;g=13}}else{g=c[d+8>>2]|0;c[b>>2]=c[d+4>>2];c[b+4>>2]=g;c[b+8>>2]=0;c[b+32>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;g=12}while(0);if((g|0)==12)if(!f){c[b+28>>2]=k;f=0}else g=13;if((g|0)==13)if(!b)b=0;else{Cd[c[k+8>>2]&255](k,b);b=0}c[e>>2]=b;j=f;return j|0}function Ng(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=0;c[a+32>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;return}function Og(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a)return;d=c[a+28>>2]|0;e=c[a+24>>2]|0;if(e)Bd[e&511](a);if(b)return;Cd[c[d+8>>2]&255](d,a);return}function Pg(a){a=a|0;var b=0;if(!a)return;b=c[a+24>>2]|0;if(!b)return;Bd[b&511](a);return}function Qg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=a+156|0;d=c[e>>2]|0;if((d|0)!=0?(b=c[d+4>>2]|0,(b&1|0)!=0):0){f=c[(c[a+4>>2]|0)+100>>2]|0;g=a+88|0;a=c[g>>2]|0;if(a){Cd[c[f+8>>2]&255](f,a);b=c[e>>2]|0;d=b;b=c[b+4>>2]|0}c[g>>2]=0;c[d+4>>2]=b&-2;return}c[a+88>>2]=0;return}function Rg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=a+156|0;e=c[f>>2]|0;if((e|0)!=0?(d=c[e+4>>2]|0,(d&1|0)!=0):0){g=c[(c[a+4>>2]|0)+100>>2]|0;i=a+88|0;h=c[i>>2]|0;if(h){Cd[c[g+8>>2]&255](g,h);d=c[f>>2]|0;e=d;d=c[d+4>>2]|0}c[i>>2]=0;c[e+4>>2]=d&-2;i=a+88|0;c[i>>2]=b;return}c[a+88>>2]=0;i=a+88|0;c[i>>2]=b;return}function Sg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[(c[a+4>>2]|0)+100>>2]|0;d=(c[a+156>>2]|0)+4|0;e=c[d>>2]|0;if(!(e&1))c[d>>2]=e|1;else{d=a+88|0;e=c[d>>2]|0;if(e)Cd[c[f+8>>2]&255](f,e);c[d>>2]=0}if((b|0)>0){e=Pd[c[f+4>>2]&511](f,b)|0;f=(e|0)==0;d=f?64:0;if(f)e=0;else sfa(e|0,0,b|0)|0}else{e=0;d=b>>31&6}c[a+88>>2]=e;return d|0}function Tg(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(!d){r=6;return r|0}j=d+96|0;f=c[j>>2]|0;if(!f){r=6;return r|0}q=c[f+8>>2]|0;i=c[(c[f+12>>2]|0)+44>>2]|0;if((i|0)>0){g=Pd[c[q+4>>2]&511](q,i)|0;p=(g|0)==0;f=p?64:0;if(p)g=0;else sfa(g|0,0,i|0)|0}else{g=0;f=i>>31&6}if(f){if(!e){r=f;return r|0}c[e>>2]=0;r=f;return r|0}p=g+4|0;c[p>>2]=d;f=c[j>>2]|0;k=c[f+12>>2]|0;j=c[f+8>>2]|0;c[g>>2]=c[f+4>>2];i=j+4|0;l=Pd[c[i>>2]&511](j,40)|0;do if(!l)m=64;else{n=l+0|0;o=n+40|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[g+156>>2]=l;if(!(c[c[f>>2]>>2]&512)){f=Pd[c[i>>2]&511](j,96)|0;if(!f){m=64;break}n=f+0|0;o=n+96|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[f>>2]=j;c[l>>2]=f}f=c[k+64>>2]|0;if((f|0)!=0?(m=Ed[f&511](g)|0,(m|0)!=0):0)break;r=d+84|0;c[g+8>>2]=c[r>>2];c[r>>2]=g;if(!e){r=0;return r|0}c[e>>2]=g;r=0;return r|0}while(0);l=c[(c[p>>2]|0)+96>>2]|0;d=c[l+8>>2]|0;f=c[(c[l+12>>2]|0)+68>>2]|0;if(f)Bd[f&511](g);e=g+156|0;f=c[e>>2]|0;if((f|0)!=0?(h=c[f+4>>2]|0,(h&1|0)!=0):0){i=c[(c[p>>2]|0)+100>>2]|0;k=g+88|0;j=c[k>>2]|0;if(j){Cd[c[i+8>>2]&255](i,j);h=c[e>>2]|0;f=h;h=c[h+4>>2]|0}c[k>>2]=0;c[f+4>>2]=h&-2}else c[g+88>>2]=0;if(f){if(!(c[c[l>>2]>>2]&512)){j=c[f>>2]|0;if(j){k=c[j>>2]|0;f=j+24|0;h=c[f>>2]|0;if(h)Cd[c[k+8>>2]&255](k,h);c[f>>2]=0;f=j+28|0;h=c[f>>2]|0;if(h)Cd[c[k+8>>2]&255](k,h);c[f>>2]=0;f=j+32|0;h=c[f>>2]|0;if(h)Cd[c[k+8>>2]&255](k,h);c[f>>2]=0;f=j+40|0;h=c[f>>2]|0;if(h)Cd[c[k+8>>2]&255](k,h);c[f>>2]=0;h=j+52|0;f=c[h>>2]|0;if(!f)i=k+8|0;else{i=k+8|0;Cd[c[i>>2]&255](k,f)}c[h>>2]=0;c[j+44>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;f=j+20|0;b[j+22>>1]=0;b[f>>1]=0;c[j+48>>2]=0;n=j+56|0;f=f+0|0;o=n+36|0;do{c[n>>2]=c[f>>2];n=n+4|0;f=f+4|0}while((n|0)<(o|0));Cd[c[i>>2]&255](k,j);f=c[e>>2]|0}c[f>>2]=0;if(f)r=38}else r=38;if((r|0)==38)Cd[c[d+8>>2]&255](d,f);c[e>>2]=0}if(!g){r=m;return r|0}Cd[c[q+8>>2]&255](q,g);r=m;return r|0}function Ug(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(!a)return;j=a+4|0;g=c[j>>2]|0;h=c[g+96>>2]|0;m=c[h+8>>2]|0;g=g+84|0;d=c[g>>2]|0;if(!d)return;else f=0;while(1){if((d|0)==(a|0))break;f=c[d+8>>2]|0;if(!f){n=37;break}else{i=d;d=f;f=i}}if((n|0)==37)return;d=c[a+8>>2]|0;if(!f)c[g>>2]=d;else c[f+8>>2]=d;d=c[a+20>>2]|0;if(!d){i=h;l=m}else{Bd[d&511](a);l=c[(c[j>>2]|0)+96>>2]|0;i=l;l=c[l+8>>2]|0}d=c[(c[i+12>>2]|0)+68>>2]|0;if(d)Bd[d&511](a);k=a+156|0;d=c[k>>2]|0;if((d|0)!=0?(e=c[d+4>>2]|0,(e&1|0)!=0):0){f=c[(c[j>>2]|0)+100>>2]|0;h=a+88|0;g=c[h>>2]|0;if(g){Cd[c[f+8>>2]&255](f,g);e=c[k>>2]|0;d=e;e=c[e+4>>2]|0}c[h>>2]=0;c[d+4>>2]=e&-2}else c[a+88>>2]=0;if(d){if(!(c[c[i>>2]>>2]&512)){h=c[d>>2]|0;if(h){i=c[h>>2]|0;d=h+24|0;e=c[d>>2]|0;if(e)Cd[c[i+8>>2]&255](i,e);c[d>>2]=0;d=h+28|0;e=c[d>>2]|0;if(e)Cd[c[i+8>>2]&255](i,e);c[d>>2]=0;d=h+32|0;e=c[d>>2]|0;if(e)Cd[c[i+8>>2]&255](i,e);c[d>>2]=0;d=h+40|0;e=c[d>>2]|0;if(e)Cd[c[i+8>>2]&255](i,e);c[d>>2]=0;e=h+52|0;d=c[e>>2]|0;if(!d)f=i+8|0;else{f=i+8|0;Cd[c[f>>2]&255](i,d)}c[e>>2]=0;c[h+44>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;g=h+20|0;b[h+22>>1]=0;b[g>>1]=0;c[h+48>>2]=0;d=h+56|0;g=g+0|0;e=d+36|0;do{c[d>>2]=c[g>>2];d=d+4|0;g=g+4|0}while((d|0)<(e|0));Cd[c[f>>2]&255](i,h);d=c[k>>2]|0}c[d>>2]=0;if(d)n=34}else n=34;if((n|0)==34)Cd[c[l+8>>2]&255](l,d);c[k>>2]=0}Cd[c[m+8>>2]&255](m,a);return}function Vg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if(!a)return;e=c[a+128>>2]|0;g=e+24|0;c[g>>2]=0;if(!b){c[e>>2]=65536;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=65536;a=e}else{c[e+0>>2]=c[b+0>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];a=b}if(((c[a+8>>2]|c[a+4>>2]|0)==0?(c[a>>2]|0)==65536:0)?(c[a+12>>2]|0)==65536:0)f=2;else{c[g>>2]=1;f=3}b=e+16|0;if(!d){c[b>>2]=0;c[e+20>>2]=0;a=0}else{e=d;a=c[e+4>>2]|0;c[b>>2]=c[e>>2];c[b+4>>2]=a;b=d;a=c[d>>2]|0}if(!(c[b+4>>2]|a))return;c[g>>2]=f;return}function Wg(a,d){a=a|0;d=d|0;var e=0,f=0;if(!((a|0)!=0&(d|0)!=0))return;e=c[a+4>>2]|0;a=b[a+2>>1]|0;f=e+(a<<16>>16<<3)|0;if(a<<16>>16>0)a=e;else return;do{Yg(a,d);a=a+8|0}while(a>>>0>>0);return}function Xg(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!a)return;f=b[a+2>>1]|0;if(f<<16>>16<=0)return;g=f<<16>>16;h=0;f=c[a+4>>2]|0;while(1){c[f>>2]=(c[f>>2]|0)+d;a=f+4|0;c[a>>2]=(c[a>>2]|0)+e;h=h+1<<16>>16;if((h&65535|0)>=(g|0))break;else f=f+8|0}return}function Yg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!((a|0)!=0&(b|0)!=0))return;h=c[a>>2]|0;f=c[b>>2]|0;j=(h|0)==0;if(j|(f|0)==65536)i=h;else{e=(h|0)<0?0-h|0:h;d=(f|0)<0?0-f|0:f;if(e>>>0<2049&d>>>0<1048577)d=((da(d,e)|0)+32768|0)>>>16;else{l=e&65535;d=(da(d>>>16,l)|0)+(da(e>>>16,d)|0)+(((da(d&65535,l)|0)+32768|0)>>>16)|0}i=(f^h|0)<0?0-d|0:d}l=a+4|0;d=c[l>>2]|0;f=c[b+4>>2]|0;k=(d|0)==0;if(k|(f|0)==65536)e=d;else{g=(d|0)<0?0-d|0:d;e=(f|0)<0?0-f|0:f;if(g>>>0<2049&e>>>0<1048577)g=((da(e,g)|0)+32768|0)>>>16;else{m=g&65535;g=(da(e>>>16,m)|0)+(da(g>>>16,e)|0)+(((da(e&65535,m)|0)+32768|0)>>>16)|0}e=(f^d|0)<0?0-g|0:g}i=e+i|0;g=c[b+8>>2]|0;if(!(j|(g|0)==65536)){e=(h|0)<0?0-h|0:h;f=(g|0)<0?0-g|0:g;if(e>>>0<2049&f>>>0<1048577)e=((da(f,e)|0)+32768|0)>>>16;else{m=e&65535;e=(da(f>>>16,m)|0)+(da(e>>>16,f)|0)+(((da(f&65535,m)|0)+32768|0)>>>16)|0}h=(g^h|0)<0?0-e|0:e}g=c[b+12>>2]|0;if(!(k|(g|0)==65536)){f=(d|0)<0?0-d|0:d;e=(g|0)<0?0-g|0:g;if(f>>>0<2049&e>>>0<1048577)e=((da(e,f)|0)+32768|0)>>>16;else{m=f&65535;e=(da(e>>>16,m)|0)+(da(f>>>16,e)|0)+(((da(e&65535,m)|0)+32768|0)>>>16)|0}d=(g^d|0)<0?0-e|0:e}c[a>>2]=i;c[l>>2]=d+h;return}function Zg(a,b){a=a|0;b=b|0;if(!a){b=0;return b|0}a=c[a+92>>2]|0;if(!a){b=0;return b|0}b=Pd[c[(c[a+12>>2]|0)+12>>2]&511](a,b)|0;return b|0}function _g(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+32|0;f=g;if(!b){b=6;i=g;return b|0}c[f>>2]=4;c[f+12>>2]=b;c[f+16>>2]=0;b=$g(a,f,d,e)|0;i=g;return b|0}function $g(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=i;i=i+16|0;K=S+8|0;L=S;s=S+4|0;c[K>>2]=0;c[L>>2]=0;N=(f|0)==0;r=(e|0)>-1;if(!((d|0)!=0&(N&r^1))){O=6;i=S;return O|0}if(!(c[d>>2]&2))O=0;else O=(c[d+16>>2]|0)!=0&1;g=Mg(a,d,K)|0;a:do if(!g){w=c[a>>2]|0;g=c[d>>2]|0;do if((g&8|0)!=0?(n=c[d+20>>2]|0,(n|0)!=0):0){if(c[c[n>>2]>>2]&1){if(!(g&16)){g=0;h=0}else{g=c[d+24>>2]|0;h=c[d+28>>2]|0}g=vj(n,K,O,e,g,h,L)|0;if(!g){o=n;break}}else g=32;h=c[K>>2]|0;if(!h){x=g;z=n;A=w;R=92;break a}j=c[h+28>>2]|0;l=c[h+24>>2]|0;if(l)Bd[l&511](h);if(O<<24>>24){x=g;z=n;A=w;R=92;break a}Cd[c[j+8>>2]&255](j,h);x=g;z=n;A=w;R=92;break a}else R=16;while(0);b:do if((R|0)==16){q=c[a+16>>2]|0;l=a+(q<<2)+20|0;if((q|0)<=0){F=11;H=0;J=w;R=34;break a}n=d+24|0;p=d+28|0;g=11;q=a+20|0;h=0;while(1){o=c[q>>2]|0;if(c[c[o>>2]>>2]&1){if(!(c[d>>2]&16)){g=0;h=0}else{g=c[n>>2]|0;h=c[p>>2]|0}h=vj(o,K,O,e,g,h,L)|0;if(!h)break b;if((gfa(c[(c[c[q>>2]>>2]|0)+8>>2]|0,90336)|0)==0&(h&255|0)==142){g=c[K>>2]|0;j=c[g+20>>2]|0;if((j|0)!=0?(Xd[j&255](g,0,0,0)|0)!=0:0){y=h;G=o;I=w;R=33;break a}c[g+8>>2]=0;h=wj(a,g,e,f)|0;if(!h)break;else g=h}else g=h;if((g&255|0)==2)h=o;else{y=g;G=o;I=w;R=33;break a}}q=q+4|0;if(q>>>0>=l>>>0){y=g;G=h;I=w;R=33;break a}}if(!g){O=0;i=S;return O|0}h=c[g+28>>2]|0;j=c[g+24>>2]|0;if(j)Bd[j&511](g);if(O<<24>>24){O=0;i=S;return O|0}Cd[c[h+8>>2]&255](h,g);O=0;i=S;return O|0}while(0);l=Pd[c[w+4>>2]&511](w,12)|0;v=(l|0)==0;m=v?64:0;if(v){v=c[L>>2]|0;m=64;t=o;u=w;break}v=c[L>>2]|0;c[l+8>>2]=v;p=v+96|0;g=c[p>>2]|0;h=g+20|0;j=c[h>>2]|0;c[l+4>>2]=0;c[l>>2]=j;if(!j)c[g+16>>2]=l;else c[j+4>>2]=l;c[h>>2]=l;do if(r){g=Tg(v,0)|0;if(!g){g=ch(v,s)|0;if(!g){c[v+88>>2]=c[s>>2];m=0;break}else m=g}else m=g;if(!l){t=o;u=w;break a}if(!v){O=m;i=S;return O|0}k=c[v+96>>2]|0;if(!k){O=m;i=S;return O|0}N=(c[v+128>>2]|0)+56|0;O=(c[N>>2]|0)+-1|0;c[N>>2]=O;if((O|0)>0){O=m;i=S;return O|0}j=c[k+8>>2]|0;l=k+16|0;g=c[l>>2]|0;if(!g){O=m;i=S;return O|0}while(1){if((c[g+8>>2]|0)==(v|0)){E=g;break}g=c[g+4>>2]|0;if(!g){Q=m;R=111;break}}if((R|0)==111){i=S;return Q|0}g=c[E>>2]|0;h=c[E+4>>2]|0;if(!g)c[l>>2]=h;else c[g+4>>2]=h;if(!h)c[k+20>>2]=g;else c[h>>2]=g;if(E)Cd[c[j+8>>2]&255](j,E);Aj(j,v,k);O=m;i=S;return O|0}while(0);k=c[v+8>>2]|0;if(k&1){h=v+74|0;g=b[h>>1]|0;if(g<<16>>16<0){g=0-(g&65535)&65535;b[h>>1]=g}if(!(k&32))b[v+78>>1]=g}if((k&2|0)!=0?(M=c[v+28>>2]|0,(M|0)>0):0){h=c[v+32>>2]|0;j=0;do{g=h+(j<<4)|0;k=b[g>>1]|0;if(k<<16>>16<0)b[g>>1]=0-(k&65535);g=h+(j<<4)+8|0;k=c[g>>2]|0;if((k|0)<0)c[g>>2]=0-k<<16>>16;g=h+(j<<4)+12|0;k=c[g>>2]|0;if((k|0)<0)c[g>>2]=0-k;j=j+1|0}while((j|0)<(M|0))}g=c[v+128>>2]|0;c[g>>2]=65536;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=65536;c[g+16>>2]=0;c[g+20>>2]=0;g=g+56|0;c[g>>2]=1;if(!N){c[f>>2]=v;O=m;i=S;return O|0}if(!v){O=m;i=S;return O|0}l=c[p>>2]|0;if(!l){O=m;i=S;return O|0}c[g>>2]=0;j=c[l+8>>2]|0;k=l+16|0;g=c[k>>2]|0;if(!g){O=m;i=S;return O|0}while(1){if((c[g+8>>2]|0)==(v|0)){P=g;break}g=c[g+4>>2]|0;if(!g){Q=m;R=111;break}}if((R|0)==111){i=S;return Q|0}g=c[P>>2]|0;h=c[P+4>>2]|0;if(!g)c[k>>2]=h;else c[g+4>>2]=h;if(!h)c[l+20>>2]=g;else c[h>>2]=g;if(P)Cd[c[j+8>>2]&255](j,P);Aj(j,v,l);O=m;i=S;return O|0}else{y=g;G=0;I=0;R=33}while(0);do if((R|0)==33){N=y&255;if((N|0)==85|(N|0)==2|(N|0)==81){k=c[K>>2]|0;g=xj(a,k,e,f)|0;if((g&255|0)==2)g=yj(a,k,0,e,f)|0;N=g&255;if((N|0)==85|(N|0)==2?(c[d>>2]&4|0)!=0:0)g=zj(a,k,e,f,d)|0;if(g){B=(g&255|0)==2?2:g;C=G;D=I;R=47;break}if(!k){O=0;i=S;return O|0}g=c[k+28>>2]|0;h=c[k+24>>2]|0;if(h)Bd[h&511](k);if(O<<24>>24){O=0;i=S;return O|0}Cd[c[g+8>>2]&255](g,k);O=0;i=S;return O|0}else{F=y;H=G;J=I;R=34}}while(0);if((R|0)==34){k=c[K>>2]|0;B=F;C=H;D=J;R=47}if((R|0)==47)if(k){g=c[k+28>>2]|0;h=c[k+24>>2]|0;if(h)Bd[h&511](k);if(!(O<<24>>24)){Cd[c[g+8>>2]&255](g,k);x=B;z=C;A=D;R=92}else{x=B;z=C;A=D;R=92}}else{x=B;z=C;A=D;R=92}if((R|0)==92){v=c[L>>2]|0;m=x;t=z;u=A}if(!v){O=m;i=S;return O|0}Aj(u,v,t);O=m;i=S;return O|0}function ah(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+32|0;g=h;if(!b){a=6;i=h;return a|0}c[g>>2]=1;c[g+4>>2]=b;c[g+8>>2]=d;c[g+16>>2]=0;a=$g(a,g,e,f)|0;i=h;return a|0}function bh(a,b){a=a|0;b=b|0;var d=0;d=c[a+20>>2]|0;if(!d){if((c[a+4>>2]|0)>>>0>>0){a=85;return a|0}}else if(Xd[d&255](a,b,0,0)|0){a=85;return a|0}c[a+8>>2]=b;a=0;return a|0}function ch(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!b){k=35;return k|0}if(!d){k=36;return k|0}f=b+96|0;if(!(c[f>>2]|0)){k=34;return k|0}c[d>>2]=0;j=c[(c[f>>2]|0)+12>>2]|0;k=c[b+100>>2]|0;h=c[j+40>>2]|0;if((h|0)>0){g=Pd[c[k+4>>2]&511](k,h)|0;i=(g|0)==0;f=i?64:0;if(i)g=0;else sfa(g|0,0,h|0)|0}else{g=0;f=h>>31&6}do if(!f){i=Pd[c[k+4>>2]&511](k,12)|0;if(!i)e=64;else{h=i+0|0;f=h+12|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(f|0));c[g>>2]=b;c[g+40>>2]=0;f=c[j+56>>2]|0;if((f|0)!=0?(e=Ed[f&511](g)|0,(e|0)!=0):0){if(!i)break;Cd[c[k+8>>2]&255](k,i);break}c[d>>2]=g;c[i+8>>2]=g;e=b+112|0;f=c[e>>2]|0;c[i+4>>2]=0;c[i>>2]=f;if(!f)c[b+108>>2]=i;else c[f+4>>2]=i;c[e>>2]=i;k=0;return k|0}}else e=f;while(0);if(!g){k=e;return k|0}Cd[c[k+8>>2]&255](k,g);k=e;return k|0}function dh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;if(!a){a=35;return a|0}h=c[a+96>>2]|0;if(!h){a=35;return a|0}e=(c[a+128>>2]|0)+56|0;g=(c[e>>2]|0)+-1|0;c[e>>2]=g;if((g|0)>0){a=0;return a|0}f=c[h+8>>2]|0;g=h+16|0;b=c[g>>2]|0;if(!b){a=35;return a|0}while(1){if((c[b+8>>2]|0)==(a|0))break;b=c[b+4>>2]|0;if(!b){b=35;d=16;break}}if((d|0)==16)return b|0;d=c[b>>2]|0;e=c[b+4>>2]|0;if(!d)c[g>>2]=e;else c[d+4>>2]=e;if(!e)c[h+20>>2]=d;else c[e>>2]=d;if(b)Cd[c[f+8>>2]&255](f,b);Aj(f,a,h);a=0;return a|0}function eh(a,b){a=a|0;b=b|0;a=c[a>>2]|0;if(!a){b=0;return b|0}while(1){if((c[a+8>>2]|0)==(b|0)){b=4;break}a=c[a+4>>2]|0;if(!a){a=0;b=4;break}}if((b|0)==4)return a|0;return 0}function fh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a){i=36;return i|0}f=c[a>>2]|0;if(!f){i=35;return i|0}i=c[f+96>>2]|0;if(!i){i=34;return i|0}j=c[i+8>>2]|0;h=f+108|0;b=c[h>>2]|0;if(!b){i=36;return i|0}while(1){if((c[b+8>>2]|0)==(a|0))break;b=c[b+4>>2]|0;if(!b){b=36;d=25;break}}if((d|0)==25)return b|0;d=c[b>>2]|0;e=c[b+4>>2]|0;if(!d)c[h>>2]=e;else c[d+4>>2]=e;if(!e)c[f+112>>2]=d;else c[e>>2]=d;if(b)Cd[c[j+8>>2]&255](j,b);b=f+88|0;if((c[b>>2]|0)==(a|0)?(c[b>>2]=0,g=c[h>>2]|0,(g|0)!=0):0)c[b>>2]=c[g+8>>2];b=c[a+8>>2]|0;if(b)Bd[b&511](a);b=c[(c[i+12>>2]|0)+60>>2]|0;if(b)Bd[b&511](a);b=a+40|0;d=c[b>>2]|0;if(d)Cd[c[j+8>>2]&255](j,d);c[b>>2]=0;Cd[c[j+8>>2]&255](j,a);i=0;return i|0}function gh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;if(!(c[a+8>>2]&2)){k=35;return k|0}if(c[b>>2]|0){k=7;return k|0}f=c[b+12>>2]|0;h=c[b+4>>2]|0;if(!f)g=h;else g=((da(h,f)|0)+36|0)/72|0;f=c[b+16>>2]|0;b=c[b+8>>2]|0;if(!f)f=b;else f=((da(b,f)|0)+36|0)/72|0;i=(h|0)==0;h=(b|0)==0?g:f;j=(i?h:g)+32|0;h=(i?f:h)+32|0;i=c[a+28>>2]|0;if((i|0)<=0){k=23;return k|0}g=c[a+32>>2]|0;b=d<<24>>24==0;f=0;while(1){if(((c[g+(f<<4)+12>>2]|0)+32^h)>>>0<=63?!(((c[g+(f<<4)+8>>2]|0)+32^j)>>>0>63&b):0)break;f=f+1|0;if((f|0)>=(i|0)){f=23;k=14;break}}if((k|0)==14)return f|0;if(!e){k=0;return k|0}c[e>>2]=f;k=0;return k|0}function hh(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+4>>2]|0;e=c[a+12>>2]|0;if((e|0)<0)d=(d|0)<(e|0)?e:d;else d=d-((e|0)>0?e:0)|0;if(!b)b=(d*12|0)/10|0;c[a+20>>2]=(c[a+8>>2]|0)-((c[a+16>>2]|0)/2|0);c[a+24>>2]=(b-d|0)/2|0;c[a+28>>2]=b;return}function ih(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=c[a+88>>2]|0;m=l+12|0;e=c[a+32>>2]|0;f=c[e+(d<<4)+8>>2]|0;b[m>>1]=(f+32|0)>>>6;j=c[e+(d<<4)+12>>2]|0;b[l+14>>1]=(j+32|0)>>>6;if(!(c[a+8>>2]&1)){c[l+16>>2]=65536;c[l+20>>2]=65536;c[l+24>>2]=j;c[l+28>>2]=0;c[l+32>>2]=b[e+(d<<4)>>1]<<6;c[l+36>>2]=f;return}i=b[a+68>>1]|0;k=i&65535;h=(f|0)<0;e=h?0-f|0:f;i=i<<16>>16==0;do if(!i){f=e>>16;d=e<<16;e=k>>>1;if(!f){e=((e|d)>>>0)/(k>>>0)|0;break}e=d+e|0;d=(e>>>0>>0&1)+f|0;if(d>>>0>>0){g=e;f=32;e=0;while(1){e=e<<1;d=d<<1|g>>>31;if(d>>>0>=k>>>0){e=e|1;d=d-k|0}f=f+-1|0;if(!f)break;else g=g<<1}}else e=2147483647}else e=2147483647;while(0);c[l+16>>2]=h?0-e|0:e;h=(j|0)<0;e=h?0-j|0:j;do if(!i){f=e>>16;d=e<<16;e=k>>>1;if(!f){e=((e|d)>>>0)/(k>>>0)|0;break}e=d+e|0;d=(e>>>0>>0&1)+f|0;if(d>>>0>>0){f=e;g=32;e=0;while(1){e=e<<1;d=d<<1|f>>>31;if(d>>>0>=k>>>0){e=e|1;d=d-k|0}g=g+-1|0;if(!g)break;else f=f<<1}}else e=2147483647}else e=2147483647;while(0);c[l+20>>2]=h?0-e|0:e;Bj(a,m);return}function jh(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=c[a+88>>2]|0;s=r+12|0;if(!(c[a+8>>2]&1)){c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=0;c[s+24>>2]=0;c[r+16>>2]=65536;c[r+20>>2]=65536;return}q=c[d>>2]|0;a:do switch(q|0){case 4:{h=c[d+4>>2]|0;g=r+16|0;c[g>>2]=h;d=c[d+8>>2]|0;f=r+20|0;c[f>>2]=d;if(!h){c[g>>2]=d;h=d;j=48;break a}if(!d){c[f>>2]=h;d=h;g=0;f=0;j=47}else{g=0;f=0;j=47}break}case 0:{f=e[a+68>>1]|0;g=f;j=11;break}case 1:{f=(b[a+70>>1]|0)-(b[a+72>>1]|0)|0;g=f;j=11;break}case 3:{g=(b[a+70>>1]|0)-(b[a+72>>1]|0)|0;f=b[a+76>>1]|0;j=11;break}case 2:{g=(c[a+64>>2]|0)-(c[a+56>>2]|0)|0;f=(c[a+60>>2]|0)-(c[a+52>>2]|0)|0;j=11;break}default:{g=0;f=0;j=11}}while(0);do if((j|0)==11){n=(f|0)<0?0-f|0:f;p=(g|0)<0?0-g|0:g;f=c[d+12>>2]|0;g=c[d+4>>2]|0;if(!f)f=g;else f=((da(g,f)|0)+36|0)/72|0;h=c[d+16>>2]|0;k=c[d+8>>2]|0;if(!h)o=k;else o=((da(k,h)|0)+36|0)/72|0;if(!g){f=(o|0)<0?0-o|0:o;j=o^p;do if(p){g=f>>16;h=f<<16;f=p>>1;if(!g){f=((h+f|0)>>>0)/(p>>>0)|0;break}f=h+f|0;h=(f>>>0>>0&1)+g|0;if(h>>>0

>>0){g=f;d=32;f=0;while(1){f=f<<1;h=h<<1|g>>>31;if(h>>>0>=p>>>0){f=f|1;h=h-p|0}d=d+-1|0;if(!d)break;else g=g<<1}}else f=2147483647}else f=2147483647;while(0);h=(j|0)<0?0-f|0:f;c[r+20>>2]=h;c[r+16>>2]=h;d=h;g=o;f=og(o,n,p)|0;j=47;break}h=(f|0)<0?0-f|0:f;i=f^n;do if(n){d=h>>16;g=h<<16;h=n>>1;if(!d){h=((g+h|0)>>>0)/(n>>>0)|0;break}h=g+h|0;g=(h>>>0>>0&1)+d|0;if(g>>>0>>0){d=h;j=32;h=0;while(1){h=h<<1;g=g<<1|d>>>31;if(g>>>0>=n>>>0){h=h|1;g=g-n|0}j=j+-1|0;if(!j)break;else d=d<<1}}else h=2147483647}else h=2147483647;while(0);m=(i|0)<0?0-h|0:h;l=r+16|0;c[l>>2]=m;if(!k){c[r+20>>2]=m;d=m;h=m;g=og(f,p,n)|0;j=47;break}h=(o|0)<0?0-o|0:o;i=o^p;do if(p){d=h>>16;g=h<<16;h=p>>1;if(!d){h=((g+h|0)>>>0)/(p>>>0)|0;break}h=g+h|0;g=(h>>>0>>0&1)+d|0;if(g>>>0

>>0){d=h;j=32;h=0;while(1){h=h<<1;g=g<<1|d>>>31;if(g>>>0>=p>>>0){h=h|1;g=g-p|0}j=j+-1|0;if(!j)break;else d=d<<1}}else h=2147483647}else h=2147483647;while(0);h=(i|0)<0?0-h|0:h;g=r+20|0;c[g>>2]=h;if((q|0)==3)if((h|0)>(m|0)){c[g>>2]=m;h=m;d=m;j=48;break}else{c[l>>2]=h;d=h;g=o;j=47;break}else{d=h;h=m;g=o;j=47}}while(0);if((j|0)==47)if(q)j=48;if((j|0)==48){j=b[a+68>>1]|0;k=j&65535;i=j<<16>>16==0;if(i|(h|0)==65536)f=k;else{g=(h|0)<0;f=g?0-h|0:h;if((j&65535)<2049&f>>>0<1048577)f=((da(f,k)|0)+32768|0)>>>16;else f=(((da(f&65535,k)|0)+32768|0)>>>16)+(da(f>>>16,k)|0)|0;f=g?0-f|0:f}if(i|(d|0)==65536)g=k;else{h=(d|0)<0;g=h?0-d|0:d;if((j&65535)<2049&g>>>0<1048577)g=((da(g,k)|0)+32768|0)>>>16;else g=(((da(g&65535,k)|0)+32768|0)>>>16)+(da(g>>>16,k)|0)|0;g=h?0-g|0:g}}b[s>>1]=(f+32|0)>>>6;b[r+14>>1]=(g+32|0)>>>6;Bj(a,s);return}function kh(a,b){a=a|0;b=b|0;var d=0;if(!a){b=35;return b|0}if(!(c[a+8>>2]&2)){b=35;return b|0}if((b|0)<0){b=6;return b|0}if((c[a+28>>2]|0)<=(b|0)){b=6;return b|0}d=c[(c[(c[a+96>>2]|0)+12>>2]|0)+92>>2]|0;if(!d){ih(a,b);b=0;return b|0}else{b=Pd[d&511](c[a+88>>2]|0,b)|0;return b|0}return 0}function lh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a){i=35;return i|0}if(!b){i=6;return i|0}g=c[b+4>>2]|0;if((g|0)<0){i=6;return i|0}h=c[b+8>>2]|0;if((h|0)<0){i=6;return i|0}f=c[b>>2]|0;if(f>>>0>4){i=6;return i|0}i=c[(c[a+96>>2]|0)+12>>2]|0;d=c[i+88>>2]|0;if(d){i=Pd[d&511](c[a+88>>2]|0,b)|0;return i|0}d=c[a+8>>2]|0;if((d&3|0)!=2){jh(a,b);i=0;return i|0}if(!(d&2)){i=35;return i|0}if(f){i=7;return i|0}d=c[b+12>>2]|0;if(!d)e=g;else e=((da(d,g)|0)+36|0)/72|0;d=c[b+16>>2]|0;if(!d)d=h;else d=((da(h,d)|0)+36|0)/72|0;b=(g|0)==0;g=(h|0)==0?e:d;f=(b?g:e)+32|0;d=(b?d:g)+32|0;g=c[a+28>>2]|0;if((g|0)<=0){i=23;return i|0}b=c[a+32>>2]|0;e=0;while(1){if(((c[b+(e<<4)+12>>2]|0)+32^d)>>>0<=63?((c[b+(e<<4)+8>>2]|0)+32^f)>>>0<=63:0)break;e=e+1|0;if((e|0)>=(g|0)){d=23;j=25;break}}if((j|0)==25)return d|0;if(!((e|0)>-1&(g|0)>(e|0))){i=6;return i|0}d=c[i+92>>2]|0;if(!d){ih(a,e);i=0;return i|0}else{i=Pd[d&511](c[a+88>>2]|0,e)|0;return i|0}return 0}function mh(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+32|0;h=j;if(!b){g=d;b=d}else g=(d|0)==0?b:d;if(!e){d=f;e=f}else d=(f|0)==0?e:f;f=(e|0)==0;c[h>>2]=0;c[h+4>>2]=(b|0)<64?64:b;c[h+8>>2]=(g|0)<64?64:g;c[h+12>>2]=f?72:e;c[h+16>>2]=f?72:d;h=lh(a,h)|0;i=j;return h|0}function nh(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;if(!a){f=35;return f|0}if(!g){f=6;return f|0}h=c[a+96>>2]|0;c[g>>2]=0;k=g+4|0;c[k>>2]=0;h=c[(c[h+12>>2]|0)+76>>2]|0;if(!h){f=0;return f|0}h=Xd[h&255](a,d,e,g)|0;if(!((h|0)==0&(f|0)!=2)){f=h;return f|0}e=c[g>>2]|0;j=c[a+88>>2]|0;a=c[j+16>>2]|0;if(!((e|0)==0|(a|0)==65536)){h=(e|0)<0?0-e|0:e;d=(a|0)<0?0-a|0:a;if(h>>>0<2049&d>>>0<1048577)h=((da(d,h)|0)+32768|0)>>>16;else{i=h&65535;h=(da(d>>>16,i)|0)+(da(d,h>>>16)|0)+(((da(d&65535,i)|0)+32768|0)>>>16)|0}e=(a^e|0)<0?0-h|0:h}c[g>>2]=e;h=c[k>>2]|0;i=c[j+20>>2]|0;if(!((h|0)==0|(i|0)==65536)){a=(h|0)<0?0-h|0:h;d=(i|0)<0?0-i|0:i;if(a>>>0<2049&d>>>0<1048577)d=((da(d,a)|0)+32768|0)>>>16;else{l=a&65535;d=(da(d>>>16,l)|0)+(da(d,a>>>16)|0)+(((da(d&65535,l)|0)+32768|0)>>>16)|0}h=(i^h|0)<0?0-d|0:d}c[k>>2]=h;if((f|0)==1){l=0;return l|0}d=b[j+12>>1]|0;if((d&65535)<25){e=og(e,d&65535,25)|0;c[g>>2]=e}d=b[j+14>>1]|0;if((d&65535)<25){h=og(h,d&65535,25)|0;c[k>>2]=h}c[g>>2]=e+32&-64;c[k>>2]=h+32&-64;l=0;return l|0}function oh(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!a){j=35;return j|0}if((d|0)==1970170211){d=c[a+40>>2]|0;if(!d){j=38;return j|0}h=c[a+36>>2]|0;e=h+-1|0;a:do if((e|0)>=0){g=d+(e<<2)|0;b:while(1){e=c[g>>2]|0;do if((c[e+4>>2]|0)==1970170211){f=b[e+8>>1]|0;if(!(f<<16>>16))if((b[e+10>>1]|0)==4)break b;else break;else if(f<<16>>16==3?(b[e+10>>1]|0)==10:0)break b;else break}while(0);g=g+-4|0;if(g>>>0>>0)break a}c[a+92>>2]=e;j=0;return j|0}while(0);f=d+(h<<2)|0;while(1){f=f+-4|0;if(f>>>0>>0){j=38;k=21;break}e=c[f>>2]|0;if((c[e+4>>2]|0)==1970170211){i=e;break}}if((k|0)==21)return j|0;c[a+92>>2]=i;j=0;return j|0}else if(!d){j=6;return j|0}else{e=c[a+40>>2]|0;if(!e){j=38;return j|0}i=c[a+36>>2]|0;g=e+(i<<2)|0;if((i|0)<=0){j=6;return j|0}while(1){f=c[e>>2]|0;e=e+4|0;if((c[f+4>>2]|0)==(d|0)){h=f;break}if(e>>>0>=g>>>0){j=6;k=21;break}}if((k|0)==21)return j|0;c[a+92>>2]=h;j=0;return j|0}return 0}function ph(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;j=l;if(!a){b=35;i=l;return b|0}d=c[a+40>>2]|0;if(!d){b=38;i=l;return b|0}if((((((b|0)!=0?(g=c[b>>2]|0,(g|0)!=0):0)?(h=c[g+96>>2]|0,e=c[(c[h>>2]|0)+32>>2]|0,(e|0)!=0):0)?(f=Pd[e&511](h,83616)|0,(f|0)!=0):0)?(Pd[c[f>>2]&511](b,j)|0)==0:0)?(c[j+4>>2]|0)==14:0){b=6;i=l;return b|0}h=c[a+36>>2]|0;e=d+(h<<2)|0;if((h|0)<=0){b=6;i=l;return b|0}while(1){if((c[d>>2]|0)==(b|0))break;d=d+4|0;if(d>>>0>=e>>>0){d=6;k=13;break}}if((k|0)==13){i=l;return d|0}c[a+92>>2]=b;b=0;i=l;return b|0}function qh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;if((b|0)==0|(e|0)==0){f=6;return f|0}k=c[e>>2]|0;if(!k){f=6;return f|0}l=c[k+100>>2]|0;i=c[b>>2]|0;if((i|0)>0){g=Pd[c[l+4>>2]&511](l,i)|0;m=(g|0)==0;j=m?64:0;if(m)g=0;else sfa(g|0,0,i|0)|0}else{g=0;j=i>>31&6}a:do if(!j){c[g+0>>2]=c[e+0>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];m=g+12|0;c[m>>2]=b;j=c[b+4>>2]|0;if(!((j|0)!=0?(h=Pd[j&511](g,d)|0,(h|0)!=0):0)){b=k+36|0;e=c[b>>2]|0;j=e+1|0;k=k+40|0;i=c[k>>2]|0;b:do if((j|e|0)<0)h=6;else{do if(!j)if(!i)h=0;else{Cd[c[l+8>>2]&255](l,i);h=0}else{if((e|0)>536870910){h=10;break b}if(e){h=Xd[c[l+12>>2]&255](l,e<<2,j<<2,i)|0;d=(h|0)==0;h=d?i:h;if(d){i=h;h=64;break b}else break}j=j<<2;h=Pd[c[l+4>>2]&511](l,j)|0;i=(h|0)==0;if(i)h=0;else sfa(h|0,0,j|0)|0;if(i){i=h;h=64;break b}}while(0);m=h+(e<<2)|0;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;c[k>>2]=h;m=c[b>>2]|0;c[b>>2]=m+1;c[h+(m<<2)>>2]=g;h=0;break a}while(0);c[k>>2]=i}j=c[(c[g>>2]|0)+100>>2]|0;i=c[(c[m>>2]|0)+8>>2]|0;if(i)Bd[i&511](g);Cd[c[j+8>>2]&255](j,g);g=0}else h=j;while(0);if(!f){f=h;return f|0}c[f>>2]=g;f=h;return f|0}function rh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(((a|0)!=0?(e=c[a+92>>2]|0,(e|0)!=0):0)?(f=a+16|0,(c[f>>2]|0)!=0):0){c[g>>2]=b;a=e+12|0;do b=Pd[c[(c[a>>2]|0)+16>>2]&511](e,g)|0;while(b>>>0>=(c[f>>2]|0)>>>0);a=b;b=(b|0)==0?0:c[g>>2]|0}else{a=0;b=0}if(!d){i=h;return b|0}c[d>>2]=a;i=h;return b|0}function sh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;if((e|0)!=0&(f|0)!=0)a[e>>0]=0;if(!b){f=6;return f|0}if((c[b+16>>2]|0)<(d|0)){f=6;return f|0}if(!(c[b+8>>2]&512)){f=6;return f|0}k=b+128|0;j=(c[k>>2]|0)+36|0;g=c[j>>2]|0;h=g;if(!h)i=7;else if((h|0)==-2){f=6;return f|0}do if((i|0)==7){g=c[b+96>>2]|0;h=c[(c[g>>2]|0)+32>>2]|0;if(!h){c[j>>2]=-2;f=6;return f|0}else{g=Pd[h&511](g,90232)|0;c[(c[k>>2]|0)+36>>2]=(g|0)!=0?g:-2;if(!g)g=6;else break;return g|0}}while(0);g=c[g>>2]|0;if(!g){f=6;return f|0}f=Xd[g&255](b,d,e,f)|0;return f|0}function th(a){a=a|0;var b=0;if(((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0)?(c[b+96>>2]|0)!=0:0){c[b+88>>2]=a;b=0}else b=6;return b|0}function uh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if(!a){g=0;return g|0}a=c[a+148>>2]|0;f=(d|0)!=0;if(f){e=c[d>>2]|0;if(e)a=c[e+4>>2]|0;c[d>>2]=0}if(!a){g=0;return g|0}while(1){e=c[a+8>>2]|0;if((c[e+16>>2]|0)==(b|0))break;a=c[a+4>>2]|0;if(!a){a=0;g=11;break}}if((g|0)==11)return a|0;if(!f){g=e;return g|0}c[d>>2]=a;g=e;return g|0}function vh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=b+72|0;f=c[j>>2]|0;a:do if((f|0)==1869968492){k=a+148|0;e=c[k>>2]|0;h=c[a+156>>2]|0;l=9}else if((f|0)==1651078259){a=0;return a|0}else{k=a+148|0;if(a){e=c[k>>2]|0;if(!e){e=0;h=0;l=9;break}while(1){h=c[e+8>>2]|0;if((c[h+16>>2]|0)==(f|0)){l=6;break}e=c[e+4>>2]|0;if(!e){e=0;h=0;break}}if(!a){e=7;f=0}else{l=9;break}}else{e=7;h=0;f=0}while(1){if(!h)break;e=Xd[c[h+60>>2]&255](h,b,d,0)|0;if((e|0)!=0&(e&255|0)==19){h=0;f=1}else{g=1;j=h;break a}}return e|0}while(0);b:do if((l|0)==9){i=e;e=7;f=0;c:while(1){if(!h)break;e=Xd[c[h+60>>2]&255](h,b,d,0)|0;if(!((e|0)!=0&(e&255|0)==19)){g=0;j=h;break b}g=c[j>>2]|0;h=c[((i|0)==0?k:i+4|0)>>2]|0;if(!h){i=0;h=0;f=1;continue}else f=h;while(1){h=c[f+8>>2]|0;if((c[h+16>>2]|0)==(g|0))break;h=c[f+4>>2]|0;if(!h){i=0;h=0;f=1;continue c}else f=h}i=f;f=1}return e|0}while(0);if(g|((f|0)==0|(e|0)!=0)|(j|0)==0){a=e;return a|0}f=c[k>>2]|0;if(!f){a=e;return a|0}while(1){if((c[f+8>>2]|0)==(j|0))break;f=c[f+4>>2]|0;if(!f){l=29;break}}if((l|0)==29)return e|0;g=c[f>>2]|0;h=f+4|0;i=c[h>>2]|0;if(g){c[g+4>>2]=i;if(!i)c[a+152>>2]=g;else c[i>>2]=g;c[f>>2]=0;l=c[k>>2]|0;c[h>>2]=l;c[l>>2]=f;c[k>>2]=f}if((c[j+16>>2]|0)!=1869968492){a=e;return a|0}c[a+156>>2]=j;a=e;return a|0}function wh(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;if(!d){u=33;return u|0}if(!e){u=6;return u|0}if((c[e+16>>2]|0)>131077){u=4;return u|0}p=d+16|0;f=c[p>>2]|0;if(f){h=c[e+8>>2]|0;i=0;do{g=c[d+(i<<2)+20>>2]|0;j=c[g>>2]|0;i=i+1|0;if(!(gfa(c[j+8>>2]|0,h)|0)){f=j;o=9;break}}while(i>>>0>>0);do if((o|0)==9)if((c[e+12>>2]|0)>(c[f+12>>2]|0)){xh(d,g)|0;f=c[p>>2]|0;break}else{u=5;return u|0}while(0);if(f>>>0>31){u=48;return u|0}else h=d}else h=d;r=c[h>>2]|0;i=c[e+4>>2]|0;if((i|0)>0){g=Pd[c[r+4>>2]&511](r,i)|0;q=(g|0)==0;f=q?64:0;if(q)q=0;else{sfa(g|0,0,i|0)|0;q=g}}else{q=0;f=i>>31&6}if(f){u=f;return u|0}c[q+4>>2]=d;c[q+8>>2]=r;c[q>>2]=e;f=c[e>>2]|0;a:do if(f&2){h=c[h>>2]|0;f=Pd[c[h+4>>2]&511](h,12)|0;if(!f)l=64;else{j=f+0|0;k=j+12|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(k|0));i=c[q>>2]|0;c[q+12>>2]=i;j=c[i+36>>2]|0;c[q+16>>2]=j;do if((j|0)==1869968492?(n=i+56|0,m=c[(c[n>>2]|0)+4>>2]|0,(m|0)!=0):0){g=Pd[m&511](h,q+52|0)|0;if(!g){c[q+56>>2]=c[(c[n>>2]|0)+16>>2];c[q+60>>2]=c[i+40>>2];break}else{Cd[c[h+8>>2]&255](h,f);l=g;break a}}while(0);c[f+8>>2]=q;g=d+152|0;h=c[g>>2]|0;c[f+4>>2]=0;c[f>>2]=h;if(!h){c[d+148>>2]=f;c[g>>2]=f}else{c[h+4>>2]=f;c[g>>2]=f;f=c[d+148>>2]|0}b:do if(!f)f=0;else{g=f;while(1){f=c[g+8>>2]|0;if((c[f+16>>2]|0)==1869968492)break;g=c[g+4>>2]|0;if(!g){f=0;break b}}}while(0);c[d+156>>2]=f;g=c[q>>2]|0;f=c[g>>2]|0;o=32}}else{g=e;o=32}while(0);do if((o|0)==32){if(f&4)c[d+160>>2]=q;if((f&1|0)!=0?(c[q+12>>2]=g,(f&512|0)==0):0){f=Pd[c[r+4>>2]&511](r,96)|0;if(!f){l=64;break}g=q+24|0;j=f+0|0;k=j+96|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(k|0));c[f>>2]=r;c[g>>2]=f}f=c[e+24>>2]|0;if((f|0)!=0?(l=Ed[f&511](q)|0,(l|0)!=0):0)break;u=c[p>>2]|0;c[p>>2]=u+1;c[d+(u<<2)+20>>2]=q;u=0;return u|0}while(0);f=c[c[q>>2]>>2]|0;if((f&513|0)==1?(s=c[q+24>>2]|0,(s|0)!=0):0){i=c[s>>2]|0;f=s+24|0;g=c[f>>2]|0;if(g)Cd[c[i+8>>2]&255](i,g);c[f>>2]=0;f=s+28|0;g=c[f>>2]|0;if(g)Cd[c[i+8>>2]&255](i,g);c[f>>2]=0;f=s+32|0;g=c[f>>2]|0;if(g)Cd[c[i+8>>2]&255](i,g);c[f>>2]=0;f=s+40|0;g=c[f>>2]|0;if(g)Cd[c[i+8>>2]&255](i,g);c[f>>2]=0;g=s+52|0;f=c[g>>2]|0;if(!f)h=i+8|0;else{h=i+8|0;Cd[c[h>>2]&255](i,f)}c[g>>2]=0;c[s+44>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;f=s+20|0;b[s+22>>1]=0;b[f>>1]=0;c[s+48>>2]=0;j=s+56|0;f=f+0|0;k=j+36|0;do{c[j>>2]=c[f>>2];j=j+4|0;f=f+4|0}while((j|0)<(k|0));Cd[c[h>>2]&255](i,s);f=c[c[q>>2]>>2]|0}if((((f&2|0)!=0?(t=c[q+12>>2]|0,(t|0)!=0):0)?(c[t+36>>2]|0)==1869968492:0)?(u=c[q+52>>2]|0,(u|0)!=0):0)Bd[c[(c[t+56>>2]|0)+20>>2]&511](u);if(!q){u=l;return u|0}Cd[c[r+8>>2]&255](r,q);u=l;return u|0}function xh(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(!a){d=33;return d|0}if(!d){d=34;return d|0}g=a+16|0;i=c[g>>2]|0;h=a+(i<<2)+20|0;if((i|0)<=0){d=34;return d|0}e=a+20|0;while(1){if((c[e>>2]|0)==(d|0))break;e=e+4|0;if(e>>>0>=h>>>0){e=34;j=57;break}}if((j|0)==57)return e|0;h=i+-1|0;c[g>>2]=h;h=a+(h<<2)+20|0;if(e>>>0>>0)do{q=e;e=e+4|0;c[q>>2]=c[e>>2]}while(e>>>0>>0);c[h>>2]=0;j=d+8|0;q=c[j>>2]|0;p=c[d>>2]|0;i=c[d+4>>2]|0;a=(i|0)==0;if(!a?(k=i+160|0,(c[k>>2]|0)==(d|0)):0)c[k>>2]=0;e=c[p>>2]|0;a:do if((e&2|0)!=0?(n=c[i>>2]|0,o=i+148|0,l=c[o>>2]|0,(l|0)!=0):0){h=l;while(1){if((c[h+8>>2]|0)==(d|0)){g=h;break}h=c[h+4>>2]|0;if(!h)break a}e=c[d+12>>2]|0;if((c[e+36>>2]|0)==1869968492?(m=c[d+52>>2]|0,(m|0)!=0):0)Bd[c[(c[e+56>>2]|0)+20>>2]&511](m);e=c[g>>2]|0;h=c[g+4>>2]|0;if(!e)c[o>>2]=h;else c[e+4>>2]=h;if(!h)c[i+152>>2]=e;else c[h>>2]=e;if(g)Cd[c[n+8>>2]&255](n,g);b:do if(!a?(f=c[o>>2]|0,(f|0)!=0):0)while(1){e=c[f+8>>2]|0;if((c[e+16>>2]|0)==1869968492)break;f=c[f+4>>2]|0;if(!f){e=0;break b}}else e=0;while(0);c[i+156>>2]=e;e=c[c[d>>2]>>2]|0}while(0);if(e&1){g=c[j>>2]|0;i=d+16|0;f=c[i>>2]|0;if(f){h=g+8|0;do{e=f;f=c[f+4>>2]|0;Aj(g,c[e+8>>2]|0,d);if(e)Cd[c[h>>2]&255](g,e)}while((f|0)!=0);e=c[c[d>>2]>>2]|0}c[i>>2]=0;c[d+20>>2]=0;if((e&512|0)==0?(r=c[d+24>>2]|0,(r|0)!=0):0){a=c[r>>2]|0;e=r+24|0;f=c[e>>2]|0;if(f)Cd[c[a+8>>2]&255](a,f);c[e>>2]=0;e=r+28|0;f=c[e>>2]|0;if(f)Cd[c[a+8>>2]&255](a,f);c[e>>2]=0;e=r+32|0;f=c[e>>2]|0;if(f)Cd[c[a+8>>2]&255](a,f);c[e>>2]=0;e=r+40|0;f=c[e>>2]|0;if(f)Cd[c[a+8>>2]&255](a,f);c[e>>2]=0;f=r+52|0;e=c[f>>2]|0;if(!e)h=a+8|0;else{h=a+8|0;Cd[c[h>>2]&255](a,e)}c[f>>2]=0;c[r+44>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[r+12>>2]=0;f=r+20|0;b[r+22>>1]=0;b[f>>1]=0;c[r+48>>2]=0;e=r+56|0;f=f+0|0;g=e+36|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));Cd[c[h>>2]&255](a,r)}}e=c[p+28>>2]|0;if(e)Bd[e&511](d);Cd[c[q+8>>2]&255](q,d);d=0;return d|0}function yh(a,b){a=a|0;b=b|0;var d=0,e=0;if(!((a|0)!=0&(b|0)!=0)){e=0;return e|0}d=c[a+16>>2]|0;e=a+(d<<2)+20|0;if((d|0)<=0){e=0;return e|0}d=a+20|0;while(1){a=c[d>>2]|0;d=d+4|0;if(!(gfa(c[(c[a>>2]|0)+8>>2]|0,b)|0)){d=6;break}if(d>>>0>=e>>>0){a=0;d=6;break}}if((d|0)==6)return a|0;return 0}function zh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!((a|0)!=0&(b|0)!=0)){g=0;return g|0}e=c[a+16>>2]|0;f=a+(e<<2)+20|0;if((e|0)<=0){g=0;return g|0}e=a+20|0;while(1){d=c[e>>2]|0;a=c[d>>2]|0;e=e+4|0;if(!(gfa(c[a+8>>2]|0,b)|0))break;if(e>>>0>=f>>>0){a=0;g=8;break}}if((g|0)==8)return a|0;if(!d){g=0;return g|0}g=c[a+20>>2]|0;return g|0}function Ah(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if(!a){b=0;return b|0}e=c[(c[a>>2]|0)+32>>2]|0;if((e|0)!=0?(f=Pd[e&511](a,b)|0,(f|0)!=0):0){b=f;return b|0}e=c[a+4>>2]|0;f=c[e+16>>2]|0;g=e+(f<<2)+20|0;if((f|0)<=0){b=0;return b|0}f=e+20|0;while(1){e=c[f>>2]|0;if(((e|0)!=(a|0)?(h=c[(c[e>>2]|0)+32>>2]|0,(h|0)!=0):0)?(d=Pd[h&511](e,b)|0,(d|0)!=0):0){e=10;break}f=f+4|0;if(f>>>0>=g>>>0){d=0;e=10;break}}if((e|0)==10)return d|0;return 0}function Bh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if(!a){a=6;return a|0}d=a+4|0;f=Pd[c[d>>2]&511](a,192)|0;if(!f){a=64;return a|0}sfa(f|0,0,192)|0;c[f>>2]=a;c[f+168>>2]=16384;d=Pd[c[d>>2]&511](a,16384)|0;e=(d|0)==0;if(e){c[f+164>>2]=0;Cd[c[a+8>>2]&255](a,f);a=e?64:0;return a|0}else{sfa(d|0,0,16384)|0;c[f+164>>2]=d;c[f+4>>2]=2;c[f+8>>2]=5;c[f+12>>2]=0;c[f+188>>2]=1;c[b>>2]=f;a=0;return a|0}return 0}function Ch(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;if(!a){a=33;return a|0}s=a+188|0;t=(c[s>>2]|0)+-1|0;c[s>>2]=t;if((t|0)>0){a=0;return a|0}t=c[a>>2]|0;s=a+16|0;b=c[s>>2]|0;d=b;q=0;do{if(!d)d=0;else{h=(q|0)==0;g=2984+(q<<2)|0;i=0;while(1){b=c[a+(i<<2)+20>>2]|0;if(h){d=c[b>>2]|0;if(!(gfa(c[d+8>>2]|0,c[g>>2]|0)|0)){j=d;r=10}}else{j=c[b>>2]|0;r=10}if(((r|0)==10?(r=0,(c[j>>2]&1|0)!=0):0)?(k=b+16|0,l=c[k>>2]|0,(l|0)!=0):0){b=l;do{f=c[b+8>>2]|0;a:do if((((f|0)!=0?(m=c[f+96>>2]|0,(m|0)!=0):0)?(d=(c[f+128>>2]|0)+56|0,e=(c[d>>2]|0)+-1|0,c[d>>2]=e,(e|0)<=0):0)?(n=c[m+8>>2]|0,o=m+16|0,p=c[o>>2]|0,(p|0)!=0):0){b=p;while(1){if((c[b+8>>2]|0)==(f|0))break;b=c[b+4>>2]|0;if(!b)break a}d=c[b>>2]|0;e=c[b+4>>2]|0;if(!d)c[o>>2]=e;else c[d+4>>2]=e;if(!e)c[m+20>>2]=d;else c[e>>2]=d;if(b)Cd[c[n+8>>2]&255](n,b);Aj(n,f,m)}while(0);b=c[k>>2]|0}while((b|0)!=0)}i=i+1|0;d=c[s>>2]|0;if(i>>>0>=d>>>0){b=d;break}}}q=q+1|0}while((q|0)!=2);if(b)do{xh(a,c[a+(b+-1<<2)+20>>2]|0)|0;b=c[s>>2]|0}while((b|0)!=0);b=a+164|0;d=c[b>>2]|0;if(d)Cd[c[t+8>>2]&255](t,d);c[b>>2]=0;c[a+168>>2]=0;Cd[c[t+8>>2]&255](t,a);a=0;return a|0}function Dh(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;T=i;i=i+64|0;L=T+16|0;N=T;O=T+56|0;P=T+8|0;M=T+24|0;Q=T+32|0;R=T+40|0;S=T+48|0;if(!((e|0)!=0&(f|0)!=0)){P=6;i=T;return P|0}G=c[f+16>>2]|0;H=c[f+20>>2]|0;if((b[e>>1]|0)<=0){P=0;i=T;return P|0}I=e+12|0;J=e+4|0;t=N+4|0;u=e+8|0;v=f+4|0;w=Q+4|0;x=R+4|0;y=S+4|0;z=f+12|0;A=O+4|0;B=L+4|0;C=P+4|0;D=M+4|0;E=f+8|0;j=0;K=0;a:while(1){s=b[(c[I>>2]|0)+(K<<1)>>1]|0;F=s<<16>>16;if(s<<16>>16<0){h=20;j=29;break}r=c[J>>2]|0;h=r+(F<<3)|0;l=r+(j<<3)|0;m=c[l>>2]|0;l=c[l+4>>2]|0;n=N;c[n>>2]=m;c[n+4>>2]=l;c[N>>2]=(m<>2]=l;m=(c[r+(F<<3)>>2]<>2]<>2]|0;k=c[k+4>>2]|0;q=L;c[q>>2]=o;c[q+4>>2]=k;q=c[u>>2]|0;k=q+j|0;p=d[k>>0]&3;if((p|0)==2){h=20;j=29;break}else if(!p){if((a[q+F>>0]&3)==1){c[N>>2]=m;c[t>>2]=n;h=r+(F+-1<<3)|0}else{c[N>>2]=(o+m|0)/2|0;c[t>>2]=(l+n|0)/2|0}k=j+-1|0;j=k;s=h;k=q+k|0}else s=h;j=r+(j<<3)|0;h=Pd[c[f>>2]&511](N,g)|0;if(h){j=29;break}b:do if(j>>>0>>0){p=k;c:while(1){l=j+8|0;q=p+1|0;h=d[q>>0]&3;if((h|0)==1){c[O>>2]=(c[l>>2]<>2]=(c[j+12>>2]<>2]&511](O,g)|0;if(!h){j=l;h=q}else{j=29;break a}}else if(!h){h=(c[l>>2]<>2]=h;k=(c[j+12>>2]<>2]=k;if(l>>>0>>0){r=j;m=k;o=l}else{j=20;break}while(1){j=r+16|0;k=p+2|0;p=d[k>>0]&3;n=(c[j>>2]<>2]=n;l=(c[r+20>>2]<>2]=l;if((p|0)==1)break;else if(p){h=20;j=29;break a}c[M>>2]=(n+h|0)/2|0;c[D>>2]=(l+m|0)/2|0;h=Hd[c[E>>2]&255](L,M,g)|0;if(h){j=29;break a}m=P;h=c[m>>2]|0;m=c[m+4>>2]|0;r=L;c[r>>2]=h;c[r+4>>2]=m;if(j>>>0>=s>>>0){j=20;break c}else{p=q;r=o;o=j;q=k}}h=Hd[c[E>>2]&255](L,P,g)|0;if(!h)h=k;else{j=29;break a}}else{if((j+16|0)>>>0>s>>>0){h=20;j=29;break a}if((a[p+2>>0]&3)!=2){h=20;j=29;break a}k=j+24|0;c[Q>>2]=(c[j+8>>2]<>2]=(c[j+12>>2]<>2]=(c[j+16>>2]<>2]=(c[j+20>>2]<>>0>s>>>0){j=25;break}c[S>>2]=(c[k>>2]<>2]=(c[j+28>>2]<>2]&255](Q,R,S,g)|0;if(!h){j=k;h=p+3|0}else{j=29;break a}}if(j>>>0>>0)p=h;else{j=26;break b}}if((j|0)==20){j=0;h=Hd[c[E>>2]&255](L,N,g)|0;break}else if((j|0)==25){j=0;h=Xd[c[z>>2]&255](Q,R,N,g)|0;break}}else j=26;while(0);if((j|0)==26)h=Pd[c[v>>2]&511](N,g)|0;if(h){j=29;break}K=K+1|0;if((K|0)>=(b[e>>1]|0)){h=0;j=29;break}else j=F+1|0}if((j|0)==29){i=T;return h|0}return 0}function Eh(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;if(!((f|0)!=0&(a|0)!=0)){f=6;return f|0};c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;if((e|0)<0|e>>>0>d>>>0){f=6;return f|0}if(d>>>0>32767){f=10;return f|0}i=(d|0)==0;do if(!i){j=d<<3;g=Pd[c[a+4>>2]&511](a,j)|0;h=(g|0)==0;if(h)g=0;else sfa(g|0,0,j|0)|0;if(h){h=f+4|0;c[h>>2]=g;i=64;break}else{sfa(g|0,0,j|0)|0;l=9;break}}else{g=0;l=9}while(0);a:do if((l|0)==9){h=f+4|0;c[h>>2]=g;do if(!i){i=(d|0)>0;if(!i){g=d>>31&6;c[f+8>>2]=0;if(!g)break;else{i=g;break a}}g=Pd[c[a+4>>2]&511](a,d)|0;j=(g|0)==0;if(j)g=0;else sfa(g|0,0,d|0)|0;if(!(i&(j^1))){c[f+8>>2]=g;if(j){i=64;break a}else break}else{sfa(g|0,0,d|0)|0;l=17;break}}else{g=0;l=17}while(0);if((l|0)==17)c[f+8>>2]=g;do if(e){if((e|0)>1073741823){c[f+12>>2]=0;i=10;break a}j=e<<1;i=(e|0)>0;if(!i){g=e>>30&6;c[f+12>>2]=0;if(!g)break;else{i=g;break a}}g=Pd[c[a+4>>2]&511](a,j)|0;k=(g|0)==0;if(k)g=0;else sfa(g|0,0,j|0)|0;if(!(i&(k^1))){c[f+12>>2]=g;if(k){i=64;break a}else break}else{sfa(g|0,0,j|0)|0;l=27;break}}else{g=0;l=27}while(0);if((l|0)==27)c[f+12>>2]=g;b[f+2>>1]=d;b[f>>1]=e;f=f+16|0;c[f>>2]=c[f>>2]|1;f=0;return f|0}while(0);g=f+16|0;c[g>>2]=c[g>>2]|1;g=c[h>>2]|0;if(g)Cd[c[a+8>>2]&255](a,g);c[h>>2]=0;g=f+8|0;h=c[g>>2]|0;if(h)Cd[c[a+8>>2]&255](a,h);c[g>>2]=0;g=c[f+12>>2]|0;if(g)Cd[c[a+8>>2]&255](a,g);c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;f=i;return f|0}function Fh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(!a){d=33;return d|0}d=Eh(c[a>>2]|0,b,d,e)|0;return d|0}function Gh(a,d){a=a|0;d=d|0;var e=0,f=0;if(!((a|0)!=0&(d|0)!=0)){a=6;return a|0}e=a+2|0;f=b[e>>1]|0;if(f<<16>>16!=(b[d+2>>1]|0)){a=6;return a|0}if((b[a>>1]|0)!=(b[d>>1]|0)){a=6;return a|0}if((a|0)==(d|0)){a=0;return a|0}qfa(c[d+4>>2]|0,c[a+4>>2]|0,f<<16>>16<<3|0)|0;qfa(c[d+8>>2]|0,c[a+8>>2]|0,b[e>>1]|0)|0;qfa(c[d+12>>2]|0,c[a+12>>2]|0,b[a>>1]<<1|0)|0;d=d+16|0;c[d>>2]=c[a+16>>2]&-2|c[d>>2]&1;a=0;return a|0}function Hh(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){e=33;return e|0}e=c[a>>2]|0;if(!((e|0)!=0&(b|0)!=0)){e=6;return e|0}if(c[b+16>>2]&1){a=b+4|0;d=c[a>>2]|0;if(d)Cd[c[e+8>>2]&255](e,d);c[a>>2]=0;a=b+8|0;d=c[a>>2]|0;if(d)Cd[c[e+8>>2]&255](e,d);c[a>>2]=0;a=b+12|0;d=c[a>>2]|0;if(d)Cd[c[e+8>>2]&255](e,d);c[a>>2]=0};c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;e=0;return e|0}function Ih(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!((a|0)!=0&(d|0)!=0))return;e=b[a+2>>1]|0;if(e<<16>>16){a=c[a+4>>2]|0;k=a+(e<<16>>16<<3)|0;f=c[a>>2]|0;h=c[a+4>>2]|0;if(e<<16>>16>1){i=a;j=a+8|0;g=f;e=h;a=h;while(1){l=c[i+8>>2]|0;h=(l|0)<(f|0)?l:f;g=(l|0)>(g|0)?l:g;f=c[i+12>>2]|0;a=(f|0)<(a|0)?f:a;e=(f|0)>(e|0)?f:e;f=i+16|0;if(f>>>0>>0){i=j;j=f;f=h}else{f=h;break}}}else{g=f;e=h;a=h}}else{g=0;f=0;e=0;a=0}c[d>>2]=f;c[d+8>>2]=g;c[d+4>>2]=a;c[d+12>>2]=e;return}function Jh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if(!a){m=0;return m|0}d=b[a+2>>1]|0;if(d<<16>>16<1){m=0;return m|0}m=c[a+4>>2]|0;k=m+(d<<16>>16<<3)|0;e=c[m>>2]|0;h=c[m+4>>2]|0;if(d<<16>>16>1){i=m;j=m+8|0;f=e;d=e;g=h;e=h;while(1){l=c[i+8>>2]|0;d=(l|0)<(d|0)?l:d;f=(l|0)>(f|0)?l:f;l=c[i+12>>2]|0;h=(l|0)<(e|0)?l:e;g=(l|0)>(g|0)?l:g;e=i+16|0;if(e>>>0>>0){i=j;j=e;e=h}else{i=h;break}}}else{f=e;d=e;g=h;i=h}d=((d|0)<0?0-d|0:d)|((f|0)<0?0-f|0:f);e=d>>>0>65535;d=e?d>>>16:d;e=e?16:0;if(d>>>0>255){d=d>>>8;e=e|8}if(d>>>0>15){d=d>>>4;e=e+4|0}if(d>>>0>3){d=d>>>2;e=e+2|0}l=e+-14+(d>>>0>1&1)|0;l=(l|0)>0?l:0;d=g-i|0;e=d>>>0>65535;d=e?d>>>16:d;e=e?16:0;if(d>>>0>255){d=d>>>8;e=e|8}if(d>>>0>15){d=d>>>4;e=e+4|0}if(d>>>0>3){d=d>>>2;e=e+2|0}k=e+-14+(d>>>0>1&1)|0;k=(k|0)>0?k:0;d=b[a>>1]|0;if(d<<16>>16>0){j=c[a+12>>2]|0;i=d<<16>>16;d=0;a=0;e=0;while(1){h=b[j+(a<<1)>>1]|0;if((e|0)<=(h|0)){f=c[m+(h<<3)>>2]|0;g=c[m+(h<<3)+4>>2]|0;while(1){n=f;f=c[m+(e<<3)>>2]|0;o=g;g=c[m+(e<<3)+4>>2]|0;d=(da(g-o>>k,f+n>>l)|0)+d|0;if((e|0)>=(h|0))break;else e=e+1|0}}a=a+1|0;if((a|0)>=(i|0))break;else e=h+1|0}if((d|0)>0){o=1;return o|0}}else d=0;o=(d>>31)+2&-2;return o|0}function Kh(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;o=s+32|0;l=s;m=s+16|0;n=e+20|0;b=c[n>>2]|0;do if(!b){b=c[e+4>>2]|0;if(b>>>0>>0){g=85;i=s;return g|0}}else if(!(Xd[b&255](e,f,0,0)|0)){b=c[e+4>>2]|0;break}else{g=85;i=s;return g|0}while(0);q=e+8|0;c[q>>2]=f;p=e+4|0;if(b>>>0<=f>>>0){g=85;i=s;return g|0}j=c[n>>2]|0;if(!j){b=b-f|0;b=b>>>0>16?16:b;qfa(l|0,(c[e>>2]|0)+f|0,b|0)|0}else b=Xd[j&255](e,f,l,16)|0;c[q>>2]=b+f;if(b>>>0<16){g=85;i=s;return g|0}k=(d[l+1>>0]<<16|d[l>>0]<<24|d[l+2>>0]<<8|d[l+3>>0])+f|0;c[h>>2]=k;h=d[l+5>>0]<<16|d[l+4>>0]<<24|d[l+6>>0]<<8|d[l+7>>0];b=h+f|0;if((h|0)==0?1:((d[l+9>>0]<<16|d[l+8>>0]<<24|d[l+10>>0]<<8|d[l+11>>0])+k|0)!=(b|0)){g=2;i=s;return g|0}h=c[n>>2]|0;do if(!h){h=c[p>>2]|0;if(h>>>0>>0){g=85;i=s;return g|0}}else if(!(Xd[h&255](e,b,0,0)|0)){h=c[p>>2]|0;break}else{g=85;i=s;return g|0}while(0);c[q>>2]=b;a[m+15>>0]=(d[l+15>>0]|0)+1;if(h>>>0<=b>>>0){g=85;i=s;return g|0}j=c[n>>2]|0;if(!j){j=h-b|0;j=j>>>0>16?16:j;qfa(m|0,(c[e>>2]|0)+b|0,j|0)|0}else j=Xd[j&255](e,b,m,16)|0;k=j+b|0;c[q>>2]=k;if(j>>>0<16){g=85;i=s;return g|0}else{j=1;h=1;f=0}do{t=a[m+f>>0]|0;h=t<<24>>24==0?h:0;j=t<<24>>24==(a[l+f>>0]|0)?j:0;f=f+1|0}while((f|0)!=16);if(!(j|h)){t=2;i=s;return t|0}h=k+8|0;f=c[n>>2]|0;if(!f)if((c[p>>2]|0)>>>0>>0)f=k;else r=26;else if(!(Xd[f&255](e,h,0,0)|0))r=26;else f=c[q>>2]|0;if((r|0)==26){c[q>>2]=h;f=h}if((f+1|0)>>>0>=(c[p>>2]|0)>>>0){t=85;i=s;return t|0}h=c[n>>2]|0;do if(!h){h=(c[e>>2]|0)+f|0;if(!h){c[q>>2]=f+2;r=35}else{j=0;r=33}}else if((Xd[h&255](e,f,o,2)|0)==2){f=c[q>>2]|0;j=c[n>>2]|0;h=o;r=33;break}else{t=85;i=s;return t|0}while(0);if((r|0)==33){t=d[h>>0]<<8|d[h+1>>0];c[q>>2]=f+2;b=t+b|0;if(j){if(Xd[j&255](e,b,0,0)|0){t=85;i=s;return t|0}}else r=35}if((r|0)==35)if((c[p>>2]|0)>>>0>>0){t=85;i=s;return t|0}c[q>>2]=b;c[g>>2]=b;t=0;i=s;return t|0}function Lh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=a+8|0;h=c[g>>2]|0;e=c[a+4>>2]|0;if(e>>>0<=h>>>0){d=85;return d|0}f=c[a+20>>2]|0;if(!f){e=e-h|0;e=e>>>0>d>>>0?d:e;qfa(b|0,(c[a>>2]|0)+h|0,e|0)|0}else e=Xd[f&255](a,h,b,d)|0;c[g>>2]=e+h;d=e>>>0>>0?85:0;return d|0}function Mh(a,b){a=a|0;b=b|0;var d=0,e=0;if((b|0)<0){e=85;return e|0}e=a+8|0;b=(c[e>>2]|0)+b|0;d=c[a+20>>2]|0;if(!d){if((c[a+4>>2]|0)>>>0>>0){e=85;return e|0}}else if(Xd[d&255](a,b,0,0)|0){e=85;return e|0}c[e>>2]=b;e=0;return e|0}function Nh(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;e=k;c[b>>2]=0;h=a+8|0;f=c[h>>2]|0;do if((f+1|0)>>>0<(c[a+4>>2]|0)>>>0){g=c[a+20>>2]|0;if(!g){e=(c[a>>2]|0)+f|0;if(!e)e=0;else j=6}else{if((Xd[g&255](a,f,e,2)|0)!=2)break;f=c[h>>2]|0;j=6}if((j|0)==6)e=((d[e>>0]|0)<<8|(d[e+1>>0]|0))&65535;c[h>>2]=f+2;j=e;i=k;return j|0}while(0);c[b>>2]=85;j=0;i=k;return j|0}function Oh(a,e,f,g,h,j,k){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+16|0;w=z+4|0;v=z;y=c[a>>2]|0;u=e+20|0;a=c[u>>2]|0;do if(!a){a=c[e+4>>2]|0;if(a>>>0>>0){y=85;i=z;return y|0}}else if(!(Xd[a&255](e,f,0,0)|0)){a=c[e+4>>2]|0;break}else{y=85;i=z;return y|0}while(0);t=e+8|0;c[t>>2]=f;s=e+4|0;if((f+1|0)>>>0>=a>>>0){y=85;i=z;return y|0}a=c[u>>2]|0;do if(!a){a=(c[e>>2]|0)+f|0;if(!a){r=e;l=f;q=1}else{m=f;l=e;x=10}}else if((Xd[a&255](e,f,v,2)|0)==2){m=c[t>>2]|0;l=e;a=v;x=10;break}else{y=85;i=z;return y|0}while(0);if((x|0)==10){r=l;l=m;q=((d[a>>0]|0)<<8|(d[a+1>>0]|0))+1|0}m=l+2|0;c[t>>2]=m;p=0;while(1){n=c[s>>2]|0;if((m+3|0)>>>0>=n>>>0){a=85;x=77;break}a=c[u>>2]|0;if(!a){l=(c[r>>2]|0)+m|0;if(!l){a=m;o=0}else{a=m;x=18}}else{if((Xd[a&255](e,m,w,4)|0)!=4){a=85;x=77;break}a=c[t>>2]|0;n=c[s>>2]|0;l=w;x=18}if((x|0)==18){x=0;o=(d[l+1>>0]|0)<<16|(d[l>>0]|0)<<24|(d[l+2>>0]|0)<<8|(d[l+3>>0]|0)}l=a+4|0;c[t>>2]=l;if((a+5|0)>>>0>=n>>>0){a=85;x=77;break}a=c[u>>2]|0;if(!a){m=(c[r>>2]|0)+l|0;if(!m){a=l;l=1}else{a=l;x=24}}else{if((Xd[a&255](e,l,v,2)|0)!=2){a=85;x=77;break}a=c[t>>2]|0;n=c[s>>2]|0;m=v;x=24}if((x|0)==24){x=0;l=((d[m>>0]|0)<<8|(d[m+1>>0]|0))+1|0}m=a+2|0;c[t>>2]=m;if((a+3|0)>>>0>=n>>>0){a=85;x=77;break}a=c[u>>2]|0;if(!a){n=(c[r>>2]|0)+m|0;if(!n)a=0;else{a=m;x=30}}else{if((Xd[a&255](e,m,v,2)|0)!=2){a=85;x=77;break}a=c[t>>2]|0;n=v;x=30}if((x|0)==30){x=0;m=a;a=(d[n>>0]|0)<<8|(d[n+1>>0]|0)}m=m+2|0;c[t>>2]=m;p=p+1|0;if((o|0)==(h|0)){x=32;break}if((p|0)>=(q|0)){a=1;x=77;break}}if((x|0)==32){c[k>>2]=l;a=a+f|0;l=c[u>>2]|0;if(!l){if((c[s>>2]|0)>>>0>>0){y=85;i=z;return y|0}}else if(Xd[l&255](e,a,0,0)|0){y=85;i=z;return y|0}c[t>>2]=a;a=c[k>>2]|0;if((a|0)<0){y=6;i=z;return y|0}do if(a){if((a|0)>268435455){y=10;i=z;return y|0}l=a<<3;a=Pd[c[y+4>>2]&511](y,l)|0;m=(a|0)==0;if(m)a=0;else sfa(a|0,0,l|0)|0;if(m){y=64;i=z;return y|0}else{sfa(a|0,0,l|0)|0;p=a;break}}else p=0;while(0);a=c[k>>2]|0;a:do if((a|0)>0){m=c[t>>2]|0;a=0;while(1){if((m+1|0)>>>0>=(c[s>>2]|0)>>>0)break;l=c[u>>2]|0;if(!l){l=(c[r>>2]|0)+m|0;if(!l){n=0;l=0}else{n=0;x=49}}else{if((Xd[l&255](e,m,v,2)|0)!=2)break;m=c[t>>2]|0;n=c[u>>2]|0;l=v;x=49}if((x|0)==49){x=0;l=((d[l>>0]|0)<<8|(d[l+1>>0]|0))&65535}c[t>>2]=m+2;b[p+(a<<3)>>1]=l;o=m+4|0;if(!n){l=c[s>>2]|0;if(l>>>0>>0){a=85;break a}}else{if(Xd[n&255](e,o,0,0)|0){a=85;break a}l=c[s>>2]|0}c[t>>2]=o;if((m+7|0)>>>0>=l>>>0){a=85;break a}l=c[u>>2]|0;if(!l){l=(c[r>>2]|0)+o|0;if(!l){c[t>>2]=m+8;m=m+12|0;l=0;x=63}else{m=o;n=0;x=61}}else{if((Xd[l&255](e,o,w,4)|0)!=4){a=85;break a}m=c[t>>2]|0;n=c[u>>2]|0;l=w;x=61}if((x|0)==61){x=0;l=(d[l+2>>0]|0)<<8|(d[l+1>>0]|0)<<16|(d[l+3>>0]|0);c[t>>2]=m+4;m=m+8|0;if(n){if(Xd[n&255](e,m,0,0)|0){a=85;break a}}else x=63}if((x|0)==63){x=0;if((c[s>>2]|0)>>>0>>0){a=85;break a}}c[t>>2]=m;c[p+(a<<3)+4>>2]=l;a=a+1|0;l=c[k>>2]|0;if((a|0)>=(l|0)){a=l;x=65;break a}}b[p+(a<<3)>>1]=0;a=85}else x=65;while(0);do if((x|0)==65){Tca(p,a,8,187);a=c[k>>2]|0;if((a|0)<0)a=6;else{if(!a)a=0;else{if((a|0)>536870911){a=10;break}l=a<<2;a=Pd[c[y+4>>2]&511](y,l)|0;m=(a|0)==0;if(m)a=0;else sfa(a|0,0,l|0)|0;if(m){a=64;break}sfa(a|0,0,l|0)|0}if((c[k>>2]|0)>0){l=0;do{c[a+(l<<2)>>2]=(c[p+(l<<3)+4>>2]|0)+g;l=l+1|0}while((l|0)<(c[k>>2]|0))}c[j>>2]=a;a=0}}while(0);if(!p){y=a;i=z;return y|0}Cd[c[y+8>>2]&255](y,p);y=a;i=z;return y|0}else if((x|0)==77){i=z;return a|0}return 0}function Ph(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;e=k;c[b>>2]=0;h=a+8|0;f=c[h>>2]|0;do if((f+3|0)>>>0<(c[a+4>>2]|0)>>>0){g=c[a+20>>2]|0;if(!g){e=(c[a>>2]|0)+f|0;if(!e)e=0;else j=6}else{if((Xd[g&255](a,f,e,4)|0)!=4)break;f=c[h>>2]|0;j=6}if((j|0)==6)e=(d[e+1>>0]|0)<<16|(d[e>>0]|0)<<24|(d[e+2>>0]|0)<<8|(d[e+3>>0]|0);c[h>>2]=f+4;j=e;i=k;return j|0}while(0);c[b>>2]=85;j=0;i=k;return j|0}function Qh(a){a=a|0;return c[a+8>>2]|0}function Rh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[a+4>>2]|0;if(f>>>0<=b>>>0){a=85;return a|0}g=c[a+20>>2]|0;if(!g){f=f-b|0;f=f>>>0>e>>>0?e:f;qfa(d|0,(c[a>>2]|0)+b|0,f|0)|0}else f=Xd[g&255](a,b,d,e)|0;c[a+8>>2]=f+b;a=f>>>0>>0?85:0;return a|0}function Sh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=a+8|0;e=c[h>>2]|0;f=c[a+4>>2]|0;if(f>>>0<=e>>>0){h=0;return h|0}g=c[a+20>>2]|0;if(!g){g=f-e|0;d=g>>>0>d>>>0?d:g;qfa(b|0,(c[a>>2]|0)+e|0,d|0)|0;e=d}else e=Xd[g&255](a,e,b,d)|0;c[h>>2]=(c[h>>2]|0)+e;h=e;return h|0}function Th(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;b=Uh(a,b)|0;if(b)return b|0;e=a+32|0;c[d>>2]=c[e>>2];c[e>>2]=0;c[a+36>>2]=0;return b|0}function Uh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=a+20|0;e=c[d>>2]|0;if(!e){d=a+8|0;e=c[d>>2]|0;i=c[a+4>>2]|0;if(i>>>0<=e>>>0|(i-e|0)>>>0>>0){b=85;return b|0}i=c[a>>2]|0;c[a+32>>2]=i+e;b=e+b|0;c[a+36>>2]=i+b;c[d>>2]=b;b=0;return b|0}i=c[a+28>>2]|0;if((c[a+4>>2]|0)>>>0>>0){b=85;return b|0}do if((b|0)>0){f=Pd[c[i+4>>2]&511](i,b)|0;c[a>>2]=f;if(!f){b=64;return b|0}else{e=c[d>>2]|0;g=a;break}}else{d=b>>31&6;c[a>>2]=0;if(!d){g=a;f=0}else{b=d;return b|0}}while(0);h=a+8|0;f=Xd[e&255](a,c[h>>2]|0,f,b)|0;d=c[g>>2]|0;if(f>>>0>>0){if(d)Cd[c[i+8>>2]&255](i,d);c[g>>2]=0;d=0;e=85}else e=0;c[a+32>>2]=d;c[a+36>>2]=d+b;c[h>>2]=(c[h>>2]|0)+f;b=e;return b|0}function Vh(a,b){a=a|0;b=b|0;var d=0;if(!a){c[b>>2]=0;return}if(!(c[a+20>>2]|0)){c[b>>2]=0;return}a=c[a+28>>2]|0;d=c[b>>2]|0;if(d)Cd[c[a+8>>2]&255](a,d);c[b>>2]=0;c[b>>2]=0;return}function Wh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((b|0)>0){a=Pd[c[a+4>>2]&511](a,b)|0;e=a;a=(a|0)==0?64:0}else{e=0;a=b>>31&6}c[d>>2]=a;return e|0}function Xh(a){a=a|0;var b=0,d=0;if(c[a+20>>2]|0){b=c[a+28>>2]|0;d=c[a>>2]|0;if(d)Cd[c[b+8>>2]&255](b,d);c[a>>2]=0}c[a+32>>2]=0;c[a+36>>2]=0;return}function Yh(b){b=b|0;var d=0,e=0;d=b+32|0;e=c[d>>2]|0;if(e>>>0>=(c[b+36>>2]|0)>>>0){b=0;return b|0}c[d>>2]=e+1;b=a[e>>0]|0;return b|0}function Zh(a){a=a|0;var b=0,e=0,f=0;b=a+32|0;e=c[b>>2]|0;f=e+1|0;if(f>>>0>=(c[a+36>>2]|0)>>>0){a=e;f=0;c[b>>2]=a;return f|0}a=e+2|0;f=((d[e>>0]|0)<<8|(d[f>>0]|0))&65535;c[b>>2]=a;return f|0}function _h(a){a=a|0;var b=0,e=0,f=0;b=a+32|0;e=c[b>>2]|0;f=e+1|0;if(f>>>0>=(c[a+36>>2]|0)>>>0){a=e;f=0;c[b>>2]=a;return f|0}a=e+2|0;f=((d[f>>0]|0)<<8|(d[e>>0]|0))&65535;c[b>>2]=a;return f|0}function $h(a){a=a|0;var b=0,e=0,f=0;b=a+32|0;e=c[b>>2]|0;f=e+3|0;if(f>>>0>=(c[a+36>>2]|0)>>>0){a=e;f=0;c[b>>2]=a;return f|0}a=e+4|0;f=(d[e+1>>0]|0)<<16|(d[e>>0]|0)<<24|(d[e+2>>0]|0)<<8|(d[f>>0]|0);c[b>>2]=a;return f|0}function ai(a){a=a|0;var b=0,e=0,f=0;b=a+32|0;e=c[b>>2]|0;f=e+3|0;if(f>>>0>=(c[a+36>>2]|0)>>>0){a=e;f=0;c[b>>2]=a;return f|0}a=e+4|0;f=(d[e+2>>0]|0)<<16|(d[f>>0]|0)<<24|(d[e+1>>0]|0)<<8|(d[e>>0]|0);c[b>>2]=a;return f|0}function bi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j;a[g>>0]=0;c[d>>2]=0;e=c[b+20>>2]|0;h=b+8|0;f=c[h>>2]|0;if(!e)if(f>>>0<(c[b+4>>2]|0)>>>0){e=a[(c[b>>2]|0)+f>>0]|0;a[g>>0]=e;b=6}else b=7;else if((Xd[e&255](b,f,g,1)|0)==1){f=c[h>>2]|0;e=a[g>>0]|0;b=6}else b=7;if((b|0)==6){c[h>>2]=f+1;h=e;i=j;return h|0}else if((b|0)==7){c[d>>2]=85;h=0;i=j;return h|0}return 0}function ci(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;e=k;c[b>>2]=0;h=a+8|0;f=c[h>>2]|0;do if((f+1|0)>>>0<(c[a+4>>2]|0)>>>0){g=c[a+20>>2]|0;if(!g){e=(c[a>>2]|0)+f|0;if(!e)e=0;else j=6}else{if((Xd[g&255](a,f,e,2)|0)!=2)break;f=c[h>>2]|0;j=6}if((j|0)==6)e=((d[e+1>>0]|0)<<8|(d[e>>0]|0))&65535;c[h>>2]=f+2;j=e;i=k;return j|0}while(0);c[b>>2]=85;j=0;i=k;return j|0}function di(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;e=k;c[b>>2]=0;h=a+8|0;f=c[h>>2]|0;do if((f+2|0)>>>0<(c[a+4>>2]|0)>>>0){g=c[a+20>>2]|0;if(!g){e=(c[a>>2]|0)+f|0;if(!e)e=0;else j=6}else{if((Xd[g&255](a,f,e,3)|0)!=3)break;f=c[h>>2]|0;j=6}if((j|0)==6)e=(d[e+1>>0]|0)<<8|(d[e>>0]|0)<<16|(d[e+2>>0]|0);c[h>>2]=f+3;j=e;i=k;return j|0}while(0);c[b>>2]=85;j=0;i=k;return j|0}function ei(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;e=k;c[b>>2]=0;h=a+8|0;f=c[h>>2]|0;do if((f+3|0)>>>0<(c[a+4>>2]|0)>>>0){g=c[a+20>>2]|0;if(!g){e=(c[a>>2]|0)+f|0;if(!e)e=0;else j=6}else{if((Xd[g&255](a,f,e,4)|0)!=4)break;f=c[h>>2]|0;j=6}if((j|0)==6)e=(d[e+2>>0]|0)<<16|(d[e+3>>0]|0)<<24|(d[e+1>>0]|0)<<8|(d[e>>0]|0);c[h>>2]=f+4;j=e;i=k;return j|0}while(0);c[b>>2]=85;j=0;i=k;return j|0}function fi(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;if(!((g|0)!=0&(f|0)!=0)){f=6;return f|0}p=f+32|0;q=f+36|0;n=0;a:while(1){i=c[p>>2]|0;b:while(1){l=a[g>>0]|0;switch(l&255|0){case 14:case 15:{m=i+2|0;j=16;k=(d[i+1>>0]|0)<<8|(d[i>>0]|0);o=18;break}case 25:case 24:{j=d[g+1>>0]|0;k=i+j|0;if(k>>>0>(c[q>>2]|0)>>>0){j=85;g=n;break a}if(l<<24>>24==24){qfa(h+(e[g+2>>1]|0)|0,i|0,j|0)|0;i=k}else i=k;break}case 9:case 8:{m=i+1|0;j=24;k=d[i>>0]|0;o=18;break}case 22:case 23:{m=i+3|0;j=8;k=(d[i+1>>0]|0)<<8|(d[i+2>>0]|0)<<16|(d[i>>0]|0);o=18;break}case 12:case 13:{m=i+2|0;j=16;k=(d[i>>0]|0)<<8|(d[i+1>>0]|0);o=18;break}case 18:case 19:{m=i+4|0;j=0;k=(d[i+2>>0]|0)<<16|(d[i+3>>0]|0)<<24|(d[i+1>>0]|0)<<8|(d[i>>0]|0);o=18;break}case 20:case 21:{m=i+3|0;j=8;k=(d[i+1>>0]|0)<<8|(d[i>>0]|0)<<16|(d[i+2>>0]|0);o=18;break}case 16:case 17:{m=i+4|0;j=0;k=(d[i+1>>0]|0)<<16|(d[i>>0]|0)<<24|(d[i+2>>0]|0)<<8|(d[i+3>>0]|0);o=18;break}case 4:break b;default:{g=n;o=17;break a}}do if((o|0)==18){o=0;if(l&1)k=k<>j;i=h+(e[g+2>>1]|0)|0;j=d[g+1>>0]|0;if((j|0)==2){b[i>>1]=k;i=m;break}else if((j|0)==1){a[i>>0]=k;i=m;break}else if((j|0)==4){c[i>>2]=k;i=m;break}else{c[i>>2]=k;i=m;break}}while(0);g=g+4|0}i=Uh(f,e[g+2>>1]|0)|0;if(i){j=i;g=n;break}g=g+4|0;n=1}if((o|0)==17){c[p>>2]=i;j=0}if(!(g<<24>>24)){f=j;return f|0}if(c[f+20>>2]|0){g=c[f+28>>2]|0;i=c[f>>2]|0;if(i)Cd[c[g+8>>2]&255](g,i);c[f>>2]=0}c[p>>2]=0;c[q>>2]=0;f=j;return f|0}function gi(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;if((a|0)<-2949120){e=-2949121-a|0;d=14408027;b=0;while(1){d=0-d|0;a=a+5898240|0;if((a|0)>=-2949120)break;else{h=b;b=d;d=h}}a=2949119-((e>>>0)%5898240|0)|0}else{b=14408027;d=0}if((a|0)>2949120){f=a+-2949121|0;e=b;while(1){b=0-d|0;a=a+-5898240|0;if((a|0)<=2949120){d=e;break}else{d=e;e=b}}e=((f>>>0)%5898240|0)+-2949119|0;f=3064;g=1;h=1}else{e=a;f=3064;g=1;h=1}while(1){a=d+g>>h;if((e|0)<0){e=(c[f>>2]|0)+e|0;a=a+b|0;d=d-(b+g>>h)|0}else{e=e-(c[f>>2]|0)|0;a=b-a|0;d=(b+g>>h)+d|0}h=h+1|0;if((h|0)==23)break;else{f=f+4|0;g=g<<1;b=a}}return a+128>>8|0}function hi(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=5898240-a|0;if((e|0)<-2949120){d=e;a=14408027;b=0;while(1){a=0-a|0;d=d+5898240|0;if((d|0)>=-2949120)break;else{h=b;b=a;a=h}}e=2949119-(((-2949121-e|0)>>>0)%5898240|0)|0}else{b=14408027;a=0}if((e|0)>2949120){d=e;while(1){a=0-a|0;d=d+-5898240|0;if((d|0)<=2949120){d=b;break}else{h=b;b=a;a=h}}e=(((e+-2949121|0)>>>0)%5898240|0)+-2949119|0;f=3064;g=1;h=1;b=a}else{f=3064;g=1;h=1;d=a}while(1){a=d+g>>h;if((e|0)<0){e=(c[f>>2]|0)+e|0;a=a+b|0;d=d-(b+g>>h)|0}else{e=e-(c[f>>2]|0)|0;a=b-a|0;d=(b+g>>h)+d|0}h=h+1|0;if((h|0)==23)break;else{f=f+4|0;g=g<<1;b=a}}return a+128>>8|0}function ii(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;if((a|0)<-2949120){e=-2949121-a|0;d=14408027;b=0;while(1){d=0-d|0;a=a+5898240|0;if((a|0)>=-2949120)break;else{h=b;b=d;d=h}}a=2949119-((e>>>0)%5898240|0)|0}else{b=14408027;d=0}if((a|0)>2949120){f=a+-2949121|0;e=b;while(1){b=0-d|0;a=a+-5898240|0;if((a|0)<=2949120){d=e;break}else{d=e;e=b}}a=((f>>>0)%5898240|0)+-2949119|0;f=3064;g=1;h=1}else{f=3064;g=1;h=1}while(1){e=d+g>>h;if((a|0)<0){a=(c[f>>2]|0)+a|0;e=e+b|0;d=d-(b+g>>h)|0}else{a=a-(c[f>>2]|0)|0;e=b-e|0;d=(b+g>>h)+d|0}h=h+1|0;if((h|0)==23){b=e;a=d;break}else{f=f+4|0;g=g<<1;b=e}}d=(a|0)<0?0-a|0:a;f=a^b;g=(b|0)<0?0-b|0:b;if(!g){h=2147483647;f=(f|0)<0;g=0-h|0;h=f?g:h;return h|0}e=d>>16;b=d<<16;a=g>>1;if(!e){h=((b+a|0)>>>0)/(g>>>0)|0;f=(f|0)<0;g=0-h|0;h=f?g:h;return h|0}a=b+a|0;e=(a>>>0>>0&1)+e|0;if(e>>>0>=g>>>0){h=2147483647;f=(f|0)<0;g=0-h|0;h=f?g:h;return h|0}b=a;d=32;a=0;while(1){a=a<<1;e=e<<1|b>>>31;if(e>>>0>=g>>>0){a=a|1;e=e-g|0}d=d+-1|0;if(!d)break;else b=b<<1}g=(f|0)<0;h=0-a|0;h=g?h:a;return h|0}function ji(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;if(!(b|a)){h=0;return h|0}d=((b|0)<0?0-b|0:b)|((a|0)<0?0-a|0:a);e=d>>>0>65535;d=e?d>>>16:d;e=e?16:0;if(d>>>0>255){d=d>>>8;e=e|8}if(d>>>0>15){d=d>>>4;e=e+4|0}if(d>>>0>3){d=d>>>2;e=e+2|0}d=(d>>>0>1&1)+e|0;if((d|0)<30){h=29-d|0;a=a<>h;b=b>>h}e=0-a|0;if((b|0)>(a|0))if((b|0)>(e|0)){f=3064;g=1;h=1;d=5898240;i=b}else{f=3064;g=1;h=1;d=(b|0)>0?11796480:-11796480;i=e;e=0-b|0}else{e=(b|0)<(e|0);f=3064;g=1;h=1;d=e?-5898240:0;i=e?0-b|0:a;e=e?a:b}while(1){b=e+g>>h;if((e|0)>0){d=(c[f>>2]|0)+d|0;a=b+i|0;e=e-(i+g>>h)|0}else{d=d-(c[f>>2]|0)|0;a=i-b|0;e=(i+g>>h)+e|0}h=h+1|0;if((h|0)==23)break;else{f=f+4|0;g=g<<1;i=a}}if((d|0)>-1){h=d+16&-32;return h|0}else{h=0-(16-d&-32)|0;return h|0}return 0}function ki(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=c[a>>2]|0;k=a+4|0;f=c[k>>2]|0;if((b|0)==0|(f|g|0)==0)return;d=((f|0)<0?0-f|0:f)|((g|0)<0?0-g|0:g);e=d>>>0>65535;d=e?d>>>16:d;e=e?16:0;if(d>>>0>255){d=d>>>8;e=e|8}if(d>>>0>15){d=d>>>4;e=e+4|0}if(d>>>0>3){d=d>>>2;e=e+2|0}e=(d>>>0>1&1)+e|0;if((e|0)<30){j=29-e|0;d=f<>j;f=g>>j;j=29-e|0}if((b|0)<-2949120){g=-2949121-b|0;e=f;f=d;while(1){d=0-e|0;b=b+5898240|0;if((b|0)>=-2949120)break;else{e=f;f=d}}b=2949119-((g>>>0)%5898240|0)|0}if((b|0)>2949120){e=b+-2949121|0;while(1){d=0-d|0;b=b+-5898240|0;if((b|0)<=2949120)break;else{i=f;f=d;d=i}}b=((e>>>0)%5898240|0)+-2949119|0;g=3064;h=1;i=1;e=d}else{g=3064;h=1;i=1;e=f;f=d}while(1){d=f+h>>i;if((b|0)<0){b=(c[g>>2]|0)+b|0;d=d+e|0;f=f-(e+h>>i)|0}else{b=b-(c[g>>2]|0)|0;d=e-d|0;f=(e+h>>i)+f|0}i=i+1|0;if((i|0)==23)break;else{g=g+4|0;h=h<<1;e=d}}i=(d|0)<0?0-d|0:d;e=i>>>16;i=i&65535;g=(i*56281|0)+(e*23318|0)|0;i=(i*23318|0)>>>16;h=g+i|0;e=(h>>>16)+(e*56281|0)|0;e=h>>>0<(g>>>0>i>>>0?g:i)>>>0?e+65536|0:e;e=(d|0)>-1?e:0-e|0;i=(f|0)<0?0-f|0:f;d=i>>>16;i=i&65535;g=(i*56281|0)+(d*23318|0)|0;i=(i*23318|0)>>>16;h=g+i|0;d=(h>>>16)+(d*56281|0)|0;d=h>>>0<(g>>>0>i>>>0?g:i)>>>0?d+65536|0:d;d=(f|0)>-1?d:0-d|0;if((j|0)>0){i=1<>2]=e+i+(e>>31)>>j;c[k>>2]=d+i+(d>>31)>>j;return}else{i=0-j|0;c[a>>2]=e<>2]=d<>2]=b;c[a+4>>2]=0;ki(a,d);return}function mi(a,b){a=a|0;b=b|0;b=(b-a|0)%23592960|0;b=(b|0)<0?b+23592960|0:b;return ((b|0)>11796480?b+-23592960|0:b)|0}function ni(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;do if((d|b|e|0)>=0){if((e|0)==0|(b|0)==0){if(!f){f=0;d=0;break}Cd[c[a+8>>2]&255](a,f);f=0;d=0;break}if((2147483647/(b|0)|0|0)>=(e|0)){if(d){h=da(d,b)|0;d=da(e,b)|0;a=Xd[c[a+12>>2]&255](a,h,d,f)|0;d=(a|0)==0;f=d?f:a;d=d?64:0;break}b=da(e,b)|0;if((b|0)<=0){f=0;d=b>>31&6;break}f=Pd[c[a+4>>2]&511](a,b)|0;h=(f|0)==0;d=h?64:0;if(h)f=0;else sfa(f|0,0,b|0)|0}else d=10}else d=6;while(0);c[g>>2]=d;return f|0}function oi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if(b){e=(tfa(b|0)|0)+1|0;if((e|0)>0){a=Pd[c[a+4>>2]&511](a,e)|0;f=a;a=(a|0)==0?64:0}else{a=e;g=4}}else{a=0;g=4}if((g|0)==4){e=a;f=0;a=a>>31&6}if(!((a|0)==0&(b|0)!=0)){c[d>>2]=a;return f|0}qfa(f|0,b|0,e|0)|0;c[d>>2]=a;return f|0}function pi(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(d>>>0>1)while(1){e=a[c>>0]|0;if(!(e<<24>>24))break a;c=c+1|0;f=b+1|0;a[b>>0]=e;d=d+-1|0;if(d>>>0<=1){b=f;break}else b=f}while(0);a[b>>0]=0;return (a[c>>0]|0)!=0|0}function qi(a){a=a|0;var b=0;while(1){b=a+-1&a;if(!b)break;else a=b}return a|0}function ri(a){a=a|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;return}function si(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;f=c[a>>2]|0;c[k>>2]=0;a=c[b+8>>2]|0;if((b|0)==(d|0)){k=0;i=l;return k|0}j=b+12|0;if(!(c[j>>2]|0)){c[d+0>>2]=c[b+0>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[d+16>>2]=c[b+16>>2];c[d+20>>2]=c[b+20>>2];k=0;i=l;return k|0}g=da(c[b>>2]|0,(a|0)<0?0-a|0:a)|0;h=d+12|0;e=c[h>>2]|0;if(e){a=c[d+8>>2]|0;a=da((a|0)<0?0-a|0:a,c[d>>2]|0)|0;if((a|0)!=(g|0)){e=ni(f,1,a,g,e,k)|0;c[h>>2]=e}}else{e=Wh(f,g,k)|0;c[h>>2]=e}a=c[k>>2]|0;if(a){k=a;i=l;return k|0};c[d+0>>2]=c[b+0>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[d+16>>2]=c[b+16>>2];c[d+20>>2]=c[b+20>>2];c[h>>2]=e;qfa(e|0,c[j>>2]|0,g|0)|0;k=c[k>>2]|0;i=l;return k|0}function ti(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;s=t;c[s>>2]=0;if(!e){s=33;i=t;return s|0}n=c[e>>2]|0;o=f+18|0;if(((a[o>>0]|0)+-1|0)>>>0<7){m=g+8|0;l=da(c[m>>2]|0,c[g>>2]|0)|0;l=(l|0)<0?0-l|0:l;a[g+18>>0]=2;j=c[f>>2]|0;c[g>>2]=j;k=f+4|0;c[g+4>>2]=c[k>>2];k=c[k>>2]|0;if((h|0)>0){e=(k|0)%(h|0)|0;e=(e|0)==0?0:h-e|0}else e=0;e=k+e|0;c[m>>2]=e;if((e|0)>0?j>>>0>(4294967295/(e>>>0)|0)>>>0:0){s=6;i=t;return s|0}e=da(e,j)|0;if((e|0)>(l|0)?(p=g+12|0,c[p>>2]=ni(n,1,l,e,c[p>>2]|0,s)|0,p=c[s>>2]|0,(p|0)!=0):0){s=p;i=t;return s|0}}else c[s>>2]=6;switch(a[o>>0]|0){case 3:{h=c[f+12>>2]|0;k=c[g+12>>2]|0;b[g+16>>1]=4;e=c[f>>2]|0;if((e|0)>0){r=f+4|0;q=f+8|0;f=g+8|0;n=h;p=k;while(1){h=c[r>>2]|0;l=h>>2;if((l|0)>0){j=p+(l<<2)|0;k=l;h=n;m=p;while(1){o=a[h>>0]|0;g=o&255;a[m>>0]=(o&255)>>>6;a[m+1>>0]=g>>>4&3;a[m+2>>0]=g>>>2&3;a[m+3>>0]=g&3;k=k+-1|0;if((k|0)<=0)break;else{h=h+1|0;m=m+4|0}}h=c[r>>2]|0;o=n+l|0}else{o=n;j=p}h=h&3;if(h){k=d[o>>0]|0;while(1){a[j>>0]=k>>>6&3;h=h+-1|0;if((h|0)<=0)break;else{j=j+1|0;k=k<<2}}}e=e+-1|0;if((e|0)<=0)break;else{n=n+(c[q>>2]|0)|0;p=p+(c[f>>2]|0)|0}}}break}case 6:case 5:case 2:{k=c[f+4>>2]|0;j=c[f+12>>2]|0;h=c[g+12>>2]|0;l=c[f+8>>2]|0;m=c[g+8>>2]|0;b[g+16>>1]=256;e=c[f>>2]|0;if((e|0)>0)while(1){qfa(h|0,j|0,k|0)|0;e=e+-1|0;if((e|0)<=0)break;else{j=j+l|0;h=h+m|0}}break}case 1:{h=c[f+12>>2]|0;k=c[g+12>>2]|0;b[g+16>>1]=2;e=c[f>>2]|0;if((e|0)>0){q=f+4|0;f=f+8|0;n=g+8|0;l=h;p=k;while(1){h=c[q>>2]|0;o=h>>3;if((o|0)>0){m=o<<3;k=o;h=l;j=p;while(1){r=a[h>>0]|0;g=r&255;a[j>>0]=(r&255)>>>7;a[j+1>>0]=g>>>6&1;a[j+2>>0]=g>>>5&1;a[j+3>>0]=g>>>4&1;a[j+4>>0]=g>>>3&1;a[j+5>>0]=g>>>2&1;a[j+6>>0]=g>>>1&1;a[j+7>>0]=g&1;k=k+-1|0;if((k|0)<=0)break;else{h=h+1|0;j=j+8|0}}h=c[q>>2]|0;o=l+o|0;j=p+m|0}else{o=l;j=p}h=h&7;if(h){k=d[o>>0]|0;while(1){a[j>>0]=k>>>7&1;h=h+-1|0;if((h|0)<=0)break;else{j=j+1|0;k=k<<1}}}e=e+-1|0;if((e|0)<=0)break;else{l=l+(c[f>>2]|0)|0;p=p+(c[n>>2]|0)|0}}}break}case 4:{h=c[f+12>>2]|0;k=c[g+12>>2]|0;b[g+16>>1]=16;e=c[f>>2]|0;if((e|0)>0){q=f+4|0;f=f+8|0;p=g+8|0;o=h;while(1){h=c[q>>2]|0;n=h>>1;if((n|0)>0){j=k+(n<<1)|0;h=n;m=o;l=k;while(1){g=a[m>>0]|0;a[l>>0]=(g&255)>>>4;a[l+1>>0]=g&15;h=h+-1|0;if((h|0)<=0)break;else{m=m+1|0;l=l+2|0}}h=c[q>>2]|0;l=o+n|0}else{l=o;j=k}if(h&1)a[j>>0]=(d[l>>0]|0)>>>4;e=e+-1|0;if((e|0)<=0)break;else{o=o+(c[f>>2]|0)|0;k=k+(c[p>>2]|0)|0}}}break}case 7:{h=c[f+12>>2]|0;k=c[g+12>>2]|0;p=c[f+8>>2]|0;n=c[g+8>>2]|0;b[g+16>>1]=256;e=c[f>>2]|0;if((e|0)>0){o=f+4|0;m=h;l=k;while(1){h=c[o>>2]|0;if((h|0)>0){j=m;k=l;while(1){a[k>>0]=vi(j)|0;h=h+-1|0;if((h|0)<=0)break;else{j=j+4|0;k=k+1|0}}}e=e+-1|0;if((e|0)<=0)break;else{m=m+p|0;l=l+n|0}}}break}default:{}}s=c[s>>2]|0;i=t;return s|0}function ui(a,b){a=a|0;b=b|0;if(!a){a=33;return a|0}if(!b){a=6;return a|0}Ag(c[a>>2]|0,c[b+12>>2]|0);c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;a=0;return a|0}function vi(b){b=b|0;var c=0,e=0,f=0,g=0;e=a[b+3>>0]|0;c=e&255;if(!(e<<24>>24)){e=0;return e|0}e=d[b+2>>0]|0;g=d[b+1>>0]|0;f=og(d[b>>0]|0,65536,c)|0;b=og(g,65536,c)|0;e=og(e,65536,c)|0;f=qg(f,f)|0;b=qg(b,b)|0;e=qg(e,e)|0;f=qg(f,4731)|0;b=qg(b,46871)|0;e=(qg(65535-f-b-(qg(e,13933)|0)|0,c<<8)|0)>>>8&255;return e|0}function wi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+16|0;d=k;if(!b){h=6;i=k;return h|0}c[b>>2]=0;if(!a){h=6;i=k;return h|0}g=c[a+4>>2]|0;if(!g){h=6;i=k;return h|0}e=c[a>>2]|0;j=yg(c[e>>2]|0,c[g>>2]|0,d)|0;d=c[d>>2]|0;if(d){h=d;i=k;return h|0}c[j>>2]=e;f=j+4|0;c[f>>2]=g;d=j+8|0;c[d>>2]=c[g+4>>2];m=a+12|0;l=c[m+4>>2]|0;e=j+12|0;c[e>>2]=c[m>>2];c[e+4>>2]=l;c[d>>2]=c[a+8>>2];d=c[g+16>>2]|0;if((d|0)!=0?(h=Pd[d&511](a,j)|0,(h|0)!=0):0){if(!j){m=h;i=k;return m|0}e=c[c[j>>2]>>2]|0;d=c[(c[f>>2]|0)+12>>2]|0;if(d)Bd[d&511](j);Ag(e,j);m=h;i=k;return m|0}c[b>>2]=j;m=0;i=k;return m|0}function xi(a){a=a|0;var b=0,d=0;if(!a)return;b=c[c[a>>2]>>2]|0;d=c[(c[a+4>>2]|0)+12>>2]|0;if(d)Bd[d&511](a);Ag(b,a);return}function yi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j;if(!a){b=37;i=j;return b|0}g=c[a>>2]|0;if(!b){b=6;i=j;return b|0}d=c[a+72>>2]|0;if((d|0)==1651078259)e=3264;else if((d|0)!=1869968492){d=uh(g,d,0)|0;if(!d){b=18;i=j;return b|0}else e=d+20|0}else e=3296;h=yg(c[g>>2]|0,c[e>>2]|0,f)|0;d=c[f>>2]|0;if(d){b=d;i=j;return b|0}c[h>>2]=g;d=h+4|0;c[d>>2]=e;c[h+8>>2]=c[e+4>>2];c[h+12>>2]=c[a+64>>2]<<10;c[h+16>>2]=c[a+68>>2]<<10;f=Pd[c[e+8>>2]&511](h,a)|0;if(!f){c[b>>2]=h;b=0;i=j;return b|0}if(!h){b=f;i=j;return b|0}e=c[c[h>>2]>>2]|0;d=c[(c[d>>2]|0)+12>>2]|0;if(d)Bd[d&511](h);Ag(e,h);b=f;i=j;return b|0}function zi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+224|0;k=y+208|0;u=y;g=y+160|0;t=y+200|0;if(!a){a=6;i=y;return a|0}x=c[a>>2]|0;if(!x){a=6;i=y;return a|0}w=x+4|0;h=c[w>>2]|0;l=c[x>>2]|0;if(!((l|0)!=0&(h|0)!=0)){a=6;i=y;return a|0}if((h|0)==3264){a=0;i=y;return a|0}o=h+28|0;if(!(c[o>>2]|0)){a=6;i=y;return a|0}sfa(u|0,0,156)|0;f=g+0|0;j=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(j|0));q=u+156|0;c[q>>2]=g;c[u>>2]=l;p=u+72|0;c[p>>2]=c[h+4>>2];v=yg(c[l>>2]|0,52,k)|0;f=c[k>>2]|0;if(f){a=f;i=y;return a|0}c[v>>2]=l;l=v+4|0;c[l>>2]=3264;c[v+8>>2]=1651078259;f=(d|0)!=0;if((f?(m=c[w>>2]|0,(m|0)!=0):0)?(n=c[m+20>>2]|0,(n|0)!=0):0)Ud[n&255](x,0,d);h=Pd[c[o>>2]&511](x,u)|0;if(!h)h=vh(c[x>>2]|0,u,b)|0;j=e<<24>>24==0;if((j&f?(c[t>>2]=0-(c[d>>2]|0),c[t+4>>2]=0-(c[d+4>>2]|0),r=c[w>>2]|0,(r|0)!=0):0)?(s=c[r+20>>2]|0,(s|0)!=0):0)Ud[s&255](x,0,t);do if(!h){g=c[v>>2]|0;if((c[p>>2]|0)==1651078259){c[v+20>>2]=c[u+100>>2];c[v+24>>2]=c[u+104>>2];f=v+28|0;if(!(c[(c[q>>2]|0)+4>>2]&1)){ri(f);h=si(g,u+76|0,f)|0;if(h)break}else{u=u+76|0;c[f+0>>2]=c[u+0>>2];c[f+4>>2]=c[u+4>>2];c[f+8>>2]=c[u+8>>2];c[f+12>>2]=c[u+12>>2];c[f+16>>2]=c[u+16>>2];c[f+20>>2]=c[u+20>>2];u=(c[q>>2]|0)+4|0;c[u>>2]=c[u>>2]&-2}d=x+12|0;t=c[d+4>>2]|0;u=v+12|0;c[u>>2]=c[d>>2];c[u+4>>2]=t;if(!j){g=c[c[x>>2]>>2]|0;f=c[(c[w>>2]|0)+12>>2]|0;if(f)Bd[f&511](x);Ag(g,x)}c[a>>2]=v;a=0;i=y;return a|0}else h=18}while(0);if(!((h|0)!=0&(v|0)!=0)){a=h;i=y;return a|0}g=c[c[v>>2]>>2]|0;f=c[(c[l>>2]|0)+12>>2]|0;if(f)Bd[f&511](v);Ag(g,v);a=h;i=y;return a|0}function Ai(a){a=a|0;wh(a,2920)|0;wh(a,84912)|0;wh(a,86448)|0;wh(a,6544)|0;wh(a,10520)|0;wh(a,18888)|0;wh(a,88944)|0;wh(a,90368)|0;wh(a,18208)|0;wh(a,19536)|0;wh(a,20936)|0;wh(a,20856)|0;wh(a,82704)|0;wh(a,83464)|0;wh(a,84664)|0;wh(a,84744)|0;wh(a,84824)|0;wh(a,3368)|0;return}function Bi(a){a=a|0;var b=0,d=0;b=Ri()|0;if(!b){a=7;return a|0}d=Bh(b,a)|0;if(!d){Ai(c[a>>2]|0);a=0;return a|0}else{Si(b);a=d;return a|0}return 0}function Ci(a){a=a|0;var b=0;if(!a)return 0;b=c[a>>2]|0;Ch(a)|0;Si(b);return 0}function Di(a,b){a=a|0;b=b|0;return 7}function Ei(a,b){a=a|0;b=b|0;return 7}function Fi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j;if(!b){d=6;i=j;return d|0}f=c[b>>2]|0;h=yg(f,132,g)|0;e=c[g>>2]|0;if(!e){c[h+128>>2]=b;e=h+64|0;c[h+88>>2]=f;c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[h+84>>2]=-1;a[h+92>>0]=0;e=h+96|0;c[h+120>>2]=f;c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[h+116>>2]=-1;a[h+124>>0]=0;e=c[g>>2]|0}c[d>>2]=h;d=e;i=j;return d|0}function Gi(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;c[b+60>>2]=d;c[b+44>>2]=e;c[b+48>>2]=f;c[b+56>>2]=(g|0)<65536?65536:g;c[b+52>>2]=f;if(!b)return;c[b+64>>2]=0;c[b+84>>2]=-1;a[b+92>>0]=0;c[b+96>>2]=0;c[b+116>>2]=-1;a[b+124>>0]=0;return}function Hi(b){b=b|0;var d=0,e=0,f=0,g=0;if(!b)return;e=b+128|0;d=c[c[e>>2]>>2]|0;f=c[b+88>>2]|0;g=b+72|0;Ag(f,c[g>>2]|0);c[g>>2]=0;g=b+76|0;Ag(f,c[g>>2]|0);c[g>>2]=0;c[b+64>>2]=0;c[b+68>>2]=0;c[b+84>>2]=-1;a[b+92>>0]=0;g=c[b+120>>2]|0;f=b+104|0;Ag(g,c[f>>2]|0);c[f>>2]=0;f=b+108|0;Ag(g,c[f>>2]|0);c[f>>2]=0;c[b+96>>2]=0;c[b+100>>2]=0;c[b+116>>2]=-1;a[b+124>>0]=0;c[e>>2]=0;Ag(d,b);return}function Ii(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;I=i;i=i+32|0;H=I+24|0;x=I;t=I+8|0;G=I+16|0;s=c[e>>2]|0;z=b+8|0;y=c[z>>2]|0;c[G>>2]=s-y;E=e+4|0;A=c[E>>2]|0;u=b+12|0;B=c[u>>2]|0;F=G+4|0;c[F>>2]=A-B;if((s|0)==(y|0)&(A|0)==(B|0)){e=0;i=I;return e|0}A=ng(G)|0;B=ji(c[G>>2]|0,c[F>>2]|0)|0;f=b+60|0;g=B+5898240|0;li(G,c[f>>2]|0,g);y=b+20|0;if(!(a[y>>0]|0)){c[b+4>>2]=B;f=mi(c[b>>2]|0,B)|0;if(f){f=f>>>31;g=Dj(b,f,A)|0;if(g){e=g;i=I;return e|0}f=Ej(b,f^1,A)|0;if(f){e=f;i=I;return e|0}}}else{li(t,c[f>>2]|0,g);m=b+8|0;p=(c[t>>2]|0)+(c[m>>2]|0)|0;s=t+4|0;q=(c[s>>2]|0)+(c[u>>2]|0)|0;j=b+84|0;f=c[j>>2]|0;r=b+64|0;if((f|0)>-1){n=c[r>>2]|0;if(n>>>0>(f+1|0)>>>0){J=n+-1|0;c[r>>2]=J;k=c[b+72>>2]|0;J=k+(J<<3)|0;g=c[J+4>>2]|0;k=k+(f<<3)|0;c[k>>2]=c[J>>2];c[k+4>>2]=g;k=b+76|0;g=(c[k>>2]|0)+f|0;a[g>>0]=d[g>>0]|4;k=(c[k>>2]|0)+(n+-2)|0;a[k>>0]=d[k>>0]|8}else c[r>>2]=f;c[j>>2]=-1;f=b+80|0;a[f>>0]=0}else f=b+80|0;c[j>>2]=c[r>>2];a[f>>0]=0;k=b+80|0;j=c[r>>2]|0;do if(!(a[k>>0]|0)){if(((j|0)!=0?(h=j+-1|0,o=c[b+72>>2]|0,(1-p+(c[o+(h<<3)>>2]|0)|0)>>>0<3):0)?(1-q+(c[o+(h<<3)+4>>2]|0)|0)>>>0<3:0)break;l=b+68|0;o=c[l>>2]|0;n=j+1|0;c[H>>2]=0;do if(n>>>0>o>>>0){h=c[b+88>>2]|0;f=o;do f=f+16+(f>>>1)|0;while(f>>>0>>0);j=f;g=b+72|0;c[g>>2]=Dg(h,8,o,j,c[g>>2]|0,H)|0;f=c[H>>2]|0;if(!f){f=b+76|0;n=Dg(h,1,o,j,c[f>>2]|0,H)|0;c[f>>2]=n;f=c[H>>2]|0;if(!f){c[l>>2]=j;j=c[r>>2]|0;f=n;break}}a[k>>0]=0;J=f;i=I;return J|0}else{g=b+72|0;f=c[b+76>>2]|0}while(0);l=(c[g>>2]|0)+(j<<3)|0;c[l>>2]=p;c[l+4>>2]=q;a[f+j>>0]=1;c[r>>2]=(c[r>>2]|0)+1;l=22}else{l=(c[b+72>>2]|0)+(j+-1<<3)|0;c[l>>2]=p;c[l+4>>2]=q;l=22}while(0);if((l|0)==22)a[k>>0]=0;q=(c[m>>2]|0)-(c[t>>2]|0)|0;m=(c[u>>2]|0)-(c[s>>2]|0)|0;j=b+116|0;f=c[j>>2]|0;p=b+96|0;if((f|0)>-1){g=c[p>>2]|0;if(g>>>0>(f+1|0)>>>0){t=g+-1|0;c[p>>2]=t;J=c[b+104>>2]|0;t=J+(t<<3)|0;u=c[t+4>>2]|0;J=J+(f<<3)|0;c[J>>2]=c[t>>2];c[J+4>>2]=u;J=b+108|0;u=(c[J>>2]|0)+f|0;a[u>>0]=d[u>>0]|4;J=(c[J>>2]|0)+(g+-2)|0;a[J>>0]=d[J>>0]|8}else c[p>>2]=f;c[j>>2]=-1;f=b+112|0;a[f>>0]=0}else f=b+112|0;c[j>>2]=c[p>>2];a[f>>0]=0;o=b+112|0;g=c[p>>2]|0;do if(!(a[o>>0]|0)){if(((g|0)!=0?(v=g+-1|0,w=c[b+104>>2]|0,(1-q+(c[w+(v<<3)>>2]|0)|0)>>>0<3):0)?(1-m+(c[w+(v<<3)+4>>2]|0)|0)>>>0<3:0){f=0;break}n=b+100|0;l=c[n>>2]|0;j=g+1|0;c[x>>2]=0;if(j>>>0>l>>>0){k=c[b+120>>2]|0;f=l;do f=f+16+(f>>>1)|0;while(f>>>0>>0);g=f;h=b+104|0;c[h>>2]=Dg(k,8,l,g,c[h>>2]|0,x)|0;f=c[x>>2]|0;if(f){l=43;break}f=b+108|0;j=Dg(k,1,l,g,c[f>>2]|0,x)|0;c[f>>2]=j;f=c[x>>2]|0;if(f){l=43;break}c[n>>2]=g;g=c[p>>2]|0;f=j}else{h=b+104|0;f=c[b+108>>2]|0}l=(c[h>>2]|0)+(g<<3)|0;c[l>>2]=q;c[l+4>>2]=m;a[f+g>>0]=1;c[p>>2]=(c[p>>2]|0)+1;f=0;l=43}else{f=(c[b+104>>2]|0)+(g+-1<<3)|0;c[f>>2]=q;c[f+4>>2]=m;f=0;l=43}while(0);if((l|0)==43)a[o>>0]=0;c[b+24>>2]=B;a[y>>0]=0;c[b+36>>2]=A;if(f){J=f;i=I;return J|0}}f=c[G>>2]|0;h=c[F>>2]|0;q=b+64|0;r=1;a:while(1){o=f+(c[e>>2]|0)|0;p=h+(c[E>>2]|0)|0;g=q+16|0;j=c[q>>2]|0;do if(!(a[g>>0]|0)){if(((j|0)!=0?(C=j+-1|0,D=c[q+8>>2]|0,(1-o+(c[D+(C<<3)>>2]|0)|0)>>>0<3):0)?(1-p+(c[D+(C<<3)+4>>2]|0)|0)>>>0<3:0){g=h;break}n=q+4|0;m=c[n>>2]|0;j=j+1|0;c[H>>2]=0;if(j>>>0>m>>>0){l=c[q+24>>2]|0;f=m;do f=f+16+(f>>>1)|0;while(f>>>0>>0);j=f;h=q+8|0;c[h>>2]=Dg(l,8,m,j,c[h>>2]|0,H)|0;f=c[H>>2]|0;if(f){l=63;break a}k=q+12|0;c[k>>2]=Dg(l,1,m,j,c[k>>2]|0,H)|0;f=c[H>>2]|0;if(f){l=63;break a}c[n>>2]=j;f=k}else{h=q+8|0;f=q+12|0}J=c[q>>2]|0;l=(c[f>>2]|0)+J|0;J=(c[h>>2]|0)+(J<<3)|0;c[J>>2]=o;c[J+4>>2]=p;a[l>>0]=1;c[q>>2]=(c[q>>2]|0)+1;l=62}else{l=(c[q+8>>2]|0)+(j+-1<<3)|0;c[l>>2]=o;c[l+4>>2]=p;l=62}while(0);if((l|0)==62){l=0;a[g>>0]=1;f=c[G>>2]|0;g=c[F>>2]|0}f=0-f|0;c[G>>2]=f;h=0-g|0;c[F>>2]=h;if((r|0)<=0){l=65;break}else{q=q+32|0;r=r+-1|0}}if((l|0)==63){a[g>>0]=1;J=f;i=I;return J|0}else if((l|0)==65){c[b>>2]=B;G=e;e=c[G+4>>2]|0;J=z;c[J>>2]=c[G>>2];c[J+4>>2]=e;c[b+16>>2]=A;J=0;i=I;return J|0}return 0}function Ji(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0;Ca=i;i=i+320|0;Aa=Ca+316|0;za=Ca+312|0;xa=Ca+296|0;ta=Ca+16|0;va=Ca+8|0;ya=Ca;ua=Ca+304|0;wa=Ca+288|0;ba=ta+240|0;ca=b+8|0;h=c[e>>2]|0;sa=b+12|0;if(((((c[ca>>2]|0)+1-h|0)>>>0<3?(j=c[e+4>>2]|0,((c[sa>>2]|0)+1-j|0)>>>0<3):0)?(h+1-(c[f>>2]|0)|0)>>>0<3:0)?(j+1-(c[f+4>>2]|0)|0)>>>0<3:0){b=f;f=c[b+4>>2]|0;Ba=ca;c[Ba>>2]=c[b>>2];c[Ba+4>>2]=f;Ba=0;i=Ca;return Ba|0}E=f;D=c[E+4>>2]|0;C=ta;c[C>>2]=c[E>>2];c[C+4>>2]=D;C=e;D=c[C+4>>2]|0;E=ta+8|0;c[E>>2]=c[C>>2];c[E+4>>2]=D;E=ca;D=c[E+4>>2]|0;C=ta+16|0;c[C>>2]=c[E>>2];c[C+4>>2]=D;C=b+20|0;D=b+4|0;E=b+48|0;F=b+52|0;G=b+60|0;H=b+40|0;I=b+64|0;J=va+4|0;K=ya+4|0;L=ua+4|0;M=wa+4|0;N=b+8|0;O=xa+4|0;P=b+84|0;Q=b+64|0;R=b+72|0;B=b+76|0;aa=b+80|0;S=b+68|0;T=b+88|0;U=b+116|0;V=b+96|0;W=b+104|0;A=b+108|0;X=b+112|0;Y=b+100|0;Z=b+120|0;_=b+24|0;$=b+36|0;e=ta;t=1;a:while(1){while(1){n=c[b>>2]|0;if(e>>>0>=ba>>>0){l=n;z=n;y=e;break}p=e+8|0;l=c[p>>2]|0;q=e+16|0;h=l-(c[q>>2]|0)|0;r=e+12|0;m=c[r>>2]|0;s=e+20|0;j=m-(c[s>>2]|0)|0;l=(c[e>>2]|0)-l|0;o=e+4|0;m=(c[o>>2]|0)-m|0;k=(l+1|0)>>>0<3&(m|0)>-2&(m|0)<2;if((h+1|0)>>>0<3&(j|0)>-2&(j|0)<2)if(k){j=n;h=n}else{h=ji(l,m)|0;j=h}else{h=ji(h,j)|0;if(k)j=h;else{j=h;h=ji(l,m)|0}}z=mi(j,h)|0;if((((z|0)>-1?z:0-z|0)|0)<1966080){l=j;z=h;y=e;break}if(a[C>>0]|0)c[b>>2]=j;z=c[q>>2]|0;c[e+32>>2]=z;y=c[p>>2]|0;z=(y+z|0)/2|0;c[e+24>>2]=z;y=((c[e>>2]|0)+y|0)/2|0;c[p>>2]=y;c[q>>2]=(y+z|0)/2|0;z=c[s>>2]|0;c[e+36>>2]=z;y=c[r>>2]|0;z=(y+z|0)/2|0;c[e+28>>2]=z;y=((c[o>>2]|0)+y|0)/2|0;c[r>>2]=y;c[s>>2]=(y+z|0)/2|0;e=e+16|0;if(e>>>0>>0){Ba=124;break a}}do if(!(t<<24>>24)){x=mi(c[b>>2]|0,l)|0;if((((x|0)>-1?x:0-x|0)|0)>491520){x=y+16|0;Ba=c[x+4>>2]|0;g=ca;c[g>>2]=c[x>>2];c[g+4>>2]=Ba;c[D>>2]=l;c[E>>2]=0;g=mi(c[b>>2]|0,l)|0;if(g){e=g>>>31;g=Dj(b,e,0)|0;if(!g)g=Ej(b,e^1,0)|0}else g=0;c[E>>2]=c[F>>2];Ba=63}}else{if(!(a[C>>0]|0)){c[D>>2]=l;e=mi(c[b>>2]|0,l)|0;if(!e)break;e=e>>>31;g=Dj(b,e,0)|0;if(g){Ba=125;break a}g=Ej(b,e^1,0)|0;Ba=63;break}li(xa,c[G>>2]|0,l+5898240|0);n=(c[xa>>2]|0)+(c[N>>2]|0)|0;o=(c[O>>2]|0)+(c[sa>>2]|0)|0;g=c[P>>2]|0;if((g|0)>-1){e=c[Q>>2]|0;if(e>>>0>(g+1|0)>>>0){v=e+-1|0;c[Q>>2]=v;x=c[R>>2]|0;v=x+(v<<3)|0;w=c[v+4>>2]|0;x=x+(g<<3)|0;c[x>>2]=c[v>>2];c[x+4>>2]=w;x=(c[B>>2]|0)+g|0;a[x>>0]=d[x>>0]|4;x=(c[B>>2]|0)+(e+-2)|0;a[x>>0]=d[x>>0]|8}else c[Q>>2]=g;c[P>>2]=-1;a[aa>>0]=0}g=c[Q>>2]|0;c[P>>2]=g;a[aa>>0]=0;if(!(((g|0)!=0?(ea=g+-1|0,fa=c[R>>2]|0,(1-n+(c[fa+(ea<<3)>>2]|0)|0)>>>0<3):0)?(1-o+(c[fa+(ea<<3)+4>>2]|0)|0)>>>0<3:0)){j=c[S>>2]|0;e=g+1|0;c[Aa>>2]=0;if(e>>>0>j>>>0){h=c[T>>2]|0;g=j;do g=g+16+(g>>>1)|0;while(g>>>0>>0);e=g;c[R>>2]=Dg(h,8,j,e,c[R>>2]|0,Aa)|0;g=c[Aa>>2]|0;if(g){Ba=36;break a}h=Dg(h,1,j,e,c[B>>2]|0,Aa)|0;c[B>>2]=h;g=c[Aa>>2]|0;if(g){Ba=36;break a}c[S>>2]=e;e=c[Q>>2]|0;g=h}else{e=g;g=c[B>>2]|0}x=(c[R>>2]|0)+(e<<3)|0;c[x>>2]=n;c[x+4>>2]=o;a[g+e>>0]=1;c[Q>>2]=(c[Q>>2]|0)+1;a[aa>>0]=0}n=(c[N>>2]|0)-(c[xa>>2]|0)|0;o=(c[sa>>2]|0)-(c[O>>2]|0)|0;g=c[U>>2]|0;if((g|0)>-1){e=c[V>>2]|0;if(e>>>0>(g+1|0)>>>0){v=e+-1|0;c[V>>2]=v;x=c[W>>2]|0;v=x+(v<<3)|0;w=c[v+4>>2]|0;x=x+(g<<3)|0;c[x>>2]=c[v>>2];c[x+4>>2]=w;x=(c[A>>2]|0)+g|0;a[x>>0]=d[x>>0]|4;x=(c[A>>2]|0)+(e+-2)|0;a[x>>0]=d[x>>0]|8}else c[V>>2]=g;c[U>>2]=-1;a[X>>0]=0}g=c[V>>2]|0;c[U>>2]=g;a[X>>0]=0;if(((g|0)!=0?(ga=g+-1|0,ha=c[W>>2]|0,(1-n+(c[ha+(ga<<3)>>2]|0)|0)>>>0<3):0)?(1-o+(c[ha+(ga<<3)+4>>2]|0)|0)>>>0<3:0)g=0;else{j=c[Y>>2]|0;e=g+1|0;c[za>>2]=0;if(e>>>0>j>>>0){h=c[Z>>2]|0;g=j;do g=g+16+(g>>>1)|0;while(g>>>0>>0);e=g;c[W>>2]=Dg(h,8,j,e,c[W>>2]|0,za)|0;g=c[za>>2]|0;if(!g){h=Dg(h,1,j,e,c[A>>2]|0,za)|0;c[A>>2]=h;g=c[za>>2]|0;if(!g){c[Y>>2]=e;e=c[V>>2]|0;g=h;Ba=52}}}else{e=g;g=c[A>>2]|0;Ba=52}if((Ba|0)==52){Ba=(c[W>>2]|0)+(e<<3)|0;c[Ba>>2]=n;c[Ba+4>>2]=o;a[g+e>>0]=1;c[V>>2]=(c[V>>2]|0)+1;g=0}a[X>>0]=0}c[_>>2]=l;a[C>>0]=0;c[$>>2]=0;Ba=63}while(0);if((Ba|0)==63?(Ba=0,(g|0)!=0):0){Ba=125;break}s=(mi(l,z)|0)/2|0;r=s+l|0;x=c[G>>2]|0;s=rg(x,gi(s)|0)|0;if(!(a[H>>0]|0)){m=y+4|0;p=y+16|0;q=y+20|0;v=0}else{w=y+16|0;x=y+4|0;v=y+20|0;m=x;p=w;q=v;v=ji((c[y>>2]|0)-(c[w>>2]|0)|0,(c[x>>2]|0)-(c[v>>2]|0)|0)|0}t=y+8|0;u=y+12|0;x=I;w=0;while(1){e=(da(w,-11796480)|0)+5898240|0;li(va,s,r+e|0);c[va>>2]=(c[va>>2]|0)+(c[t>>2]|0);c[J>>2]=(c[J>>2]|0)+(c[u>>2]|0);li(ya,c[G>>2]|0,e+z|0);e=(c[ya>>2]|0)+(c[y>>2]|0)|0;c[ya>>2]=e;h=(c[K>>2]|0)+(c[m>>2]|0)|0;c[K>>2]=h;do if((a[H>>0]|0)!=0?(ia=x+8|0,ka=(c[ia>>2]|0)+((c[x>>2]|0)+-1<<3)|0,ja=c[ka>>2]|0,ka=c[ka+4>>2]|0,la=ji(e-ja|0,h-ka|0)|0,k=mi(v,la)|0,(((k|0)>-1?k:0-k|0)|0)>5898240):0){n=ji((c[p>>2]|0)-ja|0,(c[q>>2]|0)-ka|0)|0;e=ji((c[y>>2]|0)-(c[ya>>2]|0)|0,(c[m>>2]|0)-(c[K>>2]|0)|0)|0;c[ua>>2]=(c[ya>>2]|0)-ja;c[L>>2]=(c[K>>2]|0)-ka;j=ng(ua)|0;h=hi(la-e|0)|0;e=hi(n-e|0)|0;li(wa,og(j,(h|0)>-1?h:0-h|0,(e|0)>-1?e:0-e|0)|0,n);n=(c[wa>>2]|0)+ja|0;c[wa>>2]=n;e=(c[M>>2]|0)+ka|0;c[M>>2]=e;h=x+16|0;a[h>>0]=0;j=c[x>>2]|0;if(((j|0)!=0?(ma=j+-1|0,na=c[ia>>2]|0,((c[na+(ma<<3)>>2]|0)+1-n|0)>>>0<3):0)?((c[na+(ma<<3)+4>>2]|0)+1-e|0)>>>0<3:0)n=j;else{l=x+4|0;o=c[l>>2]|0;e=j+1|0;c[Aa>>2]=0;if(e>>>0>o>>>0){j=c[x+24>>2]|0;n=o;do n=n+16+(n>>>1)|0;while(n>>>0>>0);c[ia>>2]=Dg(j,8,o,n,c[ia>>2]|0,Aa)|0;e=c[Aa>>2]|0;if(e){g=e;Ba=81;break a}e=x+12|0;c[e>>2]=Dg(j,1,o,n,c[e>>2]|0,Aa)|0;j=c[Aa>>2]|0;if(j){g=j;Ba=81;break a}c[l>>2]=n}else e=x+12|0;k=c[x>>2]|0;n=(c[e>>2]|0)+k|0;o=wa;l=c[o+4>>2]|0;k=(c[ia>>2]|0)+(k<<3)|0;c[k>>2]=c[o>>2];c[k+4>>2]=l;a[n>>0]=1;n=(c[x>>2]|0)+1|0;c[x>>2]=n;a[h>>0]=0}if(!(((n|0)!=0?(oa=n+-1|0,pa=c[ia>>2]|0,((c[pa+(oa<<3)>>2]|0)+1-(c[ya>>2]|0)|0)>>>0<3):0)?((c[pa+(oa<<3)+4>>2]|0)+1-(c[K>>2]|0)|0)>>>0<3:0)){l=x+4|0;o=c[l>>2]|0;e=n+1|0;c[Aa>>2]=0;if(e>>>0>o>>>0){j=c[x+24>>2]|0;n=o;do n=n+16+(n>>>1)|0;while(n>>>0>>0);c[ia>>2]=Dg(j,8,o,n,c[ia>>2]|0,Aa)|0;e=c[Aa>>2]|0;if(e){g=e;Ba=93;break a}e=x+12|0;c[e>>2]=Dg(j,1,o,n,c[e>>2]|0,Aa)|0;j=c[Aa>>2]|0;if(j){g=j;Ba=93;break a}c[l>>2]=n}else e=x+12|0;k=c[x>>2]|0;n=(c[e>>2]|0)+k|0;o=ya;l=c[o+4>>2]|0;k=(c[ia>>2]|0)+(k<<3)|0;c[k>>2]=c[o>>2];c[k+4>>2]=l;a[n>>0]=1;n=(c[x>>2]|0)+1|0;c[x>>2]=n;a[h>>0]=0}k=x+4|0;l=c[k>>2]|0;e=n+2|0;c[Aa>>2]=0;if(e>>>0>l>>>0){o=c[x+24>>2]|0;n=l;do n=n+16+(n>>>1)|0;while(n>>>0>>0);c[ia>>2]=Dg(o,8,l,n,c[ia>>2]|0,Aa)|0;e=c[Aa>>2]|0;if(e){g=e;Ba=101;break a}j=x+12|0;c[j>>2]=Dg(o,1,l,n,c[j>>2]|0,Aa)|0;e=c[Aa>>2]|0;if(e){g=e;Ba=101;break a}c[k>>2]=n}else j=x+12|0;e=c[ia>>2]|0;o=c[x>>2]|0;l=c[j>>2]|0;Ea=va;Da=c[Ea+4>>2]|0;n=e+(o<<3)|0;c[n>>2]=c[Ea>>2];c[n+4>>2]=Da;n=o+1|0;e=e+(n<<3)|0;c[e>>2]=ja;c[e+4>>2]=ka;a[l+o>>0]=0;a[l+n>>0]=1;n=c[x>>2]|0;l=n+2|0;c[x>>2]=l;a[h>>0]=0;if(((l|0)!=0?(qa=n+1|0,ra=c[ia>>2]|0,((c[ra+(qa<<3)>>2]|0)+1-(c[ya>>2]|0)|0)>>>0<3):0)?((c[ra+(qa<<3)+4>>2]|0)+1-(c[K>>2]|0)|0)>>>0<3:0)break;l=c[k>>2]|0;e=n+3|0;c[Aa>>2]=0;if(e>>>0>l>>>0){o=c[x+24>>2]|0;n=l;do n=n+16+(n>>>1)|0;while(n>>>0>>0);e=n;c[ia>>2]=Dg(o,8,l,e,c[ia>>2]|0,Aa)|0;n=c[Aa>>2]|0;if(n){g=n;Ba=112;break a}c[j>>2]=Dg(o,1,l,e,c[j>>2]|0,Aa)|0;n=c[Aa>>2]|0;if(n){g=n;Ba=112;break a}c[k>>2]=e}Da=c[x>>2]|0;Ea=(c[j>>2]|0)+Da|0;l=ya;k=c[l+4>>2]|0;Da=(c[ia>>2]|0)+(Da<<3)|0;c[Da>>2]=c[l>>2];c[Da+4>>2]=k;a[Ea>>0]=1;c[x>>2]=(c[x>>2]|0)+1;a[h>>0]=0}else Ba=113;while(0);if((Ba|0)==113){Ba=0;k=x+4|0;o=c[k>>2]|0;e=(c[x>>2]|0)+2|0;c[Aa>>2]=0;if(e>>>0>o>>>0){l=c[x+24>>2]|0;n=o;do n=n+16+(n>>>1)|0;while(n>>>0>>0);j=x+8|0;c[j>>2]=Dg(l,8,o,n,c[j>>2]|0,Aa)|0;h=c[Aa>>2]|0;if(h){g=x;Ba=121;break a}e=x+12|0;c[e>>2]=Dg(l,1,o,n,c[e>>2]|0,Aa)|0;h=c[Aa>>2]|0;if(h){g=x;Ba=121;break a}c[k>>2]=n;h=j}else{h=x+8|0;e=x+12|0}l=c[h>>2]|0;k=c[x>>2]|0;Da=c[e>>2]|0;o=va;j=c[o+4>>2]|0;Ea=l+(k<<3)|0;c[Ea>>2]=c[o>>2];c[Ea+4>>2]=j;Ea=k+1|0;j=ya;o=c[j+4>>2]|0;l=l+(Ea<<3)|0;c[l>>2]=c[j>>2];c[l+4>>2]=o;a[Da+k>>0]=0;a[Da+Ea>>0]=1;c[x>>2]=(c[x>>2]|0)+2;a[x+16>>0]=0}w=w+1|0;if((w|0)>=2)break;else x=x+32|0}e=y+-16|0;c[b>>2]=z;if(e>>>0>>0){Ba=124;break}else t=0}if((Ba|0)==36){a[aa>>0]=0;Ea=g;i=Ca;return Ea|0}else if((Ba|0)==81){a[h>>0]=0;Ea=g;i=Ca;return Ea|0}else if((Ba|0)==93){a[h>>0]=0;Ea=g;i=Ca;return Ea|0}else if((Ba|0)==101){a[h>>0]=0;Ea=g;i=Ca;return Ea|0}else if((Ba|0)==112){a[h>>0]=0;Ea=g;i=Ca;return Ea|0}else if((Ba|0)==121){a[g+16>>0]=0;Ea=h;i=Ca;return Ea|0}else if((Ba|0)==124){Ba=f;Da=c[Ba+4>>2]|0;Ea=ca;c[Ea>>2]=c[Ba>>2];c[Ea+4>>2]=Da;Ea=0;i=Ca;return Ea|0}else if((Ba|0)==125){i=Ca;return g|0}return 0}function Ki(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0;Ia=i;i=i+368|0;Ga=Ia+344|0;Fa=Ia+328|0;Da=Ia+352|0;ya=Ia+32|0;Aa=Ia+24|0;Ba=Ia+8|0;Ea=Ia;za=Ia+336|0;Ca=Ia+16|0;ha=ya+256|0;ia=b+8|0;l=c[e>>2]|0;va=b+12|0;if(((((((c[ia>>2]|0)+1-l|0)>>>0<3?(m=c[e+4>>2]|0,((c[va>>2]|0)+1-m|0)>>>0<3):0)?(j=c[f>>2]|0,(l+1-j|0)>>>0<3):0)?(k=c[f+4>>2]|0,(m+1-k|0)>>>0<3):0)?(j+1-(c[g>>2]|0)|0)>>>0<3:0)?(k+1-(c[g+4>>2]|0)|0)>>>0<3:0){Fa=g;Ga=c[Fa+4>>2]|0;g=ia;c[g>>2]=c[Fa>>2];c[g+4>>2]=Ga;g=0;i=Ia;return g|0}N=g;O=c[N+4>>2]|0;P=ya;c[P>>2]=c[N>>2];c[P+4>>2]=O;P=f;O=c[P+4>>2]|0;N=ya+8|0;c[N>>2]=c[P>>2];c[N+4>>2]=O;N=e;O=c[N+4>>2]|0;P=ya+16|0;c[P>>2]=c[N>>2];c[P+4>>2]=O;P=ia;O=c[P+4>>2]|0;N=ya+24|0;c[N>>2]=c[P>>2];c[N+4>>2]=O;N=b+20|0;O=b+4|0;P=b+48|0;Q=b+52|0;R=b+60|0;S=b+40|0;T=b+64|0;U=Aa+4|0;V=Ba+4|0;W=Ea+4|0;X=za+4|0;Y=Ca+4|0;Z=b+8|0;_=Da+4|0;$=b+84|0;aa=b+64|0;ba=b+72|0;F=b+76|0;ga=b+80|0;ca=b+68|0;ea=b+88|0;fa=b+116|0;G=b+96|0;H=b+104|0;E=b+108|0;I=b+112|0;J=b+100|0;K=b+120|0;L=b+24|0;M=b+36|0;l=ya;y=1;a:while(1){while(1){n=c[b>>2]|0;if(l>>>0>=ha>>>0){o=n;f=n;D=n;break}r=l+16|0;m=c[r>>2]|0;s=l+24|0;j=m-(c[s>>2]|0)|0;t=l+20|0;f=c[t>>2]|0;u=l+28|0;k=f-(c[u>>2]|0)|0;v=l+8|0;p=c[v>>2]|0;m=p-m|0;w=l+12|0;q=c[w>>2]|0;f=q-f|0;p=(c[l>>2]|0)-p|0;x=l+4|0;q=(c[x>>2]|0)-q|0;e=(m+1|0)>>>0<3&(f|0)>-2&(f|0)<2;o=(p+1|0)>>>0<3&(q|0)>-2&(q|0)<2;do if((j+1|0)>>>0<3&(k|0)>-2&(k|0)<2)if(e){if(o){k=n;e=n;j=n;break}j=ji(p,q)|0;k=j;e=j;break}else{j=ji(m,f)|0;if(o){k=j;e=j;break}k=j;e=j;j=ji(p,q)|0;break}else{n=ji(j,k)|0;if(e){if(o){k=n;e=n;j=n;break}j=ji(p,q)|0;k=n;e=((mi(n,j)|0)/2|0)+n|0;break}else{j=ji(m,f)|0;if(o){k=n;e=j;break}k=n;e=j;j=ji(p,q)|0;break}}while(0);C=mi(k,e)|0;D=mi(e,j)|0;if((((C|0)>-1?C:0-C|0)|0)<1474560?(((D|0)>-1?D:0-D|0)|0)<1474560:0){o=k;f=e;D=j;break}if(a[N>>0]|0)c[b>>2]=k;B=c[s>>2]|0;c[l+48>>2]=B;A=c[v>>2]|0;D=c[r>>2]|0;C=((c[l>>2]|0)+A|0)/2|0;c[v>>2]=C;B=(D+B|0)/2|0;c[l+40>>2]=B;A=(D+A|0)/2|0;C=(A+C|0)/2|0;c[r>>2]=C;B=(A+B|0)/2|0;c[l+32>>2]=B;c[s>>2]=(B+C|0)/2|0;C=c[u>>2]|0;c[l+52>>2]=C;B=c[w>>2]|0;A=c[t>>2]|0;D=((c[x>>2]|0)+B|0)/2|0;c[w>>2]=D;C=(A+C|0)/2|0;c[l+44>>2]=C;B=(A+B|0)/2|0;D=(B+D|0)/2|0;c[t>>2]=D;C=(B+C|0)/2|0;c[l+36>>2]=C;c[u>>2]=(C+D|0)/2|0;l=l+24|0;if(l>>>0>>0){Ha=133;break a}}do if(!(y<<24>>24)){C=mi(c[b>>2]|0,o)|0;if((((C|0)>-1?C:0-C|0)|0)>368640){C=l+24|0;Ha=c[C+4>>2]|0;h=ia;c[h>>2]=c[C>>2];c[h+4>>2]=Ha;c[O>>2]=o;c[P>>2]=0;h=mi(c[b>>2]|0,o)|0;if(h){j=h>>>31;h=Dj(b,j,0)|0;if(!h)h=Ej(b,j^1,0)|0}else h=0;c[P>>2]=c[Q>>2];Ha=72}}else{if(!(a[N>>0]|0)){c[O>>2]=o;j=mi(c[b>>2]|0,o)|0;if(!j)break;j=j>>>31;h=Dj(b,j,0)|0;if(h){Ha=134;break a}h=Ej(b,j^1,0)|0;Ha=72;break}li(Da,c[R>>2]|0,o+5898240|0);n=(c[Da>>2]|0)+(c[Z>>2]|0)|0;m=(c[_>>2]|0)+(c[va>>2]|0)|0;h=c[$>>2]|0;if((h|0)>-1){j=c[aa>>2]|0;if(j>>>0>(h+1|0)>>>0){A=j+-1|0;c[aa>>2]=A;C=c[ba>>2]|0;A=C+(A<<3)|0;B=c[A+4>>2]|0;C=C+(h<<3)|0;c[C>>2]=c[A>>2];c[C+4>>2]=B;C=(c[F>>2]|0)+h|0;a[C>>0]=d[C>>0]|4;C=(c[F>>2]|0)+(j+-2)|0;a[C>>0]=d[C>>0]|8}else c[aa>>2]=h;c[$>>2]=-1;a[ga>>0]=0}h=c[aa>>2]|0;c[$>>2]=h;a[ga>>0]=0;if(!(((h|0)!=0?(ja=h+-1|0,ka=c[ba>>2]|0,(1-n+(c[ka+(ja<<3)>>2]|0)|0)>>>0<3):0)?(1-m+(c[ka+(ja<<3)+4>>2]|0)|0)>>>0<3:0)){e=c[ca>>2]|0;j=h+1|0;c[Ga>>2]=0;if(j>>>0>e>>>0){k=c[ea>>2]|0;h=e;do h=h+16+(h>>>1)|0;while(h>>>0>>0);j=h;c[ba>>2]=Dg(k,8,e,j,c[ba>>2]|0,Ga)|0;h=c[Ga>>2]|0;if(h){Ha=45;break a}k=Dg(k,1,e,j,c[F>>2]|0,Ga)|0;c[F>>2]=k;h=c[Ga>>2]|0;if(h){Ha=45;break a}c[ca>>2]=j;j=c[aa>>2]|0;h=k}else{j=h;h=c[F>>2]|0}C=(c[ba>>2]|0)+(j<<3)|0;c[C>>2]=n;c[C+4>>2]=m;a[h+j>>0]=1;c[aa>>2]=(c[aa>>2]|0)+1;a[ga>>0]=0}n=(c[Z>>2]|0)-(c[Da>>2]|0)|0;m=(c[va>>2]|0)-(c[_>>2]|0)|0;h=c[fa>>2]|0;if((h|0)>-1){j=c[G>>2]|0;if(j>>>0>(h+1|0)>>>0){A=j+-1|0;c[G>>2]=A;C=c[H>>2]|0;A=C+(A<<3)|0;B=c[A+4>>2]|0;C=C+(h<<3)|0;c[C>>2]=c[A>>2];c[C+4>>2]=B;C=(c[E>>2]|0)+h|0;a[C>>0]=d[C>>0]|4;C=(c[E>>2]|0)+(j+-2)|0;a[C>>0]=d[C>>0]|8}else c[G>>2]=h;c[fa>>2]=-1;a[I>>0]=0}h=c[G>>2]|0;c[fa>>2]=h;a[I>>0]=0;if(((h|0)!=0?(la=h+-1|0,ma=c[H>>2]|0,(1-n+(c[ma+(la<<3)>>2]|0)|0)>>>0<3):0)?(1-m+(c[ma+(la<<3)+4>>2]|0)|0)>>>0<3:0)h=0;else{e=c[J>>2]|0;j=h+1|0;c[Fa>>2]=0;if(j>>>0>e>>>0){k=c[K>>2]|0;h=e;do h=h+16+(h>>>1)|0;while(h>>>0>>0);j=h;c[H>>2]=Dg(k,8,e,j,c[H>>2]|0,Fa)|0;h=c[Fa>>2]|0;if(!h){k=Dg(k,1,e,j,c[E>>2]|0,Fa)|0;c[E>>2]=k;h=c[Fa>>2]|0;if(!h){c[J>>2]=j;j=c[G>>2]|0;h=k;Ha=61}}}else{j=h;h=c[E>>2]|0;Ha=61}if((Ha|0)==61){Ha=(c[H>>2]|0)+(j<<3)|0;c[Ha>>2]=n;c[Ha+4>>2]=m;a[h+j>>0]=1;c[G>>2]=(c[G>>2]|0)+1;h=0}a[I>>0]=0}c[L>>2]=o;a[N>>0]=0;c[M>>2]=0;Ha=72}while(0);if((Ha|0)==72?(Ha=0,(h|0)!=0):0){Ha=134;break}t=(mi(o,f)|0)/2|0;u=(mi(f,D)|0)/2|0;B=((mi(o,f)|0)/2|0)+o|0;s=((mi(f,D)|0)/2|0)+f|0;C=c[R>>2]|0;t=rg(C,gi(t)|0)|0;C=c[R>>2]|0;u=rg(C,gi(u)|0)|0;if(!(a[S>>0]|0)){p=l+4|0;q=l+24|0;r=l+28|0;z=0}else{A=l+24|0;C=l+4|0;z=l+28|0;p=C;q=A;r=z;z=ji((c[l>>2]|0)-(c[A>>2]|0)|0,(c[C>>2]|0)-(c[z>>2]|0)|0)|0}v=l+16|0;w=l+20|0;x=l+8|0;y=l+12|0;C=T;A=0;while(1){j=(da(A,-11796480)|0)+5898240|0;li(Aa,t,B+j|0);c[Aa>>2]=(c[Aa>>2]|0)+(c[v>>2]|0);c[U>>2]=(c[U>>2]|0)+(c[w>>2]|0);li(Ba,u,s+j|0);c[Ba>>2]=(c[Ba>>2]|0)+(c[x>>2]|0);c[V>>2]=(c[V>>2]|0)+(c[y>>2]|0);li(Ea,c[R>>2]|0,j+D|0);j=(c[Ea>>2]|0)+(c[l>>2]|0)|0;c[Ea>>2]=j;k=(c[W>>2]|0)+(c[p>>2]|0)|0;c[W>>2]=k;do if((a[S>>0]|0)!=0?(na=C+8|0,pa=(c[na>>2]|0)+((c[C>>2]|0)+-1<<3)|0,oa=c[pa>>2]|0,pa=c[pa+4>>2]|0,qa=ji(j-oa|0,k-pa|0)|0,f=mi(z,qa)|0,(((f|0)>-1?f:0-f|0)|0)>5898240):0){n=ji((c[q>>2]|0)-oa|0,(c[r>>2]|0)-pa|0)|0;k=ji((c[l>>2]|0)-(c[Ea>>2]|0)|0,(c[p>>2]|0)-(c[W>>2]|0)|0)|0;c[za>>2]=(c[Ea>>2]|0)-oa;c[X>>2]=(c[W>>2]|0)-pa;o=ng(za)|0;j=hi(qa-k|0)|0;k=hi(n-k|0)|0;li(Ca,og(o,(j|0)>-1?j:0-j|0,(k|0)>-1?k:0-k|0)|0,n);n=(c[Ca>>2]|0)+oa|0;c[Ca>>2]=n;k=(c[Y>>2]|0)+pa|0;c[Y>>2]=k;j=C+16|0;a[j>>0]=0;o=c[C>>2]|0;if(((o|0)!=0?(ra=o+-1|0,sa=c[na>>2]|0,((c[sa+(ra<<3)>>2]|0)+1-n|0)>>>0<3):0)?((c[sa+(ra<<3)+4>>2]|0)+1-k|0)>>>0<3:0)n=o;else{m=C+4|0;e=c[m>>2]|0;k=o+1|0;c[Ga>>2]=0;if(k>>>0>e>>>0){o=c[C+24>>2]|0;n=e;do n=n+16+(n>>>1)|0;while(n>>>0>>0);c[na>>2]=Dg(o,8,e,n,c[na>>2]|0,Ga)|0;k=c[Ga>>2]|0;if(k){h=k;Ha=90;break a}k=C+12|0;c[k>>2]=Dg(o,1,e,n,c[k>>2]|0,Ga)|0;o=c[Ga>>2]|0;if(o){h=o;Ha=90;break a}c[m>>2]=n}else k=C+12|0;f=c[C>>2]|0;n=(c[k>>2]|0)+f|0;e=Ca;m=c[e+4>>2]|0;f=(c[na>>2]|0)+(f<<3)|0;c[f>>2]=c[e>>2];c[f+4>>2]=m;a[n>>0]=1;n=(c[C>>2]|0)+1|0;c[C>>2]=n;a[j>>0]=0}if(!(((n|0)!=0?(ta=n+-1|0,ua=c[na>>2]|0,((c[ua+(ta<<3)>>2]|0)+1-(c[Ea>>2]|0)|0)>>>0<3):0)?((c[ua+(ta<<3)+4>>2]|0)+1-(c[W>>2]|0)|0)>>>0<3:0)){m=C+4|0;e=c[m>>2]|0;k=n+1|0;c[Ga>>2]=0;if(k>>>0>e>>>0){o=c[C+24>>2]|0;n=e;do n=n+16+(n>>>1)|0;while(n>>>0>>0);c[na>>2]=Dg(o,8,e,n,c[na>>2]|0,Ga)|0;k=c[Ga>>2]|0;if(k){h=k;Ha=102;break a}k=C+12|0;c[k>>2]=Dg(o,1,e,n,c[k>>2]|0,Ga)|0;o=c[Ga>>2]|0;if(o){h=o;Ha=102;break a}c[m>>2]=n}else k=C+12|0;f=c[C>>2]|0;n=(c[k>>2]|0)+f|0;e=Ea;m=c[e+4>>2]|0;f=(c[na>>2]|0)+(f<<3)|0;c[f>>2]=c[e>>2];c[f+4>>2]=m;a[n>>0]=1;n=(c[C>>2]|0)+1|0;c[C>>2]=n;a[j>>0]=0}f=C+4|0;m=c[f>>2]|0;k=n+3|0;c[Ga>>2]=0;if(k>>>0>m>>>0){e=c[C+24>>2]|0;n=m;do n=n+16+(n>>>1)|0;while(n>>>0>>0);c[na>>2]=Dg(e,8,m,n,c[na>>2]|0,Ga)|0;k=c[Ga>>2]|0;if(k){h=k;Ha=110;break a}o=C+12|0;c[o>>2]=Dg(e,1,m,n,c[o>>2]|0,Ga)|0;k=c[Ga>>2]|0;if(k){h=k;Ha=110;break a}c[f>>2]=n}else o=C+12|0;Ja=c[na>>2]|0;k=c[C>>2]|0;m=c[o>>2]|0;Ka=Ba;La=c[Ka+4>>2]|0;e=Ja+(k<<3)|0;c[e>>2]=c[Ka>>2];c[e+4>>2]=La;e=k+1|0;La=Aa;Ka=c[La+4>>2]|0;n=Ja+(e<<3)|0;c[n>>2]=c[La>>2];c[n+4>>2]=Ka;n=k+2|0;Ja=Ja+(n<<3)|0;c[Ja>>2]=oa;c[Ja+4>>2]=pa;a[m+k>>0]=2;a[m+e>>0]=2;a[m+n>>0]=1;n=c[C>>2]|0;m=n+3|0;c[C>>2]=m;a[j>>0]=0;if(((m|0)!=0?(wa=n+2|0,xa=c[na>>2]|0,((c[xa+(wa<<3)>>2]|0)+1-(c[Ea>>2]|0)|0)>>>0<3):0)?((c[xa+(wa<<3)+4>>2]|0)+1-(c[W>>2]|0)|0)>>>0<3:0)break;m=c[f>>2]|0;k=n+4|0;c[Ga>>2]=0;if(k>>>0>m>>>0){e=c[C+24>>2]|0;n=m;do n=n+16+(n>>>1)|0;while(n>>>0>>0);k=n;c[na>>2]=Dg(e,8,m,k,c[na>>2]|0,Ga)|0;n=c[Ga>>2]|0;if(n){h=n;Ha=121;break a}c[o>>2]=Dg(e,1,m,k,c[o>>2]|0,Ga)|0;n=c[Ga>>2]|0;if(n){h=n;Ha=121;break a}c[f>>2]=k}Ka=c[C>>2]|0;La=(c[o>>2]|0)+Ka|0;f=Ea;Ja=c[f+4>>2]|0;Ka=(c[na>>2]|0)+(Ka<<3)|0;c[Ka>>2]=c[f>>2];c[Ka+4>>2]=Ja;a[La>>0]=1;c[C>>2]=(c[C>>2]|0)+1;a[j>>0]=0}else Ha=122;while(0);if((Ha|0)==122){Ha=0;f=C+4|0;e=c[f>>2]|0;j=(c[C>>2]|0)+3|0;c[Ga>>2]=0;if(j>>>0>e>>>0){m=c[C+24>>2]|0;n=e;do n=n+16+(n>>>1)|0;while(n>>>0>>0);k=C+8|0;c[k>>2]=Dg(m,8,e,n,c[k>>2]|0,Ga)|0;j=c[Ga>>2]|0;if(j){h=C;Ha=130;break a}o=C+12|0;c[o>>2]=Dg(m,1,e,n,c[o>>2]|0,Ga)|0;j=c[Ga>>2]|0;if(j){h=C;Ha=130;break a}c[f>>2]=n;j=o}else{k=C+8|0;j=C+12|0}m=c[k>>2]|0;f=c[C>>2]|0;Ka=c[j>>2]|0;o=Aa;e=c[o+4>>2]|0;Ja=m+(f<<3)|0;c[Ja>>2]=c[o>>2];c[Ja+4>>2]=e;Ja=f+1|0;e=Ba;o=c[e+4>>2]|0;La=m+(Ja<<3)|0;c[La>>2]=c[e>>2];c[La+4>>2]=o;La=f+2|0;o=Ea;e=c[o+4>>2]|0;m=m+(La<<3)|0;c[m>>2]=c[o>>2];c[m+4>>2]=e;a[Ka+f>>0]=2;a[Ka+Ja>>0]=2;a[Ka+La>>0]=1;c[C>>2]=(c[C>>2]|0)+3;a[C+16>>0]=0}A=A+1|0;if((A|0)>=2)break;else C=C+32|0}l=l+-24|0;c[b>>2]=D;if(l>>>0>>0){Ha=133;break}else y=0}if((Ha|0)==45){a[ga>>0]=0;La=h;i=Ia;return La|0}else if((Ha|0)==90){a[j>>0]=0;La=h;i=Ia;return La|0}else if((Ha|0)==102){a[j>>0]=0;La=h;i=Ia;return La|0}else if((Ha|0)==110){a[j>>0]=0;La=h;i=Ia;return La|0}else if((Ha|0)==121){a[j>>0]=0;La=h;i=Ia;return La|0}else if((Ha|0)==130){a[h+16>>0]=0;La=j;i=Ia;return La|0}else if((Ha|0)==133){Ja=g;Ka=c[Ja+4>>2]|0;La=ia;c[La>>2]=c[Ja>>2];c[La+4>>2]=Ka;La=0;i=Ia;return La|0}else if((Ha|0)==134){i=Ia;return h|0}return 0} -function kX(f,j,k,l,m){f=f|0;j=j|0;k=k|0;l=l|0;m=m|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;ma=i;i=i+480|0;la=ma+8|0;aa=ma+136|0;fa=ma+148|0;ga=ma+176|0;ka=ma+180|0;ja=ma+184|0;ia=ma+192|0;s=ma+216|0;Z=ma+144|0;H=ma+152|0;x=ma+218|0;W=ma+208|0;X=ma+172|0;ea=ma+214|0;p=ma+212|0;y=ma+210|0;ca=ma+156|0;ba=ma+160|0;G=ma+224|0;F=ma+164|0;E=ma+168|0;w=ma;if(!((j|0)!=0&(m|0)!=0)){ga=0;i=ma;return ga|0}c[Z>>2]=0;c[H>>2]=0;b[x>>1]=1;b[W>>1]=1;c[X>>2]=-1;b[ea>>1]=0;b[p>>1]=-1;c[ca>>2]=0;c[ba>>2]=0;t=l&32768;N=(t|0)!=0;t=t>>>15;ha=c[m+8>>2]|0;if((k|0)!=-1){if(!ha){ga=gc(4)|0;c[ga>>2]=312344;qd(ga|0,366936,0)}if(!(yv(ha,k&65535)|0)){ga=gc(4)|0;c[ga>>2]=312344;qd(ga|0,366936,0)}}_=(l&1|0)!=0;c[la>>2]=ea;sv(ha,262,la)|0;c[la>>2]=p;sv(ha,259,la)|0;do if((b[ea>>1]|0)==-32691)if((b[p>>1]&-2)<<16>>16==-30860){c[la>>2]=0;rv(ha,65560,la)|0;break}else{ga=gc(4)|0;c[ga>>2]=312392;qd(ga|0,366936,0)}while(0);c[la>>2]=H;sv(ha,256,la)|0;c[la>>2]=Z;sv(ha,257,la)|0;c[la>>2]=W;sv(ha,277,la)|0;c[la>>2]=x;sv(ha,258,la)|0;c[la>>2]=X;sv(ha,278,la)|0;c[la>>2]=ca;c[la+4>>2]=ba;sv(ha,34675,la)|0;c[la>>2]=y;Yu(ha,284,la)|0;l=b[ea>>1]|0;p=b[x>>1]|0;k=p&65535;switch(k|0){case 32:{if(!(l<<16>>16==-32691|l<<16>>16==1|l<<16>>16==0)){ga=c[78074]|0;ca=b[W>>1]|0;ca=ca&65535;ea=l&65535;c[la>>2]=k;m=la+4|0;c[m>>2]=ca;m=la+8|0;c[m>>2]=ea;PI(ga,312440,la);ga=gc(4)|0;c[ga>>2]=0;qd(ga|0,366912,0)}break}case 128:case 64:{if(l<<16>>16!=1){ga=c[78074]|0;ca=b[W>>1]|0;ca=ca&65535;ea=l&65535;c[la>>2]=k;m=la+4|0;c[m>>2]=ca;m=la+8|0;c[m>>2]=ea;PI(ga,312440,la);ga=gc(4)|0;c[ga>>2]=0;qd(ga|0,366912,0)}break}case 8:break;case 4:case 1:{if(!(l<<16>>16==3|l<<16>>16==1|l<<16>>16==0)){ga=c[78074]|0;ca=b[W>>1]|0;ca=ca&65535;ea=l&65535;c[la>>2]=k;m=la+4|0;c[m>>2]=ca;m=la+8|0;c[m>>2]=ea;PI(ga,312440,la);ga=gc(4)|0;c[ga>>2]=0;qd(ga|0,366912,0)}break}case 16:{if(l<<16>>16==3){ga=c[78074]|0;ca=b[W>>1]|0;ca=ca&65535;ea=l&65535;c[la>>2]=k;m=la+4|0;c[m>>2]=ca;m=la+8|0;c[m>>2]=ea;PI(ga,312440,la);ga=gc(4)|0;c[ga>>2]=0;qd(ga|0,366912,0)}break}default:{ga=c[78074]|0;ca=b[W>>1]|0;ca=ca&65535;ea=l&65535;c[la>>2]=k;m=la+4|0;c[m>>2]=ca;m=la+8|0;c[m>>2]=ea;PI(ga,312440,la);ga=gc(4)|0;c[ga>>2]=0;qd(ga|0,366912,0)}}u=b[W>>1]|0;b[s>>1]=0;k=da(u&65535,k)|0;c[la>>2]=s;do if(!(sv(ha,339,la)|0))if(u<<16>>16==3){s=(k&65535|0)==48?9:1;break}else if(u<<16>>16==1){l=k&65535;if((l|0)==16){s=2;break}else if((l|0)==32){s=4;break}else{s=1;break}}else{s=(u&65535)>3&p<<16>>16==16?10:1;break}else{l=e[s>>1]|0;if((l|0)==6){s=(k&65535|0)==128?8:1;break}else if((l|0)==1){l=k&65535;if((l|0)==16){s=u<<16>>16==2?1:2;break}else if((l|0)==48){s=u<<16>>16==3?9:1;break}else if((l|0)==64){s=u<<16>>16==4?10:1;break}else if((l|0)==32){s=u<<16>>16==4?1:4;break}else{s=1;break}}else if((l|0)==2){l=k&65535;if((l|0)==16){s=u<<16>>16==3?1:3;break}else if((l|0)==32){s=5;break}else{s=1;break}}else if((l|0)==3){l=k&65535;if((l|0)==64){s=u<<16>>16==2?6:7;break}else if((l|0)==32){s=6;break}else if((l|0)==48){s=u<<16>>16==3&p<<16>>16==16?11:1;break}else if((l|0)==96){s=11;break}else{s=l>>>0>127?12:1;break}}else{s=1;break}}while(0);b[aa>>1]=-1;b[fa>>1]=-1;b[ga>>1]=-1;b[ka>>1]=-1;c[la>>2]=ga;sv(ha,262,la)|0;c[la>>2]=fa;sv(ha,277,la)|0;c[la>>2]=aa;sv(ha,258,la)|0;c[la>>2]=ka;Yu(ha,284,la)|0;k=(xw(ha)|0)!=0;l=e[ga>>1]|0;if((l|0)==32845)l=5;else if((l|0)==2)l=(s+-9|0)>>>0>1&(s|0)==11&(b[fa>>1]|0)==3&(b[aa>>1]|0)==16?6:3;else if((l|0)==10|(l|0)==9|(l|0)==8|(l|0)==6)l=0;else if((l|0)==5)l=k?3:1;else if((l|0)==3|(l|0)==1|(l|0)==0)l=(e[fa>>1]|0)>1&(b[aa>>1]|0)==8?2:3;else l=3;a:do switch(((l|0)==3&k?4:l)|0){case 3:{J=b[W>>1]|0;J=(J&65535)<4?J:4;k=P0(t,s,c[H>>2]|0,c[Z>>2]|0,b[x>>1]|0,J)|0;if(!k){ga=gc(4)|0;c[ga>>2]=315480;qd(ga|0,366936,0)}Q0(ha,k);R0(ha,b[ea>>1]|0,b[x>>1]|0,k);if(!N){N=Xw(ha)|0;l=eI(k)|0;B=dI(k)|0;K=(YH(k)|0)>>>3;A=(da(e[W>>1]|0,e[x>>1]|0)|0)>>>3;r=qJ(k,(c[Z>>2]|0)+-1|0)|0;L=qea(Uw(ha)|0)|0;if(!L){ga=gc(4)|0;c[ga>>2]=315480;qd(ga|0,366936,0)}sfa(L|0,0,Uw(ha)|0)|0;p=b[y>>1]|0;if(p<<16>>16==1){p=c[Z>>2]|0;if(!p)Y=246;else{y=(N|0)==(l|0);z=0-B|0;u=c[X>>2]|0;s=0;w=r;x=0;while(1){l=u+x|0;q=l>>>0>p>>>0?p-x|0:u;v=(Ew(ha,Pw(ha,x,0)|0,L,da(q,N)|0)|0)==-1;v=v?1:s;q=(q|0)>0;if(y)if(q){q=~p;p=~l;p=q>>>0>p>>>0?q:p;l=da(B,x+1+p|0)|0;p=~x-p|0;q=w;s=0;while(1){qfa(q|0,L+(da(s,N)|0)|0,N|0)|0;s=s+1|0;if((s|0)==(p|0))break;else q=q+z|0}q=w+l|0}else q=w;else if(q){u=~p;p=~l;p=u>>>0>p>>>0?u:p;l=da(B,x+1+p|0)|0;p=~x-p|0;u=w;s=0;while(1){q=u+B|0;b:do if((B|0)>0){r=u;t=L+(da(s,N)|0)|0;while(1){switch(K|0){case 6:{c[r>>2]=c[t>>2];b[r+4>>1]=b[t+4>>1]|0;break}case 1:{a[r>>0]=a[t>>0]|0;break}case 2:{b[r>>1]=b[t>>1]|0;break}case 4:{c[r>>2]=c[t>>2];break}case 8:{c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];break}case 12:{g[r>>2]=+g[t>>2];g[r+4>>2]=+g[t+4>>2];g[r+8>>2]=+g[t+8>>2];break}case 16:{g[r>>2]=+g[t>>2];g[r+4>>2]=+g[t+4>>2];g[r+8>>2]=+g[t+8>>2];g[r+12>>2]=+g[t+12>>2];break}case 3:{b[r>>1]=b[t>>1]|0;a[r+2>>0]=a[t+2>>0]|0;break}default:{}}r=r+K|0;if(r>>>0>=q>>>0)break b;else t=t+A|0}}while(0);s=s+1|0;if((s|0)==(p|0))break;else u=u+z|0}q=w+l|0}else q=w;u=c[X>>2]|0;x=u+x|0;p=c[Z>>2]|0;if(p>>>0<=x>>>0){q=v;Y=247;break}else{s=v;w=q}}}}else if(p<<16>>16==2){I=(e[x>>1]|0)>>>3&65535;p=c[Z>>2]|0;if(!p)Y=246;else{H=0-B|0;u=c[X>>2]|0;q=0;G=0;while(1){l=u+G|0;F=l>>>0>p>>>0?p-G|0:u;c:do if(b[W>>1]|0){D=da(F,N)|0;E=(F|0)>0;B=~p;C=~l;C=~G-(B>>>0>C>>>0?B:C)|0;B=0;do{V=B&65535;S=(Ew(ha,Pw(ha,G,V)|0,L,D)|0)==-1;q=S?1:q;if((V&65535)>=(J&65535))break c;w=da(B,I)|0;if(E){v=w+2|0;t=w+4|0;s=w+8|0;u=w+12|0;y=r;z=0;A=L;while(1){l=A;A=A+N|0;d:do if((N|0)>0){x=y;while(1){p=x+w|0;switch(I|0){case 1:{a[p>>0]=a[l>>0]|0;break}case 4:{c[p>>2]=c[l>>2];break}case 2:{b[p>>1]=b[l>>1]|0;break}case 12:{g[p>>2]=+g[l>>2];g[x+t>>2]=+g[l+4>>2];g[x+s>>2]=+g[l+8>>2];break}case 16:{g[p>>2]=+g[l>>2];g[x+t>>2]=+g[l+4>>2];g[x+s>>2]=+g[l+8>>2];g[x+u>>2]=+g[l+12>>2];break}case 3:{b[p>>1]=b[l>>1]|0;a[x+v>>0]=a[l+2>>0]|0;break}case 6:{c[p>>2]=c[l>>2];b[x+t>>1]=b[l+4>>1]|0;break}case 8:{c[p>>2]=c[l>>2];c[x+t>>2]=c[l+4>>2];break}default:{}}l=l+I|0;if(l>>>0>=A>>>0)break d;else x=x+K|0}}while(0);z=z+1|0;if((z|0)==(C|0))break;else y=y+H|0}}B=B+1|0}while((B&65535)<(e[W>>1]|0))}while(0);r=r+(da(F,H)|0)|0;u=c[X>>2]|0;G=u+G|0;p=c[Z>>2]|0;if(p>>>0<=G>>>0){Y=247;break}}}}else rea(L);if((Y|0)==246)rea(L);else if((Y|0)==247?(rea(L),(q|0)!=0):0)PI(c[78074]|0,312712,la);EI(k)|0}break}case 4:{k=P0(t,s,c[H>>2]|0,c[Z>>2]|0,b[x>>1]|0,b[W>>1]|0)|0;if(!k){ga=gc(4)|0;c[ga>>2]=315480;qd(ga|0,366936,0)}Q0(ha,k);R0(ha,b[ea>>1]|0,b[x>>1]|0,k);c[la>>2]=F;if(!(sv(ha,322,la)|0)){ga=gc(4)|0;c[ga>>2]=312792;qd(ga|0,366936,0)}c[la>>2]=E;if(!(sv(ha,323,la)|0)){ga=gc(4)|0;c[ga>>2]=312792;qd(ga|0,366936,0)}p=b[y>>1]|0;if(p<<16>>16!=1|N){if(p<<16>>16!=2)break a;ga=gc(4)|0;c[ga>>2]=312856;qd(ga|0,366936,0)}A=ox(ha)|0;B=qea(A)|0;if(!B){ga=gc(4)|0;c[ga>>2]=315480;qd(ga|0,366936,0)}p=dI(k)|0;C=lx(ha)|0;D=Xw(ha)|0;s=qJ(k,(c[Z>>2]|0)+-1|0)|0;q=c[Z>>2]|0;e:do if(q){z=0-p|0;u=c[E>>2]|0;l=c[H>>2]|0;y=0;f:while(1){p=u+y|0;x=p>>>0>q>>>0?q-y|0:u;if(!l){p=u;l=0}else{w=(x|0)>0;t=~q;r=~p;r=~y-(t>>>0>r>>>0?t:r)|0;t=0;v=0;while(1){sfa(B|0,0,A|0)|0;if((Hw(ha,B,v,y,0,0)|0)<0)break f;p=c[F>>2]|0;l=c[H>>2]|0;u=(p+v|0)>>>0>l>>>0?D-t|0:C;if(w){l=s+t|0;p=0;q=B;while(1){qfa(l|0,q|0,u|0)|0;p=p+1|0;if((p|0)==(r|0))break;else{l=l+z|0;q=q+C|0}}p=c[F>>2]|0;l=c[H>>2]|0}v=p+v|0;if(v>>>0>=l>>>0)break;else t=t+C|0}p=c[E>>2]|0;q=c[Z>>2]|0}s=s+(da(x,z)|0)|0;y=p+y|0;if(q>>>0<=y>>>0)break e;else u=p}rea(B);ga=gc(4)|0;c[ga>>2]=312824;qd(ga|0,366936,0)}while(0);EI(k)|0;rea(B);break}case 6:{k=P0(t,s,c[H>>2]|0,c[Z>>2]|0,b[x>>1]|0,b[W>>1]|0)|0;if(!k){ga=gc(4)|0;c[ga>>2]=315480;qd(ga|0,366936,0)}Q0(ha,k);if(!N){A=Xw(ha)|0;B=dI(k)|0;q=qJ(k,(c[Z>>2]|0)+-1|0)|0;p=b[y>>1]|0;if(p<<16>>16==2){ga=gc(4)|0;c[ga>>2]=312960;qd(ga|0,366936,0)}else if(p<<16>>16!=1)break a;w=qea(Uw(ha)|0)|0;if(!w){ga=gc(4)|0;c[ga>>2]=315480;qd(ga|0,366936,0)}p=c[Z>>2]|0;g:do if(p){x=A>>>1;y=(x|0)==0;z=0-B|0;l=c[X>>2]|0;v=0;while(1){r=l+v|0;s=r>>>0>p>>>0?p-v|0:l;if((Ew(ha,Pw(ha,v,0)|0,w,da(s,A)|0)|0)==-1)break;if(s){l=~p;p=~r;p=l>>>0>p>>>0?l:p;l=da(B,v+1+p|0)|0;p=~v-p|0;r=q;t=0;while(1){s=w+(da(t,A)|0)|0;if(!y){u=0;do{g[r+(u<<2)>>2]=+g[n+(e[s+(u<<1)>>1]<<2)>>2];u=u+1|0}while((u|0)<(x|0))}t=t+1|0;if((t|0)==(p|0))break;else r=r+z|0}q=q+l|0}l=c[X>>2]|0;v=l+v|0;p=c[Z>>2]|0;if(p>>>0<=v>>>0)break g}rea(w);ga=gc(4)|0;c[ga>>2]=313024;qd(ga|0,366936,0)}while(0);rea(w)}break}case 5:{c[la>>2]=w;if(!(sv(ha,37439,la)|0))h[w>>3]=1.0;k=P0(t,s,c[H>>2]|0,c[Z>>2]|0,b[x>>1]|0,b[W>>1]|0)|0;if(!k){ga=gc(4)|0;c[ga>>2]=315480;qd(ga|0,366936,0)}Q0(ha,k);p=b[y>>1]|0;if(p<<16>>16!=1|N){if(p<<16>>16!=2)break a;ga=gc(4)|0;c[ga>>2]=312904;qd(ga|0,366936,0)}t=Xw(ha)|0;p=dI(k)|0;s=qJ(k,(c[Z>>2]|0)+-1|0)|0;v=qea(Uw(ha)|0)|0;if(!v){ga=gc(4)|0;c[ga>>2]=315480;qd(ga|0,366936,0)}q=c[Z>>2]|0;h:do if(q){u=0-p|0;r=c[X>>2]|0;p=s;l=0;while(1){s=(r+l|0)>>>0>q>>>0?q-l|0:r;if((Ew(ha,Pw(ha,l,0)|0,v,da(s,t)|0)|0)==-1)break;if((s|0)>0){q=0;do{W=v+(da(q,t)|0)|0;rK(p,W,+h[w>>3],c[H>>2]|0);p=p+u|0;q=q+1|0}while((q|0)<(s|0))}r=c[X>>2]|0;l=r+l|0;q=c[Z>>2]|0;if(q>>>0<=l>>>0)break h}rea(v);ga=gc(4)|0;c[ga>>2]=313024;qd(ga|0,366936,0)}while(0);rea(v);break}case 0:{if(!N){k=c[H>>2]|0;p=c[Z>>2]|0;q=qea(da(k<<2,p)|0)|0;if(!q){ga=gc(4)|0;c[ga>>2]=315480;qd(ga|0,366936,0)}if(!(kw(ha,k,p,q,1)|0)){rea(q);ga=gc(4)|0;c[ga>>2]=313264;qd(ga|0,366936,0)}else u=q}else u=0;k=b[W>>1]|0;if((k&65535)>4){V=c[78074]|0;c[la>>2]=(k&65535)+-4;PI(V,312536,la);b[W>>1]=4;k=4}if((b[ea>>1]|0)==5&k<<16>>16==4){b[W>>1]=3;k=3}k=P0(t,s,c[H>>2]|0,c[Z>>2]|0,b[x>>1]|0,k)|0;if(!k){if(!u){ga=gc(4)|0;c[ga>>2]=315016;qd(ga|0,366936,0)}rea(u);ga=gc(4)|0;c[ga>>2]=315016;qd(ga|0,366936,0)}Q0(ha,k);if(N)p=0;else{p=(c[Z>>2]|0)==0;if((b[W>>1]|0)==4)if(p)p=0;else{p=0;t=u;l=0;while(1){q=qJ(k,l)|0;if(!(c[H>>2]|0))q=0;else{s=0;while(1){r=t+(s<<2)|0;a[q>>0]=(c[r>>2]|0)>>>16;a[q+1>>0]=(c[r>>2]|0)>>>8;a[q+2>>0]=c[r>>2];r=(c[r>>2]|0)>>>24;a[q+3>>0]=r;p=(r|0)==0?p:1;s=s+1|0;r=c[H>>2]|0;if(s>>>0>=r>>>0){q=r;break}else q=q+4|0}}l=l+1|0;if(l>>>0>=(c[Z>>2]|0)>>>0)break;else t=t+(q<<2)|0}}else if(p)p=0;else{s=u;t=0;while(1){p=qJ(k,t)|0;if(!(c[H>>2]|0))p=0;else{q=p;r=0;while(1){p=s+(r<<2)|0;a[q>>0]=(c[p>>2]|0)>>>16;a[q+1>>0]=(c[p>>2]|0)>>>8;a[q+2>>0]=c[p>>2];r=r+1|0;p=c[H>>2]|0;if(r>>>0>=p>>>0)break;else q=q+3|0}}t=t+1|0;if(t>>>0>=(c[Z>>2]|0)>>>0){p=0;break}else s=s+(p<<2)|0}}rea(u)}qI(k,p);break}case 1:{do if((b[ea>>1]|0)==5){k=(e[W>>1]|0)>4;if(_|k^1|N){U=k;V=0;S=0;r=0;T=0}else{p=b[x>>1]|0;if(p<<16>>16==16){r=QH(2,c[H>>2]|0,c[Z>>2]|0,8,0,0,0)|0;Y=112}else if(p<<16>>16==8){r=PH(c[H>>2]|0,c[Z>>2]|0,8,0,0,0)|0;Y=112}if((Y|0)==112?(r|0)!=0:0){R=qJ(r,(c[Z>>2]|0)+-1|0)|0;T=dI(r)|0;U=k;V=r;S=(YH(r)|0)>>>3;r=R;break}PI(c[78074]|0,312584,la);U=k;V=0;S=0;r=0;T=0}}else{U=0;V=0;S=0;r=0;T=0}while(0);M=b[W>>1]|0;M=(M&65535)<4?M:4;k=P0(t,s,c[H>>2]|0,c[Z>>2]|0,b[x>>1]|0,M)|0;if(!k){RH(V);ga=gc(4)|0;c[ga>>2]=315480;qd(ga|0,366936,0)}Q0(ha,k);if(!N){P=Xw(ha)|0;K=eI(k)|0;Q=dI(k)|0;R=(YH(k)|0)>>>3;N=(R>>>0)/((M&65535)>>>0)|0;J=(da(e[W>>1]|0,e[x>>1]|0)|0)>>>3;p=qJ(k,(c[Z>>2]|0)+-1|0)|0;O=qea(Uw(ha)|0)|0;if(!O){RH(V);ga=gc(4)|0;c[ga>>2]=315480;qd(ga|0,366936,0)}l=b[y>>1]|0;i:do if(l<<16>>16==2){l=c[Z>>2]|0;if(l){J=0-Q|0;K=0-T|0;L=(V|0)!=0;q=c[X>>2]|0;I=r;G=p;H=0;j:while(1){p=q+H|0;D=p>>>0>l>>>0?l-H|0:q;k:do if(b[W>>1]|0){E=da(D,P)|0;F=(D|0)>0;C=~l;A=~p;A=~H-(C>>>0>A>>>0?C:A)|0;C=0;do{if((Ew(ha,Pw(ha,H,C)|0,O,E)|0)==-1)break j;if((C&65535)>=(M&65535))if(L&C<<16>>16==M<<16>>16){B=S;l=0;p=T;q=I}else break k;else{B=R;l=C;p=Q;q=G}z=da(l&65535,N)|0;if(F){y=0-p|0;x=z+2|0;w=z+4|0;v=z+8|0;t=z+12|0;s=0;r=O;while(1){l=r;r=r+P|0;l:do if((P|0)>0){u=q;while(1){p=u+z|0;switch(N|0){case 4:{c[p>>2]=c[l>>2];break}case 12:{g[p>>2]=+g[l>>2];g[u+w>>2]=+g[l+4>>2];g[u+v>>2]=+g[l+8>>2];break}case 16:{g[p>>2]=+g[l>>2];g[u+w>>2]=+g[l+4>>2];g[u+v>>2]=+g[l+8>>2];g[u+t>>2]=+g[l+12>>2];break}case 3:{b[p>>1]=b[l>>1]|0;a[u+x>>0]=a[l+2>>0]|0;break}case 8:{c[p>>2]=c[l>>2];c[u+w>>2]=c[l+4>>2];break}case 2:{b[p>>1]=b[l>>1]|0;break}case 6:{c[p>>2]=c[l>>2];b[u+w>>1]=b[l+4>>1]|0;break}case 1:{a[p>>0]=a[l>>0]|0;break}default:{}}l=l+N|0;if(l>>>0>=r>>>0)break l;else u=u+B|0}}while(0);s=s+1|0;if((s|0)==(A|0))break;else q=q+y|0}}C=C+1<<16>>16}while((C&65535)<(e[W>>1]|0))}while(0);G=G+(da(D,J)|0)|0;I=I+(da(D,K)|0)|0;q=c[X>>2]|0;H=q+H|0;l=c[Z>>2]|0;if(l>>>0<=H>>>0)break i}rea(O);RH(V);ga=gc(4)|0;c[ga>>2]=313024;qd(ga|0,366936,0)}}else if(l<<16>>16==1?(v=c[Z>>2]|0,(v|0)!=0):0){F=(P|0)==(K|0);G=0-Q|0;H=(V|0)==0;I=(R|0)==0;D=N>>>0>1;E=0-T|0;q=c[X>>2]|0;u=v;B=r;N=p;C=0;while(1){p=q+C|0;l=p>>>0>u>>>0?u-C|0:q;if((Ew(ha,Pw(ha,C,0)|0,O,da(l,P)|0)|0)==-1)break;l=(l|0)>0;do if(F)if(l){u=~u;l=~p;l=u>>>0>l>>>0?u:l;u=da(Q,C+1+l|0)|0;l=~C-l|0;p=N;q=0;while(1){qfa(p|0,O+(da(q,P)|0)|0,P|0)|0;q=q+1|0;if((q|0)==(l|0))break;else p=p+G|0}p=B;l=N+u|0}else{p=B;l=N}else if(H){if(!l){p=B;l=N;break}t=~u;l=~p;l=t>>>0>l>>>0?t:l;t=da(Q,C+1+l|0)|0;l=~C-l|0;q=N;u=0;while(1){p=q+K|0;m:do if((K|0)>0){s=q;r=O+(da(u,P)|0)|0;while(1){switch(R|0){case 8:{c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];break}case 16:{g[s>>2]=+g[r>>2];g[s+4>>2]=+g[r+4>>2];g[s+8>>2]=+g[r+8>>2];g[s+12>>2]=+g[r+12>>2];break}case 6:{c[s>>2]=c[r>>2];b[s+4>>1]=b[r+4>>1]|0;break}case 4:{c[s>>2]=c[r>>2];break}case 1:{a[s>>0]=a[r>>0]|0;break}case 2:{b[s>>1]=b[r>>1]|0;break}case 12:{g[s>>2]=+g[r>>2];g[s+4>>2]=+g[r+4>>2];g[s+8>>2]=+g[r+8>>2];break}case 3:{b[s>>1]=b[r>>1]|0;a[s+2>>0]=a[r+2>>0]|0;break}default:{}}s=s+R|0;if(s>>>0>=p>>>0)break m;else r=r+J|0}}while(0);u=u+1|0;if((u|0)==(l|0))break;else q=q+G|0}p=B;l=N+t|0;break}else{if(!l){p=B;l=N;break}A=~u;w=~p;w=A>>>0>w>>>0?A:w;A=C+1+w|0;v=da(T,A)|0;A=da(Q,A)|0;w=~C-w|0;x=B;y=N;z=0;while(1){l=O+(da(z,P)|0)|0;t=y+Q|0;n:do if((Q|0)>0){if(I)if(D){p=x;while(1){a[p>>0]=a[l>>0]|0;a[p+1>>0]=a[l+1>>0]|0;if((Q|0)>0){p=p+S|0;l=l+J|0}else break n}}else{p=x;while(1){a[p>>0]=a[l>>0]|0;if((Q|0)>0){p=p+S|0;l=l+J|0}else break n}}if(D){s=x;r=y;while(1){q=0;p=a[l>>0]|0;u=0;do{a[r+q>>0]=p;u=u+1<<24>>24;q=u&255;p=a[l+q>>0]|0}while(q>>>0>>0);a[s>>0]=p;a[s+1>>0]=a[l+(q+1)>>0]|0;r=r+R|0;if(r>>>0>=t>>>0)break;else{s=s+S|0;l=l+J|0}}}else{s=x;r=y;while(1){q=0;p=a[l>>0]|0;u=0;do{a[r+q>>0]=p;u=u+1<<24>>24;q=u&255;p=a[l+q>>0]|0}while(q>>>0>>0);a[s>>0]=p;r=r+R|0;if(r>>>0>=t>>>0)break;else{s=s+S|0;l=l+J|0}}}}while(0);z=z+1|0;if((z|0)==(w|0))break;else{x=x+E|0;y=y+G|0}}p=B+v|0;l=N+A|0;break}while(0);q=c[X>>2]|0;C=q+C|0;u=c[Z>>2]|0;if(u>>>0<=C>>>0)break i;else{B=p;N=l}}rea(O);RH(V);ga=gc(4)|0;c[ga>>2]=313024;qd(ga|0,366936,0)}while(0);rea(O);if(!_){FI(k)|0;c[ca>>2]=0;c[ba>>2]=0;if(U){hL(k,V,4)|0;RH(V);break a}p=HI(k)|0;if(!p){PI(c[78074]|0,312632,la);break a}else{RH(k);k=p;break a}}}break}case 2:{k=b[W>>1]|0;k=P0(t,s,c[H>>2]|0,c[Z>>2]|0,b[x>>1]|0,(k&65535)>2?2:k)|0;if(!k){ga=gc(4)|0;c[ga>>2]=315480;qd(ga|0,366936,0)}Q0(ha,k);R0(ha,b[ea>>1]|0,b[x>>1]|0,k);D=Xw(ha)|0;E=dI(k)|0;sfa(G|0,-1,256)|0;q=qJ(k,(c[Z>>2]|0)+-1|0)|0;p=b[y>>1]|0;if(p<<16>>16!=1|N){if(!(p<<16>>16!=2|N)){y=Uw(ha)|0;z=qea(y<<1)|0;if(!z){ga=gc(4)|0;c[ga>>2]=315480;qd(ga|0,366936,0)}A=z+y|0;p=c[Z>>2]|0;o:do if(p){B=(D|0)==0;C=0-E|0;l=c[X>>2]|0;x=0;while(1){u=l+x|0;l=u>>>0>p>>>0?p-x|0:l;s=da(l,D)|0;if((Ew(ha,Pw(ha,x,0)|0,z,s)|0)==-1){Y=94;break}if((Ew(ha,Pw(ha,x,1)|0,A,s)|0)==-1){Y=101;break}if((l|0)>0){v=~p;w=~u;w=v>>>0>w>>>0?v:w;v=x+1+w|0;w=~x-w|0;if(B){l=0;do l=l+1|0;while((l|0)!=(w|0))}else{p=q;s=0;while(1){u=da(s,D)|0;l=z+(u+y)|0;u=z+u|0;r=p;t=0;while(1){a[r>>0]=a[u>>0]|0;a[G+(d[u>>0]|0)>>0]=a[l>>0]|0;t=t+1|0;if((t|0)==(D|0))break;else{l=l+1|0;u=u+1|0;r=r+1|0}}s=s+1|0;if((s|0)==(w|0))break;else p=p+C|0}}q=q+(da(E,v)|0)|0}l=c[X>>2]|0;x=l+x|0;p=c[Z>>2]|0;if(p>>>0<=x>>>0)break o}if((Y|0)==94){rea(z);ga=gc(4)|0;c[ga>>2]=313024;qd(ga|0,366936,0)}else if((Y|0)==101){rea(z);ga=gc(4)|0;c[ga>>2]=313024;qd(ga|0,366936,0)}}while(0);rea(z)}}else{z=qea(Uw(ha)|0)|0;if(!z){ga=gc(4)|0;c[ga>>2]=315480;qd(ga|0,366936,0)}p=c[Z>>2]|0;p:do if(p){A=0-E|0;l=c[X>>2]|0;y=0;while(1){r=l+y|0;s=r>>>0>p>>>0?p-y|0:l;if((Ew(ha,Pw(ha,y,0)|0,z,da(s,D)|0)|0)==-1)break;if((s|0)>0){t=~p;v=~r;v=t>>>0>v>>>0?t:v;t=da(E,y+1+v|0)|0;v=~y-v|0;l=b[W>>1]|0;w=q;x=0;while(1){if((D|0)/(l&65535|0)|0){u=z+(da(x,D)|0)|0;s=w;r=0;while(1){a[s>>0]=a[u>>0]|0;a[G+(d[u>>0]|0)>>0]=a[u+1>>0]|0;l=b[W>>1]|0;p=l&65535;r=r+1|0;if(r>>>0>=((D|0)/(p|0)|0)>>>0)break;else{u=u+p|0;s=s+1|0}}}x=x+1|0;if((x|0)==(v|0))break;else w=w+A|0}q=q+t|0}l=c[X>>2]|0;y=l+y|0;p=c[Z>>2]|0;if(p>>>0<=y>>>0)break p}rea(z);ga=gc(4)|0;c[ga>>2]=313024;qd(ga|0,366936,0)}while(0);rea(z)}sI(k,G,256);qI(k,1);break}default:{ga=gc(4)|0;c[ga>>2]=313264;qd(ga|0,366936,0)}}while(0);bI(k,c[ba>>2]|0,c[ca>>2]|0)|0;if((b[ea>>1]|0)==5&_){ea=SH(k)|0;b[ea>>1]=e[ea>>1]|1}c[aa>>2]=0;c[fa>>2]=0;c[la>>2]=fa;c[la+4>>2]=aa;if((sv(ha,33723,la)|0)==1){if(zw(ha)|0)bx(c[aa>>2]|0,c[fa>>2]|0);SK(k,c[aa>>2]|0,c[fa>>2]<<2)|0}c[aa>>2]=0;c[fa>>2]=0;c[la>>2]=fa;c[la+4>>2]=aa;if((sv(ha,700,la)|0)==1?($=BK()|0,($|0)!=0):0){MK($,700)|0;KK($,312328)|0;PK($,c[fa>>2]|0)|0;OK($,c[fa>>2]|0)|0;NK($,2)|0;QK($,c[aa>>2]|0)|0;BI(7,k,EK($)|0,$)|0;CK($)}cL(ha,k)|0;ea=aa;c[ea>>2]=0;c[ea+4>>2]=0;eL(ha,1,k)|0;c[la>>2]=aa;if((sv(ha,34665,la)|0)!=0?(ea=aa,(Tv(ha,c[ea>>2]|0,c[ea+4>>2]|0)|0)!=0):0)eL(ha,2,k)|0;c[aa>>2]=0;c[la>>2]=aa;if(!(((sv(ha,34665,la)|0)!=0?(Av(ha)|0)!=0:0)?(ca=f+12|0,ca=Ed[(d[ca>>0]|d[ca+1>>0]<<8|d[ca+2>>0]<<16|d[ca+3>>0]<<24)&511](j)|0,ea=yw(ha)|0,o=kX(f,j,1,0,m)|0,cI(k,o)|0,ba=f+8|0,Hd[(d[ba>>0]|d[ba+1>>0]<<8|d[ba+2>>0]<<16|d[ba+3>>0]<<24)&255](j,ca,0)|0,yv(ha,ea)|0,(o|0)!=0):0))Y=326;do if((Y|0)==326){b[fa>>1]=0;c[ga>>2]=0;c[la>>2]=fa;c[la+4>>2]=ga;ea=(sv(ha,330,la)|0)==0;if(!(ea|(b[fa>>1]|0)==0)){p=f+12|0;p=Ed[(d[p>>0]|d[p+1>>0]<<8|d[p+2>>0]<<16|d[p+3>>0]<<24)&511](j)|0;q=yw(ha)|0;ga=c[ga>>2]|0;if(!(zv(ha,c[ga>>2]|0,c[ga+4>>2]|0)|0))o=0;else{o=kX(f,j,-1,0,m)|0;cI(k,o)|0}ga=f+8|0;Hd[(d[ga>>0]|d[ga+1>>0]<<8|d[ga+2>>0]<<16|d[ga+3>>0]<<24)&255](j,p,0)|0;yv(ha,q)|0;if(o)break}c[ka>>2]=0;c[ja>>2]=0;c[la>>2]=ka;c[la+4>>2]=ja;if(!(sv(ha,34377,la)|0))o=0;else{o=eJ(c[ja>>2]|0,c[ka>>2]|0)|0;ZI(ia);mK(la);oK(la,ia,o,c[ka>>2]|0)|0;cI(k,c[la+92>>2]|0)|0;fJ(o);nK(la);o=0}}while(0);RH(o);ga=k;i=ma;return ga|0}function lX(e,f,g,j,l,m){e=e|0;f=f|0;g=g|0;j=j|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0.0;ba=i;i=i+64|0;$=ba+8|0;_=ba+24|0;W=ba+20|0;X=ba+30|0;Y=ba+28|0;V=ba+32|0;Z=ba;T=(TH(f)|0)!=0;U=T?2:1;R=(g|0)!=0;S=(m|0)!=0;N=m+8|0;O=(l&1|0)==0;P=(j|0)>-1;Q=j&65535;F=(l&65536|0)==0;G=l&256;H=l&512;I=l&1024;J=l&2048;K=(l&4096|0)==0;L=(l&8192|0)==0;M=(l&16384|0)==0;D=(l&32768|0)==0;e=f;E=0;a:while(1){if((E|0)==1)C=TH(f)|0;else C=e;if((C|0)!=0&R&S){A=c[N>>2]|0;y=VH(C)|0;z=WH(C)|0;B=XH(C)|0;w=YH(C)|0;e=w&65535;q=SH(C)|0;x=(y|0)==1;do if(x){l=w&65535;if((l|0)==24)m=3;else m=(l|0)==32?4:1;e=((l>>>0)/((m&65535)>>>0)|0)&65535;switch(iI(C)|0){case 3:{g=3;break}case 5:{g=2;break}case 1:{g=1;break}case 0:{g=0;break}case 4:case 2:{g=2;break}default:g=1}if((l|0)==8){u=(oI(C)|0)==0;e=u?e:8;m=u?m:2;u=29;break}else if((l|0)!=32){u=29;break}if(!((b[q>>1]&1)==0&O)){c[$>>2]=1;rv(A,332,$)|0;c[$>>2]=4;rv(A,334,$)|0;g=5;u=29;break}if(g<<16>>16==2){b[X>>1]=2;c[$>>2]=1;c[$+4>>2]=X;rv(A,338,$)|0;g=2;u=29}else u=29}else if((y|0)==11){e=(((w&65535)>>>0)/3|0)&65535;if(F){g=2;m=3;u=32;break}c[$>>2]=0;rv(A,65560,$)|0;g=-32691;m=3;u=32;break}else if((y|0)==12){e=w>>>2&16383;g=2;m=4;u=32;break}else if((y|0)==10){e=w>>>2&16383;if((b[q>>1]&1)==0&O){b[Y>>1]=2;c[$>>2]=1;c[$+4>>2]=Y;rv(A,338,$)|0;g=2;m=4;u=30;break}else{c[$>>2]=1;rv(A,332,$)|0;c[$>>2]=4;rv(A,334,$)|0;g=5;m=4;u=29;break}}else if((y|0)==9){e=(((w&65535)>>>0)/3|0)&65535;g=2;m=3;u=30;break}else{g=1;m=1;u=29;break}while(0);b:do if((u|0)==29){u=0;switch(y|0){case 8:{c[$>>2]=6;rv(A,339,$)|0;break b}case 10:case 9:case 4:case 2:case 1:{u=30;break b}case 5:case 3:{c[$>>2]=2;rv(A,339,$)|0;break b}case 12:case 11:case 7:case 6:{u=32;break b}default:break b}}while(0);if((u|0)==30){u=0;c[$>>2]=1;rv(A,339,$)|0}else if((u|0)==32){u=0;c[$>>2]=3;rv(A,339,$)|0}l=c[q+4>>2]|0;if((l|0)!=0?(aa=c[q+8>>2]|0,(aa|0)!=0):0){c[$>>2]=l;c[$+4>>2]=aa;rv(A,34675,$)|0}c[$>>2]=z;rv(A,256,$)|0;c[$>>2]=B;rv(A,257,$)|0;v=m&65535;c[$>>2]=v;rv(A,277,$)|0;l=e&65535;c[$>>2]=l;rv(A,258,$)|0;c[$>>2]=g&65535;rv(A,262,$)|0;c[$>>2]=1;rv(A,284,$)|0;c[$>>2]=1;rv(A,274,$)|0;c[$>>2]=1;rv(A,266,$)|0;c[$>>2]=Vw(A,-1)|0;rv(A,278,$)|0;c[$>>2]=2;rv(A,296,$)|0;ca=+(~~(+((tI(C)|0)>>>0)*.0254+.5)>>>0>>>0);h[k>>3]=ca;c[$>>2]=c[k>>2];c[$+4>>2]=c[k+4>>2];rv(A,282,$)|0;ca=+(~~(+((uI(C)|0)>>>0)*.0254+.5)>>>0>>>0);h[k>>3]=ca;c[$>>2]=c[k>>2];c[$+4>>2]=c[k+4>>2];rv(A,283,$)|0;if(P){c[$>>2]=j;Xea(V,312320,$)|0;c[$>>2]=2;rv(A,254,$)|0;c[$>>2]=Q;c[$+4>>2]=0;rv(A,297,$)|0;c[$>>2]=V;rv(A,285,$)|0}else{c[$>>2]=(E|0)!=0&1;rv(A,254,$)|0}t=g<<16>>16==3;if(t){o=hI(C)|0;m=kI(C)|0;o=o&65535;n=qea(o*6|0)|0;if(!n){u=42;break}p=n+(o<<1)|0;q=o<<1;r=n+(q<<1)|0;if(o){s=o;do{s=s+-1|0;b[n+(s<<1)>>1]=(((d[m+(s<<2)+2>>0]|0)*65535|0)>>>0)/255|0;b[n+(s+o<<1)>>1]=(((d[m+(s<<2)+1>>0]|0)*65535|0)>>>0)/255|0;b[n+(s+q<<1)>>1]=(((d[m+(s<<2)>>0]|0)*65535|0)>>>0)/255|0}while((s|0)>0)}c[$>>2]=n;c[$+4>>2]=p;c[$+8>>2]=r;rv(A,320,$)|0;rea(n)}n=da(v,l)|0;q=g<<16>>16==-32691;l=q|(G|0)!=0;m=l|(H|0)!=0;o=m|(I|0)!=0;c:do if(!(o|(J|0)!=0)){m=n&65535;l=(m|0)!=1;d:do if(l|K)if(l|L){e:do if(M){if(D)switch(m|0){case 128:case 96:case 64:case 48:case 32:case 24:case 16:case 8:case 4:break e;case 1:{e=4;break d}default:{e=1;u=59;break c}}if(g<<16>>16!=3&(m|0)==8|(m|0)==24){e=Vw(A,-1)|0;c[$>>2]=e+8-(e&7);rv(A,278,$)|0;e=7;u=59;break c}}while(0);c[$>>2]=5;rv(A,259,$)|0;if(!(e<<16>>16==16|e<<16>>16==8)){c[$>>2]=1;rv(A,317,$)|0;break c}if((n&65528)>>>0<8|t){c[$>>2]=1;rv(A,317,$)|0;break c}else{c[$>>2]=2;rv(A,317,$)|0;break c}}else e=4;else e=3;while(0);c[$>>2]=e;rv(A,259,$)|0;c[_>>2]=0;c[$>>2]=_;sv(A,257,$)|0;c[$>>2]=c[_>>2];rv(A,278,$)|0;if((e|0)==3){c[$>>2]=5;rv(A,292,$)|0;c[$>>2]=2;rv(A,266,$)|0}}else{e=o?(m?(l?(q?34676:32773):32946):8):1;u=59}while(0);if((u|0)==59){u=0;c[$>>2]=e;rv(A,259,$)|0}do if((CI(6,C)|0)!=0?(c[_>>2]=0,c[W>>2]=0,(TK(C,_,W)|0)!=0):0){e=c[W>>2]|0;l=4-(e&3)+e|0;m=qea(l)|0;if(!m){rea(c[_>>2]|0);break}sfa(m|0,0,l|0)|0;qfa(m|0,c[_>>2]|0,e|0)|0;if(!(zw(A)|0))e=l>>>2;else{e=l>>>2;bx(m,e)}c[$>>2]=e;c[$+4>>2]=m;rv(A,33723,$)|0;rea(m);rea(c[_>>2]|0)}while(0);c[_>>2]=0;jI(7,C,312328,_)|0;e=c[_>>2]|0;if((e|0)!=0?(JK(e)|0)!=0:0){s=IK(c[_>>2]|0)|0;t=JK(c[_>>2]|0)|0;c[$>>2]=s;c[$+4>>2]=t;rv(A,700,$)|0}fL(A,1,C)|0;dL(A,C)|0;r=(E|0)==0&T;if(r){t=Z;c[t>>2]=0;c[t+4>>2]=0;c[$>>2]=1;c[$+4>>2]=Z;rv(A,330,$)|0}q=dI(C)|0;f:do if(!x){g=qea(q)|0;e=(g|0)==0;if((y|0)!=11|F){if(e){u=110;break a}if(B){e=B+-1|0;l=0;do{qfa(g|0,qJ(C,e-l|0)|0,q|0)|0;rx(A,g,l,0)|0;l=l+1|0}while(B>>>0>l>>>0)}rea(g);break}else{if(e){u=104;break a}if(B){e=B+-1|0;l=0;do{sK(g,qJ(C,e-l|0)|0,z);rx(A,g,l,0)|0;l=l+1|0}while(B>>>0>l>>>0)}rea(g);break}}else{switch(w&65535|0){case 4:case 1:break;case 24:case 32:{n=qea(q)|0;if(!n){u=95;break a}if(B){o=B+-1|0;e=g<<16>>16==5|(z|0)==0;m=0;do{qfa(n|0,qJ(C,o-m|0)|0,q|0)|0;if(!e){l=n;g=0;while(1){x=l+2|0;y=a[x>>0]|0;a[x>>0]=a[l>>0]|0;a[l>>0]=y;g=g+1|0;if((g|0)==(z|0))break;else l=l+v|0}}rx(A,n,m,0)|0;m=m+1|0}while(B>>>0>m>>>0)}rea(n);break f}case 8:{u=77;break}default:break f}if((u|0)==77?(0,(oI(C)|0)!=0):0){g=pI(C)|0;m=qea(z<<1)|0;if(!m){u=80;break a}o=(z|0)==0;q=B;while(1){p=q+-1|0;if((p|0)<=-1)break;e=qJ(C,p)|0;if(!o){n=m;l=0;while(1){y=a[e>>0]|0;a[n>>0]=y;a[n+1>>0]=a[g+(y&255)>>0]|0;l=l+1|0;if((l|0)==(z|0))break;else{n=n+v|0;e=e+1|0}}}rx(A,m,B-q|0,0)|0;q=p}rea(m);break}e=qea(q)|0;if(!e){u=89;break a}if(B){l=B+-1|0;g=0;do{qfa(e|0,qJ(C,l-g|0)|0,q|0)|0;rx(A,e,g,0)|0;g=g+1|0}while(B>>>0>g>>>0)}rea(e)}while(0);if(P|r){Uv(A)|0;e=1}else e=1}else e=0;E=E+1|0;if(!e){e=0;u=116;break}if(E>>>0>=U>>>0){u=116;break}else e=C}if((u|0)==42){ba=gc(4)|0;c[ba>>2]=315480;qd(ba|0,366936,0)}else if((u|0)==80){ba=gc(4)|0;c[ba>>2]=315480;qd(ba|0,366936,0)}else if((u|0)==89){ba=gc(4)|0;c[ba>>2]=315480;qd(ba|0,366936,0)}else if((u|0)==95){ba=gc(4)|0;c[ba>>2]=315480;qd(ba|0,366936,0)}else if((u|0)==104){ba=gc(4)|0;c[ba>>2]=315480;qd(ba|0,366936,0)}else if((u|0)==110){ba=gc(4)|0;c[ba>>2]=315480;qd(ba|0,366936,0)}else if((u|0)==116){i=ba;return e|0}return 0}function mX(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;k=j+16|0;f=j;g=j+4|0;h=j+8|0;e=j+12|0;c[k>>2]=2771273;c[f>>2]=704662861;c[g>>2]=2836809;c[h>>2]=721440077;c[e>>2]=0;Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,1,4,b)|0;if(!(ffa(k,e,4)|0)){h=1;i=j;return h|0}if(!(ffa(f,e,4)|0)){h=1;i=j;return h|0}if(!(ffa(g,e,4)|0)){h=1;i=j;return h|0}h=(ffa(h,e,4)|0)==0&1;i=j;return h|0}function nX(){return 312304}function oX(a){a=a|0;a=a+-1|0;if(a>>>0>=32){a=0;return a|0}a=-2139094903>>>a&1;return a|0}function pX(a){a=a|0;return (a+-1|0)>>>0<12|0}function qX(){return 1}function rX(){return 1}function sX(){return 313320}function tX(){return 313304}function uX(){return 313288}function vX(){return 0}function wX(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;l=p+9|0;o=p+8|0;k=p;if(!f){e=0;i=p;return e|0}a[l>>0]=0;a:do if(!(Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,1,1,f)|0))j=0;else{j=0;do{n=d[l>>0]|0;h=n&127|j;j=h<<7;if(!(n&128)){j=h;break a}}while((Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,1,1,f)|0)!=0)}while(0);b[k>>1]=j;if(j&65535){p=gc(4)|0;c[p>>2]=313264;qd(p|0,366936,0)}n=k+2|0;Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](n,1,1,f)|0;if((a[n>>0]|0)<0){k=k+3|0;a[k>>0]=-128;do{Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](k,1,1,f)|0;j=a[k>>0]|0;h=j&255;g=h&96;if((g|0)==96){j=h>>>4&7;g=h&15;n=qea(j)|0;m=qea(g)|0;Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](n,j,1,f)|0;Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](m,g,1,f)|0;rea(n);rea(m);m=13}else if(!g){a[o>>0]=0;n=(Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](o,1,1,f)|0)==0;if(n|(a[o>>0]|0)>-1)m=13;else{do n=(Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](o,1,1,f)|0)==0;while(!(n|(a[o>>0]|0)>-1));m=13}}if((m|0)==13){m=0;j=a[k>>0]|0}}while(j<<24>>24<0)}a[l>>0]=0;b:do if(!(Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,1,1,f)|0))j=0;else{j=0;do{n=d[l>>0]|0;h=n&127|j;j=h<<7;if(!(n&128)){j=h;break b}}while((Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,1,1,f)|0)!=0)}while(0);a[l>>0]=0;c:do if(!(Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,1,1,f)|0))h=0;else{h=0;do{n=d[l>>0]|0;g=n&127|h;h=g<<7;if(!(n&128)){h=g;break c}}while((Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,1,1,f)|0)!=0)}while(0);o=h&65535;j=PH(j&65535,o,1,0,0,0)|0;if(!j){p=gc(4)|0;c[p>>2]=315016;qd(p|0,366936,0)}l=kI(j)|0;a[l>>0]=0;a[l+1>>0]=0;a[l+2>>0]=0;a[l+4>>0]=-1;a[l+5>>0]=-1;a[l+6>>0]=-1;l=eI(j)|0;if(!o){e=j;i=p;return e|0}n=o+-1|0;if((l|0)>0){h=0;m=0}else{h=0;g=0;do{qJ(j,n-h|0)|0;g=g+1<<16>>16;h=g&65535}while(h>>>0>>0);i=p;return j|0}do{k=qJ(j,n-h|0)|0;h=0;g=0;do{Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](k+h|0,1,1,f)|0;g=g+1<<16>>16;h=g&65535}while((h|0)<(l|0));m=m+1<<16>>16;h=m&65535}while(h>>>0>>0);i=p;return j|0}function xX(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=i;i=i+16|0;n=p+8|0;l=p;if(!((g|0)!=0&(h|0)!=0)){h=0;i=p;return h|0}if((YH(g)|0)!=1){h=gc(4)|0;c[h>>2]=313216;qd(h|0,366936,0)}b[l>>1]=0;j=l+2|0;a[j>>0]=0;m=l+4|0;b[m>>1]=WH(g)|0;o=l+6|0;b[o>>1]=XH(g)|0;k=e[l>>1]|0;l=1;while(1)if(!(127<<(l&255)*7&k))break;else l=l+1<<24>>24;f=f+4|0;if((l&255)>1)do{l=l+-1<<24>>24;a[n>>0]=k>>>((l&255)*7|0)|128;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,1,1,h)|0}while((l&255)>1);a[n>>0]=k&127;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,1,1,h)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](j,1,1,h)|0;k=e[m>>1]|0;l=1;while(1)if(!(127<<(l&255)*7&k))break;else l=l+1<<24>>24;if((l&255)>1)do{l=l+-1<<24>>24;a[n>>0]=k>>>((l&255)*7|0)|128;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,1,1,h)|0}while((l&255)>1);a[n>>0]=k&127;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,1,1,h)|0;k=e[o>>1]|0;l=1;while(1)if(!(127<<(l&255)*7&k))break;else l=l+1<<24>>24;if((l&255)>1)do{l=l+-1<<24>>24;a[n>>0]=k>>>((l&255)*7|0)|128;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,1,1,h)|0}while((l&255)>1);a[n>>0]=k&127;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,1,1,h)|0;l=eI(g)|0;k=b[o>>1]|0;if(!(k<<16>>16)){h=1;i=p;return h|0}j=l&65535;l=0;do{n=qJ(g,(k&65535)+~(l&65535)|0)|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,j,1,h)|0;l=l+1<<16>>16;k=b[o>>1]|0}while((l&65535)<(k&65535));l=1;i=p;return l|0}function yX(){return 313192}function zX(a){a=a|0;return (a|0)==1|0}function AX(a){a=a|0;return (a|0)==1|0}function BX(){return 313696}function CX(){return 313672}function DX(){return 313664}function EX(){return 0}function FX(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+2080|0;u=v;l=v+2064|0;k=v+1552|0;m=v+1040|0;p=v+8|0;r=v+16|0;j=-1;h=-1;o=0;a:while(1){b:while(1){n=h;while(1){f=0;while(1){g=Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](l,1,1,e)|0;t=a[l>>0]|0;h=f+1|0;a[k+f>>0]=t;if(t<<24>>24!=10&(h|0)<512)f=h;else break}if((g|0)<1){h=313536;t=n;s=0;break a}a[k+h>>0]=0;if((tfa(k|0)|0)==511){h=313648;t=n;s=0;break a}c[u>>2]=m;c[u+4>>2]=p;if((Oca(k,313376,u)|0)!=2){h=n;break b}h=Zca(m,95)|0;h=(h|0)==0?m:h+1|0;if(!(gfa(313392,h)|0)){h=n;break}t=(gfa(313400,h)|0)==0;n=t?c[p>>2]|0:n}j=c[p>>2]|0}c[u>>2]=m;if((Oca(k,313408,u)|0)==1){m=j;t=h;g=10;q=15;break}c[u>>2]=m;if((Oca(k,313432,u)|0)==1){m=j;t=h;g=11;q=15;break}c[u>>2]=m;t=(Oca(k,313456,u)|0)==1;g=t?11:o;if(t){m=j;t=h;q=15;break}else o=g}c:do if((q|0)==15)if((m|0)!=-1)if((t|0)!=-1){h=(m|0)%16|0;if((h|0)>0)j=(h|0)<9&(g|0)==10&1;else j=0;n=((m+7|0)/8|0)+j|0;o=da(n,t)|0;s=qea(o)|0;if(s){h=0;do{c[r+(h<<2)>>2]=256;h=h+1|0}while((h|0)!=256);c[r+192>>2]=0;c[r+196>>2]=1;c[r+200>>2]=2;c[r+204>>2]=3;c[r+208>>2]=4;c[r+212>>2]=5;c[r+216>>2]=6;c[r+220>>2]=7;c[r+224>>2]=8;c[r+228>>2]=9;c[r+260>>2]=10;c[r+264>>2]=11;c[r+268>>2]=12;c[r+272>>2]=13;c[r+276>>2]=14;c[r+280>>2]=15;c[r+388>>2]=10;c[r+392>>2]=11;c[r+396>>2]=12;c[r+400>>2]=13;c[r+404>>2]=14;c[r+408>>2]=15;h=(o|0)>0;if((g|0)!=10){if(h){f=0;l=s}else{h=0;j=m;break}while(1){do{Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,e)|0;h=c[r+(d[u>>0]<<2)>>2]|0}while((h|0)==256);while(1){Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,e)|0;j=d[u>>0]|0;g=c[r+(j<<2)>>2]|0;if((g|0)!=256){h=g|h<<4;if((h|0)>255){h=313488;j=m;break c}else continue}if((j&223|0)!=88)break;if(!h)h=0;else{h=313488;j=m;break c}}a[l>>0]=h;f=f+1|0;if((f|0)>=(o|0)){h=0;j=m;break c}else l=l+1|0}}if(h){if(!j){f=0;j=s;while(1){do Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,e)|0;while((a[u>>0]|0)!=120);Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,e)|0;h=a[u>>0]|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,e)|0;h=(c[r+((h&255)<<2)>>2]<<4)+(c[r+(d[u>>0]<<2)>>2]|0)|0;if((h|0)>255){h=313488;j=m;break c}Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,e)|0;g=a[u>>0]|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,e)|0;g=(c[r+((g&255)<<2)>>2]<<4)+(c[r+(d[u>>0]<<2)>>2]|0)|0;if((g|0)>255){h=313488;j=m;break c}a[j>>0]=g;a[j+1>>0]=h;f=f+2|0;if((f|0)>=(o|0)){h=0;j=m;break c}else j=j+2|0}}else{k=0;h=s}while(1){do Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,e)|0;while((a[u>>0]|0)!=120);Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,e)|0;j=a[u>>0]|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,e)|0;j=(c[r+((j&255)<<2)>>2]<<4)+(c[r+(d[u>>0]<<2)>>2]|0)|0;if((j|0)>255){h=313488;j=m;break c}Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,e)|0;g=a[u>>0]|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,e)|0;g=(c[r+((g&255)<<2)>>2]<<4)+(c[r+(d[u>>0]<<2)>>2]|0)|0;if((g|0)>255){h=313488;j=m;break c}f=h+1|0;a[h>>0]=g;k=k+2|0;if(!((k|0)%(n|0)|0))h=f;else{a[f>>0]=j;h=h+2|0}if((k|0)>=(o|0)){h=0;j=m;break}}}else{h=0;j=m}}else{h=313360;j=m;s=0}}else{h=313504;j=m;t=-1;s=0}else{h=313520;j=-1;s=0}while(0);if(h){v=gc(4)|0;c[v>>2]=h;qd(v|0,366912,0)}o=PH(j,t,1,0,0,0)|0;if(!o){v=gc(4)|0;c[v>>2]=313360;qd(v|0,366912,0)}b=kI(o)|0;a[b>>0]=0;a[b+1>>0]=0;a[b+2>>0]=0;a[b+4>>0]=-1;a[b+5>>0]=-1;a[b+6>>0]=-1;if((t|0)<=0){rea(s);i=v;return o|0}p=t+-1|0;q=(j|0)>0;h=s;r=0;while(1){n=qJ(o,p-r|0)|0;if(q){l=0;g=1;m=0;while(1){k=(l&255)>7;h=k?h+1|0:h;f=k?1:g;g=m&7;if(!(d[h>>0]&f)){b=n+(m>>3)|0;a[b>>0]=d[b>>0]|128>>>g}else{b=n+(m>>3)|0;a[b>>0]=d[b>>0]&65407>>>g}m=m+1|0;if((m|0)==(j|0))break;else{l=k?1:l+1<<24>>24;g=f<<1&254}}}r=r+1|0;if((r|0)>=(t|0))break;else h=h+1|0}rea(s);i=v;return o|0}function GX(b,c){b=b|0;c=c|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;g=k+8|0;j=k;h=0;while(1){f=Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](g,1,1,c)|0;l=a[g>>0]|0;e=h+1|0;a[j+h>>0]=l;if(l<<24>>24!=10&(e|0)<7)h=e;else break}if((f|0)>=1?(a[j+e>>0]=0,(gfa(j,313352)|0)==0):0){j=1;i=k;return j|0}j=0;i=k;return j|0}function HX(){return 313336}function IX(a){a=a|0;return 0}function JX(a){a=a|0;return 0}function KX(){return 314472}function LX(){return 314448}function MX(){return 314440}function NX(){return 314408}function OX(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+352|0;v=F;u=F+88|0;E=F+68|0;C=F+64|0;A=F+60|0;B=F+56|0;D=F+72|0;t=F+36|0;q=F+24|0;s=F+20|0;r=F+16|0;p=F+40|0;z=F+44|0;if(!e){e=0;i=F;return e|0}f=g&32768;o=(f|0)==0;f=f>>>15;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](v,1,1,e)|0;while(1){if((a[v>>0]|0)==123)break;if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](v,1,1,e)|0)!=1){j=5;break}}if((j|0)==5){e=gc(4)|0;c[e>>2]=314056;qd(e|0,366936,0)}h=S0(b,e)|0;if(!h){e=gc(4)|0;c[e>>2]=314088;qd(e|0,366936,0)}c[v>>2]=E;c[v+4>>2]=C;c[v+8>>2]=A;c[v+12>>2]=B;y=(Oca(h,313896,v)|0)==4;rea(h);if(!y){e=gc(4)|0;c[e>>2]=314120;qd(e|0,366936,0)}h=c[E>>2]|0;g=c[C>>2]|0;if((c[A>>2]|0)>256)y=OH(f,h,g,24,16711680,65280,255)|0;else y=OH(f,h,g,8,0,0,0)|0;x=D+4|0;c[x>>2]=0;c[D+8>>2]=0;c[D>>2]=D+4;a:do if((c[A>>2]|0)>0){l=t+2|0;k=t+1|0;m=t+3|0;n=0;b:while(1){h=S0(b,e)|0;if(!h){j=16;break}p2(q,h,c[B>>2]|0);f=h+(c[B>>2]|0)|0;g=Vca(f,9)|0;if(g)do{a[g>>0]=32;g=Vca(g+1|0,9)|0}while((g|0)!=0);g=$ca(f,314184)|0;if(!g){j=46;break}f=g+3|0;while(1){g=a[f>>0]|0;if(g<<24>>24==35){j=23;break}else if(g<<24>>24!=32){j=33;break}f=f+1|0}do if((j|0)==23){c[s>>2]=0;c[r>>2]=0;c[p>>2]=0;f=f+1|0;g=Vca(f,32)|0;if(g)a[g>>0]=0;g=tfa(f|0)|0;if((g|0)==12){c[v>>2]=s;c[v+4>>2]=r;c[v+8>>2]=p;g=Oca(f,314240,v)|0;c[s>>2]=c[s>>2]>>8;c[r>>2]=c[r>>2]>>8;c[p>>2]=c[p>>2]>>8}else if((g|0)==3){c[v>>2]=s;c[v+4>>2]=r;c[v+8>>2]=p;g=Oca(f,314192,v)|0;j=c[s>>2]|0;c[s>>2]=j<<4|j;j=c[r>>2]|0;c[r>>2]=j<<4|j;j=c[p>>2]|0;c[p>>2]=j<<4|j}else if((g|0)==6){c[v>>2]=s;c[v+4>>2]=r;c[v+8>>2]=p;g=Oca(f,314208,v)|0}else if((g|0)==9){c[v>>2]=s;c[v+4>>2]=r;c[v+8>>2]=p;g=Oca(f,314224,v)|0;c[s>>2]=c[s>>2]>>4;c[r>>2]=c[r>>2]>>4;c[p>>2]=c[p>>2]>>4}else{j=31;break b}if((g|0)!=3){j=31;break b}a[t>>0]=c[s>>2];a[k>>0]=c[r>>2];a[l>>0]=c[p>>2]}else if((j|0)==33){if((hfa(f,314296,4)|0)!=0?(hfa(f,314304,4)|0)!=0:0){g=Vca(f,32)|0;c:do if(g){while(1){j=g+1|0;if((a[j>>0]|0)!=32){if((a[g+2>>0]|0)==32)break;if((a[g+3>>0]|0)==32)break}g=Vca(j,32)|0;if(!g)break c}a[g>>0]=0}while(0);g=f+((tfa(f|0)|0)+-1)|0;if((a[g>>0]|0)==32)do{a[g>>0]=0;g=g+-1|0}while((a[g>>0]|0)==32);if(!(DI(f,t,k,l)|0)){j=45;break b}else break}a[l>>0]=-1;a[k>>0]=-1;a[t>>0]=-1}while(0);a[m>>0]=(c[A>>2]|0)>256?0:n&255;j=T0(D,q)|0;f=c[t>>2]|0;a[j>>0]=f;a[j+1>>0]=f>>8;a[j+2>>0]=f>>16;a[j+3>>0]=f>>24;if((c[A>>2]|0)<257){j=kI(y)|0;a[j+(n<<2)>>0]=a[l>>0]|0;a[j+(n<<2)+1>>0]=a[k>>0]|0;a[j+(n<<2)+2>>0]=a[t>>0]|0}rea(h);v2(q);n=n+1|0;if((n|0)>=(c[A>>2]|0))break a}if((j|0)==16){e=gc(4)|0;c[e>>2]=314152;qd(e|0,366936,0)}else if((j|0)==31){rea(h);e=gc(4)|0;c[e>>2]=314256;qd(e|0,366936,0)}else if((j|0)==45){c[v>>2]=h;Xea(u,314312,v)|0;rea(h);e=gc(4)|0;c[e>>2]=u;qd(e|0,366912,0)}else if((j|0)==46){rea(h);e=gc(4)|0;c[e>>2]=314336;qd(e|0,366936,0)}}while(0);d:do if(o?(w=c[C>>2]|0,(w|0)>0):0){h=w;l=0;while(1){h=qJ(y,h+~l|0)|0;k=S0(b,e)|0;if(!k)break;if((c[E>>2]|0)>0){j=k;g=0;while(1){p2(z,j,c[B>>2]|0);f=T0(D,z)|0;if((c[A>>2]|0)>256){v=a[f+1>>0]|0;w=a[f>>0]|0;a[h>>0]=a[f+2>>0]|0;a[h+1>>0]=v;a[h+2>>0]=w;h=h+3|0}else{a[h>>0]=a[f+3>>0]|0;h=h+1|0}f=c[B>>2]|0;v2(z);g=g+1|0;if((g|0)>=(c[E>>2]|0))break;else j=j+f|0}}rea(k);l=l+1|0;h=c[C>>2]|0;if((h|0)<=(l|0))break d}e=gc(4)|0;c[e>>2]=314376;qd(e|0,366936,0)}while(0);U0(D,c[x>>2]|0);e=y;i=F;return e|0}function PX(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;T=i;i=i+464|0;Q=T;k=T+354|0;z=T+336|0;F=T+56|0;P=T+448|0;O=T+442|0;N=T+80|0;R=T+20|0;S=T+32|0;y=T+44|0;if(!((e|0)!=0&(f|0)!=0)){Q=0;i=T;return Q|0}j=k+0|0;h=313744|0;g=j+87|0;do{a[j>>0]=a[h>>0]|0;j=j+1|0;h=h+1|0}while((j|0)<(g|0));j=z+0|0;h=313832|0;g=j+18|0;do{a[j>>0]=a[h>>0]|0;j=j+1|0;h=h+1|0}while((j|0)<(g|0));j=F+0|0;h=313856|0;g=j+18|0;do{a[j>>0]=a[h>>0]|0;j=j+1|0;h=h+1|0}while((j|0)<(g|0));a[P+0>>0]=a[313880]|0;a[P+1>>0]=a[313881]|0;a[P+2>>0]=a[313882]|0;a[P+3>>0]=a[313883]|0;a[P+4>>0]=a[313884]|0;a[O+0>>0]=a[313888]|0;a[O+1>>0]=a[313889]|0;a[O+2>>0]=a[313890]|0;a[O+3>>0]=a[313891]|0;a[O+4>>0]=a[313892]|0;a[O+5>>0]=a[313893]|0;M=b+4|0;K=d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24;L=tfa(k|0)|0;if((Xd[K&255](k,L,1,f)|0)!=1){Q=0;i=T;return Q|0}I=WH(e)|0;J=XH(e)|0;E=YH(e)|0;t=kI(e)|0;K=R+4|0;c[K>>2]=0;B=R+8|0;c[B>>2]=0;C=R+4|0;c[R>>2]=C;L=S+4|0;c[L>>2]=0;G=S+8|0;c[G>>2]=0;H=S+4|0;c[S>>2]=H;D=(J|0)>0;if(D){u=J+-1|0;v=(I|0)>0;w=(E|0)>8;j=0;x=0;while(1){k=qJ(e,u-x|0)|0;if(v){s=0;do{h=a[k>>0]|0;if(w){r=a[k+1>>0]|0;q=a[k+2>>0]|0;n=h;o=r;m=q;k=k+3|0;p=h}else{p=h&255;n=0;o=0;m=h;k=k+1|0;q=a[t+(p<<2)+2>>0]|0;r=a[t+(p<<2)+1>>0]|0;p=a[t+(p<<2)>>0]|0}g=c[L>>2]|0;if(g){l=(o&255)<<8|(n&255)<<16|m&255;h=H;a:do{while(1){if((c[g+16>>2]|0)>>>0>=l>>>0){h=g;break}g=c[g+4>>2]|0;if(!g)break a}g=c[h>>2]|0}while((g|0)!=0);if(!((h|0)!=(H|0)?l>>>0>=(c[h+16>>2]|0)>>>0:0))A=17}else A=17;if((A|0)==17){A=0;a[313959]=0;g=j;l=14;while(1){h=313944+l|0;a[h>>0]=a[313960+((g>>>0)%92|0)>>0]|0;if(g>>>0>91&(l|0)>0){g=(g>>>0)/92|0;l=l+-1|0}else break}p2(y,h,tfa(h|0)|0);h=c[L>>2]|0;do if(h){b=(o&255)<<8|(n&255)<<16|m&255;while(1){g=c[h+16>>2]|0;if(b>>>0>>0){g=c[h>>2]|0;if(!g){g=h;A=23;break}else{h=g;continue}}if(g>>>0>=b>>>0){A=27;break}g=h+4|0;l=c[g>>2]|0;if(!l){A=26;break}else h=l}if((A|0)==23){A=0;c[Q>>2]=h;l=g;g=h;break}else if((A|0)==26){A=0;c[Q>>2]=h;l=g;g=h;break}else if((A|0)==27){A=0;c[Q>>2]=h;l=Q;g=h;break}}else{c[Q>>2]=H;l=H;g=H}while(0);h=c[l>>2]|0;if(!h){h=jda(32)|0;c[h+16>>2]=(o&255)<<8|(n&255)<<16|m&255;m=h+20|0;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=g;c[l>>2]=h;g=c[c[S>>2]>>2]|0;if(!g)g=h;else{c[S>>2]=g;g=c[l>>2]|0}VR(c[L>>2]|0,g);c[G>>2]=(c[G>>2]|0)+1}w2(h+20|0,y)|0;h=c[K>>2]|0;do if(h){while(1){g=c[h+16>>2]|0;if(j>>>0>>0){g=c[h>>2]|0;if(!g){g=h;A=36;break}else{h=g;continue}}if(g>>>0>=j>>>0){A=40;break}g=h+4|0;l=c[g>>2]|0;if(!l){A=39;break}else h=l}if((A|0)==36){A=0;c[Q>>2]=h;break}else if((A|0)==39){A=0;c[Q>>2]=h;break}else if((A|0)==40){A=0;c[Q>>2]=h;g=Q;break}}else{c[Q>>2]=C;g=C;h=C}while(0);l=c[g>>2]|0;if(!l){l=jda(24)|0;c[l+16>>2]=j;m=l+20|0;a[m+0>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=h;c[g>>2]=l;h=c[c[R>>2]>>2]|0;if(!h)h=l;else{c[R>>2]=h;h=c[g>>2]|0}VR(c[K>>2]|0,h);c[B>>2]=(c[B>>2]|0)+1;h=l}else h=l;a[h+20>>0]=q;a[h+21>>0]=r;a[h+22>>0]=p;v2(y);j=j+1|0}s=s+1|0}while((s|0)<(I|0))}x=x+1|0;if((J|0)<=(x|0)){q=j;break}}}else q=0;t=~~(+ba(+(+(q|0)))/4.5217885770490405)+1|0;A=WH(e)|0;y=XH(e)|0;c[Q>>2]=A;c[Q+4>>2]=y;c[Q+8>>2]=q;c[Q+12>>2]=t;Xea(N,313896,Q)|0;y=d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24;A=tfa(N|0)|0;b:do if((Xd[y&255](N,A,1,f)|0)==1?(y=d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24,A=tfa(z|0)|0,(Xd[y&255](z,A,1,f)|0)==1):0){if((q|0)>0){m=q+-1|0;p=0;do{a[313959]=0;j=p;h=14;while(1){k=313944+h|0;a[k>>0]=a[313960+((j>>>0)%92|0)>>0]|0;if(j>>>0>91&(h|0)>0){j=(j>>>0)/92|0;h=h+-1|0}else break}b=c[K>>2]|0;do if(b){g=b;while(1){j=c[g+16>>2]|0;if(p>>>0>>0){j=c[g>>2]|0;if(!j){j=g;h=g;A=60;break}else{g=j;continue}}if(j>>>0>=p>>>0){j=g;A=64;break}j=g+4|0;h=c[j>>2]|0;if(!h){h=g;A=63;break}else g=h}if((A|0)==60){c[Q>>2]=h;l=j;break}else if((A|0)==63){c[Q>>2]=h;l=j;break}else if((A|0)==64){c[Q>>2]=j;l=Q;h=j;break}}else{c[Q>>2]=C;l=C;h=C}while(0);j=c[l>>2]|0;if(!j){g=jda(24)|0;c[g+16>>2]=p;j=g+20|0;a[j+0>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=h;c[l>>2]=g;j=c[c[R>>2]>>2]|0;if(!j)j=g;else{c[R>>2]=j;j=c[l>>2]|0}VR(c[K>>2]|0,j);c[B>>2]=(c[B>>2]|0)+1;b=c[K>>2]|0;j=g}o=d[j+20>>0]|0;do if(b){g=b;while(1){j=c[g+16>>2]|0;if(p>>>0>>0){j=c[g>>2]|0;if(!j){j=g;h=g;A=73;break}else{g=j;continue}}if(j>>>0>=p>>>0){j=g;A=77;break}j=g+4|0;h=c[j>>2]|0;if(!h){h=g;A=76;break}else g=h}if((A|0)==73){c[Q>>2]=h;l=j;break}else if((A|0)==76){c[Q>>2]=h;l=j;break}else if((A|0)==77){c[Q>>2]=j;l=Q;h=j;break}}else{c[Q>>2]=C;l=C;h=C}while(0);j=c[l>>2]|0;if(!j){g=jda(24)|0;c[g+16>>2]=p;j=g+20|0;a[j+0>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=h;c[l>>2]=g;j=c[c[R>>2]>>2]|0;if(!j)j=g;else{c[R>>2]=j;j=c[l>>2]|0}VR(c[K>>2]|0,j);c[B>>2]=(c[B>>2]|0)+1;h=c[K>>2]|0;j=g}else h=b;n=a[j+21>>0]|0;do if(h){g=h;while(1){j=c[g+16>>2]|0;if(p>>>0>>0){j=c[g>>2]|0;if(!j){j=g;h=g;A=86;break}else{g=j;continue}}if(j>>>0>=p>>>0){j=g;A=90;break}j=g+4|0;h=c[j>>2]|0;if(!h){h=g;A=89;break}else g=h}if((A|0)==86){c[Q>>2]=h;g=j;break}else if((A|0)==89){c[Q>>2]=h;g=j;break}else if((A|0)==90){c[Q>>2]=j;g=Q;h=j;break}}else{c[Q>>2]=C;g=C;h=C}while(0);j=c[g>>2]|0;if(!j){j=jda(24)|0;c[j+16>>2]=p;A=j+20|0;a[A+0>>0]=0;a[A+1>>0]=0;a[A+2>>0]=0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=h;c[g>>2]=j;h=c[c[R>>2]>>2]|0;if(!h)h=j;else{c[R>>2]=h;h=c[g>>2]|0}VR(c[K>>2]|0,h);c[B>>2]=(c[B>>2]|0)+1}z=d[j+22>>0]|0;c[Q>>2]=t;c[Q+4>>2]=k;c[Q+8>>2]=o;c[Q+12>>2]=n&255;c[Q+16>>2]=z;Xea(N,313912,Q)|0;z=d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24;A=tfa(N|0)|0;if((Xd[z&255](N,A,1,f)|0)!=1){j=0;break b}j=d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24;if((p|0)==(m|0)){A=tfa(F|0)|0;if((Xd[j&255](F,A,1,f)|0)!=1){j=0;break b}}else{A=tfa(P|0)|0;if((Xd[j&255](P,A,1,f)|0)!=1){j=0;break b}}p=p+1|0}while((p|0)<(q|0))}if(D){r=J+-1|0;s=(I|0)>0;p=(E|0)>8;q=0;while(1){j=qJ(e,r-q|0)|0;if(s){o=0;do{k=a[j>>0]|0;h=j+1|0;if(p){m=k;n=a[h>>0]|0;k=a[j+2>>0]|0;j=j+3|0}else{m=0;n=0;j=h}h=c[L>>2]|0;do if(h){l=(n&255)<<8|(m&255)<<16|k&255;while(1){g=c[h+16>>2]|0;if(l>>>0>>0){g=c[h>>2]|0;if(!g){g=h;A=109;break}else{h=g;continue}}if(g>>>0>=l>>>0){A=113;break}g=h+4|0;b=c[g>>2]|0;if(!b){A=112;break}else h=b}if((A|0)==109){c[Q>>2]=h;b=h;break}else if((A|0)==112){c[Q>>2]=h;b=h;break}else if((A|0)==113){c[Q>>2]=h;g=Q;b=h;break}}else{c[Q>>2]=H;g=H;b=H}while(0);h=c[g>>2]|0;if(!h){h=jda(32)|0;c[h+16>>2]=(n&255)<<8|(m&255)<<16|k&255;k=h+20|0;c[k+0>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=b;c[g>>2]=h;k=c[c[S>>2]>>2]|0;if(!k)k=h;else{c[S>>2]=k;k=c[g>>2]|0}VR(c[L>>2]|0,k);c[G>>2]=(c[G>>2]|0)+1}k=h+20|0;if(!(a[k>>0]&1))k=k+1|0;else k=c[h+28>>2]|0;c[Q>>2]=t;c[Q+4>>2]=k;Xea(N,313936,Q)|0;o=o+1|0;if((Xd[(d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24)&255](N,t,1,f)|0)!=1){j=0;break b}}while((o|0)<(I|0))}j=d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24;if((r|0)==(q|0)){F=tfa(O|0)|0;if((Xd[j&255](O,F,1,f)|0)!=1){j=0;break b}}else{F=tfa(P|0)|0;if((Xd[j&255](P,F,1,f)|0)!=1){j=0;break b}}q=q+1|0;if((J|0)<=(q|0)){j=1;break}}}else j=1}else j=0;while(0);V0(S,c[L>>2]|0);W0(R,c[K>>2]|0);Q=j;i=T;return Q|0}function QX(a,b){a=a|0;b=b|0;var c=0,e=0,f=0;f=i;i=i+256|0;e=f;b=Xd[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,1,256,b)|0;a:do if((b|0)>=10?(c=b+-9|0,(c|0)>0):0){b=0;while(1){if(!(hfa(e+b|0,313728,9)|0)){b=1;break a}b=b+1|0;if((b|0)>=(c|0)){b=0;break}}}else b=0;while(0);i=f;return b|0}function RX(){return 313712}function SX(a){a=a|0;return (a&-17|0)==8|0}function TX(a){a=a|0;return (a|0)==1|0}function UX(){return 1}function VX(e,f,g,h,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0;sa=i;i=i+96|0;ea=sa+92|0;fa=sa;$=sa+4|0;ma=sa+8|0;na=sa+32|0;oa=sa+56|0;ra=sa+80|0;c[ma+0>>2]=0;c[ma+4>>2]=0;c[ma+8>>2]=0;c[ma+12>>2]=0;c[ma+16>>2]=0;c[ma+20>>2]=0;c[na+0>>2]=0;c[na+4>>2]=0;c[na+8>>2]=0;c[na+12>>2]=0;c[na+16>>2]=0;c[na+20>>2]=0;c[oa+0>>2]=0;c[oa+4>>2]=0;c[oa+8>>2]=0;c[oa+12>>2]=0;c[oa+16>>2]=0;c[oa+20>>2]=0;ka=ra+4|0;c[ka>>2]=0;G=ra+8|0;c[G>>2]=0;Q=ra+4|0;c[ra>>2]=Q;ga=f+g|0;R=ma+20|0;la=(k|0)==0;ha=f;V=na+8|0;W=na+4|0;X=na+16|0;H=na+20|0;I=ma+8|0;J=ma+4|0;L=ma+16|0;M=oa+8|0;N=oa+4|0;O=oa+16|0;P=oa+20|0;t=0;n=0;p=ga;a:while(1){if(t){p=c[H>>2]|0;n=c[X>>2]|0;o=p+-1|0;q=o+n|0;l=c[W>>2]|0;q=c[(c[l+(q>>>10<<2)>>2]|0)+((q&1023)<<2)>>2]|0;c[H>>2]=o;o=c[V>>2]|0;if((o|0)==(l|0))l=0;else l=(o-l<<8)+-1|0;if((1-p+l-n|0)>>>0>2047){nda(c[o+-4>>2]|0);c[V>>2]=(c[V>>2]|0)+-4;n=c[R>>2]|0}else n=t;p=c[L>>2]|0;o=n+-1|0;r=o+p|0;l=c[J>>2]|0;r=b[(c[l+(r>>>11<<2)>>2]|0)+((r&2047)<<1)>>1]|0;c[R>>2]=o;o=c[I>>2]|0;if((o|0)==(l|0))l=0;else l=(o-l<<9)+-1|0;if((1-n+l-p|0)>>>0>4095){nda(c[o+-4>>2]|0);c[I>>2]=(c[I>>2]|0)+-4}n=c[P>>2]|0;o=c[O>>2]|0;t=n+-1|0;l=t+o|0;p=c[N>>2]|0;l=c[(c[p+(l>>>10<<2)>>2]|0)+((l&1023)<<2)>>2]|0;c[P>>2]=t;t=c[M>>2]|0;if((t|0)==(p|0))p=0;else p=(t-p<<8)+-1|0;if((1-n+p-o|0)>>>0>2047){nda(c[t+-4>>2]|0);c[M>>2]=(c[M>>2]|0)+-4;z=q;n=r}else{z=q;n=r}}else z=p;s=z;u=n&65535;q=s<<16|u;t=c[ka>>2]|0;r=(t|0)==0;do if(!r){p=Q;o=t;b:do{while(1){if((c[o+16>>2]|0)>>>0>=q>>>0){p=o;break}o=c[o+4>>2]|0;if(!o)break b}o=c[p>>2]|0}while((o|0)!=0);if((p|0)!=(Q|0)?q>>>0>=(c[p+16>>2]|0)>>>0:0){m=n;break}if(!r){while(1){p=c[t+16>>2]|0;if(q>>>0

>>0){p=c[t>>2]|0;if(!p){C=t;_=t;ia=25;break}else{t=p;continue}}if(p>>>0>=q>>>0){Y=t;ia=29;break}p=t+4|0;o=c[p>>2]|0;if(!o){B=p;Z=t;ia=28;break}else t=o}if((ia|0)==25){c[$>>2]=_;A=C;K=_;ia=31;break}else if((ia|0)==28){c[$>>2]=Z;A=B;K=Z;ia=31;break}else if((ia|0)==29){c[$>>2]=Y;A=$;K=Y;ia=31;break}}else ia=30}else ia=30;while(0);if((ia|0)==30){c[$>>2]=Q;A=Q;K=Q;ia=31}c:do if((ia|0)==31){ia=0;m=c[A>>2]|0;if(!m){m=jda(24)|0;c[m+16>>2]=q;c[m+20>>2]=0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=K;c[A>>2]=m;p=c[c[ra>>2]>>2]|0;if(!p)p=m;else{c[ra>>2]=p;p=c[A>>2]|0}VR(c[ka>>2]|0,p);c[G>>2]=(c[G>>2]|0)+1}c[m+20>>2]=1;m=a[z+1>>0]|0;if(la)m=d[z>>0]|0|(m&255)<<8;else m=(d[z>>0]|0)<<8|m&255;y=m&65535;if((n&65535)<(y&65535)?(s-ha+((m&65535)*12|0)|0)>>>0<=h>>>0:0){m=n;d:while(1){x=BK()|0;if(!x){ja=0;ia=216;break a}n=u*12|0;r=n|2;p=z+r|0;n=a[z+(n|3)>>0]|0;if(la)p=d[p>>0]|0|(n&255)<<8;else p=(d[p>>0]|0)<<8|n&255;MK(x,p&65535)|0;p=z+(r+2)|0;n=a[z+(r+3)>>0]|0;if(la)p=d[p>>0]|0|(n&255)<<8;else p=(d[p>>0]|0)<<8|n&255;p=p&65535;if((p+-1|0)>11){D=x;aa=u;ia=47;break}NK(x,p)|0;p=z+(r+4)|0;n=a[z+(r+7)>>0]|0;o=a[z+(r+6)>>0]|0;t=a[z+(r+5)>>0]|0;if(la)p=(o&255)<<16|(n&255)<<24|(t&255)<<8|(d[p>>0]|0);else p=(o&255)<<8|n&255|(t&255)<<16|(d[p>>0]|0)<<24;OK(x,p)|0;p=RK(GK(x)|0)|0;if((p|0)!=0?(HK(x)|0)>>>0>(4294967295/(p>>>0)|0)>>>0:0)CK(x);else ia=54;e:do if((ia|0)==54){ia=0;PK(x,da(HK(x)|0,p)|0)|0;n=z+(r+8)|0;do if((IK(x)|0)>>>0>=5){o=a[z+(r+11)>>0]|0;t=a[z+(r+10)>>0]|0;p=a[z+(r+9)>>0]|0;if(la)p=(t&255)<<16|(o&255)<<24|(p&255)<<8|(d[n>>0]|0);else p=(t&255)<<8|o&255|(p&255)<<16|(d[n>>0]|0)<<24;p=p-j|0;if(p>>>0>h>>>0){CK(x);break e}if((IK(x)|0)>>>0>(h-p|0)>>>0){CK(x);break e}else{w=f+p|0;break}}else w=n;while(0);v=(FK(x)|0)&65535;if((v|0)==37500|(v|0)==40965|(v|0)==34853|(v|0)==34665){if((FK(x)|0)<<16>>16==-28036){c[ea>>2]=0;jI(1,e,348216,ea)|0;t=JK(c[ea>>2]|0)|0;f:do if(ffa(315120,w,7)|0){if(!(ffa(315128,w,7)|0)){n=8;p=14;break}if(!(ffa(315136,w,5)|0)){n=8;p=14;break}if(!(ffa(315144,w,4)|0)){n=8;p=14;break}if(!(ffa(315152,w,12)|0)){n=0;p=0;break}if(!(ffa(315168,w,5)|0)){p=a[w+6>>0]|0;if(p<<24>>24==2){n=18;p=13;break}else if(p<<24>>24==1){n=8;p=11;break}else{n=0;p=0;break}}v=(t|0)!=0;do if(v){r=5;q=t;s=315176;do{o=a[s>>0]|0;p=a[q>>0]|0;s=s+1|0;q=q+1|0;if(!(o<<24>>24!=0&p<<24>>24!=0)){n=o;break}if(o<<24>>24!=p<<24>>24){o=zea(o&255)|0;n=o&255;ta=zea(p&255)|0;p=ta&255;if((ta^o)&255)break}else{n=o;p=o}r=r+-1|0}while((r|0)!=0);if(n<<24>>24==p<<24>>24){n=0;p=12;break f}else{r=5;q=t;s=315184}do{o=a[s>>0]|0;p=a[q>>0]|0;s=s+1|0;q=q+1|0;if(!(o<<24>>24!=0&p<<24>>24!=0)){n=o;break}if(o<<24>>24!=p<<24>>24){ta=zea(o&255)|0;n=ta&255;o=zea(p&255)|0;p=o&255;if((o^ta)&255)break}else{n=o;p=o}r=r+-1|0}while((r|0)!=0);if(n<<24>>24==p<<24>>24){n=0;p=5;break f}else{r=5;q=t;s=315192}do{o=a[s>>0]|0;p=a[q>>0]|0;s=s+1|0;q=q+1|0;if(!(o<<24>>24!=0&p<<24>>24!=0)){n=o;break}if(o<<24>>24!=p<<24>>24){ta=zea(o&255)|0;n=ta&255;o=zea(p&255)|0;p=o&255;if((o^ta)&255)break}else{n=o;p=o}r=r+-1|0}while((r|0)!=0);if(n<<24>>24!=p<<24>>24)break;p=(ffa(315200,w,6)|0)==0;n=p?6:0;p=p?7:6;break f}while(0);do if(ffa(315208,w,8)|0){if(v){r=8;q=t;s=315224;do{o=a[s>>0]|0;p=a[q>>0]|0;s=s+1|0;q=q+1|0;if(!(o<<24>>24!=0&p<<24>>24!=0)){n=o;break}if(o<<24>>24!=p<<24>>24){ta=zea(o&255)|0;n=ta&255;o=zea(p&255)|0;p=o&255;if((o^ta)&255)break}else{n=o;p=o}r=r+-1|0}while((r|0)!=0);if(n<<24>>24==p<<24>>24)break}if(!(ffa(315240,w,22)|0)){n=22;p=9;break f}if(v){r=7;q=t;s=315264;do{o=a[s>>0]|0;p=a[q>>0]|0;s=s+1|0;q=q+1|0;if(!(o<<24>>24!=0&p<<24>>24!=0)){n=o;break}if(o<<24>>24!=p<<24>>24){ta=zea(o&255)|0;n=ta&255;o=zea(p&255)|0;p=o&255;if((o^ta)&255)break}else{n=o;p=o}r=r+-1|0}while((r|0)!=0);if(n<<24>>24==p<<24>>24){n=0;p=10;break f}}if(!(ffa(315272,w,12)|0)){n=12;p=15;break f}do if(v){r=5;q=t;s=315288;do{o=a[s>>0]|0;p=a[q>>0]|0;s=s+1|0;q=q+1|0;if(!(o<<24>>24!=0&p<<24>>24!=0)){n=o;break}if(o<<24>>24!=p<<24>>24){ta=zea(o&255)|0;n=ta&255;v=zea(p&255)|0;p=v&255;if((v^ta)&255)break}else{n=o;p=o}r=r+-1|0}while((r|0)!=0);if(n<<24>>24==p<<24>>24){n=0;p=0;break f}else{r=6;q=t;s=315296}do{o=a[s>>0]|0;p=a[q>>0]|0;s=s+1|0;q=q+1|0;if(!(o<<24>>24!=0&p<<24>>24!=0)){n=o;break}if(o<<24>>24!=p<<24>>24){ta=zea(o&255)|0;n=ta&255;v=zea(p&255)|0;p=v&255;if((v^ta)&255)break}else{n=o;p=o}r=r+-1|0}while((r|0)!=0);if(n<<24>>24!=p<<24>>24){q=5;r=315304;do{o=a[r>>0]|0;p=a[t>>0]|0;r=r+1|0;t=t+1|0;if(!(o<<24>>24!=0&p<<24>>24!=0)){n=o;break}if(o<<24>>24!=p<<24>>24){ta=zea(o&255)|0;n=ta&255;v=zea(p&255)|0;p=v&255;if((v^ta)&255)break}else{n=o;p=o}q=q+-1|0}while((q|0)!=0);if(n<<24>>24!=p<<24>>24)break}p=(ffa(315312,w,4)|0)==0;n=p?6:0;p=p?17:16;break f}while(0);if(!(ffa(315320,w,12)|0)){n=12;p=18;break f}if(!(ffa(315336,w,12)|0)){n=12;p=18;break f}if((ffa(315352,w,8)|0)!=0?(ffa(315368,w,8)|0)!=0:0){n=0;p=0;break f}c[fa>>2]=0;jI(1,e,348264,fa)|0;p=JK(c[fa>>2]|0)|0;if((p|0)!=0?(ffa(315384,p,10)|0)==0:0){n=10;p=19;break f}n=10;p=20;break f}while(0);p=w+8|0;n=a[w+11>>0]|0;o=a[w+10>>0]|0;t=a[w+9>>0]|0;if(la){n=(o&255)<<16|(n&255)<<24|(t&255)<<8|(d[p>>0]|0);p=8;break}else{n=(o&255)<<8|n&255|(t&255)<<16|(d[p>>0]|0)<<24;p=8;break}}else{n=8;p=14}while(0);o=n;n=w+n|0}else{p=a[w+3>>0]|0;n=a[w+2>>0]|0;o=a[w+1>>0]|0;if(la)n=(n&255)<<16|(p&255)<<24|(o&255)<<8|(d[w>>0]|0);else n=(n&255)<<8|p&255|(o&255)<<16|(d[w>>0]|0)<<24;p=(FK(x)|0)&65535;if((p|0)==34665)p=2;else if((p|0)==40965)p=4;else if((p|0)==34853)p=3;else p=l;o=n;n=f+n|0}if(o>>>0>>0&(p|0)!=0){E=x;F=p;ba=u;ca=n;break d}_0(e,x,w,k,l)}else _0(e,x,w,k,l);CK(x)}while(0);m=m+1<<16>>16;if((m&65535)<(y&65535))u=u+1|0;else break c}if((ia|0)==47){ia=0;CK(D);m=aa&65535;break}q=ba&65535;o=c[V>>2]|0;t=c[W>>2]|0;if((o|0)==(t|0))p=0;else p=(o-t<<8)+-1|0;n=c[X>>2]|0;m=c[H>>2]|0;if((p-n|0)==(m|0)){X0(na);r=c[H>>2]|0;n=c[X>>2]|0;o=c[V>>2]|0;p=c[W>>2]|0}else{r=m;p=t}m=r+n|0;if((o|0)!=(p|0)?(S=(c[p+(m>>>10<<2)>>2]|0)+((m&1023)<<2)|0,(S|0)!=0):0)c[S>>2]=z;c[H>>2]=r+1;q=q+1<<16>>16;o=c[I>>2]|0;t=c[J>>2]|0;if((o|0)==(t|0))p=0;else p=(o-t<<9)+-1|0;n=c[L>>2]|0;m=c[R>>2]|0;if((p-n|0)==(m|0)){Y0(ma);r=c[R>>2]|0;n=c[L>>2]|0;o=c[I>>2]|0;p=c[J>>2]|0}else{r=m;p=t}m=r+n|0;if((o|0)!=(p|0)?(T=(c[p+(m>>>11<<2)>>2]|0)+((m&2047)<<1)|0,(T|0)!=0):0)b[T>>1]=q;c[R>>2]=r+1;o=c[M>>2]|0;t=c[N>>2]|0;if((o|0)==(t|0))p=0;else p=(o-t<<8)+-1|0;n=c[O>>2]|0;m=c[P>>2]|0;if((p-n|0)==(m|0)){Z0(oa);r=c[P>>2]|0;n=c[O>>2]|0;o=c[M>>2]|0;p=c[N>>2]|0}else{r=m;p=t}m=r+n|0;if((o|0)!=(p|0)?(U=(c[p+(m>>>10<<2)>>2]|0)+((m&1023)<<2)|0,(U|0)!=0):0)c[U>>2]=l;c[P>>2]=r+1;o=c[V>>2]|0;t=c[W>>2]|0;if((o|0)==(t|0))p=0;else p=(o-t<<8)+-1|0;n=c[X>>2]|0;m=c[H>>2]|0;if((p-n|0)==(m|0)){X0(na);r=c[H>>2]|0;n=c[X>>2]|0;o=c[V>>2]|0;p=c[W>>2]|0}else{r=m;p=t}m=r+n|0;do if((o|0)!=(p|0)){m=(c[p+(m>>>10<<2)>>2]|0)+((m&1023)<<2)|0;if(!m)break;c[m>>2]=ca}while(0);c[H>>2]=r+1;o=c[I>>2]|0;t=c[J>>2]|0;if((o|0)==(t|0))p=0;else p=(o-t<<9)+-1|0;n=c[L>>2]|0;m=c[R>>2]|0;if((p-n|0)==(m|0)){Y0(ma);r=c[R>>2]|0;n=c[L>>2]|0;o=c[I>>2]|0;p=c[J>>2]|0}else{r=m;p=t}m=r+n|0;do if((o|0)!=(p|0)){m=(c[p+(m>>>11<<2)>>2]|0)+((m&2047)<<1)|0;if(!m)break;b[m>>1]=0}while(0);c[R>>2]=r+1;o=c[M>>2]|0;t=c[N>>2]|0;if((o|0)==(t|0))p=0;else p=(o-t<<8)+-1|0;n=c[O>>2]|0;m=c[P>>2]|0;if((p-n|0)==(m|0)){Z0(oa);r=c[P>>2]|0;n=c[O>>2]|0;o=c[M>>2]|0;p=c[N>>2]|0}else{r=m;p=t}m=r+n|0;do if((o|0)!=(p|0)){m=(c[p+(m>>>10<<2)>>2]|0)+((m&1023)<<2)|0;if(!m)break;c[m>>2]=F}while(0);c[P>>2]=r+1;CK(E);m=q}else m=n}while(0);t=c[R>>2]|0;if(!t)break;else{n=m;p=z}}if((ia|0)==216){ta=c[ka>>2]|0;$0(ra,ta);a1(oa);b1(na);c1(ma);i=sa;return ja|0}m=a[f+(g+1)>>0]|0;if(la)m=d[ga>>0]|0|(m&255)<<8;else m=(d[ga>>0]|0)<<8|m&255;p=g+2+((m&65535)*12|0)|0;m=f+p|0;n=a[f+(p+3)>>0]|0;o=a[f+(p+2)>>0]|0;p=a[f+(p+1)>>0]|0;if(la)p=(o&255)<<16|(n&255)<<24|(p&255)<<8|(d[m>>0]|0);else p=(o&255)<<8|n&255|(p&255)<<16|(d[m>>0]|0)<<24;if(!((p|0)!=0&p>>>0>>0)){ta=1;qa=c[ka>>2]|0;$0(ra,qa);a1(oa);b1(na);c1(ma);i=sa;return ta|0}m=f+p|0;n=a[f+(p+1)>>0]|0;if(la)m=d[m>>0]|0|(n&255)<<8;else m=(d[m>>0]|0)<<8|n&255;w=m&65535;if(!w){ta=1;qa=c[ka>>2]|0;$0(ra,qa);a1(oa);b1(na);c1(ma);i=sa;return ta|0}v=p+2|0;t=12-ha|0;u=0;s=0;l=0;while(1){r=v+(u*12|0)|0;m=f+r|0;if((t+m|0)>>>0>=h>>>0){ja=0;ia=216;break}p=a[f+(r+1)>>0]|0;if(la)q=d[m>>0]|0|(p&255)<<8;else q=(d[m>>0]|0)<<8|p&255;p=f+(r+8)|0;n=a[f+(r+11)>>0]|0;o=a[f+(r+10)>>0]|0;m=a[f+(r+9)>>0]|0;if(la)m=(o&255)<<16|(n&255)<<24|(m&255)<<8|(d[p>>0]|0);else m=(o&255)<<8|n&255|(m&255)<<16|(d[p>>0]|0)<<24;p=q&65535;if((p|0)==513){p=m;m=l}else if((p|0)==514)p=s;else{p=s;m=l}u=u+1|0;if((u|0)>=(w|0)){pa=p;qa=m;break}else{s=p;l=m}}if((ia|0)==216){ta=c[ka>>2]|0;$0(ra,ta);a1(oa);b1(na);c1(ma);i=sa;return ja|0}if((pa|0)==0|(qa|0)==0|(qa+pa|0)>>>0>h>>>0){ta=1;qa=c[ka>>2]|0;$0(ra,qa);a1(oa);b1(na);c1(ma);i=sa;return ta|0}qa=eJ(f+pa|0,qa)|0;ta=gJ(2,qa,0)|0;fJ(qa);cI(e,ta)|0;RH(ta);ta=1;qa=c[ka>>2]|0;$0(ra,qa);a1(oa);b1(na);c1(ma);i=sa;return ta|0}function WX(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;k=c[a>>2]|0;e=(((c[l>>2]|0)-k|0)/12|0)+1|0;if(e>>>0>357913941)i8(a);m=a+8|0;f=k;d=((c[m>>2]|0)-f|0)/12|0;if(d>>>0<178956970){d=d<<1;d=d>>>0>>0?e:d;g=c[l>>2]|0;e=(g-f|0)/12|0;if(!d){h=0;i=0;f=g}else{f=g;j=6}}else{j=c[l>>2]|0;d=357913941;e=(j-f|0)/12|0;f=j;j=6}if((j|0)==6){h=d;i=jda(d*12|0)|0}d=i+(e*12|0)|0;j=i+(h*12|0)|0;if(!d){g=f;f=k}else{q2(d,b);g=c[l>>2]|0;f=c[a>>2]|0}h=i+((e+1|0)*12|0)|0;if((g|0)==(f|0)){e=d;f=g;d=g}else{e=g;do{d=d+-12|0;e=e+-12|0;q2(d,e)}while((e|0)!=(f|0));e=d;f=c[a>>2]|0;d=c[l>>2]|0}c[a>>2]=e;c[l>>2]=h;c[m>>2]=j;while(1){if((d|0)==(f|0))break;a=d+-12|0;v2(a);d=a}if(!f)return;nda(f);return}function XX(a,b){a=a|0;b=b|0;if(!b)return;else{XX(a,c[b>>2]|0);XX(a,c[b+4>>2]|0);nda(b);return}}function YX(a,b){a=a|0;b=b|0;if(!b)return;else{YX(a,c[b>>2]|0);YX(a,c[b+4>>2]|0);nda(b);return}}function ZX(a){a=a|0;var b=0;Pv(a,352344,8)|0;b=c[88084]|0;if(!b)return;Bd[b&511](a);return}function _X(a,d,f,h){a=a|0;d=d|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=i;i=i+48|0;o=x;w=x+32|0;k=x+38|0;l=x+16|0;m=x+36|0;r=x+24|0;s=x+8|0;c[w>>2]=0;if((d|0)==34665){w=1;i=x;return w|0}if((d|0)==34853&(h|0)==1){w=1;i=x;return w|0}v=XK()|0;u=d&65535;q=ZK(v,h,u,0)|0;if(!q){w=1;i=x;return w|0}t=Iv(a,d)|0;if(!t){w=1;i=x;return w|0}y=(Mv(t)|0)==0;j=Nv(t)|0;do if(!y)if((j|0)==-3){c[l>>2]=0;c[o>>2]=l;c[o+4>>2]=w;if((sv(a,d,o)|0)==1){n=0;l=c[l>>2]|0;break}else{y=1;i=x;return y|0}}else{b[k>>1]=0;c[o>>2]=k;c[o+4>>2]=w;if((sv(a,d,o)|0)==1){n=0;l=e[k>>1]|0;break}else{y=1;i=x;return y|0}}else{do if((j|0)!=-1?(Nv(t)|0)!=-3:0)if((Nv(t)|0)==-2){c[o>>2]=m;Yu(a,277,o)|0;l=e[m>>1]|0;break}else{l=Nv(t)|0;break}else l=1;while(0);if((Jv(t)|0)==301){y=1;i=x;return y|0}if(!((((Lv(t)|0)!=2?(Nv(t)|0)!=-1:0)?(Nv(t)|0)!=-3:0)?!((Nv(t)|0)==-2|l>>>0>1):0))p=21;if(((((((p|0)==21?(Jv(t)|0)!=297:0)?(Jv(t)|0)!=321:0)?(Jv(t)|0)!=530:0)?(Jv(t)|0)!=336:0)?(Jv(t)|0)!=258:0)?(Jv(t)|0)!=259:0){c[o>>2]=w;if((sv(a,d,o)|0)==1){n=0;break}else j=1;i=x;return j|0}j=Lv(t)|0;if((j|0)==10|(j|0)==5)k=4;else k=Gv(j)|0;j=_J(da(k,l)|0)|0;c[w>>2]=j;if((l|0)==2){c[o>>2]=j;c[o+4>>2]=j+k;n=sv(a,d,o)|0;p=34}else if((l|0)==1){c[o>>2]=j;n=sv(a,d,o)|0;p=34}else{c[o>>2]=Kv(t)|0;PI(18,352504,o)}if((p|0)==34?(n|0)==1:0){n=1;break}$J(c[w>>2]|0);y=1;i=x;return y|0}while(0);m=BK()|0;if(!m){if(!n){y=0;i=x;return y|0}$J(c[w>>2]|0);y=0;i=x;return y|0}MK(m,u)|0;KK(m,q)|0;do switch(Lv(t)|0){case 10:{j=qea(l<<3)|0;if(l){k=0;do{xK(s,+g[(c[w>>2]|0)+(k<<2)>>2]);y=k<<1;c[j+(y<<2)>>2]=zK(s)|0;c[j+((y|1)<<2)>>2]=AK(s)|0;yK(s);k=k+1|0}while(k>>>0>>0)}NK(m,5)|0;PK(m,da(Gv(Lv(t)|0)|0,l)|0)|0;OK(m,l)|0;QK(m,j)|0;rea(j);break}case 7:{NK(m,7)|0;PK(m,da(Gv(Lv(t)|0)|0,l)|0)|0;OK(m,l)|0;QK(m,c[w>>2]|0)|0;break}case 6:{NK(m,6)|0;PK(m,da(Gv(Lv(t)|0)|0,l)|0)|0;OK(m,l)|0;QK(m,c[w>>2]|0)|0;break}case 11:{NK(m,11)|0;PK(m,da(Gv(Lv(t)|0)|0,l)|0)|0;OK(m,l)|0;QK(m,c[w>>2]|0)|0;break}case 12:{NK(m,12)|0;PK(m,da(Gv(Lv(t)|0)|0,l)|0)|0;OK(m,l)|0;QK(m,c[w>>2]|0)|0;break}case 18:{NK(m,18)|0;PK(m,da(Gv(Lv(t)|0)|0,l)|0)|0;OK(m,l)|0;QK(m,c[w>>2]|0)|0;break}case 17:{NK(m,17)|0;PK(m,da(Gv(Lv(t)|0)|0,l)|0)|0;OK(m,l)|0;QK(m,c[w>>2]|0)|0;break}case 9:{NK(m,9)|0;PK(m,da(Gv(Lv(t)|0)|0,l)|0)|0;OK(m,l)|0;QK(m,c[w>>2]|0)|0;break}case 16:{NK(m,16)|0;PK(m,da(Gv(Lv(t)|0)|0,l)|0)|0;OK(m,l)|0;QK(m,c[w>>2]|0)|0;break}case 3:{NK(m,3)|0;PK(m,da(Gv(Lv(t)|0)|0,l)|0)|0;OK(m,l)|0;QK(m,c[w>>2]|0)|0;break}case 8:{NK(m,8)|0;PK(m,da(Gv(Lv(t)|0)|0,l)|0)|0;OK(m,l)|0;QK(m,c[w>>2]|0)|0;break}case 13:{NK(m,13)|0;PK(m,da(Gv(Lv(t)|0)|0,l)|0)|0;OK(m,l)|0;QK(m,c[w>>2]|0)|0;break}case 5:{j=qea(l<<3)|0;if(l){k=0;do{xK(r,+g[(c[w>>2]|0)+(k<<2)>>2]);y=k<<1;c[j+(y<<2)>>2]=zK(r)|0;c[j+((y|1)<<2)>>2]=AK(r)|0;yK(r);k=k+1|0}while(k>>>0>>0)}NK(m,5)|0;PK(m,da(Gv(Lv(t)|0)|0,l)|0)|0;OK(m,l)|0;QK(m,j)|0;rea(j);break}case 1:{NK(m,1)|0;PK(m,da(Gv(Lv(t)|0)|0,l)|0)|0;OK(m,l)|0;QK(m,c[w>>2]|0)|0;break}case 4:{NK(m,4)|0;PK(m,da(Gv(Lv(t)|0)|0,l)|0)|0;OK(m,l)|0;QK(m,c[w>>2]|0)|0;break}default:{if(((n|0)==0?(Lv(t)|0)==2:0)?(Nv(t)|0)==-1:0)j=(tfa(c[w>>2]|0)|0)+1|0;else j=da(Gv(Lv(t)|0)|0,l)|0;NK(m,2)|0;PK(m,j)|0;OK(m,j)|0;QK(m,c[w>>2]|0)|0}}while(0);j=_K(v,h,u)|0;if(j)LK(m,j)|0;y=aL(v,h)|0;BI(y,f,EK(m)|0,m)|0;CK(m);if(!n){y=1;i=x;return y|0}$J(c[w>>2]|0);y=1;i=x;return y|0}function $X(e,f,h){e=e|0;f=+f;h=h|0;var j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0.0,F=0.0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0,P=0,Q=0,T=0,U=0,Y=0;Y=i;i=i+16|0;J=Y;if(!e){e=0;i=Y;return e|0}if(f>=360.0)do f=f+-360.0;while(f>=360.0);if(f<0.0)do f=f+360.0;while(f<0.0);do if(!(f>45.0&f<=135.0)){if(f>135.0&f<=225.0){k=YH(e)|0;u=WH(e)|0;x=XH(e)|0;l=VH(e)|0;j=QH(l,u,x,k,0,0,0)|0;a:do if(j){switch(l|0){case 12:case 11:case 6:case 10:case 9:case 2:break;case 1:{if((k|0)==1){if((x|0)<=0)break a;k=x+-1|0;l=(u|0)>0;s=0;while(1){n=qJ(e,s)|0;o=qJ(j,k-s|0)|0;if(l){r=0;do{p=u-r+-1|0;q=p&7;if(!((d[n+(r>>3)>>0]|0)&128>>>(r&7))){U=o+(p>>3)|0;a[U>>0]=(d[U>>0]|0)&65407>>>q}else{U=o+(p>>3)|0;a[U>>0]=d[U>>0]|0|128>>>q}r=r+1|0}while((r|0)!=(u|0))}s=s+1|0;if((s|0)==(x|0))break a}}break}default:break a}r=eI(e)|0;r=(r>>>0)/((WH(e)|0)>>>0)|0;if((x|0)>0){q=x+-1|0;n=da(r,u+-1|0)|0;s=(u|0)>0;o=0-r|0;t=0;do{p=qJ(e,t)|0;k=qJ(j,q-t|0)|0;b:do if(s){l=k+n|0;k=0;while(1){switch(r|0){case 3:{b[l>>1]=b[p>>1]|0;a[l+2>>0]=a[p+2>>0]|0;break}case 12:{g[l>>2]=+g[p>>2];g[l+4>>2]=+g[p+4>>2];g[l+8>>2]=+g[p+8>>2];break}case 16:{g[l>>2]=+g[p>>2];g[l+4>>2]=+g[p+4>>2];g[l+8>>2]=+g[p+8>>2];g[l+12>>2]=+g[p+12>>2];break}case 6:{c[l>>2]=c[p>>2];b[l+4>>1]=b[p+4>>1]|0;break}case 1:{a[l>>0]=a[p>>0]|0;break}case 4:{c[l>>2]=c[p>>2];break}case 8:{c[l>>2]=c[p>>2];c[l+4>>2]=c[p+4>>2];break}case 2:{b[l>>1]=b[p>>1]|0;break}default:{}}k=k+1|0;if((k|0)==(u|0))break b;else{l=l+o|0;p=p+r|0}}}while(0);t=t+1|0}while((t|0)!=(x|0))}}else j=0;while(0);f=f+-180.0;J=j;break}if(f>225.0&f<=315.0){k=YH(e)|0;O=WH(e)|0;Q=XH(e)|0;l=VH(e)|0;j=QH(l,Q,O,k,0,0,0)|0;c:do if(j){P=dI(e)|0;T=dI(j)|0;switch(l|0){case 1:break;case 12:case 11:case 6:case 10:case 9:case 2:{n=fI(e)|0;s=fI(j)|0;o=((eI(e)|0)>>>0)/((WH(e)|0)>>>0)|0;if(!O)break c;t=da(P,Q+-1|0)|0;u=(Q|0)==0;k=0-P|0;q=0;while(1){d:do if(!u){p=s+(da(q,T)|0)|0;l=n+((da(q,o)|0)+t)|0;r=0;while(1){switch(o|0){case 3:{b[p>>1]=b[l>>1]|0;a[p+2>>0]=a[l+2>>0]|0;break}case 8:{c[p>>2]=c[l>>2];c[p+4>>2]=c[l+4>>2];break}case 1:{a[p>>0]=a[l>>0]|0;break}case 12:{g[p>>2]=+g[l>>2];g[p+4>>2]=+g[l+4>>2];g[p+8>>2]=+g[l+8>>2];break}case 2:{b[p>>1]=b[l>>1]|0;break}case 6:{c[p>>2]=c[l>>2];b[p+4>>1]=b[l+4>>1]|0;break}case 16:{g[p>>2]=+g[l>>2];g[p+4>>2]=+g[l+4>>2];g[p+8>>2]=+g[l+8>>2];g[p+12>>2]=+g[l+12>>2];break}case 4:{c[p>>2]=c[l>>2];break}default:{}}r=r+1|0;if((r|0)==(Q|0))break d;else{p=p+o|0;l=l+k|0}}}while(0);q=q+1|0;if((q|0)==(O|0))break c}}default:break c}if((k|0)==1){C=fI(e)|0;D=fI(j)|0;p=(da(T,O)|0)+-1|0;r=(T<<3)-Q|0;if(!Q)break;q=J+4|0;n=(P|0)==0;l=T+-1|0;z=0;while(1){tb(J|0,r+z|0,8);s=1<>2];o=da(z,P)|0;if(!n){y=0;do{t=C+(y+o)|0;u=y<<3;k=l-(c[J>>2]|0)|0;B=0;do{U=k+(da(B+u|0,T)|0)|0;x=D+U|0;if((U|0)<0|(U|0)>(p|0))break;if((d[t>>0]|0)&128>>>B)a[x>>0]=d[x>>0]|0|s;B=B+1|0}while(B>>>0<8);y=y+1|0}while((y|0)!=(P|0))}z=z+1|0;if((z|0)==(Q|0))break c}}else if(!((k|0)==8|(k|0)==24|(k|0)==32))break;x=fI(e)|0;y=fI(j)|0;z=eI(e)|0;z=(z>>>0)/((WH(e)|0)>>>0)|0;if(Q){B=(O|0)==0;C=Q+-1|0;D=~O;G=~Q;K=-65;L=0;while(1){H=~(K>>>0>G>>>0?K:G);M=L;L=L+64|0;if(!B){I=M>>>0<(Q>>>0>>0?Q:L)>>>0;J=-65;k=0;while(1){p=~(J>>>0>D>>>0?J:D);if(I){l=da(k,z)|0;r=da(k,T)|0;q=k+64|0;n=k>>>0<(O>>>0>>0?O:q)>>>0;t=M;while(1){e:do if(n){s=y+((da(t,z)|0)+r)|0;o=x+((da(C-t|0,P)|0)+l)|0;u=k;while(1){switch(z|0){case 1:{a[s>>0]=a[o>>0]|0;break}case 2:{b[s>>1]=b[o>>1]|0;break}case 3:{b[s>>1]=b[o>>1]|0;a[s+2>>0]=a[o+2>>0]|0;break}case 6:{c[s>>2]=c[o>>2];b[s+4>>1]=b[o+4>>1]|0;break}case 4:{c[s>>2]=c[o>>2];break}case 12:{g[s>>2]=+g[o>>2];g[s+4>>2]=+g[o+4>>2];g[s+8>>2]=+g[o+8>>2];break}case 8:{c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];break}case 16:{g[s>>2]=+g[o>>2];g[s+4>>2]=+g[o+4>>2];g[s+8>>2]=+g[o+8>>2];g[s+12>>2]=+g[o+12>>2];break}default:{}}u=u+1|0;if((u|0)==(p|0))break e;else{s=s+T|0;o=o+z|0}}}while(0);t=t+1|0;if((t|0)==(H|0)){k=q;break}}}else k=k+64|0;if(k>>>0>>0)J=J+-64|0;else break}}if(L>>>0>=Q>>>0)break;else K=K+-64|0}}}else j=0;while(0);f=f+-270.0;J=j}else J=e}else{l=YH(e)|0;P=WH(e)|0;U=XH(e)|0;k=VH(e)|0;j=QH(k,U,P,l,0,0,0)|0;f:do if(j){Q=dI(e)|0;T=dI(j)|0;switch(k|0){case 1:break;case 12:case 11:case 6:case 10:case 9:case 2:{k=fI(e)|0;p=fI(j)|0;l=((eI(e)|0)>>>0)/((WH(e)|0)>>>0)|0;if(!P)break f;r=P+-1|0;q=(U|0)==0;t=0;while(1){g:do if(!q){n=p+(da(t,T)|0)|0;s=k+(da(r-t|0,l)|0)|0;o=0;while(1){switch(l|0){case 1:{a[n>>0]=a[s>>0]|0;break}case 2:{b[n>>1]=b[s>>1]|0;break}case 3:{b[n>>1]=b[s>>1]|0;a[n+2>>0]=a[s+2>>0]|0;break}case 4:{c[n>>2]=c[s>>2];break}case 6:{c[n>>2]=c[s>>2];b[n+4>>1]=b[s+4>>1]|0;break}case 8:{c[n>>2]=c[s>>2];c[n+4>>2]=c[s+4>>2];break}case 12:{g[n>>2]=+g[s>>2];g[n+4>>2]=+g[s+4>>2];g[n+8>>2]=+g[s+8>>2];break}case 16:{g[n>>2]=+g[s>>2];g[n+4>>2]=+g[s+4>>2];g[n+8>>2]=+g[s+8>>2];g[n+12>>2]=+g[s+12>>2];break}default:{}}o=o+1|0;if((o|0)==(U|0))break g;else{n=n+l|0;s=s+Q|0}}}while(0);t=t+1|0;if((t|0)==(P|0))break f}}default:break f}if((l|0)==1){x=fI(e)|0;y=fI(j)|0;u=(da(T,P)|0)+-1|0;if(!U)break;z=J+4|0;p=P+-1|0;if(!Q){k=0;while(1){tb(J|0,k|0,8);k=k+1|0;if((k|0)==(U|0))break f}}else o=0;while(1){tb(J|0,o|0,8);n=128>>>(c[z>>2]|0);l=da(o,Q)|0;s=0;do{r=x+(s+l)|0;k=da(p-(s<<3)|0,T)|0;k=k+(c[J>>2]|0)|0;t=0;do{O=k-(da(t,T)|0)|0;q=y+O|0;if((O|0)<0|(O|0)>(u|0))break;if((d[r>>0]|0)&128>>>t)a[q>>0]=d[q>>0]|0|n;t=t+1|0}while((t|0)<8);s=s+1|0}while((s|0)!=(Q|0));o=o+1|0;if((o|0)==(U|0))break f}}else if(!((l|0)==8|(l|0)==24|(l|0)==32))break;B=fI(e)|0;C=fI(j)|0;D=eI(e)|0;D=(D>>>0)/((WH(e)|0)>>>0)|0;if(U){G=(P|0)==0;H=P+-1|0;I=(D|0)==1;K=~U;L=~U;M=~P;O=-65;k=0;while(1){q=~(O>>>0>K>>>0?O:K);if(G)k=k+64|0;else{n=da(k,Q)|0;s=da(k,D)|0;o=k+64|0;t=k>>>0<(U>>>0>>0?U:o)>>>0;u=-65-k|0;u=~(u>>>0>>0?L:u);y=-65;z=0;while(1){x=~(y>>>0>M>>>0?y:M);p=z;z=z+64|0;if(p>>>0<(P>>>0>>0?P:z)>>>0)do{J=B+((da(H-p|0,D)|0)+n)|0;l=C+((da(p,T)|0)+s)|0;h:do if(t){if(I){r=k;while(1){a[l>>0]=a[J>>0]|0;r=r+1|0;if((r|0)==(q|0))break h;else{l=l+1|0;J=J+Q|0}}}else r=k;while(1){switch(D|0){case 12:{g[l>>2]=+g[J>>2];g[l+4>>2]=+g[J+4>>2];g[l+8>>2]=+g[J+8>>2];break}case 8:{c[l>>2]=c[J>>2];c[l+4>>2]=c[J+4>>2];break}case 16:{g[l>>2]=+g[J>>2];g[l+4>>2]=+g[J+4>>2];g[l+8>>2]=+g[J+8>>2];g[l+12>>2]=+g[J+12>>2];break}case 6:{c[l>>2]=c[J>>2];b[l+4>>1]=b[J+4>>1]|0;break}case 2:{b[l>>1]=b[J>>1]|0;break}case 3:{b[l>>1]=b[J>>1]|0;a[l+2>>0]=a[J+2>>0]|0;break}case 4:{c[l>>2]=c[J>>2];break}default:{}}r=r+1|0;if((r|0)==(u|0))break h;else{l=l+D|0;J=J+Q|0}}}while(0);p=p+1|0}while((p|0)!=(x|0));if(z>>>0>=P>>>0){k=o;break}else y=y+-64|0}}if(k>>>0>>0)O=O+-64|0;else break}}}else j=0;while(0);f=f+-90.0;J=j}while(0);if(!J){e=0;i=Y;return e|0}if(f==0.0){if((J|0)!=(e|0)){e=J;i=Y;return e|0}e=UH(e)|0;i=Y;return e|0}o=YH(J)|0;m=f*3.141592653589793/180.0;F=+W(+m);N=+X(+(m*.5));k=WH(J)|0;p=XH(J)|0;q=VH(J)|0;E=+(p>>>0);n=(~~(E*+S(+N)+.5)>>>0)+k|0;s=QH(q,n,p,o,0,0,0)|0;do if(!s)j=0;else{i:do if(p){l=!(N>=0.0);r=0;while(1){f=+(r>>>0);if(l)f=f-E;f=N*(f+.5);j=~~+R(+f);f=f-+(j|0);switch(VH(J)|0){case 1:{U=YH(J)|0;if((U|0)==32|(U|0)==24|(U|0)==8)d1(J,s,r,j,f,h);break}case 10:case 9:case 2:{e1(J,s,r,j,f,h);break}case 12:case 11:case 6:{f1(J,s,r,j,f,h);break}default:{}}r=r+1|0;if((r|0)==(p|0))break i}}while(0);A=+(k>>>0);w=+S(+F);v=+V(+m);p=(~~(A*w+E*v+.5)>>>0)+1|0;r=QH(q,n,p,o,0,0,0)|0;if(!r){RH(s);j=0;break}if(F>0.0)f=F*(A+-1.0);else f=-(F*(A-+(n>>>0)));j:do if(n){k=0;while(1){j=~~+R(+f);m=f-+(j|0);switch(VH(s)|0){case 12:case 11:case 6:{i1(s,r,k,j,m,h);break}case 10:case 9:case 2:{h1(s,r,k,j,m,h);break}case 1:{U=YH(s)|0;if((U|0)==32|(U|0)==24|(U|0)==8)g1(s,r,k,j,m,h);break}default:{}}k=k+1|0;if((k|0)==(n|0))break j;else f=f-F}}while(0);RH(s);j=QH(q,(~~(E*w+A*v+.5)>>>0)+1|0,p,o,0,0,0)|0;if(!j){RH(r);j=0;break}f=F*(A+-1.0);if(!(F>=0.0))f=N*(1.0-+(p>>>0)-f);else f=-(N*f);k:do if(p){l=0;while(1){k=~~+R(+f);m=f-+(k|0);switch(VH(r)|0){case 10:case 9:case 2:{e1(r,j,l,k,m,h);break}case 1:{U=YH(r)|0;if((U|0)==32|(U|0)==24|(U|0)==8)d1(r,j,l,k,m,h);break}case 12:case 11:case 6:{f1(r,j,l,k,m,h);break}default:{}}l=l+1|0;if((l|0)==(p|0))break k;else f=N+f}}while(0);RH(r)}while(0);if((J|0)==(e|0)){e=j;i=Y;return e|0}RH(J);e=j;i=Y;return e|0}function aY(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0;h=i;i=i+16|0;f=h;if(!d){i=h;return}e=0;while(1){Hx(a,f,2);g[b>>2]=+((c[f>>2]|0)>>>0);e=e+1|0;if((e|0)==(d|0))break;else{b=b+4|0;a=a+2|0}}i=h;return}function bY(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0;h=i;i=i+16|0;f=h;if(!d){i=h;return}e=0;while(1){Hx(a,f,4);g[b>>2]=+((c[f>>2]|0)>>>0);e=e+1|0;if((e|0)==(d|0))break;else{b=b+4|0;a=a+4|0}}i=h;return}function cY(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;if(!c){i=f;return}d=0;while(1){Lx(a,e);g[b>>2]=+g[e>>2];d=d+1|0;if((d|0)==(c|0))break;else{b=b+4|0;a=a+4|0}}i=f;return}function dY(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;if(!c){i=f;return}d=0;while(1){Jx(a,e);g[b>>2]=+h[e>>3];d=d+1|0;if((d|0)==(c|0))break;else{b=b+4|0;a=a+8|0}}i=f;return}function eY(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g;if(!d){i=g;return}e=0;while(1){Hx(a,f,2);c[b>>2]=c[f>>2];e=e+1|0;if((e|0)==(d|0))break;else{b=b+4|0;a=a+2|0}}i=g;return}function fY(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g;if(!d){i=g;return}e=0;while(1){Hx(a,f,4);c[b>>2]=c[f>>2];e=e+1|0;if((e|0)==(d|0))break;else{b=b+4|0;a=a+4|0}}i=g;return}function gY(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0;h=i;i=i+16|0;f=h;if(!d){i=h;return}e=0;while(1){Lx(a,f);c[b>>2]=~~+g[f>>2];e=e+1|0;if((e|0)==(d|0))break;else{b=b+4|0;a=a+4|0}}i=h;return}function hY(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g;if(!d){i=g;return}e=0;while(1){Jx(a,f);c[b>>2]=~~+h[f>>3];e=e+1|0;if((e|0)==(d|0))break;else{b=b+4|0;a=a+8|0}}i=g;return}function iY(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!c)return;d=0;while(1){Gx(b,~~+g[a>>2]>>>0,2);d=d+1|0;if((d|0)==(c|0))break;else{b=b+2|0;a=a+4|0}}return}function jY(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!c)return;d=0;while(1){Gx(b,~~+g[a>>2]>>>0,4);d=d+1|0;if((d|0)==(c|0))break;else{b=b+4|0;a=a+4|0}}return}function kY(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!c)return;d=0;while(1){Kx(b,+g[a>>2]);d=d+1|0;if((d|0)==(c|0))break;else{b=b+4|0;a=a+4|0}}return}function lY(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!c)return;d=0;while(1){Ix(b,+g[a>>2]);d=d+1|0;if((d|0)==(c|0))break;else{b=b+8|0;a=a+4|0}}return}function mY(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+32|0;q=r;l=r+16|0;n=r+8|0;o=r+12|0;c[n>>2]=0;if(!d)Ra(250152,236248,3957,245448);if(!b)Ra(236352,236248,3958,245448);if(!f)Ra(249008,236248,3959,245448);if((e|0)!=8){ry(f,1,245472,q)|0;q=0;i=r;return q|0}p=b+196|0;Hx(d,p,2);h=c[p>>2]|0;e=c[b+112>>2]|0;if(h>>>0>=(da(c[b+116>>2]|0,e)|0)>>>0){c[q>>2]=h;ry(f,1,245504,q)|0;q=0;i=r;return q|0}g=c[b+156>>2]|0;m=(h>>>0)%(e>>>0)|0;k=(h>>>0)/(e>>>0)|0;Hx(d+2|0,l,4);j=d+6|0;e=c[l>>2]|0;do if((e|0)!=0&e>>>0<14){if((e|0)==12){c[q>>2]=12;ry(f,2,245528,q)|0;e=c[l>>2]|0;break}c[q>>2]=e;ry(f,1,245568,q)|0;q=0;i=r;return q|0}while(0);if(!e){ry(f,4,245632,q)|0;c[b+72>>2]=1}Hx(j,o,1);Hx(d+7|0,n,1);e=c[n>>2]|0;j=g+(h*5632|0)+5580|0;g=c[j>>2]|0;do if(!e)e=g;else{h=c[o>>2]|0;if((g+-1|0)>>>0>>0){c[q>>2]=h;c[q+4>>2]=g;ry(f,1,245744,q)|0;c[b+72>>2]=1;q=0;i=r;return q|0}if(h>>>0>>0){c[j>>2]=e;break}c[q>>2]=h;c[q+4>>2]=e;ry(f,1,245848,q)|0;c[b+72>>2]=1;q=0;i=r;return q|0}while(0);if((e|0)!=0?(e|0)==((c[o>>2]|0)+1|0):0){d=b+76|0;a[d>>0]=a[d>>0]|1}if(!(c[b+72>>2]|0))e=(c[l>>2]|0)+-12|0;else e=0;c[b+24>>2]=e;c[b+8>>2]=16;e=c[b+60>>2]|0;do if((e|0)!=-1)if((e|0)>-1){l=b+76|0;a[l>>0]=((c[p>>2]|0)!=(e|0)&1)<<2&255|a[l>>0]&-5;break}else Ra(245960,236248,4111,245448);else{if((m>>>0>=(c[b+28>>2]|0)>>>0?m>>>0<(c[b+36>>2]|0)>>>0:0)?k>>>0>=(c[b+32>>2]|0)>>>0:0)e=(k>>>0>=(c[b+40>>2]|0)>>>0&1)<<2&255;else e=4;l=b+76|0;a[l>>0]=a[l>>0]&-5|e}while(0);k=b+192|0;e=c[k>>2]|0;if(!e){q=1;i=r;return q|0}j=e+40|0;h=c[j>>2]|0;if(!h)Ra(246024,236248,4119,245448);d=c[p>>2]|0;c[h+(d*40|0)>>2]=d;c[h+(d*40|0)+12>>2]=c[o>>2];e=c[n>>2]|0;if(e){c[h+(d*40|0)+4>>2]=e;c[h+(d*40|0)+8>>2]=c[n>>2];e=c[h+(d*40|0)+16>>2]|0;if(!e){q=sea(c[n>>2]|0,24)|0;c[(c[j>>2]|0)+(d*40|0)+16>>2]=q;q=1;i=r;return q|0}e=tea(e,(c[n>>2]|0)*24|0)|0;if(!e){rea(c[(c[(c[k>>2]|0)+40>>2]|0)+((c[p>>2]|0)*40|0)+16>>2]|0);c[(c[(c[k>>2]|0)+40>>2]|0)+((c[p>>2]|0)*40|0)+16>>2]=0;ry(f,1,246064,q)|0;q=0;i=r;return q|0}else{c[(c[(c[k>>2]|0)+40>>2]|0)+((c[p>>2]|0)*40|0)+16>>2]=e;q=1;i=r;return q|0}}e=c[h+(d*40|0)+16>>2]|0;if(!e){c[h+(d*40|0)+8>>2]=10;n=sea(10,24)|0;h=c[j>>2]|0;c[h+(d*40|0)+16>>2]=n;j=n}else j=e;g=c[o>>2]|0;e=h+(d*40|0)+8|0;if(g>>>0<(c[e>>2]|0)>>>0){q=1;i=r;return q|0}o=g+1|0;c[e>>2]=o;e=tea(j,o*24|0)|0;if(!e){rea(c[(c[(c[k>>2]|0)+40>>2]|0)+((c[p>>2]|0)*40|0)+16>>2]|0);p=c[p>>2]|0;o=c[(c[k>>2]|0)+40>>2]|0;c[o+(p*40|0)+16>>2]=0;c[o+(p*40|0)+8>>2]=0;ry(f,1,246064,q)|0;q=0;i=r;return q|0}else{c[(c[(c[k>>2]|0)+40>>2]|0)+((c[p>>2]|0)*40|0)+16>>2]=e;q=1;i=r;return q|0}return 0}function nY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;n=s;l=s+8|0;f=s+4|0;c[l>>2]=d;if(!b)Ra(250152,236248,2404,248064);if(!a)Ra(236352,236248,2405,248064);if(!e)Ra(249008,236248,2406,248064);r=a+80|0;h=c[r>>2]|0;m=a+8|0;if((c[m>>2]|0)==16)k=(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)|0;else k=c[a+12>>2]|0;if(d>>>0<5){ry(e,1,248088,n)|0;r=0;i=s;return r|0}Hx(b,k,1);Hx(b+1|0,f,1);c[k+4>>2]=c[f>>2];g=k+8|0;Hx(b+2|0,g,2);f=c[a+164>>2]|0;if(!f)f=c[g>>2]|0;c[k+12>>2]=f;Hx(b+4|0,k+16|0,1);j=b+5|0;c[l>>2]=d+-5;h=c[h+16>>2]|0;if(h){b=c[k>>2]&1;f=c[k+5576>>2]|0;g=0;do{c[f+(g*1080|0)>>2]=b;g=g+1|0}while(g>>>0>>0)}if(!(j1(a,0,j,l,e)|0)){ry(e,1,248088,n)|0;r=0;i=s;return r|0}if(c[l>>2]|0){ry(e,1,248088,n)|0;r=0;i=s;return r|0}if((c[m>>2]|0)==16)f=(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)|0;else f=c[a+12>>2]|0;f=c[f+5576>>2]|0;m=f+4|0;b=c[m>>2]|0;k=b<<2;if((c[(c[r>>2]|0)+16>>2]|0)>>>0<=1){r=1;i=s;return r|0}a=f+8|0;e=f+12|0;n=f+16|0;o=f+20|0;p=f+812|0;q=f+944|0;c[f+1084>>2]=b;h=c[a>>2]|0;c[f+1088>>2]=h;j=c[e>>2]|0;c[f+1092>>2]=j;d=c[n>>2]|0;c[f+1096>>2]=d;g=c[o>>2]|0;c[f+1100>>2]=g;qfa(f+1892|0,p|0,k|0)|0;qfa(f+2024|0,q|0,k|0)|0;if((c[(c[r>>2]|0)+16>>2]|0)>>>0>2){l=h;h=3}else{r=1;i=s;return r|0}while(1){c[f+2164>>2]=b;c[f+2168>>2]=l;c[f+2172>>2]=j;c[f+2176>>2]=d;c[f+2180>>2]=g;qfa(f+2972|0,p|0,k|0)|0;qfa(f+3104|0,q|0,k|0)|0;if(h>>>0>=(c[(c[r>>2]|0)+16>>2]|0)>>>0){f=1;break}f=f+1080|0;b=c[m>>2]|0;l=c[a>>2]|0;j=c[e>>2]|0;d=c[n>>2]|0;g=c[o>>2]|0;h=h+1|0}i=s;return f|0}function oY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;f=n+8|0;l=n+4|0;c[f>>2]=d;if(!b)Ra(250152,236248,2610,247592);if(!a)Ra(236352,236248,2611,247592);if(!e)Ra(249008,236248,2612,247592);if((c[a+8>>2]|0)==16)k=(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)|0;else k=c[a+12>>2]|0;g=(c[a+80>>2]|0)+16|0;h=(c[g>>2]|0)>>>0<257?1:2;j=h+1|0;if(j>>>0>d>>>0){ry(e,1,247616,m)|0;m=0;i=n;return m|0}c[f>>2]=d-j;Hx(b,l,h);d=c[l>>2]|0;if(d>>>0>=(c[g>>2]|0)>>>0){ry(e,1,247648,m)|0;m=0;i=n;return m|0}Hx(b+h|0,(c[k+5576>>2]|0)+(d*1080|0)|0,1);if(!(j1(a,c[l>>2]|0,b+j|0,f,e)|0)){ry(e,1,247616,m)|0;m=0;i=n;return m|0}if(!(c[f>>2]|0)){m=1;i=n;return m|0}ry(e,1,247616,m)|0;m=0;i=n;return m|0}function pY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;f=k+12|0;if(!b)Ra(250152,236248,4503,245328);if(!a)Ra(236352,236248,4504,245328);if(!e)Ra(249008,236248,4505,245328);h=c[(c[a+80>>2]|0)+16>>2]|0;g=h>>>0<257?1:2;if((g+2|0)!=(d|0)){ry(e,1,245352,j)|0;e=0;i=k;return e|0}if((c[a+8>>2]|0)==16)a=(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)|0;else a=c[a+12>>2]|0;Hx(b,f,g);Hx(b+g|0,k+8|0,1);d=c[f>>2]|0;if(d>>>0>>0){Hx(b+(g+1)|0,(c[a+5576>>2]|0)+(d*1080|0)+808|0,1);e=1;i=k;return e|0}else{c[j>>2]=d;c[j+4>>2]=h;ry(e,1,245384,j)|0;e=0;i=k;return e|0}return 0}function qY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=h+4|0;c[f>>2]=d;if(!b)Ra(250152,236248,2721,247536);if(!a)Ra(236352,236248,2722,247536);if(!e)Ra(249008,236248,2723,247536);if(!(k1(a,0,b,f,e)|0)){ry(e,1,247560,g)|0;a=0;i=h;return a|0}if(c[f>>2]|0){ry(e,1,247560,g)|0;a=0;i=h;return a|0}if((c[a+8>>2]|0)==16)f=(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)|0;else f=c[a+12>>2]|0;f=c[f+5576>>2]|0;e=a+80|0;if((c[(c[e>>2]|0)+16>>2]|0)>>>0<=1){a=1;i=h;return a|0}d=f+24|0;g=f+804|0;a=f+28|0;b=1;while(1){c[f+1104>>2]=c[d>>2];c[f+1884>>2]=c[g>>2];qfa(f+1108|0,a|0,776)|0;b=b+1|0;if(b>>>0>=(c[(c[e>>2]|0)+16>>2]|0)>>>0){f=1;break}else f=f+1080|0}i=h;return f|0}function rY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;j=l+12|0;f=l+8|0;c[j>>2]=d;if(!b)Ra(250152,236248,2854,247128);if(!a)Ra(236352,236248,2855,247128);if(!e)Ra(249008,236248,2856,247128);h=a+80|0;do if((c[(c[h>>2]|0)+16>>2]|0)>>>0<257){if(d){Hx(b,f,1);g=b+1|0;b=d+-1|0;break}ry(e,1,247152,k)|0;a=0;i=l;return a|0}else{if(d>>>0>=2){Hx(b,f,2);g=b+2|0;b=d+-2|0;break}ry(e,1,247152,k)|0;a=0;i=l;return a|0}while(0);c[j>>2]=b;d=c[f>>2]|0;b=c[(c[h>>2]|0)+16>>2]|0;if(d>>>0>=b>>>0){c[k>>2]=d;c[k+4>>2]=b;ry(e,1,247184,k)|0;a=0;i=l;return a|0}if(!(k1(a,d,g,j,e)|0)){ry(e,1,247152,k)|0;a=0;i=l;return a|0}if(!(c[j>>2]|0)){a=1;i=l;return a|0}ry(e,1,247152,k)|0;a=0;i=l;return a|0}function sY(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+16|0;h=t;s=t+4|0;if(!d)Ra(250152,236248,3138,247048);if(!b)Ra(236352,236248,3139,247048);if(!f)Ra(249008,236248,3140,247048);r=c[(c[b+80>>2]|0)+16>>2]|0;q=r>>>0<257?1:2;p=(q<<1)+5|0;g=(e>>>0)/(p>>>0)|0;if((g|0)==0|((e>>>0)%(p>>>0)|0|0)!=0){ry(f,1,247072,h)|0;s=0;i=t;return s|0}if((c[b+8>>2]|0)==16)p=(c[b+156>>2]|0)+((c[b+196>>2]|0)*5632|0)|0;else p=c[b+12>>2]|0;e=p+5628|0;b=a[e>>0]|0;if(!(b&2))o=0;else o=(c[p+420>>2]|0)+1|0;n=o+g|0;if(n>>>0>31){c[h>>2]=n;ry(f,1,247104,h)|0;s=0;i=t;return s|0}a[e>>0]=b|2;if(o>>>0>>0){g=q+1|0;m=p+8|0;h=q+3|0;j=q|4;k=j+q|0;l=k+1|0;f=d;b=o;e=p+(o*148|0)+424|0;while(1){Hx(f,e,1);Hx(f+1|0,e+4|0,q);d=e+8|0;Hx(f+g|0,d,2);u=c[d>>2]|0;o=c[m>>2]|0;c[d>>2]=u>>>0>>0?u:o;Hx(f+h|0,e+12|0,1);d=e+16|0;Hx(f+j|0,d,q);Hx(f+k|0,s,1);c[e+36>>2]=c[s>>2];o=c[d>>2]|0;c[d>>2]=o>>>0>>0?o:r;b=b+1|0;if(b>>>0>=n>>>0)break;else{f=f+l|0;e=e+148|0}}}c[p+420>>2]=n+-1;u=1;i=t;return u|0}function tY(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+32|0;y=z;g=z+16|0;o=z+12|0;if(!b)Ra(236352,236248,1919,248144);if(!f)Ra(249008,236248,1920,248144);if(!d)Ra(250152,236248,1921,248144);w=c[b+80>>2]|0;x=b+88|0;if(e>>>0<36){ry(f,1,248168,y)|0;y=0;i=z;return y|0}v=e+-36|0;k=(v>>>0)/3|0;if((v>>>0)%3|0){ry(f,1,248168,y)|0;y=0;i=z;return y|0}Hx(d,g,2);c[x>>2]=c[g>>2];p=w+8|0;Hx(d+2|0,p,4);u=w+12|0;Hx(d+6|0,u,4);Hx(d+10|0,w,4);h=w+4|0;Hx(d+14|0,h,4);j=b+100|0;Hx(d+18|0,j,4);q=b+104|0;Hx(d+22|0,q,4);l=b+92|0;Hx(d+26|0,l,4);s=b+96|0;Hx(d+30|0,s,4);Hx(d+34|0,g,2);d=d+36|0;e=c[g>>2]|0;if(e>>>0>=16385){c[y>>2]=e;ry(f,1,248200,y)|0;y=0;i=z;return y|0}e=e&65535;v=w+16|0;c[v>>2]=e;if((e|0)!=(k|0)){c[y>>2]=e;c[y+4>>2]=k;ry(f,1,248264,y)|0;y=0;i=z;return y|0}m=c[w>>2]|0;n=c[p>>2]|0;if(n>>>0>=m>>>0){e=c[h>>2]|0;g=c[u>>2]|0;if(e>>>0<=g>>>0){m=c[j>>2]|0;e=c[q>>2]|0;if(!(da(e,m)|0)){c[y>>2]=m;c[y+4>>2]=e;ry(f,1,248440,y)|0;y=0;i=z;return y|0}t=Ifa(g|0,0,n|0,0)|0;if(!((t|0)==(da(g,n)|0)&(H|0)==0)){c[y>>2]=n;c[y+4>>2]=g;ry(f,1,248504,y)|0;y=0;i=z;return y|0}e=sea(k,52)|0;t=w+24|0;c[t>>2]=e;if(!e){c[v>>2]=0;ry(f,1,248552,y)|0;y=0;i=z;return y|0}sfa(e|0,0,(c[v>>2]|0)*52|0)|0;do if(!(c[v>>2]|0))n=m;else{k=b+160|0;e=0;m=c[t>>2]|0;while(1){Hx(d,o,1);c[m+24>>2]=(c[o>>2]&127)+1;c[m+32>>2]=(c[o>>2]|0)>>>7;Hx(d+1|0,o,1);c[m>>2]=c[o>>2];Hx(d+2|0,o,1);h=c[o>>2]|0;c[m+4>>2]=h;g=c[m>>2]|0;if((g+-1|0)>>>0>254|(h|0)==0|h>>>0>255)break;c[m+36>>2]=0;c[m+40>>2]=c[k>>2];e=e+1|0;if(e>>>0>=(c[v>>2]|0)>>>0){r=30;break}else{d=d+3|0;m=m+52|0}}if((r|0)==30){n=c[j>>2]|0;break}c[y>>2]=e;c[y+4>>2]=g;c[y+8>>2]=h;ry(f,1,248600,y)|0;y=0;i=z;return y|0}while(0);if(!n)Ra(258480,258488,105,258528);l=c[l>>2]|0;m=n+-1|0;k=(m+(c[p>>2]|0)-l|0)/(n|0)|0;c[b+112>>2]=k;j=c[q>>2]|0;if(!j)Ra(258480,258488,105,258528);g=c[s>>2]|0;h=j+-1|0;e=(h+(c[u>>2]|0)-g|0)/(j|0)|0;c[b+116>>2]=e;if(!((k|0)==0|(e|0)==0)?k>>>0<=(65535/(e>>>0)|0)>>>0:0){o=da(k,e)|0;d=b+28|0;if(!(a[b+76>>0]&2)){c[d>>2]=0;c[b+32>>2]=0;c[b+36>>2]=k;c[b+40>>2]=e}else{c[d>>2]=(((c[d>>2]|0)-l|0)>>>0)/(n>>>0)|0;u=b+32|0;c[u>>2]=(((c[u>>2]|0)-g|0)>>>0)/(j>>>0)|0;u=b+36|0;c[u>>2]=(m+(c[u>>2]|0)-l|0)/(n|0)|0;u=b+40|0;c[u>>2]=(h+(c[u>>2]|0)-g|0)/(j|0)|0}g=sea(o,5632)|0;c[b+156>>2]=g;if(!g){ry(f,1,248552,y)|0;y=0;i=z;return y|0}sfa(g|0,0,o*5632|0)|0;e=sea(c[v>>2]|0,1080)|0;d=c[b+12>>2]|0;j=d+5576|0;c[j>>2]=e;if(!e){ry(f,1,248552,y)|0;y=0;i=z;return y|0}sfa(e|0,0,(c[v>>2]|0)*1080|0)|0;e=qea(200)|0;c[d+5604>>2]=e;if(!e){ry(f,1,248552,y)|0;y=0;i=z;return y|0}sfa(e|0,0,200)|0;c[d+5612>>2]=10;e=qea(200)|0;c[d+5616>>2]=e;if(!e){ry(f,1,248552,y)|0;y=0;i=z;return y|0}sfa(e|0,0,200)|0;c[d+5624>>2]=10;e=c[v>>2]|0;if(!e)e=0;else{h=c[t>>2]|0;d=0;do{if(!(c[h+(d*52|0)+32>>2]|0))c[(c[j>>2]|0)+(d*1080|0)+1076>>2]=1<<(c[h+(d*52|0)+24>>2]|0)+-1;d=d+1|0}while(d>>>0>>0)}a:do if(o){d=1;while(1){e=qea(e*1080|0)|0;c[g+5576>>2]=e;if(!e)break;sfa(e|0,0,(c[v>>2]|0)*1080|0)|0;if(d>>>0>=o>>>0)break a;e=c[v>>2]|0;d=d+1|0;g=g+5632|0}ry(f,1,248552,y)|0;y=0;i=z;return y|0}while(0);c[b+8>>2]=4;Cy(w,x);y=1;i=z;return y|0}c[y>>2]=k;c[y+4>>2]=e;ry(f,1,248704,y)|0;y=0;i=z;return y|0}}else{g=c[u>>2]|0;e=c[h>>2]|0}c[y>>2]=n-m;c[y+4>>2]=g-e;ry(f,1,248384,y)|0;y=0;i=z;return y|0}function uY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=h+4|0;if(!b)Ra(250152,236248,3258,246936);if(!a)Ra(236352,236248,3259,246936);if(!e)Ra(249008,236248,3260,246936);if(d>>>0<2){ry(e,1,246960,g)|0;g=0;i=h;return g|0}Hx(b,h+8|0,1);Hx(b+1|0,f,1);a=c[f>>2]|0;if(!(((d+-2|0)>>>0)%(((a>>>5&2)+2+(a>>>4&3)|0)>>>0)|0)){g=1;i=h;return g|0}ry(e,1,246960,g)|0;g=0;i=h;return g|0}function vY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;i=i+16|0;if(!b)Ra(250152,236248,3313,246880);if(!a)Ra(236352,236248,3314,246880);if(!d)Ra(249008,236248,3315,246880);if(c){a=1;i=e;return a|0}ry(d,1,246904,e)|0;a=0;i=e;return a|0}function wY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=k+4|0;if(!b)Ra(250152,236248,3385,246824);if(!a)Ra(236352,236248,3386,246824);if(!e)Ra(249008,236248,3387,246824);if(!d){ry(e,1,246848,j)|0;e=0;i=k;return e|0}Hx(b,k+8|0,1);f=d+-1|0;if(!f){e=1;i=k;return e|0}else{g=0;d=0}do{b=b+1|0;Hx(b,h,1);a=c[h>>2]|0;if(!(a&128))d=0;else d=(a&127|d)<<7;g=g+1|0}while((g|0)!=(f|0));if(!d){e=1;i=k;return e|0}ry(e,1,246848,j)|0;e=0;i=k;return e|0}function xY(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;r=s;m=s+16|0;q=s+12|0;if(!d)Ra(250152,236248,3534,246264);if(!b)Ra(236352,236248,3535,246264);if(!f)Ra(249008,236248,3536,246264);if(!e){ry(f,1,246280,r)|0;r=0;i=s;return r|0}l=b+180|0;a[l>>0]=a[l>>0]|1;Hx(d,m,1);h=d+1|0;k=e+-1|0;g=k>>>0<4;do if(!(c[m>>2]|0)){if(g){ry(f,1,246280,r)|0;r=0;i=s;return r|0}Hx(h,q,4);k=e+-5|0;j=c[q>>2]|0;if(k>>>0>>0){q=c[m>>2]|0;c[r>>2]=k;c[r+4>>2]=j;c[r+8>>2]=q;ry(f,1,246312,r)|0;r=b+120|0;rea(c[r>>2]|0);c[r>>2]=0;c[b+136>>2]=0;a[l>>0]=a[l>>0]&-2;r=1;i=s;return r|0}c[b+124>>2]=j;c[b+128>>2]=0;g=qea(j)|0;c[b+120>>2]=g;c[b+136>>2]=g;if(g){sfa(g|0,0,j|0)|0;c[b+132>>2]=g;h=d+5|0;break}ry(f,1,246376,r)|0;r=0;i=s;return r|0}else{if(g){ry(f,2,246416,r)|0;r=1;i=s;return r|0}g=c[b+128>>2]|0;n=b+124|0;j=c[n>>2]|0;if(j>>>0>g>>>0){o=(c[b+120>>2]|0)+g|0;c[b+132>>2]=o;j=j-g|0;c[q>>2]=j;g=o;break}Hx(h,q,4);k=e+-5|0;e=c[q>>2]|0;if(k>>>0>>0){q=c[m>>2]|0;c[r>>2]=k;c[r+4>>2]=e;c[r+8>>2]=q;ry(f,1,246312,r)|0;r=b+120|0;rea(c[r>>2]|0);c[r>>2]=0;c[b+136>>2]=0;a[l>>0]=a[l>>0]&-2;r=1;i=s;return r|0}j=b+120|0;g=c[j>>2]|0;h=b+136|0;if((g|0)!=(c[h>>2]|0))Ra(246440,236248,3619,246264);g=tea(g,(c[n>>2]|0)+e|0)|0;if(g){c[j>>2]=g;c[h>>2]=g;h=c[n>>2]|0;g=g+h|0;c[b+132>>2]=g;j=c[q>>2]|0;c[n>>2]=h+j;h=d+5|0;break}rea(c[j>>2]|0);c[j>>2]=0;c[h>>2]=0;c[n>>2]=0;ry(f,1,246552,r)|0;r=0;i=s;return r|0}while(0);a:do if(k>>>0>>0){m=h;l=j}else{n=b+132|0;d=b+128|0;l=b+120|0;m=b+136|0;o=b+124|0;while(1){qfa(g|0,h|0,j|0)|0;g=c[q>>2]|0;e=k-g|0;j=h+g|0;c[d>>2]=(c[d>>2]|0)+g;if((k|0)==(g|0)){m=j;l=k;k=e;break a}Hx(j,q,4);h=h+(g+4)|0;k=e+-4|0;j=c[q>>2]|0;if(k>>>0>=j>>>0){g=c[l>>2]|0;if((g|0)!=(c[m>>2]|0)){p=33;break}g=tea(g,(c[o>>2]|0)+j|0)|0;if(!g)break;c[l>>2]=g;c[m>>2]=g;e=c[o>>2]|0;c[n>>2]=g+e;j=c[q>>2]|0;c[o>>2]=e+j}if(k>>>0>>0){m=h;l=j;break a}g=c[n>>2]|0}if((p|0)==33)Ra(246440,236248,3666,246264);rea(c[l>>2]|0);c[l>>2]=0;c[m>>2]=0;c[o>>2]=0;ry(f,1,246632,r)|0;r=0;i=s;return r|0}while(0);if(!k){r=1;i=s;return r|0}j=b+120|0;g=c[j>>2]|0;h=b+136|0;if((g|0)!=(c[h>>2]|0))Ra(246440,236248,3689,246264);e=b+124|0;g=tea(g,l+(c[e>>2]|0)|0)|0;if(!g){rea(c[j>>2]|0);c[j>>2]=0;c[h>>2]=0;c[e>>2]=0;ry(f,1,246728,r)|0;r=0;i=s;return r|0}else{c[j>>2]=g;c[h>>2]=g;f=c[e>>2]|0;r=g+f|0;c[b+132>>2]=r;c[e>>2]=f+(c[q>>2]|0);qfa(r|0,m|0,k|0)|0;r=b+128|0;c[r>>2]=(c[r>>2]|0)+k;r=1;i=s;return r|0}return 0}function yY(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;l=n;g=n+4|0;if(!d)Ra(250152,236248,3782,246104);if(!b)Ra(236352,236248,3783,246104);if(!f)Ra(249008,236248,3784,246104);if(!e){ry(f,1,246128,l)|0;m=0;i=n;return m|0}if(a[b+180>>0]&1){ry(f,1,246160,l)|0;m=0;i=n;return m|0}m=c[b+196>>2]|0;k=c[b+156>>2]|0;j=k+(m*5632|0)+5628|0;a[j>>0]=a[j>>0]|1;Hx(d,g,1);j=d+1|0;h=e+-1|0;do if(!(c[g>>2]|0)){c[k+(m*5632|0)+5168>>2]=0;b=k+(m*5632|0)+5172|0;c[b>>2]=h;e=k+(m*5632|0)+5164|0;rea(c[e>>2]|0);b=sea(c[b>>2]|0,1)|0;c[e>>2]=b;if(b){c[k+(m*5632|0)+5160>>2]=b;break}ry(f,1,246064,l)|0;m=0;i=n;return m|0}else{b=k+(m*5632|0)+5172|0;e=(c[b>>2]|0)+h|0;c[b>>2]=e;d=k+(m*5632|0)+5164|0;e=tea(c[d>>2]|0,e)|0;if(e){c[d>>2]=e;c[k+(m*5632|0)+5160>>2]=e;sfa(e+(c[k+(m*5632|0)+5168>>2]|0)|0,0,h|0)|0;b=c[d>>2]|0;break}rea(c[d>>2]|0);c[d>>2]=0;c[b>>2]=0;ry(f,1,246064,l)|0;m=0;i=n;return m|0}while(0);m=k+(m*5632|0)+5168|0;qfa(b+(c[m>>2]|0)|0,j|0,h|0)|0;c[m>>2]=(c[m>>2]|0)+h;m=1;i=n;return m|0}function zY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;i=i+16|0;if(!b)Ra(250152,236248,3218,246992);if(!a)Ra(236352,236248,3219,246992);if(!e)Ra(249008,236248,3220,246992);if((c[(c[a+80>>2]|0)+16>>2]<<2|0)==(d|0)){a=1;i=f;return a|0}ry(e,1,247016,f)|0;a=0;i=f;return a|0}function AY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!a)Ra(236352,236248,2304,248120);if(!d)Ra(249008,236248,2305,248120);if(!b)Ra(250152,236248,2306,248120);else return 1;return 0}function BY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;q=r;o=r+4|0;if(!b)Ra(250152,236248,5100,245120);if(!a)Ra(236352,236248,5101,245120);if((c[a+8>>2]|0)==16)j=(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)|0;else j=c[a+12>>2]|0;if(d>>>0<2){ry(e,1,245144,q)|0;q=0;i=r;return q|0}Hx(b,o,2);if(c[o>>2]|0){ry(e,2,245176,q)|0;q=1;i=r;return q|0}if(d>>>0<7){ry(e,1,245144,q)|0;q=0;i=r;return q|0}Hx(b+2|0,o,2);m=b+4|0;n=c[o>>2]&255;k=j+5604|0;f=c[k>>2]|0;p=j+5608|0;a=c[p>>2]|0;if(a){g=0;h=f;do{if((c[h+8>>2]|0)==(n|0))break;h=h+20|0;g=g+1|0}while(g>>>0>>0);if((g|0)==(a|0))l=18}else{a=0;l=18}if((l|0)==18){g=j+5612|0;do if((a|0)==(c[g>>2]|0)){a=a+10|0;c[g>>2]=a;a=tea(f,a*20|0)|0;if(a){c[k>>2]=a;f=c[p>>2]|0;sfa(a+(f*20|0)|0,0,((c[g>>2]|0)-f|0)*20|0)|0;f=c[k>>2]|0;a=c[p>>2]|0;break}rea(c[k>>2]|0);c[k>>2]=0;c[g>>2]=0;c[p>>2]=0;ry(e,1,245240,q)|0;q=0;i=r;return q|0}while(0);h=f+(a*20|0)|0}g=h+12|0;a=c[g>>2]|0;if(a){rea(a);c[g>>2]=0}c[h+8>>2]=n;l=c[o>>2]|0;c[h+4>>2]=l>>>8&3;c[h>>2]=l>>>10&3;Hx(m,o,2);if(c[o>>2]|0){ry(e,2,245280,q)|0;q=1;i=r;return q|0}a=d+-6|0;f=qea(a)|0;c[g>>2]=f;if(!f){ry(e,1,245144,q)|0;q=0;i=r;return q|0}else{qfa(f|0,b+6|0,a|0)|0;c[h+16>>2]=a;c[p>>2]=(c[p>>2]|0)+1;q=1;i=r;return q|0}return 0}function CY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k;f=k+8|0;j=k+4|0;if(!b)Ra(250152,236248,5800,244544);if(!a)Ra(236352,236248,5801,244544);if(!e)Ra(249008,236248,5802,244544);a=a+80|0;h=c[(c[a>>2]|0)+16>>2]|0;if((h+2|0)!=(d|0)){ry(e,1,244568,g)|0;h=0;i=k;return h|0}Hx(b,f,2);if((c[f>>2]|0)!=(h|0)){ry(e,1,244568,g)|0;h=0;i=k;return h|0}if(!h){h=1;i=k;return h|0}f=b+2|0;b=0;a=c[(c[a>>2]|0)+24>>2]|0;while(1){Hx(f,j,1);c[a+32>>2]=(c[j>>2]|0)>>>7&1;c[a+24>>2]=(c[j>>2]&127)+1;b=b+1|0;if((b|0)==(h|0)){a=1;break}else{f=f+1|0;a=a+52|0}}i=k;return a|0}function DY(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+32|0;z=A;y=A+16|0;v=A+4|0;w=A+8|0;x=A+12|0;if(!d)Ra(250152,236248,5312,244728);if(!b)Ra(236352,236248,5313,244728);if(!f)Ra(249008,236248,5314,244728);if((c[b+8>>2]|0)==16)o=(c[b+156>>2]|0)+((c[b+196>>2]|0)*5632|0)|0;else o=c[b+12>>2]|0;if(e>>>0<2){ry(f,1,244752,z)|0;z=0;i=A;return z|0}Hx(d,y,2);if(c[y>>2]|0){ry(f,2,244784,z)|0;z=1;i=A;return z|0}if(e>>>0<7){ry(f,1,244752,z)|0;z=0;i=A;return z|0}Hx(d+2|0,v,1);n=d+3|0;l=o+5616|0;g=c[l>>2]|0;u=o+5620|0;b=c[u>>2]|0;if(b){k=c[v>>2]|0;j=0;h=g;do{if((c[h>>2]|0)==(k|0))break;h=h+20|0;j=j+1|0}while(j>>>0>>0);if((j|0)==(b|0))m=21}else{b=0;m=21}if((m|0)==21){h=o+5624|0;do if((b|0)==(c[h>>2]|0)){b=b+10|0;c[h>>2]=b;b=tea(g,b*20|0)|0;if(b){c[l>>2]=b;g=c[u>>2]|0;sfa(b+(g*20|0)|0,0,((c[h>>2]|0)-g|0)*20|0)|0;g=c[l>>2]|0;b=c[u>>2]|0;break}rea(c[l>>2]|0);c[l>>2]=0;c[h>>2]=0;c[u>>2]=0;ry(f,1,244832,z)|0;z=0;i=A;return z|0}while(0);h=g+(b*20|0)|0}c[h>>2]=c[v>>2];Hx(n,y,2);if(c[y>>2]|0){ry(f,2,244784,z)|0;z=1;i=A;return z|0}Hx(d+5|0,w,2);g=c[w>>2]|0;if(g>>>0>1){ry(f,2,244872,z)|0;z=1;i=A;return z|0}b=e+-7|0;a:do if(g){r=h+4|0;s=h+16|0;t=h+8|0;p=h+12|0;q=o+5604|0;m=o+5608|0;n=d+7|0;e=0;b:while(1){if(b>>>0<3){m=33;break}Hx(n,y,1);if((c[y>>2]|0)!=1){m=35;break}Hx(n+1|0,x,2);j=b+-3|0;h=c[x>>2]|0;l=(h>>>15)+1|0;h=h&32767;c[r>>2]=h;g=(da(l,h)|0)+2|0;if(j>>>0>>0){m=37;break}b=n+3|0;k=j-g|0;if(h){j=0;do{Hx(b,y,l);if((c[y>>2]|0)!=(j|0)){m=40;break b}b=b+l|0;j=j+1|0}while(j>>>0<(c[r>>2]|0)>>>0)}Hx(b,x,2);g=b+2|0;j=c[x>>2]|0;h=(j>>>15)+1|0;j=j&32767;c[x>>2]=j;if((j|0)!=(c[r>>2]|0)){m=43;break}b=(da(h,j)|0)+3|0;if(k>>>0>>0){m=45;break}b=k-b|0;if(j){j=0;do{Hx(g,y,h);if((c[y>>2]|0)!=(j|0)){m=48;break b}g=g+h|0;j=j+1|0}while(j>>>0<(c[r>>2]|0)>>>0)}Hx(g,y,3);n=g+3|0;a[s>>0]=((c[y>>2]|0)>>>16^1)&1|a[s>>0]&-2;c[t>>2]=0;c[p>>2]=0;l=c[y>>2]|0;g=l&255;c[v>>2]=g;if(g){h=c[m>>2]|0;if(!h){m=56;break}k=0;j=c[q>>2]|0;while(1){if((c[j+8>>2]|0)==(g|0))break;k=k+1|0;if(k>>>0>=h>>>0){m=56;break b}else j=j+20|0}c[t>>2]=j;if(!j){m=56;break}}j=l>>>8&255;c[v>>2]=j;if(j){h=c[m>>2]|0;if(!h){m=63;break}k=0;g=c[q>>2]|0;while(1){if((c[g+8>>2]|0)==(j|0))break;k=k+1|0;if(k>>>0>=h>>>0){m=63;break b}else g=g+20|0}c[p>>2]=g;if(!g){m=63;break}}e=e+1|0;if(e>>>0>=(c[w>>2]|0)>>>0)break a}if((m|0)==33){ry(f,1,244752,z)|0;z=0;i=A;return z|0}else if((m|0)==35){ry(f,2,244920,z)|0;z=1;i=A;return z|0}else if((m|0)==37){ry(f,1,244752,z)|0;z=0;i=A;return z|0}else if((m|0)==40){ry(f,2,244992,z)|0;z=1;i=A;return z|0}else if((m|0)==43){ry(f,2,245048,z)|0;z=1;i=A;return z|0}else if((m|0)==45){ry(f,1,244752,z)|0;z=0;i=A;return z|0}else if((m|0)==48){ry(f,2,244992,z)|0;z=1;i=A;return z|0}else if((m|0)==56){ry(f,1,244752,z)|0;z=0;i=A;return z|0}else if((m|0)==63){ry(f,1,244752,z)|0;z=0;i=A;return z|0}}while(0);if(!b){c[u>>2]=(c[u>>2]|0)+1;z=1;i=A;return z|0}else{ry(f,1,244752,z)|0;z=0;i=A;return z|0}return 0}function EY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;f=v;u=v+8|0;t=v+4|0;if(!b)Ra(250152,236248,5590,244600);if(!a)Ra(236352,236248,5591,244600);if(!e)Ra(249008,236248,5592,244600);o=a+80|0;g=c[o>>2]|0;if((c[a+8>>2]|0)==16)h=(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)|0;else h=c[a+12>>2]|0;if(!d){ry(e,1,244624,f)|0;u=0;i=v;return u|0}Hx(b,t,1);a=c[t>>2]|0;if(a>>>0>1){ry(e,2,244656,f)|0;u=1;i=v;return u|0}if((a+1|0)!=(d|0)){ry(e,2,244624,f)|0;u=0;i=v;return u|0}m=h+5576|0;a=c[g+16>>2]|0;if(a){d=0;e=c[m>>2]|0;while(1){c[e+1076>>2]=0;d=d+1|0;if(d>>>0>=a>>>0)break;else e=e+1080|0}}l=h+5596|0;a=c[l>>2]|0;if(a){rea(a);c[l>>2]=0}a=b+1|0;if(!(c[t>>2]|0)){u=1;i=v;return u|0}j=h+5616|0;k=h+5620|0;if(!h){Hx(a,u,1);Ra(254744,236248,5652,244712)}else{n=a;r=b;s=0}while(1){Hx(n,u,1);a=c[o>>2]|0;f=c[j>>2]|0;b=c[k>>2]|0;if(((b|0)!=0?!((b|0)==0?1:(c[f>>2]|0)!=(c[u>>2]|0)):0)?(p=c[f+4>>2]|0,q=a+16|0,(p|0)==(c[q>>2]|0)):0){a=c[f+8>>2]|0;if(a){d=da(p,p)|0;b=da(c[236424+(c[a>>2]<<2)>>2]|0,d)|0;if((c[a+16>>2]|0)!=(b|0)){a=0;d=39;break}e=qea(d<<2)|0;c[l>>2]=e;if(!e){a=0;d=39;break}Ud[c[235864+(c[a>>2]<<2)>>2]&255](c[a+12>>2]|0,e,d)}a=c[f+12>>2]|0;if(a){d=c[q>>2]|0;b=da(d,c[236424+(c[a>>2]<<2)>>2]|0)|0;if((c[a+16>>2]|0)!=(b|0)){a=0;d=39;break}g=qea(d<<2)|0;if(!g){a=0;d=39;break}Ud[c[235880+(c[a>>2]<<2)>>2]&255](c[a+12>>2]|0,g,d);a=c[q>>2]|0;if(a){f=0;d=g;e=c[m>>2]|0;while(1){c[e+1076>>2]=c[d>>2];f=f+1|0;if((f|0)==(a|0))break;else{d=d+4|0;e=e+1080|0}}}rea(g)}}s=s+1|0;if(s>>>0>=(c[t>>2]|0)>>>0){a=1;d=39;break}else{b=n;n=r+2|0;r=b}}if((d|0)==39){i=v;return a|0}return 0}function FY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=h+4|0;if(!b)Ra(250152,248936,2002,250664);if(!a)Ra(248992,248936,2003,250664);if(!e)Ra(249008,248936,2004,250664);a=a+100|0;if(c[a>>2]|0){ry(e,1,250680,g)|0;g=0;i=h;return g|0}if((d|0)!=4){ry(e,1,250736,g)|0;g=0;i=h;return g|0}Hx(b,f,4);if((c[f>>2]|0)==218793738){c[a>>2]=c[a>>2]|1;g=1;i=h;return g|0}else{ry(e,1,250776,g)|0;g=0;i=h;return g|0}return 0}function GY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;j=l;if(!b)Ra(250152,248936,2048,250504);if(!a)Ra(248992,248936,2049,250504);if(!e)Ra(249008,248936,2050,250504);k=a+100|0;if((c[k>>2]|0)!=1){ry(e,1,250528,j)|0;e=0;i=l;return e|0}if(d>>>0<8){ry(e,1,250584,j)|0;e=0;i=l;return e|0}Hx(b,a+56|0,4);Hx(b+4|0,a+60|0,4);b=b+8|0;d=d+-8|0;if(d&3){ry(e,1,250584,j)|0;e=0;i=l;return e|0}d=d>>>2;h=a+64|0;c[h>>2]=d;if(d){f=d<<2;g=qea(f)|0;c[a+68>>2]=g;if(!g){ry(e,1,250624,j)|0;e=0;i=l;return e|0}sfa(g|0,0,f|0)|0;if(d){f=a+68|0;d=0;while(1){Hx(b,(c[f>>2]|0)+(d<<2)|0,4);d=d+1|0;if(d>>>0>=(c[h>>2]|0)>>>0)break;else b=b+4|0}}}c[k>>2]=c[k>>2]|2;e=1;i=l;return e|0}function HY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;o=q;m=q+8|0;n=q+4|0;if(!b)Ra(250152,248936,2156,250176);if(!a)Ra(248992,248936,2157,250176);if(!e)Ra(249008,248936,2158,250176);p=a+100|0;f=c[p>>2]|0;if(!(f&2)){ry(e,1,250200,o)|0;p=0;i=q;return p|0}l=a+104|0;c[l>>2]=0;do if(d){while(1){if(!b){j=12;break}if(d>>>0<8){j=14;break}Hx(b,m,4);g=c[m>>2]|0;Hx(b+4|0,m,4);f=b+8|0;j=c[m>>2]|0;if(!g){j=22;break}else if((g|0)==1){if(d>>>0<16){j=17;break}Hx(f,n,4);if(c[n>>2]|0){j=19;break}Hx(b+12|0,m,4);f=c[m>>2]|0;if(!f){j=21;break}else k=16}else{k=8;f=g}if(d>>>0>>0){j=25;break}else h=0;while(1){g=248816+(h<<3)|0;if((c[g>>2]|0)==(j|0)){j=28;break}h=h+1|0;if(h>>>0>=6){j=30;break}}if((j|0)==28){j=0;if(g){if(!(Xd[c[248816+(h<<3)+4>>2]&255](a,b+k|0,f-k|0,e)|0)){f=0;j=34;break}}else j=30}if((j|0)==30)c[l>>2]=c[l>>2]|2147483647;if((d|0)==(f|0)){j=32;break}else{b=b+f|0;d=d-f|0}}if((j|0)==12)Ra(250368,248936,2213,250384);else if((j|0)==14)ry(e,1,250416,o)|0;else if((j|0)==17)ry(e,1,250456,o)|0;else if((j|0)==19)ry(e,1,249944,o)|0;else if((j|0)==21)ry(e,1,249656,o)|0;else if((j|0)==22)ry(e,1,249656,o)|0;else if((j|0)==25){ry(e,1,250296,o)|0;p=0;i=q;return p|0}else if((j|0)==32){f=c[p>>2]|0;break}else if((j|0)==34){i=q;return f|0}ry(e,1,250248,o)|0;p=0;i=q;return p|0}while(0);c[p>>2]=f|4;p=1;i=q;return p|0}function IY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(!b)Ra(252488,248936,517,252520);if(!a)Ra(248992,248936,518,252520);if(!e)Ra(249008,248936,519,252520);if((d|0)!=14){ry(e,1,252544,g)|0;g=0;i=h;return g|0}Hx(b,a+16|0,4);Hx(b+4|0,a+12|0,4);d=a+20|0;Hx(b+8|0,d,2);d=(c[d>>2]|0)*12|0;f=qea(d)|0;c[a+72>>2]=f;if(!f){ry(e,1,252584,g)|0;g=0;i=h;return g|0}sfa(f|0,0,d|0)|0;Hx(b+10|0,a+24|0,1);d=a+28|0;Hx(b+11|0,d,1);d=c[d>>2]|0;if((d|0)!=7){c[g>>2]=d;ry(e,4,252640,g)|0}Hx(b+12|0,a+32|0,1);Hx(b+13|0,a+36|0,1);g=1;i=h;return g|0}function JY(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l;k=l+4|0;if(!b)Ra(248992,248936,1205,251544);if(!d)Ra(251568,248936,1206,251544);if(!f)Ra(249008,248936,1207,251544);if(e>>>0<3){ry(f,1,251600,h)|0;j=0;i=l;return j|0}j=b+124|0;if(a[j>>0]|0){ry(f,4,251632,h)|0;j=1;i=l;return j|0}g=b+40|0;Hx(d,g,1);Hx(d+1|0,b+52|0,1);Hx(d+2|0,b+44|0,1);d=d+3|0;g=c[g>>2]|0;if((g|0)==2){h=e+-3|0;g=b+112|0;c[g>>2]=h;f=qea(h)|0;e=b+108|0;c[e>>2]=f;if(!f){c[g>>2]=0;j=0;i=l;return j|0}sfa(f|0,0,h|0)|0;if((h|0)>0){g=0;while(1){Hx(d,k,1);a[(c[e>>2]|0)+g>>0]=c[k>>2];g=g+1|0;if((g|0)==(h|0))break;else d=d+1|0}}a[j>>0]=1;j=1;i=l;return j|0}else if((g|0)==1){if(e>>>0<7){c[h>>2]=e;ry(f,1,251744,h)|0;j=0;i=l;return j|0}if(e>>>0>7){c[h>>2]=e;ry(f,2,251744,h)|0}Hx(d,b+48|0,4);a[j>>0]=1;j=1;i=l;return j|0}else{if(g>>>0<=2){j=1;i=l;return j|0}c[h>>2]=g;ry(f,4,251784,h)|0;j=1;i=l;return j|0}return 0}function KY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j;if(!b)Ra(252288,248936,657,252312);if(!a)Ra(248992,248936,658,252312);if(!e)Ra(249008,248936,659,252312);f=c[a+24>>2]|0;if((f|0)!=255){c[g>>2]=f;ry(e,2,252336,g)|0}h=a+20|0;if((c[h>>2]|0)!=(d|0)){ry(e,1,252456,g)|0;h=0;i=j;return h|0}if(!d){h=1;i=j;return h|0}a=a+72|0;f=0;while(1){Hx(b,(c[a>>2]|0)+(f*12|0)+8|0,1);f=f+1|0;if(f>>>0>=(c[h>>2]|0)>>>0){b=1;break}else b=b+1|0}i=j;return b|0}function LY(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;q=r;if(!f)Ra(252232,248936,936,252264);if(!e)Ra(248992,248936,937,252264);if(!h)Ra(249008,248936,938,252264);k=e+120|0;if((c[k>>2]|0)!=0|g>>>0<3){g=0;i=r;return g|0}Hx(f,q,2);l=c[q>>2]|0;Hx(f+2|0,q,1);e=c[q>>2]|0;n=e&65535;if((n+3|0)>>>0>g>>>0|(n|0)==0){g=0;i=r;return g|0}o=l&65535;if(o>>>0>=(4294967295/(n>>>0)|0)>>>0){g=0;i=r;return g|0}h=qea(da(o<<2,n)|0)|0;if(!h){g=0;i=r;return g|0}p=qea(n)|0;if(!p){rea(h);g=0;i=r;return g|0}m=qea(n)|0;if(!m){rea(h);rea(p);g=0;i=r;return g|0}j=qea(20)|0;if(!j){rea(h);rea(p);rea(m);g=0;i=r;return g|0}c[j+4>>2]=m;c[j+8>>2]=p;c[j>>2]=h;b[j+16>>1]=l;a[j+18>>0]=e;c[j+12>>2]=0;c[k>>2]=j;e=f+3|0;k=0;j=0;do{Hx(e,q,1);e=e+1|0;l=c[q>>2]|0;a[p+k>>0]=(l&127)+1;a[m+k>>0]=l>>>7&1;j=j+1<<16>>16;k=j&65535}while(k>>>0>>0);if(!o){g=1;i=r;return g|0}j=0;a:while(1){l=0;k=h;m=0;while(1){h=((d[p+l>>0]|0)+7|0)>>>3;h=h>>>0>4?4:h;if((e-f+h|0)>(g|0)){e=0;h=25;break a}Hx(e,q,h);e=e+h|0;c[k>>2]=c[q>>2];h=k+4|0;m=m+1<<16>>16;l=m&65535;if(l>>>0>=n>>>0)break;else k=h}j=j+1<<16>>16;if((j&65535)>>>0>=o>>>0){e=1;h=25;break}}if((h|0)==25){i=r;return e|0}return 0}function MY(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;j=n;m=n+4|0;if(!d)Ra(248992,248936,1031,252056);if(!e)Ra(252080,248936,1032,252056);if(!g)Ra(249008,248936,1033,252056);l=d+120|0;d=c[l>>2]|0;if(!d){ry(g,1,252112,j)|0;k=0;i=n;return k|0}if(c[d+12>>2]|0){ry(g,1,252160,j)|0;k=0;i=n;return k|0}k=a[d+18>>0]|0;h=(k&255)<<2;if(h>>>0>f>>>0){ry(g,1,252192,j)|0;k=0;i=n;return k|0}f=qea(h)|0;if(!f){k=0;i=n;return k|0}if(k<<24>>24){d=e;h=0;while(1){Hx(d,m,2);b[f+(h<<2)>>1]=c[m>>2];Hx(d+2|0,m,1);a[f+(h<<2)+2>>0]=c[m>>2];Hx(d+3|0,m,1);a[f+(h<<2)+3>>0]=c[m>>2];h=h+1|0;if((h&255)<<24>>24==k<<24>>24)break;else d=d+4|0}d=c[l>>2]|0}c[d+12>>2]=f;k=1;i=n;return k|0}function NY(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;h=m;l=m+4|0;if(!a)Ra(248992,248936,1139,251896);if(!d)Ra(251920,248936,1140,251896);if(!g)Ra(249008,248936,1141,251896);k=a+116|0;if(c[k>>2]|0){k=0;i=m;return k|0}if(f>>>0<2){ry(g,1,251952,h)|0;k=0;i=m;return k|0}Hx(d,l,2);j=c[l>>2]|0;a=j&65535;if(!a){ry(g,1,251992,h)|0;k=0;i=m;return k|0}if(((a*6|0)+2|0)>>>0>f>>>0){ry(g,1,251952,h)|0;k=0;i=m;return k|0}f=qea(j*6|0)|0;if(!f){k=0;i=m;return k|0}a=qea(8)|0;c[k>>2]=a;if(!a){rea(f);k=0;i=m;return k|0}c[a>>2]=f;h=j&65535;b[a+4>>1]=h;if(!(h<<16>>16)){k=1;i=m;return k|0}else a=0;do{h=a&65535;Hx(d+2|0,l,2);b[f+(h*6|0)>>1]=c[l>>2];Hx(d+4|0,l,2);d=d+6|0;b[f+(h*6|0)+2>>1]=c[l>>2];Hx(d,l,2);b[f+(h*6|0)+4>>1]=c[l>>2];a=a+1<<16>>16}while((a&65535)<(e[(c[k>>2]|0)+4>>1]|0));d=1;i=m;return d|0}function OY(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=(c[a+12>>2]|0)+-5|0;i=i>>>0<65535?i:65535;k=a+116|0;o=a+108|0;p=a+92|0;l=a+44|0;n=a+56|0;while(1){d=c[k>>2]|0;if(d>>>0<2){LR(a);d=c[k>>2]|0;if(!(d|b)){d=0;g=35;break}if(!d){g=20;break}}d=(c[o>>2]|0)+d|0;c[o>>2]=d;c[k>>2]=0;e=c[p>>2]|0;g=e+i|0;if(!((d|0)!=0&d>>>0>>0)){c[k>>2]=d-g;c[o>>2]=g;if((e|0)>-1)d=(c[n>>2]|0)+e|0;else d=0;IH(a,d,i,0);c[p>>2]=c[o>>2];g=c[a>>2]|0;e=c[g+28>>2]|0;GH(e);f=e+20|0;d=c[f>>2]|0;h=g+16|0;s=c[h>>2]|0;d=d>>>0>s>>>0?s:d;if((d|0)!=0?(s=g+12|0,j=e+16|0,qfa(c[s>>2]|0,c[j>>2]|0,d|0)|0,c[s>>2]=(c[s>>2]|0)+d,c[j>>2]=(c[j>>2]|0)+d,s=g+20|0,c[s>>2]=(c[s>>2]|0)+d,c[h>>2]=(c[h>>2]|0)-d,s=c[f>>2]|0,c[f>>2]=s-d,(s|0)==(d|0)):0)c[j>>2]=c[e+8>>2];if(!(c[(c[a>>2]|0)+16>>2]|0)){d=0;g=35;break}d=c[o>>2]|0;e=c[p>>2]|0}g=d-e|0;if(g>>>0<((c[l>>2]|0)+-262|0)>>>0)continue;if((e|0)>-1)d=(c[n>>2]|0)+e|0;else d=0;IH(a,d,g,0);c[p>>2]=c[o>>2];g=c[a>>2]|0;e=c[g+28>>2]|0;GH(e);f=e+20|0;d=c[f>>2]|0;h=g+16|0;s=c[h>>2]|0;d=d>>>0>s>>>0?s:d;if((d|0)!=0?(s=g+12|0,m=e+16|0,qfa(c[s>>2]|0,c[m>>2]|0,d|0)|0,c[s>>2]=(c[s>>2]|0)+d,c[m>>2]=(c[m>>2]|0)+d,s=g+20|0,c[s>>2]=(c[s>>2]|0)+d,c[h>>2]=(c[h>>2]|0)-d,s=c[f>>2]|0,c[f>>2]=s-d,(s|0)==(d|0)):0)c[m>>2]=c[e+8>>2];if(!(c[(c[a>>2]|0)+16>>2]|0)){d=0;g=35;break}}if((g|0)==20){c[a+5812>>2]=0;if((b|0)==4){e=c[p>>2]|0;if((e|0)>-1)d=(c[n>>2]|0)+e|0;else d=0;IH(a,d,(c[o>>2]|0)-e|0,1);c[p>>2]=c[o>>2];e=c[a>>2]|0;f=c[e+28>>2]|0;GH(f);g=f+20|0;d=c[g>>2]|0;h=e+16|0;s=c[h>>2]|0;d=d>>>0>s>>>0?s:d;if((d|0)!=0?(s=e+12|0,q=f+16|0,qfa(c[s>>2]|0,c[q>>2]|0,d|0)|0,c[s>>2]=(c[s>>2]|0)+d,c[q>>2]=(c[q>>2]|0)+d,s=e+20|0,c[s>>2]=(c[s>>2]|0)+d,c[h>>2]=(c[h>>2]|0)-d,s=c[g>>2]|0,c[g>>2]=s-d,(s|0)==(d|0)):0)c[q>>2]=c[f+8>>2];s=(c[(c[a>>2]|0)+16>>2]|0)==0?2:3;return s|0}g=c[o>>2]|0;e=c[p>>2]|0;if((g|0)>(e|0)){if((e|0)>-1)d=(c[n>>2]|0)+e|0;else d=0;IH(a,d,g-e|0,0);c[p>>2]=c[o>>2];g=c[a>>2]|0;e=c[g+28>>2]|0;GH(e);f=e+20|0;d=c[f>>2]|0;h=g+16|0;s=c[h>>2]|0;d=d>>>0>s>>>0?s:d;if((d|0)!=0?(s=g+12|0,r=e+16|0,qfa(c[s>>2]|0,c[r>>2]|0,d|0)|0,c[s>>2]=(c[s>>2]|0)+d,c[r>>2]=(c[r>>2]|0)+d,s=g+20|0,c[s>>2]=(c[s>>2]|0)+d,c[h>>2]=(c[h>>2]|0)-d,s=c[f>>2]|0,c[f>>2]=s-d,(s|0)==(d|0)):0)c[r>>2]=c[e+8>>2];if(!(c[(c[a>>2]|0)+16>>2]|0)){s=0;return s|0}}s=1;return s|0}else if((g|0)==35)return d|0;return 0}function PY(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;r=e+116|0;s=(f|0)==0;B=e+72|0;C=e+88|0;K=e+108|0;I=e+56|0;D=e+84|0;E=e+68|0;F=e+52|0;G=e+64|0;t=e+44|0;u=e+96|0;v=e+112|0;H=e+5792|0;w=e+5796|0;x=e+5784|0;y=e+5788|0;z=e+128|0;J=e+92|0;while(1){if((c[r>>2]|0)>>>0<262){LR(e);g=c[r>>2]|0;if(g>>>0<262&s){g=0;j=41;break}if(!g){j=26;break}if(g>>>0<=2)j=9;else j=6}else j=6;if((j|0)==6){j=0;q=c[K>>2]|0;m=((d[(c[I>>2]|0)+(q+2)>>0]|0)^c[B>>2]<>2])&c[D>>2];c[B>>2]=m;m=(c[E>>2]|0)+(m<<1)|0;p=b[m>>1]|0;b[(c[G>>2]|0)+((c[F>>2]&q)<<1)>>1]=p;g=p&65535;b[m>>1]=q;if(p<<16>>16!=0?(q-g|0)>>>0<=((c[t>>2]|0)+-262|0)>>>0:0){g=l1(e,g)|0;c[u>>2]=g}else j=9}if((j|0)==9)g=c[u>>2]|0;do if(g>>>0>2){q=g+253|0;g=(c[K>>2]|0)-(c[v>>2]|0)|0;p=c[H>>2]|0;b[(c[w>>2]|0)+(p<<1)>>1]=g;c[H>>2]=p+1;a[(c[x>>2]|0)+p>>0]=q;q=e+((d[289760+(q&255)>>0]|0|256)+1<<2)+148|0;b[q>>1]=(b[q>>1]|0)+1<<16>>16;g=g+65535&65535;if(g>>>0>=256)g=(g>>>7)+256|0;q=e+((d[289248+g>>0]|0)<<2)+2440|0;b[q>>1]=(b[q>>1]|0)+1<<16>>16;q=(c[H>>2]|0)==((c[y>>2]|0)+-1|0)&1;g=c[u>>2]|0;p=(c[r>>2]|0)-g|0;c[r>>2]=p;if(!(p>>>0>2?g>>>0<=(c[z>>2]|0)>>>0:0)){h=(c[K>>2]|0)+g|0;c[K>>2]=h;c[u>>2]=0;p=c[I>>2]|0;g=d[p+h>>0]|0;c[B>>2]=g;c[B>>2]=((d[p+(h+1)>>0]|0)^g<>2])&c[D>>2];g=q;break}n=g+-1|0;c[u>>2]=n;j=c[C>>2]|0;h=c[I>>2]|0;i=c[D>>2]|0;k=c[E>>2]|0;l=c[F>>2]|0;m=c[G>>2]|0;g=c[K>>2]|0;p=c[B>>2]|0;while(1){o=g+1|0;c[K>>2]=o;p=((d[h+(g+3)>>0]|0)^p<>2]=p;N=k+(p<<1)|0;b[m+((l&o)<<1)>>1]=b[N>>1]|0;b[N>>1]=o;n=n+-1|0;c[u>>2]=n;if(!n)break;else g=o}h=g+2|0;c[K>>2]=h;g=q}else{g=a[(c[I>>2]|0)+(c[K>>2]|0)>>0]|0;h=c[H>>2]|0;b[(c[w>>2]|0)+(h<<1)>>1]=0;c[H>>2]=h+1;a[(c[x>>2]|0)+h>>0]=g;g=e+((g&255)<<2)+148|0;b[g>>1]=(b[g>>1]|0)+1<<16>>16;g=(c[H>>2]|0)==((c[y>>2]|0)+-1|0)&1;c[r>>2]=(c[r>>2]|0)+-1;h=(c[K>>2]|0)+1|0;c[K>>2]=h}while(0);if(!g)continue;g=c[J>>2]|0;if((g|0)>-1)j=(c[I>>2]|0)+g|0;else j=0;IH(e,j,h-g|0,0);c[J>>2]=c[K>>2];j=c[e>>2]|0;h=c[j+28>>2]|0;GH(h);i=h+20|0;g=c[i>>2]|0;k=j+16|0;N=c[k>>2]|0;g=g>>>0>N>>>0?N:g;if((g|0)!=0?(N=j+12|0,A=h+16|0,qfa(c[N>>2]|0,c[A>>2]|0,g|0)|0,c[N>>2]=(c[N>>2]|0)+g,c[A>>2]=(c[A>>2]|0)+g,N=j+20|0,c[N>>2]=(c[N>>2]|0)+g,c[k>>2]=(c[k>>2]|0)-g,N=c[i>>2]|0,c[i>>2]=N-g,(N|0)==(g|0)):0)c[A>>2]=c[h+8>>2];if(!(c[(c[e>>2]|0)+16>>2]|0)){g=0;j=41;break}}if((j|0)==26){h=c[K>>2]|0;c[e+5812>>2]=h>>>0<2?h:2;if((f|0)==4){j=c[J>>2]|0;if((j|0)>-1)g=(c[I>>2]|0)+j|0;else g=0;IH(e,g,h-j|0,1);c[J>>2]=c[K>>2];h=c[e>>2]|0;i=c[h+28>>2]|0;GH(i);j=i+20|0;g=c[j>>2]|0;k=h+16|0;N=c[k>>2]|0;g=g>>>0>N>>>0?N:g;if((g|0)!=0?(N=h+12|0,L=i+16|0,qfa(c[N>>2]|0,c[L>>2]|0,g|0)|0,c[N>>2]=(c[N>>2]|0)+g,c[L>>2]=(c[L>>2]|0)+g,N=h+20|0,c[N>>2]=(c[N>>2]|0)+g,c[k>>2]=(c[k>>2]|0)-g,N=c[j>>2]|0,c[j>>2]=N-g,(N|0)==(g|0)):0)c[L>>2]=c[i+8>>2];N=(c[(c[e>>2]|0)+16>>2]|0)==0?2:3;return N|0}if(c[H>>2]|0){j=c[J>>2]|0;if((j|0)>-1)g=(c[I>>2]|0)+j|0;else g=0;IH(e,g,h-j|0,0);c[J>>2]=c[K>>2];j=c[e>>2]|0;h=c[j+28>>2]|0;GH(h);i=h+20|0;g=c[i>>2]|0;k=j+16|0;N=c[k>>2]|0;g=g>>>0>N>>>0?N:g;if((g|0)!=0?(N=j+12|0,M=h+16|0,qfa(c[N>>2]|0,c[M>>2]|0,g|0)|0,c[N>>2]=(c[N>>2]|0)+g,c[M>>2]=(c[M>>2]|0)+g,N=j+20|0,c[N>>2]=(c[N>>2]|0)+g,c[k>>2]=(c[k>>2]|0)-g,N=c[i>>2]|0,c[i>>2]=N-g,(N|0)==(g|0)):0)c[M>>2]=c[h+8>>2];if(!(c[(c[e>>2]|0)+16>>2]|0)){N=0;return N|0}}N=1;return N|0}else if((j|0)==41)return g|0;return 0}function QY(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;m=e+116|0;n=(f|0)==0;x=e+72|0;C=e+88|0;K=e+108|0;I=e+56|0;D=e+84|0;E=e+68|0;F=e+52|0;G=e+64|0;o=e+96|0;p=e+120|0;q=e+112|0;r=e+100|0;H=e+5792|0;s=e+5796|0;t=e+5784|0;v=e+5788|0;w=e+104|0;J=e+92|0;y=e+128|0;z=e+44|0;A=e+136|0;a:while(1){g=c[m>>2]|0;while(1){if(g>>>0<262){LR(e);g=c[m>>2]|0;if(g>>>0<262&n){g=0;h=57;break a}if(!g){h=40;break a}if(g>>>0<=2){c[p>>2]=c[o>>2];c[r>>2]=c[q>>2];c[o>>2]=2;g=2;h=16}else h=8}else h=8;do if((h|0)==8){h=0;l=c[K>>2]|0;j=((d[(c[I>>2]|0)+(l+2)>>0]|0)^c[x>>2]<>2])&c[D>>2];c[x>>2]=j;j=(c[E>>2]|0)+(j<<1)|0;k=b[j>>1]|0;b[(c[G>>2]|0)+((c[F>>2]&l)<<1)>>1]=k;g=k&65535;b[j>>1]=l;j=c[o>>2]|0;c[p>>2]=j;c[r>>2]=c[q>>2];c[o>>2]=2;if(k<<16>>16)if(j>>>0<(c[y>>2]|0)>>>0)if(((c[K>>2]|0)-g|0)>>>0<=((c[z>>2]|0)+-262|0)>>>0){g=l1(e,g)|0;c[o>>2]=g;if(g>>>0<6){if((c[A>>2]|0)!=1){if((g|0)!=3){h=16;break}if(((c[K>>2]|0)-(c[q>>2]|0)|0)>>>0<=4096){g=3;h=16;break}}c[o>>2]=2;g=2;h=16}else h=16}else{g=2;h=16}else g=2;else{g=2;h=16}}while(0);if((h|0)==16)j=c[p>>2]|0;if(!(j>>>0<3|g>>>0>j>>>0)){g=j;break}if(!(c[w>>2]|0)){c[w>>2]=1;c[K>>2]=(c[K>>2]|0)+1;g=(c[m>>2]|0)+-1|0;c[m>>2]=g;continue}k=a[(c[I>>2]|0)+((c[K>>2]|0)+-1)>>0]|0;l=c[H>>2]|0;b[(c[s>>2]|0)+(l<<1)>>1]=0;c[H>>2]=l+1;a[(c[t>>2]|0)+l>>0]=k;k=e+((k&255)<<2)+148|0;b[k>>1]=(b[k>>1]|0)+1<<16>>16;if((c[H>>2]|0)==((c[v>>2]|0)+-1|0)){g=c[J>>2]|0;if((g|0)>-1)j=(c[I>>2]|0)+g|0;else j=0;IH(e,j,(c[K>>2]|0)-g|0,0);c[J>>2]=c[K>>2];j=c[e>>2]|0;h=c[j+28>>2]|0;GH(h);i=h+20|0;g=c[i>>2]|0;k=j+16|0;l=c[k>>2]|0;g=g>>>0>l>>>0?l:g;if((g|0)!=0?(l=j+12|0,B=h+16|0,qfa(c[l>>2]|0,c[B>>2]|0,g|0)|0,c[l>>2]=(c[l>>2]|0)+g,c[B>>2]=(c[B>>2]|0)+g,l=j+20|0,c[l>>2]=(c[l>>2]|0)+g,c[k>>2]=(c[k>>2]|0)-g,k=c[i>>2]|0,c[i>>2]=k-g,(k|0)==(g|0)):0)c[B>>2]=c[h+8>>2]}c[K>>2]=(c[K>>2]|0)+1;g=(c[m>>2]|0)+-1|0;c[m>>2]=g;if(!(c[(c[e>>2]|0)+16>>2]|0)){g=0;h=57;break a}}i=c[K>>2]|0;l=i+-3+(c[m>>2]|0)|0;k=g+253|0;g=i+65535-(c[r>>2]|0)|0;i=c[H>>2]|0;b[(c[s>>2]|0)+(i<<1)>>1]=g;c[H>>2]=i+1;a[(c[t>>2]|0)+i>>0]=k;k=e+((d[289760+(k&255)>>0]|0|256)+1<<2)+148|0;b[k>>1]=(b[k>>1]|0)+1<<16>>16;g=g+65535&65535;if(g>>>0>=256)g=(g>>>7)+256|0;i=e+((d[289248+g>>0]|0)<<2)+2440|0;b[i>>1]=(b[i>>1]|0)+1<<16>>16;i=c[H>>2]|0;k=(c[v>>2]|0)+-1|0;h=c[p>>2]|0;c[m>>2]=1-h+(c[m>>2]|0);h=h+-2|0;c[p>>2]=h;g=c[K>>2]|0;while(1){j=g+1|0;c[K>>2]=j;if(j>>>0<=l>>>0){N=((d[(c[I>>2]|0)+(g+3)>>0]|0)^c[x>>2]<>2])&c[D>>2];c[x>>2]=N;N=(c[E>>2]|0)+(N<<1)|0;b[(c[G>>2]|0)+((c[F>>2]&j)<<1)>>1]=b[N>>1]|0;b[N>>1]=j}h=h+-1|0;c[p>>2]=h;if(!h)break;else g=j}c[w>>2]=0;c[o>>2]=2;h=g+2|0;c[K>>2]=h;if((i|0)!=(k|0))continue;g=c[J>>2]|0;if((g|0)>-1)j=(c[I>>2]|0)+g|0;else j=0;IH(e,j,h-g|0,0);c[J>>2]=c[K>>2];j=c[e>>2]|0;h=c[j+28>>2]|0;GH(h);i=h+20|0;g=c[i>>2]|0;k=j+16|0;N=c[k>>2]|0;g=g>>>0>N>>>0?N:g;if((g|0)!=0?(N=j+12|0,u=h+16|0,qfa(c[N>>2]|0,c[u>>2]|0,g|0)|0,c[N>>2]=(c[N>>2]|0)+g,c[u>>2]=(c[u>>2]|0)+g,N=j+20|0,c[N>>2]=(c[N>>2]|0)+g,c[k>>2]=(c[k>>2]|0)-g,N=c[i>>2]|0,c[i>>2]=N-g,(N|0)==(g|0)):0)c[u>>2]=c[h+8>>2];if(!(c[(c[e>>2]|0)+16>>2]|0)){g=0;h=57;break}}if((h|0)==40){if(c[w>>2]|0){N=a[(c[I>>2]|0)+((c[K>>2]|0)+-1)>>0]|0;G=c[H>>2]|0;b[(c[s>>2]|0)+(G<<1)>>1]=0;c[H>>2]=G+1;a[(c[t>>2]|0)+G>>0]=N;N=e+((N&255)<<2)+148|0;b[N>>1]=(b[N>>1]|0)+1<<16>>16;c[w>>2]=0}h=c[K>>2]|0;c[e+5812>>2]=h>>>0<2?h:2;if((f|0)==4){j=c[J>>2]|0;if((j|0)>-1)g=(c[I>>2]|0)+j|0;else g=0;IH(e,g,h-j|0,1);c[J>>2]=c[K>>2];h=c[e>>2]|0;i=c[h+28>>2]|0;GH(i);j=i+20|0;g=c[j>>2]|0;k=h+16|0;N=c[k>>2]|0;g=g>>>0>N>>>0?N:g;if((g|0)!=0?(N=h+12|0,L=i+16|0,qfa(c[N>>2]|0,c[L>>2]|0,g|0)|0,c[N>>2]=(c[N>>2]|0)+g,c[L>>2]=(c[L>>2]|0)+g,N=h+20|0,c[N>>2]=(c[N>>2]|0)+g,c[k>>2]=(c[k>>2]|0)-g,N=c[j>>2]|0,c[j>>2]=N-g,(N|0)==(g|0)):0)c[L>>2]=c[i+8>>2];N=(c[(c[e>>2]|0)+16>>2]|0)==0?2:3;return N|0}if(c[H>>2]|0){j=c[J>>2]|0;if((j|0)>-1)g=(c[I>>2]|0)+j|0;else g=0;IH(e,g,h-j|0,0);c[J>>2]=c[K>>2];j=c[e>>2]|0;h=c[j+28>>2]|0;GH(h);i=h+20|0;g=c[i>>2]|0;k=j+16|0;N=c[k>>2]|0;g=g>>>0>N>>>0?N:g;if((g|0)!=0?(N=j+12|0,M=h+16|0,qfa(c[N>>2]|0,c[M>>2]|0,g|0)|0,c[N>>2]=(c[N>>2]|0)+g,c[M>>2]=(c[M>>2]|0)+g,N=j+20|0,c[N>>2]=(c[N>>2]|0)+g,c[k>>2]=(c[k>>2]|0)-g,N=c[i>>2]|0,c[i>>2]=N-g,(N|0)==(g|0)):0)c[M>>2]=c[h+8>>2];if(!(c[(c[e>>2]|0)+16>>2]|0)){N=0;return N|0}}N=1;return N|0}else if((h|0)==57)return g|0;return 0}function RY(a,b,c){a=a|0;b=b|0;c=c|0;return}function SY(a,b,c){a=a|0;b=b|0;c=c|0;return}function TY(a){a=a|0;var d=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;h=j;d=j+4|0;g=a+88|0;f=pv(b[g>>1]|0)|0;c[h>>2]=e[g>>1];Wea(d,20,305680,h)|0;g=c[a+628>>2]|0;a=c[a>>2]|0;if(f)d=c[f>>2]|0;c[h>>2]=d;Yv(g,a,96208,h);i=j;return 0}function UY(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;n=p+4|0;o=p;j=f+2|0;switch(e[j>>1]|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:case 7:case 2:break;default:{g=2;i=p;return g|0}}f=ZY(d,f,n,1,o)|0;l=c[o>>2]|0;if((f|0)!=0|(l|0)==0){c[g>>2]=0;g=f;i=p;return g|0}f=e[j>>1]|0;if((f|0)==1|(f|0)==7|(f|0)==2){c[g>>2]=l;g=0;i=p;return g|0}else if((f|0)!=6){f=c[n>>2]|0;m=_J(f)|0;if(!m){$J(l);g=7;i=p;return g|0}a:do switch(e[j>>1]|0){case 3:{if(!f)f=51;else{k=d+12|0;d=l;h=m;j=0;while(1){if(c[k>>2]&128)Yw(d);f=b[d>>1]|0;if((f&65535)>=256){f=50;break a}a[h>>0]=f;j=j+1|0;if(j>>>0>=(c[n>>2]|0)>>>0){f=51;break}else{d=d+2|0;h=h+1|0}}}break}case 17:{if(!f)f=51;else{k=d+12|0;d=l;h=m;j=0;while(1){if(c[k>>2]&128)_w(d);l=d;f=c[l>>2]|0;l=c[l+4>>2]|0;if(!(l>>>0<0|(l|0)==0&f>>>0<256)){f=50;break a}a[h>>0]=f;j=j+1|0;if(j>>>0>=(c[n>>2]|0)>>>0){f=51;break}else{d=d+8|0;h=h+1|0}}}break}case 9:{if(!f)f=51;else{k=d+12|0;d=l;h=m;j=0;while(1){if(c[k>>2]&128)Zw(d);f=c[d>>2]|0;if(f>>>0>=256){f=50;break a}a[h>>0]=f;j=j+1|0;if(j>>>0>=(c[n>>2]|0)>>>0){f=51;break}else{d=d+4|0;h=h+1|0}}}break}case 4:{if(!f)f=51;else{k=d+12|0;d=l;h=m;j=0;while(1){if(c[k>>2]&128)Zw(d);f=c[d>>2]|0;if(f>>>0>=256){f=50;break a}a[h>>0]=f;j=j+1|0;if(j>>>0>=(c[n>>2]|0)>>>0){f=51;break}else{d=d+4|0;h=h+1|0}}}break}case 16:{if(!f)f=51;else{k=d+12|0;d=l;h=m;j=0;while(1){if(c[k>>2]&128)_w(d);l=d;f=c[l>>2]|0;l=c[l+4>>2]|0;if(!(l>>>0<0|(l|0)==0&f>>>0<256)){f=50;break a}a[h>>0]=f;j=j+1|0;if(j>>>0>=(c[n>>2]|0)>>>0){f=51;break}else{d=d+8|0;h=h+1|0}}}break}case 8:{if(!f)f=51;else{k=d+12|0;d=l;h=m;j=0;while(1){if(c[k>>2]&128)Yw(d);f=b[d>>1]|0;if((f&65535)>=256){f=50;break a}a[h>>0]=f;j=j+1|0;if(j>>>0>=(c[n>>2]|0)>>>0){f=51;break}else{d=d+2|0;h=h+1|0}}}break}default:f=51}while(0);if((f|0)==50){$J(c[o>>2]|0);$J(m);g=4;i=p;return g|0}else if((f|0)==51){$J(c[o>>2]|0);c[g>>2]=m;g=0;i=p;return g|0}}else{f=c[n>>2]|0;b:do if(f){d=l;h=0;while(1){if((a[d>>0]|0)<=-1)break;h=h+1|0;if(h>>>0>=f>>>0)break b;else d=d+1|0}$J(l);g=4;i=p;return g|0}while(0);c[g>>2]=l;g=0;i=p;return g|0}return 0}function VY(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+16|0;n=p+4|0;k=p;j=g+2|0;switch(e[j>>1]|0|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{n=2;i=p;return n|0}}g=ZY(f,g,n,4,k)|0;o=c[k>>2]|0;if((g|0)!=0|(o|0)==0){c[h>>2]=0;n=g;i=p;return n|0}g=e[j>>1]|0;if((g|0)==4){c[h>>2]=o;if(!(c[f+12>>2]&128)){n=0;i=p;return n|0}bx(o,c[n>>2]|0);n=0;i=p;return n|0}else if((g|0)!=9){g=c[n>>2]|0;m=_J(g<<2)|0;if(!m){$J(o);n=7;i=p;return n|0}a:do switch(e[j>>1]|0|0){case 8:{if(!g)g=47;else{g=f+12|0;j=o;f=m;l=0;while(1){if(c[g>>2]&128)Yw(j);k=b[j>>1]|0;if(k<<16>>16<=-1){g=46;break a}c[f>>2]=k<<16>>16;l=l+1|0;if(l>>>0>=(c[n>>2]|0)>>>0){g=47;break}else{j=j+2|0;f=f+4|0}}}break}case 16:{if(!g)g=47;else{g=f+12|0;j=o;f=m;l=0;while(1){if(c[g>>2]&128)_w(j);q=j;k=c[q>>2]|0;q=c[q+4>>2]|0;if(!(q>>>0<1|(q|0)==1&k>>>0<0)){g=46;break a}c[f>>2]=k;l=l+1|0;if(l>>>0>=(c[n>>2]|0)>>>0){g=47;break}else{j=j+8|0;f=f+4|0}}}break}case 3:{if(!g)g=47;else{g=f+12|0;k=o;j=m;f=0;while(1){if(c[g>>2]&128)Yw(k);c[j>>2]=e[k>>1];f=f+1|0;if(f>>>0>=(c[n>>2]|0)>>>0){g=47;break}else{k=k+2|0;j=j+4|0}}}break}case 6:{if(!g)g=47;else{k=o;j=m;f=0;while(1){g=a[k>>0]|0;if(g<<24>>24<=-1){g=46;break a}c[j>>2]=g<<24>>24;f=f+1|0;if(f>>>0>=(c[n>>2]|0)>>>0){g=47;break}else{k=k+1|0;j=j+4|0}}}break}case 17:{if(!g)g=47;else{k=f+12|0;j=o;f=m;l=0;while(1){if(c[k>>2]&128)_w(j);q=j;g=c[q>>2]|0;q=c[q+4>>2]|0;if(!(q>>>0<1|(q|0)==1&g>>>0<0)){g=46;break a}c[f>>2]=g;l=l+1|0;if(l>>>0>=(c[n>>2]|0)>>>0){g=47;break}else{j=j+8|0;f=f+4|0}}}break}case 1:{if(!g)g=47;else{g=o;j=m;k=0;while(1){c[j>>2]=d[g>>0];k=k+1|0;if(k>>>0>=(c[n>>2]|0)>>>0){g=47;break}else{g=g+1|0;j=j+4|0}}}break}default:g=47}while(0);if((g|0)==46){$J(o);$J(m);q=4;i=p;return q|0}else if((g|0)==47){$J(o);c[h>>2]=m;q=0;i=p;return q|0}}else{l=c[n>>2]|0;b:do if(l){j=f+12|0;f=o;k=0;while(1){if(c[j>>2]&128)Zw(f);g=c[f>>2]>>31&4;if(g)break;k=k+1|0;if(k>>>0>=l>>>0)break b;else f=f+4|0}$J(o);q=g;i=p;return q|0}while(0);c[h>>2]=o;q=0;i=p;return q|0}return 0}function WY(f,j,k){f=f|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;m=u+4|0;l=u;n=j+2|0;switch(e[n>>1]|0){case 12:case 11:case 10:case 5:case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{k=2;i=u;return k|0}}j=ZY(f,j,m,4,l)|0;t=c[l>>2]|0;if((j|0)!=0|(t|0)==0){c[k>>2]=0;k=j;i=u;return k|0}if((b[n>>1]|0)==11){if(c[f+12>>2]&128)bx(t,c[m>>2]|0);c[k>>2]=t;k=0;i=u;return k|0}r=c[m>>2]|0;s=_J(r<<2)|0;if(!s){$J(t);k=7;i=u;return k|0}do switch(e[n>>1]|0){case 4:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Zw(l);g[m>>2]=+((c[l>>2]|0)>>>0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+4|0;m=m+4|0}}}break}case 16:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)_w(l);p=l;g[m>>2]=+((c[p>>2]|0)>>>0)+4294967296.0*+((c[p+4>>2]|0)>>>0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+8|0;m=m+4|0}}}break}case 9:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Zw(l);g[m>>2]=+(c[l>>2]|0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+4|0;m=m+4|0}}}break}case 10:{if(r){m=f+12|0;f=t;p=s;q=0;while(1){j=c[m>>2]|0;if(j&128){Zw(f);j=c[m>>2]|0}l=c[f>>2]|0;n=f+4|0;if(j&128)Zw(n);j=c[n>>2]|0;if(!j)o=0.0;else o=+(l|0)/+(j>>>0);g[p>>2]=o;q=q+1|0;if(q>>>0>=r>>>0)break;else{f=f+8|0;p=p+4|0}}}break}case 17:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)_w(l);p=l;g[m>>2]=+((c[p>>2]|0)>>>0)+4294967296.0*+(c[p+4>>2]|0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+8|0;m=m+4|0}}}break}case 5:{if(r){m=f+12|0;f=t;p=s;q=0;while(1){j=c[m>>2]|0;if(j&128){Zw(f);j=c[m>>2]|0}n=f+4|0;l=c[f>>2]|0;if(j&128)Zw(n);j=c[n>>2]|0;if(!j)o=0.0;else o=+(l>>>0)/+(j>>>0);g[p>>2]=o;q=q+1|0;if(q>>>0>=r>>>0)break;else{f=f+8|0;p=p+4|0}}}break}case 8:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Yw(l);g[m>>2]=+(b[l>>1]|0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+2|0;m=m+4|0}}}break}case 1:{if(r){j=t;l=s;m=0;while(1){g[l>>2]=+(d[j>>0]|0);m=m+1|0;if(m>>>0>=r>>>0)break;else{j=j+1|0;l=l+4|0}}}break}case 6:{if(r){j=t;l=s;m=0;while(1){g[l>>2]=+(a[j>>0]|0);m=m+1|0;if(m>>>0>=r>>>0)break;else{j=j+1|0;l=l+4|0}}}break}case 3:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Yw(l);g[m>>2]=+(e[l>>1]|0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+2|0;m=m+4|0}}}break}case 12:{if(c[f+12>>2]&128)cx(t,r);if(r){j=t;l=s;m=0;while(1){g[l>>2]=+h[j>>3];m=m+1|0;if(m>>>0>=r>>>0)break;else{j=j+8|0;l=l+4|0}}}break}default:{}}while(0);$J(t);c[k>>2]=s;k=0;i=u;return k|0}function XY(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;j=q+4|0;l=q;k=g+2|0;switch(e[k>>1]|0|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{h=2;i=q;return h|0}}g=ZY(f,g,j,8,l)|0;p=c[l>>2]|0;if((g|0)!=0|(p|0)==0){c[h>>2]=0;h=g;i=q;return h|0}g=e[k>>1]|0;if((g|0)==17){l=c[j>>2]|0;a:do if(l){g=f+12|0;j=p;k=0;while(1){if(c[g>>2]&128)_w(j);n=j;m=c[n+4>>2]|0;if(!((m|0)>-1|(m|0)==-1&(c[n>>2]|0)>>>0>4294967295))break;k=k+1|0;if(k>>>0>=l>>>0)break a;else j=j+8|0}$J(p);h=4;i=q;return h|0}while(0);c[h>>2]=p;h=0;i=q;return h|0}else if((g|0)!=16){n=c[j>>2]|0;o=_J(n<<3)|0;if(!o){$J(p);h=7;i=q;return h|0}b:do switch(e[k>>1]|0|0){case 9:{if(!n)j=46;else{l=f+12|0;k=p;m=o;f=0;while(1){if(c[l>>2]&128)Zw(k);j=c[k>>2]|0;g=j>>31&4;if(g){j=45;break b}g=m;c[g>>2]=j;c[g+4>>2]=((j|0)<0)<<31>>31;f=f+1|0;if(f>>>0>=n>>>0){j=46;break}else{k=k+4|0;m=m+8|0}}}break}case 6:{if(!n)j=46;else{l=p;j=o;k=0;while(1){g=a[l>>0]|0;if(g<<24>>24<=-1){g=4;j=45;break b}f=g<<24>>24;m=j;c[m>>2]=f;c[m+4>>2]=((f|0)<0)<<31>>31;k=k+1|0;if(k>>>0>=n>>>0){j=46;break}else{l=l+1|0;j=j+8|0}}}break}case 1:{if(!n)j=46;else{g=p;l=o;j=0;while(1){m=l;c[m>>2]=d[g>>0];c[m+4>>2]=0;j=j+1|0;if(j>>>0>=n>>>0){j=46;break}else{g=g+1|0;l=l+8|0}}}break}case 3:{if(!n)j=46;else{g=f+12|0;l=p;j=o;k=0;while(1){if(c[g>>2]&128)Yw(l);m=j;c[m>>2]=e[l>>1];c[m+4>>2]=0;k=k+1|0;if(k>>>0>=n>>>0){j=46;break}else{l=l+2|0;j=j+8|0}}}break}case 8:{if(!n)j=46;else{g=f+12|0;j=p;k=o;m=0;while(1){if(c[g>>2]&128)Yw(j);l=b[j>>1]|0;if(l<<16>>16<=-1){g=4;j=45;break b}l=l<<16>>16;f=k;c[f>>2]=l;c[f+4>>2]=((l|0)<0)<<31>>31;m=m+1|0;if(m>>>0>=n>>>0){j=46;break}else{j=j+2|0;k=k+8|0}}}break}case 4:{if(!n)j=46;else{g=f+12|0;l=p;j=o;k=0;while(1){if(c[g>>2]&128)Zw(l);m=j;c[m>>2]=c[l>>2];c[m+4>>2]=0;k=k+1|0;if(k>>>0>=n>>>0){j=46;break}else{l=l+4|0;j=j+8|0}}}break}default:j=46}while(0);if((j|0)==45){$J(p);$J(o);h=g;i=q;return h|0}else if((j|0)==46){$J(p);c[h>>2]=o;h=0;i=q;return h|0}}else{c[h>>2]=p;if(!(c[f+12>>2]&128)){h=0;i=q;return h|0}cx(p,c[j>>2]|0);h=0;i=q;return h|0}return 0}function YY(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;g=m+4|0;f=m;h=b+2|0;j=e[h>>1]|0;if(!((j|0)==18|(j|0)==13|(j|0)==16|(j|0)==4)){a=2;i=m;return a|0}b=ZY(a,b,g,8,f)|0;l=c[f>>2]|0;if((b|0)!=0|(l|0)==0){c[d>>2]=0;a=b;i=m;return a|0}j=e[h>>1]|0;if((j|0)==18|(j|0)==16){c[d>>2]=l;if(!(c[a+12>>2]&128)){a=0;i=m;return a|0}cx(l,c[g>>2]|0);a=0;i=m;return a|0}j=c[g>>2]|0;k=_J(j<<3)|0;if(!k){$J(l);a=7;i=m;return a|0}g=e[h>>1]|0;if((g|0)==13|(g|0)==4?(j|0)!=0:0){b=a+12|0;f=l;g=k;h=0;while(1){if(c[b>>2]&128)Zw(f);a=g;c[a>>2]=c[f>>2];c[a+4>>2]=0;h=h+1|0;if(h>>>0>=j>>>0)break;else{f=f+4|0;g=g+8|0}}}$J(l);c[d>>2]=k;a=0;i=m;return a|0}function ZY(a,b,d,f,g){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;l=p+8|0;m=p;j=Gv(e[b+2>>1]|0)|0;h=b+8|0;k=c[h>>2]|0;h=c[h+4>>2]|0;if((k|0)==0&(h|0)==0|(j|0)==0){c[g>>2]=0;g=0;i=p;return g|0}o=2147483647/(j|0)|0;n=((o|0)<0)<<31>>31;if(n>>>0>>0|(n|0)==(h|0)&o>>>0>>0){g=6;i=p;return g|0}if(0>>0|(0==(h|0)?(2147483647/(f>>>0)|0)>>>0>>0:0)){g=6;i=p;return g|0}c[d>>2]=k;o=da(k,j)|0;if((o|0)<=0)Ra(108720,107440,790,108744);n=Wu(a,k,j,108768)|0;if(!n){g=7;i=p;return g|0}k=a+12|0;j=c[k>>2]|0;do if(!(j&524288)){h=b+16|0;if(o>>>0<5){cK(n,h,o);break}d=c[h>>2]|0;c[l>>2]=d;if(j&128){Zw(l);d=c[l>>2]|0}if(!(c[k>>2]&2048)){h=a+628|0;l=Xd[c[a+640>>2]&255](c[h>>2]|0,d,0,0)|0;if((l|0)==(d|0)&(H|0)==0?(Hd[c[a+632>>2]&255](c[h>>2]|0,n,o)|0)==(o|0):0)break}else{l=d+o|0;if(!(l>>>0>>0|l>>>0>>0)?l>>>0<=(c[a+616>>2]|0)>>>0:0){cK(n,(c[a+612>>2]|0)+d|0,o);break}}$J(n);g=3;i=p;return g|0}else{if(o>>>0<9){cK(n,b+16|0,o);break}d=b+16|0;h=c[d>>2]|0;d=c[d+4>>2]|0;l=m;c[l>>2]=h;c[l+4>>2]=d;if(!(j&128))f=h;else{_w(m);d=m;f=c[d>>2]|0;d=c[d+4>>2]|0}if(!(c[k>>2]&2048)){h=a+628|0;l=Xd[c[a+640>>2]&255](c[h>>2]|0,f,d,0)|0;if((l|0)==(f|0)&(H|0)==(d|0)?(Hd[c[a+632>>2]&255](c[h>>2]|0,n,o)|0)==(o|0):0)break}else{l=f+o|0;if(((f|0)==(f|0)&0==(d|0)?!(l>>>0>>0|l>>>0>>0):0)?l>>>0<=(c[a+616>>2]|0)>>>0:0){cK(n,(c[a+612>>2]|0)+f|0,o);break}}$J(n);g=3;i=p;return g|0}while(0);c[g>>2]=n;g=0;i=p;return g|0}function _Y(a,d,e,f,g,h,j,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;r=t;s=t+4|0;m=c[d>>2]|0;if(m){n=0;while(1){q=b[e+(n*24|0)>>1]|0;if(q<<16>>16==f<<16>>16){p=4;break}o=n+1|0;if((q&65535)>(f&65535)){l=n;break}if(o>>>0>>0)n=o;else{l=o;break}}if((p|0)==4)Ra(112224,111632,2301,112248);if(l>>>0>>0)do{p=e+(m*24|0)|0;m=m+-1|0;n=e+(m*24|0)|0;c[p+0>>2]=c[n+0>>2];c[p+4>>2]=c[n+4>>2];c[p+8>>2]=c[n+8>>2];c[p+12>>2]=c[n+12>>2];c[p+16>>2]=c[n+16>>2];c[p+20>>2]=c[n+20>>2]}while(m>>>0>l>>>0)}else l=0;b[e+(l*24|0)>>1]=f;b[e+(l*24|0)+2>>1]=g;q=e+(l*24|0)+8|0;c[q>>2]=h;c[q+4>>2]=0;q=e+(l*24|0)+16|0;h=q;c[h>>2]=0;c[h+4>>2]=0;h=a+12|0;l=c[h>>2]&524288;do if(((l>>>17)+4|0)>>>0>>0){n=(l|0)==0;l=a+464|0;g=l;p=c[g>>2]|0;g=c[g+4>>2]|0;m=yfa(p|0,g|0,j|0,0)|0;m=n?m:m;n=n?0:H;if(n>>>0>>0|(n|0)==(g|0)&m>>>0

>>0|(n>>>0<0|(n|0)==0&m>>>0>>0)){Yv(c[a+628>>2]|0,112248,233744,r);s=0;i=t;return s|0}o=a+628|0;f=Xd[c[a+640>>2]&255](c[o>>2]|0,p,g,0)|0;if(!((f|0)==(p|0)&(H|0)==(g|0))){Yv(c[o>>2]|0,112248,112280,r);s=0;i=t;return s|0}if((j|0)<=-1)Ra(112312,111632,2335,112248);if((Hd[c[a+636>>2]&255](c[o>>2]|0,k,j)|0)!=(j|0)){Yv(c[o>>2]|0,112248,112280,r);s=0;i=t;return s|0}r=yfa(m&1|0,0,m|0,n|0)|0;c[l>>2]=r;c[l+4>>2]=H;l=c[h>>2]|0;if(l&524288){s=q;c[s>>2]=p;c[s+4>>2]=g;if(!(l&128))break;_w(q);break}c[s>>2]=p;if(l&128)Zw(s);cK(q,s,4)}else cK(q,k,j);while(0);c[d>>2]=(c[d>>2]|0)+1;s=1;i=t;return s|0}function $Y(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var g=0,h=0,j=0;j=i;i=i+16|0;h=j;if(!d){c[b>>2]=(c[b>>2]|0)+1;a=1;i=j;return a|0}if(!(f>=0.0))Ra(113128,111632,2084,113144);do if(!(f<=0.0)){g=~~f>>>0;if(+(g>>>0)==f){c[h>>2]=g;c[h+4>>2]=1;break}if(f<1.0){c[h>>2]=~~(f*4294967295.0)>>>0;c[h+4>>2]=-1;break}else{c[h>>2]=-1;c[h+4>>2]=~~(4294967295.0/f)>>>0;break}}else{c[h>>2]=0;c[h+4>>2]=1}while(0);if(c[a+12>>2]&128){Zw(h);Zw(h+4|0)}a=_Y(a,b,d,e,5,1,8,h)|0;i=j;return a|0}function aZ(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+16|0;o=p;if(!d){c[b>>2]=(c[b>>2]|0)+1;o=1;i=p;return o|0}n=a+12|0;h=c[n>>2]|0;if(h&524288){if(f>>>0>=536870912)Ra(112336,111632,2047,112600);if(h&128)cx(g,f);o=_Y(a,b,d,e,16,f,f<<3,g)|0;i=p;return o|0}l=f<<2;m=_J(l)|0;if(!m){Yv(c[a+628>>2]|0,113048,313360,o);o=0;i=p;return o|0}do if(f){j=0;k=m;while(1){q=g;h=c[q>>2]|0;q=c[q+4>>2]|0;if(q>>>0>0|(q|0)==0&h>>>0>4294967295){h=13;break}c[k>>2]=h;j=j+1|0;if(j>>>0>=f>>>0){h=15;break}else{g=g+8|0;k=k+4|0}}if((h|0)==13){Yv(c[a+628>>2]|0,113048,112088,o);$J(m);q=0;i=p;return q|0}else if((h|0)==15){if(f>>>0<1073741824)break;Ra(112160,111632,2e3,112680)}}while(0);if(c[n>>2]&128)bx(m,f);q=_Y(a,b,d,e,4,f,l,m)|0;$J(m);i=p;return q|0}function bZ(d,f,j,k,l,m){d=d|0;f=f|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0;q=i;i=i+16|0;n=l<<3;p=_J(n)|0;if(!p){Yv(c[d+628>>2]|0,112976,313360,q);d=0;i=q;return d|0}o=e[d+86>>1]|0;do if((o|0)==2){n=b[d+84>>1]|0;if((n&65535)<9){if(l){n=0;do{a[p+n>>0]=~~+h[m+(n<<3)>>3];n=n+1|0}while((n|0)!=(l|0))}if(!j){c[f>>2]=(c[f>>2]|0)+1;n=1;break}else{n=_Y(d,f,j,k,6,l,l,p)|0;break}}o=(l|0)==0;if((n&65535)<17){if(!o){n=0;do{b[p+(n<<1)>>1]=~~+h[m+(n<<3)>>3];n=n+1|0}while((n|0)!=(l|0))}if(!j){c[f>>2]=(c[f>>2]|0)+1;n=1;break}if((l|0)<=-1)Ra(112720,111632,1979,112744);if(c[d+12>>2]&128)$w(p,l);n=_Y(d,f,j,k,8,l,l<<1,p)|0;break}else{if(!o){n=0;do{c[p+(n<<2)>>2]=~~+h[m+(n<<3)>>3];n=n+1|0}while((n|0)!=(l|0))}if(!j){c[f>>2]=(c[f>>2]|0)+1;n=1;break}if(l>>>0>=1073741824)Ra(112160,111632,2023,112640);if(c[d+12>>2]&128)bx(p,l);n=_Y(d,f,j,k,9,l,l<<2,p)|0;break}}else if((o|0)==3){if((e[d+84>>1]|0)>=33){if(!j){c[f>>2]=(c[f>>2]|0)+1;n=1;break}if(l>>>0>=536870912)Ra(112336,111632,2264,112432);if(c[d+12>>2]&128)ex(m,l);n=_Y(d,f,j,k,12,l,n,m)|0;break}if(l){n=0;do{g[p+(n<<2)>>2]=+h[m+(n<<3)>>3];n=n+1|0}while((n|0)!=(l|0))}if(!j){c[f>>2]=(c[f>>2]|0)+1;n=1;break}if(l>>>0>=1073741824)Ra(112160,111632,2239,112472);if(c[d+12>>2]&128)dx(p,l);n=_Y(d,f,j,k,11,l,l<<2,p)|0}else if((o|0)==1){n=b[d+84>>1]|0;if((n&65535)<9){if(l){n=0;do{a[p+n>>0]=~~+h[m+(n<<3)>>3];n=n+1|0}while((n|0)!=(l|0))}if(!j){c[f>>2]=(c[f>>2]|0)+1;n=1;break}else{n=_Y(d,f,j,k,1,l,l,p)|0;break}}o=(l|0)==0;if((n&65535)<17){if(!o){n=0;do{b[p+(n<<1)>>1]=~~+h[m+(n<<3)>>3];n=n+1|0}while((n|0)!=(l|0))}if(!j){c[f>>2]=(c[f>>2]|0)+1;n=1;break}if((l|0)<=-1)Ra(112720,111632,1956,112888);if(c[d+12>>2]&128)$w(p,l);n=_Y(d,f,j,k,3,l,l<<1,p)|0;break}else{if(!o){n=0;do{c[p+(n<<2)>>2]=~~+h[m+(n<<3)>>3]>>>0;n=n+1|0}while((n|0)!=(l|0))}if(!j){c[f>>2]=(c[f>>2]|0)+1;n=1;break}if(l>>>0>=1073741824)Ra(112160,111632,2e3,112680);if(c[d+12>>2]&128)bx(p,l);n=_Y(d,f,j,k,4,l,l<<2,p)|0;break}}else n=0;while(0);$J(p);d=n;i=q;return d|0}function cZ(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if(!d){c[b>>2]=(c[b>>2]|0)+1;a=1;i=q;return a|0}n=f<<1;o=f<<3;p=_J(o)|0;if(!p){Yv(c[a+628>>2]|0,112928,313360,q);a=0;i=q;return a|0}if(f){l=p;m=0;while(1){j=+g[h>>2];do if(!(j<=0.0)){k=~~j>>>0;if(j==+(k>>>0)){c[l>>2]=k;c[l+4>>2]=1;break}if(j<1.0){c[l>>2]=~~(j*4294967296.0)>>>0;c[l+4>>2]=-1;break}else{c[l>>2]=-1;c[l+4>>2]=~~(4294967296.0/j)>>>0;break}}else{c[l>>2]=0;c[l+4>>2]=1}while(0);m=m+1|0;if((m|0)==(f|0))break;else{h=h+4|0;l=l+8|0}}}if(c[a+12>>2]&128)bx(p,n);a=_Y(a,b,d,e,5,f,o,p)|0;$J(p);i=q;return a|0}function dZ(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;f=c[a+576>>2]|0;if(!f)Ra(234152,114720,1198,116992);if((d|0)==293|(d|0)==292){a=c[f+28>>2]|0;f=c[e>>2]|0;d=c[f>>2]|0;c[e>>2]=f+4;c[d>>2]=a;d=1;return d|0}else if((d|0)==328){a=c[f+20>>2]|0;f=c[e>>2]|0;d=c[f>>2]|0;c[e>>2]=f+4;c[d>>2]=a;d=1;return d|0}else if((d|0)==327){a=b[f+16>>1]|0;f=c[e>>2]|0;d=c[f>>2]|0;c[e>>2]=f+4;b[d>>1]=a;d=1;return d|0}else if((d|0)==65540){a=c[f+60>>2]|0;f=c[e>>2]|0;d=c[f>>2]|0;c[e>>2]=f+4;c[d>>2]=a;d=1;return d|0}else if((d|0)==326){a=c[f+24>>2]|0;f=c[e>>2]|0;d=c[f>>2]|0;c[e>>2]=f+4;c[d>>2]=a;d=1;return d|0}else if((d|0)==65536){a=c[f+4>>2]|0;f=c[e>>2]|0;d=c[f>>2]|0;c[e>>2]=f+4;c[d>>2]=a;d=1;return d|0}else{d=Hd[c[f+32>>2]&255](a,d,e)|0;return d|0}return 0}function eZ(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=a+576|0;g=c[f>>2]|0;if(!g)Ra(234152,114720,1151,116952);h=c[g+36>>2]|0;if(!h)Ra(116968,114720,1152,116952);if((d|0)==65536){d=c[e>>2]|0;a=c[d>>2]|0;c[e>>2]=d+4;c[g+4>>2]=a;a=1;return a|0}else if((d|0)==65540){d=c[e>>2]|0;a=c[d>>2]|0;c[e>>2]=d+4;c[(c[f>>2]|0)+60>>2]=a;a=1;return a|0}else if((d|0)==292){if((b[a+88>>1]|0)==3){f=c[e>>2]|0;h=c[f>>2]|0;c[e>>2]=f+4;c[g+28>>2]=h}}else if((d|0)==327){f=c[e>>2]|0;h=c[f>>2]|0;c[e>>2]=f+4;b[g+16>>1]=h}else if((d|0)==328){f=c[e>>2]|0;h=c[f>>2]|0;c[e>>2]=f+4;c[g+20>>2]=h}else if((d|0)==326){f=c[e>>2]|0;h=c[f>>2]|0;c[e>>2]=f+4;c[g+24>>2]=h}else if((d|0)==293){if((b[a+88>>1]|0)==4){f=c[e>>2]|0;h=c[f>>2]|0;c[e>>2]=f+4;c[g+28>>2]=h}}else{a=Hd[h&255](a,d,e)|0;return a|0}f=Iv(a,d)|0;if(!f){a=0;return a|0}h=b[f+24>>1]|0;d=a+(((h&65535)>>>5&65535)<<2)+40|0;c[d>>2]=1<<(h&31)|c[d>>2];a=a+12|0;c[a>>2]=c[a>>2]|8;a=1;return a|0}function fZ(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;l=c[a+576>>2]|0;if(!l)Ra(234152,114720,1231,116648);k=a+48|0;g=c[k>>2]|0;if(g&512){if((b[a+88>>1]|0)==4){Xb(116672,18,1,d|0)|0;if(c[l+28>>2]&2){c[m>>2]=116664;Uc(d|0,116696,m|0)|0}}else{Xb(116720,18,1,d|0)|0;j=l+28|0;g=c[j>>2]|0;if(!(g&1))h=116664;else{c[m>>2]=116664;Uc(d|0,116744,m|0)|0;g=c[j>>2]|0;h=116760}if(g&4){c[m>>2]=h;Uc(d|0,116768,m|0)|0;g=c[j>>2]|0;h=116760}if(g&2){c[m>>2]=h;Uc(d|0,116696,m|0)|0}}g=c[l+28>>2]|0;c[m>>2]=g;c[m+4>>2]=g;Uc(d|0,116784,m|0)|0;g=c[k>>2]|0}if(g&8){Xb(116800,11,1,d|0)|0;g=l+16|0;h=e[g>>1]|0;if((h|0)==2)Xb(116848,19,1,d|0)|0;else if((h|0)==1)Xb(116824,21,1,d|0)|0;else if(!h)Xb(116816,6,1,d|0)|0;g=e[g>>1]|0;c[m>>2]=g;c[m+4>>2]=g;Uc(d|0,116872,m|0)|0;g=c[k>>2]|0}if(g&4){c[m>>2]=c[l+24>>2];Uc(d|0,116888,m|0)|0;g=c[k>>2]|0}if(g&16){c[m>>2]=c[l+20>>2];Uc(d|0,116912,m|0)|0}g=c[l+40>>2]|0;if(!g){i=n;return}Ud[g&255](a,d,f);i=n;return}function gZ(a){a=a|0;return 1}function hZ(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;q=r;l=a+576|0;m=c[l>>2]|0;if((b[a+84>>1]|0)!=1){Yv(c[a+628>>2]|0,116440,116456,q);q=0;i=r;return q|0}if(!(c[a+12>>2]&1024)){p=Xw(a)|0;d=a+56|0}else{p=lx(a)|0;d=a+68|0}e=c[d>>2]|0;c[m+8>>2]=p;c[m+12>>2]=e;j=m+28|0;if(!(c[j>>2]&1))n=(b[a+88>>1]|0)==4;else n=1;f=m+64|0;c[f>>2]=0;if(e>>>0<4294967264)d=e+31&-32;else d=0;if(n){if((d&2147483616|0)==(d|0)){o=d<<1;h=12}}else{o=d;h=12}if(((h|0)==12?(o|0)!=0:0)?(g=o<<1,k=(o&2147483647|0)==(o|0),!((g|0)==0|k^1)):0){d=Wu(a,k?g:0,4,116560)|0;c[f>>2]=d;if(!d){q=0;i=r;return q|0}sfa(d|0,0,(k?o<<3:0)|0)|0;d=c[f>>2]|0;c[m+72>>2]=d;if(n)c[m+68>>2]=d+(o<<2);else c[m+68>>2]=0;if((b[a+88>>1]|0)==3?(c[j>>2]&1|0)!=0:0){c[a+532>>2]=148;c[a+540>>2]=148;c[a+548>>2]=148}d=c[l>>2]|0;if(!n){c[d+80>>2]=0;q=1;i=r;return q|0}p=_J(p)|0;c[d+80>>2]=p;if(p){q=1;i=r;return q|0}Yv(c[a+628>>2]|0,116440,116592,q);q=0;i=r;return q|0}p=c[a+628>>2]|0;a=c[a>>2]|0;c[q>>2]=e;Yv(p,a,116512,q);q=0;i=r;return q|0}function iZ(a,d){a=a|0;d=d|0;var e=0;e=c[a+576>>2]|0;if(!e)Ra(234176,114720,152,116424);c[e+52>>2]=0;c[e+48>>2]=0;c[e+56>>2]=0;c[e+44>>2]=fx((b[a+94>>1]|0)!=2&1)|0;d=c[e+68>>2]|0;if(!d){a=e+92|0;c[a>>2]=0;return 1}c[d>>2]=c[e+12>>2];c[d+4>>2]=0;a=e+92|0;c[a>>2]=0;return 1}function jZ(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+32|0;x=I;l=c[a+576>>2]|0;C=c[l+12>>2]|0;q=c[l+44>>2]|0;r=l+8|0;if((e|0)%(c[r>>2]|0)|0){Yv(c[a+628>>2]|0,116408,232664,x);H=-1;i=I;return H|0}D=l+48|0;h=c[D>>2]|0;E=l+52|0;j=c[E>>2]|0;F=l+56|0;g=c[F>>2]|0;G=a+604|0;f=c[G>>2]|0;H=a+608|0;k=c[H>>2]|0;p=f+k|0;B=c[l+72>>2]|0;a:do if((e|0)>0){t=l+92|0;u=a+628|0;v=a+12|0;w=a+492|0;s=a+452|0;A=l+60|0;y=B;b:while(1){c:do if(!g){k=j;while(1){do if((k|0)<11){if(f>>>0>=p>>>0)if(!k){j=h;g=0;z=68;break b}else{j=11;break}a=f+1|0;h=(d[q+(d[f>>0]|0)>>0]|0)<>>0

>>0){h=(d[q+(d[a>>0]|0)>>0]|0)<>>1;k=j+-1|0}}while(0);while(1){do if((j|0)<8)if(f>>>0>=p>>>0)if(!j){j=h;z=68;break b}else{j=8;break}else{h=(d[q+(d[f>>0]|0)>>0]|0)<>>8;j=j+-8|0}while(1){j=j+-1|0;g=h>>>1;if(!(h&1))h=g;else{k=0;o=B;break}}d:while(1){a=0;l=f;while(1){do if((j|0)<12){if(l>>>0>=p>>>0)if(!j){e=g;j=k;f=l;h=o;z=45;break b}else{j=12;f=l;break}f=l+1|0;g=(d[q+(d[l>>0]|0)>>0]|0)<>>0

>>0){g=(d[q+(d[f>>0]|0)>>0]|0)<>0]|0;j=j-h|0;g=g>>>h;h=d[118112+(l<<3)>>0]|0;if((h|0)==7)break;else if((h|0)==12){l=g;g=1;h=o;z=56;break d}else if(!((h|0)==11|(h|0)==9)){h=o;z=32;break d}l=c[118116+(l<<3)>>2]|0;a=l+a|0;k=l+k|0;l=f}m=c[118116+(l<<3)>>2]|0;n=m+a|0;h=o+4|0;c[o>>2]=n;k=m+k|0;if((k|0)<(C|0))a=0;else{m=g;g=0;break}while(1){do if((j|0)<13){if(f>>>0>=p>>>0)if(!j){e=g;j=k;z=45;break b}else{j=13;break}m=f+1|0;g=(d[q+(d[f>>0]|0)>>0]|0)<>>0

>>0){g=(d[q+(d[m>>0]|0)>>0]|0)<>0]|0;j=j-l|0;g=g>>>l;l=d[150880+(m<<3)>>0]|0;if((l|0)==12){l=g;g=1;z=56;break d}else if((l|0)==8)break;else if(!((l|0)==11|(l|0)==10)){z=42;break d}m=c[150884+(m<<3)>>2]|0;a=m+a|0;k=m+k|0}m=c[150884+(m<<3)>>2]|0;a=m+a|0;l=o+8|0;c[h>>2]=a;k=m+k|0;if((k|0)>=(C|0)){m=g;g=0;h=l;break}if(a){o=l;continue}o=(n|0)==0?o:l}if((z|0)==32){l=c[u>>2]|0;n=(c[v>>2]&1024|0)!=0;o=c[(n?w:s)>>2]|0;c[x>>2]=c[t>>2];c[x+4>>2]=n?233560:233568;c[x+8>>2]=o;c[x+12>>2]=k;Yv(l,116408,115152,x);l=g;g=0;z=56}else if((z|0)==42){l=c[u>>2]|0;n=(c[v>>2]&1024|0)!=0;o=c[(n?w:s)>>2]|0;c[x>>2]=c[t>>2];c[x+4>>2]=n?233560:233568;c[x+8>>2]=o;c[x+12>>2]=k;Yv(l,116408,115152,x);l=g;g=0;z=56}if((z|0)==56){z=0;if(!a)m=l;else{c[h>>2]=a;m=l;h=h+4|0}}do if((k|0)!=(C|0)){l=c[t>>2]|0;a=c[u>>2]|0;n=(c[v>>2]&1024|0)!=0;o=c[(n?w:s)>>2]|0;c[x>>2]=k>>>0>>0?115064:115080;c[x+4>>2]=l;c[x+8>>2]=n?233560:233568;c[x+12>>2]=o;c[x+16>>2]=k;c[x+20>>2]=C;qx(a,116408,115016,x);a=(k|0)>(C|0);if(a&h>>>0>B>>>0)do{h=h+-4|0;k=k-(c[h>>2]|0)|0;a=(k|0)>(C|0)}while(a&h>>>0>B>>>0);if((k|0)>=(C|0)){if(!a)break;c[h>>2]=C;c[h+4>>2]=0;h=h+8|0;break}if(h-y&4){c[h>>2]=0;h=h+4|0}c[h>>2]=C-((k|0)<0?0:k);h=h+4|0}while(0);Yd[c[A>>2]&63](b,B,h,C);h=c[r>>2]|0;e=e-h|0;c[t>>2]=(c[t>>2]|0)+1;if((e|0)<=0){h=m;z=72;break}else{b=b+h|0;h=m}}do if((z|0)==45){z=c[u>>2]|0;q=(c[v>>2]&1024|0)!=0;r=c[(q?w:s)>>2]|0;c[x>>2]=c[t>>2];c[x+4>>2]=q?233560:233568;c[x+8>>2]=r;c[x+12>>2]=j;qx(z,116408,115104,x);if(a){c[h>>2]=a;h=h+4|0}if((j|0)==(C|0)){j=e;g=0}else{t=c[t>>2]|0;g=c[u>>2]|0;v=(c[v>>2]&1024|0)!=0;z=c[(v?w:s)>>2]|0;c[x>>2]=j>>>0>>0?115064:115080;c[x+4>>2]=t;c[x+8>>2]=v?233560:233568;c[x+12>>2]=z;c[x+16>>2]=j;c[x+20>>2]=C;qx(g,116408,115016,x);g=(j|0)>(C|0);if(g&h>>>0>B>>>0)do{h=h+-4|0;j=j-(c[h>>2]|0)|0;g=(j|0)>(C|0)}while(g&h>>>0>B>>>0);if((j|0)>=(C|0)){if(!g){j=e;g=0;break}c[h>>2]=C;c[h+4>>2]=0;j=e;g=0;h=h+8|0;break}if(h-y&4){c[h>>2]=0;h=h+4|0}c[h>>2]=C-((j|0)<0?0:j);j=e;g=0;h=h+4|0}}else if((z|0)==68)if(C){t=c[t>>2]|0;h=c[u>>2]|0;y=(c[v>>2]&1024|0)!=0;z=c[(y?w:s)>>2]|0;c[x>>2]=115064;c[x+4>>2]=t;c[x+8>>2]=y?233560:233568;c[x+12>>2]=z;c[x+16>>2]=0;c[x+20>>2]=C;qx(h,116408,115016,x);h=B+4|0;c[B>>2]=C;if((C|0)<=0){c[h>>2]=0;h=B+8|0}}else h=B;else if((z|0)==72){b=c[G>>2]|0;k=c[H>>2]|0;break a}while(0);Yd[c[A>>2]&63](b,B,h,C);c[E>>2]=0;c[D>>2]=j;c[F>>2]=g;c[H>>2]=(c[G>>2]|0)-f+(c[H>>2]|0);c[G>>2]=f;H=-1;i=I;return H|0}else b=f;while(0);c[E>>2]=j;c[D>>2]=h;c[F>>2]=g;c[H>>2]=b-f+k;c[G>>2]=f;H=1;i=I;return H|0}function kZ(a,d){a=a|0;d=d|0;var e=0.0,f=0;f=c[a+576>>2]|0;if(!f)Ra(234176,114720,722,116392);c[f+52>>2]=8;c[f+48>>2]=0;c[f+76>>2]=0;d=c[f+80>>2]|0;if(d)bK(d,0,c[f+8>>2]|0);if(!(c[f+28>>2]&1)){c[f+88>>2]=0;c[f+84>>2]=0;f=f+92|0;c[f>>2]=0;return 1}e=+g[a+120>>2];if((b[a+124>>1]|0)==3)e=e*2.5399999618530273;a=e>150.0?4:2;c[f+88>>2]=a;c[f+84>>2]=a+-1;f=f+92|0;c[f>>2]=0;return 1}function lZ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[b+576>>2]|0;e=d+52|0;if((c[e>>2]|0)==8)return 1;f=b+608|0;if((c[f>>2]|0)>=(c[b+592>>2]|0))vx(b)|0;d=d+48|0;g=c[d>>2]&255;h=b+604|0;b=c[h>>2]|0;c[h>>2]=b+1;a[b>>0]=g;c[f>>2]=(c[f>>2]|0)+1;c[d>>2]=0;c[e>>2]=8;return 1}function mZ(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+16|0;p=b+576|0;f=c[p>>2]|0;w=f+8|0;if((e|0)%(c[w>>2]|0)|0){Yv(c[b+628>>2]|0,116344,115288,A);b=0;i=A;return b|0}if((e|0)<=0){b=1;i=A;return b|0}x=f+4|0;y=b+608|0;z=b+592|0;q=b+604|0;r=f+28|0;s=f+12|0;t=f+76|0;u=f+84|0;v=f+88|0;o=f+80|0;a:while(1){if(!(c[x>>2]&2)){k=c[p>>2]|0;m=k+52|0;g=c[m>>2]|0;n=k+48|0;j=c[n>>2]|0;l=k+28|0;do if(!((c[l>>2]&4|0)==0|(g|0)==4)){f=(g|0)<4?4:-4;h=f+g|0;if(g>>>0>=h>>>0){if(h>>>0>=9){d=14;break a}g=0-f|0;break}f=c[y>>2]|0;j=j&255;while(1){h=h-g|0;if((f|0)>=(c[z>>2]|0))vx(b)|0;f=c[q>>2]|0;c[q>>2]=f+1;a[f>>0]=j;f=(c[y>>2]|0)+1|0;c[y>>2]=f;if(h>>>0>8){g=8;j=0}else break}g=8-h|0;if((h|0)==8){if((f|0)>=(c[z>>2]|0))vx(b)|0;g=c[q>>2]|0;c[q>>2]=g+1;a[g>>0]=0;c[y>>2]=(c[y>>2]|0)+1;g=8;j=0}else j=0}while(0);if(!(c[l>>2]&1)){k=1;h=12}else{k=(c[k+76>>2]|0)==0|2;h=13}if(h>>>0<=g>>>0){d=26;break}f=c[y>>2]|0;while(1){h=h-g|0;if((f|0)>=(c[z>>2]|0))vx(b)|0;f=c[q>>2]|0;c[q>>2]=f+1;a[f>>0]=k>>>h|j;f=(c[y>>2]|0)+1|0;c[y>>2]=f;if(h>>>0>8){g=8;j=0}else{j=h;h=f;break}}g=8-j|0;f=(c[115232+(j<<2)>>2]&k)<=(c[z>>2]|0))vx(b)|0;g=c[q>>2]|0;c[q>>2]=g+1;a[g>>0]=f;c[y>>2]=(c[y>>2]|0)+1;g=8;f=0}c[n>>2]=f;c[m>>2]=g}do if(c[r>>2]&1){if(!(c[t>>2]|0)){n1(b,d,c[s>>2]|0);c[t>>2]=1;f=c[u>>2]|0}else{pZ(b,d,c[o>>2]|0,c[s>>2]|0);f=(c[u>>2]|0)+-1|0;c[u>>2]=f}if(!f){c[t>>2]=0;c[u>>2]=(c[v>>2]|0)+-1;break}else{cK(c[o>>2]|0,d,c[w>>2]|0);break}}else n1(b,d,c[s>>2]|0);while(0);f=c[w>>2]|0;e=e-f|0;if((e|0)<=0){f=1;d=41;break}else d=d+f|0}if((d|0)==14)Ra(116360,114720,701,116376);else if((d|0)==26)Ra(115200,114720,707,116376);else if((d|0)==41){i=A;return f|0}return 0}function nZ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;f=c[b+576>>2]|0;if(c[f+4>>2]&1)return;if(!(c[f+28>>2]&1)){d=1;e=12}else{d=(c[f+76>>2]|0)==0|2;e=13}qZ(b,d,e);qZ(b,d,e);qZ(b,d,e);qZ(b,d,e);qZ(b,d,e);qZ(b,d,e);d=b+608|0;if((c[d>>2]|0)>=(c[b+592>>2]|0))vx(b)|0;e=f+48|0;g=c[e>>2]&255;h=b+604|0;b=c[h>>2]|0;c[h>>2]=b+1;a[b>>0]=g;c[d>>2]=(c[d>>2]|0)+1;c[e>>2]=0;c[f+52>>2]=8;return}function oZ(a){a=a|0;var b=0,d=0,e=0;e=a+576|0;b=c[e>>2]|0;if(!b)Ra(234152,114720,1109,116328);c[a+672>>2]=c[b+32>>2];c[a+668>>2]=c[b+36>>2];c[a+676>>2]=c[b+40>>2];d=c[b+64>>2]|0;if(d)$J(d);b=c[b+80>>2]|0;if(!b){d=c[e>>2]|0;$J(d);c[e>>2]=0;nv(a);return}$J(b);d=c[e>>2]|0;$J(d);c[e>>2]=0;nv(a);return} -function D7(e,f,g,h,j,k,l,m,n,o,p){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;aa=i;i=i+496|0;M=aa+68|0;t=aa+88|0;$=aa+72|0;Q=aa+84|0;P=aa+80|0;R=aa+488|0;N=aa+493|0;S=aa+492|0;W=aa+52|0;_=aa+40|0;Y=aa+28|0;X=aa+16|0;Z=aa+4|0;O=aa;U=aa+64|0;c[M>>2]=p;c[$>>2]=t;V=$+4|0;c[V>>2]=318;c[Q>>2]=t;c[P>>2]=t+400;c[W+0>>2]=0;c[W+4>>2]=0;c[W+8>>2]=0;c[_+0>>2]=0;c[_+4>>2]=0;c[_+8>>2]=0;c[Y+0>>2]=0;c[Y+4>>2]=0;c[Y+8>>2]=0;c[X+0>>2]=0;c[X+4>>2]=0;c[X+8>>2]=0;c[Z+0>>2]=0;c[Z+4>>2]=0;c[Z+8>>2]=0;G7(g,h,R,N,S,W,_,Y,X,O);c[o>>2]=c[n>>2];H=m+8|0;I=X+4|0;J=X+8|0;K=Y+4|0;L=Y+8|0;x=(j&512|0)!=0;y=_+1|0;z=_+8|0;A=_+4|0;B=Z+1|0;C=Z+8|0;D=Z+4|0;E=R+3|0;F=W+4|0;G=0;s=0;a:while(1){p=c[e>>2]|0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0))if((Ed[c[(c[p>>2]|0)+36>>2]&511](p)|0)==-1){c[e>>2]=0;p=0;break}else{p=c[e>>2]|0;break}}else p=0;while(0);p=(p|0)==0;m=c[f>>2]|0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(p)break;else{T=259;break a}if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(p^(c[f>>2]|0)==0)break;else{T=259;break a}else{c[f>>2]=0;T=12;break}}else T=12;while(0);if((T|0)==12?(T=0,p):0){T=259;break}b:do switch(a[R+G>>0]|0){case 0:{T=27;break}case 1:{if((G|0)==3){T=259;break a}p=c[e>>2]|0;m=c[p+12>>2]|0;if((m|0)==(c[p+16>>2]|0))p=Ed[c[(c[p>>2]|0)+36>>2]&511](p)|0;else p=d[m>>0]|0;if((p&255)<<24>>24<=-1){T=26;break a}if(!(b[(c[H>>2]|0)+(p<<24>>24<<1)>>1]&8192)){T=26;break a}p=c[e>>2]|0;m=p+12|0;g=c[m>>2]|0;if((g|0)==(c[p+16>>2]|0))p=Ed[c[(c[p>>2]|0)+40>>2]&511](p)|0;else{c[m>>2]=g+1;p=d[g>>0]|0}D2(Z,p&255);T=27;break}case 3:{r=b[Y>>1]|0;m=r&255;u=(m&1)==0;p=(r&65535)>>>8&255;if(u)h=(r&254)>>>1;else h=c[K>>2]|0;j=b[X>>1]|0;v=j&255;q=(v&1)==0;w=(j&65535)>>>8&255;if(q)g=(j&254)>>>1;else g=c[I>>2]|0;if((h|0)!=(0-g|0)){if(u)g=(r&254)>>>1;else g=c[K>>2]|0;if(g){if(q)g=(j&254)>>>1;else g=c[I>>2]|0;if(g){g=c[e>>2]|0;h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0)){q=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;p=b[Y>>1]|0;m=p&255;p=(p&65535)>>>8&255}else q=d[h>>0]|0;if(m&1)p=a[c[L>>2]>>0]|0;m=c[e>>2]|0;g=m+12|0;h=c[g>>2]|0;j=(h|0)==(c[m+16>>2]|0);if((q&255)<<24>>24==p<<24>>24){if(j)Ed[c[(c[m>>2]|0)+40>>2]&511](m)|0;else c[g>>2]=h+1;p=a[Y>>0]|0;if(!(p&1))p=(p&255)>>>1;else p=c[K>>2]|0;s=p>>>0>1?Y:s;break b}if(j)m=Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0;else m=d[h>>0]|0;p=b[X>>1]|0;if(!(p&1))p=(p&65535)>>>8&255;else p=a[c[J>>2]>>0]|0;if((m&255)<<24>>24!=p<<24>>24){T=122;break a}p=c[e>>2]|0;m=p+12|0;g=c[m>>2]|0;if((g|0)==(c[p+16>>2]|0))Ed[c[(c[p>>2]|0)+40>>2]&511](p)|0;else c[m>>2]=g+1;a[l>>0]=1;p=a[X>>0]|0;if(!(p&1))p=(p&255)>>>1;else p=c[I>>2]|0;s=p>>>0>1?X:s;break b}}if(u)g=(r&254)>>>1;else g=c[K>>2]|0;h=c[e>>2]|0;j=c[h+12>>2]|0;q=(j|0)==(c[h+16>>2]|0);if(!g){if(q){g=Ed[c[(c[h>>2]|0)+36>>2]&511](h)|0;p=b[X>>1]|0;m=p&255;p=(p&65535)>>>8&255}else{g=d[j>>0]|0;m=v;p=w}if(m&1)p=a[c[J>>2]>>0]|0;if((g&255)<<24>>24!=p<<24>>24)break b;p=c[e>>2]|0;m=p+12|0;g=c[m>>2]|0;if((g|0)==(c[p+16>>2]|0))Ed[c[(c[p>>2]|0)+40>>2]&511](p)|0;else c[m>>2]=g+1;a[l>>0]=1;p=a[X>>0]|0;if(!(p&1))p=(p&255)>>>1;else p=c[I>>2]|0;s=p>>>0>1?X:s;break b}if(q){g=Ed[c[(c[h>>2]|0)+36>>2]&511](h)|0;p=b[Y>>1]|0;m=p&255;p=(p&65535)>>>8&255}else g=d[j>>0]|0;if(m&1)p=a[c[L>>2]>>0]|0;if((g&255)<<24>>24!=p<<24>>24){a[l>>0]=1;break b}p=c[e>>2]|0;m=p+12|0;g=c[m>>2]|0;if((g|0)==(c[p+16>>2]|0))Ed[c[(c[p>>2]|0)+40>>2]&511](p)|0;else c[m>>2]=g+1;p=a[Y>>0]|0;if(!(p&1))p=(p&255)>>>1;else p=c[K>>2]|0;s=p>>>0>1?Y:s}break}case 4:{j=a[S>>0]|0;p=0;c:while(1){m=c[e>>2]|0;do if(m){if((c[m+12>>2]|0)==(c[m+16>>2]|0))if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1){c[e>>2]=0;m=0;break}else{m=c[e>>2]|0;break}}else m=0;while(0);m=(m|0)==0;g=c[f>>2]|0;do if(g){if((c[g+12>>2]|0)!=(c[g+16>>2]|0))if(m)break;else break c;if((Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0)!=-1)if(m^(c[f>>2]|0)==0)break;else break c;else{c[f>>2]=0;T=184;break}}else T=184;while(0);if((T|0)==184?(T=0,m):0)break;m=c[e>>2]|0;g=c[m+12>>2]|0;if((g|0)==(c[m+16>>2]|0))m=Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0;else m=d[g>>0]|0;g=m&255;if(g<<24>>24>-1?(b[(c[H>>2]|0)+(m<<24>>24<<1)>>1]&2048)!=0:0){m=c[o>>2]|0;if((m|0)==(c[M>>2]|0)){Raa(n,o,M);m=c[o>>2]|0}c[o>>2]=m+1;a[m>>0]=g;p=p+1|0}else{m=a[W>>0]|0;if(!(m&1))m=(m&255)>>>1;else m=c[F>>2]|0;if(!((m|0)!=0&(p|0)!=0&g<<24>>24==j<<24>>24))break;if((t|0)==(c[P>>2]|0)){Saa($,Q,P);t=c[Q>>2]|0}w=t+4|0;c[Q>>2]=w;c[t>>2]=p;t=w;p=0}m=c[e>>2]|0;g=m+12|0;h=c[g>>2]|0;if((h|0)==(c[m+16>>2]|0)){Ed[c[(c[m>>2]|0)+40>>2]&511](m)|0;continue}else{c[g>>2]=h+1;continue}}if((p|0)!=0?(c[$>>2]|0)!=(t|0):0){if((t|0)==(c[P>>2]|0)){Saa($,Q,P);t=c[Q>>2]|0}w=t+4|0;c[Q>>2]=w;c[t>>2]=p;t=w}h=c[O>>2]|0;if((h|0)>0){p=c[e>>2]|0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0))if((Ed[c[(c[p>>2]|0)+36>>2]&511](p)|0)==-1){c[e>>2]=0;p=0;break}else{p=c[e>>2]|0;break}}else p=0;while(0);p=(p|0)==0;m=c[f>>2]|0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(p)break;else{T=225;break a}if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(p^(c[f>>2]|0)==0)break;else{T=225;break a}else{c[f>>2]=0;T=219;break}}else T=219;while(0);if((T|0)==219?(T=0,p):0){T=225;break a}p=c[e>>2]|0;m=c[p+12>>2]|0;if((m|0)==(c[p+16>>2]|0))p=Ed[c[(c[p>>2]|0)+36>>2]&511](p)|0;else p=d[m>>0]|0;if((p&255)<<24>>24!=(a[N>>0]|0)){T=225;break a}p=c[e>>2]|0;m=p+12|0;g=c[m>>2]|0;if((g|0)==(c[p+16>>2]|0))Ed[c[(c[p>>2]|0)+40>>2]&511](p)|0;else c[m>>2]=g+1;do{p=c[e>>2]|0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0))if((Ed[c[(c[p>>2]|0)+36>>2]&511](p)|0)==-1){c[e>>2]=0;p=0;break}else{p=c[e>>2]|0;break}}else p=0;while(0);p=(p|0)==0;m=c[f>>2]|0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(p)break;else{T=246;break a}if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(p^(c[f>>2]|0)==0)break;else{T=246;break a}else{c[f>>2]=0;T=239;break}}else T=239;while(0);if((T|0)==239?(T=0,p):0){T=246;break a}p=c[e>>2]|0;m=c[p+12>>2]|0;if((m|0)==(c[p+16>>2]|0))p=Ed[c[(c[p>>2]|0)+36>>2]&511](p)|0;else p=d[m>>0]|0;if((p&255)<<24>>24<=-1){T=246;break a}if(!(b[(c[H>>2]|0)+(p<<24>>24<<1)>>1]&2048)){T=246;break a}if((c[o>>2]|0)==(c[M>>2]|0))Raa(n,o,M);p=c[e>>2]|0;m=c[p+12>>2]|0;if((m|0)==(c[p+16>>2]|0))p=Ed[c[(c[p>>2]|0)+36>>2]&511](p)|0;else p=d[m>>0]|0;m=c[o>>2]|0;c[o>>2]=m+1;a[m>>0]=p;h=h+-1|0;c[O>>2]=h;p=c[e>>2]|0;m=p+12|0;g=c[m>>2]|0;if((g|0)==(c[p+16>>2]|0))Ed[c[(c[p>>2]|0)+40>>2]&511](p)|0;else c[m>>2]=g+1}while((h|0)>0)}if((c[o>>2]|0)==(c[n>>2]|0)){T=257;break a}break}case 2:{if(!((s|0)!=0|G>>>0<2)){if((G|0)==2)p=(a[E>>0]|0)!=0;else p=0;if(!(x|p)){s=0;break b}}r=a[_>>0]|0;u=(r&1)==0;m=u?y:c[z>>2]|0;d:do if((G|0)!=0?(d[R+(G+-1)>>0]|0)<2:0){g=(r&255)>>>1;h=c[H>>2]|0;v=c[z>>2]|0;j=c[A>>2]|0;while(1){if((m|0)==((u?y:v)+(u?g:j)|0)){q=m;break}p=a[m>>0]|0;if(p<<24>>24<=-1){q=m;break}if(!(b[h+(p<<24>>24<<1)>>1]&8192)){q=m;break}else m=m+1|0}h=q-(u?y:v)|0;j=a[Z>>0]|0;p=(j&1)==0;if(p)m=(j&255)>>>1;else m=c[D>>2]|0;e:do if(h>>>0<=m>>>0){if(p){m=B;g=(j&255)>>>1;p=Z+(((j&255)>>>1)-h)+1|0}else{w=c[C>>2]|0;p=c[D>>2]|0;m=w;g=p;p=w+(p-h)|0}g=m+g|0;if((p|0)==(g|0)){p=r;h=q;break d}else m=u?y:v;while(1){if((a[p>>0]|0)!=(a[m>>0]|0))break e;p=p+1|0;if((p|0)==(g|0)){p=r;h=q;break d}else m=m+1|0}}while(0);p=r;h=u?y:v}else{p=r;h=m}while(0);f:while(1){if(!(p&1)){m=y;p=(p&255)>>>1}else{m=c[z>>2]|0;p=c[A>>2]|0}if((h|0)==(m+p|0)){m=h;break}p=c[e>>2]|0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0))if((Ed[c[(c[p>>2]|0)+36>>2]&511](p)|0)==-1){c[e>>2]=0;p=0;break}else{p=c[e>>2]|0;break}}else p=0;while(0);p=(p|0)==0;m=c[f>>2]|0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(p)break;else{m=h;break f}if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(p^(c[f>>2]|0)==0)break;else{m=h;break f}else{c[f>>2]=0;T=158;break}}else T=158;while(0);if((T|0)==158?(T=0,p):0){m=h;break}p=c[e>>2]|0;m=c[p+12>>2]|0;if((m|0)==(c[p+16>>2]|0))p=Ed[c[(c[p>>2]|0)+36>>2]&511](p)|0;else p=d[m>>0]|0;if((p&255)<<24>>24!=(a[h>>0]|0)){m=h;break}p=c[e>>2]|0;m=p+12|0;g=c[m>>2]|0;if((g|0)==(c[p+16>>2]|0))Ed[c[(c[p>>2]|0)+40>>2]&511](p)|0;else c[m>>2]=g+1;p=a[_>>0]|0;h=h+1|0}if(x){p=a[_>>0]|0;if(!(p&1)){g=y;p=(p&255)>>>1}else{g=c[z>>2]|0;p=c[A>>2]|0}if((m|0)!=(g+p|0)){T=173;break a}}break}default:{}}while(0);g:do if((T|0)==27){T=0;if((G|0)==3){T=259;break a}while(1){p=c[e>>2]|0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0))if((Ed[c[(c[p>>2]|0)+36>>2]&511](p)|0)==-1){c[e>>2]=0;p=0;break}else{p=c[e>>2]|0;break}}else p=0;while(0);m=(p|0)==0;p=c[f>>2]|0;do if(p){if((c[p+12>>2]|0)!=(c[p+16>>2]|0))if(m)break;else break g;if((Ed[c[(c[p>>2]|0)+36>>2]&511](p)|0)!=-1)if(m^(c[f>>2]|0)==0)break;else break g;else{c[f>>2]=0;T=38;break}}else T=38;while(0);if((T|0)==38?(T=0,m):0)break g;p=c[e>>2]|0;m=c[p+12>>2]|0;if((m|0)==(c[p+16>>2]|0))p=Ed[c[(c[p>>2]|0)+36>>2]&511](p)|0;else p=d[m>>0]|0;if((p&255)<<24>>24<=-1)break g;if(!(b[(c[H>>2]|0)+(p<<24>>24<<1)>>1]&8192))break g;p=c[e>>2]|0;m=p+12|0;g=c[m>>2]|0;if((g|0)==(c[p+16>>2]|0))p=Ed[c[(c[p>>2]|0)+40>>2]&511](p)|0;else{c[m>>2]=g+1;p=d[g>>0]|0}D2(Z,p&255)}}while(0);G=G+1|0;if(G>>>0>=4){T=259;break}}h:do if((T|0)==26){c[k>>2]=c[k>>2]|4;g=0}else if((T|0)==122){c[k>>2]=c[k>>2]|4;g=0}else if((T|0)==173){c[k>>2]=c[k>>2]|4;g=0}else if((T|0)==225){c[k>>2]=c[k>>2]|4;g=0}else if((T|0)==246){c[k>>2]=c[k>>2]|4;g=0}else if((T|0)==257){c[k>>2]=c[k>>2]|4;g=0}else if((T|0)==259){i:do if(s){q=s+1|0;j=s+8|0;r=s+4|0;m=1;j:while(1){p=a[s>>0]|0;if(!(p&1))p=(p&255)>>>1;else p=c[r>>2]|0;if(m>>>0>=p>>>0)break i;p=c[e>>2]|0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0))if((Ed[c[(c[p>>2]|0)+36>>2]&511](p)|0)==-1){c[e>>2]=0;p=0;break}else{p=c[e>>2]|0;break}}else p=0;while(0);p=(p|0)==0;g=c[f>>2]|0;do if(g){if((c[g+12>>2]|0)!=(c[g+16>>2]|0))if(p)break;else break j;if((Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0)!=-1)if(p^(c[f>>2]|0)==0)break;else break j;else{c[f>>2]=0;T=275;break}}else T=275;while(0);if((T|0)==275?(T=0,p):0)break;p=c[e>>2]|0;g=c[p+12>>2]|0;if((g|0)==(c[p+16>>2]|0))p=Ed[c[(c[p>>2]|0)+36>>2]&511](p)|0;else p=d[g>>0]|0;if(!(a[s>>0]&1))g=q;else g=c[j>>2]|0;if((p&255)<<24>>24!=(a[g+m>>0]|0))break;p=m+1|0;g=c[e>>2]|0;h=g+12|0;m=c[h>>2]|0;if((m|0)==(c[g+16>>2]|0)){Ed[c[(c[g>>2]|0)+40>>2]&511](g)|0;m=p;continue}else{c[h>>2]=m+1;m=p;continue}}c[k>>2]=c[k>>2]|4;g=0;break h}while(0);p=c[$>>2]|0;if((p|0)!=(t|0)?(c[U>>2]=0,H7(W,p,t,U),(c[U>>2]|0)!=0):0){c[k>>2]=c[k>>2]|4;g=0}else g=1}while(0);v2(Z);v2(X);v2(Y);v2(_);v2(W);p=c[$>>2]|0;c[$>>2]=0;if(p)Bd[c[V>>2]&511](p);i=aa;return g|0}function E7(a){a=a|0;var b=0;b=gc(8)|0;V1(b,a);qd(b|0,366360,186)}function F7(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=i;i=i+144|0;u=s+24|0;t=s+32|0;q=s+8|0;m=s+16|0;o=s+20|0;l=s+28|0;v=s;c[q>>2]=t;p=q+4|0;c[p>>2]=318;Y2(o,h);d=w8(o,357712)|0;a[l>>0]=0;n=c[f>>2]|0;c[v>>2]=n;h=c[h+4>>2]|0;c[u+0>>2]=c[v+0>>2];if(D7(e,u,g,o,h,j,l,d,q,m,t+100|0)|0){if(!(a[k>>0]&1)){a[k+1>>0]=0;a[k>>0]=0}else{a[c[k+8>>2]>>0]=0;c[k+4>>2]=0}if(a[l>>0]|0)D2(k,Pd[c[(c[d>>2]|0)+28>>2]&511](d,45)|0);h=Pd[c[(c[d>>2]|0)+28>>2]&511](d,48)|0;d=c[q>>2]|0;m=c[m>>2]|0;g=m+-1|0;a:do if(d>>>0>>0){l=d;while(1){d=l+1|0;if((a[l>>0]|0)!=h<<24>>24){d=l;break a}if(d>>>0>>0)l=d;else break}}while(0);Taa(k,d,m)|0}d=c[e>>2]|0;do if(d){if((c[d+12>>2]|0)==(c[d+16>>2]|0))if((Ed[c[(c[d>>2]|0)+36>>2]&511](d)|0)==-1){c[e>>2]=0;d=0;break}else{d=c[e>>2]|0;break}}else d=0;while(0);d=(d|0)==0;do if(n){if((c[n+12>>2]|0)!=(c[n+16>>2]|0))if(d)break;else{r=23;break}if((Ed[c[(c[n>>2]|0)+36>>2]&511](n)|0)!=-1)if(d^(n|0)==0)break;else{r=23;break}else{c[f>>2]=0;r=21;break}}else r=21;while(0);if((r|0)==21?d:0)r=23;if((r|0)==23)c[j>>2]=c[j>>2]|2;c[b>>2]=c[e>>2];S1(c[o>>2]|0)|0;d=c[q>>2]|0;c[q>>2]=0;if(d)Bd[c[p>>2]&511](d);i=s;return}function G7(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+112|0;n=x+100|0;o=x+88|0;p=x+76|0;q=x+64|0;r=x+52|0;s=x+48|0;t=x+24|0;u=x+12|0;v=x;w=x+36|0;if(b){b=w8(d,357152)|0;Cd[c[(c[b>>2]|0)+44>>2]&255](n,b);w=c[n>>2]|0;a[e>>0]=w;a[e+1>>0]=w>>8;a[e+2>>0]=w>>16;a[e+3>>0]=w>>24;Cd[c[(c[b>>2]|0)+32>>2]&255](o,b);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}B2(l,0);c[l+0>>2]=c[o+0>>2];c[l+4>>2]=c[o+4>>2];c[l+8>>2]=c[o+8>>2];c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;v2(o);Cd[c[(c[b>>2]|0)+28>>2]&255](p,b);if(!(a[k>>0]&1)){a[k+1>>0]=0;a[k>>0]=0}else{a[c[k+8>>2]>>0]=0;c[k+4>>2]=0}B2(k,0);c[k+0>>2]=c[p+0>>2];c[k+4>>2]=c[p+4>>2];c[k+8>>2]=c[p+8>>2];c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;v2(p);a[f>>0]=Ed[c[(c[b>>2]|0)+12>>2]&511](b)|0;a[g>>0]=Ed[c[(c[b>>2]|0)+16>>2]&511](b)|0;Cd[c[(c[b>>2]|0)+20>>2]&255](q,b);if(!(a[h>>0]&1)){a[h+1>>0]=0;a[h>>0]=0}else{a[c[h+8>>2]>>0]=0;c[h+4>>2]=0}B2(h,0);c[h+0>>2]=c[q+0>>2];c[h+4>>2]=c[q+4>>2];c[h+8>>2]=c[q+8>>2];c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;v2(q);Cd[c[(c[b>>2]|0)+24>>2]&255](r,b);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}B2(j,0);c[j+0>>2]=c[r+0>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;v2(r);b=Ed[c[(c[b>>2]|0)+36>>2]&511](b)|0}else{b=w8(d,357088)|0;Cd[c[(c[b>>2]|0)+44>>2]&255](s,b);r=c[s>>2]|0;a[e>>0]=r;a[e+1>>0]=r>>8;a[e+2>>0]=r>>16;a[e+3>>0]=r>>24;Cd[c[(c[b>>2]|0)+32>>2]&255](t,b);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}B2(l,0);c[l+0>>2]=c[t+0>>2];c[l+4>>2]=c[t+4>>2];c[l+8>>2]=c[t+8>>2];c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;v2(t);Cd[c[(c[b>>2]|0)+28>>2]&255](u,b);if(!(a[k>>0]&1)){a[k+1>>0]=0;a[k>>0]=0}else{a[c[k+8>>2]>>0]=0;c[k+4>>2]=0}B2(k,0);c[k+0>>2]=c[u+0>>2];c[k+4>>2]=c[u+4>>2];c[k+8>>2]=c[u+8>>2];c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;v2(u);a[f>>0]=Ed[c[(c[b>>2]|0)+12>>2]&511](b)|0;a[g>>0]=Ed[c[(c[b>>2]|0)+16>>2]&511](b)|0;Cd[c[(c[b>>2]|0)+20>>2]&255](v,b);if(!(a[h>>0]&1)){a[h+1>>0]=0;a[h>>0]=0}else{a[c[h+8>>2]>>0]=0;c[h+4>>2]=0}B2(h,0);c[h+0>>2]=c[v+0>>2];c[h+4>>2]=c[v+4>>2];c[h+8>>2]=c[v+8>>2];c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;v2(v);Cd[c[(c[b>>2]|0)+24>>2]&255](w,b);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}B2(j,0);c[j+0>>2]=c[w+0>>2];c[j+4>>2]=c[w+4>>2];c[j+8>>2]=c[w+8>>2];c[w+0>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;v2(w);b=Ed[c[(c[b>>2]|0)+36>>2]&511](b)|0}c[m>>2]=b;i=x;return}function H7(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=a[b>>0]|0;if(!(g&1))h=(g&255)>>>1;else h=c[b+4>>2]|0;a:do if(h){if((d|0)!=(e|0)?(i=e+-4|0,i>>>0>d>>>0):0){h=d;g=e;while(1){j=c[h>>2]|0;c[h>>2]=c[i>>2];c[i>>2]=j;h=h+4|0;g=g+-8|0;if(h>>>0>=g>>>0)break;else{j=i;i=g;g=j}}g=a[b>>0]|0}if(!(g&1)){j=b+1|0;i=(g&255)>>>1}else{j=c[b+8>>2]|0;i=c[b+4>>2]|0}e=e+-4|0;h=a[j>>0]|0;g=h<<24>>24<1|h<<24>>24==127;b:do if(e>>>0>d>>>0){b=j+i|0;i=d;while(1){if(!g?(h<<24>>24|0)!=(c[i>>2]|0):0)break;j=(b-j|0)>1?j+1|0:j;i=i+4|0;h=a[j>>0]|0;g=h<<24>>24<1|h<<24>>24==127;if(i>>>0>=e>>>0)break b}c[f>>2]=4;break a}while(0);if(!g?((c[e>>2]|0)+-1|0)>>>0>=h<<24>>24>>>0:0)c[f>>2]=4}while(0);return}function I7(a){a=a|0;return}function J7(a){a=a|0;nda(a);return}function K7(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=i;i=i+576|0;q=x;l=x+64|0;v=x+56|0;p=x+52|0;t=x+48|0;m=x+564|0;y=x+4|0;o=x+8|0;r=x+464|0;c[v>>2]=l;u=v+4|0;c[u>>2]=318;Y2(t,h);d=w8(t,357704)|0;a[m>>0]=0;c[y>>2]=c[f>>2];h=c[h+4>>2]|0;c[q+0>>2]=c[y+0>>2];do if(L7(e,q,g,t,h,j,m,d,v,p,l+400|0)|0){Xd[c[(c[d>>2]|0)+48>>2]&255](d,357408,357418,o)|0;g=c[p>>2]|0;l=c[v>>2]|0;d=g-l|0;if((d|0)>392){d=qea((d>>2)+2|0)|0;if(!d)lea();else{s=d;n=d}}else{s=0;n=r}if(!(a[m>>0]|0))d=n;else{a[n>>0]=45;d=n+1|0}if(l>>>0>>0){m=o+40|0;n=o;do{h=c[l>>2]|0;g=o;while(1){if((c[g>>2]|0)==(h|0))break;g=g+4|0;if((g|0)==(m|0)){g=m;break}}a[d>>0]=a[357408+(g-n>>2)>>0]|0;l=l+4|0;d=d+1|0}while(l>>>0<(c[p>>2]|0)>>>0)}a[d>>0]=0;c[q>>2]=k;if((Oca(r,357344,q)|0)==1){rea(s);break}else E7(357352)}while(0);d=c[e>>2]|0;do if(d){g=c[d+12>>2]|0;if((g|0)==(c[d+16>>2]|0))d=Ed[c[(c[d>>2]|0)+36>>2]&511](d)|0;else d=c[g>>2]|0;if((d|0)==-1){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);d=c[f>>2]|0;do if(d){g=c[d+12>>2]|0;if((g|0)==(c[d+16>>2]|0))d=Ed[c[(c[d>>2]|0)+36>>2]&511](d)|0;else d=c[g>>2]|0;if((d|0)!=-1)if(h)break;else{w=31;break}else{c[f>>2]=0;w=29;break}}else w=29;while(0);if((w|0)==29?h:0)w=31;if((w|0)==31)c[j>>2]=c[j>>2]|2;c[b>>2]=c[e>>2];S1(c[t>>2]|0)|0;d=c[v>>2]|0;c[v>>2]=0;if(d)Bd[c[u>>2]&511](d);i=x;return}function L7(b,e,f,g,h,j,k,l,m,n,o){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;X=i;i=i+512|0;H=X+496|0;s=X+96|0;W=X+88|0;L=X+80|0;K=X+76|0;M=X+500|0;I=X+72|0;N=X+68|0;R=X+52|0;V=X+40|0;T=X+28|0;S=X+16|0;U=X+4|0;J=X;P=X+64|0;c[H>>2]=o;c[W>>2]=s;Q=W+4|0;c[Q>>2]=318;c[L>>2]=s;c[K>>2]=s+400;c[R+0>>2]=0;c[R+4>>2]=0;c[R+8>>2]=0;c[V+0>>2]=0;c[V+4>>2]=0;c[V+8>>2]=0;c[T+0>>2]=0;c[T+4>>2]=0;c[T+8>>2]=0;c[S+0>>2]=0;c[S+4>>2]=0;c[S+8>>2]=0;c[U+0>>2]=0;c[U+4>>2]=0;c[U+8>>2]=0;N7(f,g,M,I,N,R,V,T,S,J);c[n>>2]=c[m>>2];D=S+4|0;E=S+8|0;F=T+4|0;G=T+8|0;B=(h&512|0)!=0;v=V+4|0;w=V+8|0;x=U+4|0;y=U+8|0;z=M+3|0;A=R+4|0;C=0;r=0;a:while(1){o=c[b>>2]|0;do if(o){f=c[o+12>>2]|0;if((f|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[f>>2]|0;if((o|0)==-1){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);o=c[e>>2]|0;do if(o){f=c[o+12>>2]|0;if((f|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[f>>2]|0;if((o|0)!=-1)if(g^(c[e>>2]|0)==0)break;else{O=267;break a}else{c[e>>2]=0;O=15;break}}else O=15;while(0);if((O|0)==15?(O=0,g):0){O=267;break}b:do switch(a[M+C>>0]|0){case 0:{O=29;break}case 1:{if((C|0)==3){O=267;break a}o=c[b>>2]|0;f=c[o+12>>2]|0;if((f|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[f>>2]|0;if(!(Hd[c[(c[l>>2]|0)+12>>2]&255](l,8192,o)|0)){O=28;break a}o=c[b>>2]|0;f=o+12|0;g=c[f>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+40>>2]&511](o)|0;else{c[f>>2]=g+4;o=c[g>>2]|0}P2(U,o);O=29;break}case 3:{o=a[T>>0]|0;q=(o&1)==0;if(q)g=(o&255)>>>1;else g=c[F>>2]|0;t=a[S>>0]|0;h=(t&1)==0;if(h)f=(t&255)>>>1;else f=c[D>>2]|0;if((g|0)!=(0-f|0)){if(q)f=(o&255)>>>1;else f=c[F>>2]|0;if(f){if(h)f=(t&255)>>>1;else f=c[D>>2]|0;if(f){f=c[b>>2]|0;g=c[f+12>>2]|0;if((g|0)==(c[f+16>>2]|0)){p=Ed[c[(c[f>>2]|0)+36>>2]&511](f)|0;o=a[T>>0]|0}else p=c[g>>2]|0;f=c[b>>2]|0;g=f+12|0;h=c[g>>2]|0;q=(h|0)==(c[f+16>>2]|0);if((p|0)==(c[((o&1)==0?F:c[G>>2]|0)>>2]|0)){if(q)Ed[c[(c[f>>2]|0)+40>>2]&511](f)|0;else c[g>>2]=h+4;o=a[T>>0]|0;if(!(o&1))o=(o&255)>>>1;else o=c[F>>2]|0;r=o>>>0>1?T:r;break b}if(q)o=Ed[c[(c[f>>2]|0)+36>>2]&511](f)|0;else o=c[h>>2]|0;if((o|0)!=(c[((a[S>>0]&1)==0?D:c[E>>2]|0)>>2]|0)){O=117;break a}o=c[b>>2]|0;f=o+12|0;g=c[f>>2]|0;if((g|0)==(c[o+16>>2]|0))Ed[c[(c[o>>2]|0)+40>>2]&511](o)|0;else c[f>>2]=g+4;a[k>>0]=1;o=a[S>>0]|0;if(!(o&1))o=(o&255)>>>1;else o=c[D>>2]|0;r=o>>>0>1?S:r;break b}}if(q)f=(o&255)>>>1;else f=c[F>>2]|0;g=c[b>>2]|0;h=c[g+12>>2]|0;q=(h|0)==(c[g+16>>2]|0);if(!f){if(q){f=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;o=a[S>>0]|0}else{f=c[h>>2]|0;o=t}if((f|0)!=(c[((o&1)==0?D:c[E>>2]|0)>>2]|0))break b;o=c[b>>2]|0;f=o+12|0;g=c[f>>2]|0;if((g|0)==(c[o+16>>2]|0))Ed[c[(c[o>>2]|0)+40>>2]&511](o)|0;else c[f>>2]=g+4;a[k>>0]=1;o=a[S>>0]|0;if(!(o&1))o=(o&255)>>>1;else o=c[D>>2]|0;r=o>>>0>1?S:r;break b}if(q){f=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;o=a[T>>0]|0}else f=c[h>>2]|0;if((f|0)!=(c[((o&1)==0?F:c[G>>2]|0)>>2]|0)){a[k>>0]=1;break b}o=c[b>>2]|0;f=o+12|0;g=c[f>>2]|0;if((g|0)==(c[o+16>>2]|0))Ed[c[(c[o>>2]|0)+40>>2]&511](o)|0;else c[f>>2]=g+4;o=a[T>>0]|0;if(!(o&1))o=(o&255)>>>1;else o=c[F>>2]|0;r=o>>>0>1?T:r}break}case 4:{t=c[N>>2]|0;o=0;c:while(1){f=c[b>>2]|0;do if(f){g=c[f+12>>2]|0;if((g|0)==(c[f+16>>2]|0))f=Ed[c[(c[f>>2]|0)+36>>2]&511](f)|0;else f=c[g>>2]|0;if((f|0)==-1){c[b>>2]=0;h=1;break}else{h=(c[b>>2]|0)==0;break}}else h=1;while(0);f=c[e>>2]|0;do if(f){g=c[f+12>>2]|0;if((g|0)==(c[f+16>>2]|0))f=Ed[c[(c[f>>2]|0)+36>>2]&511](f)|0;else f=c[g>>2]|0;if((f|0)!=-1)if(h^(c[e>>2]|0)==0)break;else break c;else{c[e>>2]=0;O=188;break}}else O=188;while(0);if((O|0)==188?(O=0,h):0)break;f=c[b>>2]|0;g=c[f+12>>2]|0;if((g|0)==(c[f+16>>2]|0))g=Ed[c[(c[f>>2]|0)+36>>2]&511](f)|0;else g=c[g>>2]|0;if(Hd[c[(c[l>>2]|0)+12>>2]&255](l,2048,g)|0){f=c[n>>2]|0;if((f|0)==(c[H>>2]|0)){Uaa(m,n,H);f=c[n>>2]|0}c[n>>2]=f+4;c[f>>2]=g;o=o+1|0}else{f=a[R>>0]|0;if(!(f&1))f=(f&255)>>>1;else f=c[A>>2]|0;if(!((f|0)!=0&(o|0)!=0&(g|0)==(t|0)))break;if((s|0)==(c[K>>2]|0)){Saa(W,L,K);s=c[L>>2]|0}u=s+4|0;c[L>>2]=u;c[s>>2]=o;s=u;o=0}f=c[b>>2]|0;g=f+12|0;h=c[g>>2]|0;if((h|0)==(c[f+16>>2]|0)){Ed[c[(c[f>>2]|0)+40>>2]&511](f)|0;continue}else{c[g>>2]=h+4;continue}}if((o|0)!=0?(c[W>>2]|0)!=(s|0):0){if((s|0)==(c[K>>2]|0)){Saa(W,L,K);s=c[L>>2]|0}u=s+4|0;c[L>>2]=u;c[s>>2]=o;s=u}h=c[J>>2]|0;if((h|0)>0){o=c[b>>2]|0;do if(o){f=c[o+12>>2]|0;if((f|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[f>>2]|0;if((o|0)==-1){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);o=c[e>>2]|0;do if(o){f=c[o+12>>2]|0;if((f|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[f>>2]|0;if((o|0)!=-1)if(g^(c[e>>2]|0)==0)break;else{O=231;break a}else{c[e>>2]=0;O=225;break}}else O=225;while(0);if((O|0)==225?(O=0,g):0){O=231;break a}o=c[b>>2]|0;f=c[o+12>>2]|0;if((f|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[f>>2]|0;if((o|0)!=(c[I>>2]|0)){O=231;break a}o=c[b>>2]|0;f=o+12|0;g=c[f>>2]|0;if((g|0)==(c[o+16>>2]|0))Ed[c[(c[o>>2]|0)+40>>2]&511](o)|0;else c[f>>2]=g+4;do{o=c[b>>2]|0;do if(o){f=c[o+12>>2]|0;if((f|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[f>>2]|0;if((o|0)==-1){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);o=c[e>>2]|0;do if(o){f=c[o+12>>2]|0;if((f|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[f>>2]|0;if((o|0)!=-1)if(g^(c[e>>2]|0)==0)break;else{O=254;break a}else{c[e>>2]=0;O=248;break}}else O=248;while(0);if((O|0)==248?(O=0,g):0){O=254;break a}o=c[b>>2]|0;f=c[o+12>>2]|0;if((f|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[f>>2]|0;if(!(Hd[c[(c[l>>2]|0)+12>>2]&255](l,2048,o)|0)){O=254;break a}if((c[n>>2]|0)==(c[H>>2]|0))Uaa(m,n,H);o=c[b>>2]|0;f=c[o+12>>2]|0;if((f|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[f>>2]|0;f=c[n>>2]|0;c[n>>2]=f+4;c[f>>2]=o;h=h+-1|0;c[J>>2]=h;o=c[b>>2]|0;f=o+12|0;g=c[f>>2]|0;if((g|0)==(c[o+16>>2]|0))Ed[c[(c[o>>2]|0)+40>>2]&511](o)|0;else c[f>>2]=g+4}while((h|0)>0)}if((c[n>>2]|0)==(c[m>>2]|0)){O=265;break a}break}case 2:{if(!((r|0)!=0|C>>>0<2)){if((C|0)==2)o=(a[z>>0]|0)!=0;else o=0;if(!(B|o)){r=0;break b}}f=a[V>>0]|0;o=(f&1)==0?v:c[w>>2]|0;d:do if((C|0)!=0?(d[M+(C+-1)>>0]|0)<2:0){while(1){if(!(f&1)){g=v;h=(f&255)>>>1}else{g=c[w>>2]|0;h=c[v>>2]|0}if((o|0)==(g+(h<<2)|0))break;if(!(Hd[c[(c[l>>2]|0)+12>>2]&255](l,8192,c[o>>2]|0)|0)){O=129;break}f=a[V>>0]|0;o=o+4|0}if((O|0)==129){O=0;f=a[V>>0]|0}u=(f&1)==0;p=o-(u?v:c[w>>2]|0)>>2;t=a[U>>0]|0;g=(t&1)==0;if(g)h=(t&255)>>>1;else h=c[x>>2]|0;e:do if(p>>>0<=h>>>0){if(g){h=x;q=(t&255)>>>1;g=x+(((t&255)>>>1)-p<<2)|0}else{t=c[y>>2]|0;g=c[x>>2]|0;h=t;q=g;g=t+(g-p<<2)|0}q=h+(q<<2)|0;if((g|0)==(q|0)){h=o;break d}else h=u?v:c[w>>2]|0;while(1){if((c[g>>2]|0)!=(c[h>>2]|0))break e;g=g+4|0;if((g|0)==(q|0)){h=o;break d}else h=h+4|0}}while(0);h=u?v:c[w>>2]|0}else h=o;while(0);f:while(1){if(!(f&1)){g=v;o=(f&255)>>>1}else{g=c[w>>2]|0;o=c[v>>2]|0}if((h|0)==(g+(o<<2)|0)){f=h;break}o=c[b>>2]|0;do if(o){f=c[o+12>>2]|0;if((f|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[f>>2]|0;if((o|0)==-1){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);o=c[e>>2]|0;do if(o){f=c[o+12>>2]|0;if((f|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[f>>2]|0;if((o|0)!=-1)if(g^(c[e>>2]|0)==0)break;else{f=h;break f}else{c[e>>2]=0;O=159;break}}else O=159;while(0);if((O|0)==159?(O=0,g):0){f=h;break}o=c[b>>2]|0;f=c[o+12>>2]|0;if((f|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[f>>2]|0;if((o|0)!=(c[h>>2]|0)){f=h;break}o=c[b>>2]|0;f=o+12|0;g=c[f>>2]|0;if((g|0)==(c[o+16>>2]|0))Ed[c[(c[o>>2]|0)+40>>2]&511](o)|0;else c[f>>2]=g+4;f=a[V>>0]|0;h=h+4|0}if(B){o=a[V>>0]|0;if(!(o&1)){g=v;o=(o&255)>>>1}else{g=c[w>>2]|0;o=c[v>>2]|0}if((f|0)!=(g+(o<<2)|0)){O=174;break a}}break}default:{}}while(0);g:do if((O|0)==29){O=0;if((C|0)==3){O=267;break a}while(1){o=c[b>>2]|0;do if(o){f=c[o+12>>2]|0;if((f|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[f>>2]|0;if((o|0)==-1){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);o=c[e>>2]|0;do if(o){f=c[o+12>>2]|0;if((f|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[f>>2]|0;if((o|0)!=-1)if(g^(c[e>>2]|0)==0)break;else break g;else{c[e>>2]=0;O=43;break}}else O=43;while(0);if((O|0)==43?(O=0,g):0)break g;o=c[b>>2]|0;f=c[o+12>>2]|0;if((f|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[f>>2]|0;if(!(Hd[c[(c[l>>2]|0)+12>>2]&255](l,8192,o)|0))break g;o=c[b>>2]|0;f=o+12|0;g=c[f>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+40>>2]&511](o)|0;else{c[f>>2]=g+4;o=c[g>>2]|0}P2(U,o)}}while(0);C=C+1|0;if(C>>>0>=4){O=267;break}}h:do if((O|0)==28){c[j>>2]=c[j>>2]|4;g=0}else if((O|0)==117){c[j>>2]=c[j>>2]|4;g=0}else if((O|0)==174){c[j>>2]=c[j>>2]|4;g=0}else if((O|0)==231){c[j>>2]=c[j>>2]|4;g=0}else if((O|0)==254){c[j>>2]=c[j>>2]|4;g=0}else if((O|0)==265){c[j>>2]=c[j>>2]|4;g=0}else if((O|0)==267){i:do if(r){p=r+4|0;q=r+8|0;h=1;j:while(1){o=a[r>>0]|0;if(!(o&1))o=(o&255)>>>1;else o=c[p>>2]|0;if(h>>>0>=o>>>0)break i;o=c[b>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[g>>2]|0;if((o|0)==-1){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);o=c[e>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[g>>2]|0;if((o|0)!=-1)if(f^(c[e>>2]|0)==0)break;else break j;else{c[e>>2]=0;O=286;break}}else O=286;while(0);if((O|0)==286?(O=0,f):0)break;o=c[b>>2]|0;g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[g>>2]|0;if(!(a[r>>0]&1))g=p;else g=c[q>>2]|0;if((o|0)!=(c[g+(h<<2)>>2]|0))break;o=h+1|0;g=c[b>>2]|0;h=g+12|0;f=c[h>>2]|0;if((f|0)==(c[g+16>>2]|0)){Ed[c[(c[g>>2]|0)+40>>2]&511](g)|0;h=o;continue}else{c[h>>2]=f+4;h=o;continue}}c[j>>2]=c[j>>2]|4;g=0;break h}while(0);o=c[W>>2]|0;if((o|0)!=(s|0)?(c[P>>2]=0,H7(R,o,s,P),(c[P>>2]|0)!=0):0){c[j>>2]=c[j>>2]|4;g=0}else g=1}while(0);L2(U);L2(S);L2(T);L2(V);v2(R);o=c[W>>2]|0;c[W>>2]=0;if(o)Bd[c[Q>>2]&511](o);i=X;return g|0}function M7(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=i;i=i+432|0;u=s+420|0;t=s;q=s+400|0;m=s+408|0;o=s+412|0;l=s+424|0;v=s+416|0;c[q>>2]=t;p=q+4|0;c[p>>2]=318;Y2(o,h);d=w8(o,357704)|0;a[l>>0]=0;n=c[f>>2]|0;c[v>>2]=n;h=c[h+4>>2]|0;c[u+0>>2]=c[v+0>>2];if(L7(e,u,g,o,h,j,l,d,q,m,t+400|0)|0){if(!(a[k>>0]&1))a[k>>0]=0;else c[c[k+8>>2]>>2]=0;c[k+4>>2]=0;if(a[l>>0]|0)P2(k,Pd[c[(c[d>>2]|0)+44>>2]&511](d,45)|0);h=Pd[c[(c[d>>2]|0)+44>>2]&511](d,48)|0;d=c[q>>2]|0;m=c[m>>2]|0;g=m+-4|0;a:do if(d>>>0>>0){l=d;while(1){d=l+4|0;if((c[l>>2]|0)!=(h|0)){d=l;break a}if(d>>>0>>0)l=d;else break}}while(0);Vaa(k,d,m)|0}d=c[e>>2]|0;do if(d){l=c[d+12>>2]|0;if((l|0)==(c[d+16>>2]|0))d=Ed[c[(c[d>>2]|0)+36>>2]&511](d)|0;else d=c[l>>2]|0;if((d|0)==-1){c[e>>2]=0;l=1;break}else{l=(c[e>>2]|0)==0;break}}else l=1;while(0);do if(n){d=c[n+12>>2]|0;if((d|0)==(c[n+16>>2]|0))d=Ed[c[(c[n>>2]|0)+36>>2]&511](n)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(l)break;else{r=26;break}else{c[f>>2]=0;r=24;break}}else r=24;while(0);if((r|0)==24?l:0)r=26;if((r|0)==26)c[j>>2]=c[j>>2]|2;c[b>>2]=c[e>>2];S1(c[o>>2]|0)|0;d=c[q>>2]|0;c[q>>2]=0;if(d)Bd[c[p>>2]&511](d);i=s;return}function N7(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+112|0;n=x+100|0;o=x+88|0;p=x+76|0;q=x+64|0;r=x+52|0;s=x+48|0;t=x+24|0;u=x+12|0;v=x;w=x+36|0;if(b){b=w8(d,357280)|0;Cd[c[(c[b>>2]|0)+44>>2]&255](n,b);w=c[n>>2]|0;a[e>>0]=w;a[e+1>>0]=w>>8;a[e+2>>0]=w>>16;a[e+3>>0]=w>>24;Cd[c[(c[b>>2]|0)+32>>2]&255](o,b);if(!(a[l>>0]&1))a[l>>0]=0;else c[c[l+8>>2]>>2]=0;c[l+4>>2]=0;O2(l,0);c[l+0>>2]=c[o+0>>2];c[l+4>>2]=c[o+4>>2];c[l+8>>2]=c[o+8>>2];c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;L2(o);Cd[c[(c[b>>2]|0)+28>>2]&255](p,b);if(!(a[k>>0]&1))a[k>>0]=0;else c[c[k+8>>2]>>2]=0;c[k+4>>2]=0;O2(k,0);c[k+0>>2]=c[p+0>>2];c[k+4>>2]=c[p+4>>2];c[k+8>>2]=c[p+8>>2];c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;L2(p);c[f>>2]=Ed[c[(c[b>>2]|0)+12>>2]&511](b)|0;c[g>>2]=Ed[c[(c[b>>2]|0)+16>>2]&511](b)|0;Cd[c[(c[b>>2]|0)+20>>2]&255](q,b);if(!(a[h>>0]&1)){a[h+1>>0]=0;a[h>>0]=0}else{a[c[h+8>>2]>>0]=0;c[h+4>>2]=0}B2(h,0);c[h+0>>2]=c[q+0>>2];c[h+4>>2]=c[q+4>>2];c[h+8>>2]=c[q+8>>2];c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;v2(q);Cd[c[(c[b>>2]|0)+24>>2]&255](r,b);if(!(a[j>>0]&1))a[j>>0]=0;else c[c[j+8>>2]>>2]=0;c[j+4>>2]=0;O2(j,0);c[j+0>>2]=c[r+0>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;L2(r);b=Ed[c[(c[b>>2]|0)+36>>2]&511](b)|0}else{b=w8(d,357216)|0;Cd[c[(c[b>>2]|0)+44>>2]&255](s,b);r=c[s>>2]|0;a[e>>0]=r;a[e+1>>0]=r>>8;a[e+2>>0]=r>>16;a[e+3>>0]=r>>24;Cd[c[(c[b>>2]|0)+32>>2]&255](t,b);if(!(a[l>>0]&1))a[l>>0]=0;else c[c[l+8>>2]>>2]=0;c[l+4>>2]=0;O2(l,0);c[l+0>>2]=c[t+0>>2];c[l+4>>2]=c[t+4>>2];c[l+8>>2]=c[t+8>>2];c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;L2(t);Cd[c[(c[b>>2]|0)+28>>2]&255](u,b);if(!(a[k>>0]&1))a[k>>0]=0;else c[c[k+8>>2]>>2]=0;c[k+4>>2]=0;O2(k,0);c[k+0>>2]=c[u+0>>2];c[k+4>>2]=c[u+4>>2];c[k+8>>2]=c[u+8>>2];c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;L2(u);c[f>>2]=Ed[c[(c[b>>2]|0)+12>>2]&511](b)|0;c[g>>2]=Ed[c[(c[b>>2]|0)+16>>2]&511](b)|0;Cd[c[(c[b>>2]|0)+20>>2]&255](v,b);if(!(a[h>>0]&1)){a[h+1>>0]=0;a[h>>0]=0}else{a[c[h+8>>2]>>0]=0;c[h+4>>2]=0}B2(h,0);c[h+0>>2]=c[v+0>>2];c[h+4>>2]=c[v+4>>2];c[h+8>>2]=c[v+8>>2];c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;v2(v);Cd[c[(c[b>>2]|0)+24>>2]&255](w,b);if(!(a[j>>0]&1))a[j>>0]=0;else c[c[j+8>>2]>>2]=0;c[j+4>>2]=0;O2(j,0);c[j+0>>2]=c[w+0>>2];c[j+4>>2]=c[w+4>>2];c[j+8>>2]=c[w+8>>2];c[w+0>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;L2(w);b=Ed[c[(c[b>>2]|0)+36>>2]&511](b)|0}c[m>>2]=b;i=x;return}function O7(a){a=a|0;return}function P7(a){a=a|0;nda(a);return}function Q7(b,d,e,f,g,j,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;l=+l;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;D=i;i=i+384|0;s=D;d=D+268|0;o=D+52|0;m=D+68|0;w=D+48|0;z=D+368|0;u=D+372|0;C=D+373|0;v=D+56|0;B=D+28|0;A=D+16|0;p=D+12|0;r=D+168|0;y=D+8|0;x=D+40|0;t=D+44|0;c[o>>2]=d;h[k>>3]=l;c[s>>2]=c[k>>2];c[s+4>>2]=c[k+4>>2];d=Wea(d,100,357464,s)|0;if(d>>>0>99){d=K4()|0;h[k>>3]=l;c[s>>2]=c[k>>2];c[s+4>>2]=c[k+4>>2];d=Naa(o,d,357464,s)|0;m=c[o>>2]|0;if(!m)lea();n=qea(d)|0;if(!n)lea();else{F=n;G=m;H=n;J=d}}else{F=0;G=0;H=m;J=d}Y2(w,g);q=w8(w,357712)|0;n=c[o>>2]|0;Xd[c[(c[q>>2]|0)+32>>2]&255](q,n,n+J|0,H)|0;if(!J)o=0;else o=(a[c[o>>2]>>0]|0)==45;c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[B+0>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;R7(f,o,w,z,u,C,v,B,A,p);n=c[p>>2]|0;if((J|0)>(n|0)){d=a[A>>0]|0;if(!(d&1))m=(d&255)>>>1;else m=c[A+4>>2]|0;d=a[B>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[B+4>>2]|0;d=m+(J-n<<1|1)+d|0}else{d=a[A>>0]|0;if(!(d&1))m=(d&255)>>>1;else m=c[A+4>>2]|0;d=a[B>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[B+4>>2]|0;d=m+2+d|0}d=d+n|0;if(d>>>0>100){d=qea(d)|0;if(!d)lea();else{E=d;I=d}}else{E=0;I=r}S7(I,y,x,c[g+4>>2]|0,H,H+J|0,q,o,z,a[u>>0]|0,a[C>>0]|0,v,B,A,n);c[t>>2]=c[e>>2];J=c[y>>2]|0;e=c[x>>2]|0;c[s+0>>2]=c[t+0>>2];Be(b,s,I,J,e,g,j);rea(E);v2(A);v2(B);v2(v);S1(c[w>>2]|0)|0;rea(F);rea(G);i=D;return}function R7(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+112|0;n=z+108|0;o=z+96|0;r=z+92|0;s=z+80|0;t=z+68|0;u=z+56|0;v=z+52|0;w=z+28|0;x=z+24|0;y=z+12|0;p=z;q=z+40|0;if(b){b=w8(e,357152)|0;e=c[b>>2]|0;if(d){Cd[c[e+44>>2]&255](n,b);d=c[n>>2]|0;a[f>>0]=d;a[f+1>>0]=d>>8;a[f+2>>0]=d>>16;a[f+3>>0]=d>>24;Cd[c[(c[b>>2]|0)+32>>2]&255](o,b);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}B2(l,0);c[l+0>>2]=c[o+0>>2];c[l+4>>2]=c[o+4>>2];c[l+8>>2]=c[o+8>>2];c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;v2(o)}else{Cd[c[e+40>>2]&255](r,b);d=c[r>>2]|0;a[f>>0]=d;a[f+1>>0]=d>>8;a[f+2>>0]=d>>16;a[f+3>>0]=d>>24;Cd[c[(c[b>>2]|0)+28>>2]&255](s,b);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}B2(l,0);c[l+0>>2]=c[s+0>>2];c[l+4>>2]=c[s+4>>2];c[l+8>>2]=c[s+8>>2];c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;v2(s)}a[g>>0]=Ed[c[(c[b>>2]|0)+12>>2]&511](b)|0;a[h>>0]=Ed[c[(c[b>>2]|0)+16>>2]&511](b)|0;Cd[c[(c[b>>2]|0)+20>>2]&255](t,b);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}B2(j,0);c[j+0>>2]=c[t+0>>2];c[j+4>>2]=c[t+4>>2];c[j+8>>2]=c[t+8>>2];c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;v2(t);Cd[c[(c[b>>2]|0)+24>>2]&255](u,b);if(!(a[k>>0]&1)){a[k+1>>0]=0;a[k>>0]=0}else{a[c[k+8>>2]>>0]=0;c[k+4>>2]=0}B2(k,0);c[k+0>>2]=c[u+0>>2];c[k+4>>2]=c[u+4>>2];c[k+8>>2]=c[u+8>>2];c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;v2(u);b=Ed[c[(c[b>>2]|0)+36>>2]&511](b)|0}else{b=w8(e,357088)|0;e=c[b>>2]|0;if(d){Cd[c[e+44>>2]&255](v,b);d=c[v>>2]|0;a[f>>0]=d;a[f+1>>0]=d>>8;a[f+2>>0]=d>>16;a[f+3>>0]=d>>24;Cd[c[(c[b>>2]|0)+32>>2]&255](w,b);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}B2(l,0);c[l+0>>2]=c[w+0>>2];c[l+4>>2]=c[w+4>>2];c[l+8>>2]=c[w+8>>2];c[w+0>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;v2(w)}else{Cd[c[e+40>>2]&255](x,b);d=c[x>>2]|0;a[f>>0]=d;a[f+1>>0]=d>>8;a[f+2>>0]=d>>16;a[f+3>>0]=d>>24;Cd[c[(c[b>>2]|0)+28>>2]&255](y,b);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}B2(l,0);c[l+0>>2]=c[y+0>>2];c[l+4>>2]=c[y+4>>2];c[l+8>>2]=c[y+8>>2];c[y+0>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;v2(y)}a[g>>0]=Ed[c[(c[b>>2]|0)+12>>2]&511](b)|0;a[h>>0]=Ed[c[(c[b>>2]|0)+16>>2]&511](b)|0;Cd[c[(c[b>>2]|0)+20>>2]&255](p,b);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}B2(j,0);c[j+0>>2]=c[p+0>>2];c[j+4>>2]=c[p+4>>2];c[j+8>>2]=c[p+8>>2];c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;v2(p);Cd[c[(c[b>>2]|0)+24>>2]&255](q,b);if(!(a[k>>0]&1)){a[k+1>>0]=0;a[k>>0]=0}else{a[c[k+8>>2]>>0]=0;c[k+4>>2]=0}B2(k,0);c[k+0>>2]=c[q+0>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;v2(q);b=Ed[c[(c[b>>2]|0)+36>>2]&511](b)|0}c[m>>2]=b;i=z;return}function S7(d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;c[f>>2]=d;s=q+1|0;O=q+8|0;P=q+4|0;H=(g&512|0)==0;I=p+1|0;J=p+8|0;K=p+4|0;L=(r|0)>0;M=o+1|0;C=o+8|0;D=o+4|0;E=j+8|0;F=0-r|0;B=0;do{switch(a[l+B>>0]|0){case 1:{c[e>>2]=c[f>>2];x=Pd[c[(c[j>>2]|0)+28>>2]&511](j,32)|0;A=c[f>>2]|0;c[f>>2]=A+1;a[A>>0]=x;break}case 0:{c[e>>2]=c[f>>2];break}case 2:{v=a[p>>0]|0;u=(v&1)==0;if(u)t=(v&255)>>>1;else t=c[K>>2]|0;if(!((t|0)==0|H)){if(u){t=I;u=(v&255)>>>1}else{t=c[J>>2]|0;u=c[K>>2]|0}w=t+u|0;u=c[f>>2]|0;if((t|0)!=(w|0))do{a[u>>0]=a[t>>0]|0;t=t+1|0;u=u+1|0}while((t|0)!=(w|0));c[f>>2]=u}break}case 4:{t=c[f>>2]|0;h=k?h+1|0:h;a:do if(h>>>0>>0){u=c[E>>2]|0;x=h;while(1){w=a[x>>0]|0;if(w<<24>>24<=-1){v=x;break a}v=x+1|0;if(!(b[u+(w<<24>>24<<1)>>1]&2048)){v=x;break a}if(v>>>0>>0)x=v;else break}}else v=h;while(0);u=v;if(L){if(v>>>0>h>>>0){A=h-u|0;A=A>>>0>>0?F:A;u=A+r|0;z=t;w=v;x=r;while(1){y=w+-1|0;w=a[y>>0]|0;c[f>>2]=z+1;a[z>>0]=w;x=x+-1|0;w=(x|0)>0;if(!(y>>>0>h>>>0&w))break;z=c[f>>2]|0;w=y}v=v+A|0;if(w)N=31;else{y=0;w=u}}else{u=r;N=31}if((N|0)==31){N=0;y=Pd[c[(c[j>>2]|0)+28>>2]&511](j,48)|0;w=u}u=c[f>>2]|0;c[f>>2]=u+1;if((w|0)>0)do{a[u>>0]=y;w=w+-1|0;u=c[f>>2]|0;c[f>>2]=u+1}while((w|0)>0);a[u>>0]=m}if((v|0)==(h|0)){x=Pd[c[(c[j>>2]|0)+28>>2]&511](j,48)|0;A=c[f>>2]|0;c[f>>2]=A+1;a[A>>0]=x}else{u=a[o>>0]|0;w=(u&1)==0;if(w)u=(u&255)>>>1;else u=c[D>>2]|0;if(!u){y=-1;u=0;w=0}else{y=a[(w?M:c[C>>2]|0)>>0]|0;u=0;w=0}while(1){if((w|0)==(y|0)){x=c[f>>2]|0;c[f>>2]=x+1;a[x>>0]=n;x=u+1|0;u=a[o>>0]|0;w=(u&1)==0;if(w)u=(u&255)>>>1;else u=c[D>>2]|0;if(x>>>0>>0)if((a[(w?M:c[C>>2]|0)+x>>0]|0)==127){y=-1;u=x;w=0}else{y=a[(w?M:c[C>>2]|0)+x>>0]|0;u=x;w=0}else{u=x;w=0}}v=v+-1|0;x=a[v>>0]|0;A=c[f>>2]|0;c[f>>2]=A+1;a[A>>0]=x;if((v|0)==(h|0))break;else w=w+1|0}}u=c[f>>2]|0;if((t|0)!=(u|0)?(G=u+-1|0,G>>>0>t>>>0):0){v=G;while(1){A=a[t>>0]|0;a[t>>0]=a[v>>0]|0;a[v>>0]=A;t=t+1|0;u=u+-2|0;if(t>>>0>=u>>>0)break;else{A=v;v=u;u=A}}}break}case 3:{u=a[q>>0]|0;t=(u&1)==0;if(t)u=(u&255)>>>1;else u=c[P>>2]|0;if(u){x=a[(t?s:c[O>>2]|0)>>0]|0;A=c[f>>2]|0;c[f>>2]=A+1;a[A>>0]=x}break}default:{}}B=B+1|0}while((B|0)!=4);u=a[q>>0]|0;h=(u&1)==0;if(h)t=(u&255)>>>1;else t=c[P>>2]|0;if(t>>>0>1){if(h)h=(u&255)>>>1;else{s=c[O>>2]|0;h=c[P>>2]|0}t=s+1|0;u=s+h|0;h=c[f>>2]|0;if((t|0)!=(u|0))while(1){a[h>>0]=a[t>>0]|0;s=s+2|0;h=h+1|0;if((s|0)==(u|0))break;else{N=t;t=s;s=N}}c[f>>2]=h}h=g&176;if((h|0)==32)c[e>>2]=c[f>>2];else if((h|0)!=16)c[e>>2]=d;return}function T7(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;B=i;i=i+176|0;p=B+56|0;u=B+52|0;x=B+60|0;s=B+164|0;A=B+165|0;t=B+40|0;z=B+28|0;y=B+12|0;l=B+8|0;o=B+64|0;w=B+4|0;v=B;q=B+24|0;Y2(u,g);r=w8(u,357712)|0;d=a[j>>0]|0;k=(d&1)==0;if(k)d=(d&255)>>>1;else d=c[j+4>>2]|0;if(!d)n=0;else{if(k)d=j+1|0;else d=c[j+8>>2]|0;n=a[d>>0]|0;n=n<<24>>24==(Pd[c[(c[r>>2]|0)+28>>2]&511](r,45)|0)<<24>>24};c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[y+0>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;R7(f,n,u,x,s,A,t,z,y,l);m=a[j>>0]|0;d=(m&1)==0;if(d)k=(m&255)>>>1;else k=c[j+4>>2]|0;l=c[l>>2]|0;if((k|0)>(l|0)){if(d)f=(m&255)>>>1;else f=c[j+4>>2]|0;d=a[y>>0]|0;if(!(d&1))k=(d&255)>>>1;else k=c[y+4>>2]|0;d=a[z>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[z+4>>2]|0;d=k+(f-l<<1|1)+d|0}else{d=a[y>>0]|0;if(!(d&1))k=(d&255)>>>1;else k=c[y+4>>2]|0;d=a[z>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[z+4>>2]|0;d=k+2+d|0}d=d+l|0;if(d>>>0>100){d=qea(d)|0;if(!d)lea();else{C=d;D=d}}else{C=0;D=o}if(!(m&1)){k=j+1|0;d=(m&255)>>>1}else{k=c[j+8>>2]|0;d=c[j+4>>2]|0}S7(D,w,v,c[g+4>>2]|0,k,k+d|0,r,n,x,a[s>>0]|0,a[A>>0]|0,t,z,y,l);c[q>>2]=c[e>>2];A=c[w>>2]|0;e=c[v>>2]|0;c[p+0>>2]=c[q+0>>2];Be(b,p,D,A,e,g,h);rea(C);v2(y);v2(z);v2(t);S1(c[u>>2]|0)|0;i=B;return}function U7(a){a=a|0;return}function V7(a){a=a|0;nda(a);return}function W7(b,d,e,f,g,j,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;l=+l;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;D=i;i=i+992|0;s=D;d=D+880|0;o=D+864|0;m=D+464|0;w=D+460|0;z=D+980|0;u=D+456|0;C=D+452|0;v=D+868|0;B=D+432|0;A=D+420|0;p=D+416|0;r=D+16|0;y=D+8|0;x=D+444|0;t=D+448|0;c[o>>2]=d;h[k>>3]=l;c[s>>2]=c[k>>2];c[s+4>>2]=c[k+4>>2];d=Wea(d,100,357464,s)|0;if(d>>>0>99){d=K4()|0;h[k>>3]=l;c[s>>2]=c[k>>2];c[s+4>>2]=c[k+4>>2];d=Naa(o,d,357464,s)|0;m=c[o>>2]|0;if(!m)lea();n=qea(d<<2)|0;if(!n)lea();else{F=n;G=m;H=n;J=d}}else{F=0;G=0;H=m;J=d}Y2(w,g);q=w8(w,357704)|0;n=c[o>>2]|0;Xd[c[(c[q>>2]|0)+48>>2]&255](q,n,n+J|0,H)|0;if(!J)o=0;else o=(a[c[o>>2]>>0]|0)==45;c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[B+0>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;X7(f,o,w,z,u,C,v,B,A,p);n=c[p>>2]|0;if((J|0)>(n|0)){d=a[A>>0]|0;if(!(d&1))m=(d&255)>>>1;else m=c[A+4>>2]|0;d=a[B>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[B+4>>2]|0;d=m+(J-n<<1|1)+d|0}else{d=a[A>>0]|0;if(!(d&1))m=(d&255)>>>1;else m=c[A+4>>2]|0;d=a[B>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[B+4>>2]|0;d=m+2+d|0}d=d+n|0;if(d>>>0>100){d=qea(d<<2)|0;if(!d)lea();else{E=d;I=d}}else{E=0;I=r}Y7(I,y,x,c[g+4>>2]|0,H,H+(J<<2)|0,q,o,z,c[u>>2]|0,c[C>>2]|0,v,B,A,n);c[t>>2]=c[e>>2];J=c[y>>2]|0;e=c[x>>2]|0;c[s+0>>2]=c[t+0>>2];Oaa(b,s,I,J,e,g,j);if(E)rea(E);L2(A);L2(B);v2(v);S1(c[w>>2]|0)|0;if(F)rea(F);rea(G);i=D;return}function X7(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+112|0;n=z+108|0;o=z+96|0;r=z+92|0;s=z+80|0;t=z+68|0;u=z+56|0;v=z+52|0;w=z+28|0;x=z+24|0;y=z+12|0;p=z;q=z+40|0;if(b){b=w8(e,357280)|0;e=c[b>>2]|0;if(d){Cd[c[e+44>>2]&255](n,b);d=c[n>>2]|0;a[f>>0]=d;a[f+1>>0]=d>>8;a[f+2>>0]=d>>16;a[f+3>>0]=d>>24;Cd[c[(c[b>>2]|0)+32>>2]&255](o,b);if(!(a[l>>0]&1))a[l>>0]=0;else c[c[l+8>>2]>>2]=0;c[l+4>>2]=0;O2(l,0);c[l+0>>2]=c[o+0>>2];c[l+4>>2]=c[o+4>>2];c[l+8>>2]=c[o+8>>2];c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;L2(o)}else{Cd[c[e+40>>2]&255](r,b);d=c[r>>2]|0;a[f>>0]=d;a[f+1>>0]=d>>8;a[f+2>>0]=d>>16;a[f+3>>0]=d>>24;Cd[c[(c[b>>2]|0)+28>>2]&255](s,b);if(!(a[l>>0]&1))a[l>>0]=0;else c[c[l+8>>2]>>2]=0;c[l+4>>2]=0;O2(l,0);c[l+0>>2]=c[s+0>>2];c[l+4>>2]=c[s+4>>2];c[l+8>>2]=c[s+8>>2];c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;L2(s)}c[g>>2]=Ed[c[(c[b>>2]|0)+12>>2]&511](b)|0;c[h>>2]=Ed[c[(c[b>>2]|0)+16>>2]&511](b)|0;Cd[c[(c[b>>2]|0)+20>>2]&255](t,b);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}B2(j,0);c[j+0>>2]=c[t+0>>2];c[j+4>>2]=c[t+4>>2];c[j+8>>2]=c[t+8>>2];c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;v2(t);Cd[c[(c[b>>2]|0)+24>>2]&255](u,b);if(!(a[k>>0]&1))a[k>>0]=0;else c[c[k+8>>2]>>2]=0;c[k+4>>2]=0;O2(k,0);c[k+0>>2]=c[u+0>>2];c[k+4>>2]=c[u+4>>2];c[k+8>>2]=c[u+8>>2];c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;L2(u);b=Ed[c[(c[b>>2]|0)+36>>2]&511](b)|0}else{b=w8(e,357216)|0;e=c[b>>2]|0;if(d){Cd[c[e+44>>2]&255](v,b);d=c[v>>2]|0;a[f>>0]=d;a[f+1>>0]=d>>8;a[f+2>>0]=d>>16;a[f+3>>0]=d>>24;Cd[c[(c[b>>2]|0)+32>>2]&255](w,b);if(!(a[l>>0]&1))a[l>>0]=0;else c[c[l+8>>2]>>2]=0;c[l+4>>2]=0;O2(l,0);c[l+0>>2]=c[w+0>>2];c[l+4>>2]=c[w+4>>2];c[l+8>>2]=c[w+8>>2];c[w+0>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;L2(w)}else{Cd[c[e+40>>2]&255](x,b);d=c[x>>2]|0;a[f>>0]=d;a[f+1>>0]=d>>8;a[f+2>>0]=d>>16;a[f+3>>0]=d>>24;Cd[c[(c[b>>2]|0)+28>>2]&255](y,b);if(!(a[l>>0]&1))a[l>>0]=0;else c[c[l+8>>2]>>2]=0;c[l+4>>2]=0;O2(l,0);c[l+0>>2]=c[y+0>>2];c[l+4>>2]=c[y+4>>2];c[l+8>>2]=c[y+8>>2];c[y+0>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;L2(y)}c[g>>2]=Ed[c[(c[b>>2]|0)+12>>2]&511](b)|0;c[h>>2]=Ed[c[(c[b>>2]|0)+16>>2]&511](b)|0;Cd[c[(c[b>>2]|0)+20>>2]&255](p,b);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}B2(j,0);c[j+0>>2]=c[p+0>>2];c[j+4>>2]=c[p+4>>2];c[j+8>>2]=c[p+8>>2];c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;v2(p);Cd[c[(c[b>>2]|0)+24>>2]&255](q,b);if(!(a[k>>0]&1))a[k>>0]=0;else c[c[k+8>>2]>>2]=0;c[k+4>>2]=0;O2(k,0);c[k+0>>2]=c[q+0>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;L2(q);b=Ed[c[(c[b>>2]|0)+36>>2]&511](b)|0}c[m>>2]=b;i=z;return}function Y7(b,d,e,f,g,h,i,j,k,l,m,n,o,p,q){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;c[e>>2]=b;J=p+4|0;I=p+8|0;A=(f&512|0)==0;B=o+4|0;C=o+8|0;D=(q|0)>0;E=n+1|0;F=n+8|0;G=n+4|0;z=0;do{switch(a[k+z>>0]|0){case 3:{t=a[p>>0]|0;r=(t&1)==0;if(r)t=(t&255)>>>1;else t=c[J>>2]|0;if(t){u=c[(r?J:c[I>>2]|0)>>2]|0;w=c[e>>2]|0;c[e>>2]=w+4;c[w>>2]=u}break}case 4:{s=c[e>>2]|0;g=j?g+4|0:g;a:do if(g>>>0>>0){r=g;while(1){t=r+4|0;if(!(Hd[c[(c[i>>2]|0)+12>>2]&255](i,2048,c[r>>2]|0)|0)){t=r;break a}if(t>>>0>>0)r=t;else break}}else t=g;while(0);if(D){if(t>>>0>g>>>0){v=c[e>>2]|0;u=q;do{t=t+-4|0;r=v;v=v+4|0;c[r>>2]=c[t>>2];u=u+-1|0;r=(u|0)>0}while(t>>>0>g>>>0&r);c[e>>2]=v;if(r)H=31;else{r=c[e>>2]|0;c[e>>2]=r+4}}else{u=q;H=31}if((H|0)==31){H=0;y=Pd[c[(c[i>>2]|0)+44>>2]&511](i,48)|0;r=c[e>>2]|0;v=r+4|0;c[e>>2]=v;if((u|0)>0){w=r;x=u;while(1){c[w>>2]=y;x=x+-1|0;if((x|0)<=0)break;else{K=v;v=w+8|0;w=K}}c[e>>2]=r+(u+1<<2);r=r+(u<<2)|0}}c[r>>2]=l}if((t|0)==(g|0)){K=Pd[c[(c[i>>2]|0)+44>>2]&511](i,48)|0;r=c[e>>2]|0;t=r+4|0;c[e>>2]=t;c[r>>2]=K}else{r=a[n>>0]|0;v=(r&1)==0;if(v)r=(r&255)>>>1;else r=c[G>>2]|0;if(!r){u=t;v=-1;x=0;y=0}else{u=t;v=a[(v?E:c[F>>2]|0)>>0]|0;x=0;y=0}while(1){t=c[e>>2]|0;if((y|0)==(v|0)){r=t+4|0;c[e>>2]=r;c[t>>2]=m;y=x+1|0;t=a[n>>0]|0;x=(t&1)==0;if(x)t=(t&255)>>>1;else t=c[G>>2]|0;if(y>>>0>>0)if((a[(x?E:c[F>>2]|0)+y>>0]|0)==127){v=-1;x=y;y=0}else{v=a[(x?E:c[F>>2]|0)+y>>0]|0;x=y;y=0}else{x=y;y=0}}else r=t;u=u+-4|0;K=c[u>>2]|0;t=r+4|0;c[e>>2]=t;c[r>>2]=K;if((u|0)==(g|0))break;else y=y+1|0}}if((s|0)!=(t|0)&r>>>0>s>>>0)while(1){K=c[s>>2]|0;c[s>>2]=c[r>>2];c[r>>2]=K;s=s+4|0;t=t+-8|0;if(s>>>0>=t>>>0)break;else{K=r;r=t;t=K}}break}case 2:{s=a[o>>0]|0;t=(s&1)==0;if(t)r=(s&255)>>>1;else r=c[B>>2]|0;if(!((r|0)==0|A)){if(t){w=B;r=(s&255)>>>1}else{w=c[C>>2]|0;r=c[B>>2]|0}u=w+(r<<2)|0;t=c[e>>2]|0;if((w|0)!=(u|0)){v=(w+(r+-1<<2)-w|0)>>>2;s=t;r=w;while(1){c[s>>2]=c[r>>2];r=r+4|0;if((r|0)==(u|0))break;else s=s+4|0}t=t+(v+1<<2)|0}c[e>>2]=t}break}case 1:{c[d>>2]=c[e>>2];w=Pd[c[(c[i>>2]|0)+44>>2]&511](i,32)|0;K=c[e>>2]|0;c[e>>2]=K+4;c[K>>2]=w;break}case 0:{c[d>>2]=c[e>>2];break}default:{}}z=z+1|0}while((z|0)!=4);s=a[p>>0]|0;g=(s&1)==0;if(g)r=(s&255)>>>1;else r=c[J>>2]|0;if(r>>>0>1){if(g){v=J;r=(s&255)>>>1}else{v=c[I>>2]|0;r=c[J>>2]|0}s=v+4|0;w=v+(r<<2)|0;g=c[e>>2]|0;if((s|0)!=(w|0)){u=(v+(r+-1<<2)-s|0)>>>2;t=g;r=v;while(1){c[t>>2]=c[s>>2];r=r+8|0;if((r|0)==(w|0))break;else{J=s;t=t+4|0;s=r;r=J}}g=g+(u+1<<2)|0}c[e>>2]=g}g=f&176;if((g|0)==32)c[d>>2]=c[e>>2];else if((g|0)!=16)c[d>>2]=b;return}function Z7(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;B=i;i=i+480|0;p=B+464|0;u=B+460|0;x=B+468|0;s=B+456|0;A=B+452|0;t=B+440|0;z=B+428|0;y=B+412|0;l=B+408|0;o=B+8|0;w=B+4|0;v=B;q=B+424|0;Y2(u,g);r=w8(u,357704)|0;d=a[j>>0]|0;k=(d&1)==0;if(k)d=(d&255)>>>1;else d=c[j+4>>2]|0;if(!d)n=0;else{if(k)d=j+4|0;else d=c[j+8>>2]|0;n=c[d>>2]|0;n=(n|0)==(Pd[c[(c[r>>2]|0)+44>>2]&511](r,45)|0)};c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[y+0>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;X7(f,n,u,x,s,A,t,z,y,l);m=a[j>>0]|0;d=(m&1)==0;if(d)k=(m&255)>>>1;else k=c[j+4>>2]|0;l=c[l>>2]|0;if((k|0)>(l|0)){if(d)f=(m&255)>>>1;else f=c[j+4>>2]|0;d=a[y>>0]|0;if(!(d&1))k=(d&255)>>>1;else k=c[y+4>>2]|0;d=a[z>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[z+4>>2]|0;d=k+(f-l<<1|1)+d|0}else{d=a[y>>0]|0;if(!(d&1))k=(d&255)>>>1;else k=c[y+4>>2]|0;d=a[z>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[z+4>>2]|0;d=k+2+d|0}d=d+l|0;if(d>>>0>100){d=qea(d<<2)|0;if(!d)lea();else{C=d;D=d}}else{C=0;D=o}if(!(m&1)){k=j+4|0;d=(m&255)>>>1}else{k=c[j+8>>2]|0;d=c[j+4>>2]|0}Y7(D,w,v,c[g+4>>2]|0,k,k+(d<<2)|0,r,n,x,c[s>>2]|0,c[A>>2]|0,t,z,y,l);c[q>>2]=c[e>>2];A=c[w>>2]|0;e=c[v>>2]|0;c[p+0>>2]=c[q+0>>2];Oaa(b,p,D,A,e,g,h);if(C)rea(C);L2(y);L2(z);v2(t);S1(c[u>>2]|0)|0;i=B;return}function _7(a){a=a|0;return}function $7(a){a=a|0;nda(a);return}function a8(b,d,e){b=b|0;d=d|0;e=e|0;if(!(a[d>>0]&1))e=d+1|0;else e=c[d+8>>2]|0;b=$b(e|0,1)|0;return b>>>((b|0)!=(-1|0)&1)|0}function b8(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;d=a[h>>0]|0;if(!(d&1)){k=h+1|0;j=(d&255)>>>1;d=h+1|0}else{d=c[h+8>>2]|0;k=d;j=c[h+4>>2]|0}j=k+j|0;if(d>>>0>>0){do{D2(m,a[d>>0]|0);d=d+1|0}while((d|0)!=(j|0));d=(e|0)==-1?-1:e<<1;if(!(a[m>>0]&1))l=9;else j=c[m+8>>2]|0}else{d=(e|0)==-1?-1:e<<1;l=9}if((l|0)==9)j=m+1|0;d=Wc(d|0,f|0,g|0,j|0)|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;f=tfa(d|0)|0;j=d+f|0;if((f|0)>0)do{D2(b,a[d>>0]|0);d=d+1|0}while((d|0)!=(j|0));v2(m);i=n;return}function c8(a,b){a=a|0;b=b|0;sb(((b|0)==-1?-1:b<<1)|0)|0;return}function d8(a){a=a|0;return}function e8(a){a=a|0;nda(a);return}function f8(b,d,e){b=b|0;d=d|0;e=e|0;if(!(a[d>>0]&1))e=d+1|0;else e=c[d+8>>2]|0;b=$b(e|0,1)|0;return b>>>((b|0)!=(-1|0)&1)|0}function g8(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+176|0;p=s+168|0;o=s;n=s+128|0;r=s+132|0;q=s+136|0;l=s+152|0;m=s+160|0;c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[l+4>>2]=0;c[l>>2]=359368;d=a[h>>0]|0;if(!(d&1)){k=h+4|0;j=(d&255)>>>1;d=h+4|0}else{d=c[h+8>>2]|0;k=d;j=c[h+4>>2]|0}h=k+(j<<2)|0;a:do if(d>>>0>>0){k=o+32|0;j=359368|0;while(1){c[r>>2]=d;t=(Wd[c[j+12>>2]&15](l,p,d,h,r,o,k,n)|0)==2;j=c[r>>2]|0;if(t|(j|0)==(d|0))break;if(o>>>0<(c[n>>2]|0)>>>0){d=o;do{D2(q,a[d>>0]|0);d=d+1|0}while(d>>>0<(c[n>>2]|0)>>>0);d=c[r>>2]|0}else d=j;if(d>>>0>=h>>>0)break a;j=c[l>>2]|0}E7(358592)}while(0);if(!(a[q>>0]&1))d=q+1|0;else d=c[q+8>>2]|0;d=Wc(((e|0)==-1?-1:e<<1)|0,f|0,g|0,d|0)|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[m+4>>2]=0;c[m>>2]=359472;t=tfa(d|0)|0;k=d+t|0;b:do if((t|0)>0){h=k;l=o+128|0;j=359472|0;while(1){c[r>>2]=d;t=(Wd[c[j+16>>2]&15](m,p,d,(h-d|0)>32?d+32|0:k,r,o,l,n)|0)==2;j=c[r>>2]|0;if(t|(j|0)==(d|0))break;if(o>>>0<(c[n>>2]|0)>>>0){d=o;do{P2(b,c[d>>2]|0);d=d+4|0}while(d>>>0<(c[n>>2]|0)>>>0);d=c[r>>2]|0}else d=j;if(d>>>0>=k>>>0)break b;j=c[m>>2]|0}E7(358592)}while(0);v2(q);i=s;return}function h8(a,b){a=a|0;b=b|0;sb(((b|0)==-1?-1:b<<1)|0)|0;return}function i8(a){a=a|0;a=gc(8)|0;T1(a,357592);c[a>>2]=366216;qd(a|0,366256,184)}function j8(b,d){b=b|0;d=d|0;var e=0,f=0;c[b+4>>2]=d+-1;c[b>>2]=357632;d=b+8|0;Waa(d,28);p2(b+144|0,357616,1);d=c[d>>2]|0;e=b+12|0;f=c[e>>2]|0;if((f|0)!=(d|0))c[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);c[90631]=0;c[90630]=356080;Xaa(b,362520);c[90629]=0;c[90628]=356120;Yaa(b,362512);c[90625]=0;c[90624]=357728;c[90626]=0;a[362508]=0;c[90626]=C8()|0;Zaa(b,362496);c[90623]=0;c[90622]=358688;_aa(b,362488);c[90621]=0;c[90620]=358904;$aa(b,362480);g9(362464,1);aba(b,362464);c[90615]=0;c[90614]=359128;bba(b,362456);c[90613]=0;c[90612]=359248;cba(b,362448);c[90607]=0;c[90606]=357880;a[362432]=46;a[362433]=44;c[90609]=0;c[90610]=0;c[90611]=0;dba(b,362424);c[90599]=0;c[90598]=357920;c[90600]=46;c[90601]=44;c[90602]=0;c[90603]=0;c[90604]=0;eba(b,362392);c[90597]=0;c[90596]=356160;fba(b,362384);c[90595]=0;c[90594]=356280;gba(b,362376);c[90593]=0;c[90592]=356352;hba(b,362368);c[90591]=0;c[90590]=356448;iba(b,362360);c[90589]=0;c[90588]=357040;jba(b,362352);c[90587]=0;c[90586]=357104;kba(b,362344);c[90585]=0;c[90584]=357168;lba(b,362336);c[90583]=0;c[90582]=357232;mba(b,362328);c[90581]=0;c[90580]=357296;nba(b,362320);c[90579]=0;c[90578]=357376;oba(b,362312);c[90577]=0;c[90576]=357432;pba(b,362304);c[90575]=0;c[90574]=357480;qba(b,362296);c[90571]=0;c[90570]=356528;c[90572]=356576;rba(b,362280);c[90567]=0;c[90566]=356680;c[90568]=356728;sba(b,362264);c[90563]=0;c[90562]=358624;c[90564]=K4()|0;c[90562]=356976;tba(b,362248);c[90559]=0;c[90558]=358624;c[90560]=K4()|0;c[90558]=357008;uba(b,362232);c[90557]=0;c[90556]=357520;vba(b,362224);c[90555]=0;c[90554]=357560;wba(b,362216);return}function k8(){if((a[357664]|0)==0?(Pa(357664)|0)!=0:0){p8()|0;c[89414]=357648;Db(357664)}return c[89414]|0}function l8(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;R1(b);f=a+8|0;e=c[f>>2]|0;if((c[a+12>>2]|0)-e>>2>>>0<=d>>>0){yba(f,d+1|0);e=c[f>>2]|0}a=c[e+(d<<2)>>2]|0;if(a){S1(a)|0;e=c[f>>2]|0}c[e+(d<<2)>>2]=b;return}function m8(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;c[a>>2]=357632;g=a+8|0;h=a+12|0;b=c[h>>2]|0;d=c[g>>2]|0;if((b|0)!=(d|0)){f=0;do{e=c[d+(f<<2)>>2]|0;if(e){S1(e)|0;b=c[h>>2]|0;d=c[g>>2]|0}f=f+1|0}while(f>>>0>2>>>0)}v2(a+144|0);xba(g);return}function n8(a){a=a|0;m8(a);nda(a);return}function o8(a,b){a=a|0;b=b|0;if(zba(a,b)|0)return c[(c[a+8>>2]|0)+(b<<2)>>2]|0;else{a=gc(4)|0;Hda(a);qd(a|0,366456,190)}return 0}function p8(){j8(362056,1);c[89412]=362056;return 357648}function q8(){var a=0;a=c[(k8()|0)>>2]|0;c[89418]=a;R1(a);return 357672}function r8(){if((a[357688]|0)==0?(Pa(357688)|0)!=0:0){q8()|0;c[89420]=357672;Db(357688)}return c[89420]|0}function s8(a){a=a|0;var b=0;b=c[(r8()|0)>>2]|0;c[a>>2]=b;R1(b);return}function t8(a,b){a=a|0;b=b|0;b=c[b>>2]|0;c[a>>2]=b;R1(b);return}function u8(a){a=a|0;S1(c[a>>2]|0)|0;return}function v8(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;if((c[a>>2]|0)!=-1){c[b>>2]=a;c[b+4>>2]=319;c[b+8>>2]=0;l2(a,b,320)}i=d;return (c[a+4>>2]|0)+-1|0}function w8(a,b){a=a|0;b=b|0;a=c[a>>2]|0;return o8(a,v8(b)|0)|0}function x8(a){a=a|0;nda(a);return}function y8(a){a=a|0;if(a)Bd[c[(c[a>>2]|0)+4>>2]&511](a);return}function z8(a){a=a|0;var b=0;b=c[89424]|0;c[89424]=b+1;c[a+4>>2]=b+1;return}function A8(a){a=a|0;nda(a);return}function B8(a,c,d){a=a|0;c=c|0;d=d|0;if(d>>>0<128)d=(b[(C8()|0)+(d<<1)>>1]&c)<<16>>16!=0;else d=0;return d|0}function C8(){return c[(dc()|0)>>2]|0}function D8(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;if((d|0)!=(e|0)){h=((e+-4-d|0)>>>2)+1|0;g=d;while(1){a=c[g>>2]|0;if(a>>>0<128)a=b[(C8()|0)+(a<<1)>>1]|0;else a=0;b[f>>1]=a;g=g+4|0;if((g|0)==(e|0))break;else f=f+2|0}d=d+(h<<2)|0}return d|0}function E8(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;a:do if((e|0)==(f|0))f=e;else do{a=c[e>>2]|0;if(a>>>0<128?(b[(C8()|0)+(a<<1)>>1]&d)<<16>>16!=0:0){f=e;break a}e=e+4|0}while((e|0)!=(f|0));while(0);return f|0}function F8(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;a:do if((e|0)==(f|0))f=e;else do{a=c[e>>2]|0;if(a>>>0>=128){f=e;break a}if(!((b[(C8()|0)+(a<<1)>>1]&d)<<16>>16)){f=e;break a}e=e+4|0}while((e|0)!=(f|0));while(0);return f|0}function G8(a,b){a=a|0;b=b|0;if(b>>>0<128)b=c[(H8()|0)+(b<<2)>>2]|0;return b|0}function H8(){return c[(Va()|0)>>2]|0}function I8(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((b|0)!=(d|0)){f=((d+-4-b|0)>>>2)+1|0;e=b;do{a=c[e>>2]|0;if(a>>>0<128)a=c[(H8()|0)+(a<<2)>>2]|0;c[e>>2]=a;e=e+4|0}while((e|0)!=(d|0));b=b+(f<<2)|0}return b|0}function J8(a,b){a=a|0;b=b|0;if(b>>>0<128)b=c[(K8()|0)+(b<<2)>>2]|0;return b|0}function K8(){return c[(ad()|0)>>2]|0}function L8(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((b|0)!=(d|0)){f=((d+-4-b|0)>>>2)+1|0;e=b;do{a=c[e>>2]|0;if(a>>>0<128)a=c[(K8()|0)+(a<<2)>>2]|0;c[e>>2]=a;e=e+4|0}while((e|0)!=(d|0));b=b+(f<<2)|0}return b|0}function M8(a,b){a=a|0;b=b|0;return b<<24>>24|0}function N8(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;if((d|0)==(e|0))e=d;else while(1){c[f>>2]=a[d>>0];d=d+1|0;if((d|0)==(e|0))break;else f=f+4|0}return e|0}function O8(a,b,c){a=a|0;b=b|0;c=c|0;return (b>>>0<128?b&255:c)|0}function P8(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;if((d|0)!=(e|0)){i=((e+-4-d|0)>>>2)+1|0;h=d;b=g;while(1){g=c[h>>2]|0;a[b>>0]=g>>>0<128?g&255:f;h=h+4|0;if((h|0)==(e|0))break;else b=b+1|0}d=d+(i<<2)|0}return d|0}function Q8(b){b=b|0;var d=0;c[b>>2]=357728;d=c[b+8>>2]|0;if((d|0)!=0?(a[b+12>>0]|0)!=0:0)oda(d);return}function R8(a){a=a|0;Q8(a);nda(a);return}function S8(a,b){a=a|0;b=b|0;if(b<<24>>24>-1)b=c[(H8()|0)+((b&255)<<2)>>2]&255;return b|0}function T8(b,d,e){b=b|0;d=d|0;e=e|0;if((d|0)==(e|0))e=d;else{b=d;do{d=a[b>>0]|0;if(d<<24>>24>-1)d=c[(H8()|0)+(d<<24>>24<<2)>>2]&255;a[b>>0]=d;b=b+1|0}while((b|0)!=(e|0))}return e|0}function U8(a,b){a=a|0;b=b|0;if(b<<24>>24>-1)b=c[(K8()|0)+(b<<24>>24<<2)>>2]&255;return b|0}function V8(b,d,e){b=b|0;d=d|0;e=e|0;if((d|0)==(e|0))e=d;else{b=d;do{d=a[b>>0]|0;if(d<<24>>24>-1)d=c[(K8()|0)+(d<<24>>24<<2)>>2]&255;a[b>>0]=d;b=b+1|0}while((b|0)!=(e|0))}return e|0}function W8(a,b){a=a|0;b=b|0;return b|0}function X8(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;if((c|0)==(d|0))d=c;else while(1){a[e>>0]=a[c>>0]|0;c=c+1|0;if((c|0)==(d|0))break;else e=e+1|0}return d|0}function Y8(a,b,c){a=a|0;b=b|0;c=c|0;return (b<<24>>24>-1?b:c)|0}function Z8(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if((c|0)==(d|0))d=c;else while(1){b=a[c>>0]|0;a[f>>0]=b<<24>>24>-1?b:e;c=c+1|0;if((c|0)==(d|0))break;else f=f+1|0}return d|0}function _8(a){a=a|0;nda(a);return}function $8(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;c[f>>2]=d;c[i>>2]=g;return 3}function a9(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;c[f>>2]=d;c[i>>2]=g;return 3}function b9(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function c9(a){a=a|0;return 1}function d9(a){a=a|0;return 1}function e9(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;a=d-c|0;return (a>>>0>>0?a:e)|0}function f9(a){a=a|0;return 1}function g9(a,b){a=a|0;b=b|0;c[a+4>>2]=b+-1;c[a>>2]=357800;c[a+8>>2]=K4()|0;return}function h9(a){a=a|0;iaa(a);nda(a);return}function i9(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+16|0;q=s;o=s+8|0;m=(e|0)==(f|0);a:do if(!m){l=e;while(1){if(!(c[l>>2]|0))break;l=l+4|0;if((l|0)==(f|0)){l=f;break}}c[k>>2]=h;c[g>>2]=e;if(m|(h|0)==(j|0))r=32;else{n=j;p=b+8|0;while(1){t=d;b=c[t+4>>2]|0;m=q;c[m>>2]=c[t>>2];c[m+4>>2]=b;m=mc(c[p>>2]|0)|0;b=Lca(h,g,l-e>>2,n-h|0,d)|0;if(m)mc(m|0)|0;if(!b){e=1;break a}else if((b|0)==-1)break;h=(c[k>>2]|0)+b|0;c[k>>2]=h;if((h|0)==(j|0)){r=31;break}if((l|0)==(f|0)){e=c[g>>2]|0;l=f}else{e=mc(c[p>>2]|0)|0;h=Qea(o,0,d)|0;if(e)mc(e|0)|0;if((h|0)==-1){e=2;break a}e=c[k>>2]|0;if(h>>>0>(n-e|0)>>>0){e=1;break a}b:do if(h){m=o;while(1){t=a[m>>0]|0;c[k>>2]=e+1;a[e>>0]=t;h=h+-1|0;if(!h)break b;e=c[k>>2]|0;m=m+1|0}}while(0);h=c[g>>2]|0;e=h+4|0;c[g>>2]=e;c:do if((e|0)==(f|0))l=f;else{l=e;while(1){h=h+8|0;if(!(c[l>>2]|0))break c;if((h|0)==(f|0)){l=f;break}else{t=l;l=h;h=t}}}while(0);h=c[k>>2]|0}if((e|0)==(f|0)|(h|0)==(j|0)){r=32;break a}}if((r|0)==31){e=c[g>>2]|0;r=32;break}c[k>>2]=h;d:do if((e|0)!=(c[g>>2]|0))do{t=c[e>>2]|0;l=mc(c[p>>2]|0)|0;h=Qea(h,t,q)|0;if(l)mc(l|0)|0;if((h|0)==-1)break d;h=(c[k>>2]|0)+h|0;c[k>>2]=h;e=e+4|0}while((e|0)!=(c[g>>2]|0));while(0);c[g>>2]=e;e=2}}else{c[k>>2]=h;c[g>>2]=e;r=32}while(0);if((r|0)==32)e=(e|0)!=(f|0)&1;i=s;return e|0}function j9(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;q=s;m=(e|0)==(f|0);a:do if(!m){l=e;while(1){if(!(a[l>>0]|0))break;l=l+1|0;if((l|0)==(f|0)){l=f;break}}c[k>>2]=h;c[g>>2]=e;if(m|(h|0)==(j|0))r=31;else{o=j;p=b+8|0;while(1){n=d;b=c[n+4>>2]|0;m=q;c[m>>2]=c[n>>2];c[m+4>>2]=b;m=l;b=mc(c[p>>2]|0)|0;n=Ica(h,g,m-e|0,o-h>>2,d)|0;if(b)mc(b|0)|0;if(!n){e=2;break a}else if((n|0)==-1)break;h=(c[k>>2]|0)+(n<<2)|0;c[k>>2]=h;if((h|0)==(j|0)){r=30;break}e=c[g>>2]|0;if((l|0)==(f|0))l=f;else{m=mc(c[p>>2]|0)|0;e=Gca(h,e,1,d)|0;if(m)mc(m|0)|0;if(e){e=2;break a}c[k>>2]=(c[k>>2]|0)+4;h=c[g>>2]|0;e=h+1|0;c[g>>2]=e;b:do if((e|0)==(f|0))l=f;else{l=e;while(1){h=h+2|0;if(!(a[l>>0]|0))break b;if((h|0)==(f|0)){l=f;break}else{b=l;l=h;h=b}}}while(0);h=c[k>>2]|0}if((e|0)==(f|0)|(h|0)==(j|0)){r=31;break a}}if((r|0)==30){e=c[g>>2]|0;r=31;break}c[k>>2]=h;c:do if((e|0)!=(c[g>>2]|0)){while(1){l=mc(c[p>>2]|0)|0;h=Gca(h,e,m-e|0,q)|0;if(l)mc(l|0)|0;if((h|0)==-2){r=16;break}else if((h|0)==-1){r=15;break}else if(!h)e=e+1|0;else e=e+h|0;h=(c[k>>2]|0)+4|0;c[k>>2]=h;if((e|0)==(c[g>>2]|0))break c}if((r|0)==15){c[g>>2]=e;e=2;break a}else if((r|0)==16){c[g>>2]=e;e=1;break a}}while(0);c[g>>2]=e;e=(e|0)!=(f|0)&1}}else{c[k>>2]=h;c[g>>2]=e;r=31}while(0);if((r|0)==31)e=(e|0)!=(f|0)&1;i=s;return e|0}function k9(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;j=i;i=i+16|0;h=j;c[g>>2]=e;e=mc(c[b+8>>2]|0)|0;b=Qea(h,0,d)|0;if(e)mc(e|0)|0;a:do if(!((b|0)==0|(b|0)==-1)){b=b+-1|0;e=c[g>>2]|0;if(b>>>0<=(f-e|0)>>>0)if(!b)b=0;else while(1){f=a[h>>0]|0;c[g>>2]=e+1;a[e>>0]=f;b=b+-1|0;if(!b){b=0;break a}e=c[g>>2]|0;h=h+1|0}else b=1}else b=2;while(0);i=j;return b|0}function l9(a){a=a|0;var b=0,d=0;a=a+8|0;b=mc(c[a>>2]|0)|0;d=Kca(0,0,4)|0;if(b)mc(b|0)|0;if(!d){a=c[a>>2]|0;if(a){a=mc(a|0)|0;if(!a)a=0;else{mc(a|0)|0;a=0}}else a=1}else a=-1;return a|0}function m9(a){a=a|0;return 0}function n9(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;a:do if((f|0)==0|(d|0)==(e|0))a=0;else{k=e;j=a+8|0;a=0;i=0;do{h=mc(c[j>>2]|0)|0;g=Fca(d,k-d|0,b)|0;if(h)mc(h|0)|0;if((g|0)==-2|(g|0)==-1)break a;else if(!g){d=d+1|0;g=1}else d=d+g|0;a=g+a|0;i=i+1|0}while(!(i>>>0>=f>>>0|(d|0)==(e|0)))}while(0);return a|0}function o9(a){a=a|0;a=c[a+8>>2]|0;if(a){a=mc(a|0)|0;if(!a)a=4;else{mc(a|0)|0;a=4}}else a=1;return a|0}function p9(a){a=a|0;nda(a);return}function q9(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0;a=i;i=i+16|0;k=a+4|0;b=a;c[k>>2]=d;c[b>>2]=g;h=Bba(d,e,k,g,h,b,1114111,0)|0;c[f>>2]=d+((c[k>>2]|0)-d>>1<<1);c[j>>2]=g+((c[b>>2]|0)-g);i=a;return h|0}function r9(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0;a=i;i=i+16|0;k=a+4|0;b=a;c[k>>2]=d;c[b>>2]=g;h=Cba(d,e,k,g,h,b,1114111,0)|0;c[f>>2]=d+((c[k>>2]|0)-d);c[j>>2]=g+((c[b>>2]|0)-g>>1<<1);i=a;return h|0}function s9(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function t9(a){a=a|0;return 0}function u9(a){a=a|0;return 0}function v9(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Dba(c,d,e,1114111,0)|0}function w9(a){a=a|0;return 4}function x9(a){a=a|0;nda(a);return}function y9(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0;a=i;i=i+16|0;k=a+4|0;b=a;c[k>>2]=d;c[b>>2]=g;h=Eba(d,e,k,g,h,b,1114111,0)|0;c[f>>2]=d+((c[k>>2]|0)-d>>2<<2);c[j>>2]=g+((c[b>>2]|0)-g);i=a;return h|0}function z9(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0;a=i;i=i+16|0;k=a+4|0;b=a;c[k>>2]=d;c[b>>2]=g;h=Fba(d,e,k,g,h,b,1114111,0)|0;c[f>>2]=d+((c[k>>2]|0)-d);c[j>>2]=g+((c[b>>2]|0)-g>>2<<2);i=a;return h|0}function A9(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function B9(a){a=a|0;return 0}function C9(a){a=a|0;return 0}function D9(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Gba(c,d,e,1114111,0)|0}function E9(a){a=a|0;return 4}function F9(a){a=a|0;nda(a);return}function G9(a){a=a|0;nda(a);return}function H9(a){a=a|0;c[a>>2]=357880;v2(a+12|0);return}function I9(a){a=a|0;H9(a);nda(a);return}function J9(a){a=a|0;c[a>>2]=357920;v2(a+16|0);return}function K9(a){a=a|0;J9(a);nda(a);return}function L9(b){b=b|0;return a[b+8>>0]|0}function M9(a){a=a|0;return c[a+8>>2]|0}function N9(b){b=b|0;return a[b+9>>0]|0}function O9(a){a=a|0;return c[a+12>>2]|0}function P9(a,b){a=a|0;b=b|0;q2(a,b+12|0);return}function Q9(a,b){a=a|0;b=b|0;q2(a,b+16|0);return}function R9(a,b){a=a|0;b=b|0;p2(a,357952,4);return}function S9(a,b){a=a|0;b=b|0;I2(a,357960,bda(357960)|0);return}function T9(a,b){a=a|0;b=b|0;p2(a,357984,5);return}function U9(a,b){a=a|0;b=b|0;I2(a,357992,bda(357992)|0);return}function V9(a){a=a|0;a=c[a+4>>2]&74;if((a|0)==64)a=8;else if((a|0)==8)a=16;else if(!a)a=0;else a=10;return a|0}function W9(b){b=b|0;if((a[358024]|0)==0?(Pa(358024)|0)!=0:0){if((a[365224]|0)==0?(Pa(365224)|0)!=0:0){sfa(365056,0,168)|0;qb(321,0,o|0)|0;Db(365224)}x2(365056,365232)|0;x2(365068,365240)|0;x2(365080,365248)|0;x2(365092,365256)|0;x2(365104,365272)|0;x2(365116,365288)|0;x2(365128,365296)|0;x2(365140,365312)|0;x2(365152,365320)|0;x2(365164,365328)|0;x2(365176,365336)|0;x2(365188,365344)|0;x2(365200,365352)|0;x2(365212,365360)|0;c[89504]=365056;Db(358024)}return c[89504]|0}function X9(b){b=b|0;if((a[358040]|0)==0?(Pa(358040)|0)!=0:0){if((a[364688]|0)==0?(Pa(364688)|0)!=0:0){sfa(364520,0,168)|0;qb(322,0,o|0)|0;Db(364688)}M2(364520,364696)|0;M2(364532,364728)|0;M2(364544,364760)|0;M2(364556,364792)|0;M2(364568,364832)|0;M2(364580,364872)|0;M2(364592,364904)|0;M2(364604,364944)|0;M2(364616,364960)|0;M2(364628,364976)|0;M2(364640,364992)|0;M2(364652,365008)|0;M2(364664,365024)|0;M2(364676,365040)|0;c[89508]=364520;Db(358040)}return c[89508]|0}function Y9(b){b=b|0;if((a[358056]|0)==0?(Pa(358056)|0)!=0:0){if((a[364296]|0)==0?(Pa(364296)|0)!=0:0){sfa(364008,0,288)|0;qb(323,0,o|0)|0;Db(364296)}x2(364008,364304)|0;x2(364020,364312)|0;x2(364032,364328)|0;x2(364044,364336)|0;x2(364056,364344)|0;x2(364068,364352)|0;x2(364080,364360)|0;x2(364092,364368)|0;x2(364104,364376)|0;x2(364116,364392)|0;x2(364128,364400)|0;x2(364140,364416)|0;x2(364152,364432)|0;x2(364164,364440)|0;x2(364176,364448)|0;x2(364188,364456)|0;x2(364200,364344)|0;x2(364212,364464)|0;x2(364224,364472)|0;x2(364236,364480)|0;x2(364248,364488)|0;x2(364260,364496)|0;x2(364272,364504)|0;x2(364284,364512)|0;c[89512]=364008;Db(358056)}return c[89512]|0}function Z9(b){b=b|0;if((a[358072]|0)==0?(Pa(358072)|0)!=0:0){if((a[363456]|0)==0?(Pa(363456)|0)!=0:0){sfa(363168,0,288)|0;qb(324,0,o|0)|0;Db(363456)}M2(363168,363464)|0;M2(363180,363496)|0;M2(363192,363536)|0;M2(363204,363560)|0;M2(363216,363584)|0;M2(363228,363600)|0;M2(363240,363624)|0;M2(363252,363648)|0;M2(363264,363680)|0;M2(363276,363720)|0;M2(363288,363752)|0;M2(363300,363792)|0;M2(363312,363832)|0;M2(363324,363848)|0;M2(363336,363864)|0;M2(363348,363880)|0;M2(363360,363584)|0;M2(363372,363896)|0;M2(363384,363912)|0;M2(363396,363928)|0;M2(363408,363944)|0;M2(363420,363960)|0;M2(363432,363976)|0;M2(363444,363992)|0;c[89516]=363168;Db(358072)}return c[89516]|0}function _9(b){b=b|0;if((a[358088]|0)==0?(Pa(358088)|0)!=0:0){if((a[363144]|0)==0?(Pa(363144)|0)!=0:0){sfa(362856,0,288)|0;qb(325,0,o|0)|0;Db(363144)}x2(362856,363152)|0;x2(362868,363160)|0;c[89520]=362856;Db(358088)}return c[89520]|0}function $9(b){b=b|0;if((a[358104]|0)==0?(Pa(358104)|0)!=0:0){if((a[362816]|0)==0?(Pa(362816)|0)!=0:0){sfa(362528,0,288)|0;qb(326,0,o|0)|0;Db(362816)}M2(362528,362824)|0;M2(362540,362840)|0;c[89524]=362528;Db(358104)}return c[89524]|0}function aaa(b){b=b|0;if((a[358128]|0)==0?(Pa(358128)|0)!=0:0){p2(358112,358136,8);qb(327,358112,o|0)|0;Db(358128)}return 358112}function baa(b){b=b|0;if((a[358168]|0)==0?(Pa(358168)|0)!=0:0){I2(358152,358176,bda(358176)|0);qb(328,358152,o|0)|0;Db(358168)}return 358152}function caa(b){b=b|0;if((a[358232]|0)==0?(Pa(358232)|0)!=0:0){p2(358216,358240,8);qb(327,358216,o|0)|0;Db(358232)}return 358216}function daa(b){b=b|0;if((a[358272]|0)==0?(Pa(358272)|0)!=0:0){I2(358256,358280,bda(358280)|0);qb(328,358256,o|0)|0;Db(358272)}return 358256}function eaa(b){b=b|0;if((a[358336]|0)==0?(Pa(358336)|0)!=0:0){p2(358320,358344,20);qb(327,358320,o|0)|0;Db(358336)}return 358320}function faa(b){b=b|0;if((a[358384]|0)==0?(Pa(358384)|0)!=0:0){I2(358368,358392,bda(358392)|0);qb(328,358368,o|0)|0;Db(358384)}return 358368}function gaa(b){b=b|0;if((a[358496]|0)==0?(Pa(358496)|0)!=0:0){p2(358480,358504,11);qb(327,358480,o|0)|0;Db(358496)}return 358480}function haa(b){b=b|0;if((a[358536]|0)==0?(Pa(358536)|0)!=0:0){I2(358520,358544,bda(358544)|0);qb(328,358520,o|0)|0;Db(358536)}return 358520}function iaa(a){a=a|0;var b=0;c[a>>2]=357800;a=a+8|0;b=c[a>>2]|0;if((b|0)!=(K4()|0))Lb(c[a>>2]|0);return}function jaa(){O1(0);qb(329,353464,o|0)|0;return}function kaa(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;c3(b);c[b>>2]=354200;c[b+32>>2]=d;c[b+40>>2]=e;c[b+48>>2]=-1;a[b+52>>0]=0;t8(g,b+4|0);bca(b,g);u8(g);i=f;return}function laa(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;c3(b);c[b>>2]=354088;c[b+32>>2]=d;t8(g,b+4|0);d=w8(g,357776)|0;u8(g);c[b+36>>2]=d;c[b+40>>2]=e;a[b+44>>0]=(Ed[c[(c[d>>2]|0)+28>>2]&511](d)|0)&1;i=f;return}function maa(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;s3(b);c[b>>2]=353944;c[b+32>>2]=d;c[b+40>>2]=e;c[b+48>>2]=-1;a[b+52>>0]=0;t8(g,b+4|0);Tba(b,g);u8(g);i=f;return}function naa(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;s3(b);c[b>>2]=353832;c[b+32>>2]=d;t8(g,b+4|0);d=w8(g,357784)|0;u8(g);c[b+36>>2]=d;c[b+40>>2]=e;a[b+44>>0]=(Ed[c[(c[d>>2]|0)+28>>2]&511](d)|0)&1;i=f;return}function oaa(a,b){a=a|0;b=b|0;var d=0,e=0;e=tfa(b|0)|0;d=jda(e+13|0)|0;c[d>>2]=e;c[d+4>>2]=e;c[d+8>>2]=0;d=d+12|0;qfa(d|0,b|0,e+1|0)|0;c[a>>2]=d;return}function paa(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=d;f=e-g|0;if(f>>>0>4294967279)m2(b);if(f>>>0<11){a[b>>0]=f<<1;f=b+1|0}else{i=f+16&-16;h=jda(i)|0;c[b+8>>2]=h;c[b>>2]=i|1;c[b+4>>2]=f;f=h}if((d|0)!=(e|0)){g=e-g|0;b=f;while(1){a[b>>0]=a[d>>0]|0;d=d+1|0;if((d|0)==(e|0))break;else b=b+1|0}f=f+g|0}a[f>>0]=0;return}function qaa(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d;f=e-h|0;g=f>>2;if(g>>>0>1073741807)m2(b);if(g>>>0<2){a[b>>0]=f>>>1;f=b+4|0}else{i=g+4&-4;f=jda(i<<2)|0;c[b+8>>2]=f;c[b>>2]=i|1;c[b+4>>2]=g}if((d|0)!=(e|0)){g=((e+-4-h|0)>>>2)+1|0;b=f;while(1){c[b>>2]=c[d>>2];d=d+4|0;if((d|0)==(e|0))break;else b=b+4|0}f=f+(g<<2)|0}c[f>>2]=0;return}function raa(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+112|0;m=z;o=(g-f|0)/12|0;if(o>>>0>100){m=qea(o)|0;if(!m)lea();else{x=m;l=m}}else{x=0;l=m}w=(f|0)==(g|0);if(w){n=0;m=o}else{p=f;n=0;m=o;q=l;while(1){o=a[p>>0]|0;if(!(o&1))o=(o&255)>>>1;else o=c[p+4>>2]|0;if(!o){a[q>>0]=2;n=n+1|0;m=m+-1|0}else a[q>>0]=1;p=p+12|0;if((p|0)==(g|0))break;else q=q+1|0}}o=0;p=n;s=m;a:while(1){r=o;while(1){m=c[b>>2]|0;do if(m){if((c[m+12>>2]|0)==(c[m+16>>2]|0))if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1){c[b>>2]=0;m=0;break}else{m=c[b>>2]|0;break}}else m=0;while(0);q=(m|0)==0;n=c[e>>2]|0;if(n){if((c[n+12>>2]|0)==(c[n+16>>2]|0)?(Ed[c[(c[n>>2]|0)+36>>2]&511](n)|0)==-1:0){c[e>>2]=0;n=0}}else n=0;o=(n|0)==0;m=c[b>>2]|0;if(!((q^o)&(s|0)!=0))break a;o=c[m+12>>2]|0;if((o|0)==(c[m+16>>2]|0))m=Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0;else m=d[o>>0]|0;m=m&255;if(!k)m=Pd[c[(c[h>>2]|0)+12>>2]&511](h,m)|0;o=r+1|0;if(w)r=o;else{u=r;break}}n=0;v=f;t=l;while(1){do if((a[t>>0]|0)==1){if(!(a[v>>0]&1))q=v+1|0;else q=c[v+8>>2]|0;q=a[q+u>>0]|0;if(!k)q=Pd[c[(c[h>>2]|0)+12>>2]&511](h,q)|0;if(m<<24>>24!=q<<24>>24){a[t>>0]=0;q=n;r=p;s=s+-1|0;break}q=a[v>>0]|0;if(!(q&1))q=(q&255)>>>1;else q=c[v+4>>2]|0;if((q|0)==(o|0)){a[t>>0]=2;q=1;r=p+1|0;s=s+-1|0}else{q=1;r=p}}else{q=n;r=p}while(0);v=v+12|0;if((v|0)==(g|0))break;else{n=q;p=r;t=t+1|0}}if(!q){p=r;continue}n=c[b>>2]|0;p=n+12|0;m=c[p>>2]|0;if((m|0)==(c[n+16>>2]|0))Ed[c[(c[n>>2]|0)+40>>2]&511](n)|0;else c[p>>2]=m+1;if((r+s|0)>>>0<2){p=r;continue}else{m=f;p=r;q=l}while(1){if((a[q>>0]|0)==2){n=a[m>>0]|0;if(!(n&1))n=(n&255)>>>1;else n=c[m+4>>2]|0;if((n|0)!=(o|0)){a[q>>0]=0;p=p+-1|0}}m=m+12|0;if((m|0)==(g|0))continue a;else q=q+1|0}}do if(m){if((c[m+12>>2]|0)==(c[m+16>>2]|0))if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1){c[b>>2]=0;m=0;break}else{m=c[b>>2]|0;break}}else m=0;while(0);m=(m|0)==0;do if(!o){if((c[n+12>>2]|0)!=(c[n+16>>2]|0))if(m)break;else{y=69;break}if((Ed[c[(c[n>>2]|0)+36>>2]&511](n)|0)!=-1)if(m)break;else{y=69;break}else{c[e>>2]=0;y=67;break}}else y=67;while(0);if((y|0)==67?m:0)y=69;if((y|0)==69)c[j>>2]=c[j>>2]|2;b:do if(w)y=73;else while(1){if((a[l>>0]|0)==2){g=f;break b}f=f+12|0;if((f|0)==(g|0)){y=73;break}else l=l+1|0}while(0);if((y|0)==73)c[j>>2]=c[j>>2]|4;if(x)rea(x);i=z;return g|0}function saa(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=i;i=i+224|0;t=C+198|0;e=C+196|0;B=C+4|0;A=C+16|0;v=C+28|0;x=C+32|0;y=C;w=C+192|0;u=V9(h)|0;Z4(B,h,t,e);c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;z2(A,10,0);if(!(a[A>>0]&1)){l=A+1|0;q=l;r=A+8|0}else{l=A+8|0;q=A+1|0;r=l;l=c[l>>2]|0}c[v>>2]=l;c[y>>2]=x;c[w>>2]=0;s=A+4|0;p=a[e>>0]|0;e=c[f>>2]|0;a:while(1){if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;m=c[g>>2]|0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(h)break;else break a;if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(h)break;else break a;else{c[g>>2]=0;D=14;break}}else D=14;while(0);if((D|0)==14){D=0;if(h){m=0;break}else m=0}o=a[A>>0]|0;h=(o&1)==0;if(h)n=(o&255)>>>1;else n=c[s>>2]|0;if((c[v>>2]|0)==(l+n|0)){if(h){h=(o&255)>>>1;n=(o&255)>>>1}else{n=c[s>>2]|0;h=n}z2(A,h<<1,0);if(!(a[A>>0]&1))h=10;else h=(c[A>>2]&-2)+-1|0;z2(A,h,0);if(!(a[A>>0]&1))l=q;else l=c[r>>2]|0;c[v>>2]=l+n}o=e+12|0;h=c[o>>2]|0;n=e+16|0;if((h|0)==(c[n>>2]|0))h=Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0;else h=d[h>>0]|0;if(J4(h&255,u,l,v,w,p,B,x,y,t)|0)break;m=c[o>>2]|0;if((m|0)==(c[n>>2]|0)){Ed[c[(c[e>>2]|0)+40>>2]&511](e)|0;continue}else{c[o>>2]=m+1;continue}}h=a[B>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[B+4>>2]|0;if((h|0)!=0?(z=c[y>>2]|0,(z-x|0)<160):0){w=c[w>>2]|0;c[y>>2]=z+4;c[z>>2]=w}c[k>>2]=ica(l,c[v>>2]|0,j,u)|0;H7(B,x,c[y>>2]|0,j);if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(h)break;else{D=52;break}if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(h^(m|0)==0)break;else{D=52;break}else{c[g>>2]=0;D=50;break}}else D=50;while(0);if((D|0)==50?h:0)D=52;if((D|0)==52)c[j>>2]=c[j>>2]|2;c[b>>2]=e;v2(A);v2(B);i=C;return}function taa(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=i;i=i+224|0;t=C+198|0;e=C+196|0;B=C+4|0;A=C+16|0;v=C+28|0;x=C+32|0;y=C;w=C+192|0;u=V9(h)|0;Z4(B,h,t,e);c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;z2(A,10,0);if(!(a[A>>0]&1)){l=A+1|0;q=l;r=A+8|0}else{l=A+8|0;q=A+1|0;r=l;l=c[l>>2]|0}c[v>>2]=l;c[y>>2]=x;c[w>>2]=0;s=A+4|0;p=a[e>>0]|0;e=c[f>>2]|0;a:while(1){if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;m=c[g>>2]|0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(h)break;else break a;if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(h)break;else break a;else{c[g>>2]=0;D=14;break}}else D=14;while(0);if((D|0)==14){D=0;if(h){m=0;break}else m=0}o=a[A>>0]|0;h=(o&1)==0;if(h)n=(o&255)>>>1;else n=c[s>>2]|0;if((c[v>>2]|0)==(l+n|0)){if(h){h=(o&255)>>>1;n=(o&255)>>>1}else{n=c[s>>2]|0;h=n}z2(A,h<<1,0);if(!(a[A>>0]&1))h=10;else h=(c[A>>2]&-2)+-1|0;z2(A,h,0);if(!(a[A>>0]&1))l=q;else l=c[r>>2]|0;c[v>>2]=l+n}o=e+12|0;h=c[o>>2]|0;n=e+16|0;if((h|0)==(c[n>>2]|0))h=Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0;else h=d[h>>0]|0;if(J4(h&255,u,l,v,w,p,B,x,y,t)|0)break;m=c[o>>2]|0;if((m|0)==(c[n>>2]|0)){Ed[c[(c[e>>2]|0)+40>>2]&511](e)|0;continue}else{c[o>>2]=m+1;continue}}h=a[B>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[B+4>>2]|0;if((h|0)!=0?(z=c[y>>2]|0,(z-x|0)<160):0){w=c[w>>2]|0;c[y>>2]=z+4;c[z>>2]=w}z=jca(l,c[v>>2]|0,j,u)|0;c[k>>2]=z;c[k+4>>2]=H;H7(B,x,c[y>>2]|0,j);if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(h)break;else{D=52;break}if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(h^(m|0)==0)break;else{D=52;break}else{c[g>>2]=0;D=50;break}}else D=50;while(0);if((D|0)==50?h:0)D=52;if((D|0)==52)c[j>>2]=c[j>>2]|2;c[b>>2]=e;v2(A);v2(B);i=C;return}function uaa(e,f,g,h,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;D=i;i=i+224|0;u=D+198|0;f=D+196|0;C=D+4|0;B=D+16|0;w=D+28|0;y=D+32|0;z=D;x=D+192|0;v=V9(j)|0;Z4(C,j,u,f);c[B+0>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;z2(B,10,0);if(!(a[B>>0]&1)){m=B+1|0;r=m;s=B+8|0}else{m=B+8|0;r=B+1|0;s=m;m=c[m>>2]|0}c[w>>2]=m;c[z>>2]=y;c[x>>2]=0;t=B+4|0;q=a[f>>0]|0;f=c[g>>2]|0;a:while(1){if(f){if((c[f+12>>2]|0)==(c[f+16>>2]|0)?(Ed[c[(c[f>>2]|0)+36>>2]&511](f)|0)==-1:0){c[g>>2]=0;f=0}}else f=0;j=(f|0)==0;n=c[h>>2]|0;do if(n){if((c[n+12>>2]|0)!=(c[n+16>>2]|0))if(j)break;else break a;if((Ed[c[(c[n>>2]|0)+36>>2]&511](n)|0)!=-1)if(j)break;else break a;else{c[h>>2]=0;E=14;break}}else E=14;while(0);if((E|0)==14){E=0;if(j){n=0;break}else n=0}p=a[B>>0]|0;j=(p&1)==0;if(j)o=(p&255)>>>1;else o=c[t>>2]|0;if((c[w>>2]|0)==(m+o|0)){if(j){j=(p&255)>>>1;o=(p&255)>>>1}else{o=c[t>>2]|0;j=o}z2(B,j<<1,0);if(!(a[B>>0]&1))j=10;else j=(c[B>>2]&-2)+-1|0;z2(B,j,0);if(!(a[B>>0]&1))m=r;else m=c[s>>2]|0;c[w>>2]=m+o}p=f+12|0;j=c[p>>2]|0;o=f+16|0;if((j|0)==(c[o>>2]|0))j=Ed[c[(c[f>>2]|0)+36>>2]&511](f)|0;else j=d[j>>0]|0;if(J4(j&255,v,m,w,x,q,C,y,z,u)|0)break;n=c[p>>2]|0;if((n|0)==(c[o>>2]|0)){Ed[c[(c[f>>2]|0)+40>>2]&511](f)|0;continue}else{c[p>>2]=n+1;continue}}j=a[C>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[C+4>>2]|0;if((j|0)!=0?(A=c[z>>2]|0,(A-y|0)<160):0){x=c[x>>2]|0;c[z>>2]=A+4;c[A>>2]=x}b[l>>1]=kca(m,c[w>>2]|0,k,v)|0;H7(C,y,c[z>>2]|0,k);if(f){if((c[f+12>>2]|0)==(c[f+16>>2]|0)?(Ed[c[(c[f>>2]|0)+36>>2]&511](f)|0)==-1:0){c[g>>2]=0;f=0}}else f=0;j=(f|0)==0;do if(n){if((c[n+12>>2]|0)!=(c[n+16>>2]|0))if(j)break;else{E=52;break}if((Ed[c[(c[n>>2]|0)+36>>2]&511](n)|0)!=-1)if(j^(n|0)==0)break;else{E=52;break}else{c[h>>2]=0;E=50;break}}else E=50;while(0);if((E|0)==50?j:0)E=52;if((E|0)==52)c[k>>2]=c[k>>2]|2;c[e>>2]=f;v2(B);v2(C);i=D;return}function vaa(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=i;i=i+224|0;t=C+198|0;e=C+196|0;B=C+4|0;A=C+16|0;v=C+28|0;x=C+32|0;y=C;w=C+192|0;u=V9(h)|0;Z4(B,h,t,e);c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;z2(A,10,0);if(!(a[A>>0]&1)){l=A+1|0;q=l;r=A+8|0}else{l=A+8|0;q=A+1|0;r=l;l=c[l>>2]|0}c[v>>2]=l;c[y>>2]=x;c[w>>2]=0;s=A+4|0;p=a[e>>0]|0;e=c[f>>2]|0;a:while(1){if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;m=c[g>>2]|0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(h)break;else break a;if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(h)break;else break a;else{c[g>>2]=0;D=14;break}}else D=14;while(0);if((D|0)==14){D=0;if(h){m=0;break}else m=0}o=a[A>>0]|0;h=(o&1)==0;if(h)n=(o&255)>>>1;else n=c[s>>2]|0;if((c[v>>2]|0)==(l+n|0)){if(h){h=(o&255)>>>1;n=(o&255)>>>1}else{n=c[s>>2]|0;h=n}z2(A,h<<1,0);if(!(a[A>>0]&1))h=10;else h=(c[A>>2]&-2)+-1|0;z2(A,h,0);if(!(a[A>>0]&1))l=q;else l=c[r>>2]|0;c[v>>2]=l+n}o=e+12|0;h=c[o>>2]|0;n=e+16|0;if((h|0)==(c[n>>2]|0))h=Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0;else h=d[h>>0]|0;if(J4(h&255,u,l,v,w,p,B,x,y,t)|0)break;m=c[o>>2]|0;if((m|0)==(c[n>>2]|0)){Ed[c[(c[e>>2]|0)+40>>2]&511](e)|0;continue}else{c[o>>2]=m+1;continue}}h=a[B>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[B+4>>2]|0;if((h|0)!=0?(z=c[y>>2]|0,(z-x|0)<160):0){w=c[w>>2]|0;c[y>>2]=z+4;c[z>>2]=w}c[k>>2]=lca(l,c[v>>2]|0,j,u)|0;H7(B,x,c[y>>2]|0,j);if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(h)break;else{D=52;break}if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(h^(m|0)==0)break;else{D=52;break}else{c[g>>2]=0;D=50;break}}else D=50;while(0);if((D|0)==50?h:0)D=52;if((D|0)==52)c[j>>2]=c[j>>2]|2;c[b>>2]=e;v2(A);v2(B);i=C;return}function waa(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=i;i=i+224|0;t=C+198|0;e=C+196|0;B=C+4|0;A=C+16|0;v=C+28|0;x=C+32|0;y=C;w=C+192|0;u=V9(h)|0;Z4(B,h,t,e);c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;z2(A,10,0);if(!(a[A>>0]&1)){l=A+1|0;q=l;r=A+8|0}else{l=A+8|0;q=A+1|0;r=l;l=c[l>>2]|0}c[v>>2]=l;c[y>>2]=x;c[w>>2]=0;s=A+4|0;p=a[e>>0]|0;e=c[f>>2]|0;a:while(1){if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;m=c[g>>2]|0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(h)break;else break a;if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(h)break;else break a;else{c[g>>2]=0;D=14;break}}else D=14;while(0);if((D|0)==14){D=0;if(h){m=0;break}else m=0}o=a[A>>0]|0;h=(o&1)==0;if(h)n=(o&255)>>>1;else n=c[s>>2]|0;if((c[v>>2]|0)==(l+n|0)){if(h){h=(o&255)>>>1;n=(o&255)>>>1}else{n=c[s>>2]|0;h=n}z2(A,h<<1,0);if(!(a[A>>0]&1))h=10;else h=(c[A>>2]&-2)+-1|0;z2(A,h,0);if(!(a[A>>0]&1))l=q;else l=c[r>>2]|0;c[v>>2]=l+n}o=e+12|0;h=c[o>>2]|0;n=e+16|0;if((h|0)==(c[n>>2]|0))h=Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0;else h=d[h>>0]|0;if(J4(h&255,u,l,v,w,p,B,x,y,t)|0)break;m=c[o>>2]|0;if((m|0)==(c[n>>2]|0)){Ed[c[(c[e>>2]|0)+40>>2]&511](e)|0;continue}else{c[o>>2]=m+1;continue}}h=a[B>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[B+4>>2]|0;if((h|0)!=0?(z=c[y>>2]|0,(z-x|0)<160):0){w=c[w>>2]|0;c[y>>2]=z+4;c[z>>2]=w}c[k>>2]=mca(l,c[v>>2]|0,j,u)|0;H7(B,x,c[y>>2]|0,j);if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(h)break;else{D=52;break}if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(h^(m|0)==0)break;else{D=52;break}else{c[g>>2]=0;D=50;break}}else D=50;while(0);if((D|0)==50?h:0)D=52;if((D|0)==52)c[j>>2]=c[j>>2]|2;c[b>>2]=e;v2(A);v2(B);i=C;return}function xaa(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=i;i=i+224|0;t=C+198|0;e=C+196|0;B=C+4|0;A=C+16|0;v=C+28|0;x=C+32|0;y=C;w=C+192|0;u=V9(h)|0;Z4(B,h,t,e);c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;z2(A,10,0);if(!(a[A>>0]&1)){l=A+1|0;q=l;r=A+8|0}else{l=A+8|0;q=A+1|0;r=l;l=c[l>>2]|0}c[v>>2]=l;c[y>>2]=x;c[w>>2]=0;s=A+4|0;p=a[e>>0]|0;e=c[f>>2]|0;a:while(1){if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;m=c[g>>2]|0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(h)break;else break a;if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(h)break;else break a;else{c[g>>2]=0;D=14;break}}else D=14;while(0);if((D|0)==14){D=0;if(h){m=0;break}else m=0}o=a[A>>0]|0;h=(o&1)==0;if(h)n=(o&255)>>>1;else n=c[s>>2]|0;if((c[v>>2]|0)==(l+n|0)){if(h){h=(o&255)>>>1;n=(o&255)>>>1}else{n=c[s>>2]|0;h=n}z2(A,h<<1,0);if(!(a[A>>0]&1))h=10;else h=(c[A>>2]&-2)+-1|0;z2(A,h,0);if(!(a[A>>0]&1))l=q;else l=c[r>>2]|0;c[v>>2]=l+n}o=e+12|0;h=c[o>>2]|0;n=e+16|0;if((h|0)==(c[n>>2]|0))h=Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0;else h=d[h>>0]|0;if(J4(h&255,u,l,v,w,p,B,x,y,t)|0)break;m=c[o>>2]|0;if((m|0)==(c[n>>2]|0)){Ed[c[(c[e>>2]|0)+40>>2]&511](e)|0;continue}else{c[o>>2]=m+1;continue}}h=a[B>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[B+4>>2]|0;if((h|0)!=0?(z=c[y>>2]|0,(z-x|0)<160):0){w=c[w>>2]|0;c[y>>2]=z+4;c[z>>2]=w}z=nca(l,c[v>>2]|0,j,u)|0;c[k>>2]=z;c[k+4>>2]=H;H7(B,x,c[y>>2]|0,j);if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(h)break;else{D=52;break}if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(h^(m|0)==0)break;else{D=52;break}else{c[g>>2]=0;D=50;break}}else D=50;while(0);if((D|0)==50?h:0)D=52;if((D|0)==52)c[j>>2]=c[j>>2]|2;c[b>>2]=e;v2(A);v2(B);i=C;return}function yaa(b,e,f,h,j,k,l){b=b|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=i;i=i+240|0;v=F+200|0;e=F+199|0;n=F+198|0;E=F+8|0;D=F+20|0;x=F+192|0;z=F+32|0;A=F;y=F+4|0;B=F+197|0;w=F+196|0;_4(E,j,v,e,n);c[D+0>>2]=0;c[D+4>>2]=0;c[D+8>>2]=0;z2(D,10,0);if(!(a[D>>0]&1)){m=D+1|0;s=m;t=D+8|0}else{m=D+8|0;s=D+1|0;t=m;m=c[m>>2]|0}c[x>>2]=m;c[A>>2]=z;c[y>>2]=0;a[B>>0]=1;a[w>>0]=69;u=D+4|0;r=a[e>>0]|0;q=a[n>>0]|0;e=c[f>>2]|0;a:while(1){if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;j=(e|0)==0;n=c[h>>2]|0;do if(n){if((c[n+12>>2]|0)!=(c[n+16>>2]|0))if(j)break;else break a;if((Ed[c[(c[n>>2]|0)+36>>2]&511](n)|0)!=-1)if(j)break;else break a;else{c[h>>2]=0;G=14;break}}else G=14;while(0);if((G|0)==14){G=0;if(j){n=0;break}else n=0}p=a[D>>0]|0;j=(p&1)==0;if(j)o=(p&255)>>>1;else o=c[u>>2]|0;if((c[x>>2]|0)==(m+o|0)){if(j){j=(p&255)>>>1;o=(p&255)>>>1}else{o=c[u>>2]|0;j=o}z2(D,j<<1,0);if(!(a[D>>0]&1))j=10;else j=(c[D>>2]&-2)+-1|0;z2(D,j,0);if(!(a[D>>0]&1))m=s;else m=c[t>>2]|0;c[x>>2]=m+o}p=e+12|0;j=c[p>>2]|0;o=e+16|0;if((j|0)==(c[o>>2]|0))j=Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0;else j=d[j>>0]|0;if($4(j&255,B,w,m,x,r,q,E,z,A,y,v)|0)break;n=c[p>>2]|0;if((n|0)==(c[o>>2]|0)){Ed[c[(c[e>>2]|0)+40>>2]&511](e)|0;continue}else{c[p>>2]=n+1;continue}}j=a[E>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[E+4>>2]|0;if(!((j|0)==0|(a[B>>0]|0)==0)?(C=c[A>>2]|0,(C-z|0)<160):0){B=c[y>>2]|0;c[A>>2]=C+4;c[C>>2]=B}g[l>>2]=+oca(m,c[x>>2]|0,k);H7(E,z,c[A>>2]|0,k);if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;j=(e|0)==0;do if(n){if((c[n+12>>2]|0)!=(c[n+16>>2]|0))if(j)break;else{G=52;break}if((Ed[c[(c[n>>2]|0)+36>>2]&511](n)|0)!=-1)if(j^(n|0)==0)break;else{G=52;break}else{c[h>>2]=0;G=50;break}}else G=50;while(0);if((G|0)==50?j:0)G=52;if((G|0)==52)c[k>>2]=c[k>>2]|2;c[b>>2]=e;v2(D);v2(E);i=F;return}function zaa(b,e,f,g,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=i;i=i+240|0;v=F+200|0;e=F+199|0;n=F+198|0;E=F+8|0;D=F+20|0;x=F+192|0;z=F+32|0;A=F;y=F+4|0;B=F+197|0;w=F+196|0;_4(E,j,v,e,n);c[D+0>>2]=0;c[D+4>>2]=0;c[D+8>>2]=0;z2(D,10,0);if(!(a[D>>0]&1)){m=D+1|0;s=m;t=D+8|0}else{m=D+8|0;s=D+1|0;t=m;m=c[m>>2]|0}c[x>>2]=m;c[A>>2]=z;c[y>>2]=0;a[B>>0]=1;a[w>>0]=69;u=D+4|0;r=a[e>>0]|0;q=a[n>>0]|0;e=c[f>>2]|0;a:while(1){if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;j=(e|0)==0;n=c[g>>2]|0;do if(n){if((c[n+12>>2]|0)!=(c[n+16>>2]|0))if(j)break;else break a;if((Ed[c[(c[n>>2]|0)+36>>2]&511](n)|0)!=-1)if(j)break;else break a;else{c[g>>2]=0;G=14;break}}else G=14;while(0);if((G|0)==14){G=0;if(j){n=0;break}else n=0}p=a[D>>0]|0;j=(p&1)==0;if(j)o=(p&255)>>>1;else o=c[u>>2]|0;if((c[x>>2]|0)==(m+o|0)){if(j){j=(p&255)>>>1;o=(p&255)>>>1}else{o=c[u>>2]|0;j=o}z2(D,j<<1,0);if(!(a[D>>0]&1))j=10;else j=(c[D>>2]&-2)+-1|0;z2(D,j,0);if(!(a[D>>0]&1))m=s;else m=c[t>>2]|0;c[x>>2]=m+o}p=e+12|0;j=c[p>>2]|0;o=e+16|0;if((j|0)==(c[o>>2]|0))j=Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0;else j=d[j>>0]|0;if($4(j&255,B,w,m,x,r,q,E,z,A,y,v)|0)break;n=c[p>>2]|0;if((n|0)==(c[o>>2]|0)){Ed[c[(c[e>>2]|0)+40>>2]&511](e)|0;continue}else{c[p>>2]=n+1;continue}}j=a[E>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[E+4>>2]|0;if(!((j|0)==0|(a[B>>0]|0)==0)?(C=c[A>>2]|0,(C-z|0)<160):0){B=c[y>>2]|0;c[A>>2]=C+4;c[C>>2]=B}h[l>>3]=+pca(m,c[x>>2]|0,k);H7(E,z,c[A>>2]|0,k);if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;j=(e|0)==0;do if(n){if((c[n+12>>2]|0)!=(c[n+16>>2]|0))if(j)break;else{G=52;break}if((Ed[c[(c[n>>2]|0)+36>>2]&511](n)|0)!=-1)if(j^(n|0)==0)break;else{G=52;break}else{c[g>>2]=0;G=50;break}}else G=50;while(0);if((G|0)==50?j:0)G=52;if((G|0)==52)c[k>>2]=c[k>>2]|2;c[b>>2]=e;v2(D);v2(E);i=F;return}function Aaa(b,e,f,g,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=i;i=i+240|0;v=F+200|0;e=F+199|0;n=F+198|0;E=F+8|0;D=F+20|0;x=F+192|0;z=F+32|0;A=F;y=F+4|0;B=F+197|0;w=F+196|0;_4(E,j,v,e,n);c[D+0>>2]=0;c[D+4>>2]=0;c[D+8>>2]=0;z2(D,10,0);if(!(a[D>>0]&1)){m=D+1|0;s=m;t=D+8|0}else{m=D+8|0;s=D+1|0;t=m;m=c[m>>2]|0}c[x>>2]=m;c[A>>2]=z;c[y>>2]=0;a[B>>0]=1;a[w>>0]=69;u=D+4|0;r=a[e>>0]|0;q=a[n>>0]|0;e=c[f>>2]|0;a:while(1){if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;j=(e|0)==0;n=c[g>>2]|0;do if(n){if((c[n+12>>2]|0)!=(c[n+16>>2]|0))if(j)break;else break a;if((Ed[c[(c[n>>2]|0)+36>>2]&511](n)|0)!=-1)if(j)break;else break a;else{c[g>>2]=0;G=14;break}}else G=14;while(0);if((G|0)==14){G=0;if(j){n=0;break}else n=0}p=a[D>>0]|0;j=(p&1)==0;if(j)o=(p&255)>>>1;else o=c[u>>2]|0;if((c[x>>2]|0)==(m+o|0)){if(j){j=(p&255)>>>1;o=(p&255)>>>1}else{o=c[u>>2]|0;j=o}z2(D,j<<1,0);if(!(a[D>>0]&1))j=10;else j=(c[D>>2]&-2)+-1|0;z2(D,j,0);if(!(a[D>>0]&1))m=s;else m=c[t>>2]|0;c[x>>2]=m+o}p=e+12|0;j=c[p>>2]|0;o=e+16|0;if((j|0)==(c[o>>2]|0))j=Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0;else j=d[j>>0]|0;if($4(j&255,B,w,m,x,r,q,E,z,A,y,v)|0)break;n=c[p>>2]|0;if((n|0)==(c[o>>2]|0)){Ed[c[(c[e>>2]|0)+40>>2]&511](e)|0;continue}else{c[p>>2]=n+1;continue}}j=a[E>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[E+4>>2]|0;if(!((j|0)==0|(a[B>>0]|0)==0)?(C=c[A>>2]|0,(C-z|0)<160):0){B=c[y>>2]|0;c[A>>2]=C+4;c[C>>2]=B}h[l>>3]=+qca(m,c[x>>2]|0,k);H7(E,z,c[A>>2]|0,k);if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;j=(e|0)==0;do if(n){if((c[n+12>>2]|0)!=(c[n+16>>2]|0))if(j)break;else{G=52;break}if((Ed[c[(c[n>>2]|0)+36>>2]&511](n)|0)!=-1)if(j^(n|0)==0)break;else{G=52;break}else{c[g>>2]=0;G=50;break}}else G=50;while(0);if((G|0)==50?j:0)G=52;if((G|0)==52)c[k>>2]=c[k>>2]|2;c[b>>2]=e;v2(D);v2(E);i=F;return}function Baa(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;c[g>>2]=e;e=mc(b|0)|0;b=Rca(a,d,g)|0;if(e)mc(e|0)|0;i=f;return b|0}function Caa(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+112|0;l=y;n=(f-e|0)/12|0;if(n>>>0>100){l=qea(n)|0;if(!l)lea();else{w=l;k=l}}else{w=0;k=l}v=(e|0)==(f|0);if(v){m=0;l=n}else{p=e;m=0;l=n;o=k;while(1){n=a[p>>0]|0;if(!(n&1))n=(n&255)>>>1;else n=c[p+4>>2]|0;if(!n){a[o>>0]=2;m=m+1|0;l=l+-1|0}else a[o>>0]=1;p=p+12|0;if((p|0)==(f|0))break;else o=o+1|0}}n=0;o=m;r=l;a:while(1){t=n;while(1){l=c[b>>2]|0;do if(l){n=c[l+12>>2]|0;if((n|0)==(c[l+16>>2]|0))l=Ed[c[(c[l>>2]|0)+36>>2]&511](l)|0;else l=c[n>>2]|0;if((l|0)==-1){c[b>>2]=0;p=1;break}else{p=(c[b>>2]|0)==0;break}}else p=1;while(0);n=c[d>>2]|0;if(n){l=c[n+12>>2]|0;if((l|0)==(c[n+16>>2]|0))l=Ed[c[(c[n>>2]|0)+36>>2]&511](n)|0;else l=c[l>>2]|0;if((l|0)==-1){c[d>>2]=0;n=0;l=1}else l=0}else{n=0;l=1}m=c[b>>2]|0;if(!((p^l)&(r|0)!=0))break a;l=c[m+12>>2]|0;if((l|0)==(c[m+16>>2]|0))l=Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0;else l=c[l>>2]|0;if(!j)l=Pd[c[(c[g>>2]|0)+28>>2]&511](g,l)|0;n=t+1|0;if(v)t=n;else break}p=0;u=e;s=k;while(1){do if((a[s>>0]|0)==1){if(!(a[u>>0]&1))m=u+4|0;else m=c[u+8>>2]|0;m=c[m+(t<<2)>>2]|0;if(!j)m=Pd[c[(c[g>>2]|0)+28>>2]&511](g,m)|0;if((l|0)!=(m|0)){a[s>>0]=0;q=o;r=r+-1|0;break}m=a[u>>0]|0;if(!(m&1))m=(m&255)>>>1;else m=c[u+4>>2]|0;if((m|0)==(n|0)){a[s>>0]=2;p=1;q=o+1|0;r=r+-1|0}else{p=1;q=o}}else q=o;while(0);u=u+12|0;if((u|0)==(f|0))break;else{o=q;s=s+1|0}}if(!p){o=q;continue}l=c[b>>2]|0;m=l+12|0;o=c[m>>2]|0;if((o|0)==(c[l+16>>2]|0))Ed[c[(c[l>>2]|0)+40>>2]&511](l)|0;else c[m>>2]=o+4;if((q+r|0)>>>0<2){o=q;continue}else{l=e;o=q;p=k}while(1){if((a[p>>0]|0)==2){m=a[l>>0]|0;if(!(m&1))m=(m&255)>>>1;else m=c[l+4>>2]|0;if((m|0)!=(n|0)){a[p>>0]=0;o=o+-1|0}}l=l+12|0;if((l|0)==(f|0))continue a;else p=p+1|0}}do if(m){l=c[m+12>>2]|0;if((l|0)==(c[m+16>>2]|0))l=Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0;else l=c[l>>2]|0;if((l|0)==-1){c[b>>2]=0;m=1;break}else{m=(c[b>>2]|0)==0;break}}else m=1;while(0);do if(n){l=c[n+12>>2]|0;if((l|0)==(c[n+16>>2]|0))l=Ed[c[(c[n>>2]|0)+36>>2]&511](n)|0;else l=c[l>>2]|0;if((l|0)!=-1)if(m)break;else{x=76;break}else{c[d>>2]=0;x=74;break}}else x=74;while(0);if((x|0)==74?m:0)x=76;if((x|0)==76)c[h>>2]=c[h>>2]|2;b:do if(v)x=80;else while(1){if((a[k>>0]|0)==2){f=e;break b}e=e+12|0;if((e|0)==(f|0)){x=80;break}else k=k+1|0}while(0);if((x|0)==80)c[h>>2]=c[h>>2]|4;if(w)rea(w);i=y;return f|0}function Daa(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=i;i=i+304|0;s=B+200|0;d=B;A=B+4|0;z=B+16|0;u=B+28|0;w=B+32|0;x=B+192|0;v=B+196|0;t=V9(g)|0;a5(A,g,s,d);c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;z2(z,10,0);if(!(a[z>>0]&1)){k=z+1|0;p=k;q=z+8|0}else{k=z+8|0;p=z+1|0;q=k;k=c[k>>2]|0}c[u>>2]=k;c[x>>2]=w;c[v>>2]=0;r=z+4|0;o=c[d>>2]|0;g=c[e>>2]|0;a:while(1){if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;m=1;g=0}else m=0}else{m=1;g=0}l=c[f>>2]|0;do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ed[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(m){n=l;break}else break a;else{c[f>>2]=0;C=17;break}}else C=17;while(0);if((C|0)==17){C=0;if(m){l=0;break}else n=0}m=a[z>>0]|0;d=(m&1)==0;if(d)l=(m&255)>>>1;else l=c[r>>2]|0;if((c[u>>2]|0)==(k+l|0)){if(d){d=(m&255)>>>1;l=(m&255)>>>1}else{l=c[r>>2]|0;d=l}z2(z,d<<1,0);if(!(a[z>>0]&1))d=10;else d=(c[z>>2]&-2)+-1|0;z2(z,d,0);if(!(a[z>>0]&1))k=p;else k=c[q>>2]|0;c[u>>2]=k+l}l=g+12|0;d=c[l>>2]|0;m=g+16|0;if((d|0)==(c[m>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if(Y4(d,t,k,u,v,o,A,w,x,s)|0){l=n;break}d=c[l>>2]|0;if((d|0)==(c[m>>2]|0)){Ed[c[(c[g>>2]|0)+40>>2]&511](g)|0;continue}else{c[l>>2]=d+4;continue}}d=a[A>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[A+4>>2]|0;if((d|0)!=0?(y=c[x>>2]|0,(y-w|0)<160):0){v=c[v>>2]|0;c[x>>2]=y+4;c[y>>2]=v}c[j>>2]=ica(k,c[u>>2]|0,h,t)|0;H7(A,w,c[x>>2]|0,h);if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;g=0;k=1}else k=0}else{g=0;k=1}do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ed[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(k)break;else{C=58;break}else{c[f>>2]=0;C=56;break}}else C=56;while(0);if((C|0)==56?k:0)C=58;if((C|0)==58)c[h>>2]=c[h>>2]|2;c[b>>2]=g;v2(z);v2(A);i=B;return}function Eaa(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=i;i=i+304|0;s=B+200|0;d=B;A=B+4|0;z=B+16|0;u=B+28|0;w=B+32|0;x=B+192|0;v=B+196|0;t=V9(g)|0;a5(A,g,s,d);c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;z2(z,10,0);if(!(a[z>>0]&1)){k=z+1|0;p=k;q=z+8|0}else{k=z+8|0;p=z+1|0;q=k;k=c[k>>2]|0}c[u>>2]=k;c[x>>2]=w;c[v>>2]=0;r=z+4|0;o=c[d>>2]|0;g=c[e>>2]|0;a:while(1){if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;m=1;g=0}else m=0}else{m=1;g=0}l=c[f>>2]|0;do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ed[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(m){n=l;break}else break a;else{c[f>>2]=0;C=17;break}}else C=17;while(0);if((C|0)==17){C=0;if(m){l=0;break}else n=0}m=a[z>>0]|0;d=(m&1)==0;if(d)l=(m&255)>>>1;else l=c[r>>2]|0;if((c[u>>2]|0)==(k+l|0)){if(d){d=(m&255)>>>1;l=(m&255)>>>1}else{l=c[r>>2]|0;d=l}z2(z,d<<1,0);if(!(a[z>>0]&1))d=10;else d=(c[z>>2]&-2)+-1|0;z2(z,d,0);if(!(a[z>>0]&1))k=p;else k=c[q>>2]|0;c[u>>2]=k+l}l=g+12|0;d=c[l>>2]|0;m=g+16|0;if((d|0)==(c[m>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if(Y4(d,t,k,u,v,o,A,w,x,s)|0){l=n;break}d=c[l>>2]|0;if((d|0)==(c[m>>2]|0)){Ed[c[(c[g>>2]|0)+40>>2]&511](g)|0;continue}else{c[l>>2]=d+4;continue}}d=a[A>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[A+4>>2]|0;if((d|0)!=0?(y=c[x>>2]|0,(y-w|0)<160):0){v=c[v>>2]|0;c[x>>2]=y+4;c[y>>2]=v}y=jca(k,c[u>>2]|0,h,t)|0;c[j>>2]=y;c[j+4>>2]=H;H7(A,w,c[x>>2]|0,h);if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;g=0;k=1}else k=0}else{g=0;k=1}do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ed[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(k)break;else{C=58;break}else{c[f>>2]=0;C=56;break}}else C=56;while(0);if((C|0)==56?k:0)C=58;if((C|0)==58)c[h>>2]=c[h>>2]|2;c[b>>2]=g;v2(z);v2(A);i=B;return}function Faa(d,e,f,g,h,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=i;i=i+304|0;t=C+200|0;e=C;B=C+4|0;A=C+16|0;v=C+28|0;x=C+32|0;y=C+192|0;w=C+196|0;u=V9(h)|0;a5(B,h,t,e);c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;z2(A,10,0);if(!(a[A>>0]&1)){l=A+1|0;q=l;r=A+8|0}else{l=A+8|0;q=A+1|0;r=l;l=c[l>>2]|0}c[v>>2]=l;c[y>>2]=x;c[w>>2]=0;s=A+4|0;p=c[e>>2]|0;h=c[f>>2]|0;a:while(1){if(h){e=c[h+12>>2]|0;if((e|0)==(c[h+16>>2]|0))e=Ed[c[(c[h>>2]|0)+36>>2]&511](h)|0;else e=c[e>>2]|0;if((e|0)==-1){c[f>>2]=0;n=1;h=0}else n=0}else{n=1;h=0}m=c[g>>2]|0;do if(m){e=c[m+12>>2]|0;if((e|0)==(c[m+16>>2]|0))e=Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0;else e=c[e>>2]|0;if((e|0)!=-1)if(n){o=m;break}else break a;else{c[g>>2]=0;D=17;break}}else D=17;while(0);if((D|0)==17){D=0;if(n){m=0;break}else o=0}n=a[A>>0]|0;e=(n&1)==0;if(e)m=(n&255)>>>1;else m=c[s>>2]|0;if((c[v>>2]|0)==(l+m|0)){if(e){e=(n&255)>>>1;m=(n&255)>>>1}else{m=c[s>>2]|0;e=m}z2(A,e<<1,0);if(!(a[A>>0]&1))e=10;else e=(c[A>>2]&-2)+-1|0;z2(A,e,0);if(!(a[A>>0]&1))l=q;else l=c[r>>2]|0;c[v>>2]=l+m}m=h+12|0;e=c[m>>2]|0;n=h+16|0;if((e|0)==(c[n>>2]|0))e=Ed[c[(c[h>>2]|0)+36>>2]&511](h)|0;else e=c[e>>2]|0;if(Y4(e,u,l,v,w,p,B,x,y,t)|0){m=o;break}e=c[m>>2]|0;if((e|0)==(c[n>>2]|0)){Ed[c[(c[h>>2]|0)+40>>2]&511](h)|0;continue}else{c[m>>2]=e+4;continue}}e=a[B>>0]|0;if(!(e&1))e=(e&255)>>>1;else e=c[B+4>>2]|0;if((e|0)!=0?(z=c[y>>2]|0,(z-x|0)<160):0){w=c[w>>2]|0;c[y>>2]=z+4;c[z>>2]=w}b[k>>1]=kca(l,c[v>>2]|0,j,u)|0;H7(B,x,c[y>>2]|0,j);if(h){e=c[h+12>>2]|0;if((e|0)==(c[h+16>>2]|0))e=Ed[c[(c[h>>2]|0)+36>>2]&511](h)|0;else e=c[e>>2]|0;if((e|0)==-1){c[f>>2]=0;h=0;l=1}else l=0}else{h=0;l=1}do if(m){e=c[m+12>>2]|0;if((e|0)==(c[m+16>>2]|0))e=Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0;else e=c[e>>2]|0;if((e|0)!=-1)if(l)break;else{D=58;break}else{c[g>>2]=0;D=56;break}}else D=56;while(0);if((D|0)==56?l:0)D=58;if((D|0)==58)c[j>>2]=c[j>>2]|2;c[d>>2]=h;v2(A);v2(B);i=C;return}function Gaa(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=i;i=i+304|0;s=B+200|0;d=B;A=B+4|0;z=B+16|0;u=B+28|0;w=B+32|0;x=B+192|0;v=B+196|0;t=V9(g)|0;a5(A,g,s,d);c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;z2(z,10,0);if(!(a[z>>0]&1)){k=z+1|0;p=k;q=z+8|0}else{k=z+8|0;p=z+1|0;q=k;k=c[k>>2]|0}c[u>>2]=k;c[x>>2]=w;c[v>>2]=0;r=z+4|0;o=c[d>>2]|0;g=c[e>>2]|0;a:while(1){if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;m=1;g=0}else m=0}else{m=1;g=0}l=c[f>>2]|0;do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ed[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(m){n=l;break}else break a;else{c[f>>2]=0;C=17;break}}else C=17;while(0);if((C|0)==17){C=0;if(m){l=0;break}else n=0}m=a[z>>0]|0;d=(m&1)==0;if(d)l=(m&255)>>>1;else l=c[r>>2]|0;if((c[u>>2]|0)==(k+l|0)){if(d){d=(m&255)>>>1;l=(m&255)>>>1}else{l=c[r>>2]|0;d=l}z2(z,d<<1,0);if(!(a[z>>0]&1))d=10;else d=(c[z>>2]&-2)+-1|0;z2(z,d,0);if(!(a[z>>0]&1))k=p;else k=c[q>>2]|0;c[u>>2]=k+l}l=g+12|0;d=c[l>>2]|0;m=g+16|0;if((d|0)==(c[m>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if(Y4(d,t,k,u,v,o,A,w,x,s)|0){l=n;break}d=c[l>>2]|0;if((d|0)==(c[m>>2]|0)){Ed[c[(c[g>>2]|0)+40>>2]&511](g)|0;continue}else{c[l>>2]=d+4;continue}}d=a[A>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[A+4>>2]|0;if((d|0)!=0?(y=c[x>>2]|0,(y-w|0)<160):0){v=c[v>>2]|0;c[x>>2]=y+4;c[y>>2]=v}c[j>>2]=lca(k,c[u>>2]|0,h,t)|0;H7(A,w,c[x>>2]|0,h);if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;g=0;k=1}else k=0}else{g=0;k=1}do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ed[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(k)break;else{C=58;break}else{c[f>>2]=0;C=56;break}}else C=56;while(0);if((C|0)==56?k:0)C=58;if((C|0)==58)c[h>>2]=c[h>>2]|2;c[b>>2]=g;v2(z);v2(A);i=B;return}function Haa(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=i;i=i+304|0;s=B+200|0;d=B;A=B+4|0;z=B+16|0;u=B+28|0;w=B+32|0;x=B+192|0;v=B+196|0;t=V9(g)|0;a5(A,g,s,d);c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;z2(z,10,0);if(!(a[z>>0]&1)){k=z+1|0;p=k;q=z+8|0}else{k=z+8|0;p=z+1|0;q=k;k=c[k>>2]|0}c[u>>2]=k;c[x>>2]=w;c[v>>2]=0;r=z+4|0;o=c[d>>2]|0;g=c[e>>2]|0;a:while(1){if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;m=1;g=0}else m=0}else{m=1;g=0}l=c[f>>2]|0;do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ed[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(m){n=l;break}else break a;else{c[f>>2]=0;C=17;break}}else C=17;while(0);if((C|0)==17){C=0;if(m){l=0;break}else n=0}m=a[z>>0]|0;d=(m&1)==0;if(d)l=(m&255)>>>1;else l=c[r>>2]|0;if((c[u>>2]|0)==(k+l|0)){if(d){d=(m&255)>>>1;l=(m&255)>>>1}else{l=c[r>>2]|0;d=l}z2(z,d<<1,0);if(!(a[z>>0]&1))d=10;else d=(c[z>>2]&-2)+-1|0;z2(z,d,0);if(!(a[z>>0]&1))k=p;else k=c[q>>2]|0;c[u>>2]=k+l}l=g+12|0;d=c[l>>2]|0;m=g+16|0;if((d|0)==(c[m>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if(Y4(d,t,k,u,v,o,A,w,x,s)|0){l=n;break}d=c[l>>2]|0;if((d|0)==(c[m>>2]|0)){Ed[c[(c[g>>2]|0)+40>>2]&511](g)|0;continue}else{c[l>>2]=d+4;continue}}d=a[A>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[A+4>>2]|0;if((d|0)!=0?(y=c[x>>2]|0,(y-w|0)<160):0){v=c[v>>2]|0;c[x>>2]=y+4;c[y>>2]=v}c[j>>2]=mca(k,c[u>>2]|0,h,t)|0;H7(A,w,c[x>>2]|0,h);if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;g=0;k=1}else k=0}else{g=0;k=1}do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ed[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(k)break;else{C=58;break}else{c[f>>2]=0;C=56;break}}else C=56;while(0);if((C|0)==56?k:0)C=58;if((C|0)==58)c[h>>2]=c[h>>2]|2;c[b>>2]=g;v2(z);v2(A);i=B;return}function Iaa(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=i;i=i+304|0;s=B+200|0;d=B;A=B+4|0;z=B+16|0;u=B+28|0;w=B+32|0;x=B+192|0;v=B+196|0;t=V9(g)|0;a5(A,g,s,d);c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;z2(z,10,0);if(!(a[z>>0]&1)){k=z+1|0;p=k;q=z+8|0}else{k=z+8|0;p=z+1|0;q=k;k=c[k>>2]|0}c[u>>2]=k;c[x>>2]=w;c[v>>2]=0;r=z+4|0;o=c[d>>2]|0;g=c[e>>2]|0;a:while(1){if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;m=1;g=0}else m=0}else{m=1;g=0}l=c[f>>2]|0;do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ed[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(m){n=l;break}else break a;else{c[f>>2]=0;C=17;break}}else C=17;while(0);if((C|0)==17){C=0;if(m){l=0;break}else n=0}m=a[z>>0]|0;d=(m&1)==0;if(d)l=(m&255)>>>1;else l=c[r>>2]|0;if((c[u>>2]|0)==(k+l|0)){if(d){d=(m&255)>>>1;l=(m&255)>>>1}else{l=c[r>>2]|0;d=l}z2(z,d<<1,0);if(!(a[z>>0]&1))d=10;else d=(c[z>>2]&-2)+-1|0;z2(z,d,0);if(!(a[z>>0]&1))k=p;else k=c[q>>2]|0;c[u>>2]=k+l}l=g+12|0;d=c[l>>2]|0;m=g+16|0;if((d|0)==(c[m>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if(Y4(d,t,k,u,v,o,A,w,x,s)|0){l=n;break}d=c[l>>2]|0;if((d|0)==(c[m>>2]|0)){Ed[c[(c[g>>2]|0)+40>>2]&511](g)|0;continue}else{c[l>>2]=d+4;continue}}d=a[A>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[A+4>>2]|0;if((d|0)!=0?(y=c[x>>2]|0,(y-w|0)<160):0){v=c[v>>2]|0;c[x>>2]=y+4;c[y>>2]=v}y=nca(k,c[u>>2]|0,h,t)|0;c[j>>2]=y;c[j+4>>2]=H;H7(A,w,c[x>>2]|0,h);if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;g=0;k=1}else k=0}else{g=0;k=1}do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ed[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(k)break;else{C=58;break}else{c[f>>2]=0;C=56;break}}else C=56;while(0);if((C|0)==56?k:0)C=58;if((C|0)==58)c[h>>2]=c[h>>2]|2;c[b>>2]=g;v2(z);v2(A);i=B;return}function Jaa(b,d,e,f,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;E=i;i=i+352|0;u=E+176|0;d=E+332|0;m=E+328|0;D=E+316|0;C=E+304|0;w=E+168|0;y=E+8|0;z=E+4|0;x=E;A=E+337|0;v=E+336|0;b5(D,h,u,d,m);c[C+0>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;z2(C,10,0);if(!(a[C>>0]&1)){l=C+1|0;r=l;s=C+8|0}else{l=C+8|0;r=C+1|0;s=l;l=c[l>>2]|0}c[w>>2]=l;c[z>>2]=y;c[x>>2]=0;a[A>>0]=1;a[v>>0]=69;t=C+4|0;q=c[d>>2]|0;p=c[m>>2]|0;h=c[e>>2]|0;a:while(1){if(h){d=c[h+12>>2]|0;if((d|0)==(c[h+16>>2]|0))d=Ed[c[(c[h>>2]|0)+36>>2]&511](h)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;n=1;h=0}else n=0}else{n=1;h=0}m=c[f>>2]|0;do if(m){d=c[m+12>>2]|0;if((d|0)==(c[m+16>>2]|0))d=Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(n)break;else break a;else{c[f>>2]=0;F=17;break}}else F=17;while(0);if((F|0)==17){F=0;if(n){m=0;break}else m=0}o=a[C>>0]|0;d=(o&1)==0;if(d)n=(o&255)>>>1;else n=c[t>>2]|0;if((c[w>>2]|0)==(l+n|0)){if(d){d=(o&255)>>>1;n=(o&255)>>>1}else{n=c[t>>2]|0;d=n}z2(C,d<<1,0);if(!(a[C>>0]&1))d=10;else d=(c[C>>2]&-2)+-1|0;z2(C,d,0);if(!(a[C>>0]&1))l=r;else l=c[s>>2]|0;c[w>>2]=l+n}o=h+12|0;d=c[o>>2]|0;n=h+16|0;if((d|0)==(c[n>>2]|0))d=Ed[c[(c[h>>2]|0)+36>>2]&511](h)|0;else d=c[d>>2]|0;if(c5(d,A,v,l,w,q,p,D,y,z,x,u)|0)break;d=c[o>>2]|0;if((d|0)==(c[n>>2]|0)){Ed[c[(c[h>>2]|0)+40>>2]&511](h)|0;continue}else{c[o>>2]=d+4;continue}}d=a[D>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[D+4>>2]|0;if(!((d|0)==0|(a[A>>0]|0)==0)?(B=c[z>>2]|0,(B-y|0)<160):0){A=c[x>>2]|0;c[z>>2]=B+4;c[B>>2]=A}g[k>>2]=+oca(l,c[w>>2]|0,j);H7(D,y,c[z>>2]|0,j);if(h){d=c[h+12>>2]|0;if((d|0)==(c[h+16>>2]|0))d=Ed[c[(c[h>>2]|0)+36>>2]&511](h)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;h=0;l=1}else l=0}else{h=0;l=1}do if(m){d=c[m+12>>2]|0;if((d|0)==(c[m+16>>2]|0))d=Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(l)break;else{F=58;break}else{c[f>>2]=0;F=56;break}}else F=56;while(0);if((F|0)==56?l:0)F=58;if((F|0)==58)c[j>>2]=c[j>>2]|2;c[b>>2]=h;v2(C);v2(D);i=E;return}function Kaa(b,d,e,f,g,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;E=i;i=i+352|0;u=E+176|0;d=E+332|0;m=E+328|0;D=E+316|0;C=E+304|0;w=E+168|0;y=E+8|0;z=E+4|0;x=E;A=E+337|0;v=E+336|0;b5(D,g,u,d,m);c[C+0>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;z2(C,10,0);if(!(a[C>>0]&1)){l=C+1|0;r=l;s=C+8|0}else{l=C+8|0;r=C+1|0;s=l;l=c[l>>2]|0}c[w>>2]=l;c[z>>2]=y;c[x>>2]=0;a[A>>0]=1;a[v>>0]=69;t=C+4|0;q=c[d>>2]|0;p=c[m>>2]|0;g=c[e>>2]|0;a:while(1){if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;n=1;g=0}else n=0}else{n=1;g=0}m=c[f>>2]|0;do if(m){d=c[m+12>>2]|0;if((d|0)==(c[m+16>>2]|0))d=Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(n)break;else break a;else{c[f>>2]=0;F=17;break}}else F=17;while(0);if((F|0)==17){F=0;if(n){m=0;break}else m=0}o=a[C>>0]|0;d=(o&1)==0;if(d)n=(o&255)>>>1;else n=c[t>>2]|0;if((c[w>>2]|0)==(l+n|0)){if(d){d=(o&255)>>>1;n=(o&255)>>>1}else{n=c[t>>2]|0;d=n}z2(C,d<<1,0);if(!(a[C>>0]&1))d=10;else d=(c[C>>2]&-2)+-1|0;z2(C,d,0);if(!(a[C>>0]&1))l=r;else l=c[s>>2]|0;c[w>>2]=l+n}o=g+12|0;d=c[o>>2]|0;n=g+16|0;if((d|0)==(c[n>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if(c5(d,A,v,l,w,q,p,D,y,z,x,u)|0)break;d=c[o>>2]|0;if((d|0)==(c[n>>2]|0)){Ed[c[(c[g>>2]|0)+40>>2]&511](g)|0;continue}else{c[o>>2]=d+4;continue}}d=a[D>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[D+4>>2]|0;if(!((d|0)==0|(a[A>>0]|0)==0)?(B=c[z>>2]|0,(B-y|0)<160):0){A=c[x>>2]|0;c[z>>2]=B+4;c[B>>2]=A}h[k>>3]=+pca(l,c[w>>2]|0,j);H7(D,y,c[z>>2]|0,j);if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;g=0;l=1}else l=0}else{g=0;l=1}do if(m){d=c[m+12>>2]|0;if((d|0)==(c[m+16>>2]|0))d=Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(l)break;else{F=58;break}else{c[f>>2]=0;F=56;break}}else F=56;while(0);if((F|0)==56?l:0)F=58;if((F|0)==58)c[j>>2]=c[j>>2]|2;c[b>>2]=g;v2(C);v2(D);i=E;return}function Laa(b,d,e,f,g,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;E=i;i=i+352|0;u=E+176|0;d=E+332|0;m=E+328|0;D=E+316|0;C=E+304|0;w=E+168|0;y=E+8|0;z=E+4|0;x=E;A=E+337|0;v=E+336|0;b5(D,g,u,d,m);c[C+0>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;z2(C,10,0);if(!(a[C>>0]&1)){l=C+1|0;r=l;s=C+8|0}else{l=C+8|0;r=C+1|0;s=l;l=c[l>>2]|0}c[w>>2]=l;c[z>>2]=y;c[x>>2]=0;a[A>>0]=1;a[v>>0]=69;t=C+4|0;q=c[d>>2]|0;p=c[m>>2]|0;g=c[e>>2]|0;a:while(1){if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;n=1;g=0}else n=0}else{n=1;g=0}m=c[f>>2]|0;do if(m){d=c[m+12>>2]|0;if((d|0)==(c[m+16>>2]|0))d=Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(n)break;else break a;else{c[f>>2]=0;F=17;break}}else F=17;while(0);if((F|0)==17){F=0;if(n){m=0;break}else m=0}o=a[C>>0]|0;d=(o&1)==0;if(d)n=(o&255)>>>1;else n=c[t>>2]|0;if((c[w>>2]|0)==(l+n|0)){if(d){d=(o&255)>>>1;n=(o&255)>>>1}else{n=c[t>>2]|0;d=n}z2(C,d<<1,0);if(!(a[C>>0]&1))d=10;else d=(c[C>>2]&-2)+-1|0;z2(C,d,0);if(!(a[C>>0]&1))l=r;else l=c[s>>2]|0;c[w>>2]=l+n}o=g+12|0;d=c[o>>2]|0;n=g+16|0;if((d|0)==(c[n>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if(c5(d,A,v,l,w,q,p,D,y,z,x,u)|0)break;d=c[o>>2]|0;if((d|0)==(c[n>>2]|0)){Ed[c[(c[g>>2]|0)+40>>2]&511](g)|0;continue}else{c[o>>2]=d+4;continue}}d=a[D>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[D+4>>2]|0;if(!((d|0)==0|(a[A>>0]|0)==0)?(B=c[z>>2]|0,(B-y|0)<160):0){A=c[x>>2]|0;c[z>>2]=B+4;c[B>>2]=A}h[k>>3]=+qca(l,c[w>>2]|0,j);H7(D,y,c[z>>2]|0,j);if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;g=0;l=1}else l=0}else{g=0;l=1}do if(m){d=c[m+12>>2]|0;if((d|0)==(c[m+16>>2]|0))d=Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(l)break;else{F=58;break}else{c[f>>2]=0;F=56;break}}else F=56;while(0);if((F|0)==56?l:0)F=58;if((F|0)==58)c[j>>2]=c[j>>2]|2;c[b>>2]=g;v2(C);v2(D);i=E;return}function Maa(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;i=i+16|0;h=g;c[h>>2]=f;f=mc(d|0)|0;d=Zea(a,b,e,h)|0;if(f)mc(f|0)|0;i=g;return d|0}function Naa(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;c[g>>2]=e;e=mc(b|0)|0;b=Pca(a,d,g)|0;if(e)mc(e|0)|0;i=f;return b|0}function Oaa(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+16|0;n=p;o=c[d>>2]|0;a:do if(!o)c[b>>2]=0;else{q=e;l=g-q>>2;m=h+12|0;k=c[m>>2]|0;l=(k|0)>(l|0)?k-l|0:0;k=f;q=k-q|0;h=q>>2;if((q|0)>0?(Hd[c[(c[o>>2]|0)+48>>2]&255](o,e,h)|0)!=(h|0):0){c[d>>2]=0;c[b>>2]=0;break}do if((l|0)>0){J2(n,l,j);if(!(a[n>>0]&1))h=n+4|0;else h=c[n+8>>2]|0;if((Hd[c[(c[o>>2]|0)+48>>2]&255](o,h,l)|0)==(l|0)){L2(n);break}else{c[d>>2]=0;c[b>>2]=0;L2(n);break a}}while(0);q=g-k|0;g=q>>2;if((q|0)>0?(Hd[c[(c[o>>2]|0)+48>>2]&255](o,f,g)|0)!=(g|0):0){c[d>>2]=0;c[b>>2]=0;break}c[m>>2]=0;c[b>>2]=o}while(0);i=p;return}function Paa(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=c[a>>2]|0;do if(i){if((c[i+12>>2]|0)==(c[i+16>>2]|0))if((Ed[c[(c[i>>2]|0)+36>>2]&511](i)|0)==-1){c[a>>2]=0;i=0;break}else{i=c[a>>2]|0;break}}else i=0;while(0);j=(i|0)==0;i=c[e>>2]|0;do if(i){if((c[i+12>>2]|0)==(c[i+16>>2]|0)?(Ed[c[(c[i>>2]|0)+36>>2]&511](i)|0)==-1:0){c[e>>2]=0;q=11;break}if(j)q=13;else q=12}else q=11;while(0);if((q|0)==11)if(j)q=12;else{i=0;q=13}a:do if((q|0)==12){c[f>>2]=c[f>>2]|6;i=0}else if((q|0)==13){j=c[a>>2]|0;k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))j=Ed[c[(c[j>>2]|0)+36>>2]&511](j)|0;else j=d[k>>0]|0;k=j&255;if(k<<24>>24>-1?(p=g+8|0,(b[(c[p>>2]|0)+(j<<24>>24<<1)>>1]&2048)!=0):0){m=(Hd[c[(c[g>>2]|0)+36>>2]&255](g,k,0)|0)<<24>>24;l=c[a>>2]|0;j=l+12|0;k=c[j>>2]|0;if((k|0)==(c[l+16>>2]|0)){Ed[c[(c[l>>2]|0)+40>>2]&511](l)|0;l=h;n=i;h=i;i=m}else{c[j>>2]=k+1;l=h;n=i;h=i;i=m}while(1){i=i+-48|0;o=l+-1|0;j=c[a>>2]|0;do if(j){if((c[j+12>>2]|0)==(c[j+16>>2]|0))if((Ed[c[(c[j>>2]|0)+36>>2]&511](j)|0)==-1){c[a>>2]=0;j=0;break}else{j=c[a>>2]|0;break}}else j=0;while(0);l=(j|0)==0;if(h)if((c[h+12>>2]|0)==(c[h+16>>2]|0))if((Ed[c[(c[h>>2]|0)+36>>2]&511](h)|0)==-1){c[e>>2]=0;k=0;h=0}else{k=n;h=n}else k=n;else{k=n;h=0}j=c[a>>2]|0;if(!((l^(h|0)==0)&(o|0)>0))break;l=c[j+12>>2]|0;if((l|0)==(c[j+16>>2]|0))j=Ed[c[(c[j>>2]|0)+36>>2]&511](j)|0;else j=d[l>>0]|0;l=j&255;if(l<<24>>24<=-1)break a;if(!(b[(c[p>>2]|0)+(j<<24>>24<<1)>>1]&2048))break a;i=((Hd[c[(c[g>>2]|0)+36>>2]&255](g,l,0)|0)<<24>>24)+(i*10|0)|0;l=c[a>>2]|0;j=l+12|0;m=c[j>>2]|0;if((m|0)==(c[l+16>>2]|0)){Ed[c[(c[l>>2]|0)+40>>2]&511](l)|0;l=o;n=k;continue}else{c[j>>2]=m+1;l=o;n=k;continue}}do if(j){if((c[j+12>>2]|0)==(c[j+16>>2]|0))if((Ed[c[(c[j>>2]|0)+36>>2]&511](j)|0)==-1){c[a>>2]=0;j=0;break}else{j=c[a>>2]|0;break}}else j=0;while(0);j=(j|0)==0;do if(k){if((c[k+12>>2]|0)==(c[k+16>>2]|0)?(Ed[c[(c[k>>2]|0)+36>>2]&511](k)|0)==-1:0){c[e>>2]=0;q=50;break}if(j)break a}else q=50;while(0);if((q|0)==50)if(!j)break;c[f>>2]=c[f>>2]|2;break}c[f>>2]=c[f>>2]|4;i=0}while(0);return i|0}function Qaa(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=c[a>>2]|0;do if(g){h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else g=c[h>>2]|0;if((g|0)==-1){c[a>>2]=0;i=1;break}else{i=(c[a>>2]|0)==0;break}}else i=1;while(0);h=c[b>>2]|0;do if(h){g=c[h+12>>2]|0;if((g|0)==(c[h+16>>2]|0))g=Ed[c[(c[h>>2]|0)+36>>2]&511](h)|0;else g=c[g>>2]|0;if((g|0)!=-1)if(i){o=17;break}else{o=16;break}else{c[b>>2]=0;o=14;break}}else o=14;while(0);if((o|0)==14)if(i)o=16;else{h=0;o=17}a:do if((o|0)==16){c[d>>2]=c[d>>2]|6;g=0}else if((o|0)==17){g=c[a>>2]|0;i=c[g+12>>2]|0;if((i|0)==(c[g+16>>2]|0))g=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else g=c[i>>2]|0;if(!(Hd[c[(c[e>>2]|0)+12>>2]&255](e,2048,g)|0)){c[d>>2]=c[d>>2]|4;g=0;break}g=(Hd[c[(c[e>>2]|0)+52>>2]&255](e,g,0)|0)<<24>>24;i=c[a>>2]|0;j=i+12|0;k=c[j>>2]|0;if((k|0)==(c[i+16>>2]|0)){Ed[c[(c[i>>2]|0)+40>>2]&511](i)|0;j=f;m=h;i=h}else{c[j>>2]=k+4;j=f;m=h;i=h}while(1){g=g+-48|0;n=j+-1|0;j=c[a>>2]|0;do if(j){h=c[j+12>>2]|0;if((h|0)==(c[j+16>>2]|0))h=Ed[c[(c[j>>2]|0)+36>>2]&511](j)|0;else h=c[h>>2]|0;if((h|0)==-1){c[a>>2]=0;k=1;break}else{k=(c[a>>2]|0)==0;break}}else k=1;while(0);do if(i){j=c[i+12>>2]|0;if((j|0)==(c[i+16>>2]|0))h=Ed[c[(c[i>>2]|0)+36>>2]&511](i)|0;else h=c[j>>2]|0;if((h|0)==-1){c[b>>2]=0;l=0;f=0;j=1;break}else{l=m;f=m;j=(m|0)==0;break}}else{l=m;f=0;j=1}while(0);i=c[a>>2]|0;if(!((k^j)&(n|0)>0)){j=l;break}j=c[i+12>>2]|0;if((j|0)==(c[i+16>>2]|0))h=Ed[c[(c[i>>2]|0)+36>>2]&511](i)|0;else h=c[j>>2]|0;if(!(Hd[c[(c[e>>2]|0)+12>>2]&255](e,2048,h)|0))break a;g=((Hd[c[(c[e>>2]|0)+52>>2]&255](e,h,0)|0)<<24>>24)+(g*10|0)|0;j=c[a>>2]|0;h=j+12|0;i=c[h>>2]|0;if((i|0)==(c[j+16>>2]|0)){Ed[c[(c[j>>2]|0)+40>>2]&511](j)|0;j=n;m=l;i=f;continue}else{c[h>>2]=i+4;j=n;m=l;i=f;continue}}do if(i){h=c[i+12>>2]|0;if((h|0)==(c[i+16>>2]|0))h=Ed[c[(c[i>>2]|0)+36>>2]&511](i)|0;else h=c[h>>2]|0;if((h|0)==-1){c[a>>2]=0;i=1;break}else{i=(c[a>>2]|0)==0;break}}else i=1;while(0);do if(j){h=c[j+12>>2]|0;if((h|0)==(c[j+16>>2]|0))h=Ed[c[(c[j>>2]|0)+36>>2]&511](j)|0;else h=c[h>>2]|0;if((h|0)!=-1)if(i)break a;else break;else{c[b>>2]=0;o=60;break}}else o=60;while(0);if((o|0)==60)if(!i)break;c[d>>2]=c[d>>2]|2}while(0);return g|0}function Raa(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=a+4|0;f=(c[h>>2]|0)!=318;e=c[a>>2]|0;i=e;g=(c[d>>2]|0)-i|0;g=g>>>0<2147483647?g<<1:-1;i=(c[b>>2]|0)-i|0;e=tea(f?e:0,g)|0;if(!e)lea();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Bd[c[h>>2]&511](f);e=c[a>>2]|0}}else c[a>>2]=e;c[h>>2]=296;c[b>>2]=e+i;c[d>>2]=(c[a>>2]|0)+g;return}function Saa(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=a+4|0;f=(c[h>>2]|0)!=318;e=c[a>>2]|0;i=e;g=(c[d>>2]|0)-i|0;g=g>>>0<2147483647?g<<1:-1;i=(c[b>>2]|0)-i>>2;e=tea(f?e:0,g)|0;if(!e)lea();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Bd[c[h>>2]&511](f);e=c[a>>2]|0}}else c[a>>2]=e;c[h>>2]=296;c[b>>2]=e+(i<<2);c[d>>2]=(c[a>>2]|0)+(g>>>2<<2);return}function Taa(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;h=d;f=a[b>>0]|0;if(!(f&1)){g=10;k=(f&255)>>>1}else{f=c[b>>2]|0;g=(f&-2)+-1|0;k=c[b+4>>2]|0;f=f&255}j=e-h|0;do if((e|0)!=(d|0)){if((g-k|0)>>>0>>0){G2(b,g,k+j-g|0,k,k,0,0);f=a[b>>0]|0}if(!(f&1))i=b+1|0;else i=c[b+8>>2]|0;h=e+(k-h)|0;f=d;g=i+k|0;while(1){a[g>>0]=a[f>>0]|0;f=f+1|0;if((f|0)==(e|0))break;else g=g+1|0}a[i+h>>0]=0;f=k+j|0;if(!(a[b>>0]&1)){a[b>>0]=f<<1;break}else{c[b+4>>2]=f;break}}while(0);return b|0}function Uaa(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=a+4|0;f=(c[h>>2]|0)!=318;e=c[a>>2]|0;i=e;g=(c[d>>2]|0)-i|0;g=g>>>0<2147483647?g<<1:-1;i=(c[b>>2]|0)-i>>2;e=tea(f?e:0,g)|0;if(!e)lea();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Bd[c[h>>2]&511](f);e=c[a>>2]|0}}else c[a>>2]=e;c[h>>2]=296;c[b>>2]=e+(i<<2);c[d>>2]=(c[a>>2]|0)+(g>>>2<<2);return}function Vaa(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;i=d;f=a[b>>0]|0;if(!(f&1)){g=1;k=(f&255)>>>1}else{f=c[b>>2]|0;g=(f&-2)+-1|0;k=c[b+4>>2]|0;f=f&255}j=e-i>>2;do if(j){if((g-k|0)>>>0>>0){R2(b,g,k+j-g|0,k,k,0,0);f=a[b>>0]|0}if(!(f&1))h=b+4|0;else h=c[b+8>>2]|0;f=h+(k<<2)|0;if((d|0)!=(e|0)){g=k+((e+-4-i|0)>>>2)+1|0;while(1){c[f>>2]=c[d>>2];d=d+4|0;if((d|0)==(e|0))break;else f=f+4|0}f=h+(g<<2)|0}c[f>>2]=0;f=k+j|0;if(!(a[b>>0]&1)){a[b>>0]=f<<1;break}else{c[b+4>>2]=f;break}}while(0);return b|0}function Waa(b,d){b=b|0;d=d|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a[b+128>>0]=0;if(d){rca(b,d);sca(b,d)}return}function Xaa(a,b){a=a|0;b=b|0;l8(a,b,v8(356104)|0);return}function Yaa(a,b){a=a|0;b=b|0;l8(a,b,v8(356144)|0);return}function Zaa(a,b){a=a|0;b=b|0;l8(a,b,v8(357712)|0);return}function _aa(a,b){a=a|0;b=b|0;l8(a,b,v8(357704)|0);return}function $aa(a,b){a=a|0;b=b|0;l8(a,b,v8(357776)|0);return}function aba(a,b){a=a|0;b=b|0;l8(a,b,v8(357784)|0);return}function bba(a,b){a=a|0;b=b|0;l8(a,b,v8(357840)|0);return}function cba(a,b){a=a|0;b=b|0;l8(a,b,v8(357848)|0);return}function dba(a,b){a=a|0;b=b|0;l8(a,b,v8(357856)|0);return}function eba(a,b){a=a|0;b=b|0;l8(a,b,v8(357864)|0);return}function fba(a,b){a=a|0;b=b|0;l8(a,b,v8(356216)|0);return}function gba(a,b){a=a|0;b=b|0;l8(a,b,v8(356336)|0);return}function hba(a,b){a=a|0;b=b|0;l8(a,b,v8(356400)|0);return}function iba(a,b){a=a|0;b=b|0;l8(a,b,v8(356496)|0);return}function jba(a,b){a=a|0;b=b|0;l8(a,b,v8(357088)|0);return}function kba(a,b){a=a|0;b=b|0;l8(a,b,v8(357152)|0);return}function lba(a,b){a=a|0;b=b|0;l8(a,b,v8(357216)|0);return}function mba(a,b){a=a|0;b=b|0;l8(a,b,v8(357280)|0);return}function nba(a,b){a=a|0;b=b|0;l8(a,b,v8(357320)|0);return}function oba(a,b){a=a|0;b=b|0;l8(a,b,v8(357400)|0);return}function pba(a,b){a=a|0;b=b|0;l8(a,b,v8(357456)|0);return}function qba(a,b){a=a|0;b=b|0;l8(a,b,v8(357504)|0);return}function rba(a,b){a=a|0;b=b|0;l8(a,b,v8(356608)|0);return}function sba(a,b){a=a|0;b=b|0;l8(a,b,v8(356760)|0);return}function tba(a,b){a=a|0;b=b|0;l8(a,b,v8(356992)|0);return}function uba(a,b){a=a|0;b=b|0;l8(a,b,v8(357024)|0);return}function vba(a,b){a=a|0;b=b|0;l8(a,b,v8(357544)|0);return}function wba(a,b){a=a|0;b=b|0;l8(a,b,v8(357584)|0);return}function xba(b){b=b|0;var d=0,e=0,f=0;d=c[b>>2]|0;do if(d){e=b+4|0;f=c[e>>2]|0;if((f|0)!=(d|0))c[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);if((b+16|0)==(d|0)){a[b+128>>0]=0;break}else{nda(d);break}}while(0);return}function yba(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=a+4|0;e=c[d>>2]|0;g=c[a>>2]|0;h=e-g>>2;if(h>>>0>=b>>>0){if(h>>>0>b>>>0?(f=g+(b<<2)|0,(e|0)!=(f|0)):0)c[d>>2]=e+(~((e+-4-f|0)>>>2)<<2)}else tca(a,b-h|0);return}function zba(a,b){a=a|0;b=b|0;var d=0;d=c[a+8>>2]|0;if((c[a+12>>2]|0)-d>>2>>>0>b>>>0)d=(c[d+(b<<2)>>2]|0)!=0;else d=0;return d|0}function Aba(a){a=a|0;var b=0,e=0;e=a+4|0;b=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;e=e+4|0;e=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a=(c[a>>2]|0)+(e>>1)|0;if(e&1)b=c[(c[a>>2]|0)+b>>2]|0;Bd[b&511](a);return}function Bba(d,f,g,h,i,j,k,l){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0;c[g>>2]=d;c[j>>2]=h;if(l&2)if((i-h|0)<3)d=1;else{c[j>>2]=h+1;a[h>>0]=-17;m=c[j>>2]|0;c[j>>2]=m+1;a[m>>0]=-69;m=c[j>>2]|0;c[j>>2]=m+1;a[m>>0]=-65;m=4}else m=4;a:do if((m|0)==4){n=f;d=c[g>>2]|0;if(d>>>0>>0)while(1){l=b[d>>1]|0;m=l&65535;if(m>>>0>k>>>0){d=2;break a}do if((l&65535)<128){d=c[j>>2]|0;if((i-d|0)<1){d=1;break a}c[j>>2]=d+1;a[d>>0]=l}else{if((l&65535)<2048){d=c[j>>2]|0;if((i-d|0)<2){d=1;break a}c[j>>2]=d+1;a[d>>0]=m>>>6|192;h=c[j>>2]|0;c[j>>2]=h+1;a[h>>0]=m&63|128;break}if((l&65535)<55296){d=c[j>>2]|0;if((i-d|0)<3){d=1;break a}c[j>>2]=d+1;a[d>>0]=m>>>12|224;h=c[j>>2]|0;c[j>>2]=h+1;a[h>>0]=m>>>6&63|128;h=c[j>>2]|0;c[j>>2]=h+1;a[h>>0]=m&63|128;break}if((l&65535)>=56320){if((l&65535)<57344){d=2;break a}d=c[j>>2]|0;if((i-d|0)<3){d=1;break a}c[j>>2]=d+1;a[d>>0]=m>>>12|224;h=c[j>>2]|0;c[j>>2]=h+1;a[h>>0]=m>>>6&63|128;h=c[j>>2]|0;c[j>>2]=h+1;a[h>>0]=m&63|128;break}if((n-d|0)<4){d=1;break a}d=d+2|0;l=e[d>>1]|0;if((l&64512|0)!=56320){d=2;break a}if((i-(c[j>>2]|0)|0)<4){d=1;break a}h=m&960;if(((h<<10)+65536|m<<10&64512|l&1023)>>>0>k>>>0){d=2;break a}c[g>>2]=d;d=(h>>>6)+1|0;h=c[j>>2]|0;c[j>>2]=h+1;a[h>>0]=d>>>2|240;h=c[j>>2]|0;c[j>>2]=h+1;a[h>>0]=m>>>2&15|d<<4&48|128;h=c[j>>2]|0;c[j>>2]=h+1;a[h>>0]=m<<4&48|l>>>6&15|128;h=c[j>>2]|0;c[j>>2]=h+1;a[h>>0]=l&63|128}while(0);d=(c[g>>2]|0)+2|0;c[g>>2]=d;if(d>>>0>=f>>>0){d=0;break}}else d=0}while(0);return d|0}function Cba(e,f,g,h,i,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0;c[g>>2]=e;c[j>>2]=h;e=c[g>>2]|0;if(((((l&4|0)!=0?(f-e|0)>2:0)?(a[e>>0]|0)==-17:0)?(a[e+1>>0]|0)==-69:0)?(a[e+2>>0]|0)==-65:0){e=e+3|0;c[g>>2]=e}a:do if(e>>>0>>0){o=f;p=i;q=c[j>>2]|0;while(1){if(q>>>0>=i>>>0){r=40;break a}h=a[e>>0]|0;m=h&255;if(m>>>0>k>>>0){e=2;break a}do if(h<<24>>24>-1){b[q>>1]=h&255;c[g>>2]=e+1}else{if((h&255)<194){e=2;break a}if((h&255)<224){if((o-e|0)<2){e=1;break a}h=d[e+1>>0]|0;if((h&192|0)!=128){e=2;break a}h=h&63|m<<6&1984;if(h>>>0>k>>>0){e=2;break a}b[q>>1]=h;c[g>>2]=e+2;break}if((h&255)<240){if((o-e|0)<3){e=1;break a}l=a[e+1>>0]|0;h=a[e+2>>0]|0;if((m|0)==237){if((l&-32)<<24>>24!=-128){e=2;break a}}else if((m|0)==224){if((l&-32)<<24>>24!=-96){e=2;break a}}else if((l&-64)<<24>>24!=-128){e=2;break a}h=h&255;if((h&192|0)!=128){e=2;break a}h=(l&255)<<6&4032|m<<12|h&63;if((h&65535)>>>0>k>>>0){e=2;break a}b[q>>1]=h;c[g>>2]=e+3;break}if((h&255)>=245){e=2;break a}if((o-e|0)<4){e=1;break a}l=a[e+1>>0]|0;h=a[e+2>>0]|0;e=a[e+3>>0]|0;if((m|0)==244){if((l&-16)<<24>>24!=-128){e=2;break a}}else if((m|0)==240){if((l+112&255)>=48){e=2;break a}}else if((l&-64)<<24>>24!=-128){e=2;break a}n=h&255;if((n&192|0)!=128){e=2;break a}e=e&255;if((e&192|0)!=128){e=2;break a}if((p-q|0)<4){e=1;break a}m=m&7;l=l&255;h=n<<6;e=e&63;if((l<<12&258048|m<<18|h&4032|e)>>>0>k>>>0){e=2;break a}b[q>>1]=l<<2&60|n>>>4&3|((l>>>4&3|m<<2)<<6)+16320|55296;n=q+2|0;c[j>>2]=n;b[n>>1]=e|h&960|56320;c[g>>2]=(c[g>>2]|0)+4}while(0);q=(c[j>>2]|0)+2|0;c[j>>2]=q;e=c[g>>2]|0;if(e>>>0>=f>>>0){r=40;break}}}else r=40;while(0);if((r|0)==40)e=e>>>0>>0&1;return e|0}function Dba(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;if((((g&4|0)!=0?(c-b|0)>2:0)?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)g=(a[b+2>>0]|0)==-65?b+3|0:b;else g=b;a:do if(g>>>0>>0&(e|0)!=0){n=c;m=g;h=0;b:while(1){g=a[m>>0]|0;l=g&255;if(l>>>0>f>>>0){g=m;h=43;break a}do if(g<<24>>24>-1)g=m+1|0;else{if((g&255)<194){g=m;h=43;break a}if((g&255)<224){if((n-m|0)<2){g=m;h=43;break a}g=d[m+1>>0]|0;if((g&192|0)!=128){g=m;h=43;break a}if((g&63|l<<6&1984)>>>0>f>>>0){g=m;h=43;break a}g=m+2|0;break}if((g&255)<240){g=m;if((n-g|0)<3){g=m;h=43;break a}j=a[m+1>>0]|0;i=a[m+2>>0]|0;if((l|0)==224){if((j&-32)<<24>>24!=-96){h=21;break b}}else if((l|0)==237){if((j&-32)<<24>>24!=-128){h=23;break b}}else if((j&-64)<<24>>24!=-128){h=25;break b}g=i&255;if((g&192|0)!=128){g=m;h=43;break a}if(((j&255)<<6&4032|l<<12&61440|g&63)>>>0>f>>>0){g=m;h=43;break a}g=m+3|0;break}if((g&255)>=245){g=m;h=43;break a}g=m;if((n-g|0)<4|(e-h|0)>>>0<2){g=m;h=43;break a}k=a[m+1>>0]|0;j=a[m+2>>0]|0;i=a[m+3>>0]|0;if((l|0)==240){if((k+112&255)>=48){h=33;break b}}else if((l|0)==244){if((k&-16)<<24>>24!=-128){h=35;break b}}else if((k&-64)<<24>>24!=-128){h=37;break b}j=j&255;if((j&192|0)!=128){g=m;h=43;break a}g=i&255;if((g&192|0)!=128){g=m;h=43;break a}if(((k&255)<<12&258048|l<<18&1835008|j<<6&4032|g&63)>>>0>f>>>0){g=m;h=43;break a}g=m+4|0;h=h+1|0}while(0);h=h+1|0;if(!(g>>>0>>0&h>>>0>>0)){h=43;break a}else m=g}if((h|0)==21){g=g-b|0;break}else if((h|0)==23){g=g-b|0;break}else if((h|0)==25){g=g-b|0;break}else if((h|0)==33){g=g-b|0;break}else if((h|0)==35){g=g-b|0;break}else if((h|0)==37){g=g-b|0;break}}else h=43;while(0);if((h|0)==43)g=g-b|0;return g|0}function Eba(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0;c[e>>2]=b;c[h>>2]=f;if(j&2)if((g-f|0)<3)b=1;else{c[h>>2]=f+1;a[f>>0]=-17;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=-69;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=-65;k=4}else k=4;a:do if((k|0)==4){b=c[e>>2]|0;if(b>>>0>>0)while(1){f=c[b>>2]|0;if((f&-2048|0)==55296|f>>>0>i>>>0){b=2;break a}do if(f>>>0>=128){if(f>>>0<2048){b=c[h>>2]|0;if((g-b|0)<2){b=1;break a}c[h>>2]=b+1;a[b>>0]=f>>>6|192;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}b=c[h>>2]|0;j=g-b|0;if(f>>>0<65536){if((j|0)<3){b=1;break a}c[h>>2]=b+1;a[b>>0]=f>>>12|224;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>6&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}else{if((j|0)<4){b=1;break a}c[h>>2]=b+1;a[b>>0]=f>>>18|240;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>12&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>6&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}}else{b=c[h>>2]|0;if((g-b|0)<1){b=1;break a}c[h>>2]=b+1;a[b>>0]=f}while(0);b=(c[e>>2]|0)+4|0;c[e>>2]=b;if(b>>>0>=d>>>0){b=0;break}}else b=0}while(0);return b|0}function Fba(b,e,f,g,h,i,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0;c[f>>2]=b;c[i>>2]=g;b=c[f>>2]|0;if(((((k&4|0)!=0?(e-b|0)>2:0)?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)?(a[b+2>>0]|0)==-65:0){b=b+3|0;c[f>>2]=b}a:do if(b>>>0>>0){o=e;p=c[i>>2]|0;while(1){if(p>>>0>=h>>>0){q=39;break a}g=a[b>>0]|0;n=g&255;do if(g<<24>>24>-1){if(n>>>0>j>>>0){b=2;break a}c[p>>2]=n;c[f>>2]=b+1}else{if((g&255)<194){b=2;break a}if((g&255)<224){if((o-b|0)<2){b=1;break a}g=d[b+1>>0]|0;if((g&192|0)!=128){b=2;break a}g=g&63|n<<6&1984;if(g>>>0>j>>>0){b=2;break a}c[p>>2]=g;c[f>>2]=b+2;break}if((g&255)<240){if((o-b|0)<3){b=1;break a}k=a[b+1>>0]|0;g=a[b+2>>0]|0;if((n|0)==224){if((k&-32)<<24>>24!=-96){b=2;break a}}else if((n|0)==237){if((k&-32)<<24>>24!=-128){b=2;break a}}else if((k&-64)<<24>>24!=-128){b=2;break a}g=g&255;if((g&192|0)!=128){b=2;break a}g=(k&255)<<6&4032|n<<12&61440|g&63;if(g>>>0>j>>>0){b=2;break a}c[p>>2]=g;c[f>>2]=b+3;break}if((g&255)>=245){b=2;break a}if((o-b|0)<4){b=1;break a}m=a[b+1>>0]|0;g=a[b+2>>0]|0;k=a[b+3>>0]|0;if((n|0)==240){if((m+112&255)>=48){b=2;break a}}else if((n|0)==244){if((m&-16)<<24>>24!=-128){b=2;break a}}else if((m&-64)<<24>>24!=-128){b=2;break a}l=g&255;if((l&192|0)!=128){b=2;break a}g=k&255;if((g&192|0)!=128){b=2;break a}g=(m&255)<<12&258048|n<<18&1835008|l<<6&4032|g&63;if(g>>>0>j>>>0){b=2;break a}c[p>>2]=g;c[f>>2]=b+4}while(0);p=(c[i>>2]|0)+4|0;c[i>>2]=p;b=c[f>>2]|0;if(b>>>0>=e>>>0){q=39;break}}}else q=39;while(0);if((q|0)==39)b=b>>>0>>0&1;return b|0}function Gba(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;if((((g&4|0)!=0?(c-b|0)>2:0)?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)g=(a[b+2>>0]|0)==-65?b+3|0:b;else g=b;a:do if(g>>>0>>0&(e|0)!=0){n=c;l=g;m=0;b:while(1){g=a[l>>0]|0;k=g&255;do if(g<<24>>24>-1){if(k>>>0>f>>>0){g=l;h=43;break a}g=l+1|0}else{if((g&255)<194){g=l;h=43;break a}if((g&255)<224){if((n-l|0)<2){g=l;h=43;break a}g=d[l+1>>0]|0;if((g&192|0)!=128){g=l;h=43;break a}if((g&63|k<<6&1984)>>>0>f>>>0){g=l;h=43;break a}g=l+2|0;break}if((g&255)<240){g=l;if((n-g|0)<3){g=l;h=43;break a}i=a[l+1>>0]|0;h=a[l+2>>0]|0;if((k|0)==237){if((i&-32)<<24>>24!=-128){h=23;break b}}else if((k|0)==224){if((i&-32)<<24>>24!=-96){h=21;break b}}else if((i&-64)<<24>>24!=-128){h=25;break b}g=h&255;if((g&192|0)!=128){g=l;h=43;break a}if(((i&255)<<6&4032|k<<12&61440|g&63)>>>0>f>>>0){g=l;h=43;break a}g=l+3|0;break}if((g&255)>=245){g=l;h=43;break a}g=l;if((n-g|0)<4){g=l;h=43;break a}j=a[l+1>>0]|0;h=a[l+2>>0]|0;i=a[l+3>>0]|0;if((k|0)==244){if((j&-16)<<24>>24!=-128){h=35;break b}}else if((k|0)==240){if((j+112&255)>=48){h=33;break b}}else if((j&-64)<<24>>24!=-128){h=37;break b}h=h&255;if((h&192|0)!=128){g=l;h=43;break a}g=i&255;if((g&192|0)!=128){g=l;h=43;break a}if(((j&255)<<12&258048|k<<18&1835008|h<<6&4032|g&63)>>>0>f>>>0){g=l;h=43;break a}g=l+4|0}while(0);m=m+1|0;if(!(g>>>0>>0&m>>>0>>0)){h=43;break a}else l=g}if((h|0)==21){g=g-b|0;break}else if((h|0)==23){g=g-b|0;break}else if((h|0)==25){g=g-b|0;break}else if((h|0)==33){g=g-b|0;break}else if((h|0)==35){g=g-b|0;break}else if((h|0)==37){g=g-b|0;break}}else h=43;while(0);if((h|0)==43)g=g-b|0;return g|0}function Hba(a){a=a|0;v2(365212|0);v2(365200|0);v2(365188|0);v2(365176|0);v2(365164|0);v2(365152|0);v2(365140|0);v2(365128|0);v2(365116|0);v2(365104|0);v2(365092|0);v2(365080|0);v2(365068|0);v2(365056);return}function Iba(a){a=a|0;L2(364676|0);L2(364664|0);L2(364652|0);L2(364640|0);L2(364628|0);L2(364616|0);L2(364604|0);L2(364592|0);L2(364580|0);L2(364568|0);L2(364556|0);L2(364544|0);L2(364532|0);L2(364520);return}function Jba(a){a=a|0;v2(364284|0);v2(364272|0);v2(364260|0);v2(364248|0);v2(364236|0);v2(364224|0);v2(364212|0);v2(364200|0);v2(364188|0);v2(364176|0);v2(364164|0);v2(364152|0);v2(364140|0);v2(364128|0);v2(364116|0);v2(364104|0);v2(364092|0);v2(364080|0);v2(364068|0);v2(364056|0);v2(364044|0);v2(364032|0);v2(364020|0);v2(364008);return}function Kba(a){a=a|0;L2(363444|0);L2(363432|0);L2(363420|0);L2(363408|0);L2(363396|0);L2(363384|0);L2(363372|0);L2(363360|0);L2(363348|0);L2(363336|0);L2(363324|0);L2(363312|0);L2(363300|0);L2(363288|0);L2(363276|0);L2(363264|0);L2(363252|0);L2(363240|0);L2(363228|0);L2(363216|0);L2(363204|0);L2(363192|0);L2(363180|0);L2(363168);return}function Lba(a){a=a|0;v2(363132|0);v2(363120|0);v2(363108|0);v2(363096|0);v2(363084|0);v2(363072|0);v2(363060|0);v2(363048|0);v2(363036|0);v2(363024|0);v2(363012|0);v2(363e3|0);v2(362988|0);v2(362976|0);v2(362964|0);v2(362952|0);v2(362940|0);v2(362928|0);v2(362916|0);v2(362904|0);v2(362892|0);v2(362880|0);v2(362868|0);v2(362856);return}function Mba(a){a=a|0;L2(362804|0);L2(362792|0);L2(362780|0);L2(362768|0);L2(362756|0);L2(362744|0);L2(362732|0);L2(362720|0);L2(362708|0);L2(362696|0);L2(362684|0);L2(362672|0);L2(362660|0);L2(362648|0);L2(362636|0);L2(362624|0);L2(362612|0);L2(362600|0);L2(362588|0);L2(362576|0);L2(362564|0);L2(362552|0);L2(362540|0);L2(362528);return}function Nba(a){a=a|0;p3(a);nda(a);return}function Oba(b,d){b=b|0;d=d|0;Ed[c[(c[b>>2]|0)+24>>2]&511](b)|0;d=w8(d,357784)|0;c[b+36>>2]=d;a[b+44>>0]=(Ed[c[(c[d>>2]|0)+28>>2]&511](d)|0)&1;return}function Pba(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;j=l+8|0;h=l;d=a+36|0;e=a+40|0;f=j+8|0;g=j;b=a+32|0;while(1){a=c[d>>2]|0;a=Qd[c[(c[a>>2]|0)+20>>2]&127](a,c[e>>2]|0,j,f,h)|0;m=(c[h>>2]|0)-g|0;if((Xb(j|0,1,m|0,c[b>>2]|0)|0)!=(m|0)){a=-1;break}if((a|0)==2){a=-1;break}else if((a|0)!=1){k=4;break}}if((k|0)==4)a=((jd(c[b>>2]|0)|0)!=0)<<31>>31;i=l;return a|0}function Qba(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;a:do if(!(a[b+44>>0]|0))if((e|0)>0){f=d;d=0;while(1){if((Pd[c[(c[b>>2]|0)+52>>2]&511](b,c[f>>2]|0)|0)==-1)break a;d=d+1|0;if((d|0)<(e|0))f=f+4|0;else break}}else d=0;else d=Xb(d|0,4,e|0,c[b+32>>2]|0)|0;while(0);return d|0}function Rba(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;p=s+16|0;e=s;o=s+4|0;n=s+8|0;q=(d|0)==-1;a:do if(!q){c[e>>2]=d;if(a[b+44>>0]|0)if((Xb(e|0,4,1,c[b+32>>2]|0)|0)==1){r=11;break}else{e=-1;break}c[o>>2]=p;l=e+4|0;m=b+36|0;g=b+40|0;h=p+8|0;j=p;k=b+32|0;while(1){b=c[m>>2]|0;b=Wd[c[(c[b>>2]|0)+12>>2]&15](b,c[g>>2]|0,e,l,n,p,h,o)|0;if((c[n>>2]|0)==(e|0)){e=-1;break a}if((b|0)==3)break;f=(b|0)==1;if(b>>>0>=2){e=-1;break a}b=(c[o>>2]|0)-j|0;if((Xb(p|0,1,b|0,c[k>>2]|0)|0)!=(b|0)){e=-1;break a}if(f)e=f?c[n>>2]|0:e;else{r=11;break a}}if((Xb(e|0,1,1,c[k>>2]|0)|0)!=1)e=-1;else r=11}else r=11;while(0);if((r|0)==11)e=q?0:d;i=s;return e|0}function Sba(a){a=a|0;p3(a);nda(a);return}function Tba(b,d){b=b|0;d=d|0;var e=0,f=0;f=w8(d,357784)|0;e=b+36|0;c[e>>2]=f;d=b+44|0;c[d>>2]=Ed[c[(c[f>>2]|0)+24>>2]&511](f)|0;e=c[e>>2]|0;a[b+53>>0]=(Ed[c[(c[e>>2]|0)+28>>2]&511](e)|0)&1;if((c[d>>2]|0)>8)E7(354040);else return}function Uba(a){a=a|0;return uca(a,0)|0}function Vba(a){a=a|0;return uca(a,1)|0}function Wba(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;l=m+16|0;k=m;f=m+4|0;g=m+8|0;h=b+52|0;e=(a[h>>0]|0)!=0;a:do if((d|0)==-1)if(e)d=-1;else{d=c[b+48>>2]|0;a[h>>0]=(d|0)!=-1&1}else{j=b+48|0;b:do if(e){c[f>>2]=c[j>>2];e=c[b+36>>2]|0;e=Wd[c[(c[e>>2]|0)+12>>2]&15](e,c[b+40>>2]|0,f,f+4|0,g,l,l+8|0,k)|0;if((e|0)==1|(e|0)==2){d=-1;break a}else if((e|0)==3){a[l>>0]=c[j>>2];c[k>>2]=l+1}e=b+32|0;while(1){f=c[k>>2]|0;if(f>>>0<=l>>>0)break b;b=f+-1|0;c[k>>2]=b;if((Rc(a[b>>0]|0,c[e>>2]|0)|0)==-1){d=-1;break a}}}while(0);c[j>>2]=d;a[h>>0]=1}while(0);i=m;return d|0}function Xba(a){a=a|0;$2(a);nda(a);return}function Yba(b,d){b=b|0;d=d|0;Ed[c[(c[b>>2]|0)+24>>2]&511](b)|0;d=w8(d,357776)|0;c[b+36>>2]=d;a[b+44>>0]=(Ed[c[(c[d>>2]|0)+28>>2]&511](d)|0)&1;return}function Zba(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;j=l+8|0;h=l;d=a+36|0;e=a+40|0;f=j+8|0;g=j;b=a+32|0;while(1){a=c[d>>2]|0;a=Qd[c[(c[a>>2]|0)+20>>2]&127](a,c[e>>2]|0,j,f,h)|0;m=(c[h>>2]|0)-g|0;if((Xb(j|0,1,m|0,c[b>>2]|0)|0)!=(m|0)){a=-1;break}if((a|0)==2){a=-1;break}else if((a|0)!=1){k=4;break}}if((k|0)==4)a=((jd(c[b>>2]|0)|0)!=0)<<31>>31;i=l;return a|0}function _ba(b,e,f){b=b|0;e=e|0;f=f|0;var g=0;a:do if(!(a[b+44>>0]|0))if((f|0)>0){g=e;e=0;while(1){if((Pd[c[(c[b>>2]|0)+52>>2]&511](b,d[g>>0]|0)|0)==-1)break a;e=e+1|0;if((e|0)<(f|0))g=g+1|0;else break}}else e=0;else e=Xb(e|0,1,f|0,c[b+32>>2]|0)|0;while(0);return e|0}function $ba(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;p=s+16|0;e=s+8|0;o=s;n=s+4|0;q=(d|0)==-1;a:do if(!q){a[e>>0]=d;if(a[b+44>>0]|0)if((Xb(e|0,1,1,c[b+32>>2]|0)|0)==1){r=11;break}else{e=-1;break}c[o>>2]=p;m=e+1|0;g=b+36|0;h=b+40|0;j=p+8|0;k=p;l=b+32|0;while(1){b=c[g>>2]|0;b=Wd[c[(c[b>>2]|0)+12>>2]&15](b,c[h>>2]|0,e,m,n,p,j,o)|0;if((c[n>>2]|0)==(e|0)){e=-1;break a}if((b|0)==3)break;f=(b|0)==1;if(b>>>0>=2){e=-1;break a}b=(c[o>>2]|0)-k|0;if((Xb(p|0,1,b|0,c[l>>2]|0)|0)!=(b|0)){e=-1;break a}if(f)e=f?c[n>>2]|0:e;else{r=11;break a}}if((Xb(e|0,1,1,c[l>>2]|0)|0)!=1)e=-1;else r=11}else r=11;while(0);if((r|0)==11)e=q?0:d;i=s;return e|0}function aca(a){a=a|0;$2(a);nda(a);return}function bca(b,d){b=b|0;d=d|0;var e=0,f=0;f=w8(d,357776)|0;e=b+36|0;c[e>>2]=f;d=b+44|0;c[d>>2]=Ed[c[(c[f>>2]|0)+24>>2]&511](f)|0;e=c[e>>2]|0;a[b+53>>0]=(Ed[c[(c[e>>2]|0)+28>>2]&511](e)|0)&1;if((c[d>>2]|0)>8)E7(354040);else return}function cca(a){a=a|0;return vca(a,0)|0}function dca(a){a=a|0;return vca(a,1)|0}function eca(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;l=m+16|0;k=m;f=m+8|0;g=m+4|0;h=b+52|0;e=(a[h>>0]|0)!=0;a:do if((d|0)==-1)if(e)d=-1;else{d=c[b+48>>2]|0;a[h>>0]=(d|0)!=-1&1}else{j=b+48|0;b:do if(e){a[f>>0]=c[j>>2];e=c[b+36>>2]|0;e=Wd[c[(c[e>>2]|0)+12>>2]&15](e,c[b+40>>2]|0,f,f+1|0,g,l,l+8|0,k)|0;if((e|0)==1|(e|0)==2){d=-1;break a}else if((e|0)==3){a[l>>0]=c[j>>2];c[k>>2]=l+1}e=b+32|0;while(1){f=c[k>>2]|0;if(f>>>0<=l>>>0)break b;b=f+-1|0;c[k>>2]=b;if((Rc(a[b>>0]|0,c[e>>2]|0)|0)==-1){d=-1;break a}}}while(0);c[j>>2]=d;a[h>>0]=1}while(0);i=m;return d|0}function fca(a){a=a|0;nda(a);return}function gca(a){a=a|0;nda(a);return}function hca(a){a=a|0;nda(a);return}function ica(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;a:do if((a|0)==(b|0)){c[d>>2]=4;a=0}else{g=md()|0;h=c[g>>2]|0;c[g>>2]=0;a=Bca(a,j,e,K4()|0)|0;e=H;f=c[g>>2]|0;if(!f)c[g>>2]=h;if((c[j>>2]|0)!=(b|0)){c[d>>2]=4;a=0;break}do if((f|0)==34){c[d>>2]=4;if((e|0)>0|(e|0)==0&a>>>0>0){a=2147483647;break a}}else{if((e|0)<-1|(e|0)==-1&a>>>0<2147483648){c[d>>2]=4;break}if((e|0)>0|(e|0)==0&a>>>0>2147483647){c[d>>2]=4;a=2147483647;break a}else break a}while(0);a=-2147483648}while(0);i=k;return a|0}function jca(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;do if((a|0)!=(b|0)){g=md()|0;h=c[g>>2]|0;c[g>>2]=0;a=Bca(a,j,e,K4()|0)|0;e=H;f=c[g>>2]|0;if(!f)c[g>>2]=h;if((c[j>>2]|0)!=(b|0)){c[d>>2]=4;e=0;a=0;break}if((f|0)==34){c[d>>2]=4;d=(e|0)>0|(e|0)==0&a>>>0>0;H=d?2147483647:-2147483648;i=k;return (d?-1:0)|0}}else{c[d>>2]=4;e=0;a=0}while(0);H=e;i=k;return a|0}function kca(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;do if((b|0)!=(d|0)){if((a[b>>0]|0)==45){c[e>>2]=4;b=0;break}h=md()|0;j=c[h>>2]|0;c[h>>2]=0;b=Aca(b,k,f,K4()|0)|0;f=H;g=c[h>>2]|0;if(!g)c[h>>2]=j;if((c[k>>2]|0)!=(d|0)){c[e>>2]=4;b=0;break}if((g|0)==34|(f>>>0>0|(f|0)==0&b>>>0>65535)){c[e>>2]=4;b=-1;break}else{b=b&65535;break}}else{c[e>>2]=4;b=0}while(0);i=l;return b|0}function lca(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;do if((b|0)!=(d|0)){if((a[b>>0]|0)==45){c[e>>2]=4;b=0;break}h=md()|0;j=c[h>>2]|0;c[h>>2]=0;b=Aca(b,k,f,K4()|0)|0;f=H;g=c[h>>2]|0;if(!g)c[h>>2]=j;if((c[k>>2]|0)!=(d|0)){c[e>>2]=4;b=0;break}if((g|0)==34|(f>>>0>0|(f|0)==0&b>>>0>4294967295)){c[e>>2]=4;b=-1;break}else break}else{c[e>>2]=4;b=0}while(0);i=l;return b|0}function mca(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;do if((b|0)!=(d|0)){if((a[b>>0]|0)==45){c[e>>2]=4;b=0;break}h=md()|0;j=c[h>>2]|0;c[h>>2]=0;b=Aca(b,k,f,K4()|0)|0;f=H;g=c[h>>2]|0;if(!g)c[h>>2]=j;if((c[k>>2]|0)!=(d|0)){c[e>>2]=4;b=0;break}if((g|0)==34|(f>>>0>0|(f|0)==0&b>>>0>4294967295)){c[e>>2]=4;b=-1;break}else break}else{c[e>>2]=4;b=0}while(0);i=l;return b|0}function nca(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;do if((b|0)!=(d|0)){if((a[b>>0]|0)==45){c[e>>2]=4;f=0;b=0;break}g=md()|0;h=c[g>>2]|0;c[g>>2]=0;b=Aca(b,j,f,K4()|0)|0;f=c[g>>2]|0;if(!f)c[g>>2]=h;if((c[j>>2]|0)!=(d|0)){c[e>>2]=4;f=0;b=0;break}if((f|0)==34){c[e>>2]=4;f=-1;b=-1}else f=H}else{c[e>>2]=4;f=0;b=0}while(0);H=f;i=k;return b|0}function oca(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;do if((a|0)==(b|0)){c[d>>2]=4;e=0.0}else{f=md()|0;g=c[f>>2]|0;c[f>>2]=0;e=+afa(a,h,K4()|0);a=c[f>>2]|0;if(!a)c[f>>2]=g;if((c[h>>2]|0)!=(b|0)){c[d>>2]=4;e=0.0;break}if((a|0)==34)c[d>>2]=4}while(0);i=j;return +e}function pca(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;do if((a|0)!=(b|0)){f=md()|0;g=c[f>>2]|0;c[f>>2]=0;e=+afa(a,h,K4()|0);a=c[f>>2]|0;if(!a)c[f>>2]=g;if((c[h>>2]|0)!=(b|0)){c[d>>2]=4;e=0.0;break}if((a|0)==34)c[d>>2]=4}else{c[d>>2]=4;e=0.0}while(0);i=j;return +e}function qca(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;do if((a|0)!=(b|0)){f=md()|0;g=c[f>>2]|0;c[f>>2]=0;e=+afa(a,h,K4()|0);a=c[f>>2]|0;if(!a)c[f>>2]=g;if((c[h>>2]|0)!=(b|0)){c[d>>2]=4;e=0.0;break}if((a|0)==34)c[d>>2]=4}else{c[d>>2]=4;e=0.0}while(0);i=j;return +e}function rca(b,d){b=b|0;d=d|0;var e=0;if(d>>>0>1073741823)i8(b);e=b+128|0;if((a[e>>0]|0)==0&d>>>0<29){a[e>>0]=1;e=b+16|0}else e=jda(d<<2)|0;c[b+4>>2]=e;c[b>>2]=e;c[b+8>>2]=e+(d<<2);return}function sca(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=c[d>>2]|0;do{if(!a)a=0;else{c[a>>2]=0;a=c[d>>2]|0}a=a+4|0;c[d>>2]=a;b=b+-1|0}while((b|0)!=0);return}function tca(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;j=k;g=c[a+8>>2]|0;d=c[a+4>>2]|0;if(g-d>>2>>>0>>0){e=c[a>>2]|0;h=d-e>>2;f=h+b|0;if(f>>>0>1073741823)i8(a);d=g-e|0;if(d>>2>>>0<536870911){d=d>>1;d=d>>>0>>0?f:d}else d=1073741823;wca(j,d,h,a+16|0);xca(j,b);yca(a,j);zca(j)}else sca(a,b);i=k;return} -function eu(e,f,g,h,j,k,l,m){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0;_a=i;i=i+15840|0;Ga=_a+11964|0;ya=_a+11960|0;za=_a+11956|0;Ca=_a+11952|0;Fa=_a+11948|0;o=_a+11944|0;Aa=_a+11940|0;Ba=_a+11936|0;Ya=_a+11932|0;ta=_a+15832|0;Xa=_a+11872|0;Za=_a+11840|0;ga=_a+11808|0;Wa=_a+24|0;Da=_a+8|0;Ea=_a;fa=_a+11904|0;c[Aa>>2]=k;c[Ba>>2]=l;qa=e+132|0;xa=c[qa>>2]|0;Ha=e+4|0;Va=c[e>>2]|0;da=e+48|0;ba=c[da>>2]|0;Ia=xa+928|0;sa=c[(c[Ia>>2]|0)+532>>2]<<16;c[Ya>>2]=0;c[Xa>>2]=Va;c[Xa+4>>2]=Ha;c[Xa+8>>2]=20;Ja=Xa+12|0;c[Ja>>2]=0;c[Xa+16>>2]=10;Ka=Xa+20|0;c[Ka>>2]=0;La=Xa+24|0;c[La>>2]=0;Ma=Xa+28|0;c[Ma>>2]=0;c[Za>>2]=Va;c[Za+4>>2]=Ha;c[Za+8>>2]=20;Na=Za+12|0;c[Na>>2]=0;c[Za+16>>2]=10;Oa=Za+20|0;c[Oa>>2]=0;Pa=Za+24|0;c[Pa>>2]=0;Qa=Za+28|0;c[Qa>>2]=0;c[ga+0>>2]=0;c[ga+4>>2]=0;c[ga+8>>2]=0;c[ga+12>>2]=0;c[ga+16>>2]=0;c[ga+20>>2]=0;c[ga+24>>2]=0;c[ga>>2]=Ha;sfa(Wa|0,0,11784)|0;c[Wa>>2]=e;c[Wa+4>>2]=g;Y=Wa+11612|0;c[Y>>2]=Va;c[Wa+11616>>2]=Ha;c[Wa+11620>>2]=8;Ra=Wa+11624|0;c[Ra>>2]=0;c[Wa+11628>>2]=10;Sa=Wa+11632|0;c[Sa>>2]=0;Ta=Wa+11636|0;c[Ta>>2]=0;Ua=Wa+11640|0;c[Ua>>2]=0;Z=Wa+7744|0;sfa(Z|0,0,3868)|0;_=e+140|0;ca=a[_>>0]|0;a[Wa+7757>>0]=ca;c[Wa+7760>>2]=ba;c[Z>>2]=e;c[Wa+7748>>2]=Z;c[Wa+7752>>2]=Y;ra=Wa+3876|0;sfa(ra|0,0,3868)|0;a[Wa+3889>>0]=ca;c[Wa+3892>>2]=ba;c[ra>>2]=e;c[Wa+3880>>2]=Z;c[Wa+3884>>2]=Y;$=Wa+8|0;sfa($|0,0,3868)|0;a[Wa+21>>0]=ca;c[Wa+24>>2]=ba;c[$>>2]=e;c[Wa+12>>2]=Z;c[Wa+16>>2]=Y;c[Wa+11644>>2]=c[e+36>>2];c[Wa+11648>>2]=c[e+44>>2];c[Wa+11652>>2]=c[da>>2];da=h;ca=c[da+4>>2]|0;aa=Wa+11656|0;c[aa>>2]=c[da>>2];c[aa+4>>2]=ca;aa=Wa+11668|0;c[aa>>2]=Xa;ca=Wa+11672|0;c[ca>>2]=Za;da=Wa+11676|0;c[da>>2]=ga;ea=Wa+11680|0;c[ea>>2]=l;c[Wa+11684>>2]=e+196;a[Wa+11665>>0]=a[e+141>>0]|0;oa=c[e+184>>2]|0;c[Wa+11688>>2]=oa;na=c[e+188>>2]|0;c[Wa+11692>>2]=na;oa=(oa|0)<0?0-oa|0:oa;na=(na|0)<0?0-na|0:na;c[Wa+11696>>2]=((oa|0)>(na|0)?oa:na)<<1;c[Wa+11700>>2]=6554;na=Wa+11666|0;a[na>>0]=1;oa=Wa+11664|0;a[oa>>0]=0;pa=Wa+11744|0;a[pa>>0]=0;a[ta>>0]=0;c[m>>2]=c[(c[Ia>>2]|0)+528>>2]<<16;c[Ga>>2]=0;Ia=Wh(Va,396,Ga)|0;if(c[Ga>>2]|0)if(!Ia){k=1;n=0;o=64;A=769}else{k=0;A=4}else{c[Ia>>2]=Va;c[Ia+4>>2]=Ha;c[Ia+392>>2]=Ia+8;k=(Ia|0)==0;A=4}a:do if((A|0)==4){c[o>>2]=0;n=Dg(Va,1,0,176,0,o)|0;do if(c[o>>2]|0){if(!(c[Ha>>2]|0))c[Ha>>2]=64}else{if((c[Ya>>2]|0)>>>0<=11){c[Ya>>2]=11;break}if(!(c[Ha>>2]|0))c[Ha>>2]=130;c[Ya>>2]=11}while(0);c[n+0>>2]=c[f+0>>2];c[n+4>>2]=c[f+4>>2];c[n+8>>2]=c[f+8>>2];c[n+12>>2]=c[f+12>>2];if(!(c[Ha>>2]|0)){va=Ia+392|0;wa=Ia+4|0;ua=Ia+8|0;ma=ua;ja=Wa+11736|0;C=Wa+11720|0;ka=Wa+11740|0;D=Wa+11724|0;B=Wa+20|0;la=Wa+11704|0;ha=Wa+11712|0;ia=Wa+11716|0;X=Ia+12|0;E=xa+900|0;F=xa+892|0;G=xa+908|0;H=xa+896|0;I=xa+888|0;J=xa+904|0;K=ga+8|0;L=ga+12|0;M=ga+4|0;N=ga+5|0;O=Ga+13|0;P=Ga+16|0;Q=Ga+4|0;R=Ga+8|0;S=fa+8|0;T=fa+12|0;U=fa+4|0;V=fa+5|0;o=n;z=0;W=19999999;b:while(1){s=o+8|0;q=c[s>>2]|0;p=o+12|0;f=c[p>>2]|0;if(f>>>0>>0){l=f+1|0;c[p>>2]=l;y=d[f>>0]|0}else{l=f;y=(z|0)==0?14:11}if(c[Ha>>2]|0)break a;if(!W){o=18;A=769;break a}c:do switch(y|0){case 28:{if(l>>>0>=q>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;s=0;f=l}else{s=0;f=l}}else{f=l+1|0;c[p>>2]=f;s=d[l>>0]<<8}if(f>>>0>=q>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;f=0}else f=0}else{c[p>>2]=f+1;f=d[f>>0]|0}l=c[va>>2]|0;if((l|0)!=(va|0)){c[l>>2]=(f|s)<<16>>16;c[l+4>>2]=2;c[va>>2]=l+8;f=z;break c}f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=z}else f=z;break}case 17:case 16:case 15:case 13:case 9:case 2:case 0:{A=767;break}case 26:{v=(c[va>>2]|0)-ma>>3;if(v){q=0;do{if(!(v-q&1)){l=c[va>>2]|0;u=c[Aa>>2]|0}else{s=c[va>>2]|0;do if(s-ma>>3>>>0>q>>>0){f=Ia+(q<<3)+8|0;l=c[Ia+(q<<3)+12>>2]|0;if((l|0)==2){f=c[f>>2]<<16;break}else if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);l=s;q=q+1|0;u=(c[Aa>>2]|0)+f|0}r=l-ma>>3;do if(r>>>0>q>>>0){f=Ia+(q<<3)+8|0;l=c[Ia+(q<<3)+12>>2]|0;if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((l|0)==2){f=c[f>>2]<<16;break}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);t=(c[Ba>>2]|0)+f|0;f=q+1|0;do if(r>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((f|0)==2){f=c[l>>2]<<16;break}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);p=f+u|0;f=q+2|0;do if(r>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((f|0)==2){f=c[l>>2]<<16;break}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);s=f+t|0;f=q+3|0;do if(r>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);y=f+s|0;Hu(Wa,u,t,p,s,p,y);c[Aa>>2]=p;c[Ba>>2]=y;q=q+4|0}while(v>>>0>q>>>0)}c[va>>2]=ua;f=z;break}case 27:{v=(c[va>>2]|0)-ma>>3;if(v){q=0;do{if(!(v-q&1)){l=c[va>>2]|0;u=c[Ba>>2]|0}else{s=c[va>>2]|0;do if(s-ma>>3>>>0>q>>>0){f=Ia+(q<<3)+8|0;l=c[Ia+(q<<3)+12>>2]|0;if((l|0)==2){f=c[f>>2]<<16;break}else if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);l=s;q=q+1|0;u=(c[Ba>>2]|0)+f|0}r=l-ma>>3;do if(r>>>0>q>>>0){f=Ia+(q<<3)+8|0;l=c[Ia+(q<<3)+12>>2]|0;if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((l|0)==2){f=c[f>>2]<<16;break}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);t=(c[Aa>>2]|0)+f|0;f=q+1|0;do if(r>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((f|0)==2){f=c[l>>2]<<16;break}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);p=f+t|0;f=q+2|0;do if(r>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((f|0)==2){f=c[l>>2]<<16;break}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);s=f+u|0;f=q+3|0;do if(r>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((f|0)==2){f=c[l>>2]<<16;break}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);y=f+p|0;Hu(Wa,t,u,p,s,y,s);c[Aa>>2]=y;c[Ba>>2]=s;q=q+4|0}while(v>>>0>q>>>0)}c[va>>2]=ua;f=z;break}case 31:case 30:{x=(c[va>>2]|0)-ma>>3;if(x){f=(y|0)==31&1;w=0;do{if(!(f<<24>>24)){t=c[Aa>>2]|0;s=(c[va>>2]|0)-ma>>3;do if(s>>>0>w>>>0){f=Ia+(w<<3)+8|0;l=c[Ia+(w<<3)+12>>2]|0;if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((l|0)==2){f=c[f>>2]<<16;break}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);q=(c[Ba>>2]|0)+f|0;u=w+1|0;do if(s>>>0>u>>>0){f=Ia+(u<<3)+8|0;l=c[Ia+(u<<3)+12>>2]|0;if((l|0)==2){f=c[f>>2]<<16;break}else if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);r=f+t|0;f=w+2|0;do if(s>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);v=f+q|0;f=w+3|0;do if(s>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if(!f)f=0;else{if(c[f>>2]|0){f=0;break}c[f>>2]=130;f=0}}while(0);p=f+r|0;if((x-w|0)==5){f=w+4|0;do if(s>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){l=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){l=0-(8192-f>>14)|0;break}else{l=f+8192>>14;break}}else{l=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if(!f){l=0;break}if(c[f>>2]|0){l=0;break}c[f>>2]=130;l=0}while(0);f=1;s=v;l=l+v|0}else{f=1;u=w;s=v;l=v}}else{s=(c[va>>2]|0)-ma>>3;do if(s>>>0>w>>>0){f=Ia+(w<<3)+8|0;l=c[Ia+(w<<3)+12>>2]|0;if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((l|0)==2){f=c[f>>2]<<16;break}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);t=(c[Aa>>2]|0)+f|0;q=c[Ba>>2]|0;u=w+1|0;do if(s>>>0>u>>>0){f=Ia+(u<<3)+8|0;l=c[Ia+(u<<3)+12>>2]|0;if((l|0)==2){f=c[f>>2]<<16;break}else if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);p=f+t|0;f=w+2|0;do if(s>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((f|0)==2){f=c[l>>2]<<16;break}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);v=f+q|0;f=w+3|0;do if(s>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if(!f)f=0;else{if(c[f>>2]|0){f=0;break}c[f>>2]=130;f=0}}while(0);l=f+v|0;if((x-w|0)==5){f=w+4|0;do if(s>>>0>f>>>0){s=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==1){f=c[s>>2]|0;if((f|0)<0){s=0-(8192-f>>14)|0;break}else{s=f+8192>>14;break}}else if((f|0)==2){s=c[s>>2]<<16;break}else{s=c[s>>2]|0;break}}else{f=c[wa>>2]|0;if(!f){s=0;break}if(c[f>>2]|0){s=0;break}c[f>>2]=130;s=0}while(0);f=0;r=p;p=s+p|0;s=v}else{f=0;u=w;r=p;s=v}}Hu(Wa,t,q,r,s,p,l);c[Aa>>2]=p;c[Ba>>2]=l;w=u+4|0}while(x>>>0>w>>>0)}c[va>>2]=ua;f=z;break}case 22:{s=c[va>>2]|0;f=s-ma>>3;if(!(f>>>0<2|(a[ta>>0]|0)!=0)){do if(!f){f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}else{f=c[X>>2]|0;if((f|0)==2){f=c[ua>>2]<<16;break}else if((f|0)==1){f=c[ua>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[ua>>2]|0;break}}while(0);c[m>>2]=f+sa}a[ta>>0]=1;if(a[(c[qa>>2]|0)+753>>0]|0){o=0;A=769;break a}do if((s|0)==(ua|0)){f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=161;f=0}else f=0}else{l=s+-8|0;c[va>>2]=l;f=c[s+-4>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}while(0);f=(c[Aa>>2]|0)+f|0;c[Aa>>2]=f;l=c[Ba>>2]|0;if(a[oa>>0]|0){Eu(Wa,c[ja>>2]|0,c[ka>>2]|0);Fu(Wa,ra,la,c[ha>>2]|0,c[ia>>2]|0,1);a[na>>0]=1;a[oa>>0]=0;a[pa>>0]=0}c[ja>>2]=f;c[C>>2]=f;c[ka>>2]=l;c[D>>2]=l;a[na>>0]=1;f=c[da>>2]|0;if(!((a[B>>0]|0)!=0?(a[f+5>>0]|0)==0:0))Gu($,c[aa>>2]|0,c[ca>>2]|0,f,c[ea>>2]|0,0);qfa(ra|0,$|0,3868)|0;A=767;break}case 25:{f=c[va>>2]|0;w=f-ma>>3;d:do if(w>>>0>6){p=0;while(1){s=f-ma>>3;do if(s>>>0>p>>>0){f=Ia+(p<<3)+8|0;l=c[Ia+(p<<3)+12>>2]|0;if((l|0)==2){f=c[f>>2]<<16;break}else if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);q=(c[Aa>>2]|0)+f|0;c[Aa>>2]=q;f=p|1;do if(s>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){l=c[l>>2]<<16;f=q;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){l=0-(8192-f>>14)|0;f=q;break}else{l=f+8192>>14;f=q;break}}else{l=c[l>>2]|0;f=q;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;l=0;f=c[Aa>>2]|0}else{l=0;f=q}}while(0);l=(c[Ba>>2]|0)+l|0;c[Ba>>2]=l;Eu(Wa,f,l);l=p+2|0;if((p+8|0)>>>0>=w>>>0){f=l;break d}f=c[va>>2]|0;p=l}}else f=0;while(0);if(f>>>0>>0)do{u=(c[va>>2]|0)-ma>>3;do if(u>>>0>f>>>0){l=Ia+(f<<3)+8|0;s=c[Ia+(f<<3)+12>>2]|0;if((s|0)==1){l=c[l>>2]|0;if((l|0)<0){l=0-(8192-l>>14)|0;break}else{l=l+8192>>14;break}}else if((s|0)==2){l=c[l>>2]<<16;break}else{l=c[l>>2]|0;break}}else{l=c[wa>>2]|0;if((l|0)!=0?(c[l>>2]|0)==0:0){c[l>>2]=130;l=0}else l=0}while(0);v=(c[Aa>>2]|0)+l|0;l=f|1;do if(u>>>0>l>>>0){s=Ia+(l<<3)+8|0;l=c[Ia+(l<<3)+12>>2]|0;if((l|0)==2){l=c[s>>2]<<16;break}else if((l|0)==1){l=c[s>>2]|0;if((l|0)<0){l=0-(8192-l>>14)|0;break}else{l=l+8192>>14;break}}else{l=c[s>>2]|0;break}}else{l=c[wa>>2]|0;if((l|0)!=0?(c[l>>2]|0)==0:0){c[l>>2]=130;l=0}else l=0}while(0);t=(c[Ba>>2]|0)+l|0;l=f+2|0;do if(u>>>0>l>>>0){s=Ia+(l<<3)+8|0;l=c[Ia+(l<<3)+12>>2]|0;if((l|0)==1){l=c[s>>2]|0;if((l|0)<0){l=0-(8192-l>>14)|0;break}else{l=l+8192>>14;break}}else if((l|0)==2){l=c[s>>2]<<16;break}else{l=c[s>>2]|0;break}}else{l=c[wa>>2]|0;if((l|0)!=0?(c[l>>2]|0)==0:0){c[l>>2]=130;l=0}else l=0}while(0);r=l+v|0;l=f+3|0;do if(u>>>0>l>>>0){s=Ia+(l<<3)+8|0;l=c[Ia+(l<<3)+12>>2]|0;if((l|0)==1){l=c[s>>2]|0;if((l|0)<0){l=0-(8192-l>>14)|0;break}else{l=l+8192>>14;break}}else if((l|0)==2){l=c[s>>2]<<16;break}else{l=c[s>>2]|0;break}}else{l=c[wa>>2]|0;if((l|0)!=0?(c[l>>2]|0)==0:0){c[l>>2]=130;l=0}else l=0}while(0);p=l+t|0;l=f+4|0;do if(u>>>0>l>>>0){s=Ia+(l<<3)+8|0;l=c[Ia+(l<<3)+12>>2]|0;if((l|0)==2){l=c[s>>2]<<16;break}else if((l|0)==1){l=c[s>>2]|0;if((l|0)<0){l=0-(8192-l>>14)|0;break}else{l=l+8192>>14;break}}else{l=c[s>>2]|0;break}}else{l=c[wa>>2]|0;if(!l)l=0;else{if(c[l>>2]|0){l=0;break}c[l>>2]=130;l=0}}while(0);q=l+r|0;l=f+5|0;do if(u>>>0>l>>>0){s=Ia+(l<<3)+8|0;l=c[Ia+(l<<3)+12>>2]|0;if((l|0)==2){l=c[s>>2]<<16;break}else if((l|0)==1){l=c[s>>2]|0;if((l|0)<0){l=0-(8192-l>>14)|0;break}else{l=l+8192>>14;break}}else{l=c[s>>2]|0;break}}else{l=c[wa>>2]|0;if(!l){l=0;break}if(c[l>>2]|0){l=0;break}c[l>>2]=130;l=0}while(0);y=l+p|0;Hu(Wa,v,t,r,p,q,y);c[Aa>>2]=q;c[Ba>>2]=y;f=f+6|0}while(f>>>0>>0);c[va>>2]=ua;f=z;break}case 1:case 18:{Du(e,Ia,Xa,m,ta);if(!(a[(c[qa>>2]|0)+753>>0]|0))A=767;else{o=0;A=769;break a}break}case 4:{s=c[va>>2]|0;f=s-ma>>3;if(!(f>>>0<2|(a[ta>>0]|0)!=0)){do if(!f){f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}else{f=c[X>>2]|0;if((f|0)==2){f=c[ua>>2]<<16;break}else if((f|0)==1){f=c[ua>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[ua>>2]|0;break}}while(0);c[m>>2]=f+sa}a[ta>>0]=1;if(a[(c[qa>>2]|0)+753>>0]|0){o=0;A=769;break a}do if((s|0)==(ua|0)){f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=161;f=0}else f=0}else{l=s+-8|0;c[va>>2]=l;f=c[s+-4>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}while(0);f=(c[Ba>>2]|0)+f|0;c[Ba>>2]=f;l=c[Aa>>2]|0;if(a[oa>>0]|0){Eu(Wa,c[ja>>2]|0,c[ka>>2]|0);Fu(Wa,ra,la,c[ha>>2]|0,c[ia>>2]|0,1);a[na>>0]=1;a[oa>>0]=0;a[pa>>0]=0}c[ja>>2]=l;c[C>>2]=l;c[ka>>2]=f;c[D>>2]=f;a[na>>0]=1;f=c[da>>2]|0;if(!((a[B>>0]|0)!=0?(a[f+5>>0]|0)==0:0))Gu($,c[aa>>2]|0,c[ca>>2]|0,f,c[ea>>2]|0,0);qfa(ra|0,$|0,3868)|0;A=767;break}case 5:{f=c[va>>2]|0;r=f-ma>>3;e:do if(r){l=0;while(1){q=f-ma>>3;do if(q>>>0>l>>>0){f=Ia+(l<<3)+8|0;s=c[Ia+(l<<3)+12>>2]|0;if((s|0)==2){f=c[f>>2]<<16;break}else if((s|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);p=(c[Aa>>2]|0)+f|0;c[Aa>>2]=p;f=l|1;do if(q>>>0>f>>>0){s=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==1){f=c[s>>2]|0;if((f|0)<0){s=0-(8192-f>>14)|0;f=p;break}else{s=f+8192>>14;f=p;break}}else if((f|0)==2){s=c[s>>2]<<16;f=p;break}else{s=c[s>>2]|0;f=p;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;s=0;f=c[Aa>>2]|0}else{s=0;f=p}}while(0);y=(c[Ba>>2]|0)+s|0;c[Ba>>2]=y;Eu(Wa,f,y);l=l+2|0;if(l>>>0>=r>>>0)break e;f=c[va>>2]|0}}while(0);c[va>>2]=ua;f=z;break}case 3:case 23:{Du(e,Ia,Za,m,ta);if(!(a[(c[qa>>2]|0)+753>>0]|0))A=767;else{o=0;A=769;break a}break}case 8:case 24:{f=c[va>>2]|0;x=f-ma>>3;f:do if(x>>>0<6)p=0;else{p=6;w=0;while(1){u=f-ma>>3;do if(u>>>0>w>>>0){f=Ia+(w<<3)+8|0;l=c[Ia+(w<<3)+12>>2]|0;if((l|0)==2){f=c[f>>2]<<16;break}else if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);v=(c[Aa>>2]|0)+f|0;f=w|1;do if(u>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);t=(c[Ba>>2]|0)+f|0;f=w+2|0;do if(u>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);r=f+v|0;f=w+3|0;do if(u>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((f|0)==2){f=c[l>>2]<<16;break}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);q=f+t|0;f=w+4|0;do if(u>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);s=f+r|0;f=w+5|0;do if(u>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if(!f)f=0;else{if(c[f>>2]|0){f=0;break}c[f>>2]=130;f=0}}while(0);l=f+q|0;Hu(Wa,v,t,r,q,s,l);c[Aa>>2]=s;c[Ba>>2]=l;l=p+6|0;if(l>>>0>x>>>0)break f;w=p;f=c[va>>2]|0;p=l}}while(0);if((y|0)==24){s=(c[va>>2]|0)-ma>>3;do if(s>>>0>p>>>0){f=Ia+(p<<3)+8|0;l=c[Ia+(p<<3)+12>>2]|0;if((l|0)==2){f=c[f>>2]<<16;break}else if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);q=(c[Aa>>2]|0)+f|0;c[Aa>>2]=q;f=p|1;do if(s>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){l=c[l>>2]<<16;f=q;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){l=0-(8192-f>>14)|0;f=q;break}else{l=f+8192>>14;f=q;break}}else{l=c[l>>2]|0;f=q;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;l=0;f=c[Aa>>2]|0}else{l=0;f=q}}while(0);y=(c[Ba>>2]|0)+l|0;c[Ba>>2]=y;Eu(Wa,f,y)}c[va>>2]=ua;f=z;break}case 7:case 6:{f=c[va>>2]|0;p=f-ma>>3;g:do if(p){l=0;q=(y|0)==6;while(1){do if(f-ma>>3>>>0>l>>>0){f=Ia+(l<<3)+8|0;s=c[Ia+(l<<3)+12>>2]|0;if((s|0)==2){f=c[f>>2]<<16;break}else if((s|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);if(q){f=(c[Aa>>2]|0)+f|0;c[Aa>>2]=f;s=c[Ba>>2]|0}else{s=(c[Ba>>2]|0)+f|0;c[Ba>>2]=s;f=c[Aa>>2]|0}Eu(Wa,f,s);l=l+1|0;if((l|0)==(p|0))break g;f=c[va>>2]|0;q=q^1}}while(0);c[va>>2]=ua;f=z;break}case 12:{if(l>>>0>=q>>>0){f=c[o>>2]|0;if(!f){A=767;break c}if(c[f>>2]|0){A=767;break c}c[f>>2]=85;A=767;break c}c[p>>2]=l+1;f=d[l>>0]|0;if((f|0)==35){Iu(Ia,Aa,Ba,Wa,10256,0);A=767;break c}else if((f|0)==37){Iu(Ia,Aa,Ba,Wa,10288,1);f=z;break c}else if((f|0)==34){Iu(Ia,Aa,Ba,Wa,10240,0);f=z;break c}else if((f|0)==36){Iu(Ia,Aa,Ba,Wa,10272,0);f=z;break c}else{A=767;break c}}case 14:break b;case 10:case 29:{if((z|0)>10){o=18;A=769;break a}q=z+1|0;if((c[Ya>>2]|0)>>>0>q>>>0)f=q;else{c[Ha>>2]=130;f=0}s=f<<4;o=n+s|0;f=c[va>>2]|0;do if((f|0)==(ua|0)){f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=161;f=0}else f=0}else{l=f+-8|0;if((c[f+-4>>2]|0)==2){c[va>>2]=l;f=c[l>>2]|0;break}f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=160;f=0}else f=0}while(0);c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;if((y|0)==29){f=(c[E>>2]|0)+f|0;if(f>>>0>=(c[F>>2]|0)>>>0){o=18;A=769;break a}z=c[G>>2]|0;y=c[z+(f<<2)>>2]|0;c[n+(s|12)>>2]=y;c[n+(s|4)>>2]=y;c[n+(s|8)>>2]=c[z+(f+1<<2)>>2];f=q;break c}else{f=(c[H>>2]|0)+f|0;if(f>>>0>=(c[I>>2]|0)>>>0){o=18;A=769;break a}z=c[J>>2]|0;y=c[z+(f<<2)>>2]|0;c[n+(s|12)>>2]=y;c[n+(s|4)>>2]=y;c[n+(s|8)>>2]=c[z+(f+1<<2)>>2];f=q;break c}}case 11:{if((z|0)<1){o=18;A=769;break a}l=z+-1|0;f=(c[Ya>>2]|0)>>>0>l>>>0;if(f)f=f?l:0;else{c[Ha>>2]=130;f=0}o=n+(f<<4)|0;f=l;break}case 19:case 20:{Du(e,Ia,Za,m,ta);if(a[(c[qa>>2]|0)+753>>0]|0){o=0;A=769;break a}if((y|0)==19){f=(c[Oa>>2]|0)+(c[Ka>>2]|0)|0;if(f>>>0>96){f=c[ga>>2]|0;if(!f){A=767;break c}if(c[f>>2]|0){A=767;break c}c[f>>2]=18;A=767;break c}c[K>>2]=f;A=(f+7|0)>>>3;c[L>>2]=A;a[M>>0]=1;a[N>>0]=1;if((f|0)==0|(A|0)==0){A=767;break c}l=0;do{f=c[p>>2]|0;if(f>>>0>=(c[s>>2]|0)>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;f=0}else f=0}else{c[p>>2]=f+1;f=a[f>>0]|0}a[ga+l+16>>0]=f;l=l+1|0}while(l>>>0<(c[L>>2]|0)>>>0);A=767}else{sfa(Ga|0,0,3868)|0;a[O>>0]=a[_>>0]|0;c[P>>2]=ba;c[Ga>>2]=e;c[Q>>2]=Z;c[R>>2]=Y;c[fa+0>>2]=0;c[fa+4>>2]=0;c[fa+8>>2]=0;c[fa+12>>2]=0;c[fa+16>>2]=0;c[fa+20>>2]=0;c[fa+24>>2]=0;c[fa>>2]=Ha;f=(c[Oa>>2]|0)+(c[Ka>>2]|0)|0;if(f>>>0>96){if(!(c[Ha>>2]|0))c[Ha>>2]=18}else{c[S>>2]=f;A=(f+7|0)>>>3;c[T>>2]=A;a[U>>0]=1;a[V>>0]=1;if(!((f|0)==0|(A|0)==0)){l=0;do{f=c[p>>2]|0;if(f>>>0>=(c[s>>2]|0)>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;f=0}else f=0}else{c[p>>2]=f+1;f=a[f>>0]|0}a[fa+l+16>>0]=f;l=l+1|0}while(l>>>0<(c[T>>2]|0)>>>0)}}Gu(Ga,Xa,Za,fa,0,0);A=767;break c}break}case 21:{q=c[va>>2]|0;f=q-ma>>3;if(!(f>>>0<3|(a[ta>>0]|0)!=0)){do if(!f){f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}else{f=c[X>>2]|0;if((f|0)==2){f=c[ua>>2]<<16;break}else if((f|0)==1){f=c[ua>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[ua>>2]|0;break}}while(0);c[m>>2]=f+sa}a[ta>>0]=1;if(a[(c[qa>>2]|0)+753>>0]|0){o=0;A=769;break a}do if((q|0)!=(ua|0)){s=q+-8|0;c[va>>2]=s;f=c[q+-4>>2]|0;do if((f|0)==2)f=c[s>>2]<<16;else if((f|0)==1){f=c[s>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else f=c[s>>2]|0;while(0);l=(c[Ba>>2]|0)+f|0;c[Ba>>2]=l;if((s|0)!=(ua|0)){s=q+-16|0;c[va>>2]=s;f=c[q+-12>>2]|0;if((f|0)==1){f=c[s>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((f|0)==2){f=c[s>>2]<<16;break}else{f=c[s>>2]|0;break}}else A=348}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0)c[f>>2]=161;l=c[Ba>>2]|0;A=348}while(0);if((A|0)==348){f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=161;f=0;l=c[Ba>>2]|0}else f=0}f=(c[Aa>>2]|0)+f|0;c[Aa>>2]=f;if(a[oa>>0]|0){Eu(Wa,c[ja>>2]|0,c[ka>>2]|0);Fu(Wa,ra,la,c[ha>>2]|0,c[ia>>2]|0,1);a[na>>0]=1;a[oa>>0]=0;a[pa>>0]=0}c[ja>>2]=f;c[C>>2]=f;c[ka>>2]=l;c[D>>2]=l;a[na>>0]=1;f=c[da>>2]|0;if(!((a[B>>0]|0)!=0?(a[f+5>>0]|0)==0:0))Gu($,c[aa>>2]|0,c[ca>>2]|0,f,c[ea>>2]|0,0);qfa(ra|0,$|0,3868)|0;A=767;break}default:{if(y>>>0<247){f=c[va>>2]|0;if((f|0)!=(va|0)){c[f>>2]=y+-139;c[f+4>>2]=2;c[va>>2]=f+8;f=z;break c}f=c[wa>>2]|0;if(!f){f=z;break c}if(c[f>>2]|0){f=z;break c}c[f>>2]=130;f=z;break c}if(y>>>0<251){s=(y<<8)+-63232|0;if(l>>>0>=q>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;f=0}else f=0}else{c[p>>2]=l+1;f=d[l>>0]|0}l=c[va>>2]|0;if((l|0)!=(va|0)){c[l>>2]=(f|s)+108;c[l+4>>2]=2;c[va>>2]=l+8;f=z;break c}f=c[wa>>2]|0;if(!f){f=z;break c}if(c[f>>2]|0){f=z;break c}c[f>>2]=130;f=z;break c}if((y|0)!=255){s=(y<<8)+-64256|0;if(l>>>0>=q>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;f=0}else f=0}else{c[p>>2]=l+1;f=d[l>>0]|0}l=c[va>>2]|0;if((l|0)!=(va|0)){c[l>>2]=-108-(f|s);c[l+4>>2]=2;c[va>>2]=l+8;f=z;break c}f=c[wa>>2]|0;if(!f){f=z;break c}if(c[f>>2]|0){f=z;break c}c[f>>2]=130;f=z;break c}if(l>>>0>=q>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;s=0}else s=0}else{y=l+1|0;c[p>>2]=y;s=d[l>>0]<<24;l=y}if(l>>>0>=q>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;f=0}else f=0}else{y=l+1|0;c[p>>2]=y;f=d[l>>0]<<16;l=y}s=f|s;if(l>>>0>=q>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;f=0}else f=0}else{y=l+1|0;c[p>>2]=y;f=d[l>>0]<<8;l=y}s=s|f;if(l>>>0>=q>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;f=0}else f=0}else{c[p>>2]=l+1;f=d[l>>0]|0}l=c[va>>2]|0;if((l|0)!=(va|0)){c[l>>2]=s|f;c[l+4>>2]=0;c[va>>2]=l+8;f=z;break c}f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=z}else f=z}}while(0);if((A|0)==767){A=0;c[va>>2]=ua;f=z}z=f;W=W+-1|0}o=c[va>>2]|0;f=o-ma>>3;if((f|0)==1){if(!(a[ta>>0]|0))A=212}else if(!((f|0)!=5|(a[ta>>0]|0)!=0))A=212;if((A|0)==212){do if((o|0)==(ua|0)){f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}else{f=c[X>>2]|0;if((f|0)==2){f=c[ua>>2]<<16;break}else if((f|0)==1){f=c[ua>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[ua>>2]|0;break}}while(0);c[m>>2]=f+sa}a[ta>>0]=1;if(!(a[(c[qa>>2]|0)+753>>0]|0)){if(a[oa>>0]|0){Eu(Wa,c[ja>>2]|0,c[ka>>2]|0);Fu(Wa,ra,la,c[ha>>2]|0,c[ia>>2]|0,1);a[na>>0]=1;a[oa>>0]=0;a[pa>>0]=0;o=c[va>>2]|0}if(o-ma>>3>>>0>1)if(!(j<<24>>24)){do if((o|0)==(ua|0)){l=c[wa>>2]|0;if(l)if(!(c[l>>2]|0)){c[l>>2]=161;q=0;A=238}else{q=0;A=238}else{o=0;l=0;A=256}}else{l=o+-8|0;if((c[o+-4>>2]|0)!=2){l=c[wa>>2]|0;if((l|0)!=0?(c[l>>2]|0)==0:0){c[l>>2]=160;q=0;l=o}else{q=0;l=o}}else{c[va>>2]=l;q=c[l>>2]|0}if((l|0)!=(ua|0)){p=l+-8|0;if((c[l+-4>>2]|0)!=2){o=c[wa>>2]|0;if((o|0)!=0?(c[o>>2]|0)==0:0){c[o>>2]=160;o=0}else o=0}else{c[va>>2]=p;o=c[p>>2]|0;l=p}if((l|0)!=(ua|0)){r=l+-8|0;c[va>>2]=r;p=c[l+-4>>2]|0;do if((p|0)==1){p=c[r>>2]|0;if((p|0)<0){p=0-(8192-p>>14)|0;break}else{p=p+8192>>14;break}}else if((p|0)==2)p=c[r>>2]<<16;else p=c[r>>2]|0;while(0);c[Ba>>2]=p;if((r|0)!=(ua|0)){p=l+-16|0;c[va>>2]=p;l=c[l+-12>>2]|0;if((l|0)==1){l=c[p>>2]|0;if((l|0)<0){l=0-(8192-l>>14)|0;v=o;break}else{l=l+8192>>14;v=o;break}}else if((l|0)==2){l=c[p>>2]<<16;v=o;break}else{l=c[p>>2]|0;v=o;break}}else A=258}else A=247}else A=238}while(0);if((A|0)==238){l=c[wa>>2]|0;if(l)if(!(c[l>>2]|0)){c[l>>2]=161;o=0;A=247}else{o=0;A=247}else{o=0;l=q;A=256}}if((A|0)==247){l=c[wa>>2]|0;if((l|0)!=0?(c[l>>2]|0)==0:0){c[l>>2]=161;l=q;A=256}else{l=q;A=256}}if((A|0)==256){c[Ba>>2]=0;q=l;A=258}if((A|0)==258){l=c[wa>>2]|0;if((l|0)!=0?(c[l>>2]|0)==0:0){c[l>>2]=161;l=0;v=o}else{l=0;v=o}}c[Aa>>2]=l;c[Da+0>>2]=0;c[Da+4>>2]=0;c[Da+8>>2]=0;c[Da+12>>2]=0;s=xa+76|0;l=c[s>>2]|0;p=c[l+1160>>2]|0;if(!((p|0)==0|q>>>0>255)){if(q>>>0<256)q=b[6744+(q<<1)>>1]|0;else q=0;l=c[l+12>>2]|0;if(l){o=0;while(1){if((b[p+(o<<1)>>1]|0)==q<<16>>16){q=o;break}o=o+1|0;if(o>>>0>=l>>>0){o=18;A=769;break a}}if((q|0)>=0){u=xa+4|0;l=c[u>>2]|0;o=c[(c[l+128>>2]|0)+48>>2]|0;if(!o)o=xs((c[l+652>>2]|0)+1176|0,q,ya,za)|0;else{o=Hd[c[c[o>>2]>>2]&255](c[o+4>>2]|0,q,Ga)|0;c[ya>>2]=c[Ga>>2];c[za>>2]=c[Ga+4>>2]}if(!o){p=c[ya>>2]|0;t=Da+4|0;c[t>>2]=p;q=c[za>>2]|0;f=Da+8|0;c[f>>2]=p+q;r=Da+12|0;c[r>>2]=p;eu(e,Da,g,h,1,c[Aa>>2]|0,c[Ba>>2]|0,Ea);l=c[u>>2]|0;o=c[(c[l+128>>2]|0)+48>>2]|0;if(!o){l=c[l+652>>2]|0;if(!(c[l+1204>>2]|0))Vh(c[l+1176>>2]|0,t)}else{c[Ga>>2]=p;c[Ga+4>>2]=q;Cd[c[(c[o>>2]|0)+4>>2]&255](c[o+4>>2]|0,Ga)};c[Da+0>>2]=0;c[Da+4>>2]=0;c[Da+8>>2]=0;c[Da+12>>2]=0;l=c[s>>2]|0;q=c[l+1160>>2]|0;if(!((q|0)==0|v>>>0>255)){if(v>>>0<256)o=b[6744+(v<<1)>>1]|0;else o=0;l=c[l+12>>2]|0;if(l){p=0;while(1){if((b[q+(p<<1)>>1]|0)==o<<16>>16)break;p=p+1|0;if(p>>>0>=l>>>0){o=18;A=769;break a}}if((p|0)<0){o=18;A=769;break}l=c[u>>2]|0;o=c[(c[l+128>>2]|0)+48>>2]|0;if(!o)o=xs((c[l+652>>2]|0)+1176|0,p,Ca,Fa)|0;else{o=Hd[c[c[o>>2]>>2]&255](c[o+4>>2]|0,p,Ga)|0;c[Ca>>2]=c[Ga>>2];c[Fa>>2]=c[Ga+4>>2]}if(o){A=769;break}o=c[Ca>>2]|0;c[t>>2]=o;c[f>>2]=o+(c[Fa>>2]|0);c[r>>2]=o;eu(e,Da,g,h,1,0,0,Ea);o=c[u>>2]|0;l=c[t>>2]|0;p=c[(c[o+128>>2]|0)+48>>2]|0;if(p){o=(c[f>>2]|0)-l|0;c[Ga>>2]=l;c[Ga+4>>2]=o;Cd[c[(c[p>>2]|0)+4>>2]&255](c[p+4>>2]|0,Ga);o=0;A=769;break}o=c[o+652>>2]|0;if(c[o+1204>>2]|0){o=0;A=769;break}Vh(c[o+1176>>2]|0,t);o=0;A=769}else{o=18;A=769}}else{o=18;A=769}}else A=769}else{o=18;A=769}}else{o=18;A=769}}else{o=18;A=769}}else{o=18;A=769}else{o=0;A=769}}else{o=0;A=769}}}while(0);if((A|0)==769)if(!(c[Ha>>2]|0))c[Ha>>2]=o;Wa=c[Wa+11612>>2]|0;c[Ra>>2]=0;c[Sa>>2]=0;c[Ta>>2]=0;Ag(Wa,c[Ua>>2]|0);c[Ua>>2]=0;Za=c[Za>>2]|0;c[Na>>2]=0;c[Oa>>2]=0;c[Pa>>2]=0;Ag(Za,c[Qa>>2]|0);c[Qa>>2]=0;Za=c[Xa>>2]|0;c[Ja>>2]=0;c[Ka>>2]=0;c[La>>2]=0;Ag(Za,c[Ma>>2]|0);c[Ma>>2]=0;c[Ya>>2]=0;Ag(Va,n);if(k){i=_a;return}Ag(c[Ia>>2]|0,Ia);i=_a;return}function fu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;g=c[b+192>>2]|0;f=c[b+188>>2]|0;a:do if(f){e=0;while(1){if((c[g+(e<<4)>>2]|0)==(d|0))break;e=e+1|0;if(e>>>0>=f>>>0){e=3;break a}}f=c[a+8>>2]|0;e=c[g+(e<<4)+12>>2]|0;if(e>>>0>=f>>>0?(Mh(a,e-f|0)|0)==0:0){c[j>>2]=0;f=ei(a,j)|0;e=c[j>>2]|0;if(e){a=e;i=k;return a|0}h=f&-256;if(!((h|0)==256|(h|0)==0)){a=0;i=k;return a|0}g=f&4;e=b+196|0;if(!g){e=fi(a,18640,e)|0;c[j>>2]=e;if(e){a=e;i=k;return a|0}}else{e=fi(a,18584,e)|0;c[j>>2]=e;if(e){a=e;i=k;return a|0}}f=b+216|0;d=(g|0)!=0?18488:18520;e=fi(a,d,f)|0;c[j>>2]=e;if(e){a=e;i=k;return a|0}g=b+232|0;e=fi(a,d,g)|0;c[j>>2]=e;if(e){a=e;i=k;return a|0}e=b+248|0;if((h|0)!=256){c[e+0>>2]=c[f+0>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];a=b+264|0;c[a+0>>2]=c[g+0>>2];c[a+4>>2]=c[g+4>>2];c[a+8>>2]=c[g+8>>2];c[a+12>>2]=c[g+12>>2];a=0;i=k;return a|0}e=fi(a,d,e)|0;c[j>>2]=e;if(e){a=e;i=k;return a|0}a=fi(a,d,b+264|0)|0;c[j>>2]=a;i=k;return a|0}else e=83}else e=3;while(0);c[j>>2]=e;a=e;i=k;return a|0}function gu(a,d,e,f,g,h,i){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(!i)r=a+516|0;else{r=a+1548|0;a=a+1032|0}c[a>>2]=0;c[r>>2]=0;if(d>>>0>1){i=0;p=0;k=0;while(1){if(k){m=b[e>>1]|0;k=a;j=p;o=(b[e+2>>1]|0)-m|0;n=1}else{m=b[e+2>>1]|0;k=r;j=i;o=(b[e>>1]|0)-m|0;n=0}k=k+4|0;a:do if(j){while(1){l=c[k>>2]|0;if((m|0)<(l|0)){q=9;break}if((m|0)==(l|0))break;j=j+-1|0;k=k+32|0;if(!j){q=19;break a}}if((q|0)==9){if(!j){q=19;break}while(1){q=k+(j<<5)|0;j=j+-1|0;l=k+(j<<5)|0;c[q+0>>2]=c[l+0>>2];c[q+4>>2]=c[l+4>>2];c[q+8>>2]=c[l+8>>2];c[q+12>>2]=c[l+12>>2];c[q+16>>2]=c[l+16>>2];c[q+20>>2]=c[l+20>>2];c[q+24>>2]=c[l+24>>2];c[q+28>>2]=c[l+28>>2];if(!j){q=19;break a}}}k=k+4|0;j=c[k>>2]|0;if((o|0)<0){if((o|0)>=(j|0)){k=p;break}c[k>>2]=o;k=p;break}else{if((o|0)<=(j|0)){k=p;break}c[k>>2]=o;k=p;break}}else q=19;while(0);do if((q|0)==19){q=0;c[k>>2]=m;c[k+4>>2]=o;if(!(n<<24>>24)){i=i+1|0;k=p;break}else{k=p+1|0;break}}while(0);d=d+-2|0;if(d>>>0<=1){o=k;break}else{e=e+4|0;p=k;k=1}}}else{i=0;o=0}c[a>>2]=o;c[r>>2]=i;if(f>>>0>1){n=r+4|0;m=g;while(1){j=b[m+2>>1]|0;l=(b[m>>1]|0)-j|0;b:do if(i){d=i;e=n;while(1){k=c[e>>2]|0;if((j|0)<(k|0)){q=26;break}if((j|0)==(k|0))break;d=d+-1|0;e=e+32|0;if(!d){q=36;break b}}if((q|0)==26){if(!d){q=36;break}while(1){q=e+(d<<5)|0;d=d+-1|0;g=e+(d<<5)|0;c[q+0>>2]=c[g+0>>2];c[q+4>>2]=c[g+4>>2];c[q+8>>2]=c[g+8>>2];c[q+12>>2]=c[g+12>>2];c[q+16>>2]=c[g+16>>2];c[q+20>>2]=c[g+20>>2];c[q+24>>2]=c[g+24>>2];c[q+28>>2]=c[g+28>>2];if(!d){q=36;break b}}}e=e+4|0;d=c[e>>2]|0;if((l|0)<0){if((l|0)>=(d|0))break;c[e>>2]=l;break}else{if((l|0)<=(d|0))break;c[e>>2]=l;break}}else{e=n;q=36}while(0);if((q|0)==36){q=0;c[e>>2]=j;c[e+4>>2]=l;i=i+1|0}f=f+-2|0;if(f>>>0<=1){m=i;break}else m=m+4|0}}else m=i;c[a>>2]=o;c[r>>2]=m;if((o|0)>0){j=o;l=a+4|0;while(1){if(j>>>0>1){e=c[l>>2]|0;k=(c[l+32>>2]|0)-e|0;d=l+4|0;i=c[d>>2]|0;if((i|0)>(k|0)){c[d>>2]=k;i=k}}else{e=c[l>>2]|0;i=c[l+4>>2]|0}c[l+12>>2]=e;c[l+8>>2]=e+i;j=j+-1|0;if(!j)break;else l=l+32|0}}if((m|0)>0){k=m;l=r+4|0;while(1){j=c[l>>2]|0;if(k>>>0>1){e=j-(c[l+32>>2]|0)|0;d=l+4|0;i=c[d>>2]|0;if((i|0)<(e|0)){c[d>>2]=e;i=e}}else i=c[l+4>>2]|0;c[l+8>>2]=j;c[l+12>>2]=j+i;k=k+-1|0;if(!k)break;else l=l+32|0}}f=h<<1;l=a+4|0;if(o){d=a+16|0;c[d>>2]=(c[d>>2]|0)-h;d=o+-1|0;i=c[a+12>>2]|0;if(!d)e=l;else{e=a+-28+(o<<3<<2)|0;while(1){a=l+44|0;j=c[a>>2]|0;k=j-i|0;if((k|0)<(f|0)){q=((k|0)/2|0)+i|0;c[a>>2]=q;c[l+8>>2]=q}else{c[l+8>>2]=i+h;c[a>>2]=j-h}d=d+-1|0;i=c[l+40>>2]|0;if(!d)break;else l=l+32|0}}c[e+8>>2]=i+h}a=r+4|0;if(!m)return;d=r+16|0;c[d>>2]=(c[d>>2]|0)-h;d=m+-1|0;i=c[r+12>>2]|0;if(!d)e=a;else{e=r+-28+(m<<3<<2)|0;l=a;while(1){k=l+44|0;j=c[k>>2]|0;a=j-i|0;if((a|0)<(f|0)){i=((a|0)/2|0)+i|0;a=i}else{a=i+h|0;i=j-h|0}c[k>>2]=i;c[l+8>>2]=a;d=d+-1|0;i=c[l+40>>2]|0;if(!d)break;else l=l+32|0}}c[e+8>>2]=i+h;return}function hu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+32|0;v=w+16|0;u=w;g=c[b+12>>2]|0;if(g)c[(c[b+20>>2]|0)+(g+-1<<4)+12>>2]=e;t=b+24|0;e=c[t>>2]|0;h=e+-1|0;if((h|0)<=0){f=0;i=w;return f|0}s=b+32|0;g=e;a:while(1){e=e+-2|0;b:do if((e|0)>-1){r=c[s>>2]|0;m=c[r+(h<<4)+8>>2]|0;n=c[r+(h<<4)>>2]|0;c:while(1){j=c[r+(e<<4)+8>>2]|0;b=c[r+(e<<4)>>2]|0;b=n>>>0>>0?n:b;if(b>>>0>7){k=m;do{if((a[j>>0]&a[k>>0])<<24>>24)break c;k=k+1|0;j=j+1|0;b=b+-8|0}while(b>>>0>7)}else k=m;if((b|0)!=0?(a[j>>0]&a[k>>0]&255&~(255>>>b)|0)!=0:0)break;if((e|0)>0)e=e+-1|0;else break b}o=(e|0)>(h|0);q=o?e:h;o=o?h:e;if((o|0)<(q|0)&(o|0)>-1&(q|0)<(g|0)){p=r+(q<<4)|0;m=r+(o<<4)|0;j=c[m>>2]|0;n=c[p>>2]|0;if(n){if(n>>>0>j>>>0){b=r+(o<<4)+4|0;g=((c[b>>2]|0)+7|0)>>>3;l=(n+7|0)>>>3;c[v>>2]=0;if(l>>>0>g>>>0){k=l+7&1073741816;e=r+(o<<4)+8|0;c[e>>2]=Dg(f,1,g,k,c[e>>2]|0,v)|0;g=c[v>>2]|0;if(g){e=33;break a}c[b>>2]=k<<3}else e=r+(o<<4)+8|0;g=j;do{if((c[m>>2]|0)>>>0>g>>>0){j=(c[e>>2]|0)+(g>>3)|0;a[j>>0]=(d[j>>0]|0)&(128>>>(g&7)^255)}g=g+1|0}while((g|0)!=(n|0));g=l}else g=(n+7|0)>>>3;if(g){b=c[r+(q<<4)+8>>2]|0;e=c[r+(o<<4)+8>>2]|0;while(1){a[e>>0]=a[b>>0]|a[e>>0];g=g+-1|0;if(!g)break;else{b=b+1|0;e=e+1|0}}}g=c[t>>2]|0}c[p>>2]=0;c[r+(q<<4)+12>>2]=0;e=g+-1|0;b=e-q|0;if((b|0)>0){c[u+0>>2]=c[p+0>>2];c[u+4>>2]=c[p+4>>2];c[u+8>>2]=c[p+8>>2];c[u+12>>2]=c[p+12>>2];rfa(p|0,r+(q+1<<4)|0,b<<4|0)|0;g=r+(e<<4)|0;c[g+0>>2]=c[u+0>>2];c[g+4>>2]=c[u+4>>2];c[g+8>>2]=c[u+8>>2];c[g+12>>2]=c[u+12>>2];g=c[t>>2]|0}g=g+-1|0;c[t>>2]=g}}while(0);e=h+-1|0;if((e|0)>0){r=h;h=e;e=r}else{g=0;e=33;break}}if((e|0)==33){i=w;return g|0}return 0}function iu(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;i=i+16|0;t=u+8|0;r=u;q=u+4|0;if((f|0)<0){p=(f|0)==-21;f=0;e=(p?-21:0)+e|0;p=p?3:1}else p=0;s=(h|0)!=0;if(s)c[h>>2]=-1;o=c[b>>2]|0;a:do if(!o){k=0;m=10}else{k=0;j=c[b+8>>2]|0;while(1){if((c[j>>2]|0)==(e|0)?(c[j+4>>2]|0)==(f|0):0){o=k;break a}k=k+1|0;if(k>>>0>>0)j=j+12|0;else{m=10;break}}}while(0);if((m|0)==10){m=o+1|0;l=b+4|0;j=c[l>>2]|0;do if(m>>>0>=j>>>0?(c[q>>2]=0,j>>>0>>0):0){n=o+8&-8;v=b+8|0;c[v>>2]=Dg(g,12,j,n,c[v>>2]|0,q)|0;j=c[q>>2]|0;if(!j){c[l>>2]=n;break}else{v=j;i=u;return v|0}}while(0);v=c[b+8>>2]|0;c[b>>2]=m;c[v+(o*12|0)>>2]=e;c[v+(o*12|0)+4>>2]=f;c[v+(o*12|0)+8>>2]=p;o=k}k=b+12|0;f=c[k>>2]|0;if(!f){j=b+16|0;do if(!(c[j>>2]|0)){c[r>>2]=0;e=b+20|0;f=Dg(g,16,0,8,c[e>>2]|0,r)|0;c[e>>2]=f;e=c[r>>2]|0;if(!e){c[j>>2]=8;break}else{v=e;i=u;return v|0}}else f=c[b+20>>2]|0;while(0);c[f>>2]=0;c[f+12>>2]=0;c[k>>2]=1}else f=(c[b+20>>2]|0)+(f+-1<<4)|0;if((o|0)>=0){if((c[f>>2]|0)>>>0<=o>>>0){l=o+1|0;m=f+4|0;j=((c[m>>2]|0)+7|0)>>>3;e=(o+8|0)>>>3;c[t>>2]=0;do if(e>>>0>j>>>0){k=e+7&1073741816;e=f+8|0;c[e>>2]=Dg(g,1,j,k,c[e>>2]|0,t)|0;e=c[t>>2]|0;if(!e){c[m>>2]=k<<3;break}else{v=e;i=u;return v|0}}while(0);c[f>>2]=l}v=(c[f+8>>2]|0)+(o>>3)|0;a[v>>0]=d[v>>0]|0|128>>>(o&7)}if(!s){v=0;i=u;return v|0}c[h>>2]=o;v=0;i=u;return v|0}function ju(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+16|0;s=t+8|0;q=t;k=t+4|0;r=b+12|0;n=c[r>>2]|0;if(n)c[(c[b+20>>2]|0)+(n+-1<<4)+12>>2]=h;o=n+1|0;p=b+16|0;m=c[p>>2]|0;do if(o>>>0>m>>>0){c[k>>2]=0;l=n+8&-8;u=b+20|0;h=Dg(j,16,m,l,c[u>>2]|0,k)|0;c[u>>2]=h;m=c[k>>2]|0;if(!m){c[p>>2]=l;m=l;break}else{u=m;i=t;return u|0}}else h=c[b+20>>2]|0;while(0);c[h+(n<<4)>>2]=0;c[h+(n<<4)+12>>2]=0;c[r>>2]=o;if(!o){do if(!m){c[q>>2]=0;h=Dg(j,16,0,8,h,q)|0;c[b+20>>2]=h;k=c[q>>2]|0;if(!k){c[p>>2]=8;break}else{u=k;i=t;return u|0}}while(0);c[h>>2]=0;c[h+12>>2]=0;c[r>>2]=1}else h=h+(n<<4)|0;n=h+4|0;m=((c[n>>2]|0)+7|0)>>>3;k=(g+7|0)>>>3;c[s>>2]=0;do if(k>>>0>m>>>0){l=k+7&1073741816;k=h+8|0;c[k>>2]=Dg(j,1,m,l,c[k>>2]|0,s)|0;k=c[s>>2]|0;if(!k){c[n>>2]=l<<3;break}else{u=k;i=t;return u|0}}while(0);c[h>>2]=g;if(!g){u=0;i=t;return u|0}o=e+(f>>>3)|0;k=128>>>(f&7);l=128;n=c[h+8>>2]|0;while(1){a[n>>0]=(((d[o>>0]|0)&k|0)==0?0:l)|(d[n>>0]|0)&(l^255);h=k>>1;k=(h|0)==0;l=l>>1;m=(l|0)==0;g=g+-1|0;if(!g){h=0;break}else{o=k?o+1|0:o;k=k?128:h;l=m?128:l;n=m?n+1|0:n}}i=t;return h|0}function ku(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=e+100|0;h=c[p>>2]|0;do if((h|0)==2){h=c[e+72>>2]|0;if((h|0)<(g|0)){o=c[e+4>>2]|0;o=((h+-1+o&0-o)-h|0)<(c[e+8>>2]|0);m=e+40|0;k=c[m>>2]|0;n=e+88|0;j=c[n>>2]|0;h=k-(c[j+8>>2]|0)|0;if((h|0)<0){c[e+44>>2]=99;g=1;return g|0}if((h|0)>0){c[j+16>>2]=h>>2;do if(!o){h=j+12|0;i=c[h>>2]|0;if(!(i&8)){c[h>>2]=i|32;break}else{c[h>>2]=i|16;break}}while(0);c[n>>2]=k;l=k+32|0;c[m>>2]=l;c[k+16>>2]=0;c[k+8>>2]=l;c[j+28>>2]=k;j=e+84|0;b[j>>1]=(b[j>>1]|0)+1<<16>>16}else{l=k;k=j}i=c[e+36>>2]|0;if(l>>>0>=i>>>0){c[e+44>>2]=98;g=1;return g|0}j=e+87|0;a[j>>0]=0;h=e+92|0;if(!(c[h>>2]|0)){c[n>>2]=l;c[h>>2]=l;h=l+32|0;c[m>>2]=h;k=l}else h=l;if(h>>>0>=i>>>0){c[e+44>>2]=98;g=1;return g|0}c[k+20>>2]=0;c[k+16>>2]=0;c[k+8>>2]=h;c[k+4>>2]=0;c[k+28>>2]=0;c[k+12>>2]=d[e+180>>0]|(o?8:40);h=e+96|0;if(!(c[h>>2]|0))c[h>>2]=k;c[p>>2]=1;a[e+86>>0]=1;a[j>>0]=0;j=55}else j=56}else if(!h){h=c[e+72>>2]|0;if((h|0)<(g|0)){k=c[e+4>>2]|0;k=((h+-1+k&0-k)-h|0)<(c[e+8>>2]|0);i=e+92|0;j=e+40|0;h=c[j>>2]|0;if(!(c[i>>2]|0)){c[e+88>>2]=h;c[i>>2]=h;h=h+32|0;c[j>>2]=h}if(h>>>0>=(c[e+36>>2]|0)>>>0){c[e+44>>2]=98;g=1;return g|0}i=c[e+88>>2]|0;c[i+20>>2]=0;c[i+16>>2]=0;c[i+8>>2]=h;c[i+4>>2]=0;c[i+28>>2]=0;c[i+12>>2]=d[e+180>>0]|(k?8:40);h=e+96|0;if(!(c[h>>2]|0))c[h>>2]=i;c[p>>2]=1;a[e+86>>0]=1;a[e+87>>0]=0;j=55;break}if((h|0)>(g|0)){k=((c[e+4>>2]|0)+-1&h|0)<(c[e+8>>2]|0);i=e+92|0;j=e+40|0;h=c[j>>2]|0;if(!(c[i>>2]|0)){c[e+88>>2]=h;c[i>>2]=h;h=h+32|0;c[j>>2]=h}if(h>>>0>=(c[e+36>>2]|0)>>>0){c[e+44>>2]=98;g=1;return g|0}i=c[e+88>>2]|0;c[i+20>>2]=0;c[i+16>>2]=0;c[i+8>>2]=h;c[i+4>>2]=0;c[i+28>>2]=0;h=d[e+180>>0]|0;c[i+12>>2]=k?h:h|16;h=e+96|0;if(!(c[h>>2]|0))c[h>>2]=i;c[p>>2]=2;a[e+86>>0]=1;a[e+87>>0]=0;j=56}else j=54}else if((h|0)==1){h=c[e+72>>2]|0;if((h|0)>(g|0)){o=((c[e+4>>2]|0)+-1&h|0)<(c[e+8>>2]|0);m=e+40|0;i=c[m>>2]|0;n=e+88|0;j=c[n>>2]|0;h=i-(c[j+8>>2]|0)|0;if((h|0)<0){c[e+44>>2]=99;g=1;return g|0}if((h|0)>0){c[j+16>>2]=h>>2;do if(!o){h=j+12|0;k=c[h>>2]|0;if(!(k&8)){c[h>>2]=k|32;break}else{c[h>>2]=k|16;break}}while(0);c[n>>2]=i;l=i+32|0;c[m>>2]=l;c[i+16>>2]=0;c[i+8>>2]=l;c[j+28>>2]=i;j=e+84|0;b[j>>1]=(b[j>>1]|0)+1<<16>>16}else{l=i;i=j}k=c[e+36>>2]|0;if(l>>>0>=k>>>0){c[e+44>>2]=98;g=1;return g|0}j=e+87|0;a[j>>0]=0;h=e+92|0;if(!(c[h>>2]|0)){c[n>>2]=l;c[h>>2]=l;h=l+32|0;c[m>>2]=h;i=l}else h=l;if(h>>>0>=k>>>0){c[e+44>>2]=98;g=1;return g|0}c[i+20>>2]=0;c[i+16>>2]=0;c[i+8>>2]=h;c[i+4>>2]=0;c[i+28>>2]=0;h=d[e+180>>0]|0;c[i+12>>2]=o?h:h|16;h=e+96|0;if(!(c[h>>2]|0))c[h>>2]=i;c[p>>2]=2;a[e+86>>0]=1;a[j>>0]=0;j=56}else j=55}else j=54;while(0);if((j|0)==54){i=e+72|0;h=e+68|0}else if((j|0)==55){h=e+68|0;i=e+72|0;if((Ju(e,c[h>>2]|0,c[i>>2]|0,f,g,c[e+76>>2]|0,c[e+80>>2]|0)|0)<<24>>24){g=1;return g|0}}else if((j|0)==56){h=e+68|0;i=e+72|0;n=e+86|0;l=a[n>>0]|0;j=Ju(e,c[h>>2]|0,0-(c[i>>2]|0)|0,f,0-g|0,0-(c[e+80>>2]|0)|0,0-(c[e+76>>2]|0)|0)|0;if(l<<24>>24!=0?(a[n>>0]|0)==0:0){e=(c[e+88>>2]|0)+20|0;c[e>>2]=0-(c[e>>2]|0)}if(j<<24>>24){g=1;return g|0}}c[h>>2]=f;c[i>>2]=g;g=0;return g|0}function lu(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;H=e+184|0;I=e+52|0;c[I>>2]=H;J=e+68|0;c[e+200>>2]=c[J>>2];K=e+72|0;s=c[K>>2]|0;c[e+204>>2]=s;c[e+192>>2]=f;c[e+196>>2]=g;c[H>>2]=h;c[e+188>>2]=i;t=e+100|0;u=e+76|0;v=e+80|0;w=e+86|0;x=e+88|0;y=e+4|0;z=e+8|0;A=e+92|0;B=e+40|0;C=e+36|0;D=e+180|0;E=e+96|0;F=e+87|0;G=e+84|0;j=H;a:while(1){p=j+20|0;q=j+12|0;r=j+4|0;o=(s|0)>(i|0);do if(!((g|0)<((o?i:s)|0)|(g|0)>((o?s:i)|0))){if((s|0)==(i|0)){c[I>>2]=j+-16;break}o=(s|0)<(i|0);n=o?1:2;j=c[t>>2]|0;if((j|0)!=(n|0)){f=c[y>>2]|0;if(o)m=((s+-1+f&0-f)-s|0)>=(c[z>>2]|0);else m=(f+-1&s|0)>=(c[z>>2]|0);f=c[B>>2]|0;if(j){l=c[x>>2]|0;j=f-(c[l+8>>2]|0)|0;if((j|0)<0){f=12;break a}if((j|0)>0){c[l+16>>2]=j>>2;do if(m){k=l+12|0;j=c[k>>2]|0;if(!(j&8)){c[k>>2]=j|32;break}else{c[k>>2]=j|16;break}}while(0);c[x>>2]=f;j=f+32|0;c[B>>2]=j;c[f+16>>2]=0;c[f+8>>2]=j;c[l+28>>2]=f;b[G>>1]=(b[G>>1]|0)+1<<16>>16;f=j}if(f>>>0>=(c[C>>2]|0)>>>0){f=20;break a}a[F>>0]=0}if(!(c[A>>2]|0)){c[x>>2]=f;c[A>>2]=f;f=f+32|0;c[B>>2]=f}if(f>>>0>=(c[C>>2]|0)>>>0){f=25;break a}j=c[x>>2]|0;k=j+12|0;c[j+20>>2]=0;c[j+16>>2]=0;c[j+8>>2]=f;c[j+4>>2]=0;c[j+28>>2]=0;f=d[D>>0]|0;c[k>>2]=f;if(o){c[k>>2]=f|8;if(m)c[k>>2]=f|40}else if(m)c[k>>2]=f|16;if(!(c[E>>2]|0))c[E>>2]=j;c[t>>2]=n;a[w>>0]=1;a[F>>0]=0}f=c[u>>2]|0;j=c[v>>2]|0;if(o)if(!((Lu(e,2,216,f,j)|0)<<24>>24))break;else{i=1;f=43;break a}c[r>>2]=0-i;c[q>>2]=0-g;c[p>>2]=0-s;s=a[w>>0]|0;f=Lu(e,2,216,0-j|0,0-f|0)|0;if(s<<24>>24!=0?(a[w>>0]|0)==0:0){s=(c[x>>2]|0)+20|0;c[s>>2]=0-(c[s>>2]|0)}c[r>>2]=0-(c[r>>2]|0);if(f<<24>>24){i=1;f=43;break a}}else{r=j+16|0;o=c[r>>2]|0;c[j+32>>2]=o;k=j+8|0;l=c[k>>2]|0;o=(l+o|0)/2|0;c[j+24>>2]=o;l=(h+l|0)/2|0;c[k>>2]=l;c[r>>2]=(l+o|0)/2|0;c[j+36>>2]=s;s=(g+s|0)/2|0;c[j+28>>2]=s;r=(i+g|0)/2|0;c[q>>2]=r;c[p>>2]=(r+s|0)/2|0;c[I>>2]=j+16}while(0);f=c[I>>2]|0;if(f>>>0>>0){f=42;break}j=f;s=c[f+20>>2]|0;i=c[f+4>>2]|0;g=c[f+12>>2]|0;h=c[f>>2]|0}if((f|0)==12){c[e+44>>2]=99;K=1;return K|0}else if((f|0)==20){c[e+44>>2]=98;K=1;return K|0}else if((f|0)==25){c[e+44>>2]=98;K=1;return K|0}else if((f|0)==42){c[J>>2]=h;c[K>>2]=i;K=0;return K|0}else if((f|0)==43)return i|0;return 0}function mu(e,f,g,h,i,j,k){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;J=e+184|0;K=e+52|0;c[K>>2]=J;L=e+68|0;c[e+208>>2]=c[L>>2];M=e+72|0;u=c[M>>2]|0;c[e+212>>2]=u;c[e+200>>2]=f;c[e+204>>2]=g;c[e+192>>2]=h;c[e+196>>2]=i;c[J>>2]=j;c[e+188>>2]=k;v=e+100|0;w=e+76|0;x=e+80|0;y=e+86|0;z=e+88|0;A=e+4|0;B=e+8|0;C=e+92|0;D=e+40|0;E=e+36|0;F=e+180|0;G=e+96|0;H=e+87|0;I=e+84|0;f=J;a:while(1){p=f+28|0;q=f+20|0;r=f+12|0;t=f+4|0;s=(u|0)<=(k|0);o=(g|0)>(i|0);do if(!(((o?i:g)|0)<((s?u:k)|0)?1:((o?g:i)|0)>((s?k:u)|0))){if((u|0)==(k|0)){c[K>>2]=f+-24;break}o=s?1:2;f=c[v>>2]|0;if((f|0)!=(o|0)){h=c[A>>2]|0;if(s)n=((u+-1+h&0-h)-u|0)>=(c[B>>2]|0);else n=(h+-1&u|0)>=(c[B>>2]|0);h=c[D>>2]|0;if(f){m=c[z>>2]|0;f=h-(c[m+8>>2]|0)|0;if((f|0)<0){f=12;break a}if((f|0)>0){c[m+16>>2]=f>>2;do if(n){f=m+12|0;l=c[f>>2]|0;if(!(l&8)){c[f>>2]=l|32;break}else{c[f>>2]=l|16;break}}while(0);c[z>>2]=h;l=h+32|0;c[D>>2]=l;c[h+16>>2]=0;c[h+8>>2]=l;c[m+28>>2]=h;b[I>>1]=(b[I>>1]|0)+1<<16>>16;h=l}if(h>>>0>=(c[E>>2]|0)>>>0){f=20;break a}a[H>>0]=0}if(!(c[C>>2]|0)){c[z>>2]=h;c[C>>2]=h;h=h+32|0;c[D>>2]=h}if(h>>>0>=(c[E>>2]|0)>>>0){f=25;break a}f=c[z>>2]|0;l=f+12|0;c[f+20>>2]=0;c[f+16>>2]=0;c[f+8>>2]=h;c[f+4>>2]=0;c[f+28>>2]=0;h=d[F>>0]|0;c[l>>2]=h;if(s){c[l>>2]=h|8;if(n)c[l>>2]=h|40}else if(n)c[l>>2]=h|16;if(!(c[G>>2]|0))c[G>>2]=f;c[v>>2]=o;a[y>>0]=1;a[H>>0]=0}h=c[w>>2]|0;f=c[x>>2]|0;if(s)if(!((Lu(e,3,217,h,f)|0)<<24>>24))break;else{k=1;f=43;break a}c[t>>2]=0-k;c[r>>2]=0-i;c[q>>2]=0-g;c[p>>2]=0-u;u=a[y>>0]|0;h=Lu(e,3,217,0-f|0,0-h|0)|0;if(u<<24>>24!=0?(a[y>>0]|0)==0:0){u=(c[z>>2]|0)+20|0;c[u>>2]=0-(c[u>>2]|0)}c[t>>2]=0-(c[t>>2]|0);if(h<<24>>24){k=1;f=43;break a}}else{s=f+24|0;t=c[s>>2]|0;c[f+48>>2]=t;m=f+8|0;n=f+16|0;l=c[n>>2]|0;h=(c[m>>2]|0)+1|0;o=j+h>>1;c[m>>2]=o;t=t+1+l>>1;c[f+40>>2]=t;l=(h+l>>1)+1|0;o=l+o>>1;c[n>>2]=o;t=l+t>>1;c[f+32>>2]=t;c[s>>2]=o+1+t>>1;c[f+52>>2]=u;s=i+1|0;t=k+s>>1;c[r>>2]=t;u=u+1+g>>1;c[f+44>>2]=u;s=(s+g>>1)+1|0;t=s+t>>1;c[q>>2]=t;u=s+u>>1;c[f+36>>2]=u;c[p>>2]=t+1+u>>1;c[K>>2]=f+24}while(0);h=c[K>>2]|0;if(h>>>0>>0){f=42;break}f=h;u=c[h+28>>2]|0;k=c[h+4>>2]|0;g=c[h+20>>2]|0;i=c[h+12>>2]|0;j=c[h>>2]|0}if((f|0)==12){c[e+44>>2]=99;e=1;return e|0}else if((f|0)==20){c[e+44>>2]=98;e=1;return e|0}else if((f|0)==25){c[e+44>>2]=98;e=1;return e|0}else if((f|0)==42){c[L>>2]=j;c[M>>2]=k;e=0;return e|0}else if((f|0)==43)return k|0;return 0}function nu(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=c[a+16>>2]|0;i=c[a+32>>2]|0;if(i>>>0<=b>>>0){p=-1;return p|0}j=a+44|0;k=i<<1;l=k+2|0;m=a+40|0;n=a+48|0;h=i+-1|0;while(1){g=b<<1;e=g+14|0;g=(d[o+e>>0]|0)<<8|(d[o+(g+15)>>0]|0);c[j>>2]=g;e=l+e|0;q=(d[o+e>>0]|0)<<8|(d[o+(e|1)>>0]|0);c[m>>2]=q;e=e+k|0;c[n>>2]=((d[o+e>>0]|0)<<8|(d[o+(e|1)>>0]|0))<<16>>16;e=e+k|0;f=(d[o+e>>0]|0)<<8|(d[o+(e|1)>>0]|0);if(b>>>0>=h>>>0&(q|0)==65535&(g|0)==65535){g=c[a>>2]|0;if(!f){e=0;break}if((o+(e+2+f)|0)>>>0>((c[g+496>>2]|0)+(c[g+500>>2]|0)|0)>>>0){p=6;break}}if(!f){e=0;break}else if((f|0)!=65535){p=8;break}b=b+1|0;if(b>>>0>=i>>>0){b=-1;p=11;break}}if((p|0)==6){c[n>>2]=1;e=0}else if((p|0)==8)e=o+(f+e)|0;else if((p|0)==11)return b|0;c[a+52>>2]=e;c[a+36>>2]=b;q=0;return q|0}function ou(a){a=a|0;var b=0,c=0;b=(d[a+1>>0]|0)<<16|(d[a>>0]|0)<<24|(d[a+2>>0]|0)<<8|(d[a+3>>0]|0);if(!b){c=0;return c|0}c=a+7|0;a=0;while(1){a=a+1+(d[c>>0]|0)|0;b=b+-1|0;if(!b)break;else c=c+4|0}return a|0}function pu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;f=h;g=a+28|0;e=c[g>>2]|0;c[f>>2]=0;if(e>>>0>=b>>>0){b=0;i=h;return b|0}c[a+36>>2]=d;a=a+32|0;c[a>>2]=Dg(d,4,e,b,c[a>>2]|0,f)|0;e=c[f>>2]|0;if(e){b=e;i=h;return b|0}c[g>>2]=b;b=0;i=h;return b|0}function qu(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;k=j;f=c[d+16>>2]|0;d=b[d+8>>1]|0;g=d&65535;h=Dg(e,1,0,g+1|0,0,k)|0;if(c[k>>2]|0){k=0;i=j;return k|0}a:do if(!(d<<16>>16))d=0;else{d=0;while(1){e=a[f>>0]|0;if(!(e<<24>>24))break a;a[h+d>>0]=(e&255)<32|e<<24>>24<0?63:e;d=d+1|0;if(d>>>0>>0)f=f+1|0;else break}}while(0);a[h+d>>0]=0;k=h;i=j;return k|0}function ru(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l;g=c[b+16>>2]|0;b=(e[b+8>>1]|0)>>>1;j=b&65535;k=Dg(f,1,0,j+1|0,0,h)|0;if(c[h>>2]|0){k=0;i=l;return k|0}a:do if(!(b<<16>>16))b=0;else{b=0;h=g;while(1){f=a[h+1>>0]|0;g=(d[h>>0]|0)<<8|f&255;if(!g)break a;a[k+b>>0]=(g+-32|0)>>>0>95?63:f;b=b+1|0;if(b>>>0>>0)h=h+2|0;else break}}while(0);a[k+b>>0]=0;i=l;return k|0}function su(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;k=a+12|0;m=c[k>>2]|0;n=b[m+4>>1]|0;o=b[m+6>>1]|0;p=b[m+8>>1]|0;q=b[m+10>>1]|0;l=b[m+12>>1]|0;m=b[m+14>>1]|0;i=e+2|0;if(i>>>0>f>>>0){a=3;return a|0}j=(d[e>>0]|0)<<8|(d[e+1>>0]|0);if((e+(j<<2|2)|0)>>>0>f>>>0){a=3;return a|0}a:do if(!j)f=0;else{e=0;while(1){f=qt(a,(d[i>>0]|0)<<8|(d[i+1>>0]|0),(d[i+2>>0]|0)+g|0,(d[i+3>>0]|0)+h|0)|0;if(f)break a;e=e+1|0;if(e>>>0>=j>>>0){f=0;break}else i=i+4|0}}while(0);k=c[k>>2]|0;b[k+4>>1]=(n<<8&65535)<<16>>16>>8;b[k+6>>1]=(o<<8&65535)<<16>>16>>8;b[k+8>>1]=p&255;b[k+10>>1]=(q<<8&65535)<<16>>16>>8;b[k+12>>1]=(l<<8&65535)<<16>>16>>8;b[k+14>>1]=m&255;a=c[a+8>>2]|0;b[k+2>>1]=c[a+4>>2]&255;b[k>>1]=c[a>>2]&255;a=f;return a|0}function tu(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;l=c[f+8>>2]|0;A=c[l+8>>2]|0;m=c[f+12>>2]|0;k=e[m+2>>1]|0;m=b[m>>1]|0;z=m&65535;y=da(d[f+18>>0]|0,k)|0;if((i|0)<0){h=3;return h|0}if(((j|0)<0?1:(k+i|0)>(c[l+4>>2]|0))|(z+j|0)>(c[l>>2]|0)){h=3;return h|0}if((g+(((da(y,z)|0)+7|0)>>>3)|0)>>>0>h>>>0){h=3;return h|0}x=i&7;if(!(m<<16>>16)){h=0;return h|0}r=(c[l+12>>2]|0)+((da(A,j)|0)+(i>>3))|0;t=(x|0)==0;u=8-x|0;s=y>>>0>>0?y:u;u=~(255<>0]|0}else{if((k|0)>=(s|0)){m=g;k=k-s|0;f=(f&65535)>>>8;break}if(g>>>0>>0){m=g+1|0;f=(d[g>>0]|0|f&65535)&65535}else m=g;k=w+k|0}while(0);f=f&65535;a[r>>0]=f>>>k&u|(d[r>>0]|0);i=r+1|0;f=f<<8&65535;j=v}if((j|0)>7){o=j+-8|0;n=o>>>3;p=n<<3;l=m;g=i;while(1){f=d[l>>0]|0|f&65535;a[g>>0]=f>>>k|(d[g>>0]|0);f=f<<8&65535;j=j+-8|0;if((j|0)<=7)break;else{l=l+1|0;g=g+1|0}}m=m+(n+1)|0;i=i+(n+1)|0;j=o-p|0}do if((j|0)>0){if((k|0)>=(j|0)){a[i>>0]=d[i>>0]|0|65280>>>j&(f&65535)>>>k;k=k-j|0;break}if(m>>>0>>0){l=m+1|0;f=(d[m>>0]|0|f&65535)&65535}else l=m;f=f&65535;a[i>>0]=f>>>k&65280>>>j|(d[i>>0]|0);m=l;k=k+8-j|0;f=f<<8&65535}while(0);q=q+-1|0;if((q|0)<=0){f=0;break}else{g=m;r=r+A|0}}return f|0}function uu(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;k=c[f+8>>2]|0;v=c[k+8>>2]|0;r=c[k+12>>2]|0;m=c[f+12>>2]|0;l=e[m+2>>1]|0;m=b[m>>1]|0;q=m&65535;u=da(d[f+18>>0]|0,l)|0;if((i|0)<0){v=3;return v|0}if(((j|0)<0?1:(l+i|0)>(c[k+4>>2]|0))|(q+j|0)>(c[k>>2]|0)){v=3;return v|0}if((g+(da((u+7|0)>>>3,q)|0)|0)>>>0>h>>>0){v=3;return v|0}l=da(v,j)|0;k=i>>3;p=r+(l+k)|0;t=i&7;f=m<<16>>16==0;if(!t){if(f){v=0;return v|0}i=u>>>0>7;j=7-u|0;j=(((j|0)>-8?j:-8)+u|0)>>>3;n=u+-8-(j<<3)|0;o=j+1|0;h=q;j=r+(k+j+l+1)|0;m=p;while(1){if(i){f=g;l=m;k=u;while(1){a[l>>0]=a[f>>0]|a[l>>0];k=k+-8|0;if((k|0)<=7)break;else{f=f+1|0;l=l+1|0}}g=g+o|0;f=j;k=n}else{f=m;k=u}if((k|0)>0){a[f>>0]=(d[g>>0]|0)&65280>>>k|(d[f>>0]|0);g=g+1|0}h=h+-1|0;if((h|0)<=0){g=0;break}else{j=j+v|0;m=m+v|0}}return g|0}if(f){v=0;return v|0}i=u>>>0>7;h=7-u|0;h=(((h|0)>-8?h:-8)+u|0)>>>3;o=u+-8-(h<<3)|0;s=h+1|0;h=r+(k+h+l+1)|0;n=p;while(1){if(i){f=g;k=n;j=u;l=0;while(1){l=d[f>>0]|0|l;a[k>>0]=l>>>t|(d[k>>0]|0);l=l<<8;j=j+-8|0;if((j|0)<=7)break;else{f=f+1|0;k=k+1|0}}f=g+s|0;m=h;k=o}else{f=g;m=n;k=u;l=0}if((k|0)>0){g=f+1|0;l=(d[f>>0]|0)&65280>>>k|l}else g=f;a[m>>0]=d[m>>0]|0|l>>>t;if((k+t|0)>8){r=m+1|0;a[r>>0]=d[r>>0]|0|l<<8>>>t}q=q+-1|0;if((q|0)<=0){g=0;break}else{h=h+v|0;n=n+v|0}}return g|0}function vu(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;j=f-d|0;m=d>>8;I=f>>8;l=d-(m<<8)|0;L=f-(I<<8)|0;if((g|0)==(e|0)){o=b-(c[a+16>>2]|0)|0;m=c[a+12>>2]|0;m=((m|0)<(I|0)?m:I)-(c[a+8>>2]|0)|0;m=(m|0)>-1?m:-1;i=c[a>>2]|0;if(!((m|0)==(i|0)?(o|0)==(c[a+4>>2]|0):0)){n=a+32|0;if(!(c[a+40>>2]|0)){k=c[n>>2]|0;h=a+36|0;l=c[h>>2]|0;if(l|k){b=c[a+24>>2]|0;b=(i|0)>(b|0)?b:i;d=(c[a+1420>>2]|0)+(c[a+4>>2]<<2)|0;i=c[d>>2]|0;a:do if(!i){i=0;j=d;M=11}else while(1){f=c[i>>2]|0;if((f|0)>(b|0)){j=d;M=11;break a}d=i+12|0;if((f|0)==(b|0)){p=i;break a}i=c[d>>2]|0;if(!i){i=0;j=d;M=11;break}}while(0);do if((M|0)==11){d=a+52|0;f=c[d>>2]|0;if((f|0)<(c[a+48>>2]|0)){M=c[a+44>>2]|0;c[d>>2]=f+1;p=M+(f<<4)|0;c[p>>2]=b;c[M+(f<<4)+8>>2]=0;c[M+(f<<4)+4>>2]=0;c[M+(f<<4)+12>>2]=i;c[j>>2]=p;break}else Ua(a+1256|0,1)}while(0);M=p+8|0;c[M>>2]=(c[M>>2]|0)+k;M=p+4|0;c[M>>2]=(c[M>>2]|0)+l}}else h=a+36|0;c[n>>2]=0;c[h>>2]=0;c[a>>2]=m;c[a+4>>2]=o}if(o>>>0<(c[a+28>>2]|0)>>>0)h=(m|0)>=(c[a+24>>2]|0);else h=1;c[a+40>>2]=h&1;return}if((m|0)==(I|0)){g=g-e|0;J=da(L+l|0,g)|0;M=a+32|0;c[M>>2]=(c[M>>2]|0)+J;M=a+36|0;c[M>>2]=(c[M>>2]|0)+g;return}f=(j|0)<0;F=j>>31;K=F+256&-256;E=f?0-j|0:j;F=F|1;f=da(f?l:256-l|0,g-e|0)|0;d=(f|0)/(E|0)|0;f=(f|0)%(E|0)|0;if((f|0)<0){o=d+-1|0;z=f+E|0}else{o=d;z=f}d=da(o,K+l|0)|0;G=a+32|0;d=(c[G>>2]|0)+d|0;c[G>>2]=d;H=a+36|0;f=(c[H>>2]|0)+o|0;c[H>>2]=f;x=F+m|0;B=b-(c[a+16>>2]|0)|0;C=c[a+12>>2]|0;D=c[a+8>>2]|0;p=((C|0)<(x|0)?C:x)-D|0;p=(p|0)>-1?p:-1;l=c[a>>2]|0;if(!((p|0)==(l|0)?(B|0)==(c[a+4>>2]|0):0)){if(!((c[a+40>>2]|0)!=0|(f|d|0)==0)){k=c[a+24>>2]|0;k=(l|0)>(k|0)?k:l;m=(c[a+1420>>2]|0)+(c[a+4>>2]<<2)|0;l=c[m>>2]|0;b:do if(!l){l=0;M=30}else while(1){b=c[l>>2]|0;if((b|0)>(k|0)){M=30;break b}m=l+12|0;if((b|0)==(k|0)){n=l;break b}l=c[m>>2]|0;if(!l){l=0;M=30;break}}while(0);do if((M|0)==30){b=a+52|0;j=c[b>>2]|0;if((j|0)<(c[a+48>>2]|0)){A=c[a+44>>2]|0;c[b>>2]=j+1;n=A+(j<<4)|0;c[n>>2]=k;c[A+(j<<4)+8>>2]=0;c[A+(j<<4)+4>>2]=0;c[A+(j<<4)+12>>2]=l;c[m>>2]=n;break}else Ua(a+1256|0,1)}while(0);A=n+8|0;c[A>>2]=(c[A>>2]|0)+d;A=n+4|0;c[A>>2]=(c[A>>2]|0)+f}c[G>>2]=0;c[H>>2]=0;c[a>>2]=p;c[a+4>>2]=B;d=0;f=0}A=B>>>0<(c[a+28>>2]|0)>>>0;if(A)l=(p|0)>=(c[a+24>>2]|0);else l=1;j=l&1;y=a+40|0;c[y>>2]=j;b=o+e|0;do if((x|0)!=(I|0)){m=o+g-b<<8;l=(m|0)/(E|0)|0;m=(m|0)%(E|0)|0;if((m|0)<0){l=l+-1|0;m=m+E|0}r=a+4|0;s=a+24|0;t=a+1420|0;u=a+52|0;v=a+48|0;w=a+44|0;q=p;k=j;j=p;e=x;p=z-E|0;while(1){x=p+m|0;o=l+(x>>>31^1)|0;p=x-((x|0)>-1?E:0)|0;d=d+(o<<8)|0;f=f+o|0;o=o+b|0;e=e+F|0;x=((C|0)<(e|0)?C:e)-D|0;z=q;q=(x|0)>-1?x:-1;if((q|0)!=(z|0)){if(!((k|0)!=0|(f|d|0)==0)){n=c[s>>2]|0;n=(j|0)>(n|0)?n:j;k=(c[t>>2]|0)+(B<<2)|0;b=c[k>>2]|0;c:do if(!b){b=0;M=47}else while(1){j=c[b>>2]|0;if((j|0)>(n|0)){M=47;break c}k=b+12|0;if((j|0)==(n|0))break c;b=c[k>>2]|0;if(!b){b=0;M=47;break}}while(0);if((M|0)==47){M=0;j=c[u>>2]|0;if((j|0)>=(c[v>>2]|0)){M=48;break}x=c[w>>2]|0;c[u>>2]=j+1;z=x+(j<<4)|0;c[z>>2]=n;c[x+(j<<4)+8>>2]=0;c[x+(j<<4)+4>>2]=0;c[x+(j<<4)+12>>2]=b;c[k>>2]=z;b=z}z=b+8|0;c[z>>2]=(c[z>>2]|0)+d;z=b+4|0;c[z>>2]=(c[z>>2]|0)+f}c[a>>2]=q;c[r>>2]=B;j=q;f=0;d=0}if(A)b=(q|0)>=(c[s>>2]|0);else b=1;k=b&1;c[y>>2]=k;if((e|0)==(I|0)){i=o;h=d;M=55;break}else b=o}if((M|0)==48){c[G>>2]=d;c[H>>2]=f;Ua(a+1256|0,1)}else if((M|0)==55){c[G>>2]=h;c[H>>2]=f;J=f;break}}else{i=b;h=d;J=f}while(0);M=g-i|0;c[G>>2]=(da(M,L+256-K|0)|0)+h;c[H>>2]=J+M;return}function wu(a,d,f,g,h,j){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;H=i;i=i+16|0;F=H+8|0;G=H;m=H+4|0;C=c[a+28>>2]|0;c[m>>2]=0;if(d<<24>>24==0|(f|0)==0){G=6;i=H;return G|0}B=Dg(C,8,0,j,0,F)|0;d=c[F>>2]|0;if(d){G=d;i=H;return G|0}c[h>>2]=B;if((c[f+32>>2]|0)>>>0<=g>>>0){G=0;i=H;return G|0}d=f+36|0;A=c[d>>2]|0;k=c[A+(g<<2)>>2]|0;l=g+1|0;if((k|0)==(c[A+(l<<2)>>2]|0)){G=0;i=H;return G|0}A=bh(a,k)|0;c[F>>2]=A;if((A|0)==0?(A=c[d>>2]|0,A=Uh(a,(c[A+(l<<2)>>2]|0)-(c[A+(g<<2)>>2]|0)|0)|0,c[F>>2]=A,(A|0)==0):0){z=a+32|0;d=(c[z>>2]|0)-(c[a>>2]|0)|0;A=Dg(C,4,0,c[f>>2]|0,0,F)|0;if(((c[F>>2]|0)==0?(D=Dg(C,4,0,c[f>>2]|0,0,F)|0,(c[F>>2]|0)==0):0)?(E=Dg(C,4,0,c[f>>2]|0,0,F)|0,(c[F>>2]|0)==0):0){g=(Zh(a)|0)&65535;d=((Zh(a)|0)&65535)+d|0;if(!(g&32768))y=0;else{y=c[a>>2]|0;x=(c[z>>2]|0)-y|0;c[z>>2]=y+d;y=zu(a,m)|0;w=c[a>>2]|0;d=(c[z>>2]|0)-w|0;c[z>>2]=w+x}v=g&4095;a:do if(v){w=f+24|0;x=f+28|0;s=c[m>>2]|0;t=(j|0)==0;u=0;g=0;while(1){r=(Zh(a)|0)&65535;m=Zh(a)|0;n=m&65535;if(n&32768){if(c[f>>2]|0){k=0;do{c[A+(k<<2)>>2]=(Zh(a)|0)<<16>>16<<2;k=k+1|0}while(k>>>0<(c[f>>2]|0)>>>0)}}else{k=n&4095;if(k>>>0>=(c[w>>2]|0)>>>0)break;o=c[f>>2]|0;q=da(o,k)|0;qfa(A|0,(c[x>>2]|0)+(q<<2)|0,o<<2|0)|0}if((n&16384|0)!=0?(c[f>>2]|0)!=0:0){l=0;do{c[D+(l<<2)>>2]=(Zh(a)|0)<<16>>16<<2;l=l+1|0;k=c[f>>2]|0}while(l>>>0>>0);if(k){k=0;do{c[E+(k<<2)>>2]=(Zh(a)|0)<<16>>16<<2;k=k+1|0}while(k>>>0<(c[f>>2]|0)>>>0)}}p=yu(f,m,A,D,E)|0;if(p){k=c[a>>2]|0;q=(c[z>>2]|0)-k|0;if(!(n&8192)){c[G>>2]=s;m=s;l=y}else{c[z>>2]=k+d;l=zu(a,G)|0;m=c[G>>2]|0;g=l}k=(m|0)==0;o=k?j:m;n=Au(a,o)|0;o=Au(a,o)|0;b:do if(!((l|0)==0|(o|0)==0|(n|0)==0)){if((l|0)==(-1|0)){if(t)break;else k=0;while(1){m=qg(b[n+(k<<1)>>1]|0,p)|0;l=B+(k<<3)|0;c[l>>2]=(c[l>>2]|0)+m;l=qg(b[o+(k<<1)>>1]|0,p)|0;m=B+(k<<3)+4|0;c[m>>2]=(c[m>>2]|0)+l;k=k+1|0;if((k|0)==(j|0))break b}}if(k)break;else l=0;do{k=g+(l<<1)|0;if((e[k>>1]|0)>>>0>>0){J=qg(b[n+(l<<1)>>1]|0,p)|0;I=B+(e[k>>1]<<3)|0;c[I>>2]=(c[I>>2]|0)+J;I=qg(b[o+(l<<1)>>1]|0,p)|0;k=B+(e[k>>1]<<3)+4|0;c[k>>2]=(c[k>>2]|0)+I}l=l+1|0}while(l>>>0>>0)}while(0);if((g|0)==(-1|0))g=-1;else{Ag(C,g);g=0}Ag(C,n);Ag(C,o);c[z>>2]=(c[a>>2]|0)+q}u=u+1|0;if(u>>>0>=v>>>0)break a;else d=r+d|0}c[F>>2]=8}while(0);Ag(C,A);Ag(C,D);Ag(C,E)}Xh(a);if(!(c[F>>2]|0)){J=0;i=H;return J|0}}Ag(C,B);c[h>>2]=0;J=c[F>>2]|0;i=H;return J|0}function xu(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=f+124|0;p=c[(c[f+8>>2]|0)+140>>2]|0;q=f+132|0;j=b[q>>1]|0;m=j&65535;r=f+140|0;l=c[r>>2]|0;h=c[l+(m+-4<<3)>>2]|0;i=h+32&-64;if((i|0)!=(h|0)?(k=i-h|0,j<<16>>16!=0):0){h=0;do{n=l+(h<<3)|0;c[n>>2]=k+(c[n>>2]|0);h=h+1|0}while((h|0)!=(m|0))}k=(p|0)!=0;if(k)qfa(c[f+136>>2]|0,l|0,m<<3|0)|0;n=f+160|0;h=f+4|0;j=(c[n>>2]|0)+284|0;m=(c[h>>2]|0)+172|0;l=j+68|0;do{c[j>>2]=c[m>>2];j=j+4|0;m=m+4|0}while((j|0)<(l|0));if(!(g<<24>>24)){m=c[h>>2]|0;l=c[n>>2]|0;c[l+220>>2]=c[m+48>>2];c[l+224>>2]=c[m+52>>2]}else{l=c[n>>2]|0;c[l+220>>2]=65536;c[l+224>>2]=65536;qfa(c[f+144>>2]|0,c[r>>2]|0,e[q>>1]<<3|0)|0}l=e[q>>1]|0;m=c[r>>2]|0;j=m+(l+-3<<3)|0;c[j>>2]=(c[j>>2]|0)+32&-64;l=m+(l+-1<<3)+4|0;c[l>>2]=(c[l>>2]|0)+32&-64;if(k){k=c[(c[f+12>>2]|0)+64>>2]|0;j=c[n>>2]|0;c[j+460>>2]=c[j+392>>2];c[j+464>>2]=p;a[j+560>>0]=g;j=j+144|0;m=o+0|0;l=j+36|0;do{c[j>>2]=c[m>>2];j=j+4|0;m=m+4|0}while((j|0)<(l|0));h=c[n>>2]|0;c[h+356>>2]=c[h+460>>2];c[h+364>>2]=c[h+464>>2];c[h+360>>2]=0;c[h+352>>2]=3;i=h+144|0;j=h+36|0;m=i+0|0;l=j+36|0;do{c[j>>2]=c[m>>2];j=j+4|0;m=m+4|0}while((j|0)<(l|0));j=h+72|0;m=i+0|0;l=j+36|0;do{c[j>>2]=c[m>>2];j=j+4|0;m=m+4|0}while((j|0)<(l|0));j=h+108|0;m=i+0|0;l=j+36|0;do{c[j>>2]=c[m>>2];j=j+4|0;m=m+4|0}while((j|0)<(l|0));b[h+344>>1]=1;b[h+346>>1]=1;b[h+348>>1]=1;g=h+294|0;b[g>>1]=16384;b[h+296>>1]=0;i=h+298|0;g=e[g>>1]|e[g+2>>1]<<16;b[i>>1]=g;b[i+2>>1]=g>>>16;i=h+290|0;b[i>>1]=g;b[i+2>>1]=g>>>16;c[h+312>>2]=1;c[h+304>>2]=1;c[h+16>>2]=0;c[h+428>>2]=0;i=Ed[c[(c[h>>2]|0)+648>>2]&511](h)|0;h=c[n>>2]|0;if((i|0)!=0?(a[h+561>>0]|0)!=0:0){f=i;return f|0}a[k>>0]=c[h+340>>2]<<5|d[k>>0]|4}if(a[f+65>>0]|0){f=0;return f|0}q=e[q>>1]|0;r=c[r>>2]|0;l=r+(q+-4<<3)|0;n=c[l+4>>2]|0;g=f+68|0;c[g>>2]=c[l>>2];c[g+4>>2]=n;g=r+(q+-3<<3)|0;n=c[g+4>>2]|0;l=f+76|0;c[l>>2]=c[g>>2];c[l+4>>2]=n;l=r+(q+-2<<3)|0;n=c[l+4>>2]|0;g=f+184|0;c[g>>2]=c[l>>2];c[g+4>>2]=n;q=r+(q+-1<<3)|0;r=c[q+4>>2]|0;f=f+192|0;c[f>>2]=c[q>>2];c[f+4>>2]=r;f=0;return f|0}function yu(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;g=c[a>>2]|0;if(!g){d=65536;return d|0}if(!(b&16384)){b=g;g=65536;j=0;while(1){h=c[d+(j<<2)>>2]|0;if(h){i=c[(c[l>>2]|0)+(j<<2)>>2]|0;if(!i){g=0;b=19;break}if((i|0)<0&(h|0)>0){g=0;b=19;break}b=(i|0)>0;if(b&(h|0)<0){g=0;b=19;break}g=qg(g,b?i:0-i|0)|0;b=c[a>>2]|0}j=j+1|0;if(j>>>0>=b>>>0){b=19;break}}if((b|0)==19)return g|0}else{k=65536;m=0}a:while(1){g=c[d+(m<<2)>>2]|0;do if(g){b=c[(c[l>>2]|0)+(m<<2)>>2]|0;if(!b){g=0;b=19;break a}if((b|0)<0&(g|0)>0){g=0;b=19;break a}if((b|0)>0&(g|0)<0){g=0;b=19;break a}h=c[e+(m<<2)>>2]|0;if((b|0)<=(h|0)){g=0;b=19;break a}i=c[f+(m<<2)>>2]|0;if((i|0)<=(b|0)){g=0;b=19;break a}if((b|0)<(g|0)){g=og(k,b-h|0,g-h|0)|0;break}else{g=og(k,i-b|0,i-g|0)|0;break}}else g=k;while(0);m=m+1|0;if(m>>>0>=(c[a>>2]|0)>>>0){b=19;break}else k=g}if((b|0)==19)return g|0;return 0}function zu(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;g=m;f=c[a+28>>2]|0;c[g>>2]=0;k=Yh(a)|0;e=k&255;c[d>>2]=e;if(!(k<<24>>24)){k=-1;i=m;return k|0}if(!(e&128))l=e;else l=(Yh(a)|0)&255|e<<8&32512;e=Dg(f,2,0,l,0,g)|0;if(c[g>>2]|0){k=0;i=m;return k|0}if((l|0)>0)d=0;else{k=e;i=m;return k|0}while(1){f=Yh(a)|0;k=f&255;if(!(k&128)){g=Yh(a)|0;j=d+1|0;b[e+(d<<1)>>1]=g&255;if(!(f<<24>>24!=0&(k+j|0)<(l|0))){d=16;break}h=k>>>0>1?k:1;g=g&255;d=j;f=0;while(1){g=((Yh(a)|0)&255)+g|0;b[e+(d<<1)>>1]=g;f=f+1|0;if((f|0)>=(k|0))break;else d=d+1|0}d=j+h|0}else{k=k&127;g=Zh(a)|0;j=d+1|0;b[e+(d<<1)>>1]=g;if(!((k|0)!=0&(k+j|0)<(l|0))){d=16;break}h=f&127;h=h>>>0>1?h:1;g=g&65535;d=j;f=0;while(1){g=((Zh(a)|0)&65535)+g|0;b[e+(d<<1)>>1]=g;f=f+1|0;if((f|0)>=(k|0))break;else d=d+1|0}d=j+h|0}if((d|0)>=(l|0)){d=16;break}}if((d|0)==16){i=m;return e|0}return 0}function Au(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;l=o;k=c[a+28>>2]|0;c[l>>2]=0;e=Dg(k,2,0,d,0,l)|0;if(!(c[l>>2]|0))m=0;else{n=0;i=o;return n|0}while(1){if(m>>>0>=d>>>0){n=10;break}f=Yh(a)|0;l=f&255;if(!(l&128)){g=m-d|0;f=(f&255|-64)^63;f=g>>>0>f>>>0?g:f;g=0-f|0;if(!(l&64)){h=m;j=0;while(1){b[e+(h<<1)>>1]=(Yh(a)|0)<<24>>24;j=j+1|0;if((j|0)==(g|0))break;else h=h+1|0}}else{h=m;j=0;while(1){b[e+(h<<1)>>1]=Zh(a)|0;j=j+1|0;if((j|0)==(g|0))break;else h=h+1|0}}}else{g=m-d|0;f=(f&255|-64)^63;f=g>>>0>f>>>0?g:f;sfa(e+(m<<1)|0,0,da(f,-2)|0)|0;g=0-f|0}if(g>>>0>(l&63)>>>0)m=m-f|0;else break}if((n|0)==10){i=o;return e|0}Ag(k,e);n=0;i=o;return n|0}function Bu(a,b){a=a|0;b=b|0;var d=0;d=c[a+4>>2]|0;a=c[b+4>>2]|0;if((d|0)<(a|0)){b=-1;return b|0}b=(d|0)>(a|0)&1;return b|0}function Cu(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;h=d+64|0;if(a[h>>0]|0)return;a[h>>0]=1;j=d+20|0;i=c[j>>2]|0;k=d+65|0;if(!(a[k>>0]|0)){b[i>>1]=(b[i>>1]|0)+1<<16>>16;h=d+12|0}else{h=d+12|0;d=c[h>>2]|0;if(((b[d+20>>1]|0)+1+(b[d+56>>1]|0)|0)>>>0>(c[d+8>>2]|0)>>>0?(Eg(d,0,1)|0)!=0:0)return;d=b[i>>1]|0;if(d<<16>>16>0){b[(c[i+12>>2]|0)+((d<<16>>16)+-1<<1)>>1]=(e[i+2>>1]|0)+65535;d=b[i>>1]|0}b[i>>1]=d+1<<16>>16}h=c[h>>2]|0;if(((b[h+22>>1]|0)+1+(b[h+58>>1]|0)|0)>>>0>(c[h+4>>2]|0)>>>0?(Eg(h,1,0)|0)!=0:0)return;h=c[j>>2]|0;if(!(a[k>>0]|0))h=h+2|0;else{j=c[h+4>>2]|0;k=h+2|0;i=b[k>>1]|0;h=(c[h+8>>2]|0)+i|0;c[j+(i<<3)>>2]=f>>10;c[j+(i<<3)+4>>2]=g>>10;a[h>>0]=1;h=k}b[h>>1]=(b[h>>1]|0)+1<<16>>16;return}function Du(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+32|0;v=w;r=d+392|0;j=c[r>>2]|0;s=d+8|0;t=s;u=j-t>>3;k=u&1;if((k|0)!=0?(a[g>>0]|0)==0:0){do if(!u){h=c[d+4>>2]|0;if((h|0)!=0?(c[h>>2]|0)==0:0){c[h>>2]=130;h=0}else h=0}else{h=c[d+12>>2]|0;if((h|0)==1){h=c[s>>2]|0;if((h|0)<0){h=0-(8192-h>>14)|0;break}else{h=h+8192>>14;break}}else if((h|0)==2){h=c[s>>2]<<16;break}else{h=c[s>>2]|0;break}}while(0);c[f>>2]=(c[(c[(c[b+132>>2]|0)+928>>2]|0)+532>>2]<<16)+h}if(a[(c[b+132>>2]|0)+753>>0]|0){a[g>>0]=1;i=w;return}a:do if(k>>>0>>0){m=v+4|0;n=v+8|0;o=v+12|0;p=v+16|0;q=d+4|0;f=j;b=0;while(1){l=f-t>>3;do if(l>>>0>k>>>0){h=d+(k<<3)+8|0;f=c[d+(k<<3)+12>>2]|0;if((f|0)==2){h=c[h>>2]<<16;break}else if((f|0)==1){h=c[h>>2]|0;if((h|0)<0){h=0-(8192-h>>14)|0;break}else{h=h+8192>>14;break}}else{h=c[h>>2]|0;break}}else{h=c[q>>2]|0;if((h|0)!=0?(c[h>>2]|0)==0:0){c[h>>2]=130;h=0}else h=0}while(0);j=h+b|0;c[m>>2]=j;h=k+1|0;do if(l>>>0>h>>>0){b=d+(h<<3)+8|0;h=c[d+(h<<3)+12>>2]|0;if((h|0)==1){h=c[b>>2]|0;if((h|0)<0){h=0-(8192-h>>14)|0;break}else{h=h+8192>>14;break}}else if((h|0)==2){h=c[b>>2]<<16;break}else{h=c[b>>2]|0;break}}else{h=c[q>>2]|0;if((h|0)!=0?(c[h>>2]|0)==0:0){c[h>>2]=130;h=0}else h=0}while(0);b=h+j|0;c[n>>2]=b;a[v>>0]=0;c[o>>2]=0;c[p>>2]=0;Nu(e,v);h=k+2|0;if(h>>>0>=u>>>0)break a;f=c[r>>2]|0;k=h}}while(0);c[r>>2]=s;a[g>>0]=1;i=w;return}function Eu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;h=o+12|0;j=o+8|0;l=o;m=b+11720|0;f=c[m>>2]|0;g=c[b+11724>>2]|0;if((f|0)==(d|0)&(g|0)==(e|0)){i=o;return}n=b+11724|0;Ou(b,f,g,d,e,h,j);g=c[h>>2]|0;k=g+(c[m>>2]|0)|0;c[l>>2]=k;h=c[j>>2]|0;f=h+(c[n>>2]|0)|0;c[l+4>>2]=f;j=g+d|0;h=h+e|0;g=b+11666|0;if(a[g>>0]|0){Pu(b,k,f);a[g>>0]=0;a[b+11664>>0]=1;k=b+11712|0;c[k>>2]=j;c[k+4>>2]=h}f=b+11744|0;if(a[f>>0]|0)Fu(b,b+8|0,l,j,h,0);a[f>>0]=1;c[b+11748>>2]=2;k=c[l+4>>2]|0;f=b+11752|0;c[f>>2]=c[l>>2];c[f+4>>2]=k;f=b+11760|0;c[f>>2]=j;c[f+4>>2]=h;f=c[b+11676>>2]|0;if(a[f+5>>0]|0)Gu(b+8|0,c[b+11668>>2]|0,c[b+11672>>2]|0,f,c[b+11680>>2]|0,0);c[m>>2]=d;c[n>>2]=e;i=o;return}function Fu(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+48|0;y=z;x=a+11748|0;if((c[x>>2]|0)==2){s=a+11752|0;w=a+11760|0}else{s=a+11768|0;w=a+11776|0}q=c[w>>2]|0;r=c[d>>2]|0;h=c[w+4>>2]|0;l=c[d+4>>2]|0;if(!((q|0)==(r|0)&(h|0)==(l|0))?(j=c[s>>2]|0,u=w+4|0,t=s+4|0,k=c[t>>2]|0,m=e+16-r>>5,v=d+4|0,n=f+16-l>>5,o=qg(q+16-j>>5,n)|0,p=qg(h+16-k>>5,m)|0,(o|0)!=(p|0)):0){h=qg(16-j+r>>5,n)|0;h=rg(h-(qg(16-k+l>>5,m)|0)|0,o-p|0)|0;m=c[s>>2]|0;m=(qg(h,(c[w>>2]|0)-m|0)|0)+m|0;l=c[t>>2]|0;l=(qg(h,(c[u>>2]|0)-l|0)|0)+l|0;h=c[s>>2]|0;p=c[w>>2]|0;if((h|0)==(p|0)){s=m-h|0;m=(((s|0)<0?0-s|0:s)|0)<(c[a+11700>>2]|0)?h:m}h=c[t>>2]|0;k=c[u>>2]|0;if((h|0)==(k|0)){u=l-h|0;l=(((u|0)<0?0-u|0:u)|0)<(c[a+11700>>2]|0)?h:l}h=c[d>>2]|0;if((h|0)==(e|0)){u=m-e|0;m=(((u|0)<0?0-u|0:u)|0)<(c[a+11700>>2]|0)?e:m}j=c[v>>2]|0;if((j|0)==(f|0)){v=l-f|0;l=(((v|0)<0?0-v|0:v)|0)<(c[a+11700>>2]|0)?f:l}f=m-((h+p|0)/2|0)|0;h=c[a+11696>>2]|0;if((((f|0)<0?0-f|0:f)|0)<=(h|0)?(f=l-((j+k|0)/2|0)|0,(((f|0)<0?0-f|0:f)|0)<=(h|0)):0){j=w;c[j>>2]=m;c[j+4>>2]=l;j=1}else j=0}else{m=0;l=0;j=0}k=a+11728|0;f=k;w=c[f+4>>2]|0;h=y;c[h>>2]=c[f>>2];c[h+4>>2]=w;h=c[x>>2]|0;if((h|0)==4){c[y+32>>2]=4;w=c[a+11764>>2]|0;x=a+11644|0;v=qg(c[x>>2]|0,c[a+11760>>2]|0)|0;u=a+11648|0;v=(qg(c[u>>2]|0,w)|0)+v|0;w=Qu(b,w)|0;f=qg(c[(c[a>>2]|0)+60>>2]|0,v)|0;f=(qg(c[(c[a>>2]|0)+68>>2]|0,w)|0)+f|0;e=a+11656|0;c[y+8>>2]=f+(c[e>>2]|0);v=qg(c[(c[a>>2]|0)+64>>2]|0,v)|0;v=(qg(c[(c[a>>2]|0)+72>>2]|0,w)|0)+v|0;w=a+11660|0;c[y+12>>2]=v+(c[w>>2]|0);v=c[a+11772>>2]|0;f=qg(c[x>>2]|0,c[a+11768>>2]|0)|0;f=(qg(c[u>>2]|0,v)|0)+f|0;v=Qu(b,v)|0;t=qg(c[(c[a>>2]|0)+60>>2]|0,f)|0;t=(qg(c[(c[a>>2]|0)+68>>2]|0,v)|0)+t|0;c[y+16>>2]=t+(c[e>>2]|0);f=qg(c[(c[a>>2]|0)+64>>2]|0,f)|0;f=(qg(c[(c[a>>2]|0)+72>>2]|0,v)|0)+f|0;c[y+20>>2]=f+(c[w>>2]|0);f=y+24|0;v=c[a+11780>>2]|0;x=qg(c[x>>2]|0,c[a+11776>>2]|0)|0;x=(qg(c[u>>2]|0,v)|0)+x|0;v=Qu(b,v)|0;u=qg(c[(c[a>>2]|0)+60>>2]|0,x)|0;u=(qg(c[(c[a>>2]|0)+68>>2]|0,v)|0)+u|0;c[f>>2]=u+(c[e>>2]|0);x=qg(c[(c[a>>2]|0)+64>>2]|0,x)|0;x=(qg(c[(c[a>>2]|0)+72>>2]|0,v)|0)+x|0;c[y+28>>2]=x+(c[w>>2]|0);w=c[a+4>>2]|0;Cd[c[w+12>>2]&255](w,y);w=c[f+4>>2]|0;x=k;c[x>>2]=c[f>>2];c[x+4>>2]=w}else if((h|0)==2){c[y+32>>2]=2;f=y+8|0;x=c[a+11764>>2]|0;w=qg(c[a+11644>>2]|0,c[a+11760>>2]|0)|0;w=(qg(c[a+11648>>2]|0,x)|0)+w|0;x=Qu(b,x)|0;v=qg(c[(c[a>>2]|0)+60>>2]|0,w)|0;v=(qg(c[(c[a>>2]|0)+68>>2]|0,x)|0)+v|0;c[f>>2]=v+(c[a+11656>>2]|0);w=qg(c[(c[a>>2]|0)+64>>2]|0,w)|0;w=(qg(c[(c[a>>2]|0)+72>>2]|0,x)|0)+w|0;c[y+12>>2]=w+(c[a+11660>>2]|0);w=c[a+4>>2]|0;Cd[c[w+4>>2]&255](w,y);w=c[f+4>>2]|0;x=k;c[x>>2]=c[f>>2];c[x+4>>2]=w}j=j<<24>>24!=0;do if(!(j&g<<24>>24==0)){h=y+8|0;g=c[d+4>>2]|0;x=qg(c[a+11644>>2]|0,c[d>>2]|0)|0;x=(qg(c[a+11648>>2]|0,g)|0)+x|0;g=Qu(b,g)|0;b=qg(c[(c[a>>2]|0)+60>>2]|0,x)|0;b=(qg(c[(c[a>>2]|0)+68>>2]|0,g)|0)+b|0;c[h>>2]=b+(c[a+11656>>2]|0);b=qg(c[(c[a>>2]|0)+64>>2]|0,x)|0;b=(qg(c[(c[a>>2]|0)+72>>2]|0,g)|0)+b|0;b=b+(c[a+11660>>2]|0)|0;c[y+12>>2]=b;if((c[h>>2]|0)==(c[k>>2]|0)?(b|0)==(c[a+11732>>2]|0):0)break;c[y+32>>2]=2;x=k;g=c[x+4>>2]|0;b=y;c[b>>2]=c[x>>2];c[b+4>>2]=g;a=c[a+4>>2]|0;Cd[c[a+4>>2]&255](a,y);a=h;b=c[a+4>>2]|0;y=k;c[y>>2]=c[a>>2];c[y+4>>2]=b}while(0);if(!j){i=z;return}y=d;c[y>>2]=m;c[y+4>>2]=l;i=z;return}function Gu(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0;ea=i;i=i+176|0;$=ea+168|0;q=ea+140|0;n=ea+120|0;N=ea+100|0;Q=ea+80|0;O=ea+40|0;P=ea+20|0;U=ea;V=ea+60|0;T=c[b>>2]|0;aa=j<<24>>24!=0;if(!aa?(p=c[b+4>>2]|0,(a[p+12>>0]|0)==0):0){ba=c[g>>2]|0;c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=0;c[q+24>>2]=0;c[q>>2]=ba;Gu(p,e,f,q,h,1)}k=g+4|0;ca=e+20|0;do if(!(a[k>>0]|0)){p=(c[f+20>>2]|0)+(c[ca>>2]|0)|0;l=0-p&7;if(p>>>0>96){j=c[g>>2]|0;if(!j)break;if(c[j>>2]|0)break;c[j>>2]=18;break}c[g+8>>2]=p;j=(p+7|0)>>>3;f=g+12|0;c[f>>2]=j;a[k>>0]=1;a[g+5>>0]=1;if(p){if(!j)j=-1;else{p=0;do{a[g+p+16>>0]=-1;p=p+1|0;j=c[f>>2]|0}while(p>>>0>>0);j=j+-1|0}ba=g+j+16|0;a[ba>>0]=d[ba>>0]&-1<>2]=0;c[b+24>>2]=0;c[q+0>>2]=c[g+0>>2];c[q+4>>2]=c[g+4>>2];c[q+8>>2]=c[g+8>>2];c[q+12>>2]=c[g+12>>2];c[q+16>>2]=c[g+16>>2];c[q+20>>2]=c[g+20>>2];c[q+24>>2]=c[g+24>>2];p=q+16|0;S=c[ca>>2]|0;if(a[T+205>>0]|0){c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;c[n+16>>2]=0;Ru(b,T+244|0,n);Ru(b,n,T+224|0)}v=(S|0)==0;if(!v){w=b+16|0;x=e+28|0;y=e+8|0;z=N+8|0;A=N+16|0;B=N+4|0;C=N+12|0;D=T+216|0;E=T+200|0;F=Q+8|0;G=T+204|0;H=T+212|0;I=Q+12|0;J=e+4|0;K=0;u=128;f=p;while(1){a:do if(d[f>>0]&u){o=c[w>>2]|0;c[N+0>>2]=0;c[N+4>>2]=0;c[N+8>>2]=0;c[N+12>>2]=0;c[N+16>>2]=0;if((c[ca>>2]|0)>>>0<=K>>>0){j=c[J>>2]|0;if((j|0)!=0?(c[j>>2]|0)==0:0){c[j>>2]=130;j=0}else j=0}else j=K;m=c[x>>2]|0;q=da(c[y>>2]|0,j)|0;n=m+q|0;l=c[m+(q+8)>>2]|0;j=c[m+(q+4)>>2]|0;k=l-j|0;do if((k|0)==-1376256){c[z>>2]=l;c[N>>2]=1;k=1;j=l;W=29}else if((k|0)!=-1310720)if((k|0)<0){c[z>>2]=l;c[N>>2]=4;k=4;j=l;W=29;break}else{c[z>>2]=j;c[N>>2]=4;k=4;W=29;break}else{c[N>>2]=0;c[z>>2]=h;c[A>>2]=o;c[B>>2]=K;k=0;j=h;W=31}while(0);if((W|0)==29){W=0;j=j+h|0;c[z>>2]=j;c[A>>2]=o;c[B>>2]=K;if(!(a[n>>0]|0))W=31;else{t=c[m+(q+12)>>2]|0;c[C>>2]=t;k=k|16;c[N>>2]=k;r=j}}if((W|0)==31){W=0;t=qg(j,o)|0;c[C>>2]=t;r=j}Su(Q,e,K,T,h,c[w>>2]|0,0);if((k&16|0)==0?(R=c[Q>>2]|0,(R&16|0)==0):0){j=c[D>>2]|0;q=c[E>>2]|0;if(!q)break;n=(R&10|0)==0;s=c[F>>2]|0;m=(k&5|0)==0;l=0;while(1){o=T+(l*20|0)+264|0;if(!(a[T+(l*20|0)+280>>0]|0)){if((!n?(M=c[o>>2]|0,(M-j|0)<=(s|0)):0)?(s|0)<=((c[T+(l*20|0)+268>>2]|0)+j|0):0){q=M;n=l;W=48;break}}else if((!m?((c[o>>2]|0)-j|0)<=(r|0):0)?(L=c[T+(l*20|0)+268>>2]|0,(r|0)<=(L+j|0)):0){q=L;W=40;break}l=l+1|0;if(l>>>0>=q>>>0)break a}if((W|0)==40){W=0;if(!(a[G>>0]|0)){j=t+32768&-65536;if((q-r|0)>=(c[H>>2]|0)){s=(c[T+(l*20|0)+276>>2]|0)+-65536|0;j=(j|0)<(s|0)?j:s}}else j=c[T+(l*20|0)+276>>2]|0;j=j-t|0}else if((W|0)==48){W=0;if(!(a[G>>0]|0)){l=c[I>>2]|0;j=l+32768&-65536;if((s-q|0)>=(c[H>>2]|0)){s=(c[T+(n*20|0)+276>>2]|0)+65536|0;j=(j|0)>(s|0)?j:s}}else{l=c[I>>2]|0;j=c[T+(n*20|0)+276>>2]|0}j=j-l|0}if(k){c[C>>2]=t+j;c[N>>2]=k|16}if(R){c[I>>2]=(c[I>>2]|0)+j;c[Q>>2]=R|16}}Ru(b,N,Q);a[f>>0]=d[f>>0]&(u^255)}while(0);if((K&7|0)==7){j=128;f=f+1|0}else j=u>>>1&127;K=K+1|0;if((K|0)==(S|0))break;else u=j}}do if(!aa){if(!v){r=b+16|0;s=e+28|0;t=e+8|0;u=U+8|0;v=U+16|0;w=U+4|0;x=U+12|0;y=e+4|0;z=0;o=128;while(1){if(d[p>>0]&o){m=c[r>>2]|0;c[U+0>>2]=0;c[U+4>>2]=0;c[U+8>>2]=0;c[U+12>>2]=0;c[U+16>>2]=0;if((c[ca>>2]|0)>>>0<=z>>>0){j=c[y>>2]|0;if((j|0)!=0?(c[j>>2]|0)==0:0){c[j>>2]=130;j=0}else j=0}else j=z;n=c[s>>2]|0;l=da(c[t>>2]|0,j)|0;q=n+l|0;k=c[n+(l+8)>>2]|0;j=c[n+(l+4)>>2]|0;f=k-j|0;do if((f|0)==-1310720){c[U>>2]=0;c[u>>2]=h;c[v>>2]=m;c[w>>2]=z;j=h;W=83}else if((f|0)!=-1376256)if((f|0)<0){c[u>>2]=k;c[U>>2]=4;f=20;j=k;W=81;break}else{c[u>>2]=j;c[U>>2]=4;f=20;W=81;break}else{c[u>>2]=k;c[U>>2]=1;f=17;j=k;W=81}while(0);if((W|0)==81){W=0;j=j+h|0;c[u>>2]=j;c[v>>2]=m;c[w>>2]=z;if(!(a[q>>0]|0))W=83;else{c[x>>2]=c[n+(l+12)>>2];c[U>>2]=f}}if((W|0)==83){W=0;c[x>>2]=qg(j,m)|0}Su(V,e,z,T,h,c[r>>2]|0,0);Ru(b,U,V)}if((z&7|0)==7){j=128;p=p+1|0}else j=o>>>1&127;z=z+1|0;if((z|0)==(S|0))break;else o=j}}}else{S=c[ba>>2]|0;if(((S|0)!=0?(c[b+36>>2]|0)<=0:0)?(c[b+((S+-1|0)*20|0)+36>>2]|0)>=0:0)break;c[O+0>>2]=0;c[O+4>>2]=0;c[O+8>>2]=0;c[O+12>>2]=0;c[O>>2]=49;c[O+16>>2]=c[b+16>>2];c[P+0>>2]=0;c[P+4>>2]=0;c[P+8>>2]=0;c[P+12>>2]=0;c[P+16>>2]=0;Ru(b,O,P)}while(0);u=b+8|0;c[(c[u>>2]|0)+20>>2]=0;j=c[ba>>2]|0;b:do if(j){t=$+4|0;q=0;do{S=c[b+(q*20|0)+28>>2]|0;n=(S&12|0)!=0;r=q+1|0;s=n?r:q;if(!(S&16)){m=b+(q*20|0)+40|0;f=c[m>>2]|0;R=f&65535;o=b+(s*20|0)+40|0;p=c[o>>2]|0;l=p&65535;S=0-R|0;k=0-l|0;R=(R|0)==0?0:65536-R|0;l=(l|0)==0?0:65536-l|0;l=R>>>0>>0?R:l;k=(S|0)>(k|0)?S:k;do if(s>>>0<(j+-1|0)>>>0?(X=s+1|0,(c[b+(X*20|0)+40>>2]|0)<(p+32768+l|0)):0){if((q|0)!=0?(c[b+((q+-1|0)*20|0)+40>>2]|0)>(f+-32768+k|0):0)j=0;else if((l|0)<(0-k|0))j=k;else{p=f;j=k;break}if(!(c[b+(X*20|0)+28>>2]&16)){c[$>>2]=s;c[t>>2]=l-j;Nu(c[u>>2]|0,$);p=c[m>>2]|0}else p=f}else W=94;while(0);do if((W|0)==94){W=0;if((q|0)!=0?(c[b+((q+-1|0)*20|0)+40>>2]|0)>(f+-32768+k|0):0){p=f;j=l;break}p=f;j=(l|0)>(0-k|0)?k:l}while(0);c[m>>2]=j+p;if(n)c[o>>2]=(c[o>>2]|0)+j}if((q|0)!=0?(Y=c[b+(q*20|0)+36>>2]|0,Z=q+-1|0,_=c[b+(Z*20|0)+36>>2]|0,(Y|0)!=(_|0)):0)c[b+(Z*20|0)+44>>2]=rg((c[b+(q*20|0)+40>>2]|0)-(c[b+(Z*20|0)+40>>2]|0)|0,Y-_|0)|0;if(n){j=c[b+(s*20|0)+36>>2]|0;f=s+-1|0;k=c[b+(f*20|0)+36>>2]|0;if((j|0)==(k|0))j=r;else{c[b+(f*20|0)+44>>2]=rg((c[b+(s*20|0)+40>>2]|0)-(c[b+(f*20|0)+40>>2]|0)|0,j-k|0)|0;j=r}}else j=q;q=j+1|0;j=c[ba>>2]|0}while(q>>>0>>0);j=c[u>>2]|0;k=c[j+20>>2]|0;if(k){f=k;l=j;j=k;while(1){m=j+-1|0;if(f>>>0<=m>>>0){j=c[l+4>>2]|0;if((j|0)!=0?(c[j>>2]|0)==0:0){c[j>>2]=130;j=0}else j=0}else j=m;f=c[l+28>>2]|0;l=da(c[l+8>>2]|0,j)|0;j=c[f+l>>2]|0;k=b+(j*20|0)+40|0;l=c[f+(l+4)>>2]|0;f=l+(c[k>>2]|0)|0;if((c[b+((j+1|0)*20|0)+40>>2]|0)>=(f+32768|0)?(c[k>>2]=f,(c[b+(j*20|0)+28>>2]&12|0)!=0):0){_=b+((j+-1|0)*20|0)+40|0;c[_>>2]=(c[_>>2]|0)+l}if(!m)break b;l=c[u>>2]|0;f=c[l+20>>2]|0;j=m}}}while(0);if(aa){ba=b+12|0;a[ba>>0]=1;ba=g+5|0;a[ba>>0]=0;i=ea;return}j=c[ba>>2]|0;if(!j){ba=b+12|0;a[ba>>0]=1;ba=g+5|0;a[ba>>0]=0;i=ea;return}o=e+28|0;p=e+8|0;n=e+4|0;m=0;do{f=b+(m*20|0)+28|0;k=c[f>>2]|0;if(!(k&32)){j=c[b+(m*20|0)+32>>2]|0;if((c[ca>>2]|0)>>>0<=j>>>0){j=c[n>>2]|0;if((j|0)!=0?(c[j>>2]|0)==0:0){c[j>>2]=130;j=0;k=c[f>>2]|0}else j=0}l=c[o>>2]|0;j=da(c[p>>2]|0,j)|0;f=c[b+(m*20|0)+40>>2]|0;if(!(k&10))c[l+(j+12)>>2]=f;else c[l+(j+16)>>2]=f;a[l+j>>0]=1;j=c[ba>>2]|0}m=m+1|0}while(m>>>0>>0);ba=b+12|0;a[ba>>0]=1;ba=g+5|0;a[ba>>0]=0;i=ea;return}function Hu(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+32|0;o=s+20|0;t=s+16|0;k=s+8|0;l=s+12|0;p=s;q=b+11720|0;r=b+11724|0;Ou(b,c[q>>2]|0,c[r>>2]|0,d,e,o,t);Ou(b,f,g,h,j,k,l);n=(da(g-e>>16,d>>16)|0)-(da(f-d>>16,e>>16)|0)|0;m=(c[b+4>>2]|0)+16|0;c[m>>2]=n+(c[m>>2]|0);o=c[o>>2]|0;m=o+(c[q>>2]|0)|0;c[p>>2]=m;t=c[t>>2]|0;n=t+(c[r>>2]|0)|0;c[p+4>>2]=n;o=o+d|0;e=t+e|0;k=c[k>>2]|0;l=c[l>>2]|0;d=b+11666|0;if(a[d>>0]|0){Pu(b,m,n);a[d>>0]=0;a[b+11664>>0]=1;t=b+11712|0;c[t>>2]=o;c[t+4>>2]=e}d=b+11744|0;if(a[d>>0]|0)Fu(b,b+8|0,p,o,e,0);a[d>>0]=1;c[b+11748>>2]=4;m=p;t=c[m+4>>2]|0;d=b+11752|0;c[d>>2]=c[m>>2];c[d+4>>2]=t;d=b+11760|0;c[d>>2]=o;c[d+4>>2]=e;c[b+11768>>2]=k+f;c[b+11772>>2]=l+g;c[b+11776>>2]=k+h;c[b+11780>>2]=l+j;d=c[b+11676>>2]|0;if(!(a[d+5>>0]|0)){c[q>>2]=h;c[r>>2]=j;i=s;return}Gu(b+8|0,c[b+11668>>2]|0,c[b+11672>>2]|0,d,c[b+11680>>2]|0,0);c[q>>2]=h;c[r>>2]=j;i=s;return}function Iu(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+64|0;v=w;n=c[d>>2]|0;c[v>>2]=n;c[v+4>>2]=c[e>>2];q=(a[g+9>>0]|0)==0;p=q?9:10;t=b+392|0;u=b+8|0;s=u;r=b+4|0;j=0;k=0;while(1){o=v+(j+2<<2)|0;c[o>>2]=n;if(!(a[g+j>>0]|0))m=k;else{m=k+1|0;do if((c[t>>2]|0)-s>>3>>>0>k>>>0){l=b+(k<<3)+8|0;k=c[b+(k<<3)+12>>2]|0;if((k|0)==2){l=c[l>>2]<<16;k=n;break}else if((k|0)==1){k=c[l>>2]|0;if((k|0)<0){l=0-(8192-k>>14)|0;k=n;break}else{l=k+8192>>14;k=n;break}}else{l=c[l>>2]|0;k=n;break}}else{k=c[r>>2]|0;if((k|0)!=0?(c[k>>2]|0)==0:0){c[k>>2]=130;l=0;k=c[o>>2]|0}else{l=0;k=n}}while(0);c[o>>2]=k+l}j=j+1|0;if((j|0)>=(p|0)){o=m;break}n=c[v+(j<<2)>>2]|0;k=m}if(q)c[v+44>>2]=c[e>>2];do if(h<<24>>24){k=v+40|0;g=(c[k>>2]|0)-(c[d>>2]|0)|0;l=v+44|0;n=(c[l>>2]|0)-(c[e>>2]|0)|0;n=(((g|0)<0?0-g|0:g)|0)>(((n|0)<0?0-n|0:n)|0);do if((c[t>>2]|0)-s>>3>>>0>o>>>0){m=b+(o<<3)+8|0;j=c[b+(o<<3)+12>>2]|0;if((j|0)==1){j=c[m>>2]|0;if((j|0)<0){j=0-(8192-j>>14)|0;break}else{j=j+8192>>14;break}}else if((j|0)==2){j=c[m>>2]<<16;break}else{j=c[m>>2]|0;break}}else{j=c[r>>2]|0;if((j|0)!=0?(c[j>>2]|0)==0:0){c[j>>2]=130;j=0}else j=0}while(0);if(n){j=(c[k>>2]|0)+j|0;c[v+48>>2]=j;k=c[e>>2]|0;c[v+52>>2]=k;break}else{b=c[d>>2]|0;c[v+48>>2]=b;k=(c[l>>2]|0)+j|0;c[v+52>>2]=k;j=b;break}}else{if(!(a[g+10>>0]|0)){j=c[d>>2]|0;c[v+48>>2]=j;k=o}else{l=c[v+40>>2]|0;k=o+1|0;do if((c[t>>2]|0)-s>>3>>>0>o>>>0){m=b+(o<<3)+8|0;j=c[b+(o<<3)+12>>2]|0;if((j|0)==2){j=c[m>>2]<<16;break}else if((j|0)==1){j=c[m>>2]|0;if((j|0)<0){j=0-(8192-j>>14)|0;break}else{j=j+8192>>14;break}}else{j=c[m>>2]|0;break}}else{j=c[r>>2]|0;if((j|0)!=0?(c[j>>2]|0)==0:0){c[j>>2]=130;j=0}else j=0}while(0);j=j+l|0;c[v+48>>2]=j}if(!(a[g+11>>0]|0)){k=c[e>>2]|0;c[v+52>>2]=k;l=v+44|0;break}l=v+44|0;n=c[l>>2]|0;do if((c[t>>2]|0)-s>>3>>>0>k>>>0){m=b+(k<<3)+8|0;k=c[b+(k<<3)+12>>2]|0;if((k|0)==2){k=c[m>>2]<<16;break}else if((k|0)==1){k=c[m>>2]|0;if((k|0)<0){k=0-(8192-k>>14)|0;break}else{k=k+8192>>14;break}}else{k=c[m>>2]|0;break}}else{k=c[r>>2]|0;if((k|0)!=0?(c[k>>2]|0)==0:0){c[k>>2]=130;k=0;j=c[v+48>>2]|0}else k=0}while(0);k=k+n|0;c[v+52>>2]=k}while(0);Hu(f,c[v+8>>2]|0,c[v+12>>2]|0,c[v+16>>2]|0,c[v+20>>2]|0,c[v+24>>2]|0,c[v+28>>2]|0);Hu(f,c[v+32>>2]|0,c[v+36>>2]|0,c[v+40>>2]|0,c[l>>2]|0,j,k);c[t>>2]=u;c[d>>2]=j;c[e>>2]=k;i=w;return}function Ju(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0;m=f-d|0;o=g-e|0;if((o|0)<1|(g|0)<(h|0)|(e|0)>(i|0)){o=0;return o|0}if((h|0)>(e|0)){d=(og(m,h-e|0,o)|0)+d|0;k=c[b>>2]|0;j=k;k=h>>k;h=0}else{k=c[b>>2]|0;j=k;k=e>>k;h=(c[b+4>>2]|0)+-1&e}if((g|0)>(i|0)){e=0;f=i}else{e=(c[b+4>>2]|0)+-1&g;f=g}l=f>>j;do if((h|0)>0)if((k|0)==(l|0)){o=0;return o|0}else{d=(og(m,(c[b+4>>2]|0)-h|0,o)|0)+d|0;f=b+87|0;k=k+1|0;break}else{f=b+87|0;if(a[f>>0]|0){n=b+40|0;c[n>>2]=(c[n>>2]|0)+-4;a[f>>0]=0}}while(0);a[f>>0]=(e|0)==0&1;f=b+86|0;if(a[f>>0]|0){c[(c[b+88>>2]|0)+20>>2]=k;a[f>>0]=0}i=l-k|0;e=i+1|0;n=b+40|0;if(((c[n>>2]|0)+(e<<2)|0)>>>0>=(c[b+36>>2]|0)>>>0){c[b+44>>2]=98;o=1;return o|0}f=b+4|0;h=c[f>>2]|0;if((m|0)>0){b=pg(h,m,o)|0;f=da(c[f>>2]|0,m)|0;g=1}else{g=0-m|0;b=0-(pg(h,g,o)|0)|0;f=da(c[f>>2]|0,g)|0;g=-1}j=(f|0)%(o|0)|0;f=c[n>>2]|0;if((i|0)>-1){h=k+-1-l|0;k=l+((h|0)>-1?h:-1)+2-k|0;h=0-o|0;i=f;while(1){c[i>>2]=d;d=d+b|0;h=h+j|0;if((h|0)>-1){d=d+g|0;h=h-o|0}e=e+-1|0;if((e|0)<=0)break;else i=i+4|0}f=f+(k<<2)|0}c[n>>2]=f;o=0;return o|0}function Ku(a){a=a|0;var b=0,d=0,e=0,f=0;b=a+16|0;d=c[b>>2]|0;c[a+32>>2]=d;f=a+8|0;e=c[f>>2]|0;d=(d+e|0)/2|0;c[a+24>>2]=d;e=((c[a>>2]|0)+e|0)/2|0;c[f>>2]=e;c[b>>2]=(e+d|0)/2|0;b=a+20|0;d=c[b>>2]|0;c[a+36>>2]=d;e=a+12|0;f=c[e>>2]|0;d=(d+f|0)/2|0;c[a+28>>2]=d;a=((c[a+4>>2]|0)+f|0)/2|0;c[e>>2]=a;c[b>>2]=(a+d|0)/2|0;return}function Lu(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=b+52|0;i=c[q>>2]|0;l=c[i+(d<<3)+4>>2]|0;j=c[i+4>>2]|0;r=b+40|0;h=c[r>>2]|0;if(!((j|0)<(f|0)|(l|0)>(g|0))){p=b+4|0;m=c[p>>2]|0;k=0-m|0;o=j&k;o=(o|0)>(g|0)?g:o;if((l|0)>=(f|0)){g=l+-1+m&k;if(!(l&65535&m+65535)){j=b+87|0;if(a[j>>0]|0){a[j>>0]=0;h=h+-4|0}c[h>>2]=c[i+(d<<3)>>2];m=m+g|0;h=h+4|0}else m=g}else{m=f;g=f}j=b+86|0;if(a[j>>0]|0){c[(c[b+88>>2]|0)+20>>2]=g>>c[b>>2];a[j>>0]=0}if((o|0)>=(m|0)){if((h+((o-m>>c[b>>2])+1<<2)|0)>>>0>=(c[b+36>>2]|0)>>>0){c[r>>2]=h;c[b+44>>2]=98;d=1;return d|0}n=b+87|0;b=b+16|0;f=0-d|0;j=i;a:while(1){while(1){a[n>>0]=0;g=c[j+4>>2]|0;if((g|0)<=(m|0)){k=19;break}l=c[j+(d<<3)+4>>2]|0;g=g-l|0;if((g|0)<(c[b>>2]|0)){k=16;break}Bd[e&511](j);j=j+(d<<3)|0;if(j>>>0>>0)break a}if((k|0)==16){k=c[j+(d<<3)>>2]|0;c[h>>2]=((da((c[j>>2]|0)-k|0,m-l|0)|0)/(g|0)|0)+k;g=(c[p>>2]|0)+m|0;h=h+4|0}else if((k|0)==19)if((g|0)==(m|0)){a[n>>0]=1;c[h>>2]=c[j>>2];g=(c[p>>2]|0)+m|0;h=h+4|0}else g=m;j=j+(f<<3)|0;if(j>>>0>>0|(g|0)>(o|0))break;else m=g}i=c[q>>2]|0}}c[r>>2]=h;c[q>>2]=i+(0-d<<3);d=0;return d|0}function Mu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=a+24|0;d=c[b>>2]|0;c[a+48>>2]=d;e=a+8|0;f=a+16|0;g=c[f>>2]|0;h=(c[e>>2]|0)+1|0;i=h+(c[a>>2]|0)>>1;c[e>>2]=i;d=g+1+d>>1;c[a+40>>2]=d;g=(h+g>>1)+1|0;i=g+i>>1;c[f>>2]=i;d=g+d>>1;c[a+32>>2]=d;c[b>>2]=i+1+d>>1;b=a+28|0;d=c[b>>2]|0;c[a+52>>2]=d;i=a+12|0;g=a+20|0;f=c[g>>2]|0;h=(c[i>>2]|0)+1|0;e=h+(c[a+4>>2]|0)>>1;c[i>>2]=e;d=f+1+d>>1;c[a+44>>2]=d;f=(h+f>>1)+1|0;e=f+e>>1;c[g>>2]=e;d=f+d>>1;c[a+36>>2]=d;c[b>>2]=e+1+d>>1;return}function Nu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+16|0;j=m;l=a+20|0;e=c[l>>2]|0;h=a+12|0;do if((e|0)==(c[h>>2]|0)){k=(c[a+16>>2]|0)+e|0;c[j>>2]=0;f=a+8|0;n=c[f>>2]|0;e=da(n,k)|0;if((2147483647/(n>>>0)|0)>>>0>=k>>>0?(g=a+24|0,n=a+28|0,d=Dg(c[a>>2]|0,1,c[g>>2]|0,e,c[n>>2]|0,j)|0,c[n>>2]=d,(c[j>>2]|0)==0):0){c[h>>2]=k;c[g>>2]=e;e=c[l>>2]|0;if(e>>>0<=k>>>0)break;d=c[a+4>>2]|0;if((d|0)!=0?(c[d>>2]|0)==0:0)c[d>>2]=130;c[l>>2]=k;i=m;return}d=c[a+4>>2]|0;if(!d){i=m;return}if(c[d>>2]|0){i=m;return}c[d>>2]=64;i=m;return}else{f=a+8|0;d=c[a+28>>2]|0}while(0);n=c[f>>2]|0;qfa(d+(da(n,e)|0)|0,b|0,n|0)|0;c[l>>2]=(c[l>>2]|0)+1;i=m;return}function Ou(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;j=f-d|0;f=g-e|0;if(!(a[(c[b>>2]|0)+192>>0]|0)){k=j;l=f}else{k=0-j|0;l=0-f|0}c[i>>2]=0;c[h>>2]=0;if(!(a[b+11665>>0]|0))return;e=(da(f>>16,d>>16)|0)-(da(j>>16,e>>16)|0)|0;f=(c[b+4>>2]|0)+16|0;c[f>>2]=e+(c[f>>2]|0);f=(l|0)>-1;if((k|0)>-1)if(f){if((k|0)>(l<<1|0)){c[h>>2]=0;c[i>>2]=0;return}f=c[b+11688>>2]|0;if((l|0)>(k<<1|0)){c[h>>2]=f;c[i>>2]=c[b+11692>>2];return}else{c[h>>2]=qg(45875,f)|0;c[i>>2]=qg(19661,c[b+11692>>2]|0)|0;return}}else{if((k|0)>(da(l,-2)|0)){c[h>>2]=0;c[i>>2]=0;return}f=c[b+11688>>2]|0;if((k<<1|0)<(0-l|0)){c[h>>2]=0-f;c[i>>2]=c[b+11692>>2];return}else{c[h>>2]=qg(-45874,f)|0;c[i>>2]=qg(19661,c[b+11692>>2]|0)|0;return}}else{g=0-k|0;if(f){if((l<<1|0)<(g|0)){c[h>>2]=0;c[i>>2]=c[b+11692>>2]<<1;return}l=(l|0)>(da(k,-2)|0);f=c[b+11688>>2]|0;if(l){c[h>>2]=f;c[i>>2]=c[b+11692>>2];return}else{c[h>>2]=qg(45875,f)|0;c[i>>2]=qg(111411,c[b+11692>>2]|0)|0;return}}else{if((da(l,-2)|0)<(g|0)){c[h>>2]=0;c[i>>2]=c[b+11692>>2]<<1;return}l=(da(k,-2)|0)<(0-l|0);f=b+11688|0;g=c[f>>2]|0;if(l){c[h>>2]=0-g;c[i>>2]=c[f>>2];return}else{c[h>>2]=qg(-45874,g)|0;c[i>>2]=qg(111411,c[b+11692>>2]|0)|0;return}}}}function Pu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+48|0;o=p;c[o+32>>2]=1;m=b+11728|0;k=m;f=c[k+4>>2]|0;n=o;c[n>>2]=c[k>>2];c[n+4>>2]=f;n=b+8|0;f=b+20|0;if(!(a[f>>0]|0)){h=b+11736|0;j=c[h>>2]|0;k=b+11740|0;l=c[k>>2]|0;g=b+11664|0;if(!(a[g>>0]|0)){g=1;f=b+11666|0}else{Eu(b,j,l);Fu(b,b+3876|0,b+11704|0,c[b+11712>>2]|0,c[b+11716>>2]|0,1);q=b+11666|0;a[q>>0]=1;a[g>>0]=0;a[b+11744>>0]=0;g=(a[f>>0]|0)==0;f=q}c[h>>2]=j;c[b+11720>>2]=j;c[k>>2]=l;c[b+11724>>2]=l;a[f>>0]=1;f=c[b+11676>>2]|0;if(!(!g?(a[f+5>>0]|0)==0:0))Gu(n,c[b+11668>>2]|0,c[b+11672>>2]|0,f,c[b+11680>>2]|0,0);qfa(b+3876|0,n|0,3868)|0}k=o+8|0;q=qg(c[b+11644>>2]|0,d)|0;q=(qg(c[b+11648>>2]|0,e)|0)+q|0;l=Qu(n,e)|0;h=qg(c[(c[b>>2]|0)+60>>2]|0,q)|0;h=(qg(c[(c[b>>2]|0)+68>>2]|0,l)|0)+h|0;c[k>>2]=h+(c[b+11656>>2]|0);q=qg(c[(c[b>>2]|0)+64>>2]|0,q)|0;q=(qg(c[(c[b>>2]|0)+72>>2]|0,l)|0)+q|0;c[o+12>>2]=q+(c[b+11660>>2]|0);q=c[b+4>>2]|0;Cd[c[q>>2]&255](q,o);o=c[k+4>>2]|0;q=m;c[q>>2]=c[k>>2];c[q+4>>2]=o;q=b+11704|0;c[q>>2]=d;c[q+4>>2]=e;i=p;return}function Qu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=c[b+20>>2]|0;if((e|0)!=0?(a[b+13>>0]|0)!=0:0){h=b+24|0;f=e+-1|0;e=c[h>>2]|0;while(1){if(e>>>0>=f>>>0)break;g=e+1|0;if((c[b+(g*20|0)+36>>2]|0)>(d|0))break;else e=g}a:do if(!e)i=11;else{while(1){f=b+(e*20|0)+36|0;if((c[f>>2]|0)<=(d|0)){g=f;f=e;break}e=e+-1|0;if(!e){i=11;break a}}c[h>>2]=f;e=c[g>>2]|0}while(0);if((i|0)==11){c[h>>2]=0;e=c[b+36>>2]|0;if((e|0)>(d|0)){d=qg(d-e|0,c[b+16>>2]|0)|0;b=(c[b+40>>2]|0)+d|0;return b|0}else f=0}d=qg(d-e|0,c[b+(f*20|0)+44>>2]|0)|0;b=(c[b+(f*20|0)+40>>2]|0)+d|0;return b|0}b=qg(d,c[b+16>>2]|0)|0;return b|0}function Ru(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!(c[d>>2]|0)){d=e;k=0}else k=(c[e>>2]|0)!=0&1;j=b+20|0;i=c[j>>2]|0;if(i){g=c[d+8>>2]|0;f=0;while(1){h=f+1|0;if((c[b+(f*20|0)+36>>2]|0)>(g|0))break;if(h>>>0>>0)f=h;else{f=h;break}}if(f>>>0>>0){if(k<<24>>24!=0?(c[b+(f*20|0)+36>>2]|0)<(c[e+8>>2]|0):0)return;if(c[b+(f*20|0)+28>>2]&8)return;else i=f}else i=f}else i=0;f=c[b+4>>2]|0;do if((a[f+12>>0]|0)!=0?(c[d>>2]&16|0)==0:0)if(!(k<<24>>24)){c[d+12>>2]=Qu(f,c[d+8>>2]|0)|0;break}else{l=e+8|0;h=d+8|0;g=Qu(f,((c[h>>2]|0)+(c[l>>2]|0)|0)/2|0)|0;f=qg(((c[l>>2]|0)-(c[h>>2]|0)|0)/2|0,c[b+16>>2]|0)|0;c[d+12>>2]=g-f;c[e+12>>2]=f+g;break}while(0);if((i|0)!=0?(c[d+12>>2]|0)<(c[b+((i+-1|0)*20|0)+40>>2]|0):0)return;f=c[j>>2]|0;do if(f>>>0>i>>>0)if(!(k<<24>>24)){if((c[d+12>>2]|0)<=(c[b+(i*20|0)+40>>2]|0))break;return}else{if((c[e+12>>2]|0)<=(c[b+(i*20|0)+40>>2]|0))break;return}while(0);h=f+(k&255)|0;if((h|0)>191)return;if((f|0)!=(i|0)){g=f-i|0;while(1){f=f+-1|0;g=g+-1|0;l=b+(h*20|0)+28|0;m=b+(f*20|0)+28|0;c[l+0>>2]=c[m+0>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];c[l+16>>2]=c[m+16>>2];if(!g)break;else h=h+-1|0}}m=b+(i*20|0)+28|0;c[m+0>>2]=c[d+0>>2];c[m+4>>2]=c[d+4>>2];c[m+8>>2]=c[d+8>>2];c[m+12>>2]=c[d+12>>2];c[m+16>>2]=c[d+16>>2];c[j>>2]=(c[j>>2]|0)+1;if(!(k<<24>>24))return;m=b+((i+1|0)*20|0)+28|0;c[m+0>>2]=c[e+0>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];c[m+16>>2]=c[e+16>>2];c[j>>2]=(c[j>>2]|0)+1;return}function Su(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;if((c[d+20>>2]|0)>>>0<=e>>>0){j=c[d+4>>2]|0;if((j|0)!=0?(c[j>>2]|0)==0:0){c[j>>2]=130;j=0}else j=0}else j=e;p=c[d+28>>2]|0;n=da(c[d+8>>2]|0,j)|0;o=p+n|0;l=c[p+(n+8)>>2]|0;k=c[p+(n+4)>>2]|0;m=l-k|0;do if((m|0)==-1310720)if(!(i<<24>>24)){c[b+8>>2]=k;c[b>>2]=2;j=2;m=20;break}else{c[b>>2]=0;j=0;m=19;break}else if((m|0)==-1376256)if(!(i<<24>>24)){c[b>>2]=0;j=0;m=19;break}else{c[b+8>>2]=l;c[b>>2]=1;j=1;m=19;break}else{j=i<<24>>24!=0;d=b+8|0;if((m|0)<0)if(j){c[d>>2]=l;c[b>>2]=4;j=4;m=19;break}else{c[d>>2]=k;c[b>>2]=8;j=8;m=20;break}else if(j){c[d>>2]=k;c[b>>2]=4;j=4;m=19;break}else{c[d>>2]=l;c[b>>2]=8;j=8;m=20;break}}while(0);if((m|0)==19){l=c[b+8>>2]|0;d=j;k=12}else if((m|0)==20){d=b+8|0;l=(c[d>>2]|0)+(c[f+188>>2]<<1)|0;c[d>>2]=l;d=j;k=16}j=l+g|0;c[b+8>>2]=j;c[b+16>>2]=h;c[b+4>>2]=e;if((d|0)!=0?(a[o>>0]|0)!=0:0){c[b+12>>2]=c[p+(n+k)>>2];c[b>>2]=d|16;return}c[b+12>>2]=qg(j,h)|0;return}function Tu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=da(d,b)|0;if((d|0)!=0?((f>>>0)/(d>>>0)|0|0)!=(b|0):0){f=c[a+628>>2]|0;c[g>>2]=e;Yv(f,e,217432,g);f=0}i=h;return f|0}function Uu(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;h=Ifa(e|0,f|0,b|0,d|0)|0;j=H;if(!((e|0)==0&(f|0)==0)?(e=Jfa(h|0,j|0,e|0,f|0)|0,!((e|0)==(b|0)&(H|0)==(d|0))):0){j=c[a+628>>2]|0;c[k>>2]=g;Yv(j,g,217432,k);j=0;h=0}H=j;i=l;return h|0}function Vu(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+16|0;h=j;if((d|0)!=0&(e|0)!=0?(g=aK(b,da(e,d)|0)|0,(g|0)!=0):0){f=g;i=j;return f|0}b=c[a+628>>2]|0;a=c[a>>2]|0;c[h>>2]=f;c[h+4>>2]=d;c[h+8>>2]=e;Yv(b,a,95624,h);f=0;i=j;return f|0}function Wu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;if((b|0)!=0&(d|0)!=0?(f=aK(0,da(d,b)|0)|0,(f|0)!=0):0){e=f;i=h;return e|0}f=c[a+628>>2]|0;a=c[a>>2]|0;c[g>>2]=e;c[g+4>>2]=b;c[g+8>>2]=d;Yv(f,a,95624,g);e=0;i=h;return e|0}function Xu(a,d,f){a=a|0;d=d|0;f=f|0;var h=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;q=s;if(tv(a,d,f)|0){a=1;i=s;return a|0}do if((d|0)==32998){r=c[a+76>>2]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;c[a>>2]=r;a=1;i=s;return a|0}else if((d|0)==284){r=b[a+126>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==274){r=b[a+96>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==332){r=c[f>>2]|0;a=c[r>>2]|0;c[f>>2]=r+4;b[a>>1]=1;a=1;i=s;return a|0}else if((d|0)==258){r=b[a+84>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==280){r=b[a+104>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==32996){r=(e[a+86>>1]|0)+65535&65535;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==339){r=b[a+86>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==530){n=b[a+192>>1]|0;m=c[f>>2]|0;r=c[m>>2]|0;c[f>>2]=m+4;b[r>>1]=n;r=b[a+194>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==301){r=a+200|0;k=c[r>>2]|0;do if(!k){o=a+208|0;c[o>>2]=0;p=a+204|0;c[p>>2]=0;c[r>>2]=0;k=b[a+84>>1]|0;if((k&65535)<=29?(j=1<<(k&65535),m=j<<1,h=_J(m)|0,c[r>>2]=h,(h|0)!=0):0){b[h>>1]=0;if((j|0)>1){l=+(j|0)+-1.0;k=1;do{b[h+(k<<1)>>1]=~~+R(+(+U(+(+(k|0)/l),2.2)*65535.0+.5));k=k+1|0}while((k|0)!=(j|0))}d=a+98|0;j=a+156|0;if(((e[d>>1]|0)-(e[j>>1]|0)|0)<=1)break;h=_J(m)|0;c[p>>2]=h;if((h|0)!=0?(cK(h,c[r>>2]|0,m),n=_J(m)|0,c[o>>2]=n,(n|0)!=0):0){cK(n,c[r>>2]|0,m);h=c[r>>2]|0;break}h=c[r>>2]|0;if(h)$J(h);h=c[p>>2]|0;if(h)$J(h);h=c[o>>2]|0;if(h)$J(h);c[o>>2]=0;c[p>>2]=0;c[r>>2]=0}Yv(c[a+628>>2]|0,c[a>>2]|0,95720,q);a=0;i=s;return a|0}else{j=a+156|0;d=a+98|0;h=k}while(0);n=c[f>>2]|0;r=c[n>>2]|0;c[f>>2]=n+4;c[r>>2]=h;if(((e[d>>1]|0)-(e[j>>1]|0)|0)<=1){a=1;i=s;return a|0}n=c[a+204>>2]|0;m=c[f>>2]|0;r=c[m>>2]|0;c[f>>2]=m+4;c[r>>2]=n;r=c[a+208>>2]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;c[a>>2]=r;a=1;i=s;return a|0}else if((d|0)==317){r=c[c[a+576>>2]>>2]&65535;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==336){n=c[f>>2]|0;r=c[n>>2]|0;c[f>>2]=n+4;b[r>>1]=0;r=(1<>1])+65535&65535;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==277){r=b[a+98>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==531){r=b[a+196>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==32997){r=c[a+64>>2]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;c[a>>2]=r;a=1;i=s;return a|0}else if((d|0)==338){n=b[a+156>>1]|0;m=c[f>>2]|0;r=c[m>>2]|0;c[f>>2]=m+4;b[r>>1]=n;r=c[a+160>>2]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;c[a>>2]=r;a=1;i=s;return a|0}else if((d|0)==281){r=b[a+106>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==296){r=b[a+124>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==266){r=b[a+94>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==263){r=b[a+92>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==334){r=c[f>>2]|0;a=c[r>>2]|0;c[f>>2]=r+4;b[a>>1]=4;a=1;i=s;return a|0}else if((d|0)==254){r=c[a+80>>2]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;c[a>>2]=r;a=1;i=s;return a|0}else if((d|0)==32995){if((b[a+156>>1]|0)==1)h=(b[c[a+160>>2]>>1]|0)==1&1;else h=0;r=c[f>>2]|0;a=c[r>>2]|0;c[f>>2]=r+4;b[a>>1]=h;a=1;i=s;return a|0}else if((d|0)==529){r=c[f>>2]|0;a=c[r>>2]|0;c[f>>2]=r+4;c[a>>2]=95696;a=1;i=s;return a|0}else if((d|0)==318){g[23928]=.3457419276237488;g[23929]=.3585604429244995;r=c[f>>2]|0;a=c[r>>2]|0;c[f>>2]=r+4;c[a>>2]=95712;a=1;i=s;return a|0}else if((d|0)==278){r=c[a+100>>2]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;c[a>>2]=r;a=1;i=s;return a|0}else if((d|0)==532){d=a+212|0;h=c[d>>2]|0;do if(!h){h=_J(24)|0;c[d>>2]=h;if(!h){a=0;i=s;return a|0}if((b[a+90>>1]|0)==6){g[h>>2]=0.0;g[h+20>>2]=255.0;g[h+12>>2]=255.0;g[h+4>>2]=255.0;g[h+16>>2]=128.0;g[h+8>>2]=128.0;break}else{l=+((1<>1])+-1|0);g[h>>2]=0.0;g[h+4>>2]=l;g[h+8>>2]=0.0;g[h+12>>2]=l;g[h+16>>2]=0.0;g[h+20>>2]=l;break}}while(0);r=c[f>>2]|0;a=c[r>>2]|0;c[f>>2]=r+4;c[a>>2]=h;a=1;i=s;return a|0}else{a=0;i=s;return a|0}while(0);return 0}function Yu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=d;d=Xu(a,b,f)|0;i=e;return d|0}function Zu(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(c[a+8>>2]|0)ew(a)|0;Bd[c[a+564>>2]&511](a);uv(a);d=c[a+32>>2]|0;if(d)$J(d);e=a+680|0;d=c[e>>2]|0;if(d)do{c[e>>2]=c[d>>2];$J(c[d+8>>2]|0);$J(d);d=c[e>>2]|0}while((d|0)!=0);e=c[a+588>>2]|0;d=a+12|0;if((e|0)!=0?(c[d>>2]&512|0)!=0:0)$J(e);if(c[d>>2]&2048){h=c[a+616>>2]|0;Yd[c[a+624>>2]&63](c[a+628>>2]|0,c[a+612>>2]|0,h,((h|0)<0)<<31>>31)}h=a+656|0;d=c[h>>2]|0;if((d|0)!=0?(i=a+660|0,f=c[i>>2]|0,(f|0)!=0):0){g=0;while(1){e=c[d+(g<<2)>>2]|0;if((b[e+24>>1]|0)==65?(j=c[e+28>>2]|0,(hfa(97416,j,4)|0)==0):0){$J(j);$J(e);e=c[i>>2]|0;d=c[h>>2]|0}else e=f;g=g+1|0;if(g>>>0>=e>>>0)break;else f=e}$J(d)}g=a+688|0;e=c[g>>2]|0;if(!e){$J(a);return}h=a+684|0;d=c[h>>2]|0;f=0;do{if(c[d+(f<<4)+4>>2]|0){$J(c[d+(f<<4)+12>>2]|0);e=c[g>>2]|0;d=c[h>>2]|0}f=f+1|0}while(f>>>0>>0);$J(d);$J(a);return}function _u(a){a=a|0;var b=0,d=0;d=c[a+644>>2]|0;b=c[a+628>>2]|0;Zu(a);Ed[d&511](b)|0;return}function $u(a,b,c,d,e,f,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0.0,j=0.0,k=0.0;i=+(b>>>0)*100.0/255.0;if(i<8.855999946594238){b=a+20|0;k=i*+g[b>>2]/903.2919921875;g[f>>2]=k;k=k/+g[b>>2]*7.7870001792907715+.13793103396892548}else{k=(i+16.0)/116.0;g[f>>2]=k*(k*(k*+g[a+20>>2]))}i=k+ +(c|0)/500.0;j=+g[a+16>>2];if(i<.2069000005722046)i=j*(i+-.1379300057888031)/7.7870001792907715;else i=i*(i*(j*i));g[e>>2]=i;j=k-+(d|0)/200.0;i=+g[a+24>>2];if(j<.2069000005722046){k=i*(j+-.1379300057888031)/7.7870001792907715;g[h>>2]=k;return}else{k=j*(j*(i*j));g[h>>2]=k;return}}function av(a,b,d,e,f,h,i){a=a|0;b=+b;d=+d;e=+e;f=f|0;h=h|0;i=i|0;var j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0.0,r=0;q=+g[a+28>>2]*b+ +g[a+32>>2]*d+ +g[a+36>>2]*e;l=+g[a+40>>2]*b+ +g[a+44>>2]*d+ +g[a+48>>2]*e;k=+g[a+52>>2]*b+ +g[a+56>>2]*d+ +g[a+60>>2]*e;n=+g[a+88>>2];q=q>n?q:n;d=+g[a+92>>2];e=l>d?l:d;l=+g[a+96>>2];k=k>l?k:l;b=+g[a+64>>2];j=+g[a+68>>2];m=+g[a+72>>2];o=~~(((q>2]);p=c[a>>2]|0;n=+g[a+(((p|0)<(o|0)?p:o)<<2)+112>>2];b=n;if(n>0.0)b=b+.5;else b=b+-.5;c[f>>2]=~~b>>>0;p=~~(((e>2]);o=c[a>>2]|0;e=+g[a+(((o|0)<(p|0)?o:p)<<2)+6116>>2];b=e;if(e>0.0)b=b+.5;else b=b+-.5;c[h>>2]=~~b>>>0;p=~~(((k>2]);o=c[a>>2]|0;m=+g[a+(((o|0)<(p|0)?o:p)<<2)+12120>>2];b=m;if(m>0.0){m=b+.5;o=~~m>>>0;c[i>>2]=o;o=c[f>>2]|0;p=a+76|0;p=c[p>>2]|0;r=o>>>0

>>0;p=r?o:p;c[f>>2]=p;p=c[h>>2]|0;o=a+80|0;o=c[o>>2]|0;f=p>>>0>>0;o=f?p:o;c[h>>2]=o;o=c[i>>2]|0;p=a+84|0;p=c[p>>2]|0;f=o>>>0

>>0;p=f?o:p;c[i>>2]=p;return}else{m=b+-.5;r=~~m>>>0;c[i>>2]=r;r=c[f>>2]|0;p=a+76|0;p=c[p>>2]|0;o=r>>>0

>>0;p=o?r:p;c[f>>2]=p;p=c[h>>2]|0;r=a+80|0;r=c[r>>2]|0;o=p>>>0>>0;r=o?p:r;c[h>>2]=r;r=c[i>>2]|0;p=a+84|0;p=c[p>>2]|0;o=r>>>0

>>0;p=o?r:p;c[i>>2]=p;return}}function bv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0,l=0;c[a>>2]=1500;cK(a+28|0,b,84);j=1.0/+g[a+100>>2];l=a+64|0;h=+g[l>>2];k=a+88|0;i=+g[k>>2];b=c[a>>2]|0;g[a+4>>2]=(h-i)/+(b|0);if((b|0)>=0){f=a+76|0;e=0;while(1){g[a+(e<<2)+112>>2]=+((c[f>>2]|0)>>>0)*+U(+(+(e|0)/+(b|0)),+j);b=c[a>>2]|0;if((e|0)<(b|0))e=e+1|0;else break}i=+g[k>>2];h=+g[l>>2]}j=1.0/+g[a+104>>2];g[a+8>>2]=(h-i)/+(b|0);if((b|0)>=0){f=a+80|0;e=0;while(1){g[a+(e<<2)+6116>>2]=+((c[f>>2]|0)>>>0)*+U(+(+(e|0)/+(b|0)),+j);b=c[a>>2]|0;if((e|0)<(b|0))e=e+1|0;else break}i=+g[k>>2];h=+g[l>>2]}j=1.0/+g[a+108>>2];g[a+12>>2]=(h-i)/+(b|0);if((b|0)<0){j=+g[d>>2];k=a+16|0;g[k>>2]=j;k=d+4|0;j=+g[k>>2];k=a+20|0;g[k>>2]=j;d=d+8|0;j=+g[d>>2];d=a+24|0;g[d>>2]=j;return 0}f=a+84|0;e=0;while(1){g[a+(e<<2)+12120>>2]=+((c[f>>2]|0)>>>0)*+U(+(+(e|0)/+(b|0)),+j);b=c[a>>2]|0;if((e|0)>=(b|0))break;else e=e+1|0}j=+g[d>>2];k=a+16|0;g[k>>2]=j;k=d+4|0;j=+g[k>>2];k=a+20|0;g[k>>2]=j;d=d+8|0;j=+g[d>>2];d=a+24|0;g[d>>2]=j;return 0}function cv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;if((d|0)<0)i=0;else i=(d|0)>255?255:d;if((e|0)<0)e=0;else e=(e|0)>255?255:e;b=(c[a+20>>2]|0)+((b>>>0>255?255:b)<<2)|0;d=(c[(c[a+4>>2]|0)+(e<<2)>>2]|0)+(c[b>>2]|0)|0;if((d|0)<0)d=0;else d=(d|0)>255?255:d;c[f>>2]=d;d=((c[(c[a+12>>2]|0)+(e<<2)>>2]|0)+(c[(c[a+16>>2]|0)+(i<<2)>>2]|0)>>16)+(c[b>>2]|0)|0;if((d|0)<0)d=0;else d=(d|0)>255?255:d;c[g>>2]=d;d=(c[(c[a+8>>2]|0)+(i<<2)>>2]|0)+(c[b>>2]|0)|0;if((d|0)<0){a=0;c[h>>2]=a;return}a=(d|0)>255?255:d;c[h>>2]=a;return}function dv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0.0,i=0,j=0,k=0.0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0;bK(b+24|0,0,256);q=b+280|0;c[b>>2]=q;f=0;do{a[q+f>>0]=f;f=f+1|0}while((f|0)!=256);bK(q+256|0,255,512);c[b+4>>2]=q+768;c[b+8>>2]=q+1792;c[b+12>>2]=q+2816;c[b+16>>2]=q+3840;c[b+20>>2]=q+4864;m=+g[d>>2];h=2.0-m*2.0;o=~~(h*65536.0+.5);k=+g[d+4>>2];p=0-~~(m*h/k*65536.0+.5)|0;h=+g[d+8>>2];m=2.0-h*2.0;d=~~(m*65536.0+.5);i=~~(h*m/k*65536.0+.5);k=+g[e+16>>2]+-128.0;j=~~k;k=+g[e+20>>2]+-128.0-k;k=k!=0.0?k:1.0;m=+g[e+8>>2]+-128.0;l=~~m;m=+g[e+12>>2]+-128.0-m;m=m!=0.0?m:1.0;h=+g[e>>2];n=~~h;h=+g[e+4>>2]-h;h=h!=0.0?h:1.0;f=0;b=-128;while(1){r=~~(+(b-j|0)*127.0/k);e=~~(+(b-l|0)*127.0/m);c[q+(f+192<<2)>>2]=(da(r,o)|0)+32768>>16;c[q+(f+448<<2)>>2]=(da(e,d)|0)+32768>>16;c[q+(f+704<<2)>>2]=da(r,p)|0;c[q+(f+960<<2)>>2]=32768-(da(e,i)|0);c[q+(f+1216<<2)>>2]=~~(+(b+128-n|0)*255.0/h);f=f+1|0;if((f|0)==256)break;else b=b+1|0}return 0}function ev(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=b[a+88>>1]|0;e=c[24082]|0;a:do if(e){d=e;while(1){e=c[d+4>>2]|0;if((b[e+4>>1]|0)==h<<16>>16)break;d=c[d>>2]|0;if(!d){g=3;break a}}f=c[a+628>>2]|0;d=c[a>>2]|0;if(!e)g=11;else g=10}else g=3;while(0);b:do if((g|0)==3){c:do if(c[23994]|0){e=95976;while(1){if((b[e+4>>1]|0)==h<<16>>16)break;e=e+12|0;if(!(c[e>>2]|0))break c}f=c[a+628>>2]|0;d=c[a>>2]|0;g=10;break b}while(0);f=c[a+628>>2]|0;d=c[a>>2]|0;g=11}while(0);if((g|0)==10){c[j>>2]=c[e>>2];c[j+4>>2]=96256;Yv(f,d,96432,j);i=k;return -1}else if((g|0)==11){c[j>>2]=h&65535;c[j+4>>2]=96256;Yv(f,d,96472,j);i=k;return -1}return 0}function fv(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=b[a+88>>1]|0;e=c[24082]|0;a:do if(e){d=e;while(1){e=c[d+4>>2]|0;if((b[e+4>>1]|0)==h<<16>>16)break;d=c[d>>2]|0;if(!d){g=3;break a}}f=c[a+628>>2]|0;d=c[a>>2]|0;if(!e)g=11;else g=10}else g=3;while(0);b:do if((g|0)==3){c:do if(c[23994]|0){e=95976;while(1){if((b[e+4>>1]|0)==h<<16>>16)break;e=e+12|0;if(!(c[e>>2]|0))break c}f=c[a+628>>2]|0;d=c[a>>2]|0;g=10;break b}while(0);f=c[a+628>>2]|0;d=c[a>>2]|0;g=11}while(0);if((g|0)==10){c[j>>2]=c[e>>2];c[j+4>>2]=233568;Yv(f,d,96432,j);i=k;return -1}else if((g|0)==11){c[j>>2]=h&65535;c[j+4>>2]=233568;Yv(f,d,96472,j);i=k;return -1}return 0}function gv(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=b[a+88>>1]|0;e=c[24082]|0;a:do if(e){d=e;while(1){e=c[d+4>>2]|0;if((b[e+4>>1]|0)==h<<16>>16)break;d=c[d>>2]|0;if(!d){g=3;break a}}f=c[a+628>>2]|0;d=c[a>>2]|0;if(!e)g=11;else g=10}else g=3;while(0);b:do if((g|0)==3){c:do if(c[23994]|0){e=95976;while(1){if((b[e+4>>1]|0)==h<<16>>16)break;e=e+12|0;if(!(c[e>>2]|0))break c}f=c[a+628>>2]|0;d=c[a>>2]|0;g=10;break b}while(0);f=c[a+628>>2]|0;d=c[a>>2]|0;g=11}while(0);if((g|0)==10){c[j>>2]=c[e>>2];c[j+4>>2]=233560;Yv(f,d,96432,j);i=k;return -1}else if((g|0)==11){c[j>>2]=h&65535;c[j+4>>2]=233560;Yv(f,d,96472,j);i=k;return -1}return 0}function hv(a){a=a|0;return 1}function iv(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=b[a+88>>1]|0;e=c[24082]|0;a:do if(e){d=e;while(1){e=c[d+4>>2]|0;if((b[e+4>>1]|0)==h<<16>>16)break;d=c[d>>2]|0;if(!d){g=3;break a}}f=c[a+628>>2]|0;d=c[a>>2]|0;if(!e)g=11;else g=10}else g=3;while(0);b:do if((g|0)==3){c:do if(c[23994]|0){e=95976;while(1){if((b[e+4>>1]|0)==h<<16>>16)break;e=e+12|0;if(!(c[e>>2]|0))break c}f=c[a+628>>2]|0;d=c[a>>2]|0;g=10;break b}while(0);f=c[a+628>>2]|0;d=c[a>>2]|0;g=11}while(0);if((g|0)==10){c[j>>2]=c[e>>2];c[j+4>>2]=96256;Yv(f,d,96336,j);i=k;return -1}else if((g|0)==11){c[j>>2]=h&65535;c[j+4>>2]=96256;Yv(f,d,96376,j);i=k;return -1}return 0}function jv(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=b[a+88>>1]|0;e=c[24082]|0;a:do if(e){d=e;while(1){e=c[d+4>>2]|0;if((b[e+4>>1]|0)==h<<16>>16)break;d=c[d>>2]|0;if(!d){g=3;break a}}f=c[a+628>>2]|0;d=c[a>>2]|0;if(!e)g=11;else g=10}else g=3;while(0);b:do if((g|0)==3){c:do if(c[23994]|0){e=95976;while(1){if((b[e+4>>1]|0)==h<<16>>16)break;e=e+12|0;if(!(c[e>>2]|0))break c}f=c[a+628>>2]|0;d=c[a>>2]|0;g=10;break b}while(0);f=c[a+628>>2]|0;d=c[a>>2]|0;g=11}while(0);if((g|0)==10){c[j>>2]=c[e>>2];c[j+4>>2]=233568;Yv(f,d,96336,j);i=k;return -1}else if((g|0)==11){c[j>>2]=h&65535;c[j+4>>2]=233568;Yv(f,d,96376,j);i=k;return -1}return 0}function kv(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=b[a+88>>1]|0;e=c[24082]|0;a:do if(e){d=e;while(1){e=c[d+4>>2]|0;if((b[e+4>>1]|0)==h<<16>>16)break;d=c[d>>2]|0;if(!d){g=3;break a}}f=c[a+628>>2]|0;d=c[a>>2]|0;if(!e)g=11;else g=10}else g=3;while(0);b:do if((g|0)==3){c:do if(c[23994]|0){e=95976;while(1){if((b[e+4>>1]|0)==h<<16>>16)break;e=e+12|0;if(!(c[e>>2]|0))break c}f=c[a+628>>2]|0;d=c[a>>2]|0;g=10;break b}while(0);f=c[a+628>>2]|0;d=c[a>>2]|0;g=11}while(0);if((g|0)==10){c[j>>2]=c[e>>2];c[j+4>>2]=233560;Yv(f,d,96336,j);i=k;return -1}else if((g|0)==11){c[j>>2]=h&65535;c[j+4>>2]=233560;Yv(f,d,96376,j);i=k;return -1}return 0}function lv(a,b){a=a|0;b=b|0;b=i;i=i+16|0;Yv(c[a+628>>2]|0,c[a>>2]|0,96272,b);i=b;return 0}function mv(a,b){a=a|0;b=b|0;return 1}function nv(a){a=a|0;c[a+504>>2]=114;c[a+500>>2]=1;c[a+508>>2]=115;c[a+512>>2]=203;c[a+532>>2]=74;c[a+540>>2]=75;c[a+548>>2]=76;c[a+520>>2]=1;c[a+516>>2]=115;c[a+524>>2]=203;c[a+528>>2]=115;c[a+536>>2]=77;c[a+544>>2]=78;c[a+552>>2]=79;c[a+556>>2]=218;c[a+560>>2]=204;c[a+564>>2]=218;c[a+568>>2]=205;c[a+572>>2]=36;a=a+12|0;c[a>>2]=c[a>>2]&-131329;return}function ov(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;g=d&65535;e=c[24082]|0;a:do if(!e)h=3;else{f=e;while(1){e=c[f+4>>2]|0;if((b[e+4>>1]|0)==g<<16>>16)break a;f=c[f>>2]|0;if(!f){h=3;break}}}while(0);b:do if((h|0)==3)if(!(c[23994]|0))e=0;else{e=95976;while(1){if((b[e+4>>1]|0)==g<<16>>16)break b;e=e+12|0;if(!(c[e>>2]|0)){e=0;break}}}while(0);c[a+504>>2]=114;c[a+500>>2]=1;c[a+508>>2]=115;c[a+512>>2]=203;c[a+532>>2]=74;c[a+540>>2]=75;c[a+548>>2]=76;c[a+520>>2]=1;c[a+516>>2]=115;c[a+524>>2]=203;c[a+528>>2]=115;c[a+536>>2]=77;c[a+544>>2]=78;c[a+552>>2]=79;c[a+556>>2]=218;c[a+560>>2]=204;c[a+564>>2]=218;c[a+568>>2]=205;c[a+572>>2]=36;g=a+12|0;c[g>>2]=c[g>>2]&-131329;if(!e){a=1;return a|0}a=Pd[c[e+8>>2]&511](a,d)|0;return a|0}function pv(a){a=a|0;var d=0,e=0;d=c[24082]|0;a:do if(d){e=d;while(1){d=c[e+4>>2]|0;if((b[d+4>>1]|0)==a<<16>>16)break;e=c[e>>2]|0;if(!e)break a}return d|0}while(0);if(!(c[23994]|0)){a=0;return a|0}else d=95976;while(1){if((b[d+4>>1]|0)==a<<16>>16){e=7;break}d=d+12|0;if(!(c[d>>2]|0)){d=0;e=7;break}}if((e|0)==7)return d|0;return 0}function qv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a>>2]|0;if(e){$J(e);c[a>>2]=0}if(!b)return;e=_J(d)|0;c[a>>2]=e;if(!e)return;cK(e,b,d);return}function rv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+32|0;g=h;f=h+16|0;c[f>>2]=e;e=Fv(b,d,0)|0;if(!e){f=c[b+628>>2]|0;c[g>>2]=c[b>>2];c[g+4>>2]=d>>>0>65535?96776:356424;c[g+8>>2]=d;Yv(f,97232,97312,g);g=0;i=h;return g|0}if(((d|0)!=257?(c[b+12>>2]&64|0)!=0:0)?(a[e+26>>0]|0)==0:0){d=c[b+628>>2]|0;f=c[e+28>>2]|0;c[g>>2]=c[b>>2];c[g+4>>2]=f;Yv(d,97232,97336,g);g=0;i=h;return g|0}g=Hd[c[b+668>>2]&255](b,d,f)|0;i=h;return g|0}function sv(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g;c[f>>2]=e;e=Fv(a,d,0)|0;if(!e){d=0;i=g;return d|0}if(d>>>0<=65535?(e=b[e+24>>1]|0,(1<<(e&31)&c[a+(((e&65535)>>>5&65535)<<2)+40>>2]|0)==0):0){d=0;i=g;return d|0}d=Hd[c[a+672>>2]&255](a,d,f)|0;i=g;return d|0}function tv(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;f=Fv(a,d,0)|0;if(!f){d=0;return d|0}if(d>>>0<=65535?(f=b[f+24>>1]|0,(1<<(f&31)&c[a+(((f&65535)>>>5&65535)<<2)+40>>2]|0)==0):0){d=0;return d|0}d=Hd[c[a+672>>2]&255](a,d,e)|0;return d|0}function uv(a){a=a|0;var b=0,d=0,e=0,f=0;bK(a+40|0,0,4);b=a+108|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}b=a+112|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}b=a+140|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}b=a+144|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}b=a+148|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}b=a+160|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}b=a+188|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}b=a+220|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}b=a+212|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}b=a+200|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}b=a+204|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}b=a+208|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}b=a+172|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}b=a+176|0;d=c[b>>2]|0;if(d){$J(d);c[b>>2]=0}e=a+44|0;c[e>>2]=c[e>>2]&-385;e=a+224|0;b=c[e>>2]|0;f=a+228|0;if((b|0)>0){a=0;do{d=c[(c[f>>2]|0)+(a*12|0)+8>>2]|0;if(d){$J(d);b=c[e>>2]|0}a=a+1|0}while((a|0)<(b|0))}c[e>>2]=0;b=c[f>>2]|0;if(!b)return;$J(b);c[f>>2]=0;return}function vv(a){a=a|0;var b=0;b=c[24132]|0;c[24132]=a;return b|0}function wv(a){a=a|0;var b=0,d=0;xv(a)|0;b=a+16|0;d=a+456|0;c[d>>2]=0;c[d+4>>2]=0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+444>>2]=-1;c[a+452>>2]=-1;return 0}function xv(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;Dv(a,Bv()|0);bK(a+40|0,0,192);b[a+94>>1]=1;b[a+84>>1]=1;b[a+92>>1]=1;b[a+96>>1]=1;b[a+98>>1]=1;c[a+100>>2]=-1;c[a+68>>2]=0;c[a+72>>2]=0;c[a+76>>2]=1;c[a+180>>2]=1;b[a+124>>1]=2;b[a+86>>1]=1;c[a+64>>2]=1;b[a+192>>1]=2;b[a+194>>1]=2;b[a+196>>1]=1;c[a+652>>2]=37;c[a+664>>2]=0;c[a+668>>2]=91;c[a+672>>2]=92;c[a+676>>2]=0;g=a+688|0;e=c[g>>2]|0;if(e){h=a+684|0;d=c[h>>2]|0;f=0;do{if(c[d+(f<<4)+4>>2]|0){$J(c[d+(f<<4)+12>>2]|0);e=c[g>>2]|0;d=c[h>>2]|0}f=f+1|0}while(f>>>0>>0);$J(d);c[g>>2]=0;c[h>>2]=0}d=c[24132]|0;if(!d){c[j>>2]=1;rv(a,259,j)|0;j=a+12|0;a=c[j>>2]|0;a=a&-1033;c[j>>2]=a;i=k;return 1}Bd[d&511](a);c[j>>2]=1;rv(a,259,j)|0;j=a+12|0;a=c[j>>2]|0;a=a&-1033;c[j>>2]=a;i=k;return 1}function yv(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;if(!(c[a+12>>2]&524288)){e=c[a+428>>2]|0;f=0}else{f=a+432|0;e=c[f>>2]|0;f=c[f+4>>2]|0}g=h;c[g>>2]=e;c[g+4>>2]=f;a:do if(d<<16>>16!=0&((e|0)!=0|(f|0)!=0)){e=d;while(1){e=e+-1<<16>>16;if(!(rL(a,h,0)|0)){e=0;break}f=h;g=c[f>>2]|0;f=c[f+4>>2]|0;if(!(e<<16>>16!=0&((g|0)!=0|(f|0)!=0)))break a}i=j;return e|0}else{g=e;e=d}while(0);h=a+24|0;c[h>>2]=g;c[h+4>>2]=f;b[a+448>>1]=(d&65535)+65535-(e&65535);b[a+38>>1]=0;a=Qv(a)|0;i=j;return a|0}function zv(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;f=a+24|0;c[f>>2]=d;c[f+4>>2]=e;b[a+38>>1]=0;return Qv(a)|0}function Av(a){a=a|0;a=a+24|0;return (c[a>>2]|0)==0&(c[a+4>>2]|0)==0&1|0}function Bv(){return 97384}function Cv(){return 97400}function Dv(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;k=a+656|0;e=c[k>>2]|0;if((e|0)!=0?(l=a+660|0,f=c[l>>2]|0,(f|0)!=0):0){h=0;do{g=c[e+(h<<2)>>2]|0;if((b[g+24>>1]|0)==65?(j=c[g+28>>2]|0,(hfa(97416,j,4)|0)==0):0){$J(j);$J(g);f=c[l>>2]|0;e=c[k>>2]|0}h=h+1|0}while(h>>>0>>0);$J(e);c[k>>2]=0;c[l>>2]=0}if(Ev(a,c[d+12>>2]|0,c[d+8>>2]|0)|0){i=n;return}Yv(c[a+628>>2]|0,97424,97448,m);i=n;return}function Ev(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;n=q;m=q+36|0;l=a+664|0;c[l>>2]=0;p=a+656|0;e=c[p>>2]|0;if((e|0)!=0?(f=c[a+660>>2]|0,(f|0)!=0):0)e=Vu(a,e,f+d|0,4,97504)|0;else e=Wu(a,d,4,97504)|0;c[p>>2]=e;if(!e){Yv(c[a+628>>2]|0,97480,97528,n);d=0;i=q;return d|0}if(!d)f=a+660|0;else{f=a+660|0;h=n+8|0;k=0;do{j=b+(k*36|0)|0;g=c[j>>2]|0;e=n+0|0;a=e+36|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(a|0));c[m>>2]=n;a=c[l>>2]|0;if(!((a|0)!=0?(c[a>>2]|0)==(g|0):0))o=12;a:do if((o|0)==12){o=0;e=c[p>>2]|0;do if(e){c[n>>2]=g;c[h>>2]=0;e=Sca(m,e,c[f>>2]|0,4,206)|0;if(e){a=c[e>>2]|0;c[l>>2]=a;if(!a)break;else break a}else{c[l>>2]=0;break}}while(0);a=c[f>>2]|0;c[(c[p>>2]|0)+(a<<2)>>2]=j;c[f>>2]=a+1}while(0);k=k+1|0}while((k|0)!=(d|0));e=c[p>>2]|0}Tca(e,c[f>>2]|0,4,206);i=q;return d|0}function Fv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+48|0;g=j+4|0;h=j;e=g+0|0;f=e+36|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[h>>2]=g;f=a+664|0;e=c[f>>2]|0;if((e|0)!=0?(c[e>>2]|0)==(b|0):0){if(!d){a=e;i=j;return a|0}if((c[e+8>>2]|0)==(d|0)){a=e;i=j;return a|0}}e=c[a+656>>2]|0;if(!e){a=0;i=j;return a|0}c[g>>2]=b;c[g+8>>2]=d;e=Sca(h,e,c[a+660>>2]|0,4,206)|0;if(!e)e=0;else e=c[e>>2]|0;c[f>>2]=e;a=e;i=j;return a|0}function Gv(a){a=a|0;switch(a|0){case 13:case 11:case 9:case 4:{a=4;break}case 8:case 3:{a=2;break}case 18:case 17:case 16:case 12:case 10:case 5:{a=8;break}case 7:case 6:case 2:case 1:case 0:{a=1;break}default:a=0}return a|0}function Hv(a){a=a|0;switch(a|0){case 7:case 2:case 6:case 1:{a=1;break}case 10:case 5:case 13:case 11:case 9:case 4:{a=4;break}case 18:case 17:case 16:case 12:{a=8;break}case 8:case 3:{a=2;break}default:a=0}return a|0}function Iv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+48|0;h=j;f=j+8|0;g=j+4|0;d=f+0|0;e=d+36|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));c[g>>2]=f;e=a+664|0;d=c[e>>2]|0;if((d|0)!=0?(c[d>>2]|0)==(b|0):0){h=d;i=j;return h|0}d=c[a+656>>2]|0;do if(d){c[f>>2]=b;c[f+8>>2]=0;d=Sca(g,d,c[a+660>>2]|0,4,206)|0;if(!d){c[e>>2]=0;break}d=c[d>>2]|0;c[e>>2]=d;if(d){h=d;i=j;return h|0}}while(0);a=c[a+628>>2]|0;c[h>>2]=b;Yv(a,97560,97584,h);h=0;i=j;return h|0}function Jv(a){a=a|0;return c[a>>2]|0}function Kv(a){a=a|0;return c[a+28>>2]|0}function Lv(a){a=a|0;return c[a+8>>2]|0}function Mv(a){a=a|0;return d[a+27>>0]|0|0}function Nv(a){a=a|0;return b[a+4>>1]|0}function Ov(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+16|0;h=j;g=_J(36)|0;if(!g){e=0;i=j;return e|0}bK(g,0,36);c[g>>2]=e;b[g+4>>1]=-3;b[g+6>>1]=-3;c[g+8>>2]=f;c[g+12>>2]=0;do switch(f|0){case 3:{c[g+16>>2]=42;c[g+20>>2]=42;break}case 11:case 10:case 5:{c[g+16>>2]=48;c[g+20>>2]=48;break}case 9:{c[g+16>>2]=45;c[g+20>>2]=45;break}case 12:{c[g+16>>2]=49;c[g+20>>2]=49;break}case 2:{c[g+16>>2]=39;c[g+20>>2]=39;break}case 4:{c[g+16>>2]=44;c[g+20>>2]=44;break}case 16:{c[g+16>>2]=46;c[g+20>>2]=46;break}case 17:{c[g+16>>2]=47;c[g+20>>2]=47;break}case 7:case 1:{c[g+16>>2]=40;c[g+20>>2]=40;break}case 6:{c[g+16>>2]=41;c[g+20>>2]=41;break}case 8:{c[g+16>>2]=43;c[g+20>>2]=43;break}case 18:case 13:{c[g+16>>2]=50;c[g+20>>2]=50;break}default:{c[g+16>>2]=0;c[g+20>>2]=0}}while(0);b[g+24>>1]=65;a[g+26>>0]=1;a[g+27>>0]=1;d=_J(32)|0;c[g+28>>2]=d;if(!d){$J(g);e=0;i=j;return e|0}else{c[g+32>>2]=0;c[h>>2]=e;Wea(d,32,97624,h)|0;e=g;i=j;return e|0}return 0}function Pv(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;l=i;i=i+16|0;k=l;h=d+688|0;g=c[h>>2]|0;if(!g){g=Wu(d,1,16,97656)|0;c[d+684>>2]=g}else{j=d+684|0;g=Vu(d,c[j>>2]|0,g+1|0,16,97656)|0;c[j>>2]=g}if(!g){Yv(c[d+628>>2]|0,97632,97528,k);k=-1;i=l;return k|0}j=c[h>>2]|0;c[h>>2]=j+1;c[g+(j<<4)>>2]=2;c[g+(j<<4)+4>>2]=f;c[g+(j<<4)+8>>2]=f;g=Wu(d,f,36,97656)|0;c[(c[d+684>>2]|0)+(j<<4)+12>>2]=g;if(!g){Yv(c[d+628>>2]|0,97632,97528,k);k=-1;i=l;return k|0}if(f){h=0;j=g;while(1){c[j>>2]=c[e+(h*20|0)>>2];n=b[e+(h*20|0)+4>>1]|0;b[j+4>>1]=n;b[j+6>>1]=b[e+(h*20|0)+6>>1]|0;o=c[e+(h*20|0)+8>>2]|0;c[j+8>>2]=o;c[j+12>>2]=0;m=a[e+(h*20|0)+15>>0]|0;n=tL(o,n,m)|0;c[j+16>>2]=n;c[j+20>>2]=n;b[j+24>>1]=b[e+(h*20|0)+12>>1]|0;a[j+26>>0]=a[e+(h*20|0)+14>>0]|0;a[j+27>>0]=m;c[j+28>>2]=c[e+(h*20|0)+16>>2];c[j+32>>2]=0;h=h+1|0;if((h|0)==(f|0))break;else j=j+36|0}}if(Ev(d,g,f)|0){o=0;i=l;return o|0}Yv(c[d+628>>2]|0,97632,97448,k);o=-1;i=l;return o|0}function Qv(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0;I=i;i=i+48|0;G=I;z=I+28|0;o=I+12|0;F=I+16|0;p=I+36|0;A=I+32|0;y=I+24|0;B=I+20|0;C=I+34|0;l=a+24|0;j=l;k=c[j>>2]|0;j=c[j+4>>2]|0;E=a+16|0;c[E>>2]=k;c[E+4>>2]=j;if((k|0)==0&(j|0)==0){a=0;i=I;return a|0}n=a+38|0;d=b[n>>1]|0;if(!(d<<16>>16))d=0;else if(d<<16>>16==-1){Yv(c[a+628>>2]|0,109904,109928,G);a=0;i=I;return a|0}else u=3;a:do if((u|0)==3){m=c[a+32>>2]|0;if(m){h=0;f=0;while(1){E=m+(h<<3)|0;h=(f&65535)+1<<16>>16;if((c[E>>2]|0)==(k|0)?(c[E+4>>2]|0)==(j|0):0){d=0;break}if((h&65535)<(d&65535)){h=h&65535;f=f+1|0}else break a}i=I;return d|0}}while(0);h=d+1<<16>>16;b[n>>1]=h;f=a+36|0;if((h&65535)>(e[f>>1]|0)){g=a+32|0;d=Vu(a,c[g>>2]|0,h&65535,16,109976)|0;if(!d){a=0;i=I;return a|0}h=b[n>>1]|0;if(h<<16>>16<0)m=-1;else m=(h&65535)<<1&65535;b[f>>1]=m;c[g>>2]=d}else d=c[a+32>>2]|0;h=d+((h&65535)+-1<<3)|0;c[h>>2]=k;c[h+4>>2]=j;Bd[c[a+564>>2]&511](a);h=a+448|0;b[h>>1]=(b[h>>1]|0)+1<<16>>16;h=l;d=c[h>>2]|0;h=c[h+4>>2]|0;x=uL(a,d,h,F,l)|0;if(!(x<<16>>16)){a=c[a+628>>2]|0;F=G;c[F>>2]=d;c[F+4>>2]=h;Yv(a,107472,107272,G);a=0;i=I;return a|0}h=0;f=0;g=c[F>>2]|0;while(1){d=e[g>>1]|0;if(d>>>0>>0){u=17;break}f=f+1<<16>>16;if((f&65535)>=(x&65535))break;else{h=d+1&65535;g=g+24|0}}if((u|0)==17)qx(c[a+628>>2]|0,110160,110192,G);g=0;k=c[F>>2]|0;do{j=k;k=k+24|0;g=g+1|0;d=g&65535;if((d&65535)<(x&65535)){f=j;l=k;m=d;while(1){h=f+24|0;if((b[j>>1]|0)==(b[h>>1]|0))b[h>>1]=0;m=m+1<<16>>16;if((m&65535)>=(x&65535))break;else{E=l;l=f+48|0;f=E}}}}while(d<<16>>16!=x<<16>>16);E=a+12|0;c[E>>2]=c[E>>2]&-1048641;uv(a);xv(a)|0;c[G>>2]=1;rv(a,284,G)|0;h=c[F>>2]|0;d=0;while(1){if((b[h>>1]|0)==277){f=h;d=h;u=29;break}d=d+1<<16>>16;if((d&65535)>=(x&65535)){u=32;break}else h=h+24|0}if((u|0)==29)if(d){if(vL(a,d,0)|0){b[f>>1]=0;u=32}}else u=32;b:do if((u|0)==32){h=c[F>>2]|0;d=0;while(1){if((b[h>>1]|0)==259){m=h;u=35;break}d=d+1<<16>>16;if((d&65535)>=(x&65535)){u=47;break}else h=h+24|0}do if((u|0)==35)if(!h)u=47;else{d=wL(a,h,p)|0;if((d|0)==1){w=h+8|0;v=c[w+4>>2]|0;f=a+98|0;if(!(v>>>0<0|((v|0)==0?(c[w>>2]|0)>>>0<(e[f>>1]|0)>>>0:0))){d=xL(a,h,o)|0;if(!d){g=c[o>>2]|0;f=b[f>>1]|0;h=b[g>>1]|0;b[p>>1]=h;d=g;while(1){f=f+-1<<16>>16;d=d+2|0;if(!(f<<16>>16)){d=0;break}if((b[d>>1]|0)!=h<<16>>16){d=5;break}}$J(g);u=43}}else d=1}else u=43;if((u|0)==43)if(!d){c[G>>2]=e[p>>1];if(!(rv(a,259,G)|0))break b;b[m>>1]=0;break}yL(a,d,107472,348048,0);break b}while(0);if((u|0)==47?(c[G>>2]=1,(rv(a,259,G)|0)==0):0)break;j=a+660|0;l=a+628|0;o=a+656|0;p=0;q=c[F>>2]|0;c:while(1){k=b[q>>1]|0;d:do if(k<<16>>16){h=c[j>>2]|0;e:do if(h){m=c[o>>2]|0;d=k&65535;n=-1;g=h;while(1){h=(n+g|0)/2|0;f=c[c[m+(h<<2)>>2]>>2]|0;if((f|0)==(d|0))break;w=f>>>0>>0;n=w?h:n;g=w?g:h;if((n+1|0)==(g|0)){u=58;break e}}while(1){if(!h){d=0;f=k;break e}f=h+-1|0;if((c[c[m+(f<<2)>>2]>>2]|0)==(d|0))h=f;else break}if((h|0)==-1)u=58;else{d=h;f=k}}else{d=k&65535;u=58}while(0);f:do if((u|0)==58){u=0;w=c[l>>2]|0;c[G>>2]=d;c[G+4>>2]=d;qx(w,107472,107312,G);if(!(Ev(a,Ov(a,e[q>>1]|0,e[q+2>>1]|0)|0,1)|0)){w=c[l>>2]|0;v=e[q>>1]|0;c[G>>2]=v;c[G+4>>2]=v;qx(w,107472,107360,G);b[q>>1]=0;break d}d=c[j>>2]|0;if(!d){u=67;break c}f=b[q>>1]|0;m=c[o>>2]|0;k=f&65535;n=-1;g=d;while(1){d=(n+g|0)/2|0;h=c[c[m+(d<<2)>>2]>>2]|0;if((h|0)==(k|0))break;w=h>>>0>>0;n=w?d:n;g=w?g:d;if((n+1|0)==(g|0)){u=67;break c}}while(1){if(!d){d=0;break f}h=d+-1|0;if((c[c[m+(h<<2)>>2]>>2]|0)==(k|0))d=h;else break}if((d|0)==-1){u=67;break c}}while(0);h=f&65535;if(f<<16>>16){d=b[(c[m+(d<<2)>>2]|0)+24>>1]|0;if(!(d<<16>>16)){b[q>>1]=0;break}if((h|0)==325|(h|0)==324|(h|0)==279|(h|0)==273){w=a+(((d&65535)>>>5&65535)<<2)+40|0;c[w>>2]=1<<(d&31)|c[w>>2];break}else if(!((h|0)==338|(h|0)==278|(h|0)==284|(h|0)==32998|(h|0)==322|(h|0)==323|(h|0)==32997|(h|0)==257|(h|0)==256))break;if(!(vL(a,q,0)|0))break b;b[q>>1]=0}}while(0);p=p+1<<16>>16;if((p&65535)>=(x&65535)){u=76;break}else q=q+24|0}if((u|0)==67)Ra(107416,107440,3561,107472);else if((u|0)==76){t=a+88|0;g:do if((b[t>>1]|0)==6?(r=a+126|0,(b[r>>1]|0)==2):0){d=c[F>>2]|0;h=d;f=0;while(1){if((b[h>>1]|0)==273)break;f=f+1<<16>>16;if((f&65535)>=(x&65535))break g;else h=h+24|0}if((h|0)!=0?(w=h+8|0,(c[w>>2]|0)==1&(c[w+4>>2]|0)==0):0){h=0;while(1){if((b[d>>1]|0)==279)break;h=h+1<<16>>16;if((h&65535)>=(x&65535))break g;else d=d+24|0}if((d|0)!=0?(w=d+8|0,(c[w>>2]|0)==1&(c[w+4>>2]|0)==0):0){b[r>>1]=1;qx(c[a+628>>2]|0,107472,107496,G)}}}while(0);r=a+40|0;d=c[r>>2]|0;if(!(d&2)){a=c[a+628>>2]|0;c[G>>2]=347984;Yv(a,109992,110008,G);break}if(!(d&4)){h=Qw(a)|0;c[a+168>>2]=h;c[a+68>>2]=c[a+56>>2];c[a+72>>2]=c[a+100>>2];c[a+76>>2]=c[a+64>>2];d=c[E>>2]&-1025}else{h=kx(a)|0;c[a+168>>2]=h;d=c[E>>2]|1024}c[E>>2]=d;v=a+168|0;if(!h){a=c[a+628>>2]|0;c[G>>2]=(d&1024|0)!=0?107616:107624;Yv(a,107472,107584,G);break}w=a+164|0;c[w>>2]=h;s=a+126|0;if((b[s>>1]|0)==2)c[w>>2]=(h>>>0)/((e[a+98>>1]|0)>>>0)|0;f=c[r>>2]|0;do if(!(f&33554432)){d=d&1024;if((b[t>>1]|0)==6&(d|0)==0)if((h|0)==1){c[r>>2]=f|33554432;break}else d=0;a=c[a+628>>2]|0;c[G>>2]=(d|0)!=0?107632:348304;Yv(a,109992,110008,G);break b}while(0);k=a+98|0;j=a+172|0;l=a+176|0;o=a+628|0;p=a+84|0;m=0;q=0;d=c[F>>2]|0;h:while(1){h=b[d>>1]|0;f=h&65535;do if((f|0)==339|(f|0)==32996|(f|0)==258|(f|0)==281|(f|0)==280){f=wL(a,d,A)|0;if((f|0)==1){u=d+8|0;n=c[u+4>>2]|0;if(n>>>0<0|((n|0)==0?(c[u>>2]|0)>>>0<(e[k>>1]|0)>>>0:0)){f=1;u=111;break h}f=xL(a,d,z)|0;if(f){u=111;break h}n=c[z>>2]|0;g=b[k>>1]|0;f=b[n>>1]|0;b[A>>1]=f;h=n;while(1){g=g+-1<<16>>16;h=h+2|0;if(!(g<<16>>16)){f=0;break}if((b[h>>1]|0)!=f<<16>>16){f=5;break}}$J(n)}h=e[d>>1]|0;if(f){d=h;u=113;break h}c[G>>2]=e[A>>1];if(!(rv(a,h,G)|0))break b;m=(b[d>>1]|0)==258?1:m}else if(f)if((f|0)==301|(f|0)==320){c[B>>2]=0;if(!m){m=Iv(a,f)|0;h=c[o>>2]|0;if(!m)m=107648;else m=c[m+28>>2]|0;c[G>>2]=m;qx(h,107472,107664,G);m=0;break}u=e[p>>1]|0;n=1<>2]|0;K=c[K+4>>2]|0;h=h<<16>>16==301&((J|0)==(n|0)&(K|0)==0);g=h?0:n;if((K|0)==0?(J|0)==((h?n:3<>1]|0;if(!h){K=c[B>>2]|0;c[G>>2]=K;c[G+4>>2]=K+(g<<1);c[G+8>>2]=K+(g<<1<<1);rv(a,f,G)|0;$J(K);break}else g=h}else g=1;h=Iv(a,f)|0;if(!h)h=107648;else h=c[h+28>>2]|0;yL(a,g,107472,h,1)}else if((f|0)==341|(f|0)==340){K=d+8|0;if(!((c[K+4>>2]|0)==0?(c[K>>2]|0)==(e[k>>1]|0):0)){d=h;f=1;u=121;break h}f=zL(a,d,y)|0;if(f){u=120;break h}u=c[E>>2]|0;c[E>>2]=u|4194304;K=e[d>>1]|0;J=c[y>>2]|0;c[G>>2]=J;K=rv(a,K,G)|0;c[E>>2]=u;$J(J);if(!K)break b}else if((f|0)==324|(f|0)==273){if(!(AL(a,d,c[v>>2]|0,j)|0))break b}else if((f|0)==325|(f|0)==279){if(!(AL(a,d,c[v>>2]|0,l)|0))break b}else if((f|0)==255){if(!(wL(a,d,C)|0)){h=e[C>>1]|0;if((h|0)==3)h=2;else if((h|0)==2)h=1;else break;c[G>>2]=h;rv(a,254,G)|0}}else vL(a,d,1)|0;while(0);q=q+1<<16>>16;if((q&65535)>=(x&65535)){u=143;break}else d=d+24|0}if((u|0)==111){d=e[d>>1]|0;u=113}else if((u|0)==120){d=b[d>>1]|0;u=121}else if((u|0)==143){do if((b[t>>1]|0)==6){if(!(c[r>>2]&256)){qx(c[a+628>>2]|0,107472,107712,G);c[G>>2]=6;if(!(rv(a,262,G)|0))break b}else{d=a+90|0;if((b[d>>1]|0)==2){b[d>>1]=6;qx(c[a+628>>2]|0,107472,107768,G)}}d=c[r>>2]|0;if(!(d&64)){qx(c[a+628>>2]|0,107472,107848,G);c[G>>2]=8;if(!(rv(a,258,G)|0))break b;d=c[r>>2]|0}if(!(d&65536)){f=a+90|0;d=b[f>>1]|0;if(d<<16>>16==2){qx(c[a+628>>2]|0,107472,107912,G);c[G>>2]=3;if(!(rv(a,277,G)|0))break b;d=b[f>>1]|0}if(d<<16>>16==6){qx(c[a+628>>2]|0,107472,107992,G);c[G>>2]=3;if(!(rv(a,277,G)|0))break b;else break}else if(d<<16>>16==1|d<<16>>16==0?(c[G>>2]=1,(rv(a,277,G)|0)==0):0)break b;else break}}while(0);n=a+90|0;do if((b[n>>1]|0)==3?(c[r>>2]&67108864|0)==0:0){if((e[a+84>>1]|0)<=7){K=c[a+628>>2]|0;c[G>>2]=108072;Yv(K,109992,110008,G);break b}if((b[a+98>>1]|0)==3){b[n>>1]=2;break}else{b[n>>1]=1;break}}while(0);g=b[t>>1]|0;i:do if(g<<16>>16!=6){if(!(c[r>>2]&16777216)){d=b[s>>1]|0;if(d<<16>>16==2)if((c[v>>2]|0)==(e[a+98>>1]|0))u=171;else u=170;else if(d<<16>>16==1?(c[v>>2]|0)>>>0>1:0)u=170;else u=171;if((u|0)==170){K=c[a+628>>2]|0;c[G>>2]=348472;Yv(K,109992,110008,G);break b}else if((u|0)==171){qx(c[a+628>>2]|0,107472,108088,G);if((BL(a,c[F>>2]|0,x)|0)<0)break b;else break}}j:do if((c[v>>2]|0)==1?(D=a+172|0,K=c[D>>2]|0,!((c[K>>2]|0)==0&(c[K+4>>2]|0)==0)):0){d=a+176|0;f=c[d>>2]|0;h=c[f>>2]|0;f=c[f+4>>2]|0;do if(!((h|0)==0&(f|0)==0)){if(g<<16>>16==1?(J=Ed[c[a+648>>2]&511](c[a+628>>2]|0)|0,K=c[D>>2]|0,K=xfa(J|0,H|0,c[K>>2]|0,c[K+4>>2]|0)|0,J=H,f>>>0>J>>>0|(f|0)==(J|0)&h>>>0>K>>>0):0)break;if(c[a+8>>2]|0)break j;if((b[t>>1]|0)!=1)break j;C=c[d>>2]|0;J=c[C>>2]|0;C=c[C+4>>2]|0;K=Sw(a)|0;K=Ifa(c[a+60>>2]|0,0,K|0,H|0)|0;D=H;if(!(C>>>0>>0|(C|0)==(D|0)&J>>>0>>0))break j}while(0);qx(c[a+628>>2]|0,107472,108184,G);if((BL(a,c[F>>2]|0,x)|0)<0)break b;else break i}while(0);if((b[s>>1]|0)==1?(c[v>>2]|0)>>>0>2:0){if((b[t>>1]|0)!=1)break;K=c[a+176>>2]|0;D=K;C=c[D>>2]|0;D=c[D+4>>2]|0;K=K+8|0;J=c[K>>2]|0;K=c[K+4>>2]|0;if((C|0)==(J|0)&(D|0)==(K|0)|(C|0)==0&(D|0)==0|(J|0)==0&(K|0)==0)break;qx(c[a+628>>2]|0,107472,108264,G);if((BL(a,c[F>>2]|0,x)|0)<0)break b}}while(0);d=c[F>>2]|0;if(d){$J(d);c[F>>2]=0}do if(!(c[r>>2]&524288)){d=b[a+84>>1]|0;if((d&65535)>15){b[a+106>>1]=-1;break}else{b[a+106>>1]=(1<<(d&65535))+65535;break}}while(0);d=c[v>>2]|0;k:do if(d>>>0>1){f=a+180|0;c[f>>2]=1;g=c[a+172>>2]|0;j=g;h=c[j+4>>2]|0;j=c[j>>2]|0;k=1;while(1){F=g+(k<<3)|0;K=j;j=c[F>>2]|0;J=h;h=c[F+4>>2]|0;k=k+1|0;if(J>>>0>h>>>0|(J|0)==(h|0)&K>>>0>j>>>0)break;if(k>>>0>=d>>>0)break k}c[f>>2]=0}while(0);Ed[c[a+504>>2]&511](a)|0;do if((b[s>>1]|0)==1){if((c[v>>2]|0)!=1)break;if((b[t>>1]|0)!=1)break;h=c[E>>2]|0;if((h&33792|0)!=32768)break;s=a+176|0;d=c[s>>2]|0;if(!d){K=0;i=I;return K|0}m=d;l=c[m>>2]|0;m=c[m+4>>2]|0;r=a+172|0;g=c[r>>2]|0;q=c[g>>2]|0;g=c[g+4>>2]|0;if((b[n>>1]|0)==6&(h&16384|0)==0)f=e[a+194>>1]|0;else f=1;d=mx(a,f)|0;h=H;if(!(h>>>0>0|(h|0)==0&d>>>0>8192)){if((d|0)==0&(h|0)==0)break;K=Jfa(8192,0,d|0,h|0)|0;f=da(K,f)|0;d=Ifa(K|0,H|0,d|0,h|0)|0;h=H}if(f>>>0>=(c[a+100>>2]|0)>>>0)break;n=yfa(l|0,m|0,-1,-1)|0;n=yfa(n|0,H|0,d|0,h|0)|0;n=Jfa(n|0,H|0,d|0,h|0)|0;K=yfa(n|0,H|0,-1,-1)|0;J=H;if(J>>>0>0|(J|0)==0&K>>>0>4294967294)break;o=Wu(a,n,8,108568)|0;p=Wu(a,n,8,108608)|0;k=(o|0)==0;j=(p|0)==0;if(!(k|j)){if(n){j=q;k=0;while(1){K=h>>>0>m>>>0|(h|0)==(m|0)&d>>>0>l>>>0;d=K?l:d;h=K?m:h;K=o+(k<<3)|0;c[K>>2]=d;c[K+4>>2]=h;K=p+(k<<3)|0;c[K>>2]=j;c[K+4>>2]=g;j=yfa(d|0,h|0,j|0,g|0)|0;g=H;l=xfa(l|0,m|0,d|0,h|0)|0;k=k+1|0;if((k|0)==(n|0))break;else m=H}}c[v>>2]=n;c[w>>2]=n;c[G>>2]=f;rv(a,278,G)|0;$J(c[s>>2]|0);$J(c[r>>2]|0);c[s>>2]=o;c[r>>2]=p;c[a+180>>2]=1;break}if(!k)$J(o);if(j)break;$J(p)}while(0);c[E>>2]=c[E>>2]&-2097161;c[a+444>>2]=-1;c[a+452>>2]=-1;c[a+488>>2]=-1;c[a+492>>2]=-1;d=a+496|0;c[d>>2]=-1;K=Xw(a)|0;c[a+580>>2]=K;if(!K){Yv(c[a+628>>2]|0,107472,108344,G);K=0;i=I;return K|0}if(!(c[E>>2]&1024)){if(Uw(a)|0){K=1;i=I;return K|0}Yv(c[a+628>>2]|0,107472,108416,G);K=0;i=I;return K|0}else{K=ox(a)|0;c[d>>2]=K;if(K){K=1;i=I;return K|0}Yv(c[a+628>>2]|0,107472,108384,G);K=0;i=I;return K|0}}if((u|0)==113){d=Iv(a,d)|0;if(!d)d=107648;else d=c[d+28>>2]|0;yL(a,f,107472,d,0);break}else if((u|0)==121){d=Iv(a,d&65535)|0;if(!d)d=107648;else d=c[d+28>>2]|0;yL(a,f,107472,d,0);break}}}while(0);d=c[F>>2]|0;if(!d){K=0;i=I;return K|0}$J(d);K=0;i=I;return K|0}function Rv(a){a=a|0;return 1}function Sv(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var j=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0;M=i;i=i+32|0;L=M+8|0;J=M;K=M+28|0;I=M+24|0;Dv(a,g);G=uL(a,d,f,I,0)|0;if(!(G<<16>>16)){a=c[a+628>>2]|0;K=L;c[K>>2]=d;c[K+4>>2]=f;Yv(a,108496,108448,L);L=0;i=M;return L|0}uv(a);bK(a+40|0,0,192);d=0;f=0;j=c[I>>2]|0;while(1){g=e[j>>1]|0;if(g>>>0>>0){q=5;break}f=f+1<<16>>16;if((f&65535)>=(G&65535))break;else{d=g+1&65535;j=j+24|0}}if((q|0)==5)qx(c[a+628>>2]|0,110160,110192,L);u=a+660|0;v=a+628|0;w=a+656|0;x=a+12|0;y=a+640|0;z=a+632|0;A=a+616|0;B=a+612|0;C=J+4|0;D=a+98|0;E=0;F=c[I>>2]|0;a:while(1){q=c[u>>2]|0;s=b[F>>1]|0;b:do if(q){r=c[w>>2]|0;m=s&65535;d=-1;f=q;while(1){g=(d+f|0)/2|0;j=c[c[r+(g<<2)>>2]>>2]|0;if((j|0)==(m|0))break;j=j>>>0>>0;d=j?g:d;f=j?f:g;if((d+1|0)==(f|0)){q=15;break b}}while(1){if(!g){t=0;n=s;o=q;p=r;q=25;break b}j=g+-1|0;if((c[c[r+(j<<2)>>2]>>2]|0)==(m|0))g=j;else break}if((g|0)!=-1){t=g;n=s;o=q;p=r;q=25}else q=15}else q=15;while(0);c:do if((q|0)==15){q=0;r=c[v>>2]|0;s=s&65535;c[L>>2]=s;c[L+4>>2]=s;qx(r,108496,107312,L);if(!(Ev(a,Ov(a,e[F>>1]|0,e[F+2>>1]|0)|0,1)|0)){s=c[v>>2]|0;r=e[F>>1]|0;c[L>>2]=r;c[L+4>>2]=r;qx(s,108496,107360,L);b[F>>1]=0;break}o=c[u>>2]|0;if(!o){q=24;break a}n=b[F>>1]|0;p=c[w>>2]|0;m=n&65535;d=-1;f=o;while(1){g=(d+f|0)/2|0;j=c[c[p+(g<<2)>>2]>>2]|0;if((j|0)==(m|0))break;t=j>>>0>>0;d=t?g:d;f=t?f:g;if((d+1|0)==(f|0)){q=24;break a}}while(1){if(!g){t=0;q=25;break c}j=g+-1|0;if((c[c[p+(j<<2)>>2]>>2]|0)==(m|0))g=j;else break}if((g|0)==-1){q=24;break a}else{t=g;q=25}}while(0);d:do if((q|0)==25?(q=0,n<<16>>16!=0):0){g=c[p+(t<<2)>>2]|0;e:do if(!(b[g+24>>1]|0)){b[F>>1]=0;g=0}else{m=F+2|0;j=t;while(1){d=c[g+8>>2]|0;if(!d){q=33;break}f=b[m>>1]|0;if((d|0)==(f&65535|0)){q=33;break}j=j+1|0;if((j|0)==(o|0)){j=f;break}d=c[p+(j<<2)>>2]|0;if((c[d>>2]|0)!=(n&65535|0)){j=f;break}else g=d}do if((q|0)==33){if((j|0)==65535){j=b[m>>1]|0;break}g=b[g+4>>1]|0;j=g<<16>>16;if(g<<16>>16==-2)j=e[D>>1]|0;else if(g<<16>>16==-3|g<<16>>16==-1){g=n;break e}q=F+8|0;d=q;g=c[d>>2]|0;d=c[d+4>>2]|0;if(0>d>>>0|0==(d|0)&j>>>0>g>>>0){g=Iv(a,n&65535)|0;d=c[v>>2]|0;f=c[a>>2]|0;if(!g)g=107648;else g=c[g+28>>2]|0;s=q;r=c[s>>2]|0;s=c[s+4>>2]|0;c[L>>2]=g;g=L+4|0;c[g>>2]=r;c[g+4>>2]=s;c[L+12>>2]=j;qx(d,f,109776,L);b[F>>1]=0;g=0;break e}if(!(0>>0|0==(d|0)&j>>>0>>0)){g=n;break e}g=Iv(a,n&65535)|0;d=c[v>>2]|0;f=c[a>>2]|0;if(!g)g=107648;else g=c[g+28>>2]|0;s=q;r=c[s>>2]|0;s=c[s+4>>2]|0;c[L>>2]=g;g=L+4|0;c[g>>2]=r;c[g+4>>2]=s;c[L+12>>2]=j;qx(d,f,109840,L);g=q;c[g>>2]=j;c[g+4>>2]=0;g=b[F>>1]|0;break e}while(0);s=c[v>>2]|0;g=c[g+28>>2]|0;c[L>>2]=j&65535;c[L+4>>2]=g;qx(s,108496,108520,L);b[F>>1]=0;g=0}while(0);g=g&65535;if(!g)break;else if((g|0)!=37382){vL(a,F,1)|0;break}s=J;c[s>>2]=0;c[s+4>>2]=0;s=F+8|0;f:do if((c[s>>2]|0)==1&(c[s+4>>2]|0)==0)if((b[F+2>>1]|0)==5){j=c[x>>2]|0;g=F+16|0;do if(!(j&524288)){g=c[g>>2]|0;c[K>>2]=g;if(!(j&128))d=g;else{Zw(K);j=c[x>>2]|0;d=c[K>>2]|0}if(!(j&2048)){s=Xd[c[y>>2]&255](c[v>>2]|0,d,0,0)|0;if(!((s|0)==(d|0)&(H|0)==0)){g=3;break f}if((Hd[c[z>>2]&255](c[v>>2]|0,J,8)|0)==8)break;else{g=3;break f}}g=d+8|0;if(d>>>0>4294967287|g>>>0<8){g=3;break f}if(g>>>0>(c[A>>2]|0)>>>0){g=3;break f}cK(J,(c[B>>2]|0)+d|0,8)}else{m=g;r=c[m+4>>2]|0;s=J;c[s>>2]=c[m>>2];c[s+4>>2]=r}while(0);if(c[x>>2]&128)bx(J,2);g=c[J>>2]|0;if((g|0)==-1)l=-1.0;else if(!g)l=0.0;else l=+(g>>>0)/+((c[C>>2]|0)>>>0);s=e[F>>1]|0;h[k>>3]=l;c[L>>2]=c[k>>2];c[L+4>>2]=c[k+4>>2];rv(a,s,L)|0;break d}else g=2;else g=1;while(0);yL(a,g,108648,350288,1)}while(0);E=E+1<<16>>16;if((E&65535)>=(G&65535)){q=68;break}else F=F+24|0}if((q|0)==24)Ra(107416,107440,4214,108496);else if((q|0)==68){g=c[I>>2]|0;if(!g){L=1;i=M;return L|0}$J(g);L=1;i=M;return L|0}return 0}function Tv(a,b,c){a=a|0;b=b|0;c=c|0;return Sv(a,b,c,Cv()|0)|0}function Uv(a){a=a|0;return CL(a,1,1,0)|0}function Vv(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;r=s+24|0;k=s+36|0;j=s+32|0;l=s+28|0;m=s+16|0;n=s+8|0;o=s;q=a+16|0;h=q;g=c[h>>2]|0;h=c[h+4>>2]|0;if((g|0)==0&(h|0)==0){r=CL(a,1,1,0)|0;i=s;return r|0}p=a+12|0;do if(!(c[p>>2]&524288)){d=a+428|0;b=c[d>>2]|0;if((b|0)==(g|0)&0==(h|0)){c[d>>2]=0;b=q;c[b>>2]=0;c[b+4>>2]=0;b=a+628|0;Xd[c[a+640>>2]&255](c[b>>2]|0,4,0,0)|0;if((Hd[c[a+636>>2]&255](c[b>>2]|0,d,4)|0)==4)break;Yv(c[b>>2]|0,c[a>>2]|0,110912,r);r=0;i=s;return r|0}g=a+640|0;h=a+628|0;f=a+632|0;d=b;while(1){o=Xd[c[g>>2]&255](c[h>>2]|0,d,0,0)|0;if(!((o|0)==(d|0)&(H|0)==0)){f=10;break}if((Hd[c[f>>2]&255](c[h>>2]|0,k,2)|0)!=2){f=10;break}if(c[p>>2]&128)Yw(k);b=d+2|0;Xd[c[g>>2]&255](c[h>>2]|0,((e[k>>1]|0)*12|0)+b|0,0,0)|0;if((Hd[c[f>>2]&255](c[h>>2]|0,j,4)|0)!=4){f=14;break}if(c[p>>2]&128)Zw(j);d=c[j>>2]|0;o=q;if((d|0)==(c[o>>2]|0)?0==(c[o+4>>2]|0):0){f=18;break}}if((f|0)==10){Yv(c[h>>2]|0,110888,110944,r);r=0;i=s;return r|0}else if((f|0)==14){Yv(c[h>>2]|0,110888,110976,r);r=0;i=s;return r|0}else if((f|0)==18){c[l>>2]=0;Xd[c[g>>2]&255](c[h>>2]|0,((e[k>>1]|0)*12|0)+b|0,0,0)|0;if((Hd[c[a+636>>2]&255](c[h>>2]|0,l,4)|0)==4){r=q;c[r>>2]=0;c[r+4>>2]=0;break}Yv(c[h>>2]|0,110888,111008,r);r=0;i=s;return r|0}}else{d=a+432|0;f=d;b=c[f>>2]|0;f=c[f+4>>2]|0;if((b|0)==(g|0)&(f|0)==(h|0)){b=d;c[b>>2]=0;c[b+4>>2]=0;b=q;c[b>>2]=0;c[b+4>>2]=0;b=a+628|0;Xd[c[a+640>>2]&255](c[b>>2]|0,8,0,0)|0;if((Hd[c[a+636>>2]&255](c[b>>2]|0,d,8)|0)==8)break;Yv(c[b>>2]|0,c[a>>2]|0,110912,r);r=0;i=s;return r|0}j=a+640|0;k=a+628|0;h=a+632|0;g=b;while(1){d=Xd[c[j>>2]&255](c[k>>2]|0,g,f,0)|0;if(!((d|0)==(g|0)&(H|0)==(f|0))){f=27;break}if((Hd[c[h>>2]&255](c[k>>2]|0,m,8)|0)!=8){f=27;break}if(c[p>>2]&128)_w(m);d=m;b=c[d>>2]|0;d=c[d+4>>2]|0;if(d>>>0>0|(d|0)==0&b>>>0>65535){f=31;break}t=c[j>>2]|0;l=c[k>>2]|0;d=yfa(g|0,f|0,8,0)|0;d=yfa(d|0,H|0,(b&65535)*20|0,0)|0;b=H;Xd[t&255](l,d,b,0)|0;if((Hd[c[h>>2]&255](c[k>>2]|0,n,8)|0)!=8){f=33;break}if(c[p>>2]&128)_w(n);f=n;g=c[f>>2]|0;f=c[f+4>>2]|0;t=q;if((g|0)==(c[t>>2]|0)?(f|0)==(c[t+4>>2]|0):0){f=37;break}}if((f|0)==27){Yv(c[k>>2]|0,110888,110944,r);t=0;i=s;return t|0}else if((f|0)==31){Yv(c[k>>2]|0,110888,111040,r);t=0;i=s;return t|0}else if((f|0)==33){Yv(c[k>>2]|0,110888,110976,r);t=0;i=s;return t|0}else if((f|0)==37){t=o;c[t>>2]=0;c[t+4>>2]=0;Xd[c[j>>2]&255](c[k>>2]|0,d,b,0)|0;if((Hd[c[a+636>>2]&255](c[k>>2]|0,o,8)|0)==8){t=q;c[t>>2]=0;c[t+4>>2]=0;break}Yv(c[k>>2]|0,110888,111008,r);t=0;i=s;return t|0}}while(0);t=CL(a,1,1,0)|0;i=s;return t|0}function Wv(a,d,f,g,h){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+64|0;E=F+24|0;r=F+56|0;D=F+36|0;s=F+60|0;x=F+58|0;z=F+16|0;A=F+8|0;o=F;u=F+32|0;b[s>>1]=0;b[x>>1]=0;q=z;c[q>>2]=0;c[q+4>>2]=0;q=A;c[q>>2]=0;c[q+4>>2]=0;q=d&65535;Fv(a,q,0)|0;y=a+12|0;if(c[y>>2]&2048){Yv(c[a+628>>2]|0,111096,111112,E);E=0;i=F;return E|0}l=a+16|0;k=l;j=c[k>>2]|0;k=c[k+4>>2]|0;if((j|0)==0&(k|0)==0){Yv(c[a+628>>2]|0,111096,111176,E);E=0;i=F;return E|0}B=a+640|0;C=a+628|0;m=Xd[c[B>>2]&255](c[C>>2]|0,j,k,0)|0;n=H;w=l;if(!((m|0)==(c[w>>2]|0)?(n|0)==(c[w+4>>2]|0):0)){D=c[C>>2]|0;c[E>>2]=c[a>>2];Yv(D,111096,111240,E);E=0;i=F;return E|0}p=a+632|0;j=c[p>>2]|0;k=c[C>>2]|0;if(!(c[y>>2]&524288)){if((Hd[j&255](k,r,2)|0)!=2){D=c[C>>2]|0;c[E>>2]=c[a>>2];Yv(D,111096,111280,E);E=0;i=F;return E|0}if(c[y>>2]&128)Yw(r);j=yfa(m|0,n|0,2,0)|0;m=H;k=12;t=18}else{if((Hd[j&255](k,o,8)|0)!=8){D=c[C>>2]|0;c[E>>2]=c[a>>2];Yv(D,111096,111280,E);E=0;i=F;return E|0}if(c[y>>2]&128)_w(o);l=c[o>>2]&65535;b[r>>1]=l;v=yfa(m|0,n|0,8,0)|0;m=H;w=20}while(1){if((t|0)==18){t=0;l=b[r>>1]|0;v=j;w=k}if(!(l<<16>>16)){t=26;break}if((Hd[c[p>>2]&255](c[C>>2]|0,D,w)|0)!=(w|0)){t=21;break}j=b[D>>1]|0;b[s>>1]=j;if(c[y>>2]&128){Yw(s);j=b[s>>1]|0}if(j<<16>>16==d<<16>>16)break;j=yfa(v|0,m|0,w|0,0)|0;m=H;k=w;t=18}if((t|0)==21){D=c[C>>2]|0;c[E>>2]=c[a>>2];Yv(D,111096,111320,E);E=0;i=F;return E|0}if((t|0)==26?(b[s>>1]|0)!=d<<16>>16:0){D=c[C>>2]|0;c[E>>2]=c[a>>2];c[E+4>>2]=q;Yv(D,111096,111360,E);E=0;i=F;return E|0}n=D+2|0;b[x>>1]=b[n>>1]|0;j=c[y>>2]|0;if(j&128){Yw(x);j=c[y>>2]|0}o=D+4|0;if(j&524288){t=o;d=t;t=t+4|0;t=e[t>>1]|e[t+2>>1]<<16;u=z;c[u>>2]=e[d>>1]|e[d+2>>1]<<16;c[u+4>>2]=t;if(j&128){_w(z);j=c[y>>2]|0}t=D+12|0;d=t;t=t+4|0;t=e[t>>1]|e[t+2>>1]<<16;u=A;c[u>>2]=e[d>>1]|e[d+2>>1]<<16;c[u+4>>2]=t;if(j&128)_w(A)}else{k=e[o>>1]|e[o+2>>1]<<16;c[u>>2]=k;if(!(j&128))l=j;else{Zw(u);k=c[u>>2]|0;l=c[y>>2]|0}j=z;c[j>>2]=k;c[j+4>>2]=0;j=D+8|0;j=e[j>>1]|e[j+2>>1]<<16;c[u>>2]=j;if(l&128){Zw(u);j=c[u>>2]|0}u=A;c[u>>2]=j;c[u+4>>2]=0}do if((Gv(f)|0)==8?(c[y>>2]&524288|0)==0:0)if((f|0)==16){l=4;break}else if((f|0)==17){l=9;break}else if((f|0)==18){l=13;break}else{l=f;break}else l=f;while(0);k=Wu(a,g,Gv(l)|0,111392)|0;if(!k){E=0;i=F;return E|0}a:do if((l|0)==(f|0))qfa(k|0,h|0,da(Gv(f)|0,g)|0)|0;else{if((l|0)==9&(f|0)==17){if((g|0)<=0)break;j=0;while(1){f=h+(j<<3)|0;u=c[f>>2]|0;f=c[f+4>>2]|0;c[k+(j<<2)>>2]=u;j=j+1|0;if(!((u|0)==(u|0)&(((u|0)<0)<<31>>31|0)==(f|0)))break;if((j|0)>=(g|0))break a}$J(k);Yv(c[C>>2]|0,111096,111416,E);E=0;i=F;return E|0}if((l|0)==4&(f|0)==16){if((g|0)<=0)break}else if(!((l|0)==13&(f|0)==18&(g|0)>0))break;j=0;while(1){f=h+(j<<3)|0;u=c[f>>2]|0;f=c[f+4>>2]|0;c[k+(j<<2)>>2]=u;j=j+1|0;if(!((u|0)==(u|0)&0==(f|0)))break;if((j|0)>=(g|0))break a}$J(k);Yv(c[C>>2]|0,111096,111416,E);E=0;i=F;return E|0}while(0);do if((Gv(l)|0)>1?(c[y>>2]&128|0)!=0:0){if((Gv(l)|0)==2){$w(k,g);break}if((Gv(l)|0)==4){bx(k,g);break}if((Gv(l)|0)==8)cx(k,g)}while(0);h=(c[y>>2]&524288|0)==0;j=da(Gv(l)|0,g)|0;if(h)if((j|0)<5){h=yfa(v|0,m|0,8,0)|0;j=A;c[j>>2]=h;c[j+4>>2]=H;j=1}else j=0;else if((j|0)<9){h=yfa(v|0,m|0,12,0)|0;j=A;c[j>>2]=h;c[j+4>>2]=H;j=1}else j=0;h=z;if(((c[h>>2]|0)==(g|0)?(c[h+4>>2]|0)==(((g|0)<0)<<31>>31|0):0)?(b[x>>1]|0)==(l&65535)<<16>>16:0){D=A;B=Xd[c[B>>2]&255](c[C>>2]|0,c[D>>2]|0,c[D+4>>2]|0,0)|0;D=A;if(!((B|0)==(c[D>>2]|0)?(H|0)==(c[D+4>>2]|0):0)){$J(k);D=c[C>>2]|0;c[E>>2]=c[a>>2];Yv(D,111096,111240,E);E=0;i=F;return E|0}B=c[a+636>>2]|0;D=c[C>>2]|0;a=da(Gv(l)|0,g)|0;a=Hd[B&255](D,k,a)|0;a=(a|0)==(da(Gv(l)|0,g)|0);$J(k);if(a){E=1;i=F;return E|0}Yv(c[C>>2]|0,111096,111008,E);E=0;i=F;return E|0}if(!j){f=Xd[c[B>>2]&255](c[C>>2]|0,0,0,2)|0;u=A;c[u>>2]=f;c[u+4>>2]=H;u=c[a+636>>2]|0;f=c[C>>2]|0;h=da(Gv(l)|0,g)|0;h=Hd[u&255](f,k,h)|0;g=(h|0)==(da(Gv(l)|0,g)|0);$J(k);if(!g){Yv(c[C>>2]|0,111096,111008,E);E=0;i=F;return E|0}}else qfa(A|0,k|0,da(Gv(l)|0,g)|0)|0;k=l&65535;b[x>>1]=k;b[n>>1]=k;k=c[y>>2]|0;if(k&128){Yw(n);k=c[y>>2]|0}if(!(k&524288)){z=c[z>>2]|0;b[o>>1]=z;b[o+2>>1]=z>>>16;if(k&128){Zw(o);k=c[y>>2]|0}A=c[A>>2]|0;j=D+8|0;b[j>>1]=A;b[j+2>>1]=A>>>16;if(k&128)Zw(j)}else{x=z;h=c[x>>2]|0;x=c[x+4>>2]|0;z=o;g=z;b[g>>1]=h;b[g+2>>1]=h>>>16;z=z+4|0;b[z>>1]=x;b[z+2>>1]=x>>>16;if(k&128){_w(o);k=c[y>>2]|0}j=D+12|0;z=A;x=c[z>>2]|0;z=c[z+4>>2]|0;A=j;y=A;b[y>>1]=x;b[y+2>>1]=x>>>16;A=A+4|0;b[A>>1]=z;b[A+2>>1]=z>>>16;if(k&128)_w(j)}B=Xd[c[B>>2]&255](c[C>>2]|0,v,m,0)|0;if(!((B|0)==(v|0)&(H|0)==(m|0))){D=c[C>>2]|0;c[E>>2]=c[a>>2];Yv(D,111096,111240,E);E=0;i=F;return E|0}if((Hd[c[a+636>>2]&255](c[C>>2]|0,D,w)|0)==(w|0)){E=1;i=F;return E|0}D=c[C>>2]|0;c[E>>2]=c[a>>2];Yv(D,111096,111464,E);E=0;i=F;return E|0}function Xv(a,b){a=a|0;b=b|0;c[a+504>>2]=116;c[a+532>>2]=80;c[a+540>>2]=80;c[a+548>>2]=80;c[a+536>>2]=81;c[a+544>>2]=81;c[a+552>>2]=81;c[a+560>>2]=207;return 1}function Yv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g;c[f>>2]=e;e=c[78072]|0;if(e)Ud[e&255](b,d,f);e=c[28342]|0;if(!e){i=g;return}Yd[e&63](a,b,d,f);i=g;return}function Zv(a){a=a|0;return c[a+224>>2]|0}function _v(a,b){a=a|0;b=b|0;if((b|0)<0){a=-1;return a|0}if((c[a+224>>2]|0)<=(b|0)){a=-1;return a|0}a=c[c[(c[a+228>>2]|0)+(b*12|0)>>2]>>2]|0;return a|0}function $v(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if(!(f-e&4))n=f;else{c[f>>2]=0;n=f+4|0}if(n>>>0>e>>>0){f=0;do{h=c[e>>2]|0;if((h+f|0)>>>0>g>>>0|h>>>0>g>>>0){h=g-f|0;c[e>>2]=h}if(h){k=f>>>3;i=b+k|0;j=f&7;l=8-j|0;if(h>>>0>l>>>0){if(j){a[i>>0]=(d[i>>0]|0)&255<>>3;if(j){if(h>>>0>63){while(1){if(!(i&3))break;k=i+1|0;a[i>>0]=0;j=j+-1|0;if(!j){i=k;j=0;break}else i=k}l=j>>>2;k=l<<2;sfa(i|0,0,k|0)|0;i=i+k|0;j=j-(l<<2)|0}switch(j|0){case 7:{a[i+6>>0]=0;o=17;break}case 4:{o=19;break}case 6:{o=17;break}case 5:{o=18;break}case 3:{o=20;break}case 1:{o=22;break}case 2:{o=21;break}default:{}}if((o|0)==17){a[i+5>>0]=0;o=18}if((o|0)==18){a[i+4>>0]=0;o=19}if((o|0)==19){a[i+3>>0]=0;o=20}if((o|0)==20){a[i+2>>0]=0;o=21}if((o|0)==21){a[i+1>>0]=0;o=22}if((o|0)==22){o=0;a[i>>0]=0;i=i+j|0}h=h&7}if(h)a[i>>0]=(d[i>>0]|0)&255>>>h}else a[i>>0]=((d[114688+h>>0]|0)>>>j^255)&(d[i>>0]|0);f=(c[e>>2]|0)+f|0}m=e+4|0;h=c[m>>2]|0;if((h+f|0)>>>0>g>>>0|h>>>0>g>>>0){h=g-f|0;c[m>>2]=h}if(h){k=f>>>3;i=b+k|0;j=f&7;l=8-j|0;if(h>>>0>l>>>0){if(j){a[i>>0]=d[i>>0]|0|255>>>j;i=b+(k+1)|0;h=h-l|0}k=h>>>3;if(k){if(h>>>0>63){while(1){if(!(i&3))break;j=i+1|0;a[i>>0]=-1;k=k+-1|0;if(!k){i=j;k=0;break}else i=j}l=k>>>2;j=l<<2;sfa(i|0,-1,j|0)|0;i=i+j|0;k=k-(l<<2)|0}switch(k|0){case 7:{a[i+6>>0]=-1;o=41;break}case 6:{o=41;break}case 5:{o=42;break}case 2:{o=45;break}case 4:{o=43;break}case 3:{o=44;break}case 1:{o=46;break}default:{}}if((o|0)==41){a[i+5>>0]=-1;o=42}if((o|0)==42){a[i+4>>0]=-1;o=43}if((o|0)==43){a[i+3>>0]=-1;o=44}if((o|0)==44){a[i+2>>0]=-1;o=45}if((o|0)==45){a[i+1>>0]=-1;o=46}if((o|0)==46){o=0;a[i>>0]=-1;i=i+k|0}h=h&7}if(h)a[i>>0]=d[i>>0]|0|65280>>>h}else a[i>>0]=d[i>>0]|0|(d[114688+h>>0]|0)>>>j;f=(c[m>>2]|0)+f|0}e=e+8|0}while(e>>>0>>0)}else f=0;if((f|0)==(g|0))return;else Ra(114704,114720,452,114752)}function aw(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;b=d;if(!(HL(a)|0)){a=1;i=d;return a|0}if(!(Ev(a,114776,1)|0)){Yv(c[a+628>>2]|0,114816,114840,b);a=0;i=d;return a|0}else{c[b>>2]=1;a=rv(a,65536,b)|0;i=d;return a|0}return 0}function bw(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;b=d;if(!(HL(a)|0)){a=0;i=d;return a|0}if(!(Ev(a,114888,1)|0)){Yv(c[a+628>>2]|0,114928,114952,b);a=0;i=d;return a|0}else{c[a+532>>2]=82;c[a+540>>2]=82;c[a+548>>2]=82;c[a+536>>2]=83;c[a+544>>2]=83;c[a+552>>2]=83;c[a+528>>2]=117;c[b>>2]=1;a=rv(a,65536,b)|0;i=d;return a|0}return 0}function cw(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;b=d;if(!(HL(a)|0)){a=0;i=d;return a|0}c[a+532>>2]=84;c[a+540>>2]=84;c[a+548>>2]=84;c[b>>2]=7;a=rv(a,65536,b)|0;i=d;return a|0}function dw(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;b=d;if(!(HL(a)|0)){a=0;i=d;return a|0}c[a+532>>2]=84;c[a+540>>2]=84;c[a+548>>2]=84;c[b>>2]=11;a=rv(a,65536,b)|0;i=d;return a|0}function ew(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j;g=j+8|0;h=j+4|0;d=a+8|0;if(!(c[d>>2]|0)){a=1;i=j;return a|0}f=a+12|0;b=c[f>>2]|0;do if(b&64){if((b&4096|0)!=0?(c[f>>2]=b&-4097,(Ed[c[a+528>>2]&511](a)|0)==0):0){a=0;i=j;return a|0}if(!(vx(a)|0)){a=0;i=j;return a|0}else{b=c[f>>2]|0;break}}while(0);do if((b&2097160|0)==2097152?(c[d>>2]|0)==2:0){c[g>>2]=0;c[h>>2]=0;if(!(xw(a)|0)){c[e>>2]=g;if(!(sv(a,273,e)|0))break;c[e>>2]=h;if(!(sv(a,279,e)|0))break;b=a+168|0;if(!(Wv(a,273,16,c[b>>2]|0,c[g>>2]|0)|0))break;if(!(Wv(a,279,16,c[b>>2]|0,c[h>>2]|0)|0))break;c[f>>2]=c[f>>2]&-2097217;a=1;i=j;return a|0}else{c[e>>2]=g;if(!(sv(a,324,e)|0))break;c[e>>2]=h;if(!(sv(a,325,e)|0))break;b=a+168|0;if(!(Wv(a,324,16,c[b>>2]|0,c[g>>2]|0)|0))break;if(!(Wv(a,325,16,c[b>>2]|0,c[h>>2]|0)|0))break;c[f>>2]=c[f>>2]&-2097217;a=1;i=j;return a|0}}while(0);if((c[f>>2]&2097160|0)!=0?(Vv(a)|0)==0:0){a=0;i=j;return a|0}a=1;i=j;return a|0}function fw(a){a=a|0;var b=0,d=0;b=a+12|0;d=c[b>>2]|0;if(!(d&64)){a=1;return a|0}if((d&4096|0)!=0?(c[b>>2]=d&-4097,(Ed[c[a+528>>2]&511](a)|0)==0):0){a=0;return a|0}a=vx(a)|0;return a|0} -function lM(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;I=i;i=i+48|0;C=I+32|0;A=I+28|0;y=I+24|0;D=I+20|0;B=I+16|0;z=I+8|0;H=I+4|0;G=I;F=I+12|0;if(h>>>0>1){m=k+g|0;E=(j|0)/2|0;s=E<<2;t=a+68|0;r=g+1+(k<<1)|0;u=g+-1|0;v=g<<2;x=h+-2|0;p=x>>>1;w=p<<1;E=E<<2;E=(da(p,E+v|0)|0)+E+v|0;p=(da(p,m)|0)+k+g<<1;q=u+r|0;o=b;e=l;m=b+(m<<2)|0;while(1){f=g;k=o;j=e;n=m;while(1){K=d[j+2>>0]|0;J=d[j+3>>0]|0;cv(c[t>>2]|0,d[j>>0]|0,K,J,C,A,y);c[k>>2]=c[C>>2]|c[A>>2]<<8|c[y>>2]<<16|-16777216;cv(c[t>>2]|0,d[j+1>>0]|0,K,J,D,B,z);c[n>>2]=c[D>>2]|c[B>>2]<<8|c[z>>2]<<16|-16777216;f=f+-1|0;if(!f)break;else{k=k+4|0;j=j+4|0;n=n+4|0}}h=h+-2|0;if(h>>>0<=1)break;else{o=o+(q<<2)|0;e=e+(v+s)|0;m=m+(u+r<<2)|0}}b=b+(p<<2)|0;f=x-w|0;l=l+E|0}else f=h;if((f|0)!=1){i=I;return}e=a+68|0;f=g;while(1){cv(c[e>>2]|0,d[l>>0]|0,d[l+2>>0]|0,d[l+3>>0]|0,H,G,F);c[b>>2]=c[H>>2]|c[G>>2]<<8|c[F>>2]<<16|-16777216;f=f+-1|0;if(!f)break;else{b=b+4|0;l=l+4|0}}i=I;return}function mM(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;q=r+8|0;p=r;o=r+4|0;n=a+68|0;m=g+k|0;f=h;while(1){e=g;a=b;k=l;while(1){cv(c[n>>2]|0,d[k>>0]|0,d[k+1>>0]|0,d[k+2>>0]|0,q,p,o);c[a>>2]=c[q>>2]|c[p>>2]<<8|c[o>>2]<<16|-16777216;e=e+-1|0;if(!e)break;else{a=a+4|0;k=k+3|0}}f=f+-1|0;if(!f)break;else{b=b+(m<<2)|0;l=l+((g+j|0)*3|0)|0}}i=r;return}function nM(b,e,f,h,j,k,l,m,n){b=b|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+32|0;s=y+20|0;t=y;u=y+4|0;x=y+8|0;w=y+12|0;v=y+16|0;q=l*3|0;if(!k){i=y;return}r=(j|0)==0;o=b+72|0;p=j*3|0;b=n;h=e;e=k;while(1){e=e+-1|0;if(r)f=b;else{f=b+p|0;l=j;n=h;while(1){l=l+-1|0;$u(c[o>>2]|0,d[b>>0]|0,a[b+1>>0]|0,a[b+2>>0]|0,s,t,u);av(c[o>>2]|0,+g[s>>2],+g[t>>2],+g[u>>2],x,w,v);c[n>>2]=c[x>>2]|c[w>>2]<<8|c[v>>2]<<16|-16777216;if(!l)break;else{n=n+4|0;b=b+3|0}}h=h+(j<<2)|0}if(!e)break;else{b=f+q|0;h=h+(m<<2)|0}}i=y;return}function oM(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=i;i=i+16|0;k=L;J=L+8|0;I=L+4|0;F=c[a>>2]|0;G=c[a+52>>2]|0;h=c[a+12>>2]|0;j=ox(F)|0;if((j|0)!=0?(H=(h|0)!=0,l=da(H?4:3,j)|0,(l|0)!=0):0){K=_J(l)|0;if(!K){d=c[F+628>>2]|0;f=vw(F)|0;c[k>>2]=217472;Yv(d,f,234328,k);f=0;i=L;return f|0}bK(K,0,l);n=K+j|0;m=K+(j<<1)|0;if(H)E=K+(j*3|0)|0;else E=0;c[k>>2]=J;sv(F,322,k)|0;c[k>>2]=I;sv(F,323,k)|0;a:do switch(e[a+28>>1]|0){case 6:case 2:switch(b[a+30>>1]|0){case 5:case 1:{h=2;l=22;break a}case 7:case 3:{h=1;l=21;break a}case 8:case 4:{h=3;l=21;break a}default:{h=0;l=22;break a}}case 7:case 3:switch(b[a+30>>1]|0){case 8:case 4:{h=2;l=22;break a}case 5:case 1:{h=3;l=21;break a}case 6:case 2:{h=1;l=21;break a}default:{h=0;l=22;break a}}case 8:case 4:switch(b[a+30>>1]|0){case 6:case 2:{h=3;l=21;break a}case 7:case 3:{h=2;l=22;break a}case 5:case 1:{h=1;l=21;break a}default:{h=0;l=22;break a}}case 5:case 1:switch(b[a+30>>1]|0){case 6:case 2:{h=2;l=22;break a}case 7:case 3:{h=3;l=21;break a}case 8:case 4:{h=1;l=21;break a}default:{h=0;l=22;break a}}default:{h=0;l=22}}while(0);if((l|0)==21){C=1;D=0-((c[J>>2]|0)+f)|0;j=g+-1|0}else if((l|0)==22){C=0;D=f-(c[J>>2]|0)|0;j=0}B=e[a+32>>1]|0;if((B|0)==3|(B|0)==1|(B|0)==0){l=1;B=K;m=K}else{l=3;B=n}A=(g|0)==0;if(A)n=1;else{v=a+84|0;w=a+4|0;x=(f|0)==0;y=a+88|0;z=(l|0)==1;t=l&65535;n=1;u=0;s=j;while(1){r=c[I>>2]|0;l=c[v>>2]|0;r=r-(((l+u|0)>>>0)%(r>>>0)|0)|0;r=(r+u|0)>>>0>g>>>0?g-u|0:r;b:do if(!x){q=da(s,f)|0;j=0;while(1){if((Hw(F,K,(c[y>>2]|0)+j|0,l+u|0,0,0)|0)==-1?(c[w>>2]|0)!=0:0){n=0;break b}if(!z){if((Hw(F,B,(c[y>>2]|0)+j|0,(c[v>>2]|0)+u|0,0,1)|0)==-1?(c[w>>2]|0)!=0:0){n=0;break b}if((Hw(F,m,(c[y>>2]|0)+j|0,(c[v>>2]|0)+u|0,0,2)|0)==-1?(c[w>>2]|0)!=0:0){n=0;break b}}if((H?(Hw(F,E,(c[y>>2]|0)+j|0,(c[v>>2]|0)+u|0,0,t)|0)==-1:0)?(c[w>>2]|0)!=0:0){n=0;break b}p=(((c[v>>2]|0)+u|0)>>>0)%((c[I>>2]|0)>>>0)|0;p=da(lx(F)|0,p)|0;k=c[J>>2]|0;if((k+j|0)>>>0>f>>>0){o=f-j|0;l=k-o|0;if(H)k=E+p|0;else k=0;Sd[G&15](a,d+(j+q<<2)|0,j,s,o,r,l,l+D|0,K+p|0,B+p|0,m+p|0,k)}else{if(H)l=E+p|0;else l=0;Sd[G&15](a,d+(j+q<<2)|0,j,s,k,r,0,D,K+p|0,B+p|0,m+p|0,l)}j=(c[J>>2]|0)+j|0;if(j>>>0>=f>>>0)break b;l=c[v>>2]|0}}while(0);u=r+u|0;if(u>>>0>=g>>>0)break;else s=(C?0-r|0:r)+s|0}}if(!((h&2|0)==0|A)){l=f+-1|0;m=0;do{h=da(m,f)|0;j=l+h|0;if((h|0)<(j|0)){k=d+(h<<2)|0;h=d+(j<<2)|0;do{J=c[k>>2]|0;c[k>>2]=c[h>>2];c[h>>2]=J;k=k+4|0;h=h+-4|0}while(k>>>0>>0)}m=m+1|0}while((m|0)!=(g|0))}$J(K);f=n;i=L;return f|0}d=c[F+628>>2]|0;f=vw(F)|0;c[k>>2]=217504;Yv(d,f,217432,k);f=0;i=L;return f|0}function pM(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+16|0;m=G;E=G+4|0;B=c[a>>2]|0;C=c[a+52>>2]|0;o=c[a+16>>2]|0;h=c[a+12>>2]|0;j=Uw(B)|0;if((j|0)!=0?(D=(h|0)!=0,l=da(D?4:3,j)|0,(l|0)!=0):0){F=_J(l)|0;if(!F){d=c[B+628>>2]|0;Yv(d,vw(B)|0,217472,m);d=0;i=G;return d|0}bK(F,0,l);l=F+j|0;k=F+(j<<1)|0;if(D)A=F+(j*3|0)|0;else A=0;a:do switch(e[a+28>>1]|0){case 8:case 4:switch(b[a+30>>1]|0){case 5:case 1:{h=1;n=21;break a}case 7:case 3:{h=2;y=0;z=0;p=0;break a}case 6:case 2:{h=3;n=21;break a}default:{h=0;y=0;z=0;p=0;break a}}case 6:case 2:switch(b[a+30>>1]|0){case 8:case 4:{h=3;n=21;break a}case 7:case 3:{h=1;n=21;break a}case 5:case 1:{h=2;y=0;z=0;p=0;break a}default:{h=0;y=0;z=0;p=0;break a}}case 5:case 1:switch(b[a+30>>1]|0){case 8:case 4:{h=1;n=21;break a}case 7:case 3:{h=3;n=21;break a}case 6:case 2:{h=2;y=0;z=0;p=0;break a}default:{h=0;y=0;z=0;p=0;break a}}case 7:case 3:switch(b[a+30>>1]|0){case 6:case 2:{h=1;n=21;break a}case 5:case 1:{h=3;n=21;break a}case 8:case 4:{h=2;y=0;z=0;p=0;break a}default:{h=0;y=0;z=0;p=0;break a}}default:{h=0;y=0;z=0;p=0}}while(0);if((n|0)==21){y=1;z=0-(f<<1)|0;p=g+-1|0}x=e[a+32>>1]|0;if((x|0)==3|(x|0)==1|(x|0)==0){j=1;l=F;k=F}else j=3;c[m>>2]=E;Yu(B,278,m)|0;w=Xw(B)|0;s=o>>>0>f>>>0?o-f|0:0;t=a+4|0;x=(g|0)==0;b:do if(x)n=1;else{u=a+84|0;v=(j|0)==1;q=j&65535;r=0;while(1){o=c[E>>2]|0;j=(c[u>>2]|0)+r|0;o=o-((j>>>0)%(o>>>0)|0)|0;o=(o+r|0)>>>0>g>>>0?g-r|0:o;m=Pw(B,j,0)|0;if((Ew(B,m,F,da(((((c[u>>2]|0)+r|0)>>>0)%((c[E>>2]|0)>>>0)|0)+o|0,w)|0)|0)==-1?(c[t>>2]|0)!=0:0){n=0;break b}if(!v){m=Pw(B,j,1)|0;if((Ew(B,m,l,da(((((c[u>>2]|0)+r|0)>>>0)%((c[E>>2]|0)>>>0)|0)+o|0,w)|0)|0)==-1?(c[t>>2]|0)!=0:0){n=0;break b}m=Pw(B,j,2)|0;if((Ew(B,m,k,da(((((c[u>>2]|0)+r|0)>>>0)%((c[E>>2]|0)>>>0)|0)+o|0,w)|0)|0)==-1?(c[t>>2]|0)!=0:0){n=0;break b}}if((D?(m=Pw(B,j,q)|0,(Ew(B,m,A,da(((((c[u>>2]|0)+r|0)>>>0)%((c[E>>2]|0)>>>0)|0)+o|0,w)|0)|0)==-1):0)?(c[t>>2]|0)!=0:0){n=0;break b}j=da((((c[u>>2]|0)+r|0)>>>0)%((c[E>>2]|0)>>>0)|0,w)|0;n=d+((da(p,f)|0)<<2)|0;if(D)m=A+j|0;else m=0;Sd[C&15](a,n,0,p,f,o,s,z,F+j|0,l+j|0,k+j|0,m);r=o+r|0;if(r>>>0>=g>>>0){n=1;break}else p=(y?0-o|0:o)+p|0}}while(0);if(!((h&2|0)==0|x)){l=f+-1|0;m=0;do{h=da(m,f)|0;j=l+h|0;if((h|0)<(j|0)){k=d+(h<<2)|0;h=d+(j<<2)|0;do{E=c[k>>2]|0;c[k>>2]=c[h>>2];c[h>>2]=E;k=k+4|0;h=h+-4|0}while(k>>>0>>0)}m=m+1|0}while((m|0)!=(g|0))}$J(F);d=n;i=G;return d|0}g=c[B+628>>2]|0;d=vw(B)|0;c[m>>2]=217456;Yv(g,d,217432,m);d=0;i=G;return d|0}function qM(a,b,e,f,g,h,i,j,k,l,m,n){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0;if(!h)return;r=g>>>0>7;s=g+-8|0;t=s&-8;s=s-t|0;t=t+8|0;a=m;e=n;q=h;while(1){q=q+-1|0;if(r){f=e+t|0;p=l+t|0;n=k;h=a;o=b;m=g;while(1){c[o>>2]=(d[l>>0]|0)<<8|(d[n>>0]|0)|(d[h>>0]|0)<<16|(d[e>>0]|0)<<24;c[o+4>>2]=(d[l+1>>0]|0)<<8|(d[n+1>>0]|0)|(d[h+1>>0]|0)<<16|(d[e+1>>0]|0)<<24;c[o+8>>2]=(d[l+2>>0]|0)<<8|(d[n+2>>0]|0)|(d[h+2>>0]|0)<<16|(d[e+2>>0]|0)<<24;c[o+12>>2]=(d[l+3>>0]|0)<<8|(d[n+3>>0]|0)|(d[h+3>>0]|0)<<16|(d[e+3>>0]|0)<<24;c[o+16>>2]=(d[l+4>>0]|0)<<8|(d[n+4>>0]|0)|(d[h+4>>0]|0)<<16|(d[e+4>>0]|0)<<24;c[o+20>>2]=(d[l+5>>0]|0)<<8|(d[n+5>>0]|0)|(d[h+5>>0]|0)<<16|(d[e+5>>0]|0)<<24;c[o+24>>2]=(d[l+6>>0]|0)<<8|(d[n+6>>0]|0)|(d[h+6>>0]|0)<<16|(d[e+6>>0]|0)<<24;c[o+28>>2]=(d[l+7>>0]|0)<<8|(d[n+7>>0]|0)|(d[h+7>>0]|0)<<16|(d[e+7>>0]|0)<<24;m=m+-8|0;if(m>>>0<=7)break;else{l=l+8|0;n=n+8|0;h=h+8|0;o=o+32|0;e=e+8|0}}l=p;a=a+t|0;k=k+t|0;b=b+(t<<2)|0;e=s}else{f=e;e=g}switch(e|0){case 3:{e=b;u=12;break}case 2:{e=b;u=13;break}case 7:{c[b>>2]=(d[l>>0]|0)<<8|(d[k>>0]|0)|(d[a>>0]|0)<<16|(d[f>>0]|0)<<24;f=f+1|0;l=l+1|0;k=k+1|0;a=a+1|0;e=b+4|0;u=9;break}case 1:{e=b;u=14;break}case 6:{e=b;u=9;break}case 5:{e=b;u=10;break}case 4:{e=b;u=11;break}default:e=b}if((u|0)==9){c[e>>2]=(d[l>>0]|0)<<8|(d[k>>0]|0)|(d[a>>0]|0)<<16|(d[f>>0]|0)<<24;f=f+1|0;l=l+1|0;k=k+1|0;e=e+4|0;a=a+1|0;u=10}if((u|0)==10){c[e>>2]=(d[l>>0]|0)<<8|(d[k>>0]|0)|(d[a>>0]|0)<<16|(d[f>>0]|0)<<24;f=f+1|0;l=l+1|0;k=k+1|0;e=e+4|0;a=a+1|0;u=11}if((u|0)==11){c[e>>2]=(d[l>>0]|0)<<8|(d[k>>0]|0)|(d[a>>0]|0)<<16|(d[f>>0]|0)<<24;f=f+1|0;l=l+1|0;k=k+1|0;e=e+4|0;a=a+1|0;u=12}if((u|0)==12){c[e>>2]=(d[l>>0]|0)<<8|(d[k>>0]|0)|(d[a>>0]|0)<<16|(d[f>>0]|0)<<24;f=f+1|0;l=l+1|0;k=k+1|0;e=e+4|0;a=a+1|0;u=13}if((u|0)==13){c[e>>2]=(d[l>>0]|0)<<8|(d[k>>0]|0)|(d[a>>0]|0)<<16|(d[f>>0]|0)<<24;f=f+1|0;l=l+1|0;k=k+1|0;e=e+4|0;a=a+1|0;u=14}if((u|0)==14){u=0;c[e>>2]=(d[l>>0]|0)<<8|(d[k>>0]|0)|(d[a>>0]|0)<<16|(d[f>>0]|0)<<24;f=f+1|0;l=l+1|0;k=k+1|0;e=e+4|0;a=a+1|0}if(!q)break;else{l=l+i|0;a=a+i|0;k=k+i|0;b=e+(j<<2)|0;e=f+i|0}}return}function rM(a,b,e,f,g,h,i,j,k,l,m,n){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;if(!h)return;t=(g|0)==0;s=a+76|0;f=l;a=n;r=h;while(1){r=r+-1|0;if(t){l=m;e=k}else{l=m+g|0;e=k+g|0;q=c[s>>2]|0;p=g;o=b;n=f;h=a;while(1){p=p+-1|0;v=d[h>>0]|0;u=v<<8;c[o>>2]=d[q+(d[k>>0]|0|u)>>0]|0|v<<24|(d[q+(d[n>>0]|0|u)>>0]|0)<<8|(d[q+(d[m>>0]|0|u)>>0]|0)<<16;if(!p)break;else{m=m+1|0;o=o+4|0;k=k+1|0;n=n+1|0;h=h+1|0}}b=b+(g<<2)|0;f=f+g|0;a=a+g|0}if(!r)break;else{b=b+(j<<2)|0;k=e+i|0;f=f+i|0;a=a+i|0;m=l+i|0}}return}function sM(a,b,e,f,g,h,i,j,k,l,m,n){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0;if(!h)return;p=g>>>0>7;q=g+-8|0;r=q&-8;q=q-r|0;r=r+8|0;a=k;e=b;while(1){h=h+-1|0;if(p){b=e+(r<<2)|0;o=l+r|0;f=a;k=m;n=g;while(1){c[e>>2]=d[f>>0]|0|(d[l>>0]|0)<<8|(d[k>>0]|0)<<16|-16777216;c[e+4>>2]=d[f+1>>0]|0|(d[l+1>>0]|0)<<8|(d[k+1>>0]|0)<<16|-16777216;c[e+8>>2]=d[f+2>>0]|0|(d[l+2>>0]|0)<<8|(d[k+2>>0]|0)<<16|-16777216;c[e+12>>2]=d[f+3>>0]|0|(d[l+3>>0]|0)<<8|(d[k+3>>0]|0)<<16|-16777216;c[e+16>>2]=d[f+4>>0]|0|(d[l+4>>0]|0)<<8|(d[k+4>>0]|0)<<16|-16777216;c[e+20>>2]=d[f+5>>0]|0|(d[l+5>>0]|0)<<8|(d[k+5>>0]|0)<<16|-16777216;c[e+24>>2]=d[f+6>>0]|0|(d[l+6>>0]|0)<<8|(d[k+6>>0]|0)<<16|-16777216;c[e+28>>2]=d[f+7>>0]|0|(d[l+7>>0]|0)<<8|(d[k+7>>0]|0)<<16|-16777216;n=n+-8|0;if(n>>>0<=7)break;else{l=l+8|0;f=f+8|0;k=k+8|0;e=e+32|0}}e=b;l=o;m=m+r|0;a=a+r|0;n=q}else n=g;switch(n|0){case 4:{s=11;break}case 2:{s=13;break}case 3:{s=12;break}case 6:{n=l;s=9;break}case 1:{s=14;break}case 5:{s=10;break}case 7:{c[e>>2]=d[a>>0]|0|(d[l>>0]|0)<<8|(d[m>>0]|0)<<16|-16777216;e=e+4|0;n=l+1|0;a=a+1|0;m=m+1|0;s=9;break}default:n=l}if((s|0)==9){c[e>>2]=d[a>>0]|0|(d[n>>0]|0)<<8|(d[m>>0]|0)<<16|-16777216;e=e+4|0;l=n+1|0;a=a+1|0;m=m+1|0;s=10}if((s|0)==10){c[e>>2]=d[a>>0]|0|(d[l>>0]|0)<<8|(d[m>>0]|0)<<16|-16777216;e=e+4|0;l=l+1|0;a=a+1|0;m=m+1|0;s=11}if((s|0)==11){c[e>>2]=d[a>>0]|0|(d[l>>0]|0)<<8|(d[m>>0]|0)<<16|-16777216;e=e+4|0;l=l+1|0;a=a+1|0;m=m+1|0;s=12}if((s|0)==12){c[e>>2]=d[a>>0]|0|(d[l>>0]|0)<<8|(d[m>>0]|0)<<16|-16777216;e=e+4|0;l=l+1|0;a=a+1|0;m=m+1|0;s=13}if((s|0)==13){c[e>>2]=d[a>>0]|0|(d[l>>0]|0)<<8|(d[m>>0]|0)<<16|-16777216;e=e+4|0;l=l+1|0;a=a+1|0;m=m+1|0;s=14}if((s|0)==14){s=0;c[e>>2]=d[a>>0]|0|(d[l>>0]|0)<<8|(d[m>>0]|0)<<16|-16777216;e=e+4|0;n=l+1|0;a=a+1|0;m=m+1|0}if(!h)break;else{l=n+i|0;m=m+i|0;a=a+i|0;e=e+(j<<2)|0}}return}function tM(a,b,f,g,h,i,j,k,l,m,n,o){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0;if(!i)return;u=(h|0)==0;t=a+80|0;a=n;g=l;while(1){i=i+-1|0;if(u)f=m;else{s=o+(h<<1)|0;f=m+(h<<1)|0;r=c[t>>2]|0;p=0;q=b;l=a;n=g;while(1){c[q>>2]=(d[r+(e[m>>1]|0)>>0]|0)<<8|(d[r+(e[n>>1]|0)>>0]|0)|(d[r+(e[l>>1]|0)>>0]|0)<<16|(d[r+(e[o>>1]|0)>>0]|0)<<24;p=p+1|0;if((p|0)==(h|0))break;else{q=q+4|0;o=o+2|0;l=l+2|0;m=m+2|0;n=n+2|0}}b=b+(h<<2)|0;o=s;a=a+(h<<1)|0;g=g+(h<<1)|0}if(!i)break;else{b=b+(k<<2)|0;o=o+(j<<1)|0;a=a+(j<<1)|0;m=f+(j<<1)|0;g=g+(j<<1)|0}}return}function uM(a,b,f,g,h,i,j,k,l,m,n,o){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;if(!i)return;v=(h|0)==0;w=a+80|0;u=a+76|0;a=m;while(1){i=i+-1|0;if(v){g=n;f=l}else{g=n+(h<<1)|0;f=l+(h<<1)|0;r=c[w>>2]|0;s=c[u>>2]|0;p=h;q=b;t=o;m=a;while(1){p=p+-1|0;y=d[r+(e[t>>1]|0)>>0]|0;x=y<<8;c[q>>2]=d[s+(d[r+(e[l>>1]|0)>>0]|0|x)>>0]|0|y<<24|(d[s+(d[r+(e[m>>1]|0)>>0]|0|x)>>0]|0)<<8|(d[s+(d[r+(e[n>>1]|0)>>0]|0|x)>>0]|0)<<16;if(!p)break;else{q=q+4|0;t=t+2|0;n=n+2|0;m=m+2|0;l=l+2|0}}b=b+(h<<2)|0;o=o+(h<<1)|0;a=a+(h<<1)|0}if(!i)break;else{b=b+(k<<2)|0;o=o+(j<<1)|0;n=g+(j<<1)|0;a=a+(j<<1)|0;l=f+(j<<1)|0}}return}function vM(a,b,f,g,h,i,j,k,l,m,n,o){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0;if(!i)return;s=(h|0)==0;r=a+80|0;g=n;n=m;a=l;while(1){i=i+-1|0;if(s){f=b;o=n}else{f=b+(h<<2)|0;o=n+(h<<1)|0;q=c[r>>2]|0;p=0;l=g;m=a;while(1){c[b>>2]=d[q+(e[m>>1]|0)>>0]|0|(d[q+(e[n>>1]|0)>>0]|0)<<8|(d[q+(e[l>>1]|0)>>0]|0)<<16|-16777216;p=p+1|0;if((p|0)==(h|0))break;else{b=b+4|0;l=l+2|0;n=n+2|0;m=m+2|0}}g=g+(h<<1)|0;a=a+(h<<1)|0}if(!i)break;else{b=f+(k<<2)|0;g=g+(j<<1)|0;n=o+(j<<1)|0;a=a+(j<<1)|0}}return}function wM(a,b,e,f,g,h,i,j,k,l,m,n){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0;if(!h)return;r=(g|0)==0;f=n;n=l;q=h;while(1){q=q+-1|0;if(r){e=k;a=m}else{a=m+g|0;e=k+g|0;h=g;o=n;p=b;l=f;while(1){h=h+-1|0;s=(d[l>>0]|0)^255;u=((da((d[k>>0]|0)^255,s)|0)>>>0)/255|0;t=((da((d[o>>0]|0)^255,s)|0)>>>0)/255|0;c[p>>2]=u|t<<8|(((da((d[m>>0]|0)^255,s)|0)>>>0)/255|0)<<16|-16777216;if(!h)break;else{o=o+1|0;p=p+4|0;k=k+1|0;l=l+1|0;m=m+1|0}}b=b+(g<<2)|0;n=n+g|0;f=f+g|0}if(!q)break;else{b=b+(j<<2)|0;k=e+i|0;f=f+i|0;m=a+i|0;n=n+i|0}}return}function xM(a,b,e,f,g,h,j,k,l,m,n,o){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;t=u+8|0;s=u;r=u+4|0;if(!h){i=u;return}q=a+68|0;p=b;while(1){o=g;a=p;e=n;f=m;b=l;while(1){cv(c[q>>2]|0,d[b>>0]|0,d[f>>0]|0,d[e>>0]|0,t,s,r);c[a>>2]=c[t>>2]|c[s>>2]<<8|c[r>>2]<<16|-16777216;o=o+-1|0;if(!o)break;else{a=a+4|0;e=e+1|0;f=f+1|0;b=b+1|0}}h=h+-1|0;if(!h)break;else{n=n+(g+j)|0;p=p+(g+k<<2)|0;m=m+(g+j)|0;l=l+(g+j)|0}}i=u;return}function yM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a+576>>2]|0;if(!e)Ra(234176,217984,2128,220136);if((b|0)==65538){a=c[e+892>>2]|0;e=c[d>>2]|0;b=c[e>>2]|0;c[d>>2]=e+4;c[b>>2]=a;b=1;return b|0}else if((b|0)==347){b=c[e+884>>2]|0;f=c[d>>2]|0;a=c[f>>2]|0;c[d>>2]=f+4;c[a>>2]=b;a=c[e+880>>2]|0;e=c[d>>2]|0;b=c[e>>2]|0;c[d>>2]=e+4;c[b>>2]=a;b=1;return b|0}else if((b|0)==65537){b=c[e+888>>2]|0;a=c[d>>2]|0;f=c[a>>2]|0;c[d>>2]=a+4;c[f>>2]=b;f=1;return f|0}else if((b|0)==65539){b=c[e+896>>2]|0;a=c[d>>2]|0;f=c[a>>2]|0;c[d>>2]=a+4;c[f>>2]=b;f=1;return f|0}else{f=Hd[c[e+860>>2]&255](a,b,d)|0;return f|0}return 0}function zM(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=a+576|0;g=c[f>>2]|0;if(!g)Ra(234176,217984,2074,220120);if((d|0)==65537){f=c[e>>2]|0;a=c[f>>2]|0;c[e>>2]=f+4;c[g+888>>2]=a;a=1;return a|0}else if((d|0)==65538){h=c[e>>2]|0;d=c[h>>2]|0;c[e>>2]=h+4;c[g+892>>2]=d;e=c[f>>2]|0;f=a+12|0;g=c[f>>2]|0;d=g&-16385;c[f>>2]=d;if(((b[a+126>>1]|0)==1?(b[a+90>>1]|0)==6:0)?(c[e+892>>2]|0)==1:0){d=g|16384;c[f>>2]=d}f=a+496|0;if((c[f>>2]|0)>0){if(!(d&1024))d=-1;else d=ox(a)|0;c[f>>2]=d}d=a+580|0;if((c[d>>2]|0)<=0){h=1;return h|0}c[d>>2]=Xw(a)|0;h=1;return h|0}else if((d|0)==262){e=Hd[c[g+864>>2]&255](a,262,e)|0;h=c[f>>2]|0;f=a+12|0;g=c[f>>2]|0;d=g&-16385;c[f>>2]=d;if(((b[a+126>>1]|0)==1?(b[a+90>>1]|0)==6:0)?(c[h+892>>2]|0)==1:0){d=g|16384;c[f>>2]=d}f=a+496|0;if((c[f>>2]|0)>0){if(!(d&1024))d=-1;else d=ox(a)|0;c[f>>2]=d}d=a+580|0;if((c[d>>2]|0)<=0){h=e;return h|0}c[d>>2]=Xw(a)|0;h=e;return h|0}else if((d|0)==65539){a=c[e>>2]|0;h=c[a>>2]|0;c[e>>2]=a+4;c[g+896>>2]=h;h=1;return h|0}else if((d|0)==530){c[g+900>>2]=1;h=Hd[c[g+864>>2]&255](a,530,e)|0;return h|0}else if((d|0)==347){h=c[e>>2]|0;d=c[h>>2]|0;c[e>>2]=h+4;if(!d){h=0;return h|0}f=c[e>>2]|0;h=c[f>>2]|0;c[e>>2]=f+4;qv(g+880|0,h,d);c[g+884>>2]=d;d=a+48|0;c[d>>2]=c[d>>2]|4;d=Iv(a,347)|0;if(!d){h=0;return h|0}g=b[d+24>>1]|0;h=a+(((g&65535)>>>5&65535)<<2)+40|0;c[h>>2]=1<<(g&31)|c[h>>2];h=a+12|0;c[h>>2]=c[h>>2]|8;h=1;return h|0}else{h=Hd[c[g+864>>2]&255](a,d,e)|0;return h|0}return 0}function AM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g;e=c[a+576>>2]|0;if(!e)Ra(234176,217984,2155,220072);if(c[a+48>>2]&4){c[f>>2]=c[e+884>>2];Uc(b|0,220088,f|0)|0}e=c[e+868>>2]|0;if(!e){i=g;return}Ud[e&255](a,b,d);i=g;return}function BM(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+16|0;y=z;if((b[f+90>>1]|0)!=6){i=z;return 1}if((b[f+126>>1]|0)!=1){i=z;return 1}v=f+98|0;if((b[v>>1]|0)!=3){i=z;return 1}Rv(f)|0;j=f+176|0;g=c[j>>2]|0;if(!g){i=z;return 1}h=f+172|0;if(!(c[h>>2]|0)){i=z;return 1}w=g;if((c[w>>2]|0)==0&(c[w+4>>2]|0)==0){i=z;return 1}w=_J(2048)|0;if(!w){qx(c[f+628>>2]|0,219480,219512,y);i=z;return 1}l=c[h>>2]|0;m=c[l>>2]|0;l=c[l+4>>2]|0;j=c[j>>2]|0;h=c[j>>2]|0;j=c[j+4>>2]|0;a:do if(!((h|0)==0&(j|0)==0)){t=f+640|0;g=f+628|0;Xd[c[t>>2]&255](c[g>>2]|0,m,l,0)|0;k=j>>>0<0|(j|0)==0&h>>>0<2048?h:2048;if((k|0)<=-1)Ra(220016,217984,896,220032);u=f+632|0;if((Hd[c[u>>2]&255](c[g>>2]|0,w,k)|0)==(k|0)){r=yfa(k|0,0,m|0,l|0)|0;s=H;n=xfa(h|0,j|0,k|0,0)|0;p=w;m=1;o=H;j=r;h=s;b:while(1){l=p+1|0;k=k+-1|0;c:do if((a[p>>0]|0)==-1){while(1){if(!k){if((n|0)==0&(o|0)==0){x=112;break a}if(!(m<<24>>24)){Xd[c[t>>2]&255](c[g>>2]|0,j,h,0)|0;m=1}k=o>>>0<0|(o|0)==0&n>>>0<2048?n:2048;if((k|0)<=-1){x=29;break b}if((Hd[c[u>>2]&255](c[g>>2]|0,w,k)|0)!=(k|0)){x=112;break a}j=yfa(k|0,0,j|0,h|0)|0;h=H;n=xfa(n|0,o|0,k|0,0)|0;p=w;o=H}else p=l;l=a[p>>0]|0;p=p+1|0;k=k+-1|0;if(l<<24>>24==-1)l=p;else break}switch(l&255|0){case 221:case 196:case 218:case 219:case 239:case 238:case 237:case 236:case 235:case 234:case 233:case 232:case 231:case 230:case 229:case 228:case 227:case 226:case 225:case 224:case 254:break;case 216:{l=p;x=16;break c}case 202:case 201:case 194:case 193:case 192:{l=p;x=56;break b}default:{x=112;break a}}if(!k){if((n|0)==0&(o|0)==0){x=112;break a}if(!(m<<24>>24)){Xd[c[t>>2]&255](c[g>>2]|0,j,h,0)|0;m=1}k=o>>>0<0|(o|0)==0&n>>>0<2048?n:2048;if((k|0)<=-1){x=39;break b}if((Hd[c[u>>2]&255](c[g>>2]|0,w,k)|0)!=(k|0)){x=112;break a}j=yfa(k|0,0,j|0,h|0)|0;h=H;n=xfa(n|0,o|0,k|0,0)|0;p=w;o=H}r=a[p>>0]|0;l=p+1|0;k=k+-1|0;if(!k){if((n|0)==0&(o|0)==0){x=112;break a}if(!(m<<24>>24)){Xd[c[t>>2]&255](c[g>>2]|0,j,h,0)|0;m=1}k=o>>>0<0|(o|0)==0&n>>>0<2048?n:2048;if((k|0)<=-1){x=47;break b}if((Hd[c[u>>2]&255](c[g>>2]|0,w,k)|0)!=(k|0)){x=112;break a}q=yfa(k|0,0,j|0,h|0)|0;h=H;n=xfa(n|0,o|0,k|0,0)|0;l=w;o=H}else q=j;k=k+-1|0;j=d[l>>0]|(r&255)<<8;if((j&65535)<2){x=112;break a}j=j+65534|0;p=j&65535;if(!p){j=q;l=l+1|0;x=16}else{if(k>>>0>=p>>>0){j=q;l=l+(p+1)|0;k=k-p|0;x=16;break}k=j-k&65535;if(o>>>0<0|(o|0)==0&n>>>0>>0){x=112;break a}j=yfa(k|0,0,q|0,h|0)|0;h=H;n=xfa(n|0,o|0,k|0,0)|0;l=H;k=0}}else x=16;while(0);if((x|0)==16){x=0;if(!k){l=o;k=m}else{p=l;continue}}if((n|0)==0&(l|0)==0){x=112;break a}if(!(k<<24>>24)){Xd[c[t>>2]&255](c[g>>2]|0,j,h,0)|0;m=1}else m=k;k=l>>>0<0|(l|0)==0&n>>>0<2048?n:2048;if((k|0)<=-1){x=21;break}if((Hd[c[u>>2]&255](c[g>>2]|0,w,k)|0)!=(k|0)){x=112;break a}j=yfa(k|0,0,j|0,h|0)|0;h=H;n=xfa(n|0,l|0,k|0,0)|0;p=w;o=H}if((x|0)==21)Ra(220016,217984,896,220032);else if((x|0)==29)Ra(220016,217984,896,220032);else if((x|0)==39)Ra(220016,217984,896,220032);else if((x|0)==47)Ra(220016,217984,896,220032);else if((x|0)==56){if(!k){if((n|0)==0&(o|0)==0){x=112;break}if(!(m<<24>>24)){Xd[c[t>>2]&255](c[g>>2]|0,j,h,0)|0;m=1}k=o>>>0<0|(o|0)==0&n>>>0<2048?n:2048;if((k|0)<=-1)Ra(220016,217984,896,220032);if((Hd[c[u>>2]&255](c[g>>2]|0,w,k)|0)!=(k|0)){x=112;break}j=yfa(k|0,0,j|0,h|0)|0;h=H;n=xfa(n|0,o|0,k|0,0)|0;l=w;o=H}p=a[l>>0]|0;l=l+1|0;k=k+-1|0;if(!k){if((n|0)==0&(o|0)==0){x=112;break}if(!(m<<24>>24)){Xd[c[t>>2]&255](c[g>>2]|0,j,h,0)|0;m=1}k=o>>>0<0|(o|0)==0&n>>>0<2048?n:2048;if((k|0)<=-1)Ra(220016,217984,896,220032);if((Hd[c[u>>2]&255](c[g>>2]|0,w,k)|0)!=(k|0)){x=112;break}j=yfa(k|0,0,j|0,h|0)|0;q=H;n=xfa(n|0,o|0,k|0,0)|0;l=w;o=H}else q=h;if((d[l>>0]|(p&255)<<8|0)!=(((e[v>>1]|0)*3|0)+8|0)){x=112;break}if((k+-1|0)>>>0>=7){k=k+-8|0;if(!k){l=o;k=m;h=q;x=77}else{p=l+8|0;h=q}}else{h=8-k&65535;if(o>>>0<0|(o|0)==0&n>>>0>>0){x=112;break}j=yfa(h|0,0,j|0,q|0)|0;x=H;n=xfa(n|0,o|0,h|0,0)|0;l=H;k=0;h=x;x=77}if((x|0)==77){if((n|0)==0&(l|0)==0){x=112;break}if(!(k<<24>>24)){Xd[c[t>>2]&255](c[g>>2]|0,j,h,0)|0;m=1}else m=k;k=l>>>0<0|(l|0)==0&n>>>0<2048?n:2048;if((k|0)<=-1)Ra(220016,217984,896,220032);if((Hd[c[u>>2]&255](c[g>>2]|0,w,k)|0)!=(k|0)){x=112;break}j=yfa(k|0,0,j|0,h|0)|0;h=H;n=xfa(n|0,l|0,k|0,0)|0;p=w;o=H}s=a[p>>0]|0;l=p+1|0;r=(s&255)>>>4;s=s&15;if((k|0)==1)if((n|0)==0&(o|0)==0){n=0;o=0;k=0}else{j=yfa(j|0,h|0,1,0)|0;h=H;n=yfa(n|0,o|0,-1,-1)|0;m=0;o=H;k=0}else{l=p+2|0;k=k+-2|0}d:do if((e[v>>1]|0)>1){q=1;while(1){if(k){k=k+-1|0;if(!k){l=o;x=93}else p=l+1|0}else{if((n|0)==0&(o|0)==0){x=112;break a}j=yfa(j|0,h|0,1,0)|0;h=H;n=yfa(n|0,o|0,-1,-1)|0;l=H;m=0;x=93}if((x|0)==93){x=0;if((n|0)==0&(l|0)==0){x=112;break a}if(!(m<<24>>24)){Xd[c[t>>2]&255](c[g>>2]|0,j,h,0)|0;m=1}k=l>>>0<0|(l|0)==0&n>>>0<2048?n:2048;if((k|0)<=-1){x=97;break}if((Hd[c[u>>2]&255](c[g>>2]|0,w,k)|0)!=(k|0)){x=112;break a}j=yfa(k|0,0,j|0,h|0)|0;h=H;n=xfa(n|0,l|0,k|0,0)|0;p=w;o=H}l=p+1|0;if((a[p>>0]|0)!=17){x=101;break}do if((k|0)==1){if((n|0)==0&(o|0)==0){n=0;o=0;k=0;break}j=yfa(j|0,h|0,1,0)|0;h=H;n=yfa(n|0,o|0,-1,-1)|0;m=0;o=H;k=0}else{l=p+2|0;k=k+-2|0}while(0);q=q+1<<16>>16;if((q&65535)>=(e[v>>1]|0))break d}if((x|0)==97)Ra(220016,217984,896,220032);else if((x|0)==101){qx(c[g>>2]|0,219736,219768,y);break a}}while(0);k=r&255;do if(r<<24>>24==4|r<<24>>24==2|r<<24>>24==1){if(!((s|0)==4|(s|0)==2|(s|0)==1))break;l=f+192|0;m=e[l>>1]|0;h=f+194|0;j=e[h>>1]|0;if((k|0)==(m|0)&(s|0)==(j|0))break a;f=c[g>>2]|0;c[y>>2]=m;c[y+4>>2]=j;c[y+8>>2]=k;c[y+12>>2]=s;qx(f,219736,219896,y);b[l>>1]=r&255;b[h>>1]=s;break a}while(0);qx(c[g>>2]|0,219736,219768,y);break}}else x=112}else{g=f+628|0;x=112}while(0);if((x|0)==112)qx(c[g>>2]|0,219480,219608,y);$J(w);i=z;return 1}function CM(d){d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j;e=c[d+576>>2]|0;f=e+456|0;if(c[f>>2]|0)if(!(a[e+16>>0]|0)){rZ(e);c[f>>2]=0;h=4}else h=6;else h=4;if((h|0)==4)if(!(sZ(e)|0))h=6;else c[f>>2]=1;if((h|0)==6?(e|0)==0:0)Ra(234176,217984,966,219432);if(!(a[e+16>>0]|0))Ra(218768,217984,967,219432);if((c[d+48>>2]&4|0)!=0?(h=e+768|0,c[e+24>>2]=h,c[e+780>>2]=218,c[e+784>>2]=121,c[e+788>>2]=254,c[e+792>>2]=273,c[e+772>>2]=0,c[h>>2]=0,c[e+776>>2]=274,(xZ(e,0)|0)!=2):0){Yv(c[d+628>>2]|0,219432,219448,g);h=0;i=j;return h|0}h=b[d+90>>1]|0;b[e+800>>1]=h;if(h<<16>>16==6){b[e+802>>1]=b[d+192>>1]|0;b[e+804>>1]=b[d+194>>1]|0}else{b[e+802>>1]=1;b[e+804>>1]=1}h=e+768|0;c[e+24>>2]=h;c[e+776>>2]=275;c[e+780>>2]=218;c[e+784>>2]=121;c[e+788>>2]=254;c[e+792>>2]=273;c[e+772>>2]=0;c[h>>2]=0;c[d+652>>2]=37;h=1;i=j;return h|0}function DM(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;m=t;r=d+576|0;s=c[r>>2]|0;if(!s)Ra(234176,217984,1011,218752);g=s+16|0;if((a[g>>0]|0)==0?(Ed[c[d+508>>2]&511](d)|0,(a[g>>0]|0)==0):0)Ra(218768,217984,1018,218752);if(!(zZ(s)|0)){s=0;i=t;return s|0}if((xZ(s,1)|0)!=1){s=0;i=t;return s|0}c[d+604>>2]=c[s+768>>2];c[d+608>>2]=c[s+772>>2];g=(c[d+60>>2]|0)-(c[d+444>>2]|0)|0;if(!(c[d+12>>2]&1024)){h=c[d+56>>2]|0;j=c[d+100>>2]|0;c[s+808>>2]=Xw(d)|0;j=g>>>0>j>>>0?j:g}else{h=c[d+68>>2]|0;j=c[d+72>>2]|0;c[s+808>>2]=lx(d)|0}l=d+126|0;if(!((b[l>>1]|0)!=2|f<<16>>16==0)){g=e[s+802>>1]|0;if(h>>>0<(0-g|0)>>>0)h=((h+-1+g|0)>>>0)/(g>>>0)|0;else h=0;g=e[s+804>>1]|0;if(j>>>0<(0-g|0)>>>0)n=((j+-1+g|0)>>>0)/(g>>>0)|0;else n=0}else n=j;f=s+28|0;j=c[f>>2]|0;g=c[s+32>>2]|0;if(j>>>0>>0|g>>>0>>0){p=c[d+628>>2]|0;c[m>>2]=h;c[m+4>>2]=n;c[m+8>>2]=j;c[m+12>>2]=g;qx(p,218752,218800,m);j=c[f>>2]|0}g=c[s+32>>2]|0;if(j>>>0>h>>>0|g>>>0>n>>>0){s=c[d+628>>2]|0;c[m>>2]=h;c[m+4>>2]=n;c[m+8>>2]=j;c[m+12>>2]=g;Yv(s,218752,218864,m);s=0;i=t;return s|0}k=s+36|0;o=c[k>>2]|0;l=(b[l>>1]|0)==1;if(l)g=e[d+98>>1]|0;else g=1;if((o|0)!=(g|0)){Yv(c[d+628>>2]|0,218752,218944,m);s=0;i=t;return s|0}if((c[s+192>>2]|0)!=(e[d+84>>1]|0)){Yv(c[d+628>>2]|0,218752,218976,m);s=0;i=t;return s|0}p=s+196|0;j=c[p>>2]|0;f=c[j+8>>2]|0;a:do if(l){h=e[s+802>>1]|0;g=c[j+12>>2]|0;n=b[s+804>>1]|0;if(!((f|0)==(h|0)&(g|0)==(n&65535|0))){s=c[d+628>>2]|0;c[m>>2]=f;c[m+4>>2]=g;c[m+8>>2]=h;c[m+12>>2]=n&65535;Yv(s,218752,219008,m);s=0;i=t;return s|0}if((o|0)>1){g=1;while(1){if((c[j+(g*88|0)+8>>2]|0)!=1)break;if((c[j+(g*88|0)+12>>2]|0)!=1)break;g=g+1|0;if((g|0)>=(o|0))break a}Yv(c[d+628>>2]|0,218752,219080,m);s=0;i=t;return s|0}}else{if((f|0)==1?(c[j+12>>2]|0)==1:0)break;Yv(c[d+628>>2]|0,218752,219080,m);s=0;i=t;return s|0}while(0);b:do if(l){do if((b[s+800>>1]|0)==6){g=s+40|0;if((c[s+892>>2]|0)!=1){c[g>>2]=0;c[s+44>>2]=0;if(l)break;else{q=47;break b}}else{c[g>>2]=3;c[s+44>>2]=2;q=47;break b}}else{c[s+40>>2]=0;c[s+44>>2]=0}while(0);if((b[s+802>>1]|0)==1?(b[s+804>>1]|0)==1:0){q=47;break}a[s+65>>0]=1;a[s+72>>0]=0;c[d+532>>2]=126;c[d+540>>2]=127;c[d+548>>2]=127;h=0}else{c[s+40>>2]=0;c[s+44>>2]=0;q=47}while(0);if((q|0)==47){a[s+65>>0]=0;c[d+532>>2]=89;c[d+540>>2]=89;c[d+548>>2]=89;h=1}g=(CZ(s)|0)==0;if(g|h){s=g&1^1;i=t;return s|0}n=c[k>>2]|0;o=c[r>>2]|0;c:do if((n|0)>0){l=o+812|0;m=0;k=c[p>>2]|0;g=0;while(1){h=c[k+8>>2]|0;j=c[k+12>>2]|0;f=DZ(o,c[k+28>>2]<<3,j<<3)|0;if(!f){g=0;break}g=(da(j,h)|0)+g|0;c[l+(m<<2)>>2]=f;m=m+1|0;if((m|0)>=(n|0))break c;else k=k+88|0}i=t;return g|0}else g=0;while(0);c[o+856>>2]=g;c[s+852>>2]=8;s=1;i=t;return s|0}function EM(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;u=i;i=i+16|0;o=u+8|0;n=u+4|0;p=c[b+576>>2]|0;q=b+604|0;r=p+768|0;c[r>>2]=c[q>>2];s=b+608|0;t=p+772|0;c[t>>2]=c[s>>2];m=p+808|0;h=c[m>>2]|0;if(!h){t=0;i=u;return t|0}g=(f|0)/(h|0)|0;if((f|0)%(h|0)|0)qx(c[b+628>>2]|0,c[b>>2]|0,218720,u);h=c[p+32>>2]|0;h=(g|0)>(h|0)?h:g;do if(h){c[o>>2]=0;k=p+192|0;l=p+92|0;if((c[k>>2]|0)==12){j=p+36|0;g=_J(da(c[l>>2]<<1,c[j>>2]|0)|0)|0;c[o>>2]=g}else{g=0;j=p+36|0}f=b+444|0;b=h;a:while(1){do if(!g){c[n>>2]=e;if((EZ(p,n)|0)!=1){g=0;h=23;break a}}else{if((EZ(p,o)|0)!=1){g=0;h=23;break a}g=c[k>>2]|0;if((g|0)==12){g=(da(c[j>>2]|0,c[l>>2]|0)|0)>>>1;if(!g)break;else h=0;do{v=h*3|0;x=c[o>>2]|0;w=h<<1;y=x+w|0;a[e+v>>0]=(d[y>>0]|0)>>>4;a[e+(v+1)>>0]=(d[y>>0]|0)<<4;a[e+(v+2)>>0]=a[x+(w|1)>>0]|0;h=h+1|0}while((h|0)<(g|0))}else if((g|0)==8){g=da(c[j>>2]|0,c[l>>2]|0)|0;if((g|0)>0)h=0;else break;do{a[e+h>>0]=a[(c[o>>2]|0)+h>>0]|0;h=h+1|0}while((h|0)!=(g|0))}else break}while(0);c[f>>2]=(c[f>>2]|0)+1;b=b+-1|0;g=c[o>>2]|0;if((b|0)<=0){h=18;break}else e=e+(c[m>>2]|0)|0}if((h|0)==18){if(!g)break;$J(g);break}else if((h|0)==23){i=u;return g|0}}while(0);c[q>>2]=c[r>>2];c[s>>2]=c[t>>2];if((c[p+120>>2]|0)>>>0<(c[p+96>>2]|0)>>>0)g=1;else g=(FZ(p)|0)!=0;y=g&1;i=u;return y|0}function FM(d){d=d|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0;r=i;i=i+48|0;q=r;k=r+32|0;l=r+8|0;n=d+576|0;p=c[n>>2]|0;f=p+456|0;if(c[f>>2]|0)if(!(a[p+16>>0]|0))h=6;else{rZ(p);c[f>>2]=0;h=4}else h=4;if((h|0)==4)if(!(GZ(p)|0))h=6;else c[f>>2]=1;if((h|0)==6?(p|0)==0:0)Ra(234176,217984,1536,218408);if(a[p+16>>0]|0)Ra(218328,217984,1537,218408);f=b[d+90>>1]|0;j=p+800|0;b[j>>1]=f;do if((b[d+126>>1]|0)==1){h=b[d+98>>1]|0;c[p+36>>2]=h&65535;if(f<<16>>16==6){f=p+40|0;if((c[p+892>>2]|0)==1){c[f>>2]=2;break}else{c[f>>2]=3;break}}if((f&65535)<2&h<<16>>16==1){c[p+40>>2]=1;break}if(f<<16>>16==2){if(h<<16>>16==3){c[p+40>>2]=2;break}}else if(f<<16>>16==5?h<<16>>16==4:0){c[p+40>>2]=4;break}c[p+40>>2]=0}else{c[p+36>>2]=1;c[p+40>>2]=0}while(0);if(!(HZ(p)|0)){q=0;i=r;return q|0}f=e[j>>1]|0;if((f|0)==4|(f|0)==3){d=c[d+628>>2]|0;c[q>>2]=f;Yv(d,218408,218424,q);q=0;i=r;return q|0}else if((f|0)==6){b[p+802>>1]=b[d+192>>1]|0;b[p+804>>1]=b[d+194>>1]|0;c[q>>2]=k;if(!(sv(d,532,q)|0)){j=1<>1];g[l>>2]=0.0;s=+(j+-1|0);g[l+4>>2]=s;t=+(j>>1|0);g[l+8>>2]=t;g[l+12>>2]=s;g[l+16>>2]=t;g[l+20>>2]=s;c[q>>2]=l;rv(d,532,q)|0}}else{b[p+802>>1]=1;b[p+804>>1]=1}l=b[d+84>>1]|0;f=l&65535;if(l<<16>>16!=8){d=c[d+628>>2]|0;c[q>>2]=f;Yv(d,218408,218480,q);q=0;i=r;return q|0}c[p+72>>2]=f;j=d+12|0;if(!(c[j>>2]&1024)){f=c[d+100>>2]|0;if(f>>>0<(c[d+60>>2]|0)>>>0?(m=e[p+804>>1]<<3,((f>>>0)%(m>>>0)|0|0)!=0):0){d=c[d+628>>2]|0;c[q>>2]=m;Yv(d,218408,218600,q);q=0;i=r;return q|0}}else{f=e[p+804>>1]<<3;if(((c[d+72>>2]|0)>>>0)%(f>>>0)|0){d=c[d+628>>2]|0;c[q>>2]=f;Yv(d,218408,218520,q);q=0;i=r;return q|0}f=e[p+802>>1]<<3;if(((c[d+68>>2]|0)>>>0)%(f>>>0)|0){d=c[d+628>>2]|0;c[q>>2]=f;Yv(d,218408,218560,q);q=0;i=r;return q|0}}do if(c[p+896>>2]&3){f=c[p+880>>2]|0;if((f|0)!=0?(ffa(f,218648,8)|0)!=0:0)break;k=c[n>>2]|0;if(!(IZ(k,c[k+888>>2]|0)|0)){q=0;i=r;return q|0}if(!(JZ(k)|0)){q=0;i=r;return q|0}f=c[k+896>>2]|0;if(f&1){h=c[k+88>>2]|0;if(h)a[h+128>>0]=0;if((b[k+800>>1]|0)==6?(o=c[k+92>>2]|0,(o|0)!=0):0)a[o+128>>0]=0}if(f&2){f=c[k+120>>2]|0;if(f)a[f+273>>0]=0;f=c[k+136>>2]|0;if(f)a[f+273>>0]=0;if((b[k+800>>1]|0)==6){f=c[k+124>>2]|0;if(f)a[f+273>>0]=0;f=c[k+140>>2]|0;if(f)a[f+273>>0]=0}}h=k+880|0;f=c[h>>2]|0;if(f)$J(f);f=k+884|0;c[f>>2]=1e3;n=_J(1e3)|0;c[h>>2]=n;if(!n){c[f>>2]=0;Yv(c[(c[k+796>>2]|0)+628>>2]|0,218664,218688,q);q=0;i=r;return q|0}c[k+24>>2]=k+748;c[k+756>>2]=276;c[k+760>>2]=219;c[k+764>>2]=277;if(!(NZ(k)|0)){q=0;i=r;return q|0}else{c[j>>2]=c[j>>2]|8;q=d+48|0;c[q>>2]=c[q>>2]|4;break}}else{q=d+48|0;c[q>>2]=c[q>>2]&-5}while(0);c[p+24>>2]=p+748;c[p+756>>2]=278;c[p+760>>2]=220;c[p+764>>2]=279;q=1;i=r;return q|0}function GM(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;n=p;l=d+576|0;o=c[l>>2]|0;if(!o)Ra(234176,217984,1691,218312);h=o+16|0;g=a[h>>0]|0;if(g<<24>>24==1){Ed[c[d+516>>2]&511](d)|0;g=a[h>>0]|0}if(g<<24>>24)Ra(218328,217984,1698,218312);if(!(c[d+12>>2]&1024)){g=c[d+56>>2]|0;m=(c[d+60>>2]|0)-(c[d+444>>2]|0)|0;j=c[d+100>>2]|0;c[o+808>>2]=Xw(d)|0;m=m>>>0>j>>>0?j:m}else{g=c[d+68>>2]|0;m=c[d+72>>2]|0;c[o+808>>2]=lx(d)|0}h=b[d+126>>1]|0;j=f<<16>>16==0;if(!(h<<16>>16!=2|j)){k=e[o+802>>1]|0;if(g>>>0<(0-k|0)>>>0)g=((g+-1+k|0)>>>0)/(k>>>0)|0;else g=0;k=e[o+804>>1]|0;if(m>>>0<(0-k|0)>>>0)k=((m+-1+k|0)>>>0)/(k>>>0)|0;else k=0}else k=m;if((k|g)>>>0>65535){Yv(c[d+628>>2]|0,218312,218360,n);o=0;i=p;return o|0}c[o+28>>2]=g;c[o+32>>2]=k;do if(h<<16>>16==1){c[o+36>>2]=e[d+98>>1];if((b[o+800>>1]|0)!=6){if(!(RZ(o,c[o+40>>2]|0)|0))g=0;else{g=0;break}i=p;return g|0}do if((c[o+892>>2]|0)==1)g=0;else{if((b[o+802>>1]|0)==1?(b[o+804>>1]|0)==1:0){g=0;break}g=1}while(0);if(!(RZ(o,3)|0)){o=0;i=p;return o|0}else{f=c[o+84>>2]|0;c[f+8>>2]=e[o+802>>1];c[f+12>>2]=e[o+804>>1];break}}else{if(!(RZ(o,0)|0)){o=0;i=p;return o|0}g=c[o+84>>2]|0;c[g>>2]=f&65535;if((b[o+800>>1]|0)!=6|j)g=0;else{c[g+16>>2]=1;c[g+20>>2]=1;c[g+24>>2]=1;g=0}}while(0);a[o+232>>0]=0;a[o+240>>0]=0;if(!(IZ(o,c[o+888>>2]|0)|0)){o=0;i=p;return o|0}k=c[o+896>>2]|0;h=c[o+88>>2]|0;j=(h|0)==0;if(!(k&1)){if(!j)a[h+128>>0]=0;h=c[o+92>>2]|0;if(h)a[h+128>>0]=0}else{if(!j)a[h+128>>0]=1;h=c[o+92>>2]|0;if(h)a[h+128>>0]=1}if(!(k&2))a[o+210>>0]=1;else{h=c[o+120>>2]|0;if(h)a[h+273>>0]=1;h=c[o+136>>2]|0;if(h)a[h+273>>0]=1;h=c[o+124>>2]|0;if(h)a[h+273>>0]=1;h=c[o+140>>2]|0;if(h)a[h+273>>0]=1;a[o+210>>0]=0}g=(g|0)!=0;a[o+208>>0]=g&1;c[d+536>>2]=g?128:90;c[d+544>>2]=g?128:90;c[d+552>>2]=g?128:90;if(!(TZ(o)|0)){o=0;i=p;return o|0}if(g){m=c[o+76>>2]|0;n=c[l>>2]|0;a:do if((m|0)>0){j=n+812|0;f=0;l=c[o+84>>2]|0;g=0;while(1){k=c[l+8>>2]|0;h=c[l+12>>2]|0;d=DZ(n,c[l+28>>2]<<3,h<<3)|0;if(!d){g=0;break}g=(da(h,k)|0)+g|0;c[j+(f<<2)>>2]=d;f=f+1|0;if((f|0)>=(m|0))break a;else l=l+88|0}i=p;return g|0}else g=0;while(0);c[n+856>>2]=g}c[o+852>>2]=0;o=1;i=p;return o|0}function HM(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=a+576|0;a=c[n>>2]|0;l=a+852|0;d=c[l>>2]|0;do if((d|0)>0){m=a+76|0;e=c[m>>2]|0;a:do if((e|0)>0){b=a+812|0;f=0;k=c[a+84>>2]|0;while(1){g=c[k+12>>2]|0;j=c[k+28>>2]<<3;h=da(d,g)|0;if((h|0)<(g<<3|0)){i=b+(f<<2)|0;d=g<<3;e=h;do{h=c[i>>2]|0;cK(c[h+(e<<2)>>2]|0,c[h+(e+-1<<2)>>2]|0,j);e=e+1|0}while((e|0)!=(d|0));e=c[m>>2]|0}f=f+1|0;if((f|0)>=(e|0))break a;d=c[l>>2]|0;k=k+88|0}}else b=a+812|0;while(0);m=c[a+260>>2]<<3;if((UZ(a,b,m)|0)==(m|0)){a=c[n>>2]|0;break}else{n=0;return n|0}}while(0);n=VZ(a)|0;return n|0}function IM(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+16|0;o=q+4|0;m=c[b+576>>2]|0;if(!m)Ra(234176,217984,1829,218264);n=m+808|0;l=c[n>>2]|0;g=(f|0)/(l|0)|0;if((f|0)%(l|0)|0)qx(c[b+628>>2]|0,c[b>>2]|0,218280,q);if(!(c[b+12>>2]&1024)){l=c[b+444>>2]|0;j=c[b+60>>2]|0;g=(l+g|0)>>>0>j>>>0?j-l|0:g}l=m+72|0;f=c[l>>2]|0;if((f|0)==12){j=(c[n>>2]<<1|0)/3|0;h=_J(j<<1)|0;p=9}else{h=0;j=0}while(1){if((p|0)==9){p=0;f=c[l>>2]|0}k=g+-1|0;f=(f|0)==12;if((g|0)<=0)break;if(f){g=(j|0)/2|0;c[o>>2]=h;if((j|0)>1){f=0;do{r=f*3|0;p=h+(f<<1<<1)|0;a[p>>0]=(d[e+(r+1)>>0]|0)>>>4|(d[e+r>>0]|0)<<4;a[p+1>>0]=a[e+(r+2)>>0]|0;f=f+1|0}while((f|0)<(g|0))}}else c[o>>2]=e;if((WZ(m,o)|0)!=1){g=0;p=21;break}if((k|0)>0){r=b+444|0;c[r>>2]=(c[r>>2]|0)+1}e=e+(c[n>>2]|0)|0;g=k;p=9}if((p|0)==21){i=q;return g|0}if(!f){r=1;i=q;return r|0}$J(h);r=1;i=q;return r|0}function JM(a){a=a|0;var b=0,d=0;d=a+576|0;b=c[d>>2]|0;if(!b)Ra(234152,217984,2014,218248);c[a+672>>2]=c[b+860>>2];c[a+668>>2]=c[b+864>>2];c[a+676>>2]=c[b+868>>2];if(c[b+456>>2]|0)rZ(b);b=c[b+880>>2]|0;if(!b){b=c[d>>2]|0;$J(b);c[d>>2]=0;nv(a);return}$J(b);b=c[d>>2]|0;$J(b);c[d>>2]=0;nv(a);return}function KM(a,b){a=a|0;b=b|0;var d=0;d=Pd[c[(c[a+576>>2]|0)+872>>2]&511](a,b)|0;if(d>>>0>=(c[a+60>>2]|0)>>>0)return d|0;a=e[a+194>>1]|0;b=a<<3;if(d>>>0<(0-b|0)>>>0)b=(((d+-1+b|0)>>>0)/(b>>>0)|0)<<3;else b=0;d=da(b,a)|0;return d|0}function LM(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0;Ud[c[(c[a+576>>2]|0)+876>>2]&255](a,b,d);f=c[b>>2]|0;h=e[a+192>>1]|0;g=h<<3;if(f>>>0<(0-g|0)>>>0)f=(((f+-1+g|0)>>>0)/(g>>>0)|0)<<3;else f=0;c[b>>2]=da(f,h)|0;h=c[d>>2]|0;f=e[a+194>>1]|0;g=f<<3;if(h>>>0>=(0-g|0)>>>0){a=0;a=da(a,f)|0;c[d>>2]=a;return}a=(((h+-1+g|0)>>>0)/(g>>>0)|0)<<3;a=da(a,f)|0;c[d>>2]=a;return}function MM(a,d){a=+a;d=+d;var e=0,f=0,j=0,k=0,l=0.0,m=0,n=0.0,o=0.0,p=0,q=0,r=0;r=i;i=i+800|0;q=r;if(c[55788]|0){o=d+-.473684211;d=a+-.210526316;d=+$(+o,+d);d=d*15.915494277358546;d=d+50.0;q=~~d;q=222752+(q<<2)|0;q=c[q>>2]|0;i=r;return q|0}e=99;while(1){h[q+(e<<3)>>3]=2.0;if(!e){p=162;e=163;break}else e=e+-1|0}while(1){f=(b[220172+(p<<3)>>1]|0)+-1|0;if((e|0)==1|(e|0)==163)m=1;else m=f;n=+g[220168+(p<<3)>>2];o=(+(p|0)+.5)*3.5000001080334187e-003+.016939999535679817+-.473684211;j=220174+(p<<3)|0;do{l=+$(+o,+((+(f|0)+.5)*3.5000001080334187e-003+n+-.210526316))*15.915494277358546+50.0;e=~~l;l=+S(+(l-(+(e|0)+.5)));k=q+(e<<3)|0;if(l<+h[k>>3]){c[222752+(e<<2)>>2]=(b[j>>1]|0)+f;h[k>>3]=l}f=f-m|0}while((f|0)>-1);if(!p){p=99;j=100;break}else{e=p;p=p+-1|0}}while(1){do if(+h[q+(p<<3)>>3]>1.5){f=1;while(1){e=f+1|0;if(+h[q+(((f+p|0)%100|0)<<3)>>3]<1.5){e=f;break}if((e|0)<50)f=e;else break}m=j+99|0;f=-1;j=1;while(1){k=j+1|0;if(+h[q+(((m+f|0)%100|0)<<3)>>3]<1.5)break;f=~j;if((k|0)<50)j=k;else{j=k;break}}if((e|0)<(j|0)){c[222752+(p<<2)>>2]=c[222752+(((e+p|0)%100|0)<<2)>>2];break}else{c[222752+(p<<2)>>2]=c[222752+(((m+f|0)%100|0)<<2)>>2];break}}while(0);if(!p)break;else{j=p;p=p+-1|0}}c[55788]=1;o=d+-.473684211;d=a+-.210526316;d=+$(+o,+d);d=d*15.915494277358546;d=d+50.0;q=~~d;q=222752+(q<<2)|0;q=c[q>>2]|0;i=r;return q|0}function NM(a,b,c){a=a|0;b=b|0;c=c|0;return}function OM(a){a=a|0;return 1}function PM(a){a=a|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;f=h;g=c[a+576>>2]|0;c[a+652>>2]=37;d=e[a+90>>1]|0;do if((d|0)==32844)if(e_(a)|0){c[a+532>>2]=131;d=c[g>>2]|0;if((d|0)==3){c[g+20>>2]=74;d=1;break}else if(!d){c[g+20>>2]=73;d=1;break}else{d=1;break}}else d=0;else if((d|0)==32845)if(XZ(a)|0){d=a+532|0;if((b[a+88>>1]|0)==-30859){c[d>>2]=129;d=c[g>>2]|0;if(!d){c[g+20>>2]=67;d=1;break}else if((d|0)==1){c[g+20>>2]=68;d=1;break}else if((d|0)==3){c[g+20>>2]=69;d=1;break}else{d=1;break}}else{c[d>>2]=130;d=c[g>>2]|0;if(!d){c[g+20>>2]=70;d=1;break}else if((d|0)==3){c[g+20>>2]=72;d=1;break}else if((d|0)==1){c[g+20>>2]=71;d=1;break}else{d=1;break}}}else d=0;else{a=c[a+628>>2]|0;c[f>>2]=d;c[f+4>>2]=222032;Yv(a,222600,221960,f);d=0}while(0);i=h;return d|0}function QM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=Xw(a)|0;if((d|0)%(f|0)|0)Ra(221872,221536,382,222576);g=a+532|0;if(!d){a=1;return a|0}while(1){if(!(Xd[c[g>>2]&255](a,b,f,e)|0)){b=0;d=6;break}if((d|0)==(f|0)){b=1;d=6;break}else{d=d-f|0;b=b+f|0}}if((d|0)==6)return b|0;return 0}function RM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=lx(a)|0;if((d|0)%(f|0)|0)Ra(221872,221536,398,222552);g=a+532|0;if(!d){a=1;return a|0}while(1){if(!(Xd[c[g>>2]&255](a,b,f,e)|0)){b=0;d=6;break}if((d|0)==(f|0)){b=1;d=6;break}else{d=d-f|0;b=b+f|0}}if((d|0)==6)return b|0;return 0}function SM(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;h=k;f=c[a+576>>2]|0;g=a+90|0;d=e[g>>1]|0;do if((d|0)==32845)if(XZ(a)|0){d=a+536|0;if((b[a+88>>1]|0)==-30859){c[d>>2]=132;d=c[f>>2]|0;if(!d){c[f+20>>2]=75;d=1;break}else if((d|0)==1){c[f+20>>2]=76;d=1;break}else if((d|0)==2){d=1;break}else{j=14;break}}else{c[d>>2]=133;d=c[f>>2]|0;if((d|0)==1){c[f+20>>2]=78;d=1;break}else if(!d){c[f+20>>2]=77;d=1;break}else if((d|0)==2){d=1;break}else{j=14;break}}}else d=1;else if((d|0)==32844)if(!(e_(a)|0))d=1;else{c[a+536>>2]=134;d=c[f>>2]|0;if((d|0)==1){d=1;break}else if(d){j=14;break}c[f+20>>2]=79;d=1}else{g=c[a+628>>2]|0;c[h>>2]=d;c[h+4>>2]=222032;Yv(g,221936,221960,h);d=1}while(0);if((j|0)==14){d=c[a+628>>2]|0;c[h>>2]=(b[g>>1]|0)==-32692?222120:222128;Yv(d,221936,222064,h);d=0}i=k;return d|0}function TM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=Xw(a)|0;if((d|0)%(f|0)|0)Ra(221872,221536,647,221912);g=a+536|0;if(!d){a=1;return a|0}while(1){if((Xd[c[g>>2]&255](a,b,f,e)|0)!=1){b=0;d=6;break}if((d|0)==(f|0)){b=1;d=6;break}else{d=d-f|0;b=b+f|0}}if((d|0)==6)return b|0;return 0}function UM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=lx(a)|0;if((d|0)%(f|0)|0)Ra(221872,221536,662,221888);g=a+536|0;if(!d){a=1;return a|0}while(1){if((Xd[c[g>>2]&255](a,b,f,e)|0)!=1){b=0;d=6;break}if((d|0)==(f|0)){b=1;d=6;break}else{d=d-f|0;b=b+f|0}}if((d|0)==6)return b|0;return 0}function VM(a){a=a|0;b[a+98>>1]=(b[a+90>>1]|0)==-32692?1:3;b[a+84>>1]=16;b[a+86>>1]=2;return}function WM(a){a=a|0;var b=0,d=0,e=0;b=a+576|0;d=c[b>>2]|0;if(!d)Ra(234152,221536,1523,221856);c[a+672>>2]=c[d+24>>2];c[a+668>>2]=c[d+28>>2];e=c[d+12>>2]|0;if(!e){$J(d);c[b>>2]=0;nv(a);return}$J(e);$J(d);c[b>>2]=0;nv(a);return}function XM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+576>>2]|0;if((b|0)==65560){a=c[e>>2]|0;e=c[d>>2]|0;b=c[e>>2]|0;c[d>>2]=e+4;c[b>>2]=a;b=1;return b|0}else{b=Hd[c[e+24>>2]&255](a,b,d)|0;return b|0}return 0}function YM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;f=g;e=c[a+576>>2]|0;if((b|0)==65561){h=c[d>>2]|0;b=c[h>>2]|0;c[d>>2]=h+4;c[e+4>>2]=b;if(b>>>0<2){h=1;i=g;return h|0}h=c[a+628>>2]|0;c[f>>2]=b;Yv(h,221744,221808,f);h=0;i=g;return h|0}else if((b|0)==65560){h=c[d>>2]|0;b=c[h>>2]|0;c[d>>2]=h+4;c[e>>2]=b;if((b|0)==2){c[f>>2]=1;rv(a,277,f)|0;b=32;e=1}else if((b|0)==3){b=8;e=1}else if(!b){b=32;e=3}else if((b|0)==1){b=16;e=2}else{d=c[a+628>>2]|0;h=c[a>>2]|0;c[f>>2]=b;Yv(d,h,221760,f);h=0;i=g;return h|0}c[f>>2]=b;rv(a,258,f)|0;c[f>>2]=e;rv(a,339,f)|0;if(!(c[a+12>>2]&1024))b=-1;else b=ox(a)|0;c[a+496>>2]=b;c[a+580>>2]=Xw(a)|0;h=1;i=g;return h|0}else{h=Hd[c[e+28>>2]&255](a,b,d)|0;i=g;return h|0}return 0}function ZM(a){a=a|0;return 1}function _M(d){d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;f=d+576|0;e=c[f>>2]|0;do if(!e){e=_J(160)|0;c[f>>2]=e;if(!e){Yv(c[d+628>>2]|0,223880,223240,h);h=0;i=j;return h|0}else{c[e+124>>2]=0;c[e+104>>2]=0;Cw(d)|0;e=c[f>>2]|0;if(e){g=e;break}Ra(234176,223192,229,223880)}}else g=e;while(0);e=g+124|0;if(c[e>>2]|0){h=1;i=j;return h|0}f=_J(40952)|0;c[e>>2]=f;if(!f){Yv(c[d+628>>2]|0,223880,223896,h);h=0;i=j;return h|0}else e=255;while(1){h=e&255;a[f+(e<<3)+6>>0]=h;a[f+(e<<3)+7>>0]=h;b[f+(e<<3)+4>>1]=1;c[f+(e<<3)>>2]=0;if(!e)break;else e=e+-1|0}bK(f+2048|0,0,16);h=1;i=j;return h|0}function $M(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k;h=c[d+576>>2]|0;if(!h)Ra(234176,223192,267,223808);j=h+124|0;e=c[j>>2]|0;if(!e){Ed[c[d+508>>2]&511](d)|0;e=c[j>>2]|0;if(!e){d=0;i=k;return d|0}}f=c[d+588>>2]|0;if((a[f>>0]|0)==0?(a[f+1>>0]&1)!=0:0){f=h+104|0;if(!(c[f>>2]|0)){qx(c[d+628>>2]|0,223808,223824,g);c[d+532>>2]=135;c[d+540>>2]=135;c[d+548>>2]=135;Ed[c[d+508>>2]&511](d)|0;c[f>>2]=135;e=c[j>>2]|0}b[h+66>>1]=511}else{b[h+66>>1]=510;c[h+104>>2]=95}b[h+64>>1]=9;c[h+76>>2]=0;c[h+72>>2]=0;c[h+88>>2]=0;g=h+84|0;c[g>>2]=511;f=c[d+608>>2]|0;f=vfa(f|0,((f|0)<0)<<31>>31|0,3)|0;d=h+96|0;c[d>>2]=f;c[d+4>>2]=H;d=e+2064|0;c[h+116>>2]=d;bK(d,0,38888);d=c[j>>2]|0;c[h+112>>2]=d+-8;c[h+120>>2]=d+((c[g>>2]|0)+-1<<3);d=1;i=k;return d|0}function aN(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=i;i=i+16|0;O=P;D=c[f+576>>2]|0;if(!D)Ra(234176,223192,374,223440);C=D+124|0;if(!(c[C>>2]|0))Ra(223456,223192,375,223440);E=D+88|0;j=c[E>>2]|0;do if(j){k=c[D+108>>2]|0;l=(e[k+4>>1]|0)-j|0;if((l|0)<=(h|0)){g=g+l|0;j=l;m=g;do{m=m+-1|0;N=k;k=c[k>>2]|0;a[m>>0]=a[N+6>>0]|0;j=j+-1|0}while((j|0)!=0&(k|0)!=0);c[E>>2]=0;h=h-l|0;break}c[E>>2]=j+h;do{k=c[k>>2]|0;l=l+-1|0;j=(k|0)!=0}while((l|0)>(h|0)&j);if(!j){O=1;i=P;return O|0}l=h;j=g+h|0;do{j=j+-1|0;a[j>>0]=a[k+6>>0]|0;k=c[k>>2]|0;l=l+-1|0}while((l|0)!=0&(k|0)!=0);j=1;i=P;return j|0}while(0);F=f+604|0;j=c[F>>2]|0;G=D+64|0;n=e[G>>1]|0;I=D+72|0;r=c[I>>2]|0;J=D+76|0;p=c[J>>2]|0;K=D+84|0;o=c[K>>2]|0;L=D+112|0;m=c[L>>2]|0;M=D+116|0;k=c[M>>2]|0;N=D+120|0;l=c[N>>2]|0;a:do if((h|0)>0){B=D+96|0;b:while(1){u=B;t=c[u>>2]|0;u=c[u+4>>2]|0;v=((n|0)<0)<<31>>31;if(u>>>0>>0|(u|0)==(v|0)&t>>>0>>0){g=r;q=18;break}s=j+1|0;r=d[j>>0]|0|r<<8;q=p+8|0;if((q|0)<(n|0)){y=3;z=4;A=j+2|0;q=p+16|0;r=d[s>>0]|0|r<<8}else{y=2;z=3;A=s}p=q-n|0;w=r>>p&o;x=w&65535;v=xfa(t|0,u|0,n|0,v|0)|0;s=B;c[s>>2]=v;c[s+4>>2]=H;s=w&65535;if(x<<16>>16==257){j=A;g=r;break a}q=c[C>>2]|0;do if(x<<16>>16==256){k=q+2064|0;bK(k,0,38888);l=(c[C>>2]|0)+4080|0;t=B;s=c[t>>2]|0;t=c[t+4>>2]|0;if(t>>>0<0|(t|0)==0&s>>>0<9){j=A;g=r;q=24;break b}q=j+y|0;n=d[A>>0]|0|r<<8;o=p+8|0;if((o|0)<9){j=j+z|0;o=p+16|0;r=d[q>>0]|0|n<<8}else{j=q;r=n}p=o+-9|0;o=r>>p;q=o&511;n=q&65535;z=yfa(s|0,t|0,-9,-1)|0;A=B;c[A>>2]=z;c[A+4>>2]=H;if(n<<16>>16==257){n=9;o=511;g=r;break a}if((n&65535)>255){q=29;break b}a[g>>0]=o;n=9;o=511;h=h+-1|0;m=(c[C>>2]|0)+(q<<3)|0;g=g+1|0}else{u=q+(s<<3)|0;j=q+40952|0;if(!(k>>>0>=q>>>0&k>>>0>>0)){q=33;break b}c[k>>2]=m;if(!(m>>>0>=q>>>0&m>>>0>>0)){q=35;break b}j=a[m+7>>0]|0;a[k+7>>0]=j;b[k+4>>1]=(e[m+4>>1]|0)+1;if(u>>>0>>0)j=a[q+(s<<3)+7>>0]|0;a[k+6>>0]=j;k=k+8|0;if(k>>>0>l>>>0){n=n+1|0;n=(n|0)>12?12:n;o=1<>0]=w;j=A;h=h+-1|0;m=u;g=g+1|0;break}z=b[q+(s<<3)+4>>1]|0;s=z&65535;if(!(z<<16>>16)){q=42;break b}if((h|0)<(s|0)){m=u;t=k;j=A;s=l;q=44;break b}t=g+s|0;m=u;q=t;do{q=q+-1|0;j=m;m=c[m>>2]|0;a[q>>0]=a[j+6>>0]|0;j=(m|0)!=0}while(j&q>>>0>g>>>0);if(j){m=u;j=A;g=r;q=54;break b}j=A;h=h-s|0;m=u;g=t}while(0);if((h|0)<=0){g=r;break a}}if((q|0)==18){E=c[f+628>>2]|0;c[O>>2]=c[f+452>>2];qx(E,223440,223480,O);break}else if((q|0)==24){n=c[f+628>>2]|0;c[O>>2]=c[f+452>>2];qx(n,223440,223480,O);n=9;o=511;break}else if((q|0)==29){M=c[f+628>>2]|0;N=c[f>>2]|0;c[O>>2]=c[f+444>>2];Yv(M,N,223536,O);O=0;i=P;return O|0}else if((q|0)==33){N=c[f+628>>2]|0;c[O>>2]=c[f+444>>2];Yv(N,223440,223584,O);O=0;i=P;return O|0}else if((q|0)==35){N=c[f+628>>2]|0;c[O>>2]=c[f+444>>2];Yv(N,223440,223584,O);O=0;i=P;return O|0}else if((q|0)==42){N=c[f+628>>2]|0;c[O>>2]=c[f+444>>2];Yv(N,223440,223624,O);O=0;i=P;return O|0}else if((q|0)==44){c[D+108>>2]=m;k=m;do{k=c[k>>2]|0;if(!k){k=t;l=s;g=r;break a}}while((e[k+4>>1]|0|0)>(h|0));c[E>>2]=h;q=h;h=g+h|0;do{h=h+-1|0;a[h>>0]=a[k+6>>0]|0;k=c[k>>2]|0;q=q+-1|0;l=(k|0)!=0}while((q|0)!=0&l);if(!l){k=t;l=s;g=r;h=q;break}k=c[f+628>>2]|0;c[O>>2]=c[f+444>>2];Yv(k,223440,223752,O);k=t;l=s;g=r;h=q;break}else if((q|0)==54){E=c[f+628>>2]|0;c[O>>2]=c[f+444>>2];Yv(E,223440,223752,O);break}}else g=r;while(0);c[F>>2]=j;b[G>>1]=n;c[I>>2]=g;c[J>>2]=p;c[K>>2]=o;c[L>>2]=m;c[M>>2]=k;c[N>>2]=l;if((h|0)<=0){O=1;i=P;return O|0}N=c[f+628>>2]|0;c[O>>2]=c[f+444>>2];M=O+4|0;c[M>>2]=h;c[M+4>>2]=((h|0)<0)<<31>>31;Yv(N,223440,223696,O);O=0;i=P;return O|0}function bN(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=c[a+576>>2]|0;if(!b)Ra(234176,223192,783,223392);e=_J(72008)|0;c[b+152>>2]=e;if(e){e=1;i=d;return e|0}Yv(c[a+628>>2]|0,223392,223408,d);e=0;i=d;return e|0}function cN(a,d){a=a|0;d=d|0;var e=0,f=0;f=c[a+576>>2]|0;if(!f)Ra(234176,223192,802,223376);d=f+152|0;e=c[d>>2]|0;if(!e){Ed[c[a+516>>2]&511](a)|0;e=c[d>>2]|0}b[f+64>>1]=9;b[f+66>>1]=511;b[f+68>>1]=258;c[f+76>>2]=0;c[f+72>>2]=0;c[f+132>>2]=1e4;c[f+136>>2]=0;c[f+140>>2]=0;c[f+144>>2]=0;c[f+148>>2]=(c[a+588>>2]|0)+((c[a+592>>2]|0)+-5);d=e+72e3|0;a=8993;while(1){a=a+-8|0;c[d+-56>>2]=-1;c[d+-48>>2]=-1;c[d+-40>>2]=-1;c[d+-32>>2]=-1;c[d+-24>>2]=-1;c[d+-16>>2]=-1;c[d+-8>>2]=-1;c[d>>2]=-1;if((a|0)<=-1)break;else d=d+-64|0}c[e>>2]=-1;c[f+128>>2]=65535;return 1}function dN(b){b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0;f=c[b+576>>2]|0;d=c[b+604>>2]|0;h=c[f+76>>2]|0;g=c[f+72>>2]|0;k=e[f+64>>1]|0;if(d>>>0>(c[f+148>>2]|0)>>>0){j=b+588|0;c[b+608>>2]=d-(c[j>>2]|0);vx(b)|0;d=c[j>>2]|0}j=f+128|0;f=c[j>>2]|0;if((f|0)==65535){f=g;j=d}else{f=f|g<>0]=f>>h;if((h|0)>7){h=g+-16|0;a[i>>0]=f>>h;d=d+2|0}else d=i;c[j>>2]=65535;j=d}i=f<>0]=i>>g;if((g|0)>7){g=f+-16|0;a[d>>0]=i>>g;h=d;d=j+2|0}else h=j;if((g|0)<=0){k=d;j=b+588|0;j=c[j>>2]|0;j=k-j|0;k=b+608|0;c[k>>2]=j;return 1}a[d>>0]=i<<8-g;k=h+2|0;j=b+588|0;j=c[j>>2]|0;j=k-j|0;k=b+608|0;c[k>>2]=j;return 1}function eN(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;q=c[f+576>>2]|0;if(!q){Z=0;return Z|0}N=q+152|0;if(!(c[N>>2]|0))Ra(223312,223192,880,223336);O=q+140|0;m=c[O>>2]|0;P=q+144|0;o=c[P>>2]|0;E=q+132|0;r=c[E>>2]|0;F=q+72|0;l=c[F>>2]|0;G=q+76|0;j=c[G>>2]|0;H=q+68|0;s=e[H>>1]|0;I=q+66|0;t=e[I>>1]|0;J=q+64|0;u=e[J>>1]|0;K=f+604|0;n=c[K>>2]|0;L=c[q+148>>2]|0;M=q+128|0;D=c[M>>2]|0;i=D&65535;if((D&65535|0)==65535&(h|0)>0){l=l<>0]=l>>j;if((j|0)>7){j=i+-16|0;a[k>>0]=l>>j;k=n+2|0}p=g+1|0;h=h+-1|0;i=d[g>>0]|0;m=m+1|0;n=u+o|0}else{p=g;k=n;n=o}a:do if((h|0)>0){C=f+588|0;D=f+608|0;B=q+136|0;A=m;b:while(1){q=a[p>>0]|0;p=p+1|0;m=q&255;h=h+-1|0;y=A+1|0;o=i&65535;v=(m<<12)+o|0;m=m<<5;i=m^o;w=c[N>>2]|0;g=c[w+(i<<3)>>2]|0;c:do if((g|0)!=(v|0)){d:do if((g|0)>-1){g=(m|0)==(o|0)?1:9001-i|0;while(1){i=i-g|0;i=(i|0)<0?i+9001|0:i;m=c[w+(i<<3)>>2]|0;if((m|0)==(v|0))break;if((m|0)<=-1)break d}g=r;i=b[w+(i<<3)+4>>1]|0;o=y;q=u;break c}while(0);if(k>>>0>L>>>0){c[D>>2]=k-(c[C>>2]|0);vx(f)|0;k=c[C>>2]|0}x=l<>0]=x>>j;if((j|0)>7){j=l+-16|0;a[m>>0]=x>>j;z=m;m=k+2|0}else z=k;n=u+n|0;o=q&255;k=s+1|0;b[w+(i<<3)+4>>1]=s;c[w+(i<<3)>>2]=v;if((k|0)==4094){i=c[N>>2]|0;k=i+72e3|0;l=8993;while(1){l=l+-8|0;c[k+-56>>2]=-1;c[k+-48>>2]=-1;c[k+-40>>2]=-1;c[k+-32>>2]=-1;c[k+-24>>2]=-1;c[k+-16>>2]=-1;c[k+-8>>2]=-1;c[k>>2]=-1;if((l|0)<=-1)break;else k=k+-64|0}c[i>>2]=-1;c[B>>2]=0;l=x<>0]=l>>j;if((j|0)<=7){g=r;i=o;s=258;o=0;t=511;q=9;n=u;break}j=i+-16|0;a[k>>0]=l>>j;g=r;i=o;s=258;o=0;t=511;q=9;k=z+3|0;n=u;break}if((s|0)>=(t|0)){l=u+1|0;if((l|0)>=13)break b;g=r;i=o;s=k;o=y;t=(1<=(r|0)){g=A+10001|0;if((A|0)>8388606){i=n>>8;if(!i)i=2147483647;else i=(y|0)/(i|0)|0}else i=(y<<8|0)/(n|0)|0;if((i|0)>(c[B>>2]|0)){c[B>>2]=i;i=o;s=k;o=y;q=u;l=x;k=m;break}i=c[N>>2]|0;k=i+72e3|0;l=8993;while(1){l=l+-8|0;c[k+-56>>2]=-1;c[k+-48>>2]=-1;c[k+-40>>2]=-1;c[k+-32>>2]=-1;c[k+-24>>2]=-1;c[k+-16>>2]=-1;c[k+-8>>2]=-1;c[k>>2]=-1;if((l|0)<=-1)break;else k=k+-64|0}c[i>>2]=-1;c[B>>2]=0;l=x<>0]=l>>j;if((j|0)>7){j=i+-16|0;a[k>>0]=l>>j;i=o;s=258;o=0;t=511;q=9;k=z+3|0;n=u}else{i=o;s=258;o=0;t=511;q=9;n=u}}else{g=r;i=o;s=k;o=y;q=u;l=x;k=m}}else{g=r;i=b[w+(i<<3)+4>>1]|0;o=y;q=u}while(0);if((h|0)<=0){Q=g;R=i;S=s;T=o;U=t;V=q;W=j;X=l;Y=k;Z=n;break a}else{r=g;A=o;u=q}}Ra(223352,223192,978,223336)}else{Q=r;R=i;S=s;T=m;U=t;V=u;W=j;X=l;Y=k;Z=n}while(0);c[O>>2]=T;c[P>>2]=Z;c[E>>2]=Q;c[M>>2]=R&65535;c[F>>2]=X;c[G>>2]=W;b[H>>1]=S;b[I>>1]=U;b[J>>1]=V;c[K>>2]=Y;Z=1;return Z|0}function fN(a){a=a|0;var b=0,d=0,e=0;Dw(a)|0;e=a+576|0;b=c[e>>2]|0;if(!b)Ra(223272,223192,1083,223296);d=c[b+124>>2]|0;if(d){$J(d);b=c[e>>2]|0}d=c[b+152>>2]|0;if(!d){d=b;$J(d);c[e>>2]=0;nv(a);return}$J(d);d=c[e>>2]|0;$J(d);c[e>>2]=0;nv(a);return}function gN(a,d){a=a|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;d=b[a+84>>1]|0;if(d<<16>>16==2){a=1;i=f;return a|0}a=c[a+628>>2]|0;c[e>>2]=d&65535;Yv(a,223984,224e3,e);a=0;i=f;return a|0}function hN(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;z=C;j=(f|0)>0;if(j)sfa(e|0,-1,f|0)|0;A=b+604|0;B=b+608|0;y=c[b+580>>2]|0;if((f|0)%(y|0)|0){Yv(c[b+628>>2]|0,223928,232664,z);B=0;i=C;return B|0}g=c[B>>2]|0;h=c[A>>2]|0;a:do if((g|0)>0&j){v=b+56|0;w=b+12|0;x=b+68|0;u=y+1|0;t=e;b:while(1){j=h+1|0;e=d[h>>0]|0;l=g+-1|0;c:do if(!e){if((g|0)<=(y|0))break b;cK(t,j,y);h=h+u|0;g=l-y|0}else if((e|0)==64){if((g|0)<5)break b;j=(d[j>>0]|0)<<8|(d[h+2>>0]|0);k=(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);e=k+4|0;if((g|0)<=(e|0)|(k+j|0)>(y|0))break b;cK(t+j|0,h+5|0,k);h=h+(k+5)|0;g=l-e|0}else{s=c[((c[w>>2]&1024|0)==0?v:x)>>2]|0;g=l;l=0;k=t;while(1){r=e>>>6;m=e&63;e=l>>>0>>0;d:do if((m|0)!=0&e){o=r<<6&255;p=r<<4;q=r<<2;n=k;while(1){while(1){m=m+-1|0;k=l+1|0;e=l&3;if((e|0)==2)a[n>>0]=d[n>>0]|0|q;else if((e|0)==1)a[n>>0]=d[n>>0]|0|p;else if(!e)a[n>>0]=o;else if((e|0)==3){l=k;break}e=k>>>0>>0;if(!((m|0)>0&e)){l=k;k=n;break d}else l=k}k=n+1|0;a[n>>0]=d[n>>0]|0|r;e=l>>>0>>0;if((m|0)>0&e)n=k;else break}}while(0);if(!e){h=j;break c}if(!g)break b;e=d[j>>0]|0;r=j;j=h+2|0;g=g+-1|0;h=r}}while(0);f=f-y|0;if(!((g|0)>0&(f|0)>0))break a;else t=t+y|0}B=c[b+628>>2]|0;c[z>>2]=c[b+444>>2];Yv(B,223928,223944,z);B=0;i=C;return B|0}while(0);c[A>>2]=h;c[B>>2]=g;B=1;i=C;return B|0}function iN(a){a=a|0;return 1}function jN(a){a=a|0;var b=0;b=i;i=i+16|0;qx(c[a+628>>2]|0,227688,227712,b);i=b;return 1}function kN(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0;K=i;i=i+16|0;J=K;I=f+576|0;F=c[I>>2]|0;if(!(a[F+226>>0]|0))r_(f);do if(!(a[F+488>>0]|0)){n=c[I>>2]|0;m=n+488|0;if(a[m>>0]|0)Ra(225528,224064,1040,225552);h=c[f+56>>2]|0;c[n+184>>2]=h;j=c[f+60>>2]|0;c[n+188>>2]=j;if(!(c[f+12>>2]&1024)){c[n+192>>2]=h;k=c[f+100>>2]|0;c[n+196>>2]=k;c[n+200>>2]=j}else{h=c[f+68>>2]|0;c[n+192>>2]=h;k=c[f+72>>2]|0;c[n+196>>2]=k;E=j+-1+k|0;c[n+200>>2]=E-((E>>>0)%(k>>>0)|0)}l=b[f+98>>1]|0;do if(l<<16>>16==1){a[n+204>>0]=1;a[n+205>>0]=0;a[n+206>>0]=1;a[n+228>>0]=1;a[n+229>>0]=1}else if(l<<16>>16==3){a[n+204>>0]=3;a[n+205>>0]=0;l=n+206|0;if((b[f+126>>1]|0)==1){a[l>>0]=3;break}else{a[l>>0]=1;break}}else{I=c[f+628>>2]|0;c[J>>2]=d[n+204>>0];Yv(I,225552,225576,J);J=0;i=K;return J|0}while(0);do if(k>>>0>>0){l=d[n+229>>0]<<3;if(!((k>>>0)%(l>>>0)|0)){E=d[n+228>>0]<<3;b[n+360>>1]=da((k>>>0)/(l>>>0)|0,((h+-1+E|0)>>>0)/(E>>>0)|0)|0;break}Yv(c[f+628>>2]|0,225552,225640,J);J=0;i=K;return J|0}while(0);if(!(s_(f)|0)){J=0;i=K;return J|0}else{a[n+392>>0]=1;c[n+396>>2]=c[n+1188>>2];c[n+400>>2]=c[n+1192>>2];v=n+1200|0;E=e[n+1224>>1]|0;v=xfa(c[v>>2]|0,c[v+4>>2]|0,E|0,0)|0;A=n+408|0;c[A>>2]=v;c[A+4>>2]=H;A=n+1216|0;A=yfa(E|0,0,c[A>>2]|0,c[A+4>>2]|0)|0;E=n+416|0;c[E>>2]=A;c[E+4>>2]=H;a[m>>0]=1;break}}while(0);u=g&65535;v=F+392|0;a:do if(!(a[v+(u<<5)>>0]|0)){s=c[I>>2]|0;if(!(g<<16>>16))Ra(225288,224064,1102,225296);if((g&65535)>=3)Ra(225320,224064,1103,225296);t=s+392|0;if(!(a[t>>0]|0))Ra(225328,224064,1104,225296);if(a[t+(u<<5)>>0]|0)Ra(225352,224064,1105,225296);l=u+255&255;while(1){h=l&255;if(!(a[t+(h<<5)>>0]|0))l=l+-1<<24>>24;else break}r=s+205|0;a[r>>0]=l;j=s+1188|0;c[j>>2]=c[t+(h<<5)+4>>2];k=s+1192|0;c[k>>2]=c[t+(h<<5)+8>>2];n=t+(h<<5)+16|0;o=c[n+4>>2]|0;q=s+1200|0;E=q;c[E>>2]=c[n>>2];c[E+4>>2]=o;a[s+1208>>0]=0;E=t+(h<<5)+24|0;o=c[E+4>>2]|0;n=s+1216|0;m=n;c[m>>2]=c[E>>2];c[m+4>>2]=o;m=s+1224|0;b[m>>1]=0;o=s+1228|0;c[o>>2]=0;if(h>>>0>>0){h=0;b:while(1){if(!(h<<16>>16)){if(!(t_(s)|0)){G=0;y=105;break}h=b[m>>1]|0;if(!(h<<16>>16)){y=36;break}}p=c[o>>2]|0;E=a[p>>0]|0;p=p+1|0;c[o>>2]=p;h=h+-1<<16>>16;b[m>>1]=h;if(E<<24>>24!=-1)continue;while(1){if(!(h<<16>>16)){if(!(t_(s)|0)){G=0;y=105;break b}h=b[m>>1]|0;if(!(h<<16>>16)){y=42;break b}p=c[o>>2]|0}l=a[p>>0]|0;p=p+1|0;c[o>>2]=p;h=h+-1<<16>>16;b[m>>1]=h;if(l<<24>>24==-38)break;else if(l<<24>>24!=-1)continue b}a[r>>0]=(a[r>>0]|0)+1<<24>>24;if(!(u_(f)|0)){G=0;y=105;break}E=d[r>>0]|0;a[t+(E<<5)>>0]=1;c[t+(E<<5)+4>>2]=c[j>>2];E=d[r>>0]|0;c[t+(E<<5)+8>>2]=c[k>>2];p=q;h=b[m>>1]|0;A=h&65535;p=xfa(c[p>>2]|0,c[p+4>>2]|0,A|0,0)|0;l=t+(E<<5)+16|0;c[l>>2]=p;c[l+4>>2]=H;l=n;l=yfa(A|0,0,c[l>>2]|0,c[l+4>>2]|0)|0;A=t+(E<<5)+24|0;c[A>>2]=l;c[A+4>>2]=H;if(E>>>0>=u>>>0)break a}if((y|0)==36)Ra(225e3,224064,2010,225512);else if((y|0)==42)Ra(225e3,224064,2010,225512);else if((y|0)==105){i=K;return G|0}}}while(0);E=c[((c[f+12>>2]&1024|0)==0?f+452|0:f+492|0)>>2]|0;k=F+489|0;j=F+490|0;do if(!(a[k>>0]|0))y=54;else{if((b[j>>1]|0)==g<<16>>16?(w=c[F+492>>2]|0,w>>>0<=E>>>0):0){x=w;break}do if(a[F+496>>0]|0){l=c[I>>2]|0;h=l+496|0;if(!(a[h>>0]|0))Ra(224448,224064,1245,224480);else{eF(l+632|0);a[h>>0]=0;break}}while(0);a[k>>0]=0;y=54}while(0);do if((y|0)==54){a[F+205>>0]=g;b[j>>1]=g;A=F+492|0;c[A>>2]=da(c[f+164>>2]|0,u)|0;h=F+1208|0;if(a[h>>0]|0){l=F+1200|0;x=l;j=F+1224|0;x=xfa(c[x>>2]|0,c[x+4>>2]|0,e[j>>1]|0,0)|0;m=v+(u<<5)+16|0;k=c[m>>2]|0;m=c[m+4>>2]|0;if(!((x|0)==(k|0)&(H|0)==(m|0))){z=l;B=j;C=k;D=m;y=57}}else{D=v+(u<<5)+16|0;z=F+1200|0;B=F+1224|0;C=c[D>>2]|0;D=c[D+4>>2]|0;y=57}if((y|0)==57){c[F+1188>>2]=c[v+(u<<5)+4>>2];c[F+1192>>2]=c[v+(u<<5)+8>>2];c[z>>2]=C;c[z+4>>2]=D;a[h>>0]=0;z=v+(u<<5)+24|0;C=c[z+4>>2]|0;D=F+1216|0;c[D>>2]=c[z>>2];c[D+4>>2]=C;b[B>>1]=0;c[F+1228>>2]=0}y=c[I>>2]|0;h=y+496|0;if(a[h>>0]|0){J=0;i=K;return J|0}c[y+3280>>2]=0;a[y+362>>0]=0;D=y+500|0;NF(D)|0;c[y+508>>2]=280;c[D>>2]=281;z=y+632|0;c[z>>2]=D;c[y+644>>2]=f;if(!(x_(y,z)|0)){J=0;i=K;return J|0}a[h>>0]=1;c[y+1092>>2]=0;c[y+1096>>2]=282;c[y+1100>>2]=221;c[y+1104>>2]=122;c[y+1108>>2]=255;c[y+1112>>2]=283;c[y+656>>2]=y+1088;if(!(D_(y,z)|0)){J=0;i=K;return J|0}h=a[y+206>>0]|0;if((a[y+230>>0]|0)==0&(h&255)>1){a[y+697>>0]=1;a[y+704>>0]=0;a[y+497>>0]=0;v=y+1116|0;if(!(a[v>>0]|0)){h=y+1148|0;if(c[h>>2]|0)Ra(224784,224064,1185,224824);n=y+1168|0;if(c[n>>2]|0)Ra(224848,224064,1186,224824);w=y+192|0;g=y+228|0;k=d[g>>0]|0;D=k<<3;m=(c[w>>2]|0)+-1+D|0;D=m-((m>>>0)%(D>>>0)|0)|0;m=y+1120|0;c[m>>2]=D;x=y+229|0;l=d[x>>0]<<3;p=y+1124|0;c[p>>2]=l;k=(D>>>0)/(k>>>0)|0;s=y+1128|0;c[s>>2]=k;q=y+1132|0;c[q>>2]=8;D=da(l,D)|0;l=y+1136|0;c[l>>2]=D;j=y+1140|0;c[j>>2]=k<<3;k=D+(k<<4)|0;c[y+1144>>2]=k;k=_J(k)|0;c[h>>2]=k;if(!k){Yv(c[f+628>>2]|0,224824,313360,J);J=0;i=K;return J|0}r=y+1152|0;c[r>>2]=k;o=c[l>>2]|0;t=y+1156|0;c[t>>2]=k+o;u=y+1160|0;c[u>>2]=k+((c[j>>2]|0)+o);o=(c[p>>2]|0)+3+(c[q>>2]<<1)|0;c[y+1164>>2]=o;o=_J(o<<2)|0;c[n>>2]=o;if(!o){Yv(c[f+628>>2]|0,224824,313360,J);J=0;i=K;return J|0}k=o+12|0;c[o>>2]=k;p=c[p>>2]|0;D=p+3|0;c[o+4>>2]=(c[n>>2]|0)+(D<<2);q=c[q>>2]|0;c[o+8>>2]=(c[n>>2]|0)+(q+D<<2);if(p){l=c[m>>2]|0;j=p>>>0>1?(p<<2)+12|0:16;h=0;while(1){c[k>>2]=(c[r>>2]|0)+(da(h,l)|0);h=h+1|0;if((h|0)==(p|0))break;else k=k+4|0}k=o+j|0}if(q){n=c[s>>2]|0;h=q>>>0>1;l=k;j=0;while(1){c[l>>2]=(c[t>>2]|0)+(da(j,n)|0);j=j+1|0;if((j|0)==(q|0))break;else l=l+4|0}h=k+((h?q:1)<<2)|0;l=0;while(1){c[h>>2]=(c[u>>2]|0)+(da(l,n)|0);l=l+1|0;if((l|0)==(q|0))break;else h=h+4|0}}B=d[g>>0]|0;C=(((c[w>>2]|0)+-1+B|0)>>>0)/(B>>>0)|0;c[y+1172>>2]=C;c[y+1176>>2]=0;D=d[x>>0]|0;c[y+1180>>2]=da((da(D,B)|0)+2|0,C)|0;c[y+1184>>2]=(((c[y+196>>2]|0)+-1+D|0)>>>0)/(D>>>0)|0;a[v>>0]=1}}else{c[y+672>>2]=0;c[y+676>>2]=0;a[y+497>>0]=1;c[y+1180>>2]=da(c[y+192>>2]|0,h&255)|0;c[y+1184>>2]=c[y+196>>2]}if(!(E_(y,z)|0)){J=0;i=K;return J|0}else{a[y+489>>0]=1;x=c[A>>2]|0;break}}while(0);q=F+492|0;if(x>>>0>=E>>>0){J=1;i=K;return J|0}o=F+497|0;c:while(1){p=c[I>>2]|0;d:do if(!(a[o>>0]|0)){h=c[p+1184>>2]|0;n=p+1176|0;l=c[n>>2]|0;m=p+1132|0;k=c[m>>2]|0;do if(l){j=k-l|0;if(h>>>0>j>>>0){c[n>>2]=0;h=h-j|0;break}else{F=l+h|0;c[n>>2]=(F|0)==(k|0)?0:F;break d}}while(0);if(h>>>0>=k>>>0){l=p+632|0;j=p+1168|0;k=p+229|0;do{if(!(F_(p,l,c[j>>2]|0,d[k>>0]<<3)|0)){G=0;y=105;break c}F=c[m>>2]|0;h=h-F|0}while(h>>>0>=F>>>0)}if(h){if(!(F_(p,p+632|0,c[p+1168>>2]|0,d[p+229>>0]<<3)|0)){G=0;y=105;break c}c[n>>2]=h}}else{h=p+5332|0;if((c[h>>2]|0)==0?(F=_J(c[p+1180>>2]|0)|0,c[h>>2]=F,(F|0)==0):0){y=101;break c}j=p+632|0;k=p+1184|0;if(c[k>>2]|0){l=0;do{l=l+1|0;if(!(G_(p,j,h)|0)){G=0;y=105;break c}}while(l>>>0<(c[k>>2]|0)>>>0)}}while(0);F=(c[q>>2]|0)+1|0;c[q>>2]=F;if(F>>>0>=E>>>0){G=1;y=105;break}}if((y|0)==101){Yv(c[f+628>>2]|0,224752,313360,J);J=0;i=K;return J|0}else if((y|0)==105){i=K;return G|0}return 0}function lN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;e=c[b+576>>2]|0;f=e+492|0;d=(c[f>>2]|0)+1|0;c[f>>2]=d;if((d>>>0)%((c[b+164>>2]|0)>>>0)|0)return;d=e+496|0;if(!(a[d>>0]|0))Ra(224448,224064,891,224656);eF(e+632|0);a[d>>0]=0;a[e+489>>0]=0;return}function mN(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;l=F;j=F+4|0;E=c[b+576>>2]|0;if(a[E+497>>0]|0){g=E+1180|0;if((f>>>0)%((c[g>>2]|0)>>>0)|0){Yv(c[b+628>>2]|0,224712,224672,l);E=0;i=F;return E|0}if((f|0)<=0)Ra(224704,224064,869,224712);c[j>>2]=e;h=E+632|0;k=f;while(1){if(!(G_(E,h,j)|0)){g=0;h=28;break}D=c[g>>2]|0;c[j>>2]=(c[j>>2]|0)+D;k=k-D|0;if((k|0)<=0){g=1;h=28;break}}if((h|0)==28){i=F;return g|0}}D=E+1180|0;if((f>>>0)%((c[D>>2]|0)>>>0)|0){Yv(c[b+628>>2]|0,224736,224672,l);E=0;i=F;return E|0}if((f|0)<=0)Ra(224704,224064,821,224736);r=E+632|0;s=E+1168|0;t=E+1176|0;u=E+229|0;v=E+1152|0;w=E+1120|0;x=E+1156|0;y=E+1128|0;z=E+1160|0;A=E+1172|0;B=E+1132|0;C=E+228|0;g=c[t>>2]|0;while(1){if(!g){if(!(F_(E,r,c[s>>2]|0,d[u>>0]<<3)|0)){g=0;h=28;break}g=c[t>>2]|0}k=da(c[y>>2]|0,g)|0;if(c[A>>2]|0){h=a[u>>0]|0;o=da(h&255,g)|0;q=(c[x>>2]|0)+k|0;n=(c[z>>2]|0)+k|0;o=(c[v>>2]|0)+(da(o,c[w>>2]|0)|0)|0;g=e;p=1;while(1){k=a[C>>0]|0;if(h<<24>>24){b=k;l=o;m=0;while(1){if(!(b<<24>>24)){k=0;j=l}else{j=g;k=l;b=0;while(1){h=k+1|0;g=j+1|0;a[j>>0]=a[k>>0]|0;b=b+1<<24>>24;k=a[C>>0]|0;if((b&255)>=(k&255)){j=h;break}else{j=g;k=h}}h=a[u>>0]|0}m=m+1<<24>>24;if((m&255)>=(h&255))break;else{b=k;l=j+((c[w>>2]|0)-(k&255))|0}}}a[g>>0]=a[q>>0]|0;a[g+1>>0]=a[n>>0]|0;if(p>>>0>=(c[A>>2]|0)>>>0)break;h=a[u>>0]|0;q=q+1|0;n=n+1|0;o=o+(k&255)|0;g=g+2|0;p=p+1|0}g=c[t>>2]|0}g=g+1|0;g=(g|0)==(c[B>>2]|0)?0:g;c[t>>2]=g;k=c[D>>2]|0;f=f-k|0;if((f|0)<=0){g=1;h=28;break}else e=e+k|0}if((h|0)==28){i=F;return g|0}return 0}function nN(a){a=a|0;var b=0;b=i;i=i+16|0;Yv(c[a+628>>2]|0,224632,224528,b);i=b;return 0}function oN(a,b){a=a|0;b=b|0;b=i;i=i+16|0;Yv(c[a+628>>2]|0,224616,224528,b);i=b;return 0}function pN(a){a=a|0;var b=0;b=i;i=i+16|0;Yv(c[a+628>>2]|0,224512,224528,b);i=b;return 0}function qN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=i;i=i+16|0;Yv(c[a+628>>2]|0,224600,224528,e);i=e;return 0}function rN(b){b=b|0;var d=0,e=0,f=0,g=0;f=b+576|0;g=c[f>>2]|0;if(!g)return;c[b+672>>2]=c[g+160>>2];c[b+668>>2]=c[g+164>>2];c[b+676>>2]=c[g+168>>2];d=c[g+312>>2]|0;if(d)$J(d);d=c[g+316>>2]|0;if(d)$J(d);d=c[g+320>>2]|0;if(d)$J(d);d=c[g+324>>2]|0;if(d)$J(d);d=c[g+328>>2]|0;if(d)$J(d);d=c[g+332>>2]|0;if(d)$J(d);d=c[g+336>>2]|0;if(d)$J(d);d=c[g+340>>2]|0;if(d)$J(d);d=c[g+344>>2]|0;if(d)$J(d);d=c[g+348>>2]|0;if(d)$J(d);d=c[g+352>>2]|0;if(d)$J(d);d=c[g+356>>2]|0;if(d)$J(d);do if(a[g+496>>0]|0){e=c[f>>2]|0;d=e+496|0;if(!(a[d>>0]|0))Ra(224448,224064,1245,224480);else{eF(e+632|0);a[d>>0]=0;break}}while(0);d=c[g+1148>>2]|0;if(d)$J(d);d=c[g+1168>>2]|0;if(d)$J(d);d=c[g+5332>>2]|0;if(d)$J(d);$J(g);c[f>>2]=0;nv(b);return}function sN(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0;h=c[e+576>>2]|0;switch(f|0){case 515:{e=b[h+360>>1]|0;h=c[g>>2]|0;f=c[h>>2]|0;c[g>>2]=h+4;b[f>>1]=e;f=1;return f|0}case 519:{f=d[h+231>>0]|0;i=c[g>>2]|0;e=c[i>>2]|0;c[g>>2]=i+4;c[e>>2]=f;e=c[g>>2]|0;f=c[e>>2]|0;c[g>>2]=e+4;c[f>>2]=h+240;f=1;return f|0}case 512:{f=d[h+224>>0]|0;e=c[g>>2]|0;i=c[e>>2]|0;c[g>>2]=e+4;b[i>>1]=f;i=1;return i|0}case 521:{i=d[h+233>>0]|0;e=c[g>>2]|0;f=c[e>>2]|0;c[g>>2]=e+4;c[f>>2]=i;f=c[g>>2]|0;i=c[f>>2]|0;c[g>>2]=f+4;c[i>>2]=h+288;i=1;return i|0}case 520:{i=d[h+232>>0]|0;e=c[g>>2]|0;f=c[e>>2]|0;c[g>>2]=e+4;c[f>>2]=i;f=c[g>>2]|0;i=c[f>>2]|0;c[g>>2]=f+4;c[i>>2]=h+264;i=1;return i|0}case 513:{f=h+208|0;e=c[f>>2]|0;f=c[f+4>>2]|0;h=c[g>>2]|0;i=c[h>>2]|0;c[g>>2]=h+4;c[i>>2]=e;c[i+4>>2]=f;i=1;return i|0}case 514:{f=h+216|0;e=c[f>>2]|0;f=c[f+4>>2]|0;h=c[g>>2]|0;i=c[h>>2]|0;c[g>>2]=h+4;c[i>>2]=e;c[i+4>>2]=f;i=1;return i|0}case 530:{if(!(a[h+226>>0]|0))r_(e);e=d[h+228>>0]|0;i=c[g>>2]|0;f=c[i>>2]|0;c[g>>2]=i+4;b[f>>1]=e;f=d[h+229>>0]|0;e=c[g>>2]|0;i=c[e>>2]|0;c[g>>2]=e+4;b[i>>1]=f;i=1;return i|0}default:{i=Hd[c[h+160>>2]&255](e,f,g)|0;return i|0}}return 0}function tN(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+16|0;h=m;j=c[e+576>>2]|0;switch(f|0){case 514:{h=c[g>>2]|0;k=h;l=c[k>>2]|0;k=c[k+4>>2]|0;c[g>>2]=h+8;g=j+216|0;c[g>>2]=l;c[g+4>>2]=k;break}case 521:{k=c[g>>2]|0;l=c[k>>2]|0;c[g>>2]=k+4;if(l)if(l>>>0>3){Yv(c[e+628>>2]|0,228064,228160,h);e=0;i=m;return e|0}else{a[j+233>>0]=l;h=c[g>>2]|0;k=c[h>>2]|0;c[g>>2]=h+4;h=j+288|0;j=0;do{o=k+(j<<3)|0;n=c[o+4>>2]|0;g=h+(j<<3)|0;c[g>>2]=c[o>>2];c[g+4>>2]=n;j=j+1|0}while((j|0)!=(l|0))}break}case 513:{o=c[g>>2]|0;n=o;k=c[n>>2]|0;n=c[n+4>>2]|0;c[g>>2]=o+8;o=j+208|0;c[o>>2]=k;c[o+4>>2]=n;break}case 515:{n=c[g>>2]|0;o=c[n>>2]|0;c[g>>2]=n+4;b[j+360>>1]=o;break}case 519:{o=c[g>>2]|0;l=c[o>>2]|0;c[g>>2]=o+4;if(l)if(l>>>0>3){Yv(c[e+628>>2]|0,228064,228080,h);o=0;i=m;return o|0}else{a[j+231>>0]=l;h=c[g>>2]|0;k=c[h>>2]|0;c[g>>2]=h+4;h=j+240|0;j=0;do{n=k+(j<<3)|0;g=c[n+4>>2]|0;o=h+(j<<3)|0;c[o>>2]=c[n>>2];c[o+4>>2]=g;j=j+1|0}while((j|0)!=(l|0))}break}case 520:{o=c[g>>2]|0;l=c[o>>2]|0;c[g>>2]=o+4;if(l)if(l>>>0>3){Yv(c[e+628>>2]|0,228064,228120,h);o=0;i=m;return o|0}else{a[j+232>>0]=l;h=c[g>>2]|0;k=c[h>>2]|0;c[g>>2]=h+4;h=j+264|0;j=0;do{n=k+(j<<3)|0;g=c[n+4>>2]|0;o=h+(j<<3)|0;c[o>>2]=c[n>>2];c[o+4>>2]=g;j=j+1|0}while((j|0)!=(l|0))}break}case 530:{a[j+227>>0]=1;n=c[g>>2]|0;k=c[n>>2]|0;c[g>>2]=n+4;n=j+228|0;a[n>>0]=k;k=c[g>>2]|0;o=c[k>>2]|0;c[g>>2]=k+4;a[j+229>>0]=o;b[e+192>>1]=d[n>>0]|0;b[e+194>>1]=o&255;break}case 512:{n=c[g>>2]|0;o=c[n>>2]|0;c[g>>2]=n+4;a[j+224>>0]=o;break}default:{o=Hd[c[j+164>>2]&255](e,f,g)|0;i=m;return o|0}}h=Iv(e,f)|0;if(!h){o=0;i=m;return o|0}g=b[h+24>>1]|0;o=e+(((g&65535)>>>5&65535)<<2)+40|0;c[o>>2]=1<<(g&31)|c[o>>2];o=e+12|0;c[o>>2]=c[o>>2]|8;o=1;i=m;return o|0}function uN(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=i;i=i+16|0;n=o;m=c[b+576>>2]|0;if(!m)Ra(227856,224064,616,227872);l=b+48|0;h=c[l>>2]|0;if(h&4){j=m+208|0;k=c[j+4>>2]|0;h=n;c[h>>2]=c[j>>2];c[h+4>>2]=k;Uc(f|0,227888,n|0)|0;h=c[l>>2]|0}if(h&8){j=m+216|0;k=c[j+4>>2]|0;h=n;c[h>>2]=c[j>>2];c[h+4>>2]=k;Uc(f|0,227920,n|0)|0;h=c[l>>2]|0}if(h&16){Xb(227960,14,1,f|0)|0;h=m+231|0;if(a[h>>0]|0){j=m+240|0;k=0;do{r=j+((k&255)<<3)|0;q=c[r+4>>2]|0;p=n;c[p>>2]=c[r>>2];c[p+4>>2]=q;Uc(f|0,227976,n|0)|0;k=k+1<<24>>24}while((k&255)<(d[h>>0]|0))}pd(10,f|0)|0;h=c[l>>2]|0}if(h&32){Xb(227984,15,1,f|0)|0;h=m+232|0;if(a[h>>0]|0){j=m+264|0;k=0;do{p=j+((k&255)<<3)|0;q=c[p+4>>2]|0;r=n;c[r>>2]=c[p>>2];c[r+4>>2]=q;Uc(f|0,227976,n|0)|0;k=k+1<<24>>24}while((k&255)<(d[h>>0]|0))}pd(10,f|0)|0;h=c[l>>2]|0}if(h&64){Xb(228e3,15,1,f|0)|0;h=m+233|0;if(a[h>>0]|0){j=m+288|0;k=0;do{p=j+((k&255)<<3)|0;q=c[p+4>>2]|0;r=n;c[r>>2]=c[p>>2];c[r+4>>2]=q;Uc(f|0,227976,n|0)|0;k=k+1<<24>>24}while((k&255)<(d[h>>0]|0))}pd(10,f|0)|0;h=c[l>>2]|0}if(h&128){c[n>>2]=d[m+224>>0];Uc(f|0,228016,n|0)|0;h=c[l>>2]|0}if(h&256){c[n>>2]=e[m+360>>1];Uc(f|0,228032,n|0)|0}h=c[m+168>>2]|0;if(!h){i=o;return}Ud[h&255](b,f,g);i=o;return}function vN(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function wN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function xN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+16|0;n=q;o=b+604|0;p=b+608|0;m=b+628|0;k=d;d=c[o>>2]|0;f=c[p>>2]|0;a:while(1){if((e|0)<=0){r=16;break}while(1){if((f|0)<=0)break a;g=d+1|0;h=a[d>>0]|0;j=f+-1|0;if(h<<24>>24>=0){l=g;r=10;break}if(h<<24>>24==-128){d=g;f=j}else{j=g;g=h;r=6;break}}if((r|0)==6){r=0;g=1-(g<<24>>24)|0;if((g|0)>(e|0)){h=c[m>>2]|0;c[n>>2]=g-e;qx(h,228784,228800,n);g=e}d=d+2|0;f=f+-2|0;if((g|0)>0){sfa(k|0,a[j>>0]|0,g|0)|0;k=k+g|0}}else if((r|0)==10){r=0;g=h<<24>>24;if((e|0)<(g+1|0)){h=c[m>>2]|0;c[n>>2]=1-e+g;qx(h,228784,228800,n);h=e+-1|0}else h=g;g=h+1|0;if((f|0)<=(g|0)){d=l;f=j;r=13;break}cK(k,l,g);k=k+g|0;d=d+(h+2)|0;f=j-g|0}e=e-g|0}if((r|0)==13)qx(c[m>>2]|0,228784,228848,n);else if((r|0)==16){c[o>>2]=d;c[p>>2]=f;r=1;i=q;return r|0}c[o>>2]=d;c[p>>2]=f;r=c[m>>2]|0;c[n>>2]=c[b+444>>2];Yv(r,228784,228896,n);r=0;i=q;return r|0}function yN(a,b){a=a|0;b=b|0;var d=0;d=_J(4)|0;b=a+576|0;c[b>>2]=d;if(!d){d=0;return d|0}if(!(c[a+12>>2]&1024)){d=Xw(a)|0;c[c[b>>2]>>2]=d;d=1;return d|0}else{d=lx(a)|0;c[c[b>>2]>>2]=d;d=1;return d|0}return 0}function zN(a){a=a|0;a=c[a+576>>2]|0;if(!a)return 1;$J(a);return 1}function AN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=b+604|0;f=c[o>>2]|0;n=(c[b+588>>2]|0)+(c[b+592>>2]|0)|0;p=b+608|0;do if((e|0)>0){g=0;l=0;a:while(1){m=a[d>>0]|0;e=e+-1|0;i=d+1|0;b:do if((e|0)>0){k=i;h=1;while(1){i=h+1|0;if(m<<24>>24!=(a[k>>0]|0)){d=k;i=h;break b}e=e+-1|0;d=d+2|0;if((e|0)>0){j=k;k=d;h=i;d=j}else break}}else{d=i;i=1}while(0);c:while(1){do if((i|0)==1){do if((f+2|0)>>>0>=n>>>0){if((l&-3|0)!=1){c[p>>2]=f-(c[o>>2]|0)+(c[p>>2]|0);if(!(vx(b)|0)){f=-1;q=46;break a}f=c[o>>2]|0;break}h=g;c[p>>2]=h-(c[o>>2]|0)+(c[p>>2]|0);if(!(vx(b)|0)){f=-1;q=46;break a}j=f-h|0;k=c[o>>2]|0;if((j|0)>0){f=k;h=j;while(1){h=h+-1|0;a[f>>0]=a[g>>0]|0;if((h|0)<=0)break;else{g=g+1|0;f=f+1|0}}g=c[o>>2]|0;f=k+j|0}else{g=k;f=k}}while(0);if((l|0)==1){q=20;break}else if((l|0)==2){q=25;break}else if(!l){q=15;break}else if((l|0)!=3){i=l;break c}h=f+-2|0;if((a[h>>0]|0)!=-1){i=1;l=2;continue c}i=a[g>>0]|0;if((i&255)>=126){i=1;l=2;continue c}l=(i&255)+2|0;a[g>>0]=l;a[h>>0]=a[f+-1>>0]|0;i=1;l=(l&255|0)!=127&1;continue c}else while(1){do if((f+2|0)>>>0>=n>>>0){if((l&-3|0)!=1){c[p>>2]=f-(c[o>>2]|0)+(c[p>>2]|0);if(!(vx(b)|0)){f=-1;q=46;break a}f=c[o>>2]|0;break}h=g;c[p>>2]=h-(c[o>>2]|0)+(c[p>>2]|0);if(!(vx(b)|0)){f=-1;q=46;break a}k=f-h|0;j=c[o>>2]|0;if((k|0)>0){f=j;h=k;while(1){h=h+-1|0;a[f>>0]=a[g>>0]|0;if((h|0)<=0)break;else{g=g+1|0;f=f+1|0}}g=c[o>>2]|0;f=j+k|0}else{g=j;f=j}}while(0);if((l|0)==1){q=20;break}else if((l|0)==3)l=2;else if((l|0)==2){q=25;break}else if(!l){q=15;break}else{i=l;break c}}while(0);if((q|0)==15){q=0;if((i|0)<=1){q=19;break}if((i|0)<=128){q=18;break}a[f>>0]=-127;a[f+1>>0]=m;i=i+-128|0;f=f+2|0;l=2;continue}else if((q|0)==20){q=0;if((i|0)<=1){q=24;break}if((i|0)<=128){q=23;break}a[f>>0]=-127;a[f+1>>0]=m;i=i+-128|0;f=f+2|0;l=3;continue}else if((q|0)==25){q=0;if((i|0)<=1){q=30;break}if((i|0)<=128){q=28;break}a[f>>0]=-127;a[f+1>>0]=m;i=i+-128|0;f=f+2|0;l=2;continue}}if((q|0)==18){q=0;a[f>>0]=1-i;a[f+1>>0]=m;f=f+2|0;i=2}else if((q|0)==19){q=0;a[f>>0]=0;a[f+1>>0]=m;g=f;f=f+2|0;i=1}else if((q|0)==23){q=0;a[f>>0]=1-i;a[f+1>>0]=m;f=f+2|0;i=3}else if((q|0)==24){q=0;i=(a[g>>0]|0)+1<<24>>24;a[g>>0]=i;a[f>>0]=m;f=f+1|0;i=i<<24>>24!=127&1}else if((q|0)==28){q=0;a[f>>0]=1-i;a[f+1>>0]=m;f=f+2|0;i=2}else if((q|0)==30){q=0;a[f>>0]=0;a[f+1>>0]=m;g=f;f=f+2|0;i=1}if((e|0)>0)l=i;else{q=44;break}}if((q|0)==44){e=c[o>>2]|0;break}else if((q|0)==46)return f|0}else e=f;while(0);c[p>>2]=f-e+(c[p>>2]|0);c[o>>2]=f;q=1;return q|0}function BN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[c[a+576>>2]>>2]|0;if((d|0)<=0){a=1;return a|0}while(1){f=(d|0)<(g|0)?d:g;if((AN(a,b,f,e)|0)<0){b=-1;f=4;break}d=d-f|0;if((d|0)<=0){b=1;f=4;break}else b=b+f|0}if((f|0)==4)return b|0;return 0}function CN(a){a=a|0;return 1}function DN(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;j=l;h=c[a+576>>2]|0;if(!h)Ra(234176,228968,676,229624);c[a+652>>2]=37;if((b[a+126>>1]|0)==1)d=b[a+98>>1]|0;else d=1;b[h+124>>1]=d;f=d&65535;g=da(c[a+56>>2]|0,f)|0;g=da(g,c[a+100>>2]|0)|0;if((g|0)==0|d<<16>>16==0){k=0;i=l;return k|0}d=g+f|0;if((g|0)<1|(d|0)==0){k=0;i=l;return k|0}g=_J(d<<1)|0;c[h+120>>2]=g;if(!g){k=0;i=l;return k|0}g=h+132|0;do if((c[g>>2]|0)==-1){d=b[a+86>>1]|0;f=e[a+84>>1]|0;switch(f|0){case 8:{if(d<<16>>16==1|d<<16>>16==4){d=0;k=15}break}case 32:{if(d<<16>>16==3){d=5;k=15}break}case 12:{if(d<<16>>16==2|d<<16>>16==4){d=3;k=15}break}case 11:{if(d<<16>>16==1|d<<16>>16==4){d=2;k=15}break}case 16:{if(d<<16>>16==1|d<<16>>16==4){d=4;k=15}break}default:{}}if((k|0)==15){c[g>>2]=d;break}c[g>>2]=-1;k=c[a+628>>2]|0;c[j>>2]=f;Yv(k,229624,229648,j);k=0;i=l;return k|0}while(0);if(!(zH(h+64|0,268176,56)|0)){k=h+128|0;c[k>>2]=c[k>>2]|1;k=1;i=l;return k|0}else{k=c[a+628>>2]|0;c[j>>2]=c[h+88>>2];Yv(k,229624,234328,j);k=0;i=l;return k|0}return 0}function EN(a,b){a=a|0;b=b|0;var d=0;b=c[a+576>>2]|0;if(!b)Ra(234176,228968,723,229600);else{d=b+64|0;c[d>>2]=c[a+588>>2];c[b+68>>2]=c[a+608>>2];return (yH(d)|0)==0|0}return 0}function FN(d,f,h,j){d=d|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0.0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;N=i;i=i+16|0;M=N;q=c[d+576>>2]|0;L=q+132|0;switch(c[L>>2]|0){case 2:case 3:case 4:{h=h>>>1;break}case 5:{h=h>>>2;break}case 1:case 0:break;default:{P=c[d+628>>2]|0;c[M>>2]=e[d+84>>1];Yv(P,229480,229264,M);P=0;i=N;return P|0}}I=q+124|0;J=da(e[I>>1]|0,c[d+56>>2]|0)|0;if(!q)Ra(234176,228968,772,229480);n=q+120|0;j=q+64|0;c[q+76>>2]=c[n>>2];k=q+80|0;c[k>>2]=h<<1;K=d+628|0;o=d+444|0;l=q+88|0;do{m=AH(j,1)|0;if((m|0)==1){P=12;break}else if((m|0)==-3){H=c[K>>2]|0;G=c[l>>2]|0;c[M>>2]=c[o>>2];c[M+4>>2]=G;Yv(H,229480,234384,M);if(CH(j)|0){O=0;P=135;break}}else if(m){P=10;break}}while((c[k>>2]|0)!=0);if((P|0)==10){P=c[K>>2]|0;c[M>>2]=c[l>>2];Yv(P,229480,234280,M);P=0;i=N;return P|0}else if((P|0)==12){j=c[k>>2]|0;if(j){P=c[K>>2]|0;c[M>>2]=c[o>>2];L=M+4|0;c[L>>2]=j;c[L+4>>2]=0;Yv(P,229480,234424,M);P=0;i=N;return P|0}}else if((P|0)==135){i=N;return O|0}l=c[n>>2]|0;if(c[d+12>>2]&128)$w(l,h);j=(h|0)%(J|0)|0;if(j){H=c[K>>2]|0;c[M>>2]=J;c[M+4>>2]=h;qx(H,229480,229496,M);h=h-j|0}if((h|0)<=0){P=1;i=N;return P|0}C=q+148|0;D=J<<2;A=J+-3|0;E=(A|0)>0;B=J+-4|0;F=(B|0)>0;G=q+152|0;H=J<<1;z=q+156|0;j=f;y=0;x=l;a:while(1){switch(c[L>>2]|0){case 4:{t=e[I>>1]|0;u=c[G>>2]|0;do if((J|0)>=(t|0))if((t|0)==4){k=(e[x>>1]|0)&2047;b[j>>1]=b[u+(k<<1)>>1]|0;n=(e[x+2>>1]|0)&2047;b[j+2>>1]=b[u+(n<<1)>>1]|0;q=(e[x+4>>1]|0)&2047;b[j+4>>1]=b[u+(q<<1)>>1]|0;l=(e[x+6>>1]|0)&2047;b[j+6>>1]=b[u+(l<<1)>>1]|0;if(F){m=B;f=x;o=j}else break;do{t=f;f=f+8|0;w=o;o=o+8|0;k=(e[f>>1]|0)+k|0;b[o>>1]=b[u+((k&2047)<<1)>>1]|0;n=(e[t+10>>1]|0)+n|0;b[w+10>>1]=b[u+((n&2047)<<1)>>1]|0;q=(e[t+12>>1]|0)+q|0;b[w+12>>1]=b[u+((q&2047)<<1)>>1]|0;l=(e[t+14>>1]|0)+l|0;b[w+14>>1]=b[u+((l&2047)<<1)>>1]|0;m=m+-4|0}while((m|0)>0)}else if((t|0)==3){k=(e[x>>1]|0)&2047;b[j>>1]=b[u+(k<<1)>>1]|0;q=(e[x+2>>1]|0)&2047;b[j+2>>1]=b[u+(q<<1)>>1]|0;l=(e[x+4>>1]|0)&2047;b[j+4>>1]=b[u+(l<<1)>>1]|0;if(E){n=A;m=x;f=j}else break;do{t=m;m=m+6|0;w=f;f=f+6|0;k=(e[m>>1]|0)+k|0;b[f>>1]=b[u+((k&2047)<<1)>>1]|0;q=(e[t+8>>1]|0)+q|0;b[w+8>>1]=b[u+((q&2047)<<1)>>1]|0;l=(e[t+10>>1]|0)+l|0;b[w+10>>1]=b[u+((l&2047)<<1)>>1]|0;n=n+-3|0}while((n|0)>0)}else{q=0-t|0;n=(q|0)>-1;m=t+1|0;l=x;k=j;o=t;while(1){o=o+-1|0;b[k>>1]=b[u+(((e[l>>1]|0)&2047)<<1)>>1]|0;if((o|0)<=0)break;else{l=l+2|0;k=k+2|0}}o=m+(n?q:-1)|0;l=J-t|0;if((l|0)>0){m=j;f=x}else break;do{m=m+(o<<1)|0;f=f+(o<<1)|0;k=f;q=m;n=t;while(1){n=n+-1|0;w=k+(t<<1)|0;b[w>>1]=(e[w>>1]|0)+(e[k>>1]|0);b[q>>1]=b[u+(((e[k>>1]|0)&2047)<<1)>>1]|0;if((n|0)<=0)break;else{k=k+2|0;q=q+2|0}}l=l-t|0}while((l|0)>0)}while(0);j=j+H|0;break}case 3:{u=e[I>>1]|0;w=c[C>>2]|0;do if((J|0)>=(u|0))if((u|0)==3){n=(e[x>>1]|0)&2047;p=+g[w+(n<<2)>>2]*2048.0;q=(e[x+2>>1]|0)&2047;r=+g[w+(q<<2)>>2]*2048.0;k=(e[x+4>>1]|0)&2047;s=+g[w+(k<<2)>>2]*2048.0;if(p<3071.0)l=~~p&65535;else l=3071;b[j>>1]=l;if(r<3071.0)l=~~r&65535;else l=3071;b[j+2>>1]=l;if(s<3071.0)l=~~s&65535;else l=3071;b[j+4>>1]=l;if(E){f=A;o=x;t=j;m=q}else break;do{u=o;o=o+6|0;q=t;t=t+6|0;n=(e[o>>1]|0)+n|0;p=+g[w+((n&2047)<<2)>>2]*2048.0;m=(e[u+8>>1]|0)+m|0;r=+g[w+((m&2047)<<2)>>2]*2048.0;k=(e[u+10>>1]|0)+k|0;s=+g[w+((k&2047)<<2)>>2]*2048.0;if(p<3071.0)l=~~p&65535;else l=3071;b[t>>1]=l;if(r<3071.0)l=~~r&65535;else l=3071;b[q+8>>1]=l;if(s<3071.0)l=~~s&65535;else l=3071;b[q+10>>1]=l;f=f+-3|0}while((f|0)>0)}else if((u|0)==4){n=(e[x>>1]|0)&2047;p=+g[w+(n<<2)>>2]*2048.0;m=(e[x+2>>1]|0)&2047;r=+g[w+(m<<2)>>2]*2048.0;q=(e[x+4>>1]|0)&2047;s=+g[w+(q<<2)>>2]*2048.0;k=(e[x+6>>1]|0)&2047;v=+g[w+(k<<2)>>2]*2048.0;if(p<3071.0)l=~~p&65535;else l=3071;b[j>>1]=l;if(r<3071.0)l=~~r&65535;else l=3071;b[j+2>>1]=l;if(s<3071.0)l=~~s&65535;else l=3071;b[j+4>>1]=l;if(v<3071.0)l=~~v&65535;else l=3071;b[j+6>>1]=l;if(F){o=B;t=x;u=j;f=q}else break;do{l=t;t=t+8|0;q=u;u=u+8|0;n=(e[t>>1]|0)+n|0;p=+g[w+((n&2047)<<2)>>2]*2048.0;m=(e[l+10>>1]|0)+m|0;r=+g[w+((m&2047)<<2)>>2]*2048.0;f=(e[l+12>>1]|0)+f|0;s=+g[w+((f&2047)<<2)>>2]*2048.0;k=(e[l+14>>1]|0)+k|0;v=+g[w+((k&2047)<<2)>>2]*2048.0;if(p<3071.0)l=~~p&65535;else l=3071;b[u>>1]=l;if(r<3071.0)l=~~r&65535;else l=3071;b[q+10>>1]=l;if(s<3071.0)l=~~s&65535;else l=3071;b[q+12>>1]=l;if(v<3071.0)l=~~v&65535;else l=3071;b[q+14>>1]=l;o=o+-4|0}while((o|0)>0)}else{n=0-u|0;m=(n|0)>-1;f=u+1|0;k=x;q=j;o=u;while(1){o=o+-1|0;p=+g[w+(((e[k>>1]|0)&2047)<<2)>>2]*2048.0;if(p<3071.0)l=~~p&65535;else l=3071;b[q>>1]=l;if((o|0)<=0)break;else{k=k+2|0;q=q+2|0}}t=f+(m?n:-1)|0;l=J-u|0;if((l|0)>0){f=j;o=x}else break;do{f=f+(t<<1)|0;o=o+(t<<1)|0;q=o;n=f;m=u;while(1){m=m+-1|0;Q=q+(u<<1)|0;k=(e[Q>>1]|0)+(e[q>>1]|0)|0;b[Q>>1]=k;p=+g[w+((k&2047)<<2)>>2]*2048.0;if(p<3071.0)k=~~p&65535;else k=3071;b[n>>1]=k;if((m|0)<=0)break;else{q=q+2|0;n=n+2|0}}l=l-u|0}while((l|0)>0)}while(0);j=j+H|0;break}case 5:{t=e[I>>1]|0;u=c[C>>2]|0;do if((J|0)>=(t|0))if((t|0)==3){k=(e[x>>1]|0)&2047;q=(e[x+2>>1]|0)&2047;s=+g[u+(q<<2)>>2];l=(e[x+4>>1]|0)&2047;v=+g[u+(l<<2)>>2];g[j>>2]=+g[u+(k<<2)>>2];g[j+4>>2]=s;g[j+8>>2]=v;if(E){n=A;m=x;f=j}else break;do{w=m;m=m+6|0;Q=f;f=f+12|0;k=(e[m>>1]|0)+k|0;q=(e[w+8>>1]|0)+q|0;s=+g[u+((q&2047)<<2)>>2];l=(e[w+10>>1]|0)+l|0;v=+g[u+((l&2047)<<2)>>2];g[f>>2]=+g[u+((k&2047)<<2)>>2];g[Q+16>>2]=s;g[Q+20>>2]=v;n=n+-3|0}while((n|0)>0)}else if((t|0)==4){k=(e[x>>1]|0)&2047;n=(e[x+2>>1]|0)&2047;r=+g[u+(n<<2)>>2];q=(e[x+4>>1]|0)&2047;s=+g[u+(q<<2)>>2];l=(e[x+6>>1]|0)&2047;v=+g[u+(l<<2)>>2];g[j>>2]=+g[u+(k<<2)>>2];g[j+4>>2]=r;g[j+8>>2]=s;g[j+12>>2]=v;if(F){m=B;f=x;o=j}else break;do{w=f;f=f+8|0;Q=o;o=o+16|0;k=(e[f>>1]|0)+k|0;n=(e[w+10>>1]|0)+n|0;r=+g[u+((n&2047)<<2)>>2];q=(e[w+12>>1]|0)+q|0;s=+g[u+((q&2047)<<2)>>2];l=(e[w+14>>1]|0)+l|0;v=+g[u+((l&2047)<<2)>>2];g[o>>2]=+g[u+((k&2047)<<2)>>2];g[Q+20>>2]=r;g[Q+24>>2]=s;g[Q+28>>2]=v;m=m+-4|0}while((m|0)>0)}else{q=0-t|0;n=(q|0)>-1;m=t+1|0;l=x;k=j;o=t;while(1){o=o+-1|0;g[k>>2]=+g[u+(((e[l>>1]|0)&2047)<<2)>>2];if((o|0)<=0)break;else{l=l+2|0;k=k+4|0}}o=m+(n?q:-1)|0;l=J-t|0;if((l|0)>0){m=j;f=x}else break;do{m=m+(o<<2)|0;f=f+(o<<1)|0;k=f;q=m;n=t;while(1){n=n+-1|0;Q=k+(t<<1)|0;b[Q>>1]=(e[Q>>1]|0)+(e[k>>1]|0);g[q>>2]=+g[u+(((e[k>>1]|0)&2047)<<2)>>2];if((n|0)<=0)break;else{k=k+2|0;q=q+4|0}}l=l-t|0}while((l|0)>0)}while(0);j=j+D|0;break}case 0:{t=e[I>>1]|0;u=c[z>>2]|0;do if((J|0)>=(t|0))if((t|0)==3){k=(e[x>>1]|0)&2047;a[j>>0]=a[u+k>>0]|0;q=(e[x+2>>1]|0)&2047;a[j+1>>0]=a[u+q>>0]|0;l=(e[x+4>>1]|0)&2047;a[j+2>>0]=a[u+l>>0]|0;if(E){n=A;m=x;f=j}else break;do{w=m;m=m+6|0;Q=f;f=f+3|0;k=(e[m>>1]|0)+k|0;a[f>>0]=a[u+(k&2047)>>0]|0;q=(e[w+8>>1]|0)+q|0;a[Q+4>>0]=a[u+(q&2047)>>0]|0;l=(e[w+10>>1]|0)+l|0;a[Q+5>>0]=a[u+(l&2047)>>0]|0;n=n+-3|0}while((n|0)>0)}else if((t|0)==4){k=(e[x>>1]|0)&2047;a[j>>0]=a[u+k>>0]|0;n=(e[x+2>>1]|0)&2047;a[j+1>>0]=a[u+n>>0]|0;q=(e[x+4>>1]|0)&2047;a[j+2>>0]=a[u+q>>0]|0;l=(e[x+6>>1]|0)&2047;a[j+3>>0]=a[u+l>>0]|0;if(F){m=B;f=x;o=j}else break;do{w=f;f=f+8|0;Q=o;o=o+4|0;k=(e[f>>1]|0)+k|0;a[o>>0]=a[u+(k&2047)>>0]|0;n=(e[w+10>>1]|0)+n|0;a[Q+5>>0]=a[u+(n&2047)>>0]|0;q=(e[w+12>>1]|0)+q|0;a[Q+6>>0]=a[u+(q&2047)>>0]|0;l=(e[w+14>>1]|0)+l|0;a[Q+7>>0]=a[u+(l&2047)>>0]|0;m=m+-4|0}while((m|0)>0)}else{q=0-t|0;n=(q|0)>-1;m=t+1|0;l=x;k=j;o=t;while(1){o=o+-1|0;a[k>>0]=a[u+((e[l>>1]|0)&2047)>>0]|0;if((o|0)<=0)break;else{l=l+2|0;k=k+1|0}}o=m+(n?q:-1)|0;l=J-t|0;if((l|0)>0){m=j;f=x}else break;do{m=m+o|0;f=f+(o<<1)|0;k=f;q=m;n=t;while(1){n=n+-1|0;Q=k+(t<<1)|0;b[Q>>1]=(e[Q>>1]|0)+(e[k>>1]|0);a[q>>0]=a[u+((e[k>>1]|0)&2047)>>0]|0;if((n|0)<=0)break;else{k=k+2|0;q=q+1|0}}l=l-t|0}while((l|0)>0)}while(0);j=j+J|0;break}case 2:{t=e[I>>1]|0;do if((J|0)>=(t|0))if((t|0)==4){m=b[x>>1]|0;b[j>>1]=m;q=b[x+2>>1]|0;b[j+2>>1]=q;k=b[x+4>>1]|0;b[j+4>>1]=k;l=b[x+6>>1]|0;b[j+6>>1]=l;if(!F)break;o=j;t=x;u=B;f=l&65535;n=k&65535;k=q&65535;l=m&65535;do{w=t;t=t+8|0;Q=o;o=o+8|0;l=(e[t>>1]|0)+l|0;b[o>>1]=l&2047;k=(e[w+10>>1]|0)+k|0;b[Q+10>>1]=k&2047;n=(e[w+12>>1]|0)+n|0;b[Q+12>>1]=n&2047;f=(e[w+14>>1]|0)+f|0;b[Q+14>>1]=f&2047;u=u+-4|0}while((u|0)>0)}else if((t|0)==3){q=b[x>>1]|0;b[j>>1]=q;k=b[x+2>>1]|0;b[j+2>>1]=k;l=b[x+4>>1]|0;b[j+4>>1]=l;if(!E)break;m=j;o=x;f=A;n=l&65535;k=k&65535;l=q&65535;do{w=o;o=o+6|0;Q=m;m=m+6|0;l=(e[o>>1]|0)+l|0;b[m>>1]=l&2047;k=(e[w+8>>1]|0)+k|0;b[Q+8>>1]=k&2047;n=(e[w+10>>1]|0)+n|0;b[Q+10>>1]=n&2047;f=f+-3|0}while((f|0)>0)}else{n=0-t|0;m=(n|0)>-1;o=t+1|0;l=x;k=j;q=t;while(1){q=q+-1|0;b[k>>1]=(e[l>>1]|0)&2047;if((q|0)<=0)break;else{l=l+2|0;k=k+2|0}}f=o+(m?n:-1)|0;l=J-t|0;if((l|0)>0){m=j;o=x}else break;do{m=m+(f<<1)|0;o=o+(f<<1)|0;k=o;q=m;n=t;while(1){n=n+-1|0;Q=k+(t<<1)|0;b[Q>>1]=(e[Q>>1]|0)+(e[k>>1]|0);b[q>>1]=(e[k>>1]|0)&2047;if((n|0)<=0)break;else{k=k+2|0;q=q+2|0}}l=l-t|0}while((l|0)>0)}while(0);j=j+H|0;break}case 1:{t=e[I>>1]|0;u=c[z>>2]|0;do if((J|0)>=(t|0))if((t|0)==4){l=(e[x+6>>1]|0)&2047;q=(e[x+4>>1]|0)&2047;t=a[u+q>>0]|0;n=(e[x+2>>1]|0)&2047;w=a[u+n>>0]|0;k=(e[x>>1]|0)&2047;Q=a[u+k>>0]|0;a[j>>0]=a[u+l>>0]|0;a[j+1>>0]=t;a[j+2>>0]=w;a[j+3>>0]=Q;if(F){m=B;f=x;o=j}else break;do{t=f;f=f+8|0;Q=o;o=o+4|0;l=(e[t+14>>1]|0)+l|0;q=(e[t+12>>1]|0)+q|0;R=a[u+(q&2047)>>0]|0;n=(e[t+10>>1]|0)+n|0;t=a[u+(n&2047)>>0]|0;k=(e[f>>1]|0)+k|0;w=a[u+(k&2047)>>0]|0;a[o>>0]=a[u+(l&2047)>>0]|0;a[Q+5>>0]=R;a[Q+6>>0]=t;a[Q+7>>0]=w;m=m+-4|0}while((m|0)>0)}else if((t|0)==3){a[j>>0]=0;l=(e[x+4>>1]|0)&2047;q=(e[x+2>>1]|0)&2047;R=a[u+q>>0]|0;k=(e[x>>1]|0)&2047;Q=a[u+k>>0]|0;a[j+1>>0]=a[u+l>>0]|0;a[j+2>>0]=R;a[j+3>>0]=Q;if(E){n=A;m=x;f=j}else break;do{w=m;m=m+6|0;Q=f;f=f+4|0;a[f>>0]=0;l=(e[w+10>>1]|0)+l|0;q=(e[w+8>>1]|0)+q|0;w=a[u+(q&2047)>>0]|0;k=(e[m>>1]|0)+k|0;R=a[u+(k&2047)>>0]|0;a[Q+5>>0]=a[u+(l&2047)>>0]|0;a[Q+6>>0]=w;a[Q+7>>0]=R;n=n+-3|0}while((n|0)>0)}else{q=0-t|0;n=(q|0)>-1;m=t+1|0;l=x;k=j;o=t;while(1){o=o+-1|0;a[k>>0]=a[u+((e[l>>1]|0)&2047)>>0]|0;if((o|0)<=0)break;else{l=l+2|0;k=k+1|0}}o=m+(n?q:-1)|0;l=J-t|0;if((l|0)>0){m=j;f=x}else break;do{m=m+o|0;f=f+(o<<1)|0;k=f;q=m;n=t;while(1){n=n+-1|0;Q=k+(t<<1)|0;b[Q>>1]=(e[Q>>1]|0)+(e[k>>1]|0);a[q>>0]=a[u+((e[k>>1]|0)&2047)>>0]|0;if((n|0)<=0)break;else{k=k+2|0;q=q+1|0}}l=l-t|0}while((l|0)>0)}while(0);j=j+J|0;break}default:break a}y=y+J|0;if((y|0)>=(h|0)){O=1;P=135;break}else x=x+(J<<1)|0}if((P|0)==135){i=N;return O|0}Q=c[K>>2]|0;c[M>>2]=e[d+84>>1];Yv(Q,229480,229568,M);Q=0;i=N;return Q|0}function GN(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;j=l;h=c[a+576>>2]|0;if(!h)Ra(234176,228968,880,229392);if((b[a+126>>1]|0)==1)d=b[a+98>>1]|0;else d=1;b[h+124>>1]=d;d=da(c[a+56>>2]|0,d&65535)|0;d=da(d,c[a+100>>2]|0)|0;if(!d){k=0;i=l;return k|0}g=_J(d<<1)|0;c[h+120>>2]=g;if(!g){k=0;i=l;return k|0}g=h+132|0;do if((c[g>>2]|0)==-1){d=b[a+86>>1]|0;f=e[a+84>>1]|0;switch(f|0){case 11:{if(d<<16>>16==1|d<<16>>16==4){d=2;k=14}break}case 16:{if(d<<16>>16==1|d<<16>>16==4){d=4;k=14}break}case 12:{if(d<<16>>16==2|d<<16>>16==4){d=3;k=14}break}case 32:{if(d<<16>>16==3){d=5;k=14}break}case 8:{if(d<<16>>16==1|d<<16>>16==4){d=0;k=14}break}default:{}}if((k|0)==14){c[g>>2]=d;break}c[g>>2]=-1;k=c[a+628>>2]|0;c[j>>2]=f;Yv(k,229392,229416,j);k=0;i=l;return k|0}while(0);if(!(rH(h+64|0,c[h+136>>2]|0,268176,56)|0)){k=h+128|0;c[k>>2]=c[k>>2]|1;k=1;i=l;return k|0}else{k=c[a+628>>2]|0;c[j>>2]=c[h+88>>2];Yv(k,229392,234328,j);k=0;i=l;return k|0}return 0}function HN(a,b){a=a|0;b=b|0;b=c[a+576>>2]|0;if(!b)Ra(234176,228968,919,229368);else{c[b+76>>2]=c[a+588>>2];c[b+80>>2]=c[a+592>>2];return (uH(b+64|0)|0)==0|0}return 0}function IN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;n=p;b=c[a+576>>2]|0;f=b+64|0;c[b+68>>2]=0;g=b+80|0;h=a+592|0;j=a+608|0;k=a+588|0;l=b+76|0;while(1){m=wH(f,4)|0;if(m>>>0>=2)break;d=c[g>>2]|0;e=c[h>>2]|0;if((e|0)!=(d|0)){c[j>>2]=e-d;vx(a)|0;c[l>>2]=c[k>>2];c[g>>2]=c[h>>2]}if((m|0)==1){b=1;o=7;break}}if((o|0)==7){i=p;return b|0}o=c[a+628>>2]|0;c[n>>2]=c[b+88>>2];Yv(o,229344,234280,n);o=0;i=p;return o|0}function JN(a,f,h,j){a=a|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;P=i;i=i+16|0;O=P;N=c[a+576>>2]|0;M=c[N+132>>2]|0;switch(M|0){case 1:case 0:break;case 5:{h=h>>>2;break}case 2:case 3:case 4:{h=h>>>1;break}default:{Q=c[a+628>>2]|0;c[O>>2]=e[a+84>>1];Yv(Q,229248,229264,O);Q=0;i=P;return Q|0}}B=N+124|0;C=da(e[B>>1]|0,c[a+56>>2]|0)|0;L=c[N+120>>2]|0;a:do if((h|0)>0){D=N+160|0;E=C<<2;F=C+-1|0;z=C+-3|0;G=(z|0)>0;A=C+-4|0;H=(A|0)>0;I=N+164|0;J=C<<1;K=N+168|0;j=f;x=0;y=L;while(1){if(!M){f=e[B>>1]|0;v=c[K>>2]|0;do if((C|0)>=(f|0))if((f|0)==3){p=b[v+((d[j>>0]|0)<<1)>>1]|0;b[y>>1]=p;k=b[v+((d[j+1>>0]|0)<<1)>>1]|0;b[y+2>>1]=k;f=b[v+((d[j+2>>0]|0)<<1)>>1]|0;b[y+4>>1]=f;if(!G)break;q=z;l=j;n=y;m=f&65535;k=k&65535;f=p&65535;do{p=l;l=l+3|0;r=f;f=e[v+((d[l>>0]|0)<<1)>>1]|0;s=n;n=n+6|0;b[n>>1]=f-r&2047;r=k;k=e[v+((d[p+4>>0]|0)<<1)>>1]|0;b[s+8>>1]=k-r&2047;r=m;m=e[v+((d[p+5>>0]|0)<<1)>>1]|0;b[s+10>>1]=m-r&2047;q=q+-3|0}while((q|0)>0)}else if((f|0)==4){m=b[v+((d[j>>0]|0)<<1)>>1]|0;b[y>>1]=m;q=b[v+((d[j+1>>0]|0)<<1)>>1]|0;b[y+2>>1]=q;k=b[v+((d[j+2>>0]|0)<<1)>>1]|0;b[y+4>>1]=k;f=b[v+((d[j+3>>0]|0)<<1)>>1]|0;b[y+6>>1]=f;if(!H)break;n=A;r=j;s=y;l=f&65535;p=k&65535;k=q&65535;f=m&65535;do{R=r;r=r+4|0;q=f;f=e[v+((d[r>>0]|0)<<1)>>1]|0;m=s;s=s+8|0;b[s>>1]=f-q&2047;q=k;k=e[v+((d[R+5>>0]|0)<<1)>>1]|0;b[m+10>>1]=k-q&2047;q=p;p=e[v+((d[R+6>>0]|0)<<1)>>1]|0;b[m+12>>1]=p-q&2047;q=l;l=e[v+((d[R+7>>0]|0)<<1)>>1]|0;b[m+14>>1]=l-q&2047;n=n+-4|0}while((n|0)>0)}else{m=F+f|0;k=y+(m<<1)|0;m=j+m|0;l=C-f|0;if((l|0)>0){r=0-f|0;r=~(((r|0)>-1?r:-1)+f);do{n=m;p=k;q=f;while(1){q=q+-1|0;s=b[v+((d[n>>0]|0)<<1)>>1]|0;b[p>>1]=s;R=p+(f<<1)|0;b[R>>1]=(e[R>>1]|0)-(s&65535)&2047;if((q|0)<=0)break;else{n=n+-1|0;p=p+-2|0}}m=m+r|0;k=k+(r<<1)|0;l=l-f|0}while((l|0)>0)}while(1){f=f+-1|0;b[k>>1]=b[v+((d[m>>0]|0)<<1)>>1]|0;if((f|0)<=0)break;else{m=m+-1|0;k=k+-2|0}}}while(0);j=j+C|0}else if((M|0)==5){f=e[B>>1]|0;v=c[D>>2]|0;w=+g[57300];do if((C|0)>=(f|0))if((f|0)==4){o=+g[j>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=+g[57296]*+ba(+(o*+g[57298]))+.5}else o=0.0;while(0);p=~~o&65535;b[y>>1]=p;p=p&65535;o=+g[j+4>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=+g[57296]*+ba(+(o*+g[57298]))+.5}else o=0.0;while(0);q=~~o&65535;b[y+2>>1]=q;q=q&65535;o=+g[j+8>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=+g[57296]*+ba(+(o*+g[57298]))+.5}else o=0.0;while(0);k=~~o&65535;b[y+4>>1]=k;k=k&65535;o=+g[j+12>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=+g[57296]*+ba(+(o*+g[57298]))+.5}else o=0.0;while(0);f=~~o&65535;b[y+6>>1]=f;if(!H)break;t=+g[57296];u=+g[57298];n=A;r=j;s=y;l=f&65535;do{m=s;s=s+8|0;f=r;r=r+16|0;o=+g[r>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=t*+ba(+(u*o))+.5}else o=0.0;while(0);R=p;p=~~o;b[s>>1]=p-R&2047;o=+g[f+20>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=t*+ba(+(u*o))+.5}else o=0.0;while(0);R=q;q=~~o;b[m+10>>1]=q-R&2047;o=+g[f+24>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=t*+ba(+(u*o))+.5}else o=0.0;while(0);R=k;k=~~o;b[m+12>>1]=k-R&2047;o=+g[f+28>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=t*+ba(+(u*o))+.5}else o=0.0;while(0);R=l;l=~~o;b[m+14>>1]=l-R&2047;n=n+-4|0}while((n|0)>0)}else if((f|0)==3){o=+g[j>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=+g[57296]*+ba(+(o*+g[57298]))+.5}else o=0.0;while(0);q=~~o&65535;b[y>>1]=q;q=q&65535;o=+g[j+4>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=+g[57296]*+ba(+(o*+g[57298]))+.5}else o=0.0;while(0);k=~~o&65535;b[y+2>>1]=k;k=k&65535;o=+g[j+8>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=+g[57296]*+ba(+(o*+g[57298]))+.5}else o=0.0;while(0);f=~~o&65535;b[y+4>>1]=f;if(!G)break;t=+g[57296];u=+g[57298];l=z;n=j;r=y;m=f&65535;do{p=r;r=r+6|0;f=n;n=n+12|0;o=+g[n>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=t*+ba(+(u*o))+.5}else o=0.0;while(0);R=q;q=~~o;b[r>>1]=q-R&2047;o=+g[f+16>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=t*+ba(+(u*o))+.5}else o=0.0;while(0);R=k;k=~~o;b[p+8>>1]=k-R&2047;o=+g[f+20>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=t*+ba(+(u*o))+.5}else o=0.0;while(0);R=m;m=~~o;b[p+10>>1]=m-R&2047;l=l+-3|0}while((l|0)>0)}else{q=j+(F<<2)|0;k=y+(F<<1)|0;p=C-f|0;o=+g[57296];if((p|0)>0){t=+g[57298];r=0-f|0;r=~(((r|0)>-1?r:-1)+f);do{m=q;l=k;n=f;while(1){n=n+-1|0;u=+g[m>>2];do if(!(u<0.0)){if(u<2.0){u=+(e[v+(~~(w*u)<<1)>>1]|0|0);break}if(u>24.200000762939453)u=2047.0;else u=o*+ba(+(t*u))+.5}else u=0.0;while(0);s=~~u&65535;b[l>>1]=s;R=l+(f<<1)|0;b[R>>1]=(e[R>>1]|0)-(s&65535)&2047;if((n|0)<=0)break;else{m=m+-4|0;l=l+-2|0}}q=q+(r<<2)|0;k=k+(r<<1)|0;p=p-f|0}while((p|0)>0);u=o}else{u=o;t=+g[57298]}while(1){f=f+-1|0;o=+g[q>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=u*+ba(+(t*o))+.5}else o=0.0;while(0);b[k>>1]=~~o;if((f|0)<=0)break;else{q=q+-4|0;k=k+-2|0}}}while(0);j=j+E|0}else if((M|0)==4){f=e[B>>1]|0;v=c[I>>2]|0;do if((C|0)>=(f|0))if((f|0)==3){p=b[v+((e[j>>1]|0)>>>2<<1)>>1]|0;b[y>>1]=p;k=b[v+((e[j+2>>1]|0)>>>2<<1)>>1]|0;b[y+2>>1]=k;f=b[v+((e[j+4>>1]|0)>>>2<<1)>>1]|0;b[y+4>>1]=f;if(!G)break;q=z;l=j;n=y;m=f&65535;k=k&65535;f=p&65535;do{R=n;n=n+6|0;r=l;l=l+6|0;s=f;f=e[v+((e[l>>1]|0)>>>2<<1)>>1]|0;b[n>>1]=f-s&2047;s=k;k=e[v+((e[r+8>>1]|0)>>>2<<1)>>1]|0;b[R+8>>1]=k-s&2047;s=m;m=e[v+((e[r+10>>1]|0)>>>2<<1)>>1]|0;b[R+10>>1]=m-s&2047;q=q+-3|0}while((q|0)>0)}else if((f|0)==4){m=b[v+((e[j>>1]|0)>>>2<<1)>>1]|0;b[y>>1]=m;q=b[v+((e[j+2>>1]|0)>>>2<<1)>>1]|0;b[y+2>>1]=q;k=b[v+((e[j+4>>1]|0)>>>2<<1)>>1]|0;b[y+4>>1]=k;f=b[v+((e[j+6>>1]|0)>>>2<<1)>>1]|0;b[y+6>>1]=f;if(!H)break;n=A;r=j;s=y;l=f&65535;p=k&65535;k=q&65535;f=m&65535;do{R=s;s=s+8|0;q=r;r=r+8|0;m=f;f=e[v+((e[r>>1]|0)>>>2<<1)>>1]|0;b[s>>1]=f-m&2047;m=k;k=e[v+((e[q+10>>1]|0)>>>2<<1)>>1]|0;b[R+10>>1]=k-m&2047;m=p;p=e[v+((e[q+12>>1]|0)>>>2<<1)>>1]|0;b[R+12>>1]=p-m&2047;m=l;l=e[v+((e[q+14>>1]|0)>>>2<<1)>>1]|0;b[R+14>>1]=l-m&2047;n=n+-4|0}while((n|0)>0)}else{m=j+(F<<1)|0;k=y+(F<<1)|0;l=C-f|0;if((l|0)>0){r=0-f|0;r=~(((r|0)>-1?r:-1)+f);do{n=m;p=k;q=f;while(1){q=q+-1|0;s=b[v+((e[n>>1]|0)>>>2<<1)>>1]|0;b[p>>1]=s;R=p+(f<<1)|0;b[R>>1]=(e[R>>1]|0)-(s&65535)&2047;if((q|0)<=0)break;else{n=n+-2|0;p=p+-2|0}}m=m+(r<<1)|0;k=k+(r<<1)|0;l=l-f|0}while((l|0)>0)}while(1){f=f+-1|0;b[k>>1]=b[v+((e[m>>1]|0)>>>2<<1)>>1]|0;if((f|0)<=0)break;else{m=m+-2|0;k=k+-2|0}}}while(0);j=j+J|0}else break;x=x+C|0;if((x|0)>=(h|0))break a;else y=y+(C<<1)|0}Q=c[a+628>>2]|0;c[O>>2]=e[a+84>>1];Yv(Q,229248,229264,O);Q=0;i=P;return Q|0}while(0);n=N+64|0;c[n>>2]=L;m=N+68|0;c[m>>2]=h<<1;if((h&2147483647|0)!=(h|0)){Yv(c[a+628>>2]|0,229248,229304,O);Q=0;i=P;return Q|0}j=N+80|0;h=a+592|0;k=a+608|0;f=a+588|0;l=N+76|0;while(1){if(wH(n,0)|0)break;if(!(c[j>>2]|0)){c[k>>2]=c[h>>2];vx(a)|0;c[l>>2]=c[f>>2];c[j>>2]=c[h>>2]}if(!(c[m>>2]|0)){j=1;Q=145;break}}if((Q|0)==145){i=P;return j|0}Q=c[a+628>>2]|0;c[O>>2]=c[N+88>>2];Yv(Q,229248,234240,O);Q=0;i=P;return Q|0}function KN(a){a=a|0;b[a+84>>1]=8;b[a+86>>1]=1;return}function LN(a){a=a|0;var b=0,d=0,e=0;d=a+576|0;e=c[d>>2]|0;if(!e)Ra(234152,228968,1247,229232);Dw(a)|0;c[a+672>>2]=c[e+140>>2];c[a+668>>2]=c[e+144>>2];b=c[e+160>>2]|0;if(b)$J(b);b=c[e+164>>2]|0;if(b)$J(b);b=c[e+168>>2]|0;if(b)$J(b);b=c[e+148>>2]|0;if(b)$J(b);b=c[e+152>>2]|0;if(b)$J(b);b=c[e+156>>2]|0;if(b)$J(b);do if(c[e+128>>2]&1){b=e+64|0;if(!(c[a+8>>2]|0)){BH(b)|0;break}else{tH(b)|0;break}}while(0);b=c[e+120>>2]|0;if(!b){$J(e);c[d>>2]=0;nv(a);return}$J(b);$J(e);c[d>>2]=0;nv(a);return}function MN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+576>>2]|0;if((b|0)==65558){a=c[e+136>>2]|0;e=c[d>>2]|0;b=c[e>>2]|0;c[d>>2]=e+4;c[b>>2]=a;b=1;return b|0}else if((b|0)==65549){a=c[e+132>>2]|0;e=c[d>>2]|0;b=c[e>>2]|0;c[d>>2]=e+4;c[b>>2]=a;b=1;return b|0}else{b=Hd[c[e+140>>2]&255](a,b,d)|0;return b|0}return 0}function NN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;f=g;e=c[a+576>>2]|0;if((b|0)==65549){h=c[d>>2]|0;b=c[h>>2]|0;c[d>>2]=h+4;c[e+132>>2]=b;switch(b|0){case 5:{c[f>>2]=32;rv(a,258,f)|0;c[f>>2]=3;rv(a,339,f)|0;break}case 1:case 0:{c[f>>2]=8;rv(a,258,f)|0;c[f>>2]=1;rv(a,339,f)|0;break}case 2:{c[f>>2]=16;rv(a,258,f)|0;c[f>>2]=1;rv(a,339,f)|0;break}case 4:{c[f>>2]=16;rv(a,258,f)|0;c[f>>2]=1;rv(a,339,f)|0;break}case 3:{c[f>>2]=16;rv(a,258,f)|0;c[f>>2]=2;rv(a,339,f)|0;break}default:{}}if(!(c[a+12>>2]&1024))b=-1;else b=ox(a)|0;c[a+496>>2]=b;c[a+580>>2]=Xw(a)|0;h=1;i=g;return h|0}else if((b|0)==65558){h=c[d>>2]|0;b=c[h>>2]|0;c[d>>2]=h+4;c[e+136>>2]=b;if(!(c[a+8>>2]|0)){h=1;i=g;return h|0}if(!(c[e+128>>2]&1)){h=1;i=g;return h|0}if(!(vH(e+64|0,b,0)|0)){h=1;i=g;return h|0}h=c[a+628>>2]|0;c[f>>2]=c[e+88>>2];Yv(h,229208,234280,f);h=0;i=g;return h|0}else{h=Hd[c[e+144>>2]&255](a,b,d)|0;i=g;return h|0}return 0}function ON(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0;f=c[a+576>>2]|0;if(!f)Ra(234176,229736,668,230824);g=c[f+44>>2]|0;if(!g)Ra(230848,229736,669,230824);if((d|0)==317){d=c[f>>2]&65535;g=c[e>>2]|0;a=c[g>>2]|0;c[e>>2]=g+4;b[a>>1]=d;a=1;return a|0}else{a=Hd[g&255](a,d,e)|0;return a|0}return 0}function PN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a+576>>2]|0;if(!e)Ra(234176,229736,648,230776);f=c[e+48>>2]|0;if(!f)Ra(230800,229736,649,230776);if((b|0)==317){f=c[d>>2]|0;b=c[f>>2]|0;c[d>>2]=f+4;c[e>>2]=b&65535;d=a+48|0;c[d>>2]=c[d>>2]|4;a=a+12|0;c[a>>2]=c[a>>2]|8;a=1;return a|0}else{a=Hd[f&255](a,b,d)|0;return a|0}return 0}function QN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;e=c[a+576>>2]|0;if(c[a+48>>2]&4){Xb(230672,13,1,b|0)|0;f=c[e>>2]|0;if((f|0)==2)Xb(230696,24,1,b|0)|0;else if((f|0)==1)Xb(230688,5,1,b|0)|0;else if((f|0)==3)Xb(230728,25,1,b|0)|0;f=c[e>>2]|0;c[g>>2]=f;c[g+4>>2]=f;Uc(b|0,230760,g|0)|0}e=c[e+52>>2]|0;if(!e){i=h;return}Ud[e&255](a,b,d);i=h;return}function RN(a){a=a|0;var b=0,d=0,f=0;f=c[a+576>>2]|0;if(!(Ed[c[f+56>>2]&511](a)|0)){f=0;return f|0}if(!(H_(a)|0)){f=0;return f|0}b=c[f>>2]|0;if((b|0)==3){c[f+40>>2]=85;b=a+532|0;d=c[b>>2]|0;if((d|0)!=136){c[f+28>>2]=d;c[b>>2]=136;d=a+540|0;c[f+32>>2]=c[d>>2];c[d>>2]=137;d=a+548|0;c[f+36>>2]=c[d>>2];c[d>>2]=137}if(!(c[a+12>>2]&128)){f=1;return f|0}c[a+652>>2]=37;f=1;return f|0}else if((b|0)==2){b=e[a+84>>1]|0;if((b|0)==8)c[f+40>>2]=80;else if((b|0)==16)c[f+40>>2]=81;else if((b|0)==32)c[f+40>>2]=82;b=a+532|0;d=c[b>>2]|0;if((d|0)!=136){c[f+28>>2]=d;c[b>>2]=136;d=a+540|0;c[f+32>>2]=c[d>>2];c[d>>2]=137;d=a+548|0;c[f+36>>2]=c[d>>2];c[d>>2]=137}if(!(c[a+12>>2]&128)){f=1;return f|0}b=f+40|0;d=c[b>>2]|0;if((d|0)==81){c[b>>2]=83;c[a+652>>2]=37;f=1;return f|0}if((d|0)!=82){f=1;return f|0}c[b>>2]=84;c[a+652>>2]=37;f=1;return f|0}else{f=1;return f|0}return 0}function SN(a){a=a|0;var b=0,d=0,f=0;f=c[a+576>>2]|0;if(!(Ed[c[f+60>>2]&511](a)|0)){f=0;return f|0}if(!(H_(a)|0)){f=0;return f|0}b=c[f>>2]|0;if((b|0)==3){c[f+24>>2]=89;b=a+536|0;d=c[b>>2]|0;if((d|0)==138){f=1;return f|0}c[f+12>>2]=d;c[b>>2]=138;d=a+544|0;c[f+16>>2]=c[d>>2];c[d>>2]=139;a=a+552|0;c[f+20>>2]=c[a>>2];c[a>>2]=139;f=1;return f|0}else if((b|0)==2){b=e[a+84>>1]|0;if((b|0)==16)c[f+24>>2]=87;else if((b|0)==8)c[f+24>>2]=86;else if((b|0)==32)c[f+24>>2]=88;b=a+536|0;d=c[b>>2]|0;if((d|0)==138){f=1;return f|0}c[f+12>>2]=d;c[b>>2]=138;d=a+544|0;c[f+16>>2]=c[d>>2];c[d>>2]=139;a=a+552|0;c[f+20>>2]=c[a>>2];c[a>>2]=139;f=1;return f|0}else{f=1;return f|0}return 0}function TN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;m=n;if(!(Rv(a)|0)){m=-1;i=n;return m|0}g=c[a+12>>2]|0;if(g&131072)Ra(231264,231304,372,231928);if(!(g&2048)){h=a+628|0;l=a+172|0;j=(c[l>>2]|0)+(b<<3)|0;j=Xd[c[a+640>>2]&255](c[h>>2]|0,c[j>>2]|0,c[j+4>>2]|0,0)|0;l=(c[l>>2]|0)+(b<<3)|0;if(!((j|0)==(c[l>>2]|0)?(H|0)==(c[l+4>>2]|0):0)){l=c[h>>2]|0;c[m>>2]=c[a+444>>2];c[m+4>>2]=b;Yv(l,f,231952,m);m=-1;i=n;return m|0}g=Hd[c[a+632>>2]&255](c[h>>2]|0,d,e)|0;if((g|0)==(e|0)){m=e;i=n;return m|0}b=c[h>>2]|0;c[m>>2]=c[a+444>>2];a=m+4|0;c[a>>2]=g;c[a+4>>2]=((g|0)<0)<<31>>31;a=m+12|0;c[a>>2]=e;c[a+4>>2]=((e|0)<0)<<31>>31;Yv(b,f,231992,m);m=-1;i=n;return m|0}o=(c[a+172>>2]|0)+(b<<3)|0;g=c[o>>2]|0;h=g+e|0;if(((g|0)==(g|0)?(((g|0)<0)<<31>>31|0)==(c[o+4>>2]|0):0)?(j=c[a+616>>2]|0,(j|0)>=(g|0)):0){if((g|e|0)<0|(h|0)>(j|0)){k=j-g|0;l=13}}else{k=0;l=13}if((l|0)==13?(k|0)!=(e|0):0){o=c[a+628>>2]|0;c[m>>2]=c[a+444>>2];c[m+4>>2]=b;a=m+8|0;c[a>>2]=k;c[a+4>>2]=((k|0)<0)<<31>>31;a=m+16|0;c[a>>2]=e;c[a+4>>2]=((e|0)<0)<<31>>31;Yv(o,f,232056,m);o=-1;i=n;return o|0}cK(d,(c[a+612>>2]|0)+g|0,e);o=e;i=n;return o|0}function UN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;m=n;if(!(Rv(a)|0)){m=-1;i=n;return m|0}g=c[a+12>>2]|0;if(g&131072)Ra(231264,231304,684,231720);if(!(g&2048)){h=a+628|0;l=a+172|0;j=(c[l>>2]|0)+(b<<3)|0;j=Xd[c[a+640>>2]&255](c[h>>2]|0,c[j>>2]|0,c[j+4>>2]|0,0)|0;l=(c[l>>2]|0)+(b<<3)|0;if(!((j|0)==(c[l>>2]|0)?(H|0)==(c[l+4>>2]|0):0)){l=c[h>>2]|0;d=c[a+488>>2]|0;c[m>>2]=c[a+444>>2];c[m+4>>2]=d;c[m+8>>2]=b;Yv(l,f,231744,m);m=-1;i=n;return m|0}g=Hd[c[a+632>>2]&255](c[h>>2]|0,d,e)|0;if((g|0)==(e|0)){m=e;i=n;return m|0}b=c[h>>2]|0;l=c[a+488>>2]|0;c[m>>2]=c[a+444>>2];c[m+4>>2]=l;a=m+8|0;c[a>>2]=g;c[a+4>>2]=((g|0)<0)<<31>>31;a=m+16|0;c[a>>2]=e;c[a+4>>2]=((e|0)<0)<<31>>31;Yv(b,f,231792,m);m=-1;i=n;return m|0}o=(c[a+172>>2]|0)+(b<<3)|0;g=c[o>>2]|0;h=g+e|0;if(((g|0)==(g|0)?(((g|0)<0)<<31>>31|0)==(c[o+4>>2]|0):0)?(j=c[a+616>>2]|0,(j|0)>=(g|0)):0){if((g|e|0)<0|(h|0)>(j|0)){k=j-g|0;l=13}}else{k=0;l=13}if((l|0)==13?(k|0)!=(e|0):0){o=c[a+628>>2]|0;l=c[a+488>>2]|0;c[m>>2]=c[a+444>>2];c[m+4>>2]=l;c[m+8>>2]=b;a=m+12|0;c[a>>2]=k;c[a+4>>2]=((k|0)<0)<<31>>31;a=m+20|0;c[a>>2]=e;c[a+4>>2]=((e|0)<0)<<31>>31;Yv(o,f,231856,m);o=-1;i=n;return o|0}cK(d,(c[a+612>>2]|0)+g|0,e);o=e;i=n;return o|0}function VN(a){a=a|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=b[a+84>>1]|0;if(d<<16>>16==4){e=1;i=f;return e|0}a=c[a+628>>2]|0;c[e>>2]=d&65535;Yv(a,232840,232864,e);e=0;i=f;return e|0}function WN(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;i=i+32|0;u=v;q=b+580|0;if((f|0)%(c[q>>2]|0)|0){Yv(c[b+628>>2]|0,232640,232664,u);w=0;i=v;return w|0}if((f|0)<=0){w=1;i=v;return w|0}r=b+56|0;s=b+604|0;t=b+608|0;p=f;h=c[t>>2]|0;j=c[s>>2]|0;o=e;while(1){e=c[r>>2]|0;f=(e|0)>0;if((h|0)>0&f){f=o;k=j;l=0;g=0;while(1){j=k+1|0;m=d[k>>0]|0;n=h+-1|0;h=m&192;do if((h|0)==128){h=m>>>3&7;do if((h|0)!=4){h=(c[232736+(h<<2)>>2]|0)+l&15;k=g+1|0;if(!(g&1)){a[f>>0]=h<<4;l=h;g=k;break}else{a[f>>0]=d[f>>0]|0|h;f=f+1|0;l=h;g=k;break}}while(0);h=m&7;if((h|0)!=4){h=(c[232736+(h<<2)>>2]|0)+l&15;if((g|0)<(e|0)){k=g+1|0;if(!(g&1)){a[f>>0]=h<<4;m=f;l=h;g=k;break}else{a[f>>0]=d[f>>0]|0|h;m=f+1|0;l=h;g=k;break}}else{m=f;l=h}}else m=f}else if((h|0)==192){h=m&15;k=g+1|0;if(!(g&1)){a[f>>0]=m<<4;m=f;l=h;g=k;break}else{a[f>>0]=d[f>>0]|0|h;m=f+1|0;l=h;g=k;break}}else if((h|0)==64){h=m>>>4&3;do if((h|0)!=2){h=(c[232720+(h<<2)>>2]|0)+l&15;k=g+1|0;if(!(g&1)){a[f>>0]=h<<4;l=h;g=k;break}else{a[f>>0]=d[f>>0]|0|h;f=f+1|0;l=h;g=k;break}}while(0);h=m>>>2&3;do if((h|0)!=2){h=(c[232720+(h<<2)>>2]|0)+l&15;if((g|0)<(e|0)){k=g+1|0;if(!(g&1)){a[f>>0]=h<<4;l=h;g=k;break}else{a[f>>0]=d[f>>0]|0|h;f=f+1|0;l=h;g=k;break}}else l=h}while(0);h=m&3;if((h|0)!=2){h=(c[232720+(h<<2)>>2]|0)+l&15;if((g|0)<(e|0)){k=g+1|0;if(!(g&1)){a[f>>0]=h<<4;m=f;l=h;g=k;break}else{a[f>>0]=d[f>>0]|0|h;m=f+1|0;l=h;g=k;break}}else{m=f;l=h}}else m=f}else if(!h){if(!(g&1)){k=l<<4|l;h=m}else{k=d[f>>0]|0|l;a[f>>0]=k;f=f+1|0;k=k&255;h=m+-1|0;g=g+1|0}g=h+g|0;if((g|0)<(e|0)&(h|0)>0){l=(h+-1|0)>>>1;m=l+1|0;sfa(f|0,k&255|0,m|0)|0;f=f+m|0;h=h+-2-(l<<1)|0}if((h|0)==-1){f=f+-1|0;a[f>>0]=(d[f>>0]|0)&240}m=f;l=k&15}else m=f;while(0);f=(g|0)<(e|0);if((n|0)>0&f){f=m;k=j;h=n}else{h=n;break}}}else g=0;c[s>>2]=j;c[t>>2]=h;if((g|0)!=(e|0))break;g=c[q>>2]|0;p=p-g|0;if((p|0)<=0){g=1;w=45;break}else o=o+g|0}if((w|0)==45){i=v;return g|0}w=c[b+628>>2]|0;b=c[b+444>>2]|0;c[u>>2]=f?232808:232824;c[u+4>>2]=b;b=u+8|0;c[b>>2]=g;c[b+4>>2]=((g|0)<0)<<31>>31;b=u+16|0;c[b>>2]=e;c[b+4>>2]=((e|0)<0)<<31>>31;Yv(w,232704,232768,u);w=0;i=v;return w|0}function XN(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;if((b[a+126>>1]|0)!=1)Ra(233808,233656,630,233856);j=a+172|0;k=a+168|0;l=aK(c[j>>2]|0,(c[k>>2]<<3)+8|0)|0;e=a+176|0;f=aK(c[e>>2]|0,(c[k>>2]<<3)+8|0)|0;g=(l|0)==0;h=(f|0)==0;if(!(g|h)){c[j>>2]=l;c[e>>2]=f;bK(l+(c[k>>2]<<3)|0,0,8);bK((c[e>>2]|0)+(c[k>>2]<<3)|0,0,8);c[k>>2]=(c[k>>2]|0)+1;l=a+12|0;c[l>>2]=c[l>>2]|8;l=1;i=m;return l|0}if(!g)$J(l);if(!h)$J(f);c[k>>2]=0;Yv(c[a+628>>2]|0,d,233872,m);l=0;i=m;return l|0}function YN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;o=p;l=a+172|0;j=(c[l>>2]|0)+(b<<3)|0;n=c[j>>2]|0;j=c[j+4>>2]|0;h=(n|0)==0&(j|0)==0;if(!h?(g=a+456|0,f=c[g>>2]|0,g=c[g+4>>2]|0,!((f|0)==0&(g|0)==0)):0){m=-1;n=-1}else{if(!(c[a+168>>2]|0))Ra(233632,233656,668,233688);k=a+176|0;g=(c[k>>2]|0)+(b<<3)|0;f=c[g>>2]|0;g=c[g+4>>2]|0;if(!((f|0)==0&(g|0)==0)?(m=((e|0)<0)<<31>>31,!(h|(g>>>0>>0|(g|0)==(m|0)&f>>>0>>0))):0){h=a+628|0;g=Xd[c[a+640>>2]&255](c[h>>2]|0,n,j,0)|0;f=H;m=(c[l>>2]|0)+(b<<3)|0;if(!((g|0)==(c[m>>2]|0)?(f|0)==(c[m+4>>2]|0):0)){b=c[h>>2]|0;c[o>>2]=c[a+444>>2];Yv(b,233688,233712,o);o=0;i=p;return o|0}}else{g=Xd[c[a+640>>2]&255](c[a+628>>2]|0,0,0,2)|0;f=H;m=(c[l>>2]|0)+(b<<3)|0;c[m>>2]=g;c[m+4>>2]=f;m=a+12|0;c[m>>2]=c[m>>2]|2097152}l=a+456|0;n=l;c[n>>2]=g;c[n+4>>2]=f;g=(c[k>>2]|0)+(b<<3)|0;n=g;m=c[n>>2]|0;n=c[n+4>>2]|0;c[g>>2]=0;c[g+4>>2]=0;g=l;f=c[g>>2]|0;g=c[g+4>>2]|0}h=((e|0)<0)<<31>>31;k=yfa(f|0,g|0,e|0,h|0)|0;j=a+12|0;l=(c[j>>2]&524288|0)==0;k=l?k:k;l=l?0:H;if(l>>>0>>0|(l|0)==(g|0)&k>>>0>>0|(l>>>0>>0|(l|0)==(h|0)&k>>>0>>0)){Yv(c[a+628>>2]|0,233688,233744,o);o=0;i=p;return o|0}f=a+628|0;if((Hd[c[a+636>>2]&255](c[f>>2]|0,d,e)|0)!=(e|0)){b=c[f>>2]|0;c[o>>2]=c[a+444>>2];Yv(b,233688,233776,o);o=0;i=p;return o|0}o=a+456|0;c[o>>2]=k;c[o+4>>2]=l;b=(c[a+176>>2]|0)+(b<<3)|0;a=b;a=yfa(c[a>>2]|0,c[a+4>>2]|0,e|0,h|0)|0;o=H;c[b>>2]=a;c[b+4>>2]=o;if((a|0)==(m|0)&(o|0)==(n|0)){o=1;i=p;return o|0}c[j>>2]=c[j>>2]|2097152;o=1;i=p;return o|0}function ZN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+576>>2]|0;if((b|0)==65557){a=c[e+120>>2]|0;e=c[d>>2]|0;b=c[e>>2]|0;c[d>>2]=e+4;c[b>>2]=a;b=1;return b|0}else{b=Hd[c[e+128>>2]&255](a,b,d)|0;return b|0}return 0}function _N(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;f=g;e=c[a+576>>2]|0;if((b|0)!=65557){f=Hd[c[e+132>>2]&255](a,b,d)|0;i=g;return f|0}h=c[d>>2]|0;b=c[h>>2]|0;c[d>>2]=h+4;c[e+120>>2]=b;if(!(c[e+124>>2]&2)){h=1;i=g;return h|0}if(!(vH(e+64|0,b,0)|0)){h=1;i=g;return h|0}h=c[a+628>>2]|0;d=c[e+88>>2]|0;c[f>>2]=(d|0)==0?356424:d;Yv(h,234512,234280,f);h=0;i=g;return h|0}function $N(a){a=a|0;return 1}function aO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g;d=c[a+576>>2]|0;if(!d)Ra(234176,233984,102,234496);e=d+124|0;b=d+64|0;if(c[e>>2]&2){tH(b)|0;c[e>>2]=0}if(!(zH(b,268176,56)|0)){c[e>>2]=c[e>>2]|1;f=1;i=g;return f|0}else{e=c[a+628>>2]|0;a=c[d+88>>2]|0;c[f>>2]=(a|0)==0?356424:a;Yv(e,234496,234328,f);f=0;i=g;return f|0}return 0}function bO(a,b){a=a|0;b=b|0;var d=0;b=c[a+576>>2]|0;if(!b)Ra(234176,233984,129,234480);if(!(c[b+124>>2]&1))Ed[c[a+508>>2]&511](a)|0;d=b+64|0;c[d>>2]=c[a+588>>2];c[b+68>>2]=c[a+608>>2];return (yH(d)|0)==0|0}function cO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;m=o;e=c[a+576>>2]|0;if(!e)Ra(234176,233984,155,234336);if((c[e+124>>2]|0)!=1)Ra(234352,233984,156,234336);j=a+604|0;k=e+64|0;c[k>>2]=c[j>>2];l=a+608|0;h=e+68|0;c[h>>2]=c[l>>2];c[e+76>>2]=b;f=e+80|0;c[f>>2]=d;g=a+628|0;d=a+444|0;e=e+88|0;do{b=AH(k,1)|0;if((b|0)==1){n=10;break}else if((b|0)==-3){b=c[g>>2]|0;a=c[e>>2]|0;c[m>>2]=c[d>>2];c[m+4>>2]=(a|0)==0?356424:a;Yv(b,234336,234384,m);if(CH(k)|0){e=0;n=13;break}}else if(b){n=8;break}}while((c[f>>2]|0)!=0);if((n|0)==8){n=c[g>>2]|0;l=c[e>>2]|0;c[m>>2]=(l|0)==0?356424:l;Yv(n,234336,234280,m);n=0;i=o;return n|0}else if((n|0)==10){e=c[f>>2]|0;if(e){n=c[g>>2]|0;c[m>>2]=c[d>>2];l=m+4|0;c[l>>2]=e;c[l+4>>2]=0;Yv(n,234336,234424,m);n=0;i=o;return n|0}}else if((n|0)==13){i=o;return e|0}c[j>>2]=c[k>>2];c[l>>2]=c[h>>2];n=1;i=o;return n|0}function dO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g;d=c[a+576>>2]|0;if(!d)Ra(234176,233984,209,234312);e=d+124|0;b=d+64|0;if(c[e>>2]&1){BH(b)|0;c[e>>2]=0}if(!(rH(b,c[d+120>>2]|0,268176,56)|0)){c[e>>2]=c[e>>2]|2;f=1;i=g;return f|0}else{e=c[a+628>>2]|0;a=c[d+88>>2]|0;c[f>>2]=(a|0)==0?356424:a;Yv(e,234312,234328,f);f=0;i=g;return f|0}return 0}function eO(a,b){a=a|0;b=b|0;b=c[a+576>>2]|0;if(!b)Ra(234176,233984,234,234296);if((c[b+124>>2]|0)!=2)Ed[c[a+516>>2]&511](a)|0;c[b+76>>2]=c[a+588>>2];c[b+80>>2]=c[a+592>>2];return (uH(b+64|0)|0)==0|0}function fO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;n=p;b=c[a+576>>2]|0;f=b+64|0;c[b+68>>2]=0;g=b+80|0;h=a+592|0;j=a+608|0;k=a+588|0;l=b+76|0;while(1){m=wH(f,4)|0;if(m>>>0>=2)break;d=c[g>>2]|0;e=c[h>>2]|0;if((e|0)!=(d|0)){c[j>>2]=e-d;vx(a)|0;c[l>>2]=c[k>>2];c[g>>2]=c[h>>2]}if((m|0)==1){b=1;o=7;break}}if((o|0)==7){i=p;return b|0}o=c[a+628>>2]|0;a=c[b+88>>2]|0;c[n>>2]=(a|0)==0?356424:a;Yv(o,234264,234280,n);o=0;i=p;return o|0}function gO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+16|0;l=m;j=c[a+576>>2]|0;if(!j)Ra(234176,233984,261,234192);if((c[j+124>>2]|0)!=2)Ra(234208,233984,262,234192);k=j+64|0;c[k>>2]=b;h=j+68|0;c[h>>2]=d;f=j+80|0;g=a+592|0;e=a+608|0;b=a+588|0;d=j+76|0;while(1){if(wH(k,0)|0)break;if(!(c[f>>2]|0)){c[e>>2]=c[g>>2];vx(a)|0;c[d>>2]=c[b>>2];c[f>>2]=c[g>>2]}if(!(c[h>>2]|0)){e=1;n=11;break}}if((n|0)==11){i=m;return e|0}n=c[a+628>>2]|0;a=c[j+88>>2]|0;c[l>>2]=(a|0)==0?356424:a;Yv(n,234192,234240,l);n=0;i=m;return n|0}function hO(a){a=a|0;var b=0,d=0,e=0,f=0;b=a+576|0;d=c[b>>2]|0;if(!d)Ra(234152,233984,332,234160);Dw(a)|0;c[a+672>>2]=c[d+128>>2];c[a+668>>2]=c[d+132>>2];f=d+124|0;e=c[f>>2]|0;if(!(e&2)){if(e&1){BH(d+64|0)|0;c[f>>2]=0}}else{tH(d+64|0)|0;c[f>>2]=0}$J(d);c[b>>2]=0;nv(a);return}function iO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;if(!e){e=(b|0)>0;if(!(e|(d|0)>1))return;if(e){g=a+((d<<1)+-2<<2)|0;h=0;do{if((h|0)<(d|0))e=a+(h<<1<<2)|0;else e=g;i=h;h=h+1|0;if((h|0)<(d|0))f=a+(h<<1<<2)|0;else f=g;i=a+((i<<1|1)<<2)|0;c[i>>2]=(c[i>>2]|0)-((c[f>>2]|0)+(c[e>>2]|0)>>1)}while((h|0)!=(b|0))}if((d|0)<=0)return;h=a+4|0;g=a+((b<<1)+-1<<2)|0;i=0;do{if((i|0)>=1)if((i|0)>(b|0))e=g;else e=a+((i<<1)+-1<<2)|0;else e=h;if((i|0)<(b|0))f=a+((i<<1|1)<<2)|0;else f=g;j=a+(i<<1<<2)|0;c[j>>2]=((c[e>>2]|0)+2+(c[f>>2]|0)>>2)+(c[j>>2]|0);i=i+1|0}while((i|0)!=(d|0));return}if((d|0)==0&(b|0)==1){c[a>>2]=c[a>>2]<<1;return}if((b|0)>0){h=a+4|0;g=a+((d<<1)+-1<<2)|0;i=0;do{if((i|0)<(d|0))e=a+((i<<1|1)<<2)|0;else e=g;f=c[e>>2]|0;if((i|0)>=1)if((i|0)>(d|0))e=g;else e=a+((i<<1)+-1<<2)|0;else e=h;j=a+(i<<1<<2)|0;c[j>>2]=(c[j>>2]|0)-((c[e>>2]|0)+f>>1);i=i+1|0}while((i|0)!=(b|0))}if((d|0)<=0)return;g=a+((b<<1)+-2<<2)|0;h=0;do{if((h|0)<(b|0))e=a+(h<<1<<2)|0;else e=g;i=h;h=h+1|0;if((h|0)<(b|0))f=a+(h<<1<<2)|0;else f=g;i=a+((i<<1|1)<<2)|0;c[i>>2]=((c[e>>2]|0)+2+(c[f>>2]|0)>>2)+(c[i>>2]|0)}while((h|0)!=(d|0));return}function jO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=(c[a+8>>2]|0)-(c[a>>2]|0)|0;g=c[a+16>>2]|0;i=g+-1|0;x=c[a+32>>2]|0;h=c[a+24>>2]|0;f=(i|0)==0;if(f)a=0;else{d=h;e=i;a=0;do{v=d;d=d+136|0;u=(c[v+144>>2]|0)-(c[d>>2]|0)|0;a=a>>>0>>0?u:a;v=(c[v+148>>2]|0)-(c[v+140>>2]|0)|0;a=a>>>0>>0?v:a;e=e+-1|0}while((e|0)!=0);a=a<<2}v=qea(a)|0;if(!v){b=0;return b|0}if(!f){t=g+-2|0;u=t;a=h+(i*136|0)|0;t=h+(t*136|0)|0;while(1){q=c[a>>2]|0;s=(c[a+8>>2]|0)-q|0;m=c[a+4>>2]|0;o=(c[a+12>>2]|0)-m|0;p=(c[t+8>>2]|0)-(c[t>>2]|0)|0;a=c[t+12>>2]|0;f=c[t+4>>2]|0;l=a-f|0;q=q&1;m=m&1;n=o-l|0;r=(s|0)>0;a:do if(r){j=(a|0)==(f|0);h=(o|0)==(l|0);g=v+((m^1)<<2)|0;i=da(l,w)|0;k=v+(m<<2)|0;if((o|0)>0){e=0;while(1){f=x+(e<<2)|0;a=0;do{c[v+(a<<2)>>2]=c[x+((da(a,w)|0)+e<<2)>>2];a=a+1|0}while((a|0)!=(o|0));Yd[b&63](v,n,l,m);if(!j){d=l;a=k;while(1){d=d+-1|0;c[f>>2]=c[a>>2];if(!d)break;else{f=f+(w<<2)|0;a=a+8|0}}}if(!h){a=n;f=x+(e+i<<2)|0;d=g;while(1){a=a+-1|0;c[f>>2]=c[d>>2];if(!a)break;else{f=f+(w<<2)|0;d=d+8|0}}}e=e+1|0;if((e|0)==(s|0))break a}}if(j){f=0;while(1){Yd[b&63](v,n,l,m);if(!h){a=n;d=x+(f+i<<2)|0;e=g;while(1){a=a+-1|0;c[d>>2]=c[e>>2];if(!a)break;else{d=d+(w<<2)|0;e=e+8|0}}}f=f+1|0;if((f|0)==(s|0))break a}}else e=0;do{Yd[b&63](v,n,l,m);a=l;f=x+(e<<2)|0;d=k;while(1){a=a+-1|0;c[f>>2]=c[d>>2];if(!a)break;else{f=f+(w<<2)|0;d=d+8|0}}if(!h){a=n;f=x+(e+i<<2)|0;d=g;while(1){a=a+-1|0;c[f>>2]=c[d>>2];if(!a)break;else{f=f+(w<<2)|0;d=d+8|0}}}e=e+1|0}while((e|0)!=(s|0))}while(0);k=s-p|0;if((o|0)>0){h=(p|0)>0;g=v+(q<<2)|0;i=(k|0)>0;j=v+((q^1)<<2)|0;l=0;do{e=da(l,w)|0;f=x+(e<<2)|0;if(r){a=0;do{c[v+(a<<2)>>2]=c[x+(a+e<<2)>>2];a=a+1|0}while((a|0)!=(s|0))}Yd[b&63](v,k,p,q);if(h){d=0;a=g;while(1){c[f>>2]=c[a>>2];d=d+1|0;if((d|0)==(p|0))break;else{f=f+4|0;a=a+8|0}}}if(i){d=0;a=x+(e+p<<2)|0;f=j;while(1){c[a>>2]=c[f>>2];d=d+1|0;if((d|0)==(k|0))break;else{a=a+4|0;f=f+8|0}}}l=l+1|0}while((l|0)!=(o|0))}if(!u)break;else{a=t;u=u+-1|0;t=t+-136|0}}}rea(v);b=1;return b|0}function kO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=c[a>>2]|0;j=c[a+4>>2]|0;k=c[a+8>>2]|0;if(!(c[a+12>>2]|0)){g=(j|0)>0;if(!(g|(k|0)>1))return;if((k|0)>0){b=i+4|0;d=i+((j<<1)+-1<<2)|0;h=0;do{if((h|0)>=1)if((h|0)>(j|0))a=d;else a=i+((h<<1)+-1<<2)|0;else a=b;f=h<<1;if((h|0)<(j|0))e=i+((f|1)<<2)|0;else e=d;f=i+(f<<2)|0;c[f>>2]=(c[f>>2]|0)-((c[a>>2]|0)+2+(c[e>>2]|0)>>2);h=h+1|0}while((h|0)!=(k|0))}if(!g)return;d=i+((k<<1)+-2<<2)|0;e=0;do{if((e|0)<(k|0))a=i+(e<<1<<2)|0;else a=d;f=e;e=e+1|0;if((e|0)<(k|0))b=i+(e<<1<<2)|0;else b=d;h=i+((f<<1|1)<<2)|0;c[h>>2]=((c[b>>2]|0)+(c[a>>2]|0)>>1)+(c[h>>2]|0)}while((e|0)!=(j|0));return}if((k|0)==0&(j|0)==1){c[i>>2]=(c[i>>2]|0)/2|0;return}if((k|0)>0){d=i+((j<<1)+-2<<2)|0;e=0;do{if((e|0)<(j|0))b=i+(e<<1<<2)|0;else b=d;f=e;e=e+1|0;if((e|0)<(j|0))a=i+(e<<1<<2)|0;else a=d;h=i+((f<<1|1)<<2)|0;c[h>>2]=(c[h>>2]|0)-((c[b>>2]|0)+2+(c[a>>2]|0)>>2)}while((e|0)!=(k|0))}if((j|0)<=0)return;e=i+4|0;d=i+((k<<1)+-1<<2)|0;f=0;do{if((f|0)<(k|0))a=i+((f<<1|1)<<2)|0;else a=d;b=c[a>>2]|0;if((f|0)>=1)if((f|0)>(k|0))a=d;else a=i+((f<<1)+-1<<2)|0;else a=e;h=i+(f<<1<<2)|0;c[h>>2]=((c[a>>2]|0)+b>>1)+(c[h>>2]|0);f=f+1|0}while((f|0)!=(j|0));return}function lO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;if(!e){k=(b|0)>0;if(!(k|(d|0)>1))return;if(k){g=a+((d<<1)+-2<<2)|0;h=0;do{if((h|0)<(d|0))f=a+(h<<1<<2)|0;else f=g;i=h;h=h+1|0;if((h|0)<(d|0))e=a+(h<<1<<2)|0;else e=g;j=(c[e>>2]|0)+(c[f>>2]|0)|0;j=Ifa(j|0,((j|0)<0)<<31>>31|0,12993,0)|0;j=yfa(j&4096|0,0,j|0,H|0)|0;j=Bfa(j|0,H|0,13)|0;i=a+((i<<1|1)<<2)|0;c[i>>2]=(c[i>>2]|0)-j}while((h|0)!=(b|0))}j=(d|0)>0;if(j){g=a+4|0;f=a+((b<<1)+-1<<2)|0;i=0;do{if((i|0)>=1)if((i|0)>(b|0))e=f;else e=a+((i<<1)+-1<<2)|0;else e=g;if((i|0)<(b|0))h=a+((i<<1|1)<<2)|0;else h=f;e=(c[h>>2]|0)+(c[e>>2]|0)|0;e=Ifa(e|0,((e|0)<0)<<31>>31|0,434,0)|0;e=yfa(e&4096|0,0,e|0,H|0)|0;e=Bfa(e|0,H|0,13)|0;h=a+(i<<1<<2)|0;c[h>>2]=(c[h>>2]|0)-e;i=i+1|0}while((i|0)!=(d|0))}if(k){f=a+((d<<1)+-2<<2)|0;g=0;do{if((g|0)<(d|0))e=a+(g<<1<<2)|0;else e=f;i=g;g=g+1|0;if((g|0)<(d|0))h=a+(g<<1<<2)|0;else h=f;h=(c[h>>2]|0)+(c[e>>2]|0)|0;h=Ifa(h|0,((h|0)<0)<<31>>31|0,7233,0)|0;h=yfa(h&4096|0,0,h|0,H|0)|0;h=Bfa(h|0,H|0,13)|0;i=a+((i<<1|1)<<2)|0;c[i>>2]=h+(c[i>>2]|0)}while((g|0)!=(b|0))}if(j){f=a+4|0;g=a+((b<<1)+-1<<2)|0;i=0;do{if((i|0)>=1)if((i|0)>(b|0))h=g;else h=a+((i<<1)+-1<<2)|0;else h=f;if((i|0)<(b|0))e=a+((i<<1|1)<<2)|0;else e=g;e=(c[e>>2]|0)+(c[h>>2]|0)|0;e=Ifa(e|0,((e|0)<0)<<31>>31|0,3633,0)|0;e=yfa(e&4096|0,0,e|0,H|0)|0;e=Bfa(e|0,H|0,13)|0;h=a+(i<<1<<2)|0;c[h>>2]=e+(c[h>>2]|0);i=i+1|0}while((i|0)!=(d|0))}if(k){e=0;do{k=a+((e<<1|1)<<2)|0;i=c[k>>2]|0;i=Ifa(i|0,((i|0)<0)<<31>>31|0,5038,0)|0;i=yfa(i&4096|0,0,i|0,H|0)|0;i=Bfa(i|0,H|0,13)|0;c[k>>2]=i;e=e+1|0}while((e|0)!=(b|0))}if(j)e=0;else return;do{k=a+(e<<1<<2)|0;i=c[k>>2]|0;i=Ifa(i|0,((i|0)<0)<<31>>31|0,6659,0)|0;i=yfa(i&4096|0,0,i|0,H|0)|0;i=Bfa(i|0,H|0,13)|0;c[k>>2]=i;e=e+1|0}while((e|0)!=(d|0));return}else{k=(d|0)>0;if(!(k|(b|0)>1))return;j=(b|0)>0;if(j){f=a+4|0;g=a+((d<<1)+-1<<2)|0;i=0;do{if((i|0)<(d|0))e=a+((i<<1|1)<<2)|0;else e=g;h=c[e>>2]|0;if((i|0)>=1)if((i|0)>(d|0))e=g;else e=a+((i<<1)+-1<<2)|0;else e=f;e=(c[e>>2]|0)+h|0;e=Ifa(e|0,((e|0)<0)<<31>>31|0,12993,0)|0;e=yfa(e&4096|0,0,e|0,H|0)|0;e=Bfa(e|0,H|0,13)|0;h=a+(i<<1<<2)|0;c[h>>2]=(c[h>>2]|0)-e;i=i+1|0}while((i|0)!=(b|0))}if(k){f=a+((b<<1)+-2<<2)|0;g=0;do{if((g|0)<(b|0))e=a+(g<<1<<2)|0;else e=f;i=g;g=g+1|0;if((g|0)<(b|0))h=a+(g<<1<<2)|0;else h=f;h=(c[h>>2]|0)+(c[e>>2]|0)|0;h=Ifa(h|0,((h|0)<0)<<31>>31|0,434,0)|0;h=yfa(h&4096|0,0,h|0,H|0)|0;h=Bfa(h|0,H|0,13)|0;i=a+((i<<1|1)<<2)|0;c[i>>2]=(c[i>>2]|0)-h}while((g|0)!=(d|0))}if(j){f=a+4|0;g=a+((d<<1)+-1<<2)|0;i=0;do{if((i|0)<(d|0))e=a+((i<<1|1)<<2)|0;else e=g;h=c[e>>2]|0;if((i|0)>=1)if((i|0)>(d|0))e=g;else e=a+((i<<1)+-1<<2)|0;else e=f;e=(c[e>>2]|0)+h|0;e=Ifa(e|0,((e|0)<0)<<31>>31|0,7233,0)|0;e=yfa(e&4096|0,0,e|0,H|0)|0;e=Bfa(e|0,H|0,13)|0;h=a+(i<<1<<2)|0;c[h>>2]=e+(c[h>>2]|0);i=i+1|0}while((i|0)!=(b|0))}if(k){f=a+((b<<1)+-2<<2)|0;g=0;do{if((g|0)<(b|0))e=a+(g<<1<<2)|0;else e=f;i=g;g=g+1|0;if((g|0)<(b|0))h=a+(g<<1<<2)|0;else h=f;h=(c[h>>2]|0)+(c[e>>2]|0)|0;h=Ifa(h|0,((h|0)<0)<<31>>31|0,3633,0)|0;h=yfa(h&4096|0,0,h|0,H|0)|0;h=Bfa(h|0,H|0,13)|0;i=a+((i<<1|1)<<2)|0;c[i>>2]=h+(c[i>>2]|0)}while((g|0)!=(d|0))}if(j){e=0;do{i=a+(e<<1<<2)|0;j=c[i>>2]|0;j=Ifa(j|0,((j|0)<0)<<31>>31|0,5038,0)|0;j=yfa(j&4096|0,0,j|0,H|0)|0;j=Bfa(j|0,H|0,13)|0;c[i>>2]=j;e=e+1|0}while((e|0)!=(b|0))}if(k)e=0;else return;do{k=a+((e<<1|1)<<2)|0;i=c[k>>2]|0;i=Ifa(i|0,((i|0)<0)<<31>>31|0,6659,0)|0;i=yfa(i&4096|0,0,i|0,H|0)|0;i=Bfa(i|0,H|0,13)|0;c[k>>2]=i;e=e+1|0}while((e|0)!=(d|0));return}}function mO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=c[a>>2]|0;j=c[a+12>>2]|0;r=c[a+8>>2]|0;o=d*3|0;m=1-j|0;l=a+4|0;k=r;a=0;while(1){h=n+(j<<4)|0;if(((k+o|0)<(e|0)?(b&15|0)==0:0)?((h|d)&15|0)==0:0){if((k|0)>0){f=0;do{h=f<<3;g[n+(j<<4)+(h<<2)>>2]=+g[b+(f<<2)>>2];i=f+d|0;g[n+(j<<4)+((h|1)<<2)>>2]=+g[b+(i<<2)>>2];i=i+d|0;g[n+(j<<4)+((h|2)<<2)>>2]=+g[b+(i<<2)>>2];g[n+(j<<4)+((h|3)<<2)>>2]=+g[b+(i+d<<2)>>2];f=f+1|0}while((f|0)!=(k|0))}}else s=3;if((s|0)==3?(s=0,(k|0)>0):0){i=0;do{f=i<<3;g[n+(j<<4)+(f<<2)>>2]=+g[b+(i<<2)>>2];h=i+d|0;if(((h|0)<(e|0)?(g[n+(j<<4)+((f|1)<<2)>>2]=+g[b+(h<<2)>>2],p=h+d|0,(p|0)<(e|0)):0)?(g[n+(j<<4)+((f|2)<<2)>>2]=+g[b+(p<<2)>>2],q=p+d|0,(q|0)<(e|0)):0)g[n+(j<<4)+((f|3)<<2)>>2]=+g[b+(q<<2)>>2];i=i+1|0}while((i|0)!=(k|0))}a=a+1|0;if((a|0)==2)break;else{b=b+(r<<2)|0;e=e-r|0;j=m;k=c[l>>2]|0}}return}function nO(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,i=0,j=0,k=0.0,l=0.0,m=0,n=0.0,o=0,p=0;do if(!(c[a+12>>2]|0)){d=c[a+8>>2]|0;if((c[a+4>>2]|0)>0){b=c[a>>2]|0;if((d|0)>0){f=0;h=1;j=9;break}else{i=0;h=1;break}}if((d|0)>1){f=0;e=1;j=7}else return}else{d=c[a+8>>2]|0;if((d|0)<=0)if((c[a+4>>2]|0)>1){b=c[a>>2]|0;i=1;h=0;break}else return;else{f=1;e=0;j=7}}while(0);if((j|0)==7){b=c[a>>2]|0;h=e;j=9}if((j|0)==9){e=0;do{j=e<<3;o=b+(f<<4)+(j<<2)|0;m=b+(f<<4)+((j|1)<<2)|0;n=+g[m>>2];i=b+(f<<4)+((j|2)<<2)|0;l=+g[i>>2];j=b+(f<<4)+((j|3)<<2)|0;k=+g[j>>2];g[o>>2]=+g[o>>2]*1.2301740646362305;g[m>>2]=n*1.2301740646362305;g[i>>2]=l*1.2301740646362305;g[j>>2]=k*1.2301740646362305;e=e+1|0}while((e|0)!=(d|0));i=f}e=c[a+4>>2]|0;if((e|0)>0){f=0;do{o=f<<3;a=b+(h<<4)+(o<<2)|0;m=b+(h<<4)+((o|1)<<2)|0;k=+g[m>>2];j=b+(h<<4)+((o|2)<<2)|0;l=+g[j>>2];o=b+(h<<4)+((o|3)<<2)|0;n=+g[o>>2];g[a>>2]=+g[a>>2]*1.625732421875;g[m>>2]=k*1.625732421875;g[j>>2]=l*1.625732421875;g[o>>2]=n*1.625732421875;f=f+1|0}while((f|0)!=(e|0))}p=b+(h<<4)|0;a=b+(i+1<<4)|0;f=e-i|0;f=(d|0)<(f|0)?d:f;W_(p,a,d,f,-.4435068666934967);m=b+(i<<4)|0;j=b+(h+1<<4)|0;o=d-h|0;o=(e|0)<(o|0)?e:o;W_(m,j,e,o,-.8829110860824585);W_(p,a,d,f,.05298011749982834);W_(m,j,e,o,1.5861343145370483);return}function oO(a,b){a=a|0;b=b|0;return}function pO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;if(!a)return;b=a+5164|0;d=c[b>>2]|0;if(d){rea(d);c[b>>2]=0}b=a+5576|0;d=c[b>>2]|0;if(d){rea(d);c[b>>2]=0}b=a+5600|0;d=c[b>>2]|0;if(d){rea(d);c[b>>2]=0}b=a+5596|0;d=c[b>>2]|0;if(d){rea(d);c[b>>2]=0}b=a+5616|0;d=c[b>>2]|0;if(d){rea(d);c[b>>2]=0;c[a+5624>>2]=0;c[a+5620>>2]=0}i=a+5604|0;b=c[i>>2]|0;if(b){h=a+5608|0;d=c[h>>2]|0;if(d){g=0;while(1){e=b+12|0;f=c[e>>2]|0;if(f){rea(f);c[e>>2]=0;d=c[h>>2]|0}g=g+1|0;if(g>>>0>=d>>>0)break;else b=b+20|0}b=c[i>>2]|0}rea(b);c[i>>2]=0}b=a+5592|0;d=c[b>>2]|0;if(d){rea(d);c[b>>2]=0}b=a+5584|0;d=c[b>>2]|0;if(!d)return;rea(d);c[b>>2]=0;c[a+5588>>2]=0;return}function qO(a,b,c){a=a|0;b=b|0;c=c|0;return 1}function rO(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)Ra(236352,236248,6865,242064);if(!b)Ra(249408,236248,6866,242064);if(!d)Ra(249008,236248,6867,242064);else return (c[a+8>>2]|0)==0&(c[a+184>>2]|0)!=0&(c[a+188>>2]|0)!=0&1|0;return 0}function sO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if(!b)Ra(250824,236248,7026,242048);if(!a)Ra(236352,236248,7027,242048);if(!d)Ra(249408,236248,7028,242048);if(!e)Ra(249008,236248,7029,242048);h=wy(b)|0;f=xy(b)|0;if(!h){d=1;yy(b);return d|0}i=0;g=f;f=1;while(1){if(!f)f=0;else f=(Hd[c[g>>2]&255](a,d,e)|0)!=0;f=f&1;i=i+1|0;if((i|0)==(h|0))break;else g=g+4|0}yy(b);return f|0}function tO(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+32|0;v=w;s=w+20|0;f=w+8|0;u=w+12|0;r=w+16|0;if(!d)Ra(249408,236248,6896,242136);if(!a)Ra(236352,236248,6897,242136);if(!e)Ra(249008,236248,6898,242136);t=a+8|0;c[t>>2]=1;a:do if((ay(d,s,2,e)|0)==2?(Hx(s,f,2),(c[f>>2]|0)==65359):0){c[t>>2]=2;p=dy(d)|0;p=yfa(p|0,H|0,-2,-1)|0;k=H;q=a+192|0;g=c[q>>2]|0;c[g>>2]=p;c[g+4>>2]=k;g=v;c[g>>2]=p;c[g+4>>2]=k;ry(e,4,242496,v)|0;g=c[q>>2]|0;k=c[g>>2]|0;if(!g)Ra(241968,236248,6455,242456);l=g+24|0;f=c[l>>2]|0;j=g+32|0;h=c[j>>2]|0;do if((f+1|0)>>>0>h>>>0){p=~~(+(h>>>0)+100.0)>>>0;c[j>>2]=p;f=g+28|0;g=tea(c[f>>2]|0,p*24|0)|0;if(!g){rea(c[f>>2]|0);c[f>>2]=0;c[j>>2]=0;c[l>>2]=0;ry(e,1,242368,v)|0;break a}else{c[f>>2]=g;f=c[l>>2]|0;break}}else g=c[g+28>>2]|0;while(0);b[g+(f*24|0)>>1]=-177;p=pfa(0,k|0,32)|0;o=g+(f*24|0)+8|0;c[o>>2]=p;c[o+4>>2]=H;c[g+(f*24|0)+16>>2]=2;c[l>>2]=f+1;o=a+16|0;if((ay(d,c[o>>2]|0,2,e)|0)!=2){ry(e,1,236472,v)|0;v=0;i=w;return v|0}Hx(c[o>>2]|0,u,2);f=c[u>>2]|0;b:do if((f|0)!=65424){p=a+20|0;c:while(1){if(f>>>0<65280){j=22;break}else g=235912;while(1){m=c[g>>2]|0;h=(m|0)==0;if(h|(m|0)==(f|0))break;else g=g+12|0}if(h){ry(e,2,242480,v)|0;l=2;while(1){do{if((ay(d,c[o>>2]|0,2,e)|0)!=2){j=28;break c}Hx(c[o>>2]|0,s,2);f=c[s>>2]|0}while(f>>>0<65280);h=235912;while(1){g=c[h>>2]|0;if((g|0)==0|(g|0)==(f|0)){j=h;f=h;break}else h=h+12|0}if(!(c[f+4>>2]&c[t>>2])){j=33;break c}if((g|0)==65424){j=35;break c}else if(g){m=l;break}l=l+2|0}l=c[q>>2]|0;n=dy(d)|0;n=n-m|0;if(!l){j=37;break}h=l+24|0;f=c[h>>2]|0;g=l+32|0;k=c[g>>2]|0;if((f+1|0)>>>0>k>>>0){k=~~(+(k>>>0)+100.0)>>>0;c[g>>2]=k;f=l+28|0;k=tea(c[f>>2]|0,k*24|0)|0;if(!k){j=42;break}c[f>>2]=k;f=c[h>>2]|0}else k=c[l+28>>2]|0;b[k+(f*24|0)>>1]=0;l=k+(f*24|0)+8|0;c[l>>2]=n;c[l+4>>2]=((n|0)<0)<<31>>31;c[k+(f*24|0)+16>>2]=m;c[h>>2]=f+1;f=c[j>>2]|0;c[u>>2]=f;if((f|0)==65424)break b;else g=235912;while(1){m=c[g>>2]|0;if((m|0)==0|(m|0)==(f|0))break;else g=g+12|0}}if(!(c[g+4>>2]&c[t>>2])){j=48;break}if((ay(d,c[o>>2]|0,2,e)|0)!=2){j=50;break}Hx(c[o>>2]|0,r,2);h=(c[r>>2]|0)+-2|0;c[r>>2]=h;f=c[o>>2]|0;if(h>>>0>(c[p>>2]|0)>>>0){f=tea(f,h)|0;if(!f){j=53;break}c[o>>2]=f;h=c[r>>2]|0;c[p>>2]=h}f=ay(d,f,h,e)|0;if((f|0)!=(c[r>>2]|0)){j=56;break}if(!(Xd[c[g+8>>2]&255](a,c[o>>2]|0,f,e)|0)){j=58;break}l=c[q>>2]|0;k=c[g>>2]|0;m=dy(d)|0;n=c[r>>2]|0;m=-4-n+m|0;n=n+4|0;if(!l){j=60;break}h=l+24|0;f=c[h>>2]|0;g=l+32|0;j=c[g>>2]|0;if((f+1|0)>>>0>j>>>0){j=~~(+(j>>>0)+100.0)>>>0;c[g>>2]=j;f=l+28|0;j=tea(c[f>>2]|0,j*24|0)|0;if(!j){j=65;break}c[f>>2]=j;f=c[h>>2]|0}else j=c[l+28>>2]|0;b[j+(f*24|0)>>1]=k;k=j+(f*24|0)+8|0;c[k>>2]=m;c[k+4>>2]=((m|0)<0)<<31>>31;c[j+(f*24|0)+16>>2]=n;c[h>>2]=f+1;if((ay(d,c[o>>2]|0,2,e)|0)!=2){j=67;break}Hx(c[o>>2]|0,u,2);f=c[u>>2]|0;if((f|0)==65424)break b}switch(j|0){case 22:{c[v>>2]=f;ry(e,1,242192,v)|0;v=0;i=w;return v|0}case 28:{ry(e,1,236472,v)|0;break}case 33:{ry(e,1,236496,v)|0;break}case 35:{c[u>>2]=65424;break b}case 37:{Ra(241968,236248,6455,242456);break}case 42:{rea(c[f>>2]|0);c[f>>2]=0;c[g>>2]=0;c[h>>2]=0;ry(e,1,242368,v)|0;break}case 48:{ry(e,1,236496,v)|0;v=0;i=w;return v|0}case 50:{ry(e,1,236472,v)|0;v=0;i=w;return v|0}case 53:{rea(c[o>>2]|0);c[o>>2]=0;c[p>>2]=0;ry(e,1,236544,v)|0;v=0;i=w;return v|0}case 56:{ry(e,1,236472,v)|0;v=0;i=w;return v|0}case 58:{ry(e,1,242304,v)|0;v=0;i=w;return v|0}case 60:{Ra(241968,236248,6455,242456);break}case 65:{rea(c[f>>2]|0);c[f>>2]=0;c[g>>2]=0;c[h>>2]=0;ry(e,1,242368,v)|0;v=0;i=w;return v|0}case 67:{ry(e,1,236472,v)|0;v=0;i=w;return v|0}}ry(e,1,242248,v)|0;v=0;i=w;return v|0}while(0);ry(e,4,242408,v)|0;e=dy(d)|0;v=(c[q>>2]|0)+8|0;c[v>>2]=e+-2;c[v+4>>2]=0;c[t>>2]=8;v=1;i=w;return v|0}while(0);ry(e,1,242168,v)|0;v=0;i=w;return v|0}function uO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;C=D;if(!b)Ra(236352,236248,7064,242096);if(!d)Ra(249408,236248,7065,242096);if(!e)Ra(249008,236248,7066,242096);A=c[b+80>>2]|0;B=b+88|0;m=da(c[b+112>>2]|0,c[b+116>>2]|0)|0;p=c[A+16>>2]|0;n=p*1080|0;o=c[b+12>>2]|0;p=da(p<<2,p)|0;a:do if(m){q=o+5596|0;r=o+5612|0;s=o+5604|0;t=o+5608|0;u=o+5624|0;v=o+5616|0;w=o+5576|0;y=0;z=c[b+156>>2]|0;b:while(1){l=z+5576|0;x=c[l>>2]|0;qfa(z|0,o|0,5632)|0;j=z+5628|0;a[j>>0]=a[j>>0]&-2;c[z+5160>>2]=0;c[l>>2]=x;if(c[q>>2]|0){d=qea(p)|0;c[z+5596>>2]=d;if(!d){d=0;f=31;break}qfa(d|0,c[q>>2]|0,p|0)|0}d=(c[r>>2]|0)*20|0;f=qea(d)|0;l=z+5604|0;c[l>>2]=f;if(!f){d=0;f=31;break}qfa(f|0,c[s>>2]|0,d|0)|0;d=c[t>>2]|0;if(d){h=0;j=c[l>>2]|0;k=c[s>>2]|0;while(1){g=k+12|0;if(c[g>>2]|0){d=k+16|0;f=qea(c[d>>2]|0)|0;c[j+12>>2]=f;if(!f){d=0;f=31;break b}qfa(f|0,c[g>>2]|0,c[d>>2]|0)|0;d=c[t>>2]|0}h=h+1|0;if(h>>>0>=d>>>0)break;else{j=j+20|0;k=k+20|0}}}d=(c[u>>2]|0)*20|0;f=qea(d)|0;g=z+5616|0;c[g>>2]=f;if(!f){d=0;f=31;break}qfa(f|0,c[v>>2]|0,d|0)|0;h=c[u>>2]|0;if(h){j=0;f=c[g>>2]|0;g=c[v>>2]|0;while(1){d=c[g+8>>2]|0;if(d)c[f+8>>2]=(c[l>>2]|0)+(((d-(c[s>>2]|0)|0)/20|0)*20|0);d=c[g+12>>2]|0;if(d)c[f+12>>2]=(c[l>>2]|0)+(((d-(c[s>>2]|0)|0)/20|0)*20|0);j=j+1|0;if(j>>>0>=h>>>0)break;else{f=f+20|0;g=g+20|0}}}qfa(x|0,c[w>>2]|0,n|0)|0;y=y+1|0;if(y>>>0>=m>>>0)break a;else z=z+5632|0}if((f|0)==31){i=D;return d|0}}while(0);f=GA(1)|0;d=b+200|0;c[d>>2]=f;if(!f){C=0;i=D;return C|0}if(KA(f,A,B)|0){C=1;i=D;return C|0}LA(c[d>>2]|0);c[d>>2]=0;ry(e,1,236704,C)|0;C=0;i=D;return C|0}function vO(a,d,e,f,g,h){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;if(!d)Ra(241968,236248,6483,241992);k=d+40|0;l=c[k>>2]|0;if(!l)Ra(242016,236248,6484,241992);i=c[l+(a*40|0)+20>>2]|0;j=l+(a*40|0)+28|0;d=c[j>>2]|0;do if((i+1|0)>>>0>d>>>0){d=~~(+(d>>>0)+100.0)>>>0;c[j>>2]=d;d=tea(c[l+(a*40|0)+24>>2]|0,d*24|0)|0;if(d){i=c[k>>2]|0;c[i+(a*40|0)+24>>2]=d;k=i;i=c[i+(a*40|0)+20>>2]|0;break}rea(c[(c[k>>2]|0)+(a*40|0)+24>>2]|0);e=c[k>>2]|0;c[e+(a*40|0)+24>>2]=0;c[e+(a*40|0)+28>>2]=0;c[e+(a*40|0)+20>>2]=0;a=0;return a|0}else{k=l;d=c[l+(a*40|0)+24>>2]|0}while(0);b[d+(i*24|0)>>1]=e;j=pfa(0,f|0,32)|0;l=d+(i*24|0)+8|0;c[l>>2]=j;c[l+4>>2]=H;c[d+(i*24|0)+16>>2]=h;c[k+(a*40|0)+20>>2]=i+1;if((e|0)!=65424){a=1;return a|0}d=c[k+(a*40|0)+16>>2]|0;if(!d){a=1;return a|0}a=d+((c[k+(a*40|0)+12>>2]|0)*24|0)|0;c[a>>2]=f;c[a+4>>2]=g;a=1;return a|0}function wO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;j=l;if(!a){i=l;return}Xb(241568,17,1,d|0)|0;c[j>>2]=c[a>>2];Uc(d|0,241592,j|0)|0;c[j>>2]=c[a+4>>2];Uc(d|0,241608,j|0)|0;c[j>>2]=c[a+8>>2];Uc(d|0,241624,j|0)|0;c[j>>2]=c[a+16>>2];Uc(d|0,241648,j|0)|0;if((b|0)>0){g=a+5576|0;h=0;do{f=c[g>>2]|0;c[j>>2]=h;Uc(d|0,241664,j|0)|0;c[j>>2]=c[f+(h*1080|0)>>2];Uc(d|0,241680,j|0)|0;a=f+(h*1080|0)+4|0;c[j>>2]=c[a>>2];Uc(d|0,241696,j|0)|0;c[j>>2]=c[f+(h*1080|0)+8>>2];Uc(d|0,241720,j|0)|0;c[j>>2]=c[f+(h*1080|0)+12>>2];Uc(d|0,241736,j|0)|0;c[j>>2]=c[f+(h*1080|0)+16>>2];Uc(d|0,241752,j|0)|0;c[j>>2]=c[f+(h*1080|0)+20>>2];Uc(d|0,241776,j|0)|0;Xb(241792,23,1,d|0)|0;if(c[a>>2]|0){e=0;do{m=c[f+(h*1080|0)+(e<<2)+944>>2]|0;c[j>>2]=c[f+(h*1080|0)+(e<<2)+812>>2];c[j+4>>2]=m;Uc(d|0,241816,j|0)|0;e=e+1|0}while(e>>>0<(c[a>>2]|0)>>>0)}pd(10,d|0)|0;m=f+(h*1080|0)+24|0;c[j>>2]=c[m>>2];Uc(d|0,241832,j|0)|0;c[j>>2]=c[f+(h*1080|0)+804>>2];Uc(d|0,241848,j|0)|0;Xb(241872,20,1,d|0)|0;if((c[m>>2]|0)!=1){a=((c[a>>2]|0)*3|0)+-2|0;if((a|0)>0)k=8}else{a=1;k=8}if((k|0)==8){k=0;e=0;do{m=c[f+(h*1080|0)+(e<<3)+28>>2]|0;c[j>>2]=c[f+(h*1080|0)+(e<<3)+32>>2];c[j+4>>2]=m;Uc(d|0,241816,j|0)|0;e=e+1|0}while((e|0)!=(a|0))}pd(10,d|0)|0;c[j>>2]=c[f+(h*1080|0)+808>>2];Uc(d|0,241896,j|0)|0;Xb(241920,5,1,d|0)|0;h=h+1|0}while((h|0)!=(b|0))}Xb(241424,4,1,d|0)|0;i=l;return}function xO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+48|0;x=y;o=y+32|0;u=y+28|0;n=y+24|0;q=y+36|0;s=y+12|0;r=y+8|0;t=y+16|0;p=y+20|0;c[o>>2]=1;e=qea(1e3)|0;if(!e){ry(d,1,241080,x)|0;x=0;i=y;return x|0}v=a+116|0;w=a+112|0;k=a+200|0;l=a+84|0;m=a+8|0;f=1e3;j=0;while(1){if(!(Oy(a,u,n,q,s,r,t,p,o,b,d)|0)){g=5;break}if(!(c[o>>2]|0)){g=17;break}h=c[n>>2]|0;if(h>>>0>f>>>0){f=tea(e,h)|0;if(!f){g=9;break}else{e=f;g=h}}else g=f;f=c[u>>2]|0;if(!(Py(a,f,e,h,b,d)|0)){g=11;break}f=f+1|0;h=da(c[w>>2]|0,c[v>>2]|0)|0;c[x>>2]=f;c[x+4>>2]=h;ry(d,4,240848,x)|0;h=c[k>>2]|0;if(!(X_(c[(c[c[h+20>>2]>>2]|0)+20>>2]|0,c[h+24>>2]|0,e,c[(c[l>>2]|0)+24>>2]|0)|0)){g=13;break}c[x>>2]=f;ry(d,4,240880,x)|0;f=ey(b)|0;if((f|0)==0&(H|0)==0?(c[m>>2]|0)==64:0){g=17;break}j=j+1|0;if((j|0)==(da(c[w>>2]|0,c[v>>2]|0)|0)){g=17;break}else f=g}if((g|0)==5){rea(e);x=0;i=y;return x|0}else if((g|0)==9){rea(e);w=da(c[w>>2]|0,c[v>>2]|0)|0;c[x>>2]=(c[u>>2]|0)+1;c[x+4>>2]=w;ry(d,1,240808,x)|0;x=0;i=y;return x|0}else if((g|0)==11){rea(e);w=da(c[w>>2]|0,c[v>>2]|0)|0;c[x>>2]=f+1;c[x+4>>2]=w;ry(d,1,241120,x)|0;x=0;i=y;return x|0}else if((g|0)==13){rea(e);x=0;i=y;return x|0}else if((g|0)==17){rea(e);x=1;i=y;return x|0}return 0}function yO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+48|0;x=z;p=z+32|0;w=z+28|0;o=z+24|0;r=z+36|0;t=z+12|0;s=z+8|0;u=z+16|0;q=z+20|0;c[p>>2]=1;e=qea(1e3)|0;if(!e){ry(d,1,240736,x)|0;y=0;i=z;return y|0}v=a+192|0;g=c[v>>2]|0;j=g+40|0;f=c[j>>2]|0;a:do if(!f){f=da(c[a+116>>2]|0,c[a+112>>2]|0)|0;h=g+36|0;c[h>>2]=f;f=sea(f,40)|0;c[j>>2]=f;b:do if(f){if(c[h>>2]|0){g=0;do{c[f+(g*40|0)+28>>2]=100;c[f+(g*40|0)+20>>2]=0;l=sea(100,24)|0;f=c[j>>2]|0;c[f+(g*40|0)+24>>2]=l;g=g+1|0;if(!l)break b}while(g>>>0<(c[h>>2]|0)>>>0)}g=c[a+60>>2]|0;if(!f)break a;else{y=11;break a}}while(0);rea(e);y=0;i=z;return y|0}else{g=c[a+60>>2]|0;y=11}while(0);if((y|0)==11)if(c[f+16>>2]|0){if(!(c[f+(g*40|0)+4>>2]|0)){l=a+64|0;l=yfa(c[l>>2]|0,c[l+4>>2]|0,2,0)|0;if(!(Ox(b,l,H,d)|0)){ry(d,1,240776,x)|0;rea(e);y=0;i=z;return y|0}}else{l=c[f+(g*40|0)+16>>2]|0;l=yfa(c[l>>2]|0,c[l+4>>2]|0,2,0)|0;if(!(Ox(b,l,H,d)|0)){ry(d,1,240776,x)|0;rea(e);y=0;i=z;return y|0}}f=a+8|0;if((c[f>>2]|0)==256)c[f>>2]=8}c:do if(Oy(a,w,o,r,t,s,u,q,p,b,d)|0){m=a+116|0;n=a+112|0;k=a+200|0;l=a+84|0;h=1e3;while(1){if(!(c[p>>2]|0))break;j=c[o>>2]|0;if(j>>>0>h>>>0){h=tea(e,j)|0;if(!h){y=25;break}else{e=h;f=j}}else f=h;h=c[w>>2]|0;if(!(Py(a,h,e,j,b,d)|0)){y=27;break}j=(da(c[n>>2]|0,c[m>>2]|0)|0)+-1|0;c[x>>2]=h;c[x+4>>2]=j;ry(d,4,240848,x)|0;j=c[k>>2]|0;if(!(X_(c[(c[c[j+20>>2]>>2]|0)+20>>2]|0,c[j+24>>2]|0,e,c[(c[l>>2]|0)+24>>2]|0)|0)){y=29;break}c[x>>2]=h;ry(d,4,240880,x)|0;if((h|0)==(g|0)){y=31;break}c[x>>2]=h;c[x+4>>2]=g;ry(d,2,240928,x)|0;if(!(Oy(a,w,o,r,t,s,u,q,p,b,d)|0))break c;else h=f}if((y|0)==25){rea(e);y=(da(c[n>>2]|0,c[m>>2]|0)|0)+-1|0;c[x>>2]=c[w>>2];c[x+4>>2]=y;ry(d,1,240808,x)|0;y=0;i=z;return y|0}else if((y|0)==27){rea(e);y=0;i=z;return y|0}else if((y|0)==29){rea(e);y=0;i=z;return y|0}else if((y|0)==31){y=(c[v>>2]|0)+8|0;y=yfa(c[y>>2]|0,c[y+4>>2]|0,2,0)|0;if(!(Ox(b,y,H,d)|0)){ry(d,1,240776,x)|0;y=0;i=z;return y|0}}rea(e);y=1;i=z;return y|0}while(0);rea(e);y=0;i=z;return y|0}function zO(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=i;i=i+16|0;x=A;j=A+4|0;y=a+36|0;k=c[y>>2]|0;if(!k)Ra(240440,236248,9748,240496);l=a+200|0;z=c[a+40>>2]|0;if(!(TA(c[l>>2]|0,b,d)|0)){ry(f,1,240520,x)|0;e=0;i=A;return e|0}h=c[l>>2]|0;c[h+16>>2]=0;c[a+8>>2]=0;c[j>>2]=0;Y_(a,k,j,e,f);d=c[j>>2]|0;b=k+d|0;g=z-d|0;w=a+160|0;if((c[w>>2]|0)==0?(c[(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)+420>>2]|0)!=0:0){c[j>>2]=0;Z_(a,b,j,f);v=c[j>>2]|0;d=v+d|0;b=k+d|0;g=g-v|0}c[j>>2]=0;if(!(__(a,h,b,j,g,e,f)|0)){e=0;i=A;return e|0}b=(c[j>>2]|0)+d|0;Gx(k+6|0,b,4);if(!(c[w>>2]|0))v=a+196|0;else{u=a+28|0;v=a+196|0;Gx(c[u>>2]|0,c[v>>2]|0,1);t=(c[u>>2]|0)+1|0;c[u>>2]=t;Gx(t,b,4);c[u>>2]=(c[u>>2]|0)+4}h=k+b|0;u=z-b|0;q=c[l>>2]|0;r=a+88|0;o=c[a+156>>2]|0;p=c[v>>2]|0;m=$_(r,0,p)|0;s=a+8|0;t=a+12|0;c[t>>2]=(c[t>>2]|0)+1;a:do if(m>>>0>1){n=a+28|0;j=h;d=u;b=0;l=1;while(1){c[s>>2]=l;c[x>>2]=0;Y_(a,j,x,e,f);g=c[x>>2]|0;d=d-g|0;c[x>>2]=0;if(!(__(a,q,j+g|0,x,d,e,f)|0)){b=0;break}B=c[x>>2]|0;k=B+g|0;h=j+k|0;b=g+b+B|0;d=d-B|0;Gx(j+6|0,k,4);if(c[w>>2]|0){Gx(c[n>>2]|0,c[v>>2]|0,1);B=(c[n>>2]|0)+1|0;c[n>>2]=B;Gx(B,k,4);c[n>>2]=(c[n>>2]|0)+4}c[t>>2]=(c[t>>2]|0)+1;l=l+1|0;if(l>>>0>=m>>>0)break a;else j=h}i=A;return b|0}else{d=u;b=0}while(0);l=o+(p*5632|0)+420|0;b:do if(c[l>>2]|0){o=q+16|0;p=a+28|0;j=1;c:while(1){c[o>>2]=j;n=$_(r,j,c[v>>2]|0)|0;if(n){m=0;while(1){c[s>>2]=m;c[x>>2]=0;Y_(a,h,x,e,f);g=c[x>>2]|0;d=d-g|0;c[x>>2]=0;if(!(__(a,q,h+g|0,x,d,e,f)|0)){b=0;break c}B=c[x>>2]|0;b=g+b+B|0;g=B+g|0;k=h+g|0;d=d-B|0;Gx(h+6|0,g,4);if(c[w>>2]|0){Gx(c[p>>2]|0,c[v>>2]|0,1);B=(c[p>>2]|0)+1|0;c[p>>2]=B;Gx(B,g,4);c[p>>2]=(c[p>>2]|0)+4}c[t>>2]=(c[t>>2]|0)+1;m=m+1|0;if(m>>>0>=n>>>0){h=k;break}else h=k}}j=j+1|0;if(j>>>0>(c[l>>2]|0)>>>0)break b}i=A;return b|0}while(0);B=b-u+z|0;if((by(e,c[y>>2]|0,B,f)|0)!=(B|0)){B=0;i=A;return B|0}c[v>>2]=(c[v>>2]|0)+1;B=1;i=A;return B|0}function AO(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)Ra(236352,236248,4456,240416);if(!d)Ra(249008,236248,4457,240416);if(!b)Ra(249408,236248,4458,240416);a=a+44|0;Gx(c[a>>2]|0,65497,2);if((by(b,c[a>>2]|0,2,d)|0)!=2){b=0;return b|0}b=(cy(b,d)|0)!=0&1;return b|0}function BO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(!a)Ra(236352,236248,10058,240384);if(!d)Ra(249008,236248,10059,240384);if(!b)Ra(249408,236248,10060,240384);g=(c[a+32>>2]|0)*5|0;i=a+16|0;i=yfa(c[i>>2]|0,c[i+4>>2]|0,6,0)|0;h=H;e=dy(b)|0;f=H;if(!(gy(b,i,h,d)|0)){h=0;return h|0}if((by(b,c[a+24>>2]|0,g,d)|0)!=(g|0)){h=0;return h|0}h=(gy(b,e,f,d)|0)!=0&1;return h|0}function CO(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)Ra(236352,236248,4928,240360);if(!d)Ra(249008,236248,4929,240360);if(!b)Ra(249408,236248,4930,240360);a=c[a+192>>2]|0;if(!a)return 1;b=dy(b)|0;d=a;d=xfa(b|0,H|0,c[d>>2]|0,c[d+4>>2]|0)|0;b=a+16|0;c[b>>2]=d;c[b+4>>2]=H;return 1}function DO(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)Ra(236352,236248,10086,240336);if(!d)Ra(249008,236248,10087,240336);if(!b)Ra(249408,236248,10088,240336);d=a+200|0;LA(c[d>>2]|0);c[d>>2]=0;d=a+24|0;b=c[d>>2]|0;if(b){rea(b);c[d>>2]=0;c[a+28>>2]=0}b=a+36|0;d=c[b>>2]|0;if(!d){a=a+40|0;c[a>>2]=0;return 1}rea(d);c[b>>2]=0;a=a+40|0;c[a>>2]=0;return 1}function EO(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)Ra(236352,236248,10118,240304);if(!b)Ra(249408,236248,10119,240304);if(!d)Ra(249008,236248,10120,240304);d=a+44|0;b=c[d>>2]|0;if(!b){a=a+48|0;c[a>>2]=0;return 1}rea(b);c[d>>2]=0;a=a+48|0;c[a>>2]=0;return 1}function FO(a,b,c){a=a|0;b=b|0;c=c|0;return 1}function GO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;if(!a)Ra(236352,236248,6829,240168);if(!b)Ra(249408,236248,6830,240168);if(!d)Ra(249008,236248,6831,240168);b=1<>2]|0)+5576>>2]|0)+4>>2];if((c[a+100>>2]|0)>>>0>>0){ry(d,1,240200,e)|0;d=0;i=f;return d|0}if((c[a+104>>2]|0)>>>0>=b>>>0){d=(c[a+8>>2]|0)==0&(c[a+184>>2]|0)!=0&(c[a+188>>2]|0)!=0&1;i=f;return d|0}ry(d,1,240200,e)|0;d=0;i=f;return d|0}function HO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(!a)Ra(236352,236248,6620,240144);if(!b)Ra(249408,236248,6621,240144);if(!d)Ra(249008,236248,6622,240144);if((c[a+88>>2]&33280|0)!=33280){h=1;return h|0}g=da(c[a+112>>2]|0,c[a+116>>2]|0)|0;if(!g){h=1;return h|0}h=a+80|0;i=0;d=1;f=c[a+156>>2]|0;while(1){if((c[f+16>>2]|0)==2){d=(c[f+5600>>2]|0)!=0&d;a=c[(c[h>>2]|0)+16>>2]|0;if(a){e=0;b=c[f+5576>>2]|0;while(1){d=(c[b+20>>2]&1^1)&d;e=e+1|0;if(e>>>0>=a>>>0)break;else b=b+1080|0}}}i=i+1|0;if((i|0)==(g|0))break;else f=f+5632|0}return d|0}function IO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!a)Ra(236352,236248,10139,239960);if(!d)Ra(249008,236248,10140,239960);if(!b)Ra(249408,236248,10141,239960);h=a+88|0;i=a+32|0;j=c[a+80>>2]|0;if(!j)Ra(254920,236248,1657,239984);g=da(c[a+116>>2]|0,c[a+112>>2]|0)|0;c[i>>2]=0;if(!g)return 1;e=c[a+156>>2]|0;f=0;while(1){rA(j,h,f);b=e+420|0;d=0;a=0;do{k=$_(h,a,f)|0;c[i>>2]=(c[i>>2]|0)+k;d=k+d|0;a=a+1|0}while(a>>>0<=(c[b>>2]|0)>>>0);c[e+5580>>2]=d;f=f+1|0;if((f|0)==(g|0))break;else e=e+5632|0}return 1}function JO(a,b,d){a=a|0;b=b|0;d=d|0;if(!b)Ra(249408,236248,1729,239936);if(!a)Ra(236352,236248,1730,239936);if(!d)Ra(249008,236248,1731,239936);else{a=c[a+44>>2]|0;Gx(a,65359,2);return (by(b,a,2,d)|0)==2|0}return 0}function KO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;j=o;if(!b)Ra(249408,236248,1811,239872);if(!a)Ra(236352,236248,1812,239872);if(!d)Ra(249008,236248,1813,239872);k=c[a+80>>2]|0;m=k+16|0;l=(c[m>>2]|0)*3|0;n=l+40|0;e=c[k+24>>2]|0;g=a+48|0;h=a+44|0;f=c[h>>2]|0;do if(n>>>0>(c[g>>2]|0)>>>0){f=tea(f,n)|0;if(f){c[h>>2]=f;c[g>>2]=n;break}rea(c[h>>2]|0);c[h>>2]=0;c[g>>2]=0;ry(d,1,239896,j)|0;b=0;i=o;return b|0}while(0);h=a+44|0;Gx(f,65361,2);Gx(f+2|0,l+38|0,2);Gx(f+4|0,c[a+88>>2]|0,2);Gx(f+6|0,c[k+8>>2]|0,4);Gx(f+10|0,c[k+12>>2]|0,4);Gx(f+14|0,c[k>>2]|0,4);Gx(f+18|0,c[k+4>>2]|0,4);Gx(f+22|0,c[a+100>>2]|0,4);Gx(f+26|0,c[a+104>>2]|0,4);Gx(f+30|0,c[a+92>>2]|0,4);Gx(f+34|0,c[a+96>>2]|0,4);Gx(f+38|0,c[m>>2]|0,2);if(c[m>>2]|0){g=0;f=f+40|0;while(1){Gx(f,(c[e+24>>2]|0)+-1+(c[e+32>>2]<<7)|0,1);Gx(f+1|0,c[e>>2]|0,1);Gx(f+2|0,c[e+4>>2]|0,1);g=g+1|0;if(g>>>0>=(c[m>>2]|0)>>>0)break;else{f=f+3|0;e=e+52|0}}}b=(by(b,c[h>>2]|0,n,d)|0)==(n|0)&1;i=o;return b|0}function LO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;s=t;if(!a)Ra(236352,236248,2322,239656);if(!d)Ra(249008,236248,2323,239656);if(!b)Ra(249408,236248,2324,239656);j=a+196|0;h=c[j>>2]|0;k=a+156|0;l=c[k>>2]|0;e=c[l+(h*5632|0)+5576>>2]|0;p=a+112|0;n=a+116|0;if((da(c[n>>2]|0,c[p>>2]|0)|0)>>>0<=h>>>0)Ra(238760,236248,8212,238728);o=a+80|0;if(!(c[(c[o>>2]|0)+16>>2]|0))Ra(238800,236248,8213,238728);if(!(c[e>>2]&1))m=5;else m=(c[e+4>>2]|0)+5|0;r=m+9|0;g=a+48|0;f=a+44|0;e=c[f>>2]|0;do if(r>>>0>(c[g>>2]|0)>>>0){e=tea(e,r)|0;if(e){c[f>>2]=e;c[g>>2]=r;g=e;break}rea(c[f>>2]|0);c[f>>2]=0;c[g>>2]=0;ry(d,1,239680,s)|0;s=0;i=t;return s|0}else g=e;while(0);q=a+44|0;Gx(g,65362,2);Gx(g+2|0,m+7|0,2);Gx(g+4|0,c[l+(h*5632|0)>>2]|0,1);Gx(g+5|0,c[l+(h*5632|0)+4>>2]|0,1);Gx(g+6|0,c[l+(h*5632|0)+8>>2]|0,2);Gx(g+8|0,c[l+(h*5632|0)+16>>2]|0,1);h=c[j>>2]|0;j=c[(c[k>>2]|0)+(h*5632|0)+5576>>2]|0;if((da(c[n>>2]|0,c[p>>2]|0)|0)>>>0<=h>>>0)Ra(238760,236248,8246,239752);if(!(c[(c[o>>2]|0)+16>>2]|0))Ra(239784,236248,8247,239752);do if(m>>>0>=5){h=j+4|0;Gx(g+9|0,(c[h>>2]|0)+-1|0,1);Gx(g+10|0,(c[j+8>>2]|0)+-2|0,1);Gx(g+11|0,(c[j+12>>2]|0)+-2|0,1);Gx(g+12|0,c[j+16>>2]|0,1);Gx(g+13|0,c[j+20>>2]|0,1);e=m+-5|0;if(c[j>>2]&1){f=c[h>>2]|0;if(e>>>0>>0){ry(d,1,239832,s)|0;break}if(!f)f=0;else{a=g+14|0;g=0;while(1){Gx(a,(c[j+(g<<2)+944>>2]<<4)+(c[j+(g<<2)+812>>2]|0)|0,1);g=g+1|0;f=c[h>>2]|0;if(g>>>0>=f>>>0)break;else a=a+1|0}}e=e-f|0}if(!e){s=(by(b,c[q>>2]|0,r,d)|0)==(r|0)&1;i=t;return s|0}else{ry(d,1,239720,s)|0;s=0;i=t;return s|0}}else ry(d,1,239832,s)|0;while(0);ry(d,1,239720,s)|0;s=0;i=t;return s|0}function MO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;r=t;if(!a)Ra(236352,236248,2660,239384);if(!d)Ra(249008,236248,2661,239384);if(!b)Ra(249408,236248,2662,239384);j=a+196|0;q=c[j>>2]|0;k=a+156|0;e=c[(c[k>>2]|0)+(q*5632|0)+5576>>2]|0;n=a+112|0;l=a+116|0;if((da(c[l>>2]|0,c[n>>2]|0)|0)>>>0<=q>>>0)Ra(239504,236248,8452,239624);m=a+80|0;if(!(c[(c[m>>2]|0)+16>>2]|0))Ra(238800,236248,8453,239624);f=c[e+24>>2]|0;if((f|0)!=1){e=(c[e+4>>2]|0)*3|0;if(!f)p=e+-1|0;else{e=e+-2|0;s=14}}else{e=1;s=14}if((s|0)==14)p=e<<1|1;q=p+4|0;f=a+48|0;g=a+44|0;e=c[g>>2]|0;do if(q>>>0>(c[f>>2]|0)>>>0){e=tea(e,q)|0;if(e){c[g>>2]=e;c[f>>2]=q;h=e;break}rea(c[g>>2]|0);c[g>>2]=0;c[f>>2]=0;ry(d,1,239408,r)|0;s=0;i=t;return s|0}else h=e;while(0);o=a+44|0;Gx(h,65372,2);Gx(h+2|0,p+2|0,2);f=h+4|0;g=c[j>>2]|0;j=c[(c[k>>2]|0)+(g*5632|0)+5576>>2]|0;if((da(c[l>>2]|0,c[n>>2]|0)|0)>>>0<=g>>>0)Ra(239504,236248,8491,239480);if(!(c[(c[m>>2]|0)+16>>2]|0))Ra(239536,236248,8492,239480);g=c[j+24>>2]|0;do if((g|0)!=1){e=(c[j+4>>2]|0)*3|0;a=e+-2|0;if(!g){e=e+-1|0;if(p>>>0>>0){ry(d,1,239584,r)|0;s=34;break}Gx(f,c[j+804>>2]<<5,1);if(a){g=0;do{f=f+1|0;Gx(f,c[j+(g<<3)+28>>2]<<3,1);g=g+1|0}while((g|0)!=(a|0))}}else s=29}else{a=1;g=1;s=29}while(0);do if((s|0)==29){e=a<<1|1;if(p>>>0>>0){ry(d,1,239584,r)|0;s=34;break}Gx(f,(c[j+804>>2]<<5)+g|0,1);if(a){f=h+5|0;g=0;while(1){Gx(f,(c[j+(g<<3)+28>>2]<<11)+(c[j+(g<<3)+32>>2]|0)|0,2);g=g+1|0;if((g|0)==(a|0))break;else f=f+2|0}}}while(0);if((s|0)==34){ry(d,1,239448,r)|0;s=0;i=t;return s|0}if((p|0)==(e|0)){s=(by(b,c[o>>2]|0,q,d)|0)==(q|0)&1;i=t;return s|0}else{ry(d,1,239448,r)|0;s=0;i=t;return s|0}return 0} -function NE(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=c[b+20>>2]|0;if((d|0)==102|(d|0)==101){if((c[b+248>>2]|0)>>>0<(c[b+32>>2]|0)>>>0){j=c[b>>2]|0;c[j+20>>2]=69;Bd[c[j>>2]&511](b)}Bd[c[(c[b+376>>2]|0)+8>>2]&511](b)}else if((d|0)!=103){j=c[b>>2]|0;c[j+20>>2]=21;c[j+24>>2]=d;Bd[c[j>>2]&511](b)}g=b+376|0;d=c[g>>2]|0;if(a[d+13>>0]|0){j=b;i=b+392|0;i=c[i>>2]|0;i=i+12|0;i=c[i>>2]|0;Bd[i&511](b);i=b+24|0;i=c[i>>2]|0;i=i+16|0;i=c[i>>2]|0;Bd[i&511](b);dF(j);return}h=b+272|0;i=b+8|0;j=b+388|0;do{Bd[c[d>>2]&511](b);d=c[h>>2]|0;if(d){f=0;do{e=c[i>>2]|0;if(e){c[e+4>>2]=f;c[e+8>>2]=d;Bd[c[e>>2]&511](b)}if(!((Pd[c[(c[j>>2]|0)+4>>2]&511](b,0)|0)<<24>>24)){e=c[b>>2]|0;c[e+20>>2]=25;Bd[c[e>>2]&511](b)}f=f+1|0;d=c[h>>2]|0}while(f>>>0>>0)}Bd[c[(c[g>>2]|0)+8>>2]&511](b);d=c[g>>2]|0}while((a[d+13>>0]|0)==0);d=b;j=b+392|0;j=c[j>>2]|0;j=j+12|0;j=c[j>>2]|0;Bd[j&511](b);j=b+24|0;j=c[j>>2]|0;j=j+16|0;j=c[j>>2]|0;Bd[j&511](b);dF(d);return}function OE(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;g=c[a+20>>2]|0;if(!((c[a+248>>2]|0)==0&(g+-101|0)>>>0<3)){h=c[a>>2]|0;c[h+20>>2]=21;c[h+24>>2]=g;Bd[c[h>>2]&511](a)}h=a+392|0;Ud[c[(c[h>>2]|0)+20>>2]&255](a,b,f);b=c[(c[h>>2]|0)+24>>2]|0;if(!f)return;while(1){f=f+-1|0;Cd[b&255](a,d[e>>0]|0);if(!f)break;else e=e+1|0}return}function PE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a+20>>2]|0;if(!((c[a+248>>2]|0)==0&(e+-101|0)>>>0<3)){f=c[a>>2]|0;c[f+20>>2]=21;c[f+24>>2]=e;Bd[c[f>>2]&511](a)}Ud[c[(c[a+392>>2]|0)+20>>2]&255](a,b,d);return}function QE(a,b){a=a|0;b=b|0;Cd[c[(c[a+392>>2]|0)+24>>2]&255](a,b);return}function RE(a){a=a|0;var b=0,d=0;b=c[a+20>>2]|0;if((b|0)==100)b=a;else{d=c[a>>2]|0;c[d+20>>2]=21;c[d+24>>2]=b;Bd[c[d>>2]&511](a);b=a}Bd[c[(c[a>>2]|0)+16>>2]&511](b);d=a+24|0;Bd[c[(c[d>>2]|0)+8>>2]&511](a);aF(a);Bd[c[(c[a+392>>2]|0)+16>>2]&511](a);Bd[c[(c[d>>2]|0)+16>>2]&511](a);return}function SE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=b+20|0;f=c[e>>2]|0;if((f|0)!=100){g=c[b>>2]|0;c[g+20>>2]=21;c[g+24>>2]=f;Bd[c[g>>2]&511](b)}if(d<<24>>24)ME(b,0);Bd[c[(c[b>>2]|0)+16>>2]&511](b);Bd[c[(c[b+24>>2]|0)+8>>2]&511](b);_E(b);Bd[c[c[b+376>>2]>>2]&511](b);c[b+248>>2]=0;c[e>>2]=(a[b+208>>0]|0)!=0?102:101;return}function TE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;f=c[b+20>>2]|0;if((f|0)!=101){h=c[b>>2]|0;c[h+20>>2]=21;c[h+24>>2]=f;Bd[c[h>>2]&511](b)}g=b+248|0;h=b+32|0;if((c[g>>2]|0)>>>0>=(c[h>>2]|0)>>>0){f=c[b>>2]|0;c[f+20>>2]=126;Cd[c[f+4>>2]&255](b,-1)}f=c[b+8>>2]|0;if(f){c[f+4>>2]=c[g>>2];c[f+8>>2]=c[h>>2];Bd[c[f>>2]&511](b)}f=c[b+376>>2]|0;if(a[f+12>>0]|0)Bd[c[f+4>>2]&511](b);h=(c[h>>2]|0)-(c[g>>2]|0)|0;c[j>>2]=0;Yd[c[(c[b+380>>2]|0)+4>>2]&63](b,d,j,h>>>0>>0?h:e);d=c[j>>2]|0;c[g>>2]=(c[g>>2]|0)+d;i=k;return d|0}function UE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=c[b+20>>2]|0;if((f|0)!=102){h=c[b>>2]|0;c[h+20>>2]=21;c[h+24>>2]=f;Bd[c[h>>2]&511](b)}i=b+248|0;h=c[i>>2]|0;f=c[b+32>>2]|0;if(h>>>0>=f>>>0){e=c[b>>2]|0;c[e+20>>2]=126;Cd[c[e+4>>2]&255](b,-1);e=0;return e|0}g=c[b+8>>2]|0;if(g){c[g+4>>2]=h;c[g+8>>2]=f;Bd[c[g>>2]&511](b)}f=c[b+376>>2]|0;if(a[f+12>>0]|0)Bd[c[f+4>>2]&511](b);f=da(c[b+268>>2]|0,c[b+260>>2]|0)|0;if(f>>>0>e>>>0){e=c[b>>2]|0;c[e+20>>2]=24;Bd[c[e>>2]&511](b)}if(!((Pd[c[(c[b+388>>2]|0)+4>>2]&511](b,d)|0)<<24>>24)){e=0;return e|0}c[i>>2]=(c[i>>2]|0)+f;e=f;return e|0}function VE(b){b=b|0;var d=0;d=Hd[c[c[b+4>>2]>>2]&255](b,1,208)|0;c[b+408>>2]=d;c[d>>2]=80;c[d+8>>2]=232;c[d+76>>2]=0;c[d+140>>2]=0;c[d+80>>2]=0;c[d+144>>2]=0;c[d+84>>2]=0;c[d+148>>2]=0;c[d+88>>2]=0;c[d+152>>2]=0;c[d+92>>2]=0;c[d+156>>2]=0;c[d+96>>2]=0;c[d+160>>2]=0;c[d+100>>2]=0;c[d+164>>2]=0;c[d+104>>2]=0;c[d+168>>2]=0;c[d+108>>2]=0;c[d+172>>2]=0;c[d+112>>2]=0;c[d+176>>2]=0;c[d+116>>2]=0;c[d+180>>2]=0;c[d+120>>2]=0;c[d+184>>2]=0;c[d+124>>2]=0;c[d+188>>2]=0;c[d+128>>2]=0;c[d+192>>2]=0;c[d+132>>2]=0;c[d+196>>2]=0;c[d+136>>2]=0;c[d+200>>2]=0;a[d+204>>0]=113;return}function WE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=a+4|0;d=Hd[c[c[g>>2]>>2]&255](a,1,104)|0;c[a+388>>2]=d;c[d>>2]=81;if(!(b<<24>>24)){a=Hd[c[(c[g>>2]|0)+4>>2]&255](a,1,1280)|0;c[d+24>>2]=a;c[d+28>>2]=a+128;c[d+32>>2]=a+256;c[d+36>>2]=a+384;c[d+40>>2]=a+512;c[d+44>>2]=a+640;c[d+48>>2]=a+768;c[d+52>>2]=a+896;c[d+56>>2]=a+1024;c[d+60>>2]=a+1152;c[d+64>>2]=0;return}f=a+76|0;if((c[f>>2]|0)<=0)return;b=d+64|0;d=0;e=c[a+84>>2]|0;while(1){k=c[(c[g>>2]|0)+20>>2]|0;j=mH(c[e+28>>2]|0,c[e+8>>2]|0)|0;h=e+12|0;i=mH(c[e+32>>2]|0,c[h>>2]|0)|0;c[b+(d<<2)>>2]=Dd[k&31](a,1,0,j,i,c[h>>2]|0)|0;d=d+1|0;if((d|0)>=(c[f>>2]|0))break;else e=e+88|0}return}function XE(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=Hd[c[c[b+4>>2]>>2]&255](b,1,12)|0;c[b+396>>2]=h;c[h>>2]=233;g=b+40|0;switch(c[g>>2]|0){case 5:case 4:{if((c[b+36>>2]|0)!=4){f=c[b>>2]|0;c[f+20>>2]=10;Bd[c[f>>2]&511](b)}break}case 1:{if((c[b+36>>2]|0)!=1){f=c[b>>2]|0;c[f+20>>2]=10;Bd[c[f>>2]&511](b)}break}case 7:case 3:{if((c[b+36>>2]|0)!=3){f=c[b>>2]|0;c[f+20>>2]=10;Bd[c[f>>2]&511](b)}break}case 6:case 2:{if((c[b+36>>2]|0)!=3){f=c[b>>2]|0;c[f+20>>2]=10;Bd[c[f>>2]&511](b)}break}default:if((c[b+36>>2]|0)<1){f=c[b>>2]|0;c[f+20>>2]=10;Bd[c[f>>2]&511](b)}}f=b+244|0;e=b+80|0;if((c[f>>2]|0)!=0?(d=c[e>>2]|0,!((d|0)==6|(d|0)==2)):0){d=c[b>>2]|0;c[d+20>>2]=28;Bd[c[d>>2]&511](b)}d=c[e>>2]|0;switch(d|0){case 7:{if((c[b+76>>2]|0)!=3){f=c[b>>2]|0;c[f+20>>2]=11;Bd[c[f>>2]&511](b)}d=c[g>>2]|0;if((d|0)==3){b=c[b+84>>2]|0;a[b+140>>0]=1;a[b+228>>0]=1}else if((d|0)==2){b=c[b+84>>2]|0;a[b+140>>0]=1;a[b+228>>0]=1;c[h>>2]=234;c[h+4>>2]=12;return}else if((d|0)!=7){h=c[b>>2]|0;c[h+20>>2]=28;Bd[c[h>>2]&511](b);return}c[h+4>>2]=13;return}case 1:{if((c[b+76>>2]|0)!=1){f=c[b>>2]|0;c[f+20>>2]=11;Bd[c[f>>2]&511](b)}d=c[g>>2]|0;if((d|0)==2){c[h>>2]=234;c[h+4>>2]=9;return}else if((d|0)==7|(d|0)==3|(d|0)==1){c[h+4>>2]=8;return}else{h=c[b>>2]|0;c[h+20>>2]=28;Bd[c[h>>2]&511](b);return}}case 5:{if((c[b+76>>2]|0)!=4){f=c[b>>2]|0;c[f+20>>2]=11;Bd[c[f>>2]&511](b)}d=c[g>>2]|0;if((d|0)==4){c[h>>2]=234;c[h+4>>2]=14;return}else if((d|0)==5){c[h+4>>2]=13;return}else{h=c[b>>2]|0;c[h+20>>2]=28;Bd[c[h>>2]&511](b);return}}case 6:case 2:{if((c[b+76>>2]|0)!=3){d=c[b>>2]|0;c[d+20>>2]=11;Bd[c[d>>2]&511](b);d=c[e>>2]|0}if((c[g>>2]|0)!=(d|0)){h=c[b>>2]|0;c[h+20>>2]=28;Bd[c[h>>2]&511](b);return}d=c[f>>2]|0;if(!d){c[h+4>>2]=10;return}else if((d|0)==1){c[h+4>>2]=11;return}else{h=c[b>>2]|0;c[h+20>>2]=28;Bd[c[h>>2]&511](b);return}}case 4:{if((c[b+76>>2]|0)!=4){f=c[b>>2]|0;c[f+20>>2]=11;Bd[c[f>>2]&511](b)}if((c[g>>2]|0)==4){c[h+4>>2]=13;return}else{h=c[b>>2]|0;c[h+20>>2]=28;Bd[c[h>>2]&511](b);return}}case 3:{if((c[b+76>>2]|0)!=3){f=c[b>>2]|0;c[f+20>>2]=11;Bd[c[f>>2]&511](b)}d=c[g>>2]|0;if((d|0)==2){c[h>>2]=234;c[h+4>>2]=12;return}else if((d|0)==3){c[h+4>>2]=13;return}else{h=c[b>>2]|0;c[h+20>>2]=28;Bd[c[h>>2]&511](b);return}}default:{if(!((d|0)==(c[g>>2]|0)?(c[b+76>>2]|0)==(c[b+36>>2]|0):0)){f=c[b>>2]|0;c[f+20>>2]=28;Bd[c[f>>2]&511](b)}c[h+4>>2]=13;return}}}function YE(a){a=a|0;var b=0,d=0,e=0,f=0;b=a+4|0;d=Hd[c[c[b>>2]>>2]&255](a,1,124)|0;c[a+404>>2]=d;c[d>>2]=235;d=a+76|0;if((c[d>>2]|0)<=0)return;e=0;f=c[a+84>>2]|0;while(1){c[f+84>>2]=Hd[c[c[b>>2]>>2]&255](a,1,256)|0;e=e+1|0;if((e|0)>=(c[d>>2]|0))break;else f=f+88|0}return}function ZE(b){b=b|0;var d=0;d=Hd[c[c[b+4>>2]>>2]&255](b,1,140)|0;c[b+408>>2]=d;c[d>>2]=82;c[d+60>>2]=0;c[d+44>>2]=0;c[d+92>>2]=0;c[d+76>>2]=0;c[d+64>>2]=0;c[d+48>>2]=0;c[d+96>>2]=0;c[d+80>>2]=0;c[d+68>>2]=0;c[d+52>>2]=0;c[d+100>>2]=0;c[d+84>>2]=0;c[d+72>>2]=0;c[d+56>>2]=0;c[d+104>>2]=0;c[d+88>>2]=0;if(!(a[b+252>>0]|0))return;c[d+136>>2]=0;return}function _E(b){b=b|0;var d=0,e=0;d=c[b+72>>2]|0;if((d|0)!=8){e=c[b>>2]|0;c[e+20>>2]=16;c[e+24>>2]=d;Bd[c[e>>2]&511](b)}if(!(((c[b+32>>2]|0)!=0?(c[b+28>>2]|0)!=0:0)?(c[b+36>>2]|0)>=1:0)){e=c[b>>2]|0;c[e+20>>2]=33;Bd[c[e>>2]&511](b)}cF(b,0);if(!(a[b+208>>0]|0)){XE(b);oF(b);nF(b,0)}YE(b);if(!(a[b+209>>0]|0))ZE(b);else VE(b);if((c[b+200>>2]|0)>1)d=1;else d=(a[b+210>>0]|0)!=0&1;WE(b,d);$E(b,0);aF(b);Bd[c[(c[b+4>>2]|0)+24>>2]&511](b);Bd[c[c[b+392>>2]>>2]&511](b);return}function $E(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=b+4|0;e=Hd[c[c[h>>2]>>2]&255](b,1,64)|0;c[b+380>>2]=e;c[e>>2]=83;if(a[b+208>>0]|0)return;if(d<<24>>24){h=c[b>>2]|0;c[h+20>>2]=3;Bd[c[h>>2]&511](b);return}g=b+76|0;if((c[g>>2]|0)<=0)return;d=e+24|0;e=0;f=c[b+84>>2]|0;while(1){j=da(c[f+36>>2]|0,c[f+28>>2]|0)|0;i=da(c[f+40>>2]|0,c[f+12>>2]|0)|0;c[d+(e<<2)>>2]=Xd[c[(c[h>>2]|0)+8>>2]&255](b,1,j,i)|0;e=e+1|0;if((e|0)>=(c[g>>2]|0))break;else f=f+88|0}return}function aF(a){a=a|0;var b=0;b=Hd[c[c[a+4>>2]>>2]&255](a,1,32)|0;c[a+392>>2]=b;c[b>>2]=236;c[b+4>>2]=237;c[b+8>>2]=238;c[b+12>>2]=239;c[b+16>>2]=240;c[b+20>>2]=53;c[b+24>>2]=84;c[b+28>>2]=0;return}function bF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=a+28|0;if(!((c[b>>2]|0)>>>0<=16777215?(c[a+32>>2]|0)>>>0<=16777215:0)){g=c[a>>2]|0;c[g+20>>2]=42;c[g+24>>2]=65500;Bd[c[g>>2]&511](a)}e=c[a+56>>2]|0;f=a+364|0;d=c[f>>2]|0;g=da(d,c[a+60>>2]|0)|0;if(e>>>0>=g>>>0){c[a+64>>2]=da(c[b>>2]|0,d)|0;c[a+68>>2]=da(d,c[a+32>>2]|0)|0;c[a+264>>2]=1;c[a+268>>2]=1;return}if(e<<1>>>0>=g>>>0){c[a+64>>2]=lH(da(c[b>>2]|0,d)|0,2)|0;c[a+68>>2]=lH(da(c[f>>2]|0,c[a+32>>2]|0)|0,2)|0;c[a+264>>2]=2;c[a+268>>2]=2;return}if((e*3|0)>>>0>=g>>>0){c[a+64>>2]=lH(da(c[b>>2]|0,d)|0,3)|0;c[a+68>>2]=lH(da(c[f>>2]|0,c[a+32>>2]|0)|0,3)|0;c[a+264>>2]=3;c[a+268>>2]=3;return}if(e<<2>>>0>=g>>>0){c[a+64>>2]=lH(da(c[b>>2]|0,d)|0,4)|0;c[a+68>>2]=lH(da(c[f>>2]|0,c[a+32>>2]|0)|0,4)|0;c[a+264>>2]=4;c[a+268>>2]=4;return}if((e*5|0)>>>0>=g>>>0){c[a+64>>2]=lH(da(c[b>>2]|0,d)|0,5)|0;c[a+68>>2]=lH(da(c[f>>2]|0,c[a+32>>2]|0)|0,5)|0;c[a+264>>2]=5;c[a+268>>2]=5;return}if((e*6|0)>>>0>=g>>>0){c[a+64>>2]=lH(da(c[b>>2]|0,d)|0,6)|0;c[a+68>>2]=lH(da(c[f>>2]|0,c[a+32>>2]|0)|0,6)|0;c[a+264>>2]=6;c[a+268>>2]=6;return}if((e*7|0)>>>0>=g>>>0){c[a+64>>2]=lH(da(c[b>>2]|0,d)|0,7)|0;c[a+68>>2]=lH(da(c[f>>2]|0,c[a+32>>2]|0)|0,7)|0;c[a+264>>2]=7;c[a+268>>2]=7;return}if(e<<3>>>0>=g>>>0){c[a+64>>2]=lH(da(c[b>>2]|0,d)|0,8)|0;c[a+68>>2]=lH(da(c[f>>2]|0,c[a+32>>2]|0)|0,8)|0;c[a+264>>2]=8;c[a+268>>2]=8;return}if((e*9|0)>>>0>=g>>>0){c[a+64>>2]=lH(da(c[b>>2]|0,d)|0,9)|0;c[a+68>>2]=lH(da(c[f>>2]|0,c[a+32>>2]|0)|0,9)|0;c[a+264>>2]=9;c[a+268>>2]=9;return}if((e*10|0)>>>0>=g>>>0){c[a+64>>2]=lH(da(c[b>>2]|0,d)|0,10)|0;c[a+68>>2]=lH(da(c[f>>2]|0,c[a+32>>2]|0)|0,10)|0;c[a+264>>2]=10;c[a+268>>2]=10;return}if((e*11|0)>>>0>=g>>>0){c[a+64>>2]=lH(da(c[b>>2]|0,d)|0,11)|0;c[a+68>>2]=lH(da(c[f>>2]|0,c[a+32>>2]|0)|0,11)|0;c[a+264>>2]=11;c[a+268>>2]=11;return}if((e*12|0)>>>0>=g>>>0){c[a+64>>2]=lH(da(c[b>>2]|0,d)|0,12)|0;c[a+68>>2]=lH(da(c[f>>2]|0,c[a+32>>2]|0)|0,12)|0;c[a+264>>2]=12;c[a+268>>2]=12;return}if((e*13|0)>>>0>=g>>>0){c[a+64>>2]=lH(da(c[b>>2]|0,d)|0,13)|0;c[a+68>>2]=lH(da(c[f>>2]|0,c[a+32>>2]|0)|0,13)|0;c[a+264>>2]=13;c[a+268>>2]=13;return}if((e*14|0)>>>0>=g>>>0){c[a+64>>2]=lH(da(c[b>>2]|0,d)|0,14)|0;c[a+68>>2]=lH(da(c[f>>2]|0,c[a+32>>2]|0)|0,14)|0;c[a+264>>2]=14;c[a+268>>2]=14;return}b=da(c[b>>2]|0,d)|0;if((e*15|0)>>>0>>0){c[a+64>>2]=lH(b,16)|0;c[a+68>>2]=lH(da(c[f>>2]|0,c[a+32>>2]|0)|0,16)|0;c[a+264>>2]=16;c[a+268>>2]=16;return}else{c[a+64>>2]=lH(b,15)|0;c[a+68>>2]=lH(da(c[f>>2]|0,c[a+32>>2]|0)|0,15)|0;c[a+264>>2]=15;c[a+268>>2]=15;return}}function cF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+2576|0;x=D+2560|0;y=D;C=Hd[c[c[b+4>>2]>>2]&255](b,1,32)|0;c[b+376>>2]=C;c[C>>2]=241;c[C+4>>2]=242;c[C+8>>2]=243;a[C+13>>0]=0;B=d<<24>>24==0;if(B){bF(b);d=c[b+364>>2]|0}else{f=b+264|0;d=c[f>>2]|0;e=b+268|0;if((d|0)!=(c[e>>2]|0)){A=c[b>>2]|0;c[A+20>>2]=7;c[A+24>>2]=d;c[A+28>>2]=c[e>>2];Bd[c[A>>2]&511](b);d=c[f>>2]|0}c[b+364>>2]=d}A=b+364|0;if((d+-1|0)>>>0>15){z=c[b>>2]|0;c[z+20>>2]=7;c[z+24>>2]=d;c[z+28>>2]=c[A>>2];Bd[c[z>>2]&511](b);d=c[A>>2]|0}switch(d|0){case 5:{c[b+368>>2]=277456;g=16;break}case 7:{c[b+368>>2]=276984;g=16;break}case 6:{c[b+368>>2]=277248;g=16;break}case 3:{c[b+368>>2]=277752;g=16;break}case 2:{c[b+368>>2]=277856;g=16;break}case 4:{c[b+368>>2]=277624;g=16;break}default:{c[b+368>>2]=276664;if((d|0)<8)g=16;else d=63}}if((g|0)==16)d=(da(d,d)|0)+-1|0;z=b+372|0;c[z>>2]=d;u=b+68|0;d=c[u>>2]|0;if(!(((d|0)!=0?(c[b+64>>2]|0)!=0:0)?(c[b+76>>2]|0)>=1:0)){d=c[b>>2]|0;c[d+20>>2]=33;Bd[c[d>>2]&511](b);d=c[u>>2]|0}if(!((d|0)<=65500?(c[b+64>>2]|0)<=65500:0)){w=c[b>>2]|0;c[w+20>>2]=42;c[w+24>>2]=65500;Bd[c[w>>2]&511](b)}d=c[b+72>>2]|0;if((d+-8|0)>>>0>4){w=c[b>>2]|0;c[w+20>>2]=16;c[w+24>>2]=d;Bd[c[w>>2]&511](b)}w=b+76|0;d=c[w>>2]|0;if((d|0)>10){v=c[b>>2]|0;c[v+20>>2]=27;c[v+24>>2]=d;c[v+28>>2]=10;Bd[c[v>>2]&511](b);d=c[w>>2]|0}s=b+256|0;c[s>>2]=1;t=b+260|0;c[t>>2]=1;m=b+84|0;if((d|0)>0){g=d;d=1;j=1;k=0;l=c[m>>2]|0;while(1){e=l+8|0;f=c[e>>2]|0;h=l+12|0;if((f+-1|0)>>>0<=3?(n=c[h>>2]|0,(n+-1|0)>>>0<=3):0)e=n;else{g=c[b>>2]|0;c[g+20>>2]=19;Bd[c[g>>2]&511](b);g=c[w>>2]|0;j=c[s>>2]|0;f=c[e>>2]|0;d=c[t>>2]|0;e=c[h>>2]|0}j=(j|0)>(f|0)?j:f;c[s>>2]=j;d=(d|0)>(e|0)?d:e;c[t>>2]=d;k=k+1|0;if((k|0)>=(g|0))break;else l=l+88|0}if((g|0)>0){n=b+264|0;o=b+212|0;p=b+268|0;q=b+64|0;r=0;m=c[m>>2]|0;while(1){c[m+4>>2]=r;j=c[n>>2]|0;k=(a[o>>0]|0)!=0?8:4;a:do if((j|0)>(k|0))d=1;else{g=c[s>>2]|0;e=c[m+8>>2]|0;f=1;while(1){d=f<<1;if((g|0)%(da(d,e)|0)|0){d=f;break a}if((da(d,j)|0)>(k|0))break;else f=d}}while(0);l=da(d,j)|0;h=m+36|0;c[h>>2]=l;j=c[p>>2]|0;b:do if((j|0)>(k|0))d=1;else{g=c[t>>2]|0;e=c[m+12>>2]|0;f=1;while(1){d=f<<1;if((g|0)%(da(d,e)|0)|0){d=f;break b}if((da(d,j)|0)>(k|0))break;else f=d}}while(0);g=da(d,j)|0;e=m+40|0;c[e>>2]=g;d=g<<1;if((l|0)<=(d|0)){d=l<<1;if((g|0)>(d|0))c[e>>2]=d}else c[h>>2]=d;k=m+8|0;v=da(c[k>>2]|0,c[q>>2]|0)|0;c[m+28>>2]=lH(v,da(c[A>>2]|0,c[s>>2]|0)|0)|0;v=m+12|0;j=da(c[v>>2]|0,c[u>>2]|0)|0;c[m+32>>2]=lH(j,da(c[A>>2]|0,c[t>>2]|0)|0)|0;k=da(da(c[k>>2]|0,c[q>>2]|0)|0,c[h>>2]|0)|0;c[m+44>>2]=lH(k,da(c[A>>2]|0,c[s>>2]|0)|0)|0;v=da(da(c[v>>2]|0,c[u>>2]|0)|0,c[e>>2]|0)|0;c[m+48>>2]=lH(v,da(c[A>>2]|0,c[t>>2]|0)|0)|0;a[m+52>>0]=0;r=r+1|0;if((r|0)>=(c[w>>2]|0))break;else m=m+88|0}d=c[t>>2]|0}}else d=1;c[b+272>>2]=lH(c[u>>2]|0,da(c[A>>2]|0,d)|0)|0;u=b+204|0;d=c[u>>2]|0;if(d){v=b+200|0;if((c[v>>2]|0)<1){d=c[b>>2]|0;c[d+20>>2]=20;c[d+24>>2]=0;Bd[c[d>>2]&511](b);d=c[u>>2]|0}if((c[d+20>>2]|0)==0?(c[d+24>>2]|0)==63:0){a[b+252>>0]=0;e=c[w>>2]|0;if((e|0)>0){sfa(x|0,0,((e|0)>1?e:1)|0)|0;g=0}else g=0}else{a[b+252>>0]=1;e=c[w>>2]|0;if((e|0)>0){sfa(y|0,-1,e<<8|0)|0;g=1}else g=1}if((c[v>>2]|0)<1){f=g;d=e}else{s=b+252|0;t=1;while(1){r=c[d>>2]|0;if((r+-1|0)>>>0>3){q=c[b>>2]|0;c[q+20>>2]=27;c[q+24>>2]=r;c[q+28>>2]=4;Bd[c[q>>2]&511](b)}f=(r|0)>0;if(f){e=0;do{g=c[d+(e<<2)+4>>2]|0;if(!((g|0)>=0?(g|0)<(c[w>>2]|0):0)){q=c[b>>2]|0;c[q+20>>2]=20;c[q+24>>2]=t;Bd[c[q>>2]&511](b)}do if((e|0)>0){if((g|0)>(c[d+(e+-1<<2)+4>>2]|0))break;q=c[b>>2]|0;c[q+20>>2]=20;c[q+24>>2]=t;Bd[c[q>>2]&511](b)}while(0);e=e+1|0}while((e|0)!=(r|0))}m=c[d+20>>2]|0;n=c[d+24>>2]|0;o=c[d+28>>2]|0;p=c[d+32>>2]|0;do if(!(a[s>>0]|0)){if((m|0)!=0|(n|0)!=63|(o|0)!=0|(p|0)!=0){q=c[b>>2]|0;c[q+20>>2]=18;c[q+24>>2]=t;Bd[c[q>>2]&511](b)}if(f){e=0;do{g=x+(c[d+(e<<2)+4>>2]|0)|0;if(a[g>>0]|0){q=c[b>>2]|0;c[q+20>>2]=20;c[q+24>>2]=t;Bd[c[q>>2]&511](b)}a[g>>0]=1;e=e+1|0}while((e|0)!=(r|0))}}else{if(!(m>>>0<=63?!((n|0)<(m|0)|(n|0)>63|(o|0)<0|(o|0)>10|(p|0)<0|(p|0)>10):0)){q=c[b>>2]|0;c[q+20>>2]=18;c[q+24>>2]=t;Bd[c[q>>2]&511](b)}q=(m|0)==0;do if(q){if(!n)break;k=c[b>>2]|0;c[k+20>>2]=18;c[k+24>>2]=t;Bd[c[k>>2]&511](b)}else{if((r|0)==1)break;k=c[b>>2]|0;c[k+20>>2]=18;c[k+24>>2]=t;Bd[c[k>>2]&511](b)}while(0);if(!f)break;l=(o|0)==0;j=(p|0)==(o+-1|0);k=0;do{h=c[d+(k<<2)+4>>2]|0;do if(q)g=0;else{if((c[y+(h<<8)>>2]|0)>=0){g=m;break}g=c[b>>2]|0;c[g+20>>2]=18;c[g+24>>2]=t;Bd[c[g>>2]&511](b);g=m}while(0);c:do if((g|0)<=(n|0)){if(!j){if(!l)while(1){f=c[b>>2]|0;c[f+20>>2]=18;c[f+24>>2]=t;Bd[c[f>>2]&511](b);c[y+(h<<8)+(g<<2)>>2]=p;if((g|0)<(n|0))g=g+1|0;else break c}while(1){e=y+(h<<8)+(g<<2)|0;if((c[e>>2]|0)>=0){f=c[b>>2]|0;c[f+20>>2]=18;c[f+24>>2]=t;Bd[c[f>>2]&511](b)}c[e>>2]=p;if((g|0)<(n|0))g=g+1|0;else break c}}if(l)while(1){e=y+(h<<8)+(g<<2)|0;if((c[e>>2]|0)>=1){f=c[b>>2]|0;c[f+20>>2]=18;c[f+24>>2]=t;Bd[c[f>>2]&511](b)}c[e>>2]=p;if((g|0)<(n|0))g=g+1|0;else break c}while(1){e=y+(h<<8)+(g<<2)|0;f=c[e>>2]|0;do if((f|0)<0){f=c[b>>2]|0;c[f+20>>2]=18;c[f+24>>2]=t;Bd[c[f>>2]&511](b)}else{if((o|0)==(f|0))break;f=c[b>>2]|0;c[f+20>>2]=18;c[f+24>>2]=t;Bd[c[f>>2]&511](b)}while(0);c[e>>2]=p;if((g|0)<(n|0))g=g+1|0;else break}}while(0);k=k+1|0}while((k|0)!=(r|0))}while(0);if((t|0)<(c[v>>2]|0)){t=t+1|0;d=d+36|0}else break}f=a[s>>0]|0;d=c[w>>2]|0}g=(d|0)>0;if(!(f<<24>>24)){if(g){e=0;do{if(!(a[x+e>>0]|0)){d=c[b>>2]|0;c[d+20>>2]=46;Bd[c[d>>2]&511](b);d=c[w>>2]|0}e=e+1|0}while((e|0)<(d|0))}}else if(g){e=0;do{if((c[y+(e<<8)>>2]|0)<0){d=c[b>>2]|0;c[d+20>>2]=46;Bd[c[d>>2]&511](b);d=c[w>>2]|0}e=e+1|0}while((e|0)<(d|0))}if((c[A>>2]|0)<8){h=c[u>>2]|0;if((c[v>>2]|0)>0){j=0;d=0;do{if((j|0)!=(d|0)){e=h+(d*36|0)+0|0;f=h+(j*36|0)+0|0;g=e+36|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0))}e=c[z>>2]|0;if((c[h+(d*36|0)+20>>2]|0)<=(e|0)){f=h+(d*36|0)+24|0;if((c[f>>2]|0)>(e|0))c[f>>2]=e;d=d+1|0}j=j+1|0}while((j|0)<(c[v>>2]|0))}else d=0;c[v>>2]=d}}else{a[b+252>>0]=0;c[b+200>>2]=1}d=b+210|0;e=a[d>>0]|0;f=b+209|0;do if(!(e<<24>>24))if(!(a[f>>0]|0)){if((a[b+252>>0]|0)==0?((c[A>>2]|0)+-2|0)>>>0>=6:0){e=0;break}a[d>>0]=1;e=1}else e=0;else a[f>>0]=0;while(0);do if(!B){d=C+16|0;if(!(e<<24>>24)){c[d>>2]=2;e=0;break}else{c[d>>2]=1;break}}else c[C+16>>2]=0;while(0);c[C+28>>2]=0;c[C+20>>2]=0;d=c[b+200>>2]|0;if(!(e<<24>>24)){c[C+24>>2]=d;i=D;return}else{c[C+24>>2]=d<<1;i=D;return}}function dF(b){b=b|0;var d=0;d=c[b+4>>2]|0;if(!d)return;Cd[c[d+36>>2]&255](b,1);d=b+20|0;if(!(a[b+16>>0]|0)){c[d>>2]=100;return}else{c[d>>2]=200;c[b+276>>2]=0;return}}function eF(a){a=a|0;var b=0,d=0;b=a+4|0;d=c[b>>2]|0;if(d)Bd[c[d+40>>2]&511](a);c[b>>2]=0;c[a+20>>2]=0;return}function fF(b){b=b|0;b=Hd[c[c[b+4>>2]>>2]&255](b,0,130)|0;a[b+128>>0]=0;return b|0}function gF(b){b=b|0;b=Hd[c[c[b+4>>2]>>2]&255](b,0,274)|0;a[b+273>>0]=0;return b|0}function hF(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=d+20|0;g=c[i>>2]|0;if((g|0)!=100){h=c[d>>2]|0;c[h+20>>2]=21;c[h+24>>2]=g;Bd[c[h>>2]&511](d)}g=d+88|0;h=c[g>>2]|0;if(!h){h=fF(d)|0;c[g>>2]=h}f=f<<24>>24==0;if(f){g=0;do{j=((da(c[268672+(g<<2)>>2]|0,e)|0)+50|0)/100|0;j=(j|0)<1?1:j;b[h+(g<<1)>>1]=(j|0)>32767?32767:j&65535;g=g+1|0}while((g|0)!=64)}else{g=0;do{j=((da(c[268672+(g<<2)>>2]|0,e)|0)+50|0)/100|0;j=(j|0)<1?1:j;j=(j|0)>32767?32767:j;b[h+(g<<1)>>1]=(j|0)>255?255:j&65535;g=g+1|0}while((g|0)!=64)}a[h+128>>0]=0;g=c[i>>2]|0;if((g|0)!=100){j=c[d>>2]|0;c[j+20>>2]=21;c[j+24>>2]=g;Bd[c[j>>2]&511](d)}g=d+92|0;h=c[g>>2]|0;if(!h){h=fF(d)|0;c[g>>2]=h}if(f){g=0;do{j=((da(c[268928+(g<<2)>>2]|0,e)|0)+50|0)/100|0;j=(j|0)<1?1:j;b[h+(g<<1)>>1]=(j|0)>32767?32767:j&65535;g=g+1|0}while((g|0)!=64);j=h+128|0;a[j>>0]=0;return}else{g=0;do{j=((da(c[268928+(g<<2)>>2]|0,e)|0)+50|0)/100|0;j=(j|0)<1?1:j;j=(j|0)>32767?32767:j;b[h+(g<<1)>>1]=(j|0)>255?255:j&65535;g=g+1|0}while((g|0)!=64);j=h+128|0;a[j>>0]=0;return}}function iF(a,b,c){a=a|0;b=b|0;c=c|0;b=(b|0)<1?1:b;b=(b|0)>100?100:b;if((b|0)<50)b=5e3/(b|0)|0;else b=200-(b<<1)|0;hF(a,b,c);return}function jF(d){d=d|0;var e=0,f=0;e=c[d+20>>2]|0;if((e|0)!=100){f=c[d>>2]|0;c[f+20>>2]=21;c[f+24>>2]=e;Bd[c[f>>2]&511](d)}e=d+84|0;if(!(c[e>>2]|0))c[e>>2]=Hd[c[c[d+4>>2]>>2]&255](d,0,880)|0;c[d+56>>2]=1;c[d+60>>2]=1;f=d+72|0;c[f>>2]=8;hF(d,50,1);gQ(d,d+120|0,269184,269208);gQ(d,d+136|0,269264,269288);gQ(d,d+124|0,269224,269248);gQ(d,d+140|0,269456,269480);a[d+152>>0]=0;a[d+168>>0]=1;a[d+184>>0]=5;a[d+153>>0]=0;a[d+169>>0]=1;a[d+185>>0]=5;a[d+154>>0]=0;a[d+170>>0]=1;a[d+186>>0]=5;a[d+155>>0]=0;a[d+171>>0]=1;a[d+187>>0]=5;a[d+156>>0]=0;a[d+172>>0]=1;a[d+188>>0]=5;a[d+157>>0]=0;a[d+173>>0]=1;a[d+189>>0]=5;a[d+158>>0]=0;a[d+174>>0]=1;a[d+190>>0]=5;a[d+159>>0]=0;a[d+175>>0]=1;a[d+191>>0]=5;a[d+160>>0]=0;a[d+176>>0]=1;a[d+192>>0]=5;a[d+161>>0]=0;a[d+177>>0]=1;a[d+193>>0]=5;a[d+162>>0]=0;a[d+178>>0]=1;a[d+194>>0]=5;a[d+163>>0]=0;a[d+179>>0]=1;a[d+195>>0]=5;a[d+164>>0]=0;a[d+180>>0]=1;a[d+196>>0]=5;a[d+165>>0]=0;a[d+181>>0]=1;a[d+197>>0]=5;a[d+166>>0]=0;a[d+182>>0]=1;a[d+198>>0]=5;a[d+167>>0]=0;a[d+183>>0]=1;a[d+199>>0]=5;c[d+204>>2]=0;c[d+200>>2]=0;a[d+208>>0]=0;a[d+209>>0]=(c[f>>2]|0)>8&1;a[d+210>>0]=0;a[d+211>>0]=0;a[d+212>>0]=1;f=d+216|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;a[d+233>>0]=1;a[d+234>>0]=1;a[d+235>>0]=0;b[d+236>>1]=1;b[d+238>>1]=1;c[d+244>>2]=0;kF(d);return}function kF(b){b=b|0;var d=0,e=0,f=0;switch(c[b+40>>2]|0){case 1:{d=c[b+20>>2]|0;if((d|0)!=100){e=c[b>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Bd[c[e>>2]&511](b)}c[b+80>>2]=1;a[b+240>>0]=0;a[b+232>>0]=1;c[b+76>>2]=1;b=c[b+84>>2]|0;c[b>>2]=1;c[b+8>>2]=1;c[b+12>>2]=1;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;return}case 6:{d=c[b+20>>2]|0;if((d|0)!=100){e=c[b>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Bd[c[e>>2]&511](b)}c[b+80>>2]=6;a[b+240>>0]=0;a[b+232>>0]=1;a[b+233>>0]=2;c[b+76>>2]=3;e=c[b+84>>2]|0;c[e>>2]=114;c[e+8>>2]=1;c[e+12>>2]=1;c[e+16>>2]=0;b=(c[b+244>>2]|0)==1&1;c[e+20>>2]=b;c[e+24>>2]=b;c[e+88>>2]=103;c[e+96>>2]=1;c[e+100>>2]=1;c[e+104>>2]=0;c[e+108>>2]=0;c[e+112>>2]=0;c[e+176>>2]=98;c[e+184>>2]=1;c[e+188>>2]=1;c[e+192>>2]=0;c[e+196>>2]=b;c[e+200>>2]=b;return}case 7:{d=c[b+20>>2]|0;if((d|0)!=100){e=c[b>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Bd[c[e>>2]&511](b)}c[b+80>>2]=7;a[b+240>>0]=0;a[b+232>>0]=1;a[b+233>>0]=2;c[b+76>>2]=3;b=c[b+84>>2]|0;c[b>>2]=1;c[b+8>>2]=2;c[b+12>>2]=2;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+88>>2]=34;c[b+96>>2]=1;c[b+100>>2]=1;c[b+104>>2]=1;c[b+108>>2]=1;c[b+112>>2]=1;c[b+176>>2]=35;c[b+184>>2]=1;c[b+188>>2]=1;c[b+192>>2]=1;c[b+196>>2]=1;c[b+200>>2]=1;return}case 4:{d=c[b+20>>2]|0;if((d|0)!=100){e=c[b>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Bd[c[e>>2]&511](b)}c[b+80>>2]=4;a[b+232>>0]=0;a[b+240>>0]=1;c[b+76>>2]=4;b=c[b+84>>2]|0;c[b>>2]=67;c[b+8>>2]=1;c[b+12>>2]=1;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+88>>2]=77;c[b+96>>2]=1;c[b+100>>2]=1;c[b+104>>2]=0;c[b+108>>2]=0;c[b+112>>2]=0;c[b+176>>2]=89;c[b+184>>2]=1;c[b+188>>2]=1;c[b+192>>2]=0;c[b+196>>2]=0;c[b+200>>2]=0;c[b+264>>2]=75;c[b+272>>2]=1;c[b+276>>2]=1;c[b+280>>2]=0;c[b+284>>2]=0;c[b+288>>2]=0;return}case 2:{d=c[b+20>>2]|0;if((d|0)!=100){e=c[b>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Bd[c[e>>2]&511](b)}c[b+80>>2]=3;a[b+240>>0]=0;a[b+232>>0]=1;c[b+76>>2]=3;b=c[b+84>>2]|0;c[b>>2]=1;c[b+8>>2]=2;c[b+12>>2]=2;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+88>>2]=2;c[b+96>>2]=1;c[b+100>>2]=1;c[b+104>>2]=1;c[b+108>>2]=1;c[b+112>>2]=1;c[b+176>>2]=3;c[b+184>>2]=1;c[b+188>>2]=1;c[b+192>>2]=1;c[b+196>>2]=1;c[b+200>>2]=1;return}case 0:{d=c[b+20>>2]|0;if((d|0)!=100){e=c[b>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Bd[c[e>>2]&511](b)}c[b+80>>2]=0;a[b+232>>0]=0;a[b+240>>0]=0;d=c[b+36>>2]|0;e=b+76|0;c[e>>2]=d;if((d+-1|0)>>>0>9){f=c[b>>2]|0;c[f+20>>2]=27;c[f+24>>2]=d;c[f+28>>2]=10;Bd[c[f>>2]&511](b);d=c[e>>2]|0}if((d|0)<=0)return;e=c[b+84>>2]|0;b=0;do{c[e+(b*88|0)>>2]=b;c[e+(b*88|0)+8>>2]=1;c[e+(b*88|0)+12>>2]=1;c[e+(b*88|0)+16>>2]=0;c[e+(b*88|0)+20>>2]=0;c[e+(b*88|0)+24>>2]=0;b=b+1|0}while((b|0)!=(d|0));return}case 3:{d=c[b+20>>2]|0;if((d|0)!=100){f=c[b>>2]|0;c[f+20>>2]=21;c[f+24>>2]=d;Bd[c[f>>2]&511](b)}c[b+80>>2]=3;a[b+240>>0]=0;a[b+232>>0]=1;c[b+76>>2]=3;b=c[b+84>>2]|0;c[b>>2]=1;c[b+8>>2]=2;c[b+12>>2]=2;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+88>>2]=2;c[b+96>>2]=1;c[b+100>>2]=1;c[b+104>>2]=1;c[b+108>>2]=1;c[b+112>>2]=1;c[b+176>>2]=3;c[b+184>>2]=1;c[b+188>>2]=1;c[b+192>>2]=1;c[b+196>>2]=1;c[b+200>>2]=1;return}case 5:{d=c[b+20>>2]|0;if((d|0)!=100){f=c[b>>2]|0;c[f+20>>2]=21;c[f+24>>2]=d;Bd[c[f>>2]&511](b)}c[b+80>>2]=5;a[b+232>>0]=0;a[b+240>>0]=1;c[b+76>>2]=4;b=c[b+84>>2]|0;c[b>>2]=1;c[b+8>>2]=2;c[b+12>>2]=2;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+88>>2]=2;c[b+96>>2]=1;c[b+100>>2]=1;c[b+104>>2]=1;c[b+108>>2]=1;c[b+112>>2]=1;c[b+176>>2]=3;c[b+184>>2]=1;c[b+188>>2]=1;c[b+192>>2]=1;c[b+196>>2]=1;c[b+200>>2]=1;c[b+264>>2]=4;c[b+272>>2]=2;c[b+276>>2]=2;c[b+280>>2]=0;c[b+284>>2]=0;c[b+288>>2]=0;return}default:{f=c[b>>2]|0;c[f+20>>2]=10;Bd[c[f>>2]&511](b);return}}}function lF(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b+20>>2]|0;if((e|0)!=100){f=c[b>>2]|0;c[f+20>>2]=21;c[f+24>>2]=e;Bd[c[f>>2]&511](b)}c[b+80>>2]=d;e=b+232|0;a[e>>0]=0;f=b+240|0;a[f>>0]=0;switch(d|0){case 0:{e=c[b+36>>2]|0;f=b+76|0;c[f>>2]=e;if((e+-1|0)>>>0>9){d=c[b>>2]|0;c[d+20>>2]=27;c[d+24>>2]=e;c[d+28>>2]=10;Bd[c[d>>2]&511](b);e=c[f>>2]|0}if((e|0)<=0)return;f=c[b+84>>2]|0;d=0;do{c[f+(d*88|0)>>2]=d;c[f+(d*88|0)+8>>2]=1;c[f+(d*88|0)+12>>2]=1;c[f+(d*88|0)+16>>2]=0;c[f+(d*88|0)+20>>2]=0;c[f+(d*88|0)+24>>2]=0;d=d+1|0}while((d|0)<(e|0));return}case 4:{a[f>>0]=1;c[b+76>>2]=4;d=c[b+84>>2]|0;c[d>>2]=67;c[d+8>>2]=1;c[d+12>>2]=1;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+88>>2]=77;c[d+96>>2]=1;c[d+100>>2]=1;c[d+104>>2]=0;c[d+108>>2]=0;c[d+112>>2]=0;c[d+176>>2]=89;c[d+184>>2]=1;c[d+188>>2]=1;c[d+192>>2]=0;c[d+196>>2]=0;c[d+200>>2]=0;c[d+264>>2]=75;c[d+272>>2]=1;c[d+276>>2]=1;c[d+280>>2]=0;c[d+284>>2]=0;c[d+288>>2]=0;return}case 5:{a[f>>0]=1;c[b+76>>2]=4;d=c[b+84>>2]|0;c[d>>2]=1;c[d+8>>2]=2;c[d+12>>2]=2;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+88>>2]=2;c[d+96>>2]=1;c[d+100>>2]=1;c[d+104>>2]=1;c[d+108>>2]=1;c[d+112>>2]=1;c[d+176>>2]=3;c[d+184>>2]=1;c[d+188>>2]=1;c[d+192>>2]=1;c[d+196>>2]=1;c[d+200>>2]=1;c[d+264>>2]=4;c[d+272>>2]=2;c[d+276>>2]=2;c[d+280>>2]=0;c[d+284>>2]=0;c[d+288>>2]=0;return}case 6:{a[e>>0]=1;a[b+233>>0]=2;c[b+76>>2]=3;d=c[b+84>>2]|0;c[d>>2]=114;c[d+8>>2]=1;c[d+12>>2]=1;c[d+16>>2]=0;b=(c[b+244>>2]|0)==1&1;c[d+20>>2]=b;c[d+24>>2]=b;c[d+88>>2]=103;c[d+96>>2]=1;c[d+100>>2]=1;c[d+104>>2]=0;c[d+108>>2]=0;c[d+112>>2]=0;c[d+176>>2]=98;c[d+184>>2]=1;c[d+188>>2]=1;c[d+192>>2]=0;c[d+196>>2]=b;c[d+200>>2]=b;return}case 2:{a[f>>0]=1;c[b+76>>2]=3;d=c[b+84>>2]|0;c[d>>2]=82;c[d+8>>2]=1;c[d+12>>2]=1;c[d+16>>2]=0;b=(c[b+244>>2]|0)==1&1;c[d+20>>2]=b;c[d+24>>2]=b;c[d+88>>2]=71;c[d+96>>2]=1;c[d+100>>2]=1;c[d+104>>2]=0;c[d+108>>2]=0;c[d+112>>2]=0;c[d+176>>2]=66;c[d+184>>2]=1;c[d+188>>2]=1;c[d+192>>2]=0;c[d+196>>2]=b;c[d+200>>2]=b;return}case 1:{a[e>>0]=1;c[b+76>>2]=1;d=c[b+84>>2]|0;c[d>>2]=1;c[d+8>>2]=1;c[d+12>>2]=1;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;return}case 3:{a[e>>0]=1;c[b+76>>2]=3;d=c[b+84>>2]|0;c[d>>2]=1;c[d+8>>2]=2;c[d+12>>2]=2;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+88>>2]=2;c[d+96>>2]=1;c[d+100>>2]=1;c[d+104>>2]=1;c[d+108>>2]=1;c[d+112>>2]=1;c[d+176>>2]=3;c[d+184>>2]=1;c[d+188>>2]=1;c[d+192>>2]=1;c[d+196>>2]=1;c[d+200>>2]=1;return}case 7:{a[e>>0]=1;a[b+233>>0]=2;c[b+76>>2]=3;d=c[b+84>>2]|0;c[d>>2]=1;c[d+8>>2]=2;c[d+12>>2]=2;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+88>>2]=34;c[d+96>>2]=1;c[d+100>>2]=1;c[d+104>>2]=1;c[d+108>>2]=1;c[d+112>>2]=1;c[d+176>>2]=35;c[d+184>>2]=1;c[d+188>>2]=1;c[d+192>>2]=1;c[d+196>>2]=1;c[d+200>>2]=1;return}default:{d=c[b>>2]|0;c[d+20>>2]=11;Bd[c[d>>2]&511](b);return}}}function mF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=c[a+76>>2]|0;b=c[a+20>>2]|0;if((b|0)!=100){g=c[a>>2]|0;c[g+20>>2]=21;c[g+24>>2]=b;Bd[c[g>>2]&511](a)}f=(j|0)==3;if(f){g=c[a+80>>2]|0;if((g|0)==7|(g|0)==3)g=10;else h=7}else if((j|0)>4)g=j*6|0;else h=7;if((h|0)==7)g=j<<2|2;d=a+412|0;e=c[d>>2]|0;b=a+416|0;if((e|0)!=0?(c[b>>2]|0)>=(g|0):0)i=e;else{i=(g|0)>10?g:10;c[b>>2]=i;i=Hd[c[c[a+4>>2]>>2]&255](a,0,i*36|0)|0;c[d>>2]=i}c[a+204>>2]=i;c[a+200>>2]=g;do if(f){h=c[a+80>>2]|0;if(!((h|0)==7|(h|0)==3)){c[i>>2]=3;b=0;h=17;break}c[i>>2]=3;c[i+4>>2]=0;c[i+8>>2]=1;c[i+12>>2]=2;c[i+24>>2]=0;c[i+20>>2]=0;c[i+28>>2]=0;c[i+32>>2]=1;c[i+36>>2]=1;c[i+40>>2]=0;c[i+56>>2]=1;c[i+60>>2]=5;c[i+64>>2]=0;c[i+68>>2]=2;c[i+72>>2]=1;c[i+76>>2]=2;c[i+92>>2]=1;c[i+96>>2]=63;c[i+100>>2]=0;c[i+104>>2]=1;c[i+108>>2]=1;c[i+112>>2]=1;c[i+128>>2]=1;c[i+132>>2]=63;c[i+136>>2]=0;c[i+140>>2]=1;c[i+144>>2]=1;c[i+148>>2]=0;c[i+164>>2]=6;c[i+168>>2]=63;c[i+172>>2]=0;c[i+176>>2]=2;c[i+180>>2]=1;c[i+184>>2]=0;c[i+200>>2]=1;c[i+204>>2]=63;c[i+208>>2]=2;c[i+212>>2]=1;c[i+216>>2]=3;c[i+220>>2]=0;c[i+224>>2]=1;c[i+228>>2]=2;c[i+240>>2]=0;c[i+236>>2]=0;c[i+244>>2]=1;c[i+248>>2]=0;c[i+252>>2]=1;c[i+256>>2]=2;c[i+272>>2]=1;c[i+276>>2]=63;c[i+280>>2]=1;c[i+284>>2]=0;c[i+288>>2]=1;c[i+292>>2]=1;c[i+308>>2]=1;c[i+312>>2]=63;c[i+316>>2]=1;c[i+320>>2]=0;c[i+324>>2]=1;c[i+328>>2]=0;c[i+344>>2]=1;c[i+348>>2]=63;c[i+352>>2]=1;c[i+356>>2]=0;return}else{if((j|0)<5){c[i>>2]=j;if((j|0)>0){b=0;h=17;break}else{h=18;break}}else{b=i;d=0}while(1){c[b>>2]=1;c[b+4>>2]=d;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;c[b+32>>2]=1;d=d+1|0;if((d|0)==(j|0))break;else b=b+36|0}b=i+(j*36|0)|0;e=j;f=0}while(0);if((h|0)==17)while(1){c[i+(b<<2)+4>>2]=b;b=b+1|0;if((b|0)==(j|0)){h=18;break}else h=17}if((h|0)==18){c[i+24>>2]=0;c[i+20>>2]=0;c[i+28>>2]=0;c[i+32>>2]=1;b=i+36|0;e=1;f=1}a=(j|0)>0;if(a){d=0;while(1){c[b>>2]=1;c[b+4>>2]=d;c[b+20>>2]=1;c[b+24>>2]=5;c[b+28>>2]=0;c[b+32>>2]=2;d=d+1|0;if((d|0)==(j|0))break;else b=b+36|0}d=e+j|0;b=i+(d*36|0)|0;e=0;while(1){c[b>>2]=1;c[b+4>>2]=e;c[b+20>>2]=6;c[b+24>>2]=63;c[b+28>>2]=0;c[b+32>>2]=2;e=e+1|0;if((e|0)==(j|0))break;else b=b+36|0}e=d+j|0;b=i+(e*36|0)|0;d=0;while(1){c[b>>2]=1;c[b+4>>2]=d;c[b+20>>2]=1;c[b+24>>2]=63;c[b+28>>2]=2;c[b+32>>2]=1;d=d+1|0;if((d|0)==(j|0))break;else b=b+36|0}e=i+((e+j|0)*36|0)|0}else e=b;if(f){c[e>>2]=j;if(a){b=0;do{c[e+(b<<2)+4>>2]=b;b=b+1|0}while((b|0)!=(j|0))}c[e+24>>2]=0;c[e+20>>2]=0;c[e+28>>2]=1;c[e+32>>2]=0;b=e+36|0}else{b=e;d=0;while(1){c[b>>2]=1;c[b+4>>2]=d;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=1;c[b+32>>2]=0;d=d+1|0;if((d|0)==(j|0))break;else b=b+36|0}b=e+(j*36|0)|0}if(a)d=0;else return;while(1){c[b>>2]=1;c[b+4>>2]=d;c[b+20>>2]=1;c[b+24>>2]=63;c[b+28>>2]=1;c[b+32>>2]=0;d=d+1|0;if((d|0)==(j|0))break;else b=b+36|0}return}function nF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;if(!(d<<24>>24))s=b;else{s=c[b>>2]|0;c[s+20>>2]=3;Bd[c[s>>2]&511](b);s=b}t=b+4|0;e=Hd[c[c[t>>2]>>2]&255](s,1,64)|0;c[b+384>>2]=e;c[e>>2]=85;d=e+4|0;if(!(a[(c[b+400>>2]|0)+8>>0]|0)){c[d>>2]=40;g=b+76|0;if((c[g>>2]|0)<=0)return;h=b+264|0;i=b+256|0;j=b+260|0;e=e+8|0;f=0;d=c[b+84>>2]|0;while(1){r=da(c[h>>2]|0,c[d+28>>2]|0)|0;r=da(r,c[i>>2]|0)|0;c[e+(f<<2)>>2]=Xd[c[(c[t>>2]|0)+8>>2]&255](s,1,(r|0)/(c[d+8>>2]|0)|0,c[j>>2]|0)|0;f=f+1|0;if((f|0)>=(c[g>>2]|0))break;else d=d+88|0}return}c[d>>2]=39;p=c[b+260>>2]|0;q=b+76|0;d=da(p*20|0,c[q>>2]|0)|0;d=Hd[c[c[t>>2]>>2]&255](s,1,d)|0;g=c[b+84>>2]|0;if((c[q>>2]|0)<=0)return;r=b+264|0;m=b+256|0;n=p*3|0;o=p*12|0;k=e+8|0;l=p*5|0;i=p<<1;h=p<<2;if((p|0)>0)j=0;else{e=0;while(1){h=da(c[r>>2]|0,c[g+28>>2]|0)|0;h=da(h,c[m>>2]|0)|0;j=d+(p<<2)|0;qfa(j|0,Xd[c[(c[t>>2]|0)+8>>2]&255](s,1,(h|0)/(c[g+8>>2]|0)|0,n)|0,o|0)|0;c[k+(e<<2)>>2]=j;e=e+1|0;if((e|0)>=(c[q>>2]|0))break;else{g=g+88|0;d=d+(l<<2)|0}}return}while(1){e=da(c[r>>2]|0,c[g+28>>2]|0)|0;e=da(e,c[m>>2]|0)|0;e=Xd[c[(c[t>>2]|0)+8>>2]&255](s,1,(e|0)/(c[g+8>>2]|0)|0,n)|0;b=d+(p<<2)|0;qfa(b|0,e|0,o|0)|0;f=0;do{c[d+(f<<2)>>2]=c[e+(f+i<<2)>>2];c[d+(f+h<<2)>>2]=c[e+(f<<2)>>2];f=f+1|0}while((f|0)!=(p|0));c[k+(j<<2)>>2]=b;j=j+1|0;if((j|0)>=(c[q>>2]|0))break;else{g=g+88|0;d=d+(l<<2)|0}}return}function oF(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;r=Hd[c[c[b+4>>2]>>2]&255](b,1,112)|0;c[b+400>>2]=r;c[r>>2]=244;c[r+4>>2]=15;s=r+8|0;a[s>>0]=0;if(a[b+211>>0]|0){v=c[b>>2]|0;c[v+20>>2]=26;Bd[c[v>>2]&511](b)}k=b+76|0;if((c[k>>2]|0)<=0)return;l=b+264|0;m=b+268|0;n=b+256|0;o=b+260|0;p=r+52|0;v=b+216|0;q=r+12|0;t=0;u=c[b+84>>2]|0;d=1;while(1){e=da(c[u+36>>2]|0,c[u+8>>2]|0)|0;e=(e|0)/(c[l>>2]|0)|0;f=da(c[u+40>>2]|0,c[u+12>>2]|0)|0;f=(f|0)/(c[m>>2]|0)|0;g=c[n>>2]|0;h=c[o>>2]|0;c[p+(t<<2)>>2]=f;i=(h|0)==(f|0);do if((g|0)==(e|0)&i){e=q+(t<<2)|0;if(!(c[v>>2]|0)){c[e>>2]=30;break}else{c[e>>2]=29;a[s>>0]=1;break}}else{j=(g|0)==(e<<1|0);if(j&i){c[q+(t<<2)>>2]=31;d=0;break}if(j&(h|0)==(f<<1|0)){e=q+(t<<2)|0;if(!(c[v>>2]|0)){c[e>>2]=33;break}else{c[e>>2]=32;a[s>>0]=1;break}}if(((g|0)%(e|0)|0|0)==0?((h|0)%(f|0)|0|0)==0:0){c[q+(t<<2)>>2]=34;a[r+(t+92)>>0]=(g|0)/(e|0)|0;a[r+(t+102)>>0]=(h|0)/(f|0)|0;d=0;break}j=c[b>>2]|0;c[j+20>>2]=39;Bd[c[j>>2]&511](b)}while(0);t=t+1|0;if((t|0)>=(c[k>>2]|0))break;else u=u+88|0}if((c[v>>2]|0)==0|d<<24>>24!=0)return;v=c[b>>2]|0;c[v+20>>2]=101;Cd[c[v+4>>2]&255](b,0);return}function pF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;c[b+4>>2]=0;if((d|0)!=90){f=c[b>>2]|0;c[f+20>>2]=13;c[f+24>>2]=90;c[f+28>>2]=d;Bd[c[f>>2]&511](b)}if((e|0)==456)e=b;else{f=c[b>>2]|0;c[f+20>>2]=22;c[f+24>>2]=456;c[f+28>>2]=e;Bd[c[f>>2]&511](b);e=b}g=c[b>>2]|0;d=b+12|0;f=c[d>>2]|0;sfa(b|0,0,456)|0;c[b>>2]=g;c[d>>2]=f;a[b+16>>0]=1;aH(e);c[b+8>>2]=0;c[b+24>>2]=0;c[b+276>>2]=0;e=b+144|0;d=e+48|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(d|0));GF(b);DF(b);c[b+20>>2]=200;return}function qF(a){a=a|0;eF(a);return}function rF(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+20>>2]|0;if((d&-2|0)!=200){e=c[a>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Bd[c[e>>2]&511](a)}d=sF(a)|0;if((d|0)==1){b=1;return b|0}else if((d|0)==2){if(b<<24>>24){b=c[a>>2]|0;c[b+20>>2]=53;Bd[c[b>>2]&511](a)}dF(a);b=2;return b|0}else{b=d;return b|0}return 0}function sF(b){b=b|0;var e=0,f=0,g=0,i=0,j=0;j=b+20|0;e=c[j>>2]|0;switch(e|0){case 210:case 208:case 207:case 206:case 205:case 204:case 203:{b=Ed[c[c[b+424>>2]>>2]&511](b)|0;return b|0}case 201:{e=b+424|0;break}case 200:{e=b+424|0;Bd[c[(c[e>>2]|0)+4>>2]&511](b);Bd[c[(c[b+24>>2]|0)+8>>2]&511](b);c[j>>2]=201;break}case 202:{b=1;return b|0}default:{j=c[b>>2]|0;c[j+20>>2]=21;c[j+24>>2]=e;Bd[c[j>>2]&511](b);b=0;return b|0}}e=Ed[c[c[e>>2]>>2]&511](b)|0;if((e|0)!=1){b=e;return b|0}e=c[b+36>>2]|0;if((e|0)==3){g=c[b+196>>2]|0;e=c[g>>2]|0;f=c[g+88>>2]|0;g=c[g+176>>2]|0;i=(e|0)==1;do if(!(i&(f|0)==2&(g|0)==3)){if(i&(f|0)==34&(g|0)==35){c[b+40>>2]=7;break}if((e|0)==82&(f|0)==71&(g|0)==66){c[b+40>>2]=2;break}if((e|0)==114&(f|0)==103&(g|0)==98){c[b+40>>2]=6;break}if(a[b+256>>0]|0){c[b+40>>2]=3;break}if(!(a[b+264>>0]|0)){i=c[b>>2]|0;c[i+24>>2]=e;c[i+28>>2]=f;c[i+32>>2]=g;c[i+20>>2]=113;Cd[c[i+4>>2]&255](b,1);c[b+40>>2]=3;break}e=d[b+265>>0]|0;if((e|0)==1){c[b+40>>2]=3;break}else if(!e){c[b+40>>2]=2;break}else{g=c[b>>2]|0;c[g+20>>2]=116;c[g+24>>2]=e;Cd[c[g+4>>2]&255](b,-1);c[b+40>>2]=3;break}}else c[b+40>>2]=3;while(0);c[b+44>>2]=2}else if((e|0)==1){c[b+40>>2]=1;c[b+44>>2]=1}else if((e|0)==4){do if(a[b+264>>0]|0){e=d[b+265>>0]|0;if(!e){c[b+40>>2]=4;break}else if((e|0)==2){c[b+40>>2]=5;break}else{g=c[b>>2]|0;c[g+20>>2]=116;c[g+24>>2]=e;Cd[c[g+4>>2]&255](b,-1);c[b+40>>2]=5;break}}else c[b+40>>2]=4;while(0);c[b+44>>2]=4}else{c[b+40>>2]=0;c[b+44>>2]=0}g=c[b+392>>2]|0;c[b+48>>2]=g;c[b+52>>2]=g;h[b+56>>3]=1.0;a[b+64>>0]=0;a[b+65>>0]=0;c[b+68>>2]=0;a[b+72>>0]=1;a[b+73>>0]=1;a[b+74>>0]=0;c[b+76>>2]=2;a[b+80>>0]=1;c[b+84>>2]=256;c[b+116>>2]=0;a[b+88>>0]=0;a[b+89>>0]=0;a[b+90>>0]=0;c[j>>2]=202;b=1;return b|0}function tF(b){b=b|0;var d=0,e=0,f=0;d=b+20|0;e=c[d>>2]|0;if((e+-205|0)>>>0<2?(a[b+64>>0]|0)==0:0){if((c[b+120>>2]|0)>>>0<(c[b+96>>2]|0)>>>0){e=c[b>>2]|0;c[e+20>>2]=69;Bd[c[e>>2]&511](b)}Bd[c[(c[b+408>>2]|0)+4>>2]&511](b);c[d>>2]=210}else f=6;do if((f|0)==6)if((e|0)==207){c[d>>2]=210;break}else if((e|0)==210)break;else{d=c[b>>2]|0;c[d+20>>2]=21;c[d+24>>2]=e;Bd[c[d>>2]&511](b);break}while(0);d=b+424|0;while(1){e=c[d>>2]|0;if(a[e+17>>0]|0)break;if(!(Ed[c[e>>2]&511](b)|0)){d=0;f=13;break}}if((f|0)==13)return d|0;Bd[c[(c[b+24>>2]|0)+24>>2]&511](b);dF(b);b=1;return b|0}function uF(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=b+20|0;d=c[l>>2]|0;do if((d|0)==203)e=6;else if((d|0)==202){JF(b);if(!(a[b+64>>0]|0)){c[l>>2]=203;e=6;break}c[l>>2]=207;b=1;return b|0}else if((d|0)==204)d=b+408|0;else{e=c[b>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Bd[c[e>>2]&511](b);e=16}while(0);if((e|0)==6){i=b+424|0;a:do if(a[(c[i>>2]|0)+16>>0]|0){g=b+8|0;h=b+296|0;d=c[g>>2]|0;while(1){if(d)Bd[c[d>>2]&511](b);e=Ed[c[c[i>>2]>>2]&511](b)|0;if((e|0)==2)break a;else if(!e){d=0;break}d=c[g>>2]|0;if(!((d|0)!=0&(e&-3|0)==1))continue;e=d+4|0;j=(c[e>>2]|0)+1|0;c[e>>2]=j;e=d+8|0;f=c[e>>2]|0;if((j|0)<(f|0))continue;c[e>>2]=(c[h>>2]|0)+f}return d|0}while(0);c[b+132>>2]=c[b+124>>2];e=16}if((e|0)==16){d=b+408|0;if((c[l>>2]|0)!=204){Bd[c[c[d>>2]>>2]&511](b);c[b+120>>2]=0;c[l>>2]=204}}b:do if(a[(c[d>>2]|0)+8>>0]|0){f=b+120|0;i=b+96|0;h=b+8|0;j=b+412|0;k=c[f>>2]|0;while(1){g=c[i>>2]|0;if(k>>>0>=g>>>0){Bd[c[(c[d>>2]|0)+4>>2]&511](b);Bd[c[c[d>>2]>>2]&511](b);c[f>>2]=0;if(!(a[(c[d>>2]|0)+8>>0]|0))break b;else{k=0;continue}}e=c[h>>2]|0;if(!e)e=k;else{c[e+4>>2]=k;c[e+8>>2]=g;Bd[c[e>>2]&511](b);e=c[f>>2]|0}Yd[c[(c[j>>2]|0)+4>>2]&63](b,0,f,0);k=c[f>>2]|0;if((k|0)==(e|0)){d=0;break}}return d|0}while(0);c[l>>2]=(a[b+65>>0]|0)!=0?206:205;b=1;return b|0}function vF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;e=c[a+20>>2]|0;if((e|0)!=205){g=c[a>>2]|0;c[g+20>>2]=21;c[g+24>>2]=e;Bd[c[g>>2]&511](a)}g=a+120|0;h=c[g>>2]|0;e=c[a+96>>2]|0;if(h>>>0>=e>>>0){j=c[a>>2]|0;c[j+20>>2]=126;Cd[c[j+4>>2]&255](a,-1);j=0;i=k;return j|0}f=c[a+8>>2]|0;if(f){c[f+4>>2]=h;c[f+8>>2]=e;Bd[c[f>>2]&511](a)}c[j>>2]=0;Yd[c[(c[a+412>>2]|0)+4>>2]&63](a,b,j,d);j=c[j>>2]|0;c[g>>2]=(c[g>>2]|0)+j;i=k;return j|0}function wF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[a+20>>2]|0;if((e|0)!=206){g=c[a>>2]|0;c[g+20>>2]=21;c[g+24>>2]=e;Bd[c[g>>2]&511](a)}h=a+120|0;g=c[h>>2]|0;e=c[a+96>>2]|0;if(g>>>0>=e>>>0){d=c[a>>2]|0;c[d+20>>2]=126;Cd[c[d+4>>2]&255](a,-1);d=0;return d|0}f=c[a+8>>2]|0;if(f){c[f+4>>2]=g;c[f+8>>2]=e;Bd[c[f>>2]&511](a)}e=da(c[a+292>>2]|0,c[a+284>>2]|0)|0;if(e>>>0>d>>>0){d=c[a>>2]|0;c[d+20>>2]=24;Bd[c[d>>2]&511](a)}if(!(Pd[c[(c[a+416>>2]|0)+12>>2]&511](a,b)|0)){d=0;return d|0}c[h>>2]=(c[h>>2]|0)+e;d=e;return d|0}function xF(b){b=b|0;var d=0,e=0,f=0;d=b+4|0;f=Hd[c[c[d>>2]>>2]&255](b,1,192)|0;c[b+432>>2]=f;c[f>>2]=245;c[f+8>>2]=246;c[f+60>>2]=0;c[f+124>>2]=0;c[f+64>>2]=0;c[f+128>>2]=0;c[f+68>>2]=0;c[f+132>>2]=0;c[f+72>>2]=0;c[f+136>>2]=0;c[f+76>>2]=0;c[f+140>>2]=0;c[f+80>>2]=0;c[f+144>>2]=0;c[f+84>>2]=0;c[f+148>>2]=0;c[f+88>>2]=0;c[f+152>>2]=0;c[f+92>>2]=0;c[f+156>>2]=0;c[f+96>>2]=0;c[f+160>>2]=0;c[f+100>>2]=0;c[f+164>>2]=0;c[f+104>>2]=0;c[f+168>>2]=0;c[f+108>>2]=0;c[f+172>>2]=0;c[f+112>>2]=0;c[f+176>>2]=0;c[f+116>>2]=0;c[f+180>>2]=0;c[f+120>>2]=0;c[f+184>>2]=0;a[f+188>>0]=113;if(!(a[b+201>>0]|0))return;f=b+36|0;e=Hd[c[c[d>>2]>>2]&255](b,1,c[f>>2]<<8)|0;c[b+140>>2]=e;if((c[f>>2]|0)>0)d=0;else return;do{sfa(e+(d<<8)|0,-1,256)|0;d=d+1|0}while((d|0)<(c[f>>2]|0));return}function yF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=b+4|0;l=Hd[c[c[k>>2]>>2]&255](b,1,116)|0;c[b+416>>2]=l;c[l>>2]=247;c[l+8>>2]=248;c[l+112>>2]=0;if(!(d<<24>>24)){d=Hd[c[(c[k>>2]|0)+4>>2]&255](b,1,1280)|0;c[l+32>>2]=d;c[l+36>>2]=d+128;c[l+40>>2]=d+256;c[l+44>>2]=d+384;c[l+48>>2]=d+512;c[l+52>>2]=d+640;c[l+56>>2]=d+768;c[l+60>>2]=d+896;c[l+64>>2]=d+1024;c[l+68>>2]=d+1152;if(!(c[b+400>>2]|0))sfa(d|0,0,1280)|0;c[l+4>>2]=152;c[l+12>>2]=227;c[l+16>>2]=0;return}h=b+36|0;if((c[h>>2]|0)>0){f=b+201|0;d=l+72|0;i=0;j=c[b+196>>2]|0;while(1){g=j+12|0;e=c[g>>2]|0;if(a[f>>0]|0)e=e*3|0;n=c[(c[k>>2]|0)+20>>2]|0;m=mH(c[j+28>>2]|0,c[j+8>>2]|0)|0;g=mH(c[j+32>>2]|0,c[g>>2]|0)|0;c[d+(i<<2)>>2]=Dd[n&31](b,1,1,m,g,e)|0;i=i+1|0;if((i|0)>=(c[h>>2]|0))break;else j=j+88|0}}else d=l+72|0;c[l+4>>2]=151;c[l+12>>2]=226;c[l+16>>2]=d;return}function zF(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=b+4|0;i=Hd[c[c[k>>2]>>2]&255](b,1,32)|0;g=b+444|0;c[g>>2]=i;c[i>>2]=249;e=b+40|0;switch(c[e>>2]|0){case 7:case 6:case 3:case 2:{if((c[b+36>>2]|0)!=3){j=c[b>>2]|0;c[j+20>>2]=11;Bd[c[j>>2]&511](b)}break}case 1:{if((c[b+36>>2]|0)!=1){j=c[b>>2]|0;c[j+20>>2]=11;Bd[c[j>>2]&511](b)}break}case 5:case 4:{if((c[b+36>>2]|0)!=4){j=c[b>>2]|0;c[j+20>>2]=11;Bd[c[j>>2]&511](b)}break}default:if((c[b+36>>2]|0)<1){j=c[b>>2]|0;c[j+20>>2]=11;Bd[c[j>>2]&511](b)}}f=b+268|0;if((c[f>>2]|0)!=0?(j=c[e>>2]|0,!((j|0)==6|(j|0)==2)):0){j=c[b>>2]|0;c[j+20>>2]=28;Bd[c[j>>2]&511](b)}d=c[b+44>>2]|0;do if((d|0)==6){c[b+100>>2]=3;if((c[e>>2]|0)!=6){j=c[b>>2]|0;c[j+20>>2]=28;Bd[c[j>>2]&511](b);break}d=c[f>>2]|0;if(!d){c[i+4>>2]=21;break}else if((d|0)==1){c[i+4>>2]=22;break}else{j=c[b>>2]|0;c[j+20>>2]=28;Bd[c[j>>2]&511](b);break}}else if((d|0)==4){c[b+100>>2]=4;d=c[e>>2]|0;if((d|0)==5){c[i+4>>2]=23;GQ(b);break}else if((d|0)==4){c[i+4>>2]=24;break}else{j=c[b>>2]|0;c[j+20>>2]=28;Bd[c[j>>2]&511](b);break}}else if((d|0)==1){c[b+100>>2]=1;d=c[e>>2]|0;if((d|0)==2){d=c[f>>2]|0;if((d|0)==1)c[i+4>>2]=18;else if(!d)c[i+4>>2]=17;else{j=c[b>>2]|0;c[j+20>>2]=28;Bd[c[j>>2]&511](b)}e=c[g>>2]|0;d=Hd[c[c[k>>2]>>2]&255](b,1,3072)|0;c[e+28>>2]=d;e=0;do{c[d+(e<<2)>>2]=e*19595;c[d+(e+256<<2)>>2]=e*38470;c[d+(e+512<<2)>>2]=(e*7471|0)+32768;e=e+1|0}while((e|0)!=256)}else if((d|0)==7|(d|0)==3|(d|0)==1){c[i+4>>2]=16;d=c[b+36>>2]|0;if((d|0)<=1)break;e=c[b+196>>2]|0;f=1;do{a[e+(f*88|0)+52>>0]=0;f=f+1|0}while((f|0)<(d|0))}else{j=c[b>>2]|0;c[j+20>>2]=28;Bd[c[j>>2]&511](b);break}}else if((d|0)==2){c[b+100>>2]=3;d=c[e>>2]|0;if((d|0)==2){d=c[f>>2]|0;if(!d){c[i+4>>2]=21;break}else if((d|0)==1){c[i+4>>2]=22;break}else{j=c[b>>2]|0;c[j+20>>2]=28;Bd[c[j>>2]&511](b);break}}else if((d|0)==7){c[i+4>>2]=20;g=c[g>>2]|0;d=g+8|0;c[d>>2]=Hd[c[c[k>>2]>>2]&255](b,1,1024)|0;i=g+12|0;c[i>>2]=Hd[c[c[k>>2]>>2]&255](b,1,1024)|0;e=g+16|0;c[e>>2]=Hd[c[c[k>>2]>>2]&255](b,1,1024)|0;j=g+20|0;c[j>>2]=Hd[c[c[k>>2]>>2]&255](b,1,1024)|0;f=Hd[c[c[k>>2]>>2]&255](b,1,1280)|0;k=g+24|0;c[k>>2]=f;d=c[d>>2]|0;e=c[e>>2]|0;g=0;h=-128;while(1){c[d+(g<<2)>>2]=(h*183763|0)+32768>>16;c[(c[i>>2]|0)+(g<<2)>>2]=(h*232260|0)+32768>>16;c[e+(g<<2)>>2]=da(h,-93603)|0;l=(da(h,-45107)|0)+32768|0;c[(c[j>>2]|0)+(g<<2)>>2]=l;g=g+1|0;if((g|0)==256)break;else h=h+1|0}sfa(f|0,0,512)|0;d=(c[k>>2]|0)+512|0;c[k>>2]=d;a[d>>0]=0;d=1;do{a[(c[k>>2]|0)+d>>0]=d;d=d+1|0}while((d|0)!=256);d=256;do{a[(c[k>>2]|0)+d>>0]=-1;d=d+1|0}while((d|0)!=768)}else if((d|0)==1){c[i+4>>2]=19;break}else if((d|0)==3){c[i+4>>2]=20;GQ(b);break}else{l=c[b>>2]|0;c[l+20>>2]=28;Bd[c[l>>2]&511](b);break}}else if((d|0)==(c[e>>2]|0)){c[b+100>>2]=c[b+36>>2];c[i+4>>2]=24;break}else{l=c[b>>2]|0;c[l+20>>2]=28;Bd[c[l>>2]&511](b);break}while(0);if(a[b+74>>0]|0){j=1;l=b+104|0;c[l>>2]=j;return}j=c[b+100>>2]|0;l=b+104|0;c[l>>2]=j;return}function AF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=a+4|0;b=Hd[c[c[f>>2]>>2]&255](a,1,84)|0;c[a+436>>2]=b;c[b>>2]=250;g=a+36|0;if((c[g>>2]|0)<=0)return;b=b+44|0;d=0;e=c[a+196>>2]|0;while(1){h=Hd[c[c[f>>2]>>2]&255](a,1,256)|0;c[e+84>>2]=h;sfa(h|0,0,256)|0;c[b+(d<<2)>>2]=-1;d=d+1|0;if((d|0)>=(c[g>>2]|0))break;else e=e+88|0}return}function BF(b){b=b|0;var d=0,e=0,f=0,g=0;d=b+4|0;g=Hd[c[c[d>>2]>>2]&255](b,1,220)|0;c[b+432>>2]=g;c[g>>2]=251;c[g+8>>2]=252;if(!(a[b+201>>0]|0)){c[g+84>>2]=0;c[g+68>>2]=0;c[g+88>>2]=0;c[g+72>>2]=0;c[g+92>>2]=0;c[g+76>>2]=0;c[g+96>>2]=0;c[g+80>>2]=0;return}f=b+36|0;e=Hd[c[c[d>>2]>>2]&255](b,1,c[f>>2]<<8)|0;c[b+140>>2]=e;if((c[f>>2]|0)>0){d=0;do{sfa(e+(d<<8)|0,-1,256)|0;d=d+1|0}while((d|0)<(c[f>>2]|0))}g=g+48|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;return}function CF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=a+392|0;d=c[b>>2]|0;e=da(d,c[a+48>>2]|0)|0;g=c[a+52>>2]|0;do if(e>>>0>g>>>0){if(e>>>0<=g<<1>>>0){c[a+92>>2]=lH(c[a+28>>2]<<1,d)|0;c[a+96>>2]=lH(c[a+32>>2]<<1,c[b>>2]|0)|0;c[a+288>>2]=2;c[a+292>>2]=2;e=2;break}if(e>>>0<=(g*3|0)>>>0){c[a+92>>2]=lH((c[a+28>>2]|0)*3|0,d)|0;c[a+96>>2]=lH((c[a+32>>2]|0)*3|0,c[b>>2]|0)|0;c[a+288>>2]=3;c[a+292>>2]=3;e=3;break}if(e>>>0<=g<<2>>>0){c[a+92>>2]=lH(c[a+28>>2]<<2,d)|0;c[a+96>>2]=lH(c[a+32>>2]<<2,c[b>>2]|0)|0;c[a+288>>2]=4;c[a+292>>2]=4;e=4;break}if(e>>>0<=(g*5|0)>>>0){c[a+92>>2]=lH((c[a+28>>2]|0)*5|0,d)|0;c[a+96>>2]=lH((c[a+32>>2]|0)*5|0,c[b>>2]|0)|0;c[a+288>>2]=5;c[a+292>>2]=5;e=5;break}if(e>>>0<=(g*6|0)>>>0){c[a+92>>2]=lH((c[a+28>>2]|0)*6|0,d)|0;c[a+96>>2]=lH((c[a+32>>2]|0)*6|0,c[b>>2]|0)|0;c[a+288>>2]=6;c[a+292>>2]=6;e=6;break}if(e>>>0<=(g*7|0)>>>0){c[a+92>>2]=lH((c[a+28>>2]|0)*7|0,d)|0;c[a+96>>2]=lH((c[a+32>>2]|0)*7|0,c[b>>2]|0)|0;c[a+288>>2]=7;c[a+292>>2]=7;e=7;break}if(e>>>0<=g<<3>>>0){c[a+92>>2]=lH(c[a+28>>2]<<3,d)|0;c[a+96>>2]=lH(c[a+32>>2]<<3,c[b>>2]|0)|0;c[a+288>>2]=8;c[a+292>>2]=8;e=8;break}if(e>>>0<=(g*9|0)>>>0){c[a+92>>2]=lH((c[a+28>>2]|0)*9|0,d)|0;c[a+96>>2]=lH((c[a+32>>2]|0)*9|0,c[b>>2]|0)|0;c[a+288>>2]=9;c[a+292>>2]=9;e=9;break}if(e>>>0<=(g*10|0)>>>0){c[a+92>>2]=lH((c[a+28>>2]|0)*10|0,d)|0;c[a+96>>2]=lH((c[a+32>>2]|0)*10|0,c[b>>2]|0)|0;c[a+288>>2]=10;c[a+292>>2]=10;e=10;break}if(e>>>0<=(g*11|0)>>>0){c[a+92>>2]=lH((c[a+28>>2]|0)*11|0,d)|0;c[a+96>>2]=lH((c[a+32>>2]|0)*11|0,c[b>>2]|0)|0;c[a+288>>2]=11;c[a+292>>2]=11;e=11;break}if(e>>>0<=(g*12|0)>>>0){c[a+92>>2]=lH((c[a+28>>2]|0)*12|0,d)|0;c[a+96>>2]=lH((c[a+32>>2]|0)*12|0,c[b>>2]|0)|0;c[a+288>>2]=12;c[a+292>>2]=12;e=12;break}if(e>>>0<=(g*13|0)>>>0){c[a+92>>2]=lH((c[a+28>>2]|0)*13|0,d)|0;c[a+96>>2]=lH((c[a+32>>2]|0)*13|0,c[b>>2]|0)|0;c[a+288>>2]=13;c[a+292>>2]=13;e=13;break}if(e>>>0<=(g*14|0)>>>0){c[a+92>>2]=lH((c[a+28>>2]|0)*14|0,d)|0;c[a+96>>2]=lH((c[a+32>>2]|0)*14|0,c[b>>2]|0)|0;c[a+288>>2]=14;c[a+292>>2]=14;e=14;break}f=c[a+28>>2]|0;if(e>>>0>(g*15|0)>>>0){c[a+92>>2]=lH(f<<4,d)|0;c[a+96>>2]=lH(c[a+32>>2]<<4,c[b>>2]|0)|0;c[a+288>>2]=16;c[a+292>>2]=16;e=16;break}else{c[a+92>>2]=lH(f*15|0,d)|0;c[a+96>>2]=lH((c[a+32>>2]|0)*15|0,c[b>>2]|0)|0;c[a+288>>2]=15;c[a+292>>2]=15;e=15;break}}else{c[a+92>>2]=lH(c[a+28>>2]|0,d)|0;c[a+96>>2]=lH(c[a+32>>2]|0,c[b>>2]|0)|0;c[a+288>>2]=1;c[a+292>>2]=1;e=1}while(0);d=c[a+36>>2]|0;if((d|0)<=0)return;f=0;b=c[a+196>>2]|0;while(1){c[b+36>>2]=e;c[b+40>>2]=e;f=f+1|0;if((f|0)>=(d|0))break;else b=b+88|0}return}function DF(b){b=b|0;var d=0;d=Hd[c[c[b+4>>2]>>2]&255](b,0,24)|0;c[b+424>>2]=d;c[d>>2]=153;c[d+4>>2]=253;c[d+8>>2]=254;c[d+12>>2]=255;a[d+16>>0]=0;a[d+17>>0]=0;c[d+20>>2]=1;return}function EF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=b+4|0;k=Hd[c[c[m>>2]>>2]&255](b,1,80)|0;f=b+412|0;c[f>>2]=k;c[k>>2]=86;if(d<<24>>24){j=c[b>>2]|0;c[j+20>>2]=3;Bd[c[j>>2]&511](b)}l=b+292|0;e=c[l>>2]|0;if(!(a[(c[b+440>>2]|0)+8>>0]|0)){d=c[b+36>>2]|0;f=e;h=e}else{if((e|0)<2){e=c[b>>2]|0;c[e+20>>2]=48;Bd[c[e>>2]&511](b);e=c[l>>2]|0}j=c[f>>2]|0;h=b+36|0;f=Hd[c[c[m>>2]>>2]&255](b,1,c[h>>2]<<3)|0;i=j+56|0;c[i>>2]=f;d=c[h>>2]|0;j=j+60|0;c[j>>2]=f+(d<<2);if((d|0)>0){e=e+4|0;g=0;f=c[b+196>>2]|0;while(1){d=da(c[f+40>>2]|0,c[f+12>>2]|0)|0;d=(d|0)/(c[l>>2]|0)|0;n=da(d,e)|0;o=Hd[c[c[m>>2]>>2]&255](b,1,n<<3)|0;c[(c[i>>2]|0)+(g<<2)>>2]=o+(d<<2);c[(c[j>>2]|0)+(g<<2)>>2]=o+(n+d<<2);g=g+1|0;d=c[h>>2]|0;if((g|0)>=(d|0))break;else f=f+88|0}}h=c[l>>2]|0;f=h;h=h+2|0}i=b+36|0;if((d|0)<=0)return;g=k+8|0;e=f;d=0;f=c[b+196>>2]|0;while(1){o=(da(c[f+40>>2]|0,c[f+12>>2]|0)|0)/(e|0)|0;n=da(c[f+36>>2]|0,c[f+28>>2]|0)|0;o=da(o,h)|0;c[g+(d<<2)>>2]=Xd[c[(c[m>>2]|0)+8>>2]&255](b,1,n,o)|0;d=d+1|0;if((d|0)>=(c[i>>2]|0))break;e=c[l>>2]|0;f=f+88|0}return}function FF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=a+404|0;m=c[k>>2]|0;n=c[a>>2]|0;c[n+20>>2]=124;c[n+24>>2]=m;c[n+28>>2]=b;Cd[c[n+4>>2]&255](a,-1);n=b+1&7|208;i=b+2&7|208;j=b+7&7|208;h=b+6&7|208;a:while(1){g=(m&-8|0)==208;l=(m|0)==(n|0);e=(m|0)==(i|0);f=(m|0)==(j|0);d=(m|0)==(h|0)?2:1;do if((m|0)<192){b=c[a>>2]|0;c[b+20>>2]=99;d=b+24|0;if(g){c[d>>2]=m;c[b+28>>2]=2;Cd[c[b+4>>2]&255](a,4);break}if(l){c[d>>2]=n;c[b+28>>2]=2;Cd[c[b+4>>2]&255](a,4);break}else{c[d>>2]=m;c[b+28>>2]=2;Cd[c[b+4>>2]&255](a,4);break}}else{if(!g){d=9;break a}while(1){if(l|e)b=3;else b=f?2:d;g=c[a>>2]|0;c[g+20>>2]=99;c[g+24>>2]=m;c[g+28>>2]=b;Cd[c[g+4>>2]&255](a,4);if((b|0)==2)break;else if((b|0)==3){b=1;d=18;break a}else if((b|0)==1){d=14;break a}}}while(0);if(!((TQ(a)|0)<<24>>24)){b=0;d=18;break}m=c[k>>2]|0}if((d|0)==9){b=c[a>>2]|0;c[b+20>>2]=99;d=b+24|0;if(l){c[d>>2]=n;c[b+28>>2]=3;Cd[c[b+4>>2]&255](a,4);a=1;return a|0}else{c[d>>2]=m;c[b+28>>2]=3;Cd[c[b+4>>2]&255](a,4);a=1;return a|0}}else if((d|0)==14){c[k>>2]=0;a=1;return a|0}else if((d|0)==18)return b|0;return 0}function GF(b){b=b|0;var d=0,e=0;e=Hd[c[c[b+4>>2]>>2]&255](b,0,168)|0;d=b+428|0;c[d>>2]=e;c[e>>2]=256;c[e+4>>2]=154;c[e+8>>2]=155;c[e+24>>2]=156;c[e+92>>2]=0;c[e+96>>2]=0;c[e+32>>2]=156;c[e+100>>2]=0;c[e+36>>2]=156;c[e+104>>2]=0;c[e+40>>2]=156;c[e+108>>2]=0;c[e+44>>2]=156;c[e+112>>2]=0;c[e+48>>2]=156;c[e+116>>2]=0;c[e+52>>2]=156;c[e+120>>2]=0;c[e+56>>2]=156;c[e+124>>2]=0;c[e+60>>2]=156;c[e+128>>2]=0;c[e+64>>2]=156;c[e+132>>2]=0;c[e+68>>2]=156;c[e+136>>2]=0;c[e+72>>2]=156;c[e+140>>2]=0;c[e+76>>2]=156;c[e+144>>2]=0;c[e+80>>2]=156;c[e+148>>2]=0;c[e+152>>2]=0;c[e+88>>2]=156;c[e+156>>2]=0;c[e+28>>2]=157;c[e+84>>2]=157;d=c[d>>2]|0;c[b+196>>2]=0;c[b+124>>2]=0;c[b+404>>2]=0;a[d+12>>0]=0;a[d+13>>0]=0;c[d+20>>2]=0;c[d+160>>2]=0;return}function HF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=c[a+428>>2]|0;f=(c[(c[a+4>>2]|0)+48>>2]|0)+-20|0;d=(f|0)<(d|0)?f:d;f=(b|0)==224;if(d)if(f&d>>>0<14){e=14;d=158}else{e=(b|0)==238&d>>>0<12?12:d;d=158}else{e=0;d=f|(b|0)==238?157:156}if((b|0)==254){c[g+24>>2]=d;c[g+92>>2]=e;return}if((b&-16|0)==224){b=b+-224|0;c[g+28+(b<<2)>>2]=d;c[g+96+(b<<2)>>2]=e;return}else{f=c[a>>2]|0;c[f+20>>2]=70;c[f+24>>2]=b;Bd[c[f>>2]&511](a);return}}function IF(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;d=c[b+20>>2]|0;if((d|0)!=202){v=c[b>>2]|0;c[v+20>>2]=21;c[v+24>>2]=d;Bd[c[v>>2]&511](b)}CF(b);e=c[b+196>>2]|0;v=b+36|0;d=c[v>>2]|0;q=(d|0)>0;if(q){m=b+280|0;r=c[b+288>>2]|0;n=a[b+72>>0]|0;s=n<<24>>24!=0?8:4;t=b+284|0;u=c[b+292>>2]|0;if((r|0)>(s|0)){j=0;l=e;while(1){h=l+36|0;c[h>>2]=r;a:do if((u|0)>(s|0))k=1;else{f=c[t>>2]|0;g=c[l+12>>2]|0;i=1;while(1){k=i<<1;if((f|0)%(da(k,g)|0)|0){k=i;break a}if((da(u,k)|0)>(s|0))break;else i=k}}while(0);g=da(u,k)|0;f=l+40|0;c[f>>2]=g;k=g<<1;if((r|0)<=(k|0)){k=r<<1;if((g|0)>(k|0))c[f>>2]=k}else c[h>>2]=k;j=j+1|0;if((j|0)>=(d|0))break;else l=l+88|0}}else{o=0;p=e;while(1){g=c[m>>2]|0;f=c[p+8>>2]|0;i=1;while(1){k=i<<1;if((g|0)%(da(k,f)|0)|0){k=i;break}if((da(r,k)|0)>(s|0))break;else i=k}l=da(r,k)|0;j=p+36|0;c[j>>2]=l;g=n<<24>>24!=0?8:4;b:do if((u|0)>(g|0))k=1;else{f=c[t>>2]|0;i=c[p+12>>2]|0;h=1;while(1){k=h<<1;if((f|0)%(da(k,i)|0)|0){k=h;break b}if((da(u,k)|0)>(g|0))break;else h=k}}while(0);g=da(u,k)|0;f=p+40|0;c[f>>2]=g;k=g<<1;if((l|0)<=(k|0)){k=l<<1;if((g|0)>(k|0))c[f>>2]=k}else c[j>>2]=k;o=o+1|0;if((o|0)>=(d|0))break;else p=p+88|0}}if(q){f=b+28|0;g=b+280|0;h=b+392|0;i=b+32|0;j=b+284|0;k=0;while(1){d=da(da(c[e+8>>2]|0,c[f>>2]|0)|0,c[e+36>>2]|0)|0;c[e+44>>2]=lH(d,da(c[h>>2]|0,c[g>>2]|0)|0)|0;d=da(da(c[e+12>>2]|0,c[i>>2]|0)|0,c[e+40>>2]|0)|0;c[e+48>>2]=lH(d,da(c[h>>2]|0,c[j>>2]|0)|0)|0;k=k+1|0;d=c[v>>2]|0;if((k|0)>=(d|0))break;else e=e+88|0}}}switch(c[b+44>>2]|0){case 1:{c[b+100>>2]=1;d=1;break}case 6:case 2:{c[b+100>>2]=3;d=3;break}case 5:case 4:{c[b+100>>2]=4;d=4;break}case 7:case 3:{c[b+100>>2]=3;d=3;break}default:c[b+100>>2]=d}c[b+104>>2]=(a[b+74>>0]|0)==0?d:1;if(!((_Q(b)|0)<<24>>24)){v=1;b=b+108|0;c[b>>2]=v;return}v=c[b+284>>2]|0;b=b+108|0;c[b>>2]=v;return}function JF(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=b+4|0;i=Hd[c[c[k>>2]>>2]&255](b,1,28)|0;c[b+408>>2]=i;c[i>>2]=257;c[i+4>>2]=258;a[i+8>>0]=0;d=c[b+192>>2]|0;if((d|0)!=8){j=c[b>>2]|0;c[j+20>>2]=16;c[j+24>>2]=d;Bd[c[j>>2]&511](b)}IF(b);d=Hd[c[c[k>>2]>>2]&255](b,1,1408)|0;f=b+300|0;c[f>>2]=d+256;sfa(d|0,0,256)|0;e=0;do{a[d+(e+256)>>0]=e;e=e+1|0}while((e|0)!=256);sfa(d+512|0,-1,384)|0;sfa(d+896|0,0,384)|0;g=d+1280|0;d=(c[f>>2]|0)+0|0;e=g+128|0;do{a[g>>0]=a[d>>0]|0;g=g+1|0;d=d+1|0}while((g|0)<(e|0));if(((c[b+96>>2]|0)!=0?(c[b+92>>2]|0)!=0:0)?(h=b+100|0,(c[h>>2]|0)>=1):0)g=h;else{g=c[b>>2]|0;c[g+20>>2]=33;Bd[c[g>>2]&511](b);g=b+100|0}j=i+12|0;c[j>>2]=0;h=i+16|0;a[h>>0]=_Q(b)|0;f=i+20|0;c[f>>2]=0;d=i+24|0;c[d>>2]=0;do if(!(a[b+74>>0]|0)){a[b+88>>0]=0;a[b+89>>0]=0;a[b+90>>0]=0;e=b+65|0}else{if(!(a[b+64>>0]|0)){a[b+88>>0]=0;a[b+89>>0]=0;a[b+90>>0]=0}e=b+65|0;if(a[e>>0]|0){i=c[b>>2]|0;c[i+20>>2]=48;Bd[c[i>>2]&511](b)}do if((c[g>>2]|0)==3){if(c[b+116>>2]|0){a[b+89>>0]=1;break}if(!(a[b+80>>0]|0)){a[b+88>>0]=1;break}else{a[b+90>>0]=1;break}}else{a[b+88>>0]=1;a[b+89>>0]=0;a[b+90>>0]=0;c[b+116>>2]=0}while(0);if(a[b+88>>0]|0){jH(b);c[f>>2]=c[b+448>>2]}if((a[b+90>>0]|0)==0?(a[b+89>>0]|0)==0:0)break;kH(b);c[d>>2]=c[b+448>>2]}while(0);if(!(a[e>>0]|0)){if(!(a[h>>0]|0)){zF(b);MF(b)}else KF(b);LF(b,a[b+90>>0]|0)}AF(b);if(!(a[b+202>>0]|0))BF(b);else xF(b);f=b+424|0;if(!(a[(c[f>>2]|0)+16>>0]|0))d=(a[b+64>>0]|0)!=0&1;else d=1;yF(b,d);if(!(a[e>>0]|0))EF(b,0);Bd[c[(c[k>>2]|0)+24>>2]&511](b);Bd[c[(c[f>>2]|0)+8>>2]&511](b);e=c[b+8>>2]|0;if(!e)return;if(a[b+64>>0]|0)return;if(!(a[(c[f>>2]|0)+16>>0]|0))return;d=c[b+36>>2]|0;if(a[b+201>>0]|0)d=(d*3|0)+2|0;c[e+4>>2]=0;c[e+8>>2]=da(c[b+296>>2]|0,d)|0;c[e+12>>2]=0;c[e+16>>2]=(a[b+90>>0]|0)!=0?3:2;c[j>>2]=(c[j>>2]|0)+1;return}function KF(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=b+4|0;d=Hd[c[c[i>>2]>>2]&255](b,1,48)|0;g=b+440|0;c[g>>2]=d;c[d>>2]=259;a[d+8>>0]=0;e=da(c[b+100>>2]|0,c[b+92>>2]|0)|0;c[d+40>>2]=e;f=d+4|0;if((c[b+284>>2]|0)==2){c[f>>2]=41;c[d+12>>2]=35;c[d+32>>2]=Hd[c[(c[i>>2]|0)+4>>2]&255](b,1,e)|0;d=c[g>>2]|0}else{c[f>>2]=42;c[d+12>>2]=36;c[d+32>>2]=0}j=d+16|0;c[j>>2]=Hd[c[c[i>>2]>>2]&255](b,1,1024)|0;e=d+20|0;c[e>>2]=Hd[c[c[i>>2]>>2]&255](b,1,1024)|0;g=d+24|0;c[g>>2]=Hd[c[c[i>>2]>>2]&255](b,1,1024)|0;h=d+28|0;c[h>>2]=Hd[c[c[i>>2]>>2]&255](b,1,1024)|0;d=c[e>>2]|0;g=c[g>>2]|0;e=0;f=-128;while(1){c[(c[j>>2]|0)+(e<<2)>>2]=(f*91881|0)+32768>>16;c[d+(e<<2)>>2]=(f*116130|0)+32768>>16;c[g+(e<<2)>>2]=da(f,-46802)|0;i=(da(f,-22553)|0)+32768|0;c[(c[h>>2]|0)+(e<<2)>>2]=i;e=e+1|0;if((e|0)==256)break;else f=f+1|0}return}function LF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;f=b+4|0;e=Hd[c[c[f>>2]>>2]&255](b,1,28)|0;c[b+420>>2]=e;c[e>>2]=87;j=e+8|0;c[j>>2]=0;k=e+12|0;c[k>>2]=0;if(!(a[b+74>>0]|0))return;i=c[b+284>>2]|0;h=e+16|0;c[h>>2]=i;e=c[f>>2]|0;f=c[b+92>>2]|0;g=c[b+100>>2]|0;if(!(d<<24>>24)){j=da(g,f)|0;c[k>>2]=Xd[c[e+8>>2]&255](b,1,j,i)|0;return}else{e=c[e+16>>2]|0;d=da(g,f)|0;k=mH(c[b+96>>2]|0,i)|0;c[j>>2]=Dd[e&31](b,1,0,d,k,c[h>>2]|0)|0;return}}function MF(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;d=b+4|0;n=Hd[c[c[d>>2]>>2]&255](b,1,160)|0;c[b+440>>2]=n;c[n>>2]=260;c[n+4>>2]=43;a[n+8>>0]=0;if(a[b+272>>0]|0){v=c[b>>2]|0;c[v+20>>2]=26;Bd[c[v>>2]&511](b)}e=b+36|0;if((c[e>>2]|0)<=0)return;f=b+288|0;g=b+292|0;h=b+280|0;i=b+284|0;j=n+100|0;k=n+52|0;l=b+92|0;m=n+12|0;u=0;v=c[b+196>>2]|0;while(1){o=da(c[v+36>>2]|0,c[v+8>>2]|0)|0;o=(o|0)/(c[f>>2]|0)|0;p=da(c[v+40>>2]|0,c[v+12>>2]|0)|0;p=(p|0)/(c[g>>2]|0)|0;q=c[h>>2]|0;r=c[i>>2]|0;c[j+(u<<2)>>2]=p;do if(!(a[v+52>>0]|0))c[k+(u<<2)>>2]=37;else{s=(p|0)==(r|0);if((o|0)==(q|0)&s){c[k+(u<<2)>>2]=38;break}t=(o<<1|0)==(q|0);do if(t&s)c[k+(u<<2)>>2]=39;else{if(t&(p<<1|0)==(r|0)){c[k+(u<<2)>>2]=40;break}if(((q|0)%(o|0)|0|0)==0?((r|0)%(p|0)|0|0)==0:0){c[k+(u<<2)>>2]=41;a[n+(u+140)>>0]=(q|0)/(o|0)|0;a[n+(u+150)>>0]=(r|0)/(p|0)|0;break}t=c[b>>2]|0;c[t+20>>2]=39;Bd[c[t>>2]&511](b)}while(0);s=c[(c[d>>2]|0)+8>>2]|0;t=mH(c[l>>2]|0,c[h>>2]|0)|0;c[m+(u<<2)>>2]=Xd[s&255](b,1,t,c[i>>2]|0)|0}while(0);u=u+1|0;if((u|0)>=(c[e>>2]|0))break;else v=v+88|0}return}function NF(a){a=a|0;c[a>>2]=261;c[a+4>>2]=88;c[a+8>>2]=262;c[a+12>>2]=89;c[a+16>>2]=263;c[a+104>>2]=0;c[a+108>>2]=0;c[a+20>>2]=0;c[a+112>>2]=275848;c[a+116>>2]=126;c[a+120>>2]=0;c[a+124>>2]=0;c[a+128>>2]=0;return a|0}function OF(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0;f=e+7|0;h=e+1|0;i=e+6|0;j=e+2|0;k=e+5|0;l=e+3|0;m=e+4|0;n=0;o=a;while(1){x=c[b+(n<<2)>>2]|0;y=d[x+e>>0]|0;w=d[x+f>>0]|0;q=+(w+y|0);w=y-w|0;t=+(w|0);y=d[x+h>>0]|0;u=d[x+i>>0]|0;p=+(u+y|0);u=y-u|0;y=d[x+j>>0]|0;v=d[x+k>>0]|0;r=+(v+y|0);v=y-v|0;y=d[x+l>>0]|0;x=d[x+m>>0]|0;s=+(x+y|0);z=q+s;s=q-s;q=p+r;g[o>>2]=q+z+-1024.0;g[o+16>>2]=z-q;r=(p-r+s)*.7071067690849304;g[o+8>>2]=s+r;g[o+24>>2]=s-r;r=+(v+y-x|0);s=+(u+w|0);p=(r-s)*.3826834261417389;r=r*.5411961078643799+p;p=s*1.3065630197525024+p;s=+(v+u|0)*.7071067690849304;q=t+s;s=t-s;g[o+20>>2]=s+r;g[o+12>>2]=s-r;g[o+4>>2]=q+p;g[o+28>>2]=q-p;n=n+1|0;if((n|0)==8){f=7;break}else o=o+32|0}while(1){p=+g[a>>2];y=a+224|0;s=+g[y>>2];C=p+s;s=p-s;x=a+32|0;p=+g[x>>2];u=a+192|0;r=+g[u>>2];B=p+r;r=p-r;e=a+64|0;p=+g[e>>2];v=a+160|0;t=+g[v>>2];z=p+t;t=p-t;w=a+96|0;p=+g[w>>2];b=a+128|0;q=+g[b>>2];A=p+q;D=C+A;A=C-A;C=B+z;g[a>>2]=C+D;g[b>>2]=D-C;z=(B-z+A)*.7071067690849304;g[e>>2]=A+z;g[u>>2]=A-z;q=t+(p-q);p=s+r;z=(q-p)*.3826834261417389;q=q*.5411961078643799+z;z=p*1.3065630197525024+z;t=(r+t)*.7071067690849304;r=s+t;t=s-t;g[v>>2]=t+q;g[w>>2]=t-q;g[x>>2]=r+z;g[y>>2]=r-z;if((f|0)>0){f=f+-1|0;a=a+4|0}else break}return}function PF(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;f=e+7|0;g=e+1|0;h=e+6|0;i=e+2|0;j=e+5|0;k=e+3|0;l=e+4|0;m=0;n=a;while(1){q=c[b+(m<<2)>>2]|0;o=d[q+e>>0]|0;s=d[q+f>>0]|0;w=s+o|0;s=o-s|0;o=d[q+g>>0]|0;r=d[q+h>>0]|0;v=r+o|0;r=o-r|0;o=d[q+i>>0]|0;p=d[q+j>>0]|0;t=p+o|0;p=o-p|0;o=d[q+k>>0]|0;q=d[q+l>>0]|0;u=q+o|0;x=u+w|0;u=w-u|0;w=t+v|0;c[n>>2]=w+-1024+x;c[n+16>>2]=x-w;t=(v-t+u|0)*181>>8;c[n+8>>2]=t+u;c[n+24>>2]=u-t;q=o-q+p|0;o=r+s|0;t=(q-o|0)*98>>8;q=t+(q*139>>8)|0;o=t+(o*334>>8)|0;r=(p+r|0)*181>>8;p=r+s|0;r=s-r|0;c[n+20>>2]=q+r;c[n+12>>2]=r-q;c[n+4>>2]=o+p;c[n+28>>2]=p-o;m=m+1|0;if((m|0)==8){f=7;break}else n=n+32|0}while(1){u=c[a>>2]|0;x=a+224|0;p=c[x>>2]|0;j=p+u|0;p=u-p|0;u=a+32|0;n=c[u>>2]|0;o=a+192|0;r=c[o>>2]|0;k=r+n|0;r=n-r|0;n=a+64|0;t=c[n>>2]|0;q=a+160|0;v=c[q>>2]|0;e=v+t|0;v=t-v|0;t=a+96|0;w=c[t>>2]|0;i=a+128|0;s=c[i>>2]|0;b=s+w|0;m=b+j|0;b=j-b|0;j=e+k|0;c[a>>2]=m+j;c[i>>2]=m-j;e=(k-e+b|0)*181>>8;c[n>>2]=e+b;c[o>>2]=b-e;s=w-s+v|0;w=r+p|0;o=(s-w|0)*98>>8;s=o+(s*139>>8)|0;w=o+(w*334>>8)|0;r=(v+r|0)*181>>8;v=r+p|0;r=p-r|0;c[q>>2]=s+r;c[t>>2]=r-s;c[u>>2]=w+v;c[x>>2]=v-w;if((f|0)>0){f=f+-1|0;a=a+4|0}else break}return}function QF(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;f=e+7|0;g=e+1|0;h=e+6|0;i=e+2|0;j=e+5|0;k=e+3|0;l=e+4|0;m=0;n=a;while(1){p=c[b+(m<<2)>>2]|0;z=d[p+e>>0]|0;v=d[p+f>>0]|0;o=v+z|0;y=d[p+g>>0]|0;u=d[p+h>>0]|0;A=u+y|0;x=d[p+i>>0]|0;s=d[p+j>>0]|0;r=s+x|0;w=d[p+k>>0]|0;p=d[p+l>>0]|0;q=p+w|0;t=q+o|0;q=o-q|0;o=r+A|0;r=A-r|0;v=z-v|0;u=y-u|0;s=x-s|0;p=w-p|0;c[n>>2]=(t+o<<2)+-4096;c[n+16>>2]=t-o<<2;o=((q+r|0)*4433|0)+1024|0;c[n+8>>2]=o+(q*6270|0)>>11;c[n+24>>2]=o+(da(r,-15137)|0)>>11;r=s+v|0;o=p+u|0;q=((o+r|0)*9633|0)+1024|0;r=q+(da(r,-3196)|0)|0;o=q+(da(o,-16069)|0)|0;q=da(p+v|0,-7373)|0;t=da(s+u|0,-20995)|0;c[n+4>>2]=q+(v*12299|0)+r>>11;c[n+12>>2]=t+(u*25172|0)+o>>11;c[n+20>>2]=t+(s*16819|0)+r>>11;c[n+28>>2]=q+(p*2446|0)+o>>11;m=m+1|0;if((m|0)==8){f=7;break}else n=n+32|0}while(1){j=c[a>>2]|0;A=a+224|0;p=c[A>>2]|0;e=p+j|0;q=a+32|0;i=c[q>>2]|0;v=a+192|0;r=c[v>>2]|0;m=r+i|0;t=a+64|0;k=c[t>>2]|0;w=a+160|0;u=c[w>>2]|0;z=u+k|0;s=a+96|0;n=c[s>>2]|0;x=a+128|0;y=c[x>>2]|0;o=y+n|0;b=e+2+o|0;o=e-o|0;e=z+m|0;z=m-z|0;p=j-p|0;r=i-r|0;u=k-u|0;y=n-y|0;c[a>>2]=b+e>>2;c[x>>2]=b-e>>2;x=((o+z|0)*4433|0)+16384|0;c[t>>2]=x+(o*6270|0)>>15;c[v>>2]=x+(da(z,-15137)|0)>>15;v=u+p|0;z=y+r|0;x=((z+v|0)*9633|0)+16384|0;v=x+(da(v,-3196)|0)|0;z=x+(da(z,-16069)|0)|0;x=da(y+p|0,-7373)|0;t=da(u+r|0,-20995)|0;c[q>>2]=x+(p*12299|0)+v>>15;c[s>>2]=t+(r*25172|0)+z>>15;c[w>>2]=t+(u*16819|0)+v>>15;c[A>>2]=x+(y*2446|0)+z>>15;if((f|0)>0){f=f+-1|0;a=a+4|0}else break}return}function RF(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;sfa(a|0,0,256)|0;f=e+6|0;g=e+1|0;h=e+5|0;i=e+2|0;j=e+4|0;k=e+3|0;l=0;m=a;while(1){t=c[b+(l<<2)>>2]|0;w=d[t+e>>0]|0;o=d[t+f>>0]|0;s=o+w|0;r=d[t+g>>0]|0;n=d[t+h>>0]|0;u=n+r|0;q=d[t+i>>0]|0;p=d[t+j>>0]|0;v=p+q|0;t=d[t+k>>0]|0;o=w-o|0;n=r-n|0;p=q-p|0;q=v+s|0;c[m>>2]=(t+u+q<<2)+-3584;q=((da(t,-4)|0)+q|0)*2896|0;r=(s-v|0)*7542|0;v=(u-v|0)*2578|0;c[m+8>>2]=r+1024+v+q>>11;s=((s-u|0)*7223|0)+1024|0;c[m+16>>2]=s+v+(da(u-(t<<1)|0,-5793)|0)>>11;c[m+24>>2]=s-r+q>>11;q=(n+o|0)*7663|0;r=(o-n|0)*1395|0;n=da(p+n|0,-11295)|0;o=(p+o|0)*5027|0;c[m+4>>2]=1024-r+q+o>>11;c[m+12>>2]=r+1024+q+n>>11;c[m+20>>2]=(p*15326|0)+1024+o+n>>11;l=l+1|0;if((l|0)==7){f=0;break}else m=m+32|0}while(1){m=c[a>>2]|0;r=a+192|0;u=c[r>>2]|0;n=u+m|0;p=a+32|0;o=c[p>>2]|0;w=a+160|0;v=c[w>>2]|0;k=v+o|0;j=a+64|0;q=c[j>>2]|0;e=a+128|0;t=c[e>>2]|0;i=t+q|0;s=a+96|0;b=c[s>>2]|0;u=m-u|0;v=o-v|0;t=q-t|0;q=i+n|0;c[a>>2]=((b+k+q|0)*10700|0)+16384>>15;q=((da(b,-4)|0)+q|0)*3783|0;o=(n-i|0)*9850|0;i=(k-i|0)*3367|0;c[j>>2]=o+16384+i+q>>15;n=((n-k|0)*9434|0)+16384|0;c[e>>2]=n+i+(da(k-(b<<1)|0,-7566)|0)>>15;c[r>>2]=n-o+q>>15;r=(v+u|0)*10009|0;q=(u-v|0)*1822|0;v=da(t+v|0,-14752)|0;u=(t+u|0)*6565|0;c[p>>2]=16384-q+r+u>>15;c[s>>2]=q+16384+r+v>>15;c[w>>2]=(t*20017|0)+16384+u+v>>15;f=f+1|0;if((f|0)==7)break;else a=a+4|0}return}function SF(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;sfa(a|0,0,256)|0;f=e+5|0;g=e+1|0;h=e+4|0;i=e+2|0;j=e+3|0;k=0;l=a;while(1){n=c[b+(k<<2)>>2]|0;v=d[n+e>>0]|0;p=d[n+f>>0]|0;s=p+v|0;u=d[n+g>>0]|0;m=d[n+h>>0]|0;q=m+u|0;t=d[n+i>>0]|0;n=d[n+j>>0]|0;r=n+t|0;o=r+s|0;p=v-p|0;m=u-m|0;n=t-n|0;c[l>>2]=(o+q<<2)+-3072;c[l+8>>2]=((s-r|0)*10033|0)+1024>>11;c[l+16>>2]=(((da(q,-2)|0)+o|0)*5793|0)+1024>>11;o=((n+p|0)*2998|0)+1024>>11;c[l+4>>2]=o+(m+p<<2);c[l+12>>2]=p-m-n<<2;c[l+20>>2]=o+(n-m<<2);k=k+1|0;if((k|0)==6){f=0;break}else l=l+32|0}while(1){b=c[a>>2]|0;v=a+160|0;q=c[v>>2]|0;k=q+b|0;p=a+32|0;j=c[p>>2]|0;u=a+128|0;t=c[u>>2]|0;n=t+j|0;m=a+64|0;i=c[m>>2]|0;r=a+96|0;s=c[r>>2]|0;e=s+i|0;o=e+k|0;q=b-q|0;t=j-t|0;s=i-s|0;c[a>>2]=((o+n|0)*14564|0)+16384>>15;c[m>>2]=((k-e|0)*17837|0)+16384>>15;c[u>>2]=(((da(n,-2)|0)+o|0)*10298|0)+16384>>15;u=(s+q|0)*5331|0;c[p>>2]=((t+q|0)*14564|0)+16384+u>>15;c[r>>2]=((q-t-s|0)*14564|0)+16384>>15;c[v>>2]=((s-t|0)*14564|0)+16384+u>>15;f=f+1|0;if((f|0)==6)break;else a=a+4|0}return}function TF(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;sfa(a|0,0,256)|0;f=e+4|0;g=e+1|0;h=e+3|0;i=e+2|0;j=0;k=a;while(1){l=c[b+(j<<2)>>2]|0;s=d[l+e>>0]|0;n=d[l+f>>0]|0;p=n+s|0;r=d[l+g>>0]|0;m=d[l+h>>0]|0;o=m+r|0;l=d[l+i>>0]|0;q=o+p|0;n=s-n|0;m=r-m|0;c[k>>2]=(q+l<<3)+-5120;l=(q-(l<<2)|0)*2896|0;o=((p-o|0)*6476|0)+512|0;c[k+8>>2]=o+l>>10;c[k+16>>2]=o-l>>10;l=(m+n|0)*6810|0;c[k+4>>2]=(n*4209|0)+512+l>>10;c[k+12>>2]=(da(m,-17828)|0)+512+l>>10;j=j+1|0;if((j|0)==5){f=0;break}else k=k+32|0}while(1){e=c[a>>2]|0;r=a+128|0;o=c[r>>2]|0;k=o+e|0;p=a+32|0;j=c[p>>2]|0;s=a+96|0;q=c[s>>2]|0;m=q+j|0;l=a+64|0;n=c[l>>2]|0;i=m+k|0;o=e-o|0;q=j-q|0;c[a>>2]=((i+n|0)*10486|0)+16384>>15;n=(i-(n<<2)|0)*3707|0;m=((k-m|0)*8290|0)+16384|0;c[l>>2]=m+n>>15;c[r>>2]=m-n>>15;r=(q+o|0)*8716|0;c[p>>2]=(o*5387|0)+16384+r>>15;c[s>>2]=(da(q,-22820)|0)+16384+r>>15;f=f+1|0;if((f|0)==5)break;else a=a+4|0}return}function UF(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;sfa(a|0,0,256)|0;f=e+3|0;g=e+1|0;h=e+2|0;i=0;j=a;while(1){k=c[b+(i<<2)>>2]|0;p=d[k+e>>0]|0;m=d[k+f>>0]|0;n=m+p|0;o=d[k+g>>0]|0;k=d[k+h>>0]|0;l=k+o|0;m=p-m|0;k=o-k|0;c[j>>2]=(l+n<<4)+-8192;c[j+8>>2]=n-l<<4;l=((k+m|0)*4433|0)+256|0;c[j+4>>2]=l+(m*6270|0)>>9;c[j+12>>2]=l+(da(k,-15137)|0)>>9;i=i+1|0;if((i|0)==4)break;else j=j+32|0}b=c[a>>2]|0;p=a+96|0;o=c[p>>2]|0;g=b+2+o|0;h=a+32|0;k=c[h>>2]|0;n=a+64|0;m=c[n>>2]|0;j=m+k|0;o=b-o|0;m=k-m|0;c[a>>2]=j+g>>2;c[n>>2]=g-j>>2;n=((m+o|0)*4433|0)+16384|0;c[h>>2]=n+(o*6270|0)>>15;c[p>>2]=n+(da(m,-15137)|0)>>15;p=a+4|0;m=c[p>>2]|0;n=a+100|0;h=c[n>>2]|0;o=m+2+h|0;j=a+36|0;g=c[j>>2]|0;k=a+68|0;b=c[k>>2]|0;l=b+g|0;h=m-h|0;b=g-b|0;c[p>>2]=l+o>>2;c[k>>2]=o-l>>2;k=((b+h|0)*4433|0)+16384|0;c[j>>2]=k+(h*6270|0)>>15;c[n>>2]=k+(da(b,-15137)|0)>>15;n=a+8|0;b=c[n>>2]|0;k=a+104|0;j=c[k>>2]|0;h=b+2+j|0;l=a+40|0;o=c[l>>2]|0;p=a+72|0;g=c[p>>2]|0;m=g+o|0;j=b-j|0;g=o-g|0;c[n>>2]=m+h>>2;c[p>>2]=h-m>>2;p=((g+j|0)*4433|0)+16384|0;c[l>>2]=p+(j*6270|0)>>15;c[k>>2]=p+(da(g,-15137)|0)>>15;k=a+12|0;g=c[k>>2]|0;p=a+108|0;l=c[p>>2]|0;j=g+2+l|0;m=a+44|0;h=c[m>>2]|0;n=a+76|0;o=c[n>>2]|0;b=o+h|0;l=g-l|0;o=h-o|0;c[k>>2]=b+j>>2;c[n>>2]=j-b>>2;n=((o+l|0)*4433|0)+16384|0;c[m>>2]=n+(l*6270|0)>>15;c[p>>2]=n+(da(o,-15137)|0)>>15;return}function VF(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;sfa(a|0,0,256)|0;h=e+2|0;o=e+1|0;p=c[b>>2]|0;j=d[p+e>>0]|0;f=d[p+h>>0]|0;k=f+j|0;p=d[p+o>>0]|0;l=(k+p<<4)+-6144|0;c[a>>2]=l;c[a+8>>2]=(((da(p,-2)|0)+k|0)*5793|0)+256>>9;f=((j-f|0)*10033|0)+256>>9;j=a+4|0;c[j>>2]=f;k=a+32|0;p=c[b+4>>2]|0;m=d[p+e>>0]|0;i=d[p+h>>0]|0;g=i+m|0;p=d[p+o>>0]|0;n=(g+p<<4)+-6144|0;c[k>>2]=n;g=(((da(p,-2)|0)+g|0)*5793|0)+256>>9;c[a+40>>2]=g;i=((m-i|0)*10033|0)+256>>9;c[a+36>>2]=i;b=c[b+8>>2]|0;m=d[b+e>>0]|0;h=d[b+h>>0]|0;e=h+m|0;o=d[b+o>>0]|0;b=(e+o<<4)+-6144|0;e=(((da(o,-2)|0)+e|0)*5793|0)+256>>9;h=((m-h|0)*10033|0)+256>>9;m=b+l|0;c[a>>2]=((m+n|0)*14564|0)+16384>>15;c[a+64>>2]=(((da(n,-2)|0)+m|0)*10298|0)+16384>>15;c[k>>2]=((l-b|0)*17837|0)+16384>>15;b=h+f|0;c[j>>2]=((b+i|0)*14564|0)+16384>>15;c[a+68>>2]=(((da(i,-2)|0)+b|0)*10298|0)+16384>>15;c[a+36>>2]=((f-h|0)*17837|0)+16384>>15;h=a+8|0;b=c[h>>2]|0;f=e+b|0;c[h>>2]=((f+g|0)*14564|0)+16384>>15;c[a+72>>2]=(((da(g,-2)|0)+f|0)*10298|0)+16384>>15;c[a+40>>2]=((b-e|0)*17837|0)+16384>>15;return}function WF(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0;sfa(a|0,0,256)|0;f=c[b>>2]|0;h=d[f+e>>0]|0;i=e+1|0;f=d[f+i>>0]|0;g=f+h|0;f=h-f|0;b=c[b+4>>2]|0;h=d[b+e>>0]|0;e=d[b+i>>0]|0;b=e+h|0;e=h-e|0;c[a>>2]=(b+g<<4)+-8192;c[a+32>>2]=g-b<<4;c[a+4>>2]=e+f<<4;c[a+36>>2]=f-e<<4;return}function XF(a,b,e){a=a|0;b=b|0;e=e|0;sfa(a|0,0,256)|0;c[a>>2]=((d[(c[b>>2]|0)+e>>0]|0)<<6)+-8192;return}function YF(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;r=i;i=i+32|0;f=r;g=e+8|0;h=e+1|0;j=e+7|0;k=e+2|0;l=e+6|0;m=e+3|0;n=e+5|0;o=e+4|0;p=0;q=a;while(1){A=c[b+(p<<2)>>2]|0;E=d[A+e>>0]|0;t=d[A+g>>0]|0;y=t+E|0;v=d[A+h>>0]|0;u=d[A+j>>0]|0;x=u+v|0;D=d[A+k>>0]|0;w=d[A+l>>0]|0;B=w+D|0;C=d[A+m>>0]|0;s=d[A+n>>0]|0;z=s+C|0;A=d[A+o>>0]|0;t=E-t|0;w=D-w|0;s=C-s|0;C=B+y+z|0;D=A+x|0;c[q>>2]=(C+D<<1)+-2304;c[q+24>>2]=(((da(D,-2)|0)+C|0)*5793|0)+2048>>12;x=((da(A,-2)|0)+x|0)*5793|0;A=((y-B|0)*10887|0)+2048|0;c[q+8>>2]=A+((B-z|0)*8875|0)+x>>12;c[q+16>>2]=A+((z-y|0)*2012|0)-x>>12;c[q+12>>2]=((t-w-s|0)*10033|0)+2048>>12;u=(v-u|0)*10033|0;v=(w+t|0)*7447|0;t=(s+t|0)*3962|0;c[q+4>>2]=u+2048+v+t>>12;s=(w-s|0)*11409|0;u=2048-u|0;c[q+20>>2]=u+v-s>>12;c[q+28>>2]=u+t+s>>12;if((p|0)==7){p=8;q=f;continue}else if((p|0)==8){g=7;break}p=p+1|0;q=q+32|0}while(1){k=c[a>>2]|0;B=c[f>>2]|0;s=B+k|0;w=a+32|0;y=c[w>>2]|0;D=a+224|0;A=c[D>>2]|0;t=A+y|0;q=a+64|0;j=c[q>>2]|0;o=a+192|0;x=c[o>>2]|0;p=x+j|0;v=a+96|0;l=c[v>>2]|0;z=a+160|0;C=c[z>>2]|0;e=C+l|0;u=a+128|0;b=c[u>>2]|0;B=k-B|0;x=j-x|0;C=l-C|0;l=p+s+e|0;j=b+t|0;c[a>>2]=((l+j|0)*12945|0)+16384>>15;c[o>>2]=(((da(j,-2)|0)+l|0)*9154|0)+16384>>15;t=((da(b,-2)|0)+t|0)*9154|0;b=((s-p|0)*17203|0)+16384|0;c[q>>2]=b+((p-e|0)*14024|0)+t>>15;c[u>>2]=b+((e-s|0)*3179|0)-t>>15;c[v>>2]=((B-x-C|0)*15855|0)+16384>>15;A=(y-A|0)*15855|0;y=(x+B|0)*11768|0;B=(C+B|0)*6262|0;c[w>>2]=A+16384+y+B>>15;C=(x-C|0)*18029|0;A=16384-A|0;c[z>>2]=A+y-C>>15;c[D>>2]=A+B+C>>15;if((g|0)>0){g=g+-1|0;a=a+4|0;f=f+4|0}else break}i=r;return}function ZF(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;s=i;i=i+64|0;f=s;g=e+9|0;h=e+1|0;j=e+8|0;k=e+2|0;l=e+7|0;m=e+3|0;n=e+6|0;o=e+4|0;p=e+5|0;q=0;r=a;while(1){w=c[b+(q<<2)>>2]|0;H=d[w+e>>0]|0;x=d[w+g>>0]|0;C=x+H|0;G=d[w+h>>0]|0;u=d[w+j>>0]|0;I=u+G|0;F=d[w+k>>0]|0;z=d[w+l>>0]|0;y=z+F|0;E=d[w+m>>0]|0;v=d[w+n>>0]|0;t=v+E|0;D=d[w+o>>0]|0;w=d[w+p>>0]|0;A=w+D|0;B=A+C|0;A=C-A|0;C=t+I|0;t=I-t|0;x=H-x|0;u=G-u|0;z=F-z|0;v=E-v|0;w=D-w|0;c[r>>2]=(C+y+B<<1)+-2560;y=y<<1;c[r+16>>2]=(da(C-y|0,-3580)|0)+2048+((B-y|0)*9373|0)>>12;y=(A+t|0)*6810|0;c[r+8>>2]=(A*4209|0)+2048+y>>12;c[r+24>>2]=(da(t,-17828)|0)+2048+y>>12;y=w+x|0;t=u-v|0;c[r+20>>2]=y-(t+z)<<1;z=z<<13;c[r+4>>2]=(x*11443|0)+2048+(u*10323|0)+z+(v*5260|0)+(w*1812|0)>>12;t=(t<<12)-z+((y+t|0)*2531|0)|0;u=((x-w|0)*7791|0)+(da(v+u|0,-4815)|0)+2048|0;c[r+12>>2]=u+t>>12;c[r+28>>2]=u-t>>12;if((q|0)==7){q=8;r=f;continue}else if((q|0)==9){g=7;break}q=q+1|0;r=r+32|0}while(1){l=c[a>>2]|0;B=c[f+32>>2]|0;b=B+l|0;y=a+32|0;o=c[y>>2]|0;G=c[f>>2]|0;j=G+o|0;v=a+64|0;p=c[v>>2]|0;I=a+224|0;z=c[I>>2]|0;t=z+p|0;F=a+96|0;q=c[F>>2]|0;A=a+192|0;D=c[A>>2]|0;w=D+q|0;H=a+128|0;r=c[H>>2]|0;x=a+160|0;C=c[x>>2]|0;u=C+r|0;e=u+b|0;u=b-u|0;b=w+j|0;w=j-w|0;B=l-B|0;G=o-G|0;z=p-z|0;D=q-D|0;C=r-C|0;c[a>>2]=((b+t+e|0)*10486|0)+16384>>15;t=t<<1;c[H>>2]=(da(b-t|0,-4582)|0)+16384+((e-t|0)*11997|0)>>15;H=(u+w|0)*8716|0;c[v>>2]=(u*5387|0)+16384+H>>15;c[A>>2]=(da(w,-22820)|0)+16384+H>>15;A=C+B|0;H=G-D|0;c[x>>2]=((A-(H+z)|0)*10486|0)+16384>>15;z=z*10486|0;c[y>>2]=(B*14647|0)+16384+(G*13213|0)+z+(D*6732|0)+(C*2320|0)>>15;H=(H*5243|0)-z+((A+H|0)*3240|0)|0;G=((B-C|0)*9973|0)+(da(D+G|0,-6163)|0)+16384|0;c[F>>2]=G+H>>15;c[I>>2]=G-H>>15;if((g|0)>0){g=g+-1|0;a=a+4|0;f=f+4|0}else break}i=s;return}function _F(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;t=i;i=i+96|0;f=t;g=e+10|0;h=e+1|0;j=e+9|0;k=e+2|0;l=e+8|0;m=e+3|0;n=e+7|0;o=e+4|0;p=e+6|0;q=e+5|0;r=0;s=a;while(1){D=c[b+(r<<2)>>2]|0;J=d[D+e>>0]|0;G=d[D+g>>0]|0;B=G+J|0;I=d[D+h>>0]|0;F=d[D+j>>0]|0;x=F+I|0;H=d[D+k>>0]|0;C=d[D+l>>0]|0;v=C+H|0;A=d[D+m>>0]|0;y=d[D+n>>0]|0;u=y+A|0;w=d[D+o>>0]|0;z=d[D+p>>0]|0;E=z+w|0;D=d[D+q>>0]|0;G=J-G|0;F=I-F|0;C=H-C|0;y=A-y|0;z=w-z|0;c[s>>2]=(x+B+v+u+E+D<<1)+-2816;D=D<<1;B=B-D|0;x=x-D|0;v=v-D|0;u=u-D|0;D=E-D|0;E=((B+u|0)*11116|0)+((v+D|0)*1649|0)|0;w=(x-u|0)*7587|0;A=(B-x|0)*9746|0;c[s+8>>2]=(da(u,-8342)|0)+2048+(da(D,-11395)|0)+w+E>>12;c[s+16>>2]=(x*511|0)+2048+(da(v,-11116)|0)+(D*4813|0)+A+w>>12;c[s+24>>2]=(da(B,-13275)|0)+2048+(da(v,-6461)|0)+A+E>>12;E=(F+G|0)*10538|0;A=(C+G|0)*8756|0;v=(y+G|0)*6263|0;B=da(C+F|0,-6263)|0;w=da(y+F|0,-11467)|0;D=da(z,-8756)|0;x=(y+C|0)*3264|0;C=da(C,-16294)|0;u=da(z,-10538)|0;c[s+4>>2]=(da(G,-14090)|0)+2048+E+A+v+(z*3264|0)>>12;c[s+12>>2]=(F*10456|0)+2048+E+B+w+D>>12;c[s+20>>2]=C+2048+B+A+x+(z*11467|0)>>12;c[s+28>>2]=(y*10695|0)+2048+x+w+v+u>>12;if((r|0)==7){r=8;s=f;continue}else if((r|0)==10){g=7;break}r=r+1|0;s=s+32|0}while(1){l=c[a>>2]|0;b=c[f+64>>2]|0;G=b+l|0;e=a+32|0;o=c[e>>2]|0;u=c[f+32>>2]|0;s=u+o|0;r=a+64|0;p=c[r>>2]|0;y=c[f>>2]|0;z=y+p|0;x=a+96|0;H=c[x>>2]|0;J=a+224|0;D=c[J>>2]|0;q=D+H|0;w=a+128|0;F=c[w>>2]|0;v=a+192|0;B=c[v>>2]|0;A=B+F|0;C=a+160|0;I=c[C>>2]|0;b=l-b|0;u=o-u|0;y=p-y|0;D=H-D|0;B=F-B|0;c[a>>2]=((s+G+z+q+A+I|0)*8666|0)+16384>>15;I=I<<1;G=G-I|0;s=s-I|0;z=z-I|0;q=q-I|0;I=A-I|0;A=((G+q|0)*11759|0)+((z+I|0)*1744|0)|0;F=(s-q|0)*8026|0;H=(G-s|0)*10310|0;c[r>>2]=(da(q,-8825)|0)+16384+(da(I,-12054)|0)+F+A>>15;c[w>>2]=(s*540|0)+16384+(da(z,-11759)|0)+(I*5091|0)+H+F>>15;c[v>>2]=(da(G,-14043)|0)+16384+(da(z,-6835)|0)+H+A>>15;v=(u+b|0)*11148|0;A=(y+b|0)*9262|0;H=(D+b|0)*6626|0;z=da(y+u|0,-6626)|0;G=da(D+u|0,-12131)|0;w=da(B,-9262)|0;F=(D+y|0)*3453|0;y=da(y,-17237)|0;I=da(B,-11148)|0;c[e>>2]=(da(b,-14905)|0)+16384+v+A+H+(B*3453|0)>>15;c[x>>2]=(u*11061|0)+16384+v+z+G+w>>15;c[C>>2]=y+16384+z+A+F+(B*12131|0)>>15;c[J>>2]=(D*11314|0)+16384+F+G+H+I>>15;if((g|0)>0){g=g+-1|0;a=a+4|0;f=f+4|0}else break}i=t;return}function $F(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;u=i;i=i+128|0;f=u;g=e+11|0;h=e+1|0;k=e+10|0;l=e+2|0;m=e+9|0;n=e+3|0;o=e+8|0;p=e+4|0;q=e+7|0;r=e+5|0;j=e+6|0;s=0;t=a;while(1){A=c[b+(s<<2)>>2]|0;N=d[A+e>>0]|0;F=d[A+g>>0]|0;y=F+N|0;M=d[A+h>>0]|0;w=d[A+k>>0]|0;H=w+M|0;L=d[A+l>>0]|0;E=d[A+m>>0]|0;O=E+L|0;K=d[A+n>>0]|0;z=d[A+o>>0]|0;C=z+K|0;J=d[A+p>>0]|0;B=d[A+q>>0]|0;G=B+J|0;I=d[A+r>>0]|0;A=d[A+j>>0]|0;x=A+I|0;v=x+y|0;x=y-x|0;y=H-G|0;D=C+O|0;C=O-C|0;F=N-F|0;w=M-w|0;E=L-E|0;z=K-z|0;B=J-B|0;A=I-A|0;c[t>>2]=H+-1536+D+G+v;c[t+24>>2]=x-(y+C);c[t+16>>2]=((v-D|0)*10033|0)+4096>>13;c[t+8>>2]=4096-C+y+((x+C|0)*11190|0)>>13;C=(B+w|0)*4433|0;w=C+(w*6270|0)|0;B=C+(da(B,-15137)|0)|0;C=(E+F|0)*9191|0;x=(z+F|0)*7053|0;y=da(z+E|0,-1512)|0;D=da(E,-19165)|0;v=da(A,-9191)|0;E=da(A+E|0,-4433)|0;c[t+4>>2]=(da(F,-4758)|0)+4096+C+x+w+(A*1512|0)>>13;c[t+12>>2]=((F-z|0)*10703|0)+4096+B+E>>13;c[t+20>>2]=D+4096+C+y-B+(A*7053|0)>>13;c[t+28>>2]=(z*5946|0)+4096+y+x-w+v>>13;if((s|0)==7){s=8;t=f;continue}else if((s|0)==11){g=7;break}s=s+1|0;t=t+32|0}while(1){p=c[a>>2]|0;y=c[f+96>>2]|0;A=y+p|0;x=a+32|0;q=c[x>>2]|0;J=c[f+64>>2]|0;e=J+q|0;B=a+64|0;r=c[B>>2]|0;O=c[f+32>>2]|0;o=O+r|0;z=a+96|0;s=c[z>>2]|0;G=c[f>>2]|0;I=G+s|0;M=a+128|0;t=c[M>>2]|0;N=a+224|0;C=c[N>>2]|0;K=C+t|0;F=a+160|0;b=c[F>>2]|0;v=a+192|0;D=c[v>>2]|0;H=D+b|0;L=H+A|0;H=A-H|0;A=e-K|0;w=I+o|0;I=o-I|0;y=p-y|0;J=q-J|0;O=r-O|0;G=s-G|0;C=t-C|0;D=b-D|0;c[a>>2]=((w+e+K+L|0)*7282|0)+8192>>14;c[v>>2]=((H-(A+I)|0)*7282|0)+8192>>14;c[M>>2]=((L-w|0)*8918|0)+8192>>14;c[B>>2]=((A-I|0)*7282|0)+8192+((H+I|0)*9947|0)>>14;B=(C+J|0)*3941|0;J=B+(J*5573|0)|0;C=B+(da(C,-13455)|0)|0;B=(O+y|0)*8170|0;I=(G+y|0)*6269|0;H=da(G+O|0,-1344)|0;A=da(O,-17036)|0;M=da(D,-8170)|0;O=da(D+O|0,-3941)|0;c[x>>2]=(da(y,-4229)|0)+8192+B+I+J+(D*1344|0)>>14;c[z>>2]=((y-G|0)*9514|0)+8192+C+O>>14;c[F>>2]=A+8192+B+H-C+(D*6269|0)>>14;c[N>>2]=(G*5285|0)+8192+H+I-J+M>>14;if((g|0)>0){g=g+-1|0;a=a+4|0;f=f+4|0}else break}i=u;return}function aG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;v=i;i=i+160|0;f=v;g=e+12|0;h=e+1|0;l=e+11|0;m=e+2|0;n=e+10|0;o=e+3|0;p=e+9|0;q=e+4|0;r=e+8|0;s=e+5|0;j=e+7|0;k=e+6|0;t=0;u=a;while(1){D=c[b+(t<<2)>>2]|0;O=d[D+e>>0]|0;J=d[D+g>>0]|0;z=J+O|0;N=d[D+h>>0]|0;H=d[D+l>>0]|0;w=H+N|0;M=d[D+m>>0]|0;E=d[D+n>>0]|0;F=E+M|0;L=d[D+o>>0]|0;A=d[D+p>>0]|0;y=A+L|0;K=d[D+q>>0]|0;I=d[D+r>>0]|0;B=I+K|0;x=d[D+s>>0]|0;C=d[D+j>>0]|0;G=C+x|0;D=d[D+k>>0]|0;J=O-J|0;H=N-H|0;E=M-E|0;A=L-A|0;I=K-I|0;C=x-C|0;c[u>>2]=z+-1664+w+F+y+B+G+D;D=D<<1;z=z-D|0;w=w-D|0;F=F-D|0;y=y-D|0;B=B-D|0;D=G-D|0;c[u+8>>2]=(w*8672|0)+4096+(z*11249|0)+(F*4108|0)+(da(y,-1396)|0)+(da(B,-6581)|0)+(da(D,-10258)|0)>>13;G=((z-F|0)*9465|0)+(da(y-B|0,-3570)|0)+(da(w-D|0,-2592)|0)|0;D=((z+F|0)*793|0)+(da(y+B|0,-7678)|0)+((w+D|0)*3989|0)|0;c[u+16>>2]=D+4096+G>>13;c[u+24>>2]=4096-D+G>>13;G=(H+J|0)*10832|0;D=(E+J|0)*9534|0;w=((C+I|0)*2773|0)+((A+J|0)*7682|0)|0;B=((I-C|0)*7682|0)+(da(E+H|0,-2773)|0)|0;y=da(A+H|0,-9534)|0;F=da(I,-19183)|0;z=da(A+E|0,-5384)|0;E=da(E,-12879)|0;x=da(C,-14273)|0;c[u+4>>2]=(da(J,-16549)|0)+4096+G+D+(I*2611|0)+w>>13;c[u+12>>2]=(H*6859|0)+4096+G+y+F+B>>13;c[u+20>>2]=E+4096+D+z+(C*18515|0)+B>>13;c[u+28>>2]=(A*18068|0)+4096+z+y+x+w>>13;if((t|0)==12){g=7;break}else if((t|0)==7){t=8;u=f;continue}t=t+1|0;u=u+32|0}while(1){p=c[a>>2]|0;K=c[f+128>>2]|0;e=K+p|0;w=a+32|0;q=c[w>>2]|0;x=c[f+96>>2]|0;I=x+q|0;B=a+64|0;r=c[B>>2]|0;A=c[f+64>>2]|0;J=A+r|0;z=a+96|0;s=c[z>>2]|0;G=c[f+32>>2]|0;H=G+s|0;D=a+128|0;t=c[D>>2]|0;L=c[f>>2]|0;O=L+t|0;F=a+160|0;u=c[F>>2]|0;N=a+224|0;C=c[N>>2]|0;b=C+u|0;y=a+192|0;M=c[y>>2]|0;K=p-K|0;x=q-x|0;A=r-A|0;G=s-G|0;L=t-L|0;C=u-C|0;c[a>>2]=((I+e+J+H+O+b+M|0)*6205|0)+8192>>14;M=M<<1;e=e-M|0;I=I-M|0;J=J-M|0;H=H-M|0;O=O-M|0;M=b-M|0;c[B>>2]=(I*6568|0)+8192+(e*8520|0)+(J*3112|0)+(da(H,-1058)|0)+(da(O,-4985)|0)+(da(M,-7770)|0)>>14;B=((e-J|0)*7169|0)+(da(H-O|0,-2704)|0)+(da(I-M|0,-1963)|0)|0;M=((e+J|0)*601|0)+(da(H+O|0,-5816)|0)+((I+M|0)*3021|0)|0;c[D>>2]=M+8192+B>>14;c[y>>2]=8192-M+B>>14;y=(x+K|0)*8204|0;B=(A+K|0)*7221|0;M=((C+L|0)*2100|0)+((G+K|0)*5819|0)|0;D=((L-C|0)*5819|0)+(da(A+x|0,-2100)|0)|0;I=da(G+x|0,-7221)|0;O=da(L,-14529)|0;H=da(G+A|0,-4078)|0;A=da(A,-9754)|0;J=da(C,-10811)|0;c[w>>2]=(da(K,-12534)|0)+8192+y+B+(L*1978|0)+M>>14;c[z>>2]=(x*5195|0)+8192+y+I+O+D>>14;c[F>>2]=A+8192+B+H+(C*14023|0)+D>>14;c[N>>2]=(G*13685|0)+8192+H+I+J+M>>14;if((g|0)>0){g=g+-1|0;a=a+4|0;f=f+4|0}else break}i=v;return}function bG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;w=i;i=i+192|0;f=w;g=e+13|0;h=e+1|0;m=e+12|0;n=e+2|0;o=e+11|0;p=e+3|0;q=e+10|0;r=e+4|0;s=e+9|0;t=e+5|0;j=e+8|0;k=e+6|0;l=e+7|0;u=0;v=a;while(1){A=c[b+(u<<2)>>2]|0;R=d[A+e>>0]|0;z=d[A+g>>0]|0;J=z+R|0;Q=d[A+h>>0]|0;E=d[A+m>>0]|0;K=E+Q|0;P=d[A+n>>0]|0;F=d[A+o>>0]|0;S=F+P|0;O=d[A+p>>0]|0;B=d[A+q>>0]|0;C=B+O|0;N=d[A+r>>0]|0;y=d[A+s>>0]|0;G=y+N|0;M=d[A+t>>0]|0;D=d[A+j>>0]|0;x=D+M|0;L=d[A+k>>0]|0;A=d[A+l>>0]|0;H=A+L|0;I=H+J|0;H=J-H|0;J=x+K|0;x=K-x|0;K=G+S|0;G=S-G|0;z=R-z|0;E=Q-E|0;F=P-F|0;B=O-B|0;y=N-y|0;D=M-D|0;A=L-A|0;c[v>>2]=C+-1792+K+J+I;C=C<<1;c[v+16>>2]=(da(K-C|0,-7223)|0)+4096+((J-C|0)*2578|0)+((I-C|0)*10438|0)>>13;C=(H+x|0)*9058|0;c[v+8>>2]=(G*5027|0)+4096+(H*2237|0)+C>>13;c[v+24>>2]=(da(G,-11295)|0)+4096+(da(x,-14084)|0)+C>>13;C=F+E|0;x=D-y|0;c[v+28>>2]=z-C+B-x-A;B=B<<13;C=(x*11512|0)-B+(da(C,-1297)|0)|0;x=((A+y|0)*6164|0)+((F+z|0)*9810|0)|0;c[v+20>>2]=(da(F,-19447)|0)+4096+(y*9175|0)+C+x>>13;y=((D-A|0)*3826|0)+((E+z|0)*10935|0)|0;c[v+12>>2]=(da(E,-3474)|0)+4096+(da(D,-25148)|0)+C+y>>13;c[v+4>>2]=(B|4096)+A+(da(A+z|0,-9232)|0)+y+x>>13;if((u|0)==7){u=8;v=f;continue}else if((u|0)==13){g=7;break}u=u+1|0;v=v+32|0}while(1){r=c[a>>2]|0;G=c[f+160>>2]|0;K=G+r|0;N=a+32|0;s=c[N>>2]|0;C=c[f+128>>2]|0;b=C+s|0;y=a+64|0;Q=c[y>>2]|0;A=c[f+96>>2]|0;q=A+Q|0;F=a+96|0;t=c[F>>2]|0;H=c[f+64>>2]|0;L=H+t|0;M=a+128|0;R=c[M>>2]|0;B=c[f+32>>2]|0;O=B+R|0;J=a+160|0;u=c[J>>2]|0;S=c[f>>2]|0;z=S+u|0;D=a+192|0;v=c[D>>2]|0;P=a+224|0;I=c[P>>2]|0;x=I+v|0;e=x+K|0;x=K-x|0;K=z+b|0;z=b-z|0;b=O+q|0;O=q-O|0;G=r-G|0;C=s-C|0;A=Q-A|0;H=t-H|0;B=R-B|0;S=u-S|0;I=v-I|0;c[a>>2]=((b+L+K+e|0)*5350|0)+8192>>14;L=L<<1;c[M>>2]=(da(b-L|0,-4717)|0)+8192+((K-L|0)*1684|0)+((e-L|0)*6817|0)>>14;M=(x+z|0)*5915|0;c[y>>2]=(O*3283|0)+8192+(x*1461|0)+M>>14;c[D>>2]=(da(O,-7376)|0)+8192+(da(z,-9198)|0)+M>>14;D=A+C|0;M=S-B|0;c[P>>2]=((G-D+H-M-I|0)*5350|0)+8192>>14;H=H*5350|0;D=(M*7518|0)-H+(da(D,-847)|0)|0;M=((I+B|0)*4025|0)+((A+G|0)*6406|0)|0;c[J>>2]=(da(A,-12700)|0)+8192+(B*5992|0)+D+M>>14;J=((S-I|0)*2499|0)+((C+G|0)*7141|0)|0;c[F>>2]=(da(C,-2269)|0)+8192+(da(S,-16423)|0)+D+J>>14;c[N>>2]=(da(G,-6029)|0)+8192+H+(da(I,-679)|0)+J+M>>14;if((g|0)>0){g=g+-1|0;a=a+4|0;f=f+4|0}else break}i=w;return}function cG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;x=i;i=i+224|0;f=x;g=e+14|0;h=e+1|0;n=e+13|0;o=e+2|0;p=e+12|0;q=e+3|0;r=e+11|0;s=e+4|0;t=e+10|0;u=e+5|0;j=e+9|0;k=e+6|0;l=e+8|0;m=e+7|0;v=0;w=a;while(1){A=c[b+(v<<2)>>2]|0;T=d[A+e>>0]|0;H=d[A+g>>0]|0;B=H+T|0;S=d[A+h>>0]|0;I=d[A+n>>0]|0;M=I+S|0;R=d[A+o>>0]|0;G=d[A+p>>0]|0;C=G+R|0;Q=d[A+q>>0]|0;F=d[A+r>>0]|0;z=F+Q|0;N=d[A+s>>0]|0;J=d[A+t>>0]|0;L=J+N|0;P=d[A+u>>0]|0;E=d[A+j>>0]|0;y=E+P|0;O=d[A+k>>0]|0;D=d[A+l>>0]|0;K=D+O|0;A=d[A+m>>0]|0;H=T-H|0;I=S-I|0;G=R-G|0;F=Q-F|0;J=N-J|0;E=P-E|0;D=O-D|0;O=L+B+y|0;P=z+M+K|0;N=A+C|0;c[w>>2]=O+-1920+P+N;N=N<<1;c[w+24>>2]=(da(P-N|0,-3580)|0)+4096+((O-N|0)*9373|0)>>13;A=((L+M|0)>>>1)+C+(da(A,-2)|0)|0;C=da(B-A|0,-748)|0;B=((M-L|0)*6476|0)+((B-z|0)*11332|0)+((K-y|0)*7752|0)+4096|0;c[w+8>>2]=B+(da(K-A|0,-18336)|0)+((z-A|0)*12543|0)>>13;c[w+16>>2]=B+C+((y-A|0)*6541|0)>>13;A=G*10033|0;y=((E+F|0)*4712|0)+((J+I|0)*11018|0)+((H-D|0)*11522|0)|0;C=da(H,-2912)|0;B=da(I,-17828)|0;z=da(E,-7121)|0;c[w+4>>2]=A+4096+(F*3897|0)+(da(J,-4209)|0)+(D*13930|0)+y>>13;c[w+12>>2]=((H-J-E|0)*11018|0)+4096+((I-F-D|0)*6810|0)>>13;c[w+20>>2]=((H-G-F+E+D|0)*10033|0)+4096>>13;c[w+28>>2]=C+4096+B-A+z+y>>13;if((v|0)==7){v=8;w=f;continue}else if((v|0)==14){g=7;break}v=v+1|0;w=w+32|0}while(1){r=c[a>>2]|0;B=c[f+192>>2]|0;M=B+r|0;O=a+32|0;s=c[O>>2]|0;P=c[f+160>>2]|0;K=P+s|0;y=a+64|0;Q=c[y>>2]|0;C=c[f+128>>2]|0;I=C+Q|0;A=a+96|0;t=c[A>>2]|0;S=c[f+96>>2]|0;e=S+t|0;J=a+128|0;v=c[J>>2]|0;z=c[f+64>>2]|0;b=z+v|0;G=a+160|0;R=c[G>>2]|0;D=c[f+32>>2]|0;H=D+R|0;w=a+192|0;u=c[w>>2]|0;F=c[f>>2]|0;L=F+u|0;T=a+224|0;N=c[T>>2]|0;B=r-B|0;P=s-P|0;C=Q-C|0;S=t-S|0;z=v-z|0;D=R-D|0;F=u-F|0;u=b+M+H|0;R=e+K+L|0;v=N+I|0;c[a>>2]=((R+u+v|0)*9321|0)+16384>>15;v=v<<1;c[w>>2]=(da(R-v|0,-4073)|0)+16384+((u-v|0)*10664|0)>>15;N=(b+K>>1)+I+(da(N,-2)|0)|0;I=da(M-N|0,-852)|0;M=((K-b|0)*7369|0)+((M-e|0)*12893|0)+((L-H|0)*8820|0)+16384|0;c[y>>2]=M+(da(L-N|0,-20862)|0)+((e-N|0)*14271|0)>>15;c[J>>2]=M+I+((H-N|0)*7442|0)>>15;J=C*11415|0;N=((D+S|0)*5361|0)+((z+P|0)*12536|0)+((B-F|0)*13109|0)|0;H=da(B,-3314)|0;I=da(P,-20284)|0;M=da(D,-8102)|0;c[O>>2]=J+16384+(S*4434|0)+(da(z,-4788)|0)+(F*15850|0)+N>>15;c[A>>2]=((B-z-D|0)*12536|0)+16384+((P-S-F|0)*7748|0)>>15;c[G>>2]=((B-C-S+D+F|0)*11415|0)+16384>>15;c[T>>2]=H+16384+I-J+M+N>>15;if((g|0)>0){g=g+-1|0;a=a+4|0;f=f+4|0}else break}i=x;return}function dG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;y=i;i=i+256|0;f=y;g=e+15|0;h=e+1|0;o=e+14|0;p=e+2|0;q=e+13|0;r=e+3|0;s=e+12|0;t=e+4|0;u=e+11|0;v=e+5|0;j=e+10|0;k=e+6|0;l=e+9|0;m=e+7|0;n=e+8|0;w=0;x=a;while(1){L=c[b+(w<<2)>>2]|0;W=d[L+e>>0]|0;M=d[L+g>>0]|0;O=M+W|0;V=d[L+h>>0]|0;K=d[L+o>>0]|0;N=K+V|0;U=d[L+p>>0]|0;H=d[L+q>>0]|0;I=H+U|0;T=d[L+r>>0]|0;D=d[L+s>>0]|0;X=D+T|0;S=d[L+t>>0]|0;C=d[L+u>>0]|0;z=C+S|0;R=d[L+v>>0]|0;G=d[L+j>>0]|0;A=G+R|0;Q=d[L+k>>0]|0;J=d[L+l>>0]|0;F=J+Q|0;P=d[L+m>>0]|0;L=d[L+n>>0]|0;E=L+P|0;B=E+O|0;E=O-E|0;O=F+N|0;F=N-F|0;N=A+I|0;A=I-A|0;I=z+X|0;z=X-z|0;M=W-M|0;K=V-K|0;H=U-H|0;D=T-D|0;C=S-C|0;G=R-G|0;J=Q-J|0;L=P-L|0;c[x>>2]=(N+I+O+B<<2)+-8192;c[x+16>>2]=((O-N|0)*4433|0)+1024+((B-I|0)*10703|0)>>11;I=((E-A|0)*11363|0)+((z-F|0)*2260|0)|0;c[x+8>>2]=(A*17799|0)+1024+(F*11893|0)+I>>11;c[x+24>>2]=(da(z,-8697)|0)+1024+(da(E,-1730)|0)+I>>11;I=((J-L|0)*3363|0)+((K+M|0)*11086|0)|0;E=((L+G|0)*5461|0)+((H+M|0)*10217|0)|0;z=((C-L|0)*7350|0)+((D+M|0)*8956|0)|0;F=((J-G|0)*11529|0)+((H+K|0)*1136|0)|0;A=(da(J+C|0,-10217)|0)+(da(D+K|0,-5461)|0)|0;B=((G-C|0)*3363|0)+(da(D+H|0,-11086)|0)|0;J=da(J,-13631)|0;H=da(H,-9222)|0;c[x+4>>2]=(da(M,-18730)|0)+1024+(L*6387|0)+E+I+z>>11;c[x+12>>2]=(K*589|0)+1024+J+A+F+I>>11;c[x+20>>2]=H+1024+(G*10055|0)+B+F+E>>11;c[x+28>>2]=(D*8728|0)+1024+(C*17760|0)+B+A+z>>11;if((w|0)==7){w=8;x=f;continue}else if((w|0)==15){g=7;break}w=w+1|0;x=x+32|0}while(1){Q=c[a>>2]|0;P=c[f+224>>2]|0;L=P+Q|0;B=a+32|0;t=c[B>>2]|0;C=c[f+192>>2]|0;b=C+t|0;U=a+64|0;R=c[U>>2]|0;G=c[f+160>>2]|0;O=G+R|0;F=a+96|0;u=c[F>>2]|0;M=c[f+128>>2]|0;s=M+u|0;I=a+128|0;v=c[I>>2]|0;N=c[f+96>>2]|0;X=N+v|0;J=a+160|0;w=c[J>>2]|0;H=c[f+64>>2]|0;z=H+w|0;D=a+192|0;K=c[D>>2]|0;S=c[f+32>>2]|0;T=S+K|0;W=a+224|0;x=c[W>>2]|0;A=c[f>>2]|0;V=A+x|0;e=V+L|0;V=L-V|0;L=T+b|0;T=b-T|0;b=z+O|0;z=O-z|0;O=X+s|0;X=s-X|0;P=Q-P|0;C=t-C|0;G=R-G|0;M=u-M|0;N=v-N|0;H=w-H|0;S=K-S|0;A=x-A|0;c[a>>2]=O+8+b+L+e>>4;c[I>>2]=((L-b|0)*4433|0)+65536+((e-O|0)*10703|0)>>17;I=((V-z|0)*11363|0)+((X-T|0)*2260|0)|0;c[U>>2]=(z*17799|0)+65536+(T*11893|0)+I>>17;c[D>>2]=(da(X,-8697)|0)+65536+(da(V,-1730)|0)+I>>17;D=((S-A|0)*3363|0)+((C+P|0)*11086|0)|0;I=((A+H|0)*5461|0)+((G+P|0)*10217|0)|0;V=((N-A|0)*7350|0)+((M+P|0)*8956|0)|0;X=((S-H|0)*11529|0)+((G+C|0)*1136|0)|0;U=(da(S+N|0,-10217)|0)+(da(M+C|0,-5461)|0)|0;T=((H-N|0)*3363|0)+(da(M+G|0,-11086)|0)|0;S=da(S,-13631)|0;G=da(G,-9222)|0;c[B>>2]=(da(P,-18730)|0)+65536+(A*6387|0)+I+D+V>>17;c[F>>2]=(C*589|0)+65536+S+U+X+D>>17;c[J>>2]=G+65536+(H*10055|0)+T+X+I>>17;c[W>>2]=(M*8728|0)+65536+(N*17760|0)+T+U+V>>17;if((g|0)>0){g=g+-1|0;a=a+4|0;f=f+4|0}else break}i=y;return}function eG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;f=e+15|0;g=e+1|0;m=e+14|0;n=e+2|0;o=e+13|0;p=e+3|0;q=e+12|0;r=e+4|0;s=e+11|0;t=e+5|0;h=e+10|0;i=e+6|0;j=e+9|0;k=e+7|0;l=e+8|0;u=0;v=a;while(1){I=c[b+(u<<2)>>2]|0;T=d[I+e>>0]|0;J=d[I+f>>0]|0;L=J+T|0;S=d[I+g>>0]|0;H=d[I+m>>0]|0;K=H+S|0;R=d[I+n>>0]|0;E=d[I+o>>0]|0;F=E+R|0;Q=d[I+p>>0]|0;A=d[I+q>>0]|0;U=A+Q|0;P=d[I+r>>0]|0;z=d[I+s>>0]|0;w=z+P|0;O=d[I+t>>0]|0;D=d[I+h>>0]|0;x=D+O|0;N=d[I+i>>0]|0;G=d[I+j>>0]|0;C=G+N|0;M=d[I+k>>0]|0;I=d[I+l>>0]|0;B=I+M|0;y=B+L|0;B=L-B|0;L=C+K|0;C=K-C|0;K=x+F|0;x=F-x|0;F=w+U|0;w=U-w|0;J=T-J|0;H=S-H|0;E=R-E|0;A=Q-A|0;z=P-z|0;D=O-D|0;G=N-G|0;I=M-I|0;c[v>>2]=(K+F+L+y<<2)+-8192;c[v+16>>2]=((L-K|0)*4433|0)+1024+((y-F|0)*10703|0)>>11;F=((B-x|0)*11363|0)+((w-C|0)*2260|0)|0;c[v+8>>2]=(x*17799|0)+1024+(C*11893|0)+F>>11;c[v+24>>2]=(da(w,-8697)|0)+1024+(da(B,-1730)|0)+F>>11;F=((G-I|0)*3363|0)+((H+J|0)*11086|0)|0;B=((I+D|0)*5461|0)+((E+J|0)*10217|0)|0;w=((z-I|0)*7350|0)+((A+J|0)*8956|0)|0;C=((G-D|0)*11529|0)+((E+H|0)*1136|0)|0;x=(da(G+z|0,-10217)|0)+(da(A+H|0,-5461)|0)|0;y=((D-z|0)*3363|0)+(da(A+E|0,-11086)|0)|0;G=da(G,-13631)|0;E=da(E,-9222)|0;c[v+4>>2]=(da(J,-18730)|0)+1024+(I*6387|0)+B+F+w>>11;c[v+12>>2]=(H*589|0)+1024+G+x+C+F>>11;c[v+20>>2]=E+1024+(D*10055|0)+y+C+B>>11;c[v+28>>2]=(A*8728|0)+1024+(z*17760|0)+y+x+w>>11;u=u+1|0;if((u|0)==8){f=7;break}else v=v+32|0}while(1){x=c[a>>2]|0;U=a+224|0;R=c[U>>2]|0;z=R+x|0;C=a+32|0;N=c[C>>2]|0;I=a+192|0;E=c[I>>2]|0;w=E+N|0;H=a+64|0;y=c[H>>2]|0;L=a+160|0;G=c[L>>2]|0;S=G+y|0;F=a+96|0;O=c[F>>2]|0;T=a+128|0;M=c[T>>2]|0;B=M+O|0;A=B+z|0;B=z-B|0;z=S+w|0;S=w-S|0;R=x-R|0;E=N-E|0;G=y-G|0;M=O-M|0;c[a>>2]=z+4+A>>3;c[T>>2]=4-z+A>>3;T=(B+S|0)*4433|0;c[H>>2]=(B*6270|0)+32768+T>>16;c[I>>2]=(da(S,-15137)|0)+32768+T>>16;I=G+R|0;T=M+E|0;S=(T+I|0)*9633|0;I=S+(da(I,-3196)|0)|0;T=S+(da(T,-16069)|0)|0;S=da(M+R|0,-7373)|0;H=da(G+E|0,-20995)|0;c[C>>2]=(R*12299|0)+32768+S+I>>16;c[F>>2]=(E*25172|0)+32768+H+T>>16;c[L>>2]=(G*16819|0)+32768+H+I>>16;c[U>>2]=(M*2446|0)+32768+S+T>>16;if((f|0)>0){f=f+-1|0;a=a+4|0}else break}return}function fG(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;g=b+224|0;h=g+32|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));g=f+13|0;h=f+1|0;l=f+12|0;m=f+2|0;n=f+11|0;o=f+3|0;p=f+10|0;q=f+4|0;r=f+9|0;s=f+5|0;i=f+8|0;j=f+6|0;k=f+7|0;t=0;u=b;while(1){y=c[e+(t<<2)>>2]|0;P=d[y+f>>0]|0;x=d[y+g>>0]|0;H=x+P|0;O=d[y+h>>0]|0;C=d[y+l>>0]|0;I=C+O|0;N=d[y+m>>0]|0;D=d[y+n>>0]|0;Q=D+N|0;M=d[y+o>>0]|0;z=d[y+p>>0]|0;A=z+M|0;L=d[y+q>>0]|0;w=d[y+r>>0]|0;E=w+L|0;K=d[y+s>>0]|0;B=d[y+i>>0]|0;v=B+K|0;J=d[y+j>>0]|0;y=d[y+k>>0]|0;F=y+J|0;G=F+H|0;F=H-F|0;H=v+I|0;v=I-v|0;I=E+Q|0;E=Q-E|0;x=P-x|0;C=O-C|0;D=N-D|0;z=M-z|0;w=L-w|0;B=K-B|0;y=J-y|0;c[u>>2]=(I+A+H+G<<2)+-7168;A=A<<1;c[u+16>>2]=(da(I-A|0,-7223)|0)+1024+((H-A|0)*2578|0)+((G-A|0)*10438|0)>>11;A=(F+v|0)*9058|0;c[u+8>>2]=(E*5027|0)+1024+(F*2237|0)+A>>11;c[u+24>>2]=(da(E,-11295)|0)+1024+(da(v,-14084)|0)+A>>11;A=D+C|0;v=B-w|0;c[u+28>>2]=x-A+z-v-y<<2;z=z<<13;A=(v*11512|0)-z+(da(A,-1297)|0)|0;v=((y+w|0)*6164|0)+((D+x|0)*9810|0)|0;c[u+20>>2]=(da(D,-19447)|0)+1024+(w*9175|0)+A+v>>11;w=((B-y|0)*3826|0)+((C+x|0)*10935|0)|0;c[u+12>>2]=(da(C,-3474)|0)+1024+(da(B,-25148)|0)+A+w>>11;c[u+4>>2]=(z|1024)+y+(da(y+x|0,-9232)|0)+w+v>>11;t=t+1|0;if((t|0)==7){g=7;break}else u=u+32|0}while(1){x=c[b>>2]|0;G=b+192|0;J=c[G>>2]|0;B=J+x|0;D=b+32|0;C=c[D>>2]|0;N=b+160|0;M=c[N>>2]|0;z=M+C|0;y=b+64|0;F=c[y>>2]|0;A=b+128|0;I=c[A>>2]|0;O=I+F|0;H=b+96|0;P=c[H>>2]|0;J=x-J|0;M=C-M|0;I=F-I|0;F=O+B|0;c[b>>2]=((P+z+F|0)*10700|0)+32768>>16;F=((da(P,-4)|0)+F|0)*3783|0;C=(B-O|0)*9850|0;O=(z-O|0)*3367|0;c[y>>2]=C+32768+O+F>>16;B=((B-z|0)*9434|0)+32768|0;c[A>>2]=B+O+(da(z-(P<<1)|0,-7566)|0)>>16;c[G>>2]=B-C+F>>16;G=(M+J|0)*10009|0;F=(J-M|0)*1822|0;M=da(I+M|0,-14752)|0;J=(I+J|0)*6565|0;c[D>>2]=32768-F+G+J>>16;c[H>>2]=F+32768+G+M>>16;c[N>>2]=(I*20017|0)+32768+J+M>>16;if((g|0)>0){g=g+-1|0;b=b+4|0}else break}return}function gG(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;g=b+192|0;h=g+64|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));g=f+11|0;h=f+1|0;j=f+10|0;k=f+2|0;l=f+9|0;m=f+3|0;n=f+8|0;o=f+4|0;p=f+7|0;q=f+5|0;i=f+6|0;r=0;s=b;while(1){y=c[e+(r<<2)>>2]|0;L=d[y+f>>0]|0;D=d[y+g>>0]|0;w=D+L|0;K=d[y+h>>0]|0;u=d[y+j>>0]|0;F=u+K|0;J=d[y+k>>0]|0;C=d[y+l>>0]|0;M=C+J|0;I=d[y+m>>0]|0;x=d[y+n>>0]|0;A=x+I|0;H=d[y+o>>0]|0;z=d[y+p>>0]|0;E=z+H|0;G=d[y+q>>0]|0;y=d[y+i>>0]|0;v=y+G|0;t=v+w|0;v=w-v|0;w=F-E|0;B=A+M|0;A=M-A|0;D=L-D|0;u=K-u|0;C=J-C|0;x=I-x|0;z=H-z|0;y=G-y|0;c[s>>2]=(B+F+E+t<<2)+-6144;c[s+24>>2]=v-(w+A)<<2;c[s+16>>2]=((t-B|0)*10033|0)+1024>>11;c[s+8>>2]=1024-A+w+((v+A|0)*11190|0)>>11;A=(z+u|0)*4433|0;u=A+(u*6270|0)|0;z=A+(da(z,-15137)|0)|0;A=(C+D|0)*9191|0;v=(x+D|0)*7053|0;w=da(x+C|0,-1512)|0;B=da(C,-19165)|0;t=da(y,-9191)|0;C=da(y+C|0,-4433)|0;c[s+4>>2]=(da(D,-4758)|0)+1024+A+v+u+(y*1512|0)>>11;c[s+12>>2]=((D-x|0)*10703|0)+1024+z+C>>11;c[s+20>>2]=B+1024+A+w-z+(y*7053|0)>>11;c[s+28>>2]=(x*5946|0)+1024+w+v-u+t>>11;r=r+1|0;if((r|0)==6){g=7;break}else s=s+32|0}while(1){L=c[b>>2]|0;M=b+160|0;F=c[M>>2]|0;y=F+L|0;D=b+32|0;w=c[D>>2]|0;J=b+128|0;I=c[J>>2]|0;B=I+w|0;A=b+64|0;x=c[A>>2]|0;G=b+96|0;H=c[G>>2]|0;z=H+x|0;C=z+y|0;F=L-F|0;I=w-I|0;H=x-H|0;c[b>>2]=((C+B|0)*14564|0)+32768>>16;c[A>>2]=((y-z|0)*17837|0)+32768>>16;c[J>>2]=(((da(B,-2)|0)+C|0)*10298|0)+32768>>16;J=(H+F|0)*5331|0;c[D>>2]=((I+F|0)*14564|0)+32768+J>>16;c[G>>2]=((F-I-H|0)*14564|0)+32768>>16;c[M>>2]=((H-I|0)*14564|0)+32768+J>>16;if((g|0)>0){g=g+-1|0;b=b+4|0}else break}return}function hG(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;g=b+160|0;h=g+96|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));g=f+9|0;h=f+1|0;i=f+8|0;j=f+2|0;k=f+7|0;l=f+3|0;m=f+6|0;n=f+4|0;o=f+5|0;p=0;q=b;while(1){u=c[e+(p<<2)>>2]|0;F=d[u+f>>0]|0;v=d[u+g>>0]|0;A=v+F|0;E=d[u+h>>0]|0;s=d[u+i>>0]|0;G=s+E|0;D=d[u+j>>0]|0;x=d[u+k>>0]|0;w=x+D|0;C=d[u+l>>0]|0;t=d[u+m>>0]|0;r=t+C|0;B=d[u+n>>0]|0;u=d[u+o>>0]|0;y=u+B|0;z=y+A|0;y=A-y|0;A=r+G|0;r=G-r|0;v=F-v|0;s=E-s|0;x=D-x|0;t=C-t|0;u=B-u|0;c[q>>2]=(A+w+z<<2)+-5120;w=w<<1;c[q+16>>2]=(da(A-w|0,-3580)|0)+1024+((z-w|0)*9373|0)>>11;w=(y+r|0)*6810|0;c[q+8>>2]=(y*4209|0)+1024+w>>11;c[q+24>>2]=(da(r,-17828)|0)+1024+w>>11;w=u+v|0;r=s-t|0;c[q+20>>2]=w-(r+x)<<2;x=x<<13;c[q+4>>2]=(v*11443|0)+1024+(s*10323|0)+x+(t*5260|0)+(u*1812|0)>>11;r=(r<<12)-x+((w+r|0)*2531|0)|0;s=((v-u|0)*7791|0)+(da(t+s|0,-4815)|0)+1024|0;c[q+12>>2]=s+r>>11;c[q+28>>2]=s-r>>11;p=p+1|0;if((p|0)==5){g=7;break}else q=q+32|0}while(1){u=c[b>>2]|0;F=b+128|0;B=c[F>>2]|0;x=B+u|0;C=b+32|0;v=c[C>>2]|0;G=b+96|0;D=c[G>>2]|0;z=D+v|0;y=b+64|0;A=c[y>>2]|0;w=z+x|0;B=u-B|0;D=v-D|0;c[b>>2]=((w+A|0)*10486|0)+16384>>15;A=(w-(A<<2)|0)*3707|0;z=((x-z|0)*8290|0)+16384|0;c[y>>2]=z+A>>15;c[F>>2]=z-A>>15;F=(D+B|0)*8716|0;c[C>>2]=(B*5387|0)+16384+F>>15;c[G>>2]=(da(D,-22820)|0)+16384+F>>15;if((g|0)>0){g=g+-1|0;b=b+4|0}else break}return}function iG(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;g=b+128|0;h=g+128|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));g=f+7|0;h=f+1|0;i=f+6|0;j=f+2|0;k=f+5|0;l=f+3|0;m=f+4|0;n=0;o=b;while(1){q=c[e+(n<<2)>>2]|0;A=d[q+f>>0]|0;w=d[q+g>>0]|0;p=w+A|0;z=d[q+h>>0]|0;v=d[q+i>>0]|0;B=v+z|0;y=d[q+j>>0]|0;t=d[q+k>>0]|0;s=t+y|0;x=d[q+l>>0]|0;q=d[q+m>>0]|0;r=q+x|0;u=r+p|0;r=p-r|0;p=s+B|0;s=B-s|0;w=A-w|0;v=z-v|0;t=y-t|0;q=x-q|0;c[o>>2]=(u+p<<3)+-8192;c[o+16>>2]=u-p<<3;p=((r+s|0)*4433|0)+512|0;c[o+8>>2]=p+(r*6270|0)>>10;c[o+24>>2]=p+(da(s,-15137)|0)>>10;s=t+w|0;p=q+v|0;r=((p+s|0)*9633|0)+512|0;s=r+(da(s,-3196)|0)|0;p=r+(da(p,-16069)|0)|0;r=da(q+w|0,-7373)|0;u=da(t+v|0,-20995)|0;c[o+4>>2]=r+(w*12299|0)+s>>10;c[o+12>>2]=u+(v*25172|0)+p>>10;c[o+20>>2]=u+(t*16819|0)+s>>10;c[o+28>>2]=r+(q*2446|0)+p>>10;n=n+1|0;if((n|0)==4){g=7;break}else o=o+32|0}while(1){t=c[b>>2]|0;B=b+96|0;x=c[B>>2]|0;v=t+2+x|0;y=b+32|0;u=c[y>>2]|0;z=b+64|0;A=c[z>>2]|0;w=A+u|0;x=t-x|0;A=u-A|0;c[b>>2]=w+v>>2;c[z>>2]=v-w>>2;z=((A+x|0)*4433|0)+16384|0;c[y>>2]=z+(x*6270|0)>>15;c[B>>2]=z+(da(A,-15137)|0)>>15;if((g|0)>0){g=g+-1|0;b=b+4|0}else break}return}function jG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;sfa(a|0,0,256)|0;f=e+5|0;g=e+1|0;h=e+4|0;i=e+2|0;j=e+3|0;k=0;l=a;while(1){n=c[b+(k<<2)>>2]|0;v=d[n+e>>0]|0;p=d[n+f>>0]|0;s=p+v|0;u=d[n+g>>0]|0;m=d[n+h>>0]|0;q=m+u|0;t=d[n+i>>0]|0;n=d[n+j>>0]|0;r=n+t|0;o=r+s|0;p=v-p|0;m=u-m|0;n=t-n|0;c[l>>2]=(o+q<<3)+-6144;c[l+8>>2]=((s-r|0)*10033|0)+512>>10;c[l+16>>2]=(((da(q,-2)|0)+o|0)*5793|0)+512>>10;o=((n+p|0)*2998|0)+512>>10;c[l+4>>2]=o+(m+p<<3);c[l+12>>2]=p-m-n<<3;c[l+20>>2]=o+(n-m<<3);k=k+1|0;if((k|0)==3)break;else l=l+32|0}u=c[a>>2]|0;t=a+64|0;s=c[t>>2]|0;r=s+u|0;q=a+32|0;p=c[q>>2]|0;c[a>>2]=((r+p|0)*14564|0)+16384>>15;c[t>>2]=(((da(p,-2)|0)+r|0)*10298|0)+16384>>15;c[q>>2]=((u-s|0)*17837|0)+16384>>15;q=a+4|0;s=c[q>>2]|0;u=a+68|0;t=c[u>>2]|0;r=t+s|0;p=a+36|0;v=c[p>>2]|0;c[q>>2]=((r+v|0)*14564|0)+16384>>15;c[u>>2]=(((da(v,-2)|0)+r|0)*10298|0)+16384>>15;c[p>>2]=((s-t|0)*17837|0)+16384>>15;p=a+8|0;t=c[p>>2]|0;s=a+72|0;u=c[s>>2]|0;r=u+t|0;v=a+40|0;q=c[v>>2]|0;c[p>>2]=((r+q|0)*14564|0)+16384>>15;c[s>>2]=(((da(q,-2)|0)+r|0)*10298|0)+16384>>15;c[v>>2]=((t-u|0)*17837|0)+16384>>15;v=a+12|0;u=c[v>>2]|0;t=a+76|0;s=c[t>>2]|0;r=s+u|0;q=a+44|0;p=c[q>>2]|0;c[v>>2]=((r+p|0)*14564|0)+16384>>15;c[t>>2]=(((da(p,-2)|0)+r|0)*10298|0)+16384>>15;c[q>>2]=((u-s|0)*17837|0)+16384>>15;q=a+16|0;s=c[q>>2]|0;u=a+80|0;t=c[u>>2]|0;r=t+s|0;p=a+48|0;v=c[p>>2]|0;c[q>>2]=((r+v|0)*14564|0)+16384>>15;c[u>>2]=(((da(v,-2)|0)+r|0)*10298|0)+16384>>15;c[p>>2]=((s-t|0)*17837|0)+16384>>15;p=a+20|0;t=c[p>>2]|0;s=a+84|0;u=c[s>>2]|0;r=u+t|0;v=a+52|0;q=c[v>>2]|0;c[p>>2]=((r+q|0)*14564|0)+16384>>15;c[s>>2]=(((da(q,-2)|0)+r|0)*10298|0)+16384>>15;c[v>>2]=((t-u|0)*17837|0)+16384>>15;return}function kG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;sfa(a|0,0,256)|0;h=e+3|0;k=e+1|0;o=e+2|0;f=c[b>>2]|0;j=d[f+e>>0]|0;i=d[f+h>>0]|0;n=i+j|0;l=d[f+k>>0]|0;f=d[f+o>>0]|0;g=f+l|0;i=j-i|0;f=l-f|0;l=g+n<<5;c[a>>2]=l+-16384;g=n-g<<5;c[a+8>>2]=g;n=((f+i|0)*4433|0)+128|0;i=n+(i*6270|0)>>8;j=a+4|0;c[j>>2]=i;f=n+(da(f,-15137)|0)>>8;c[a+12>>2]=f;b=c[b+4>>2]|0;n=d[b+e>>0]|0;h=d[b+h>>0]|0;m=h+n|0;k=d[b+k>>0]|0;e=d[b+o>>0]|0;b=e+k|0;h=n-h|0;e=k-e|0;k=(b+m<<5)+-16384|0;b=m-b<<5;m=((e+h|0)*4433|0)+128|0;h=m+(h*6270|0)>>8;e=m+(da(e,-15137)|0)>>8;l=l+-16382|0;c[a>>2]=l+k>>2;c[a+32>>2]=l-k>>2;i=i+2|0;c[j>>2]=i+h>>2;c[a+36>>2]=i-h>>2;g=g|2;c[a+8>>2]=g+b>>2;c[a+40>>2]=g-b>>2;b=f+2|0;c[a+12>>2]=b+e>>2;c[a+44>>2]=b-e>>2;return}function lG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0;sfa(a|0,0,256)|0;f=c[b>>2]|0;b=d[f+e>>0]|0;e=d[f+(e+1)>>0]|0;c[a>>2]=(e+b<<5)+-8192;c[a+4>>2]=b-e<<5;return}function mG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;q=i;i=i+256|0;f=q;g=e+7|0;h=e+1|0;j=e+6|0;k=e+2|0;l=e+5|0;m=e+3|0;n=e+4|0;o=0;p=a;while(1){t=c[b+(o<<2)>>2]|0;C=d[t+e>>0]|0;y=d[t+g>>0]|0;u=y+C|0;B=d[t+h>>0]|0;x=d[t+j>>0]|0;D=x+B|0;A=d[t+k>>0]|0;w=d[t+l>>0]|0;r=w+A|0;z=d[t+m>>0]|0;t=d[t+n>>0]|0;s=t+z|0;v=s+u|0;s=u-s|0;u=r+D|0;r=D-r|0;y=C-y|0;x=B-x|0;w=A-w|0;t=z-t|0;c[p>>2]=(v+u<<2)+-4096;c[p+16>>2]=v-u<<2;u=(s+r|0)*4433|0;c[p+8>>2]=(s*6270|0)+1024+u>>11;c[p+24>>2]=(da(r,-15137)|0)+1024+u>>11;u=w+y|0;r=t+x|0;s=(r+u|0)*9633|0;u=s+(da(u,-3196)|0)|0;r=s+(da(r,-16069)|0)|0;s=da(t+y|0,-7373)|0;v=da(w+x|0,-20995)|0;c[p+4>>2]=(y*12299|0)+1024+s+u>>11;c[p+12>>2]=(x*25172|0)+1024+v+r>>11;c[p+20>>2]=(w*16819|0)+1024+v+u>>11;c[p+28>>2]=(t*2446|0)+1024+s+r>>11;if((o|0)==7){o=8;p=f;continue}else if((o|0)==15){g=7;break}o=o+1|0;p=p+32|0}while(1){L=c[a>>2]|0;l=c[f+224>>2]|0;m=l+L|0;p=a+32|0;K=c[p>>2]|0;b=c[f+192>>2]|0;h=b+K|0;B=a+64|0;J=c[B>>2]|0;t=c[f+160>>2]|0;k=t+J|0;s=a+96|0;I=c[s>>2]|0;y=c[f+128>>2]|0;M=y+I|0;w=a+128|0;H=c[w>>2]|0;z=c[f+96>>2]|0;v=z+H|0;x=a+160|0;G=c[x>>2]|0;u=c[f+64>>2]|0;j=u+G|0;r=a+192|0;F=c[r>>2]|0;e=c[f+32>>2]|0;A=e+F|0;D=a+224|0;E=c[D>>2]|0;o=c[f>>2]|0;C=o+E|0;n=C+m|0;C=m-C|0;m=A+h|0;A=h-A|0;h=j+k|0;j=k-j|0;k=v+M|0;v=M-v|0;l=L-l|0;b=K-b|0;t=J-t|0;y=I-y|0;z=H-z|0;u=G-u|0;e=F-e|0;o=E-o|0;c[a>>2]=k+4+h+m+n>>3;c[w>>2]=((m-h|0)*4433|0)+32768+((n-k|0)*10703|0)>>16;w=((C-j|0)*11363|0)+((v-A|0)*2260|0)|0;c[B>>2]=(j*17799|0)+32768+(A*11893|0)+w>>16;c[r>>2]=(da(v,-8697)|0)+32768+(da(C,-1730)|0)+w>>16;r=((e-o|0)*3363|0)+((b+l|0)*11086|0)|0;w=((o+u|0)*5461|0)+((t+l|0)*10217|0)|0;C=((z-o|0)*7350|0)+((y+l|0)*8956|0)|0;v=((e-u|0)*11529|0)+((t+b|0)*1136|0)|0;B=(da(e+z|0,-10217)|0)+(da(y+b|0,-5461)|0)|0;A=((u-z|0)*3363|0)+(da(y+t|0,-11086)|0)|0;e=da(e,-13631)|0;t=da(t,-9222)|0;c[p>>2]=(da(l,-18730)|0)+32768+(o*6387|0)+w+r+C>>16;c[s>>2]=(b*589|0)+32768+e+B+v+r>>16;c[x>>2]=t+32768+(u*10055|0)+A+v+w>>16;c[D>>2]=(y*8728|0)+32768+(z*17760|0)+A+B+C>>16;if((g|0)>0){g=g+-1|0;a=a+4|0;f=f+4|0}else break}i=q;return}function nG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;p=i;i=i+192|0;f=p;sfa(a|0,0,256)|0;g=e+6|0;h=e+1|0;j=e+5|0;k=e+2|0;l=e+4|0;m=e+3|0;n=0;o=a;while(1){w=c[b+(n<<2)>>2]|0;z=d[w+e>>0]|0;r=d[w+g>>0]|0;v=r+z|0;u=d[w+h>>0]|0;q=d[w+j>>0]|0;x=q+u|0;t=d[w+k>>0]|0;s=d[w+l>>0]|0;y=s+t|0;w=d[w+m>>0]|0;r=z-r|0;q=u-q|0;s=t-s|0;t=y+v|0;c[o>>2]=(w+x+t<<2)+-3584;t=((da(w,-4)|0)+t|0)*2896|0;u=(v-y|0)*7542|0;y=(x-y|0)*2578|0;c[o+8>>2]=u+1024+y+t>>11;v=((v-x|0)*7223|0)+1024|0;c[o+16>>2]=v+y+(da(x-(w<<1)|0,-5793)|0)>>11;c[o+24>>2]=v-u+t>>11;t=(q+r|0)*7663|0;u=(r-q|0)*1395|0;q=da(s+q|0,-11295)|0;r=(s+r|0)*5027|0;c[o+4>>2]=1024-u+t+r>>11;c[o+12>>2]=u+1024+t+q>>11;c[o+20>>2]=(s*15326|0)+1024+r+q>>11;if((n|0)==13){g=0;break}else if((n|0)==7){n=8;o=f;continue}n=n+1|0;o=o+32|0}while(1){I=c[a>>2]|0;u=c[f+160>>2]|0;A=u+I|0;z=a+32|0;H=c[z>>2]|0;q=c[f+128>>2]|0;B=q+H|0;k=a+64|0;G=c[k>>2]|0;b=c[f+96>>2]|0;J=b+G|0;t=a+96|0;F=c[t>>2]|0;v=c[f+64>>2]|0;h=v+F|0;y=a+128|0;E=c[y>>2]|0;e=c[f+32>>2]|0;j=e+E|0;x=a+160|0;D=c[x>>2]|0;r=c[f>>2]|0;l=r+D|0;s=a+192|0;C=c[s>>2]|0;o=a+224|0;w=c[o>>2]|0;n=w+C|0;m=n+A|0;n=A-n|0;A=l+B|0;l=B-l|0;B=j+J|0;j=J-j|0;u=I-u|0;q=H-q|0;b=G-b|0;v=F-v|0;e=E-e|0;r=D-r|0;w=C-w|0;c[a>>2]=((B+h+A+m|0)*5350|0)+16384>>15;h=h<<1;c[y>>2]=(da(B-h|0,-4717)|0)+16384+((A-h|0)*1684|0)+((m-h|0)*6817|0)>>15;y=(n+l|0)*5915|0;c[k>>2]=(j*3283|0)+16384+(n*1461|0)+y>>15;c[s>>2]=(da(j,-7376)|0)+16384+(da(l,-9198)|0)+y>>15;s=b+q|0;y=r-e|0;c[o>>2]=((u-s+v-y-w|0)*5350|0)+16384>>15;v=v*5350|0;s=(y*7518|0)-v+(da(s,-847)|0)|0;y=((w+e|0)*4025|0)+((b+u|0)*6406|0)|0;c[x>>2]=(da(b,-12700)|0)+16384+(e*5992|0)+s+y>>15;x=((r-w|0)*2499|0)+((q+u|0)*7141|0)|0;c[t>>2]=(da(q,-2269)|0)+16384+(da(r,-16423)|0)+s+x>>15;c[z>>2]=(da(u,-6029)|0)+16384+v+(da(w,-679)|0)+x+y>>15;g=g+1|0;if((g|0)==7)break;else{a=a+4|0;f=f+4|0}}i=p;return}function oG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;o=i;i=i+128|0;f=o;sfa(a|0,0,256)|0;g=e+5|0;h=e+1|0;j=e+4|0;k=e+2|0;l=e+3|0;m=0;n=a;while(1){q=c[b+(m<<2)>>2]|0;y=d[q+e>>0]|0;s=d[q+g>>0]|0;v=s+y|0;x=d[q+h>>0]|0;p=d[q+j>>0]|0;t=p+x|0;w=d[q+k>>0]|0;q=d[q+l>>0]|0;u=q+w|0;r=u+v|0;s=y-s|0;p=x-p|0;q=w-q|0;c[n>>2]=(r+t<<2)+-3072;c[n+8>>2]=((v-u|0)*10033|0)+1024>>11;c[n+16>>2]=(((da(t,-2)|0)+r|0)*5793|0)+1024>>11;r=((q+s|0)*2998|0)+1024>>11;c[n+4>>2]=r+(p+s<<2);c[n+12>>2]=s-p-q<<2;c[n+20>>2]=r+(q-p<<2);if((m|0)==7){m=8;n=f;continue}else if((m|0)==11){g=0;break}m=m+1|0;n=n+32|0}while(1){G=c[a>>2]|0;j=c[f+96>>2]|0;e=j+G|0;k=a+32|0;F=c[k>>2]|0;w=c[f+64>>2]|0;A=w+F|0;p=a+64|0;E=c[p>>2]|0;l=c[f+32>>2]|0;H=l+E|0;b=a+96|0;D=c[b>>2]|0;t=c[f>>2]|0;v=t+D|0;x=a+128|0;C=c[x>>2]|0;y=a+224|0;q=c[y>>2]|0;z=q+C|0;s=a+160|0;B=c[s>>2]|0;m=a+192|0;r=c[m>>2]|0;u=r+B|0;h=u+e|0;u=e-u|0;e=A-z|0;n=v+H|0;v=H-v|0;j=G-j|0;w=F-w|0;l=E-l|0;t=D-t|0;q=C-q|0;r=B-r|0;c[a>>2]=((n+A+z+h|0)*7282|0)+16384>>15;c[m>>2]=((u-(e+v)|0)*7282|0)+16384>>15;c[x>>2]=((h-n|0)*8918|0)+16384>>15;c[p>>2]=((e-v|0)*7282|0)+16384+((u+v|0)*9947|0)>>15;p=(q+w|0)*3941|0;w=p+(w*5573|0)|0;q=p+(da(q,-13455)|0)|0;p=(l+j|0)*8170|0;v=(t+j|0)*6269|0;u=da(t+l|0,-1344)|0;e=da(l,-17036)|0;x=da(r,-8170)|0;l=da(r+l|0,-3941)|0;c[k>>2]=(da(j,-4229)|0)+16384+p+v+w+(r*1344|0)>>15;c[b>>2]=((j-t|0)*9514|0)+16384+q+l>>15;c[s>>2]=e+16384+p+u-q+(r*6269|0)>>15;c[y>>2]=(t*5285|0)+16384+u+v-w+x>>15;g=g+1|0;if((g|0)==6)break;else{a=a+4|0;f=f+4|0}}i=o;return}function pG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;n=i;i=i+64|0;f=n;sfa(a|0,0,256)|0;g=e+4|0;h=e+1|0;j=e+3|0;k=e+2|0;l=0;m=a;while(1){o=c[b+(l<<2)>>2]|0;v=d[o+e>>0]|0;q=d[o+g>>0]|0;s=q+v|0;u=d[o+h>>0]|0;p=d[o+j>>0]|0;r=p+u|0;o=d[o+k>>0]|0;t=r+s|0;q=v-q|0;p=u-p|0;c[m>>2]=(t+o<<2)+-2560;o=(t-(o<<2)|0)*2896|0;r=((s-r|0)*6476|0)+1024|0;c[m+8>>2]=r+o>>11;c[m+16>>2]=r-o>>11;o=(p+q|0)*6810|0;c[m+4>>2]=(q*4209|0)+1024+o>>11;c[m+12>>2]=(da(p,-17828)|0)+1024+o>>11;if((l|0)==7){l=8;m=f;continue}else if((l|0)==9){g=0;break}l=l+1|0;m=m+32|0}while(1){C=c[a>>2]|0;p=c[f+32>>2]|0;x=p+C|0;l=a+32|0;B=c[l>>2]|0;t=c[f>>2]|0;D=t+B|0;b=a+64|0;A=c[b>>2]|0;v=a+224|0;e=c[v>>2]|0;m=e+A|0;s=a+96|0;z=c[s>>2]|0;o=a+192|0;r=c[o>>2]|0;k=r+z|0;u=a+128|0;y=c[u>>2]|0;j=a+160|0;q=c[j>>2]|0;h=q+y|0;w=h+x|0;h=x-h|0;x=k+D|0;k=D-k|0;p=C-p|0;t=B-t|0;e=A-e|0;r=z-r|0;q=y-q|0;c[a>>2]=((x+m+w|0)*10486|0)+16384>>15;m=m<<1;c[u>>2]=(da(x-m|0,-4582)|0)+16384+((w-m|0)*11997|0)>>15;u=(h+k|0)*8716|0;c[b>>2]=(h*5387|0)+16384+u>>15;c[o>>2]=(da(k,-22820)|0)+16384+u>>15;o=q+p|0;u=t-r|0;c[j>>2]=((o-(u+e)|0)*10486|0)+16384>>15;e=e*10486|0;c[l>>2]=(p*14647|0)+16384+(t*13213|0)+e+(r*6732|0)+(q*2320|0)>>15;u=(u*5243|0)-e+((o+u|0)*3240|0)|0;t=((p-q|0)*9973|0)+(da(r+t|0,-6163)|0)+16384|0;c[s>>2]=t+u>>15;c[v>>2]=t-u>>15;g=g+1|0;if((g|0)==5)break;else{a=a+4|0;f=f+4|0}}i=n;return}function qG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;sfa(a|0,0,256)|0;f=e+3|0;g=e+1|0;h=e+2|0;i=0;j=a;while(1){k=c[b+(i<<2)>>2]|0;p=d[k+e>>0]|0;m=d[k+f>>0]|0;n=m+p|0;o=d[k+g>>0]|0;k=d[k+h>>0]|0;l=k+o|0;m=p-m|0;k=o-k|0;c[j>>2]=(l+n<<3)+-4096;c[j+8>>2]=n-l<<3;l=((k+m|0)*4433|0)+512|0;c[j+4>>2]=l+(m*6270|0)>>10;c[j+12>>2]=l+(da(k,-15137)|0)>>10;i=i+1|0;if((i|0)==8){f=0;break}else j=j+32|0}while(1){w=c[a>>2]|0;p=a+224|0;e=c[p>>2]|0;r=e+w|0;h=a+32|0;v=c[h>>2]|0;b=a+192|0;g=c[b>>2]|0;x=g+v|0;j=a+64|0;u=c[j>>2]|0;l=a+160|0;i=c[l>>2]|0;o=i+u|0;k=a+96|0;t=c[k>>2]|0;m=a+128|0;n=c[m>>2]|0;q=n+t|0;s=r+2+q|0;q=r-q|0;r=o+x|0;o=x-o|0;e=w-e|0;g=v-g|0;i=u-i|0;n=t-n|0;c[a>>2]=s+r>>2;c[m>>2]=s-r>>2;m=((q+o|0)*4433|0)+16384|0;c[j>>2]=m+(q*6270|0)>>15;c[b>>2]=m+(da(o,-15137)|0)>>15;b=i+e|0;o=n+g|0;m=((o+b|0)*9633|0)+16384|0;b=m+(da(b,-3196)|0)|0;o=m+(da(o,-16069)|0)|0;m=da(n+e|0,-7373)|0;j=da(i+g|0,-20995)|0;c[h>>2]=m+(e*12299|0)+b>>15;c[k>>2]=j+(g*25172|0)+o>>15;c[l>>2]=j+(i*16819|0)+b>>15;c[p>>2]=m+(n*2446|0)+o>>15;f=f+1|0;if((f|0)==4)break;else a=a+4|0}return}function rG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;sfa(a|0,0,256)|0;f=e+2|0;g=e+1|0;h=0;i=a;while(1){m=c[b+(h<<2)>>2]|0;k=d[m+e>>0]|0;j=d[m+f>>0]|0;l=j+k|0;m=d[m+g>>0]|0;c[i>>2]=(l+m<<3)+-3072;c[i+8>>2]=(((da(m,-2)|0)+l|0)*5793|0)+512>>10;c[i+4>>2]=((k-j|0)*10033|0)+512>>10;h=h+1|0;if((h|0)==6){f=0;break}else i=i+32|0}while(1){s=c[a>>2]|0;m=a+160|0;k=c[m>>2]|0;p=k+s|0;g=a+32|0;r=c[g>>2]|0;l=a+128|0;e=c[l>>2]|0;j=e+r|0;n=a+64|0;q=c[n>>2]|0;b=a+96|0;i=c[b>>2]|0;o=i+q|0;h=o+p|0;k=s-k|0;e=r-e|0;i=q-i|0;c[a>>2]=((h+j|0)*14564|0)+16384>>15;c[n>>2]=((p-o|0)*17837|0)+16384>>15;c[l>>2]=(((da(j,-2)|0)+h|0)*10298|0)+16384>>15;l=(i+k|0)*5331|0;c[g>>2]=((e+k|0)*14564|0)+16384+l>>15;c[b>>2]=((k-e-i|0)*14564|0)+16384>>15;c[m>>2]=((i-e|0)*14564|0)+16384+l>>15;f=f+1|0;if((f|0)==3)break;else a=a+4|0}return}function sG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;sfa(a|0,0,256)|0;f=e+1|0;k=c[b>>2]|0;h=d[k+e>>0]|0;k=d[k+f>>0]|0;o=(k+h<<3)+-2048|0;c[a>>2]=o;k=h-k<<3;h=a+4|0;c[h>>2]=k;l=a+32|0;j=c[b+4>>2]|0;i=d[j+e>>0]|0;j=d[j+f>>0]|0;n=(j+i<<3)+-2048|0;c[l>>2]=n;j=i-j<<3;c[a+36>>2]=j;i=c[b+8>>2]|0;m=d[i+e>>0]|0;i=d[i+f>>0]|0;g=(i+m<<3)+-2048|0;c[a+64>>2]=g;i=m-i<<3;c[a+68>>2]=i;b=c[b+12>>2]|0;m=d[b+e>>0]|0;f=d[b+f>>0]|0;e=(f+m<<3)+-2048|0;f=m-f<<3;m=e+o|0;b=g+n|0;e=o-e|0;g=n-g|0;c[a>>2]=b+m;c[a+64>>2]=m-b;b=((g+e|0)*4433|0)+4096|0;c[l>>2]=b+(e*6270|0)>>13;c[a+96>>2]=b+(da(g,-15137)|0)>>13;g=f+k|0;b=i+j|0;f=k-f|0;e=j-i|0;c[h>>2]=b+g;c[a+68>>2]=g-b;b=((e+f|0)*4433|0)+4096|0;c[a+36>>2]=b+(f*6270|0)>>13;c[a+100>>2]=b+(da(e,-15137)|0)>>13;return}function tG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0;sfa(a|0,0,256)|0;f=d[(c[b>>2]|0)+e>>0]|0;e=d[(c[b+4>>2]|0)+e>>0]|0;c[a>>2]=(e+f<<5)+-8192;c[a+32>>2]=f-e<<5;return}function uG(d,e,f,h,j){d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;s=i;i=i+256|0;r=s;q=c[d+300>>2]|0;o=8;k=c[e+84>>2]|0;l=r;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){t=+(b[f>>1]|0)*+g[k>>2];g[l>>2]=t;g[l+32>>2]=t;g[l+64>>2]=t;g[l+96>>2]=t;g[l+128>>2]=t;g[l+160>>2]=t;g[l+192>>2]=t;g[l+224>>2]=t}else{d=0;p=10}else p=10;if((p|0)==10){p=0;u=+(b[f>>1]|0)*+g[k>>2];A=+(d<<16>>16)*+g[k+64>>2];z=+(b[f+64>>1]|0)*+g[k+128>>2];w=+(b[f+96>>1]|0)*+g[k+192>>2];y=u+z;z=u-z;u=A+w;w=(A-w)*1.4142135381698608-u;A=y+u;u=y-u;y=z+w;w=z-w;z=+(e<<16>>16)*+g[k+32>>2];x=+(b[f+48>>1]|0)*+g[k+96>>2];C=+(b[f+80>>1]|0)*+g[k+160>>2];t=+(b[f+112>>1]|0)*+g[k+224>>2];v=x+C;x=C-x;C=z+t;t=z-t;z=v+C;B=(x+t)*1.8477590084075928;x=B-x*2.613126039505005-z;v=(C-v)*1.4142135381698608-x;t=B-t*1.0823922157287598-v;g[l>>2]=A+z;g[l+224>>2]=A-z;g[l+32>>2]=y+x;g[l+192>>2]=y-x;g[l+64>>2]=w+v;g[l+160>>2]=w-v;g[l+96>>2]=u+t;g[l+128>>2]=u-t}o=o+-1|0;if((o|0)<=0)break;else{f=f+2|0;k=k+4|0;l=l+4|0}}k=j+7|0;f=j+1|0;e=j+6|0;l=j+2|0;m=j+5|0;n=j+3|0;o=j+4|0;p=0;d=r;while(1){r=c[h+(p<<2)>>2]|0;t=+g[d>>2]+128.5;v=+g[d+16>>2];u=t+v;v=t-v;t=+g[d+8>>2];w=+g[d+24>>2];B=t+w;w=(t-w)*1.4142135381698608-B;t=u+B;B=u-B;u=v+w;w=v-w;v=+g[d+20>>2];y=+g[d+12>>2];A=v+y;y=v-y;v=+g[d+4>>2];C=+g[d+28>>2];z=v+C;C=v-C;v=A+z;x=(y+C)*1.8477590084075928;y=x-y*2.613126039505005-v;A=(z-A)*1.4142135381698608-y;C=x-C*1.0823922157287598-A;a[r+j>>0]=a[q+(~~(t+v)&1023)>>0]|0;a[r+k>>0]=a[q+(~~(t-v)&1023)>>0]|0;a[r+f>>0]=a[q+(~~(u+y)&1023)>>0]|0;a[r+e>>0]=a[q+(~~(u-y)&1023)>>0]|0;a[r+l>>0]=a[q+(~~(w+A)&1023)>>0]|0;a[r+m>>0]=a[q+(~~(w-A)&1023)>>0]|0;a[r+n>>0]=a[q+(~~(B+C)&1023)>>0]|0;a[r+o>>0]=a[q+(~~(B-C)&1023)>>0]|0;p=p+1|0;if((p|0)==8)break;else d=d+32|0}i=s;return}function vG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;w=i;i=i+256|0;t=w;u=c[d+300>>2]|0;l=8;j=c[e+84>>2]|0;k=t;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){s=da(b[f>>1]|0,c[j>>2]|0)|0;c[k>>2]=s;c[k+32>>2]=s;c[k+64>>2]=s;c[k+96>>2]=s;c[k+128>>2]=s;c[k+160>>2]=s;c[k+192>>2]=s;c[k+224>>2]=s}else{d=0;v=10}else v=10;if((v|0)==10){v=0;r=da(b[f>>1]|0,c[j>>2]|0)|0;n=da(d<<16>>16,c[j+64>>2]|0)|0;m=da(b[f+64>>1]|0,c[j+128>>2]|0)|0;p=da(b[f+96>>1]|0,c[j+192>>2]|0)|0;o=m+r|0;m=r-m|0;r=p+n|0;p=((n-p|0)*362>>8)-r|0;n=r+o|0;r=o-r|0;o=p+m|0;p=m-p|0;e=da(e<<16>>16,c[j+32>>2]|0)|0;m=da(b[f+48>>1]|0,c[j+96>>2]|0)|0;x=da(b[f+80>>1]|0,c[j+160>>2]|0)|0;d=da(b[f+112>>1]|0,c[j+224>>2]|0)|0;q=x+m|0;m=x-m|0;x=d+e|0;d=e-d|0;e=x+q|0;s=(d+m|0)*473>>8;m=((da(m,-669)|0)>>8)-e+s|0;q=((x-q|0)*362>>8)-m|0;s=q+((d*277>>8)-s)|0;c[k>>2]=e+n;c[k+224>>2]=n-e;c[k+32>>2]=m+o;c[k+192>>2]=o-m;c[k+64>>2]=q+p;c[k+160>>2]=p-q;c[k+128>>2]=s+r;c[k+96>>2]=r-s}l=l+-1|0;if((l|0)<=0)break;else{f=f+2|0;j=j+4|0;k=k+4|0}}k=h+1|0;m=h+2|0;n=h+3|0;o=h+4|0;p=h+5|0;q=h+6|0;r=h+7|0;s=0;l=t;while(1){j=c[g+(s<<2)>>2]|0;f=j+h|0;e=c[l+4>>2]|0;d=c[l+8>>2]|0;if(!(e|d))if(((((c[l+12>>2]|0)==0?(c[l+16>>2]|0)==0:0)?(c[l+20>>2]|0)==0:0)?(c[l+24>>2]|0)==0:0)?(c[l+28>>2]|0)==0:0){x=a[u+(((c[l>>2]|0)>>>5&1023)+128)>>0]|0;a[f>>0]=x;a[j+k>>0]=x;a[j+m>>0]=x;a[j+n>>0]=x;a[j+o>>0]=x;a[j+p>>0]=x;a[j+q>>0]=x;a[j+r>>0]=x}else{d=0;v=19}else v=19;if((v|0)==19){v=0;B=c[l>>2]|0;C=c[l+16>>2]|0;z=C+B|0;C=B-C|0;B=c[l+24>>2]|0;t=B+d|0;d=((d-B|0)*362>>8)-t|0;B=t+z|0;t=z-t|0;z=d+C|0;d=C-d|0;C=c[l+20>>2]|0;y=c[l+12>>2]|0;D=y+C|0;y=C-y|0;C=c[l+28>>2]|0;E=C+e|0;C=e-C|0;A=E+D|0;x=(C+y|0)*473>>8;y=((da(y,-669)|0)>>8)-A+x|0;e=((E-D|0)*362>>8)-y|0;x=e+((C*277>>8)-x)|0;a[f>>0]=a[u+(((A+B|0)>>>5&1023)+128)>>0]|0;a[j+r>>0]=a[u+(((B-A|0)>>>5&1023)+128)>>0]|0;a[j+k>>0]=a[u+(((y+z|0)>>>5&1023)+128)>>0]|0;a[j+q>>0]=a[u+(((z-y|0)>>>5&1023)+128)>>0]|0;a[j+m>>0]=a[u+(((e+d|0)>>>5&1023)+128)>>0]|0;a[j+p>>0]=a[u+(((d-e|0)>>>5&1023)+128)>>0]|0;a[j+o>>0]=a[u+(((x+t|0)>>>5&1023)+128)>>0]|0;a[j+n>>0]=a[u+(((t-x|0)>>>5&1023)+128)>>0]|0}s=s+1|0;if((s|0)==8)break;else l=l+32|0}i=w;return}function wG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;w=i;i=i+256|0;t=w;u=c[d+300>>2]|0;l=8;j=c[e+84>>2]|0;k=t;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){s=da(c[j>>2]<<2,b[f>>1]|0)|0;c[k>>2]=s;c[k+32>>2]=s;c[k+64>>2]=s;c[k+96>>2]=s;c[k+128>>2]=s;c[k+160>>2]=s;c[k+192>>2]=s;c[k+224>>2]=s}else{d=0;v=10}else v=10;if((v|0)==10){v=0;r=da(d<<16>>16,c[j+64>>2]|0)|0;p=da(b[f+96>>1]|0,c[j+192>>2]|0)|0;s=(p+r|0)*4433|0;r=s+(r*6270|0)|0;p=s+(da(p,-15137)|0)|0;s=da(c[j+128>>2]<<13,b[f+64>>1]|0)|0;n=da(c[j>>2]<<13,b[f>>1]|0)|0|1024;o=s+n|0;s=n-s|0;n=o+r|0;r=o-r|0;o=s+p|0;p=s-p|0;s=da(b[f+112>>1]|0,c[j+224>>2]|0)|0;y=da(b[f+80>>1]|0,c[j+160>>2]|0)|0;d=da(b[f+48>>1]|0,c[j+96>>2]|0)|0;e=da(e<<16>>16,c[j+32>>2]|0)|0;m=d+s|0;q=e+y|0;x=(q+m|0)*9633|0;m=x+(da(m,-16069)|0)|0;q=x+(da(q,-3196)|0)|0;x=da(e+s|0,-7373)|0;s=x+(s*2446|0)+m|0;e=x+(e*12299|0)+q|0;x=da(d+y|0,-20995)|0;q=x+(y*16819|0)+q|0;m=x+(d*25172|0)+m|0;c[k>>2]=e+n>>11;c[k+224>>2]=n-e>>11;c[k+32>>2]=m+o>>11;c[k+192>>2]=o-m>>11;c[k+64>>2]=q+p>>11;c[k+160>>2]=p-q>>11;c[k+96>>2]=s+r>>11;c[k+128>>2]=r-s>>11}l=l+-1|0;if((l|0)<=0)break;else{f=f+2|0;j=j+4|0;k=k+4|0}}k=h+1|0;m=h+2|0;n=h+3|0;o=h+4|0;p=h+5|0;q=h+6|0;r=h+7|0;s=0;l=t;while(1){j=c[g+(s<<2)>>2]|0;f=j+h|0;e=c[l+4>>2]|0;d=c[l+8>>2]|0;if(!(e|d))if(((((c[l+12>>2]|0)==0?(c[l+16>>2]|0)==0:0)?(c[l+20>>2]|0)==0:0)?(c[l+24>>2]|0)==0:0)?(c[l+28>>2]|0)==0:0){y=a[u+((((c[l>>2]|0)+16|0)>>>5&1023)+128)>>0]|0;a[f>>0]=y;a[j+k>>0]=y;a[j+m>>0]=y;a[j+n>>0]=y;a[j+o>>0]=y;a[j+p>>0]=y;a[j+q>>0]=y;a[j+r>>0]=y}else{d=0;v=19}else v=19;if((v|0)==19){v=0;B=c[l+24>>2]|0;y=(B+d|0)*4433|0;x=y+(d*6270|0)|0;d=y+(da(B,-15137)|0)|0;B=(c[l>>2]|0)+16|0;y=c[l+16>>2]|0;z=B+y<<13;y=B-y<<13;B=z+x|0;x=z-x|0;z=y+d|0;d=y-d|0;y=c[l+28>>2]|0;E=c[l+20>>2]|0;D=c[l+12>>2]|0;C=D+y|0;t=e+E|0;A=(t+C|0)*9633|0;C=A+(da(C,-16069)|0)|0;t=A+(da(t,-3196)|0)|0;A=da(e+y|0,-7373)|0;y=A+(y*2446|0)+C|0;A=A+(e*12299|0)+t|0;e=da(D+E|0,-20995)|0;t=e+(E*16819|0)+t|0;e=e+(D*25172|0)+C|0;a[f>>0]=a[u+(((A+B|0)>>>18&1023)+128)>>0]|0;a[j+r>>0]=a[u+(((B-A|0)>>>18&1023)+128)>>0]|0;a[j+k>>0]=a[u+(((e+z|0)>>>18&1023)+128)>>0]|0;a[j+q>>0]=a[u+(((z-e|0)>>>18&1023)+128)>>0]|0;a[j+m>>0]=a[u+(((t+d|0)>>>18&1023)+128)>>0]|0;a[j+p>>0]=a[u+(((d-t|0)>>>18&1023)+128)>>0]|0;a[j+n>>0]=a[u+(((y+x|0)>>>18&1023)+128)>>0]|0;a[j+o>>0]=a[u+(((x-y|0)>>>18&1023)+128)>>0]|0}s=s+1|0;if((s|0)==8)break;else l=l+32|0}i=w;return}function xG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;q=i;i=i+208|0;p=q;o=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=p;while(1){m=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;x=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;l=da(b[f+64>>1]|0,c[d+128>>2]|0)|0;v=da(b[f+96>>1]|0,c[d+192>>2]|0)|0;w=(l-v|0)*7223|0;n=(x-l|0)*2578|0;t=(da(l,-15083)|0)+m+n+w|0;k=v+x|0;r=(k*10438|0)+m|0;v=w+(da(v,-637)|0)+r|0;r=n+(da(x,-20239)|0)+r|0;x=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;n=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;w=da(b[f+80>>1]|0,c[d+160>>2]|0)|0;y=(n+x|0)*7663|0;u=(x-n|0)*1395|0;n=da(w+n|0,-11295)|0;s=y+u+n|0;x=(w+x|0)*5027|0;u=x+(y-u)|0;n=x+(w*15326|0)+n|0;c[e>>2]=u+v>>11;c[e+168>>2]=v-u>>11;c[e+28>>2]=s+t>>11;c[e+140>>2]=t-s>>11;c[e+56>>2]=n+r>>11;c[e+112>>2]=r-n>>11;c[e+84>>2]=((l-k|0)*11585|0)+m>>11;j=j+1|0;if((j|0)==7)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}e=h+6|0;k=h+1|0;l=h+5|0;m=h+2|0;j=h+4|0;f=h+3|0;n=0;d=p;while(1){y=c[g+(n<<2)>>2]|0;x=(c[d>>2]<<13)+131072|0;B=c[d+8>>2]|0;v=c[d+16>>2]|0;z=c[d+24>>2]|0;A=(v-z|0)*7223|0;u=(B-v|0)*2578|0;r=(da(v,-15083)|0)+x+u+A|0;w=z+B|0;t=(w*10438|0)+x|0;z=A+(da(z,-637)|0)+t|0;t=u+(da(B,-20239)|0)+t|0;B=c[d+4>>2]|0;u=c[d+12>>2]|0;A=c[d+20>>2]|0;C=(u+B|0)*7663|0;p=(B-u|0)*1395|0;u=da(A+u|0,-11295)|0;s=C+p+u|0;B=(A+B|0)*5027|0;p=C-p+B|0;u=B+(A*15326|0)+u|0;a[y+h>>0]=a[o+(((p+z|0)>>>18&1023)+128)>>0]|0;a[y+e>>0]=a[o+(((z-p|0)>>>18&1023)+128)>>0]|0;a[y+k>>0]=a[o+(((s+r|0)>>>18&1023)+128)>>0]|0;a[y+l>>0]=a[o+(((r-s|0)>>>18&1023)+128)>>0]|0;a[y+m>>0]=a[o+(((u+t|0)>>>18&1023)+128)>>0]|0;a[y+j>>0]=a[o+(((t-u|0)>>>18&1023)+128)>>0]|0;a[y+f>>0]=a[o+(((((v-w|0)*11585|0)+x|0)>>>18&1023)+128)>>0]|0;n=n+1|0;if((n|0)==7)break;else d=d+28|0}i=q;return}function yG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;p=i;i=i+144|0;o=p;n=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=o;while(1){q=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;k=da((c[d+128>>2]|0)*5793|0,b[f+64>>1]|0)|0;u=k+q|0;q=(da(k,-2)|0)+q>>11;k=da((c[d+64>>2]|0)*10033|0,b[f+32>>1]|0)|0;s=k+u|0;k=u-k|0;u=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;t=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;l=da(b[f+80>>1]|0,c[d+160>>2]|0)|0;m=(l+u|0)*2998|0;r=m+(t+u<<13)|0;m=m+(l-t<<13)|0;l=u-t-l<<2;c[e>>2]=r+s>>11;c[e+120>>2]=s-r>>11;c[e+24>>2]=l+q;c[e+96>>2]=q-l;c[e+48>>2]=m+k>>11;c[e+72>>2]=k-m>>11;j=j+1|0;if((j|0)==6)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}f=h+5|0;e=h+1|0;k=h+4|0;l=h+2|0;j=h+3|0;m=0;d=o;while(1){u=c[g+(m<<2)>>2]|0;s=(c[d>>2]<<13)+131072|0;q=(c[d+16>>2]|0)*5793|0;x=s+q|0;q=s-q-q|0;s=(c[d+8>>2]|0)*10033|0;v=x+s|0;s=x-s|0;x=c[d+4>>2]|0;w=c[d+12>>2]|0;r=c[d+20>>2]|0;t=(r+x|0)*2998|0;o=t+(w+x<<13)|0;t=t+(r-w<<13)|0;r=x-w-r<<13;a[u+h>>0]=a[n+(((o+v|0)>>>18&1023)+128)>>0]|0;a[u+f>>0]=a[n+(((v-o|0)>>>18&1023)+128)>>0]|0;a[u+e>>0]=a[n+(((r+q|0)>>>18&1023)+128)>>0]|0;a[u+k>>0]=a[n+(((q-r|0)>>>18&1023)+128)>>0]|0;a[u+l>>0]=a[n+(((t+s|0)>>>18&1023)+128)>>0]|0;a[u+j>>0]=a[n+(((s-t|0)>>>18&1023)+128)>>0]|0;m=m+1|0;if((m|0)==6)break;else d=d+24|0}i=p;return}function zG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;o=i;i=i+112|0;n=o;m=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=n;while(1){k=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;l=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;q=da(b[f+64>>1]|0,c[d+128>>2]|0)|0;p=(q+l|0)*6476|0;q=l-q|0;l=(q*2896|0)+k|0;r=l+p|0;p=l-p|0;k=(da(q,-11584)|0)+k|0;q=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;l=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;s=(l+q|0)*6810|0;q=s+(q*4209|0)|0;l=s+(da(l,-17828)|0)|0;c[e>>2]=q+r>>11;c[e+80>>2]=r-q>>11;c[e+20>>2]=l+p>>11;c[e+60>>2]=p-l>>11;c[e+40>>2]=k>>11;j=j+1|0;if((j|0)==5)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}f=h+4|0;e=h+1|0;j=h+3|0;k=h+2|0;l=0;d=n;while(1){s=c[g+(l<<2)>>2]|0;r=(c[d>>2]<<13)+131072|0;q=c[d+8>>2]|0;n=c[d+16>>2]|0;p=(n+q|0)*6476|0;n=q-n|0;q=(n*2896|0)+r|0;t=q+p|0;p=q-p|0;r=(da(n,-11584)|0)+r|0;n=c[d+4>>2]|0;q=c[d+12>>2]|0;u=(q+n|0)*6810|0;n=u+(n*4209|0)|0;q=u+(da(q,-17828)|0)|0;a[s+h>>0]=a[m+(((n+t|0)>>>18&1023)+128)>>0]|0;a[s+f>>0]=a[m+(((t-n|0)>>>18&1023)+128)>>0]|0;a[s+e>>0]=a[m+(((q+p|0)>>>18&1023)+128)>>0]|0;a[s+j>>0]=a[m+(((p-q|0)>>>18&1023)+128)>>0]|0;a[s+k>>0]=a[m+((r>>>18&1023)+128)>>0]|0;l=l+1|0;if((l|0)==5)break;else d=d+20|0}i=o;return}function AG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=i;i=i+64|0;m=n;l=c[d+300>>2]|0;k=0;d=c[e+84>>2]|0;j=m;while(1){p=da(b[f>>1]|0,c[d>>2]|0)|0;o=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;q=o+p<<2;o=p-o<<2;p=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;e=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;r=((e+p|0)*4433|0)+1024|0;p=r+(p*6270|0)>>11;e=r+(da(e,-15137)|0)>>11;c[j>>2]=p+q;c[j+48>>2]=q-p;c[j+16>>2]=e+o;c[j+32>>2]=o-e;k=k+1|0;if((k|0)==4)break;else{f=f+2|0;d=d+4|0;j=j+4|0}}f=h+3|0;j=h+1|0;e=h+2|0;k=0;d=m;while(1){r=c[g+(k<<2)>>2]|0;o=(c[d>>2]|0)+16|0;p=c[d+8>>2]|0;m=o+p<<13;p=o-p<<13;o=c[d+4>>2]|0;q=c[d+12>>2]|0;s=(q+o|0)*4433|0;o=s+(o*6270|0)|0;q=s+(da(q,-15137)|0)|0;a[r+h>>0]=a[l+(((o+m|0)>>>18&1023)+128)>>0]|0;a[r+f>>0]=a[l+(((m-o|0)>>>18&1023)+128)>>0]|0;a[r+j>>0]=a[l+(((q+p|0)>>>18&1023)+128)>>0]|0;a[r+e>>0]=a[l+(((p-q|0)>>>18&1023)+128)>>0]|0;k=k+1|0;if((k|0)==4)break;else d=d+16|0}i=n;return}function BG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=i;i=i+48|0;l=j;d=c[d+300>>2]|0;n=c[e+84>>2]|0;o=da(c[n>>2]<<13,b[f>>1]|0)|0|1024;m=da((c[n+64>>2]|0)*5793|0,b[f+32>>1]|0)|0;q=m+o|0;o=(da(m,-2)|0)+o|0;m=da((c[n+32>>2]|0)*10033|0,b[f+16>>1]|0)|0;p=m+q>>11;c[l>>2]=p;c[l+24>>2]=q-m>>11;m=l+12|0;c[m>>2]=o>>11;o=da(c[n+4>>2]<<13,b[f+2>>1]|0)|0|1024;q=da((c[n+68>>2]|0)*5793|0,b[f+34>>1]|0)|0;t=q+o|0;o=(da(q,-2)|0)+o|0;q=da((c[n+36>>2]|0)*10033|0,b[f+18>>1]|0)|0;r=q+t>>11;c[l+4>>2]=r;c[l+28>>2]=t-q>>11;o=o>>11;c[l+16>>2]=o;q=da(c[n+8>>2]<<13,b[f+4>>1]|0)|0|1024;t=da((c[n+72>>2]|0)*5793|0,b[f+36>>1]|0)|0;k=t+q|0;q=(da(t,-2)|0)+q|0;n=da((c[n+40>>2]|0)*10033|0,b[f+20>>1]|0)|0;t=n+k>>11;c[l+8>>2]=t;n=k-n>>11;c[l+32>>2]=n;q=q>>11;c[l+20>>2]=q;k=h+2|0;e=h+1|0;f=c[g>>2]|0;p=(p<<13)+131072|0;s=p+(t*5793|0)|0;p=(da(t,-11586)|0)+p|0;r=r*10033|0;a[f+h>>0]=a[d+(((s+r|0)>>>18&1023)+128)>>0]|0;a[f+k>>0]=a[d+(((s-r|0)>>>18&1023)+128)>>0]|0;a[f+e>>0]=a[d+((p>>>18&1023)+128)>>0]|0;f=c[g+4>>2]|0;m=(c[m>>2]<<13)+131072|0;p=m+(q*5793|0)|0;m=(da(q,-11586)|0)+m|0;o=o*10033|0;a[f+h>>0]=a[d+(((p+o|0)>>>18&1023)+128)>>0]|0;a[f+k>>0]=a[d+(((p-o|0)>>>18&1023)+128)>>0]|0;a[f+e>>0]=a[d+((m>>>18&1023)+128)>>0]|0;g=c[g+8>>2]|0;f=(c[l+24>>2]<<13)+131072|0;m=f+(n*5793|0)|0;f=(da(n,-11586)|0)+f|0;l=(c[l+28>>2]|0)*10033|0;a[g+h>>0]=a[d+(((m+l|0)>>>18&1023)+128)>>0]|0;a[g+k>>0]=a[d+(((m-l|0)>>>18&1023)+128)>>0]|0;a[g+e>>0]=a[d+((f>>>18&1023)+128)>>0]|0;i=j;return}function CG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;i=c[d+300>>2]|0;k=c[e+84>>2]|0;j=da(b[f>>1]|0,c[k>>2]|0)|0;d=da(b[f+16>>1]|0,c[k+32>>2]|0)|0;j=j+4|0;l=d+j|0;d=j-d|0;j=da(b[f+2>>1]|0,c[k+4>>2]|0)|0;f=da(b[f+18>>1]|0,c[k+36>>2]|0)|0;k=f+j|0;f=j-f|0;j=c[g>>2]|0;a[j+h>>0]=a[i+(((k+l|0)>>>3&1023)+128)>>0]|0;e=h+1|0;a[j+e>>0]=a[i+(((l-k|0)>>>3&1023)+128)>>0]|0;g=c[g+4>>2]|0;a[g+h>>0]=a[i+(((f+d|0)>>>3&1023)+128)>>0]|0;a[g+e>>0]=a[i+(((d-f|0)>>>3&1023)+128)>>0]|0;return}function DG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;e=a[(c[d+300>>2]|0)+((((da(b[f>>1]|0,c[c[e+84>>2]>>2]|0)|0)+4|0)>>>3&1023)+128)>>0]|0;a[(c[g>>2]|0)+h>>0]=e;return}function EG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;s=i;i=i+288|0;r=s;q=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=r;while(1){o=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;x=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;k=da(b[f+64>>1]|0,c[d+128>>2]|0)|0;p=da((c[d+192>>2]|0)*5793|0,b[f+96>>1]|0)|0;w=p+o|0;p=o-p-p|0;o=x-k|0;t=p+(o*5793|0)|0;p=(da(o,-11586)|0)+p|0;o=(k+x|0)*10887|0;x=x*8875|0;k=k*2012|0;v=o-k+w|0;o=w-o+x|0;k=w-x+k|0;x=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;w=da(b[f+80>>1]|0,c[d+160>>2]|0)|0;n=da(b[f+112>>1]|0,c[d+224>>2]|0)|0;y=da(da(c[d+96>>2]|0,-10033)|0,b[f+48>>1]|0)|0;l=(w+x|0)*7447|0;m=(n+x|0)*3962|0;u=l-y+m|0;z=(w-n|0)*11409|0;l=y-z+l|0;m=z+y+m|0;n=(x-w-n|0)*10033|0;c[e>>2]=u+v>>11;c[e+256>>2]=v-u>>11;c[e+32>>2]=n+t>>11;c[e+224>>2]=t-n>>11;c[e+64>>2]=l+o>>11;c[e+192>>2]=o-l>>11;c[e+96>>2]=m+k>>11;c[e+160>>2]=k-m>>11;c[e+128>>2]=p>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}l=h+8|0;m=h+1|0;n=h+7|0;o=h+2|0;j=h+6|0;f=h+3|0;e=h+5|0;k=h+4|0;p=0;d=r;while(1){z=c[g+(p<<2)>>2]|0;u=(c[d>>2]<<13)+131072|0;D=c[d+8>>2]|0;w=c[d+16>>2]|0;y=(c[d+24>>2]|0)*5793|0;C=y+u|0;y=u-y-y|0;u=D-w|0;r=y+(u*5793|0)|0;y=(da(u,-11586)|0)+y|0;u=(w+D|0)*10887|0;D=D*8875|0;w=w*2012|0;B=u-w+C|0;u=C-u+D|0;w=C-D+w|0;D=c[d+4>>2]|0;C=c[d+20>>2]|0;t=c[d+28>>2]|0;E=da(c[d+12>>2]|0,-10033)|0;v=(C+D|0)*7447|0;x=(t+D|0)*3962|0;A=v-E+x|0;F=(C-t|0)*11409|0;v=E-F+v|0;x=F+E+x|0;t=(D-C-t|0)*10033|0;a[z+h>>0]=a[q+(((A+B|0)>>>18&1023)+128)>>0]|0;a[z+l>>0]=a[q+(((B-A|0)>>>18&1023)+128)>>0]|0;a[z+m>>0]=a[q+(((t+r|0)>>>18&1023)+128)>>0]|0;a[z+n>>0]=a[q+(((r-t|0)>>>18&1023)+128)>>0]|0;a[z+o>>0]=a[q+(((v+u|0)>>>18&1023)+128)>>0]|0;a[z+j>>0]=a[q+(((u-v|0)>>>18&1023)+128)>>0]|0;a[z+f>>0]=a[q+(((x+w|0)>>>18&1023)+128)>>0]|0;a[z+e>>0]=a[q+(((w-x|0)>>>18&1023)+128)>>0]|0;a[z+k>>0]=a[q+((y>>>18&1023)+128)>>0]|0;p=p+1|0;if((p|0)==9)break;else d=d+32|0}i=s;return}function FG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;t=i;i=i+320|0;s=t;r=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=s;while(1){o=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;p=da(b[f+64>>1]|0,c[d+128>>2]|0)|0;u=(p*9373|0)+o|0;x=(da(p,-3580)|0)+o|0;o=(da(p,-11586)|0)+o>>11;p=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;k=da(b[f+96>>1]|0,c[d+192>>2]|0)|0;w=(k+p|0)*6810|0;p=w+(p*4209|0)|0;k=w+(da(k,-17828)|0)|0;w=p+u|0;p=u-p|0;u=k+x|0;k=x-k|0;x=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;y=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;n=da(b[f+80>>1]|0,c[d+160>>2]|0)|0;l=da(b[f+112>>1]|0,c[d+224>>2]|0)|0;m=l+y|0;l=y-l|0;y=l*2531|0;z=n<<13;A=m*7791|0;q=y+z|0;v=A+(x*11443|0)+q|0;q=(x*1812|0)-A+q|0;m=m*4815|0;y=z-y-(l<<12)|0;l=x-n-l<<2;n=(x*10323|0)-m-y|0;m=y+((x*5260|0)-m)|0;c[e>>2]=v+w>>11;c[e+288>>2]=w-v>>11;c[e+32>>2]=n+u>>11;c[e+256>>2]=u-n>>11;c[e+64>>2]=l+o;c[e+224>>2]=o-l;c[e+96>>2]=m+k>>11;c[e+192>>2]=k-m>>11;c[e+128>>2]=q+p>>11;c[e+160>>2]=p-q>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+9|0;n=h+1|0;o=h+8|0;p=h+2|0;j=h+7|0;f=h+3|0;e=h+6|0;k=h+4|0;l=h+5|0;q=0;d=s;while(1){A=c[g+(q<<2)>>2]|0;y=(c[d>>2]<<13)+131072|0;u=c[d+16>>2]|0;B=y+(u*9373|0)|0;E=y+(da(u,-3580)|0)|0;u=y+(da(u,-11586)|0)|0;y=c[d+8>>2]|0;w=c[d+24>>2]|0;D=(w+y|0)*6810|0;y=D+(y*4209|0)|0;w=D+(da(w,-17828)|0)|0;D=y+B|0;y=B-y|0;B=w+E|0;w=E-w|0;E=c[d+4>>2]|0;F=c[d+12>>2]|0;v=c[d+20>>2]<<13;s=c[d+28>>2]|0;x=s+F|0;s=F-s|0;F=s*2531|0;G=x*7791|0;z=F+v|0;C=G+(E*11443|0)+z|0;z=(E*1812|0)-G+z|0;x=x*4815|0;F=v-F-(s<<12)|0;v=(E-s<<13)-v|0;s=(E*10323|0)-x-F|0;x=F+((E*5260|0)-x)|0;a[A+h>>0]=a[r+(((C+D|0)>>>18&1023)+128)>>0]|0;a[A+m>>0]=a[r+(((D-C|0)>>>18&1023)+128)>>0]|0;a[A+n>>0]=a[r+(((s+B|0)>>>18&1023)+128)>>0]|0;a[A+o>>0]=a[r+(((B-s|0)>>>18&1023)+128)>>0]|0;a[A+p>>0]=a[r+(((v+u|0)>>>18&1023)+128)>>0]|0;a[A+j>>0]=a[r+(((u-v|0)>>>18&1023)+128)>>0]|0;a[A+f>>0]=a[r+(((x+w|0)>>>18&1023)+128)>>0]|0;a[A+e>>0]=a[r+(((w-x|0)>>>18&1023)+128)>>0]|0;a[A+k>>0]=a[r+(((z+y|0)>>>18&1023)+128)>>0]|0;a[A+l>>0]=a[r+(((y-z|0)>>>18&1023)+128)>>0]|0;q=q+1|0;if((q|0)==10)break;else d=d+32|0}i=t;return}function GG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;u=i;i=i+352|0;t=u;s=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=t;while(1){r=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;z=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;A=da(b[f+64>>1]|0,c[d+128>>2]|0)|0;o=da(b[f+96>>1]|0,c[d+192>>2]|0)|0;x=(A-o|0)*20862|0;k=(A-z|0)*3529|0;p=o+z|0;w=p-A|0;y=(w*11116|0)+r|0;v=k+(da(A,-14924)|0)+x+y|0;x=x+(o*17333|0)+y|0;k=k+(da(z,-12399)|0)+y|0;p=y+(da(p,-9467)|0)|0;o=p+(da(o,-6461)|0)|0;p=(A*15929|0)+(da(z,-11395)|0)+p|0;r=(da(w,-11585)|0)+r|0;w=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;z=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;A=da(b[f+80>>1]|0,c[d+160>>2]|0)|0;y=da(b[f+112>>1]|0,c[d+224>>2]|0)|0;C=z+w|0;q=(A+C+y|0)*3264|0;C=C*7274|0;l=(A+w|0)*5492|0;m=q+((y+w|0)*3e3|0)|0;w=C+(da(w,-7562)|0)+l+m|0;n=q+(da(A+z|0,-9527)|0)|0;l=l+(da(A,-9766)|0)+n|0;B=da(y+z|0,-14731)|0;n=C+(z*16984|0)+B+n|0;m=B+(y*17223|0)+m|0;q=(A*8203|0)+(da(z,-12019)|0)+(da(y,-13802)|0)+q|0;c[e>>2]=w+x>>11;c[e+320>>2]=x-w>>11;c[e+32>>2]=n+v>>11;c[e+288>>2]=v-n>>11;c[e+64>>2]=l+o>>11;c[e+256>>2]=o-l>>11;c[e+96>>2]=m+k>>11;c[e+224>>2]=k-m>>11;c[e+128>>2]=q+p>>11;c[e+192>>2]=p-q>>11;c[e+160>>2]=r>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+10|0;o=h+1|0;p=h+9|0;q=h+2|0;j=h+8|0;f=h+3|0;e=h+7|0;k=h+4|0;l=h+6|0;n=h+5|0;r=0;d=t;while(1){C=c[g+(r<<2)>>2]|0;B=(c[d>>2]<<13)+131072|0;H=c[d+8>>2]|0;I=c[d+16>>2]|0;v=c[d+24>>2]|0;F=(I-v|0)*20862|0;x=(I-H|0)*3529|0;z=v+H|0;E=z-I|0;G=(E*11116|0)+B|0;D=x+(da(I,-14924)|0)+F+G|0;F=F+(v*17333|0)+G|0;x=x+(da(H,-12399)|0)+G|0;z=G+(da(z,-9467)|0)|0;v=z+(da(v,-6461)|0)|0;z=(I*15929|0)+(da(H,-11395)|0)+z|0;B=(da(E,-11585)|0)+B|0;E=c[d+4>>2]|0;H=c[d+12>>2]|0;I=c[d+20>>2]|0;G=c[d+28>>2]|0;K=H+E|0;A=(K+I+G|0)*3264|0;K=K*7274|0;w=(I+E|0)*5492|0;y=A+((G+E|0)*3e3|0)|0;E=K+(da(E,-7562)|0)+w+y|0;t=A+(da(I+H|0,-9527)|0)|0;w=w+(da(I,-9766)|0)+t|0;J=da(G+H|0,-14731)|0;t=K+(H*16984|0)+J+t|0;y=J+(G*17223|0)+y|0;A=(I*8203|0)+(da(H,-12019)|0)+(da(G,-13802)|0)+A|0;a[C+h>>0]=a[s+(((E+F|0)>>>18&1023)+128)>>0]|0;a[C+m>>0]=a[s+(((F-E|0)>>>18&1023)+128)>>0]|0;a[C+o>>0]=a[s+(((t+D|0)>>>18&1023)+128)>>0]|0;a[C+p>>0]=a[s+(((D-t|0)>>>18&1023)+128)>>0]|0;a[C+q>>0]=a[s+(((w+v|0)>>>18&1023)+128)>>0]|0;a[C+j>>0]=a[s+(((v-w|0)>>>18&1023)+128)>>0]|0;a[C+f>>0]=a[s+(((y+x|0)>>>18&1023)+128)>>0]|0;a[C+e>>0]=a[s+(((x-y|0)>>>18&1023)+128)>>0]|0;a[C+k>>0]=a[s+(((A+z|0)>>>18&1023)+128)>>0]|0;a[C+l>>0]=a[s+(((z-A|0)>>>18&1023)+128)>>0]|0;a[C+n>>0]=a[s+((B>>>18&1023)+128)>>0]|0;r=r+1|0;if((r|0)==11)break;else d=d+32|0}i=u;return}function HG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;v=i;i=i+384|0;u=v;t=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=u;while(1){r=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;A=da((c[d+128>>2]|0)*10033|0,b[f+64>>1]|0)|0;z=A+r|0;A=r-A|0;o=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;k=da(c[d+192>>2]<<13,b[f+96>>1]|0)|0;p=(o<<13)-k|0;w=p+r|0;p=r-p|0;r=k+(o*11190|0)|0;y=r+z|0;r=z-r|0;k=(o*2998|0)-k|0;o=k+A|0;k=A-k|0;A=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;z=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;q=da(b[f+80>>1]|0,c[d+160>>2]|0)|0;n=da(b[f+112>>1]|0,c[d+224>>2]|0)|0;C=z*10703|0;B=da(z,-4433)|0;l=q+A|0;s=(n+l|0)*7053|0;l=s+(l*2139|0)|0;x=C+(A*2295|0)+l|0;m=da(n+q|0,-8565)|0;l=(da(q,-12112)|0)+B+m+l|0;m=(n*12998|0)-C+s+m|0;s=B+(da(A,-5540)|0)+(da(n,-16244)|0)+s|0;n=A-n|0;q=z-q|0;z=(n+q|0)*4433|0;n=z+(n*6270|0)|0;q=z+(da(q,-15137)|0)|0;c[e>>2]=x+y>>11;c[e+352>>2]=y-x>>11;c[e+32>>2]=n+w>>11;c[e+320>>2]=w-n>>11;c[e+64>>2]=l+o>>11;c[e+288>>2]=o-l>>11;c[e+96>>2]=m+k>>11;c[e+256>>2]=k-m>>11;c[e+128>>2]=q+p>>11;c[e+224>>2]=p-q>>11;c[e+160>>2]=s+r>>11;c[e+192>>2]=r-s>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+11|0;p=h+1|0;q=h+10|0;r=h+2|0;j=h+9|0;f=h+3|0;e=h+8|0;k=h+4|0;l=h+7|0;n=h+5|0;o=h+6|0;s=0;d=u;while(1){C=c[g+(s<<2)>>2]|0;A=(c[d>>2]<<13)+131072|0;J=(c[d+16>>2]|0)*10033|0;I=A+J|0;J=A-J|0;D=c[d+8>>2]|0;w=c[d+24>>2]<<13;y=(D<<13)-w|0;F=y+A|0;y=A-y|0;A=w+(D*11190|0)|0;H=A+I|0;A=I-A|0;w=(D*2998|0)-w|0;D=w+J|0;w=J-w|0;J=c[d+4>>2]|0;I=c[d+12>>2]|0;z=c[d+20>>2]|0;E=c[d+28>>2]|0;L=I*10703|0;K=da(I,-4433)|0;u=z+J|0;B=(u+E|0)*7053|0;u=B+(u*2139|0)|0;G=L+(J*2295|0)+u|0;x=da(E+z|0,-8565)|0;u=(da(z,-12112)|0)+K+x+u|0;x=(E*12998|0)-L+B+x|0;B=K+(da(J,-5540)|0)+(da(E,-16244)|0)+B|0;E=J-E|0;z=I-z|0;I=(E+z|0)*4433|0;E=I+(E*6270|0)|0;z=I+(da(z,-15137)|0)|0;a[C+h>>0]=a[t+(((G+H|0)>>>18&1023)+128)>>0]|0;a[C+m>>0]=a[t+(((H-G|0)>>>18&1023)+128)>>0]|0;a[C+p>>0]=a[t+(((E+F|0)>>>18&1023)+128)>>0]|0;a[C+q>>0]=a[t+(((F-E|0)>>>18&1023)+128)>>0]|0;a[C+r>>0]=a[t+(((u+D|0)>>>18&1023)+128)>>0]|0;a[C+j>>0]=a[t+(((D-u|0)>>>18&1023)+128)>>0]|0;a[C+f>>0]=a[t+(((x+w|0)>>>18&1023)+128)>>0]|0;a[C+e>>0]=a[t+(((w-x|0)>>>18&1023)+128)>>0]|0;a[C+k>>0]=a[t+(((z+y|0)>>>18&1023)+128)>>0]|0;a[C+l>>0]=a[t+(((y-z|0)>>>18&1023)+128)>>0]|0;a[C+n>>0]=a[t+(((B+A|0)>>>18&1023)+128)>>0]|0;a[C+o>>0]=a[t+(((A-B|0)>>>18&1023)+128)>>0]|0;s=s+1|0;if((s|0)==12)break;else d=d+32|0}i=v;return}function IG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;w=i;i=i+416|0;v=w;u=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=v;while(1){t=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;s=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;k=da(b[f+64>>1]|0,c[d+128>>2]|0)|0;r=da(b[f+96>>1]|0,c[d+192>>2]|0)|0;m=r+k|0;r=k-r|0;k=m*9465|0;x=(r*793|0)+t|0;B=k+(s*11249|0)+x|0;x=(s*4108|0)-k+x|0;k=m*2592|0;p=(r*3989|0)+t|0;z=(s*8672|0)-k+p|0;p=k+(da(s,-10258)|0)+p|0;m=m*3570|0;k=t+(da(r,-7678)|0)|0;o=(da(s,-1396)|0)-m+k|0;k=m+(da(s,-6581)|0)+k|0;m=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;F=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;D=da(b[f+80>>1]|0,c[d+160>>2]|0)|0;C=da(b[f+112>>1]|0,c[d+224>>2]|0)|0;y=(F+m|0)*10832|0;n=(D+m|0)*9534|0;q=C+m|0;E=q*7682|0;A=y+(da(m,-16549)|0)+n+E|0;H=da(D+F|0,-2773)|0;G=da(C+F|0,-9534)|0;y=y+(F*6859|0)+H+G|0;l=da(C+D|0,-5384)|0;n=H+(da(D,-12879)|0)+n+l|0;l=G+(C*18068|0)+E+l|0;q=q*2773|0;E=(D-F|0)*7682|0;m=(da(F,-3818)|0)+(m*2611|0)+E+q|0;q=E+(D*3150|0)+(da(C,-14273)|0)+q|0;c[e>>2]=A+B>>11;c[e+384>>2]=B-A>>11;c[e+32>>2]=y+z>>11;c[e+352>>2]=z-y>>11;c[e+64>>2]=n+x>>11;c[e+320>>2]=x-n>>11;c[e+96>>2]=l+o>>11;c[e+288>>2]=o-l>>11;c[e+128>>2]=m+k>>11;c[e+256>>2]=k-m>>11;c[e+160>>2]=q+p>>11;c[e+224>>2]=p-q>>11;c[e+192>>2]=((r-s|0)*11585|0)+t>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+12|0;q=h+1|0;r=h+11|0;s=h+2|0;j=h+10|0;f=h+3|0;e=h+9|0;k=h+4|0;l=h+8|0;n=h+5|0;o=h+7|0;p=h+6|0;t=0;d=v;while(1){H=c[g+(t<<2)>>2]|0;G=(c[d>>2]<<13)+131072|0;E=c[d+8>>2]|0;z=c[d+16>>2]|0;D=c[d+24>>2]|0;A=D+z|0;D=z-D|0;z=A*9465|0;F=(D*793|0)+G|0;L=z+(E*11249|0)+F|0;F=(E*4108|0)-z+F|0;z=A*2592|0;B=(D*3989|0)+G|0;J=(E*8672|0)-z+B|0;B=z+(da(E,-10258)|0)+B|0;A=A*3570|0;z=G+(da(D,-7678)|0)|0;x=(da(E,-1396)|0)-A+z|0;z=A+(da(E,-6581)|0)+z|0;A=c[d+4>>2]|0;P=c[d+12>>2]|0;N=c[d+20>>2]|0;M=c[d+28>>2]|0;I=(P+A|0)*10832|0;v=(N+A|0)*9534|0;C=M+A|0;O=C*7682|0;K=I+(da(A,-16549)|0)+v+O|0;R=da(N+P|0,-2773)|0;Q=da(M+P|0,-9534)|0;I=I+(P*6859|0)+R+Q|0;y=da(M+N|0,-5384)|0;v=R+(da(N,-12879)|0)+v+y|0;y=Q+(M*18068|0)+O+y|0;C=C*2773|0;O=(N-P|0)*7682|0;A=(da(P,-3818)|0)+(A*2611|0)+O+C|0;C=O+(N*3150|0)+(da(M,-14273)|0)+C|0;a[H+h>>0]=a[u+(((K+L|0)>>>18&1023)+128)>>0]|0;a[H+m>>0]=a[u+(((L-K|0)>>>18&1023)+128)>>0]|0;a[H+q>>0]=a[u+(((I+J|0)>>>18&1023)+128)>>0]|0;a[H+r>>0]=a[u+(((J-I|0)>>>18&1023)+128)>>0]|0;a[H+s>>0]=a[u+(((v+F|0)>>>18&1023)+128)>>0]|0;a[H+j>>0]=a[u+(((F-v|0)>>>18&1023)+128)>>0]|0;a[H+f>>0]=a[u+(((y+x|0)>>>18&1023)+128)>>0]|0;a[H+e>>0]=a[u+(((x-y|0)>>>18&1023)+128)>>0]|0;a[H+k>>0]=a[u+(((A+z|0)>>>18&1023)+128)>>0]|0;a[H+l>>0]=a[u+(((z-A|0)>>>18&1023)+128)>>0]|0;a[H+n>>0]=a[u+(((C+B|0)>>>18&1023)+128)>>0]|0;a[H+o>>0]=a[u+(((B-C|0)>>>18&1023)+128)>>0]|0;a[H+p>>0]=a[u+(((((D-E|0)*11585|0)+G|0)>>>18&1023)+128)>>0]|0;t=t+1|0;if((t|0)==13)break;else d=d+32|0}i=w;return}function JG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;x=i;i=i+448|0;w=x;v=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=w;while(1){k=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;p=da(b[f+64>>1]|0,c[d+128>>2]|0)|0;y=(p*10438|0)+k|0;o=(p*2578|0)+k|0;u=(da(p,-7223)|0)+k|0;k=(da(p,-11586)|0)+k>>11;p=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;A=da(b[f+96>>1]|0,c[d+192>>2]|0)|0;r=(A+p|0)*9058|0;t=r+(p*2237|0)|0;r=r+(da(A,-14084)|0)|0;p=(da(A,-11295)|0)+(p*5027|0)|0;A=t+y|0;t=y-t|0;y=r+o|0;r=o-r|0;o=p+u|0;p=u-p|0;u=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;D=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;B=da(b[f+80>>1]|0,c[d+160>>2]|0)|0;m=da(b[f+112>>1]|0,c[d+224>>2]|0)|0;q=m<<13;F=B+u|0;n=(D+u|0)*10935|0;E=F*9810|0;z=n+(da(u,-9232)|0)+E+q|0;F=F*6164|0;C=u-D|0;s=(C*3826|0)-q|0;u=F+(da(u,-8693)|0)+s|0;l=(da(B+D|0,-1297)|0)-q|0;n=n+(da(D,-3474)|0)+l|0;l=E+(da(B,-19447)|0)+l|0;E=(B-D|0)*11512|0;q=E+(da(B,-13850)|0)+F+q|0;s=E+(D*5529|0)+s|0;m=C-B+m<<2;c[e>>2]=z+A>>11;c[e+416>>2]=A-z>>11;c[e+32>>2]=n+y>>11;c[e+384>>2]=y-n>>11;c[e+64>>2]=l+o>>11;c[e+352>>2]=o-l>>11;c[e+96>>2]=m+k;c[e+320>>2]=k-m;c[e+128>>2]=q+p>>11;c[e+288>>2]=p-q>>11;c[e+160>>2]=s+r>>11;c[e+256>>2]=r-s>>11;c[e+192>>2]=u+t>>11;c[e+224>>2]=t-u>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+13|0;r=h+1|0;s=h+12|0;t=h+2|0;j=h+11|0;f=h+3|0;e=h+10|0;k=h+4|0;l=h+9|0;n=h+5|0;o=h+8|0;p=h+6|0;q=h+7|0;u=0;d=w;while(1){E=c[g+(u<<2)>>2]|0;y=(c[d>>2]<<13)+131072|0;F=c[d+16>>2]|0;J=y+(F*10438|0)|0;H=y+(F*2578|0)|0;D=y+(da(F,-7223)|0)|0;F=y+(da(F,-11586)|0)|0;y=c[d+8>>2]|0;L=c[d+24>>2]|0;A=(L+y|0)*9058|0;C=A+(y*2237|0)|0;A=A+(da(L,-14084)|0)|0;y=(da(L,-11295)|0)+(y*5027|0)|0;L=C+J|0;C=J-C|0;J=A+H|0;A=H-A|0;H=y+D|0;y=D-y|0;D=c[d+4>>2]|0;O=c[d+12>>2]|0;M=c[d+20>>2]|0;w=c[d+28>>2]<<13;z=M+D|0;I=(O+D|0)*10935|0;P=z*9810|0;K=I+(da(D,-9232)|0)+P+w|0;z=z*6164|0;N=D-O|0;B=(N*3826|0)-w|0;D=z+(da(D,-8693)|0)+B|0;G=(da(M+O|0,-1297)|0)-w|0;I=I+(da(O,-3474)|0)+G|0;G=P+(da(M,-19447)|0)+G|0;P=(M-O|0)*11512|0;z=w+(da(M,-13850)|0)+P+z|0;B=P+(O*5529|0)+B|0;w=(N-M<<13)+w|0;a[E+h>>0]=a[v+(((K+L|0)>>>18&1023)+128)>>0]|0;a[E+m>>0]=a[v+(((L-K|0)>>>18&1023)+128)>>0]|0;a[E+r>>0]=a[v+(((I+J|0)>>>18&1023)+128)>>0]|0;a[E+s>>0]=a[v+(((J-I|0)>>>18&1023)+128)>>0]|0;a[E+t>>0]=a[v+(((G+H|0)>>>18&1023)+128)>>0]|0;a[E+j>>0]=a[v+(((H-G|0)>>>18&1023)+128)>>0]|0;a[E+f>>0]=a[v+(((w+F|0)>>>18&1023)+128)>>0]|0;a[E+e>>0]=a[v+(((F-w|0)>>>18&1023)+128)>>0]|0;a[E+k>>0]=a[v+(((z+y|0)>>>18&1023)+128)>>0]|0;a[E+l>>0]=a[v+(((y-z|0)>>>18&1023)+128)>>0]|0;a[E+n>>0]=a[v+(((B+A|0)>>>18&1023)+128)>>0]|0;a[E+o>>0]=a[v+(((A-B|0)>>>18&1023)+128)>>0]|0;a[E+p>>0]=a[v+(((D+C|0)>>>18&1023)+128)>>0]|0;a[E+q>>0]=a[v+(((C-D|0)>>>18&1023)+128)>>0]|0;u=u+1|0;if((u|0)==14)break;else d=d+32|0}i=x;return}function KG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;y=i;i=i+480|0;x=y;w=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=x;while(1){v=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;p=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;o=da(b[f+64>>1]|0,c[d+128>>2]|0)|0;m=da(b[f+96>>1]|0,c[d+192>>2]|0)|0;z=(da(m,-3580)|0)+v|0;D=(m*9373|0)+v|0;v=(da(m,-11586)|0)+v|0;m=p-o|0;o=o+p|0;E=o*10958|0;k=m*374|0;p=p*11795|0;B=k+E+D|0;k=p-E+k+z|0;E=o*4482|0;t=da(m,-3271)|0;r=D-E+t|0;t=E-p+t+z|0;o=o*6476|0;p=m*2896|0;z=p+o+z|0;p=D-o+p|0;o=v+(m*5792|0)|0;v=(da(m,-11584)|0)+v|0;m=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;D=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;E=da((c[d+160>>2]|0)*10033|0,b[f+80>>1]|0)|0;C=da(b[f+112>>1]|0,c[d+224>>2]|0)|0;q=D-C|0;F=(q+m|0)*6810|0;n=F+(m*4209|0)|0;q=F+(da(q,-17828)|0)|0;F=da(D,-6810)|0;D=da(D,-11018)|0;l=m-C|0;u=(l*11522|0)+E|0;A=(C*20131|0)-D+u|0;u=F+(da(m,-9113)|0)+u|0;l=(l*10033|0)-E|0;s=(C+m|0)*4712|0;m=F+(m*3897|0)-E+s|0;s=E+D+(da(C,-7121)|0)+s|0;c[e>>2]=A+B>>11;c[e+448>>2]=B-A>>11;c[e+32>>2]=n+z>>11;c[e+416>>2]=z-n>>11;c[e+64>>2]=l+o>>11;c[e+384>>2]=o-l>>11;c[e+96>>2]=m+k>>11;c[e+352>>2]=k-m>>11;c[e+128>>2]=q+p>>11;c[e+320>>2]=p-q>>11;c[e+160>>2]=s+r>>11;c[e+288>>2]=r-s>>11;c[e+192>>2]=u+t>>11;c[e+256>>2]=t-u>>11;c[e+224>>2]=v>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+14|0;s=h+1|0;t=h+13|0;u=h+2|0;j=h+12|0;f=h+3|0;e=h+11|0;k=h+4|0;l=h+10|0;n=h+5|0;o=h+9|0;p=h+6|0;q=h+8|0;r=h+7|0;v=0;d=x;while(1){E=c[g+(v<<2)>>2]|0;D=(c[d>>2]<<13)+131072|0;F=c[d+8>>2]|0;J=c[d+16>>2]|0;G=c[d+24>>2]|0;L=(da(G,-3580)|0)+D|0;P=(G*9373|0)+D|0;D=(da(G,-11586)|0)+D|0;G=F-J|0;J=J+F|0;Q=J*10958|0;H=G*374|0;F=F*11795|0;N=H+Q+P|0;H=F-Q+H+L|0;Q=J*4482|0;B=da(G,-3271)|0;z=P-Q+B|0;B=Q-F+B+L|0;J=J*6476|0;F=G*2896|0;L=F+J+L|0;F=P-J+F|0;J=D+(G*5792|0)|0;D=(da(G,-11584)|0)+D|0;G=c[d+4>>2]|0;P=c[d+12>>2]|0;Q=(c[d+20>>2]|0)*10033|0;O=c[d+28>>2]|0;x=P-O|0;R=(x+G|0)*6810|0;K=R+(G*4209|0)|0;x=R+(da(x,-17828)|0)|0;R=da(P,-6810)|0;P=da(P,-11018)|0;I=G-O|0;C=(I*11522|0)+Q|0;M=(O*20131|0)-P+C|0;C=R+(da(G,-9113)|0)+C|0;I=(I*10033|0)-Q|0;A=(O+G|0)*4712|0;G=R+(G*3897|0)-Q+A|0;A=Q+P+(da(O,-7121)|0)+A|0;a[E+h>>0]=a[w+(((M+N|0)>>>18&1023)+128)>>0]|0;a[E+m>>0]=a[w+(((N-M|0)>>>18&1023)+128)>>0]|0;a[E+s>>0]=a[w+(((K+L|0)>>>18&1023)+128)>>0]|0;a[E+t>>0]=a[w+(((L-K|0)>>>18&1023)+128)>>0]|0;a[E+u>>0]=a[w+(((I+J|0)>>>18&1023)+128)>>0]|0;a[E+j>>0]=a[w+(((J-I|0)>>>18&1023)+128)>>0]|0;a[E+f>>0]=a[w+(((G+H|0)>>>18&1023)+128)>>0]|0;a[E+e>>0]=a[w+(((H-G|0)>>>18&1023)+128)>>0]|0;a[E+k>>0]=a[w+(((x+F|0)>>>18&1023)+128)>>0]|0;a[E+l>>0]=a[w+(((F-x|0)>>>18&1023)+128)>>0]|0;a[E+n>>0]=a[w+(((A+z|0)>>>18&1023)+128)>>0]|0;a[E+o>>0]=a[w+(((z-A|0)>>>18&1023)+128)>>0]|0;a[E+p>>0]=a[w+(((C+B|0)>>>18&1023)+128)>>0]|0;a[E+q>>0]=a[w+(((B-C|0)>>>18&1023)+128)>>0]|0;a[E+r>>0]=a[w+((D>>>18&1023)+128)>>0]|0;v=v+1|0;if((v|0)==15)break;else d=d+32|0}i=y;return} -function m1(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=i;i=i+32|0;F=N;k=c[a+576>>2]|0;H=c[k+12>>2]|0;w=c[k+44>>2]|0;x=k+8|0;if((e|0)%(c[x>>2]|0)|0){Yv(c[a+628>>2]|0,116632,232664,F);M=-1;i=N;return M|0}I=k+48|0;j=c[I>>2]|0;J=k+52|0;h=c[J>>2]|0;K=k+56|0;g=c[K>>2]|0;L=a+604|0;f=c[L>>2]|0;M=a+608|0;l=c[M>>2]|0;v=f+l|0;a:do if((e|0)>0){t=k+72|0;u=k+68|0;z=(H|0)>0;B=k+92|0;C=a+628|0;D=a+12|0;E=a+492|0;A=a+452|0;G=k+60|0;y=c[t>>2]|0;b:while(1){c:do if(!g){k=h;while(1){do if((k|0)<11){if(f>>>0>=v>>>0)if(!k){h=b;e=y;g=0;q=187;break b}else{h=11;break}l=f+1|0;j=(d[w+(d[f>>0]|0)>>0]|0)<>>0>>0){j=(d[w+(d[l>>0]|0)>>0]|0)<>>1;k=h+-1|0}}while(0);while(1){do if((h|0)<8)if(f>>>0>=v>>>0)if(!h){h=b;e=y;q=187;break b}else{h=8;break}else{j=(d[w+(d[f>>0]|0)>>0]|0)<>>8;h=h+-8|0}l=j;while(1){g=h+-1|0;j=l>>>1;if(!(l&1)){l=j;h=g}else break}do if((h|0)<2)if(f>>>0>=v>>>0)if(!g){h=b;e=y;g=0;q=187;break b}else{l=j;j=1;break}else{l=(d[w+(d[f>>0]|0)>>0]|0)<>>1;a=c[u>>2]|0;k=a+4|0;a=c[a>>2]|0;do if(!(l&1)){d:do if(z){s=y;o=0;l=0;g=y;e:while(1){r=(g|0)==(y|0);f:do if(r){n=0;q=o;while(1){do if((h|0)<7)if(f>>>0>=v>>>0)if(!h){p=y;e=j;h=0;a=n;k=y;q=155;break b}else{p=7;break}else{j=(d[w+(d[f>>0]|0)>>0]|0)<>0]|0;h=p-o|0;j=j>>>o;switch(d[117088+(m<<3)>>0]|0|0){case 2:{p=k;q=89;break f}case 1:break;case 12:{m=p;a=n;g=y;q=145;break e}case 6:{a=n;k=y;q=144;break e}case 4:{p=q;q=133;break f}case 5:{q=137;break f}case 3:{o=q;q=129;break f}default:{a=n;k=y;q=152;break e}}m=(c[k>>2]|0)+a|0;l=q+n+m|0;if((H|0)>(m|0)){n=l;q=0-m|0;l=m;a=m+(c[k+4>>2]|0)|0;k=k+8|0}else{a=l;l=m;k=y;q=166;break e}}}else{n=0;q=o;while(1){do if((h|0)<7)if(f>>>0>=v>>>0)if(!h){p=y;e=j;h=0;a=n;k=g;q=155;break b}else{p=7;break}else{j=(d[w+(d[f>>0]|0)>>0]|0)<>0]|0;h=p-o|0;j=j>>>o;switch(d[117088+(m<<3)>>0]|0|0){case 1:break;case 2:{p=k;q=89;break f}case 12:{m=p;a=n;q=145;break e}case 6:{a=n;k=g;q=144;break e}case 4:{p=q;q=133;break f}case 5:{q=137;break f}case 3:{o=q;q=129;break f}default:{a=n;k=g;q=152;break e}}if((a|0)<=(l|0)&(a|0)<(H|0))do{a=(c[k>>2]|0)+a+(c[k+4>>2]|0)|0;k=k+8|0}while((a|0)<=(l|0)&(a|0)<(H|0));m=(c[k>>2]|0)+a|0;l=q+n+m|0;if((H|0)>(m|0)){n=l;q=0-m|0;l=m;a=m+(c[k+4>>2]|0)|0;k=k+8|0}else{a=l;l=m;k=g;q=166;break e}}}while(0);if((q|0)==89){q=0;if(!(g-s&4)){m=f;while(1){do if((h|0)<12){if(m>>>0>=v>>>0)if(!h){p=y;e=j;h=0;a=n;f=m;k=g;q=155;break b}else{h=12;f=m;break}f=m+1|0;j=(d[w+(d[m>>0]|0)>>0]|0)<>>0>=v>>>0){h=12;break}j=(d[w+(d[f>>0]|0)>>0]|0)<>0]|0;h=h-k|0;j=j>>>k;k=d[118112+(m<<3)>>0]|0;if((k|0)==7)break;else if(!((k|0)==11|(k|0)==9)){a=n;k=g;q=154;break e}m=c[118116+(m<<3)>>2]|0;n=m+n|0;l=m+l|0;m=f}r=c[118116+(m<<3)>>2]|0;k=g+4|0;c[g>>2]=r+n;o=0;l=r+l|0;while(1){do if((h|0)<13){if(f>>>0>=v>>>0)if(!h){p=y;e=j;h=0;a=o;q=155;break b}else{h=13;break}n=f+1|0;j=(d[w+(d[f>>0]|0)>>0]|0)<>>0>=v>>>0){h=13;f=n;break}j=(d[w+(d[n>>0]|0)>>0]|0)<>0]|0;h=h-m|0;j=j>>>m;m=d[150880+(n<<3)>>0]|0;if((m|0)==8){m=o;break}else if(!((m|0)==11|(m|0)==10)){a=o;q=153;break e}r=c[150884+(n<<3)>>2]|0;o=r+o|0;l=r+l|0}r=c[150884+(n<<3)>>2]|0;c[k>>2]=r+m;l=r+l|0}else{while(1){do if((h|0)<13){if(f>>>0>=v>>>0)if(!h){p=y;e=j;h=0;a=n;k=g;q=155;break b}else{h=13;break}m=f+1|0;j=(d[w+(d[f>>0]|0)>>0]|0)<>>0>=v>>>0){h=13;f=m;break}j=(d[w+(d[m>>0]|0)>>0]|0)<>0]|0;h=h-k|0;j=j>>>k;k=d[150880+(m<<3)>>0]|0;if((k|0)==8)break;else if(!((k|0)==11|(k|0)==10)){a=n;k=g;q=153;break e}r=c[150884+(m<<3)>>2]|0;n=r+n|0;l=r+l|0}r=c[150884+(m<<3)>>2]|0;k=g+4|0;c[g>>2]=r+n;o=0;l=r+l|0;n=f;while(1){do if((h|0)<12){if(n>>>0>=v>>>0)if(!h){p=y;e=j;h=0;a=o;f=n;q=155;break b}else{h=12;f=n;break}f=n+1|0;j=(d[w+(d[n>>0]|0)>>0]|0)<>>0>=v>>>0){h=12;break}j=(d[w+(d[f>>0]|0)>>0]|0)<>0]|0;h=h-m|0;j=j>>>m;m=d[118112+(n<<3)>>0]|0;if((m|0)==7){m=o;break}else if(!((m|0)==11|(m|0)==9)){a=o;q=154;break e}n=c[118116+(n<<3)>>2]|0;o=n+o|0;l=n+l|0;n=f}r=c[118116+(n<<3)>>2]|0;c[k>>2]=r+m;l=r+l|0}k=g+8|0;if((k|0)!=(y|0))if((a|0)<=(l|0)&(a|0)<(H|0)){g=p;do{a=(c[g>>2]|0)+a+(c[g+4>>2]|0)|0;g=g+8|0}while((a|0)<=(l|0)&(a|0)<(H|0));m=g}else m=p;else{k=y;m=p}}else if((q|0)==129){q=0;if(!r?(a|0)<=(l|0)&(a|0)<(H|0):0){do{a=(c[k>>2]|0)+a+(c[k+4>>2]|0)|0;k=k+8|0}while((a|0)<=(l|0)&(a|0)<(H|0));m=k}else m=k;c[g>>2]=o+n+a;l=a;a=(c[m>>2]|0)+a|0;k=g+4|0;m=m+4|0}else if((q|0)==133){q=0;if(!r?(a|0)<=(l|0)&(a|0)<(H|0):0){do{a=(c[k>>2]|0)+a+(c[k+4>>2]|0)|0;k=k+8|0}while((a|0)<=(l|0)&(a|0)<(H|0));o=k}else o=k;l=c[117092+(m<<3)>>2]|0;c[g>>2]=p+n+a+l;l=l+a|0;a=(c[o>>2]|0)+a|0;k=g+4|0;m=o+4|0}else if((q|0)==137){q=0;o=(g|0)!=(y|0);if(o?(a|0)<=(l|0)&(a|0)<(H|0):0)do{a=(c[k>>2]|0)+a+(c[k+4>>2]|0)|0;k=k+8|0}while((a|0)<=(l|0)&(a|0)<(H|0));m=c[117092+(m<<3)>>2]|0;r=m+l|0;if((a|0)<=(r|0)&((a|0)<(r|0)|o)){a=n;k=g;q=141;break}c[g>>2]=a-l+n-m;r=k+-4|0;l=a-m|0;a=a-(c[r>>2]|0)|0;k=g+4|0;m=r}if((H|0)>(l|0)){o=0-l|0;g=k;k=m}else{g=0;break d}}do if((q|0)==141){q=0;g=c[C>>2]|0;r=(c[D>>2]&1024|0)!=0;s=c[(r?E:A)>>2]|0;c[F>>2]=c[B>>2];c[F+4>>2]=r?233560:233568;c[F+8>>2]=s;c[F+12>>2]=l;Yv(g,116632,115152,F);g=0}else if((q|0)==144){q=0;c[k>>2]=H-l;g=c[C>>2]|0;r=(c[D>>2]&1024|0)!=0;s=c[(r?E:A)>>2]|0;c[F>>2]=c[B>>2];c[F+4>>2]=r?233560:233568;c[F+8>>2]=s;c[F+12>>2]=l;Yv(g,116632,115944,F);g=0;k=k+4|0}else if((q|0)==145){q=0;k=g+4|0;c[g>>2]=H-l;do if((h|0)<4)if(f>>>0>=v>>>0)if((m|0)==(o|0)){p=y;e=j;q=155;break b}else{h=4;break}else{j=(d[w+(d[f>>0]|0)>>0]|0)<>2]|0;p=(c[D>>2]&1024|0)!=0;r=c[(p?E:A)>>2]|0;c[F>>2]=c[B>>2];c[F+4>>2]=p?233560:233568;c[F+8>>2]=r;c[F+12>>2]=l;Yv(s,116632,115152,F)}j=j>>>4;h=h+-4|0;g=1}else if((q|0)==153){q=0;g=c[C>>2]|0;r=(c[D>>2]&1024|0)!=0;s=c[(r?E:A)>>2]|0;c[F>>2]=c[B>>2];c[F+4>>2]=r?233560:233568;c[F+8>>2]=s;c[F+12>>2]=l;Yv(g,116632,115152,F);g=0}else if((q|0)==154){q=0;g=c[C>>2]|0;r=(c[D>>2]&1024|0)!=0;s=c[(r?E:A)>>2]|0;c[F>>2]=c[B>>2];c[F+4>>2]=r?233560:233568;c[F+8>>2]=s;c[F+12>>2]=l;Yv(g,116632,115152,F);g=0}else if((q|0)==166){q=0;if(!a){g=0;break d}if((l+a|0)<(H|0)){do if((h|0)<1)if(f>>>0>=v>>>0)if(!h){p=y;e=j;h=0;q=155;break b}else{h=1;break}else{j=(d[w+(d[f>>0]|0)>>0]|0)<>>1;h=h+-1|0}c[k>>2]=a;g=0;k=k+4|0;break d}while(0);if((q|0)==152){q=0;g=c[C>>2]|0;r=(c[D>>2]&1024|0)!=0;s=c[(r?E:A)>>2]|0;c[F>>2]=c[B>>2];c[F+4>>2]=r?233560:233568;c[F+8>>2]=s;c[F+12>>2]=l;Yv(g,116632,115152,F);g=0}if(a){c[k>>2]=a;k=k+4|0}}else{g=0;l=0;k=y}while(0);if((l|0)!=(H|0)){p=c[B>>2]|0;a=c[C>>2]|0;r=(c[D>>2]&1024|0)!=0;s=c[(r?E:A)>>2]|0;c[F>>2]=l>>>0>>0?115064:115080;c[F+4>>2]=p;c[F+8>>2]=r?233560:233568;c[F+12>>2]=s;c[F+16>>2]=l;c[F+20>>2]=H;qx(a,116632,115016,F);a=(l|0)>(H|0);if(a&k>>>0>y>>>0)do{k=k+-4|0;l=l-(c[k>>2]|0)|0;a=(l|0)>(H|0)}while(a&k>>>0>y>>>0);if((l|0)>=(H|0)){if(!a)break;c[k>>2]=H;c[k+4>>2]=0;k=k+8|0;break}if(k-y&4){c[k>>2]=0;k=k+4|0}c[k>>2]=H-((l|0)<0?0:l);k=k+4|0}}else{g=j;j=0;o=y;g:while(1){m=0;k=f;while(1){do if((h|0)<12){if(k>>>0>=v>>>0)if(!h){l=y;e=g;g=m;f=k;k=o;q=52;break b}else{h=12;f=k;break}f=k+1|0;g=(d[w+(d[k>>0]|0)>>0]|0)<>>0>>0){g=(d[w+(d[f>>0]|0)>>0]|0)<>0]|0;h=h-l|0;g=g>>>l;l=d[118112+(k<<3)>>0]|0;if((l|0)==7){l=m;break}else if((l|0)==12){a=g;g=1;l=m;k=o;q=63;break g}else if(!((l|0)==11|(l|0)==9)){l=m;k=o;q=38;break g}k=c[118116+(k<<3)>>2]|0;m=k+m|0;j=k+j|0;k=f}s=c[118116+(k<<3)>>2]|0;n=s+l|0;k=o+4|0;c[o>>2]=n;j=s+j|0;if((j|0)<(H|0)){m=0;a=f}else{m=g;g=0;break}while(1){do if((h|0)<13){if(a>>>0>=v>>>0)if(!h){l=y;e=g;g=m;f=a;q=52;break b}else{h=13;f=a;break}f=a+1|0;g=(d[w+(d[a>>0]|0)>>0]|0)<>>0>>0){g=(d[w+(d[f>>0]|0)>>0]|0)<>0]|0;h=h-l|0;g=g>>>l;l=d[150880+(a<<3)>>0]|0;if((l|0)==8){l=m;break}else if((l|0)==12){a=g;g=1;l=m;q=63;break g}else if(!((l|0)==11|(l|0)==10)){l=m;q=48;break g}a=c[150884+(a<<3)>>2]|0;m=a+m|0;j=a+j|0;a=f}s=c[150884+(a<<3)>>2]|0;l=s+l|0;a=o+8|0;c[k>>2]=l;j=s+j|0;if((j|0)>=(H|0)){m=g;g=0;k=a;break}if(l){o=a;continue}o=(n|0)==0?o:a}if((q|0)==38){a=c[C>>2]|0;r=(c[D>>2]&1024|0)!=0;s=c[(r?E:A)>>2]|0;c[F>>2]=c[B>>2];c[F+4>>2]=r?233560:233568;c[F+8>>2]=s;c[F+12>>2]=j;Yv(a,116632,115152,F);a=g;g=0;q=63}else if((q|0)==48){a=c[C>>2]|0;r=(c[D>>2]&1024|0)!=0;s=c[(r?E:A)>>2]|0;c[F>>2]=c[B>>2];c[F+4>>2]=r?233560:233568;c[F+8>>2]=s;c[F+12>>2]=j;Yv(a,116632,115152,F);a=g;g=0;q=63}if((q|0)==63){q=0;if(!l)m=a;else{c[k>>2]=l;m=a;k=k+4|0}}if((j|0)==(H|0))j=m;else{p=c[B>>2]|0;l=c[C>>2]|0;r=(c[D>>2]&1024|0)!=0;s=c[(r?E:A)>>2]|0;c[F>>2]=j>>>0>>0?115064:115080;c[F+4>>2]=p;c[F+8>>2]=r?233560:233568;c[F+12>>2]=s;c[F+16>>2]=j;c[F+20>>2]=H;qx(l,116632,115016,F);l=(j|0)>(H|0);if(l&k>>>0>y>>>0)do{k=k+-4|0;j=j-(c[k>>2]|0)|0;l=(j|0)>(H|0)}while(l&k>>>0>y>>>0);if((j|0)>=(H|0)){if(!l){j=m;break}c[k>>2]=H;c[k+4>>2]=0;j=m;k=k+8|0;break}if(k-y&4){c[k>>2]=0;k=k+4|0}c[k>>2]=H-((j|0)<0?0:j);j=m;k=k+4|0}}while(0);Yd[c[G>>2]&63](b,y,k,H);c[k>>2]=0;l=c[t>>2]|0;y=c[u>>2]|0;c[t>>2]=y;c[u>>2]=l;l=c[x>>2]|0;e=e-l|0;c[B>>2]=(c[B>>2]|0)+1;if((e|0)<=0){q=191;break}else b=b+l|0}do if((q|0)==52){z=c[C>>2]|0;x=(c[D>>2]&1024|0)!=0;y=c[(x?E:A)>>2]|0;c[F>>2]=c[B>>2];c[F+4>>2]=x?233560:233568;c[F+8>>2]=y;c[F+12>>2]=j;qx(z,116632,115104,F);if(g){c[k>>2]=g;k=k+4|0}if((j|0)==(H|0)){j=e;h=0;g=0}else{B=c[B>>2]|0;g=c[C>>2]|0;C=(c[D>>2]&1024|0)!=0;D=c[(C?E:A)>>2]|0;c[F>>2]=j>>>0>>0?115064:115080;c[F+4>>2]=B;c[F+8>>2]=C?233560:233568;c[F+12>>2]=D;c[F+16>>2]=j;c[F+20>>2]=H;qx(g,116632,115016,F);g=(j|0)>(H|0);if(g&k>>>0>l>>>0){g=k;do{g=g+-4|0;j=j-(c[g>>2]|0)|0;h=(j|0)>(H|0)}while(h&g>>>0>l>>>0);k=g}else h=g;if((j|0)>=(H|0)){if(!h){j=e;h=0;g=0;break}c[k>>2]=H;c[k+4>>2]=0;j=e;h=0;g=0;k=k+8|0;break}if(k-l&4){c[k>>2]=0;k=k+4|0}c[k>>2]=H-((j|0)<0?0:j);j=e;h=0;g=0;k=k+4|0}}else if((q|0)==155){z=c[C>>2]|0;x=(c[D>>2]&1024|0)!=0;y=c[(x?E:A)>>2]|0;c[F>>2]=c[B>>2];c[F+4>>2]=x?233560:233568;c[F+8>>2]=y;c[F+12>>2]=l;qx(z,116632,115104,F);if(a){c[k>>2]=a;k=k+4|0}if((l|0)==(H|0)){l=p;j=e;g=0}else{B=c[B>>2]|0;j=c[C>>2]|0;C=(c[D>>2]&1024|0)!=0;D=c[(C?E:A)>>2]|0;c[F>>2]=l>>>0>>0?115064:115080;c[F+4>>2]=B;c[F+8>>2]=C?233560:233568;c[F+12>>2]=D;c[F+16>>2]=l;c[F+20>>2]=H;qx(j,116632,115016,F);j=(l|0)>(H|0);if(j&k>>>0>p>>>0){j=l;g=k;while(1){g=g+-4|0;k=j-(c[g>>2]|0)|0;j=(k|0)>(H|0);if(j&g>>>0>p>>>0)j=k;else{l=k;k=g;break}}}if((l|0)>=(H|0)){if(!j){l=p;j=e;g=0;break}c[k>>2]=H;c[k+4>>2]=0;l=p;j=e;g=0;k=k+8|0;break}if(k-p&4){c[k>>2]=0;k=k+4|0}c[k>>2]=H-((l|0)<0?0:l);l=p;j=e;g=0;k=k+4|0}}else if((q|0)==187)if(H){B=c[B>>2]|0;k=c[C>>2]|0;C=(c[D>>2]&1024|0)!=0;D=c[(C?E:A)>>2]|0;c[F>>2]=115064;c[F+4>>2]=B;c[F+8>>2]=C?233560:233568;c[F+12>>2]=D;c[F+16>>2]=0;c[F+20>>2]=H;qx(k,116632,115016,F);k=e+4|0;c[e>>2]=H;if(z){b=h;l=e;h=0}else{c[k>>2]=0;b=h;l=e;h=0;k=e+8|0}}else{b=h;l=e;h=0;k=e}else if((q|0)==191){k=c[L>>2]|0;l=c[M>>2]|0;break a}while(0);Yd[c[G>>2]&63](b,l,k,H);c[J>>2]=h;c[I>>2]=j;c[K>>2]=g;c[M>>2]=(c[L>>2]|0)-f+(c[M>>2]|0);c[L>>2]=f;M=-1;i=N;return M|0}else k=f;while(0);c[J>>2]=h;c[I>>2]=j;c[K>>2]=g;c[M>>2]=k-f+l;c[L>>2]=f;M=1;i=N;return M|0}function n1(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;h=c[b+576>>2]|0;f=0;do{g=p1(d,f,e)|0;q1(b,g,113376);f=g+f|0;if(f>>>0>=e>>>0)break;g=o1(d,f,e)|0;q1(b,g,114032);f=g+f|0}while(f>>>0>>0);e=h+4|0;f=c[e>>2]|0;if(!(f&12))return;g=h+52|0;if((c[g>>2]|0)!=8){f=b+608|0;if((c[f>>2]|0)>=(c[b+592>>2]|0))vx(b)|0;d=h+48|0;j=c[d>>2]&255;k=b+604|0;i=c[k>>2]|0;c[k>>2]=i+1;a[i>>0]=j;c[f>>2]=(c[f>>2]|0)+1;c[d>>2]=0;c[g>>2]=8;f=c[e>>2]|0}if(!(f&8))return;e=b+604|0;f=c[e>>2]|0;if(!(f&1))return;d=b+608|0;if((c[d>>2]|0)>=(c[b+592>>2]|0)){vx(b)|0;f=c[e>>2]|0}i=h+48|0;b=c[i>>2]&255;c[e>>2]=f+1;a[f>>0]=b;c[d>>2]=(c[d>>2]|0)+1;c[i>>2]=0;c[g>>2]=8;return}function o1(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=f-e|0;i=e>>3;g=b+i|0;if((h|0)<=0){b=0;return b|0}e=e&7;do if(e){f=d[115416+((d[g>>0]|0)<>0]|0;g=8-e|0;f=f>>>0>g>>>0?g:f;f=(f|0)>(h|0)?h:f;if((f+e|0)<8){b=f;return b|0}else{g=b+(i+1)|0;h=h-f|0;break}}else f=0;while(0);if((h|0)>63){a:do if(g&3){e=g;while(1){g=a[e>>0]|0;if(g<<24>>24!=-1)break;f=f+8|0;h=h+-8|0;g=e+1|0;if(!(g&3))break a;else e=g}b=(d[115416+(g&255)>>0]|0)+f|0;return b|0}while(0);b:do if((h|0)>31)do{if((c[g>>2]|0)!=-1)break b;f=f+32|0;h=h+-32|0;g=g+4|0}while((h|0)>31);while(0)}c:do if((h|0)>7){e=g;while(1){g=a[e>>0]|0;if(g<<24>>24!=-1)break;f=f+8|0;h=h+-8|0;g=e+1|0;if((h|0)>7)e=g;else break c}b=(d[115416+(g&255)>>0]|0)+f|0;return b|0}while(0);if((h|0)<=0){b=f;return b|0}b=d[115416+(d[g>>0]|0)>>0]|0;b=((b|0)>(h|0)?h:b)+f|0;return b|0}function p1(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=f-e|0;i=e>>3;g=b+i|0;if((h|0)<=0){b=0;return b|0}e=e&7;do if(e){f=d[115672+((d[g>>0]|0)<>0]|0;g=8-e|0;f=f>>>0>g>>>0?g:f;f=(f|0)>(h|0)?h:f;if((f+e|0)<8){b=f;return b|0}else{g=b+(i+1)|0;h=h-f|0;break}}else f=0;while(0);if((h|0)>63){a:do if(g&3){e=g;while(1){g=a[e>>0]|0;if(g<<24>>24)break;f=f+8|0;h=h+-8|0;g=e+1|0;if(!(g&3))break a;else e=g}b=(d[115672+(g&255)>>0]|0)+f|0;return b|0}while(0);b:do if((h|0)>31)do{if(c[g>>2]|0)break b;f=f+32|0;h=h+-32|0;g=g+4|0}while((h|0)>31);while(0)}c:do if((h|0)>7){e=g;while(1){g=a[e>>0]|0;if(g<<24>>24)break;f=f+8|0;h=h+-8|0;g=e+1|0;if((h|0)>7)e=g;else break c}b=(d[115672+(g&255)>>0]|0)+f|0;return b|0}while(0);if((h|0)<=0){b=f;return b|0}b=d[115672+(d[g>>0]|0)>>0]|0;b=((b|0)>(h|0)?h:b)+f|0;return b|0}function q1(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=c[d+576>>2]|0;C=D+52|0;n=c[C>>2]|0;D=D+48|0;o=c[D>>2]|0;a:do if((f|0)>2623){t=g+620|0;u=g+618|0;v=d+608|0;q=d+592|0;r=d+604|0;s=g+622|0;while(1){p=e[t>>1]|0;l=b[u>>1]|0;m=l&65535;if(m>>>0<=n>>>0)if((l&65535)<9){k=n;l=m}else break;else{k=c[v>>2]|0;l=m;while(1){l=l-n|0;if((k|0)>=(c[q>>2]|0))vx(d)|0;k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=p>>>l|o;k=(c[v>>2]|0)+1|0;c[v>>2]=k;if(l>>>0<=8){k=8;o=0;break}else{n=8;o=0}}}n=k-l|0;o=(c[115232+(l<<2)>>2]&p)<>2]|0)>=(c[q>>2]|0))vx(d)|0;n=c[r>>2]|0;c[r>>2]=n+1;a[n>>0]=o;c[v>>2]=(c[v>>2]|0)+1;n=8;o=0}f=f-(b[s>>1]|0)|0;if((f|0)<=2623){j=f;i=n;h=o;break a}}Ra(115200,114720,650,115376)}else{j=f;i=n;h=o}while(0);if((j|0)>63){v=j>>6;f=v+63|0;q=g+(f*6|0)+4|0;if((b[q>>1]|0)!=(v<<6|0))Ra(115384,114720,655,115376);p=e[g+(f*6|0)+2>>1]|0;f=b[g+(f*6|0)>>1]|0;o=f&65535;if(o>>>0<=i>>>0)if((f&65535)<9){y=i;w=h;x=o}else Ra(115200,114720,660,115376);else{n=d+608|0;l=d+592|0;k=d+604|0;m=c[n>>2]|0;f=o;while(1){f=f-i|0;if((m|0)>=(c[l>>2]|0))vx(d)|0;m=c[k>>2]|0;c[k>>2]=m+1;a[m>>0]=p>>>f|h;m=(c[n>>2]|0)+1|0;c[n>>2]=m;if(f>>>0<=8){y=8;w=0;x=f;break}else{i=8;h=0}}}f=y-x|0;h=(c[115232+(x<<2)>>2]&p)<>2]|0)>=(c[d+592>>2]|0))vx(d)|0;x=d+604|0;y=c[x>>2]|0;c[x>>2]=y+1;a[y>>0]=h;c[f>>2]=(c[f>>2]|0)+1;f=8;h=0}j=j-(b[q>>1]|0)|0;i=f}o=e[g+(j*6|0)+2>>1]|0;f=b[g+(j*6|0)>>1]|0;n=f&65535;if(n>>>0<=i>>>0)if((f&65535)<9){B=i;z=h;A=n}else Ra(115200,114720,667,115376);else{j=d+608|0;k=d+592|0;l=d+604|0;m=c[j>>2]|0;f=n;while(1){f=f-i|0;if((m|0)>=(c[k>>2]|0))vx(d)|0;m=c[l>>2]|0;c[l>>2]=m+1;a[m>>0]=o>>>f|h;m=(c[j>>2]|0)+1|0;c[j>>2]=m;if(f>>>0<=8){B=8;z=0;A=f;break}else{i=8;h=0}}}f=B-A|0;h=(c[115232+(A<<2)>>2]&o)<>2]=B;c[C>>2]=d;return}f=d+608|0;if((c[f>>2]|0)>=(c[d+592>>2]|0))vx(d)|0;B=d+604|0;d=c[B>>2]|0;c[B>>2]=d+1;a[d>>0]=h;c[f>>2]=(c[f>>2]|0)+1;d=8;B=0;c[D>>2]=B;c[C>>2]=d;return}function r1(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+208|0;b=e;e=e+8|0;Cd[c[(c[a>>2]|0)+12>>2]&255](a,e);d=c[(c[a+796>>2]|0)+628>>2]|0;c[b>>2]=e;Yv(d,218712,234328,b);dF(a);Ua(a+592|0,1)}function s1(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+208|0;d=b;e=b+8|0;Cd[c[(c[a>>2]|0)+12>>2]&255](a,e);a=c[(c[a+796>>2]|0)+628>>2]|0;c[d>>2]=e;qx(a,218712,234328,d);i=b;return}function t1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=4;h=qea(40)|0;c[h>>2]=0;i=Afa(a+592|0,1,h|0,i|0)|0;h=H;s=0;e=s;s=0;if((e|0)!=0&(t|0)!=0){f=Cfa(c[e>>2]|0,i|0,h|0)|0;if(!f)Ua(e|0,t|0);H=t}else f=-1;if((f|0)==1)e=H;else e=0;while(1){if(e){e=-1;j=6;break}s=0;e=qa(202,a|0,b|0,d|0)|0;f=s;s=0;if((f|0)!=0&(t|0)!=0){g=Cfa(c[f>>2]|0,i|0,h|0)|0;if(!g)Ua(f|0,t|0);H=t}else g=-1;if((g|0)==1)e=H;else break}if((j|0)==6){rea(i|0);return e|0}h=e;rea(i|0);return h|0}function u1(a){a=a|0;Ua(a+4|0,1)}function v1(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=c[b+408>>2]|0;KP(b);e=b+24|0;f=c[e>>2]|0;n=c[f>>2]|0;c[f>>2]=n+1;a[n>>0]=-1;n=f+4|0;o=(c[n>>2]|0)+-1|0;c[n>>2]=o;if((o|0)==0?(Ed[c[f+12>>2]&511](b)|0)<<24>>24==0:0){o=c[b>>2]|0;c[o+20>>2]=25;Bd[c[o>>2]&511](b)}e=c[e>>2]|0;n=c[e>>2]|0;c[e>>2]=n+1;a[n>>0]=d+208;n=e+4|0;o=(c[n>>2]|0)+-1|0;c[n>>2]=o;if((o|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){o=c[b>>2]|0;c[o+20>>2]=25;Bd[c[o>>2]&511](b)}e=b+276|0;if((c[e>>2]|0)<=0){b=p+12|0;c[b>>2]=0;b=p+16|0;c[b>>2]=65536;b=p+20|0;c[b>>2]=0;b=p+24|0;c[b>>2]=0;b=p+28|0;c[b>>2]=11;b=p+32|0;c[b>>2]=-1;return}f=b+348|0;d=b+356|0;g=p+76|0;h=p+36|0;i=p+52|0;j=b+352|0;k=p+140|0;m=0;do{l=c[b+(m<<2)+280>>2]|0;if((c[f>>2]|0)==0?(c[d>>2]|0)==0:0){n=(c[g+(c[l+20>>2]<<2)>>2]|0)+0|0;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[h+(m<<2)>>2]=0;c[i+(m<<2)>>2]=0}if(c[j>>2]|0)sfa(c[k+(c[l+24>>2]<<2)>>2]|0,0,256)|0;m=m+1|0}while((m|0)<(c[e>>2]|0));b=p+12|0;c[b>>2]=0;b=p+16|0;c[b>>2]=65536;b=p+20|0;c[b>>2]=0;b=p+24|0;c[b>>2]=0;b=p+28|0;c[b>>2]=11;b=p+32|0;c[b>>2]=-1;return}function w1(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=c[b+408>>2]|0;h=d[e>>0]|0;i=c[268216+((h&127)<<2)>>2]|0;j=i>>>8;k=i>>16;p=l+16|0;g=(c[p>>2]|0)-k|0;c[p>>2]=g;if((h>>>7|0)==(f|0)){if((g|0)>32767)return;if((g|0)<(k|0)){n=l+12|0;c[n>>2]=(c[n>>2]|0)+g;c[p>>2]=k}g=h&128^j}else{if((g|0)>=(k|0)){n=l+12|0;c[n>>2]=(c[n>>2]|0)+g;c[p>>2]=k}g=h&128^i}a[e>>0]=g;f=l+12|0;k=l+28|0;e=l+32|0;m=l+24|0;n=b+24|0;i=l+20|0;h=c[p>>2]|0;g=c[f>>2]|0;j=c[k>>2]|0;do{h=h<<1;c[p>>2]=h;g=g<<1;c[f>>2]=g;j=j+-1|0;c[k>>2]=j;if(!j){l=g>>19;do if((l|0)>255){g=c[e>>2]|0;if((g|0)>-1){if(c[m>>2]|0){do{g=c[n>>2]|0;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=0;j=g+4|0;h=(c[j>>2]|0)+-1|0;c[j>>2]=h;if((h|0)==0?(Ed[c[g+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Bd[c[h>>2]&511](b)}h=(c[m>>2]|0)+-1|0;c[m>>2]=h}while((h|0)!=0);g=c[e>>2]|0}j=c[n>>2]|0;h=c[j>>2]|0;c[j>>2]=h+1;a[h>>0]=g+1;g=j+4|0;h=(c[g>>2]|0)+-1|0;c[g>>2]=h;if((h|0)==0?(Ed[c[j+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Bd[c[h>>2]&511](b)}if(((c[e>>2]|0)==254?(o=c[n>>2]|0,j=c[o>>2]|0,c[o>>2]=j+1,a[j>>0]=0,j=o+4|0,h=(c[j>>2]|0)+-1|0,c[j>>2]=h,(h|0)==0):0)?(Ed[c[o+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Bd[c[h>>2]&511](b)}}c[m>>2]=(c[m>>2]|0)+(c[i>>2]|0);c[i>>2]=0;c[e>>2]=l&255}else{if((l|0)==255){c[i>>2]=(c[i>>2]|0)+1;break}g=c[e>>2]|0;if(g){if((g|0)>-1){if(c[m>>2]|0){do{g=c[n>>2]|0;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=0;j=g+4|0;h=(c[j>>2]|0)+-1|0;c[j>>2]=h;if((h|0)==0?(Ed[c[g+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Bd[c[h>>2]&511](b)}h=(c[m>>2]|0)+-1|0;c[m>>2]=h}while((h|0)!=0);g=c[e>>2]|0}j=c[n>>2]|0;h=c[j>>2]|0;c[j>>2]=h+1;a[h>>0]=g;g=j+4|0;h=(c[g>>2]|0)+-1|0;c[g>>2]=h;if((h|0)==0?(Ed[c[j+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Bd[c[h>>2]&511](b)}}}else c[m>>2]=(c[m>>2]|0)+1;if(c[i>>2]|0){if(c[m>>2]|0)do{g=c[n>>2]|0;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=0;j=g+4|0;h=(c[j>>2]|0)+-1|0;c[j>>2]=h;if((h|0)==0?(Ed[c[g+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Bd[c[h>>2]&511](b)}h=(c[m>>2]|0)+-1|0;c[m>>2]=h}while((h|0)!=0);do{g=c[n>>2]|0;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=-1;j=g+4|0;h=(c[j>>2]|0)+-1|0;c[j>>2]=h;if((h|0)==0?(Ed[c[g+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Bd[c[h>>2]&511](b)}g=c[n>>2]|0;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=0;j=g+4|0;h=(c[j>>2]|0)+-1|0;c[j>>2]=h;if((h|0)==0?(Ed[c[g+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Bd[c[h>>2]&511](b)}h=(c[i>>2]|0)+-1|0;c[i>>2]=h}while((h|0)!=0)}c[e>>2]=l&255}while(0);g=c[f>>2]&524287;c[f>>2]=g;j=(c[k>>2]|0)+8|0;c[k>>2]=j;h=c[p>>2]|0}}while((h|0)<32768);return}function x1(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+2096|0;o=q+2056|0;p=q;n=q+1028|0;h=o+0|0;j=h+33|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(j|0));sfa(p|0,0,1028)|0;sfa(n|0,-1,1028)|0;c[f+1024>>2]=1;m=-1;g=0;h=1e9;a:while(1){if((g|0)<257){l=c[f+(g<<2)>>2]|0;j=(l|0)==0|(l|0)>(h|0);m=j?m:g;g=g+1|0;h=j?h:l;continue}else{g=-1;h=0;l=1e9}while(1){k=c[f+(h<<2)>>2]|0;j=(k|0)==0|(k|0)>(l|0)|(h|0)==(m|0);g=j?g:h;h=h+1|0;if((h|0)==257){k=g;break}else l=j?l:k}if((k|0)<0)break;g=f+(k<<2)|0;h=f+(m<<2)|0;c[h>>2]=(c[h>>2]|0)+(c[g>>2]|0);c[g>>2]=0;g=p+(m<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=n+(m<<2)|0;h=c[g>>2]|0;if((h|0)>-1)do{g=p+(h<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=n+(h<<2)|0;h=c[g>>2]|0}while((h|0)>-1);c[g>>2]=k;g=p+(k<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=c[n+(k<<2)>>2]|0;if((g|0)<=-1){m=-1;g=0;h=1e9;continue}while(1){l=p+(g<<2)|0;c[l>>2]=(c[l>>2]|0)+1;g=c[n+(g<<2)>>2]|0;if((g|0)<=-1){m=-1;g=0;h=1e9;continue a}}}h=0;do{g=c[p+(h<<2)>>2]|0;if(g){if((g|0)>32){f=c[b>>2]|0;c[f+20>>2]=40;Bd[c[f>>2]&511](b)}f=o+g|0;a[f>>0]=(a[f>>0]|0)+1<<24>>24}h=h+1|0}while((h|0)!=257);g=32;do{m=o+g|0;h=a[m>>0]|0;if(!(h<<24>>24))g=g+-1|0;else{f=g+-2|0;g=g+-1|0;l=o+g|0;do{k=f;while(1){j=o+k|0;if(!(a[j>>0]|0))k=k+-1|0;else break}a[m>>0]=(h&255)+254;a[l>>0]=(a[l>>0]|0)+1<<24>>24;b=o+(k+1)|0;a[b>>0]=(d[b>>0]|0)+2;a[j>>0]=(a[j>>0]|0)+-1<<24>>24;h=a[m>>0]|0}while(h<<24>>24!=0)}}while((g|0)>16);j=16;while(1){h=o+j|0;g=a[h>>0]|0;if(!(g<<24>>24))j=j+-1|0;else break}a[h>>0]=g+-1<<24>>24;h=e+0|0;g=o+0|0;j=h+17|0;do{a[h>>0]=a[g>>0]|0;h=h+1|0;g=g+1|0}while((h|0)<(j|0));g=1;h=0;do{j=0;do{if((c[p+(j<<2)>>2]|0)==(g|0)){a[e+h+17>>0]=j;h=h+1|0}j=j+1|0}while((j|0)!=256);g=g+1|0}while((g|0)!=33);a[e+273>>0]=0;i=q;return}function y1(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(a[b+108>>0]|0){l=b+16|0;i=b+12|0;c[i>>2]=0;c[l>>2]=0;return}k=b+16|0;d=c[k>>2]|0;e=d+7|0;l=b+12|0;d=127<<17-d|c[l>>2];if((e|0)>7){i=b+112|0;j=b+116|0;g=b+120|0;h=e;do{m=d>>>16;b=m&255;f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=m;f=(c[j>>2]|0)+-1|0;c[j>>2]=f;if(!f){m=c[g>>2]|0;f=c[m+24>>2]|0;if(!((Ed[c[f+12>>2]&511](m)|0)<<24>>24)){m=c[g>>2]|0;n=c[m>>2]|0;c[n+20>>2]=25;Bd[c[n>>2]&511](m)}c[i>>2]=c[f>>2];c[j>>2]=c[f+4>>2]}if((b|0)==255?(n=c[i>>2]|0,c[i>>2]=n+1,a[n>>0]=0,n=(c[j>>2]|0)+-1|0,c[j>>2]=n,(n|0)==0):0){n=c[g>>2]|0;b=c[n+24>>2]|0;if(!((Ed[c[b+12>>2]&511](n)|0)<<24>>24)){n=c[g>>2]|0;m=c[n>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](n)}c[i>>2]=c[b>>2];c[j>>2]=c[b+4>>2]}d=d<<8;h=h+-8|0}while((h|0)>7);e=e&7}c[l>>2]=d;c[k>>2]=e;n=k;m=l;c[m>>2]=0;c[n>>2]=0;return}function z1(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=b+128|0;f=c[t>>2]|0;if(!f)f=b+108|0;else{g=0;while(1){f=f>>1;if(!f)break;else g=g+1|0}if((g|0)>14){s=c[b+120>>2]|0;r=c[s>>2]|0;c[r+20>>2]=41;Bd[c[r>>2]&511](s)}h=c[b+124>>2]|0;i=g<<4;f=b+108|0;do if(!(a[f>>0]|0)){s=c[b+(h<<2)+60>>2]|0;h=c[s+(i<<2)>>2]|0;s=a[s+i+1024>>0]|0;i=s<<24>>24;if(s<<24>>24==0?(s=c[b+120>>2]|0,r=c[s>>2]|0,c[r+20>>2]=41,Bd[c[r>>2]&511](s),(a[f>>0]|0)!=0):0)break;p=b+16|0;o=(c[p>>2]|0)+i|0;q=b+12|0;i=((1<>2];if((o|0)>7){m=b+112|0;k=b+116|0;l=b+120|0;n=o;do{r=i>>>16;h=r&255;s=c[m>>2]|0;c[m>>2]=s+1;a[s>>0]=r;s=(c[k>>2]|0)+-1|0;c[k>>2]=s;if(!s){s=c[l>>2]|0;j=c[s+24>>2]|0;if(!((Ed[c[j+12>>2]&511](s)|0)<<24>>24)){s=c[l>>2]|0;r=c[s>>2]|0;c[r+20>>2]=25;Bd[c[r>>2]&511](s)}c[m>>2]=c[j>>2];c[k>>2]=c[j+4>>2]}if((h|0)==255?(s=c[m>>2]|0,c[m>>2]=s+1,a[s>>0]=0,s=(c[k>>2]|0)+-1|0,c[k>>2]=s,(s|0)==0):0){s=c[l>>2]|0;h=c[s+24>>2]|0;if(!((Ed[c[h+12>>2]&511](s)|0)<<24>>24)){s=c[l>>2]|0;r=c[s>>2]|0;c[r+20>>2]=25;Bd[c[r>>2]&511](s)}c[m>>2]=c[h>>2];c[k>>2]=c[h+4>>2]}i=i<<8;n=n+-8|0}while((n|0)>7);h=o&7}else h=o;c[q>>2]=i;c[p>>2]=h}else{s=(c[b+(h<<2)+92>>2]|0)+(i<<2)|0;c[s>>2]=(c[s>>2]|0)+1}while(0);if((g|0)!=0?(a[f>>0]|0)==0:0){o=b+16|0;n=(c[o>>2]|0)+g|0;p=b+12|0;i=(c[t>>2]&(1<>2];if((n|0)>7){j=b+112|0;k=b+116|0;l=b+120|0;m=n;do{r=i>>>16;g=r&255;s=c[j>>2]|0;c[j>>2]=s+1;a[s>>0]=r;s=(c[k>>2]|0)+-1|0;c[k>>2]=s;if(!s){s=c[l>>2]|0;h=c[s+24>>2]|0;if(!((Ed[c[h+12>>2]&511](s)|0)<<24>>24)){s=c[l>>2]|0;r=c[s>>2]|0;c[r+20>>2]=25;Bd[c[r>>2]&511](s)}c[j>>2]=c[h>>2];c[k>>2]=c[h+4>>2]}if((g|0)==255?(s=c[j>>2]|0,c[j>>2]=s+1,a[s>>0]=0,s=(c[k>>2]|0)+-1|0,c[k>>2]=s,(s|0)==0):0){s=c[l>>2]|0;g=c[s+24>>2]|0;if(!((Ed[c[g+12>>2]&511](s)|0)<<24>>24)){s=c[l>>2]|0;r=c[s>>2]|0;c[r+20>>2]=25;Bd[c[r>>2]&511](s)}c[j>>2]=c[g>>2];c[k>>2]=c[g+4>>2]}i=i<<8;m=m+-8|0}while((m|0)>7);g=n&7}else g=n;c[p>>2]=i;c[o>>2]=g}c[t>>2]=0;l=b+132|0;i=c[l>>2]|0;a:do if((a[f>>0]|0)==0&(i|0)!=0){o=b+16|0;p=b+12|0;q=b+112|0;r=b+116|0;s=b+120|0;j=c[b+136>>2]|0;g=1;while(1){if(g){g=c[o>>2]|0;n=g+1|0;g=(d[j>>0]&1)<<23-g|c[p>>2];if((n|0)>7){m=n;do{u=g>>>16;h=u&255;k=c[q>>2]|0;c[q>>2]=k+1;a[k>>0]=u;k=(c[r>>2]|0)+-1|0;c[r>>2]=k;if(!k){u=c[s>>2]|0;k=c[u+24>>2]|0;if(!((Ed[c[k+12>>2]&511](u)|0)<<24>>24)){u=c[s>>2]|0;v=c[u>>2]|0;c[v+20>>2]=25;Bd[c[v>>2]&511](u)}c[q>>2]=c[k>>2];c[r>>2]=c[k+4>>2]}if((h|0)==255?(v=c[q>>2]|0,c[q>>2]=v+1,a[v>>0]=0,v=(c[r>>2]|0)+-1|0,c[r>>2]=v,(v|0)==0):0){v=c[s>>2]|0;h=c[v+24>>2]|0;if(!((Ed[c[h+12>>2]&511](v)|0)<<24>>24)){v=c[s>>2]|0;u=c[v>>2]|0;c[u+20>>2]=25;Bd[c[u>>2]&511](v)}c[q>>2]=c[h>>2];c[r>>2]=c[h+4>>2]}g=g<<8;m=m+-8|0}while((m|0)>7);h=n&7}else h=n;c[p>>2]=g;c[o>>2]=h}i=i+-1|0;if(!i)break a;j=j+1|0;g=(a[f>>0]|0)==0}}while(0);c[l>>2]=0}if(!(a[f>>0]|0)){y1(b);i=b+112|0;h=c[i>>2]|0;c[i>>2]=h+1;a[h>>0]=-1;h=b+116|0;v=(c[h>>2]|0)+-1|0;c[h>>2]=v;if(!v){f=b+120|0;v=c[f>>2]|0;g=c[v+24>>2]|0;if(!((Ed[c[g+12>>2]&511](v)|0)<<24>>24)){v=c[f>>2]|0;u=c[v>>2]|0;c[u+20>>2]=25;Bd[c[u>>2]&511](v)}f=c[g>>2]|0;c[i>>2]=f;c[h>>2]=c[g+4>>2]}else f=c[i>>2]|0;c[i>>2]=f+1;a[f>>0]=e+208;v=(c[h>>2]|0)+-1|0;c[h>>2]=v;if(!v){f=b+120|0;v=c[f>>2]|0;g=c[v+24>>2]|0;if(!((Ed[c[g+12>>2]&511](v)|0)<<24>>24)){v=c[f>>2]|0;u=c[v>>2]|0;c[u+20>>2]=25;Bd[c[u>>2]&511](v)}c[i>>2]=c[g>>2];c[h>>2]=c[g+4>>2]}}g=b+120|0;f=c[g>>2]|0;if(c[f+348>>2]|0){c[t>>2]=0;c[b+132>>2]=0;return}if((c[f+276>>2]|0)>0)f=0;else return;do{c[b+(f<<2)+20>>2]=0;f=f+1|0}while((f|0)<(c[(c[g>>2]|0)+276>>2]|0));return}function A1(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=c[b+432>>2]|0;if(!((Ed[c[(c[b+428>>2]|0)+8>>2]&511](b)|0)<<24>>24)){q=c[b>>2]|0;c[q+20>>2]=25;Bd[c[q>>2]&511](b)}g=b+304|0;if((c[g>>2]|0)<=0){r=f+12|0;c[r>>2]=0;r=f+16|0;c[r>>2]=0;r=f+20|0;c[r>>2]=-16;b=b+252|0;b=c[b>>2]|0;r=f+56|0;c[r>>2]=b;return}h=b+201|0;i=f+60|0;j=f+24|0;k=f+40|0;l=b+400|0;m=b+376|0;n=f+124|0;o=b+384|0;q=0;do{p=c[b+(q<<2)+308>>2]|0;d=a[h>>0]|0;if(d<<24>>24){if((c[m>>2]|0)==0?(c[o>>2]|0)==0:0)r=8}else r=8;if((r|0)==8){r=0;d=(c[i+(c[p+20>>2]<<2)>>2]|0)+0|0;e=d+64|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0));c[j+(q<<2)>>2]=0;c[k+(q<<2)>>2]=0;d=a[h>>0]|0}if(!(d<<24>>24)){if(c[l>>2]|0)r=12}else if(c[m>>2]|0)r=12;if((r|0)==12){r=0;sfa(c[n+(c[p+24>>2]<<2)>>2]|0,0,256)|0}q=q+1|0}while((q|0)<(c[g>>2]|0));r=f+12|0;c[r>>2]=0;r=f+16|0;c[r>>2]=0;r=f+20|0;c[r>>2]=-16;b=b+252|0;b=c[b>>2]|0;r=f+56|0;c[r>>2]=b;return}function B1(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=c[b+432>>2]|0;n=m+16|0;f=c[n>>2]|0;j=m+20|0;if((f|0)<32768){l=b+404|0;i=b+24|0;h=m+12|0;f=c[j>>2]|0;while(1){g=f+-1|0;c[j>>2]=g;if((f|0)<1){a:do if(!(c[l>>2]|0)){f=c[i>>2]|0;g=f+4|0;if((c[g>>2]|0)==0?(Ed[c[f+12>>2]&511](b)|0)<<24>>24==0:0){k=c[b>>2]|0;c[k+20>>2]=25;Bd[c[k>>2]&511](b)}c[g>>2]=(c[g>>2]|0)+-1;k=c[f>>2]|0;c[f>>2]=k+1;k=a[k>>0]|0;f=k&255;if(k<<24>>24==-1){while(1){f=c[i>>2]|0;g=f+4|0;if((c[g>>2]|0)==0?(Ed[c[f+12>>2]&511](b)|0)<<24>>24==0:0){k=c[b>>2]|0;c[k+20>>2]=25;Bd[c[k>>2]&511](b)}c[g>>2]=(c[g>>2]|0)+-1;k=c[f>>2]|0;c[f>>2]=k+1;f=d[k>>0]|0;if(!f){f=255;break a}else if((f|0)!=255)break}c[l>>2]=f;f=0}}else f=0;while(0);c[h>>2]=c[h>>2]<<8|f;f=c[j>>2]|0;g=f+8|0;c[j>>2]=g;if((g|0)<0){f=f+9|0;c[j>>2]=f;if(!f){c[n>>2]=32768;g=0}else g=f}}f=c[n>>2]<<1;c[n>>2]=f;if((f|0)<32768)f=g;else break}}else{h=m+12|0;g=c[j>>2]|0}j=d[e>>0]|0;b=c[268216+((j&127)<<2)>>2]|0;k=b>>8;l=b>>16;i=f-l|0;c[n>>2]=i;g=i<>2]|0;if((f|0)>=(g|0)){c[m+12>>2]=f-g;c[n>>2]=l;f=j&128;if((i|0)<(l|0)){a[e>>0]=f^k;e=j;e=e>>7;return e|0}else{a[e>>0]=f^b;e=j^128;e=e>>7;return e|0}}if((i|0)>=32768){e=j;e=e>>7;return e|0}f=j&128;if((i|0)<(l|0)){a[e>>0]=f^b;e=j^128;e=e>>7;return e|0}else{a[e>>0]=f^k;e=j;e=e>>7;return e|0}return 0}function C1(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=c[b>>2]|0;m=b+4|0;h=c[m>>2]|0;l=c[b+16>>2]|0;k=l+404|0;a:do if(!(c[k>>2]|0)){if((e|0)<25){j=l+24|0;i=d;b:while(1){if(!h){if(!((Ed[c[(c[j>>2]|0)+12>>2]&511](l)|0)<<24>>24)){g=0;n=19;break}d=c[j>>2]|0;h=c[d+4>>2]|0;d=c[d>>2]|0}else d=g;h=h+-1|0;g=d+1|0;o=a[d>>0]|0;d=o&255;if(o<<24>>24==-1)while(1){if(!h){if(!((Ed[c[(c[j>>2]|0)+12>>2]&511](l)|0)<<24>>24)){g=0;n=19;break b}d=c[j>>2]|0;h=c[d+4>>2]|0;d=c[d>>2]|0}else d=g;h=h+-1|0;g=d+1|0;d=a[d>>0]|0;if(d<<24>>24!=-1)if(!(d<<24>>24)){d=255;break}else{n=12;break b}}d=d|i<<8;e=e+8|0;if((e|0)<25)i=d;else break a}if((n|0)==12){c[k>>2]=d&255;d=i;i=h;n=14;break}else if((n|0)==19)return g|0}}else{i=h;n=14}while(0);if((n|0)==14)if((e|0)<(f|0)){h=l+432|0;if(!(a[(c[h>>2]|0)+40>>0]|0)){o=c[l>>2]|0;c[o+20>>2]=120;Cd[c[o+4>>2]&255](l,-1);a[(c[h>>2]|0)+40>>0]=1}d=d<<25-e;e=25;h=i}else h=i;c[b>>2]=g;c[m>>2]=h;c[b+8>>2]=d;c[b+12>>2]=e;o=1;return o|0}function D1(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;do if((e|0)<(g|0))if(!((C1(a,b,e,g)|0)<<24>>24)){f=-1;return f|0}else{b=c[a+8>>2]|0;e=c[a+12>>2]|0;break}while(0);e=e-g|0;h=b>>e&c[270664+(g<<2)>>2];i=a+8|0;j=a+12|0;a:do if((h|0)>(c[f+(g<<2)>>2]|0)){while(1){h=h<<1;if((e|0)<1){if(!((C1(a,b,e,1)|0)<<24>>24)){e=-1;break}b=c[i>>2]|0;e=c[j>>2]|0}e=e+-1|0;h=b>>>e&1|h;g=g+1|0;if((h|0)<=(c[f+(g<<2)>>2]|0))break a}return e|0}while(0);c[i>>2]=b;c[j>>2]=e;if((g|0)>16){f=c[a+16>>2]|0;j=c[f>>2]|0;c[j+20>>2]=121;Cd[c[j+4>>2]&255](f,-1);f=0;return f|0}else{f=d[(c[f+140>>2]|0)+((c[f+(g<<2)+72>>2]|0)+h)+17>>0]|0;return f|0}return 0}function E1(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;e=c[d>>2]|0;n=d+4|0;m=c[n>>2]|0;p=d+8|0;o=c[p>>2]|0;r=d+12|0;q=c[r>>2]|0;t=d+16|0;s=c[t>>2]|0;v=d+20|0;u=c[v>>2]|0;a:do if((e|0)<(m|0)){h=(o|0)>(q|0);f=(s|0)>(u|0);j=e;b:while(1){if(!h){g=c[a+(j<<2)>>2]|0;i=o;while(1){if(!f){k=s;l=g+(i<<6)+(s<<1)|0;while(1){if(b[l>>1]|0){e=j;break b}if((k|0)<(u|0)){k=k+1|0;l=l+2|0}else break}}if((i|0)<(q|0))i=i+1|0;else break}}if((j|0)<(m|0))j=j+1|0;else break a}c[d>>2]=e}while(0);c:do if((m|0)>(e|0)){h=(o|0)>(q|0);g=(s|0)>(u|0);f=m;d:while(1){if(!h){j=c[a+(f<<2)>>2]|0;i=o;while(1){if(!g){k=s;l=j+(i<<6)+(s<<1)|0;while(1){if(b[l>>1]|0)break d;if((k|0)<(u|0)){k=k+1|0;l=l+2|0}else break}}if((i|0)<(q|0))i=i+1|0;else break}}if((f|0)>(e|0))f=f+-1|0;else break c}c[n>>2]=f;m=f}while(0);e:do if((o|0)<(q|0)){h=(m|0)<(e|0);g=(s|0)>(u|0);f=o;f:while(1){if(!h){j=e;while(1){if(!g){i=s;k=(c[a+(j<<2)>>2]|0)+(f<<6)+(s<<1)|0;while(1){if(b[k>>1]|0)break f;if((i|0)<(u|0)){i=i+1|0;k=k+2|0}else break}}if((j|0)<(m|0))j=j+1|0;else break}}if((f|0)<(q|0))f=f+1|0;else break e}c[p>>2]=f;o=f}while(0);g:do if((q|0)>(o|0)){h=(m|0)<(e|0);g=(s|0)>(u|0);f=q;h:while(1){if(!h){j=e;while(1){if(!g){i=s;k=(c[a+(j<<2)>>2]|0)+(f<<6)+(s<<1)|0;while(1){if(b[k>>1]|0)break h;if((i|0)<(u|0)){i=i+1|0;k=k+2|0}else break}}if((j|0)<(m|0))j=j+1|0;else break}}if((f|0)>(o|0))f=f+-1|0;else{p=q;break g}}c[r>>2]=f;p=f}else p=q;while(0);i:do if((s|0)<(u|0)){h=(m|0)<(e|0);g=(p|0)<(o|0);f=s;j:while(1){if(!h){j=e;while(1){if(!g){i=o;k=(c[a+(j<<2)>>2]|0)+(o<<6)+(f<<1)|0;while(1){if(b[k>>1]|0)break j;if((i|0)<(p|0)){i=i+1|0;k=k+64|0}else break}}if((j|0)<(m|0))j=j+1|0;else break}}if((f|0)<(u|0))f=f+1|0;else{n=s;break i}}c[t>>2]=f;n=f}else n=s;while(0);k:do if((u|0)>(n|0)){j=(m|0)<(e|0);k=(p|0)<(o|0);f=u;l:while(1){m:do if(!j){if(k){g=e;while(1)if((g|0)<(m|0))g=g+1|0;else break m}else g=e;while(1){h=o;i=(c[a+(g<<2)>>2]|0)+(o<<6)+(f<<1)|0;while(1){if(b[i>>1]|0)break l;if((h|0)<(p|0)){h=h+1|0;i=i+64|0}else break}if((g|0)<(m|0))g=g+1|0;else break}}while(0);if((f|0)>(n|0))f=f+-1|0;else{f=u;break k}}c[v>>2]=f}else f=u;while(0);u=m-e<<4;t=(p-o|0)*12|0;v=f-n<<3;c[d+24>>2]=(da(t,t)|0)+(da(u,u)|0)+(da(v,v)|0);if((m|0)<(e|0)){a=0;d=d+28|0;c[d>>2]=a;return}l=(f|0)<(n|0);if((p|0)<(o|0)){while(1)if((e|0)<(m|0))e=e+1|0;else{e=0;break}d=d+28|0;c[d>>2]=e;return}else{k=e;e=0}while(1){j=c[a+(k<<2)>>2]|0;if(l){g=o;while(1)if((g|0)<(p|0))g=g+1|0;else break}else{i=o;while(1){g=n;h=j+(i<<6)+(n<<1)|0;while(1){e=((b[h>>1]|0)!=0&1)+e|0;if((g|0)<(f|0)){g=g+1|0;h=h+2|0}else break}if((i|0)<(p|0))i=i+1|0;else break}}if((k|0)<(m|0))k=k+1|0;else break}d=d+28|0;c[d>>2]=e;return}function F1(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=i;i=i+1408|0;F=J;G=J+1152|0;I=J+1024|0;H=c[(c[e+448>>2]|0)+24>>2]|0;C=f>>2;D=g>>3;E=h>>2;k=C<<5;B=k|4;m=D<<5;z=m|2;p=E<<5;A=p|4;v=c[e+112>>2]|0;k=k|28;n=k+B>>1;m=m|30;o=m+z>>1;p=p|28;q=p+A>>1;if((v|0)>0){t=c[e+116>>2]|0;r=c[t>>2]|0;s=c[t+4>>2]|0;t=c[t+8>>2]|0;u=0;g=2147483647;do{f=d[r+u>>0]|0;do if((f|0)>=(B|0)){if((f|0)>(k|0)){j=f-k<<1;h=f-B<<1;h=da(h,h)|0;j=da(j,j)|0;break}if((f|0)>(n|0)){h=f-B<<1;h=da(h,h)|0;j=0;break}else{h=f-k<<1;h=da(h,h)|0;j=0;break}}else{j=f-B<<1;h=f-k<<1;h=da(h,h)|0;j=da(j,j)|0}while(0);f=d[s+u>>0]|0;do if((f|0)>=(z|0)){if((f|0)>(m|0)){l=(f-m|0)*3|0;f=(f-z|0)*3|0;f=da(f,f)|0;l=(da(l,l)|0)+j|0;break}if((f|0)>(o|0)){f=(f-z|0)*3|0;f=da(f,f)|0;l=j;break}else{f=(f-m|0)*3|0;f=da(f,f)|0;l=j;break}}else{l=(f-z|0)*3|0;f=(f-m|0)*3|0;f=da(f,f)|0;l=(da(l,l)|0)+j|0}while(0);h=f+h|0;f=d[t+u>>0]|0;do if((f|0)>=(A|0)){if((f|0)>(p|0)){y=f-p|0;j=f-A|0;j=da(j,j)|0;f=(da(y,y)|0)+l|0;break}if((f|0)>(q|0)){j=f-A|0;j=da(j,j)|0;f=l;break}else{j=f-p|0;j=da(j,j)|0;f=l;break}}else{y=f-A|0;j=f-p|0;j=da(j,j)|0;f=(da(y,y)|0)+l|0}while(0);y=h+j|0;c[F+(u<<2)>>2]=f;g=(y|0)<(g|0)?y:g;u=u+1|0}while((u|0)!=(v|0));j=0;f=0;do{if((c[F+(j<<2)>>2]|0)<=(g|0)){a[G+f>>0]=j;f=f+1|0}j=j+1|0}while((j|0)!=(v|0));y=f}else y=0;f=F;g=127;while(1){c[f>>2]=2147483647;if((g|0)>0){f=f+4|0;g=g+-1|0}else break}if((y|0)>0){g=e+116|0;u=0;do{h=a[G+u>>0]|0;s=h&255;n=c[g>>2]|0;w=B-(d[(c[n>>2]|0)+s>>0]|0)|0;v=w<<1;v=da(v,v)|0;l=z-(d[(c[n+4>>2]|0)+s>>0]|0)|0;k=l*3|0;v=(da(k,k)|0)+v|0;s=A-(d[(c[n+8>>2]|0)+s>>0]|0)|0;l=(l*72|0)+144|0;n=s<<4;k=n+64|0;m=n+192|0;n=n+320|0;o=F;q=I;s=v+(da(s,s)|0)|0;v=3;w=(w<<6)+256|0;while(1){p=o;r=q;t=s;e=7;x=l;while(1){if((t|0)<(c[p>>2]|0)){c[p>>2]=t;a[r>>0]=h}f=k+t|0;j=p+4|0;if((f|0)<(c[j>>2]|0)){c[j>>2]=f;a[r+1>>0]=h}f=m+f|0;j=p+8|0;if((f|0)<(c[j>>2]|0)){c[j>>2]=f;a[r+2>>0]=h}f=n+f|0;j=p+12|0;if((f|0)<(c[j>>2]|0)){c[j>>2]=f;a[r+3>>0]=h}if((e|0)>0){p=p+16|0;r=r+4|0;t=t+x|0;e=e+-1|0;x=x+288|0}else break}if((v|0)>0){o=o+128|0;q=q+32|0;s=s+w|0;v=v+-1|0;w=w+512|0}else break}u=u+1|0}while((u|0)!=(y|0))}j=C<<2;l=D<<3;k=E<<2;f=c[H+(j<<2)>>2]|0;g=I;h=0;while(1){F=h+l|0;E=k|1;b[f+(F<<6)+(k<<1)>>1]=(d[g>>0]|0)+1;b[f+(F<<6)+(E<<1)>>1]=(d[g+1>>0]|0)+1;b[f+(F<<6)+(E+1<<1)>>1]=(d[g+2>>0]|0)+1;b[f+(F<<6)+((k|3)<<1)>>1]=(d[g+3>>0]|0)+1;h=h+1|0;if((h|0)==8)break;else g=g+4|0}f=c[H+((j|1)<<2)>>2]|0;g=I+32|0;h=0;while(1){F=h+l|0;E=k|1;b[f+(F<<6)+(k<<1)>>1]=(d[g>>0]|0)+1;b[f+(F<<6)+(E<<1)>>1]=(d[g+1>>0]|0)+1;b[f+(F<<6)+(E+1<<1)>>1]=(d[g+2>>0]|0)+1;b[f+(F<<6)+((k|3)<<1)>>1]=(d[g+3>>0]|0)+1;h=h+1|0;if((h|0)==8)break;else g=g+4|0}f=c[H+((j|2)<<2)>>2]|0;g=I+64|0;h=0;while(1){F=h+l|0;E=k|1;b[f+(F<<6)+(k<<1)>>1]=(d[g>>0]|0)+1;b[f+(F<<6)+(E<<1)>>1]=(d[g+1>>0]|0)+1;b[f+(F<<6)+(E+1<<1)>>1]=(d[g+2>>0]|0)+1;b[f+(F<<6)+((k|3)<<1)>>1]=(d[g+3>>0]|0)+1;h=h+1|0;if((h|0)==8)break;else g=g+4|0}h=c[H+((j|3)<<2)>>2]|0;f=I+96|0;g=0;while(1){I=g+l|0;H=k|1;b[h+(I<<6)+(k<<1)>>1]=(d[f>>0]|0)+1;b[h+(I<<6)+(H<<1)>>1]=(d[f+1>>0]|0)+1;b[h+(I<<6)+(H+1<<1)>>1]=(d[f+2>>0]|0)+1;b[h+(I<<6)+((k|3)<<1)>>1]=(d[f+3>>0]|0)+1;g=g+1|0;if((g|0)==8)break;else f=f+4|0}i=J;return}function G1(b,c){b=b|0;c=c|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;a[c+3>>0]=-1;i=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>11&65535;i=i<<3|i>>>2;a[c+2>>0]=i;g=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>5&63;g=g<<2|g>>>4;a[c+1>>0]=g;k=d[b>>0]|d[b+1>>0]<<8;h=k&31;h=h<<3|h>>>2;a[c>>0]=h;a[c+7>>0]=-1;j=b+2|0;b=((d[j>>0]|d[j+1>>0]<<8)&65535)>>>11&65535;b=b<<3|b>>>2;a[c+6>>0]=b;e=((d[j>>0]|d[j+1>>0]<<8)&65535)>>>5&63;e=e<<2|e>>>4;a[c+5>>0]=e;j=d[j>>0]|d[j+1>>0]<<8;f=j&31;f=f<<3|f>>>2;a[c+4>>0]=f;a[c+11>>0]=-1;if((k&65535)>(j&65535)){a[c+10>>0]=((b+(i<<1)|0)>>>0)/3|0;a[c+9>>0]=((e+(g<<1)|0)>>>0)/3|0;a[c+8>>0]=((f+(h<<1)|0)>>>0)/3|0;a[c+15>>0]=-1;a[c+14>>0]=(((b<<1)+i|0)>>>0)/3|0;a[c+13>>0]=(((e<<1)+g|0)>>>0)/3|0;a[c+12>>0]=(((f<<1)+h|0)>>>0)/3|0;return}else{a[c+10>>0]=(b+i|0)>>>1;a[c+9>>0]=(e+g|0)>>>1;a[c+8>>0]=(f+h|0)>>>1;c=c+12|0;a[c>>0]=0;a[c+1>>0]=0;a[c+2>>0]=0;a[c+3>>0]=0;return}}function H1(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+64|0;r=s;N1(r,e);if((h|0)<=0){i=s;return}k=0-f|0;l=r+16|0;m=r+20|0;n=r+56|0;o=r+60|0;p=(g|0)>0;q=0;do{e=c[l>>2]|0;f=d[e+q+12>>0]|0;c[m>>2]=f;j=((q|0)/2|0)*3|0;c[n>>2]=(d[e+(j+1)+2>>0]|0)<<8|(d[e+j+2>>0]|0)|(d[e+(j+2)+2>>0]|0)<<16;c[o>>2]=0-(q&1)&12;a:do if(p){j=b+(da(q,k)|0)|0;e=0;while(1){f=c[r+((f>>>(e<<1)&3)<<2)>>2]|0;a[j>>0]=f;a[j+1>>0]=f>>8;a[j+2>>0]=f>>16;a[j+3>>0]=f>>24;a[j+3>>0]=c[r+(((c[n>>2]|0)>>>((c[o>>2]|0)+(e*3|0)|0)&7)<<2)+24>>2];e=e+1|0;if((e|0)==(g|0))break a;f=c[m>>2]|0;j=j+4|0}}while(0);q=q+1|0}while((q|0)!=(h|0));i=s;return}function I1(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+16|0;l=m;if((g|0)==1){if((f|0)>0){j=f<<3;g=h;k=0;while(1){o=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[l>>0]=0;Xd[o&255](l,1,1,e)|0;o=a[l>>0]|0;n=o&255;a[g>>0]=(o&255)>>>7;a[g+1>>0]=n>>>6&1;a[g+2>>0]=n>>>5&1;a[g+3>>0]=n>>>4&1;a[g+4>>0]=n>>>3&1;a[g+5>>0]=n>>>2&1;a[g+6>>0]=n>>>1&1;a[g+7>>0]=n&1;k=k+1|0;if((k|0)==(f|0))break;else g=g+8|0}h=h+j|0}if(!(f&7)){i=m;return}j=0-f&7;if((j|0)==7){i=m;return}g=7;while(1){o=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[l>>0]=0;Xd[o&255](l,1,1,e)|0;a[h>>0]=(d[l>>0]|0)>>>g&1;g=g+-1|0;if((g|0)<=(j|0))break;else h=h+1|0}i=m;return}else if((g|0)==4){if((f|0)>0){j=f<<1;g=h;k=0;while(1){o=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[l>>0]=0;Xd[o&255](l,1,1,e)|0;o=a[l>>0]|0;a[g>>0]=(o&255)>>>4;a[g+1>>0]=o&15;k=k+1|0;if((k|0)==(f|0))break;else g=g+2|0}h=h+j|0}if(!(f&1)){i=m;return}o=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[l>>0]=0;Xd[o&255](l,1,1,e)|0;a[h>>0]=(d[l>>0]|0)>>>4;i=m;return}else if((g|0)==8){Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](h,f,1,e)|0;i=m;return}else if((g|0)==2){if((f|0)>0){j=f<<2;g=h;k=0;while(1){n=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[l>>0]=0;Xd[n&255](l,1,1,e)|0;n=a[l>>0]|0;o=n&255;a[g>>0]=(n&255)>>>6;a[g+1>>0]=o>>>4&3;a[g+2>>0]=o>>>2&3;a[g+3>>0]=o&3;k=k+1|0;if((k|0)==(f|0))break;else g=g+4|0}h=h+j|0}g=f&3;if(!g){i=m;return}j=8-(g<<1)|0;if(j>>>0>=6){i=m;return}g=6;while(1){o=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[l>>0]=0;Xd[o&255](l,1,1,e)|0;a[h>>0]=(d[l>>0]|0)>>>g&3;g=g+-2|0;if((g|0)<=(j|0))break;else h=h+1|0}i=m;return}else{o=gc(4)|0;c[o>>2]=308464;qd(o|0,366936,0)}}function J1(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=c[b+4>>2]|0;if(!f){n=b+4|0;c[d>>2]=n;return n|0}h=a[e>>0]|0;l=(h&255)>>>1;m=e+1|0;k=c[e+8>>2]|0;j=c[e+4>>2]|0;a:do if(!(h&1))while(1){i=f+16|0;e=a[i>>0]|0;g=(e&1)==0;if(g){h=(e&255)>>>1;b=i+1|0}else{h=c[f+20>>2]|0;b=c[f+24>>2]|0}b=ffa(m,b,h>>>0>>0?h:l)|0;if(!b){if(l>>>0>>0)n=16}else if((b|0)<0)n=16;if((n|0)==16){n=0;b=c[f>>2]|0;if(!b){b=f;n=24;break}else{f=b;continue}}if(g){e=(e&255)>>>1;b=i+1|0}else{e=c[f+20>>2]|0;b=c[f+24>>2]|0}b=ffa(b,m,l>>>0>>0?l:e)|0;if(!b){if(e>>>0>=l>>>0){n=33;break a}}else if((b|0)>=0){n=33;break a}b=f+4|0;e=c[b>>2]|0;if(!e){n=32;break}else f=e}else while(1){i=f+16|0;g=a[i>>0]|0;e=(g&1)==0;if(e){h=(g&255)>>>1;b=i+1|0}else{h=c[f+20>>2]|0;b=c[f+24>>2]|0}b=ffa(k,b,h>>>0>>0?h:j)|0;if(!b){if(j>>>0>>0)n=23}else if((b|0)<0)n=23;if((n|0)==23){n=0;b=c[f>>2]|0;if(!b){b=f;n=24;break}else{f=b;continue}}if(e){e=(g&255)>>>1;b=i+1|0}else{e=c[f+20>>2]|0;b=c[f+24>>2]|0}b=ffa(b,k,j>>>0>>0?j:e)|0;if(!b){if(e>>>0>=j>>>0){n=33;break a}}else if((b|0)>=0){n=33;break a}b=f+4|0;e=c[b>>2]|0;if(!e){n=32;break}else f=e}while(0);if((n|0)==24){c[d>>2]=f;n=b;return n|0}else if((n|0)==32){c[d>>2]=f;n=b;return n|0}else if((n|0)==33){c[d>>2]=f;n=d;return n|0}return 0}function K1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=a+4|0;d=c[l>>2]|0;do if((d|0)==(c[a>>2]|0)){j=a+8|0;f=c[j>>2]|0;k=a+12|0;h=c[k>>2]|0;e=h;if(f>>>0>>0){a=f;i=((e-a>>2)+1|0)/2|0;a=a-d|0;h=f+(i-(a>>2)<<2)|0;rfa(h|0,d|0,a|0)|0;c[l>>2]=h;c[j>>2]=(c[j>>2]|0)+(i<<2);d=h;break}i=e-d>>1;i=(i|0)==0?1:i;g=jda(i<<2)|0;h=g+((i+3|0)>>>2<<2)|0;i=g+(i<<2)|0;if((d|0)==(f|0))e=h;else{e=h;do{if(!e)e=0;else c[e>>2]=c[d>>2];e=e+4|0;d=d+4|0}while((d|0)!=(f|0));d=e;e=d;d=c[a>>2]|0}c[a>>2]=g;c[l>>2]=h;c[j>>2]=e;c[k>>2]=i;if(!d)d=h;else{nda(d);d=c[l>>2]|0}}while(0);c[d+-4>>2]=c[b>>2];c[l>>2]=(c[l>>2]|0)+-4;return}function L1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=a+4|0;d=c[l>>2]|0;do if((d|0)==(c[a>>2]|0)){j=a+8|0;f=c[j>>2]|0;k=a+12|0;h=c[k>>2]|0;e=h;if(f>>>0>>0){a=f;i=((e-a>>2)+1|0)/2|0;a=a-d|0;h=f+(i-(a>>2)<<2)|0;rfa(h|0,d|0,a|0)|0;c[l>>2]=h;c[j>>2]=(c[j>>2]|0)+(i<<2);d=h;break}i=e-d>>1;i=(i|0)==0?1:i;g=jda(i<<2)|0;h=g+((i+3|0)>>>2<<2)|0;i=g+(i<<2)|0;if((d|0)==(f|0))e=h;else{e=h;do{if(!e)e=0;else c[e>>2]=c[d>>2];e=e+4|0;d=d+4|0}while((d|0)!=(f|0));d=e;e=d;d=c[a>>2]|0}c[a>>2]=g;c[l>>2]=h;c[j>>2]=e;c[k>>2]=i;if(!d)d=h;else{nda(d);d=c[l>>2]|0}}while(0);c[d+-4>>2]=c[b>>2];c[l>>2]=(c[l>>2]|0)+-4;return}function M1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=a+4|0;d=c[l>>2]|0;do if((d|0)==(c[a>>2]|0)){j=a+8|0;f=c[j>>2]|0;k=a+12|0;h=c[k>>2]|0;e=h;if(f>>>0>>0){a=f;i=((e-a>>2)+1|0)/2|0;a=a-d|0;h=f+(i-(a>>2)<<2)|0;rfa(h|0,d|0,a|0)|0;c[l>>2]=h;c[j>>2]=(c[j>>2]|0)+(i<<2);d=h;break}i=e-d>>1;i=(i|0)==0?1:i;g=jda(i<<2)|0;h=g+((i+3|0)>>>2<<2)|0;i=g+(i<<2)|0;if((d|0)==(f|0))e=h;else{e=h;do{if(!e)e=0;else c[e>>2]=c[d>>2];e=e+4|0;d=d+4|0}while((d|0)!=(f|0));d=e;e=d;d=c[a>>2]|0}c[a>>2]=g;c[l>>2]=h;c[j>>2]=e;c[k>>2]=i;if(!d)d=h;else{nda(d);d=c[l>>2]|0}}while(0);c[d+-4>>2]=c[b>>2];c[l>>2]=(c[l>>2]|0)+-4;return}function N1(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=b+16|0;c[f>>2]=d;G1(d+8|0,b);f=c[f>>2]|0;g=a[f>>0]|0;d=g&255;c[b+24>>2]=d;f=a[f+1>>0]|0;e=f&255;c[b+28>>2]=e;if((g&255)>(f&255)){c[b+32>>2]=(((d*6|0)+3+e|0)>>>0)/7|0;c[b+36>>2]=(((d*5|0)+3+(e<<1)|0)>>>0)/7|0;c[b+40>>2]=(((d<<2|3)+(e*3|0)|0)>>>0)/7|0;c[b+44>>2]=(((d*3|0)+3+(e<<2)|0)>>>0)/7|0;c[b+48>>2]=(((d<<1)+3+(e*5|0)|0)>>>0)/7|0;c[b+52>>2]=((d+3+(e*6|0)|0)>>>0)/7|0;return}else{c[b+32>>2]=(((d<<2|2)+e|0)>>>0)/5|0;c[b+36>>2]=(((d*3|0)+2+(e<<1)|0)>>>0)/5|0;c[b+40>>2]=(((d<<1)+2+(e*3|0)|0)>>>0)/5|0;c[b+44>>2]=((d+2+(e<<2)|0)>>>0)/5|0;c[b+48>>2]=0;c[b+52>>2]=255;return}}function O1(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=c[q>>2]|0;kaa(353472,b,353528);c[88190]=355084;c[88192]=355104;c[88191]=0;e=c[88768]|0;Z2(352760+e|0,353472);c[e+352832>>2]=0;c[e+352836>>2]=-1;e=c[r>>2]|0;laa(353576,e,353536|0);c[88212]=355164;c[88213]=355184;h=c[88788]|0;Z2(352848+h|0,353576);f=h+72|0;c[352848+f>>2]=0;a=h+76|0;c[352848+a>>2]=-1;d=c[p>>2]|0;laa(353624,d,353544|0);c[88234]=355164;c[88235]=355184;Z2(352936+h|0,353624);c[352936+f>>2]=0;c[352936+a>>2]=-1;g=c[(c[(c[88234]|0)+-12>>2]|0)+352960>>2]|0;c[88256]=355164;c[88257]=355184;Z2(353024+h|0,g);c[353024+f>>2]=0;c[353024+a>>2]=-1;c[(c[(c[88190]|0)+-12>>2]|0)+352832>>2]=352848;a=(c[(c[88234]|0)+-12>>2]|0)+352940|0;c[a>>2]=c[a>>2]|8192;c[(c[(c[88234]|0)+-12>>2]|0)+353008>>2]=352848;maa(353672,b,353552|0);c[88278]=355124;c[88280]=355144;c[88279]=0;b=c[88778]|0;Z2(353112+b|0,353672);c[b+353184>>2]=0;c[b+353188>>2]=-1;naa(353728,e,353560|0);c[88300]=355204;c[88301]=355224;e=c[88798]|0;Z2(353200+e|0,353728);b=e+72|0;c[353200+b>>2]=0;a=e+76|0;c[353200+a>>2]=-1;naa(353776,d,353568|0);c[88322]=355204;c[88323]=355224;Z2(353288+e|0,353776);c[353288+b>>2]=0;c[353288+a>>2]=-1;d=c[(c[(c[88322]|0)+-12>>2]|0)+353312>>2]|0;c[88344]=355204;c[88345]=355224;Z2(353376+e|0,d);c[353376+b>>2]=0;c[353376+a>>2]=-1;c[(c[(c[88278]|0)+-12>>2]|0)+353184>>2]=353200;a=(c[(c[88322]|0)+-12>>2]|0)+353292|0;c[a>>2]=c[a>>2]|8192;c[(c[(c[88322]|0)+-12>>2]|0)+353360>>2]=353200;return}function P1(a){a=a|0;J3(352848)|0;J3(353024)|0;P3(353200)|0;P3(353376)|0;return}function Q1(a){a=a|0;return}function R1(a){a=a|0;a=a+4|0;c[a>>2]=(c[a>>2]|0)+1;return}function S1(a){a=a|0;var b=0,d=0;d=a+4|0;b=c[d>>2]|0;c[d>>2]=b+-1;if(!b){Bd[c[(c[a>>2]|0)+8>>2]&511](a);a=1}else a=0;return a|0}function T1(a,b){a=a|0;b=b|0;c[a>>2]=366136;oaa(a+4|0,b);return}function U1(b,d){b=b|0;d=d|0;c[b>>2]=366160;if(!(a[d>>0]&1))d=d+1|0;else d=c[d+8>>2]|0;oaa(b+4|0,d);return}function V1(a,b){a=a|0;b=b|0;c[a>>2]=366160;oaa(a+4|0,b);return}function W1(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=d;c[a+4>>2]=b;return}function X1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;Ud[c[(c[a>>2]|0)+12>>2]&255](e,a,b);if((c[e+4>>2]|0)==(c[d+4>>2]|0))e=(c[e>>2]|0)==(c[d>>2]|0);else e=0;i=f;return e|0}function Y1(a,b,d){a=a|0;b=b|0;d=d|0;if((c[b+4>>2]|0)==(a|0))b=(c[b>>2]|0)==(d|0);else b=0;return b|0}function Z1(a,b,c){a=a|0;b=b|0;c=c|0;b=Xc(c|0)|0;p2(a,b,tfa(b|0)|0);return}function _1(a){a=a|0;return 354336}function $1(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)>256)p2(a,354344,34);else Z1(a,0,c);return}function a2(){if((a[354392]|0)==0?(Pa(354392)|0)!=0:0){c[88596]=354624;Db(354392)}return 354384}function b2(a){a=a|0;return 354400}function c2(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)>256)p2(a,354408,33);else Z1(a,0,c);return}function d2(a,b,d){a=a|0;b=b|0;d=d|0;if((d|0)>256){e2()|0;b=354448}else{a2()|0;b=354384}c[a>>2]=d;c[a+4>>2]=b;return}function e2(){if((a[354456]|0)==0?(Pa(354456)|0)!=0:0){c[88612]=354720;Db(354456)}return 354448}function f2(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;f=c[d>>2]|0;if(f){g=a[e>>0]|0;if(!(g&1))g=(g&255)>>>1;else g=c[e+4>>2]|0;if(g){C2(e,354464)|0;f=c[d>>2]|0}d=c[d+4>>2]|0;Ud[c[(c[d>>2]|0)+24>>2]&255](h,d,f);f=a[h>>0]|0;if(!(f&1)){g=h+1|0;f=(f&255)>>>1}else{g=c[h+8>>2]|0;f=c[h+4>>2]|0}E2(e,g,f)|0;v2(h)};c[b+0>>2]=c[e+0>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;i=j;return}function g2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+32|0;g=e+12|0;f=e;p2(f,d,tfa(d|0)|0);f2(g,b,f);U1(a,g);v2(g);v2(f);c[a>>2]=354480;f=b;b=c[f+4>>2]|0;d=a+8|0;c[d>>2]=c[f>>2];c[d+4>>2]=b;i=e;return}function h2(a){a=a|0;Bda(a);return}function i2(a){a=a|0;Bda(a);nda(a);return}function j2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f+8|0;d=gc(16)|0;e2()|0;c[f>>2]=a;c[f+4>>2]=354448;c[e+0>>2]=c[f+0>>2];c[e+4>>2]=c[f+4>>2];g2(d,e,b);qd(d|0,354520,93)}function k2(a){a=a|0;return}function l2(a,b,d){a=a|0;b=b|0;d=d|0;Zb(354808)|0;if((c[a>>2]|0)==1)do Oc(354832,354808)|0;while((c[a>>2]|0)==1);if(!(c[a>>2]|0)){c[a>>2]=1;cd(354808)|0;Bd[d&511](b);Zb(354808)|0;c[a>>2]=-1;cd(354808)|0;Ac(354832)|0}else cd(354808)|0;return}function m2(a){a=a|0;a=gc(8)|0;T1(a,354880);c[a>>2]=366216;qd(a|0,366256,184)}function n2(a){a=a|0;a=gc(8)|0;T1(a,354880);c[a>>2]=366280;qd(a|0,366320,184)}function o2(b,d){b=b|0;d=d|0;if(!(a[d>>0]&1)){c[b+0>>2]=c[d+0>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2]}else p2(b,c[d+8>>2]|0,c[d+4>>2]|0);return}function p2(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;if(e>>>0>4294967279)m2(b);if(e>>>0<11){a[b>>0]=e<<1;b=b+1|0}else{g=e+16&-16;f=jda(g)|0;c[b+8>>2]=f;c[b>>2]=g|1;c[b+4>>2]=e;b=f}qfa(b|0,d|0,e|0)|0;a[b+e>>0]=0;return}function q2(a,b){a=a|0;b=b|0;o2(a,b);return}function r2(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;if(d>>>0>4294967279)m2(b);if(d>>>0<11){a[b>>0]=d<<1;b=b+1|0}else{g=d+16&-16;f=jda(g)|0;c[b+8>>2]=f;c[b>>2]=g|1;c[b+4>>2]=d;b=f}sfa(b|0,e|0,d|0)|0;a[b+d>>0]=0;return}function s2(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;g=a[d>>0]|0;h=(g&1)==0;if(h)i=(g&255)>>>1;else i=c[d+4>>2]|0;if(i>>>0>>0)n2(b);if(h)g=d+1|0;else g=c[d+8>>2]|0;i=i-e|0;p2(b,g+e|0,i>>>0>>0?i:f);return}function t2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;s2(a,b,c,d,e);return}function u2(b){b=b|0;if(a[b>>0]&1)nda(c[b+8>>2]|0);return}function v2(a){a=a|0;u2(a);return}function w2(b,d){b=b|0;d=d|0;var e=0,f=0;if((b|0)!=(d|0)){e=a[d>>0]|0;if(!(e&1)){f=d+1|0;e=(e&255)>>>1}else{f=c[d+8>>2]|0;e=c[d+4>>2]|0}y2(b,f,e)|0}return b|0}function x2(a,b){a=a|0;b=b|0;return y2(a,b,tfa(b|0)|0)|0}function y2(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=a[b>>0]|0;if(!(f&1))h=10;else{f=c[b>>2]|0;h=(f&-2)+-1|0;f=f&255}g=(f&1)==0;do if(h>>>0>=e>>>0){if(g)f=b+1|0;else f=c[b+8>>2]|0;rfa(f|0,d|0,e|0)|0;a[f+e>>0]=0;if(!(a[b>>0]&1)){a[b>>0]=e<<1;break}else{c[b+4>>2]=e;break}}else{if(g)f=(f&255)>>>1;else f=c[b+4>>2]|0;F2(b,h,e-h|0,f,0,f,e,d)}while(0);return b|0}function z2(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=a[b>>0]|0;g=(f&1)==0;if(g)f=(f&255)>>>1;else f=c[b+4>>2]|0;do if(f>>>0>=d>>>0)if(g){a[b+d+1>>0]=0;a[b>>0]=d<<1;break}else{a[(c[b+8>>2]|0)+d>>0]=0;c[b+4>>2]=d;break}else A2(b,d-f|0,e)|0;while(0);return}function A2(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(d){f=a[b>>0]|0;if(!(f&1))g=10;else{f=c[b>>2]|0;g=(f&-2)+-1|0;f=f&255}if(!(f&1))h=(f&255)>>>1;else h=c[b+4>>2]|0;if((g-h|0)>>>0>>0){G2(b,g,d-g+h|0,h,h,0,0);f=a[b>>0]|0}if(!(f&1))g=b+1|0;else g=c[b+8>>2]|0;sfa(g+h|0,e|0,d|0)|0;f=h+d|0;if(!(a[b>>0]&1))a[b>>0]=f<<1;else c[b+4>>2]=f;a[g+f>>0]=0}return b|0}function B2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;if(d>>>0>4294967279)m2(b);e=a[b>>0]|0;if(!(e&1))f=10;else{e=c[b>>2]|0;f=(e&-2)+-1|0;e=e&255}if(!(e&1))j=(e&255)>>>1;else j=c[b+4>>2]|0;d=j>>>0>d>>>0?j:d;if(d>>>0<11)i=10;else i=(d+16&-16)+-1|0;do if((i|0)!=(f|0)){do if((i|0)!=10){d=i+1|0;if(i>>>0>f>>>0)d=jda(d)|0;else d=jda(d)|0;if(!(e&1)){f=1;g=b+1|0;h=0;break}else{f=1;g=c[b+8>>2]|0;h=1;break}}else{d=b+1|0;f=0;g=c[b+8>>2]|0;h=1}while(0);if(!(e&1))e=(e&255)>>>1;else e=c[b+4>>2]|0;qfa(d|0,g|0,e+1|0)|0;if(h)nda(g);if(f){c[b>>2]=i+1|1;c[b+4>>2]=j;c[b+8>>2]=d;break}else{a[b>>0]=j<<1;break}}while(0);return}function C2(a,b){a=a|0;b=b|0;return E2(a,b,tfa(b|0)|0)|0}function D2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a[b>>0]|0;f=(e&1)!=0;if(f){g=(c[b>>2]&-2)+-1|0;h=c[b+4>>2]|0}else{g=10;h=(e&255)>>>1}if((h|0)==(g|0)){G2(b,g,1,g,g,0,0);if(!(a[b>>0]&1))g=7;else g=8}else if(f)g=8;else g=7;if((g|0)==7){a[b>>0]=(h<<1)+2;e=b+1|0;f=h+1|0}else if((g|0)==8){e=c[b+8>>2]|0;f=h+1|0;c[b+4>>2]=f}a[e+h>>0]=d;a[e+f>>0]=0;return}function E2(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=a[b>>0]|0;if(!(f&1))g=10;else{f=c[b>>2]|0;g=(f&-2)+-1|0;f=f&255}if(!(f&1))h=(f&255)>>>1;else h=c[b+4>>2]|0;if((g-h|0)>>>0>=e>>>0){if(e){if(!(f&1))g=b+1|0;else g=c[b+8>>2]|0;qfa(g+h|0,d|0,e|0)|0;f=h+e|0;if(!(a[b>>0]&1))a[b>>0]=f<<1;else c[b+4>>2]=f;a[g+f>>0]=0}}else F2(b,g,e-g+h|0,h,h,0,e,d);return b|0}function F2(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0;if((-18-d|0)>>>0>>0)m2(b);if(!(a[b>>0]&1))m=b+1|0;else m=c[b+8>>2]|0;if(d>>>0<2147483623){e=e+d|0;l=d<<1;e=e>>>0>>0?l:e;if(e>>>0<11)k=11;else k=e+16&-16}else k=-17;l=jda(k)|0;if(g)qfa(l|0,m|0,g|0)|0;if(i)qfa(l+g|0,j|0,i|0)|0;e=f-h|0;if((e|0)!=(g|0))qfa(l+(i+g)|0,m+(h+g)|0,e-g|0)|0;if((d|0)!=10)nda(m);c[b+8>>2]=l;c[b>>2]=k|1;d=e+i|0;c[b+4>>2]=d;a[l+d>>0]=0;return}function G2(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;if((-17-d|0)>>>0>>0)m2(b);if(!(a[b>>0]&1))l=b+1|0;else l=c[b+8>>2]|0;if(d>>>0<2147483623){e=e+d|0;k=d<<1;e=e>>>0>>0?k:e;if(e>>>0<11)j=11;else j=e+16&-16}else j=-17;k=jda(j)|0;if(g)qfa(k|0,l|0,g|0)|0;e=f-h|0;if((e|0)!=(g|0))qfa(k+(i+g)|0,l+(h+g)|0,e-g|0)|0;if((d|0)!=10)nda(l);c[b+8>>2]=k;c[b>>2]=j|1;return}function H2(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;if(f>>>0>4294967279)m2(b);if(f>>>0<11){a[b>>0]=e<<1;f=b+1|0}else{g=f+16&-16;f=jda(g)|0;c[b+8>>2]=f;c[b>>2]=g|1;c[b+4>>2]=e}qfa(f|0,d|0,e|0)|0;a[f+e>>0]=0;return}function I2(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;if(e>>>0>1073741807)m2(b);if(e>>>0<2){a[b>>0]=e<<1;b=b+4|0}else{g=e+4&-4;f=jda(g<<2)|0;c[b+8>>2]=f;c[b>>2]=g|1;c[b+4>>2]=e;b=f}cda(b,d,e)|0;c[b+(e<<2)>>2]=0;return}function J2(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;if(d>>>0>1073741807)m2(b);if(d>>>0<2){a[b>>0]=d<<1;b=b+4|0}else{g=d+4&-4;f=jda(g<<2)|0;c[b+8>>2]=f;c[b>>2]=g|1;c[b+4>>2]=d;b=f}eda(b,e,d)|0;c[b+(d<<2)>>2]=0;return}function K2(b){b=b|0;if(a[b>>0]&1)nda(c[b+8>>2]|0);return}function L2(a){a=a|0;K2(a);return}function M2(a,b){a=a|0;b=b|0;return N2(a,b,bda(b)|0)|0}function N2(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=a[b>>0]|0;if(!(f&1))h=1;else{f=c[b>>2]|0;h=(f&-2)+-1|0;f=f&255}g=(f&1)==0;do if(h>>>0>=e>>>0){if(g)f=b+4|0;else f=c[b+8>>2]|0;dda(f,d,e)|0;c[f+(e<<2)>>2]=0;if(!(a[b>>0]&1)){a[b>>0]=e<<1;break}else{c[b+4>>2]=e;break}}else{if(g)f=(f&255)>>>1;else f=c[b+4>>2]|0;Q2(b,h,e-h|0,f,0,f,e,d)}while(0);return b|0}function O2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;if(d>>>0>1073741807)m2(b);e=a[b>>0]|0;if(!(e&1))f=1;else{e=c[b>>2]|0;f=(e&-2)+-1|0;e=e&255}if(!(e&1))j=(e&255)>>>1;else j=c[b+4>>2]|0;d=j>>>0>d>>>0?j:d;if(d>>>0<2)i=1;else i=(d+4&-4)+-1|0;do if((i|0)!=(f|0)){do if((i|0)!=1){d=(i<<2)+4|0;if(i>>>0>f>>>0)d=jda(d)|0;else d=jda(d)|0;if(!(e&1)){f=1;g=b+4|0;h=0;break}else{f=1;g=c[b+8>>2]|0;h=1;break}}else{d=b+4|0;f=0;g=c[b+8>>2]|0;h=1}while(0);if(!(e&1))e=(e&255)>>>1;else e=c[b+4>>2]|0;cda(d,g,e+1|0)|0;if(h)nda(g);if(f){c[b>>2]=i+1|1;c[b+4>>2]=j;c[b+8>>2]=d;break}else{a[b>>0]=j<<1;break}}while(0);return}function P2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a[b>>0]|0;f=(e&1)!=0;if(f){g=(c[b>>2]&-2)+-1|0;h=c[b+4>>2]|0}else{g=1;h=(e&255)>>>1}if((h|0)==(g|0)){R2(b,g,1,g,g,0,0);if(!(a[b>>0]&1))g=7;else g=8}else if(f)g=8;else g=7;if((g|0)==7){a[b>>0]=(h<<1)+2;e=b+4|0;f=h+1|0}else if((g|0)==8){e=c[b+8>>2]|0;f=h+1|0;c[b+4>>2]=f}c[e+(h<<2)>>2]=d;c[e+(f<<2)>>2]=0;return}function Q2(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0;if((1073741806-d|0)>>>0>>0)m2(b);if(!(a[b>>0]&1))m=b+4|0;else m=c[b+8>>2]|0;if(d>>>0<536870887){e=e+d|0;l=d<<1;e=e>>>0>>0?l:e;if(e>>>0<2)k=2;else k=e+4&-4}else k=1073741807;l=jda(k<<2)|0;if(g)cda(l,m,g)|0;if(i)cda(l+(g<<2)|0,j,i)|0;e=f-h|0;if((e|0)!=(g|0))cda(l+(i+g<<2)|0,m+(h+g<<2)|0,e-g|0)|0;if((d|0)!=1)nda(m);c[b+8>>2]=l;c[b>>2]=k|1;d=e+i|0;c[b+4>>2]=d;c[l+(d<<2)>>2]=0;return}function R2(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;if((1073741807-d|0)>>>0>>0)m2(b);if(!(a[b>>0]&1))l=b+4|0;else l=c[b+8>>2]|0;if(d>>>0<536870887){e=e+d|0;k=d<<1;e=e>>>0>>0?k:e;if(e>>>0<2)j=2;else j=e+4&-4}else j=1073741807;k=jda(j<<2)|0;if(g)cda(k,l,g)|0;e=f-h|0;if((e|0)!=(g|0))cda(k+(i+g<<2)|0,l+(h+g<<2)|0,e-g|0)|0;if((d|0)!=1)nda(l);c[b+8>>2]=k;c[b>>2]=j|1;return}function S2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;k=m;l=m+4|0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;z2(l,10,0);e=a[l>>0]|0;if(!(e&1))f=(e&255)>>>1;else f=c[l+4>>2]|0;h=l+1|0;j=l+8|0;g=e;while(1){e=(g&1)==0?h:c[j>>2]|0;c[k>>2]=d;e=Wea(e,f+1|0,354896,k)|0;if((e|0)>-1){if(e>>>0<=f>>>0)break}else e=f<<1|1;z2(l,e,0);g=a[l>>0]|0;f=e}z2(l,e,0);c[b+0>>2]=c[l+0>>2];c[b+4>>2]=c[l+4>>2];c[b+8>>2]=c[l+8>>2];c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;u2(l);i=m;return}function T2(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;b=d;if(!(Wb(1,b|0)|0)){f=c[b>>2]|0;e=c[b+4>>2]|0;b=Ifa(f|0,((f|0)<0)<<31>>31|0,1e9,0)|0;e=yfa(b|0,H|0,e|0,((e|0)<0)<<31>>31|0)|0;b=a;c[b>>2]=e;c[b+4>>2]=H;i=d;return}else j2(c[(md()|0)>>2]|0,354904)}function U2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e;f=(c[a+24>>2]|0)==0;c[a+16>>2]=f&1|b;if(!((f&1|b)&c[a+20>>2])){i=e;return}else{f=gc(16)|0;g4()|0;a=d;c[a>>2]=1;c[a+4>>2]=355288;h4(f,355344,d);qd(f|0,355392,118)}}function V2(a){a=a|0;c[a>>2]=355336;X2(a,0);u8(a+28|0);rea(c[a+32>>2]|0);rea(c[a+36>>2]|0);rea(c[a+48>>2]|0);rea(c[a+60>>2]|0);return}function W2(a){a=a|0;V2(a);return}function X2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a+40>>2]|0;if(d){e=a+32|0;f=a+36|0;do{d=d+-1|0;Ud[c[(c[e>>2]|0)+(d<<2)>>2]&255](b,a,c[(c[f>>2]|0)+(d<<2)>>2]|0)}while((d|0)!=0)}return}function Y2(a,b){a=a|0;b=b|0;t8(a,b+28|0);return}function Z2(a,b){a=a|0;b=b|0;var d=0;c[a+24>>2]=b;c[a+16>>2]=(b|0)==0&1;c[a+20>>2]=0;c[a+4>>2]=4098;c[a+12>>2]=0;c[a+8>>2]=6;d=a+28|0;b=a+32|0;a=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(a|0));s8(d);return}function _2(a){a=a|0;V2(a);return}function $2(a){a=a|0;c[a>>2]=354952;u8(a+4|0);return}function a3(a){a=a|0;c[a>>2]=354952;u8(a+4|0);return}function b3(a){a=a|0;c[a>>2]=354952;u8(a+4|0);nda(a);return}function c3(a){a=a|0;c[a>>2]=354952;s8(a+4|0);a=a+8|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;return}function d3(a,b){a=a|0;b=b|0;return}function e3(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function f3(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;b=a;c[b>>2]=0;c[b+4>>2]=0;b=a+8|0;c[b>>2]=-1;c[b+4>>2]=-1;return}function g3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=a;c[b>>2]=0;c[b+4>>2]=0;a=a+8|0;c[a>>2]=-1;c[a+4>>2]=-1;return}function h3(a){a=a|0;return 0}function i3(a){a=a|0;return 0}function j3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;a:do if((e|0)>0){h=b+12|0;i=b+16|0;g=d;d=0;while(1){f=c[h>>2]|0;if(f>>>0<(c[i>>2]|0)>>>0){c[h>>2]=f+1;f=a[f>>0]|0}else{f=Ed[c[(c[b>>2]|0)+40>>2]&511](b)|0;if((f|0)==-1)break a;f=f&255}a[g>>0]=f;d=d+1|0;if((d|0)<(e|0))g=g+1|0;else break}}else d=0;while(0);return d|0}function k3(a){a=a|0;return -1}function l3(a){a=a|0;var b=0;if((Ed[c[(c[a>>2]|0)+36>>2]&511](a)|0)==-1)a=-1;else{b=a+12|0;a=c[b>>2]|0;c[b>>2]=a+1;a=d[a>>0]|0}return a|0}function m3(a,b){a=a|0;b=b|0;return -1}function n3(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;a:do if((f|0)>0){i=b+24|0;j=b+28|0;h=e;e=0;while(1){g=c[i>>2]|0;if(g>>>0>=(c[j>>2]|0)>>>0){if((Pd[c[(c[b>>2]|0)+52>>2]&511](b,d[h>>0]|0)|0)==-1)break a}else{k=a[h>>0]|0;c[i>>2]=g+1;a[g>>0]=k}e=e+1|0;if((e|0)<(f|0))h=h+1|0;else break}}else e=0;while(0);return e|0}function o3(a,b){a=a|0;b=b|0;return -1}function p3(a){a=a|0;c[a>>2]=355016;u8(a+4|0);return}function q3(a){a=a|0;c[a>>2]=355016;u8(a+4|0);return}function r3(a){a=a|0;c[a>>2]=355016;u8(a+4|0);nda(a);return}function s3(a){a=a|0;c[a>>2]=355016;s8(a+4|0);a=a+8|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;return}function t3(a,b){a=a|0;b=b|0;return}function u3(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function v3(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;b=a;c[b>>2]=0;c[b+4>>2]=0;b=a+8|0;c[b>>2]=-1;c[b+4>>2]=-1;return}function w3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=a;c[b>>2]=0;c[b+4>>2]=0;a=a+8|0;c[a>>2]=-1;c[a+4>>2]=-1;return}function x3(a){a=a|0;return 0}function y3(a){a=a|0;return 0}function z3(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a:do if((d|0)>0){g=a+12|0;h=a+16|0;f=b;b=0;while(1){e=c[g>>2]|0;if(e>>>0>=(c[h>>2]|0)>>>0){e=Ed[c[(c[a>>2]|0)+40>>2]&511](a)|0;if((e|0)==-1)break a}else{c[g>>2]=e+4;e=c[e>>2]|0}c[f>>2]=e;b=b+1|0;if((b|0)<(d|0))f=f+4|0;else break}}else b=0;while(0);return b|0}function A3(a){a=a|0;return -1}function B3(a){a=a|0;var b=0;if((Ed[c[(c[a>>2]|0)+36>>2]&511](a)|0)==-1)a=-1;else{b=a+12|0;a=c[b>>2]|0;c[b>>2]=a+4;a=c[a>>2]|0}return a|0}function C3(a,b){a=a|0;b=b|0;return -1}function D3(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;a:do if((d|0)>0){g=a+24|0;h=a+28|0;f=b;b=0;while(1){e=c[g>>2]|0;if(e>>>0>=(c[h>>2]|0)>>>0){if((Pd[c[(c[a>>2]|0)+52>>2]&511](a,c[f>>2]|0)|0)==-1)break a}else{i=c[f>>2]|0;c[g>>2]=e+4;c[e>>2]=i}b=b+1|0;if((b|0)<(d|0))f=f+4|0;else break}}else b=0;while(0);return b|0}function E3(a,b){a=a|0;b=b|0;return -1}function F3(a){a=a|0;V2(a+8|0);return}function G3(a){a=a|0;V2(a+((c[(c[a>>2]|0)+-12>>2]|0)+8)|0);return}function H3(a){a=a|0;V2(a+8|0);nda(a);return}function I3(a){a=a|0;H3(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function J3(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e;if(c[b+((c[(c[b>>2]|0)+-12>>2]|0)+24)>>2]|0){U3(d,b);if((a[d>>0]|0)!=0?(f=c[b+((c[(c[b>>2]|0)+-12>>2]|0)+24)>>2]|0,(Ed[c[(c[f>>2]|0)+24>>2]&511](f)|0)==-1):0){f=c[(c[b>>2]|0)+-12>>2]|0;U2(b+f|0,c[b+(f+16)>>2]|1)}W3(d)}i=e;return b|0}function K3(a){a=a|0;var b=0;b=a+16|0;c[b>>2]=c[b>>2]|1;if(!(c[a+20>>2]&1))return;else rb()}function L3(a){a=a|0;V2(a+8|0);return}function M3(a){a=a|0;V2(a+((c[(c[a>>2]|0)+-12>>2]|0)+8)|0);return}function N3(a){a=a|0;V2(a+8|0);nda(a);return}function O3(a){a=a|0;N3(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function P3(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e;if(c[b+((c[(c[b>>2]|0)+-12>>2]|0)+24)>>2]|0){c4(d,b);if((a[d>>0]|0)!=0?(f=c[b+((c[(c[b>>2]|0)+-12>>2]|0)+24)>>2]|0,(Ed[c[(c[f>>2]|0)+24>>2]&511](f)|0)==-1):0){f=c[(c[b>>2]|0)+-12>>2]|0;U2(b+f|0,c[b+(f+16)>>2]|1)}d4(d)}i=e;return b|0}function Q3(a){a=a|0;V2(a+4|0);return}function R3(a){a=a|0;V2(a+((c[(c[a>>2]|0)+-12>>2]|0)+4)|0);return}function S3(a){a=a|0;V2(a+4|0);nda(a);return}function T3(a){a=a|0;S3(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function U3(b,d){b=b|0;d=d|0;var e=0;a[b>>0]=0;c[b+4>>2]=d;e=c[(c[d>>2]|0)+-12>>2]|0;if(!(c[d+(e+16)>>2]|0)){e=c[d+(e+72)>>2]|0;if(e)J3(e)|0;a[b>>0]=1}return}function V3(a,b){a=a|0;b=b|0;U3(a,b);return}function W3(a){a=a|0;var b=0,d=0;a=a+4|0;d=c[a>>2]|0;b=c[(c[d>>2]|0)+-12>>2]|0;if(((((c[d+(b+24)>>2]|0)!=0?(c[d+(b+16)>>2]|0)==0:0)?(c[d+(b+4)>>2]&8192|0)!=0:0)?!(Ta()|0):0)?(d=c[a>>2]|0,d=c[d+((c[(c[d>>2]|0)+-12>>2]|0)+24)>>2]|0,(Ed[c[(c[d>>2]|0)+24>>2]&511](d)|0)==-1):0){b=c[a>>2]|0;d=c[(c[b>>2]|0)+-12>>2]|0;U2(b+d|0,c[b+(d+16)>>2]|1)}return}function X3(a){a=a|0;W3(a);return}function Y3(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;j=o+24|0;k=o;n=o+8|0;e=o+16|0;l=o+20|0;U3(n,b);if(a[n>>0]|0){t8(e,b+((c[(c[b>>2]|0)+-12>>2]|0)+28)|0);m=w8(e,356400)|0;u8(e);g=c[(c[b>>2]|0)+-12>>2]|0;h=c[b+(g+24)>>2]|0;f=b+(g+76)|0;e=c[f>>2]|0;if((e|0)==-1){t8(j,b+(g+28)|0);e=w8(j,357712)|0;e=Pd[c[(c[e>>2]|0)+28>>2]&511](e,32)|0;u8(j);e=e<<24>>24;c[f>>2]=e}f=c[(c[m>>2]|0)+24>>2]|0;c[k>>2]=h;c[j+0>>2]=c[k+0>>2];Kd[f&31](l,m,j,b+g|0,e&255,d);if(!(c[l>>2]|0)){l=c[(c[b>>2]|0)+-12>>2]|0;U2(b+l|0,c[b+(l+16)>>2]|5)}}W3(n);i=o;return b|0}function Z3(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;U3(h,b);do if(a[h>>0]|0){e=c[b>>2]|0;g=c[b+((c[e+-12>>2]|0)+24)>>2]|0;if(g){e=g+24|0;f=c[e>>2]|0;if((f|0)!=(c[g+28>>2]|0)){c[e>>2]=f+1;a[f>>0]=d;break}if((Pd[c[(c[g>>2]|0)+52>>2]&511](g,d&255)|0)!=-1)break;e=c[b>>2]|0}g=c[e+-12>>2]|0;U2(b+g|0,c[b+(g+16)>>2]|1)}while(0);W3(h);i=j;return b|0}function _3(a){a=a|0;V2(a+4|0);return}function $3(a){a=a|0;V2(a+((c[(c[a>>2]|0)+-12>>2]|0)+4)|0);return}function a4(a){a=a|0;V2(a+4|0);nda(a);return}function b4(a){a=a|0;a4(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);return}function c4(b,d){b=b|0;d=d|0;var e=0;a[b>>0]=0;c[b+4>>2]=d;e=c[(c[d>>2]|0)+-12>>2]|0;if(!(c[d+(e+16)>>2]|0)){e=c[d+(e+72)>>2]|0;if(e)P3(e)|0;a[b>>0]=1}return}function d4(a){a=a|0;var b=0,d=0;a=a+4|0;d=c[a>>2]|0;b=c[(c[d>>2]|0)+-12>>2]|0;if(((((c[d+(b+24)>>2]|0)!=0?(c[d+(b+16)>>2]|0)==0:0)?(c[d+(b+4)>>2]&8192|0)!=0:0)?!(Ta()|0):0)?(d=c[a>>2]|0,d=c[d+((c[(c[d>>2]|0)+-12>>2]|0)+24)>>2]|0,(Ed[c[(c[d>>2]|0)+24>>2]&511](d)|0)==-1):0){b=c[a>>2]|0;d=c[(c[b>>2]|0)+-12>>2]|0;U2(b+d|0,c[b+(d+16)>>2]|1)}return}function e4(a){a=a|0;return 355232}function f4(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)!=1&(c|0)<257)Z1(a,b,c);else p2(a,355248,35);return}function g4(){if((a[355296]|0)==0?(Pa(355296)|0)!=0:0){c[88822]=355992;qb(95,355288,o|0)|0;Db(355296)}return 355288}function h4(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e+8|0;g=e;j=d;h=c[j+4>>2]|0;d=g;c[d>>2]=c[j>>2];c[d+4>>2]=h;c[f+0>>2]=c[g+0>>2];c[f+4>>2]=c[g+4>>2];g2(a,f,b);c[a>>2]=355312;i=e;return}function i4(a){a=a|0;h2(a);return}function j4(a){a=a|0;h2(a);nda(a);return}function k4(a){a=a|0;V2(a);nda(a);return}function l4(a){a=a|0;return}function m4(a){a=a|0;return}function n4(a){a=a|0;nda(a);return}function o4(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do if((e|0)==(f|0))h=6;else while(1){if((c|0)==(d|0)){c=-1;break a}b=a[c>>0]|0;g=a[e>>0]|0;if(b<<24>>24>24){c=-1;break a}if(g<<24>>24>24){c=1;break a}c=c+1|0;e=e+1|0;if((e|0)==(f|0)){h=6;break}}while(0);if((h|0)==6)c=(c|0)!=(d|0)&1;return c|0}function p4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;paa(a,c,d);return}function q4(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)==(d|0))b=0;else{b=0;do{b=(a[c>>0]|0)+(b<<4)|0;e=b&-268435456;b=(e>>>24|e)^b;c=c+1|0}while((c|0)!=(d|0))}return b|0}function r4(a){a=a|0;return}function s4(a){a=a|0;nda(a);return}function t4(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do if((e|0)==(f|0))h=6;else while(1){if((b|0)==(d|0)){b=-1;break a}a=c[b>>2]|0;g=c[e>>2]|0;if((a|0)<(g|0)){b=-1;break a}if((g|0)<(a|0)){b=1;break a}b=b+4|0;e=e+4|0;if((e|0)==(f|0)){h=6;break}}while(0);if((h|0)==6)b=(b|0)!=(d|0)&1;return b|0}function u4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qaa(a,c,d);return}function v4(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((b|0)==(d|0))a=0;else{a=0;do{a=(c[b>>2]|0)+(a<<4)|0;e=a&-268435456;a=(e>>>24|e)^a;b=b+4|0}while((b|0)!=(d|0))}return a|0}function w4(a){a=a|0;return}function x4(a){a=a|0;nda(a);return}function y4(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+64|0;l=u+56|0;k=u+52|0;t=u+48|0;m=u+44|0;n=u+40|0;o=u+36|0;p=u+28|0;q=u+24|0;s=u;r=u+32|0;if(!(c[g+4>>2]&1)){c[t>>2]=-1;s=c[(c[d>>2]|0)+16>>2]|0;c[n>>2]=c[e>>2];c[o>>2]=c[f>>2];c[k+0>>2]=c[n+0>>2];c[l+0>>2]=c[o+0>>2];Md[s&63](m,d,k,l,g,h,t);l=c[m>>2]|0;c[e>>2]=l;k=c[t>>2]|0;if(!k)a[j>>0]=0;else if((k|0)==1)a[j>>0]=1;else{a[j>>0]=1;c[h>>2]=4}c[b>>2]=l}else{Y2(p,g);t=w8(p,357712)|0;S1(c[p>>2]|0)|0;Y2(q,g);d=w8(q,357856)|0;S1(c[q>>2]|0)|0;Cd[c[(c[d>>2]|0)+24>>2]&255](s,d);Cd[c[(c[d>>2]|0)+28>>2]&255](s+12|0,d);c[r>>2]=c[f>>2];c[l+0>>2]=c[r+0>>2];a[j>>0]=(raa(e,l,s,s+24|0,t,h,1)|0)==(s|0)&1;c[b>>2]=c[e>>2];v2(s+12|0);v2(s)}i=u;return}function z4(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];saa(a,b,l,k,f,g,h);i=j;return}function A4(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];taa(a,b,l,k,f,g,h);i=j;return}function B4(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];uaa(a,b,l,k,f,g,h);i=j;return}function C4(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];vaa(a,b,l,k,f,g,h);i=j;return}function D4(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];waa(a,b,l,k,f,g,h);i=j;return}function E4(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];xaa(a,b,l,k,f,g,h);i=j;return}function F4(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];yaa(a,b,l,k,f,g,h);i=j;return}function G4(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];zaa(a,b,l,k,f,g,h);i=j;return}function H4(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];Aaa(a,b,l,k,f,g,h);i=j;return}function I4(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=i;i=i+240|0;y=B;s=B+208|0;A=B+184|0;w=B+180|0;z=B+196|0;x=B+168|0;u=B+8|0;v=B+172|0;t=B+176|0;c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;Y2(w,h);p=w8(w,357712)|0;Xd[c[(c[p>>2]|0)+32>>2]&255](p,356224,356250|0,s)|0;S1(c[w>>2]|0)|0;c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;z2(z,10,0);if(!(a[z>>0]&1)){l=z+1|0;h=l;w=z+8|0}else{l=z+8|0;h=z+1|0;w=l;l=c[l>>2]|0}c[x>>2]=l;c[v>>2]=u;c[t>>2]=0;r=z+4|0;e=c[f>>2]|0;a:while(1){if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;n=(e|0)==0;m=c[g>>2]|0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(n)break;else break a;if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(n)break;else break a;else{c[g>>2]=0;C=14;break}}else C=14;while(0);if((C|0)==14){C=0;if(n){m=0;break}else m=0}p=a[z>>0]|0;n=(p&1)==0;if(n)o=(p&255)>>>1;else o=c[r>>2]|0;if((c[x>>2]|0)==(l+o|0)){if(n){l=(p&255)>>>1;o=(p&255)>>>1}else{o=c[r>>2]|0;l=o}z2(z,l<<1,0);if(!(a[z>>0]&1))l=10;else l=(c[z>>2]&-2)+-1|0;z2(z,l,0);if(!(a[z>>0]&1))l=h;else l=c[w>>2]|0;c[x>>2]=l+o}p=e+12|0;o=c[p>>2]|0;q=e+16|0;if((o|0)==(c[q>>2]|0))n=Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0;else n=d[o>>0]|0;if(J4(n&255,16,l,x,t,0,A,u,v,s)|0)break;m=c[p>>2]|0;if((m|0)==(c[q>>2]|0)){Ed[c[(c[e>>2]|0)+40>>2]&511](e)|0;continue}else{c[p>>2]=m+1;continue}}z2(z,(c[x>>2]|0)-l|0,0);if(a[z>>0]&1)h=c[w>>2]|0;x=K4()|0;c[y>>2]=k;if((Baa(h,x,356264,y)|0)!=1)c[j>>2]=4;if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ed[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(h)break;else{C=50;break}if((Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(h^(m|0)==0)break;else{C=50;break}else{c[g>>2]=0;C=48;break}}else C=48;while(0);if((C|0)==48?h:0)C=50;if((C|0)==50)c[j>>2]=c[j>>2]|2;c[b>>2]=e;v2(z);v2(A);i=B;return}function J4(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;o=c[f>>2]|0;p=(o|0)==(e|0);do if(p){m=(a[l+24>>0]|0)==b<<24>>24;if(!m?(a[l+25>>0]|0)!=b<<24>>24:0){n=5;break}c[f>>2]=e+1;a[e>>0]=m?43:45;c[g>>2]=0;m=0}else n=5;while(0);do if((n|0)==5){m=a[i>>0]|0;if(!(m&1))m=(m&255)>>>1;else m=c[i+4>>2]|0;if((m|0)!=0?b<<24>>24==h<<24>>24:0){m=c[k>>2]|0;if((m-j|0)>=160){m=0;break}d=c[g>>2]|0;c[k>>2]=m+4;c[m>>2]=d;c[g>>2]=0;m=0;break}m=l+26|0;i=l;do{if((a[i>>0]|0)==b<<24>>24){m=i;break}i=i+1|0}while((i|0)!=(m|0));m=m-l|0;if((m|0)>23)m=-1;else{if((d|0)==16){if((m|0)>=22){if(p){m=-1;break}if((o-e|0)>=3){m=-1;break}if((a[o+-1>>0]|0)!=48){m=-1;break}c[g>>2]=0;m=a[356224+m>>0]|0;c[f>>2]=o+1;a[o>>0]=m;m=0;break}}else if((d|0)==10|(d|0)==8?(m|0)>=(d|0):0){m=-1;break}m=a[356224+m>>0]|0;c[f>>2]=o+1;a[o>>0]=m;c[g>>2]=(c[g>>2]|0)+1;m=0}}while(0);return m|0}function K4(){if((a[357608]|0)==0?(Pa(357608)|0)!=0:0){c[89400]=Jb(2147483647,357616,0)|0;Db(357608)}return c[89400]|0}function L4(a){a=a|0;return}function M4(a){a=a|0;nda(a);return}function N4(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+64|0;l=u+56|0;k=u+52|0;t=u+48|0;m=u+44|0;n=u+40|0;o=u+36|0;p=u+28|0;q=u+24|0;s=u;r=u+32|0;if(!(c[g+4>>2]&1)){c[t>>2]=-1;s=c[(c[d>>2]|0)+16>>2]|0;c[n>>2]=c[e>>2];c[o>>2]=c[f>>2];c[k+0>>2]=c[n+0>>2];c[l+0>>2]=c[o+0>>2];Md[s&63](m,d,k,l,g,h,t);l=c[m>>2]|0;c[e>>2]=l;k=c[t>>2]|0;if(!k)a[j>>0]=0;else if((k|0)==1)a[j>>0]=1;else{a[j>>0]=1;c[h>>2]=4}c[b>>2]=l}else{Y2(p,g);t=w8(p,357704)|0;S1(c[p>>2]|0)|0;Y2(q,g);d=w8(q,357864)|0;S1(c[q>>2]|0)|0;Cd[c[(c[d>>2]|0)+24>>2]&255](s,d);Cd[c[(c[d>>2]|0)+28>>2]&255](s+12|0,d);c[r>>2]=c[f>>2];c[l+0>>2]=c[r+0>>2];a[j>>0]=(Caa(e,l,s,s+24|0,t,h,1)|0)==(s|0)&1;c[b>>2]=c[e>>2];L2(s+12|0);L2(s)}i=u;return}function O4(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];Daa(a,b,l,k,f,g,h);i=j;return}function P4(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];Eaa(a,b,l,k,f,g,h);i=j;return}function Q4(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];Faa(a,b,l,k,f,g,h);i=j;return}function R4(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];Gaa(a,b,l,k,f,g,h);i=j;return}function S4(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];Haa(a,b,l,k,f,g,h);i=j;return}function T4(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];Iaa(a,b,l,k,f,g,h);i=j;return}function U4(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];Jaa(a,b,l,k,f,g,h);i=j;return}function V4(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];Kaa(a,b,l,k,f,g,h);i=j;return}function W4(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];Laa(a,b,l,k,f,g,h);i=j;return}function X4(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=i;i=i+320|0;w=z;q=z+200|0;y=z+184|0;u=z+180|0;x=z+304|0;v=z+168|0;s=z+8|0;t=z+172|0;r=z+176|0;c[y+0>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;Y2(u,g);o=w8(u,357704)|0;Xd[c[(c[o>>2]|0)+48>>2]&255](o,356224,356250|0,q)|0;S1(c[u>>2]|0)|0;c[x+0>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;z2(x,10,0);if(!(a[x>>0]&1)){k=x+1|0;d=k;u=x+8|0}else{k=x+8|0;d=x+1|0;u=k;k=c[k>>2]|0}c[v>>2]=k;c[t>>2]=s;c[r>>2]=0;p=x+4|0;g=c[e>>2]|0;a:while(1){if(g){l=c[g+12>>2]|0;if((l|0)==(c[g+16>>2]|0))l=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else l=c[l>>2]|0;if((l|0)==-1){c[e>>2]=0;m=1;g=0}else m=0}else{m=1;g=0}n=c[f>>2]|0;do if(n){l=c[n+12>>2]|0;if((l|0)==(c[n+16>>2]|0))l=Ed[c[(c[n>>2]|0)+36>>2]&511](n)|0;else l=c[l>>2]|0;if((l|0)!=-1)if(m)break;else{l=n;break a}else{c[f>>2]=0;A=17;break}}else A=17;while(0);if((A|0)==17){A=0;if(m){l=0;break}else n=0}o=a[x>>0]|0;l=(o&1)==0;if(l)m=(o&255)>>>1;else m=c[p>>2]|0;if((c[v>>2]|0)==(k+m|0)){if(l){l=(o&255)>>>1;m=(o&255)>>>1}else{m=c[p>>2]|0;l=m}z2(x,l<<1,0);if(!(a[x>>0]&1))l=10;else l=(c[x>>2]&-2)+-1|0;z2(x,l,0);if(!(a[x>>0]&1))k=d;else k=c[u>>2]|0;c[v>>2]=k+m}m=g+12|0;l=c[m>>2]|0;o=g+16|0;if((l|0)==(c[o>>2]|0))l=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else l=c[l>>2]|0;if(Y4(l,16,k,v,r,0,y,s,t,q)|0){l=n;break}l=c[m>>2]|0;if((l|0)==(c[o>>2]|0)){Ed[c[(c[g>>2]|0)+40>>2]&511](g)|0;continue}else{c[m>>2]=l+4;continue}}z2(x,(c[v>>2]|0)-k|0,0);if(a[x>>0]&1)d=c[u>>2]|0;v=K4()|0;c[w>>2]=j;if((Baa(d,v,356264,w)|0)!=1)c[h>>2]=4;if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;g=0;k=1}else k=0}else{g=0;k=1}do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ed[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(k)break;else{A=56;break}else{c[f>>2]=0;A=54;break}}else A=54;while(0);if((A|0)==54?k:0)A=56;if((A|0)==56)c[h>>2]=c[h>>2]|2;c[b>>2]=g;v2(x);v2(y);i=z;return}function Y4(b,d,e,f,g,h,i,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;o=c[f>>2]|0;p=(o|0)==(e|0);do if(p){m=(c[l+96>>2]|0)==(b|0);if(!m?(c[l+100>>2]|0)!=(b|0):0){n=5;break}c[f>>2]=e+1;a[e>>0]=m?43:45;c[g>>2]=0;m=0}else n=5;while(0);do if((n|0)==5){m=a[i>>0]|0;if(!(m&1))m=(m&255)>>>1;else m=c[i+4>>2]|0;if((m|0)!=0&(b|0)==(h|0)){m=c[k>>2]|0;if((m-j|0)>=160){m=0;break}d=c[g>>2]|0;c[k>>2]=m+4;c[m>>2]=d;c[g>>2]=0;m=0;break}m=l+104|0;i=l;do{if((c[i>>2]|0)==(b|0)){m=i;break}i=i+4|0}while((i|0)!=(m|0));m=m-l|0;i=m>>2;if((m|0)>92)m=-1;else{if((d|0)==16){if((m|0)>=88){if(p){m=-1;break}if((o-e|0)>=3){m=-1;break}if((a[o+-1>>0]|0)!=48){m=-1;break}c[g>>2]=0;m=a[356224+i>>0]|0;c[f>>2]=o+1;a[o>>0]=m;m=0;break}}else if((d|0)==10|(d|0)==8?(i|0)>=(d|0):0){m=-1;break}m=a[356224+i>>0]|0;c[f>>2]=o+1;a[o>>0]=m;c[g>>2]=(c[g>>2]|0)+1;m=0}}while(0);return m|0}function Z4(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;i=i+16|0;h=g;Y2(h,d);d=w8(h,357712)|0;Xd[c[(c[d>>2]|0)+32>>2]&255](d,356224,356250|0,e)|0;d=w8(h,357856)|0;a[f>>0]=Ed[c[(c[d>>2]|0)+16>>2]&511](d)|0;Cd[c[(c[d>>2]|0)+20>>2]&255](b,d);S1(c[h>>2]|0)|0;i=g;return}function _4(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;j=h;Y2(j,d);d=w8(j,357712)|0;Xd[c[(c[d>>2]|0)+32>>2]&255](d,356224,356256|0,e)|0;d=w8(j,357856)|0;a[f>>0]=Ed[c[(c[d>>2]|0)+12>>2]&511](d)|0;a[g>>0]=Ed[c[(c[d>>2]|0)+16>>2]&511](d)|0;Cd[c[(c[d>>2]|0)+20>>2]&255](b,d);S1(c[j>>2]|0)|0;i=h;return}function $4(b,e,f,g,h,i,j,k,l,m,n,o){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0;do if(b<<24>>24==i<<24>>24)if(a[e>>0]|0){a[e>>0]=0;i=c[h>>2]|0;c[h>>2]=i+1;a[i>>0]=46;i=a[k>>0]|0;if(!(i&1))i=(i&255)>>>1;else i=c[k+4>>2]|0;if((i|0)!=0?(p=c[m>>2]|0,(p-l|0)<160):0){i=c[n>>2]|0;c[m>>2]=p+4;c[p>>2]=i;i=0}else i=0}else i=-1;else{if(b<<24>>24==j<<24>>24){i=a[k>>0]|0;if(!(i&1))i=(i&255)>>>1;else i=c[k+4>>2]|0;if(i){if(!(a[e>>0]|0)){i=-1;break}i=c[m>>2]|0;if((i-l|0)>=160){i=0;break}l=c[n>>2]|0;c[m>>2]=i+4;c[i>>2]=l;c[n>>2]=0;i=0;break}}i=o+32|0;j=o;do{if((a[j>>0]|0)==b<<24>>24){i=j;break}j=j+1|0}while((j|0)!=(i|0));j=i-o|0;if((j|0)<=31){p=a[356224+j>>0]|0;if((j|0)==24|(j|0)==25){i=c[h>>2]|0;if((i|0)!=(g|0)?(d[i+-1>>0]&95|0)!=(d[f>>0]&127|0):0){i=-1;break}c[h>>2]=i+1;a[i>>0]=p;i=0;break}else if((j|0)==23|(j|0)==22){a[f>>0]=80;i=c[h>>2]|0;c[h>>2]=i+1;a[i>>0]=p;i=0;break}else{i=p&95;if((i|0)==(a[f>>0]|0)?(a[f>>0]=i|128,(a[e>>0]|0)!=0):0){a[e>>0]=0;i=a[k>>0]|0;if(!(i&1))i=(i&255)>>>1;else i=c[k+4>>2]|0;if((i|0)!=0?(q=c[m>>2]|0,(q-l|0)<160):0){l=c[n>>2]|0;c[m>>2]=q+4;c[q>>2]=l}}m=c[h>>2]|0;c[h>>2]=m+1;a[m>>0]=p;if((j|0)>21){i=0;break}c[n>>2]=(c[n>>2]|0)+1;i=0;break}}else i=-1}while(0);return i|0}function a5(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;Y2(g,b);b=w8(g,357704)|0;Xd[c[(c[b>>2]|0)+48>>2]&255](b,356224,356250|0,d)|0;b=w8(g,357864)|0;c[e>>2]=Ed[c[(c[b>>2]|0)+16>>2]&511](b)|0;Cd[c[(c[b>>2]|0)+20>>2]&255](a,b);S1(c[g>>2]|0)|0;i=f;return}function b5(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;i=i+16|0;h=g;Y2(h,b);b=w8(h,357704)|0;Xd[c[(c[b>>2]|0)+48>>2]&255](b,356224,356256|0,d)|0;b=w8(h,357864)|0;c[e>>2]=Ed[c[(c[b>>2]|0)+12>>2]&511](b)|0;c[f>>2]=Ed[c[(c[b>>2]|0)+16>>2]&511](b)|0;Cd[c[(c[b>>2]|0)+20>>2]&255](a,b);S1(c[h>>2]|0)|0;i=g;return}function c5(b,e,f,g,h,i,j,k,l,m,n,o){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0;do if((b|0)==(i|0))if(a[e>>0]|0){a[e>>0]=0;i=c[h>>2]|0;c[h>>2]=i+1;a[i>>0]=46;i=a[k>>0]|0;if(!(i&1))i=(i&255)>>>1;else i=c[k+4>>2]|0;if((i|0)!=0?(p=c[m>>2]|0,(p-l|0)<160):0){i=c[n>>2]|0;c[m>>2]=p+4;c[p>>2]=i;i=0}else i=0}else i=-1;else{if((b|0)==(j|0)){i=a[k>>0]|0;if(!(i&1))i=(i&255)>>>1;else i=c[k+4>>2]|0;if(i){if(!(a[e>>0]|0)){i=-1;break}i=c[m>>2]|0;if((i-l|0)>=160){i=0;break}l=c[n>>2]|0;c[m>>2]=i+4;c[i>>2]=l;c[n>>2]=0;i=0;break}}i=o+128|0;j=o;do{if((c[j>>2]|0)==(b|0)){i=j;break}j=j+4|0}while((j|0)!=(i|0));j=i-o|0;i=j>>2;if((j|0)<=124){p=a[356224+i>>0]|0;if((i|0)==23|(i|0)==22)a[f>>0]=80;else if(!((i|0)==24|(i|0)==25)){i=p&95;if((i|0)==(a[f>>0]|0)?(a[f>>0]=i|128,(a[e>>0]|0)!=0):0){a[e>>0]=0;i=a[k>>0]|0;if(!(i&1))i=(i&255)>>>1;else i=c[k+4>>2]|0;if((i|0)!=0?(q=c[m>>2]|0,(q-l|0)<160):0){l=c[n>>2]|0;c[m>>2]=q+4;c[q>>2]=l}}}else{i=c[h>>2]|0;if((i|0)!=(g|0)?(d[i+-1>>0]&95|0)!=(d[f>>0]&127|0):0){i=-1;break}c[h>>2]=i+1;a[i>>0]=p;i=0;break}m=c[h>>2]|0;c[h>>2]=m+1;a[m>>0]=p;if((j|0)>84)i=0;else{c[n>>2]=(c[n>>2]|0)+1;i=0}}else i=-1}while(0);return i|0}function d5(a){a=a|0;return}function e5(a){a=a|0;nda(a);return}function f5(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;j=o+20|0;k=o;l=o+4|0;n=o+8|0;if(!(c[f+4>>2]&1)){l=c[(c[d>>2]|0)+24>>2]|0;c[k>>2]=c[e>>2];c[j+0>>2]=c[k+0>>2];Kd[l&31](b,d,j,f,g,h&1)}else{Y2(l,f);k=w8(l,357856)|0;S1(c[l>>2]|0)|0;j=c[k>>2]|0;if(h)Cd[c[j+24>>2]&255](n,k);else Cd[c[j+28>>2]&255](n,k);j=a[n>>0]|0;if(!(j&1)){d=n+1|0;k=d;h=n+8|0}else{h=n+8|0;k=c[h>>2]|0;d=n+1|0}m=n+4|0;while(1){if(!(j&1)){g=d;j=(j&255)>>>1}else{g=c[h>>2]|0;j=c[m>>2]|0}if((k|0)==(g+j|0))break;j=a[k>>0]|0;f=c[e>>2]|0;do if(f){g=f+24|0;l=c[g>>2]|0;if((l|0)!=(c[f+28>>2]|0)){c[g>>2]=l+1;a[l>>0]=j;break}if((Pd[c[(c[f>>2]|0)+52>>2]&511](f,j&255)|0)==-1)c[e>>2]=0}while(0);j=a[n>>0]|0;k=k+1|0}c[b>>2]=c[e>>2];v2(n)}i=o;return}function g5(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;i=i+64|0;k=d;p=d+56|0;q=d+44|0;j=d+20|0;n=d+12|0;m=d+8|0;o=d+4|0;l=d+16|0;a[p+0>>0]=a[356504]|0;a[p+1>>0]=a[356505]|0;a[p+2>>0]=a[356506]|0;a[p+3>>0]=a[356507]|0;a[p+4>>0]=a[356508]|0;a[p+5>>0]=a[356509]|0;h5(p+1|0,356408,1,c[f+4>>2]|0);r=K4()|0;c[k>>2]=h;h=q+(Maa(q,12,r,p,k)|0)|0;p=i5(q,h,f)|0;Y2(o,f);j5(q,p,h,j,n,m,o);S1(c[o>>2]|0)|0;c[l>>2]=c[e>>2];h=c[n>>2]|0;e=c[m>>2]|0;c[k+0>>2]=c[l+0>>2];Be(b,k,j,h,e,f,g);i=d;return}function h5(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;if(e&2048){a[b>>0]=43;b=b+1|0}if(e&512){a[b>>0]=35;b=b+1|0}f=a[c>>0]|0;if(f<<24>>24){g=c;while(1){g=g+1|0;c=b+1|0;a[b>>0]=f;f=a[g>>0]|0;if(!(f<<24>>24)){b=c;break}else b=c}}f=e&74;do if((f|0)==64)a[b>>0]=111;else if((f|0)==8)if(!(e&16384)){a[b>>0]=120;break}else{a[b>>0]=88;break}else if(d){a[b>>0]=100;break}else{a[b>>0]=117;break}while(0);return}function i5(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;e=c[e+4>>2]&176;do if((e|0)==16){e=a[b>>0]|0;if(e<<24>>24==43|e<<24>>24==45){b=b+1|0;break}if((d-b|0)>1&e<<24>>24==48?(d=a[b+1>>0]|0,d<<24>>24==88|d<<24>>24==120):0)b=b+2|0;else f=7}else if((e|0)==32)b=d;else f=7;while(0);return b|0}function j5(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;i=i+16|0;u=v;t=w8(j,357712)|0;o=w8(j,357856)|0;Cd[c[(c[o>>2]|0)+20>>2]&255](u,o);j=a[u>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[u+4>>2]|0;if(j){c[h>>2]=f;j=a[b>>0]|0;if(j<<24>>24==43|j<<24>>24==45){s=Pd[c[(c[t>>2]|0)+28>>2]&511](t,j)|0;j=c[h>>2]|0;c[h>>2]=j+1;a[j>>0]=s;j=b+1|0}else j=b;if(((e-j|0)>1?(a[j>>0]|0)==48:0)?(k=j+1|0,s=a[k>>0]|0,s<<24>>24==88|s<<24>>24==120):0){s=Pd[c[(c[t>>2]|0)+28>>2]&511](t,48)|0;p=c[h>>2]|0;c[h>>2]=p+1;a[p>>0]=s;p=Pd[c[(c[t>>2]|0)+28>>2]&511](t,a[k>>0]|0)|0;s=c[h>>2]|0;c[h>>2]=s+1;a[s>>0]=p;j=j+2|0}if((j|0)!=(e|0)?(m=e+-1|0,m>>>0>j>>>0):0){n=j;k=e;while(1){s=a[n>>0]|0;a[n>>0]=a[m>>0]|0;a[m>>0]=s;n=n+1|0;k=k+-2|0;if(n>>>0>=k>>>0)break;else{s=m;m=k;k=s}}}o=Ed[c[(c[o>>2]|0)+16>>2]&511](o)|0;if(j>>>0>>0){p=u+1|0;q=u+4|0;r=u+8|0;m=0;k=0;s=j;while(1){n=(a[u>>0]&1)==0;if((a[(n?p:c[r>>2]|0)+k>>0]|0)!=0?(m|0)==(a[(n?p:c[r>>2]|0)+k>>0]|0):0){m=c[h>>2]|0;c[h>>2]=m+1;a[m>>0]=o;m=a[u>>0]|0;if(!(m&1))m=(m&255)>>>1;else m=c[q>>2]|0;n=0;k=(k>>>0<(m+-1|0)>>>0&1)+k|0}else n=m;w=Pd[c[(c[t>>2]|0)+28>>2]&511](t,a[s>>0]|0)|0;m=c[h>>2]|0;c[h>>2]=m+1;a[m>>0]=w;s=s+1|0;if(s>>>0>=e>>>0)break;else m=n+1|0}}j=f+(j-b)|0;k=c[h>>2]|0;if((j|0)!=(k|0)?(l=k+-1|0,l>>>0>j>>>0):0)while(1){w=a[j>>0]|0;a[j>>0]=a[l>>0]|0;a[l>>0]=w;j=j+1|0;k=k+-2|0;if(j>>>0>=k>>>0)break;else{w=l;l=k;k=w}}}else{Xd[c[(c[t>>2]|0)+32>>2]&255](t,b,e,f)|0;c[h>>2]=f+(e-b)}if((d|0)==(e|0))j=c[h>>2]|0;else j=f+(d-b)|0;c[g>>2]=j;v2(u);i=v;return}function k5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=i;i=i+96|0;k=b+8|0;q=b;p=b+74|0;j=b+32|0;n=b+20|0;m=b+24|0;o=b+16|0;l=b+28|0;r=q;c[r>>2]=37;c[r+4>>2]=0;h5(q+1|0,356416,1,c[e+4>>2]|0);r=K4()|0;s=k;c[s>>2]=g;c[s+4>>2]=h;h=p+(Maa(p,22,r,q,k)|0)|0;g=i5(p,h,e)|0;Y2(o,e);j5(p,g,h,j,n,m,o);S1(c[o>>2]|0)|0;c[l>>2]=c[d>>2];h=c[n>>2]|0;d=c[m>>2]|0;c[k+0>>2]=c[l+0>>2];Be(a,k,j,h,d,e,f);i=b;return}function l5(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;i=i+64|0;k=d;p=d+56|0;q=d+44|0;j=d+20|0;n=d+12|0;m=d+8|0;o=d+4|0;l=d+16|0;a[p+0>>0]=a[356504]|0;a[p+1>>0]=a[356505]|0;a[p+2>>0]=a[356506]|0;a[p+3>>0]=a[356507]|0;a[p+4>>0]=a[356508]|0;a[p+5>>0]=a[356509]|0;h5(p+1|0,356408,0,c[f+4>>2]|0);r=K4()|0;c[k>>2]=h;h=q+(Maa(q,12,r,p,k)|0)|0;p=i5(q,h,f)|0;Y2(o,f);j5(q,p,h,j,n,m,o);S1(c[o>>2]|0)|0;c[l>>2]=c[e>>2];h=c[n>>2]|0;e=c[m>>2]|0;c[k+0>>2]=c[l+0>>2];Be(b,k,j,h,e,f,g);i=d;return}function m5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=i;i=i+112|0;k=b+8|0;q=b;p=b+75|0;j=b+32|0;n=b+20|0;m=b+24|0;o=b+16|0;l=b+28|0;r=q;c[r>>2]=37;c[r+4>>2]=0;h5(q+1|0,356416,0,c[e+4>>2]|0);r=K4()|0;s=k;c[s>>2]=g;c[s+4>>2]=h;h=p+(Maa(p,23,r,q,k)|0)|0;g=i5(p,h,e)|0;Y2(o,e);j5(p,g,h,j,n,m,o);S1(c[o>>2]|0)|0;c[l>>2]=c[d>>2];h=c[n>>2]|0;d=c[m>>2]|0;c[k+0>>2]=c[l+0>>2];Be(a,k,j,h,d,e,f);i=b;return}function n5(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;v=i;i=i+144|0;o=v+8|0;j=v;m=v+44|0;l=v+36|0;n=v+74|0;u=v+40|0;t=v+24|0;p=v+20|0;q=v+28|0;r=v+32|0;B=j;c[B>>2]=37;c[B+4>>2]=0;B=o5(j+1|0,356424,c[e+4>>2]|0)|0;c[l>>2]=m;b=K4()|0;if(B){c[o>>2]=c[e+8>>2];B=o+4|0;h[k>>3]=g;c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];b=Maa(m,30,b,j,o)|0}else{h[k>>3]=g;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];b=Maa(m,30,b,j,o)|0}if((b|0)>29){b=K4()|0;c[o>>2]=c[e+8>>2];B=o+4|0;h[k>>3]=g;c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];j=Naa(l,b,j,o)|0;b=c[l>>2]|0;if(!b)lea();else{w=b;z=b;s=j}}else{w=c[l>>2]|0;z=0;s=b}j=w+s|0;l=i5(w,j,e)|0;if((w|0)!=(m|0)){b=qea(s<<1)|0;if(!b)lea();else{x=w;y=b;A=b}}else{x=m;y=0;A=n}Y2(p,e);p5(x,l,j,A,u,t,p);S1(c[p>>2]|0)|0;c[r>>2]=c[d>>2];x=c[u>>2]|0;B=c[t>>2]|0;c[o+0>>2]=c[r+0>>2];Be(q,o,A,x,B,e,f);B=c[q>>2]|0;c[d>>2]=B;c[a>>2]=B;if(y)rea(y);if(z)rea(z);i=v;return}function o5(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(d&2048){a[b>>0]=43;b=b+1|0}if(d&1024){a[b>>0]=35;b=b+1|0}h=d&260;f=d>>>14;i=(h|0)==260;if(i)g=0;else{a[b>>0]=46;a[b+1>>0]=42;b=b+2|0;g=1}e=a[c>>0]|0;if(e<<24>>24)while(1){c=c+1|0;d=b+1|0;a[b>>0]=e;e=a[c>>0]|0;if(!(e<<24>>24)){b=d;break}else b=d}do if((h|0)==256)if(!(f&1)){a[b>>0]=101;break}else{a[b>>0]=69;break}else if((h|0)==4)if(!(f&1)){a[b>>0]=102;break}else{a[b>>0]=70;break}else{d=(f&1|0)!=0;if(i)if(d){a[b>>0]=65;break}else{a[b>>0]=97;break}else if(d){a[b>>0]=71;break}else{a[b>>0]=103;break}}while(0);return g|0}function p5(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=i;i=i+16|0;x=y;w=w8(j,357712)|0;u=w8(j,357856)|0;Cd[c[(c[u>>2]|0)+20>>2]&255](x,u);c[h>>2]=f;j=a[b>>0]|0;if(j<<24>>24==43|j<<24>>24==45){v=Pd[c[(c[w>>2]|0)+28>>2]&511](w,j)|0;n=c[h>>2]|0;c[h>>2]=n+1;a[n>>0]=v;n=b+1|0}else n=b;v=e;a:do if(((v-n|0)>1?(a[n>>0]|0)==48:0)?(k=n+1|0,t=a[k>>0]|0,t<<24>>24==88|t<<24>>24==120):0){t=Pd[c[(c[w>>2]|0)+28>>2]&511](w,48)|0;s=c[h>>2]|0;c[h>>2]=s+1;a[s>>0]=t;n=n+2|0;s=Pd[c[(c[w>>2]|0)+28>>2]&511](w,a[k>>0]|0)|0;t=c[h>>2]|0;c[h>>2]=t+1;a[t>>0]=s;if(n>>>0>>0){k=n;while(1){t=a[k>>0]|0;j=k+1|0;if(!(Dca(t<<24>>24,K4()|0)|0)){t=n;j=k;break a}if(j>>>0>>0)k=j;else{t=n;break}}}else{t=n;j=n}}else o=4;while(0);b:do if((o|0)==4)if(n>>>0>>0){k=n;while(1){t=a[k>>0]|0;j=k+1|0;if(!(Cca(t<<24>>24,K4()|0)|0)){t=n;j=k;break b}if(j>>>0>>0)k=j;else{t=n;break}}}else{t=n;j=n}while(0);k=a[x>>0]|0;if(!(k&1))k=(k&255)>>>1;else k=c[x+4>>2]|0;if(k){if((t|0)!=(j|0)?(l=j+-1|0,l>>>0>t>>>0):0){n=t;k=j;while(1){s=a[n>>0]|0;a[n>>0]=a[l>>0]|0;a[l>>0]=s;n=n+1|0;k=k+-2|0;if(n>>>0>=k>>>0)break;else{s=l;l=k;k=s}}}o=Ed[c[(c[u>>2]|0)+16>>2]&511](u)|0;if(t>>>0>>0){p=x+1|0;q=x+4|0;r=x+8|0;k=0;l=0;s=t;while(1){n=(a[x>>0]&1)==0;if((a[(n?p:c[r>>2]|0)+l>>0]|0)>0?(k|0)==(a[(n?p:c[r>>2]|0)+l>>0]|0):0){k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=o;k=a[x>>0]|0;if(!(k&1))k=(k&255)>>>1;else k=c[q>>2]|0;n=0;l=(l>>>0<(k+-1|0)>>>0&1)+l|0}else n=k;z=Pd[c[(c[w>>2]|0)+28>>2]&511](w,a[s>>0]|0)|0;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=z;s=s+1|0;if(s>>>0>=j>>>0)break;else k=n+1|0}}k=f+(t-b)|0;l=c[h>>2]|0;if((k|0)!=(l|0)?(m=l+-1|0,m>>>0>k>>>0):0)while(1){z=a[k>>0]|0;a[k>>0]=a[m>>0]|0;a[m>>0]=z;k=k+1|0;l=l+-2|0;if(k>>>0>=l>>>0)break;else{z=m;m=l;l=z}}}else{Xd[c[(c[w>>2]|0)+32>>2]&255](w,t,j,c[h>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+(j-t)}c:do if(j>>>0>>0){while(1){k=a[j>>0]|0;if(k<<24>>24==46)break;t=Pd[c[(c[w>>2]|0)+28>>2]&511](w,k)|0;z=c[h>>2]|0;c[h>>2]=z+1;a[z>>0]=t;j=j+1|0;if(j>>>0>=e>>>0)break c}u=Ed[c[(c[u>>2]|0)+12>>2]&511](u)|0;z=c[h>>2]|0;c[h>>2]=z+1;a[z>>0]=u;j=j+1|0}while(0);Xd[c[(c[w>>2]|0)+32>>2]&255](w,j,e,c[h>>2]|0)|0;j=(c[h>>2]|0)+(v-j)|0;c[h>>2]=j;if((d|0)!=(e|0))j=f+(d-b)|0;c[g>>2]=j;v2(x);i=y;return}function q5(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;w=i;i=i+144|0;p=w+8|0;l=w;n=w+44|0;m=w+36|0;o=w+74|0;v=w+40|0;u=w+24|0;q=w+20|0;r=w+28|0;s=w+32|0;j=l;c[j>>2]=37;c[j+4>>2]=0;j=o5(l+1|0,356432,c[e+4>>2]|0)|0;c[m>>2]=n;b=K4()|0;if(j){c[p>>2]=c[e+8>>2];C=p+4|0;h[k>>3]=g;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];b=Maa(n,30,b,l,p)|0}else{h[k>>3]=g;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];b=Maa(n,30,b,l,p)|0}if((b|0)>29){b=K4()|0;if(j){c[p>>2]=c[e+8>>2];j=p+4|0;h[k>>3]=g;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];j=Naa(m,b,l,p)|0}else{h[k>>3]=g;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];j=Naa(m,b,l,p)|0}b=c[m>>2]|0;if(!b)lea();else{x=b;A=b;t=j}}else{x=c[m>>2]|0;A=0;t=b}j=x+t|0;l=i5(x,j,e)|0;if((x|0)!=(n|0)){b=qea(t<<1)|0;if(!b)lea();else{y=x;z=b;B=b}}else{y=n;z=0;B=o}Y2(q,e);p5(y,l,j,B,v,u,q);S1(c[q>>2]|0)|0;c[s>>2]=c[d>>2];d=c[v>>2]|0;C=c[u>>2]|0;c[p+0>>2]=c[s+0>>2];Be(r,p,B,d,C,e,f);c[a>>2]=c[r>>2];rea(z);rea(A);i=w;return}function r5(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=i;i=i+80|0;k=n;o=n+72|0;j=n+52|0;m=n+12|0;q=n+4|0;l=n+8|0;a[o+0>>0]=a[356512]|0;a[o+1>>0]=a[356513]|0;a[o+2>>0]=a[356514]|0;a[o+3>>0]=a[356515]|0;a[o+4>>0]=a[356516]|0;a[o+5>>0]=a[356517]|0;d=K4()|0;c[k>>2]=h;h=Maa(j,20,d,o,k)|0;o=j+h|0;d=i5(j,o,f)|0;Y2(q,f);p=w8(q,357712)|0;S1(c[q>>2]|0)|0;Xd[c[(c[p>>2]|0)+32>>2]&255](p,j,o,m)|0;h=m+h|0;if((d|0)==(o|0))d=h;else d=m+(d-j)|0;c[l>>2]=c[e>>2];c[k+0>>2]=c[l+0>>2];Be(b,k,m,d,h,f,g);i=n;return}function s5(a){a=a|0;return}function t5(a){a=a|0;nda(a);return}function u5(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;j=n+20|0;k=n;l=n+4|0;m=n+8|0;if(!(c[f+4>>2]&1)){l=c[(c[d>>2]|0)+24>>2]|0;c[k>>2]=c[e>>2];c[j+0>>2]=c[k+0>>2];Kd[l&31](b,d,j,f,g,h&1)}else{Y2(l,f);k=w8(l,357864)|0;S1(c[l>>2]|0)|0;j=c[k>>2]|0;if(h)Cd[c[j+24>>2]&255](m,k);else Cd[c[j+28>>2]&255](m,k);j=a[m>>0]|0;if(!(j&1)){h=m+4|0;k=h;l=m+8|0}else{l=m+8|0;k=c[l>>2]|0;h=m+4|0}while(1){if(!(j&1)){f=h;j=(j&255)>>>1}else{f=c[l>>2]|0;j=c[h>>2]|0}if((k|0)==(f+(j<<2)|0))break;j=c[k>>2]|0;f=c[e>>2]|0;if(f){g=f+24|0;d=c[g>>2]|0;if((d|0)==(c[f+28>>2]|0))j=Pd[c[(c[f>>2]|0)+52>>2]&511](f,j)|0;else{c[g>>2]=d+4;c[d>>2]=j}if((j|0)==-1)c[e>>2]=0}j=a[m>>0]|0;k=k+4|0}c[b>>2]=c[e>>2];L2(m)}i=n;return}function v5(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;i=i+128|0;k=d;p=d+116|0;q=d+104|0;j=d+8|0;n=d+92|0;m=d+96|0;o=d+4|0;l=d+100|0;a[p+0>>0]=a[356504]|0;a[p+1>>0]=a[356505]|0;a[p+2>>0]=a[356506]|0;a[p+3>>0]=a[356507]|0;a[p+4>>0]=a[356508]|0;a[p+5>>0]=a[356509]|0;h5(p+1|0,356408,1,c[f+4>>2]|0);r=K4()|0;c[k>>2]=h;h=q+(Maa(q,12,r,p,k)|0)|0;p=i5(q,h,f)|0;Y2(o,f);w5(q,p,h,j,n,m,o);S1(c[o>>2]|0)|0;c[l>>2]=c[e>>2];h=c[n>>2]|0;e=c[m>>2]|0;c[k+0>>2]=c[l+0>>2];Oaa(b,k,j,h,e,f,g);i=d;return}function w5(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=i;i=i+16|0;u=v;t=w8(j,357704)|0;n=w8(j,357864)|0;Cd[c[(c[n>>2]|0)+20>>2]&255](u,n);j=a[u>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[u+4>>2]|0;if(j){c[h>>2]=f;j=a[b>>0]|0;if(j<<24>>24==43|j<<24>>24==45){s=Pd[c[(c[t>>2]|0)+44>>2]&511](t,j)|0;j=c[h>>2]|0;c[h>>2]=j+4;c[j>>2]=s;j=b+1|0}else j=b;if(((e-j|0)>1?(a[j>>0]|0)==48:0)?(l=j+1|0,s=a[l>>0]|0,s<<24>>24==88|s<<24>>24==120):0){s=Pd[c[(c[t>>2]|0)+44>>2]&511](t,48)|0;p=c[h>>2]|0;c[h>>2]=p+4;c[p>>2]=s;p=Pd[c[(c[t>>2]|0)+44>>2]&511](t,a[l>>0]|0)|0;s=c[h>>2]|0;c[h>>2]=s+4;c[s>>2]=p;s=j+2|0}else s=j;if((s|0)!=(e|0)?(k=e+-1|0,k>>>0>s>>>0):0){l=s;j=e;while(1){p=a[l>>0]|0;a[l>>0]=a[k>>0]|0;a[k>>0]=p;l=l+1|0;j=j+-2|0;if(l>>>0>=j>>>0)break;else{p=k;k=j;j=p}}}n=Ed[c[(c[n>>2]|0)+16>>2]&511](n)|0;if(s>>>0>>0){o=u+1|0;p=u+4|0;q=u+8|0;j=0;k=0;r=s;while(1){l=(a[u>>0]&1)==0;if((a[(l?o:c[q>>2]|0)+k>>0]|0)!=0?(j|0)==(a[(l?o:c[q>>2]|0)+k>>0]|0):0){j=c[h>>2]|0;c[h>>2]=j+4;c[j>>2]=n;j=a[u>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[p>>2]|0;l=0;k=(k>>>0<(j+-1|0)>>>0&1)+k|0}else l=j;x=Pd[c[(c[t>>2]|0)+44>>2]&511](t,a[r>>0]|0)|0;w=c[h>>2]|0;j=w+4|0;c[h>>2]=j;c[w>>2]=x;r=r+1|0;if(r>>>0>=e>>>0)break;else j=l+1|0}}else j=c[h>>2]|0;k=f+(s-b<<2)|0;if((k|0)!=(j|0)?(m=j+-4|0,m>>>0>k>>>0):0){l=j;while(1){x=c[k>>2]|0;c[k>>2]=c[m>>2];c[m>>2]=x;k=k+4|0;l=l+-8|0;if(k>>>0>=l>>>0)break;else{x=m;m=l;l=x}}}}else{Xd[c[(c[t>>2]|0)+48>>2]&255](t,b,e,f)|0;j=f+(e-b<<2)|0;c[h>>2]=j}if((d|0)!=(e|0))j=f+(d-b<<2)|0;c[g>>2]=j;v2(u);i=v;return}function x5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=i;i=i+224|0;k=b+8|0;q=b;p=b+196|0;j=b+16|0;n=b+180|0;m=b+184|0;o=b+188|0;l=b+192|0;r=q;c[r>>2]=37;c[r+4>>2]=0;h5(q+1|0,356416,1,c[e+4>>2]|0);r=K4()|0;s=k;c[s>>2]=g;c[s+4>>2]=h;h=p+(Maa(p,22,r,q,k)|0)|0;g=i5(p,h,e)|0;Y2(o,e);w5(p,g,h,j,n,m,o);S1(c[o>>2]|0)|0;c[l>>2]=c[d>>2];h=c[n>>2]|0;d=c[m>>2]|0;c[k+0>>2]=c[l+0>>2];Oaa(a,k,j,h,d,e,f);i=b;return}function y5(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;i=i+128|0;k=d;p=d+116|0;q=d+104|0;j=d+8|0;n=d+92|0;m=d+96|0;o=d+4|0;l=d+100|0;a[p+0>>0]=a[356504]|0;a[p+1>>0]=a[356505]|0;a[p+2>>0]=a[356506]|0;a[p+3>>0]=a[356507]|0;a[p+4>>0]=a[356508]|0;a[p+5>>0]=a[356509]|0;h5(p+1|0,356408,0,c[f+4>>2]|0);r=K4()|0;c[k>>2]=h;h=q+(Maa(q,12,r,p,k)|0)|0;p=i5(q,h,f)|0;Y2(o,f);w5(q,p,h,j,n,m,o);S1(c[o>>2]|0)|0;c[l>>2]=c[e>>2];h=c[n>>2]|0;e=c[m>>2]|0;c[k+0>>2]=c[l+0>>2];Oaa(b,k,j,h,e,f,g);i=d;return}function z5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=i;i=i+240|0;k=b+8|0;q=b;p=b+204|0;j=b+16|0;n=b+188|0;m=b+192|0;o=b+196|0;l=b+200|0;r=q;c[r>>2]=37;c[r+4>>2]=0;h5(q+1|0,356416,0,c[e+4>>2]|0);r=K4()|0;s=k;c[s>>2]=g;c[s+4>>2]=h;h=p+(Maa(p,23,r,q,k)|0)|0;g=i5(p,h,e)|0;Y2(o,e);w5(p,g,h,j,n,m,o);S1(c[o>>2]|0)|0;c[l>>2]=c[d>>2];h=c[n>>2]|0;d=c[m>>2]|0;c[k+0>>2]=c[l+0>>2];Oaa(a,k,j,h,d,e,f);i=b;return}function A5(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;v=i;i=i+304|0;o=v+8|0;j=v;m=v+272|0;l=v+264|0;n=v+36|0;u=v+268|0;t=v+24|0;p=v+20|0;q=v+28|0;r=v+32|0;B=j;c[B>>2]=37;c[B+4>>2]=0;B=o5(j+1|0,356424,c[e+4>>2]|0)|0;c[l>>2]=m;b=K4()|0;if(B){c[o>>2]=c[e+8>>2];B=o+4|0;h[k>>3]=g;c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];b=Maa(m,30,b,j,o)|0}else{h[k>>3]=g;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];b=Maa(m,30,b,j,o)|0}if((b|0)>29){b=K4()|0;c[o>>2]=c[e+8>>2];B=o+4|0;h[k>>3]=g;c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];j=Naa(l,b,j,o)|0;b=c[l>>2]|0;if(!b)lea();else{w=b;z=b;s=j}}else{w=c[l>>2]|0;z=0;s=b}j=w+s|0;l=i5(w,j,e)|0;if((w|0)!=(m|0)){b=qea(s<<3)|0;if(!b)lea();else{x=w;y=b;A=b}}else{x=m;y=0;A=n}Y2(p,e);B5(x,l,j,A,u,t,p);S1(c[p>>2]|0)|0;c[r>>2]=c[d>>2];x=c[u>>2]|0;B=c[t>>2]|0;c[o+0>>2]=c[r+0>>2];Oaa(q,o,A,x,B,e,f);B=c[q>>2]|0;c[d>>2]=B;c[a>>2]=B;if(y)rea(y);rea(z);i=v;return}function B5(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=i;i=i+16|0;y=z;x=w8(j,357704)|0;v=w8(j,357864)|0;Cd[c[(c[v>>2]|0)+20>>2]&255](y,v);c[h>>2]=f;j=a[b>>0]|0;if(j<<24>>24==43|j<<24>>24==45){w=Pd[c[(c[x>>2]|0)+44>>2]&511](x,j)|0;l=c[h>>2]|0;c[h>>2]=l+4;c[l>>2]=w;l=b+1|0}else l=b;w=e;a:do if(((w-l|0)>1?(a[l>>0]|0)==48:0)?(m=l+1|0,u=a[m>>0]|0,u<<24>>24==88|u<<24>>24==120):0){u=Pd[c[(c[x>>2]|0)+44>>2]&511](x,48)|0;t=c[h>>2]|0;c[h>>2]=t+4;c[t>>2]=u;l=l+2|0;t=Pd[c[(c[x>>2]|0)+44>>2]&511](x,a[m>>0]|0)|0;u=c[h>>2]|0;c[h>>2]=u+4;c[u>>2]=t;if(l>>>0>>0){m=l;while(1){u=a[m>>0]|0;j=m+1|0;if(!(Dca(u<<24>>24,K4()|0)|0)){u=l;j=m;break a}if(j>>>0>>0)m=j;else{u=l;break}}}else{u=l;j=l}}else o=4;while(0);b:do if((o|0)==4)if(l>>>0>>0){m=l;while(1){u=a[m>>0]|0;j=m+1|0;if(!(Cca(u<<24>>24,K4()|0)|0)){u=l;j=m;break b}if(j>>>0>>0)m=j;else{u=l;break}}}else{u=l;j=l}while(0);m=a[y>>0]|0;if(!(m&1))m=(m&255)>>>1;else m=c[y+4>>2]|0;if(m){if((u|0)!=(j|0)?(k=j+-1|0,k>>>0>u>>>0):0){l=u;m=j;while(1){t=a[l>>0]|0;a[l>>0]=a[k>>0]|0;a[k>>0]=t;l=l+1|0;m=m+-2|0;if(l>>>0>=m>>>0)break;else{t=k;k=m;m=t}}}p=Ed[c[(c[v>>2]|0)+16>>2]&511](v)|0;if(u>>>0>>0){q=y+1|0;r=y+4|0;s=y+8|0;m=0;l=0;t=u;while(1){o=(a[y>>0]&1)==0;if((a[(o?q:c[s>>2]|0)+l>>0]|0)>0?(m|0)==(a[(o?q:c[s>>2]|0)+l>>0]|0):0){m=c[h>>2]|0;c[h>>2]=m+4;c[m>>2]=p;m=a[y>>0]|0;if(!(m&1))m=(m&255)>>>1;else m=c[r>>2]|0;o=0;l=(l>>>0<(m+-1|0)>>>0&1)+l|0}else o=m;A=Pd[c[(c[x>>2]|0)+44>>2]&511](x,a[t>>0]|0)|0;m=c[h>>2]|0;k=m+4|0;c[h>>2]=k;c[m>>2]=A;t=t+1|0;if(t>>>0>=j>>>0)break;else m=o+1|0}}else k=c[h>>2]|0;l=f+(u-b<<2)|0;if((l|0)!=(k|0)?(n=k+-4|0,n>>>0>l>>>0):0){m=k;while(1){A=c[l>>2]|0;c[l>>2]=c[n>>2];c[n>>2]=A;l=l+4|0;m=m+-8|0;if(l>>>0>=m>>>0)break;else{A=n;n=m;m=A}}}}else{Xd[c[(c[x>>2]|0)+48>>2]&255](x,u,j,c[h>>2]|0)|0;k=(c[h>>2]|0)+(j-u<<2)|0;c[h>>2]=k}c:do if(j>>>0>>0){while(1){k=a[j>>0]|0;if(k<<24>>24==46)break;u=Pd[c[(c[x>>2]|0)+44>>2]&511](x,k)|0;A=c[h>>2]|0;k=A+4|0;c[h>>2]=k;c[A>>2]=u;j=j+1|0;if(j>>>0>=e>>>0)break c}v=Ed[c[(c[v>>2]|0)+12>>2]&511](v)|0;A=c[h>>2]|0;k=A+4|0;c[h>>2]=k;c[A>>2]=v;j=j+1|0}while(0);Xd[c[(c[x>>2]|0)+48>>2]&255](x,j,e,k)|0;j=(c[h>>2]|0)+(w-j<<2)|0;c[h>>2]=j;if((d|0)!=(e|0))j=f+(d-b<<2)|0;c[g>>2]=j;v2(y);i=z;return}function C5(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;w=i;i=i+304|0;p=w+8|0;l=w;n=w+272|0;m=w+264|0;o=w+36|0;v=w+268|0;u=w+24|0;q=w+20|0;r=w+28|0;s=w+32|0;j=l;c[j>>2]=37;c[j+4>>2]=0;j=o5(l+1|0,356432,c[e+4>>2]|0)|0;c[m>>2]=n;b=K4()|0;if(j){c[p>>2]=c[e+8>>2];C=p+4|0;h[k>>3]=g;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];b=Maa(n,30,b,l,p)|0}else{h[k>>3]=g;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];b=Maa(n,30,b,l,p)|0}if((b|0)>29){b=K4()|0;if(j){c[p>>2]=c[e+8>>2];j=p+4|0;h[k>>3]=g;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];j=Naa(m,b,l,p)|0}else{h[k>>3]=g;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];j=Naa(m,b,l,p)|0}b=c[m>>2]|0;if(!b)lea();else{x=b;A=b;t=j}}else{x=c[m>>2]|0;A=0;t=b}j=x+t|0;l=i5(x,j,e)|0;if((x|0)!=(n|0)){b=qea(t<<3)|0;if(!b)lea();else{y=x;z=b;B=b}}else{y=n;z=0;B=o}Y2(q,e);B5(y,l,j,B,v,u,q);S1(c[q>>2]|0)|0;c[s>>2]=c[d>>2];y=c[v>>2]|0;C=c[u>>2]|0;c[p+0>>2]=c[s+0>>2];Oaa(r,p,B,y,C,e,f);C=c[r>>2]|0;c[d>>2]=C;c[a>>2]=C;if(z)rea(z);rea(A);i=w;return}function D5(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=i;i=i+192|0;k=n;o=n+180|0;j=n+160|0;m=n+8|0;q=n+4|0;l=n+156|0;a[o+0>>0]=a[356512]|0;a[o+1>>0]=a[356513]|0;a[o+2>>0]=a[356514]|0;a[o+3>>0]=a[356515]|0;a[o+4>>0]=a[356516]|0;a[o+5>>0]=a[356517]|0;d=K4()|0;c[k>>2]=h;h=Maa(j,20,d,o,k)|0;o=j+h|0;d=i5(j,o,f)|0;Y2(q,f);p=w8(q,357704)|0;S1(c[q>>2]|0)|0;Xd[c[(c[p>>2]|0)+48>>2]&255](p,j,o,m)|0;h=m+(h<<2)|0;if((d|0)==(o|0))d=h;else d=m+(d-j<<2)|0;c[l>>2]=c[e>>2];c[k+0>>2]=c[l+0>>2];Oaa(b,k,m,d,h,f,g);i=n;return}function E5(e,f,g,h,j,k,l,m,n){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+32|0;w=E+20|0;v=E;C=E+4|0;x=E+8|0;y=E+12|0;z=E+16|0;Y2(C,j);A=w8(C,357712)|0;S1(c[C>>2]|0)|0;c[k>>2]=0;a:do if((m|0)!=(n|0)){C=A+8|0;o=m;b:while(1){m=c[g>>2]|0;if(m){if((c[m+12>>2]|0)==(c[m+16>>2]|0)?(Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1:0){c[g>>2]=0;m=0}}else m=0;p=(m|0)==0;q=c[h>>2]|0;do if(q){if((c[q+12>>2]|0)==(c[q+16>>2]|0)?(Ed[c[(c[q>>2]|0)+36>>2]&511](q)|0)==-1:0){c[h>>2]=0;D=13;break}if(!p){D=14;break b}}else D=13;while(0);if((D|0)==13){D=0;if(p){D=14;break}else q=0}c:do if((Hd[c[(c[A>>2]|0)+36>>2]&255](A,a[o>>0]|0,0)|0)<<24>>24==37){r=o+1|0;if((r|0)==(n|0)){D=17;break b}p=Hd[c[(c[A>>2]|0)+36>>2]&255](A,a[r>>0]|0,0)|0;if(p<<24>>24==48|p<<24>>24==69){s=o+2|0;if((s|0)==(n|0)){D=20;break b}o=r;s=Hd[c[(c[A>>2]|0)+36>>2]&255](A,a[s>>0]|0,0)|0}else{s=p;p=0}t=c[(c[f>>2]|0)+36>>2]|0;c[y>>2]=m;c[z>>2]=q;c[v+0>>2]=c[y+0>>2];c[w+0>>2]=c[z+0>>2];Od[t&31](x,f,v,w,j,k,l,s,p);m=c[x>>2]|0;c[g>>2]=m;o=o+2|0}else{p=a[o>>0]|0;if(p<<24>>24>-1?(B=c[C>>2]|0,(b[B+(p<<24>>24<<1)>>1]&8192)!=0):0){do{o=o+1|0;if((o|0)==(n|0)){o=n;break}p=a[o>>0]|0;if(p<<24>>24<=-1)break}while((b[B+(p<<24>>24<<1)>>1]&8192)!=0);p=m;r=q;s=q;while(1){if(p)if((c[p+12>>2]|0)==(c[p+16>>2]|0)?(Ed[c[(c[p>>2]|0)+36>>2]&511](p)|0)==-1:0){c[g>>2]=0;m=0;u=0}else u=p;else u=0;p=(u|0)==0;do if(s){if((c[s+12>>2]|0)!=(c[s+16>>2]|0))if(p){q=r;break}else break c;if((Ed[c[(c[s>>2]|0)+36>>2]&511](s)|0)!=-1)if(p^(r|0)==0){q=r;s=r;break}else break c;else{c[h>>2]=0;q=0;D=39;break}}else{q=r;D=39}while(0);if((D|0)==39){D=0;if(p)break c;else s=0}r=u+12|0;p=c[r>>2]|0;t=u+16|0;if((p|0)==(c[t>>2]|0))p=Ed[c[(c[u>>2]|0)+36>>2]&511](u)|0;else p=d[p>>0]|0;if((p&255)<<24>>24<=-1)break c;if(!(b[(c[C>>2]|0)+(p<<24>>24<<1)>>1]&8192))break c;p=c[r>>2]|0;if((p|0)==(c[t>>2]|0)){Ed[c[(c[u>>2]|0)+40>>2]&511](u)|0;p=u;r=q;continue}else{c[r>>2]=p+1;p=u;r=q;continue}}}p=m+12|0;q=c[p>>2]|0;s=m+16|0;if((q|0)==(c[s>>2]|0))q=Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0;else q=d[q>>0]|0;t=Pd[c[(c[A>>2]|0)+12>>2]&511](A,q&255)|0;if(t<<24>>24!=(Pd[c[(c[A>>2]|0)+12>>2]&511](A,a[o>>0]|0)|0)<<24>>24){D=57;break b}q=c[p>>2]|0;if((q|0)==(c[s>>2]|0))Ed[c[(c[m>>2]|0)+40>>2]&511](m)|0;else c[p>>2]=q+1;o=o+1|0}while(0);if(!((o|0)!=(n|0)&(c[k>>2]|0)==0))break a}if((D|0)==14){c[k>>2]=4;break}else if((D|0)==17){c[k>>2]=4;break}else if((D|0)==20){c[k>>2]=4;break}else if((D|0)==57){c[k>>2]=4;break}}else m=c[g>>2]|0;while(0);if(m){if((c[m+12>>2]|0)==(c[m+16>>2]|0)?(Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1:0){c[g>>2]=0;m=0}}else m=0;o=(m|0)==0;p=c[h>>2]|0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0)?(Ed[c[(c[p>>2]|0)+36>>2]&511](p)|0)==-1:0){c[h>>2]=0;D=67;break}if(!o)D=68}else D=67;while(0);if((D|0)==67?o:0)D=68;if((D|0)==68)c[k>>2]=c[k>>2]|2;c[e>>2]=m;i=E;return}function F5(a){a=a|0;return}function G5(a){a=a|0;nda(a);return}function H5(a){a=a|0;return 2}function I5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];E5(a,b,l,k,f,g,h,356616,356624|0);i=j;return}function J5(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;n=q+12|0;m=q;o=q+4|0;p=q+8|0;l=d+8|0;l=Ed[c[(c[l>>2]|0)+20>>2]&511](l)|0;c[o>>2]=c[e>>2];c[p>>2]=c[f>>2];e=a[l>>0]|0;if(!(e&1)){k=l+1|0;f=(e&255)>>>1;e=l+1|0}else{e=c[l+8>>2]|0;k=e;f=c[l+4>>2]|0}c[m+0>>2]=c[o+0>>2];c[n+0>>2]=c[p+0>>2];E5(b,d,m,n,g,h,j,e,k+f|0);i=q;return}function K5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;i=i+16|0;k=j+8|0;m=j;l=j+4|0;Y2(m,f);f=w8(m,357712)|0;S1(c[m>>2]|0)|0;c[l>>2]=c[e>>2];c[k+0>>2]=c[l+0>>2];L5(b,h+24|0,d,k,g,f);c[a>>2]=c[d>>2];i=j;return}function L5(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;h=i;i=i+16|0;j=h+4|0;k=h;a=a+8|0;a=Ed[c[c[a>>2]>>2]&511](a)|0;c[k>>2]=c[e>>2];c[j+0>>2]=c[k+0>>2];d=(raa(d,j,a,a+168|0,g,f,0)|0)-a|0;if((d|0)<168)c[b>>2]=((d|0)/12|0|0)%7|0;i=h;return}function M5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;i=i+16|0;k=j+8|0;m=j;l=j+4|0;Y2(m,f);f=w8(m,357712)|0;S1(c[m>>2]|0)|0;c[l>>2]=c[e>>2];c[k+0>>2]=c[l+0>>2];N5(b,h+16|0,d,k,g,f);c[a>>2]=c[d>>2];i=j;return}function N5(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;h=i;i=i+16|0;j=h+4|0;k=h;a=a+8|0;a=Ed[c[(c[a>>2]|0)+4>>2]&511](a)|0;c[k>>2]=c[e>>2];c[j+0>>2]=c[k+0>>2];d=(raa(d,j,a,a+288|0,g,f,0)|0)-a|0;if((d|0)<288)c[b>>2]=((d|0)/12|0|0)%12|0;i=h;return}function O5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;i=i+16|0;k=j+8|0;m=j;l=j+4|0;Y2(m,f);f=w8(m,357712)|0;S1(c[m>>2]|0)|0;c[l>>2]=c[e>>2];c[k+0>>2]=c[l+0>>2];P5(b,h+20|0,d,k,g,f);c[a>>2]=c[d>>2];i=j;return}function P5(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Paa(d,a,f,g,4)|0;if(!(c[f>>2]&4)){if((a|0)<69)a=a+2e3|0;else a=(a+-69|0)>>>0<31?a+1900|0:a;c[b>>2]=a+-1900}i=h;return}function Q5(b,d,e,f,g,h,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;$=i;i=i+176|0;_=$+160|0;Z=$+156|0;aa=$+152|0;v=$+148|0;G=$+144|0;W=$+140|0;X=$+136|0;Y=$+132|0;P=$+128|0;Q=$+124|0;R=$+120|0;l=$+116|0;o=$+112|0;m=$+108|0;n=$+104|0;p=$+100|0;q=$+96|0;r=$+92|0;s=$+88|0;t=$+84|0;u=$+80|0;w=$+32|0;x=$+28|0;y=$+24|0;z=$+20|0;A=$+16|0;B=$+8|0;C=$+4|0;D=$;E=$+12|0;F=$+36|0;H=$+40|0;I=$+44|0;J=$+48|0;K=$+52|0;T=$+56|0;U=$+60|0;V=$+64|0;L=$+68|0;M=$+72|0;N=$+76|0;c[h>>2]=0;Y2(aa,g);O=w8(aa,357712)|0;S1(c[aa>>2]|0)|0;do switch(k<<24>>24|0){case 82:{c[B>>2]=c[e>>2];c[C>>2]=c[f>>2];c[Z+0>>2]=c[B+0>>2];c[_+0>>2]=c[C+0>>2];E5(A,d,Z,_,g,h,j,356656,356661|0);c[e>>2]=c[A>>2];S=32;break}case 88:{n=d+8|0;n=Ed[c[(c[n>>2]|0)+24>>2]&511](n)|0;c[U>>2]=c[e>>2];c[V>>2]=c[f>>2];l=a[n>>0]|0;if(!(l&1)){o=n+1|0;m=(l&255)>>>1;l=n+1|0}else{l=c[n+8>>2]|0;o=l;m=c[n+4>>2]|0}c[Z+0>>2]=c[U+0>>2];c[_+0>>2]=c[V+0>>2];E5(T,d,Z,_,g,h,j,l,o+m|0);c[e>>2]=c[T>>2];S=32;break}case 104:case 66:case 98:{c[G>>2]=c[f>>2];c[_+0>>2]=c[G+0>>2];N5(d,j+16|0,e,_,h,O);S=32;break}case 119:{c[I>>2]=c[f>>2];c[_+0>>2]=c[I+0>>2];_5(d,j+24|0,e,_,h,O);S=32;break}case 65:case 97:{c[v>>2]=c[f>>2];c[_+0>>2]=c[v+0>>2];L5(d,j+24|0,e,_,h,O);S=32;break}case 99:{o=d+8|0;o=Ed[c[(c[o>>2]|0)+12>>2]&511](o)|0;c[X>>2]=c[e>>2];c[Y>>2]=c[f>>2];l=a[o>>0]|0;if(!(l&1)){n=o+1|0;m=(l&255)>>>1;l=o+1|0}else{l=c[o+8>>2]|0;n=l;m=c[o+4>>2]|0}c[Z+0>>2]=c[X+0>>2];c[_+0>>2]=c[Y+0>>2];E5(W,d,Z,_,g,h,j,l,n+m|0);c[e>>2]=c[W>>2];S=32;break}case 101:case 100:{c[P>>2]=c[f>>2];c[_+0>>2]=c[P+0>>2];R5(d,j+12|0,e,_,h,O);S=32;break}case 70:{c[m>>2]=c[e>>2];c[n>>2]=c[f>>2];c[Z+0>>2]=c[m+0>>2];c[_+0>>2]=c[n+0>>2];E5(o,d,Z,_,g,h,j,356632,356640|0);c[e>>2]=c[o>>2];S=32;break}case 106:{c[r>>2]=c[f>>2];c[_+0>>2]=c[r+0>>2];U5(d,j+28|0,e,_,h,O);S=32;break}case 109:{c[s>>2]=c[f>>2];c[_+0>>2]=c[s+0>>2];V5(d,j+16|0,e,_,h,O);S=32;break}case 77:{c[t>>2]=c[f>>2];c[_+0>>2]=c[t+0>>2];W5(d,j+4|0,e,_,h,O);S=32;break}case 116:case 110:{c[u>>2]=c[f>>2];c[_+0>>2]=c[u+0>>2];X5(d,e,_,h,O);S=32;break}case 84:{c[F>>2]=c[e>>2];c[H>>2]=c[f>>2];c[Z+0>>2]=c[F+0>>2];c[_+0>>2]=c[H+0>>2];E5(E,d,Z,_,g,h,j,356664,356672|0);c[e>>2]=c[E>>2];S=32;break}case 120:{T=c[(c[d>>2]|0)+20>>2]|0;c[J>>2]=c[e>>2];c[K>>2]=c[f>>2];c[Z+0>>2]=c[J+0>>2];c[_+0>>2]=c[K+0>>2];Md[T&63](b,d,Z,_,g,h,j);break}case 68:{c[R>>2]=c[e>>2];c[l>>2]=c[f>>2];c[Z+0>>2]=c[R+0>>2];c[_+0>>2]=c[l+0>>2];E5(Q,d,Z,_,g,h,j,356624,356632|0);c[e>>2]=c[Q>>2];S=32;break}case 114:{c[y>>2]=c[e>>2];c[z>>2]=c[f>>2];c[Z+0>>2]=c[y+0>>2];c[_+0>>2]=c[z+0>>2];E5(x,d,Z,_,g,h,j,356640,356651|0);c[e>>2]=c[x>>2];S=32;break}case 89:{c[M>>2]=c[f>>2];c[_+0>>2]=c[M+0>>2];$5(d,j+20|0,e,_,h,O);S=32;break}case 83:{c[D>>2]=c[f>>2];c[_+0>>2]=c[D+0>>2];Z5(d,j,e,_,h,O);S=32;break}case 37:{c[N>>2]=c[f>>2];c[_+0>>2]=c[N+0>>2];a6(d,e,_,h,O);S=32;break}case 112:{c[w>>2]=c[f>>2];c[_+0>>2]=c[w+0>>2];Y5(d,j+8|0,e,_,h,O);S=32;break}case 121:{c[L>>2]=c[f>>2];c[_+0>>2]=c[L+0>>2];P5(d,j+20|0,e,_,h,O);S=32;break}case 72:{c[p>>2]=c[f>>2];c[_+0>>2]=c[p+0>>2];S5(d,j+8|0,e,_,h,O);S=32;break}case 73:{c[q>>2]=c[f>>2];c[_+0>>2]=c[q+0>>2];T5(d,j+8|0,e,_,h,O);S=32;break}default:{c[h>>2]=c[h>>2]|4;S=32}}while(0);if((S|0)==32)c[b>>2]=c[e>>2];i=$;return}function R5(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Paa(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)>0&(a|0)<32)c[b>>2]=a;else c[f>>2]=d|4;i=h;return}function S5(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Paa(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<24)c[b>>2]=a;else c[f>>2]=d|4;i=h;return}function T5(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Paa(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)>0&(a|0)<13)c[b>>2]=a;else c[f>>2]=d|4;i=h;return}function U5(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Paa(d,a,f,g,3)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<366)c[b>>2]=a;else c[f>>2]=d|4;i=h;return}function V5(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Paa(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<13)c[b>>2]=a+-1;else c[f>>2]=d|4;i=h;return}function W5(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Paa(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<60)c[b>>2]=a;else c[f>>2]=d|4;i=h;return}function X5(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;j=h+8|0;a:while(1){h=c[e>>2]|0;do if(h){if((c[h+12>>2]|0)==(c[h+16>>2]|0))if((Ed[c[(c[h>>2]|0)+36>>2]&511](h)|0)==-1){c[e>>2]=0;h=0;break}else{h=c[e>>2]|0;break}}else h=0;while(0);h=(h|0)==0;a=c[f>>2]|0;do if(a){if((c[a+12>>2]|0)!=(c[a+16>>2]|0))if(h)break;else break a;if((Ed[c[(c[a>>2]|0)+36>>2]&511](a)|0)!=-1)if(h)break;else break a;else{c[f>>2]=0;k=12;break}}else k=12;while(0);if((k|0)==12){k=0;if(h){a=0;break}else a=0}h=c[e>>2]|0;i=c[h+12>>2]|0;if((i|0)==(c[h+16>>2]|0))h=Ed[c[(c[h>>2]|0)+36>>2]&511](h)|0;else h=d[i>>0]|0;if((h&255)<<24>>24<=-1)break;if(!(b[(c[j>>2]|0)+(h<<24>>24<<1)>>1]&8192))break;h=c[e>>2]|0;a=h+12|0;i=c[a>>2]|0;if((i|0)==(c[h+16>>2]|0)){Ed[c[(c[h>>2]|0)+40>>2]&511](h)|0;continue}else{c[a>>2]=i+1;continue}}h=c[e>>2]|0;do if(h){if((c[h+12>>2]|0)==(c[h+16>>2]|0))if((Ed[c[(c[h>>2]|0)+36>>2]&511](h)|0)==-1){c[e>>2]=0;h=0;break}else{h=c[e>>2]|0;break}}else h=0;while(0);h=(h|0)==0;do if(a){if((c[a+12>>2]|0)==(c[a+16>>2]|0)?(Ed[c[(c[a>>2]|0)+36>>2]&511](a)|0)==-1:0){c[f>>2]=0;k=32;break}if(!h)k=33}else k=32;while(0);if((k|0)==32?h:0)k=33;if((k|0)==33)c[g>>2]=c[g>>2]|2;return}function Y5(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;k=n+4|0;l=n;m=b+8|0;m=Ed[c[(c[m>>2]|0)+8>>2]&511](m)|0;b=a[m>>0]|0;if(!(b&1))j=(b&255)>>>1;else j=c[m+4>>2]|0;b=a[m+12>>0]|0;if(!(b&1))b=(b&255)>>>1;else b=c[m+16>>2]|0;do if((j|0)!=(0-b|0)){c[l>>2]=c[f>>2];c[k+0>>2]=c[l+0>>2];b=raa(e,k,m,m+24|0,h,g,0)|0;j=c[d>>2]|0;if((b|0)==(m|0)&(j|0)==12){c[d>>2]=0;break}if((b-m|0)==12&(j|0)<12)c[d>>2]=j+12}else c[g>>2]=c[g>>2]|4;while(0);i=n;return}function Z5(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Paa(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<61)c[b>>2]=a;else c[f>>2]=d|4;i=h;return}function _5(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Paa(d,a,f,g,1)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<7)c[b>>2]=a;else c[f>>2]=d|4;i=h;return}function $5(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Paa(d,a,f,g,4)|0;if(!(c[f>>2]&4))c[b>>2]=a+-1900;i=h;return}function a6(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;a=c[b>>2]|0;do if(a){if((c[a+12>>2]|0)==(c[a+16>>2]|0))if((Ed[c[(c[a>>2]|0)+36>>2]&511](a)|0)==-1){c[b>>2]=0;a=0;break}else{a=c[b>>2]|0;break}}else a=0;while(0);h=(a|0)==0;a=c[e>>2]|0;do if(a){if((c[a+12>>2]|0)==(c[a+16>>2]|0)?(Ed[c[(c[a>>2]|0)+36>>2]&511](a)|0)==-1:0){c[e>>2]=0;j=11;break}if(h){i=a;j=13}else j=12}else j=11;while(0);if((j|0)==11)if(h)j=12;else{i=0;j=13}a:do if((j|0)==12)c[f>>2]=c[f>>2]|6;else if((j|0)==13){a=c[b>>2]|0;h=c[a+12>>2]|0;if((h|0)==(c[a+16>>2]|0))a=Ed[c[(c[a>>2]|0)+36>>2]&511](a)|0;else a=d[h>>0]|0;if((Hd[c[(c[g>>2]|0)+36>>2]&255](g,a&255,0)|0)<<24>>24!=37){c[f>>2]=c[f>>2]|4;break}a=c[b>>2]|0;h=a+12|0;g=c[h>>2]|0;if((g|0)==(c[a+16>>2]|0)){Ed[c[(c[a>>2]|0)+40>>2]&511](a)|0;a=c[b>>2]|0}else c[h>>2]=g+1;do if(a){if((c[a+12>>2]|0)==(c[a+16>>2]|0))if((Ed[c[(c[a>>2]|0)+36>>2]&511](a)|0)==-1){c[b>>2]=0;a=0;break}else{a=c[b>>2]|0;break}}else a=0;while(0);a=(a|0)==0;do if(i){if((c[i+12>>2]|0)==(c[i+16>>2]|0)?(Ed[c[(c[i>>2]|0)+36>>2]&511](i)|0)==-1:0){c[e>>2]=0;j=31;break}if(a)break a}else j=31;while(0);if((j|0)==31?!a:0)break;c[f>>2]=c[f>>2]|2}while(0);return}function b6(a,b,d,e,f,g,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+32|0;u=A+20|0;t=A;q=A+4|0;v=A+8|0;w=A+12|0;x=A+16|0;Y2(q,f);y=w8(q,357704)|0;S1(c[q>>2]|0)|0;c[g>>2]=0;a:do if((j|0)!=(k|0)){n=j;b:while(1){l=c[d>>2]|0;do if(l){j=c[l+12>>2]|0;if((j|0)==(c[l+16>>2]|0))j=Ed[c[(c[l>>2]|0)+36>>2]&511](l)|0;else j=c[j>>2]|0;if((j|0)==-1){c[d>>2]=0;j=0;m=1;break}else{j=l;m=(l|0)==0;break}}else{j=0;m=1}while(0);o=c[e>>2]|0;do if(o){l=c[o+12>>2]|0;if((l|0)==(c[o+16>>2]|0))l=Ed[c[(c[o>>2]|0)+36>>2]&511](o)|0;else l=c[l>>2]|0;if((l|0)!=-1)if(m)break;else{z=19;break b}else{c[e>>2]=0;z=17;break}}else z=17;while(0);if((z|0)==17){z=0;if(m){z=19;break}else o=0}c:do if((Hd[c[(c[y>>2]|0)+52>>2]&255](y,c[n>>2]|0,0)|0)<<24>>24==37){m=n+4|0;if((m|0)==(k|0)){z=22;break b}l=Hd[c[(c[y>>2]|0)+52>>2]&255](y,c[m>>2]|0,0)|0;if(l<<24>>24==48|l<<24>>24==69){p=n+8|0;if((p|0)==(k|0)){z=25;break b}n=m;m=Hd[c[(c[y>>2]|0)+52>>2]&255](y,c[p>>2]|0,0)|0}else{m=l;l=0}q=c[(c[b>>2]|0)+36>>2]|0;c[w>>2]=j;c[x>>2]=o;c[t+0>>2]=c[w+0>>2];c[u+0>>2]=c[x+0>>2];Od[q&31](v,b,t,u,f,g,h,m,l);j=c[v>>2]|0;c[d>>2]=j;n=n+8|0}else{if(!(Hd[c[(c[y>>2]|0)+12>>2]&255](y,8192,c[n>>2]|0)|0)){m=j+12|0;l=c[m>>2]|0;p=j+16|0;if((l|0)==(c[p>>2]|0))l=Ed[c[(c[j>>2]|0)+36>>2]&511](j)|0;else l=c[l>>2]|0;q=Pd[c[(c[y>>2]|0)+28>>2]&511](y,l)|0;if((q|0)!=(Pd[c[(c[y>>2]|0)+28>>2]&511](y,c[n>>2]|0)|0)){z=62;break b}l=c[m>>2]|0;if((l|0)==(c[p>>2]|0))Ed[c[(c[j>>2]|0)+40>>2]&511](j)|0;else c[m>>2]=l+4;n=n+4|0;break}do{n=n+4|0;if((n|0)==(k|0)){n=k;break}}while(Hd[c[(c[y>>2]|0)+12>>2]&255](y,8192,c[n>>2]|0)|0);m=j;r=o;p=o;while(1){if(m){l=c[m+12>>2]|0;if((l|0)==(c[m+16>>2]|0))l=Ed[c[(c[m>>2]|0)+36>>2]&511](m)|0;else l=c[l>>2]|0;if((l|0)==-1){c[d>>2]=0;j=0;s=0;m=1}else{s=m;m=0}}else{s=0;m=1}do if(p){l=c[p+12>>2]|0;if((l|0)==(c[p+16>>2]|0))l=Ed[c[(c[p>>2]|0)+36>>2]&511](p)|0;else l=c[l>>2]|0;if((l|0)!=-1)if(m^(r|0)==0){l=r;q=r;break}else break c;else{c[e>>2]=0;l=0;z=45;break}}else{l=r;z=45}while(0);if((z|0)==45){z=0;if(m)break c;else q=0}o=s+12|0;m=c[o>>2]|0;p=s+16|0;if((m|0)==(c[p>>2]|0))m=Ed[c[(c[s>>2]|0)+36>>2]&511](s)|0;else m=c[m>>2]|0;if(!(Hd[c[(c[y>>2]|0)+12>>2]&255](y,8192,m)|0))break c;m=c[o>>2]|0;if((m|0)==(c[p>>2]|0)){Ed[c[(c[s>>2]|0)+40>>2]&511](s)|0;m=s;r=l;p=q;continue}else{c[o>>2]=m+4;m=s;r=l;p=q;continue}}}while(0);if(!((n|0)!=(k|0)&(c[g>>2]|0)==0))break a}if((z|0)==19){c[g>>2]=4;break}else if((z|0)==22){c[g>>2]=4;break}else if((z|0)==25){c[g>>2]=4;break}else if((z|0)==62){c[g>>2]=4;break}}else j=c[d>>2]|0;while(0);if(j){l=c[j+12>>2]|0;if((l|0)==(c[j+16>>2]|0))l=Ed[c[(c[j>>2]|0)+36>>2]&511](j)|0;else l=c[l>>2]|0;if((l|0)==-1){c[d>>2]=0;j=0;n=1}else n=0}else{j=0;n=1}l=c[e>>2]|0;do if(l){m=c[l+12>>2]|0;if((m|0)==(c[l+16>>2]|0))l=Ed[c[(c[l>>2]|0)+36>>2]&511](l)|0;else l=c[m>>2]|0;if((l|0)!=-1)if(n)break;else{z=77;break}else{c[e>>2]=0;z=75;break}}else z=75;while(0);if((z|0)==75?n:0)z=77;if((z|0)==77)c[g>>2]=c[g>>2]|2;c[a>>2]=j;i=A;return}function c6(a){a=a|0;return}function d6(a){a=a|0;nda(a);return}function e6(a){a=a|0;return 2}function f6(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];b6(a,b,l,k,f,g,h,356768,356800|0);i=j;return}function g6(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;n=q+12|0;m=q;o=q+4|0;p=q+8|0;l=d+8|0;l=Ed[c[(c[l>>2]|0)+20>>2]&511](l)|0;c[o>>2]=c[e>>2];c[p>>2]=c[f>>2];e=a[l>>0]|0;if(!(e&1)){k=l+4|0;f=(e&255)>>>1;e=l+4|0}else{e=c[l+8>>2]|0;k=e;f=c[l+4>>2]|0}c[m+0>>2]=c[o+0>>2];c[n+0>>2]=c[p+0>>2];b6(b,d,m,n,g,h,j,e,k+(f<<2)|0);i=q;return}function h6(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;i=i+16|0;k=j+8|0;m=j;l=j+4|0;Y2(m,f);f=w8(m,357704)|0;S1(c[m>>2]|0)|0;c[l>>2]=c[e>>2];c[k+0>>2]=c[l+0>>2];i6(b,h+24|0,d,k,g,f);c[a>>2]=c[d>>2];i=j;return}function i6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;h=i;i=i+16|0;j=h+4|0;k=h;a=a+8|0;a=Ed[c[c[a>>2]>>2]&511](a)|0;c[k>>2]=c[e>>2];c[j+0>>2]=c[k+0>>2];d=(Caa(d,j,a,a+168|0,g,f,0)|0)-a|0;if((d|0)<168)c[b>>2]=((d|0)/12|0|0)%7|0;i=h;return}function j6(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;i=i+16|0;k=j+8|0;m=j;l=j+4|0;Y2(m,f);f=w8(m,357704)|0;S1(c[m>>2]|0)|0;c[l>>2]=c[e>>2];c[k+0>>2]=c[l+0>>2];k6(b,h+16|0,d,k,g,f);c[a>>2]=c[d>>2];i=j;return}function k6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;h=i;i=i+16|0;j=h+4|0;k=h;a=a+8|0;a=Ed[c[(c[a>>2]|0)+4>>2]&511](a)|0;c[k>>2]=c[e>>2];c[j+0>>2]=c[k+0>>2];d=(Caa(d,j,a,a+288|0,g,f,0)|0)-a|0;if((d|0)<288)c[b>>2]=((d|0)/12|0|0)%12|0;i=h;return}function l6(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;i=i+16|0;k=j+8|0;m=j;l=j+4|0;Y2(m,f);f=w8(m,357704)|0;S1(c[m>>2]|0)|0;c[l>>2]=c[e>>2];c[k+0>>2]=c[l+0>>2];m6(b,h+20|0,d,k,g,f);c[a>>2]=c[d>>2];i=j;return}function m6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Qaa(d,a,f,g,4)|0;if(!(c[f>>2]&4)){if((a|0)<69)a=a+2e3|0;else a=(a+-69|0)>>>0<31?a+1900|0:a;c[b>>2]=a+-1900}i=h;return}function n6(b,d,e,f,g,h,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;$=i;i=i+176|0;_=$+160|0;Z=$+156|0;aa=$+152|0;v=$+148|0;G=$+144|0;W=$+140|0;X=$+136|0;Y=$+132|0;P=$+128|0;Q=$+124|0;R=$+120|0;l=$+116|0;o=$+112|0;m=$+108|0;n=$+104|0;p=$+100|0;q=$+96|0;r=$+92|0;s=$+88|0;t=$+84|0;u=$+80|0;w=$+32|0;x=$+28|0;y=$+24|0;z=$+20|0;A=$+16|0;B=$+8|0;C=$+4|0;D=$;E=$+12|0;F=$+36|0;H=$+40|0;I=$+44|0;J=$+48|0;K=$+52|0;T=$+56|0;U=$+60|0;V=$+64|0;L=$+68|0;M=$+72|0;N=$+76|0;c[h>>2]=0;Y2(aa,g);O=w8(aa,357704)|0;S1(c[aa>>2]|0)|0;do switch(k<<24>>24|0){case 77:{c[t>>2]=c[f>>2];c[_+0>>2]=c[t+0>>2];t6(d,j+4|0,e,_,h,O);S=32;break}case 116:case 110:{c[u>>2]=c[f>>2];c[_+0>>2]=c[u+0>>2];u6(d,e,_,h,O);S=32;break}case 112:{c[w>>2]=c[f>>2];c[_+0>>2]=c[w+0>>2];v6(d,j+8|0,e,_,h,O);S=32;break}case 73:{c[q>>2]=c[f>>2];c[_+0>>2]=c[q+0>>2];q6(d,j+8|0,e,_,h,O);S=32;break}case 65:case 97:{c[v>>2]=c[f>>2];c[_+0>>2]=c[v+0>>2];i6(d,j+24|0,e,_,h,O);S=32;break}case 104:case 66:case 98:{c[G>>2]=c[f>>2];c[_+0>>2]=c[G+0>>2];k6(d,j+16|0,e,_,h,O);S=32;break}case 99:{o=d+8|0;o=Ed[c[(c[o>>2]|0)+12>>2]&511](o)|0;c[X>>2]=c[e>>2];c[Y>>2]=c[f>>2];l=a[o>>0]|0;if(!(l&1)){n=o+4|0;m=(l&255)>>>1;l=o+4|0}else{l=c[o+8>>2]|0;n=l;m=c[o+4>>2]|0}c[Z+0>>2]=c[X+0>>2];c[_+0>>2]=c[Y+0>>2];b6(W,d,Z,_,g,h,j,l,n+(m<<2)|0);c[e>>2]=c[W>>2];S=32;break}case 101:case 100:{c[P>>2]=c[f>>2];c[_+0>>2]=c[P+0>>2];o6(d,j+12|0,e,_,h,O);S=32;break}case 70:{c[m>>2]=c[e>>2];c[n>>2]=c[f>>2];c[Z+0>>2]=c[m+0>>2];c[_+0>>2]=c[n+0>>2];b6(o,d,Z,_,g,h,j,356832,356864|0);c[e>>2]=c[o>>2];S=32;break}case 68:{c[R>>2]=c[e>>2];c[l>>2]=c[f>>2];c[Z+0>>2]=c[R+0>>2];c[_+0>>2]=c[l+0>>2];b6(Q,d,Z,_,g,h,j,356800,356832|0);c[e>>2]=c[Q>>2];S=32;break}case 109:{c[s>>2]=c[f>>2];c[_+0>>2]=c[s+0>>2];s6(d,j+16|0,e,_,h,O);S=32;break}case 72:{c[p>>2]=c[f>>2];c[_+0>>2]=c[p+0>>2];p6(d,j+8|0,e,_,h,O);S=32;break}case 106:{c[r>>2]=c[f>>2];c[_+0>>2]=c[r+0>>2];r6(d,j+28|0,e,_,h,O);S=32;break}case 37:{c[N>>2]=c[f>>2];c[_+0>>2]=c[N+0>>2];z6(d,e,_,h,O);S=32;break}case 114:{c[y>>2]=c[e>>2];c[z>>2]=c[f>>2];c[Z+0>>2]=c[y+0>>2];c[_+0>>2]=c[z+0>>2];b6(x,d,Z,_,g,h,j,356864,356908|0);c[e>>2]=c[x>>2];S=32;break}case 120:{T=c[(c[d>>2]|0)+20>>2]|0;c[J>>2]=c[e>>2];c[K>>2]=c[f>>2];c[Z+0>>2]=c[J+0>>2];c[_+0>>2]=c[K+0>>2];Md[T&63](b,d,Z,_,g,h,j);break}case 121:{c[L>>2]=c[f>>2];c[_+0>>2]=c[L+0>>2];m6(d,j+20|0,e,_,h,O);S=32;break}case 84:{c[F>>2]=c[e>>2];c[H>>2]=c[f>>2];c[Z+0>>2]=c[F+0>>2];c[_+0>>2]=c[H+0>>2];b6(E,d,Z,_,g,h,j,356936,356968|0);c[e>>2]=c[E>>2];S=32;break}case 82:{c[B>>2]=c[e>>2];c[C>>2]=c[f>>2];c[Z+0>>2]=c[B+0>>2];c[_+0>>2]=c[C+0>>2];b6(A,d,Z,_,g,h,j,356912,356932|0);c[e>>2]=c[A>>2];S=32;break}case 89:{c[M>>2]=c[f>>2];c[_+0>>2]=c[M+0>>2];y6(d,j+20|0,e,_,h,O);S=32;break}case 88:{n=d+8|0;n=Ed[c[(c[n>>2]|0)+24>>2]&511](n)|0;c[U>>2]=c[e>>2];c[V>>2]=c[f>>2];l=a[n>>0]|0;if(!(l&1)){o=n+4|0;m=(l&255)>>>1;l=n+4|0}else{l=c[n+8>>2]|0;o=l;m=c[n+4>>2]|0}c[Z+0>>2]=c[U+0>>2];c[_+0>>2]=c[V+0>>2];b6(T,d,Z,_,g,h,j,l,o+(m<<2)|0);c[e>>2]=c[T>>2];S=32;break}case 119:{c[I>>2]=c[f>>2];c[_+0>>2]=c[I+0>>2];x6(d,j+24|0,e,_,h,O);S=32;break}case 83:{c[D>>2]=c[f>>2];c[_+0>>2]=c[D+0>>2];w6(d,j,e,_,h,O);S=32;break}default:{c[h>>2]=c[h>>2]|4;S=32}}while(0);if((S|0)==32)c[b>>2]=c[e>>2];i=$;return}function o6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Qaa(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)>0&(a|0)<32)c[b>>2]=a;else c[f>>2]=d|4;i=h;return}function p6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Qaa(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<24)c[b>>2]=a;else c[f>>2]=d|4;i=h;return}function q6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Qaa(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)>0&(a|0)<13)c[b>>2]=a;else c[f>>2]=d|4;i=h;return}function r6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Qaa(d,a,f,g,3)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<366)c[b>>2]=a;else c[f>>2]=d|4;i=h;return}function s6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Qaa(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<13)c[b>>2]=a+-1;else c[f>>2]=d|4;i=h;return}function t6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Qaa(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<60)c[b>>2]=a;else c[f>>2]=d|4;i=h;return}function u6(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:while(1){a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Ed[c[(c[a>>2]|0)+36>>2]&511](a)|0;else a=c[g>>2]|0;if((a|0)==-1){c[b>>2]=0;h=1;break}else{h=(c[b>>2]|0)==0;break}}else h=1;while(0);g=c[d>>2]|0;do if(g){a=c[g+12>>2]|0;if((a|0)==(c[g+16>>2]|0))a=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else a=c[a>>2]|0;if((a|0)!=-1)if(h){h=g;break}else{h=g;break a}else{c[d>>2]=0;i=15;break}}else i=15;while(0);if((i|0)==15){i=0;if(h){h=0;break}else h=0}a=c[b>>2]|0;g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Ed[c[(c[a>>2]|0)+36>>2]&511](a)|0;else a=c[g>>2]|0;if(!(Hd[c[(c[f>>2]|0)+12>>2]&255](f,8192,a)|0))break;a=c[b>>2]|0;g=a+12|0;h=c[g>>2]|0;if((h|0)==(c[a+16>>2]|0)){Ed[c[(c[a>>2]|0)+40>>2]&511](a)|0;continue}else{c[g>>2]=h+4;continue}}a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Ed[c[(c[a>>2]|0)+36>>2]&511](a)|0;else a=c[g>>2]|0;if((a|0)==-1){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(h){a=c[h+12>>2]|0;if((a|0)==(c[h+16>>2]|0))a=Ed[c[(c[h>>2]|0)+36>>2]&511](h)|0;else a=c[a>>2]|0;if((a|0)!=-1)if(g)break;else{i=39;break}else{c[d>>2]=0;i=37;break}}else i=37;while(0);if((i|0)==37?g:0)i=39;if((i|0)==39)c[e>>2]=c[e>>2]|2;return}function v6(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;k=n+4|0;l=n;m=b+8|0;m=Ed[c[(c[m>>2]|0)+8>>2]&511](m)|0;b=a[m>>0]|0;if(!(b&1))j=(b&255)>>>1;else j=c[m+4>>2]|0;b=a[m+12>>0]|0;if(!(b&1))b=(b&255)>>>1;else b=c[m+16>>2]|0;do if((j|0)!=(0-b|0)){c[l>>2]=c[f>>2];c[k+0>>2]=c[l+0>>2];b=Caa(e,k,m,m+24|0,h,g,0)|0;j=c[d>>2]|0;if((b|0)==(m|0)&(j|0)==12){c[d>>2]=0;break}if((b-m|0)==12&(j|0)<12)c[d>>2]=j+12}else c[g>>2]=c[g>>2]|4;while(0);i=n;return}function w6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Qaa(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<61)c[b>>2]=a;else c[f>>2]=d|4;i=h;return}function x6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Qaa(d,a,f,g,1)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<7)c[b>>2]=a;else c[f>>2]=d|4;i=h;return}function y6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=Qaa(d,a,f,g,4)|0;if(!(c[f>>2]&4))c[b>>2]=a+-1900;i=h;return}function z6(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Ed[c[(c[a>>2]|0)+36>>2]&511](a)|0;else a=c[g>>2]|0;if((a|0)==-1){c[b>>2]=0;h=1;break}else{h=(c[b>>2]|0)==0;break}}else h=1;while(0);g=c[d>>2]|0;do if(g){a=c[g+12>>2]|0;if((a|0)==(c[g+16>>2]|0))a=Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0;else a=c[a>>2]|0;if((a|0)!=-1)if(h){i=g;j=17;break}else{j=16;break}else{c[d>>2]=0;j=14;break}}else j=14;while(0);if((j|0)==14)if(h)j=16;else{i=0;j=17}a:do if((j|0)==16)c[e>>2]=c[e>>2]|6;else if((j|0)==17){a=c[b>>2]|0;g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Ed[c[(c[a>>2]|0)+36>>2]&511](a)|0;else a=c[g>>2]|0;if((Hd[c[(c[f>>2]|0)+52>>2]&255](f,a,0)|0)<<24>>24!=37){c[e>>2]=c[e>>2]|4;break}a=c[b>>2]|0;g=a+12|0;h=c[g>>2]|0;if((h|0)==(c[a+16>>2]|0)){Ed[c[(c[a>>2]|0)+40>>2]&511](a)|0;a=c[b>>2]|0}else c[g>>2]=h+4;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Ed[c[(c[a>>2]|0)+36>>2]&511](a)|0;else a=c[g>>2]|0;if((a|0)==-1){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(i){a=c[i+12>>2]|0;if((a|0)==(c[i+16>>2]|0))a=Ed[c[(c[i>>2]|0)+36>>2]&511](i)|0;else a=c[a>>2]|0;if((a|0)!=-1)if(g)break a;else break;else{c[d>>2]=0;j=38;break}}else j=38;while(0);if((j|0)==38?!g:0)break;c[e>>2]=c[e>>2]|2}while(0);return}function A6(a){a=a|0;var b=0;b=c[a>>2]|0;if((b|0)!=(K4()|0))Lb(c[a>>2]|0);return}function B6(a){a=a|0;A6(a+8|0);return}function C6(a){a=a|0;A6(a+8|0);nda(a);return}function D6(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0;m=i;i=i+112|0;l=m+4|0;f=m;c[f>>2]=l+100;E6(d+8|0,l,f,h,j,k);h=c[f>>2]|0;f=c[e>>2]|0;if((l|0)!=(h|0))do{j=a[l>>0]|0;do if(f){g=f+24|0;k=c[g>>2]|0;if((k|0)==(c[f+28>>2]|0)){d=(Pd[c[(c[f>>2]|0)+52>>2]&511](f,j&255)|0)==-1;f=d?0:f;break}else{c[g>>2]=k+1;a[k>>0]=j;break}}else f=0;while(0);l=l+1|0}while((l|0)!=(h|0));c[b>>2]=f;i=m;return}function E6(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;m=i;i=i+16|0;l=m;a[l>>0]=37;j=l+1|0;a[j>>0]=g;k=l+2|0;a[k>>0]=h;a[l+3>>0]=0;if(h<<24>>24){a[j>>0]=h;a[k>>0]=g}c[e>>2]=d+(Tc(d|0,(c[e>>2]|0)-d|0,l|0,f|0,c[b>>2]|0)|0);i=m;return}function F6(a){a=a|0;A6(a+8|0);return}function G6(a){a=a|0;A6(a+8|0);nda(a);return}function H6(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0;k=i;i=i+416|0;f=k+8|0;e=k;c[e>>2]=f+400;I6(b+8|0,f,e,g,h,j);g=c[e>>2]|0;e=c[d>>2]|0;if((f|0)!=(g|0)){b=f;do{f=c[b>>2]|0;if(!e)e=0;else{j=e+24|0;h=c[j>>2]|0;if((h|0)==(c[e+28>>2]|0))f=Pd[c[(c[e>>2]|0)+52>>2]&511](e,f)|0;else{c[j>>2]=h+4;c[h>>2]=f}e=(f|0)==-1?0:e}b=b+4|0}while((b|0)!=(g|0))}c[a>>2]=e;i=k;return}function I6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;h=i;i=i+128|0;l=h+16|0;m=h+8|0;j=h;k=h+12|0;c[m>>2]=l+100;E6(a,l,m,e,f,g);g=j;c[g>>2]=0;c[g+4>>2]=0;c[k>>2]=l;g=(c[d>>2]|0)-b>>2;f=mc(c[a>>2]|0)|0;g=Jca(b,k,g,j)|0;if(f)mc(f|0)|0;if((g|0)==-1)E7(358592);else{c[d>>2]=b+(g<<2);i=h;return}}function J6(a){a=a|0;return}function K6(a){a=a|0;nda(a);return}function L6(a){a=a|0;return 127}function M6(a){a=a|0;return 127}function N6(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function O6(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function P6(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function Q6(a,b){a=a|0;b=b|0;r2(a,1,45);return}function R6(a){a=a|0;return 0}function S6(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function T6(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function U6(a){a=a|0;return}function V6(a){a=a|0;nda(a);return}function W6(a){a=a|0;return 127}function X6(a){a=a|0;return 127}function Y6(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function Z6(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function _6(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function $6(a,b){a=a|0;b=b|0;r2(a,1,45);return}function a7(a){a=a|0;return 0}function b7(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function c7(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function d7(a){a=a|0;return}function e7(a){a=a|0;nda(a);return}function f7(a){a=a|0;return 2147483647}function g7(a){a=a|0;return 2147483647}function h7(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function i7(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function j7(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function k7(a,b){a=a|0;b=b|0;J2(a,1,45);return}function l7(a){a=a|0;return 0}function m7(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function n7(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function o7(a){a=a|0;return}function p7(a){a=a|0;nda(a);return}function q7(a){a=a|0;return 2147483647}function r7(a){a=a|0;return 2147483647}function s7(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function t7(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function u7(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function v7(a,b){a=a|0;b=b|0;J2(a,1,45);return}function w7(a){a=a|0;return 0}function x7(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function y7(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function z7(a){a=a|0;return}function A7(a){a=a|0;nda(a);return}function B7(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=i;i=i+240|0;q=x;l=x+24|0;v=x+16|0;p=x+8|0;t=x+4|0;m=x+236|0;y=x+12|0;o=x+124|0;r=x+136|0;c[v>>2]=l;u=v+4|0;c[u>>2]=318;Y2(t,h);d=w8(t,357712)|0;a[m>>0]=0;c[y>>2]=c[f>>2];h=c[h+4>>2]|0;c[q+0>>2]=c[y+0>>2];do if(D7(e,q,g,t,h,j,m,d,v,p,l+100|0)|0){Xd[c[(c[d>>2]|0)+32>>2]&255](d,357328,357338,o)|0;g=c[p>>2]|0;l=c[v>>2]|0;d=g-l|0;if((d|0)>98){d=qea(d+2|0)|0;if(!d)lea();else{s=d;n=d}}else{s=0;n=r}if(!(a[m>>0]|0))d=n;else{a[n>>0]=45;d=n+1|0}if(l>>>0>>0){m=o+10|0;n=o;do{h=a[l>>0]|0;g=o;while(1){if((a[g>>0]|0)==h<<24>>24)break;g=g+1|0;if((g|0)==(m|0)){g=m;break}}a[d>>0]=a[357328+(g-n)>>0]|0;l=l+1|0;d=d+1|0}while(l>>>0<(c[p>>2]|0)>>>0)}a[d>>0]=0;c[q>>2]=k;if((Oca(r,357344,q)|0)==1){rea(s);break}else E7(357352)}while(0);d=c[e>>2]|0;do if(d){if((c[d+12>>2]|0)==(c[d+16>>2]|0))if((Ed[c[(c[d>>2]|0)+36>>2]&511](d)|0)==-1){c[e>>2]=0;d=0;break}else{d=c[e>>2]|0;break}}else d=0;while(0);d=(d|0)==0;g=c[f>>2]|0;do if(g){if((c[g+12>>2]|0)!=(c[g+16>>2]|0))if(d)break;else{w=28;break}if((Ed[c[(c[g>>2]|0)+36>>2]&511](g)|0)!=-1)if(d)break;else{w=28;break}else{c[f>>2]=0;w=26;break}}else w=26;while(0);if((w|0)==26?d:0)w=28;if((w|0)==28)c[j>>2]=c[j>>2]|2;c[b>>2]=c[e>>2];S1(c[t>>2]|0)|0;d=c[v>>2]|0;c[v>>2]=0;if(d)Bd[c[u>>2]&511](d);i=x;return}function C7(a){a=a|0;return} -function NO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l;if(!a)Ra(236352,236248,3856,239320);if(!d)Ra(249008,236248,3857,239320);if(!b)Ra(249408,236248,3858,239320);j=(c[a+32>>2]|0)*5|0;k=j+6|0;g=a+48|0;f=a+44|0;e=c[f>>2]|0;do if(k>>>0>(c[g>>2]|0)>>>0){e=tea(e,k)|0;if(e){c[f>>2]=e;c[g>>2]=k;break}rea(c[f>>2]|0);c[f>>2]=0;c[g>>2]=0;ry(d,1,239344,h)|0;a=0;i=l;return a|0}while(0);f=dy(b)|0;g=a+16|0;c[g>>2]=f;c[g+4>>2]=H;Gx(e,65365,2);Gx(e+2|0,j+4|0,2);Gx(e+4|0,0,1);Gx(e+5|0,80,1);a=(by(b,c[a+44>>2]|0,k,d)|0)==(k|0)&1;i=l;return a|0}function OO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l;k=l+4|0;c[k>>2]=0;if(!a)Ra(236352,236248,2938,239224);if(!d)Ra(249008,236248,2939,239224);if(!b)Ra(249408,236248,2940,239224);j=(da((c[(c[a+80>>2]|0)+16>>2]|0)>>>0<257?7:9,(c[(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)+420>>2]|0)+1|0)|0)+4|0;f=a+48|0;g=a+44|0;e=c[g>>2]|0;do if(j>>>0>(c[f>>2]|0)>>>0){e=tea(e,j)|0;if(e){c[g>>2]=e;c[f>>2]=j;break}rea(c[g>>2]|0);c[g>>2]=0;c[f>>2]=0;ry(d,1,239248,h)|0;a=0;i=l;return a|0}while(0);Z_(a,e,k,d);a=(by(b,c[a+44>>2]|0,j,d)|0)==(j|0)&1;i=l;return a|0}function PO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!a)Ra(236352,236248,4901,239200);if(!d)Ra(249008,236248,4902,239200);if(!b)Ra(249408,236248,4903,239200);i=a+156|0;j=a+80|0;f=c[j>>2]|0;e=c[f+16>>2]|0;if(!e){j=1;return j|0}h=a+44|0;a=f;f=0;g=c[(c[i>>2]|0)+5576>>2]|0;while(1){if(c[g+808>>2]|0){a=c[(c[i>>2]|0)+5576>>2]|0;m=e>>>0<257?1:2;e=m+6|0;l=c[h>>2]|0;Gx(l,65374,2);k=m|4;Gx(l+2|0,k,2);Gx(l+4|0,f,m);Gx(l+k|0,0,1);Gx(l+(k+1)|0,c[a+(f*1080|0)+808>>2]|0,1);if((by(b,c[h>>2]|0,e,d)|0)!=(e|0)){a=0;e=13;break}a=c[j>>2]|0}f=f+1|0;e=c[a+16>>2]|0;if(f>>>0>=e>>>0){a=1;e=13;break}else g=g+1080|0}if((e|0)==13)return a|0;return 0}function QO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;h=m;if(!a)Ra(236352,236248,2249,239128);if(!b)Ra(249408,236248,2250,239128);if(!d)Ra(249008,236248,2251,239128);j=c[a+108>>2]|0;k=tfa(j|0)|0;l=k+6|0;g=a+48|0;f=a+44|0;e=c[f>>2]|0;do if(l>>>0>(c[g>>2]|0)>>>0){e=tea(e,l)|0;if(e){c[f>>2]=e;c[g>>2]=l;break}rea(c[f>>2]|0);c[f>>2]=0;c[g>>2]=0;ry(d,1,239152,h)|0;b=0;i=m;return b|0}while(0);Gx(e,65380,2);Gx(e+2|0,k+4|0,2);Gx(e+4|0,1,2);qfa(e+6|0,j|0,k|0)|0;b=(by(b,c[a+44>>2]|0,l,d)|0)==(l|0)&1;i=m;return b|0}function RO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+16|0;v=y;if(!b)Ra(236352,236248,4808,238936);if(!d)Ra(249408,236248,4809,238936);if(!e)Ra(249008,236248,4810,238936);m=c[b+80>>2]|0;h=m+16|0;j=c[h>>2]|0;k=j+6|0;u=b+48|0;x=b+44|0;f=c[x>>2]|0;do if(k>>>0>(c[u>>2]|0)>>>0){f=tea(f,k)|0;if(f){c[x>>2]=f;c[u>>2]=k;break}rea(c[x>>2]|0);c[x>>2]=0;c[u>>2]=0;ry(e,1,239088,v)|0;d=0;i=y;return d|0}while(0);Gx(f,65400,2);Gx(f+2|0,j+4|0,2);Gx(f+4|0,c[h>>2]|0,2);if(c[h>>2]|0){g=0;j=c[m+24>>2]|0;f=f+6|0;while(1){Gx(f,(c[j+24>>2]|0)+-1|c[j+32>>2]<<7,1);g=g+1|0;if(g>>>0>=(c[h>>2]|0)>>>0)break;else{j=j+52|0;f=f+1|0}}}if((by(d,c[x>>2]|0,k,e)|0)!=(k|0)){d=0;i=y;return d|0}q=b+196|0;n=c[q>>2]|0;r=b+156|0;l=c[r>>2]|0;m=l+(n*5632|0)+5608|0;a:do if(c[m>>2]|0){k=0;b=c[l+(n*5632|0)+5604>>2]|0;while(1){j=b+16|0;g=c[j>>2]|0;h=g+10|0;f=c[x>>2]|0;if(h>>>0>(c[u>>2]|0)>>>0){f=tea(f,h)|0;if(!f)break;c[x>>2]=f;c[u>>2]=h}Gx(f,65396,2);Gx(f+2|0,g+8|0,2);Gx(f+4|0,0,2);Gx(f+6|0,c[b+4>>2]<<8|c[b+8>>2]&255|c[b>>2]<<10,2);Gx(f+8|0,0,2);qfa(f+10|0,c[b+12>>2]|0,c[j>>2]|0)|0;if((by(d,c[x>>2]|0,h,e)|0)!=(h|0)){s=0;w=48;break}k=k+1|0;if(k>>>0>=(c[m>>2]|0)>>>0)break a;else b=b+20|0}if((w|0)==48){i=y;return s|0}rea(c[x>>2]|0);c[x>>2]=0;c[u>>2]=0;ry(e,1,239048,v)|0;d=0;i=y;return d|0}while(0);o=l+(n*5632|0)+5620|0;b:do if(c[o>>2]|0){p=0;b=c[l+(n*5632|0)+5616>>2]|0;while(1){n=b+4|0;m=c[n>>2]|0;g=m>>>0>255;h=g?2:1;g=g?32768:0;m=da(h,m<<1)|0;k=m+19|0;f=c[x>>2]|0;if(k>>>0>(c[u>>2]|0)>>>0){f=tea(f,k)|0;if(!f)break;c[x>>2]=f;c[u>>2]=k}Gx(f,65397,2);Gx(f+2|0,m+17|0,2);Gx(f+4|0,0,2);Gx(f+6|0,c[b>>2]|0,1);Gx(f+7|0,0,2);Gx(f+9|0,1,2);Gx(f+11|0,1,1);Gx(f+12|0,c[n>>2]|g,2);f=f+14|0;if(!(c[n>>2]|0))m=0;else{j=0;do{Gx(f,j,h);f=f+h|0;j=j+1|0;m=c[n>>2]|0}while(j>>>0>>0)}Gx(f,m|g,2);f=f+2|0;if(!(c[n>>2]|0))m=f;else{m=0;do{Gx(f,m,h);f=f+h|0;m=m+1|0}while(m>>>0<(c[n>>2]|0)>>>0);m=f}f=((a[b+16>>0]^1)&255)<<16&65536;j=c[b+8>>2]|0;if(j)f=c[j+8>>2]|f;j=c[b+12>>2]|0;if(j)f=c[j+8>>2]<<8|f;Gx(m,f,3);if((by(d,c[x>>2]|0,k,e)|0)!=(k|0)){s=0;w=48;break}p=p+1|0;if(p>>>0>=(c[o>>2]|0)>>>0)break b;else b=b+20|0}if((w|0)==48){i=y;return s|0}rea(c[x>>2]|0);c[x>>2]=0;c[u>>2]=0;ry(e,1,239008,v)|0;d=0;i=y;return d|0}while(0);k=c[q>>2]|0;b=c[r>>2]|0;j=c[x>>2]|0;l=b+(k*5632|0)+5620|0;f=c[l>>2]|0;m=f+5|0;do if(m>>>0>(c[u>>2]|0)>>>0){g=tea(j,m)|0;if(!g){rea(c[x>>2]|0);c[x>>2]=0;c[u>>2]=0;ry(e,1,238968,v)|0;t=1;break}else{c[x>>2]=g;c[u>>2]=m;w=43;break}}else w=43;while(0);if((w|0)==43){Gx(j,65399,2);Gx(j+2|0,f+3|0,2);Gx(j+4|0,c[l>>2]|0,1);if(c[l>>2]|0){h=0;g=j+5|0;f=c[b+(k*5632|0)+5616>>2]|0;while(1){Gx(g,c[f>>2]|0,1);h=h+1|0;if(h>>>0>=(c[l>>2]|0)>>>0)break;else{g=g+1|0;f=f+20|0}}}t=(by(d,c[x>>2]|0,m,e)|0)!=(m|0)}d=t&1^1;i=y;return d|0}function SO(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)Ra(236352,236248,4789,238912);if(!d)Ra(249008,236248,4790,238912);if(!b)Ra(249408,236248,4791,238912);else{d=dy(b)|0;b=(c[a+192>>2]|0)+8|0;c[b>>2]=d;c[b+4>>2]=H;return 1}return 0}function TO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;if(!a)Ra(236352,236248,10199,238848);if(!d)Ra(249008,236248,10200,238848);if(!b)Ra(249408,236248,10201,238848);b=GA(0)|0;e=a+200|0;c[e>>2]=b;if(!b){ry(d,1,238872,f)|0;a=0;i=f;return a|0}if(KA(b,c[a+80>>2]|0,a+88|0)|0){a=1;i=f;return a|0}LA(c[e>>2]|0);c[e>>2]=0;a=0;i=f;return a|0}function UO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0.0,I=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;if(!b)Ra(236352,236248,4590,238704);if(!e)Ra(249008,236248,4591,238704);if(!d)Ra(249408,236248,4592,238704);O=b+80|0;D=c[O>>2]|0;P=b+156|0;l=c[P>>2]|0;N=D+24|0;C=c[N>>2]|0;h=c[C>>2]|0;f=c[C+4>>2]|0;M=D+16|0;C=da(c[C+24>>2]|0,c[M>>2]|0)|0;B=dy(d)|0;r=b+116|0;k=c[r>>2]|0;E=b+112|0;e=c[E>>2]|0;F=(+(B>>>0)+4294967296.0*+(H|0))/+((da(e,k)|0)>>>0);B=(a[b+177>>0]&8)==0?2:1;if(k){s=b+92|0;t=b+100|0;u=b+96|0;x=b+104|0;y=D+4|0;z=D+8|0;A=D+12|0;w=+((da(h<<3,f)|0)>>>0);q=0;do{p=q;q=q+1|0;if(!e)e=0;else{i=0;do{v=+Ld[B&3](l);j=c[l+8>>2]|0;v=v/+(j>>>0);k=c[s>>2]|0;f=c[t>>2]|0;n=(da(f,i)|0)+k|0;e=c[D>>2]|0;e=(n|0)>(e|0)?n:e;n=c[u>>2]|0;h=c[x>>2]|0;Q=(da(h,p)|0)+n|0;d=c[y>>2]|0;d=(Q|0)>(d|0)?Q:d;i=i+1|0;k=(da(f,i)|0)+k|0;f=c[z>>2]|0;f=(k|0)<(f|0)?k:f;n=(da(h,q)|0)+n|0;h=c[A>>2]|0;h=(n|0)<(h|0)?n:h;n=l+20|0;m=+g[n>>2];if(m!=0.0)g[n>>2]=+((da(da(f-e|0,C)|0,h-d|0)|0)>>>0)/(w*m)-v;if(j>>>0>1){m=+((da(da(f-e|0,C)|0,h-d|0)|0)>>>0);e=1;d=l+24|0;while(1){o=+g[d>>2];if(o!=0.0)g[d>>2]=m/(w*o)-v;e=e+1|0;if(e>>>0>=j>>>0)break;else d=d+4|0}}l=l+5632|0;e=c[E>>2]|0}while(i>>>0>>0);k=c[r>>2]|0}}while(q>>>0>>0);if(!k){l=e;k=0}else{t=(e|0)==0;o=F+2.0;u=0;l=c[P>>2]|0;do{if(!t){e=c[E>>2]|0;s=e>>>0>1?e:1;p=l+16|0;q=0;r=l;while(1){d=r+20|0;m=+g[d>>2];if(m!=0.0?(w=m-F,g[d>>2]=w,w<30.0):0)g[d>>2]=30.0;j=r+24|0;d=c[r+8>>2]|0;n=d+-1|0;m=+g[j>>2];f=m!=0.0;if(n>>>0>1){i=p+(d<<2)|0;h=1;d=j;do{if(f?(w=m-F,g[d>>2]=w,I=+g[d+-4>>2],w>2]=I+20.0;d=d+4|0;h=h+1|0;m=+g[d>>2];f=m!=0.0}while((h|0)!=(n|0));if(f){G=m;K=i;L=35}}else if(f){G=m;K=j;L=35}if((L|0)==35?(L=0,w=G-o,g[K>>2]=w,J=+g[K+-4>>2],w>2]=J+20.0;q=q+1|0;if(q>>>0>=e>>>0)break;else{p=p+5632|0;r=r+5632|0}}l=l+(s*5632|0)|0}u=u+1|0}while(u>>>0>>0);l=e}}else{l=e;k=0}h=c[M>>2]|0;if(!h)t=0;else{d=(c[b+100>>2]|0)+-1|0;i=(c[b+104>>2]|0)+-1|0;j=0;f=c[N>>2]|0;e=0;while(1){N=c[f>>2]|0;M=c[f+4>>2]|0;N=da(((i+M|0)>>>0)/(M>>>0)|0,((d+N|0)>>>0)/(N>>>0)|0)|0;e=(da(N,c[f+24>>2]|0)|0)+e|0;j=j+1|0;if(j>>>0>=h>>>0)break;else f=f+52|0}t=~~(+(e>>>0)*.1625)>>>0}n=c[(c[O>>2]|0)+16>>2]|0;q=n+-1|0;s=da(k,l)|0;p=(s|0)==0;if(p)d=0;else{f=0;e=0;h=c[P>>2]|0;while(1){O=c[h+5580>>2]|0;e=e>>>0>O>>>0?e:O;f=f+1|0;if((f|0)==(s|0))break;else h=h+5632|0}d=e*12|0}r=(c[b+160>>2]|0)==0;if(r){if(p){f=0;e=0}else{l=(n|0)==0;i=0;e=0;do{if(!l){h=c[(c[P>>2]|0)+(i*5632|0)+5576>>2]|0;j=0;do{if(!(c[h+(j*1080|0)>>2]&1))f=5;else f=(c[h+(j*1080|0)+4>>2]|0)+5|0;e=e>>>0>f>>>0?e:f;j=j+1|0}while((j|0)!=(n|0))}i=i+1|0}while((i|0)!=(s|0));k=0;f=0;do{if(!l){j=c[(c[P>>2]|0)+(k*5632|0)+5576>>2]|0;i=0;do{if(!(c[j+(i*1080|0)>>2]&1))h=5;else h=(c[j+(i*1080|0)+4>>2]|0)+5|0;f=f>>>0>h>>>0?f:h;i=i+1|0}while((i|0)!=(n|0))}k=k+1|0}while((k|0)!=(s|0))}d=(da(e+12+f|0,q)|0)+d|0}if(p)e=13;else{h=0;e=0;f=c[P>>2]|0;while(1){P=c[f+420>>2]|0;e=e>>>0>P>>>0?e:P;h=h+1|0;if((h|0)==(s|0))break;else f=f+5632|0}e=(e*9|0)+13|0}e=d+t+e|0;c[b+40>>2]=e;e=qea(e)|0;c[b+36>>2]=e;e=(e|0)==0;if(e|r){P=e&1^1;return P|0}P=qea((c[b+32>>2]|0)*5|0)|0;e=P;c[b+24>>2]=e;if(!P){P=0;return P|0}c[b+28>>2]=e;P=1;return P|0}function VO(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+16|0;v=w;j=c[f+8>>2]|0;a:do if((j|0)!=0?(m=c[j>>2]|0,o=b[j+4>>1]|0,o<<16>>16!=0):0){p=c[d+16>>2]|0;k=0;while(1){j=k&65535;l=e[m+(j*6|0)>>1]|0;if(l>>>0>=p>>>0){h=l;t=5;break}j=b[m+(j*6|0)+4>>1]|0;if(j<<16>>16!=0?(n=(j&65535)+-1|0,n>>>0>=p>>>0):0){h=n;t=8;break}k=k+1<<16>>16;if((k&65535)>=(o&65535))break a}if((t|0)==5){c[v>>2]=h;c[v+4>>2]=p;ry(g,1,251248,v)|0;v=0;i=w;return v|0}else if((t|0)==8){c[v>>2]=h;c[v+4>>2]=p;ry(g,1,251248,v)|0;v=0;i=w;return v|0}}while(0);j=c[f+12>>2]|0;if((j|0)!=0?(u=c[j+12>>2]|0,(u|0)!=0):0){q=a[j+18>>0]|0;s=q&255;r=q<<24>>24==0;if(r)j=1;else{m=d+16|0;k=0;n=0;j=1;do{k=e[u+(k<<2)>>1]|0;l=c[m>>2]|0;if(k>>>0>=l>>>0){c[v>>2]=k;c[v+4>>2]=l;ry(g,1,251248,v)|0;j=0}n=n+1<<16>>16;k=n&65535}while(k>>>0>>0)}o=sea(s,4)|0;if(!o){ry(g,1,251288,v)|0;v=0;i=w;return v|0}if(!r){f=0;p=0;while(1){l=a[u+(f<<2)+3>>0]|0;k=a[u+(f<<2)+2>>0]|0;if((k&255)>=2){t=22;break}n=l&255;do if((l&255)<(q&255)){m=o+(n<<2)|0;if((c[m>>2]|0)!=0&k<<24>>24==1){c[v>>2]=n;ry(g,1,251432,v)|0;j=0;break}if(k<<24>>24!=0|l<<24>>24==0){c[m>>2]=1;break}else{c[v>>2]=f;c[v+4>>2]=n;ry(g,1,251464,v)|0;j=0;break}}else{c[v>>2]=n;ry(g,1,251376,v)|0;j=0}while(0);p=p+1<<16>>16;f=p&65535;if(f>>>0>=s>>>0){h=j;break}}if((t|0)==22)Ra(251312,248936,801,251352);if(!r){j=0;k=0;do{if((c[o+(j<<2)>>2]|0)==0?(a[u+(j<<2)+2>>0]|0)!=0:0){c[v>>2]=j;ry(g,1,251504,v)|0;h=0}k=k+1<<16>>16;j=k&65535}while(j>>>0>>0)}}else h=j;rea(o);if(!h){v=0;i=w;return v|0}}v=1;i=w;return v|0}function WO(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+64|0;t=v;u=d+8|0;d=c[u>>2]|0;f=c[d>>2]|0;s=b[d+4>>1]|0;if(s<<16>>16){r=a+16|0;m=a+24|0;n=c[p>>2]|0;q=0;do{o=f+(q*6|0)+4|0;d=b[o>>1]|0;do if(d<<16>>16==-1|d<<16>>16==0){if(q>>>0<(c[r>>2]|0)>>>0)b[(c[m>>2]|0)+(q*52|0)+48>>1]=b[f+(q*6|0)+2>>1]|0}else{l=e[f+(q*6|0)>>1]|0;a=c[r>>2]|0;k=(d&65535)+65535&65535;if(!(l>>>0>>0&k>>>0>>0)){c[t>>2]=l;c[t+4>>2]=k;c[t+8>>2]=a;Uc(n|0,251216,t|0)|0;break}if((l|0)!=(k|0)){d=c[m>>2]|0;a=d+(l*52|0)|0;g=t+0|0;h=a+0|0;j=g+52|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0));g=a+0|0;h=d+(k*52|0)+0|0;j=g+52|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0));g=(c[m>>2]|0)+(k*52|0)+0|0;h=t+0|0;j=g+52|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0));b[o>>1]=l+1;b[f+(k*6|0)+4>>1]=(e[f+(k*6|0)>>1]|0)+1}b[(c[m>>2]|0)+(l*52|0)+48>>1]=b[f+(q*6|0)+2>>1]|0}while(0);q=q+1|0}while((q&65535)<<16>>16!=s<<16>>16);d=c[u>>2]|0;f=c[d>>2]|0}if(!f){t=d;rea(t);c[u>>2]=0;i=v;return}rea(f);t=c[u>>2]|0;rea(t);c[u>>2]=0;i=v;return}function XO(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=g+12|0;o=c[w>>2]|0;l=c[o+8>>2]|0;m=c[o+4>>2]|0;q=c[o>>2]|0;r=c[o+12>>2]|0;p=a[o+18>>0]|0;s=f+24|0;t=c[s>>2]|0;u=p&255;v=qea(u*52|0)|0;p=p<<24>>24==0;a:do if(!p){i=0;n=0;while(1){g=a[r+(i<<2)+3>>0]|0;k=b[r+(i<<2)>>1]|0;if(!(a[r+(i<<2)+2>>0]|0)){if(g<<24>>24){g=4;break}g=v+(i*52|0)+0|0;j=t+((k&65535)*52|0)+0|0;h=g+52|0;do{c[g>>2]=c[j>>2];g=g+4|0;j=j+4|0}while((g|0)<(h|0))}else{if((i|0)!=(g&255|0)){g=7;break}g=v+(i*52|0)+0|0;j=t+((k&65535)*52|0)+0|0;h=g+52|0;do{c[g>>2]=c[j>>2];g=g+4|0;j=j+4|0}while((g|0)<(h|0))}k=k&65535;c[v+(i*52|0)+44>>2]=qea(da(c[t+(k*52|0)+8>>2]<<2,c[t+(k*52|0)+12>>2]|0)|0)|0;c[v+(i*52|0)+24>>2]=d[l+i>>0];c[v+(i*52|0)+32>>2]=d[m+i>>0];n=n+1<<16>>16;i=n&65535;if(i>>>0>=u>>>0){g=10;break}}if((g|0)==4)Ra(251128,248936,862,251144);else if((g|0)==7)Ra(251168,248936,865,251144);else if((g|0)==10){k=(e[o+16>>1]|0)+-1|0;if(p)break;else{i=0;l=0}while(1){g=b[r+(i<<2)>>1]|0;n=c[t+((g&65535)*52|0)+44>>2]|0;if(!n){g=12;break}j=d[r+(i<<2)+3>>0]|0;o=da(c[v+(j*52|0)+12>>2]|0,c[v+(j*52|0)+8>>2]|0)|0;if(!(a[r+(i<<2)+2>>0]|0)){if(g<<16>>16){g=15;break}g=c[v+(i*52|0)+44>>2]|0;if(!g){g=18;break}if(o){j=0;do{c[g+(j<<2)>>2]=c[n+(j<<2)>>2];j=j+1|0}while((j|0)!=(o|0))}}else{if((i|0)!=(j|0)){g=21;break}j=c[v+(i*52|0)+44>>2]|0;if(!j){g=24;break}if(o){h=0;do{g=c[n+(h<<2)>>2]|0;if((g|0)<0)g=0;else g=(g|0)>(k|0)?k:g;c[j+(h<<2)>>2]=c[q+((da(g,u)|0)+i<<2)>>2];h=h+1|0}while((h|0)!=(o|0))}}l=l+1<<16>>16;i=l&65535;if(i>>>0>=u>>>0)break a}if((g|0)==12)Ra(251184,248936,882,251144);else if((g|0)==15)Ra(251192,248936,887,251144);else if((g|0)==18)Ra(251208,248936,889,251144);else if((g|0)==21)Ra(251168,248936,895,251144);else if((g|0)==24)Ra(251208,248936,897,251144)}}while(0);h=f+16|0;i=c[h>>2]|0;if(i){g=0;j=0;do{g=c[t+(g*52|0)+44>>2]|0;if(g)rea(g);j=j+1<<16>>16;g=j&65535}while(g>>>0>>0)}rea(t);c[s>>2]=v;c[h>>2]=u;rea(c[(c[w>>2]|0)+4>>2]|0);rea(c[(c[w>>2]|0)+8>>2]|0);rea(c[c[w>>2]>>2]|0);g=c[w>>2]|0;h=c[g+12>>2]|0;if(!h){v=g;rea(v);c[w>>2]=0;return}rea(h);v=c[w>>2]|0;rea(v);c[w>>2]=0;return}function YO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;if(!b)Ra(248992,248936,567,251104);if(!d)Ra(250976,248936,568,251104);e=qea(22)|0;if(!e){g=0;return g|0}f=e+0|0;g=f+22|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(g|0));Gx(e,22,4);Gx(e+4|0,1768449138,4);Gx(e+8|0,c[b+16>>2]|0,4);Gx(e+12|0,c[b+12>>2]|0,4);Gx(e+16|0,c[b+20>>2]|0,2);Gx(e+18|0,c[b+24>>2]|0,1);Gx(e+19|0,c[b+28>>2]|0,1);Gx(e+20|0,c[b+32>>2]|0,1);Gx(e+21|0,c[b+36>>2]|0,1);c[d>>2]=22;g=e;return g|0}function ZO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=a+20|0;g=(c[f>>2]|0)+8|0;if(!a)Ra(248992,248936,621,251080);if(!b)Ra(250976,248936,622,251080);h=qea(g)|0;if(!h){b=0;return b|0}sfa(h|0,0,g|0)|0;Gx(h,g,4);Gx(h+4|0,1651532643,4);if(c[f>>2]|0){a=a+72|0;d=0;e=h+8|0;while(1){Gx(e,c[(c[a>>2]|0)+(d*12|0)+8>>2]|0,1);d=d+1|0;if(d>>>0>=(c[f>>2]|0)>>>0)break;else e=e+1|0}}c[b>>2]=g;b=h;return b|0}function _O(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!a)Ra(248992,248936,690,250952);if(!b)Ra(250976,248936,691,250952);g=a+40|0;e=c[g>>2]|0;if((e+-1|0)>>>0>=2)Ra(251008,248936,692,250952);if((e|0)==2)f=8;else if((e|0)==1)k=15;else{a=0;return a|0}do if((f|0)==8){e=c[a+112>>2]|0;if(!e)Ra(251048,248936,699,250952);else{k=e+11|0;break}}while(0);j=qea(k)|0;if(!j){a=0;return a|0}sfa(j|0,0,k|0)|0;Gx(j,k,4);Gx(j+4|0,1668246642,4);Gx(j+8|0,c[g>>2]|0,1);Gx(j+9|0,c[a+52>>2]|0,1);Gx(j+10|0,c[a+44>>2]|0,1);i=j+11|0;e=c[g>>2]|0;if((e|0)==2){h=a+112|0;if(c[h>>2]|0){f=a+108|0;g=0;e=i;while(1){Gx(e,d[(c[f>>2]|0)+g>>0]|0,1);g=g+1|0;if(g>>>0>=(c[h>>2]|0)>>>0)break;else e=e+1|0}}}else if((e|0)==1)Gx(i,c[a+48>>2]|0,4);c[b>>2]=k;a=j;return a|0}function $O(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+32|0;u=v;q=v+24|0;r=v+8|0;o=v+12|0;if(!b)Ra(248920,248936,1800,249536);if(!a)Ra(248992,248936,1801,249536);if(!d)Ra(249008,248936,1802,249536);f=qea(1024)|0;if(!f){ry(d,1,249568,u)|0;u=0;i=v;return u|0}sfa(f|0,0,1024)|0;m=q+4|0;n=o+4|0;s=a+100|0;l=1024;a:while(1){while(1){if((ay(b,q,8,d)|0)!=8){p=f;break a}Hx(q,o,4);Hx(m,n,4);e=c[o>>2]|0;if((e|0)==1){if((ay(b,q,8,d)|0)!=8){p=f;break a}Hx(q,r,4);if(c[r>>2]|0){e=f;t=17;break a}Hx(m,o,4);k=16}else if((e|0)==0?(t=ey(b)|0,c[o>>2]=t,!((t|0)==(t|0)&0==(H|0))):0){t=14;break a}else k=8;g=c[n>>2]|0;if((g|0)==1785737827){t=20;break a}e=c[o>>2]|0;if(!e){e=f;t=24;break a}if(e>>>0>>0){t=26;break a}else j=0;while(1){h=248792+(j<<3)|0;if((c[h>>2]|0)==(g|0)){t=30;break}j=j+1|0;if(j>>>0>=3){t=28;break}}if((t|0)==28){t=0;e=e-k|0}else if((t|0)==30){t=0;e=e-k|0;if(h){h=e;break}}c[s>>2]=c[s>>2]|2147483647;j=fy(b,e,0,d)|0;if(!((j|0)==(e|0)&(H|0)==0)){e=f;t=39;break a}}if(h>>>0>l>>>0){e=tea(f,h)|0;if(!e){e=f;t=33;break}else g=h}else{e=f;g=l}if((ay(b,e,h,d)|0)!=(h|0)){t=35;break}if(!(Xd[c[248792+(j<<3)+4>>2]&255](a,e,h,d)|0)){t=37;break}else{f=e;l=g}}if((t|0)==14)Ra(249912,248936,458,249888);else if((t|0)==17){ry(d,1,249944,u)|0;p=e}else if((t|0)==20){e=c[s>>2]|0;if(!(e&4)){ry(d,1,249624,u)|0;rea(f);u=0;i=v;return u|0}else{c[s>>2]=e|8;rea(f);u=1;i=v;return u|0}}else if((t|0)==24){ry(d,1,249656,u)|0;rea(e);u=0;i=v;return u|0}else if((t|0)==26){c[u>>2]=e;c[u+4>>2]=g;ry(d,1,249696,u)|0;rea(f);u=0;i=v;return u|0}else if((t|0)==33){rea(e);ry(d,1,249728,u)|0;u=0;i=v;return u|0}else if((t|0)==35){ry(d,1,249776,u)|0;rea(e);u=0;i=v;return u|0}else if((t|0)==37){rea(e);u=0;i=v;return u|0}else if((t|0)==39){ry(d,1,249832,u)|0;rea(e);u=0;i=v;return u|0}rea(p);u=1;i=v;return u|0}function aP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if(!b)Ra(250824,248936,1902,250848);if(!a)Ra(248992,248936,1903,250848);if(!d)Ra(248920,248936,1904,250848);if(!e)Ra(249008,248936,1905,250848);h=wy(b)|0;f=xy(b)|0;if(!h){d=1;yy(b);return d|0}i=0;g=f;f=1;while(1){if(!f)f=0;else f=(Hd[c[g>>2]&255](a,d,e)|0)!=0;f=f&1;i=i+1|0;if((i|0)==(h|0))break;else g=g+4|0}yy(b);return f|0}function bP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;h=j;g=j+8|0;if(!a)Ra(248992,248936,1491,250864);if(!b)Ra(249264,248936,1492,250864);if(!d)Ra(249008,248936,1493,250864);if(!(hy(b)|0))Ra(250888,248936,1494,250864);e=dy(b)|0;f=H;a=a+80|0;k=a;k=xfa(e|0,f|0,c[k>>2]|0,c[k+4>>2]|0)|0;Gx(g,k,4);Gx(g+4|0,1785737827,4);if(!(gy(b,c[a>>2]|0,c[a+4>>2]|0,d)|0)){ry(d,1,250920,h)|0;h=0;i=j;return h|0}if((by(b,g,8,d)|0)!=8){ry(d,1,250920,h)|0;h=0;i=j;return h|0}if(gy(b,e,f,d)|0){h=1;i=j;return h|0}ry(d,1,250920,h)|0;h=0;i=j;return h|0}function cP(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=i;i=i+16|0;d=e;if(!b)Ra(249264,248936,1528,250128);if(!a)Ra(248992,248936,1529,250128);if(!c)Ra(249008,248936,1530,250128);else{Gx(d,12,4);Gx(d+4|0,1783636e3,4);Gx(d+8|0,218793738,4);d=(by(b,d,12,c)|0)==12&1;i=e;return d|0}return 0}function dP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;f=a+64|0;h=(c[f>>2]<<2)+16|0;if(!b)Ra(249264,248936,1441,250016);if(!d)Ra(249008,248936,1443,250016);j=qea(h)|0;if(!j){ry(d,1,250040,k)|0;j=0;i=l;return j|0}sfa(j|0,0,h|0)|0;Gx(j,h,4);Gx(j+4|0,1718909296,4);Gx(j+8|0,c[a+56>>2]|0,4);Gx(j+12|0,c[a+60>>2]|0,4);g=j+16|0;if(c[f>>2]|0){a=a+68|0;e=0;do{Gx(g,c[(c[a>>2]|0)+(e<<2)>>2]|0,4);e=e+1|0}while(e>>>0<(c[f>>2]|0)>>>0)}a=(by(b,j,h,d)|0)==(h|0);if(!a)ry(d,1,250080,k)|0;rea(j);j=a&1;i=l;return j|0}function eP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(!a)Ra(248992,248936,2122,249992);if(!b)Ra(248920,248936,2123,249992);if(!d)Ra(249008,248936,2124,249992);else{e=dy(b)|0;a=a+88|0;c[a>>2]=e;c[a+4>>2]=H;b=fy(b,24,0,d)|0;return (b|0)==24&(H|0)==0&1|0}return 0}function fP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!b)Ra(254888,254472,799,254904);if(!a)Ra(254920,254472,800,254904);if((da(c[b+28>>2]|0,c[b+24>>2]|0)|0)>>>0<=d>>>0)Ra(254936,254472,801,254904);e=c[b+68>>2]|0;l=(c[e+(d*5632|0)+420>>2]|0)+1|0;b=sea(l,232)|0;if(!b){l=0;return l|0}sfa(b|0,0,l*232|0)|0;if(!l){l=b;return l|0}k=e+(d*5632|0)+5576|0;h=c[a+16>>2]|0;e=h;i=b;j=0;a:while(1){a=sea(e,16)|0;g=i+196|0;c[g>>2]=a;if(!a){e=11;break}c[i+192>>2]=e;sfa(a|0,0,e<<4|0)|0;if(!e)e=0;else{f=0;while(1){a=c[g>>2]|0;e=(c[k>>2]|0)+(f*1080|0)+4|0;d=qea(c[e>>2]<<4)|0;c[a+(f<<4)+12>>2]=d;if(!d){e=24;break a}e=c[e>>2]|0;c[a+(f<<4)+8>>2]=e;sfa(d|0,0,e<<4|0)|0;f=f+1|0;if(f>>>0>=h>>>0){e=h;break}}}j=j+1|0;if(j>>>0>=l>>>0){e=37;break}else i=i+232|0}if((e|0)==11){e=b+4|0;d=c[e>>2]|0;if(!d){j=b;k=0}else{rea(d);c[e>>2]=0;j=b;k=0}while(1){i=j+196|0;e=c[i>>2]|0;if(e){h=j+192|0;a=c[h>>2]|0;if(a){g=0;while(1){d=e+12|0;f=c[d>>2]|0;if(f){rea(f);c[d>>2]=0;a=c[h>>2]|0}g=g+1|0;if(g>>>0>=a>>>0)break;else e=e+16|0}e=c[i>>2]|0}rea(e);c[i>>2]=0}k=k+1|0;if((k|0)==(l|0))break;else j=j+232|0}rea(b);l=0;return l|0}else if((e|0)==24){e=b+4|0;d=c[e>>2]|0;if(!d){j=b;k=0}else{rea(d);c[e>>2]=0;j=b;k=0}while(1){i=j+196|0;e=c[i>>2]|0;if(e){h=j+192|0;a=c[h>>2]|0;if(a){g=0;while(1){d=e+12|0;f=c[d>>2]|0;if(f){rea(f);c[d>>2]=0;a=c[h>>2]|0}g=g+1|0;if(g>>>0>=a>>>0)break;else e=e+16|0}e=c[i>>2]|0}rea(e);c[i>>2]=0}k=k+1|0;if((k|0)==(l|0))break;else j=j+232|0}rea(b);l=0;return l|0}else if((e|0)==37)return b|0;return 0}function gP(a,b,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0;if(!b)Ra(254456,254472,691,254824);if(!a)Ra(254520,254472,692,254824);n=c[b+24>>2]|0;if((da(c[b+28>>2]|0,n)|0)>>>0<=d>>>0)Ra(254856,254472,693,254824);p=c[(c[b+68>>2]|0)+(d*5632|0)+5576>>2]|0;o=c[a+24>>2]|0;I=(d>>>0)%(n>>>0)|0;G=(d>>>0)/(n>>>0)|0;F=b+4|0;D=b+12|0;C=(da(c[D>>2]|0,I)|0)+(c[F>>2]|0)|0;E=c[a>>2]|0;c[e>>2]=(C|0)>(E|0)?C:E;F=(da(c[D>>2]|0,I+1|0)|0)+(c[F>>2]|0)|0;I=c[a+8>>2]|0;c[f>>2]=(F|0)<(I|0)?F:I;I=b+8|0;F=b+16|0;D=(da(c[F>>2]|0,G)|0)+(c[I>>2]|0)|0;E=c[a+4>>2]|0;c[g>>2]=(D|0)>(E|0)?D:E;I=(da(c[F>>2]|0,G+1|0)|0)+(c[I>>2]|0)|0;G=c[a+12>>2]|0;c[h>>2]=(I|0)<(G|0)?I:G;c[k>>2]=0;c[l>>2]=0;c[i>>2]=2147483647;c[j>>2]=2147483647;G=a+16|0;if(!(c[G>>2]|0))return;else I=0;while(1){r=c[m+(I<<2)>>2]|0;n=c[o>>2]|0;if(!n){n=9;break}d=n+-1|0;a=(d+(c[e>>2]|0)|0)/(n|0)|0;F=o+4|0;b=c[F>>2]|0;if(!b){n=11;break}E=b+-1|0;q=(E+(c[g>>2]|0)|0)/(b|0)|0;d=(d+(c[f>>2]|0)|0)/(n|0)|0;b=(E+(c[h>>2]|0)|0)/(b|0)|0;E=p+4|0;n=c[E>>2]|0;if(n>>>0>(c[l>>2]|0)>>>0){c[l>>2]=n;n=c[E>>2]|0}if(n){C=yfa(a|0,((a|0)<0)<<31>>31|0,-1,-1)|0;D=H;A=yfa(q|0,((q|0)<0)<<31>>31|0,-1,-1)|0;B=H;y=yfa(d|0,((d|0)<0)<<31>>31|0,-1,-1)|0;z=H;w=yfa(b|0,((b|0)<0)<<31>>31|0,-1,-1)|0;x=H;v=0;while(1){n=n+-1|0;d=c[p+(v<<2)+812>>2]|0;q=c[p+(v<<2)+944>>2]|0;c[r>>2]=d;c[r+4>>2]=q;t=c[o>>2]<>2]<>2]|0;c[i>>2]=(b|0)<(t|0)?b:t;t=c[j>>2]|0;c[j>>2]=(t|0)<(u|0)?t:u;u=1<>31;b=yfa(C|0,D|0,u|0,t|0)|0;b=pfa(b|0,H|0,n|0)|0;s=yfa(A|0,B|0,u|0,t|0)|0;s=pfa(s|0,H|0,n|0)|0;a=yfa(y|0,z|0,u|0,t|0)|0;a=pfa(a|0,H|0,n|0)|0;t=yfa(w|0,x|0,u|0,t|0)|0;t=pfa(t|0,H|0,n|0)|0;u=1<>31|0,-1,-1)|0;u=yfa(J|0,H|0,u|0,((u|0)<0)<<31>>31|0)|0;u=pfa(u|0,H|0,q|0)|0;if((b|0)==(a|0))b=0;else{a=yfa(a|0,((a|0)<0)<<31>>31|0,-1,-1)|0;J=1<>31|0)|0;J=pfa(J|0,H|0,d|0)|0;b=(J<>d<>d}if((s|0)==(t|0))d=0;else d=(u<>q<>q;c[r+8>>2]=b;c[r+12>>2]=d;d=da(d,b)|0;if(d>>>0>(c[k>>2]|0)>>>0)c[k>>2]=d;v=v+1|0;if(v>>>0>=(c[E>>2]|0)>>>0)break;else r=r+16|0}}I=I+1|0;if(I>>>0>=(c[G>>2]|0)>>>0){n=24;break}else{o=o+52|0;p=p+1080|0}}if((n|0)==9)Ra(258480,258488,105,258528);else if((n|0)==11)Ra(258480,258488,105,258528);else if((n|0)==24)return}function hP(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0;if(!a)Ra(254456,254472,869,254704);if((da(c[a+28>>2]|0,c[a+24>>2]|0)|0)>>>0<=b>>>0)Ra(254640,254472,870,254704);a=c[a+68>>2]|0;k=(c[a+(b*5632|0)+420>>2]|0)+1|0;c[a+(b*5632|0)+500>>2]=c[a+(b*5632|0)+428>>2];c[a+(b*5632|0)+516>>2]=c[a+(b*5632|0)+440>>2];c[a+(b*5632|0)+496>>2]=c[a+(b*5632|0)+424>>2];c[a+(b*5632|0)+512>>2]=c[a+(b*5632|0)+436>>2];c[a+(b*5632|0)+508>>2]=c[a+(b*5632|0)+432>>2];c[a+(b*5632|0)+492>>2]=0;c[a+(b*5632|0)+460>>2]=c[a+(b*5632|0)+456>>2];c[a+(b*5632|0)+504>>2]=0;c[a+(b*5632|0)+520>>2]=h;c[a+(b*5632|0)+524>>2]=d;c[a+(b*5632|0)+528>>2]=e;c[a+(b*5632|0)+532>>2]=f;c[a+(b*5632|0)+536>>2]=g;c[a+(b*5632|0)+540>>2]=i;c[a+(b*5632|0)+544>>2]=j;if(k>>>0<=1)return;a=a+(b*5632|0)+572|0;b=1;while(1){c[a+76>>2]=c[a+4>>2];c[a+92>>2]=c[a+16>>2];c[a+72>>2]=c[a>>2];c[a+88>>2]=c[a+12>>2];l=c[a+8>>2]|0;c[a+84>>2]=l;c[a+36>>2]=c[a+32>>2];c[a+80>>2]=0;c[a+68>>2]=l>>>0>(c[a+-64>>2]|0)>>>0?l:0;c[a+96>>2]=h;c[a+100>>2]=d;c[a+104>>2]=e;c[a+108>>2]=f;c[a+112>>2]=g;c[a+116>>2]=i;c[a+120>>2]=j;b=b+1|0;if((b|0)==(k|0))break;else a=a+148|0}return}function iP(a,f,g,h,i){a=a|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0;j=c[a>>2]|0;l=b[f>>1]|0;m=l&255;if(!((m|0)!=0&(l&20480|0)==0))return;k=j+100|0;c[k>>2]=j+(d[256008+(m|h<<8)>>0]<<2)+24;if(Wz(j)|0){l=l>>>4&255;c[k>>2]=j+(d[255240+l>>0]<<2)+24;m=Wz(j)|0;k=d[254984+l>>0]|0;l=k^m;c[g>>2]=(m|0)!=(k|0)?0-i|0:i;i=c[a+32>>2]|0;a=f+(0-i<<1)|0;g=f+(i<<1)|0;k=f+(~i<<1)|0;b[k>>1]=e[k>>1]|2;b[a>>1]=b[a>>1]|b[254968+(l<<1)>>1];a=f+(1-i<<1)|0;b[a>>1]=e[a>>1]|4;a=f+-2|0;b[a>>1]=b[a>>1]|b[254968+(l+2<<1)>>1];b[f>>1]=e[f>>1]|4096;a=f+2|0;b[a>>1]=b[a>>1]|b[254968+(l+4<<1)>>1];a=f+(i+-1<<1)|0;b[a>>1]=e[a>>1]|1;b[g>>1]=b[g>>1]|b[254968+(l+6<<1)>>1];i=f+(i+1<<1)|0;b[i>>1]=e[i>>1]|8}b[f>>1]=e[f>>1]|16384;return}function jP(a,f,g,h,i){a=a|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;j=c[a>>2]|0;l=b[f>>1]|0;if(l&20480){h=b[f>>1]|0;h=h&65535;h=h&49151;h=h&65535;b[f>>1]=h;return}k=j+100|0;c[k>>2]=j+(d[256008+(l&255|h<<8)>>0]<<2)+24;if(!(Wz(j)|0)){h=b[f>>1]|0;h=h&65535;h=h&49151;h=h&65535;b[f>>1]=h;return}h=l>>>4&255;c[k>>2]=j+(d[255240+h>>0]<<2)+24;k=Wz(j)|0;h=d[254984+h>>0]|0;l=h^k;c[g>>2]=(k|0)!=(h|0)?0-i|0:i;h=c[a+32>>2]|0;a=f+(0-h<<1)|0;i=f+(h<<1)|0;g=f+(~h<<1)|0;b[g>>1]=e[g>>1]|2;b[a>>1]=b[a>>1]|b[254968+(l<<1)>>1];a=f+(1-h<<1)|0;b[a>>1]=e[a>>1]|4;a=f+-2|0;b[a>>1]=b[a>>1]|b[254968+(l+2<<1)>>1];b[f>>1]=e[f>>1]|4096;a=f+2|0;b[a>>1]=b[a>>1]|b[254968+(l+4<<1)>>1];a=f+(h+-1<<1)|0;b[a>>1]=e[a>>1]|1;b[i>>1]=b[i>>1]|b[254968+(l+6<<1)>>1];h=f+(h+1<<1)|0;b[h>>1]=e[h>>1]|8;h=b[f>>1]|0;h=h&65535;h=h&49151;h=h&65535;b[f>>1]=h;return}function kP(b,d,e,f,g,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0,L=0;r=c[f+28>>2]|0;K=c[f+32>>2]|0;L=c[f+36>>2]|0;q=c[(c[d+20>>2]|0)+((c[f+24>>2]|0)*44|0)+24>>2]|0;if(!(c[e>>2]&2))H=g;else{a[g>>0]=-1;a[g+1>>0]=-111;a[g+2>>0]=0;a[g+3>>0]=4;H=d+840|0;a[g+4>>0]=(c[H>>2]|0)>>>8;a[g+5>>0]=c[H>>2];j=j+-6|0;H=g+6|0}I=q+(r*136|0)+24|0;if((L|0)==0?(c[I>>2]|0)!=0:0){o=q+(r*136|0)+28|0;p=0;while(1){f=c[o+20>>2]|0;VA(c[f+(K*40|0)+32>>2]|0);m=f+(K*40|0)+36|0;VA(c[m>>2]|0);n=da(c[f+(K*40|0)+20>>2]|0,c[f+(K*40|0)+16>>2]|0)|0;if(n){f=f+(K*40|0)+24|0;d=o+28|0;l=0;do{G=c[f>>2]|0;c[G+(l*48|0)+36>>2]=0;YA(c[m>>2]|0,l,(c[d>>2]|0)-(c[G+(l*48|0)+28>>2]|0)|0);l=l+1|0}while((l|0)!=(n|0))}p=p+1|0;if(p>>>0>=(c[I>>2]|0)>>>0)break;else o=o+36|0}}F=xx()|0;Ax(F,H,j);Cx(F,1,1);G=q+(r*136|0)+28|0;if(c[I>>2]|0){B=L+1|0;D=G;E=0;while(1){q=c[D+20>>2]|0;C=da(c[q+(K*40|0)+20>>2]|0,c[q+(K*40|0)+16>>2]|0)|0;n=q+(K*40|0)+24|0;f=(C|0)==0;if(!f){p=q+(K*40|0)+32|0;l=c[n>>2]|0;d=0;while(1){if((c[l+36>>2]|0)==0?(c[(c[l+4>>2]|0)+(L*24|0)>>2]|0)!=0:0)YA(c[p>>2]|0,d,L);d=d+1|0;if((d|0)==(C|0))break;else l=l+48|0}if(!f){A=q+(K*40|0)+32|0;z=q+(K*40|0)+36|0;x=c[n>>2]|0;y=0;while(1){f=(c[x+4>>2]|0)+(L*24|0)|0;w=x+36|0;if(!(c[w>>2]|0))ZA(F,c[A>>2]|0,y,B);else Cx(F,(c[f>>2]|0)!=0&1,1);p=c[f>>2]|0;if(p){if(!(c[w>>2]|0)){c[x+32>>2]=3;ZA(F,c[z>>2]|0,y,999);p=c[f>>2]|0}do if((p|0)==2)Cx(F,2,2);else if((p|0)!=1){if(p>>>0<6){Cx(F,p+-3|12,4);break}if(p>>>0<37){Cx(F,p+-6|480,9);break}if(p>>>0<165)Cx(F,p+-37|65408,16)}else Cx(F,0,1);while(0);m=c[w>>2]|0;o=c[f>>2]|0;v=o+m|0;u=x+8|0;if(m>>>0>>0){r=x+32|0;d=0;q=0;l=0;s=(c[u>>2]|0)+(m*24|0)|0;t=m;while(1){l=l+1|0;q=(c[s+16>>2]|0)+q|0;if(!((a[s+20>>0]&1)==0?(t|0)!=(m+-1+o|0):0)){if((q|0)>1){p=0;while(1){q=q>>1;if((q|0)<=1)break;else p=p+1|0}n=p+2|0}else n=1;q=c[r>>2]|0;if((l|0)>1){p=0;do{l=l>>1;p=p+1|0}while((l|0)>1)}else p=0;q=n-q-p|0;d=(d|0)>(q|0)?d:q;q=0;l=0}t=t+1|0;if((t|0)==(v|0))break;else s=s+24|0}if((d|0)>0){p=d;do{p=p+-1|0;Cx(F,1,1)}while((p|0)>0);p=q}else p=q}else{d=0;p=0;l=0}Cx(F,0,1);o=x+32|0;c[o>>2]=(c[o>>2]|0)+d;d=c[w>>2]|0;if(d>>>0>>0){m=(c[u>>2]|0)+(d*24|0)|0;while(1){l=l+1|0;q=(c[m+16>>2]|0)+p|0;if((a[m+20>>0]&1)==0?(d|0)!=((c[w>>2]|0)+-1+(c[f>>2]|0)|0):0)p=q;else{n=c[o>>2]|0;if((l|0)>1){p=0;do{l=l>>1;p=p+1|0}while((l|0)>1)}else p=0;Cx(F,q,p+n|0);p=0;l=0}d=d+1|0;if((d|0)==(v|0))break;else m=m+24|0}}}y=y+1|0;if((y|0)==(C|0))break;else x=x+48|0}}}E=E+1|0;if(E>>>0>=(c[I>>2]|0)>>>0)break;else D=D+36|0}}if(!(Ex(F)|0)){yx(F);b=0;return b|0}d=zx(F)|0;f=H+d|0;j=j-d|0;yx(F);if(c[e>>2]&4){a[f>>0]=-1;a[H+(d+1)>>0]=-110;j=j+-2|0;f=H+(d+2)|0}t=(k|0)!=0;if(t?(c[k+12>>2]|0)!=0:0){H=f-g|0;e=(c[(c[k+88>>2]|0)+(b*592|0)+548>>2]|0)+(c[k+8>>2]<<5)+8|0;c[e>>2]=H;c[e+4>>2]=((H|0)<0)<<31>>31}d=c[I>>2]|0;a:do if(d){u=k+12|0;v=k+8|0;w=k+88|0;r=G;s=0;b:while(1){p=c[r+20>>2]|0;o=da(c[p+(K*40|0)+20>>2]|0,c[p+(K*40|0)+16>>2]|0)|0;p=c[p+(K*40|0)+24>>2]|0;if(o){if(t){m=0;while(1){q=c[p+4>>2]|0;l=q+(L*24|0)|0;if(c[l>>2]|0){d=q+(L*24|0)+4|0;n=c[d>>2]|0;if(n>>>0>j>>>0){f=0;j=84;break b}qfa(f|0,c[q+(L*24|0)+16>>2]|0,n|0)|0;e=p+36|0;c[e>>2]=(c[e>>2]|0)+(c[l>>2]|0);e=c[d>>2]|0;f=f+e|0;j=j-e|0;if((c[u>>2]|0)!=0?(e=(c[(c[w>>2]|0)+(b*592|0)+548>>2]|0)+(c[v>>2]<<5)+24|0,J=+h[q+(L*24|0)+8>>3]+ +h[e>>3],h[e>>3]=J,+h[k>>3]>3]=J}m=m+1|0;if(m>>>0>=o>>>0)break;else p=p+48|0}}else{q=0;while(1){l=c[p+4>>2]|0;d=l+(L*24|0)|0;if(c[d>>2]|0){n=l+(L*24|0)+4|0;m=c[n>>2]|0;if(m>>>0>j>>>0){f=0;j=84;break b}qfa(f|0,c[l+(L*24|0)+16>>2]|0,m|0)|0;e=p+36|0;c[e>>2]=(c[e>>2]|0)+(c[d>>2]|0);e=c[n>>2]|0;j=j-e|0;f=f+e|0}q=q+1|0;if(q>>>0>=o>>>0)break;else p=p+48|0}}d=c[I>>2]|0}s=s+1|0;if(s>>>0>=d>>>0)break a;else r=r+36|0}if((j|0)==84)return f|0}while(0);if(f>>>0>>0)Ra(257744,257760,757,257784);c[i>>2]=f-g+(c[i>>2]|0);b=1;return b|0}function lP(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=i;i=i+16|0;t=K+4|0;J=K;c[J>>2]=h;v=c[f+28>>2]|0;I=f+24|0;u=c[d+((c[I>>2]|0)*44|0)+24>>2]|0;G=f+36|0;if((c[G>>2]|0)==0?(s=u+(v*136|0)+24|0,l=c[s>>2]|0,(l|0)!=0):0){r=f+32|0;o=0;q=u+(v*136|0)+28|0;while(1){d=c[r>>2]|0;m=c[q+20>>2]|0;if((c[q+8>>2]|0)!=(c[q>>2]|0)?(c[q+12>>2]|0)!=(c[q+4>>2]|0):0){VA(c[m+(d*40|0)+32>>2]|0);VA(c[m+(d*40|0)+36>>2]|0);l=da(c[m+(d*40|0)+20>>2]|0,c[m+(d*40|0)+16>>2]|0)|0;if(l){n=0;d=c[m+(d*40|0)+24>>2]|0;while(1){c[d+44>>2]=0;c[d+48>>2]=0;n=n+1|0;if((n|0)==(l|0))break;else d=d+56|0}}l=c[s>>2]|0}o=o+1|0;if(o>>>0>=l>>>0)break;else q=q+36|0}}do if(c[e>>2]&2){d=c[J>>2]|0;if((a[d>>0]|0)==-1?(a[d+1>>0]|0)==-111:0){c[J>>2]=d+6;break}Xb(257632,28,1,c[p>>2]|0)|0}while(0);F=xx()|0;if(!F){h=0;i=K;return h|0}do if(!(a[b+92>>0]&1))if(!(a[e+5628>>0]&1)){D=c[J>>2]|0;c[t>>2]=h+k-D;E=J;break}else{E=e+5160|0;D=c[E>>2]|0;t=e+5172|0;break}else{E=b+32|0;D=c[E>>2]|0;t=b+36|0}while(0);Bx(F,D,c[t>>2]|0);if(!(Dx(F,1)|0)){Fx(F)|0;l=zx(F)|0;d=D+l|0;yx(F);do if(c[e>>2]&4){if(k>>>0<2){Xb(257664,41,1,c[p>>2]|0)|0;break}if((a[d>>0]|0)==-1?(a[D+(l+1)>>0]|0)==-110:0){d=D+(l+2)|0;break}Xb(257712,28,1,c[p>>2]|0)|0}while(0);I=c[E>>2]|0;k=d-I|0;c[t>>2]=(c[t>>2]|0)-k;c[E>>2]=I+k;c[g>>2]=0;c[j>>2]=(c[J>>2]|0)-h;h=1;i=K;return h|0}C=u+(v*136|0)+24|0;d=c[C>>2]|0;a:do if(d){A=f+32|0;B=e+5576|0;z=0;y=u+(v*136|0)+28|0;b:while(1){n=c[A>>2]|0;l=c[y+20>>2]|0;if(((c[y+8>>2]|0)!=(c[y>>2]|0)?(c[y+12>>2]|0)!=(c[y+4>>2]|0):0)?(H=da(c[l+(n*40|0)+20>>2]|0,c[l+(n*40|0)+16>>2]|0)|0,(H|0)!=0):0){u=l+(n*40|0)+32|0;v=l+(n*40|0)+36|0;w=y+28|0;x=0;f=c[l+(n*40|0)+24>>2]|0;while(1){s=f+44|0;if(!(c[s>>2]|0))d=_A(F,c[u>>2]|0,x,(c[G>>2]|0)+1|0)|0;else d=Dx(F,1)|0;c:do if(!d)c[f+40>>2]=0;else{if(!(c[s>>2]|0)){d=0;while(1)if(!(_A(F,c[v>>2]|0,x,d)|0))d=d+1|0;else break;c[f+24>>2]=1-d+(c[w>>2]|0);c[f+28>>2]=3}do if(Dx(F,1)|0)if(Dx(F,1)|0){d=Dx(F,2)|0;if((d|0)!=3){d=d+3|0;break}d=Dx(F,5)|0;if((d|0)==31){d=(Dx(F,7)|0)+37|0;break}else{d=d+6|0;break}}else d=2;else d=1;while(0);r=f+40|0;c[r>>2]=d;d=0;while(1)if(!(Dx(F,1)|0))break;else d=d+1|0;b=f+28|0;c[b>>2]=(c[b>>2]|0)+d;s=c[s>>2]|0;do if(!s){n=c[(c[B>>2]|0)+((c[I>>2]|0)*1080|0)+16>>2]|0;d=f+52|0;if(!(c[d>>2]|0)){c[d>>2]=10;l=f+4|0;s=tea(c[l>>2]|0,320)|0;if(!s){m=64;break b}c[l>>2]=s}else s=c[f+4>>2]|0;c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=0;c[s+24>>2]=0;c[s+28>>2]=0;if(n&4){c[s+20>>2]=1;s=0;break}s=s+20|0;if(!(n&1)){c[s>>2]=109;s=0;break}else{c[s>>2]=10;s=0;break}}else{o=s+-1|0;l=f+4|0;n=c[l>>2]|0;if((c[n+(o<<5)+8>>2]|0)!=(c[n+(o<<5)+20>>2]|0)){d=f+52|0;s=o;break}q=c[(c[B>>2]|0)+((c[I>>2]|0)*1080|0)+16>>2]|0;d=f+52|0;m=c[d>>2]|0;if((s+1|0)>>>0>m>>>0){m=m+10|0;c[d>>2]=m;n=tea(n,m<<5)|0;if(!n){m=77;break b}c[l>>2]=n;l=n}else l=n;m=l+(s<<5)|0;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;c[m+24>>2]=0;c[m+28>>2]=0;if(q&4){c[l+(s<<5)+20>>2]=1;break}if(!(q&1)){c[l+(s<<5)+20>>2]=109;break}n=c[l+(o<<5)+20>>2]|0;if((n|0)==1)n=2;else n=(n|0)==10?2:1;c[l+(s<<5)+20>>2]=n}while(0);l=f+4|0;o=c[r>>2]|0;while(1){q=c[l>>2]|0;n=(c[q+(s<<5)+20>>2]|0)-(c[q+(s<<5)+8>>2]|0)|0;n=(n|0)<(o|0)?n:o;c[q+(s<<5)+24>>2]=n;q=c[b>>2]|0;if(n>>>0>1){m=0;while(1){m=m+1|0;if(n>>>0>3)n=n>>>1;else{n=m;break}}}else n=0;r=Dx(F,n+q|0)|0;n=c[l>>2]|0;c[n+(s<<5)+28>>2]=r;o=o-(c[n+(s<<5)+24>>2]|0)|0;if((o|0)<=0)break c;r=s+1|0;q=c[(c[B>>2]|0)+((c[I>>2]|0)*1080|0)+16>>2]|0;m=c[d>>2]|0;if((s+2|0)>>>0>m>>>0){m=m+10|0;c[d>>2]=m;n=tea(n,m<<5)|0;if(!n){m=92;break b}c[l>>2]=n}m=n+(r<<5)|0;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;c[m+24>>2]=0;c[m+28>>2]=0;if(q&4){c[n+(r<<5)+20>>2]=1;s=r;continue}if(!(q&1)){c[n+(r<<5)+20>>2]=109;s=r;continue}s=c[n+(s<<5)+20>>2]|0;if((s|0)==1)s=2;else s=(s|0)==10?2:1;c[n+(r<<5)+20>>2]=s;s=r}}while(0);x=x+1|0;if(x>>>0>=H>>>0)break;else f=f+56|0}d=c[C>>2]|0}z=z+1|0;if(z>>>0>=d>>>0)break a;else y=y+36|0}if((m|0)==64){rea(c[l>>2]|0);c[l>>2]=0;c[d>>2]=0;yx(F);h=0;i=K;return h|0}else if((m|0)==77){rea(c[l>>2]|0);c[l>>2]=0;c[d>>2]=0;yx(F);h=0;i=K;return h|0}else if((m|0)==92){rea(c[l>>2]|0);c[l>>2]=0;c[d>>2]=0;yx(F);h=0;i=K;return h|0}}while(0);if(!(Fx(F)|0)){yx(F);h=0;i=K;return h|0}l=zx(F)|0;d=D+l|0;yx(F);do if(c[e>>2]&4){if(k>>>0<2){Xb(257664,41,1,c[p>>2]|0)|0;break}if((a[d>>0]|0)==-1?(a[D+(l+1)>>0]|0)==-110:0){d=D+(l+2)|0;break}Xb(257712,28,1,c[p>>2]|0)|0}while(0);I=c[E>>2]|0;k=d-I|0;c[t>>2]=(c[t>>2]|0)-k;c[E>>2]=I+k;c[g>>2]=1;c[j>>2]=(c[J>>2]|0)-h;h=1;i=K;return h|0}function mP(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+24|0;b=c[g>>2]|0;if(!b)return;f=c[a+28>>2]|0;e=(f>>>0)/48|0;if(f>>>0>47){f=0;while(1){a=c[b>>2]|0;if(a){rea(a+-1|0);c[b>>2]=0}a=b+4|0;d=c[a>>2]|0;if(d){rea(d);c[a>>2]=0}a=b+8|0;d=c[a>>2]|0;if(d){rea(d);c[a>>2]=0}f=f+1|0;if(f>>>0>=e>>>0)break;else b=b+48|0}b=c[g>>2]|0}rea(b);c[g>>2]=0;return}function nP(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+24|0;b=c[g>>2]|0;if(!b)return;f=c[a+28>>2]|0;e=(f>>>0)/56|0;if(f>>>0>55){f=0;while(1){a=c[b>>2]|0;if(a){rea(a);c[b>>2]=0}d=b+4|0;a=c[d>>2]|0;if(a){rea(a);c[d>>2]=0}f=f+1|0;if(f>>>0>=e>>>0)break;else b=b+56|0}b=c[g>>2]|0}rea(b);c[g>>2]=0;return}function oP(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,g=0,h=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+32|0;D=E;x=c[b>>2]|0;if(x>>>0>1e5){b=1;i=E;return b|0}y=b+4|0;o=c[y>>2]|0;if((o|0)<0|(o|0)>(1e5-x|0)){b=1;i=E;return b|0}z=b+8|0;f=c[z>>2]|0;if(f>>>0>1e5){b=1;i=E;return b|0}A=b+12|0;j=c[A>>2]|0;if((j|0)<0|(j|0)>(1e5-f|0)){b=1;i=E;return b|0}B=b+16|0;s=c[B>>2]|0;if(s>>>0>1e5){b=1;i=E;return b|0}C=b+20|0;t=c[C>>2]|0;if((t|0)<0|(t|0)>(1e5-s|0)){b=1;i=E;return b|0}n=c[b+24>>2]|0;if(n>>>0>1e5){b=1;i=E;return b|0}w=c[b+28>>2]|0;if((w|0)<0|(w|0)>(1e5-n|0)){b=1;i=E;return b|0}d=(f|0)==(s|0);p=(o|0)==(t|0);do if(!(d|p)){e=+R(+(+(f-s|0)*+(o-t|0)/7.0+.5));if(e<=2147483647.0&e>=-2147483648.0){m=~~e;break}else{b=2;i=E;return b|0}}else m=0;while(0);g=(j|0)==(t|0);r=(x|0)==(s|0);do if(!(g|r)){e=+R(+(+(x-s|0)*+(j-t|0)/7.0+.5));if(e<=2147483647.0&e>=-2147483648.0){h=~~e;break}else{b=2;i=E;return b|0}}else h=0;while(0);u=m-h|0;q=(w|0)==(t|0);do if(!(d|q)){e=+R(+(+(f-s|0)*+(w-t|0)/7.0+.5));if(e<=2147483647.0&e>=-2147483648.0){f=~~e;break}else{b=2;i=E;return b|0}}else f=0;while(0);l=(n|0)==(s|0);do if(!(g|l)){e=+R(+(+(j-t|0)*+(n-s|0)/7.0+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=2;i=E;return b|0}}else d=0;while(0);if((f|0)==(d|0)){b=1;i=E;return b|0}g=(w|0)==0|(m|0)==(h|0);do if(!g){e=+R(+(+(w|0)*+(u|0)/+(f-d|0)+.5));if(e<=2147483647.0&e>=-2147483648.0){m=~~e;break}else{b=1;i=E;return b|0}}else m=0;while(0);if((m|0)<=(w|0)){b=1;i=E;return b|0}do if(!(p|l)){e=+R(+(+(o-t|0)*+(n-s|0)/7.0+.5));if(e<=2147483647.0&e>=-2147483648.0){f=~~e;break}else{b=2;i=E;return b|0}}else f=0;while(0);do if(!(r|q)){e=+R(+(+(x-s|0)*+(w-t|0)/7.0+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=2;i=E;return b|0}}else d=0;while(0);if((f|0)==(d|0)){b=1;i=E;return b|0}do if(!g){e=+R(+(+(w|0)*+(u|0)/+(f-d|0)+.5));if(e<=2147483647.0&e>=-2147483648.0){l=~~e;break}else{b=1;i=E;return b|0}}else l=0;while(0);if((l|0)<=(w|0)){b=1;i=E;return b|0}e=+R(+(1.0e10/+(w|0)+.5));if(e<=2147483647.0&e>=-2147483648.0)f=~~e;else f=0;k=+(m|0);e=+R(+(1.0e10/k+.5));if(e<=2147483647.0&e>=-2147483648.0)d=~~e;else d=0;j=f-d|0;v=+(l|0);e=+R(+(1.0e10/v+.5));if(e<=2147483647.0&e>=-2147483648.0)n=~~e;else n=0;o=j-n|0;if((o|0)<1){b=1;i=E;return b|0}if(!m){b=1;i=E;return b|0}do if(x){e=+R(+(+(x|0)*1.0e5/k+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=1;i=E;return b|0}}else d=0;while(0);c[a>>2]=d;f=a+4|0;d=c[y>>2]|0;do if(d){e=+R(+(+(d|0)*1.0e5/k+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=1;i=E;return b|0}}else d=0;while(0);c[f>>2]=d;g=a+8|0;f=1e5-(c[b>>2]|0)|0;d=c[y>>2]|0;do if((f|0)!=(d|0)){e=+R(+(+(f-d|0)*1.0e5/k+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=1;i=E;return b|0}}else d=0;while(0);c[g>>2]=d;f=a+12|0;d=c[z>>2]|0;if(!l){b=1;i=E;return b|0}do if(d){e=+R(+(+(d|0)*1.0e5/v+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=1;i=E;return b|0}}else d=0;while(0);c[f>>2]=d;f=a+16|0;d=c[A>>2]|0;do if(d){e=+R(+(+(d|0)*1.0e5/v+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=1;i=E;return b|0}}else d=0;while(0);c[f>>2]=d;g=a+20|0;f=1e5-(c[z>>2]|0)|0;d=c[A>>2]|0;do if((f|0)!=(d|0)){e=+R(+(+(f-d|0)*1.0e5/v+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=1;i=E;return b|0}}else d=0;while(0);c[g>>2]=d;f=a+24|0;d=c[B>>2]|0;h=(j|0)==(n|0);do if(!((d|0)==0|h)){e=+R(+(+(o|0)*+(d|0)/1.0e5+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=1;i=E;return b|0}}else d=0;while(0);c[f>>2]=d;f=a+28|0;d=c[C>>2]|0;do if(!((d|0)==0|h)){e=+R(+(+(o|0)*+(d|0)/1.0e5+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=1;i=E;return b|0}}else d=0;while(0);c[f>>2]=d;g=a+32|0;f=1e5-(c[B>>2]|0)|0;d=c[C>>2]|0;do if(!((f|0)==(d|0)|h)){e=+R(+(+(o|0)*+(f-d|0)/1.0e5+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=1;i=E;return b|0}}else d=0;while(0);c[g>>2]=d;d=qP(D,a)|0;if(d){b=d;i=E;return b|0}b=(pP(b,D,5)|0)==0&1;i=E;return b|0}function pP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=c[a+24>>2]|0;e=c[b+24>>2]|0;if((f|0)<(e-d|0)|(f|0)>(e+d|0))return 0;e=c[a+28>>2]|0;f=c[b+28>>2]|0;if((e|0)<(f-d|0)|(e|0)>(f+d|0))return 0;e=c[a>>2]|0;f=c[b>>2]|0;if((e|0)<(f-d|0)|(e|0)>(f+d|0))return 0;e=c[a+4>>2]|0;f=c[b+4>>2]|0;if((e|0)<(f-d|0)|(e|0)>(f+d|0))return 0;e=c[a+8>>2]|0;f=c[b+8>>2]|0;if((e|0)<(f-d|0)|(e|0)>(f+d|0))return 0;e=c[a+12>>2]|0;f=c[b+12>>2]|0;if((e|0)<(f-d|0)|(e|0)>(f+d|0))return 0;e=c[a+16>>2]|0;f=c[b+16>>2]|0;if((e|0)<(f-d|0)|(e|0)>(f+d|0))return 0;else{e=c[a+20>>2]|0;f=c[b+20>>2]|0;return ((e|0)<(f-d|0)|(e|0)>(f+d|0))&1^1|0}return 0}function qP(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=c[b>>2]|0;f=b+4|0;m=(c[f>>2]|0)+e+(c[b+8>>2]|0)|0;if(!m){a=1;return a|0}do if(e){d=+R(+(+(e|0)*1.0e5/+(m|0)+.5));if(d<=2147483647.0&d>=-2147483648.0){e=~~d;break}else{a=1;return a|0}}else e=0;while(0);c[a>>2]=e;g=a+4|0;e=c[f>>2]|0;do if(e){d=+R(+(+(e|0)*1.0e5/+(m|0)+.5));if(d<=2147483647.0&d>=-2147483648.0){e=~~d;break}else{a=1;return a|0}}else e=0;while(0);c[g>>2]=e;i=c[b>>2]|0;j=c[f>>2]|0;h=b+12|0;g=c[h>>2]|0;k=b+16|0;f=(c[k>>2]|0)+g+(c[b+20>>2]|0)|0;e=a+8|0;if(!f){a=1;return a|0}do if(g){d=+R(+(+(g|0)*1.0e5/+(f|0)+.5));if(d<=2147483647.0&d>=-2147483648.0){g=~~d;break}else{a=1;return a|0}}else g=0;while(0);c[e>>2]=g;e=a+12|0;g=c[k>>2]|0;do if(g){d=+R(+(+(g|0)*1.0e5/+(f|0)+.5));if(d<=2147483647.0&d>=-2147483648.0){g=~~d;break}else{a=1;return a|0}}else g=0;while(0);c[e>>2]=g;m=f+m|0;l=(c[h>>2]|0)+i|0;j=(c[k>>2]|0)+j|0;i=b+24|0;g=c[i>>2]|0;k=b+28|0;f=(c[k>>2]|0)+g+(c[b+32>>2]|0)|0;e=a+16|0;if(!f){a=1;return a|0}do if(g){d=+R(+(+(g|0)*1.0e5/+(f|0)+.5));if(d<=2147483647.0&d>=-2147483648.0){g=~~d;break}else{a=1;return a|0}}else g=0;while(0);c[e>>2]=g;e=a+20|0;g=c[k>>2]|0;do if(g){d=+R(+(+(g|0)*1.0e5/+(f|0)+.5));if(d<=2147483647.0&d>=-2147483648.0){g=~~d;break}else{a=1;return a|0}}else g=0;while(0);c[e>>2]=g;h=m+f|0;e=l+(c[i>>2]|0)|0;f=c[k>>2]|0;g=a+24|0;if(!h){a=1;return a|0}do if(e){d=+R(+(+(e|0)*1.0e5/+(h|0)+.5));if(d<=2147483647.0&d>=-2147483648.0){e=~~d;break}else{a=1;return a|0}}else e=0;while(0);c[g>>2]=e;e=j+f|0;f=a+28|0;if(!e){c[f>>2]=0;a=0;return a|0}d=+R(+(+(e|0)*1.0e5/+(h|0)+.5));if(!(d<=2147483647.0&d>=-2147483648.0)){a=1;return a|0}c[f>>2]=~~d;a=0;return a|0}function rP(c,d,f,g,h){c=c|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+224|0;p=r+24|0;q=r;j=(d|0)!=0;if(j){d=d+74|0;b[d>>1]=e[d>>1]|0|32768}d=MB(p,196,0,260688)|0;f=MB(p,196,MB(p,d+79|0,d,f)|0,260704)|0;d=g>>>24;if((((d|0)==32|(d+-48|0)>>>0<10|(d+-65|0)>>>0<26|(d+-97|0)>>>0<26?(k=g>>>16,l=k&255,(l|0)==32|(l+-48|0)>>>0<10|(l+-65|0)>>>0<26|(l+-97|0)>>>0<26):0)?(m=g>>>8,n=m&255,(n|0)==32|(n+-48|0)>>>0<10|(n+-65|0)>>>0<26|(n+-97|0)>>>0<26):0)?(o=g&255,(o|0)==32|(o+-48|0)>>>0<10|(o+-65|0)>>>0<26|(o+-97|0)>>>0<26):0){a[p+f>>0]=39;a[p+(f+1)>>0]=(d+-32|0)>>>0<95?d&255:63;a[p+(f+2)>>0]=(l+-32|0)>>>0<95?k&255:63;a[p+(f+3)>>0]=(n+-32|0)>>>0<95?m&255:63;a[p+(f+4)>>0]=(o+-32|0)>>>0<95?g&255:63;a[p+(f+5)>>0]=39;a[p+(f+6)>>0]=58;a[p+(f+7)>>0]=32;g=f+8|0;MB(p,196,g,h)|0;g=j?2:1;YB(c,p,g);i=r;return}g=MB(p,196,MB(p,196,f,NB(q,q+24|0,3,g)|0)|0,260712)|0;MB(p,196,g,h)|0;g=j?2:1;YB(c,p,g);i=r;return}function sP(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0.0,h=0,i=0.0,j=0,k=0,l=0,m=0,n=0;l=8-e|0;m=1<>2]=n;g=+(f|0)*.00001;h=(e|0)==0;if((f+-95e3|0)>>>0>1e4){e=0;do{d=sC(a,512)|0;c[n+(e<<2)>>2]=d;f=0;do{b[d+(f<<1)>>1]=~~+R(+(+U(+(i*+(((f<>>0)),+g)*65535.0+.5));f=f+1|0}while((f|0)!=256);e=e+1|0}while(e>>>0>>0);return}else f=0;do{e=sC(a,512)|0;c[n+(f<<2)>>2]=e;if(h){d=0;do{b[e+(d<<1)>>1]=(d<>1]=(((((d<>>0)/(j>>>0)|0;d=d+1|0}while((d|0)!=256)}f=f+1|0}while(f>>>0>>0);return}function tP(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=b>>>24;if((e+-65|0)>>>0>57|(e+-91|0)>>>0<6){a[c>>0]=91;a[c+1>>0]=a[368552+(b>>>28)>>0]|0;a[c+2>>0]=a[368552+(e&15)>>0]|0;a[c+3>>0]=93;f=4}else{a[c>>0]=e;f=1}e=b>>>16;g=e&255;if((g+-65|0)>>>0>57|(g+-91|0)>>>0<6){a[c+f>>0]=91;a[c+(f+1)>>0]=a[368552+(b>>>20&15)>>0]|0;a[c+(f|2)>>0]=a[368552+(e&15)>>0]|0;a[c+(f+3)>>0]=93;f=f+4|0}else{a[c+f>>0]=e;f=f+1|0}e=b>>>8;g=e&255;if((g+-65|0)>>>0>57|(g+-91|0)>>>0<6){a[c+f>>0]=91;a[c+(f+1)>>0]=a[368552+(b>>>12&15)>>0]|0;a[c+(f+2)>>0]=a[368552+(e&15)>>0]|0;a[c+(f+3)>>0]=93;e=f+4|0}else{a[c+f>>0]=e;e=f+1|0}g=b&255;if((g+-65|0)>>>0>57|(g+-91|0)>>>0<6){a[c+e>>0]=91;a[c+(e+1)>>0]=a[368552+(b>>>4&15)>>0]|0;a[c+(e+2)>>0]=a[368552+(b&15)>>0]|0;a[c+(e+3)>>0]=93;e=e+4|0}else{a[c+e>>0]=b;e=e+1|0}if(!d){a[c+e>>0]=0;return}a[c+e>>0]=58;a[c+(e+1)>>0]=32;b=0;g=e+2|0;while(1){f=a[d+b>>0]|0;if(!(f<<24>>24)){e=g;break}b=b+1|0;e=g+1|0;a[c+g>>0]=f;if((b|0)>=195)break;else g=e}a[c+e>>0]=0;return}function uP(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=c[f>>2]|0;z=f+8|0;i=a[z>>0]|0;if(i<<24>>24){if(!(i<<24>>24==2&(h|0)!=0))return;y=f+9|0;i=a[y>>0]|0;if(i<<24>>24==16){i=b[h+2>>1]|0;t=(i&65535)>>>8&65535;o=b[h+4>>1]|0;u=(o&65535)>>>8&65535;h=b[h+6>>1]|0;s=(h&65535)>>>8&65535;if(A){r=i&255;q=o&255;m=h&255;l=g+((A<<3)+-1)|0;n=0;p=g+((c[f+4>>2]|0)+-1)|0;while(1){j=p+-5|0;k=p+-4|0;if((((((d[j>>0]|0)==(t|0)?(a[k>>0]|0)==r<<24>>24:0)?(v=p+-3|0,(d[v>>0]|0)==(u|0)):0)?(w=p+-2|0,(a[w>>0]|0)==q<<24>>24):0)?(x=p+-1|0,(d[x>>0]|0)==(s|0)):0)?(a[p>>0]|0)==m<<24>>24:0){a[l>>0]=0;a[l+-1>>0]=0;i=x;o=w;h=v}else{a[l>>0]=-1;a[l+-1>>0]=-1;i=p+-1|0;o=p+-2|0;h=p+-3|0}a[l+-2>>0]=a[p>>0]|0;a[l+-3>>0]=a[i>>0]|0;a[l+-4>>0]=a[o>>0]|0;a[l+-5>>0]=a[h>>0]|0;a[l+-6>>0]=a[k>>0]|0;a[l+-7>>0]=a[j>>0]|0;n=n+1|0;if((n|0)==(A|0))break;else{l=l+-8|0;p=p+-6|0}}}}else if(i<<24>>24==8?(A|0)!=0:0){o=b[h+2>>1]&255;p=b[h+4>>1]&255;m=b[h+6>>1]&255;l=g+((A<<2)+-1)|0;n=0;j=g+((c[f+4>>2]|0)+-1)|0;while(1){i=j+-2|0;h=j+-1|0;if(((a[i>>0]|0)==o<<24>>24?(a[h>>0]|0)==p<<24>>24:0)?(a[j>>0]|0)==m<<24>>24:0)k=0;else k=-1;a[l>>0]=k;a[l+-1>>0]=a[j>>0]|0;a[l+-2>>0]=a[h>>0]|0;a[l+-3>>0]=a[i>>0]|0;n=n+1|0;if((n|0)==(A|0))break;else{l=l+-4|0;j=j+-3|0}}}a[z>>0]=6;a[f+10>>0]=4;i=d[y>>0]<<2;a[f+11>>0]=i;i=i&252;if(i>>>0>7)i=da(i>>>3,A)|0;else i=((da(i,A)|0)+7|0)>>>3;c[f+4>>2]=i;return}o=(h|0)!=0;if(o)j=e[h+8>>1]|0;else j=0;n=f+9|0;i=a[n>>0]|0;if((i&255)<8){i=i&255;if((i|0)==2){j=(j&3)*85|0;i=A+-1|0;if(A){k=g+i|0;m=0;l=(A<<1)+6&6^6;h=g+(i>>>2)|0;while(1){i=(d[h>>0]|0)>>>l&3;a[k>>0]=i<<2|i|i<<4|i<<6;i=(l|0)==6;m=m+1|0;if((m|0)==(A|0))break;else{k=k+-1|0;l=i?0:l+2|0;h=i?h+-1|0:h}}}}else if((i|0)==4){j=(j&15)*17|0;i=A+-1|0;if(A){k=g+i|0;m=0;l=A<<2&4;h=g+(i>>>1)|0;while(1){i=(d[h>>0]|0)>>>l&15;a[k>>0]=i<<4|i;i=(l|0)==4;m=m+1|0;if((m|0)==(A|0))break;else{k=k+-1|0;l=i?0:4;h=i?h+-1|0:h}}}}else if((i|0)==1){j=0-(j&1)&255;i=A+-1|0;if(A){k=g+i|0;m=0;l=A+7&7^7;h=g+(i>>>3)|0;while(1){a[k>>0]=((d[h>>0]&1<>31;i=(l|0)==7;m=m+1|0;if((m|0)==(A|0))break;else{k=k+-1|0;l=i?0:l+1|0;h=i?h+-1|0:h}}}}a[n>>0]=8;a[f+11>>0]=8;c[f+4>>2]=A;i=8}if(!o)return;if(i<<24>>24==8){if(A){j=j&255;k=g+((A<<1)+-1)|0;h=0;i=g+(A+-1)|0;while(1){a[k>>0]=((a[i>>0]|0)!=j<<24>>24)<<31>>31;a[k+-1>>0]=a[i>>0]|0;h=h+1|0;if((h|0)==(A|0))break;else{k=k+-2|0;i=i+-1|0}}}}else if(i<<24>>24==16?(p=c[f+4>>2]|0,(A|0)!=0):0){m=j>>>8&255;j=j&255;k=g+((p<<1)+-1)|0;l=0;h=g+(p+-1)|0;while(1){i=h+-1|0;if((a[i>>0]|0)==m<<24>>24?(a[h>>0]|0)==j<<24>>24:0){a[k>>0]=0;a[k+-1>>0]=0}else{a[k>>0]=-1;a[k+-1>>0]=-1}a[k+-2>>0]=a[h>>0]|0;a[k+-3>>0]=a[i>>0]|0;l=l+1|0;if((l|0)==(A|0))break;else{k=k+-4|0;h=h+-2|0}}}a[z>>0]=4;a[f+10>>0]=2;i=d[n>>0]<<1;a[f+11>>0]=i;i=i&254;if(i>>>0>7)i=da(i>>>3,A)|0;else i=((da(i,A)|0)+7|0)>>>3;c[f+4>>2]=i;return}function vP(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=c[b>>2]|0;j=b+9|0;f=a[j>>0]|0;if((f&255)<=7)return;k=b+8|0;g=a[k>>0]|0;if(g&2)return;do if(g<<24>>24==4)if(f<<24>>24==8){f=l<<1;g=f+-1|0;if(!l)break;h=e+(g+f)|0;i=0;f=e+g|0;while(1){e=f+-1|0;a[h>>0]=a[f>>0]|0;a[h+-1>>0]=a[e>>0]|0;a[h+-2>>0]=a[e>>0]|0;a[h+-3>>0]=a[e>>0]|0;i=i+1|0;if((i|0)==(l|0))break;else{h=h+-4|0;f=f+-2|0}}}else{f=l<<2;g=f+-1|0;if(!l)break;h=e+(g+f)|0;i=0;f=e+g|0;while(1){a[h>>0]=a[f>>0]|0;g=f+-2|0;a[h+-1>>0]=a[f+-1>>0]|0;a[h+-2>>0]=a[g>>0]|0;e=f+-3|0;a[h+-3>>0]=a[e>>0]|0;a[h+-4>>0]=a[g>>0]|0;a[h+-5>>0]=a[e>>0]|0;a[h+-6>>0]=a[g>>0]|0;a[h+-7>>0]=a[e>>0]|0;i=i+1|0;if((i|0)==(l|0))break;else{h=h+-8|0;f=f+-4|0}}}else if(!(g<<24>>24))if(f<<24>>24==8){f=l+-1|0;if(!l)break;g=e+(f+(l<<1))|0;h=0;f=e+f|0;while(1){a[g>>0]=a[f>>0]|0;a[g+-1>>0]=a[f>>0]|0;a[g+-2>>0]=a[f>>0]|0;h=h+1|0;if((h|0)==(l|0))break;else{g=g+-3|0;f=f+-1|0}}}else{f=(l<<1)+-1|0;if(!l)break;g=e+(f+(l<<2))|0;h=0;f=e+f|0;while(1){a[g>>0]=a[f>>0]|0;e=f+-1|0;a[g+-1>>0]=a[e>>0]|0;a[g+-2>>0]=a[f>>0]|0;a[g+-3>>0]=a[e>>0]|0;a[g+-4>>0]=a[f>>0]|0;a[g+-5>>0]=a[e>>0]|0;h=h+1|0;if((h|0)==(l|0))break;else{g=g+-6|0;f=f+-2|0}}}while(0);e=b+10|0;f=(d[e>>0]|0)+2|0;a[e>>0]=f;a[k>>0]=d[k>>0]|0|2;f=da(d[j>>0]|0,f&255)|0;a[b+11>>0]=f;f=f&255;if(f>>>0>7)f=da(f>>>3,l)|0;else f=((da(f,l)|0)+7|0)>>>3;c[b+4>>2]=f;return}function wP(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+64|0;f=h;g=b+220|0;e=c[g>>2]|0;if(e){a[f>>0]=e>>>24;a[f+1>>0]=e>>>16;a[f+2>>0]=e>>>8;a[f+3>>0]=e;MB(f,64,4,268112)|0;TB(b,f);c[g>>2]=0}e=b+224|0;c[e>>2]=0;c[b+228>>2]=0;c[b+236>>2]=0;c[b+240>>2]=0;f=b+212|0;if(!(c[f>>2]&2)){e=zH(e,268176,56)|0;if(!e){c[f>>2]=c[f>>2]|2;f=7}else f=8}else{e=yH(e)|0;if(!e)f=7;else f=8}if((f|0)==7){c[g>>2]=d;b=0;i=h;return b|0}else if((f|0)==8){oB(b,e);b=e;i=h;return b|0}return 0}function xP(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;if((c[a+220>>2]|0)!=(c[a+376>>2]|0)){c[a+248>>2]=263760;return}j=a+224|0;c[a+236>>2]=e;k=a+240|0;c[k>>2]=0;i=a+228|0;h=(g|0)!=0?4:2;e=1024;while(1){if(!(c[i>>2]|0)){g=c[d>>2]|0;e=e>>>0>g>>>0?g:e;c[d>>2]=g-e;if(e){FC(a,b,e);eB(a,b,e)}c[j>>2]=b;c[i>>2]=e;g=e}else g=e;if(!(c[k>>2]|0)){e=c[f>>2]|0;c[f>>2]=0;c[k>>2]=e}e=AH(j,(c[d>>2]|0)==0?h:0)|0;if(e)break;if(c[f>>2]|0){e=g;continue}if(!(c[k>>2]|0)){e=0;break}else e=g}c[f>>2]=(c[f>>2]|0)+(c[k>>2]|0);c[k>>2]=0;oB(a,e);return}function yP(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+1024|0;u=y;h=c[b+760>>2]|0;if(!((h|0)==-1|(h|0)==0)){g=e+1|0;if(h>>>0>>0){oB(b,-4);x=-4;i=y;return x|0}}else{g=e+1|0;h=-1}g=h-g|0;if(g>>>0<(c[f>>2]|0)>>>0)c[f>>2]=g;l=b+376|0;g=wP(b,c[l>>2]|0)|0;if((g|0)==1){x=-7;i=y;return x|0}else if(!g){v=d-e|0;t=b+788|0;w=b+220|0;do if((c[w>>2]|0)==(c[l>>2]|0)){m=c[f>>2]|0;p=b+224|0;c[p>>2]=(c[t>>2]|0)+e;r=b+228|0;s=b+240|0;q=b+236|0;c[r>>2]=v;c[q>>2]=u;g=m>>>0<1024?m:1024;c[s>>2]=g;h=m-g|0;g=AH(p,(m|0)==(g|0)?4:0)|0;if(!g){g=h;while(1){m=g+(c[s>>2]|0)|0;c[q>>2]=u;g=m>>>0<1024?m:1024;c[s>>2]=g;h=m-g|0;g=AH(p,(m|0)==(g|0)?4:0)|0;if(!g)g=h;else break}}c[q>>2]=0;j=c[r>>2]|0;h=(c[s>>2]|0)+h|0;if(h)c[f>>2]=(c[f>>2]|0)-h;d=v-j|0;oB(b,g);if((g|0)==1){if(yH(p)|0){oB(b,1);g=-7;break}m=c[f>>2]|0;n=e+1+m|0;o=tC(b,n)|0;if(!o){oB(b,-4);g=-4;break}g=o+e|0;do if((c[w>>2]|0)==(c[l>>2]|0)){h=c[f>>2]|0;c[p>>2]=(c[t>>2]|0)+e;c[r>>2]=0;c[s>>2]=0;l=(g|0)==0;if(l){g=0;j=0;k=d}else{c[q>>2]=g;g=0;j=0;k=d}while(1){c[r>>2]=k+g;j=h+j|0;if(l){c[q>>2]=u;g=1024}else g=-1;g=j>>>0>>0?j:g;c[s>>2]=g;h=j-g|0;g=AH(p,(j|0)==(g|0)?4:0)|0;if(g)break;g=c[r>>2]|0;j=c[s>>2]|0;k=0}if(l)c[q>>2]=0;j=c[r>>2]|0;h=(c[s>>2]|0)+h|0;if(h)c[f>>2]=(c[f>>2]|0)-h;d=d-j|0;oB(b,g);if(!g){g=-7;h=o;break}else if((g|0)!=1){h=o;break}if((m|0)==(c[f>>2]|0)){a[o+(m+e)>>0]=0;h=c[t>>2]|0;if(e)qfa(o|0,h|0,e|0)|0;c[t>>2]=o;c[b+792>>2]=n;g=1}else{g=-7;h=o}}else{c[b+248>>2]=263760;g=-2;h=o}while(0);qC(b,h);if(!((g|0)!=1|(v|0)==(d|0))){XB(b,262408);g=1}}else x=38}else{c[b+248>>2]=263760;g=-2;x=38}while(0);if((x|0)==38)g=(g|0)==0?-7:g;c[w>>2]=0;x=g;i=y;return x|0}else{x=g;i=y;return x|0}return 0}function zP(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=b+772|0;e=c[f>>2]|0;if(e){qC(b,e);c[f>>2]=0}e=c[b+760>>2]|0;if(!((e|0)==-1|(e|0)==0)?e>>>0>>0:0){f=0;e=8}else e=5;do if((e|0)==5){g=c[b+376>>2]|0;a[b+764>>0]=g>>>24;a[b+765>>0]=g>>>16;a[b+766>>0]=g>>>8;a[b+767>>0]=g;a[b+768>>0]=0;c[b+776>>2]=d;a[b+780>>0]=c[b+208>>2];if(!d){c[f>>2]=0;break}else{e=wC(b,d)|0;c[f>>2]=e;f=e;e=8;break}}while(0);do if((e|0)==8){e=(d|0)!=0;if((f|0)==0&e){RC(b,d)|0;XB(b,263720);g=0;return g|0}else{if((b|0)==0|e^1)break;FC(b,f,d);eB(b,f,d);break}}while(0);RC(b,0)|0;g=1;return g|0}function AP(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0;h=c[b+4>>2]|0;f=((d[b+11>>0]|0)+7|0)>>>3;if(f>>>0>=h>>>0)return;b=0-f|0;g=f;f=e+f|0;while(1){a[f>>0]=(d[f+b>>0]|0)+(d[f>>0]|0);g=g+1|0;if((g|0)==(h|0))break;else f=f+1|0}return}function BP(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0;g=c[b+4>>2]|0;if(!g)return;else{h=0;b=e}while(1){a[b>>0]=(d[f>>0]|0)+(d[b>>0]|0);h=h+1|0;if((h|0)==(g|0))break;else{f=f+1|0;b=b+1|0}}return}function CP(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=((d[b+11>>0]|0)+7|0)>>>3;i=c[b+4>>2]|0;if(!j)b=e;else{b=e+j|0;g=0;h=f;while(1){a[e>>0]=((d[h>>0]|0)>>>1&255)+(d[e>>0]|0);g=g+1|0;if(g>>>0>=j>>>0)break;else{h=h+1|0;e=e+1|0}}f=f+j|0}if((i|0)==(j|0))return;h=0-j|0;g=i-j|0;e=0;while(1){a[b>>0]=(((d[b+h>>0]|0)+(d[f>>0]|0)|0)>>>1)+(d[b>>0]|0);e=e+1|0;if((e|0)==(g|0))break;else{f=f+1|0;b=b+1|0}}return}function DP(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=c[b+4>>2]|0;j=e+i|0;g=d[f>>0]|0;b=(d[e>>0]|0)+g|0;a[e>>0]=b;if((i|0)<=1)return;i=e+1|0;h=b;while(1){f=f+1|0;b=h&255;l=g;g=d[f>>0]|0;k=g-l|0;o=b-l|0;m=(k|0)<0?0-k|0:k;n=(o|0)<0?0-o|0:o;o=k+o|0;k=(n|0)<(m|0);h=((((o|0)<0?0-o|0:o)|0)<((k?n:m)|0)?l:k?g:b)+(d[i>>0]|0)|0;a[i>>0]=h;b=e+2|0;if(b>>>0>=j>>>0)break;else{e=i;i=b}}return}function EP(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=((d[b+11>>0]|0)+7|0)>>>3;j=e+l|0;if(!l)g=e;else{k=e+1|0;k=(j>>>0>k>>>0?j:k)-e|0;i=f;h=e;while(1){g=h+1|0;a[h>>0]=(d[i>>0]|0)+(d[h>>0]|0);if(g>>>0>>0){i=i+1|0;h=g}else break}f=f+k|0}i=e+(c[b+4>>2]|0)|0;if(g>>>0>=i>>>0)return;h=0-l|0;while(1){l=d[f+h>>0]|0;e=d[g+h>>0]|0;j=d[f>>0]|0;k=j-l|0;n=e-l|0;b=(k|0)<0?0-k|0:k;m=(n|0)<0?0-n|0:n;n=k+n|0;k=(m|0)<(b|0);a[g>>0]=((((n|0)<0?0-n|0:n)|0)<((k?m:b)|0)?l:k?j:e)+(d[g>>0]|0);g=g+1|0;if((g|0)==(i|0))break;else f=f+1|0}return}function FP(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=c[b+352>>2]|0;d=c[b+364>>2]|0;if((d|e)>>>0>=32768){m=-1;return m|0}if(!(a[b+432>>0]|0)){m=da(d+1|0,e)|0;return m|0}i=a[b+438>>0]|0;k=i&255;m=(c[b+348>>2]|0)+-1|0;j=k>>>3;l=e+-1|0;if((i&255)>7){d=0;b=0;a:while(1){i=b;while(1){if((i|0)>=7)break a;e=(i|0)>1;if(e)f=7-i>>1;else f=3;g=i&1;b=i+1|0;if(e)e=7-i>>1;else e=3;e=(m-(g<<3-(b>>1)&7)+(1<>>e;if(!e)i=b;else break}h=(da(e,j)|0)+1|0;f=(i|0)>2;if(f)e=8-i>>1;else e=3;if(f)f=8-i>>1;else f=3;d=(da((l-((g^1)<<3-(i>>1)&7)+(1<>>f,h)|0)+d|0}return d|0}else{d=0;b=0;b:while(1){i=b;while(1){if((i|0)>=7)break b;e=(i|0)>1;if(e)f=7-i>>1;else f=3;g=i&1;b=i+1|0;if(e)e=7-i>>1;else e=3;e=(m-(g<<3-(b>>1)&7)+(1<>>e;if(!e)i=b;else break}h=(((da(e,k)|0)+7|0)>>>3)+1|0;f=(i|0)>2;if(f)e=8-i>>1;else e=3;if(f)f=8-i>>1;else f=3;d=(da((l-((g^1)<<3-(i>>1)&7)+(1<>>f,h)|0)+d|0}return d|0}return 0}function GP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+64|0;g=q;p=b+220|0;f=c[p>>2]|0;do if(f){a[g>>0]=d>>>24;a[g+1>>0]=d>>>16;a[g+2>>0]=d>>>8;a[g+3>>0]=d;a[g+4>>0]=58;a[g+5>>0]=32;a[g+6>>0]=f>>>24;a[g+7>>0]=f>>>16;a[g+8>>0]=f>>>8;a[g+9>>0]=f;MB(g,64,10,268112)|0;OB(b,g);if((c[p>>2]|0)!=1229209940){c[p>>2]=0;break}c[b+248>>2]=268128;b=-2;i=q;return b|0}while(0);f=c[b+288>>2]|0;j=c[b+292>>2]|0;g=c[b+296>>2]|0;h=c[b+300>>2]|0;do if((d|0)==1229209940)if(!(c[b+212>>2]&1)){o=h;m=j;n=(a[b+434>>0]|0)!=8&1;break}else{o=h;m=j;n=c[b+304>>2]|0;break}else{f=c[b+308>>2]|0;o=c[b+320>>2]|0;m=c[b+312>>2]|0;n=c[b+324>>2]|0;g=c[b+316>>2]|0}while(0);if(e>>>0<16385?(k=1<>>0<=k>>>0):0){j=k;do{j=j>>>1;g=g+-1|0}while(l>>>0<=j>>>0)}k=b+212|0;h=c[k>>2]|0;do if(h&2){if(((((c[b+328>>2]|0)==(f|0)?(c[b+332>>2]|0)==(m|0):0)?(c[b+336>>2]|0)==(g|0):0)?(c[b+340>>2]|0)==(o|0):0)?(c[b+344>>2]|0)==(n|0):0)break;if(tH(b+224|0)|0)OB(b,268144);h=c[k>>2]&-3;c[k>>2]=h}while(0);j=b+224|0;c[j>>2]=0;c[b+228>>2]=0;c[b+236>>2]=0;c[b+240>>2]=0;if(!(h&2)){f=sH(j,f,m,g,o,n,268176,56)|0;if(!f){c[k>>2]=c[k>>2]|2;g=26}else g=27}else{f=uH(j)|0;if(!f)g=26;else g=27}if((g|0)==26){c[p>>2]=d;b=0;i=q;return b|0}else if((g|0)==27){oB(b,f);b=f;i=q;return b|0}return 0}function HP(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+256|0;l=m;if(!c){a[d>>0]=0;b=0;i=m;return b|0}e=a[c>>0]|0;if(!(e<<24>>24)){a[d>>0]=0;b=0;i=m;return b|0}else{g=c;j=d;h=0;d=0;f=1}a:while(1){b:do if(!f){f=g+1|0;if((e+-33&255)<94|(e&255)>160)k=5;else{a[j>>0]=32;g=f;h=e<<24>>24==32?h:e&255;f=1}}else while(1){g=g+1|0;if((e+-33&255)<94|(e&255)>160){f=g;k=5;break b}h=(h|0)==0?e&255:h;e=a[g>>0]|0;if(!(e<<24>>24)){e=h;break a}}while(0);if((k|0)==5){k=0;a[j>>0]=e;g=f;f=0}d=d+1|0;j=j+1|0;e=a[g>>0]|0;if(!(e<<24>>24!=0&d>>>0<79)){e=h;break}}if((d|0)!=0&(f|0)!=0){f=j+-1|0;e=(e|0)==0?32:e;d=d+-1|0}else f=j;a[f>>0]=0;if(!d){b=0;i=m;return b|0}if(a[g>>0]|0){OB(b,268048);b=d;i=m;return b|0}if(!e){b=d;i=m;return b|0}PB(l,1,c);QB(l,2,4,e);RB(b,l,268072);b=d;i=m;return b|0}function IP(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=f+4|0;e=GP(b,e,c[p>>2]|0)|0;if(e){f=e;return f|0}i=c[p>>2]|0;m=b+224|0;c[m>>2]=c[f>>2];n=b+228|0;c[n>>2]=0;q=f+12|0;k=b+236|0;c[k>>2]=q;o=b+240|0;c[o>>2]=1024;l=b+284|0;e=0;j=b+280|0;h=1024;while(1){c[n>>2]=i;if(e){if((h+g|0)<0){i=0;e=-4;break}e=c[j>>2]|0;if(!e){e=tC(b,(c[l>>2]|0)+4|0)|0;if(!e){i=0;e=-4;break}c[e>>2]=0;c[j>>2]=e}c[k>>2]=e+4;i=c[l>>2]|0;c[o>>2]=i;j=e;h=i+h|0}e=wH(m,4)|0;i=c[n>>2]|0;c[n>>2]=0;if(e)break;e=(c[o>>2]|0)==0}m=h-(c[o>>2]|0)|0;c[o>>2]=0;c[f+8>>2]=m;if((m+g|0)>>>0>2147483646){c[b+248>>2]=268016;c[b+220>>2]=0;f=-4;return f|0}oB(b,e);c[b+220>>2]=0;if(!((e|0)==1&(i|0)==0)){f=e;return f|0}i=c[p>>2]|0;if(i>>>0>=16385){f=0;return f|0}e=d[q>>0]|0;if(!((e&15|0)==8&(e&240)>>>0<113)){f=0;return f|0}e=e>>>4;h=1<>>0>>0){f=0;return f|0}do{h=h>>>1;e=e+-1|0}while(!((e|0)==0|h>>>0>>0));g=e<<4|8;a[q>>0]=g;f=f+13|0;q=(d[f>>0]|0)&224;a[f>>0]=(q|(((q|g<<8)>>>0)%31|0))^31;f=0;return f|0}function JP(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=c[b+408>>2]|0;if(d<<24>>24){p=c[b>>2]|0;c[p+20>>2]=49;Bd[c[p>>2]&511](b)}do if(a[b+252>>0]|0){d=(c[b+348>>2]|0)==0;e=q+4|0;if(!(c[b+356>>2]|0))if(d){c[e>>2]=256;break}else{c[e>>2]=257;break}else if(d){c[e>>2]=258;break}else{c[e>>2]=259;break}}else c[q+4>>2]=260;while(0);g=b+276|0;if((c[g>>2]|0)<=0){p=q+12|0;c[p>>2]=0;p=q+16|0;c[p>>2]=65536;p=q+20|0;c[p>>2]=0;p=q+24|0;c[p>>2]=0;p=q+28|0;c[p>>2]=11;p=q+32|0;c[p>>2]=-1;p=b+224|0;p=c[p>>2]|0;b=q+68|0;c[b>>2]=p;b=q+72|0;c[b>>2]=0;return}h=b+348|0;i=b+356|0;j=q+76|0;k=b+4|0;l=q+36|0;m=q+52|0;n=b+352|0;o=q+140|0;p=0;do{f=c[b+(p<<2)+280>>2]|0;if((c[h>>2]|0)==0?(c[i>>2]|0)==0:0){d=c[f+20>>2]|0;if(d>>>0>15){e=c[b>>2]|0;c[e+20>>2]=50;c[e+24>>2]=d;Bd[c[e>>2]&511](b)}e=j+(d<<2)|0;d=c[e>>2]|0;if(!d){d=Hd[c[c[k>>2]>>2]&255](b,1,64)|0;c[e>>2]=d}d=d+0|0;e=d+64|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0));c[l+(p<<2)>>2]=0;c[m+(p<<2)>>2]=0}if(c[n>>2]|0){d=c[f+24>>2]|0;if(d>>>0>15){f=c[b>>2]|0;c[f+20>>2]=50;c[f+24>>2]=d;Bd[c[f>>2]&511](b)}e=o+(d<<2)|0;d=c[e>>2]|0;if(!d){d=Hd[c[c[k>>2]>>2]&255](b,1,256)|0;c[e>>2]=d}sfa(d|0,0,256)|0}p=p+1|0}while((p|0)<(c[g>>2]|0));p=q+12|0;c[p>>2]=0;p=q+16|0;c[p>>2]=65536;p=q+20|0;c[p>>2]=0;p=q+24|0;c[p>>2]=0;p=q+28|0;c[p>>2]=11;p=q+32|0;c[p>>2]=-1;p=b+224|0;p=c[p>>2]|0;b=q+68|0;c[b>>2]=p;b=q+72|0;c[b>>2]=0;return}function KP(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=c[b+408>>2]|0;l=j+12|0;i=c[l>>2]|0;f=(c[j+16>>2]|0)+-1+i&-65536;f=((f|0)<(i|0)?f|32768:f)<>2];c[l>>2]=f;i=j+32|0;e=c[i>>2]|0;if(f>>>0<=134217727){if(e){if((e|0)>-1){f=j+24|0;g=b+24|0;if(c[f>>2]|0){do{d=c[g>>2]|0;e=c[d>>2]|0;c[d>>2]=e+1;a[e>>0]=0;e=d+4|0;h=(c[e>>2]|0)+-1|0;c[e>>2]=h;if((h|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Bd[c[h>>2]&511](b)}h=(c[f>>2]|0)+-1|0;c[f>>2]=h}while((h|0)!=0);e=c[i>>2]|0}d=c[g>>2]|0;i=c[d>>2]|0;c[d>>2]=i+1;a[i>>0]=e;i=d+4|0;h=(c[i>>2]|0)+-1|0;c[i>>2]=h;if((h|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Bd[c[h>>2]&511](b)}}}else{h=j+24|0;c[h>>2]=(c[h>>2]|0)+1}g=j+20|0;if(c[g>>2]|0){d=j+24|0;f=b+24|0;if(c[d>>2]|0)do{e=c[f>>2]|0;i=c[e>>2]|0;c[e>>2]=i+1;a[i>>0]=0;i=e+4|0;h=(c[i>>2]|0)+-1|0;c[i>>2]=h;if((h|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Bd[c[h>>2]&511](b)}h=(c[d>>2]|0)+-1|0;c[d>>2]=h}while((h|0)!=0);do{d=c[f>>2]|0;i=c[d>>2]|0;c[d>>2]=i+1;a[i>>0]=-1;i=d+4|0;h=(c[i>>2]|0)+-1|0;c[i>>2]=h;if((h|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Bd[c[h>>2]&511](b)}d=c[f>>2]|0;i=c[d>>2]|0;c[d>>2]=i+1;a[i>>0]=0;i=d+4|0;h=(c[i>>2]|0)+-1|0;c[i>>2]=h;if((h|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Bd[c[h>>2]&511](b)}h=(c[g>>2]|0)+-1|0;c[g>>2]=h}while((h|0)!=0)}}else{f=j+24|0;if((e|0)>-1){g=b+24|0;if(c[f>>2]|0){do{d=c[g>>2]|0;m=c[d>>2]|0;c[d>>2]=m+1;a[m>>0]=0;m=d+4|0;e=(c[m>>2]|0)+-1|0;c[m>>2]=e;if((e|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}m=(c[f>>2]|0)+-1|0;c[f>>2]=m}while((m|0)!=0);e=c[i>>2]|0}d=c[g>>2]|0;m=c[d>>2]|0;c[d>>2]=m+1;a[m>>0]=e+1;e=d+4|0;m=(c[e>>2]|0)+-1|0;c[e>>2]=m;if((m|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}if(((c[i>>2]|0)==254?(h=c[g>>2]|0,i=c[h>>2]|0,c[h>>2]=i+1,a[i>>0]=0,i=h+4|0,m=(c[i>>2]|0)+-1|0,c[i>>2]=m,(m|0)==0):0)?(Ed[c[h+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}}m=j+20|0;c[j+24>>2]=(c[f>>2]|0)+(c[m>>2]|0);c[m>>2]=0}d=c[l>>2]|0;if(!(d&134215680))return;e=j+24|0;g=b+24|0;if(c[e>>2]|0){do{d=c[g>>2]|0;j=c[d>>2]|0;c[d>>2]=j+1;a[j>>0]=0;j=d+4|0;m=(c[j>>2]|0)+-1|0;c[j>>2]=m;if((m|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}m=(c[e>>2]|0)+-1|0;c[e>>2]=m}while((m|0)!=0);d=c[l>>2]|0}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=d>>>19;j=e+4|0;m=(c[j>>2]|0)+-1|0;c[j>>2]=m;if((m|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}if(((c[l>>2]&133693440|0)==133693440?(k=c[g>>2]|0,j=c[k>>2]|0,c[k>>2]=j+1,a[j>>0]=0,j=k+4|0,m=(c[j>>2]|0)+-1|0,c[j>>2]=m,(m|0)==0):0)?(Ed[c[k+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}d=c[l>>2]|0;if(!(d&522240))return;e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=d>>>11;j=e+4|0;m=(c[j>>2]|0)+-1|0;c[j>>2]=m;if((m|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}if((c[l>>2]&522240|0)!=522240)return;d=c[g>>2]|0;j=c[d>>2]|0;c[d>>2]=j+1;a[j>>0]=0;j=d+4|0;m=(c[j>>2]|0)+-1|0;c[j>>2]=m;if(m)return;if((Ed[c[d+12>>2]&511](b)|0)<<24>>24)return;m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b);return}function LP(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+388>>2]|0;c[d+8>>2]=0;do if((c[a+276>>2]|0)<=1){e=c[a+280>>2]|0;if((c[a+272>>2]|0)==1){c[d+20>>2]=c[e+76>>2];break}else{c[d+20>>2]=c[e+12>>2];break}}else c[d+20>>2]=1;while(0);c[d+12>>2]=0;c[d+16>>2]=0;if((b|0)==3){if(!(c[d+64>>2]|0)){b=c[a>>2]|0;c[b+20>>2]=3;Bd[c[b>>2]&511](a)}c[d+4>>2]=262;return}else if(!b){if(c[d+64>>2]|0){b=c[a>>2]|0;c[b+20>>2]=3;Bd[c[b>>2]&511](a)}c[d+4>>2]=261;return}else if((b|0)==2){if(!(c[d+64>>2]|0)){b=c[a>>2]|0;c[b+20>>2]=3;Bd[c[b>>2]&511](a)}c[d+4>>2]=263;return}else{b=c[a>>2]|0;c[b+20>>2]=3;Bd[c[b>>2]&511](a);return}}function MP(a){a=a|0;return}function NP(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=c[b+36>>2]|0;j=c[b+28>>2]|0;b=g+-1|0;if((g|0)<=0)return;if(!j){while(1)if((b|0)>0)b=b+-1|0;else break;return}else i=d;while(1){h=i;i=i+4|0;g=c[(c[e>>2]|0)+(f<<2)>>2]|0;f=f+1|0;d=0;h=c[h>>2]|0;while(1){a[g+d>>0]=a[h>>0]|0;d=d+1|0;if((d|0)==(j|0))break;else h=h+k|0}if((b|0)<=0)break;else b=b+-1|0}return}function OP(a){a=a|0;var b=0;b=c[a+396>>2]|0;a=Hd[c[c[a+4>>2]>>2]&255](a,1,8192)|0;c[b+8>>2]=a;b=0;do{c[a+(b<<2)>>2]=b*19595;c[a+(b+256<<2)>>2]=b*38470;c[a+(b+512<<2)>>2]=(b*7471|0)+32768;c[a+(b+768<<2)>>2]=da(b,-11058)|0;c[a+(b+1024<<2)>>2]=da(b,-21710)|0;c[a+(b+1280<<2)>>2]=(b<<15)+8421375;c[a+(b+1536<<2)>>2]=da(b,-27439)|0;c[a+(b+1792<<2)>>2]=da(b,-5329)|0;b=b+1|0}while((b|0)!=256);return}function PP(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;l=c[(c[b+396>>2]|0)+8>>2]|0;k=c[b+28>>2]|0;b=h+-1|0;if((h|0)<=0)return;if(!k){while(1)if((b|0)>0)b=b+-1|0;else break;return}else j=e;while(1){i=j;j=j+4|0;h=c[(c[f>>2]|0)+(g<<2)>>2]|0;g=g+1|0;e=0;i=c[i>>2]|0;while(1){a[h+e>>0]=((c[l+((d[i+1>>0]|0|256)<<2)>>2]|0)+(c[l+((d[i>>0]|0)<<2)>>2]|0)+(c[l+((d[i+2>>0]|0|512)<<2)>>2]|0)|0)>>>16;e=e+1|0;if((e|0)==(k|0))break;else i=i+3|0}if((b|0)<=0)break;else b=b+-1|0}return}function QP(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=c[b+28>>2]|0;b=g+-1|0;if((g|0)<=0)return;l=e+4|0;m=e+8|0;if(!n){while(1)if((b|0)>0)b=b+-1|0;else break;return}while(1){k=d;d=d+4|0;i=c[(c[e>>2]|0)+(f<<2)>>2]|0;g=c[(c[l>>2]|0)+(f<<2)>>2]|0;h=c[(c[m>>2]|0)+(f<<2)>>2]|0;f=f+1|0;j=0;k=c[k>>2]|0;while(1){a[i+j>>0]=a[k>>0]|0;a[g+j>>0]=a[k+1>>0]|0;a[h+j>>0]=a[k+2>>0]|0;j=j+1|0;if((j|0)==(n|0))break;else k=k+3|0}if((b|0)<=0)break;else b=b+-1|0}return}function RP(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=c[b+28>>2]|0;b=h+-1|0;if((h|0)<=0)return;m=f+4|0;n=f+8|0;if(!o){while(1)if((b|0)>0)b=b+-1|0;else break;return}while(1){l=e;e=e+4|0;h=c[(c[f>>2]|0)+(g<<2)>>2]|0;i=c[(c[m>>2]|0)+(g<<2)>>2]|0;j=c[(c[n>>2]|0)+(g<<2)>>2]|0;g=g+1|0;k=0;l=c[l>>2]|0;while(1){r=a[l+1>>0]|0;q=r&255;p=d[l+2>>0]|0;a[h+k>>0]=(d[l>>0]|0)+128-q;a[i+k>>0]=r;a[j+k>>0]=128-q+p;k=k+1|0;if((k|0)==(o|0))break;else l=l+3|0}if((b|0)<=0)break;else b=b+-1|0}return}function SP(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=c[(c[b+396>>2]|0)+8>>2]|0;m=c[b+28>>2]|0;if((h|0)<=0)return;n=f+4|0;o=f+8|0;p=(m|0)==0;do{h=h+-1|0;b=e;e=e+4|0;i=c[(c[f>>2]|0)+(g<<2)>>2]|0;j=c[(c[n>>2]|0)+(g<<2)>>2]|0;k=c[(c[o>>2]|0)+(g<<2)>>2]|0;g=g+1|0;if(!p){l=0;b=c[b>>2]|0;while(1){s=d[b>>0]|0;t=d[b+1>>0]|0;r=d[b+2>>0]|0;a[i+l>>0]=((c[q+((t|256)<<2)>>2]|0)+(c[q+(s<<2)>>2]|0)+(c[q+((r|512)<<2)>>2]|0)|0)>>>16;a[j+l>>0]=((c[q+((t|1024)<<2)>>2]|0)+(c[q+((s|768)<<2)>>2]|0)+(c[q+((r|1280)<<2)>>2]|0)|0)>>>16;a[k+l>>0]=((c[q+((t|1536)<<2)>>2]|0)+(c[q+((s|1280)<<2)>>2]|0)+(c[q+((r|1792)<<2)>>2]|0)|0)>>>16;l=l+1|0;if((l|0)==(m|0))break;else b=b+3|0}}}while((h|0)>0);return}function TP(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=c[b+76>>2]|0;k=c[b+28>>2]|0;if((g|0)<=0)return;l=(n|0)>0;m=(k|0)==0;while(1){g=g+-1|0;if(l){b=0;do{if(!m){h=0;i=(c[d>>2]|0)+b|0;j=c[(c[e+(b<<2)>>2]|0)+(f<<2)>>2]|0;while(1){a[j>>0]=a[i>>0]|0;h=h+1|0;if((h|0)==(k|0))break;else{i=i+n|0;j=j+1|0}}}b=b+1|0}while((b|0)!=(n|0))}if((g|0)<=0)break;else{d=d+4|0;f=f+1|0}}return}function UP(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=c[(c[b+396>>2]|0)+8>>2]|0;o=c[b+28>>2]|0;if((h|0)<=0)return;p=f+4|0;q=f+8|0;r=f+12|0;n=(o|0)==0;do{h=h+-1|0;b=e;e=e+4|0;i=c[(c[f>>2]|0)+(g<<2)>>2]|0;j=c[(c[p>>2]|0)+(g<<2)>>2]|0;k=c[(c[q>>2]|0)+(g<<2)>>2]|0;l=c[(c[r>>2]|0)+(g<<2)>>2]|0;g=g+1|0;if(!n){m=0;b=c[b>>2]|0;while(1){u=(d[b>>0]|0)^255;v=(d[b+1>>0]|0)^255;t=(d[b+2>>0]|0)^255;a[l+m>>0]=a[b+3>>0]|0;a[i+m>>0]=((c[s+((v|256)<<2)>>2]|0)+(c[s+(u<<2)>>2]|0)+(c[s+((t|512)<<2)>>2]|0)|0)>>>16;a[j+m>>0]=((c[s+((v|1024)<<2)>>2]|0)+(c[s+((u|768)<<2)>>2]|0)+(c[s+((t|1280)<<2)>>2]|0)|0)>>>16;a[k+m>>0]=((c[s+((v|1536)<<2)>>2]|0)+(c[s+((u|1280)<<2)>>2]|0)+(c[s+((t|1792)<<2)>>2]|0)|0)>>>16;m=m+1|0;if((m|0)==(o|0))break;else b=b+4|0}}}while((h|0)>0);return}function VP(d){d=d|0;var f=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0;o=c[d+404>>2]|0;p=d+76|0;if((c[p>>2]|0)<=0)return;r=o+44|0;s=d+220|0;t=o+84|0;u=0;v=c[d+84>>2]|0;j=0;while(1){f=c[v+36>>2]|0;i=v+40|0;a:do switch((f<<8)+(c[i>>2]|0)|0){case 3598:{c[r+(u<<2)>>2]=102;j=0;break}case 2565:{c[r+(u<<2)>>2]=108;j=0;break}case 4104:{c[r+(u<<2)>>2]=105;j=0;break}case 516:{c[r+(u<<2)>>2]=119;j=0;break}case 1026:{c[r+(u<<2)>>2]=111;j=0;break}case 1548:{c[r+(u<<2)>>2]=115;j=0;break}case 771:{c[r+(u<<2)>>2]=92;j=0;break}case 4112:{c[r+(u<<2)>>2]=104;j=0;break}case 1290:{c[r+(u<<2)>>2]=116;j=0;break}case 258:{c[r+(u<<2)>>2]=120;j=0;break}case 513:{c[r+(u<<2)>>2]=112;j=0;break}case 1028:{c[r+(u<<2)>>2]=93;j=0;break}case 2313:{c[r+(u<<2)>>2]=97;j=0;break}case 3084:{c[r+(u<<2)>>2]=100;j=0;break}case 3855:{c[r+(u<<2)>>2]=103;j=0;break}case 514:{c[r+(u<<2)>>2]=91;j=0;break}case 2064:{c[r+(u<<2)>>2]=113;j=0;break}case 2570:{c[r+(u<<2)>>2]=98;j=0;break}case 1539:{c[r+(u<<2)>>2]=110;j=0;break}case 1542:{c[r+(u<<2)>>2]=95;j=0;break}case 3591:{c[r+(u<<2)>>2]=106;j=0;break}case 3078:{c[r+(u<<2)>>2]=107;j=0;break}case 257:{c[r+(u<<2)>>2]=90;j=0;break}case 3341:{c[r+(u<<2)>>2]=101;j=0;break}case 2052:{c[r+(u<<2)>>2]=109;j=0;break}case 1806:{c[r+(u<<2)>>2]=114;j=0;break}case 1032:{c[r+(u<<2)>>2]=117;j=0;break}case 2056:{f=c[s>>2]|0;if((f|0)==2){c[t+(u<<2)>>2]=123;j=2;break a}else if(!f){c[r+(u<<2)>>2]=121;j=0;break a}else if((f|0)==1){c[r+(u<<2)>>2]=122;j=1;break a}else{n=c[d>>2]|0;c[n+20>>2]=49;Bd[c[n>>2]&511](d);break a}}case 774:{c[r+(u<<2)>>2]=118;j=0;break}case 2827:{c[r+(u<<2)>>2]=99;j=0;break}case 1285:{c[r+(u<<2)>>2]=94;j=0;break}case 1799:{c[r+(u<<2)>>2]=96;j=0;break}default:{n=c[d>>2]|0;c[n+20>>2]=7;c[n+24>>2]=f;c[n+28>>2]=c[i>>2];Bd[c[n>>2]&511](d)}}while(0);i=c[v+16>>2]|0;f=d+(i<<2)+88|0;if(i>>>0<=3?(q=c[f>>2]|0,(q|0)!=0):0)n=q;else{n=c[d>>2]|0;c[n+20>>2]=54;c[n+24>>2]=i;Bd[c[n>>2]&511](d);n=c[f>>2]|0}if(!j){f=c[v+84>>2]|0;i=(a[v+52>>0]|0)!=0?4:3;k=0;do{c[f+(k<<2)>>2]=e[n+(k<<1)>>1]<>2]=44}else if((j|0)==1){f=c[v+84>>2]|0;k=(a[v+52>>0]|0)!=0?10:11;i=1<>2]=i+(da(b[269648+(m<<1)>>1]|0,e[n+(m<<1)>>1]|0)|0)>>k;m=m+1|0}while((m|0)!=64);c[o+(u<<2)+4>>2]=44}else if((j|0)==2){f=c[v+84>>2]|0;l=(a[v+52>>0]|0)!=0?16.0:8.0;k=0;i=0;while(1){w=+h[269776+(i<<3)>>3];g[f+(k<<2)>>2]=1.0/(+(e[n+(k<<1)>>1]|0)*w*l);m=k|1;g[f+(m<<2)>>2]=1.0/(+(e[n+(m<<1)>>1]|0)*w*1.387039845*l);m=m+1|0;g[f+(m<<2)>>2]=1.0/(+(e[n+(m<<1)>>1]|0)*w*1.306562965*l);m=k|3;g[f+(m<<2)>>2]=1.0/(+(e[n+(m<<1)>>1]|0)*w*1.175875602*l);x=m+1|0;g[f+(x<<2)>>2]=1.0/(+(e[n+(x<<1)>>1]|0)*w*l);x=m+2|0;g[f+(x<<2)>>2]=1.0/(+(e[n+(x<<1)>>1]|0)*w*.785694958*l);m=m+3|0;g[f+(m<<2)>>2]=1.0/(+(e[n+(m<<1)>>1]|0)*w*.5411961*l);m=k|7;g[f+(m<<2)>>2]=1.0/(+(e[n+(m<<1)>>1]|0)*w*.275899379*l);i=i+1|0;if((i|0)==8)break;else k=k+8|0}c[o+(u<<2)+4>>2]=45}else{x=c[d>>2]|0;c[x+20>>2]=49;Bd[c[x>>2]&511](d)}u=u+1|0;if((u|0)>=(c[p>>2]|0))break;else v=v+88|0}return}function WP(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=c[b+408>>2]|0;h=d<<24>>24!=0;c[q+8>>2]=h?285:284;do if(!(a[b+252>>0]|0)){d=q+4|0;if(h){c[d>>2]=268;break}else{c[d>>2]=269;break}}else{c[q+120>>2]=b;a[q+108>>0]=d;d=(c[b+348>>2]|0)==0;e=q+4|0;do if(!(c[b+356>>2]|0))if(d){c[e>>2]=264;break}else{c[e>>2]=265;break}else{if(d){c[e>>2]=266;break}c[e>>2]=267;d=q+136|0;if(!(c[d>>2]|0))c[d>>2]=Hd[c[c[b+4>>2]>>2]&255](b,1,1e3)|0}while(0);c[q+124>>2]=c[(c[b+280>>2]|0)+24>>2];c[q+128>>2]=0;c[q+132>>2]=0}while(0);l=b+276|0;if((c[l>>2]|0)<=0){p=q+12|0;c[p>>2]=0;p=q+16|0;c[p>>2]=0;p=b+224|0;p=c[p>>2]|0;b=q+36|0;c[b>>2]=p;b=q+40|0;c[b>>2]=0;return}m=b+348|0;n=b+356|0;i=q+76|0;j=b+4|0;o=q+20|0;f=q+44|0;p=b+352|0;k=q+92|0;g=q+60|0;if(h)f=0;else{e=0;do{d=c[b+(e<<2)+280>>2]|0;if((c[m>>2]|0)==0?(c[n>>2]|0)==0:0){j=c[d+20>>2]|0;u$(b,1,j,f+(j<<2)|0);c[o+(e<<2)>>2]=0}if(c[p>>2]|0){j=c[d+24>>2]|0;u$(b,0,j,g+(j<<2)|0)}e=e+1|0}while((e|0)<(c[l>>2]|0));p=q+12|0;c[p>>2]=0;p=q+16|0;c[p>>2]=0;p=b+224|0;p=c[p>>2]|0;b=q+36|0;c[b>>2]=p;b=q+40|0;c[b>>2]=0;return}do{g=c[b+(f<<2)+280>>2]|0;if((c[m>>2]|0)==0?(c[n>>2]|0)==0:0){d=c[g+20>>2]|0;if(d>>>0>3){h=c[b>>2]|0;c[h+20>>2]=52;c[h+24>>2]=d;Bd[c[h>>2]&511](b)}e=i+(d<<2)|0;d=c[e>>2]|0;if(!d){d=Hd[c[c[j>>2]>>2]&255](b,1,1028)|0;c[e>>2]=d}sfa(d|0,0,1028)|0;c[o+(f<<2)>>2]=0}if(c[p>>2]|0){d=c[g+24>>2]|0;if(d>>>0>3){h=c[b>>2]|0;c[h+20>>2]=52;c[h+24>>2]=d;Bd[c[h>>2]&511](b)}e=k+(d<<2)|0;d=c[e>>2]|0;if(!d){d=Hd[c[c[j>>2]>>2]&255](b,1,1028)|0;c[e>>2]=d}sfa(d|0,0,1028)|0}f=f+1|0}while((f|0)<(c[l>>2]|0));p=q+12|0;c[p>>2]=0;p=q+16|0;c[p>>2]=0;p=b+224|0;p=c[p>>2]|0;b=q+36|0;c[b>>2]=p;b=q+40|0;c[b>>2]=0;return}function XP(b,d){b=b|0;d=d|0;var e=0;e=c[b+380>>2]|0;if(a[b+208>>0]|0)return;c[e+8>>2]=0;c[e+12>>2]=0;a[e+16>>0]=0;c[e+20>>2]=d;if(!d){c[e+4>>2]=43;return}else{d=c[b>>2]|0;c[d+20>>2]=3;Bd[c[d>>2]&511](b);return}}function YP(d){d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[d+392>>2]|0;g=d+24|0;e=c[g>>2]|0;i=c[e>>2]|0;c[e>>2]=i+1;a[i>>0]=-1;i=e+4|0;h=(c[i>>2]|0)+-1|0;c[i>>2]=h;if((h|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=-40;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}c[f+28>>2]=0;do if(a[d+232>>0]|0){e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=-1;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=-32;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=0;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=16;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=74;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=70;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=73;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=70;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=0;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}i=a[d+233>>0]|0;e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=i;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}i=a[d+234>>0]|0;e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=i;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}i=a[d+235>>0]|0;e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=i;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}f=b[d+236>>1]|0;e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=(f&65535)>>>8;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=f;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}f=b[d+238>>1]|0;e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=(f&65535)>>>8;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;do if(!i){if((Ed[c[e+12>>2]&511](d)|0)<<24>>24)break;i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}while(0);e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=f;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;do if(!i){if((Ed[c[e+12>>2]&511](d)|0)<<24>>24)break;i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}while(0);e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=0;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;do if(!i){if((Ed[c[e+12>>2]&511](d)|0)<<24>>24)break;i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}while(0);e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=0;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if(i)break;if((Ed[c[e+12>>2]&511](d)|0)<<24>>24)break;i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}while(0);if(!(a[d+240>>0]|0))return;e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=-1;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=-18;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=0;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=14;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=65;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=100;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=111;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=98;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=101;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=0;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=100;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=0;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=0;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=0;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=0;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;do if(!i){if((Ed[c[e+12>>2]&511](d)|0)<<24>>24)break;i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}while(0);e=c[d+80>>2]|0;if((e|0)==3){e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=1;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if(i)return;if((Ed[c[e+12>>2]&511](d)|0)<<24>>24)return;i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d);return}else if((e|0)==5){e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=2;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if(i)return;if((Ed[c[e+12>>2]&511](d)|0)<<24>>24)return;i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d);return}else{e=c[g>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=0;h=e+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if(i)return;if((Ed[c[e+12>>2]&511](d)|0)<<24>>24)return;i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d);return}}function ZP(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=b+84|0;j=b+76|0;d=c[j>>2]|0;if((d|0)>0){f=0;g=c[l>>2]|0;d=0;while(1){e=(w$(b,c[g+16>>2]|0)|0)+d|0;f=f+1|0;d=c[j>>2]|0;if((f|0)>=(d|0)){h=e;break}else{g=g+88|0;d=e}}}else h=0;i=b+209|0;m=b+252|0;e=(a[m>>0]|0)==0;a:do if(a[i>>0]|0)if(e)k=19;else k=18;else{b:do if(e){do if((c[b+72>>2]|0)==8?(c[b+364>>2]|0)==8:0){if((d|0)>0){e=0;f=c[l>>2]|0;g=1;while(1){if(!((c[f+20>>2]|0)<=1?(c[f+24>>2]|0)<=1:0))g=0;e=e+1|0;if((e|0)>=(d|0)){d=g;break}else f=f+88|0}}else d=1;if((h|0)==0|d<<24>>24==0){if(!(d<<24>>24))break;x$(b,192);break a}d=c[b>>2]|0;c[d+20>>2]=77;Cd[c[d+4>>2]&255](b,0);d=(a[m>>0]|0)!=0;if(!(a[i>>0]|0))if(d)break b;else break;else if(d){k=18;break a}else{k=19;break a}}while(0);x$(b,193);break a}while(0);x$(b,194)}while(0);if((k|0)==18)x$(b,202);else if((k|0)==19)x$(b,201);d=c[b+244>>2]|0;if((d|0)==1)if((c[j>>2]|0)<3)k=27;else k=28;else if(d)k=27;if((k|0)==27){j=c[b>>2]|0;c[j+20>>2]=28;Bd[c[j>>2]&511](b);k=28}do if((k|0)==28){k=b+24|0;d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=-1;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;if((j|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=-8;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;if((j|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;if((j|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=24;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;if((j|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=13;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;if((j|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;if((j|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=-1;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;if((j|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=3;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;if((j|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}d=c[k>>2]|0;j=c[(c[l>>2]|0)+88>>2]&255;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=j;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;if((j|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}d=c[k>>2]|0;j=c[c[l>>2]>>2]&255;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=j;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;if((j|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}d=c[k>>2]|0;j=c[(c[l>>2]|0)+176>>2]&255;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=j;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;if((j|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=-128;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;if((j|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;if((j|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;if((j|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;if((j|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;do if(!j){if((Ed[c[d+12>>2]&511](b)|0)<<24>>24)break;j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}while(0);d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;do if(!j){if((Ed[c[d+12>>2]&511](b)|0)<<24>>24)break;j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}while(0);d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;do if(!j){if((Ed[c[d+12>>2]&511](b)|0)<<24>>24)break;j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}while(0);d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=1;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;do if(!j){if((Ed[c[d+12>>2]&511](b)|0)<<24>>24)break;j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}while(0);d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;do if(!j){if((Ed[c[d+12>>2]&511](b)|0)<<24>>24)break;j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}while(0);d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;do if(!j){if((Ed[c[d+12>>2]&511](b)|0)<<24>>24)break;j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}while(0);d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;do if(!j){if((Ed[c[d+12>>2]&511](b)|0)<<24>>24)break;j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}while(0);d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;do if(!j){if((Ed[c[d+12>>2]&511](b)|0)<<24>>24)break;j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}while(0);d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=1;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;do if(!j){if((Ed[c[d+12>>2]&511](b)|0)<<24>>24)break;j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}while(0);d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;do if(!j){if((Ed[c[d+12>>2]&511](b)|0)<<24>>24)break;j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}while(0);d=c[k>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;j=(c[h>>2]|0)+-1|0;c[h>>2]=j;if(j)break;if((Ed[c[d+12>>2]&511](b)|0)<<24>>24)break;j=c[b>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](b)}while(0);if(!(a[m>>0]|0))return;e=b+364|0;if((c[e>>2]|0)==8)return;g=b+24|0;d=c[g>>2]|0;j=c[d>>2]|0;c[d>>2]=j+1;a[j>>0]=-1;j=d+4|0;m=(c[j>>2]|0)+-1|0;c[j>>2]=m;if((m|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}d=c[g>>2]|0;j=c[d>>2]|0;c[d>>2]=j+1;a[j>>0]=-38;j=d+4|0;m=(c[j>>2]|0)+-1|0;c[j>>2]=m;if((m|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}d=c[g>>2]|0;j=c[d>>2]|0;c[d>>2]=j+1;a[j>>0]=0;j=d+4|0;m=(c[j>>2]|0)+-1|0;c[j>>2]=m;if((m|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}d=c[g>>2]|0;j=c[d>>2]|0;c[d>>2]=j+1;a[j>>0]=6;j=d+4|0;m=(c[j>>2]|0)+-1|0;c[j>>2]=m;if((m|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}d=c[g>>2]|0;j=c[d>>2]|0;c[d>>2]=j+1;a[j>>0]=0;j=d+4|0;m=(c[j>>2]|0)+-1|0;c[j>>2]=m;if((m|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}d=c[g>>2]|0;j=c[d>>2]|0;c[d>>2]=j+1;a[j>>0]=0;j=d+4|0;m=(c[j>>2]|0)+-1|0;c[j>>2]=m;if((m|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}m=c[e>>2]|0;m=(da(m,m)|0)+255|0;d=c[g>>2]|0;j=c[d>>2]|0;c[d>>2]=j+1;a[j>>0]=m;j=d+4|0;m=(c[j>>2]|0)+-1|0;c[j>>2]=m;if((m|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}d=c[g>>2]|0;j=c[d>>2]|0;c[d>>2]=j+1;a[j>>0]=0;j=d+4|0;m=(c[j>>2]|0)+-1|0;c[j>>2]=m;if(m)return;if((Ed[c[d+12>>2]&511](b)|0)<<24>>24)return;m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b);return}function _P(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+32|0;j=o+16|0;k=o;n=c[b+392>>2]|0;if(!(a[b+209>>0]|0)){g=b+276|0;if((c[g>>2]|0)>0){h=b+348|0;j=b+356|0;e=b+352|0;k=0;do{f=c[b+(k<<2)+280>>2]|0;if((c[h>>2]|0)==0?(c[j>>2]|0)==0:0)y$(b,c[f+20>>2]|0,0);if(c[e>>2]|0)y$(b,c[f+24>>2]|0,1);k=k+1|0}while((k|0)<(c[g>>2]|0))}}else{e=k+0|0;f=e+16|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0));e=j+0|0;f=e+16|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0));g=c[b+276>>2]|0;a:do if((g|0)>0){e=(c[b+352>>2]|0)==0;if(c[b+348>>2]|0){if(e){f=0;e=0;break}else e=0;while(1){a[k+(c[(c[b+(e<<2)+280>>2]|0)+24>>2]|0)>>0]=1;e=e+1|0;if((e|0)==(g|0)){f=0;e=0;break a}}}f=(c[b+356>>2]|0)==0;if(e){e=0;do{if(f)a[j+(c[(c[b+(e<<2)+280>>2]|0)+20>>2]|0)>>0]=1;e=e+1|0}while((e|0)!=(g|0));f=0;e=0}else{h=0;do{e=c[b+(h<<2)+280>>2]|0;if(f)a[j+(c[e+20>>2]|0)>>0]=1;a[k+(c[e+24>>2]|0)>>0]=1;h=h+1|0}while((h|0)!=(g|0));f=0;e=0}}else{f=0;e=0}while(0);do{e=(a[j+f>>0]|0)+e+(a[k+f>>0]|0)|0;f=f+1|0}while((f|0)!=16);if(e){m=b+24|0;f=c[m>>2]|0;g=c[f>>2]|0;c[f>>2]=g+1;a[g>>0]=-1;g=f+4|0;l=(c[g>>2]|0)+-1|0;c[g>>2]=l;if((l|0)==0?(Ed[c[f+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}f=c[m>>2]|0;g=c[f>>2]|0;c[f>>2]=g+1;a[g>>0]=-52;g=f+4|0;l=(c[g>>2]|0)+-1|0;c[g>>2]=l;if((l|0)==0?(Ed[c[f+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}h=(e<<1)+2|0;e=c[m>>2]|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=h>>>8;g=e+4|0;l=(c[g>>2]|0)+-1|0;c[g>>2]=l;if((l|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}e=c[m>>2]|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=h;g=e+4|0;l=(c[g>>2]|0)+-1|0;c[g>>2]=l;if((l|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}h=0;do{if(a[j+h>>0]|0){e=c[m>>2]|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=h;g=e+4|0;l=(c[g>>2]|0)+-1|0;c[g>>2]=l;if((l|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}e=c[m>>2]|0;l=(d[b+h+168>>0]<<4)+(d[b+h+152>>0]|0)&255;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=l;g=e+4|0;l=(c[g>>2]|0)+-1|0;c[g>>2]=l;if((l|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}}if(a[k+h>>0]|0){e=c[m>>2]|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=h+16;g=e+4|0;l=(c[g>>2]|0)+-1|0;c[g>>2]=l;if((l|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}l=a[b+h+184>>0]|0;e=c[m>>2]|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=l;g=e+4|0;l=(c[g>>2]|0)+-1|0;c[g>>2]=l;if((l|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}}h=h+1|0}while((h|0)!=16)}}g=b+224|0;h=n+28|0;n=b+24|0;if((c[g>>2]|0)!=(c[h>>2]|0)){e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=-1;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=-35;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=0;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=4;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}f=c[g>>2]|0;e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=f>>>8;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=f;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}c[h>>2]=c[g>>2]}e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=-1;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=-38;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}m=b+276|0;f=(c[m>>2]<<1)+6|0;e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=f>>>8;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=f;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}e=c[n>>2]|0;l=c[m>>2]&255;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=l;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Bd[c[l>>2]&511](b)}if((c[m>>2]|0)>0){e=b+348|0;k=b+356|0;j=b+352|0;l=0;do{f=c[b+(l<<2)+280>>2]|0;h=c[n>>2]|0;g=c[f>>2]&255;p=c[h>>2]|0;c[h>>2]=p+1;a[p>>0]=g;p=h+4|0;g=(c[p>>2]|0)+-1|0;c[p>>2]=g;if((g|0)==0?(Ed[c[h+12>>2]&511](b)|0)<<24>>24==0:0){p=c[b>>2]|0;c[p+20>>2]=25;Bd[c[p>>2]&511](b)}if((c[e>>2]|0)==0?(c[k>>2]|0)==0:0)g=c[f+20>>2]<<4;else g=0;if(!(c[j>>2]|0))h=0;else h=c[f+24>>2]|0;f=c[n>>2]|0;p=c[f>>2]|0;c[f>>2]=p+1;a[p>>0]=h+g;g=f+4|0;p=(c[g>>2]|0)+-1|0;c[g>>2]=p;if((p|0)==0?(Ed[c[f+12>>2]&511](b)|0)<<24>>24==0:0){p=c[b>>2]|0;c[p+20>>2]=25;Bd[c[p>>2]&511](b)}l=l+1|0}while((l|0)<(c[m>>2]|0))}else e=b+348|0;f=c[n>>2]|0;p=c[e>>2]&255;l=c[f>>2]|0;c[f>>2]=l+1;a[l>>0]=p;l=f+4|0;p=(c[l>>2]|0)+-1|0;c[l>>2]=p;if((p|0)==0?(Ed[c[f+12>>2]&511](b)|0)<<24>>24==0:0){p=c[b>>2]|0;c[p+20>>2]=25;Bd[c[p>>2]&511](b)}e=c[n>>2]|0;p=c[b+352>>2]&255;l=c[e>>2]|0;c[e>>2]=l+1;a[l>>0]=p;l=e+4|0;p=(c[l>>2]|0)+-1|0;c[l>>2]=p;if((p|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){p=c[b>>2]|0;c[p+20>>2]=25;Bd[c[p>>2]&511](b)}e=c[n>>2]|0;p=(c[b+356>>2]<<4)+(c[b+360>>2]|0)&255;l=c[e>>2]|0;c[e>>2]=l+1;a[l>>0]=p;l=e+4|0;p=(c[l>>2]|0)+-1|0;c[l>>2]=p;if(p){i=o;return}if((Ed[c[e+12>>2]&511](b)|0)<<24>>24){i=o;return}p=c[b>>2]|0;c[p+20>>2]=25;Bd[c[p>>2]&511](b);i=o;return}function $P(b){b=b|0;var d=0,e=0,f=0,g=0;d=b+24|0;e=c[d>>2]|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=-1;g=e+4|0;f=(c[g>>2]|0)+-1|0;c[g>>2]=f;if((f|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){g=c[b>>2]|0;c[g+20>>2]=25;Bd[c[g>>2]&511](b)}d=c[d>>2]|0;f=c[d>>2]|0;c[d>>2]=f+1;a[f>>0]=-39;f=d+4|0;g=(c[f>>2]|0)+-1|0;c[f>>2]=g;if(g)return;if((Ed[c[d+12>>2]&511](b)|0)<<24>>24)return;g=c[b>>2]|0;c[g+20>>2]=25;Bd[c[g>>2]&511](b);return}function aQ(b){b=b|0;var d=0,e=0,f=0,g=0;e=b+24|0;d=c[e>>2]|0;g=c[d>>2]|0;c[d>>2]=g+1;a[g>>0]=-1;g=d+4|0;f=(c[g>>2]|0)+-1|0;c[g>>2]=f;if((f|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){g=c[b>>2]|0;c[g+20>>2]=25;Bd[c[g>>2]&511](b)}d=c[e>>2]|0;f=c[d>>2]|0;c[d>>2]=f+1;a[f>>0]=-40;f=d+4|0;g=(c[f>>2]|0)+-1|0;c[f>>2]=g;if((g|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){g=c[b>>2]|0;c[g+20>>2]=25;Bd[c[g>>2]&511](b)}if(c[b+88>>2]|0)w$(b,0)|0;if(c[b+92>>2]|0)w$(b,1)|0;if(c[b+96>>2]|0)w$(b,2)|0;if(c[b+100>>2]|0)w$(b,3)|0;if(!(a[b+209>>0]|0)){if(c[b+120>>2]|0)y$(b,0,0);if(c[b+136>>2]|0)y$(b,0,1);if(c[b+124>>2]|0)y$(b,1,0);if(c[b+140>>2]|0)y$(b,1,1);if(c[b+128>>2]|0)y$(b,2,0);if(c[b+144>>2]|0)y$(b,2,1);if(c[b+132>>2]|0)y$(b,3,0);if(c[b+148>>2]|0)y$(b,3,1)}d=c[e>>2]|0;f=c[d>>2]|0;c[d>>2]=f+1;a[f>>0]=-1;f=d+4|0;g=(c[f>>2]|0)+-1|0;c[f>>2]=g;if((g|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){g=c[b>>2]|0;c[g+20>>2]=25;Bd[c[g>>2]&511](b)}d=c[e>>2]|0;f=c[d>>2]|0;c[d>>2]=f+1;a[f>>0]=-39;f=d+4|0;g=(c[f>>2]|0)+-1|0;c[f>>2]=g;if(g)return;if((Ed[c[d+12>>2]&511](b)|0)<<24>>24)return;g=c[b>>2]|0;c[g+20>>2]=25;Bd[c[g>>2]&511](b);return}function bQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if(e>>>0>65533){g=c[b>>2]|0;c[g+20>>2]=12;Bd[c[g>>2]&511](b)}g=b+24|0;f=c[g>>2]|0;i=c[f>>2]|0;c[f>>2]=i+1;a[i>>0]=-1;i=f+4|0;h=(c[i>>2]|0)+-1|0;c[i>>2]=h;if((h|0)==0?(Ed[c[f+12>>2]&511](b)|0)<<24>>24==0:0){i=c[b>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](b)}f=c[g>>2]|0;h=c[f>>2]|0;c[f>>2]=h+1;a[h>>0]=d;h=f+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[f+12>>2]&511](b)|0)<<24>>24==0:0){i=c[b>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](b)}e=e+2|0;f=c[g>>2]|0;h=c[f>>2]|0;c[f>>2]=h+1;a[h>>0]=e>>>8;h=f+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if((i|0)==0?(Ed[c[f+12>>2]&511](b)|0)<<24>>24==0:0){i=c[b>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](b)}f=c[g>>2]|0;h=c[f>>2]|0;c[f>>2]=h+1;a[h>>0]=e;h=f+4|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if(i)return;if((Ed[c[f+12>>2]&511](b)|0)<<24>>24)return;i=c[b>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](b);return}function cQ(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b+24>>2]|0;f=c[e>>2]|0;c[e>>2]=f+1;a[f>>0]=d;f=e+4|0;d=(c[f>>2]|0)+-1|0;c[f>>2]=d;if(d)return;if((Ed[c[e+12>>2]&511](b)|0)<<24>>24)return;d=c[b>>2]|0;c[d+20>>2]=25;Bd[c[d>>2]&511](b);return}function dQ(b){b=b|0;var d=0,e=0,f=0,g=0;g=c[b+376>>2]|0;d=g+16|0;e=c[d>>2]|0;do if(!e){z$(b);A$(b);if(!(a[b+208>>0]|0)){Bd[c[c[b+396>>2]>>2]&511](b);Bd[c[c[b+400>>2]>>2]&511](b);Cd[c[c[b+384>>2]>>2]&255](b,0)}Bd[c[c[b+404>>2]>>2]&511](b);e=b+210|0;Cd[c[c[b+408>>2]>>2]&255](b,a[e>>0]|0);Cd[c[c[b+388>>2]>>2]&255](b,(c[g+24>>2]|0)>1?3:0);Cd[c[c[b+380>>2]>>2]&255](b,0);d=g+12|0;if(!(a[e>>0]|0)){a[d>>0]=1;break}else{a[d>>0]=0;break}}else if((e|0)==1){z$(b);A$(b);if((c[b+348>>2]|0)==0?(c[b+356>>2]|0)!=0:0){c[d>>2]=2;f=g+20|0;c[f>>2]=(c[f>>2]|0)+1;f=11;break}Cd[c[c[b+408>>2]>>2]&255](b,1);Cd[c[c[b+388>>2]>>2]&255](b,2);a[g+12>>0]=0}else if((e|0)==2)f=11;else{e=c[b>>2]|0;c[e+20>>2]=49;Bd[c[e>>2]&511](b)}while(0);if((f|0)==11){if(!(a[b+210>>0]|0)){z$(b);A$(b)}Cd[c[c[b+408>>2]>>2]&255](b,0);Cd[c[c[b+388>>2]>>2]&255](b,2);d=b+392|0;if(!(c[g+28>>2]|0))Bd[c[(c[d>>2]|0)+4>>2]&511](b);Bd[c[(c[d>>2]|0)+8>>2]&511](b);a[g+12>>0]=0}e=c[g+20>>2]|0;f=c[g+24>>2]|0;a[g+13>>0]=(e|0)==(f+-1|0)&1;d=c[b+8>>2]|0;if(!d)return;c[d+12>>2]=e;c[d+16>>2]=f;return}function eQ(b){b=b|0;var d=0;a[(c[b+376>>2]|0)+12>>0]=0;d=b+392|0;Bd[c[(c[d>>2]|0)+4>>2]&511](b);Bd[c[(c[d>>2]|0)+8>>2]&511](b);return}function fQ(b){b=b|0;var d=0,e=0,f=0;d=c[b+376>>2]|0;Bd[c[(c[b+408>>2]|0)+8>>2]&511](b);e=d+16|0;f=c[e>>2]|0;if((f|0)==1)c[e>>2]=2;else if((f|0)==2){if(a[b+210>>0]|0)c[e>>2]=1;f=d+28|0;c[f>>2]=(c[f>>2]|0)+1}else if((f|0)==0?(c[e>>2]=2,(a[b+210>>0]|0)==0):0){f=d+28|0;c[f>>2]=(c[f>>2]|0)+1}f=d+20|0;c[f>>2]=(c[f>>2]|0)+1;return}function gQ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=c[e>>2]|0;if(!h){h=gF(b)|0;c[e>>2]=h}h=h+0|0;i=f+0|0;j=h+17|0;do{a[h>>0]=a[i>>0]|0;h=h+1|0;i=i+1|0}while((h|0)<(j|0));h=(d[f+16>>0]|0)+((d[f+15>>0]|0)+((d[f+14>>0]|0)+((d[f+13>>0]|0)+((d[f+12>>0]|0)+((d[f+11>>0]|0)+((d[f+10>>0]|0)+((d[f+9>>0]|0)+((d[f+8>>0]|0)+((d[f+7>>0]|0)+((d[f+6>>0]|0)+((d[f+5>>0]|0)+((d[f+4>>0]|0)+((d[f+3>>0]|0)+((d[f+2>>0]|0)+(d[f+1>>0]|0)))))))))))))))|0;if((h+-1|0)>>>0<=255){b=c[e>>2]|0;b=b+17|0;qfa(b|0,g|0,h|0)|0;g=c[e>>2]|0;g=g+273|0;a[g>>0]=0;return}j=c[b>>2]|0;c[j+20>>2]=9;Bd[c[j>>2]&511](b);b=c[e>>2]|0;b=b+17|0;qfa(b|0,g|0,h|0)|0;g=c[e>>2]|0;g=g+273|0;a[g>>0]=0;return}function hQ(a,b){a=a|0;b=b|0;var d=0;d=c[a+384>>2]|0;if(b){b=c[a>>2]|0;c[b+20>>2]=3;Bd[c[b>>2]&511](a)}c[d+48>>2]=c[a+32>>2];c[d+52>>2]=0;c[d+56>>2]=0;c[d+60>>2]=c[a+260>>2]<<1;return}function iQ(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;i=c[a+384>>2]|0;v=a+260|0;x=(c[v>>2]|0)*3|0;y=i+48|0;if((c[g>>2]|0)>>>0>=h>>>0)return;z=i+60|0;A=i+52|0;p=a+396|0;q=i+8|0;r=a+32|0;s=a+76|0;t=a+28|0;u=a+400|0;o=i+56|0;while(1){i=c[d>>2]|0;if(i>>>0>=e>>>0){if(c[y>>2]|0){k=29;break}j=c[A>>2]|0;i=c[z>>2]|0;if((j|0)<(i|0)){k=c[s>>2]|0;if((k|0)>0){l=0;while(1){m=c[q+(l<<2)>>2]|0;n=c[t>>2]|0;if((j|0)<(i|0)){k=j+-1|0;do{nH(m,k,m,j,1,n);j=j+1|0}while((j|0)!=(i|0));k=c[s>>2]|0}l=l+1|0;if((l|0)>=(k|0))break;j=c[A>>2]|0;i=c[z>>2]|0}i=c[z>>2]|0}c[A>>2]=i;k=25}else k=24}else{n=e-i|0;m=c[A>>2]|0;k=(c[z>>2]|0)-m|0;n=k>>>0>>0?k:n;Ad[c[(c[p>>2]|0)+4>>2]&63](a,b+(i<<2)|0,q,m,n);if((c[y>>2]|0)==(c[r>>2]|0)?(w=c[s>>2]|0,(w|0)>0):0){i=c[v>>2]|0;j=w;k=0;do{if((i|0)>=1){j=q+(k<<2)|0;l=1;while(1){i=c[j>>2]|0;nH(i,0,i,0-l|0,1,c[t>>2]|0);i=c[v>>2]|0;if((l|0)<(i|0))l=l+1|0;else break}j=c[s>>2]|0}k=k+1|0}while((k|0)<(j|0))}c[d>>2]=(c[d>>2]|0)+n;j=(c[A>>2]|0)+n|0;c[A>>2]=j;c[y>>2]=(c[y>>2]|0)-n;i=c[z>>2]|0;k=24}if((k|0)==24?(k=0,(j|0)==(i|0)):0)k=25;if((k|0)==25){Ad[c[(c[u>>2]|0)+4>>2]&63](a,q,c[o>>2]|0,f,c[g>>2]|0);c[g>>2]=(c[g>>2]|0)+1;j=c[v>>2]|0;i=(c[o>>2]|0)+j|0;c[o>>2]=(i|0)<(x|0)?i:0;i=c[A>>2]|0;if((i|0)>=(x|0)){c[A>>2]=0;i=0}c[z>>2]=j+i}if((c[g>>2]|0)>>>0>=h>>>0){k=29;break}}if((k|0)==29)return}function jQ(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;l=c[a+384>>2]|0;j=c[d>>2]|0;if(j>>>0>=e>>>0)return;s=a+260|0;t=l+52|0;u=a+396|0;v=l+8|0;r=l+48|0;w=a+76|0;o=a+28|0;q=a+400|0;l=j;while(1){if((c[g>>2]|0)>>>0>=h>>>0){p=28;break}m=e-l|0;j=c[t>>2]|0;n=(c[s>>2]|0)-j|0;m=n>>>0>>0?n:m;Ad[c[(c[u>>2]|0)+4>>2]&63](a,b+(l<<2)|0,v,j,m);c[d>>2]=(c[d>>2]|0)+m;j=(c[t>>2]|0)+m|0;c[t>>2]=j;n=c[r>>2]|0;c[r>>2]=n-m;l=c[s>>2]|0;if(!((n|0)==(m|0)&(j|0)<(l|0))){if((j|0)==(l|0))p=15}else{p=c[w>>2]|0;if((p|0)>0){k=0;while(1){n=c[v+(k<<2)>>2]|0;m=c[o>>2]|0;if((j|0)<(l|0)){p=j+-1|0;do{nH(n,p,n,j,1,m);j=j+1|0}while((j|0)!=(l|0));p=c[w>>2]|0}k=k+1|0;if((k|0)>=(p|0))break;j=c[t>>2]|0;l=c[s>>2]|0}l=c[s>>2]|0}c[t>>2]=l;p=15}if((p|0)==15){p=0;Ad[c[(c[q>>2]|0)+4>>2]&63](a,v,0,f,c[g>>2]|0);c[t>>2]=0;c[g>>2]=(c[g>>2]|0)+1}if((c[r>>2]|0)==0?(i=c[g>>2]|0,i>>>0>>0):0){p=19;break}l=c[d>>2]|0;if(l>>>0>=e>>>0){p=28;break}}if((p|0)==19){j=c[w>>2]|0;a:do if((j|0)>0){p=a+268|0;k=0;o=c[a+84>>2]|0;while(1){l=da(c[o+40>>2]|0,c[o+12>>2]|0)|0;l=(l|0)/(c[p>>2]|0)|0;m=c[f+(k<<2)>>2]|0;n=da(c[o+36>>2]|0,c[o+28>>2]|0)|0;i=da(i,l)|0;l=da(l,h)|0;if((i|0)<(l|0)){j=i+-1|0;do{nH(m,j,m,i,1,n);i=i+1|0}while((i|0)!=(l|0));j=c[w>>2]|0}k=k+1|0;if((k|0)>=(j|0))break a;i=c[g>>2]|0;o=o+88|0}}while(0);c[g>>2]=h;return}else if((p|0)==28)return}function kQ(a){a=a|0;return}function lQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;g=c[a+400>>2]|0;j=a+76|0;if((c[j>>2]|0)<=0)return;k=g+52|0;g=g+12|0;h=0;i=c[a+84>>2]|0;while(1){l=(c[e+(h<<2)>>2]|0)+((da(c[k+(h<<2)>>2]|0,f)|0)<<2)|0;Yd[c[g+(h<<2)>>2]&63](a,i,(c[b+(h<<2)>>2]|0)+(d<<2)|0,l);h=h+1|0;if((h|0)>=(c[j>>2]|0))break;else i=i+88|0}return}function mQ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;l=da(c[e+36>>2]|0,c[e+28>>2]|0)|0;w=b+260|0;e=c[w>>2]|0;j=e+2|0;k=c[b+28>>2]|0;i=l-k|0;if((i|0)>0&(j|0)>0){e=k+-1|0;h=0;do{v=c[f+(h+-1<<2)>>2]|0;sfa(v+k|0,a[v+e>>0]|0,i|0)|0;h=h+1|0}while((h|0)!=(j|0));e=c[w>>2]|0}v=c[b+216>>2]|0;u=65536-(v<<9)|0;v=v<<6;if((e|0)<=0)return;s=l+-2|0;if(!s){e=0;do{t=c[g+(e<<2)>>2]|0;r=c[f+(e<<2)>>2]|0;s=c[f+(e+-1<<2)>>2]|0;e=e+1|0;l=c[f+(e<<2)>>2]|0;p=(d[l>>0]|0)+(d[s>>0]|0)|0;o=d[r>>0]|0;q=p+o|0;r=r+1|0;s=(d[l+1>>0]|0)+(d[s+1>>0]|0)+(d[r>>0]|0)|0;a[t>>0]=((da(o,u)|0)+32768+(da(q+p+s|0,v)|0)|0)>>>16;r=d[r>>0]|0;a[t+1>>0]=((da(r,u)|0)+32768+(da(q-r+(s<<1)|0,v)|0)|0)>>>16}while((e|0)<(c[w>>2]|0));return}else t=0;do{r=c[g+(t<<2)>>2]|0;e=c[f+(t<<2)>>2]|0;h=c[f+(t+-1<<2)>>2]|0;t=t+1|0;b=c[f+(t<<2)>>2]|0;n=h+1|0;o=b+1|0;l=(d[b>>0]|0)+(d[h>>0]|0)|0;p=d[e>>0]|0;m=l+p|0;q=e+1|0;j=(d[o>>0]|0)+(d[n>>0]|0)+(d[q>>0]|0)|0;a[r>>0]=((da(p,u)|0)+32768+(da(m+l+j|0,v)|0)|0)>>>16;l=r;p=s;r=r+1|0;while(1){i=e+2|0;e=d[q>>0]|0;k=h+2|0;b=b+2|0;h=(d[b>>0]|0)+(d[k>>0]|0)+(d[i>>0]|0)|0;a[r>>0]=((da(e,u)|0)+32768+(da(m+j-e+h|0,v)|0)|0)>>>16;p=p+-1|0;e=l+2|0;if(!p)break;else{m=j;l=r;z=o;y=n;x=q;n=k;o=b;j=h;q=i;r=e;b=z;h=y;e=x}}z=d[i>>0]|0;a[e>>0]=((da(z,u)|0)+32768+(da(j-z+(h<<1)|0,v)|0)|0)>>>16}while((t|0)<(c[w>>2]|0));return}function nQ(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=b+260|0;h=b+28|0;nH(e,0,f,0,c[g>>2]|0,c[h>>2]|0);g=c[g>>2]|0;h=c[h>>2]|0;e=(da(c[d+36>>2]|0,c[d+28>>2]|0)|0)-h|0;if(!((e|0)>0&(g|0)>0))return;b=h+-1|0;d=0;do{i=c[f+(d<<2)>>2]|0;sfa(i+h|0,a[i+b>>0]|0,e|0)|0;d=d+1|0}while((d|0)!=(g|0));return}function oQ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;k=da(c[e+36>>2]|0,c[e+28>>2]|0)|0;l=b+260|0;h=c[l>>2]|0;i=c[b+28>>2]|0;b=(k<<1)-i|0;if((b|0)>0&(h|0)>0){e=i+-1|0;j=0;do{m=c[f+(j<<2)>>2]|0;sfa(m+i|0,a[m+e>>0]|0,b|0)|0;j=j+1|0}while((j|0)!=(h|0));h=c[l>>2]|0}if((h|0)<=0)return;if(!k){e=0;do e=e+1|0;while((e|0)<(h|0));return}else h=0;do{e=0;i=c[f+(h<<2)>>2]|0;b=0;j=c[g+(h<<2)>>2]|0;while(1){a[j>>0]=((d[i>>0]|0)+e+(d[i+1>>0]|0)|0)>>>1;b=b+1|0;if((b|0)==(k|0))break;else{e=e^1;i=i+2|0;j=j+1|0}}h=h+1|0}while((h|0)<(c[l>>2]|0));return}function pQ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;l=da(c[e+36>>2]|0,c[e+28>>2]|0)|0;C=b+260|0;e=c[C>>2]|0;j=e+2|0;k=c[b+28>>2]|0;i=(l<<1)-k|0;if((i|0)>0&(j|0)>0){e=k+-1|0;h=0;do{B=c[f+(h+-1<<2)>>2]|0;sfa(B+k|0,a[B+e>>0]|0,i|0)|0;h=h+1|0}while((h|0)!=(j|0));e=c[C>>2]|0}B=c[b+216>>2]|0;A=(da(B,-80)|0)+16384|0;B=B<<4;if((e|0)<=0)return;z=l+-2|0;v=l+-1|0;x=0;y=0;while(1){w=c[g+(y<<2)>>2]|0;p=c[f+(x<<2)>>2]|0;o=c[f+((x|1)<<2)>>2]|0;m=c[f+(x+-1<<2)>>2]|0;x=x+2|0;l=c[f+(x<<2)>>2]|0;k=d[p>>0]|0;b=d[o>>0]|0;s=d[m>>0]|0;e=d[l>>0]|0;t=p+2|0;u=o+2|0;q=m+2|0;r=l+2|0;a[w>>0]=((da((d[p+1>>0]|0)+k+b+(d[o+1>>0]|0)|0,A)|0)+32768+(da(e+s+(d[q>>0]|0)+(d[r>>0]|0)+(b+k+s+(d[m+1>>0]|0)+e+(d[l+1>>0]|0)+(d[t>>0]|0)+(d[u>>0]|0)<<1)|0,B)|0)|0)>>>16;e=w;s=z;while(1){n=e+1|0;k=d[p+3>>0]|0;b=d[o+3>>0]|0;i=k+(d[t>>0]|0)+(d[u>>0]|0)+b|0;h=d[m+3>>0]|0;j=d[l+3>>0]|0;e=h+(d[q>>0]|0)+(d[r>>0]|0)+j+(d[p+1>>0]|0)|0;if(!s){n=o;break}D=p+4|0;j=o+4|0;F=m+4|0;E=l+4|0;a[n>>0]=((da(i,A)|0)+32768+(da((d[F>>0]|0)+(d[m+1>>0]|0)+((d[D>>0]|0)+e+(d[o+1>>0]|0)+(d[j>>0]|0)<<1)+(d[l+1>>0]|0)+(d[E>>0]|0)|0,B)|0)|0)>>>16;h=t;i=r;b=q;k=u;e=n;q=F;r=E;s=s+-1|0;t=D;u=j;p=h;l=i;m=b;o=k}a[w+v>>0]=((da(i,A)|0)+32768+(da(j+h+(d[m+1>>0]|0)+(d[l+1>>0]|0)+(b+k+e+(d[n+1>>0]|0)<<1)|0,B)|0)|0)>>>16;if((x|0)>=(c[C>>2]|0))break;else y=y+1|0}return}function qQ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=da(c[e+36>>2]|0,c[e+28>>2]|0)|0;n=b+260|0;h=c[n>>2]|0;i=c[b+28>>2]|0;b=(m<<1)-i|0;if((b|0)>0&(h|0)>0){e=i+-1|0;j=0;do{l=c[f+(j<<2)>>2]|0;sfa(l+i|0,a[l+e>>0]|0,b|0)|0;j=j+1|0}while((j|0)!=(h|0));h=c[n>>2]|0}if((h|0)<=0)return;if(!m){e=0;do e=e+2|0;while((e|0)<(h|0));return}else{b=0;l=0}while(1){e=1;i=c[f+(b<<2)>>2]|0;h=c[f+((b|1)<<2)>>2]|0;j=0;k=c[g+(l<<2)>>2]|0;while(1){a[k>>0]=((d[i>>0]|0)+e+(d[i+1>>0]|0)+(d[h>>0]|0)+(d[h+1>>0]|0)|0)>>>2;j=j+1|0;if((j|0)==(m|0))break;else{e=e^3;i=i+2|0;h=h+2|0;k=k+1|0}}b=b+2|0;if((b|0)>=(c[n>>2]|0))break;else l=l+1|0}return}function rQ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;s=c[b+400>>2]|0;w=da(c[e+36>>2]|0,c[e+28>>2]|0)|0;k=c[e+4>>2]|0;l=a[s+92+k>>0]|0;r=l&255;k=a[s+k+102>>0]|0;s=k&255;t=da(s,r)|0;u=t>>>1;v=b+260|0;e=c[v>>2]|0;h=c[b+28>>2]|0;i=(da(r,w)|0)-h|0;if((i|0)>0&(e|0)>0){b=h+-1|0;j=0;do{q=c[f+(j<<2)>>2]|0;sfa(q+h|0,a[q+b>>0]|0,i|0)|0;j=j+1|0}while((j|0)!=(e|0));e=c[v>>2]|0}if((e|0)<=0)return;q=(w|0)==0;p=k<<24>>24==0;o=l<<24>>24==0;m=0;n=0;while(1){if(!q){k=0;j=0;l=c[g+(n<<2)>>2]|0;while(1){if(p)e=0;else{e=0;h=0;do{if(!o){i=0;b=(c[f+(h+m<<2)>>2]|0)+j|0;while(1){e=(d[b>>0]|0)+e|0;i=i+1|0;if((i|0)>=(r|0))break;else b=b+1|0}}h=h+1|0}while((h|0)<(s|0))}a[l>>0]=(e+u|0)/(t|0)|0;k=k+1|0;if((k|0)==(w|0))break;else{j=j+r|0;l=l+1|0}}e=c[v>>2]|0}m=m+s|0;if((m|0)>=(e|0))break;else n=n+1|0}return}function sQ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=c[b+432>>2]|0;r=b+201|0;s=b+376|0;g=c[s>>2]|0;e=(g|0)==0;do if(a[r>>0]|0){m=b+380|0;d=c[m>>2]|0;if(e)if(!d)p=7;else p=11;else if(((d|0)>=(g|0)?(d|0)<=(c[b+400>>2]|0):0)?(c[b+304>>2]|0)==1:0)p=7;else p=11;do if((p|0)==7){d=c[b+384>>2]|0;if(d){d=d+-1|0;if((d|0)!=(c[b+388>>2]|0)){p=11;break}}else d=c[b+388>>2]|0;if((d|0)>13)p=11}while(0);if((p|0)==11){o=c[b>>2]|0;c[o+20>>2]=17;c[o+24>>2]=g;c[o+28>>2]=c[m>>2];c[o+32>>2]=c[b+384>>2];c[o+36>>2]=c[b+388>>2];Bd[c[o>>2]&511](b)}l=b+304|0;d=c[l>>2]|0;if((d|0)>0){i=b+140|0;g=b+384|0;j=b+388|0;k=0;do{f=c[(c[b+(k<<2)+308>>2]|0)+4>>2]|0;h=c[i>>2]|0;d=c[s>>2]|0;if(d){if((c[h+(f<<8)>>2]|0)<0){d=c[b>>2]|0;c[d+20>>2]=118;c[d+24>>2]=f;c[d+28>>2]=0;Cd[c[d+4>>2]&255](b,-1);d=c[s>>2]|0}}else d=0;if((d|0)<=(c[m>>2]|0))while(1){e=h+(f<<8)+(d<<2)|0;o=c[e>>2]|0;if((c[g>>2]|0)!=(((o|0)<0?0:o)|0)){o=c[b>>2]|0;c[o+20>>2]=118;c[o+24>>2]=f;c[o+28>>2]=d;Cd[c[o+4>>2]&255](b,-1)}c[e>>2]=c[j>>2];if((d|0)<(c[m>>2]|0))d=d+1|0;else break}k=k+1|0;d=c[l>>2]|0}while((k|0)<(d|0))}else g=b+384|0;e=(c[s>>2]|0)==0;f=q+4|0;if(!(c[g>>2]|0))if(e){c[f>>2]=270;break}else{c[f>>2]=271;break}else if(e){c[f>>2]=272;break}else{c[f>>2]=273;break}}else{if((e?(c[b+384>>2]|0)==0:0)?(c[b+388>>2]|0)==0:0){o=c[b+380>>2]|0;if((o|0)<64?(o|0)!=(c[b+400>>2]|0):0)p=35}else p=35;if((p|0)==35){o=c[b>>2]|0;c[o+20>>2]=125;Cd[c[o+4>>2]&255](b,-1)}c[q+4>>2]=274;d=c[b+304>>2]|0}while(0);o=b+304|0;if((d|0)<=0){s=q+12|0;c[s>>2]=0;s=q+16|0;c[s>>2]=0;s=q+20|0;c[s>>2]=-16;s=b+252|0;s=c[s>>2]|0;b=q+56|0;c[b>>2]=s;return}e=q+60|0;f=b+4|0;l=q+24|0;i=q+40|0;h=b+400|0;j=q+124|0;m=b+384|0;n=0;do{k=c[b+(n<<2)+308>>2]|0;d=a[r>>0]|0;if(d<<24>>24){if((c[s>>2]|0)==0?(c[m>>2]|0)==0:0)p=42}else p=42;if((p|0)==42){p=0;d=c[k+20>>2]|0;if(d>>>0>15){g=c[b>>2]|0;c[g+20>>2]=50;c[g+24>>2]=d;Bd[c[g>>2]&511](b)}g=e+(d<<2)|0;d=c[g>>2]|0;if(!d){d=Hd[c[c[f>>2]>>2]&255](b,1,64)|0;c[g>>2]=d}d=d+0|0;g=d+64|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(g|0));c[l+(n<<2)>>2]=0;c[i+(n<<2)>>2]=0;d=a[r>>0]|0}if(!(d<<24>>24)){if(c[h>>2]|0)p=50}else if(c[s>>2]|0)p=50;if((p|0)==50){p=0;d=c[k+24>>2]|0;if(d>>>0>15){g=c[b>>2]|0;c[g+20>>2]=50;c[g+24>>2]=d;Bd[c[g>>2]&511](b)}g=j+(d<<2)|0;d=c[g>>2]|0;if(!d){d=Hd[c[c[f>>2]>>2]&255](b,1,256)|0;c[g>>2]=d}sfa(d|0,0,256)|0}n=n+1|0}while((n|0)<(c[o>>2]|0));s=q+12|0;c[s>>2]=0;s=q+16|0;c[s>>2]=0;s=q+20|0;c[s>>2]=-16;s=b+252|0;s=c[s>>2]|0;b=q+56|0;c[b>>2]=s;return}function tQ(a){a=a|0;return}function uQ(a){a=a|0;var b=0,d=0;c[a+128>>2]=0;d=c[a+416>>2]|0;do if((c[a+304>>2]|0)<=1){b=c[a+308>>2]|0;if((c[a+296>>2]|0)==1){c[d+28>>2]=c[b+76>>2];break}else{c[d+28>>2]=c[b+12>>2];break}}else c[d+28>>2]=1;while(0);c[d+20>>2]=0;c[d+24>>2]=0;return}function vQ(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=c[d+416>>2]|0;if(!(c[l+16>>2]|0)){k=d+136|0;c[k>>2]=0;return}a:do if(((a[d+73>>0]|0)!=0?(a[d+201>>0]|0)!=0:0)?(k=d+140|0,(c[k>>2]|0)!=0):0){e=l+112|0;f=c[e>>2]|0;if(!f){j=d+36|0;f=Hd[c[c[d+4>>2]>>2]&255](d,1,(c[j>>2]|0)*24|0)|0;c[e>>2]=f}else j=d+36|0;if((c[j>>2]|0)>0){i=0;h=c[d+196>>2]|0;e=0;while(1){g=c[h+80>>2]|0;if(!g)break a;if(!(b[g>>1]|0))break a;if(!(b[g+2>>1]|0))break a;if(!(b[g+16>>1]|0))break a;if(!(b[g+32>>1]|0))break a;if(!(b[g+18>>1]|0))break a;if(!(b[g+4>>1]|0))break a;g=c[k>>2]|0;if((c[g+(i<<8)>>2]|0)<0)break a;m=g+(i<<8)+4|0;c[f+4>>2]=c[m>>2];e=(c[m>>2]|0)==0?e:1;m=g+(i<<8)+8|0;c[f+8>>2]=c[m>>2];e=(c[m>>2]|0)==0?e:1;m=g+(i<<8)+12|0;c[f+12>>2]=c[m>>2];e=(c[m>>2]|0)==0?e:1;m=g+(i<<8)+16|0;c[f+16>>2]=c[m>>2];e=(c[m>>2]|0)==0?e:1;g=g+(i<<8)+20|0;c[f+20>>2]=c[g>>2];e=(c[g>>2]|0)==0?e:1;i=i+1|0;if((i|0)>=(c[j>>2]|0))break;else{f=f+24|0;h=h+88|0}}if(e<<24>>24){c[l+12>>2]=275;m=d+136|0;c[m>>2]=0;return}}}while(0);c[l+12>>2]=226;m=d+136|0;c[m>>2]=0;return}function wQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+16|0;x=A;y=a+416|0;g=c[y>>2]|0;z=a+304|0;if((c[z>>2]|0)>0){b=a+4|0;f=g+72|0;d=a+128|0;e=0;do{u=c[a+(e<<2)+308>>2]|0;w=c[u+12>>2]|0;v=da(w,c[d>>2]|0)|0;c[x+(e<<2)>>2]=Qd[c[(c[b>>2]|0)+32>>2]&127](a,c[f+(c[u+4>>2]<<2)>>2]|0,v,w,1)|0;e=e+1|0}while((e|0)<(c[z>>2]|0))}v=g+24|0;b=c[v>>2]|0;s=g+28|0;f=c[s>>2]|0;a:do if((b|0)<(f|0)){w=g+20|0;t=a+324|0;u=a+432|0;r=g+32|0;e=f;d=c[w>>2]|0;f=c[t>>2]|0;b:while(1){if(d>>>0>>0){do{p=c[z>>2]|0;if((p|0)>0){f=0;q=0;do{o=c[a+(q<<2)+308>>2]|0;l=c[o+56>>2]|0;m=da(l,d)|0;o=c[o+60>>2]|0;c:do if((o|0)>0){n=c[x+(q<<2)>>2]|0;if((l|0)>0)k=0;else{e=0;while(1){e=e+1|0;if((e|0)>=(o|0))break c}}do{h=(l|0)>1?l:1;e=f;g=(c[n+(k+b<<2)>>2]|0)+(m<<7)|0;j=0;while(1){c[r+(e<<2)>>2]=g;j=j+1|0;if((j|0)>=(l|0))break;else{e=e+1|0;g=g+128|0}}f=f+h|0;k=k+1|0}while((k|0)<(o|0))}while(0);q=q+1|0}while((q|0)<(p|0))}if(!((Pd[c[(c[u>>2]|0)+4>>2]&511](a,r)|0)<<24>>24))break b;d=d+1|0;f=c[t>>2]|0}while(d>>>0>>0);d=c[s>>2]|0}else d=e;c[w>>2]=0;b=b+1|0;if((b|0)>=(d|0))break a;else{e=d;d=0}}c[v>>2]=b;c[w>>2]=d;a=0;i=A;return a|0}while(0);f=a+128|0;e=(c[f>>2]|0)+1|0;c[f>>2]=e;f=c[a+296>>2]|0;if(e>>>0>=f>>>0){Bd[c[(c[a+424>>2]|0)+12>>2]&511](a);a=4;i=A;return a|0}d=c[y>>2]|0;do if((c[z>>2]|0)<=1){b=c[a+308>>2]|0;if(e>>>0<(f+-1|0)>>>0){c[d+28>>2]=c[b+12>>2];break}else{c[d+28>>2]=c[b+76>>2];break}}else c[d+28>>2]=1;while(0);c[d+20>>2]=0;c[d+24>>2]=0;a=3;i=A;return a|0}function xQ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;l=c[b+416>>2]|0;w=b+296|0;x=(c[w>>2]|0)+-1|0;g=b+124|0;h=b+132|0;i=b+424|0;j=b+128|0;y=b+136|0;while(1){e=c[g>>2]|0;f=c[h>>2]|0;if((e|0)>=(f|0)){if((e|0)!=(f|0))break;if((c[j>>2]|0)>>>0>(c[y>>2]|0)>>>0)break}if(!(Ed[c[c[i>>2]>>2]&511](b)|0)){e=0;k=21;break}}if((k|0)==21)return e|0;u=b+36|0;e=c[u>>2]|0;if((e|0)>0){v=b+4|0;s=l+72|0;t=b+436|0;q=0;r=c[b+196>>2]|0;while(1){if(a[r+52>>0]|0){e=r+12|0;p=c[e>>2]|0;o=da(p,c[y>>2]|0)|0;p=Qd[c[(c[v>>2]|0)+32>>2]&127](b,c[s+(q<<2)>>2]|0,o,p,0)|0;if((c[y>>2]|0)>>>0>>0)n=c[e>>2]|0;else{o=c[e>>2]|0;n=((c[r+32>>2]|0)>>>0)%(o>>>0)|0;n=(n|0)==0?o:n}g=c[(c[t>>2]|0)+(q<<2)+4>>2]|0;if((n|0)>0){j=r+28|0;i=r+40|0;k=r+36|0;e=c[j>>2]|0;m=0;o=c[d+(q<<2)>>2]|0;while(1){if(!e)e=0;else{l=0;h=c[p+(m<<2)>>2]|0;f=0;while(1){Ad[g&63](b,r,h,o,f);l=l+1|0;e=c[j>>2]|0;if(l>>>0>=e>>>0)break;else{h=h+128|0;f=(c[k>>2]|0)+f|0}}}m=m+1|0;if((m|0)==(n|0))break;else o=o+(c[i>>2]<<2)|0}}e=c[u>>2]|0}q=q+1|0;if((q|0)>=(e|0))break;else r=r+88|0}}d=(c[y>>2]|0)+1|0;c[y>>2]=d;d=d>>>0<(c[w>>2]|0)>>>0?3:4;return d|0}function yQ(a){a=a|0;return 0}function zQ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=b+416|0;f=c[L>>2]|0;F=(c[b+324>>2]|0)+-1|0;I=b+296|0;h=c[I>>2]|0;G=h+-1|0;J=f+24|0;e=c[J>>2]|0;E=f+28|0;g=c[E>>2]|0;do if((e|0)<(g|0)){H=f+20|0;C=b+400|0;D=b+432|0;x=f+32|0;y=b+304|0;z=b+436|0;A=b+128|0;B=b+332|0;h=g;f=c[H>>2]|0;a:while(1){if(f>>>0<=F>>>0){do{if(c[C>>2]|0)sfa(c[x>>2]|0,0,c[B>>2]<<7|0)|0;if(!((Pd[c[(c[D>>2]|0)+4>>2]&511](b,x)|0)<<24>>24))break a;h=c[y>>2]|0;if((h|0)>0){w=f>>>0>>0;g=0;v=0;do{t=c[b+(v<<2)+308>>2]|0;if(!(a[t+52>>0]|0))g=(c[t+64>>2]|0)+g|0;else{h=c[t+4>>2]|0;o=c[(c[z>>2]|0)+(h<<2)+4>>2]|0;u=t+56|0;p=c[(w?u:t+72|0)>>2]|0;q=t+40|0;i=c[q>>2]|0;r=da(c[t+68>>2]|0,f)|0;s=t+60|0;k=c[s>>2]|0;b:do if((k|0)>0){j=(c[d+(h<<2)>>2]|0)+((da(i,e)|0)<<2)|0;m=t+76|0;n=t+36|0;if((p|0)>0){h=k;l=0}else{h=0;while(1){g=(c[u>>2]|0)+g|0;h=h+1|0;if((h|0)>=(k|0))break b}}while(1){if((c[A>>2]|0)>>>0>=G>>>0?(l+e|0)>=(c[m>>2]|0):0)k=i;else{h=r;i=0;K=18}if((K|0)==18){while(1){K=0;Ad[o&63](b,t,c[x+(i+g<<2)>>2]|0,j,h);i=i+1|0;if((i|0)==(p|0))break;else{h=(c[n>>2]|0)+h|0;K=18}}k=c[q>>2]|0;h=c[s>>2]|0}g=(c[u>>2]|0)+g|0;l=l+1|0;if((l|0)>=(h|0))break;else{i=k;j=j+(k<<2)|0}}}while(0);h=c[y>>2]|0}v=v+1|0}while((v|0)<(h|0))}f=f+1|0}while(f>>>0<=F>>>0);h=c[E>>2]|0}c[H>>2]=0;e=e+1|0;if((e|0)>=(h|0)){K=26;break}else f=0}if((K|0)==26){e=A;h=c[I>>2]|0;break}c[J>>2]=e;c[H>>2]=f;b=0;return b|0}else e=b+128|0;while(0);g=b+136|0;c[g>>2]=(c[g>>2]|0)+1;g=(c[e>>2]|0)+1|0;c[e>>2]=g;if(g>>>0>=h>>>0){Bd[c[(c[b+424>>2]|0)+12>>2]&511](b);b=4;return b|0}f=c[L>>2]|0;do if((c[b+304>>2]|0)<=1){e=c[b+308>>2]|0;if(g>>>0<(h+-1|0)>>>0){c[f+28>>2]=c[e+12>>2];break}else{c[f+28>>2]=c[e+76>>2];break}}else c[f+28>>2]=1;while(0);c[f+20>>2]=0;c[f+24>>2]=0;b=3;return b|0}function AQ(a){a=a|0;return}function BQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;nH(c[b>>2]|0,d,e,0,f,c[a+92>>2]|0);return}function CQ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=c[(c[b+444>>2]|0)+28>>2]|0;o=c[b+92>>2]|0;b=h+-1|0;if((h|0)<=0)return;m=e+4|0;n=e+8|0;if(!o){while(1)if((b|0)>0)b=b+-1|0;else break;return}while(1){h=c[(c[e>>2]|0)+(f<<2)>>2]|0;i=c[(c[m>>2]|0)+(f<<2)>>2]|0;j=c[(c[n>>2]|0)+(f<<2)>>2]|0;f=f+1|0;k=c[g>>2]|0;g=g+4|0;l=0;do{a[k+l>>0]=((c[p+((d[i+l>>0]|0|256)<<2)>>2]|0)+(c[p+((d[h+l>>0]|0)<<2)>>2]|0)+(c[p+((d[j+l>>0]|0|512)<<2)>>2]|0)|0)>>>16;l=l+1|0}while((l|0)!=(o|0));if((b|0)<=0)break;else b=b+-1|0}return}function DQ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=c[(c[b+444>>2]|0)+28>>2]|0;o=c[b+92>>2]|0;b=h+-1|0;if((h|0)<=0)return;m=e+4|0;n=e+8|0;if(!o){while(1)if((b|0)>0)b=b+-1|0;else break;return}while(1){h=c[(c[e>>2]|0)+(f<<2)>>2]|0;i=c[(c[m>>2]|0)+(f<<2)>>2]|0;j=c[(c[n>>2]|0)+(f<<2)>>2]|0;f=f+1|0;k=c[g>>2]|0;g=g+4|0;l=0;do{q=d[i+l>>0]|0;a[k+l>>0]=((c[p+((q|256)<<2)>>2]|0)+(c[p+(((d[h+l>>0]|0)+128+q&255)<<2)>>2]|0)+(c[p+((q+128+(d[j+l>>0]|0)&255|512)<<2)>>2]|0)|0)>>>16;l=l+1|0}while((l|0)!=(o|0));if((b|0)<=0)break;else b=b+-1|0}return}function EQ(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=c[b+92>>2]|0;b=g+-1|0;if((g|0)<=0)return;if(!j){while(1)if((b|0)>0)b=b+-1|0;else break;return}else i=e;while(1){g=c[(c[d>>2]|0)+(i<<2)>>2]|0;i=i+1|0;e=0;h=c[f>>2]|0;f=f+4|0;while(1){k=a[g+e>>0]|0;a[h+2>>0]=k;a[h+1>>0]=k;a[h>>0]=k;e=e+1|0;if((e|0)==(j|0))break;else h=h+3|0}if((b|0)<=0)break;else b=b+-1|0}return}function FQ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;p=c[b+444>>2]|0;q=c[b+92>>2]|0;r=c[p+24>>2]|0;s=c[p+8>>2]|0;t=c[p+12>>2]|0;o=c[p+16>>2]|0;p=c[p+20>>2]|0;b=h+-1|0;if((h|0)<=0)return;m=e+4|0;n=e+8|0;if(!q){while(1)if((b|0)>0)b=b+-1|0;else break;return}while(1){h=c[(c[e>>2]|0)+(f<<2)>>2]|0;i=c[(c[m>>2]|0)+(f<<2)>>2]|0;j=c[(c[n>>2]|0)+(f<<2)>>2]|0;f=f+1|0;k=0;l=c[g>>2]|0;g=g+4|0;while(1){u=d[h+k>>0]|0;v=d[i+k>>0]|0;w=d[j+k>>0]|0;a[l>>0]=a[r+((c[s+(w<<2)>>2]|0)+u)>>0]|0;a[l+1>>0]=a[r+(((c[o+(w<<2)>>2]|0)+(c[p+(v<<2)>>2]|0)>>16)+u)>>0]|0;a[l+2>>0]=a[r+((c[t+(v<<2)>>2]|0)+u)>>0]|0;k=k+1|0;if((k|0)==(q|0))break;else l=l+3|0}if((b|0)<=0)break;else b=b+-1|0}return}function GQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=c[a+444>>2]|0;h=a+4|0;d=e+8|0;c[d>>2]=Hd[c[c[h>>2]>>2]&255](a,1,1024)|0;f=e+12|0;c[f>>2]=Hd[c[c[h>>2]>>2]&255](a,1,1024)|0;b=e+16|0;c[b>>2]=Hd[c[c[h>>2]>>2]&255](a,1,1024)|0;g=e+20|0;c[g>>2]=Hd[c[c[h>>2]>>2]&255](a,1,1024)|0;c[e+24>>2]=c[a+300>>2];a=c[d>>2]|0;b=c[b>>2]|0;d=0;e=-128;while(1){c[a+(d<<2)>>2]=(e*91881|0)+32768>>16;c[(c[f>>2]|0)+(d<<2)>>2]=(e*116130|0)+32768>>16;c[b+(d<<2)>>2]=da(e,-46802)|0;h=(da(e,-22553)|0)+32768|0;c[(c[g>>2]|0)+(d<<2)>>2]=h;d=d+1|0;if((d|0)==256)break;else e=e+1|0}return}function HQ(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=c[b+92>>2]|0;if((g|0)<=0)return;m=d+4|0;n=d+8|0;o=(l|0)==0;do{g=g+-1|0;b=c[(c[d>>2]|0)+(e<<2)>>2]|0;h=c[(c[m>>2]|0)+(e<<2)>>2]|0;i=c[(c[n>>2]|0)+(e<<2)>>2]|0;e=e+1|0;if(!o){j=0;k=c[f>>2]|0;while(1){a[k>>0]=a[b+j>>0]|0;a[k+1>>0]=a[h+j>>0]|0;a[k+2>>0]=a[i+j>>0]|0;j=j+1|0;if((j|0)==(l|0))break;else k=k+3|0}}f=f+4|0}while((g|0)>0);return}function IQ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;m=c[b+92>>2]|0;if((h|0)<=0)return;n=e+4|0;o=e+8|0;p=(m|0)==0;do{h=h+-1|0;b=c[(c[e>>2]|0)+(f<<2)>>2]|0;i=c[(c[n>>2]|0)+(f<<2)>>2]|0;j=c[(c[o>>2]|0)+(f<<2)>>2]|0;f=f+1|0;if(!p){k=0;l=c[g>>2]|0;while(1){s=a[i+k>>0]|0;r=s&255;q=d[j+k>>0]|0;a[l>>0]=(d[b+k>>0]|0)+128+r;a[l+1>>0]=s;a[l+2>>0]=r+128+q;k=k+1|0;if((k|0)==(m|0))break;else l=l+3|0}}g=g+4|0}while((h|0)>0);return}function JQ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;o=c[b+444>>2]|0;w=c[b+92>>2]|0;t=c[b+300>>2]|0;u=c[o+8>>2]|0;v=c[o+12>>2]|0;n=c[o+16>>2]|0;o=c[o+20>>2]|0;if((h|0)<=0)return;p=e+4|0;q=e+8|0;r=e+12|0;s=(w|0)==0;do{h=h+-1|0;b=c[(c[e>>2]|0)+(f<<2)>>2]|0;i=c[(c[p>>2]|0)+(f<<2)>>2]|0;j=c[(c[q>>2]|0)+(f<<2)>>2]|0;k=c[(c[r>>2]|0)+(f<<2)>>2]|0;f=f+1|0;if(!s){l=0;m=c[g>>2]|0;while(1){x=d[i+l>>0]|0;z=d[j+l>>0]|0;y=(d[b+l>>0]|0)^255;a[m>>0]=a[t+(y-(c[u+(z<<2)>>2]|0))>>0]|0;a[m+1>>0]=a[t+(y-((c[n+(z<<2)>>2]|0)+(c[o+(x<<2)>>2]|0)>>16))>>0]|0;a[m+2>>0]=a[t+(y-(c[v+(x<<2)>>2]|0))>>0]|0;a[m+3>>0]=a[k+l>>0]|0;l=l+1|0;if((l|0)==(w|0))break;else m=m+4|0}}g=g+4|0}while((h|0)>0);return}function KQ(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=c[b+36>>2]|0;k=c[b+92>>2]|0;if((g|0)<=0)return;l=(n|0)>0;m=(k|0)==0;while(1){g=g+-1|0;if(l){b=0;do{if(!m){h=0;i=c[(c[d+(b<<2)>>2]|0)+(e<<2)>>2]|0;j=(c[f>>2]|0)+b|0;while(1){a[j>>0]=a[i>>0]|0;h=h+1|0;if((h|0)==(k|0))break;else{i=i+1|0;j=j+n|0}}}b=b+1|0}while((b|0)!=(n|0))}if((g|0)<=0)break;else{e=e+1|0;f=f+4|0}}return}function LQ(d){d=d|0;var f=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0;m=c[d+436>>2]|0;n=d+36|0;if((c[n>>2]|0)<=0)return;q=m+44|0;r=d+68|0;s=0;t=c[d+196>>2]|0;k=0;j=0;while(1){f=c[t+36>>2]|0;i=t+40|0;a:do switch((f<<8)+(c[i>>2]|0)|0){case 1285:{f=0;l=29;break}case 1539:{f=0;l=45;break}case 2827:{f=0;l=34;break}case 513:{f=0;l=47;break}case 258:{f=0;l=55;break}case 2570:{f=0;l=33;break}case 3084:{f=0;l=35;break}case 514:{f=0;l=26;break}case 2064:{f=0;l=48;break}case 774:{f=0;l=53;break}case 1032:{f=0;l=52;break}case 1806:{f=0;l=49;break}case 2313:{f=0;l=32;break}case 3341:{f=0;l=36;break}case 3078:{f=0;l=42;break}case 516:{f=0;l=54;break}case 771:{f=0;l=27;break}case 2052:{f=0;l=44;break}case 3855:{f=0;l=38;break}case 3598:{f=0;l=37;break}case 2565:{f=0;l=43;break}case 4104:{f=0;l=40;break}case 1542:{f=0;l=30;break}case 257:{f=0;l=25;break}case 1026:{f=0;l=46;break}case 4112:{f=0;l=39;break}case 2056:{f=c[r>>2]|0;if((f|0)==1){l=57;break a}else if((f|0)==2){l=58;break a}else if(!f){f=0;l=56;break a}else{f=c[d>>2]|0;c[f+20>>2]=49;Bd[c[f>>2]&511](d);f=k;l=j;break a}}case 1799:{f=0;l=31;break}case 1290:{f=0;l=51;break}case 1548:{f=0;l=50;break}case 3591:{f=0;l=41;break}case 1028:{f=0;l=28;break}default:{l=c[d>>2]|0;c[l+20>>2]=7;c[l+24>>2]=f;c[l+28>>2]=c[i>>2];Bd[c[l>>2]&511](d);f=k;l=j}}while(0);c[m+(s<<2)+4>>2]=l;do if(((a[t+52>>0]|0)!=0?(o=q+(s<<2)|0,(c[o>>2]|0)!=(f|0)):0)?(p=c[t+80>>2]|0,(p|0)!=0):0){c[o>>2]=f;if((f|0)==1){i=c[t+84>>2]|0;j=0;do{c[i+(j<<2)>>2]=(da(b[269648+(j<<1)>>1]|0,e[p+(j<<1)>>1]|0)|0)+2048>>12;j=j+1|0}while((j|0)!=64)}else if(!f){i=c[t+84>>2]|0;j=0;do{c[i+(j<<2)>>2]=e[p+(j<<1)>>1];j=j+1|0}while((j|0)!=64)}else if((f|0)==2){i=c[t+84>>2]|0;j=0;k=0;while(1){v=+h[269776+(k<<3)>>3];g[i+(j<<2)>>2]=+(e[p+(j<<1)>>1]|0)*v*.125;u=j|1;g[i+(u<<2)>>2]=+(e[p+(u<<1)>>1]|0)*v*1.387039845*.125;u=u+1|0;g[i+(u<<2)>>2]=+(e[p+(u<<1)>>1]|0)*v*1.306562965*.125;u=j|3;g[i+(u<<2)>>2]=+(e[p+(u<<1)>>1]|0)*v*1.175875602*.125;w=u+1|0;g[i+(w<<2)>>2]=+(e[p+(w<<1)>>1]|0)*v*.125;w=u+2|0;g[i+(w<<2)>>2]=+(e[p+(w<<1)>>1]|0)*v*.785694958*.125;u=u+3|0;g[i+(u<<2)>>2]=+(e[p+(u<<1)>>1]|0)*v*.5411961*.125;u=j|7;g[i+(u<<2)>>2]=+(e[p+(u<<1)>>1]|0)*v*.275899379*.125;k=k+1|0;if((k|0)==8)break;else j=j+8|0}}else{w=c[d>>2]|0;c[w+20>>2]=49;Bd[c[w>>2]&511](d);break}}while(0);s=s+1|0;if((s|0)>=(c[n>>2]|0))break;else{t=t+88|0;k=f;j=l}}return}function MQ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=c[b+432>>2]|0;n=b+376|0;f=c[n>>2]|0;e=(f|0)==0;if(!(a[b+201>>0]|0)){if((e?(c[b+384>>2]|0)==0:0)?(c[b+388>>2]|0)==0:0){n=c[b+380>>2]|0;if((a[b+200>>0]|0)!=0|(n|0)<64?(n|0)!=(c[b+400>>2]|0):0)g=45}else g=45;if((g|0)==45){n=c[b>>2]|0;c[n+20>>2]=125;Cd[c[n+4>>2]&255](b,-1)}m=b+400|0;c[o+4>>2]=(c[m>>2]|0)==63?281:280;d=b+304|0;if((c[d>>2]|0)>0){e=o+68|0;f=o+24|0;g=o+84|0;i=0;do{h=c[b+(i<<2)+308>>2]|0;n=c[h+20>>2]|0;L$(b,1,n,e+(n<<2)|0);if(c[m>>2]|0){n=c[h+24>>2]|0;L$(b,0,n,g+(n<<2)|0)}c[f+(i<<2)>>2]=0;i=i+1|0}while((i|0)<(c[d>>2]|0))}g=b+332|0;if((c[g>>2]|0)<=0){n=o+16|0;c[n>>2]=0;n=o+12|0;c[n>>2]=0;n=o+40|0;a[n>>0]=0;n=b+252|0;n=c[n>>2]|0;b=o+44|0;o=n;c[b>>2]=o;return}e=o+68|0;f=o+100|0;i=o+84|0;h=o+140|0;j=o+180|0;l=0;do{d=c[b+(c[b+(l<<2)+336>>2]<<2)+308>>2]|0;c[f+(l<<2)>>2]=c[e+(c[d+20>>2]<<2)>>2];c[h+(l<<2)>>2]=c[i+(c[d+24>>2]<<2)>>2];a:do if(!(a[d+52>>0]|0))c[j+(l<<2)>>2]=0;else{k=c[d+40>>2]|0;d=c[d+36>>2]|0;switch(c[m>>2]|0){case 0:{c[j+(l<<2)>>2]=1;break a}case 3:{k=k+-1|0;n=d+-1|0;c[j+(l<<2)>>2]=(c[269840+((k>>>0>1?1:k)<<3)+((n>>>0>1?1:n)<<2)>>2]|0)+1;break a}case 8:{k=k+-1|0;n=d+-1|0;c[j+(l<<2)>>2]=(c[269856+((k>>>0>2?2:k)*12|0)+((n>>>0>2?2:n)<<2)>>2]|0)+1;break a}case 15:{k=k+-1|0;n=d+-1|0;c[j+(l<<2)>>2]=(c[269896+((k>>>0>3?3:k)<<4)+((n>>>0>3?3:n)<<2)>>2]|0)+1;break a}case 35:{k=k+-1|0;n=d+-1|0;c[j+(l<<2)>>2]=(c[270064+((k>>>0>5?5:k)*24|0)+((n>>>0>5?5:n)<<2)>>2]|0)+1;break a}case 24:{k=k+-1|0;n=d+-1|0;c[j+(l<<2)>>2]=(c[269960+((k>>>0>4?4:k)*20|0)+((n>>>0>4?4:n)<<2)>>2]|0)+1;break a}case 48:{k=k+-1|0;n=d+-1|0;c[j+(l<<2)>>2]=(c[270208+((k>>>0>6?6:k)*28|0)+((n>>>0>6?6:n)<<2)>>2]|0)+1;break a}default:{k=k+-1|0;n=d+-1|0;c[j+(l<<2)>>2]=(c[270408+((k>>>0>7?7:k)<<5)+((n>>>0>7?7:n)<<2)>>2]|0)+1;break a}}}while(0);l=l+1|0}while((l|0)<(c[g>>2]|0));n=o+16|0;c[n>>2]=0;n=o+12|0;c[n>>2]=0;n=o+40|0;a[n>>0]=0;n=b+252|0;n=c[n>>2]|0;b=o+44|0;o=n;c[b>>2]=o;return}j=b+380|0;d=c[j>>2]|0;if(e)if(!d)g=7;else g=11;else if(((d|0)>=(f|0)?(d|0)<=(c[b+400>>2]|0):0)?(c[b+304>>2]|0)==1:0)g=7;else g=11;do if((g|0)==7){d=c[b+384>>2]|0;if(d){d=d+-1|0;if((d|0)!=(c[b+388>>2]|0)){g=11;break}}else d=c[b+388>>2]|0;if((d|0)>13)g=11}while(0);if((g|0)==11){m=c[b>>2]|0;c[m+20>>2]=17;c[m+24>>2]=f;c[m+28>>2]=c[j>>2];c[m+32>>2]=c[b+384>>2];c[m+36>>2]=c[b+388>>2];Bd[c[m>>2]&511](b)}m=b+304|0;d=c[m>>2]|0;if((d|0)>0){f=b+140|0;l=b+384|0;i=b+388|0;h=0;do{g=c[(c[b+(h<<2)+308>>2]|0)+4>>2]|0;e=c[f>>2]|0;d=c[n>>2]|0;if(d){if((c[e+(g<<8)>>2]|0)<0){d=c[b>>2]|0;c[d+20>>2]=118;c[d+24>>2]=g;c[d+28>>2]=0;Cd[c[d+4>>2]&255](b,-1);d=c[n>>2]|0}}else d=0;if((d|0)<=(c[j>>2]|0))while(1){k=e+(g<<8)+(d<<2)|0;p=c[k>>2]|0;if((c[l>>2]|0)!=(((p|0)<0?0:p)|0)){p=c[b>>2]|0;c[p+20>>2]=118;c[p+24>>2]=g;c[p+28>>2]=d;Cd[c[p+4>>2]&255](b,-1)}c[k>>2]=c[i>>2];if((d|0)<(c[j>>2]|0))d=d+1|0;else break}h=h+1|0;d=c[m>>2]|0}while((h|0)<(d|0));h=l}else h=b+384|0;k=c[n>>2]|0;g=(k|0)==0;e=o+4|0;do if(!(c[h>>2]|0))if(g){c[e>>2]=276;break}else{c[e>>2]=277;break}else if(g){c[e>>2]=278;break}else{c[e>>2]=279;break}while(0);b:do if((d|0)>0){f=o+48|0;d=o+20|0;l=d+4|0;i=o+64|0;g=0;while(1){e=c[b+(g<<2)+308>>2]|0;if(!k){if(!(c[h>>2]|0)){p=c[e+20>>2]|0;L$(b,1,p,f+(p<<2)|0)}}else{j=c[e+24>>2]|0;p=f+(j<<2)|0;L$(b,0,j,p);c[i>>2]=c[p>>2]}c[l+(g<<2)>>2]=0;g=g+1|0;if((g|0)>=(c[m>>2]|0))break b;k=c[n>>2]|0}}else d=o+20|0;while(0);c[d>>2]=0;p=o+16|0;c[p>>2]=0;p=o+12|0;c[p>>2]=0;p=o+40|0;a[p>>0]=0;b=b+252|0;b=c[b>>2]|0;p=o+44|0;c[p>>2]=b;return}function NQ(a){a=a|0;var b=0;b=(c[a+432>>2]|0)+16|0;a=(c[a+428>>2]|0)+20|0;c[a>>2]=(c[a>>2]|0)+((c[b>>2]|0)/8|0);c[b>>2]=0;return}function OQ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;F=b+424|0;d=c[F>>2]|0;G=d+17|0;if(a[G>>0]|0){L=2;return L|0}H=b+428|0;J=d+20|0;K=b+304|0;D=d+16|0;E=b+32|0;m=b+192|0;n=b+36|0;o=b+280|0;p=b+284|0;q=b+196|0;r=b+200|0;s=b+201|0;t=b+380|0;u=b+376|0;v=b+384|0;w=b+388|0;l=b+392|0;x=b+396|0;y=b+400|0;z=b+288|0;A=b+292|0;B=b+28|0;C=b+296|0;a:while(1){d=Ed[c[(c[H>>2]|0)+4>>2]&511](b)|0;if((d|0)==2){L=57;break}else if((d|0)!=1){L=62;break}d=c[J>>2]|0;do if((d|0)==1){if(!((c[E>>2]|0)<=65500?(c[B>>2]|0)<=65500:0)){j=c[b>>2]|0;c[j+20>>2]=42;c[j+24>>2]=65500;Bd[c[j>>2]&511](b)}d=c[m>>2]|0;if((d+-8|0)>>>0>4){j=c[b>>2]|0;c[j+20>>2]=16;c[j+24>>2]=d;Bd[c[j>>2]&511](b)}d=c[n>>2]|0;if((d|0)>10){j=c[b>>2]|0;c[j+20>>2]=27;c[j+24>>2]=d;c[j+28>>2]=10;Bd[c[j>>2]&511](b);d=c[n>>2]|0}c[o>>2]=1;c[p>>2]=1;if((d|0)>0){g=1;i=1;j=0;k=c[q>>2]|0;while(1){e=k+8|0;f=c[e>>2]|0;h=k+12|0;if((f+-1|0)>>>0<=3?(I=c[h>>2]|0,(I+-1|0)>>>0<=3):0)e=I;else{i=c[b>>2]|0;c[i+20>>2]=19;Bd[c[i>>2]&511](b);i=c[o>>2]|0;f=c[e>>2]|0;g=c[p>>2]|0;e=c[h>>2]|0;d=c[n>>2]|0}i=(i|0)>(f|0)?i:f;c[o>>2]=i;g=(g|0)>(e|0)?g:e;c[p>>2]=g;j=j+1|0;if((j|0)>=(d|0)){e=d;break}else k=k+88|0}}else e=d;b:do if(!(a[r>>0]|0)){if((a[s>>0]|0)!=0?(c[K>>2]|0)!=0:0){L=22;break}do switch(c[t>>2]|0){case 143:{c[l>>2]=12;c[x>>2]=276664;c[y>>2]=63;d=12;break b}case 48:{c[l>>2]=7;c[x>>2]=276984;c[y>>2]=48;d=7;break b}case 3:{c[l>>2]=2;c[x>>2]=277856;c[y>>2]=3;d=2;break b}case 224:{c[l>>2]=15;c[x>>2]=276664;c[y>>2]=63;d=15;break b}case 168:{c[l>>2]=13;c[x>>2]=276664;c[y>>2]=63;d=13;break b}case 255:{c[l>>2]=16;c[x>>2]=276664;c[y>>2]=63;d=16;break b}case 35:{c[l>>2]=6;c[x>>2]=277248;c[y>>2]=35;d=6;break b}case 80:{c[l>>2]=9;c[x>>2]=276664;c[y>>2]=63;d=9;break b}case 195:{c[l>>2]=14;c[x>>2]=276664;c[y>>2]=63;d=14;break b}case 120:{c[l>>2]=11;c[x>>2]=276664;c[y>>2]=63;d=11;break b}case 15:{c[l>>2]=4;c[x>>2]=277624;c[y>>2]=15;d=4;break b}case 63:{c[l>>2]=8;c[x>>2]=276664;c[y>>2]=63;d=8;break b}case 99:{c[l>>2]=10;c[x>>2]=276664;c[y>>2]=63;d=10;break b}case 24:{c[l>>2]=5;c[x>>2]=277456;c[y>>2]=24;d=5;break b}case 0:{c[l>>2]=1;c[x>>2]=276664;c[y>>2]=0;d=1;break b}case 8:{c[l>>2]=3;c[x>>2]=277752;c[y>>2]=8;d=3;break b}default:{d=c[b>>2]|0;c[d+20>>2]=17;c[d+24>>2]=c[u>>2];c[d+28>>2]=c[t>>2];c[d+32>>2]=c[v>>2];c[d+36>>2]=c[w>>2];Bd[c[d>>2]&511](b);d=c[l>>2]|0;e=c[n>>2]|0;break b}}while(0)}else L=22;while(0);if((L|0)==22){L=0;c[l>>2]=8;c[x>>2]=276664;c[y>>2]=63;d=8}c[z>>2]=d;c[A>>2]=d;if((e|0)>0){e=1;f=c[q>>2]|0;while(1){c[f+36>>2]=d;c[f+40>>2]=d;h=f+8|0;j=da(c[h>>2]|0,c[B>>2]|0)|0;c[f+28>>2]=lH(j,da(c[o>>2]|0,d)|0)|0;j=f+12|0;i=da(c[j>>2]|0,c[E>>2]|0)|0;c[f+32>>2]=lH(i,da(c[l>>2]|0,c[p>>2]|0)|0)|0;h=da(c[h>>2]|0,c[B>>2]|0)|0;c[f+44>>2]=lH(h,c[o>>2]|0)|0;j=da(c[j>>2]|0,c[E>>2]|0)|0;c[f+48>>2]=lH(j,c[p>>2]|0)|0;a[f+52>>0]=1;c[f+80>>2]=0;if((e|0)>=(c[n>>2]|0))break;d=c[l>>2]|0;e=e+1|0;f=f+88|0}d=c[l>>2]|0}c[C>>2]=lH(c[E>>2]|0,da(d,c[p>>2]|0)|0)|0;d=c[K>>2]|0;if((d|0)>=(c[n>>2]|0)?(a[s>>0]|0)==0:0){a[(c[F>>2]|0)+16>>0]=0;break}a[(c[F>>2]|0)+16>>0]=1}else if(!d){if(!(a[D>>0]|0)){j=c[b>>2]|0;c[j+20>>2]=36;Bd[c[j>>2]&511](b)}if(!(c[K>>2]|0))continue a;else{L=56;break a}}else d=c[K>>2]|0;while(0);if(d){L=52;break}c[J>>2]=2}if((L|0)==52){c[J>>2]=0;L=1;return L|0}else if((L|0)==56){QQ(b);L=1;return L|0}else if((L|0)==57){a[G>>0]=1;if(!(c[J>>2]|0)){e=b+132|0;d=c[b+124>>2]|0;if((c[e>>2]|0)<=(d|0)){L=2;return L|0}c[e>>2]=d;L=2;return L|0}else{if(!(a[(c[H>>2]|0)+13>>0]|0)){L=2;return L|0}L=c[b>>2]|0;c[L+20>>2]=62;Bd[c[L>>2]&511](b);L=2;return L|0}}else if((L|0)==62)return d|0;return 0}function PQ(b){b=b|0;var d=0;d=c[b+424>>2]|0;c[d>>2]=153;a[d+16>>0]=0;a[d+17>>0]=0;c[d+20>>2]=1;Bd[c[(c[b>>2]|0)+16>>2]&511](b);Bd[c[c[b+428>>2]>>2]&511](b);c[b+140>>2]=0;return}function QQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=a+304|0;b=c[h>>2]|0;if((b|0)!=1){if((b+-1|0)>>>0>3){g=c[a>>2]|0;c[g+20>>2]=27;c[g+24>>2]=b;c[g+28>>2]=4;Bd[c[g>>2]&511](a)}f=a+392|0;c[a+324>>2]=lH(c[a+28>>2]|0,da(c[f>>2]|0,c[a+280>>2]|0)|0)|0;c[a+328>>2]=lH(c[a+32>>2]|0,da(c[f>>2]|0,c[a+284>>2]|0)|0)|0;f=a+332|0;c[f>>2]=0;if((c[h>>2]|0)<=0){h=a+432|0;h=c[h>>2]|0;h=c[h>>2]|0;Bd[h&511](a);h=a+416|0;g=c[h>>2]|0;g=c[g>>2]|0;Bd[g&511](a);h=c[h>>2]|0;h=h+4|0;h=c[h>>2]|0;a=a+424|0;a=c[a>>2]|0;c[a>>2]=h;return}e=0;d=0;while(1){g=c[a+(d<<2)+308>>2]|0;k=c[g+8>>2]|0;c[g+56>>2]=k;j=c[g+12>>2]|0;c[g+60>>2]=j;b=da(j,k)|0;c[g+64>>2]=b;c[g+68>>2]=da(c[g+36>>2]|0,k)|0;i=((c[g+28>>2]|0)>>>0)%(k>>>0)|0;c[g+72>>2]=(i|0)==0?k:i;i=((c[g+32>>2]|0)>>>0)%(j>>>0)|0;c[g+76>>2]=(i|0)==0?j:i;if((b+e|0)>10){k=c[a>>2]|0;c[k+20>>2]=14;Bd[c[k>>2]&511](a)}if((b|0)>0)do{b=b+-1|0;k=c[f>>2]|0;c[f>>2]=k+1;c[a+(k<<2)+336>>2]=d}while((b|0)>0);d=d+1|0;b=c[h>>2]|0;if((d|0)>=(b|0))break;e=c[f>>2]|0}if((b|0)<=0){g=a+432|0;g=c[g>>2]|0;g=c[g>>2]|0;Bd[g&511](a);g=a+416|0;k=c[g>>2]|0;k=c[k>>2]|0;Bd[k&511](a);g=c[g>>2]|0;g=g+4|0;g=c[g>>2]|0;k=a+424|0;k=c[k>>2]|0;c[k>>2]=g;return}}else{b=c[a+308>>2]|0;c[a+324>>2]=c[b+28>>2];k=c[b+32>>2]|0;c[a+328>>2]=k;c[b+56>>2]=1;c[b+60>>2]=1;c[b+64>>2]=1;c[b+68>>2]=c[b+36>>2];c[b+72>>2]=1;g=c[b+12>>2]|0;k=(k>>>0)%(g>>>0)|0;c[b+76>>2]=(k|0)==0?g:k;c[a+332>>2]=1;c[a+336>>2]=0;b=1}g=a+4|0;e=0;do{d=c[a+(e<<2)+308>>2]|0;f=d+80|0;if(!(c[f>>2]|0)){d=c[d+16>>2]|0;b=a+(d<<2)+144|0;if(!(d>>>0<=3?(c[b>>2]|0)!=0:0)){k=c[a>>2]|0;c[k+20>>2]=54;c[k+24>>2]=d;Bd[c[k>>2]&511](a)}k=Hd[c[c[g>>2]>>2]&255](a,1,130)|0;qfa(k|0,c[b>>2]|0,130)|0;c[f>>2]=k;b=c[h>>2]|0}e=e+1|0}while((e|0)<(b|0));g=a+432|0;g=c[g>>2]|0;g=c[g>>2]|0;Bd[g&511](a);g=a+416|0;k=c[g>>2]|0;k=c[k>>2]|0;Bd[k&511](a);g=c[g>>2]|0;g=g+4|0;g=c[g>>2]|0;k=a+424|0;k=c[k>>2]|0;c[k>>2]=g;return}function RQ(a){a=a|0;Bd[c[(c[a+432>>2]|0)+8>>2]&511](a);c[c[a+424>>2]>>2]=153;return}function SQ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=c[b+412>>2]|0;if(!d){d=t+4|0;if(!(a[(c[b+440>>2]|0)+8>>0]|0))c[d>>2]=45;else{c[d>>2]=44;r=c[b+292>>2]|0;l=c[b+36>>2]|0;if((l|0)>0){m=t+56|0;n=t+60|0;o=t+8|0;p=r+2|0;q=r+-2|0;s=0;k=c[b+196>>2]|0;while(1){i=(da(c[k+40>>2]|0,c[k+12>>2]|0)|0)/(r|0)|0;j=c[(c[m>>2]|0)+(s<<2)>>2]|0;g=c[(c[n>>2]|0)+(s<<2)>>2]|0;h=c[o+(s<<2)>>2]|0;d=da(i,p)|0;if((d|0)>0){b=0;do{e=c[h+(b<<2)>>2]|0;c[g+(b<<2)>>2]=e;c[j+(b<<2)>>2]=e;b=b+1|0}while((b|0)!=(d|0))}d=i<<1;if((i|0)>0){b=da(i,r)|0;e=da(i,q)|0;f=0;do{u=f+b|0;v=f+e|0;c[g+(v<<2)>>2]=c[h+(u<<2)>>2];c[g+(u<<2)>>2]=c[h+(v<<2)>>2];f=f+1|0}while((f|0)<(d|0));d=0;do{c[j+(d-i<<2)>>2]=c[j>>2];d=d+1|0}while((d|0)!=(i|0))}s=s+1|0;if((s|0)==(l|0))break;else k=k+88|0}}c[t+64>>2]=0;c[t+68>>2]=0;c[t+76>>2]=0}a[t+48>>0]=0;c[t+52>>2]=0;return}else if((d|0)==2){c[t+4>>2]=46;return}else{v=c[b>>2]|0;c[v+20>>2]=3;Bd[c[v>>2]&511](b);return}}function TQ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=c[b+24>>2]|0;k=j+4|0;i=j+12|0;l=b+428|0;d=c[k>>2]|0;e=c[j>>2]|0;a:while(1){if(!d){if(!((Ed[c[i>>2]&511](b)|0)<<24>>24)){d=0;h=19;break}g=c[j>>2]|0;d=c[k>>2]|0}else g=e;d=d+-1|0;e=g+1|0;if((a[g>>0]|0)!=-1)do{h=(c[l>>2]|0)+20|0;c[h>>2]=(c[h>>2]|0)+1;c[j>>2]=e;c[k>>2]=d;if(!d){if(!((Ed[c[i>>2]&511](b)|0)<<24>>24)){d=0;h=19;break a}g=c[j>>2]|0;d=c[k>>2]|0}else g=e;d=d+-1|0;e=g+1|0}while((a[g>>0]|0)!=-1);do{if(!d){if(!((Ed[c[i>>2]&511](b)|0)<<24>>24)){d=0;h=19;break a}d=c[k>>2]|0;f=c[j>>2]|0}else f=e;d=d+-1|0;e=f+1|0;f=a[f>>0]|0}while(f<<24>>24==-1);h=(c[l>>2]|0)+20|0;g=c[h>>2]|0;if(f<<24>>24){h=16;break}c[h>>2]=g+2;c[j>>2]=e;c[k>>2]=d}if((h|0)==16){f=f&255;if(g){h=c[b>>2]|0;c[h+20>>2]=119;c[h+24>>2]=g;c[h+28>>2]=f;Cd[c[h+4>>2]&255](b,-1);c[(c[l>>2]|0)+20>>2]=0}c[b+404>>2]=f;c[j>>2]=e;c[k>>2]=d;b=1;return b|0}else if((h|0)==19)return d|0;return 0}function UQ(b){b=b|0;var d=0;d=c[b+428>>2]|0;c[b+196>>2]=0;c[b+124>>2]=0;c[b+404>>2]=0;a[d+12>>0]=0;a[d+13>>0]=0;c[d+20>>2]=0;c[d+160>>2]=0;return} -function Do(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;f=a+8208|0;e=b+4|0;if(f>>>0>(c[e>>2]|0)>>>0)Lg(b,8);o=(d[a+5>>0]|0)<<16|(d[a+4>>0]|0)<<24|(d[a+6>>0]|0)<<8|(d[a+7>>0]|0);if(o>>>0<8208?1:o>>>0>((c[e>>2]|0)-a|0)>>>0)Lg(b,8);o=(d[a+8205>>0]|0)<<16|(d[a+8204>>0]|0)<<24|(d[a+8206>>0]|0)<<8|(d[a+8207>>0]|0);if((a+((o*12|0)+8208)|0)>>>0>(c[e>>2]|0)>>>0)Lg(b,8);if(!o)return 0;k=b+8|0;l=b+172|0;m=0;n=0;a:while(1){i=(d[f+1>>0]|0)<<16|(d[f>>0]|0)<<24;e=i|(d[f+2>>0]|0)<<8|(d[f+3>>0]|0);j=(d[f+5>>0]|0)<<16|(d[f+4>>0]|0)<<24;g=m;m=j|(d[f+6>>0]|0)<<8|(d[f+7>>0]|0);h=f;f=f+12|0;if(m>>>0>>0){e=10;break}if(!((n|0)==0|e>>>0>g>>>0)){e=12;break}do if(c[k>>2]|0){g=m-e|0;if((g+((d[h+9>>0]|0)<<16|(d[h+8>>0]|0)<<24|(d[h+10>>0]|0)<<8|(d[h+11>>0]|0))|0)>>>0>=(c[l>>2]|0)>>>0){e=15;break a}g=g+1|0;if(!i){if(j){e=24;break a}if(!g)break;while(1){if((d[a+((e>>>3&8191)+12)>>0]|0)&128>>>(e&7)){e=27;break a}g=g+-1|0;if(!g)break;else e=e+1|0}}else{if(!g)break;while(1){if(!((d[a+((e>>>19)+12)>>0]|0)&128>>>(e>>>16&7))){e=19;break a}if(!((d[a+((e>>>3&8191)+12)>>0]|0)&128>>>(e&7))){e=21;break a}g=g+-1|0;if(!g)break;else e=e+1|0}}}while(0);n=n+1|0;if((n|0)==(o|0)){e=30;break}}if((e|0)==10)Lg(b,8);else if((e|0)==12)Lg(b,8);else if((e|0)==15)Lg(b,16);else if((e|0)==19)Lg(b,8);else if((e|0)==21)Lg(b,8);else if((e|0)==24)Lg(b,8);else if((e|0)==27)Lg(b,8);else if((e|0)==30)return 0;return 0}function Eo(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=8;c[b>>2]=(d[a+9>>0]|0)<<16|(d[a+8>>0]|0)<<24|(d[a+10>>0]|0)<<8|(d[a+11>>0]|0);return 0}function Fo(a,b){a=a|0;b=b|0;var e=0;e=c[a+16>>2]|0;a=b-((d[e+13>>0]|0)<<16|(d[e+12>>0]|0)<<24|(d[e+14>>0]|0)<<8|(d[e+15>>0]|0))|0;if(a>>>0>=((d[e+17>>0]|0)<<16|(d[e+16>>0]|0)<<24|(d[e+18>>0]|0)<<8|(d[e+19>>0]|0))>>>0){b=0;return b|0}b=a<<1;b=(d[e+(b+20)>>0]|0)<<8|(d[e+(b+21)>>0]|0);return b|0}function Go(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0;e=c[a+16>>2]|0;a=(c[b>>2]|0)+1|0;g=(d[e+13>>0]|0)<<16|(d[e+12>>0]|0)<<24|(d[e+14>>0]|0)<<8|(d[e+15>>0]|0);i=(d[e+17>>0]|0)<<16|(d[e+16>>0]|0)<<24|(d[e+18>>0]|0)<<8|(d[e+19>>0]|0);a=a>>>0>>0?g:a;g=a-g|0;if(g>>>0>=i>>>0){h=a;i=0;c[b>>2]=h;return i|0}f=a;h=g;g=e+((g<<1)+20)|0;while(1){a=(d[g>>0]|0)<<8|(d[g+1>>0]|0);if(a){e=5;break}a=f+1|0;h=h+1|0;if(h>>>0>=i>>>0){f=a;a=0;e=5;break}else{f=a;g=g+2|0}}if((e|0)==5){c[b>>2]=f;return a|0}return 0}function Ho(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;e=a+20|0;g=b+4|0;if(e>>>0>(c[g>>2]|0)>>>0)Lg(b,8);h=(d[a+5>>0]|0)<<16|(d[a+4>>0]|0)<<24|(d[a+6>>0]|0)<<8|(d[a+7>>0]|0);f=(d[a+17>>0]|0)<<16|(d[a+16>>0]|0)<<24|(d[a+18>>0]|0)<<8|(d[a+19>>0]|0);if(h>>>0>((c[g>>2]|0)-a|0)>>>0)Lg(b,8);if(h>>>0<((f<<1)+20|0)>>>0)Lg(b,8);if(!((c[b+8>>2]|0)!=0&(f|0)!=0))return 0;h=b+172|0;while(1){if(((d[e>>0]|0)<<8|(d[e+1>>0]|0))>>>0>=(c[h>>2]|0)>>>0){e=9;break}f=f+-1|0;if(!f){e=11;break}else e=e+2|0}if((e|0)==9)Lg(b,16);else if((e|0)==11)return 0;return 0}function Io(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=10;c[b>>2]=(d[a+9>>0]|0)<<16|(d[a+8>>0]|0)<<24|(d[a+10>>0]|0)<<8|(d[a+11>>0]|0);return 0}function Jo(b,e){b=b|0;e=e|0;c[b+16>>2]=e;c[b+40>>2]=(d[e+13>>0]|0)<<16|(d[e+12>>0]|0)<<24|(d[e+14>>0]|0)<<8|(d[e+15>>0]|0);a[b+24>>0]=0;return 0}function Ko(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;a=ht(a,e,0)|0;i=d;return a|0}function Lo(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=b+28|0;e=c[g>>2]|0;if((e|0)==-1){d=0;return d|0}f=b+24|0;if((a[f>>0]|0)!=0?(e|0)==(c[d>>2]|0):0){it(b);if(!(a[f>>0]|0)){d=0;return d|0}e=c[b+32>>2]|0;if(!e){d=0;return d|0}c[d>>2]=c[g>>2];d=e;return d|0}d=ht(b,d,1)|0;return d|0}function Mo(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=a+16|0;e=b+4|0;if(g>>>0>(c[e>>2]|0)>>>0)Lg(b,8);f=(d[a+5>>0]|0)<<16|(d[a+4>>0]|0)<<24|(d[a+6>>0]|0)<<8|(d[a+7>>0]|0);l=(d[a+13>>0]|0)<<16|(d[a+12>>0]|0)<<24|(d[a+14>>0]|0)<<8|(d[a+15>>0]|0);if(f>>>0>((c[e>>2]|0)-a|0)>>>0)Lg(b,8);if(f>>>0<((l*12|0)+16|0)>>>0)Lg(b,8);if(!l)return 0;h=b+8|0;i=b+172|0;j=0;k=0;while(1){e=(d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0);f=j;j=(d[g+5>>0]|0)<<16|(d[g+4>>0]|0)<<24|(d[g+6>>0]|0)<<8|(d[g+7>>0]|0);a=g;g=g+12|0;if(j>>>0>>0){e=9;break}if(!((k|0)==0|e>>>0>f>>>0)){e=11;break}if((c[h>>2]|0)!=0?(j-e+((d[a+9>>0]|0)<<16|(d[a+8>>0]|0)<<24|(d[a+10>>0]|0)<<8|(d[a+11>>0]|0))|0)>>>0>=(c[i>>2]|0)>>>0:0){e=14;break}k=k+1|0;if((k|0)==(l|0)){e=16;break}}if((e|0)==9)Lg(b,8);else if((e|0)==11)Lg(b,8);else if((e|0)==14)Lg(b,16);else if((e|0)==16)return 0;return 0}function No(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=12;c[b>>2]=(d[a+9>>0]|0)<<16|(d[a+8>>0]|0)<<24|(d[a+10>>0]|0)<<8|(d[a+11>>0]|0);return 0}function Oo(b,e){b=b|0;e=e|0;c[b+16>>2]=e;c[b+40>>2]=(d[e+13>>0]|0)<<16|(d[e+12>>0]|0)<<24|(d[e+14>>0]|0)<<8|(d[e+15>>0]|0);a[b+24>>0]=0;return 0}function Po(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;a=jt(a,e,0)|0;i=d;return a|0}function Qo(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=b+28|0;e=c[g>>2]|0;if((e|0)==-1){d=0;return d|0}f=b+24|0;if((a[f>>0]|0)!=0?(e|0)==(c[d>>2]|0):0){kt(b);if(!(a[f>>0]|0)){d=0;return d|0}e=c[b+32>>2]|0;if(!e){d=0;return d|0}c[d>>2]=c[g>>2];d=e;return d|0}d=jt(b,d,1)|0;return d|0}function Ro(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=a+16|0;e=b+4|0;if(g>>>0>(c[e>>2]|0)>>>0)Lg(b,8);f=(d[a+5>>0]|0)<<16|(d[a+4>>0]|0)<<24|(d[a+6>>0]|0)<<8|(d[a+7>>0]|0);l=(d[a+13>>0]|0)<<16|(d[a+12>>0]|0)<<24|(d[a+14>>0]|0)<<8|(d[a+15>>0]|0);if(f>>>0>((c[e>>2]|0)-a|0)>>>0)Lg(b,8);if(f>>>0<((l*12|0)+16|0)>>>0)Lg(b,8);if(!l)return 0;h=b+8|0;i=b+172|0;j=0;k=0;while(1){e=(d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0);f=j;j=(d[g+5>>0]|0)<<16|(d[g+4>>0]|0)<<24|(d[g+6>>0]|0)<<8|(d[g+7>>0]|0);a=g;g=g+12|0;if(e>>>0>j>>>0){e=9;break}if(!((k|0)==0|e>>>0>f>>>0)){e=11;break}if((c[h>>2]|0)!=0?((d[a+9>>0]|0)<<16|(d[a+8>>0]|0)<<24|(d[a+10>>0]|0)<<8|(d[a+11>>0]|0))>>>0>=(c[i>>2]|0)>>>0:0){e=14;break}k=k+1|0;if((k|0)==(l|0)){e=16;break}}if((e|0)==9)Lg(b,8);else if((e|0)==11)Lg(b,8);else if((e|0)==14)Lg(b,16);else if((e|0)==16)return 0;return 0}function So(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=13;c[b>>2]=(d[a+9>>0]|0)<<16|(d[a+8>>0]|0)<<24|(d[a+10>>0]|0)<<8|(d[a+11>>0]|0);return 0}function To(a,b){a=a|0;b=b|0;c[a+16>>2]=b;c[a+24>>2]=(d[b+7>>0]|0)<<16|(d[b+6>>0]|0)<<24|(d[b+8>>0]|0)<<8|(d[b+9>>0]|0);c[a+28>>2]=0;c[a+32>>2]=0;return 0}function Uo(a){a=a|0;var b=0,d=0;d=c[a+36>>2]|0;c[a+28>>2]=0;if(!d)return;a=a+32|0;b=c[a>>2]|0;if(!b)return;Ag(d,b);c[a>>2]=0;return}function Vo(a,b){a=a|0;b=b|0;return 0}function Wo(a,b){a=a|0;b=b|0;c[b>>2]=0;return 0}function Xo(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=c[a+16>>2]|0;a=(d[o+7>>0]|0)<<16|(d[o+6>>0]|0)<<24|(d[o+8>>0]|0)<<8|(d[o+9>>0]|0);if(!a){e=0;return e|0}else g=0;a:while(1){while(1){h=(g+a|0)>>>1;i=h*11|0;j=(d[o+(i+11)>>0]|0)<<8|(d[o+(i+10)>>0]|0)<<16|(d[o+(i+12)>>0]|0);if(j>>>0>f>>>0){a=h;break}g=h+1|0;if(j>>>0>=f>>>0){k=i;a=7;break a}if(g>>>0>=a>>>0){p=0;a=24;break a}}if(g>>>0>=a>>>0){p=0;a=24;break}}if((a|0)==7){a=o+(k+13)|0;if(!a){e=0;return e|0}a=(d[o+(k+14)>>0]|0)<<16|(d[a>>0]|0)<<24|(d[o+(k+15)>>0]|0)<<8|(d[o+(k+16)>>0]|0);n=(d[o+(k+18)>>0]|0)<<16|(d[o+(k+17)>>0]|0)<<24|(d[o+(k+19)>>0]|0)<<8|(d[o+(k+20)>>0]|0);b:do if(a){k=a+4|0;l=a+5|0;m=a+6|0;f=a+7|0;a=(d[o+(a+1)>>0]|0)<<16|(d[o+a>>0]|0)<<24|(d[o+(a+2)>>0]|0)<<8|(d[o+(a+3)>>0]|0);j=0;while(1){while(1){if(j>>>0>=a>>>0)break b;g=(a+j|0)>>>1;h=g<<2;i=(d[o+(l+h)>>0]|0)<<8|(d[o+(k+h)>>0]|0)<<16|(d[o+(m+h)>>0]|0);if(i>>>0>e>>>0)a=g;else break}if(((d[o+(f+h)>>0]|0)+i|0)>>>0>>0)j=g+1|0;else break}e=Pd[c[(c[b+12>>2]|0)+12>>2]&511](b,e)|0;return e|0}while(0);if(!n){e=0;return e|0}a=(d[o+(n+1)>>0]|0)<<16|(d[o+n>>0]|0)<<24|(d[o+(n+2)>>0]|0)<<8|(d[o+(n+3)>>0]|0);if(!a){e=0;return e|0}k=n+4|0;l=n+5|0;f=n+6|0;g=0;c:while(1){while(1){i=(g+a|0)>>>1;h=i*5|0;j=(d[o+(l+h)>>0]|0)<<8|(d[o+(k+h)>>0]|0)<<16|(d[o+(f+h)>>0]|0);if(j>>>0>e>>>0){a=i;break}g=i+1|0;if(j>>>0>=e>>>0){q=h;a=23;break c}if(g>>>0>=a>>>0){p=0;a=24;break c}}if(g>>>0>=a>>>0){p=0;a=24;break}}if((a|0)==23){e=(d[o+(n+7+q)>>0]|0)<<8|(d[o+(n+8+q)>>0]|0);return e|0}else if((a|0)==24)return p|0}else if((a|0)==24)return p|0;return 0}function Yo(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c[a+16>>2]|0;a=(d[o+7>>0]|0)<<16|(d[o+6>>0]|0)<<24|(d[o+8>>0]|0)<<8|(d[o+9>>0]|0);if(!a){b=-1;return b|0}else f=0;a:while(1){while(1){h=(f+a|0)>>>1;g=h*11|0;i=(d[o+(g+11)>>0]|0)<<8|(d[o+(g+10)>>0]|0)<<16|(d[o+(g+12)>>0]|0);if(i>>>0>e>>>0){a=h;break}f=h+1|0;if(i>>>0>=e>>>0){f=7;break a}if(f>>>0>=a>>>0){a=-1;f=24;break a}}if(f>>>0>=a>>>0){a=-1;f=24;break}}if((f|0)==7){a=o+(g+13)|0;if(!a){b=-1;return b|0}a=(d[o+(g+14)>>0]|0)<<16|(d[a>>0]|0)<<24|(d[o+(g+15)>>0]|0)<<8|(d[o+(g+16)>>0]|0);m=(d[o+(g+18)>>0]|0)<<16|(d[o+(g+17)>>0]|0)<<24|(d[o+(g+19)>>0]|0)<<8|(d[o+(g+20)>>0]|0);b:do if(a){e=a+4|0;j=a+5|0;l=a+6|0;k=a+7|0;a=(d[o+(a+1)>>0]|0)<<16|(d[o+a>>0]|0)<<24|(d[o+(a+2)>>0]|0)<<8|(d[o+(a+3)>>0]|0);i=0;while(1){while(1){if(i>>>0>=a>>>0)break b;f=(a+i|0)>>>1;g=f<<2;h=(d[o+(j+g)>>0]|0)<<8|(d[o+(e+g)>>0]|0)<<16|(d[o+(l+g)>>0]|0);if(h>>>0>b>>>0)a=f;else break}if(((d[o+(k+g)>>0]|0)+h|0)>>>0>>0)i=f+1|0;else{a=1;break}}return a|0}while(0);c:do if((m|0)!=0?(n=(d[o+(m+1)>>0]|0)<<16|(d[o+m>>0]|0)<<24|(d[o+(m+2)>>0]|0)<<8|(d[o+(m+3)>>0]|0),(n|0)!=0):0){e=m+4|0;j=m+5|0;k=m+6|0;f=n;a=0;d:while(1){i=a;while(1){h=(i+f|0)>>>1;a=h*5|0;g=(d[o+(j+a)>>0]|0)<<8|(d[o+(e+a)>>0]|0)<<16|(d[o+(k+a)>>0]|0);if(g>>>0>b>>>0){f=h;a=i;break}i=h+1|0;if(g>>>0>=b>>>0)break d;if(i>>>0>=f>>>0)break c}if(a>>>0>=f>>>0)break c}if((d[o+(m+7+a)>>0]|0)<<8|(d[o+(m+8+a)>>0]|0)){b=0;return b|0}}while(0);b=-1;return b|0}else if((f|0)==24)return a|0;return 0}function Zo(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;j=l;e=c[a+24>>2]|0;k=c[a+16>>2]|0;g=e+1|0;h=a+28|0;f=c[h>>2]|0;c[j>>2]=0;do if(f>>>0>>0){c[a+36>>2]=b;m=a+32|0;a=Dg(b,4,f,g,c[m>>2]|0,j)|0;c[m>>2]=a;if(!(c[j>>2]|0)){c[h>>2]=g;f=a;break}else{m=0;i=l;return m|0}}else f=c[a+32>>2]|0;while(0);if(!e)e=0;else{b=0;a=k+10|0;while(1){c[f+(b<<2)>>2]=(d[a+1>>0]|0)<<8|(d[a>>0]|0)<<16|(d[a+2>>0]|0);b=b+1|0;if((b|0)==(e|0))break;else a=a+11|0}}c[f+(e<<2)>>2]=0;m=f;i=l;return m|0}function _o(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+16|0;j=x;k=c[a+24>>2]|0;w=a+16|0;l=c[w>>2]|0;g=k+1|0;h=a+28|0;f=c[h>>2]|0;c[j>>2]=0;do if(f>>>0>>0){c[a+36>>2]=b;t=a+32|0;f=Dg(b,4,f,g,c[t>>2]|0,j)|0;c[t>>2]=f;if(!(c[j>>2]|0)){c[h>>2]=g;t=f;break}else{e=0;i=x;return e|0}}else t=c[a+32>>2]|0;while(0);if(!k)f=t;else{s=l+10|0;f=t;do{q=(d[s+1>>0]|0)<<8|(d[s>>0]|0)<<16|(d[s+2>>0]|0);l=(d[s+4>>0]|0)<<16|(d[s+3>>0]|0)<<24|(d[s+5>>0]|0)<<8|(d[s+6>>0]|0);r=(d[s+8>>0]|0)<<16|(d[s+7>>0]|0)<<24|(d[s+9>>0]|0)<<8|(d[s+10>>0]|0);s=s+11|0;a:do if(!l)o=13;else{p=c[w>>2]|0;h=l+4|0;n=l+5|0;o=l+6|0;m=l+7|0;l=(d[p+(l+1)>>0]|0)<<16|(d[p+l>>0]|0)<<24|(d[p+(l+2)>>0]|0)<<8|(d[p+(l+3)>>0]|0);j=0;while(1){while(1){if(j>>>0>=l>>>0){o=13;break a}a=(l+j|0)>>>1;b=a<<2;g=(d[p+(n+b)>>0]|0)<<8|(d[p+(h+b)>>0]|0)<<16|(d[p+(o+b)>>0]|0);if(g>>>0>e>>>0)l=a;else break}if(((d[p+(m+b)>>0]|0)+g|0)>>>0>>0)j=a+1|0;else{o=22;break}}}while(0);b:do if((o|0)==13){o=0;if((r|0)!=0?(u=c[w>>2]|0,v=(d[u+(r+1)>>0]|0)<<16|(d[u+r>>0]|0)<<24|(d[u+(r+2)>>0]|0)<<8|(d[u+(r+3)>>0]|0),(v|0)!=0):0){h=r+4|0;m=r+5|0;n=r+6|0;g=v;l=0;c:while(1){while(1){b=(l+g|0)>>>1;a=b*5|0;j=(d[u+(m+a)>>0]|0)<<8|(d[u+(h+a)>>0]|0)<<16|(d[u+(n+a)>>0]|0);if(j>>>0>e>>>0){g=b;break}l=b+1|0;if(j>>>0>=e>>>0)break c;if(l>>>0>=g>>>0)break b}if(l>>>0>=g>>>0)break b}if((d[u+(r+7+a)>>0]|0)<<8|(d[u+(r+8+a)>>0]|0))o=22}}while(0);if((o|0)==22){c[f>>2]=q;f=f+4|0}k=k+-1|0}while((k|0)!=0)}c[f>>2]=0;e=t;i=x;return e|0}function $o(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;l=t+8|0;n=t;o=t+4|0;q=c[a+16>>2]|0;f=(d[q+7>>0]|0)<<16|(d[q+6>>0]|0)<<24|(d[q+8>>0]|0)<<8|(d[q+9>>0]|0);if(!f){s=0;i=t;return s|0}else j=0;a:while(1){while(1){h=(j+f|0)>>>1;g=h*11|0;k=(d[q+(g+11)>>0]|0)<<8|(d[q+(g+10)>>0]|0)<<16|(d[q+(g+12)>>0]|0);if(k>>>0>e>>>0){f=h;break}j=h+1|0;if(k>>>0>=e>>>0){j=7;break a}if(j>>>0>=f>>>0){f=0;j=59;break a}}if(j>>>0>=f>>>0){f=0;j=59;break}}if((j|0)==7){f=q+(g+13)|0;if(!f){s=0;i=t;return s|0}m=(d[q+(g+14)>>0]|0)<<16|(d[f>>0]|0)<<24|(d[q+(g+15)>>0]|0)<<8|(d[q+(g+16)>>0]|0);p=(d[q+(g+18)>>0]|0)<<16|(d[q+(g+17)>>0]|0)<<24|(d[q+(g+19)>>0]|0)<<8|(d[q+(g+20)>>0]|0);f=(p|0)==0;if(!(p|m)){s=0;i=t;return s|0}if(!m){f=(d[q+(p+1)>>0]|0)<<16|(d[q+p>>0]|0)<<24|(d[q+(p+2)>>0]|0)<<8|(d[q+(p+3)>>0]|0);h=f+1|0;e=a+28|0;j=c[e>>2]|0;c[n>>2]=0;do if(j>>>0>>0){c[a+36>>2]=b;s=a+32|0;g=Dg(b,4,j,h,c[s>>2]|0,n)|0;c[s>>2]=g;if(!(c[n>>2]|0)){c[e>>2]=h;j=g;break}else{s=0;i=t;return s|0}}else j=c[a+32>>2]|0;while(0);if(!f)f=0;else{g=q+(p+4)|0;h=0;while(1){c[j+(h<<2)>>2]=(d[g+1>>0]|0)<<8|(d[g>>0]|0)<<16|(d[g+2>>0]|0);h=h+1|0;if((h|0)==(f|0))break;else g=g+5|0}}c[j+(f<<2)>>2]=0;s=j;i=t;return s|0}h=q+m|0;if(f){s=lt(a,h,b)|0;i=t;return s|0}r=(d[q+(p+1)>>0]|0)<<16|(d[q+p>>0]|0)<<24|(d[q+(p+2)>>0]|0)<<8|(d[q+(p+3)>>0]|0);s=(d[q+(m+1)>>0]|0)<<16|(d[h>>0]|0)<<24|(d[q+(m+2)>>0]|0)<<8|(d[q+(m+3)>>0]|0);if(!s)f=0;else{j=q+(m+7)|0;g=s;f=0;while(1){f=f+1+(d[j>>0]|0)|0;g=g+-1|0;if(!g)break;else j=j+4|0}}if(!r){s=lt(a,h,b)|0;i=t;return s|0}g=r+1|0;if(!f){j=a+28|0;f=c[j>>2]|0;c[l>>2]=0;do if(f>>>0>>0){c[a+36>>2]=b;s=a+32|0;h=Dg(b,4,f,g,c[s>>2]|0,l)|0;c[s>>2]=h;if(!(c[l>>2]|0)){c[j>>2]=g;break}else{s=0;i=t;return s|0}}else h=c[a+32>>2]|0;while(0);f=q+(p+4)|0;g=0;while(1){c[h+(g<<2)>>2]=(d[f+1>>0]|0)<<8|(d[f>>0]|0)<<16|(d[f+2>>0]|0);g=g+1|0;if((g|0)==(r|0))break;else f=f+5|0}c[h+(r<<2)>>2]=0;s=h;i=t;return s|0}j=g+f|0;g=a+28|0;f=c[g>>2]|0;c[o>>2]=0;do if(f>>>0>>0){c[a+36>>2]=b;a=a+32|0;f=Dg(b,4,f,j,c[a>>2]|0,o)|0;c[a>>2]=f;if(!(c[o>>2]|0)){c[g>>2]=j;b=f;break}else{s=0;i=t;return s|0}}else b=c[a+32>>2]|0;while(0);f=d[q+(m+7)>>0]|0;l=1;k=q+(m+8)|0;h=(d[q+(m+5)>>0]|0)<<8|(d[q+(m+4)>>0]|0)<<16|(d[q+(m+6)>>0]|0);g=0;e=1;a=(d[q+(p+5)>>0]|0)<<8|(d[q+(p+4)>>0]|0)<<16|(d[q+(p+6)>>0]|0);j=q+(p+9)|0;b:while(1){if(a>>>0>(f+h|0)>>>0){n=k;m=h;while(1){h=g;k=0;while(1){g=h+1|0;c[b+(h<<2)>>2]=k+m;k=k+1|0;if(k>>>0>f>>>0)break;else h=g}l=l+1|0;if(l>>>0>s>>>0){o=f;k=n;h=m;f=a;break b}h=(d[n+1>>0]|0)<<8|(d[n>>0]|0)<<16|(d[n+2>>0]|0);k=n+4|0;f=d[n+3>>0]|0;if(a>>>0>(f+h|0)>>>0){n=k;m=h}else break}}if(a>>>0>>0){c[b+(g<<2)>>2]=a;g=g+1|0}e=e+1|0;if(e>>>0>r>>>0){o=f;f=a;break}a=(d[j+1>>0]|0)<<8|(d[j>>0]|0)<<16|(d[j+2>>0]|0);j=j+5|0}if(e>>>0>r>>>0)if(l>>>0<=s>>>0){j=g;g=0;while(1){f=j+1|0;c[b+(j<<2)>>2]=g+h;g=g+1|0;if(g>>>0>o>>>0)break;else j=f}if(l>>>0>>0)while(1){j=(d[k+1>>0]|0)<<8|(d[k>>0]|0)<<16|(d[k+2>>0]|0);g=d[k+3>>0]|0;h=f;e=0;while(1){c[b+(h<<2)>>2]=e+j;if((e|0)==(g|0))break;else{h=h+1|0;e=e+1|0}}f=f+1+g|0;l=l+1|0;if((l|0)==(s|0))break;else k=k+4|0}}else f=g;else{c[b+(g<<2)>>2]=f;f=g+1|0;if(e>>>0>>0){h=g+r+1|0;g=e;while(1){c[b+(f<<2)>>2]=(d[j+1>>0]|0)<<8|(d[j>>0]|0)<<16|(d[j+2>>0]|0);g=g+1|0;if((g|0)==(r|0))break;else{f=f+1|0;j=j+5|0}}f=h-e|0}}c[b+(f<<2)>>2]=0;s=b;i=t;return s|0}else if((j|0)==59){i=t;return f|0}return 0}function ap(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=(d[a+3>>0]|0)<<16|(d[a+2>>0]|0)<<24|(d[a+4>>0]|0)<<8|(d[a+5>>0]|0);m=(d[a+7>>0]|0)<<16|(d[a+6>>0]|0)<<24|(d[a+8>>0]|0)<<8|(d[a+9>>0]|0);n=b+4|0;if(l>>>0>((c[n>>2]|0)-a|0)>>>0)Lg(b,8);if(l>>>0<((m*11|0)+10|0)>>>0)Lg(b,8);if(!m)return 0;o=b+8|0;p=b+172|0;q=1;r=0;s=a+10|0;a:while(1){e=(d[s+1>>0]|0)<<8|(d[s>>0]|0)<<16|(d[s+2>>0]|0);f=(d[s+4>>0]|0)<<16|(d[s+3>>0]|0)<<24|(d[s+5>>0]|0)<<8|(d[s+6>>0]|0);k=(d[s+8>>0]|0)<<16|(d[s+7>>0]|0)<<24|(d[s+9>>0]|0)<<8|(d[s+10>>0]|0);s=s+11|0;if(!(f>>>0>>0&k>>>0>>0)){e=7;break}if(e>>>0>>0){e=9;break}q=e+1|0;if(f){e=f+4|0;j=(d[a+(f+1)>>0]|0)<<16|(d[a+f>>0]|0)<<24|(d[a+(f+2)>>0]|0)<<8|(d[a+(f+3)>>0]|0);if((a+((j<<2)+e)|0)>>>0>(c[n>>2]|0)>>>0){e=12;break}if(j){h=a+e|0;g=0;i=0;while(1){e=(d[h+1>>0]|0)<<8|(d[h>>0]|0)<<16|(d[h+2>>0]|0);f=e+(d[h+3>>0]|0)|0;if(f>>>0>1114111){e=15;break a}if(e>>>0>>0){e=17;break a}g=g+1|0;if((g|0)==(j|0))break;else{h=h+4|0;i=f+1|0}}}}if(k){e=a+(k+4)|0;h=(d[a+(k+1)>>0]|0)<<16|(d[a+k>>0]|0)<<24|(d[a+(k+2)>>0]|0)<<8|(d[a+(k+3)>>0]|0);if(h<<2>>>0>((c[n>>2]|0)-e|0)>>>0){e=21;break}if(h){i=0;j=0;do{f=(d[e+1>>0]|0)<<8|(d[e>>0]|0)<<16|(d[e+2>>0]|0);g=e;e=e+5|0;if(f>>>0>1114111){e=24;break a}if(f>>>0>>0){e=26;break a}j=f+1|0;if((c[o>>2]|0)!=0?((d[g+3>>0]|0)<<8|(d[g+4>>0]|0))>>>0>=(c[p>>2]|0)>>>0:0){e=29;break a}i=i+1|0}while((i|0)!=(h|0))}}r=r+1|0;if((r|0)==(m|0)){e=32;break}}switch(e|0){case 7:{Lg(b,8);break}case 9:{Lg(b,8);break}case 12:{Lg(b,8);break}case 15:{Lg(b,8);break}case 17:{Lg(b,8);break}case 21:{Lg(b,8);break}case 24:{Lg(b,8);break}case 26:{Lg(b,8);break}case 29:{Lg(b,16);break}case 32:return 0}return 0}function bp(a,b){a=a|0;b=b|0;c[b+4>>2]=14;c[b>>2]=-1;return 0}function cp(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=b[a+152>>1]|0;a=c[a+156>>2]|0;h=a+((j&65535)<<4)|0;if(!(j<<16>>16)){i=142;return i|0}while(1){if((c[a>>2]|0)==(d|0)?(g=c[a+12>>2]|0,(g|0)!=0):0)break;a=a+16|0;if(a>>>0>=h>>>0){a=142;i=9;break}}if((i|0)==9)return a|0;if(!a){i=142;return i|0}if(f)c[f>>2]=g;i=bh(e,c[a+8>>2]|0)|0;return i|0}function dp(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Z=i;i=i+64|0;L=Z+52|0;N=Z;M=Z+44|0;W=Z+48|0;j=f+528|0;h=c[j>>2]|0;k=f+96|0;do if(!h){h=zh(c[(c[k>>2]|0)+4>>2]|0,85592)|0;if(!h){g=11;i=Z;return g|0}else{c[j>>2]=h;c[f+504>>2]=c[h>>2];Y=h;break}}else Y=h;while(0);c[f+532>>2]=Ah(c[k>>2]|0,89040)|0;O=c[d+28>>2]|0;J=f+132|0;c[J>>2]=0;K=f+136|0;c[K>>2]=0;X=f+140|0;c[X>>2]=0;k=Qh(d)|0;j=Ph(d,W)|0;h=c[W>>2]|0;if(h){g=h;i=Z;return g|0}z=N+4|0;A=N+8|0;B=N+12|0;C=N+16|0;D=N+24|0;E=N+28|0;F=N+32|0;G=N+36|0;H=N+40|0;V=f+104|0;I=f+8|0;while(1){if((j|0)==65536|(j|0)==131072|(j|0)==1330926671|(j|0)==1953658213|(j|0)==1953784678|(j|0)==1954115633){h=j;m=65;break}else if((j|0)!=2001684038){h=2;m=80;break}h=bh(d,k)|0;c[W>>2]=h;if(h){m=80;break}w=d+28|0;y=c[w>>2]|0;c[L>>2]=0;h=fi(d,84568,N)|0;c[L>>2]=h;do if(!h){x=c[z>>2]|0;if((((!((x|0)==1953784678|(x|0)==2001684038)?(S=c[A>>2]|0,(S|0)==(c[d+4>>2]|0)):0)?(x=b[B>>1]|0,T=x&65535,x<<16>>16!=0):0)?((T*20|0)+44|0)>>>0>>0:0)?(U=c[C>>2]|0,(T<<4|12)>>>0>>0&(U&3|0)==0):0){h=c[E>>2]|0;if(!(c[D>>2]|0)){if(c[F>>2]|h){h=8;break}}else if((c[F>>2]|0)==0&(h|0)!=0){h=8;break}if((c[G>>2]|0)!=0|(c[H>>2]|0)==0){x=yg(y,U,L)|0;a:do if(!(c[L>>2]|0)){v=yg(y,40,L)|0;if(!(c[L>>2]|0)){u=b[B>>1]|0;k=u&65535;if(!(u<<16>>16))h=-1;else{h=0;j=k;while(1){j=j>>>1;if(!j)break;else h=h+1|0}}p=16<>0]=(c[z>>2]|0)>>>24;a[x+1>>0]=(c[z>>2]|0)>>>16;a[x+2>>0]=(c[z>>2]|0)>>>8;a[x+3>>0]=c[z>>2];a[x+4>>0]=(e[B>>1]|0)>>>8;a[x+5>>0]=b[B>>1];a[x+6>>0]=p>>>8;a[x+7>>0]=p;a[x+8>>0]=h>>>8;a[x+9>>0]=h;a[x+10>>0]=u>>>8;p=x+12|0;a[x+11>>0]=u;h=Dg(y,24,0,e[B>>1]|0,0,L)|0;if(!(c[L>>2]|0)){j=Dg(y,4,0,e[B>>1]|0,0,L)|0;if((c[L>>2]|0)==0?(u=Uh(d,(e[B>>1]|0)*20|0)|0,c[L>>2]=u,(u|0)==0):0){b:do if(b[B>>1]|0){l=0;m=0;while(1){k=h+(l*24|0)|0;c[k>>2]=$h(d)|0;c[h+(l*24|0)+4>>2]=$h(d)|0;c[h+(l*24|0)+8>>2]=$h(d)|0;c[h+(l*24|0)+12>>2]=$h(d)|0;c[h+(l*24|0)+16>>2]=$h(d)|0;u=m;m=c[k>>2]|0;if(m>>>0<=u>>>0)break;c[j+(l<<2)>>2]=k;l=l+1|0;if((l|0)>=(e[B>>1]|0))break b}Xh(d);c[L>>2]=8;d=v;break a}while(0);Xh(d);Tca(j,e[B>>1]|0,4,197);q=b[B>>1]|0;r=q&65535;m=(r*20|0)+44|0;o=r<<4|12;c:do if(!(q<<16>>16))l=0;else{s=c[A>>2]|0;t=c[C>>2]|0;u=0;while(1){k=c[j+(u<<2)>>2]|0;if((c[k+4>>2]|0)!=(m|0))break;l=c[k+8>>2]|0;if((l+m|0)>>>0>s>>>0)break;n=c[k+12>>2]|0;if((n+o|0)>>>0>t>>>0|l>>>0>n>>>0)break;c[k+20>>2]=o;m=(l+3&-4)+m|0;o=(n+3&-4)+o|0;u=u+1|0;if((u|0)>=(r|0)){l=q;break c}}c[L>>2]=8;d=v;break a}while(0);k=c[D>>2]|0;do if(k){if((k|0)==(m|0)?(P=(c[E>>2]|0)+m|0,P>>>0<=(c[A>>2]|0)>>>0):0){m=P;break}c[L>>2]=8;d=v;break a}while(0);k=c[G>>2]|0;do if(!k)k=c[A>>2]|0;else{if((k|0)==(m+3&-4|0)?(Q=(c[H>>2]|0)+k|0,R=c[A>>2]|0,Q>>>0<=R>>>0):0){k=R;m=Q;break}c[L>>2]=8;d=v;break a}while(0);if(!((m|0)==(k|0)?(o|0)==(c[C>>2]|0):0)){c[L>>2]=8;d=v;break}do if(l<<16>>16){q=d+32|0;r=0;while(1){k=h+(r*24|0)|0;a[p>>0]=(c[k>>2]|0)>>>24;a[p+1>>0]=(c[k>>2]|0)>>>16;a[p+2>>0]=(c[k>>2]|0)>>>8;a[p+3>>0]=c[k>>2];k=h+(r*24|0)+16|0;a[p+4>>0]=(c[k>>2]|0)>>>24;a[p+5>>0]=(c[k>>2]|0)>>>16;a[p+6>>0]=(c[k>>2]|0)>>>8;a[p+7>>0]=c[k>>2];k=h+(r*24|0)+20|0;a[p+8>>0]=(c[k>>2]|0)>>>24;a[p+9>>0]=(c[k>>2]|0)>>>16;a[p+10>>0]=(c[k>>2]|0)>>>8;a[p+11>>0]=c[k>>2];m=h+(r*24|0)+12|0;a[p+12>>0]=(c[m>>2]|0)>>>24;a[p+13>>0]=(c[m>>2]|0)>>>16;a[p+14>>0]=(c[m>>2]|0)>>>8;a[p+15>>0]=c[m>>2];p=p+16|0;u=bh(d,c[h+(r*24|0)+4>>2]|0)|0;c[L>>2]=u;if(u){d=v;break a}l=h+(r*24|0)+8|0;u=Uh(d,c[l>>2]|0)|0;c[L>>2]=u;if(u){d=v;break a}n=c[l>>2]|0;o=c[m>>2]|0;if((n|0)!=(o|0)){c[M>>2]=o;u=Ui(y,x+(c[k>>2]|0)|0,M,c[q>>2]|0,c[l>>2]|0)|0;c[L>>2]=u;if(u){d=v;break a}if((c[M>>2]|0)!=(c[m>>2]|0)){m=55;break}}else qfa(x+(c[k>>2]|0)|0,c[q>>2]|0,n|0)|0;Xh(d);k=(c[m>>2]|0)+(c[k>>2]|0)|0;if(k&3)do{a[x+k>>0]=0;k=k+1|0}while((k&3|0)!=0);r=r+1|0;if((r|0)>=(e[B>>1]|0)){m=59;break}}if((m|0)==55){c[L>>2]=8;d=v;break a}else if((m|0)==59){d=c[C>>2]|0;break}}else d=o;while(0);Ng(v,x,d);c[v+28>>2]=c[w>>2];c[v+24>>2]=212;Og(c[V>>2]|0,(c[I>>2]|0)>>>10&1);c[V>>2]=v;c[I>>2]=c[I>>2]&-1025;d=v}else d=v}else{j=0;d=v}}else{j=0;d=v;h=0}}else{j=0;d=0;h=0}while(0);Ag(y,h);Ag(y,j);if(!(c[L>>2]|0))h=0;else{Ag(y,x);Pg(d);Ag(y,d);h=c[L>>2]|0}}else h=8}else h=8}while(0);c[W>>2]=h;if(h){m=80;break}d=c[V>>2]|0;k=Qh(d)|0;j=Ph(d,W)|0;h=c[W>>2]|0;if(h){m=80;break}}if((m|0)==65){c[J>>2]=1953784678;do if((h|0)==1953784678){h=fi(d,84552,J)|0;c[W>>2]=h;if(h){g=h;i=Z;return g|0}h=c[X>>2]|0;if(!h){g=8;i=Z;return g|0}if(h>>>0>(c[d+4>>2]|0)>>>5>>>0){g=10;i=Z;return g|0}j=f+144|0;c[j>>2]=Dg(O,4,0,h,0,W)|0;h=c[W>>2]|0;if(h){g=h;i=Z;return g|0}h=Uh(d,c[X>>2]<<2)|0;c[W>>2]=h;if(h){g=h;i=Z;return g|0}if((c[X>>2]|0)>0){h=0;do{R=$h(d)|0;c[(c[j>>2]|0)+(h<<2)>>2]=R;h=h+1|0}while((h|0)<(c[X>>2]|0))}Xh(d);h=c[W>>2]|0;if(h){g=h;i=Z;return g|0}}else{c[K>>2]=65536;c[X>>2]=1;j=yg(O,4,W)|0;c[f+144>>2]=j;h=c[W>>2]|0;if(!h){c[j>>2]=k;break}else{g=h;i=Z;return g|0}}while(0);k=c[V>>2]|0;j=(g|0)<0?0:g;if((j|0)>=(c[X>>2]|0)){g=6;i=Z;return g|0}h=bh(k,c[(c[f+144>>2]|0)+(j<<2)>>2]|0)|0;if(h){g=h;i=Z;return g|0}h=Pd[c[Y+88>>2]&511](f,k)|0;if(h){g=h;i=Z;return g|0}c[f>>2]=c[X>>2];c[f+4>>2]=j;g=0;i=Z;return g|0}else if((m|0)==80){i=Z;return h|0}return 0}function ep(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+32|0;C=E+28|0;D=E;B=c[f+528>>2]|0;if((h|0)>0){k=0;p=0;l=0;do{g=c[j+(k<<3)>>2]|0;if((g|0)==1768386662)p=1;else l=(g|0)==1768386675?1:l;k=k+1|0}while((k|0)!=(h|0));q=p;s=l}else{q=0;s=0}h=f+128|0;a:do if(!(c[(c[h>>2]|0)+48>>2]|0)){p=b[f+152>>1]|0;g=c[f+156>>2]|0;k=g+((p&65535)<<4)|0;p=p<<16>>16==0;b:do if(!p){l=g;do{if((c[l>>2]|0)==1735162214?(c[l+12>>2]|0)!=0:0){n=l;A=10;break}l=l+16|0}while(l>>>0>>0);if((A|0)==10?(n|0)!=0:0){g=1;break a}if(!p)while(1){if((c[g>>2]|0)==1128678944?(c[g+12>>2]|0)!=0:0)break b;g=g+16|0;if(g>>>0>=k>>>0){g=0;break}}else g=0}else g=0;while(0);g=(g|0)!=0&1}else g=1;while(0);p=(Xd[c[f+504>>2]&255](f,1935829368,d,0)|0)==0;k=p?0:g;if(k<<24>>24==0?(m=c[B+68>>2]|0,(m|0)!=0):0){g=Pd[m&511](f,d)|0;c[C>>2]=g;g=(g|0)==0;if(p|g^1)A=19}else{g=0;A=19}if((A|0)==19){l=Pd[c[B+24>>2]&511](f,d)|0;c[C>>2]=l;if(l){f=l;i=E;return f|0}}z=f+178|0;if(!(b[z>>1]|0)){c[C>>2]=8;f=8;i=E;return f|0}Pd[c[B+36>>2]&511](f,d)|0;Pd[c[B+32>>2]&511](f,d)|0;Pd[c[B+48>>2]&511](f,d)|0;j=Pd[c[B+44>>2]&511](f,d)|0;c[C>>2]=j;if(!g){l=B+28|0;g=Hd[c[l>>2]&255](f,d,0)|0;c[C>>2]=g;do if(!g){g=Hd[c[B+92>>2]&255](f,d,0)|0;c[C>>2]=g;if((g&255|0)!=142){if(!g){p=k;break}i=E;return g|0}c[C>>2]=147;g=c[(c[h>>2]|0)+48>>2]|0;if(!g){f=147;i=E;return f|0}if(!(c[(c[g>>2]|0)+8>>2]|0)){f=147;i=E;return f|0}else{b[f+250>>1]=0;c[C>>2]=0;p=k;break}}else{if((g&255|0)!=142){f=g;i=E;return f|0}if((c[f+148>>2]|0)==1953658213){c[C>>2]=0;p=0;break}c[C>>2]=143;g=c[(c[h>>2]|0)+48>>2]|0;if(!g){f=143;i=E;return f|0}if(!(c[(c[g>>2]|0)+8>>2]|0)){f=143;i=E;return f|0}else{b[f+250>>1]=0;c[C>>2]=0;p=k;break}}while(0);g=Hd[c[l>>2]&255](f,d,1)|0;c[C>>2]=g;if(!g){g=Hd[c[B+92>>2]&255](f,d,1)|0;c[C>>2]=g;if(!g)a[f+292>>0]=1;else{o=g;A=38}}else{o=g;A=38}if((A|0)==38?!((o|0)==0|(o&255|0)==142):0){f=o;i=E;return f|0}y=Pd[c[B+40>>2]&511](f,d)|0;c[C>>2]=y;if(y)b[f+364>>1]=-1}else p=k;g=c[B+96>>2]|0;do if((g|0)!=0?(r=Pd[g&511](f,d)|0,c[C>>2]=r,(r|0)!=0):0)if((r&255|0)==142){c[C>>2]=0;break}else{f=r;i=E;return f|0}while(0);g=Pd[c[B+64>>2]&511](f,d)|0;c[C>>2]=g;do if(g)if((g&255|0)==142){c[f+544>>2]=0;break}else{f=g;i=E;return f|0}while(0);Pd[c[B+60>>2]&511](f,d)|0;c[C>>2]=Pd[c[B+56>>2]&511](f,d)|0;c[f+16>>2]=e[f+264>>1];l=f+20|0;c[l>>2]=0;k=f+24|0;c[k>>2]=0;y=f+364|0;if((b[y>>1]|0)!=-1?(b[f+428>>1]&256)!=0:0){do if(!(q<<24>>24)){g=ot(f,16,l)|0;c[C>>2]=g;if(!g)if(!(c[l>>2]|0)){A=53;break}else break;else{f=g;i=E;return f|0}}else A=53;while(0);if((A|0)==53?(t=ot(f,1,l)|0,c[C>>2]=t,(t|0)!=0):0){f=t;i=E;return f|0}if(s<<24>>24==0?(u=ot(f,17,k)|0,c[C>>2]=u,(u|0)!=0):0){f=u;i=E;return f|0}if((c[k>>2]|0)==0?(v=ot(f,2,k)|0,c[C>>2]=v,(v|0)!=0):0){f=v;i=E;return f|0}}else{g=ot(f,21,l)|0;c[C>>2]=g;if(g){f=g;i=E;return f|0}g=c[l>>2]|0;do if(!((g|0)!=0|q<<24>>24!=0)){g=ot(f,16,l)|0;c[C>>2]=g;if(!g){g=c[l>>2]|0;break}else{f=g;i=E;return f|0}}while(0);if((g|0)==0?(w=ot(f,1,l)|0,c[C>>2]=w,(w|0)!=0):0){f=w;i=E;return f|0}g=ot(f,22,k)|0;c[C>>2]=g;if(g){f=g;i=E;return f|0}g=c[k>>2]|0;do if(!((g|0)!=0|s<<24>>24!=0)){g=ot(f,17,k)|0;c[C>>2]=g;if(!g){g=c[k>>2]|0;break}else{f=g;i=E;return f|0}}while(0);if((g|0)==0?(x=ot(f,2,k)|0,c[C>>2]=x,(x|0)!=0):0){f=x;i=E;return f|0}}r=f+8|0;l=c[r>>2]|0;p=p<<24>>24==1;l=((c[f+728>>2]&-2|0)==2?l|16384:l)|p&1;g=l|24;if(!j)g=(c[f+464>>2]|0)==196608?g:l|536;g=(c[f+476>>2]|0)==0?g:g|4;d=f+292|0;g=(a[d>>0]|0)==0?g:g|32;g=(c[f+748>>2]|0)==0?g:g|64;x=b[f+152>>1]|0;l=c[f+156>>2]|0;h=l+((x&65535)<<4)|0;c:do if(x<<16>>16){k=l;while(1){if((c[k>>2]|0)==1735162214?(c[k+12>>2]|0)!=0:0)break;k=k+16|0;if(k>>>0>=h>>>0)break c}if(k){k=l;while(1){if((c[k>>2]|0)==1719034226?(c[k+12>>2]|0)!=0:0)break;k=k+16|0;if(k>>>0>=h>>>0)break c}if(k){while(1){if((c[l>>2]|0)==1735811442?(c[l+12>>2]|0)!=0:0)break;l=l+16|0;if(l>>>0>=h>>>0){l=0;break}}g=(l|0)==0?g:g|256}}}while(0);c[r>>2]=g;if(p?(b[y>>1]|0)!=-1:0){x=b[f+428>>1]|0;g=x&65535;g=(x&65535)>>>4&2|((g&512|0)==0?g&1:1)}else{g=b[f+204>>1]|0;g=(g&65535)>>>1&1|(g&1)<<1}c[f+12>>2]=g;pt(f);h=c[f+36>>2]|0;if((h|0)>0){m=c[f+40>>2]|0;o=0;do{n=c[m+(o<<2)>>2]|0;l=e[n+8>>1]|0;k=e[n+10>>1]|0;g=84376;while(1){if((c[g>>2]|0)==(l|0)?(x=c[g+4>>2]|0,(x|0)==(k|0)|(x|0)==-1):0){A=94;break}g=g+12|0;if(g>>>0>=84508>>>0){g=0;break}}if((A|0)==94){A=0;g=c[g+8>>2]|0}c[n+4>>2]=g;o=o+1|0}while((o|0)<(h|0))}q=c[f+732>>2]|0;do if(q){l=c[(c[f+104>>2]|0)+28>>2]|0;g=b[z>>1]|0;if(g<<16>>16!=0?(b[y>>1]|0)!=-1:0)h=b[f+366>>1]|0;else{h=0;g=1}k=Dg(l,16,0,q,0,C)|0;j=f+32|0;c[j>>2]=k;l=c[C>>2]|0;if(l){f=l;i=E;return f|0}o=B+108|0;p=D+20|0;n=h<<16>>16;m=g&65535;h=(g&65535)>>>1&65535;l=0;while(1){g=Hd[c[o>>2]&255](f,l,D)|0;c[C>>2]=g;if(g){A=120;break}b[k+(l<<4)>>1]=(c[p>>2]|0)>>>6;g=c[D>>2]|0;B=g&65535;b[k+(l<<4)+2>>1]=((da(B,n)|0)+h|0)/(m|0)|0;c[k+(l<<4)+8>>2]=B<<6;g=g>>>16<<6;c[k+(l<<4)+12>>2]=g;c[k+(l<<4)+4>>2]=g;g=l+1|0;if(g>>>0>=q>>>0){A=107;break}k=c[j>>2]|0;l=g}if((A|0)==107){g=c[r>>2]|2;c[r>>2]=g;c[f+28>>2]=q;break}else if((A|0)==120){i=E;return g|0}}else g=c[r>>2]|0;while(0);if(!(g&3)){g=g|1;c[r>>2]=g}if(!(g&1)){f=0;i=E;return f|0}c[f+52>>2]=b[f+196>>1];c[f+56>>2]=b[f+198>>1];c[f+60>>2]=b[f+200>>1];c[f+64>>2]=b[f+202>>1];b[f+68>>1]=b[z>>1]|0;C=b[f+220>>1]|0;h=f+70|0;b[h>>1]=C;D=b[f+222>>1]|0;l=f+72|0;b[l>>1]=D;g=(C&65535)-(D&65535)+(e[f+224>>1]|0)|0;m=f+74|0;b[m>>1]=g;do if((C|D)<<16>>16==0?(b[y>>1]|0)!=-1:0){g=b[f+434>>1]|0;k=b[f+436>>1]|0;if(!((g|k)<<16>>16)){D=b[f+440>>1]|0;b[h>>1]=D;g=e[f+442>>1]|0;b[l>>1]=0-g;g=(D&65535)+g|0;b[m>>1]=g;break}else{b[h>>1]=g;b[l>>1]=k;g=(g&65535)-(k&65535)+(e[f+438>>1]|0)|0;b[m>>1]=g;break}}while(0);b[f+76>>1]=b[f+226>>1]|0;if(!(a[d>>0]|0))g=g<<16>>16;else g=e[f+306>>1]|0;b[f+78>>1]=g;D=b[f+474>>1]|0;b[f+80>>1]=(e[f+472>>1]|0)-((D<<16>>16|0)/2|0);b[f+82>>1]=D;f=0;i=E;return f|0}function fp(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;if(!d)return;f=c[d+100>>2]|0;g=d+528|0;h=c[g>>2]|0;i=(h|0)!=0;if(i){e=c[h+80>>2]|0;if(e)Bd[e&511](d);e=c[h+100>>2]|0;if(e)Bd[e&511](d)}if(a[d+776>>0]|0){e=d+756|0;if(c[e>>2]|0)Vh(c[d+104>>2]|0,e);c[d+760>>2]=0;c[d+764>>2]=0;c[d+768>>2]=0}e=d+104|0;Vh(c[e>>2]|0,d+736|0);j=d+740|0;c[j+0>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;j=d+144|0;Ag(f,c[j>>2]|0);c[j>>2]=0;c[d+140>>2]=0;j=d+156|0;Ag(f,c[j>>2]|0);c[j>>2]=0;b[d+152>>1]=0;Vh(c[e>>2]|0,d+496|0);c[d+500>>2]=0;e=c[e>>2]|0;Vh(e,d+676|0);Vh(e,d+684|0);c[d+680>>2]=0;c[d+688>>2]=0;e=d+292|0;if(a[e>>0]|0){j=d+332|0;Ag(f,c[j>>2]|0);c[j>>2]=0;j=d+336|0;Ag(f,c[j>>2]|0);c[j>>2]=0;a[e>>0]=0}j=d+540|0;Ag(f,c[j>>2]|0);c[j>>2]=0;b[d+538>>1]=0;if(i)Bd[c[h+52>>2]&511](d);j=d+20|0;Ag(f,c[j>>2]|0);c[j>>2]=0;j=d+24|0;Ag(f,c[j>>2]|0);c[j>>2]=0;j=d+32|0;Ag(f,c[j>>2]|0);c[j>>2]=0;c[d+28>>2]=0;j=d+660|0;Ag(f,c[j>>2]|0);c[j>>2]=0;c[g>>2]=0;return}function gp(a,b){a=a|0;b=b|0;return Jg(83504,b)|0}function hp(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(d){l=b[a+152>>1]|0;h=c[a+156>>2]|0;j=h+((l&65535)<<4)|0;if(!(l<<16>>16)){l=142;return l|0}while(1){if((c[h>>2]|0)==(d|0)?(i=c[h+12>>2]|0,(i|0)!=0):0)break;h=h+16|0;if(h>>>0>=j>>>0){h=142;k=13;break}}if((k|0)==13)return h|0;if(!h){l=142;return l|0}else{e=(c[h+8>>2]|0)+e|0;break}}else i=c[(c[a+104>>2]|0)+4>>2]|0;while(0);if(g){h=c[g>>2]|0;if(!h){c[g>>2]=i;l=0;return l|0}}else h=i;l=Rh(c[a+104>>2]|0,e,f,h)|0;return l|0}function ip(a,b){a=a|0;b=b|0;var d=0;d=Xd[c[a+504>>2]&255](a,1751474532,b,0)|0;if(d){b=d;return b|0}b=fi(b,83736,a+160|0)|0;return b|0}function jp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+504>>2]|0;do if(!(d<<24>>24)){e=Xd[e&255](a,1751672161,b,0)|0;if(!e){d=a+216|0;break}else{a=e;return a|0}}else{e=Xd[e&255](a,1986553185,b,0)|0;if(!e){d=a+296|0;break}else{a=e;return a|0}}while(0);e=fi(b,84296,d)|0;if(e){a=e;return a|0}c[d+36>>2]=0;c[d+40>>2]=0;a=0;return a|0}function kp(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+500|0;d=Xd[c[a+504>>2]&255](a,1668112752,b,e)|0;if(d){b=d;return b|0}d=Th(b,c[e>>2]|0,a+496|0)|0;if(!d){b=0;return b|0}c[e>>2]=0;b=d;return b|0}function lp(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0;j=a+260|0;f=Xd[c[a+504>>2]&255](a,1835104368,d,0)|0;if(f){d=f;return d|0}f=fi(d,84216,j)|0;if(f){d=f;return d|0}h=a+276|0;i=a+280|0;g=a+290|0;f=a+266|0;a=f+26|0;do{b[f>>1]=0;f=f+2|0}while((f|0)<(a|0));if((c[j>>2]|0)<=65535){d=0;return d|0}f=fi(d,84232,j)|0;if(f){d=f;return d|0}if((e[i>>1]|0)<64)b[i>>1]=64;if((e[h>>1]|0)>65531)b[h>>1]=-5;if((e[g>>1]|0)<=100){d=0;return d|0}b[g>>1]=100;d=0;return d|0}function mp(a,d){a=a|0;d=d|0;var f=0,g=0;f=Xd[c[a+504>>2]&255](a,1330851634,d,0)|0;if(f){a=f;return a|0}g=a+364|0;f=fi(d,83992,g)|0;if(f){a=f;return a|0}a=a+444|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;b[a+16>>1]=0;if(!(b[g>>1]|0)){a=0;return a|0}f=fi(d,84168,g)|0;if(f){a=f;return a|0}if((e[g>>1]|0)<=1){a=0;return a|0}a=fi(d,84184,g)|0;return a|0}function np(a,b){a=a|0;b=b|0;var d=0;d=Xd[c[a+504>>2]&255](a,1886352244,b,0)|0;if(d){b=d;return b|0}b=fi(b,83944,a+464|0)|0;return b|0}function op(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;r=s+4|0;f=s;h=c[d+28>>2]|0;c[a+360>>2]=d;e=Xd[c[a+504>>2]&255](a,1851878757,d,f)|0;c[r>>2]=e;if(e){d=e;i=s;return d|0}n=Qh(d)|0;e=fi(d,83888,a+344|0)|0;c[r>>2]=e;if(e){d=e;i=s;return d|0}q=a+348|0;j=c[q>>2]|0;g=j*12|0;l=n+6+g|0;k=(c[f>>2]|0)+n|0;if(l>>>0>k>>>0){c[r>>2]=145;d=145;i=s;return d|0}c[q>>2]=0;m=a+356|0;c[m>>2]=Dg(h,20,0,j,0,r)|0;e=c[r>>2]|0;if(e){d=e;i=s;return d|0}e=Uh(d,g)|0;c[r>>2]=e;if(e){d=e;i=s;return d|0}e=c[m>>2]|0;if(!j)f=e;else{g=a+352|0;h=j;do{j=fi(d,83912,e)|0;c[r>>2]=j;do if((j|0)==0?(o=e+8|0,p=b[o>>1]|0,p<<16>>16!=0):0){f=e+12|0;j=(c[g>>2]|0)+n+(c[f>>2]|0)|0;c[f>>2]=j;if(j>>>0>=l>>>0?((p&65535)+j|0)>>>0<=k>>>0:0){e=e+20|0;break}c[f>>2]=0;b[o>>1]=0}while(0);h=h+-1|0}while((h|0)!=0);f=c[m>>2]|0}c[q>>2]=(e-f|0)/20|0;Xh(d);b[a+340>>1]=c[q>>2];d=c[r>>2]|0;i=s;return d|0}function pp(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=c[(c[a+96>>2]|0)+8>>2]|0;g=a+356|0;d=c[g>>2]|0;h=a+348|0;e=c[h>>2]|0;if(!d){c[h>>2]=0;h=a+344|0;b[h>>1]=0;a=a+352|0;c[a>>2]=0;return}if(e){while(1){i=d+16|0;Ag(f,c[i>>2]|0);c[i>>2]=0;b[d+8>>1]=0;e=e+-1|0;if(!e)break;else d=d+20|0}d=c[g>>2]|0}Ag(f,d);c[g>>2]=0;c[h>>2]=0;i=a+344|0;b[i>>1]=0;i=a+352|0;c[i>>2]=0;return}function qp(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;g=p;e=Xd[c[a+504>>2]&255](a,1801810542,b,g)|0;if(e){a=e;i=p;return a|0}e=c[g>>2]|0;if(e>>>0<4){a=142;i=p;return a|0}f=a+736|0;e=Th(b,e,f)|0;if(e){a=e;i=p;return a|0}o=c[g>>2]|0;c[a+740>>2]=o;b=c[f>>2]|0;o=b+o|0;n=(d[b+2>>0]|0)<<8|(d[b+3>>0]|0);n=n>>>0>32?32:n;a:do if(!n){g=0;f=0;e=0}else{g=0;f=0;e=0;m=b+4|0;do{l=1<>>0>o>>>0)break a;b=(d[m+2>>0]|0)<<8|(d[m+3>>0]|0);if(b>>>0<7)break a;j=m+b|0;k=m;m=j>>>0>o>>>0?o:j;j=k+14|0;b:do if(!(j>>>0>o>>>0?1:((d[k+4>>0]|0)<<8|(d[k+5>>0]|0)&247|0)!=1)){b=(d[h>>0]|0)<<8|(d[k+7>>0]|0);h=m-j|0;if((h|0)<(b*6|0))b=(h|0)/6|0;g=l|g;if(b){b=b+-1|0;if(b){j=(d[k+15>>0]|0)<<16|(d[j>>0]|0)<<24|(d[k+16>>0]|0)<<8|(d[k+17>>0]|0);h=k+20|0;while(1){k=j;j=(d[h+1>>0]|0)<<16|(d[h>>0]|0)<<24|(d[h+2>>0]|0)<<8|(d[h+3>>0]|0);if(j>>>0<=k>>>0)break b;b=b+-1|0;if(!b)break;else h=h+6|0}}e=l|e}}while(0);f=f+1|0}while(f>>>0>>0)}while(0);c[a+744>>2]=f;c[a+748>>2]=g;c[a+752>>2]=e;a=0;i=p;return a|0}function rp(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;g=c[d+28>>2]|0;f=Xd[c[a+504>>2]&255](a,1734439792,d,0)|0;c[k>>2]=f;if(f){d=f;i=l;return d|0}f=Uh(d,4)|0;c[k>>2]=f;if(f){d=f;i=l;return d|0}j=a+536|0;b[j>>1]=Zh(d)|0;f=a+538|0;b[f>>1]=Zh(d)|0;Xh(d);if((e[j>>1]|0)>1){b[f>>1]=0;c[k>>2]=8;d=8;i=l;return d|0}h=b[f>>1]|0;j=h&65535;a=a+540|0;c[a>>2]=Dg(g,4,0,j,0,k)|0;f=c[k>>2]|0;if(f){d=f;i=l;return d|0}f=Uh(d,j<<2)|0;c[k>>2]=f;if(f){d=f;i=l;return d|0}a=c[a>>2]|0;if(h<<16>>16){f=0;do{b[a+(f<<2)>>1]=Zh(d)|0;b[a+(f<<2)+2>>1]=Zh(d)|0;f=f+1|0}while((f|0)!=(j|0))}Xh(d);d=c[k>>2]|0;i=l;return d|0}function sp(a,b){a=a|0;b=b|0;var d=0;d=Xd[c[a+504>>2]&255](a,1346587732,b,0)|0;if(d){b=d;return b|0}b=fi(b,83824,a+544|0)|0;return b|0}function tp(a,b){a=a|0;b=b|0;var d=0;d=Xd[c[a+504>>2]&255](a,1651008868,b,0)|0;if(d){b=d;return b|0}b=fi(b,83736,a+160|0)|0;return b|0}function up(e,f,g,h,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+80|0;t=w+72|0;o=w;s=w+4|0;v=w+48|0;p=c[e+728>>2]|0;a:do if((p|0)==3){b[l+2>>1]=0;b[l>>1]=0;m=c[e+720>>2]|0;l=f<<2;l=d[m+(l+9)>>0]<<16|d[m+(l+8)>>0]<<24|d[m+(l+10)>>0]<<8|d[m+(l+11)>>0];m=Xd[c[e+504>>2]&255](e,1935829368,j,t)|0;if(!m){m=Qh(j)|0;f=e+16|0;if((c[f>>2]|0)>>>0>>0)m=6;else{o=m+l|0;s=o+4|0;m=g;r=0;while(1){p=c[t>>2]|0;if(p>>>0<=l>>>0){m=3;break a}m=m<<2;if((p-l|0)>>>0<(m+12|0)>>>0){m=3;break a}m=bh(j,s+m|0)|0;if(m)break a;m=Uh(j,8)|0;if(m)break a;m=$h(j)|0;p=$h(j)|0;Xh(j);if((p|0)==(m|0)){m=6;break a}if(p>>>0>>0){m=3;break a}n=p-m|0;if(n>>>0<8){m=3;break a}if(((c[t>>2]|0)-l|0)>>>0

>>0){m=3;break a}m=bh(j,m+o|0)|0;if(m)break a;m=Uh(j,n)|0;if(m)break a;Zh(j)|0;Zh(j)|0;m=$h(j)|0;if((m|0)==1785751328|(m|0)==1953064550){m=2;break}else if((m|0)!=1685418085){m=7;u=25;break}if((r|0)>=4){m=3;u=25;break}m=(Zh(j)|0)&65535;Xh(j);if(m>>>0>(c[f>>2]|0)>>>0){m=6;break a}else r=r+1|0}Xh(j)}}}else if((p|0)==2|(p|0)==1){p=c[e+104>>2]|0;n=e+504|0;if(((Xd[c[n>>2]&255](e,1128416340,p,o)|0)!=0?(Xd[c[n>>2]&255](e,1161970772,p,o)|0)!=0:0)?(m=Xd[c[n>>2]&255](e,1650745716,p,o)|0,(m|0)!=0):0)break;c[s>>2]=e;c[s+4>>2]=p;c[s+8>>2]=(c[e+84>>2]|0)+76;c[s+12>>2]=l;a[s+16>>0]=0;a[s+17>>0]=0;c[s+20>>2]=Qh(p)|0;c[s+24>>2]=c[o>>2];p=c[e+720>>2]|0;c[s+36>>2]=p;n=c[e+724>>2]|0;c[s+40>>2]=p+n;m=f*48|0;if((((m|8)+47|0)>>>0<=n>>>0?(u=m|12,q=d[p+(u+-3)>>0]<<16|d[p+(u+-4)>>0]<<24|d[p+(u+-2)>>0]<<8|d[p+(u+-1)>>0],c[s+28>>2]=q,r=d[p+(u+5)>>0]<<16|d[p+(u+4)>>0]<<24|d[p+(u+6)>>0]<<8|d[p+(u+7)>>0],c[s+32>>2]=r,a[s+18>>0]=a[p+(u+42)>>0]|0,q>>>0<=n>>>0):0)?((r<<3)+q|0)>>>0<=n>>>0:0)m=qt(s,g,0,0)|0;else m=3}else{v=2;i=w;return v|0}while(0);if(m|h&1048576){v=m;i=w;return v|0}p=k+18|0;if((a[p>>0]|0)!=7){v=m;i=w;return v|0}m=e+84|0;n=c[c[m>>2]>>2]|0;ri(v);o=ti(n,k,v,1)|0;if(!o){a[p>>0]=a[v+18>>0]|0;c[k+8>>2]=c[v+8>>2];b[k+16>>1]=b[v+16>>1]|0;Rg(c[m>>2]|0,c[v+12>>2]|0);v=(c[(c[m>>2]|0)+156>>2]|0)+4|0;c[v>>2]=c[v>>2]|1;v=0;i=w;return v|0}else{ui(n,v)|0;v=o;i=w;return v|0}return 0}function vp(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0;if(!d){d=35;return d|0}if((e[d+264>>1]|0)>>>0<=f>>>0){d=16;return d|0}h=c[d+532>>2]|0;if(!h){d=7;return d|0}i=d+608|0;j=h+16|0;c[g>>2]=Ed[c[j>>2]&511](0)|0;h=c[d+464>>2]|0;if((h|0)==163840){if((a[i>>0]|0)==0?(rt(d)|0)!=0:0){d=0;return d|0}if((e[d+612>>1]|0)>>>0<=f>>>0){d=0;return d|0}c[g>>2]=Ed[c[j>>2]&511]((a[(c[d+616>>2]|0)+f>>0]|0)+f|0)|0;d=0;return d|0}else if((h|0)==131072){if((a[i>>0]|0)==0?(rt(d)|0)!=0:0){d=0;return d|0}if((e[d+612>>1]|0)>>>0<=f>>>0){d=0;return d|0}f=b[(c[d+616>>2]|0)+(f<<1)>>1]|0;h=f&65535;if((f&65535)<258){c[g>>2]=Ed[c[j>>2]&511](h)|0;d=0;return d|0}else{c[g>>2]=c[(c[d+620>>2]|0)+(h+-258<<2)>>2];d=0;return d|0}}else if((h|0)==65536){if(f>>>0>=258){d=0;return d|0}c[g>>2]=Ed[c[j>>2]&511](f)|0;d=0;return d|0}else{d=0;return d|0}return 0}function wp(d){d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=c[d+100>>2]|0;k=d+608|0;if(!(a[k>>0]|0)){a[k>>0]=0;return}f=c[d+464>>2]|0;if((f|0)==131072){i=d+616|0;Ag(j,c[i>>2]|0);c[i>>2]=0;b[d+612>>1]=0;i=d+614|0;h=d+620|0;f=c[h>>2]|0;if(b[i>>1]|0){g=0;d=0;while(1){Ag(j,c[f+(g<<2)>>2]|0);c[(c[h>>2]|0)+(g<<2)>>2]=0;d=d+1<<16>>16;f=c[h>>2]|0;if((d&65535)<(e[i>>1]|0))g=d&65535;else break}}Ag(j,f);c[h>>2]=0;b[i>>1]=0;a[k>>0]=0;return}else if((f|0)==163840){i=d+616|0;Ag(j,c[i>>2]|0);c[i>>2]=0;b[d+612>>1]=0;a[k>>0]=0;return}else{a[k>>0]=0;return}}function xp(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;h=c[b+736>>2]|0;q=c[b+740>>2]|0;r=h+q|0;g=c[b+744>>2]|0;if((g|0)==0|(q|0)<10){r=0;return r|0}q=c[b+748>>2]|0;p=e<<16|f;o=b+752|0;b=h+10|0;n=1;m=h+4|0;e=0;while(1){i=a[m+4>>0]|0;l=a[m+5>>0]|0;f=m+((d[m+2>>0]|0)<<8|(d[m+3>>0]|0))|0;k=m;m=f>>>0>r>>>0?r:f;f=k+14|0;a:do if(!((q&n|0)==0|f>>>0>m>>>0)){b=(d[b>>0]|0)<<8|(d[k+7>>0]|0);h=m-f|0;if((h|0)<(b*6|0))b=(h|0)/6|0;if(!(i<<24>>24)){h=(b|0)==0;if(!(c[o>>2]&n)){if(h)break;while(1){if(((d[f+1>>0]|0)<<16|(d[f>>0]|0)<<24|(d[f+2>>0]|0)<<8|(d[f+3>>0]|0)|0)==(p|0))break;b=b+-1|0;if(!b)break a;else f=f+6|0}f=(d[f+4>>0]|0)<<8|(d[f+5>>0]|0)}else{if(h)break;else j=0;while(1){h=(b+j|0)>>>1;f=h*6|0;i=(d[k+(f+15)>>0]|0)<<16|(d[k+(f+14)>>0]|0)<<24|(d[k+(f+16)>>0]|0)<<8|(d[k+(f+17)>>0]|0);if((i|0)==(p|0))break;i=i>>>0

>>0;j=i?h+1|0:j;b=i?b:h;if(j>>>0>=b>>>0)break a}f=(d[k+(f+18)>>0]|0)<<8|(d[k+(f+19)>>0]|0)}e=(f<<16>>16)+((l&8)==0?e:0)|0}}while(0);g=g+-1|0;b=m+6|0;if((g|0)==0|b>>>0>r>>>0)break;else n=n<<1}return e|0}function yp(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+48|0;v=B+36|0;t=B;x=B+16|0;A=B+32|0;y=c[d+28>>2]|0;z=x+12|0;c[z>>2]=Qh(d)|0;c[x>>2]=Ph(d,A)|0;f=c[A>>2]|0;if(f){A=f;i=B;return A|0}f=fi(d,83688,x)|0;c[A>>2]=f;if(f){A=f;i=B;return A|0}a:do if((c[x>>2]|0)==1330926671){j=b[x+4>>1]|0;f=1330926671}else{j=c[z>>2]|0;f=bh(d,j+12|0)|0;c[v>>2]=f;b:do if(!f){u=x+4|0;if(b[u>>1]|0){p=t+8|0;q=t+12|0;r=d+4|0;o=j+28|0;n=0;h=0;l=0;s=0;g=0;j=0;c:while(1){m=fi(d,83712,t)|0;c[v>>2]=m;if(m){f=s;w=10;break}f=c[p>>2]|0;k=c[q>>2]|0;do if((k+f|0)>>>0<=(c[r>>2]|0)>>>0){j=j+1<<16>>16;m=c[t>>2]|0;if((m|0)==1397313095){f=1;break}else if(!((m|0)==1651008868|(m|0)==1751474532)){l=(m|0)==1296389185?1:l;f=s;break}if(k>>>0<54){w=14;break c}f=bh(d,f+12|0)|0;c[v>>2]=f;if(f)break b;Ph(d,v)|0;f=c[v>>2]|0;if(f)break b;f=bh(d,o+(n<<4)|0)|0;c[v>>2]=f;if(!f){h=1;f=s}else break b}else f=s;while(0);g=g+1<<16>>16;if((g&65535)<(e[u>>1]|0)){n=g&65535;s=f}else{g=l;break}}if((w|0)==10){b[u>>1]=g+-1<<16>>16;g=l}else if((w|0)==14){c[v>>2]=142;f=142;break}b[u>>1]=j;if(j<<16>>16){if((h|0)==0?!((f|0)!=0&(g|0)!=0):0){c[v>>2]=142;f=142;break}c[A>>2]=0;f=c[x>>2]|0;break a}}else b[u>>1]=0;c[v>>2]=2;f=2}while(0);c[A>>2]=f;A=f;i=B;return A|0}while(0);l=x+4|0;g=a+152|0;b[g>>1]=j;c[a+148>>2]=f;h=a+156|0;c[h>>2]=Dg(y,16,0,j&65535,0,A)|0;f=c[A>>2]|0;if(f){A=f;i=B;return A|0}f=bh(d,(c[z>>2]|0)+12|0)|0;c[A>>2]=f;if(f){A=f;i=B;return A|0}f=Uh(d,e[g>>1]<<4)|0;c[A>>2]=f;if(f){A=f;i=B;return A|0}if(b[l>>1]|0){k=d+4|0;h=c[h>>2]|0;j=0;while(1){c[h>>2]=$h(d)|0;c[h+4>>2]=$h(d)|0;f=h+8|0;c[f>>2]=$h(d)|0;g=$h(d)|0;c[h+12>>2]=g;j=j+1|0;if((j|0)>=(e[l>>1]|0))break;else h=((c[f>>2]|0)+g|0)>>>0>(c[k>>2]|0)>>>0?h:h+16|0}}Xh(d);A=c[A>>2]|0;i=B;return A|0}function zp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(!(d<<24>>24)){e=a+780|0;f=a+680|0;d=1752003704}else{e=a+784|0;f=a+688|0;d=1986884728}d=Xd[c[a+504>>2]&255](a,d,b,g)|0;if(d){i=h;return d|0}c[f>>2]=c[g>>2];c[e>>2]=Qh(b)|0;i=h;return d|0}function Ap(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;g=m;h=a+720|0;j=a+724|0;k=a+728|0;l=a+732|0;e=a+504|0;c[h+0>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;do if(!(Xd[c[e>>2]&255](a,1128418371,b,g)|0)){c[k>>2]=2;a=2;f=8}else{if((Xd[c[e>>2]&255](a,1161972803,b,g)|0)!=0?(Xd[c[e>>2]&255](a,1651273571,b,g)|0)!=0:0){e=Xd[c[e>>2]&255](a,1935829368,b,g)|0;if(e)break;c[k>>2]=3;a=3;f=8;break}c[k>>2]=1;a=1;f=8}while(0);do if((f|0)==8){e=c[g>>2]|0;if(e>>>0>=8)if((a|0)==2|(a|0)==1){e=Th(b,e,h)|0;if(e)break;a=c[g>>2]|0;c[j>>2]=a;f=c[h>>2]|0;e=(d[f+5>>0]|0)<<16|(d[f+4>>0]|0)<<24|(d[f+6>>0]|0)<<8|(d[f+7>>0]|0);if(((d[f+1>>0]|0)<<16|(d[f>>0]|0)<<24|0)!=131072){e=2;break}if(e>>>0>65535){e=3;break}if((e*48|8)>>>0>a>>>0)e=((a+-8|0)>>>0)/48|0;c[l>>2]=e;k=0;i=m;return k|0}else if((a|0)==3){e=Uh(b,8)|0;if(e)break;f=Zh(b)|0;e=Zh(b)|0;a=$h(b)|0;Xh(b);if(!(f<<16>>16)){e=2;break}if(e<<16>>16!=1|a>>>0>65535){e=3;break}e=c[g>>2]|0;if(((a<<2)+8|0)>>>0>e>>>0)a=(e+-8|0)>>>2;e=bh(b,(Qh(b)|0)+-8|0)|0;if(e)break;e=(a<<2)+8|0;c[j>>2]=e;e=Th(b,e,h)|0;if(e)break;c[l>>2]=a;k=0;i=m;return k|0}else{k=0;i=m;return k|0}else e=3}while(0);if(c[h>>2]|0)Vh(b,h);c[j>>2]=0;c[k>>2]=0;k=e;i=m;return k|0}function Bp(a){a=a|0;Vh(c[a+104>>2]|0,a+720|0);c[a+724>>2]=0;c[a+728>>2]=0;c[a+732>>2]=0;return}function Cp(a,b,c){a=a|0;b=b|0;c=c|0;return gh(a,b,0,c)|0}function Dp(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;m=i;i=i+16|0;k=m;if((c[f+732>>2]|0)>>>0<=g>>>0){h=6;i=m;return h|0}j=c[f+728>>2]|0;if((j|0)==2|(j|0)==1){k=c[f+720>>2]|0;f=g*48|8;b[h>>1]=d[k+(f+44)>>0]|0;b[h+2>>1]=d[k+(f+45)>>0]|0;g=a[k+(f+16)>>0]<<6;c[h+12>>2]=g;l=a[k+(f+17)>>0]<<6;c[h+16>>2]=l;c[h+20>>2]=g-l;c[h+24>>2]=(d[k+(f+18)>>0]|0)+(a[k+(f+22)>>0]|0)+(a[k+(f+23)>>0]|0)<<6;h=0;i=m;return h|0}else if((j|0)==3){l=c[f+104>>2]|0;n=c[f+720>>2]|0;j=g<<2;j=d[n+(j+9)>>0]<<16|d[n+(j+8)>>0]<<24|d[n+(j+10)>>0]<<8|d[n+(j+11)>>0];g=Xd[c[f+504>>2]&255](f,1935829368,l,k)|0;if(g){h=g;i=m;return h|0}if((j+4|0)>>>0>(c[k>>2]|0)>>>0){h=3;i=m;return h|0}j=bh(l,(Qh(l)|0)+j|0)|0;if(j){h=j;i=m;return h|0}j=Uh(l,4)|0;if(j){h=j;i=m;return h|0}n=Zh(l)|0;Zh(l)|0;Xh(l);k=e[f+178>>1]|0;b[h>>1]=n;b[h+2>>1]=n;g=b[f+220>>1]|0;n=(n&65535)<<6;c[h+12>>2]=((da(n,g)|0)>>>0)/(k>>>0)|0;l=b[f+222>>1]|0;c[h+16>>2]=((da(n,l)|0)>>>0)/(k>>>0)|0;c[h+20>>2]=((da(n,g-l+(b[f+224>>1]|0)|0)|0)>>>0)/(k>>>0)|0;c[h+24>>2]=((da(n,e[f+226>>1]|0)|0)>>>0)/(k>>>0)|0;h=0;i=m;return h|0}else{h=2;i=m;return h|0}return 0}function Ep(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;l=c[a+104>>2]|0;if(!(d<<24>>24)){h=a+216|0;d=a+780|0;a=a+680|0}else{h=a+296|0;d=a+784|0;a=a+688|0}j=c[d>>2]|0;k=(c[a>>2]|0)+j|0;h=b[h+34>>1]|0;d=h&65535;do if(h<<16>>16){if(d>>>0>e>>>0){d=j+(e<<2)|0;if((d+4|0)>>>0>k>>>0)break;k=bh(l,d)|0;c[m>>2]=k;if(k)break;b[g>>1]=Nh(l,m)|0;if(c[m>>2]|0)break;b[f>>1]=Nh(l,m)|0;if(c[m>>2]|0)break;i=n;return 0}h=d<<2;a=j+-4+h|0;if(((h+j|0)>>>0<=k>>>0?(h=bh(l,a)|0,c[m>>2]=h,(h|0)==0):0)?(b[g>>1]=Nh(l,m)|0,(c[m>>2]|0)==0):0){d=(e-d<<1)+4+a|0;if((d+2|0)>>>0>k>>>0){b[f>>1]=0;i=n;return 0}g=bh(l,d)|0;c[m>>2]=g;if(g){i=n;return 0}b[f>>1]=Nh(l,m)|0;i=n;return 0}}while(0);b[f>>1]=0;b[g>>1]=0;i=n;return 0}function Fp(d,e){d=d|0;e=e|0;switch(e|0){case 0:{d=d+160|0;break}case 3:{d=d+216|0;break}case 4:{if(!(a[d+292>>0]|0))d=0;else d=d+296|0;break}case 5:{d=d+464|0;break}case 2:{d=d+364|0;d=(b[d>>1]|0)==-1?0:d;break}case 6:{d=d+544|0;d=(c[d>>2]|0)==0?0:d;break}case 1:{d=d+260|0;break}default:d=0}return d|0}function Gp(a,b,d,f,g){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;var h=0;if(!((f|0)!=0&(g|0)!=0)){g=6;return g|0}h=e[a+152>>1]|0;do if(d)if(h>>>0>b>>>0){h=c[a+156>>2]|0;c[d>>2]=c[h+(b<<4)>>2];c[f>>2]=c[h+(b<<4)+8>>2];h=c[h+(b<<4)+12>>2]|0;break}else{g=142;return g|0}while(0);c[g>>2]=h;g=0;return g|0}function Hp(d){d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;p=s+4|0;o=s;r=d+660|0;f=c[r>>2]|0;if(f){r=f;i=s;return r|0}f=b[d+340>>1]|0;do if(f<<16>>16){l=c[d+356>>2]|0;h=f&65535;g=-1;j=-1;n=0;while(1){do if((b[l+(n*20|0)+6>>1]|0)==6?(b[l+(n*20|0)+8>>1]|0)!=0:0){f=b[l+(n*20|0)>>1]|0;if(f<<16>>16==3){if((b[l+(n*20|0)+2>>1]|0)!=1){f=g;break}j=(b[l+(n*20|0)+4>>1]|0)==1033?n:j}if(f<<16>>16==1?(b[l+(n*20|0)+2>>1]|0)==0:0)f=(b[l+(n*20|0)+4>>1]|0)==0?n:g;else f=g}else f=g;while(0);n=n+1|0;if((n|0)>=(h|0)){n=f;break}else g=f}if((j|0)==-1){if((n|0)==-1){f=0;break}h=c[d+100>>2]|0;k=c[d+356>>2]|0;l=k+(n*20|0)+8|0;m=e[l>>1]|0;c[o>>2]=0;f=yg(h,m+1|0,o)|0;if(c[o>>2]|0)break;j=c[d+360>>2]|0;g=k+(n*20|0)+12|0;q=bh(j,c[g>>2]|0)|0;c[o>>2]=q;if((q|0)==0?(q=Lh(j,f,m)|0,c[o>>2]=q,(q|0)==0):0){a[f+m>>0]=0;break}c[g>>2]=0;b[l>>1]=0;q=k+(n*20|0)+16|0;Ag(h,c[q>>2]|0);c[q>>2]=0;Ag(h,f);f=0;break}k=c[d+100>>2]|0;g=c[d+356>>2]|0;m=g+(j*20|0)+8|0;f=b[m>>1]|0;n=(f&65535)>>>1;h=n&65535;c[p>>2]=0;f=yg(k,(f&65535)+1|0,p)|0;if(!(c[p>>2]|0)){o=c[d+360>>2]|0;l=g+(j*20|0)+16|0;j=g+(j*20|0)+12|0;d=bh(o,c[j>>2]|0)|0;c[p>>2]=d;if((d|0)==0?(d=Uh(o,e[m>>1]|0)|0,c[p>>2]=d,(d|0)==0):0){if(!(n<<16>>16))g=f;else{j=c[o+32>>2]|0;g=f;while(1){if((a[j>>0]|0)==0?(q=a[j+1>>0]|0,(q&255)>31&q<<24>>24>-1):0){a[g>>0]=q;g=g+1|0}h=h+-1|0;if(!h)break;else j=j+2|0}}a[g>>0]=0;Xh(o);break}Ag(k,f);b[m>>1]=0;c[j>>2]=0;Ag(k,c[l>>2]|0);c[l>>2]=0;f=0}}else f=0;while(0);c[r>>2]=f;r=f;i=s;return r|0}function Ip(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g;a=vp(a,b,f)|0;if(a){i=g;return a|0}pi(d,c[f>>2]|0,e)|0;i=g;return a|0}function Jp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g;e=c[a+16>>2]|0;a:do if((e|0)<1)d=0;else{d=0;while(1){if((vp(a,d,f)|0)==0?(gfa(b,c[f>>2]|0)|0)==0:0)break a;d=d+1|0;if(d>>>0>=e>>>0){d=0;break}}}while(0);i=g;return d|0}function Kp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;f=h+8|0;g=h;e=Lp(a,83640,g)|0;if(!e){e=Lp(a,83664,f)|0;if(!e)if((c[g>>2]|0)==1?(c[f>>2]|0)==1:0){c[b>>2]=c[f+4>>2];c[d>>2]=c[g+4>>2];e=0}else e=6}i=h;return e|0}function Lp(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;t=c[f+88>>2]|0;c[h>>2]=0;q=f+776|0;do if(!(a[q>>0]|0)){r=c[f+104>>2]|0;s=f+756|0;c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=0;p=b[f+152>>1]|0;i=c[f+156>>2]|0;n=i+((p&65535)<<4)|0;if(!(p<<16>>16)){g=8;return g|0}while(1){if((c[i>>2]|0)==1111770656?(l=c[i+12>>2]|0,(l|0)!=0):0){o=l;m=i;break}i=i+16|0;if(i>>>0>=n>>>0){E=8;u=36;break}}if((u|0)==36)return E|0;if(!m){g=8;return g|0}if((bh(r,c[m+8>>2]|0)|0)!=0|o>>>0<8){g=8;return g|0}if(Th(r,o,s)|0){g=8;return g|0}l=c[s>>2]|0;c[f+760>>2]=l+o;i=d[l+2>>0]<<8|d[l+3>>0];n=d[l+5>>0]<<16|d[l+4>>0]<<24|d[l+6>>0]<<8|d[l+7>>0];if(!(n>>>0<8?1:(d[l>>0]<<8|d[l+1>>0]|0)!=1)?!((n+-8|0)>>>2>>>0>>0|(n+1|0)>>>0>o>>>0):0){c[f+772>>2]=i;p=l+n|0;c[f+764>>2]=p;c[f+768>>2]=o-n;n=l+((i<<2)+8)|0;if(i){m=i;o=l+8|0;while(1){n=n+((d[o+2>>0]<<8|d[o+3>>0])*10|0)|0;m=m+-1|0;if(!m)break;else o=o+4|0}}if(n>>>0<=p>>>0){a[q>>0]=1;break}}Vh(r,s);c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=0;g=8;return g|0}else{l=c[f+756>>2]|0;i=c[f+772>>2]|0}while(0);if((t|0)==0|(g|0)==0){g=6;return g|0}p=tfa(g|0)|0;if(!((p|0)!=0&(i|0)!=0)){g=6;return g|0}m=e[t+14>>1]|0;n=i;o=l+8|0;l=l+((i<<2)+8)|0;while(1){i=d[o+2>>0]<<8|d[o+3>>0];if((d[o>>0]<<8|d[o+1>>0]|0)==(m|0)){k=i;j=l;break}n=n+-1|0;if(!n){E=6;u=36;break}else{o=o+4|0;l=l+(i*10|0)|0}}if((u|0)==36)return E|0;if(!k){g=6;return g|0}m=f+768|0;l=f+764|0;a:while(1){i=d[j+5>>0]|0;do if((((i&16|0)!=0?(y=d[j+1>>0]<<16|d[j>>0]<<24|d[j+2>>0]<<8|d[j+3>>0],z=d[j+7>>0]<<16|d[j+6>>0]<<24|d[j+8>>0]<<8|d[j+9>>0],A=c[m>>2]|0,A>>>0>y>>>0):0)?(B=A-y|0,p>>>0>>0):0)?(C=c[l>>2]|0,(hfa(g,C+y|0,B)|0)==0):0){i=i&15;if((i|0)==3){w=z;u=34;break a}else if((i|0)==2){v=z;u=33;break a}else if(!((i|0)==1|(i|0)==0))break;if(z>>>0>>0?(D=C+z|0,(efa(D,0,A)|0)!=0):0){x=D;u=32;break a}}while(0);k=k+-1|0;if(!k){E=6;u=36;break}else j=j+10|0}if((u|0)==32){c[h>>2]=1;c[h+4>>2]=x;g=0;return g|0}else if((u|0)==33){c[h>>2]=2;c[h+4>>2]=v;g=0;return g|0}else if((u|0)==34){c[h>>2]=3;c[h+4>>2]=w;g=0;return g|0}else if((u|0)==36)return E|0;return 0}function Mp(a,b){a=a|0;b=b|0;return Pd[c[(c[a+12>>2]|0)+48>>2]&511](a,b)|0}function Np(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;c[b>>2]=0;d=yg(a,20,e)|0;e=c[e>>2]|0;if(e){i=f;return e|0}c[d+12>>2]=a;c[b>>2]=d;i=f;return e|0}function Op(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)return;if((b|0)!=0&(d|0)>3475){c[a+16>>2]=b;c[a>>2]=b+1440;d=d+-1440|0;c[a+4>>2]=d&-16;c[a+8>>2]=d>>>7;return}else{c[a>>2]=0;c[a+4>>2]=0;c[a+16>>2]=0;return}}function Pp(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=i;i=i+352|0;G=N+24|0;F=N;K=N+4|0;L=N+8|0;J=N+12|0;H=N+16|0;I=N+20|0;l=c[d+4>>2]|0;m=c[d>>2]|0;if(!a){M=6;i=N;return M|0}h=c[a>>2]|0;if(!h){M=6;i=N;return M|0}j=a+4|0;k=c[j>>2]|0;if(!k){M=6;i=N;return M|0}if(!l){M=20;i=N;return M|0}e=b[l+2>>1]|0;if(!(e<<16>>16)){M=0;i=N;return M|0}f=b[l>>1]|0;if(f<<16>>16<1){M=0;i=N;return M|0}g=c[l+12>>2]|0;if(!g){M=20;i=N;return M|0}if(!(c[l+4>>2]|0)){M=20;i=N;return M|0}if((e<<16>>16|0)!=((b[g+((f<<16>>16)+-1<<1)>>1]|0)+1|0)){M=20;i=N;return M|0}E=c[a+16>>2]|0;g=d+8|0;f=c[g>>2]|0;e=(f&2|0)==0;if(e){if(!m){M=6;i=N;return M|0}if(!(c[m+4>>2]|0)){M=0;i=N;return M|0}if(!(c[m>>2]|0)){M=0;i=N;return M|0}if(!(c[m+12>>2]|0)){M=6;i=N;return M|0}}if(!(f&1)){M=19;i=N;return M|0}do if(!e){e=E+1024|0;if(!(f&4)){c[e>>2]=-32768;c[E+1028>>2]=-32768;c[E+1032>>2]=32767;c[E+1036>>2]=32767;f=h;e=k;break}else{f=d+32|0;c[e+0>>2]=c[f+0>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=c[a>>2]|0;e=c[j>>2]|0;break}}else{c[E+1024>>2]=0;c[E+1028>>2]=0;c[E+1032>>2]=c[m+4>>2];c[E+1036>>2]=c[m>>2];f=h;e=k}while(0);C=E+1412|0;c[C>>2]=f;D=E+1416|0;c[D>>2]=e;B=E+1420|0;c[B>>2]=f;x=E+44|0;c[x>>2]=0;y=E+48|0;c[y>>2]=0;z=E+52|0;c[z>>2]=0;c[E+32>>2]=0;c[E+36>>2]=0;A=E+40|0;c[A>>2]=1;r=E+980|0;c[r+0>>2]=c[l+0>>2];c[r+4>>2]=c[l+4>>2];c[r+8>>2]=c[l+8>>2];c[r+12>>2]=c[l+12>>2];c[r+16>>2]=c[l+16>>2];c[z>>2]=0;c[A>>2]=1;r=c[a+8>>2]|0;w=E+1248|0;c[w>>2]=r;v=E+1232|0;c[v>>2]=0;if(!(c[g>>2]&2)){e=E+1e3|0;c[e+0>>2]=c[m+0>>2];c[e+4>>2]=c[m+4>>2];c[e+8>>2]=c[m+8>>2];c[e+12>>2]=c[m+12>>2];c[e+16>>2]=c[m+16>>2];c[e+20>>2]=c[m+20>>2];c[E+1236>>2]=20;e=E}else{c[E+1236>>2]=c[d+12>>2];e=c[d+28>>2]|0}u=E+1240|0;c[u>>2]=e;m=c[E+984>>2]|0;e=b[E+982>>1]|0;n=m+(e<<16>>16<<3)|0;if(e<<16>>16<1){a=E+8|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;a=E+12|0;h=0;g=0;e=0;j=0}else{h=c[m>>2]|0;a=E+12|0;c[a>>2]=h;q=E+8|0;c[q>>2]=h;k=c[m+4>>2]|0;o=E+20|0;c[o>>2]=k;p=E+16|0;c[p>>2]=k;if(e<<16>>16>1){d=m;g=h;f=k;j=k;l=m+8|0;while(1){k=c[d+8>>2]|0;e=c[d+12>>2]|0;if((k|0)<(g|0)){c[q>>2]=k;g=k}if((k|0)>(h|0)){c[a>>2]=k;h=k}if((e|0)<(f|0)){c[p>>2]=e;f=e}if((e|0)>(j|0))c[o>>2]=e;else e=j;m=d+16|0;if(m>>>0>>0){d=l;j=e;l=m}else break}}else{g=h;f=k;e=k}g=g>>6;c[q>>2]=g;j=f>>6;c[p>>2]=j;h=h+63>>6;c[a>>2]=h;e=e+63>>6;c[o>>2]=e}f=c[E+1024>>2]|0;if((h|0)<=(f|0)){M=0;i=N;return M|0}l=c[E+1032>>2]|0;if((g|0)>=(l|0)){M=0;i=N;return M|0}s=E+20|0;k=c[E+1028>>2]|0;if((e|0)<=(k|0)){M=0;i=N;return M|0}t=E+16|0;m=c[E+1036>>2]|0;if((j|0)>=(m|0)){M=0;i=N;return M|0}if((g|0)<(f|0))c[E+8>>2]=f;else f=g;if((j|0)<(k|0))c[t>>2]=k;else k=j;if((h|0)>(l|0)){c[a>>2]=l;h=l}if((e|0)>(m|0)){c[s>>2]=m;e=m}q=E+24|0;c[q>>2]=h-f;o=e-k|0;p=E+28|0;c[p>>2]=o;c[L>>2]=(o|0)/(r|0)|0;if(!(c[L>>2]|0))c[L>>2]=1;if((c[L>>2]|0)>38)c[L>>2]=39;k=E+1252|0;c[k>>2]=0;c[J>>2]=c[t>>2];c[I>>2]=c[s>>2];c[K>>2]=0;a:do if((c[K>>2]|0)<(c[L>>2]|0)){j=G+4|0;l=E+1424|0;d=E+1236|0;n=E+1244|0;o=E+1040|0;b:while(1){c[H>>2]=(c[w>>2]|0)+(c[J>>2]|0);if(!((c[K>>2]|0)!=((c[L>>2]|0)+-1|0)?(c[H>>2]|0)<=(c[I>>2]|0):0))c[H>>2]=c[I>>2];c[G>>2]=c[J>>2];c[j>>2]=c[H>>2];c[F>>2]=G;if((c[F>>2]|0)>>>0>=G>>>0)do{c[B>>2]=c[C>>2];a=(c[(c[F>>2]|0)+4>>2]|0)-(c[c[F>>2]>>2]|0)|0;c[l>>2]=a;e=a<<2;h=e&12;if(h)e=e+16-h|0;h=c[D>>2]&-16;c[x>>2]=(c[C>>2]|0)+e;do if((h|0)>(e|0)){r=h-e|0;c[y>>2]=r>>4;if((r|0)<32){M=84;break}if((a|0)>0){e=0;do{c[(c[B>>2]|0)+(e<<2)>>2]=0;e=e+1|0}while((e|0)!=(a|0))}c[z>>2]=0;c[A>>2]=1;c[t>>2]=c[c[F>>2]>>2];c[s>>2]=c[(c[F>>2]|0)+4>>2];c[p>>2]=(c[(c[F>>2]|0)+4>>2]|0)-(c[c[F>>2]>>2]|0);e=tt(E)|0;if((e|0)==64){M=84;break}else if(e){e=1;M=92;break b}do if(c[z>>2]|0){c[v>>2]=0;if((c[l>>2]|0)>0){m=0;do{e=c[(c[B>>2]|0)+(m<<2)>>2]|0;do if(e){f=0;h=0;do{a=c[e>>2]|0;if((a|0)>(h|0)&(f|0)!=0)ut(E,h,m,f<<9,a-h|0);f=(c[e+4>>2]|0)+f|0;a=f<<9;r=c[e+8>>2]|0;h=a-r|0;do if((a|0)!=(r|0)){g=c[e>>2]|0;if((g|0)<=-1)break;ut(E,g,m,h,1)}while(0);h=(c[e>>2]|0)+1|0;e=c[e+12>>2]|0}while((e|0)!=0);e=h;if(!f)break;ut(E,e,m,a,(c[q>>2]|0)-e|0)}while(0);m=m+1|0}while((m|0)<(c[l>>2]|0))}e=c[d>>2]|0;if(!e)break;h=c[v>>2]|0;if((h|0)<=0)break;Yd[e&63](c[n>>2]|0,h,o,c[u>>2]|0)}while(0);c[F>>2]=(c[F>>2]|0)+-8}else M=84;while(0);if((M|0)==84){M=0;e=c[c[F>>2]>>2]|0;h=c[(c[F>>2]|0)+4>>2]|0;r=h-e>>1;f=r+e|0;if(!r){e=1;M=92;break b}if((e-h|0)>=(c[w>>2]|0))c[k>>2]=(c[k>>2]|0)+1;c[(c[F>>2]|0)+8>>2]=e;c[(c[F>>2]|0)+12>>2]=f;c[c[F>>2]>>2]=f;c[(c[F>>2]|0)+4>>2]=h;c[F>>2]=(c[F>>2]|0)+8}}while((c[F>>2]|0)>>>0>=G>>>0);c[K>>2]=(c[K>>2]|0)+1;c[J>>2]=c[H>>2];if((c[K>>2]|0)>=(c[L>>2]|0))break a}if((M|0)==92){i=N;return e|0}}while(0);if((c[k>>2]|0)<=8){M=0;i=N;return M|0}e=c[w>>2]|0;if((e|0)<=16){M=0;i=N;return M|0}c[w>>2]=(e|0)/2|0;M=0;i=N;return M|0}function Qp(a){a=a|0;Ag(c[a+12>>2]|0,a);return}function Rp(a){a=a|0;var b=0;b=c[a+4>>2]|0;Ud[c[(c[(c[a+12>>2]|0)+56>>2]|0)+8>>2]&255](c[a+52>>2]|0,c[b+164>>2]|0,c[b+168>>2]|0);return 0}function Sp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return vt(a,b,(c|0)==1?0:c,d,0)|0}function Tp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((c[b+72>>2]|0)!=(c[a+16>>2]|0)){a=6;return a|0}if(d)Wg(b+108|0,d);if(!e){a=0;return a|0}Xg(b+108|0,c[e>>2]|0,c[e+4>>2]|0);a=0;return a|0}function Up(a,b,d){a=a|0;b=b|0;d=d|0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;if((c[b+72>>2]|0)!=(c[a+16>>2]|0))return;Ih(b+108|0,d);return}function Vp(a,b,d){a=a|0;b=b|0;d=d|0;return Hd[c[(c[(c[a+12>>2]|0)+56>>2]|0)+12>>2]&255](c[a+52>>2]|0,b,d)|0}function Wp(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;d=vt(b,c,d,e,3)|0;if(d)return d|0;a[c+94>>0]=5;return d|0}function Xp(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;d=vt(b,c,d,e,4)|0;if(d)return d|0;a[c+94>>0]=6;return d|0}function Yp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=b+40|0;o=b+32|0;if(!(c[n>>2]|0)){k=c[o>>2]|0;h=b+36|0;l=c[h>>2]|0;if(l|k){j=c[b>>2]|0;g=c[b+24>>2]|0;j=(j|0)>(g|0)?g:j;g=(c[b+1420>>2]|0)+(c[b+4>>2]<<2)|0;d=c[g>>2]|0;a:do if(!d){d=0;f=g;i=8}else while(1){e=c[d>>2]|0;if((e|0)>(j|0)){f=g;i=8;break a}g=d+12|0;if((e|0)==(j|0)){m=d;break a}d=c[g>>2]|0;if(!d){d=0;f=g;i=8;break}}while(0);do if((i|0)==8){g=b+52|0;e=c[g>>2]|0;if((e|0)<(c[b+48>>2]|0)){i=c[b+44>>2]|0;c[g>>2]=e+1;m=i+(e<<4)|0;c[m>>2]=j;c[i+(e<<4)+8>>2]=0;c[i+(e<<4)+4>>2]=0;c[i+(e<<4)+12>>2]=d;c[f>>2]=m;break}else Ua(b+1256|0,1)}while(0);j=m+8|0;c[j>>2]=(c[j>>2]|0)+k;m=m+4|0;c[m>>2]=(c[m>>2]|0)+l}}else h=b+36|0;i=c[a>>2]<<2;e=c[a+4>>2]<<2;m=i>>8;l=e>>8;j=c[b+12>>2]|0;m=(j|0)<(m|0)?j:m;d=c[b+8>>2]|0;m=(m|0)<(d|0)?d+-1|0:m;c[o>>2]=0;c[h>>2]=0;a=m-d|0;c[b>>2]=a;f=l-(c[b+16>>2]|0)|0;g=b+4|0;c[g>>2]=f;c[b+72>>2]=l<<8;c[n>>2]=0;d=((j|0)<(m|0)?j:m)-d|0;d=(d|0)>-1?d:-1;if((d|0)!=(a|0)){c[o>>2]=0;c[h>>2]=0;c[b>>2]=d;c[g>>2]=f}if(f>>>0>=(c[b+28>>2]|0)>>>0){o=1;o=o&1;c[n>>2]=o;o=b+64|0;c[o>>2]=i;b=b+68|0;c[b>>2]=e;return 0}o=(d|0)>=(c[b+24>>2]|0);o=o&1;c[n>>2]=o;o=b+64|0;c[o>>2]=i;b=b+68|0;c[b>>2]=e;return 0}function Zp(a,b){a=a|0;b=b|0;wt(b,c[a>>2]<<2,c[a+4>>2]<<2);return 0}function _p(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=c[b+4>>2]|0;j=d+852|0;e=d+76|0;f=c[b>>2]<<2;c[e>>2]=f;h=h<<2;c[d+80>>2]=h;l=c[a>>2]|0;c[d+84>>2]=l<<2;k=c[a+4>>2]|0;b=k<<2;c[d+88>>2]=b;a=c[d+64>>2]|0;c[d+92>>2]=a;g=c[d+68>>2]|0;c[d+96>>2]=g;a=f-(l<<3)+a|0;a=(a|0)<0?0-a|0:a;k=h-(k<<3)+g|0;k=(k|0)<0?0-k|0:k;a=(a|0)<(k|0)?k:a;if(((a|0)>=64?(l=(b|0)<(h|0)?b:h,i=(b|0)>(h|0)?b:h,(((g|0)<(l|0)?g:l)>>8|0)<(c[d+20>>2]|0)):0)?(((g|0)>(i|0)?g:i)>>8|0)>=(c[d+16>>2]|0):0){b=0;do{a=a>>2;b=b+1|0}while((a|0)>64);c[j>>2]=b;a=0;h=6}else{b=e;a=0;h=9}a:while(1){do if((h|0)==6)if((b|0)>0){l=e+16|0;k=c[l>>2]|0;c[e+32>>2]=k;i=e+8|0;g=c[i>>2]|0;k=(g+k|0)/2|0;c[e+24>>2]=k;g=((c[e>>2]|0)+g|0)/2|0;c[i>>2]=g;c[l>>2]=(g+k|0)/2|0;l=e+20|0;k=c[l>>2]|0;c[e+36>>2]=k;g=e+12|0;i=c[g>>2]|0;k=(i+k|0)/2|0;c[e+28>>2]=k;i=((c[e+4>>2]|0)+i|0)/2|0;c[g>>2]=i;c[l>>2]=(i+k|0)/2|0;l=a+1|0;k=b+-1|0;c[d+(a<<2)+852>>2]=k;c[d+(l<<2)+852>>2]=k;e=e+16|0;a=l;break}else{f=c[e>>2]|0;b=e;h=9;continue a}else if((h|0)==9){wt(d,f,c[b+4>>2]|0);e=b+-16|0;a=a+-1|0}while(0);if((a|0)<=-1)break;b=c[d+(a<<2)+852>>2]|0;h=6}return 0}function $p(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;p=c[d+4>>2]|0;q=e+76|0;d=c[d>>2]<<2;c[q>>2]=d;p=p<<2;c[e+80>>2]=p;c[e+84>>2]=c[b>>2]<<2;l=c[b+4>>2]<<2;c[e+88>>2]=l;c[e+92>>2]=c[a>>2]<<2;m=c[a+4>>2]<<2;c[e+96>>2]=m;c[e+100>>2]=c[e+64>>2];o=c[e+68>>2]|0;c[e+104>>2]=o;n=(l|0)<(p|0)?l:p;p=(l|0)>(p|0)?l:p;n=(m|0)<(n|0)?m:n;p=(m|0)>(p|0)?m:p;if((((o|0)<(n|0)?o:n)>>8|0)<(c[e+20>>2]|0)?(((o|0)>(p|0)?o:p)>>8|0)>=(c[e+16>>2]|0):0){a=d;d=q}else{a=d;d=q;t=13}while(1){if((t|0)==13){t=0;wt(e,a,c[d+4>>2]|0);if((d|0)==(q|0))break;d=d+-24|0;a=c[d>>2]|0}l=d+24|0;m=c[l>>2]|0;j=m-a|0;n=d+28|0;o=c[n>>2]|0;p=c[d+4>>2]|0;k=o-p|0;f=(j|0)<0?0-j|0:j;b=(k|0)<0?0-k|0:k;if((f|0)>(b|0))f=(b*97|0)+(f*236|0)|0;else f=(b*236|0)+(f*97|0)|0;f=f>>8;if((f|0)<=32767){g=f*42|0;f=c[d+8>>2]|0;h=f-a|0;b=c[d+12>>2]|0;i=b-p|0;u=(da(h,k)|0)-(da(i,j)|0)|0;if((((((u|0)<0?0-u|0:u)|0)<=(g|0)?(r=(c[d+16>>2]|0)-a|0,s=(c[d+20>>2]|0)-p|0,u=(da(r,k)|0)-(da(s,j)|0)|0,(((u|0)<0?0-u|0:u)|0)<=(g|0)):0)?((da(i-k|0,i)|0)+(da(h-j|0,h)|0)|0)<=0:0)?((da(s-k|0,s)|0)+(da(r-j|0,r)|0)|0)<=0:0){t=13;continue}}else{f=c[d+8>>2]|0;b=c[d+12>>2]|0}c[d+48>>2]=m;g=d+16|0;h=c[g>>2]|0;u=(f+a|0)/2|0;c[d+8>>2]=u;i=(h+m|0)/2|0;c[d+40>>2]=i;m=(h+f|0)/2|0;u=(m+u|0)/2|0;c[g>>2]=u;i=(m+i|0)/2|0;c[d+32>>2]=i;u=(i+u|0)/2|0;c[d+24>>2]=u;c[d+52>>2]=o;i=d+20|0;m=c[i>>2]|0;p=(b+p|0)/2|0;c[d+12>>2]=p;o=(m+o|0)/2|0;c[d+44>>2]=o;m=(m+b|0)/2|0;p=(m+p|0)/2|0;c[i>>2]=p;o=(m+o|0)/2|0;c[d+36>>2]=o;c[n>>2]=(o+p|0)/2|0;a=u;d=l}return 0}function aq(a){a=a|0;if(!(Yi(a)|0)){a=153;return a|0}c[a+68>>2]=35;a=0;return a|0}function bq(a){a=a|0;var d=0,e=0,f=0;a=a+28|0;d=c[a>>2]|0;if(!d)return;e=c[d+8>>2]|0;b[d+440>>1]=0;b[d+442>>1]=0;f=d+24|0;Ag(e,c[f>>2]|0);c[f>>2]=0;c[d+20>>2]=0;f=d+436|0;Ag(e,c[f>>2]|0);c[f>>2]=0;c[d+432>>2]=0;c[d+428>>2]=0;f=d+392|0;Ag(e,c[f>>2]|0);c[f>>2]=0;c[d+388>>2]=0;c[d+4>>2]=0;c[d>>2]=0;Ag(e,d);c[a>>2]=0;return}function cq(a,b){a=a|0;b=b|0;var d=0;d=Jg(86144,b)|0;if(d){b=d;return b|0}if(!a){b=0;return b|0}d=c[a+4>>2]|0;if(!d){b=0;return b|0}d=yh(d,85592)|0;if(!d){b=0;return b|0}d=c[(c[d>>2]|0)+20>>2]|0;if(!d){b=0;return b|0}b=Pd[c[d+16>>2]&511](a,b)|0;return b|0}function dq(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+96|0;C=E+84|0;D=E+88|0;z=E+68|0;w=E+72|0;u=E+76|0;v=E+80|0;t=E;l=zh(c[(c[f+96>>2]|0)+4>>2]|0,85592)|0;if(!l){f=11;i=E;return f|0}k=bh(e,0)|0;if(k){f=k;i=E;return f|0}k=Qd[c[l+4>>2]&127](e,f,g,h,j)|0;s=f+104|0;x=c[s>>2]|0;if(k){f=k;i=E;return f|0}A=c[f+148>>2]|0;if(!((A|0)==1953658213|(A|0)==131072|(A|0)==65536)){f=2;i=E;return f|0}A=f+8|0;c[A>>2]=c[A>>2]|2048;if((g|0)<0){f=0;i=E;return f|0}k=Qd[c[l+8>>2]&127](x,f,g,h,j)|0;if(k){f=k;i=E;return f|0}a:do if(f){k=c[f+20>>2]|0;b:do if(!k)y=11;else{e=0;while(1){if($ca(k,86008+(e*17|0)|0)|0)break b;e=e+1|0;if((e|0)>=8){y=11;break}}}while(0);c:do if((y|0)==11){k=t+0|0;e=k+68|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(e|0));p=f+152|0;k=b[p>>1]|0;if(k<<16>>16){q=f+156|0;r=f+504|0;l=k;h=0;k=0;m=0;while(1){n=c[q>>2]|0;e=c[n+(h<<4)>>2]|0;if((e|0)==1718642541){j=1;y=19}else if((e|0)==1668707360){k=1;j=0;y=19}else if((e|0)==1886545264){j=2;y=19}if((y|0)==19){y=0;l=0;o=0;while(1){if((c[n+(h<<4)+12>>2]|0)==(c[85600+(o*24|0)+(j<<3)+4>>2]|0)){do if(!l){e=c[r>>2]|0;if(!e)l=0;else{if(Xd[e&255](f,c[n+(h<<4)>>2]|0,c[s>>2]|0,0)|0){l=0;break}g=c[s>>2]|0;n=c[(c[q>>2]|0)+(h<<4)+12>>2]|0;if(Uh(g,n)|0){l=0;break}if(n>>>0>3){l=n;e=0;do{e=($h(g)|0)+e|0;l=l+-4|0}while(l>>>0>3);n=n&3}else e=0;if(n){l=3;while(1){e=(((Yh(g)|0)&255)<<(l<<3))+e|0;n=n+-1|0;if(!n)break;else l=l+-1|0}}Xh(g);l=e}}while(0);n=t+(o<<2)|0;e=c[n>>2]|0;if((c[85600+(o*24|0)+(j<<3)>>2]|0)==(l|0)){e=e+1|0;c[n>>2]=e}if((e|0)==3)break c}e=o+1|0;if((e|0)>=17)break;n=c[q>>2]|0;o=e}l=b[p>>1]|0}e=m+1<<16>>16;if((e&65535)<(l&65535)){h=e&65535;m=e}else break}if(k<<24>>24){k=0;while(1){if((c[t+(k<<2)>>2]|0)==3)break c;k=k+1|0;if((k|0)>=17)break a}}else l=0}else l=0;while(1){e=t+(l<<2)|0;k=c[e>>2]|0;if(l>>>0>=5){k=k+1|0;c[e>>2]=k}l=l+1|0;if((k|0)==3)break c;if((l|0)>=17)break a}}while(0);c[A>>2]=c[A>>2]|8192}while(0);l=c[x+28>>2]|0;q=f+504|0;t=Xd[c[q>>2]&255](f,1751412088,x,v)|0;c[u>>2]=t;k=c[v>>2]|0;if(!((t|0)!=0|k>>>0<8)){g=f+700|0;k=Th(x,k,g)|0;c[u>>2]=k;if(k){f=k;i=E;return f|0}e=c[g>>2]|0;j=e+(c[v>>2]|0)|0;h=d[e+2>>0]<<8|d[e+3>>0];n=d[e+5>>0]<<16|d[e+4>>0]<<24|d[e+6>>0]<<8|d[e+7>>0];n=n>>>0>4294901759?n&65535:n;if(!((h>>>0>255?1:(d[e>>0]<<8|d[e+1>>0]|0)!=0)|n>>>0>65537)){m=f+716|0;c[m>>2]=Dg(l,1,0,h,0,u)|0;if(!(c[u>>2]|0)){d:do if(!h)k=0;else{k=0;l=e+8|0;do{e=l;l=l+n|0;if(l>>>0>j>>>0)break d;a[(c[m>>2]|0)+k>>0]=a[e>>0]|0;k=k+1|0}while(k>>>0>>0)}while(0);c[f+708>>2]=k;c[f+704>>2]=c[v>>2];c[f+712>>2]=n}else y=53}else{c[u>>2]=3;y=53}if((y|0)==53){Vh(x,g);c[f+704>>2]=0}k=c[u>>2]|0;if(k){f=k;i=E;return f|0}}e:do if(c[A>>2]&1){p=f+128|0;do if(!(c[(c[p>>2]|0)+48>>2]|0)){e=f+664|0;k=Xd[c[q>>2]&255](f,1735162214,x,e)|0;if((k&255|0)!=142){if(k)break}else c[e>>2]=0;if(!(Xd[c[q>>2]&255](f,1819239265,x,w)|0)){k=c[w>>2]|0;if(!(b[f+210>>1]|0)){if(k>>>0>131071){k=8;break}l=k>>>1;c[f+692>>2]=l;g=1}else{if(k>>>0>262143){k=8;break}l=k>>>2;c[f+692>>2]=l;g=2}m=f+692|0;o=f+16|0;v=c[o>>2]|0;e=v+1|0;do if(!((l|0)==(e|0)|l>>>0>v>>>0)){k=e<>2]|0;v=b[f+152>>1]|0;n=l+((v&65535)<<4)|0;h=Qh(x)|0;if(!(v<<16>>16))e=2147483647;else{j=l+16|0;j=((n>>>0>j>>>0?n:j)+~l|0)>>>4;e=2147483647;g=l;do{v=(c[g+8>>2]|0)-h|0;e=(v|0)>0&(v|0)<(e|0)?v:e;g=g+16|0}while(g>>>0>>0);l=l+(j+1<<4)|0}if((l|0)==(n|0))e=(c[x+4>>2]|0)-h|0;if((k|0)>(e|0)){k=c[w>>2]|0;break}else{c[m>>2]=(c[o>>2]|0)+1;c[w>>2]=k;break}}while(0);k=Th(x,k,f+696|0)|0;if(!k)y=77}else k=144}else y=77;while(0);do if((y|0)==77){k=xt(f,x)|0;if(!k){if(!(Xd[c[q>>2]&255](f,1718642541,x,C)|0)){k=c[C>>2]|0;c[f+624>>2]=k;k=Th(x,k,f+628|0)|0;if(k)break}else{c[f+628>>2]=0;c[f+624>>2]=0}if(!(Xd[c[q>>2]&255](f,1886545264,x,z)|0)){k=c[z>>2]|0;c[f+632>>2]=k;k=Th(x,k,f+636|0)|0;break}else{c[f+636>>2]=0;c[f+632>>2]=0;k=0;break}}}while(0);if((((c[(c[p>>2]|0)+48>>2]|0)==0?(c[f+28>>2]|0)!=0:0)?(c[f+696>>2]|0)!=0:0)?(B=f+692|0,(c[B>>2]|0)!=0):0){g=0;l=0;e=0;do{qq(f,e,C)|0;if(c[C>>2]|0){g=g+1|0;if(g>>>0>1)break e;else l=e}e=e+1|0}while(e>>>0<(c[B>>2]|0)>>>0);if((g|0)==1){if(l){C=(sh(f,l,D,8)|0)==0;if(!(C&(a[D>>0]|0)==46))break;if(hfa(D,89072,8)|0)break}c[A>>2]=c[A>>2]&-2}}}else k=0;while(0);c[f+508>>2]=72;c[f+516>>2]=110;c[f+520>>2]=111;c[f+524>>2]=112;c[f+512>>2]=213;f=k;i=E;return f|0}function eq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;if(!a)return;h=c[a+100>>2]|0;b=a+104|0;d=c[b>>2]|0;e=c[a+528>>2]|0;f=a+652|0;g=c[f+4>>2]|0;if(g)Bd[g&511](c[f>>2]|0);if(e)Bd[c[e+12>>2]&511](a);Vh(c[b>>2]|0,a+696|0);c[a+692>>2]=0;e=c[b>>2]|0;g=a+716|0;Ag(c[e+28>>2]|0,c[g>>2]|0);c[g>>2]=0;Vh(e,a+700|0);e=a+644|0;Ag(h,c[e>>2]|0);c[e>>2]=0;c[a+640>>2]=0;Vh(d,a+628|0);Vh(d,a+636|0);c[a+624>>2]=0;c[a+632>>2]=0;d=a+672|0;e=c[d>>2]|0;if(e){a=e+4|0;Ag(h,c[a>>2]|0);c[a>>2]=0;a=e+8|0;Ag(h,c[a>>2]|0);c[a>>2]=0;a=e+20|0;b=c[a>>2]|0;if(b){if(c[e>>2]|0){f=0;do{Ag(h,c[b+(f<<3)+4>>2]|0);b=c[a>>2]|0;c[b+(f<<3)+4>>2]=0;f=f+1|0}while(f>>>0<(c[e>>2]|0)>>>0)}Ag(h,b);c[a>>2]=0}a=e+28|0;Ag(h,c[a>>2]|0);c[a>>2]=0;a=e+36|0;Ag(h,c[a>>2]|0);c[a>>2]=0;Ag(h,e)}c[d>>2]=0;return}function fq(b){b=b|0;a[b+300>>0]=0;a[b+301>>0]=0;a[b+108>>0]=0;c[b+112>>2]=-1;return 0}function gq(b){b=b|0;if(a[b+300>>0]|0)Dt(b);a[b+108>>0]=0;return}function hq(a){a=a|0;return Cg(c[c[a+156>>2]>>2]|0)|0}function iq(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+256|0;D=I+224|0;G=I;p=I+240|0;F=I+16|0;q=f+4|0;m=c[q>>2]|0;if(!f){h=37;i=I;return h|0}if(!g){h=36;i=I;return h|0}if(!m){h=6;i=I;return h|0}if((c[m+16>>2]|0)>>>0<=h>>>0?(c[(c[m+128>>2]|0)+48>>2]|0)==0:0){h=6;i=I;return h|0}if(j&2){j=(c[m+8>>2]&8192|0)==0?j:j&-3;j=j>>>14&2|j}if(!(j&1025))B=j;else B=(c[m+8>>2]|0)>>>12&2^11|j;j=c[g+112>>2]|0;if((j|0)!=-1&(B&8|0)==0?(zd[c[(c[m+528>>2]|0)+72>>2]&7](m,j,h,B,c[m+104>>2]|0,f+76|0,p)|0)==0:0){b[f+110>>1]=0;b[f+108>>1]=0;c[f+24>>2]=e[p+2>>1]<<6;c[f+28>>2]=e[p>>1]<<6;k=b[p+4>>1]|0;c[f+32>>2]=k<<6;l=b[p+6>>1]|0;c[f+36>>2]=l<<6;o=f+40|0;c[o>>2]=e[p+8>>1]<<6;m=b[p+10>>1]|0;c[f+44>>2]=m<<6;n=b[p+12>>1]|0;c[f+48>>2]=n<<6;c[f+52>>2]=e[p+14>>1]<<6;c[f+72>>2]=1651078259;j=f+100|0;if(!(B&16)){c[j>>2]=k;c[f+104>>2]=l}else{c[j>>2]=m;c[f+104>>2]=n}k=c[q>>2]|0;if(!(c[k+8>>2]&1)){h=0;i=I;return h|0}l=c[k+104>>2]|0;sfa(F|0,0,208)|0;do if(!(c[(c[k+128>>2]|0)+48>>2]|0)){j=Xd[c[k+504>>2]&255](k,1735162214,l,0)|0;if((j&255|0)==142){c[F+84>>2]=0;H=22;break}if(!j){c[F+84>>2]=Qh(l)|0;H=22}}else{c[F+84>>2]=0;H=22}while(0);if((H|0)==22){c[F+16>>2]=B;c[F>>2]=k;c[F+4>>2]=g;c[F+8>>2]=f;c[F+24>>2]=l}Et(F,h,0,1)|0;j=c[F+60>>2]|0;c[f+56>>2]=j;c[f+60>>2]=(c[F+48>>2]|0)+(c[F+176>>2]|0)-(c[F+180>>2]|0);if((c[o>>2]|0)!=0|(j|0)==0){h=0;i=I;return h|0}c[o>>2]=qg(j,c[g+16>>2]|0)|0;h=0;i=I;return h|0}E=(B&1|0)!=0;if(!E?(a[g+108>>0]|0)==0:0){h=36;i=I;return h|0}if(B&16384){h=6;i=I;return h|0}y=B&128;z=c[q>>2]|0;A=c[z+104>>2]|0;sfa(F|0,0,208)|0;C=(B&2|0)==0;if(C){x=g+301|0;do if(!(a[x>>0]|0)){j=g+300|0;a:do if(!(a[j>>0]|0)){r=c[g>>2]|0;p=c[r+100>>2]|0;k=r+260|0;a[j>>0]=1;a[x>>0]=0;n=e[k+20>>1]|0;c[g+120>>2]=n;j=g+132|0;c[j>>2]=e[k+22>>1];s=g+116|0;c[s>>2]=0;t=g+128|0;c[t>>2]=0;u=g+140|0;c[u>>2]=0;v=g+144|0;c[v>>2]=0;q=g+240|0;c[q>>2]=c[r+640>>2];m=g+248|0;b[m>>1]=b[k+18>>1]|0;o=g+72|0;a[o+37>>0]=0;a[o+38>>0]=0;o=g+92|0;c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;c[g+124>>2]=Dg(p,24,0,n,0,G)|0;b:do if((((c[G>>2]|0)==0?(c[g+136>>2]=Dg(p,24,0,c[j>>2]|0,0,G)|0,(c[G>>2]|0)==0):0)?(c[g+244>>2]=Dg(p,4,0,c[q>>2]|0,0,G)|0,(c[G>>2]|0)==0):0)?(c[g+252>>2]=Dg(p,4,0,e[m>>1]|0,0,G)|0,(c[G>>2]|0)==0):0){j=(e[k+16>>1]|0)+4|0;o=j&65535;n=g+256|0;k=n+0|0;l=k+36|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));c[n>>2]=p;q=j&65535;m=n+12|0;c[m>>2]=Dg(p,8,0,q,0,D)|0;j=c[D>>2]|0;do if(!j){c[n+16>>2]=Dg(p,8,0,q,0,D)|0;j=c[D>>2]|0;if(j){H=40;break}c[n+20>>2]=Dg(p,8,0,q,0,D)|0;j=c[D>>2]|0;if(j){H=40;break}c[n+24>>2]=Dg(p,1,0,q,0,D)|0;j=c[D>>2]|0;if(j){H=40;break}c[n+28>>2]=Dg(p,2,0,0,0,D)|0;j=c[D>>2]|0;if(j){H=40;break}b[n+4>>1]=o;b[n+6>>1]=0;c[G>>2]=0}else H=40;while(0);do if((H|0)==40){q=c[n>>2]|0;if(q){p=n+28|0;Ag(q,c[p>>2]|0);c[p>>2]=0;p=n+24|0;Ag(q,c[p>>2]|0);c[p>>2]=0;p=n+16|0;Ag(q,c[p>>2]|0);c[p>>2]=0;Ag(q,c[m>>2]|0);c[m>>2]=0;p=n+20|0;Ag(q,c[p>>2]|0);c[p>>2]=0;c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;p=c[D>>2]|0;c[G>>2]=p;if(!p)break;else break b}else{c[G>>2]=j;break b}}while(0);b[n+8>>1]=o;k=g+172|0;j=85008;l=k+68|0;do{c[k>>2]=c[j>>2];k=k+4|0;j=j+4|0}while((k|0)<(l|0));k=c[(c[(c[r+96>>2]|0)+4>>2]|0)+172>>2]|0;c[r+648>>2]=(k|0)==0?113:k;k=c[g>>2]|0;if(!(a[g+292>>0]|0))j=(c[k+96>>2]|0)+28|0;else j=g+296|0;m=c[j>>2]|0;do if(!m)j=153;else{Ft(m,k,g);c[m+428>>2]=0;c[m+16>>2]=0;c[m+476>>2]=64;c[m+480>>2]=0;c[m+484>>2]=0;a[m+488>>0]=0;c[m+564>>2]=16384;a[m+561>>0]=y;j=m+216|0;b[m+252>>1]=0;c[m+260>>2]=0;b[j+0>>1]=0;b[j+2>>1]=0;b[j+4>>1]=0;b[j+6>>1]=0;b[j+8>>1]=0;b[j+10>>1]=0;c[m+256>>2]=65536;j=c[k+628>>2]|0;q=c[k+624>>2]|0;c[m+444>>2]=j;c[m+448>>2]=q;p=m+452|0;c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;if((q|0)!=0?(c[m+356>>2]=j,c[m+364>>2]=q,c[m+360>>2]=0,c[m+352>>2]=1,w=Ed[c[k+648>>2]&511](m)|0,(w|0)!=0):0){j=w;break}c[s>>2]=c[m+396>>2];c[t>>2]=c[m+408>>2];c[u>>2]=c[m+420>>2];c[v>>2]=c[m+424>>2];u=m+444|0;v=c[u+4>>2]|0;w=g+148|0;c[w>>2]=c[u>>2];c[w+4>>2]=v;w=m+452|0;v=c[w+4>>2]|0;u=g+156|0;c[u>>2]=c[w>>2];c[u+4>>2]=v;u=m+460|0;v=c[u+4>>2]|0;w=g+164|0;c[w>>2]=c[u>>2];c[w+4>>2]=v;break a}while(0);c[G>>2]=j}while(0);Dt(g);j=c[G>>2]|0;if(j){h=j;i=I;return h|0}}while(0);if(!(a[x>>0]|0)){j=g+240|0;if(c[j>>2]|0){m=(c[g>>2]|0)+644|0;k=g+88|0;l=g+244|0;o=0;do{w=qg(b[(c[m>>2]|0)+(o<<1)>>1]|0,c[k>>2]|0)|0;c[(c[l>>2]|0)+(o<<2)>>2]=w;o=o+1|0}while(o>>>0<(c[j>>2]|0)>>>0)}j=b[g+264>>1]|0;if(j<<16>>16){k=c[g+268>>2]|0;l=c[g+272>>2]|0;j=j&65535;m=0;do{c[k+(m<<3)>>2]=0;c[k+(m<<3)+4>>2]=0;c[l+(m<<3)>>2]=0;c[l+(m<<3)+4>>2]=0;m=m+1|0}while((m|0)!=(j|0))}j=b[g+248>>1]|0;if(j<<16>>16)sfa(c[g+252>>2]|0,0,((j&65535)>1?(j&65535)<<2:4)|0)|0;k=g+172|0;j=85008;l=k+68|0;do{c[k>>2]=c[j>>2];k=k+4|0;j=j+4|0}while((k|0)<(l|0));j=Gt(g,y)|0;if(!j){a[x>>0]=1;break}else{h=j;i=I;return h|0}}}while(0);if(!(a[g+292>>0]|0))j=(c[z+96>>2]|0)+28|0;else j=g+296|0;q=c[j>>2]|0;if(!q){h=153;i=I;return h|0}j=(B&983040|0)!=131072;Ft(q,z,g);m=q+604|0;if((j&1|0)!=(d[m>>0]|0)){a[m>>0]=j&1;j=g+240|0;if(c[j>>2]|0){m=z+644|0;k=g+88|0;l=g+244|0;o=0;do{x=qg(b[(c[m>>2]|0)+(o<<1)>>1]|0,c[k>>2]|0)|0;c[(c[l>>2]|0)+(o<<2)>>2]=x;o=o+1|0}while(o>>>0<(c[j>>2]|0)>>>0)}Gt(g,y)|0}x=a[q+336>>0]|0;m=(x&1)<<1|B;if(x&2){k=q+284|0;j=85008;l=k+68|0;do{c[k>>2]=c[j>>2];k=k+4|0;j=j+4|0}while((k|0)<(l|0))}a[q+561>>0]=y;c[F+160>>2]=q;c[F+164>>2]=c[q+392>>2]}else m=B;do if(!(c[(c[z+128>>2]|0)+48>>2]|0)){j=Xd[c[z+504>>2]&255](z,1735162214,A,0)|0;if((j&255|0)==142){c[F+84>>2]=0;break}if(!j){c[F+84>>2]=Qh(A)|0;break}else{h=j;i=I;return h|0}}else c[F+84>>2]=0;while(0);y=c[c[f+156>>2]>>2]|0;zg(y);j=F+12|0;c[j>>2]=y;y=F+16|0;c[y>>2]=m;c[F>>2]=z;o=F+4|0;c[o>>2]=g;q=F+8|0;c[q>>2]=f;c[F+24>>2]=A;m=f+72|0;c[m>>2]=1869968492;k=f+128|0;c[k>>2]=0;l=f+108|0;w=f+124|0;c[w>>2]=0;x=Et(F,h,0,0)|0;c:do if(!x){j=c[j>>2]|0;if((c[m>>2]|0)!=1668246896){j=j+20|0;c[l+0>>2]=c[j+0>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];c[l+16>>2]=c[j+16>>2];c[w>>2]=c[w>>2]&-513;j=c[F+68>>2]|0;if(j)Xg(l,0-j|0,0)}else{c[k>>2]=c[j+48>>2];c[f+132>>2]=c[j+52>>2]}do if(C){j=c[F+160>>2]|0;if(!(a[j+337>>0]|0)){c[w>>2]=c[w>>2]|8;break}j=c[j+340>>2]|0;if((j|0)==1)break;else if(!j){c[w>>2]=c[w>>2]|32;break}else if((j|0)==5){c[w>>2]=c[w>>2]|16;break}else if((j|0)==4){c[w>>2]=c[w>>2]|48;break}else{c[w>>2]=c[w>>2]|8;break}}while(0);r=c[F>>2]|0;v=c[q>>2]|0;j=c[o>>2]|0;if(!(c[y>>2]&1))s=c[j+20>>2]|0;else s=65536;if((c[v+72>>2]|0)==1668246896){f=F+36|0;c[D+0>>2]=c[f+0>>2];c[D+4>>2]=c[f+4>>2];c[D+8>>2]=c[f+8>>2];c[D+12>>2]=c[f+12>>2]}else Ih(v+108|0,D);c[v+56>>2]=c[F+60>>2];n=c[D>>2]|0;t=v+32|0;c[t>>2]=n;p=c[D+12>>2]|0;c[v+36>>2]=p;u=v+40|0;c[u>>2]=(c[F+76>>2]|0)-(c[F+68>>2]|0);d:do if((c[r+476>>2]|0)==0?(c[y>>2]&2|0)==0:0){q=e[j+12>>1]|0;l=c[r+712>>2]|0;o=c[r+700>>2]|0;m=c[r+708>>2]|0;if(!m)break;k=c[r+716>>2]|0;j=0;while(1){if((d[k+j>>0]|0)==(q|0))break;j=j+1|0;if(j>>>0>=m>>>0)break d}if((h+2|0)>>>0>=l>>>0)break;j=o+(h+10+(da(j,l)|0))|0;if(!j)break;c[u>>2]=d[j>>0]<<6}while(0);c[v+24>>2]=(c[D+8>>2]|0)-n;j=p-(c[D+4>>2]|0)|0;c[v+28>>2]=j;do if(!(a[r+292>>0]|0))H=113;else{if(!(b[r+330>>1]|0)){H=113;break}k=F+188|0;j=(rg((c[k>>2]|0)-p|0,s)|0)<<16>>16;k=c[k>>2]|0;m=c[F+196>>2]|0;if((k|0)<=(m|0)){k=0;break}k=(rg(k-m|0,s)|0)&65535}while(0);if((H|0)==113){m=(rg(j,s)|0)<<16>>16;j=r+364|0;if((b[j>>1]|0)==-1){j=r+216|0;j=(b[j+4>>1]|0)-(b[j+6>>1]|0)|0}else j=(b[j+70>>1]|0)-(b[j+72>>1]|0)|0;k=j;j=(j-m|0)/2|0}m=c[(c[r+128>>2]|0)+48>>2]|0;do if(m){l=c[(c[m>>2]|0)+8>>2]|0;if(!l)break;c[G>>2]=0;n=G+4|0;c[n>>2]=j;j=G+8|0;c[j>>2]=k;if(Xd[l&255](c[m+4>>2]|0,h,1,G)|0)break c;k=c[j>>2]|0;j=c[n>>2]|0}while(0);c[v+60>>2]=k;if(!(c[y>>2]&1)){j=qg(j,s)|0;k=qg(k,s)|0}c[v+44>>2]=(c[t>>2]|0)-((c[u>>2]|0)/2|0);c[v+48>>2]=j;c[v+52>>2]=k}while(0);if(E){h=x;i=I;return h|0}if((e[g+14>>1]|0)>=24){h=x;i=I;return h|0}c[w>>2]=c[w>>2]|256;h=x;i=I;return h|0}function jq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=c[a+528>>2]|0;c[e>>2]=0;c[e+4>>2]=0;if(!f)return 0;c[e>>2]=Hd[c[f+84>>2]&255](a,b,d)|0;return 0}function kq(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;p=q+6|0;o=q;l=q+2|0;m=q+4|0;k=(g|0)==0;if(!(h&16)){if(k){i=q;return 0}k=d+528|0;h=0;do{Qd[c[(c[k>>2]|0)+112>>2]&127](d,0,h+f|0,l,m)|0;c[j+(h<<2)>>2]=e[m>>1];h=h+1|0}while((h|0)!=(g|0));i=q;return 0}if(k){i=q;return 0}h=d+292|0;l=d+68|0;m=d+528|0;n=0;do{if(!(a[h>>0]|0)){b[p>>1]=0;k=b[l>>1]|0;b[o>>1]=k}else{Qd[c[(c[m>>2]|0)+112>>2]&127](d,1,n+f|0,p,o)|0;k=b[o>>1]|0}c[j+(n<<2)>>2]=k&65535;n=n+1|0}while((n|0)!=(g|0));i=q;return 0}function lq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g;d=c[a>>2]|0;do if(!(c[d+8>>2]&2))e=0;else{e=Hd[c[(c[d+528>>2]|0)+104>>2]&255](d,b,f)|0;if(e){c[a+112>>2]=-1;d=c[a>>2]|0;break}d=c[f>>2]|0;e=c[a>>2]|0;f=a+112|0;c[f>>2]=d;if(c[e+8>>2]&1){ih(e,d);Ht(a)|0;a=0;i=g;return a|0}d=Hd[c[(c[e+528>>2]|0)+108>>2]&255](e,d,a+12|0)|0;if(!d){a=0;i=g;return a|0}c[f>>2]=-1;a=d;i=g;return a|0}while(0);jh(d,b);if(!(c[(c[a>>2]|0)+8>>2]&1)){a=e;i=g;return a|0}f=Ht(a)|0;b=a+12|0;a=a+44|0;c[b+0>>2]=c[a+0>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];c[b+16>>2]=c[a+16>>2];c[b+20>>2]=c[a+20>>2];c[b+24>>2]=c[a+24>>2];a=f;i=g;return a|0}function mq(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a>>2]|0;e=a+112|0;c[e>>2]=b;if(c[d+8>>2]&1){ih(d,b);Ht(a)|0;b=0;return b|0}d=Hd[c[(c[d+528>>2]|0)+108>>2]&255](d,b,a+12|0)|0;if(!d){b=0;return b|0}c[e>>2]=-1;b=d;return b|0}function nq(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+32|0;t=z+28|0;k=z;p=z+4|0;y=z+24|0;c[y>>2]=0;x=c[d+100>>2]|0;w=d+668|0;a[w>>0]=0;h=d+672|0;j=c[h>>2]|0;do if(!j){v=oq(d,0)|0;c[y>>2]=v;if(!v){v=c[h>>2]|0;break}else{d=c[y>>2]|0;i=z;return d|0}}else v=j;while(0);j=v+8|0;if((c[c[j>>2]>>2]|0)!=(f|0)){c[y>>2]=6;d=c[y>>2]|0;i=z;return d|0}u=(f|0)==0;a:do if(!u){h=0;while(1){if(((c[g+(h<<2)>>2]|0)+65536|0)>>>0>131072)break;h=h+1|0;if(h>>>0>=f>>>0)break a}c[y>>2]=6;d=c[y>>2]|0;i=z;return d|0}while(0);m=v+36|0;if(!(c[m>>2]|0)){r=c[d+104>>2]|0;o=c[r+28>>2]|0;h=Xd[c[d+504>>2]&255](d,1735811442,r,k)|0;c[t>>2]=h;do if(!h){n=Qh(r)|0;h=fi(r,86400,p)|0;c[t>>2]=h;if(!h){q=v+24|0;c[q>>2]=e[p+6>>1];h=e[p+12>>1]|0;k=v+32|0;c[k>>2]=h;l=(c[p+16>>2]|0)+n|0;if((c[p>>2]|0)==65536?(s=p+4|0,(b[s>>1]|0)==(c[c[j>>2]>>2]&65535)<<16>>16):0){c[m>>2]=Dg(o,4,0,h+1|0,0,t)|0;h=c[t>>2]|0;if(h)break;h=(c[k>>2]|0)+1|0;if(!(b[p+14>>1]&1)){h=Uh(r,h<<1)|0;c[t>>2]=h;if(!h)h=0;else break;do{j=(((Zh(r)|0)&65535)<<1)+l|0;c[(c[m>>2]|0)+(h<<2)>>2]=j;h=h+1|0}while(h>>>0<=(c[k>>2]|0)>>>0);Xh(r)}else{h=Uh(r,h<<2)|0;c[t>>2]=h;if(!h)h=0;else break;do{j=($h(r)|0)+l|0;c[(c[m>>2]|0)+(h<<2)>>2]=j;h=h+1|0}while(h>>>0<=(c[k>>2]|0)>>>0);Xh(r)}h=c[q>>2]|0;if(h){l=v+28|0;c[l>>2]=Dg(o,4,0,da(e[s>>1]|0,h)|0,0,t)|0;h=c[t>>2]|0;if(h)break;h=bh(r,(c[p+8>>2]|0)+n|0)|0;c[t>>2]=h;if(h)break;h=Uh(r,da(c[q>>2]<<1,e[s>>1]|0)|0)|0;c[t>>2]=h;if(h)break;h=c[q>>2]|0;if(h){j=b[s>>1]|0;k=0;do{if(!(j<<16>>16))j=0;else{h=0;do{n=(Zh(r)|0)<<16>>16<<2;j=b[s>>1]|0;o=j&65535;m=(da(o,k)|0)+h|0;c[(c[l>>2]|0)+(m<<2)>>2]=n;h=h+1|0}while(h>>>0>>0);h=c[q>>2]|0}k=k+1|0}while(k>>>0>>0)}Xh(r)}h=c[t>>2]|0;break}c[t>>2]=8;h=8}}while(0);c[y>>2]=h;if(h){d=c[y>>2]|0;i=z;return d|0}}j=v+4|0;h=c[j>>2]|0;b:do if(!h){h=Dg(x,4,0,f,0,y)|0;c[j>>2]=h;if(!(c[y>>2]|0))k=1;else{d=c[y>>2]|0;i=z;return d|0}}else if(u)k=0;else{j=0;while(1){if((c[h+(j<<2)>>2]|0)!=(c[g+(j<<2)>>2]|0)){k=2;break b}j=j+1|0;if(j>>>0>=f>>>0){k=0;break}}}while(0);c[v>>2]=f;qfa(h|0,g|0,f<<2|0)|0;a[w>>0]=1;h=d+644|0;j=c[h>>2]|0;if(!j){d=c[y>>2]|0;i=z;return d|0}if((k|0)==2){Ag(x,j);c[h>>2]=0;xt(d,c[d+104>>2]|0)|0;d=c[y>>2]|0;i=z;return d|0}else if((k|0)==1){It(d,c[d+104>>2]|0)|0;d=c[y>>2]|0;i=z;return d|0}else{d=c[y>>2]|0;i=z;return d|0}return 0}function oq(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+48|0;k=z+44|0;y=z;l=z+8|0;s=z+24|0;t=c[d+104>>2]|0;v=c[d+100>>2]|0;c[y>>2]=0;x=d+672|0;a:do if(!(c[x>>2]|0)){g=d+504|0;r=Xd[c[g>>2]&255](d,1735811442,t,k)|0;c[y>>2]=r;if(r){f=c[y>>2]|0;i=z;return f|0}r=Xd[c[g>>2]&255](d,1719034226,t,k)|0;c[y>>2]=r;if(r){f=c[y>>2]|0;i=z;return f|0}p=Qh(t)|0;r=fi(t,86320,l)|0;c[y>>2]=r;if(r){f=c[y>>2]|0;i=z;return f|0}if(((((((c[l>>2]|0)==65536?(b[l+6>>1]|0)==2:0)?(b[l+10>>1]|0)==20:0)?(u=l+8|0,r=b[u>>1]|0,n=r&65535,(r&65535)<=16382):0)?(h=e[l+14>>1]|0,(h|0)==((n<<2)+4|0)):0)?(w=l+12|0,j=b[w>>1]|0,(j&65535)<=32511):0)?(q=l+4|0,r=(da(j&65535,h)|0)+(n*20|0)+(e[q>>1]|0)|0,r>>>0<=(c[k>>2]|0)>>>0):0){g=yg(v,40,y)|0;c[x>>2]=g;if(c[y>>2]|0){f=c[y>>2]|0;i=z;return f|0}r=e[w>>1]|0;r=(r<<3)+20+(da((r<<2)+29|0,e[u>>1]|0)|0)|0;c[g+12>>2]=r;g=yg(v,r,y)|0;if(c[y>>2]|0){f=c[y>>2]|0;i=z;return f|0}c[(c[x>>2]|0)+8>>2]=g;l=b[u>>1]|0;k=l&65535;c[g>>2]=k;c[g+4>>2]=-1;d=b[w>>1]|0;h=d&65535;c[g+8>>2]=h;m=g+20|0;o=g+12|0;c[o>>2]=m;j=m+(k*24|0)|0;r=g+16|0;c[r>>2]=j;n=j+(h<<3)|0;if(!(d<<16>>16))g=n;else{g=g+(((da(h>>>0>1?h:1,k)|0)<<2)+(k*24|0)+(h<<3)+20)|0;d=0;while(1){c[j+(d<<3)>>2]=n;d=d+1|0;if((d|0)>=(h|0))break;else n=n+(k<<2)|0}}if(l<<16>>16){n=0;while(1){c[m+(n*24|0)>>2]=g;n=n+1|0;if((n|0)>=(k|0))break;else g=g+5|0}}q=bh(t,(e[q>>1]|0)+p|0)|0;c[y>>2]=q;if(q){f=c[y>>2]|0;i=z;return f|0}b:do if(!(b[u>>1]|0))g=0;else{j=s+4|0;l=s+8|0;k=s+12|0;m=s+18|0;d=c[o>>2]|0;h=0;while(1){q=fi(t,86360,s)|0;c[y>>2]=q;if(q)break;q=c[s>>2]|0;g=d+16|0;c[g>>2]=q;c[d+4>>2]=c[j>>2];c[d+8>>2]=c[l>>2];c[d+12>>2]=c[k>>2];c[d+20>>2]=e[m>>1];a[c[d>>2]>>0]=q>>>24;a[(c[d>>2]|0)+1>>0]=(c[g>>2]|0)>>>16;a[(c[d>>2]|0)+2>>0]=(c[g>>2]|0)>>>8;a[(c[d>>2]|0)+3>>0]=c[g>>2];a[(c[d>>2]|0)+4>>0]=0;h=h+1|0;g=b[u>>1]|0;if((h|0)>=(g&65535|0))break b;else d=d+24|0}f=c[y>>2]|0;i=z;return f|0}while(0);if(!(b[w>>1]|0))break;h=1;d=c[r>>2]|0;while(1){s=Uh(t,((g&65535)<<2)+4|0)|0;c[y>>2]=s;if(s)break;c[d+4>>2]=(Zh(t)|0)&65535;Zh(t)|0;if(b[u>>1]|0){g=0;do{s=$h(t)|0;c[(c[d>>2]|0)+(g<<2)>>2]=s;g=g+1|0}while((g|0)<(e[u>>1]|0))}Xh(t);if((h|0)>=(e[w>>1]|0))break a;g=b[u>>1]|0;h=h+1|0;d=d+8|0}f=c[y>>2]|0;i=z;return f|0}c[y>>2]=8;f=c[y>>2]|0;i=z;return f|0}while(0);if(!f){f=c[y>>2]|0;i=z;return f|0}n=yg(v,c[(c[x>>2]|0)+12>>2]|0,y)|0;if(c[y>>2]|0){f=c[y>>2]|0;i=z;return f|0}j=c[x>>2]|0;qfa(n|0,c[j+8>>2]|0,c[j+12>>2]|0)|0;j=n+20|0;c[n+12>>2]=j;m=c[n>>2]|0;h=j+(m*24|0)|0;c[n+16>>2]=h;k=c[n+8>>2]|0;d=h+(k<<3)|0;if(!k)g=d;else{g=n+(((da(m,k>>>0>1?k:1)|0)<<2)+(m*24|0)+(k<<3)+20)|0;l=0;while(1){c[h+(l<<3)>>2]=d;l=l+1|0;if(l>>>0>=k>>>0)break;else d=d+(m<<2)|0}}if(m){d=0;h=g;while(1){c[j>>2]=h;g=c[j+16>>2]|0;if((g|0)==1936486004)c[j>>2]=86392;else if((g|0)==1869640570)c[j>>2]=88920;else if((g|0)==2003265652)c[j>>2]=89872;else if((g|0)==2003072104)c[j>>2]=88912;d=d+1|0;if(d>>>0>=m>>>0)break;else{j=j+24|0;h=h+5|0}}}c[f>>2]=n;f=c[y>>2]|0;i=z;return f|0}function pq(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;t=C+8|0;r=C;B=C+4|0;c[B>>2]=0;A=c[d+100>>2]|0;o=d+672|0;h=c[o>>2]|0;do if(!h){z=oq(d,0)|0;c[B>>2]=z;if(!z){u=c[o>>2]|0;break}else{f=0;Ag(A,f);f=c[B>>2]|0;i=C;return f|0}}else u=h;while(0);z=c[u+8>>2]|0;if((c[z>>2]|0)!=(f|0)){c[B>>2]=6;f=0;Ag(A,f);f=c[B>>2]|0;i=C;return f|0}y=Dg(A,4,0,f,0,B)|0;if(c[B>>2]|0){f=y;Ag(A,f);f=c[B>>2]|0;i=C;return f|0}a:do if(c[z>>2]|0){q=c[z+12>>2]|0;n=0;while(1){h=c[g+(n<<2)>>2]|0;p=c[q+12>>2]|0;if((h|0)>(p|0))break;l=c[q+4>>2]|0;if((h|0)<(l|0))break;k=c[q+8>>2]|0;do if((h|0)>=(k|0))if((p|0)==(k|0)){c[y+(n<<2)>>2]=0;break}else{c[y+(n<<2)>>2]=rg(h-k|0,p-k|0)|0;break}else c[y+(n<<2)>>2]=0-(rg(h-k|0,l-k|0)|0);while(0);n=n+1|0;if(n>>>0>=(c[z>>2]|0)>>>0)break a;else q=q+24|0}c[B>>2]=6;f=y;Ag(A,f);f=c[B>>2]|0;i=C;return f|0}while(0);if(((a[u+16>>0]|0)==0?(v=c[d+104>>2]|0,w=c[v+28>>2]|0,s=c[o>>2]|0,a[s+16>>0]=1,g=Xd[c[d+504>>2]&255](d,1635148146,v,r)|0,c[t>>2]=g,(g|0)==0):0)?(r=Uh(v,c[r>>2]|0)|0,c[t>>2]=r,(r|0)==0):0){r=$h(v)|0;p=$h(v)|0;b:do if(((r|0)==65536?(p|0)==(c[c[s+8>>2]>>2]|0):0)?(m=Dg(w,8,0,p,0,t)|0,x=s+20|0,c[x>>2]=m,(c[t>>2]|0)==0&(p|0)>0):0){k=0;while(1){s=Zh(v)|0;b[m>>1]=s;h=m+4|0;c[h>>2]=Dg(w,8,0,s&65535,0,t)|0;if(c[t>>2]|0)break;if(b[m>>1]|0){l=0;do{s=(Zh(v)|0)<<16>>16<<2;c[(c[h>>2]|0)+(l<<3)>>2]=s;s=(Zh(v)|0)<<16>>16<<2;c[(c[h>>2]|0)+(l<<3)+4>>2]=s;l=l+1|0}while((l|0)<(e[m>>1]|0))}k=k+1|0;if((k|0)>=(p|0))break b;else m=m+8|0}h=c[x>>2]|0;if((k|0)>0)do{k=k+-1|0;Ag(w,c[h+(k<<3)+4>>2]|0);h=c[x>>2]|0;c[h+(k<<3)+4>>2]=0}while((k|0)>0);Ag(w,h);c[x>>2]=0}while(0);Xh(v)}h=c[u+20>>2]|0;if((h|0)!=0?(j=c[z>>2]|0,(j|0)!=0):0){g=0;while(1){l=b[h>>1]|0;c:do if((l&65535)>1){n=y+(g<<2)|0;o=c[n>>2]|0;p=h+4|0;q=c[p>>2]|0;m=1;while(1){k=c[q+(m<<3)>>2]|0;if((o|0)<(k|0)){j=m;break}m=m+1|0;if(m>>>0>=(l&65535)>>>0)break c}x=j+-1|0;w=c[q+(x<<3)>>2]|0;j=og(o-w|0,(c[q+(j<<3)+4>>2]|0)-(c[q+(x<<3)+4>>2]|0)|0,k-w|0)|0;c[n>>2]=(c[(c[p>>2]|0)+(x<<3)+4>>2]|0)+j;j=c[z>>2]|0}while(0);g=g+1|0;if(g>>>0>=j>>>0)break;else h=h+8|0}}c[B>>2]=nq(d,f,y)|0;f=y;Ag(A,f);f=c[B>>2]|0;i=C;return f|0}function qq(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=c[a+692>>2]|0;if(h>>>0>e>>>0){i=c[a+696>>2]|0;if(b[a+210>>1]|0){e=e<<2;g=d[i+(e|1)>>0]<<16|d[i+e>>0]<<24|d[i+(e|2)>>0]<<8|d[i+(e|3)>>0];if((e+8|0)>(h<<2|0))h=g;else{h=g;g=d[i+(e+5)>>0]<<16|d[i+(e+4)>>0]<<24|d[i+(e+6)>>0]<<8|d[i+(e+7)>>0]}}else{e=e<<1;g=d[i+e>>0]<<8|d[i+(e|1)>>0];if((e+4|0)>(h<<1|0))e=g;else e=d[i+(e+2)>>0]<<8|d[i+(e+3)>>0];h=g<<1;g=e<<1}e=c[a+664>>2]|0;if(h>>>0>e>>>0){a=0;h=0;c[f>>2]=h;return a|0}}else{e=c[a+664>>2]|0;h=0;g=0}i=g>>>0>e>>>0?e:g;a=h;h=(i>>>0>>0?e:i)-h|0;c[f>>2]=h;return a|0}function rq(a,b,d){a=a|0;b=b|0;d=d|0;if(gfa(b,86296)|0){d=12;return d|0}if((c[d>>2]|0)!=35){d=7;return d|0}c[a+68>>2]=35;d=0;return d|0}function sq(a,b,d){a=a|0;b=b|0;d=d|0;if(gfa(b,86296)|0){d=12;return d|0}c[d>>2]=c[a+68>>2];d=0;return d|0}function tq(a){a=a|0;return 0}function uq(a){a=a|0;return}function vq(a,b){a=a|0;b=b|0;return Jg(88752,b)|0}function wq(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=i;i=i+1904|0;D=J+1896|0;H=J;t=J+1500|0;A=J+1504|0;z=J+1880|0;I=J+1884|0;E=f+132|0;c[f>>2]=1;h=f+96|0;F=Ah(c[h>>2]|0,89040)|0;c[f+484>>2]=F;G=zh(c[(c[h>>2]|0)+4>>2]|0,89064)|0;C=f+488|0;c[C>>2]=G;if(!G){f=11;i=J;return f|0}c[f+548>>2]=zh(c[(c[h>>2]|0)+4>>2]|0,86544)|0;u=c[C>>2]|0;sfa(A|0,0,376)|0;c[f+532>>2]=-1;c[f+536>>2]=-1;B=f+540|0;c[B>>2]=0;c[f+280>>2]=7;c[f+284>>2]=1;c[f+172>>2]=4;c[f+348>>2]=3932;c[f+276>>2]=2596864;j=c[f+104>>2]|0;v=f+100|0;e=c[v>>2]|0;s=u+4|0;Yd[c[c[s>>2]>>2]&63](A,0,0,e);p=A+72|0;c[p>>2]=j;r=A+80|0;x=A+76|0;m=A+92|0;y=A+93|0;c[x+0>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;b[x+16>>1]=0;a[x+18>>0]=0;h=Jt(j,88720,14)|0;c[H>>2]=h;if(h)if((h&255|0)==2){h=Jt(j,88736,10)|0;c[H>>2]=h;if(!h)w=5;else w=22}else w=22;else w=5;a:do if((w|0)==5){h=bh(j,0)|0;c[H>>2]=h;if(!h){k=Nh(j,D)|0;h=c[D>>2]|0;do if(!h){if((k+32767&65535)<2){h=ei(j,D)|0;o=c[D>>2]|0;if(o){h=o;break}c[H>>2]=0;if(k<<16>>16==-32767)a[m>>0]=1;else w=12}else{c[H>>2]=0;w=12}if((w|0)==12){h=bh(j,0)|0;c[H>>2]=h;if(h){w=22;break a}h=c[j+4>>2]|0}if(!(c[j+20>>2]|0)){c[x>>2]=(c[j>>2]|0)+(c[j+8>>2]|0);c[r>>2]=h;a[y>>0]=1;h=Mh(j,h)|0;c[H>>2]=h;if(h){w=22;break a}h=c[r>>2]|0}else{o=yg(e,h,H)|0;c[x>>2]=o;k=c[H>>2]|0;if(k){h=k;w=22;break a}o=Lh(j,o,h)|0;c[H>>2]=o;if(o){h=o;w=22;break a}c[r>>2]=h}n=c[x>>2]|0;c[A+4>>2]=n;c[A>>2]=n;c[A+8>>2]=n+h;c[z>>2]=0;l=h;w=26;break a}while(0);c[H>>2]=h;w=22}else w=22}while(0);if((w|0)==22){if(!(a[y>>0]|0)){Ag(e,c[x>>2]|0);c[x>>2]=0;h=c[H>>2]|0}c[z>>2]=h;if(!h){n=c[x>>2]|0;l=c[r>>2]|0;w=26}}b:do if((w|0)==26?(q=Kt(f,A,n,l)|0,c[z>>2]=q,(q|0)==0):0){p=c[p>>2]|0;q=c[A+16>>2]|0;c[H>>2]=0;c:do if(a[m>>0]|0){e=Qh(p)|0;k=A+88|0;c[k>>2]=0;while(1){j=Nh(p,D)|0;h=c[D>>2]|0;if(h){w=33;break}if((j+32767&65535)>=2){w=31;break}o=ei(p,D)|0;h=c[D>>2]|0;if(h){w=33;break}c[H>>2]=0;if(j<<16>>16!=-32766)break;c[k>>2]=(c[k>>2]|0)+o;h=Mh(p,o)|0;c[H>>2]=h;if(h){w=86;break c}}if((w|0)==31)c[H>>2]=0;else if((w|0)==33){c[H>>2]=h;break}if(!(c[k>>2]|0)){c[H>>2]=3;h=3;w=86;break}h=bh(p,e)|0;c[H>>2]=h;if(!h){o=A+84|0;c[o>>2]=yg(q,c[k>>2]|0,H)|0;h=c[H>>2]|0;if(!h){c[k>>2]=0;j=Nh(p,D)|0;h=c[D>>2]|0;d:do if(!h)while(1){if((j+32767&65535)>=2){h=0;w=43;break d}e=ei(p,D)|0;h=c[D>>2]|0;if(h){w=43;break d}c[H>>2]=0;if(j<<16>>16!=-32766)break d;h=Lh(p,(c[o>>2]|0)+(c[k>>2]|0)|0,e)|0;c[H>>2]=h;if(h){w=86;break c}c[k>>2]=(c[k>>2]|0)+e;j=Nh(p,D)|0;h=c[D>>2]|0;if(h){w=43;break}}else w=43;while(0);if((w|0)==43)c[H>>2]=h;c[H>>2]=0;h=o;w=83}else w=86}else w=86}else{o=c[x>>2]|0;j=c[r>>2]|0;n=A+8|0;p=A+32|0;m=A+12|0;l=A+28|0;h=o;e=j;k=o;j=o+j|0;e:while(1){while(1){o=k;k=k+1|0;if(((((a[o>>0]|0)==101&(o+9|0)>>>0>>0?(a[k>>0]|0)==101:0)?(a[o+2>>0]|0)==120:0)?(a[o+3>>0]|0)==101:0)?(a[o+4>>0]|0)==99:0)break;if(k>>>0>=j>>>0){w=56;break e}}c[A>>2]=h;k=o+10|0;c[n>>2]=k;if(h>>>0>>0){do{if((a[h>>0]|0)==101?(hfa(h,86568,5)|0)==0:0)break e;Bd[c[p>>2]&511](A);if(c[m>>2]|0)break;Bd[c[l>>2]&511](A);h=c[A>>2]|0}while(h>>>0>>0);o=c[x>>2]|0;j=c[r>>2]|0}else{o=h;j=e}h=o;e=j;j=o+j|0}if((w|0)==56){c[H>>2]=3;h=3;w=86;break}c[n>>2]=(c[x>>2]|0)+(c[r>>2]|0);Bd[c[p>>2]&511](A);h=c[A>>2]|0;j=c[n>>2]|0;f:do if(h>>>0>>0){while(1){w=a[h>>0]|0;if(!(w<<24>>24==10|w<<24>>24==13|w<<24>>24==9|w<<24>>24==32)){p=h;break}h=h+1|0;if(h>>>0>=j>>>0)break f}k=c[x>>2]|0;e=k-p+(c[r>>2]|0)|0;if(!(a[y>>0]|0)){a[A+94>>0]=1;c[A+84>>2]=k;c[A+88>>2]=e;c[x>>2]=0;c[r>>2]=0}else{k=yg(q,e+1|0,H)|0;c[A+84>>2]=k;h=c[H>>2]|0;if(h){w=86;break c}c[A+88>>2]=e}o=p+3|0;g:do if(o>>>0>>0){h=d[p>>0]|0;if((h+-48|0)>>>0>=10)switch(h|0){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break g}h=d[p+1>>0]|0;if((h+-48|0)>>>0>=10)switch(h|0){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break g}h=d[p+2>>0]|0;if((h+-48|0)>>>0>=10)switch(h|0){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break g}h=d[o>>0]|0;if((h+-48|0)>>>0>=10)switch(h|0){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break g}c[A>>2]=p;h=A+84|0;w=A+88|0;Qd[c[(c[s>>2]|0)+24>>2]&127](A,k,e,t,0)|0;k=c[t>>2]|0;c[w>>2]=k;a[(c[h>>2]|0)+k>>0]=0;k=w;w=83;break c}while(0);rfa(k|0,p|0,e|0)|0;k=A+88|0;h=A+84|0;w=83;break c}while(0);c[H>>2]=3;h=3;w=86}while(0);do if((w|0)==83){Ud[c[u+16>>2]&255](c[h>>2]|0,c[k>>2]|0,-9871);if((c[k>>2]|0)>>>0<4){c[H>>2]=3;h=3;w=86;break}else{a[c[h>>2]>>0]=32;a[(c[h>>2]|0)+1>>0]=32;a[(c[h>>2]|0)+2>>0]=32;a[(c[h>>2]|0)+3>>0]=32;h=c[h>>2]|0;c[A+4>>2]=h;c[A>>2]=h;c[A+8>>2]=h+(c[k>>2]|0);h=c[H>>2]|0;break}}while(0);if((w|0)==86){c[z>>2]=h;break}c[z>>2]=h;if((h|0)==0?(u=Kt(f,A,c[A+84>>2]|0,c[A+88>>2]|0)|0,c[z>>2]=u,(u|0)==0):0){e=f+176|0;a[e>>0]=d[e>>0]&254;e=f+528|0;h=c[e>>2]|0;do if(h){k=h+416|0;u=c[k>>2]|0;if((u|0)!=0?(u|0)!=(c[h+4>>2]|0):0)c[k>>2]=0;if(!((c[h>>2]|0)!=0?(c[h+4>>2]|0)!=0:0)){Lt(f);h=c[e>>2]|0}if(h){k=c[h+4>>2]|0;if(k){j=0;do{if(!(a[h+(j*12|0)+88>>0]|0)){w=100;break}j=j+1|0}while(j>>>0>>0);if((w|0)==100){Lt(f);h=c[e>>2]|0}if(!h){w=105;break}}h=c[B>>2]|0;if((h|0)!=0?(c[f+544>>2]=Dg(c[v>>2]|0,4,0,h,0,z)|0,(c[z>>2]|0)!=0):0){c[B>>2]=0;break b}}else w=105}else w=105;while(0);if((w|0)==105)c[B>>2]=0;t=c[A+152>>2]|0;c[f+416>>2]=t;h=A+328|0;if(c[h>>2]|0){c[h>>2]=0;c[f+404>>2]=c[A+312>>2];c[f+392>>2]=c[A+316>>2];c[f+408>>2]=c[A+340>>2];c[f+412>>2]=c[A+344>>2]}h=A+220|0;if((c[h>>2]|0)==0?(c[(c[f+128>>2]|0)+48>>2]|0)==0:0)c[z>>2]=3;c[h>>2]=0;c[f+396>>2]=c[A+208>>2];c[f+424>>2]=c[A+232>>2];c[f+428>>2]=c[A+236>>2];u=A+156|0;c[f+400>>2]=c[u>>2];v=A+180|0;l=f+420|0;c[l>>2]=c[v>>2];c[u>>2]=0;c[v>>2]=0;if((c[f+368>>2]|0)==1){q=c[A+116>>2]|0;h:do if((q|0)>0){r=f+384|0;s=f+388|0;n=A+124|0;if((t|0)>0){p=0;k=0;h=0}else{h=0;while(1){b[(c[r>>2]|0)+(h<<1)>>1]=0;c[(c[s>>2]|0)+(h<<2)>>2]=89072;h=h+1|0;if((h|0)==(q|0)){k=0;h=0;break h}}}do{b[(c[r>>2]|0)+(p<<1)>>1]=0;c[(c[s>>2]|0)+(p<<2)>>2]=89072;e=c[(c[n>>2]|0)+(p<<2)>>2]|0;i:do if(e){m=c[l>>2]|0;o=0;while(1){j=c[m+(o<<2)>>2]|0;if(!(gfa(e,j)|0))break;o=o+1|0;if((o|0)>=(t|0))break i}b[(c[r>>2]|0)+(p<<1)>>1]=o;c[(c[s>>2]|0)+(p<<2)>>2]=j;if(gfa(89072,j)|0){k=(p|0)<(k|0)?k:p+1|0;h=(p|0)<(h|0)?p:h}}while(0);p=p+1|0}while((p|0)!=(q|0))}else{k=0;h=0}while(0);c[f+376>>2]=h;c[f+380>>2]=k;c[f+372>>2]=c[A+96>>2]}}}while(0);h=c[A+148>>2]|0;if(h)Bd[h&511](A+100|0);h=c[A+256>>2]|0;if(h)Bd[h&511](A+208|0);h=c[A+204>>2]|0;if(h)Bd[h&511](A+156|0);h=c[A+308>>2]|0;if(h)Bd[h&511](A+260|0);h=c[A+364>>2]|0;if(h)Bd[h&511](A+316|0);h=c[A+16>>2]|0;v=A+84|0;Ag(h,c[v>>2]|0);c[v>>2]=0;if(!(a[y>>0]|0)){Ag(h,c[x>>2]|0);c[x>>2]=0}Bd[c[A+24>>2]&511](A);h=c[z>>2]|0;if((h|0)!=0|(g|0)<0){f=h;i=J;return f|0}if((g|0)>0){f=6;i=J;return f|0}q=f+416|0;c[f+16>>2]=c[q>>2];c[f+4>>2]=0;k=f+8|0;h=(a[f+156>>0]|0)==0?2577:2581;c[k>>2]=h;p=c[f+528>>2]|0;if(p)c[k>>2]=h|256;j=c[f+144>>2]|0;k=f+20|0;c[k>>2]=j;o=f+24|0;c[o>>2]=0;j:do if(!j){h=c[f+364>>2]|0;if(!h)w=152;else{c[k>>2]=h;w=152}}else{h=c[f+140>>2]|0;if(!h)w=152;else{k=a[h>>0]|0;k:do if(k<<24>>24){while(1){e=a[j>>0]|0;while(1){if(k<<24>>24==e<<24>>24){w=143;break}if(!(k<<24>>24==45|k<<24>>24==32)){w=147;break}h=h+1|0;k=a[h>>0]|0;if(!(k<<24>>24))break k}if((w|0)==143){w=0;h=h+1|0}else if((w|0)==147){w=0;if(!(e<<24>>24))break;else if(!(e<<24>>24==45|e<<24>>24==32)){w=152;break j}}k=a[h>>0]|0;if(!(k<<24>>24))break k;else j=j+1|0}c[o>>2]=h;if(!h){w=152;break j}else break j}while(0);c[o>>2]=90464}}while(0);do if((w|0)==152){h=c[f+148>>2]|0;if(!h){c[o>>2]=90464;break}else{c[o>>2]=h;break}}while(0);k=f+12|0;h=(c[f+152>>2]|0)!=0&1;c[k>>2]=h;j=c[f+148>>2]|0;do if(j){if((gfa(j,90488)|0)!=0?(gfa(j,86560)|0)!=0:0)break;c[k>>2]=h|2}while(0);c[f+28>>2]=0;c[f+32>>2]=0;e=f+460|0;c[f+52>>2]=c[e>>2]>>16;j=c[e+4>>2]>>16;c[f+56>>2]=j;m=(c[e+8>>2]|0)+65535>>16;c[f+60>>2]=m;e=(c[e+12>>2]|0)+65535>>16;c[f+64>>2]=e;k=f+68|0;h=b[k>>1]|0;if(!(h<<16>>16)){b[k>>1]=1e3;h=1e3}b[f+70>>1]=e;b[f+72>>1]=j;n=(((h&65535)*12|0)>>>0)/10|0;o=f+74|0;l=e-j|0;b[o>>1]=(n<<16>>16|0)<(l|0)?l:n;n=f+76|0;b[n>>1]=m;l=(c[C>>2]|0)+12|0;if(!(Td[c[c[l>>2]>>2]&3](H,f,0,0,c[f+420>>2]|0,p,0,0,198)|0)){a[H+70>>0]=1;a[H+68>>0]=0;c[H+1364>>2]=c[f+404>>2];c[H+1368>>2]=c[f+408>>2];c[H+1372>>2]=c[f+412>>2];c[H+1488>>2]=c[f+544>>2];c[H+1492>>2]=c[B>>2];if((c[q>>2]|0)>0){j=H+4|0;e=H+40|0;h=0;m=0;do{do if(!(Nt(H,m,D)|0)){k=c[(c[(c[j>>2]|0)+128>>2]|0)+48>>2]|0;if(!k)break;Cd[c[(c[k>>2]|0)+4>>2]&255](c[k+4>>2]|0,D)}while(0);C=c[e>>2]|0;h=(m|0)==0|(C|0)>(h|0)?C:h;m=m+1|0}while((m|0)<(c[q>>2]|0))}else h=0;Bd[c[(c[l>>2]|0)+4>>2]&511](H);b[n>>1]=(lg(h)|0)>>>16}b[f+78>>1]=b[o>>1]|0;b[f+80>>1]=b[E+26>>1]|0;b[f+82>>1]=b[f+160>>1]|0;if(!F){f=0;i=J;return f|0}k=c[G+20>>2]|0;c[I>>2]=f;j=I+8|0;b[j>>1]=3;l=I+10|0;b[l>>1]=1;m=I+4|0;c[m>>2]=1970170211;h=k+12|0;e=qh(c[h>>2]|0,0,I,0)|0;if(!((e|0)==0|(e&255|0)==163)){f=e;i=J;return f|0}b[j>>1]=7;j=c[f+368>>2]|0;if((j|0)==2){c[m>>2]=1094995778;b[l>>1]=0;h=k}else if((j|0)==1){c[m>>2]=1094992451;b[l>>1]=2;h=k+8|0}else if((j|0)==3){c[m>>2]=1818326065;b[l>>1]=3}else if((j|0)==4){c[m>>2]=1094992453;b[l>>1]=1;h=k+4|0}else{f=0;i=J;return f|0}h=c[h>>2]|0;if(!h){f=0;i=J;return f|0}f=qh(h,0,I,0)|0;i=J;return f|0}function xq(a){a=a|0;var b=0,d=0,e=0,f=0;if(!a)return;f=c[a+100>>2]|0;b=a+132|0;d=a+544|0;e=c[d>>2]|0;if(e){Ag(f,e);c[d>>2]=0;c[a+540>>2]=0}Lt(a);c[a+528>>2]=0;Ag(f,c[b>>2]|0);c[b>>2]=0;b=a+136|0;Ag(f,c[b>>2]|0);c[b>>2]=0;b=a+140|0;Ag(f,c[b>>2]|0);c[b>>2]=0;b=a+144|0;Ag(f,c[b>>2]|0);c[b>>2]=0;b=a+148|0;Ag(f,c[b>>2]|0);c[b>>2]=0;b=a+428|0;Ag(f,c[b>>2]|0);c[b>>2]=0;b=a+424|0;Ag(f,c[b>>2]|0);c[b>>2]=0;b=a+420|0;Ag(f,c[b>>2]|0);c[b>>2]=0;b=a+408|0;Ag(f,c[b>>2]|0);c[b>>2]=0;b=a+412|0;Ag(f,c[b>>2]|0);c[b>>2]=0;b=a+392|0;Ag(f,c[b>>2]|0);c[b>>2]=0;b=a+396|0;Ag(f,c[b>>2]|0);c[b>>2]=0;b=a+400|0;Ag(f,c[b>>2]|0);c[b>>2]=0;b=a+372|0;e=b+12|0;Ag(f,c[e>>2]|0);c[e>>2]=0;b=b+16|0;Ag(f,c[b>>2]|0);c[b>>2]=0;b=a+364|0;Ag(f,c[b>>2]|0);c[b>>2]=0;b=c[a+492>>2]|0;if(b){e=b+36|0;Ag(f,c[e>>2]|0);c[e>>2]=0;c[b+40>>2]=0;e=b+28|0;Ag(f,c[e>>2]|0);c[e>>2]=0;c[b+32>>2]=0;Ag(f,b)}c[a+20>>2]=0;c[a+24>>2]=0;return}function yq(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=c[a>>2]|0;b=c[d+548>>2]|0;d=yh(c[(c[d+96>>2]|0)+4>>2]|0,86544)|0;if(!((d|0)!=0&(b|0)!=0)){e=0;i=f;return e|0}b=c[b>>2]|0;if(!b){e=0;i=f;return e|0}b=Ed[b&511](d)|0;if(!b){e=0;i=f;return e|0}d=c[a>>2]|0;b=Hd[c[b>>2]&255](c[d+100>>2]|0,d+168|0,e)|0;if(b){e=b;i=f;return e|0}c[a+40>>2]=c[e>>2];e=0;i=f;return e|0}function zq(a){a=a|0;var b=0,d=0,e=0,f=0;d=a+40|0;if(!(c[d>>2]|0))return;b=c[a>>2]|0;a=c[b+548>>2]|0;b=yh(c[(c[b+96>>2]|0)+4>>2]|0,86544)|0;if(((b|0)!=0&(a|0)!=0?(e=c[a>>2]|0,(e|0)!=0):0)?(f=Ed[e&511](b)|0,(f|0)!=0):0)Bd[c[f+8>>2]&511](c[d>>2]|0);c[d>>2]=0;return}function Aq(a){a=a|0;var b=0,d=0;b=c[a+4>>2]|0;d=c[b+548>>2]|0;if(!d)return 0;b=yh(c[(c[b+96>>2]|0)+4>>2]|0,86544)|0;if(!b)return 0;d=Ed[c[d+4>>2]&511](b)|0;c[(c[a+156>>2]|0)+36>>2]=d;return 0}function Bq(a){a=a|0;c[(c[a+156>>2]|0)+36>>2]=0;return}function Cq(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+1552|0;y=D+48|0;u=D;C=D+16|0;A=D+24|0;t=D+40|0;B=c[d+4>>2]|0;k=c[(c[B+488>>2]|0)+12>>2]|0;if((c[B+16>>2]|0)>>>0<=g>>>0?(c[(c[B+128>>2]|0)+48>>2]|0)==0:0){C=6;i=D;return C|0}n=(h&1024|0)==0?h:h|3;p=(f|0)!=0;if(p){c[d+172>>2]=c[f+16>>2];h=c[f+20>>2]|0}else{c[d+172>>2]=65536;h=65536}c[d+176>>2]=h;x=d+108|0;b[d+110>>1]=0;b[x>>1]=0;q=(n&1|0)==0;if(q)v=(n>>>1&1^1)&255;else v=0;o=d+72|0;c[o>>2]=1869968492;h=Td[c[k>>2]&3](y,B,f,d,c[B+420>>2]|0,c[B+528>>2]|0,v,n>>>16&15,198)|0;if(h){C=h;i=D;return C|0}j=n&1024;a[y+69>>0]=j>>>10;c[y+1364>>2]=c[B+404>>2];c[y+1368>>2]=c[B+408>>2];c[y+1372>>2]=c[B+412>>2];c[y+1488>>2]=c[B+544>>2];c[y+1492>>2]=c[B+540>>2];h=Nt(y,g,C)|0;if(h){Bd[c[k+4>>2]&511](y);C=h;i=D;return C|0}l=y+1376|0;c[u+0>>2]=c[l+0>>2];c[u+4>>2]=c[l+4>>2];c[u+8>>2]=c[l+8>>2];c[u+12>>2]=c[l+12>>2];l=c[y+1392>>2]|0;m=c[y+1396>>2]|0;Bd[c[k+4>>2]&511](y);g=d+124|0;c[g>>2]=c[g>>2]&1|4;if(!j){r=d+24|0;k=y+40|0;s=d+40|0;c[s>>2]=(lg(c[k>>2]|0)|0)>>16;c[d+56>>2]=(lg(c[k>>2]|0)|0)>>16;a[(c[d+156>>2]|0)+8>>0]=0;n=(n&16|0)!=0;if(n){h=B+460|0;h=(c[h+12>>2]|0)-(c[h+4>>2]|0)>>16;c[d+52>>2]=h}else{h=y+44|0;c[d+52>>2]=(lg(c[h>>2]|0)|0)>>16;h=(lg(c[h>>2]|0)|0)>>16}c[d+60>>2]=h;c[o>>2]=1869968492;if(p?(e[f+14>>1]|0)<24:0)c[g>>2]=c[g>>2]|256;if(!((((c[u>>2]|0)==65536?(c[u+12>>2]|0)==65536:0)?(c[u+4>>2]|0)==0:0)?(c[u+8>>2]|0)==0:0))Wg(x,u);if(m|l)Xg(x,l,m);c[t>>2]=c[s>>2];f=t+4|0;c[f>>2]=0;Yg(t,u);c[s>>2]=(c[t>>2]|0)+l;c[t>>2]=0;l=d+52|0;c[f>>2]=c[l>>2];Yg(t,u);c[l>>2]=(c[f>>2]|0)+m;if(q){j=c[y+16>>2]|0;h=c[j+4>>2]|0;k=c[d+172>>2]|0;g=c[d+176>>2]|0;if(!(v<<24>>24!=0?(c[y+72>>2]|0)!=0:0))z=28;if((z|0)==28?(w=b[j+2>>1]|0,w<<16>>16>0):0){j=w<<16>>16;while(1){c[h>>2]=qg(c[h>>2]|0,k)|0;z=h+4|0;c[z>>2]=qg(c[z>>2]|0,g)|0;j=j+-1|0;if((j|0)<=0)break;else h=h+8|0}}c[s>>2]=qg(c[s>>2]|0,k)|0;c[l>>2]=qg(c[l>>2]|0,g)|0}Ih(x,A);y=c[A>>2]|0;c[r>>2]=(c[A+8>>2]|0)-y;z=c[A+12>>2]|0;c[d+28>>2]=z-(c[A+4>>2]|0);c[d+32>>2]=y;c[d+36>>2]=z;if(n)hh(r,c[l>>2]|0)}else{A=c[d+156>>2]|0;c[d+32>>2]=(lg(c[y+32>>2]|0)|0)>>16;c[d+40>>2]=(lg(c[y+40>>2]|0)|0)>>16;z=A+12|0;c[z+0>>2]=c[u+0>>2];c[z+4>>2]=c[u+4>>2];c[z+8>>2]=c[u+8>>2];c[z+12>>2]=c[u+12>>2];c[A+28>>2]=l;c[A+32>>2]=m;a[A+8>>0]=1}k=d+136|0;c[k>>2]=c[C>>2];j=d+140|0;c[j>>2]=c[C+4>>2];h=c[(c[B+128>>2]|0)+48>>2]|0;if(!h){C=0;i=D;return C|0}Cd[c[(c[h>>2]|0)+4>>2]&255](c[h+4>>2]|0,C);c[k>>2]=0;c[j>>2]=0;C=0;i=D;return C|0}function Dq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;c[e>>2]=0;i=e+4|0;c[i>>2]=0;f=c[a+492>>2]|0;if(!f)return 0;a=c[f+36>>2]|0;h=b<<16|d;f=(c[f+40>>2]|0)+-1|0;a:do if((f|0)>=0){g=a+(f<<4)|0;b:while(1){b=g;while(1){f=(b-a>>4|0)/2|0;d=c[a+(f<<4)>>2]<<16|c[a+(f<<4)+4>>2];if((d|0)==(h|0))break b;if(d>>>0>=h>>>0)break;a=a+(f+1<<4)|0;if(a>>>0>g>>>0)break a}f=f+-1|0;if((f|0)<0)break a;else g=a+(f<<4)|0}c[e>>2]=c[a+(f<<4)+8>>2];c[i>>2]=c[a+(f<<4)+12>>2];return 0}while(0);c[e>>2]=0;c[i>>2]=0;return 0}function Eq(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+32|0;v=D+24|0;k=D;C=D+20|0;l=e+28|0;B=c[l>>2]|0;c[C>>2]=2;h=a+132|0;f=yg(B,44,C)|0;if((c[C>>2]|0)==0?(n=e+4|0,z=Uh(e,c[n>>2]|0)|0,c[C>>2]=z,(z|0)==0):0){w=f+4|0;x=a+460|0;c[w+0>>2]=c[x+0>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];y=f+20|0;c[y>>2]=c[x+12>>2];z=f+24|0;c[z>>2]=c[x+4>>2];j=(c[a+488>>2]|0)+24|0;g=c[j>>2]|0;if(g){g=Xd[c[g>>2]&255](k,c[l>>2]|0,c[e+32>>2]|0,c[e+36>>2]|0)|0;c[C>>2]=g;if(!g){c[k+8>>2]=f;c[k+12>>2]=89;c[k+16>>2]=h;c[C>>2]=Ed[c[(c[j>>2]|0)+8>>2]&511](k)|0;Bd[c[(c[j>>2]|0)+4>>2]&511](k);g=c[C>>2]|0}if((((g&255|0)==2?(t=c[e+32>>2]|0,m=c[n>>2]|0,m>>>0>6):0)?(d[t+1>>0]|0)<4:0)?(d[t+4>>0]<<16|d[t+5>>0]<<24|d[t+3>>0]<<8|d[t+2>>0]|0)==(m|0):0){u=c[l>>2]|0;h=c[e+36>>2]|0;c[v>>2]=0;a:do if((t+101|0)>>>0<=h>>>0){g=d[t+100>>0]<<8|d[t+99>>0];if(((t+(g+135)|0)>>>0<=h>>>0?(d[t+(g+118)>>0]<<8|d[t+(g+117)>>0])>>>0>=18:0)?(o=d[t+(g+133)>>0]<<16|d[t+(g+134)>>0]<<24|d[t+(g+132)>>0]<<8|d[t+(g+131)>>0],p=t+o|0,(o|0)!=0):0){q=o+2|0;r=t+q|0;if(r>>>0>h>>>0){c[v>>2]=2;A=33;break}g=d[t+(o+1)>>0]<<8|d[p>>0];s=f+40|0;c[s>>2]=g;if((t+((g<<2)+q)|0)>>>0>h>>>0){c[v>>2]=2;A=33;break}if(g){h=Dg(u,16,0,g,0,v)|0;p=f+36|0;c[p>>2]=h;if(!(c[v>>2]|0)){k=(c[s>>2]<<2)+q|0;m=t+k|0;o=c[a+92>>2]|0;n=c[a+36>>2]|0;b:do if((n|0)>0){j=c[a+40>>2]|0;l=0;while(1){g=c[j+(l<<2)>>2]|0;l=l+1|0;if((b[g+8>>1]|0)==7)break;if((l|0)>=(n|0))break b}t=ph(a,g)|0;c[v>>2]=t;if(t){A=33;break a}}while(0);if((q|0)<(k|0)){g=r;while(1){c[h>>2]=Zg(a,d[g>>0]|0)|0;c[h+4>>2]=Zg(a,d[g+1>>0]|0)|0;c[h+8>>2]=(d[g+3>>0]<<8|d[g+2>>0])<<16>>16;c[h+12>>2]=0;g=g+4|0;if(g>>>0>=m>>>0)break;else h=h+16|0}}if(!o)g=c[v>>2]|0;else{g=ph(a,o)|0;c[v>>2]=g}if(g){A=33;break}Tca(c[p>>2]|0,c[s>>2]|0,16,199);if(!(c[v>>2]|0))g=0;else A=33}else A=33}else g=0}else g=0}else{c[v>>2]=2;A=33}while(0);if((A|0)==33){g=f+36|0;Ag(u,c[g>>2]|0);c[g>>2]=0;c[f+40>>2]=0;g=c[v>>2]|0}c[C>>2]=g}if(!g)A=36}else A=36;if((A|0)==36){c[x+0>>2]=c[w+0>>2];c[x+4>>2]=c[w+4>>2];c[x+8>>2]=c[w+8>>2];c[x+12>>2]=c[w+12>>2];c[a+52>>2]=c[w>>2]>>16;c[a+56>>2]=c[f+8>>2]>>16;c[a+60>>2]=(c[f+12>>2]|0)+65535>>16;c[a+64>>2]=(c[f+16>>2]|0)+65535>>16;b[a+70>>1]=((c[y>>2]|0)+32768|0)>>>16;b[a+72>>1]=((c[z>>2]|0)+32768|0)>>>16;if(c[f+40>>2]|0){A=a+8|0;c[A>>2]=c[A>>2]|64;c[a+492>>2]=f;f=0}}Xh(e)}if(!f){C=c[C>>2]|0;i=D;return C|0}A=f+36|0;Ag(B,c[A>>2]|0);c[A>>2]=0;c[f+40>>2]=0;A=f+28|0;Ag(B,c[A>>2]|0);c[A>>2]=0;c[f+32>>2]=0;Ag(B,f);C=c[C>>2]|0;i=D;return C|0}function Fq(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+1520|0;l=m+1504|0;k=m;if(f&16){if(!e){k=0;i=m;return k|0}sfa(g|0,0,e<<2|0)|0;k=0;i=m;return k|0}f=Td[c[c[(c[b+488>>2]|0)+12>>2]>>2]&3](k,b,0,0,c[b+420>>2]|0,c[b+528>>2]|0,0,0,198)|0;if(f){k=f;i=m;return k|0}a[k+70>>0]=1;a[k+68>>0]=0;c[k+1364>>2]=c[b+404>>2];c[k+1368>>2]=c[b+408>>2];c[k+1372>>2]=c[b+412>>2];c[k+1488>>2]=c[b+544>>2];c[k+1492>>2]=c[b+540>>2];if(!e){k=0;i=m;return k|0}f=k+4|0;b=k+40|0;j=0;do{if(!(Nt(k,j+d|0,l)|0)){h=c[(c[(c[f>>2]|0)+128>>2]|0)+48>>2]|0;if(h)Cd[c[(c[h>>2]|0)+4>>2]&255](c[h+4>>2]|0,l);c[g+(j<<2)>>2]=(lg(c[b>>2]|0)|0)>>16}else c[g+(j<<2)>>2]=0;j=j+1|0}while((j|0)!=(e|0));f=0;i=m;return f|0}function Gq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=c[a>>2]|0;d=c[e+548>>2]|0;e=yh(c[(c[e+96>>2]|0)+4>>2]|0,86544)|0;if((e|0)!=0&(d|0)!=0?(f=c[d>>2]|0,(f|0)!=0):0){d=Ed[f&511](e)|0;jh(c[a>>2]|0,b);if(!d)return 0;Qd[c[d+4>>2]&127](c[a+40>>2]|0,c[a+16>>2]|0,c[a+20>>2]|0,0,0)|0;return 0}jh(c[a>>2]|0,b);return 0}function Hq(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;k=l;if((Xd[c[d+52>>2]&255](d,6,k,3)|0)<0){c[d+12>>2]=3;i=l;return}j=k+12|0;e=c[j>>2]|0;e=(e|0)<0?0-e|0:e;if(!e){c[d+12>>2]=3;i=l;return}b[a+68>>1]=rg(1e3,e)|0;if((e|0)==65536){f=k+8|0;g=k+16|0;h=k+4|0;e=c[j>>2]|0;d=c[k+20>>2]|0}else{c[k>>2]=rg(c[k>>2]|0,e)|0;h=k+4|0;c[h>>2]=rg(c[h>>2]|0,e)|0;f=k+8|0;c[f>>2]=rg(c[f>>2]|0,e)|0;g=k+16|0;c[g>>2]=rg(c[g>>2]|0,e)|0;m=k+20|0;d=rg(c[m>>2]|0,e)|0;c[m>>2]=d;e=c[j>>2]>>31&-131072|65536;c[j>>2]=e}c[a+436>>2]=c[k>>2];c[a+444>>2]=c[h>>2];c[a+440>>2]=c[f>>2];c[a+448>>2]=e;c[a+452>>2]=c[g>>2]>>16;c[a+456>>2]=d>>16;i=l;return}function Iq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;i=i+16|0;h=v;r=c[d+8>>2]|0;g=c[b+488>>2]|0;t=d+28|0;Bd[c[t>>2]&511](d);j=c[d>>2]|0;if(j>>>0>=r>>>0){c[d+12>>2]=3;i=v;return}s=a[j>>0]|0;e=s<<24>>24==91;if(!(((s&255)+-48|0)>>>0<10|e)){if((j+17|0)>>>0>>0?(hfa(j,90104,16)|0)==0:0){c[b+368>>2]=2;i=v;return}if((j+15|0)>>>0>>0?(hfa(j,90128,14)|0)==0:0){c[b+368>>2]=4;i=v;return}if((j+18|0)>>>0>>0?(hfa(j,90144,17)|0)==0:0){c[b+368>>2]=3;i=v;return}c[d+12>>2]=162;i=v;return}s=d+100|0;f=c[d+16>>2]|0;if(e){c[d>>2]=j+1;q=256;k=1}else{q=Ed[c[d+36>>2]&511](d)|0;k=0}Bd[c[t>>2]&511](d);if((c[d>>2]|0)>>>0>=r>>>0){i=v;return}c[b+372>>2]=q;c[d+96>>2]=q;c[b+384>>2]=Dg(f,2,0,q,0,h)|0;e=c[h>>2]|0;if(!e){c[b+388>>2]=Dg(f,4,0,q,0,h)|0;e=c[h>>2]|0;if(!e){e=Hd[c[c[g>>2]>>2]&255](s,q,f)|0;c[h>>2]=e;if(!e){if((q|0)>0){e=d+144|0;f=0;do{Xd[c[e>>2]&255](s,f,89072,8)|0;f=f+1|0}while((f|0)!=(q|0))}Bd[c[t>>2]&511](d);e=c[d>>2]|0;a:do if(e>>>0>>0){n=k<<24>>24==0;o=d+32|0;p=d+12|0;k=k<<24>>24!=0;j=d+144|0;l=d+124|0;m=d+36|0;g=0;b:while(1){h=a[e>>0]|0;if(h<<24>>24==93){f=23;break}else if(h<<24>>24==100?(u=e+3|0,u>>>0>>0):0){if((a[e+1>>0]|0)==101?(a[e+2>>0]|0)==102:0)switch(a[u>>0]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:{e=u;break a}default:{}}if(h<<24>>24==93){f=23;break}}do if(((h&255)+-48|0)>>>0>9&n){Bd[c[o>>2]&511](d);if(!(c[p>>2]|0)){f=e;h=g}else{f=48;break b}}else{if(k)h=g;else{h=Ed[c[m>>2]&511](d)|0;Bd[c[t>>2]&511](d);e=c[d>>2]|0}if((e+2|0)>>>0>>0?(a[e>>0]|0)==47&(g|0)<(q|0):0){f=e+1|0;c[d>>2]=f;Bd[c[o>>2]&511](d);e=c[d>>2]|0;if(e>>>0>=r>>>0){f=48;break b}if(c[p>>2]|0){f=48;break b}e=e-f|0;w=Xd[c[j>>2]&255](s,h,f,e+1|0)|0;c[p>>2]=w;if(w){f=48;break b}a[(c[(c[l>>2]|0)+(h<<2)>>2]|0)+e>>0]=0;h=g+1|0;break}if(k){f=34;break b}else{f=e;h=g}}while(0);Bd[c[t>>2]&511](d);e=c[d>>2]|0;if(e>>>0>=r>>>0){e=f;break a}else g=h}if((f|0)==23){e=e+1|0;break}else if((f|0)==34){c[p>>2]=2;i=v;return}else if((f|0)==48){i=v;return}}else e=j;while(0);c[b+368>>2]=1;c[d>>2]=e;i=v;return}}}c[d+12>>2]=e;i=v;return}function Jq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+16|0;x=z;p=e+316|0;q=c[e+16>>2]|0;h=c[b+488>>2]|0;v=e+28|0;Bd[c[v>>2]&511](e);y=c[e>>2]|0;w=e+8|0;if(y>>>0<(c[w>>2]|0)>>>0?(a[y>>0]|0)==91:0){Bd[c[e+32>>2]&511](e);Bd[c[v>>2]&511](e);y=c[e>>2]|0;if(y>>>0<(c[w>>2]|0)>>>0?(a[y>>0]|0)==93:0){i=z;return}c[e+12>>2]=3;i=z;return}r=e+36|0;s=Ed[c[r>>2]&511](e)|0;t=e+32|0;Bd[c[t>>2]&511](e);y=e+12|0;if(c[y>>2]|0){i=z;return}Bd[c[v>>2]&511](e);u=e+312|0;if(!((c[u>>2]|0)==0?(f=Hd[c[c[h>>2]>>2]&255](p,s,q)|0,c[x>>2]=f,(f|0)!=0):0))g=9;a:do if((g|0)==9){f=c[e>>2]|0;b:do if((f+4|0)>>>0<(c[w>>2]|0)>>>0){o=b+128|0;n=b+172|0;l=h+16|0;m=e+360|0;while(1){if(hfa(f,88704,3)|0)break b;Bd[c[t>>2]&511](e);k=Ed[c[r>>2]&511](e)|0;f=c[(c[o>>2]|0)+48>>2]|0;b=c[w>>2]|0;Bd[c[v>>2]&511](e);h=c[e>>2]|0;if(h>>>0>=b>>>0){g=16;break}if(((d[h>>0]|0)+-48|0)>>>0>=10){g=16;break}g=Ed[c[r>>2]&511](e)|0;Bd[c[t>>2]&511](e);h=c[e>>2]|0;j=h+1|0;if((g|0)<=-1){g=16;break}if((g|0)>=(b-j|0)){g=16;break}c[e>>2]=h+(g+1);if(c[y>>2]|0){g=35;break}Bd[c[t>>2]&511](e);if(c[y>>2]|0){g=35;break}Bd[c[v>>2]&511](e);f=c[e>>2]|0;if((f+4|0)>>>0<(c[w>>2]|0)>>>0?(hfa(f,88712,3)|0)==0:0){Bd[c[t>>2]&511](e);Bd[c[v>>2]&511](e)}if(!(c[u>>2]|0)){f=c[n>>2]|0;if((f|0)>-1){if((g|0)<(f|0)){g=27;break}h=yg(q,g,x)|0;f=c[x>>2]|0;if(f)break a;qfa(h|0,j|0,g|0)|0;Ud[c[l>>2]&255](h,g,4330);f=c[n>>2]|0;c[x>>2]=Xd[c[m>>2]&255](p,k,h+f|0,g-f|0)|0;Ag(q,h);f=c[x>>2]|0}else{f=Xd[c[m>>2]&255](p,k,j,g)|0;c[x>>2]=f}if(f)break a}f=c[e>>2]|0;if((f+4|0)>>>0>=(c[w>>2]|0)>>>0)break b}if((g|0)==16){if(f){i=z;return}c[y>>2]=3;i=z;return}else if((g|0)==27){c[x>>2]=3;f=3;break a}else if((g|0)==35){i=z;return}}while(0);if(c[u>>2]|0){i=z;return}c[u>>2]=s;i=z;return}while(0);c[y>>2]=f;i=z;return}function Kq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=i;i=i+16|0;I=K;D=K+4|0;H=e+208|0;G=e+156|0;F=e+260|0;z=c[e+16>>2]|0;k=c[b+488>>2]|0;A=e+8|0;B=c[A>>2]|0;C=e+36|0;g=Ed[c[C>>2]&511](e)|0;a:do if((g|0)>=0){if(!g){i=K;return}J=e+12|0;if(c[J>>2]|0){i=K;return}E=e+152|0;if(!(c[E>>2]|0)){h=g+6|0;f=Hd[c[c[k>>2]>>2]&255](H,h,z)|0;c[I>>2]=f;if(f){h=J;break}f=Hd[c[c[k>>2]>>2]&255](G,h,z)|0;c[I>>2]=f;if(f){h=J;break}f=Hd[c[c[k>>2]>>2]&255](F,4,z)|0;c[I>>2]=f;if(f){h=J;break}}u=e+28|0;Bd[c[u>>2]&511](e);f=c[e>>2]|0;do if(f>>>0>>0){v=e+32|0;w=b+128|0;x=e+200|0;y=e+180|0;t=b+172|0;s=g+5|0;q=k+16|0;r=e+252|0;b=0;p=0;l=0;b:while(1){o=(b|0)!=0;while(1){h=f+3|0;c:do if(h>>>0>>0){switch(a[h>>0]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:break;default:break c}h=a[f>>0]|0;if(h<<24>>24==100){if((a[f+1>>0]|0)!=101)break;if((a[f+2>>0]|0)==102&o){f=p;h=45;break b}if(h<<24>>24!=101)break}else if(h<<24>>24!=101)break;if((a[f+1>>0]|0)==110?(a[f+2>>0]|0)==100:0){f=p;h=45;break b}}while(0);Bd[c[v>>2]&511](e);if(c[J>>2]|0){h=63;break b}if((a[f>>0]|0)==47){g=f+1|0;if(g>>>0>=B>>>0){h=26;break b}j=c[e>>2]|0;f=c[(c[w>>2]|0)+48>>2]|0;k=c[A>>2]|0;Bd[c[u>>2]&511](e);h=c[e>>2]|0;if(h>>>0>=k>>>0){h=31;break b}if(((d[h>>0]|0)+-48|0)>>>0>=10){h=31;break b}m=Ed[c[C>>2]&511](e)|0;Bd[c[v>>2]&511](e);h=c[e>>2]|0;n=h+1|0;if((m|0)<=-1){h=31;break b}if((m|0)>=(k-n|0)){h=31;break b}c[e>>2]=h+(m+1);if(c[J>>2]|0){h=63;break b}if(!(c[E>>2]|0)){f=j;k=n;break}}Bd[c[u>>2]&511](e);f=c[e>>2]|0;if(f>>>0>=B>>>0){f=p;h=45;break b}}h=f-g|0;f=Xd[c[x>>2]&255](G,b,g,h+1|0)|0;c[I>>2]=f;if(f){h=J;break a}a[(c[(c[y>>2]|0)+(b<<2)>>2]|0)+h>>0]=0;if((a[g>>0]|0)==46){o=(gfa(89072,c[(c[y>>2]|0)+(b<<2)>>2]|0)|0)==0;g=o?1:p;l=o?b:l}else g=p;f=c[t>>2]|0;if((f|0)>-1&(b|0)<(s|0)){if((m|0)<=(f|0)){h=40;break}h=yg(z,m,I)|0;f=c[I>>2]|0;if(f){h=J;break a}qfa(h|0,k|0,m|0)|0;Ud[c[q>>2]&255](h,m,4330);f=c[t>>2]|0;c[I>>2]=Xd[c[r>>2]&255](H,b,h+f|0,m-f|0)|0;Ag(z,h);f=c[I>>2]|0}else{f=Xd[c[r>>2]&255](H,b,k,m)|0;c[I>>2]=f}b=b+1|0;if(f){h=J;break a}Bd[c[u>>2]&511](e);f=c[e>>2]|0;if(f>>>0>=B>>>0){f=g;h=45;break}else p=g}if((h|0)==26){c[I>>2]=3;h=J;f=3;break a}else if((h|0)==31){if(f){i=K;return}c[J>>2]=3;i=K;return}else if((h|0)==40){c[I>>2]=3;h=J;f=3;break a}else if((h|0)==45){c[E>>2]=b;if(!(f<<24>>24)){k=b;break}g=e+180|0;f=c[c[g>>2]>>2]|0;if(!(gfa(89072,f)|0)){i=K;return}k=e+304|0;j=e+184|0;f=Xd[c[k>>2]&255](F,0,f,c[c[j>>2]>>2]|0)|0;c[I>>2]=f;if(f){h=J;break a}h=e+232|0;b=e+236|0;f=Xd[c[k>>2]&255](F,1,c[c[h>>2]>>2]|0,c[c[b>>2]>>2]|0)|0;c[I>>2]=f;if(f){h=J;break a}f=Xd[c[k>>2]&255](F,2,c[(c[g>>2]|0)+(l<<2)>>2]|0,c[(c[j>>2]|0)+(l<<2)>>2]|0)|0;c[I>>2]=f;if(f){h=J;break a}f=Xd[c[k>>2]&255](F,3,c[(c[h>>2]|0)+(l<<2)>>2]|0,c[(c[b>>2]|0)+(l<<2)>>2]|0)|0;c[I>>2]=f;if(f){h=J;break a}g=e+200|0;h=e+284|0;j=e+288|0;f=Xd[c[g>>2]&255](G,l,c[c[h>>2]>>2]|0,c[c[j>>2]>>2]|0)|0;c[I>>2]=f;if(f){h=J;break a}b=e+252|0;f=Xd[c[b>>2]&255](H,l,c[(c[h>>2]|0)+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0)|0;c[I>>2]=f;if(f){h=J;break a}f=Xd[c[g>>2]&255](G,0,c[(c[h>>2]|0)+8>>2]|0,c[(c[j>>2]|0)+8>>2]|0)|0;c[I>>2]=f;if(f){h=J;break a}f=Xd[c[b>>2]&255](H,0,c[(c[h>>2]|0)+12>>2]|0,c[(c[j>>2]|0)+12>>2]|0)|0;c[I>>2]=f;if(f){h=J;break a}i=K;return}else if((h|0)==63){i=K;return}}else{c[E>>2]=0;k=0}while(0);a[D+0>>0]=a[88696]|0;a[D+1>>0]=a[88697]|0;a[D+2>>0]=a[88698]|0;a[D+3>>0]=a[88699]|0;a[D+4>>0]=a[88700]|0;b=e+304|0;f=Xd[c[b>>2]&255](F,0,c[c[e+180>>2]>>2]|0,c[c[e+184>>2]>>2]|0)|0;c[I>>2]=f;if(!f){f=Xd[c[b>>2]&255](F,1,c[c[e+232>>2]>>2]|0,c[c[e+236>>2]>>2]|0)|0;c[I>>2]=f;if(!f){h=e+200|0;f=Xd[c[h>>2]&255](G,0,89072,8)|0;c[I>>2]=f;if(!f){j=e+252|0;f=Xd[c[j>>2]&255](H,0,D,5)|0;c[I>>2]=f;if(!f){g=e+284|0;b=e+288|0;f=Xd[c[h>>2]&255](G,k,c[c[g>>2]>>2]|0,c[c[b>>2]>>2]|0)|0;c[I>>2]=f;if(!f){f=Xd[c[j>>2]&255](H,k,c[(c[g>>2]|0)+4>>2]|0,c[(c[b>>2]|0)+4>>2]|0)|0;c[I>>2]=f;if(!f){c[E>>2]=(c[E>>2]|0)+1;i=K;return}else h=J}else h=J}else h=J}else h=J}else h=J}else h=J}else{c[I>>2]=3;h=e+12|0;f=3}while(0);c[h>>2]=f;i=K;return}function Lq(a,b){a=a|0;b=b|0;b=b+372|0;c[b>>2]=c[b>>2]|1;return}function Mq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+256|0;r=u+64|0;t=u;q=u+8|0;s=u+56|0;l=b+60|0;Yd[c[l>>2]&63](b,r,16,t);d=c[t>>2]|0;a:do if((d|0)>=0)if((d|0)==0|(d|0)>16)d=3;else{m=c[b>>2]|0;n=b+8|0;o=c[n>>2]|0;p=a+528|0;if((d|0)>0){j=b+40|0;d=c[p>>2]|0;k=0;e=0;while(1){c[b>>2]=c[r+(k*12|0)>>2];c[n>>2]=c[r+(k*12|0)+4>>2];Yd[c[l>>2]&63](b,q,4,s);f=c[s>>2]|0;if(k)if((f|0)==(e|0)){g=e;h=d;f=e}else{d=3;break a}else{if((f+-1|0)>>>0>3){d=3;break a}d=Qt(a,c[t>>2]|0,f)|0;if(d)break a;g=c[s>>2]|0;h=c[p>>2]|0}if((g|0)>0){d=h+(k<<2)+24|0;e=0;do{c[b>>2]=c[q+(e*12|0)>>2];c[n>>2]=c[q+(e*12|0)+4>>2];g=Pd[c[j>>2]&511](b,0)|0;c[(c[d>>2]|0)+(e<<2)>>2]=g;e=e+1|0}while((e|0)<(c[s>>2]|0))}k=k+1|0;if((k|0)>=(c[t>>2]|0))break;else{d=h;e=f}}}c[b>>2]=m;c[n>>2]=o;d=0}else d=162;while(0);c[b+12>>2]=d;i=u;return}function Nq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+304|0;s=w+300|0;o=w;p=w+48|0;r=w+56|0;q=w+296|0;c[s>>2]=0;m=c[b+100>>2]|0;n=d+60|0;Yd[c[n>>2]&63](d,o,4,p);e=c[p>>2]|0;if((e|0)<0){c[s>>2]=162;v=162;d=d+12|0;c[d>>2]=v;i=w;return}if((e|0)==0|(e|0)>4){c[s>>2]=3;v=3;d=d+12|0;c[d>>2]=v;i=w;return}u=c[d>>2]|0;v=d+8|0;t=c[v>>2]|0;e=Qt(b,0,e)|0;c[s>>2]=e;if(e){v=e;d=d+12|0;c[d>>2]=v;i=w;return}h=c[b+528>>2]|0;do if((c[p>>2]|0)>0){j=d+36|0;k=d+40|0;l=0;while(1){c[d>>2]=c[o+(l*12|0)>>2];c[v>>2]=c[o+(l*12|0)+4>>2];Yd[c[n>>2]&63](d,r,20,q);e=c[q>>2]|0;if((e+-1|0)>>>0>19){b=9;break}b=Dg(m,4,0,e<<1,0,s)|0;g=h+(l*12|0)+92|0;c[g>>2]=b;e=c[s>>2]|0;if(e){b=16;break}e=c[q>>2]|0;f=h+(l*12|0)+96|0;c[f>>2]=b+(e<<2);a[h+(l*12|0)+88>>0]=e;if((e|0)>0){e=0;do{c[d>>2]=(c[r+(e*12|0)>>2]|0)+1;c[v>>2]=(c[r+(e*12|0)+4>>2]|0)+-1;b=Ed[c[j>>2]&511](d)|0;c[(c[g>>2]|0)+(e<<2)>>2]=b;b=Pd[c[k>>2]&511](d,0)|0;c[(c[f>>2]|0)+(e<<2)>>2]=b;e=e+1|0}while((e|0)<(c[q>>2]|0))}l=l+1|0;if((l|0)>=(c[p>>2]|0)){b=14;break}}if((b|0)==9){c[s>>2]=3;v=3;d=d+12|0;c[d>>2]=v;i=w;return}else if((b|0)==14){e=c[s>>2]|0;break}else if((b|0)==16){d=d+12|0;c[d>>2]=e;i=w;return}}else e=0;while(0);c[d>>2]=u;c[v>>2]=t;v=e;d=d+12|0;c[d>>2]=v;i=w;return}function Oq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+64|0;l=o+8|0;m=o;n=o+4|0;c[n>>2]=0;Yd[c[d+60>>2]&63](d,l,4,m);e=c[m>>2]|0;a:do if((e|0)>=0){if((e|0)==0|(e|0)>4){c[n>>2]=3;e=3;break}e=Qt(b,0,e)|0;c[n>>2]=e;if(!e){k=c[b+528>>2]|0;g=c[b+100>>2]|0;if((c[m>>2]|0)>0){j=0;while(1){h=l+(j*12|0)|0;e=c[h>>2]|0;if((a[e>>0]|0)==47){e=e+1|0;c[h>>2]=e}b=c[l+(j*12|0)+4>>2]|0;f=b-e|0;if((b|0)==(e|0)){b=10;break}b=yg(g,f+1|0,n)|0;c[k+(j<<2)+8>>2]=b;e=c[n>>2]|0;if(e)break a;qfa(b|0,c[h>>2]|0,f|0)|0;a[b+f>>0]=0;j=j+1|0;if((j|0)>=(c[m>>2]|0)){b=13;break}}if((b|0)==10){c[n>>2]=3;e=3;break}else if((b|0)==13){e=c[n>>2]|0;break}}else e=0}}else{c[n>>2]=162;e=162}while(0);c[d+12>>2]=e;i=o;return}function Pq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+208|0;k=m+8|0;l=m;g=a+528|0;f=c[g>>2]|0;Yd[c[b+60>>2]&63](b,k,16,l);d=c[l>>2]|0;do if((d|0)>=0)if((d|0)==0|(d|0)>16)d=3;else{if((f|0)!=0?(e=c[f>>2]|0,(e|0)!=0):0){if((e|0)!=(d|0)){d=3;break}}else{d=Qt(a,d,0)|0;if(d)break;d=c[l>>2]|0;f=c[g>>2]|0}g=c[b>>2]|0;h=b+8|0;j=c[h>>2]|0;if((d|0)>0){e=b+40|0;a=f+136|0;d=f+140|0;f=0;do{c[b>>2]=c[k+(f*12|0)>>2];c[h>>2]=c[k+(f*12|0)+4>>2];n=Pd[c[e>>2]&511](b,0)|0;c[(c[a>>2]|0)+(f<<2)>>2]=n;c[(c[d>>2]|0)+(f<<2)>>2]=n;f=f+1|0}while((f|0)<(c[l>>2]|0))}c[b>>2]=g;c[h>>2]=j;d=0}else d=162;while(0);c[b+12>>2]=d;i=m;return}function Qq(a,b){a=a|0;b=b|0;c[a+540>>2]=Xd[c[b+52>>2]&255](b,0,0,0)|0;return}function Rq(a){a=a|0;return c[a+364>>2]|0}function Sq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;pi(d,c[(c[a+420>>2]|0)+(b<<2)>>2]|0,e)|0;return 0}function Tq(a,b){a=a|0;b=b|0;var d=0,e=0;e=c[a+416>>2]|0;if((e|0)<=0){e=0;return e|0}d=c[a+420>>2]|0;a=0;while(1){if(!(gfa(b,c[d+(a<<2)>>2]|0)|0)){d=5;break}a=a+1|0;if((a|0)>=(e|0)){a=0;d=5;break}}if((d|0)==5)return a|0;return 0}function Uq(a,b){a=a|0;b=b|0;a=a+132|0;c[b+0>>2]=c[a+0>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];c[b+16>>2]=c[a+16>>2];c[b+20>>2]=c[a+20>>2];c[b+24>>2]=c[a+24>>2];c[b+28>>2]=c[a+28>>2];return 0}function Vq(a,c){a=a|0;c=c|0;b[c>>1]=b[a+164>>1]|0;return 0}function Wq(a){a=a|0;return 1}function Xq(a,b){a=a|0;b=b|0;qfa(b|0,a+168|0,196)|0;return 0}function Yq(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0;j=e+132|0;do switch(f|0){case 20:{if((h|0)!=0&(i|0)>0){a[h>>0]=a[e+178>>0]|0;j=1}else j=1;break}case 21:{j=e+168|0;if((d[j+10>>0]|0)>>>0>g>>>0)if((h|0)!=0&(i|0)>1){b[h>>1]=b[j+60+(g<<1)>>1]|0;j=2}else j=2;else j=-1;break}case 22:{if((h|0)!=0&(i|0)>0){a[h>>0]=a[e+179>>0]|0;j=1}else j=1;break}case 23:{j=e+168|0;if((d[j+11>>0]|0)>>>0>g>>>0)if((h|0)!=0&(i|0)>1){b[h>>1]=b[j+88+(g<<1)>>1]|0;j=2}else j=2;else j=-1;break}case 26:{if((h|0)!=0&(i|0)>0){a[h>>0]=a[e+292>>0]|0;j=1}else j=1;break}case 19:{j=e+168|0;if((d[j+9>>0]|0)>>>0>g>>>0)if((h|0)!=0&(i|0)>1){b[h>>1]=b[j+40+(g<<1)>>1]|0;j=2}else j=2;else j=-1;break}case 41:{if((h|0)!=0&(i|0)>0){a[h>>0]=a[e+156>>0]|0;j=1}else j=1;break}case 30:{if((h|0)!=0&(i|0)>0){a[h>>0]=a[e+294>>0]|0;j=1}else j=1;break}case 36:{k=c[j>>2]|0;j=(tfa(k|0)|0)+1|0;if(!((h|0)==0|(j|0)>(i|0)))qfa(h|0,k|0,j|0)|0;break}case 40:{k=c[e+148>>2]|0;j=(tfa(k|0)|0)+1|0;if(!((h|0)==0|(j|0)>(i|0)))qfa(h|0,k|0,j|0)|0;break}case 38:{k=c[e+140>>2]|0;j=(tfa(k|0)|0)+1|0;if(!((h|0)==0|(j|0)>(i|0)))qfa(h|0,k|0,j|0)|0;break}case 43:{if((h|0)!=0&(i|0)>1){b[h>>1]=b[e+160>>1]|0;j=2}else j=2;break}case 28:{if((h|0)!=0&(i|0)>0){a[h>>0]=a[e+293>>0]|0;j=1}else j=1;break}case 33:{if((h|0)!=0&(i|0)>3){c[h>>2]=c[e+172>>2];j=4}else j=4;break}case 32:{if(g>>>0<2)if((h|0)!=0&(i|0)>1){b[h>>1]=b[e+360+(g<<1)>>1]|0;j=2}else j=2;else j=-1;break}case 37:{k=c[e+136>>2]|0;j=(tfa(k|0)|0)+1|0;if(!((h|0)==0|(j|0)>(i|0)))qfa(h|0,k|0,j|0)|0;break}case 39:{k=c[e+144>>2]|0;j=(tfa(k|0)|0)+1|0;if(!((h|0)==0|(j|0)>(i|0)))qfa(h|0,k|0,j|0)|0;break}case 29:{j=e+168|0;if((d[j+125>>0]|0)>>>0>g>>>0)if((h|0)!=0&(i|0)>1){b[h>>1]=b[j+(g<<1)+154>>1]|0;j=2}else j=2;else j=-1;break}case 31:{if((h|0)!=0&(i|0)>0){a[h>>0]=a[e+295>>0]|0;j=1}else j=1;break}case 34:{if((h|0)!=0&(i|0)>3){c[h>>2]=c[e+356>>2];j=4}else j=4;break}case 42:{if((h|0)!=0&(i|0)>1){b[h>>1]=b[j+26>>1]|0;j=2}else j=2;break}case 27:{j=e+168|0;if((d[j+124>>0]|0)>>>0>g>>>0)if((h|0)!=0&(i|0)>1){b[h>>1]=b[j+128+(g<<1)>>1]|0;j=2}else j=2;else j=-1;break}case 44:{if((h|0)!=0&(i|0)>1){b[h>>1]=b[e+164>>1]|0;j=2}else j=2;break}case 45:{if((h|0)!=0&(i|0)>3){c[h>>2]=c[e+152>>2];j=4}else j=4;break}case 35:{if((h|0)!=0&(i|0)>3){c[h>>2]=c[e+352>>2];j=4}else j=4;break}case 17:{if((h|0)!=0&(i|0)>3){c[h>>2]=c[e+284>>2];j=4}else j=4;break}case 0:{if((h|0)!=0&(i|0)>0){a[h>>0]=a[j+301>>0]|0;j=1}else j=1;break}case 6:{if((h|0)!=0&(i|0)>3){c[h>>2]=c[e+416>>2];j=4}else j=4;break}case 11:{if((h|0)!=0&(i|0)>3){c[h>>2]=c[e+404>>2];j=4}else j=4;break}case 2:{if(g>>>0<4)if((h|0)!=0&(i|0)>3){if(!g)j=c[e+460>>2]|0;else if((g|0)==1)j=c[e+464>>2]|0;else if((g|0)==3)j=c[e+472>>2]|0;else if((g|0)==2)j=c[e+468>>2]|0;else j=0;c[h>>2]=j;j=4}else j=4;else j=-1;break}case 12:{if((c[e+404>>2]|0)>>>0>g>>>0){k=c[(c[e+412>>2]|0)+(g<<2)>>2]|0;j=k+1|0;if((h|0)!=0&(k|0)<(i|0)){qfa(h|0,c[(c[e+408>>2]|0)+(g<<2)>>2]|0,k|0)|0;a[h+k>>0]=0}}else j=-1;break}case 16:{j=e+168|0;if((d[j+8>>0]|0)>>>0>g>>>0)if((h|0)!=0&(i|0)>1){b[h>>1]=b[j+12+(g<<1)>>1]|0;j=2}else j=2;else j=-1;break}case 15:{if((h|0)!=0&(i|0)>0){a[h>>0]=a[e+176>>0]|0;j=1}else j=1;break}case 8:{if((c[e+416>>2]|0)>>>0>g>>>0){k=c[(c[e+428>>2]|0)+(g<<2)>>2]|0;j=k+1|0;if((h|0)!=0&(k|0)<(i|0)){qfa(h|0,c[(c[e+424>>2]|0)+(g<<2)>>2]|0,k|0)|0;a[h+k>>0]=0}}else j=-1;break}case 10:{if((c[e+368>>2]|0)==1?(k=e+372|0,(c[k>>2]|0)>>>0>g>>>0):0){k=c[(c[k+16>>2]|0)+(g<<2)>>2]|0;f=tfa(k|0)|0;j=f+1|0;if(!((h|0)==0|(j|0)>(i|0))){qfa(h|0,k|0,f|0)|0;a[h+f>>0]=0}}else j=-1;break}case 3:{if((h|0)!=0&(i|0)>0){a[h>>0]=a[e+432>>0]|0;j=1}else j=1;break}case 9:{if((h|0)!=0&(i|0)>3){c[h>>2]=c[e+368>>2];j=4}else j=4;break}case 5:{if((h|0)!=0&(i|0)>3){c[h>>2]=c[e+168>>2];j=4}else j=4;break}case 13:{if((h|0)!=0&(i|0)>1){b[h>>1]=b[e+288>>1]|0;j=2}else j=2;break}case 14:{if((h|0)!=0&(i|0)>1){b[h>>1]=b[e+290>>1]|0;j=2}else j=2;break}case 24:{if((h|0)!=0&(i|0)>3){c[h>>2]=c[e+276>>2];j=4}else j=4;break}case 4:{k=c[e+364>>2]|0;j=(tfa(k|0)|0)+1|0;if(!((h|0)==0|(j|0)>(i|0)))qfa(h|0,k|0,j|0)|0;break}case 1:{if(g>>>0<4)if((h|0)!=0&(i|0)>3){if(!g)j=c[e+436>>2]|0;else if((g|0)==2)j=c[e+444>>2]|0;else if((g|0)==3)j=c[e+448>>2]|0;else if((g|0)==1)j=c[e+440>>2]|0;else j=0;c[h>>2]=j;j=4}else j=4;else j=-1;break}case 7:{if((c[e+416>>2]|0)>>>0>g>>>0){k=c[(c[e+420>>2]|0)+(g<<2)>>2]|0;f=tfa(k|0)|0;j=f+1|0;if(!((h|0)==0|(j|0)>(i|0))){qfa(h|0,k|0,j|0)|0;a[h+f>>0]=0}}else j=-1;break}case 25:{if((h|0)!=0&(i|0)>3){c[h>>2]=c[e+280>>2];j=4}else j=4;break}case 18:{if((h|0)!=0&(i|0)>0){a[h>>0]=a[e+177>>0]|0;j=1}else j=1;break}default:j=-1}while(0);return j|0}function Zq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;a=c[a+492>>2]|0;if(!a){b=6;return b|0}l=a+32|0;f=c[l>>2]|0;if((f|0)<=0){b=0;return b|0}k=a+28|0;a=f;j=0;do{i=c[k>>2]|0;do if((c[i+(j*20|0)>>2]|0)==(d|0)){f=c[i+(j*20|0)+4>>2]|0;if((f|0)>(b|0)){c[e>>2]=c[i+(j*20|0)+8>>2];break}g=c[i+(j*20|0)+12>>2]|0;h=c[i+(j*20|0)+16>>2]|0;if((g|0)<(b|0)){c[e>>2]=h;break}else{i=i+(j*20|0)+8|0;a=og(b-f|0,h-(c[i>>2]|0)|0,g-f|0)|0;c[e>>2]=(c[i>>2]|0)+a;a=c[l>>2]|0;break}}while(0);j=j+1|0}while((j|0)<(a|0));a=0;return a|0}function _q(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;a=c[a+528>>2]|0;if(!a){f=6;return f|0}e=c[a+4>>2]|0;c[b>>2]=e;c[b+4>>2]=c[a>>2];if(!e){f=0;return f|0}else f=0;do{c[b+(f*12|0)+8>>2]=c[a+(f<<2)+8>>2];g=c[a+(f*12|0)+92>>2]|0;c[b+(f*12|0)+12>>2]=c[g>>2];c[b+(f*12|0)+16>>2]=c[g+((d[a+(f*12|0)+88>>0]|0)+-1<<2)>>2];f=f+1|0}while(f>>>0>>0);a=0;return a|0}function $q(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+64|0;t=u;o=b+528|0;p=c[o>>2]|0;if(!p){t=6;i=u;return t|0}q=p+4|0;if((c[q>>2]|0)!=(d|0)){t=6;i=u;return t|0}if(!d)h=p;else{f=d;r=0;do{l=c[e+(r<<2)>>2]|0;k=c[p+(r*12|0)+92>>2]|0;n=c[p+(r*12|0)+96>>2]|0;m=a[p+(r*12|0)+88>>0]|0;do if(m<<24>>24){j=-1;b=0;while(1){h=c[k+(b<<2)>>2]|0;if((l|0)==(h|0)){s=7;break}g=b+1|0;if((l|0)<(h|0)){g=b;b=j;break}if(g>>>0<(m&255)>>>0){j=b;b=g}else{g=-1;break}}if((s|0)==7){s=0;b=c[n+(b<<2)>>2]|0;break}if((b|0)>=0)if((g|0)<0){b=c[n+((m&255)+-1<<2)>>2]|0;break}else{f=c[k+(b<<2)>>2]|0;b=og(l-f|0,(c[n+(g<<2)>>2]|0)-(c[n+(b<<2)>>2]|0)|0,(c[k+(g<<2)>>2]|0)-f|0)|0;f=c[q>>2]|0;break}else s=10}else s=10;while(0);if((s|0)==10){s=0;b=c[n>>2]|0}c[t+(r<<2)>>2]=b;r=r+1|0}while(r>>>0>>0);h=c[o>>2]|0}if(!h){t=6;i=u;return t|0}j=h+4|0;if((c[j>>2]|0)!=(d|0)){t=6;i=u;return t|0}b=c[h>>2]|0;if(!b){t=0;i=u;return t|0}k=h+136|0;g=0;do{if(!d){d=0;f=65536}else{f=0;b=65536;do{d=c[t+(f<<2)>>2]|0;d=(d|0)<0?0:d;d=(d|0)>65536?65536:d;b=qg(b,(1<>2]|0}while(f>>>0>>0);f=b;b=c[h>>2]|0}c[(c[k>>2]|0)+(g<<2)>>2]=f;g=g+1|0}while(g>>>0>>0);b=0;i=u;return b|0}function ar(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=c[a+528>>2]|0;if(!g){i=6;return i|0}h=g+4|0;if((c[h>>2]|0)!=(b|0)){i=6;return i|0}a=c[g>>2]|0;if(!a){i=0;return i|0}i=g+136|0;f=0;do{if(!b){b=0;e=65536}else{e=0;a=65536;do{b=c[d+(e<<2)>>2]|0;b=(b|0)<0?0:b;b=(b|0)>65536?65536:b;a=qg(a,(1<>2]|0}while(e>>>0>>0);e=a;a=c[g>>2]|0}c[(c[i>>2]|0)+(f<<2)>>2]=e;f=f+1|0}while(f>>>0>>0);a=0;return a|0}function br(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;s=i;i=i+80|0;l=s+24|0;r=s;q=s+8|0;g=c[b+100>>2]|0;p=c[b+528>>2]|0;if(!p){c[r>>2]=6;e=6;i=s;return e|0}j=p+4|0;b=c[j>>2]|0;c[l>>2]=b;h=l+4|0;c[h>>2]=c[p>>2];if(!b)k=0;else{f=0;do{c[l+(f*12|0)+8>>2]=c[p+(f<<2)+8>>2];o=c[p+(f*12|0)+92>>2]|0;c[l+(f*12|0)+12>>2]=c[o>>2];c[l+(f*12|0)+16>>2]=c[o+((d[p+(f*12|0)+88>>0]|0)+-1<<2)>>2];f=f+1|0}while((f|0)!=(b|0));k=c[l>>2]|0}c[r>>2]=0;o=yg(g,(k*24|0)+20|0,r)|0;b=c[r>>2]|0;if(b){e=b;i=s;return e|0}c[o>>2]=k;c[o+4>>2]=c[h>>2];c[o+8>>2]=-1;g=o+20|0;n=o+12|0;c[n>>2]=g;c[o+16>>2]=0;if(!k)m=0;else{f=0;do{b=c[l+(f*12|0)+8>>2]|0;c[g+(f*24|0)>>2]=b;h=c[l+(f*12|0)+12>>2]<<16;c[g+(f*24|0)+4>>2]=h;m=c[l+(f*12|0)+16>>2]<<16;c[g+(f*24|0)+12>>2]=m;c[g+(f*24|0)+8>>2]=(m+h|0)/2|0;c[g+(f*24|0)+20>>2]=-1;h=g+(f*24|0)+16|0;c[h>>2]=-1;do if(gfa(b,89872)|0){if(!(gfa(b,88912)|0)){c[h>>2]=2003072104;break}if(!(gfa(b,88920)|0))c[h>>2]=1869640570}else c[h>>2]=2003265652;while(0);f=f+1|0}while(f>>>0>>0);m=k}b=c[j>>2]|0;a:do if((c[p>>2]|0)==(1<>2]|0;if((b|0)==3){j=c[f+28>>2]|0;l=c[f+20>>2]|0;k=c[f+12>>2]|0;b=l+j+k+(c[f+4>>2]|0)|0;c[q>>2]=b;j=(c[f+24>>2]|0)+j|0;c[q+4>>2]=j+k+(c[f+8>>2]|0);c[q+8>>2]=j+l+(c[f+16>>2]|0)}else if((b|0)==1){b=c[f+4>>2]|0;c[q>>2]=b}else if((b|0)==2){l=c[f+12>>2]|0;b=(c[f+4>>2]|0)+l|0;c[q>>2]=b;c[q+4>>2]=(c[f+8>>2]|0)+l}else{w=c[f+60>>2]|0;h=c[f+52>>2]|0;k=c[f+44>>2]|0;l=c[f+36>>2]|0;v=c[f+28>>2]|0;t=c[f+20>>2]|0;x=c[f+12>>2]|0;b=h+w+k+l+v+t+x+(c[f+4>>2]|0)|0;c[q>>2]=b;w=(c[f+56>>2]|0)+w|0;j=c[f+40>>2]|0;u=c[f+24>>2]|0;c[q+4>>2]=w+k+j+v+u+x+(c[f+8>>2]|0);h=w+h+(c[f+48>>2]|0)|0;c[q+8>>2]=h+v+u+t+(c[f+16>>2]|0);c[q+12>>2]=h+k+j+l+(c[f+32>>2]|0)}if(m){f=0;while(1){l=c[p+(f*12|0)+96>>2]|0;b:do if((c[l>>2]|0)<(b|0)){x=a[p+(f*12|0)+88>>0]|0;j=x&255;c:do if((x&255)>1){k=1;while(1){h=c[l+(k<<2)>>2]|0;if((h|0)>=(b|0)){g=k;break}k=k+1|0;if((k|0)>=(j|0))break c}w=g+-1|0;v=c[p+(f*12|0)+92>>2]|0;x=c[v+(w<<2)>>2]|0;g=(c[v+(g<<2)>>2]|0)-x|0;w=c[l+(w<<2)>>2]|0;b=(da(rg(b-w|0,h-w|0)|0,g)|0)+(x<<16)|0;g=c[n>>2]|0;break b}while(0);b=c[(c[p+(f*12|0)+92>>2]|0)+(j+-1<<2)>>2]<<16}else b=c[c[p+(f*12|0)+92>>2]>>2]<<16;while(0);c[g+(f*24|0)+8>>2]=b;f=f+1|0;if(f>>>0>=m>>>0)break a;b=c[q+(f<<2)>>2]|0}}}while(0);c[e>>2]=o;x=c[r>>2]|0;i=s;return x|0}function cr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g;if(b>>>0<5&(b|0)!=0)e=0;else{b=6;i=g;return b|0}do{c[f+(e<<2)>>2]=(lg(c[d+(e<<2)>>2]|0)|0)>>16;e=e+1|0}while((e|0)!=(b|0));b=$q(a,b,f)|0;i=g;return b|0}function dr(a){a=a|0;var b=0;b=yh(c[a+4>>2]|0,90336)|0;if(!b){a=11;return a|0}c[a+28>>2]=c[b>>2];a=0;return a|0}function er(a){a=a|0;return}function fr(a,b){a=a|0;b=b|0;return Jg(90192,b)|0}function gr(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=i;i=i+384|0;z=M+372|0;A=M;C=M+16|0;B=M+320|0;G=M+328|0;L=M+360|0;I=e+132|0;H=e+500|0;c[H>>2]=0;c[e>>2]=1;F=e+96|0;J=Ah(c[F>>2]|0,89040)|0;c[e+484>>2]=J;K=zh(c[(c[F>>2]|0)+4>>2]|0,89064)|0;c[e+488>>2]=K;if(!K){e=11;i=M;return e|0}m=c[e+100>>2]|0;sfa(C|0,0,304)|0;E=e+492|0;c[E>>2]=yg(m,12,B)|0;a:do if(!(c[B>>2]|0)){n=c[e+104>>2]|0;Yd[c[c[K+4>>2]>>2]&63](C,0,0,m);c[C+72>>2]=n;q=C+80|0;c[q>>2]=0;p=C+76|0;c[p>>2]=0;o=C+84|0;a[o>>0]=0;d=bh(n,0)|0;c[z>>2]=d;do if(!d){d=Uh(n,17)|0;c[z>>2]=d;if(!d){if(ffa(c[n+32>>2]|0,90168,17)|0){c[z>>2]=2;Xh(n);d=2;D=15;break}Xh(n);d=bh(n,0)|0;c[z>>2]=d;if(!d){d=c[n+4>>2]|0;if(!(c[n+20>>2]|0)){c[p>>2]=(c[n>>2]|0)+(c[n+8>>2]|0);c[q>>2]=d;a[o>>0]=1;d=Mh(n,d)|0;c[z>>2]=d;if(d){D=15;break}d=c[q>>2]|0}else{l=yg(m,d,z)|0;c[p>>2]=l;j=c[z>>2]|0;if(j){d=j;D=15;break}l=Lh(n,l,d)|0;c[z>>2]=l;if(l){d=l;D=15;break}c[q>>2]=d}l=c[p>>2]|0;c[C+4>>2]=l;c[C>>2]=l;j=C+8|0;c[j>>2]=l+d;c[B>>2]=0;y=C}else D=15}else D=15}else D=15;while(0);if((D|0)==15){if(a[o>>0]|0){c[B>>2]=d;break}Ag(m,c[p>>2]|0);c[p>>2]=0;y=c[z>>2]|0;c[B>>2]=y;if(y)break;y=C;j=C+8|0;l=0;d=c[q>>2]|0}c[y>>2]=l;x=l+d|0;c[j>>2]=x;n=C+12|0;c[n>>2]=0;m=C+28|0;Bd[c[m>>2]&511](C);d=c[y>>2]|0;b:do if(d>>>0>>0){o=C+32|0;r=C+56|0;s=A+8|0;t=C+68|0;u=C+64|0;v=e+164|0;w=e+460|0;c:while(1){l=a[d>>0]|0;if(l<<24>>24==70&(d+25|0)>>>0>>0?(hfa(d,89080,13)|0)==0:0){Bd[c[o>>2]&511](C);Bd[c[m>>2]&511](C);l=c[y>>2]|0;d:do if(l>>>0>>0){d=l;while(1){if((a[d>>0]|0)==107&(d+5|0)>>>0>>0?(hfa(d,89096,5)|0)==0:0)break;Bd[c[o>>2]&511](C);d=c[n>>2]|0;if(d){D=51;break c}Bd[c[m>>2]&511](C);d=c[y>>2]|0;if(d>>>0>=x>>>0){d=l;break d}}Bd[c[o>>2]&511](C);Cd[c[r>>2]&255](C,A);d=(c[s>>2]|0)==3?c[y>>2]|0:l}else d=l;while(0);c[y>>2]=d}else D=30;e:do if((D|0)==30){D=0;if(!(l<<24>>24==47&(d+2|0)>>>0>>0)){Bd[c[o>>2]&511](C);d=c[n>>2]|0;if(!d)break;else{D=52;break c}}q=d+1|0;c[y>>2]=q;Bd[c[o>>2]&511](C);d=c[n>>2]|0;if(d){D=52;break c}j=c[y>>2]|0;l=j-q|0;if((l+-1|0)>>>0<21&j>>>0>>0){d=0;while(1){p=89104+(d*36|0)|0;j=c[p>>2]|0;if((((j|0)!=0?(a[q>>0]|0)==(a[j>>0]|0):0)?(l|0)==(tfa(j|0)|0):0)?(ffa(q,j,l)|0)==0:0)break;d=d+1|0;if((d|0)>=20)break e}l=c[89112+(d*36|0)>>2]|0;do if((d+-15|0)>>>0>=4){d=c[89108+(d*36|0)>>2]|0;if((d|0)==3)c[z>>2]=I;else if((d|0)==5)c[z>>2]=w;else if((d|0)==2)c[z>>2]=v;else c[z>>2]=I;if((l+-9|0)>>>0<2){d=Qd[c[t>>2]&127](C,p,z,0,0)|0;break}else{d=Qd[c[u>>2]&127](C,p,z,0,0)|0;break}}else{Cd[c[89104+(d*36|0)+12>>2]&255](e,C);d=c[n>>2]|0}while(0);c[n>>2]=d;if(d){D=51;break c}}}while(0);Bd[c[m>>2]&511](C);d=c[y>>2]|0;if(d>>>0>=x>>>0)break b}if((D|0)==51){c[B>>2]=d;break a}else if((D|0)==52){c[B>>2]=d;break a}}while(0);A=c[n>>2]|0;c[B>>2]=A;if(!A){if((a[e+433>>0]|0)!=42){c[B>>2]=2;break}s=c[C+144>>2]|0;c[e+416>>2]=s;d=C+212|0;if(!(c[d>>2]|0))c[B>>2]=3;c[d>>2]=0;c[e+396>>2]=c[C+200>>2];c[e+424>>2]=c[C+224>>2];c[e+428>>2]=c[C+228>>2];z=C+148|0;c[e+400>>2]=c[z>>2];A=C+172|0;p=e+420|0;c[p>>2]=c[A>>2];c[z>>2]=0;c[A>>2]=0;if((c[e+368>>2]|0)==1){t=c[C+108>>2]|0;f:do if((t|0)>0){u=e+384|0;v=e+388|0;q=C+116|0;if((s|0)>0){r=0;l=0;d=0}else{d=0;while(1){b[(c[u>>2]|0)+(d<<1)>>1]=0;c[(c[v>>2]|0)+(d<<2)>>2]=89072;d=d+1|0;if((d|0)==(t|0)){l=0;d=0;break f}}}do{b[(c[u>>2]|0)+(r<<1)>>1]=0;c[(c[v>>2]|0)+(r<<2)>>2]=89072;m=c[(c[q>>2]|0)+(r<<2)>>2]|0;g:do if(m){o=c[p>>2]|0;j=0;while(1){n=c[o+(j<<2)>>2]|0;if(!(gfa(m,n)|0))break;j=j+1|0;if((j|0)>=(s|0))break g}b[(c[u>>2]|0)+(r<<1)>>1]=j;c[(c[v>>2]|0)+(r<<2)>>2]=n;if(gfa(89072,n)|0){l=(r|0)<(l|0)?l:r+1|0;d=(r|0)<(d|0)?r:d}}while(0);r=r+1|0}while((r|0)!=(t|0))}else{l=0;d=0}while(0);c[e+376>>2]=d;c[e+380>>2]=l;c[e+372>>2]=c[C+88>>2]}}}while(0);d=c[C+140>>2]|0;if(d)Bd[d&511](C+92|0);d=c[C+248>>2]|0;if(d)Bd[d&511](C+200|0);d=c[C+196>>2]|0;if(d)Bd[d&511](C+148|0);d=c[C+300>>2]|0;if(d)Bd[d&511](C+252|0);if(!(a[C+84>>0]|0)){A=C+76|0;Ag(c[C+16>>2]|0,c[A>>2]|0);c[A>>2]=0}Bd[c[C+24>>2]&511](C);d=c[B>>2]|0;if((d|0)!=0|(f|0)<0){e=d;i=M;return e|0}if((f|0)>0){e=6;i=M;return e|0}c[e+16>>2]=c[e+416>>2];c[e+36>>2]=0;c[e+4>>2]=0;m=e+8|0;c[m>>2]=(a[e+156>>0]|0)==0?2577:2581;l=c[e+144>>2]|0;j=e+20|0;c[j>>2]=l;n=e+24|0;c[n>>2]=90464;h:do if(!l){d=c[e+364>>2]|0;if(d)c[j>>2]=d}else{d=c[e+140>>2]|0;if((d|0)!=0?(k=a[d>>0]|0,k<<24>>24!=0):0){i:while(1){while(1){j=a[l>>0]|0;if(k<<24>>24==j<<24>>24){D=87;break}if(k<<24>>24==45|k<<24>>24==32)break;if(!(j<<24>>24))break i;else if(!(j<<24>>24==45|j<<24>>24==32))break h;if(!(k<<24>>24))break h;else l=l+1|0}if((D|0)==87){D=0;l=l+1|0}d=d+1|0;k=a[d>>0]|0;if(!(k<<24>>24))break h}c[n>>2]=d}}while(0);c[e+28>>2]=0;c[e+32>>2]=0;c[G>>2]=1;c[G+4>>2]=c[E>>2];c[G+8>>2]=c[e+496>>2];if(g){c[G>>2]=17;c[G+24>>2]=g;c[G+28>>2]=h}d=$g(c[(c[F>>2]|0)+4>>2]|0,G,0,H)|0;if(d){e=d;i=M;return e|0}fh(c[(c[H>>2]|0)+88>>2]|0)|0;j=e+52|0;k=c[H>>2]|0;d=k+52|0;c[j+0>>2]=c[d+0>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];b[e+68>>1]=b[k+68>>1]|0;b[e+70>>1]=b[k+70>>1]|0;b[e+72>>1]=b[k+72>>1]|0;b[e+74>>1]=b[k+74>>1]|0;b[e+76>>1]=b[k+76>>1]|0;b[e+78>>1]=b[k+78>>1]|0;b[e+80>>1]=b[I+26>>1]|0;b[e+82>>1]=b[e+160>>1]|0;j=e+12|0;d=(c[e+152>>2]|0)!=0&1;c[j>>2]=d;if(c[k+12>>2]&2)c[j>>2]=d|2;if(c[k+8>>2]&32)c[m>>2]=c[m>>2]|32;if(!J){e=0;i=M;return e|0}l=c[K+20>>2]|0;c[L>>2]=e;j=L+8|0;b[j>>1]=3;m=L+10|0;b[m>>1]=1;n=L+4|0;c[n>>2]=1970170211;d=l+12|0;k=qh(c[d>>2]|0,0,L,0)|0;if(!((k|0)==0|(k&255|0)==163)){e=k;i=M;return e|0}b[j>>1]=7;j=c[e+368>>2]|0;if((j|0)==2){c[n>>2]=1094995778;b[m>>1]=0;d=l}else if((j|0)==4){c[n>>2]=1094992453;b[m>>1]=1;d=l+4|0}else if((j|0)==3){c[n>>2]=1818326065;b[m>>1]=3}else if((j|0)==1){c[n>>2]=1094992451;b[m>>1]=2;d=l+8|0}else{e=0;i=M;return e|0}d=c[d>>2]|0;if(!d){e=0;i=M;return e|0}e=qh(d,0,L,0)|0;i=M;return e|0}function hr(a){a=a|0;var b=0,d=0,e=0;if(!a)return;b=a+132|0;d=c[a+100>>2]|0;e=c[a+500>>2]|0;if(e)dh(e)|0;Ag(d,c[b>>2]|0);c[b>>2]=0;e=a+136|0;Ag(d,c[e>>2]|0);c[e>>2]=0;e=a+140|0;Ag(d,c[e>>2]|0);c[e>>2]=0;e=a+144|0;Ag(d,c[e>>2]|0);c[e>>2]=0;e=a+148|0;Ag(d,c[e>>2]|0);c[e>>2]=0;e=a+428|0;Ag(d,c[e>>2]|0);c[e>>2]=0;e=a+424|0;Ag(d,c[e>>2]|0);c[e>>2]=0;e=a+420|0;Ag(d,c[e>>2]|0);c[e>>2]=0;e=a+396|0;Ag(d,c[e>>2]|0);c[e>>2]=0;e=a+400|0;Ag(d,c[e>>2]|0);c[e>>2]=0;e=a+372|0;b=e+12|0;Ag(d,c[b>>2]|0);c[b>>2]=0;e=e+16|0;Ag(d,c[e>>2]|0);c[e>>2]=0;e=a+364|0;Ag(d,c[e>>2]|0);c[e>>2]=0;e=a+492|0;Ag(d,c[e>>2]|0);c[e>>2]=0;e=a+536|0;b=e+20|0;Ag(d,c[b>>2]|0);c[b>>2]=0;c[e+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;return}function ir(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d;b=ch(c[(c[a>>2]|0)+500>>2]|0,e)|0;e=c[e>>2]|0;c[a+44>>2]=e;th(e)|0;i=d;return b|0}function jr(a){a=a|0;var b=0;b=a+44|0;if(!(eh((c[(c[a>>2]|0)+500>>2]|0)+108|0,c[b>>2]|0)|0))return;fh(c[b>>2]|0)|0;c[b>>2]=0;return}function kr(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;d=f;e=c[a+4>>2]|0;b=c[e+500>>2]|0;if(!(c[e+84>>2]|0)){e=b+84|0;b=0}else{e=d;b=Tg(b,d)|0}c[a+160>>2]=c[e>>2];i=f;return b|0}function lr(a){a=a|0;Ug(c[a+160>>2]|0);return}function mr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=c[(c[(c[a+4>>2]|0)+96>>2]|0)+28>>2]|0;j=a+160|0;h=c[j>>2]|0;Qg(h);c[h+152>>2]=0;f=h+72|0;h=h+24|0;i=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));h=f+0|0;i=h+72|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));f=Xd[c[g+72>>2]&255](c[j>>2]|0,c[b+44>>2]|0,d,e|8)|0;if(f)return f|0;b=a+24|0;i=c[j>>2]|0;h=i+24|0;c[b+0>>2]=c[h+0>>2];c[b+4>>2]=c[h+4>>2];c[b+8>>2]=c[h+8>>2];c[b+12>>2]=c[h+12>>2];c[b+16>>2]=c[h+16>>2];c[b+20>>2]=c[h+20>>2];c[b+24>>2]=c[h+24>>2];c[b+28>>2]=c[h+28>>2];c[a+56>>2]=c[i+56>>2];c[a+60>>2]=c[i+60>>2];c[a+72>>2]=c[i+72>>2];b=a+108|0;h=i+108|0;c[b+0>>2]=c[h+0>>2];c[b+4>>2]=c[h+4>>2];c[b+8>>2]=c[h+8>>2];c[b+12>>2]=c[h+12>>2];c[b+16>>2]=c[h+16>>2];b=a+76|0;h=i+76|0;c[b+0>>2]=c[h+0>>2];c[b+4>>2]=c[h+4>>2];c[b+8>>2]=c[h+8>>2];c[b+12>>2]=c[h+12>>2];c[b+16>>2]=c[h+16>>2];c[b+20>>2]=c[h+20>>2];c[a+100>>2]=c[i+100>>2];c[a+104>>2]=c[i+104>>2];c[a+128>>2]=c[i+128>>2];c[a+132>>2]=c[i+132>>2];c[a+136>>2]=c[i+136>>2];c[a+140>>2]=c[i+140>>2];return f|0}function nr(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;th(c[a+44>>2]|0)|0;d=d+500|0;b=lh(c[d>>2]|0,b)|0;if(b)return b|0;a=a+12|0;d=(c[(c[d>>2]|0)+88>>2]|0)+12|0;c[a+0>>2]=c[d+0>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];return b|0}function or(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;th(c[a+44>>2]|0)|0;d=d+500|0;b=kh(c[d>>2]|0,b)|0;if(b)return b|0;a=a+12|0;d=(c[(c[d>>2]|0)+88>>2]|0)+12|0;c[a+0>>2]=c[d+0>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];return b|0} -function t$(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;K=i;i=i+48|0;I=K;J=c[d+408>>2]|0;E=d+24|0;G=c[E>>2]|0;f=c[G>>2]|0;c[I>>2]=f;F=I+4|0;c[F>>2]=c[G+4>>2];G=I+8|0;H=J+12|0;c[G+0>>2]=c[H+0>>2];c[G+4>>2]=c[H+4>>2];c[G+8>>2]=c[H+8>>2];c[G+12>>2]=c[H+12>>2];c[G+16>>2]=c[H+16>>2];c[G+20>>2]=c[H+20>>2];C=I+32|0;c[C>>2]=d;D=d+224|0;if((c[D>>2]|0)!=0?(c[J+36>>2]|0)==0:0){o=c[J+40>>2]|0;l=I+12|0;h=c[l>>2]|0;m=I+8|0;do if((h|0)>0){g=h+7|0;j=c[m>>2]|127<<17-h;while(1){B=j>>>16;h=B&255;c[I>>2]=f+1;a[f>>0]=B;B=(c[F>>2]|0)+-1|0;c[F>>2]=B;if(!B){B=c[C>>2]|0;f=c[B+24>>2]|0;if(!((Ed[c[f+12>>2]&511](B)|0)<<24>>24)){k=0;f=120;break}c[I>>2]=c[f>>2];c[F>>2]=c[f+4>>2]}if((h|0)==255?(B=c[I>>2]|0,c[I>>2]=B+1,a[B>>0]=0,B=(c[F>>2]|0)+-1|0,c[F>>2]=B,(B|0)==0):0){B=c[C>>2]|0;f=c[B+24>>2]|0;if(!((Ed[c[f+12>>2]&511](B)|0)<<24>>24)){k=0;f=120;break}c[I>>2]=c[f>>2];c[F>>2]=c[f+4>>2]}g=g+-8|0;if((g|0)<=7){f=14;break}f=c[I>>2]|0;j=j<<8}if((f|0)==14){n=c[I>>2]|0;break}else if((f|0)==120){i=K;return k|0}}else n=f;while(0);c[m>>2]=0;c[l>>2]=0;c[I>>2]=n+1;a[n>>0]=-1;B=(c[F>>2]|0)+-1|0;c[F>>2]=B;do if(!B){B=c[C>>2]|0;f=c[B+24>>2]|0;if(!((Ed[c[f+12>>2]&511](B)|0)<<24>>24)){J=0;i=K;return J|0}else{B=c[f>>2]|0;c[I>>2]=B;c[F>>2]=c[f+4>>2];f=B;break}}else f=c[I>>2]|0;while(0);c[I>>2]=f+1;a[f>>0]=o+208;B=(c[F>>2]|0)+-1|0;c[F>>2]=B;f=c[C>>2]|0;do if(!B){g=c[f+24>>2]|0;if(!((Ed[c[g+12>>2]&511](f)|0)<<24>>24)){J=0;i=K;return J|0}else{c[I>>2]=c[g>>2];c[F>>2]=c[g+4>>2];break}}while(0);if((c[f+276>>2]|0)>0){g=0;do{c[I+(g<<2)+16>>2]=0;g=g+1|0;f=c[C>>2]|0}while((g|0)<(c[f+276>>2]|0))}}else f=d;x=d+304|0;a:do if((c[x>>2]|0)>0){y=J+44|0;z=J+60|0;A=I+12|0;B=I+8|0;g=0;b:while(1){w=c[d+(g<<2)+308>>2]|0;u=c[d+(w<<2)+280>>2]|0;v=e+(g<<2)|0;r=c[v>>2]|0;w=I+(w<<2)+16|0;o=c[y+(c[u+20>>2]<<2)>>2]|0;u=c[z+(c[u+24>>2]<<2)>>2]|0;s=c[f+372>>2]|0;t=c[f+368>>2]|0;n=(b[r>>1]|0)-(c[w>>2]|0)|0;if((n|0)<0){j=0-n|0;k=n+-1|0}else{j=n;k=n}if(j){n=0;h=j;while(1){j=n+1|0;h=h>>1;if(!h)break;else n=j}if((n|0)>10){l=c[f>>2]|0;c[l+20>>2]=6;Bd[c[l>>2]&511](f);l=j}else l=j}else l=0;j=c[o+(l<<2)>>2]|0;q=a[o+l+1024>>0]|0;n=q<<24>>24;if(!(q<<24>>24)){q=c[f>>2]|0;c[q+20>>2]=41;Bd[c[q>>2]&511](f)}f=(c[A>>2]|0)+n|0;j=((1<>2];if((f|0)>7)do{p=j>>>16;n=p&255;q=c[I>>2]|0;c[I>>2]=q+1;a[q>>0]=p;q=(c[F>>2]|0)+-1|0;c[F>>2]=q;if(!q){q=c[C>>2]|0;h=c[q+24>>2]|0;if(!((Ed[c[h+12>>2]&511](q)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[h>>2];c[F>>2]=c[h+4>>2]}if((n|0)==255?(q=c[I>>2]|0,c[I>>2]=q+1,a[q>>0]=0,q=(c[F>>2]|0)+-1|0,c[F>>2]=q,(q|0)==0):0){q=c[C>>2]|0;n=c[q+24>>2]|0;if(!((Ed[c[n+12>>2]&511](q)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[n>>2];c[F>>2]=c[n+4>>2]}j=j<<8;f=f+-8|0}while((f|0)>7);c[B>>2]=j;c[A>>2]=f;if(l){f=f+l|0;j=((1<7)do{p=j>>>16;n=p&255;q=c[I>>2]|0;c[I>>2]=q+1;a[q>>0]=p;q=(c[F>>2]|0)+-1|0;c[F>>2]=q;if(!q){q=c[C>>2]|0;h=c[q+24>>2]|0;if(!((Ed[c[h+12>>2]&511](q)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[h>>2];c[F>>2]=c[h+4>>2]}if((n|0)==255?(q=c[I>>2]|0,c[I>>2]=q+1,a[q>>0]=0,q=(c[F>>2]|0)+-1|0,c[F>>2]=q,(q|0)==0):0){q=c[C>>2]|0;h=c[q+24>>2]|0;if(!((Ed[c[h+12>>2]&511](q)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[h>>2];c[F>>2]=c[h+4>>2]}j=j<<8;f=f+-8|0}while((f|0)>7);c[B>>2]=j;c[A>>2]=f}if((s|0)>=1){p=u+960|0;q=u+1264|0;n=f;m=1;f=0;while(1){l=b[r+(c[t+(m<<2)>>2]<<1)>>1]|0;k=l<<16>>16;if(!(l<<16>>16))f=f+1|0;else{if((f|0)>15)do{h=c[p>>2]|0;L=a[q>>0]|0;o=L<<24>>24;if(!(L<<24>>24)){L=c[C>>2]|0;M=c[L>>2]|0;c[M+20>>2]=41;Bd[c[M>>2]&511](L)}n=n+o|0;j=((1<7)do{L=j>>>16;h=L&255;M=c[I>>2]|0;c[I>>2]=M+1;a[M>>0]=L;M=(c[F>>2]|0)+-1|0;c[F>>2]=M;if(!M){M=c[C>>2]|0;o=c[M+24>>2]|0;if(!((Ed[c[o+12>>2]&511](M)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[o>>2];c[F>>2]=c[o+4>>2]}do if((h|0)==255){M=c[I>>2]|0;c[I>>2]=M+1;a[M>>0]=0;M=(c[F>>2]|0)+-1|0;c[F>>2]=M;if(M)break;M=c[C>>2]|0;h=c[M+24>>2]|0;if(!((Ed[c[h+12>>2]&511](M)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[h>>2];c[F>>2]=c[h+4>>2]}while(0);j=j<<8;n=n+-8|0}while((n|0)>7);c[B>>2]=j;c[A>>2]=n;f=f+-16|0}while((f|0)>15);if(l<<16>>16<0){h=0-k|0;k=k+-1|0}else h=k;o=1;while(1){h=h>>1;if(!h){l=o;break}else o=o+1|0}if((l|0)>10){M=c[C>>2]|0;L=c[M>>2]|0;c[L+20>>2]=6;Bd[c[L>>2]&511](M)}M=l+(f<<4)|0;h=c[u+(M<<2)>>2]|0;M=a[u+M+1024>>0]|0;o=M<<24>>24;if(!(M<<24>>24)){M=c[C>>2]|0;L=c[M>>2]|0;c[L+20>>2]=41;Bd[c[L>>2]&511](M)}f=n+o|0;j=((1<7)do{L=j>>>16;n=L&255;M=c[I>>2]|0;c[I>>2]=M+1;a[M>>0]=L;M=(c[F>>2]|0)+-1|0;c[F>>2]=M;if(!M){M=c[C>>2]|0;h=c[M+24>>2]|0;if(!((Ed[c[h+12>>2]&511](M)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[h>>2];c[F>>2]=c[h+4>>2]}do if((n|0)==255){M=c[I>>2]|0;c[I>>2]=M+1;a[M>>0]=0;M=(c[F>>2]|0)+-1|0;c[F>>2]=M;if(M)break;M=c[C>>2]|0;n=c[M+24>>2]|0;if(!((Ed[c[n+12>>2]&511](M)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[n>>2];c[F>>2]=c[n+4>>2]}while(0);j=j<<8;f=f+-8|0}while((f|0)>7);c[B>>2]=j;c[A>>2]=f;if(!l){M=c[C>>2]|0;L=c[M>>2]|0;c[L+20>>2]=41;Bd[c[L>>2]&511](M)}n=f+l|0;j=((1<7)do{L=j>>>16;f=L&255;M=c[I>>2]|0;c[I>>2]=M+1;a[M>>0]=L;M=(c[F>>2]|0)+-1|0;c[F>>2]=M;if(!M){M=c[C>>2]|0;h=c[M+24>>2]|0;if(!((Ed[c[h+12>>2]&511](M)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[h>>2];c[F>>2]=c[h+4>>2]}do if((f|0)==255){M=c[I>>2]|0;c[I>>2]=M+1;a[M>>0]=0;M=(c[F>>2]|0)+-1|0;c[F>>2]=M;if(M)break;M=c[C>>2]|0;f=c[M+24>>2]|0;if(!((Ed[c[f+12>>2]&511](M)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[f>>2];c[F>>2]=c[f+4>>2]}while(0);j=j<<8;n=n+-8|0}while((n|0)>7);c[B>>2]=j;c[A>>2]=n;f=0}if((m|0)<(s|0))m=m+1|0;else{l=j;break}}if((f|0)>0){h=c[u>>2]|0;M=a[u+1024>>0]|0;j=M<<24>>24;if(!(M<<24>>24)){M=c[C>>2]|0;L=c[M>>2]|0;c[L+20>>2]=41;Bd[c[L>>2]&511](M)}f=n+j|0;h=((1<7)do{L=h>>>16;j=L&255;M=c[I>>2]|0;c[I>>2]=M+1;a[M>>0]=L;M=(c[F>>2]|0)+-1|0;c[F>>2]=M;if(!M){M=c[C>>2]|0;k=c[M+24>>2]|0;if(!((Ed[c[k+12>>2]&511](M)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[k>>2];c[F>>2]=c[k+4>>2]}if((j|0)==255?(M=c[I>>2]|0,c[I>>2]=M+1,a[M>>0]=0,M=(c[F>>2]|0)+-1|0,c[F>>2]=M,(M|0)==0):0){M=c[C>>2]|0;j=c[M+24>>2]|0;if(!((Ed[c[j+12>>2]&511](M)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[j>>2];c[F>>2]=c[j+4>>2]}h=h<<8;f=f+-8|0}while((f|0)>7);c[B>>2]=h;c[A>>2]=f}}c[w>>2]=b[c[v>>2]>>1];g=g+1|0;if((g|0)>=(c[x>>2]|0))break a;f=c[C>>2]|0}if((f|0)==120){i=K;return k|0}}while(0);g=c[E>>2]|0;c[g>>2]=c[I>>2];c[g+4>>2]=c[F>>2];c[H+0>>2]=c[G+0>>2];c[H+4>>2]=c[G+4>>2];c[H+8>>2]=c[G+8>>2];c[H+12>>2]=c[G+12>>2];c[H+16>>2]=c[G+16>>2];c[H+20>>2]=c[G+20>>2];g=c[D>>2]|0;if(!g){J=1;i=K;return J|0}h=J+36|0;f=c[h>>2]|0;if(!f){c[h>>2]=g;f=J+40|0;c[f>>2]=(c[f>>2]|0)+1&7;f=g}c[h>>2]=f+-1;J=1;i=K;return J|0}function u$(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+1296|0;q=r+1028|0;p=r;if(f>>>0>3){o=c[b>>2]|0;c[o+20>>2]=52;c[o+24>>2]=f;Bd[c[o>>2]&511](b)}m=e<<24>>24!=0;if(m)e=b+(f<<2)+120|0;else e=b+(f<<2)+136|0;o=c[e>>2]|0;if(!o){l=c[b>>2]|0;c[l+20>>2]=52;c[l+24>>2]=f;Bd[c[l>>2]&511](b)}e=c[g>>2]|0;if(!e){e=Hd[c[c[b+4>>2]>>2]&255](b,1,1280)|0;c[g>>2]=e;n=b}else n=b;j=1;k=0;while(1){h=a[o+j>>0]|0;g=h&255;f=g+k|0;if((f|0)>256){l=c[b>>2]|0;c[l+20>>2]=9;Bd[c[l>>2]&511](n)}if(!(h<<24>>24))f=k;else sfa(q+k|0,j&255|0,g|0)|0;j=j+1|0;if((j|0)==17)break;else k=f}a[q+f>>0]=0;h=a[q>>0]|0;if(h<<24>>24){j=h;g=0;k=0;l=h<<24>>24;while(1){if((j<<24>>24|0)==(l|0)){h=k;while(1){k=h+1|0;c[p+(h<<2)>>2]=g;g=g+1|0;h=a[q+k>>0]|0;if((h<<24>>24|0)==(l|0))h=k;else break}}else h=j;if((g|0)>=(1<>2]|0;c[j+20>>2]=9;Bd[c[j>>2]&511](n)}if(!(h<<24>>24))break;else{j=h;g=g<<1;l=l+1|0}}}sfa(e+1024|0,0,256)|0;h=m?15:255;if((f|0)>0)k=0;else{i=r;return}do{j=d[o+k+17>>0]|0;g=e+j+1024|0;if(!(j>>>0<=h>>>0?(a[g>>0]|0)==0:0)){l=c[b>>2]|0;c[l+20>>2]=9;Bd[c[l>>2]&511](n)}c[e+(j<<2)>>2]=c[p+(k<<2)>>2];a[g>>0]=a[q+k>>0]|0;k=k+1|0}while((k|0)!=(f|0));i=r;return}function v$(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=c[b+380>>2]|0;l=g+8|0;m=b+272|0;if((c[l>>2]|0)>>>0>=(c[m>>2]|0)>>>0)return;n=g+12|0;o=b+268|0;p=b+384|0;i=g+24|0;j=b+388|0;k=g+16|0;g=c[n>>2]|0;while(1){h=c[o>>2]|0;if(g>>>0>>0){Md[c[(c[p>>2]|0)+4>>2]&63](b,d,e,f,i,n,h);g=c[n>>2]|0;h=c[o>>2]|0}if((g|0)!=(h|0)){g=12;break}g=(Pd[c[(c[j>>2]|0)+4>>2]&511](b,i)|0)<<24>>24==0;h=(a[k>>0]|0)!=0;if(g){g=7;break}if(h){c[e>>2]=(c[e>>2]|0)+1;a[k>>0]=0}c[n>>2]=0;h=(c[l>>2]|0)+1|0;c[l>>2]=h;if(h>>>0<(c[m>>2]|0)>>>0)g=0;else{g=12;break}}if((g|0)==7){if(h)return;c[e>>2]=(c[e>>2]|0)+-1;a[k>>0]=1;return}else if((g|0)==12)return}function w$(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=c[d+(f<<2)+88>>2]|0;if(!m){l=c[d>>2]|0;c[l+20>>2]=54;c[l+24>>2]=f;Bd[c[l>>2]&511](d)}n=d+372|0;i=c[n>>2]|0;if((i|0)<0)g=0;else{h=c[d+368>>2]|0;j=0;g=0;while(1){g=(e[m+(c[h+(j<<2)>>2]<<1)>>1]|0)>255?1:g;if((j|0)<(i|0))j=j+1|0;else break}}k=m+128|0;if(a[k>>0]|0)return g|0;l=d+24|0;h=c[l>>2]|0;j=c[h>>2]|0;c[h>>2]=j+1;a[j>>0]=-1;j=h+4|0;i=(c[j>>2]|0)+-1|0;c[j>>2]=i;if((i|0)==0?(Ed[c[h+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}h=c[l>>2]|0;j=c[h>>2]|0;c[h>>2]=j+1;a[j>>0]=-37;j=h+4|0;i=(c[j>>2]|0)+-1|0;c[j>>2]=i;if((i|0)==0?(Ed[c[h+12>>2]&511](d)|0)<<24>>24==0:0){i=c[d>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](d)}i=(g|0)!=0;h=c[n>>2]|0;if(i)h=(h<<1)+2|0;else h=h+1|0;h=h+3|0;j=c[l>>2]|0;p=c[j>>2]|0;c[j>>2]=p+1;a[p>>0]=h>>>8;p=j+4|0;o=(c[p>>2]|0)+-1|0;c[p>>2]=o;if((o|0)==0?(Ed[c[j+12>>2]&511](d)|0)<<24>>24==0:0){p=c[d>>2]|0;c[p+20>>2]=25;Bd[c[p>>2]&511](d)}j=c[l>>2]|0;o=c[j>>2]|0;c[j>>2]=o+1;a[o>>0]=h;o=j+4|0;p=(c[o>>2]|0)+-1|0;c[o>>2]=p;if((p|0)==0?(Ed[c[j+12>>2]&511](d)|0)<<24>>24==0:0){p=c[d>>2]|0;c[p+20>>2]=25;Bd[c[p>>2]&511](d)}h=c[l>>2]|0;o=c[h>>2]|0;c[h>>2]=o+1;a[o>>0]=(g<<4)+f;o=h+4|0;p=(c[o>>2]|0)+-1|0;c[o>>2]=p;if((p|0)==0?(Ed[c[h+12>>2]&511](d)|0)<<24>>24==0:0){p=c[d>>2]|0;c[p+20>>2]=25;Bd[c[p>>2]&511](d)}a:do if((c[n>>2]|0)>=0){f=d+368|0;if(i)i=0;else{j=0;while(1){h=c[l>>2]|0;p=b[m+(c[(c[f>>2]|0)+(j<<2)>>2]<<1)>>1]&255;o=c[h>>2]|0;c[h>>2]=o+1;a[o>>0]=p;o=h+4|0;p=(c[o>>2]|0)+-1|0;c[o>>2]=p;if((p|0)==0?(Ed[c[h+12>>2]&511](d)|0)<<24>>24==0:0){p=c[d>>2]|0;c[p+20>>2]=25;Bd[c[p>>2]&511](d)}if((j|0)<(c[n>>2]|0))j=j+1|0;else break a}}while(1){h=b[m+(c[(c[f>>2]|0)+(i<<2)>>2]<<1)>>1]|0;j=c[l>>2]|0;o=c[j>>2]|0;c[j>>2]=o+1;a[o>>0]=(h&65535)>>>8;o=j+4|0;p=(c[o>>2]|0)+-1|0;c[o>>2]=p;if((p|0)==0?(Ed[c[j+12>>2]&511](d)|0)<<24>>24==0:0){p=c[d>>2]|0;c[p+20>>2]=25;Bd[c[p>>2]&511](d)}j=c[l>>2]|0;o=c[j>>2]|0;c[j>>2]=o+1;a[o>>0]=h;o=j+4|0;p=(c[o>>2]|0)+-1|0;c[o>>2]=p;if((p|0)==0?(Ed[c[j+12>>2]&511](d)|0)<<24>>24==0:0){p=c[d>>2]|0;c[p+20>>2]=25;Bd[c[p>>2]&511](d)}if((i|0)<(c[n>>2]|0))i=i+1|0;else break}}while(0);a[k>>0]=1;return g|0}function x$(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=b+24|0;e=c[h>>2]|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=-1;g=e+4|0;f=(c[g>>2]|0)+-1|0;c[g>>2]=f;if((f|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){f=c[b>>2]|0;c[f+20>>2]=25;Bd[c[f>>2]&511](b)}e=c[h>>2]|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=d;g=e+4|0;f=(c[g>>2]|0)+-1|0;c[g>>2]=f;if((f|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){f=c[b>>2]|0;c[f+20>>2]=25;Bd[c[f>>2]&511](b)}g=b+76|0;d=((c[g>>2]|0)*3|0)+8|0;e=c[h>>2]|0;i=c[e>>2]|0;c[e>>2]=i+1;a[i>>0]=d>>>8;i=e+4|0;f=(c[i>>2]|0)+-1|0;c[i>>2]=f;if((f|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){i=c[b>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](b)}e=c[h>>2]|0;f=c[e>>2]|0;c[e>>2]=f+1;a[f>>0]=d;f=e+4|0;i=(c[f>>2]|0)+-1|0;c[f>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){i=c[b>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](b)}e=b+68|0;if(!((c[e>>2]|0)<=65535?(c[b+64>>2]|0)<=65535:0)){i=c[b>>2]|0;c[i+20>>2]=42;c[i+24>>2]=65535;Bd[c[i>>2]&511](b)}d=c[h>>2]|0;i=c[b+72>>2]&255;f=c[d>>2]|0;c[d>>2]=f+1;a[f>>0]=i;f=d+4|0;i=(c[f>>2]|0)+-1|0;c[f>>2]=i;if((i|0)==0?(Ed[c[d+12>>2]&511](b)|0)<<24>>24==0:0){i=c[b>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](b)}d=c[e>>2]|0;e=c[h>>2]|0;f=c[e>>2]|0;c[e>>2]=f+1;a[f>>0]=d>>>8;f=e+4|0;i=(c[f>>2]|0)+-1|0;c[f>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){i=c[b>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](b)}e=c[h>>2]|0;f=c[e>>2]|0;c[e>>2]=f+1;a[f>>0]=d;f=e+4|0;i=(c[f>>2]|0)+-1|0;c[f>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){i=c[b>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](b)}d=c[b+64>>2]|0;e=c[h>>2]|0;f=c[e>>2]|0;c[e>>2]=f+1;a[f>>0]=d>>>8;f=e+4|0;i=(c[f>>2]|0)+-1|0;c[f>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){i=c[b>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](b)}e=c[h>>2]|0;f=c[e>>2]|0;c[e>>2]=f+1;a[f>>0]=d;f=e+4|0;i=(c[f>>2]|0)+-1|0;c[f>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){i=c[b>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](b)}e=c[h>>2]|0;i=c[g>>2]&255;f=c[e>>2]|0;c[e>>2]=f+1;a[f>>0]=i;f=e+4|0;i=(c[f>>2]|0)+-1|0;c[f>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){i=c[b>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](b)}if((c[g>>2]|0)<=0)return;d=0;f=c[b+84>>2]|0;while(1){e=c[h>>2]|0;i=c[f>>2]&255;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=i;j=e+4|0;i=(c[j>>2]|0)+-1|0;c[j>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){i=c[b>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](b)}e=c[h>>2]|0;i=(c[f+8>>2]<<4)+(c[f+12>>2]|0)&255;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=i;j=e+4|0;i=(c[j>>2]|0)+-1|0;c[j>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){i=c[b>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](b)}e=c[h>>2]|0;i=c[f+16>>2]&255;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=i;j=e+4|0;i=(c[j>>2]|0)+-1|0;c[j>>2]=i;if((i|0)==0?(Ed[c[e+12>>2]&511](b)|0)<<24>>24==0:0){i=c[b>>2]|0;c[i+20>>2]=25;Bd[c[i>>2]&511](b)}d=d+1|0;if((d|0)>=(c[g>>2]|0))break;else f=f+88|0}return}function y$(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!(f<<24>>24)){g=e;f=b+(e<<2)+120|0}else{g=e+16|0;f=b+(e<<2)+136|0}k=c[f>>2]|0;if(!k){j=c[b>>2]|0;c[j+20>>2]=52;c[j+24>>2]=g;Bd[c[j>>2]&511](b)}j=k+273|0;if(a[j>>0]|0)return;i=b+24|0;f=c[i>>2]|0;e=c[f>>2]|0;c[f>>2]=e+1;a[e>>0]=-1;e=f+4|0;h=(c[e>>2]|0)+-1|0;c[e>>2]=h;if((h|0)==0?(Ed[c[f+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Bd[c[h>>2]&511](b)}f=c[i>>2]|0;e=c[f>>2]|0;c[f>>2]=e+1;a[e>>0]=-60;e=f+4|0;h=(c[e>>2]|0)+-1|0;c[e>>2]=h;if((h|0)==0?(Ed[c[f+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Bd[c[h>>2]&511](b)}h=(d[k+16>>0]|0)+((d[k+15>>0]|0)+((d[k+14>>0]|0)+((d[k+13>>0]|0)+((d[k+12>>0]|0)+((d[k+11>>0]|0)+((d[k+10>>0]|0)+((d[k+9>>0]|0)+((d[k+8>>0]|0)+((d[k+7>>0]|0)+((d[k+6>>0]|0)+((d[k+5>>0]|0)+((d[k+4>>0]|0)+((d[k+3>>0]|0)+((d[k+2>>0]|0)+(d[k+1>>0]|0)))))))))))))))|0;e=h+19|0;f=c[i>>2]|0;m=c[f>>2]|0;c[f>>2]=m+1;a[m>>0]=e>>>8;m=f+4|0;l=(c[m>>2]|0)+-1|0;c[m>>2]=l;if((l|0)==0?(Ed[c[f+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}f=c[i>>2]|0;l=c[f>>2]|0;c[f>>2]=l+1;a[l>>0]=e;l=f+4|0;m=(c[l>>2]|0)+-1|0;c[l>>2]=m;if((m|0)==0?(Ed[c[f+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}f=c[i>>2]|0;l=c[f>>2]|0;c[f>>2]=l+1;a[l>>0]=g;l=f+4|0;m=(c[l>>2]|0)+-1|0;c[l>>2]=m;if((m|0)==0?(Ed[c[f+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}e=1;do{m=a[k+e>>0]|0;f=c[i>>2]|0;l=c[f>>2]|0;c[f>>2]=l+1;a[l>>0]=m;l=f+4|0;m=(c[l>>2]|0)+-1|0;c[l>>2]=m;if((m|0)==0?(Ed[c[f+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}e=e+1|0}while((e|0)!=17);if((h|0)>0){e=0;do{m=a[k+e+17>>0]|0;f=c[i>>2]|0;l=c[f>>2]|0;c[f>>2]=l+1;a[l>>0]=m;l=f+4|0;m=(c[l>>2]|0)+-1|0;c[l>>2]=m;if((m|0)==0?(Ed[c[f+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Bd[c[m>>2]&511](b)}e=e+1|0}while((e|0)!=(h|0))}a[j>>0]=1;return}function z$(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[b+204>>2]|0;if(!d){f=b+76|0;d=c[f>>2]|0;if((d|0)>4){h=c[b>>2]|0;c[h+20>>2]=27;c[h+24>>2]=d;c[h+28>>2]=4;Bd[c[h>>2]&511](b);d=c[f>>2]|0}c[b+276>>2]=d;if((d|0)>0){d=b+84|0;e=0;do{c[b+(e<<2)+280>>2]=(c[d>>2]|0)+(e*88|0);e=e+1|0}while((e|0)<(c[f>>2]|0))}}else{f=c[(c[b+376>>2]|0)+28>>2]|0;g=c[d+(f*36|0)>>2]|0;c[b+276>>2]=g;if((g|0)>0){e=b+84|0;h=0;do{c[b+(h<<2)+280>>2]=(c[e>>2]|0)+((c[d+(f*36|0)+(h<<2)+4>>2]|0)*88|0);h=h+1|0}while((h|0)<(g|0))}if(a[b+252>>0]|0){c[b+348>>2]=c[d+(f*36|0)+20>>2];c[b+352>>2]=c[d+(f*36|0)+24>>2];c[b+356>>2]=c[d+(f*36|0)+28>>2];c[b+360>>2]=c[d+(f*36|0)+32>>2];return}}c[b+348>>2]=0;h=c[b+364>>2]|0;c[b+352>>2]=(da(h,h)|0)+-1;c[b+356>>2]=0;c[b+360>>2]=0;return}function A$(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=a+276|0;b=c[g>>2]|0;a:do if((b|0)!=1){if((b+-1|0)>>>0>3){e=c[a>>2]|0;c[e+20>>2]=27;c[e+24>>2]=b;c[e+28>>2]=4;Bd[c[e>>2]&511](a)}f=a+364|0;c[a+296>>2]=lH(c[a+64>>2]|0,da(c[f>>2]|0,c[a+256>>2]|0)|0)|0;c[a+300>>2]=lH(c[a+68>>2]|0,da(c[f>>2]|0,c[a+260>>2]|0)|0)|0;f=a+304|0;c[f>>2]=0;if((c[g>>2]|0)>0){e=0;b=0;while(1){h=c[a+(b<<2)+280>>2]|0;k=c[h+8>>2]|0;c[h+56>>2]=k;j=c[h+12>>2]|0;c[h+60>>2]=j;d=da(k,j)|0;c[h+64>>2]=d;c[h+68>>2]=da(c[h+36>>2]|0,k)|0;i=((c[h+28>>2]|0)>>>0)%(k>>>0)|0;c[h+72>>2]=(i|0)==0?k:i;i=((c[h+32>>2]|0)>>>0)%(j>>>0)|0;c[h+76>>2]=(i|0)==0?j:i;if((e+d|0)>10){k=c[a>>2]|0;c[k+20>>2]=14;Bd[c[k>>2]&511](a)}if((d|0)>0)do{d=d+-1|0;k=c[f>>2]|0;c[f>>2]=k+1;c[a+(k<<2)+308>>2]=b}while((d|0)>0);b=b+1|0;if((b|0)>=(c[g>>2]|0))break a;e=c[f>>2]|0}}}else{k=c[a+280>>2]|0;c[a+296>>2]=c[k+28>>2];h=c[k+32>>2]|0;c[a+300>>2]=h;c[k+56>>2]=1;c[k+60>>2]=1;c[k+64>>2]=1;c[k+68>>2]=c[k+36>>2];c[k+72>>2]=1;g=c[k+12>>2]|0;h=(h>>>0)%(g>>>0)|0;c[k+76>>2]=(h|0)==0?g:h;c[a+304>>2]=1;c[a+308>>2]=0}while(0);b=c[a+228>>2]|0;if((b|0)<=0)return;k=da(c[a+296>>2]|0,b)|0;c[a+224>>2]=(k|0)<65535?k:65535;return}function B$(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;h=c[a+432>>2]|0;if(c[a+252>>2]|0){g=h+56|0;f=c[g>>2]|0;if(!f){A1(a);f=c[g>>2]|0}c[g>>2]=f+-1}r=h+20|0;if((c[r>>2]|0)==-1)return 1;s=a+332|0;if((c[s>>2]|0)<=0)return 1;t=h+60|0;u=h+40|0;n=h+24|0;o=a+388|0;q=0;a:while(1){p=c[e+(q<<2)>>2]|0;l=c[a+(q<<2)+336>>2]|0;j=c[(c[a+(l<<2)+308>>2]|0)+20>>2]|0;i=t+(j<<2)|0;f=c[i>>2]|0;k=u+(l<<2)|0;g=c[k>>2]|0;if(!(B1(a,f+g|0)|0)){c[k>>2]=0;f=c[n+(l<<2)>>2]|0}else{m=B1(a,f+(g+1)|0)|0;h=f+(g+2+m)|0;f=B1(a,h)|0;if(f){g=(c[i>>2]|0)+20|0;if(!(B1(a,g)|0))h=g;else while(1){f=f<<1;g=g+1|0;if((f|0)==32768)break a;if(!(B1(a,g)|0)){h=g;break}}}else f=0;do if((f|0)>=(1<<(d[a+j+203>>0]|0)>>1|0)){g=m<<2;if((f|0)>(1<<(d[a+j+219>>0]|0)>>1|0)){c[k>>2]=g+12;break}else{c[k>>2]=g+4;break}}else c[k>>2]=0;while(0);h=h+14|0;g=f>>1;if(g)do{j=(B1(a,h)|0)==0;f=(j?0:g)|f;g=g>>1}while((g|0)!=0);l=n+(l<<2)|0;f=(c[l>>2]|0)+((m|0)==0?f+1|0:~f)|0;c[l>>2]=f}b[p>>1]=f<>2];q=q+1|0;if((q|0)>=(c[s>>2]|0)){v=24;break}}if((v|0)==24)return 1;v=c[a>>2]|0;c[v+20>>2]=117;Cd[c[v+4>>2]&255](a,-1);c[r>>2]=-1;return 1}function C$(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;h=c[a+432>>2]|0;if(c[a+252>>2]|0){g=h+56|0;f=c[g>>2]|0;if(!f){A1(a);f=c[g>>2]|0}c[g>>2]=f+-1}q=h+20|0;if((c[q>>2]|0)==-1)return 1;p=c[a+396>>2]|0;m=c[e>>2]|0;l=c[(c[a+308>>2]|0)+24>>2]|0;n=h+124+(l<<2)|0;o=a+380|0;j=h+188|0;k=a+388|0;l=a+l+235|0;f=(c[a+376>>2]|0)+-1|0;a:while(1){h=(c[n>>2]|0)+(f*3|0)|0;if(B1(a,h)|0){f=20;break}while(1){g=f;f=f+1|0;if(B1(a,h+1|0)|0)break;if((f|0)>=(c[o>>2]|0)){f=10;break a}else h=h+3|0}i=B1(a,j)|0;e=h+2|0;h=B1(a,e)|0;if(h){if(B1(a,e)|0){h=h<<1;g=(c[n>>2]|0)+((g|0)<(d[l>>0]|0|0)?189:217)|0;if(B1(a,g)|0)do{h=h<<1;g=g+1|0;if((h|0)==32768){f=16;break a}}while((B1(a,g)|0)!=0)}else g=e;e=g+14|0;g=h>>1;if(g)do{r=(B1(a,e)|0)==0;h=(r?0:g)|h;g=g>>1}while((g|0)!=0)}else h=0;b[m+(c[p+(f<<2)>>2]<<1)>>1]=((i|0)==0?h+1|0:~h)<>2];if((f|0)>=(c[o>>2]|0)){f=20;break}}if((f|0)==10){r=c[a>>2]|0;c[r+20>>2]=117;Cd[c[r+4>>2]&255](a,-1);c[q>>2]=-1;return 1}else if((f|0)==16){r=c[a>>2]|0;c[r+20>>2]=117;Cd[c[r+4>>2]&255](a,-1);c[q>>2]=-1;return 1}else if((f|0)==20)return 1;return 0}function D$(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0;g=c[a+432>>2]|0;if(c[a+252>>2]|0){h=g+56|0;f=c[h>>2]|0;if(!f){A1(a);f=c[h>>2]|0}c[h>>2]=f+-1}f=g+188|0;g=1<>2];h=a+332|0;if((c[h>>2]|0)>0)i=0;else return 1;do{if(B1(a,f)|0){j=c[d+(i<<2)>>2]|0;b[j>>1]=e[j>>1]|0|g}i=i+1|0}while((i|0)<(c[h>>2]|0));return 1}function E$(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;g=c[a+432>>2]|0;if(c[a+252>>2]|0){f=g+56|0;e=c[f>>2]|0;if(!e){A1(a);e=c[f>>2]|0}c[f>>2]=e+-1}q=g+20|0;if((c[q>>2]|0)==-1)return 1;r=c[a+396>>2]|0;m=c[d>>2]|0;f=c[(c[a+308>>2]|0)+24>>2]|0;o=c[a+388>>2]|0;n=1<>2]|0;while(1){if(b[m+(c[r+(e<<2)>>2]<<1)>>1]|0)break;e=e+-1|0;if(!e){e=0;break}}l=g+124+(f<<2)|0;i=g+188|0;j=n&65535;k=o&65535;f=(c[a+376>>2]|0)+-1|0;a:while(1){d=(c[l>>2]|0)+(f*3|0)|0;if((f|0)>=(e|0)?(B1(a,d)|0)!=0:0){h=24;break}else g=d;while(1){f=f+1|0;d=m+(c[r+(f<<2)>>2]<<1)|0;if(b[d>>1]|0){h=13;break}if(B1(a,g+1|0)|0){h=18;break}if((f|0)>=(c[p>>2]|0)){h=22;break a}else g=g+3|0}do if((h|0)==13){if(B1(a,g+2|0)|0){h=b[d>>1]|0;g=h<<16>>16;if(h<<16>>16<0){b[d>>1]=g+o;break}else{b[d>>1]=g+n;break}}}else if((h|0)==18)if(!(B1(a,i)|0)){b[d>>1]=j;break}else{b[d>>1]=k;break}while(0);if((f|0)>=(c[p>>2]|0)){h=24;break}}if((h|0)==22){r=c[a>>2]|0;c[r+20>>2]=117;Cd[c[r+4>>2]&255](a,-1);c[q>>2]=-1;return 1}else if((h|0)==24)return 1;return 0}function F$(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;h=c[a+432>>2]|0;if(c[a+252>>2]|0){g=h+56|0;f=c[g>>2]|0;if(!f){A1(a);f=c[g>>2]|0}c[g>>2]=f+-1}y=h+20|0;if((c[y>>2]|0)==-1)return 1;r=c[a+396>>2]|0;s=a+332|0;if((c[s>>2]|0)<=0)return 1;t=h+60|0;u=h+40|0;v=h+24|0;w=a+400|0;x=h+124|0;o=h+188|0;q=0;a:while(1){p=c[e+(q<<2)>>2]|0;l=c[a+(q<<2)+336>>2]|0;n=c[a+(l<<2)+308>>2]|0;j=c[n+20>>2]|0;h=t+(j<<2)|0;f=c[h>>2]|0;k=u+(l<<2)|0;i=c[k>>2]|0;if(!(B1(a,f+i|0)|0)){c[k>>2]=0;f=c[v+(l<<2)>>2]|0}else{m=B1(a,f+(i+1)|0)|0;g=f+(i+2+m)|0;f=B1(a,g)|0;if(f){i=(c[h>>2]|0)+20|0;if(!(B1(a,i)|0))g=i;else while(1){f=f<<1;i=i+1|0;if((f|0)==32768){f=14;break a}if(!(B1(a,i)|0)){g=i;break}}}else f=0;do if((f|0)>=(1<<(d[a+j+203>>0]|0)>>1|0)){i=m<<2;if((f|0)>(1<<(d[a+j+219>>0]|0)>>1|0)){c[k>>2]=i+12;break}else{c[k>>2]=i+4;break}}else c[k>>2]=0;while(0);i=g+14|0;g=f>>1;if(g)do{j=(B1(a,i)|0)==0;f=(j?0:g)|f;g=g>>1}while((g|0)!=0);l=v+(l<<2)|0;f=(c[l>>2]|0)+((m|0)==0?f+1|0:~f)|0;c[l>>2]=f}b[p>>1]=f;b:do if(c[w>>2]|0){n=c[n+24>>2]|0;m=x+(n<<2)|0;n=a+n+235|0;f=0;do{g=(c[m>>2]|0)+(f*3|0)|0;if(B1(a,g)|0)break b;while(1){h=f;f=f+1|0;if(B1(a,g+1|0)|0)break;if((f|0)>=(c[w>>2]|0)){f=28;break a}else g=g+3|0}k=B1(a,o)|0;i=g+2|0;g=B1(a,i)|0;if(g){if(B1(a,i)|0){g=g<<1;h=(c[m>>2]|0)+((h|0)<(d[n>>0]|0|0)?189:217)|0;if(B1(a,h)|0)do{g=g<<1;h=h+1|0;if((g|0)==32768){f=34;break a}}while((B1(a,h)|0)!=0)}else h=i;i=h+14|0;h=g>>1;if(h)do{l=(B1(a,i)|0)==0;g=(l?0:h)|g;h=h>>1}while((h|0)!=0)}else g=0;b[p+(c[r+(f<<2)>>2]<<1)>>1]=(k|0)==0?g+1|0:g^65535}while((f|0)<(c[w>>2]|0))}while(0);q=q+1|0;if((q|0)>=(c[s>>2]|0)){f=39;break}}if((f|0)==14){e=c[a>>2]|0;c[e+20>>2]=117;Cd[c[e+4>>2]&255](a,-1);c[y>>2]=-1;return 1}else if((f|0)==28){e=c[a>>2]|0;c[e+20>>2]=117;Cd[c[e+4>>2]&255](a,-1);c[y>>2]=-1;return 1}else if((f|0)==34){e=c[a>>2]|0;c[e+20>>2]=117;Cd[c[e+4>>2]&255](a,-1);c[y>>2]=-1;return 1}else if((f|0)==39)return 1;return 0}function G$(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0;qa=i;i=i+128|0;pa=qa;q=c[d+416>>2]|0;na=d+296|0;oa=(c[na>>2]|0)+-1|0;k=d+124|0;l=d+132|0;m=d+424|0;n=d+376|0;o=d+128|0;ma=d+136|0;while(1){g=c[k>>2]|0;h=c[l>>2]|0;if((g|0)>(h|0))break;j=c[m>>2]|0;if(a[j+17>>0]|0)break;if((g|0)==(h|0)?(c[o>>2]|0)>>>0>((c[ma>>2]|0)+((c[n>>2]|0)==0&1)|0)>>>0:0)break;if(!(Ed[c[j>>2]&511](d)|0)){g=0;p=70;break}}if((p|0)==70){i=qa;return g|0}ja=d+36|0;g=c[ja>>2]|0;if((g|0)>0){ka=d+4|0;la=q+72|0;ba=q+112|0;ca=d+436|0;ea=pa+4|0;fa=pa+18|0;ga=pa+32|0;ha=pa+16|0;ia=pa+2|0;$=0;aa=c[d+196>>2]|0;while(1){if(a[aa+52>>0]|0){g=c[ma>>2]|0;o=aa+12|0;k=c[o>>2]|0;if(g>>>0>>0){h=k<<1;_=k;j=0}else{_=((c[aa+32>>2]|0)>>>0)%(k>>>0)|0;_=(_|0)==0?k:_;h=_;j=1}if(!g){Z=Qd[c[(c[ka>>2]|0)+32>>2]&127](d,c[la+($<<2)>>2]|0,0,h,0)|0;g=1}else{Z=da(k,g+-1|0)|0;Z=Qd[c[(c[ka>>2]|0)+32>>2]&127](d,c[la+($<<2)>>2]|0,Z,k+h|0,0)|0;Z=Z+(c[o>>2]<<2)|0;g=0}o=c[ba>>2]|0;k=$*6|0;h=c[aa+80>>2]|0;l=e[h>>1]|0;q=e[h+2>>1]|0;n=e[h+16>>1]|0;m=e[h+32>>1]|0;p=e[h+18>>1]|0;h=e[h+4>>1]|0;Y=c[(c[ca>>2]|0)+($<<2)+4>>2]|0;if((_|0)>0){X=(g|0)!=0;Q=(j|0)!=0;R=_+-1|0;S=aa+28|0;T=o+((k|1)<<2)|0;U=o+(k+2<<2)|0;V=o+(k+3<<2)|0;W=o+(k+4<<2)|0;M=o+(k+5<<2)|0;N=aa+36|0;O=l*9|0;P=h<<7;J=h<<8;K=l*5|0;L=p<<7;H=p<<8;I=m<<7;G=m<<8;E=l*36|0;F=n<<7;C=n<<8;D=q<<7;t=q<<8;u=aa+40|0;A=0;B=c[f+($<<2)>>2]|0;while(1){g=c[Z+(A<<2)>>2]|0;if(X&(A|0)==0)k=g;else k=c[Z+(A+-1<<2)>>2]|0;if(Q&(A|0)==(R|0))o=g;else o=c[Z+(A+1<<2)>>2]|0;w=b[k>>1]|0;x=b[g>>1]|0;y=b[o>>1]|0;v=(c[S>>2]|0)+-1|0;j=w;m=x;p=y;z=0;s=0;r=k;while(1){oH(g,pa,1);if(z>>>0>>0){l=b[r+128>>1]|0;n=b[g+128>>1]|0;q=b[o+128>>1]|0}else{l=w;n=x;q=y}h=c[T>>2]|0;if((h|0)!=0&(b[ia>>1]|0)==0){k=da(E,m-n|0)|0;if((k|0)>-1){k=(k+D|0)/(t|0)|0;if((h|0)>0){h=1<0){h=1<>1]=k}h=c[U>>2]|0;if((h|0)!=0&(b[ha>>1]|0)==0){k=da(E,w-y|0)|0;if((k|0)>-1){k=(k+F|0)/(C|0)|0;if((h|0)>0){h=1<0){h=1<>1]=k}h=c[V>>2]|0;if((h|0)!=0&(b[ga>>1]|0)==0){k=da(O,w-(x<<1)+y|0)|0;do if((k|0)>-1){k=(k+I|0)/(G|0)|0;if((h|0)<=0)break;h=1<0){h=1<>1]=k}h=c[W>>2]|0;if((h|0)!=0&(b[fa>>1]|0)==0){k=da(K,j-p-l+q|0)|0;do if((k|0)>-1){k=(k+L|0)/(H|0)|0;if((h|0)<=0)break;p=1<0){p=1<>1]=k}h=c[M>>2]|0;if((h|0)!=0&(b[ea>>1]|0)==0){k=da(O,m-(x<<1)+n|0)|0;do if((k|0)>-1){k=(k+P|0)/(J|0)|0;if((h|0)<=0)break;m=1<0){m=1<>1]=k}Ad[Y&63](d,aa,pa,B,s);z=z+1|0;if(z>>>0>v>>>0)break;else{p=y;m=x;j=w;w=l;x=n;y=q;g=g+128|0;o=o+128|0;s=(c[N>>2]|0)+s|0;r=r+128|0}}A=A+1|0;if((A|0)==(_|0))break;else B=B+(c[u>>2]<<2)|0}}g=c[ja>>2]|0}$=$+1|0;if(($|0)>=(g|0))break;else aa=aa+88|0}}pa=(c[ma>>2]|0)+1|0;c[ma>>2]=pa;pa=pa>>>0<(c[na>>2]|0)>>>0?3:4;i=qa;return pa|0}function H$(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+48|0;A=D+20|0;C=D;B=c[e+432>>2]|0;w=c[e+388>>2]|0;k=e+252|0;if((c[k>>2]|0)!=0?(l=B+44|0,(c[l>>2]|0)==0):0){y=B+16|0;z=c[e+428>>2]|0;x=z+20|0;c[x>>2]=(c[x>>2]|0)+((c[y>>2]|0)/8|0);c[y>>2]=0;if(!((Ed[c[z+8>>2]&511](e)|0)<<24>>24)){C=0;i=D;return C|0}g=e+304|0;h=B+20|0;if((c[g>>2]|0)>0){j=h+4|0;m=0;do{c[j+(m<<2)>>2]=0;m=m+1|0}while((m|0)<(c[g>>2]|0))}c[h>>2]=0;c[l>>2]=c[k>>2];if(!(c[e+404>>2]|0))a[B+40>>0]=0}if(!(a[B+40>>0]|0)){c[A+16>>2]=e;u=e+24|0;j=c[u>>2]|0;m=c[j>>2]|0;c[A>>2]=m;h=c[j+4>>2]|0;v=A+4|0;c[v>>2]=h;x=B+12|0;g=c[x>>2]|0;y=B+16|0;k=c[y>>2]|0;z=B+20|0;c[C+0>>2]=c[z+0>>2];c[C+4>>2]=c[z+4>>2];c[C+8>>2]=c[z+8>>2];c[C+12>>2]=c[z+12>>2];c[C+16>>2]=c[z+16>>2];t=e+332|0;do if((c[t>>2]|0)>0){q=B+48|0;r=A+8|0;s=A+12|0;p=0;while(1){n=c[f+(p<<2)>>2]|0;o=c[e+(p<<2)+336>>2]|0;m=c[q+(c[(c[e+(o<<2)+308>>2]|0)+20>>2]<<2)>>2]|0;if((k|0)<8){if(!((C1(A,g,k,0)|0)<<24>>24)){g=0;l=28;break}g=c[r>>2]|0;k=c[s>>2]|0;if((k|0)<8){h=1;l=17}else l=15}else l=15;if((l|0)==15){l=0;j=g>>k+-8&255;h=c[m+(j<<2)+144>>2]|0;if(!h){h=9;l=17}else{k=k-h|0;h=d[m+j+1168>>0]|0}}if((l|0)==17){h=D1(A,g,k,m,h)|0;if((h|0)<0){g=0;l=28;break}k=c[s>>2]|0;g=c[r>>2]|0}if(!h)h=0;else{if((k|0)<(h|0)){if(!((C1(A,g,k,h)|0)<<24>>24)){g=0;l=28;break}k=c[s>>2]|0;g=c[r>>2]|0}k=k-h|0;l=c[270664+(h<<2)>>2]|0;m=g>>k&l;h=m-((m|0)>(c[270664+(h+-1<<2)>>2]|0)?0:l)|0}m=C+(o<<2)+4|0;l=(c[m>>2]|0)+h|0;c[m>>2]=l;b[n>>1]=l<=(c[t>>2]|0)){l=25;break}}if((l|0)==25){m=c[A>>2]|0;j=c[u>>2]|0;h=c[v>>2]|0;break}else if((l|0)==28){i=D;return g|0}}while(0);c[j>>2]=m;c[j+4>>2]=h;c[x>>2]=g;c[y>>2]=k;c[z+0>>2]=c[C+0>>2];c[z+4>>2]=c[C+4>>2];c[z+8>>2]=c[C+8>>2];c[z+12>>2]=c[C+12>>2];c[z+16>>2]=c[C+16>>2]}C=B+44|0;c[C>>2]=(c[C>>2]|0)+-1;C=1;i=D;return C|0}function I$(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+32|0;y=A;z=c[e+432>>2]|0;g=e+252|0;if((c[g>>2]|0)!=0?(l=z+44|0,(c[l>>2]|0)==0):0){w=z+16|0;x=c[e+428>>2]|0;v=x+20|0;c[v>>2]=(c[v>>2]|0)+((c[w>>2]|0)/8|0);c[w>>2]=0;if(!((Ed[c[x+8>>2]&511](e)|0)<<24>>24)){z=0;i=A;return z|0}h=e+304|0;j=z+20|0;if((c[h>>2]|0)>0){k=j+4|0;m=0;do{c[k+(m<<2)>>2]=0;m=m+1|0}while((m|0)<(c[h>>2]|0))}c[j>>2]=0;c[l>>2]=c[g>>2];if(!(c[e+404>>2]|0))a[z+40>>0]=0}if(!(a[z+40>>0]|0)){o=c[e+380>>2]|0;p=c[e+388>>2]|0;q=c[e+396>>2]|0;x=z+20|0;g=c[x>>2]|0;if(!g){c[y+16>>2]=e;t=e+24|0;v=c[t>>2]|0;c[y>>2]=c[v>>2];u=y+4|0;c[u>>2]=c[v+4>>2];v=z+12|0;k=c[v>>2]|0;w=z+16|0;h=c[w>>2]|0;f=c[f>>2]|0;n=c[z+64>>2]|0;g=c[e+376>>2]|0;a:do if((g|0)<=(o|0)){s=y+8|0;r=y+12|0;l=g;while(1){if((h|0)<8){if(!((C1(y,k,h,0)|0)<<24>>24)){g=0;e=36;break}k=c[s>>2]|0;h=c[r>>2]|0;if((h|0)<8){g=1;e=19}else e=17}else e=17;if((e|0)==17){e=0;j=k>>h+-8&255;g=c[n+(j<<2)+144>>2]|0;if(!g){g=9;e=19}else{h=h-g|0;g=d[n+j+1168>>0]|0}}if((e|0)==19){g=D1(y,k,h,n,g)|0;if((g|0)<0){g=0;e=36;break}h=c[r>>2]|0;k=c[s>>2]|0}j=g>>4;m=g&15;if(!m){if(!j){g=0;break a}else if((j|0)!=15){g=h;e=27;break}g=l+15|0}else{g=j+l|0;if((h|0)<(m|0)){if(!((C1(y,k,h,m)|0)<<24>>24)){g=0;e=36;break}h=c[r>>2]|0;k=c[s>>2]|0}h=h-m|0;l=c[270664+(m<<2)>>2]|0;j=k>>h&l;b[f+(c[q+(g<<2)>>2]<<1)>>1]=j-((j|0)>(c[270664+(m+-1<<2)>>2]|0)?0:l)<>24)){z=0;i=A;return z|0}else{g=c[r>>2]|0;k=c[s>>2]|0;break}while(0);s=g-j|0;g=h+-1+(k>>s&c[270664+(j<<2)>>2])|0;h=s;break}else if((e|0)==36){i=A;return g|0}}else g=0;while(0);t=c[t>>2]|0;c[t>>2]=c[y>>2];c[t+4>>2]=c[u>>2];c[v>>2]=k;c[w>>2]=h}else g=g+-1|0;c[x>>2]=g}z=z+44|0;c[z>>2]=(c[z>>2]|0)+-1;z=1;i=A;return z|0}function J$(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+32|0;s=u;t=c[d+432>>2]|0;g=d+252|0;if((c[g>>2]|0)!=0?(l=t+44|0,(c[l>>2]|0)==0):0){q=t+16|0;r=c[d+428>>2]|0;p=r+20|0;c[p>>2]=(c[p>>2]|0)+((c[q>>2]|0)/8|0);c[q>>2]=0;if(!((Ed[c[r+8>>2]&511](d)|0)<<24>>24)){t=0;i=u;return t|0}h=d+304|0;j=t+20|0;if((c[h>>2]|0)>0){k=j+4|0;m=0;do{c[k+(m<<2)>>2]=0;m=m+1|0}while((m|0)<(c[h>>2]|0))}c[j>>2]=0;c[l>>2]=c[g>>2];if(!(c[d+404>>2]|0))a[t+40>>0]=0}c[s+16>>2]=d;o=d+24|0;m=c[o>>2]|0;j=c[m>>2]|0;c[s>>2]=j;h=c[m+4>>2]|0;p=s+4|0;c[p>>2]=h;q=t+12|0;g=c[q>>2]|0;r=t+16|0;k=c[r>>2]|0;n=1<>2];l=d+332|0;do if((c[l>>2]|0)>0){j=s+8|0;m=s+12|0;h=0;while(1){if((k|0)<1){if(!((C1(s,g,k,1)|0)<<24>>24)){g=0;l=19;break}k=c[m>>2]|0;g=c[j>>2]|0}k=k+-1|0;if(1<>2]|0;b[d>>1]=e[d>>1]|0|n}h=h+1|0;if((h|0)>=(c[l>>2]|0)){l=17;break}}if((l|0)==17){j=c[s>>2]|0;m=c[o>>2]|0;h=c[p>>2]|0;break}else if((l|0)==19){i=u;return g|0}}while(0);c[m>>2]=j;c[m+4>>2]=h;c[q>>2]=g;c[r>>2]=k;t=t+44|0;c[t>>2]=(c[t>>2]|0)+-1;t=1;i=u;return t|0}function K$(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+288|0;H=I+256|0;F=I;G=c[e+432>>2]|0;g=e+252|0;if((c[g>>2]|0)!=0?(l=G+44|0,(c[l>>2]|0)==0):0){B=G+16|0;C=c[e+428>>2]|0;A=C+20|0;c[A>>2]=(c[A>>2]|0)+((c[B>>2]|0)/8|0);c[B>>2]=0;if(!((Ed[c[C+8>>2]&511](e)|0)<<24>>24)){H=0;i=I;return H|0}h=e+304|0;j=G+20|0;if((c[h>>2]|0)>0){k=j+4|0;m=0;do{c[k+(m<<2)>>2]=0;m=m+1|0}while((m|0)<(c[h>>2]|0))}c[j>>2]=0;c[l>>2]=c[g>>2];if(!(c[e+404>>2]|0))a[G+40>>0]=0}do if(!(a[G+40>>0]|0)){s=c[e+380>>2]|0;u=c[e+388>>2]|0;t=1<>2]|0;c[H+16>>2]=e;y=e+24|0;A=c[y>>2]|0;c[H>>2]=c[A>>2];z=H+4|0;c[z>>2]=c[A+4>>2];A=G+12|0;j=c[A>>2]|0;B=G+16|0;h=c[B>>2]|0;C=G+20|0;k=c[C>>2]|0;w=c[f>>2]|0;n=c[G+64>>2]|0;m=c[e+376>>2]|0;q=H+8|0;r=H+12|0;a:do if(!k){g=0;while(1){if((h|0)<8){if(!((C1(H,j,h,0)|0)<<24>>24))break a;j=c[q>>2]|0;h=c[r>>2]|0;if((h|0)<8){k=1;x=18}else x=16}else x=16;if((x|0)==16){x=0;l=j>>h+-8&255;k=c[n+(l<<2)+144>>2]|0;if(!k){k=9;x=18}else{h=h-k|0;k=d[n+l+1168>>0]|0}}if((x|0)==18){x=0;k=D1(H,j,h,n,k)|0;if((k|0)<0)break a;h=c[r>>2]|0;j=c[q>>2]|0}l=k>>4;k=k&15;if((k|0)==1)x=22;else if(!k)if((l|0)==15){k=j;l=15;f=0}else break;else{x=c[e>>2]|0;c[x+20>>2]=121;Cd[c[x+4>>2]&255](e,-1);x=22}if((x|0)==22){x=0;if((h|0)<1){if(!((C1(H,j,h,1)|0)<<24>>24))break a;h=c[r>>2]|0;j=c[q>>2]|0}f=h+-1|0;h=f;k=j;f=(1<>2]<<1)|0;do if(!(b[k>>1]|0))if((l|0)<1)break b;else l=l+-1|0;else{if((h|0)<1){if(!((C1(H,j,h,1)|0)<<24>>24))break a;h=c[r>>2]|0;j=c[q>>2]|0}h=h+-1|0;if((1<>1]|0,p=o<<16>>16,(p&t|0)==0):0)if(o<<16>>16>-1){b[k>>1]=p+t;break}else{b[k>>1]=p+u;break}}while(0);k=m+1|0;if((m|0)<(s|0))m=k;else{m=k;break}}if(f){l=c[v+(m<<2)>>2]|0;b[w+(l<<1)>>1]=f;c[F+(g<<2)>>2]=l;g=g+1|0}if((m|0)<(s|0))m=m+1|0;else{k=0;g=j;x=59;break a}}k=1<>24))break;h=c[r>>2]|0;j=c[q>>2]|0}h=h-l|0;k=(j>>h&c[270664+(l<<2)>>2])+k|0;if(!k){k=0;g=j;x=59}else x=47}else x=47}else{g=0;x=47}while(0);c:do if((x|0)==47){while(1){l=w+(c[v+(m<<2)>>2]<<1)|0;do if(b[l>>1]|0){if((h|0)<1){if(!((C1(H,j,h,1)|0)<<24>>24))break c;h=c[r>>2]|0;j=c[q>>2]|0}h=h+-1|0;if((1<>1]|0,E=D<<16>>16,(E&t|0)==0):0)if(D<<16>>16>-1){b[l>>1]=E+t;break}else{b[l>>1]=E+u;break}}while(0);if((m|0)<(s|0))m=m+1|0;else{g=j;break}}k=k+-1|0;x=59}while(0);if((x|0)==59){F=c[y>>2]|0;c[F>>2]=c[H>>2];c[F+4>>2]=c[z>>2];c[A>>2]=g;c[B>>2]=h;c[C>>2]=k;break}if(!g){H=0;i=I;return H|0}do{g=g+-1|0;b[w+(c[F+(g<<2)>>2]<<1)>>1]=0}while((g|0)!=0);g=0;i=I;return g|0}while(0);H=G+44|0;c[H>>2]=(c[H>>2]|0)+-1;H=1;i=I;return H|0}function L$(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+1296|0;n=u+1028|0;t=u;if(f>>>0>3){s=c[b>>2]|0;c[s+20>>2]=52;c[s+24>>2]=f;Bd[c[s>>2]&511](b)}r=e<<24>>24==0;if(r)e=b+(f<<2)+176|0;else e=b+(f<<2)+160|0;s=c[e>>2]|0;if(!s){q=c[b>>2]|0;c[q+20>>2]=52;c[q+24>>2]=f;Bd[c[q>>2]&511](b)}e=c[g>>2]|0;if(!e){e=Hd[c[c[b+4>>2]>>2]&255](b,1,1424)|0;c[g>>2]=e;q=b}else q=b;c[e+140>>2]=s;j=1;k=0;while(1){h=a[s+j>>0]|0;g=h&255;f=g+k|0;if((f|0)>256){p=c[b>>2]|0;c[p+20>>2]=9;Bd[c[p>>2]&511](q)}if(!(h<<24>>24))f=k;else sfa(n+k|0,j&255|0,g|0)|0;j=j+1|0;if((j|0)==17)break;else k=f}a[n+f>>0]=0;h=a[n>>0]|0;if(!(h<<24>>24)){k=1;j=0}else{j=h;g=0;k=0;m=h<<24>>24;while(1){if((j<<24>>24|0)==(m|0)){h=k;while(1){k=h+1|0;c[t+(h<<2)>>2]=g;g=g+1|0;h=a[n+k>>0]|0;if((h<<24>>24|0)==(m|0))h=k;else break}}else h=j;if((g|0)>=(1<>2]|0;c[p+20>>2]=9;Bd[c[p>>2]&511](q)}if(!(h<<24>>24)){k=1;j=0;break}else{j=h;g=g<<1;m=m+1|0}}}while(1){g=s+k|0;if(!(a[g>>0]|0)){h=-1;g=j}else{c[e+(k<<2)+72>>2]=j-(c[t+(j<<2)>>2]|0);g=(d[g>>0]|0)+j|0;h=c[t+(g+-1<<2)>>2]|0}c[e+(k<<2)>>2]=h;k=k+1|0;if((k|0)==17)break;else j=g}c[e+68>>2]=1048575;sfa(e+144|0,0,1024)|0;p=1;g=0;do{l=s+p|0;if(a[l>>0]|0){m=8-p|0;n=1<>2]<>2]=p;a[e+j+1168>>0]=a[h>>0]|0;k=k+-1|0;if((k|0)<=0)break;else j=j+1|0}g=g+1|0;if((o|0)<(d[l>>0]|0))o=o+1|0;else break}}p=p+1|0}while((p|0)!=9);if((f|0)>0&(r^1))e=0;else{i=u;return}do{if((d[s+e+17>>0]|0)>15){t=c[b>>2]|0;c[t+20>>2]=9;Bd[c[t>>2]&511](q)}e=e+1|0}while((e|0)!=(f|0));i=u;return}function M$(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+48|0;D=G+20|0;F=G;E=c[e+432>>2]|0;g=e+252|0;if((c[g>>2]|0)!=0?(l=E+44|0,(c[l>>2]|0)==0):0){B=E+16|0;C=c[e+428>>2]|0;A=C+20|0;c[A>>2]=(c[A>>2]|0)+((c[B>>2]|0)/8|0);c[B>>2]=0;if(!((Ed[c[C+8>>2]&511](e)|0)<<24>>24)){F=0;i=G;return F|0}h=e+304|0;j=E+20|0;if((c[h>>2]|0)>0){k=j+4|0;m=0;do{c[k+(m<<2)>>2]=0;m=m+1|0}while((m|0)<(c[h>>2]|0))}c[j>>2]=0;c[l>>2]=c[g>>2];if(!(c[e+404>>2]|0))a[E+40>>0]=0}if(!(a[E+40>>0]|0)){c[D+16>>2]=e;y=e+24|0;m=c[y>>2]|0;j=c[m>>2]|0;c[D>>2]=j;h=c[m+4>>2]|0;z=D+4|0;c[z>>2]=h;A=E+12|0;g=c[A>>2]|0;B=E+16|0;k=c[B>>2]|0;C=E+20|0;c[F+0>>2]=c[C+0>>2];c[F+4>>2]=c[C+4>>2];c[F+8>>2]=c[C+8>>2];c[F+12>>2]=c[C+12>>2];c[F+16>>2]=c[C+16>>2];x=e+332|0;do if((c[x>>2]|0)>0){s=E+100|0;t=D+8|0;u=D+12|0;v=E+140|0;w=E+180|0;r=0;a:while(1){o=c[f+(r<<2)>>2]|0;m=c[s+(r<<2)>>2]|0;if((k|0)<8){if(!((C1(D,g,k,0)|0)<<24>>24)){g=0;p=65;break}g=c[t>>2]|0;k=c[u>>2]|0;if((k|0)<8){h=1;p=17}else p=15}else p=15;if((p|0)==15){p=0;j=g>>k+-8&255;h=c[m+(j<<2)+144>>2]|0;if(!h){h=9;p=17}else{k=k-h|0;h=d[m+j+1168>>0]|0}}if((p|0)==17){h=D1(D,g,k,m,h)|0;if((h|0)<0){g=0;p=65;break}k=c[u>>2]|0;g=c[t>>2]|0}q=c[v+(r<<2)>>2]|0;n=c[w+(r<<2)>>2]|0;j=(h|0)!=0;b:do if(!n)if(j){if((k|0)<(h|0)){if(!((C1(D,g,k,h)|0)<<24>>24)){g=0;p=65;break a}k=c[u>>2]|0;g=c[t>>2]|0}k=k-h|0;m=1;p=47}else{m=1;p=47}else{if(j){if((k|0)<(h|0)){if(!((C1(D,g,k,h)|0)<<24>>24)){g=0;p=65;break a}k=c[u>>2]|0;g=c[t>>2]|0}k=k-h|0;l=c[270664+(h<<2)>>2]|0;m=g>>k&l;h=m-((m|0)>(c[270664+(h+-1<<2)>>2]|0)?0:l)|0}else h=0;m=F+(c[e+(r<<2)+336>>2]<<2)+4|0;l=(c[m>>2]|0)+h|0;c[m>>2]=l;b[o>>1]=l;if((n|0)>1){l=1;while(1){if((k|0)<8){if(!((C1(D,g,k,0)|0)<<24>>24)){g=0;p=65;break a}g=c[t>>2]|0;k=c[u>>2]|0;if((k|0)<8){h=1;p=31}else p=29}else p=29;if((p|0)==29){p=0;j=g>>k+-8&255;h=c[q+(j<<2)+144>>2]|0;if(!h){h=9;p=31}else{k=k-h|0;h=d[q+j+1168>>0]|0}}if((p|0)==31){p=0;h=D1(D,g,k,q,h)|0;if((h|0)<0){g=0;p=65;break a}k=c[u>>2]|0;g=c[t>>2]|0}j=h>>4;m=h&15;if(!m){if((j|0)!=15)break b;h=l+15|0}else{h=j+l|0;if((k|0)<(m|0)){if(!((C1(D,g,k,m)|0)<<24>>24)){g=0;p=65;break a}k=c[u>>2]|0;g=c[t>>2]|0}k=k-m|0;l=c[270664+(m<<2)>>2]|0;j=g>>k&l;b[o+(c[276664+(h<<2)>>2]<<1)>>1]=j-((j|0)>(c[270664+(m+-1<<2)>>2]|0)?0:l)}h=h+1|0;if((h|0)<(n|0))l=h;else break}if((h|0)<64){m=h;p=47}}else{m=1;p=47}}while(0);c:do if((p|0)==47)while(1){if((k|0)<8){if(!((C1(D,g,k,0)|0)<<24>>24)){g=0;p=65;break a}g=c[t>>2]|0;k=c[u>>2]|0;if((k|0)<8){h=1;p=52}else p=50}else p=50;if((p|0)==50){p=0;j=g>>k+-8&255;h=c[q+(j<<2)+144>>2]|0;if(!h){h=9;p=52}else{k=k-h|0;h=d[q+j+1168>>0]|0}}if((p|0)==52){h=D1(D,g,k,q,h)|0;if((h|0)<0){g=0;p=65;break a}k=c[u>>2]|0;g=c[t>>2]|0}j=h>>4;h=h&15;if(!h)if((j|0)==15)j=15;else break c;else{if((k|0)<(h|0)){if(!((C1(D,g,k,h)|0)<<24>>24)){g=0;p=65;break a}k=c[u>>2]|0;g=c[t>>2]|0}k=k-h|0}m=m+1+j|0;if((m|0)>=64)break;else p=47}while(0);r=r+1|0;if((r|0)>=(c[x>>2]|0)){p=62;break}}if((p|0)==62){j=c[D>>2]|0;m=c[y>>2]|0;h=c[z>>2]|0;break}else if((p|0)==65){i=G;return g|0}}while(0);c[m>>2]=j;c[m+4>>2]=h;c[A>>2]=g;c[B>>2]=k;c[C+0>>2]=c[F+0>>2];c[C+4>>2]=c[F+4>>2];c[C+8>>2]=c[F+8>>2];c[C+12>>2]=c[F+12>>2];c[C+16>>2]=c[F+16>>2]}F=E+44|0;c[F>>2]=(c[F>>2]|0)+-1;F=1;i=G;return F|0}function N$(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=i;i=i+48|0;E=H+20|0;G=H;F=c[e+432>>2]|0;g=e+252|0;if((c[g>>2]|0)!=0?(l=F+44|0,(c[l>>2]|0)==0):0){C=F+16|0;D=c[e+428>>2]|0;B=D+20|0;c[B>>2]=(c[B>>2]|0)+((c[C>>2]|0)/8|0);c[C>>2]=0;if(!((Ed[c[D+8>>2]&511](e)|0)<<24>>24)){F=0;i=H;return F|0}h=e+304|0;j=F+20|0;if((c[h>>2]|0)>0){k=j+4|0;m=0;do{c[k+(m<<2)>>2]=0;m=m+1|0}while((m|0)<(c[h>>2]|0))}c[j>>2]=0;c[l>>2]=c[g>>2];if(!(c[e+404>>2]|0))a[F+40>>0]=0}if(!(a[F+40>>0]|0)){w=c[e+396>>2]|0;x=c[e+400>>2]|0;c[E+16>>2]=e;z=e+24|0;j=c[z>>2]|0;m=c[j>>2]|0;c[E>>2]=m;h=c[j+4>>2]|0;A=E+4|0;c[A>>2]=h;B=F+12|0;g=c[B>>2]|0;C=F+16|0;k=c[C>>2]|0;D=F+20|0;c[G+0>>2]=c[D+0>>2];c[G+4>>2]=c[D+4>>2];c[G+8>>2]=c[D+8>>2];c[G+12>>2]=c[D+12>>2];c[G+16>>2]=c[D+16>>2];y=e+332|0;do if((c[y>>2]|0)>0){r=F+100|0;s=E+8|0;t=E+12|0;u=F+140|0;v=F+180|0;q=0;a:while(1){n=c[f+(q<<2)>>2]|0;m=c[r+(q<<2)>>2]|0;if((k|0)<8){if(!((C1(E,g,k,0)|0)<<24>>24)){g=0;o=65;break}g=c[s>>2]|0;k=c[t>>2]|0;if((k|0)<8){h=1;o=17}else o=15}else o=15;if((o|0)==15){o=0;j=g>>k+-8&255;h=c[m+(j<<2)+144>>2]|0;if(!h){h=9;o=17}else{k=k-h|0;h=d[m+j+1168>>0]|0}}if((o|0)==17){h=D1(E,g,k,m,h)|0;if((h|0)<0){g=0;o=65;break}k=c[t>>2]|0;g=c[s>>2]|0}p=c[u+(q<<2)>>2]|0;l=c[v+(q<<2)>>2]|0;j=(h|0)!=0;b:do if(!l)if(j){if((k|0)<(h|0)){if(!((C1(E,g,k,h)|0)<<24>>24)){g=0;o=65;break a}k=c[t>>2]|0;g=c[s>>2]|0}k=k-h|0;h=1;o=46}else{h=1;o=46}else{if(j){if((k|0)<(h|0)){if(!((C1(E,g,k,h)|0)<<24>>24)){g=0;o=65;break a}k=c[t>>2]|0;g=c[s>>2]|0}k=k-h|0;m=c[270664+(h<<2)>>2]|0;j=g>>k&m;h=j-((j|0)>(c[270664+(h+-1<<2)>>2]|0)?0:m)|0}else h=0;j=G+(c[e+(q<<2)+336>>2]<<2)+4|0;m=(c[j>>2]|0)+h|0;c[j>>2]=m;b[n>>1]=m;if((l|0)>1){h=1;while(1){if((k|0)<8){if(!((C1(E,g,k,0)|0)<<24>>24)){g=0;o=65;break a}g=c[s>>2]|0;k=c[t>>2]|0;if((k|0)<8){j=1;o=31}else o=29}else o=29;if((o|0)==29){o=0;m=g>>k+-8&255;j=c[p+(m<<2)+144>>2]|0;if(!j){j=9;o=31}else{k=k-j|0;j=d[p+m+1168>>0]|0}}if((o|0)==31){o=0;j=D1(E,g,k,p,j)|0;if((j|0)<0){g=0;o=65;break a}k=c[t>>2]|0;g=c[s>>2]|0}m=j>>4;j=j&15;if(!j){if((m|0)!=15)break b;h=h+15|0}else{h=m+h|0;if((k|0)<(j|0)){if(!((C1(E,g,k,j)|0)<<24>>24)){g=0;o=65;break a}k=c[t>>2]|0;g=c[s>>2]|0}k=k-j|0;m=c[270664+(j<<2)>>2]|0;o=g>>k&m;b[n+(c[w+(h<<2)>>2]<<1)>>1]=o-((o|0)>(c[270664+(j+-1<<2)>>2]|0)?0:m)}h=h+1|0;if((h|0)>=(l|0)){o=46;break}}}else{h=1;o=46}}while(0);c:do if((o|0)==46)if((h|0)<=(x|0)){m=h;do{if((k|0)<8){if(!((C1(E,g,k,0)|0)<<24>>24)){g=0;o=65;break a}g=c[s>>2]|0;k=c[t>>2]|0;if((k|0)<8){h=1;o=52}else o=50}else o=50;if((o|0)==50){o=0;j=g>>k+-8&255;h=c[p+(j<<2)+144>>2]|0;if(!h){h=9;o=52}else{k=k-h|0;h=d[p+j+1168>>0]|0}}if((o|0)==52){h=D1(E,g,k,p,h)|0;if((h|0)<0){g=0;o=65;break a}k=c[t>>2]|0;g=c[s>>2]|0}j=h>>4;h=h&15;if(!h)if((j|0)==15)j=15;else break c;else{if((k|0)<(h|0)){if(!((C1(E,g,k,h)|0)<<24>>24)){g=0;o=65;break a}k=c[t>>2]|0;g=c[s>>2]|0}k=k-h|0}m=m+1+j|0}while((m|0)<=(x|0))}while(0);q=q+1|0;if((q|0)>=(c[y>>2]|0)){o=62;break}}if((o|0)==62){m=c[E>>2]|0;j=c[z>>2]|0;h=c[A>>2]|0;break}else if((o|0)==65){i=H;return g|0}}while(0);c[j>>2]=m;c[j+4>>2]=h;c[B>>2]=g;c[C>>2]=k;c[D+0>>2]=c[G+0>>2];c[D+4>>2]=c[G+4>>2];c[D+8>>2]=c[G+8>>2];c[D+12>>2]=c[G+12>>2];c[D+16>>2]=c[G+16>>2]}F=F+44|0;c[F>>2]=(c[F>>2]|0)+-1;F=1;i=H;return F|0}function O$(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;t=b+412|0;x=c[t>>2]|0;z=x+48|0;do if(!(a[z>>0]|0))if(!(Pd[c[(c[b+416>>2]|0)+12>>2]&511](b,c[x+56+(c[x+64>>2]<<2)>>2]|0)|0))return;else{a[z>>0]=1;y=x+76|0;c[y>>2]=(c[y>>2]|0)+1;break}while(0);y=x+68|0;g=c[y>>2]|0;if((g|0)==1)w=x+52|0;else if(!g){g=x+52|0;h=9}else if((g|0)==2){g=x+52|0;w=x+72|0;Md[c[(c[b+420>>2]|0)+4>>2]&63](b,c[x+56+(c[x+64>>2]<<2)>>2]|0,g,c[w>>2]|0,d,e,f);if((c[g>>2]|0)>>>0<(c[w>>2]|0)>>>0)return;c[y>>2]=0;if((c[e>>2]|0)>>>0>>0)h=9;else return}else return;if((h|0)==9){c[g>>2]=0;p=c[b+292>>2]|0;c[x+72>>2]=p+-1;if((c[x+76>>2]|0)==(c[b+296>>2]|0)?(i=c[t>>2]|0,s=c[b+36>>2]|0,(s|0)>0):0){q=i+72|0;r=i+64|0;i=i+56|0;k=0;m=c[b+196>>2]|0;while(1){w=da(c[m+40>>2]|0,c[m+12>>2]|0)|0;n=(w|0)/(p|0)|0;h=((c[m+48>>2]|0)>>>0)%(w>>>0)|0;h=(h|0)==0?w:h;if(!k)c[q>>2]=((h+-1|0)/(n|0)|0)+1;o=c[(c[i+(c[r>>2]<<2)>>2]|0)+(k<<2)>>2]|0;l=n<<1;if((n|0)>0){n=o+(h+-1<<2)|0;j=0;do{c[o+(j+h<<2)>>2]=c[n>>2];j=j+1|0}while((j|0)<(l|0))}k=k+1|0;if((k|0)==(s|0))break;else m=m+88|0}}c[y>>2]=1;w=g}u=x+64|0;v=x+72|0;Md[c[(c[b+420>>2]|0)+4>>2]&63](b,c[x+56+(c[u>>2]<<2)>>2]|0,w,c[v>>2]|0,d,e,f);if((c[w>>2]|0)>>>0<(c[v>>2]|0)>>>0)return;if((c[x+76>>2]|0)==1){h=c[t>>2]|0;g=c[b+292>>2]|0;s=c[b+36>>2]|0;if((s|0)>0){t=h+56|0;o=h+60|0;p=g+1|0;q=g+2|0;r=0;m=c[b+196>>2]|0;while(1){h=(da(c[m+40>>2]|0,c[m+12>>2]|0)|0)/(g|0)|0;i=c[(c[t>>2]|0)+(r<<2)>>2]|0;j=c[(c[o>>2]|0)+(r<<2)>>2]|0;if((h|0)>0){k=da(h,p)|0;l=da(h,q)|0;n=0;do{d=n+k|0;b=n-h|0;c[i+(b<<2)>>2]=c[i+(d<<2)>>2];c[j+(b<<2)>>2]=c[j+(d<<2)>>2];b=n+l|0;c[i+(b<<2)>>2]=c[i+(n<<2)>>2];c[j+(b<<2)>>2]=c[j+(n<<2)>>2];n=n+1|0}while((n|0)!=(h|0))}r=r+1|0;if((r|0)==(s|0))break;else m=m+88|0}}}else g=c[b+292>>2]|0;c[u>>2]=c[u>>2]^1;a[z>>0]=0;c[w>>2]=g+1;c[v>>2]=g+2;c[y>>2]=2;return}function P$(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;i=c[b+412>>2]|0;j=i+48|0;do if(!(a[j>>0]|0)){g=i+8|0;if(!(Pd[c[(c[b+416>>2]|0)+12>>2]&511](b,g)|0))return;else{a[j>>0]=1;h=g;break}}else h=i+8|0;while(0);k=c[b+292>>2]|0;g=i+52|0;Md[c[(c[b+420>>2]|0)+4>>2]&63](b,h,g,k,d,e,f);if((c[g>>2]|0)>>>0>>0)return;a[j>>0]=0;c[g>>2]=0;return}function Q$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;Md[c[(c[a+420>>2]|0)+4>>2]&63](a,0,0,0,b,d,e);return}function R$(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=c[b+24>>2]|0;i=c[q>>2]|0;r=q+4|0;h=c[r>>2]|0;a[b+200>>0]=e;a[b+201>>0]=f;a[b+202>>0]=g;do if(!h)if(!((Ed[c[q+12>>2]&511](b)|0)<<24>>24)){r=0;return r|0}else{h=c[r>>2]|0;i=c[q>>2]|0;break}while(0);h=h+-1|0;g=i+1|0;i=d[i>>0]<<8;do if(!h)if(!((Ed[c[q+12>>2]&511](b)|0)<<24>>24)){r=0;return r|0}else{h=c[r>>2]|0;g=c[q>>2]|0;break}while(0);h=h+-1|0;e=g+1|0;l=d[g>>0]|i;do if(!h)if(!((Ed[c[q+12>>2]&511](b)|0)<<24>>24)){r=0;return r|0}else{h=c[r>>2]|0;e=c[q>>2]|0;break}while(0);h=h+-1|0;i=e+1|0;c[b+192>>2]=d[e>>0];do if(!h)if(!((Ed[c[q+12>>2]&511](b)|0)<<24>>24)){r=0;return r|0}else{h=c[r>>2]|0;i=c[q>>2]|0;break}while(0);e=h+-1|0;g=i+1|0;h=d[i>>0]<<8;k=b+32|0;c[k>>2]=h;do if(!e)if(!((Ed[c[q+12>>2]&511](b)|0)<<24>>24)){r=0;return r|0}else{h=c[k>>2]|0;e=c[r>>2]|0;g=c[q>>2]|0;break}while(0);e=e+-1|0;i=g+1|0;c[k>>2]=h+(d[g>>0]|0);do if(!e)if(!((Ed[c[q+12>>2]&511](b)|0)<<24>>24)){r=0;return r|0}else{h=c[r>>2]|0;e=c[q>>2]|0;break}else{h=e;e=i}while(0);i=h+-1|0;g=e+1|0;h=d[e>>0]<<8;j=b+28|0;c[j>>2]=h;do if(!i)if(!((Ed[c[q+12>>2]&511](b)|0)<<24>>24)){r=0;return r|0}else{h=c[j>>2]|0;e=c[r>>2]|0;g=c[q>>2]|0;break}else e=i;while(0);e=e+-1|0;i=g+1|0;c[j>>2]=h+(d[g>>0]|0);do if(!e)if(!((Ed[c[q+12>>2]&511](b)|0)<<24>>24)){r=0;return r|0}else{e=c[r>>2]|0;f=c[q>>2]|0;break}else f=i;while(0);o=b+36|0;c[o>>2]=d[f>>0];i=l+-8|0;p=c[b>>2]|0;c[p+24>>2]=c[b+404>>2];c[p+28>>2]=c[j>>2];c[p+32>>2]=c[k>>2];c[p+36>>2]=c[o>>2];c[p+20>>2]=102;Cd[c[p+4>>2]&255](b,1);p=b+428|0;if(a[(c[p>>2]|0)+13>>0]|0){n=c[b>>2]|0;c[n+20>>2]=61;Bd[c[n>>2]&511](b)}if(((c[k>>2]|0)!=0?(c[j>>2]|0)!=0:0)?(m=c[o>>2]|0,(m|0)>=1):0)h=m;else{h=c[b>>2]|0;c[h+20>>2]=33;Bd[c[h>>2]&511](b);h=c[o>>2]|0}if((i|0)!=(h*3|0)){n=c[b>>2]|0;c[n+20>>2]=12;Bd[c[n>>2]&511](b)}n=b+196|0;if(!(c[n>>2]|0))c[n>>2]=Hd[c[c[b+4>>2]>>2]&255](b,1,(c[o>>2]|0)*88|0)|0;g=e+-1|0;h=f+1|0;a:do if((c[o>>2]|0)>0){m=q+12|0;l=0;while(1){if(!g){if(!((Ed[c[m>>2]&511](b)|0)<<24>>24)){h=0;i=54;break}g=c[r>>2]|0;h=c[q>>2]|0}k=g+-1|0;e=h+1|0;i=d[h>>0]|0;j=c[n>>2]|0;b:do if((l|0)>0){h=j;g=0;while(1){if((i|0)==(c[h>>2]|0))break;g=g+1|0;h=h+88|0;if((g|0)>=(l|0)){j=h;break b}}i=c[j>>2]|0;h=j+88|0;if((l|0)>1){g=h;f=1;while(1){h=c[j+88>>2]|0;i=(h|0)>(i|0)?h:i;f=f+1|0;h=j+176|0;if((f|0)==(l|0))break;else{j=g;g=h}}}i=i+1|0;j=h}while(0);c[j>>2]=i;c[j+4>>2]=l;if(!k){if(!((Ed[c[m>>2]&511](b)|0)<<24>>24)){h=0;i=54;break}h=c[r>>2]|0;e=c[q>>2]|0}else h=k;h=h+-1|0;i=e+1|0;k=d[e>>0]|0;g=j+8|0;c[g>>2]=k>>>4;f=j+12|0;c[f>>2]=k&15;if(!h){if(!((Ed[c[m>>2]&511](b)|0)<<24>>24)){h=0;i=54;break}h=c[r>>2]|0;e=c[q>>2]|0}else e=i;i=j+16|0;c[i>>2]=d[e>>0];k=c[b>>2]|0;c[k+24>>2]=c[j>>2];c[k+28>>2]=c[g>>2];c[k+32>>2]=c[f>>2];c[k+36>>2]=c[i>>2];c[k+20>>2]=103;Cd[c[k+4>>2]&255](b,1);l=l+1|0;g=h+-1|0;h=e+1|0;if((l|0)>=(c[o>>2]|0))break a}if((i|0)==54)return h|0}while(0);a[(c[p>>2]|0)+13>>0]=1;c[q>>2]=h;c[r>>2]=g;r=1;return r|0}function S$(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=h+g|0;if(((((g>>>0>13?(a[f>>0]|0)==74:0)?(a[f+1>>0]|0)==70:0)?(a[f+2>>0]|0)==73:0)?(a[f+3>>0]|0)==70:0)?(a[f+4>>0]|0)==0:0){a[e+256>>0]=1;i=a[f+5>>0]|0;k=e+257|0;a[k>>0]=i;l=a[f+6>>0]|0;m=e+258|0;a[m>>0]=l;h=a[f+7>>0]|0;p=e+259|0;a[p>>0]=h;g=(d[f+8>>0]<<8|d[f+9>>0])&65535;n=e+260|0;b[n>>1]=g;j=(d[f+10>>0]<<8|d[f+11>>0])&65535;o=e+262|0;b[o>>1]=j;if((i+-1&255)<2)q=e;else{q=c[e>>2]|0;c[q+20>>2]=122;c[q+24>>2]=i&255;c[q+28>>2]=l&255;Cd[c[q+4>>2]&255](e,-1);q=e;i=a[k>>0]|0;l=a[m>>0]|0;g=b[n>>1]|0;j=b[o>>1]|0;h=a[p>>0]|0}p=c[e>>2]|0;c[p+24>>2]=i&255;c[p+28>>2]=l&255;c[p+32>>2]=g&65535;c[p+36>>2]=j&65535;c[p+40>>2]=h&255;c[p+20>>2]=89;Cd[c[p+4>>2]&255](q,1);h=f+12|0;i=a[h>>0]|0;j=f+13|0;g=a[j>>0]|0;if((g|i)<<24>>24){i=c[e>>2]|0;c[i+20>>2]=92;c[i+24>>2]=d[h>>0];c[i+28>>2]=d[j>>0];Cd[c[i+4>>2]&255](q,1);i=a[h>>0]|0;g=a[j>>0]|0}h=r+-14|0;if((h|0)==(da((i&255)*3|0,g&255)|0))return;e=c[e>>2]|0;c[e+20>>2]=90;c[e+24>>2]=h;Cd[c[e+4>>2]&255](q,1);return}if(((((g>>>0>5?(a[f>>0]|0)==74:0)?(a[f+1>>0]|0)==70:0)?(a[f+2>>0]|0)==88:0)?(a[f+3>>0]|0)==88:0)?(a[f+4>>0]|0)==0:0){h=f+5|0;g=d[h>>0]|0;if((g|0)==16){q=c[e>>2]|0;c[q+20>>2]=110;c[q+24>>2]=r;Cd[c[q+4>>2]&255](e,1);return}else if((g|0)==17){q=c[e>>2]|0;c[q+20>>2]=111;c[q+24>>2]=r;Cd[c[q+4>>2]&255](e,1);return}else if((g|0)==19){q=c[e>>2]|0;c[q+20>>2]=112;c[q+24>>2]=r;Cd[c[q+4>>2]&255](e,1);return}else{q=c[e>>2]|0;c[q+20>>2]=91;c[q+24>>2]=d[h>>0];c[q+28>>2]=r;Cd[c[q+4>>2]&255](e,1);return}}q=c[e>>2]|0;c[q+20>>2]=79;c[q+24>>2]=r;Cd[c[q+4>>2]&255](e,1);return}function T$(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j;n=c[a+420>>2]|0;l=h-(c[g>>2]|0)|0;m=c[n+16>>2]|0;c[k>>2]=0;h=n+12|0;Md[c[(c[a+440>>2]|0)+4>>2]&63](a,b,d,e,c[h>>2]|0,k,l>>>0>m>>>0?m:l);Yd[c[(c[a+448>>2]|0)+4>>2]&63](a,c[h>>2]|0,f+(c[g>>2]<<2)|0,c[k>>2]|0);c[g>>2]=(c[g>>2]|0)+(c[k>>2]|0);i=j;return}function U$(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;j=c[a+420>>2]|0;k=j+24|0;h=c[k>>2]|0;if(!h){i=j+16|0;f=Qd[c[(c[a+4>>2]|0)+28>>2]&127](a,c[j+8>>2]|0,c[j+20>>2]|0,c[i>>2]|0,1)|0;c[j+12>>2]=f;h=c[k>>2]|0}else{i=j+16|0;f=c[j+12>>2]|0}Md[c[(c[a+440>>2]|0)+4>>2]&63](a,b,d,e,f,k,c[i>>2]|0);f=c[k>>2]|0;if(f>>>0>h>>>0){f=f-h|0;Yd[c[(c[a+448>>2]|0)+4>>2]&63](a,(c[j+12>>2]|0)+(h<<2)|0,0,f);c[g>>2]=(c[g>>2]|0)+f;f=c[k>>2]|0}h=c[i>>2]|0;if(f>>>0>>0)return;g=j+20|0;c[g>>2]=(c[g>>2]|0)+h;c[k>>2]=0;return}function V$(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;e=c[a+420>>2]|0;k=e+24|0;d=c[k>>2]|0;if(!d){j=e+20|0;b=e+16|0;l=Qd[c[(c[a+4>>2]|0)+28>>2]&127](a,c[e+8>>2]|0,c[j>>2]|0,c[b>>2]|0,0)|0;c[e+12>>2]=l;i=j;d=c[k>>2]|0;e=l}else{j=e+20|0;i=j;b=e+16|0;e=c[e+12>>2]|0}l=(c[b>>2]|0)-d|0;m=c[g>>2]|0;h=h-m|0;l=l>>>0>h>>>0?h:l;h=(c[a+96>>2]|0)-(c[i>>2]|0)|0;l=l>>>0>h>>>0?h:l;Yd[c[(c[a+448>>2]|0)+4>>2]&63](a,e+(d<<2)|0,f+(m<<2)|0,l);c[g>>2]=(c[g>>2]|0)+l;l=(c[k>>2]|0)+l|0;c[k>>2]=l;d=c[b>>2]|0;if(l>>>0>>0)return;c[j>>2]=(c[i>>2]|0)+d;c[k>>2]=0;return}function W$(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=c[(c[b+448>>2]|0)+24>>2]|0;l=c[n>>2]|0;m=c[n+4>>2]|0;n=c[n+8>>2]|0;b=c[b+92>>2]|0;if((g|0)<=0)return;if(!b){b=0;do b=b+1|0;while((b|0)!=(g|0));return}else k=0;do{h=b;i=c[e+(k<<2)>>2]|0;j=c[f+(k<<2)>>2]|0;while(1){a[j>>0]=(d[m+(d[i+1>>0]|0)>>0]|0)+(d[l+(d[i>>0]|0)>>0]|0)+(d[n+(d[i+2>>0]|0)>>0]|0);h=h+-1|0;if(!h)break;else{i=i+3|0;j=j+1|0}}k=k+1|0}while((k|0)!=(g|0));return}function X$(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=c[(c[b+448>>2]|0)+24>>2]|0;r=c[b+92>>2]|0;l=c[b+100>>2]|0;if((g|0)<=0)return;m=(r|0)==0;k=(l|0)>0;p=0;do{if(!m){n=r;j=c[e+(p<<2)>>2]|0;o=c[f+(p<<2)>>2]|0;while(1){if(k){h=0;b=0;i=j;while(1){b=(d[(c[q+(h<<2)>>2]|0)+(d[i>>0]|0)>>0]|0)+b|0;h=h+1|0;if((h|0)==(l|0))break;else i=i+1|0}h=b&255;b=j+l|0}else{h=0;b=j}a[o>>0]=h;n=n+-1|0;if(!n)break;else{j=b;o=o+1|0}}}p=p+1|0}while((p|0)!=(g|0));return}function Y$(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=c[b+448>>2]|0;x=c[h+24>>2]|0;v=c[x>>2]|0;w=c[x+4>>2]|0;x=c[x+8>>2]|0;t=c[b+92>>2]|0;if((g|0)<=0)return;u=h+48|0;b=h+52|0;h=b+4|0;i=b+8|0;j=(t|0)==0;n=c[u>>2]|0;s=0;do{k=c[b>>2]|0;l=c[h>>2]|0;m=c[i>>2]|0;if(!j){o=t;p=0;q=c[e+(s<<2)>>2]|0;r=c[f+(s<<2)>>2]|0;while(1){a[r>>0]=(d[w+((d[q+1>>0]|0)+(c[l+(n<<6)+(p<<2)>>2]|0))>>0]|0)+(d[v+((d[q>>0]|0)+(c[k+(n<<6)+(p<<2)>>2]|0))>>0]|0)+(d[x+((d[q+2>>0]|0)+(c[m+(n<<6)+(p<<2)>>2]|0))>>0]|0);o=o+-1|0;if(!o)break;else{p=p+1&15;q=q+3|0;r=r+1|0}}}n=n+1&15;c[u>>2]=n;s=s+1|0}while((s|0)!=(g|0));return}function Z$(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=c[b+448>>2]|0;x=c[b+100>>2]|0;t=c[b+92>>2]|0;if((g|0)<=0)return;u=h+48|0;v=(x|0)>0;w=h+24|0;b=h+52|0;h=(t|0)==0;s=0;do{i=f+(s<<2)|0;sfa(c[i>>2]|0,0,t|0)|0;j=c[u>>2]|0;if(v){k=e+(s<<2)|0;n=0;do{l=c[(c[w>>2]|0)+(n<<2)>>2]|0;m=c[b+(n<<2)>>2]|0;if(!h){o=t;p=0;q=(c[k>>2]|0)+n|0;r=c[i>>2]|0;while(1){a[r>>0]=(d[r>>0]|0)+(d[l+((d[q>>0]|0)+(c[m+(j<<6)+(p<<2)>>2]|0))>>0]|0);o=o+-1|0;if(!o)break;else{p=p+1&15;q=q+x|0;r=r+1|0}}}n=n+1|0}while((n|0)!=(x|0))}c[u>>2]=j+1&15;s=s+1|0}while((s|0)!=(g|0));return}function _$(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;i=c[e+448>>2]|0;K=c[e+100>>2]|0;L=c[e+92>>2]|0;I=c[e+300>>2]|0;if((h|0)<=0)return;J=(K|0)>0;F=i+84|0;G=i+68|0;H=i+24|0;v=i+16|0;w=(L|0)==0;x=L+-1|0;y=da(x,K)|0;z=0-K|0;A=L+1|0;E=0;do{B=g+(E<<2)|0;sfa(c[B>>2]|0,0,L|0)|0;if(J){C=f+(E<<2)|0;D=0;do{i=c[B>>2]|0;if(!(a[F>>0]|0)){j=D;s=1;t=K;e=c[G+(D<<2)>>2]|0;k=i}else{j=D+y|0;s=-1;t=z;e=(c[G+(D<<2)>>2]|0)+(A<<1)|0;k=i+x|0}n=c[(c[H>>2]|0)+(D<<2)>>2]|0;o=c[(c[v>>2]|0)+(D<<2)>>2]|0;if(w)i=0;else{u=da(L,s)|0;p=0;i=0;q=L;l=0;r=e;m=(c[C>>2]|0)+j|0;while(1){M=r;r=r+(s<<1)|0;l=d[I+((l+8+(b[r>>1]|0)>>4)+(d[m>>0]|0))>>0]|0;j=d[n+l>>0]|0;a[k>>0]=(d[k>>0]|0)+j;j=l-(d[o+j>>0]|0)|0;b[M>>1]=(j*3|0)+i;i=(j*5|0)+p|0;q=q+-1|0;if(!q)break;else{p=j;l=j*7|0;m=m+t|0;k=k+s|0}}i=i&65535;e=e+(u<<1)|0}b[e>>1]=i;D=D+1|0}while((D|0)!=(K|0))}a[F>>0]=(a[F>>0]|0)==0&1;E=E+1|0}while((E|0)!=(h|0));return}function $$(a,e,f,g){a=a|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;j=c[(c[a+448>>2]|0)+24>>2]|0;f=c[a+92>>2]|0;if((g|0)<=0)return;if(!f){f=0;do f=f+1|0;while((f|0)!=(g|0));return}else i=0;do{a=f;h=c[e+(i<<2)>>2]|0;while(1){k=(c[j+((d[h>>0]|0)>>>3<<2)>>2]|0)+((d[h+1>>0]|0)>>>2<<6)+((d[h+2>>0]|0)>>>3<<1)|0;m=b[k>>1]|0;l=m+1<<16>>16;b[k>>1]=l<<16>>16==0?m:l;a=a+-1|0;if(!a)break;else h=h+3|0}i=i+1|0}while((i|0)!=(g|0));return}function a0(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;A=d+448|0;D=c[A>>2]|0;C=d+116|0;c[C>>2]=c[D+16>>2];t=c[D+20>>2]|0;B=Hd[c[c[d+4>>2]>>2]&255](d,1,t<<5)|0;c[B>>2]=0;c[B+4>>2]=31;c[B+8>>2]=0;c[B+12>>2]=63;c[B+16>>2]=0;c[B+20>>2]=31;E1(c[(c[A>>2]|0)+24>>2]|0,B);if((t|0)>1){e=1;do{if((e<<1|0)>(t|0)){i=B;j=0;k=0;g=0;while(1){h=c[i+24>>2]|0;f=(h|0)>(k|0);g=f?i:g;j=j+1|0;if((j|0)==(e|0))break;else{i=i+32|0;k=f?h:k}}}else{i=B;j=0;h=0;g=0;while(1){f=c[i+28>>2]|0;if((f|0)>(h|0)){z=(c[i+24>>2]|0)>0;f=z?f:h;g=z?i:g}else f=h;j=j+1|0;if((j|0)==(e|0))break;else{i=i+32|0;h=f}}}if(!g)break;h=B+(e<<5)|0;f=g+4|0;c[B+(e<<5)+4>>2]=c[f>>2];j=g+12|0;c[B+(e<<5)+12>>2]=c[j>>2];i=g+20|0;c[B+(e<<5)+20>>2]=c[i>>2];c[h>>2]=c[g>>2];p=g+8|0;k=B+(e<<5)+8|0;c[k>>2]=c[p>>2];r=g+16|0;l=B+(e<<5)+16|0;c[l>>2]=c[r>>2];m=c[f>>2]|0;n=c[g>>2]|0;y=m-n<<4;o=c[j>>2]|0;p=c[p>>2]|0;z=(o-p|0)*12|0;q=c[i>>2]|0;r=c[r>>2]|0;s=(y|0)>(z|0);s=(q-r<<3|0)>((s?y:z)|0)?2:s&1^1;if((s|0)==2){z=(r+q|0)/2|0;c[i>>2]=z;c[l>>2]=z+1}else if((s|0)==1){z=(p+o|0)/2|0;c[j>>2]=z;c[k>>2]=z+1}else if(!s){z=(n+m|0)/2|0;c[f>>2]=z;c[h>>2]=z+1}E1(c[(c[A>>2]|0)+24>>2]|0,g);E1(c[(c[A>>2]|0)+24>>2]|0,h);e=e+1|0}while((e|0)<(t|0));if((e|0)<=0){A=e;C=d+112|0;c[C>>2]=A;C=c[d>>2]|0;B=C+20|0;c[B>>2]=98;B=C+24|0;c[B>>2]=A;C=C+4|0;C=c[C>>2]|0;Cd[C&255](d,1);d=D+28|0;a[d>>0]=1;return}}else e=1;z=0;do{r=c[(c[A>>2]|0)+24>>2]|0;h=c[B+(z<<5)>>2]|0;s=c[B+(z<<5)+4>>2]|0;t=c[B+(z<<5)+8>>2]|0;u=c[B+(z<<5)+12>>2]|0;v=c[B+(z<<5)+16>>2]|0;w=c[B+(z<<5)+20>>2]|0;if((h|0)>(s|0)){i=0;h=0;g=0;f=0}else{x=(t|0)>(u|0);y=(v|0)>(w|0);q=h;i=0;h=0;g=0;f=0;while(1){if(!x){o=c[r+(q<<2)>>2]|0;p=q<<3|4;n=t;while(1){if(!y){k=n<<2|2;j=v;m=o+(n<<6)+(v<<1)|0;while(1){E=b[m>>1]|0;l=E&65535;if(E<<16>>16){i=(da(l,p)|0)+i|0;h=(da(l,k)|0)+h|0;g=(da(l,j<<3|4)|0)+g|0;f=l+f|0}if((j|0)<(w|0)){j=j+1|0;m=m+2|0}else break}}if((n|0)<(u|0))n=n+1|0;else break}}if((q|0)<(s|0))q=q+1|0;else break}}y=f>>1;a[(c[c[C>>2]>>2]|0)+z>>0]=(y+i|0)/(f|0)|0;a[(c[(c[C>>2]|0)+4>>2]|0)+z>>0]=(y+h|0)/(f|0)|0;a[(c[(c[C>>2]|0)+8>>2]|0)+z>>0]=(y+g|0)/(f|0)|0;z=z+1|0}while((z|0)!=(e|0));C=d+112|0;c[C>>2]=e;C=c[d>>2]|0;B=C+20|0;c[B>>2]=98;B=C+24|0;c[B>>2]=e;C=C+4|0;C=c[C>>2]|0;Cd[C&255](d,1);d=D+28|0;a[d>>0]=1;return}function b0(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;i=c[e+448>>2]|0;R=c[i+24>>2]|0;S=c[e+92>>2]|0;T=c[e+300>>2]|0;U=c[i+40>>2]|0;P=c[e+116>>2]|0;N=c[P>>2]|0;O=c[P+4>>2]|0;P=c[P+8>>2]|0;if((h|0)<=0)return;Q=i+36|0;H=i+32|0;I=(S|0)==0;J=S+-1|0;K=J*3|0;L=(S*3|0)+3|0;M=0;do{j=c[f+(M<<2)>>2]|0;k=c[g+(M<<2)>>2]|0;if(!(a[Q>>0]|0)){E=1;F=3;i=c[H>>2]|0;l=1}else{E=-1;F=-3;i=(c[H>>2]|0)+(L<<1)|0;j=j+K|0;k=k+J|0;l=0}a[Q>>0]=l;if(I){m=0;l=0;j=0}else{x=F+1|0;y=F+2|0;G=da(S,F)|0;z=0;A=0;B=0;l=0;w=0;n=0;C=S;m=0;o=0;p=0;D=i;while(1){v=D;D=D+(F<<1)|0;s=d[T+((d[j>>0]|0)+(c[U+(m+8+(b[D>>1]|0)>>4<<2)>>2]|0))>>0]|0;t=d[T+((d[j+1>>0]|0)+(c[U+(o+8+(b[v+(x<<1)>>1]|0)>>4<<2)>>2]|0))>>0]|0;u=d[T+((d[j+2>>0]|0)+(c[U+(p+8+(b[v+(y<<1)>>1]|0)>>4<<2)>>2]|0))>>0]|0;p=u>>>3;q=t>>>2;o=s>>>3;r=(c[R+(o<<2)>>2]|0)+(q<<6)+(p<<1)|0;m=b[r>>1]|0;if(!(m<<16>>16)){F1(e,o,q,p);m=b[r>>1]|0}q=(m&65535)+-1|0;a[k>>0]=q;o=s-(d[N+q>>0]|0)|0;p=t-(d[O+q>>0]|0)|0;q=u-(d[P+q>>0]|0)|0;b[v>>1]=(o*3|0)+l;l=(o*5|0)+z|0;b[v+2>>1]=(p*3|0)+w;m=(p*5|0)+A|0;b[v+4>>1]=(q*3|0)+n;n=(q*5|0)+B|0;C=C+-1|0;if(!C){j=m;k=n;break}else{z=o;A=p;B=q;w=m;m=o*7|0;o=p*7|0;p=q*7|0;j=j+F|0;k=k+E|0}}m=l&65535;l=j&65535;j=k&65535;i=i+(G<<1)|0}b[i>>1]=m;b[i+2>>1]=l;b[i+4>>1]=j;M=M+1|0}while((M|0)!=(h|0));return}function c0(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;n=c[(c[e+448>>2]|0)+24>>2]|0;o=c[e+92>>2]|0;if((h|0)<=0)return;p=(o|0)==0;t=0;do{if(!p){q=o;r=c[f+(t<<2)>>2]|0;s=c[g+(t<<2)>>2]|0;while(1){j=(d[r>>0]|0)>>>3;k=(d[r+1>>0]|0)>>>2;l=(d[r+2>>0]|0)>>>3;m=(c[n+(j<<2)>>2]|0)+(k<<6)+(l<<1)|0;i=b[m>>1]|0;if(!(i<<16>>16)){F1(e,j,k,l);i=b[m>>1]|0}a[s>>0]=(i&65535)+255;q=q+-1|0;if(!q)break;else{r=r+3|0;s=s+1|0}}}t=t+1|0}while((t|0)!=(h|0));return}function d0(a){a=a|0;return}function e0(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=c[b+4>>2]|0;if(!f){n=b+4|0;c[d>>2]=n;return n|0}h=a[e>>0]|0;l=(h&255)>>>1;m=e+1|0;k=c[e+8>>2]|0;j=c[e+4>>2]|0;a:do if(!(h&1))while(1){i=f+16|0;e=a[i>>0]|0;g=(e&1)==0;if(g){h=(e&255)>>>1;b=i+1|0}else{h=c[f+20>>2]|0;b=c[f+24>>2]|0}b=ffa(m,b,h>>>0>>0?h:l)|0;if(!b){if(l>>>0>>0)n=16}else if((b|0)<0)n=16;if((n|0)==16){n=0;b=c[f>>2]|0;if(!b){b=f;n=24;break}else{f=b;continue}}if(g){e=(e&255)>>>1;b=i+1|0}else{e=c[f+20>>2]|0;b=c[f+24>>2]|0}b=ffa(b,m,l>>>0>>0?l:e)|0;if(!b){if(e>>>0>=l>>>0){n=33;break a}}else if((b|0)>=0){n=33;break a}b=f+4|0;e=c[b>>2]|0;if(!e){n=32;break}else f=e}else while(1){i=f+16|0;g=a[i>>0]|0;e=(g&1)==0;if(e){h=(g&255)>>>1;b=i+1|0}else{h=c[f+20>>2]|0;b=c[f+24>>2]|0}b=ffa(k,b,h>>>0>>0?h:j)|0;if(!b){if(j>>>0>>0)n=23}else if((b|0)<0)n=23;if((n|0)==23){n=0;b=c[f>>2]|0;if(!b){b=f;n=24;break}else{f=b;continue}}if(e){e=(g&255)>>>1;b=i+1|0}else{e=c[f+20>>2]|0;b=c[f+24>>2]|0}b=ffa(b,k,j>>>0>>0?j:e)|0;if(!b){if(e>>>0>=j>>>0){n=33;break a}}else if((b|0)>=0){n=33;break a}b=f+4|0;e=c[b>>2]|0;if(!e){n=32;break}else f=e}while(0);if((n|0)==24){c[d>>2]=f;n=b;return n|0}else if((n|0)==32){c[d>>2]=f;n=b;return n|0}else if((n|0)==33){c[d>>2]=f;n=d;return n|0}return 0}function f0(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=c[b+4>>2]|0;if(!f){p=b+4|0;c[d>>2]=p;return p|0}n=a[e>>0]|0;m=(n&1)==0;n=(n&255)>>>1;o=e+1|0;l=c[e+8>>2]|0;k=c[e+4>>2]|0;while(1){i=f+16|0;g=m?n:k;e=a[i>>0]|0;j=(e&1)==0;if(j)h=(e&255)>>>1;else h=c[f+20>>2]|0;if(j)b=i+1|0;else b=c[f+24>>2]|0;b=ffa(m?o:l,b,h>>>0>>0?h:g)|0;if(!b){if(g>>>0>>0)p=12}else if((b|0)<0)p=12;if((p|0)==12){p=0;b=c[f>>2]|0;if(!b){b=f;p=13;break}else{f=b;continue}}if(j)g=(e&255)>>>1;else g=c[f+20>>2]|0;e=m?n:k;if(j)b=i+1|0;else b=c[f+24>>2]|0;b=ffa(b,m?o:l,e>>>0>>0?e:g)|0;if(!b){if(g>>>0>=e>>>0){p=25;break}}else if((b|0)>=0){p=25;break}b=f+4|0;e=c[b>>2]|0;if(!e){p=24;break}else f=e}if((p|0)==13){c[d>>2]=f;p=b;return p|0}else if((p|0)==24){c[d>>2]=f;p=b;return p|0}else if((p|0)==25){c[d>>2]=f;p=d;return p|0}return 0}function g0(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=i;i=i+16|0;v=z;u=z+7|0;r=z+4|0;s=z+5|0;t=z+6|0;c[v>>2]=0;a[u>>0]=0;x=(g|0)>-1?g:0-g|0;g=da(x,f)|0;y=qea(g)|0;if(!y){z=gc(4)|0;c[z>>2]=1;qd(z|0,366960,0)}sfa(y|0,0,g|0)|0;p=y+g|0;q=p;g=0;l=y;o=0;a:while(1){m=(o|0)<(x|0);b:while(1){if(!m){w=11;break a}while(1){if(!(l>>>0>=y>>>0&l>>>0

>>0)){w=11;break a}if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](v,1,1,e)|0)!=1){w=19;break a}j=c[v>>2]|0;k=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;if(j){w=20;break}if((Xd[k&255](v,1,1,e)|0)!=1){w=25;break a}j=c[v>>2]|0;if(!j){w=26;break b}else if((j|0)==1)l=p;else if((j|0)==2){w=27;break b}else break}if((w|0)==20){w=0;n=q-l|0;c[v>>2]=j>>>0>>0?j:n;if((Xd[k&255](u,1,1,e)|0)!=1){w=22;break a}j=c[v>>2]|0;if((j|0)>0){k=0;j=l;while(1){n=d[u>>0]|0;l=j+1|0;a[j>>0]=((k&1|0)!=0?n:n>>>4)&15;k=k+1|0;j=c[v>>2]|0;if((k|0)>=(j|0))break;else j=l}}g=j+g|0;continue}n=q-l|0;j=j>>>0>>0?j:n;c[v>>2]=j;if((j|0)>0){n=0;k=l;while(1){j=n&1;if((j|0)==0?(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,e)|0)!=1:0){w=36;break a}A=d[u>>0]|0;l=k+1|0;a[k>>0]=((j|0)!=0?A:A>>>4)&15;n=n+1|0;j=c[v>>2]|0;if((n|0)>=(j|0))break;else k=l}}g=j+g|0;if(((j&3)+-1|0)>>>0>=2)continue;a[t>>0]=0;if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](t,1,1,e)|0)!=1){w=40;break a}}if((w|0)==26){w=0;j=o+1|0;l=da(j,f)|0;g=0}else if((w|0)==27){w=0;A=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[r>>0]=0;a[s>>0]=0;if((Xd[A&255](r,1,1,e)|0)!=1){w=28;break}if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](s,1,1,e)|0)!=1){w=30;break}g=(d[r>>0]|0)+g|0;j=(d[s>>0]|0)+o|0;l=(da(j,f)|0)+g|0}l=y+l|0;o=j}if((w|0)==11){if((x|0)<=0){rea(y);i=z;return 1}if((f|0)>0)n=0;else{g=0;do{qJ(h,g)|0;g=g+1|0}while((g|0)<(x|0));rea(y);i=z;return 1}do{k=da(n,f)|0;l=qJ(h,n)|0;m=0;g=1;while(1){g=(g|0)!=0;j=a[y+(m+k)>>0]|0;if(g)a[l+(m>>1)>>0]=(j&255)<<4;else{A=l+(m>>1)|0;a[A>>0]=a[A>>0]|j}m=m+1|0;if((m|0)==(f|0))break;else g=g&1^1}n=n+1|0}while((n|0)<(x|0));rea(y);i=z;return 1}else if((w|0)==19){A=gc(4)|0;c[A>>2]=1;qd(A|0,366960,0)}else if((w|0)==22){A=gc(4)|0;c[A>>2]=1;qd(A|0,366960,0)}else if((w|0)==25){A=gc(4)|0;c[A>>2]=1;qd(A|0,366960,0)}else if((w|0)==28){A=gc(4)|0;c[A>>2]=1;qd(A|0,366960,0)}else if((w|0)==30){A=gc(4)|0;c[A>>2]=1;qd(A|0,366960,0)}else if((w|0)==36){A=gc(4)|0;c[A>>2]=1;qd(A|0,366960,0)}else if((w|0)==40){A=gc(4)|0;c[A>>2]=1;qd(A|0,366960,0)}return 0}function h0(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;u=v+3|0;t=v;r=v+1|0;s=v+2|0;a[u>>0]=0;a[t>>0]=0;if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,c)|0)!=1){e=0;i=v;return e|0}p=(f|0)>-1?f:0-f|0;q=~e;f=0;o=0;a:while(1){n=(o|0)<(p|0);while(1){l=a[u>>0]|0;j=l&255;if(l<<24>>24){if(!n){f=1;j=25;break a}h=e-f|0;m=qJ(g,o)|0;if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](t,1,1,c)|0)!=1){f=0;j=25;break a}if((((j|0)<(h|0)?j:h)|0)>0){h=f+q|0;l=~j;l=(h|0)>(l|0)?h:l;h=~l;j=f;k=0;while(1){a[m+j>>0]=a[t>>0]|0;k=k+1|0;if((k|0)==(h|0))break;else j=j+1|0}f=f+-1-l|0}}else{if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,c)|0)!=1){f=0;j=25;break a}h=d[u>>0]|0;if((h|0)==2){j=9;break}else if((h|0)==1){f=1;j=25;break a}else if(!h){j=8;break}if(!n){f=1;j=25;break a}l=e-f|0;m=qJ(g,o)|0;if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](m+f|0,(h|0)<(l|0)?h:l,1,c)|0)!=1){f=0;j=25;break a}h=a[u>>0]|0;if(h&1){if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](t,1,1,c)|0)!=1){f=0;j=25;break a}h=a[u>>0]|0}f=(h&255)+f|0}if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,c)|0)!=1){f=0;j=25;break a}}if((j|0)==8){f=0;h=o+1|0}else if((j|0)==9){a[r>>0]=0;a[s>>0]=0;if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](r,1,1,c)|0)!=1){f=0;j=25;break}if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](s,1,1,c)|0)!=1){f=0;j=25;break}f=(d[r>>0]|0)+f|0;h=(d[s>>0]|0)+o|0}if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,c)|0)==1)o=h;else{f=0;j=25;break}}if((j|0)==25){i=v;return f|0}return 0}function i0(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0;I=i;i=i+32|0;D=I;G=f&-4;E=e&-4;F=PH(G,E,32,16711680,65280,255)|0;if(!F){g=0;i=I;return g|0}C=Ifa(YH(F)|0,0,G|0,0)|0;C=yfa(C|0,H|0,7,0)|0;C=Bfa(C|0,H|0,3)|0;if((b|0)==1){u=(f|3|0)/4|0;v=mda(u>>>0>536870911?-1:u<<3,367160)|0;if(!v){g=F;i=I;return g|0}if((E|0)>3){w=E+-1|0;x=(G|0)>3;y=D+16|0;z=0-C|0;A=D+20|0;o=4-C|0;p=o+4|0;q=o+8|0;B=z<<1;r=B+4|0;s=B+8|0;t=B+12|0;k=da(C,-3)|0;f=k+4|0;b=k+8|0;l=k+12|0;m=0;do{Xd[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](v,8,u,h)|0;e=qJ(F,w-m|0)|0;if(x){n=v;j=0;while(1){c[y>>2]=n;G1(n,D);J=d[(c[y>>2]|0)+4>>0]|0;c[A>>2]=J;J=c[D+((J&3)<<2)>>2]|0;a[e>>0]=J;a[e+1>>0]=J>>8;a[e+2>>0]=J>>16;a[e+3>>0]=J>>24;J=e+4|0;C=c[D+(((c[A>>2]|0)>>>2&3)<<2)>>2]|0;a[J>>0]=C;a[J+1>>0]=C>>8;a[J+2>>0]=C>>16;a[J+3>>0]=C>>24;J=e+8|0;C=c[D+(((c[A>>2]|0)>>>4&3)<<2)>>2]|0;a[J>>0]=C;a[J+1>>0]=C>>8;a[J+2>>0]=C>>16;a[J+3>>0]=C>>24;J=e+12|0;C=c[D+(((c[A>>2]|0)>>>6&3)<<2)>>2]|0;a[J>>0]=C;a[J+1>>0]=C>>8;a[J+2>>0]=C>>16;a[J+3>>0]=C>>24;J=d[(c[y>>2]|0)+5>>0]|0;c[A>>2]=J;C=e+z|0;J=c[D+((J&3)<<2)>>2]|0;a[C>>0]=J;a[C+1>>0]=J>>8;a[C+2>>0]=J>>16;a[C+3>>0]=J>>24;C=e+o|0;J=c[D+(((c[A>>2]|0)>>>2&3)<<2)>>2]|0;a[C>>0]=J;a[C+1>>0]=J>>8;a[C+2>>0]=J>>16;a[C+3>>0]=J>>24;C=e+p|0;J=c[D+(((c[A>>2]|0)>>>4&3)<<2)>>2]|0;a[C>>0]=J;a[C+1>>0]=J>>8;a[C+2>>0]=J>>16;a[C+3>>0]=J>>24;C=e+q|0;J=c[D+(((c[A>>2]|0)>>>6&3)<<2)>>2]|0;a[C>>0]=J;a[C+1>>0]=J>>8;a[C+2>>0]=J>>16;a[C+3>>0]=J>>24;C=d[(c[y>>2]|0)+6>>0]|0;c[A>>2]=C;J=e+B|0;C=c[D+((C&3)<<2)>>2]|0;a[J>>0]=C;a[J+1>>0]=C>>8;a[J+2>>0]=C>>16;a[J+3>>0]=C>>24;J=e+r|0;C=c[D+(((c[A>>2]|0)>>>2&3)<<2)>>2]|0;a[J>>0]=C;a[J+1>>0]=C>>8;a[J+2>>0]=C>>16;a[J+3>>0]=C>>24;J=e+s|0;C=c[D+(((c[A>>2]|0)>>>4&3)<<2)>>2]|0;a[J>>0]=C;a[J+1>>0]=C>>8;a[J+2>>0]=C>>16;a[J+3>>0]=C>>24;J=e+t|0;C=c[D+(((c[A>>2]|0)>>>6&3)<<2)>>2]|0;a[J>>0]=C;a[J+1>>0]=C>>8;a[J+2>>0]=C>>16;a[J+3>>0]=C>>24;J=d[(c[y>>2]|0)+7>>0]|0;c[A>>2]=J;C=e+k|0;J=c[D+((J&3)<<2)>>2]|0;a[C>>0]=J;a[C+1>>0]=J>>8;a[C+2>>0]=J>>16;a[C+3>>0]=J>>24;C=e+f|0;J=c[D+(((c[A>>2]|0)>>>2&3)<<2)>>2]|0;a[C>>0]=J;a[C+1>>0]=J>>8;a[C+2>>0]=J>>16;a[C+3>>0]=J>>24;C=e+b|0;J=c[D+(((c[A>>2]|0)>>>4&3)<<2)>>2]|0;a[C>>0]=J;a[C+1>>0]=J>>8;a[C+2>>0]=J>>16;a[C+3>>0]=J>>24;C=e+l|0;J=c[D+(((c[A>>2]|0)>>>6&3)<<2)>>2]|0;a[C>>0]=J;a[C+1>>0]=J>>8;a[C+2>>0]=J>>16;a[C+3>>0]=J>>24;j=j+4|0;if((j|0)>=(G|0))break;else{e=e+16|0;n=n+8|0}}}m=m+4|0}while((m|0)<(E|0))}oda(v);J=F;i=I;return J|0}else if((b|0)==3){m=(f|3|0)/4|0;p=mda(m>>>0>268435455?-1:m<<4,367160)|0;if(!p){J=F;i=I;return J|0}if((E|0)>3){q=E+-1|0;r=(G|0)>3;s=0-C|0;t=D+16|0;u=D+20|0;v=D+24|0;w=s<<1;l=da(C,-3)|0;k=0;do{Xd[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](p,16,m,h)|0;e=qJ(F,q-k|0)|0;if(r){b=p;o=0;while(1){c[t>>2]=b;G1(b+8|0,D);f=c[t>>2]|0;j=d[f+12>>0]|0;c[u>>2]=j;c[v>>2]=(d[f>>0]|d[f+1>>0]<<8)&65535;f=e;n=0;while(1){J=c[D+((j>>>(n<<1)&3)<<2)>>2]|0;a[f>>0]=J;a[f+1>>0]=J>>8;a[f+2>>0]=J>>16;a[f+3>>0]=J>>24;a[f+3>>0]=((((c[v>>2]|0)>>>(n<<2)&15)*255|0)>>>0)/15|0;n=n+1|0;if((n|0)==4)break;j=c[u>>2]|0;f=f+4|0}f=c[t>>2]|0;j=d[f+13>>0]|0;c[u>>2]=j;f=f+2|0;c[v>>2]=(d[f>>0]|d[f+1>>0]<<8)&65535;f=e+s|0;n=0;while(1){J=c[D+((j>>>(n<<1)&3)<<2)>>2]|0;a[f>>0]=J;a[f+1>>0]=J>>8;a[f+2>>0]=J>>16;a[f+3>>0]=J>>24;a[f+3>>0]=((((c[v>>2]|0)>>>(n<<2)&15)*255|0)>>>0)/15|0;n=n+1|0;if((n|0)==4)break;j=c[u>>2]|0;f=f+4|0}f=c[t>>2]|0;j=d[f+14>>0]|0;c[u>>2]=j;f=f+4|0;c[v>>2]=(d[f>>0]|d[f+1>>0]<<8)&65535;f=e+w|0;n=0;while(1){J=c[D+((j>>>(n<<1)&3)<<2)>>2]|0;a[f>>0]=J;a[f+1>>0]=J>>8;a[f+2>>0]=J>>16;a[f+3>>0]=J>>24;a[f+3>>0]=((((c[v>>2]|0)>>>(n<<2)&15)*255|0)>>>0)/15|0;n=n+1|0;if((n|0)==4)break;j=c[u>>2]|0;f=f+4|0}f=c[t>>2]|0;j=d[f+15>>0]|0;c[u>>2]=j;f=f+6|0;c[v>>2]=(d[f>>0]|d[f+1>>0]<<8)&65535;f=e+l|0;n=0;while(1){J=c[D+((j>>>(n<<1)&3)<<2)>>2]|0;a[f>>0]=J;a[f+1>>0]=J>>8;a[f+2>>0]=J>>16;a[f+3>>0]=J>>24;a[f+3>>0]=((((c[v>>2]|0)>>>(n<<2)&15)*255|0)>>>0)/15|0;n=n+1|0;if((n|0)==4)break;j=c[u>>2]|0;f=f+4|0}o=o+4|0;if((o|0)>=(G|0))break;else{e=e+16|0;b=b+16|0}}}k=k+4|0}while((k|0)<(E|0))}oda(p);J=F;i=I;return J|0}else if((b|0)==5){j=(f|3|0)/4|0;k=mda(j>>>0>268435455?-1:j<<4,367160)|0;if(!k){J=F;i=I;return J|0}if((E|0)>3){l=E+-1|0;m=(G|0)>3;n=0;do{Xd[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](k,16,j,h)|0;e=qJ(F,l-n|0)|0;if(m){f=k;b=0;while(1){H1(e,f,C,4,4);b=b+4|0;if((b|0)>=(G|0))break;else{e=e+16|0;f=f+16|0}}}n=n+4|0}while((n|0)<(E|0))}oda(k);J=F;i=I;return J|0}else{J=F;i=I;return J|0}return 0}function j0(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function k0(a,b,c){a=a|0;b=b|0;c=c|0;return c|0}function l0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;H=0;return 0}function m0(a){a=a|0;return 0}function n0(a){a=a|0;H=0;return 0}function o0(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function p0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function q0(a){a=a|0;var b=0,d=0,e=0;b=c[a+52>>2]|0;if(b){d=a+56|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-4-b|0)>>>2)<<2);nda(b)}b=c[a+40>>2]|0;if(b){d=a+44|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-4-b|0)>>>2)<<2);nda(b)}b=c[a+28>>2]|0;if(b){d=a+32|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-4-b|0)>>>2)<<2);nda(b)}e=c[a+16>>2]|0;if(!e)return;b=a+20|0;d=c[b>>2]|0;if((d|0)!=(e|0))c[b>>2]=d+(~((d+-4-e|0)>>>2)<<2);nda(e);return}function r0(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+4|0;k=c[a>>2]|0;e=((c[j>>2]|0)-k>>2)+1|0;if(e>>>0>1073741823)i8(a);l=a+8|0;f=k;d=(c[l>>2]|0)-f|0;if(d>>2>>>0<536870911){d=d>>1;d=d>>>0>>0?e:d;e=(c[j>>2]|0)-f|0;f=e>>2;if(!d){h=0;g=0}else i=6}else{e=(c[j>>2]|0)-f|0;d=1073741823;f=e>>2;i=6}if((i|0)==6){h=d;g=jda(d<<2)|0}d=g+(f<<2)|0;if(d)c[d>>2]=c[b>>2];qfa(g|0,k|0,e|0)|0;c[a>>2]=g;c[j>>2]=g+(f+1<<2);c[l>>2]=g+(h<<2);if(!k)return;nda(k);return}function s0(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+4|0;k=c[a>>2]|0;e=(((c[j>>2]|0)-k|0)/12|0)+1|0;if(e>>>0>357913941)i8(a);l=a+8|0;f=k;d=((c[l>>2]|0)-f|0)/12|0;if(d>>>0<178956970){d=d<<1;d=d>>>0>>0?e:d;e=(c[j>>2]|0)-f|0;f=(e|0)/12|0;if(!d){h=0;g=0}else i=6}else{e=(c[j>>2]|0)-f|0;d=357913941;f=(e|0)/12|0;i=6}if((i|0)==6){h=d;g=jda(d*12|0)|0}d=g+(f*12|0)|0;if(d){c[d+0>>2]=c[b+0>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2]}b=g+((((e|0)/-12|0)+f|0)*12|0)|0;qfa(b|0,k|0,e|0)|0;c[a>>2]=b;c[j>>2]=g+((f+1|0)*12|0);c[l>>2]=g+(h*12|0);if(!k)return;nda(k);return}function t0(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=BK()|0;if(!i)return;KK(i,c)|0;MK(i,d)|0;NK(i,e)|0;OK(i,f)|0;PK(i,g)|0;QK(i,h)|0;if((a|0)==9)LK(i,_K(XK()|0,23,d)|0)|0;BI(a,b,c,i)|0;CK(i);return}function u0(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+4|0;k=c[a>>2]|0;e=((c[j>>2]|0)-k>>2)+1|0;if(e>>>0>1073741823)i8(a);l=a+8|0;f=k;d=(c[l>>2]|0)-f|0;if(d>>2>>>0<536870911){d=d>>1;d=d>>>0>>0?e:d;e=(c[j>>2]|0)-f|0;f=e>>2;if(!d){h=0;g=0}else i=6}else{e=(c[j>>2]|0)-f|0;d=1073741823;f=e>>2;i=6}if((i|0)==6){h=d;g=jda(d<<2)|0}d=g+(f<<2)|0;if(d)c[d>>2]=c[b>>2];qfa(g|0,k|0,e|0)|0;c[a>>2]=g;c[j>>2]=g+(f+1<<2);c[l>>2]=g+(h<<2);if(!k)return;nda(k);return}function v0(a,b){a=a|0;b=b|0;var d=0,e=0;b=i;i=i+16|0;d=b;e=c[76206]|0;c[d>>2]=a;PI(e,305032,d);i=b;return}function w0(a,b){a=a|0;b=b|0;var d=0,e=0;b=i;i=i+16|0;d=b;e=c[76206]|0;c[d>>2]=a;PI(e,305016,d);i=b;return}function x0(a,b){a=a|0;b=b|0;var d=0,e=0;b=i;i=i+16|0;d=b;e=c[76238]|0;c[d>>2]=a;PI(e,305032,d);i=b;return}function y0(a,b){a=a|0;b=b|0;var d=0,e=0;b=i;i=i+16|0;d=b;e=c[76238]|0;c[d>>2]=a;PI(e,305016,d);i=b;return}function z0(a){a=a|0;var b=0;b=c[a>>2]|0;Bd[c[b+8>>2]&511](a);if((c[b+20>>2]|0)==70)return;else{eF(a);Ua(b+132|0,1)}}function A0(a){a=a|0;var b=0,d=0;b=i;i=i+208|0;d=b+8|0;Cd[c[(c[a>>2]|0)+12>>2]&255](a,d);PI(c[76304]|0,d,b);i=b;return}function B0(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;a[j>>0]=0;if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){k=gc(4)|0;c[k>>2]=313024;qd(k|0,366936,0)}a:while(1){f=a[j>>0]|0;b:do if(f<<24>>24!=35){if((f+-48&255)<10){g=f;f=0;h=12;break a}}else{while(1){if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){h=7;break a}f=a[j>>0]|0;if(f<<24>>24==32)break;else if(f<<24>>24==10)break b}do if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){h=7;break a}while((a[j>>0]|0)!=10)}while(0);if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){h=11;break}}if((h|0)==7){k=gc(4)|0;c[k>>2]=313024;qd(k|0,366936,0)}else if((h|0)==11){k=gc(4)|0;c[k>>2]=313024;qd(k|0,366936,0)}else if((h|0)==12){while(1){f=(f*10|0)+-48+(g<<24>>24)|0;if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){h=13;break}g=a[j>>0]|0;if((g+-48&255)>9){h=15;break}else h=12}if((h|0)==13){k=gc(4)|0;c[k>>2]=313024;qd(k|0,366936,0)}else if((h|0)==15){i=k;return f|0}}return 0}function C0(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+16|0;j=h;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[l&255](j,1,1,f)|0;l=d[j>>0]|0;m=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[m&255](j,1,1,f)|0;b[g+8>>1]=d[j>>0]|0|l<<8;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[l&255](j,1,1,f)|0;l=d[j>>0]|0;m=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[m&255](j,1,1,f)|0;b[g+10>>1]=d[j>>0]|0|l<<8;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[l&255](j,1,1,f)|0;l=d[j>>0]|0;m=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[m&255](j,1,1,f)|0;m=d[j>>0]|0;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[k&255](j,1,1,f)|0;k=d[j>>0]|0;n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[n&255](j,1,1,f)|0;c[g+12>>2]=m<<16|l<<24|k<<8|(d[j>>0]|0);k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[k&255](j,1,1,f)|0;k=d[j>>0]|0;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[l&255](j,1,1,f)|0;c[g+16>>2]=d[j>>0]|0|k<<8;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[k&255](j,1,1,f)|0;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[k&255](j,1,1,f)|0;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[k&255](j,1,1,f)|0;k=d[j>>0]|0;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[l&255](j,1,1,f)|0;c[g+20>>2]=d[j>>0]|0|k<<8;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[k&255](j,1,1,f)|0;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[k&255](j,1,1,f)|0;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[k&255](j,1,1,f)|0;k=d[j>>0]|0;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[l&255](j,1,1,f)|0;b[g+24>>1]=d[j>>0]|0|k<<8;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[k&255](j,1,1,f)|0;k=d[j>>0]|0;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[l&255](j,1,1,f)|0;b[g+26>>1]=d[j>>0]|0|k<<8;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[k&255](j,1,1,f)|0;k=d[j>>0]|0;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[l&255](j,1,1,f)|0;b[g+28>>1]=d[j>>0]|0|k<<8;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[k&255](j,1,1,f)|0;k=d[j>>0]|0;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[l&255](j,1,1,f)|0;b[g+30>>1]=d[j>>0]|0|k<<8;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[k&255](j,1,1,f)|0;k=d[j>>0]|0;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[l&255](j,1,1,f)|0;l=d[j>>0]|0;m=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[m&255](j,1,1,f)|0;m=d[j>>0]|0;n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[n&255](j,1,1,f)|0;c[g+32>>2]=l<<16|k<<24|m<<8|(d[j>>0]|0);m=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[m&255](j,1,1,f)|0;m=d[j>>0]|0;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[k&255](j,1,1,f)|0;k=d[j>>0]|0;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[l&255](j,1,1,f)|0;l=d[j>>0]|0;n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[n&255](j,1,1,f)|0;c[g+36>>2]=k<<16|m<<24|l<<8|(d[j>>0]|0);l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[l&255](j,1,1,f)|0;l=d[j>>0]|0;m=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[m&255](j,1,1,f)|0;m=d[j>>0]|0;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[k&255](j,1,1,f)|0;k=d[j>>0]|0;e=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;Xd[e&255](j,1,1,f)|0;c[g+40>>2]=m<<16|l<<24|k<<8|(d[j>>0]|0);i=h;return}function D0(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+16|0;l=m;j=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[j&255](l,1,1,f)|0;j=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[j&255](l,1,1,f)|0;j=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[j&255](l,1,1,f)|0;j=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[j&255](l,1,1,f)|0;j=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[j&255](l,1,1,f)|0;j=a[l>>0]|0;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[k&255](l,1,1,f)|0;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[k&255](l,1,1,f)|0;k=d[l>>0]|0;n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[n&255](l,1,1,f)|0;k=(d[l>>0]|0|k<<8)+1|0;b[g>>1]=k;k=k&65535;if(!k){i=m;return}if(((j&255)<<8&65535)<<16>>16<0){j=0;while(1){g=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[g&255](l,1,1,f)|0;g=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[g&255](l,1,1,f)|0;g=j&65535;if(g>>>0>=k>>>0){g=6;break}n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[n&255](l,1,1,f)|0;n=a[l>>0]|0;o=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[o&255](l,1,1,f)|0;a[h+(g<<2)+2>>0]=n;n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[n&255](l,1,1,f)|0;n=a[l>>0]|0;o=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[o&255](l,1,1,f)|0;a[h+(g<<2)+1>>0]=n;n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[n&255](l,1,1,f)|0;n=a[l>>0]|0;o=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[o&255](l,1,1,f)|0;a[h+(g<<2)>>0]=n;j=j+1|0;if((j|0)>=(k|0)){g=8;break}}if((g|0)==6){o=gc(4)|0;c[o>>2]=311232;qd(o|0,366936,0)}else if((g|0)==8){i=m;return}}else{j=0;while(1){g=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[g&255](l,1,1,f)|0;g=d[l>>0]|0;o=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[o&255](l,1,1,f)|0;g=d[l>>0]|0|g<<8;if(g>>>0>=k>>>0){g=6;break}o=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[o&255](l,1,1,f)|0;o=a[l>>0]|0;n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[n&255](l,1,1,f)|0;a[h+(g<<2)+2>>0]=o;o=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[o&255](l,1,1,f)|0;o=a[l>>0]|0;n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[n&255](l,1,1,f)|0;a[h+(g<<2)+1>>0]=o;o=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[o&255](l,1,1,f)|0;o=a[l>>0]|0;n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;Xd[n&255](l,1,1,f)|0;a[h+(g<<2)>>0]=o;j=j+1|0;if((j|0)>=(k|0)){g=8;break}}if((g|0)==6){o=gc(4)|0;c[o>>2]=311232;qd(o|0,366936,0)}else if((g|0)==8){i=m;return}}}function E0(b,c,f,g,h,j){b=b|0;c=c|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+16|0;z=A;y=(e[g+4>>1]|0)-(e[g>>1]|0)|0;x=(e[g+6>>1]|0)-(e[g+2>>1]|0)|0;if(!(h<<16>>16))h=x<<2&65535;u=h&65535;v=qea(u)|0;if(!((v|0)!=0&(y|0)>0)){rea(v);i=A;return}w=(h&65535)>250;s=(h&65535)<8;t=y+-1|0;n=(j|0)==3;o=(x|0)>0;p=x<<1;q=x*3|0;r=0;do{g=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;if(w){a[z>>0]=0;Xd[g&255](z,1,1,c)|0;l=a[z>>0]|0;m=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[z>>0]=0;Xd[m&255](z,1,1,c)|0;l=d[z>>0]|0|(l&255)<<8}else{a[z>>0]=0;Xd[g&255](z,1,1,c)|0;l=d[z>>0]|0}a:do if(!s){if(l){g=0;m=v;while(1){while(1){h=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[z>>0]=0;Xd[h&255](z,1,1,c)|0;h=a[z>>0]|0;j=h&255;if(!(j&128)){k=17;break}if(h<<24>>24!=-128){k=14;break}g=g+1|0;if((g|0)>=(l|0))break a}if((k|0)==14){h=257-j|0;j=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[z>>0]=0;Xd[j&255](z,1,1,c)|0;sfa(m|0,a[z>>0]|0,h|0)|0;g=g+2|0}else if((k|0)==17){h=j+1|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](m,h,1,c)|0;g=g+2+j|0}if((g|0)<(l|0))m=m+h|0;else break}}}else Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](v,u,1,c)|0;while(0);g=qJ(f,t-r|0)|0;if(n){if(o){h=0;j=v;while(1){a[g>>0]=a[j+p>>0]|0;a[g+1>>0]=a[j+x>>0]|0;a[g+2>>0]=a[j>>0]|0;a[g+3>>0]=-1;h=h+1|0;if((h|0)==(x|0))break;else{g=g+4|0;j=j+1|0}}}}else if(o){h=0;j=v;while(1){a[g>>0]=a[j+q>>0]|0;a[g+1>>0]=a[j+p>>0]|0;a[g+2>>0]=a[j+x>>0]|0;a[g+3>>0]=a[j>>0]|0;h=h+1|0;if((h|0)==(x|0))break;else{g=g+4|0;j=j+1|0}}}r=r+1|0}while((r|0)<(y|0));rea(v);i=A;return}function F0(b,c,f,g,h){b=b|0;c=c|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;t=u;s=(e[g+4>>1]|0)-(e[g>>1]|0)|0;h=h&32767;if(!h)h=(e[g+6>>1]|0)-(e[g+2>>1]|0)|0;if((s|0)<=0){i=u;return}n=h&65535;o=n>>>0>250;p=s+-1|0;q=n>>>0<8;r=0;do{h=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;if(o){a[t>>0]=0;Xd[h&255](t,1,1,c)|0;m=d[t>>0]|0;l=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[t>>0]=0;Xd[l&255](t,1,1,c)|0;m=d[t>>0]|0|m<<8}else{a[t>>0]=0;Xd[h&255](t,1,1,c)|0;m=d[t>>0]|0}h=qJ(f,p-r|0)|0;a:do if(!q){if(m){g=0;while(1){k=g;while(1){g=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[t>>0]=0;Xd[g&255](t,1,1,c)|0;g=a[t>>0]|0;j=g&255;if(!(j&128)){g=k;l=17;break}if(g<<24>>24!=-128){g=k;l=14;break}k=k+1|0;if((k|0)>=(m|0))break a}if((l|0)==14){k=257-j|0;l=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[t>>0]=0;Xd[l&255](t,1,1,c)|0;sfa(h|0,a[t>>0]|0,k|0)|0;g=g+2|0}else if((l|0)==17){k=j+1|0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](h,k,1,c)|0;g=g+2+j|0}if((g|0)<(m|0))h=h+k|0;else break}}}else Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](h,n,1,c)|0;while(0);r=r+1|0}while((r|0)!=(s|0));i=u;return}function G0(b,f,g,h,j,k){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=i;i=i+272|0;y=A;m=A+8|0;sfa(m|0,0,256)|0;z=(e[h+4>>1]|0)-(e[h>>1]|0)|0;o=(e[h+6>>1]|0)-(e[h+2>>1]|0)|0;if((k|0)<9)j=j&32767;x=(k|0)==16;w=x?2:1;j=j<<16>>16==0?o<<(x&1)&65535:j;switch(k|0){case 1:{v=8;break}case 8:{v=1;break}case 2:{v=4;break}case 4:{v=2;break}case 16:{v=1;break}default:{c[y>>2]=k;Xea(m,308424,y)|0;A=gc(4)|0;c[A>>2]=m;qd(A|0,366912,0)}}h=(z|0)>0;if((j&65535)<8){if(!h){i=A;return}n=z+-1|0;m=(o|0)>0;if(x){l=0;do{h=qJ(g,n-l|0)|0;if(m){j=0;while(1){k=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[y>>0]=0;Xd[k&255](y,1,1,f)|0;k=d[y>>0]|0;x=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[y>>0]=0;Xd[x&255](y,1,1,f)|0;x=d[y>>0]|0;a[h>>0]=x<<3;a[h+1>>0]=(x|k<<8)>>>2&248;a[h+2>>0]=k<<1&248;a[h+3>>0]=-1;j=j+1|0;if((j|0)==(o|0))break;else h=h+4|0}}l=l+1|0}while((l|0)!=(z|0));i=A;return}if(m){h=0;do{I1(b,f,o,k,qJ(g,n-h|0)|0);h=h+1|0}while((h|0)!=(z|0));i=A;return}else{h=0;do{I1(b,f,o,k,qJ(g,n-h|0)|0);h=h+1|0}while((h|0)!=(z|0));i=A;return}}if(!h){i=A;return}q=(j&65535)>250;r=z+-1|0;s=v<<2;t=w+1|0;u=0;do{h=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;if(q){a[y>>0]=0;Xd[h&255](y,1,1,f)|0;p=d[y>>0]|0;n=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[y>>0]=0;Xd[n&255](y,1,1,f)|0;p=d[y>>0]|0|p<<8}else{a[y>>0]=0;Xd[h&255](y,1,1,f)|0;p=d[y>>0]|0}h=qJ(g,r-u|0)|0;a:do if((p|0)>0){m=0;do{while(1){j=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[y>>0]=0;Xd[j&255](y,1,1,f)|0;j=a[y>>0]|0;l=j&255;if(!(l&128)){o=36;break}if(j<<24>>24!=-128){o=28;break}m=m+1|0;if((m|0)>=(p|0))break a}if((o|0)==28){j=257-l|0;if(!x){I1(b,f,1,k,h);if(j>>>0>1){l=1;do{qfa(h+(da(l,v)|0)|0,h|0,v|0)|0;l=l+1|0}while((l|0)<(j|0))}}else{n=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[y>>0]=0;Xd[n&255](y,1,1,f)|0;n=d[y>>0]|0;o=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[y>>0]=0;Xd[o&255](y,1,1,f)|0;o=d[y>>0]|0;a[h>>0]=o<<3;a[h+1>>0]=(o|n<<8)>>>2&248;a[h+2>>0]=n<<1&248;a[h+3>>0]=-1;if(j>>>0>1){l=1;do{qfa(h+(da(s,l)|0)|0,h|0,s|0)|0;l=l+1|0}while((l|0)<(j|0))}j=j<<2}m=t+m|0}else if((o|0)==36){n=l+1|0;if(x){j=h;l=0;while(1){o=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[y>>0]=0;Xd[o&255](y,1,1,f)|0;o=d[y>>0]|0;B=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[y>>0]=0;Xd[B&255](y,1,1,f)|0;B=d[y>>0]|0;a[j>>0]=B<<3;a[j+1>>0]=(B|o<<8)>>>2&248;a[j+2>>0]=o<<1&248;a[j+3>>0]=-1;l=l+1|0;if((l|0)==(n|0))break;else j=j+4|0}j=n<<2}else{I1(b,f,n,k,h);j=n}m=m+1+(da(n,w)|0)|0}h=h+(da(j,v)|0)|0}while((m|0)<(p|0))}while(0);u=u+1|0}while((u|0)!=(z|0));i=A;return}function H0(a,b){a=a|0;b=b|0;a=gc(4)|0;c[a>>2]=b;qd(a|0,366936,0)}function I0(a,b){a=a|0;b=b|0;return}function J0(a,b,e){a=a|0;b=b|0;e=e|0;var f=0;a=kB(a)|0;f=c[a>>2]|0;if((e|0)!=0&(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](b,e,1,c[a+4>>2]|0)|0)==0){e=gc(4)|0;c[e>>2]=311432;qd(e|0,366936,0)}else return}function K0(a,b,f){a=a|0;b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+80|0;o=p;l=p+32|0;m=p+24|0;k=p+28|0;n=p+40|0;c[l>>2]=0;c[m>>2]=0;c[k>>2]=0;j=(mC(a,b,l,k)|0)>0;a:do if(j&(c[k>>2]|0)>0){j=0;while(1){h=BK()|0;if(!h)break;g=c[l>>2]|0;q=c[g+(j*28|0)+12>>2]|0;g=c[g+(j*28|0)+16>>2]|0;g=q>>>0>g>>>0?q:g;PK(h,g)|0;OK(h,g)|0;NK(h,2)|0;QK(h,c[(c[l>>2]|0)+(j*28|0)+8>>2]|0)|0;g=c[(c[l>>2]|0)+(j*28|0)+4>>2]|0;if(!(gfa(g,311376)|0)){KK(h,312328)|0;BI(7,f,EK(h)|0,h)|0}else{KK(h,g)|0;BI(0,f,EK(h)|0,h)|0}CK(h);j=j+1|0;if((j|0)>=(c[k>>2]|0))break a}i=p;return}while(0);if(!(nC(a,b,m)|0)){i=p;return}g=BK()|0;if(!g){i=p;return}j=c[m>>2]|0;m=d[j+2>>0]|0;a=d[j+3>>0]|0;k=d[j+4>>0]|0;l=d[j+5>>0]|0;q=d[j+6>>0]|0;c[o>>2]=e[j>>1];c[o+4>>2]=m;c[o+8>>2]=a;c[o+12>>2]=k;c[o+16>>2]=l;c[o+20>>2]=q;Xea(n,311400,o)|0;q=(tfa(n|0)|0)+1|0;PK(g,q)|0;OK(g,q)|0;NK(g,2)|0;MK(g,306)|0;QK(g,n)|0;KK(g,348944)|0;BI(1,f,EK(g)|0,g)|0;CK(g);i=p;return}function L0(a,b,e){a=a|0;b=b|0;e=e|0;var f=0;a=kB(a)|0;f=(c[a>>2]|0)+4|0;Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](b,e,1,c[a+4>>2]|0)|0;return}function M0(a){a=a|0;return}function N0(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;a[j>>0]=0;if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){k=gc(4)|0;c[k>>2]=313024;qd(k|0,366936,0)}a:while(1){f=a[j>>0]|0;b:do if(f<<24>>24!=35){if((f+-48&255)<10){g=f;f=0;h=12;break a}}else{while(1){if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){h=7;break a}f=a[j>>0]|0;if(f<<24>>24==10)break b;else if(f<<24>>24==32)break}do if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){h=7;break a}while((a[j>>0]|0)!=10)}while(0);if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){h=11;break}}if((h|0)==7){k=gc(4)|0;c[k>>2]=313024;qd(k|0,366936,0)}else if((h|0)==11){k=gc(4)|0;c[k>>2]=313024;qd(k|0,366936,0)}else if((h|0)==12){while(1){f=(f*10|0)+-48+(g<<24>>24)|0;if(!(Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){h=13;break}g=a[j>>0]|0;if((g+-48&255)>9){h=15;break}else h=12}if((h|0)==13){k=gc(4)|0;c[k>>2]=313024;qd(k|0,366936,0)}else if((h|0)==15){i=k;return f|0}}return 0}function O0(b,e,f,g,h,i,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;m=(j|0)!=0;n=m?3:g;p=qea(da(g,e)|0)|0;if(!p){e=gc(4)|0;c[e>>2]=315480;qd(e|0,366936,0)}if((f|0)<=0){rea(p);return}if((e|0)>0)o=0;else{j=0;do{qJ(b,j)|0;Xd[(d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24)&255](p,g,e,i)|0;j=j+1|0}while((j|0)!=(f|0));rea(p);return}do{j=qJ(b,o)|0;Xd[(d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24)&255](p,g,e,i)|0;if(m){l=p;k=0;while(1){a[j>>0]=a[l>>0]|0;a[j+1>>0]=a[l+1>>0]|0;a[j+2>>0]=a[l+2>>0]|0;k=k+1|0;if((k|0)==(e|0))break;else{l=l+g|0;j=j+n|0}}}else{l=p;k=0;while(1){a[j>>0]=a[l>>0]|0;a[j+1>>0]=a[l+1>>0]|0;a[j+2>>0]=a[l+2>>0]|0;a[j+3>>0]=a[l+3>>0]|0;k=k+1|0;if((k|0)==(e|0))break;else{l=l+g|0;j=j+n|0}}}o=o+1|0}while((o|0)!=(f|0));rea(p);return}function P0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;if((d|c|0)<0){c=0;return c|0}g=da(f&65535,e&65535)|0;if((b|0)!=1){c=NH(a,b,c,d,g,0,0,0)|0;return c|0}if((g|0)!=16){c=OH(a,c,d,g>>>0<32?g:32,16711680,65280,255)|0;return c|0}if(f<<16>>16==2&e<<16>>16==8){c=OH(a,c,d,8,0,0,0)|0;return c|0}else{c=OH(a,c,d,16,63488,2016,31)|0;return c|0}return 0}function Q0(a,d){a=a|0;d=d|0;var e=0.0,f=0,h=0,j=0,k=0,l=0;j=i;i=i+16|0;l=j;k=j+8|0;f=j+4|0;h=j+12|0;g[k>>2]=300.0;g[f>>2]=300.0;b[h>>1]=2;c[l>>2]=h;sv(a,296,l)|0;c[l>>2]=k;sv(a,282,l)|0;c[l>>2]=f;sv(a,283,l)|0;a=b[h>>1]|0;e=+g[k>>2];do if(a<<16>>16==1&e>0.0&+g[f>>2]>0.0)b[h>>1]=2;else{if(a<<16>>16==2)break;else if(a<<16>>16!=3){i=j;return}vI(d,~~(e*100.0+.5)>>>0);wI(d,~~(+g[f>>2]*100.0+.5)>>>0);i=j;return}while(0);vI(d,~~(e/.0254+.5)>>>0);wI(d,~~(+g[f>>2]/.0254+.5)>>>0);i=j;return}function R0(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;k=q;l=q+20|0;m=q+12|0;n=q+16|0;p=kI(h)|0;j=f&65535;if((j|0)==3){c[k>>2]=l;c[k+4>>2]=m;c[k+8>>2]=n;sv(d,320,k)|0;j=1<<(g&65535);o=c[l>>2]|0;f=c[m>>2]|0;m=c[n>>2]|0;d=m;k=f;h=o;l=j;while(1){if((l|0)<=0){d=15;break}if((e[h>>1]|0)>255){d=19;break}if((e[k>>1]|0)>255){d=19;break}if((e[d>>1]|0)>255){d=19;break}else{d=d+2|0;k=k+2|0;h=h+2|0;l=l+-1|0}}if((d|0)==15){if(g<<16>>16==31){i=q;return}do{j=j+-1|0;a[p+(j<<2)+2>>0]=b[o+(j<<1)>>1];a[p+(j<<2)+1>>0]=b[f+(j<<1)>>1];a[p+(j<<2)>>0]=b[m+(j<<1)>>1]}while((j|0)>0);i=q;return}else if((d|0)==19){if(g<<16>>16==31){i=q;return}do{j=j+-1|0;a[p+(j<<2)+2>>0]=(((e[o+(j<<1)>>1]|0)*255|0)>>>0)/65535|0;a[p+(j<<2)+1>>0]=(((e[f+(j<<1)>>1]|0)*255|0)>>>0)/65535|0;a[p+(j<<2)>>0]=(((e[m+(j<<1)>>1]|0)*255|0)>>>0)/65535|0}while((j|0)>0);i=q;return}}else if((j|0)==0|(j|0)==1)if(g<<16>>16==1)if(!(f<<16>>16)){a[p>>0]=-1;a[p+1>>0]=-1;a[p+2>>0]=-1;a[p+4>>0]=0;a[p+5>>0]=0;a[p+6>>0]=0;i=q;return}else{a[p>>0]=0;a[p+1>>0]=0;a[p+2>>0]=0;a[p+4>>0]=-1;a[p+5>>0]=-1;a[p+6>>0]=-1;i=q;return}else if(g<<16>>16==8|g<<16>>16==4){k=hI(h)|0;j=(k|0)>0;if(f<<16>>16==1){if(!j){i=q;return}j=255/(k+-1|0)|0;d=0;do{g=(da(j,d)|0)&255;a[p+(d<<2)>>0]=g;a[p+(d<<2)+1>>0]=g;a[p+(d<<2)+2>>0]=g;d=d+1|0}while((d|0)!=(k|0));i=q;return}else{if(!j){i=q;return}j=255/(k+-1|0)|0;d=0;do{g=255-(da(j,d)|0)&255;a[p+(d<<2)>>0]=g;a[p+(d<<2)+1>>0]=g;a[p+(d<<2)+2>>0]=g;d=d+1|0}while((d|0)!=(k|0));i=q;return}}else{i=q;return}else{i=q;return}}function S0(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+13|0;g=k+12|0;j=k;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](f,1,1,e)|0;while(1){if((a[f>>0]|0)==34)break;if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](f,1,1,e)|0)!=1){f=0;h=12;break}}if((h|0)==12){i=k;return f|0};c[j+0>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](g,1,1,e)|0;while(1){f=a[g>>0]|0;if(f<<24>>24==34){h=7;break}D2(j,f);if((Xd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](g,1,1,e)|0)!=1){f=0;break}}if((h|0)==7){f=a[j>>0]|0;if(!(f&1)){f=qea(((f&255)>>>1)+1|0)|0;g=j+1|0}else{f=qea((c[j+4>>2]|0)+1|0)|0;g=c[j+8>>2]|0}wfa(f|0,g|0)|0}v2(j);j=f;i=k;return j|0}function T0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j;g=J1(b,f,d)|0;e=c[g>>2]|0;if(e){b=e;b=b+28|0;i=j;return b|0}h=jda(32)|0;q2(h+16|0,d);e=h+28|0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;e=c[f>>2]|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=e;c[g>>2]=h;e=c[c[b>>2]>>2]|0;if(!e)e=h;else{c[b>>2]=e;e=c[g>>2]|0}VR(c[b+4>>2]|0,e);b=b+8|0;c[b>>2]=(c[b>>2]|0)+1;b=h;b=b+28|0;i=j;return b|0}function U0(a,b){a=a|0;b=b|0;if(!b)return;U0(a,c[b>>2]|0);U0(a,c[b+4>>2]|0);v2(b+16|0);nda(b);return}function V0(a,b){a=a|0;b=b|0;if(!b)return;V0(a,c[b>>2]|0);V0(a,c[b+4>>2]|0);v2(b+20|0);nda(b);return}function W0(a,b){a=a|0;b=b|0;if(!b)return;else{W0(a,c[b>>2]|0);W0(a,c[b+4>>2]|0);nda(b);return}}function X0(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;f=p;b=a+16|0;d=c[b>>2]|0;if(d>>>0>1023){c[b>>2]=d+-1024;m=a+4|0;e=c[m>>2]|0;n=c[e>>2]|0;f=e+4|0;c[m>>2]=f;o=a+8|0;h=c[o>>2]|0;g=a+12|0;do if((h|0)==(c[g>>2]|0)){d=c[a>>2]|0;if(f>>>0>d>>>0){b=f;d=((b-d>>2)+1|0)/-2|0;b=h-b|0;rfa(e+(d+1<<2)|0,f|0,b|0)|0;b=e+((b>>2)+1+d<<2)|0;c[o>>2]=b;c[m>>2]=(c[m>>2]|0)+(d<<2);d=13;break}l=h-d>>1;l=(l|0)==0?1:l;k=jda(l<<2)|0;j=k+(l>>>2<<2)|0;l=k+(l<<2)|0;if((f|0)==(h|0))b=j;else{b=j;d=f;f=e;while(1){if(!b)b=0;else c[b>>2]=c[d>>2];b=b+4|0;f=f+8|0;if((f|0)==(h|0))break;else{e=d;d=f;f=e}}d=c[a>>2]|0}c[a>>2]=k;c[m>>2]=j;c[o>>2]=b;c[g>>2]=l;if(!d)d=12;else{nda(d);b=c[o>>2]|0;d=12}}else{b=h;d=12}while(0);if((d|0)==12)if(!b)b=0;else d=13;if((d|0)==13){c[b>>2]=n;b=c[o>>2]|0}c[o>>2]=b+4;i=p;return}o=a+8|0;d=c[o>>2]|0;m=a+4|0;h=d-(c[m>>2]|0)|0;j=h>>2;n=a+12|0;e=c[n>>2]|0;b=e-(c[a>>2]|0)|0;if(j>>>0>2>>>0){b=jda(4096)|0;if((e|0)!=(d|0)){if(!d)b=0;else{c[d>>2]=b;b=c[o>>2]|0}c[o>>2]=b+4;i=p;return}c[f>>2]=b;K1(a,f);e=c[m>>2]|0;l=c[e>>2]|0;f=e+4|0;c[m>>2]=f;h=c[o>>2]|0;do if((h|0)==(c[n>>2]|0)){d=c[a>>2]|0;if(f>>>0>d>>>0){b=f;d=((b-d>>2)+1|0)/-2|0;b=h-b|0;rfa(e+(d+1<<2)|0,f|0,b|0)|0;b=e+((b>>2)+1+d<<2)|0;c[o>>2]=b;c[m>>2]=(c[m>>2]|0)+(d<<2);d=31;break}k=h-d>>1;k=(k|0)==0?1:k;g=jda(k<<2)|0;j=g+(k>>>2<<2)|0;k=g+(k<<2)|0;if((f|0)==(h|0))b=j;else{b=j;d=f;f=e;while(1){if(!b)b=0;else c[b>>2]=c[d>>2];b=b+4|0;f=f+8|0;if((f|0)==(h|0))break;else{e=d;d=f;f=e}}d=c[a>>2]|0}c[a>>2]=g;c[m>>2]=j;c[o>>2]=b;c[n>>2]=k;if(!d)d=30;else{nda(d);b=c[o>>2]|0;d=30}}else{b=h;d=30}while(0);if((d|0)==30)if(!b)b=0;else d=31;if((d|0)==31){c[b>>2]=l;b=c[o>>2]|0}c[o>>2]=b+4;i=p;return}l=b>>1;l=(l|0)==0?1:l;f=jda(l<<2)|0;d=f+(l<<2)|0;g=jda(4096)|0;b=f+(j<<2)|0;do if((j|0)==(l|0))if((h|0)>0){e=f+(((j+1|0)/-2|0)+j<<2)|0;break}else{d=h>>1;d=(d|0)==0?1:d;j=jda(d<<2)|0;nda(f);e=j+(d>>>2<<2)|0;d=j+(d<<2)|0;f=j;break}else e=b;while(0);if(!e)b=0;else{c[e>>2]=g;b=e}b=b+4|0;g=c[o>>2]|0;if((g|0)==(c[m>>2]|0)){h=d;g=b;b=f}else{k=b;l=g;while(1){l=l+-4|0;do if((e|0)==(f|0)){b=d;if(k>>>0>>0){e=k;g=((b-e>>2)+1|0)/2|0;b=e-f|0;e=k+(g-(b>>2)<<2)|0;rfa(e|0,f|0,b|0)|0;g=k+(g<<2)|0;b=f;break}d=b-f>>1;d=(d|0)==0?1:d;b=jda(d<<2)|0;e=b+((d+3|0)>>>2<<2)|0;d=b+(d<<2)|0;if((f|0)==(k|0))g=e;else{g=e;h=f;do{if(!g)g=0;else c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((h|0)!=(k|0))}if(f)nda(f)}else{g=k;b=f}while(0);e=e+-4|0;c[e>>2]=c[l>>2];if((l|0)==(c[m>>2]|0)){h=d;break}else{f=b;k=g}}}d=c[a>>2]|0;c[a>>2]=b;c[m>>2]=e;c[o>>2]=g;c[n>>2]=h;if(!d){i=p;return}nda(d);i=p;return}function Y0(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;f=p;b=a+16|0;d=c[b>>2]|0;if(d>>>0>2047){c[b>>2]=d+-2048;m=a+4|0;e=c[m>>2]|0;n=c[e>>2]|0;f=e+4|0;c[m>>2]=f;o=a+8|0;h=c[o>>2]|0;g=a+12|0;do if((h|0)==(c[g>>2]|0)){d=c[a>>2]|0;if(f>>>0>d>>>0){b=f;d=((b-d>>2)+1|0)/-2|0;b=h-b|0;rfa(e+(d+1<<2)|0,f|0,b|0)|0;b=e+((b>>2)+1+d<<2)|0;c[o>>2]=b;c[m>>2]=(c[m>>2]|0)+(d<<2);d=13;break}l=h-d>>1;l=(l|0)==0?1:l;k=jda(l<<2)|0;j=k+(l>>>2<<2)|0;l=k+(l<<2)|0;if((f|0)==(h|0))b=j;else{b=j;d=f;f=e;while(1){if(!b)b=0;else c[b>>2]=c[d>>2];b=b+4|0;f=f+8|0;if((f|0)==(h|0))break;else{e=d;d=f;f=e}}d=c[a>>2]|0}c[a>>2]=k;c[m>>2]=j;c[o>>2]=b;c[g>>2]=l;if(!d)d=12;else{nda(d);b=c[o>>2]|0;d=12}}else{b=h;d=12}while(0);if((d|0)==12)if(!b)b=0;else d=13;if((d|0)==13){c[b>>2]=n;b=c[o>>2]|0}c[o>>2]=b+4;i=p;return}o=a+8|0;d=c[o>>2]|0;m=a+4|0;h=d-(c[m>>2]|0)|0;j=h>>2;n=a+12|0;e=c[n>>2]|0;b=e-(c[a>>2]|0)|0;if(j>>>0>2>>>0){b=jda(4096)|0;if((e|0)!=(d|0)){if(!d)b=0;else{c[d>>2]=b;b=c[o>>2]|0}c[o>>2]=b+4;i=p;return}c[f>>2]=b;L1(a,f);e=c[m>>2]|0;l=c[e>>2]|0;f=e+4|0;c[m>>2]=f;h=c[o>>2]|0;do if((h|0)==(c[n>>2]|0)){d=c[a>>2]|0;if(f>>>0>d>>>0){b=f;d=((b-d>>2)+1|0)/-2|0;b=h-b|0;rfa(e+(d+1<<2)|0,f|0,b|0)|0;b=e+((b>>2)+1+d<<2)|0;c[o>>2]=b;c[m>>2]=(c[m>>2]|0)+(d<<2);d=31;break}k=h-d>>1;k=(k|0)==0?1:k;g=jda(k<<2)|0;j=g+(k>>>2<<2)|0;k=g+(k<<2)|0;if((f|0)==(h|0))b=j;else{b=j;d=f;f=e;while(1){if(!b)b=0;else c[b>>2]=c[d>>2];b=b+4|0;f=f+8|0;if((f|0)==(h|0))break;else{e=d;d=f;f=e}}d=c[a>>2]|0}c[a>>2]=g;c[m>>2]=j;c[o>>2]=b;c[n>>2]=k;if(!d)d=30;else{nda(d);b=c[o>>2]|0;d=30}}else{b=h;d=30}while(0);if((d|0)==30)if(!b)b=0;else d=31;if((d|0)==31){c[b>>2]=l;b=c[o>>2]|0}c[o>>2]=b+4;i=p;return}l=b>>1;l=(l|0)==0?1:l;f=jda(l<<2)|0;d=f+(l<<2)|0;g=jda(4096)|0;b=f+(j<<2)|0;do if((j|0)==(l|0))if((h|0)>0){e=f+(((j+1|0)/-2|0)+j<<2)|0;break}else{d=h>>1;d=(d|0)==0?1:d;j=jda(d<<2)|0;nda(f);e=j+(d>>>2<<2)|0;d=j+(d<<2)|0;f=j;break}else e=b;while(0);if(!e)b=0;else{c[e>>2]=g;b=e}b=b+4|0;g=c[o>>2]|0;if((g|0)==(c[m>>2]|0)){h=d;g=b;b=f}else{k=b;l=g;while(1){l=l+-4|0;do if((e|0)==(f|0)){b=d;if(k>>>0>>0){e=k;g=((b-e>>2)+1|0)/2|0;b=e-f|0;e=k+(g-(b>>2)<<2)|0;rfa(e|0,f|0,b|0)|0;g=k+(g<<2)|0;b=f;break}d=b-f>>1;d=(d|0)==0?1:d;b=jda(d<<2)|0;e=b+((d+3|0)>>>2<<2)|0;d=b+(d<<2)|0;if((f|0)==(k|0))g=e;else{g=e;h=f;do{if(!g)g=0;else c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((h|0)!=(k|0))}if(f)nda(f)}else{g=k;b=f}while(0);e=e+-4|0;c[e>>2]=c[l>>2];if((l|0)==(c[m>>2]|0)){h=d;break}else{f=b;k=g}}}d=c[a>>2]|0;c[a>>2]=b;c[m>>2]=e;c[o>>2]=g;c[n>>2]=h;if(!d){i=p;return}nda(d);i=p;return}function Z0(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;f=p;b=a+16|0;d=c[b>>2]|0;if(d>>>0>1023){c[b>>2]=d+-1024;m=a+4|0;e=c[m>>2]|0;n=c[e>>2]|0;f=e+4|0;c[m>>2]=f;o=a+8|0;h=c[o>>2]|0;g=a+12|0;do if((h|0)==(c[g>>2]|0)){d=c[a>>2]|0;if(f>>>0>d>>>0){b=f;d=((b-d>>2)+1|0)/-2|0;b=h-b|0;rfa(e+(d+1<<2)|0,f|0,b|0)|0;b=e+((b>>2)+1+d<<2)|0;c[o>>2]=b;c[m>>2]=(c[m>>2]|0)+(d<<2);d=13;break}l=h-d>>1;l=(l|0)==0?1:l;k=jda(l<<2)|0;j=k+(l>>>2<<2)|0;l=k+(l<<2)|0;if((f|0)==(h|0))b=j;else{b=j;d=f;f=e;while(1){if(!b)b=0;else c[b>>2]=c[d>>2];b=b+4|0;f=f+8|0;if((f|0)==(h|0))break;else{e=d;d=f;f=e}}d=c[a>>2]|0}c[a>>2]=k;c[m>>2]=j;c[o>>2]=b;c[g>>2]=l;if(!d)d=12;else{nda(d);b=c[o>>2]|0;d=12}}else{b=h;d=12}while(0);if((d|0)==12)if(!b)b=0;else d=13;if((d|0)==13){c[b>>2]=n;b=c[o>>2]|0}c[o>>2]=b+4;i=p;return}o=a+8|0;d=c[o>>2]|0;m=a+4|0;h=d-(c[m>>2]|0)|0;j=h>>2;n=a+12|0;e=c[n>>2]|0;b=e-(c[a>>2]|0)|0;if(j>>>0>2>>>0){b=jda(4096)|0;if((e|0)!=(d|0)){if(!d)b=0;else{c[d>>2]=b;b=c[o>>2]|0}c[o>>2]=b+4;i=p;return}c[f>>2]=b;M1(a,f);e=c[m>>2]|0;l=c[e>>2]|0;f=e+4|0;c[m>>2]=f;h=c[o>>2]|0;do if((h|0)==(c[n>>2]|0)){d=c[a>>2]|0;if(f>>>0>d>>>0){b=f;d=((b-d>>2)+1|0)/-2|0;b=h-b|0;rfa(e+(d+1<<2)|0,f|0,b|0)|0;b=e+((b>>2)+1+d<<2)|0;c[o>>2]=b;c[m>>2]=(c[m>>2]|0)+(d<<2);d=31;break}k=h-d>>1;k=(k|0)==0?1:k;g=jda(k<<2)|0;j=g+(k>>>2<<2)|0;k=g+(k<<2)|0;if((f|0)==(h|0))b=j;else{b=j;d=f;f=e;while(1){if(!b)b=0;else c[b>>2]=c[d>>2];b=b+4|0;f=f+8|0;if((f|0)==(h|0))break;else{e=d;d=f;f=e}}d=c[a>>2]|0}c[a>>2]=g;c[m>>2]=j;c[o>>2]=b;c[n>>2]=k;if(!d)d=30;else{nda(d);b=c[o>>2]|0;d=30}}else{b=h;d=30}while(0);if((d|0)==30)if(!b)b=0;else d=31;if((d|0)==31){c[b>>2]=l;b=c[o>>2]|0}c[o>>2]=b+4;i=p;return}l=b>>1;l=(l|0)==0?1:l;f=jda(l<<2)|0;d=f+(l<<2)|0;g=jda(4096)|0;b=f+(j<<2)|0;do if((j|0)==(l|0))if((h|0)>0){e=f+(((j+1|0)/-2|0)+j<<2)|0;break}else{d=h>>1;d=(d|0)==0?1:d;j=jda(d<<2)|0;nda(f);e=j+(d>>>2<<2)|0;d=j+(d<<2)|0;f=j;break}else e=b;while(0);if(!e)b=0;else{c[e>>2]=g;b=e}b=b+4|0;g=c[o>>2]|0;if((g|0)==(c[m>>2]|0)){h=d;g=b;b=f}else{k=b;l=g;while(1){l=l+-4|0;do if((e|0)==(f|0)){b=d;if(k>>>0>>0){e=k;g=((b-e>>2)+1|0)/2|0;b=e-f|0;e=k+(g-(b>>2)<<2)|0;rfa(e|0,f|0,b|0)|0;g=k+(g<<2)|0;b=f;break}d=b-f>>1;d=(d|0)==0?1:d;b=jda(d<<2)|0;e=b+((d+3|0)>>>2<<2)|0;d=b+(d<<2)|0;if((f|0)==(k|0))g=e;else{g=e;h=f;do{if(!g)g=0;else c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((h|0)!=(k|0))}if(f)nda(f)}else{g=k;b=f}while(0);e=e+-4|0;c[e>>2]=c[l>>2];if((l|0)==(c[m>>2]|0)){h=d;break}else{f=b;k=g}}}d=c[a>>2]|0;c[a>>2]=b;c[m>>2]=e;c[o>>2]=g;c[n>>2]=h;if(!d){i=p;return}nda(d);i=p;return}function _0(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;q=s+16|0;p=s;r=qea(IK(f)|0)|0;if(!r){i=s;return}sfa(r|0,0,IK(f)|0)|0;switch(GK(f)|0){case 3:{if(HK(f)|0)if(!h){h=0;do{n=h<<1;b[r+(h<<1)>>1]=d[g+n>>0]|0|(d[g+(n|1)>>0]|0)<<8;h=h+1|0}while(h>>>0<(HK(f)|0)>>>0)}else{h=0;do{n=h<<1;b[r+(h<<1)>>1]=(d[g+n>>0]|0)<<8|(d[g+(n|1)>>0]|0);h=h+1|0}while(h>>>0<(HK(f)|0)>>>0)}QK(f,r)|0;break}case 5:{if((HK(f)|0)&2147483647){o=(h|0)==0;n=0;do{l=n<<2;h=g+l|0;m=a[g+(l|3)>>0]|0;k=a[g+(l|2)>>0]|0;l=a[g+(l|1)>>0]|0;if(o)h=(k&255)<<16|(m&255)<<24|(l&255)<<8|(d[h>>0]|0);else h=(k&255)<<8|m&255|(l&255)<<16|(d[h>>0]|0)<<24;c[r+(n<<2)>>2]=h;n=n+1|0}while(n>>>0<(HK(f)|0)<<1>>>0)}QK(f,r)|0;break}case 9:{if(HK(f)|0){o=(h|0)==0;n=0;do{l=n<<2;h=g+l|0;m=a[g+(l|3)>>0]|0;k=a[g+(l|2)>>0]|0;l=a[g+(l|1)>>0]|0;if(o)h=(k&255)<<16|(m&255)<<24|(l&255)<<8|(d[h>>0]|0);else h=(k&255)<<8|m&255|(l&255)<<16|(d[h>>0]|0)<<24;c[r+(n<<2)>>2]=h;n=n+1|0}while(n>>>0<(HK(f)|0)>>>0)}QK(f,r)|0;break}case 10:{if((HK(f)|0)&2147483647){o=(h|0)==0;n=0;do{l=n<<2;h=g+l|0;m=a[g+(l|3)>>0]|0;k=a[g+(l|2)>>0]|0;l=a[g+(l|1)>>0]|0;if(o)h=(k&255)<<16|(m&255)<<24|(l&255)<<8|(d[h>>0]|0);else h=(k&255)<<8|m&255|(l&255)<<16|(d[h>>0]|0)<<24;c[r+(n<<2)>>2]=h;n=n+1|0}while(n>>>0<(HK(f)|0)<<1>>>0)}QK(f,r)|0;break}case 8:{if(HK(f)|0)if(!h){h=0;do{n=h<<1;b[r+(h<<1)>>1]=d[g+n>>0]|0|(d[g+(n|1)>>0]|0)<<8;h=h+1|0}while(h>>>0<(HK(f)|0)>>>0)}else{h=0;do{n=h<<1;b[r+(h<<1)>>1]=(d[g+n>>0]|0)<<8|(d[g+(n|1)>>0]|0);h=h+1|0}while(h>>>0<(HK(f)|0)>>>0)}QK(f,r)|0;break}case 4:{if(HK(f)|0)if(!h){h=0;do{n=h<<2;c[r+(h<<2)>>2]=(d[g+(n|2)>>0]|0)<<16|(d[g+(n|3)>>0]|0)<<24|(d[g+(n|1)>>0]|0)<<8|(d[g+n>>0]|0);h=h+1|0}while(h>>>0<(HK(f)|0)>>>0)}else{h=0;do{n=h<<2;c[r+(h<<2)>>2]=(d[g+(n|2)>>0]|0)<<8|(d[g+(n|3)>>0]|0)|(d[g+(n|1)>>0]|0)<<16|(d[g+n>>0]|0)<<24;h=h+1|0}while(h>>>0<(HK(f)|0)>>>0)}QK(f,r)|0;break}default:QK(f,g)|0}a:do if((j|0)==5){o=XK()|0;k=FK(f)|0;switch(k&65535|0){case 4:{h=1;n=50176;break}case 1:{h=1;n=49408;break}case 2:{h=0;n=49664;break}case 18:{h=0;n=4608;break}case 224:{h=1;n=52736;break}case 160:{h=1;n=51712;break}default:{h=ZK(o,5,k,q)|0;KK(f,h)|0;LK(f,_K(o,5,k)|0)|0;if(!h)break a;BI(4,e,h,f)|0;break a}}l=JK(f)|0;m=BK()|0;if(m){if(h>>>0<(HK(f)|0)>>>0)do{g=h+n&65535;MK(m,g)|0;NK(m,3)|0;OK(m,1)|0;PK(m,2)|0;QK(m,l+(h<<1)|0)|0;k=ZK(o,5,g,q)|0;KK(m,k)|0;LK(m,_K(o,5,g)|0)|0;if(k)BI(4,e,k,m)|0;h=h+1|0}while(h>>>0<(HK(f)|0)>>>0);CK(m)}}else{k=XK()|0;q=FK(f)|0;h=ZK(k,j,q,p)|0;KK(f,h)|0;LK(f,_K(k,j,q)|0)|0;if(h)BI(aL(k,j)|0,e,h,f)|0}while(0);rea(r);i=s;return}function $0(a,b){a=a|0;b=b|0;if(!b)return;else{$0(a,c[b>>2]|0);$0(a,c[b+4>>2]|0);nda(b);return}}function a1(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+4|0;d=c[j>>2]|0;i=a+16|0;b=c[i>>2]|0;e=d+(b>>>10<<2)|0;k=a+8|0;h=c[k>>2]|0;if((h|0)==(d|0)){f=0;g=a+20|0;b=0}else{g=a+20|0;f=(c[g>>2]|0)+b|0;f=(c[d+(f>>>10<<2)>>2]|0)+((f&1023)<<2)|0;b=(c[e>>2]|0)+((b&1023)<<2)|0}a:while(1){do{if((b|0)==(f|0))break a;b=b+4|0}while((b-(c[e>>2]|0)|0)!=4096);l=e+4|0;b=c[l>>2]|0;e=l}c[g>>2]=0;b=h-d>>2;if(b>>>0>2)do{nda(c[d>>2]|0);d=(c[j>>2]|0)+4|0;c[j>>2]=d;b=(c[k>>2]|0)-d>>2}while(b>>>0>2);if((b|0)==2)c[i>>2]=1024;else if((b|0)==1)c[i>>2]=512;b=c[j>>2]|0;d=c[k>>2]|0;if((b|0)!=(d|0)){do{nda(c[b>>2]|0);b=b+4|0}while((b|0)!=(d|0));b=c[j>>2]|0;d=c[k>>2]|0;if((d|0)!=(b|0))c[k>>2]=d+(~((d+-4-b|0)>>>2)<<2)}b=c[a>>2]|0;if(!b)return;nda(b);return}function b1(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+4|0;d=c[j>>2]|0;i=a+16|0;b=c[i>>2]|0;e=d+(b>>>10<<2)|0;k=a+8|0;h=c[k>>2]|0;if((h|0)==(d|0)){f=0;g=a+20|0;b=0}else{g=a+20|0;f=(c[g>>2]|0)+b|0;f=(c[d+(f>>>10<<2)>>2]|0)+((f&1023)<<2)|0;b=(c[e>>2]|0)+((b&1023)<<2)|0}a:while(1){do{if((b|0)==(f|0))break a;b=b+4|0}while((b-(c[e>>2]|0)|0)!=4096);l=e+4|0;b=c[l>>2]|0;e=l}c[g>>2]=0;b=h-d>>2;if(b>>>0>2)do{nda(c[d>>2]|0);d=(c[j>>2]|0)+4|0;c[j>>2]=d;b=(c[k>>2]|0)-d>>2}while(b>>>0>2);if((b|0)==1)c[i>>2]=512;else if((b|0)==2)c[i>>2]=1024;b=c[j>>2]|0;d=c[k>>2]|0;if((b|0)!=(d|0)){do{nda(c[b>>2]|0);b=b+4|0}while((b|0)!=(d|0));b=c[j>>2]|0;d=c[k>>2]|0;if((d|0)!=(b|0))c[k>>2]=d+(~((d+-4-b|0)>>>2)<<2)}b=c[a>>2]|0;if(!b)return;nda(b);return}function c1(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+4|0;d=c[j>>2]|0;i=a+16|0;b=c[i>>2]|0;e=d+(b>>>11<<2)|0;k=a+8|0;h=c[k>>2]|0;if((h|0)==(d|0)){f=0;g=a+20|0;b=0}else{g=a+20|0;f=(c[g>>2]|0)+b|0;f=(c[d+(f>>>11<<2)>>2]|0)+((f&2047)<<1)|0;b=(c[e>>2]|0)+((b&2047)<<1)|0}a:while(1){do{if((b|0)==(f|0))break a;b=b+2|0}while((b-(c[e>>2]|0)|0)!=4096);l=e+4|0;b=c[l>>2]|0;e=l}c[g>>2]=0;b=h-d>>2;if(b>>>0>2)do{nda(c[d>>2]|0);d=(c[j>>2]|0)+4|0;c[j>>2]=d;b=(c[k>>2]|0)-d>>2}while(b>>>0>2);if((b|0)==1)c[i>>2]=1024;else if((b|0)==2)c[i>>2]=2048;b=c[j>>2]|0;d=c[k>>2]|0;if((b|0)!=(d|0)){do{nda(c[b>>2]|0);b=b+4|0}while((b|0)!=(d|0));b=c[j>>2]|0;d=c[k>>2]|0;if((d|0)!=(b|0))c[k>>2]=d+(~((d+-4-b|0)>>>2)<<2)}b=c[a>>2]|0;if(!b)return;nda(b);return}function d1(e,f,h,j,k,l){e=e|0;f=f|0;h=h|0;j=j|0;k=+k;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;I=i;i=i+16|0;C=I+8|0;B=I;E=I+4|0;A=WH(e)|0;F=WH(f)|0;G=(l|0)!=0;z=G?l:352752;H=eI(e)|0;H=(H>>>0)/((WH(e)|0)>>>0)|0;o=qJ(e,h)|0;y=qJ(f,h)|0;e=(j|0)>0;a:do if(G){if(e){e=0;do{qfa(y+(da(e,H)|0)|0,l|0,H|0)|0;e=e+1|0}while((e|0)!=(j|0))}switch(H|0){case 1:{a[E>>0]=a[l>>0]|0;break a}case 16:{g[E>>2]=+g[l>>2];g[E+4>>2]=+g[l+4>>2];g[E+8>>2]=+g[l+8>>2];g[E+12>>2]=+g[l+12>>2];break a}case 2:{b[E>>1]=b[l>>1]|0;break a}case 3:{b[E>>1]=b[l>>1]|0;a[E+2>>0]=a[l+2>>0]|0;break a}case 6:{c[E>>2]=c[l>>2];b[E+4>>1]=b[l+4>>1]|0;break a}case 12:{g[E>>2]=+g[l>>2];g[E+4>>2]=+g[l+4>>2];g[E+8>>2]=+g[l+8>>2];break a}case 4:{c[E>>2]=c[l>>2];break a}case 8:{c[E>>2]=c[l>>2];c[E+4>>2]=c[l+4>>2];break a}default:break a}}else{if(e)sfa(y|0,0,da(H,j)|0)|0;sfa(E|0,0,H|0)|0}while(0);b:do if(A){n=C+2|0;p=C+4|0;q=C+8|0;r=C+12|0;s=(H|0)==0;t=B+2|0;u=B+4|0;v=B+8|0;w=B+12|0;x=0;m=o;while(1){switch(H|0){case 12:{g[C>>2]=+g[m>>2];g[p>>2]=+g[m+4>>2];g[q>>2]=+g[m+8>>2];break}case 1:{a[C>>0]=a[m>>0]|0;break}case 3:{b[C>>1]=b[m>>1]|0;a[n>>0]=a[m+2>>0]|0;break}case 16:{g[C>>2]=+g[m>>2];g[p>>2]=+g[m+4>>2];g[q>>2]=+g[m+8>>2];g[r>>2]=+g[m+12>>2];break}case 6:{c[C>>2]=c[m>>2];b[p>>1]=b[m+4>>1]|0;break}case 2:{b[C>>1]=b[m>>1]|0;break}case 4:{c[C>>2]=c[m>>2];break}case 8:{c[C>>2]=c[m>>2];c[p>>2]=c[m+4>>2];break}default:{}}if(!s){e=0;do{o=d[z+e>>0]|0;a[B+e>>0]=~~(+(o|0)+ +((d[C+e>>0]|0)-o|0)*k+.5);e=e+1|0}while(e>>>0>>0)}e=x+j|0;c:do if((e|0)>-1&(e|0)<(F|0)){if(!s){o=0;do{J=C+o|0;a[J>>0]=(d[J>>0]|0)-(d[B+o>>0]|0)+(d[E+o>>0]|0);o=o+1|0}while(o>>>0>>0);e=da(e,H)|0;o=y+e|0;switch(H|0){case 4:{c[o>>2]=c[C>>2];D=45;break c}case 1:{a[o>>0]=a[C>>0]|0;D=42;break c}case 16:{g[o>>2]=+g[C>>2];g[y+(e+4)>>2]=+g[p>>2];g[y+(e+8)>>2]=+g[q>>2];g[y+(e+12)>>2]=+g[r>>2];D=49;break c}case 8:{c[o>>2]=c[C>>2];c[y+(e+4)>>2]=c[p>>2];D=47;break c}case 6:{c[o>>2]=c[C>>2];b[y+(e+4)>>1]=b[p>>1]|0;D=46;break c}case 12:{g[o>>2]=+g[C>>2];g[y+(e+4)>>2]=+g[p>>2];g[y+(e+8)>>2]=+g[q>>2];D=48;break c}case 2:{b[o>>1]=b[C>>1]|0;D=43;break c}case 3:{D=c[C>>2]|0;b[o>>1]=D;a[y+(e+2)>>0]=D>>>16;D=44;break c}default:break c}}}else switch(H|0){case 16:{D=49;break}case 4:{D=45;break}case 8:{D=47;break}case 1:{D=42;break}case 12:{D=48;break}case 2:{D=43;break}case 3:{D=44;break}case 6:{D=46;break}default:{}}while(0);if((D|0)==42){D=0;a[E>>0]=a[B>>0]|0}else if((D|0)==43){D=0;b[E>>1]=b[B>>1]|0}else if((D|0)==44){D=0;b[E>>1]=b[B>>1]|0;a[E+2>>0]=a[t>>0]|0}else if((D|0)==45){D=0;c[E>>2]=c[B>>2]}else if((D|0)==46){D=0;c[E>>2]=c[B>>2];b[E+4>>1]=b[u>>1]|0}else if((D|0)==47){D=0;c[E>>2]=c[B>>2];c[E+4>>2]=c[u>>2]}else if((D|0)==48){D=0;g[E>>2]=+g[B>>2];g[E+4>>2]=+g[u>>2];g[E+8>>2]=+g[v>>2]}else if((D|0)==49){D=0;g[E>>2]=+g[B>>2];g[E+4>>2]=+g[u>>2];g[E+8>>2]=+g[v>>2];g[E+12>>2]=+g[w>>2]}x=x+1|0;if((x|0)==(A|0))break b;else m=m+H|0}}while(0);o=A+j|0;if(!((o|0)>-1&(F|0)>(o|0))){i=I;return}p=qJ(f,h)|0;e=da(H,o)|0;m=p+e|0;switch(H|0){case 2:{b[m>>1]=b[E>>1]|0;break}case 8:{c[m>>2]=c[E>>2];c[p+(e+4)>>2]=c[E+4>>2];break}case 1:{a[m>>0]=a[E>>0]|0;break}case 3:{b[m>>1]=b[E>>1]|0;a[p+(e+2)>>0]=a[E+2>>0]|0;break}case 6:{c[m>>2]=c[E>>2];b[p+(e+4)>>1]=b[E+4>>1]|0;break}case 4:{c[m>>2]=c[E>>2];break}case 16:{g[m>>2]=+g[E>>2];g[p+(e+4)>>2]=+g[E+4>>2];g[p+(e+8)>>2]=+g[E+8>>2];g[p+(e+12)>>2]=+g[E+12>>2];break}case 12:{g[m>>2]=+g[E>>2];g[p+(e+4)>>2]=+g[E+4>>2];g[p+(e+8)>>2]=+g[E+8>>2];break}default:{}}n=e+H|0;if(!G){sfa(p+n|0,0,da(H,F+~o|0)|0)|0;i=I;return}if((F|0)==(o+1|0)){i=I;return}e=F+-1-o|0;m=0;do{qfa(p+((da(m,H)|0)+n)|0,l|0,H|0)|0;m=m+1|0}while((m|0)!=(e|0));i=I;return}function e1(d,f,h,j,k,l){d=d|0;f=f|0;h=h|0;j=j|0;k=+k;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=i;i=i+32|0;z=F+16|0;y=F;B=F+8|0;w=WH(d)|0;C=WH(f)|0;D=(l|0)!=0;v=D?l:352744;E=eI(d)|0;E=(E>>>0)/((WH(d)|0)>>>0)|0;x=E>>>1;o=qJ(d,h)|0;u=qJ(f,h)|0;d=(j|0)>0;a:do if(D){if(d){d=0;do{qfa(u+(da(d,E)|0)|0,l|0,E|0)|0;d=d+1|0}while((d|0)!=(j|0))}switch(E|0){case 16:{g[B>>2]=+g[l>>2];g[B+4>>2]=+g[l+4>>2];g[B+8>>2]=+g[l+8>>2];g[B+12>>2]=+g[l+12>>2];break a}case 8:{c[B>>2]=c[l>>2];c[B+4>>2]=c[l+4>>2];break a}case 4:{c[B>>2]=c[l>>2];break a}case 3:{b[B>>1]=b[l>>1]|0;a[B+2>>0]=a[l+2>>0]|0;break a}case 1:{a[B>>0]=a[l>>0]|0;break a}case 6:{c[B>>2]=c[l>>2];b[B+4>>1]=b[l+4>>1]|0;break a}case 12:{g[B>>2]=+g[l>>2];g[B+4>>2]=+g[l+4>>2];g[B+8>>2]=+g[l+8>>2];break a}case 2:{b[B>>1]=b[l>>1]|0;break a}default:break a}}else{if(d)sfa(u|0,0,da(E,j)|0)|0;sfa(B|0,0,E|0)|0}while(0);b:do if(w){n=z+2|0;p=z+4|0;q=z+8|0;r=z+12|0;s=(x|0)==0;t=0;m=o;while(1){switch(E|0){case 2:{b[z>>1]=b[m>>1]|0;break}case 12:{g[z>>2]=+g[m>>2];g[p>>2]=+g[m+4>>2];g[q>>2]=+g[m+8>>2];break}case 6:{c[z>>2]=c[m>>2];b[p>>1]=b[m+4>>1]|0;break}case 8:{c[z>>2]=c[m>>2];c[p>>2]=c[m+4>>2];break}case 4:{c[z>>2]=c[m>>2];break}case 3:{b[z>>1]=b[m>>1]|0;a[n>>0]=a[m+2>>0]|0;break}case 16:{g[z>>2]=+g[m>>2];g[p>>2]=+g[m+4>>2];g[q>>2]=+g[m+8>>2];g[r>>2]=+g[m+12>>2];break}case 1:{a[z>>0]=a[m>>0]|0;break}default:{}}if(!s){d=0;do{o=e[v+(d<<1)>>1]|0;b[y+(d<<1)>>1]=~~(+(o|0)+ +((e[z+(d<<1)>>1]|0)-o|0)*k+.5);d=d+1|0}while(d>>>0>>0)}d=t+j|0;c:do if((d|0)>-1&(d|0)<(C|0)){if(!s){o=0;do{G=z+(o<<1)|0;b[G>>1]=(e[G>>1]|0)-(e[y+(o<<1)>>1]|0)+(e[B+(o<<1)>>1]|0);o=o+1|0}while(o>>>0>>0)}d=da(d,E)|0;o=u+d|0;switch(E|0){case 12:{g[o>>2]=+g[z>>2];g[u+(d+4)>>2]=+g[p>>2];g[u+(d+8)>>2]=+g[q>>2];A=48;break c}case 8:{c[o>>2]=c[z>>2];c[u+(d+4)>>2]=c[p>>2];A=47;break c}case 2:{b[o>>1]=b[z>>1]|0;A=43;break c}case 3:{A=c[z>>2]|0;b[o>>1]=A;a[u+(d+2)>>0]=A>>>16;A=44;break c}case 6:{c[o>>2]=c[z>>2];b[u+(d+4)>>1]=b[p>>1]|0;A=46;break c}case 16:{g[o>>2]=+g[z>>2];g[u+(d+4)>>2]=+g[p>>2];g[u+(d+8)>>2]=+g[q>>2];g[u+(d+12)>>2]=+g[r>>2];A=49;break c}case 1:{a[o>>0]=a[z>>0]|0;A=42;break c}case 4:{c[o>>2]=c[z>>2];A=45;break c}default:break c}}else switch(E|0){case 6:{A=46;break}case 2:{A=43;break}case 12:{A=48;break}case 8:{A=47;break}case 1:{A=42;break}case 4:{A=45;break}case 3:{A=44;break}case 16:{A=49;break}default:{}}while(0);if((A|0)==42){A=0;a[B>>0]=a[y>>0]|0}else if((A|0)==43){A=0;b[B>>1]=b[y>>1]|0}else if((A|0)==44){A=0;b[B>>1]=b[y>>1]|0;a[B+2>>0]=a[y+2>>0]|0}else if((A|0)==45){A=0;c[B>>2]=c[y>>2]}else if((A|0)==46){A=0;c[B>>2]=c[y>>2];b[B+4>>1]=b[y+4>>1]|0}else if((A|0)==47){A=0;c[B>>2]=c[y>>2];c[B+4>>2]=c[y+4>>2]}else if((A|0)==48){A=0;g[B>>2]=+g[y>>2];g[B+4>>2]=+g[y+4>>2];g[B+8>>2]=+g[y+8>>2]}else if((A|0)==49){A=0;g[B>>2]=+g[y>>2];g[B+4>>2]=+g[y+4>>2];g[B+8>>2]=+g[y+8>>2];g[B+12>>2]=+g[y+12>>2]}t=t+1|0;if((t|0)==(w|0))break b;else m=m+E|0}}while(0);o=w+j|0;if(!((o|0)>-1&(C|0)>(o|0))){i=F;return}p=qJ(f,h)|0;d=da(E,o)|0;m=p+d|0;switch(E|0){case 8:{c[m>>2]=c[B>>2];c[p+(d+4)>>2]=c[B+4>>2];break}case 6:{c[m>>2]=c[B>>2];b[p+(d+4)>>1]=b[B+4>>1]|0;break}case 1:{a[m>>0]=a[B>>0]|0;break}case 2:{b[m>>1]=b[B>>1]|0;break}case 3:{b[m>>1]=b[B>>1]|0;a[p+(d+2)>>0]=a[B+2>>0]|0;break}case 4:{c[m>>2]=c[B>>2];break}case 16:{g[m>>2]=+g[B>>2];g[p+(d+4)>>2]=+g[B+4>>2];g[p+(d+8)>>2]=+g[B+8>>2];g[p+(d+12)>>2]=+g[B+12>>2];break}case 12:{g[m>>2]=+g[B>>2];g[p+(d+4)>>2]=+g[B+4>>2];g[p+(d+8)>>2]=+g[B+8>>2];break}default:{}}n=d+E|0;if(!D){sfa(p+n|0,0,da(E,C+~o|0)|0)|0;i=F;return}if((C|0)==(o+1|0)){i=F;return}d=C+-1-o|0;m=0;do{qfa(p+((da(m,E)|0)+n)|0,l|0,E|0)|0;m=m+1|0}while((m|0)!=(d|0));i=F;return}function f1(d,e,f,h,j,k){d=d|0;e=e|0;f=f|0;h=h|0;j=+j;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0;E=i;i=i+48|0;y=E+32|0;x=E;A=E+16|0;v=WH(d)|0;B=WH(e)|0;C=(k|0)!=0;u=C?k:352728;D=eI(d)|0;D=(D>>>0)/((WH(d)|0)>>>0)|0;w=D>>>2;n=qJ(d,f)|0;t=qJ(e,f)|0;d=(h|0)>0;a:do if(C){if(d){d=0;do{qfa(t+(da(d,D)|0)|0,k|0,D|0)|0;d=d+1|0}while((d|0)!=(h|0))}switch(D|0){case 1:{a[A>>0]=a[k>>0]|0;break a}case 2:{b[A>>1]=b[k>>1]|0;break a}case 3:{b[A>>1]=b[k>>1]|0;a[A+2>>0]=a[k+2>>0]|0;break a}case 6:{c[A>>2]=c[k>>2];b[A+4>>1]=b[k+4>>1]|0;break a}case 4:{c[A>>2]=c[k>>2];break a}case 8:{c[A>>2]=c[k>>2];c[A+4>>2]=c[k+4>>2];break a}case 12:{g[A>>2]=+g[k>>2];g[A+4>>2]=+g[k+4>>2];g[A+8>>2]=+g[k+8>>2];break a}case 16:{g[A>>2]=+g[k>>2];g[A+4>>2]=+g[k+4>>2];g[A+8>>2]=+g[k+8>>2];g[A+12>>2]=+g[k+12>>2];break a}default:break a}}else{if(d)sfa(t|0,0,da(D,h)|0)|0;sfa(A|0,0,D|0)|0}while(0);b:do if(v){m=y+2|0;o=y+4|0;p=y+8|0;q=y+12|0;r=(w|0)==0;s=0;l=n;while(1){switch(D|0){case 12:{g[y>>2]=+g[l>>2];g[o>>2]=+g[l+4>>2];g[p>>2]=+g[l+8>>2];break}case 2:{b[y>>1]=b[l>>1]|0;break}case 3:{b[y>>1]=b[l>>1]|0;a[m>>0]=a[l+2>>0]|0;break}case 8:{c[y>>2]=c[l>>2];c[o>>2]=c[l+4>>2];break}case 4:{c[y>>2]=c[l>>2];break}case 16:{g[y>>2]=+g[l>>2];g[o>>2]=+g[l+4>>2];g[p>>2]=+g[l+8>>2];g[q>>2]=+g[l+12>>2];break}case 1:{a[y>>0]=a[l>>0]|0;break}case 6:{c[y>>2]=c[l>>2];b[o>>1]=b[l+4>>1]|0;break}default:{}}if(!r){d=0;do{F=+g[u+(d<<2)>>2];g[x+(d<<2)>>2]=F+(+g[y+(d<<2)>>2]-F)*j+.5;d=d+1|0}while(d>>>0>>0)}d=s+h|0;c:do if((d|0)>-1&(d|0)<(B|0)){if(!r){n=0;do{G=y+(n<<2)|0;g[G>>2]=+g[G>>2]-(+g[x+(n<<2)>>2]-+g[A+(n<<2)>>2]);n=n+1|0}while(n>>>0>>0)}d=da(d,D)|0;n=t+d|0;switch(D|0){case 4:{c[n>>2]=c[y>>2];z=45;break c}case 16:{g[n>>2]=+g[y>>2];g[t+(d+4)>>2]=+g[o>>2];g[t+(d+8)>>2]=+g[p>>2];g[t+(d+12)>>2]=+g[q>>2];z=49;break c}case 12:{g[n>>2]=+g[y>>2];g[t+(d+4)>>2]=+g[o>>2];g[t+(d+8)>>2]=+g[p>>2];z=48;break c}case 1:{a[n>>0]=a[y>>0]|0;z=42;break c}case 6:{c[n>>2]=c[y>>2];b[t+(d+4)>>1]=b[o>>1]|0;z=46;break c}case 2:{b[n>>1]=b[y>>1]|0;z=43;break c}case 8:{c[n>>2]=c[y>>2];c[t+(d+4)>>2]=c[o>>2];z=47;break c}case 3:{z=c[y>>2]|0;b[n>>1]=z;a[t+(d+2)>>0]=z>>>16;z=44;break c}default:break c}}else switch(D|0){case 3:{z=44;break}case 2:{z=43;break}case 1:{z=42;break}case 8:{z=47;break}case 12:{z=48;break}case 6:{z=46;break}case 16:{z=49;break}case 4:{z=45;break}default:{}}while(0);if((z|0)==42){z=0;a[A>>0]=a[x>>0]|0}else if((z|0)==43){z=0;b[A>>1]=b[x>>1]|0}else if((z|0)==44){z=0;b[A>>1]=b[x>>1]|0;a[A+2>>0]=a[x+2>>0]|0}else if((z|0)==45){z=0;c[A>>2]=c[x>>2]}else if((z|0)==46){z=0;c[A>>2]=c[x>>2];b[A+4>>1]=b[x+4>>1]|0}else if((z|0)==47){z=0;c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2]}else if((z|0)==48){z=0;g[A>>2]=+g[x>>2];g[A+4>>2]=+g[x+4>>2];g[A+8>>2]=+g[x+8>>2]}else if((z|0)==49){z=0;g[A>>2]=+g[x>>2];g[A+4>>2]=+g[x+4>>2];g[A+8>>2]=+g[x+8>>2];g[A+12>>2]=+g[x+12>>2]}s=s+1|0;if((s|0)==(v|0))break b;else l=l+D|0}}while(0);n=v+h|0;if(!((n|0)>-1&(B|0)>(n|0))){i=E;return}o=qJ(e,f)|0;d=da(D,n)|0;l=o+d|0;switch(D|0){case 3:{b[l>>1]=b[A>>1]|0;a[o+(d+2)>>0]=a[A+2>>0]|0;break}case 2:{b[l>>1]=b[A>>1]|0;break}case 4:{c[l>>2]=c[A>>2];break}case 8:{c[l>>2]=c[A>>2];c[o+(d+4)>>2]=c[A+4>>2];break}case 12:{g[l>>2]=+g[A>>2];g[o+(d+4)>>2]=+g[A+4>>2];g[o+(d+8)>>2]=+g[A+8>>2];break}case 16:{g[l>>2]=+g[A>>2];g[o+(d+4)>>2]=+g[A+4>>2];g[o+(d+8)>>2]=+g[A+8>>2];g[o+(d+12)>>2]=+g[A+12>>2];break}case 6:{c[l>>2]=c[A>>2];b[o+(d+4)>>1]=b[A+4>>1]|0;break}case 1:{a[l>>0]=a[A>>0]|0;break}default:{}}m=d+D|0;if(!C){sfa(o+m|0,0,da(D,B+~n|0)|0)|0;i=E;return}if((B|0)==(n+1|0)){i=E;return}d=B+-1-n|0;l=0;do{qfa(o+((da(l,D)|0)+m)|0,k|0,D|0)|0;l=l+1|0}while((l|0)!=(d|0));i=E;return}function g1(e,f,h,j,k,l){e=e|0;f=f|0;h=h|0;j=j|0;k=+k;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;N=i;i=i+16|0;F=N+8|0;E=N;I=N+4|0;C=XH(e)|0;K=XH(f)|0;J=(l|0)!=0;B=J?l:352752;L=eI(e)|0;L=(L>>>0)/((WH(e)|0)>>>0)|0;D=dI(e)|0;M=dI(f)|0;H=da(L,h)|0;o=(fI(e)|0)+H|0;h=(fI(f)|0)+H|0;e=(j|0)>0;if(J){if(e){e=0;while(1){qfa(h|0,l|0,L|0)|0;e=e+1|0;if((e|0)==(j|0))break;else h=h+M|0}}qfa(I|0,l|0,L|0)|0}else{if(e){e=0;while(1){sfa(h|0,0,L|0)|0;e=e+1|0;if((e|0)==(j|0))break;else h=h+M|0}}sfa(I|0,0,L|0)|0}a:do if(C){p=F+2|0;r=F+4|0;t=F+8|0;u=F+12|0;v=(L|0)==0;w=E+2|0;x=E+4|0;y=E+8|0;z=E+12|0;q=H+2|0;s=H+4|0;n=H+8|0;m=H+12|0;A=0;while(1){switch(L|0){case 12:{g[F>>2]=+g[o>>2];g[r>>2]=+g[o+4>>2];g[t>>2]=+g[o+8>>2];break}case 3:{b[F>>1]=b[o>>1]|0;a[p>>0]=a[o+2>>0]|0;break}case 6:{c[F>>2]=c[o>>2];b[r>>1]=b[o+4>>1]|0;break}case 4:{c[F>>2]=c[o>>2];break}case 1:{a[F>>0]=a[o>>0]|0;break}case 16:{g[F>>2]=+g[o>>2];g[r>>2]=+g[o+4>>2];g[t>>2]=+g[o+8>>2];g[u>>2]=+g[o+12>>2];break}case 2:{b[F>>1]=b[o>>1]|0;break}case 8:{c[F>>2]=c[o>>2];c[r>>2]=c[o+4>>2];break}default:{}}if(!v){h=0;do{e=d[B+h>>0]|0;a[E+h>>0]=~~(+(e|0)+ +((d[F+h>>0]|0)-e|0)*k+.5);h=h+1|0}while(h>>>0>>0)}h=A+j|0;b:do if((h|0)>-1&(h|0)<(K|0)){if(v){qJ(f,h)|0;break}else e=0;do{O=F+e|0;a[O>>0]=(d[O>>0]|0)-(d[E+e>>0]|0)+(d[I+e>>0]|0);e=e+1|0}while(e>>>0>>0);h=qJ(f,h)|0;e=h+H|0;switch(L|0){case 12:{g[e>>2]=+g[F>>2];g[h+s>>2]=+g[r>>2];g[h+n>>2]=+g[t>>2];G=41;break b}case 2:{b[e>>1]=b[F>>1]|0;G=36;break b}case 4:{c[e>>2]=c[F>>2];G=38;break b}case 16:{g[e>>2]=+g[F>>2];g[h+s>>2]=+g[r>>2];g[h+n>>2]=+g[t>>2];g[h+m>>2]=+g[u>>2];G=42;break b}case 8:{c[e>>2]=c[F>>2];c[h+s>>2]=c[r>>2];G=40;break b}case 6:{c[e>>2]=c[F>>2];b[h+s>>1]=b[r>>1]|0;G=39;break b}case 1:{a[e>>0]=a[F>>0]|0;G=35;break b}case 3:{G=c[F>>2]|0;b[e>>1]=G;a[h+q>>0]=G>>>16;G=37;break b}default:break b}}else switch(L|0){case 2:{G=36;break}case 8:{G=40;break}case 1:{G=35;break}case 12:{G=41;break}case 3:{G=37;break}case 6:{G=39;break}case 4:{G=38;break}case 16:{G=42;break}default:{}}while(0);if((G|0)==35){G=0;a[I>>0]=a[E>>0]|0}else if((G|0)==36){G=0;b[I>>1]=b[E>>1]|0}else if((G|0)==37){G=0;b[I>>1]=b[E>>1]|0;a[I+2>>0]=a[w>>0]|0}else if((G|0)==38){G=0;c[I>>2]=c[E>>2]}else if((G|0)==39){G=0;c[I>>2]=c[E>>2];b[I+4>>1]=b[x>>1]|0}else if((G|0)==40){G=0;c[I>>2]=c[E>>2];c[I+4>>2]=c[x>>2]}else if((G|0)==41){G=0;g[I>>2]=+g[E>>2];g[I+4>>2]=+g[x>>2];g[I+8>>2]=+g[y>>2]}else if((G|0)==42){G=0;g[I>>2]=+g[E>>2];g[I+4>>2]=+g[x>>2];g[I+8>>2]=+g[y>>2];g[I+12>>2]=+g[z>>2]}A=A+1|0;if((A|0)==(C|0))break a;else o=o+D|0}}while(0);n=C+j|0;if(!((n|0)>-1&(n|0)<(K|0))){i=N;return}m=qJ(f,n)|0;h=m+H|0;switch(L|0){case 16:{g[h>>2]=+g[I>>2];g[m+(H+4)>>2]=+g[I+4>>2];g[m+(H+8)>>2]=+g[I+8>>2];g[m+(H+12)>>2]=+g[I+12>>2];break}case 6:{c[h>>2]=c[I>>2];b[m+(H+4)>>1]=b[I+4>>1]|0;break}case 12:{g[h>>2]=+g[I>>2];g[m+(H+4)>>2]=+g[I+4>>2];g[m+(H+8)>>2]=+g[I+8>>2];break}case 2:{b[h>>1]=b[I>>1]|0;break}case 8:{c[h>>2]=c[I>>2];c[m+(H+4)>>2]=c[I+4>>2];break}case 1:{a[h>>0]=a[I>>0]|0;break}case 3:{b[h>>1]=b[I>>1]|0;a[m+(H+2)>>0]=a[I+2>>0]|0;break}case 4:{c[h>>2]=c[I>>2];break}default:{}}m=n+1|0;n=(m|0)<(K|0);if(!J){if(!n){i=N;return}do{h=h+M|0;sfa(h|0,0,L|0)|0;m=m+1|0}while((m|0)!=(K|0));i=N;return}if(!n){i=N;return}e=l+2|0;r=M+2|0;s=l+4|0;q=M+4|0;t=l+8|0;p=M+8|0;u=l+12|0;o=M+12|0;do{n=h;h=h+M|0;switch(L|0){case 8:{c[h>>2]=c[l>>2];c[n+q>>2]=c[s>>2];break}case 1:{a[h>>0]=a[l>>0]|0;break}case 4:{c[h>>2]=c[l>>2];break}case 6:{c[h>>2]=c[l>>2];b[n+q>>1]=b[s>>1]|0;break}case 16:{g[h>>2]=+g[l>>2];g[n+q>>2]=+g[s>>2];g[n+p>>2]=+g[t>>2];g[n+o>>2]=+g[u>>2];break}case 12:{g[h>>2]=+g[l>>2];g[n+q>>2]=+g[s>>2];g[n+p>>2]=+g[t>>2];break}case 2:{b[h>>1]=b[l>>1]|0;break}case 3:{b[h>>1]=b[l>>1]|0;a[n+r>>0]=a[e>>0]|0;break}default:{}}m=m+1|0}while((m|0)!=(K|0));i=N;return}function h1(d,f,h,j,k,l){d=d|0;f=f|0;h=h|0;j=j|0;k=+k;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;K=i;i=i+32|0;C=K+16|0;B=K;F=K+8|0;y=XH(d)|0;H=XH(f)|0;G=(l|0)!=0;x=G?l:352744;I=eI(d)|0;I=(I>>>0)/((WH(d)|0)>>>0)|0;z=I>>>1;A=dI(d)|0;J=dI(f)|0;E=da(I,h)|0;o=(fI(d)|0)+E|0;h=(fI(f)|0)+E|0;d=(j|0)>0;if(G){if(d){d=0;while(1){qfa(h|0,l|0,I|0)|0;d=d+1|0;if((d|0)==(j|0))break;else h=h+J|0}}qfa(F|0,l|0,I|0)|0}else{if(d){d=0;while(1){sfa(h|0,0,I|0)|0;d=d+1|0;if((d|0)==(j|0))break;else h=h+J|0}}sfa(F|0,0,I|0)|0}a:do if(y){p=C+2|0;r=C+4|0;t=C+8|0;u=C+12|0;v=(z|0)==0;q=E+2|0;s=E+4|0;n=E+8|0;m=E+12|0;w=0;while(1){switch(I|0){case 16:{g[C>>2]=+g[o>>2];g[r>>2]=+g[o+4>>2];g[t>>2]=+g[o+8>>2];g[u>>2]=+g[o+12>>2];break}case 6:{c[C>>2]=c[o>>2];b[r>>1]=b[o+4>>1]|0;break}case 3:{b[C>>1]=b[o>>1]|0;a[p>>0]=a[o+2>>0]|0;break}case 2:{b[C>>1]=b[o>>1]|0;break}case 4:{c[C>>2]=c[o>>2];break}case 1:{a[C>>0]=a[o>>0]|0;break}case 12:{g[C>>2]=+g[o>>2];g[r>>2]=+g[o+4>>2];g[t>>2]=+g[o+8>>2];break}case 8:{c[C>>2]=c[o>>2];c[r>>2]=c[o+4>>2];break}default:{}}if(!v){h=0;do{d=e[x+(h<<1)>>1]|0;b[B+(h<<1)>>1]=~~(+(d|0)+ +((e[C+(h<<1)>>1]|0)-d|0)*k+.5);h=h+1|0}while(h>>>0>>0)}h=w+j|0;b:do if((h|0)>-1&(h|0)<(H|0)){if(!v){d=0;do{L=C+(d<<1)|0;b[L>>1]=(e[L>>1]|0)-(e[B+(d<<1)>>1]|0)+(e[F+(d<<1)>>1]|0);d=d+1|0}while(d>>>0>>0)}h=qJ(f,h)|0;d=h+E|0;switch(I|0){case 3:{D=c[C>>2]|0;b[d>>1]=D;a[h+q>>0]=D>>>16;D=36;break b}case 8:{c[d>>2]=c[C>>2];c[h+s>>2]=c[r>>2];D=39;break b}case 1:{a[d>>0]=a[C>>0]|0;D=34;break b}case 12:{g[d>>2]=+g[C>>2];g[h+s>>2]=+g[r>>2];g[h+n>>2]=+g[t>>2];D=40;break b}case 16:{g[d>>2]=+g[C>>2];g[h+s>>2]=+g[r>>2];g[h+n>>2]=+g[t>>2];g[h+m>>2]=+g[u>>2];D=41;break b}case 2:{b[d>>1]=b[C>>1]|0;D=35;break b}case 4:{c[d>>2]=c[C>>2];D=37;break b}case 6:{c[d>>2]=c[C>>2];b[h+s>>1]=b[r>>1]|0;D=38;break b}default:break b}}else switch(I|0){case 4:{D=37;break}case 8:{D=39;break}case 12:{D=40;break}case 16:{D=41;break}case 2:{D=35;break}case 1:{D=34;break}case 3:{D=36;break}case 6:{D=38;break}default:{}}while(0);if((D|0)==34){D=0;a[F>>0]=a[B>>0]|0}else if((D|0)==35){D=0;b[F>>1]=b[B>>1]|0}else if((D|0)==36){D=0;b[F>>1]=b[B>>1]|0;a[F+2>>0]=a[B+2>>0]|0}else if((D|0)==37){D=0;c[F>>2]=c[B>>2]}else if((D|0)==38){D=0;c[F>>2]=c[B>>2];b[F+4>>1]=b[B+4>>1]|0}else if((D|0)==39){D=0;c[F>>2]=c[B>>2];c[F+4>>2]=c[B+4>>2]}else if((D|0)==40){D=0;g[F>>2]=+g[B>>2];g[F+4>>2]=+g[B+4>>2];g[F+8>>2]=+g[B+8>>2]}else if((D|0)==41){D=0;g[F>>2]=+g[B>>2];g[F+4>>2]=+g[B+4>>2];g[F+8>>2]=+g[B+8>>2];g[F+12>>2]=+g[B+12>>2]}w=w+1|0;if((w|0)==(y|0))break a;else o=o+A|0}}while(0);n=y+j|0;if(!((n|0)>-1&(n|0)<(H|0))){i=K;return}m=qJ(f,n)|0;h=m+E|0;switch(I|0){case 4:{c[h>>2]=c[F>>2];break}case 1:{a[h>>0]=a[F>>0]|0;break}case 2:{b[h>>1]=b[F>>1]|0;break}case 3:{b[h>>1]=b[F>>1]|0;a[m+(E+2)>>0]=a[F+2>>0]|0;break}case 6:{c[h>>2]=c[F>>2];b[m+(E+4)>>1]=b[F+4>>1]|0;break}case 12:{g[h>>2]=+g[F>>2];g[m+(E+4)>>2]=+g[F+4>>2];g[m+(E+8)>>2]=+g[F+8>>2];break}case 8:{c[h>>2]=c[F>>2];c[m+(E+4)>>2]=c[F+4>>2];break}case 16:{g[h>>2]=+g[F>>2];g[m+(E+4)>>2]=+g[F+4>>2];g[m+(E+8)>>2]=+g[F+8>>2];g[m+(E+12)>>2]=+g[F+12>>2];break}default:{}}m=n+1|0;n=(m|0)<(H|0);if(!G){if(!n){i=K;return}do{h=h+J|0;sfa(h|0,0,I|0)|0;m=m+1|0}while((m|0)!=(H|0));i=K;return}if(!n){i=K;return}d=l+2|0;r=J+2|0;s=l+4|0;q=J+4|0;t=l+8|0;p=J+8|0;u=l+12|0;o=J+12|0;do{n=h;h=h+J|0;switch(I|0){case 12:{g[h>>2]=+g[l>>2];g[n+q>>2]=+g[s>>2];g[n+p>>2]=+g[t>>2];break}case 1:{a[h>>0]=a[l>>0]|0;break}case 4:{c[h>>2]=c[l>>2];break}case 6:{c[h>>2]=c[l>>2];b[n+q>>1]=b[s>>1]|0;break}case 8:{c[h>>2]=c[l>>2];c[n+q>>2]=c[s>>2];break}case 16:{g[h>>2]=+g[l>>2];g[n+q>>2]=+g[s>>2];g[n+p>>2]=+g[t>>2];g[n+o>>2]=+g[u>>2];break}case 3:{b[h>>1]=b[l>>1]|0;a[n+r>>0]=a[d>>0]|0;break}case 2:{b[h>>1]=b[l>>1]|0;break}default:{}}m=m+1|0}while((m|0)!=(H|0));i=K;return}function i1(d,e,f,h,j,k){d=d|0;e=e|0;f=f|0;h=h|0;j=+j;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0;J=i;i=i+48|0;B=J+32|0;A=J;E=J+16|0;x=XH(d)|0;G=XH(e)|0;F=(k|0)!=0;w=F?k:352728;H=eI(d)|0;H=(H>>>0)/((WH(d)|0)>>>0)|0;y=H>>>2;z=dI(d)|0;I=dI(e)|0;D=da(H,f)|0;n=(fI(d)|0)+D|0;f=(fI(e)|0)+D|0;d=(h|0)>0;if(F){if(d){d=0;while(1){qfa(f|0,k|0,H|0)|0;d=d+1|0;if((d|0)==(h|0))break;else f=f+I|0}}qfa(E|0,k|0,H|0)|0}else{if(d){d=0;while(1){sfa(f|0,0,H|0)|0;d=d+1|0;if((d|0)==(h|0))break;else f=f+I|0}}sfa(E|0,0,H|0)|0}a:do if(x){o=B+2|0;q=B+4|0;s=B+8|0;t=B+12|0;u=(y|0)==0;p=D+2|0;r=D+4|0;m=D+8|0;l=D+12|0;v=0;while(1){switch(H|0){case 8:{c[B>>2]=c[n>>2];c[q>>2]=c[n+4>>2];break}case 3:{b[B>>1]=b[n>>1]|0;a[o>>0]=a[n+2>>0]|0;break}case 4:{c[B>>2]=c[n>>2];break}case 16:{g[B>>2]=+g[n>>2];g[q>>2]=+g[n+4>>2];g[s>>2]=+g[n+8>>2];g[t>>2]=+g[n+12>>2];break}case 12:{g[B>>2]=+g[n>>2];g[q>>2]=+g[n+4>>2];g[s>>2]=+g[n+8>>2];break}case 6:{c[B>>2]=c[n>>2];b[q>>1]=b[n+4>>1]|0;break}case 2:{b[B>>1]=b[n>>1]|0;break}case 1:{a[B>>0]=a[n>>0]|0;break}default:{}}if(!u){f=0;do{K=+g[w+(f<<2)>>2];g[A+(f<<2)>>2]=K+(+g[B+(f<<2)>>2]-K)*j+.5;f=f+1|0}while(f>>>0>>0)}f=v+h|0;b:do if((f|0)>-1&(f|0)<(G|0)){if(!u){d=0;do{L=B+(d<<2)|0;g[L>>2]=+g[L>>2]-(+g[A+(d<<2)>>2]-+g[E+(d<<2)>>2]);d=d+1|0}while(d>>>0>>0)}f=qJ(e,f)|0;d=f+D|0;switch(H|0){case 3:{C=c[B>>2]|0;b[d>>1]=C;a[f+p>>0]=C>>>16;C=36;break b}case 2:{b[d>>1]=b[B>>1]|0;C=35;break b}case 6:{c[d>>2]=c[B>>2];b[f+r>>1]=b[q>>1]|0;C=38;break b}case 16:{g[d>>2]=+g[B>>2];g[f+r>>2]=+g[q>>2];g[f+m>>2]=+g[s>>2];g[f+l>>2]=+g[t>>2];C=41;break b}case 1:{a[d>>0]=a[B>>0]|0;C=34;break b}case 8:{c[d>>2]=c[B>>2];c[f+r>>2]=c[q>>2];C=39;break b}case 12:{g[d>>2]=+g[B>>2];g[f+r>>2]=+g[q>>2];g[f+m>>2]=+g[s>>2];C=40;break b}case 4:{c[d>>2]=c[B>>2];C=37;break b}default:break b}}else switch(H|0){case 3:{C=36;break}case 6:{C=38;break}case 4:{C=37;break}case 2:{C=35;break}case 8:{C=39;break}case 16:{C=41;break}case 12:{C=40;break}case 1:{C=34;break}default:{}}while(0);if((C|0)==34){C=0;a[E>>0]=a[A>>0]|0}else if((C|0)==35){C=0;b[E>>1]=b[A>>1]|0}else if((C|0)==36){C=0;b[E>>1]=b[A>>1]|0;a[E+2>>0]=a[A+2>>0]|0}else if((C|0)==37){C=0;c[E>>2]=c[A>>2]}else if((C|0)==38){C=0;c[E>>2]=c[A>>2];b[E+4>>1]=b[A+4>>1]|0}else if((C|0)==39){C=0;c[E>>2]=c[A>>2];c[E+4>>2]=c[A+4>>2]}else if((C|0)==40){C=0;g[E>>2]=+g[A>>2];g[E+4>>2]=+g[A+4>>2];g[E+8>>2]=+g[A+8>>2]}else if((C|0)==41){C=0;g[E>>2]=+g[A>>2];g[E+4>>2]=+g[A+4>>2];g[E+8>>2]=+g[A+8>>2];g[E+12>>2]=+g[A+12>>2]}v=v+1|0;if((v|0)==(x|0))break a;else n=n+z|0}}while(0);m=x+h|0;if(!((m|0)>-1&(m|0)<(G|0))){i=J;return}l=qJ(e,m)|0;f=l+D|0;switch(H|0){case 1:{a[f>>0]=a[E>>0]|0;break}case 6:{c[f>>2]=c[E>>2];b[l+(D+4)>>1]=b[E+4>>1]|0;break}case 8:{c[f>>2]=c[E>>2];c[l+(D+4)>>2]=c[E+4>>2];break}case 16:{g[f>>2]=+g[E>>2];g[l+(D+4)>>2]=+g[E+4>>2];g[l+(D+8)>>2]=+g[E+8>>2];g[l+(D+12)>>2]=+g[E+12>>2];break}case 12:{g[f>>2]=+g[E>>2];g[l+(D+4)>>2]=+g[E+4>>2];g[l+(D+8)>>2]=+g[E+8>>2];break}case 2:{b[f>>1]=b[E>>1]|0;break}case 3:{b[f>>1]=b[E>>1]|0;a[l+(D+2)>>0]=a[E+2>>0]|0;break}case 4:{c[f>>2]=c[E>>2];break}default:{}}l=m+1|0;m=(l|0)<(G|0);if(!F){if(!m){i=J;return}do{f=f+I|0;sfa(f|0,0,H|0)|0;l=l+1|0}while((l|0)!=(G|0));i=J;return}if(!m){i=J;return}d=k+2|0;q=I+2|0;r=k+4|0;p=I+4|0;s=k+8|0;o=I+8|0;t=k+12|0;n=I+12|0;do{m=f;f=f+I|0;switch(H|0){case 12:{g[f>>2]=+g[k>>2];g[m+p>>2]=+g[r>>2];g[m+o>>2]=+g[s>>2];break}case 16:{g[f>>2]=+g[k>>2];g[m+p>>2]=+g[r>>2];g[m+o>>2]=+g[s>>2];g[m+n>>2]=+g[t>>2];break}case 3:{b[f>>1]=b[k>>1]|0;a[m+q>>0]=a[d>>0]|0;break}case 1:{a[f>>0]=a[k>>0]|0;break}case 2:{b[f>>1]=b[k>>1]|0;break}case 4:{c[f>>2]=c[k>>2];break}case 6:{c[f>>2]=c[k>>2];b[m+p>>1]=b[r>>1]|0;break}case 8:{c[f>>2]=c[k>>2];c[m+p>>2]=c[r>>2];break}default:{}}l=l+1|0}while((l|0)!=(G|0));i=J;return}function j1(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;j=n;m=n+8|0;if(!a)Ra(236352,236248,8302,247704);if(!f)Ra(249008,236248,8303,247704);if(!d)Ra(250152,236248,8304,247704);h=a+8|0;if((c[h>>2]|0)==16)g=(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)|0;else g=c[a+12>>2]|0;if((c[(c[a+80>>2]|0)+16>>2]|0)>>>0<=b>>>0)Ra(247736,236248,8312,247704);k=c[g+5576>>2]|0;if((c[e>>2]|0)>>>0<5){ry(f,1,247784,j)|0;e=0;i=n;return e|0}l=k+(b*1080|0)+4|0;Hx(d,l,1);g=(c[l>>2]|0)+1|0;c[l>>2]=g;if(g>>>0>33){c[j>>2]=g;c[j+4>>2]=33;ry(f,1,247824,j)|0;e=0;i=n;return e|0}if((c[a+160>>2]|0)>>>0>=g>>>0){c[j>>2]=b;ry(f,1,247904,j)|0;c[h>>2]=c[h>>2]|32768;e=0;i=n;return e|0}h=k+(b*1080|0)+8|0;Hx(d+1|0,h,1);c[h>>2]=(c[h>>2]|0)+2;h=k+(b*1080|0)+12|0;Hx(d+2|0,h,1);c[h>>2]=(c[h>>2]|0)+2;Hx(d+3|0,k+(b*1080|0)+16|0,1);Hx(d+4|0,k+(b*1080|0)+20|0,1);h=(c[e>>2]|0)+-5|0;c[e>>2]=h;g=c[l>>2]|0;if(!(c[k+(b*1080|0)>>2]&1)){if(!g){e=1;i=n;return e|0}else g=0;do{c[k+(b*1080|0)+(g<<2)+812>>2]=15;c[k+(b*1080|0)+(g<<2)+944>>2]=15;g=g+1|0}while(g>>>0<(c[l>>2]|0)>>>0);g=1;i=n;return g|0}if(h>>>0>>0){ry(f,1,247784,j)|0;e=0;i=n;return e|0}if(!g)g=0;else{a=0;h=d+5|0;while(1){Hx(h,m,1);c[k+(b*1080|0)+(a<<2)+812>>2]=c[m>>2]&15;c[k+(b*1080|0)+(a<<2)+944>>2]=(c[m>>2]|0)>>>4;a=a+1|0;g=c[l>>2]|0;if(a>>>0>=g>>>0)break;else h=h+1|0}h=c[e>>2]|0}c[e>>2]=h-g;e=1;i=n;return e|0}function k1(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;j=o;l=o+12|0;if(!a)Ra(236352,236248,8554,247256);if(!f)Ra(249008,236248,8555,247256);if(!d)Ra(250152,236248,8556,247256);if((c[a+8>>2]|0)==16)g=(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)|0;else g=c[a+12>>2]|0;if((c[(c[a+80>>2]|0)+16>>2]|0)>>>0<=b>>>0)Ra(238800,236248,8565,247256);n=c[g+5576>>2]|0;g=c[e>>2]|0;if(!g){ry(f,1,247280,j)|0;b=0;i=o;return b|0}c[e>>2]=g+-1;Hx(d,l,1);a=d+1|0;h=c[l>>2]&31;k=n+(b*1080|0)+24|0;c[k>>2]=h;c[n+(b*1080|0)+804>>2]=(c[l>>2]|0)>>>5;do if((h|0)==1){g=1;m=16}else{g=(c[e>>2]|0)>>>((h|0)!=0&1);if(g>>>0>97){c[j>>2]=g;c[j+4>>2]=97;c[j+8>>2]=97;ry(f,2,247320,j)|0;h=c[k>>2]|0}f=(g|0)==0;if(h)if(f){g=0;m=28;break}else{m=16;break}if(!f){f=d;h=0;while(1){Hx(a,l,1);if(h>>>0<97){c[n+(b*1080|0)+(h<<3)+28>>2]=(c[l>>2]|0)>>>3;c[n+(b*1080|0)+(h<<3)+32>>2]=0}h=h+1|0;if((h|0)==(g|0))break;else{j=a;a=f+2|0;f=j}}}g=(c[e>>2]|0)-g|0}while(0);if((m|0)==16){h=0;while(1){Hx(a,l,2);if(h>>>0<97){c[n+(b*1080|0)+(h<<3)+28>>2]=(c[l>>2]|0)>>>11;c[n+(b*1080|0)+(h<<3)+32>>2]=c[l>>2]&2047}h=h+1|0;if((h|0)==(g|0)){m=28;break}else a=a+2|0}}if((m|0)==28)g=(c[e>>2]|0)-(g<<1)|0;c[e>>2]=g;if((c[k>>2]|0)!=1){b=1;i=o;return b|0}g=n+(b*1080|0)+28|0;a=n+(b*1080|0)+32|0;h=1;do{e=(c[g>>2]|0)-(((h+-1|0)>>>0)/3|0)|0;c[n+(b*1080|0)+(h<<3)+28>>2]=(e|0)>0?e:0;c[n+(b*1080|0)+(h<<3)+32>>2]=c[a>>2];h=h+1|0}while((h|0)!=97);g=1;i=o;return g|0}function l1(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;j=c[b+124>>2]|0;q=c[b+56>>2]|0;w=c[b+108>>2]|0;x=q+w|0;i=c[b+120>>2]|0;m=c[b+144>>2]|0;l=(c[b+44>>2]|0)+-262|0;l=w>>>0>l>>>0?w-l|0:0;n=c[b+64>>2]|0;o=c[b+52>>2]|0;p=q+(w+258)|0;y=c[b+116>>2]|0;m=m>>>0>y>>>0?y:m;r=b+112|0;s=q+(w+1)|0;t=q+(w+2)|0;u=p;v=w+257|0;k=d;d=i;j=i>>>0<(c[b+140>>2]|0)>>>0?j:j>>>2;h=a[q+(i+w)>>0]|0;i=a[q+(w+-1+i)>>0]|0;while(1){f=q+k|0;if((((a[q+(k+d)>>0]|0)==h<<24>>24?(a[q+(d+-1+k)>>0]|0)==i<<24>>24:0)?(a[f>>0]|0)==(a[x>>0]|0):0)?(a[q+(k+1)>>0]|0)==(a[s>>0]|0):0){g=q+(k+2)|0;b=t;do{f=b+1|0;if((a[f>>0]|0)!=(a[g+1>>0]|0)){b=f;break}f=b+2|0;if((a[f>>0]|0)!=(a[g+2>>0]|0)){b=f;break}f=b+3|0;if((a[f>>0]|0)!=(a[g+3>>0]|0)){b=f;break}f=b+4|0;if((a[f>>0]|0)!=(a[g+4>>0]|0)){b=f;break}f=b+5|0;if((a[f>>0]|0)!=(a[g+5>>0]|0)){b=f;break}f=b+6|0;if((a[f>>0]|0)!=(a[g+6>>0]|0)){b=f;break}f=b+7|0;if((a[f>>0]|0)!=(a[g+7>>0]|0)){b=f;break}b=b+8|0;g=g+8|0}while(b>>>0

>>0?(a[b>>0]|0)==(a[g>>0]|0):0);g=b-u|0;b=g+258|0;if((b|0)>(d|0)){c[r>>2]=k;if((b|0)>=(m|0)){d=b;b=20;break}d=b;f=a[q+(b+w)>>0]|0;b=a[q+(v+g)>>0]|0}else{f=h;b=i}}else{f=h;b=i}k=e[n+((k&o)<<1)>>1]|0;if(k>>>0<=l>>>0){b=20;break}j=j+-1|0;if(!j){b=20;break}else{h=f;i=b}}if((b|0)==20)return (d>>>0>y>>>0?y:d)|0;return 0} -function pZ(b,f,g,h){b=b|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;i=a[f>>0]|0;p=(h|0)>0;a:do if(i<<24>>24>-1&p){if((h|0)>63){b:do if(!(f&3)){i=f;k=h;j=0}else{l=f;k=h;j=0;while(1){if(i<<24>>24)break;j=j+8|0;k=k+-8|0;i=l+1|0;if(!(i&3))break b;l=i;i=a[i>>0]|0}j=(d[115672+(i&255)>>0]|0)+j|0;break a}while(0);c:do if((k|0)>31)do{if(c[i>>2]|0)break c;j=j+32|0;k=k+-32|0;i=i+4|0}while((k|0)>31);while(0)}else{i=f;k=h;j=0}d:do if((k|0)>7){l=i;while(1){i=a[l>>0]|0;if(i<<24>>24)break;j=j+8|0;k=k+-8|0;i=l+1|0;if((k|0)>7)l=i;else break d}j=(d[115672+(i&255)>>0]|0)+j|0;break a}while(0);if((k|0)>0){v=d[115672+(d[i>>0]|0)>>0]|0;j=((v|0)>(k|0)?k:v)+j|0}}else j=0;while(0);k=a[g>>0]|0;e:do if(k<<24>>24>-1&p){if((h|0)>63){f:do if(!(g&3)){k=g;l=h;i=0}else{m=g;l=h;i=0;while(1){if(k<<24>>24)break;i=i+8|0;l=l+-8|0;k=m+1|0;if(!(k&3))break f;m=k;k=a[k>>0]|0}i=(d[115672+(k&255)>>0]|0)+i|0;break e}while(0);g:do if((l|0)>31)do{if(c[k>>2]|0)break g;i=i+32|0;l=l+-32|0;k=k+4|0}while((l|0)>31);while(0)}else{k=g;l=h;i=0}h:do if((l|0)>7){m=k;while(1){k=a[m>>0]|0;if(k<<24>>24)break;i=i+8|0;l=l+-8|0;k=m+1|0;if((l|0)>7)m=k;else break h}i=(d[115672+(k&255)>>0]|0)+i|0;break e}while(0);if((l|0)>0){v=d[115672+(d[k>>0]|0)>>0]|0;i=((v|0)>(l|0)?l:v)+i|0}}else i=0;while(0);s=b+576|0;t=b+608|0;u=b+592|0;v=b+604|0;r=0;while(1){if(i>>>0>>0){if(!((d[g+(i>>>3)>>0]|0)&1<<(i&7^7)))l=p1(g,i,h)|0;else l=o1(g,i,h)|0;p=l+i|0}else p=h;do if(p>>>0>>0){o=c[s>>2]|0;n=o+52|0;l=c[n>>2]|0;o=o+48|0;j=c[o>>2]|0;if(l>>>0<4){i=4;k=c[t>>2]|0;while(1){i=i-l|0;if((k|0)>=(c[u>>2]|0))vx(b)|0;k=c[v>>2]|0;c[v>>2]=k+1;a[k>>0]=1>>>i|j;k=(c[t>>2]|0)+1|0;c[t>>2]=k;if(i>>>0<=8){m=i;k=8;i=0;break}else{l=8;j=0}}}else{m=4;k=l;i=j}l=k-m|0;i=(c[115232+(m<<2)>>2]&1)<>2]|0)>=(c[u>>2]|0))vx(b)|0;l=c[v>>2]|0;c[v>>2]=l+1;a[l>>0]=i;c[t>>2]=(c[t>>2]|0)+1;l=8;i=0}c[o>>2]=i;c[n>>2]=l;j=p}else{i=i-j+3|0;if(i>>>0<7){qZ(b,e[115330+(i*6|0)>>1]|0,e[115328+(i*6|0)>>1]|0);break}if(j>>>0>>0){if(!((d[f+(j>>>3)>>0]|0)&1<<(j&7^7)))i=p1(f,j,h)|0;else i=o1(f,j,h)|0;q=i+j|0}else q=h;p=c[s>>2]|0;o=p+52|0;l=c[o>>2]|0;p=p+48|0;k=c[p>>2]|0;if(l>>>0<3){i=3;n=c[t>>2]|0;while(1){i=i-l|0;if((n|0)>=(c[u>>2]|0))vx(b)|0;n=c[v>>2]|0;c[v>>2]=n+1;a[n>>0]=1>>>i|k;n=(c[t>>2]|0)+1|0;c[t>>2]=n;if(i>>>0<=8){n=i;m=8;i=0;break}else{l=8;k=0}}}else{n=3;m=l;i=k}l=m-n|0;i=(c[115232+(n<<2)>>2]&1)<>2]|0)>=(c[u>>2]|0))vx(b)|0;l=c[v>>2]|0;c[v>>2]=l+1;a[l>>0]=i;c[t>>2]=(c[t>>2]|0)+1;l=8;i=0}c[p>>2]=i;c[o>>2]=l;if((r|0)!=(0-j|0)?((d[f+(r>>>3)>>0]|0)&1<<(r&7^7)|0)!=0:0){q1(b,j-r|0,114032);q1(b,q-j|0,113376);j=q;break}q1(b,j-r|0,113376);q1(b,q-j|0,114032);j=q}while(0);if(j>>>0>=h>>>0)break;if(!((d[f+(j>>>3)>>0]|0)&1<<(j&7^7))){i=p1(f,j,h)|0;k=(o1(g,j,h)|0)+j|0;l=p1(g,k,h)|0}else{i=o1(f,j,h)|0;k=(p1(g,j,h)|0)+j|0;l=o1(g,k,h)|0}r=j;j=i+j|0;i=l+k|0}return}function qZ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c[b+576>>2]|0;n=o+52|0;i=c[n>>2]|0;o=o+48|0;m=c[o>>2]|0;if(i>>>0>=e>>>0)if(e>>>0<9){g=e;h=i;f=m}else Ra(115200,114720,608,115216);else{j=b+608|0;k=b+592|0;l=b+604|0;g=c[j>>2]|0;h=i;f=m;while(1){e=e-h|0;if((g|0)>=(c[k>>2]|0))vx(b)|0;g=c[l>>2]|0;c[l>>2]=g+1;a[g>>0]=d>>>e|f;g=(c[j>>2]|0)+1|0;c[j>>2]=g;if(e>>>0<=8){g=e;h=8;f=0;break}else{h=8;f=0}}}e=h-g|0;f=(c[115232+(g<<2)>>2]&d)<>2]=d;c[n>>2]=b;return}e=b+608|0;if((c[e>>2]|0)>=(c[b+592>>2]|0))vx(b)|0;d=b+604|0;b=c[d>>2]|0;c[d>>2]=b+1;a[b>>0]=f;c[e>>2]=(c[e>>2]|0)+1;b=8;d=0;c[o>>2]=d;c[n>>2]=b;return}function rZ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=4;f=qea(40)|0;c[f>>2]=0;e=Afa(a+592|0,1,f|0,e|0)|0;f=H;s=0;b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,e|0,f|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else b=0;while(1){if(b){g=6;break}s=0;ka(313,a|0);b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,e|0,f|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else break}if((g|0)==6){rea(e|0);return}rea(e|0);return}function sZ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=4;h=qea(40)|0;c[h>>2]=0;b=a+460|0;s=0;d=na(224,b|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){f=Cfa(c[e>>2]|0,h|0,g|0)|0;if(!f)Ua(e|0,t|0);H=t}else f=-1;if((f|0)!=1){c[a>>2]=d;c[b>>2]=314;c[a+468>>2]=315;h=Afa(a+592|0,1,h|0,g|0)|0;g=H;s=0;b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,h|0,g|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)!=1)b=0;else b=H}else b=H;while(1){if(b){b=0;i=7;break}s=0;Da(125,a|0,90,456);b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,h|0,g|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else break}if((i|0)==7){rea(h|0);return b|0}g=1;rea(h|0);return g|0}function tZ(a){a=a|0;var b=0;b=c[a>>2]|0;c[b+20>>2]=123;Cd[c[b+4>>2]&255](a,-1);c[a+768>>2]=219472;c[a+772>>2]=2;return 1}function uZ(a,b){a=a|0;b=b|0;var d=0,e=0;if((b|0)<=0)return;d=a+772|0;e=c[d>>2]|0;if(e>>>0>>0){b=c[a>>2]|0;c[b+20>>2]=123;Cd[c[b+4>>2]&255](a,-1);c[a+768>>2]=219472;c[d>>2]=2;return}else{a=a+768|0;c[a>>2]=(c[a>>2]|0)+b;c[d>>2]=e-b;return}}function vZ(a){a=a|0;return}function wZ(a){a=a|0;c[a+768>>2]=c[a+880>>2];c[a+772>>2]=c[a+884>>2];return}function xZ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=4;g=qea(40)|0;c[g>>2]=0;h=Afa(a+592|0,1,g|0,h|0)|0;g=H;s=0;d=s;s=0;if((d|0)!=0&(t|0)!=0){e=Cfa(c[d>>2]|0,h|0,g|0)|0;if(!e)Ua(d|0,t|0);H=t}else e=-1;if((e|0)==1)d=H;else d=0;while(1){if(d){d=-1;i=6;break}s=0;d=ya(282,a|0,b|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){f=Cfa(c[e>>2]|0,h|0,g|0)|0;if(!f)Ua(e|0,t|0);H=t}else f=-1;if((f|0)==1)d=H;else break}if((i|0)==6){rea(h|0);return d|0}g=d;rea(h|0);return g|0}function yZ(a){a=a|0;var b=0;b=c[a+796>>2]|0;c[a+768>>2]=c[b+588>>2];c[a+772>>2]=c[b+608>>2];return}function zZ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=4;e=qea(40)|0;c[e>>2]=0;f=Afa(a+592|0,1,e|0,f|0)|0;e=H;s=0;b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,f|0,e|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else b=0;while(1){if(b){b=0;g=6;break}s=0;ka(316,a|0);b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,f|0,e|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else break}if((g|0)==6){rea(f|0);return b|0}g=1;rea(f|0);return g|0}function AZ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=i;i=i+16|0;Yv(c[a+628>>2]|0,219264,219288,e);i=e;return 0}function BZ(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=i;i=i+16|0;L=M;K=c[b+576>>2]|0;h=c[K+32>>2]|0;a:do if(h){I=K+196|0;J=c[(c[I>>2]|0)+132>>2]|0;x=c[K+856>>2]|0;y=K+808|0;z=K+852|0;A=K+284|0;B=K+812|0;C=K+36|0;D=K+804|0;E=b+444|0;F=J+-1|0;G=da(x,F)|0;H=(J|0)==0;g=c[y>>2]|0;b:while(1){if((f|0)<(g|0)){d=4;break}g=c[z>>2]|0;if((g|0)>7){w=c[A>>2]<<3;if((t1(K,B,w)|0)!=(w|0)){g=0;d=30;break}c[z>>2]=0;g=0}if((c[C>>2]|0)>0){v=0;g=0;w=c[I>>2]|0;while(1){p=c[w+8>>2]|0;q=c[w+12>>2]|0;if((q|0)>0){r=B+(v<<2)|0;s=p+G|0;t=(p|0)==1;u=(p|0)>0;o=0;do{j=(da(c[z>>2]|0,q)|0)+o|0;j=c[(c[r>>2]|0)+(j<<2)>>2]|0;k=d+g|0;if((f|0)<(s+g|0)){d=13;break b}c:do if(t){if(!H){l=J;while(1){l=l+-1|0;a[k>>0]=a[j>>0]|0;if(!l)break;else{j=j+1|0;k=k+x|0}}}}else if(!H){if(u)n=F;else{j=F;while(1)if(!j)break c;else j=j+-1|0}while(1){l=j;m=0;while(1){a[k+m>>0]=a[l>>0]|0;m=m+1|0;if((m|0)==(p|0))break;else l=l+1|0}if(!n)break;else{n=n+-1|0;j=j+p|0;k=k+x|0}}}while(0);g=g+p|0;o=o+1|0}while((o|0)<(q|0))}v=v+1|0;if((v|0)>=(c[C>>2]|0))break;else w=w+88|0}g=c[z>>2]|0}c[z>>2]=g+1;w=e[D>>1]|0;c[E>>2]=(c[E>>2]|0)+w;g=c[y>>2]|0;h=h-w|0;if((h|0)<=0)break a;else{d=d+g|0;f=f-g|0}}if((d|0)==4){Yv(c[b+628>>2]|0,219112,219128,L);L=0;i=M;return L|0}else if((d|0)==13){Yv(c[b+628>>2]|0,219112,219184,L);L=0;i=M;return L|0}else if((d|0)==30){i=M;return g|0}}while(0);if((c[K+120>>2]|0)>>>0<(c[K+96>>2]|0)>>>0)g=1;else g=(FZ(K)|0)!=0;L=g&1;i=M;return L|0}function CZ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=4;e=qea(40)|0;c[e>>2]=0;f=Afa(a+592|0,1,e|0,f|0)|0;e=H;s=0;b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,f|0,e|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else b=0;while(1){if(b){b=0;g=6;break}s=0;na(227,a|0)|0;b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,f|0,e|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else break}if((g|0)==6){rea(f|0);return b|0}g=1;rea(f|0);return g|0}function DZ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=4;h=qea(40)|0;c[h>>2]=0;i=Afa(a+592|0,1,h|0,i|0)|0;h=H;s=0;e=s;s=0;if((e|0)!=0&(t|0)!=0){f=Cfa(c[e>>2]|0,i|0,h|0)|0;if(!f)Ua(e|0,t|0);H=t}else f=-1;if((f|0)==1)e=H;else e=0;while(1){if(e){e=0;j=6;break}s=0;g=Ga(c[(c[a+4>>2]|0)+8>>2]|0,a|0,1,b|0,d|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){f=Cfa(c[e>>2]|0,i|0,h|0)|0;if(!f)Ua(e|0,t|0);H=t}else f=-1;if((f|0)==1)e=H;else break}if((j|0)==6){rea(i|0);return e|0}h=g;rea(i|0);return h|0}function EZ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=4;g=qea(40)|0;c[g>>2]=0;h=Afa(a+592|0,1,g|0,h|0)|0;g=H;s=0;d=s;s=0;if((d|0)!=0&(t|0)!=0){e=Cfa(c[d>>2]|0,h|0,g|0)|0;if(!e)Ua(d|0,t|0);H=t}else e=-1;if((e|0)==1)d=H;else d=0;while(1){if(d){d=-1;i=6;break}s=0;d=qa(186,a|0,b|0,1)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){f=Cfa(c[e>>2]|0,h|0,g|0)|0;if(!f)Ua(e|0,t|0);H=t}else f=-1;if((f|0)==1)d=H;else break}if((i|0)==6){rea(h|0);return d|0}g=d;rea(h|0);return g|0}function FZ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=4;f=qea(40)|0;c[f>>2]=0;g=Afa(a+592|0,1,f|0,g|0)|0;f=H;s=0;b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,g|0,f|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else b=0;while(1){if(b){b=-1;h=6;break}s=0;b=na(234,a|0)|0;d=s;s=0;if((d|0)!=0&(t|0)!=0){e=Cfa(c[d>>2]|0,g|0,f|0)|0;if(!e)Ua(d|0,t|0);H=t}else e=-1;if((e|0)==1)b=H;else break}if((h|0)==6){rea(g|0);return b|0}h=b&255;rea(g|0);return h|0}function GZ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=4;h=qea(40)|0;c[h>>2]=0;b=a+460|0;s=0;d=na(224,b|0)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){f=Cfa(c[e>>2]|0,h|0,g|0)|0;if(!f)Ua(e|0,t|0);H=t}else f=-1;if((f|0)!=1){c[a>>2]=d;c[b>>2]=314;c[a+468>>2]=315;h=Afa(a+592|0,1,h|0,g|0)|0;g=H;s=0;b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,h|0,g|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)!=1)b=0;else b=H}else b=H;while(1){if(b){b=0;i=7;break}s=0;Da(128,a|0,90,424);b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,h|0,g|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else break}if((i|0)==7){rea(h|0);return b|0}g=1;rea(h|0);return g|0}function HZ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=4;e=qea(40)|0;c[e>>2]=0;f=Afa(a+592|0,1,e|0,f|0)|0;e=H;s=0;b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,f|0,e|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else b=0;while(1){if(b){b=0;g=6;break}s=0;ka(301,a|0);b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,f|0,e|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else break}if((g|0)==6){rea(f|0);return b|0}g=1;rea(f|0);return g|0}function IZ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=4;f=qea(40)|0;c[f>>2]=0;g=Afa(a+592|0,1,f|0,g|0)|0;f=H;s=0;d=s;s=0;if((d|0)!=0&(t|0)!=0){e=Cfa(c[d>>2]|0,g|0,f|0)|0;if(!e)Ua(d|0,t|0);H=t}else e=-1;if((e|0)==1)d=H;else d=0;while(1){if(d){d=0;h=6;break}s=0;Da(129,a|0,b|0,0);d=s;s=0;if((d|0)!=0&(t|0)!=0){e=Cfa(c[d>>2]|0,g|0,f|0)|0;if(!e)Ua(d|0,t|0);H=t}else e=-1;if((e|0)==1)d=H;else break}if((h|0)==6){rea(g|0);return d|0}h=1;rea(g|0);return h|0}function JZ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=4;e=qea(40)|0;c[e>>2]=0;f=Afa(a+592|0,1,e|0,f|0)|0;e=H;s=0;b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,f|0,e|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else b=0;while(1){if(b){b=0;g=6;break}s=0;la(147,a|0,1);b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,f|0,e|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else break}if((g|0)==6){rea(f|0);return b|0}g=1;rea(f|0);return g|0}function KZ(a){a=a|0;c[a+748>>2]=c[a+880>>2];c[a+752>>2]=c[a+884>>2];return}function LZ(a){a=a|0;var b=0,d=0,e=0,f=0;b=a+880|0;d=a+884|0;e=aK(c[b>>2]|0,(c[d>>2]|0)+1e3|0)|0;if(!e){f=c[a>>2]|0;c[f+20>>2]=56;c[f+24>>2]=100;Bd[c[f>>2]&511](a)}f=c[d>>2]|0;c[a+748>>2]=e+f;c[a+752>>2]=1e3;c[b>>2]=e;c[d>>2]=f+1e3;return 1}function MZ(a){a=a|0;var b=0;b=a+884|0;c[b>>2]=(c[b>>2]|0)-(c[a+752>>2]|0);return}function NZ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=4;e=qea(40)|0;c[e>>2]=0;f=Afa(a+592|0,1,e|0,f|0)|0;e=H;s=0;b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,f|0,e|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else b=0;while(1){if(b){b=0;g=6;break}s=0;ka(317,a|0);b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,f|0,e|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else break}if((g|0)==6){rea(f|0);return b|0}g=1;rea(f|0);return g|0}function OZ(a){a=a|0;var b=0;b=c[a+796>>2]|0;c[a+748>>2]=c[b+588>>2];c[a+752>>2]=c[b+592>>2];return}function PZ(a){a=a|0;var b=0,d=0;d=c[a+796>>2]|0;b=d+592|0;c[d+608>>2]=c[b>>2];vx(d)|0;c[a+748>>2]=c[d+588>>2];c[a+752>>2]=c[b>>2];return 1}function QZ(a){a=a|0;var b=0;b=c[a+796>>2]|0;c[b+604>>2]=c[a+748>>2];c[b+608>>2]=(c[b+592>>2]|0)-(c[a+752>>2]|0);return}function RZ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=4;f=qea(40)|0;c[f>>2]=0;g=Afa(a+592|0,1,f|0,g|0)|0;f=H;s=0;d=s;s=0;if((d|0)!=0&(t|0)!=0){e=Cfa(c[d>>2]|0,g|0,f|0)|0;if(!e)Ua(d|0,t|0);H=t}else e=-1;if((e|0)==1)d=H;else d=0;while(1){if(d){d=0;h=6;break}s=0;la(148,a|0,b|0);d=s;s=0;if((d|0)!=0&(t|0)!=0){e=Cfa(c[d>>2]|0,g|0,f|0)|0;if(!e)Ua(d|0,t|0);H=t}else e=-1;if((e|0)==1)d=H;else break}if((h|0)==6){rea(g|0);return d|0}h=1;rea(g|0);return h|0}function SZ(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=i;i=i+16|0;G=c[b+576>>2]|0;J=c[G+856>>2]|0;if(!G)Ra(234176,217984,1904,218392);E=e[G+802>>1]|0;H=G+804|0;g=e[H>>1]|0;I=(da(g,E)|0)+2|0;I=((da(da(c[G+72>>2]|0,(((c[G+28>>2]|0)+-1+E|0)>>>0)/(E>>>0)|0)|0,I)|0)+7|0)>>>3;g=da((f|0)/(I|0)|0,g)|0;if((f|0)%(I|0)|0)qx(c[b+628>>2]|0,c[b>>2]|0,218280,K);A=G+84|0;B=c[(c[A>>2]|0)+132>>2]|0;C=G+260|0;if((g|0)<=0){J=1;i=K;return J|0}D=G+76|0;E=G+852|0;F=G+812|0;x=b+444|0;y=(B|0)==0;z=B+-1|0;w=g;while(1){g=c[D>>2]|0;if((g|0)>0){u=0;t=0;v=c[A>>2]|0;while(1){p=c[v+8>>2]|0;s=c[v+12>>2]|0;f=c[v+28>>2]|0;b=da(p,B)|0;if((s|0)>0){q=F+(u<<2)|0;r=((f<<3)-b|0)>0;o=(p|0)>0;g=f<<3;if((p|0)==1){j=g-B|0;k=t;l=0;while(1){g=(da(c[E>>2]|0,s)|0)+l|0;g=c[(c[q>>2]|0)+(g<<2)>>2]|0;if(!y){f=d+k|0;b=B;h=g;while(1){b=b+-1|0;a[h>>0]=a[f>>0]|0;if(!b)break;else{f=f+J|0;h=h+1|0}}g=g+B|0}if(r){f=0;while(1){a[g>>0]=a[g+-1>>0]|0;f=f+1|0;if((f|0)==(j|0))break;else g=g+1|0}}l=l+1|0;if((l|0)==(s|0)){f=s;break}else k=k+1|0}}else{k=g-b|0;f=da(p,s)|0;m=t;n=0;while(1){g=(da(c[E>>2]|0,s)|0)+n|0;g=c[(c[q>>2]|0)+(g<<2)>>2]|0;a:do if(!y){if(o){j=z;h=d+m|0}else{b=z;while(1)if(!b)break a;else b=b+-1|0}while(1){l=g;b=0;while(1){a[l>>0]=a[h+b>>0]|0;b=b+1|0;if((b|0)==(p|0))break;else l=l+1|0}g=g+p|0;if(!j)break;else{j=j+-1|0;h=h+J|0}}}while(0);if(r){b=0;while(1){a[g>>0]=a[g+-1>>0]|0;b=b+1|0;if((b|0)==(k|0))break;else g=g+1|0}}n=n+1|0;if((n|0)==(s|0))break;else m=m+p|0}}g=c[D>>2]|0;f=t+f|0}else f=t;u=u+1|0;if((u|0)>=(g|0))break;else{t=f;v=v+88|0}}}v=c[E>>2]|0;c[E>>2]=v+1;if((v|0)>6){v=c[C>>2]<<3;if((UZ(G,F,v)|0)!=(v|0)){g=0;f=34;break}c[E>>2]=0}v=e[H>>1]|0;c[x>>2]=(c[x>>2]|0)+v;w=w-v|0;if((w|0)<=0){g=1;f=34;break}else d=d+I|0}if((f|0)==34){i=K;return g|0}return 0}function TZ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=4;e=qea(40)|0;c[e>>2]=0;f=Afa(a+592|0,1,e|0,f|0)|0;e=H;s=0;b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,f|0,e|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else b=0;while(1){if(b){b=0;g=6;break}s=0;la(130,a|0,0);b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,f|0,e|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else break}if((g|0)==6){rea(f|0);return b|0}g=1;rea(f|0);return g|0}function UZ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=4;h=qea(40)|0;c[h>>2]=0;i=Afa(a+592|0,1,h|0,i|0)|0;h=H;s=0;e=s;s=0;if((e|0)!=0&(t|0)!=0){f=Cfa(c[e>>2]|0,i|0,h|0)|0;if(!f)Ua(e|0,t|0);H=t}else f=-1;if((f|0)==1)e=H;else e=0;while(1){if(e){e=-1;j=6;break}s=0;e=qa(201,a|0,b|0,d|0)|0;f=s;s=0;if((f|0)!=0&(t|0)!=0){g=Cfa(c[f>>2]|0,i|0,h|0)|0;if(!g)Ua(f|0,t|0);H=t}else g=-1;if((g|0)==1)e=H;else break}if((j|0)==6){rea(i|0);return e|0}h=e;rea(i|0);return h|0}function VZ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=4;e=qea(40)|0;c[e>>2]=0;f=Afa(a+592|0,1,e|0,f|0)|0;e=H;s=0;b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,f|0,e|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else b=0;while(1){if(b){b=0;g=6;break}s=0;ka(303,a|0);b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,f|0,e|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else break}if((g|0)==6){rea(f|0);return b|0}g=1;rea(f|0);return g|0}function WZ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=4;g=qea(40)|0;c[g>>2]=0;h=Afa(a+592|0,1,g|0,h|0)|0;g=H;s=0;d=s;s=0;if((d|0)!=0&(t|0)!=0){e=Cfa(c[d>>2]|0,h|0,g|0)|0;if(!e)Ua(d|0,t|0);H=t}else e=-1;if((e|0)==1)d=H;else d=0;while(1){if(d){d=-1;i=6;break}s=0;d=qa(190,a|0,b|0,1)|0;e=s;s=0;if((e|0)!=0&(t|0)!=0){f=Cfa(c[e>>2]|0,h|0,g|0)|0;if(!f)Ua(e|0,t|0);H=t}else f=-1;if((f|0)==1)d=H;else break}if((i|0)==6){rea(h|0);return d|0}g=d;rea(h|0);return g|0}function XZ(a){a=a|0;var d=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;g=c[a+576>>2]|0;if(!g)Ra(234176,221536,1321,222376);if((b[a+90>>1]|0)!=-32691)Ra(222392,221536,1322,222376);if((b[a+126>>1]|0)!=1){Yv(c[a+628>>2]|0,222376,222440,h);h=0;i=j;return h|0}d=c[g>>2]|0;if((d|0)==-1){switch(e[a+84>>1]<<3|e[a+86>>1]|0){case 129:case 130:case 132:{f=1;break}case 258:case 257:case 260:{f=2;break}case 259:{f=0;break}case 65:case 68:{f=3;break}default:f=-1}d=e[a+98>>1]|0;if((d|0)==1)d=(f|0)==2?2:-1;else if((d|0)==3)d=(f|0)==2?-1:f;else d=-1;c[g>>2]=d}if(!d)c[g+8>>2]=12;else if((d|0)==1)c[g+8>>2]=6;else if((d|0)==2)c[g+8>>2]=4;else if((d|0)==3)c[g+8>>2]=3;else{Yv(c[a+628>>2]|0,222376,222496,h);h=0;i=j;return h|0}if(!(c[a+12>>2]&1024)){d=da(c[a+100>>2]|0,c[a+56>>2]|0)|0;c[g+16>>2]=d}else{d=da(c[a+72>>2]|0,c[a+68>>2]|0)|0;c[g+16>>2]=d}if((d|0)!=0?(f=_J(d<<2)|0,c[g+12>>2]=f,(f|0)!=0):0){h=1;i=j;return h|0}Yv(c[a+628>>2]|0,222376,222304,h);h=0;i=j;return h|0}function YZ(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;r=s;q=c[a+576>>2]|0;if(f<<16>>16)Ra(222144,221536,263,222704);if(!q)Ra(234176,221536,264,222704);p=(e|0)/(c[q+8>>2]|0)|0;do if((c[q>>2]|0)!=2)if((c[q+16>>2]|0)<(p|0))Ra(222168,221536,271,222704);else{m=c[q+12>>2]|0;break}else m=b;while(0);n=a+604|0;g=c[n>>2]|0;o=a+608|0;f=c[o>>2]|0;if((p|0)>0&(f|0)>0){e=0-p|0;h=~(((f+-1|0)>>>0)/3|0);h=e>>>0>h>>>0?e:h;e=0-h|0;l=h*3|0;h=da(h,-3)|0;j=g;k=0;while(1){c[m+(k<<2)>>2]=(d[j+1>>0]|0)<<8|(d[j>>0]|0)<<16|(d[j+2>>0]|0);k=k+1|0;if((k|0)==(e|0))break;else j=j+3|0}g=g+h|0;f=f+l|0}else e=0;c[n>>2]=g;c[o>>2]=f;if((p|0)==(e|0)){Ud[c[q+20>>2]&255](q,b,p);r=1;i=s;return r|0}else{b=c[a+628>>2]|0;q=p-e|0;c[r>>2]=c[a+444>>2];a=r+4|0;c[a>>2]=q;c[a+4>>2]=((q|0)<0)<<31>>31;Yv(b,222704,222640,r);r=0;i=s;return r|0}return 0}function ZZ(a,b,d){a=a|0;b=b|0;d=d|0;if((d|0)<=0)return;a=c[a+12>>2]|0;while(1){d=d+-1|0;nw(c[a>>2]|0,b);if((d|0)<=0)break;else{a=a+4|0;b=b+12|0}}return}function _Z(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if((e|0)<=0)return;m=c[a+12>>2]|0;while(1){e=e+-1|0;k=c[m>>2]|0;l=d+2|0;b[d>>1]=(k>>>12&4093)+13314;k=k&16383;if(k>>>0>16288){f=6898;a=15521}else{f=0;a=163;a:do while(1){if((a-f|0)<=1){n=8;break a}j=f+a>>1;h=b[220174+(j<<3)>>1]|0;i=k-(h<<16>>16)|0;if((i|0)>0)f=j;else{a=j;break}}while((i|0)<0);if((n|0)==8){n=0;h=b[220174+(f<<3)>>1]|0;a=f}f=~~((+g[220168+(a<<3)>>2]+(+(k-(h<<16>>16)|0)+.5)*3.5000001080334187e-003)*32768.0);a=~~(((+(a|0)+.5)*3.5000001080334187e-003+.016939999535679817)*32768.0)}b[l>>1]=f;b[d+4>>1]=a;if((e|0)<=0)break;else{m=m+4|0;d=d+6|0}}return}function $Z(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0;o=i;i=i+16|0;n=o;if((e|0)<=0){i=o;return}l=n+4|0;m=n+8|0;k=c[b+12>>2]|0;while(1){e=e+-1|0;nw(c[k>>2]|0,n);k=k+4|0;q=+g[n>>2];p=+g[l>>2];j=+g[m>>2];f=q*2.69+p*-1.276+j*-.414;h=q*-1.022+p*1.978+j*.044;j=q*.061+p*-.224+j*1.163;if(!(f<=0.0))if(!(f>=1.0))b=~~(+T(+f)*256.0)&255;else b=-1;else b=0;a[d>>0]=b;if(!(h<=0.0))if(!(h>=1.0))b=~~(+T(+h)*256.0)&255;else b=-1;else b=0;a[d+1>>0]=b;if(!(j<=0.0))if(!(j>=1.0))b=~~(+T(+j)*256.0)&255;else b=-1;else b=0;a[d+2>>0]=b;if((e|0)<=0)break;else d=d+3|0}i=o;return}function a_(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+16|0;s=t;if(g<<16>>16)Ra(222144,221536,319,222688);o=c[b+576>>2]|0;if(!o)Ra(234176,221536,321,222688);r=(f|0)/(c[o+8>>2]|0)|0;do if((c[o>>2]|0)!=2)if((c[o+16>>2]|0)<(r|0))Ra(222168,221536,328,222688);else{n=c[o+12>>2]|0;break}else n=e;while(0);bK(n,0,r<<2);p=b+604|0;f=c[p>>2]|0;q=b+608|0;g=c[q>>2]|0;a:do if((r|0)>0){m=32;while(1){m=m+-8|0;if((m|0)<=-1){j=24;break a}b:do if((g|0)>0){h=f;f=0;do{l=a[h>>0]|0;j=l&255;k=h+1|0;c:do if(l<<24>>24<0){h=h+2|0;k=(d[k>>0]|0)<>>0>j>>>0?l:j)|0;do{l=n+(f<<2)|0;f=f+1|0;c[l>>2]=c[l>>2]|k}while((f|0)!=(j|0));f=j}}else{g=g+-1|0;if(!g){h=k;g=0;break b}else l=k;while(1){if(!((j|0)!=0&(f|0)<(r|0))){h=l;break c}h=h+2|0;k=f+1|0;f=n+(f<<2)|0;c[f>>2]=(d[l>>0]|0)<>2];g=g+-1|0;if(!g){g=0;f=k;break b}else{u=l;l=h;f=k;j=j+-1|0;h=u}}}while(0)}while((r|0)>(f|0)&(g|0)>0)}else{h=f;f=0}while(0);if((r|0)!=(f|0)){j=23;break}else f=h}}else{h=32;while(1){h=h+-8|0;if((h|0)<=-1){j=24;break a}if(r){h=f;f=0;j=23;break}}}while(0);if((j|0)==23){u=c[b+628>>2]|0;r=r-f|0;c[s>>2]=c[b+444>>2];b=s+4|0;c[b>>2]=r;c[b+4>>2]=((r|0)<0)<<31>>31;Yv(u,222688,222640,s);u=0;s=g;b=h;c[p>>2]=b;c[q>>2]=s;i=t;return u|0}else if((j|0)==24){Ud[c[o+20>>2]&255](o,e,r);u=1;s=g;b=f;c[p>>2]=b;c[q>>2]=s;i=t;return u|0}return 0}function b_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0;if((d|0)<=0)return;i=c[a+12>>2]|0;while(1){d=d+-1|0;h=c[i>>2]|0;i=i+4|0;f=h>>16;a=f&32767;if(a){e=+aa(+((+(a|0)+.5)*2.7076061740622863e-003+-44.3614195558365));if(f&32768)e=-e;if(!(e<=0.0)){l=(+((h>>>8&255)>>>0)+.5)*2.4390243902439024e-003;m=(+((h&255)>>>0)+.5)*2.4390243902439024e-003;k=1.0/(l*6.0-m*16.0+12.0);l=l*9.0*k;k=m*4.0*k;g[b>>2]=e*(l/k);g[b+4>>2]=e;g[b+8>>2]=e*((1.0-l-k)/k)}else j=7}else j=7;if((j|0)==7){j=0;g[b+8>>2]=0.0;g[b+4>>2]=0.0;g[b>>2]=0.0}if((d|0)<=0)break;else b=b+12|0}return}function c_(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;if((e|0)<=0)return;a=c[a+12>>2]|0;while(1){e=e+-1|0;f=c[a>>2]|0;b[d>>1]=f>>>16;b[d+2>>1]=~~((+((f>>>8&255)>>>0)+.5)*2.4390243902439024e-003*32768.0);b[d+4>>1]=~~((+((f&255)>>>0)+.5)*2.4390243902439024e-003*32768.0);if((e|0)<=0)break;else{a=a+4|0;d=d+6|0}}return}function d_(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0;if((e|0)<=0)return;m=c[b+12>>2]|0;while(1){e=e+-1|0;h=c[m>>2]|0;m=m+4|0;g=h>>16;b=g&32767;if(b){f=+aa(+((+(b|0)+.5)*2.7076061740622863e-003+-44.3614195558365));if(g&32768)f=-f;if(!(f<=0.0)){k=(+((h>>>8&255)>>>0)+.5)*2.4390243902439024e-003;i=(+((h&255)>>>0)+.5)*2.4390243902439024e-003;l=1.0/(k*6.0-i*16.0+12.0);k=k*9.0*l;l=i*4.0*l;i=f*(k/l);j=f;f=f*((1.0-k-l)/l)}else{i=0.0;j=0.0;f=0.0}}else{i=0.0;j=0.0;f=0.0}k=f*-.414+(j*-1.276+i*2.69);l=f*.044+(j*1.978+i*-1.022);f=f*1.163+(j*-.224+i*.061);if(!(k<=0.0))if(!(k>=1.0))b=~~(+T(+k)*256.0)&255;else b=-1;else b=0;a[d>>0]=b;if(!(l<=0.0))if(!(l>=1.0))b=~~(+T(+l)*256.0)&255;else b=-1;else b=0;a[d+1>>0]=b;if(!(f<=0.0))if(!(f>=1.0))b=~~(+T(+f)*256.0)&255;else b=-1;else b=0;a[d+2>>0]=b;if((e|0)<=0)break;else d=d+3|0}return}function e_(a){a=a|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=c[a+576>>2]|0;if(!f)Ra(234176,221536,1229,222192);if((b[a+90>>1]|0)!=-32692)Ra(222208,221536,1230,222192);d=c[f>>2]|0;if((d|0)==-1){switch(e[a+86>>1]|e[a+84>>1]<<6|e[a+98>>1]<<3|0){case 2059:{d=0;break}case 521:case 524:{d=3;break}case 1033:case 1034:case 1036:{d=1;break}default:d=-1}c[f>>2]=d}if((d|0)==3)c[f+8>>2]=1;else if(!d)c[f+8>>2]=4;else if((d|0)==1)c[f+8>>2]=2;else{Yv(c[a+628>>2]|0,222192,222248,g);a=0;i=h;return a|0}if(!(c[a+12>>2]&1024)){d=da(c[a+100>>2]|0,c[a+56>>2]|0)|0;c[f+16>>2]=d}else{d=da(c[a+72>>2]|0,c[a+68>>2]|0)|0;c[f+16>>2]=d}if((d|0)!=0?(d=_J(d<<1)|0,c[f+12>>2]=d,(d|0)!=0):0){a=1;i=h;return a|0}Yv(c[a+628>>2]|0,222192,222304,g);a=0;i=h;return a|0}function f_(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=i;i=i+16|0;v=w;r=c[f+576>>2]|0;if(j<<16>>16)Ra(222144,221536,197,222624);if(!r)Ra(234176,221536,198,222624);u=(h|0)/(c[r+8>>2]|0)|0;do if((c[r>>2]|0)!=1)if((c[r+16>>2]|0)<(u|0))Ra(222168,221536,205,222624);else{q=c[r+12>>2]|0;break}else q=g;while(0);bK(q,0,u<<1);s=f+604|0;t=f+608|0;o=(u|0)>0;j=c[s>>2]|0;h=c[t>>2]|0;p=16;while(1){p=p+-8|0;if((p|0)<=-1){l=22;break}a:do if(o&(h|0)>0){k=0;do{n=a[j>>0]|0;l=n&255;m=j+1|0;b:do if(n<<24>>24<0){j=j+2|0;m=(d[m>>0]|0)<>>0>l>>>0?n:l)|0;do{n=q+(k<<1)|0;k=k+1|0;b[n>>1]=e[n>>1]|0|m}while((k|0)!=(l|0));k=l}}else{h=h+-1|0;if(!h){j=m;h=0;break a}else n=m;while(1){if(!((l|0)!=0&(k|0)<(u|0))){j=n;break b}j=j+2|0;m=k+1|0;k=q+(k<<1)|0;b[k>>1]=e[k>>1]|0|(d[n>>0]|0)<(k|0)&(h|0)>0)}else k=0;while(0);if((u|0)!=(k|0)){l=21;break}}if((l|0)==21){x=c[f+628>>2]|0;u=u-k|0;c[v>>2]=c[f+444>>2];f=v+4|0;c[f>>2]=u;c[f+4>>2]=((u|0)<0)<<31>>31;Yv(x,222624,222640,v);x=0;v=h;f=j;c[s>>2]=f;c[t>>2]=v;i=w;return x|0}else if((l|0)==22){Ud[c[r+20>>2]&255](r,g,u);x=1;v=h;f=j;c[s>>2]=f;c[t>>2]=v;i=w;return x|0}return 0}function g_(a,d,e){a=a|0;d=d|0;e=e|0;var f=0.0,h=0,i=0;if((e|0)<=0)return;i=c[a+12>>2]|0;while(1){e=e+-1|0;h=b[i>>1]|0;i=i+2|0;a=h&32767;if(a){f=+aa(+((+(a|0)+.5)*2.7076061740622863e-003+-44.3614195558365));if(h&32768)f=-f}else f=0.0;g[d>>2]=f;if((e|0)<=0)break;else d=d+4|0}return}function h_(d,e,f){d=d|0;e=e|0;f=f|0;var g=0.0,h=0,i=0;if((f|0)<=0)return;i=e;h=c[d+12>>2]|0;while(1){f=f+-1|0;d=b[h>>1]|0;h=h+2|0;e=d&32767;if(e){g=+aa(+((+(e|0)+.5)*2.7076061740622863e-003+-44.3614195558365));if(d&32768)g=-g;if(!(g<=0.0))if(!(g>=1.0))e=~~(+T(+g)*256.0)&255;else e=-1;else e=0}else e=0;a[i>>0]=e;if((f|0)<=0)break;else i=i+1|0}return}function i_(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;g=c[b+576>>2]|0;if(f<<16>>16)Ra(222144,221536,510,222360);if(!g)Ra(234176,221536,511,222360);h=(e|0)/(c[g+8>>2]|0)|0;do if((c[g>>2]|0)!=2)if((c[g+16>>2]|0)<(h|0))Ra(222168,221536,518,222360);else{i=c[g+12>>2]|0;Ud[c[g+20>>2]&255](g,d,h);break}else i=d;while(0);k=b+604|0;e=c[k>>2]|0;j=b+592|0;d=c[j>>2]|0;l=b+608|0;f=d-(c[l>>2]|0)|0;do if(h){g=i;while(1){h=h+-1|0;if((f|0)<3){c[k>>2]=e;c[l>>2]=(c[j>>2]|0)-f;if(!(vx(b)|0)){e=-1;g=17;break}f=(c[j>>2]|0)-(c[l>>2]|0)|0;d=c[k>>2]|0}else d=e;a[d>>0]=(c[g>>2]|0)>>>16;a[d+1>>0]=(c[g>>2]|0)>>>8;e=d+3|0;a[d+2>>0]=c[g>>2];f=f+-3|0;if(!h){g=15;break}else g=g+4|0}if((g|0)==15){d=c[j>>2]|0;break}else if((g|0)==17)return e|0}while(0);c[k>>2]=e;c[l>>2]=d-f;l=1;return l|0}function j_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((d|0)<=0)return;e=a+4|0;a=c[a+12>>2]|0;while(1){d=d+-1|0;c[a>>2]=ow(b,c[e>>2]|0)|0;if((d|0)<=0)break;else{a=a+4|0;b=b+12|0}}return}function k_(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)<=0)return;h=a+4|0;g=c[a+12>>2]|0;f=d;while(1){e=e+-1|0;a=b[f>>1]|0;d=a<<16>>16;do if(a<<16>>16>=1)if(a<<16>>16<=7409)if(!(c[h>>2]|0)){a=d+-3314>>2;break}else{a=~~((+(a<<16>>16)+-3314.0)*.25+ +(Rea()|0)*4.656612875245797e-010+-.5);break}else a=1023;else a=0;while(0);d=mw((+(b[f+2>>1]|0)+.5)*.000030517578125,(+(b[f+4>>1]|0)+.5)*.000030517578125,c[h>>2]|0)|0;c[g>>2]=((d|0)<0?12266:d)|a<<14;if((e|0)<=0)break;else{g=g+4|0;f=f+6|0}}return}function l_(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;g=c[b+576>>2]|0;if(f<<16>>16)Ra(222144,221536,562,222344);if(!g)Ra(234176,221536,563,222344);q=(e|0)/(c[g+8>>2]|0)|0;do if((c[g>>2]|0)!=2)if((c[g+16>>2]|0)<(q|0))Ra(222168,221536,571,222344);else{u=c[g+12>>2]|0;Ud[c[g+20>>2]&255](g,d,q);break}else u=d;while(0);r=b+604|0;s=b+592|0;t=b+608|0;o=(q|0)>0;p=24;d=(c[s>>2]|0)-(c[t>>2]|0)|0;e=c[r>>2]|0;f=0;a:while(1){if(o){n=255<>2]=e;c[t>>2]=(c[s>>2]|0)-d;if(!(vx(b)|0)){e=-1;f=41;break a}d=(c[s>>2]|0)-(c[t>>2]|0)|0;e=c[r>>2]|0}b:do if((l|0)<(q|0)){k=l;while(1){g=c[u+(k<<2)>>2]|0;f=1;while(1){i=f+k|0;h=(i|0)<(q|0);if(!h)break;j=f+1|0;if((c[u+(i<<2)>>2]^g)&n)break;if((j|0)<129)f=j;else{f=j;break b}}g=(f|0)>3;if(g|h^1){k=g?k:i;break}else k=i}}else k=l;while(0);c:do if((k-l&-2|0)==2){i=c[u+(l<<2)>>2]&n;g=l+1|0;while(1){h=g+1|0;if((c[u+(g<<2)>>2]&n|0)!=(i|0)){g=l;break c}if((h|0)==(k|0))break;else g=h}a[e>>0]=127-l+g;a[e+1>>0]=i>>>p;g=k;d=d+-2|0;e=e+2|0}else g=l;while(0);if((k|0)>(g|0)){m=~k;i=g;while(1){j=k-i|0;j=(j|0)>127?127:j;if((d|0)<(j+3|0)){c[r>>2]=e;c[t>>2]=(c[s>>2]|0)-d;if(!(vx(b)|0)){e=-1;f=41;break a}d=(c[s>>2]|0)-(c[t>>2]|0)|0;e=c[r>>2]|0}a[e>>0]=j;h=e+1|0;if(!j){e=h;g=-1}else{g=i+m|0;g=(g|0)>-128?g:-128;l=i+-1|0;while(1){j=j+-1|0;a[h>>0]=(c[u+(i<<2)>>2]|0)>>>p;e=e+2|0;if(!j)break;else{v=h;i=i+1|0;h=e;e=v}}i=l-g|0}d=d+g|0;if((k|0)<=(i|0)){g=i;break}}}if((f|0)>3){a[e>>0]=f+126;a[e+1>>0]=(c[u+(k<<2)>>2]|0)>>>p;d=d+-2|0;e=e+2|0}else f=0;l=f+g|0}while((l|0)<(q|0))}p=p+-8|0;if((p|0)<=-1){f=40;break}}if((f|0)==40){c[r>>2]=e;c[t>>2]=(c[s>>2]|0)-d;v=1;return v|0}else if((f|0)==41)return e|0;return 0}function m_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((d|0)<=0)return;e=a+4|0;a=c[a+12>>2]|0;while(1){d=d+-1|0;c[a>>2]=pw(b,c[e>>2]|0)|0;if((d|0)<=0)break;else{a=a+4|0;b=b+12|0}}return}function n_(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0.0,i=0,j=0.0,k=0,l=0;g=c[a+12>>2]|0;l=a+4|0;i=c[l>>2]|0;a=(f|0)>0;if(!i){if(a)a=f;else return;while(1){a=a+-1|0;c[g>>2]=((b[d+2>>1]|0)*410|0)>>>7&65280|e[d>>1]<<16|((b[d+4>>1]|0)*410|0)>>>15&255;if((a|0)<=0)break;else{g=g+4|0;d=d+6|0}}return}if(!a)return;while(1){f=f+-1|0;k=e[d>>1]<<16;h=+(b[d+2>>1]|0)*.01251220703125;if(!i){j=h;a=1}else{j=h+ +(Rea()|0)*4.656612875245797e-010+-.5;a=(c[l>>2]|0)==0}h=+(b[d+4>>1]|0)*.01251220703125;if(!a)h=h+ +(Rea()|0)*4.656612875245797e-010+-.5;c[g>>2]=~~j<<8&65280|k|~~h&255;if((f|0)<=0)break;i=c[l>>2]|0;g=g+4|0;d=d+6|0}return}function o_(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;i=c[d+576>>2]|0;if(h<<16>>16)Ra(222144,221536,422,222152);if(!i)Ra(234176,221536,423,222152);s=(g|0)/(c[i+8>>2]|0)|0;do if((c[i>>2]|0)!=1)if((c[i+16>>2]|0)<(s|0))Ra(222168,221536,430,222152);else{w=c[i+12>>2]|0;Ud[c[i+20>>2]&255](i,f,s);break}else w=f;while(0);t=d+604|0;u=d+592|0;v=d+608|0;q=(s|0)>0;r=8;f=(c[u>>2]|0)-(c[v>>2]|0)|0;g=c[t>>2]|0;h=0;a:while(1){if(q){p=255<>2]=g;c[v>>2]=(c[u>>2]|0)-f;if(!(vx(d)|0)){g=-1;h=41;break a}f=(c[u>>2]|0)-(c[v>>2]|0)|0;g=c[t>>2]|0}b:do if((n|0)<(s|0)){m=n;while(1){i=(e[w+(m<<1)>>1]&p)<<16>>16;h=1;while(1){k=h+m|0;j=(k|0)<(s|0);if(!j)break;l=h+1|0;if((b[w+(k<<1)>>1]&p|0)!=(i|0))break;if((l|0)<129)h=l;else{h=l;break b}}i=(h|0)>3;if(i|j^1){m=i?m:k;break}else m=k}}else m=n;while(0);c:do if((m-n&-2|0)==2){k=(e[w+(n<<1)>>1]&p)<<16>>16;i=n+1|0;while(1){j=i+1|0;if((b[w+(i<<1)>>1]&p|0)!=(k|0)){i=n;break c}if((j|0)==(m|0))break;else i=j}a[g>>0]=127-n+i;a[g+1>>0]=k>>r;i=m;f=f+-2|0;g=g+2|0}else i=n;while(0);if((m|0)>(i|0)){o=~m;k=i;while(1){l=m-k|0;l=(l|0)>127?127:l;if((f|0)<(l+3|0)){c[t>>2]=g;c[v>>2]=(c[u>>2]|0)-f;if(!(vx(d)|0)){g=-1;h=41;break a}f=(c[u>>2]|0)-(c[v>>2]|0)|0;g=c[t>>2]|0}a[g>>0]=l;j=g+1|0;if(!l){g=j;i=-1}else{i=k+o|0;i=(i|0)>-128?i:-128;n=k+-1|0;while(1){l=l+-1|0;a[j>>0]=b[w+(k<<1)>>1]>>r;g=g+2|0;if(!l)break;else{x=j;k=k+1|0;j=g;g=x}}k=n-i|0}f=f+i|0;if((m|0)<=(k|0)){i=k;break}}}if((h|0)>3){a[g>>0]=h+126;a[g+1>>0]=b[w+(m<<1)>>1]>>r;f=f+-2|0;g=g+2|0}else h=0;n=h+i|0}while((n|0)<(s|0))}r=r+-8|0;if((r|0)<=-1){h=40;break}}if((h|0)==40){c[t>>2]=g;c[v>>2]=(c[u>>2]|0)-f;x=1;return x|0}else if((h|0)==41)return g|0;return 0}function p_(a,d,e){a=a|0;d=d|0;e=e|0;var f=0.0,h=0,i=0;if((e|0)<=0)return;i=a+4|0;h=c[a+12>>2]|0;while(1){e=e+-1|0;f=+g[d>>2];d=d+4|0;a=c[i>>2]|0;do if(!(f>=18371976.0e12))if(!(f<=-18371976.0e12)){if(f>5.4136769e-020){f=(+ba(+f)*1.4426950408889634+64.0)*256.0;if(a)f=f+ +(Rea()|0)*4.656612875245797e-010+-.5;a=~~f;break}if(f<-5.4136769e-020){f=(+ba(+-f)*1.4426950408889634+64.0)*256.0;if(a)f=f+ +(Rea()|0)*4.656612875245797e-010+-.5;a=~~f|-32768}else a=0}else a=65535;else a=32767;while(0);b[h>>1]=a;if((e|0)<=0)break;else h=h+2|0}return}function q_(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=i;i=i+16|0;O=P;D=c[f+576>>2]|0;if(!D)Ra(234176,223192,598,223864);E=D+88|0;l=c[E>>2]|0;do if(l){j=c[D+108>>2]|0;k=(e[j+4>>1]|0)-l|0;if((k|0)<=(h|0)){g=g+k|0;l=k;m=g;while(1){m=m+-1|0;a[m>>0]=a[j+6>>0]|0;l=l+-1|0;if(!l)break;else j=c[j>>2]|0}c[E>>2]=0;h=h-k|0;break}c[E>>2]=l+h;do{j=c[j>>2]|0;k=k+-1|0}while((k|0)>(h|0));l=h;k=g+h|0;while(1){k=k+-1|0;a[k>>0]=a[j+6>>0]|0;l=l+-1|0;if(!l){j=1;break}else j=c[j>>2]|0}i=P;return j|0}while(0);F=f+604|0;j=c[F>>2]|0;G=D+64|0;q=e[G>>1]|0;I=D+72|0;p=c[I>>2]|0;J=D+76|0;o=c[J>>2]|0;K=D+84|0;n=c[K>>2]|0;L=D+112|0;m=c[L>>2]|0;M=D+116|0;k=c[M>>2]|0;N=D+120|0;l=c[N>>2]|0;a:do if((h|0)>0){B=D+96|0;C=D+124|0;b:while(1){v=B;u=c[v>>2]|0;v=c[v+4>>2]|0;w=((q|0)<0)<<31>>31;if(v>>>0>>0|(v|0)==(w|0)&u>>>0>>0){g=q;u=16;break}s=j+1|0;p=(d[j>>0]|0)<>0]|0)<>q;o=t-q|0;v=xfa(u|0,v|0,q|0,w|0)|0;w=B;c[w>>2]=v;c[w+4>>2]=H;if((y|0)==257){j=A;g=q;break a}r=c[C>>2]|0;do if((y|0)==256){k=r+2064|0;bK(k,0,38888);l=(c[C>>2]|0)+4088|0;t=B;s=c[t>>2]|0;t=c[t+4>>2]|0;if(t>>>0<0|(t|0)==0&s>>>0<9){j=A;u=22;break b}q=j+x|0;n=(d[A>>0]|0)<>0]|0)<>9;o=o+-9|0;z=yfa(s|0,t|0,-9,-1)|0;A=B;c[A>>2]=z;c[A+4>>2]=H;if((r|0)==257){g=9;n=511;break a}if(r>>>0>255){u=27;break b}a[g>>0]=n;q=9;n=511;h=h+-1|0;m=(c[C>>2]|0)+(r<<3)|0;g=g+1|0}else{u=r+(y<<3)|0;j=r+40952|0;if(!(k>>>0>=r>>>0&k>>>0>>0)){u=31;break b}c[k>>2]=m;if(!(m>>>0>=r>>>0&m>>>0>>0)){u=33;break b}j=a[m+7>>0]|0;a[k+7>>0]=j;b[k+4>>1]=(e[m+4>>1]|0)+1;if(u>>>0>>0)j=a[r+(y<<3)+7>>0]|0;a[k+6>>0]=j;k=k+8|0;if(k>>>0>l>>>0){q=q+1|0;q=(q|0)>12?12:q;n=(1<>>0<=255){a[g>>0]=s;j=A;h=h+-1|0;m=u;g=g+1|0;break}z=b[r+(y<<3)+4>>1]|0;r=z&65535;if(!(z<<16>>16)){u=40;break b}if((h|0)<(r|0)){t=o;m=u;s=k;j=A;r=n;u=42;break b}g=g+r|0;j=u;m=g;do{m=m+-1|0;a[m>>0]=a[j+6>>0]|0;j=c[j>>2]|0}while((j|0)!=0);j=A;h=h-r|0;m=u}while(0);if((h|0)<=0){g=q;break a}}if((u|0)==16){E=c[f+628>>2]|0;c[O>>2]=c[f+452>>2];qx(E,223864,223480,O);break}else if((u|0)==22){g=c[f+628>>2]|0;c[O>>2]=c[f+452>>2];qx(g,223864,223480,O);g=9;n=511;break}else if((u|0)==27){M=c[f+628>>2]|0;N=c[f>>2]|0;c[O>>2]=c[f+444>>2];Yv(M,N,223536,O);O=0;i=P;return O|0}else if((u|0)==31){N=c[f+628>>2]|0;c[O>>2]=c[f+444>>2];Yv(N,223864,223584,O);O=0;i=P;return O|0}else if((u|0)==33){N=c[f+628>>2]|0;c[O>>2]=c[f+444>>2];Yv(N,223864,223584,O);O=0;i=P;return O|0}else if((u|0)==40){N=c[f+628>>2]|0;c[O>>2]=c[f+444>>2];Yv(N,223864,223624,O);O=0;i=P;return O|0}else if((u|0)==42){c[D+108>>2]=m;k=m;do k=c[k>>2]|0;while((e[k+4>>1]|0|0)>(h|0));c[E>>2]=h;n=k;o=h;k=g+h|0;while(1){k=k+-1|0;a[k>>0]=a[n+6>>0]|0;o=o+-1|0;if(!o){k=s;g=q;n=r;o=t;h=0;break}else n=c[n>>2]|0}}}else g=q;while(0);c[F>>2]=j;b[G>>1]=g;c[I>>2]=p;c[J>>2]=o;c[K>>2]=n;c[L>>2]=m;c[M>>2]=k;c[N>>2]=l;if((h|0)<=0){O=1;i=P;return O|0}N=c[f+628>>2]|0;c[O>>2]=c[f+444>>2];M=O+4|0;c[M>>2]=h;c[M+4>>2]=((h|0)<0)<<31>>31;Yv(N,223864,223696,O);O=0;i=P;return O|0}function r_(e){e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;r=s;l=c[e+576>>2]|0;Rv(e)|0;q=l+226|0;if(a[q>>0]|0)Ra(226760,224064,989,226792);if((b[e+98>>1]|0)==3?(p=b[e+90>>1]|0,p<<16>>16==10|p<<16>>16==6):0){a[q>>0]=1;m=l+228|0;g=a[m>>0]|0;p=l+229|0;n=a[p>>0]|0;f=l+225|0;a[f>>0]=1;s_(e)|0;o=l+230|0;h=(a[o>>0]|0)==0;if(h)j=a[m>>0]|0;else{a[m>>0]=1;a[p>>0]=1;j=1}a[f>>0]=0;k=g&255;if(j<<24>>24==g<<24>>24?(a[p>>0]|0)==n<<24>>24:0)f=17;else f=13;do if((f|0)==13)if(h){h=c[e+628>>2]|0;f=j&255;g=d[p>>0]|0;if(!(a[l+227>>0]|0)){c[r>>2]=f;c[r+4>>2]=g;qx(h,226792,226896,r);f=17;break}else{c[r>>2]=f;c[r+4>>2]=g;c[r+8>>2]=k;c[r+12>>2]=n&255;qx(h,226792,227056,r);f=17;break}}else f=18;while(0);if((f|0)==17?(a[o>>0]|0)!=0:0)f=18;if((f|0)==18){f=c[e+628>>2]|0;if(!(a[l+227>>0]|0))qx(f,226792,227192,r);else{c[r>>2]=k;c[r+4>>2]=n&255;qx(f,226792,227424,r)}if(a[o>>0]|0){a[q>>0]=1;i=s;return}}g=a[m>>0]|0;f=a[p>>0]|0;if((g&255)>=(f&255)){a[q>>0]=1;i=s;return}e=c[e+628>>2]|0;c[r>>2]=g&255;c[r+4>>2]=f&255;qx(e,226792,227632,r);a[q>>0]=1;i=s;return}if(a[l+227>>0]|0)qx(c[e+628>>2]|0,226792,226816,r);a[l+228>>0]=1;a[l+229>>0]=1;a[l+230>>0]=0;a[q>>0]=1;i=s;return}function s_(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;W=i;i=i+32|0;U=W;T=W+8|0;Q=f+576|0;V=c[Q>>2]|0;g=V+176|0;h=g;j=c[h>>2]|0;h=c[h+4>>2]|0;if((j|0)==0&(h|0)==0){j=Ed[c[f+648>>2]&511](c[f+628>>2]|0)|0;h=H;M=g;c[M>>2]=j;c[M+4>>2]=h}g=V+208|0;m=g;k=c[m>>2]|0;m=c[m+4>>2]|0;do if(!((k|0)==0&(m|0)==0)){if(!(h>>>0>m>>>0|(h|0)==(m|0)&j>>>0>k>>>0)){c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;break}g=V+216|0;z=g;y=c[z>>2]|0;z=c[z+4>>2]|0;M=yfa(y|0,z|0,k|0,m|0)|0;A=H;if((y|0)==0&(z|0)==0|(A>>>0>h>>>0|(A|0)==(h|0)&M>>>0>j>>>0)){A=xfa(j|0,h|0,k|0,m|0)|0;M=g;c[M>>2]=A;c[M+4>>2]=H}}while(0);c[V+1188>>2]=0;c[V+1192>>2]=0;c[V+1196>>2]=c[f+168>>2];u=V+1216|0;v=u;c[v>>2]=0;c[v+4>>2]=0;v=V+1224|0;b[v>>1]=0;w=V+1228|0;x=V+1200|0;y=V+1208|0;A=V+225|0;z=V+205|0;g=0;a:while(1){if(!(g<<16>>16)){if(!(t_(V)|0)){R=0;M=314;break}g=b[v>>1]|0;if(!(g<<16>>16)){M=12;break}}o=c[w>>2]|0;if((a[o>>0]|0)!=-1){M=251;break}if(!(g<<16>>16)){M=15;break}o=o+1|0;c[w>>2]=o;g=g+-1<<16>>16;b[v>>1]=g;while(1){if(!(g<<16>>16)){if(!(t_(V)|0)){R=0;M=314;break a}g=b[v>>1]|0;if(!(g<<16>>16)){M=21;break a}o=c[w>>2]|0}k=a[o>>0]|0;o=o+1|0;c[w>>2]=o;g=g+-1<<16>>16;b[v>>1]=g;if(k<<24>>24!=-1){t=k;break}}k=t&255;b:do switch(k|0){case 218:{if(a[A>>0]|0){R=1;M=314;break a}if(a[z>>0]|0){M=246;break a}if(!(u_(f)|0)){R=0;M=314;break a}break}case 216:break;case 239:case 238:case 237:case 236:case 235:case 234:case 233:case 232:case 231:case 230:case 229:case 228:case 227:case 226:case 225:case 224:case 254:{if(!(g<<16>>16)){if(!(t_(V)|0)){R=0;M=314;break a}g=b[v>>1]|0;if(!(g<<16>>16)){M=28;break a}o=c[w>>2]|0}k=a[o>>0]|0;o=o+1|0;c[w>>2]=o;g=g+-1<<16>>16;b[v>>1]=g;k=(k&255)<<8;if(!(g<<16>>16)){if(!(t_(V)|0)){R=0;M=314;break a}g=b[v>>1]|0;if(!(g<<16>>16)){M=33;break a}o=c[w>>2]|0}M=a[o>>0]|0;c[w>>2]=o+1;h=g+-1<<16>>16;b[v>>1]=h;g=M&255|k;k=g&65535;if((k&65535)<2){M=35;break a}if((k&65535)>2?(D=g+65534|0,E=D&65535,E=((h&65535)<(E&65535)?h:E)&65535,c[w>>2]=o+(E+1),C=(h&65535)-E|0,b[v>>1]=C,E=D-E|0,D=E&65535,E=E&65535,(E|0)!=0):0){if(C&65535){M=40;break a}M=u;r=c[M>>2]|0;M=c[M+4>>2]|0;s=(0>M>>>0|0==(M|0)&E>>>0>r>>>0?r&65535:D)&65535;n=x;n=yfa(s|0,0,c[n>>2]|0,c[n+4>>2]|0)|0;q=x;c[q>>2]=n;c[q+4>>2]=H;s=xfa(r|0,M|0,s|0,0)|0;M=u;c[M>>2]=s;c[M+4>>2]=H;a[y>>0]=0}break}case 221:{h=c[Q>>2]|0;j=h+1224|0;g=b[j>>1]|0;if(!(g<<16>>16)){if(!(t_(h)|0)){R=0;M=314;break a}g=b[j>>1]|0;if(!(g<<16>>16)){M=45;break a}}J=h+1228|0;o=c[J>>2]|0;k=a[o>>0]|0;o=o+1|0;c[J>>2]=o;g=g+-1<<16>>16;b[j>>1]=g;k=(k&255)<<8;if(!(g<<16>>16)){if(!(t_(h)|0)){R=0;M=314;break a}g=b[j>>1]|0;if(!(g<<16>>16)){M=50;break a}o=c[J>>2]|0}M=a[o>>0]|0;o=o+1|0;c[J>>2]=o;g=g+-1<<16>>16;b[j>>1]=g;if((M&255|k|0)!=4){M=52;break a}if(!(g<<16>>16)){if(!(t_(h)|0)){R=0;M=314;break a}g=b[j>>1]|0;if(!(g<<16>>16)){M=57;break a}o=c[J>>2]|0}k=a[o>>0]|0;o=o+1|0;c[J>>2]=o;g=g+-1<<16>>16;b[j>>1]=g;k=(k&255)<<8;if(!(g<<16>>16)){if(!(t_(h)|0)){R=0;M=314;break a}g=b[j>>1]|0;if(!(g<<16>>16)){M=62;break a}o=c[J>>2]|0}M=a[o>>0]|0;c[J>>2]=o+1;b[j>>1]=g+-1<<16>>16;b[h+360>>1]=M&255|k;break}case 196:{n=c[Q>>2]|0;l=n+1224|0;g=b[l>>1]|0;if(!(g<<16>>16)){if(!(t_(n)|0)){R=0;M=314;break a}g=b[l>>1]|0;if(!(g<<16>>16)){M=101;break a}}p=n+1228|0;o=c[p>>2]|0;k=a[o>>0]|0;o=o+1|0;c[p>>2]=o;g=g+-1<<16>>16;b[l>>1]=g;k=(k&255)<<8;if(!(g<<16>>16)){if(!(t_(n)|0)){R=0;M=314;break a}g=b[l>>1]|0;if(!(g<<16>>16)){M=106;break a}o=c[p>>2]|0}j=a[o>>0]|0;c[p>>2]=o+1;g=g+-1<<16>>16;b[l>>1]=g;k=j&255|k;h=k&65535;G=(a[n+225>>0]|0)==0;if((h&65535)<3){M=108;break a}if(!G){s=k+65534|0;M=s&65535;M=((g&65535)<(M&65535)?g:M)&65535;c[p>>2]=o+(M+1);k=(g&65535)-M|0;b[l>>1]=k;g=s-M|0;o=g&65535;if(!o)break b;if(k&65535){M=113;break a}M=n+1216|0;r=M;q=c[r>>2]|0;r=c[r+4>>2]|0;s=(0>r>>>0|0==(r|0)&o>>>0>q>>>0?q&65535:g&65535)&65535;l=n+1200|0;m=l;m=yfa(s|0,0,c[m>>2]|0,c[m+4>>2]|0)|0;c[l>>2]=m;c[l+4>>2]=H;s=xfa(q|0,r|0,s|0,0)|0;c[M>>2]=s;c[M+4>>2]=H;a[n+1208>>0]=0;break b}g=k+6|0;m=_J(g)|0;if(!m){M=116;break a}c[m>>2]=g;a[m+4>>0]=-1;a[m+5>>0]=-60;a[m+6>>0]=(h&65535)>>>8;a[m+7>>0]=j;g=k+65534&65535;J=m+8|0;if(!(g<<16>>16)){M=119;break a}o=b[l>>1]|0;h=J;while(1){if(!(o<<16>>16)){if(!(t_(n)|0)){R=0;M=314;break a}o=b[l>>1]|0;if(!(o<<16>>16)){M=123;break a}}k=((g&65535)>(o&65535)?o:g)&65535;cK(h,c[p>>2]|0,k);c[p>>2]=(c[p>>2]|0)+k;o=(e[l>>1]|0)-k&65535;b[l>>1]=o;g=(g&65535)-k|0;if(!(g&65535))break;else{g=g&65535;h=h+k|0}}g=a[J>>0]|0;o=g&255;k=o&240;if((k|0)==16){g=o&15;if(g>>>0>3){M=133;break a}g=n+344+(g<<2)|0;o=c[g>>2]|0;if(o)$J(o);c[g>>2]=m;break b}else if(!k){if((g&255)>3){M=127;break a}g=n+328+(o<<2)|0;o=c[g>>2]|0;if(o)$J(o);c[g>>2]=m;break b}else{M=131;break a}}case 219:{q=c[Q>>2]|0;n=q+1224|0;g=b[n>>1]|0;if(!(g<<16>>16)){if(!(t_(q)|0)){R=0;M=314;break a}g=b[n>>1]|0;if(!(g<<16>>16)){M=67;break a}}l=q+1228|0;o=c[l>>2]|0;k=a[o>>0]|0;o=o+1|0;c[l>>2]=o;g=g+-1<<16>>16;b[n>>1]=g;k=(k&255)<<8;if(!(g<<16>>16)){if(!(t_(q)|0)){R=0;M=314;break a}g=b[n>>1]|0;if(!(g<<16>>16)){M=72;break a}o=c[l>>2]|0}F=a[o>>0]|0;c[l>>2]=o+1;h=g+-1<<16>>16;b[n>>1]=h;g=F&255|k;F=(a[q+225>>0]|0)==0;if((g&65535)<3){M=74;break a}g=g+65534|0;k=g&65535;if(!F){M=((h&65535)<(k&65535)?h:k)&65535;c[l>>2]=o+(M+1);k=(h&65535)-M|0;b[n>>1]=k;g=g-M|0;o=g&65535;if(!o)break b;if(k&65535){M=80;break a}M=q+1216|0;r=M;n=c[r>>2]|0;r=c[r+4>>2]|0;s=(0>r>>>0|0==(r|0)&o>>>0>n>>>0?n&65535:g&65535)&65535;l=q+1200|0;m=l;m=yfa(s|0,0,c[m>>2]|0,c[m+4>>2]|0)|0;c[l>>2]=m;c[l+4>>2]=H;s=xfa(n|0,r|0,s|0,0)|0;c[M>>2]=s;c[M+4>>2]=H;a[q+1208>>0]=0;break b}m=q+312|0;while(1){if((k&65535)<65){M=83;break a}p=_J(73)|0;if(!p){M=85;break a}c[p>>2]=73;a[p+4>>0]=-1;a[p+5>>0]=-37;a[p+6>>0]=0;a[p+7>>0]=67;J=p+8|0;g=b[n>>1]|0;o=65;j=J;while(1){if(!(g<<16>>16)){if(!(t_(q)|0)){I=p;M=92;break a}g=b[n>>1]|0;if(!(g<<16>>16)){M=90;break a}}h=((o&65535)>(g&65535)?g:o)&65535;cK(j,c[l>>2]|0,h);c[l>>2]=(c[l>>2]|0)+h;g=(e[n>>1]|0)-h&65535;b[n>>1]=g;o=(o&65535)-h|0;if(!(o&65535))break;else{o=o&65535;j=j+h|0}}g=d[J>>0]&15;if(g>>>0>3){K=p;M=94;break a}g=m+(g<<2)|0;o=c[g>>2]|0;if(o)$J(o);c[g>>2]=p;g=(k&65535)+65471|0;if(!(g&65535))break;else k=g&65535}break}case 195:case 193:case 192:{n=c[Q>>2]|0;q=n+363|0;if(a[q>>0]|0){M=138;break a}r=n+225|0;if(!(a[r>>0]|0))a[n+364>>0]=t;s=n+1224|0;g=b[s>>1]|0;if(!(g<<16>>16)){if(!(t_(n)|0)){R=0;M=314;break a}g=b[s>>1]|0;if(!(g<<16>>16)){M=144;break a}}l=n+1228|0;o=c[l>>2]|0;J=a[o>>0]|0;o=o+1|0;c[l>>2]=o;g=g+-1<<16>>16;b[s>>1]=g;J=(J&255)<<8;if(!(g<<16>>16)){if(!(t_(n)|0)){R=0;M=314;break a}g=b[s>>1]|0;if(!(g<<16>>16)){M=149;break a}o=c[l>>2]|0}M=a[o>>0]|0;k=o+1|0;c[l>>2]=k;h=g+-1<<16>>16;b[s>>1]=h;g=M&255|J;if((g&65535)<11){N=r;M=151;break a}p=g+65528&65535;if((p>>>0)%3|0){O=r;M=154;break a}m=(p>>>0)/3|0;o=a[r>>0]|0;if(o<<24>>24==0?(m|0)!=(d[n+204>>0]|0):0){M=158;break a}if(!(h<<16>>16)){if(!(t_(n)|0)){R=0;M=314;break a}g=b[s>>1]|0;if(!(g<<16>>16)){M=163;break a}J=c[l>>2]|0;o=a[r>>0]|0}else{J=k;g=h}M=a[J>>0]|0;k=J+1|0;c[l>>2]=k;g=g+-1<<16>>16;b[s>>1]=g;B=o<<24>>24==0;if(M<<24>>24!=8){M=165;break a}if(!B){k=g&65535;j=(g&65535)<4?k:4;o=J+(j+1)|0;c[l>>2]=o;k=k-j|0;g=k&65535;b[s>>1]=g;j=4-j|0;h=j&65535;j=j&65535;if(j){if(k&65535){M=170;break a}M=n+1216|0;J=M;k=c[J>>2]|0;J=c[J+4>>2]|0;j=(0>J>>>0|0==(J|0)&j>>>0>k>>>0?k&65535:h)&65535;h=n+1200|0;X=h;X=yfa(j|0,0,c[X>>2]|0,c[X+4>>2]|0)|0;c[h>>2]=X;c[h+4>>2]=H;j=xfa(k|0,J|0,j|0,0)|0;c[M>>2]=j;c[M+4>>2]=H;a[n+1208>>0]=0}}else{if(!(g<<16>>16)){if(!(t_(n)|0)){R=0;M=314;break a}g=b[s>>1]|0;if(!(g<<16>>16)){M=176;break a}o=c[l>>2]|0}else o=k;J=a[o>>0]|0;o=o+1|0;c[l>>2]=o;g=g+-1<<16>>16;b[s>>1]=g;J=(J&255)<<8;if(!(g<<16>>16)){if(!(t_(n)|0)){R=0;M=314;break a}g=b[s>>1]|0;if(!(g<<16>>16)){M=181;break a}o=c[l>>2]|0}X=a[o>>0]|0;k=o+1|0;c[l>>2]=k;g=g+-1<<16>>16;b[s>>1]=g;o=X&255|J;if(o>>>0<(c[n+188>>2]|0)>>>0?o>>>0<(c[n+200>>2]|0)>>>0:0){M=184;break a}c[n+372>>2]=o;if(!(g<<16>>16)){if(!(t_(n)|0)){R=0;M=314;break a}g=b[s>>1]|0;if(!(g<<16>>16)){M=189;break a}o=c[l>>2]|0}else o=k;J=a[o>>0]|0;o=o+1|0;c[l>>2]=o;g=g+-1<<16>>16;b[s>>1]=g;J=(J&255)<<8;if(!(g<<16>>16)){if(!(t_(n)|0)){R=0;M=314;break a}g=b[s>>1]|0;if(!(g<<16>>16)){M=194;break a}o=c[l>>2]|0}k=a[o>>0]|0;o=o+1|0;c[l>>2]=o;g=g+-1<<16>>16;b[s>>1]=g;k=k&255|J;h=c[n+192>>2]|0;if(k>>>0>>0?k>>>0<(c[n+184>>2]|0)>>>0:0){M=196;break a}if(k>>>0>h>>>0){M=198;break a}c[n+368>>2]=k}if(!(g<<16>>16)){if(!(t_(n)|0)){R=0;M=314;break a}g=b[s>>1]|0;if(!(g<<16>>16)){M=204;break a}o=c[l>>2]|0}X=a[o>>0]|0;c[l>>2]=o+1;g=g+-1<<16>>16;b[s>>1]=g;if((X&255|0)!=(m|0)){P=r;M=208;break a}c:do if(p>>>0>2){h=n+230|0;j=n+228|0;p=n+229|0;o=0;k=0;while(1){if(!(g<<16>>16)){if(!(t_(n)|0)){R=0;M=314;break a}g=b[s>>1]|0;if(!(g<<16>>16)){M=213;break a}}X=c[l>>2]|0;J=a[X>>0]|0;c[l>>2]=X+1;g=g+-1<<16>>16;b[s>>1]=g;if(!(a[r>>0]|0)){a[n+(o+376)>>0]=J;g=b[s>>1]|0}if(!(g<<16>>16)){if(!(t_(n)|0)){R=0;M=314;break a}g=b[s>>1]|0;if(!(g<<16>>16)){M=219;break a}}X=c[l>>2]|0;J=a[X>>0]|0;c[l>>2]=X+1;b[s>>1]=g+-1<<16>>16;do if(!(a[r>>0]|0)){a[n+(o+379)>>0]=J;if(a[h>>0]|0)break;if(!(k<<16>>16))if((J&255|0)==(d[j>>0]<<4|d[p>>0]|0))break;else{M=230;break a}else if(J<<24>>24==17)break;else{M=232;break a}}else{if(k<<16>>16){if(J<<24>>24==17)break;a[h>>0]=1;break}M=(J&255)>>>4;a[j>>0]=M;X=J&15;a[p>>0]=X;if(M<<24>>24==4|M<<24>>24==2|M<<24>>24==1?X<<24>>24==4|X<<24>>24==2|X<<24>>24==1:0)break;a[h>>0]=1}while(0);g=b[s>>1]|0;if(!(g<<16>>16)){if(!(t_(n)|0)){R=0;M=314;break a}g=b[s>>1]|0;if(!(g<<16>>16)){M=236;break a}}X=c[l>>2]|0;J=a[X>>0]|0;c[l>>2]=X+1;b[s>>1]=g+-1<<16>>16;if(!(a[r>>0]|0))a[n+(o+382)>>0]=J;J=k+1<<16>>16;o=J&65535;if(o>>>0>=m>>>0)break c;g=b[s>>1]|0;k=J}}while(0);if(!(a[r>>0]|0))a[q>>0]=1;if(a[A>>0]|0){R=1;M=314;break a}break}default:{L=k;M=248;break a}}while(0);if(t<<24>>24==-38){M=251;break}g=b[v>>1]|0}switch(M|0){case 12:{Ra(225e3,224064,2025,226736);break}case 15:{Ra(225e3,224064,2034,226712);break}case 21:{Ra(225e3,224064,2010,225512);break}case 28:{Ra(225e3,224064,2010,225512);break}case 33:{Ra(225e3,224064,2010,225512);break}case 35:{if(a[A>>0]|0){X=0;i=W;return X|0}Yv(c[f+628>>2]|0,225760,225704,U);X=0;i=W;return X|0}case 40:{Ra(225472,224064,2095,225496);break}case 45:{Ra(225e3,224064,2010,225512);break}case 50:{Ra(225e3,224064,2010,225512);break}case 52:{Yv(c[f+628>>2]|0,226648,226680,U);X=0;i=W;return X|0}case 57:{Ra(225e3,224064,2010,225512);break}case 62:{Ra(225e3,224064,2010,225512);break}case 67:{Ra(225e3,224064,2010,225512);break}case 72:{Ra(225e3,224064,2010,225512);break}case 74:{if(!F){X=0;i=W;return X|0}Yv(c[f+628>>2]|0,226584,226616,U);X=0;i=W;return X|0}case 80:{Ra(225472,224064,2095,225496);break}case 83:{Yv(c[f+628>>2]|0,226584,226616,U);X=0;i=W;return X|0}case 85:{Yv(c[f+628>>2]|0,226584,313360,U);X=0;i=W;return X|0}case 90:{Ra(225e3,224064,2067,226568);break}case 92:{$J(I);X=0;i=W;return X|0}case 94:{Yv(c[f+628>>2]|0,226584,226616,U);$J(K);X=0;i=W;return X|0}case 101:{Ra(225e3,224064,2010,225512);break}case 106:{Ra(225e3,224064,2010,225512);break}case 108:{if(!G){X=0;i=W;return X|0}Yv(c[f+628>>2]|0,226496,226528,U);X=0;i=W;return X|0}case 113:{Ra(225472,224064,2095,225496);break}case 116:{Yv(c[f+628>>2]|0,226496,313360,U);X=0;i=W;return X|0}case 119:{Ra(226560,224064,2058,226568);break}case 123:{Ra(225e3,224064,2067,226568);break}case 127:{Yv(c[f+628>>2]|0,226496,226528,U);X=0;i=W;return X|0}case 131:{Yv(c[f+628>>2]|0,226496,226528,U);X=0;i=W;return X|0}case 133:{Yv(c[f+628>>2]|0,226496,226528,U);X=0;i=W;return X|0}case 138:{Yv(c[f+628>>2]|0,226064,225704,U);X=0;i=W;return X|0}case 144:{Ra(225e3,224064,2010,225512);break}case 149:{Ra(225e3,224064,2010,225512);break}case 151:{if(a[N>>0]|0){X=0;i=W;return X|0}Yv(c[f+628>>2]|0,226064,226096,U);X=0;i=W;return X|0}case 154:{if(a[O>>0]|0){X=0;i=W;return X|0}Yv(c[f+628>>2]|0,226064,226096,U);X=0;i=W;return X|0}case 158:{Yv(c[f+628>>2]|0,226064,226128,U);X=0;i=W;return X|0}case 163:{Ra(225e3,224064,2010,225512);break}case 165:{if(!B){X=0;i=W;return X|0}Yv(c[f+628>>2]|0,226064,226192,U);X=0;i=W;return X|0}case 170:{Ra(225472,224064,2095,225496);break}case 176:{Ra(225e3,224064,2010,225512);break}case 181:{Ra(225e3,224064,2010,225512);break}case 184:{Yv(c[f+628>>2]|0,226064,226264,U);X=0;i=W;return X|0}case 189:{Ra(225e3,224064,2010,225512);break}case 194:{Ra(225e3,224064,2010,225512);break}case 196:{Yv(c[f+628>>2]|0,226064,226320,U);X=0;i=W;return X|0}case 198:{Yv(c[f+628>>2]|0,226064,226368,U);X=0;i=W;return X|0}case 204:{Ra(225e3,224064,2010,225512);break}case 208:{if(a[P>>0]|0){X=0;i=W;return X|0}Yv(c[f+628>>2]|0,226064,226096,U);X=0;i=W;return X|0}case 213:{Ra(225e3,224064,2010,225512);break}case 219:{Ra(225e3,224064,2010,225512);break}case 230:{Yv(c[f+628>>2]|0,226064,226432,U);X=0;i=W;return X|0}case 232:{Yv(c[f+628>>2]|0,226064,226432,U);X=0;i=W;return X|0}case 236:{Ra(225e3,224064,2010,225512);break}case 246:{Ra(225728,224064,1347,225760);break}case 248:{X=c[f+628>>2]|0;c[U>>2]=L;Yv(X,225760,225784,U);X=0;i=W;return X|0}case 251:{if(a[A>>0]|0){X=1;i=W;return X|0}w=V+363|0;if(a[w>>0]|0){X=1;i=W;return X|0}o=c[Q>>2]|0;p=o+240|0;X=p;if((c[X>>2]|0)==0&(c[X+4>>2]|0)==0){Yv(c[f+628>>2]|0,225992,225864,U);X=0;i=W;return X|0}a[o+1208>>0]=0;q=o+204|0;d:do if(a[q>>0]|0){r=f+640|0;s=f+628|0;t=f+632|0;u=o+312|0;v=0;g=0;e:while(1){n=p+(v<<3)|0;k=n;j=c[k>>2]|0;k=c[k+4>>2]|0;do if((j|0)==0&(k|0)==0)M=268;else{h=v+-1|0;if(g<<24>>24!=0?(X=p+(h<<3)|0,(j|0)==(c[X>>2]|0)?(k|0)==(c[X+4>>2]|0):0):0){M=268;break}if((h|0)>0){l=0;m=0;do{X=p+(l<<3)|0;m=m+1<<24>>24;if((j|0)==(c[X>>2]|0)?(k|0)==(c[X+4>>2]|0):0){M=263;break e}l=m&255}while((l|0)<(h|0))}h=_J(73)|0;if(!h){M=265;break e}c[h>>2]=73;a[h+4>>0]=-1;a[h+5>>0]=-37;a[h+6>>0]=0;a[h+7>>0]=67;a[h+8>>0]=g;X=n;Xd[c[r>>2]&255](c[s>>2]|0,c[X>>2]|0,c[X+4>>2]|0,0)|0;if((Hd[c[t>>2]&255](c[s>>2]|0,h+9|0,64)|0)!=64){R=0;M=314;break e}c[u+(v<<2)>>2]=h;a[o+(v+382)>>0]=g}while(0);if((M|0)==268){M=0;a[o+(v+382)>>0]=a[o+(v+381)>>0]|0}g=g+1<<24>>24;if((g&255)<(d[q>>0]|0))v=g&255;else break d}if((M|0)==263){Yv(c[s>>2]|0,225992,226032,U);X=0;i=W;return X|0}else if((M|0)==265){Yv(c[s>>2]|0,225992,313360,U);X=0;i=W;return X|0}else if((M|0)==314){i=W;return R|0}}while(0);a[V+364>>0]=-64;L=V+204|0;if(!(a[L>>0]|0))g=0;else{h=0;do{a[V+((h&255)+376)>>0]=h;h=h+1<<24>>24;g=a[L>>0]|0}while((h&255)<(g&255));g=(g&255)>1}a[V+379>>0]=d[V+228>>0]<<4|d[V+229>>0];if(g){g=1;do{a[V+((g&255)+379)>>0]=17;g=g+1<<24>>24}while((g&255)<(d[L>>0]|0))}c[V+368>>2]=c[V+192>>2];c[V+372>>2]=c[V+200>>2];a[w>>0]=1;J=c[Q>>2]|0;m=J+264|0;X=m;if((c[X>>2]|0)==0&(c[X+4>>2]|0)==0){Yv(c[f+628>>2]|0,225920,225864,U);X=0;i=W;return X|0}a[J+1208>>0]=0;l=J+204|0;do if(a[l>>0]|0){n=f+640|0;q=f+628|0;r=f+632|0;s=J+328|0;t=T+1|0;u=T+2|0;v=T+3|0;w=T+4|0;x=T+5|0;y=T+6|0;z=T+7|0;A=T+8|0;B=T+9|0;C=T+10|0;D=T+11|0;E=T+12|0;F=T+13|0;G=T+14|0;I=T+15|0;K=0;g=0;f:while(1){h=m+(K<<3)|0;k=c[h>>2]|0;h=c[h+4>>2]|0;do if((k|0)==0&(h|0)==0)M=291;else{o=K+-1|0;if(g<<24>>24!=0?(X=m+(o<<3)|0,(k|0)==(c[X>>2]|0)?(h|0)==(c[X+4>>2]|0):0):0){M=291;break}if((o|0)>0){j=0;p=0;do{X=m+(j<<3)|0;p=p+1<<24>>24;if((k|0)==(c[X>>2]|0)?(h|0)==(c[X+4>>2]|0):0){M=285;break f}j=p&255}while((j|0)<(o|0))}Xd[c[n>>2]&255](c[q>>2]|0,k,h,0)|0;if((Hd[c[r>>2]&255](c[q>>2]|0,T,16)|0)!=16){R=0;M=314;break f}o=(d[t>>0]|0)+(d[T>>0]|0)+(d[u>>0]|0)+(d[v>>0]|0)+(d[w>>0]|0)+(d[x>>0]|0)+(d[y>>0]|0)+(d[z>>0]|0)+(d[A>>0]|0)+(d[B>>0]|0)+(d[C>>0]|0)+(d[D>>0]|0)+(d[E>>0]|0)+(d[F>>0]|0)+(d[G>>0]|0)+(d[I>>0]|0)|0;k=o+25|0;h=_J(k)|0;if(!h){M=288;break f}c[h>>2]=k;a[h+4>>0]=-1;a[h+5>>0]=-60;X=o+19|0;a[h+6>>0]=X>>>8;a[h+7>>0]=X;a[h+8>>0]=g;a[h+9>>0]=a[T>>0]|0;a[h+10>>0]=a[t>>0]|0;a[h+11>>0]=a[u>>0]|0;a[h+12>>0]=a[v>>0]|0;a[h+13>>0]=a[w>>0]|0;a[h+14>>0]=a[x>>0]|0;a[h+15>>0]=a[y>>0]|0;a[h+16>>0]=a[z>>0]|0;a[h+17>>0]=a[A>>0]|0;a[h+18>>0]=a[B>>0]|0;a[h+19>>0]=a[C>>0]|0;a[h+20>>0]=a[D>>0]|0;a[h+21>>0]=a[E>>0]|0;a[h+22>>0]=a[F>>0]|0;a[h+23>>0]=a[G>>0]|0;a[h+24>>0]=a[I>>0]|0;if((Hd[c[r>>2]&255](c[q>>2]|0,h+25|0,o)|0)!=(o|0)){R=0;M=314;break f}c[s+(K<<2)>>2]=h;a[J+(K+388)>>0]=K<<4}while(0);if((M|0)==291){M=0;a[J+(K+388)>>0]=a[J+(K+387)>>0]|0}g=g+1<<24>>24;if((g&255)<(d[l>>0]|0))K=g&255;else{M=293;break}}if((M|0)==285){Yv(c[q>>2]|0,225920,225960,U);X=0;i=W;return X|0}else if((M|0)==288){Yv(c[q>>2]|0,225920,313360,U);X=0;i=W;return X|0}else if((M|0)==293){S=c[Q>>2]|0;break}else if((M|0)==314){i=W;return R|0}}else S=J;while(0);F=S+288|0;X=F;if((c[X>>2]|0)==0&(c[X+4>>2]|0)==0){Yv(c[f+628>>2]|0,225824,225864,U);X=0;i=W;return X|0}a[S+1208>>0]=0;G=S+204|0;g:do if(a[G>>0]|0){I=f+640|0;J=f+628|0;m=f+632|0;l=S+344|0;n=T+1|0;q=T+2|0;r=T+3|0;s=T+4|0;t=T+5|0;u=T+6|0;v=T+7|0;w=T+8|0;x=T+9|0;y=T+10|0;z=T+11|0;A=T+12|0;B=T+13|0;C=T+14|0;D=T+15|0;E=0;g=0;h:while(1){h=F+(E<<3)|0;k=c[h>>2]|0;h=c[h+4>>2]|0;do if((k|0)==0&(h|0)==0)M=310;else{o=E+-1|0;if(g<<24>>24!=0?(X=F+(o<<3)|0,(k|0)==(c[X>>2]|0)?(h|0)==(c[X+4>>2]|0):0):0){M=310;break}if((o|0)>0){j=0;p=0;do{X=F+(j<<3)|0;p=p+1<<24>>24;if((k|0)==(c[X>>2]|0)?(h|0)==(c[X+4>>2]|0):0){M=304;break h}j=p&255}while((j|0)<(o|0))}Xd[c[I>>2]&255](c[J>>2]|0,k,h,0)|0;if((Hd[c[m>>2]&255](c[J>>2]|0,T,16)|0)!=16){R=0;M=314;break h}o=(d[n>>0]|0)+(d[T>>0]|0)+(d[q>>0]|0)+(d[r>>0]|0)+(d[s>>0]|0)+(d[t>>0]|0)+(d[u>>0]|0)+(d[v>>0]|0)+(d[w>>0]|0)+(d[x>>0]|0)+(d[y>>0]|0)+(d[z>>0]|0)+(d[A>>0]|0)+(d[B>>0]|0)+(d[C>>0]|0)+(d[D>>0]|0)|0;k=o+25|0;h=_J(k)|0;if(!h){M=307;break h}c[h>>2]=k;a[h+4>>0]=-1;a[h+5>>0]=-60;X=o+19|0;a[h+6>>0]=X>>>8;a[h+7>>0]=X;a[h+8>>0]=E|16;a[h+9>>0]=a[T>>0]|0;a[h+10>>0]=a[n>>0]|0;a[h+11>>0]=a[q>>0]|0;a[h+12>>0]=a[r>>0]|0;a[h+13>>0]=a[s>>0]|0;a[h+14>>0]=a[t>>0]|0;a[h+15>>0]=a[u>>0]|0;a[h+16>>0]=a[v>>0]|0;a[h+17>>0]=a[w>>0]|0;a[h+18>>0]=a[x>>0]|0;a[h+19>>0]=a[y>>0]|0;a[h+20>>0]=a[z>>0]|0;a[h+21>>0]=a[A>>0]|0;a[h+22>>0]=a[B>>0]|0;a[h+23>>0]=a[C>>0]|0;a[h+24>>0]=a[D>>0]|0;if((Hd[c[m>>2]&255](c[J>>2]|0,h+25|0,o)|0)!=(o|0)){R=0;M=314;break h}c[l+(E<<2)>>2]=h;X=S+(E+388)|0;a[X>>0]=a[X>>0]|g}while(0);if((M|0)==310){M=0;X=S+(E+388)|0;a[X>>0]=d[S+(E+387)>>0]&15|d[X>>0]}g=g+1<<24>>24;if((g&255)<(d[G>>0]|0))E=g&255;else break g}if((M|0)==304){Yv(c[J>>2]|0,225824,225888,U);X=0;i=W;return X|0}else if((M|0)==307){Yv(c[J>>2]|0,225824,313360,U);X=0;i=W;return X|0}else if((M|0)==314){i=W;return R|0}}while(0);if((d[L>>0]|0)>1)g=1;else{X=1;i=W;return X|0}do{a[V+((g&255)+385)>>0]=g;g=g+1<<24>>24}while((g&255)<(d[L>>0]|0));R=1;i=W;return R|0}case 314:{i=W;return R|0}}return 0}function t_(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=d+1216|0;f=u;e=c[f>>2]|0;f=c[f+4>>2]|0;s=d+1208|0;a:do if((e|0)==0&(f|0)==0){l=d+1188|0;m=d+208|0;n=d+1200|0;o=d+216|0;p=d+1192|0;q=d+1196|0;r=d+176|0;b:while(1){a[s>>0]=0;e=c[l>>2]|0;if((e|0)==2)t=21;else if((e|0)==1){c[l>>2]=2;t=21}else if(!e){h=m;e=c[h>>2]|0;h=c[h+4>>2]|0;if(!((e|0)==0&(h|0)==0)){j=n;c[j>>2]=e;c[j+4>>2]=h;j=o;i=c[j+4>>2]|0;k=u;c[k>>2]=c[j>>2];c[k+4>>2]=i}c[l>>2]=1}else{e=0;t=34;break}do if((t|0)==21){t=0;if(!(Rv(c[d>>2]|0)|0)){e=0;t=34;break b}e=c[d>>2]|0;h=c[e+172>>2]|0;if(!h){e=0;t=34;break b}e=c[e+176>>2]|0;if(!e){e=0;t=34;break b}k=c[p>>2]|0;if((k|0)==(c[q>>2]|0)){c[l>>2]=3;break}g=h+(k<<3)|0;f=c[g>>2]|0;g=c[g+4>>2]|0;i=n;c[i>>2]=f;c[i+4>>2]=g;do if(!((f|0)==0&(g|0)==0)){j=r;i=c[j>>2]|0;j=c[j+4>>2]|0;if(!(j>>>0>g>>>0|(j|0)==(g|0)&i>>>0>f>>>0)){i=n;c[i>>2]=0;c[i+4>>2]=0;break}h=e+(k<<3)|0;e=c[h>>2]|0;h=c[h+4>>2]|0;v=u;c[v>>2]=e;c[v+4>>2]=h;if((e|0)==0&(h|0)==0){v=n;c[v>>2]=0;c[v+4>>2]=0;break}v=yfa(f|0,g|0,e|0,h|0)|0;h=H;if(h>>>0>j>>>0|(h|0)==(j|0)&v>>>0>i>>>0){i=xfa(i|0,j|0,f|0,g|0)|0;v=u;c[v>>2]=i;c[v+4>>2]=H}}while(0);c[p>>2]=k+1}while(0);f=u;e=c[f>>2]|0;f=c[f+4>>2]|0;if(!((e|0)==0&(f|0)==0))break a}if((t|0)==34)return e|0}while(0);if(!(a[s>>0]|0)){f=c[d>>2]|0;e=d+1200|0;Xd[c[f+640>>2]&255](c[f+628>>2]|0,c[e>>2]|0,c[e+4>>2]|0,0)|0;a[s>>0]=1;e=u;f=c[e+4>>2]|0;e=c[e>>2]|0}if(f>>>0<0|(f|0)==0&e>>>0<2048)e=e&65535;else e=2048;v=c[d>>2]|0;h=d+1232|0;e=Hd[c[v+632>>2]&255](c[v+628>>2]|0,h,e)|0;if(!e){v=0;return v|0}if((e|0)<=0)Ra(225056,224064,1939,225064);if((e|0)>=2049)Ra(225088,224064,1940,225064);v=((e|0)<0)<<31>>31;g=u;f=c[g>>2]|0;g=c[g+4>>2]|0;if(v>>>0>g>>>0|(v|0)==(g|0)&e>>>0>f>>>0)Ra(225104,224064,1942,225064);b[d+1224>>1]=e;c[d+1228>>2]=h;t=e&65535;s=xfa(f|0,g|0,t|0,0)|0;v=u;c[v>>2]=s;c[v+4>>2]=H;v=d+1200|0;d=v;d=yfa(c[d>>2]|0,c[d+4>>2]|0,t|0,0)|0;c[v>>2]=d;c[v+4>>2]=H;v=1;return v|0}function u_(e){e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;i=i+16|0;q=v;u=c[e+576>>2]|0;if(a[u+225>>0]|0)Ra(225376,224064,1696,225408);if(!(a[u+363>>0]|0)){Yv(c[e+628>>2]|0,225408,225440,q);u=0;i=v;return u|0}t=u+1224|0;g=b[t>>1]|0;if(!(g<<16>>16)){if(!(t_(u)|0)){u=0;i=v;return u|0}g=b[t>>1]|0;if(!(g<<16>>16))Ra(225e3,224064,2010,225512);else j=g}else j=g;r=u+1228|0;h=c[r>>2]|0;l=a[h>>0]|0;h=h+1|0;c[r>>2]=h;g=j+-1<<16>>16;b[t>>1]=g;l=(l&255)<<8;do if(!(g<<16>>16)){if(!(t_(u)|0)){u=0;i=v;return u|0}g=b[t>>1]|0;if(!(g<<16>>16))Ra(225e3,224064,2010,225512);else{k=c[r>>2]|0;m=g;break}}else{k=h;m=g}while(0);w=a[k>>0]|0;j=k+1|0;c[r>>2]=j;g=m+-1<<16>>16;b[t>>1]=g;m=u+206|0;h=a[m>>0]|0;if((w&255|l|0)!=(((h&255)<<1)+6|0)){Yv(c[e+628>>2]|0,225408,225440,q);w=0;i=v;return w|0}do if(!(g<<16>>16)){if(!(t_(u)|0)){w=0;i=v;return w|0}g=b[t>>1]|0;if(!(g<<16>>16))Ra(225e3,224064,2010,225512);else{n=c[r>>2]|0;o=g;p=a[m>>0]|0;break}}else{n=j;o=g;p=h}while(0);w=a[n>>0]|0;h=n+1|0;c[r>>2]=h;g=o+-1<<16>>16;b[t>>1]=g;if(w<<24>>24!=p<<24>>24){Yv(c[e+628>>2]|0,225408,225440,q);w=0;i=v;return w|0}do if(p<<24>>24){k=u+205|0;j=0;h=0;while(1){if(!(g<<16>>16)){if(!(t_(u)|0)){f=0;g=39;break}g=b[t>>1]|0;if(!(g<<16>>16)){g=28;break}}q=c[r>>2]|0;w=a[q>>0]|0;c[r>>2]=q+1;b[t>>1]=g+-1<<16>>16;a[u+(j+385+(d[k>>0]|0))>>0]=w;g=b[t>>1]|0;if(!(g<<16>>16)){if(!(t_(u)|0)){f=0;g=39;break}g=b[t>>1]|0;if(!(g<<16>>16)){g=32;break}}q=c[r>>2]|0;w=a[q>>0]|0;c[r>>2]=q+1;b[t>>1]=g+-1<<16>>16;a[u+(j+388+(d[k>>0]|0))>>0]=w;h=h+1<<24>>24;g=b[t>>1]|0;if((h&255)<(d[m>>0]|0))j=h&255;else{f=g;g=34;break}}if((g|0)==28)Ra(225e3,224064,2010,225512);else if((g|0)==32)Ra(225e3,224064,2010,225512);else if((g|0)==34){s=c[r>>2]|0;break}else if((g|0)==39){i=v;return f|0}}else{f=g;s=h}while(0);h=f&65535;f=(f&65535)<3?h:3;c[r>>2]=s+f;h=h-f|0;b[t>>1]=h;f=3-f|0;g=f&65535;if(!g){w=1;i=v;return w|0}if(h&65535)Ra(225472,224064,2095,225496);w=u+1216|0;s=w;r=c[s>>2]|0;s=c[s+4>>2]|0;t=(0>s>>>0|0==(s|0)&g>>>0>r>>>0?r&65535:f&65535)&65535;q=u+1200|0;e=q;e=yfa(t|0,0,c[e>>2]|0,c[e+4>>2]|0)|0;c[q>>2]=e;c[q+4>>2]=H;t=xfa(r|0,s|0,t|0,0)|0;c[w>>2]=t;c[w+4>>2]=H;a[u+1208>>0]=0;w=1;i=v;return w|0}function v_(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+208|0;d=b;e=b+8|0;Cd[c[(c[a>>2]|0)+12>>2]&255](a,e);a=c[(c[a+12>>2]|0)+628>>2]|0;c[d>>2]=e;qx(a,224888,234328,d);i=b;return}function w_(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+208|0;b=e;e=e+8|0;Cd[c[(c[a>>2]|0)+12>>2]&255](a,e);a=a+12|0;d=c[(c[a>>2]|0)+628>>2]|0;c[b>>2]=e;Yv(d,224888,234328,b);u1(c[(c[a>>2]|0)+576>>2]|0)}function x_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=4;e=qea(40)|0;c[e>>2]=0;f=Afa(a+4|0,1,e|0,f|0)|0;e=H;s=0;a=s;s=0;if((a|0)!=0&(t|0)!=0){d=Cfa(c[a>>2]|0,f|0,e|0)|0;if(!d)Ua(a|0,t|0);H=t}else d=-1;if((d|0)==1)a=H;else a=0;while(1){if(a){a=0;g=6;break}s=0;Da(125,b|0,90,456);a=s;s=0;if((a|0)!=0&(t|0)!=0){d=Cfa(c[a>>2]|0,f|0,e|0)|0;if(!d)Ua(a|0,t|0);H=t}else d=-1;if((d|0)==1)a=H;else break}if((g|0)==6){rea(f|0);return a|0}g=1;rea(f|0);return g|0}function y_(a){a=a|0;return}function z_(e){e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;o=q;l=c[e+12>>2]|0;n=l+576|0;p=c[n>>2]|0;j=p+3280|0;f=0;e=0;a:while(1){g=c[j>>2]|0;if(g>>>0>=19){g=4;break}b:do switch(g|0){case 8:{g=c[n>>2]|0;h=c[g+340>>2]|0;if(!h)h=0;else{k=(c[h>>2]|0)+-4|0;f=h+4|0;e=k;h=k}k=g+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 13:{k=c[n>>2]|0;g=b[k+360>>1]|0;if(!(g<<16>>16))h=0;else{f=k+3284|0;a[f>>0]=-1;a[k+3285>>0]=-35;a[k+3286>>0]=0;a[k+3287>>0]=4;a[k+3288>>0]=(g&65535)>>>8;a[k+3289>>0]=g;e=6;h=6}k=k+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 14:{g=45;break a}case 15:{g=51;break a}case 4:{g=c[n>>2]|0;h=c[g+324>>2]|0;if(!h)h=0;else{k=(c[h>>2]|0)+-4|0;f=h+4|0;e=k;h=k}k=g+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 5:{g=c[n>>2]|0;h=c[g+328>>2]|0;if(!h)h=0;else{k=(c[h>>2]|0)+-4|0;f=h+4|0;e=k;h=k}k=g+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 10:{g=c[n>>2]|0;h=c[g+348>>2]|0;if(!h)h=0;else{k=(c[h>>2]|0)+-4|0;f=h+4|0;e=k;h=k}k=g+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 7:{g=c[n>>2]|0;h=c[g+336>>2]|0;if(!h)h=0;else{k=(c[h>>2]|0)+-4|0;f=h+4|0;e=k;h=k}k=g+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 12:{k=c[n>>2]|0;g=c[k+356>>2]|0;if(!g)h=0;else{h=(c[g>>2]|0)+-4|0;f=g+4|0;e=h}k=k+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 6:{g=c[n>>2]|0;h=c[g+332>>2]|0;if(!h)h=0;else{k=(c[h>>2]|0)+-4|0;f=h+4|0;e=k;h=k}k=g+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 3:{g=c[n>>2]|0;h=c[g+320>>2]|0;if(!h)h=0;else{k=(c[h>>2]|0)+-4|0;f=h+4|0;e=k;h=k}k=g+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 0:{g=5;break a}case 2:{g=c[n>>2]|0;h=c[g+316>>2]|0;if(!h)h=0;else{k=(c[h>>2]|0)+-4|0;f=h+4|0;e=k;h=k}k=g+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 1:{k=c[n>>2]|0;g=c[k+312>>2]|0;if(!g)h=0;else{h=(c[g>>2]|0)+-4|0;f=g+4|0;e=h}k=k+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 9:{g=c[n>>2]|0;h=c[g+344>>2]|0;if(!h)h=0;else{k=(c[h>>2]|0)+-4|0;f=h+4|0;e=k;h=k}k=g+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 11:{k=c[n>>2]|0;g=c[k+352>>2]|0;if(!g)h=0;else{h=(c[g>>2]|0)+-4|0;f=g+4|0;e=h}k=k+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 16:{m=c[n>>2]|0;h=m+1224|0;e=b[h>>1]|0;if(!(e<<16>>16)){if(!(t_(m)|0)){g=70;break a}e=b[h>>1]|0;if(!(e<<16>>16)){g=60;break a}}g=e&65535;f=c[m+1228>>2]|0;b[h>>1]=0;k=m+1216|0;if((c[k>>2]|0)==0&(c[k+4>>2]|0)==0){e=c[m+1188>>2]|0;if((e|0)==3){c[m+3280>>2]=18;h=g;e=g;break b}else if((e|0)!=2){h=g;e=g;break b}e=m+3280|0;if((c[m+1192>>2]|0)>>>0<(c[m+1196>>2]|0)>>>0){c[e>>2]=17;h=g;e=g;break b}else{c[e>>2]=18;h=g;e=g;break b}}else{h=g;e=g}break}case 18:{g=68;break a}case 17:{g=67;break a}default:{g=72;break a}}while(0);if(h){g=71;break}}switch(g|0){case 4:{Ra(224952,224064,2118,224976);break}case 5:{j=c[n>>2]|0;l=j+3284|0;a[l>>0]=-1;a[j+3285>>0]=-40;j=j+3280|0;c[j>>2]=(c[j>>2]|0)+1;j=2;o=p+1088|0;p=p+1092|0;c[p>>2]=j;c[o>>2]=l;i=q;return 1}case 45:{l=c[n>>2]|0;j=l+206|0;e=a[j>>0]|0;f=((e&255)*3|0)+8|0;if(f>>>0>=256)Ra(225240,224064,2257,225216);k=l+3284|0;a[k>>0]=-1;a[l+3285>>0]=a[l+364>>0]|0;a[l+3286>>0]=0;a[l+3287>>0]=f;a[l+3288>>0]=8;o=c[l+372>>2]|0;a[l+3289>>0]=o>>>8;a[l+3290>>0]=o;o=c[l+368>>2]|0;a[l+3291>>0]=o>>>8;a[l+3292>>0]=o;a[l+3293>>0]=e;if(!(e<<24>>24))e=0;else{h=l+205|0;f=0;e=0;while(1){g=f*3|0;a[l+(g+3294)>>0]=a[l+(f+376+(d[h>>0]|0))>>0]|0;a[l+(g+3295)>>0]=a[l+(f+379+(d[h>>0]|0))>>0]|0;a[l+(g+3296)>>0]=a[l+(f+382+(d[h>>0]|0))>>0]|0;g=e+1<<24>>24;e=a[j>>0]|0;if((g&255)<(e&255)){f=g&255;e=g}else break}}l=l+3280|0;c[l>>2]=(c[l>>2]|0)+1;l=k;j=((e&255)*3|0)+10|0;o=p+1088|0;p=p+1092|0;c[p>>2]=j;c[o>>2]=l;i=q;return 1}case 51:{m=c[n>>2]|0;k=m+206|0;e=a[k>>0]|0;f=((e&255)<<1)+6|0;if(f>>>0>=256)Ra(225168,224064,2293,225144);l=m+3284|0;a[l>>0]=-1;a[m+3285>>0]=-38;a[m+3286>>0]=0;a[m+3287>>0]=f;a[m+3288>>0]=e;if(!(e<<24>>24))e=0;else{g=m+205|0;j=a[g>>0]|0;h=0;e=0;while(1){f=h<<1;a[m+(f+3289)>>0]=a[m+(h+385+(j&255))>>0]|0;j=a[g>>0]|0;a[m+(f+3290)>>0]=a[m+(h+388+(j&255))>>0]|0;f=e+1<<24>>24;e=a[k>>0]|0;if((f&255)>=(e&255))break;else{h=f&255;e=f}}}j=(e&255)<<1;a[m+(j+3289)>>0]=0;a[m+(j+3290)>>0]=63;j=(d[k>>0]|0)<<1;a[m+(j+3291)>>0]=0;o=m+3280|0;c[o>>2]=(c[o>>2]|0)+1;j=j+8|0;o=p+1088|0;p=p+1092|0;c[p>>2]=j;c[o>>2]=l;i=q;return 1}case 60:{Ra(225e3,224064,2327,225024);break}case 67:{j=c[n>>2]|0;l=j+3284|0;a[l>>0]=-1;o=j+362|0;k=a[o>>0]|0;a[j+3285>>0]=(k&255)+208;k=k+1<<24>>24;a[o>>0]=k<<24>>24==8?0:k;c[j+3280>>2]=16;j=2;o=p+1088|0;p=p+1092|0;c[p>>2]=j;c[o>>2]=l;i=q;return 1}case 68:{j=c[n>>2]|0;l=j+3284|0;a[l>>0]=-1;a[j+3285>>0]=-39;j=2;o=p+1088|0;p=p+1092|0;c[p>>2]=j;c[o>>2]=l;i=q;return 1}case 70:{Yv(c[l+628>>2]|0,224888,224920,o);u1(c[n>>2]|0);break}case 71:{o=p+1088|0;p=p+1092|0;c[p>>2]=e;c[o>>2]=f;i=q;return 1}case 72:while(1)g=72}return 0}function A_(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;b=c[a+12>>2]|0;Yv(c[b+628>>2]|0,224888,224896,d);u1(c[b+576>>2]|0)}function B_(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;b=c[a+12>>2]|0;Yv(c[b+628>>2]|0,224888,224896,d);u1(c[b+576>>2]|0);return 0}function C_(a){a=a|0;return}function D_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=4;e=qea(40)|0;c[e>>2]=0;f=Afa(a+4|0,1,e|0,f|0)|0;e=H;s=0;a=s;s=0;if((a|0)!=0&(t|0)!=0){d=Cfa(c[a>>2]|0,f|0,e|0)|0;if(!d)Ua(a|0,t|0);H=t}else d=-1;if((d|0)==1)a=H;else a=0;while(1){if(a){a=0;g=6;break}s=0;ya(282,b|0,1)|0;a=s;s=0;if((a|0)!=0&(t|0)!=0){d=Cfa(c[a>>2]|0,f|0,e|0)|0;if(!d)Ua(a|0,t|0);H=t}else d=-1;if((d|0)==1)a=H;else break}if((g|0)==6){rea(f|0);return a|0}g=1;rea(f|0);return g|0}function E_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=4;e=qea(40)|0;c[e>>2]=0;f=Afa(a+4|0,1,e|0,f|0)|0;e=H;s=0;a=s;s=0;if((a|0)!=0&(t|0)!=0){d=Cfa(c[a>>2]|0,f|0,e|0)|0;if(!d)Ua(a|0,t|0);H=t}else d=-1;if((d|0)==1)a=H;else a=0;while(1){if(a){a=0;g=6;break}s=0;na(227,b|0)|0;a=s;s=0;if((a|0)!=0&(t|0)!=0){d=Cfa(c[a>>2]|0,f|0,e|0)|0;if(!d)Ua(a|0,t|0);H=t}else d=-1;if((d|0)==1)a=H;else break}if((g|0)==6){rea(f|0);return a|0}g=1;rea(f|0);return g|0}function F_(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=4;g=qea(40)|0;c[g>>2]=0;h=Afa(a+4|0,1,g|0,h|0)|0;g=H;s=0;a=s;s=0;if((a|0)!=0&(t|0)!=0){f=Cfa(c[a>>2]|0,h|0,g|0)|0;if(!f)Ua(a|0,t|0);H=t}else f=-1;if((f|0)==1)a=H;else a=0;while(1){if(a){a=0;i=6;break}s=0;qa(202,b|0,d|0,e|0)|0;a=s;s=0;if((a|0)!=0&(t|0)!=0){f=Cfa(c[a>>2]|0,h|0,g|0)|0;if(!f)Ua(a|0,t|0);H=t}else f=-1;if((f|0)==1)a=H;else break}if((i|0)==6){rea(h|0);return a|0}e=1;rea(h|0);return e|0}function G_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=4;f=qea(40)|0;c[f>>2]=0;g=Afa(a+4|0,1,f|0,g|0)|0;f=H;s=0;a=s;s=0;if((a|0)!=0&(t|0)!=0){e=Cfa(c[a>>2]|0,g|0,f|0)|0;if(!e)Ua(a|0,t|0);H=t}else e=-1;if((e|0)==1)a=H;else a=0;while(1){if(a){a=0;h=6;break}s=0;qa(186,b|0,d|0,1)|0;a=s;s=0;if((a|0)!=0&(t|0)!=0){e=Cfa(c[a>>2]|0,g|0,f|0)|0;if(!e)Ua(a|0,t|0);H=t}else e=-1;if((e|0)==1)a=H;else break}if((h|0)==6){rea(g|0);return a|0}h=1;rea(g|0);return h|0}function H_(a){a=a|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;f=h;g=c[a+576>>2]|0;d=c[g>>2]|0;if((d|0)==1){g=1;i=h;return g|0}else if((d|0)==3){d=b[a+86>>1]|0;if(d<<16>>16!=3){g=c[a+628>>2]|0;c[f>>2]=d&65535;Yv(g,230256,230344,f);g=0;i=h;return g|0}}else if((d|0)==2){d=b[a+84>>1]|0;if(!(d<<16>>16==32|d<<16>>16==16|d<<16>>16==8)){g=c[a+628>>2]|0;c[f>>2]=d&65535;Yv(g,230256,230272,f);g=0;i=h;return g|0}}else{g=c[a+628>>2]|0;c[f>>2]=d;Yv(g,230256,230408,f);g=0;i=h;return g|0}if((b[a+126>>1]|0)==1)d=e[a+98>>1]|0;else d=1;c[g+4>>2]=d;if(!(c[a+12>>2]&1024)){d=Xw(a)|0;c[g+8>>2]=d}else{d=lx(a)|0;c[g+8>>2]=d}g=(d|0)!=0&1;i=h;return g|0}function I_(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;j=c[(c[b+576>>2]|0)+4>>2]|0;if((f|0)%(j|0)|0)Ra(230224,229736,248,230664);if((j|0)>=(f|0))return;if((j|0)==4){b=f+-4|0;if((b|0)<=0)return;g=a[e+3>>0]|0;h=a[e+2>>0]|0;i=a[e+1>>0]|0;j=e;f=a[e>>0]|0;do{k=j;j=j+4|0;f=(a[j>>0]|0)+f|0;a[j>>0]=f;e=k+5|0;i=(a[e>>0]|0)+i|0;a[e>>0]=i;e=k+6|0;h=(a[e>>0]|0)+h|0;a[e>>0]=h;k=k+7|0;g=(a[k>>0]|0)+g|0;a[k>>0]=g;b=b+-4|0}while((b|0)>0);return}else if((j|0)==3){b=f+-3|0;if((b|0)<=0)return;h=a[e+2>>0]|0;f=a[e+1>>0]|0;i=e;g=a[e>>0]|0;do{k=i;i=i+3|0;g=(a[i>>0]|0)+g|0;a[i>>0]=g;j=k+4|0;f=(a[j>>0]|0)+f|0;a[j>>0]=f;k=k+5|0;h=(a[k>>0]|0)+h|0;a[k>>0]=h;b=b+-3|0}while((b|0)>0);return}else{i=j+-4|0;k=(i|0)>0;h=f-j|0;b=e;do{switch(j|0){case 4:{g=16;break}case 1:{g=19;break}case 0:break;case 2:{g=18;break}case 3:{g=17;break}default:if(k){f=b;g=i;while(1){e=f+j|0;a[e>>0]=(d[f>>0]|0)+(d[e>>0]|0);g=g+-1|0;if((g|0)<=0)break;else f=f+1|0}b=b+i|0;g=16}else g=16}if((g|0)==16){e=b+j|0;a[e>>0]=(d[b>>0]|0)+(d[e>>0]|0);b=b+1|0;g=17}if((g|0)==17){e=b+j|0;a[e>>0]=(d[b>>0]|0)+(d[e>>0]|0);b=b+1|0;g=18}if((g|0)==18){e=b+j|0;a[e>>0]=(d[b>>0]|0)+(d[e>>0]|0);b=b+1|0;g=19}if((g|0)==19){g=0;e=b+j|0;a[e>>0]=(d[b>>0]|0)+(d[e>>0]|0);b=b+1|0}h=h-j|0}while((h|0)>0);return}}function J_(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=c[(c[a+576>>2]|0)+4>>2]|0;a=(f|0)/2|0;if((f|0)%(k<<1|0)|0)Ra(230184,229736,318,230648);if((a|0)<=(k|0))return;h=k+-4|0;i=(h|0)>0;g=a-k|0;a=d;do{switch(k|0){case 3:{j=10;break}case 0:break;case 1:{j=12;break}case 4:{j=9;break}case 2:{j=11;break}default:if(i){f=h;d=a;while(1){j=d+(k<<1)|0;b[j>>1]=(e[j>>1]|0)+(e[d>>1]|0);f=f+-1|0;if((f|0)<=0)break;else d=d+2|0}a=a+(h<<1)|0;j=9}else j=9}if((j|0)==9){d=a+(k<<1)|0;b[d>>1]=(e[d>>1]|0)+(e[a>>1]|0);a=a+2|0;j=10}if((j|0)==10){d=a+(k<<1)|0;b[d>>1]=(e[d>>1]|0)+(e[a>>1]|0);a=a+2|0;j=11}if((j|0)==11){d=a+(k<<1)|0;b[d>>1]=(e[d>>1]|0)+(e[a>>1]|0);a=a+2|0;j=12}if((j|0)==12){j=0;d=a+(k<<1)|0;b[d>>1]=(e[d>>1]|0)+(e[a>>1]|0);a=a+2|0}g=g-k|0}while((g|0)>0);return}function K_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=c[(c[a+576>>2]|0)+4>>2]|0;a=(d|0)/4|0;if((d|0)%(i<<2|0)|0)Ra(230144,229736,355,230632);if((a|0)<=(i|0))return;f=i+-4|0;g=(f|0)>0;e=a-i|0;a=b;do{switch(i|0){case 4:{h=9;break}case 3:{h=10;break}case 1:{h=12;break}case 2:{h=11;break}case 0:break;default:if(g){d=f;b=a;while(1){h=b+(i<<2)|0;c[h>>2]=(c[h>>2]|0)+(c[b>>2]|0);d=d+-1|0;if((d|0)<=0)break;else b=b+4|0}a=a+(f<<2)|0;h=9}else h=9}if((h|0)==9){b=a+(i<<2)|0;c[b>>2]=(c[b>>2]|0)+(c[a>>2]|0);a=a+4|0;h=10}if((h|0)==10){b=a+(i<<2)|0;c[b>>2]=(c[b>>2]|0)+(c[a>>2]|0);a=a+4|0;h=11}if((h|0)==11){b=a+(i<<2)|0;c[b>>2]=(c[b>>2]|0)+(c[a>>2]|0);a=a+4|0;h=12}if((h|0)==12){h=0;b=a+(i<<2)|0;c[b>>2]=(c[b>>2]|0)+(c[a>>2]|0);a=a+4|0}e=e-i|0}while((e|0)>0);return}function L_(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[a+576>>2]|0;if(!f)Ra(234176,229736,413,230584);g=c[f+28>>2]|0;if(!g)Ra(230608,229736,414,230584);f=f+40|0;if(!(c[f>>2]|0))Ra(230560,229736,415,230584);if(!(Xd[g&255](a,b,d,e)|0)){a=0;return a|0}Ud[c[f>>2]&255](a,b,d);a=1;return a|0}function M_(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=c[a+576>>2]|0;if(!g)Ra(234176,229736,436,230488);f=c[g+36>>2]|0;if(!f)Ra(230512,229736,437,230488);if(!(Xd[f&255](a,b,d,e)|0)){a=0;return a|0}h=c[g+8>>2]|0;if((h|0)<=0)Ra(230056,229736,441,230488);if((d|0)%(h|0)|0)Ra(230536,229736,442,230488);e=g+40|0;f=c[e>>2]|0;if(!f)Ra(230560,229736,443,230488);if((d|0)>0)g=b;else{a=1;return a|0}while(1){Ud[f&255](a,g,h);d=d-h|0;if((d|0)<=0){d=1;break}g=g+h|0;f=c[e>>2]|0}return d|0}function N_(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=c[(c[a+576>>2]|0)+4>>2]|0;a=(f|0)/2|0;if((f|0)%(k<<1|0)|0)Ra(230184,229736,299,230472);if((a|0)<=(k|0))return;$w(d,a);h=k+-4|0;i=(h|0)>0;g=a-k|0;a=d;do{switch(k|0){case 3:{j=10;break}case 2:{j=11;break}case 4:{j=9;break}case 1:{j=12;break}case 0:break;default:if(i){f=h;d=a;while(1){j=d+(k<<1)|0;b[j>>1]=(e[j>>1]|0)+(e[d>>1]|0);f=f+-1|0;if((f|0)<=0)break;else d=d+2|0}a=a+(h<<1)|0;j=9}else j=9}if((j|0)==9){d=a+(k<<1)|0;b[d>>1]=(e[d>>1]|0)+(e[a>>1]|0);a=a+2|0;j=10}if((j|0)==10){d=a+(k<<1)|0;b[d>>1]=(e[d>>1]|0)+(e[a>>1]|0);a=a+2|0;j=11}if((j|0)==11){d=a+(k<<1)|0;b[d>>1]=(e[d>>1]|0)+(e[a>>1]|0);a=a+2|0;j=12}if((j|0)==12){j=0;d=a+(k<<1)|0;b[d>>1]=(e[d>>1]|0)+(e[a>>1]|0);a=a+2|0}g=g-k|0}while((g|0)>0);return}function O_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=c[(c[a+576>>2]|0)+4>>2]|0;a=(d|0)/4|0;if((d|0)%(i<<2|0)|0)Ra(230144,229736,336,230456);if((a|0)<=(i|0))return;bx(b,a);f=i+-4|0;g=(f|0)>0;e=a-i|0;a=b;do{switch(i|0){case 2:{h=11;break}case 0:break;case 3:{h=10;break}case 1:{h=12;break}case 4:{h=9;break}default:if(g){d=f;b=a;while(1){h=b+(i<<2)|0;c[h>>2]=(c[h>>2]|0)+(c[b>>2]|0);d=d+-1|0;if((d|0)<=0)break;else b=b+4|0}a=a+(f<<2)|0;h=9}else h=9}if((h|0)==9){b=a+(i<<2)|0;c[b>>2]=(c[b>>2]|0)+(c[a>>2]|0);a=a+4|0;h=10}if((h|0)==10){b=a+(i<<2)|0;c[b>>2]=(c[b>>2]|0)+(c[a>>2]|0);a=a+4|0;h=11}if((h|0)==11){b=a+(i<<2)|0;c[b>>2]=(c[b>>2]|0)+(c[a>>2]|0);a=a+4|0;h=12}if((h|0)==12){h=0;b=a+(i<<2)|0;c[b>>2]=(c[b>>2]|0)+(c[a>>2]|0);a=a+4|0}e=e-i|0}while((e|0)>0);return}function P_(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;n=c[(c[b+576>>2]|0)+4>>2]|0;m=(e[b+84>>1]|0)>>>3;o=m&65535;p=(g>>>0)/(o>>>0)|0;q=_J(g)|0;if((g>>>0)%((da(o,n)|0)>>>0)|0)Ra(229904,229736,379,230448);if(!q)return;a:do if((n|0)<(g|0)){i=n+-4|0;k=(i|0)>0;l=g;b=f;while(1){switch(n|0){case 4:{j=10;break}case 1:{j=13;break}case 0:break;case 3:{j=11;break}case 2:{j=12;break}default:if(k){j=b;h=i;while(1){r=j+n|0;a[r>>0]=(d[r>>0]|0)+(d[j>>0]|0);h=h+-1|0;if((h|0)<=0)break;else j=j+1|0}b=b+i|0;j=10}else j=10}if((j|0)==10){r=b+n|0;a[r>>0]=(d[r>>0]|0)+(d[b>>0]|0);b=b+1|0;j=11}if((j|0)==11){r=b+n|0;a[r>>0]=(d[r>>0]|0)+(d[b>>0]|0);b=b+1|0;j=12}if((j|0)==12){r=b+n|0;a[r>>0]=(d[r>>0]|0)+(d[b>>0]|0);b=b+1|0;j=13}if((j|0)==13){j=0;r=b+n|0;a[r>>0]=(d[r>>0]|0)+(d[b>>0]|0);b=b+1|0}l=l-n|0;if((l|0)<=(n|0))break a}}while(0);cK(q,f,g);if((p|0)>0){b=m<<16>>16==0;h=o+-1|0;k=0;do{if(!b){i=da(k,o)|0;j=0;do{a[f+(j+i)>>0]=a[q+((da(h-j|0,p)|0)+k)>>0]|0;j=j+1|0}while((j|0)!=(o|0))}k=k+1|0}while((k|0)<(p|0))}$J(q);return}function Q_(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=c[(c[b+576>>2]|0)+4>>2]|0;if((f|0)%(l|0)|0)Ra(230224,229736,461,230240);if((l|0)>=(f|0))return;f=f-l|0;if((l|0)==3){g=a[e+2>>0]|0;h=e;i=a[e+1>>0]|0;b=a[e>>0]|0;do{k=h;h=h+3|0;j=b;b=a[h>>0]|0;a[h>>0]=b-j;j=k+4|0;e=i;i=a[j>>0]|0;a[j>>0]=i-e;k=k+5|0;j=g;g=a[k>>0]|0;a[k>>0]=g-j;f=f+-3|0}while((f|0)>0);return}else if((l|0)==4){h=a[e+3>>0]|0;g=a[e+2>>0]|0;i=e;j=a[e+1>>0]|0;b=a[e>>0]|0;do{k=i;i=i+4|0;e=b;b=a[i>>0]|0;a[i>>0]=b-e;e=k+5|0;l=j;j=a[e>>0]|0;a[e>>0]=j-l;e=k+6|0;l=g;g=a[e>>0]|0;a[e>>0]=g-l;k=k+7|0;e=h;h=a[k>>0]|0;a[k>>0]=h-e;f=f+-4|0}while((f|0)>0);return}else{j=l+-4|0;i=(j|0)>0;k=4-l|0;g=f;b=e+(f+-1)|0;do{if((l|0)==2)h=16;else if(l)if((l|0)==3)h=15;else if((l|0)==1)h=17;else{if(i){h=b;f=j;while(1){e=h+l|0;a[e>>0]=(d[e>>0]|0)-(d[h>>0]|0);f=f+-1|0;if((f|0)<=0)break;else h=h+-1|0}b=b+k|0}h=b+l|0;a[h>>0]=(d[h>>0]|0)-(d[b>>0]|0);b=b+-1|0;h=15}if((h|0)==15){e=b+l|0;a[e>>0]=(d[e>>0]|0)-(d[b>>0]|0);b=b+-1|0;h=16}if((h|0)==16){e=b+l|0;a[e>>0]=(d[e>>0]|0)-(d[b>>0]|0);b=b+-1|0;h=17}if((h|0)==17){h=0;e=b+l|0;a[e>>0]=(d[e>>0]|0)-(d[b>>0]|0);b=b+-1|0}g=g-l|0}while((g|0)>0);return}}function R_(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=c[(c[a+576>>2]|0)+4>>2]|0;a=(f|0)/2|0;if((f|0)%(l<<1|0)|0)Ra(230184,229736,509,230208);if((a|0)<=(l|0))return;a=a-l|0;g=l+-4|0;h=(g|0)>0;i=4-l|0;j=a;a=d+(a+-1<<1)|0;do{switch(l|0){case 4:{k=9;break}case 2:{k=11;break}case 0:break;case 1:{k=12;break}case 3:{k=10;break}default:if(h){f=g;d=a;while(1){k=d+(l<<1)|0;b[k>>1]=(e[k>>1]|0)-(e[d>>1]|0);f=f+-1|0;if((f|0)<=0)break;else d=d+-2|0}a=a+(i<<1)|0;k=9}else k=9}if((k|0)==9){d=a+(l<<1)|0;b[d>>1]=(e[d>>1]|0)-(e[a>>1]|0);a=a+-2|0;k=10}if((k|0)==10){d=a+(l<<1)|0;b[d>>1]=(e[d>>1]|0)-(e[a>>1]|0);a=a+-2|0;k=11}if((k|0)==11){d=a+(l<<1)|0;b[d>>1]=(e[d>>1]|0)-(e[a>>1]|0);a=a+-2|0;k=12}if((k|0)==12){k=0;d=a+(l<<1)|0;b[d>>1]=(e[d>>1]|0)-(e[a>>1]|0);a=a+-2|0}j=j-l|0}while((j|0)>0);return}function S_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=c[(c[a+576>>2]|0)+4>>2]|0;a=(d|0)/4|0;if((d|0)%(i<<2|0)|0)Ra(230144,229736,529,230168);if((a|0)<=(i|0))return;d=a-i|0;a=b+(d+-1<<2)|0;f=i+-4|0;g=(f|0)>0;if((i|0)==4){while(1){h=a+16|0;c[h>>2]=(c[h>>2]|0)-(c[a>>2]|0);h=a+12|0;c[h>>2]=(c[h>>2]|0)-(c[a+-4>>2]|0);h=a+8|0;c[h>>2]=(c[h>>2]|0)-(c[a+-8>>2]|0);h=a+4|0;c[h>>2]=(c[h>>2]|0)-(c[a+-12>>2]|0);d=d+-4|0;if((d|0)<=0)break;else a=a+-16|0}return}h=4-i|0;do{if((i|0)==1)e=14;else if((i|0)==3)e=12;else if(i)if((i|0)==2)e=13;else{if(g){b=f;e=a;while(1){j=e+(i<<2)|0;c[j>>2]=(c[j>>2]|0)-(c[e>>2]|0);b=b+-1|0;if((b|0)<=0)break;else e=e+-4|0}a=a+(h<<2)|0}e=a+(i<<2)|0;c[e>>2]=(c[e>>2]|0)-(c[a>>2]|0);a=a+-4|0;e=12}if((e|0)==12){j=a+(i<<2)|0;c[j>>2]=(c[j>>2]|0)-(c[a>>2]|0);a=a+-4|0;e=13}if((e|0)==13){j=a+(i<<2)|0;c[j>>2]=(c[j>>2]|0)-(c[a>>2]|0);a=a+-4|0;e=14}if((e|0)==14){e=0;j=a+(i<<2)|0;c[j>>2]=(c[j>>2]|0)-(c[a>>2]|0);a=a+-4|0}d=d-i|0}while((d|0)>0);return}function T_(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[a+576>>2]|0;if(!f)Ra(234176,229736,584,230096);g=c[f+24>>2]|0;if(!g)Ra(229960,229736,585,230096);f=f+12|0;if(!(c[f>>2]|0))Ra(230120,229736,586,230096);else{Ud[g&255](a,b,d);return Xd[c[f>>2]&255](a,b,d,e)|0}return 0}function U_(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;g=l;f=c[a+576>>2]|0;if(!f)Ra(234176,229736,603,229936);h=f+24|0;if(!(c[h>>2]|0))Ra(229960,229736,604,229936);j=f+20|0;if(!(c[j>>2]|0))Ra(229984,229736,605,229936);k=_J(d)|0;if(!k){j=c[a+628>>2]|0;c[g>>2]=d;Yv(j,229936,230008,g);d=0;i=l;return d|0}qfa(k|0,b|0,d|0)|0;f=c[f+8>>2]|0;if((f|0)<=0)Ra(230056,229736,623,229936);if((d|0)%(f|0)|0)Ra(230072,229736,624,229936);if((d|0)>0){b=k;g=d;while(1){Ud[c[h>>2]&255](a,b,f);g=g-f|0;if((g|0)<=0)break;else b=b+f|0}}d=Xd[c[j>>2]&255](a,k,d,e)|0;$J(k);i=l;return d|0}function V_(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=c[(c[b+576>>2]|0)+4>>2]|0;b=(e[b+84>>1]|0)>>>3;l=b&65535;m=(g>>>0)/(l>>>0)|0;n=_J(g)|0;if((g>>>0)%((da(l,p)|0)>>>0)|0)Ra(229904,229736,554,229928);if(!n)return;cK(n,f,g);if((m|0)>0){b=b<<16>>16==0;h=l+-1|0;k=0;do{if(!b){i=da(k,l)|0;j=0;do{a[f+((da(h-j|0,m)|0)+k)>>0]=a[n+(j+i)>>0]|0;j=j+1|0}while((j|0)!=(l|0))}k=k+1|0}while((k|0)<(m|0))}$J(n);if((p|0)>=(g|0))return;n=p+-4|0;j=(n|0)>0;l=4-p|0;k=g;b=f+(g+-1-p)|0;do{switch(p|0){case 2:{o=18;break}case 4:{o=16;break}case 1:{o=19;break}case 0:break;case 3:{o=17;break}default:if(j){h=b;i=n;while(1){o=h+p|0;a[o>>0]=(d[o>>0]|0)-(d[h>>0]|0);i=i+-1|0;if((i|0)<=0)break;else h=h+-1|0}b=b+l|0;o=16}else o=16}if((o|0)==16){f=b+p|0;a[f>>0]=(d[f>>0]|0)-(d[b>>0]|0);b=b+-1|0;o=17}if((o|0)==17){f=b+p|0;a[f>>0]=(d[f>>0]|0)-(d[b>>0]|0);b=b+-1|0;o=18}if((o|0)==18){f=b+p|0;a[f>>0]=(d[f>>0]|0)-(d[b>>0]|0);b=b+-1|0;o=19}if((o|0)==19){o=0;f=b+p|0;a[f>>0]=(d[f>>0]|0)-(d[b>>0]|0);b=b+-1|0}k=k-p|0}while((k|0)>(p|0));return}function W_(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0.0,h=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0,u=0.0,v=0.0,w=0,x=0.0;if((d|0)>0){m=d<<1;l=m+-2|0;h=+g[a>>2];j=+g[a+4>>2];i=+g[a+8>>2];f=+g[a+12>>2];a=b;k=0;while(1){w=a+-16|0;t=a+-12|0;v=+g[t>>2];q=a+-8|0;s=+g[q>>2];n=a+-4|0;p=+g[n>>2];x=h;h=+g[a>>2];u=j;j=+g[a+4>>2];r=i;i=+g[a+8>>2];o=f;f=+g[a+12>>2];g[w>>2]=+g[w>>2]+(x+h)*e;g[t>>2]=v+(u+j)*e;g[q>>2]=s+(r+i)*e;g[n>>2]=p+(o+f)*e;k=k+1|0;if((k|0)==(d|0))break;else a=a+32|0}a=b+(l<<4)|0;b=b+(m<<4)|0}if((d|0)>=(c|0))return;f=e+e;h=f*+g[a>>2];i=f*+g[a+4>>2];j=f*+g[a+8>>2];f=f*+g[a+12>>2];while(1){q=b+-16|0;n=b+-12|0;u=+g[n>>2];t=b+-8|0;v=+g[t>>2];w=b+-4|0;x=+g[w>>2];g[q>>2]=h+ +g[q>>2];g[n>>2]=i+u;g[t>>2]=j+v;g[w>>2]=f+x;d=d+1|0;if((d|0)==(c|0))break;else b=b+32|0}return}function X_(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=g+16|0;if(!(c[C>>2]|0)){C=1;return C|0}B=0;A=c[g+24>>2]|0;while(1){k=i+44|0;j=c[k>>2]|0;l=i+8|0;if(!j){g=i+12|0;j=sea(da(c[g>>2]|0,c[l>>2]|0)|0,4)|0;c[k>>2]=j;if(!j){h=0;i=65;break}}else g=i+12|0;q=A+36|0;c[i+36>>2]=c[q>>2];x=c[A+24>>2]|0;t=c[f+24>>2]|0;q=c[q>>2]|0;x=((x&7|0)!=0&1)+(x>>>3)|0;x=(x|0)==3?4:x;o=c[t+(q*136|0)+8>>2]|0;m=c[t+(q*136|0)>>2]|0;v=o-m|0;s=c[t+(q*136|0)+12>>2]|0;q=c[t+(q*136|0)+4>>2]|0;t=s-q|0;k=c[i+16>>2]|0;p=c[i+40>>2]|0;n=1<>31;k=yfa(k|0,((k|0)<0)<<31>>31|0,-1,-1)|0;k=yfa(k|0,H|0,n|0,w|0)|0;k=pfa(k|0,H|0,p|0)|0;r=c[i+20>>2]|0;r=yfa(r|0,((r|0)<0)<<31>>31|0,-1,-1)|0;w=yfa(r|0,H|0,n|0,w|0)|0;p=pfa(w|0,H|0,p|0)|0;w=c[l>>2]|0;n=k+w|0;l=c[g>>2]|0;r=p+l|0;if((m|0)<=-1){i=7;break}if((o|0)<=-1){i=9;break}do if(k>>>0>>0){g=m-k|0;if(o>>>0>n>>>0){z=n-m|0;u=0;m=v-z|0;n=g}else{u=0;m=0;n=g;z=v}}else{g=k-m|0;if(o>>>0>n>>>0){u=g;m=o-n|0;n=0;z=w;break}else{u=g;m=0;n=0;z=v-g|0;break}}while(0);do if(p>>>0>>0){l=q-p|0;if(s>>>0>r>>>0){k=r-q|0;y=k;g=0;k=t-k|0}else{y=t;g=0;k=0}}else{g=p-q|0;if(s>>>0>r>>>0){y=l;k=s-r|0;l=0;break}else{y=t-g|0;k=0;l=0;break}}while(0);if((u|m|z|k|g|y|0)<0){h=0;i=65;break}g=(da(g,v)|0)+u|0;p=u+m|0;q=(da(k,v)|0)-u|0;o=w-z|0;k=j+((da(w,l)|0)+n<<2)|0;if((x|0)==4){h=h+(g<<2)|0;if(y){m=(z|0)==0;n=0;while(1){if(m)g=k;else{g=k+(z<<2)|0;l=0;j=h;while(1){c[k>>2]=c[j>>2];l=l+1|0;if((l|0)==(z|0))break;else{k=k+4|0;j=j+4|0}}h=h+(z<<2)|0}h=h+(p<<2)|0;n=n+1|0;if((n|0)==(y|0))break;else k=g+(o<<2)|0}}h=h+(q<<2)|0}else if((x|0)==1){h=h+g|0;g=(y|0)==0;if(!(c[A+32>>2]|0)){if(!g){m=(z|0)==0;n=0;while(1){if(m)g=k;else{g=k+(z<<2)|0;l=0;j=h;while(1){c[k>>2]=d[j>>0];l=l+1|0;if((l|0)==(z|0))break;else{k=k+4|0;j=j+1|0}}h=h+z|0}h=h+p|0;n=n+1|0;if((n|0)==(y|0))break;else k=g+(o<<2)|0}}}else if(!g){m=(z|0)==0;n=0;while(1){if(m)g=k;else{g=k+(z<<2)|0;l=0;j=h;while(1){c[k>>2]=a[j>>0];l=l+1|0;if((l|0)==(z|0))break;else{k=k+4|0;j=j+1|0}}h=h+z|0}h=h+p|0;n=n+1|0;if((n|0)==(y|0))break;else k=g+(o<<2)|0}}h=h+q|0}else if((x|0)==2){h=h+(g<<1)|0;g=(y|0)==0;if(!(c[A+32>>2]|0)){if(!g){m=(z|0)==0;n=0;while(1){if(m)g=k;else{g=k+(z<<2)|0;l=0;j=h;while(1){c[k>>2]=e[j>>1];l=l+1|0;if((l|0)==(z|0))break;else{k=k+4|0;j=j+2|0}}h=h+(z<<1)|0}h=h+(p<<1)|0;n=n+1|0;if((n|0)==(y|0))break;else k=g+(o<<2)|0}}}else if(!g){m=(z|0)==0;n=0;while(1){if(m)g=k;else{g=k+(z<<2)|0;l=0;j=h;while(1){c[k>>2]=b[j>>1];l=l+1|0;if((l|0)==(z|0))break;else{k=k+4|0;j=j+2|0}}h=h+(z<<1)|0}h=h+(p<<1)|0;n=n+1|0;if((n|0)==(y|0))break;else k=g+(o<<2)|0}}h=h+(q<<1)|0}B=B+1|0;if(B>>>0>=(c[C>>2]|0)>>>0){h=1;i=65;break}else{i=i+52|0;A=A+52|0;f=f+44|0}}if((i|0)==7)Ra(240992,236248,7782,241008);else if((i|0)==9)Ra(241040,236248,7783,241008);else if((i|0)==65)return h|0;return 0}function Y_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;if(!a)Ra(236352,236248,3909,240616);if(!f)Ra(249008,236248,3910,240616);if(!e)Ra(249408,236248,3911,240616);else{Gx(b,65424,2);Gx(b+2|0,10,2);e=a+196|0;Gx(b+4|0,c[e>>2]|0,2);Gx(b+10|0,c[a+12>>2]|0,1);Gx(b+11|0,c[(c[a+156>>2]|0)+((c[e>>2]|0)*5632|0)+5580>>2]|0,1);c[d>>2]=12;return}}function Z_(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;if(!a)Ra(236352,236248,2994,239288);if(!e)Ra(249008,236248,2995,239288);r=c[a+196>>2]|0;s=c[a+156>>2]|0;e=c[s+(r*5632|0)+5576>>2]|0;n=c[(c[a+80>>2]|0)+16>>2]|0;o=(c[s+(r*5632|0)+420>>2]|0)+1|0;h=n>>>0<257?1:2;q=da((h<<1)+5|0,o)|0;p=q+4|0;Gx(b,65375,2);Gx(b+2|0,q+2|0,2);if(!o){c[d>>2]=p;return}i=h+1|0;j=h+3|0;k=h|4;l=k+h|0;m=l+1|0;q=s+(r*5632|0)+8|0;f=e+4|0;g=0;a=b+4|0;e=s+(r*5632|0)+424|0;while(1){Gx(a,c[e>>2]|0,1);Gx(a+1|0,c[e+4>>2]|0,h);t=e+8|0;Gx(a+i|0,c[t>>2]|0,2);s=e+12|0;Gx(a+j|0,c[s>>2]|0,1);b=e+16|0;Gx(a+k|0,c[b>>2]|0,h);Gx(a+l|0,c[e+36>>2]|0,1);u=c[t>>2]|0;r=c[q>>2]|0;c[t>>2]=(u|0)<(r|0)?u:r;t=c[s>>2]|0;r=c[f>>2]|0;c[s>>2]=(t|0)<(r|0)?t:r;s=c[b>>2]|0;c[b>>2]=(s|0)<(n|0)?s:n;g=g+1|0;if((g|0)==(o|0))break;else{a=a+m|0;e=e+148|0}}c[d>>2]=p;return}function __(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0;j=i;i=i+16|0;if(!a)Ra(236352,236248,4217,240568);if(!h)Ra(249008,236248,4218,240568);if(!g)Ra(249408,236248,4219,240568);Gx(d,65427,2);c[b+4>>2]=c[a+8>>2];g=c[a+12>>2]|0;c[b+8>>2]=g;if(!g)c[(c[c[b+20>>2]>>2]|0)+840>>2]=0;c[e>>2]=0;if(!(PA(b,c[a+196>>2]|0,d+2|0,e,f+-4|0,0)|0)){ry(h,1,240592,j)|0;f=0;i=j;return f|0}else{c[e>>2]=(c[e>>2]|0)+2;f=1;i=j;return f|0}return 0}function $_(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if((da(c[b+28>>2]|0,c[b+24>>2]|0)|0)>>>0<=f>>>0)Ra(240008,236248,1594,240040);i=c[b+68>>2]|0;if(((c[i+(f*5632|0)+420>>2]|0)+1|0)>>>0<=e>>>0)Ra(240064,236248,1595,240040);if(!(i+(f*5632|0)|0))Ra(240104,236248,1599,240040);g=c[i+(f*5632|0)+4>>2]|0;h=235792;while(1){n=c[h>>2]|0;if((n|0)==-1|(n|0)==(g|0)){n=h;break}else h=h+12|0}g=a[n+4>>0]|0;if(!(g<<24>>24))Ra(240120,236248,1606,240040);if(!(a[b+89>>0]&8)){o=1;return o|0}j=d[b+88>>0]|0;k=i+(f*5632|0)+(e*148|0)+516|0;l=i+(f*5632|0)+(e*148|0)+512|0;m=i+(f*5632|0)+(e*148|0)+520|0;f=i+(f*5632|0)+(e*148|0)+508|0;i=g;h=0;g=1;while(1){i=i<<24>>24;if((i|0)==67)g=da(c[k>>2]|0,g)|0;else if((i|0)==80)g=da(c[m>>2]|0,g)|0;else if((i|0)==82)g=da(c[l>>2]|0,g)|0;else if((i|0)==76)g=da(c[f>>2]|0,g)|0;e=h+1|0;if((j|0)==(i|0))break;if((e|0)>=4){o=22;break}i=a[n+e+4>>0]|0;h=e}if((o|0)==22)return g|0;c[b+80>>2]=h;o=g;return o|0}function a$(a){a=a|0;return 0.0}function b$(a){a=a|0;return +(+((((c[a+5580>>2]|0)*14|0)+-14|0)>>>0))}function c$(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;i=c[a+408>>2]|0;g=a+224|0;if(c[g>>2]|0){h=i+68|0;f=c[h>>2]|0;if(!f){t=i+72|0;v1(a,c[t>>2]|0);f=c[g>>2]|0;c[h>>2]=f;c[t>>2]=(c[t>>2]|0)+1&7}c[h>>2]=f+-1}q=a+304|0;if((c[q>>2]|0)<=0)return 1;r=a+360|0;s=i+76|0;t=i+52|0;o=i+36|0;p=0;do{j=c[a+(p<<2)+308>>2]|0;m=c[(c[a+(j<<2)+280>>2]|0)+20>>2]|0;f=b[c[e+(p<<2)>>2]>>1]>>c[r>>2];l=s+(m<<2)|0;k=c[l>>2]|0;n=t+(j<<2)|0;g=c[n>>2]|0;h=k+g|0;j=o+(j<<2)|0;u=c[j>>2]|0;i=f-u|0;if((f|0)!=(u|0)){c[j>>2]=f;w1(a,h,1);if((i|0)>0){w1(a,k+(g+1)|0,0);f=g+2|0;g=4}else{w1(a,k+(g+1)|0,1);f=g+3|0;g=8;i=0-i|0}f=k+f|0;c[n>>2]=g;k=i+-1|0;if(k){w1(a,f,1);g=(c[l>>2]|0)+20|0;f=k>>1;if(!f){h=1;f=g}else{i=1;do{w1(a,g,1);i=i<<1;g=g+1|0;f=f>>1}while((f|0)!=0);h=i;f=g}}else h=0;w1(a,f,0);if((h|0)>=(1<>0]>>1|0)){if((h|0)>(1<>0]>>1|0))c[n>>2]=(c[n>>2]|0)+8}else c[n>>2]=0;i=f+14|0;f=h>>1;if(f)do{w1(a,i,(f&k|0)!=0&1);f=f>>1}while((f|0)!=0)}else{w1(a,h,0);c[n>>2]=0}p=p+1|0}while((p|0)<(c[q>>2]|0));return 1}function d$(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=c[a+408>>2]|0;g=a+224|0;if(c[g>>2]|0){h=t+68|0;f=c[h>>2]|0;if(!f){s=t+72|0;v1(a,c[s>>2]|0);f=c[g>>2]|0;c[h>>2]=f;c[s>>2]=(c[s>>2]|0)+1&7}c[h>>2]=f+-1}q=c[a+368>>2]|0;o=c[e>>2]|0;s=c[(c[a+280>>2]|0)+24>>2]|0;r=a+352|0;g=c[r>>2]|0;p=a+360|0;e=g;while(1){n=b[o+(c[q+(e<<2)>>2]<<1)>>1]|0;f=n<<16>>16;if(n<<16>>16>-1){if(f>>c[p>>2])break}else if(0-f>>c[p>>2])break;e=e+-1|0;if(!e){e=0;break}}n=c[a+348>>2]|0;f=n+-1|0;if((n|0)<=(e|0)){l=t+140+(s<<2)|0;m=t+204|0;n=a+s+184|0;do{i=(c[l>>2]|0)+(f*3|0)|0;w1(a,i,0);h=f;while(1){f=h+1|0;k=b[o+(c[q+(f<<2)>>2]<<1)>>1]|0;g=k<<16>>16;if(k<<16>>16>-1){g=g>>c[p>>2];if(g){k=16;break}}else{g=0-g>>c[p>>2];if(g){k=18;break}}w1(a,i+1|0,0);h=f;i=i+3|0}if((k|0)==16){w1(a,i+1|0,1);w1(a,m,0);j=h;h=g}else if((k|0)==18){w1(a,i+1|0,1);w1(a,m,1);j=h;h=g}g=i+2|0;k=h+-1|0;if(k){w1(a,g,1);if(k>>>0>=2){w1(a,g,1);i=(c[l>>2]|0)+((j|0)<(d[n>>0]|0|0)?189:217)|0;g=k>>2;if(!g){h=2;g=i}else{h=2;do{w1(a,i,1);h=h<<1;i=i+1|0;g=g>>1}while((g|0)!=0);g=i}}else h=1}else h=0;w1(a,g,0);i=g+14|0;g=h>>1;if(g)do{w1(a,i,(g&k|0)!=0&1);g=g>>1}while((g|0)!=0)}while((f|0)<(e|0));g=c[r>>2]|0}if((f|0)>=(g|0))return 1;w1(a,(c[t+140+(s<<2)>>2]|0)+(f*3|0)|0,1);return 1}function e$(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=c[a+408>>2]|0;f=a+224|0;if(c[f>>2]|0){g=h+68|0;e=c[g>>2]|0;if(!e){i=h+72|0;v1(a,c[i>>2]|0);e=c[f>>2]|0;c[g>>2]=e;c[i>>2]=(c[i>>2]|0)+1&7}c[g>>2]=e+-1}e=h+204|0;f=c[a+360>>2]|0;g=a+304|0;if((c[g>>2]|0)>0)h=0;else return 1;do{w1(a,e,(b[c[d+(h<<2)>>2]>>1]|0)>>>f&1);h=h+1|0}while((h|0)<(c[g>>2]|0));return 1}function f$(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=c[a+408>>2]|0;f=a+224|0;if(c[f>>2]|0){g=q+68|0;e=c[g>>2]|0;if(!e){p=q+72|0;v1(a,c[p>>2]|0);e=c[f>>2]|0;c[g>>2]=e;c[p>>2]=(c[p>>2]|0)+1&7}c[g>>2]=e+-1}n=c[a+368>>2]|0;l=c[d>>2]|0;p=c[(c[a+280>>2]|0)+24>>2]|0;o=a+352|0;f=c[o>>2]|0;m=a+360|0;d=f;while(1){h=b[l+(c[n+(d<<2)>>2]<<1)>>1]|0;e=h<<16>>16;if(h<<16>>16>-1){if(e>>c[m>>2]){j=10;break}}else if(0-e>>c[m>>2]){j=10;break}d=d+-1|0;if(!d){k=0;h=0;break}}a:do if((j|0)==10){g=a+356|0;if((d|0)>0){h=d;while(1){j=b[l+(c[n+(h<<2)>>2]<<1)>>1]|0;e=j<<16>>16;if(j<<16>>16>-1){if(e>>c[g>>2]){k=d;break a}}else if(0-e>>c[g>>2]){k=d;break a}e=h+-1|0;if((e|0)>0)h=e;else{k=d;h=e;break}}}else{k=d;h=d}}while(0);j=c[a+348>>2]|0;e=j+-1|0;if((j|0)<=(k|0)){g=q+140+(p<<2)|0;i=q+204|0;do{d=(c[g>>2]|0)+(e*3|0)|0;if((e|0)>=(h|0))w1(a,d,0);while(1){e=e+1|0;j=b[l+(c[n+(e<<2)>>2]<<1)>>1]|0;f=j<<16>>16;if(j<<16>>16>-1){f=f>>c[m>>2];if(f){j=21;break}}else{f=0-f>>c[m>>2];if(f){j=25;break}}w1(a,d+1|0,0);d=d+3|0}do if((j|0)==21)if(f>>>0>1){w1(a,d+2|0,f&1);break}else{w1(a,d+1|0,1);w1(a,i,0);break}else if((j|0)==25)if(f>>>0>1){w1(a,d+2|0,f&1);break}else{w1(a,d+1|0,1);w1(a,i,1);break}while(0)}while((e|0)<(k|0));f=c[o>>2]|0}if((e|0)>=(f|0))return 1;w1(a,(c[q+140+(p<<2)>>2]|0)+(e*3|0)|0,1);return 1}function g$(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;i=c[a+408>>2]|0;g=a+224|0;if(c[g>>2]|0){h=i+68|0;f=c[h>>2]|0;if(!f){y=i+72|0;v1(a,c[y>>2]|0);f=c[g>>2]|0;c[h>>2]=f;c[y>>2]=(c[y>>2]|0)+1&7}c[h>>2]=f+-1}s=c[a+368>>2]|0;t=a+304|0;if((c[t>>2]|0)<=0)return 1;u=i+76|0;v=i+52|0;w=i+36|0;x=a+372|0;y=i+140|0;q=i+204|0;r=0;do{p=c[e+(r<<2)>>2]|0;j=c[a+(r<<2)+308>>2]|0;o=c[a+(j<<2)+280>>2]|0;m=c[o+20>>2]|0;l=u+(m<<2)|0;k=c[l>>2]|0;n=v+(j<<2)|0;f=c[n>>2]|0;g=k+f|0;h=b[p>>1]|0;j=w+(j<<2)|0;A=c[j>>2]|0;i=h-A|0;if((h|0)!=(A|0)){c[j>>2]=h;w1(a,g,1);if((i|0)>0){w1(a,k+(f+1)|0,0);f=f+2|0;g=4}else{w1(a,k+(f+1)|0,1);f=f+3|0;g=8;i=0-i|0}f=k+f|0;c[n>>2]=g;k=i+-1|0;if(k){w1(a,f,1);g=(c[l>>2]|0)+20|0;f=k>>1;if(!f){h=1;f=g}else{i=1;do{w1(a,g,1);i=i<<1;g=g+1|0;f=f>>1}while((f|0)!=0);h=i;f=g}}else h=0;w1(a,f,0);if((h|0)>=(1<>0]>>1|0)){if((h|0)>(1<>0]>>1|0))c[n>>2]=(c[n>>2]|0)+8}else c[n>>2]=0;i=f+14|0;f=h>>1;if(f)do{w1(a,i,(f&k|0)!=0&1);f=f>>1}while((f|0)!=0)}else{w1(a,g,0);c[n>>2]=0}i=c[x>>2]|0;if(i){o=c[o+24>>2]|0;f=i;while(1){if(b[p+(c[s+(f<<2)>>2]<<1)>>1]|0){l=f;z=25;break}f=f+-1|0;if(!f){f=0;break}}if((z|0)==25){z=0;if((l|0)>0){m=y+(o<<2)|0;n=a+o+184|0;j=0;while(1){A=c[m>>2]|0;h=j*3|0;i=A+h|0;w1(a,i,0);f=j+1|0;k=b[p+(c[s+(f<<2)>>2]<<1)>>1]|0;g=k<<16>>16;h=A+(h+1)|0;if(!(k<<16>>16)){j=f;while(1){w1(a,h,0);g=i+3|0;f=j+1|0;k=b[p+(c[s+(f<<2)>>2]<<1)>>1]|0;h=i+4|0;if(!(k<<16>>16)){j=f;i=g}else{i=g;break}}g=k<<16>>16}w1(a,h,1);if(k<<16>>16>0)w1(a,q,0);else{w1(a,q,1);g=0-g|0}i=i+2|0;k=g+-1|0;if(k){w1(a,i,1);if(k>>>0>=2){w1(a,i,1);h=(c[m>>2]|0)+((j|0)<(d[n>>0]|0)?189:217)|0;i=k>>2;if(!i){g=2;i=h}else{g=2;do{w1(a,h,1);g=g<<1;h=h+1|0;i=i>>1}while((i|0)!=0);i=h}}else g=1}else g=0;w1(a,i,0);h=i+14|0;i=g>>1;if(i)do{w1(a,h,(i&k|0)!=0&1);i=i>>1}while((i|0)!=0);if((f|0)<(l|0))j=f;else break}i=c[x>>2]|0}else f=0}if((f|0)<(i|0))w1(a,(c[y+(o<<2)>>2]|0)+(f*3|0)|0,1)}r=r+1|0}while((r|0)<(c[t>>2]|0));return 1}function h$(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;G=a+388|0;K=c[G>>2]|0;B=(c[a+296>>2]|0)+-1|0;L=a+272|0;D=(c[L>>2]|0)+-1|0;I=K+16|0;e=c[I>>2]|0;x=K+20|0;h=c[x>>2]|0;do if((e|0)<(h|0)){H=K+12|0;F=a+276|0;y=a+404|0;g=K+8|0;z=K+24|0;A=a+408|0;f=c[H>>2]|0;a:while(1){if(f>>>0<=B>>>0){do{h=c[F>>2]|0;if((h|0)>0)if(f>>>0>>0){i=0;w=0;do{o=c[a+(w<<2)+280>>2]|0;p=o+4|0;q=c[(c[y>>2]|0)+(c[p>>2]<<2)+4>>2]|0;r=o+56|0;s=c[r>>2]|0;t=da(c[o+68>>2]|0,f)|0;u=o+40|0;v=o+60|0;if((c[v>>2]|0)>0){n=o+76|0;h=s;l=0;m=da(c[u>>2]|0,e)|0;while(1){if((c[g>>2]|0)>>>0>=D>>>0?(l+e|0)>=(c[n>>2]|0):0){sfa(c[z+(i<<2)>>2]|0,0,h<<7|0)|0;h=c[r>>2]|0;if((h|0)>0){j=c[z+(i+-1<<2)>>2]|0;k=0;do{b[c[z+(k+i<<2)>>2]>>1]=b[j>>1]|0;k=k+1|0}while((k|0)<(h|0))}}else J=14;if(((J|0)==14?(J=0,Md[q&63](a,o,c[d+(c[p>>2]<<2)>>2]|0,c[z+(i<<2)>>2]|0,m,t,s),C=c[r>>2]|0,(C|0)>(s|0)):0)?(sfa(c[z+(i+s<<2)>>2]|0,0,C-s<<7|0)|0,E=c[r>>2]|0,(s|0)<(E|0)):0){h=s;do{k=h+i|0;b[c[z+(k<<2)>>2]>>1]=b[c[z+(k+-1<<2)>>2]>>1]|0;h=h+1|0}while((h|0)<(E|0))}h=c[r>>2]|0;i=h+i|0;l=l+1|0;if((l|0)>=(c[v>>2]|0))break;else m=(c[u>>2]|0)+m|0}h=c[F>>2]|0}w=w+1|0}while((w|0)<(h|0))}else{i=0;w=0;do{v=c[a+(w<<2)+280>>2]|0;o=v+4|0;p=c[(c[y>>2]|0)+(c[o>>2]<<2)+4>>2]|0;q=v+56|0;r=c[v+72>>2]|0;s=da(c[v+68>>2]|0,f)|0;t=v+40|0;u=v+60|0;if((c[u>>2]|0)>0){n=v+76|0;l=0;m=da(c[t>>2]|0,e)|0;while(1){if((c[g>>2]|0)>>>0>=D>>>0?(l+e|0)>=(c[n>>2]|0):0){sfa(c[z+(i<<2)>>2]|0,0,c[q>>2]<<7|0)|0;h=c[q>>2]|0;if((h|0)>0){j=c[z+(i+-1<<2)>>2]|0;k=0;do{b[c[z+(k+i<<2)>>2]>>1]=b[j>>1]|0;k=k+1|0}while((k|0)<(h|0))}}else{Md[p&63](a,v,c[d+(c[o>>2]<<2)>>2]|0,c[z+(i<<2)>>2]|0,m,s,r);h=c[q>>2]|0;if((h|0)>(r|0)){sfa(c[z+(i+r<<2)>>2]|0,0,h-r<<7|0)|0;h=c[q>>2]|0;if((r|0)<(h|0)){j=r;do{k=j+i|0;b[c[z+(k<<2)>>2]>>1]=b[c[z+(k+-1<<2)>>2]>>1]|0;j=j+1|0}while((j|0)<(h|0))}}}i=h+i|0;l=l+1|0;if((l|0)>=(c[u>>2]|0))break;else m=(c[t>>2]|0)+m|0}h=c[F>>2]|0}w=w+1|0}while((w|0)<(h|0))}if(!((Pd[c[(c[A>>2]|0)+4>>2]&511](a,z)|0)<<24>>24))break a;f=f+1|0}while(f>>>0<=B>>>0);h=c[x>>2]|0}c[H>>2]=0;e=e+1|0;if((e|0)>=(h|0)){J=38;break}else f=0}if((J|0)==38){e=F;f=c[G>>2]|0;break}c[I>>2]=e;c[H>>2]=f;L=0;return L|0}else{g=K+8|0;e=a+276|0;f=K}while(0);c[K+8>>2]=(c[g>>2]|0)+1;do if((c[e>>2]|0)<=1){e=c[a+280>>2]|0;if((c[f+8>>2]|0)>>>0<((c[L>>2]|0)+-1|0)>>>0){c[f+20>>2]=c[e+12>>2];break}else{c[f+20>>2]=c[e+76>>2];break}}else c[f+20>>2]=1;while(0);c[f+12>>2]=0;c[f+16>>2]=0;L=1;return L|0}function i$(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;e=c[a+388>>2]|0;A=(c[a+272>>2]|0)+-1|0;B=a+76|0;if((c[B>>2]|0)<=0){a=j$(a,d)|0;return a|0}y=a+4|0;z=e+64|0;r=e+8|0;s=a+404|0;w=0;x=c[a+84>>2]|0;while(1){t=x+12|0;u=c[t>>2]|0;e=da(u,c[r>>2]|0)|0;u=Qd[c[(c[y>>2]|0)+32>>2]&127](a,c[z+(w<<2)>>2]|0,e,u,1)|0;e=c[r>>2]|0;if(e>>>0>>0)j=c[t>>2]|0;else{v=c[t>>2]|0;j=((c[x+32>>2]|0)>>>0)%(v>>>0)|0;j=(j|0)==0?v:j}q=c[x+28>>2]|0;v=c[x+8>>2]|0;p=(q>>>0)%(v>>>0)|0;p=(p|0)>0?v-p|0:p;o=c[(c[s>>2]|0)+(w<<2)+4>>2]|0;if((j|0)>0){h=d+(w<<2)|0;f=x+40|0;g=(p|0)>0;i=p<<7;e=q+-1|0;n=0;do{k=c[u+(n<<2)>>2]|0;m=da(c[f>>2]|0,n)|0;Md[o&63](a,x,c[h>>2]|0,k,m,0,q);if(g){sfa(k+(q<<7)|0,0,i|0)|0;l=b[k+(e<<7)>>1]|0;m=0;do{b[k+(m+q<<7)>>1]=l;m=m+1|0}while((m|0)!=(p|0))}n=n+1|0}while((n|0)!=(j|0));e=c[r>>2]|0}if((e|0)==(A|0)?(C=p+q|0,D=(C>>>0)/(v>>>0)|0,(j|0)<(c[t>>2]|0)):0){l=C<<7;k=(D|0)==0;m=v+-1|0;n=(v|0)>0;do{f=c[u+(j<<2)>>2]|0;e=c[u+(j+-1<<2)>>2]|0;sfa(f|0,0,l|0)|0;if(!k){i=0;while(1){g=b[e+(m<<7)>>1]|0;if(n){h=0;do{b[f+(h<<7)>>1]=g;h=h+1|0}while((h|0)!=(v|0))}i=i+1|0;if(i>>>0>=D>>>0)break;else{e=e+(v<<7)|0;f=f+(v<<7)|0}}}j=j+1|0}while((j|0)<(c[t>>2]|0))}w=w+1|0;if((w|0)>=(c[B>>2]|0))break;else x=x+88|0}a=j$(a,d)|0;return a|0}function j$(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;A=a+388|0;B=c[A>>2]|0;y=a+276|0;b=c[y>>2]|0;if((b|0)>0){d=a+4|0;e=B+64|0;f=B+8|0;g=0;do{w=c[a+(g<<2)+280>>2]|0;b=c[w+12>>2]|0;x=da(b,c[f>>2]|0)|0;c[z+(g<<2)>>2]=Qd[c[(c[d>>2]|0)+32>>2]&127](a,c[e+(c[w+4>>2]<<2)>>2]|0,x,b,0)|0;g=g+1|0;b=c[y>>2]|0}while((g|0)<(b|0))}x=B+16|0;g=c[x>>2]|0;v=B+20|0;f=c[v>>2]|0;do if((g|0)<(f|0)){w=B+12|0;s=a+296|0;t=a+408|0;u=B+24|0;e=f;d=c[w>>2]|0;f=c[s>>2]|0;b=g;a:while(1){if(d>>>0>>0){do{q=c[y>>2]|0;if((q|0)>0){f=0;r=0;do{n=c[a+(r<<2)+280>>2]|0;l=c[n+56>>2]|0;m=da(l,d)|0;n=c[n+60>>2]|0;if((n|0)>0){o=c[z+(r<<2)>>2]|0;p=(l|0)>0;k=0;do{if(p){h=(l|0)>1?l:1;e=f;g=(c[o+(k+b<<2)>>2]|0)+(m<<7)|0;j=0;while(1){c[u+(e<<2)>>2]=g;j=j+1|0;if((j|0)>=(l|0))break;else{e=e+1|0;g=g+128|0}}f=f+h|0}k=k+1|0}while((k|0)<(n|0))}r=r+1|0}while((r|0)<(q|0))}if(!((Pd[c[(c[t>>2]|0)+4>>2]&511](a,u)|0)<<24>>24))break a;d=d+1|0;f=c[s>>2]|0}while(d>>>0>>0);d=c[v>>2]|0}else d=e;c[w>>2]=0;b=b+1|0;if((b|0)>=(d|0)){C=21;break}else{e=d;d=0}}if((C|0)==21){b=c[y>>2]|0;break}c[x>>2]=b;c[w>>2]=d;a=0;i=D;return a|0}while(0);d=B+8|0;c[d>>2]=(c[d>>2]|0)+1;d=c[A>>2]|0;do if((b|0)<=1){b=c[a+280>>2]|0;if((c[d+8>>2]|0)>>>0<((c[a+272>>2]|0)+-1|0)>>>0){c[d+20>>2]=c[b+12>>2];break}else{c[d+20>>2]=c[b+76>>2];break}}else c[d+20>>2]=1;while(0);c[d+12>>2]=0;c[d+16>>2]=0;a=1;i=D;return a|0}function k$(a,d,e,f,g,h,j){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+256|0;p=q;n=c[(c[a+404>>2]|0)+44+(c[d+4>>2]<<2)>>2]|0;o=c[d+84>>2]|0;m=e+(g<<2)|0;if(!j){i=q;return}l=d+36|0;g=0;while(1){Ud[n&255](p,m,h);k=0;do{e=c[o+(k<<2)>>2]|0;a=c[p+(k<<2)>>2]|0;d=e>>1;if((a|0)>=0){a=a+d|0;if((a|0)<(e|0))a=0;else a=(a|0)/(e|0)|0}else{a=d-a|0;if((a|0)<(e|0))a=0;else a=(a|0)/(e|0)|0;a=0-a|0}b[f+(g<<7)+(k<<1)>>1]=a;k=k+1|0}while((k|0)!=64);g=g+1|0;if((g|0)==(j|0))break;else h=(c[l>>2]|0)+h|0}i=q;return}function l$(a,d,e,f,h,j,k){a=a|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0;p=i;i=i+256|0;o=p;m=c[(c[a+404>>2]|0)+84+(c[d+4>>2]<<2)>>2]|0;n=c[d+84>>2]|0;l=e+(h<<2)|0;if(!k){i=p;return}d=d+36|0;a=j;e=0;while(1){Ud[m&255](o,l,a);h=0;do{b[f+(e<<7)+(h<<1)>>1]=~~(+g[o+(h<<2)>>2]*+g[n+(h<<2)>>2]+16384.5)+49152;h=h+1|0}while((h|0)!=64);e=e+1|0;if((e|0)==(k|0))break;else a=(c[d>>2]|0)+a|0}i=p;return}function m$(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;A=i;i=i+16|0;z=A+4|0;y=A;t=c[b+408>>2]|0;if((a[b+252>>0]|0)!=0?(q=t+128|0,e=c[q>>2]|0,(e|0)!=0):0){f=0;while(1){e=e>>1;if(!e)break;else f=f+1|0}if((f|0)>14){s=c[t+120>>2]|0;r=c[s>>2]|0;c[r+20>>2]=41;Bd[c[r>>2]&511](s)}e=c[t+124>>2]|0;g=f<<4;s=t+108|0;do if(!(a[s>>0]|0)){r=c[t+(e<<2)+60>>2]|0;h=c[r+(g<<2)>>2]|0;r=a[r+g+1024>>0]|0;e=r<<24>>24;if(r<<24>>24==0?(r=c[t+120>>2]|0,p=c[r>>2]|0,c[p+20>>2]=41,Bd[c[p>>2]&511](r),(a[s>>0]|0)!=0):0)break;o=t+16|0;l=(c[o>>2]|0)+e|0;p=t+12|0;e=((1<>2];if((l|0)>7){m=t+112|0;n=t+116|0;k=t+120|0;j=l;do{g=e>>>16;h=g&255;r=c[m>>2]|0;c[m>>2]=r+1;a[r>>0]=g;r=(c[n>>2]|0)+-1|0;c[n>>2]=r;if(!r){r=c[k>>2]|0;g=c[r+24>>2]|0;if(!((Ed[c[g+12>>2]&511](r)|0)<<24>>24)){r=c[k>>2]|0;B=c[r>>2]|0;c[B+20>>2]=25;Bd[c[B>>2]&511](r)}c[m>>2]=c[g>>2];c[n>>2]=c[g+4>>2]}if((h|0)==255?(B=c[m>>2]|0,c[m>>2]=B+1,a[B>>0]=0,B=(c[n>>2]|0)+-1|0,c[n>>2]=B,(B|0)==0):0){B=c[k>>2]|0;h=c[B+24>>2]|0;if(!((Ed[c[h+12>>2]&511](B)|0)<<24>>24)){B=c[k>>2]|0;r=c[B>>2]|0;c[r+20>>2]=25;Bd[c[r>>2]&511](B)}c[m>>2]=c[h>>2];c[n>>2]=c[h+4>>2]}e=e<<8;j=j+-8|0}while((j|0)>7);h=l&7}else h=l;c[p>>2]=e;c[o>>2]=h}else{B=(c[t+(e<<2)+92>>2]|0)+(g<<2)|0;c[B>>2]=(c[B>>2]|0)+1}while(0);if((f|0)!=0?(a[s>>0]|0)==0:0){l=t+16|0;j=(c[l>>2]|0)+f|0;o=t+12|0;e=(c[q>>2]&(1<>2];if((j|0)>7){m=t+112|0;g=t+116|0;n=t+120|0;k=j;do{r=e>>>16;h=r&255;B=c[m>>2]|0;c[m>>2]=B+1;a[B>>0]=r;B=(c[g>>2]|0)+-1|0;c[g>>2]=B;if(!B){B=c[n>>2]|0;f=c[B+24>>2]|0;if(!((Ed[c[f+12>>2]&511](B)|0)<<24>>24)){B=c[n>>2]|0;r=c[B>>2]|0;c[r+20>>2]=25;Bd[c[r>>2]&511](B)}c[m>>2]=c[f>>2];c[g>>2]=c[f+4>>2]}if((h|0)==255?(B=c[m>>2]|0,c[m>>2]=B+1,a[B>>0]=0,B=(c[g>>2]|0)+-1|0,c[g>>2]=B,(B|0)==0):0){B=c[n>>2]|0;h=c[B+24>>2]|0;if(!((Ed[c[h+12>>2]&511](B)|0)<<24>>24)){B=c[n>>2]|0;r=c[B>>2]|0;c[r+20>>2]=25;Bd[c[r>>2]&511](B)}c[m>>2]=c[h>>2];c[g>>2]=c[h+4>>2]}e=e<<8;k=k+-8|0}while((k|0)>7);f=j&7}else f=j;c[o>>2]=e;c[l>>2]=f}c[q>>2]=0;j=t+132|0;e=c[j>>2]|0;a:do if((a[s>>0]|0)==0&(e|0)!=0){l=t+16|0;o=t+12|0;p=t+112|0;q=t+116|0;r=t+120|0;k=c[t+136>>2]|0;h=1;while(1){if(h){h=c[l>>2]|0;n=h+1|0;h=(d[k>>0]&1)<<23-h|c[o>>2];if((n|0)>7){m=n;do{g=h>>>16;f=g&255;B=c[p>>2]|0;c[p>>2]=B+1;a[B>>0]=g;B=(c[q>>2]|0)+-1|0;c[q>>2]=B;if(!B){B=c[r>>2]|0;g=c[B+24>>2]|0;if(!((Ed[c[g+12>>2]&511](B)|0)<<24>>24)){B=c[r>>2]|0;C=c[B>>2]|0;c[C+20>>2]=25;Bd[c[C>>2]&511](B)}c[p>>2]=c[g>>2];c[q>>2]=c[g+4>>2]}if((f|0)==255?(C=c[p>>2]|0,c[p>>2]=C+1,a[C>>0]=0,C=(c[q>>2]|0)+-1|0,c[q>>2]=C,(C|0)==0):0){C=c[r>>2]|0;f=c[C+24>>2]|0;if(!((Ed[c[f+12>>2]&511](C)|0)<<24>>24)){C=c[r>>2]|0;B=c[C>>2]|0;c[B+20>>2]=25;Bd[c[B>>2]&511](C)}c[p>>2]=c[f>>2];c[q>>2]=c[f+4>>2]}h=h<<8;m=m+-8|0}while((m|0)>7);f=n&7}else f=n;c[o>>2]=h;c[l>>2]=f}e=e+-1|0;if(!e)break a;k=k+1|0;h=(a[s>>0]|0)==0}}while(0);c[j>>2]=0}c[z>>2]=0;c[y>>2]=0;k=b+276|0;if((c[k>>2]|0)<=0){i=A;return}l=b+348|0;m=b+356|0;n=t+76|0;o=b+352|0;g=t+92|0;j=0;do{h=c[b+(j<<2)+280>>2]|0;if(((c[l>>2]|0)==0?(c[m>>2]|0)==0:0)?(u=c[h+20>>2]|0,v=z+u|0,(a[v>>0]|0)==0):0){f=b+(u<<2)+120|0;e=c[f>>2]|0;if(!e){e=gF(b)|0;c[f>>2]=e}x1(b,e,c[n+(u<<2)>>2]|0);a[v>>0]=1}if((c[o>>2]|0)!=0?(w=c[h+24>>2]|0,x=y+w|0,(a[x>>0]|0)==0):0){f=b+(w<<2)+136|0;e=c[f>>2]|0;if(!e){e=gF(b)|0;c[f>>2]=e}x1(b,e,c[g+(w<<2)>>2]|0);a[x>>0]=1}j=j+1|0}while((j|0)<(c[k>>2]|0));i=A;return}function n$(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=i;i=i+16|0;q=u;s=c[b+408>>2]|0;t=b+24|0;e=c[t>>2]|0;j=c[e>>2]|0;if(!(a[b+252>>0]|0)){h=c[e+4>>2]|0;o=s+12|0;g=c[o>>2]|0;p=s+16|0;f=c[p>>2]|0;n=s+20|0;c[q+0>>2]=c[n+0>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];a:do if((f|0)>0){e=j;l=f+7|0;m=127<<17-f|g;while(1){s=m>>>16;k=s&255;j=e+1|0;a[e>>0]=s;h=h+-1|0;if(!h){e=c[t>>2]|0;if(!((Ed[c[e+12>>2]&511](b)|0)<<24>>24)){e=j;break}j=c[e>>2]|0;h=c[e+4>>2]|0}if((k|0)==255){e=j+1|0;a[j>>0]=0;h=h+-1|0;if(!h){j=c[t>>2]|0;if(!((Ed[c[j+12>>2]&511](b)|0)<<24>>24))break;h=c[j+4>>2]|0;e=c[j>>2]|0}}else e=j;l=l+-8|0;if((l|0)<=7){g=0;f=0;break a}else m=m<<8}h=c[b>>2]|0;c[h+20>>2]=25;Bd[c[h>>2]&511](b);h=0}else{e=j;g=0;f=0}while(0);t=c[t>>2]|0;c[t>>2]=e;c[t+4>>2]=h;c[o>>2]=g;c[p>>2]=f;c[n+0>>2]=c[q+0>>2];c[n+4>>2]=c[q+4>>2];c[n+8>>2]=c[q+8>>2];c[n+12>>2]=c[q+12>>2];i=u;return}r=s+112|0;c[r>>2]=j;q=s+116|0;c[q>>2]=c[e+4>>2];n=s+128|0;e=c[n>>2]|0;if(e){f=0;while(1){e=e>>1;if(!e)break;else f=f+1|0}if((f|0)>14){p=c[s+120>>2]|0;o=c[p>>2]|0;c[o+20>>2]=41;Bd[c[o>>2]&511](p)}e=c[s+124>>2]|0;g=f<<4;p=s+108|0;do if(!(a[p>>0]|0)){o=c[s+(e<<2)+60>>2]|0;h=c[o+(g<<2)>>2]|0;o=a[o+g+1024>>0]|0;e=o<<24>>24;if(o<<24>>24==0?(o=c[s+120>>2]|0,b=c[o>>2]|0,c[b+20>>2]=41,Bd[c[b>>2]&511](o),(a[p>>0]|0)!=0):0)break;b=s+16|0;l=(c[b>>2]|0)+e|0;m=s+12|0;e=((1<>2];if((l|0)>7){k=s+120|0;j=l;do{g=e>>>16;h=g&255;o=c[r>>2]|0;c[r>>2]=o+1;a[o>>0]=g;o=(c[q>>2]|0)+-1|0;c[q>>2]=o;if(!o){o=c[k>>2]|0;g=c[o+24>>2]|0;if(!((Ed[c[g+12>>2]&511](o)|0)<<24>>24)){o=c[k>>2]|0;v=c[o>>2]|0;c[v+20>>2]=25;Bd[c[v>>2]&511](o)}c[r>>2]=c[g>>2];c[q>>2]=c[g+4>>2]}if((h|0)==255?(v=c[r>>2]|0,c[r>>2]=v+1,a[v>>0]=0,v=(c[q>>2]|0)+-1|0,c[q>>2]=v,(v|0)==0):0){v=c[k>>2]|0;h=c[v+24>>2]|0;if(!((Ed[c[h+12>>2]&511](v)|0)<<24>>24)){v=c[k>>2]|0;o=c[v>>2]|0;c[o+20>>2]=25;Bd[c[o>>2]&511](v)}c[r>>2]=c[h>>2];c[q>>2]=c[h+4>>2]}e=e<<8;j=j+-8|0}while((j|0)>7);h=l&7}else h=l;c[m>>2]=e;c[b>>2]=h}else{v=(c[s+(e<<2)+92>>2]|0)+(g<<2)|0;c[v>>2]=(c[v>>2]|0)+1}while(0);if((f|0)!=0?(a[p>>0]|0)==0:0){b=s+16|0;h=(c[b>>2]|0)+f|0;l=s+12|0;e=(c[n>>2]&(1<>2];if((h|0)>7){j=s+120|0;k=h;do{o=e>>>16;f=o&255;v=c[r>>2]|0;c[r>>2]=v+1;a[v>>0]=o;v=(c[q>>2]|0)+-1|0;c[q>>2]=v;if(!v){v=c[j>>2]|0;g=c[v+24>>2]|0;if(!((Ed[c[g+12>>2]&511](v)|0)<<24>>24)){v=c[j>>2]|0;o=c[v>>2]|0;c[o+20>>2]=25;Bd[c[o>>2]&511](v)}c[r>>2]=c[g>>2];c[q>>2]=c[g+4>>2]}if((f|0)==255?(v=c[r>>2]|0,c[r>>2]=v+1,a[v>>0]=0,v=(c[q>>2]|0)+-1|0,c[q>>2]=v,(v|0)==0):0){v=c[j>>2]|0;f=c[v+24>>2]|0;if(!((Ed[c[f+12>>2]&511](v)|0)<<24>>24)){v=c[j>>2]|0;o=c[v>>2]|0;c[o+20>>2]=25;Bd[c[o>>2]&511](v)}c[r>>2]=c[f>>2];c[q>>2]=c[f+4>>2]}e=e<<8;k=k+-8|0}while((k|0)>7);h=h&7}c[l>>2]=e;c[b>>2]=h}c[n>>2]=0;m=s+132|0;e=c[m>>2]|0;b:do if((a[p>>0]|0)==0&(e|0)!=0){b=s+16|0;n=s+12|0;o=s+120|0;l=c[s+136>>2]|0;h=1;while(1){if(h){h=c[b>>2]|0;j=h+1|0;h=(d[l>>0]&1)<<23-h|c[n>>2];if((j|0)>7){k=j;do{g=h>>>16;f=g&255;v=c[r>>2]|0;c[r>>2]=v+1;a[v>>0]=g;v=(c[q>>2]|0)+-1|0;c[q>>2]=v;if(!v){v=c[o>>2]|0;g=c[v+24>>2]|0;if(!((Ed[c[g+12>>2]&511](v)|0)<<24>>24)){v=c[o>>2]|0;w=c[v>>2]|0;c[w+20>>2]=25;Bd[c[w>>2]&511](v)}c[r>>2]=c[g>>2];c[q>>2]=c[g+4>>2]}if((f|0)==255?(w=c[r>>2]|0,c[r>>2]=w+1,a[w>>0]=0,w=(c[q>>2]|0)+-1|0,c[q>>2]=w,(w|0)==0):0){w=c[o>>2]|0;f=c[w+24>>2]|0;if(!((Ed[c[f+12>>2]&511](w)|0)<<24>>24)){w=c[o>>2]|0;v=c[w>>2]|0;c[v+20>>2]=25;Bd[c[v>>2]&511](w)}c[r>>2]=c[f>>2];c[q>>2]=c[f+4>>2]}h=h<<8;k=k+-8|0}while((k|0)>7);f=j&7}else f=j;c[n>>2]=h;c[b>>2]=f}e=e+-1|0;if(!e)break b;l=l+1|0;h=(a[p>>0]|0)==0}}while(0);c[m>>2]=0}y1(s);w=c[t>>2]|0;c[w>>2]=c[r>>2];c[w+4>>2]=c[q>>2];i=u;return}function o$(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=c[d+408>>2]|0;n=d+24|0;w=c[n>>2]|0;u=y+112|0;c[u>>2]=c[w>>2];v=y+116|0;c[v>>2]=c[w+4>>2];w=d+224|0;if((c[w>>2]|0)!=0?(c[y+36>>2]|0)==0:0)z1(y,c[y+40>>2]|0);m=d+304|0;if((c[m>>2]|0)>0){o=d+360|0;p=y+20|0;q=y+108|0;r=y+120|0;s=y+16|0;t=y+12|0;x=0;do{l=c[d+(x<<2)+308>>2]|0;i=c[(c[d+(l<<2)+280>>2]|0)+20>>2]|0;j=b[c[e+(x<<2)>>2]>>1]>>c[o>>2];l=p+(l<<2)|0;f=j-(c[l>>2]|0)|0;c[l>>2]=j;if((f|0)<0){g=0-f|0;l=f+-1|0}else{g=f;l=f}if(g){f=0;h=g;while(1){g=f+1|0;h=h>>1;if(!h)break;else f=g}if((f|0)>10){j=c[d>>2]|0;c[j+20>>2]=6;Bd[c[j>>2]&511](d)}}else g=0;do if(!(a[q>>0]|0)){j=c[y+(i<<2)+44>>2]|0;f=c[j+(g<<2)>>2]|0;j=a[j+g+1024>>0]|0;h=j<<24>>24;if(j<<24>>24==0?(j=c[r>>2]|0,k=c[j>>2]|0,c[k+20>>2]=41,Bd[c[k>>2]&511](j),(a[q>>0]|0)!=0):0)break;k=(c[s>>2]|0)+h|0;f=((1<>2];if((k|0)>7){j=k;do{z=f>>>16;h=z&255;i=c[u>>2]|0;c[u>>2]=i+1;a[i>>0]=z;i=(c[v>>2]|0)+-1|0;c[v>>2]=i;if(!i){z=c[r>>2]|0;i=c[z+24>>2]|0;if(!((Ed[c[i+12>>2]&511](z)|0)<<24>>24)){z=c[r>>2]|0;A=c[z>>2]|0;c[A+20>>2]=25;Bd[c[A>>2]&511](z)}c[u>>2]=c[i>>2];c[v>>2]=c[i+4>>2]}if((h|0)==255?(A=c[u>>2]|0,c[u>>2]=A+1,a[A>>0]=0,A=(c[v>>2]|0)+-1|0,c[v>>2]=A,(A|0)==0):0){A=c[r>>2]|0;h=c[A+24>>2]|0;if(!((Ed[c[h+12>>2]&511](A)|0)<<24>>24)){A=c[r>>2]|0;z=c[A>>2]|0;c[z+20>>2]=25;Bd[c[z>>2]&511](A)}c[u>>2]=c[h>>2];c[v>>2]=c[h+4>>2]}f=f<<8;j=j+-8|0}while((j|0)>7);h=k&7}else h=k;c[t>>2]=f;c[s>>2]=h}else{A=(c[y+(i<<2)+76>>2]|0)+(g<<2)|0;c[A>>2]=(c[A>>2]|0)+1}while(0);if((g|0)!=0?(a[q>>0]|0)==0:0){j=(c[s>>2]|0)+g|0;f=((1<>2];if((j|0)>7){i=j;do{z=f>>>16;g=z&255;A=c[u>>2]|0;c[u>>2]=A+1;a[A>>0]=z;A=(c[v>>2]|0)+-1|0;c[v>>2]=A;if(!A){A=c[r>>2]|0;h=c[A+24>>2]|0;if(!((Ed[c[h+12>>2]&511](A)|0)<<24>>24)){A=c[r>>2]|0;z=c[A>>2]|0;c[z+20>>2]=25;Bd[c[z>>2]&511](A)}c[u>>2]=c[h>>2];c[v>>2]=c[h+4>>2]}if((g|0)==255?(A=c[u>>2]|0,c[u>>2]=A+1,a[A>>0]=0,A=(c[v>>2]|0)+-1|0,c[v>>2]=A,(A|0)==0):0){A=c[r>>2]|0;g=c[A+24>>2]|0;if(!((Ed[c[g+12>>2]&511](A)|0)<<24>>24)){A=c[r>>2]|0;z=c[A>>2]|0;c[z+20>>2]=25;Bd[c[z>>2]&511](A)}c[u>>2]=c[g>>2];c[v>>2]=c[g+4>>2]}f=f<<8;i=i+-8|0}while((i|0)>7);g=j&7}else g=j;c[t>>2]=f;c[s>>2]=g}x=x+1|0}while((x|0)<(c[m>>2]|0))}f=c[n>>2]|0;c[f>>2]=c[u>>2];c[f+4>>2]=c[v>>2];f=c[w>>2]|0;if(!f)return 1;h=y+36|0;g=c[h>>2]|0;if(!g){c[h>>2]=f;A=y+40|0;c[A>>2]=(c[A>>2]|0)+1&7}else f=g;c[h>>2]=f+-1;return 1}function p$(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;H=c[e+408>>2]|0;D=e+24|0;G=c[D>>2]|0;E=H+112|0;c[E>>2]=c[G>>2];F=H+116|0;c[F>>2]=c[G+4>>2];G=e+224|0;if((c[G>>2]|0)!=0?(c[H+36>>2]|0)==0:0)z1(H,c[H+40>>2]|0);z=c[e+352>>2]|0;A=c[e+360>>2]|0;B=c[e+368>>2]|0;q=c[f>>2]|0;f=c[e+348>>2]|0;if((f|0)<=(z|0)){r=H+128|0;s=H+120|0;t=H+124|0;u=H+108|0;v=H+16|0;w=H+12|0;x=H+136|0;y=H+132|0;p=f;f=0;while(1){m=b[q+(c[B+(p<<2)>>2]<<1)>>1]|0;i=m<<16>>16;do if(m<<16>>16){if(m<<16>>16<0){o=0-i>>A;l=o;o=~o}else{o=i>>A;l=o}if(!l){f=f+1|0;break}m=c[r>>2]|0;if(m){i=0;while(1){m=m>>1;if(!m)break;else i=i+1|0}if((i|0)>14){j=c[s>>2]|0;k=c[j>>2]|0;c[k+20>>2]=41;Bd[c[k>>2]&511](j)}m=c[t>>2]|0;g=i<<4;do if(!(a[u>>0]|0)){j=c[H+(m<<2)+60>>2]|0;h=c[j+(g<<2)>>2]|0;j=a[j+g+1024>>0]|0;m=j<<24>>24;if(j<<24>>24==0?(j=c[s>>2]|0,k=c[j>>2]|0,c[k+20>>2]=41,Bd[c[k>>2]&511](j),(a[u>>0]|0)!=0):0)break;k=(c[v>>2]|0)+m|0;m=((1<>2];if((k|0)>7){n=k;do{g=m>>>16;h=g&255;j=c[E>>2]|0;c[E>>2]=j+1;a[j>>0]=g;j=(c[F>>2]|0)+-1|0;c[F>>2]=j;if(!j){j=c[s>>2]|0;g=c[j+24>>2]|0;if(!((Ed[c[g+12>>2]&511](j)|0)<<24>>24)){j=c[s>>2]|0;I=c[j>>2]|0;c[I+20>>2]=25;Bd[c[I>>2]&511](j)}c[E>>2]=c[g>>2];c[F>>2]=c[g+4>>2]}do if((h|0)==255){I=c[E>>2]|0;c[E>>2]=I+1;a[I>>0]=0;I=(c[F>>2]|0)+-1|0;c[F>>2]=I;if(I)break;I=c[s>>2]|0;g=c[I+24>>2]|0;if(!((Ed[c[g+12>>2]&511](I)|0)<<24>>24)){I=c[s>>2]|0;j=c[I>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](I)}c[E>>2]=c[g>>2];c[F>>2]=c[g+4>>2]}while(0);m=m<<8;n=n+-8|0}while((n|0)>7);g=k&7}else g=k;c[w>>2]=m;c[v>>2]=g}else{I=(c[H+(m<<2)+92>>2]|0)+(g<<2)|0;c[I>>2]=(c[I>>2]|0)+1}while(0);if((i|0)!=0?(a[u>>0]|0)==0:0){n=(c[v>>2]|0)+i|0;m=(c[r>>2]&(1<>2];if((n|0)>7){h=n;do{j=m>>>16;i=j&255;I=c[E>>2]|0;c[E>>2]=I+1;a[I>>0]=j;I=(c[F>>2]|0)+-1|0;c[F>>2]=I;if(!I){I=c[s>>2]|0;g=c[I+24>>2]|0;if(!((Ed[c[g+12>>2]&511](I)|0)<<24>>24)){I=c[s>>2]|0;j=c[I>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](I)}c[E>>2]=c[g>>2];c[F>>2]=c[g+4>>2]}do if((i|0)==255){I=c[E>>2]|0;c[E>>2]=I+1;a[I>>0]=0;I=(c[F>>2]|0)+-1|0;c[F>>2]=I;if(I)break;I=c[s>>2]|0;i=c[I+24>>2]|0;if(!((Ed[c[i+12>>2]&511](I)|0)<<24>>24)){I=c[s>>2]|0;j=c[I>>2]|0;c[j+20>>2]=25;Bd[c[j>>2]&511](I)}c[E>>2]=c[i>>2];c[F>>2]=c[i+4>>2]}while(0);m=m<<8;h=h+-8|0}while((h|0)>7);i=n&7}else i=n;c[w>>2]=m;c[v>>2]=i}c[r>>2]=0;m=c[y>>2]|0;a:do if((a[u>>0]|0)==0&(m|0)!=0){j=c[x>>2]|0;i=1;while(1){if(i){i=c[v>>2]|0;k=i+1|0;i=(d[j>>0]&1)<<23-i|c[w>>2];if((k|0)>7){n=k;do{h=i>>>16;g=h&255;I=c[E>>2]|0;c[E>>2]=I+1;a[I>>0]=h;I=(c[F>>2]|0)+-1|0;c[F>>2]=I;if(!I){I=c[s>>2]|0;h=c[I+24>>2]|0;if(!((Ed[c[h+12>>2]&511](I)|0)<<24>>24)){I=c[s>>2]|0;J=c[I>>2]|0;c[J+20>>2]=25;Bd[c[J>>2]&511](I)}c[E>>2]=c[h>>2];c[F>>2]=c[h+4>>2]}do if((g|0)==255){J=c[E>>2]|0;c[E>>2]=J+1;a[J>>0]=0;J=(c[F>>2]|0)+-1|0;c[F>>2]=J;if(J)break;J=c[s>>2]|0;g=c[J+24>>2]|0;if(!((Ed[c[g+12>>2]&511](J)|0)<<24>>24)){J=c[s>>2]|0;I=c[J>>2]|0;c[I+20>>2]=25;Bd[c[I>>2]&511](J)}c[E>>2]=c[g>>2];c[F>>2]=c[g+4>>2]}while(0);i=i<<8;n=n+-8|0}while((n|0)>7);g=k&7}else g=k;c[w>>2]=i;c[v>>2]=g}m=m+-1|0;if(!m)break a;j=j+1|0;i=(a[u>>0]|0)==0}}while(0);c[y>>2]=0}if((f|0)>15){k=f;do{m=c[t>>2]|0;do if(!(a[u>>0]|0)){J=c[H+(m<<2)+60>>2]|0;m=c[J+960>>2]|0;J=a[J+1264>>0]|0;i=J<<24>>24;if(J<<24>>24==0?(J=c[s>>2]|0,I=c[J>>2]|0,c[I+20>>2]=41,Bd[c[I>>2]&511](J),(a[u>>0]|0)!=0):0)break;n=(c[v>>2]|0)+i|0;m=((1<>2];if((n|0)>7){h=n;do{I=m>>>16;i=I&255;J=c[E>>2]|0;c[E>>2]=J+1;a[J>>0]=I;J=(c[F>>2]|0)+-1|0;c[F>>2]=J;if(!J){J=c[s>>2]|0;g=c[J+24>>2]|0;if(!((Ed[c[g+12>>2]&511](J)|0)<<24>>24)){J=c[s>>2]|0;I=c[J>>2]|0;c[I+20>>2]=25;Bd[c[I>>2]&511](J)}c[E>>2]=c[g>>2];c[F>>2]=c[g+4>>2]}do if((i|0)==255){J=c[E>>2]|0;c[E>>2]=J+1;a[J>>0]=0;J=(c[F>>2]|0)+-1|0;c[F>>2]=J;if(J)break;J=c[s>>2]|0;i=c[J+24>>2]|0;if(!((Ed[c[i+12>>2]&511](J)|0)<<24>>24)){J=c[s>>2]|0;I=c[J>>2]|0;c[I+20>>2]=25;Bd[c[I>>2]&511](J)}c[E>>2]=c[i>>2];c[F>>2]=c[i+4>>2]}while(0);m=m<<8;h=h+-8|0}while((h|0)>7);i=n&7}else i=n;c[w>>2]=m;c[v>>2]=i}else{J=(c[H+(m<<2)+92>>2]|0)+960|0;c[J>>2]=(c[J>>2]|0)+1}while(0);k=k+-16|0}while((k|0)>15);f=f&15}i=1;m=l;while(1){m=m>>1;if(!m)break;else i=i+1|0}if((i|0)>10){J=c[e>>2]|0;c[J+20>>2]=6;Bd[c[J>>2]&511](e)}m=c[t>>2]|0;f=i+(f<<4)|0;do if(!(a[u>>0]|0)){J=c[H+(m<<2)+60>>2]|0;m=c[J+(f<<2)>>2]|0;J=a[J+f+1024>>0]|0;f=J<<24>>24;if(J<<24>>24==0?(J=c[s>>2]|0,I=c[J>>2]|0,c[I+20>>2]=41,Bd[c[I>>2]&511](J),(a[u>>0]|0)!=0):0)break;n=(c[v>>2]|0)+f|0;f=((1<>2];if((n|0)>7){h=n;do{I=f>>>16;m=I&255;J=c[E>>2]|0;c[E>>2]=J+1;a[J>>0]=I;J=(c[F>>2]|0)+-1|0;c[F>>2]=J;if(!J){J=c[s>>2]|0;g=c[J+24>>2]|0;if(!((Ed[c[g+12>>2]&511](J)|0)<<24>>24)){J=c[s>>2]|0;I=c[J>>2]|0;c[I+20>>2]=25;Bd[c[I>>2]&511](J)}c[E>>2]=c[g>>2];c[F>>2]=c[g+4>>2]}do if((m|0)==255){J=c[E>>2]|0;c[E>>2]=J+1;a[J>>0]=0;J=(c[F>>2]|0)+-1|0;c[F>>2]=J;if(J)break;J=c[s>>2]|0;m=c[J+24>>2]|0;if(!((Ed[c[m+12>>2]&511](J)|0)<<24>>24)){J=c[s>>2]|0;I=c[J>>2]|0;c[I+20>>2]=25;Bd[c[I>>2]&511](J)}c[E>>2]=c[m>>2];c[F>>2]=c[m+4>>2]}while(0);f=f<<8;h=h+-8|0}while((h|0)>7);m=n&7}else m=n;c[w>>2]=f;c[v>>2]=m}else{J=(c[H+(m<<2)+92>>2]|0)+(f<<2)|0;c[J>>2]=(c[J>>2]|0)+1}while(0);if(!i){J=c[s>>2]|0;I=c[J>>2]|0;c[I+20>>2]=41;Bd[c[I>>2]&511](J)}if(!(a[u>>0]|0)){h=(c[v>>2]|0)+i|0;f=((1<>2];if((h|0)>7){g=h;do{I=f>>>16;m=I&255;J=c[E>>2]|0;c[E>>2]=J+1;a[J>>0]=I;J=(c[F>>2]|0)+-1|0;c[F>>2]=J;if(!J){J=c[s>>2]|0;i=c[J+24>>2]|0;if(!((Ed[c[i+12>>2]&511](J)|0)<<24>>24)){J=c[s>>2]|0;I=c[J>>2]|0;c[I+20>>2]=25;Bd[c[I>>2]&511](J)}c[E>>2]=c[i>>2];c[F>>2]=c[i+4>>2]}do if((m|0)==255){J=c[E>>2]|0;c[E>>2]=J+1;a[J>>0]=0;J=(c[F>>2]|0)+-1|0;c[F>>2]=J;if(J)break;J=c[s>>2]|0;m=c[J+24>>2]|0;if(!((Ed[c[m+12>>2]&511](J)|0)<<24>>24)){J=c[s>>2]|0;I=c[J>>2]|0;c[I+20>>2]=25;Bd[c[I>>2]&511](J)}c[E>>2]=c[m>>2];c[F>>2]=c[m+4>>2]}while(0);f=f<<8;g=g+-8|0}while((g|0)>7);m=h&7}else m=h;c[w>>2]=f;c[v>>2]=m;f=0}else f=0}else f=f+1|0;while(0);if((p|0)<(z|0))p=p+1|0;else break}if((f|0)>0?(C=H+128|0,J=(c[C>>2]|0)+1|0,c[C>>2]=J,(J|0)==32767):0){f=c[H+124>>2]|0;g=14<<4;q=H+108|0;do if(!(a[q>>0]|0)){J=c[H+(f<<2)+60>>2]|0;h=c[J+(g<<2)>>2]|0;J=a[J+g+1024>>0]|0;f=J<<24>>24;if(J<<24>>24==0?(J=c[H+120>>2]|0,I=c[J>>2]|0,c[I+20>>2]=41,Bd[c[I>>2]&511](J),(a[q>>0]|0)!=0):0)break;m=H+16|0;g=(c[m>>2]|0)+f|0;l=H+12|0;f=((1<>2];if((g|0)>7){j=H+120|0;k=g;do{I=f>>>16;h=I&255;J=c[E>>2]|0;c[E>>2]=J+1;a[J>>0]=I;J=(c[F>>2]|0)+-1|0;c[F>>2]=J;if(!J){J=c[j>>2]|0;i=c[J+24>>2]|0;if(!((Ed[c[i+12>>2]&511](J)|0)<<24>>24)){J=c[j>>2]|0;I=c[J>>2]|0;c[I+20>>2]=25;Bd[c[I>>2]&511](J)}c[E>>2]=c[i>>2];c[F>>2]=c[i+4>>2]}if((h|0)==255?(J=c[E>>2]|0,c[E>>2]=J+1,a[J>>0]=0,J=(c[F>>2]|0)+-1|0,c[F>>2]=J,(J|0)==0):0){J=c[j>>2]|0;h=c[J+24>>2]|0;if(!((Ed[c[h+12>>2]&511](J)|0)<<24>>24)){J=c[j>>2]|0;I=c[J>>2]|0;c[I+20>>2]=25;Bd[c[I>>2]&511](J)}c[E>>2]=c[h>>2];c[F>>2]=c[h+4>>2]}f=f<<8;k=k+-8|0}while((k|0)>7);g=g&7}c[l>>2]=f;c[m>>2]=g}else{J=(c[H+(f<<2)+92>>2]|0)+(g<<2)|0;c[J>>2]=(c[J>>2]|0)+1}while(0);if(14!=0?(a[q>>0]|0)==0:0){l=H+16|0;g=(c[l>>2]|0)+14|0;m=H+12|0;f=(c[C>>2]&(1<<14)+-1)<<24-g|c[m>>2];if((g|0)>7){j=H+120|0;k=g;do{I=f>>>16;i=I&255;J=c[E>>2]|0;c[E>>2]=J+1;a[J>>0]=I;J=(c[F>>2]|0)+-1|0;c[F>>2]=J;if(!J){J=c[j>>2]|0;h=c[J+24>>2]|0;if(!((Ed[c[h+12>>2]&511](J)|0)<<24>>24)){J=c[j>>2]|0;I=c[J>>2]|0;c[I+20>>2]=25;Bd[c[I>>2]&511](J)}c[E>>2]=c[h>>2];c[F>>2]=c[h+4>>2]}if((i|0)==255?(J=c[E>>2]|0,c[E>>2]=J+1,a[J>>0]=0,J=(c[F>>2]|0)+-1|0,c[F>>2]=J,(J|0)==0):0){J=c[j>>2]|0;h=c[J+24>>2]|0;if(!((Ed[c[h+12>>2]&511](J)|0)<<24>>24)){J=c[j>>2]|0;I=c[J>>2]|0;c[I+20>>2]=25;Bd[c[I>>2]&511](J)}c[E>>2]=c[h>>2];c[F>>2]=c[h+4>>2]}f=f<<8;k=k+-8|0}while((k|0)>7);g=g&7}c[m>>2]=f;c[l>>2]=g}c[C>>2]=0;l=H+132|0;f=c[l>>2]|0;b:do if((a[q>>0]|0)==0&(f|0)!=0){n=H+16|0;o=H+12|0;p=H+120|0;j=c[H+136>>2]|0;g=1;while(1){if(g){g=c[n>>2]|0;m=g+1|0;g=(d[j>>0]&1)<<23-g|c[o>>2];if((m|0)>7){k=m;do{I=g>>>16;i=I&255;J=c[E>>2]|0;c[E>>2]=J+1;a[J>>0]=I;J=(c[F>>2]|0)+-1|0;c[F>>2]=J;if(!J){J=c[p>>2]|0;h=c[J+24>>2]|0;if(!((Ed[c[h+12>>2]&511](J)|0)<<24>>24)){J=c[p>>2]|0;I=c[J>>2]|0;c[I+20>>2]=25;Bd[c[I>>2]&511](J)}c[E>>2]=c[h>>2];c[F>>2]=c[h+4>>2]}if((i|0)==255?(J=c[E>>2]|0,c[E>>2]=J+1,a[J>>0]=0,J=(c[F>>2]|0)+-1|0,c[F>>2]=J,(J|0)==0):0){J=c[p>>2]|0;i=c[J+24>>2]|0;if(!((Ed[c[i+12>>2]&511](J)|0)<<24>>24)){J=c[p>>2]|0;I=c[J>>2]|0;c[I+20>>2]=25;Bd[c[I>>2]&511](J)}c[E>>2]=c[i>>2];c[F>>2]=c[i+4>>2]}g=g<<8;k=k+-8|0}while((k|0)>7);i=m&7}else i=m;c[o>>2]=g;c[n>>2]=i}f=f+-1|0;if(!f)break b;j=j+1|0;g=(a[q>>0]|0)==0}}while(0);c[l>>2]=0}}g=c[D>>2]|0;c[g>>2]=c[E>>2];c[g+4>>2]=c[F>>2];g=c[G>>2]|0;if(!g)return 1;h=H+36|0;f=c[h>>2]|0;if(!f){c[h>>2]=g;f=H+40|0;c[f>>2]=(c[f>>2]|0)+1&7;f=g}c[h>>2]=f+-1;return 1}function q$(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=c[d+408>>2]|0;q=d+24|0;t=c[q>>2]|0;r=u+112|0;c[r>>2]=c[t>>2];s=u+116|0;c[s>>2]=c[t+4>>2];t=d+224|0;if((c[t>>2]|0)!=0?(c[u+36>>2]|0)==0:0)z1(u,c[u+40>>2]|0);p=c[d+360>>2]|0;k=d+304|0;d=c[k>>2]|0;if((d|0)>0){l=u+108|0;m=u+16|0;n=u+12|0;o=u+120|0;j=0;do{if(!(a[l>>0]|0)){f=c[m>>2]|0;i=f+1|0;f=((b[c[e+(j<<2)>>2]>>1]|0)>>>p&1)<<23-f|c[n>>2];if((i|0)>7){h=i;d=f;do{v=d>>>16;f=v&255;g=c[r>>2]|0;c[r>>2]=g+1;a[g>>0]=v;g=(c[s>>2]|0)+-1|0;c[s>>2]=g;if(!g){v=c[o>>2]|0;g=c[v+24>>2]|0;if(!((Ed[c[g+12>>2]&511](v)|0)<<24>>24)){v=c[o>>2]|0;w=c[v>>2]|0;c[w+20>>2]=25;Bd[c[w>>2]&511](v)}c[r>>2]=c[g>>2];c[s>>2]=c[g+4>>2]}if((f|0)==255?(w=c[r>>2]|0,c[r>>2]=w+1,a[w>>0]=0,w=(c[s>>2]|0)+-1|0,c[s>>2]=w,(w|0)==0):0){w=c[o>>2]|0;f=c[w+24>>2]|0;if(!((Ed[c[f+12>>2]&511](w)|0)<<24>>24)){w=c[o>>2]|0;v=c[w>>2]|0;c[v+20>>2]=25;Bd[c[v>>2]&511](w)}c[r>>2]=c[f>>2];c[s>>2]=c[f+4>>2]}d=d<<8;h=h+-8|0}while((h|0)>7);f=d;d=c[k>>2]|0;g=i&7}else g=i;c[n>>2]=f;c[m>>2]=g}j=j+1|0}while((j|0)<(d|0))}f=c[q>>2]|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[s>>2];f=c[t>>2]|0;if(!f)return 1;g=u+36|0;d=c[g>>2]|0;if(!d){c[g>>2]=f;d=u+40|0;c[d>>2]=(c[d>>2]|0)+1&7;d=f}c[g>>2]=d+-1;return 1}function r$(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;O=i;i=i+256|0;F=O;N=c[f+408>>2]|0;I=f+24|0;M=c[I>>2]|0;J=N+112|0;c[J>>2]=c[M>>2];K=N+116|0;c[K>>2]=c[M+4>>2];M=f+224|0;if((c[M>>2]|0)!=0?(c[N+36>>2]|0)==0:0)z1(N,c[N+40>>2]|0);D=c[f+352>>2]|0;l=c[f+360>>2]|0;E=c[f+368>>2]|0;C=c[g>>2]|0;o=c[f+348>>2]|0;f=(o|0)>(D|0);if(!f){j=0;g=o;while(1){A=b[C+(c[E+(g<<2)>>2]<<1)>>1]|0;B=A<<16>>16;B=(A<<16>>16<0?0-B|0:B)>>l;c[F+(g<<2)>>2]=B;j=(B|0)==1?g:j;if((g|0)<(D|0))g=g+1|0;else break}B=N+136|0;A=N+132|0;if(f){p=A;q=B;f=0;g=0}else{u=N+128|0;v=N+124|0;w=N+108|0;x=N+120|0;y=N+16|0;z=N+12|0;f=0;n=(c[B>>2]|0)+(c[A>>2]|0)|0;t=o;g=0;while(1){s=c[F+(t<<2)>>2]|0;do if(!s)g=g+1|0;else{if((g|0)<16|(t|0)>(j|0))r=n;else{r=n;while(1){n=c[u>>2]|0;if(n){o=0;while(1){n=n>>1;if(!n)break;else o=o+1|0}if((o|0)>14){q=c[x>>2]|0;p=c[q>>2]|0;c[p+20>>2]=41;Bd[c[p>>2]&511](q)}n=c[v>>2]|0;l=o<<4;do if(!(a[w>>0]|0)){q=c[N+(n<<2)+60>>2]|0;k=c[q+(l<<2)>>2]|0;q=a[q+l+1024>>0]|0;n=q<<24>>24;if(q<<24>>24==0?(q=c[x>>2]|0,p=c[q>>2]|0,c[p+20>>2]=41,Bd[c[p>>2]&511](q),(a[w>>0]|0)!=0):0)break;p=(c[y>>2]|0)+n|0;n=((1<>2];if((p|0)>7){m=p;do{k=n>>>16;l=k&255;q=c[J>>2]|0;c[J>>2]=q+1;a[q>>0]=k;q=(c[K>>2]|0)+-1|0;c[K>>2]=q;if(!q){q=c[x>>2]|0;k=c[q+24>>2]|0;if(!((Ed[c[k+12>>2]&511](q)|0)<<24>>24)){q=c[x>>2]|0;P=c[q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](q)}c[J>>2]=c[k>>2];c[K>>2]=c[k+4>>2]}do if((l|0)==255){P=c[J>>2]|0;c[J>>2]=P+1;a[P>>0]=0;P=(c[K>>2]|0)+-1|0;c[K>>2]=P;if(P)break;P=c[x>>2]|0;l=c[P+24>>2]|0;if(!((Ed[c[l+12>>2]&511](P)|0)<<24>>24)){P=c[x>>2]|0;q=c[P>>2]|0;c[q+20>>2]=25;Bd[c[q>>2]&511](P)}c[J>>2]=c[l>>2];c[K>>2]=c[l+4>>2]}while(0);n=n<<8;m=m+-8|0}while((m|0)>7);l=p&7}else l=p;c[z>>2]=n;c[y>>2]=l}else{P=(c[N+(n<<2)+92>>2]|0)+(l<<2)|0;c[P>>2]=(c[P>>2]|0)+1}while(0);if((o|0)!=0?(a[w>>0]|0)==0:0){m=(c[y>>2]|0)+o|0;n=(c[u>>2]&(1<>2];if((m|0)>7){k=m;do{q=n>>>16;o=q&255;P=c[J>>2]|0;c[J>>2]=P+1;a[P>>0]=q;P=(c[K>>2]|0)+-1|0;c[K>>2]=P;if(!P){P=c[x>>2]|0;l=c[P+24>>2]|0;if(!((Ed[c[l+12>>2]&511](P)|0)<<24>>24)){P=c[x>>2]|0;q=c[P>>2]|0;c[q+20>>2]=25;Bd[c[q>>2]&511](P)}c[J>>2]=c[l>>2];c[K>>2]=c[l+4>>2]}do if((o|0)==255){P=c[J>>2]|0;c[J>>2]=P+1;a[P>>0]=0;P=(c[K>>2]|0)+-1|0;c[K>>2]=P;if(P)break;P=c[x>>2]|0;o=c[P+24>>2]|0;if(!((Ed[c[o+12>>2]&511](P)|0)<<24>>24)){P=c[x>>2]|0;q=c[P>>2]|0;c[q+20>>2]=25;Bd[c[q>>2]&511](P)}c[J>>2]=c[o>>2];c[K>>2]=c[o+4>>2]}while(0);n=n<<8;k=k+-8|0}while((k|0)>7);o=m&7}else o=m;c[z>>2]=n;c[y>>2]=o}c[u>>2]=0;n=c[A>>2]|0;a:do if((a[w>>0]|0)==0&(n|0)!=0){q=c[B>>2]|0;o=1;while(1){if(o){o=c[y>>2]|0;p=o+1|0;o=(d[q>>0]&1)<<23-o|c[z>>2];if((p|0)>7){m=p;do{k=o>>>16;l=k&255;P=c[J>>2]|0;c[J>>2]=P+1;a[P>>0]=k;P=(c[K>>2]|0)+-1|0;c[K>>2]=P;if(!P){P=c[x>>2]|0;k=c[P+24>>2]|0;if(!((Ed[c[k+12>>2]&511](P)|0)<<24>>24)){P=c[x>>2]|0;Q=c[P>>2]|0;c[Q+20>>2]=25;Bd[c[Q>>2]&511](P)}c[J>>2]=c[k>>2];c[K>>2]=c[k+4>>2]}do if((l|0)==255){Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=0;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(Q)break;Q=c[x>>2]|0;l=c[Q+24>>2]|0;if(!((Ed[c[l+12>>2]&511](Q)|0)<<24>>24)){Q=c[x>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[l>>2];c[K>>2]=c[l+4>>2]}while(0);o=o<<8;m=m+-8|0}while((m|0)>7);l=p&7}else l=p;c[z>>2]=o;c[y>>2]=l}n=n+-1|0;if(!n)break a;q=q+1|0;o=(a[w>>0]|0)==0}}while(0);c[A>>2]=0}n=c[v>>2]|0;b:do if(!(a[w>>0]|0)){Q=c[N+(n<<2)+60>>2]|0;n=c[Q+960>>2]|0;Q=a[Q+1264>>0]|0;o=Q<<24>>24;if(Q<<24>>24==0?(Q=c[x>>2]|0,P=c[Q>>2]|0,c[P+20>>2]=41,Bd[c[P>>2]&511](Q),(a[w>>0]|0)!=0):0){G=83;break}m=(c[y>>2]|0)+o|0;n=((1<>2];if((m|0)>7){k=m;do{P=n>>>16;o=P&255;Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=P;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(!Q){Q=c[x>>2]|0;l=c[Q+24>>2]|0;if(!((Ed[c[l+12>>2]&511](Q)|0)<<24>>24)){Q=c[x>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[l>>2];c[K>>2]=c[l+4>>2]}do if((o|0)==255){Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=0;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(Q)break;Q=c[x>>2]|0;o=c[Q+24>>2]|0;if(!((Ed[c[o+12>>2]&511](Q)|0)<<24>>24)){Q=c[x>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[o>>2];c[K>>2]=c[o+4>>2]}while(0);n=n<<8;k=k+-8|0}while((k|0)>7);l=(a[w>>0]|0)==0;o=m&7}else{l=1;o=m}c[z>>2]=n;c[y>>2]=o;g=g+-16|0;if(l&(f|0)!=0){p=r;n=1;while(1){if(n){n=c[y>>2]|0;m=n+1|0;n=(d[p>>0]&1)<<23-n|c[z>>2];if((m|0)>7){k=m;do{P=n>>>16;o=P&255;Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=P;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(!Q){Q=c[x>>2]|0;l=c[Q+24>>2]|0;if(!((Ed[c[l+12>>2]&511](Q)|0)<<24>>24)){Q=c[x>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[l>>2];c[K>>2]=c[l+4>>2]}do if((o|0)==255){Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=0;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(Q)break;Q=c[x>>2]|0;o=c[Q+24>>2]|0;if(!((Ed[c[o+12>>2]&511](Q)|0)<<24>>24)){Q=c[x>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[o>>2];c[K>>2]=c[o+4>>2]}while(0);n=n<<8;k=k+-8|0}while((k|0)>7);o=m&7}else o=m;c[z>>2]=n;c[y>>2]=o}f=f+-1|0;if(!f)break b;p=p+1|0;n=(a[w>>0]|0)==0}}}else{G=(c[N+(n<<2)+92>>2]|0)+960|0;c[G>>2]=(c[G>>2]|0)+1;G=83}while(0);if((G|0)==83){G=0;g=g+-16|0}n=c[B>>2]|0;if((g|0)<16){f=0;r=n;break}else{f=0;r=n}}}if((s|0)>1){a[r+f>>0]=s&1;f=f+1|0;n=r;break}n=c[u>>2]|0;if(n){o=0;while(1){n=n>>1;if(!n)break;else o=o+1|0}if((o|0)>14){Q=c[x>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=41;Bd[c[P>>2]&511](Q)}n=c[v>>2]|0;l=o<<4;do if(!(a[w>>0]|0)){Q=c[N+(n<<2)+60>>2]|0;k=c[Q+(l<<2)>>2]|0;Q=a[Q+l+1024>>0]|0;n=Q<<24>>24;if(Q<<24>>24==0?(Q=c[x>>2]|0,P=c[Q>>2]|0,c[P+20>>2]=41,Bd[c[P>>2]&511](Q),(a[w>>0]|0)!=0):0)break;p=(c[y>>2]|0)+n|0;n=((1<>2];if((p|0)>7){m=p;do{P=n>>>16;l=P&255;Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=P;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(!Q){Q=c[x>>2]|0;k=c[Q+24>>2]|0;if(!((Ed[c[k+12>>2]&511](Q)|0)<<24>>24)){Q=c[x>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[k>>2];c[K>>2]=c[k+4>>2]}do if((l|0)==255){Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=0;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(Q)break;Q=c[x>>2]|0;l=c[Q+24>>2]|0;if(!((Ed[c[l+12>>2]&511](Q)|0)<<24>>24)){Q=c[x>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[l>>2];c[K>>2]=c[l+4>>2]}while(0);n=n<<8;m=m+-8|0}while((m|0)>7);l=p&7}else l=p;c[z>>2]=n;c[y>>2]=l}else{Q=(c[N+(n<<2)+92>>2]|0)+(l<<2)|0;c[Q>>2]=(c[Q>>2]|0)+1}while(0);if((o|0)!=0?(a[w>>0]|0)==0:0){m=(c[y>>2]|0)+o|0;n=(c[u>>2]&(1<>2];if((m|0)>7){k=m;do{P=n>>>16;o=P&255;Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=P;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(!Q){Q=c[x>>2]|0;l=c[Q+24>>2]|0;if(!((Ed[c[l+12>>2]&511](Q)|0)<<24>>24)){Q=c[x>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[l>>2];c[K>>2]=c[l+4>>2]}do if((o|0)==255){Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=0;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(Q)break;Q=c[x>>2]|0;o=c[Q+24>>2]|0;if(!((Ed[c[o+12>>2]&511](Q)|0)<<24>>24)){Q=c[x>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[o>>2];c[K>>2]=c[o+4>>2]}while(0);n=n<<8;k=k+-8|0}while((k|0)>7);o=m&7}else o=m;c[z>>2]=n;c[y>>2]=o}c[u>>2]=0;n=c[A>>2]|0;c:do if((a[w>>0]|0)==0&(n|0)!=0){q=c[B>>2]|0;o=1;while(1){if(o){o=c[y>>2]|0;p=o+1|0;o=(d[q>>0]&1)<<23-o|c[z>>2];if((p|0)>7){m=p;do{P=o>>>16;l=P&255;Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=P;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(!Q){Q=c[x>>2]|0;k=c[Q+24>>2]|0;if(!((Ed[c[k+12>>2]&511](Q)|0)<<24>>24)){Q=c[x>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[k>>2];c[K>>2]=c[k+4>>2]}do if((l|0)==255){Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=0;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(Q)break;Q=c[x>>2]|0;l=c[Q+24>>2]|0;if(!((Ed[c[l+12>>2]&511](Q)|0)<<24>>24)){Q=c[x>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[l>>2];c[K>>2]=c[l+4>>2]}while(0);o=o<<8;m=m+-8|0}while((m|0)>7);l=p&7}else l=p;c[z>>2]=o;c[y>>2]=l}n=n+-1|0;if(!n)break c;q=q+1|0;o=(a[w>>0]|0)==0}}while(0);c[A>>2]=0}n=c[v>>2]|0;g=g<<4|1;d:do if(!(a[w>>0]|0)){Q=c[N+(n<<2)+60>>2]|0;o=c[Q+(g<<2)>>2]|0;Q=a[Q+g+1024>>0]|0;n=Q<<24>>24;if(Q<<24>>24==0?(Q=c[x>>2]|0,P=c[Q>>2]|0,c[P+20>>2]=41,Bd[c[P>>2]&511](Q),(a[w>>0]|0)!=0):0)break;k=(c[y>>2]|0)+n|0;n=((1<>2];if((k|0)>7){l=k;do{P=n>>>16;g=P&255;Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=P;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(!Q){Q=c[x>>2]|0;o=c[Q+24>>2]|0;if(!((Ed[c[o+12>>2]&511](Q)|0)<<24>>24)){Q=c[x>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[o>>2];c[K>>2]=c[o+4>>2]}if((g|0)==255?(Q=c[J>>2]|0,c[J>>2]=Q+1,a[Q>>0]=0,Q=(c[K>>2]|0)+-1|0,c[K>>2]=Q,(Q|0)==0):0){Q=c[x>>2]|0;g=c[Q+24>>2]|0;if(!((Ed[c[g+12>>2]&511](Q)|0)<<24>>24)){Q=c[x>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[g>>2];c[K>>2]=c[g+4>>2]}n=n<<8;l=l+-8|0}while((l|0)>7);Q=a[w>>0]|0;c[z>>2]=n;c[y>>2]=k&7;if(Q<<24>>24)break}else{c[z>>2]=n;c[y>>2]=k}n=c[y>>2]|0;k=n+1|0;n=((e[C+(c[E+(t<<2)>>2]<<1)>>1]|0)>>>15&65535^1)<<23-n|c[z>>2];if((k|0)>7){l=k;do{P=n>>>16;g=P&255;Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=P;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(!Q){Q=c[x>>2]|0;o=c[Q+24>>2]|0;if(!((Ed[c[o+12>>2]&511](Q)|0)<<24>>24)){Q=c[x>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[o>>2];c[K>>2]=c[o+4>>2]}do if((g|0)==255){Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=0;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(Q)break;Q=c[x>>2]|0;g=c[Q+24>>2]|0;if(!((Ed[c[g+12>>2]&511](Q)|0)<<24>>24)){Q=c[x>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[g>>2];c[K>>2]=c[g+4>>2]}while(0);n=n<<8;l=l+-8|0}while((l|0)>7);o=(a[w>>0]|0)==0;g=k&7}else{o=1;g=k}c[z>>2]=n;c[y>>2]=g;if(o&(f|0)!=0){m=r;n=1;while(1){if(n){n=c[y>>2]|0;k=n+1|0;n=(d[m>>0]&1)<<23-n|c[z>>2];if((k|0)>7){l=k;do{P=n>>>16;g=P&255;Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=P;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(!Q){Q=c[x>>2]|0;o=c[Q+24>>2]|0;if(!((Ed[c[o+12>>2]&511](Q)|0)<<24>>24)){Q=c[x>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[o>>2];c[K>>2]=c[o+4>>2]}do if((g|0)==255){Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=0;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(Q)break;Q=c[x>>2]|0;g=c[Q+24>>2]|0;if(!((Ed[c[g+12>>2]&511](Q)|0)<<24>>24)){Q=c[x>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[g>>2];c[K>>2]=c[g+4>>2]}while(0);n=n<<8;l=l+-8|0}while((l|0)>7);g=k&7}else g=k;c[z>>2]=n;c[y>>2]=g}f=f+-1|0;if(!f)break d;m=m+1|0;n=(a[w>>0]|0)==0}}}else{Q=(c[N+(n<<2)+92>>2]|0)+(g<<2)|0;c[Q>>2]=(c[Q>>2]|0)+1}while(0);f=0;n=c[B>>2]|0;g=0}while(0);if((t|0)<(D|0))t=t+1|0;else{p=A;q=B;break}}}}else{p=N+132|0;q=N+136|0;f=0;g=0}if((g|0)>0|(f|0)!=0?(H=N+128|0,h=(c[H>>2]|0)+1|0,c[H>>2]=h,Q=(c[p>>2]|0)+f|0,L=N+132|0,c[L>>2]=Q,!(Q>>>0<938&(h|0)!=32767|(h|0)==0)):0){g=0;while(1){h=h>>1;if(!h)break;else g=g+1|0}if((g|0)>14){Q=c[N+120>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=41;Bd[c[P>>2]&511](Q)}h=c[N+124>>2]|0;f=g<<4;r=N+108|0;do if(!(a[r>>0]|0)){Q=c[N+(h<<2)+60>>2]|0;j=c[Q+(f<<2)>>2]|0;Q=a[Q+f+1024>>0]|0;h=Q<<24>>24;if(Q<<24>>24==0?(Q=c[N+120>>2]|0,P=c[Q>>2]|0,c[P+20>>2]=41,Bd[c[P>>2]&511](Q),(a[r>>0]|0)!=0):0)break;n=N+16|0;m=(c[n>>2]|0)+h|0;o=N+12|0;h=((1<>2];if((m|0)>7){l=N+120|0;k=m;do{P=h>>>16;j=P&255;Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=P;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(!Q){Q=c[l>>2]|0;f=c[Q+24>>2]|0;if(!((Ed[c[f+12>>2]&511](Q)|0)<<24>>24)){Q=c[l>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[f>>2];c[K>>2]=c[f+4>>2]}if((j|0)==255?(Q=c[J>>2]|0,c[J>>2]=Q+1,a[Q>>0]=0,Q=(c[K>>2]|0)+-1|0,c[K>>2]=Q,(Q|0)==0):0){Q=c[l>>2]|0;j=c[Q+24>>2]|0;if(!((Ed[c[j+12>>2]&511](Q)|0)<<24>>24)){Q=c[l>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[j>>2];c[K>>2]=c[j+4>>2]}h=h<<8;k=k+-8|0}while((k|0)>7);j=m&7}else j=m;c[o>>2]=h;c[n>>2]=j}else{Q=(c[N+(h<<2)+92>>2]|0)+(f<<2)|0;c[Q>>2]=(c[Q>>2]|0)+1}while(0);if((g|0)!=0?(a[r>>0]|0)==0:0){m=N+16|0;k=(c[m>>2]|0)+g|0;n=N+12|0;h=(c[H>>2]&(1<>2];if((k|0)>7){f=N+120|0;l=k;do{P=h>>>16;j=P&255;Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=P;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(!Q){Q=c[f>>2]|0;g=c[Q+24>>2]|0;if(!((Ed[c[g+12>>2]&511](Q)|0)<<24>>24)){Q=c[f>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[g>>2];c[K>>2]=c[g+4>>2]}if((j|0)==255?(Q=c[J>>2]|0,c[J>>2]=Q+1,a[Q>>0]=0,Q=(c[K>>2]|0)+-1|0,c[K>>2]=Q,(Q|0)==0):0){Q=c[f>>2]|0;j=c[Q+24>>2]|0;if(!((Ed[c[j+12>>2]&511](Q)|0)<<24>>24)){Q=c[f>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[j>>2];c[K>>2]=c[j+4>>2]}h=h<<8;l=l+-8|0}while((l|0)>7);g=k&7}else g=k;c[n>>2]=h;c[m>>2]=g}c[H>>2]=0;h=c[p>>2]|0;e:do if((a[r>>0]|0)==0&(h|0)!=0){n=N+16|0;o=N+12|0;p=N+120|0;m=c[q>>2]|0;g=1;while(1){if(g){g=c[n>>2]|0;l=g+1|0;g=(d[m>>0]&1)<<23-g|c[o>>2];if((l|0)>7){k=l;do{P=g>>>16;f=P&255;Q=c[J>>2]|0;c[J>>2]=Q+1;a[Q>>0]=P;Q=(c[K>>2]|0)+-1|0;c[K>>2]=Q;if(!Q){Q=c[p>>2]|0;j=c[Q+24>>2]|0;if(!((Ed[c[j+12>>2]&511](Q)|0)<<24>>24)){Q=c[p>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[j>>2];c[K>>2]=c[j+4>>2]}if((f|0)==255?(Q=c[J>>2]|0,c[J>>2]=Q+1,a[Q>>0]=0,Q=(c[K>>2]|0)+-1|0,c[K>>2]=Q,(Q|0)==0):0){Q=c[p>>2]|0;f=c[Q+24>>2]|0;if(!((Ed[c[f+12>>2]&511](Q)|0)<<24>>24)){Q=c[p>>2]|0;P=c[Q>>2]|0;c[P+20>>2]=25;Bd[c[P>>2]&511](Q)}c[J>>2]=c[f>>2];c[K>>2]=c[f+4>>2]}g=g<<8;k=k+-8|0}while((k|0)>7);f=l&7}else f=l;c[o>>2]=g;c[n>>2]=f}h=h+-1|0;if(!h)break e;m=m+1|0;g=(a[r>>0]|0)==0}}while(0);c[L>>2]=0}g=c[I>>2]|0;c[g>>2]=c[J>>2];c[g+4>>2]=c[K>>2];g=c[M>>2]|0;if(!g){i=O;return 1}f=N+36|0;h=c[f>>2]|0;if(!h){c[f>>2]=g;h=N+40|0;c[h>>2]=(c[h>>2]|0)+1&7;h=g}c[f>>2]=h+-1;i=O;return 1}function s$(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;j=c[a+408>>2]|0;i=a+224|0;e=c[i>>2]|0;if(e){f=j+36|0;g=c[f>>2]|0;if(!g){h=a+276|0;if((c[h>>2]|0)>0){e=j+20|0;g=0;do{c[e+(g<<2)>>2]=0;g=g+1|0}while((g|0)<(c[h>>2]|0));e=c[i>>2]|0}c[f>>2]=e}else e=g;c[f>>2]=e+-1}u=a+304|0;if((c[u>>2]|0)<=0)return 1;v=j+20|0;w=j+76|0;n=j+92|0;o=a+372|0;p=a+368|0;t=0;do{r=c[a+(t<<2)+308>>2]|0;s=c[a+(r<<2)+280>>2]|0;q=d+(t<<2)|0;k=c[q>>2]|0;r=v+(r<<2)|0;g=c[w+(c[s+20>>2]<<2)>>2]|0;s=c[n+(c[s+24>>2]<<2)>>2]|0;l=c[o>>2]|0;m=c[p>>2]|0;e=(b[k>>1]|0)-(c[r>>2]|0)|0;e=(e|0)<0?0-e|0:e;if(e){h=0;f=e;while(1){e=h+1|0;f=f>>1;if(!f)break;else h=e}if((h|0)>10){i=c[a>>2]|0;c[i+20>>2]=6;Bd[c[i>>2]&511](a)}}else e=0;i=g+(e<<2)|0;c[i>>2]=(c[i>>2]|0)+1;if((l|0)>=1){j=s+960|0;i=1;e=0;while(1){f=b[k+(c[m+(i<<2)>>2]<<1)>>1]|0;g=f<<16>>16;if(!(f<<16>>16))e=e+1|0;else{if((e|0)>15){h=e+-16|0;e=h>>>4;c[j>>2]=e+1+(c[j>>2]|0);e=h-(e<<4)|0}h=1;f=f<<16>>16<0?0-g|0:g;while(1){f=f>>1;if(!f)break;else h=h+1|0}if((h|0)>10){g=c[a>>2]|0;c[g+20>>2]=6;Bd[c[g>>2]&511](a)}e=s+(h+(e<<4)<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=0}if((i|0)==(l|0))break;else i=i+1|0}if((e|0)>0)c[s>>2]=(c[s>>2]|0)+1}c[r>>2]=b[c[q>>2]>>1];t=t+1|0}while((t|0)<(c[u>>2]|0));return 1} -function MC(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;B=i;i=i+16|0;j=B;n=f+824|0;g=c[n>>2]|0;q=f+488|0;k=c[q>>2]|0;h=(k|0)!=0;do if(!g)if(h){c[n>>2]=EB(k)|0;g=0;break}else{c[n>>2]=1e5;c[q>>2]=1e5;g=0;break}else{if(!h){c[q>>2]=EB(g)|0;g=0;break}if(!(AB(j,g,k,1e5)|0))g=1;else g=(FB(c[j>>2]|0)|0)!=0}while(0);A=f+898|0;b[A>>1]=e[A>>1]|1;A=f+216|0;z=c[A>>2]|0;g=g?z|8192:z&-8193;c[A>>2]=g;if((g&262272|0)==262144){c[A>>2]=g&-41943297;z=f+212|0;c[z>>2]=c[z>>2]&-8193;b[f+428>>1]=0}z=(FB(c[q>>2]|0)|0)==0;g=c[A>>2]|0;if(z){g=g&-8388609;c[A>>2]=g;z=f+212|0;c[z>>2]=c[z>>2]&-8193}if(!(g&6291456))m=g;else{zB(f);m=c[A>>2]|0}if(!(m&256)){if(((m&16512|0)==16512?(o=b[f+454>>1]|0,o<<16>>16==(b[f+456>>1]|0)):0)?o<<16>>16==(b[f+458>>1]|0):0){z=f+208|0;c[z>>2]=c[z>>2]|2048;b[f+460>>1]=o}}else if(!(a[f+435>>0]&2)){z=f+208|0;c[z>>2]=c[z>>2]|2048}z=f+435|0;k=a[z>>0]|0;if(k<<24>>24==3){k=b[f+428>>1]|0;a:do if(!(k<<16>>16)){k=0;h=0;y=28}else{o=c[f+528>>2]|0;j=k&65535;p=0;h=0;while(1){g=a[o+p>>0]|0;if(g<<24>>24!=-1)if(!(g<<24>>24))h=1;else{g=m;break a}p=p+1|0;if((p|0)>=(j|0)){y=28;break}}}while(0);if((y|0)==28){g=m&-8388609;c[A>>2]=g;v=f+212|0;c[v>>2]=c[v>>2]&-8193;if(!h){g=m&-8388993;c[A>>2]=g}}if(((g&4352|0)==4352?(v=d[f+452>>0]|0,u=c[f+416>>2]|0,b[f+454>>1]=d[u+(v*3|0)>>0]|0,b[f+456>>1]=d[u+(v*3|0)+1>>0]|0,b[f+458>>1]=d[u+(v*3|0)+2>>0]|0,(g&34078720|0)==524288):0)?(l=k&65535,k<<16>>16!=0):0){g=c[f+528>>2]|0;k=0;do{v=g+k|0;a[v>>0]=d[v>>0]^255;k=k+1|0}while((k|0)<(l|0));g=c[A>>2]|0}}else{if(!(k&4)){v=(b[f+428>>1]|0)==0;g=m&-8388609;c[A>>2]=g;u=f+212|0;c[u>>2]=c[u>>2]&-8193;if(v){g=m&-8388993;c[A>>2]=g}}else g=m;if((g&4352|0)==4352&(k&2)==0){h=e[f+460>>1]|0;k=e[f+540>>1]|0;j=d[f+436>>0]|0;if((j|0)==4){h=h*17|0;k=k*17|0}else if((j|0)==2){h=h*85|0;k=k*85|0}else if((j|0)==1){h=h*255|0;k=k*255|0}v=h&65535;b[f+458>>1]=v;b[f+456>>1]=v;b[f+454>>1]=v;if(!(g&33554432)){v=k&65535;b[f+538>>1]=v;b[f+536>>1]=v;b[f+534>>1]=v}}}if((g&896|0)==640?(a[f+436>>0]|0)!=16:0){v=f+454|0;b[v>>1]=(((e[v>>1]|0)*255|0)+32895|0)>>>16;v=f+456|0;b[v>>1]=(((e[v>>1]|0)*255|0)+32895|0)>>>16;v=f+458|0;b[v>>1]=(((e[v>>1]|0)*255|0)+32895|0)>>>16;v=f+460|0;b[v>>1]=(((e[v>>1]|0)*255|0)+32895|0)>>>16}if((g&128|0)!=0&(g&67109888|0)!=0&(g&256|0)==0?(a[f+436>>0]|0)==16:0){v=f+454|0;b[v>>1]=(e[v>>1]|0)*257;v=f+456|0;b[v>>1]=(e[v>>1]|0)*257;v=f+458|0;b[v>>1]=(e[v>>1]|0)*257;v=f+460|0;b[v>>1]=(e[v>>1]|0)*257}v=f+462|0;u=f+452|0;b[v+0>>1]=b[u+0>>1]|0;b[v+2>>1]=b[u+2>>1]|0;b[v+4>>1]=b[u+4>>1]|0;b[v+6>>1]=b[u+6>>1]|0;b[v+8>>1]=b[u+8>>1]|0;do if(!(g&8192)){if(g&6291456){if(FB(c[n>>2]|0)|0){y=65;break}if(FB(c[q>>2]|0)|0){y=65;break}g=c[A>>2]|0}if(g&128){if(FB(c[n>>2]|0)|0){y=65;break}if(FB(c[q>>2]|0)|0){y=65;break}if((a[f+446>>0]|0)==3?(FB(c[f+448>>2]|0)|0)!=0:0){y=65;break}}g=c[A>>2]|0;if(g&8388608){if(FB(c[q>>2]|0)|0){y=65;break}g=c[A>>2]|0}if((g&128|0)!=0?(a[z>>0]|0)==3:0){x=b[f+428>>1]|0;o=x&65535;p=c[f+416>>2]|0;k=b[f+454>>1]|0;q=k&255;h=b[f+456>>1]|0;r=h&255;j=b[f+458>>1]|0;s=j&255;if(x<<16>>16){n=f+528|0;l=k&255;m=h&255;g=j&255;j=0;do{k=(c[n>>2]|0)+j|0;h=a[k>>0]|0;if(!(h<<24>>24)){a[p+(j*3|0)>>0]=q;a[p+(j*3|0)+1>>0]=r;a[p+(j*3|0)+2>>0]=s}else if(h<<24>>24!=-1){x=p+(j*3|0)|0;w=h&255;w=(da(w^255,l)|0)+128+(da(d[x>>0]|0,w)|0)|0;a[x>>0]=((w>>>8&255)+w|0)>>>8;x=p+(j*3|0)+1|0;w=d[k>>0]|0;w=(da(w,d[x>>0]|0)|0)+128+(da(w^255,m)|0)|0;a[x>>0]=((w>>>8&255)+w|0)>>>8;x=p+(j*3|0)+2|0;w=d[k>>0]|0;w=(da(w,d[x>>0]|0)|0)+128+(da(w^255,g)|0)|0;a[x>>0]=((w>>>8&255)+w|0)>>>8}j=j+1|0}while((j|0)<(o|0));g=c[A>>2]|0}g=g&-129;c[A>>2]=g}}else y=65;while(0);do if((y|0)==65){KB(f,d[f+436>>0]|0);g=c[A>>2]|0;if(!(g&128)){if((a[z>>0]|0)!=3)break;if(!((g&4096|0)==0|(g&6291456|0)==0))break;j=c[f+416>>2]|0;y=b[f+420>>1]|0;k=y&65535;if(y<<16>>16){h=c[f+492>>2]|0;l=0;do{y=j+(l*3|0)|0;a[y>>0]=a[h+(d[y>>0]|0)>>0]|0;y=j+(l*3|0)+1|0;a[y>>0]=a[h+(d[y>>0]|0)>>0]|0;y=j+(l*3|0)+2|0;a[y>>0]=a[h+(d[y>>0]|0)>>0]|0;l=l+1|0}while((l|0)<(k|0))}g=g&-8193;c[A>>2]=g;break}if(g&6291456)OB(f,261712);if((a[z>>0]|0)!=3){m=f+446|0;g=d[m>>0]|0;if((g|0)==2){s=EB(c[n>>2]|0)|0;t=GB(c[n>>2]|0,c[q>>2]|0)|0}else if((g|0)==3){t=f+448|0;s=EB(c[t>>2]|0)|0;t=GB(c[t>>2]|0,c[q>>2]|0)|0}else if((g|0)==1){s=c[q>>2]|0;t=1e5}else LB(f,261768);l=FB(s)|0;g=FB(t)|0;l=(l|0)!=0;if(l)b[f+470>>1]=IB(f,e[f+460>>1]|0,s)|0;g=(g|0)!=0;if(g){y=f+460|0;b[y>>1]=IB(f,e[y>>1]|0,t)|0}k=f+454|0;h=b[k>>1]|0;j=f+456|0;if((h<<16>>16==(b[j>>1]|0)?(r=f+458|0,h<<16>>16==(b[r>>1]|0)):0)?h<<16>>16==(b[f+460>>1]|0):0){y=b[f+470>>1]|0;b[f+468>>1]=y;b[f+466>>1]=y;b[f+464>>1]=y;b[r>>1]=h;b[j>>1]=h;b[k>>1]=h}else{if(l){b[f+464>>1]=IB(f,h&65535,s)|0;b[f+466>>1]=IB(f,e[j>>1]|0,s)|0;b[f+468>>1]=IB(f,e[f+458>>1]|0,s)|0}if(g){b[k>>1]=IB(f,e[k>>1]|0,t)|0;b[j>>1]=IB(f,e[j>>1]|0,t)|0;y=f+458|0;b[y>>1]=IB(f,e[y>>1]|0,t)|0}}a[m>>0]=1;g=c[A>>2]|0;break}u=c[f+416>>2]|0;l=b[f+420>>1]|0;v=l&65535;g=a[f+446>>0]|0;do if(g<<24>>24!=2){g=g&255;if((g|0)==3){k=f+448|0;p=EB(c[k>>2]|0)|0;k=GB(c[k>>2]|0,c[q>>2]|0)|0}else if((g|0)==1){p=c[q>>2]|0;k=1e5}else if((g|0)==2){p=EB(c[n>>2]|0)|0;k=GB(c[n>>2]|0,c[q>>2]|0)|0}else{p=1e5;k=1e5}t=(FB(k)|0)==0;h=f+454|0;g=b[h>>1]|0;if(t){g=g&255;j=b[f+456>>1]&255;m=b[f+458>>1]&255}else{g=HB(g&65535,k)|0;j=HB(e[f+456>>1]|0,k)|0;m=HB(e[f+458>>1]|0,k)|0}t=(FB(p)|0)==0;k=b[h>>1]|0;if(t){k=k&255;o=b[f+456>>1]&255;h=b[f+458>>1]&255;break}else{k=HB(k&65535,p)|0;o=HB(e[f+456>>1]|0,p)|0;h=HB(e[f+458>>1]|0,p)|0;break}}else{k=e[f+454>>1]|0;m=c[f+492>>2]|0;o=e[f+456>>1]|0;h=e[f+458>>1]|0;t=c[f+504>>2]|0;g=a[m+k>>0]|0;j=a[m+o>>0]|0;m=a[m+h>>0]|0;k=a[t+k>>0]|0;o=a[t+o>>0]|0;h=a[t+h>>0]|0}while(0);if(l<<16>>16){r=f+428|0;s=f+528|0;t=f+504|0;n=k&255;q=f+500|0;l=o&255;o=h&255;k=f+492|0;p=0;do{do if((p|0)<(e[r>>1]|0)?(w=(c[s>>2]|0)+p|0,x=a[w>>0]|0,x<<24>>24!=-1):0){h=u+(p*3|0)|0;if(!(x<<24>>24)){a[h>>0]=g;a[u+(p*3|0)+1>>0]=j;a[u+(p*3|0)+2>>0]=m;break}else{E=c[t>>2]|0;C=x&255;C=(da(C^255,n)|0)+128+(da(d[E+(d[h>>0]|0)>>0]|0,C)|0)|0;D=c[q>>2]|0;a[h>>0]=a[D+(((C>>>8&255)+C|0)>>>8&255)>>0]|0;h=u+(p*3|0)+1|0;C=d[w>>0]|0;C=(da(C,d[E+(d[h>>0]|0)>>0]|0)|0)+128+(da(C^255,l)|0)|0;a[h>>0]=a[D+(((C>>>8&255)+C|0)>>>8&255)>>0]|0;h=u+(p*3|0)+2|0;C=d[w>>0]|0;C=(da(C,d[E+(d[h>>0]|0)>>0]|0)|0)+128+(da(C^255,o)|0)|0;a[h>>0]=a[D+(((C>>>8&255)+C|0)>>>8&255)>>0]|0;break}}else y=88;while(0);if((y|0)==88){y=0;E=u+(p*3|0)|0;D=c[k>>2]|0;a[E>>0]=a[D+(d[E>>0]|0)>>0]|0;E=u+(p*3|0)+1|0;a[E>>0]=a[D+(d[E>>0]|0)>>0]|0;E=u+(p*3|0)+2|0;a[E>>0]=a[D+(d[E>>0]|0)>>0]|0}p=p+1|0}while((p|0)<(v|0))}g=c[A>>2]&-8321;c[A>>2]=g}while(0);if((g&4104|0)!=8){i=B;return}if((a[z>>0]|0)!=3){i=B;return}l=b[f+420>>1]|0;m=l&65535;E=a[f+516>>0]|0;k=8-(E&255)|0;c[A>>2]=g&-9;if(!(E<<24>>24==0|(k|0)<1|l<<16>>16==0)){g=c[f+416>>2]|0;h=0;do{E=g+(h*3|0)|0;a[E>>0]=(d[E>>0]|0)>>>k;h=h+1|0}while((h|0)<(m|0))}E=a[f+517>>0]|0;g=8-(E&255)|0;if(!(E<<24>>24==0|(g|0)<1|l<<16>>16==0)){h=c[f+416>>2]|0;j=0;do{E=h+(j*3|0)+1|0;a[E>>0]=(d[E>>0]|0)>>>g;j=j+1|0}while((j|0)<(m|0))}E=a[f+518>>0]|0;j=8-(E&255)|0;if(E<<24>>24==0|(j|0)<1|l<<16>>16==0){i=B;return}g=c[f+416>>2]|0;h=0;do{E=g+(h*3|0)+2|0;a[E>>0]=(d[E>>0]|0)>>>j;h=h+1|0}while((h|0)<(m|0));i=B;return}function NC(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=c[e+216>>2]|0;do if(l&4096){h=f+25|0;k=a[h>>0]|0;i=k&255;g=(b[e+428>>1]|0)==0;if(k<<24>>24==3){a[h>>0]=g?2:6;a[f+24>>0]=8;b[f+22>>1]=0;if(c[e+416>>2]|0)break;LB(e,261800)}if(!(g|(l&33554432|0)==0))a[h>>0]=i|4;g=f+24|0;if((d[g>>0]|0)<8)a[g>>0]=8;b[f+22>>1]=0}while(0);if(l&128){k=f+170|0;i=e+452|0;b[k+0>>1]=b[i+0>>1]|0;b[k+2>>1]=b[i+2>>1]|0;b[k+4>>1]=b[i+4>>1]|0;b[k+6>>1]=b[i+6>>1]|0;b[k+8>>1]=b[i+8>>1]|0}c[f+40>>2]=c[e+824>>2];k=f+24|0;g=a[k>>0]|0;if(g<<24>>24==16){if(!(l&67108864))g=16;else{a[k>>0]=8;g=8}if(l&1024){a[k>>0]=8;g=8}}if(l&16384){i=f+25|0;a[i>>0]=d[i>>0]|2}if(l&6291456){i=f+25|0;a[i>>0]=d[i>>0]&253}if(((l&64|0)!=0?(j=f+25|0,i=a[j>>0]|0,i<<24>>24==6|i<<24>>24==2):0)?(c[e+612>>2]|0)!=0&g<<24>>24==8:0){a[j>>0]=3;g=8}if((l&512|0)!=0&g<<24>>24==8)if((a[f+25>>0]|0)==3)g=8;else{a[k>>0]=16;g=16}if((l&4|0)!=0&(g&255)<8){a[k>>0]=8;g=8}j=f+25|0;i=a[j>>0]|0;do if(i<<24>>24!=3){h=f+29|0;if(!(i&2)){a[h>>0]=1;h=1;break}else{a[h>>0]=3;h=3;break}}else{a[f+29>>0]=1;h=1}while(0);if(l&262144){i=i&251;a[j>>0]=i;b[f+22>>1]=0}if(i&4){h=h+1<<24>>24;a[f+29>>0]=h}if((l&32768|0)!=0?i<<24>>24==0|i<<24>>24==2:0){h=h+1<<24>>24;a[f+29>>0]=h;if(!(l&16777216))i=h;else{a[j>>0]=i&255|4;i=h}}else i=h;if(l&1048576){h=a[e+204>>0]|0;if((g&255)<(h&255)){a[k>>0]=h;g=h}h=a[e+205>>0]|0;if((i&255)<(h&255))a[f+29>>0]=h;else h=i}else h=i;g=da(g&255,h&255)|0;a[f+30>>0]=g;g=g&255;h=c[f>>2]|0;if(g>>>0>7){l=da(g>>>3,h)|0;f=f+12|0;c[f>>2]=l;f=e+404|0;c[f>>2]=l;return}else{l=((da(g,h)|0)+7|0)>>>3;f=f+12|0;c[f>>2]=l;f=e+404|0;c[f>>2]=l;return}}function OC(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0;ba=i;i=i+16|0;Z=ba;aa=f+384|0;v=c[aa>>2]|0;if(!v)LB(f,261840);_=f+212|0;if((c[_>>2]&16448|0)==16384)LB(f,261856);$=f+216|0;q=c[$>>2]|0;do if(q&4096){B=g+8|0;if((a[B>>0]|0)!=3){l=v+1|0;if((b[f+428>>1]|0)==0|(q&33554432|0)==0){uP(g,l,0);break}else{uP(g,l,f+532|0);break}}y=c[f+416>>2]|0;w=c[f+528>>2]|0;u=b[f+428>>1]|0;x=u&65535;z=c[g>>2]|0;A=g+9|0;l=a[A>>0]|0;if((l&255)>=8){if(l<<24>>24!=8)break}else{l=l&255;if((l|0)==4){if(z){q=v+z|0;o=0;r=z<<2&4;s=v+(((z+-1|0)>>>1)+1)|0;while(1){a[q>>0]=(d[s>>0]|0)>>>r&15;l=(r|0)==4;o=o+1|0;if((o|0)==(z|0))break;else{q=q+-1|0;r=l?0:r+4|0;s=l?s+-1|0:s}}}}else if((l|0)==1){if(z){q=v+z|0;o=0;r=z+7&7^7;s=v+(((z+-1|0)>>>3)+1)|0;while(1){a[q>>0]=(d[s>>0]&1<>>2)+1)|0;while(1){a[q>>0]=(d[s>>0]|0)>>>r&3;l=(r|0)==6;o=o+1|0;if((o|0)==(z|0))break;else{q=q+-1|0;r=l?0:r+2|0;s=l?s+-1|0:s}}}a[A>>0]=8;a[g+11>>0]=8;c[g+4>>2]=z}l=v+z|0;if(!(u<<16>>16)){r=z*3|0;if(z){q=v+r|0;o=0;while(1){a[q>>0]=a[y+((d[l>>0]|0)*3|0)+2>>0]|0;a[q+-1>>0]=a[y+((d[l>>0]|0)*3|0)+1>>0]|0;a[q+-2>>0]=a[y+((d[l>>0]|0)*3|0)>>0]|0;o=o+1|0;if((o|0)==(z|0))break;else{q=q+-3|0;l=l+-1|0}}}a[A>>0]=8;a[g+11>>0]=24;c[g+4>>2]=r;a[B>>0]=2;a[g+10>>0]=3;break}s=z<<2;if(z){o=v+s|0;r=0;while(1){q=d[l>>0]|0;if(q>>>0>>0)q=a[w+q>>0]|0;else q=-1;a[o>>0]=q;a[o+-1>>0]=a[y+((d[l>>0]|0)*3|0)+2>>0]|0;a[o+-2>>0]=a[y+((d[l>>0]|0)*3|0)+1>>0]|0;a[o+-3>>0]=a[y+((d[l>>0]|0)*3|0)>>0]|0;r=r+1|0;if((r|0)==(z|0))break;else{o=o+-4|0;l=l+-1|0}}}a[A>>0]=8;a[g+11>>0]=32;c[g+4>>2]=s;a[B>>0]=6;a[g+10>>0]=4}while(0);l=c[$>>2]|0;if((l&262272|0)==262144?(L=a[g+8>>0]|0,L<<24>>24==4|L<<24>>24==6):0){RD(g,(c[aa>>2]|0)+1|0,0);l=c[$>>2]|0}do if((l&6291456|0)!=0?(t=c[aa>>2]|0,F=t+1|0,M=g+8|0,C=d[M>>0]|0,(C&3|0)==2):0){H=e[f+702>>1]|0;I=e[f+704>>1]|0;J=32768-H-I|0;L=c[g>>2]|0;E=(C&4|0)!=0;K=g+9|0;a:do if((a[K>>0]|0)==8){y=f+500|0;if((c[y>>2]|0)!=0?(D=f+504|0,(c[D>>2]|0)!=0):0){if(!L){q=0;break}w=f+492|0;l=F;x=0;q=0;o=F;while(1){s=a[o>>0]|0;r=a[o+1>>0]|0;v=o+3|0;t=a[o+2>>0]|0;u=s&255;if(s<<24>>24==r<<24>>24?s<<24>>24==t<<24>>24:0){r=c[w>>2]|0;if(r)s=a[r+u>>0]|0}else{s=c[D>>2]|0;s=((da(d[s+u>>0]|0,H)|0)+16384+(da(d[s+(r&255)>>0]|0,I)|0)+(da(d[s+(t&255)>>0]|0,J)|0)|0)>>>15;q=q|1;s=a[(c[y>>2]|0)+s>>0]|0}r=l+1|0;a[l>>0]=s;if(E){a[r>>0]=a[v>>0]|0;l=l+2|0;o=o+4|0}else{l=r;o=v}x=x+1|0;if((x|0)==(L|0))break a}}if(L)if(E){t=F;u=0;q=0;s=F;while(1){l=a[s>>0]|0;o=a[s+1>>0]|0;r=a[s+2>>0]|0;if(!(l<<24>>24==o<<24>>24?l<<24>>24==r<<24>>24:0)){q=q|1;l=((da(o&255,I)|0)+(da(l&255,H)|0)+(da(r&255,J)|0)|0)>>>15&255}a[t>>0]=l;a[t+1>>0]=a[s+3>>0]|0;u=u+1|0;if((u|0)==(L|0))break;else{t=t+2|0;s=s+4|0}}}else{u=F;v=0;q=0;s=F;while(1){l=a[s>>0]|0;o=a[s+1>>0]|0;r=a[s+2>>0]|0;if(!(l<<24>>24==o<<24>>24?l<<24>>24==r<<24>>24:0)){q=q|1;l=((da(o&255,I)|0)+(da(l&255,H)|0)+(da(r&255,J)|0)|0)>>>15&255}a[u>>0]=l;v=v+1|0;if((v|0)==(L|0))break;else{G=u;u=t+2|0;s=s+3|0;t=G}}}else q=0}else{A=f+512|0;if((c[A>>2]|0)!=0?(G=f+508|0,(c[G>>2]|0)!=0):0){if(!L){q=0;break}B=f+496|0;C=f+484|0;l=F;D=0;q=0;o=F;while(1){r=a[o>>0]|0;x=r&255;s=a[o+1>>0]|0;y=s&255;F=x<<8|y;t=d[o+2>>0]|0;u=d[o+3>>0]|0;v=d[o+4>>0]|0;w=d[o+5>>0]|0;z=o+6|0;if((F|0)==(t<<8|u|0)?(F|0)==(v<<8|w|0):0){t=c[B>>2]|0;if(t){r=b[(c[t+(y>>>(c[C>>2]|0)<<2)>>2]|0)+(x<<1)>>1]|0;s=r&255;r=(r&65535)>>>8&255}}else{s=c[C>>2]|0;r=c[A>>2]|0;r=(da(e[(c[r+(y>>>s<<2)>>2]|0)+(x<<1)>>1]|0,H)|0)+16384+(da(e[(c[r+(u>>>s<<2)>>2]|0)+(t<<1)>>1]|0,I)|0)+(da(e[(c[r+(w>>>s<<2)>>2]|0)+(v<<1)>>1]|0,J)|0)|0;r=b[(c[(c[G>>2]|0)+((r>>>15&255)>>>s<<2)>>2]|0)+((r>>>23&255)<<1)>>1]|0;q=q|1;s=r&255;r=(r&65535)>>>8&255}a[l>>0]=r;r=l+2|0;a[l+1>>0]=s;if(E){a[r>>0]=a[z>>0]|0;a[l+3>>0]=a[o+7>>0]|0;l=l+4|0;o=o+8|0}else{l=r;o=z}D=D+1|0;if((D|0)==(L|0))break a}}if(!L)q=0;else{s=F;t=0;q=0;o=F;while(1){F=d[o>>0]<<8|d[o+1>>0];l=d[o+2>>0]<<8|d[o+3>>0];G=d[o+4>>0]<<8|d[o+5>>0];r=o+6|0;q=(F|0)==(l|0)&(F|0)==(G|0)&1^1|q;G=(da(F,H)|0)+16384+(da(l,I)|0)+(da(G,J)|0)|0;a[s>>0]=G>>>23;l=s+2|0;a[s+1>>0]=G>>>15;if(E){a[l>>0]=a[r>>0]|0;a[s+3>>0]=a[o+7>>0]|0;l=s+4|0;o=o+8|0}else o=r;t=t+1|0;if((t|0)==(L|0))break;else s=l}}}while(0);I=g+10|0;l=(d[I>>0]|0)+254|0;a[I>>0]=l;a[M>>0]=d[M>>0]&253;l=da(d[K>>0]|0,l&255)|0;a[g+11>>0]=l;l=l&255;if(l>>>0>7)l=da(l>>>3,L)|0;else l=((da(l,L)|0)+7|0)>>>3;c[g+4>>2]=l;if(!q){p=c[$>>2]|0;break}a[f+700>>0]=1;l=c[$>>2]|0;if((l&6291456|0)==4194304){OB(f,261880);l=c[$>>2]|0}if((l&6291456|0)==2097152)LB(f,261880);else p=l}else p=l;while(0);if((p&16384|0)!=0?(c[f+208>>2]&2048|0)==0:0){vP(g,(c[aa>>2]|0)+1|0);p=c[$>>2]|0}b:do if(p&128){q=c[aa>>2]|0;l=q+1|0;J=c[f+492>>2]|0;A=c[f+500>>2]|0;B=c[f+504>>2]|0;H=c[f+496>>2]|0;D=c[f+508>>2]|0;E=c[f+512>>2]|0;I=c[f+484>>2]|0;o=c[_>>2]&8192;v=(o|0)==0;o=o>>>13;K=c[g>>2]|0;p=d[g+8>>0]|0;if(!p)switch(d[g+9>>0]|0){case 8:{p=(K|0)==0;if(!J){if(p)break b;o=f+540|0;r=f+460|0;p=q;q=0;while(1){if((d[l>>0]|0)==(e[o>>1]|0))a[l>>0]=b[r>>1];q=q+1|0;if((q|0)==(K|0))break b;else{O=l;l=p+2|0;p=O}}}if(p)break b;r=f+540|0;s=f+460|0;o=0;while(1){p=d[l>>0]|0;if((p|0)==(e[r>>1]|0))p=b[s>>1]&255;else p=a[J+p>>0]|0;a[l>>0]=p;o=o+1|0;if((o|0)==(K|0))break;else{O=l;l=q+2|0;q=O}}break}case 2:{p=(K|0)==0;if(!J){if(p)break b;q=f+540|0;o=f+460|0;r=0;s=6;while(1){p=d[l>>0]|0;if((p>>>s&3|0)==(e[q>>1]|0))a[l>>0]=e[o>>1]<>>(6-s|0);p=(s|0)==0;r=r+1|0;if((r|0)==(K|0))break b;else{s=p?6:s+-2|0;l=p?l+1|0:l}}}if(p)break b;o=f+540|0;r=f+460|0;s=0;t=6;while(1){p=d[l>>0]|0;q=p>>>t&3;if((q|0)==(e[o>>1]|0))p=e[r>>1]<>>(6-t|0);else p=(d[J+(q<<2|q|q<<4|q<<6)>>0]|0)>>>6<>>(6-t|0);a[l>>0]=p;p=(t|0)==0;s=s+1|0;if((s|0)==(K|0))break;else{t=p?6:t+-2|0;l=p?l+1|0:l}}break}case 1:{if(!K)break b;q=f+540|0;o=f+460|0;r=0;s=7;while(1){p=d[l>>0]|0;if((p>>>s&1|0)==(e[q>>1]|0))a[l>>0]=e[o>>1]<>>(7-s|0);p=(s|0)==0;r=r+1|0;if((r|0)==(K|0))break;else{s=p?7:s+-1|0;l=p?l+1|0:l}}break}case 4:{p=(K|0)==0;if(!J){if(p)break b;q=f+540|0;o=f+460|0;r=0;s=4;while(1){p=d[l>>0]|0;if((p>>>s&15|0)==(e[q>>1]|0))a[l>>0]=e[o>>1]<>>(4-s|0);p=(s|0)==0;r=r+1|0;if((r|0)==(K|0))break b;else{s=p?4:s+-4|0;l=p?l+1|0:l}}}if(p)break b;o=f+540|0;r=f+460|0;s=0;t=4;while(1){p=d[l>>0]|0;q=p>>>t&15;if((q|0)==(e[o>>1]|0))p=e[r>>1]<>>(4-t|0);else p=(d[J+(q<<4|q)>>0]|0)>>>4<>>(4-t|0);a[l>>0]=p;p=(t|0)==0;s=s+1|0;if((s|0)==(K|0))break;else{t=p?4:t+-4|0;l=p?l+1|0:l}}break}case 16:{p=(K|0)==0;if(!H){if(p)break b;q=f+540|0;o=f+460|0;r=0;while(1){p=l+1|0;if((d[l>>0]<<8|d[p>>0]|0)==(e[q>>1]|0)){a[l>>0]=(e[o>>1]|0)>>>8;a[p>>0]=b[o>>1]}r=r+1|0;if((r|0)==(K|0))break b;else l=l+2|0}}if(p)break b;r=f+540|0;s=f+460|0;t=0;while(1){p=d[l>>0]|0;o=l+1|0;q=d[o>>0]|0;if((p<<8|q|0)==(e[r>>1]|0)){a[l>>0]=(e[s>>1]|0)>>>8;p=b[s>>1]|0}else{p=b[(c[H+(q>>>I<<2)>>2]|0)+(p<<1)>>1]|0;a[l>>0]=(p&65535)>>>8}a[o>>0]=p;t=t+1|0;if((t|0)==(K|0))break;else l=l+2|0}break}default:break b}else if((p|0)==2){if((a[g+9>>0]|0)==8){p=(K|0)==0;if(!J){if(p)break;p=f+534|0;q=f+536|0;o=f+538|0;r=f+454|0;s=f+456|0;t=f+458|0;u=0;while(1){if(((d[l>>0]|0)==(e[p>>1]|0)?(N=l+1|0,(d[N>>0]|0)==(e[q>>1]|0)):0)?(O=l+2|0,(d[O>>0]|0)==(e[o>>1]|0)):0){a[l>>0]=b[r>>1];a[N>>0]=b[s>>1];a[O>>0]=b[t>>1]}u=u+1|0;if((u|0)==(K|0))break b;else l=l+3|0}}if(p)break;r=f+534|0;s=f+536|0;t=f+538|0;u=f+454|0;v=f+456|0;w=f+458|0;x=0;while(1){p=d[l>>0]|0;q=l+1|0;o=d[q>>0]|0;if(((p|0)==(e[r>>1]|0)?(o|0)==(e[s>>1]|0):0)?(P=l+2|0,(d[P>>0]|0)==(e[t>>1]|0)):0){a[l>>0]=b[u>>1];a[q>>0]=b[v>>1];a[P>>0]=b[w>>1]}else{a[l>>0]=a[J+p>>0]|0;a[q>>0]=a[J+o>>0]|0;O=l+2|0;a[O>>0]=a[J+(d[O>>0]|0)>>0]|0}x=x+1|0;if((x|0)==(K|0))break b;else l=l+3|0}}p=(K|0)==0;if(!H){if(p)break;t=f+534|0;u=f+536|0;v=f+538|0;w=f+454|0;x=f+456|0;y=f+458|0;z=0;while(1){p=l+1|0;q=l+2|0;o=l+3|0;r=l+4|0;s=l+5|0;O=d[r>>0]<<8|d[s>>0];if(((d[l>>0]<<8|d[p>>0]|0)==(e[t>>1]|0)?(d[q>>0]<<8|d[o>>0]|0)==(e[u>>1]|0):0)?(O|0)==(e[v>>1]|0):0){a[l>>0]=(e[w>>1]|0)>>>8;a[p>>0]=b[w>>1];a[q>>0]=(e[x>>1]|0)>>>8;a[o>>0]=b[x>>1];a[r>>0]=(e[y>>1]|0)>>>8;a[s>>0]=b[y>>1]}z=z+1|0;if((z|0)==(K|0))break b;else l=l+6|0}}if(p)break;A=f+534|0;B=f+536|0;C=f+538|0;D=f+454|0;E=f+456|0;F=f+458|0;G=0;while(1){r=d[l>>0]|0;s=l+1|0;t=d[s>>0]|0;u=l+2|0;v=l+3|0;w=l+4|0;x=d[w>>0]|0;z=l+5|0;y=d[z>>0]|0;o=x<<8|y;p=a[u>>0]|0;if((r<<8|t|0)==(e[A>>1]|0)){q=p&255;p=a[v>>0]|0;if((p&255|q<<8|0)==(e[B>>1]|0)?(o|0)==(e[C>>1]|0):0){a[l>>0]=(e[D>>1]|0)>>>8;a[s>>0]=b[D>>1];a[u>>0]=(e[E>>1]|0)>>>8;a[v>>0]=b[E>>1];a[w>>0]=(e[F>>1]|0)>>>8;p=b[F>>1]|0}else Q=170}else{q=p&255;p=a[v>>0]|0;Q=170}if((Q|0)==170){Q=0;O=b[(c[H+(t>>>I<<2)>>2]|0)+(r<<1)>>1]|0;a[l>>0]=(O&65535)>>>8;a[s>>0]=O;p=b[(c[H+((p&255)>>>I<<2)>>2]|0)+(q<<1)>>1]|0;a[u>>0]=(p&65535)>>>8;a[v>>0]=p;p=b[(c[H+(y>>>I<<2)>>2]|0)+(x<<1)>>1]|0;a[w>>0]=(p&65535)>>>8}a[z>>0]=p;G=G+1|0;if((G|0)==(K|0))break;else l=l+6|0}}else if((p|0)==6)if((a[g+9>>0]|0)==8){p=(K|0)==0;if(!((B|0)!=0&(A|0)!=0&(J|0)!=0)){if(p)break;q=f+454|0;o=f+456|0;r=f+458|0;s=0;while(1){p=a[l+3>>0]|0;if(!(p<<24>>24)){a[l>>0]=b[q>>1];a[l+1>>0]=b[o>>1];a[l+2>>0]=b[r>>1]}else if(p<<24>>24!=-1){M=p&255;O=da(d[l>>0]|0,M)|0;N=M^255;O=O+128+(da(e[q>>1]|0,N)|0)|0;a[l>>0]=((O>>>8&255)+O|0)>>>8;O=l+1|0;L=da(d[O>>0]|0,M)|0;L=L+128+(da(e[o>>1]|0,N)|0)|0;a[O>>0]=((L>>>8&255)+L|0)>>>8;O=l+2|0;M=da(d[O>>0]|0,M)|0;N=M+128+(da(e[r>>1]|0,N)|0)|0;a[O>>0]=((N>>>8&255)+N|0)>>>8}s=s+1|0;if((s|0)==(K|0))break b;else l=l+4|0}}if(p)break;z=f+464|0;s=(o|0)==0;t=f+466|0;u=f+468|0;v=f+454|0;w=f+456|0;x=f+458|0;y=0;while(1){p=a[l+3>>0]|0;if(p<<24>>24==-1){a[l>>0]=a[J+(d[l>>0]|0)>>0]|0;O=l+1|0;a[O>>0]=a[J+(d[O>>0]|0)>>0]|0;O=l+2|0;a[O>>0]=a[J+(d[O>>0]|0)>>0]|0}else if(!(p<<24>>24)){a[l>>0]=b[v>>1];a[l+1>>0]=b[w>>1];a[l+2>>0]=b[x>>1]}else{o=p&255;p=da(d[B+(d[l>>0]|0)>>0]|0,o)|0;r=o^255;p=p+128+(da(e[z>>1]|0,r)|0)|0;p=((p>>>8&255)+p|0)>>>8;if(s)p=a[A+(p&255)>>0]|0;else p=p&255;a[l>>0]=p;q=l+1|0;p=da(d[B+(d[q>>0]|0)>>0]|0,o)|0;p=p+128+(da(e[t>>1]|0,r)|0)|0;p=((p>>>8&255)+p|0)>>>8;if(s)p=a[A+(p&255)>>0]|0;else p=p&255;a[q>>0]=p;q=l+2|0;p=da(d[B+(d[q>>0]|0)>>0]|0,o)|0;p=p+128+(da(e[u>>1]|0,r)|0)|0;p=((p>>>8&255)+p|0)>>>8;if(s)p=a[A+(p&255)>>0]|0;else p=p&255;a[q>>0]=p}y=y+1|0;if((y|0)==(K|0))break;else l=l+4|0}}else{p=(K|0)==0;if(!((H|0)!=0&(D|0)!=0&(E|0)!=0)){if(p)break;q=f+454|0;o=f+456|0;r=f+458|0;s=0;while(1){p=d[l+6>>0]<<8|d[l+7>>0];if(!p){a[l>>0]=(e[q>>1]|0)>>>8;a[l+1>>0]=b[q>>1];a[l+2>>0]=(e[o>>1]|0)>>>8;a[l+3>>0]=b[o>>1];a[l+4>>0]=(e[r>>1]|0)>>>8;a[l+5>>0]=b[r>>1]}else if((p|0)!=65535){F=l+1|0;G=l+2|0;I=l+3|0;H=d[G>>0]<<8|d[I>>0];M=l+4|0;O=l+5|0;L=d[M>>0]<<8|d[O>>0];E=da(d[l>>0]<<8|d[F>>0],p)|0;N=p^65535;E=E+32768+(da(e[q>>1]|0,N)|0)|0;E=(E>>>16)+E|0;a[l>>0]=E>>>24;a[F>>0]=E>>>16;H=da(H,p)|0;H=H+32768+(da(e[o>>1]|0,N)|0)|0;H=(H>>>16)+H|0;a[G>>0]=H>>>24;a[I>>0]=H>>>16;L=da(L,p)|0;N=L+32768+(da(e[r>>1]|0,N)|0)|0;N=(N>>>16)+N|0;a[M>>0]=N>>>24;a[O>>0]=N>>>16}s=s+1|0;if((s|0)==(K|0))break b;else l=l+8|0}}if(p)break;C=f+464|0;v=(o|0)==0;w=f+466|0;x=f+468|0;y=f+454|0;z=f+456|0;A=f+458|0;B=0;while(1){t=d[l+6>>0]<<8|d[l+7>>0];if((t|0)==65535){N=l+1|0;M=b[(c[H+((d[N>>0]|0)>>>I<<2)>>2]|0)+(d[l>>0]<<1)>>1]|0;a[l>>0]=(M&65535)>>>8;a[N>>0]=M;N=l+2|0;M=l+3|0;O=b[(c[H+((d[M>>0]|0)>>>I<<2)>>2]|0)+(d[N>>0]<<1)>>1]|0;a[N>>0]=(O&65535)>>>8;a[M>>0]=O;M=l+4|0;O=l+5|0;N=b[(c[H+((d[O>>0]|0)>>>I<<2)>>2]|0)+(d[M>>0]<<1)>>1]|0;a[M>>0]=(N&65535)>>>8;a[O>>0]=N}else if(!t){a[l>>0]=(e[y>>1]|0)>>>8;a[l+1>>0]=b[y>>1];a[l+2>>0]=(e[z>>1]|0)>>>8;a[l+3>>0]=b[z>>1];a[l+4>>0]=(e[A>>1]|0)>>>8;a[l+5>>0]=b[A>>1]}else{r=l+1|0;q=da(e[(c[E+((d[r>>0]|0)>>>I<<2)>>2]|0)+(d[l>>0]<<1)>>1]|0,t)|0;u=t^65535;q=q+32768+(da(e[C>>1]|0,u)|0)|0;q=(q>>>16)+q|0;p=q>>>16;q=q>>>24;if(v){p=b[(c[D+((p&255)>>>I<<2)>>2]|0)+(q<<1)>>1]|0;o=p&255;p=(p&65535)>>>8&255}else{o=p&255;p=q&255}a[l>>0]=p;a[r>>0]=o;r=l+2|0;s=l+3|0;q=da(e[(c[E+((d[s>>0]|0)>>>I<<2)>>2]|0)+(d[r>>0]<<1)>>1]|0,t)|0;q=q+32768+(da(e[w>>1]|0,u)|0)|0;q=(q>>>16)+q|0;p=q>>>16;q=q>>>24;if(v){p=b[(c[D+((p&255)>>>I<<2)>>2]|0)+(q<<1)>>1]|0;o=p&255;p=(p&65535)>>>8&255}else{o=p&255;p=q&255}a[r>>0]=p;a[s>>0]=o;r=l+4|0;s=l+5|0;q=da(e[(c[E+((d[s>>0]|0)>>>I<<2)>>2]|0)+(d[r>>0]<<1)>>1]|0,t)|0;q=q+32768+(da(e[x>>1]|0,u)|0)|0;q=(q>>>16)+q|0;p=q>>>16;q=q>>>24;if(v){p=b[(c[D+((p&255)>>>I<<2)>>2]|0)+(q<<1)>>1]|0;o=p&255;p=(p&65535)>>>8&255}else{o=p&255;p=q&255}a[r>>0]=p;a[s>>0]=o}B=B+1|0;if((B|0)==(K|0))break;else l=l+8|0}}else if((p|0)==4){if((a[g+9>>0]|0)==8){p=(K|0)==0;if(!((B|0)!=0&(A|0)!=0&(J|0)!=0)){if(p)break;q=f+460|0;o=0;while(1){p=a[l+1>>0]|0;if(!(p<<24>>24))a[l>>0]=b[q>>1];else if(p<<24>>24!=-1){O=p&255;N=da(d[l>>0]|0,O)|0;O=N+128+(da(e[q>>1]|0,O^255)|0)|0;a[l>>0]=((O>>>8&255)+O|0)>>>8}o=o+1|0;if((o|0)==(K|0))break b;else l=l+2|0}}if(p)break;t=f+470|0;o=(o|0)==0;r=f+460|0;s=0;while(1){p=a[l+1>>0]|0;q=p&255;if(!(p<<24>>24))a[l>>0]=b[r>>1];else if(p<<24>>24==-1)a[l>>0]=a[J+(d[l>>0]|0)>>0]|0;else{p=da(d[B+(d[l>>0]|0)>>0]|0,q)|0;p=p+128+(da(e[t>>1]|0,q^255)|0)|0;p=((p>>>8&255)+p|0)>>>8;if(o)p=a[A+(p&255)>>0]|0;else p=p&255;a[l>>0]=p}s=s+1|0;if((s|0)==(K|0))break b;else l=l+2|0}}p=(K|0)==0;if(!((H|0)!=0&(D|0)!=0&(E|0)!=0)){if(p)break;q=f+460|0;o=0;while(1){p=d[l+2>>0]<<8|d[l+3>>0];if(!p){a[l>>0]=(e[q>>1]|0)>>>8;a[l+1>>0]=b[q>>1]}else if((p|0)!=65535){O=l+1|0;N=da(d[l>>0]<<8|d[O>>0],p)|0;N=(da(e[q>>1]|0,p^65535)|0)+32768+N|0;N=(N>>>16)+N|0;a[l>>0]=N>>>24;a[O>>0]=N>>>16}o=o+1|0;if((o|0)==(K|0))break b;else l=l+4|0}}if(p)break;s=f+470|0;t=f+460|0;u=0;while(1){p=d[l+2>>0]<<8|d[l+3>>0];if(!p){a[l>>0]=(e[t>>1]|0)>>>8;a[l+1>>0]=b[t>>1]}else if((p|0)==65535){O=l+1|0;N=b[(c[H+((d[O>>0]|0)>>>I<<2)>>2]|0)+(d[l>>0]<<1)>>1]|0;a[l>>0]=(N&65535)>>>8;a[O>>0]=N}else{r=l+1|0;q=da(e[(c[E+((d[r>>0]|0)>>>I<<2)>>2]|0)+(d[l>>0]<<1)>>1]|0,p)|0;q=q+32768+(da(e[s>>1]|0,p^65535)|0)|0;q=(q>>>16)+q|0;p=q>>>16;if(v){p=b[(c[D+((p&255)>>>I<<2)>>2]|0)+(q>>>24<<1)>>1]|0;o=p&255;p=(p&65535)>>>8&255}else{o=p&255;p=q>>>24&255}a[l>>0]=p;a[r>>0]=o}u=u+1|0;if((u|0)==(K|0))break;else l=l+4|0}}else break}while(0);l=c[$>>2]|0;do if((l&6299648|0)==8192){if(l&128){if(b[f+428>>1]|0)break;l=a[f+435>>0]|0;if(l&4)break}else l=a[f+435>>0]|0;if(l<<24>>24!=3){l=c[aa>>2]|0;p=l+1|0;t=c[f+484>>2]|0;v=c[f+492>>2]|0;u=c[f+496>>2]|0;w=c[g>>2]|0;s=g+9|0;q=a[s>>0]|0;if(!((q&255)<9&(v|0)!=0)?!(q<<24>>24==16&(u|0)!=0):0)break;o=d[g+8>>0]|0;if((o|0)==6){l=(w|0)==0;if(q<<24>>24==8){if(l)break;else l=0;while(1){a[p>>0]=a[v+(d[p>>0]|0)>>0]|0;O=p+1|0;a[O>>0]=a[v+(d[O>>0]|0)>>0]|0;O=p+2|0;a[O>>0]=a[v+(d[O>>0]|0)>>0]|0;l=l+1|0;if((l|0)==(w|0))break;else p=p+4|0}}else{if(l)break;else l=0;while(1){N=p+1|0;M=b[(c[u+((d[N>>0]|0)>>>t<<2)>>2]|0)+(d[p>>0]<<1)>>1]|0;a[p>>0]=(M&65535)>>>8;a[N>>0]=M;N=p+2|0;M=p+3|0;O=b[(c[u+((d[M>>0]|0)>>>t<<2)>>2]|0)+(d[N>>0]<<1)>>1]|0;a[N>>0]=(O&65535)>>>8;a[M>>0]=O;M=p+4|0;O=p+5|0;N=b[(c[u+((d[O>>0]|0)>>>t<<2)>>2]|0)+(d[M>>0]<<1)>>1]|0;a[M>>0]=(N&65535)>>>8;a[O>>0]=N;l=l+1|0;if((l|0)==(w|0))break;else p=p+8|0}}}else if((o|0)==2){l=(w|0)==0;if(q<<24>>24==8){if(l)break;else l=0;while(1){a[p>>0]=a[v+(d[p>>0]|0)>>0]|0;O=p+1|0;a[O>>0]=a[v+(d[O>>0]|0)>>0]|0;O=p+2|0;a[O>>0]=a[v+(d[O>>0]|0)>>0]|0;l=l+1|0;if((l|0)==(w|0))break;else p=p+3|0}}else{if(l)break;else l=0;while(1){N=p+1|0;M=b[(c[u+((d[N>>0]|0)>>>t<<2)>>2]|0)+(d[p>>0]<<1)>>1]|0;a[p>>0]=(M&65535)>>>8;a[N>>0]=M;N=p+2|0;M=p+3|0;O=b[(c[u+((d[M>>0]|0)>>>t<<2)>>2]|0)+(d[N>>0]<<1)>>1]|0;a[N>>0]=(O&65535)>>>8;a[M>>0]=O;M=p+4|0;O=p+5|0;N=b[(c[u+((d[O>>0]|0)>>>t<<2)>>2]|0)+(d[M>>0]<<1)>>1]|0;a[M>>0]=(N&65535)>>>8;a[O>>0]=N;l=l+1|0;if((l|0)==(w|0))break;else p=p+6|0}}}else if((o|0)==4){l=(w|0)==0;if(q<<24>>24==8){if(l)break;else l=0;while(1){a[p>>0]=a[v+(d[p>>0]|0)>>0]|0;l=l+1|0;if((l|0)==(w|0))break;else p=p+2|0}}else{if(l)break;else l=0;while(1){O=p+1|0;N=b[(c[u+((d[O>>0]|0)>>>t<<2)>>2]|0)+(d[p>>0]<<1)>>1]|0;a[p>>0]=(N&65535)>>>8;a[O>>0]=N;l=l+1|0;if((l|0)==(w|0))break;else p=p+4|0}}}else if(!o){if(q<<24>>24==2){if(!w)break;else{q=l;o=0;r=p}while(1){L=d[r>>0]|0;M=L&192;K=L&48;N=L&12;O=L&3;a[r>>0]=(d[v+(K<<2|K|K>>>2|K>>>4)>>0]|0)>>>2&48|d[v+(L>>>6|M|M>>>2|M>>>4)>>0]&192|(d[v+(N<<2|N|N<<4|N>>>2)>>0]|0)>>>4&12|(d[v+(O<<4|O|O<<6|O<<2)>>0]|0)>>>6;o=o+4|0;if(o>>>0>=w>>>0)break;else{O=r;r=q+2|0;q=O}}q=a[s>>0]|0}if(q<<24>>24==16){if(!w)break;else l=0;while(1){O=p+1|0;N=b[(c[u+((d[O>>0]|0)>>>t<<2)>>2]|0)+(d[p>>0]<<1)>>1]|0;a[p>>0]=(N&65535)>>>8;a[O>>0]=N;l=l+1|0;if((l|0)==(w|0))break;else p=p+2|0}}else if(q<<24>>24==8){if(!w)break;else q=0;while(1){a[p>>0]=a[v+(d[p>>0]|0)>>0]|0;q=q+1|0;if((q|0)==(w|0))break;else{O=p;p=l+2|0;l=O}}}else if(q<<24>>24==4){if(!w)break;else q=0;while(1){O=d[p>>0]|0;N=O&15;a[p>>0]=(d[v+(N<<4|N)>>0]|0)>>>4|d[v+(O&240|O>>>4)>>0]&240;q=q+2|0;if(q>>>0>=w>>>0)break;else{O=p;p=l+2|0;l=O}}}else break}else break}}while(0);l=c[$>>2]|0;if((l&262272|0)==262272?(O=a[g+8>>0]|0,O<<24>>24==4|O<<24>>24==6):0){RD(g,(c[aa>>2]|0)+1|0,0);l=c[$>>2]|0}c:do if((l&8388608|0)!=0?(R=a[g+8>>0]|0,(R&4)!=0):0){t=c[aa>>2]|0;p=c[g>>2]|0;o=R&255;do if(o&4){l=a[g+9>>0]|0;if(l<<24>>24==8){q=c[f+500>>2]|0;if(!q)break;l=o&2;o=l+2|0;if(!p)break c;l=t+((l|1)+1)|0;while(1){a[l>>0]=a[q+(d[l>>0]|0)>>0]|0;p=p+-1|0;if(!p)break c;else l=l+o|0}}else if(l<<24>>24==16){r=c[f+508>>2]|0;s=c[f+484>>2]|0;if(!r)break;l=o<<1&4;q=l+4|0;if(!p)break c;l=t+(l|3)|0;while(1){R=l+1|0;O=b[(c[r+((d[R>>0]|0)>>>s<<2)>>2]|0)+(d[l>>0]<<1)>>1]|0;a[l>>0]=(O&65535)>>>8;a[R>>0]=O;p=p+-1|0;if(!p)break c;else l=l+q|0}}else break}while(0);OB(f,261960)}while(0);l=c[$>>2]|0;if((l&67108864|0)!=0?(m=c[aa>>2]|0,S=m+1|0,T=g+9|0,(a[T>>0]|0)==16):0){q=g+4|0;R=c[q>>2]|0;o=m+(R+1)|0;if((R|0)>0){p=S;l=S;while(1){S=d[l>>0]|0;a[p>>0]=(((((d[l+1>>0]|0)-S|0)*65535|0)+8388480|0)>>>24)+S;l=l+2|0;if(l>>>0>=o>>>0)break;else{S=p;p=m+2|0;m=S}}l=c[$>>2]|0}a[T>>0]=8;S=d[g+10>>0]|0;a[g+11>>0]=S<<3;c[q>>2]=da(S,c[g>>2]|0)|0}if((l&1024|0)!=0?(n=c[aa>>2]|0,U=n+1|0,V=g+9|0,(a[V>>0]|0)==16):0){p=g+4|0;S=c[p>>2]|0;o=n+(S+1)|0;if((S|0)>0){m=U;l=U;while(1){a[m>>0]=a[l>>0]|0;l=l+2|0;if(l>>>0>=o>>>0)break;else{S=m;m=n+2|0;n=S}}l=c[$>>2]|0}a[V>>0]=8;S=d[g+10>>0]|0;a[g+11>>0]=S<<3;c[p>>2]=da(S,c[g>>2]|0)|0}do if(l&64){n=c[aa>>2]|0;l=n+1|0;q=c[f+612>>2]|0;p=c[f+616>>2]|0;t=c[g>>2]|0;r=g+9|0;d:do if((a[r>>0]|0)==8){s=g+8|0;m=a[s>>0]|0;o=(q|0)!=0;if(m<<24>>24==2&o){if(!t)n=8;else{m=l;o=0;while(1){a[m>>0]=a[q+((d[l+1>>0]|0)>>>3<<5|(d[l>>0]|0)>>>3<<10|(d[l+2>>0]|0)>>>3)>>0]|0;o=o+1|0;if((o|0)==(t|0))break;else{S=m;m=n+2|0;l=l+3|0;n=S}}n=a[r>>0]|0}a[s>>0]=3;a[g+10>>0]=1;a[g+11>>0]=n;l=n&255;if((n&255)>7)l=da(l>>>3,t)|0;else l=((da(l,t)|0)+7|0)>>>3;c[g+4>>2]=l;break}if(!(m<<24>>24==6&o)){if((p|0)==0|m<<24>>24!=3|(t|0)==0)break;else m=0;while(1){a[l>>0]=a[p+(d[l>>0]|0)>>0]|0;m=m+1|0;if((m|0)==(t|0))break d;else{S=l;l=n+2|0;n=S}}}if(!t)n=8;else{m=l;o=0;while(1){a[m>>0]=a[q+((d[l+1>>0]|0)>>>3<<5|(d[l>>0]|0)>>>3<<10|(d[l+2>>0]|0)>>>3)>>0]|0;o=o+1|0;if((o|0)==(t|0))break;else{S=m;m=n+2|0;l=l+4|0;n=S}}n=a[r>>0]|0}a[s>>0]=3;a[g+10>>0]=1;a[g+11>>0]=n;l=n&255;if((n&255)>7)l=da(l>>>3,t)|0;else l=((da(l,t)|0)+7|0)>>>3;c[g+4>>2]=l}while(0);if(!(c[g+4>>2]|0))LB(f,261920);else{k=c[$>>2]|0;break}}else k=l;while(0);if(((k&512|0)!=0?(W=c[aa>>2]|0,X=g+9|0,(a[X>>0]|0)==8):0)?(a[g+8>>0]|0)!=3:0){m=g+4|0;l=c[m>>2]|0;n=l<<1;if((n|0)>(l|0)){k=W+(n|1)|0;l=W+(l+1)|0;do{l=l+-1|0;S=a[l>>0]|0;a[k+-1>>0]=S;k=k+-2|0;a[k>>0]=S}while(k>>>0>l>>>0);k=c[$>>2]|0;l=c[m>>2]|0}c[m>>2]=l<<1;a[X>>0]=16;a[g+11>>0]=d[g+10>>0]<<4}if((k&16384|0)!=0?(c[f+208>>2]&2048|0)!=0:0){vP(g,(c[aa>>2]|0)+1|0);k=c[$>>2]|0}if(k&32){OD(g,(c[aa>>2]|0)+1|0);k=c[$>>2]|0}do if(k&524288){l=c[aa>>2]|0;p=c[g>>2]|0;k=a[g+8>>0]|0;if(k<<24>>24==6){m=l+((c[g+4>>2]|0)+1)|0;l=(p|0)==0;if((a[g+9>>0]|0)==8){if(l)break;else{k=0;l=m}while(1){S=l+-1|0;a[S>>0]=d[S>>0]^255;k=k+1|0;if((k|0)==(p|0))break;else l=l+-4|0}}else{if(l)break;else{k=0;l=m}while(1){S=l+-1|0;a[S>>0]=d[S>>0]^255;S=l+-2|0;a[S>>0]=d[S>>0]^255;k=k+1|0;if((k|0)==(p|0))break;else l=l+-8|0}}}else if(k<<24>>24==4){k=l+((c[g+4>>2]|0)+1)|0;l=(p|0)==0;if((a[g+9>>0]|0)==8){if(l)break;else{l=k;k=0}while(1){S=l+-1|0;a[S>>0]=d[S>>0]^255;k=k+1|0;if((k|0)==(p|0))break;else l=l+-2|0}}else{if(l)break;else{m=0;l=k}while(1){S=l+-1|0;a[S>>0]=d[S>>0]^255;S=l+-2|0;a[S>>0]=d[S>>0]^255;m=m+1|0;if((m|0)==(p|0))break;else l=l+-4|0}}}else break}while(0);do if((c[$>>2]&8|0)!=0?(h=c[aa>>2]|0,j=h+1|0,S=a[g+8>>0]|0,Y=S&255,S<<24>>24!=3):0){o=d[g+9>>0]|0;if(!(Y&2)){c[Z>>2]=o-(d[f+524>>0]|0);k=1}else{c[Z>>2]=o-(d[f+521>>0]|0);c[Z+4>>2]=o-(d[f+522>>0]|0);c[Z+8>>2]=o-(d[f+523>>0]|0);k=3}if(Y&4){c[Z+(k<<2)>>2]=o-(d[f+525>>0]|0);k=k+1|0}n=0;l=0;do{m=Z+(n<<2)|0;Y=c[m>>2]|0;if((Y|0)>0&(Y|0)<(o|0))l=1;else c[m>>2]=0;n=n+1|0}while((n|0)<(k|0));if(!l)break;if((o|0)==2){Z=c[g+4>>2]|0;k=h+(Z+1)|0;if((Z|0)<=0)break;while(1){h=h+2|0;a[j>>0]=(d[j>>0]|0)>>>1&85;if(h>>>0>>0){Z=j;j=h;h=Z}else break}}else if((o|0)==4){Y=c[g+4>>2]|0;m=h+(Y+1)|0;l=c[Z>>2]|0;k=15>>>l;k=k<<4|k;if((Y|0)<=0)break;while(1){h=h+2|0;a[j>>0]=(d[j>>0]|0)>>>l&k;if(h>>>0>>0){Z=j;j=h;h=Z}else break}}else if((o|0)==8){Y=c[g+4>>2]|0;n=h+(Y+1)|0;if((Y|0)>0)m=0;else break;while(1){l=m+1|0;h=h+2|0;a[j>>0]=(d[j>>0]|0)>>>(c[Z+(m<<2)>>2]|0);if(h>>>0>>0){Y=j;j=h;m=(l|0)>=(k|0)?0:l;h=Y}else break}}else if((o|0)==16){Y=c[g+4>>2]|0;l=h+(Y+1)|0;if((Y|0)>0)h=0;else break;while(1){Y=j+1|0;S=(d[j>>0]<<8|d[Y>>0])>>>(c[Z+(h<<2)>>2]|0);h=h+1|0;a[j>>0]=S>>>8;j=j+2|0;a[Y>>0]=S;if(j>>>0>=l>>>0)break;else h=(h|0)>=(k|0)?0:h}}else break}while(0);do if(c[$>>2]&4){l=c[aa>>2]|0;q=g+9|0;h=a[q>>0]|0;if((h&255)>=8)break;h=h&255;p=c[g>>2]|0;do if((h|0)==4){if(!p)break;j=l+p|0;k=0;m=p<<2&4;l=l+(((p+-1|0)>>>1)+1)|0;while(1){a[j>>0]=(d[l>>0]|0)>>>m&15;h=(m|0)==4;k=k+1|0;if((k|0)==(p|0))break;else{j=j+-1|0;m=h?0:4;l=h?l+-1|0:l}}}else if((h|0)==1){if(!p)break;j=l+p|0;k=0;m=p+7&7^7;l=l+(((p+-1|0)>>>3)+1)|0;while(1){a[j>>0]=(d[l>>0]|0)>>>m&1;h=(m|0)==7;k=k+1|0;if((k|0)==(p|0))break;else{j=j+-1|0;m=h?0:m+1|0;l=h?l+-1|0:l}}}else if((h|0)==2){if(!p)break;j=l+p|0;k=0;m=(p<<1)+6&6^6;l=l+(((p+-1|0)>>>2)+1)|0;while(1){a[j>>0]=(d[l>>0]|0)>>>m&3;h=(m|0)==6;k=k+1|0;if((k|0)==(p|0))break;else{j=j+-1|0;m=h?0:m+2|0;l=h?l+-1|0:l}}}while(0);a[q>>0]=8;Z=d[g+10>>0]|0;a[g+11>>0]=Z<<3;c[g+4>>2]=da(Z,p)|0}while(0);o=g+8|0;do if((a[o>>0]|0)==3){if((c[f+424>>2]|0)<=-1)break;TD(f,g)}while(0);h=c[$>>2]|0;if(h&1){SD(g,(c[aa>>2]|0)+1|0);h=c[$>>2]|0}if(h&65536){QD(g,(c[aa>>2]|0)+1|0);h=c[$>>2]|0}do if(h&32768){j=c[aa>>2]|0;m=b[f+444>>1]|0;p=c[_>>2]|0;n=c[g>>2]|0;q=(m&65535)>>>8&255;m=m&255;h=a[o>>0]|0;if(h<<24>>24==2){h=a[g+9>>0]|0;if(h<<24>>24==8){h=j+((n*3|0)+1)|0;k=n<<2;l=j+(k|1)|0;if(!(p&128)){if(n){j=0;do{a[l+-1>>0]=a[h+-1>>0]|0;a[l+-2>>0]=a[h+-2>>0]|0;h=h+-3|0;a[l+-3>>0]=a[h>>0]|0;l=l+-4|0;a[l>>0]=m;j=j+1|0}while((j|0)!=(n|0))}a[g+10>>0]=4;a[g+11>>0]=32;c[g+4>>2]=k;break}else{a[j+k>>0]=m;if(n>>>0>1){j=1;do{a[l+-2>>0]=a[h+-1>>0]|0;a[l+-3>>0]=a[h+-2>>0]|0;h=h+-3|0;_=l;l=l+-4|0;a[l>>0]=a[h>>0]|0;j=j+1|0;a[_+-5>>0]=m}while((j|0)!=(n|0))}a[g+10>>0]=4;a[g+11>>0]=32;c[g+4>>2]=k;break}}else if(h<<24>>24==16){h=j+(n*6|1)|0;k=n<<3;l=j+(k|1)|0;if(!(p&128)){if(n){j=0;do{a[l+-1>>0]=a[h+-1>>0]|0;a[l+-2>>0]=a[h+-2>>0]|0;a[l+-3>>0]=a[h+-3>>0]|0;a[l+-4>>0]=a[h+-4>>0]|0;a[l+-5>>0]=a[h+-5>>0]|0;h=h+-6|0;a[l+-6>>0]=a[h>>0]|0;a[l+-7>>0]=q;l=l+-8|0;a[l>>0]=m;j=j+1|0}while((j|0)!=(n|0))}a[g+10>>0]=4;a[g+11>>0]=64;c[g+4>>2]=k;break}else{a[j+k>>0]=q;a[j+(k+-1)>>0]=m;if(n>>>0>1){j=1;do{a[l+-3>>0]=a[h+-1>>0]|0;a[l+-4>>0]=a[h+-2>>0]|0;a[l+-5>>0]=a[h+-3>>0]|0;a[l+-6>>0]=a[h+-4>>0]|0;a[l+-7>>0]=a[h+-5>>0]|0;h=h+-6|0;_=l;l=l+-8|0;a[l>>0]=a[h>>0]|0;j=j+1|0;a[_+-9>>0]=q;a[_+-10>>0]=m}while((j|0)!=(n|0))}a[g+10>>0]=4;a[g+11>>0]=64;c[g+4>>2]=k;break}}else break}else if(!(h<<24>>24)){h=a[g+9>>0]|0;if(h<<24>>24==8){h=j+(n+1)|0;k=n<<1;l=j+(k|1)|0;if(!(p&128)){if(n){j=0;do{h=h+-1|0;a[l+-1>>0]=a[h>>0]|0;l=l+-2|0;a[l>>0]=m;j=j+1|0}while((j|0)!=(n|0))}a[g+10>>0]=2;a[g+11>>0]=16;c[g+4>>2]=k;break}else{a[j+k>>0]=m;if(n>>>0>1){j=1;do{h=h+-1|0;_=l;l=l+-2|0;a[l>>0]=a[h>>0]|0;j=j+1|0;a[_+-3>>0]=m}while((j|0)!=(n|0))}a[g+10>>0]=2;a[g+11>>0]=16;c[g+4>>2]=k;break}}else if(h<<24>>24==16){h=j+(n<<1|1)|0;k=n<<2;l=j+(k|1)|0;if(!(p&128)){if(n){j=0;do{a[l+-1>>0]=a[h+-1>>0]|0;h=h+-2|0;a[l+-2>>0]=a[h>>0]|0;a[l+-3>>0]=q;l=l+-4|0;a[l>>0]=m;j=j+1|0}while((j|0)!=(n|0))}a[g+10>>0]=2;a[g+11>>0]=32;c[g+4>>2]=k;break}else{a[j+k>>0]=q;a[j+(k+-1)>>0]=m;if(n>>>0>1){j=1;do{a[l+-3>>0]=a[h+-1>>0]|0;h=h+-2|0;_=l;l=l+-4|0;a[l>>0]=a[h>>0]|0;j=j+1|0;a[_+-5>>0]=q;a[_+-6>>0]=m}while((j|0)!=(n|0))}a[g+10>>0]=2;a[g+11>>0]=32;c[g+4>>2]=k;break}}else break}else break}while(0);do if(c[$>>2]&131072){j=c[aa>>2]|0;l=c[g>>2]|0;h=a[o>>0]|0;if(h<<24>>24==4){h=j+((c[g+4>>2]|0)+1)|0;j=(l|0)==0;if((a[g+9>>0]|0)==8){if(j)break;else j=0;do{Z=h+-1|0;_=a[Z>>0]|0;h=h+-2|0;a[Z>>0]=a[h>>0]|0;a[h>>0]=_;j=j+1|0}while((j|0)!=(l|0))}else{if(j)break;else j=0;do{R=h+-1|0;Y=a[R>>0]|0;S=h+-2|0;_=a[S>>0]|0;Z=h+-3|0;a[R>>0]=a[Z>>0]|0;h=h+-4|0;a[S>>0]=a[h>>0]|0;a[Z>>0]=Y;a[h>>0]=_;j=j+1|0}while((j|0)!=(l|0))}}else if(h<<24>>24==6){k=j+((c[g+4>>2]|0)+1)|0;h=(l|0)==0;if((a[g+9>>0]|0)==8){if(h)break;else{j=0;h=k}do{Z=h+-1|0;_=a[Z>>0]|0;Y=h+-2|0;a[Z>>0]=a[Y>>0]|0;Z=h+-3|0;a[Y>>0]=a[Z>>0]|0;h=h+-4|0;a[Z>>0]=a[h>>0]|0;a[h>>0]=_;j=j+1|0}while((j|0)!=(l|0))}else{if(h)break;else{j=0;h=k}do{Z=h+-1|0;Y=a[Z>>0]|0;R=h+-2|0;_=a[R>>0]|0;S=h+-3|0;a[Z>>0]=a[S>>0]|0;Z=h+-4|0;a[R>>0]=a[Z>>0]|0;R=h+-5|0;a[S>>0]=a[R>>0]|0;S=h+-6|0;a[Z>>0]=a[S>>0]|0;Z=h+-7|0;a[R>>0]=a[Z>>0]|0;h=h+-8|0;a[S>>0]=a[h>>0]|0;a[Z>>0]=Y;a[h>>0]=_;j=j+1|0}while((j|0)!=(l|0))}}else break}while(0);h=c[$>>2]|0;if(h&16){PD(g,(c[aa>>2]|0)+1|0);h=c[$>>2]|0}if(!(h&1048576)){i=ba;return}h=c[f+192>>2]|0;if(h)Ud[h&255](f,g,(c[aa>>2]|0)+1|0);h=a[f+204>>0]|0;if(h<<24>>24)a[g+9>>0]=h;h=a[f+205>>0]|0;j=g+10|0;if(!(h<<24>>24))h=a[j>>0]|0;else a[j>>0]=h;h=da(h&255,d[g+9>>0]|0)|0;a[g+11>>0]=h;h=h&255;j=c[g>>2]|0;if(h>>>0>7)h=da(h>>>3,j)|0;else h=((da(h,j)|0)+7|0)>>>3;c[g+4>>2]=h;i=ba;return}function PC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=b+441|0;f=a[e>>0]|0;g=f&255;if((f&255)>7)return;h=8-g|0;c[b+800>>2]=17;FC(b,d+g+32|0,h);a[e>>0]=8;e=d+32|0;if(!(aB(e,g,h)|0)){if((f&255)>=3)return;b=b+208|0;c[b>>2]=c[b>>2]|4096;return}if((f&255)>=4)LB(b,262136);if(!(aB(e,g,h+-4|0)|0))LB(b,262136);else LB(b,262120)}function QC(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;b=h;f=a+800|0;c[f>>2]=33;FC(a,b,8);g=(d[b+1>>0]|0)<<16|(d[b>>0]|0)<<24|(d[b+2>>0]|0)<<8|(d[b+3>>0]|0);if((g|0)<0)LB(a,262080);j=b+4|0;e=a+376|0;c[e>>2]=(d[b+5>>0]|0)<<16|(d[j>>0]|0)<<24|(d[b+6>>0]|0)<<8|(d[b+7>>0]|0);dB(a);eB(a,j,4);b=c[e>>2]|0;e=1;while(1){j=b&255;if((j+-65|0)>>>0>57|(j+-91|0)>>>0<6){b=5;break}e=e+1|0;if((e|0)>=5){b=7;break}else b=b>>>8}if((b|0)==5)UB(a,263184);else if((b|0)==7){c[f>>2]=65;i=h;return g|0}return 0}function RC(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+1040|0;g=h+1024|0;f=h;if(b)if(!a)while(1){e=b>>>0<1024?b:1024;if((b|0)==(e|0))break;else b=b-e|0}else while(1){e=b>>>0<1024?b:1024;FC(a,f,e);eB(a,f,e);if((b|0)==(e|0))break;else b=b-e|0}f=a+376|0;e=a+212|0;b=c[e>>2]|0;if(!(c[f>>2]&536870912)){c[a+800>>2]=129;FC(a,g,4);if(b&2048){a=0;i=h;return a|0}}else{c[a+800>>2]=129;FC(a,g,4);if((b&768|0)==768){a=0;i=h;return a|0}}if(((d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0)|0)==(c[a+412>>2]|0)){a=0;i=h;return a|0}e=c[e>>2]|0;if(!(c[f>>2]&536870912)){if(!(e&1024))UB(a,262176)}else if(e&512)UB(a,262176);TB(a,262176);a=1;i=h;return a|0}function SC(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=i;i=i+16|0;o=p;g=b+208|0;h=c[g>>2]|0;if(h&1)UB(b,262192);if((f|0)!=13)UB(b,262208);c[g>>2]=h|1;if(b){FC(b,o,13);eB(b,o,13)}RC(b,0)|0;f=(d[o+1>>0]|0)<<16|(d[o>>0]|0)<<24|(d[o+2>>0]|0)<<8|(d[o+3>>0]|0);if((f|0)<0)LB(b,262080);j=(d[o+5>>0]|0)<<16|(d[o+4>>0]|0)<<24|(d[o+6>>0]|0)<<8|(d[o+7>>0]|0);if((j|0)<0)LB(b,262080);s=a[o+8>>0]|0;k=s&255;r=a[o+9>>0]|0;l=r&255;g=a[o+10>>0]|0;m=g&255;q=a[o+11>>0]|0;n=q&255;o=a[o+12>>0]|0;h=o&255;c[b+348>>2]=f;c[b+352>>2]=j;a[b+436>>0]=s;a[b+432>>0]=o;a[b+435>>0]=r;a[b+712>>0]=q;a[b+744>>0]=g;if((l|0)==6){a[b+439>>0]=4;g=4}else if((l|0)==2){a[b+439>>0]=3;g=3}else if((l|0)==4){a[b+439>>0]=2;g=2}else{a[b+439>>0]=1;g=1}g=da(g,k)|0;a[b+438>>0]=g;g=g&255;if(g>>>0>7){r=da(g>>>3,f)|0;s=b+364|0;c[s>>2]=r;uD(b,e,f,j,k,l,h,m,n);i=p;return}else{r=((da(g,f)|0)+7|0)>>>3;s=b+364|0;c[s>>2]=r;uD(b,e,f,j,k,l,h,m,n);i=p;return}}function TC(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+784|0;m=o+8|0;l=o;g=d+208|0;h=c[g>>2]|0;if(!(h&1))UB(d,262216);if(h&2)UB(d,262232);if(h&4){RC(d,f)|0;XB(d,262192);i=o;return}c[g>>2]=h|2;g=d+435|0;if(!(a[g>>0]&2)){RC(d,f)|0;XB(d,262248);i=o;return}if(!(f>>>0<769&((f>>>0)%3|0|0)==0)){RC(d,f)|0;if((a[g>>0]|0)==3)UB(d,262208);XB(d,262208);i=o;return}k=(f|0)/3|0;if((f|0)>2){f=l+1|0;j=l+2|0;if(!d){g=0;h=m;while(1){a[h>>0]=a[l>>0]|0;a[h+1>>0]=a[f>>0]|0;a[h+2>>0]=a[j>>0]|0;g=g+1|0;if((g|0)>=(k|0))break;else h=h+3|0}}else{g=0;h=m;while(1){FC(d,l,3);eB(d,l,3);a[h>>0]=a[l>>0]|0;a[h+1>>0]=a[f>>0]|0;a[h+2>>0]=a[j>>0]|0;g=g+1|0;if((g|0)>=(k|0))break;else h=h+3|0}}}RC(d,0)|0;zD(d,e,m,k);h=d+428|0;do if(!(b[h>>1]|0)){if(!e){i=o;return}g=e+8|0;f=c[g>>2]|0;if(!(f&16))g=f;else{b[h>>1]=0;n=24}}else{b[h>>1]=0;if(e){g=e+8|0;n=24;break}XB(d,262280);i=o;return}while(0);if((n|0)==24){b[e+22>>1]=0;XB(d,262280);g=c[g>>2]|0}if(g&64)XB(d,262304);if(!(c[e+8>>2]&32)){i=o;return}XB(d,262328);i=o;return}function UC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;b=a+208|0;e=c[b>>2]|0;if((e&5|0)!=5)UB(a,262192);c[b>>2]=e|24;RC(a,d)|0;if(!d)return;XB(a,262208);return}function VC(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=c[a+208>>2]|0;if(!(f&1))UB(a,262216);if(f&6){RC(a,e)|0;XB(a,262192);i=h;return}if((e|0)!=4){RC(a,e)|0;XB(a,262208);i=h;return}if(a){FC(a,g,4);eB(a,g,4)}if(RC(a,0)|0){i=h;return}e=(d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0);pB(a,a+824|0,(e|0)>-1?e:-1);rB(a,b);i=h;return}function WC(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;m=o;g=c[b+208>>2]|0;if(!(g&1))UB(b,262216);if(g&6){RC(b,f)|0;XB(b,262192);i=o;return}if((e|0)!=0?(c[e+8>>2]&2|0)!=0:0){RC(b,f)|0;XB(b,262232);i=o;return}n=b+435|0;if((a[n>>0]|0)==3){h=8;g=3}else{h=a[b+436>>0]|0;g=d[b+439>>0]|0}if((g|0)!=(f|0)|f>>>0>4){XB(b,262208);RC(b,f)|0;i=o;return}j=m+3|0;k=m+2|0;l=m+1|0;sfa(m|0,h|0,4)|0;if(b){FC(b,m,f);eB(b,m,f)}if(RC(b,0)|0){i=o;return}a:do if(f){g=0;while(1){if(((a[m+g>>0]|0)+-1&255)>=(h&255))break;g=g+1|0;if(g>>>0>=f>>>0)break a}XB(b,262208);i=o;return}while(0);g=a[m>>0]|0;h=b+516|0;if(!(a[n>>0]&2)){sfa(h|0,g|0,4)|0;g=a[l>>0]|0}else{a[h>>0]=g;a[b+517>>0]=a[l>>0]|0;a[b+518>>0]=a[k>>0]|0;g=a[j>>0]|0}a[b+520>>0]=g;AD(b,e,h);i=o;return}function XC(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;l=i;i=i+64|0;j=l+32|0;k=l;h=c[a+208>>2]|0;if(!(h&1))UB(a,262216);if(h&6){RC(a,g)|0;XB(a,262192);i=l;return}if((g|0)!=32){RC(a,g)|0;XB(a,262208);i=l;return}if(a){FC(a,j,32);eB(a,j,32)}if(RC(a,0)|0){i=l;return}o=(d[j+1>>0]|0)<<16|(d[j>>0]|0)<<24|(d[j+2>>0]|0)<<8|(d[j+3>>0]|0);q=k+24|0;c[q>>2]=(o|0)>-1?o:-1;o=(d[j+5>>0]|0)<<16|(d[j+4>>0]|0)<<24|(d[j+6>>0]|0)<<8|(d[j+7>>0]|0);p=k+28|0;c[p>>2]=(o|0)>-1?o:-1;o=(d[j+9>>0]|0)<<16|(d[j+8>>0]|0)<<24|(d[j+10>>0]|0)<<8|(d[j+11>>0]|0);c[k>>2]=(o|0)>-1?o:-1;o=(d[j+13>>0]|0)<<16|(d[j+12>>0]|0)<<24|(d[j+14>>0]|0)<<8|(d[j+15>>0]|0);o=(o|0)>-1?o:-1;c[k+4>>2]=o;n=(d[j+17>>0]|0)<<16|(d[j+16>>0]|0)<<24|(d[j+18>>0]|0)<<8|(d[j+19>>0]|0);n=(n|0)>-1?n:-1;c[k+8>>2]=n;m=(d[j+21>>0]|0)<<16|(d[j+20>>0]|0)<<24|(d[j+22>>0]|0)<<8|(d[j+23>>0]|0);m=(m|0)>-1?m:-1;c[k+12>>2]=m;h=(d[j+25>>0]|0)<<16|(d[j+24>>0]|0)<<24|(d[j+26>>0]|0)<<8|(d[j+27>>0]|0);h=(h|0)>-1?h:-1;c[k+16>>2]=h;g=(d[j+29>>0]|0)<<16|(d[j+28>>0]|0)<<24|(d[j+30>>0]|0)<<8|(d[j+31>>0]|0);g=(g|0)>-1?g:-1;c[k+20>>2]=g;if((c[q>>2]|0)==-1|(c[p>>2]|0)==-1|(c[k>>2]|0)==-1|(o|0)==-1|(n|0)==-1|(m|0)==-1|(h|0)==-1|(g|0)==-1){XB(a,262352);i=l;return}h=a+898|0;j=e[h>>1]|0;if(j&32768){i=l;return}if(!(j&16)){b[h>>1]=j|16;sB(a,a+824|0,k,1)|0;rB(a,f);i=l;return}else{b[h>>1]=j|32768;rB(a,f);XB(a,262232);i=l;return}}function YC(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=c[a+208>>2]|0;if(!(h&1))UB(a,262216);if(h&6){RC(a,g)|0;XB(a,262192);i=k;return}if((g|0)!=1){RC(a,g)|0;XB(a,262208);i=k;return}if(a){FC(a,j,1);eB(a,j,1)}if(RC(a,0)|0){i=k;return}h=a+898|0;g=e[h>>1]|0;if(g&32768){i=k;return}if(!(g&4)){tB(a,a+824|0,d[j>>0]|0)|0;rB(a,f);i=k;return}else{b[h>>1]=g|32768;rB(a,f);XB(a,262368);i=k;return}}function ZC(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+1248|0;w=z+4|0;v=z+1164|0;r=z+1032|0;s=z+8|0;u=z;c[w>>2]=h;j=c[f+208>>2]|0;if(!(j&1))UB(f,262216);if(j&6){RC(f,h)|0;XB(f,262192);i=z;return}if(h>>>0<9){RC(f,h)|0;XB(f,262392);i=z;return}t=f+824|0;x=f+898|0;j=e[x>>1]|0;if(j&32768){RC(f,h)|0;i=z;return}do if(!(j&4)){m=h>>>0<81?h:81;if(f){FC(f,v,m);eB(f,v,m)}h=h-m|0;c[w>>2]=h;if(m){l=0;while(1){k=l+1|0;if(!(a[v+l>>0]|0)){j=1;k=l;break}j=k>>>0<80;if(j&k>>>0>>0)l=k;else break}if((k|0)!=0&j){q=k+1|0;if(q>>>0>>0?(a[v+q>>0]|0)==0:0){j=k+2|0;if(wP(f,1766015824)|0){j=c[f+248>>2]|0;y=44;break}c[u>>2]=132;c[f+224>>2]=v+j;c[f+228>>2]=m-j;xP(f,s,w,r,u,0);a:do if(!(c[u>>2]|0)){o=d[r+1>>0]<<16|d[r>>0]<<24|d[r+2>>0]<<8|d[r+3>>0];if((uB(f,t,v,o)|0)!=0?(vB(f,t,v,o,r,d[f+435>>0]|0)|0)!=0:0){h=a[r+128>>0]|0;k=a[r+129>>0]|0;m=a[r+130>>0]|0;n=a[r+131>>0]|0;p=f+788|0;j=c[p>>2]|0;if(j){l=f+792|0;if((c[l>>2]|0)>>>0>>0){c[p>>2]=0;c[l>>2]=0;qC(f,j);y=25}else l=j}else y=25;if((y|0)==25){j=tC(f,o)|0;if(!j){j=262432;h=1;break}c[p>>2]=j;c[f+792>>2]=o;l=j}qfa(l|0,r|0,132)|0;j=((k&255)<<16|(h&255)<<24|(m&255)<<8|n&255)*12|0;c[u>>2]=j;xP(f,s,w,l+132|0,u,0);if(c[u>>2]|0){j=c[f+248>>2]|0;h=1;break}if(wB(f,t,v,o,l)|0){c[u>>2]=o+-132-j;xP(f,s,w,l+(j+132)|0,u,1);j=c[w>>2]|0;h=(j|0)==0;if(!h?(c[f+212>>2]&1048576|0)==0:0){j=262408;h=1;break}if(c[u>>2]|0){j=262448;h=1;break}if(!h)TB(f,262408);RC(f,j)|0;xB(f,t,l,c[f+272>>2]|0);do if(g){jB(f,g,16,0);j=tC(f,q)|0;c[g+116>>2]=j;if(!j){b[x>>1]=e[x>>1]|32768;rB(f,g);j=262432;h=0;break a}else{qfa(j|0,v|0,q|0)|0;c[g+124>>2]=o;c[g+120>>2]=l;c[p>>2]=0;y=g+232|0;c[y>>2]=c[y>>2]|16;y=g+8|0;c[y>>2]=c[y>>2]|4096;rB(f,g);break}}while(0);c[f+220>>2]=0;i=z;return}else{j=0;h=1}}else{j=0;h=1}}else{j=c[f+248>>2]|0;h=1}while(0);c[f+220>>2]=0;if(h){h=c[w>>2]|0;y=44}}else{j=262464;y=44}}else{j=262488;y=44}}else{j=262488;y=44}}else{j=262368;y=44}while(0);if((y|0)==44)RC(f,h)|0;b[x>>1]=e[x>>1]|32768;rB(f,g);if(!j){i=z;return}XB(f,j);i=z;return}function _C(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;s=t;h=e+756|0;j=c[h>>2]|0;if((j|0)==1){RC(e,g)|0;i=t;return}else if(j)m=3;if((m|0)==3?(r=j+-1|0,c[h>>2]=r,(r|0)==1):0){OB(e,262504);RC(e,g)|0;i=t;return}h=c[e+208>>2]|0;if(!(h&1))UB(e,262216);if(h&4){RC(e,g)|0;XB(e,262192);i=t;return}k=g+1|0;l=e+788|0;h=c[l>>2]|0;if(h){j=e+792|0;if((c[j>>2]|0)>>>0>>0){c[l>>2]=0;c[j>>2]=0;qC(e,h);m=12}else m=15}else m=12;do if((m|0)==12){h=tC(e,k)|0;if(h){c[l>>2]=h;c[e+792>>2]=k;if(!e)break;else{m=15;break}}RC(e,g)|0;XB(e,262432);i=t;return}while(0);if((m|0)==15){FC(e,h,g);eB(e,h,g)}if(RC(e,0)|0){i=t;return}a[h+g>>0]=0;k=h;while(1){j=k+1|0;if(!(a[k>>0]|0))break;else k=j}if(j>>>0>(h+(g+-2)|0)>>>0){OB(e,262544);i=t;return}m=k+2|0;n=a[j>>0]|0;r=s+4|0;a[r>>0]=n;j=n<<24>>24==8?6:10;l=h-m+g|0;if((l>>>0)%(j>>>0)|0){OB(e,262568);i=t;return}l=(l>>>0)/(j>>>0)|0;if(l>>>0>429496729){OB(e,262600);i=t;return}p=s+12|0;c[p>>2]=l;j=wC(e,l*10|0)|0;q=s+8|0;c[q>>2]=j;if(!j){OB(e,262624);i=t;return}a:do if(l){g=0;while(1){l=j+(g*10|0)|0;if(n<<24>>24==8){b[l>>1]=d[m>>0]|0;b[j+(g*10|0)+2>>1]=d[k+3>>0]|0;b[j+(g*10|0)+4>>1]=d[k+4>>0]|0;l=d[k+5>>0]|0;m=7;n=8;o=k+6|0}else{b[l>>1]=d[m>>0]<<8|d[k+3>>0];b[j+(g*10|0)+2>>1]=d[k+4>>0]<<8|d[k+5>>0];b[j+(g*10|0)+4>>1]=d[k+6>>0]<<8|d[k+7>>0];l=(d[k+8>>0]<<8|d[k+9>>0])&65535;m=11;n=12;o=k+10|0}b[j+(g*10|0)+6>>1]=l;b[j+(g*10|0)+8>>1]=d[o>>0]<<8|d[k+m>>0];l=g+1|0;if((l|0)>=(c[p>>2]|0))break a;m=k+n|0;j=c[q>>2]|0;n=a[r>>0]|0;k=o;g=l}}while(0);c[s>>2]=h;GD(e,f,s,1);qC(e,c[q>>2]|0);i=t;return}function $C(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+272|0;o=p+8|0;k=p;n=p+2|0;h=c[d+208>>2]|0;if(!(h&1))UB(d,262216);if(h&4){RC(d,g)|0;XB(d,262192);i=p;return}if((f|0)!=0?(c[f+8>>2]&16|0)!=0:0){RC(d,g)|0;XB(d,262232);i=p;return}j=a[d+435>>0]|0;if(j<<24>>24==3){if(!(h&2)){RC(d,g)|0;XB(d,262192);i=p;return}if((g>>>0>256?1:(e[d+420>>1]|0)>>>0>>0)|(g|0)==0){RC(d,g)|0;XB(d,262208);i=p;return}if(d){FC(d,o,g);eB(d,o,g)}b[d+428>>1]=g}else if(j<<24>>24==2){if((g|0)!=6){RC(d,g)|0;XB(d,262208);i=p;return}if(!d){k=0;j=0;g=0;l=0;m=0;h=0}else{FC(d,n,6);eB(d,n,6);k=a[n>>0]|0;j=a[n+1>>0]|0;g=a[n+2>>0]|0;l=a[n+3>>0]|0;m=a[n+4>>0]|0;h=a[n+5>>0]|0}b[d+428>>1]=1;b[d+534>>1]=(k&255)<<8|j&255;b[d+536>>1]=(g&255)<<8|l&255;b[d+538>>1]=(m&255)<<8|h&255}else if(!(j<<24>>24)){if((g|0)!=2){RC(d,g)|0;XB(d,262208);i=p;return}if(!d){j=0;h=0}else{FC(d,k,2);eB(d,k,2);j=a[k>>0]|0;h=a[k+1>>0]|0}b[d+428>>1]=1;b[d+540>>1]=(j&255)<<8|h&255}else{RC(d,g)|0;XB(d,262664);i=p;return}h=d+428|0;if(!(RC(d,0)|0)){FD(d,f,o,e[h>>1]|0,d+532|0);i=p;return}else{b[h>>1]=0;i=p;return}}function aD(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;n=r+10|0;q=r;h=c[e+208>>2]|0;if(!(h&1))UB(e,262216);if((h&4|0)==0?(l=e+435|0,j=a[l>>0]|0,k=j<<24>>24==3,!(k&(h&2|0)==0)):0){m=(f|0)!=0;if(m?(c[f+8>>2]&32|0)!=0:0){RC(e,g)|0;XB(e,262232);i=r;return}if(k)h=1;else h=(j&2)<<1|2;if((h|0)!=(g|0)){RC(e,g)|0;XB(e,262208);i=r;return}if(e){FC(e,n,g);eB(e,n,g)}if(RC(e,0)|0){i=r;return}j=a[l>>0]|0;do if(j<<24>>24!=3){a[q>>0]=0;h=((d[n>>0]|0)<<8|(d[n+1>>0]|0))&65535;if(!(j&2)){b[q+8>>1]=h;b[q+6>>1]=h;b[q+4>>1]=h;b[q+2>>1]=h;break}else{b[q+2>>1]=h;b[q+4>>1]=(d[n+2>>0]|0)<<8|(d[n+3>>0]|0);b[q+6>>1]=(d[n+4>>0]|0)<<8|(d[n+5>>0]|0);b[q+8>>1]=0;break}}else{h=a[n>>0]|0;a[q>>0]=h;do if(m?(o=b[f+20>>1]|0,o<<16>>16!=0):0){h=h&255;if(h>>>0<(o&65535)>>>0){n=c[e+416>>2]|0;b[q+2>>1]=d[n+(h*3|0)>>0]|0;b[q+4>>1]=d[n+(h*3|0)+1>>0]|0;b[q+6>>1]=d[n+(h*3|0)+2>>0]|0;break}XB(e,262696);i=r;return}else p=22;while(0);if((p|0)==22){b[q+6>>1]=0;b[q+4>>1]=0;b[q+2>>1]=0}b[q+8>>1]=0}while(0);sD(e,f,q);i=r;return}RC(e,g)|0;XB(e,262192);i=r;return}function bD(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+528|0;l=m;k=m+512|0;h=c[a+208>>2]|0;if(!(h&1))UB(a,262216);if((h&6|0)!=2){RC(a,g)|0;XB(a,262192);i=m;return}if((f|0)!=0?(c[f+8>>2]&64|0)!=0:0){RC(a,g)|0;XB(a,262232);i=m;return}j=g>>>1;if(g>>>0>513?1:(j|0)!=(e[a+420>>1]|0|0)){RC(a,g)|0;XB(a,262208);i=m;return}if(j){h=k+1|0;if(!a){h=0;do{b[l+(h<<1)>>1]=0;h=h+1|0}while(h>>>0>>0)}else{g=0;do{FC(a,k,2);eB(a,k,2);b[l+(g<<1)>>1]=(d[k>>0]|0)<<8|(d[h>>0]|0);g=g+1|0}while(g>>>0>>0)}}if(RC(a,0)|0){i=m;return}tD(a,f,l);i=m;return}function cD(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=c[a+208>>2]|0;if(!(f&1))UB(a,262216);if(f&4){RC(a,e)|0;XB(a,262192);i=h;return}if((b|0)!=0?(c[b+8>>2]&128|0)!=0:0){RC(a,e)|0;XB(a,262232);i=h;return}if((e|0)!=9){RC(a,e)|0;XB(a,262208);i=h;return}if(a){FC(a,g,9);eB(a,g,9)}if(RC(a,0)|0){i=h;return}yD(a,b,(d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0),(d[g+5>>0]|0)<<16|(d[g+4>>0]|0)<<24|(d[g+6>>0]|0)<<8|(d[g+7>>0]|0),d[g+8>>0]|0);i=h;return}function dD(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=c[a+208>>2]|0;if(!(f&1))UB(a,262216);if(f&4){RC(a,e)|0;XB(a,262192);i=h;return}if((b|0)!=0?(c[b+8>>2]&256|0)!=0:0){RC(a,e)|0;XB(a,262232);i=h;return}if((e|0)!=9){RC(a,e)|0;XB(a,262208);i=h;return}if(a){FC(a,g,9);eB(a,g,9)}if(RC(a,0)|0){i=h;return}vD(a,b,(d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0),(d[g+5>>0]|0)<<16|(d[g+4>>0]|0)<<24|(d[g+6>>0]|0)<<8|(d[g+7>>0]|0),d[g+8>>0]|0);i=h;return}function eD(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=c[b+208>>2]|0;if(!(g&1))UB(b,262216);if(g&4){RC(b,f)|0;XB(b,262192);return}if((e|0)!=0?(c[e+8>>2]&1024|0)!=0:0){RC(b,f)|0;XB(b,262232);return}i=f+1|0;j=b+788|0;g=c[j>>2]|0;if(g){h=b+792|0;if((c[h>>2]|0)>>>0>>0){c[j>>2]=0;c[h>>2]=0;qC(b,g);h=11}else h=14}else h=11;do if((h|0)==11){g=tC(b,i)|0;if(g){c[j>>2]=g;c[b+792>>2]=i;if(!b)break;else{h=14;break}}RC(b,f)|0;XB(b,262432);return}while(0);if((h|0)==14){FC(b,g,f);eB(b,g,f)}if(RC(b,0)|0)return;q=g+f|0;a[q>>0]=0;i=g;while(1){h=i+1|0;if(!(a[i>>0]|0))break;else i=h}if(q>>>0<=(i+12|0)>>>0){XB(b,262208);return}o=d[i+2>>0]<<16|d[h>>0]<<24|d[i+3>>0]<<8|d[i+4>>0];p=d[i+6>>0]<<16|d[i+5>>0]<<24|d[i+7>>0]<<8|d[i+8>>0];j=a[i+9>>0]|0;h=a[i+10>>0]|0;m=i+11|0;n=j&255;if((j<<24>>24!=0|h<<24>>24==2?(j+-1&255)>1|h<<24>>24==3:0)?j<<24>>24!=3|h<<24>>24==4:0){if((j&255)>3){XB(b,262736);j=m}else j=m;while(1)if(!(a[j>>0]|0))break;else j=j+1|0;k=h&255;l=wC(b,k<<2)|0;if(!l){XB(b,262432);return}a:do if(h<<24>>24){f=0;b:while(1){h=j+1|0;c[l+(f<<2)>>2]=h;if(h>>>0>q>>>0)break;else{i=j;j=h}while(1){h=i+2|0;if(!(a[j>>0]|0))break;if(h>>>0>q>>>0)break b;else{i=j;j=h}}h=f+1|0;if((h|0)<(k|0))f=h;else break a}qC(b,l);XB(b,262768);return}while(0);wD(b,e,g,o,p,n,k,m,l);qC(b,l);return}XB(b,262712);return}function fD(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;n=p+4|0;o=p;g=c[b+208>>2]|0;if(!(g&1))UB(b,262216);if(g&4){RC(b,f)|0;XB(b,262192);i=p;return}if((e|0)!=0?(c[e+8>>2]&16384|0)!=0:0){RC(b,f)|0;XB(b,262232);i=p;return}if(f>>>0<4){RC(b,f)|0;XB(b,262208);i=p;return}j=f+1|0;k=b+788|0;g=c[k>>2]|0;if(g){h=b+792|0;if((c[h>>2]|0)>>>0>>0){c[k>>2]=0;c[h>>2]=0;qC(b,g);h=13}else h=16}else h=13;do if((h|0)==13){g=tC(b,j)|0;if(g){c[k>>2]=g;c[b+792>>2]=j;if(!b)break;else{h=16;break}}XB(b,262432);RC(b,f)|0;i=p;return}while(0);if((h|0)==16){FC(b,g,f);eB(b,g,f)}a[g+f>>0]=0;if(RC(b,0)|0){i=p;return}if(((a[g>>0]|0)+-1&255)>=2){XB(b,262784);i=p;return}c[n>>2]=1;c[o>>2]=0;if(((CB(g,f,o,n)|0)!=0?(l=c[n>>2]|0,l>>>0>>0):0)?(m=l+1|0,c[n>>2]=m,(a[g+l>>0]|0)==0):0){if((c[o>>2]&392|0)!=264){XB(b,262824);i=p;return}c[o>>2]=0;l=(CB(g,f,o,n)|0)!=0;if(!(l&(c[n>>2]|0)==(f|0))){XB(b,262848);i=p;return}if((c[o>>2]&392|0)==264){xD(b,e,d[g>>0]|0,g+1|0,g+m|0);i=p;return}else{XB(b,262872);i=p;return}}XB(b,262800);i=p;return}function gD(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;k=m+8|0;l=m;h=e+208|0;j=c[h>>2]|0;if(!(j&1))UB(e,262216);if((f|0)!=0?(c[f+8>>2]&512|0)!=0:0){RC(e,g)|0;XB(e,262232);i=m;return}if(j&4)c[h>>2]=j|8;if((g|0)!=7){RC(e,g)|0;XB(e,262208);i=m;return}if(e){FC(e,k,7);eB(e,k,7)}if(RC(e,0)|0){i=m;return}a[l+6>>0]=a[k+6>>0]|0;a[l+5>>0]=a[k+5>>0]|0;a[l+4>>0]=a[k+4>>0]|0;a[l+3>>0]=a[k+3>>0]|0;a[l+2>>0]=a[k+2>>0]|0;b[l>>1]=(d[k>>0]|0)<<8|(d[k+1>>0]|0);ED(e,f,l);i=m;return}function hD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;l=m;f=b+756|0;g=c[f>>2]|0;if((g|0)==1){RC(b,e)|0;i=m;return}else if(g)k=3;if((k|0)==3?(k=g+-1|0,c[f>>2]=k,(k|0)==1):0){RC(b,e)|0;XB(b,262896);i=m;return}f=b+208|0;g=c[f>>2]|0;if(!(g&1))UB(b,262216);if(g&4)c[f>>2]=g|8;j=e+1|0;h=b+788|0;f=c[h>>2]|0;if(f){g=b+792|0;if((c[g>>2]|0)>>>0>>0){c[h>>2]=0;c[g>>2]=0;qC(b,f);k=12}else k=15}else k=12;do if((k|0)==12){f=tC(b,j)|0;if(f){c[h>>2]=f;c[b+792>>2]=j;if(!b)break;else{k=15;break}}TB(b,263784);XB(b,262432);i=m;return}while(0);if((k|0)==15){FC(b,f,e);eB(b,f,e)}if(RC(b,0)|0){i=m;return}j=f+e|0;a[j>>0]=0;h=f;while(1){g=h+1|0;if(!(a[h>>0]|0))break;else h=g}k=(h|0)==(j|0)?h:g;c[l>>2]=-1;c[l+4>>2]=f;c[l+20>>2]=0;c[l+24>>2]=0;c[l+16>>2]=0;c[l+8>>2]=k;c[l+12>>2]=tfa(k|0)|0;if(!(DD(b,d,l,1)|0)){i=m;return}OB(b,262920);i=m;return}function iD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;l=m+28|0;k=m;f=b+756|0;g=c[f>>2]|0;if((g|0)==1){RC(b,e)|0;i=m;return}else if(g)h=3;if((h|0)==3?(h=g+-1|0,c[f>>2]=h,(h|0)==1):0){RC(b,e)|0;XB(b,262896);i=m;return}f=b+208|0;g=c[f>>2]|0;if(!(g&1))UB(b,262216);if(g&4)c[f>>2]=g|8;j=b+788|0;f=c[j>>2]|0;if(f){g=b+792|0;if((c[g>>2]|0)>>>0>>0){c[j>>2]=0;c[g>>2]=0;qC(b,f);h=12}else h=15}else h=12;do if((h|0)==12){f=tC(b,e)|0;if(f){c[j>>2]=f;c[b+792>>2]=e;if(!b)break;else{h=15;break}}RC(b,e)|0;XB(b,262432);i=m;return}while(0);if((h|0)==15){FC(b,f,e);eB(b,f,e)}if(RC(b,0)|0){i=m;return}do if(e){h=0;while(1){g=h+1|0;if(!(a[f+h>>0]|0)){g=h;break}if(g>>>0>>0)h=g;else break}if((g+-1|0)>>>0<=78)if((g+3|0)>>>0<=e>>>0)if(!(a[f+(g+1)>>0]|0)){c[l>>2]=-1;f=g+2|0;if((yP(b,e,f,l)|0)==1){h=c[j>>2]|0;e=c[l>>2]|0;a[h+(e+f)>>0]=0;c[k>>2]=0;c[k+4>>2]=h;c[k+8>>2]=h+f;c[k+12>>2]=e;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;if(DD(b,d,k,1)|0){f=292024;break}i=m;return}else{f=c[b+248>>2]|0;if(f)break;i=m;return}}else f=262968;else f=262448;else f=262488}else f=262488;while(0);XB(b,f);i=m;return}function jD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;o=p+28|0;n=p;f=b+756|0;g=c[f>>2]|0;if((g|0)==1){RC(b,e)|0;i=p;return}else if(g)j=3;if((j|0)==3?(m=g+-1|0,c[f>>2]=m,(m|0)==1):0){RC(b,e)|0;XB(b,262896);i=p;return}f=b+208|0;g=c[f>>2]|0;if(!(g&1))UB(b,262216);if(g&4)c[f>>2]=g|8;h=e+1|0;m=b+788|0;f=c[m>>2]|0;if(f){g=b+792|0;if((c[g>>2]|0)>>>0>>0){c[m>>2]=0;c[g>>2]=0;qC(b,f);j=12}else j=15}else j=12;do if((j|0)==12){f=tC(b,h)|0;if(f){c[m>>2]=f;c[b+792>>2]=h;if(!b){l=f;break}else{j=15;break}}TB(b,263784);RC(b,e)|0;XB(b,262432);i=p;return}while(0);if((j|0)==15){FC(b,f,e);eB(b,f,e);l=f}if(RC(b,0)|0){i=p;return}a:do if(e){g=0;while(1){f=g+1|0;if(!(a[l+g>>0]|0)){f=g;break}if(f>>>0>>0)g=f;else break}if((f+-1|0)>>>0<=78)if((f+5|0)>>>0<=e>>>0){g=a[l+(f+1)>>0]|0;if(g<<24>>24==1){if(a[l+(f+2)>>0]|0){f=263e3;break}}else if(g<<24>>24){f=263e3;break}k=g<<24>>24!=0;c[o>>2]=0;h=f+3|0;b:do if(h>>>0>>0){g=h;while(1){f=g+1|0;if(!(a[l+g>>0]|0)){f=g;break b}if(f>>>0>>0)g=f;else break}}else f=h;while(0);j=f+1|0;c:do if(j>>>0>>0){g=j;while(1){f=g+1|0;if(!(a[l+g>>0]|0)){f=g;break c}if(f>>>0>>0)g=f;else break}}else f=j;while(0);g=f+1|0;do if(k|g>>>0>e>>>0){if(!(k&g>>>0>>0)){f=262448;break a}c[o>>2]=-1;if((yP(b,e,g,o)|0)!=1){f=c[b+248>>2]|0;if(!f){f=l;break}else break a}else{f=c[m>>2]|0;break}}else{c[o>>2]=e-g;f=l}while(0);a[f+((c[o>>2]|0)+g)>>0]=0;c[n>>2]=k?2:1;c[n+4>>2]=f;c[n+20>>2]=f+h;c[n+24>>2]=f+j;c[n+8>>2]=f+g;c[n+12>>2]=0;c[n+16>>2]=c[o>>2];if(!(DD(b,d,n,1)|0)){i=p;return}else f=292024}else f=262448;else f=262488}else f=262488;while(0);XB(b,f);i=p;return}function kD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=a+684|0;do if(!(c[f>>2]|0)){if(!e)e=c[a+688>>2]|0;if((e|0)==3)g=13;else if((e|0)==2?(c[a+376>>2]&536870912|0)!=0:0)g=13;else g=14;if((g|0)==13){d=(zP(a,d)|0)==0;e=d?1:e;g=15;break}else if((g|0)==14){RC(a,d)|0;g=15;break}}else if(zP(a,d)|0){f=Pd[c[f>>2]&511](a,a+764|0)|0;if((f|0)<0)UB(a,263024);if(!f)if((e|0)<2)if((c[a+688>>2]|0)<2){TB(a,263048);VB(a,263072);g=16}else g=16;else g=15;else d=1}else d=0;while(0);if((g|0)==15)if((e|0)==3)g=17;else if((e|0)==2)g=16;else d=0;if((g|0)==16)if(!(c[a+376>>2]&536870912))d=0;else g=17;do if((g|0)==17){e=a+756|0;f=c[e>>2]|0;if((f|0)==1){d=0;break}else if((f|0)==2){c[e>>2]=1;XB(a,262896);d=0;break}else if(f)c[e>>2]=f+-1;HD(a,b,a+764|0,1);d=1}while(0);e=a+772|0;f=c[e>>2]|0;if(f)qC(a,f);c[e>>2]=0;if(d)return;if(!(c[a+376>>2]&536870912))UB(a,263152);else return}function lD(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;y=a[e+443>>0]|0;z=y&255;B=c[e+384>>2]|0;A=B+1|0;C=c[e+348>>2]|0;l=a[e+433>>0]|0;x=l&255;if(!(y<<24>>24))LB(e,263208);n=c[e+404>>2]|0;if(n){if((y&255)>7)k=da(C,z>>>3)|0;else k=((da(C,z)|0)+7|0)>>>3;if((n|0)!=(k|0))LB(e,263240)}if(!C)LB(e,263280);u=da(C,z)|0;k=u&7;do if(k){if((y&255)>7)n=da(C,z>>>3)|0;else n=(u+7|0)>>>3;o=f+(n+-1)|0;n=a[o>>0]|0;if(!(c[e+216>>2]&65536)){t=n;s=255>>>k;break}else{t=n;s=255<>0]|0)!=0?(p=c[e+216>>2]|0,(p&2|0)!=0&(l&255)<6):0){if(!g)n=x&1;else if((g|0)==1?(m=x&1,(m|0)!=0):0)n=m;else{G=78;break}n=n<<3-((x+1|0)>>>1)&7;if(C>>>0<=n>>>0)return;if((y&255)<8){n=8/(z>>>0)|0;h=(g|0)!=0;do if(!(p&65536))if(h){if(y<<24>>24==1)h=0;else h=y<<24>>24==2?1:2;h=263456+(h*12|0)+(x>>>1<<2)+36|0;break}else{if(y<<24>>24==1)h=0;else h=y<<24>>24==2?1:2;h=263312+(h*24|0)+(x<<2)+72|0;break}else if(h){if(y<<24>>24==1)h=0;else h=y<<24>>24==2?1:2;h=263456+(h*12|0)+(x>>>1<<2)|0;break}else{if(y<<24>>24==1)h=0;else h=y<<24>>24==2?1:2;h=263312+(h*24|0)+(x<<2)|0;break}while(0);e=f;l=B;i=c[h>>2]|0;j=C;m=A;while(1){h=i>>>8|i<<24;k=i&255;if((k|0)==255)a[e>>0]=a[m>>0]|0;else if(k)a[e>>0]=d[m>>0]&i|d[e>>0]&(i^255);if(j>>>0<=n>>>0)break a;F=m;e=e+1|0;i=h;j=j-n|0;m=l+2|0;l=F}}if(z&7)LB(e,263528);e=z>>>3;o=da(n,e)|0;l=(da(C,e)|0)-o|0;k=f+o|0;n=o+1|0;m=B+n|0;if(!g)p=e;else{p=e<<((6-x|0)>>>1);p=p>>>0>l>>>0?l:p}g=e<<((7-x|0)>>>1);if((p|0)==3){a[k>>0]=a[m>>0]|0;G=o+2|0;a[f+n>>0]=a[B+G>>0]|0;a[f+G>>0]=a[B+(o+3)>>0]|0;if(l>>>0>g>>>0){j=k;i=l;h=m}else return;do{E=h;h=h+g|0;F=j;j=j+g|0;i=i-g|0;a[j>>0]=a[h>>0]|0;G=g+1|0;a[F+G>>0]=a[E+G>>0]|0;G=g+2|0;a[F+G>>0]=a[E+G>>0]|0}while(i>>>0>g>>>0);return}else if((p|0)==1){a[k>>0]=a[m>>0]|0;if(l>>>0>g>>>0){j=k;i=l;h=m}else return;do{j=j+g|0;h=h+g|0;i=i-g|0;a[j>>0]=a[h>>0]|0}while(i>>>0>g>>>0);return}else if((p|0)==2){h=k;k=l;i=m;while(1){a[h>>0]=a[i>>0]|0;a[h+1>>0]=a[i+1>>0]|0;if(k>>>0<=g>>>0){G=84;break}i=i+g|0;h=h+g|0;k=k-g|0;if(k>>>0<=1){v=i;w=h;break}}if((G|0)==84)return;a[w>>0]=a[v>>0]|0;return}else{if((p>>>0<16?(q=k,(q&1|0)==0):0)?(r=m,((r|g|p)&1|0)==0):0)if(!((q|g|r|p)&3)){n=((g-p|0)>>>2)+1|0;while(1){e=p;while(1){c[k>>2]=c[m>>2];e=e+-4|0;if(!e)break;else{k=k+4|0;m=m+4|0}}if(l>>>0<=g>>>0){G=84;break}k=k+(n<<2)|0;m=m+(n<<2)|0;l=l-g|0;if(p>>>0>l>>>0){j=k;h=m;i=l;break}}if((G|0)==84)return;while(1){a[j>>0]=a[h>>0]|0;i=i+-1|0;if(!i)break;else{j=j+1|0;h=h+1|0}}return}else{j=((g-p|0)>>>1)+1|0;h=m;while(1){i=p;while(1){b[k>>1]=b[h>>1]|0;i=i+-2|0;if(!i)break;else{k=k+2|0;h=h+2|0}}if(l>>>0<=g>>>0){G=84;break}k=k+(j<<1)|0;h=h+(j<<1)|0;l=l-g|0;if(p>>>0>l>>>0){D=k;F=h;E=l;break}}if((G|0)==84)return;j=D;i=E;h=F;while(1){a[j>>0]=a[h>>0]|0;i=i+-1|0;if(!i)break;else{j=j+1|0;h=h+1|0}}return}qfa(k|0,m|0,p|0)|0;if(l>>>0>g>>>0){j=p;i=l;h=m}else return;do{h=h+g|0;k=k+g|0;i=i-g|0;j=j>>>0>i>>>0?i:j;qfa(k|0,h|0,j|0)|0}while(i>>>0>g>>>0);return}}else G=78;while(0);if((G|0)==78){if((y&255)>7)h=da(C,z>>>3)|0;else h=(u+7|0)>>>3;qfa(f|0,A|0,h|0)|0}if(!o)return;a[o>>0]=d[o>>0]&(s^255)|t&255&s;return}function mD(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;n=t;if(!((e|0)!=0&(b|0)!=0)){i=t;return}j=c[b>>2]|0;q=c[263568+(f<<2)>>2]|0;s=da(q,j)|0;r=b+11|0;f=d[r>>0]|0;if((f|0)==1){f=j+7&7;if(!(g&65536)){g=s+7&7^7;k=7;l=1;o=0;f=f^7}else{g=s+7&7;k=0;l=-1;o=7}if(j){h=e+((s+-1|0)>>>3)|0;m=0;n=e+((j+-1|0)>>>3)|0;while(1){e=(d[n>>0]|0)>>>f&1;j=0;do{a[h>>0]=(d[h>>0]|0)&32639>>>(7-g|0)|e<>>0<(c[b>>2]|0)>>>0){n=j?n+-1|0:n;f=j?o:f+l|0}else break}}}else if((f|0)==4){f=j&1;if(!(g&65536)){g=s&1;l=4;o=4;p=0}else{g=s&1^1;l=0;o=-4;p=4;f=f^1}if(j){m=e+((s+-1|0)>>>1)|0;g=g<<2;k=0;e=e+((j+-1|0)>>>1)|0;n=f<<2;while(1){j=(d[e>>0]|0)>>>n&15;f=m;m=g;h=0;while(1){a[f>>0]=(d[f>>0]|0)&3855>>>(4-m|0)|j<=(q|0)){m=f;break}else m=g}h=(n|0)==(l|0);f=k+1|0;if(f>>>0<(c[b>>2]|0)>>>0){k=f;e=h?e+-1|0:e;n=h?p:n+o|0}else break}}}else if((f|0)==2){f=(j<<1)+6&6;if(!(g&65536)){g=(s<<1)+6&6^6;k=6;l=2;o=0;f=f^6}else{g=(s<<1)+6&6;k=0;l=-2;o=6}if(j){h=e+((s+-1|0)>>>2)|0;m=0;n=e+((j+-1|0)>>>2)|0;while(1){e=(d[n>>0]|0)>>>f&3;j=0;do{a[h>>0]=(d[h>>0]|0)&16191>>>(6-g|0)|e<>>0<(c[b>>2]|0)>>>0){n=j?n+-1|0:n;f=j?o:f+l|0}else break}}}else{m=f>>>3;if(j){k=e+(da(m,s+-1|0)|0)|0;l=e+(da(m,j+-1|0)|0)|0;f=0-m|0;h=0-(da((q|0)>1?q:1,m)|0)|0;j=k;k=0;while(1){qfa(n|0,l|0,m|0)|0;g=j;e=0;while(1){qfa(g|0,n|0,m|0)|0;e=e+1|0;if((e|0)>=(q|0))break;else g=g+f|0}k=k+1|0;if(k>>>0>=(c[b>>2]|0)>>>0)break;else{j=j+h|0;l=l+f|0}}}}c[b>>2]=s;r=a[r>>0]|0;f=r&255;if((r&255)>7)f=da(f>>>3,s)|0;else f=((da(f,s)|0)+7|0)>>>3;c[b+4>>2]=f;i=t;return}function nD(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=g+-1|0;if(h>>>0>=4)return;g=a+808|0;if(!(c[g>>2]|0)){i=(d[a+438>>0]|0)+7|0;c[g>>2]=47;c[a+812>>2]=48;c[a+816>>2]=49;c[a+820>>2]=(i&504|0)==8?51:50}Ud[c[a+(h<<2)+808>>2]&255](b,e,f);return}function oD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+1024|0;n=t;f=a+224|0;o=a+236|0;c[o>>2]=b;j=a+240|0;c[j>>2]=0;p=a+228|0;s=(b|0)!=0;q=a+408|0;k=a+376|0;l=a+796|0;m=a+788|0;g=a+792|0;h=(a|0)==0;e=(b|0)==0?0:d;a:while(1){if(!(c[p>>2]|0)){d=c[q>>2]|0;while(1){if(d)break;RC(a,0)|0;d=QC(a)|0;c[q>>2]=d;if((c[k>>2]|0)!=1229209940){r=6;break a}}b=c[l>>2]|0;b=b>>>0>d>>>0?d:b;d=c[m>>2]|0;if(d){if((c[g>>2]|0)>>>0>>0){c[m>>2]=0;c[g>>2]=0;qC(a,d);r=10}}else r=10;if((r|0)==10){r=0;d=tC(a,b)|0;if(!d){r=12;break}c[m>>2]=d;c[g>>2]=b}if(!h){FC(a,d,b);eB(a,d,b)}c[q>>2]=(c[q>>2]|0)-b;c[f>>2]=d;c[p>>2]=b}if(s){b=0;d=e}else{c[o>>2]=n;b=e;d=1024}c[j>>2]=d;d=AH(f,0)|0;e=c[j>>2]|0;e=(s?e:1024-e|0)+b|0;c[j>>2]=0;if((d|0)==1){d=e;r=19;break}else if(d){r=22;break}if(!e){r=30;break}}if((r|0)==6)LB(a,263600);else if((r|0)==12)UB(a,263784);else if((r|0)==19){c[o>>2]=0;r=a+208|0;c[r>>2]=c[r>>2]|8;r=a+212|0;c[r>>2]=c[r>>2]|8;if(!((c[p>>2]|0)==0?(c[q>>2]|0)==0:0))XB(a,263624);if(!d){i=t;return}if(s)LB(a,263600);XB(a,263648);i=t;return}else if((r|0)==22){oB(a,d);d=c[a+248>>2]|0;if(s)UB(a,d);XB(a,d);i=t;return}else if((r|0)==30){i=t;return}}function pD(a){a=a|0;var b=0,d=0,e=0;b=a+212|0;if((c[b>>2]&8|0)==0?(oD(a,0,0),c[a+236>>2]=0,d=c[b>>2]|0,(d&8|0)==0):0){e=a+208|0;c[e>>2]=c[e>>2]|8;c[b>>2]=d|8}b=a+220|0;if((c[b>>2]|0)!=1229209940)return;c[a+224>>2]=0;c[a+228>>2]=0;c[b>>2]=0;RC(a,c[a+408>>2]|0)|0;return}function qD(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=b+372|0;i=(c[e>>2]|0)+1|0;c[e>>2]=i;l=b+356|0;if(i>>>0<(c[l>>2]|0)>>>0)return;do if((a[b+432>>0]|0)!=0?(c[e>>2]=0,sfa(c[b+380>>2]|0,0,(c[b+364>>2]|0)+1|0)|0,k=b+433|0,g=(a[k>>0]|0)+1<<24>>24,a[k>>0]=g,(g&255)<=6):0){h=(c[b+348>>2]|0)+-1|0;m=b+368|0;i=(c[b+216>>2]&2|0)==0;j=b+352|0;f=g;e=g&255;while(1){g=d[267960+e>>0]|0;e=((h+g-(d[267952+e>>0]|0)|0)>>>0)/(g>>>0)|0;if(!i)break;p=f&255;g=d[267944+p>>0]|0;g=(((c[j>>2]|0)+-1+g-(d[267936+p>>0]|0)|0)>>>0)/(g>>>0)|0;c[l>>2]=g;if(!((g|0)==0|(e|0)==0))break;g=f+1<<24>>24;a[k>>0]=g;if((g&255)>6){n=9;break}else{f=g;e=g&255}}if((n|0)==9){c[m>>2]=e;break}c[m>>2]=e;if((f&255)<7)return}while(0);e=b+212|0;if((c[e>>2]&8|0)==0?(oD(b,0,0),c[b+236>>2]=0,o=c[e>>2]|0,(o&8|0)==0):0){p=b+208|0;c[p>>2]=c[p>>2]|8;c[e>>2]=o|8}e=b+220|0;if((c[e>>2]|0)!=1229209940)return;c[b+224>>2]=0;c[b+228>>2]=0;c[e>>2]=0;RC(b,c[b+408>>2]|0)|0;return}function rD(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;MC(e);m=e+432|0;if(!(a[m>>0]|0)){c[e+356>>2]=c[e+352>>2];l=c[e+348>>2]|0;c[e+368>>2]=l;i=c[e+216>>2]|0}else{i=c[e+216>>2]|0;f=c[e+352>>2]|0;if(!(i&2))f=(f+7|0)>>>3;c[e+356>>2]=f;l=c[e+348>>2]|0;h=d[e+433>>0]|0;j=d[267960+h>>0]|0;c[e+368>>2]=((l+-1+j-(d[267952+h>>0]|0)|0)>>>0)/(j>>>0)|0}f=d[e+438>>0]|0;j=e+216|0;if(i&4)f=(d[e+436>>0]|0)<8?8:f;g=c[j>>2]|0;h=(g&4096|0)==0;do if(!h){i=a[e+435>>0]|0;if(!(i<<24>>24)){f=(f>>>0<8?8:f)<<((b[e+428>>1]|0)!=0&1);break}else if(i<<24>>24==3){f=(b[e+428>>1]|0)==0?24:32;break}else if(i<<24>>24==2){if(!(b[e+428>>1]|0))break;f=(f<<2>>>0)/3|0;break}else break}while(0);do if(g&512)if(h){h=g&-513;c[j>>2]=h;break}else{h=g;f=f<<((d[e+436>>0]|0)<16&1);break}else h=g;while(0);g=(h&32768|0)==0;do if(!g){i=a[e+435>>0]|0;if(i<<24>>24==3|i<<24>>24==2){f=(f|0)<33?32:64;break}else if(!(i<<24>>24)){f=(f|0)<9?16:32;break}else break}while(0);do if(h&16384){if(((b[e+428>>1]|0)==0|(h&4096|0)==0)&g?(k=a[e+435>>0]|0,k<<24>>24!=4):0){g=k<<24>>24==6;if((f|0)<9){f=g?32:24;break}else{f=g?64:48;break}}f=(f|0)<17?32:64}while(0);if(!(h&1048576))g=f;else{g=da(d[e+205>>0]|0,d[e+204>>0]|0)|0;g=(g|0)>(f|0)?g:f}a[e+442>>0]=g;a[e+443>>0]=0;f=l+7&-8;if((g|0)>7)f=da(f,g>>>3)|0;else f=(da(f,g)|0)>>>3;g=(g+7>>3)+49+f|0;h=e+784|0;if(g>>>0>(c[h>>2]|0)>>>0){i=e+728|0;qC(e,c[i>>2]|0);j=e+804|0;qC(e,c[j>>2]|0);if(!(a[m>>0]|0))f=sC(e,g)|0;else f=rC(e,g)|0;c[i>>2]=f;l=sC(e,g)|0;c[j>>2]=l;j=c[i>>2]|0;c[e+384>>2]=j+(j+32&15^31);c[e+380>>2]=l+(l+32&15^31);c[h>>2]=g}f=c[e+364>>2]|0;if((f|0)==-1)LB(e,263672);sfa(c[e+380>>2]|0,0,f+1|0)|0;f=e+788|0;g=c[f>>2]|0;if(g){c[e+792>>2]=0;c[f>>2]=0;qC(e,g)}if(!(wP(e,1229209940)|0)){l=e+212|0;c[l>>2]=c[l>>2]|64;return}else LB(e,c[e+248>>2]|0)}function sD(a,d,e){a=a|0;d=d|0;e=e|0;if((a|0)==0|(d|0)==0|(e|0)==0)return;a=d+170|0;b[a+0>>1]=b[e+0>>1]|0;b[a+2>>1]=b[e+2>>1]|0;b[a+4>>1]=b[e+4>>1]|0;b[a+6>>1]=b[e+6>>1]|0;b[a+8>>1]=b[e+8>>1]|0;a=d+8|0;c[a>>2]=c[a>>2]|32;return}function tD(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0;if((a|0)==0|(d|0)==0)return;f=d+20|0;if(((b[f>>1]|0)+-1&65535)>255){OB(a,263824);return}jB(a,d,8,0);g=wC(a,512)|0;c[d+204>>2]=g;if(!g){OB(a,263872);return}a=d+232|0;c[a>>2]=c[a>>2]|8;f=b[f>>1]|0;if(f<<16>>16){a=0;do{b[g+(a<<1)>>1]=b[e+(a<<1)>>1]|0;a=a+1|0}while((a|0)<(f&65535|0))}d=d+8|0;c[d>>2]=c[d>>2]|64;return}function uD(b,e,f,g,h,i,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0;if((b|0)==0|(e|0)==0)return;c[e>>2]=f;c[e+4>>2]=g;m=e+24|0;a[m>>0]=h;n=e+25|0;a[n>>0]=i;a[e+26>>0]=k;a[e+27>>0]=l;a[e+28>>0]=j;BB(b,f,g,h&255,i&255,j&255,k&255,l&255);i=a[n>>0]|0;if(i<<24>>24!=3){h=(i&2)==0?1:3;a[e+29>>0]=h;if(i&4){h=h+1<<24>>24;a[e+29>>0]=h}}else{a[e+29>>0]=1;h=1}h=da(d[m>>0]|0,h&255)|0;a[e+30>>0]=h;h=h&255;if(h>>>0>7)h=da(h>>>3,f)|0;else h=((da(h,f)|0)+7|0)>>>3;c[e+12>>2]=h;return}function vD(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((b|0)==0|(d|0)==0)return;c[d+180>>2]=e;c[d+184>>2]=f;a[d+188>>0]=g;g=d+8|0;c[g>>2]=c[g>>2]|256;return}function wD(b,d,e,f,g,h,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0;if((b|0)==0|(d|0)==0|(e|0)==0|(j|0)==0)return;o=(i|0)>0;if(o&(k|0)==0)return;m=(tfa(e|0)|0)+1|0;if(h>>>0>3)LB(b,263912);if(i>>>0>255)LB(b,263944);a:do if(o){n=0;while(1){l=c[k+(n<<2)>>2]|0;if(!l){l=11;break}n=n+1|0;if(!(DB(l,tfa(l|0)|0)|0)){l=11;break}if((n|0)>=(i|0))break a}if((l|0)==11)LB(b,263976)}while(0);l=wC(b,m)|0;c[d+208>>2]=l;if(!l){OB(b,264016);return}qfa(l|0,e|0,m|0)|0;c[d+212>>2]=f;c[d+216>>2]=g;a[d+228>>0]=h;a[d+229>>0]=i;l=(tfa(j|0)|0)+1|0;m=wC(b,l)|0;c[d+220>>2]=m;if(!m){OB(b,264056);return}qfa(m|0,j|0,l|0)|0;l=(i<<2)+4|0;m=wC(b,l)|0;g=d+224|0;c[g>>2]=m;if(!m){OB(b,264096);return}sfa(m|0,0,l|0)|0;b:do if(o){n=0;while(1){l=k+(n<<2)|0;m=(tfa(c[l>>2]|0)|0)+1|0;f=wC(b,m)|0;c[(c[g>>2]|0)+(n<<2)>>2]=f;f=c[(c[g>>2]|0)+(n<<2)>>2]|0;if(!f)break;qfa(f|0,c[l>>2]|0,m|0)|0;n=n+1|0;if((n|0)>=(i|0))break b}OB(b,264136);return}while(0);b=d+8|0;c[b>>2]=c[b>>2]|1024;b=d+232|0;c[b>>2]=c[b>>2]|128;return}function xD(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;if((b|0)==0|(d|0)==0)return;if((e+-1|0)>>>0>1)LB(b,264176);if(!f)LB(b,264200);h=tfa(f|0)|0;if(!h)LB(b,264200);if((a[f>>0]|0)==45)LB(b,264200);if(!(DB(f,h)|0))LB(b,264200);if(!g)LB(b,264224);i=tfa(g|0)|0;if(!i)LB(b,264224);if((a[g>>0]|0)==45)LB(b,264224);if(!(DB(g,i)|0))LB(b,264224);a[d+252>>0]=e;h=h+1|0;e=wC(b,h)|0;j=d+256|0;c[j>>2]=e;if(!e){OB(b,264248);return}qfa(e|0,f|0,h|0)|0;h=i+1|0;e=wC(b,h)|0;c[d+260>>2]=e;if(!e){qC(b,c[j>>2]|0);c[j>>2]=0;OB(b,264248);return}else{qfa(e|0,g|0,h|0)|0;b=d+8|0;c[b>>2]=c[b>>2]|16384;b=d+232|0;c[b>>2]=c[b>>2]|256;return}}function yD(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((b|0)==0|(d|0)==0)return;c[d+192>>2]=e;c[d+196>>2]=f;a[d+200>>0]=g;g=d+8|0;c[g>>2]=c[g>>2]|128;return}function zD(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;if((d|0)==0|(e|0)==0)return;if(g>>>0>256){if((a[e+25>>0]|0)==3)LB(d,264296);OB(d,264296);return}i=(g|0)>0;if(i&(f|0)==0)LB(d,311824);if((g|0)==0?(c[d+708>>2]&1|0)==0:0)LB(d,311824);jB(d,e,4096,0);h=rC(d,768)|0;c[d+416>>2]=h;if(i)qfa(h|0,f|0,g*3|0)|0;c[e+16>>2]=h;f=g&65535;b[d+420>>1]=f;b[e+20>>1]=f;d=e+232|0;c[d>>2]=c[d>>2]|4096;d=e+8|0;c[d>>2]=c[d>>2]|8;return}function AD(b,d,e){b=b|0;d=d|0;e=e|0;if((b|0)==0|(d|0)==0|(e|0)==0)return;b=d+148|0;a[b+0>>0]=a[e+0>>0]|0;a[b+1>>0]=a[e+1>>0]|0;a[b+2>>0]=a[e+2>>0]|0;a[b+3>>0]=a[e+3>>0]|0;a[b+4>>0]=a[e+4>>0]|0;e=d+8|0;c[e>>2]=c[e>>2]|2;return}function BD(a,f,g,h,i,j){a=a|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0;if((a|0)==0|(f|0)==0|(g|0)==0|(i|0)==0)return;if(h)WB(a,264320);k=yB(a,f+40|0,g,j,i,d[f+25>>0]|0)|0;qB(a,f);if(!k)return;h=f+114|0;b[h>>1]=e[h>>1]|0|24;h=(tfa(g|0)|0)+1|0;k=wC(a,h)|0;if(!k){SB(a,264352);return}qfa(k|0,g|0,h|0)|0;h=wC(a,j)|0;if(!h){qC(a,k);SB(a,264400);return}else{qfa(h|0,i|0,j|0)|0;jB(a,f,16,0);c[f+124>>2]=j;c[f+116>>2]=k;c[f+120>>2]=h;j=f+232|0;c[j>>2]=c[j>>2]|16;j=f+8|0;c[j>>2]=c[j>>2]|4096;return}}function CD(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!(DD(a,b,c,d)|0))return;else LB(a,264448)}function DD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;if((b|0)==0|(d|0)==0|(f|0)<1|(e|0)==0){u=0;return u|0}k=d+132|0;t=d+128|0;i=c[t>>2]|0;do if(((c[k>>2]|0)-i|0)<(f|0)){if((2147483647-i|0)>=(f|0)){g=i+f|0;if((g|0)<2147483639)j=g+8&-8;else j=2147483647;h=d+136|0;g=vC(b,c[h>>2]|0,i,j-i|0,28)|0;if(g){qC(b,c[h>>2]|0);c[h>>2]=g;s=d+232|0;c[s>>2]=c[s>>2]|16384;c[k>>2]=j;break}}YB(b,264488,1);u=1;return u|0}while(0);if((f|0)<=0){u=0;return u|0}o=d+136|0;s=0;a:while(1){p=c[t>>2]|0;q=c[o>>2]|0;r=q+(p*28|0)|0;m=e+(s*28|0)+4|0;g=c[m>>2]|0;do if(g){n=e+(s*28|0)|0;h=c[n>>2]|0;if((h+1|0)>>>0>3){YB(b,264512,1);break}l=tfa(g|0)|0;if((h|0)>=1){g=c[e+(s*28|0)+20>>2]|0;if(!g)j=0;else j=tfa(g|0)|0;g=c[e+(s*28|0)+24>>2]|0;if(!g)i=0;else i=tfa(g|0)|0}else{i=0;j=0}k=e+(s*28|0)+8|0;g=c[k>>2]|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){d=tfa(g|0)|0;c[r>>2]=h}else u=21;do if((u|0)==21){u=0;if((h|0)>0){c[r>>2]=1;d=0;break}else{c[r>>2]=-1;d=0;break}}while(0);g=tC(b,l+4+j+i+d|0)|0;h=q+(p*28|0)+4|0;c[h>>2]=g;if(!g)break a;qfa(g|0,c[m>>2]|0,l|0)|0;a[(c[h>>2]|0)+l>>0]=0;if((c[n>>2]|0)>0){g=(c[h>>2]|0)+(l+1)|0;l=q+(p*28|0)+20|0;c[l>>2]=g;qfa(g|0,c[e+(s*28|0)+20>>2]|0,j|0)|0;a[(c[l>>2]|0)+j>>0]=0;l=(c[l>>2]|0)+(j+1)|0;g=q+(p*28|0)+24|0;c[g>>2]=l;qfa(l|0,c[e+(s*28|0)+24>>2]|0,i|0)|0;a[(c[g>>2]|0)+i>>0]=0;g=(c[g>>2]|0)+(i+1)|0}else{c[q+(p*28|0)+20>>2]=0;c[q+(p*28|0)+24>>2]=0;g=(c[h>>2]|0)+(l+1)|0}j=q+(p*28|0)+8|0;c[j>>2]=g;if(d){qfa(g|0,c[k>>2]|0,d|0)|0;g=c[j>>2]|0}a[g+d>>0]=0;r=(c[r>>2]|0)>0;c[q+(p*28|0)+12>>2]=r?0:d;c[q+(p*28|0)+16>>2]=r?d:0;c[t>>2]=(c[t>>2]|0)+1}while(0);s=s+1|0;if((s|0)>=(f|0)){g=0;u=34;break}}if((u|0)==34)return g|0;YB(b,264552,1);u=1;return u|0}function ED(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0;if((f|0)==0|(g|0)==0|(h|0)==0)return;if(c[f+208>>2]&512)return;if((((((a[h+2>>0]|0)+-1&255)<=11?((a[h+3>>0]|0)+-1&255)<=30:0)?(d[h+4>>0]|0)<=23:0)?(d[h+5>>0]|0)<=59:0)?(d[h+6>>0]|0)<=60:0){j=h;j=e[j>>1]|e[j+2>>1]<<16;h=h+4|0;h=e[h>>1]|e[h+2>>1]<<16;f=g+140|0;i=f;b[i>>1]=j;b[i+2>>1]=j>>>16;f=f+4|0;b[f>>1]=h;b[f+2>>1]=h>>>16;f=g+8|0;c[f>>2]=c[f>>2]|512;return}OB(f,264584);return}function FD(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0;if((f|0)==0|(g|0)==0)return;if((h|0)!=0?(jB(f,g,8192,0),k=sC(f,256)|0,c[g+156>>2]=k,c[f+528>>2]=k,(i+-1|0)>>>0<256):0)qfa(k|0,h|0,i|0)|0;if(!j){b[g+22>>1]=i;if(!i)return}else{k=1<<(d[g+24>>0]|0);h=a[g+25>>0]|0;if(h<<24>>24==2){if(!(((e[j+2>>1]|0|0)<=(k|0)?(e[j+4>>1]|0|0)<=(k|0):0)?(e[j+6>>1]|0|0)<=(k|0):0))l=11}else if(h<<24>>24==0?(e[j+8>>1]|0|0)>(k|0):0)l=11;if((l|0)==11)OB(f,264616);l=g+160|0;b[l+0>>1]=b[j+0>>1]|0;b[l+2>>1]=b[j+2>>1]|0;b[l+4>>1]=b[j+4>>1]|0;b[l+6>>1]=b[j+6>>1]|0;b[l+8>>1]=b[j+8>>1]|0;b[g+22>>1]=(i|0)==0?1:i&65535}l=g+8|0;c[l>>2]=c[l>>2]|16;l=g+232|0;c[l>>2]=c[l>>2]|8192;return}function GD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;if((b|0)==0|(d|0)==0|(f|0)<1|(e|0)==0)return;g=d+244|0;l=d+248|0;h=vC(b,c[g>>2]|0,c[l>>2]|0,f,16)|0;if(!h){YB(b,264672,1);return}qC(b,c[g>>2]|0);c[g>>2]=h;j=d+232|0;c[j>>2]=c[j>>2]|32;j=d+8|0;i=e;g=h+(c[l>>2]<<4)|0;while(1){d=c[i>>2]|0;if((d|0)!=0?(k=i+8|0,(c[k>>2]|0)!=0):0){a[g+4>>0]=a[i+4>>0]|0;d=(tfa(d|0)|0)+1|0;e=tC(b,d)|0;c[g>>2]=e;if(!e)break;qfa(e|0,c[i>>2]|0,d|0)|0;e=i+12|0;d=uC(b,c[e>>2]|0,10)|0;c[g+8>>2]=d;if(!d){m=10;break}c[g+12>>2]=c[e>>2];qfa(d|0,c[k>>2]|0,(c[e>>2]|0)*10|0)|0;c[j>>2]=c[j>>2]|8192;c[l>>2]=(c[l>>2]|0)+1;g=g+16|0}else WB(b,264696);f=f+-1|0;if(!f){m=15;break}else i=i+16|0}if((m|0)==10){qC(b,c[g>>2]|0);c[g>>2]=0}else if((m|0)==15)return;if((f|0)<=0)return;YB(b,264728,1);return}function HD(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;if((b|0)==0|(e|0)==0|(g|0)<1|(f|0)==0)return;h=e+236|0;l=e+240|0;i=vC(b,c[h>>2]|0,c[l>>2]|0,g,20)|0;if(!i){YB(b,264752,1);return}qC(b,c[h>>2]|0);c[h>>2]=i;k=e+232|0;c[k>>2]=c[k>>2]|512;if((g|0)<=0)return;k=b+208|0;j=f;h=i+((c[l>>2]|0)*20|0)|0;while(1){e=d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24;a[h>>0]=e;a[h+1>>0]=e>>8;a[h+2>>0]=e>>16;a[h+3>>0]=e>>24;a[h+4>>0]=0;e=(d[j+16>>0]|0)&11;if(!e){if(c[k>>2]&32768){m=9;break}VB(b,264808);e=c[k>>2]&11;if(!e){m=9;break}}while(1){f=e&0-e;if((e|0)==(f|0))break;else e=f^e}a[h+16>>0]=e;f=j+12|0;e=c[f>>2]|0;do if(e){e=tC(b,e)|0;c[h+8>>2]=e;if(!e){YB(b,264776,1);break}else{qfa(e|0,c[j+8>>2]|0,c[f>>2]|0)|0;c[h+12>>2]=c[f>>2];m=16;break}}else{c[h+8>>2]=0;c[h+12>>2]=0;m=16}while(0);if((m|0)==16){m=0;c[l>>2]=(c[l>>2]|0)+1;h=h+20|0}g=g+-1|0;if((g|0)<=0){m=18;break}else j=j+20|0}if((m|0)==9)LB(b,264864);else if((m|0)==18)return}function ID(a,b){a=a|0;b=b|0;var d=0;a=a+212|0;d=c[a>>2]|0;c[a>>2]=(b|0)==0?d&-7340033:d|7340032;return}function JD(a){a=a|0;if(!a)return;a=a+216|0;c[a>>2]=c[a>>2]|1;return}function KD(b){b=b|0;if(!b)return;if((a[b+436>>0]|0)!=16)return;b=b+216|0;c[b>>2]=c[b>>2]|16;return}function LD(b){b=b|0;var e=0;if(!b)return;if((d[b+436>>0]|0)>=8)return;e=b+216|0;c[e>>2]=c[e>>2]|4;a[b+437>>0]=8;return}function MD(b){b=b|0;if(!b){b=1;return b|0}if(!(a[b+432>>0]|0)){b=1;return b|0}b=b+216|0;c[b>>2]=c[b>>2]|2;b=7;return b|0}function ND(a){a=a|0;if(!a)return;a=a+216|0;c[a>>2]=c[a>>2]|32;return}function OD(b,e){b=b|0;e=e|0;var f=0,g=0;f=a[b+8>>0]|0;if(f<<24>>24==4){f=a[b+9>>0]|0;if(f<<24>>24==8){b=c[b+4>>2]|0;if(!b)return;else{g=0;f=e}while(1){a[f>>0]=(d[f>>0]|0)^255;g=g+2|0;if(g>>>0>=b>>>0)break;else f=f+2|0}return}else if(f<<24>>24==16){b=c[b+4>>2]|0;if(!b)return;else{g=0;f=e}while(1){a[f>>0]=(d[f>>0]|0)^255;e=f+1|0;a[e>>0]=(d[e>>0]|0)^255;g=g+4|0;if(g>>>0>=b>>>0)break;else f=f+4|0}return}else return}else if(!(f<<24>>24)){b=c[b+4>>2]|0;if(!b)return;else{g=0;f=e}while(1){a[f>>0]=(d[f>>0]|0)^255;g=g+1|0;if((g|0)==(b|0))break;else f=f+1|0}return}else return}function PD(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;if((a[b+9>>0]|0)!=16)return;f=da(d[b+10>>0]|0,c[b>>2]|0)|0;if(!f)return;else{g=0;b=e}while(1){h=a[b>>0]|0;e=b+1|0;a[b>>0]=a[e>>0]|0;a[e>>0]=h;g=g+1|0;if((g|0)==(f|0))break;else b=b+2|0}return}function QD(b,e){b=b|0;e=e|0;var f=0,g=0;f=a[b+9>>0]|0;if((f&255)>=8)return;b=c[b+4>>2]|0;g=e+b|0;if(f<<24>>24==4)f=265424;else if(f<<24>>24==2)f=265168;else if(f<<24>>24==1)f=264912;else return;if((b|0)>0)b=e;else return;do{a[b>>0]=a[f+(d[b>>0]|0)>>0]|0;b=b+1|0}while(b>>>0>>0);return}function RD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=b+4|0;h=c[k>>2]|0;i=d+h|0;j=b+10|0;f=a[j>>0]|0;if(f<<24>>24==4){f=a[b+9>>0]|0;if(f<<24>>24==8){if(!e){f=d+3|0;e=d+4|0}else{f=d;e=d+1|0}if(e>>>0>>0){g=(((d+(h+-1-e)|0)>>>2)*3|0)+3|0;h=f;while(1){a[h>>0]=a[e>>0]|0;a[h+1>>0]=a[e+1>>0]|0;a[h+2>>0]=a[e+2>>0]|0;e=e+4|0;if(e>>>0>=i>>>0)break;else h=h+3|0}f=f+g|0}a[b+11>>0]=24}else if(f<<24>>24==16){if(!e){f=d+6|0;e=d+8|0}else{f=d;e=d+2|0}if(e>>>0>>0){g=(((d+(h+-1-e)|0)>>>3)*6|0)+6|0;h=f;while(1){a[h>>0]=a[e>>0]|0;a[h+1>>0]=a[e+1>>0]|0;a[h+2>>0]=a[e+2>>0]|0;a[h+3>>0]=a[e+3>>0]|0;a[h+4>>0]=a[e+4>>0]|0;a[h+5>>0]=a[e+5>>0]|0;e=e+8|0;if(e>>>0>=i>>>0)break;else h=h+6|0}f=f+g|0}a[b+11>>0]=48}else return;a[j>>0]=3;e=b+8|0;if((a[e>>0]|0)==6)a[e>>0]=2}else if(f<<24>>24==2){f=a[b+9>>0]|0;if(f<<24>>24==8){if(!e){f=d+1|0;e=d+2|0}else{f=d;e=d+1|0}if(e>>>0>>0){g=((d+(h+-1-e)|0)>>>1)+1|0;h=f;while(1){a[h>>0]=a[e>>0]|0;e=e+2|0;if(e>>>0>=i>>>0)break;else h=h+1|0}f=f+g|0}a[b+11>>0]=8}else if(f<<24>>24==16){if(!e){f=d+2|0;e=d+4|0}else{f=d;e=d+2|0}if(e>>>0>>0){g=((d+(h+-1-e)|0)>>>2<<1)+2|0;h=f;while(1){a[h>>0]=a[e>>0]|0;a[h+1>>0]=a[e+1>>0]|0;e=e+4|0;if(e>>>0>=i>>>0)break;else h=h+2|0}f=f+g|0}a[b+11>>0]=16}else return;a[j>>0]=1;e=b+8|0;if((a[e>>0]|0)==4)a[e>>0]=0}else return;c[k>>2]=f-d;return}function SD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a[b+8>>0]|0;if(!(e&2))return;f=c[b>>2]|0;b=a[b+9>>0]|0;if(b<<24>>24==8)if(e<<24>>24==2){if(!f)return;else b=0;while(1){g=a[d>>0]|0;e=d+2|0;a[d>>0]=a[e>>0]|0;a[e>>0]=g;b=b+1|0;if((b|0)==(f|0))break;else d=d+3|0}return}else if(e<<24>>24==6){if(!f)return;else b=0;while(1){e=a[d>>0]|0;g=d+2|0;a[d>>0]=a[g>>0]|0;a[g>>0]=e;b=b+1|0;if((b|0)==(f|0))break;else d=d+4|0}return}else return;else if(b<<24>>24==16)if(e<<24>>24==2){if(!f)return;else b=0;while(1){e=a[d>>0]|0;h=d+4|0;a[d>>0]=a[h>>0]|0;a[h>>0]=e;h=d+1|0;e=a[h>>0]|0;g=d+5|0;a[h>>0]=a[g>>0]|0;a[g>>0]=e;b=b+1|0;if((b|0)==(f|0))break;else d=d+6|0}return}else if(e<<24>>24==6){if(!f)return;else b=0;while(1){g=a[d>>0]|0;e=d+4|0;a[d>>0]=a[e>>0]|0;a[e>>0]=g;e=d+1|0;g=a[e>>0]|0;h=d+5|0;a[e>>0]=a[h>>0]|0;a[h>>0]=g;b=b+1|0;if((b|0)==(f|0))break;else d=d+8|0}return}else return;else return}function TD(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=b[e+420>>1]|0;h=d[f+9>>0]|0;if((k&65535|0)>=(1<>16==0)return;g=(da(c[f>>2]|0,0-(d[f+11>>0]|0)|0)|0)&7;k=c[e+384>>2]|0;f=c[f+4>>2]|0;i=k+f|0;if((h|0)==4){if((f|0)<=0)return;j=e+424|0;f=c[j>>2]|0;while(1){h=a[i>>0]|0;e=(h&255)>>>g&15;if((e|0)>(f|0)){c[j>>2]=e;h=a[i>>0]|0;f=e}g=(h&255)>>>g>>>4&15;if((g|0)>(f|0)){c[j>>2]=g;f=g}i=i+-1|0;if(i>>>0<=k>>>0)break;else g=0}return}else if((h|0)==8){if((f|0)<=0)return;h=e+424|0;f=c[h>>2]|0;e=i;do{g=d[e>>0]|0;if((g|0)>(f|0)){c[h>>2]=g;f=g}e=e+-1|0}while(e>>>0>k>>>0);return}else if((h|0)==1){if((f|0)<=0)return;e=e+424|0;f=i;while(1){if((d[f>>0]|0)>>>g)c[e>>2]=1;f=f+-1|0;if(f>>>0<=k>>>0)break;else g=0}return}else if((h|0)==2){if((f|0)<=0)return;j=e+424|0;f=c[j>>2]|0;while(1){h=a[i>>0]|0;e=(h&255)>>>g&3;if((e|0)>(f|0)){c[j>>2]=e;h=a[i>>0]|0;f=e}e=(h&255)>>>g>>>2&3;if((e|0)>(f|0)){c[j>>2]=e;h=a[i>>0]|0;f=e}e=(h&255)>>>g>>>4&3;if((e|0)>(f|0)){c[j>>2]=e;h=a[i>>0]|0;f=e}g=(h&255)>>>g>>>6&3;if((g|0)>(f|0)){c[j>>2]=g;f=g}i=i+-1|0;if(i>>>0<=k>>>0)break;else g=0}return}else return}function UD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+180>>2]|0;if(!e)LB(a,265680);else{Ud[e&255](a,b,d);return}}function VD(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)return;if((Xb(b|0,1,d|0,c[a+188>>2]|0)|0)==(d|0))return;else LB(a,265712)}function WD(a){a=a|0;var b=0;b=c[a+472>>2]|0;if(!b)return;Bd[b&511](a);return}function XD(a){a=a|0;if(!a)return;jd(c[a+188>>2]|0)|0;return}function YD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(!a)return;c[a+188>>2]=b;c[a+180>>2]=(d|0)==0?52:d;c[a+472>>2]=(e|0)==0?231:e;b=a+184|0;if(!(c[b>>2]|0))return;c[b>>2]=0;OB(a,265728);return}function ZD(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;if((f|0)==0|(g|0)==0)return;l=f+208|0;if(c[l>>2]&1024)return;iE(f);if((c[l>>2]&4096|0)!=0?(h=f+708|0,(c[h>>2]|0)!=0):0){OB(f,265800);c[h>>2]=0}k=g+25|0;lE(f,c[g>>2]|0,c[g+4>>2]|0,d[g+24>>0]|0,d[k>>0]|0,d[g+26>>0]|0,d[g+27>>0]|0,d[g+28>>0]|0);j=g+114|0;h=b[j>>1]|0;if((h&-32760)<<16>>16==8?(c[g+8>>2]&1|0)!=0:0){pE(f,c[g+40>>2]|0);h=b[j>>1]|0}i=g+8|0;do if(h<<16>>16>-1){n=c[i>>2]|0;h=(n&2048|0)==0;if(!(n&4096)){if(h)break;qE(f,e[g+112>>1]|0);break}if(!h)VB(f,265856);rE(f,c[g+116>>2]|0,c[g+120>>2]|0)}while(0);if(c[i>>2]&2)tE(f,g+148|0,d[k>>0]|0);if((b[j>>1]&-32752)<<16>>16==16?(c[i>>2]&4|0)!=0:0)uE(f,g+44|0);h=c[g+240>>2]|0;if((h|0)>0){k=c[g+236>>2]|0;g=f+688|0;j=k+(h*20|0)|0;do{do if((a[k+16>>0]&1)!=0?(m=mB(f,k)|0,(m|0)!=1):0){if(!((a[k+3>>0]&32)!=0|(m|0)==3)){if(m)break;if((c[g>>2]|0)!=3)break}i=k+12|0;h=c[i>>2]|0;if(!h){OB(f,266312);h=c[i>>2]|0}jE(f,k,c[k+8>>2]|0,h)}while(0);k=k+20|0}while(k>>>0>>0)}c[l>>2]=c[l>>2]|1024;return}function _D(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if((f|0)==0|(g|0)==0)return;ZD(f,g);l=g+8|0;i=c[l>>2]|0;if(!(i&8))if((a[g+25>>0]|0)==3)LB(f,265904);else h=i;else{mE(f,c[g+16>>2]|0,e[g+20>>1]|0);h=c[l>>2]|0}if(h&16){h=g+25|0;if(((c[f+216>>2]&524288|0)!=0?(a[h>>0]|0)==3:0)?(j=g+22|0,(b[j>>1]|0)!=0):0){k=g+156|0;i=0;do{o=(c[k>>2]|0)+i|0;a[o>>0]=d[o>>0]^255;i=i+1|0}while((i|0)<(e[j>>1]|0))}vE(f,c[g+156>>2]|0,g+160|0,e[g+22>>1]|0,d[h>>0]|0);h=c[l>>2]|0}if(h&32){wE(f,g+170|0,d[g+25>>0]|0);h=c[l>>2]|0}if(h&64){xE(f,c[g+204>>2]|0,e[g+20>>1]|0);h=c[l>>2]|0}if(h&256){BE(f,c[g+180>>2]|0,c[g+184>>2]|0,d[g+188>>0]|0);h=c[l>>2]|0}if(h&1024){CE(f,c[g+208>>2]|0,c[g+212>>2]|0,c[g+216>>2]|0,d[g+228>>0]|0,d[g+229>>0]|0,c[g+220>>2]|0,c[g+224>>2]|0);h=c[l>>2]|0}if(h&16384){DE(f,d[g+252>>0]|0,c[g+256>>2]|0,c[g+260>>2]|0);h=c[l>>2]|0}if(h&128){EE(f,c[g+192>>2]|0,c[g+196>>2]|0,d[g+200>>0]|0);h=c[l>>2]|0}if(h&512){FE(f,g+140|0);h=f+208|0;c[h>>2]=c[h>>2]|512;h=c[l>>2]|0}if((h&8192|0)!=0?(m=g+248|0,(c[m>>2]|0)>0):0){h=g+244|0;i=0;do{sE(f,(c[h>>2]|0)+(i<<4)|0);i=i+1|0}while((i|0)<(c[m>>2]|0))}k=g+128|0;if((c[k>>2]|0)>0){j=g+136|0;h=c[j>>2]|0;l=0;do{i=c[h+(l*28|0)>>2]|0;do if((i|0)>0){AE(f,i,c[h+(l*28|0)+4>>2]|0,c[h+(l*28|0)+20>>2]|0,c[h+(l*28|0)+24>>2]|0,c[h+(l*28|0)+8>>2]|0);h=c[j>>2]|0;i=h+(l*28|0)|0;if((c[i>>2]|0)==-1){c[i>>2]=-3;break}else{c[i>>2]=-2;break}}else if((i|0)==-1){yE(f,c[h+(l*28|0)+4>>2]|0,c[h+(l*28|0)+8>>2]|0,0);h=c[j>>2]|0;c[h+(l*28|0)>>2]=-3;break}else if(!i){zE(f,c[h+(l*28|0)+4>>2]|0,c[h+(l*28|0)+8>>2]|0,0);h=c[j>>2]|0;c[h+(l*28|0)>>2]=-2;break}else break;while(0);l=l+1|0}while((l|0)<(c[k>>2]|0))}h=c[g+240>>2]|0;if((h|0)<=0)return;k=c[g+236>>2]|0;l=f+688|0;j=k+(h*20|0)|0;do{do if((a[k+16>>0]&2)!=0?(n=mB(f,k)|0,(n|0)!=1):0){if(!((a[k+3>>0]&32)!=0|(n|0)==3)){if(n)break;if((c[l>>2]|0)!=3)break}i=k+12|0;h=c[i>>2]|0;if(!h){OB(f,266312);h=c[i>>2]|0}jE(f,k,c[k+8>>2]|0,h)}while(0);k=k+20|0}while(k>>>0>>0);return}function $D(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!b)return;k=b+208|0;if(!(c[k>>2]&4))LB(b,265952);if((c[b+424>>2]|0)>(e[b+420>>1]|0|0))SB(b,265984);if(d){if((c[d+8>>2]&512|0)!=0?(c[k>>2]&512|0)==0:0)FE(b,d+140|0);i=d+128|0;if((c[i>>2]|0)>0){h=d+136|0;f=c[h>>2]|0;j=0;do{g=c[f+(j*28|0)>>2]|0;do if((g|0)>0){AE(b,g,c[f+(j*28|0)+4>>2]|0,c[f+(j*28|0)+20>>2]|0,c[f+(j*28|0)+24>>2]|0,c[f+(j*28|0)+8>>2]|0);f=c[h>>2]|0;g=f+(j*28|0)|0;if((c[g>>2]|0)==-1){c[g>>2]=-3;break}else{c[g>>2]=-2;break}}else{if((g|0)>-1){zE(b,c[f+(j*28|0)+4>>2]|0,c[f+(j*28|0)+8>>2]|0,g);f=c[h>>2]|0;c[f+(j*28|0)>>2]=-2;break}if((g|0)==-1){yE(b,c[f+(j*28|0)+4>>2]|0,c[f+(j*28|0)+8>>2]|0,0);f=c[h>>2]|0;c[f+(j*28|0)>>2]=-3}}while(0);j=j+1|0}while((j|0)<(c[i>>2]|0))}f=c[d+240>>2]|0;if((f|0)>0){i=c[d+236>>2]|0;j=b+688|0;h=i+(f*20|0)|0;do{do if((a[i+16>>0]&8)!=0?(l=mB(b,i)|0,(l|0)!=1):0){if(!((a[i+3>>0]&32)!=0|(l|0)==3)){if(l)break;if((c[j>>2]|0)!=3)break}g=i+12|0;f=c[g>>2]|0;if(!f){OB(b,266312);f=c[g>>2]|0}jE(b,i,c[i+8>>2]|0,f)}while(0);i=i+20|0}while(i>>>0>>0)}}c[k>>2]=c[k>>2]|8;oE(b);return}function aE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;d=gB(a,b,d,e,0,0,0)|0;if(!d)return d|0;c[d+284>>2]=8192;c[d+304>>2]=1;c[d+288>>2]=-1;c[d+300>>2]=8;c[d+296>>2]=15;c[d+292>>2]=8;c[d+324>>2]=0;c[d+308>>2]=-1;c[d+320>>2]=8;c[d+316>>2]=15;c[d+312>>2]=8;a=d+212|0;c[a>>2]=c[a>>2]|2097152;YD(d,0,0,0);return d|0}function bE(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;q=t;if(!e){i=t;return}s=e+372|0;do if((c[s>>2]|0)==0?(a[e+433>>0]|0)==0:0)if(!(c[e+208>>2]&1024))LB(e,266032);else{GE(e);break}while(0);j=e+432|0;a:do if((a[j>>0]|0)!=0?(c[e+216>>2]&2|0)!=0:0)switch(d[e+433>>0]|0){case 3:{if((c[s>>2]&3|0)==0?(c[e+348>>2]|0)>>>0>=3:0)break a;HE(e);i=t;return}case 1:{if((c[s>>2]&7|0)==0?(c[e+348>>2]|0)>>>0>=5:0)break a;HE(e);i=t;return}case 4:{if((c[s>>2]&3|0)==2)break a;HE(e);i=t;return}case 6:{if(c[s>>2]&1)break a;HE(e);i=t;return}case 0:{if(!(c[s>>2]&7))break a;HE(e);i=t;return}case 5:{if((c[s>>2]&1|0)==0?(c[e+348>>2]|0)>>>0>=2:0)break a;HE(e);i=t;return}case 2:{if((c[s>>2]&7|0)==4)break a;HE(e);i=t;return}default:break a}while(0);p=q+8|0;a[p>>0]=a[e+435>>0]|0;g=c[e+360>>2]|0;c[q>>2]=g;k=a[e+440>>0]|0;a[q+10>>0]=k;h=a[e+437>>0]|0;a[q+9>>0]=h;h=da(k&255,h&255)|0;k=q+11|0;a[k>>0]=h;h=h&255;if(h>>>0>7)g=da(h>>>3,g)|0;else g=((da(h,g)|0)+7|0)>>>3;c[q+4>>2]=g;h=e+384|0;qfa((c[h>>2]|0)+1|0,f|0,g|0)|0;if((((a[j>>0]|0)!=0?(f=a[e+433>>0]|0,l=f&255,(f&255)<6):0)?(c[e+216>>2]&2|0)!=0:0)?(IE(q,(c[h>>2]|0)+1|0,l),(c[q>>2]|0)==0):0){HE(e);i=t;return}if(c[e+216>>2]|0)hE(e,q);g=a[k>>0]|0;if(g<<24>>24!=(a[e+438>>0]|0))LB(e,266088);if(g<<24>>24!=(a[e+443>>0]|0))LB(e,266088);do if(((c[e+708>>2]&4|0)!=0?(a[e+712>>0]|0)==64:0)?(o=(c[h>>2]|0)+1|0,r=c[q>>2]|0,m=b[p>>1]|0,n=m&255,(n&2)!=0):0){g=(m&65535)>>>8&255;if(g<<24>>24==8){if(n<<24>>24==6)h=4;else if(n<<24>>24==2)h=3;else break;if(!r)break;else{j=0;g=o}while(1){l=d[g+1>>0]|0;a[g>>0]=(d[g>>0]|0)-l;m=g+2|0;a[m>>0]=(d[m>>0]|0)-l;j=j+1|0;if((j|0)==(r|0))break;else g=g+h|0}}else if(g<<24>>24==16){if(n<<24>>24==2)h=6;else if(n<<24>>24==6)h=8;else break;if(!r)break;else{j=0;g=o}while(1){o=g+1|0;l=d[g+2>>0]<<8|d[g+3>>0];f=g+4|0;m=g+5|0;k=(d[g>>0]<<8|d[o>>0])-l|0;l=(d[f>>0]<<8|d[m>>0])-l|0;a[g>>0]=k>>>8;a[o>>0]=k;a[f>>0]=l>>>8;a[m>>0]=l;j=j+1|0;if((j|0)==(r|0))break;else g=g+h|0}}else break}while(0);if((a[p>>0]|0)==3?(c[e+424>>2]|0)>-1:0)TD(e,q);JE(e,q);g=c[e+548>>2]|0;if(!g){i=t;return}Ud[g&255](e,c[s>>2]|0,d[e+433>>0]|0);i=t;return}function cE(a){a=a|0;if(!a)return;if((c[a+372>>2]|0)>>>0>=(c[a+356>>2]|0)>>>0)return;nE(a,0,0,2);c[a+480>>2]=0;WD(a);return}function dE(b,d){b=b|0;d=d|0;var e=0;if(!b)return;e=c[b>>2]|0;if(!e)return;iB(e,d);c[b>>2]=0;if(c[e+212>>2]&2)tH(e+224|0)|0;kE(e,e+280|0);b=e+384|0;qC(e,c[b>>2]|0);c[b>>2]=0;b=e+380|0;qC(e,c[b>>2]|0);d=e+388|0;qC(e,c[d>>2]|0);qC(e,c[e+392>>2]|0);qC(e,c[e+396>>2]|0);qC(e,c[e+400>>2]|0);c[b>>2]=0;a[e+621>>0]=0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;a[e+620>>0]=1;d=e+624|0;b=c[d>>2]|0;if(b){c[d>>2]=0;qC(e,b)}d=e+628|0;b=c[d>>2]|0;if(b){c[d>>2]=0;qC(e,b)}d=e+632|0;b=c[d>>2]|0;if(b){c[d>>2]=0;qC(e,b)}d=e+636|0;qC(e,c[d>>2]|0);b=e+640|0;qC(e,c[b>>2]|0);c[d>>2]=0;c[b>>2]=0;b=e+696|0;qC(e,c[b>>2]|0);c[b>>2]=0;pC(e);return}function eE(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;if(!b)return;if(!(((e|0)==64?(c[b+708>>2]&4|0)!=0:0)|(e|0)==0))LB(b,266280);switch(f&255|0){case 2:{a[b+434>>0]=32;f=32;break}case 3:{a[b+434>>0]=64;f=64;break}case 4:{a[b+434>>0]=-128;f=-128;break}case 1:{a[b+434>>0]=16;f=16;break}case 0:{g=5;break}case 7:case 6:case 5:{WB(b,266128);g=5;break}default:{f=f&255;a[b+434>>0]=f}}if((g|0)==5){a[b+434>>0]=8;f=8}if(!(c[b+384>>2]|0))return;e=b+434|0;if((f&16)!=0?(h=b+388|0,(c[h>>2]|0)==0):0){f=sC(b,(c[b+364>>2]|0)+1|0)|0;c[h>>2]=f;a[f>>0]=1;f=a[e>>0]|0}do if((f&32)!=0?(i=b+392|0,(c[i>>2]|0)==0):0)if(!(c[b+380>>2]|0)){OB(b,266160);f=(d[e>>0]|0)&223;a[e>>0]=f;break}else{f=sC(b,(c[b+364>>2]|0)+1|0)|0;c[i>>2]=f;a[f>>0]=2;f=a[e>>0]|0;break}while(0);do if((f&64)!=0?(j=b+396|0,(c[j>>2]|0)==0):0)if(!(c[b+380>>2]|0)){OB(b,266200);f=(d[e>>0]|0)&191;a[e>>0]=f;break}else{f=sC(b,(c[b+364>>2]|0)+1|0)|0;c[j>>2]=f;a[f>>0]=3;f=a[e>>0]|0;break}while(0);do if(f<<24>>24<0){f=b+400|0;if(c[f>>2]|0)return;if(!(c[b+380>>2]|0)){OB(b,266240);f=(d[e>>0]|0)&127;a[e>>0]=f;break}else{b=sC(b,(c[b+364>>2]|0)+1|0)|0;c[f>>2]=b;a[b>>0]=4;f=a[e>>0]|0;break}}while(0);if(f<<24>>24)return;a[e>>0]=8;return}function fE(a,b){a=a|0;b=b|0;if(!a)return;c[a+288>>2]=b;return}function gE(a,b){a=a|0;b=b|0;var d=0;if(!a)return;d=a+212|0;c[d>>2]=c[d>>2]|1;c[a+304>>2]=b;return}function hE(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=i;i=i+32|0;v=x+16|0;u=x;if(!b){i=x;return}w=b+216|0;f=c[w>>2]|0;if((f&1048576|0)!=0?(j=c[b+196>>2]|0,(j|0)!=0):0){Ud[j&255](b,e,(c[b+384>>2]|0)+1|0);f=c[w>>2]|0}if(f&32768){RD(e,(c[b+384>>2]|0)+1|0,(c[b+212>>2]|0)>>>7&1^1);f=c[w>>2]|0}if(f&65536){QD(e,(c[b+384>>2]|0)+1|0);f=c[w>>2]|0}if(((f&4|0)!=0?(n=c[b+384>>2]|0,h=n+1|0,p=a[b+436>>0]|0,q=p&255,r=e+9|0,(a[r>>0]|0)==8):0)?(s=e+10|0,(a[s>>0]|0)==1):0){if((q|0)==1){k=c[e>>2]|0;if(k){g=h;l=0;j=128;f=0;while(1){f=((a[h>>0]|0)==0?0:j)|f;if((j|0)>1)j=j>>1;else{a[g>>0]=f;g=g+1|0;j=128;f=0}l=l+1|0;if((l|0)==(k|0))break;else{y=h;h=n+2|0;n=y}}if((j|0)!=128){a[g>>0]=f;f=e}else f=e}else f=e}else if((q|0)==2){k=c[e>>2]|0;if(k){g=h;l=0;j=6;f=0;while(1){f=(d[h>>0]&3)<>0]=f;g=g+1|0;j=6;f=0}else j=j+-2|0;l=l+1|0;if((l|0)==(k|0))break;else{y=h;h=n+2|0;n=y}}if((j|0)!=6){a[g>>0]=f;f=e}else f=e}else f=e}else if((q|0)==4?(k=c[e>>2]|0,(k|0)!=0):0){g=h;l=0;j=4;f=0;while(1){f=(d[h>>0]&15)<>0]=f;g=g+1|0;j=4;f=0}else j=j+-4|0;l=l+1|0;if((l|0)==(k|0))break;else{y=h;h=n+2|0;n=y}}if((j|0)!=4){a[g>>0]=f;f=e}else f=e}else f=e;a[r>>0]=p;j=da(d[s>>0]|0,q)|0;a[e+11>>0]=j;j=j&255;f=c[f>>2]|0;if(j>>>0>7)f=da(j>>>3,f)|0;else f=((da(j,f)|0)+7|0)>>>3;c[e+4>>2]=f;f=c[w>>2]|0}if(f&16){PD(e,(c[b+384>>2]|0)+1|0);f=c[w>>2]|0}a:do if((f&8|0)!=0?(m=c[b+384>>2]|0,o=m+1|0,t=a[e+8>>0]|0,t<<24>>24!=3):0){g=a[e+9>>0]|0;f=g&255;if(!(t&2)){j=d[b+524>>0]|0;c[v>>2]=f-j;c[u>>2]=j;j=1}else{j=d[b+521>>0]|0;c[v>>2]=f-j;c[u>>2]=j;j=d[b+522>>0]|0;c[v+4>>2]=f-j;c[u+4>>2]=j;j=d[b+523>>0]|0;c[v+8>>2]=f-j;c[u+8>>2]=j;j=3}if(t&4){y=d[b+525>>0]|0;c[v+(j<<2)>>2]=f-y;c[u+(j<<2)>>2]=y;j=j+1|0}if((g&255)<8){q=c[e+4>>2]|0;f=a[b+524>>0]|0;if(f<<24>>24==1&g<<24>>24==2)p=85;else p=g<<24>>24==4&f<<24>>24==3?17:255;if(!q)break;n=0;while(1){h=d[o>>0]|0;f=c[v>>2]|0;k=c[u>>2]|0;l=0-k|0;if((f|0)>(l|0)){g=f;f=0;do{if((g|0)>0)j=h<>>(0-g|0)&p;f=j|f;g=g-k|0}while((g|0)>(l|0));f=f&255}else f=0;a[o>>0]=f;n=n+1|0;if((n|0)==(q|0))break a;else{y=o;o=m+2|0;m=y}}}q=da(c[e>>2]|0,j)|0;f=(q|0)==0;if(g<<24>>24!=8){if(f)break;else p=0;while(1){k=(p>>>0)%(j>>>0)|0;n=o+1|0;l=d[o>>0]<<8|d[n>>0];f=c[v+(k<<2)>>2]|0;k=c[u+(k<<2)>>2]|0;m=0-k|0;if((f|0)>(m|0)){h=f;f=0;do{if((h|0)>0)g=l<>>(0-h|0);f=g|f;h=h-k|0}while((h|0)>(m|0))}else f=0;a[o>>0]=f>>>8;a[n>>0]=f;p=p+1|0;if((p|0)==(q|0))break a;else o=o+2|0}}if(!f){p=m;n=0;while(1){k=(n>>>0)%(j>>>0)|0;l=d[o>>0]|0;f=c[v+(k<<2)>>2]|0;k=c[u+(k<<2)>>2]|0;m=0-k|0;if((f|0)>(m|0)){h=f;f=0;do{if((h|0)>0)g=l<>>(0-h|0);f=g|f;h=h-k|0}while((h|0)>(m|0));f=f&255}else f=0;a[o>>0]=f;n=n+1|0;if((n|0)==(q|0))break;else{y=o;o=p+2|0;p=y}}}}while(0);do if(c[w>>2]&131072){j=(c[b+384>>2]|0)+1|0;f=a[e+8>>0]|0;if(f<<24>>24==6){h=c[e>>2]|0;f=(h|0)==0;if((a[e+9>>0]|0)==8){if(f)break;else{g=0;f=j}while(1){t=f+1|0;v=a[f>>0]|0;u=f+2|0;a[f>>0]=a[t>>0]|0;y=f+3|0;a[t>>0]=a[u>>0]|0;a[u>>0]=a[y>>0]|0;a[y>>0]=v;g=g+1|0;if((g|0)==(h|0))break;else f=f+4|0}}else{if(f)break;else{g=0;f=j}while(1){s=f+1|0;t=a[f>>0]|0;u=f+2|0;v=a[s>>0]|0;y=f+3|0;a[f>>0]=a[u>>0]|0;r=f+4|0;a[s>>0]=a[y>>0]|0;s=f+5|0;a[u>>0]=a[r>>0]|0;u=f+6|0;a[y>>0]=a[s>>0]|0;y=f+7|0;a[r>>0]=a[u>>0]|0;a[s>>0]=a[y>>0]|0;a[u>>0]=t;a[y>>0]=v;g=g+1|0;if((g|0)==(h|0))break;else f=f+8|0}}}else if(f<<24>>24==4){h=c[e>>2]|0;f=(h|0)==0;if((a[e+9>>0]|0)==8){if(f)break;else{f=j;g=0}while(1){y=f+1|0;v=a[f>>0]|0;a[f>>0]=a[y>>0]|0;a[y>>0]=v;g=g+1|0;if((g|0)==(h|0))break;else f=f+2|0}}else{if(f)break;else{f=j;g=0}while(1){s=f+1|0;t=a[f>>0]|0;u=f+2|0;v=a[s>>0]|0;y=f+3|0;a[f>>0]=a[u>>0]|0;a[s>>0]=a[y>>0]|0;a[u>>0]=t;a[y>>0]=v;g=g+1|0;if((g|0)==(h|0))break;else f=f+4|0}}}else break}while(0);do if(c[w>>2]&524288){j=(c[b+384>>2]|0)+1|0;f=a[e+8>>0]|0;if(f<<24>>24==6){h=c[e>>2]|0;f=(h|0)==0;if((a[e+9>>0]|0)==8){if(f)break;else{g=0;f=j}while(1){y=f+3|0;a[y>>0]=d[y>>0]^255;g=g+1|0;if((g|0)==(h|0))break;else f=f+4|0}}else{if(f)break;else{g=0;f=j}while(1){v=f+6|0;y=f+7|0;a[v>>0]=d[v>>0]^255;a[y>>0]=d[y>>0]^255;g=g+1|0;if((g|0)==(h|0))break;else f=f+8|0}}}else if(f<<24>>24==4){h=c[e>>2]|0;f=(h|0)==0;if((a[e+9>>0]|0)==8){if(f)break;else{f=j;g=0}while(1){y=f+1|0;a[y>>0]=d[y>>0]^255;g=g+1|0;if((g|0)==(h|0))break;else f=f+2|0}}else{if(f)break;else{g=0;f=j}while(1){v=f+2|0;y=f+3|0;a[v>>0]=d[v>>0]^255;a[y>>0]=d[y>>0]^255;g=g+1|0;if((g|0)==(h|0))break;else f=f+4|0}}}else break}while(0);f=c[w>>2]|0;if(f&1){SD(e,(c[b+384>>2]|0)+1|0);f=c[w>>2]|0}if(!(f&32)){i=x;return}OD(e,(c[b+384>>2]|0)+1|0);i=x;return}function iE(a){a=a|0;var b=0,e=0,f=0,g=0;b=i;i=i+16|0;g=b;e=g;c[e>>2]=1196314761;c[e+4>>2]=169478669;c[a+800>>2]=18;e=a+441|0;f=d[e>>0]|0;UD(a,g+f|0,8-f|0);if((d[e>>0]|0)>=3){i=b;return}g=a+208|0;c[g>>2]=c[g>>2]|4096;i=b;return}function jE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+16|0;l=m;h=a[d>>0]|0;j=a[d+1>>0]|0;k=a[d+2>>0]|0;d=a[d+3>>0]|0;if(!b){i=m;return}if((f|0)<0)LB(b,268184);g=b+800|0;c[g>>2]=34;a[l>>0]=f>>>24;a[l+1>>0]=f>>>16;a[l+2>>0]=f>>>8;a[l+3>>0]=f;n=l+4|0;a[n>>0]=h;a[l+5>>0]=j;a[l+6>>0]=k;a[l+7>>0]=d;UD(b,l,8);c[b+376>>2]=(j&255)<<16|(h&255)<<24|(k&255)<<8|d&255;dB(b);eB(b,n,4);c[g>>2]=66;if((e|0)!=0&(f|0)!=0){UD(b,e,f);eB(b,e,f)}c[g>>2]=130;n=c[b+412>>2]|0;a[l>>0]=n>>>24;a[l+1>>0]=n>>>16;a[l+2>>0]=n>>>8;a[l+3>>0]=n;UD(b,l,4);i=m;return}function kE(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;if(!d)return;c[b>>2]=0;do{b=d;d=c[d>>2]|0;qC(a,b)}while((d|0)!=0);return}function lE(b,e,f,g,h,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;r=s+16|0;q=s;a:do switch(h|0){case 0:{switch(g|0){case 16:case 8:case 4:case 2:case 1:{a[b+439>>0]=1;break a}default:LB(b,266352)}break}case 4:{if((g|0)==8|(g|0)==16){a[b+439>>0]=2;break a}else LB(b,266464);break}case 2:{if((g|0)==8|(g|0)==16){a[b+439>>0]=3;break a}else LB(b,266392);break}case 3:{if((g|0)==8|(g|0)==4|(g|0)==2|(g|0)==1){a[b+439>>0]=1;break a}else LB(b,266424);break}case 6:{if((g|0)==8|(g|0)==16){a[b+439>>0]=4;break a}else LB(b,266512);break}default:LB(b,266552)}while(0);if(j)OB(b,266592);if((c[b+708>>2]&4|0)!=0?(c[b+208>>2]&4096|0)==0:0){if(((k|0)!=64|(h&-5|0)!=2)&(k|0)!=0)m=24}else if(!k)k=0;else m=24;if((m|0)==24){OB(b,266632);k=0}if(l>>>0>1){OB(b,266664);l=1}n=g&255;p=b+436|0;a[p>>0]=n;h=h&255;o=b+435|0;a[o>>0]=h;l=l&255;a[b+432>>0]=l;m=k&255;a[b+712>>0]=m;a[b+744>>0]=0;c[b+348>>2]=e;c[b+352>>2]=f;k=a[b+439>>0]|0;j=da(k&255,g)|0;a[b+438>>0]=j;j=j&255;if(j>>>0>7)j=da(j>>>3,e)|0;else j=((da(j,e)|0)+7|0)>>>3;c[b+364>>2]=j;c[b+360>>2]=e;a[b+437>>0]=n;a[b+440>>0]=k;a[q>>0]=e>>>24;a[q+1>>0]=e>>>16;a[q+2>>0]=e>>>8;a[q+3>>0]=e;a[q+4>>0]=f>>>24;a[q+5>>0]=f>>>16;a[q+6>>0]=f>>>8;a[q+7>>0]=f;a[q+8>>0]=n;a[q+9>>0]=h;a[q+10>>0]=0;a[q+11>>0]=m;a[q+12>>0]=l;if(b){e=b+800|0;c[e>>2]=34;a[r>>0]=0;a[r+1>>0]=0;a[r+2>>0]=0;a[r+3>>0]=13;f=r+4|0;a[f>>0]=73;a[r+5>>0]=72;a[r+6>>0]=68;a[r+7>>0]=82;UD(b,r,8);c[b+376>>2]=1229472850;dB(b);eB(b,f,4);c[e>>2]=66;UD(b,q,13);eB(b,q,13);c[e>>2]=130;e=c[b+412>>2]|0;a[r>>0]=e>>>24;a[r+1>>0]=e>>>16;a[r+2>>0]=e>>>8;a[r+3>>0]=e;UD(b,r,4)}j=b+434|0;if(a[j>>0]|0){b=b+208|0;c[b>>2]=1;i=s;return}if((a[o>>0]|0)!=3?(d[p>>0]|0)>=8:0){a[j>>0]=-8;b=b+208|0;c[b>>2]=1;i=s;return}a[j>>0]=8;b=b+208|0;c[b>>2]=1;i=s;return}function mE(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;n=o+12|0;h=o;m=o+8|0;g=a[d+435>>0]|0;if(f>>>0>256?1:(c[d+708>>2]&1|f|0)==0){if(g<<24>>24==3)LB(d,266704);OB(d,266704);i=o;return}if(!(g&2)){OB(d,266744);i=o;return}b[d+420>>1]=f;g=f*3|0;l=(d|0)==0;if(!l){j=d+800|0;c[j>>2]=34;a[h>>0]=g>>>24;a[h+1>>0]=g>>>16;a[h+2>>0]=g>>>8;a[h+3>>0]=g;k=h+4|0;a[k>>0]=80;a[h+5>>0]=76;a[h+6>>0]=84;a[h+7>>0]=69;UD(d,h,8);c[d+376>>2]=1347179589;dB(d);eB(d,k,4);c[j>>2]=66}if(f){j=m+1|0;k=m+2|0;if(l){h=0;g=e;while(1){a[m>>0]=a[g>>0]|0;a[j>>0]=a[g+1>>0]|0;a[k>>0]=a[g+2>>0]|0;h=h+1|0;if((h|0)==(f|0))break;else g=g+3|0}}else{h=0;g=e;while(1){a[m>>0]=a[g>>0]|0;a[j>>0]=a[g+1>>0]|0;a[k>>0]=a[g+2>>0]|0;UD(d,m,3);eB(d,m,3);h=h+1|0;if((h|0)==(f|0))break;else g=g+3|0}}}if(!l){c[d+800>>2]=130;m=c[d+412>>2]|0;a[n>>0]=m>>>24;a[n+1>>0]=m>>>16;a[n+2>>0]=m>>>8;a[n+3>>0]=m;UD(d,n,4)}d=d+208|0;c[d>>2]=c[d>>2]|2;i=o;return}function nE(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;V=i;i=i+16|0;U=V+8|0;G=V;T=b+220|0;do if((c[T>>2]|0)!=1229209940){m=b+280|0;l=c[m>>2]|0;if(l){k=c[l>>2]|0;if(k){c[l>>2]=0;do{O=k;k=c[k>>2]|0;qC(b,O)}while((k|0)!=0)}}else{O=sC(b,(c[b+284>>2]|0)+4|0)|0;c[m>>2]=O;c[O>>2]=0}if(!(GP(b,1229209940,FP(b)|0)|0)){R=b+236|0;c[R>>2]=(c[m>>2]|0)+4;J=b+284|0;S=b+240|0;c[S>>2]=c[J>>2];I=m;break}else LB(b,c[b+248>>2]|0)}else{I=b+280|0;J=b+284|0;R=b+236|0;S=b+240|0}while(0);B=b+224|0;c[B>>2]=e;p=b+228|0;c[p>>2]=0;K=b+208|0;H=b+744|0;L=(b|0)==0;q=(g|0)!=0;M=b+800|0;r=U+1|0;s=U+2|0;t=U+3|0;u=U+4|0;v=U+5|0;w=U+6|0;x=U+7|0;N=b+376|0;O=b+412|0;y=G+1|0;z=G+2|0;A=G+3|0;o=f;while(1){c[p>>2]=o;l=wH(B,g)|0;o=c[p>>2]|0;c[p>>2]=0;f=c[S>>2]|0;if(!f){m=c[I>>2]|0;n=m+4|0;f=c[J>>2]|0;if(((((c[K>>2]&4|0)==0?(a[H>>0]|0)==0:0)?(C=FP(b)|0,C>>>0<16385):0)?(D=d[n>>0]|0,(D&15|0)==8&(D&240)>>>0<113):0)?(E=D>>>4,F=1<>>0>=C>>>0):0){e=F;k=E;do{e=e>>>1;k=k+-1|0}while(!((k|0)==0|e>>>0>>0));e=k<<4|8;a[n>>0]=e;m=m+5|0;k=d[m>>0]&224;a[m>>0]=(k|(((k|e<<8)>>>0)%31|0))^31}if(!L){if((f|0)<0){k=22;break}c[M>>2]=34;a[U>>0]=f>>>24;a[r>>0]=f>>>16;a[s>>0]=f>>>8;a[t>>0]=f;a[u>>0]=73;a[v>>0]=68;a[w>>0]=65;a[x>>0]=84;UD(b,U,8);c[N>>2]=1229209940;dB(b);eB(b,u,4);c[M>>2]=66;if(f){UD(b,n,f);eB(b,n,f)}c[M>>2]=130;m=c[O>>2]|0;a[G>>0]=m>>>24;a[y>>0]=m>>>16;a[z>>0]=m>>>8;a[A>>0]=m;UD(b,G,4)}c[K>>2]=c[K>>2]|4;c[R>>2]=n;c[S>>2]=f;if((l|0)==0&q)continue}if(l){k=31;break}if(!o){k=29;break}}if((k|0)==22)LB(b,268184);else if((k|0)==29)if((g|0)==4)LB(b,266800);else{i=V;return}else if((k|0)==31){if(!((l|0)==1&(g|0)==4)){oB(b,l);LB(b,c[b+248>>2]|0)}e=c[I>>2]|0;m=e+4|0;l=c[J>>2]|0;k=l-f|0;if(((((c[K>>2]&4|0)==0?(a[H>>0]|0)==0:0)?(Q=FP(b)|0,Q>>>0<16385):0)?(P=d[m>>0]|0,(P&15|0)==8&(P&240)>>>0<113):0)?(h=P>>>4,j=1<>>0>=Q>>>0):0){do{j=j>>>1;h=h+-1|0}while(!((h|0)==0|j>>>0>>0));J=h<<4|8;a[m>>0]=J;P=e+5|0;g=d[P>>0]&224;a[P>>0]=(g|(((g|J<<8)>>>0)%31|0))^31}if(!L){if((k|0)<0)LB(b,268184);c[M>>2]=34;a[U>>0]=k>>>24;a[U+1>>0]=k>>>16;a[U+2>>0]=k>>>8;a[U+3>>0]=k;P=U+4|0;a[P>>0]=73;a[U+5>>0]=68;a[U+6>>0]=65;a[U+7>>0]=84;UD(b,U,8);c[N>>2]=1229209940;dB(b);eB(b,P,4);c[M>>2]=66;if((l|0)!=(f|0)){UD(b,m,k);eB(b,m,k)}c[M>>2]=130;P=c[O>>2]|0;a[U>>0]=P>>>24;a[U+1>>0]=P>>>16;a[U+2>>0]=P>>>8;a[U+3>>0]=P;UD(b,U,4)}c[S>>2]=0;c[R>>2]=0;c[K>>2]=c[K>>2]|12;c[T>>2]=0;i=V;return}}function oE(b){b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;d=e;if(!b){b=b+208|0;d=c[b>>2]|0;d=d|16;c[b>>2]=d;i=e;return}f=b+800|0;c[f>>2]=34;g=d+4|0;c[d>>2]=0;a[g>>0]=73;a[d+5>>0]=69;a[d+6>>0]=78;a[d+7>>0]=68;UD(b,d,8);c[b+376>>2]=1229278788;dB(b);eB(b,g,4);c[f>>2]=130;f=c[b+412>>2]|0;a[d>>0]=f>>>24;a[d+1>>0]=f>>>16;a[d+2>>0]=f>>>8;a[d+3>>0]=f;UD(b,d,4);b=b+208|0;d=c[b>>2]|0;d=d|16;c[b>>2]=d;i=e;return}function pE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;f=g+8|0;e=g;a[e>>0]=d>>>24;a[e+1>>0]=d>>>16;a[e+2>>0]=d>>>8;a[e+3>>0]=d;if(!b){i=g;return}d=b+800|0;c[d>>2]=34;a[f>>0]=0;a[f+1>>0]=0;a[f+2>>0]=0;a[f+3>>0]=4;h=f+4|0;a[h>>0]=103;a[f+5>>0]=65;a[f+6>>0]=77;a[f+7>>0]=65;UD(b,f,8);c[b+376>>2]=1732332865;dB(b);eB(b,h,4);c[d>>2]=66;UD(b,e,4);eB(b,e,4);c[d>>2]=130;d=c[b+412>>2]|0;a[f>>0]=d>>>24;a[f+1>>0]=d>>>16;a[f+2>>0]=d>>>8;a[f+3>>0]=d;UD(b,f,4);i=g;return}function qE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;f=g+8|0;e=g;if((d|0)>3)OB(b,266840);a[e>>0]=d;if(!b){i=g;return}d=b+800|0;c[d>>2]=34;a[f>>0]=0;a[f+1>>0]=0;a[f+2>>0]=0;a[f+3>>0]=1;h=f+4|0;a[h>>0]=115;a[f+5>>0]=82;a[f+6>>0]=71;a[f+7>>0]=66;UD(b,f,8);c[b+376>>2]=1934772034;dB(b);eB(b,h,4);c[d>>2]=66;UD(b,e,1);eB(b,e,1);c[d>>2]=130;d=c[b+412>>2]|0;a[f>>0]=d>>>24;a[f+1>>0]=d>>>16;a[f+2>>0]=d>>>8;a[f+3>>0]=d;UD(b,f,4);i=g;return}function rE(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+1136|0;m=q+1128|0;p=q+1120|0;k=q+1036|0;o=q;if(!f)LB(b,266880);g=d[f+3>>0]|0;h=(d[f+1>>0]|0)<<16|(d[f>>0]|0)<<24|(d[f+2>>0]|0)<<8|g;if(h>>>0<132)LB(b,266912);if(!((d[f+8>>0]|0)<4|(g&3|0)==0))LB(b,266936);g=HP(b,e,k)|0;if(!g)LB(b,266992);a[k+(g+1)>>0]=0;e=g+2|0;c[o>>2]=f;c[o+4>>2]=h;f=o+8|0;c[f>>2]=0;if(IP(b,1766015824,o,e)|0)LB(b,c[b+248>>2]|0);g=(c[f>>2]|0)+e|0;n=(b|0)==0;if(!n){l=b+800|0;c[l>>2]=34;a[m>>0]=g>>>24;a[m+1>>0]=g>>>16;a[m+2>>0]=g>>>8;a[m+3>>0]=g;j=m+4|0;a[j>>0]=105;a[m+5>>0]=67;a[m+6>>0]=67;a[m+7>>0]=80;UD(b,m,8);c[b+376>>2]=1766015824;dB(b);eB(b,j,4);c[l>>2]=66;if(!e)m=1;else{UD(b,k,e);eB(b,k,e);m=1}}else m=0;l=b+284|0;j=1024;k=b+280|0;g=o+12|0;h=c[f>>2]|0;while(1){f=c[k>>2]|0;e=j>>>0>h>>>0?h:j;if(m&(e|0)!=0){UD(b,g,e);eB(b,g,e)}g=(h|0)==(e|0);if(g|(f|0)==0)break;j=c[l>>2]|0;k=f;g=f+4|0;h=h-e|0}if(!g)LB(b,267968);if(n){i=q;return}c[b+800>>2]=130;o=c[b+412>>2]|0;a[p>>0]=o>>>24;a[p+1>>0]=o>>>16;a[p+2>>0]=o>>>8;a[p+3>>0]=o;UD(b,p,4);i=q;return}function sE(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+112|0;y=A+100|0;h=A;j=A+8|0;z=A+88|0;v=e+4|0;w=(a[v>>0]|0)==8?6:10;x=e+12|0;f=c[x>>2]|0;g=HP(d,c[e>>2]|0,j)|0;if(!g)LB(d,267016);f=g+2+(da(w,f)|0)|0;u=(d|0)==0;if(u)t=0;else{t=d+800|0;c[t>>2]=34;a[h>>0]=f>>>24;a[h+1>>0]=f>>>16;a[h+2>>0]=f>>>8;a[h+3>>0]=f;f=h+4|0;a[f>>0]=115;a[h+5>>0]=80;a[h+6>>0]=76;a[h+7>>0]=84;UD(d,h,8);c[d+376>>2]=1934642260;dB(d);eB(d,f,4);c[t>>2]=66;f=g+1|0;if(f){UD(d,j,f);eB(d,j,f)}UD(d,v,1);eB(d,v,1);t=1}e=e+8|0;f=c[x>>2]|0;if((f|0)>0){h=c[e>>2]|0;k=z+1|0;l=z+2|0;m=z+3|0;n=z+4|0;o=z+5|0;p=z+6|0;q=z+7|0;r=z+8|0;s=z+9|0;j=h;do{g=b[h>>1]|0;if((a[v>>0]|0)==8){a[z>>0]=g;a[k>>0]=b[h+2>>1];a[l>>0]=b[h+4>>1];a[m>>0]=b[h+6>>1];g=b[h+8>>1]|0;a[n>>0]=(g&65535)>>>8;a[o>>0]=g}else{a[z>>0]=(g&65535)>>>8;a[k>>0]=g;g=b[h+2>>1]|0;a[l>>0]=(g&65535)>>>8;a[m>>0]=g;g=b[h+4>>1]|0;a[n>>0]=(g&65535)>>>8;a[o>>0]=g;g=b[h+6>>1]|0;a[p>>0]=(g&65535)>>>8;a[q>>0]=g;g=b[h+8>>1]|0;a[r>>0]=(g&65535)>>>8;a[s>>0]=g}if(t){UD(d,z,w);eB(d,z,w);j=c[e>>2]|0;f=c[x>>2]|0}h=h+10|0}while(h>>>0<(j+(f*10|0)|0)>>>0)}if(u){i=A;return}c[d+800>>2]=130;z=c[d+412>>2]|0;a[y>>0]=z>>>24;a[y+1>>0]=z>>>16;a[y+2>>0]=z>>>8;a[y+3>>0]=z;UD(d,y,4);i=A;return}function tE(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n+8|0;l=n;do if(!(f&2)){g=a[e+3>>0]|0;if(g<<24>>24!=0?(g&255)<=(d[b+437>>0]|0):0){a[l>>0]=g;g=1;break}OB(b,267040);i=n;return}else{if((f|0)==3)k=8;else k=a[b+437>>0]|0;j=a[e>>0]|0;if(((j+-1&255)<(k&255)?(g=a[e+1>>0]|0,(g+-1&255)<(k&255)):0)?(h=a[e+2>>0]|0,(h+-1&255)<(k&255)):0){a[l>>0]=j;a[l+1>>0]=g;a[l+2>>0]=h;g=3;break}OB(b,267040);i=n;return}while(0);do if(f&4){h=a[e+4>>0]|0;if(h<<24>>24!=0?(h&255)<=(d[b+437>>0]|0):0){a[l+g>>0]=h;g=g+1|0;break}OB(b,267040);i=n;return}while(0);if(!b){i=n;return}f=b+800|0;c[f>>2]=34;a[m>>0]=g>>>24;a[m+1>>0]=g>>>16;a[m+2>>0]=g>>>8;a[m+3>>0]=g;e=m+4|0;a[e>>0]=115;a[m+5>>0]=66;a[m+6>>0]=73;a[m+7>>0]=84;UD(b,m,8);c[b+376>>2]=1933723988;dB(b);eB(b,e,4);c[f>>2]=66;UD(b,l,g);eB(b,l,g);c[f>>2]=130;l=c[b+412>>2]|0;a[m>>0]=l>>>24;a[m+1>>0]=l>>>16;a[m+2>>0]=l>>>8;a[m+3>>0]=l;UD(b,m,4);i=n;return}function uE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+48|0;f=g+32|0;e=g;lB(e,c[d+24>>2]|0);lB(e+4|0,c[d+28>>2]|0);lB(e+8|0,c[d>>2]|0);lB(e+12|0,c[d+4>>2]|0);lB(e+16|0,c[d+8>>2]|0);lB(e+20|0,c[d+12>>2]|0);lB(e+24|0,c[d+16>>2]|0);lB(e+28|0,c[d+20>>2]|0);if(!b){i=g;return}d=b+800|0;c[d>>2]=34;a[f>>0]=0;a[f+1>>0]=0;a[f+2>>0]=0;a[f+3>>0]=32;h=f+4|0;a[h>>0]=99;a[f+5>>0]=72;a[f+6>>0]=82;a[f+7>>0]=77;UD(b,f,8);c[b+376>>2]=1665684045;dB(b);eB(b,h,4);c[d>>2]=66;UD(b,e,32);eB(b,e,32);c[d>>2]=130;d=c[b+412>>2]|0;a[f>>0]=d>>>24;a[f+1>>0]=d>>>16;a[f+2>>0]=d>>>8;a[f+3>>0]=d;UD(b,f,4);i=g;return}function vE(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0;n=i;i=i+16|0;m=n+8|0;l=n;if(!k){k=b[h+8>>1]|0;if((k&65535|0)<(1<>0]|0)){a[l>>0]=(k&65535)>>>8;a[l+1>>0]=k;g=f+800|0;c[g>>2]=34;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=2;h=m+4|0;a[h>>0]=116;a[m+5>>0]=82;a[m+6>>0]=78;a[m+7>>0]=83;UD(f,m,8);c[f+376>>2]=1951551059;dB(f);eB(f,h,4);c[g>>2]=66;UD(f,l,2);eB(f,l,2);c[g>>2]=130;l=c[f+412>>2]|0;a[m>>0]=l>>>24;a[m+1>>0]=l>>>16;a[m+2>>0]=l>>>8;a[m+3>>0]=l;UD(f,m,4);i=n;return}else{VB(f,267120);i=n;return}}else if((k|0)==3){if((j|0)>=1?(e[f+420>>1]|0)>=(j|0):0){if(!f){i=n;return}if((j|0)<0)LB(f,268184);k=f+800|0;c[k>>2]=34;a[m>>0]=j>>>24;a[m+1>>0]=j>>>16;a[m+2>>0]=j>>>8;a[m+3>>0]=j;l=m+4|0;a[l>>0]=116;a[m+5>>0]=82;a[m+6>>0]=78;a[m+7>>0]=83;UD(f,m,8);c[f+376>>2]=1951551059;dB(f);eB(f,l,4);c[k>>2]=66;if((g|0)!=0&(j|0)!=0){UD(f,g,j);eB(f,g,j)}c[k>>2]=130;l=c[f+412>>2]|0;a[m>>0]=l>>>24;a[m+1>>0]=l>>>16;a[m+2>>0]=l>>>8;a[m+3>>0]=l;UD(f,m,4);i=n;return}VB(f,267072);i=n;return}else if((k|0)==2){k=b[h+2>>1]|0;j=(k&65535)>>>8;a[l>>0]=j;a[l+1>>0]=k;k=b[h+4>>1]|0;g=(k&65535)>>>8;a[l+2>>0]=g;a[l+3>>0]=k;h=b[h+6>>1]|0;k=(h&65535)>>>8;a[l+4>>0]=k;a[l+5>>0]=h;do if((a[f+436>>0]|0)==8){if((g|j|k)<<16>>16){VB(f,267184);i=n;return}if(!f){i=n;return}else break}while(0);g=f+800|0;c[g>>2]=34;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=6;h=m+4|0;a[h>>0]=116;a[m+5>>0]=82;a[m+6>>0]=78;a[m+7>>0]=83;UD(f,m,8);c[f+376>>2]=1951551059;dB(f);eB(f,h,4);c[g>>2]=66;UD(f,l,6);eB(f,l,6);c[g>>2]=130;l=c[f+412>>2]|0;a[m>>0]=l>>>24;a[m+1>>0]=l>>>16;a[m+2>>0]=l>>>8;a[m+3>>0]=l;UD(f,m,4);i=n;return}else{VB(f,267248);i=n;return}}function wE(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;k=l+8|0;j=l;if((g|0)==3){h=b[e+420>>1]|0;if(h<<16>>16==0?(c[e+708>>2]&1|0)!=0:0)g=a[f>>0]|0;else{g=a[f>>0]|0;if((g&255)>>>0>=(h&65535)>>>0){OB(e,267288);i=l;return}}a[j>>0]=g;if(!e){i=l;return}f=e+800|0;c[f>>2]=34;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=1;h=k+4|0;a[h>>0]=98;a[k+5>>0]=75;a[k+6>>0]=71;a[k+7>>0]=68;UD(e,k,8);c[e+376>>2]=1649100612;dB(e);eB(e,h,4);c[f>>2]=66;UD(e,j,1);eB(e,j,1);c[f>>2]=130;f=c[e+412>>2]|0;a[k>>0]=f>>>24;a[k+1>>0]=f>>>16;a[k+2>>0]=f>>>8;a[k+3>>0]=f;UD(e,k,4);i=l;return}if(!(g&2)){g=b[f+8>>1]|0;if((g&65535|0)<(1<>0]|0)){a[j>>0]=(g&65535)>>>8;a[j+1>>0]=g;f=e+800|0;c[f>>2]=34;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=2;h=k+4|0;a[h>>0]=98;a[k+5>>0]=75;a[k+6>>0]=71;a[k+7>>0]=68;UD(e,k,8);c[e+376>>2]=1649100612;dB(e);eB(e,h,4);c[f>>2]=66;UD(e,j,2);eB(e,j,2);c[f>>2]=130;f=c[e+412>>2]|0;a[k>>0]=f>>>24;a[k+1>>0]=f>>>16;a[k+2>>0]=f>>>8;a[k+3>>0]=f;UD(e,k,4);i=l;return}else{OB(e,267392);i=l;return}}m=b[f+2>>1]|0;h=(m&65535)>>>8;a[j>>0]=h;a[j+1>>0]=m;m=b[f+4>>1]|0;g=(m&65535)>>>8;a[j+2>>0]=g;a[j+3>>0]=m;m=b[f+6>>1]|0;f=(m&65535)>>>8;a[j+4>>0]=f;a[j+5>>0]=m;if((a[e+436>>0]|0)==8?(g|h|f)<<16>>16!=0:0){OB(e,267328);i=l;return}if(!e){i=l;return}f=e+800|0;c[f>>2]=34;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=6;m=k+4|0;a[m>>0]=98;a[k+5>>0]=75;a[k+6>>0]=71;a[k+7>>0]=68;UD(e,k,8);c[e+376>>2]=1649100612;dB(e);eB(e,m,4);c[f>>2]=66;UD(e,j,6);eB(e,j,6);c[f>>2]=130;f=c[e+412>>2]|0;a[k>>0]=f>>>24;a[k+1>>0]=f>>>16;a[k+2>>0]=f>>>8;a[k+3>>0]=f;UD(e,k,4);i=l;return}function xE(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+16|0;m=o+8|0;l=o;if((e[d+420>>1]|0|0)<(g|0)){OB(d,267456);i=o;return}k=d+800|0;c[k>>2]=34;a[m>>0]=g>>>23;a[m+1>>0]=g>>>15;a[m+2>>0]=g>>>7;a[m+3>>0]=g<<1;n=m+4|0;a[n>>0]=104;a[m+5>>0]=73;a[m+6>>0]=83;a[m+7>>0]=84;UD(d,m,8);c[d+376>>2]=1749635924;dB(d);eB(d,n,4);c[k>>2]=66;if((g|0)>0){h=l+1|0;j=(d|0)==0;n=0;do{p=b[f+(n<<1)>>1]|0;a[l>>0]=(p&65535)>>>8;a[h>>0]=p;if(!j){UD(d,l,2);eB(d,l,2)}n=n+1|0}while((n|0)!=(g|0))}c[k>>2]=130;p=c[d+412>>2]|0;a[m>>0]=p>>>24;a[m+1>>0]=p>>>16;a[m+2>>0]=p>>>8;a[m+3>>0]=p;UD(d,m,4);i=o;return}function yE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+96|0;j=l+88|0;h=l;k=l+8|0;f=HP(b,d,k)|0;if(!f)LB(b,267504);if((e|0)!=0?(a[e>>0]|0)!=0:0){d=tfa(e|0)|0;if(d>>>0>(2147483646-f|0)>>>0)LB(b,267528);else m=d}else m=0;d=f+1|0;g=d+m|0;f=(b|0)==0;if(f){i=l;return}n=b+800|0;c[n>>2]=34;a[h>>0]=g>>>24;a[h+1>>0]=g>>>16;a[h+2>>0]=g>>>8;a[h+3>>0]=g;g=h+4|0;a[g>>0]=116;a[h+5>>0]=69;a[h+6>>0]=88;a[h+7>>0]=116;UD(b,h,8);c[b+376>>2]=1950701684;dB(b);eB(b,g,4);c[n>>2]=66;if(d){UD(b,k,d);eB(b,k,d)}if((m|0)!=0&(e|0)!=0){UD(b,e,m);eB(b,e,m)}if(f){i=l;return}c[b+800>>2]=130;n=c[b+412>>2]|0;a[j>>0]=n>>>24;a[j+1>>0]=n>>>16;a[j+2>>0]=n>>>8;a[j+3>>0]=n;UD(b,j,4);i=l;return}function zE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+1136|0;l=p+1128|0;o=p+1120|0;j=p+1036|0;n=p;if((f|0)==-1){yE(b,d,e,0);i=p;return}else if(!f){f=HP(b,d,j)|0;if(!f)LB(b,267584);a[j+(f+1)>>0]=0;d=f+2|0;if(!e)f=0;else f=tfa(e|0)|0;c[n>>2]=e;c[n+4>>2]=f;g=n+8|0;c[g>>2]=0;if(IP(b,2052348020,n,d)|0)LB(b,c[b+248>>2]|0);f=(c[g>>2]|0)+d|0;m=(b|0)==0;if(!m){k=b+800|0;c[k>>2]=34;a[l>>0]=f>>>24;a[l+1>>0]=f>>>16;a[l+2>>0]=f>>>8;a[l+3>>0]=f;h=l+4|0;a[h>>0]=122;a[l+5>>0]=84;a[l+6>>0]=88;a[l+7>>0]=116;UD(b,l,8);c[b+376>>2]=2052348020;dB(b);eB(b,h,4);c[k>>2]=66;if(!d)l=1;else{UD(b,j,d);eB(b,j,d);l=1}}else l=0;k=b+284|0;h=1024;j=b+280|0;f=n+12|0;g=c[g>>2]|0;while(1){d=c[j>>2]|0;e=h>>>0>g>>>0?g:h;if(l&(e|0)!=0){UD(b,f,e);eB(b,f,e)}f=(g|0)==(e|0);if(f|(d|0)==0)break;h=c[k>>2]|0;j=d;f=d+4|0;g=g-e|0}if(!f)LB(b,267968);if(m){i=p;return}c[b+800>>2]=130;n=c[b+412>>2]|0;a[o>>0]=n>>>24;a[o+1>>0]=n>>>16;a[o+2>>0]=n>>>8;a[o+3>>0]=n;UD(b,o,4);i=p;return}else LB(b,267552)}function AE(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+1136|0;r=w+1128|0;v=w+1120|0;s=w+1036|0;u=w;e=HP(b,e,s)|0;if(!e)LB(b,267608);if((d|0)==2|(d|0)==0){k=e+1|0;a[s+k>>0]=1;t=1}else if((d|0)==-1|(d|0)==1){k=e+1|0;a[s+k>>0]=0;t=0}else LB(b,267632);a[s+(k+1)>>0]=0;o=k+2|0;l=(f|0)==0?356424:f;n=(tfa(l|0)|0)+1|0;g=(g|0)==0?356424:g;j=(tfa(g|0)|0)+1|0;m=(h|0)==0?356424:h;d=n>>>0>(2147483645-k|0)>>>0?2147483647:n+o|0;d=j>>>0>(2147483647-d|0)>>>0?2147483647:d+j|0;e=tfa(m|0)|0;c[u>>2]=m;f=u+4|0;c[f>>2]=e;p=u+8|0;c[p>>2]=0;do if(t)if(!(IP(b,1767135348,u,d)|0)){q=c[p>>2]|0;break}else LB(b,c[b+248>>2]|0);else if(e>>>0>(2147483647-d|0)>>>0)LB(b,267664);else{c[p>>2]=e;q=e;break}while(0);e=q+d|0;q=(b|0)==0;if(!q){k=b+800|0;c[k>>2]=34;a[r>>0]=e>>>24;a[r+1>>0]=e>>>16;a[r+2>>0]=e>>>8;a[r+3>>0]=e;d=r+4|0;a[d>>0]=105;a[r+5>>0]=84;a[r+6>>0]=88;a[r+7>>0]=116;UD(b,r,8);c[b+376>>2]=1767135348;dB(b);eB(b,d,4);c[k>>2]=66;if(o){UD(b,s,o);eB(b,s,o)}if((l|0)!=0&(n|0)!=0){UD(b,l,n);eB(b,l,n)}if((g|0)!=0&(j|0)!=0){UD(b,g,j);eB(b,g,j);h=1}else h=1}else h=0;if(t){l=b+284|0;j=1024;k=b+280|0;e=u+12|0;d=c[p>>2]|0;while(1){f=c[k>>2]|0;g=j>>>0>d>>>0?d:j;if(h&(g|0)!=0){UD(b,e,g);eB(b,e,g)}e=(d|0)==(g|0);if(e|(f|0)==0)break;j=c[l>>2]|0;k=f;e=f+4|0;d=d-g|0}if(!e)LB(b,267968)}else{e=c[f>>2]|0;if(h&(m|0)!=0&(e|0)!=0){UD(b,m,e);eB(b,m,e)}}if(q){i=w;return}c[b+800>>2]=130;u=c[b+412>>2]|0;a[v>>0]=u>>>24;a[v+1>>0]=u>>>16;a[v+2>>0]=u>>>8;a[v+3>>0]=u;UD(b,v,4);i=w;return}function BE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+32|0;h=j+16|0;g=j;if((f|0)>1)OB(b,267704);lB(g,d);lB(g+4|0,e);a[g+8>>0]=f;if(!b){i=j;return}e=b+800|0;c[e>>2]=34;a[h>>0]=0;a[h+1>>0]=0;a[h+2>>0]=0;a[h+3>>0]=9;d=h+4|0;a[d>>0]=111;a[h+5>>0]=70;a[h+6>>0]=70;a[h+7>>0]=115;UD(b,h,8);c[b+376>>2]=1866876531;dB(b);eB(b,d,4);c[e>>2]=66;UD(b,g,9);eB(b,g,9);c[e>>2]=130;e=c[b+412>>2]|0;a[h>>0]=e>>>24;a[h+1>>0]=e>>>16;a[h+2>>0]=e>>>8;a[h+3>>0]=e;UD(b,h,4);i=j;return}function CE(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+112|0;v=w+104|0;r=w;t=w+8|0;s=w+24|0;if((g|0)>3)LB(b,267744);d=HP(b,d,s)|0;if(!d)LB(b,267792);p=d+1|0;q=(tfa(j|0)|0)+((h|0)!=0&1)|0;d=d+11+q|0;u=sC(b,h<<2)|0;m=(h|0)>0;if(m){n=h+-1|0;l=0;do{o=(tfa(c[k+(l<<2)>>2]|0)|0)+((l|0)!=(n|0)&1)|0;c[u+(l<<2)>>2]=o;d=o+d|0;l=l+1|0}while((l|0)!=(h|0))}o=(b|0)==0;if(!o){l=b+800|0;c[l>>2]=34;a[r>>0]=d>>>24;a[r+1>>0]=d>>>16;a[r+2>>0]=d>>>8;a[r+3>>0]=d;n=r+4|0;a[n>>0]=112;a[r+5>>0]=67;a[r+6>>0]=65;a[r+7>>0]=76;UD(b,r,8);c[b+376>>2]=1883455820;dB(b);eB(b,n,4);c[l>>2]=66;if(!p)n=1;else{UD(b,s,p);eB(b,s,p);n=1}}else n=0;lB(t,e);lB(t+4|0,f);a[t+8>>0]=g;a[t+9>>0]=h;if(n?(UD(b,t,10),eB(b,t,10),(j|0)!=0&(q|0)!=0):0){UD(b,j,q);eB(b,j,q)}if(m){m=0;do{d=c[k+(m<<2)>>2]|0;l=c[u+(m<<2)>>2]|0;if(n&(d|0)!=0&(l|0)!=0){UD(b,d,l);eB(b,d,l)}m=m+1|0}while((m|0)!=(h|0))}qC(b,u);if(o){i=w;return}c[b+800>>2]=130;k=c[b+412>>2]|0;a[v>>0]=k>>>24;a[v+1>>0]=k>>>16;a[v+2>>0]=k>>>8;a[v+3>>0]=k;UD(b,v,4);i=w;return}function DE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+80|0;m=n+64|0;l=n;g=tfa(e|0)|0;h=tfa(f|0)|0;j=g+2|0;k=j+h|0;if(k>>>0>64){OB(b,267816);i=n;return}a[l>>0]=d;qfa(l+1|0,e|0,g+1|0)|0;qfa(l+j|0,f|0,h|0)|0;if(!b){i=n;return}if((k|0)<0)LB(b,268184);g=b+800|0;c[g>>2]=34;a[m>>0]=k>>>24;a[m+1>>0]=k>>>16;a[m+2>>0]=k>>>8;a[m+3>>0]=k;d=m+4|0;a[d>>0]=115;a[m+5>>0]=67;a[m+6>>0]=65;a[m+7>>0]=76;UD(b,m,8);c[b+376>>2]=1933787468;dB(b);eB(b,d,4);c[g>>2]=66;if(k){UD(b,l,k);eB(b,l,k)}c[g>>2]=130;k=c[b+412>>2]|0;a[m>>0]=k>>>24;a[m+1>>0]=k>>>16;a[m+2>>0]=k>>>8;a[m+3>>0]=k;UD(b,m,4);i=n;return}function EE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+32|0;h=j+16|0;g=j;if((f|0)>1)OB(b,267856);a[g>>0]=d>>>24;a[g+1>>0]=d>>>16;a[g+2>>0]=d>>>8;a[g+3>>0]=d;a[g+4>>0]=e>>>24;a[g+5>>0]=e>>>16;a[g+6>>0]=e>>>8;a[g+7>>0]=e;a[g+8>>0]=f;if(!b){i=j;return}e=b+800|0;c[e>>2]=34;a[h>>0]=0;a[h+1>>0]=0;a[h+2>>0]=0;a[h+3>>0]=9;d=h+4|0;a[d>>0]=112;a[h+5>>0]=72;a[h+6>>0]=89;a[h+7>>0]=115;UD(b,h,8);c[b+376>>2]=1883789683;dB(b);eB(b,d,4);c[e>>2]=66;UD(b,g,9);eB(b,g,9);c[e>>2]=130;e=c[b+412>>2]|0;a[h>>0]=e>>>24;a[h+1>>0]=e>>>16;a[h+2>>0]=e>>>8;a[h+3>>0]=e;UD(b,h,4);i=j;return}function FE(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+16|0;l=m+8|0;k=m;f=a[e+2>>0]|0;if((((f+-1&255)<=11?(h=a[e+3>>0]|0,(h+-1&255)<=30):0)?(j=a[e+4>>0]|0,(j&255)<=23):0)?(g=a[e+6>>0]|0,(g&255)<=60):0){n=b[e>>1]|0;a[k>>0]=(n&65535)>>>8;a[k+1>>0]=n;a[k+2>>0]=f;a[k+3>>0]=h;a[k+4>>0]=j;a[k+5>>0]=a[e+5>>0]|0;a[k+6>>0]=g;if(!d){i=m;return}n=d+800|0;c[n>>2]=34;a[l>>0]=0;a[l+1>>0]=0;a[l+2>>0]=0;a[l+3>>0]=7;e=l+4|0;a[e>>0]=116;a[l+5>>0]=73;a[l+6>>0]=77;a[l+7>>0]=69;UD(d,l,8);c[d+376>>2]=1950960965;dB(d);eB(d,e,4);c[n>>2]=66;UD(d,k,7);eB(d,k,7);c[n>>2]=130;n=c[d+412>>2]|0;a[l>>0]=n>>>24;a[l+1>>0]=n>>>16;a[l+2>>0]=n>>>8;a[l+3>>0]=n;UD(d,l,4);i=m;return}OB(d,267896);i=m;return}function GE(b){b=b|0;var e=0,f=0,g=0,h=0;f=da(d[b+437>>0]|0,d[b+440>>0]|0)|0;h=b+348|0;e=c[h>>2]|0;if(f>>>0>7)e=da(f>>>3,e)|0;else e=((da(f,e)|0)+7|0)>>>3;g=e+1|0;a[b+443>>0]=a[b+438>>0]|0;a[b+442>>0]=f;f=sC(b,g)|0;c[b+384>>2]=f;a[f>>0]=0;f=b+434|0;e=a[f>>0]|0;if(e&16){e=sC(b,(c[b+364>>2]|0)+1|0)|0;c[b+388>>2]=e;a[e>>0]=1;e=a[f>>0]|0}if((e&255)>31){c[b+380>>2]=rC(b,g)|0;e=a[f>>0]|0;if(e&32){e=sC(b,(c[b+364>>2]|0)+1|0)|0;c[b+392>>2]=e;a[e>>0]=2;e=a[f>>0]|0}if(e&64){e=sC(b,(c[b+364>>2]|0)+1|0)|0;c[b+396>>2]=e;a[e>>0]=3;e=a[f>>0]|0}if(e<<24>>24<0){g=sC(b,(c[b+364>>2]|0)+1|0)|0;c[b+400>>2]=g;a[g>>0]=4}}if(!(a[b+432>>0]|0)){c[b+356>>2]=c[b+352>>2];c[b+360>>2]=c[h>>2];return}e=c[b+352>>2]|0;if(!(c[b+216>>2]&2)){c[b+356>>2]=(e+7|0)>>>3;c[b+360>>2]=((c[h>>2]|0)+7|0)>>>3;return}else{c[b+356>>2]=e;c[b+360>>2]=c[h>>2];return}}function HE(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=b+372|0;j=(c[e>>2]|0)+1|0;c[e>>2]=j;k=b+356|0;if(j>>>0<(c[k>>2]|0)>>>0)return;if(a[b+432>>0]|0){c[e>>2]=0;if(!(c[b+216>>2]&2)){g=b+348|0;j=b+433|0;h=b+360|0;i=b+352|0;e=a[j>>0]|0;do{e=e+1<<24>>24;f=e&255;if((e&255)>6)break;l=d[267960+f>>0]|0;l=(((c[g>>2]|0)+-1+l-(d[267952+f>>0]|0)|0)>>>0)/(l>>>0)|0;c[h>>2]=l;m=d[267944+f>>0]|0;f=(((c[i>>2]|0)+-1+m-(d[267936+f>>0]|0)|0)>>>0)/(m>>>0)|0;c[k>>2]=f}while((l|0)==0|(f|0)==0);a[j>>0]=e}else{m=b+433|0;e=(a[m>>0]|0)+1<<24>>24;a[m>>0]=e}if((e&255)<7){g=c[b+380>>2]|0;if(!g)return;f=da(d[b+437>>0]|0,d[b+440>>0]|0)|0;e=c[b+348>>2]|0;if(f>>>0>7)e=da(f>>>3,e)|0;else e=((da(f,e)|0)+7|0)>>>3;sfa(g|0,0,e+1|0)|0;return}}nE(b,0,0,4);return}function IE(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if((f|0)>=6)return;n=b+11|0;g=d[n>>0]|0;if((g|0)==1){m=c[b>>2]|0;g=a[267952+f>>0]|0;h=g&255;if(h>>>0>>0){k=d[267960+f>>0]|0;j=0;i=e;l=h;h=7;do{j=((d[e+(l>>>3)>>0]|0)>>>(l&7^7)&1)<>0]=j;j=0;i=i+1|0;h=7}else h=h+-1|0;l=k+l|0}while(l>>>0>>0);if((h|0)!=7)a[i>>0]=j}}else if((g|0)==2){k=c[b>>2]|0;g=a[267952+f>>0]|0;h=g&255;if(h>>>0>>0){m=d[267960+f>>0]|0;j=0;i=e;l=h;h=6;do{j=((d[e+(l>>>2)>>0]|0)>>>(l<<1&6^6)&3)<>0]=j;j=0;i=i+1|0;h=6}else h=h+-2|0;l=m+l|0}while(l>>>0>>0);if((h|0)!=6)a[i>>0]=j}}else if((g|0)==4){k=c[b>>2]|0;g=a[267952+f>>0]|0;h=g&255;if(h>>>0>>0){m=d[267960+f>>0]|0;j=0;i=e;l=h;h=4;do{j=((d[e+(l>>>1)>>0]|0)>>>(l<<2&4^4)&15)<>0]=j;j=0;i=i+1|0;h=4}else h=h+-4|0;l=m+l|0}while(l>>>0>>0);if((h|0)!=4)a[i>>0]=j}}else{m=c[b>>2]|0;i=g>>>3;g=a[267952+f>>0]|0;j=g&255;if(j>>>0>>0){k=d[267960+f>>0]|0;l=e;while(1){h=e+(da(j,i)|0)|0;if((l|0)!=(h|0))qfa(l|0,h|0,i|0)|0;j=k+j|0;if(j>>>0>=m>>>0)break;else l=l+i|0}}}h=d[267960+f>>0]|0;h=(((c[b>>2]|0)+-1+h-(g&255)|0)>>>0)/(h>>>0)|0;c[b>>2]=h;n=a[n>>0]|0;g=n&255;if((n&255)>7)g=da(g>>>3,h)|0;else g=((da(g,h)|0)+7|0)>>>3;c[b+4>>2]=g;return}function JE(b,f){b=b|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;y=a[b+434>>0]|0;E=f+4|0;B=c[E>>2]|0;F=b+621|0;G=a[F>>0]|0;H=G&255;A=((d[f+11>>0]|0)+7|0)>>>3;C=b+380|0;s=c[C>>2]|0;D=b+384|0;r=c[D>>2]|0;x=y&255;if(!((x&8|0)==0|y<<24>>24==8)){if(!B)f=0;else{i=r;g=0;f=0;do{i=i+1|0;w=a[i>>0]|0;z=w&255;f=(w<<24>>24>-1?z:256-z|0)+f|0;g=g+1|0}while((g|0)!=(B|0))}if((a[b+620>>0]|0)==2){g=f&65535;f=f>>>10&4194240;if(G<<24>>24){i=c[b+624>>2]|0;h=b+628|0;k=0;do{if(!(a[i+k>>0]|0)){z=e[(c[h>>2]|0)+(k<<1)>>1]|0;f=(da(z,f)|0)>>>8;g=(da(z,g)|0)>>>8}k=k+1|0}while((k|0)<(H|0))}i=e[c[b+636>>2]>>1]|0;f=da(i,f)|0;if(f>>>0>33553927)f=2147483647;else f=(f>>>3<<10)+((da(i,g)|0)>>>3)|0}}else f=2147483647;if(y<<24>>24!=16)if(x&16){p=b+620|0;if((a[p>>0]|0)==2){h=f&65535;i=f>>>10&4194240;if(G<<24>>24){g=c[b+624>>2]|0;k=b+632|0;j=0;do{if((a[g+j>>0]|0)==1){z=e[(c[k>>2]|0)+(j<<1)>>1]|0;i=(da(z,i)|0)>>>8;h=(da(z,h)|0)>>>8}j=j+1|0}while((j|0)<(H|0))}g=e[(c[b+640>>2]|0)+2>>1]|0;i=da(g,i)|0;if(i>>>0>33553927)o=2147483647;else o=(i>>>3<<10)+((da(g,h)|0)>>>3)|0}else o=f;l=r+1|0;q=b+388|0;i=c[q>>2]|0;g=i+1|0;if(!A){m=g;n=0;h=l;g=0}else{m=r;n=g;k=0;j=l;g=0;while(1){z=a[j>>0]|0;a[n>>0]=z;h=z&255;g=(z<<24>>24>-1?h:256-h|0)+g|0;k=k+1|0;h=m+2|0;m=i+2|0;if(k>>>0>=A>>>0){i=n;n=A;break}else{i=n;z=j;n=m;j=h;m=z}}}a:do if(n>>>0>>0){j=r;k=n;n=l;while(1){z=(d[h>>0]|0)-(d[n>>0]|0)|0;a[m>>0]=z;z=z&255;g=(z>>>0<128?z:256-z|0)+g|0;if(g>>>0>o>>>0)break a;k=k+1|0;if(k>>>0>=B>>>0)break;else{w=m;z=n;m=i+2|0;n=j+2|0;h=h+1|0;i=w;j=z}}}while(0);if((a[p>>0]|0)==2){h=g&65535;i=g>>>10&4194240;if(G<<24>>24){g=c[b+624>>2]|0;k=b+632|0;j=0;do{if((a[g+j>>0]|0)==1){z=e[(c[k>>2]|0)+(j<<1)>>1]|0;i=(da(z,i)|0)>>>8;h=(da(z,h)|0)>>>8}j=j+1|0}while((j|0)<(H|0))}g=e[(c[b+640>>2]|0)+2>>1]|0;i=da(g,i)|0;if(i>>>0>33553927)g=2147483647;else g=(i>>>3<<10)+((da(g,h)|0)>>>3)|0}if(g>>>0>>0){i=c[q>>2]|0;f=g}else i=r}else i=r;else{n=r+1|0;o=b+388|0;i=c[o>>2]|0;g=i+1|0;if(!A){j=0;h=n}else{h=r;j=0;l=n;while(1){a[g>>0]=a[l>>0]|0;j=j+1|0;h=h+2|0;k=i+2|0;if(j>>>0>=A>>>0){i=g;g=k;j=A;break}else{i=g;z=l;g=k;l=h;h=z}}}if(j>>>0>>0){m=r;k=n;while(1){a[g>>0]=(d[h>>0]|0)-(d[k>>0]|0);j=j+1|0;if((j|0)==(B|0))break;else{w=g;z=k;g=i+2|0;k=m+2|0;h=h+1|0;i=w;m=z}}}i=c[o>>2]|0}if(y<<24>>24!=32){if(x&32){n=b+620|0;if((a[n>>0]|0)==2){k=f&65535;g=f>>>10&4194240;if(G<<24>>24){m=c[b+624>>2]|0;h=b+632|0;j=0;do{if((a[m+j>>0]|0)==2){z=e[(c[h>>2]|0)+(j<<1)>>1]|0;g=(da(z,g)|0)>>>8;k=(da(z,k)|0)>>>8}j=j+1|0}while((j|0)<(H|0))}h=e[(c[b+640>>2]|0)+4>>1]|0;g=da(h,g)|0;if(g>>>0>33553927)m=2147483647;else m=(g>>>3<<10)+((da(h,k)|0)>>>3)|0}else m=f;o=b+392|0;if(!B)g=0;else{h=r;k=c[o>>2]|0;j=s;l=0;g=0;do{j=j+1|0;k=k+1|0;h=h+1|0;z=(d[h>>0]|0)-(d[j>>0]|0)|0;a[k>>0]=z;z=z&255;g=(z>>>0<128?z:256-z|0)+g|0;l=l+1|0}while(g>>>0<=m>>>0&l>>>0>>0)}if((a[n>>0]|0)==2){k=g&65535;g=g>>>10&4194240;if(G<<24>>24){m=c[b+624>>2]|0;h=b+628|0;j=0;do{if((a[m+j>>0]|0)==2){z=e[(c[h>>2]|0)+(j<<1)>>1]|0;g=(da(z,g)|0)>>>8;k=(da(z,k)|0)>>>8}j=j+1|0}while((j|0)<(H|0))}h=e[(c[b+636>>2]|0)+4>>1]|0;g=da(h,g)|0;if(g>>>0>33553927)g=2147483647;else g=(g>>>3<<10)+((da(h,k)|0)>>>3)|0}if(g>>>0>>0){i=c[o>>2]|0;f=g}}}else{j=b+392|0;if(B){i=r;g=c[j>>2]|0;h=s;k=0;do{h=h+1|0;g=g+1|0;i=i+1|0;a[g>>0]=(d[i>>0]|0)-(d[h>>0]|0);k=k+1|0}while((k|0)!=(B|0))}i=c[j>>2]|0}if(y<<24>>24!=64)if(x&64){v=b+620|0;if((a[v>>0]|0)==2){k=f&65535;g=f>>>10&4194240;if(G<<24>>24){m=c[b+624>>2]|0;h=b+632|0;j=0;do{if((a[m+j>>0]|0)==3){z=e[(c[h>>2]|0)+(j<<1)>>1]|0;g=(da(z,g)|0)>>>8;k=(da(z,k)|0)>>>8}j=j+1|0}while((j|0)<(H|0))}h=e[(c[b+640>>2]|0)+6>>1]|0;g=da(h,g)|0;if(g>>>0>33553927)u=2147483647;else u=(g>>>3<<10)+((da(h,k)|0)>>>3)|0}else u=f;k=r+1|0;w=b+396|0;g=c[w>>2]|0;n=s+1|0;m=g+1|0;if(!A){l=g;q=s;j=0;h=k;g=0}else{h=r;l=s;o=g;p=0;q=n;j=k;g=0;while(1){t=h+2|0;n=(d[j>>0]|0)-((d[q>>0]|0)>>>1&255)|0;a[m>>0]=n;n=n&255;g=(n>>>0<128?n:256-n|0)+g|0;p=p+1|0;n=l+2|0;h=o+2|0;if(p>>>0>=A>>>0){l=m;m=h;j=A;h=t;break}else{o=m;l=q;z=j;m=h;q=n;j=t;h=z}}}b:do if(j>>>0>>0){o=r;while(1){z=(d[h>>0]|0)-(((d[k>>0]|0)+(d[n>>0]|0)|0)>>>1)|0;a[m>>0]=z;z=z&255;g=(z>>>0<128?z:256-z|0)+g|0;if(g>>>0>u>>>0)break b;j=j+1|0;if(j>>>0>=B>>>0)break;else{p=n;t=k;z=m;m=l+2|0;k=o+2|0;n=q+2|0;h=h+1|0;q=p;o=t;l=z}}}while(0);if((a[v>>0]|0)==2){k=g&65535;g=g>>>10&4194240;if(G<<24>>24){m=c[b+624>>2]|0;h=b+628|0;j=0;do{if(!(a[m+j>>0]|0)){z=e[(c[h>>2]|0)+(j<<1)>>1]|0;g=(da(z,g)|0)>>>8;k=(da(z,k)|0)>>>8}j=j+1|0}while((j|0)<(H|0))}h=e[(c[b+636>>2]|0)+6>>1]|0;g=da(h,g)|0;if(g>>>0>33553927)g=2147483647;else g=(g>>>3<<10)+((da(h,k)|0)>>>3)|0}if(g>>>0>>0){i=c[w>>2]|0;z=g}else z=f}else z=f;else{k=r+1|0;q=b+396|0;i=c[q>>2]|0;m=s+1|0;g=i+1|0;if(!A){n=s;h=g;j=0;g=k}else{h=r;j=s;l=g;o=0;p=m;n=k;while(1){g=h+2|0;a[l>>0]=(d[n>>0]|0)-((d[p>>0]|0)>>>1&255);o=o+1|0;m=j+2|0;h=i+2|0;if(o>>>0>=A>>>0){i=l;n=p;j=A;break}else{i=l;j=p;z=n;l=h;p=m;n=g;h=z}}}if(j>>>0>>0){l=r;while(1){a[h>>0]=(d[g>>0]|0)-(((d[k>>0]|0)+(d[m>>0]|0)|0)>>>1);j=j+1|0;if((j|0)==(B|0))break;else{v=h;w=k;z=m;h=i+2|0;k=l+2|0;m=n+2|0;g=g+1|0;i=v;l=w;n=z}}}i=c[q>>2]|0;z=f}if(y<<24>>24!=-128){if(x&128){x=b+620|0;if((a[x>>0]|0)==2){h=z&65535;f=z>>>10&4194240;if(G<<24>>24){g=c[b+624>>2]|0;k=b+632|0;j=0;do{if((a[g+j>>0]|0)==4){y=e[(c[k>>2]|0)+(j<<1)>>1]|0;f=(da(y,f)|0)>>>8;h=(da(y,h)|0)>>>8}j=j+1|0}while((j|0)<(H|0))}g=e[(c[b+640>>2]|0)+8>>1]|0;f=da(g,f)|0;if(f>>>0>33553927)w=2147483647;else w=(f>>>3<<10)+((da(g,h)|0)>>>3)|0}else w=z;v=r+1|0;y=b+400|0;f=c[y>>2]|0;t=s+1|0;g=f+1|0;if(!A){h=f;m=0;o=t;j=v;f=0}else{m=r;h=s;n=f;k=0;j=t;l=v;f=0;while(1){p=m+2|0;o=h+2|0;m=(d[l>>0]|0)-(d[j>>0]|0)|0;a[g>>0]=m;m=m&255;f=(m>>>0<128?m:256-m|0)+f|0;k=k+1|0;m=n+2|0;if(k>>>0>=A>>>0){h=g;g=m;m=A;j=p;break}else{n=g;h=j;u=l;g=m;j=o;l=p;m=u}}}c:do if(m>>>0>>0){u=h;q=g;p=m;l=v;while(1){m=d[o>>0]|0;h=d[t>>0]|0;g=d[l>>0]|0;k=m-h|0;v=g-h|0;A=(k|0)<0?0-k|0:k;n=(v|0)<0?0-v|0:v;k=v+k|0;k=(k|0)<0?0-k|0:k;if((A|0)>(n|0)|(A|0)>(k|0))g=(n|0)<=(k|0)?m:h;A=(d[j>>0]|0)-g|0;a[q>>0]=A;A=A&255;f=(A>>>0<128?A:256-A|0)+f|0;if(f>>>0>w>>>0)break c;p=p+1|0;if(p>>>0>=B>>>0)break;else{k=q;v=l;A=t;t=s+2|0;q=u+2|0;l=r+2|0;o=o+1|0;j=j+1|0;u=k;r=v;s=A}}}while(0);if((a[x>>0]|0)==2){h=f&65535;f=f>>>10&4194240;if(G<<24>>24){g=c[b+624>>2]|0;j=b+628|0;k=0;do{if((a[g+k>>0]|0)==4){B=e[(c[j>>2]|0)+(k<<1)>>1]|0;f=(da(B,f)|0)>>>8;h=(da(B,h)|0)>>>8}k=k+1|0}while((k|0)<(H|0))}g=e[(c[b+636>>2]|0)+8>>1]|0;f=da(g,f)|0;if(f>>>0>33553927)f=2147483647;else f=(f>>>3<<10)+((da(g,h)|0)>>>3)|0}if(f>>>0>>0)i=c[y>>2]|0}}else{n=r+1|0;t=b+400|0;f=c[t>>2]|0;q=s+1|0;i=f+1|0;if(!A){g=0;h=q;m=n}else{g=r;h=s;k=0;m=q;j=n;while(1){l=g+2|0;h=h+2|0;a[i>>0]=(d[j>>0]|0)-(d[m>>0]|0);k=k+1|0;g=f+2|0;if(k>>>0>=A>>>0){f=i;i=g;g=A;m=l;break}else{f=i;y=m;z=j;i=g;m=h;j=l;h=y;g=z}}}if(g>>>0>>0){p=i;o=g;l=h;while(1){g=d[l>>0]|0;h=d[q>>0]|0;i=d[n>>0]|0;j=g-h|0;z=i-h|0;A=(j|0)<0?0-j|0:j;k=(z|0)<0?0-z|0:z;j=z+j|0;j=(j|0)<0?0-j|0:j;if((A|0)>(k|0)|(A|0)>(j|0))i=(k|0)<=(j|0)?g:h;a[p>>0]=(d[m>>0]|0)-i;o=o+1|0;if((o|0)==(B|0))break;else{y=p;z=n;A=q;q=s+2|0;p=f+2|0;n=r+2|0;l=l+1|0;m=m+1|0;f=y;r=z;s=A}}}i=c[t>>2]|0}nE(b,i,(c[E>>2]|0)+1|0,0);f=c[C>>2]|0;if(f){c[C>>2]=c[D>>2];c[D>>2]=f}HE(b);D=b+480|0;E=(c[D>>2]|0)+1|0;c[D>>2]=E;if(((c[b+476>>2]|0)+-1|0)>>>0>>0)cE(b);if(!(a[F>>0]|0))return;h=b+624|0;if((G&255)>1){f=H>>>0>2;g=1;do{G=c[h>>2]|0;a[G+g>>0]=a[G+(g+-1)>>0]|0;g=g+1|0}while((g|0)<(H|0));f=f?H:2}else f=1;a[(c[h>>2]|0)+f>>0]=a[i>>0]|0;return}function KE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;c[b+4>>2]=0;if((d|0)!=90){f=c[b>>2]|0;c[f+20>>2]=13;c[f+24>>2]=90;c[f+28>>2]=d;Bd[c[f>>2]&511](b)}if((e|0)==424)e=b;else{f=c[b>>2]|0;c[f+20>>2]=22;c[f+24>>2]=424;c[f+28>>2]=e;Bd[c[f>>2]&511](b);e=b}g=c[b>>2]|0;f=b+12|0;d=c[f>>2]|0;sfa(b|0,0,424)|0;c[b>>2]=g;c[f>>2]=d;a[b+16>>0]=0;aH(e);c[b+8>>2]=0;c[b+24>>2]=0;c[b+84>>2]=0;c[b+88>>2]=0;c[b+104>>2]=100;c[b+92>>2]=0;c[b+108>>2]=100;c[b+96>>2]=0;c[b+112>>2]=100;c[b+100>>2]=0;c[b+116>>2]=100;f=b+120|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;c[b+364>>2]=8;c[b+368>>2]=276664;c[b+372>>2]=63;c[b+412>>2]=0;h[b+48>>3]=1.0;c[b+20>>2]=100;return}function LE(a){a=a|0;eF(a);return}function ME(b,d){b=b|0;d=d|0;var e=0;e=c[b+88>>2]|0;if(e)a[e+128>>0]=d;e=c[b+92>>2]|0;if(e)a[e+128>>0]=d;e=c[b+96>>2]|0;if(e)a[e+128>>0]=d;e=c[b+100>>2]|0;if(e)a[e+128>>0]=d;e=c[b+120>>2]|0;if(e)a[e+273>>0]=d;e=c[b+136>>2]|0;if(e)a[e+273>>0]=d;e=c[b+124>>2]|0;if(e)a[e+273>>0]=d;e=c[b+140>>2]|0;if(e)a[e+273>>0]=d;e=c[b+128>>2]|0;if(e)a[e+273>>0]=d;e=c[b+144>>2]|0;if(e)a[e+273>>0]=d;e=c[b+132>>2]|0;if(e)a[e+273>>0]=d;e=c[b+148>>2]|0;if(!e)return;a[e+273>>0]=d;return} -function pr(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+32|0;j=k;Xd[c[d+52>>2]&255](d,6,j,3)|0;e=j+12|0;d=c[e>>2]|0;d=(d|0)<0?0-d|0:d;b[a+68>>1]=rg(1e3,d)|0;if((d|0)==65536){f=j+8|0;g=j+16|0;h=j+4|0;d=c[e>>2]|0;e=c[j+20>>2]|0}else{c[j>>2]=rg(c[j>>2]|0,d)|0;h=j+4|0;c[h>>2]=rg(c[h>>2]|0,d)|0;f=j+8|0;c[f>>2]=rg(c[f>>2]|0,d)|0;g=j+16|0;c[g>>2]=rg(c[g>>2]|0,d)|0;m=j+20|0;l=rg(c[m>>2]|0,d)|0;c[m>>2]=l;c[e>>2]=65536;d=65536;e=l}c[a+436>>2]=c[j>>2];c[a+444>>2]=c[h>>2];c[a+440>>2]=c[f>>2];c[a+448>>2]=d;c[a+452>>2]=c[g>>2]>>16;c[a+456>>2]=e>>16;i=k;return}function qr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;i=i+16|0;h=u;q=c[d+8>>2]|0;g=c[b+488>>2]|0;s=d+28|0;Bd[c[s>>2]&511](d);k=c[d>>2]|0;if(k>>>0>=q>>>0){c[d+12>>2]=3;i=u;return}r=a[k>>0]|0;e=r<<24>>24==91;if(!(((r&255)+-48|0)>>>0<10|e)){if((k+17|0)>>>0>>0?(hfa(k,90104,16)|0)==0:0){c[b+368>>2]=2;i=u;return}if((k+15|0)>>>0>>0?(hfa(k,90128,14)|0)==0:0){c[b+368>>2]=4;i=u;return}if((k+18|0)>>>0>>0?(hfa(k,90144,17)|0)==0:0){c[b+368>>2]=3;i=u;return}c[d+12>>2]=3;i=u;return}r=d+92|0;f=c[d+16>>2]|0;if(e){c[d>>2]=k+1;p=256;j=1}else{p=Ed[c[d+36>>2]&511](d)|0;j=0}Bd[c[s>>2]&511](d);if((c[d>>2]|0)>>>0>=q>>>0){i=u;return}c[b+372>>2]=p;c[d+88>>2]=p;c[b+384>>2]=Dg(f,2,0,p,0,h)|0;e=c[h>>2]|0;if(!e){c[b+388>>2]=Dg(f,4,0,p,0,h)|0;e=c[h>>2]|0;if(!e){e=Hd[c[c[g>>2]>>2]&255](r,p,f)|0;c[h>>2]=e;if(!e){if(p){e=d+136|0;f=0;do{Xd[c[e>>2]&255](r,f,89072,8)|0;f=f+1|0}while((f|0)!=(p|0))}Bd[c[s>>2]&511](d);e=c[d>>2]|0;a:do if(e>>>0>>0){k=j<<24>>24==0;j=d+32|0;l=d+12|0;m=d+36|0;n=d+136|0;o=d+116|0;h=0;while(1){f=a[e>>0]|0;if(f<<24>>24==93){f=23;break}else if(f<<24>>24==100?(t=e+3|0,t>>>0>>0):0){if((a[e+1>>0]|0)==101?(a[e+2>>0]|0)==102:0)switch(a[t>>0]|0){case 0:case 12:case 10:case 13:case 9:case 32:{e=t;break a}default:{}}if(f<<24>>24==93){f=23;break}}if(((f&255)+-48|0)>>>0>9&k){Bd[c[j>>2]&511](d);if(!(c[l>>2]|0))f=e;else{f=44;break}}else{if(k){g=Ed[c[m>>2]&511](d)|0;Bd[c[s>>2]&511](d);e=c[d>>2]|0;f=a[e>>0]|0}else g=h;if(f<<24>>24==47&(e+2|0)>>>0>>0&h>>>0

>>0){e=e+1|0;c[d>>2]=e;Bd[c[j>>2]&511](d);if(c[l>>2]|0){f=44;break}f=(c[d>>2]|0)-e|0;v=Xd[c[n>>2]&255](r,g,e,f+1|0)|0;c[l>>2]=v;if(v){f=44;break}a[(c[(c[o>>2]|0)+(g<<2)>>2]|0)+f>>0]=0;f=e;h=h+1|0}else f=e}Bd[c[s>>2]&511](d);e=c[d>>2]|0;if(e>>>0>=q>>>0){e=f;break a}}if((f|0)==23){e=e+1|0;break}else if((f|0)==44){i=u;return}}else e=k;while(0);c[b+368>>2]=1;c[d>>2]=e;i=u;return}}}c[d+12>>2]=e;i=u;return}function rr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=d+200|0;y=d+148|0;w=d+252|0;l=c[d+16>>2]|0;k=c[b+488>>2]|0;r=c[d+8>>2]|0;s=d+28|0;Bd[c[s>>2]&511](d);b=c[d>>2]|0;a:do if(b>>>0>>0){b=a[b>>0]|0;b:do if(((b&255)+-48|0)>>>0<10){c[d+144>>2]=Ed[c[d+36>>2]&511](d)|0;if(!(c[d+12>>2]|0)){i=c[d>>2]|0;break}else return}else{if(b<<24>>24!=60){b=3;break a}e=d+32|0;Bd[c[e>>2]&511](d);f=d+12|0;if(c[f>>2]|0)return;Bd[c[s>>2]&511](d);h=c[d>>2]|0;if(h>>>0>>0){b=h;g=0;while(1){b=a[b>>0]|0;if(b<<24>>24==62){j=g;v=10;break}else if(b<<24>>24==47)g=g+1|0;Bd[c[e>>2]&511](d);if(c[f>>2]|0){v=46;break}Bd[c[s>>2]&511](d);b=c[d>>2]|0;if(b>>>0>=r>>>0){i=b;break b}}if((v|0)==10){c[d+144>>2]=j;c[d>>2]=h;i=h;break}else if((v|0)==46)return}else i=h}while(0);if(i>>>0>>0){m=d+144|0;b=Hd[c[c[k>>2]>>2]&255](z,c[m>>2]|0,l)|0;if(!b){b=Hd[c[c[k>>2]>>2]&255](y,c[m>>2]|0,l)|0;if(!b){b=Hd[c[c[k>>2]>>2]&255](w,4,l)|0;if(!b){i=d+32|0;h=d+12|0;p=d+192|0;n=d+172|0;j=d+36|0;q=d+244|0;o=d+224|0;l=0;k=0;f=0;c:while(1){do{Bd[c[s>>2]&511](d);b=c[d>>2]|0;if(b>>>0>=r>>>0){t=l;u=k;x=f;break c}g=a[b>>0]|0;if(g<<24>>24==101){e=b+3|0;if(e>>>0>>0){if((a[b+1>>0]|0)==110?(a[b+2>>0]|0)==100:0)switch(a[e>>0]|0){case 0:case 12:case 10:case 13:case 9:case 32:{t=l;u=k;x=f;break c}default:{}}if(g<<24>>24==62){t=l;u=k;x=f;break c}}}else if(g<<24>>24==62){t=l;u=k;x=f;break c}Bd[c[i>>2]&511](d);if(c[h>>2]|0){v=46;break c}}while((a[b>>0]|0)!=47);g=b+1|0;if(g>>>0>=r>>>0){b=3;break a}e=(c[d>>2]|0)-g|0;b=Xd[c[p>>2]&255](y,l,g,e+1|0)|0;if(b)break a;a[(c[(c[n>>2]|0)+(l<<2)>>2]|0)+e>>0]=0;if((a[g>>0]|0)==46){e=(gfa(89072,c[(c[n>>2]|0)+(l<<2)>>2]|0)|0)==0;k=e?1:k;f=e?l:f}Bd[c[s>>2]&511](d);g=c[d>>2]|0;Ed[c[j>>2]&511](d)|0;b=c[d>>2]|0;if(b>>>0>=r>>>0){b=3;break a}e=b-g|0;b=Xd[c[q>>2]&255](z,l,g,e+1|0)|0;if(b)break a;a[(c[(c[o>>2]|0)+(l<<2)>>2]|0)+e>>0]=0;b=l+1|0;if(b>>>0<(c[m>>2]|0)>>>0)l=b;else{t=b;u=k;x=f;break}}if((v|0)==46)return;c[m>>2]=t;if(u<<24>>24){b=c[c[n>>2]>>2]|0;if(!(gfa(89072,b)|0))return;g=d+296|0;f=d+176|0;b=Xd[c[g>>2]&255](w,0,b,c[c[f>>2]>>2]|0)|0;if(!b){e=d+228|0;b=Xd[c[g>>2]&255](w,1,c[c[o>>2]>>2]|0,c[c[e>>2]>>2]|0)|0;if(!b){b=Xd[c[g>>2]&255](w,2,c[(c[n>>2]|0)+(x<<2)>>2]|0,c[(c[f>>2]|0)+(x<<2)>>2]|0)|0;if(!b){b=Xd[c[g>>2]&255](w,3,c[(c[o>>2]|0)+(x<<2)>>2]|0,c[(c[e>>2]|0)+(x<<2)>>2]|0)|0;if(!b){e=d+276|0;f=d+280|0;b=Xd[c[p>>2]&255](y,x,c[c[e>>2]>>2]|0,c[c[f>>2]>>2]|0)|0;if(!b){b=Xd[c[q>>2]&255](z,x,c[(c[e>>2]|0)+4>>2]|0,c[(c[f>>2]|0)+4>>2]|0)|0;if(!b){b=Xd[c[p>>2]&255](y,0,c[(c[e>>2]|0)+8>>2]|0,c[(c[f>>2]|0)+8>>2]|0)|0;if(!b){b=Xd[c[q>>2]&255](z,0,c[(c[e>>2]|0)+12>>2]|0,c[(c[f>>2]|0)+12>>2]|0)|0;if(!b)return}}}}}}}}else b=3}}}}else b=3}else b=3;while(0);c[d+12>>2]=b;return}function sr(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E+4|0;A=E;D=c[e+16>>2]|0;y=c[e+8>>2]|0;z=e+28|0;Bd[c[z>>2]&511](e);f=c[e>>2]|0;a:do if(f>>>0>>0?(c[e>>2]=f+1,(a[f>>0]|0)==91):0){Bd[c[z>>2]&511](e);g=c[e>>2]|0;b:do if(g>>>0>>0){t=e+36|0;u=e+32|0;v=e+12|0;w=y;x=b+492|0;r=b+496|0;s=e+44|0;b=0;n=0;p=0;m=0;k=0;f=0;h=0;l=0;c:while(1){j=a[g>>0]|0;if(j<<24>>24==93){B=7;break}else if(j<<24>>24!=60)if(((j&255)+-48|0)>>>0<10){if(b<<24>>24){B=13;break}g=Ed[c[t>>2]&511](e)|0;if((g|0)<0){B=15;break}Bd[c[u>>2]&511](e);if(c[v>>2]|0){B=45;break}h=c[e>>2]|0;f=h+1|0;if((w-h|0)<(g|0)){B=18;break}c[e>>2]=h+(g+1);b=0;h=g}else{j=m;B=20}else{Bd[c[u>>2]&511](e);if(c[v>>2]|0)break a;j=((c[e>>2]|0)+~g|0)/2|0;f=Dg(D,1,m,j,f,C)|0;h=c[C>>2]|0;if(h){g=h;B=42;break a}c[e>>2]=g;Qd[c[s>>2]&127](e,f,j,A,1)|0;b=1;h=c[A>>2]|0;B=20}if((B|0)==20){B=0;if(!f){f=b;B=21;break}else m=j}if(!(h&1))q=h;else{q=h+-1|0;q=(a[f+q>>0]|0)==0?q:h}if(!q){B=26;break}if((q|0)>0){o=0;h=p;g=l;while(1){do if((k|0)==1)B=31;else if(!k)if(n>>>0>=12){g=c[x>>2]|0;h=(d[g+4>>0]<<4)+(d[g+5>>0]|0)|0;j=h<<4|12;c[x>>2]=Dg(D,1,12,j,g,C)|0;g=c[C>>2]|0;if(!g){g=j;B=31;break}else{B=42;break a}}else{a[(c[x>>2]|0)+n>>0]=a[f+o>>0]|0;j=n+1|0;k=0;break}else if((k|0)==2)B=36;else j=n;while(0);do if((B|0)==31){B=0;if(n>>>0>>0){a[(c[x>>2]|0)+n>>0]=a[f+o>>0]|0;j=n+1|0;k=1;break}k=c[x>>2]|0;if((h|0)>0){j=0;do{B=j<<4|12;g=((d[k+(B+13)>>0]<<16|d[k+(B+12)>>0]<<24|d[k+(B+14)>>0]<<8|d[k+(B+15)>>0])+3&-4)+g|0;j=j+1|0}while((j|0)!=(h|0));j=g}else j=g;c[r>>2]=j;c[x>>2]=Dg(D,1,h<<4|12,j+1|0,k,C)|0;g=c[C>>2]|0;if(!g){g=j;B=36}else{B=42;break a}}while(0);if((B|0)==36){B=0;if(n>>>0>=g>>>0){B=37;break c}a[(c[x>>2]|0)+n>>0]=a[f+o>>0]|0;j=n+1|0;k=2}o=o+1|0;if((o|0)>=(q|0)){l=g;break}else n=j}}else{j=n;h=p}Bd[c[z>>2]&511](e);g=c[e>>2]|0;if(g>>>0>=y>>>0)break b;else{n=j;p=h;h=q}}if((B|0)==7){c[e>>2]=g+1;break a}else if((B|0)==13){c[C>>2]=3;g=3;B=42;break a}else if((B|0)==15){c[C>>2]=3;g=3;b=0;B=42;break a}else if((B|0)==18){c[C>>2]=3;g=3;b=0;B=42;break a}else if((B|0)==21){c[C>>2]=3;g=3;b=f;f=0;B=42;break a}else if((B|0)==26){c[C>>2]=3;g=3;B=42;break a}else if((B|0)==37){c[C>>2]=3;g=3;B=42;break a}else if((B|0)==45){i=E;return}}else{b=0;f=0}while(0);c[C>>2]=3;g=3;B=42}else B=3;while(0);if((B|0)==3){c[C>>2]=3;g=3;b=0;f=0;B=42}if((B|0)==42)c[e+12>>2]=g;if(!(b<<24>>24)){i=E;return}Ag(D,f);i=E;return}function tr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;pi(d,c[(c[a+420>>2]|0)+(b<<2)>>2]|0,e)|0;return 0}function ur(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=c[b+416>>2]|0;if((f|0)<=0){b=0;return b|0}g=c[b+420>>2]|0;h=a[d>>0]|0;e=0;while(1){i=c[g+(e<<2)>>2]|0;if(h<<24>>24==(a[i>>0]|0)?(gfa(d,i)|0)==0:0)break;e=e+1|0;if((e|0)>=(f|0)){e=0;j=7;break}}if((j|0)==7)return e|0;b=$ea(c[(c[b+424>>2]|0)+(e<<2)>>2]|0)|0;return b|0}function vr(a){a=a|0;return c[a+364>>2]|0}function wr(a,b){a=a|0;b=b|0;a=a+132|0;c[b+0>>2]=c[a+0>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];c[b+16>>2]=c[a+16>>2];c[b+20>>2]=c[a+20>>2];c[b+24>>2]=c[a+24>>2];c[b+28>>2]=c[a+28>>2];return 0}function xr(a,c){a=a|0;c=c|0;b[c>>1]=b[a+164>>1]|0;return 0}function yr(a){a=a|0;return 1}function zr(a,b){a=a|0;b=b|0;qfa(b|0,a+168|0,196)|0;return 0}function Ar(a,b){a=a|0;b=b|0;return Jg(90904,b)|0}function Br(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;O=i;i=i+176|0;G=O+152|0;h=O+156|0;j=O+160|0;k=O+132|0;m=O+112|0;o=O+96|0;E=O+80|0;D=O+64|0;A=O+40|0;B=O+32|0;C=O+24|0;z=O+8|0;N=O;I=O+48|0;K=f+100|0;J=c[K>>2]|0;L=f+104|0;F=c[L>>2]|0;M=f+132|0;c[M>>2]=0;y=bh(F,0)|0;c[G>>2]=y;a:do if((y|0)==0?(y=fi(F,90696,h)|0,c[G>>2]=y,(y|0)==0):0){c[G>>2]=2;b:do if((b[h>>1]|0)==23117){l=h+2|0;y=bh(F,e[l>>1]|0)|0;c[G>>2]=y;if(y)break a;y=fi(F,90720,j)|0;c[G>>2]=y;if(y)break a;c[G>>2]=2;h=b[j>>1]|0;c:do if(h<<16>>16==17742){h=j+2|0;E=bh(F,(e[h>>1]|0)+(e[l>>1]|0)|0)|0;c[G>>2]=E;if(E)break a;E=Uh(F,(e[j+4>>1]|0)-(e[h>>1]|0)|0)|0;c[G>>2]=E;if(E)break a;k=_h(F)|0;h=_h(F)|0;d:do if(!(h<<16>>16)){h=0;l=0}else{j=F+32|0;l=h;while(1){h=_h(F)|0;if(l<<16>>16==-32760)break;c[j>>2]=(c[j>>2]|0)+(((h&65535)*12|0)+4);l=_h(F)|0;if(!(l<<16>>16)){h=0;l=0;break d}}l=Qh(F)|0;l=l+4+(c[j>>2]|0)-(c[F+36>>2]|0)|0}while(0);Xh(F);if(!(h<<16>>16!=0&(l|0)!=0)){c[G>>2]=3;break a}h=h&65535;if((h*118|0)>>>0>(c[F+4>>2]|0)>>>0){c[G>>2]=3;break a}c[f>>2]=h;if((h|0)<=(g|0)){c[G>>2]=6;break a}if((g|0)<0)break a;c[M>>2]=yg(J,172,G)|0;if(c[G>>2]|0)break a;E=bh(F,l+(g*12|0)|0)|0;c[G>>2]=E;if(E)break b;E=Uh(F,12)|0;c[G>>2]=E;if(E)break b;l=k&65535;h=((_h(F)|0)&65535)<>2]>>2]=h;l=((_h(F)|0)&65535)<>2]|0)+164>>2]=l;l=F+32|0;c[l>>2]=(c[l>>2]|0)+8;Xh(F);l=Rt(c[M>>2]|0,F)|0;c[G>>2]=l;h=f}else if(h<<16>>16==17744){y=bh(F,e[l>>1]|0)|0;c[G>>2]=y;if(y)break a;y=fi(F,90744,k)|0;c[G>>2]=y;if(y)break a;if(((c[k>>2]|0)==17744?(n=c[k+4>>2]|0,(n&65535)<<16>>16==332):0)?(c[k+8>>2]|0)==17498336:0){c[f>>2]=0;j=k+6|0;e:do if(n>>>0>=65536){h=k+12|0;y=m+8|0;l=0;while(1){x=fi(F,90800,m)|0;c[G>>2]=x;if(x)break a;l=l+1<<16>>16;if((c[h>>2]|0)==(c[y>>2]|0))break;if((l&65535)>=(e[j>>1]|0))break e}w=m+16|0;x=bh(F,c[w>>2]|0)|0;c[G>>2]=x;if(x)break a;x=fi(F,90832,o)|0;c[G>>2]=x;if(x)break a;x=c[w>>2]|0;m=o+12|0;v=c[m>>2]|0;if(((v>>>16)+(v&65535)|0)<=0){l=0;h=f;break c}o=x+16|0;p=A+4|0;q=E+12|0;r=B+4|0;s=D+12|0;t=C+4|0;u=z+4|0;h=0;v=0;f:while(1){n=bh(F,o+(h<<3)|0)|0;c[G>>2]=n;if(n)break a;n=fi(F,90864,A)|0;c[G>>2]=n;if(n)break a;h=c[p>>2]|0;if((h|0)>=0){H=45;break}h=h&2147483647;c[p>>2]=h;h=(c[w>>2]|0)+h|0;n=bh(F,h)|0;c[G>>2]=n;if(n)break a;n=fi(F,90832,E)|0;c[G>>2]=n;if(n)break a;n=c[q>>2]|0;if(((n>>>16)+(n&65535)|0)>0){k=h+16|0;h=0;n=0;do{j=bh(F,k+(h<<3)|0)|0;c[G>>2]=j;if(j)break a;j=fi(F,90864,B)|0;c[G>>2]=j;if(j)break a;h=c[r>>2]|0;if((h|0)>=0){H=53;break f}h=h&2147483647;c[r>>2]=h;h=(c[w>>2]|0)+h|0;j=bh(F,h)|0;c[G>>2]=j;if(j)break a;j=fi(F,90832,D)|0;c[G>>2]=j;if(j)break a;j=c[s>>2]|0;if(((j>>>16)+(j&65535)|0)>0){l=h+16|0;h=0;j=0;do{h=bh(F,l+(h<<3)|0)|0;c[G>>2]=h;if(h)break a;h=fi(F,90864,C)|0;c[G>>2]=h;if(h)break a;if((c[r>>2]|0)<0){H=61;break f}if((c[A>>2]|0)==8){h=bh(F,(c[t>>2]|0)+x|0)|0;c[G>>2]=h;if(h)break a;h=fi(F,90880,z)|0;c[G>>2]=h;if(h)break a;h=c[f>>2]|0;if((h|0)==(g|0)){h=yg(J,172,G)|0;c[M>>2]=h;if(c[G>>2]|0)break a;c[h>>2]=(c[z>>2]|0)+(c[w>>2]|0)-(c[y>>2]|0);c[h+164>>2]=c[u>>2];h=Rt(h,F)|0;c[G>>2]=h;if(h)break b;h=c[f>>2]|0}c[f>>2]=h+1}j=j+1<<16>>16;h=j&65535;P=c[s>>2]|0}while((h|0)<((P>>>16)+(P&65535)|0))}n=n+1<<16>>16;h=n&65535;P=c[q>>2]|0}while((h|0)<((P>>>16)+(P&65535)|0))}v=v+1<<16>>16;h=v&65535;P=c[m>>2]|0;if((h|0)>=((P>>>16)+(P&65535)|0)){l=0;h=f;break c}}if((H|0)==45){c[G>>2]=3;break a}else if((H|0)==53){c[G>>2]=3;break a}else if((H|0)==61){c[G>>2]=3;break a}}while(0);c[G>>2]=3;break a}c[G>>2]=3;break a}else{l=2;h=f}while(0);h=c[h>>2]|0;if(!h){c[G>>2]=3;break a}if((h|0)>(g|0))if(!l)break a;else break;else{c[G>>2]=6;break a}}while(0);h=c[K>>2]|0;l=c[L>>2]|0;j=c[M>>2]|0;if(j){k=j+160|0;if(c[k>>2]|0)Vh(l,k);P=j+168|0;Ag(h,c[P>>2]|0);c[P>>2]=0;Ag(h,j);c[M>>2]=0}}while(0);h=c[G>>2]|0;c[N>>2]=h;j=(g|0)<0;if((h|0)==0&j){P=0;i=O;return P|0}do if((h&255|0)==2){h=yg(J,172,N)|0;c[M>>2]=h;l=c[N>>2]|0;if(l){P=l;i=O;return P|0}c[f>>2]=1;c[h>>2]=0;c[h+164>>2]=c[d+4>>2];h=Rt(h,d)|0;c[N>>2]=h;if(!h){if((g|0)>0){c[N>>2]=6;h=6;break}if(j){P=0;i=O;return P|0}else H=90}}else if(!h)H=90;while(0);do if((H|0)==90){o=c[M>>2]|0;c[f+4>>2]=g;l=o+100|0;c[f+8>>2]=(b[l>>1]|0)==(b[o+102>>1]|0)?22:18;if(a[o+86>>0]|0){P=f+12|0;c[P>>2]=c[P>>2]|1}if((e[o+90>>1]|0)>799){P=f+12|0;c[P>>2]=c[P>>2]|2}n=Dg(J,16,0,1,0,N)|0;c[f+32>>2]=n;h=c[N>>2]|0;if(!h){c[f+28>>2]=1;b[n+2>>1]=b[l>>1]|0;k=o+96|0;b[n>>1]=(e[o+84>>1]|0)+(e[k>>1]|0);P=e[o+74>>1]<<6;h=n+4|0;c[h>>2]=P;m=b[o+78>>1]|0;l=b[o+76>>1]|0;l=l<<16>>16!=0?l&65535:72;j=n+12|0;P=(og(P,l,72)|0)+32&-64;c[j>>2]=P;k=e[k>>1]<<6;if((P|0)>(k|0)){c[j>>2]=k;P=og(k,72,l)|0;c[h>>2]=P;h=P}else h=c[h>>2]|0;c[n+8>>2]=(og(h,m<<16>>16!=0?m&65535:72,72)|0)+32&-64;h=I+4|0;c[h>>2]=0;l=I+8|0;b[l>>1]=0;b[I+10>>1]=0;c[I>>2]=f;if((a[o+92>>0]|0)==77){c[h>>2]=1634889070;b[l>>1]=1}h=qh(90504,0,I,0)|0;c[N>>2]=h;if(!h){if(c[f+36>>2]|0)c[f+92>>2]=c[c[f+40>>2]>>2];h=a[o+105>>0]|0;l=a[o+104>>0]|0;if((h&255)<(l&255)){c[N>>2]=3;h=3;break}c[f+16>>2]=(h&255)+2-(l&255);m=o+116|0;h=c[m>>2]|0;l=c[o+8>>2]|0;if(l>>>0<=h>>>0){c[N>>2]=3;h=3;break}l=l-h|0;j=yg(J,l+1|0,N)|0;k=o+168|0;c[k>>2]=j;h=c[N>>2]|0;if(!h){qfa(j|0,(c[o+160>>2]|0)+(c[m>>2]|0)|0,l|0)|0;a[(c[k>>2]|0)+l>>0]=0;j=c[k>>2]|0;j=Dg(J,1,l,(tfa(j|0)|0)+1|0,j,N)|0;c[k>>2]=j;h=c[N>>2]|0;if(!h){c[f+20>>2]=j;j=f+24|0;c[j>>2]=90464;P=c[f+12>>2]|0;h=(P&1|0)!=0;if(!(P&2)){if(!h){P=0;i=O;return P|0}c[j>>2]=90496;P=0;i=O;return P|0}if(h){c[j>>2]=90472;P=0;i=O;return P|0}else{c[j>>2]=90488;P=0;i=O;return P|0}}}}}}while(0);if(!f){P=h;i=O;return P|0}l=c[K>>2]|0;h=c[L>>2]|0;j=c[M>>2]|0;if(j){k=j+160|0;if(c[k>>2]|0)Vh(h,k);P=j+168|0;Ag(l,c[P>>2]|0);c[P>>2]=0;Ag(l,j);c[M>>2]=0}P=f+32|0;Ag(l,c[P>>2]|0);c[P>>2]=0;c[f+28>>2]=0;P=c[N>>2]|0;i=O;return P|0}function Cr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(!a)return;b=c[a+100>>2]|0;d=c[a+104>>2]|0;e=a+132|0;f=c[e>>2]|0;if(f){g=f+160|0;if(c[g>>2]|0)Vh(d,g);g=f+168|0;Ag(b,c[g>>2]|0);c[g>>2]=0;Ag(b,f);c[e>>2]=0}g=a+32|0;Ag(b,c[g>>2]|0);c[g>>2]=0;c[a+28>>2]=0;return}function Dr(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;s=t;j=c[g>>2]|0;c[s>>2]=0;if(!j){c[s>>2]=6;f=6;i=t;return f|0}r=c[j+132>>2]|0;if((r|0)!=0?(c[j+16>>2]|0)>>>0>h>>>0:0){if(!h)j=d[r+106>>0]|0;else j=h+-1|0;l=(b[r+4>>1]|0)==768;n=c[r+160>>2]|0;j=(da(l?6:4,j)|0)+(l?148:118)|0;h=(d[n+(j|1)>>0]<<8|d[n+j>>0])<<16>>16;q=f+80|0;c[q>>2]=h;g=n+(j+2)|0;if(l)l=d[n+(j+4)>>0]<<16|d[n+(j+5)>>0]<<24|d[n+(j+3)>>0]<<8|d[g>>0];else l=d[n+(j+3)>>0]<<8|d[g>>0];g=c[r+8>>2]|0;if(l>>>0>=g>>>0){c[s>>2]=3;f=3;i=t;return f|0}k=c[(c[f+4>>2]|0)+100>>2]|0;h=h+7>>3;o=f+84|0;c[o>>2]=h;j=e[r+96>>1]|0;p=f+76|0;c[p>>2]=j;a[f+94>>0]=1;if(((da(h,j)|0)+l|0)>>>0>g>>>0){c[s>>2]=3;f=3;i=t;return f|0}j=Dg(k,j,0,h,0,s)|0;c[f+88>>2]=j;g=c[s>>2]|0;if(g){f=g;i=t;return f|0}if((h|0)>0){m=j;j=n+l|0;while(1){n=c[p>>2]|0;k=j+n|0;if((n|0)>0){g=m;while(1){a[g>>0]=a[j>>0]|0;j=j+1|0;if(j>>>0>>0)g=g+(c[o>>2]|0)|0;else break}}h=h+-1|0;if((h|0)<=0)break;else m=m+1|0}}c[(c[f+156>>2]|0)+4>>2]=1;c[f+100>>2]=0;n=e[r+80>>1]|0;c[f+104>>2]=n;c[f+72>>2]=1651078259;l=c[q>>2]<<6;q=f+24|0;c[q>>2]=l;r=c[p>>2]<<6;c[f+28>>2]=r;c[f+40>>2]=l;c[f+32>>2]=0;c[f+36>>2]=n<<6;hh(q,r);f=c[s>>2]|0;i=t;return f|0}c[s>>2]=6;f=6;i=t;return f|0}function Er(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0;g=c[a>>2]|0;h=c[g+132>>2]|0;f=c[b+16>>2]|0;d=c[b+8>>2]|0;if(f)d=((da(d,f)|0)+36|0)/72|0;f=d+32>>6;d=c[b>>2]|0;do if(!d)if((f|0)==((c[(c[g+32>>2]|0)+12>>2]|0)+32>>6|0)){d=h+96|0;break}else{a=23;return a|0}else if((d|0)==1){d=h+96|0;if((f|0)!=(e[d>>1]|0|0)){a=23;return a|0}}else{a=7;return a|0}while(0);ih(g,0);b=e[h+80>>1]|0;c[a+24>>2]=b<<6;c[a+28>>2]=b-(e[d>>1]|0)<<6;c[a+36>>2]=(e[h+102>>1]|0)<<6;a=0;return a|0}function Fr(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;b=c[d+132>>2]|0;ih(d,0);d=e[b+80>>1]|0;c[a+24>>2]=d<<6;c[a+28>>2]=d-(e[b+96>>1]|0)<<6;c[a+36>>2]=(e[b+102>>1]|0)<<6;return 0}function Gr(a,b){a=a|0;b=b|0;var e=0;b=c[(c[a>>2]|0)+132>>2]|0;e=d[b+104>>0]|0;c[a+16>>2]=e;c[a+20>>2]=1-e+(d[b+105>>0]|0);return 0}function Hr(a,b){a=a|0;b=b|0;b=b-(c[a+16>>2]|0)|0;return (b>>>0<(c[a+20>>2]|0)>>>0?b+1|0:0)|0}function Ir(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=(c[b>>2]|0)+1|0;e=c[a+16>>2]|0;if(d>>>0<=e>>>0){a=1;c[b>>2]=e;return a|0}f=d-e|0;e=f>>>0<(c[a+20>>2]|0)>>>0;a=e?f+1|0:0;e=e?d:0;c[b>>2]=e;return a|0}function Jr(a,b){a=a|0;b=b|0;qfa(b|0,(c[a+132>>2]|0)+4|0,156)|0;return 0}function Kr(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;l=o;n=c[b>>2]|0;j=(d|0)==0;if(!b)if(j){n=33;i=o;return n|0}else j=33;else{if(j){n=6;i=o;return n|0}m=Pd[c[n+4>>2]&511](n,40)|0;if(!m)j=64;else{j=m+0|0;k=j+40|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(k|0));c[m>>2]=d;c[m+4>>2]=e;c[m+8>>2]=0;c[m+32>>2]=0;c[m+20>>2]=0;d=m+24|0;c[d>>2]=214;c[l>>2]=2;c[l+16>>2]=m;if(g){c[l>>2]=10;e=c[b+16>>2]|0;k=b+(e<<2)+20|0;a:do if((e|0)>0){e=b+20|0;while(1){j=c[e>>2]|0;e=e+4|0;if(!(gfa(c[(c[j>>2]|0)+8>>2]|0,g)|0))break a;if(e>>>0>=k>>>0){j=0;break}}}else j=0;while(0);c[l+20>>2]=j}k=$g(b,l,f,h)|0;if(!k){n=(c[h>>2]|0)+8|0;c[n>>2]=c[n>>2]&-1025;n=0;i=o;return n|0}j=c[d>>2]|0;if(j)Bd[j&511](m);Cd[c[n+8>>2]&255](n,m);n=k;i=o;return n|0}}Cd[c[n+8>>2]&255](n,d);n=j;i=o;return n|0}function Lr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;E=i;i=i+48|0;C=E+32|0;y=E;A=E+8|0;z=E+16|0;B=E+24|0;x=c[b+60>>2]|0;f=da(d,-11796480)|0;e=mi(c[b>>2]|0,c[b+4>>2]|0)|0;if((e|0)==11796480)e=-5898240-f<<1;f=f+5898240+(c[b>>2]|0)|0;li(y,x,f);l=b+8|0;c[y>>2]=(c[y>>2]|0)+(c[l>>2]|0);m=b+12|0;n=y+4|0;c[n>>2]=(c[n>>2]|0)+(c[m>>2]|0);o=(e>>31&-11796480)+5898240|0;if(!e){C=b+(d<<5)+80|0;D=0;a[C>>0]=0;i=E;return D|0}p=A+4|0;q=z+4|0;r=B+4|0;s=b+(d<<5)+68|0;t=b+(d<<5)+64|0;u=b+(d<<5)+88|0;v=b+(d<<5)+72|0;w=b+(d<<5)+76|0;k=b+(d<<5)+80|0;j=e;while(1){if((j|0)>5898240)h=5898240;else h=(j|0)<-5898240?-5898240:j;e=f;f=h+f|0;g=((h|0)<0?0-h|0:h)>>1;li(A,x,f);c[A>>2]=(c[A>>2]|0)+(c[l>>2]|0);c[p>>2]=(c[p>>2]|0)+(c[m>>2]|0);b=(hi(g)|0)<<2;g=og(x,b,((gi(g)|0)*3|0)+196608|0)|0;li(z,g,e+o|0);c[z>>2]=(c[z>>2]|0)+(c[y>>2]|0);c[q>>2]=(c[q>>2]|0)+(c[n>>2]|0);li(B,g,f-o|0);c[B>>2]=(c[B>>2]|0)+(c[A>>2]|0);c[r>>2]=(c[r>>2]|0)+(c[p>>2]|0);g=c[s>>2]|0;e=c[t>>2]|0;b=e+3|0;c[C>>2]=0;if(b>>>0>g>>>0){d=c[u>>2]|0;e=g;do e=e+16+(e>>>1)|0;while(e>>>0>>0);b=e;c[v>>2]=Dg(d,8,g,b,c[v>>2]|0,C)|0;e=c[C>>2]|0;if(e)break;d=Dg(d,1,g,b,c[w>>2]|0,C)|0;c[w>>2]=d;e=c[C>>2]|0;if(e)break;c[s>>2]=b;b=c[t>>2]|0;e=d}else{b=e;e=c[w>>2]|0}F=c[v>>2]|0;H=z;G=c[H+4>>2]|0;g=F+(b<<3)|0;c[g>>2]=c[H>>2];c[g+4>>2]=G;g=b+1|0;G=B;H=c[G+4>>2]|0;d=F+(g<<3)|0;c[d>>2]=c[G>>2];c[d+4>>2]=H;d=b+2|0;H=A;G=c[H+4>>2]|0;F=F+(d<<3)|0;c[F>>2]=c[H>>2];c[F+4>>2]=G;a[e+b>>0]=2;a[e+g>>0]=2;a[e+d>>0]=1;c[t>>2]=(c[t>>2]|0)+3;a[k>>0]=0;b=A;d=c[b+4>>2]|0;g=y;c[g>>2]=c[b>>2];c[g+4>>2]=d;if((j|0)==(h|0)){e=k;f=0;D=17;break}else j=j-h|0}if((D|0)==17){a[e>>0]=0;i=E;return f|0}a[k>>0]=0;G=k;H=e;a[G>>0]=0;i=E;return H|0}function Mr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;i=i+16|0;c=yg(a,da(c,b)|0,d)|0;i=d;return c|0}function Nr(a,b){a=a|0;b=b|0;Ag(a,b);return}function Or(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;e=a&65535;a=a>>>16;if(!b){k=1;return k|0}if(c)do{k=c>>>0<5552?c:5552;j=c;c=c-k|0;if((k|0)>15){i=j>>>0<5552?j+-16|0:5536;h=i&-16;g=b;f=k;while(1){z=(d[g>>0]|0)+e|0;y=z+(d[g+1>>0]|0)|0;x=y+(d[g+2>>0]|0)|0;w=x+(d[g+3>>0]|0)|0;v=w+(d[g+4>>0]|0)|0;u=v+(d[g+5>>0]|0)|0;t=u+(d[g+6>>0]|0)|0;s=t+(d[g+7>>0]|0)|0;r=s+(d[g+8>>0]|0)|0;q=r+(d[g+9>>0]|0)|0;p=q+(d[g+10>>0]|0)|0;o=p+(d[g+11>>0]|0)|0;n=o+(d[g+12>>0]|0)|0;m=n+(d[g+13>>0]|0)|0;l=m+(d[g+14>>0]|0)|0;e=l+(d[g+15>>0]|0)|0;a=z+a+y+x+w+v+u+t+s+r+q+p+o+n+m+l+e|0;f=f+-16|0;if((f|0)<=15)break;else g=g+16|0}b=b+(h+16)|0;i=i-h|0}else i=j;if(i){f=b;g=i;while(1){e=(d[f>>0]|0)+e|0;a=e+a|0;g=g+-1|0;if(!g)break;else f=f+1|0}b=b+i|0}e=(e>>>0)%65521|0;a=(a>>>0)%65521|0}while((j|0)!=(k|0));z=a<<16|e;return z|0}function Pr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=b+12|0;o=c[n>>2]|0;p=a+48|0;f=c[p>>2]|0;l=a+52|0;e=c[l>>2]|0;if(f>>>0>e>>>0)e=c[a+44>>2]|0;m=e-f|0;k=b+16|0;g=c[k>>2]|0;m=m>>>0>g>>>0?g:m;j=(m|0)!=0&(d|0)==-5?0:d;c[k>>2]=g-m;g=b+20|0;c[g>>2]=m+(c[g>>2]|0);h=a+56|0;e=c[h>>2]|0;if(e){d=a+60|0;i=Hd[e&255](c[d>>2]|0,f,m)|0;c[d>>2]=i;c[b+48>>2]=i}qfa(o|0,f|0,m|0)|0;i=o+m|0;d=f+m|0;if((d|0)!=(c[a+44>>2]|0)){b=j;o=i;a=d;c[n>>2]=o;c[p>>2]=a;return b|0}f=c[a+40>>2]|0;e=c[l>>2]|0;if((e|0)==(d|0)){c[l>>2]=f;e=f}d=e-f|0;e=c[k>>2]|0;d=d>>>0>e>>>0?e:d;c[k>>2]=e-d;c[g>>2]=d+(c[g>>2]|0);e=c[h>>2]|0;if(e){h=a+60|0;a=Hd[e&255](c[h>>2]|0,f,d)|0;c[h>>2]=a;c[b+48>>2]=a}qfa(i|0,f|0,d|0)|0;b=(d|0)!=0&(j|0)==-5?0:j;o=o+(d+m)|0;a=f+d|0;c[n>>2]=o;c[p>>2]=a;return b|0}function Qr(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+192|0;F=I+128|0;G=I;H=I+64|0;r=F+4|0;n=F+0|0;o=n+64|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(o|0));n=d;o=b;while(1){E=F+(c[o>>2]<<2)|0;c[E>>2]=(c[E>>2]|0)+1;n=n+-1|0;if(!n)break;else o=o+4|0}if((c[F>>2]|0)==(d|0)){c[h>>2]=0;c[j>>2]=0;H=0;i=I;return H|0}p=c[j>>2]|0;o=1;while(1){n=o+1|0;if(c[F+(o<<2)>>2]|0)break;if(n>>>0<16)o=n;else{o=n;break}}p=p>>>0>>0?o:p;n=15;while(1){if(c[F+(n<<2)>>2]|0){E=n;break}n=n+-1|0;if(!n){E=0;break}}D=p>>>0>E>>>0?E:p;c[j>>2]=D;n=1<>>0>>0){j=o;while(1){n=n-(c[F+(j<<2)>>2]|0)|0;if((n|0)<0){n=-3;break}j=j+1|0;n=n<<1;if(j>>>0>=E>>>0){C=n;break a}}i=I;return n|0}else C=n;while(0);n=F+(E<<2)|0;B=c[n>>2]|0;if((C-B|0)<0){H=-3;i=I;return H|0}c[n>>2]=C;c[H+4>>2]=0;n=E+-1|0;if(!n){j=0;p=b}else{q=0;j=r;p=H+8|0;while(1){q=(c[j>>2]|0)+q|0;c[p>>2]=q;n=n+-1|0;if(!n){j=0;p=b;break}else{j=j+4|0;p=p+4|0}}}while(1){n=c[p>>2]|0;if(n){z=H+(n<<2)|0;A=c[z>>2]|0;c[z>>2]=A+1;c[m+(A<<2)>>2]=j}j=j+1|0;if(j>>>0>=d>>>0)break;else p=p+4|0}n=c[H+(E<<2)>>2]|0;c[H>>2]=0;c[G>>2]=0;b:do if((o|0)<=(E|0)){z=m+(n<<2)|0;A=D&255;r=-1;p=0;d=0;s=0;j=0-D|0;b=0;c:while(1){x=F+(o<<2)|0;n=c[x>>2]|0;if(!n){n=r;q=s}else{y=1<(j|0)){t=r;while(1){u=n;v=p;while(1){n=u+1|0;s=E-j|0;s=s>>>0>D>>>0?D:s;p=o-j|0;b=1<>>0>w>>>0&p>>>0>>0){p=p+1|0;if(p>>>0>>0){b=b-w|0;r=x;while(1){b=b<<1;r=r+4|0;d=c[r>>2]|0;if(b>>>0<=d>>>0){d=p;break e}p=p+1|0;if(p>>>0>=s>>>0){d=p;break}else b=b-d|0}}else d=p}else d=p;while(0);s=1<>2]|0;b=p+s|0;if(b>>>0>1440){n=-3;break c}p=k+(p<<3)|0;c[G+(n<<2)>>2]=p;c[l>>2]=b;if(n){r=p;p=j;b=u;j=v;break}c[h>>2]=p;n=j+D|0;if((o|0)>(n|0)){v=j;j=n;u=0}else{n=0;d=p;u=s;break d}}c[H+(n<<2)>>2]=q;j=q>>>j;v=c[G+(b<<2)>>2]|0;b=(r-v>>3)-j|0;u=v+(j<<3)|0;a[u>>0]=d;a[u+1>>0]=A;c[v+(j<<3)+4>>2]=b;j=p+D|0;if((o|0)<=(j|0)){d=r;t=b;j=p;u=s;break}else t=b}}else{t=r;j=p;u=b}while(0);w=w+-1|0;b=o-j|0;s=b&255;do if(m>>>0>>0){p=c[m>>2]|0;if(p>>>0>>0){m=m+4|0;r=p>>>0<256?0:96;t=p;break}else{t=p-e|0;m=m+4|0;r=(c[g+(t<<2)>>2]|0)+80&255;t=c[f+(t<<2)>>2]|0;break}}else r=-64;while(0);b=1<>>j;if(p>>>0>>0){do{v=d+(p<<3)|0;a[v>>0]=r;a[v+1>>0]=s;c[d+(p<<3)+4>>2]=t;p=p+b|0}while(p>>>0>>0);b=y}else b=y;while(1){p=b^q;if(!(b&q))break;else{q=p;b=b>>>1}}if(((1<>2]|0))do{n=n+-1|0;j=j-D|0}while(((1<>2]|0));if(!w){q=t;b=u;break}else{q=p;r=t;p=j;b=u}}}if((o|0)<(E|0)){r=n;o=o+1|0;s=q}else break b}i=I;return n|0}while(0);if((C|0)==(B|0)){H=0;i=I;return H|0}H=(E|0)!=1?-5:0;i=I;return H|0}function Rr(a,b,c){a=a|0;b=b|0;c=c|0;return b|0}function Sr(a,b,c){a=a|0;b=b|0;c=c|0;return c|0}function Tr(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=b[a+294>>1]|0;g=b[a+296>>1]|0;f=da(h,c&65535)|0;h=da(h,c>>16)|0;c=f+(h<<16)|0;a=da(g,d&65535)|0;g=da(g,d>>16)|0;d=a+(g<<16)|0;e=c+d|0;c=(h>>16)+(f>>31)+(a>>31)+(g>>16)+(c>>>0>>0&1)+(d>>>0>>0&1)+(e>>>0>>0&1)|0;d=c>>31;a=e+d|0;return (a>>>0>4294959103&1)+(a>>>0>>0&1)+c+d<<18|(a+8192|0)>>>14|0}function Ur(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=b[a+290>>1]|0;g=b[a+292>>1]|0;f=da(h,c&65535)|0;h=da(h,c>>16)|0;c=f+(h<<16)|0;a=da(g,d&65535)|0;g=da(g,d>>16)|0;d=a+(g<<16)|0;e=c+d|0;c=(h>>16)+(f>>31)+(a>>31)+(g>>16)+(c>>>0>>0&1)+(d>>>0>>0&1)+(e>>>0>>0&1)|0;d=c>>31;a=e+d|0;return (a>>>0>4294959103&1)+(a>>>0>>0&1)+c+d<<18|(a+8192|0)>>>14|0}function Vr(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;i=b[e+298>>1]|0;if(i<<16>>16){k=og(h,i<<16>>16,c[e+564>>2]|0)|0;i=g&65535;j=(c[f+16>>2]|0)+(i<<3)|0;c[j>>2]=(c[j>>2]|0)+k;i=(c[f+24>>2]|0)+i|0;a[i>>0]=d[i>>0]|0|8}i=b[e+300>>1]|0;if(!(i<<16>>16))return;e=og(h,i<<16>>16,c[e+564>>2]|0)|0;k=g&65535;j=(c[f+16>>2]|0)+(k<<3)+4|0;c[j>>2]=(c[j>>2]|0)+e;k=(c[f+24>>2]|0)+k|0;a[k>>0]=d[k>>0]|0|16;return}function Wr(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=b[a+298>>1]|0;if(g<<16>>16){h=og(f,g<<16>>16,c[a+564>>2]|0)|0;g=(c[d+12>>2]|0)+((e&65535)<<3)|0;c[g>>2]=(c[g>>2]|0)+h}g=b[a+300>>1]|0;if(!(g<<16>>16))return;a=og(f,g<<16>>16,c[a+564>>2]|0)|0;h=(c[d+12>>2]|0)+((e&65535)<<3)+4|0;c[h>>2]=(c[h>>2]|0)+a;return}function Xr(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;f=f&65535;b=(c[e+16>>2]|0)+(f<<3)|0;c[b>>2]=(c[b>>2]|0)+g;f=(c[e+24>>2]|0)+f|0;a[f>>0]=d[f>>0]|0|8;return}function Yr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;d=(c[b+12>>2]|0)+((d&65535)<<3)|0;c[d>>2]=(c[d>>2]|0)+e;return}function Zr(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;f=f&65535;b=(c[e+16>>2]|0)+(f<<3)+4|0;c[b>>2]=(c[b>>2]|0)+g;f=(c[e+24>>2]|0)+f|0;a[f>>0]=d[f>>0]|0|16;return}function _r(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;d=(c[b+12>>2]|0)+((d&65535)<<3)+4|0;c[d>>2]=(c[d>>2]|0)+e;return}function $r(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+16|0;z=B;c[z>>2]=0;q=f+4|0;t=c[q>>2]|0;m=f+12|0;u=c[m>>2]|0;o=f+8|0;v=c[o>>2]|0;r=f+16|0;w=c[r>>2]|0;p=c[f>>2]|0;s=f+24|0;c[s>>2]=0;x=f+36|0;c[x>>2]=0;c[f+44>>2]=0;c[f+56>>2]=0;c[f+72>>2]=0;c[f+84>>2]=0;h=b[g>>1]|0;l=f+32|0;j=c[l>>2]|0;do if(h>>>0>j>>>0){h=h+3&-4;y=f+40|0;c[y>>2]=Dg(p,4,j,h,c[y>>2]|0,z)|0;if(!(c[z>>2]|0)){c[l>>2]=h;break}else{A=c[z>>2]|0;i=B;return A|0}}while(0);j=g+2|0;h=b[j>>1]|0;l=h<<16>>16;k=f+20|0;n=c[k>>2]|0;do if((l+2|0)>>>0>n>>>0){h=l+11&-8;y=f+28|0;c[y>>2]=Dg(p,40,n,h,c[y>>2]|0,z)|0;if(!(c[z>>2]|0)){c[k>>2]=h;h=b[j>>1]|0;break}else{A=c[z>>2]|0;i=B;return A|0}}while(0);c[s>>2]=h<<16>>16;c[x>>2]=b[g>>1];h=f+68|0;c[h>>2]=2;l=f+96|0;c[l>>2]=-1;if((Jh(g)|0)==1){c[h>>2]=-2;c[l>>2]=1}c[q>>2]=t;c[m>>2]=u;c[o>>2]=v;c[r>>2]=w;c[f+112>>2]=0;c[f+116>>2]=0;r=c[f+28>>2]|0;h=c[s>>2]|0;if(!h){A=c[z>>2]|0;i=B;return A|0}y=r+(h*40|0)|0;m=g+12|0;l=r+((b[c[m>>2]>>1]|0)*40|0)|0;o=(h|0)>0;if(o){h=0;p=l;n=r;j=l;k=c[g+8>>2]|0;q=c[g+4>>2]|0;while(1){s=c[q>>2]|0;b[n+12>>1]=s;l=q+4|0;b[n+14>>1]=c[l>>2];s=(qg(s,t)|0)+v|0;c[n+16>>2]=s;c[n+4>>2]=s;l=(qg(c[l>>2]|0,u)|0)+w|0;c[n+20>>2]=l;c[n+8>>2]=l;l=d[k>>0]&3;if(!l)b[n>>1]=1;else if((l|0)==2)b[n>>1]=2;else b[n>>1]=0;c[n+36>>2]=j;c[j+32>>2]=n;if((n|0)==(p|0)){h=h+1|0;if((h|0)<(b[g>>1]|0)){j=r+((b[(c[m>>2]|0)+(h<<1)>>1]|0)*40|0)|0;l=j}else{l=n;j=n}}else{l=p;j=n}n=n+40|0;if(n>>>0>=y>>>0)break;else{p=l;k=k+1|0;q=q+8|0}}}h=c[f+40>>2]|0;x=c[x>>2]|0;l=h+(x<<2)|0;if((x|0)>0){j=c[m>>2]|0;k=0;while(1){c[h>>2]=r+((k<<16>>16)*40|0);k=(b[j>>1]|0)+1|0;h=h+4|0;if(h>>>0>=l>>>0)break;else j=j+2|0}}v=((e[(c[(c[f+108>>2]|0)+4>>2]|0)+68>>1]|0)*20|0)>>>11;if(o){j=r;n=4;o=0;s=0;l=0;h=0;u=r}else{A=c[z>>2]|0;i=B;return A|0}while(1){if((u|0)==(j|0)){p=c[u+36>>2]|0;h=b[p+12>>1]|0;q=(b[u+12>>1]|0)-(h<<16>>16)|0;l=b[p+14>>1]|0;r=(b[u+14>>1]|0)-(l<<16>>16)|0;o=0-q|0;a:do if((((r|0)<0?0-r|0:r)+((q|0)<0?o:q)|0)<(v|0)){k=p;while(1){if((k|0)==(u|0)){l=q;h=r;break a}k=c[k+36>>2]|0;j=h;h=b[k+12>>1]|0;j=(j<<16>>16)-(h<<16>>16)|0;m=l;l=b[k+14>>1]|0;m=(m<<16>>16)-(l<<16>>16)|0;if((((m|0)<0?0-m|0:m)+((j|0)<0?0-j|0:j)|0)>=(v|0)){l=j;h=m;break}}}else{l=q;h=r}while(0);j=(r|0)>=(o|0);if((r|0)<(q|0)){n=j?1:-2;m=j?q:r;k=j?r:q}else{n=j?2:-1;m=j?r:o;k=j?q:r}t=k*14|0;j=p+40|0;t=(((m|0)<0?0-m|0:m)|0)>(((k|0)<0?0-t|0:t)|0)?n:4}else{t=n;q=o;r=s}a[u+2>>0]=t;if((((r|0)<0?0-r|0:r)+((q|0)<0?0-q|0:q)|0)<(v|0)){b[u>>1]=e[u>>1]|1024;p=h}else{l=q;p=r}s=c[u+32>>2]|0;o=(b[s+12>>1]|0)-(b[u+12>>1]|0)|0;s=(b[s+14>>1]|0)-(b[u+14>>1]|0)|0;h=0-o|0;k=(s|0)>=(h|0);if((s|0)<(o|0)){m=k?1:-2;n=k?o:s;h=k?s:o}else{m=k?2:-1;n=k?s:h;h=k?o:s}k=h*14|0;n=(((n|0)<0?0-n|0:n)|0)>(((h|0)<0?0-k|0:k)|0)?m:4;a[u+3>>0]=n;h=b[u>>1]|0;k=h&65535;do if(!(k&3)){if((n|0)!=(t|0))if((t|0)==(0-n|0)){A=38;break}else break;if((n|0)==4){f=(k&1024|0)!=0;if(wg(f?l:q,f?p:r,o,s)|0){h=b[u>>1]|0;A=38}}else A=38}else A=38;while(0);if((A|0)==38){A=0;b[u>>1]=h&65535|256}u=u+40|0;if(u>>>0>=y>>>0)break;else h=p}A=c[z>>2]|0;i=B;return A|0}function as(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+48|0;B=C+12|0;y=C+16|0;z=C;v=c[f>>2]|0;m=c[f+40>>2]|0;k=c[f+36>>2]|0;x=m+(k<<2)|0;n=y+0|0;o=n+31|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;w=c[f+(g*28|0)+68>>2]|0;w=(w|0)<0?0-w|0:w;A=f+(g*28|0)+44|0;c[A>>2]=0;h=c[f+28>>2]|0;l=c[f+24>>2]|0;j=h+(l*40|0)|0;l=(l|0)>0;if(!g){if(l)do{c[h+24>>2]=b[h+12>>1];c[h+28>>2]=b[h+14>>1];h=h+40|0}while(h>>>0>>0)}else if(l)do{c[h+24>>2]=b[h+14>>1];c[h+28>>2]=b[h+12>>1];h=h+40|0}while(h>>>0>>0);if((k|0)<=0){B=0;i=C;return B|0}u=f+(g*28|0)+48|0;t=f+(g*28|0)+52|0;l=0;n=w;a:while(1){k=c[m>>2]|0;h=c[k+36>>2]|0;b:do if((k|0)==(h|0))h=n;else{j=a[h+3>>0]|0;s=j<<24>>24;c:do if(((j<<24>>24<0?0-s|0:s)|0)==(w|0)?(r=a[k+3>>0]|0,s=r<<24>>24,((r<<24>>24<0?0-s|0:s)|0)==(w|0)):0){while(1){s=j<<24>>24;if(((j<<24>>24<0?0-s|0:s)|0)!=(w|0))break;if((h|0)==(k|0))break c;s=c[h+36>>2]|0;j=a[s+3>>0]|0;h=s}k=c[h+32>>2]|0}while(0);j=-32e3;g=32e3;f=0;o=0;s=k;h=n;while(1){if(f){r=c[s+24>>2]|0;g=(r|0)<(g|0)?r:g;j=(r|0)>(j|0)?r:j;if((s|0)==(k|0)?1:(a[s+3>>0]|0)!=(h|0)){c[l+44>>2]=s;b[l+2>>1]=(g+j|0)>>>1;j=c[l+40>>2]|0;if((b[s>>1]|b[j>>1])&3)a[l>>0]=d[l>>0]|1;f=c[s+28>>2]|0;j=c[j+28>>2]|0;g=(j|0)<(f|0)?j:f;j=(j|0)>(f|0)?j:f;b[l+4>>1]=g;b[l+6>>1]=j;b[l+8>>1]=j-g;l=0;f=0}}else f=0;if((s|0)==(k|0))if(!(o<<24>>24))r=1;else break b;else r=o;if(!f){p=a[s+3>>0]|0;q=p<<24>>24;if(((p<<24>>24<0?0-q|0:q)|0)==(w|0)){c[B>>2]=0;h=c[A>>2]|0;l=c[u>>2]|0;if((h|0)<(l|0))j=c[t>>2]|0;else{if((l|0)>44739241){j=28;break a}h=(l>>2)+4|0;j=h+l|0;j=(h|0)<0|(j|0)>44739242?44739242:j;l=Dg(v,48,l,j,c[t>>2]|0,B)|0;c[t>>2]=l;h=c[B>>2]|0;if(h){j=46;break a}c[u>>2]=j;h=c[A>>2]|0;j=l}c[A>>2]=h+1;l=j+(h*48|0)|0;a[l>>0]=0;g=j+(h*48|0)+1|0;n=g+0|0;f=y+0|0;o=n+31|0;do{a[n>>0]=a[f>>0]|0;n=n+1|0;f=f+1|0}while((n|0)<(o|0));c[j+(h*48|0)+32>>2]=32e3;f=j+(h*48|0)+36|0;c[f+0>>2]=c[z+0>>2];c[f+4>>2]=c[z+4>>2];c[f+8>>2]=c[z+8>>2];a[g>>0]=p;g=c[s+24>>2]|0;c[j+(h*48|0)+40>>2]=s;c[j+(h*48|0)+44>>2]=s;j=g;f=1;h=q}else f=0}o=r;s=c[s+32>>2]|0}}while(0);m=m+4|0;if(m>>>0>=x>>>0){j=34;break}else n=h}if((j|0)==28){c[B>>2]=64;B=64;i=C;return B|0}else if((j|0)==34){B=c[A>>2]|0;h=c[t>>2]|0;g=h+(B*48|0)|0;if((B|0)<=0){B=0;i=C;return B|0}do{j=c[h+40>>2]|0;k=c[h+44>>2]|0;l=c[j+28>>2]|0;f=c[k+28>>2]|0;do if((j|0)!=(k|0)){j=c[(c[j+36>>2]|0)+28>>2]|0;if((l|0)<(f|0)){if((l|0)>(j|0)){B=h+8|0;b[B>>1]=(e[B>>1]|0)+((l-j|0)>>>1)}j=c[(c[k+32>>2]|0)+28>>2]|0;if((j|0)<=(f|0))break;B=h+8|0;b[B>>1]=(e[B>>1]|0)+((j-f|0)>>>1);break}else{if((j|0)>(l|0)){B=h+8|0;b[B>>1]=(e[B>>1]|0)+((j-l|0)>>>1)}j=c[(c[k+32>>2]|0)+28>>2]|0;if((f|0)<=(j|0))break;B=h+8|0;b[B>>1]=(e[B>>1]|0)+((f-j|0)>>>1);break}}while(0);h=h+48|0}while(h>>>0>>0);h=0;i=C;return h|0}else if((j|0)==46){i=C;return h|0}return 0}function bs(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;f=c[d+(e*28|0)+52>>2]|0;r=c[d+(e*28|0)+44>>2]|0;t=f+(r*48|0)|0;q=c[(c[d+108>>2]|0)+40>>2]|0;p=q<<3;p=(p+2047|0)>>>0<4095?1:(p|0)/2048|0;q=(q*6e3|0)/2048|0;r=(r|0)>0;if(!r)return;g=c[d+(e*28|0)+68>>2]|0;n=f;do{if((a[n+1>>0]|0)==(g|0)?(c[n+40>>2]|0)!=(c[n+44>>2]|0):0){h=b[n+2>>1]|0;i=n+4|0;j=n+6|0;k=h<<16>>16;l=n+32|0;m=n+20|0;o=f;do{e=b[o+2>>1]|0;if((e<<16>>16>h<<16>>16?(g|0)==(0-(a[o+1>>0]|0)|0):0)?(s=b[i>>1]|0,v=b[j>>1]|0,d=b[o+4>>1]|0,w=b[o+6>>1]|0,s=((v<<16>>16>w<<16>>16?w:v)<<16>>16)-((s<<16>>16>16?d:s)<<16>>16)|0,(s|0)>=(p|0)):0){e=((q|0)/(s|0)|0)+((e<<16>>16)-k)|0;if((e|0)<(c[l>>2]|0)){c[l>>2]=e;c[m>>2]=o}d=o+32|0;if((e|0)<(c[d>>2]|0)){c[d>>2]=e;c[o+20>>2]=n}}o=o+48|0}while(o>>>0>>0)}n=n+48|0}while(n>>>0>>0);if(!r)return;do{e=f+20|0;d=c[e>>2]|0;if((d|0)!=0?(u=d+20|0,(c[u>>2]|0)!=(f|0)):0){c[e>>2]=0;c[f+24>>2]=c[u>>2]}f=f+48|0}while(f>>>0>>0);return}function cs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+16|0;j=n;e=c[a>>2]|0;if((e|0)==1){i=n;return}if(e>>>0>1){g=1;do{a:do if(g){h=g;do{e=b+(h*12|0)|0;h=h+-1|0;f=b+(h*12|0)|0;if((c[e>>2]|0)>=(c[f>>2]|0))break a;c[j+0>>2]=c[e+0>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[e+0>>2]=c[f+0>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[f+0>>2]=c[j+0>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2]}while((h|0)!=0)}while(0);g=g+1|0;e=c[a>>2]|0}while(g>>>0>>0);m=e>>>0>1;if(m){k=0;l=c[b>>2]|0;f=1;while(1){h=((c[b+(f*12|0)>>2]|0)-l|0)>(d|0);j=e+-1|0;g=(f|0)==(j|0);if(h|g){if(!h)f=(g&1)+f|0;if(k>>>0>>0){g=k;h=0;do{o=b+(g*12|0)|0;h=(c[o>>2]|0)+h|0;c[o>>2]=0;g=g+1|0}while((g|0)!=(f|0));g=f}else{g=k;h=0}c[b+(k*12|0)>>2]=(h>>>0)/(g>>>0)|0;if(f>>>0>>0){g=f+1|0;h=g;g=c[b+(g*12|0)>>2]|0}else{h=k;g=l}}else{h=k;g=l}f=f+1|0;if(f>>>0>=e>>>0)break;else{k=h;l=g}}if(m){g=e;e=1;h=1;while(1){f=b+(h*12|0)|0;if(!(c[f>>2]|0))f=g;else{o=b+(e*12|0)|0;c[o+0>>2]=c[f+0>>2];c[o+4>>2]=c[f+4>>2];c[o+8>>2]=c[f+8>>2];f=c[a>>2]|0;e=e+1|0}h=h+1|0;if(h>>>0>=f>>>0)break;else g=f}}else e=1}else e=1}else e=1;c[a>>2]=e;i=n;return}function ds(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if((a|0)==0|(b|0)==0)return;c[a+44>>2]=0;c[a+48>>2]=0;d=a+52|0;Ag(b,c[d>>2]|0);c[d>>2]=0;c[a+56>>2]=0;c[a+60>>2]=0;d=a+64|0;Ag(b,c[d>>2]|0);c[d>>2]=0;c[a+72>>2]=0;c[a+76>>2]=0;d=a+80|0;Ag(b,c[d>>2]|0);c[d>>2]=0;c[a+84>>2]=0;c[a+88>>2]=0;d=a+92|0;Ag(b,c[d>>2]|0);c[d>>2]=0;d=a+40|0;Ag(b,c[d>>2]|0);c[d>>2]=0;c[a+32>>2]=0;c[a+36>>2]=0;d=a+28|0;Ag(b,c[d>>2]|0);c[d>>2]=0;c[a+24>>2]=0;c[a+20>>2]=0;c[a>>2]=0;return}function es(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;j=(f|0)==0;if(j){h=e+12|0;g=e+4|0}else{h=e+16|0;g=e+8|0}l=c[g>>2]|0;n=c[h>>2]|0;g=d+(f*704|0)+740|0;h=d+(f*704|0)+744|0;if((c[g>>2]|0)==(l|0)?(c[h>>2]|0)==(n|0):0)return;c[g>>2]=l;c[h>>2]=n;m=d+964|0;h=c[m>>2]|0;a:do if(h){g=0;while(1){if(c[d+(g*28|0)+992>>2]&4)break;g=g+1|0;if(g>>>0>=h>>>0)break a}i=qg(c[d+(g*28|0)+980>>2]|0,c[e+8>>2]|0)|0;g=b[(c[(c[d+4>>2]|0)+88>>2]|0)+12>>1]|0;h=c[(c[d+36>>2]|0)+12>>2]|0;if(!h)g=40;else g=(g&65535)>>>0<=h>>>0&(g&65535)>5?52:40;g=g+i&-64;if((i|0)!=(g|0)&(f|0)==1)l=og(l,g,i)|0}while(0);c[d+(f*704|0)+44>>2]=l;c[d+(f*704|0)+48>>2]=n;if(j){c[d+8>>2]=l;c[d+16>>2]=n}else{c[d+12>>2]=l;c[d+20>>2]=n}g=d+(f*704|0)+52|0;if(c[g>>2]|0){h=0;do{k=qg(c[d+(f*704|0)+(h*12|0)+56>>2]|0,l)|0;c[d+(f*704|0)+(h*12|0)+60>>2]=k;c[d+(f*704|0)+(h*12|0)+64>>2]=k;h=h+1|0}while(h>>>0<(c[g>>2]|0)>>>0)}a[d+(f*704|0)+256>>0]=(qg(c[d+(f*704|0)+252>>2]|0,l)|0)<40&1;if((f|0)!=1)return;if(!(c[m>>2]|0))return;else k=0;do{j=d+(k*28|0)+968|0;g=(qg(c[j>>2]|0,l)|0)+n|0;h=d+(k*28|0)+972|0;c[h>>2]=g;i=d+(k*28|0)+976|0;c[i>>2]=g;g=d+(k*28|0)+980|0;f=(qg(c[g>>2]|0,l)|0)+n|0;c[d+(k*28|0)+984>>2]=f;e=d+(k*28|0)+988|0;c[e>>2]=f;f=d+(k*28|0)+992|0;c[f>>2]=c[f>>2]&-2;g=qg((c[j>>2]|0)-(c[g>>2]|0)|0,l)|0;if((g+48|0)>>>0<97){j=(g|0)<0;g=j?0-g|0:g;if((g|0)<32)g=0;else g=(g|0)<48?32:64;h=(c[h>>2]|0)+32&-64;c[i>>2]=h;c[e>>2]=h-(j?0-g|0:g);c[f>>2]=c[f>>2]|1}k=k+1|0}while(k>>>0<(c[m>>2]|0)>>>0);return}function fs(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=i;i=i+16|0;w=A;g=as(e,f)|0;if(g){z=g;i=A;return z|0}bs(e,f);t=e+(f*28|0)+44|0;u=c[e>>2]|0;m=(c[e+108>>2]|0)+44|0;h=c[e+(f*28|0)+52>>2]|0;j=c[t>>2]|0;r=h+(j*48|0)|0;x=e+(f*28|0)+56|0;c[x>>2]=0;q=(f|0)==0;g=e+12|0;s=c[(q?e+4|0:g)>>2]|0;if(q)q=rg(64,c[g>>2]|0)|0;else q=0;p=qg(c[m+(f*704|0)+204>>2]|0,s)|0;p=rg((p|0)>16?16:p,s)|0;a:do if((j|0)>0){o=q*3|0;l=e+(f*28|0)+64|0;b:while(1){k=b[h+8>>1]|0;c:do if((k|0)>=(q|0)?!((c[h+24>>2]|0)!=0&(k<<1|0)<(o|0)):0){e=c[x>>2]|0;d:do if((e|0)>0){n=c[l>>2]|0;g=b[h+2>>1]|0;k=g<<16>>16;m=h+1|0;j=0;while(1){f=n+(j*48|0)|0;B=k-(b[f>>1]|0)|0;if((((B|0)<0?0-B|0:B)|0)<(p|0)?(v=a[n+(j*48|0)+13>>0]|0,v<<24>>24==(a[m>>0]|0)):0){m=v;break}j=j+1|0;if((j|0)>=(e|0)){z=16;break d}}if(f){c[h+16>>2]=c[n+(j*48|0)+40>>2];B=n+(j*48|0)+44|0;c[(c[B>>2]|0)+16>>2]=h;c[B>>2]=h;break c}}else{m=h+1|0;g=b[h+2>>1]|0;z=16}while(0);if((z|0)==16){z=0;m=a[m>>0]|0}g=Tt(t,g<<16>>16,m<<24>>24,u,w)|0;if(g)break b;g=h+1|0;m=h+2|0;j=c[w>>2]|0;f=j+0|0;e=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(e|0));c[j+40>>2]=h;c[j+44>>2]=h;a[j+13>>0]=a[g>>0]|0;B=b[m>>1]|0;b[j>>1]=B;B=qg(B<<16>>16,s)|0;c[j+4>>2]=B;c[j+8>>2]=B;c[h+16>>2]=h}while(0);h=h+48|0;if(h>>>0>=r>>>0){g=l;break a}}i=A;return g|0}else g=e+(f*28|0)+64|0;while(0);j=c[g>>2]|0;B=c[x>>2]|0;r=j+(B*48|0)|0;if((B|0)>0)h=j;else{B=0;i=A;return B|0}do{g=c[h+40>>2]|0;if(g){f=g;do{c[f+12>>2]=h;f=c[f+16>>2]|0}while((f|0)!=(g|0))}h=h+48|0}while(h>>>0>>0);do{n=c[j+40>>2]|0;p=j+24|0;q=j+28|0;h=0;g=0;o=n;do{l=(a[o>>0]&1^1)&255;h=(l^1)+h|0;g=l+g|0;l=o+24|0;f=c[l>>2]|0;if((f|0)!=0?(y=c[f+12>>2]|0,(y|0)!=0):0)k=(y|0)!=(j|0)&1;else k=0;e=o+20|0;f=c[e>>2]|0;if(!f){if(k<<24>>24)z=32}else if(!((c[f+12>>2]|0)==0&k<<24>>24==0))z=32;do if((z|0)==32){z=0;m=k<<24>>24!=0;k=c[(m?l:e)>>2]|0;f=c[(m?q:p)>>2]|0;if(!((f|0)!=0?(B=(b[j>>1]|0)-(b[f>>1]|0)|0,x=(b[o+2>>1]|0)-(b[k+2>>1]|0)|0,(((x|0)<0?0-x|0:x)|0)>=(((B|0)<0?0-B|0:B)|0)):0))f=c[k+12>>2]|0;if(m){c[q>>2]=f;B=f+12|0;a[B>>0]=d[B>>0]|2;break}else{c[p>>2]=f;break}}while(0);o=c[o+16>>2]|0}while((o|0)!=(n|0));a[j+12>>0]=((h|0)<1|(h|0)<(g|0))&1^1;if((c[q>>2]|0)!=0?(c[p>>2]|0)!=0:0)c[q>>2]=0;j=j+48|0}while(j>>>0>>0);g=0;i=A;return g|0}function gs(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=d+44|0;m=(e|0)==1;if(!(b&4))return f|0;if(a[l+(e*704|0)+212>>0]|0)return f|0;n=(f|0)<0?0-f|0:f;if(m)if(!(b&2))if((h&2|0)!=0&(n|0)<192)d=n;else o=7;else o=19;else if(!(b&1))o=7;else o=19;do if((o|0)==7){if(!(g&1))h=(n|0)<56?56:n;else h=(n|0)<80?64:n;if(c[l+(e*704|0)+8>>2]|0){d=c[l+(e*704|0)+16>>2]|0;o=h-d|0;if((((o|0)<0?0-o|0:o)|0)<40){d=(d|0)<48?48:d;break}if((h|0)>=192){d=h+32&-64;break}d=h&63;g=h&-64;if(d>>>0>=10)if(d>>>0<32){d=g|10;break}else{d=d>>>0<54?g|54:h;break}else d=h}else d=h}else if((o|0)==19){h=c[l+(e*704|0)+8>>2]|0;if((h|0)>0){j=98;k=0;g=n;while(1){p=c[l+(e*704|0)+(k*12|0)+16>>2]|0;d=n-p|0;d=(d|0)<0?0-d|0:d;i=(d|0)<(j|0);g=i?p:g;k=k+1|0;if((k|0)==(h|0))break;else j=i?d:j}d=g+32&-64;if((g|0)>(n|0))d=(d+-48|0)<(n|0)?g:n;else o=23}else{d=n+32&-64;g=n;o=23}if((o|0)==23)d=(d|48|0)>(n|0)?g:n;if(m){if((d|0)<=63){d=64;break}d=d+16&-64;break}if(b&8){if((d|0)<64){d=64;break}d=d+32&-64;break}if((d|0)<48){d=d+64>>1;break}if((d|0)>=128){d=d+32&-64;break}d=d+22&-64;p=d-n|0;if((((p|0)<0?0-p|0:p)|0)>15)if((n|0)<48)d=n+64>>1;else d=n}while(0);p=(f|0)>-1?d:0-d|0;return p|0}function hs(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;f=c[a+28>>2]|0;s=c[a+24>>2]|0;v=f+(s*40|0)|0;w=c[a+(d*28|0)+64>>2]|0;a=c[a+(d*28|0)+56>>2]|0;u=(d|0)==0;t=u?64:128;if(!((a|0)>0&(s|0)>0))return;n=(d|0)==1;o=w+8|0;p=w+4|0;s=a+-1|0;q=w+(s*48|0)|0;r=w+(s*48|0)+8|0;s=w+(s*48|0)+4|0;m=a*48|0;k=(m|0)/48|0;l=(m|0)<432;m=(m|0)>0;do{j=e[f>>1]|0;if(!((j&t|0)!=0|(j&768|0)==256)){if(n){a=f+8|0;j=b[f+14>>1]|0}else{a=f+4|0;j=b[f+12>>1]|0}d=c[a>>2]|0;a=b[w>>1]|0;a:do if(((a<<16>>16)-j|0)>-1)a=(c[o>>2]|0)+d-(c[p>>2]|0)|0;else{if((j-(b[q>>1]|0)|0)>-1){a=(c[r>>2]|0)+d-(c[s>>2]|0)|0;break}b:do if(l){c:do if(m){d=a;g=0;while(1){a=g+1|0;if((d<<16>>16|0)>=(j|0)){a=g;break c}if((a|0)>=(k|0))break c;d=b[w+(a*48|0)>>1]|0;g=a}}else a=0;while(0);if((b[w+(a*48|0)>>1]|0)==(j|0)){a=c[w+(a*48|0)+8>>2]|0;break a}}else{d=k;h=0;while(1){while(1){if((h|0)>=(d|0)){a=h;break b}a=d+h>>1;g=b[w+(a*48|0)>>1]|0;if((j|0)<(g|0))d=a;else break}if((j|0)>(g|0))h=a+1|0;else break}a=c[w+(a*48|0)+8>>2]|0;break a}while(0);h=a+-1|0;d=w+(h*48|0)|0;g=w+(h*48|0)+16|0;i=c[g>>2]|0;if(!i){h=w+(h*48|0)+8|0;a=rg((c[w+(a*48|0)+8>>2]|0)-(c[h>>2]|0)|0,(b[w+(a*48|0)>>1]|0)-(b[d>>1]|0)|0)|0;c[g>>2]=a;g=h}else{g=w+(h*48|0)+8|0;a=i}h=c[g>>2]|0;a=(qg(j-(b[d>>1]|0)|0,a)|0)+h|0}while(0);if(u)c[f+16>>2]=a;else c[f+20>>2]=a;b[f>>1]=e[f>>1]|t}f=f+40|0}while(f>>>0>>0);return}function is(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=c[a+28>>2]|0;r=c[a+24>>2]|0;s=d+(r*40|0)|0;g=c[a+40>>2]|0;f=c[a+36>>2]|0;q=g+(f<<2)|0;p=(b|0)==0;a=(r|0)>0;if(p)if(a){a=d;do{c[a+24>>2]=c[a+16>>2];c[a+28>>2]=c[a+4>>2];a=a+40|0}while(a>>>0>>0);o=64}else o=64;else if(a){a=d;do{c[a+24>>2]=c[a+20>>2];c[a+28>>2]=c[a+8>>2];a=a+40|0}while(a>>>0>>0);o=128}else o=128;if((f|0)>0)do{f=c[g>>2]|0;n=c[f+36>>2]|0;a:do if(f>>>0<=n>>>0){a=f;while(1){b=a;a=a+40|0;if((e[b>>1]|0)&o)break;if(a>>>0>n>>>0)break a}i=b;b:while(1){m=i>>>0>>0;if(m){h=i+40|0;if((e[i+40>>1]|0)&o){i=h;continue}}else h=i+40|0;if(h>>>0>n>>>0){j=m;break}else{l=i;j=h}while(1){k=l+80|0;if((e[l+40>>1]|0)&o)break;if(k>>>0>n>>>0){j=m;break b}else{l=j;j=k}}Ut(h,j+-40|0,i,j);i=j}if((i|0)!=(b|0)){if(j)Ut(h,n,i,b);if(b>>>0<=d>>>0)break;Ut(f,b+-40|0,i,b);break}l=c[b+24>>2]|0;m=c[b+28>>2]|0;j=l-m|0;if((l|0)!=(m|0)){if(f>>>0>>0)do{c[f+24>>2]=(c[f+28>>2]|0)+j;f=f+40|0}while(f>>>0>>0);if(a>>>0<=n>>>0){f=a;while(1){c[b+64>>2]=(c[b+68>>2]|0)+j;a=b+80|0;if(a>>>0>n>>>0)break;else{b=f;f=a}}}}}while(0);g=g+4|0}while(g>>>0>>0);a=(r|0)>0;if(p){if(!a)return;do{c[d+16>>2]=c[d+24>>2];d=d+40|0}while(d>>>0>>0);return}else{if(!a)return;do{c[d+20>>2]=c[d+24>>2];d=d+40|0}while(d>>>0>>0);return}}function js(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+1584|0;q=r+1456|0;k=r;p=r+1452|0;f=c[e+100>>2]|0;g=q+0|0;h=g+120|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));c[q>>2]=f;l=d+52|0;c[l>>2]=0;m=d+756|0;c[m>>2]=0;f=Zg(e,c[(c[d>>2]|0)+16>>2]|0)|0;a:do if((((f|0)!=0?(kg(e,f,1)|0)==0:0)?(j=c[e+84>>2]|0,(b[j+110>>1]|0)>=1):0)?(sfa(k|0,0,1452)|0,n=k+40|0,c[n>>2]=c[d+40>>2],c[k+8>>2]=65536,c[k+12>>2]=65536,c[k+16>>2]=0,c[k+20>>2]=0,c[k+4>>2]=e,c[k+24>>2]=0,c[k+28>>2]=0,c[q+108>>2]=k,c[q+100>>2]=0,($r(q,j+108|0)|0)==0):0){k=0;do{c[p>>2]=0;if(as(q,k)|0)break a;bs(q,k);f=c[q+(k*28|0)+52>>2]|0;e=c[q+(k*28|0)+44>>2]|0;j=f+(e*48|0)|0;if((e|0)>0){g=0;do{h=c[f+20>>2]|0;if(((h|0)!=0?(h>>>0>f>>>0?(c[h+20>>2]|0)==(f|0):0):0)?(o=(b[f+2>>1]|0)-(b[h+2>>1]|0)|0,g>>>0<16):0){e=g+1|0;c[p>>2]=e;c[d+(k*704|0)+(g*12|0)+56>>2]=(o|0)<0?0-o|0:o;g=e}f=f+48|0}while(f>>>0>>0)}cs(p,d+(k*704|0)+56|0,((c[n>>2]|0)>>>0)/100|0);c[d+(k*704|0)+52>>2]=c[p>>2];k=k+1|0}while((k|0)<2)}while(0);g=d+40|0;if(!(c[l>>2]|0))f=((c[g>>2]|0)*50|0)/2048|0;else f=c[d+56>>2]|0;c[d+248>>2]=(f|0)/5|0;c[d+252>>2]=f;a[d+256>>0]=0;if(!(c[m>>2]|0)){o=((c[g>>2]|0)*50|0)/2048|0;l=(o|0)/5|0;p=d+952|0;c[p>>2]=l;p=d+956|0;c[p>>2]=o;d=d+960|0;a[d>>0]=0;ds(q);i=r;return}else{o=c[d+760>>2]|0;l=(o|0)/5|0;p=d+952|0;c[p>>2]=l;p=d+956|0;c[p>>2]=o;d=d+960|0;a[d>>0]=0;ds(q);i=r;return}}function ks(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!d){e=b+12|0;b=b+4|0}else{e=b+16|0;b=b+8|0}l=c[b>>2]|0;k=c[e>>2]|0;b=a+(d*704|0)+740|0;e=a+(d*704|0)+744|0;if((c[b>>2]|0)==(l|0)?(c[e>>2]|0)==(k|0):0)return;c[b>>2]=l;c[e>>2]=k;c[a+(d*704|0)+44>>2]=l;c[a+(d*704|0)+48>>2]=k;f=a+(d*704|0)+260|0;if(!(c[f>>2]|0))return;else j=0;do{m=a+(d*704|0)+(j*28|0)+264|0;e=(qg(c[m>>2]|0,l)|0)+k|0;b=a+(d*704|0)+(j*28|0)+268|0;c[b>>2]=e;g=a+(d*704|0)+(j*28|0)+272|0;c[g>>2]=e;e=a+(d*704|0)+(j*28|0)+276|0;i=(qg(c[e>>2]|0,l)|0)+k|0;c[a+(d*704|0)+(j*28|0)+280>>2]=i;h=a+(d*704|0)+(j*28|0)+284|0;c[h>>2]=i;i=a+(d*704|0)+(j*28|0)+288|0;c[i>>2]=c[i>>2]&-2;if(((qg((c[m>>2]|0)-(c[e>>2]|0)|0,l)|0)+48|0)>>>0<97){b=(c[b>>2]|0)+32&-64;c[g>>2]=b;b=rg(b,l)|0;b=b-(c[e>>2]|0)|0;e=(b|0)<0;b=qg(e?0-b|0:b,l)|0;if((b|0)<32)b=0;else b=b+32&-64;c[h>>2]=(c[g>>2]|0)-(e?0-b|0:b);c[i>>2]=c[i>>2]|1}j=j+1|0}while(j>>>0<(c[f>>2]|0)>>>0);return}function ls(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=i;i=i+16|0;O=Q;M=f+(g*28|0)+52|0;h=c[M>>2]|0;m=f+(g*28|0)+44|0;p=c[m>>2]|0;n=h+(p*48|0)|0;l=as(f,g)|0;if(l){P=l;i=Q;return P|0}if((p|0)>0)do{l=c[h+40>>2]|0;k=c[h+44>>2]|0;p=b[l>>1]|0;q=d[h>>0]|0;a[h>>0]=q&254;a:do if((l|0)!=(k|0)){j=p&3;p=l;do{p=c[p+32>>2]|0;E=j;j=e[p>>1]&3;if(!(j|E))break a}while((p|0)!=(k|0));a[h>>0]=q|1}while(0);h=h+48|0}while(h>>>0>>0);j=c[M>>2]|0;w=c[m>>2]|0;z=j+(w*48|0)|0;k=c[f+(g*28|0)+68>>2]|0;B=f+108|0;q=(c[(c[B>>2]|0)+40>>2]<<3|0)/2048|0;E=(g|0)==0?f+4|0:f+12|0;A=rg(192,c[E>>2]|0)|0;if((w|0)>0){v=j;do{if((c[v+40>>2]|0)!=(c[v+44>>2]|0)?(a[v+1>>0]|0)==(k|0):0){n=v+2|0;m=v+4|0;o=v+6|0;r=v+32|0;s=v+36|0;t=v+20|0;w=j;do{do if((((w|0)!=(v|0)?(k|0)==(0-(a[w+1>>0]|0)|0):0)?(x=(b[w+2>>1]|0)-(b[n>>1]|0)|0,(x|0)>=0):0)?(y=b[m>>1]|0,l=b[o>>1]|0,u=b[w+4>>1]|0,p=b[w+6>>1]|0,y=((l<<16>>16>p<<16>>16?p:l)<<16>>16)-((y<<16>>16>16?u:y)<<16>>16)|0,(y|0)>=(q|0)):0){u=x<<3;h=c[r>>2]|0;do if((u|0)<(h*9|0)){if((u|0)>=(h*7|0)?(c[s>>2]|0)>=(y|0):0)break;c[r>>2]=x;c[s>>2]=y;c[t>>2]=w}while(0);p=w+32|0;l=c[p>>2]|0;if((u|0)<(l*9|0)){h=w+36|0;if((u|0)>=(l*7|0)?(c[h>>2]|0)>=(y|0):0)break;c[p>>2]=x;c[h>>2]=y;c[w+20>>2]=v}}while(0);w=w+48|0}while(w>>>0>>0)}v=v+48|0}while(v>>>0>>0);o=j;do{k=o+20|0;q=c[k>>2]|0;b:do if((((q|0)!=0?(C=q+20|0,(c[C>>2]|0)==(o|0)):0)?(D=b[q+2>>1]|0,F=b[o+2>>1]|0,D<<16>>16>F<<16>>16):0)?(G=c[o+32>>2]|0,(G|0)<(A|0)):0){n=o+36|0;m=G<<2;r=j;while(1){h=b[r+2>>1]|0;if(((((!((o|0)==(r|0)?1:h<<16>>16>F<<16>>16)?(H=c[r+20>>2]|0,(H|0)!=0):0)?(c[H+20>>2]|0)==(r|0):0)?(I=b[H+2>>1]|0,I<<16>>16>=D<<16>>16):0)?!(F<<16>>16==h<<16>>16?D<<16>>16==I<<16>>16:0):0)?(y=c[r+32>>2]|0,(y|0)>(G|0)&(m|0)>(y|0)):0){if((c[n>>2]|0)<((c[r+36>>2]|0)*3|0))break;else l=j;do{h=l+20|0;p=c[h>>2]|0;do if((p|0)==(r|0)){c[h>>2]=0;c[l+24>>2]=q}else{if((p|0)!=(H|0))break;c[h>>2]=0;c[l+24>>2]=o}while(0);l=l+48|0}while(l>>>0>>0)}r=r+48|0;if(r>>>0>=z>>>0)break b}c[C>>2]=0;c[k>>2]=0}while(0);o=o+48|0}while(o>>>0>>0);do{h=j+20|0;l=c[h>>2]|0;do if((l|0)!=0?(J=l+28|0,K=c[J>>2]|0,c[J>>2]=K+1,L=l+20|0,(c[L>>2]|0)!=(j|0)):0){c[h>>2]=0;I=c[l+32>>2]|0;if((I|0)>=(A|0)?(c[j+32>>2]|0)>=(I<<2|0):0){c[J>>2]=K;break}c[j+24>>2]=c[L>>2]}while(0);j=j+48|0}while(j>>>0>>0)}C=f+(g*28|0)+44|0;D=c[f>>2]|0;h=(c[B>>2]|0)+44|0;l=c[M>>2]|0;j=c[C>>2]|0;A=l+(j*48|0)|0;B=f+(g*28|0)+56|0;c[B>>2]=0;z=c[E>>2]|0;h=h+(g*704|0)+204|0;if((qg(c[h>>2]|0,z)|0)>16)y=rg(16,z)|0;else y=c[h>>2]|0;x=f+(g*28|0)+64|0;c:do if((j|0)>0){w=l;while(1){s=c[B>>2]|0;if((s|0)>0){t=c[x>>2]|0;h=a[w+1>>0]|0;p=w+2|0;u=w+20|0;j=65535;v=0;r=0;while(1){l=t+(v*48|0)|0;do if((a[t+(v*48|0)+13>>0]|0)==h<<24>>24?(N=(b[p>>1]|0)-(b[l>>1]|0)|0,N=(N|0)<0?0-N|0:N,(N|0)<(y|0)&(N|0)<(j|0)):0){k=c[u>>2]|0;if(k){o=c[t+(v*48|0)+40>>2]|0;n=k+2|0;k=0;m=o;do{q=c[m+20>>2]|0;if(q){M=b[n>>1]|0;k=M<<16>>16;g=b[q+2>>1]|0;f=g<<16>>16;k=M<<16>>16>g<<16>>16?k-f|0:f-k|0;if((k|0)>=(y|0))break}m=c[m+16>>2]|0}while((m|0)!=(o|0));if((k|0)>=(y|0)){l=r;break}}j=N}else l=r;while(0);v=v+1|0;if((v|0)==(s|0))break;else r=l}if(!l)P=72;else{c[w+16>>2]=c[l+40>>2];f=l+44|0;c[(c[f>>2]|0)+16>>2]=w;c[f>>2]=w}}else{p=w+2|0;h=a[w+1>>0]|0;P=72}if((P|0)==72){P=0;h=Tt(C,b[p>>1]|0,h<<24>>24,D,O)|0;if(h)break;h=w+1|0;l=c[O>>2]|0;j=l+0|0;k=j+40|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));c[l+40>>2]=w;c[l+44>>2]=w;f=b[p>>1]|0;b[l>>1]=f;f=qg(f<<16>>16,z)|0;c[l+8>>2]=f;c[l+4>>2]=f;c[w+16>>2]=w;a[(c[O>>2]|0)+13>>0]=a[h>>0]|0}w=w+48|0;if(w>>>0>=A>>>0)break c}i=Q;return h|0}while(0);l=c[x>>2]|0;P=c[B>>2]|0;t=l+(P*48|0)|0;if((P|0)>0)j=l;else{P=0;i=Q;return P|0}do{h=c[j+40>>2]|0;if(h){k=h;do{c[k+12>>2]=j;k=c[k+16>>2]|0}while((k|0)!=(h|0))}j=j+48|0}while(j>>>0>>0);do{p=c[l+40>>2]|0;r=l+24|0;s=l+28|0;j=0;h=0;q=p;do{n=(a[q>>0]&1^1)&255;j=(n^1)+j|0;h=n+h|0;n=q+24|0;k=c[n>>2]|0;if(!k)k=0;else k=(c[k+12>>2]|0)!=(l|0)&1;m=q+20|0;do if(!((c[m>>2]|0)==0&k<<24>>24==0)){o=k<<24>>24!=0;m=c[(o?n:m)>>2]|0;k=c[(o?s:r)>>2]|0;if(!((k|0)!=0?(P=(b[l>>1]|0)-(b[k>>1]|0)|0,L=b[q+2>>1]|0,f=L<<16>>16,M=b[m+2>>1]|0,g=M<<16>>16,((L<<16>>16>M<<16>>16?f-g|0:g-f|0)|0)>=(((P|0)<0?0-P|0:P)|0)):0))k=c[m+12>>2]|0;if(o){c[s>>2]=k;P=k+12|0;a[P>>0]=d[P>>0]|2;break}else{c[r>>2]=k;break}}while(0);q=c[q+16>>2]|0}while((q|0)!=(p|0));a[l+12>>0]=((j|0)<1|(j|0)<(h|0))&1^1;if((c[s>>2]|0)!=0?(c[r>>2]|0)!=0:0)c[s>>2]=0;l=l+48|0}while(l>>>0>>0);h=0;i=Q;return h|0}function ms(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=c[d+(f*28|0)+64>>2]|0;o=c[d+(f*28|0)+56>>2]|0;p=g+(o*48|0)|0;q=c[e+(f*704|0)+44>>2]|0;n=qg(((c[e+40>>2]|0)>>>0)/40|0,q)|0;n=(n|0)>32?32:n;if((o|0)<=0)return;o=e+(f*704|0)+260|0;m=d+(f*28|0)+68|0;d=c[o>>2]|0;h=d;while(1){if(h){l=g+13|0;h=d;k=0;d=0;j=n;while(1){i=e+(f*704|0)+(k*28|0)+264|0;r=c[e+(f*704|0)+(k*28|0)+288>>2]|0;if((r&1|0)!=0?((a[l>>0]|0)==(c[m>>2]|0)|r&2|0)!=0:0){r=b[g>>1]|0;t=r-(c[i>>2]|0)|0;s=e+(f*704|0)+(k*28|0)+276|0;h=r-(c[s>>2]|0)|0;s=(((t|0)<0?0-t|0:t)|0)>(((h|0)<0?0-h|0:h)|0)?s:i;i=r-(c[s>>2]|0)|0;i=qg((i|0)<0?0-i|0:i,q)|0;r=(i|0)<(j|0);h=c[o>>2]|0;d=r?s:d;i=r?i:j}else i=j;k=k+1|0;if(k>>>0>=h>>>0)break;else j=i}if(!d){i=h;d=h}else{c[g+20>>2]=d;i=h;d=h}}else i=0;g=g+48|0;if(g>>>0>=p>>>0)break;else h=i}return}function ns(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=b+44|0;m=(d|0)==1;if(!(a&4))return e|0;b=(e|0)<0?0-e|0:e;if(m)if(!(a&2))n=5;else n=15;else if(!(a&1))n=5;else n=15;do if((n|0)==5){if((c[l+(d*704|0)+8>>2]|0)!=0?(f=c[l+(d*704|0)+16>>2]|0,n=b-f|0,(((n|0)<0?0-n|0:n)|0)<40):0){b=(f|0)<48?48:f;break}if((b|0)<54){b=((54-b|0)/2|0)+b|0;break}if((b|0)<192?(g=b&63,h=b&-64,g>>>0>=10):0)if(g>>>0<22){b=h|10;break}else{b=(g+-42|0)>>>0<12?h|54:b;break}}else if((n|0)==15){f=c[l+(d*704|0)+8>>2]|0;if((f|0)>0){j=98;k=0;g=b;while(1){o=c[l+(d*704|0)+(k*12|0)+16>>2]|0;h=b-o|0;h=(h|0)<0?0-h|0:h;i=(h|0)<(j|0);g=i?o:g;k=k+1|0;if((k|0)==(f|0))break;else j=i?h:j}f=g+32&-64;if((g|0)>(b|0))b=(f+-48|0)<(b|0)?g:b;else n=19}else{f=b+32&-64;g=b;n=19}if((n|0)==19)b=(f|48|0)>(b|0)?g:b;if(m){if((b|0)<=63){b=64;break}b=b+16&-64;break}if(a&8){if((b|0)<64){b=64;break}b=b+32&-64;break}if((b|0)<48){b=b+64>>1;break}if((b|0)<128){b=b+22&-64;break}else{b=b+32&-64;break}}while(0);o=(e|0)>-1?b:0-b|0;return o|0}function os(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;h=c[b+104>>2]|0;l=(h&4|0)==0;do if(l){if((a[d+12>>0]&1)!=0?(a[e+12>>0]&1)!=0:0){k=(g|0)==1?55:49;break}k=(g|0)==1?61:59}else k=64;while(0);m=c[e+4>>2]|0;n=c[d+4>>2]|0;j=ns(h,c[b+108>>2]|0,g,m-n|0)|0;i=((n+m|0)/2|0)+f+((j|0)/-2|0)|0;h=i&63;g=i+j&63;b=64-h|0;f=64-g|0;do if((h|0)==0|(g|0)==0)h=0;else{if((j|0)<=(k|0)){if((g|0)>=(j|0)){h=0;break}h=b>>>0>g>>>0?0-g|0:b;break}if(k>>>0<64?!(h>>>0>>0&k>>>0>b>>>0&k>>>0>g>>>0&f>>>0>>0):0){h=0;break}h=j&63;if(h>>>0<32){if(!(b>>>0>h>>>0&g>>>0>h>>>0)){h=0;break}}else h=64-k|0;f=k-b|0;o=b-h|0;b=k-g|0;k=g-h|0;h=(f|0)>(o|0)?o:0-f|0;k=(k|0)>(b|0)?b:0-k|0;h=(((h|0)<0?0-h|0:h)|0)>(((k|0)<0?0-k|0:k)|0)?k:h}while(0);if(l)if((h|0)>14)h=14;else h=(h|0)<-14?-14:h;o=h+i|0;k=(m|0)>(n|0);n=o+j|0;c[d+8>>2]=k?o:n;c[e+8>>2]=k?n:o;return h|0}function ps(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;X=i;i=i+64|0;k=X+48|0;M=X;P=X+24|0;Q=X+40|0;j=c[d>>2]|0;R=c[d+8>>2]|0;T=c[d+132>>2]|0;m=d+12|0;U=c[j+84>>2]|0;V=c[U+156>>2]|0;j=kg(j,f,g|8192)|0;if(j){W=j;i=X;return W|0}J=a[V+8>>0]|0;N=d+136|0;a[N>>0]=J;if(J<<24>>24){I=d+140|0;J=V+12|0;c[I+0>>2]=c[J+0>>2];c[I+4>>2]=c[J+4>>2];c[I+8>>2]=c[J+8>>2];c[I+12>>2]=c[J+12>>2];J=d+156|0;F=V+28|0;G=c[F+4>>2]|0;H=J;c[H>>2]=c[F>>2];c[H+4>>2]=G;c[k+0>>2]=c[I+0>>2];c[k+4>>2]=c[I+4>>2];c[k+8>>2]=c[I+8>>2];c[k+12>>2]=c[I+12>>2];sg(k)|0;Yg(J,k)}O=U+72|0;j=c[O>>2]|0;a:do if((j|0)==1869968492){if(a[N>>0]|0)Xg(U+108|0,c[d+156>>2]|0,c[d+160>>2]|0);q=U+110|0;k=b[q>>1]|0;l=(k<<16>>16)+4|0;if((l|0)!=0?((b[R+22>>1]|0)+l+(b[R+58>>1]|0)|0)>>>0>(c[R+4>>2]|0)>>>0:0){j=b[U+108>>1]|0;W=12}else{j=b[U+108>>1]|0;if(j<<16>>16!=0?((b[R+20>>1]|0)+(j<<16>>16)+(b[R+56>>1]|0)|0)>>>0>(c[R+8>>2]|0)>>>0:0)W=12;else j=k}do if((W|0)==12){j=Eg(R,l,j<<16>>16)|0;if(!j){j=b[q>>1]|0;break}else{W=j;i=X;return W|0}}while(0);k=R+56|0;qfa(c[R+60>>2]|0,c[U+112>>2]|0,j<<16>>16<<3|0)|0;L=U+108|0;qfa(c[R+68>>2]|0,c[U+120>>2]|0,b[L>>1]<<1|0)|0;qfa(c[R+64>>2]|0,c[U+116>>2]|0,b[q>>1]|0)|0;b[R+58>>1]=b[q>>1]|0;b[k>>1]=b[L>>1]|0;L=d+20|0;o=d+164|0;c[o>>2]=c[L>>2];g=d+28|0;c[d+168>>2]=c[g>>2];M=qg(c[U+40>>2]|0,c[d+16>>2]|0)|0;n=d+172|0;c[n>>2]=(c[L>>2]|0)+M;c[d+176>>2]=c[g>>2];if(!(b[q>>1]|0))j=0;else{j=c[(c[2072+(c[(c[T>>2]|0)+8>>2]<<2)>>2]|0)+24>>2]|0;if(j)Hd[j&255](m,k,T)|0;do if((c[e+20>>2]|0)==1){L=c[o>>2]|0;g=c[n>>2]|0;J=L+32+(c[d+124>>2]|0)&-64;c[o>>2]=J;M=g+32+(c[d+128>>2]|0)&-64;c[n>>2]=M;c[U+144>>2]=J-L;c[U+148>>2]=M-g}else{k=c[d+76>>2]|0;g=c[d+68>>2]|0;j=g+-1|0;if((g|0)>1?(c[d+112>>2]&4|0)==0:0){r=(c[n>>2]|0)-(c[k+(j*48|0)+4>>2]|0)|0;g=c[k+4>>2]|0;M=c[k+8>>2]|0;q=M-g|0;l=c[k+(j*48|0)+8>>2]|0;m=l+r|0;q=(g|0)<24?q+-8|0:q;m=(r|0)<24?m+8|0:m;k=q+32&-64;c[o>>2]=k;j=m+32&-64;c[n>>2]=j;if((k|0)>=(M|0)&(g|0)>0){k=k+-64|0;c[o>>2]=k}if((j|0)<=(l|0)&(r|0)>0){j=j+64|0;c[n>>2]=j}c[U+144>>2]=k-q;c[U+148>>2]=j-m;break}L=c[o>>2]|0;g=c[n>>2]|0;J=L+32&-64;c[o>>2]=J;M=g+32&-64;c[n>>2]=M;c[U+144>>2]=J-L;c[U+148>>2]=M-g}while(0);Hg(R);j=0}}else if((j|0)==1668246896){G=c[U+128>>2]|0;H=R+20|0;I=R+22|0;J=b[I>>1]|0;j=Fg(R,G)|0;if(j){W=j;i=X;return W|0}qfa(c[R+88>>2]|0,c[U+132>>2]|0,G<<5|0)|0;c[R+84>>2]=G;s=c[R+48>>2]|0;if(G){t=R+52|0;u=d+164|0;v=d+172|0;w=h+1|0;x=R+24|0;y=M+4|0;z=M+2|0;A=d+16|0;B=d+20|0;C=d+24|0;D=d+28|0;F=0;while(1){p=F+s|0;m=u;q=c[m>>2]|0;m=c[m+4>>2]|0;l=v;k=c[l>>2]|0;l=c[l+4>>2]|0;r=b[I>>1]|0;E=r<<16>>16;j=ps(d,e,c[(c[t>>2]|0)+(p<<5)>>2]|0,g,w)|0;if(j){W=59;break}n=c[t>>2]|0;o=n+(p<<5)+4|0;j=b[o>>1]|0;if(!(j&512)){j=u;c[j>>2]=q;c[j+4>>2]=m;j=v;c[j>>2]=k;c[j+4>>2]=l;j=b[o>>1]|0}q=b[I>>1]|0;m=q<<16>>16;k=m-E|0;if((j&200)!=0?(K=c[x>>2]|0,L=K+(m<<3)|0,q<<16>>16>r<<16>>16):0){j=n+(p<<5)+16|0;q=K+(E<<3)|0;do{Yg(q,j);q=q+8|0}while(q>>>0>>0);j=b[o>>1]|0}q=c[n+(p<<5)+8>>2]|0;if(!(j&2)){j=c[n+(p<<5)+12>>2]|0;q=q+J|0;if(!(q>>>0>>0&j>>>0>>0)){j=21;W=59;break}p=c[x>>2]|0;j=E+J+j|0;m=(c[p+(q<<3)>>2]|0)-(c[p+(j<<3)>>2]|0)|0;j=(c[p+(q<<3)+4>>2]|0)-(c[p+(j<<3)+4>>2]|0)|0}else{o=qg(q,c[A>>2]|0)|0;m=c[B>>2]|0;j=qg(c[n+(p<<5)+12>>2]|0,c[C>>2]|0)|0;m=o+32+m&-64;j=j+32+(c[D>>2]|0)&-64};c[M+0>>2]=c[H+0>>2];c[M+4>>2]=c[H+4>>2];c[M+8>>2]=c[H+8>>2];c[M+12>>2]=c[H+12>>2];c[M+16>>2]=c[H+16>>2];c[y>>2]=(c[y>>2]|0)+(E<<3);b[z>>1]=k;Xg(M,m,j);F=F+1|0;if(F>>>0>=G>>>0){j=0;break a}}if((W|0)==59){i=X;return j|0}}else j=0}else j=7;while(0);if(h){W=j;i=X;return W|0}l=U+44|0;m=U+32|0;n=U+48|0;o=U+36|0;h=(c[n>>2]|0)-(c[o>>2]|0)|0;p=Q+4|0;r=T+8|0;c[Q>>2]=qg((c[l>>2]|0)-(c[m>>2]|0)|0,c[r>>2]|0)|0;s=T+12|0;c[p>>2]=qg(h,c[s>>2]|0)|0;if(a[N>>0]|0){N=d+140|0;Wg(R+20|0,N);Yg(Q,N)}q=d+164|0;k=c[q>>2]|0;j=R+20|0;if(k)Xg(j,0-k|0,0);Ih(j,P);h=c[P>>2]&-64;c[P>>2]=h;L=P+4|0;g=c[L>>2]&-64;c[L>>2]=g;L=P+8|0;M=(c[L>>2]|0)+63&-64;c[L>>2]=M;L=P+12|0;N=(c[L>>2]|0)+63&-64;c[L>>2]=N;c[U+24>>2]=M-h;c[U+28>>2]=N-g;c[m>>2]=h;c[o>>2]=N;c[l>>2]=(c[Q>>2]|0)+h&-64;c[n>>2]=(c[p>>2]|0)+N&-64;do if((c[e+20>>2]|0)==1)W=55;else{if(!(c[(c[U+4>>2]|0)+8>>2]&4)){j=c[d+4>>2]|0;if((c[j+4>>2]|0)>>>0<=f>>>0){W=55;break}if((a[(c[j+8>>2]|0)+f>>0]|0)>-1){W=55;break}if(!(a[T+32>>0]|0)){W=55;break}}Q=U+40|0;c[Q>>2]=qg(c[Q>>2]|0,c[r>>2]|0)|0;c[U+144>>2]=0;c[U+148>>2]=0}while(0);if((W|0)==55?(S=U+40|0,(c[S>>2]|0)!=0):0)c[S>>2]=(c[d+172>>2]|0)-(c[q>>2]|0);j=U+52|0;W=qg(c[j>>2]|0,c[s>>2]|0)|0;Q=U+40|0;c[Q>>2]=(c[Q>>2]|0)+32&-64;c[j>>2]=W+32&-64;zg(c[V>>2]|0);j=Ig(c[V>>2]|0,R)|0;if(j){W=j;i=X;return W|0}W=c[V>>2]|0;b[U+108>>1]=b[W+20>>1]|0;b[U+110>>1]=b[W+22>>1]|0;c[U+112>>2]=c[W+24>>2];c[U+116>>2]=c[W+28>>2];c[U+120>>2]=c[W+32>>2];c[O>>2]=1869968492;W=0;i=X;return W|0}function qs(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;f=r+4|0;p=r;q=a+8|0;h=c[q>>2]|0;n=a+4|0;if((h+3|0)>>>0>=(c[n>>2]|0)>>>0){e=85;i=r;return e|0}o=a+20|0;g=c[o>>2]|0;do if(!g){j=(c[a>>2]|0)+h|0;if(!j){k=h;j=0}else{g=h;m=6}}else if((Xd[g&255](a,h,p,4)|0)==4){g=c[q>>2]|0;j=p;m=6;break}else{e=85;i=r;return e|0}while(0);if((m|0)==6){k=g;j=(d[j+1>>0]|0)<<16|(d[j>>0]|0)<<24|(d[j+2>>0]|0)<<8|(d[j+3>>0]|0)}h=k+4|0;c[q>>2]=h;if((j|0)!=(b|0)){e=2;i=r;return e|0}if((k+7|0)>>>0>=(c[n>>2]|0)>>>0){e=85;i=r;return e|0}g=c[o>>2]|0;do if(g){if((Xd[g&255](a,h,p,4)|0)!=4){e=85;i=r;return e|0}h=c[q>>2]|0;g=c[o>>2]|0;c[q>>2]=h+4;j=h+20|0;if(g)if(!(Xd[g&255](a,j,0,0)|0)){g=c[n>>2]|0;break}else{e=85;i=r;return e|0}else{g=j;m=15}}else{c[q>>2]=k+8;g=k+24|0;m=15}while(0);if((m|0)==15){k=c[n>>2]|0;if(k>>>0>>0){e=85;i=r;return e|0}else{j=g;g=k}}c[q>>2]=j;if((h+21|0)>>>0>=g>>>0){e=85;i=r;return e|0}g=c[o>>2]|0;do if(!g){f=(c[a>>2]|0)+j|0;if(!f){c[q>>2]=h+22;e=2;i=r;return e|0}else g=j}else if((Xd[g&255](a,j,f,2)|0)==2){g=c[q>>2]|0;break}else{e=85;i=r;return e|0}while(0);l=(d[f>>0]|0)<<8|(d[f+1>>0]|0);f=g+2|0;c[q>>2]=f;if(!l){e=2;i=r;return e|0}b=1;a:while(1){if((f+3|0)>>>0>=(c[n>>2]|0)>>>0){f=85;m=48;break}g=c[o>>2]|0;if(!g){g=(c[a>>2]|0)+f|0;if(!g){c[q>>2]=f+4;f=f+12|0;m=44}else m=30}else{if((Xd[g&255](a,f,p,4)|0)!=4){f=85;m=48;break}f=c[q>>2]|0;g=p;m=30}do if((m|0)==30){m=0;k=(d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0);g=f+4|0;c[q>>2]=g;if((k|0)!=2){g=c[o>>2]|0;f=f+12|0;if(!g){m=44;break}if(!(Xd[g&255](a,f,0,0)|0)){m=45;break}else{f=85;m=48;break a}}j=c[n>>2]|0;if((f+7|0)>>>0>>0){f=c[o>>2]|0;if(!f){h=(c[a>>2]|0)+g|0;if(!h){k=g;f=0}else{f=g;m=36}}else{if((Xd[f&255](a,g,p,4)|0)!=4)break;f=c[q>>2]|0;j=c[n>>2]|0;h=p;m=36}if((m|0)==36){m=0;k=f;f=(d[h+1>>0]|0)<<16|(d[h>>0]|0)<<24|(d[h+2>>0]|0)<<8|(d[h+3>>0]|0)}g=k+4|0;c[q>>2]=g;if((k+7|0)>>>0>>0){j=c[o>>2]|0;if(!j)break a;if((Xd[j&255](a,g,p,4)|0)==4){m=40;break a}}}}while(0);if((m|0)==44)if((c[n>>2]|0)>>>0>>0){f=85;m=48;break}else m=45;if((m|0)==45)c[q>>2]=f;if((b|0)>=(l|0)){f=2;m=48;break}f=c[q>>2]|0;b=b+1|0}if((m|0)==40)g=c[q>>2]|0;else if((m|0)==48){i=r;return f|0}c[q>>2]=g+4;c[e>>2]=f;e=0;i=r;return e|0}function rs(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=tfa(d|0)|0;g=g+1+(tfa(e|0)|0)|0;if((g|0)>0){f=Pd[c[b+4>>2]&511](b,g)|0;h=(f|0)==0;b=h?64:0;if(h)f=0;else sfa(f|0,0,g|0)|0}else{f=0;b=g>>31&6}if(b){h=0;return h|0}b=Zca(d,47)|0;if(!b)a[f>>0]=0;else{h=b-d+1|0;zfa(f|0,d|0,h|0)|0;a[f+h>>0]=0;d=b+1|0}ufa(f|0,e|0)|0;ufa(f|0,d|0)|0;h=f;return h|0}function ss(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+400|0;w=B;s=B+264|0;y=B+256|0;c[y>>2]=0;A=j+32|0;k=c[A>>2]|0;g=(k|0)==0;if(g)u=0;else u=c[k+278664>>2]|0;if(!(ffa(e,3472,7)|0)){if((c[(c[j+36>>2]|0)+8>>2]|0)==0|g){j=0;i=B;return j|0}g=e+7|0;if(!(a[g>>0]|0)){f=f+-7|0;e=g}else{f=f+-8|0;e=e+8|0}A=c[k+278664>>2]|0;c[w>>2]=0;m=k+88|0;j=c[m>>2]|0;l=f+1|0;g=k+84|0;k=Dg(A,1,j,j+l|0,c[g>>2]|0,w)|0;c[g>>2]=k;g=c[w>>2]|0;if(!g){g=c[m>>2]|0;qfa(k+g|0,e|0,f|0)|0;a[k+(g+f)>>0]=10;c[m>>2]=(c[m>>2]|0)+l;g=c[w>>2]|0}c[y>>2]=g;j=g;i=B;return j|0}g=c[j>>2]|0;if(!(g&1)){m=j+139320|0;f=c[m>>2]|0;if(ffa(e,3480,9)|0){c[y>>2]=176;j=176;i=B;return j|0}c[j>>2]=1;c[A>>2]=0;k=yg(f,278692,y)|0;g=c[y>>2]|0;if(g){j=g;i=B;return j|0}c[A>>2]=k;c[k+278664>>2]=c[m>>2];c[m>>2]=0;l=k+278676|0;c[w>>2]=0;c[k+278680>>2]=241;c[l>>2]=80;c[k+278684>>2]=0;c[k+278688>>2]=Dg(f,4,0,241,0,w)|0;g=c[w>>2]|0;c[y>>2]=g;if(!g){m=0;k=3496}else{j=g;i=B;return j|0}while(1){g=Vt(c[k>>2]|0,m,l,f)|0;c[y>>2]=g;if(g){z=151;break}m=m+1|0;if(m>>>0>=83)break;else k=k+16|0}if((z|0)==151){i=B;return g|0}g=yg(f,16,y)|0;c[(c[A>>2]|0)+128>>2]=g;k=c[y>>2]|0;if(k){j=k;i=B;return j|0}c[w>>2]=0;c[g+4>>2]=241;c[g>>2]=80;c[g+8>>2]=0;c[g+12>>2]=Dg(f,4,0,241,0,w)|0;g=c[w>>2]|0;c[y>>2]=g;if(g){j=g;i=B;return j|0}A=c[A>>2]|0;c[A+28>>2]=c[(c[j+36>>2]|0)+12>>2];c[A+36>>2]=-1;j=c[y>>2]|0;i=B;return j|0}if(!(ffa(e,4824,15)|0)){if(!(g&8)){c[y>>2]=179;j=179;i=B;return j|0}m=j+139304|0;g=Wt(m,4840,e,f)|0;c[y>>2]=g;if(g){j=g;i=B;return j|0}g=c[(c[m>>2]|0)+4>>2]|0;do if(g){m=a[g>>0]|0;if(m<<24>>24==48){z=a[g+1>>0]|0;if(z<<24>>24==88|z<<24>>24==120){m=g+2|0;g=m;e=16;m=a[m>>0]|0;f=4976}else{e=10;m=48;f=5176}}else if(!(m<<24>>24)){g=0;break}else{e=10;f=5176}k=m<<24>>24;if(d[f+((m&255)>>>3)>>0]&1<<(k&7)){l=g;m=k;g=0;do{g=da(g,e)|0;g=(d[5008+m>>0]|0)+g|0;l=l+1|0;z=a[l>>0]|0;m=z<<24>>24}while((1<<(m&7)&d[f+((z&255)>>>3)>>0]|0)!=0)}else g=0}else g=0;while(0);c[(c[A>>2]|0)+72>>2]=g;c[j+4>>2]=g;g=Dg(u,16,0,g,0,y)|0;k=c[A>>2]|0;c[k+80>>2]=g;g=c[y>>2]|0;if(!g){c[j>>2]=c[j>>2]|16;c[h>>2]=47;j=0;i=B;return j|0}else{c[k+72>>2]=0;j=g;i=B;return j|0}}if(!(ffa(e,4848,15)|0)){if(!(g&4)){c[y>>2]=178;j=178;i=B;return j|0}m=j+139304|0;g=Wt(m,4840,e,f)|0;c[y>>2]=g;if(g){j=g;i=B;return j|0}p=c[m>>2]|0;g=c[p+4>>2]|0;if((g|0)!=0?(l=a[g>>0]|0,l<<24>>24!=0):0){e=l<<24>>24==45;g=e?g+1|0:g;m=a[g>>0]|0;if(m<<24>>24==48){z=a[g+1>>0]|0;if(z<<24>>24==88|z<<24>>24==120){m=g+2|0;f=16;g=m;m=a[m>>0]|0;l=4976}else{f=10;m=48;l=5176}}else{f=10;l=5176}k=m<<24>>24;if(!(d[l+((m&255)>>>3)>>0]&1<<(k&7)))g=0;else{m=g;g=0;do{g=da(g,f)|0;m=m+1|0;g=(d[5008+k>>0]|0)+g<<16>>16;z=a[m>>0]|0;k=z<<24>>24}while((1<<(k&7)&d[l+((z&255)>>>3)>>0]|0)!=0)}g=(e?0-g|0:g)&65535}else g=0;o=c[A>>2]|0;b[o+4>>1]=g;g=c[p+8>>2]|0;if((g|0)!=0?(n=a[g>>0]|0,n<<24>>24!=0):0){e=n<<24>>24==45;g=e?g+1|0:g;m=a[g>>0]|0;if(m<<24>>24==48){A=a[g+1>>0]|0;if(A<<24>>24==88|A<<24>>24==120){m=g+2|0;f=16;g=m;m=a[m>>0]|0;l=4976}else{f=10;m=48;l=5176}}else{f=10;l=5176}k=m<<24>>24;if(!(d[l+((m&255)>>>3)>>0]&1<<(k&7)))g=0;else{m=g;g=0;do{g=da(g,f)|0;m=m+1|0;g=(d[5008+k>>0]|0)+g<<16>>16;A=a[m>>0]|0;k=A<<24>>24}while((1<<(k&7)&d[l+((A&255)>>>3)>>0]|0)!=0)}h=(e?0-g|0:g)&65535}else h=0;b[o+6>>1]=h;g=c[p+12>>2]|0;if((g|0)!=0?(t=a[g>>0]|0,t<<24>>24!=0):0){e=t<<24>>24==45;g=e?g+1|0:g;m=a[g>>0]|0;if(m<<24>>24==48){A=a[g+1>>0]|0;if(A<<24>>24==88|A<<24>>24==120){m=g+2|0;f=16;g=m;m=a[m>>0]|0;l=4976}else{f=10;m=48;l=5176}}else{f=10;l=5176}k=m<<24>>24;if(!(d[l+((m&255)>>>3)>>0]&1<<(k&7)))g=0;else{m=g;g=0;do{g=da(g,f)|0;m=m+1|0;g=(d[5008+k>>0]|0)+g<<16>>16;A=a[m>>0]|0;k=A<<24>>24}while((1<<(k&7)&d[l+((A&255)>>>3)>>0]|0)!=0)}g=(e?0-g|0:g)&65535}else g=0;b[o+8>>1]=g;g=c[p+16>>2]|0;if((g|0)!=0?(x=a[g>>0]|0,x<<24>>24!=0):0){e=x<<24>>24==45;g=e?g+1|0:g;k=a[g>>0]|0;if(k<<24>>24==48){A=a[g+1>>0]|0;if(A<<24>>24==88|A<<24>>24==120){k=g+2|0;f=16;g=k;k=a[k>>0]|0;l=4976}else{f=10;k=48;l=5176}}else{f=10;l=5176}m=k<<24>>24;if(!(d[l+((k&255)>>>3)>>0]&1<<(m&7)))g=0;else{k=g;g=0;do{g=da(g,f)|0;k=k+1|0;g=(d[5008+m>>0]|0)+g<<16>>16;A=a[k>>0]|0;m=A<<24>>24}while((1<<(m&7)&d[l+((A&255)>>>3)>>0]|0)!=0)}g=(e?0-g|0:g)&65535}else g=0;b[o+10>>1]=g;A=g&65535;b[o+12>>1]=A+(h&65535);b[o+14>>1]=0-A;c[j>>2]=c[j>>2]|8;j=0;i=B;return j|0}if(!(ffa(e,4864,4)|0)){h=j+139304|0;g=Wt(h,4840,e,f)|0;c[y>>2]=g;if(g){j=g;i=B;return j|0}n=j+139312|0;g=c[n>>2]|0;do if(g){if(g>>>0<2){c[n>>2]=0;break}k=g+-1|0;g=0;m=1;while(1){z=c[h>>2]|0;c[z+(g<<2)>>2]=c[z+(m<<2)>>2];g=g+1|0;if((g|0)==(k|0))break;else m=m+1|0}c[n>>2]=k;if(k){l=c[c[h>>2]>>2]|0;f=l;e=1;g=0;while(1){m=a[f>>0]|0;if(m<<24>>24){while(1){f=f+1|0;k=g+1|0;a[l+g>>0]=m;m=a[f>>0]|0;if(!(m<<24>>24)){g=k;break}else g=k}k=c[n>>2]|0}if(e>>>0>>0){a[l+g>>0]=32;k=c[n>>2]|0;g=g+1|0}if(e>>>0>=k>>>0)break;f=c[(c[h>>2]|0)+(e<<2)>>2]|0;e=e+1|0}if((l|0)!=356424){a[l+g>>0]=0;if(!l)break}else l=356424;Ag(u,c[c[A>>2]>>2]|0);c[c[A>>2]>>2]=0;k=g+1|0;g=Dg(u,1,0,k,0,y)|0;c[c[A>>2]>>2]=g;m=c[y>>2]|0;if(m){j=m;i=B;return j|0}qfa(g|0,l|0,k|0)|0;g=c[A>>2]|0;m=c[j+36>>2]|0;if((((g|0)!=0?(o=c[g>>2]|0,(o|0)!=0):0)?(a[o>>0]|0)!=0:0)?(r=c[g+278664>>2]|0,c[s+0>>2]=0,c[s+4>>2]=0,c[s+8>>2]=0,q=s+12|0,c[q>>2]=r,r=g+28|0,c[r>>2]=c[m+12>>2],p=(tfa(o|0)|0)+1|0,p>>>0<=255):0){qfa(w|0,o|0,p|0)|0;k=Wt(s,5224,w,p)|0;l=(k|0)==0;a:do if(l){if((c[s+8>>2]|0)!=15)break;switch(a[c[(c[s>>2]|0)+44>>2]>>0]|0){case 99:case 67:{c[r>>2]=32;break a}case 109:case 77:{c[r>>2]=16;break a}case 112:case 80:{c[r>>2]=8;break a}default:break a}}while(0);g=c[q>>2]|0;if(g){Ag(g,c[s>>2]|0);c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0}c[y>>2]=k;if(!l){j=k;i=B;return j|0}c[j>>2]=c[j>>2]|2;j=0;i=B;return j|0}c[y>>2]=6;j=6;i=B;return j|0}}while(0);c[y>>2]=3;j=3;i=B;return j|0}if(ffa(e,4872,4)|0){if(ffa(e,4880,5)|0){c[y>>2]=3;j=3;i=B;return j|0}if(!(g&8)){c[y>>2]=179;j=179;i=B;return j|0}g=b[k+12>>1]|0;c[k+40>>2]=g;c[w>>2]=g;Xea(s,4888,w)|0;g=Yt(c[A>>2]|0,4896,s)|0;c[y>>2]=g;if(g){j=g;i=B;return j|0}j=c[A>>2]|0;g=b[j+14>>1]|0;c[j+44>>2]=g;c[w>>2]=g;Xea(s,4888,w)|0;g=Yt(c[A>>2]|0,4912,s)|0;c[y>>2]=g;if(g){j=g;i=B;return j|0}b[(c[A>>2]|0)+278660>>1]=1;c[h>>2]=48;c[y>>2]=-1;j=-1;i=B;return j|0}if(!(g&2)){c[y>>2]=177;j=177;i=B;return j|0}m=j+139304|0;g=Wt(m,4840,e,f)|0;c[y>>2]=g;if(g){j=g;i=B;return j|0}h=c[m>>2]|0;g=c[h+4>>2]|0;do if(g){m=a[g>>0]|0;if(!(m<<24>>24)){g=0;break}else if(m<<24>>24==48){y=a[g+1>>0]|0;if(y<<24>>24==88|y<<24>>24==120){m=g+2|0;g=m;f=16;m=a[m>>0]|0;l=4976}else{f=10;m=48;l=5176}}else{f=10;l=5176}k=m<<24>>24;if(d[l+((m&255)>>>3)>>0]&1<<(k&7)){m=g;g=0;do{g=da(g,f)|0;g=(d[5008+k>>0]|0)+g|0;m=m+1|0;y=a[m>>0]|0;k=y<<24>>24}while((1<<(k&7)&d[l+((y&255)>>>3)>>0]|0)!=0)}else g=0}else g=0;while(0);n=c[A>>2]|0;c[n+16>>2]=g;g=c[h+8>>2]|0;do if(g){m=a[g>>0]|0;if(!(m<<24>>24)){g=0;break}else if(m<<24>>24==48){A=a[g+1>>0]|0;if(A<<24>>24==88|A<<24>>24==120){m=g+2|0;g=m;f=16;m=a[m>>0]|0;l=4976}else{f=10;m=48;l=5176}}else{f=10;l=5176}k=m<<24>>24;if(d[l+((m&255)>>>3)>>0]&1<<(k&7)){m=g;g=0;do{g=da(g,f)|0;g=(d[5008+k>>0]|0)+g|0;m=m+1|0;A=a[m>>0]|0;k=A<<24>>24}while((1<<(k&7)&d[l+((A&255)>>>3)>>0]|0)!=0)}else g=0}else g=0;while(0);c[n+20>>2]=g;g=c[h+12>>2]|0;do if(g){m=a[g>>0]|0;if(!(m<<24>>24)){g=0;break}else if(m<<24>>24==48){A=a[g+1>>0]|0;if(A<<24>>24==88|A<<24>>24==120){m=g+2|0;g=m;f=16;m=a[m>>0]|0;l=4976}else{f=10;m=48;l=5176}}else{f=10;l=5176}k=m<<24>>24;if(d[l+((m&255)>>>3)>>0]&1<<(k&7)){m=g;g=0;do{g=da(g,f)|0;g=(d[5008+k>>0]|0)+g|0;m=m+1|0;A=a[m>>0]|0;k=A<<24>>24}while((1<<(k&7)&d[l+((A&255)>>>3)>>0]|0)!=0)}else g=0}else g=0;while(0);c[n+24>>2]=g;if((c[j+139312>>2]|0)==5){g=c[h+16>>2]|0;if((g|0)!=0?(v=a[g>>0]|0,v<<24>>24!=0):0){e=v<<24>>24==45;g=e?g+1|0:g;k=a[g>>0]|0;if(k<<24>>24==48){A=a[g+1>>0]|0;if(A<<24>>24==88|A<<24>>24==120){k=g+2|0;f=16;g=k;k=a[k>>0]|0;l=4976}else{f=10;k=48;l=5176}}else{f=10;l=5176}m=k<<24>>24;if(!(d[l+((k&255)>>>3)>>0]&1<<(m&7)))g=0;else{k=g;g=0;do{g=da(g,f)|0;k=k+1|0;g=(d[5008+m>>0]|0)+g<<16>>16;A=a[k>>0]|0;m=A<<24>>24}while((1<<(m&7)&d[l+((A&255)>>>3)>>0]|0)!=0)}l=e?0-g|0:g;m=l&65535;g=n+278662|0;b[g>>1]=m;if(m<<16>>16){k=0;e=0;while(1){k=(m&1)==0?k:e;m=(m&65535)>>>1;if(!(m<<16>>16))break;else e=e+1<<16>>16}if((k&65535)>3)k=8;else z=139}else{l=0;k=0;z=139}}else{g=n+278662|0;b[g>>1]=0;l=0;k=0;z=139}if((z|0)==139)k=1<<(k&65535)&65535;if((l&65535|0)!=(k|0))b[g>>1]=k<<1}else b[n+278662>>1]=1;c[j>>2]=c[j>>2]|4;j=0;i=B;return j|0}function ts(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;if(!a)return;h=c[a+278664>>2]|0;Ag(h,c[a>>2]|0);c[a>>2]=0;e=a+128|0;b=c[e>>2]|0;if(b){g=c[b+4>>2]|0;b=b+12|0;if((g|0)>0){f=c[b>>2]|0;d=0;while(1){Ag(h,c[f>>2]|0);c[f>>2]=0;d=d+1|0;if((d|0)==(g|0))break;else f=f+4|0}}Ag(h,c[b>>2]|0);c[b>>2]=0;Ag(h,c[e>>2]|0);c[e>>2]=0}e=a+84|0;Ag(h,c[e>>2]|0);c[e>>2]=0;e=a+72|0;f=c[e>>2]|0;g=a+80|0;b=c[g>>2]|0;if(f){d=0;do{if((c[b+(d<<4)+4>>2]|0)==1){Ag(h,c[b+(d<<4)+12>>2]|0);c[(c[g>>2]|0)+(d<<4)+12>>2]=0;b=c[g>>2]|0;f=c[e>>2]|0}d=d+1|0}while(d>>>0>>0)}Ag(h,b);c[g>>2]=0;g=a+56|0;b=a+52|0;if(c[b>>2]|0){f=c[g>>2]|0;d=0;while(1){Ag(h,c[f>>2]|0);c[f>>2]=0;e=f+24|0;Ag(h,c[e>>2]|0);c[e>>2]=0;d=d+1|0;if(d>>>0>=(c[b>>2]|0)>>>0)break;else f=f+36|0}}b=a+68|0;f=a+64|0;if(c[f>>2]|0){d=c[b>>2]|0;e=0;while(1){Ag(h,c[d>>2]|0);c[d>>2]=0;i=d+24|0;Ag(h,c[i>>2]|0);c[i>>2]=0;e=e+1|0;if(e>>>0>=(c[f>>2]|0)>>>0)break;else d=d+36|0}}Ag(h,c[g>>2]|0);c[g>>2]=0;Ag(h,c[b>>2]|0);c[b>>2]=0;b=a+104|0;d=a+112|0;if(c[d>>2]|0){f=c[b>>2]|0;e=0;while(1){Ag(h,c[f>>2]|0);c[f>>2]=0;g=f+24|0;Ag(h,c[g>>2]|0);c[g>>2]=0;e=e+1|0;if(e>>>0>=(c[d>>2]|0)>>>0)break;else f=f+36|0}}Ag(h,c[b>>2]|0);c[b>>2]=0;b=c[a+278680>>2]|0;d=a+278688|0;if((b|0)>0){f=c[d>>2]|0;e=0;while(1){Ag(h,c[f>>2]|0);c[f>>2]=0;e=e+1|0;if((e|0)==(b|0))break;else f=f+4|0}}Ag(h,c[d>>2]|0);c[d>>2]=0;f=a+278668|0;b=a+278672|0;if(c[b>>2]|0){d=0;e=c[f>>2]|0;while(1){Ag(h,c[e>>2]|0);c[e>>2]=0;if((c[e+4>>2]|0)==1){a=e+12|0;Ag(h,c[a>>2]|0);c[a>>2]=0}d=d+1|0;if(d>>>0>=(c[b>>2]|0)>>>0)break;else e=e+16|0}}Ag(h,c[f>>2]|0);c[f>>2]=0;return}function us(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;n=q+4|0;p=q;o=c[e+28>>2]|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;c[b>>2]=e;j=b+4|0;c[j>>2]=Qh(e)|0;g=Nh(e,p)|0;do if(!(c[p>>2]|0)){k=g&65535;if(!(g<<16>>16)){b=0;i=q;return b|0}h=bi(e,p)|0;if(!(c[p>>2]|0)){g=h&255;if((h+-1&255)>3){c[p>>2]=8;break}c[b+8>>2]=k;l=b+12|0;a[l>>0]=h;m=da(g,k+1|0)|0;c[b+16>>2]=m+3+(c[j>>2]|0);m=Mh(e,da(g,k)|0)|0;c[p>>2]=m;if(!m){j=Lh(c[b>>2]|0,n,d[l>>0]|0)|0;m=(j|0)==0;if(!m){c[p>>2]=j;break}g=a[l>>0]|0;if(g<<24>>24){h=g&255;k=0;g=0;do{g=d[n+k>>0]|0|g<<8;k=k+1|0}while((k|0)<(h|0));c[p>>2]=j;if(!m)break;if(g){g=g+-1|0;c[b+20>>2]=g;if(!(f<<24>>24))g=Mh(e,g)|0;else g=Th(e,g,b+28|0)|0;c[p>>2]=g;if(!g)g=0;else break;i=q;return g|0}}else c[p>>2]=j;c[p>>2]=8}}}while(0);b=b+24|0;Ag(o,c[b>>2]|0);c[b>>2]=0;b=c[p>>2]|0;i=q;return b|0}function vs(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+16|0;p=w+4|0;v=w;c[v>>2]=0;q=c[(c[b>>2]|0)+28>>2]|0;c[e>>2]=0;u=b+24|0;a:do if(!(c[u>>2]|0)){c[p>>2]=0;m=c[b>>2]|0;l=c[m+28>>2]|0;n=b+8|0;g=c[n>>2]|0;do if(g){t=g+1|0;h=d[b+12>>0]|0;j=da(h,t)|0;c[u>>2]=Dg(l,4,0,t,0,p)|0;if(((c[p>>2]|0)==0?(t=bh(m,(c[b+4>>2]|0)+3|0)|0,c[p>>2]=t,(t|0)==0):0)?(t=Uh(m,j)|0,c[p>>2]=t,(t|0)==0):0){g=c[u>>2]|0;k=c[m+32>>2]|0;o=k+j|0;if((h|0)==3){if((j|0)>0)while(1){c[g>>2]=(d[k+1>>0]|0)<<8|(d[k>>0]|0)<<16|(d[k+2>>0]|0);k=k+3|0;if(k>>>0>=o>>>0)break;else g=g+4|0}}else if((h|0)==1){if((j|0)>0)while(1){c[g>>2]=d[k>>0];k=k+1|0;if(k>>>0>=o>>>0)break;else g=g+4|0}}else if((h|0)==2){if((j|0)>0)while(1){c[g>>2]=(d[k>>0]|0)<<8|(d[k+1>>0]|0);k=k+2|0;if(k>>>0>=o>>>0)break;else g=g+4|0}}else if((j|0)>0)while(1){c[g>>2]=(d[k+1>>0]|0)<<16|(d[k>>0]|0)<<24|(d[k+2>>0]|0)<<8|(d[k+3>>0]|0);k=k+4|0;if(k>>>0>=o>>>0)break;else g=g+4|0}Xh(m);if(!(c[p>>2]|0))break}Ag(l,c[u>>2]|0);c[u>>2]=0;t=c[p>>2]|0;c[v>>2]=t;if(!t){p=n;break a}e=c[v>>2]|0;i=w;return e|0}while(0);c[v>>2]=0;p=n}else p=b+8|0;while(0);g=c[p>>2]|0;if(!g){e=c[v>>2]|0;i=w;return e|0}s=Dg(q,4,0,g+1|0,0,v)|0;if(c[v>>2]|0){e=c[v>>2]|0;i=w;return e|0}t=(f|0)!=0;if(t){g=yg(q,(c[p>>2]|0)+(c[b+20>>2]|0)|0,v)|0;if(c[v>>2]|0){e=c[v>>2]|0;i=w;return e|0}}else g=0;r=c[b+28>>2]|0;c[s>>2]=t?g:r;l=c[p>>2]|0;b:do if(l){q=b+20|0;if(t){n=0;m=0;o=1}else{h=0;k=1;while(1){j=(c[(c[u>>2]|0)+(k<<2)>>2]|0)+-1|0;if(j>>>0>=h>>>0){h=c[q>>2]|0;h=j>>>0>h>>>0?h:j}c[s+(k<<2)>>2]=r+h;k=k+1|0;if(k>>>0>l>>>0)break b}}while(1){k=(c[(c[u>>2]|0)+(o<<2)>>2]|0)+-1|0;if(k>>>0>=n>>>0){h=c[q>>2]|0;k=k>>>0>h>>>0?h:k;h=g+(k+m)|0;j=s+(o<<2)|0;c[j>>2]=h;if((k|0)==(n|0))h=m;else{l=c[s+(o+-1<<2)>>2]|0;qfa(l|0,r+n|0,h-l|0)|0;a[c[j>>2]>>0]=0;c[j>>2]=(c[j>>2]|0)+1;l=c[p>>2]|0;h=m+1|0}}else{c[s+(o<<2)>>2]=g+(n+m);h=m;k=n}o=o+1|0;if(o>>>0>l>>>0)break;else{n=k;m=h}}}while(0);c[e>>2]=s;if(!t){e=c[v>>2]|0;i=w;return e|0}c[f>>2]=g;e=c[v>>2]|0;i=w;return e|0}function ws(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+432|0;s=t+8|0;m=t;k=t+4|0;c[m>>2]=0;sfa(s|0,0,408)|0;n=s+16|0;o=s+404|0;c[o>>2]=n;p=s+408|0;c[p>>2]=4096;q=s+412|0;c[q>>2]=b;c[s>>2]=j;sfa(b|0,0,172)|0;c[b+32>>2]=-6553600;c[b+36>>2]=3276800;c[b+44>>2]=2;c[b+48>>2]=65536;c[b+60>>2]=65536;c[b+156>>2]=8720;c[b>>2]=65535;c[b+4>>2]=65535;c[b+8>>2]=65535;c[b+12>>2]=65535;c[b+16>>2]=65535;c[b+20>>2]=65535;c[b+128>>2]=65535;l=b+132|0;c[l>>2]=65535;c[b+136>>2]=65535;c[b+172>>2]=65535;f=xs(e,f,m,k)|0;if(!f){f=c[m>>2]|0;f=_t(s,f,f+(c[k>>2]|0)|0)|0}if(!(c[e+28>>2]|0))Vh(c[e>>2]|0,m);if(f){b=f;i=t;return b|0}if((c[l>>2]|0)!=65535){b=0;i=t;return b|0}l=b+116|0;f=c[l>>2]|0;do if((f|0)!=0?(r=b+120|0,(c[r>>2]|0)!=0):0){k=b+176|0;sfa(k|0,0,360)|0;c[b+376>>2]=7;c[b+380>>2]=1;c[b+508>>2]=-1;c[b+516>>2]=3932;c[b+372>>2]=2596864;sfa(s|0,0,408)|0;c[o>>2]=n;c[p>>2]=8192;c[q>>2]=k;c[s>>2]=j;f=bh(g,f+h|0)|0;if(f){b=f;i=t;return b|0}f=Uh(g,c[r>>2]|0)|0;if(f){b=f;i=t;return b|0}f=_t(s,c[g+32>>2]|0,c[g+36>>2]|0)|0;Xh(g);if(!f){a[k>>0]=(d[k>>0]|0)&254;break}else{b=f;i=t;return b|0}}while(0);f=c[b+524>>2]|0;if(!f){b=0;i=t;return b|0}f=bh(g,f+h+(c[l>>2]|0)|0)|0;if(f){b=f;i=t;return b|0}k=b+536|0;f=us(k,g,1)|0;if(f){b=f;i=t;return b|0}b=vs(k,b+568|0,0)|0;i=t;return b|0}function xs(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;q=s;if(!b){f=6;i=s;return f|0}o=b+8|0;k=c[o>>2]|0;if(k>>>0<=e>>>0){f=6;i=s;return f|0}r=c[b>>2]|0;l=c[b+24>>2]|0;a:do if(!l){n=b+12|0;h=da(d[n>>0]|0,e)|0;h=bh(r,(c[b+4>>2]|0)+3+h|0)|0;if(h){f=h;i=s;return f|0}h=Lh(c[b>>2]|0,q,d[n>>0]|0)|0;if(h){f=h;i=s;return f|0}k=a[n>>0]|0;if(k<<24>>24){j=k&255;m=0;h=0;do{h=d[q+m>>0]|0|h<<8;m=m+1|0}while((m|0)<(j|0));if(h)while(1){e=e+1|0;j=Lh(c[b>>2]|0,q,k&255)|0;if((j|0)==0?(p=a[n>>0]|0,p<<24>>24!=0):0){m=p&255;l=0;k=0;do{k=d[q+l>>0]|0|k<<8;l=l+1|0}while((l|0)<(m|0));if(k){n=22;break a}}if(e>>>0>=(c[o>>2]|0)>>>0){n=21;break a}k=a[n>>0]|0}else n=20}else n=20}else{h=c[l+(e<<2)>>2]|0;if(!h)n=20;else while(1){e=e+1|0;j=c[l+(e<<2)>>2]|0;if(j){k=j;n=22;break a}if(e>>>0>=k>>>0){j=0;n=21;break}}}while(0);if((n|0)==20){e=c[r+4>>2]|0;j=0;h=0;l=0;n=24}else if((n|0)==21){e=c[r+4>>2]|0;l=0;n=24}else if((n|0)==22){e=c[r+4>>2]|0;if(k>>>0>(e+1|0)>>>0){k=c[b+16>>2]|0;j=0;n=25}else{j=0;l=k;n=24}}if((n|0)==24){k=c[b+16>>2]|0;if(k>>>0>(e+1-l|0)>>>0)n=25;else{m=h;e=l}}if((n|0)==25){m=h;e=e+1-k|0}if(!((m|0)!=0&e>>>0>m>>>0)){c[f>>2]=0;c[g>>2]=0;f=j;i=s;return f|0}h=e-m|0;c[g>>2]=h;e=c[b+28>>2]|0;if(e){c[f>>2]=e+(m+-1);f=j;i=s;return f|0}e=bh(r,m+-1+(c[b+16>>2]|0)|0)|0;if(e){f=e;i=s;return f|0}f=Th(r,h,f)|0;i=s;return f|0}function ys(d,e){d=d|0;e=e|0;var f=0,g=0;sfa(e|0,0,196)|0;f=a[d+176>>0]|0;a[e+8>>0]=f;if(f<<24>>24){f=f&255;g=0;do{b[e+(g<<1)+12>>1]=c[d+(g<<2)+180>>2];g=g+1|0}while((g|0)!=(f|0))}f=a[d+177>>0]|0;a[e+9>>0]=f;if(f<<24>>24){f=f&255;g=0;do{b[e+(g<<1)+40>>1]=c[d+(g<<2)+236>>2];g=g+1|0}while((g|0)!=(f|0))}f=a[d+178>>0]|0;a[e+10>>0]=f;if(f<<24>>24){f=f&255;g=0;do{b[e+(g<<1)+60>>1]=c[d+(g<<2)+276>>2];g=g+1|0}while((g|0)!=(f|0))}f=a[d+179>>0]|0;a[e+11>>0]=f;if(f<<24>>24){f=f&255;g=0;do{b[e+(g<<1)+88>>1]=c[d+(g<<2)+332>>2];g=g+1|0}while((g|0)!=(f|0))}c[e+108>>2]=c[d+372>>2];c[e+112>>2]=c[d+376>>2];c[e+116>>2]=c[d+380>>2];b[e+120>>1]=c[d+384>>2];b[e+122>>1]=c[d+388>>2];f=a[d+392>>0]|0;a[e+124>>0]=f;if(f<<24>>24){f=f&255;g=0;do{b[e+(g<<1)+128>>1]=c[d+(g<<2)+396>>2];g=g+1|0}while((g|0)!=(f|0))}f=a[d+393>>0]|0;a[e+125>>0]=f;if(!(f<<24>>24)){g=d+500|0;g=a[g>>0]|0;f=e+126|0;a[f>>0]=g;f=d+512|0;f=c[f>>2]|0;g=e+184|0;c[g>>2]=f;d=d+508|0;d=c[d>>2]|0;e=e+4|0;c[e>>2]=d;return}f=f&255;g=0;do{b[e+(g<<1)+154>>1]=c[d+(g<<2)+448>>2];g=g+1|0}while((g|0)!=(f|0));g=d+500|0;g=a[g>>0]|0;f=e+126|0;a[f>>0]=g;f=d+512|0;f=c[f>>2]|0;g=e+184|0;c[g>>2]=f;d=d+508|0;d=c[d>>2]|0;e=e+4|0;c[e>>2]=d;return}function zs(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=i;i=i+64|0;F=M+48|0;L=M+20|0;l=M+16|0;E=M;r=M+24|0;c[l>>2]=0;m=c[f>>2]|0;k=f+76|0;j=c[k>>2]|0;n=c[j+2972>>2]|0;do if(!n){c[j+2976>>2]=215;j=yg(m,504,l)|0;c[(c[k>>2]|0)+2972>>2]=j;if(!(c[l>>2]|0)){c[j>>2]=m;D=j+100|0;c[D+0>>2]=0;c[D+4>>2]=0;c[D+8>>2]=0;c[D+12>>2]=0;c[D+16>>2]=0;c[D+20>>2]=0;c[D+24>>2]=0;c[D+28>>2]=0;c[j+120>>2]=m;c[j+124>>2]=j+4;c[D>>2]=71;c[j+104>>2]=72;c[j+112>>2]=73;D=j;break}else{L=64;i=M;return L|0}}else D=n;while(0);s=D+132|0;c[s>>2]=f;H=D+128|0;c[H>>2]=f;p=f+4|0;o=c[(c[p>>2]|0)+96>>2]|0;j=E;c[j>>2]=0;c[j+4>>2]=0;c[E+12>>2]=g;c[E+4>>2]=g;c[E+8>>2]=g+h;c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[r+12>>2]=0;c[r+16>>2]=0;c[r+20>>2]=0;j=f+8|0;n=c[j>>2]|0;k=a[n+161>>0]|0;m=(a[n+160>>0]|0)==0;if(m){c[r>>2]=1024;n=1024;l=1024}else{l=rg(c[n+164>>2]|0,4194304)|0;c[r>>2]=l;n=rg(c[(c[j>>2]|0)+168>>2]|0,4194304)|0}c[r+12>>2]=n;g=D+8|0;j=m&1^1;c[g>>2]=j;if(k<<24>>24!=0?(a[o+32>>0]|0)==0:0)c[g>>2]=j|2;C=o+36|0;q=D+144|0;c[q>>2]=c[C>>2];c[D+148>>2]=c[C+4>>2];c[D+152>>2]=c[C+8>>2];c[D+156>>2]=c[C+12>>2];c[D+160>>2]=c[C+16>>2];c[D+164>>2]=c[C+20>>2];c[D+168>>2]=c[C+24>>2];c[D+172>>2]=c[C+28>>2];C=b[(c[p>>2]|0)+68>>1]|0;j=C&65535;o=D+88|0;c[o>>2]=j;if(C<<16>>16<0){L=164;i=M;return L|0}C=rg(131072e3,j<<16)|0;if((l|0)>(C|0)|(n|0)>(C|0)){L=164;i=M;return L|0}c[L>>2]=0;c[F>>2]=0;c[F+4>>2]=0;l=c[s>>2]|0;n=c[D+92>>2]|0;f=c[D+96>>2]|0;C=D+4|0;c[C>>2]=0;h=l+928|0;l=e[(c[(c[l+4>>2]|0)+88>>2]|0)+14>>1]<<16;j=D+84|0;if((c[j>>2]|0)==(l|0))m=(c[D+136>>2]|0)!=(c[h>>2]|0)&1;else{c[j>>2]=l;m=1}k=c[g>>2]|0;a[D+140>>0]=k&1;j=D+12|0;if(ffa(r,j,16)|0){c[j+0>>2]=c[r+0>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[j+12>>2]=c[r+12>>2];c[D+32>>2]=0;c[D+28>>2]=0;m=D+36|0;c[m+0>>2]=c[r+0>>2];c[m+4>>2]=c[r+4>>2];c[m+8>>2]=c[r+8>>2];c[m+12>>2]=c[r+12>>2];c[m+16>>2]=c[r+16>>2];c[m+20>>2]=c[r+20>>2];c[D+72>>2]=65536;c[D+60>>2]=65536;c[D+68>>2]=0;c[D+64>>2]=0;m=1}B=D+142|0;j=k&2;if((d[B>>0]|0)==(j|0)){if(m<<24>>24)G=19}else{a[B>>0]=j;G=19}a:do if((G|0)==19){m=c[o>>2]|0;m=(m|0)==0?1e3:m;l=(l|0)<262144?262144:l;o=65536e3/(m|0)|0;j=c[(c[h>>2]|0)+388>>2]<<16;k=D+176|0;c[k>>2]=j;if((j|0)<1){j=rg(4915200,o)|0;c[k>>2]=j}if((n|0)>0){j=m<<16;if((n|0)<=(rg(j,l)|0))n=rg(j,l)|0;j=D+184|0;if(!((o|0)<655|(n|0)==0))c[j>>2]=((n|0)/2|0)+(c[j>>2]|0)}else du(o,l,j,D+184|0,0,a[B>>0]|0,q);A=c[(c[h>>2]|0)+384>>2]|0;if((A&65535)<<16>>16>0?(c[k>>2]|0)>(A<<17|0):0){j=rg(4915200,o)|0;c[D+180>>2]=j}else{j=rg(7208960,o)|0;c[D+180>>2]=j}A=D+188|0;du(o,l,j,A,f,a[B>>0]|0,q);if((c[D+184>>2]|0)==0?(c[A>>2]|0)==0:0)a[D+141>>0]=0;else a[D+141>>0]=1;a[D+192>>0]=0;z=D+196|0;u=c[s>>2]|0;sfa(z|0,0,308)|0;c[z>>2]=c[D+48>>2];x=D+208|0;u=u+928|0;c[x>>2]=rg(c[(c[u>>2]|0)+372>>2]|0,65536e3)|0;u=c[u>>2]|0;c[D+212>>2]=c[u+376>>2]<<16;c[D+216>>2]=c[u+380>>2]<<16;n=a[u+176>>0]|0;g=n&255;j=u+180|0;h=a[u+177>>0]|0;f=h&255;q=a[u+178>>0]|0;v=q&255;p=a[u+179>>0]|0;w=p&255;do if((c[u+512>>2]|0)==1){if((g|0)==4){if((c[j>>2]&65535)<<16>>16>=-120)break;if((c[u+184>>2]&65535)<<16>>16>=-120)break;if((c[u+188>>2]&65535)<<16>>16<=880)break;if((c[u+192>>2]&65535)<<16>>16<=880)break}else if(g)break;c[D+252>>2]=-7864321;c[D+256>>2]=((qg(-7864321,c[z>>2]|0)|0)+32768&-65536)+-32768;B=c[z>>2]|0;c[D+260>>2]=B;c[D+244>>2]=49;A=(c[A>>2]<<1)+57671681|0;c[D+232>>2]=A;c[D+236>>2]=(qg(A,B)|0)+32768&-65536|32768;c[D+240>>2]=c[z>>2];c[D+224>>2]=50;a[D+205>>0]=1;break a}while(0);y=D+200|0;if(!(n<<24>>24))n=0;else{j=c[y>>2]|0;o=0;n=0;do{c[D+(j*20|0)+264>>2]=c[u+(o<<2)+180>>2]<<16;c[D+((c[y>>2]|0)*20|0)+268>>2]=c[u+((o|1)<<2)+180>>2]<<16;j=c[y>>2]|0;m=D+(j*20|0)+268|0;k=c[m>>2]|0;l=k-(c[D+(j*20|0)+264>>2]|0)|0;if((l|0)>=0){if(!o){a[D+(j*20|0)+280>>0]=1;t=c[y>>2]|0;c[D+(t*20|0)+272>>2]=c[D+(t*20|0)+268>>2]}else{s=c[A>>2]<<1;c[m>>2]=s+k;t=D+((c[y>>2]|0)*20|0)+264|0;c[t>>2]=(c[t>>2]|0)+s;a[D+((c[y>>2]|0)*20|0)+280>>0]=0;t=c[y>>2]|0;c[D+(t*20|0)+272>>2]=c[D+(t*20|0)+264>>2]}j=(c[y>>2]|0)+1|0;c[y>>2]=j;n=(l|0)>(n|0)?l:n}o=o+2|0}while(o>>>0>>0)}if(h<<24>>24){j=c[y>>2]|0;k=0;do{c[D+(j*20|0)+264>>2]=c[u+(k<<2)+236>>2]<<16;c[D+((c[y>>2]|0)*20|0)+268>>2]=c[u+((k|1)<<2)+236>>2]<<16;j=c[y>>2]|0;m=(c[D+(j*20|0)+268>>2]|0)-(c[D+(j*20|0)+264>>2]|0)|0;if((m|0)>=0){a[D+(j*20|0)+280>>0]=1;j=c[y>>2]|0;c[D+(j*20|0)+272>>2]=c[D+(j*20|0)+268>>2];j=(c[y>>2]|0)+1|0;c[y>>2]=j;n=(m|0)>(n|0)?m:n}k=k+2|0}while(k>>>0>>0)}s=rg(65536,c[z>>2]|0)|0;if(c[y>>2]|0){t=(q&255)>2;r=p<<24>>24==0;g=(q&255)>1;h=u+280|0;q=0;do{f=D+(q*20|0)+272|0;p=c[f>>2]|0;b:do if(!(a[D+(q*20|0)+280>>0]|0)){if(!t)break;l=c[A>>2]<<1;o=2;k=2147483647;while(1){m=(c[u+(o<<2)+276>>2]<<16)+l|0;j=p-m|0;j=(j|0)<0?0-j|0:j;if((j|0)<(k|0)&(j|0)<(s|0)){c[f>>2]=m;if(!j)break b}else j=k;o=o+2|0;if(o>>>0>=v>>>0)break;else k=j}}else{c:do if(r)m=2147483647;else{l=0;k=2147483647;while(1){m=c[u+((l|1)<<2)+332>>2]<<16;j=p-m|0;j=(j|0)<0?0-j|0:j;if((j|0)<(k|0)&(j|0)<(s|0)){c[f>>2]=m;if(!j){m=0;break c}}else j=k;l=l+2|0;if(l>>>0>=w>>>0){m=j;break}else k=j}}while(0);if(!g)break;j=c[h>>2]<<16;p=p-j|0;p=(p|0)<0?0-p|0:p;if(!((p|0)<(m|0)&(p|0)<(s|0)))break;c[f>>2]=j}while(0);q=q+1|0}while(q>>>0<(c[y>>2]|0)>>>0)}if((n|0)>0?(A=c[x>>2]|0,(A|0)>(rg(65536,n)|0)):0)c[x>>2]=rg(65536,n)|0;n=c[z>>2]|0;j=c[x>>2]|0;if((n|0)<(j|0)){a[D+204>>0]=1;A=qg(39322,65536-(rg(n,j)|0)|0)|0;c[D+220>>2]=(A|0)>32767?32767:A}if(a[B>>0]|0)c[D+220>>2]=0;if(!(c[y>>2]|0))break;j=D+220|0;k=0;do{A=(a[D+(k*20|0)+280>>0]|0)==0;x=qg(c[D+(k*20|0)+272>>2]|0,c[z>>2]|0)|0;B=c[j>>2]|0;c[D+(k*20|0)+276>>2]=x+32768+(A?B:0-B|0)&-65536;k=k+1|0}while(k>>>0<(c[y>>2]|0)>>>0)}while(0);if(c[C>>2]|0){L=3;i=M;return L|0}j=D+192|0;a[j>>0]=0;k=D+116|0;l=D+100|0;m=a[D+141>>0]|0;while(1){B=c[H>>2]|0;c[k>>2]=0;zg(c[B+12>>2]|0);eu(D,E,l,F,0,0,0,L);if(c[C>>2]|0){j=3;G=101;break}if(!(m<<24>>24))break;if((c[k>>2]|0)>-1)break;a[j>>0]=1;m=0}if((G|0)==101){i=M;return j|0}m=c[H>>2]|0;h=c[m+20>>2]|0;do if(h){g=b[h>>1]|0;if(g<<16>>16<2)n=0;else n=(b[(c[h+12>>2]|0)+((g<<16>>16)+-2<<1)>>1]|0)+1|0;f=h+2|0;k=b[f>>1]|0;if(((k<<16>>16>1?(J=c[h+4>>2]|0,I=(k<<16>>16)+-1|0,K=(c[h+8>>2]|0)+I|0,(c[J+(n<<3)>>2]|0)==(c[J+(I<<3)>>2]|0)):0)?(c[J+(n<<3)+4>>2]|0)==(c[J+(I<<3)+4>>2]|0):0)?(a[K>>0]|0)==1:0){k=k+-1<<16>>16;b[f>>1]=k}j=g<<16>>16;if(g<<16>>16>0){l=(k<<16>>16)+-1|0;if((n|0)==(l|0)){b[h>>1]=g+-1<<16>>16;b[f>>1]=k+-1<<16>>16;break}else{b[(c[h+12>>2]|0)+(j+-1<<1)>>1]=l;break}}}while(0);Hg(c[m+12>>2]|0);if(c[C>>2]|0){L=3;i=M;return L|0}L=c[L>>2]|0;c[C>>2]=0;c[(c[H>>2]|0)+744>>2]=L+32768>>16;L=0;i=M;return L|0}function As(a,d){a=a|0;d=d|0;var e=0;e=c[a+652>>2]|0;a=b[(c[e+1160>>2]|0)+(d<<1)>>1]|0;d=a&65535;if(a<<16>>16==-1){e=0;return e|0}if((a&65535)>390){a=d+-391|0;if((c[e+1312>>2]|0)>>>0<=a>>>0){e=0;return e|0}e=c[(c[e+1316>>2]|0)+(a<<2)>>2]|0;return e|0}else{a=c[e+2956>>2]|0;if(!a){e=0;return e|0}e=Ed[c[a+20>>2]&511](d)|0;return e|0}return 0}function Bs(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=(f|0)!=0;if(r){c[f>>2]=0;j=0;n=0;g=0;i=b;h=4;b=0}else{j=0;n=0;g=0;i=b;h=4;b=0}a:while(1){m=(g|0)>214748363;b:while(1)while(1){while(1){if(h){i=i+1|0;if(i>>>0>=d>>>0){g=0;break a}}k=a[i>>0]|0;l=(k&255)>>>h&15;h=4-h|0;if((l|0)==14){b=1;continue b}if(l>>>0>9){o=n;p=b;q=14;break a}if(m)break;if(l|g)break b}j=j+1|0}n=n+1|0;g=l+(g*10|0)|0}c:do if((q|0)==14){d:do if((l|0)==10){b=k;m=0;while(1){if(!((g|0)<214748364&(m|0)<9))break;while(1){if(h){i=i+1|0;if(i>>>0>=d>>>0){g=0;b=p;break c}b=a[i>>0]|0}l=(b&255)>>>h&15;h=4-h|0;if(l>>>0>9)break d;if(l|g)break;j=j+-1|0}m=m+1|0;g=l+(g*10|0)|0}while(1){do{if(h){i=i+1|0;if(i>>>0>=d>>>0){g=0;b=p;break c}b=a[i>>0]|0}l=(b&255)>>>h&15;h=4-h|0;if(l>>>0>9)break d}while((l|g|0)!=0);j=j+-1|0}}else{b=k;m=0}while(0);n=(l|0)==12;if((l+-11|0)>>>0<2){l=0;while(1){if((l|0)>1e3){q=33;break}if(h){i=i+1|0;if(i>>>0>=d>>>0){g=0;b=p;break c}b=a[i>>0]|0}k=(b&255)>>>h&15;if(k>>>0>9){i=l;b=0;break}l=k+(l*10|0)|0;h=4-h|0}e:do if((q|0)==33){k=b;b=0;while(1){if(h){i=i+1|0;if(i>>>0>=d>>>0){g=0;b=p;break c}k=a[i>>0]|0}if(((k&255)>>>h&14)>>>0>9){i=l;break e}b=1;h=4-h|0}}while(0);i=n?0-i|0:i}else{i=0;b=0}if(!g){g=0;b=p}else{do if(b){if(!n){g=2147483647;b=p;break c}}else{b=j+e+i|0;if(!r){h=b+o|0;if((h|0)>5){g=2147483647;b=p;break c}if((h|0)<-5)break;if((h|0)<0){b=m+o|0;g=(g|0)/(c[10200+(0-h<<2)>>2]|0)|0}else b=m-b|0;if((b|0)!=10){if((b|0)<=0){g=da(c[10200+(0-b<<2)>>2]|0,g)|0;g=(g|0)>32767?2147483647:g<<16;b=p;break c}}else{b=9;g=(g|0)/10|0}b=c[10200+(b<<2)>>2]|0;if(((g|0)/(b|0)|0|0)>32767){g=0;b=p;break c}g=rg(g,b)|0;b=p;break c}j=m+o|0;h=b+o|0;if((j|0)>=6){b=c[10200+(j+-5<<2)>>2]|0;if(((g|0)/(b|0)|0|0)>32767){g=rg(g,c[10200+(j+-4<<2)>>2]|0)|0;c[f>>2]=h+-4;b=p;break c}else{g=rg(g,b)|0;c[f>>2]=h+-5;b=p;break c}}if((g|0)>32767){g=rg(g,10)|0;c[f>>2]=1-j+h;b=p;break c}do if((h|0)>0){b=(h|0)<5?h:5;i=b-j|0;if((i|0)<=0){h=h-j|0;b=g;break}h=h-b|0;b=da(c[10200+(i<<2)>>2]|0,g)|0;if((b|0)>32767){h=h+1|0;b=(b|0)/10|0}}else{h=h-j|0;b=g}while(0);c[f>>2]=h;g=b<<16;b=p;break c}while(0);g=0;b=p}}while(0);return ((b|0)==0?g:0-g|0)|0}function Cs(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+32|0;x=z+24|0;m=z;y=z+8|0;r=c[a+4>>2]|0;s=r+140|0;q=c[r+328>>2]|0;c[x>>2]=0;t=c[r+100>>2]|0;u=c[r+136>>2]|0;v=c[(c[r+128>>2]|0)+48>>2]|0;w=(v|0)!=0;if(w){l=v+4|0;e=Hd[c[c[v>>2]>>2]&255](c[l>>2]|0,b,m)|0;c[x>>2]=e;if(e){y=e;i=z;return y|0}k=s+148|0;h=c[k>>2]|0;e=h&255;if(!(e<<24>>24))j=0;else{g=c[m>>2]|0;f=0;while(1){f=d[g>>0]|0|f<<8;e=e+-1<<24>>24;if(!(e<<24>>24)){j=f;break}else g=g+1|0}}e=c[m+4>>2]|0;if(e){f=e-h|0;e=yg(t,f,x)|0;if(!(c[x>>2]|0)){qfa(e|0,(c[m>>2]|0)+(c[k>>2]|0)|0,f|0)|0;g=e}else g=e}else{g=0;f=0}Cd[c[(c[v>>2]|0)+4>>2]&255](c[l>>2]|0,m);e=c[x>>2]|0;if(!e)e=j;else{y=e;i=z;return y|0}}else{g=s+148|0;m=s+152|0;e=(c[m>>2]|0)+(c[g>>2]|0)|0;p=s+168|0;f=bh(q,(c[s+144>>2]|0)+(c[p>>2]|0)+(da(e,b)|0)|0)|0;c[x>>2]=f;if(f){y=f;i=z;return y|0}e=Uh(q,e<<1)|0;c[x>>2]=e;if(e){y=e;i=z;return y|0}k=c[q+32>>2]|0;n=c[g>>2]|0;e=n&255;if(!(e<<24>>24))o=0;else{g=n+255&255;h=k;f=0;while(1){f=d[h>>0]|0|f<<8;e=e+-1<<24>>24;if(!(e<<24>>24)){e=f;break}else h=h+1|0}k=k+(g+1)|0;o=e}e=c[m>>2]|0;g=e&255;j=g<<24>>24==0;if(!j){l=e+255&255;e=g;f=k;h=0;while(1){h=d[f>>0]|0|h<<8;e=e+-1<<24>>24;if(!(e<<24>>24))break;else f=f+1|0}if(j)e=0;else{f=k+(l+1+n)|0;e=0;while(1){e=d[f>>0]|0|e<<8;g=g+-1<<24>>24;if(!(g<<24>>24))break;else f=f+1|0}}}else{h=0;e=0}f=e-h|0;Xh(q);if(o>>>0>=(c[s+160>>2]|0)>>>0){c[x>>2]=9;y=9;i=z;return y|0}if((e|0)==(h|0)){y=0;i=z;return y|0}g=yg(t,f,x)|0;e=c[x>>2]|0;if(e){y=e;i=z;return y|0}e=Rh(q,(c[p>>2]|0)+h|0,g,f)|0;c[x>>2]=e;if(!e)e=o;else{y=e;i=z;return y|0}}p=c[r+316>>2]|0;c[a+1364>>2]=c[p+(e<<3)>>2];c[a+1368>>2]=c[p+(e<<3)+4>>2];c[a+1372>>2]=0;s=c[s+164>>2]|0;p=a+1376|0;q=s+(e*252|0)+216|0;c[p+0>>2]=c[q+0>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];p=s+(e*252|0)+232|0;q=c[p+4>>2]|0;r=a+1392|0;c[r>>2]=c[p>>2];c[r+4>>2]=q;e=c[s+(e*252|0)+4>>2]|0;c[a+1360>>2]=e;s=(e|0)>-1;e=s?e:0;if(s)Ud[c[u+16>>2]&255](g,f,4330);c[x>>2]=Hd[c[a+1484>>2]&255](a,g+e|0,f-e|0)|0;Ag(t,g);e=c[x>>2]|0;if(!((e|0)==0&w)){y=e;i=z;return y|0}if(!(c[(c[v>>2]|0)+8>>2]|0)){y=0;i=z;return y|0}s=a+32|0;c[y>>2]=(lg(c[s>>2]|0)|0)>>16;c[y+4>>2]=0;u=a+40|0;t=y+8|0;c[t>>2]=(lg(c[u>>2]|0)|0)>>16;a=a+44|0;w=y+12|0;c[w>>2]=(lg(c[a>>2]|0)|0)>>16;b=Xd[c[(c[v>>2]|0)+8>>2]&255](c[v+4>>2]|0,b,0,y)|0;c[x>>2]=b;c[s>>2]=c[y>>2]<<16;c[u>>2]=c[t>>2]<<16;c[a>>2]=c[w>>2]<<16;y=b;i=z;return y|0}function Ds(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+32|0;A=E+20|0;t=E;D=E+16|0;x=f+100|0;C=c[x>>2]|0;k=f+184|0;z=bh(e,0)|0;c[A>>2]=z;a:do if((z|0)==0?(z=fi(e,18744,k)|0,c[A>>2]=z,(z|0)==0):0)if((c[k>>2]|0)==1885562369?(w=f+188|0,g=c[w>>2]|0,(g+-1|0)>>>0<=134217726):0){g=Dg(C,16,0,g,0,A)|0;v=f+192|0;c[v>>2]=g;if(!(c[A>>2]|0)){do if(!(c[w>>2]|0)){k=0;B=10}else{h=0;while(1){z=fi(e,18760,g)|0;c[A>>2]=z;if(z)break;h=h+1|0;k=c[w>>2]|0;if(h>>>0>=k>>>0){B=9;break}else g=g+16|0}if((B|0)==9){g=c[v>>2]|0;if((k|0)==1){k=1;B=21;break}else{B=10;break}}Ag(C,c[v>>2]|0);c[v>>2]=0;z=c[A>>2]|0;c[D>>2]=z;if(z)break a;k=c[w>>2]|0;g=0}while(0);if((B|0)==10){p=0;do{o=~p;p=p+1|0;if((k|0)==(p|0))break;l=c[g+12>>2]|0;h=0;n=0;while(1){m=n;n=n+1|0;k=g+(n<<4)+12|0;j=c[k>>2]|0;if(l>>>0>j>>>0){j=g+(n<<4)|0;h=g+(m<<4)|0;c[t+0>>2]=c[h+0>>2];c[t+4>>2]=c[h+4>>2];c[t+8>>2]=c[h+8>>2];c[t+12>>2]=c[h+12>>2];c[h+0>>2]=c[j+0>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];c[j+0>>2]=c[t+0>>2];c[j+4>>2]=c[t+4>>2];c[j+8>>2]=c[t+8>>2];c[j+12>>2]=c[t+12>>2];j=c[k>>2]|0;h=1}k=c[g+(m<<4)+8>>2]|0;if(j>>>0>>0){g=9;B=19;break a}if((c[g+(m<<4)+12>>2]|0)>>>0>(j-k|0)>>>0){g=9;B=19;break a}k=c[w>>2]|0;if(n>>>0>=(k+o|0)>>>0)break;else l=j}}while((h|0)!=0&p>>>0<(k+-1|0)>>>0);g=c[v>>2]|0;B=21}if((B|0)==21)c[D>>2]=0;p=c[x>>2]|0;b:do if(k){h=0;while(1){if((c[g+(h<<4)>>2]|0)==1)break;h=h+1|0;if(h>>>0>=k>>>0){g=3;B=29;break b}}k=c[e+8>>2]|0;j=c[g+(h<<4)+12>>2]|0;if(j>>>0>=k>>>0?(Mh(e,j-k|0)|0)==0:0){j=c[g+(h<<4)+8>>2]|0;c[A>>2]=0;g=ei(e,A)|0;if((c[A>>2]|0)==0&g>>>0<256){h=(g&4|0)==0;if(h)o=ei(e,A)|0;else o=Ph(e,A)|0;if(!(c[A>>2]|0)){if(o>>>0>((j>>>0)/9|0)>>>0){c[A>>2]=8;k=0;g=0;break}c[f+280>>2]=o;k=Dg(p,12,0,o,0,A)|0;if(!(c[A>>2]|0)){n=(o|0)==0;do if(!n){if(h){g=0;do{z=fi(e,18720,k+(g*12|0)|0)|0;c[A>>2]=z;if(z){g=0;break b}g=g+1|0}while(g>>>0>>0)}else{g=0;do{z=fi(e,18696,k+(g*12|0)|0)|0;c[A>>2]=z;if(z){g=0;break b}g=g+1|0}while(g>>>0>>0)}g=o&3;if(g){z=Mh(e,4-g|0)|0;c[A>>2]=z;if(!z)break;c[A>>2]=83;g=0;break b}}while(0);if(h)m=ei(e,A)|0;else m=Ph(e,A)|0;if(!(c[A>>2]|0)){if(m>>>0>((da(o,-9)|0)+j|0)>>>0){c[A>>2]=8;g=0;break}g=Dg(p,1,0,m+1|0,0,A)|0;if(c[A>>2]|0)break;z=Lh(e,g,m)|0;c[A>>2]=z;if(z)break;l=Dg(p,12,0,o,0,A)|0;if(c[A>>2]|0)break;c[f+284>>2]=l;c:do if(!n){j=0;while(1){h=c[k+(j*12|0)>>2]|0;if((h|0)<0|h>>>0>m>>>0){B=58;break}c[l+(j*12|0)>>2]=oi(p,g+h|0,A)|0;if(c[A>>2]|0)break b;z=a[k+(j*12|0)+4>>0]|0;a[l+(j*12|0)+4>>0]=z;h=c[k+(j*12|0)+8>>2]|0;if(z<<24>>24){if((h|0)<0|h>>>0>m>>>0){B=62;break}c[l+(j*12|0)+8>>2]=oi(p,g+h|0,A)|0;if(c[A>>2]|0)break b}else c[l+(j*12|0)+8>>2]=h;j=j+1|0;if(j>>>0>=o>>>0)break c}if((B|0)==58){c[A>>2]=9;break b}else if((B|0)==62){c[A>>2]=9;break b}}while(0);c[A>>2]=0}else g=0}else g=0}else{k=0;g=0}}else{k=0;g=0}}else{g=83;B=29}}else{g=3;B=29}while(0);if((B|0)==29){c[A>>2]=g;k=0;g=0}Ag(p,k);Ag(p,g);z=c[A>>2]|0;c[D>>2]=z;if(!z){h=c[v>>2]|0;g=c[w>>2]|0;d:do if(!g)B=71;else{k=0;while(1){if((c[h+(k<<4)>>2]|0)==256){u=1;break d}k=k+1|0;if(k>>>0>=g>>>0){B=71;break}}}while(0);if((B|0)==71){z=fu(e,f,2)|0;c[D>>2]=z;if(z)break;g=c[w>>2]|0;h=c[v>>2]|0;u=0}q=c[x>>2]|0;e:do if(g){k=0;while(1){if((c[h+(k<<4)>>2]|0)==4)break;k=k+1|0;if(k>>>0>=g>>>0){g=3;B=78;break e}}s=e+8|0;g=c[s>>2]|0;j=c[h+(k<<4)+12>>2]|0;if(j>>>0>=g>>>0?(Mh(e,j-g|0)|0)==0:0){h=c[h+(k<<4)+8>>2]|0;c[t>>2]=0;k=ei(e,t)|0;g=c[t>>2]|0;if(!g){B=k&-256;if((B|0)==256|(B|0)==0){o=k>>>0<256;g=(k&4|0)!=0;do if(o)if(g){n=Ph(e,t)|0;break}else{n=ei(e,t)|0;break}else if(g){n=(Nh(e,t)|0)&65535;break}else{n=(ci(e,t)|0)&65535;break}while(0);if(!(c[t>>2]|0)){z=f+288|0;c[z>>2]=n;if(!n){g=8;B=101}else{if(o){if(n>>>0>((h>>>0)/12|0)>>>0){g=8;B=101;break}}else if(n>>>0>((h>>>0)/5|0)>>>0){g=8;B=101;break}p=Dg(q,16,0,n,0,t)|0;r=f+292|0;c[r>>2]=p;if(c[t>>2]|0){g=64;B=101;break}k=g?18488:18520;h=A+1|0;j=A+2|0;m=A+3|0;l=A+4|0;f:do if(o){g=0;while(1){B=fi(e,k,p+(g<<4)|0)|0;c[t>>2]=B;c[p+(g<<4)+12>>2]=0;g=g+1|0;if(B){B=103;break f}if(g>>>0>=n>>>0){B=102;break}}}else{o=0;while(1){g=fi(e,18552,A)|0;if(!g){b[p+(o<<4)>>1]=(d[A>>0]|0)+65408;b[p+(o<<4)+2>>1]=(d[h>>0]|0)+65408;b[p+(o<<4)+4>>1]=(d[j>>0]|0)+65408;b[p+(o<<4)+6>>1]=(d[m>>0]|0)+65408;b[p+(o<<4)+8>>1]=(d[l>>0]|0)+65408;b[p+(o<<4)+10>>1]=0;g=0}c[t>>2]=g;c[p+(o<<4)+12>>2]=0;o=o+1|0;if(g){B=103;break f}if(o>>>0>=n>>>0){B=102;break}}}while(0);if((B|0)==102)c[D>>2]=0;else if((B|0)==103?(Ag(q,c[r>>2]|0),c[r>>2]=0,t=c[t>>2]|0,c[D>>2]=t,(t|0)!=0):0)break a;l=c[x>>2]|0;j=c[v>>2]|0;g=c[w>>2]|0;g:do if(!g){g=3;B=109}else{k=0;while(1){if((c[j+(k<<4)>>2]|0)==8)break;k=k+1|0;if(k>>>0>=g>>>0){g=3;B=109;break g}}g=c[s>>2]|0;h=c[j+(k<<4)+12>>2]|0;if(h>>>0>>0){g=83;B=109;break}if(Mh(e,h-g|0)|0){g=83;B=109;break}m=c[j+(k<<4)+8>>2]|0;g=Uh(e,8)|0;c[A>>2]=g;if(g)break;h=ai(e)|0;o=(h&4|0)==0;if(o)p=ai(e)|0;else p=$h(e)|0;Xh(e);if(h>>>0>=256){g=3;break}t=c[z>>2]|0;if(!((t|0)>-1&(p|0)==(t|0))){g=3;break}j=Dg(l,4,0,p,0,A)|0;g=c[A>>2]|0;if(g)break;k=(p|0)==0;if(!k){if(o){g=0;do{c[j+(g<<2)>>2]=ei(e,A)|0;g=g+1|0}while((g|0)!=(p|0))}else{g=0;do{c[j+(g<<2)>>2]=Ph(e,A)|0;g=g+1|0}while((g|0)!=(p|0))}if(!(c[A>>2]|0))B=122}else B=122;h:do if((B|0)==122){if(o){g=0;do{ei(e,A)|0;g=g+1|0;if(c[A>>2]|0)break h}while(g>>>0<4)}else{g=0;do{Ph(e,A)|0;g=g+1|0;if(c[A>>2]|0)break h}while(g>>>0<4)}if(!k){k=0;do{g=c[j+(k<<2)>>2]|0;if(!((g|0)<0|g>>>0>m>>>0))c[(c[r>>2]|0)+(k<<4)+12>>2]=(c[s>>2]|0)+g;k=k+1|0}while((k|0)!=(p|0))}c[f+308>>2]=h}while(0);Ag(l,j);t=c[A>>2]|0;c[D>>2]=t;if(t)break a;t=c[x>>2]|0;h=c[v>>2]|0;g=c[w>>2]|0;i:do if(!g){g=3;B=139}else{k=0;while(1){if((c[h+(k<<4)>>2]|0)==32){g=k;break}k=k+1|0;if(k>>>0>=g>>>0){g=3;B=139;break i}}k=c[s>>2]|0;g=c[h+(g<<4)+12>>2]|0;if(g>>>0>>0){g=83;B=139;break}if(Mh(e,g-k|0)|0){g=83;B=139;break}g=Uh(e,14)|0;c[A>>2]=g;if(g)break;k=ai(e)|0;n=(k&4|0)==0;if(n){q=(_h(e)|0)<<16>>16;r=(_h(e)|0)<<16>>16;h=(_h(e)|0)<<16>>16;s=(_h(e)|0)<<16>>16;g=_h(e)|0}else{q=(Zh(e)|0)<<16>>16;r=(Zh(e)|0)<<16>>16;h=(Zh(e)|0)<<16>>16;s=(Zh(e)|0)<<16>>16;g=Zh(e)|0}b[f+304>>1]=g;Xh(e);if(k>>>0>=256){g=3;break}m=da(1-h+s|0,1-q+r|0)|0;l=Dg(t,8,0,m,0,A)|0;if(c[A>>2]|0){g=64;break}w=Uh(e,m<<1)|0;c[A>>2]=w;do if(!w){if((h|0)>(s|0))k=0;else{p=(q|0)>(r|0);k=0;while(1){if(!p){j=h<<8;if(n){o=q;while(1){g=_h(e)|0;if(g<<16>>16!=-1){c[l+(k<<3)>>2]=o+j;b[l+(k<<3)+4>>1]=g;k=k+1|0}if((o|0)<(r|0))o=o+1|0;else break}}else{o=q;while(1){g=Zh(e)|0;if(g<<16>>16!=-1){c[l+(k<<3)>>2]=o+j;b[l+(k<<3)+4>>1]=g;k=k+1|0}if((o|0)<(r|0))o=o+1|0;else break}}}if((h|0)<(s|0))h=h+1|0;else break}}Xh(e);g=Dg(t,8,m,k,l,A)|0;if(c[A>>2]|0){y=g;B=161;break}c[f+296>>2]=k;c[f+300>>2]=g;c[D>>2]=0}else{y=l;B=161}while(0);if((B|0)==161?(Ag(t,y),y=c[A>>2]|0,c[D>>2]=y,(y|0)!=0):0)break a;if(u?(e=fu(e,f,256)|0,c[D>>2]=e,(e|0)!=0):0)break a;c[f>>2]=1;c[f+4>>2]=0;c[f+8>>2]=(a[f+199>>0]|0)==0?146:150;c[A>>2]=0;w=c[x>>2]|0;o=f+12|0;c[o>>2]=0;x=f+284|0;m=c[x>>2]|0;y=f+280|0;p=c[y>>2]|0;do if((p|0)>0){g=0;while(1){h=g+1|0;k=(gfa(c[m+(g*12|0)>>2]|0,18424)|0)!=0;if((h|0)<(p|0)&k)g=h;else break}do if(k|(m+(g*12|0)|0)==0){j=2;l=0}else{if(!(a[m+(g*12|0)+4>>0]|0)){j=2;l=0;break}g=c[m+(g*12|0)+8>>2]|0;e=a[g>>0]|0;if(!(e<<24>>24==105|e<<24>>24==73|e<<24>>24==111|e<<24>>24==79)){j=2;l=0;break}c[o>>2]=1;g=a[g>>0]|0;if(g<<24>>24==79){j=3;l=18432;break}j=3;l=g<<24>>24==111?18432:90496}while(0);g=0;while(1){h=g+1|0;k=(gfa(c[m+(g*12|0)>>2]|0,18440)|0)!=0;if((h|0)<(p|0)&k)g=h;else break}do if(k|(m+(g*12|0)|0)==0)j=0;else{if(!(a[m+(g*12|0)+4>>0]|0)){j=0;break}e=a[c[m+(g*12|0)+8>>2]>>0]|0;if(!(e<<24>>24==98|e<<24>>24==66)){j=0;break}c[o>>2]=j;j=90488}while(0);g=0;while(1){h=g+1|0;k=(gfa(c[m+(g*12|0)>>2]|0,18456)|0)!=0;if((h|0)<(p|0)&k)g=h;else break}do if(k|(m+(g*12|0)|0)==0)n=0;else{if(!(a[m+(g*12|0)+4>>0]|0)){n=0;break}g=c[m+(g*12|0)+8>>2]|0;e=a[g>>0]|0;if(e<<24>>24==110|e<<24>>24==78|e<<24>>24==0){n=0;break}n=g}while(0);g=0;while(1){h=g+1|0;k=(gfa(c[m+(g*12|0)>>2]|0,18472)|0)!=0;if((h|0)<(p|0)&k)g=h;else break}do if(k|(m+(g*12|0)|0)==0){g=0;o=0;k=0}else{if(!(a[m+(g*12|0)+4>>0]|0)){g=0;o=0;k=0;break}g=c[m+(g*12|0)+8>>2]|0;e=a[g>>0]|0;if(e<<24>>24==110|e<<24>>24==78|e<<24>>24==0){g=0;o=0;k=0;break}if(!g){g=0;o=0;k=0;break}k=tfa(g|0)|0;o=k;k=k+1|0}while(0);if(!j){q=1;h=0;m=0}else{e=tfa(j|0)|0;q=0;h=j;m=e;k=k+1+e|0}if(!l){p=1;j=0;l=0}else{e=tfa(l|0)|0;p=0;j=l;l=e;k=k+1+e|0}if(!n){t=m;u=0;v=0;s=1;r=p;break}e=tfa(n|0)|0;t=m;u=n;v=e;s=0;r=p;k=k+1+e|0}else{h=0;t=0;j=0;l=0;u=0;v=0;o=0;g=0;s=1;q=1;r=1;k=0}while(0);n=(k|0)==0;p=n?7:o;o=n?90464:g;g=yg(w,n?8:k,A)|0;n=f+24|0;c[n>>2]=g;k=c[A>>2]|0;if(k){c[D>>2]=k;break a}if(o){qfa(g|0,o|0,p|0)|0;if(p){m=0;do{k=g+m|0;if((a[k>>0]|0)==32)a[k>>0]=45;m=m+1|0}while((m|0)!=(p|0))}g=g+p|0}if(!q){if((g|0)!=(c[n>>2]|0)){a[g>>0]=32;g=g+1|0}qfa(g|0,h|0,t|0)|0;g=g+t|0}if(!r){if((g|0)!=(c[n>>2]|0)){a[g>>0]=32;g=g+1|0}qfa(g|0,j|0,l|0)|0;g=g+l|0}if(!s){if((g|0)!=(c[n>>2]|0)){a[g>>0]=32;g=g+1|0}qfa(g|0,u|0,v|0)|0;if(v){h=0;do{k=g+h|0;if((a[k>>0]|0)==32)a[k>>0]=45;h=h+1|0}while((h|0)!=(v|0))}g=g+v|0}a[g>>0]=0;A=c[A>>2]|0;c[D>>2]=A;if(A)break a;l=c[x>>2]|0;h=c[y>>2]|0;do if((h|0)>0){g=0;while(1){j=g+1|0;k=(gfa(c[l+(g*12|0)>>2]|0,18328)|0)!=0;if((j|0)<(h|0)&k)g=j;else break}if(k|(l+(g*12|0)|0)==0){B=226;break}if(!(a[l+(g*12|0)+4>>0]|0)){B=226;break}c[f+20>>2]=oi(C,c[l+(g*12|0)+8>>2]|0,D)|0;if(c[D>>2]|0)break a}else B=226;while(0);if((B|0)==226)c[f+20>>2]=0;c[f+16>>2]=(c[z>>2]|0)+1;c[f+28>>2]=1;m=Dg(C,16,0,1,0,D)|0;c[f+32>>2]=m;if(c[D>>2]|0)break a;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;j=(c[f+208>>2]|0)+(c[f+204>>2]|0)|0;b[m>>1]=j;q=c[x>>2]|0;n=c[y>>2]|0;p=(n|0)>0;do if(p){g=0;while(1){h=g+1|0;k=(gfa(c[q+(g*12|0)>>2]|0,18344)|0)!=0;if((h|0)<(n|0)&k)g=h;else break}if(k|(q+(g*12|0)|0)==0){B=232;break}b[m+2>>1]=((c[q+(g*12|0)+8>>2]|0)+5|0)/10|0}else B=232;while(0);if((B|0)==232)b[m+2>>1]=(j<<16>>15|0)/3|0;do if(p){g=0;while(1){h=g+1|0;k=(gfa(c[q+(g*12|0)>>2]|0,18360)|0)!=0;if((h|0)<(n|0)&k)g=h;else break}if(k|(q+(g*12|0)|0)==0)o=0;else{o=(((c[q+(g*12|0)+8>>2]|0)*460800|0)+36135|0)/72270|0;c[m+4>>2]=o}g=0;while(1){h=g+1|0;k=(gfa(c[q+(g*12|0)>>2]|0,18376)|0)!=0;if((h|0)<(n|0)&k)g=h;else break}if(k|(q+(g*12|0)|0)==0)g=0;else{g=c[q+(g*12|0)+8>>2]<<16>>10;c[m+12>>2]=g}k=0;while(1){j=k+1|0;h=(gfa(c[q+(k*12|0)>>2]|0,18392)|0)!=0;if((j|0)<(n|0)&h)k=j;else break}if(h|(q+(k*12|0)|0)==0)l=0;else l=c[q+(k*12|0)+8>>2]<<16>>16;k=0;while(1){j=k+1|0;h=(gfa(c[q+(k*12|0)>>2]|0,18408)|0)!=0;if((j|0)<(n|0)&h)k=j;else break}if(h|(q+(k*12|0)|0)==0)h=0;else h=c[q+(k*12|0)+8>>2]&65535;k=m+12|0;if(!g){c[k>>2]=o;if(!(h<<16>>16)){g=o;B=255;break}g=(da(o,h<<16>>16)|0)/72|0;c[k>>2]=g}if((l|0)==0|h<<16>>16==0){B=255;break}c[m+8>>2]=(da(g,l)|0)/(h<<16>>16|0)|0}else{c[m+12>>2]=0;g=0;B=255}while(0);if((B|0)==255)c[m+8>>2]=g;if(p)j=0;else{D=0;i=E;return D|0}while(1){g=j+1|0;h=(gfa(c[q+(j*12|0)>>2]|0,83640)|0)!=0;if((g|0)<(n|0)&h)j=g;else break}if(h)k=0;else k=q+(j*12|0)|0;j=0;while(1){g=j+1|0;h=(gfa(c[q+(j*12|0)>>2]|0,83664)|0)!=0;if((g|0)<(n|0)&h)j=g;else break}if(h)g=0;else g=q+(j*12|0)|0;if(!k){D=0;i=E;return D|0}if(!((a[k+4>>0]|0)!=0&(g|0)!=0)){D=0;i=E;return D|0}if(!(a[g+4>>0]|0)){D=0;i=E;return D|0}c[f+176>>2]=oi(C,c[g+8>>2]|0,D)|0;if(c[D>>2]|0)break a;c[f+180>>2]=oi(C,c[k+8>>2]|0,D)|0;g=c[D>>2]|0;break e}while(0);if((B|0)==139)c[A>>2]=g;c[D>>2]=g;break e}while(0);if((B|0)==109)c[A>>2]=g;c[D>>2]=g}}else{g=3;B=101}}else{g=3;B=101}}else B=101}else{g=83;B=78}}else{g=3;B=78}while(0);if((B|0)==78){c[t>>2]=g;B=101}if((B|0)==101)c[D>>2]=g;if(!g){D=0;i=E;return D|0}}}else{g=64;B=19}}else{g=3;B=19}else{g=1;B=19}while(0);if((B|0)==19)c[D>>2]=g;c[D>>2]=3;D=3;i=E;return D|0}function Es(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=i;i=i+48|0;I=K+32|0;F=K;j=bh(g,j+h|0)|0;if(j){J=j;i=K;return J|0}j=Uh(g,k)|0;if(j){J=j;i=K;return J|0}l=c[g+32>>2]|0;H=l+k|0;if((k|0)!=0?(a[l>>0]|0)<0:0){u=c[f+28>>2]|0;t=f+16|0;z=c[t>>2]|0;c[I>>2]=0;o=c[u>>2]|0;q=l+1|0;a:do if((k|0)>=1?(m=d[l>>0]|0,(m&128|0)!=0):0){s=m&63;b:do if(m&8){j=l+2|0;c:do if((k|0)>=2){l=a[q>>0]|0;if(l<<24>>24){q=l&255;do{if((j+2|0)>>>0>H>>>0)break c;j=j+((d[j>>0]|0)+2)|0;if(j>>>0>H>>>0)break c;q=q+-1|0}while((q|0)!=0)}c[I>>2]=0;q=j;break b}while(0);c[I>>2]=8;j=8;break a}while(0);j=z+s|0;k=f+20|0;m=c[k>>2]|0;if(j>>>0>m>>>0){l=j+3&-4;if(l>>>0>64){c[I>>2]=8;j=8;break}j=f+24|0;c[j>>2]=Dg(o,24,m,l,c[j>>2]|0,I)|0;j=c[I>>2]|0;if(j)break;c[k>>2]=l}if(!s)j=0;else{p=0;j=q;n=(c[f+24>>2]|0)+(z*24|0)|0;while(1){q=j+1|0;if(q>>>0>H>>>0){J=52;break a}r=d[j>>0]|0;c[n>>2]=65536;if(!(r&16)){k=3;o=2}else{m=j+3|0;if(m>>>0>H>>>0){J=52;break a}c[n>>2]=(d[q>>0]<<8|d[j+2>>0])<<16>>12;k=5;o=4;q=m}l=n+4|0;c[l>>2]=65536;if(r&32){m=j+k|0;if(m>>>0>H>>>0){J=52;break a}c[l>>2]=(d[q>>0]<<8|d[j+o>>0])<<16>>12;q=m}j=r&3;if((j|0)==1){j=q+2|0;if(j>>>0>H>>>0){J=52;break a}m=(d[q>>0]<<8|d[q+1>>0])<<16>>16}else if((j|0)==2){j=q+1|0;if(j>>>0>H>>>0){J=52;break a}m=a[q>>0]|0}else{j=q;m=0}q=r>>>2&3;if((q|0)==1){q=j+2|0;if(q>>>0>H>>>0){J=52;break a}j=(d[j>>0]<<8|d[j+1>>0])<<16>>16}else if((q|0)==2){q=j+1|0;if(q>>>0>H>>>0){J=52;break a}j=a[j>>0]|0}else{q=j;j=0}c[n+8>>2]=m;c[n+12>>2]=j;if(!(r&64)){j=q+1|0;if(j>>>0>H>>>0){J=52;break a}c[n+20>>2]=d[q>>0];m=4;o=2;k=3;l=j}else{j=q+2|0;if(j>>>0>H>>>0){J=52;break a}c[n+20>>2]=d[q>>0]<<8|d[q+1>>0];m=5;o=3;k=4;l=j}if(!(r&128)){j=q+k|0;if(j>>>0>H>>>0){J=52;break a}c[n+16>>2]=d[l>>0]<<8|d[q+o>>0]}else{j=q+m|0;if(j>>>0>H>>>0){J=52;break a}c[n+16>>2]=d[q+o>>0]<<8|d[l>>0]<<16|d[q+k>>0]}c[t>>2]=(c[t>>2]|0)+1;p=p+1|0;if(p>>>0>=s>>>0)break;else n=n+24|0}j=c[I>>2]|0}}else J=52;while(0);if((J|0)==52){c[I>>2]=8;j=8}Xh(g);if(j){J=j;i=K;return J|0}w=(c[t>>2]|0)-z|0;x=f+24|0;if((w|0)<=0){J=0;i=K;return J|0}y=u+22|0;u=u+24|0;v=0;while(1){j=c[x>>2]|0;p=v+z|0;r=b[y>>1]|0;j=Es(f,g,h,c[j+(p*24|0)+16>>2]|0,c[j+(p*24|0)+20>>2]|0)|0;if(j){J=181;break}o=c[x>>2]|0;s=(b[y>>1]|0)-r|0;t=o+(p*24|0)|0;q=c[t>>2]|0;if((q|0)==65536?(c[o+(p*24|0)+4>>2]|0)==65536:0){if((s|0)>0){j=c[o+(p*24|0)+8>>2]|0;m=c[o+(p*24|0)+12>>2]|0;l=0;k=(c[u>>2]|0)+(r<<3)|0;while(1){c[k>>2]=(c[k>>2]|0)+j;H=k+4|0;c[H>>2]=(c[H>>2]|0)+m;l=l+1|0;if((l|0)==(s|0))break;else k=k+8|0}}}else J=59;d:do if((J|0)==59?(J=0,(s|0)>0):0){k=o+(p*24|0)+8|0;n=o+(p*24|0)+4|0;l=o+(p*24|0)+12|0;m=1;j=(c[u>>2]|0)+(r<<3)|0;while(1){H=qg(c[j>>2]|0,q)|0;c[j>>2]=(c[k>>2]|0)+H;H=j+4|0;G=qg(c[H>>2]|0,c[n>>2]|0)|0;c[H>>2]=(c[l>>2]|0)+G;if((m|0)==(s|0))break d;q=c[t>>2]|0;m=m+1|0;j=j+8|0}}while(0);v=v+1|0;if((v|0)>=(w|0)){j=0;J=181;break}}if((J|0)==181){i=K;return j|0}}c[I>>2]=0;D=f+28|0;o=c[c[D>>2]>>2]|0;j=l+1|0;e:do if((k|0)>=1?(p=d[l>>0]|0,(p&128|0)==0):0){if(!(p&4)){if(!(p&2)){q=2;m=j;j=0}else{if((k|0)<2){J=179;break}q=3;m=l+2|0;j=d[j>>0]|0}if(!(p&1)){q=m;C=j;B=0}else{if((q|0)>(k|0)){J=179;break}q=l+q|0;C=j;B=d[m>>0]|0}}else{if((k|0)<2){J=179;break}B=d[j>>0]|0;q=l+2|0;C=B&15;B=B>>>4}n=C+B|0;l=f+4|0;j=c[l>>2]|0;if(n>>>0>j>>>0){k=n+7&-8;A=f+8|0;m=Dg(o,4,j,k,c[A>>2]|0,I)|0;c[A>>2]=m;j=c[I>>2]|0;if(j)break;c[l>>2]=k}else m=c[f+8>>2]|0;h=f+8|0;A=f+12|0;c[A>>2]=m+(C<<2);if(n){r=0;l=0;k=0;while(1){if(!(r&7)){j=q+1|0;if(j>>>0>H>>>0){J=179;break e}l=d[q>>0]|0}else j=q;if(!(l&1)){q=j+1|0;if(q>>>0>H>>>0){J=179;break e}j=(d[j>>0]|0)+k|0}else{q=j+2|0;if(q>>>0>H>>>0){J=179;break e}j=(d[j>>0]<<8|d[j+1>>0])<<16>>16}c[m+(r<<2)>>2]=j;r=r+1|0;if(r>>>0>=n>>>0)break;else{l=l>>>1;k=j}}}f:do if(!(p&8))j=q;else{j=q+1|0;g:do if(j>>>0<=H>>>0){q=a[q>>0]|0;if(q<<24>>24){q=q&255;do{if((j+2|0)>>>0>H>>>0)break g;j=j+((d[j>>0]|0)+2)|0;if(j>>>0>H>>>0)break g;q=q+-1|0}while((q|0)!=0)}c[I>>2]=0;break f}while(0);c[I>>2]=8;j=8;break e}while(0);z=f+32|0;a[z>>0]=0;v=F+4|0;c[v>>2]=0;c[F>>2]=0;w=F+24|0;m=F;q=c[m>>2]|0;m=c[m+4>>2]|0;x=w;c[x>>2]=q;c[x+4>>2]=m;x=F+8|0;y=F+16|0;h:while(1){r=j+1|0;if(r>>>0>H>>>0){J=179;break e}s=d[j>>0]|0;j=s&15;s=s>>>4;switch(s|0){case 2:{if(j>>>0>=C>>>0){J=179;break e}c[F>>2]=c[(c[h>>2]|0)+(j<<2)>>2];c[v>>2]=m;p=F;u=c[p>>2]|0;p=c[p+4>>2]|0;t=w;c[t>>2]=u;c[t+4>>2]=p;t=r;break}case 3:{if(j>>>0>=B>>>0){J=179;break e}c[F>>2]=q;c[v>>2]=c[(c[A>>2]|0)+(j<<2)>>2];p=F;u=c[p>>2]|0;p=c[p+4>>2]|0;t=w;c[t>>2]=u;c[t+4>>2]=p;t=r;break}case 7:{o=m;l=3;k=3627;n=F;p=0;j=r;J=111;break}case 5:case 4:case 1:{o=m;l=1;k=j;n=F;p=0;j=r;J=111;break}case 6:{o=m;l=3;k=2958;n=F;p=0;j=r;J=111;break}case 0:break h;default:{o=m;l=4;k=j;n=F;p=0;j=r;J=111}}if((J|0)==111)while(1){J=0;m=k&3;if(!m){q=j+1|0;if(q>>>0>H>>>0){J=179;break e}j=d[j>>0]|0;if(j>>>0>=C>>>0){J=179;break e}c[n>>2]=c[(c[h>>2]|0)+(j<<2)>>2]}else if((m|0)==1){q=j+2|0;if(q>>>0>H>>>0){J=179;break e}c[n>>2]=(d[j>>0]<<8|d[j+1>>0])<<16>>16}else if((m|0)==2){m=j+1|0;if(m>>>0>H>>>0){J=179;break e}c[n>>2]=(a[j>>0]|0)+q;q=m}else{c[n>>2]=q;q=j}j=k>>>2&3;if((j|0)==2){j=q+1|0;if(j>>>0>H>>>0){J=179;break e}c[n+4>>2]=(a[q>>0]|0)+o}else if(!j){m=q+1|0;if(m>>>0>H>>>0){J=179;break e}j=d[q>>0]|0;if(j>>>0>=B>>>0){J=179;break e}c[n+4>>2]=c[(c[A>>2]|0)+(j<<2)>>2];j=m}else if((j|0)==1){j=q+2|0;if(j>>>0>H>>>0){J=179;break e}c[n+4>>2]=(d[q>>0]<<8|d[q+1>>0])<<16>>16}else{c[n+4>>2]=o;j=q}if((p|0)==0&(l|0)==4){q=j+1|0;if(q>>>0>H>>>0){J=179;break e}l=3;k=d[j>>0]|0;j=q}else k=k>>>4;m=n;q=c[m>>2]|0;m=c[m+4>>2]|0;f=w;c[f>>2]=q;c[f+4>>2]=m;p=p+1|0;if(p>>>0>=l>>>0){u=q;p=m;t=j;break}else{o=m;n=n+8|0;J=111}}switch(s|0){case 3:case 2:case 1:{m=c[D>>2]|0;do if(!(a[z>>0]|0))j=8;else{q=m+58|0;j=b[q>>1]|0;if(((b[m+22>>1]|0)+1+(j<<16>>16)|0)>>>0>(c[m+4>>2]|0)>>>0){j=Eg(m,1,0)|0;if(j)break;j=b[q>>1]|0}j=j<<16>>16;n=F;s=c[n+4>>2]|0;f=(c[m+60>>2]|0)+(j<<3)|0;c[f>>2]=c[n>>2];c[f+4>>2]=s;a[(c[m+64>>2]|0)+j>>0]=1;b[q>>1]=(b[q>>1]|0)+1<<16>>16;j=0}while(0);c[I>>2]=j;break}case 5:case 4:{q=c[D>>2]|0;n=q+58|0;if(a[z>>0]|0){m=b[n>>1]|0;l=m<<16>>16;j=l+-1|0;k=q+56|0;r=b[k>>1]|0;if(r<<16>>16>0)o=b[(c[q+68>>2]|0)+((r<<16>>16)+-1<<1)>>1]|0;else o=0;if(((j|0)>(o|0)?(E=c[q+60>>2]|0,(c[E+(o<<3)>>2]|0)==(c[E+(j<<3)>>2]|0)):0)?(c[E+(o<<3)+4>>2]|0)==(c[E+(j<<3)+4>>2]|0):0){b[n>>1]=m+-1<<16>>16;j=l+-2|0}if((j|0)>=(o|0)){b[k>>1]=r+1<<16>>16;b[(c[q+68>>2]|0)+(r<<16>>16<<1)>>1]=j}a[z>>0]=0}a[z>>0]=1;m=b[q+22>>1]|0;j=b[n>>1]|0;l=c[q+4>>2]|0;if(((m<<16>>16)+1+(j<<16>>16)|0)>>>0<=l>>>0?((b[q+20>>1]|0)+1+(b[q+56>>1]|0)|0)>>>0<=(c[q+8>>2]|0)>>>0:0)J=167;else{j=Eg(q,1,1)|0;if(!j){q=c[D>>2]|0;if(!(a[z>>0]|0))j=8;else{m=b[q+22>>1]|0;j=b[q+58>>1]|0;l=c[q+4>>2]|0;J=167}}}do if((J|0)==167){J=0;k=q+58|0;if(((j<<16>>16)+1+(m<<16>>16)|0)>>>0>l>>>0){j=Eg(q,1,0)|0;if(j)break;j=b[k>>1]|0}j=j<<16>>16;n=F;s=c[n+4>>2]|0;f=(c[q+60>>2]|0)+(j<<3)|0;c[f>>2]=c[n>>2];c[f+4>>2]=s;a[(c[q+64>>2]|0)+j>>0]=1;b[k>>1]=(b[k>>1]|0)+1<<16>>16;j=0}while(0);c[I>>2]=j;break}case 0:break h;default:{m=c[D>>2]|0;do if(!(a[z>>0]|0))j=8;else{q=m+58|0;j=b[q>>1]|0;if(((b[m+22>>1]|0)+3+(j<<16>>16)|0)>>>0>(c[m+4>>2]|0)>>>0){j=Eg(m,3,0)|0;if(j)break;j=b[q>>1]|0}o=c[m+60>>2]|0;n=j<<16>>16;f=c[m+64>>2]|0;k=F;r=c[k+4>>2]|0;s=o+(n<<3)|0;c[s>>2]=c[k>>2];c[s+4>>2]=r;s=n+1|0;r=x;k=c[r+4>>2]|0;j=o+(s<<3)|0;c[j>>2]=c[r>>2];c[j+4>>2]=k;j=n+2|0;k=y;r=c[k+4>>2]|0;o=o+(j<<3)|0;c[o>>2]=c[k>>2];c[o+4>>2]=r;a[f+n>>0]=2;a[f+s>>0]=2;a[f+j>>0]=1;b[q>>1]=(e[q>>1]|0)+3;j=0}while(0);c[I>>2]=j}}if(!j){m=p;q=u;j=t}else break e}n=c[D>>2]|0;if(a[z>>0]|0){l=n+58|0;k=b[l>>1]|0;m=k<<16>>16;j=m+-1|0;o=n+56|0;p=b[o>>1]|0;if(p<<16>>16>0)q=b[(c[n+68>>2]|0)+((p<<16>>16)+-1<<1)>>1]|0;else q=0;if(((j|0)>(q|0)?(G=c[n+60>>2]|0,(c[G+(q<<3)>>2]|0)==(c[G+(j<<3)>>2]|0)):0)?(c[G+(q<<3)+4>>2]|0)==(c[G+(j<<3)+4>>2]|0):0){b[l>>1]=k+-1<<16>>16;j=m+-2|0}if((j|0)>=(q|0)){b[o>>1]=p+1<<16>>16;b[(c[n+68>>2]|0)+(p<<16>>16<<1)>>1]=j}a[z>>0]=0}Hg(n);j=c[I>>2]|0}else J=179;while(0);if((J|0)==179){c[I>>2]=8;j=8}Xh(g);J=j;i=K;return J|0}function Fs(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=c[b>>2]|0;if(f>>>0>=d>>>0){u=0;return u|0}h=a[f>>0]|0;do if(h<<24>>24==43|h<<24>>24==45){f=f+1|0;if((f|0)==(d|0)){u=0;return u|0}else{l=a[f>>0]|0;u=h<<24>>24==45&1;break}}else{l=h;u=0}while(0);do if(l<<24>>24!=46){if(f>>>0>=d>>>0){u=0;return u|0}if(l<<24>>24==43|l<<24>>24==45){g=f+1|0;if((g|0)==(d|0)){u=0;return u|0}else m=l<<24>>24==45&1}else{g=f;m=0}a:do if(g>>>0>>0){j=0;i=0;while(1){l=a[g>>0]|0;h=l&255;switch(l<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{l=j;h=i;break a}default:{}}if(l<<24>>24<0){l=j;h=i;break a}t=h&127;l=a[19600+t>>0]|0;h=l<<24>>24;if((t+-48|0)>>>0>=10){l=j;h=i;break a}if((i|0)<=214748364)if((i|0)==214748364&l<<24>>24>7){l=1;h=214748364}else{l=j;h=h+(i*10|0)|0}else{l=1;h=i}g=g+1|0;if(g>>>0>>0){j=l;i=h}else break a}}else{l=0;h=0}while(0);h=l<<24>>24==0?h:2147483647;h=m<<24>>24==0?h:0-h|0;if((g|0)==(f|0)){u=0;return u|0}if(g>>>0>>0?(a[g>>0]|0)==35:0){p=g+1|0;if(p>>>0>=d>>>0|(h+-2|0)>>>0>34){u=0;return u|0}l=a[p>>0]|0;if(l<<24>>24==43|l<<24>>24==45){g=g+2|0;if((g|0)==(d|0)){u=0;return u|0}else o=l<<24>>24==45&1}else{g=p;o=0}k=2147483647/(h|0)|0;b:do if(g>>>0>>0){n=(2147483647%(h|0)|0)<<24>>24;m=0;l=0;while(1){j=a[g>>0]|0;i=j&255;switch(j<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{h=m;break b}default:{}}if(j<<24>>24<0){h=m;break b}t=a[19600+(i&127)>>0]|0;j=t<<24>>24;if(!(t<<24>>24>-1&(j|0)<(h|0))){h=m;break b}do if((l|0)>(k|0))i=1;else{if((l|0)==(k|0)&(j|0)>(n|0)){i=1;l=k;break}i=m;l=j+(da(l,h)|0)|0}while(0);g=g+1|0;if(g>>>0>>0)m=i;else{h=i;break b}}}else{h=0;l=0}while(0);h=h<<24>>24==0?l:2147483647;if((g|0)==(p|0)){u=0;return u|0}else h=o<<24>>24==0?h:0-h|0}if((g|0)==(f|0)){u=0;return u|0}else{f=(h|0)>32767;i=f&1;f=f?h:h<<16;break}}else{g=f;i=0;f=0}while(0);c:do if(g>>>0>>0?(a[g>>0]|0)==46:0){m=(f|0)==0;j=g;g=0;h=1;d:while(1){e:do if(m)while(1){if((g|0)>=214748364){q=40;break d}j=j+1|0;if(j>>>0>=d>>>0)break c;l=a[j>>0]|0;k=l&255;switch(l<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:break c;default:{}}if(l<<24>>24<0)break c;l=k&127;if((l+-48|0)>>>0>9)break c;g=(a[19600+l>>0]|0)+(g*10|0)|0;if((e|0)>0)e=e+-1|0;else break e}else{if((g|0)>=214748364){q=51;break d}j=j+1|0;if(j>>>0>=d>>>0)break c;l=a[j>>0]|0;k=l&255;switch(l<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:break c;default:{}}if(l<<24>>24<0)break c;l=k&127;if((l+-48|0)>>>0>9)break c;g=(a[19600+l>>0]|0)+(g*10|0)|0}while(0);h=h*10|0}if((q|0)==40)while(1){j=j+1|0;if(j>>>0>=d>>>0)break c;l=a[j>>0]|0;k=l&255;switch(l<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:break c;default:{}}if(l<<24>>24<0)break c;if(((k&127)+-48|0)>>>0>9)break c}else if((q|0)==51)while(1){j=j+1|0;if(j>>>0>=d>>>0)break c;k=a[j>>0]|0;l=k&255;switch(k<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:break c;default:{}}if(k<<24>>24<0)break c;if(((l&127)+-48|0)>>>0>9)break c}}else{j=g;g=0;h=1}while(0);t=j+1|0;if(t>>>0>>0?(s=a[j>>0]|0,s<<24>>24==69|s<<24>>24==101):0){l=a[t>>0]|0;if(l<<24>>24==43|l<<24>>24==45){k=j+2|0;if((k|0)==(d|0)){j=0;k=t}else{o=l<<24>>24==45&1;q=66}}else{k=t;o=0;q=66}do if((q|0)==66){f:do if(k>>>0>>0){m=0;n=0;while(1){l=a[k>>0]|0;j=l&255;switch(l<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{l=m;j=n;break f}default:{}}if(l<<24>>24<0){l=m;j=n;break f}s=j&127;l=a[19600+s>>0]|0;j=l<<24>>24;if((s+-48|0)>>>0>=10){l=m;j=n;break f}if((n|0)<=214748364)if((n|0)==214748364&l<<24>>24>7){l=1;j=214748364}else{l=m;j=j+(n*10|0)|0}else{l=1;j=n}k=k+1|0;if(k>>>0>>0){m=l;n=j}else break f}}else{l=0;j=0}while(0);j=l<<24>>24==0?j:2147483647;j=o<<24>>24==0?j:0-j|0;if((k|0)==(t|0)){j=0;k=t}else if(k>>>0>>0?(a[k>>0]|0)==35:0){s=k+1|0;if(s>>>0>=d>>>0|(j+-2|0)>>>0>34){j=0;k=t;break}l=a[s>>0]|0;if(l<<24>>24==43|l<<24>>24==45){k=k+2|0;if((k|0)==(d|0)){j=0;k=t;break}else r=l<<24>>24==45&1}else{k=s;r=0}p=2147483647/(j|0)|0;g:do if(k>>>0>>0){q=(2147483647%(j|0)|0)<<24>>24;o=0;l=0;while(1){m=a[k>>0]|0;n=m&255;switch(m<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{j=o;break g}default:{}}if(m<<24>>24<0){j=o;break g}n=a[19600+(n&127)>>0]|0;m=n<<24>>24;if(!(n<<24>>24>-1&(m|0)<(j|0))){j=o;break g}do if((l|0)>(p|0))n=1;else{if((l|0)==(p|0)&(m|0)>(q|0)){n=1;l=p;break}n=o;l=m+(da(l,j)|0)|0}while(0);k=k+1|0;if(k>>>0>>0)o=n;else{j=n;break g}}}else{j=0;l=0}while(0);l=j<<24>>24==0?l:2147483647;if((k|0)==(s|0)){j=0;k=t;break}else j=r<<24>>24==0?l:0-l|0}}while(0);if((t|0)==(k|0)){u=0;return u|0}if((j|0)>1e3){i=1;j=0}else{d=(j|0)<-1e3;e=(d?0:j)+e|0;j=d&1}}else{k=j;j=0}c[b>>2]=k;if(!(g|f)){u=0;return u|0}h:do if(!(i<<24>>24)){if(j<<24>>24){u=0;return u|0}if((e|0)>0)do{if((f|0)>214748363){f=2147483647;break h}f=f*10|0;if((g|0)>214748363){if((h|0)==1){f=2147483647;break h}h=(h|0)/10|0}else g=g*10|0;e=e+-1|0}while((e|0)>0);i:do if((e|0)<0){i=f;while(1){f=(i|0)/10|0;if((h|0)<214748364)h=h*10|0;else g=(g|0)/10|0;e=e+1|0;if(!((i+9|0)>>>0>18|(g|0)!=0)){f=0;break}if((e|0)>=0){e=h;break i}else i=f}return f|0}else e=h;while(0);if(g)f=(rg(g,e)|0)+f|0}else f=2147483647;while(0);u=u<<24>>24==0?f:0-f|0;return u|0}function Gs(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+16|0;z=B+4|0;x=B;u=c[b+4>>2]|0;if((f+-1|0)>>>0>4){A=0;i=B;return A|0}y=u+12|0;t=u+8|0;v=b+12|0;w=b+16|0;g=0;a:while(1){o=c[e+(g<<3)>>2]|0;k=c[y>>2]|0;h=(k|0)>0;if(o){if(h)break;h=c[u>>2]|0;m=c[t>>2]|0;if(h>>>0>=m>>>0){A=25;break}b:while(1){j=h;h=h+1|0;c[u>>2]=h;switch(d[j>>0]|0){case 26:{A=25;break a}case 59:{A=24;break a}case 10:case 13:{A=23;break a}case 9:case 32:break;default:break b}if(h>>>0>=m>>>0){A=25;break a}}l=h;k=j;c:while(1){if(l>>>0>=m>>>0){h=l;A=30;break}h=k+2|0;c[u>>2]=h;switch(d[l>>0]|0){case 9:case 32:break c;case 10:case 13:{A=28;break c}case 26:{A=30;break c}case 59:{A=29;break c}default:{k=l;l=h}}}if((A|0)==28){A=0;c[y>>2]=2}else if((A|0)==29){A=0;c[y>>2]=1}else if((A|0)==30){A=0;c[y>>2]=3}c[z>>2]=j;if(!j){A=73;break}}else{d:do if(h)A=11;else{h=c[u>>2]|0;j=c[t>>2]|0;if(h>>>0>=j>>>0){A=10;break a}e:while(1){s=h;h=h+1|0;c[u>>2]=h;switch(d[s>>0]|0){case 9:case 32:break;case 10:case 13:{A=8;break a}case 59:break e;case 26:{A=10;break a}default:{A=11;break d}}if(h>>>0>=j>>>0){A=10;break a}}c[y>>2]=1;l=j}while(0);if((A|0)==11){A=0;if((k|0)>1)break;l=c[t>>2]|0;h=c[u>>2]|0}j=h+-1|0;k=h;while(1){if(k>>>0>=l>>>0){h=k;k=3;break}h=k+1|0;c[u>>2]=h;k=a[k>>0]|0;s=k&255;if((s|0)==10|(s|0)==13){k=2;break}if(k<<24>>24==26){k=3;break}else k=h}c[y>>2]=k;c[z>>2]=j}k=h-j|0;l=k+-1|0;f:do switch(o|0){case 5:{h=c[v>>2]|0;if(!h){c[e+(g<<3)+4>>2]=0;break f}else{c[e+(g<<3)+4>>2]=Hd[h&255](j,l,c[w>>2]|0)|0;break f}}case 4:{if((l|0)==4)h=(hfa(j,357952,4)|0)==0&1;else h=0;a[e+(g<<3)+4>>0]=h;break}case 1:case 0:{h=Wh(c[b>>2]|0,k,x)|0;k=e+(g<<3)+4|0;c[k>>2]=h;if(!(c[x>>2]|0)){qfa(h|0,j|0,l|0)|0;a[(c[k>>2]|0)+l>>0]=0}break}case 2:{c[e+(g<<3)+4>>2]=Fs(z,j+l|0,0)|0;break}case 3:{s=j+l|0;do if((k|0)>=2){h=a[j>>0]|0;if(h<<24>>24==43|h<<24>>24==45)if((l|0)==1){h=0;break}else{k=j+1|0;o=h<<24>>24==45&1}else{k=j;o=0}g:do if(k>>>0>>0){m=0;n=0;while(1){h=a[k>>0]|0;l=h&255;switch(h<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{h=m;l=n;break g}default:{}}if(h<<24>>24<0){h=m;l=n;break g}r=l&127;h=a[19600+r>>0]|0;l=h<<24>>24;if((r+-48|0)>>>0>=10){h=m;l=n;break g}if((n|0)<=214748364)if((n|0)==214748364&h<<24>>24>7){h=1;l=214748364}else{h=m;l=l+(n*10|0)|0}else{h=1;l=n}k=k+1|0;if(k>>>0>>0){m=h;n=l}else break g}}else{h=0;l=0}while(0);h=h<<24>>24==0?l:2147483647;h=o<<24>>24==0?h:0-h|0;if((k|0)!=(j|0)){if(k>>>0>>0?(a[k>>0]|0)==35:0){r=k+1|0;if(r>>>0>=s>>>0|(h+-2|0)>>>0>34){h=0;break}j=a[r>>0]|0;if(j<<24>>24==43|j<<24>>24==45){k=k+2|0;if((k|0)==(s|0)){h=0;break}else q=j<<24>>24==45&1}else{k=r;q=0}o=2147483647/(h|0)|0;h:do if(k>>>0>>0){n=(2147483647%(h|0)|0)<<24>>24;j=0;p=0;while(1){m=a[k>>0]|0;l=m&255;switch(m<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{h=p;break h}default:{}}if(m<<24>>24<0){h=p;break h}l=a[19600+(l&127)>>0]|0;m=l<<24>>24;if(!(l<<24>>24>-1&(m|0)<(h|0))){h=p;break h}do if((p|0)>(o|0)){j=1;m=p}else{if((p|0)==(o|0)&(m|0)>(n|0)){j=1;m=o;break}m=m+(da(p,h)|0)|0}while(0);k=k+1|0;if(k>>>0>>0)p=m;else{h=m;break h}}}else{j=0;h=0}while(0);h=j<<24>>24==0?h:2147483647;if((k|0)==(r|0)){h=0;break}else h=q<<24>>24==0?h:0-h|0}c[z>>2]=k}else h=0}else h=0;while(0);c[e+(g<<3)+4>>2]=h;break}default:{}}while(0);g=g+1|0;if(g>>>0>=f>>>0){A=73;break}}if((A|0)==8)c[y>>2]=2;else if((A|0)==10)c[y>>2]=3;else if((A|0)==23)c[y>>2]=2;else if((A|0)==24)c[y>>2]=1;else if((A|0)==25)c[y>>2]=3;else if((A|0)==73){i=B;return g|0}c[z>>2]=0;A=g;i=B;return A|0}function Hs(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]<<16|c[a+4>>2];a=c[b>>2]<<16|c[b+4>>2];if(d>>>0>a>>>0){b=1;return b|0}b=(d>>>0>>0)<<31>>31;return b|0}function Is(a,b){a=a|0;b=b|0;return c[(c[a+420>>2]|0)+(b<<2)>>2]|0}function Js(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+16|0;q=r;p=yg(f,2496,q)|0;j=c[q>>2]|0;if(j){g=j;c[h>>2]=p;i=r;return g|0}c[p>>2]=f;n=p+4|0;l=p+208|0;c[p+212>>2]=e[g+120>>1];o=a[g+124>>0]|0;j=o&255;if(o<<24>>24){f=j;k=g+128|0;m=p+224|0;while(1){c[m>>2]=b[k>>1];f=f+-1|0;if(!f)break;else{k=k+2|0;m=m+12|0}}}c[l>>2]=j+1;c[p+8>>2]=e[g+122>>1];o=a[g+125>>0]|0;j=o&255;if(o<<24>>24){f=j;k=g+154|0;l=p+20|0;while(1){c[l>>2]=b[k>>1];f=f+-1|0;if(!f)break;else{k=k+2|0;l=l+12|0}}}c[n>>2]=j+1;l=p+412|0;f=g+8|0;k=g+9|0;o=g+116|0;gu(l,d[f>>0]|0,g+12|0,d[k>>0]|0,g+40|0,c[o>>2]|0,0);n=g+10|0;m=g+11|0;gu(l,d[n>>0]|0,g+60|0,d[m>>0]|0,g+88|0,c[o>>2]|0,1);f=a[f>>0]|0;l=f&255;if(!(f<<24>>24))j=1;else{j=1;f=0;do{s=(e[g+((f|1)<<1)+12>>1]|0)-(e[g+(f<<1)+12>>1]|0)|0;j=(s<<16>>16|0)>(j<<16>>16|0)?s&65535:j;f=f+2|0}while(f>>>0>>0)}s=a[k>>0]|0;f=s&255;if(s<<24>>24){l=0;do{s=(e[g+((l|1)<<1)+40>>1]|0)-(e[g+(l<<1)+40>>1]|0)|0;j=(s<<16>>16|0)>(j<<16>>16|0)?s&65535:j;l=l+2|0}while(l>>>0>>0)}s=a[n>>0]|0;f=s&255;if(s<<24>>24){l=0;do{s=(e[g+((l|1)<<1)+60>>1]|0)-(e[g+(l<<1)+60>>1]|0)|0;j=(s<<16>>16|0)>(j<<16>>16|0)?s&65535:j;l=l+2|0}while(l>>>0>>0)}s=a[m>>0]|0;l=s&255;if(s<<24>>24){f=0;do{s=(e[g+((f|1)<<1)+88>>1]|0)-(e[g+(f<<1)+88>>1]|0)|0;j=(s<<16>>16|0)>(j<<16>>16|0)?s&65535:j;f=f+2|0}while(f>>>0>>0)}s=rg(1e3,j<<16>>16)|0;m=c[g+108>>2]|0;c[p+2476>>2]=(m|0)<(s|0)?m:s;c[p+2480>>2]=c[g+112>>2];c[p+2488>>2]=c[o>>2];c[p+200>>2]=0;c[p+204>>2]=0;c[p+404>>2]=0;c[p+408>>2]=0;s=c[q>>2]|0;c[h>>2]=p;i=r;return s|0}function Ks(a){a=a|0;var b=0;if(!a)return;b=c[a>>2]|0;c[a+4>>2]=0;c[a+208>>2]=0;c[a+412>>2]=0;c[a+928>>2]=0;c[a+1444>>2]=0;c[a+1960>>2]=0;Ag(b,a);return}function Ls(a){a=a|0;c[a+4>>2]=0;c[a+16>>2]=0;c[a+28>>2]=0;c[a+40>>2]=0;c[a+52>>2]=0;c[a+64>>2]=0;c[a+76>>2]=0;c[a+12>>2]=1;return}function Ms(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+4>>2]|0;if(d){b=d;return b|0}d=c[a>>2]|0;e=hu(a+16|0,b,d)|0;if(e){b=e;return b|0}b=hu(a+52|0,b,d)|0;return b|0}function Ns(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;e=(lg(c[d>>2]|0)|0)>>16;c[g>>2]=e;c[g+4>>2]=(lg(c[d+4>>2]|0)|0)>>16;f=a+4|0;if(c[f>>2]|0){i=h;return}if(((c[a+12>>2]|0)+-1|0)>>>0>=2){i=h;return}d=iu(a+((b>>>0>1?1:b)*36|0)+16|0,e,c[g+4>>2]|0,c[a>>2]|0,0)|0;if(!d){i=h;return}c[f>>2]=d;i=h;return}function Os(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+32|0;s=B+24|0;u=B;x=B+4|0;z=B+8|0;j=B+12|0;A=b+4|0;if(c[A>>2]|0){i=B;return}y=c[b>>2]|0;r=e>>>0>1?1:e;h=b+(r*36|0)+16|0;a:do if((c[b+12>>2]|0)==1){g=0;while(1){e=(lg(c[f>>2]|0)|0)>>16;e=iu(h,e,(lg(c[f+4>>2]|0)|0)>>16,y,j+(g<<2)|0)|0;if(e)break a;g=g+1|0;if((g|0)>=3)break;else f=f+8|0}t=c[j>>2]|0;v=c[j+4>>2]|0;w=c[j+8>>2]|0;o=b+(r*36|0)+40|0;p=c[o>>2]|0;b:do if(!p)q=14;else{f=t>>3;g=128>>>(t&7);h=v>>3;j=128>>>(v&7);k=w>>3;l=128>>>(w&7);m=p;n=c[b+(r*36|0)+48>>2]|0;while(1){e=c[n>>2]|0;if(e>>>0>t>>>0?((d[(c[n+8>>2]|0)+f>>0]|0)&g|0)!=0:0)break b;if(e>>>0>v>>>0?((d[(c[n+8>>2]|0)+h>>0]|0)&j|0)!=0:0)break b;if(e>>>0>w>>>0?((d[(c[n+8>>2]|0)+k>>0]|0)&l|0)!=0:0)break b;m=m+-1|0;if(!m){q=14;break}else n=n+16|0}}while(0);if((q|0)==14){j=p+1|0;g=b+(r*36|0)+44|0;e=c[g>>2]|0;if(j>>>0>e>>>0){c[s>>2]=0;h=p+8&-8;b=b+(r*36|0)+48|0;f=Dg(y,16,e,h,c[b>>2]|0,s)|0;c[b>>2]=f;e=c[s>>2]|0;if(e)break;c[g>>2]=h;e=f}else e=c[b+(r*36|0)+48>>2]|0;n=e+(p<<4)|0;c[n>>2]=0;c[e+(p<<4)+12>>2]=0;c[o>>2]=j;e=0}if((t|0)>=0){if(e>>>0<=t>>>0){h=t+1|0;j=n+4|0;f=((c[j>>2]|0)+7|0)>>>3;e=(t+8|0)>>>3;c[u>>2]=0;if(e>>>0>f>>>0){g=e+7&1073741816;e=n+8|0;c[e>>2]=Dg(y,1,f,g,c[e>>2]|0,u)|0;e=c[u>>2]|0;if(e)break;c[j>>2]=g<<3}c[n>>2]=h}u=(c[n+8>>2]|0)+(t>>3)|0;a[u>>0]=d[u>>0]|0|128>>>(t&7)}if((v|0)>=0){if((c[n>>2]|0)>>>0<=v>>>0){h=v+1|0;j=n+4|0;f=((c[j>>2]|0)+7|0)>>>3;e=(v+8|0)>>>3;c[x>>2]=0;if(e>>>0>f>>>0){g=e+7&1073741816;e=n+8|0;c[e>>2]=Dg(y,1,f,g,c[e>>2]|0,x)|0;e=c[x>>2]|0;if(e)break;c[j>>2]=g<<3}c[n>>2]=h}x=(c[n+8>>2]|0)+(v>>3)|0;a[x>>0]=d[x>>0]|0|128>>>(v&7)}if((w|0)<0){i=B;return}if((c[n>>2]|0)>>>0<=w>>>0){f=w+1|0;j=n+4|0;g=((c[j>>2]|0)+7|0)>>>3;e=(w+8|0)>>>3;c[z>>2]=0;if(e>>>0>g>>>0){h=e+7&1073741816;e=n+8|0;c[e>>2]=Dg(y,1,g,h,c[e>>2]|0,z)|0;e=c[z>>2]|0;if(e)break;c[j>>2]=h<<3}c[n>>2]=f}A=(c[n+8>>2]|0)+(w>>3)|0;a[A>>0]=d[A>>0]|0|128>>>(w&7);i=B;return}else e=6;while(0);c[A>>2]=e;i=B;return}function Ps(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+16|0;n=p+4|0;e=p;o=a+4|0;if(c[o>>2]|0){i=p;return}m=c[a>>2]|0;do if((c[a+12>>2]|0)==1){k=a+28|0;l=c[k>>2]|0;if(l)c[(c[a+36>>2]|0)+(l+-1<<4)+12>>2]=b;j=l+1|0;f=a+32|0;d=c[f>>2]|0;if(j>>>0>d>>>0){c[e>>2]=0;h=l+8&-8;q=a+36|0;g=Dg(m,16,d,h,c[q>>2]|0,e)|0;c[q>>2]=g;d=c[e>>2]|0;if(d)break;c[f>>2]=h;d=g}else d=c[a+36>>2]|0;c[d+(l<<4)>>2]=0;c[d+(l<<4)+12>>2]=0;c[k>>2]=j;j=a+64|0;k=c[j>>2]|0;if(k)c[(c[a+72>>2]|0)+(k+-1<<4)+12>>2]=b;h=k+1|0;f=a+68|0;d=c[f>>2]|0;if(h>>>0>d>>>0){c[n>>2]=0;g=k+8&-8;q=a+72|0;e=Dg(m,16,d,g,c[q>>2]|0,n)|0;c[q>>2]=e;d=c[n>>2]|0;if(d)break;c[f>>2]=g;d=e}else d=c[a+72>>2]|0;c[d+(k<<4)>>2]=0;c[d+(k<<4)+12>>2]=0;c[j>>2]=h;i=p;return}else d=6;while(0);c[o>>2]=d;i=p;return}function Qs(a){a=a|0;c[a+4>>2]=0;c[a+16>>2]=0;c[a+28>>2]=0;c[a+40>>2]=0;c[a+52>>2]=0;c[a+64>>2]=0;c[a+76>>2]=0;c[a+12>>2]=2;return}function Rs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+128|0;n=o;if((d|0)<=0){i=o;return}l=a+4|0;m=a+12|0;k=a+((b>>>0>1?1:b)*36|0)+16|0;g=0;while(1){j=(d|0)>16?16:d;h=j<<1;f=(j|0)>0;if(f){b=0;do{g=(c[e+(b<<2)>>2]|0)+g|0;c[n+(b<<2)>>2]=(lg(g)|0)>>16;b=b+1|0}while((b|0)<(h|0));if(f){b=0;do{f=n+((b|1)<<2)|0;c[f>>2]=(c[f>>2]|0)-(c[n+(b<<2)>>2]|0);b=b+2|0}while((b|0)<(h|0));h=g}else h=g}else h=g;a:do if((c[l>>2]|0)==0?!((j|0)==0?1:((c[m>>2]|0)+-1|0)>>>0>1):0){f=j;g=n;while(1){b=iu(k,c[g>>2]|0,c[g+4>>2]|0,c[a>>2]|0,0)|0;if(b)break;f=f+-1|0;if(!f)break a;else g=g+8|0}c[l>>2]=b}while(0);d=d-j|0;if((d|0)<=0)break;else g=h}i=o;return}function Ss(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=a+4|0;if(c[k>>2]|0)return;f=a+16|0;j=c[a>>2]|0;g=c[f>>2]|0;h=a+52|0;i=c[h>>2]|0;if((i+g|0)!=(d|0))return;a=ju(f,e,i,g,b,j)|0;if(!a){a=ju(h,e,0,i,b,j)|0;if(!a)return}c[k>>2]=a;return}function Ts(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=a+4|0;if(c[j>>2]|0)return;e=a+16|0;h=c[a>>2]|0;i=c[e>>2]|0;f=a+52|0;g=c[f>>2]|0;if((g+i|0)!=(b|0))return;a=ju(e,d,0,i,0,h)|0;if(!a){a=ju(f,d,i,g,0,h)|0;if(!a)return}c[j>>2]=a;return}function Us(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=a+28|0;d=c[f>>2]|0;g=a+32|0;if(d){e=c[g>>2]|0;while(1){Ag(b,c[e+8>>2]|0);c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;d=d+-1|0;if(!d)break;else e=e+16|0}}Ag(b,c[g>>2]|0);c[g>>2]=0;c[a+24>>2]=0;c[f>>2]=0;f=a+16|0;d=c[f>>2]|0;g=a+20|0;if(d){e=c[g>>2]|0;while(1){Ag(b,c[e+8>>2]|0);c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;d=d+-1|0;if(!d)break;else e=e+16|0}}Ag(b,c[g>>2]|0);c[g>>2]=0;c[a+12>>2]=0;c[f>>2]=0;f=a+8|0;Ag(b,c[f>>2]|0);c[f>>2]=0;c[a>>2]=0;c[a+4>>2]=0;return}function Vs(b,c){b=b|0;c=c|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(!((b|0)!=0&b>>>0>>0)){r=0;return r|0}k=b+1|0;l=a[b>>0]|0;n=52;o=0;while(1){m=n+o>>1;f=m<<1;f=26672+(d[f+26674>>0]<<8|d[f+26675>>0])|0;h=a[f>>0]|0;j=h&127;if((j|0)==(l|0)){e=f;i=h;break}j=(j|0)<(l|0);o=j?m+1|0:o;n=j?n:m;if((o|0)>=(n|0)){g=0;p=16;break}}if((p|0)==16)return g|0;a:do if(k>>>0>>0){b:while(1){j=b+2|0;l=a[k>>0]|0;g=e+1|0;b=a[g>>0]|0;h=b&255;f=h&127;c:do if(i<<24>>24<0)if((l|0)==(f|0))e=g;else{g=0;p=16;break b}else{if(!f){g=0;p=16;break b}g=f;f=e+((h>>>6&2)+2)|0;while(1){e=26672+(d[f>>0]<<8|d[f+1>>0])|0;b=a[e>>0]|0;if((l|0)==(b&127|0))break c;g=g+-1|0;if((g|0)<=0){g=0;p=16;break b}else f=f+2|0}}while(0);if(j>>>0>>0){p=k;k=j;i=b;b=p}else{q=b;r=e;break a}}if((p|0)==16)return g|0}else{q=i;r=e}while(0);if(q<<24>>24<=-1){r=0;return r|0}if((a[r+1>>0]|0)>=0){r=0;return r|0}r=d[r+2>>0]<<8|d[r+3>>0];return r|0}function Ws(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a>>2]|0;e=d&2147483647;a=c[b>>2]|0;b=a&2147483647;if((e|0)==(b|0)){if(d>>>0>a>>>0){d=1;return d|0}d=(d>>>0>>0)<<31>>31;return d|0}else{if(e>>>0>b>>>0){d=1;return d|0}d=(e>>>0>>0)<<31>>31;return d|0}return 0}function Xs(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;f=c[a+112>>2]|0;e=0-f|0;b[a+156>>1]=e;e=da(b[d>>1]|0,e)|0;d=a+148|0;c[d>>2]=e;if((f|0)<=0){f=a+158|0;b[f>>1]=0;f=a+160|0;b[f>>1]=0;return}c[d>>2]=(da((c[a+104>>2]|0)+-1|0,f)|0)+e;f=a+158|0;b[f>>1]=0;f=a+160|0;b[f>>1]=0;return}function Ys(f,g,h,i,j,k){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0;m=c[f+4>>2]|0;j=0-m|0;k=c[f>>2]|0;g=(h+-1+m&j)>>k;if((i-h-m|0)>(c[f+20>>2]|0))k=(j&i)>>k;else k=g;if((k|0)<=-1)return;j=e[f+56>>1]|0;if((g|0)>=(j|0))return;l=(g|0)<0?0:g;o=(k|0)<(j|0)?k:j+-1|0;m=l<<13>>16;n=o<<13>>16;l=255>>>(l&7);o=127>>>(o&7)^255;j=f+158|0;if((b[j>>1]|0)>(m|0))b[j>>1]=m;j=f+160|0;if((b[j>>1]|0)<(n|0))b[j>>1]=n;i=c[f+60>>2]|0;h=c[f+148>>2]|0;j=h+m|0;k=i+j|0;g=n-m|0;if((g|0)<=0){a[k>>0]=d[k>>0]|o&l;return}a[k>>0]=d[k>>0]|l;j=i+(j+1)|0;if((g+-1|0)>0){sfa(j|0,-1,n+-1-m|0)|0;j=i+(h+n)|0}a[j>>0]=d[j>>0]|o;return} -function LG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;z=i;i=i+512|0;y=z;x=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=y;while(1){r=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;k=da(b[f+64>>1]|0,c[d+128>>2]|0)|0;w=k*10703|0;k=k*4433|0;A=w+r|0;w=r-w|0;o=k+r|0;k=r-k|0;r=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;p=da(b[f+96>>1]|0,c[d+192>>2]|0)|0;u=r-p|0;C=u*2260|0;u=u*11363|0;v=u+(p*20995|0)|0;t=C+(r*7373|0)|0;r=u+(da(r,-4926)|0)|0;p=C+(da(p,-4176)|0)|0;C=v+A|0;v=A-v|0;A=t+o|0;t=o-t|0;o=r+k|0;r=k-r|0;k=p+w|0;p=w-p|0;w=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;u=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;E=da(b[f+80>>1]|0,c[d+160>>2]|0)|0;G=da(b[f+112>>1]|0,c[d+224>>2]|0)|0;D=E+w|0;n=(u+w|0)*11086|0;l=D*10217|0;s=(G+w|0)*8956|0;q=(w-G|0)*7350|0;D=D*5461|0;m=(w-u|0)*3363|0;B=n+(da(w,-18730)|0)+l+s|0;w=m+(da(w,-15038)|0)+D+q|0;J=(E+u|0)*1136|0;F=(E-u|0)*11529|0;H=G+u|0;I=da(H,-5461)|0;n=n+(u*589|0)+J+I|0;H=da(H,-10217)|0;u=m+(u*16154|0)+F+H|0;m=da(G+E|0,-11086)|0;l=J+(da(E,-9222)|0)+l+m|0;m=I+(G*8728|0)+s+m|0;s=(G-E|0)*3363|0;q=H+(G*25733|0)+q+s|0;s=F+(da(E,-6278)|0)+D+s|0;c[e>>2]=B+C>>11;c[e+480>>2]=C-B>>11;c[e+32>>2]=n+A>>11;c[e+448>>2]=A-n>>11;c[e+64>>2]=l+o>>11;c[e+416>>2]=o-l>>11;c[e+96>>2]=m+k>>11;c[e+384>>2]=k-m>>11;c[e+128>>2]=q+p>>11;c[e+352>>2]=p-q>>11;c[e+160>>2]=s+r>>11;c[e+320>>2]=r-s>>11;c[e+192>>2]=u+t>>11;c[e+288>>2]=t-u>>11;c[e+224>>2]=w+v>>11;c[e+256>>2]=v-w>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+15|0;t=h+1|0;u=h+14|0;v=h+2|0;j=h+13|0;f=h+3|0;e=h+12|0;k=h+4|0;l=h+11|0;n=h+5|0;o=h+10|0;p=h+6|0;q=h+9|0;r=h+7|0;s=h+8|0;w=0;d=y;while(1){J=c[g+(w<<2)>>2]|0;C=(c[d>>2]<<13)+131072|0;F=c[d+16>>2]|0;I=F*10703|0;F=F*4433|0;N=C+I|0;I=C-I|0;L=C+F|0;F=C-F|0;C=c[d+8>>2]|0;A=c[d+24>>2]|0;G=C-A|0;P=G*2260|0;G=G*11363|0;H=G+(A*20995|0)|0;E=P+(C*7373|0)|0;C=G+(da(C,-4926)|0)|0;A=P+(da(A,-4176)|0)|0;P=H+N|0;H=N-H|0;N=E+L|0;E=L-E|0;L=C+F|0;C=F-C|0;F=A+I|0;A=I-A|0;I=c[d+4>>2]|0;G=c[d+12>>2]|0;R=c[d+20>>2]|0;T=c[d+28>>2]|0;Q=R+I|0;M=(G+I|0)*11086|0;K=Q*10217|0;D=(T+I|0)*8956|0;B=(I-T|0)*7350|0;Q=Q*5461|0;y=(I-G|0)*3363|0;O=M+(da(I,-18730)|0)+K+D|0;I=y+(da(I,-15038)|0)+Q+B|0;W=(R+G|0)*1136|0;S=(R-G|0)*11529|0;U=T+G|0;V=da(U,-5461)|0;M=M+(G*589|0)+W+V|0;U=da(U,-10217)|0;G=y+(G*16154|0)+S+U|0;y=da(T+R|0,-11086)|0;K=W+(da(R,-9222)|0)+K+y|0;y=V+(T*8728|0)+D+y|0;D=(T-R|0)*3363|0;B=U+(T*25733|0)+B+D|0;D=S+(da(R,-6278)|0)+Q+D|0;a[J+h>>0]=a[x+(((O+P|0)>>>18&1023)+128)>>0]|0;a[J+m>>0]=a[x+(((P-O|0)>>>18&1023)+128)>>0]|0;a[J+t>>0]=a[x+(((M+N|0)>>>18&1023)+128)>>0]|0;a[J+u>>0]=a[x+(((N-M|0)>>>18&1023)+128)>>0]|0;a[J+v>>0]=a[x+(((K+L|0)>>>18&1023)+128)>>0]|0;a[J+j>>0]=a[x+(((L-K|0)>>>18&1023)+128)>>0]|0;a[J+f>>0]=a[x+(((y+F|0)>>>18&1023)+128)>>0]|0;a[J+e>>0]=a[x+(((F-y|0)>>>18&1023)+128)>>0]|0;a[J+k>>0]=a[x+(((B+A|0)>>>18&1023)+128)>>0]|0;a[J+l>>0]=a[x+(((A-B|0)>>>18&1023)+128)>>0]|0;a[J+n>>0]=a[x+(((D+C|0)>>>18&1023)+128)>>0]|0;a[J+o>>0]=a[x+(((C-D|0)>>>18&1023)+128)>>0]|0;a[J+p>>0]=a[x+(((G+E|0)>>>18&1023)+128)>>0]|0;a[J+q>>0]=a[x+(((E-G|0)>>>18&1023)+128)>>0]|0;a[J+r>>0]=a[x+(((I+H|0)>>>18&1023)+128)>>0]|0;a[J+s>>0]=a[x+(((H-I|0)>>>18&1023)+128)>>0]|0;w=w+1|0;if((w|0)==16)break;else d=d+32|0}i=z;return}function MG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;z=i;i=i+256|0;y=z;x=c[d+300>>2]|0;l=8;j=c[e+84>>2]|0;k=y;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){w=da(c[j>>2]<<2,b[f>>1]|0)|0;c[k>>2]=w;c[k+32>>2]=w;c[k+64>>2]=w;c[k+96>>2]=w;c[k+128>>2]=w;c[k+160>>2]=w;c[k+192>>2]=w;c[k+224>>2]=w}else{d=0;m=10}else m=10;if((m|0)==10){m=0;v=da(d<<16>>16,c[j+64>>2]|0)|0;t=da(b[f+96>>1]|0,c[j+192>>2]|0)|0;w=(t+v|0)*4433|0;v=w+(v*6270|0)|0;t=w+(da(t,-15137)|0)|0;w=da(c[j+128>>2]<<13,b[f+64>>1]|0)|0;p=da(c[j>>2]<<13,b[f>>1]|0)|0|1024;r=w+p|0;w=p-w|0;p=r+v|0;v=r-v|0;r=w+t|0;t=w-t|0;w=da(b[f+112>>1]|0,c[j+224>>2]|0)|0;n=da(b[f+80>>1]|0,c[j+160>>2]|0)|0;o=da(b[f+48>>1]|0,c[j+96>>2]|0)|0;q=da(e<<16>>16,c[j+32>>2]|0)|0;s=o+w|0;u=q+n|0;e=(u+s|0)*9633|0;s=e+(da(s,-16069)|0)|0;u=e+(da(u,-3196)|0)|0;e=da(q+w|0,-7373)|0;w=e+(w*2446|0)+s|0;q=e+(q*12299|0)+u|0;e=da(o+n|0,-20995)|0;u=e+(n*16819|0)+u|0;s=e+(o*25172|0)+s|0;c[k>>2]=q+p>>11;c[k+224>>2]=p-q>>11;c[k+32>>2]=s+r>>11;c[k+192>>2]=r-s>>11;c[k+64>>2]=u+t>>11;c[k+160>>2]=t-u>>11;c[k+96>>2]=w+v>>11;c[k+128>>2]=v-w>>11}l=l+-1|0;if((l|0)<=0)break;else{f=f+2|0;j=j+4|0;k=k+4|0}}m=h+15|0;t=h+1|0;u=h+14|0;v=h+2|0;j=h+13|0;f=h+3|0;e=h+12|0;l=h+4|0;k=h+11|0;n=h+5|0;o=h+10|0;p=h+6|0;q=h+9|0;r=h+7|0;s=h+8|0;w=0;d=y;while(1){y=c[g+(w<<2)>>2]|0;F=(c[d>>2]<<13)+131072|0;J=c[d+16>>2]|0;A=J*10703|0;J=J*4433|0;N=F+A|0;A=F-A|0;L=F+J|0;J=F-J|0;F=c[d+8>>2]|0;H=c[d+24>>2]|0;C=F-H|0;P=C*2260|0;C=C*11363|0;B=C+(H*20995|0)|0;D=P+(F*7373|0)|0;F=C+(da(F,-4926)|0)|0;H=P+(da(H,-4176)|0)|0;P=B+N|0;B=N-B|0;N=D+L|0;D=L-D|0;L=F+J|0;F=J-F|0;J=H+A|0;H=A-H|0;A=c[d+4>>2]|0;C=c[d+12>>2]|0;R=c[d+20>>2]|0;T=c[d+28>>2]|0;Q=R+A|0;M=(C+A|0)*11086|0;K=Q*10217|0;E=(T+A|0)*8956|0;G=(A-T|0)*7350|0;Q=Q*5461|0;I=(A-C|0)*3363|0;O=M+(da(A,-18730)|0)+K+E|0;A=I+(da(A,-15038)|0)+Q+G|0;W=(R+C|0)*1136|0;S=(R-C|0)*11529|0;U=T+C|0;V=da(U,-5461)|0;M=M+(C*589|0)+W+V|0;U=da(U,-10217)|0;C=I+(C*16154|0)+S+U|0;I=da(T+R|0,-11086)|0;K=W+(da(R,-9222)|0)+K+I|0;I=V+(T*8728|0)+E+I|0;E=(T-R|0)*3363|0;G=U+(T*25733|0)+G+E|0;E=S+(da(R,-6278)|0)+Q+E|0;a[y+h>>0]=a[x+(((O+P|0)>>>18&1023)+128)>>0]|0;a[y+m>>0]=a[x+(((P-O|0)>>>18&1023)+128)>>0]|0;a[y+t>>0]=a[x+(((M+N|0)>>>18&1023)+128)>>0]|0;a[y+u>>0]=a[x+(((N-M|0)>>>18&1023)+128)>>0]|0;a[y+v>>0]=a[x+(((K+L|0)>>>18&1023)+128)>>0]|0;a[y+j>>0]=a[x+(((L-K|0)>>>18&1023)+128)>>0]|0;a[y+f>>0]=a[x+(((I+J|0)>>>18&1023)+128)>>0]|0;a[y+e>>0]=a[x+(((J-I|0)>>>18&1023)+128)>>0]|0;a[y+l>>0]=a[x+(((G+H|0)>>>18&1023)+128)>>0]|0;a[y+k>>0]=a[x+(((H-G|0)>>>18&1023)+128)>>0]|0;a[y+n>>0]=a[x+(((E+F|0)>>>18&1023)+128)>>0]|0;a[y+o>>0]=a[x+(((F-E|0)>>>18&1023)+128)>>0]|0;a[y+p>>0]=a[x+(((C+D|0)>>>18&1023)+128)>>0]|0;a[y+q>>0]=a[x+(((D-C|0)>>>18&1023)+128)>>0]|0;a[y+r>>0]=a[x+(((A+B|0)>>>18&1023)+128)>>0]|0;a[y+s>>0]=a[x+(((B-A|0)>>>18&1023)+128)>>0]|0;w=w+1|0;if((w|0)==8)break;else d=d+32|0}i=z;return}function NG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;x=i;i=i+224|0;w=x;v=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=w;while(1){u=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;n=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;s=da(b[f+64>>1]|0,c[d+128>>2]|0)|0;l=da(b[f+96>>1]|0,c[d+192>>2]|0)|0;o=(s-l|0)*7223|0;r=(n-s|0)*2578|0;m=(da(s,-15083)|0)+u+r+o|0;t=l+n|0;q=(t*10438|0)+u|0;l=o+(da(l,-637)|0)+q|0;q=r+(da(n,-20239)|0)+q|0;n=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;r=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;o=da(b[f+80>>1]|0,c[d+160>>2]|0)|0;y=(r+n|0)*7663|0;k=(n-r|0)*1395|0;r=da(o+r|0,-11295)|0;p=y+k+r|0;n=(o+n|0)*5027|0;k=n+(y-k)|0;r=n+(o*15326|0)+r|0;c[e>>2]=k+l>>11;c[e+192>>2]=l-k>>11;c[e+32>>2]=p+m>>11;c[e+160>>2]=m-p>>11;c[e+64>>2]=r+q>>11;c[e+128>>2]=q-r>>11;c[e+96>>2]=((s-t|0)*11585|0)+u>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+13|0;r=h+1|0;s=h+12|0;t=h+2|0;j=h+11|0;f=h+3|0;e=h+10|0;k=h+4|0;l=h+9|0;n=h+5|0;o=h+8|0;p=h+6|0;q=h+7|0;u=0;d=w;while(1){y=c[g+(u<<2)>>2]|0;D=(c[d>>2]<<13)+131072|0;F=c[d+16>>2]|0;J=D+(F*10438|0)|0;H=D+(F*2578|0)|0;w=D+(da(F,-7223)|0)|0;F=D+(da(F,-11586)|0)|0;D=c[d+8>>2]|0;L=c[d+24>>2]|0;B=(L+D|0)*9058|0;z=B+(D*2237|0)|0;B=B+(da(L,-14084)|0)|0;D=(da(L,-11295)|0)+(D*5027|0)|0;L=z+J|0;z=J-z|0;J=B+H|0;B=H-B|0;H=D+w|0;D=w-D|0;w=c[d+4>>2]|0;O=c[d+12>>2]|0;M=c[d+20>>2]|0;E=c[d+28>>2]<<13;C=M+w|0;I=(O+w|0)*10935|0;P=C*9810|0;K=I+(da(w,-9232)|0)+P+E|0;C=C*6164|0;N=w-O|0;A=(N*3826|0)-E|0;w=C+(da(w,-8693)|0)+A|0;G=(da(M+O|0,-1297)|0)-E|0;I=I+(da(O,-3474)|0)+G|0;G=P+(da(M,-19447)|0)+G|0;P=(M-O|0)*11512|0;C=E+(da(M,-13850)|0)+P+C|0;A=P+(O*5529|0)+A|0;E=(N-M<<13)+E|0;a[y+h>>0]=a[v+(((K+L|0)>>>18&1023)+128)>>0]|0;a[y+m>>0]=a[v+(((L-K|0)>>>18&1023)+128)>>0]|0;a[y+r>>0]=a[v+(((I+J|0)>>>18&1023)+128)>>0]|0;a[y+s>>0]=a[v+(((J-I|0)>>>18&1023)+128)>>0]|0;a[y+t>>0]=a[v+(((G+H|0)>>>18&1023)+128)>>0]|0;a[y+j>>0]=a[v+(((H-G|0)>>>18&1023)+128)>>0]|0;a[y+f>>0]=a[v+(((E+F|0)>>>18&1023)+128)>>0]|0;a[y+e>>0]=a[v+(((F-E|0)>>>18&1023)+128)>>0]|0;a[y+k>>0]=a[v+(((C+D|0)>>>18&1023)+128)>>0]|0;a[y+l>>0]=a[v+(((D-C|0)>>>18&1023)+128)>>0]|0;a[y+n>>0]=a[v+(((A+B|0)>>>18&1023)+128)>>0]|0;a[y+o>>0]=a[v+(((B-A|0)>>>18&1023)+128)>>0]|0;a[y+p>>0]=a[v+(((w+z|0)>>>18&1023)+128)>>0]|0;a[y+q>>0]=a[v+(((z-w|0)>>>18&1023)+128)>>0]|0;u=u+1|0;if((u|0)==7)break;else d=d+32|0}i=x;return}function OG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;v=i;i=i+192|0;u=v;t=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=u;while(1){p=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;r=da((c[d+128>>2]|0)*5793|0,b[f+64>>1]|0)|0;o=r+p|0;p=(da(r,-2)|0)+p>>11;r=da((c[d+64>>2]|0)*10033|0,b[f+32>>1]|0)|0;k=r+o|0;r=o-r|0;o=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;l=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;q=da(b[f+80>>1]|0,c[d+160>>2]|0)|0;s=(q+o|0)*2998|0;m=s+(l+o<<13)|0;s=s+(q-l<<13)|0;q=o-l-q<<2;c[e>>2]=m+k>>11;c[e+160>>2]=k-m>>11;c[e+32>>2]=q+p;c[e+128>>2]=p-q;c[e+64>>2]=s+r>>11;c[e+96>>2]=r-s>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+11|0;p=h+1|0;q=h+10|0;r=h+2|0;j=h+9|0;f=h+3|0;e=h+8|0;k=h+4|0;l=h+7|0;n=h+5|0;o=h+6|0;s=0;d=u;while(1){u=c[g+(s<<2)>>2]|0;x=(c[d>>2]<<13)+131072|0;J=(c[d+16>>2]|0)*10033|0;I=x+J|0;J=x-J|0;D=c[d+8>>2]|0;B=c[d+24>>2]<<13;z=(D<<13)-B|0;F=z+x|0;z=x-z|0;x=B+(D*11190|0)|0;H=x+I|0;x=I-x|0;B=(D*2998|0)-B|0;D=B+J|0;B=J-B|0;J=c[d+4>>2]|0;I=c[d+12>>2]|0;y=c[d+20>>2]|0;E=c[d+28>>2]|0;L=I*10703|0;K=da(I,-4433)|0;C=y+J|0;w=(C+E|0)*7053|0;C=w+(C*2139|0)|0;G=L+(J*2295|0)+C|0;A=da(E+y|0,-8565)|0;C=(da(y,-12112)|0)+K+A+C|0;A=(E*12998|0)-L+w+A|0;w=K+(da(J,-5540)|0)+(da(E,-16244)|0)+w|0;E=J-E|0;y=I-y|0;I=(E+y|0)*4433|0;E=I+(E*6270|0)|0;y=I+(da(y,-15137)|0)|0;a[u+h>>0]=a[t+(((G+H|0)>>>18&1023)+128)>>0]|0;a[u+m>>0]=a[t+(((H-G|0)>>>18&1023)+128)>>0]|0;a[u+p>>0]=a[t+(((E+F|0)>>>18&1023)+128)>>0]|0;a[u+q>>0]=a[t+(((F-E|0)>>>18&1023)+128)>>0]|0;a[u+r>>0]=a[t+(((C+D|0)>>>18&1023)+128)>>0]|0;a[u+j>>0]=a[t+(((D-C|0)>>>18&1023)+128)>>0]|0;a[u+f>>0]=a[t+(((A+B|0)>>>18&1023)+128)>>0]|0;a[u+e>>0]=a[t+(((B-A|0)>>>18&1023)+128)>>0]|0;a[u+k>>0]=a[t+(((y+z|0)>>>18&1023)+128)>>0]|0;a[u+l>>0]=a[t+(((z-y|0)>>>18&1023)+128)>>0]|0;a[u+n>>0]=a[t+(((w+x|0)>>>18&1023)+128)>>0]|0;a[u+o>>0]=a[t+(((x-w|0)>>>18&1023)+128)>>0]|0;s=s+1|0;if((s|0)==6)break;else d=d+32|0}i=v;return}function PG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;t=i;i=i+160|0;s=t;r=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=s;while(1){q=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;p=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;k=da(b[f+64>>1]|0,c[d+128>>2]|0)|0;m=(k+p|0)*6476|0;k=p-k|0;p=(k*2896|0)+q|0;l=p+m|0;m=p-m|0;q=(da(k,-11584)|0)+q|0;k=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;p=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;o=(p+k|0)*6810|0;k=o+(k*4209|0)|0;p=o+(da(p,-17828)|0)|0;c[e>>2]=k+l>>11;c[e+128>>2]=l-k>>11;c[e+32>>2]=p+m>>11;c[e+96>>2]=m-p>>11;c[e+64>>2]=q>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+9|0;n=h+1|0;o=h+8|0;p=h+2|0;j=h+7|0;f=h+3|0;e=h+6|0;k=h+4|0;l=h+5|0;q=0;d=s;while(1){s=c[g+(q<<2)>>2]|0;v=(c[d>>2]<<13)+131072|0;z=c[d+16>>2]|0;B=v+(z*9373|0)|0;E=v+(da(z,-3580)|0)|0;z=v+(da(z,-11586)|0)|0;v=c[d+8>>2]|0;x=c[d+24>>2]|0;D=(x+v|0)*6810|0;v=D+(v*4209|0)|0;x=D+(da(x,-17828)|0)|0;D=v+B|0;v=B-v|0;B=x+E|0;x=E-x|0;E=c[d+4>>2]|0;F=c[d+12>>2]|0;y=c[d+20>>2]<<13;A=c[d+28>>2]|0;w=A+F|0;A=F-A|0;F=A*2531|0;G=w*7791|0;u=F+y|0;C=G+(E*11443|0)+u|0;u=(E*1812|0)-G+u|0;w=w*4815|0;F=y-F-(A<<12)|0;y=(E-A<<13)-y|0;A=(E*10323|0)-w-F|0;w=F+((E*5260|0)-w)|0;a[s+h>>0]=a[r+(((C+D|0)>>>18&1023)+128)>>0]|0;a[s+m>>0]=a[r+(((D-C|0)>>>18&1023)+128)>>0]|0;a[s+n>>0]=a[r+(((A+B|0)>>>18&1023)+128)>>0]|0;a[s+o>>0]=a[r+(((B-A|0)>>>18&1023)+128)>>0]|0;a[s+p>>0]=a[r+(((y+z|0)>>>18&1023)+128)>>0]|0;a[s+j>>0]=a[r+(((z-y|0)>>>18&1023)+128)>>0]|0;a[s+f>>0]=a[r+(((w+x|0)>>>18&1023)+128)>>0]|0;a[s+e>>0]=a[r+(((x-w|0)>>>18&1023)+128)>>0]|0;a[s+k>>0]=a[r+(((u+v|0)>>>18&1023)+128)>>0]|0;a[s+l>>0]=a[r+(((v-u|0)>>>18&1023)+128)>>0]|0;q=q+1|0;if((q|0)==5)break;else d=d+32|0}i=t;return}function QG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;r=i;i=i+128|0;q=r;p=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=q;while(1){l=da(b[f>>1]|0,c[d>>2]|0)|0;k=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;o=k+l<<2;k=l-k<<2;l=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;m=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;n=((m+l|0)*4433|0)+1024|0;l=n+(l*6270|0)>>11;m=n+(da(m,-15137)|0)>>11;c[e>>2]=l+o;c[e+96>>2]=o-l;c[e+32>>2]=m+k;c[e+64>>2]=k-m;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}k=h+7|0;l=h+1|0;m=h+6|0;n=h+2|0;j=h+5|0;f=h+3|0;e=h+4|0;o=0;d=q;while(1){q=c[g+(o<<2)>>2]|0;t=c[d+8>>2]|0;v=c[d+24>>2]|0;z=(v+t|0)*4433|0;t=z+(t*6270|0)|0;v=z+(da(v,-15137)|0)|0;z=(c[d>>2]|0)+16|0;s=c[d+16>>2]|0;x=z+s<<13;s=z-s<<13;z=x+t|0;t=x-t|0;x=s+v|0;v=s-v|0;s=c[d+28>>2]|0;C=c[d+20>>2]|0;A=c[d+12>>2]|0;y=c[d+4>>2]|0;w=A+s|0;u=y+C|0;B=(u+w|0)*9633|0;w=B+(da(w,-16069)|0)|0;u=B+(da(u,-3196)|0)|0;B=da(y+s|0,-7373)|0;s=B+(s*2446|0)+w|0;y=B+(y*12299|0)+u|0;B=da(A+C|0,-20995)|0;u=B+(C*16819|0)+u|0;w=B+(A*25172|0)+w|0;a[q+h>>0]=a[p+(((y+z|0)>>>18&1023)+128)>>0]|0;a[q+k>>0]=a[p+(((z-y|0)>>>18&1023)+128)>>0]|0;a[q+l>>0]=a[p+(((w+x|0)>>>18&1023)+128)>>0]|0;a[q+m>>0]=a[p+(((x-w|0)>>>18&1023)+128)>>0]|0;a[q+n>>0]=a[p+(((u+v|0)>>>18&1023)+128)>>0]|0;a[q+j>>0]=a[p+(((v-u|0)>>>18&1023)+128)>>0]|0;a[q+f>>0]=a[p+(((s+t|0)>>>18&1023)+128)>>0]|0;a[q+e>>0]=a[p+(((t-s|0)>>>18&1023)+128)>>0]|0;o=o+1|0;if((o|0)==4)break;else d=d+32|0}i=r;return}function RG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;p=i;i=i+80|0;o=p;n=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=o;while(1){m=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;k=da((c[d+64>>2]|0)*5793|0,b[f+32>>1]|0)|0;l=k+m|0;m=(da(k,-2)|0)+m|0;k=da((c[d+32>>2]|0)*10033|0,b[f+16>>1]|0)|0;c[e>>2]=k+l>>11;c[e+48>>2]=l-k>>11;c[e+24>>2]=m>>11;j=j+1|0;if((j|0)==6)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}f=h+5|0;e=h+1|0;k=h+4|0;l=h+2|0;j=h+3|0;m=0;d=o;while(1){o=c[g+(m<<2)>>2]|0;r=(c[d>>2]<<13)+131072|0;t=(c[d+16>>2]|0)*5793|0;x=r+t|0;t=r-t-t|0;r=(c[d+8>>2]|0)*10033|0;v=x+r|0;r=x-r|0;x=c[d+4>>2]|0;w=c[d+12>>2]|0;s=c[d+20>>2]|0;q=(s+x|0)*2998|0;u=q+(w+x<<13)|0;q=q+(s-w<<13)|0;s=x-w-s<<13;a[o+h>>0]=a[n+(((u+v|0)>>>18&1023)+128)>>0]|0;a[o+f>>0]=a[n+(((v-u|0)>>>18&1023)+128)>>0]|0;a[o+e>>0]=a[n+(((s+t|0)>>>18&1023)+128)>>0]|0;a[o+k>>0]=a[n+(((t-s|0)>>>18&1023)+128)>>0]|0;a[o+l>>0]=a[n+(((q+r|0)>>>18&1023)+128)>>0]|0;a[o+j>>0]=a[n+(((r-q|0)>>>18&1023)+128)>>0]|0;m=m+1|0;if((m|0)==3)break;else d=d+24|0}i=p;return}function SG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;j=i;i=i+32|0;m=j;k=c[d+300>>2]|0;q=c[e+84>>2]|0;n=da(b[f>>1]|0,c[q>>2]|0)|0;l=da(b[f+16>>1]|0,c[q+32>>2]|0)|0;u=l+n|0;c[m>>2]=u;p=m+16|0;c[p>>2]=n-l;l=da(b[f+2>>1]|0,c[q+4>>2]|0)|0;n=da(b[f+18>>1]|0,c[q+36>>2]|0)|0;s=n+l|0;c[m+4>>2]=s;n=l-n|0;c[m+20>>2]=n;l=da(b[f+4>>1]|0,c[q+8>>2]|0)|0;d=da(b[f+20>>1]|0,c[q+40>>2]|0)|0;r=d+l|0;c[m+8>>2]=r;d=l-d|0;c[m+24>>2]=d;l=da(b[f+6>>1]|0,c[q+12>>2]|0)|0;f=da(b[f+22>>1]|0,c[q+44>>2]|0)|0;q=f+l|0;c[m+12>>2]=q;f=l-f|0;c[m+28>>2]=f;m=h+3|0;l=h+1|0;e=h+2|0;o=c[g>>2]|0;u=u+4|0;t=u+r<<13;r=u-r<<13;u=(q+s|0)*4433|0;s=u+(s*6270|0)|0;q=u+(da(q,-15137)|0)|0;a[o+h>>0]=a[k+(((s+t|0)>>>16&1023)+128)>>0]|0;a[o+m>>0]=a[k+(((t-s|0)>>>16&1023)+128)>>0]|0;a[o+l>>0]=a[k+(((q+r|0)>>>16&1023)+128)>>0]|0;a[o+e>>0]=a[k+(((r-q|0)>>>16&1023)+128)>>0]|0;g=c[g+4>>2]|0;p=(c[p>>2]|0)+4|0;o=p+d<<13;d=p-d<<13;p=(f+n|0)*4433|0;n=p+(n*6270|0)|0;f=p+(da(f,-15137)|0)|0;a[g+h>>0]=a[k+(((n+o|0)>>>16&1023)+128)>>0]|0;a[g+m>>0]=a[k+(((o-n|0)>>>16&1023)+128)>>0]|0;a[g+l>>0]=a[k+(((f+d|0)>>>16&1023)+128)>>0]|0;a[g+e>>0]=a[k+(((d-f|0)>>>16&1023)+128)>>0]|0;i=j;return}function TG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;i=c[d+300>>2]|0;j=c[e+84>>2]|0;e=c[g>>2]|0;d=(da(b[f>>1]|0,c[j>>2]|0)|0)+4|0;g=da(b[f+2>>1]|0,c[j+4>>2]|0)|0;a[e+h>>0]=a[i+(((g+d|0)>>>3&1023)+128)>>0]|0;a[e+(h+1)>>0]=a[i+(((d-g|0)>>>3&1023)+128)>>0]|0;return}function UG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;r=i;i=i+512|0;q=r;p=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=q;while(1){s=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;w=da(b[f+64>>1]|0,c[d+128>>2]|0)|0;m=w*10703|0;w=w*4433|0;A=m+s|0;m=s-m|0;y=w+s|0;w=s-w|0;s=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;u=da(b[f+96>>1]|0,c[d+192>>2]|0)|0;l=s-u|0;C=l*2260|0;l=l*11363|0;k=l+(u*20995|0)|0;o=C+(s*7373|0)|0;s=l+(da(s,-4926)|0)|0;u=C+(da(u,-4176)|0)|0;C=k+A|0;k=A-k|0;A=o+y|0;o=y-o|0;y=s+w|0;s=w-s|0;w=u+m|0;u=m-u|0;m=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;l=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;E=da(b[f+80>>1]|0,c[d+160>>2]|0)|0;G=da(b[f+112>>1]|0,c[d+224>>2]|0)|0;D=E+m|0;z=(l+m|0)*11086|0;x=D*10217|0;n=(G+m|0)*8956|0;t=(m-G|0)*7350|0;D=D*5461|0;v=(m-l|0)*3363|0;B=z+(da(m,-18730)|0)+x+n|0;m=v+(da(m,-15038)|0)+D+t|0;J=(E+l|0)*1136|0;F=(E-l|0)*11529|0;H=G+l|0;I=da(H,-5461)|0;z=z+(l*589|0)+J+I|0;H=da(H,-10217)|0;l=v+(l*16154|0)+F+H|0;v=da(G+E|0,-11086)|0;x=J+(da(E,-9222)|0)+x+v|0;v=I+(G*8728|0)+n+v|0;n=(G-E|0)*3363|0;t=H+(G*25733|0)+t+n|0;n=F+(da(E,-6278)|0)+D+n|0;c[e>>2]=B+C>>11;c[e+480>>2]=C-B>>11;c[e+32>>2]=z+A>>11;c[e+448>>2]=A-z>>11;c[e+64>>2]=x+y>>11;c[e+416>>2]=y-x>>11;c[e+96>>2]=v+w>>11;c[e+384>>2]=w-v>>11;c[e+128>>2]=t+u>>11;c[e+352>>2]=u-t>>11;c[e+160>>2]=n+s>>11;c[e+320>>2]=s-n>>11;c[e+192>>2]=l+o>>11;c[e+288>>2]=o-l>>11;c[e+224>>2]=m+k>>11;c[e+256>>2]=k-m>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}k=h+7|0;l=h+1|0;m=h+6|0;n=h+2|0;j=h+5|0;f=h+3|0;e=h+4|0;o=0;d=q;while(1){J=c[g+(o<<2)>>2]|0;H=c[d+8>>2]|0;E=c[d+24>>2]|0;A=(E+H|0)*4433|0;H=A+(H*6270|0)|0;E=A+(da(E,-15137)|0)|0;A=(c[d>>2]|0)+16|0;I=c[d+16>>2]|0;C=A+I<<13;I=A-I<<13;A=C+H|0;H=C-H|0;C=I+E|0;E=I-E|0;I=c[d+28>>2]|0;x=c[d+20>>2]|0;z=c[d+12>>2]|0;B=c[d+4>>2]|0;D=z+I|0;G=B+x|0;y=(G+D|0)*9633|0;D=y+(da(D,-16069)|0)|0;G=y+(da(G,-3196)|0)|0;y=da(B+I|0,-7373)|0;I=y+(I*2446|0)+D|0;B=y+(B*12299|0)+G|0;y=da(z+x|0,-20995)|0;G=y+(x*16819|0)+G|0;D=y+(z*25172|0)+D|0;a[J+h>>0]=a[p+(((B+A|0)>>>18&1023)+128)>>0]|0;a[J+k>>0]=a[p+(((A-B|0)>>>18&1023)+128)>>0]|0;a[J+l>>0]=a[p+(((D+C|0)>>>18&1023)+128)>>0]|0;a[J+m>>0]=a[p+(((C-D|0)>>>18&1023)+128)>>0]|0;a[J+n>>0]=a[p+(((G+E|0)>>>18&1023)+128)>>0]|0;a[J+j>>0]=a[p+(((E-G|0)>>>18&1023)+128)>>0]|0;a[J+f>>0]=a[p+(((I+H|0)>>>18&1023)+128)>>0]|0;a[J+e>>0]=a[p+(((H-I|0)>>>18&1023)+128)>>0]|0;o=o+1|0;if((o|0)==16)break;else d=d+32|0}i=r;return}function VG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;q=i;i=i+400|0;p=q;o=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=p;while(1){u=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;s=da(b[f+64>>1]|0,c[d+128>>2]|0)|0;y=(s*10438|0)+u|0;w=(s*2578|0)+u|0;m=(da(s,-7223)|0)+u|0;u=(da(s,-11586)|0)+u>>11;s=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;A=da(b[f+96>>1]|0,c[d+192>>2]|0)|0;n=(A+s|0)*9058|0;k=n+(s*2237|0)|0;n=n+(da(A,-14084)|0)|0;s=(da(A,-11295)|0)+(s*5027|0)|0;A=k+y|0;k=y-k|0;y=n+w|0;n=w-n|0;w=s+m|0;s=m-s|0;m=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;D=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;B=da(b[f+80>>1]|0,c[d+160>>2]|0)|0;t=da(b[f+112>>1]|0,c[d+224>>2]|0)|0;r=t<<13;F=B+m|0;x=(D+m|0)*10935|0;E=F*9810|0;z=x+(da(m,-9232)|0)+E+r|0;F=F*6164|0;C=m-D|0;l=(C*3826|0)-r|0;m=F+(da(m,-8693)|0)+l|0;v=(da(B+D|0,-1297)|0)-r|0;x=x+(da(D,-3474)|0)+v|0;v=E+(da(B,-19447)|0)+v|0;E=(B-D|0)*11512|0;r=E+(da(B,-13850)|0)+F+r|0;l=E+(D*5529|0)+l|0;t=C-B+t<<2;c[e>>2]=z+A>>11;c[e+364>>2]=A-z>>11;c[e+28>>2]=x+y>>11;c[e+336>>2]=y-x>>11;c[e+56>>2]=v+w>>11;c[e+308>>2]=w-v>>11;c[e+84>>2]=t+u;c[e+280>>2]=u-t;c[e+112>>2]=r+s>>11;c[e+252>>2]=s-r>>11;c[e+140>>2]=l+n>>11;c[e+224>>2]=n-l>>11;c[e+168>>2]=m+k>>11;c[e+196>>2]=k-m>>11;j=j+1|0;if((j|0)==7)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}e=h+6|0;k=h+1|0;l=h+5|0;m=h+2|0;j=h+4|0;f=h+3|0;n=0;d=p;while(1){E=c[g+(n<<2)>>2]|0;D=(c[d>>2]<<13)+131072|0;t=c[d+8>>2]|0;B=c[d+16>>2]|0;v=c[d+24>>2]|0;u=(B-v|0)*7223|0;A=(t-B|0)*2578|0;x=(da(B,-15083)|0)+D+A+u|0;C=v+t|0;z=(C*10438|0)+D|0;v=u+(da(v,-637)|0)+z|0;z=A+(da(t,-20239)|0)+z|0;t=c[d+4>>2]|0;A=c[d+12>>2]|0;u=c[d+20>>2]|0;s=(A+t|0)*7663|0;w=(t-A|0)*1395|0;A=da(u+A|0,-11295)|0;y=s+w+A|0;t=(u+t|0)*5027|0;w=s-w+t|0;A=t+(u*15326|0)+A|0;a[E+h>>0]=a[o+(((w+v|0)>>>18&1023)+128)>>0]|0;a[E+e>>0]=a[o+(((v-w|0)>>>18&1023)+128)>>0]|0;a[E+k>>0]=a[o+(((y+x|0)>>>18&1023)+128)>>0]|0;a[E+l>>0]=a[o+(((x-y|0)>>>18&1023)+128)>>0]|0;a[E+m>>0]=a[o+(((A+z|0)>>>18&1023)+128)>>0]|0;a[E+j>>0]=a[o+(((z-A|0)>>>18&1023)+128)>>0]|0;a[E+f>>0]=a[o+(((((B-C|0)*11585|0)+D|0)>>>18&1023)+128)>>0]|0;n=n+1|0;if((n|0)==14)break;else d=d+28|0}i=q;return}function WG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;p=i;i=i+288|0;o=p;n=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=o;while(1){k=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;A=da((c[d+128>>2]|0)*10033|0,b[f+64>>1]|0)|0;z=A+k|0;A=k-A|0;u=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;s=da(c[d+192>>2]<<13,b[f+96>>1]|0)|0;q=(u<<13)-s|0;w=q+k|0;q=k-q|0;k=s+(u*11190|0)|0;y=k+z|0;k=z-k|0;s=(u*2998|0)-s|0;u=s+A|0;s=A-s|0;A=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;z=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;l=da(b[f+80>>1]|0,c[d+160>>2]|0)|0;v=da(b[f+112>>1]|0,c[d+224>>2]|0)|0;C=z*10703|0;B=da(z,-4433)|0;t=l+A|0;m=(v+t|0)*7053|0;t=m+(t*2139|0)|0;x=C+(A*2295|0)+t|0;r=da(v+l|0,-8565)|0;t=(da(l,-12112)|0)+B+r+t|0;r=(v*12998|0)-C+m+r|0;m=B+(da(A,-5540)|0)+(da(v,-16244)|0)+m|0;v=A-v|0;l=z-l|0;z=(v+l|0)*4433|0;v=z+(v*6270|0)|0;l=z+(da(l,-15137)|0)|0;c[e>>2]=x+y>>11;c[e+264>>2]=y-x>>11;c[e+24>>2]=v+w>>11;c[e+240>>2]=w-v>>11;c[e+48>>2]=t+u>>11;c[e+216>>2]=u-t>>11;c[e+72>>2]=r+s>>11;c[e+192>>2]=s-r>>11;c[e+96>>2]=l+q>>11;c[e+168>>2]=q-l>>11;c[e+120>>2]=m+k>>11;c[e+144>>2]=k-m>>11;j=j+1|0;if((j|0)==6)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}f=h+5|0;e=h+1|0;k=h+4|0;l=h+2|0;j=h+3|0;m=0;d=o;while(1){C=c[g+(m<<2)>>2]|0;A=(c[d>>2]<<13)+131072|0;y=(c[d+16>>2]|0)*5793|0;u=A+y|0;y=A-y-y|0;A=(c[d+8>>2]|0)*10033|0;w=u+A|0;A=u-A|0;u=c[d+4>>2]|0;v=c[d+12>>2]|0;z=c[d+20>>2]|0;B=(z+u|0)*2998|0;x=B+(v+u<<13)|0;B=B+(z-v<<13)|0;z=u-v-z<<13;a[C+h>>0]=a[n+(((x+w|0)>>>18&1023)+128)>>0]|0;a[C+f>>0]=a[n+(((w-x|0)>>>18&1023)+128)>>0]|0;a[C+e>>0]=a[n+(((z+y|0)>>>18&1023)+128)>>0]|0;a[C+k>>0]=a[n+(((y-z|0)>>>18&1023)+128)>>0]|0;a[C+l>>0]=a[n+(((B+A|0)>>>18&1023)+128)>>0]|0;a[C+j>>0]=a[n+(((A-B|0)>>>18&1023)+128)>>0]|0;m=m+1|0;if((m|0)==12)break;else d=d+24|0}i=p;return}function XG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;o=i;i=i+208|0;n=o;m=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=n;while(1){s=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;l=da(b[f+64>>1]|0,c[d+128>>2]|0)|0;u=(l*9373|0)+s|0;x=(da(l,-3580)|0)+s|0;s=(da(l,-11586)|0)+s>>11;l=da(b[f+32>>1]|0,c[d+64>>2]|0)|0;q=da(b[f+96>>1]|0,c[d+192>>2]|0)|0;w=(q+l|0)*6810|0;l=w+(l*4209|0)|0;q=w+(da(q,-17828)|0)|0;w=l+u|0;l=u-l|0;u=q+x|0;q=x-q|0;x=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;y=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;t=da(b[f+80>>1]|0,c[d+160>>2]|0)|0;r=da(b[f+112>>1]|0,c[d+224>>2]|0)|0;p=r+y|0;r=y-r|0;y=r*2531|0;z=t<<13;A=p*7791|0;k=y+z|0;v=A+(x*11443|0)+k|0;k=(x*1812|0)-A+k|0;p=p*4815|0;y=z-y-(r<<12)|0;r=x-t-r<<2;t=(x*10323|0)-p-y|0;p=y+((x*5260|0)-p)|0;c[e>>2]=v+w>>11;c[e+180>>2]=w-v>>11;c[e+20>>2]=t+u>>11;c[e+160>>2]=u-t>>11;c[e+40>>2]=r+s;c[e+140>>2]=s-r;c[e+60>>2]=p+q>>11;c[e+120>>2]=q-p>>11;c[e+80>>2]=k+l>>11;c[e+100>>2]=l-k>>11;j=j+1|0;if((j|0)==5)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}f=h+4|0;e=h+1|0;j=h+3|0;k=h+2|0;l=0;d=n;while(1){A=c[g+(l<<2)>>2]|0;z=(c[d>>2]<<13)+131072|0;y=c[d+8>>2]|0;w=c[d+16>>2]|0;x=(w+y|0)*6476|0;w=y-w|0;y=(w*2896|0)+z|0;v=y+x|0;x=y-x|0;z=(da(w,-11584)|0)+z|0;w=c[d+4>>2]|0;y=c[d+12>>2]|0;u=(y+w|0)*6810|0;w=u+(w*4209|0)|0;y=u+(da(y,-17828)|0)|0;a[A+h>>0]=a[m+(((w+v|0)>>>18&1023)+128)>>0]|0;a[A+f>>0]=a[m+(((v-w|0)>>>18&1023)+128)>>0]|0;a[A+e>>0]=a[m+(((y+x|0)>>>18&1023)+128)>>0]|0;a[A+j>>0]=a[m+(((x-y|0)>>>18&1023)+128)>>0]|0;a[A+k>>0]=a[m+((z>>>18&1023)+128)>>0]|0;l=l+1|0;if((l|0)==10)break;else d=d+20|0}i=o;return}function YG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;p=i;i=i+128|0;o=p;n=c[d+300>>2]|0;l=4;j=c[e+84>>2]|0;k=o;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){e=da(c[j>>2]<<2,b[f>>1]|0)|0;c[k>>2]=e;c[k+16>>2]=e;c[k+32>>2]=e;c[k+48>>2]=e;c[k+64>>2]=e;c[k+80>>2]=e;c[k+96>>2]=e;c[k+112>>2]=e}else{d=0;m=10}else m=10;if((m|0)==10){m=0;d=da(d<<16>>16,c[j+64>>2]|0)|0;r=da(b[f+96>>1]|0,c[j+192>>2]|0)|0;z=(r+d|0)*4433|0;d=z+(d*6270|0)|0;r=z+(da(r,-15137)|0)|0;z=da(c[j+128>>2]<<13,b[f+64>>1]|0)|0;v=da(c[j>>2]<<13,b[f>>1]|0)|0|1024;t=z+v|0;z=v-z|0;v=t+d|0;d=t-d|0;t=z+r|0;r=z-r|0;z=da(b[f+112>>1]|0,c[j+224>>2]|0)|0;y=da(b[f+80>>1]|0,c[j+160>>2]|0)|0;w=da(b[f+48>>1]|0,c[j+96>>2]|0)|0;u=da(e<<16>>16,c[j+32>>2]|0)|0;s=w+z|0;q=u+y|0;x=(q+s|0)*9633|0;s=x+(da(s,-16069)|0)|0;q=x+(da(q,-3196)|0)|0;x=da(u+z|0,-7373)|0;e=x+(z*2446|0)+s|0;u=x+(u*12299|0)+q|0;x=da(w+y|0,-20995)|0;q=x+(y*16819|0)+q|0;s=x+(w*25172|0)+s|0;c[k>>2]=u+v>>11;c[k+112>>2]=v-u>>11;c[k+16>>2]=s+t>>11;c[k+96>>2]=t-s>>11;c[k+32>>2]=q+r>>11;c[k+80>>2]=r-q>>11;c[k+48>>2]=e+d>>11;c[k+64>>2]=d-e>>11}l=l+-1|0;if((l|0)<=0)break;else{f=f+2|0;j=j+4|0;k=k+4|0}}e=h+3|0;j=h+1|0;f=h+2|0;k=0;d=o;while(1){z=c[g+(k<<2)>>2]|0;w=(c[d>>2]|0)+16|0;x=c[d+8>>2]|0;v=w+x<<13;x=w-x<<13;w=c[d+4>>2]|0;y=c[d+12>>2]|0;u=(y+w|0)*4433|0;w=u+(w*6270|0)|0;y=u+(da(y,-15137)|0)|0;a[z+h>>0]=a[n+(((w+v|0)>>>18&1023)+128)>>0]|0;a[z+e>>0]=a[n+(((v-w|0)>>>18&1023)+128)>>0]|0;a[z+j>>0]=a[n+(((y+x|0)>>>18&1023)+128)>>0]|0;a[z+f>>0]=a[n+(((x-y|0)>>>18&1023)+128)>>0]|0;k=k+1|0;if((k|0)==8)break;else d=d+16|0}i=p;return}function ZG(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;m=i;i=i+80|0;l=m;k=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=l;while(1){q=da(c[d>>2]<<13,b[f>>1]|0)|0|1024;o=da((c[d+128>>2]|0)*5793|0,b[f+64>>1]|0)|0;u=o+q|0;q=(da(o,-2)|0)+q>>11;o=da((c[d+64>>2]|0)*10033|0,b[f+32>>1]|0)|0;s=o+u|0;o=u-o|0;u=da(b[f+16>>1]|0,c[d+32>>2]|0)|0;t=da(b[f+48>>1]|0,c[d+96>>2]|0)|0;p=da(b[f+80>>1]|0,c[d+160>>2]|0)|0;n=(p+u|0)*2998|0;r=n+(t+u<<13)|0;n=n+(p-t<<13)|0;p=u-t-p<<2;c[e>>2]=r+s>>11;c[e+60>>2]=s-r>>11;c[e+12>>2]=p+q;c[e+48>>2]=q-p;c[e+24>>2]=n+o>>11;c[e+36>>2]=o-n>>11;j=j+1|0;if((j|0)==3)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}f=h+2|0;j=h+1|0;e=0;d=l;while(1){u=c[g+(e<<2)>>2]|0;t=(c[d>>2]<<13)+131072|0;s=c[d+8>>2]|0;r=t+(s*5793|0)|0;t=(da(s,-11586)|0)+t|0;s=(c[d+4>>2]|0)*10033|0;a[u+h>>0]=a[k+(((r+s|0)>>>18&1023)+128)>>0]|0;a[u+f>>0]=a[k+(((r-s|0)>>>18&1023)+128)>>0]|0;a[u+j>>0]=a[k+((t>>>18&1023)+128)>>0]|0;e=e+1|0;if((e|0)==6)break;else d=d+12|0}i=m;return}function _G(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;j=i;i=i+32|0;l=j;k=c[d+300>>2]|0;m=c[e+84>>2]|0;p=da(b[f>>1]|0,c[m>>2]|0)|0;d=da(b[f+32>>1]|0,c[m+64>>2]|0)|0;e=d+p<<13;d=p-d<<13;p=da(b[f+16>>1]|0,c[m+32>>2]|0)|0;n=da(b[f+48>>1]|0,c[m+96>>2]|0)|0;r=(n+p|0)*4433|0;p=r+(p*6270|0)|0;n=r+(da(n,-15137)|0)|0;r=p+e|0;c[l>>2]=r;c[l+24>>2]=e-p;p=n+d|0;c[l+8>>2]=p;n=d-n|0;c[l+16>>2]=n;d=da(b[f+2>>1]|0,c[m+4>>2]|0)|0;e=da(b[f+34>>1]|0,c[m+68>>2]|0)|0;o=e+d<<13;e=d-e<<13;d=da(b[f+18>>1]|0,c[m+36>>2]|0)|0;m=da(b[f+50>>1]|0,c[m+100>>2]|0)|0;q=(m+d|0)*4433|0;f=q+(d*6270|0)|0;m=q+(da(m,-15137)|0)|0;q=f+o|0;c[l+4>>2]=q;f=o-f|0;c[l+28>>2]=f;o=m+e|0;c[l+12>>2]=o;m=e-m|0;c[l+20>>2]=m;e=h+1|0;d=c[g>>2]|0;r=r+32768|0;a[d+h>>0]=a[k+(((r+q|0)>>>16&1023)+128)>>0]|0;a[d+e>>0]=a[k+(((r-q|0)>>>16&1023)+128)>>0]|0;d=c[g+4>>2]|0;p=p+32768|0;a[d+h>>0]=a[k+(((p+o|0)>>>16&1023)+128)>>0]|0;a[d+e>>0]=a[k+(((p-o|0)>>>16&1023)+128)>>0]|0;d=c[g+8>>2]|0;n=n+32768|0;a[d+h>>0]=a[k+(((n+m|0)>>>16&1023)+128)>>0]|0;a[d+e>>0]=a[k+(((n-m|0)>>>16&1023)+128)>>0]|0;g=c[g+12>>2]|0;d=(c[l+24>>2]|0)+32768|0;a[g+h>>0]=a[k+(((d+f|0)>>>16&1023)+128)>>0]|0;a[g+e>>0]=a[k+(((d-f|0)>>>16&1023)+128)>>0]|0;i=j;return}function $G(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=c[d+300>>2]|0;e=c[e+84>>2]|0;d=(da(b[f>>1]|0,c[e>>2]|0)|0)+4|0;e=da(b[f+16>>1]|0,c[e+32>>2]|0)|0;a[(c[g>>2]|0)+h>>0]=a[i+(((e+d|0)>>>3&1023)+128)>>0]|0;a[(c[g+4>>2]|0)+h>>0]=a[i+(((d-e|0)>>>3&1023)+128)>>0]|0;return}function aH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=k+8|0;g=k+12|0;d=b+4|0;c[d>>2]=0;c[h>>2]=hH(b)|0;e=bH(b,84)|0;if(!e){iH(b);f=c[b>>2]|0;c[f+20>>2]=56;c[f+24>>2]=0;Bd[c[f>>2]&511](b)}c[e>>2]=154;c[e+4>>2]=155;c[e+8>>2]=118;c[e+12>>2]=119;c[e+16>>2]=6;c[e+20>>2]=7;c[e+24>>2]=264;c[e+28>>2]=54;c[e+32>>2]=55;c[e+36>>2]=90;c[e+40>>2]=265;c[e+48>>2]=1e9;f=e+44|0;c[f>>2]=c[h>>2];c[e+56>>2]=0;c[e+64>>2]=0;c[e+52>>2]=0;c[e+60>>2]=0;c[e+68>>2]=0;c[e+72>>2]=0;c[e+76>>2]=84;c[d>>2]=e;b=vc(276360)|0;if(!b){i=k;return}a[g>>0]=120;c[j>>2]=h;c[j+4>>2]=g;if((Oca(b,276368,j)|0)<=0){i=k;return}j=a[g>>0]|0;if(j<<24>>24==77|j<<24>>24==109){b=(c[h>>2]|0)*1e3|0;c[h>>2]=b}else b=c[h>>2]|0;c[f>>2]=b*1e3;i=k;return}function bH(a,b){a=a|0;b=b|0;return qea(b)|0}function cH(a,b,c){a=a|0;b=b|0;c=c|0;rea(b);return}function dH(a,b){a=a|0;b=b|0;return qea(b)|0}function eH(a,b,c){a=a|0;b=b|0;c=c|0;rea(b);return}function fH(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return c|0}function gH(a,b,d){a=a|0;b=b|0;d=d|0;d=c[a>>2]|0;c[d+20>>2]=51;Bd[c[d>>2]&511](a);return}function hH(a){a=a|0;return 0}function iH(a){a=a|0;return}function jH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=b+4|0;u=Hd[c[c[t>>2]>>2]&255](b,1,88)|0;s=b+448|0;c[s>>2]=u;c[u>>2]=91;c[u+8>>2]=266;c[u+12>>2]=267;c[u+68>>2]=0;c[u+52>>2]=0;u=b+100|0;if((c[u>>2]|0)>4){r=c[b>>2]|0;c[r+20>>2]=57;c[r+24>>2]=4;Bd[c[r>>2]&511](b)}d=b+84|0;e=c[d>>2]|0;if((e|0)>256){e=c[b>>2]|0;c[e+20>>2]=59;c[e+24>>2]=256;Bd[c[e>>2]&511](b);e=c[d>>2]|0}q=c[s>>2]|0;r=q+32|0;l=c[u>>2]|0;if((l|0)>1){h=1;while(1){g=h+1|0;f=1;d=g;do{d=da(d,g)|0;f=f+1|0}while((f|0)!=(l|0));if((d|0)>(e|0)){g=h;break}else h=g}}else{d=(e|0)>1?e:1;g=d;d=d+1|0}if((g|0)<2){p=c[b>>2]|0;c[p+20>>2]=58;c[p+24>>2]=d;Bd[c[p>>2]&511](b)}if((l|0)>0){f=0;d=1;do{c[r+(f<<2)>>2]=g;d=da(d,g)|0;f=f+1|0}while((f|0)!=(l|0))}else d=1;k=b+44|0;f=0;g=0;a:while(1){j=f;while(1){if((g|0)<(l|0)){if((c[k>>2]|0)==2)f=c[276392+(g<<2)>>2]|0;else f=g;h=r+(f<<2)|0;i=c[h>>2]|0;f=i+1|0;i=da((d|0)/(i|0)|0,f)|0;if((i|0)<=(e|0)){d=i;break}}if(!(j<<24>>24)){p=d;break a}else{j=0;g=0}}c[h>>2]=f;f=1;g=g+1|0}d=c[b>>2]|0;if((c[u>>2]|0)==3){c[d+24>>2]=p;c[d+28>>2]=c[r>>2];c[d+32>>2]=c[q+36>>2];c[d+36>>2]=c[q+40>>2];c[d+20>>2]=96;Cd[c[d+4>>2]&255](b,1)}else{c[d+20>>2]=97;c[d+24>>2]=p;Cd[c[d+4>>2]&255](b,1)}o=Xd[c[(c[t>>2]|0)+8>>2]&255](b,1,p,c[u>>2]|0)|0;d=c[u>>2]|0;if((d|0)>0){m=p;n=0;do{k=c[r+(n<<2)>>2]|0;l=m;m=(m|0)/(k|0)|0;b:do if((k|0)>0){i=k+-1|0;h=(i|0)/2|0;j=o+(n<<2)|0;if((m|0)>0)f=0;else{e=0;while(1){g=da(e,m)|0;if((g|0)<(p|0))do g=g+l|0;while((g|0)<(p|0));e=e+1|0;if((e|0)==(k|0))break b}}do{d=da(f,m)|0;if((d|0)<(p|0)){e=(((f*255|0)+h|0)/(i|0)|0)&255;do{g=0;do{a[(c[j>>2]|0)+(g+d)>>0]=e;g=g+1|0}while((g|0)!=(m|0));d=d+l|0}while((d|0)<(p|0))}f=f+1|0}while((f|0)!=(k|0));d=c[u>>2]|0}while(0);n=n+1|0}while((n|0)<(d|0))}c[q+16>>2]=o;c[q+20>>2]=p;HR(b);if((c[b+76>>2]|0)!=2)return;f=(c[b+92>>2]<<1)+4|0;if((c[u>>2]|0)<=0)return;d=(c[s>>2]|0)+68|0;e=0;do{c[d+(e<<2)>>2]=Hd[c[(c[t>>2]|0)+4>>2]&255](b,1,f)|0;e=e+1|0}while((e|0)<(c[u>>2]|0));return}function kH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=b+4|0;f=Hd[c[c[g>>2]>>2]&255](b,1,44)|0;c[b+448>>2]=f;c[f>>2]=92;c[f+12>>2]=268;h=f+32|0;c[h>>2]=0;c[f+40>>2]=0;if((c[b+100>>2]|0)!=3){e=c[b>>2]|0;c[e+20>>2]=48;Bd[c[e>>2]&511](b)}d=f+24|0;c[d>>2]=Hd[c[c[g>>2]>>2]&255](b,1,128)|0;e=0;do{i=Hd[c[(c[g>>2]|0)+4>>2]&255](b,1,4096)|0;c[(c[d>>2]|0)+(e<<2)>>2]=i;e=e+1|0}while((e|0)!=32);a[f+28>>0]=1;if(!(a[b+90>>0]|0))c[f+16>>2]=0;else{d=c[b+84>>2]|0;if((d|0)>=8){if((d|0)>256){i=c[b>>2]|0;c[i+20>>2]=59;c[i+24>>2]=256;Bd[c[i>>2]&511](b)}}else{i=c[b>>2]|0;c[i+20>>2]=58;c[i+24>>2]=8;Bd[c[i>>2]&511](b)}c[f+16>>2]=Xd[c[(c[g>>2]|0)+8>>2]&255](b,1,d,3)|0;c[f+20>>2]=d}d=b+76|0;if(!(c[d>>2]|0))return;c[d>>2]=2;c[h>>2]=Hd[c[(c[g>>2]|0)+4>>2]&255](b,1,((c[b+92>>2]|0)*6|0)+12|0)|0;KR(b);return}function lH(a,b){a=a|0;b=b|0;return (a+-1+b|0)/(b|0)|0|0}function mH(a,b){a=a|0;b=b|0;a=a+-1+b|0;return a-((a|0)%(b|0)|0)|0}function nH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((f|0)<=0)return;d=d+(e<<2)|0;e=a+(b<<2)|0;while(1){qfa(c[d>>2]|0,c[e>>2]|0,g|0)|0;f=f+-1|0;if((f|0)<=0)break;else{d=d+4|0;e=e+4|0}}return}function oH(a,b,c){a=a|0;b=b|0;c=c|0;qfa(b|0,a|0,c<<7|0)|0;return}function pH(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;e=a>>>16;a=a&65535;if((c|0)==1){h=(d[b>>0]|0)+a|0;h=h>>>0>65520?h+-65521|0:h;f=h+e|0;h=(f>>>0>65520?f+15|0:f)<<16|h;return h|0}if(!b){h=1;return h|0}if(c>>>0<16){if(c)while(1){c=c+-1|0;a=(d[b>>0]|0)+a|0;e=a+e|0;if(!c)break;else b=b+1|0}h=((e>>>0)%65521|0)<<16|(a>>>0>65520?a+-65521|0:a);return h|0}if(c>>>0>5551){i=c+-5552|0;h=(i>>>0)%5552|0;i=b+(i-h+5552)|0;while(1){c=c+-5552|0;g=b;f=347;while(1){y=(d[g>>0]|0)+a|0;x=y+(d[g+1>>0]|0)|0;w=x+(d[g+2>>0]|0)|0;v=w+(d[g+3>>0]|0)|0;u=v+(d[g+4>>0]|0)|0;t=u+(d[g+5>>0]|0)|0;s=t+(d[g+6>>0]|0)|0;r=s+(d[g+7>>0]|0)|0;q=r+(d[g+8>>0]|0)|0;p=q+(d[g+9>>0]|0)|0;o=p+(d[g+10>>0]|0)|0;n=o+(d[g+11>>0]|0)|0;m=n+(d[g+12>>0]|0)|0;l=m+(d[g+13>>0]|0)|0;k=l+(d[g+14>>0]|0)|0;a=k+(d[g+15>>0]|0)|0;e=y+e+x+w+v+u+t+s+r+q+p+o+n+m+l+k+a|0;f=f+-1|0;if(!f)break;else g=g+16|0}a=(a>>>0)%65521|0;e=(e>>>0)%65521|0;if(c>>>0<=5551)break;else b=b+5552|0}if(h)if(h>>>0>15){c=h;b=i;j=15}else{c=h;b=i;j=18}}else j=15;if((j|0)==15){g=c+-16|0;f=g&-16;h=b+(f+16)|0;while(1){c=c+-16|0;k=(d[b>>0]|0)+a|0;l=k+(d[b+1>>0]|0)|0;m=l+(d[b+2>>0]|0)|0;n=m+(d[b+3>>0]|0)|0;o=n+(d[b+4>>0]|0)|0;p=o+(d[b+5>>0]|0)|0;q=p+(d[b+6>>0]|0)|0;r=q+(d[b+7>>0]|0)|0;s=r+(d[b+8>>0]|0)|0;t=s+(d[b+9>>0]|0)|0;u=t+(d[b+10>>0]|0)|0;v=u+(d[b+11>>0]|0)|0;w=v+(d[b+12>>0]|0)|0;x=w+(d[b+13>>0]|0)|0;y=x+(d[b+14>>0]|0)|0;a=y+(d[b+15>>0]|0)|0;e=k+e+l+m+n+o+p+q+r+s+t+u+v+w+x+y+a|0;if(c>>>0<=15)break;else b=b+16|0}if((g|0)==(f|0))j=19;else{c=g-f|0;b=h;j=18}}if((j|0)==18)while(1){c=c+-1|0;a=(d[b>>0]|0)+a|0;e=a+e|0;if(!c){j=19;break}else{b=b+1|0;j=18}}if((j|0)==19){a=(a>>>0)%65521|0;e=(e>>>0)%65521|0}y=e<<16|a;return y|0}function qH(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0;if(!b){i=0;return i|0}a=~a;a:do if(e){while(1){if(!(b&3))break;a=c[277936+(((d[b>>0]|0)^a&255)<<2)>>2]^a>>>8;e=e+-1|0;if(!e)break a;else b=b+1|0}if(e>>>0>31){g=e+-32|0;h=g&-32;i=h+32|0;f=b;while(1){a=c[f>>2]^a;a=c[279984+((a>>>8&255)<<2)>>2]^c[281008+((a&255)<<2)>>2]^c[278960+((a>>>16&255)<<2)>>2]^c[277936+(a>>>24<<2)>>2]^c[f+4>>2];a=c[279984+((a>>>8&255)<<2)>>2]^c[281008+((a&255)<<2)>>2]^c[278960+((a>>>16&255)<<2)>>2]^c[277936+(a>>>24<<2)>>2]^c[f+8>>2];a=c[279984+((a>>>8&255)<<2)>>2]^c[281008+((a&255)<<2)>>2]^c[278960+((a>>>16&255)<<2)>>2]^c[277936+(a>>>24<<2)>>2]^c[f+12>>2];a=c[279984+((a>>>8&255)<<2)>>2]^c[281008+((a&255)<<2)>>2]^c[278960+((a>>>16&255)<<2)>>2]^c[277936+(a>>>24<<2)>>2]^c[f+16>>2];a=c[279984+((a>>>8&255)<<2)>>2]^c[281008+((a&255)<<2)>>2]^c[278960+((a>>>16&255)<<2)>>2]^c[277936+(a>>>24<<2)>>2]^c[f+20>>2];a=c[279984+((a>>>8&255)<<2)>>2]^c[281008+((a&255)<<2)>>2]^c[278960+((a>>>16&255)<<2)>>2]^c[277936+(a>>>24<<2)>>2]^c[f+24>>2];a=c[279984+((a>>>8&255)<<2)>>2]^c[281008+((a&255)<<2)>>2]^c[278960+((a>>>16&255)<<2)>>2]^c[277936+(a>>>24<<2)>>2]^c[f+28>>2];a=c[279984+((a>>>8&255)<<2)>>2]^c[281008+((a&255)<<2)>>2]^c[278960+((a>>>16&255)<<2)>>2]^c[277936+(a>>>24<<2)>>2];e=e+-32|0;if(e>>>0<=31)break;else f=f+32|0}e=g-h|0;b=b+i|0}if(e>>>0>3){h=e+-4|0;i=h>>>2;g=i<<2;f=b;while(1){a=c[f>>2]^a;a=c[279984+((a>>>8&255)<<2)>>2]^c[281008+((a&255)<<2)>>2]^c[278960+((a>>>16&255)<<2)>>2]^c[277936+(a>>>24<<2)>>2];e=e+-4|0;if(e>>>0<=3)break;else f=f+4|0}e=h-g|0;b=b+(i+1<<2)|0}if(e)while(1){a=c[277936+(((d[b>>0]|0)^a&255)<<2)>>2]^a>>>8;e=e+-1|0;if(!e)break;else b=b+1|0}}while(0);i=~a;return i|0}function rH(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return sH(a,b,8,15,8,0,c,d)|0}function sH(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;if(!i){o=-6;return o|0}if((a[i>>0]|0)!=49|(j|0)!=56){o=-6;return o|0}if(!b){o=-2;return o|0}m=b+24|0;c[m>>2]=0;l=b+32|0;j=c[l>>2]|0;if(!j){c[l>>2]=156;c[b+40>>2]=0;j=156}o=b+36|0;if(!(c[o>>2]|0))c[o>>2]=93;k=(d|0)==-1?6:d;if((f|0)<0){i=0-f|0;f=0}else{n=(f|0)>15;i=n?f+-16|0:f;f=n?2:1}if((g+-1|0)>>>0>8|(e|0)!=8|(i|0)<8|(i|0)>15|(k|0)<0|(k|0)>9|(h|0)<0|(h|0)>4){o=-2;return o|0}i=(i|0)==8?9:i;n=b+40|0;d=Hd[j&255](c[n>>2]|0,1,5828)|0;if(!d){o=-4;return o|0}e=b+28|0;c[e>>2]=d;c[d>>2]=b;c[d+24>>2]=f;c[d+28>>2]=0;c[d+48>>2]=i;p=1<>2]=p;c[d+52>>2]=p+-1;q=g+7|0;c[d+80>>2]=q;q=1<>2]=q;c[d+84>>2]=q+-1;c[d+88>>2]=((g+9|0)>>>0)/3|0;q=d+56|0;c[q>>2]=Hd[c[l>>2]&255](c[n>>2]|0,p,2)|0;p=d+64|0;c[p>>2]=Hd[c[l>>2]&255](c[n>>2]|0,c[f>>2]|0,2)|0;f=d+68|0;c[f>>2]=Hd[c[l>>2]&255](c[n>>2]|0,c[j>>2]|0,2)|0;c[d+5824>>2]=0;j=1<>2]=j;j=Hd[c[l>>2]&255](c[n>>2]|0,j,4)|0;c[d+8>>2]=j;i=c[i>>2]|0;c[d+12>>2]=i<<2;if(((c[q>>2]|0)!=0?(c[p>>2]|0)!=0:0)?!((c[f>>2]|0)==0|(j|0)==0):0){c[d+5796>>2]=j+(i>>>1<<1);c[d+5784>>2]=j+(i*3|0);c[d+132>>2]=k;c[d+136>>2]=h;a[d+36>>0]=8;q=uH(b)|0;return q|0}c[d+4>>2]=666;c[m>>2]=c[73028];j=c[e>>2]|0;if(!j){q=-4;return q|0}switch(c[j+4>>2]|0){case 42:case 69:case 73:case 91:case 103:case 113:case 666:break;default:{q=-4;return q|0}}i=c[j+8>>2]|0;if(i){Cd[c[o>>2]&255](c[n>>2]|0,i);j=c[e>>2]|0}i=c[j+68>>2]|0;if(i){Cd[c[o>>2]&255](c[n>>2]|0,i);j=c[e>>2]|0}i=c[j+64>>2]|0;if(i){Cd[c[o>>2]&255](c[n>>2]|0,i);j=c[e>>2]|0}i=c[j+56>>2]|0;if(i){Cd[c[o>>2]&255](c[n>>2]|0,i);j=c[e>>2]|0}Cd[c[o>>2]&255](c[n>>2]|0,j);c[e>>2]=0;q=-4;return q|0}function tH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(!a){g=-2;return g|0}f=a+28|0;b=c[f>>2]|0;if(!b){g=-2;return g|0}g=c[b+4>>2]|0;switch(g|0){case 42:case 69:case 73:case 91:case 103:case 113:case 666:break;default:{g=-2;return g|0}}d=c[b+8>>2]|0;if(d){Cd[c[a+36>>2]&255](c[a+40>>2]|0,d);b=c[f>>2]|0}d=c[b+68>>2]|0;if(d){Cd[c[a+36>>2]&255](c[a+40>>2]|0,d);b=c[f>>2]|0}d=c[b+64>>2]|0;if(d){Cd[c[a+36>>2]&255](c[a+40>>2]|0,d);b=c[f>>2]|0}d=c[b+56>>2]|0;e=a+36|0;if(!d)d=a+40|0;else{b=a+40|0;Cd[c[e>>2]&255](c[b>>2]|0,d);d=b;b=c[f>>2]|0}Cd[c[e>>2]&255](c[d>>2]|0,b);c[f>>2]=0;g=(g|0)==113?-3:0;return g|0}function uH(a){a=a|0;var d=0,f=0,g=0,h=0;if(!a){a=-2;return a|0}g=a+28|0;h=c[g>>2]|0;if(!h){a=-2;return a|0}if(!(c[a+32>>2]|0)){a=-2;return a|0}if(!(c[a+36>>2]|0)){a=-2;return a|0}c[a+20>>2]=0;c[a+8>>2]=0;c[a+24>>2]=0;c[a+44>>2]=2;c[h+20>>2]=0;c[h+16>>2]=c[h+8>>2];f=h+24|0;d=c[f>>2]|0;if((d|0)<0){d=0-d|0;c[f>>2]=d}c[h+4>>2]=(d|0)!=0?42:113;if((d|0)==2)d=qH(0,0,0)|0;else d=pH(0,0,0)|0;c[a+48>>2]=d;c[h+40>>2]=0;EH(h);a=c[g>>2]|0;c[a+60>>2]=c[a+44>>2]<<1;g=c[a+76>>2]|0;h=c[a+68>>2]|0;b[h+(g+-1<<1)>>1]=0;sfa(h|0,0,(g<<1)+-2|0)|0;g=c[a+132>>2]|0;c[a+128>>2]=e[286130+(g*12|0)>>1];c[a+140>>2]=e[286128+(g*12|0)>>1];c[a+144>>2]=e[286132+(g*12|0)>>1];c[a+124>>2]=e[286134+(g*12|0)>>1];c[a+108>>2]=0;c[a+92>>2]=0;c[a+116>>2]=0;c[a+5812>>2]=0;c[a+120>>2]=2;c[a+96>>2]=2;c[a+104>>2]=0;c[a+72>>2]=0;a=0;return a|0}function vH(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0;if(!a){d=-2;return d|0}i=c[a+28>>2]|0;if(!i){d=-2;return d|0}f=(b|0)==-1?6:b;if(f>>>0>9|(d|0)<0|(d|0)>4){d=-2;return d|0}g=i+132|0;h=i+136|0;if((c[h>>2]|0)==(d|0)?(c[286136+((c[g>>2]|0)*12|0)>>2]|0)==(c[286136+(f*12|0)>>2]|0):0)b=0;else if(c[a+8>>2]|0){b=wH(a,5)|0;if((b|0)==-5)b=(c[i+20>>2]|0)==0?0:-5}else b=0;if((c[g>>2]|0)!=(f|0)){c[g>>2]=f;c[i+128>>2]=e[286130+(f*12|0)>>1];c[i+140>>2]=e[286128+(f*12|0)>>1];c[i+144>>2]=e[286132+(f*12|0)>>1];c[i+124>>2]=e[286134+(f*12|0)>>1]}c[h>>2]=d;d=b;return d|0}function wH(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;if(!e){P=-2;return P|0}N=e+28|0;O=c[N>>2]|0;if((O|0)==0|(f|0)>5|(f|0)<0){P=-2;return P|0}R=e+12|0;do if(c[R>>2]|0){if((c[e>>2]|0)==0?(c[e+4>>2]|0)!=0:0)break;K=O+4|0;j=c[K>>2]|0;L=(f|0)!=4;if(!((j|0)==666&L)){Q=e+16|0;if(!(c[Q>>2]|0)){c[e+24>>2]=c[73029];P=-5;return P|0}c[O>>2]=e;M=O+40|0;C=c[M>>2]|0;c[M>>2]=f;do if((j|0)==42){if((c[O+24>>2]|0)!=2){j=(c[O+48>>2]<<12)+-30720|0;if((c[O+136>>2]|0)<=1?(n=c[O+132>>2]|0,(n|0)>=2):0)if((n|0)<6)g=64;else g=(n|0)==6?128:192;else g=0;q=g|j;B=O+108|0;q=(c[B>>2]|0)==0?q:q|32;c[K>>2]=113;j=O+20|0;g=c[j>>2]|0;c[j>>2]=g+1;h=O+8|0;a[(c[h>>2]|0)+g>>0]=q>>>8;g=c[j>>2]|0;c[j>>2]=g+1;a[(c[h>>2]|0)+g>>0]=(q|((q>>>0)%31|0))^31;g=e+48|0;if(c[B>>2]|0){B=c[g>>2]|0;q=c[j>>2]|0;c[j>>2]=q+1;a[(c[h>>2]|0)+q>>0]=B>>>24;q=c[j>>2]|0;c[j>>2]=q+1;a[(c[h>>2]|0)+q>>0]=B>>>16;q=c[g>>2]|0;B=c[j>>2]|0;c[j>>2]=B+1;a[(c[h>>2]|0)+B>>0]=q>>>8;B=c[j>>2]|0;c[j>>2]=B+1;a[(c[h>>2]|0)+B>>0]=q}c[g>>2]=pH(0,0,0)|0;g=c[K>>2]|0;B=32;break}j=e+48|0;c[j>>2]=qH(0,0,0)|0;i=O+20|0;h=c[i>>2]|0;c[i>>2]=h+1;o=O+8|0;a[(c[o>>2]|0)+h>>0]=31;h=c[i>>2]|0;c[i>>2]=h+1;a[(c[o>>2]|0)+h>>0]=-117;h=c[i>>2]|0;c[i>>2]=h+1;a[(c[o>>2]|0)+h>>0]=8;h=O+28|0;n=c[h>>2]|0;if(!n){j=c[i>>2]|0;c[i>>2]=j+1;a[(c[o>>2]|0)+j>>0]=0;j=c[i>>2]|0;c[i>>2]=j+1;a[(c[o>>2]|0)+j>>0]=0;j=c[i>>2]|0;c[i>>2]=j+1;a[(c[o>>2]|0)+j>>0]=0;j=c[i>>2]|0;c[i>>2]=j+1;a[(c[o>>2]|0)+j>>0]=0;j=c[i>>2]|0;c[i>>2]=j+1;a[(c[o>>2]|0)+j>>0]=0;j=c[O+132>>2]|0;if((j|0)!=9)if((c[O+136>>2]|0)>1)j=4;else j=(j|0)<2?4:0;else j=2;w=c[i>>2]|0;c[i>>2]=w+1;a[(c[o>>2]|0)+w>>0]=j;w=c[i>>2]|0;c[i>>2]=w+1;a[(c[o>>2]|0)+w>>0]=3;c[K>>2]=113;break}B=(((c[n+44>>2]|0)!=0?2:0)|(c[n>>2]|0)!=0|((c[n+16>>2]|0)==0?0:4)|((c[n+28>>2]|0)==0?0:8)|((c[n+36>>2]|0)==0?0:16))&255;g=c[i>>2]|0;c[i>>2]=g+1;a[(c[o>>2]|0)+g>>0]=B;g=c[(c[h>>2]|0)+4>>2]&255;B=c[i>>2]|0;c[i>>2]=B+1;a[(c[o>>2]|0)+B>>0]=g;B=(c[(c[h>>2]|0)+4>>2]|0)>>>8&255;g=c[i>>2]|0;c[i>>2]=g+1;a[(c[o>>2]|0)+g>>0]=B;g=(c[(c[h>>2]|0)+4>>2]|0)>>>16&255;B=c[i>>2]|0;c[i>>2]=B+1;a[(c[o>>2]|0)+B>>0]=g;B=(c[(c[h>>2]|0)+4>>2]|0)>>>24&255;g=c[i>>2]|0;c[i>>2]=g+1;a[(c[o>>2]|0)+g>>0]=B;g=c[O+132>>2]|0;if((g|0)!=9)if((c[O+136>>2]|0)>1)g=4;else g=(g|0)<2?4:0;else g=2;B=c[i>>2]|0;c[i>>2]=B+1;a[(c[o>>2]|0)+B>>0]=g;B=c[(c[h>>2]|0)+12>>2]&255;g=c[i>>2]|0;c[i>>2]=g+1;a[(c[o>>2]|0)+g>>0]=B;g=c[h>>2]|0;if(c[g+16>>2]|0){g=c[g+20>>2]&255;B=c[i>>2]|0;c[i>>2]=B+1;a[(c[o>>2]|0)+B>>0]=g;B=(c[(c[h>>2]|0)+20>>2]|0)>>>8&255;g=c[i>>2]|0;c[i>>2]=g+1;a[(c[o>>2]|0)+g>>0]=B;g=c[h>>2]|0}if(c[g+44>>2]|0)c[j>>2]=qH(c[j>>2]|0,c[o>>2]|0,c[i>>2]|0)|0;c[O+32>>2]=0;c[K>>2]=69;B=34}else{g=j;B=32}while(0);if((B|0)==32)if((g|0)==69){h=O+28|0;B=34}else B=55;do if((B|0)==34){g=c[h>>2]|0;if(!(c[g+16>>2]|0)){c[K>>2]=73;j=g;B=57;break}p=O+20|0;j=c[p>>2]|0;q=O+32|0;n=c[q>>2]|0;a:do if(n>>>0<(c[g+20>>2]&65535)>>>0){o=O+12|0;l=e+48|0;k=O+8|0;m=e+20|0;i=j;while(1){if((i|0)==(c[o>>2]|0)){if((c[g+44>>2]|0)!=0&i>>>0>j>>>0)c[l>>2]=qH(c[l>>2]|0,(c[k>>2]|0)+j|0,i-j|0)|0;n=c[N>>2]|0;GH(n);j=n+20|0;g=c[j>>2]|0;B=c[Q>>2]|0;g=g>>>0>B>>>0?B:g;if((g|0)!=0?(r=n+16|0,qfa(c[R>>2]|0,c[r>>2]|0,g|0)|0,c[R>>2]=(c[R>>2]|0)+g,c[r>>2]=(c[r>>2]|0)+g,c[m>>2]=(c[m>>2]|0)+g,c[Q>>2]=(c[Q>>2]|0)-g,B=c[j>>2]|0,c[j>>2]=B-g,(B|0)==(g|0)):0)c[r>>2]=c[n+8>>2];j=c[p>>2]|0;if((j|0)==(c[o>>2]|0))break;g=c[h>>2]|0;n=c[q>>2]|0;i=j}n=a[(c[g+16>>2]|0)+n>>0]|0;c[p>>2]=i+1;a[(c[k>>2]|0)+i>>0]=n;n=(c[q>>2]|0)+1|0;c[q>>2]=n;g=c[h>>2]|0;if(n>>>0>=(c[g+20>>2]&65535)>>>0)break a;i=c[p>>2]|0}g=c[h>>2]|0}while(0);if((c[g+44>>2]|0)!=0?(s=c[p>>2]|0,s>>>0>j>>>0):0){g=e+48|0;c[g>>2]=qH(c[g>>2]|0,(c[O+8>>2]|0)+j|0,s-j|0)|0;g=c[h>>2]|0}if((c[q>>2]|0)==(c[g+20>>2]|0)){c[q>>2]=0;c[K>>2]=73;j=g;B=57;break}else{g=c[K>>2]|0;B=55;break}}while(0);if((B|0)==55)if((g|0)==73){j=c[O+28>>2]|0;B=57}else B=75;do if((B|0)==57){g=O+28|0;if(!(c[j+28>>2]|0)){c[K>>2]=91;B=77;break}l=O+20|0;j=c[l>>2]|0;i=O+12|0;k=e+48|0;m=O+8|0;o=e+20|0;p=O+32|0;n=j;while(1){if((n|0)==(c[i>>2]|0)){if(n>>>0>j>>>0?(c[(c[g>>2]|0)+44>>2]|0)!=0:0)c[k>>2]=qH(c[k>>2]|0,(c[m>>2]|0)+j|0,n-j|0)|0;j=c[N>>2]|0;GH(j);h=j+20|0;n=c[h>>2]|0;B=c[Q>>2]|0;n=n>>>0>B>>>0?B:n;if((n|0)!=0?(t=j+16|0,qfa(c[R>>2]|0,c[t>>2]|0,n|0)|0,c[R>>2]=(c[R>>2]|0)+n,c[t>>2]=(c[t>>2]|0)+n,c[o>>2]=(c[o>>2]|0)+n,c[Q>>2]=(c[Q>>2]|0)-n,B=c[h>>2]|0,c[h>>2]=B-n,(B|0)==(n|0)):0)c[t>>2]=c[j+8>>2];j=c[l>>2]|0;if((j|0)==(c[i>>2]|0)){n=1;break}else n=j}h=c[p>>2]|0;c[p>>2]=h+1;h=a[(c[(c[g>>2]|0)+28>>2]|0)+h>>0]|0;c[l>>2]=n+1;a[(c[m>>2]|0)+n>>0]=h;if(!(h<<24>>24)){n=h&255;break}n=c[l>>2]|0}if((c[(c[g>>2]|0)+44>>2]|0)!=0?(u=c[l>>2]|0,u>>>0>j>>>0):0)c[k>>2]=qH(c[k>>2]|0,(c[m>>2]|0)+j|0,u-j|0)|0;if(!n){c[p>>2]=0;c[K>>2]=91;B=77;break}else{g=c[K>>2]|0;B=75;break}}while(0);if((B|0)==75)if((g|0)==91){g=O+28|0;B=77}else B=95;do if((B|0)==77){if(!(c[(c[g>>2]|0)+36>>2]|0)){c[K>>2]=103;B=97;break}k=O+20|0;h=c[k>>2]|0;i=O+12|0;m=e+48|0;p=O+8|0;o=e+20|0;l=O+32|0;n=h;while(1){if((n|0)==(c[i>>2]|0)){if(n>>>0>h>>>0?(c[(c[g>>2]|0)+44>>2]|0)!=0:0)c[m>>2]=qH(c[m>>2]|0,(c[p>>2]|0)+h|0,n-h|0)|0;j=c[N>>2]|0;GH(j);h=j+20|0;n=c[h>>2]|0;B=c[Q>>2]|0;n=n>>>0>B>>>0?B:n;if((n|0)!=0?(v=j+16|0,qfa(c[R>>2]|0,c[v>>2]|0,n|0)|0,c[R>>2]=(c[R>>2]|0)+n,c[v>>2]=(c[v>>2]|0)+n,c[o>>2]=(c[o>>2]|0)+n,c[Q>>2]=(c[Q>>2]|0)-n,B=c[h>>2]|0,c[h>>2]=B-n,(B|0)==(n|0)):0)c[v>>2]=c[j+8>>2];h=c[k>>2]|0;if((h|0)==(c[i>>2]|0)){j=1;break}else n=h}j=c[l>>2]|0;c[l>>2]=j+1;j=a[(c[(c[g>>2]|0)+36>>2]|0)+j>>0]|0;c[k>>2]=n+1;a[(c[p>>2]|0)+n>>0]=j;if(!(j<<24>>24)){j=j&255;break}n=c[k>>2]|0}if((c[(c[g>>2]|0)+44>>2]|0)!=0?(w=c[k>>2]|0,w>>>0>h>>>0):0)c[m>>2]=qH(c[m>>2]|0,(c[p>>2]|0)+h|0,w-h|0)|0;if(!j){c[K>>2]=103;B=97;break}else{g=c[K>>2]|0;B=95;break}}while(0);if((B|0)==95?(g|0)==103:0){g=O+28|0;B=97}do if((B|0)==97){if(!(c[(c[g>>2]|0)+44>>2]|0)){c[K>>2]=113;break}j=O+20|0;h=O+12|0;if((((c[j>>2]|0)+2|0)>>>0>(c[h>>2]|0)>>>0?(y=c[N>>2]|0,GH(y),z=y+20|0,x=c[z>>2]|0,B=c[Q>>2]|0,x=x>>>0>B>>>0?B:x,(x|0)!=0):0)?(A=y+16|0,qfa(c[R>>2]|0,c[A>>2]|0,x|0)|0,c[R>>2]=(c[R>>2]|0)+x,c[A>>2]=(c[A>>2]|0)+x,B=e+20|0,c[B>>2]=(c[B>>2]|0)+x,c[Q>>2]=(c[Q>>2]|0)-x,B=c[z>>2]|0,c[z>>2]=B-x,(B|0)==(x|0)):0)c[A>>2]=c[y+8>>2];g=c[j>>2]|0;if((g+2|0)>>>0<=(c[h>>2]|0)>>>0){B=e+48|0;y=c[B>>2]&255;c[j>>2]=g+1;z=O+8|0;a[(c[z>>2]|0)+g>>0]=y;y=(c[B>>2]|0)>>>8&255;A=c[j>>2]|0;c[j>>2]=A+1;a[(c[z>>2]|0)+A>>0]=y;c[B>>2]=qH(0,0,0)|0;c[K>>2]=113}}while(0);x=O+20|0;if(!(c[x>>2]|0)){if((c[e+4>>2]|0)==0?((f<<1)-((f|0)>4?9:0)|0)<=((C<<1)-((C|0)>4?9:0)|0)&L:0){c[e+24>>2]=c[73029];P=-5;return P|0}}else{i=c[N>>2]|0;GH(i);k=i+20|0;h=c[k>>2]|0;g=c[Q>>2]|0;h=h>>>0>g>>>0?g:h;if(h){j=i+16|0;qfa(c[R>>2]|0,c[j>>2]|0,h|0)|0;c[R>>2]=(c[R>>2]|0)+h;c[j>>2]=(c[j>>2]|0)+h;g=e+20|0;c[g>>2]=(c[g>>2]|0)+h;g=(c[Q>>2]|0)-h|0;c[Q>>2]=g;C=c[k>>2]|0;c[k>>2]=C-h;if((C|0)==(h|0))c[j>>2]=c[i+8>>2]}if(!g){c[M>>2]=-1;P=0;return P|0}}j=(c[K>>2]|0)==666;g=(c[e+4>>2]|0)==0;if(j)if(g)B=118;else{c[e+24>>2]=c[73029];P=-5;return P|0}else if(g)B=118;else B=119;if((B|0)==118?!((c[O+116>>2]|0)==0&((f|0)==0|j)):0)B=119;do if((B|0)==119){g=c[O+136>>2]|0;b:do if((g|0)==3){l=O+116|0;k=(f|0)==0;m=O+96|0;v=O+108|0;p=O+5792|0;q=O+5796|0;r=O+5784|0;s=O+(d[289248]<<2)+2440|0;t=O+5788|0;u=O+56|0;w=O+92|0;while(1){g=c[l>>2]|0;if(g>>>0<259){LR(O);g=c[l>>2]|0;if(g>>>0<259&k){B=193;break b}if(!g)break;c[m>>2]=0;if(g>>>0>2)B=152;else{g=c[v>>2]|0;B=167}}else{c[m>>2]=0;B=152}if((B|0)==152){B=0;o=c[v>>2]|0;if(o){j=c[u>>2]|0;h=a[j+(o+-1)>>0]|0;if((h<<24>>24==(a[j+o>>0]|0)?h<<24>>24==(a[j+(o+1)>>0]|0):0)?(G=j+(o+2)|0,h<<24>>24==(a[G>>0]|0)):0){i=j+(o+258)|0;j=G;do{n=j+1|0;if(h<<24>>24!=(a[n>>0]|0)){j=n;break}n=j+2|0;if(h<<24>>24!=(a[n>>0]|0)){j=n;break}n=j+3|0;if(h<<24>>24!=(a[n>>0]|0)){j=n;break}n=j+4|0;if(h<<24>>24!=(a[n>>0]|0)){j=n;break}n=j+5|0;if(h<<24>>24!=(a[n>>0]|0)){j=n;break}n=j+6|0;if(h<<24>>24!=(a[n>>0]|0)){j=n;break}n=j+7|0;if(h<<24>>24!=(a[n>>0]|0)){j=n;break}j=j+8|0}while(j>>>0>>0?h<<24>>24==(a[j>>0]|0):0);F=j-i+258|0;g=F>>>0>g>>>0?g:F;c[m>>2]=g;if(g>>>0>2){g=g+253|0;h=c[p>>2]|0;b[(c[q>>2]|0)+(h<<1)>>1]=1;c[p>>2]=h+1;a[(c[r>>2]|0)+h>>0]=g;g=O+((d[289760+(g&255)>>0]|256)+1<<2)+148|0;b[g>>1]=(b[g>>1]|0)+1<<16>>16;b[s>>1]=(b[s>>1]|0)+1<<16>>16;g=(c[p>>2]|0)==((c[t>>2]|0)+-1|0)&1;h=c[m>>2]|0;c[l>>2]=(c[l>>2]|0)-h;h=(c[v>>2]|0)+h|0;c[v>>2]=h;c[m>>2]=0}else{g=o;B=167}}else{g=o;B=167}}else{g=0;B=167}}if((B|0)==167){B=0;g=a[(c[u>>2]|0)+g>>0]|0;h=c[p>>2]|0;b[(c[q>>2]|0)+(h<<1)>>1]=0;c[p>>2]=h+1;a[(c[r>>2]|0)+h>>0]=g;g=O+((g&255)<<2)+148|0;b[g>>1]=(b[g>>1]|0)+1<<16>>16;g=(c[p>>2]|0)==((c[t>>2]|0)+-1|0)&1;c[l>>2]=(c[l>>2]|0)+-1;h=(c[v>>2]|0)+1|0;c[v>>2]=h}if(!g)continue;g=c[w>>2]|0;if((g|0)>-1)j=(c[u>>2]|0)+g|0;else j=0;IH(O,j,h-g|0,0);c[w>>2]=c[v>>2];n=c[O>>2]|0;j=c[n+28>>2]|0;GH(j);h=j+20|0;g=c[h>>2]|0;i=n+16|0;F=c[i>>2]|0;g=g>>>0>F>>>0?F:g;if((g|0)!=0?(F=n+12|0,H=j+16|0,qfa(c[F>>2]|0,c[H>>2]|0,g|0)|0,c[F>>2]=(c[F>>2]|0)+g,c[H>>2]=(c[H>>2]|0)+g,F=n+20|0,c[F>>2]=(c[F>>2]|0)+g,c[i>>2]=(c[i>>2]|0)-g,F=c[h>>2]|0,c[h>>2]=F-g,(F|0)==(g|0)):0)c[H>>2]=c[j+8>>2];if(!(c[(c[O>>2]|0)+16>>2]|0)){B=193;break b}}c[O+5812>>2]=0;if((f|0)==4){j=c[w>>2]|0;if((j|0)>-1)g=(c[u>>2]|0)+j|0;else g=0;IH(O,g,(c[v>>2]|0)-j|0,1);c[w>>2]=c[v>>2];j=c[O>>2]|0;h=c[j+28>>2]|0;GH(h);i=h+20|0;g=c[i>>2]|0;k=j+16|0;J=c[k>>2]|0;g=g>>>0>J>>>0?J:g;if((g|0)!=0?(J=j+12|0,I=h+16|0,qfa(c[J>>2]|0,c[I>>2]|0,g|0)|0,c[J>>2]=(c[J>>2]|0)+g,c[I>>2]=(c[I>>2]|0)+g,J=j+20|0,c[J>>2]=(c[J>>2]|0)+g,c[k>>2]=(c[k>>2]|0)-g,J=c[i>>2]|0,c[i>>2]=J-g,(J|0)==(g|0)):0)c[I>>2]=c[h+8>>2];g=(c[(c[O>>2]|0)+16>>2]|0)==0?2:3;B=190;break}if(c[p>>2]|0){j=c[w>>2]|0;if((j|0)>-1)g=(c[u>>2]|0)+j|0;else g=0;IH(O,g,(c[v>>2]|0)-j|0,0);c[w>>2]=c[v>>2];j=c[O>>2]|0;h=c[j+28>>2]|0;GH(h);i=h+20|0;g=c[i>>2]|0;k=j+16|0;K=c[k>>2]|0;g=g>>>0>K>>>0?K:g;if((g|0)!=0?(K=j+12|0,J=h+16|0,qfa(c[K>>2]|0,c[J>>2]|0,g|0)|0,c[K>>2]=(c[K>>2]|0)+g,c[J>>2]=(c[J>>2]|0)+g,K=j+20|0,c[K>>2]=(c[K>>2]|0)+g,c[k>>2]=(c[k>>2]|0)-g,K=c[i>>2]|0,c[i>>2]=K-g,(K|0)==(g|0)):0)c[J>>2]=c[h+8>>2];if(!(c[(c[O>>2]|0)+16>>2]|0))B=193}}else if((g|0)==2){l=O+116|0;m=O+96|0;s=O+108|0;r=O+56|0;n=O+5792|0;o=O+5796|0;p=O+5784|0;q=O+5788|0;t=O+92|0;while(1){if((c[l>>2]|0)==0?(LR(O),(c[l>>2]|0)==0):0)break;c[m>>2]=0;J=a[(c[r>>2]|0)+(c[s>>2]|0)>>0]|0;g=c[n>>2]|0;b[(c[o>>2]|0)+(g<<1)>>1]=0;c[n>>2]=g+1;a[(c[p>>2]|0)+g>>0]=J;J=O+((J&255)<<2)+148|0;b[J>>1]=(b[J>>1]|0)+1<<16>>16;J=(c[n>>2]|0)==((c[q>>2]|0)+-1|0);c[l>>2]=(c[l>>2]|0)+-1;g=(c[s>>2]|0)+1|0;c[s>>2]=g;if(!J)continue;j=c[t>>2]|0;if((j|0)>-1)h=(c[r>>2]|0)+j|0;else h=0;IH(O,h,g-j|0,0);c[t>>2]=c[s>>2];j=c[O>>2]|0;h=c[j+28>>2]|0;GH(h);i=h+20|0;g=c[i>>2]|0;k=j+16|0;J=c[k>>2]|0;g=g>>>0>J>>>0?J:g;if((g|0)!=0?(J=j+12|0,D=h+16|0,qfa(c[J>>2]|0,c[D>>2]|0,g|0)|0,c[J>>2]=(c[J>>2]|0)+g,c[D>>2]=(c[D>>2]|0)+g,J=j+20|0,c[J>>2]=(c[J>>2]|0)+g,c[k>>2]=(c[k>>2]|0)-g,J=c[i>>2]|0,c[i>>2]=J-g,(J|0)==(g|0)):0)c[D>>2]=c[h+8>>2];if(!(c[(c[O>>2]|0)+16>>2]|0)){B=193;break b}}if(f){c[O+5812>>2]=0;if((f|0)==4){j=c[t>>2]|0;if((j|0)>-1)g=(c[r>>2]|0)+j|0;else g=0;IH(O,g,(c[s>>2]|0)-j|0,1);c[t>>2]=c[s>>2];j=c[O>>2]|0;h=c[j+28>>2]|0;GH(h);i=h+20|0;g=c[i>>2]|0;k=j+16|0;J=c[k>>2]|0;g=g>>>0>J>>>0?J:g;if((g|0)!=0?(J=j+12|0,E=h+16|0,qfa(c[J>>2]|0,c[E>>2]|0,g|0)|0,c[J>>2]=(c[J>>2]|0)+g,c[E>>2]=(c[E>>2]|0)+g,J=j+20|0,c[J>>2]=(c[J>>2]|0)+g,c[k>>2]=(c[k>>2]|0)-g,J=c[i>>2]|0,c[i>>2]=J-g,(J|0)==(g|0)):0)c[E>>2]=c[h+8>>2];g=(c[(c[O>>2]|0)+16>>2]|0)==0?2:3;B=190;break}if(c[n>>2]|0){j=c[t>>2]|0;if((j|0)>-1)g=(c[r>>2]|0)+j|0;else g=0;IH(O,g,(c[s>>2]|0)-j|0,0);c[t>>2]=c[s>>2];j=c[O>>2]|0;h=c[j+28>>2]|0;GH(h);i=h+20|0;g=c[i>>2]|0;k=j+16|0;K=c[k>>2]|0;g=g>>>0>K>>>0?K:g;if((g|0)!=0?(K=j+12|0,F=h+16|0,qfa(c[K>>2]|0,c[F>>2]|0,g|0)|0,c[K>>2]=(c[K>>2]|0)+g,c[F>>2]=(c[F>>2]|0)+g,K=j+20|0,c[K>>2]=(c[K>>2]|0)+g,c[k>>2]=(c[k>>2]|0)-g,K=c[i>>2]|0,c[i>>2]=K-g,(K|0)==(g|0)):0)c[F>>2]=c[h+8>>2];if(!(c[(c[O>>2]|0)+16>>2]|0))B=193}}else B=193}else{g=Pd[c[286128+((c[O+132>>2]|0)*12|0)+8>>2]&511](O,f)|0;B=190}while(0);if((B|0)==190){if((g&-2|0)==2)c[K>>2]=666;if(g&-3){if((g|0)!=1)break}else B=193}if((B|0)==193){if(c[Q>>2]|0){P=0;return P|0}c[M>>2]=-1;P=0;return P|0}if((f|0)==1)HH(O);else if(((f|0)!=5?(FH(O,0,0,0),(f|0)==3):0)?(f=c[O+76>>2]|0,K=c[O+68>>2]|0,b[K+(f+-1<<1)>>1]=0,sfa(K|0,0,(f<<1)+-2|0)|0,(c[O+116>>2]|0)==0):0){c[O+108>>2]=0;c[O+92>>2]=0;c[O+5812>>2]=0}j=c[N>>2]|0;GH(j);k=j+20|0;i=c[k>>2]|0;g=c[Q>>2]|0;i=i>>>0>g>>>0?g:i;if(i){h=j+16|0;qfa(c[R>>2]|0,c[h>>2]|0,i|0)|0;c[R>>2]=(c[R>>2]|0)+i;c[h>>2]=(c[h>>2]|0)+i;g=e+20|0;c[g>>2]=(c[g>>2]|0)+i;g=(c[Q>>2]|0)-i|0;c[Q>>2]=g;f=c[k>>2]|0;c[k>>2]=f-i;if((f|0)==(i|0))c[h>>2]=c[j+8>>2]}if(!g){c[M>>2]=-1;P=0;return P|0}}while(0);if(L){P=0;return P|0}j=O+24|0;g=c[j>>2]|0;if((g|0)<1){P=1;return P|0}h=e+48|0;i=c[h>>2]|0;if((g|0)==2){K=c[x>>2]|0;c[x>>2]=K+1;L=O+8|0;a[(c[L>>2]|0)+K>>0]=i;K=(c[h>>2]|0)>>>8&255;f=c[x>>2]|0;c[x>>2]=f+1;a[(c[L>>2]|0)+f>>0]=K;f=(c[h>>2]|0)>>>16&255;K=c[x>>2]|0;c[x>>2]=K+1;a[(c[L>>2]|0)+K>>0]=f;K=(c[h>>2]|0)>>>24&255;f=c[x>>2]|0;c[x>>2]=f+1;a[(c[L>>2]|0)+f>>0]=K;f=e+8|0;K=c[f>>2]&255;O=c[x>>2]|0;c[x>>2]=O+1;a[(c[L>>2]|0)+O>>0]=K;O=(c[f>>2]|0)>>>8&255;K=c[x>>2]|0;c[x>>2]=K+1;a[(c[L>>2]|0)+K>>0]=O;K=(c[f>>2]|0)>>>16&255;O=c[x>>2]|0;c[x>>2]=O+1;a[(c[L>>2]|0)+O>>0]=K;f=(c[f>>2]|0)>>>24&255;O=c[x>>2]|0;c[x>>2]=O+1;a[(c[L>>2]|0)+O>>0]=f}else{f=c[x>>2]|0;c[x>>2]=f+1;L=O+8|0;a[(c[L>>2]|0)+f>>0]=i>>>24;f=c[x>>2]|0;c[x>>2]=f+1;a[(c[L>>2]|0)+f>>0]=i>>>16;f=c[h>>2]|0;O=c[x>>2]|0;c[x>>2]=O+1;a[(c[L>>2]|0)+O>>0]=f>>>8;O=c[x>>2]|0;c[x>>2]=O+1;a[(c[L>>2]|0)+O>>0]=f}h=c[N>>2]|0;GH(h);i=h+20|0;g=c[i>>2]|0;O=c[Q>>2]|0;g=g>>>0>O>>>0?O:g;if((g|0)!=0?(P=h+16|0,qfa(c[R>>2]|0,c[P>>2]|0,g|0)|0,c[R>>2]=(c[R>>2]|0)+g,c[P>>2]=(c[P>>2]|0)+g,O=e+20|0,c[O>>2]=(c[O>>2]|0)+g,c[Q>>2]=(c[Q>>2]|0)-g,O=c[i>>2]|0,c[i>>2]=O-g,(O|0)==(g|0)):0)c[P>>2]=c[h+8>>2];g=c[j>>2]|0;if((g|0)>0)c[j>>2]=0-g;P=(c[x>>2]|0)==0&1;return P|0}}while(0);c[e+24>>2]=c[73026];P=-2;return P|0}function xH(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;H=c[e+28>>2]|0;h=c[e>>2]|0;P=e+4|0;J=h+((c[P>>2]|0)+-6)|0;K=e+12|0;i=c[K>>2]|0;L=e+16|0;q=c[L>>2]|0;M=i+(q+-258)|0;A=c[H+44>>2]|0;B=c[H+48>>2]|0;C=c[H+52>>2]|0;N=H+56|0;O=H+60|0;D=c[H+76>>2]|0;E=c[H+80>>2]|0;F=(1<>2])+-1|0;G=(1<>2])+-1|0;q=i+(q+~f)|0;r=H+7104|0;s=C+-1|0;t=(B|0)==0;u=(c[H+40>>2]|0)+-1|0;v=u+B|0;w=B+-1|0;x=q+-1|0;y=q-B|0;z=x-B|0;f=c[O>>2]|0;g=c[N>>2]|0;h=h+-1|0;i=i+-1|0;a:while(1){if(f>>>0<15){p=h+2|0;j=f+16|0;g=((d[h+1>>0]|0)<>0]|0)<>0]|0;k=b[D+(f<<2)+2>>1]|0;f=d[D+(f<<2)+1>>0]|0;g=g>>>f;f=j-f|0;do if(l<<24>>24){j=l&255;while(1){if(j&16)break;if(j&64){I=57;break a}p=(g&(1<>0]|0;k=b[D+(p<<2)+2>>1]|0;p=d[D+(p<<2)+1>>0]|0;g=g>>>p;f=f-p|0;if(!(j<<24>>24)){I=6;break}else j=j&255}if((I|0)==6){k=k&255;I=7;break}l=k&65535;n=j&15;if(!n){m=g;p=l}else{if(f>>>0>>0){h=h+1|0;k=f+8|0;g=((d[h>>0]|0)<>>n;p=(g&(1<>>0<15){o=h+2|0;j=f+16|0;f=((d[h+1>>0]|0)<>0]|0)<>1]|0;l=d[E+(o<<2)+1>>0]|0;g=f>>>l;f=j-l|0;j=d[E+(o<<2)>>0]|0;if(!(j&16))do{if(j&64){I=54;break a}j=(g&(1<>1]|0;o=d[E+(j<<2)+1>>0]|0;g=g>>>o;f=f-o|0;j=d[E+(j<<2)>>0]|0}while((j&16|0)==0);n=k&65535;j=j&15;if(f>>>0>>0){m=h+1|0;g=((d[m>>0]|0)<>>0>>0){h=h+2|0;f=f+16|0;g=((d[h>>0]|0)<>>j;f=f-j|0;n=i;k=n-q|0;if(o>>>0<=k>>>0){n=2-p|0;n=p+(n>>>0>4294967293?n:-3)|0;n=n-((n>>>0)%3|0)|0;m=n-o|0;k=i+(0-o)|0;j=p;l=i;do{a[l+1>>0]=a[k+1>>0]|0;a[l+2>>0]=a[k+2>>0]|0;k=k+3|0;l=l+3|0;a[l>>0]=a[k>>0]|0;j=j+-3|0}while(j>>>0>2);k=p+-3|0;if((k|0)==(n|0)){i=i+(n+3)|0;break}j=i+(n+4)|0;a[j>>0]=a[i+(m+4)>>0]|0;if((k-n|0)>>>0<=1){i=j;break}p=i+(n+5)|0;a[p>>0]=a[i+(m+5)>>0]|0;i=p;break}k=o-k|0;if(k>>>0>A>>>0?(c[r>>2]|0)!=0:0){I=22;break a}do if(t){l=C+(u-k)|0;if(p>>>0>k>>>0){j=p-k|0;n=o-n|0;m=l;l=i;do{m=m+1|0;l=l+1|0;a[l>>0]=a[m>>0]|0;k=k+-1|0}while((k|0)!=0);m=i+(x+n+(1-o))|0;i=i+(q+n)|0}else{m=l;j=p}}else{if(k>>>0<=B>>>0){l=C+(w-k)|0;if(p>>>0<=k>>>0){m=l;j=p;break}j=p-k|0;n=o-n|0;m=l;l=i;do{m=m+1|0;l=l+1|0;a[l>>0]=a[m>>0]|0;k=k+-1|0}while((k|0)!=0);m=i+(x+n+(1-o))|0;i=i+(q+n)|0;break}m=C+(v-k)|0;k=k-B|0;if(p>>>0>k>>>0){j=p-k|0;n=o-n|0;l=i;do{m=m+1|0;l=l+1|0;a[l>>0]=a[m>>0]|0;k=k+-1|0}while((k|0)!=0);l=i+(y+n)|0;if(j>>>0>B>>>0){k=i+(z+n)|0;m=s;n=B;while(1){m=m+1|0;i=k+2|0;a[i>>0]=a[m>>0]|0;n=n+-1|0;if(!n)break;else{k=l;l=i}}m=k+(2-o)|0;j=j-B|0}else{m=s;i=l}}else j=p}while(0);if(j>>>0>2){o=j+-3|0;k=(o>>>0)%3|0;o=o-k|0;n=m;l=i;do{a[l+1>>0]=a[n+1>>0]|0;a[l+2>>0]=a[n+2>>0]|0;n=n+3|0;l=l+3|0;a[l>>0]=a[n>>0]|0;j=j+-3|0}while(j>>>0>2);m=m+(o+3)|0;j=i+(o+3)|0}else{k=j;j=i}if(k){i=j+1|0;a[i>>0]=a[m+1>>0]|0;if(k>>>0>1){i=j+2|0;a[i>>0]=a[m+2>>0]|0}}else i=j}else{k=k&255;I=7}while(0);if((I|0)==7){I=0;i=i+1|0;a[i>>0]=k}if(!(h>>>0>>0&i>>>0>>0)){k=f;j=h;break}}do if((I|0)==22){c[e+24>>2]=286736;c[H>>2]=29;k=f;j=h}else if((I|0)==54){c[e+24>>2]=286712;c[H>>2]=29;k=f;j=h}else if((I|0)==57)if(!(j&32)){c[e+24>>2]=286680;c[H>>2]=29;k=f;j=h;break}else{c[H>>2]=11;k=f;j=h;break}while(0);I=k>>>3;f=j+(0-I)|0;h=k-(I<<3)|0;g=(1<>2]=j+(1-I);c[K>>2]=i+1;if(f>>>0>>0)f=J-f|0;else f=J-f|0;c[P>>2]=f+5;if(i>>>0>>0){e=M-i|0;e=e+257|0;c[L>>2]=e;c[N>>2]=g;c[O>>2]=h;return}else{e=M-i|0;e=e+257|0;c[L>>2]=e;c[N>>2]=g;c[O>>2]=h;return}}function yH(a){a=a|0;var b=0,d=0;if(!a){a=-2;return a|0}d=c[a+28>>2]|0;if(!d){a=-2;return a|0}c[d+40>>2]=0;c[d+44>>2]=0;c[d+48>>2]=0;c[d+28>>2]=0;c[a+20>>2]=0;c[a+8>>2]=0;c[a+24>>2]=0;b=c[d+8>>2]|0;if(b)c[a+48>>2]=b&1;c[d>>2]=0;c[d+4>>2]=0;c[d+12>>2]=0;c[d+20>>2]=32768;c[d+32>>2]=0;c[d+56>>2]=0;c[d+60>>2]=0;a=d+1328|0;c[d+108>>2]=a;c[d+80>>2]=a;c[d+76>>2]=a;c[d+7104>>2]=1;c[d+7108>>2]=-1;a=0;return a|0}function zH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!d){f=-6;return f|0}if((a[d>>0]|0)!=49|(e|0)!=56){f=-6;return f|0}if(!b){f=-2;return f|0}f=b+24|0;c[f>>2]=0;e=b+32|0;d=c[e>>2]|0;if(!d){c[e>>2]=156;c[b+40>>2]=0;d=156}e=b+36|0;if(!(c[e>>2]|0))c[e>>2]=93;e=Hd[d&255](c[b+40>>2]|0,1,7116)|0;if(!e){f=-4;return f|0}c[b+28>>2]=e;c[e+52>>2]=0;c[e+8>>2]=1;c[e+36>>2]=15;c[e+40>>2]=0;c[e+44>>2]=0;c[e+48>>2]=0;c[e+28>>2]=0;c[b+20>>2]=0;c[b+8>>2]=0;c[f>>2]=0;c[b+48>>2]=1;c[e>>2]=0;c[e+4>>2]=0;c[e+12>>2]=0;c[e+20>>2]=32768;c[e+32>>2]=0;c[e+56>>2]=0;c[e+60>>2]=0;f=e+1328|0;c[e+108>>2]=f;c[e+80>>2]=f;c[e+76>>2]=f;c[e+7104>>2]=1;c[e+7108>>2]=-1;f=0;return f|0}function AH(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;ya=i;i=i+16|0;ga=ya;if(!f){f=-2;i=ya;return f|0}ta=c[f+28>>2]|0;if(!ta){f=-2;i=ya;return f|0}wa=f+12|0;h=c[wa>>2]|0;if(!h){f=-2;i=ya;return f|0}j=c[f>>2]|0;if((j|0)==0?(c[f+4>>2]|0)!=0:0){f=-2;i=ya;return f|0}k=c[ta>>2]|0;if((k|0)==11){c[ta>>2]=12;k=12}sa=f+16|0;o=c[sa>>2]|0;oa=f+4|0;ua=c[oa>>2]|0;pa=ta+56|0;xa=ta+60|0;ka=ta+8|0;qa=ta+24|0;x=ga+1|0;na=ta+16|0;y=ta+32|0;z=f+24|0;A=ta+36|0;B=ta+20|0;ra=f+48|0;C=ta+64|0;D=ta+12|0;E=(g+-5|0)>>>0<2;va=ta+4|0;F=ta+76|0;G=ta+84|0;H=ta+80|0;I=ta+88|0;J=(g|0)==6;K=ta+7108|0;L=ta+72|0;M=ta+7112|0;N=ta+68|0;O=ta+44|0;P=ta+7104|0;Q=ta+48|0;R=ta+52|0;ia=ta+40|0;la=f+20|0;ma=ta+28|0;S=ga+2|0;T=ga+3|0;U=ta+104|0;V=ta+96|0;W=ta+100|0;X=ta+624|0;Y=ta+1328|0;Z=ta+108|0;_=ta+112|0;$=ta+752|0;aa=ta+92|0;n=c[xa>>2]|0;m=ua;l=c[pa>>2]|0;ha=o;p=0;a:while(1){b:do switch(k|0){case 18:{r=c[U>>2]|0;w=164;break}case 1:{if(n>>>0<16){q=j;while(1){if(!m){m=0;k=ha;j=q;break a}m=m+-1|0;j=q+1|0;l=(d[q>>0]<>>0<16)q=j;else break}}c[na>>2]=l;if((l&255|0)!=8){c[z>>2]=286312;c[ta>>2]=29;q=ha;break b}if(l&57344){c[z>>2]=286368;c[ta>>2]=29;q=ha;break b}k=c[y>>2]|0;if(k)c[k>>2]=l>>>8&1;if(l&512){a[ga>>0]=l;a[x>>0]=l>>>8;c[qa>>2]=qH(c[qa>>2]|0,ga,2)|0}c[ta>>2]=2;n=0;l=0;w=47;break}case 23:{k=c[L>>2]|0;w=236;break}case 2:{if(n>>>0<32)w=47;else w=49;break}case 21:{r=c[L>>2]|0;w=217;break}case 9:{if(n>>>0<32){q=j;while(1){if(!m){m=0;k=ha;j=q;break a}m=m+-1|0;j=q+1|0;l=(d[q>>0]<>>0>=32)break;else q=j}}n=Dfa(l|0)|0;c[qa>>2]=n;c[ra>>2]=n;c[ta>>2]=10;n=0;l=0;w=121;break}case 16:{if(n>>>0<14){q=j;while(1){if(!m){m=0;k=ha;j=q;break a}m=m+-1|0;j=q+1|0;l=(d[q>>0]<>>0<14)q=j;else break}}u=(l&31)+257|0;c[V>>2]=u;v=(l>>>5&31)+1|0;c[W>>2]=v;c[aa>>2]=(l>>>10&15)+4;l=l>>>14;n=n+-14|0;if(u>>>0>286|v>>>0>30){c[z>>2]=286480;c[ta>>2]=29;q=ha;break b}else{c[U>>2]=0;c[ta>>2]=17;k=0;w=155;break b}}case 0:{r=c[ka>>2]|0;if(!r){c[ta>>2]=12;q=ha;break b}if(n>>>0<16){q=j;while(1){if(!m){m=0;k=ha;j=q;break a}m=m+-1|0;j=q+1|0;l=(d[q>>0]<>>0<16)q=j;else break}}if((r&2|0)!=0&(l|0)==35615){c[qa>>2]=qH(0,0,0)|0;a[ga>>0]=31;a[x>>0]=-117;c[qa>>2]=qH(c[qa>>2]|0,ga,2)|0;c[ta>>2]=1;n=0;l=0;q=ha;break b}c[na>>2]=0;k=c[y>>2]|0;if(k)c[k+48>>2]=-1;if((r&1|0)!=0?((((l<<8&65280)+(l>>>8)|0)>>>0)%31|0|0)==0:0){if((l&15|0)!=8){c[z>>2]=286312;c[ta>>2]=29;q=ha;break b}r=l>>>4;n=n+-4|0;k=(r&15)+8|0;q=c[A>>2]|0;if(q){if(k>>>0>q>>>0){c[z>>2]=286344;c[ta>>2]=29;l=r;q=ha;break b}}else c[A>>2]=k;c[B>>2]=1<>2]=n;c[ra>>2]=n;c[ta>>2]=l>>>12&2^11;n=0;l=0;q=ha;break b}c[z>>2]=286288;c[ta>>2]=29;q=ha;break}case 4:{w=62;break}case 5:{w=73;break}case 3:{if(n>>>0<16){q=j;w=55}else w=57;break}case 7:{w=96;break}case 6:{w=83;break}case 12:{w=125;break}case 14:{w=143;break}case 11:{w=124;break}case 13:{v=n&7;l=l>>>v;n=n-v|0;if(n>>>0<32){q=j;while(1){if(!m){m=0;k=ha;j=q;break a}m=m+-1|0;j=q+1|0;l=(d[q>>0]<>>0<32)q=j;else break}}k=l&65535;if((k|0)==(l>>>16^65535|0)){c[C>>2]=k;c[ta>>2]=14;if(J){n=0;l=0;k=ha;break a}else{n=0;l=0;w=143;break b}}else{c[z>>2]=286448;c[ta>>2]=29;q=ha;break b}}case 8:{w=109;break}case 15:{w=144;break}case 10:{w=121;break}case 17:{k=c[U>>2]|0;if(k>>>0<(c[aa>>2]|0)>>>0)w=155;else w=154;break}case 22:{w=224;break}case 19:{w=198;break}case 20:{w=199;break}case 24:{w=242;break}case 26:{if(c[ka>>2]|0){if(n>>>0<32){q=j;while(1){if(!m){m=0;k=ha;j=q;break a}m=m+-1|0;j=q+1|0;l=(d[q>>0]<>>0<32)q=j;else break}}q=o-ha|0;c[la>>2]=(c[la>>2]|0)+q;c[ma>>2]=(c[ma>>2]|0)+q;if((o|0)!=(ha|0)){k=c[qa>>2]|0;o=h+(0-q)|0;if(!(c[na>>2]|0))k=pH(k,o,q)|0;else k=qH(k,o,q)|0;c[qa>>2]=k;c[ra>>2]=k}if(!(c[na>>2]|0))k=Dfa(l|0)|0;else k=l;if((k|0)==(c[qa>>2]|0)){n=0;l=0;o=ha}else{c[z>>2]=286768;c[ta>>2]=29;q=ha;o=ha;break b}}c[ta>>2]=27;w=273;break}case 28:{k=ha;p=1;break a}case 25:{if(!ha){k=ha;break a}a[h>>0]=c[C>>2];c[ta>>2]=20;q=ha+-1|0;h=h+1|0;break}case 29:{k=ha;w=281;break a}case 27:{w=273;break}case 30:{h=-4;w=298;break a}default:{w=297;break a}}while(0);if((w|0)==47)while(1){w=0;if(!m){m=0;k=ha;break a}m=m+-1|0;k=j+1|0;l=(d[j>>0]<>>0>=32){j=k;w=49;break}else{j=k;w=47}}else if((w|0)==121){if(!(c[D>>2]|0)){k=ha;w=122;break}w=pH(0,0,0)|0;c[qa>>2]=w;c[ra>>2]=w;c[ta>>2]=11;w=124}else if((w|0)==143){c[ta>>2]=15;w=144}else if((w|0)==155)while(1){w=0;if(n>>>0<3){q=j;while(1){if(!m){m=0;k=ha;j=q;break a}m=m+-1|0;j=q+1|0;l=(d[q>>0]<>>0<3)q=j;else break}}c[U>>2]=k+1;b[ta+(e[286248+(k<<1)>>1]<<1)+112>>1]=l&7;l=l>>>3;n=n+-3|0;k=c[U>>2]|0;if(k>>>0<(c[aa>>2]|0)>>>0)w=155;else{w=154;break}}else if((w|0)==273){w=0;if(!(c[ka>>2]|0)){k=ha;w=280;break}if(!(c[na>>2]|0)){k=ha;w=280;break}if(n>>>0<32)while(1){if(!m){m=0;k=ha;break a}m=m+-1|0;k=j+1|0;l=(d[j>>0]<>>0<32)j=k;else{j=k;break}}if((l|0)==(c[ma>>2]|0)){n=0;l=0;k=ha;w=280;break}c[z>>2]=286792;c[ta>>2]=29;q=ha}do if((w|0)==49){k=c[y>>2]|0;if(k)c[k+4>>2]=l;if(c[na>>2]&512){a[ga>>0]=l;a[x>>0]=l>>>8;a[S>>0]=l>>>16;a[T>>0]=l>>>24;c[qa>>2]=qH(c[qa>>2]|0,ga,4)|0}c[ta>>2]=3;n=0;l=0;q=j;w=55}else if((w|0)==124){w=0;if(E){k=ha;break a}else w=125}else if((w|0)==144){w=0;k=c[C>>2]|0;if(!k){c[ta>>2]=11;q=ha;break}k=k>>>0>m>>>0?m:k;k=k>>>0>ha>>>0?ha:k;if(!k){k=ha;break a}qfa(h|0,j|0,k|0)|0;c[C>>2]=(c[C>>2]|0)-k;m=m-k|0;q=ha-k|0;j=j+k|0;h=h+k|0}else if((w|0)==154){w=0;if(k>>>0<19){do{b[ta+(e[286248+(k<<1)>>1]<<1)+112>>1]=0;k=k+1|0}while((k|0)!=19);c[U>>2]=19}c[Z>>2]=Y;c[F>>2]=Y;c[G>>2]=7;p=DH(0,_,19,Z,G,$)|0;if(!p){c[U>>2]=0;c[ta>>2]=18;r=0;p=0;w=164;break}else{c[z>>2]=286520;c[ta>>2]=29;q=ha;break}}while(0);c:do if((w|0)==55)while(1){w=0;if(!m){m=0;k=ha;j=q;break a}m=m+-1|0;j=q+1|0;l=(d[q>>0]<>>0>=16){w=57;break}else{q=j;w=55}}else if((w|0)==125){w=0;if(c[va>>2]|0){q=n&7;c[ta>>2]=26;n=n-q|0;l=l>>>q;q=ha;break}if(n>>>0<3)while(1){if(!m){m=0;k=ha;break a}m=m+-1|0;k=j+1|0;l=(d[j>>0]<>>0<3)j=k;else{j=k;break}}c[va>>2]=l&1;k=l>>>1&3;if((k|0)==2)c[ta>>2]=16;else if(!k)c[ta>>2]=13;else if((k|0)==1){c[F>>2]=286816;c[G>>2]=9;c[H>>2]=288864;c[I>>2]=5;c[ta>>2]=19;if(J){k=ha;w=133;break a}}else if((k|0)==3){c[z>>2]=286424;c[ta>>2]=29}n=n+-3|0;l=l>>>3;q=ha}else if((w|0)==164){w=0;k=c[V>>2]|0;q=c[W>>2]|0;do if(r>>>0<(q+k|0)>>>0){v=r;d:while(1){t=(1<>2])+-1|0;s=t&l;u=c[F>>2]|0;r=d[u+(s<<2)+1>>0]|0;if(n>>>0>>0){r=j;while(1){if(!m){m=0;k=ha;j=r;break a}m=m+-1|0;j=r+1|0;l=(d[r>>0]<>0]|0;if(n>>>0>>0)r=j;else{t=r;break}}}else t=r;r=b[u+(s<<2)+2>>1]|0;e:do if((r&65535)<16){c[U>>2]=v+1;b[ta+(v<<1)+112>>1]=r;n=n-t|0;l=l>>>t}else{if(r<<16>>16==17){s=t+3|0;if(n>>>0>>0){r=j;while(1){if(!m){m=0;k=ha;j=r;break a}m=m+-1|0;j=r+1|0;l=(d[r>>0]<>>0>>0)r=j;else break}}l=l>>>t;n=-3-t+n|0;s=(l&7)+3|0;l=l>>>3;r=0}else if(r<<16>>16==16){s=t+2|0;if(n>>>0>>0)while(1){if(!m){m=0;k=ha;break a}m=m+-1|0;r=j+1|0;l=(d[j>>0]<>>0>>0)j=r;else{j=r;break}}l=l>>>t;n=n-t|0;if(!v){w=178;break d}n=n+-2|0;s=(l&3)+3|0;l=l>>>2;r=b[ta+(v+-1<<1)+112>>1]|0}else{s=t+7|0;if(n>>>0>>0){r=j;while(1){if(!m){m=0;k=ha;j=r;break a}m=m+-1|0;j=r+1|0;l=(d[r>>0]<>>0>>0)r=j;else break}}l=l>>>t;n=-7-t+n|0;s=(l&127)+11|0;l=l>>>7;r=0}if((v+s|0)>>>0>(q+k|0)>>>0){w=187;break d}else{q=v;k=s}while(1){k=k+-1|0;c[U>>2]=q+1;b[ta+(q<<1)+112>>1]=r;if(!k)break e;q=c[U>>2]|0}}while(0);v=c[U>>2]|0;k=c[V>>2]|0;q=c[W>>2]|0;if(v>>>0>=(q+k|0)>>>0){w=190;break}}if((w|0)==178){w=0;c[z>>2]=286552;c[ta>>2]=29;q=ha;break c}else if((w|0)==187){w=0;c[z>>2]=286552;c[ta>>2]=29;q=ha;break c}else if((w|0)==190){w=0;if((c[ta>>2]|0)==29){q=ha;break c}else break}}while(0);if(!(b[X>>1]|0)){c[z>>2]=286584;c[ta>>2]=29;q=ha;break}c[Z>>2]=Y;c[F>>2]=Y;c[G>>2]=9;p=DH(1,_,k,Z,G,$)|0;if(p){c[z>>2]=286624;c[ta>>2]=29;q=ha;break}c[H>>2]=c[Z>>2];c[I>>2]=6;p=DH(2,ta+(c[V>>2]<<1)+112|0,c[W>>2]|0,Z,I,$)|0;if(!p){c[ta>>2]=19;if(J){k=ha;p=0;break a}else{p=0;w=198;break}}else{c[z>>2]=286656;c[ta>>2]=29;q=ha;break}}while(0);if((w|0)==57){k=c[y>>2]|0;if(k){c[k+8>>2]=l&255;c[k+12>>2]=l>>>8}if(c[na>>2]&512){a[ga>>0]=l;a[x>>0]=l>>>8;c[qa>>2]=qH(c[qa>>2]|0,ga,2)|0}c[ta>>2]=4;n=0;l=0;w=62}else if((w|0)==198){c[ta>>2]=20;w=199}do if((w|0)==62){w=0;r=c[na>>2]|0;if(!(r&1024)){k=c[y>>2]|0;if(k)c[k+16>>2]=0}else{if(n>>>0<16){q=j;while(1){if(!m){m=0;k=ha;j=q;break a}m=m+-1|0;j=q+1|0;l=(d[q>>0]<>>0>=16)break;else q=j}}c[C>>2]=l;k=c[y>>2]|0;if(k)c[k+20>>2]=l;if(!(r&512)){n=0;l=0}else{a[ga>>0]=l;a[x>>0]=l>>>8;c[qa>>2]=qH(c[qa>>2]|0,ga,2)|0;n=0;l=0}}c[ta>>2]=5;w=73}else if((w|0)==199){w=0;if(m>>>0>5&ha>>>0>257){c[wa>>2]=h;c[sa>>2]=ha;c[f>>2]=j;c[oa>>2]=m;c[pa>>2]=l;c[xa>>2]=n;xH(f,o);h=c[wa>>2]|0;k=c[sa>>2]|0;j=c[f>>2]|0;m=c[oa>>2]|0;l=c[pa>>2]|0;n=c[xa>>2]|0;if((c[ta>>2]|0)!=11){q=k;break}c[K>>2]=-1;q=k;break}c[K>>2]=0;s=(1<>2])+-1|0;r=s&l;u=c[F>>2]|0;k=a[u+(r<<2)+1>>0]|0;q=k&255;if(q>>>0>n>>>0){q=j;while(1){if(!m){m=0;k=ha;j=q;break a}m=m+-1|0;j=q+1|0;l=(d[q>>0]<>0]|0;q=k&255;if(q>>>0>n>>>0)q=j;else break}}s=a[u+(r<<2)>>0]|0;t=b[u+(r<<2)+2>>1]|0;r=s&255;if(s<<24>>24!=0&(r&240|0)==0){t=t&65535;s=(1<>>q)+t|0;k=a[u+(r<<2)+1>>0]|0;if(((k&255)+q|0)>>>0>n>>>0){r=j;while(1){if(!m){m=0;k=ha;j=r;break a}m=m+-1|0;j=r+1|0;l=(d[r>>0]<>>q)+t|0;k=a[u+(r<<2)+1>>0]|0;if(((k&255)+q|0)>>>0>n>>>0)r=j;else break}}t=b[u+(r<<2)+2>>1]|0;s=a[u+(r<<2)>>0]|0;c[K>>2]=q;r=q;n=n-q|0;l=l>>>q}else r=0;k=k&255;l=l>>>k;n=n-k|0;c[K>>2]=r+k;c[C>>2]=t&65535;k=s&255;if(!(s<<24>>24)){c[ta>>2]=25;q=ha;break}if(k&32){c[K>>2]=-1;c[ta>>2]=11;q=ha;break}if(!(k&64)){r=k&15;c[L>>2]=r;c[ta>>2]=21;w=217;break}else{c[z>>2]=286680;c[ta>>2]=29;q=ha;break}}while(0);if((w|0)==73){w=0;k=c[na>>2]|0;if(k&1024){q=c[C>>2]|0;s=q>>>0>m>>>0?m:q;if(s){r=c[y>>2]|0;if((r|0)!=0?(ba=c[r+16>>2]|0,(ba|0)!=0):0){k=(c[r+20>>2]|0)-q|0;v=c[r+24>>2]|0;qfa(ba+k|0,j|0,((k+s|0)>>>0>v>>>0?v-k|0:s)|0)|0;k=c[na>>2]|0}if(k&512)c[qa>>2]=qH(c[qa>>2]|0,j,s)|0;q=(c[C>>2]|0)-s|0;c[C>>2]=q;m=m-s|0;j=j+s|0}if(q){k=ha;break}}c[C>>2]=0;c[ta>>2]=6;w=83}else if((w|0)==217){w=0;if(!r)k=c[C>>2]|0;else{if(n>>>0>>0){q=j;while(1){if(!m){m=0;k=ha;j=q;break a}m=m+-1|0;j=q+1|0;l=(d[q>>0]<>>0>>0)q=j;else break}}k=(c[C>>2]|0)+((1<>2]=k;c[K>>2]=(c[K>>2]|0)+r;n=n-r|0;l=l>>>r}c[M>>2]=k;c[ta>>2]=22;w=224}do if((w|0)==83){w=0;if(!(c[na>>2]&2048)){k=c[y>>2]|0;if(k)c[k+28>>2]=0}else{if(!m){m=0;k=ha;break a}else k=0;while(1){r=k+1|0;k=a[j+k>>0]|0;q=c[y>>2]|0;if(((q|0)!=0?(ca=c[q+28>>2]|0,(ca|0)!=0):0)?(da=c[C>>2]|0,da>>>0<(c[q+32>>2]|0)>>>0):0){c[C>>2]=da+1;a[ca+da>>0]=k}k=k<<24>>24!=0;if(k&m>>>0>r>>>0)k=r;else{q=r;break}}if(c[na>>2]&512)c[qa>>2]=qH(c[qa>>2]|0,j,q)|0;m=m-q|0;j=j+q|0;if(k){k=ha;break a}}c[C>>2]=0;c[ta>>2]=7;w=96}else if((w|0)==224){w=0;s=(1<>2])+-1|0;r=s&l;u=c[H>>2]|0;k=a[u+(r<<2)+1>>0]|0;q=k&255;if(q>>>0>n>>>0){q=j;while(1){if(!m){m=0;k=ha;j=q;break a}m=m+-1|0;j=q+1|0;l=(d[q>>0]<>0]|0;q=k&255;if(q>>>0>n>>>0)q=j;else break}}s=a[u+(r<<2)>>0]|0;t=b[u+(r<<2)+2>>1]|0;r=s&255;if(!(r&240)){t=t&65535;s=(1<>>q)+t|0;k=a[u+(r<<2)+1>>0]|0;if(((k&255)+q|0)>>>0>n>>>0){r=j;while(1){if(!m){m=0;k=ha;j=r;break a}m=m+-1|0;j=r+1|0;l=(d[r>>0]<>>q)+t|0;k=a[u+(r<<2)+1>>0]|0;if(((k&255)+q|0)>>>0>n>>>0)r=j;else break}}t=b[u+(r<<2)+2>>1]|0;s=a[u+(r<<2)>>0]|0;r=(c[K>>2]|0)+q|0;c[K>>2]=r;n=n-q|0;l=l>>>q}else r=c[K>>2]|0;k=k&255;l=l>>>k;n=n-k|0;c[K>>2]=r+k;k=s&255;if(!(k&64)){c[N>>2]=t&65535;k=k&15;c[L>>2]=k;c[ta>>2]=23;w=236;break}else{c[z>>2]=286712;c[ta>>2]=29;q=ha;break}}while(0);if((w|0)==96){w=0;if(!(c[na>>2]&4096)){k=c[y>>2]|0;if(k)c[k+36>>2]=0}else{if(!m){m=0;k=ha;break}else k=0;while(1){r=k+1|0;k=a[j+k>>0]|0;q=c[y>>2]|0;if(((q|0)!=0?(ea=c[q+36>>2]|0,(ea|0)!=0):0)?(fa=c[C>>2]|0,fa>>>0<(c[q+40>>2]|0)>>>0):0){c[C>>2]=fa+1;a[ea+fa>>0]=k}k=k<<24>>24!=0;if(k&m>>>0>r>>>0)k=r;else{q=r;break}}if(c[na>>2]&512)c[qa>>2]=qH(c[qa>>2]|0,j,q)|0;m=m-q|0;j=j+q|0;if(k){k=ha;break}}c[ta>>2]=8;w=109}else if((w|0)==236){w=0;if(k){if(n>>>0>>0){q=j;while(1){if(!m){m=0;k=ha;j=q;break a}m=m+-1|0;j=q+1|0;l=(d[q>>0]<>>0>>0)q=j;else break}}c[N>>2]=(c[N>>2]|0)+((1<>2]=(c[K>>2]|0)+k;n=n-k|0;l=l>>>k}c[ta>>2]=24;w=242}do if((w|0)==109){w=0;r=c[na>>2]|0;if(r&512){if(n>>>0<16){q=j;while(1){if(!m){m=0;k=ha;j=q;break a}m=m+-1|0;j=q+1|0;l=(d[q>>0]<>>0<16)q=j;else break}}if((l|0)==(c[qa>>2]&65535|0)){n=0;l=0}else{c[z>>2]=286400;c[ta>>2]=29;q=ha;break}}k=c[y>>2]|0;if(k){c[k+44>>2]=r>>>9&1;c[k+48>>2]=1}q=qH(0,0,0)|0;c[qa>>2]=q;c[ra>>2]=q;c[ta>>2]=11;q=ha}else if((w|0)==242){w=0;if(!ha){k=ha;break a}k=o-ha|0;q=c[N>>2]|0;if(q>>>0>k>>>0){k=q-k|0;if(k>>>0>(c[O>>2]|0)>>>0?(c[P>>2]|0)!=0:0){c[z>>2]=286736;c[ta>>2]=29;q=ha;break}q=c[Q>>2]|0;if(k>>>0>q>>>0){k=k-q|0;r=k;k=(c[R>>2]|0)+((c[ia>>2]|0)-k)|0}else{r=k;k=(c[R>>2]|0)+(q-k)|0}v=c[C>>2]|0;s=v;r=r>>>0>v>>>0?v:r}else{r=c[C>>2]|0;s=r;k=h+(0-q)|0}t=r>>>0>ha>>>0?ha:r;c[C>>2]=s-t;q=~ha;s=~r;s=q>>>0>s>>>0?q:s;r=t;q=h;while(1){a[q>>0]=a[k>>0]|0;r=r+-1|0;if(!r)break;else{k=k+1|0;q=q+1|0}}k=ha-t|0;h=h+~s|0;if(!(c[C>>2]|0)){c[ta>>2]=20;q=k}else q=k}while(0);k=c[ta>>2]|0;ha=q}if((w|0)==122){c[wa>>2]=h;c[sa>>2]=k;c[f>>2]=j;c[oa>>2]=m;c[pa>>2]=l;c[xa>>2]=n;f=2;i=ya;return f|0}else if((w|0)==133){n=n+-3|0;l=l>>>3}else if((w|0)==280){c[ta>>2]=28;p=1}else if((w|0)==281)p=-3;else if((w|0)==297){f=-2;i=ya;return f|0}else if((w|0)==298){i=ya;return h|0}c[wa>>2]=h;c[sa>>2]=k;c[f>>2]=j;c[oa>>2]=m;c[pa>>2]=l;c[xa>>2]=n;if(!(c[ia>>2]|0)){if(((o|0)!=(k|0)?(ja=c[ta>>2]|0,ja>>>0<29):0)?ja>>>0<26|(g|0)!=4:0)w=286}else w=286;do if((w|0)==286){if(!(MR(f,h,o-k|0)|0)){m=c[oa>>2]|0;k=c[sa>>2]|0;break}c[ta>>2]=30;f=-4;i=ya;return f|0}while(0);j=o-k|0;pa=f+8|0;c[pa>>2]=ua-m+(c[pa>>2]|0);c[la>>2]=(c[la>>2]|0)+j;c[ma>>2]=(c[ma>>2]|0)+j;if((c[ka>>2]|0)!=0&(o|0)!=(k|0)){l=c[qa>>2]|0;h=(c[wa>>2]|0)+(0-j)|0;if(!(c[na>>2]|0))h=pH(l,h,j)|0;else h=qH(l,h,j)|0;c[qa>>2]=h;c[ra>>2]=h}h=c[ta>>2]|0;if((h|0)==19)j=256;else j=(h|0)==14?256:0;c[f+44>>2]=((c[va>>2]|0)!=0?64:0)+(c[xa>>2]|0)+((h|0)==11?128:0)+j;f=((ua|0)==(m|0)&(o|0)==(k|0)|(g|0)==4)&(p|0)==0?-5:p;i=ya;return f|0}function BH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(!a){g=-2;return g|0}g=a+28|0;b=c[g>>2]|0;if(!b){g=-2;return g|0}e=a+36|0;d=c[e>>2]|0;if(!d){g=-2;return g|0}f=c[b+52>>2]|0;a=a+40|0;if(f){Cd[d&255](c[a>>2]|0,f);d=c[e>>2]|0;b=c[g>>2]|0}Cd[d&255](c[a>>2]|0,b);c[g>>2]=0;g=0;return g|0}function CH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;m=p;if(!b){b=-2;i=p;return b|0}o=c[b+28>>2]|0;if(!o){b=-2;i=p;return b|0}n=b+4|0;d=c[n>>2]|0;if((d|0)==0?(c[o+60>>2]|0)>>>0<8:0){b=-5;i=p;return b|0}if((c[o>>2]|0)==31)e=c[o+104>>2]|0;else{c[o>>2]=31;j=o+60|0;g=c[j>>2]|0;k=o+56|0;d=c[k>>2]<<(g&7);c[k>>2]=d;g=g&-8;c[j>>2]=g;if(g>>>0>7){f=7-g|0;f=(g+(f>>>0>4294967288?f:-8)|0)>>>3;l=g+-8-(f<<3)|0;e=0;while(1){a[m+e>>0]=d;d=d>>>8;g=g+-8|0;if(g>>>0<=7)break;else e=e+1|0}h=f+1|0;c[k>>2]=d;c[j>>2]=l;d=o+104|0;c[d>>2]=0;e=0;f=0;do{g=a[m+f>>0]|0;if((g&255|0)==((e>>>0<2?0:255)|0))e=e+1|0;else e=g<<24>>24==0?4-e|0:0;f=f+1|0}while(f>>>0>>0&e>>>0<4)}else{d=o+104|0;c[d>>2]=0;e=0}c[d>>2]=e;d=c[n>>2]|0}h=o+104|0;j=c[b>>2]|0;if((d|0)!=0&e>>>0<4){f=0;while(1){g=a[j+f>>0]|0;if((g&255|0)==((e>>>0<2?0:255)|0))e=e+1|0;else e=g<<24>>24==0?4-e|0:0;g=f+1|0;if(g>>>0>>0&e>>>0<4)f=g;else{d=g;break}}}else d=0;c[h>>2]=e;c[n>>2]=(c[n>>2]|0)-d;c[b>>2]=j+d;h=b+8|0;g=(c[h>>2]|0)+d|0;c[h>>2]=g;if((e|0)!=4){b=-3;i=p;return b|0}d=b+20|0;e=c[d>>2]|0;c[o+40>>2]=0;c[o+44>>2]=0;c[o+48>>2]=0;c[o+28>>2]=0;c[d>>2]=0;c[h>>2]=0;c[b+24>>2]=0;f=c[o+8>>2]|0;if(f)c[b+48>>2]=f&1;c[o+4>>2]=0;c[o+12>>2]=0;c[o+20>>2]=32768;c[o+32>>2]=0;c[o+56>>2]=0;c[o+60>>2]=0;b=o+1328|0;c[o+108>>2]=b;c[o+80>>2]=b;c[o+76>>2]=b;c[o+7104>>2]=1;c[o+7108>>2]=-1;c[h>>2]=g;c[d>>2]=e;c[o>>2]=11;b=0;i=p;return b|0}function DH(d,f,g,h,j,k){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;N=i;i=i+64|0;H=N+32|0;q=N;l=H+0|0;m=l+32|0;do{b[l>>1]=0;l=l+2|0}while((l|0)<(m|0));p=(g|0)==0;if(!p){l=0;do{E=H+(e[f+(l<<1)>>1]<<1)|0;b[E>>1]=(b[E>>1]|0)+1<<16>>16;l=l+1|0}while((l|0)!=(g|0))}l=c[j>>2]|0;m=15;while(1){if(b[H+(m<<1)>>1]|0){J=m;break}m=m+-1|0;if(!m){M=7;break}}if((M|0)==7){k=c[h>>2]|0;c[h>>2]=k+4;a[k>>0]=64;a[k+1>>0]=1;b[k+2>>1]=0;k=c[h>>2]|0;c[h>>2]=k+4;a[k>>0]=64;a[k+1>>0]=1;b[k+2>>1]=0;c[j>>2]=1;k=0;i=N;return k|0}n=l>>>0>J>>>0?J:l;a:do if(J>>>0>1){m=1;while(1){l=m+1|0;if(b[H+(m<<1)>>1]|0){r=m;break a}if(l>>>0>>0)m=l;else{r=l;break}}}else r=1;while(0);E=n>>>0>>0?r:n;l=1;m=1;while(1){l=(l<<1)-(e[H+(m<<1)>>1]|0)|0;m=m+1|0;if((l|0)<0){F=-1;M=49;break}if(m>>>0>=16){o=l;break}}if((M|0)==49){i=N;return F|0}if((o|0)>0?(d|0)==0|(J|0)!=1:0){k=-1;i=N;return k|0}b[q+2>>1]=0;l=0;m=1;do{l=(e[H+(m<<1)>>1]|0)+(l&65535)|0;m=m+1|0;b[q+(m<<1)>>1]=l}while((m|0)!=15);if(!p){m=0;do{l=b[f+(m<<1)>>1]|0;if(l<<16>>16){C=q+((l&65535)<<1)|0;D=b[C>>1]|0;b[C>>1]=D+1<<16>>16;b[k+((D&65535)<<1)>>1]=m}m=m+1|0}while((m|0)!=(g|0))}if(!d){l=0;z=0;B=k;C=19;D=k}else if((d|0)==1)if(E>>>0>9){k=1;i=N;return k|0}else{l=0;z=1;B=288992+-514|0;C=256;D=289056+-514|0}else{l=(d|0)==2;if(l&E>>>0>9){k=1;i=N;return k|0}else{z=0;B=289120;C=-1;D=289184}}d=1<>2]|0;o=0;b:while(1){v=1<>1]|0;n=o&65535;if((n|0)>=(C|0))if((n|0)>(C|0)){q=b[D+(n<<1)>>1]&255;o=b[B+(n<<1)>>1]|0}else{q=96;o=0}else q=0;n=1<>>x;g=v;do{O=g;g=g-n|0;P=g+p|0;a[w+(P<<2)>>0]=q;a[w+(P<<2)+1>>0]=r;b[w+(P<<2)+2>>1]=o}while((O|0)!=(n|0));o=1<>>1;if(!o)g=0;else g=(o+-1&t)+o|0;m=m+1|0;O=H+(s<<1)|0;P=(b[O>>1]|0)+-1<<16>>16;b[O>>1]=P;if(!(P<<16>>16)){if((s|0)==(J|0)){G=r;I=g;K=w;L=d;break b}n=e[f+(e[k+(m<<1)>>1]<<1)>>1]|0}else n=s;if(n>>>0<=E>>>0){t=g;s=n;continue}o=g&y;if((o|0)==(u|0)){t=g;s=n}else{t=m;s=n;break}}r=(x|0)==0?E:x;q=w+(v<<2)|0;n=s-r|0;c:do if(s>>>0>>0){p=s;m=n;n=1<>1]|0)|0;if((n|0)<1)break c;m=m+1|0;p=m+r|0;if(p>>>0>=J>>>0)break;else n=n<<1}}else m=n;while(0);d=(1<>>0>852|l&d>>>0>592){F=1;M=49;break}x=c[h>>2]|0;a[x+(o<<2)>>0]=m;a[x+(o<<2)+1>>0]=A;b[x+(o<<2)+2>>1]=(q-x|0)>>>2;x=r;n=s;u=o;w=q;o=t}if((M|0)==49){i=N;return F|0}if(I){a[K+(I<<2)>>0]=64;a[K+(I<<2)+1>>0]=G;b[K+(I<<2)+2>>1]=0}c[h>>2]=(c[h>>2]|0)+(L<<2);c[j>>2]=E;P=0;i=N;return P|0}function EH(a){a=a|0;c[a+2840>>2]=a+148;c[a+2848>>2]=290016;c[a+2852>>2]=a+2440;c[a+2860>>2]=290040;c[a+2864>>2]=a+2684;c[a+2872>>2]=290064;b[a+5816>>1]=0;c[a+5820>>2]=0;NR(a);return}function FH(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;l=d+5820|0;j=c[l>>2]|0;i=h&65535;k=d+5816|0;h=e[k>>1]|0|i<>1]=h;if((j|0)>13){n=d+20|0;j=c[n>>2]|0;c[n>>2]=j+1;m=d+8|0;a[(c[m>>2]|0)+j>>0]=h;h=(e[k>>1]|0)>>>8&255;j=c[n>>2]|0;c[n>>2]=j+1;a[(c[m>>2]|0)+j>>0]=h;j=c[l>>2]|0;h=i>>>(16-j|0);b[k>>1]=h;j=j+-13|0}else j=j+3|0;h=h&255;c[l>>2]=j;do if((j|0)<=8){i=d+20|0;if((j|0)>0){j=c[i>>2]|0;c[i>>2]=j+1;n=d+8|0;a[(c[n>>2]|0)+j>>0]=h;h=n;break}else{h=d+8|0;break}}else{i=d+20|0;j=c[i>>2]|0;c[i>>2]=j+1;n=d+8|0;a[(c[n>>2]|0)+j>>0]=h;d=(e[k>>1]|0)>>>8&255;h=c[i>>2]|0;c[i>>2]=h+1;a[(c[n>>2]|0)+h>>0]=d;h=n}while(0);b[k>>1]=0;c[l>>2]=0;d=c[i>>2]|0;c[i>>2]=d+1;a[(c[h>>2]|0)+d>>0]=g;d=c[i>>2]|0;c[i>>2]=d+1;a[(c[h>>2]|0)+d>>0]=g>>>8;d=g&65535^65535;n=c[i>>2]|0;c[i>>2]=n+1;a[(c[h>>2]|0)+n>>0]=d;n=c[i>>2]|0;c[i>>2]=n+1;a[(c[h>>2]|0)+n>>0]=d>>>8;if(!g)return;while(1){g=g+-1|0;d=a[f>>0]|0;n=c[i>>2]|0;c[i>>2]=n+1;a[(c[h>>2]|0)+n>>0]=d;if(!g)break;else f=f+1|0}return}function GH(d){d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=d+5820|0;g=c[f>>2]|0;if((g|0)==16){g=d+5816|0;k=b[g>>1]&255;j=d+20|0;i=c[j>>2]|0;c[j>>2]=i+1;h=d+8|0;a[(c[h>>2]|0)+i>>0]=k;i=(e[g>>1]|0)>>>8&255;d=c[j>>2]|0;c[j>>2]=d+1;a[(c[h>>2]|0)+d>>0]=i;b[g>>1]=0;c[f>>2]=0;return}if((g|0)<=7)return;k=d+5816|0;i=b[k>>1]&255;h=d+20|0;j=c[h>>2]|0;c[h>>2]=j+1;a[(c[d+8>>2]|0)+j>>0]=i;b[k>>1]=(e[k>>1]|0)>>>8;c[f>>2]=(c[f>>2]|0)+-8;return}function HH(d){d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;h=d+5820|0;g=c[h>>2]|0;i=d+5816|0;f=e[i>>1]|0|2<>1]=f;if((g|0)>13){k=d+20|0;g=c[k>>2]|0;c[k>>2]=g+1;j=d+8|0;a[(c[j>>2]|0)+g>>0]=f;f=(e[i>>1]|0)>>>8&255;g=c[k>>2]|0;c[k>>2]=g+1;a[(c[j>>2]|0)+g>>0]=f;g=c[h>>2]|0;f=2>>>(16-g|0);b[i>>1]=f;g=g+-13|0}else g=g+3|0;f=f&255;c[h>>2]=g;if((g|0)>9){j=d+20|0;k=c[j>>2]|0;c[j>>2]=k+1;g=d+8|0;a[(c[g>>2]|0)+k>>0]=f;k=(e[i>>1]|0)>>>8&255;f=c[j>>2]|0;c[j>>2]=f+1;a[(c[g>>2]|0)+f>>0]=k;b[i>>1]=0;f=0;g=(c[h>>2]|0)+-9|0}else g=g+7|0;c[h>>2]=g;if((g|0)==16){g=d+20|0;k=c[g>>2]|0;c[g>>2]=k+1;j=d+8|0;a[(c[j>>2]|0)+k>>0]=f;d=(e[i>>1]|0)>>>8&255;k=c[g>>2]|0;c[g>>2]=k+1;a[(c[j>>2]|0)+k>>0]=d;b[i>>1]=0;c[h>>2]=0;return}if((g|0)<=7)return;j=d+20|0;k=c[j>>2]|0;c[j>>2]=k+1;a[(c[d+8>>2]|0)+k>>0]=f;b[i>>1]=(e[i>>1]|0)>>>8;c[h>>2]=(c[h>>2]|0)+-8;return}function IH(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;if((c[f+132>>2]|0)>0){m=(c[f>>2]|0)+44|0;if((c[m>>2]|0)==2){j=-201342849;k=0;while(1){if((j&1|0)!=0?(b[f+(k<<2)+148>>1]|0)!=0:0){j=0;break}k=k+1|0;if((k|0)>=32){l=6;break}else j=j>>>1}a:do if((l|0)==6)if(((b[f+184>>1]|0)==0?(b[f+188>>1]|0)==0:0)?(b[f+200>>1]|0)==0:0){j=32;while(1){if(b[f+(j<<2)+148>>1]|0){j=1;break a}j=j+1|0;if((j|0)>=256){j=0;break}}}else j=1;while(0);c[m>>2]=j}OR(f,f+2840|0);OR(f,f+2852|0);p=c[f+2844>>2]|0;r=b[f+150>>1]|0;q=r<<16>>16==0;b[f+(p+1<<2)+150>>1]=-1;t=f+2752|0;u=f+2756|0;v=f+2748|0;n=q?138:7;q=q?3:4;j=0;r=r&65535;s=-1;b:while(1){m=0;do{if((j|0)>(p|0))break b;j=j+1|0;l=b[f+(j<<2)+150>>1]|0;o=l&65535;m=m+1|0;k=(r|0)==(o|0)}while((m|0)<(n|0)&k);do if((m|0)>=(q|0))if(!r)if((m|0)<11){b[t>>1]=(b[t>>1]|0)+1<<16>>16;break}else{b[u>>1]=(b[u>>1]|0)+1<<16>>16;break}else{if((r|0)!=(s|0)){s=f+(r<<2)+2684|0;b[s>>1]=(b[s>>1]|0)+1<<16>>16}b[v>>1]=(b[v>>1]|0)+1<<16>>16;break}else{s=f+(r<<2)+2684|0;b[s>>1]=(e[s>>1]|0)+m}while(0);if(!(l<<16>>16)){s=r;n=138;q=3;r=o;continue}s=r;n=k?6:7;q=k?3:4;r=o}p=c[f+2856>>2]|0;r=b[f+2442>>1]|0;q=r<<16>>16==0;b[f+(p+1<<2)+2442>>1]=-1;n=q?138:7;q=q?3:4;j=0;r=r&65535;s=-1;c:while(1){m=0;do{if((j|0)>(p|0))break c;j=j+1|0;l=b[f+(j<<2)+2442>>1]|0;o=l&65535;m=m+1|0;k=(r|0)==(o|0)}while((m|0)<(n|0)&k);do if((m|0)>=(q|0))if(!r)if((m|0)<11){b[t>>1]=(b[t>>1]|0)+1<<16>>16;break}else{b[u>>1]=(b[u>>1]|0)+1<<16>>16;break}else{if((r|0)!=(s|0)){s=f+(r<<2)+2684|0;b[s>>1]=(b[s>>1]|0)+1<<16>>16}b[v>>1]=(b[v>>1]|0)+1<<16>>16;break}else{s=f+(r<<2)+2684|0;b[s>>1]=(e[s>>1]|0)+m}while(0);if(!(l<<16>>16)){s=r;n=138;q=3;r=o;continue}s=r;n=k?6:7;q=k?3:4;r=o}OR(f,f+2864|0);k=18;while(1){j=k+-1|0;if(b[f+(d[291840+k>>0]<<2)+2686>>1]|0){j=k;break}if((j|0)>2)k=j;else break}k=f+5800|0;m=(j*3|0)+17+(c[k>>2]|0)|0;c[k>>2]=m;m=(m+10|0)>>>3;k=((c[f+5804>>2]|0)+10|0)>>>3;m=k>>>0>m>>>0?m:k}else{k=h+5|0;j=0;m=k}do if((h+4|0)>>>0<=m>>>0&(g|0)!=0)FH(f,g,h,i);else{t=f+5820|0;o=c[t>>2]|0;n=(o|0)>13;if((k|0)==(m|0)?1:(c[f+136>>2]|0)==4){j=i+2&65535;k=f+5816|0;l=e[k>>1]|j<>1]=l;if(n){u=f+20|0;v=c[u>>2]|0;c[u>>2]=v+1;g=f+8|0;a[(c[g>>2]|0)+v>>0]=l;v=(e[k>>1]|0)>>>8&255;h=c[u>>2]|0;c[u>>2]=h+1;a[(c[g>>2]|0)+h>>0]=v;h=c[t>>2]|0;b[k>>1]=j>>>(16-h|0);j=h+-13|0}else j=o+3|0;c[t>>2]=j;PR(f,290088,291240);break}k=i+4&65535;s=f+5816|0;l=e[s>>1]|k<>1]=l;if(n){g=f+20|0;n=c[g>>2]|0;c[g>>2]=n+1;h=f+8|0;a[(c[h>>2]|0)+n>>0]=l;l=(e[s>>1]|0)>>>8&255;n=c[g>>2]|0;c[g>>2]=n+1;a[(c[h>>2]|0)+n>>0]=l;n=c[t>>2]|0;l=k>>>(16-n|0);b[s>>1]=l;n=n+-13|0}else n=o+3|0;c[t>>2]=n;q=c[f+2844>>2]|0;r=c[f+2856>>2]|0;m=q+65280&65535;k=l&65535|m<>1]=k;if((n|0)>11){g=f+20|0;l=c[g>>2]|0;c[g>>2]=l+1;h=f+8|0;a[(c[h>>2]|0)+l>>0]=k;k=(e[s>>1]|0)>>>8&255;l=c[g>>2]|0;c[g>>2]=l+1;a[(c[h>>2]|0)+l>>0]=k;l=c[t>>2]|0;k=m>>>(16-l|0);b[s>>1]=k;l=l+-11|0}else l=n+5|0;c[t>>2]=l;m=r&65535;k=m<>1]=k;if((l|0)>11){g=f+20|0;l=c[g>>2]|0;c[g>>2]=l+1;h=f+8|0;a[(c[h>>2]|0)+l>>0]=k;k=(e[s>>1]|0)>>>8&255;l=c[g>>2]|0;c[g>>2]=l+1;a[(c[h>>2]|0)+l>>0]=k;l=c[t>>2]|0;k=m>>>(16-l|0);b[s>>1]=k;l=l+-11|0}else l=l+5|0;c[t>>2]=l;m=j+65533&65535;k=m<>1]=k;if((l|0)>12){v=f+20|0;h=c[v>>2]|0;c[v>>2]=h+1;g=f+8|0;a[(c[g>>2]|0)+h>>0]=k;k=(e[s>>1]|0)>>>8&255;h=c[v>>2]|0;c[v>>2]=h+1;a[(c[g>>2]|0)+h>>0]=k;h=c[t>>2]|0;k=m>>>(16-h|0);b[s>>1]=k;m=h+-12|0}else m=l+4|0;c[t>>2]=m;if((j|0)>-1){n=f+20|0;p=f+8|0;o=0;while(1){l=e[f+(d[291840+o>>0]<<2)+2686>>1]|0;k=l<>1]=k;if((m|0)>13){m=c[n>>2]|0;c[n>>2]=m+1;a[(c[p>>2]|0)+m>>0]=k;k=(e[s>>1]|0)>>>8&255;m=c[n>>2]|0;c[n>>2]=m+1;a[(c[p>>2]|0)+m>>0]=k;m=c[t>>2]|0;k=l>>>(16-m|0);b[s>>1]=k;m=m+-13|0}else m=m+3|0;c[t>>2]=m;if((o|0)==(j|0))break;else o=o+1|0}}g=f+148|0;QR(f,g,q);h=f+2440|0;QR(f,h,r);PR(f,g,h)}while(0);NR(f);if(!i)return;l=f+5820|0;k=c[l>>2]|0;if((k|0)<=8){j=f+5816|0;if((k|0)>0){h=b[j>>1]&255;g=f+20|0;i=c[g>>2]|0;c[g>>2]=i+1;a[(c[f+8>>2]|0)+i>>0]=h}}else{j=f+5816|0;v=b[j>>1]&255;g=f+20|0;h=c[g>>2]|0;c[g>>2]=h+1;i=f+8|0;a[(c[i>>2]|0)+h>>0]=v;h=(e[j>>1]|0)>>>8&255;f=c[g>>2]|0;c[g>>2]=f+1;a[(c[i>>2]|0)+f>>0]=h}b[j>>1]=0;c[l>>2]=0;return}function JH(a,b,c){a=a|0;b=b|0;c=c|0;return qea(da(c,b)|0)|0}function KH(a,b){a=a|0;b=b|0;rea(b);return}function LH(a,b){a=a|0;b=b|0;var d=0;d=b<<1;a=qea(d+a|0)|0;if(!a){b=0;return b|0}b=d-((a>>>0)%(b>>>0)|0)+a|0;c[b+-4>>2]=a;return b|0}function MH(a){a=a|0;rea(c[a+-4>>2]|0);return}function NH(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return RR(a,0,0,b,c,d,e,f,g,h)|0}function OH(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return RR(a,0,0,1,b,c,d,e,f,g)|0}function PH(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return RR(0,0,0,1,a,b,c,d,e,f)|0}function QH(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return RR(0,0,0,a,b,c,d,e,f,g)|0}function RH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;if(!a)return;b=c[a>>2]|0;if(b){d=c[b+280>>2]|0;if(d){rea(d);b=c[a>>2]|0}i=c[b+284>>2]|0;b=c[i>>2]|0;h=i+4|0;if((b|0)!=(h|0))do{f=c[b+20>>2]|0;if(f){d=c[f>>2]|0;g=f+4|0;if((d|0)!=(g|0))do{CK(c[d+28>>2]|0);e=c[d+4>>2]|0;if(!e)while(1){e=c[d+8>>2]|0;if((c[e>>2]|0)==(d|0)){d=e;break}else d=e}else{d=e;while(1){e=c[d>>2]|0;if(!e)break;else d=e}}}while((d|0)!=(g|0));SR(f,c[f+4>>2]|0);nda(f)}d=c[b+4>>2]|0;if(!d)while(1){d=c[b+8>>2]|0;if((c[d>>2]|0)==(b|0)){b=d;break}else b=d}else{b=d;while(1){d=c[b>>2]|0;if(!d)break;else b=d}}}while((b|0)!=(h|0));if(i){TR(i,c[i+4>>2]|0);nda(i)}RH(c[(c[a>>2]|0)+292>>2]|0);rea(c[(c[a>>2]|0)+-4>>2]|0)}rea(a);return}function SH(a){a=a|0;if(!a){a=0;return a|0}a=(c[a>>2]|0)+272|0;return a|0}function TH(a){a=a|0;if(!a){a=0;return a|0}a=c[(c[a>>2]|0)+292>>2]|0;return a|0}function UH(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0;C=i;i=i+16|0;y=C+12|0;z=C;if(!a){B=0;i=C;return B|0}q=c[a>>2]|0;k=c[q>>2]|0;s=q;g=s&15;g=s+312+((g|0)==0?0:16-g|0)|0;s=c[g+4>>2]|0;B=c[g+8>>2]|0;t=b[g+14>>1]|0;n=t&65535;A=c[q+296>>2]|0;q=(c[q+288>>2]|0)==0;j=q&1;f=(k|0)==1;m=t<<16>>16==16&f;do if(f){if((c[g+16>>2]|0)==3)d=c[g+40>>2]|0;else d=(t&65535)>23?16711680:0;if((c[g+16>>2]|0)==3)h=c[g+44>>2]|0;else h=(t&65535)>23?65280:0;if(f)if((c[g+16>>2]|0)==3){f=c[g+48>>2]|0;break}else{f=(t&65535)>23?255:0;break}else f=0}else{h=0;f=0;d=0}while(0);d=RR(j,0,0,k,s,B,n,d,h,f)|0;if(!d){B=0;i=C;return B|0}l=c[a>>2]|0;o=l+272|0;r=c[l+284>>2]|0;g=c[d>>2]|0;p=g+272|0;w=c[g+284>>2]|0;f=(t<<16>>16!=0&(t&65535)<9?(4<>>0)+ +(B>>>0)*(+R(+((+(s>>>0)*+(t&65535)+31.0)*.03125))*4.0);if(D!=+(h>>>0)|D>4294967167.0)h=0;else v=16}else{h=f;v=16}qfa(g|0,l|0,h|0)|0;c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;j=c[d>>2]|0;c[j+284>>2]=w;c[j+292>>2]=0;k=c[l+280>>2]|0;f=c[l+276>>2]|0;g=j+280|0;h=c[g>>2]|0;if(!h)h=j;else{rea(h);h=c[d>>2]|0}c[g>>2]=0;c[j+276>>2]=0;if((f|0)!=0?(u=qea(f)|0,c[h+280>>2]=u,(u|0)!=0):0){c[h+276>>2]=f;qfa(u|0,k|0,f|0)|0}b[p>>1]=b[o>>1]|0;h=c[r>>2]|0;n=r+4|0;if((h|0)!=(n|0)){l=w+4|0;o=w+4|0;p=w+8|0;do{m=c[h+16>>2]|0;g=c[h+20>>2]|0;if((g|0)!=0?(x=kda(12,367160)|0,(x|0)!=0):0){f=x+4|0;c[f>>2]=0;c[x+8>>2]=0;c[x>>2]=f;f=c[g>>2]|0;k=g+4|0;if((f|0)!=(k|0))do{q2(z,f+16|0);g=DK(c[f+28>>2]|0)|0;c[(UR(x,z)|0)>>2]=g;v2(z);g=c[f+4>>2]|0;if(!g)while(1){g=c[f+8>>2]|0;if((c[g>>2]|0)==(f|0)){f=g;break}else f=g}else{f=g;while(1){g=c[f>>2]|0;if(!g)break;else f=g}}}while((f|0)!=(k|0));f=c[l>>2]|0;do if(f){while(1){g=c[f+16>>2]|0;if((m|0)<(g|0)){g=c[f>>2]|0;if(!g){g=f;v=35;break}else{f=g;continue}}if((g|0)>=(m|0)){v=39;break}g=f+4|0;j=c[g>>2]|0;if(!j){v=38;break}else f=j}if((v|0)==35){c[y>>2]=f;k=g;g=f;break}else if((v|0)==38){c[y>>2]=f;k=g;g=f;break}else if((v|0)==39){c[y>>2]=f;k=y;g=f;break}}else{c[y>>2]=o;k=o;g=o}while(0);f=c[k>>2]|0;if(!f){f=jda(24)|0;c[f+16>>2]=m;c[f+20>>2]=0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=g;c[k>>2]=f;g=c[c[w>>2]>>2]|0;if(!g)g=f;else{c[w>>2]=g;g=c[k>>2]|0}VR(c[l>>2]|0,g);c[p>>2]=(c[p>>2]|0)+1}c[f+20>>2]=x}f=c[h+4>>2]|0;if(!f)while(1){f=c[h+8>>2]|0;if((c[f>>2]|0)==(h|0)){h=f;break}else h=f}else{h=f;while(1){f=c[h>>2]|0;if(!f)break;else h=f}}}while((h|0)!=(n|0))}f=c[(c[a>>2]|0)+292>>2]|0;g=c[(c[d>>2]|0)+292>>2]|0;if((g|0)!=(f|0)){RH(g);if((f|0)!=0?(c[(c[f>>2]|0)+288>>2]|0)!=0:0)f=UH(f)|0;else f=0;c[(c[d>>2]|0)+292>>2]=f}if(!A){B=d;i=C;return B|0}f=c[a>>2]|0;if(!(c[f+296>>2]|0)){h=f;f=h&15;g=16-f|0;h=h+312|0;j=h+((f|0)==0?0:g)|0;j=(((da(e[j+14>>1]|0,c[j+4>>2]|0)|0)+7|0)>>>3)+3&1073741820}else{h=f;g=h&15;j=c[f+300>>2]|0;f=g;g=16-g|0;h=h+312|0}h=h+((f|0)==0?0:g)|0;h=((da(e[h+14>>1]|0,c[h+4>>2]|0)|0)+7|0)>>>3;if(!B){B=d;i=C;return B|0}else{f=A;g=0}while(1){qfa(qJ(d,g)|0,f|0,h|0)|0;g=g+1|0;if((g|0)==(B|0))break;else f=f+j|0}i=C;return d|0}function VH(a){a=a|0;if(!a){a=0;return a|0}a=c[c[a>>2]>>2]|0;return a|0}function WH(a){a=a|0;var b=0;if(!a){a=0;return a|0}b=c[a>>2]|0;a=b&15;a=c[b+312+((a|0)==0?0:16-a|0)+4>>2]|0;return a|0}function XH(a){a=a|0;var b=0;if(!a){a=0;return a|0}b=c[a>>2]|0;a=b&15;a=c[b+312+((a|0)==0?0:16-a|0)+8>>2]|0;return a|0}function YH(a){a=a|0;var b=0;if(!a){a=0;return a|0}b=c[a>>2]|0;a=b&15;a=e[b+312+((a|0)==0?0:16-a|0)+14>>1]|0;return a|0}function ZH(a){a=a|0;if(!a){a=0;return a|0}a=c[(c[a>>2]|0)+288>>2]|0;return a|0}function _H(a){a=a|0;var b=0;if(!a){a=0;return a|0}a=c[a>>2]|0;if((c[a>>2]|0)!=1){a=0;return a|0}b=a;a=b&15;a=b+312+((a|0)==0?0:16-a|0)|0;if((c[a+16>>2]|0)==3){b=c[a+40>>2]|0;return b|0}else{b=(e[a+14>>1]|0)>23?16711680:0;return b|0}return 0}function $H(a){a=a|0;var b=0;if(!a){a=0;return a|0}a=c[a>>2]|0;if((c[a>>2]|0)!=1){a=0;return a|0}b=a;a=b&15;a=b+312+((a|0)==0?0:16-a|0)|0;if((c[a+16>>2]|0)==3){b=c[a+44>>2]|0;return b|0}else{b=(e[a+14>>1]|0)>23?65280:0;return b|0}return 0}function aI(a){a=a|0;var b=0;if(!a){a=0;return a|0}a=c[a>>2]|0;if((c[a>>2]|0)!=1){a=0;return a|0}b=a;a=b&15;a=b+312+((a|0)==0?0:16-a|0)|0;if((c[a+16>>2]|0)==3){b=c[a+48>>2]|0;return b|0}else{b=(e[a+14>>1]|0)>23?255:0;return b|0}return 0}function bI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;if(!a){d=0;return d|0}f=c[a>>2]|0;g=f+280|0;e=c[g>>2]|0;if(!e)h=f;else{rea(e);h=c[a>>2]|0}c[g>>2]=0;c[f+276>>2]=0;e=h+272|0;if(!d){d=e;return d|0}a=qea(d)|0;c[h+280>>2]=a;if(!a){d=e;return d|0}c[h+276>>2]=d;qfa(a|0,b|0,d|0)|0;d=e;return d|0}function cI(a,b){a=a|0;b=b|0;var d=0;if(!a){a=0;return a|0}d=c[(c[a>>2]|0)+292>>2]|0;if((d|0)==(b|0)){a=1;return a|0}RH(d);if((b|0)!=0?(c[(c[b>>2]|0)+288>>2]|0)!=0:0)d=UH(b)|0;else d=0;c[(c[a>>2]|0)+292>>2]=d;a=1;return a|0}function dI(a){a=a|0;var b=0;if(!a){a=0;return a|0}a=c[a>>2]|0;if(!(c[a+296>>2]|0)){b=a;a=b&15;a=b+312+((a|0)==0?0:16-a|0)|0;a=(((da(e[a+14>>1]|0,c[a+4>>2]|0)|0)+7|0)>>>3)+3&1073741820;return a|0}else{b=c[a+300>>2]|0;return b|0}return 0}function eI(a){a=a|0;var b=0;if(!a){a=0;return a|0}b=c[a>>2]|0;a=b&15;a=b+312+((a|0)==0?0:16-a|0)|0;a=((da(e[a+14>>1]|0,c[a+4>>2]|0)|0)+7|0)>>>3;return a|0}function fI(a){a=a|0;var b=0,d=0;if(!a){b=0;return b|0}a=c[a>>2]|0;if(!(c[a+288>>2]|0)){b=0;return b|0}b=c[a+296>>2]|0;if(b)return b|0;d=a;a=d&15;a=(a|0)==0?0:16-a|0;b=d+312+a|0;b=((c[b+16>>2]|0)==3?12:0)+(d+352+a+(c[b+32>>2]<<2))|0;a=b&15;b=((a|0)==0?0:16-a|0)+b|0;return b|0}function gI(a){a=a|0;var b=0;if(!a){a=0;return a|0}b=c[a>>2]|0;a=b&15;a=b+312+((a|0)==0?0:16-a|0)|0;return a|0}function hI(a){a=a|0;var b=0;if(!a){a=0;return a|0}b=c[a>>2]|0;a=b&15;a=c[b+312+((a|0)==0?0:16-a|0)+32>>2]|0;return a|0}function iI(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;e=m;a:do if(d){f=c[d>>2]|0;switch(c[f>>2]|0){case 2:{c[e>>2]=0;if(!(jI(1,d,348088,e)|0)){k=1;i=m;return k|0}k=(b[(JK(c[e>>2]|0)|0)>>1]|0)!=0&1;i=m;return k|0}case 11:case 9:{k=2;i=m;return k|0}case 1:{e=f;g=e&15;g=e+312+((g|0)==0?0:16-g|0)|0;e=b[g+14>>1]|0;switch(e&65535|0){case 32:{if(b[f+272>>1]&1){k=5;i=m;return k|0}if(!(c[f+288>>2]|0)){k=4;i=m;return k|0}else g=0;b:while(1){h=c[d>>2]|0;k=h&15;if(g>>>0>=(c[h+312+((k|0)==0?0:16-k|0)+8>>2]|0)>>>0){e=2;f=39;break}e=qJ(d,g)|0;f=0;while(1){h=c[d>>2]|0;k=h&15;if(f>>>0>=(c[h+312+((k|0)==0?0:16-k|0)+4>>2]|0)>>>0)break;if((a[e+(f<<2)+3>>0]|0)==-1)f=f+1|0;else{e=4;f=39;break b}}g=g+1|0}if((f|0)==39){i=m;return e|0}break}case 8:case 4:{k=c[g+32>>2]|0;if((e&65535)<16)f=g+40|0;else f=0;c:do if((k|0)>0){h=k+-1|0;j=0;e=1;while(1){g=a[f+2>>0]|0;d=g&255;if(g<<24>>24!=(a[f+1>>0]|0)){e=3;f=39;break}if(g<<24>>24!=(a[f>>0]|0)){e=3;f=39;break}if((d|0)!=(j|0))if((h-j|0)==(d|0))e=0;else{e=3;f=39;break}j=j+1|0;if((k|0)<=(j|0)){l=e;break c}else f=f+4|0}if((f|0)==39){i=m;return e|0}}else l=1;while(0);k=(l|0)!=0&1;i=m;return k|0}case 1:{f=g+40|0;if(((a[f+2>>0]|0)==0?(a[f+1>>0]|0)==0:0)?(a[f>>0]|0)==0:0){e=g+44|0;if(((a[f+6>>0]|0)==-1?(a[f+5>>0]|0)==-1:0)?(a[e>>0]|0)==-1:0){k=1;i=m;return k|0}}else e=f;if((((((a[e+2>>0]|0)==-1?(a[e+1>>0]|0)==-1:0)?(a[e>>0]|0)==-1:0)?(a[e+6>>0]|0)==0:0)?(a[e+5>>0]|0)==0:0)?(a[e+4>>0]|0)==0:0){k=0;i=m;return k|0}k=3;i=m;return k|0}case 24:case 16:{k=2;i=m;return k|0}default:{k=1;i=m;return k|0}}break}case 12:case 10:{k=4;i=m;return k|0}default:break a}}while(0);k=1;i=m;return k|0}function jI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k+12|0;g=k;if(!((b|0)!=0&(d|0)!=0&(e|0)!=0)){j=0;i=k;return j|0}c[e>>2]=0;b=c[(c[b>>2]|0)+284>>2]|0;do if((c[b+8>>2]|0)!=0?(f=c[b+4>>2]|0,h=b+4|0,(f|0)!=0):0){b=h;a:do{while(1){if((c[f+16>>2]|0)>=(a|0)){b=f;break}f=c[f+4>>2]|0;if(!f)break a}f=c[b>>2]|0}while((f|0)!=0);if((b|0)!=(h|0)?(c[b+16>>2]|0)<=(a|0):0){a=c[b+20>>2]|0;p2(g,d,tfa(d|0)|0);WR(j,a,g);v2(g);b=c[j>>2]|0;if((b|0)==(a+4|0)){b=c[e>>2]|0;break}else{b=c[b+28>>2]|0;c[e>>2]=b;break}}else b=0}else b=0;while(0);j=(b|0)!=0&1;i=k;return j|0}function kI(a){a=a|0;var b=0;if(!a){a=0;return a|0}b=c[a>>2]|0;a=b&15;a=b+312+((a|0)==0?0:16-a|0)|0;if((e[a+14>>1]|0)>=16){b=0;return b|0}b=a+40|0;return b|0}function lI(b){b=b|0;if(!b){b=0;return b|0}b=(a[(c[b>>2]|0)+7>>0]|0)!=0&1;return b|0}function mI(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;if(!((e|0)!=0&(f|0)!=0)){f=0;return f|0}g=c[e>>2]|0;if(!(a[g+7>>0]|0)){f=0;return f|0}k=g+4|0;j=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24;a[f>>0]=j;a[f+1>>0]=j>>8;a[f+2>>0]=j>>16;a[f+3>>0]=j>>24;j=c[e>>2]|0;h=j&15;h=j+312+((h|0)==0?0:16-h|0)|0;a:do if((b[h+14>>1]|0)==8){i=h+40|0;j=g+6|0;g=g+5|0;e=0;while(1){if(e>>>0>=(c[h+32>>2]|0)>>>0)break a;if(((a[j>>0]|0)==(a[i+(e<<2)+2>>0]|0)?(a[g>>0]|0)==(a[i+(e<<2)+1>>0]|0):0)?(a[k>>0]|0)==(a[i+(e<<2)>>0]|0):0)break;e=e+1|0}a[f+3>>0]=e;f=1;return f|0}while(0);a[f+3>>0]=0;f=1;return f|0}function nI(b,e){b=b|0;e=e|0;var f=0;if(!b){e=0;return e|0}b=c[b>>2]|0;f=b+4|0;if(!e){a[f>>0]=0;a[f+1>>0]=0;a[f+2>>0]=0;a[f+3>>0]=0;e=1;return e|0}else{e=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[f>>0]=e;a[f+1>>0]=e>>8;a[f+2>>0]=e>>16;a[f+3>>0]=e>>24;a[b+7>>0]=1;e=1;return e|0}return 0}function oI(a){a=a|0;var d=0,e=0,f=0;do if(a){d=c[a>>2]|0;e=c[d>>2]|0;if((e|0)==12|(e|0)==10){a=1;return a|0}else if((e|0)!=1)break;f=d;e=f&15;if((b[f+312+((e|0)==0?0:16-e|0)+14>>1]|0)==32){if((iI(a)|0)==4)d=1;else break;return d|0}else{a=(c[d+268>>2]|0)!=0&1;return a|0}}while(0);a=0;return a|0}function pI(a){a=a|0;if(!a){a=0;return a|0}a=(c[a>>2]|0)+8|0;return a|0}function qI(a,d){a=a|0;d=d|0;var e=0,f=0;if(!a)return;a=c[a>>2]|0;f=a;e=f&15;e=b[f+312+((e|0)==0?0:16-e|0)+14>>1]|0;a=a+268|0;if((e&65535)<9|e<<16>>16==32){c[a>>2]=d;return}else{c[a>>2]=0;return}}function rI(a){a=a|0;if(!a){a=0;return a|0}a=c[(c[a>>2]|0)+264>>2]|0;return a|0}function sI(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0;if(!a)return;f=(d|0)<256?d:256;f=(f|0)<0?0:f;d=c[a>>2]|0;g=d;a=g&15;if((e[g+312+((a|0)==0?0:16-a|0)+14>>1]|0)>=9)return;c[d+268>>2]=(f|0)>0&1;c[d+264>>2]=f;d=d+8|0;if(!b){sfa(d|0,-1,f|0)|0;return}else{qfa(d|0,b|0,f|0)|0;return}}function tI(a){a=a|0;var b=0;if(!a){a=0;return a|0}b=c[a>>2]|0;a=b&15;a=c[b+312+((a|0)==0?0:16-a|0)+24>>2]|0;return a|0}function uI(a){a=a|0;var b=0;if(!a){a=0;return a|0}b=c[a>>2]|0;a=b&15;a=c[b+312+((a|0)==0?0:16-a|0)+28>>2]|0;return a|0}function vI(a,b){a=a|0;b=b|0;var d=0;if(!a)return;d=c[a>>2]|0;a=d&15;c[d+312+((a|0)==0?0:16-a|0)+24>>2]=b;return}function wI(a,b){a=a|0;b=b|0;var d=0;if(!a)return;d=c[a>>2]|0;a=d&15;c[d+312+((a|0)==0?0:16-a|0)+28>>2]=b;return}function xI(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;j=m;if(!d){k=0;i=m;return k|0}k=c[(c[d>>2]|0)+284>>2]|0;l=k+4|0;g=c[l>>2]|0;h=k+4|0;if(!g){k=0;i=m;return k|0}else{d=h;f=g}a:do{while(1){if((c[f+16>>2]|0)>=(b|0)){d=f;break}f=c[f+4>>2]|0;if(!f)break a}f=c[d>>2]|0}while((f|0)!=0);if((d|0)==(h|0)){k=0;i=m;return k|0}if((c[d+16>>2]|0)>(b|0)){k=0;i=m;return k|0}while(1){d=c[g+16>>2]|0;if((d|0)>(b|0)){d=c[g>>2]|0;if(!d){d=g;f=g;g=12;break}else{g=d;continue}}if((d|0)>=(b|0)){d=g;g=16;break}d=g+4|0;f=c[d>>2]|0;if(!f){f=g;g=15;break}else g=f}if((g|0)==12){c[j>>2]=f;h=d}else if((g|0)==15){c[j>>2]=f;h=d}else if((g|0)==16){c[j>>2]=d;h=j;f=d}d=c[h>>2]|0;if(!d){d=jda(24)|0;c[d+16>>2]=b;c[d+20>>2]=0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=f;c[h>>2]=d;f=c[c[k>>2]>>2]|0;if(!f)f=d;else{c[k>>2]=f;f=c[h>>2]|0}VR(c[l>>2]|0,f);k=k+8|0;c[k>>2]=(c[k>>2]|0)+1}d=c[d+20>>2]|0;if(!d){k=0;i=m;return k|0}f=qea(4)|0;if(!f){k=0;i=m;return k|0}g=qea(8)|0;c[f>>2]=g;if(!g){rea(f);k=0;i=m;return k|0}else{k=g;j=k;a[j>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;a[j+3>>0]=0;k=k+4|0;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=0;c[g>>2]=1;c[g+4>>2]=d;c[e>>2]=c[(c[d>>2]|0)+28>>2];k=f;i=m;return k|0}return 0}function yI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;if(!a){b=0;return b|0}g=c[a>>2]|0;d=c[g+4>>2]|0;h=c[g>>2]|0;if((h|0)>=(c[d+8>>2]|0)){b=0;return b|0}a=c[d>>2]|0;f=d+4|0;if((a|0)==(f|0)){b=1;return b|0}else e=0;while(1){if((e|0)==(h|0))break;e=e+1|0;d=c[a+4>>2]|0;if(!d){d=a;while(1){a=c[d+8>>2]|0;if((c[a>>2]|0)==(d|0))break;else d=a}}else{a=d;while(1){d=c[a>>2]|0;if(!d)break;else a=d}}if((a|0)==(f|0)){a=1;i=11;break}}if((i|0)==11)return a|0;c[b>>2]=c[a+28>>2];c[g>>2]=h+1;b=1;return b|0}function zI(a){a=a|0;var b=0;if(!a)return;b=c[a>>2]|0;if(b)rea(b);rea(a);return}function AI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;r=t+12|0;s=t;if(!((b|0)!=0&(a|0)!=0)){b=0;i=t;return b|0}q=c[(c[b>>2]|0)+284>>2]|0;p=c[(c[a>>2]|0)+284>>2]|0;d=c[q>>2]|0;q=q+4|0;if((d|0)!=(q|0)){l=p+4|0;m=p+4|0;n=p+8|0;do{k=c[d+16>>2]|0;if((k|0)!=9?(o=c[d+20>>2]|0,(o|0)!=0):0){f=c[l>>2]|0;if(f){e=m;a:do{while(1){if((c[f+16>>2]|0)>=(k|0)){e=f;break}f=c[f+4>>2]|0;if(!f)break a}f=c[e>>2]|0}while((f|0)!=0);if((e|0)!=(m|0)?(k|0)>=(c[e+16>>2]|0):0)BI(k,a,0,0)|0}j=kda(12,367160)|0;if(j){e=j+4|0;c[e>>2]=0;c[j+8>>2]=0;c[j>>2]=e;e=c[o>>2]|0;g=o+4|0;if((e|0)!=(g|0))do{q2(s,e+16|0);f=DK(c[e+28>>2]|0)|0;c[(UR(j,s)|0)>>2]=f;v2(s);f=c[e+4>>2]|0;if(!f)while(1){f=c[e+8>>2]|0;if((c[f>>2]|0)==(e|0)){e=f;break}else e=f}else{e=f;while(1){f=c[e>>2]|0;if(!f)break;else e=f}}}while((e|0)!=(g|0));e=c[l>>2]|0;do if(e){while(1){f=c[e+16>>2]|0;if((k|0)<(f|0)){f=c[e>>2]|0;if(!f){g=e;h=24;break}else{e=f;continue}}if((f|0)>=(k|0)){h=28;break}f=e+4|0;g=c[f>>2]|0;if(!g){h=27;break}else e=g}if((h|0)==24){c[r>>2]=e;f=e;break}else if((h|0)==27){c[r>>2]=e;g=f;f=e;break}else if((h|0)==28){c[r>>2]=e;g=r;f=e;break}}else{c[r>>2]=m;g=m;f=m}while(0);e=c[g>>2]|0;if(!e){e=jda(24)|0;c[e+16>>2]=k;c[e+20>>2]=0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=f;c[g>>2]=e;f=c[c[p>>2]>>2]|0;if(!f)f=e;else{c[p>>2]=f;f=c[g>>2]|0}VR(c[l>>2]|0,f);c[n>>2]=(c[n>>2]|0)+1}c[e+20>>2]=j}}e=c[d+4>>2]|0;if(!e)while(1){e=c[d+8>>2]|0;if((c[e>>2]|0)==(d|0)){d=e;break}else d=e}else{d=e;while(1){e=c[d>>2]|0;if(!e)break;else d=e}}}while((d|0)!=(q|0))}p=c[b>>2]|0;s=p&15;r=c[a>>2]|0;q=r&15;c[r+312+((q|0)==0?0:16-q|0)+24>>2]=c[p+312+((s|0)==0?0:16-s|0)+24>>2];q=c[b>>2]|0;r=q&15;s=c[a>>2]|0;b=s&15;c[s+312+((b|0)==0?0:16-b|0)+28>>2]=c[q+312+((r|0)==0?0:16-r|0)+28>>2];b=1;i=t;return b|0}function BI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+64|0;o=s;m=s+44|0;n=s+4|0;l=s+16|0;k=s+20|0;p=s+32|0;if(!b){r=0;i=s;return r|0}q=c[(c[b>>2]|0)+284>>2]|0;r=q+4|0;f=c[r>>2]|0;g=q+4|0;if(f){b=g;a:do{while(1){if((c[f+16>>2]|0)>=(a|0)){b=f;break}f=c[f+4>>2]|0;if(!f)break a}f=c[b>>2]|0}while((f|0)!=0);if((b|0)!=(g|0)?(c[b+16>>2]|0)<=(a|0):0){j=b;h=c[b+20>>2]|0}else{j=g;h=0}}else{j=g;h=0}b=(h|0)!=0;if(!d){if(!b){r=1;i=s;return r|0}b=c[h>>2]|0;g=h+4|0;if((b|0)!=(g|0))do{CK(c[b+28>>2]|0);f=c[b+4>>2]|0;if(!f)while(1){f=c[b+8>>2]|0;if((c[f>>2]|0)==(b|0)){b=f;break}else b=f}else{b=f;while(1){f=c[b>>2]|0;if(!f)break;else b=f}}}while((b|0)!=(g|0));SR(h,c[h+4>>2]|0);nda(h);b=c[j+4>>2]|0;if(!b){f=j;while(1){b=c[f+8>>2]|0;if((c[b>>2]|0)==(f|0))break;else f=b}}else while(1){f=c[b>>2]|0;if(!f)break;else b=f}if((c[q>>2]|0)==(j|0))c[q>>2]=b;q=q+8|0;c[q>>2]=(c[q>>2]|0)+-1;XR(c[r>>2]|0,j);nda(j);r=1;i=s;return r|0}if(!b){b=kda(12,367160)|0;if(!b)j=0;else{j=b+4|0;c[j>>2]=0;c[b+8>>2]=0;c[b>>2]=j;j=b}b=c[r>>2]|0;do if(b){while(1){f=c[b+16>>2]|0;if((f|0)>(a|0)){f=c[b>>2]|0;if(!f){f=b;h=17;break}else{b=f;continue}}if((f|0)>=(a|0)){h=21;break}f=b+4|0;g=c[f>>2]|0;if(!g){h=20;break}else b=g}if((h|0)==17){c[o>>2]=b;g=b;break}else if((h|0)==20){c[o>>2]=b;g=b;break}else if((h|0)==21){c[o>>2]=b;f=o;g=b;break}}else{c[o>>2]=g;f=g}while(0);b=c[f>>2]|0;if(!b){b=jda(24)|0;c[b+16>>2]=a;c[b+20>>2]=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=g;c[f>>2]=b;g=c[c[q>>2]>>2]|0;if(!g)f=b;else{c[q>>2]=g;f=c[f>>2]|0}VR(c[r>>2]|0,f);r=q+8|0;c[r>>2]=(c[r>>2]|0)+1}c[b+20>>2]=j;h=j}if(!e){p2(k,d,tfa(d|0)|0);WR(l,h,k);v2(k);f=h+4|0;b=c[l>>2]|0;if((b|0)==(f|0)){r=1;i=s;return r|0}CK(c[b+28>>2]|0);p2(p,d,tfa(d|0)|0);WR(o,h,p);g=c[o>>2]|0;if((g|0)!=(f|0)){b=c[g+4>>2]|0;if(!b){f=g;while(1){b=c[f+8>>2]|0;if((c[b>>2]|0)==(f|0))break;else f=b}}else while(1){f=c[b>>2]|0;if(!f)break;else b=f}if((c[h>>2]|0)==(g|0))c[h>>2]=b;r=h+8|0;c[r>>2]=(c[r>>2]|0)+-1;XR(c[h+4>>2]|0,g);v2(g+16|0);nda(g)}v2(p);r=1;i=s;return r|0}if(!((EK(e)|0)!=0?(gfa(d,EK(e)|0)|0)==0:0))KK(e,d)|0;r=HK(e)|0;r=da(RK(GK(e)|0)|0,r)|0;if((r|0)!=(IK(e)|0)){c[o>>2]=d;PI(-1,292128,o);r=0;i=s;return r|0}b=XK()|0;if((a|0)==6)MK(e,($K(b,21,d)|0)&65535)|0;p2(m,d,tfa(d|0)|0);b=c[(UR(h,m)|0)>>2]|0;v2(m);if(b)CK(b);r=DK(e)|0;p2(n,d,tfa(d|0)|0);c[(UR(h,n)|0)>>2]=r;v2(n);r=1;i=s;return r|0}function CI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k;if(!b){h=0;i=k;return h|0}h=c[(c[b>>2]|0)+284>>2]|0;j=h+4|0;e=c[j>>2]|0;f=h+4|0;if(!e){h=0;i=k;return h|0}else{b=f;d=e}a:do{while(1){if((c[d+16>>2]|0)>=(a|0)){b=d;break}d=c[d+4>>2]|0;if(!d)break a}d=c[b>>2]|0}while((d|0)!=0);if((b|0)==(f|0)){h=0;i=k;return h|0}if((c[b+16>>2]|0)>(a|0)){h=0;i=k;return h|0}while(1){b=c[e+16>>2]|0;if((b|0)>(a|0)){b=c[e>>2]|0;if(!b){b=e;d=e;e=12;break}else{e=b;continue}}if((b|0)>=(a|0)){b=e;e=16;break}b=e+4|0;d=c[b>>2]|0;if(!d){d=e;e=15;break}else e=d}if((e|0)==12){c[g>>2]=d;f=b}else if((e|0)==15){c[g>>2]=d;f=b}else if((e|0)==16){c[g>>2]=b;f=g;d=b}b=c[f>>2]|0;if(!b){b=jda(24)|0;c[b+16>>2]=a;c[b+20>>2]=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=d;c[f>>2]=b;d=c[c[h>>2]>>2]|0;if(!d)d=b;else{c[h>>2]=d;d=c[f>>2]|0}VR(c[j>>2]|0,d);h=h+8|0;c[h>>2]=(c[h>>2]|0)+1}b=c[b+20>>2]|0;if(!b){h=0;i=k;return h|0}h=c[b+8>>2]|0;i=k;return h|0}function DI(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=YR(b,298336,453)|0;if((f|0)>-1){a[c>>0]=a[298340+(f<<3)>>0]|0;a[d>>0]=a[298341+(f<<3)>>0]|0;a[e>>0]=a[298342+(f<<3)>>0]|0;b=1;return b|0}f=a[b>>0]|0;if(((f<<24>>24==71|f<<24>>24==103?(f=a[b+1>>0]|0,f<<24>>24==82|f<<24>>24==114):0)?(f=a[b+2>>0]|0,f<<24>>24==65|f<<24>>24==97|f<<24>>24==69|f<<24>>24==101):0)?(f=a[b+3>>0]|0,f<<24>>24==89|f<<24>>24==121):0){b=~~(+(dfa(b+4|0,0,10)|0)*2.55)&255;a[c>>0]=b;a[d>>0]=b;a[e>>0]=a[c>>0]|0;b=1;return b|0}a[c>>0]=0;a[d>>0]=0;a[e>>0]=0;b=0;return b|0}function EI(b){b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((VH(b)|0)!=1){h=0;return h|0}h=YH(b)|0;f=h>>>3;if((h+-24|0)>>>0>15){h=0;return h|0}g=XH(b)|0;h=dI(b)|0;i=eI(b)|0;b=fI(b)|0;if(!g){h=1;return h|0}else e=0;while(1){c=b+i|0;if((i|0)>0){d=b;do{k=d+2|0;j=a[k>>0]|0;a[k>>0]=a[d>>0]|0;a[d>>0]=j;d=d+f|0}while(d>>>0>>0)}e=e+1|0;if((e|0)==(g|0)){b=1;break}else b=b+h|0}return b|0}function FI(c){c=c|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;if(!(ZH(c)|0)){o=0;return o|0}f=VH(c)|0;g=YH(c)|0;if((f+-9|0)>>>0>=2)if((f|0)==1&g>>>0>23)g=1;else{o=0;return o|0}else g=2;n=WH(c)|0;o=XH(c)|0;h=qJ(c,0)|0;m=dI(c)|0;k=((((eI(c)|0)>>>0)/(n>>>0)|0)>>>0)/(g>>>0)|0;l=k>>>0>3;f=(o|0)==0;if((g|0)==2){if(f|(n|0)==0){o=1;return o|0}else{f=0;j=0}while(1){if(l){g=h;c=0;while(1){q=g+6|0;f=b[q>>1]|0;b[q>>1]=-1;q=g+2|0;i=g+4|0;p=f&65535^65535;s=da((e[g>>1]|0)^65535,p)|0;r=da((e[q>>1]|0)^65535,p)|0;p=da((e[i>>1]|0)^65535,p)|0;b[g>>1]=s>>>0>4294901759?-1:((s>>>0)/65535|0)&65535;b[q>>1]=r>>>0>4294901759?-1:((r>>>0)/65535|0)&65535;b[i>>1]=p>>>0>4294901759?-1:((p>>>0)/65535|0)&65535;c=c+1|0;if((c|0)==(n|0))break;else g=g+(k<<1)|0}}else{g=f&65535^65535;c=h;i=0;while(1){q=c+2|0;s=c+4|0;t=da((e[c>>1]|0)^65535,g)|0;p=da((e[q>>1]|0)^65535,g)|0;r=da((e[s>>1]|0)^65535,g)|0;b[c>>1]=t>>>0>4294901759?-1:((t>>>0)/65535|0)&65535;b[q>>1]=p>>>0>4294901759?-1:((p>>>0)/65535|0)&65535;b[s>>1]=r>>>0>4294901759?-1:((r>>>0)/65535|0)&65535;i=i+1|0;if((i|0)==(n|0))break;else c=c+(k<<1)|0}}j=j+1|0;if((j|0)==(o|0)){f=1;break}else h=h+m|0}return f|0}if(f){t=1;return t|0}j=(n|0)==0;f=0;i=0;while(1){if(!j){g=h;c=0;while(1){if(l){t=g+3|0;f=a[t>>0]|0;a[t>>0]=-1}s=g+1|0;q=g+2|0;t=f&255^255;p=da((d[g>>0]|0)^255,t)|0;r=da((d[s>>0]|0)^255,t)|0;t=da((d[q>>0]|0)^255,t)|0;a[q>>0]=p>>>0>65279?-1:((p>>>0)/255|0)&255;a[s>>0]=r>>>0>65279?-1:((r>>>0)/255|0)&255;a[g>>0]=t>>>0>65279?-1:((t>>>0)/255|0)&255;c=c+1|0;if((c|0)==(n|0))break;else g=g+k|0}}i=i+1|0;if((i|0)==(o|0)){f=1;break}else h=h+m|0}return f|0}function GI(c){c=c|0;var f=0,g=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;if(!(ZH(c)|0)){w=0;return w|0}f=VH(c)|0;g=YH(c)|0;if((f+-9|0)>>>0>=2)if((f|0)==1&g>>>0>23)g=1;else{w=0;return w|0}else g=2;v=WH(c)|0;w=XH(c)|0;h=qJ(c,0)|0;u=dI(c)|0;t=((((eI(c)|0)>>>0)/(v>>>0)|0)>>>0)/(g>>>0)|0;f=(w|0)==0;if((g|0)==1){if(f){w=1;return w|0}s=(v|0)==0;r=0;while(1){if(!s){p=h;q=0;while(1){n=p+1|0;o=p+2|0;j=(+(d[p>>0]|0|0)*.3921568691730499+16.0)/116.0;k=j+(+(d[n>>0]|0|0)*1.003921627998352+-128.0)/500.0;m=j-(+(d[o>>0]|0|0)*1.003921627998352+-128.0)/200.0;i=+U(+j,3.0);if(i>.008856000378727913)l=i;else l=(j+-.13793103396892548)/7.7870001792907715;j=+U(+k,3.0);if(!(j>.008856000378727913))j=(k+-.13793103396892548)/7.7870001792907715;i=+U(+m,3.0);if(!(i>.008856000378727913))i=(m+-.13793103396892548)/7.7870001792907715;m=j*95.0469970703125/100.0;l=l*100.0/100.0;k=i*108.88300323486328/100.0;i=m*3.240600109100342+l*-1.5371999740600586+k*-.4986000061035156;j=m*-.9689000248908997+l*1.8758000135421753+k*.04149999842047691;k=m*.05570000037550926+l*-.20399999618530273+k*1.0570000410079956;if(i>3.1308000907301903e-003)i=+U(+i,.4166666567325592)*1.0549999475479126+-.054999999701976776;else i=i*12.920000076293945;if(j>3.1308000907301903e-003)j=+U(+j,.4166666567325592)*1.0549999475479126+-.054999999701976776;else j=j*12.920000076293945;if(k>3.1308000907301903e-003)k=+U(+k,.4166666567325592)*1.0549999475479126+-.054999999701976776;else k=k*12.920000076293945;i=i*255.0;if(i<0.0)c=0;else c=i>255.0?-1:~~i&255;i=j*255.0;if(i<0.0)g=0;else g=i>255.0?-1:~~i&255;i=k*255.0;if(i<0.0)f=0;else f=i>255.0?-1:~~i&255;a[o>>0]=c;a[n>>0]=g;a[p>>0]=f;q=q+1|0;if((q|0)==(v|0))break;else p=p+t|0}}r=r+1|0;if((r|0)==(w|0)){f=1;break}else h=h+u|0}return f|0}if(f){w=1;return w|0}s=(v|0)==0;r=0;while(1){if(!s){p=h;q=0;while(1){n=p+2|0;o=p+4|0;i=(+(e[p>>1]|0|0)*1.5259021893143654e-003+16.0)/116.0;k=i+(+(e[n>>1]|0|0)*.003906309604644775+-128.0)/500.0;l=i-(+(e[o>>1]|0|0)*.003906309604644775+-128.0)/200.0;j=+U(+i,3.0);if(!(j>.008856000378727913))j=(i+-.13793103396892548)/7.7870001792907715;i=+U(+k,3.0);if(i>.008856000378727913)k=i;else k=(k+-.13793103396892548)/7.7870001792907715;i=+U(+l,3.0);if(!(i>.008856000378727913))i=(l+-.13793103396892548)/7.7870001792907715;m=k*95.0469970703125/100.0;l=j*100.0/100.0;k=i*108.88300323486328/100.0;i=m*3.240600109100342+l*-1.5371999740600586+k*-.4986000061035156;j=m*-.9689000248908997+l*1.8758000135421753+k*.04149999842047691;k=m*.05570000037550926+l*-.20399999618530273+k*1.0570000410079956;if(i>3.1308000907301903e-003)i=+U(+i,.4166666567325592)*1.0549999475479126+-.054999999701976776;else i=i*12.920000076293945;if(j>3.1308000907301903e-003)j=+U(+j,.4166666567325592)*1.0549999475479126+-.054999999701976776;else j=j*12.920000076293945;if(k>3.1308000907301903e-003)k=+U(+k,.4166666567325592)*1.0549999475479126+-.054999999701976776;else k=k*12.920000076293945;i=i*65535.0;if(i<0.0)c=0;else c=i>65535.0?-1:~~i&65535;i=j*65535.0;if(i<0.0)g=0;else g=i>65535.0?-1:~~i&65535;i=k*65535.0;if(i<0.0)f=0;else f=i>65535.0?-1:~~i&65535;b[p>>1]=c;b[n>>1]=g;b[o>>1]=f;q=q+1|0;if((q|0)==(v|0))break;else p=p+(t<<1)|0}}r=r+1|0;if((r|0)==(w|0)){f=1;break}else h=h+u|0}return f|0}function HI(a){a=a|0;var b=0;do if(ZH(a)|0){b=VH(a)|0;if((b|0)==10){b=NI(a)|0;break}else if((b|0)==12){b=oc(a|0)|0;break}else if((b|0)==1){if((YH(a)|0)!=32){b=0;break}b=LI(a)|0;break}else{b=0;break}}else b=0;while(0);return b|0}function II(b){b=b|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if(!(ZH(b)|0)){p=0;return p|0}g=VH(b)|0;if((g+-1|0)>>>0>1){p=0;return p|0}h=YH(b)|0;a:do if((h|0)!=8){o=WH(b)|0;p=XH(b)|0;f=PH(o,p,8,0,0,0)|0;if(!f){p=0;return p|0}AI(f,b)|0;k=kI(f)|0;i=iI(b)|0;if((g|0)==2){j=dI(b)|0;l=dI(f)|0;i=fI(b)|0;g=fI(f)|0;if(!p){p=f;return p|0}if(!o){g=0;do g=g+1|0;while((g|0)!=(p|0));return f|0}else k=0;while(1){h=0;do{a[g+h>>0]=(e[i+(h<<1)>>1]|0)>>>8;h=h+1|0}while((h|0)!=(o|0));k=k+1|0;if((k|0)==(p|0))break;else{g=g+l|0;i=i+j|0}}return f|0}else if((g|0)!=1)break;switch(h|0){case 16:{if(((_H(b)|0)==63488?($H(b)|0)==2016:0)?(aI(b)|0)==31:0){if(!p){p=f;return p|0}i=(o|0)==0;k=0;do{g=qJ(f,k)|0;h=qJ(b,k)|0;if(!i){j=0;do{l=e[h+(j<<1)>>1]|0;a[g+j>>0]=~~(+((l>>>11)*255|0)*.2125999927520752/31.0+ +((l>>>5&63)*255|0)*.7152000069618225/63.0+ +((l&31)*255|0)*.0722000002861023/31.0+.5);j=j+1|0}while((j|0)!=(o|0))}k=k+1|0}while((k|0)!=(p|0));return f|0}if(!p){p=f;return p|0}i=(o|0)==0;k=0;do{g=qJ(f,k)|0;h=qJ(b,k)|0;if(!i){j=0;do{l=e[h+(j<<1)>>1]|0;a[g+j>>0]=~~(+((l>>>10&31)*255|0)*.2125999927520752/31.0+ +((l>>>5&31)*255|0)*.7152000069618225/31.0+ +((l&31)*255|0)*.0722000002861023/31.0+.5);j=j+1|0}while((j|0)!=(o|0))}k=k+1|0}while((k|0)!=(p|0));return f|0}case 4:{if((i|0)==3){g=k+0|0;h=(kI(b)|0)+0|0;i=g+64|0;do{a[g>>0]=a[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(i|0))}if(!p){p=f;return p|0}if(!o){g=0;do{qJ(f,g)|0;qJ(b,g)|0;g=g+1|0}while((g|0)!=(p|0));return f|0}else n=0;do{j=qJ(f,n)|0;l=qJ(b,n)|0;m=0;k=0;i=1;while(1){h=(i|0)!=0;i=a[l+k>>0]|0;if(h){g=(i&255)>>>4;i=k}else{g=i&15;i=k+1|0}a[j+m>>0]=g;m=m+1|0;if((m|0)==(o|0))break;else{k=i;i=h&1^1}}n=n+1|0}while((n|0)!=(p|0));return f|0}case 1:{if(!i){g=0;h=16777215;while(1){c[k+(g<<2)>>2]=h;g=g+1|0;if((g|0)==256)break;else h=h+-65793|0}}else if((i|0)==3){j=kI(b)|0;l=d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24;a[k>>0]=l;a[k+1>>0]=l>>8;a[k+2>>0]=l>>16;a[k+3>>0]=l>>24;l=k+1020|0;j=j+4|0;j=d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24;a[l>>0]=j;a[l+1>>0]=j>>8;a[l+2>>0]=j>>16;a[l+3>>0]=j>>24}if(!p){p=f;return p|0}if(!o){g=0;do{qJ(f,g)|0;qJ(b,g)|0;g=g+1|0}while((g|0)!=(p|0));return f|0}else j=0;do{i=qJ(f,j)|0;g=qJ(b,j)|0;h=0;do{a[i+h>>0]=(((d[g+(h>>>3)>>0]|0)&128>>>(h&7)|0)!=0)<<31>>31;h=h+1|0}while((h|0)!=(o|0));j=j+1|0}while((j|0)!=(p|0));return f|0}case 24:{if(!p){p=f;return p|0}k=(o|0)==0;j=0;do{h=qJ(f,j)|0;i=qJ(b,j)|0;if(!k){g=0;while(1){a[h+g>>0]=~~(+(d[i+2>>0]|0|0)*.2125999927520752+ +(d[i+1>>0]|0|0)*.7152000069618225+ +(d[i>>0]|0|0)*.0722000002861023+.5);g=g+1|0;if((g|0)==(o|0))break;else i=i+3|0}}j=j+1|0}while((j|0)!=(p|0));return f|0}case 32:{if(!p){p=f;return p|0}h=(o|0)==0;j=0;do{k=qJ(f,j)|0;i=qJ(b,j)|0;if(!h){g=0;while(1){a[k+g>>0]=~~(+(d[i+2>>0]|0|0)*.2125999927520752+ +(d[i+1>>0]|0|0)*.7152000069618225+ +(d[i>>0]|0|0)*.0722000002861023+.5);g=g+1|0;if((g|0)==(o|0))break;else i=i+4|0}}j=j+1|0}while((j|0)!=(p|0));return f|0}default:break a}}while(0);p=UH(b)|0;return p|0}function JI(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0,h=0;if((e|0)>0)g=0;else return;while(1){h=c+g|0;a[b>>0]=a[f+((d[h>>0]|0)<<2)>>0]|0;a[b+1>>0]=a[f+((d[h>>0]|0)<<2)+1>>0]|0;a[b+2>>0]=a[f+((d[h>>0]|0)<<2)+2>>0]|0;g=g+1|0;if((g|0)==(e|0))break;else b=b+3|0}return}function KI(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((d|0)>0)e=0;else return;while(1){a[b>>0]=a[c>>0]|0;a[b+1>>0]=a[c+1>>0]|0;a[b+2>>0]=a[c+2>>0]|0;e=e+1|0;if((e|0)==(d|0))break;else{c=c+4|0;b=b+3|0}}return}function LI(b){b=b|0;var c=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if(!(ZH(b)|0)){p=0;return p|0}f=YH(b)|0;c=VH(b)|0;if(!((c|0)==1|(c|0)==9|(c|0)==10)){p=0;return p|0}o=WH(b)|0;p=XH(b)|0;if((c|0)==9){c=PH(o,p,24,16711680,65280,255)|0;if(!c){p=0;return p|0}AI(c,b)|0;k=dI(b)|0;l=dI(c)|0;h=fI(b)|0;f=fI(c)|0;if((p|0)<=0){p=c;return p|0}i=(o|0)>0;j=0;while(1){if(i){g=0;do{b=h+(g*6|0)|0;a[f+(g*3|0)+2>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;b=h+(g*6|0)+2|0;a[f+(g*3|0)+1>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;b=h+(g*6|0)+4|0;a[f+(g*3|0)>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;g=g+1|0}while((g|0)!=(o|0))}j=j+1|0;if((j|0)==(p|0))break;else{f=f+l|0;h=h+k|0}}return c|0}else if((c|0)==1){if((f|0)==24){p=UH(b)|0;return p|0}c=PH(o,p,24,16711680,65280,255)|0;if(!c){p=0;return p|0}AI(c,b)|0;switch(f|0){case 1:{if((p|0)<=0){p=c;return p|0}if((o|0)>0)j=0;else{f=0;do{qJ(c,f)|0;qJ(b,f)|0;f=f+1|0}while((f|0)!=(p|0));return c|0}do{f=qJ(c,j)|0;g=qJ(b,j)|0;h=kI(b)|0;i=0;while(1){n=((d[g+(i>>3)>>0]|0)&128>>>(i&7)|0)!=0&1;a[f>>0]=a[h+(n<<2)>>0]|0;a[f+1>>0]=a[h+(n<<2)+1>>0]|0;a[f+2>>0]=a[h+(n<<2)+2>>0]|0;i=i+1|0;if((i|0)==(o|0))break;else f=f+3|0}j=j+1|0}while((j|0)!=(p|0));return c|0}case 16:{if((p|0)<=0){p=c;return p|0}l=(o|0)>0;j=0;do{if(((_H(b)|0)==63488?($H(b)|0)==2016:0)?(aI(b)|0)==31:0){h=qJ(c,j)|0;g=qJ(b,j)|0;if(l){f=0;while(1){n=g+(f<<1)|0;a[h+2>>0]=((((e[n>>1]|0)>>>11)*255|0)>>>0)/31|0;a[h+1>>0]=((((e[n>>1]|0)>>>5&63)*255|0)>>>0)/63|0;a[h>>0]=((((e[n>>1]|0)&31)*255|0)>>>0)/31|0;f=f+1|0;if((f|0)==(o|0))break;else h=h+3|0}}}else k=37;if((k|0)==37?(k=0,m=qJ(c,j)|0,i=qJ(b,j)|0,l):0){h=m;f=0;while(1){n=i+(f<<1)|0;a[h+2>>0]=((((e[n>>1]|0)>>>10&31)*255|0)>>>0)/31|0;a[h+1>>0]=((((e[n>>1]|0)>>>5&31)*255|0)>>>0)/31|0;a[h>>0]=((((e[n>>1]|0)&31)*255|0)>>>0)/31|0;f=f+1|0;if((f|0)==(o|0))break;else h=h+3|0}}j=j+1|0}while((j|0)!=(p|0));return c|0}case 32:{if((p|0)<=0){p=c;return p|0}j=(o|0)>0;i=0;do{g=qJ(c,i)|0;f=qJ(b,i)|0;if(j){h=0;while(1){a[g>>0]=a[f>>0]|0;a[g+1>>0]=a[f+1>>0]|0;a[g+2>>0]=a[f+2>>0]|0;h=h+1|0;if((h|0)==(o|0))break;else{f=f+4|0;g=g+3|0}}}i=i+1|0}while((i|0)!=(p|0));return c|0}case 8:{if((p|0)<=0){p=c;return p|0}g=(o|0)>0;k=0;do{h=qJ(c,k)|0;j=qJ(b,k)|0;i=kI(b)|0;if(g){f=0;while(1){n=j+f|0;a[h>>0]=a[i+((d[n>>0]|0)<<2)>>0]|0;a[h+1>>0]=a[i+((d[n>>0]|0)<<2)+1>>0]|0;a[h+2>>0]=a[i+((d[n>>0]|0)<<2)+2>>0]|0;f=f+1|0;if((f|0)==(o|0))break;else h=h+3|0}}k=k+1|0}while((k|0)!=(p|0));return c|0}case 4:{if((p|0)<=0){p=c;return p|0}if((o|0)>0)n=0;else{f=0;do{qJ(c,f)|0;qJ(b,f)|0;f=f+1|0}while((f|0)!=(p|0));return c|0}do{j=qJ(c,n)|0;i=qJ(b,n)|0;k=kI(b)|0;m=0;h=0;g=0;while(1){f=(h|0)!=0;l=i+g|0;h=d[l>>0]|0;if(f){a[j>>0]=a[k+((h&15)<<2)>>0]|0;a[j+1>>0]=a[k+(((d[l>>0]|0)&15)<<2)+1>>0]|0;h=(d[l>>0]|0)&15;l=g+1|0}else{a[j>>0]=a[k+(h>>>4<<2)>>0]|0;a[j+1>>0]=a[k+((d[l>>0]|0)>>>4<<2)+1>>0]|0;h=(d[l>>0]|0)>>>4;l=g}a[j+2>>0]=a[k+(h<<2)+2>>0]|0;m=m+1|0;if((m|0)==(o|0))break;else{j=j+3|0;h=f&1^1;g=l}}n=n+1|0}while((n|0)!=(p|0));return c|0}default:{p=0;return p|0}}}else if((c|0)==10){c=PH(o,p,24,16711680,65280,255)|0;if(!c){p=0;return p|0}AI(c,b)|0;l=dI(b)|0;k=dI(c)|0;h=fI(b)|0;f=fI(c)|0;if((p|0)<=0){p=c;return p|0}i=(o|0)>0;j=0;while(1){if(i){g=0;do{b=h+(g<<3)|0;a[f+(g*3|0)+2>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;b=h+(g<<3)+2|0;a[f+(g*3|0)+1>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;b=h+(g<<3)+4|0;a[f+(g*3|0)>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;g=g+1|0}while((g|0)!=(o|0))}j=j+1|0;if((j|0)==(p|0))break;else{f=f+k|0;h=h+l|0}}return c|0}else{p=0;return p|0}return 0}function MI(b){b=b|0;var c=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;if(!(ZH(b)|0)){q=0;return q|0}h=YH(b)|0;c=VH(b)|0;if(!((c|0)==1|(c|0)==9|(c|0)==10)){q=0;return q|0}p=WH(b)|0;q=XH(b)|0;if((c|0)==10){c=PH(p,q,32,16711680,65280,255)|0;if(!c){q=0;return q|0}AI(c,b)|0;l=dI(b)|0;k=dI(c)|0;h=fI(b)|0;f=fI(c)|0;if((q|0)<=0){q=c;return q|0}i=(p|0)>0;j=0;while(1){if(i){g=0;do{b=h+(g<<3)|0;a[f+(g<<2)+2>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;b=h+(g<<3)+2|0;a[f+(g<<2)+1>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;b=h+(g<<3)+4|0;a[f+(g<<2)>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;b=h+(g<<3)+6|0;a[f+(g<<2)+3>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;g=g+1|0}while((g|0)!=(p|0))}j=j+1|0;if((j|0)==(q|0))break;else{f=f+k|0;h=h+l|0}}return c|0}else if((c|0)==1){if((h|0)==32){q=UH(b)|0;return q|0}c=PH(p,q,32,16711680,65280,255)|0;if(!c){q=0;return q|0}AI(c,b)|0;g=oI(b)|0;switch(h|0){case 24:{if((q|0)<=0){q=c;return q|0}j=(p|0)>0;i=0;do{g=qJ(c,i)|0;f=qJ(b,i)|0;if(j){h=0;while(1){a[g+2>>0]=a[f+2>>0]|0;a[g+1>>0]=a[f+1>>0]|0;a[g>>0]=a[f>>0]|0;a[g+3>>0]=-1;h=h+1|0;if((h|0)==(p|0))break;else{f=f+3|0;g=g+4|0}}}i=i+1|0}while((i|0)!=(q|0));return c|0}case 1:{f=(q|0)>0;if(!g){if(!f){q=c;return q|0}if((p|0)>0)j=0;else{f=0;do{qJ(c,f)|0;qJ(b,f)|0;f=f+1|0}while((f|0)!=(q|0));return c|0}do{f=qJ(c,j)|0;g=qJ(b,j)|0;h=kI(b)|0;i=0;while(1){o=((d[g+(i>>3)>>0]|0)&128>>>(i&7)|0)!=0&1;a[f>>0]=a[h+(o<<2)>>0]|0;a[f+1>>0]=a[h+(o<<2)+1>>0]|0;a[f+2>>0]=a[h+(o<<2)+2>>0]|0;a[f+3>>0]=-1;i=i+1|0;if((i|0)==(p|0))break;else f=f+4|0}j=j+1|0}while((j|0)!=(q|0));return c|0}if(!f){q=c;return q|0}if((p|0)>0)m=0;else{f=0;do{qJ(c,f)|0;qJ(b,f)|0;f=f+1|0}while((f|0)!=(q|0));return c|0}do{f=qJ(c,m)|0;g=qJ(b,m)|0;l=kI(b)|0;i=pI(b)|0;j=rI(b)|0;k=0;while(1){h=((d[g+(k>>3)>>0]|0)&128>>>(k&7)|0)!=0&1;a[f>>0]=a[l+(h<<2)>>0]|0;a[f+1>>0]=a[l+(h<<2)+1>>0]|0;a[f+2>>0]=a[l+(h<<2)+2>>0]|0;if((h|0)<(j|0))h=a[i+h>>0]|0;else h=-1;a[f+3>>0]=h;k=k+1|0;if((k|0)==(p|0))break;else f=f+4|0}m=m+1|0}while((m|0)!=(q|0));return c|0}case 16:{if((q|0)<=0){q=c;return q|0}l=(p|0)>0;m=0;do{if(((_H(b)|0)==63488?($H(b)|0)==2016:0)?(aI(b)|0)==31:0){h=qJ(c,m)|0;g=qJ(b,m)|0;if(l){f=0;while(1){o=g+(f<<1)|0;a[h+2>>0]=((((e[o>>1]|0)>>>11)*255|0)>>>0)/31|0;a[h+1>>0]=((((e[o>>1]|0)>>>5&63)*255|0)>>>0)/63|0;a[h>>0]=((((e[o>>1]|0)&31)*255|0)>>>0)/31|0;a[h+3>>0]=-1;f=f+1|0;if((f|0)==(p|0))break;else h=h+4|0}}}else k=56;if((k|0)==56?(k=0,j=qJ(c,m)|0,i=qJ(b,m)|0,l):0){h=j;f=0;while(1){o=i+(f<<1)|0;a[h+2>>0]=((((e[o>>1]|0)>>>10&31)*255|0)>>>0)/31|0;a[h+1>>0]=((((e[o>>1]|0)>>>5&31)*255|0)>>>0)/31|0;a[h>>0]=((((e[o>>1]|0)&31)*255|0)>>>0)/31|0;a[h+3>>0]=-1;f=f+1|0;if((f|0)==(p|0))break;else h=h+4|0}}m=m+1|0}while((m|0)!=(q|0));return c|0}case 4:{f=(q|0)>0;if(g){if(f)f=0;else{q=c;return q|0}do{i=qJ(c,f)|0;k=qJ(b,f)|0;n=kI(b)|0;o=pI(b)|0;ZR(i,k,p,n,o,rI(b)|0);f=f+1|0}while((f|0)!=(q|0));return c|0}if(!f){q=c;return q|0}i=(p|0)>0;o=0;do{h=qJ(c,o)|0;k=qJ(b,o)|0;n=kI(b)|0;if(i){j=0;l=0;m=0;while(1){g=(l|0)!=0;l=k+m|0;f=d[l>>0]|0;if(g){a[h>>0]=a[n+((f&15)<<2)>>0]|0;a[h+1>>0]=a[n+(((d[l>>0]|0)&15)<<2)+1>>0]|0;l=(d[l>>0]|0)&15;f=m+1|0}else{a[h>>0]=a[n+(f>>>4<<2)>>0]|0;a[h+1>>0]=a[n+((d[l>>0]|0)>>>4<<2)+1>>0]|0;l=(d[l>>0]|0)>>>4;f=m}a[h+2>>0]=a[n+(l<<2)+2>>0]|0;a[h+3>>0]=-1;j=j+1|0;if((j|0)==(p|0))break;else{h=h+4|0;l=g&1^1;m=f}}}o=o+1|0}while((o|0)!=(q|0));return c|0}case 8:{f=(q|0)>0;if(!g){if(!f){q=c;return q|0}g=(p|0)>0;k=0;do{f=qJ(c,k)|0;j=qJ(b,k)|0;i=kI(b)|0;if(g){h=0;while(1){o=j+h|0;a[f>>0]=a[i+((d[o>>0]|0)<<2)>>0]|0;a[f+1>>0]=a[i+((d[o>>0]|0)<<2)+1>>0]|0;a[f+2>>0]=a[i+((d[o>>0]|0)<<2)+2>>0]|0;a[f+3>>0]=-1;h=h+1|0;if((h|0)==(p|0))break;else f=f+4|0}}k=k+1|0}while((k|0)!=(q|0));return c|0}if(!f){q=c;return q|0}g=(p|0)>0;n=0;do{h=qJ(c,n)|0;m=qJ(b,n)|0;j=kI(b)|0;i=pI(b)|0;k=rI(b)|0;if(g){l=0;while(1){f=m+l|0;a[h>>0]=a[j+((d[f>>0]|0)<<2)>>0]|0;a[h+1>>0]=a[j+((d[f>>0]|0)<<2)+1>>0]|0;a[h+2>>0]=a[j+((d[f>>0]|0)<<2)+2>>0]|0;f=d[f>>0]|0;if((f|0)<(k|0))f=a[i+f>>0]|0;else f=-1;a[h+3>>0]=f;l=l+1|0;if((l|0)==(p|0))break;else h=h+4|0}}n=n+1|0}while((n|0)!=(q|0));return c|0}default:{q=0;return q|0}}}else if((c|0)==9){c=PH(p,q,32,16711680,65280,255)|0;if(!c){q=0;return q|0}AI(c,b)|0;k=dI(b)|0;l=dI(c)|0;h=fI(b)|0;f=fI(c)|0;if((q|0)<=0){q=c;return q|0}i=(p|0)>0;j=0;while(1){if(i){g=0;do{b=h+(g*6|0)|0;a[f+(g<<2)+2>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;b=h+(g*6|0)+2|0;a[f+(g<<2)+1>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;b=h+(g*6|0)+4|0;a[f+(g<<2)>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;a[f+(g<<2)+3>>0]=-1;g=g+1|0}while((g|0)!=(p|0))}j=j+1|0;if((j|0)==(q|0))break;else{f=f+l|0;h=h+k|0}}return c|0}else{q=0;return q|0}return 0}function NI(c){c=c|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if(!(ZH(c)|0)){c=0;return c|0}f=VH(c)|0;if((f|0)==9){c=UH(c)|0;return c|0}else if((f|0)==1)if((YH(c)|0)!=24?(YH(c)|0)!=32:0){e=LI(c)|0;if(!e){c=0;return c|0}}else e=c;else if((f|0)==10|(f|0)==2)e=c;else{c=0;return c|0}k=WH(e)|0;l=XH(e)|0;m=QH(9,k,l,8,0,0,0)|0;if(!m){if((e|0)==(c|0)){c=0;return c|0}RH(e);c=0;return c|0}AI(m,e)|0;a:do if((f|0)==2){if(l){if(!k){f=0;while(1){qJ(e,f)|0;qJ(m,f)|0;f=f+1|0;if((f|0)==(l|0))break a}}else i=0;do{f=qJ(e,i)|0;g=qJ(m,i)|0;h=0;do{n=f+(h<<1)|0;j=b[n>>1]|0;o=g+(h*6|0)|0;a[o>>0]=j;a[o+1>>0]=j>>8;o=b[n>>1]|0;j=g+(h*6|0)+2|0;a[j>>0]=o;a[j+1>>0]=o>>8;n=b[n>>1]|0;j=g+(h*6|0)+4|0;a[j>>0]=n;a[j+1>>0]=n>>8;h=h+1|0}while((h|0)!=(k|0));i=i+1|0}while((i|0)!=(l|0))}}else if((f|0)==10){if(l){if(!k){f=0;while(1){qJ(e,f)|0;qJ(m,f)|0;f=f+1|0;if((f|0)==(l|0))break a}}else i=0;do{f=qJ(e,i)|0;g=qJ(m,i)|0;h=0;do{n=f+(h<<3)|0;n=d[n>>0]|d[n+1>>0]<<8;o=g+(h*6|0)|0;a[o>>0]=n;a[o+1>>0]=n>>8;o=f+(h<<3)+2|0;o=d[o>>0]|d[o+1>>0]<<8;n=g+(h*6|0)+2|0;a[n>>0]=o;a[n+1>>0]=o>>8;n=f+(h<<3)+4|0;n=d[n>>0]|d[n+1>>0]<<8;o=g+(h*6|0)+4|0;a[o>>0]=n;a[o+1>>0]=n>>8;h=h+1|0}while((h|0)!=(k|0));i=i+1|0}while((i|0)!=(l|0))}}else if((f|0)==1?(j=eI(e)|0,j=(j>>>0)/((WH(e)|0)>>>0)|0,(l|0)!=0):0){if(!k){f=0;while(1){qJ(e,f)|0;qJ(m,f)|0;f=f+1|0;if((f|0)==(l|0))break a}}else i=0;do{f=qJ(e,i)|0;h=qJ(m,i)|0;g=0;while(1){n=(d[f+2>>0]|0)<<8&65535;o=h+(g*6|0)|0;a[o>>0]=n;a[o+1>>0]=n>>8;o=(d[f+1>>0]|0)<<8&65535;n=h+(g*6|0)+2|0;a[n>>0]=o;a[n+1>>0]=o>>8;n=(d[f>>0]|0)<<8&65535;o=h+(g*6|0)+4|0;a[o>>0]=n;a[o+1>>0]=n>>8;g=g+1|0;if((g|0)==(k|0))break;else f=f+j|0}i=i+1|0}while((i|0)!=(l|0))}while(0);if((e|0)==(c|0)){o=m;return o|0}RH(e);o=m;return o|0}function OI(){var a=0,b=0;a=i;i=i+16|0;b=a;c[b>>2]=3;c[b+4>>2]=17;c[b+8>>2]=0;Xea(301960,301976,b)|0;i=a;return 301960}function PI(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+576|0;r=s+64|0;n=s;o=s+16|0;p=s+32|0;q=s+48|0;if(!d){i=s;return}if(!((c[75498]|0)!=0|(c[75500]|0)!=0)){i=s;return}sfa(r|0,0,512)|0;c[n>>2]=e;j=tfa(d|0)|0;j=j>>>0>512?512:j;if((j|0)>0){l=o+1|0;m=p+1|0;k=q+1|0;g=0;f=0;do{e=a[d+g>>0]|0;a:do if(e<<24>>24==37){h=g+1|0;if((h|0)>=(j|0)){a[r+f>>0]=37;e=g;f=f+1|0;break}switch(zea(a[d+h>>0]|0)|0){case 115:{e=c[n>>2]|0;g=c[e>>2]|0;c[n>>2]=e+4;ufa(r|0,g|0)|0;e=h;f=(tfa(g|0)|0)+f|0;break a}case 111:{g=c[n>>2]|0;e=c[g>>2]|0;c[n>>2]=g+4;if((e|0)<0){a[o>>0]=45;a[(_R(0-e|0,l,8)|0)>>0]=0}else a[(_R(e,o,8)|0)>>0]=0;ufa(r|0,o|0)|0;e=h;f=(tfa(o|0)|0)+f|0;break a}case 100:case 105:{g=c[n>>2]|0;e=c[g>>2]|0;c[n>>2]=g+4;if((e|0)<0){a[p>>0]=45;a[(_R(0-e|0,m,10)|0)>>0]=0}else a[(_R(e,p,10)|0)>>0]=0;ufa(r|0,p|0)|0;e=h;f=(tfa(p|0)|0)+f|0;break a}case 120:{g=c[n>>2]|0;e=c[g>>2]|0;c[n>>2]=g+4;if((e|0)<0){a[q>>0]=45;a[(_R(0-e|0,k,16)|0)>>0]=0}else a[(_R(e,q,16)|0)>>0]=0;ufa(r|0,q|0)|0;e=h;f=(tfa(q|0)|0)+f|0;break a}case 37:{a[r+f>>0]=37;e=g;f=f+1|0;break a}default:{e=g;break a}}}else{a[r+f>>0]=e;e=g;f=f+1|0}while(0);g=e+1|0}while((g|0)<(j|0))}e=c[75498]|0;if(e)Cd[e&255](b,r);e=c[75500]|0;if(!e){i=s;return}Cd[e&255](b,r);i=s;return}function QI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Na(a|0,b|0,c|0,d|0)|0}function RI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Xb(a|0,b|0,c|0,d|0)|0}function SI(a,b,c){a=a|0;b=b|0;c=c|0;return uc(a|0,b|0,c|0)|0}function TI(a){a=a|0;return nb(a|0)|0}function UI(b){b=b|0;var c=0;a[b>>0]=120;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;c=b+8|0;a[c>>0]=157;a[c+1>>0]=0;a[c+2>>0]=0;a[c+3>>0]=0;c=b+12|0;a[c>>0]=159;a[c+1>>0]=0;a[c+2>>0]=0;a[c+3>>0]=0;b=b+4|0;a[b>>0]=121;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;return}function VI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=c[e>>2]|0;if(!d){l=0;return l|0}j=e+4|0;k=e+16|0;i=e+12|0;g=a;h=c[k>>2]|0;e=0;while(1){a=c[j>>2]|0;f=a-h|0;if((f|0)<(b|0))break;qfa(g|0,(c[i>>2]|0)+h|0,b|0)|0;h=(c[k>>2]|0)+b|0;c[k>>2]=h;e=e+1|0;if(e>>>0>=d>>>0){l=8;break}else g=g+b|0}if((l|0)==8)return e|0;if((f|0)>0){qfa(g|0,(c[i>>2]|0)+h|0,f|0)|0;a=c[j>>2]|0}c[k>>2]=a;l=e;return l|0} -function Tl(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=c[a+652>>2]|0;a=Ah(c[a+96>>2]|0,89040)|0;if(!a){l=0;return l|0}i=e+12|0;if(!(c[i>>2]|0)){l=0;return l|0}j=e+1160|0;h=e+1312|0;g=e+1316|0;f=a+20|0;a=0;while(1){m=b[(c[j>>2]|0)+(a<<1)>>1]|0;e=m&65535;if((m&65535)>390){e=e+-391|0;if((c[h>>2]|0)>>>0>e>>>0){k=c[(c[g>>2]|0)+(e<<2)>>2]|0;l=8}}else{k=Ed[c[f>>2]&511](e)|0;l=8}if(((l|0)==8?(l=0,(k|0)!=0):0)?(gfa(d,k)|0)==0:0){l=11;break}a=a+1|0;if(a>>>0>=(c[i>>2]|0)>>>0){a=0;l=11;break}}if((l|0)==11)return a|0;return 0}function Ul(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[(c[(c[a>>2]|0)+96>>2]|0)+4>>2]|0;c[b>>2]=0;c[b+4>>2]=0;e=c[a+12>>2]|0;if((e|0)==6640|(e|0)==6680){b=0;return b|0}d=Ah(yh(d,85592)|0,83616)|0;if(!d){b=0;return b|0}d=c[d>>2]|0;if(!d){b=0;return b|0}b=Pd[d&511](a,b)|0;return b|0}function Vl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=c[a+652>>2]|0;if(!h){e=0;return e|0}f=c[h+1456>>2]|0;if((f|0)==65535){e=6;return e|0}if(b){g=h+2964|0;a=c[g>>2]|0;if(!a){if(f>>>0>390){a=f+-391|0;if((c[h+1312>>2]|0)>>>0>a>>>0)a=c[(c[h+1316>>2]|0)+(a<<2)>>2]|0;else a=0}else{a=c[h+2956>>2]|0;if(!a)a=0;else a=Ed[c[a+20>>2]&511](f)|0}c[g>>2]=a}c[b>>2]=a}if(d){g=h+2968|0;a=c[g>>2]|0;if(!a){a=c[h+1460>>2]|0;do if((a|0)!=65535)if(a>>>0>390){a=a+-391|0;if((c[h+1312>>2]|0)>>>0<=a>>>0){a=0;break}a=c[(c[h+1316>>2]|0)+(a<<2)>>2]|0;break}else{f=c[h+2956>>2]|0;if(!f){a=0;break}a=Ed[c[f+20>>2]&511](a)|0;break}else a=0;while(0);c[g>>2]=a}c[d>>2]=a}if(!e){e=0;return e|0}c[e>>2]=c[h+1464>>2];e=0;return e|0}function Wl(b,d){b=b|0;d=d|0;b=c[b+652>>2]|0;a[d>>0]=0;if(!b)return 0;if((c[b+1456>>2]|0)==65535)return 0;a[d>>0]=1;return 0}function Xl(a,b,d){a=a|0;b=b|0;d=d|0;a=c[a+652>>2]|0;if(a)if((c[a+1456>>2]|0)!=65535?(c[a+12>>2]|0)>>>0>=b>>>0:0)if(!d)a=0;else{c[d>>2]=e[(c[a+1160>>2]|0)+(b<<1)>>1];a=0}else a=6;else a=0;return a|0}function Yl(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!(gfa(d,10448)|0)){i=c[e>>2]|0;j=c[e+4>>2]|0;k=c[e+8>>2]|0;l=c[e+12>>2]|0;f=c[e+16>>2]|0;g=c[e+20>>2]|0;h=c[e+24>>2]|0;d=c[e+28>>2]|0;if(((i|0)>(k|0)?1:(j|i|k|l|f|g|h|d|0)<0)|(k|0)>(f|0)){b=6;return b|0}if((f|0)>(h|0)|(j|0)>500|(l|0)>500|(g|0)>500|(d|0)>500){b=6;return b|0}c[b+36>>2]=i;c[b+40>>2]=j;c[b+44>>2]=k;c[b+48>>2]=l;c[b+52>>2]=f;c[b+56>>2]=g;c[b+60>>2]=h;c[b+64>>2]=d;b=0;return b|0}if(!(gfa(d,10472)|0)){if((c[e>>2]|0)!=1){b=7;return b|0}c[b+28>>2]=1;b=0;return b|0}else{if(gfa(d,10488)|0){b=12;return b|0}a[b+32>>0]=a[e>>0]|0;b=0;return b|0}return 0}function Zl(b,d,e){b=b|0;d=d|0;e=e|0;if(!(gfa(d,10448)|0)){c[e>>2]=c[b+36>>2];c[e+4>>2]=c[b+40>>2];c[e+8>>2]=c[b+44>>2];c[e+12>>2]=c[b+48>>2];c[e+16>>2]=c[b+52>>2];c[e+20>>2]=c[b+56>>2];c[e+24>>2]=c[b+60>>2];c[e+28>>2]=c[b+64>>2];e=0;return e|0}if(!(gfa(d,10472)|0)){c[e>>2]=c[b+28>>2];e=0;return e|0}if(gfa(d,10488)|0){e=12;return e|0}a[e>>0]=a[b+32>>0]|0;e=0;return e|0}function _l(a){a=a|0;return 0}function $l(a){a=a|0;return}function am(a,b){a=a|0;b=b|0;return Jg(12792,b)|0}function bm(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;R=i;i=i+640|0;N=R+112|0;y=R+368|0;Q=R+8|0;P=R;c[f>>2]=1;K=f+136|0;do if(!(c[K>>2]|0)){h=zh(c[(c[f+96>>2]|0)+4>>2]|0,89064)|0;if(!h){g=11;i=R;return g|0}else{c[K>>2]=h;break}}while(0);h=f+320|0;if(!(c[h>>2]|0))c[h>>2]=zh(c[(c[f+96>>2]|0)+4>>2]|0,86544)|0;h=bh(e,0)|0;if(h){g=h;i=R;return g|0}J=f+100|0;D=c[J>>2]|0;j=Q+0|0;e=j+104|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(e|0));E=f+104|0;w=c[E>>2]|0;h=c[K>>2]|0;j=Q+0|0;e=j+100|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(e|0));Yd[c[c[h+4>>2]>>2]&63](Q,0,0,D);M=Q+72|0;c[M>>2]=w;t=Qh(w)|0;h=Uh(w,31)|0;a:do if(!h){H=(hfa(c[w+32>>2]|0,12728,31)|0)==0;Xh(w);if(!H){c[P>>2]=2;break}l=w+4|0;n=y+10|0;s=y;q=10-s|0;u=Q+76|0;F=Q+84|0;v=Q+80|0;r=Q+4|0;x=Q+8|0;z=Q+96|0;A=Q+32|0;B=Q+28|0;C=Q+12|0;s=7-s|0;b:while(1){j=Qh(w)|0;h=c[l>>2]|0;o=Qh(w)|0;if((h|0)==(o|0)){h=3;O=37;break a}o=h-o|0;p=0;e=y;h=266;c:while(1){o=(h|0)<(o|0)?h:o;h=Lh(w,e,o)|0;if(h){O=37;break a}if((o|0)<256)a[y+(o+p)>>0]=0;H=p+-10+o|0;e=y+H|0;if((H|0)>0){p=a[y>>0]|0;o=y;while(1){if(p<<24>>24==83?(hfa(o,12760,9)|0)==0:0){h=j;O=19;break c}h=o+1|0;p=a[h>>0]|0;if(p<<24>>24==115?(hfa(o,12776,6)|0)==0:0){h=j;O=23;break c}if(h>>>0>=e>>>0)break;else o=h}}else h=y;rfa(y|0,h|0,10)|0;h=c[l>>2]|0;o=Qh(w)|0;if((h|0)==(o|0)){h=3;O=37;break a}else{o=h-o|0;p=10;j=j+256|0;e=n;h=256}}if((O|0)==19){O=0;o=q+o|0}else if((O|0)==23){O=0;o=s+o|0}m=o+h|0;o=m-t|0;h=bh(w,t)|0;if(h){O=37;break a}h=Th(w,o,u)|0;if(h){O=37;break a}c[F>>2]=m;c[v>>2]=o;j=c[u>>2]|0;c[r>>2]=j;c[Q>>2]=j;c[x>>2]=j+o;c[z>>2]=-1;Bd[c[A>>2]&511](Q);Bd[c[B>>2]&511](Q);h=c[Q>>2]|0;Bd[c[A>>2]&511](Q);Bd[c[B>>2]&511](Q);p=c[x>>2]|0;o=c[Q>>2]|0;if(o>>>0

>>0){e=h;while(1){h=c[C>>2]|0;if(h){O=37;break a}if((a[o>>0]|0)==83?(hfa(o,12760,9)|0)==0:0){h=e;break b}if((a[o+1>>0]|0)==115?(hfa(o,12776,6)|0)==0:0){h=2;O=37;break a}Bd[c[A>>2]&511](Q);Bd[c[B>>2]&511](Q);h=c[Q>>2]|0;if(h>>>0

>>0){H=o;j=e;o=h;e=H}else break}}Vh(w,u);h=bh(w,m)|0;if(h){O=37;break a}}if(!(hfa(j,12784,5)|0))c[Q+88>>2]=$ea(h)|0;c[P>>2]=0;h=c[u>>2]|0;v=c[v>>2]|0;c[Q>>2]=h;w=h+v|0;c[x>>2]=w;c[C>>2]=0;I=f+300|0;n=f+140|0;H=f+304|0;q=Q+68|0;r=Q+64|0;s=f+164|0;t=f+312|0;u=f+196|0;v=h+(v+-18)|0;d:while(1){c[Q>>2]=h;Bd[c[B>>2]&511](Q);m=c[Q>>2]|0;j=m>>>0>>0;o=j?m+-17|0:v;if(h>>>0>>0)do{if(((a[h>>0]|0)==37?(hfa(h,10616,17)|0)==0:0)?(c[I>>2]|0)>0:0)c[z>>2]=(c[z>>2]|0)+1;h=h+1|0}while((h|0)!=(o|0));if(!j){O=47;break}Bd[c[A>>2]&511](Q);l=c[Q>>2]|0;h=c[C>>2]|0;if(!(l>>>0>>0&(h|0)==0))break;if(!((a[m>>0]|0)==47&(m+2|0)>>>0>>0)){h=l;continue}h=m+1|0;p=l-h|0;if((p+-1|0)>>>0>=21){h=l;continue}e=a[h>>0]|0;e:do if((p|0)>1){h=12480;j=10640;while(1){f:do if(e<<24>>24==(a[h>>0]|0)?(p|0)==(tfa(h|0)|0):0){o=1;while(1){y=o;o=o+1|0;if((a[m+o>>0]|0)!=(a[h+y>>0]|0))break f;if((o|0)>=(p|0))break e}}while(0);j=j+36|0;h=c[j>>2]|0;if(!h){h=l;continue d}}}else{h=12480;j=10640;while(1){if(e<<24>>24==(a[h>>0]|0)?(p|0)==(tfa(h|0)|0):0)break e;j=j+36|0;h=c[j>>2]|0;if(!h){h=l;continue d}}}while(0);o=c[j+8>>2]|0;do if((o|0)!=11){h=c[j+4>>2]|0;if((h|0)==3)h=s;else if((h|0)==5)h=u;else if(!h)h=n;else if((h|0)==2)h=t;else{h=c[z>>2]|0;if((h|0)<0){O=71;break d}if((h|0)>=(c[I>>2]|0)){O=71;break d}h=(c[H>>2]|0)+(h*252|0)|0}c[N>>2]=h;if((o+-9|0)>>>0<2){h=Qd[c[q>>2]&127](Q,j,N,0,0)|0;break}else{h=Qd[c[r>>2]&127](Q,j,N,0,0)|0;break}}else{Cd[c[j+12>>2]&255](f,Q);h=c[C>>2]|0}while(0);c[C>>2]=h;if(h){O=75;break}h=c[Q>>2]|0}if((O|0)==47)h=c[C>>2]|0;else if((O|0)==71){c[C>>2]=160;h=160;O=75}if((O|0)==75){c[P>>2]=h;break}c[P>>2]=h;if(!((h|0)!=0|(g|0)<0)?(G=yg(D,40,P)|0,L=f+328|0,c[L>>2]=G,(c[P>>2]|0)==0):0){t=Q+88|0;h=c[t>>2]|0;if(!h){j=G+0|0;h=(c[E>>2]|0)+0|0;e=j+40|0;do{c[j>>2]=c[h>>2];j=j+4|0;h=h+4|0}while((j|0)<(e|0));c[f+308>>2]=c[F>>2]}else{j=yg(D,h,P)|0;s=f+324|0;c[s>>2]=j;if(c[P>>2]|0)break;h=c[t>>2]|0;r=c[E>>2]|0;if(bh(r,c[F>>2]|0)|0)break;q=j+h|0;g:do if((h|0)>0){n=r+4|0;h=N;e=N;p=1;while(1){h:while(1){if(h>>>0>=e>>>0){e=Qh(r)|0;G=c[n>>2]|0;h=G-e|0;if((G|0)==(e|0))break a;if(Lh(r,N,h>>>0<256?h:256)|0)break a;h=N;e=N+((Qh(r)|0)-e)|0}l=a[h>>0]|0;m=l&255;if((m+-48|0)>>>0<10){O=93;break}if((l+-97&255)<6){O=94;break}if((l+-65&255)<6){O=95;break}switch(l<<24>>24){case 62:{o=1;m=0;break h}case 0:case 12:case 10:case 13:case 9:case 32:break;default:break a}h=h+1|0}if((O|0)==93){O=0;o=0;m=m+208&255}else if((O|0)==94){O=0;o=0;m=m+159&255}else if((O|0)==95){O=0;o=0;m=m+201&255}if(!(p<<24>>24)){a[j>>0]=(d[j>>0]|0)+(m&255);j=j+1|0}else a[j>>0]=(m&255)<<4;if(o<<24>>24)break g;if(j>>>0>>0){h=h+1|0;p=1-(p&255)&255}else break}}while(0);Ng(c[L>>2]|0,c[s>>2]|0,c[t>>2]|0);c[f+308>>2]=0}B=c[J>>2]|0;z=c[L>>2]|0;h=c[K>>2]|0;j=Dg(B,8,0,c[I>>2]|0,0,N)|0;A=f+316|0;c[A>>2]=j;i:do if((c[N>>2]|0)==0?(c[I>>2]|0)>0:0){x=f+308|0;y=z+32|0;v=h+16|0;m=0;w=0;h=0;j:while(1){l=c[H>>2]|0;s=c[l+(w*252|0)+4>>2]|0;u=c[l+(w*252|0)+240>>2]|0;if((u|0)==-1){O=107;break}r=u+1|0;if(r>>>0>m>>>0){e=u+4&-4;if(e>>>0<=m>>>0){O=110;break}h=Dg(B,4,m,e,h,N)|0;if(!(c[N>>2]|0))t=e;else break}else t=m;L=bh(z,(c[l+(w*252|0)+244>>2]|0)+(c[x>>2]|0)|0)|0;c[N>>2]=L;if(L)break;e=l+(w*252|0)+248|0;L=Uh(z,da(c[e>>2]|0,r)|0)|0;c[N>>2]=L;if(L)break;o=c[e>>2]|0;n=o&255;o=(o+255&255)+1|0;if(!(n<<24>>24)){e=0;do{c[h+(e<<2)>>2]=0;e=e+1|0}while(e>>>0<=u>>>0)}else{p=c[y>>2]|0;q=0;while(1){m=n;l=p;e=0;while(1){e=d[l>>0]|e<<8;m=m+-1<<24>>24;if(!(m<<24>>24))break;else l=l+1|0}c[h+(q<<2)>>2]=e;q=q+1|0;if(q>>>0>u>>>0)break;else p=p+o|0}}Xh(z);n=(u|0)==0;e=c[h>>2]|0;if(!n){m=e;l=1;do{L=m;m=c[h+(l<<2)>>2]|0;l=l+1|0;if(L>>>0>m>>>0)break j}while(l>>>0<=u>>>0)}e=(c[h+(u<<2)>>2]|0)-e|0;o=j+4|0;c[o>>2]=Dg(B,4,0,r,0,N)|0;if(c[N>>2]|0)break;L=yg(B,e,N)|0;c[c[o>>2]>>2]=L;if(c[N>>2]|0)break;L=bh(z,(c[h>>2]|0)+(c[x>>2]|0)|0)|0;c[N>>2]=L;if(L)break;L=Lh(z,c[c[o>>2]>>2]|0,e)|0;c[N>>2]=L;if(L)break;do if(!n){l=c[h>>2]|0;e=l;m=1;do{K=e;e=c[h+(m<<2)>>2]|0;L=c[o>>2]|0;c[L+(m<<2)>>2]=(c[L+(m+-1<<2)>>2]|0)+(e-K);m=m+1|0}while(m>>>0<=u>>>0);if((s|0)<0)break;e=h+4|0;Ud[c[v>>2]&255](c[c[o>>2]>>2]|0,(c[e>>2]|0)-l|0,4330);if((u|0)==1)break;else m=1;do{K=m;m=m+1|0;L=e;e=h+(m<<2)|0;Ud[c[v>>2]&255](c[(c[o>>2]|0)+(K<<2)>>2]|0,(c[e>>2]|0)-(c[L>>2]|0)|0,4330)}while((m|0)!=(u|0))}while(0);c[j>>2]=u;w=w+1|0;if((w|0)>=(c[I>>2]|0))break i;else{m=t;j=j+8|0}}if((O|0)==107)c[N>>2]=160;else if((O|0)==110)c[N>>2]=160;j=c[A>>2]|0;if(j){if((c[I>>2]|0)>0){e=0;do{j=c[j+(e<<3)+4>>2]|0;if(!j)j=0;else{Ag(B,c[j>>2]|0);c[c[(c[A>>2]|0)+(e<<3)+4>>2]>>2]=0;j=c[(c[A>>2]|0)+(e<<3)+4>>2]|0}Ag(B,j);j=c[A>>2]|0;c[j+(e<<3)+4>>2]=0;e=e+1|0}while((e|0)<(c[I>>2]|0))}Ag(B,j);c[A>>2]=0}}else h=0;while(0);Ag(B,h);c[P>>2]=c[N>>2]}}else O=37;while(0);if((O|0)==37)c[P>>2]=h;h=Q+76|0;if(c[h>>2]|0)Vh(c[M>>2]|0,h);Bd[c[Q+24>>2]&511](Q);h=c[P>>2]|0;if((h|0)!=0|(g|0)<0){g=h;i=R;return g|0}if(g){g=6;i=R;return g|0}m=f+140|0;n=m+24|0;c[f+16>>2]=c[m+156>>2];c[f+36>>2]=0;c[f+4>>2]=0;c[f+8>>2]=(a[m+48>>0]|0)==0?2065:2069;e=c[m+36>>2]|0;j=f+20|0;c[j>>2]=e;l=f+24|0;c[l>>2]=90464;k:do if(!e){h=c[m>>2]|0;if(h)c[j>>2]=h}else{h=c[m+32>>2]|0;if((h|0)!=0?(k=a[h>>0]|0,k<<24>>24!=0):0){l:while(1){while(1){j=a[e>>0]|0;if(k<<24>>24==j<<24>>24){O=150;break}if(k<<24>>24==45|k<<24>>24==32)break;if(!(j<<24>>24))break l;else if(!(j<<24>>24==45|j<<24>>24==32))break k;if(!(k<<24>>24))break k;else e=e+1|0}if((O|0)==150){O=0;e=e+1|0}h=h+1|0;k=a[h>>0]|0;if(!(k<<24>>24))break k}c[l>>2]=h}}while(0);e=f+12|0;h=(c[m+44>>2]|0)!=0&1;c[e>>2]=h;k=c[m+40>>2]|0;do if(k){if((gfa(k,90488)|0)!=0?(gfa(k,86560)|0)!=0:0)break;c[e>>2]=h|2}while(0);c[f+28>>2]=0;c[f+32>>2]=0;c[f+52>>2]=c[m+56>>2]>>16;k=c[m+60>>2]>>16;c[f+56>>2]=k;c[f+60>>2]=(c[m+64>>2]|0)+65535>>16;j=(c[m+68>>2]|0)+65535>>16;c[f+64>>2]=j;e=f+68|0;h=b[e>>1]|0;if(!(h<<16>>16)){b[e>>1]=1e3;h=1e3}b[f+70>>1]=j;b[f+72>>1]=k;g=(((h&65535)*12|0)>>>0)/10|0;Q=j-k|0;b[f+74>>1]=(g<<16>>16|0)<(Q|0)?Q:g;b[f+80>>1]=b[n+26>>1]|0;b[f+82>>1]=b[m+52>>1]|0;g=0;i=R;return g|0}function cm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!a)return;i=a+140|0;j=i+24|0;k=c[a+100>>2]|0;l=a+316|0;b=c[l>>2]|0;h=i+160|0;if(b){d=c[h>>2]|0;if((d|0)>0){g=0;do{e=b+(g<<3)+4|0;f=c[e>>2]|0;if(f){Ag(k,c[f>>2]|0);c[c[e>>2]>>2]=0;Ag(k,c[e>>2]|0);c[e>>2]=0;d=c[h>>2]|0;b=c[l>>2]|0}g=g+1|0}while((g|0)<(d|0))}Ag(k,b);c[l>>2]=0}Ag(k,c[j>>2]|0);c[j>>2]=0;l=i+28|0;Ag(k,c[l>>2]|0);c[l>>2]=0;l=i+32|0;Ag(k,c[l>>2]|0);c[l>>2]=0;l=i+36|0;Ag(k,c[l>>2]|0);c[l>>2]=0;l=i+40|0;Ag(k,c[l>>2]|0);c[l>>2]=0;l=i+164|0;Ag(k,c[l>>2]|0);c[l>>2]=0;c[h>>2]=0;Ag(k,c[i>>2]|0);c[i>>2]=0;l=i+12|0;Ag(k,c[l>>2]|0);c[l>>2]=0;l=i+16|0;Ag(k,c[l>>2]|0);c[l>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;l=a+324|0;Ag(k,c[l>>2]|0);c[l>>2]=0;a=a+328|0;Ag(k,c[a>>2]|0);c[a>>2]=0;return}function dm(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=c[a>>2]|0;b=c[d+320>>2]|0;d=yh(c[(c[d+96>>2]|0)+4>>2]|0,86544)|0;if(!((d|0)!=0&(b|0)!=0)){a=0;i=f;return a|0}b=c[b>>2]|0;if(!b){a=0;i=f;return a|0}b=Ed[b&511](d)|0;if(!b){a=0;i=f;return a|0}d=c[a>>2]|0;b=Hd[c[b>>2]&255](c[d+100>>2]|0,(c[d+304>>2]|0)+((c[d+4>>2]|0)*252|0)|0,e)|0;if(b){a=b;i=f;return a|0}c[a+40>>2]=c[e>>2];a=0;i=f;return a|0}function em(a){a=a|0;var b=0,d=0,e=0,f=0;d=a+40|0;if(!(c[d>>2]|0))return;b=c[a>>2]|0;a=c[b+320>>2]|0;b=yh(c[(c[b+96>>2]|0)+4>>2]|0,86544)|0;if(((b|0)!=0&(a|0)!=0?(e=c[a>>2]|0,(e|0)!=0):0)?(f=Ed[e&511](b)|0,(f|0)!=0):0)Bd[c[f+8>>2]&511](c[d>>2]|0);c[d>>2]=0;return}function fm(a){a=a|0;var b=0,d=0;b=c[a+4>>2]|0;d=c[b+320>>2]|0;if(!d)return 0;b=yh(c[(c[b+96>>2]|0)+4>>2]|0,86544)|0;if(!b)return 0;d=Ed[c[d+4>>2]&511](b)|0;c[(c[a+156>>2]|0)+36>>2]=d;return 0}function gm(a){a=a|0;c[(c[a+156>>2]|0)+36>>2]=0;return}function hm(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+1552|0;x=C+40|0;s=C;B=C+16|0;r=C+32|0;m=c[d+4>>2]|0;k=c[m+136>>2]|0;if((c[m+16>>2]|0)>>>0<=g>>>0){d=6;i=C;return d|0}A=(h&1024|0)==0?h:h|3;t=d+164|0;c[t>>2]=c[f+16>>2];u=d+168|0;c[u>>2]=c[f+20>>2];z=d+108|0;b[d+110>>1]=0;b[z>>1]=0;n=(A&1|0)==0;if(n)v=(A>>>1&1^1)&255;else v=0;o=d+72|0;c[o>>2]=1869968492;k=k+12|0;h=Td[c[c[k>>2]>>2]&3](x,m,f,d,0,0,v,A>>>16&15,192)|0;if(h){d=h;i=C;return d|0}j=A&1024;a[x+69>>0]=j>>>10;h=Cs(x,g)|0;if(h){d=h;i=C;return d|0}g=x+1376|0;c[s+0>>2]=c[g+0>>2];c[s+4>>2]=c[g+4>>2];c[s+8>>2]=c[g+8>>2];c[s+12>>2]=c[g+12>>2];g=c[x+1392>>2]|0;l=c[x+1396>>2]|0;Bd[c[(c[k>>2]|0)+4>>2]&511](x);h=d+124|0;c[h>>2]=c[h>>2]&1|4;if(j){B=c[d+156>>2]|0;c[d+32>>2]=(lg(c[x+32>>2]|0)|0)>>16;c[d+40>>2]=(lg(c[x+40>>2]|0)|0)>>16;d=B+12|0;c[d+0>>2]=c[s+0>>2];c[d+4>>2]=c[s+4>>2];c[d+8>>2]=c[s+8>>2];c[d+12>>2]=c[s+12>>2];c[B+28>>2]=g;c[B+32>>2]=l;a[B+8>>0]=1;d=0;i=C;return d|0}p=d+24|0;j=x+40|0;q=d+40|0;c[q>>2]=(lg(c[j>>2]|0)|0)>>16;c[d+56>>2]=(lg(c[j>>2]|0)|0)>>16;a[(c[d+156>>2]|0)+8>>0]=0;j=m+140|0;j=(c[j+68>>2]|0)-(c[j+60>>2]|0)>>16;m=d+52|0;c[m>>2]=j;c[d+60>>2]=j;c[o>>2]=1869968492;if((e[f+14>>1]|0)<24)c[h>>2]=c[h>>2]|256;Wg(z,s);Xg(z,g,l);c[r>>2]=c[q>>2];f=r+4|0;c[f>>2]=0;Yg(r,s);c[q>>2]=(c[r>>2]|0)+g;c[r>>2]=0;c[f>>2]=c[m>>2];Yg(r,s);c[m>>2]=(c[f>>2]|0)+l;if(n){g=c[x+16>>2]|0;h=c[g+4>>2]|0;k=c[t>>2]|0;j=c[u>>2]|0;if(!(v<<24>>24!=0?(c[x+72>>2]|0)!=0:0))y=13;if((y|0)==13?(w=b[g+2>>1]|0,w<<16>>16>0):0){g=w<<16>>16;while(1){c[h>>2]=qg(c[h>>2]|0,k)|0;y=h+4|0;c[y>>2]=qg(c[y>>2]|0,j)|0;g=g+-1|0;if((g|0)<=0)break;else h=h+8|0}}c[q>>2]=qg(c[q>>2]|0,k)|0;c[m>>2]=qg(c[m>>2]|0,j)|0}Ih(z,B);y=c[B>>2]|0;c[p>>2]=(c[B+8>>2]|0)-y;z=c[B+12>>2]|0;c[d+28>>2]=z-(c[B+4>>2]|0);c[d+32>>2]=y;c[d+36>>2]=z;if(!(A&16)){d=0;i=C;return d|0}hh(p,c[m>>2]|0);d=0;i=C;return d|0}function im(a,b){a=a|0;b=b|0;var d=0;jh(c[a>>2]|0,b);d=c[a>>2]|0;b=c[d+320>>2]|0;d=yh(c[(c[d+96>>2]|0)+4>>2]|0,86544)|0;if(!((d|0)!=0&(b|0)!=0))return 0;b=c[b>>2]|0;if(!b)return 0;b=Ed[b&511](d)|0;if(!b)return 0;Qd[c[b+4>>2]&127](c[a+40>>2]|0,c[a+16>>2]|0,c[a+20>>2]|0,0,0)|0;return 0}function jm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g;d=c[a+100>>2]|0;c[f>>2]=0;e=Ed[c[b+36>>2]&511](b)|0;b=a+304|0;if(c[b>>2]|0){i=g;return}d=Dg(d,252,0,e,0,f)|0;c[b>>2]=d;if(c[f>>2]|0){i=g;return}c[a+300>>2]=e;if((e|0)>0)b=0;else{i=g;return}do{c[d+(b*252|0)+4>>2]=4;b=b+1|0}while((b|0)<(e|0));i=g;return}function km(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;k=l;h=c[d+96>>2]|0;if((h|0)<=-1){i=l;return}if((h|0)>=(c[a+300>>2]|0)){i=l;return}j=c[a+304>>2]|0;Xd[c[d+52>>2]&255](d,6,k,3)|0;g=k+12|0;d=c[g>>2]|0;d=(d|0)<0?0-d|0:d;b[a+68>>1]=rg(1e3,d)|0;if((d|0)==65536){d=k+8|0;a=k+16|0;e=k+20|0;f=k+4|0}else{c[k>>2]=rg(c[k>>2]|0,d)|0;f=k+4|0;c[f>>2]=rg(c[f>>2]|0,d)|0;m=k+8|0;c[m>>2]=rg(c[m>>2]|0,d)|0;a=k+16|0;c[a>>2]=rg(c[a>>2]|0,d)|0;e=k+20|0;c[e>>2]=rg(c[e>>2]|0,d)|0;c[g>>2]=65536;d=m}c[j+(h*252|0)+216>>2]=c[k>>2];c[j+(h*252|0)+224>>2]=c[f>>2];c[j+(h*252|0)+220>>2]=c[d>>2];c[j+(h*252|0)+228>>2]=c[g>>2];c[j+(h*252|0)+232>>2]=c[a>>2]>>16;c[j+(h*252|0)+236>>2]=c[e>>2]>>16;i=l;return}function lm(a,b){a=a|0;b=b|0;var d=0;d=c[b+96>>2]|0;if((d|0)<=-1)return;if((d|0)>=(c[a+300>>2]|0))return;a=c[a+304>>2]|0;b=Pd[c[b+40>>2]&511](b,0)|0;c[a+(d*252|0)+208>>2]=b;c[a+(d*252|0)+180>>2]=b;return}function mm(b){b=b|0;b=c[b+140>>2]|0;if(!b)return 0;else return ((a[b>>0]|0)==47?b+1|0:b)|0;return 0}function nm(a,b){a=a|0;b=b|0;a=a+164|0;c[b+0>>2]=c[a+0>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];c[b+16>>2]=c[a+16>>2];c[b+20>>2]=c[a+20>>2];c[b+24>>2]=c[a+24>>2];c[b+28>>2]=c[a+28>>2];return 0}function om(a,c){a=a|0;c=c|0;b[c>>1]=b[a+312>>1]|0;return 0}function pm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(b)c[b>>2]=c[a+152>>2];if(d)c[d>>2]=c[a+156>>2];if(!e)return 0;c[e>>2]=c[a+160>>2];return 0}function qm(b,c){b=b|0;c=c|0;if(!c)return 0;a[c>>0]=1;return 0}function rm(a,b,d){a=a|0;b=b|0;d=d|0;if(!d)return 0;c[d>>2]=b;return 0}function sm(a,b){a=a|0;b=b|0;b=c[a>>2]|0;c[a+16>>2]=c[b+296>>2];c[a+20>>2]=c[b+300>>2];return 0}function tm(a){a=a|0;c[a+20>>2]=0;c[a+16>>2]=0;return}function um(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0;h=c[a+20>>2]|0;a=c[a+16>>2]|0;if(!a){i=0;return i|0}else{f=a;g=0}while(1){a=(g+f|0)>>>1;d=c[h+(a<<3)>>2]|0;if((d|0)==(b|0))break;d=d>>>0>b>>>0;f=d?a:f;g=d?g:a+1|0;if(g>>>0>=f>>>0){a=0;i=5;break}}if((i|0)==5)return a|0;i=(e[h+(a<<3)+4>>1]|0)+1|0;return i|0}function vm(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0;j=c[a+20>>2]|0;i=(c[b>>2]|0)+1|0;h=c[a+16>>2]|0;a:do if(!h)a=0;else{g=h;f=0;while(1){a=(f+g|0)>>>1;d=c[j+(a<<3)>>2]|0;if((i|0)==(d|0))break;d=i>>>0>>0;g=d?a:g;a=d?f:a+1|0;if(a>>>0>=g>>>0)break a;else f=a}j=(e[j+(a<<3)+4>>1]|0)+1|0;c[b>>2]=i;return j|0}while(0);if(a>>>0>=h>>>0){i=0;j=0;c[b>>2]=i;return j|0}i=c[j+(a<<3)>>2]|0;j=(e[j+(a<<3)+4>>1]|0)+1|0;c[b>>2]=i;return j|0}function wm(a,b){a=a|0;b=b|0;return Jg(18784,b)|0}function xm(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0;k=i;i=i+16|0;j=k;a:do if(Ds(d,e)|0){ym(e);f=e+132|0;g=Ti(f,d)|0;do if((g&255|0)!=7){if((g|0)!=0?(h=Vi(f,d)|0,!((h&255|0)!=7&(h|0)==0)):0)break;c[e+172>>2]=d;c[e+104>>2]=f;if(!(Ds(f,e)|0))break a}while(0);ym(e);e=2;i=k;return e|0}while(0);f=c[e+180>>2]|0;g=c[e+176>>2]|0;do if((((f|0)!=0&(g|0)!=0?(h=a[f>>0]|0,h<<24>>24==73|h<<24>>24==105):0)?(h=a[f+1>>0]|0,h<<24>>24==83|h<<24>>24==115):0)?(h=a[f+2>>0]|0,h<<24>>24==79|h<<24>>24==111):0){f=f+3|0;if(gfa(f,18304)|0){if(gfa(f,18312)|0){d=0;break}if(gfa(g,18320)|0){d=0;break}}d=1}else d=0;while(0);c[j>>2]=e;f=j+4|0;c[f>>2]=0;g=j+8|0;b[g>>1]=0;h=j+10|0;b[h>>1]=0;if(d){c[f>>2]=1970170211;b[g>>1]=3;b[h>>1]=1}e=qh(18160,0,j,0)|0;i=k;return e|0}function ym(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;if(!b)return;h=c[b+100>>2]|0;i=b+300|0;Ag(h,c[i>>2]|0);c[i>>2]=0;i=b+292|0;Ag(h,c[i>>2]|0);c[i>>2]=0;i=b+284|0;d=c[i>>2]|0;if(d){g=b+280|0;if((c[g>>2]|0)>0){f=0;do{e=d+(f*12|0)|0;if((e|0)!=0?(Ag(h,c[e>>2]|0),c[e>>2]=0,(a[d+(f*12|0)+4>>0]|0)!=0):0){e=d+(f*12|0)+8|0;Ag(h,c[e>>2]|0);c[e>>2]=0}f=f+1|0;d=c[i>>2]|0}while((f|0)<(c[g>>2]|0))}Ag(h,d);c[i>>2]=0}d=b+192|0;Ag(h,c[d>>2]|0);c[d>>2]=0;d=b+20|0;Ag(h,c[d>>2]|0);c[d>>2]=0;d=b+24|0;Ag(h,c[d>>2]|0);c[d>>2]=0;d=b+32|0;Ag(h,c[d>>2]|0);c[d>>2]=0;d=b+176|0;Ag(h,c[d>>2]|0);c[d>>2]=0;d=b+180|0;Ag(h,c[d>>2]|0);c[d>>2]=0;d=b+104|0;e=c[d>>2]|0;if((e|0)!=(b+132|0))return;Pg(e);c[d>>2]=c[b+172>>2];return}function zm(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=c[f>>2]|0;if(!r){e=6;return e|0}if((c[r+16>>2]|0)>>>0<=g>>>0){e=6;return e|0}i=c[r+104>>2]|0;q=(g|0)==0?0:g+-1|0;l=c[r+292>>2]|0;m=l+(q<<4)+6|0;g=(b[l+(q<<4)+8>>1]|0)+(b[m>>1]|0)|0;n=e+76|0;c[n>>2]=g;o=l+(q<<4)+2|0;p=l+(q<<4)|0;h=(b[o>>1]|0)-(b[p>>1]|0)|0;c[e+80>>2]=h;b[e+92>>1]=1;a[e+94>>0]=1;k=r+308|0;f=1<<(c[k>>2]&3);if((f|0)==2){h=h+15>>4<<1;c[e+84>>2]=h}else if((f|0)==8){h=h+63>>6<<3;c[e+84>>2]=h}else if((f|0)==1){h=h+7>>3;c[e+84>>2]=h}else if((f|0)==4){h=h+31>>5<<2;c[e+84>>2]=h}else{e=3;return e|0}f=da(g,h)|0;h=Sg(e,f)|0;if(h){e=h;return e|0}h=bh(i,c[l+(q<<4)+12>>2]|0)|0;if(h){e=h;return e|0}j=e+88|0;h=Lh(i,c[j>>2]|0,f)|0;if(h){e=h;return e|0}h=c[k>>2]|0;if(!((h&8|0)!=0|(f|0)==0)){h=f;g=c[j>>2]|0;while(1){i=d[g>>0]|0;i=i>>>1&85|i<<1&170;i=i>>>2&51|i<<2&204;a[g>>0]=i>>>4|i<<4;h=h+-1|0;if(!h)break;else g=g+1|0}h=c[k>>2]|0}do if((h>>>2^h>>>3)&1){h=1<<(h>>>4&3);if((h|0)==2){if(f>>>0<=1)break;h=c[j>>2]|0;while(1){k=a[h>>0]|0;j=h+1|0;a[h>>0]=a[j>>0]|0;a[j>>0]=k;f=f+-2|0;if(f>>>0<=1)break;else h=h+2|0}}else if((h|0)==4){if(f>>>0<=3)break;h=c[j>>2]|0;while(1){k=a[h>>0]|0;g=h+3|0;a[h>>0]=a[g>>0]|0;a[g>>0]=k;g=h+1|0;k=a[g>>0]|0;j=h+2|0;a[g>>0]=a[j>>0]|0;a[j>>0]=k;f=f+-4|0;if(f>>>0<=3)break;else h=h+4|0}}else break}while(0);c[e+72>>2]=1651078259;j=b[p>>1]|0;c[e+100>>2]=j;k=b[m>>1]|0;c[e+104>>2]=k;p=e+24|0;c[e+40>>2]=b[l+(q<<4)+4>>1]<<6;c[e+32>>2]=j<<6;c[e+36>>2]=k<<6;c[p>>2]=(b[o>>1]|0)-j<<6;c[e+28>>2]=c[n>>2]<<6;e=r+196|0;hh(p,(c[e+12>>2]|0)+(c[e+8>>2]|0)<<6);e=0;return e|0}function Am(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=c[a>>2]|0;h=c[i+32>>2]|0;f=c[d+16>>2]|0;e=c[d+8>>2]|0;if(f)e=((da(e,f)|0)+36|0)/72|0;g=e+32>>6;e=c[d>>2]|0;do if((e|0)==1){e=i+196|0;f=e+8|0;e=e+12|0;if((g|0)!=((c[e>>2]|0)+(c[f>>2]|0)|0)){a=23;return a|0}}else if(!e)if((g|0)==((c[h+12>>2]|0)+32>>6|0)){e=i+196|0;f=e+8|0;e=e+12|0;break}else{a=23;return a|0}else{a=7;return a|0}while(0);ih(i,0);c[a+24>>2]=c[f>>2]<<6;c[a+28>>2]=0-(c[e>>2]|0)<<6;c[a+36>>2]=b[i+236>>1]<<6;a=0;return a|0}function Bm(a,d){a=a|0;d=d|0;var e=0,f=0;f=c[a>>2]|0;e=f+196|0;ih(f,d);c[a+24>>2]=c[e+8>>2]<<6;c[a+28>>2]=0-(c[e+12>>2]|0)<<6;c[a+36>>2]=b[e+40>>1]<<6;return 0}function Cm(a,b,d){a=a|0;b=b|0;d=d|0;c[b>>2]=c[a+176>>2];c[d>>2]=c[a+180>>2];return 0}function Dm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=c[b+284>>2]|0;g=c[b+280>>2]|0;if((g|0)>0)b=0;else{e=6;return e|0}while(1){h=b+1|0;f=(gfa(c[i+(b*12|0)>>2]|0,d)|0)!=0;if((h|0)<(g|0)&f)b=h;else break}if(f|(i+(b*12|0)|0)==0){e=6;return e|0}if(!(a[i+(b*12|0)+4>>0]|0)){c[e>>2]=2;c[e+4>>2]=c[i+(b*12|0)+8>>2];e=0;return e|0}else{c[e>>2]=1;c[e+4>>2]=c[i+(b*12|0)+8>>2];e=0;return e|0}return 0}function Em(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=(c[a>>2]|0)+288|0;d=c[e+120>>2]|0;c[a+16>>2]=d;e=c[e+128>>2]|0;c[a+20>>2]=e;if(d>>>0<=1){d=0;return d|0}b=c[e>>2]|0;a=1;while(1){f=b;b=c[e+(a<<4)>>2]|0;a=a+1|0;if(f>>>0>=b>>>0){b=8;a=5;break}if(a>>>0>=d>>>0){b=0;a=5;break}}if((a|0)==5)return b|0;return 0}function Fm(a){a=a|0;c[a+20>>2]=0;c[a+16>>2]=0;return}function Gm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[a+16>>2]|0;if(!d){h=0;return h|0}g=c[a+20>>2]|0;f=0;while(1){a=((d-f|0)>>>1)+f|0;e=c[g+(a<<4)>>2]|0;if((e|0)==(b|0))break;e=e>>>0>>0;d=e?d:a;f=e?a+1|0:f;if(d>>>0<=f>>>0){a=0;h=6;break}}if((h|0)==6)return a|0;h=a+1|0;return h|0}function Hm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=c[a+16>>2]|0;i=a+20|0;do if(j){a=c[b>>2]|0;a:while(1){a=a+1|0;g=c[i>>2]|0;h=j;e=0;while(1){d=((h-e|0)>>>1)+e|0;f=c[g+(d<<4)>>2]|0;if((f|0)==(a|0))break;f=f>>>0>>0;e=f?d+1|0:e;h=f?h:d;if(h>>>0<=e>>>0){a=e;break a}}if(d){e=d;k=7;break}}if((k|0)==7){d=a;a=e+1|0;break}if(!(a>>>0>=j>>>0|(a|0)==0)){d=c[(c[i>>2]|0)+(a<<4)>>2]|0;a=a+1|0}else{d=0;a=0}}else{d=0;a=0}while(0);c[b>>2]=d;return a|0}function Im(a,b,d,f,g){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;var h=0;h=a+288|0;a=c[a+88>>2]|0;if(b)c[b>>2]=c[h+12>>2];if(d)c[d>>2]=c[h+16>>2];if(!a){h=65536;a=65536}else{d=h+16|0;h=rg((e[a+12>>1]|0)<<6,c[d>>2]|0)|0;a=rg((e[a+14>>1]|0)<<6,c[d>>2]|0)|0}if(f)c[f>>2]=h;if(!g)return 0;c[g>>2]=a;return 0}function Jm(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=e+288|0;c[h>>2]=0;c[h+4>>2]=0;i=(f|0)==0?0:f+-1|0;f=(g|0)==0?0:g+-1|0;q=c[j+120>>2]|0;if(i>>>0>q>>>0|f>>>0>q>>>0){h=0;return h|0}o=c[j+128>>2]|0;o=c[o+(f<<4)>>2]&65535|c[o+(i<<4)>>2]<<16;f=c[j+136>>2]|0;q=c[e+104>>2]|0;if(!f){h=0;return h|0}while(1){if(o>>>0>=(c[f+16>>2]|0)>>>0?o>>>0<=(c[f+20>>2]|0)>>>0:0){p=f;break}f=c[f>>2]|0;if(!f){f=0;m=31;break}}if((m|0)==31)return f|0;f=bh(q,c[p+12>>2]|0)|0;if(f){h=f;return h|0}f=p+4|0;g=p+8|0;i=Uh(q,da(d[f>>0]|0,c[g>>2]|0)|0)|0;if(i){h=i;return h|0}i=d[f>>0]|0;k=c[g>>2]|0;j=qi(i)|0;e=da(j,k)|0;f=c[q+32>>2]|0;n=d[p+5>>0]|0;l=n&1;n=n&2;if((i|0)!=(j|0)){j=da(i-j|0,k)|0;i=a[f+j>>0]|0;if(!(l<<24>>24)){g=j+2|0;j=(i&255)<<16|d[f+(j+1)>>0]}else{g=j+4|0;j=d[f+(j+1)>>0]<<16|(i&255)<<24|d[f+(j+2)>>0]<<8|d[f+(j+3)>>0]}if((j|0)!=(o|0))if(j>>>0>>0){f=f+(g+(n<<24>>24==0?1:2))|0;m=16}else m=16;else{i=f+g|0;m=27}}else m=16;a:do if((m|0)==16){b:do if(e>>>0>k>>>0){c:do if(!(l<<24>>24)){g=e;while(1){g=g>>>1;j=f+g|0;i=d[j>>0]<<16|d[f+(g+1)>>0];if((i|0)==(o|0)){i=g+2|0;break c}f=i>>>0>>0?j:f;if(g>>>0<=k>>>0)break b}}else{g=e;while(1){g=g>>>1;j=f+g|0;i=d[f+(g+1)>>0]<<16|d[j>>0]<<24|d[f+(g+2)>>0]<<8|d[f+(g+3)>>0];if((i|0)==(o|0)){i=g+4|0;break c}f=i>>>0>>0?j:f;if(g>>>0<=k>>>0)break b}}while(0);i=f+i|0;m=27;break a}while(0);if(!(l<<24>>24)){j=d[f>>0]<<16|d[f+1>>0];i=f+2|0}else{j=d[f+1>>0]<<16|d[f>>0]<<24|d[f+2>>0]<<8|d[f+3>>0];i=f+4|0}if((j|0)==(o|0))m=27}while(0);if((m|0)==27){f=d[i>>0]|0;if(n<<24>>24)f=(d[i+1>>0]|f<<8)<<16>>16;c[h>>2]=(b[p+6>>1]|0)+f}Xh(q);h=0;return h|0}function Km(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[d>>2]=0;if(!b){a=6;return a|0}e=b+-1|0;if(!a){a=6;return a|0}b=a+288|0;if(e>>>0>=(c[b+120>>2]|0)>>>0){a=6;return a|0}c[d>>2]=c[(c[b+128>>2]|0)+(e<<4)+4>>2];a=0;return a|0}function Lm(a,b){a=a|0;b=b|0;return Jg(19144,b)|0}function Mm(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=i;i=i+32|0;E=K+20|0;H=K;J=K+4|0;I=K+8|0;l=f+132|0;h=bh(e,0)|0;if(!h){h=fi(e,19024,l)|0;if(!h){k=f+204|0;F=f+168|0;c[F>>2]=(c[F>>2]|0)+(c[k>>2]<<16);c[J>>2]=0;if((((c[l>>2]|0)==1346785840?(c[f+136>>2]|0)>>>0<=4:0)?(c[f+144>>2]|0)>>>0>=58:0)?(c[f+140>>2]|0)==3338:0){j=f+152|0;h=bh(e,c[j>>2]|0)|0;c[E>>2]=h;if(h){c[J>>2]=h;J=h;i=K;return J|0}h=Nh(e,E)|0;l=c[E>>2]|0;F=(l|0)==0;h=F?h&65535:0;c[J>>2]=l;if(!F){J=l;i=K;return J|0}c[f>>2]=h;if((g|0)<0){J=0;i=K;return J|0}if((h|0)<=(g|0)){c[J>>2]=6;J=6;i=K;return J|0}s=f+240|0;r=(c[k>>2]|0)==0;h=bh(e,c[j>>2]|0)|0;c[E>>2]=h;do if(!h){l=Nh(e,E)|0;h=c[E>>2]|0;if(!h)if((l&65535)>>>0>g>>>0){h=Mh(e,g*5|0)|0;c[E>>2]=h;if(!h){j=Nh(e,E)|0;k=j&65535;h=c[E>>2]|0;if(!h){l=di(e,E)|0;h=c[E>>2]|0;if(!h){c[s>>2]=k;c[f+244>>2]=l;h=bh(e,l)|0;c[E>>2]=h;if(!h){h=Uh(e,k)|0;c[E>>2]=h;if(h)break;D=e+32|0;o=c[D>>2]|0;q=o+k|0;a:do if((j&65535)<13)G=53;else{c[s+8>>2]=d[o+1>>0]<<8|d[o>>0]<<16|d[o+2>>0];c[s+12>>2]=d[o+4>>0]<<8|d[o+3>>0]<<16|d[o+5>>0];c[s+16>>2]=d[o+7>>0]<<8|d[o+6>>0]<<16|d[o+8>>0];c[s+20>>2]=d[o+10>>0]<<8|d[o+9>>0]<<16|d[o+11>>0];l=o+13|0;p=d[o+12>>0]|0;j=(p&4|0)!=0;if(j){h=p>>>3&1;h=(p&3|0)==0?h|4:h+1|0}else h=0;n=(p&16|0)!=0;if(n)h=(p>>>5&1)+1+h|0;if((h+13|0)>(k|0)){G=53;break}do if(j){if(!(p&8)){h=d[l>>0]|0;j=17;l=o+14|0;k=15;m=16}else{h=(d[l>>0]<<8|d[o+14>>0])<<16>>16;j=18;l=o+15|0;k=16;m=17}c[s+28>>2]=h;if(p&3)break;c[s+36>>2]=d[o+k>>0]<<8|d[l>>0]<<16|d[o+m>>0];l=o+j|0}while(0);if(n){if(!(p&32)){h=d[l>>0]|0;l=l+1|0}else{h=(d[l>>0]<<8|d[l+1>>0])<<16>>16;l=l+2|0}c[s+32>>2]=h}b:do if(!(p&64))h=l;else{h=l+1|0;c:do if(h>>>0<=q>>>0){l=a[l>>0]|0;if(l<<24>>24){l=l&255;do{if((h+2|0)>>>0>q>>>0)break c;h=h+((d[h>>0]|0)+2)|0;if(h>>>0>q>>>0)break c;l=l+-1|0}while((l|0)!=0)}c[E>>2]=0;break b}while(0);c[E>>2]=8;break a}while(0);l=h+5|0;if(l>>>0>q>>>0){G=53;break}j=d[h>>0]<<8|d[h+1>>0];k=s+40|0;c[k>>2]=j;c[s+44>>2]=d[h+3>>0]<<8|d[h+2>>0]<<16|d[h+4>>0];if(r)break;if((h+6|0)>>>0>q>>>0){G=53;break}c[k>>2]=d[l>>0]<<16|j}while(0);if((G|0)==53)c[E>>2]=8;Xh(e);h=c[E>>2]|0;c[J>>2]=h;if(h){J=h;i=K;return J|0}F=f+288|0;y=c[s+44>>2]|0;n=c[s+40>>2]|0;x=c[e+28>>2]|0;c[F>>2]=x;c[F+4>>2]=y;h=F+136|0;c[h>>2]=0;c[F+140>>2]=h;h=bh(e,y)|0;c[H>>2]=h;d:do if(!h){h=Uh(e,n)|0;c[H>>2]=h;if(h)break;l=c[D>>2]|0;C=F+148|0;c[C>>2]=l;z=l+n|0;e:do if((n|0)<15)G=124;else{c[F+8>>2]=d[l>>0]<<8|d[l+1>>0];c[F+12>>2]=d[l+2>>0]<<8|d[l+3>>0];c[F+16>>2]=d[l+4>>0]<<8|d[l+5>>0];c[F+20>>2]=(d[l+6>>0]<<8|d[l+7>>0])<<16>>16;c[F+24>>2]=(d[l+8>>0]<<8|d[l+9>>0])<<16>>16;c[F+28>>2]=(d[l+10>>0]<<8|d[l+11>>0])<<16>>16;c[F+32>>2]=(d[l+12>>0]<<8|d[l+13>>0])<<16>>16;h=l+15|0;A=d[l+14>>0]|0;c[F+36>>2]=A;B=(A&4|0)!=0;if(B){k=15;j=h}else{if((n|0)<17){G=124;break}c[F+40>>2]=(d[h>>0]<<8|d[l+16>>0])<<16>>16;k=17;j=l+17|0}f:do if(!(A&128))w=j;else{h=l+(k+1)|0;g:do if((k|0)<(n|0)){l=a[j>>0]|0;if(l<<24>>24){n=l&255;do{k=h+2|0;if(k>>>0>z>>>0){h=8;break g}m=d[h+1>>0]|0;h=h+((d[h>>0]|0)+2)|0;if(h>>>0>z>>>0){h=8;break g}else{l=16;j=18984}while(1){if((c[j>>2]|0)==(m|0)){t=l;G=70;break}l=c[j+12>>2]|0;if(!l)break;else j=j+8|0}if((G|0)==70?(G=0,u=Hd[t&255](k,h,F)|0,(u|0)!=0):0){h=u;break g}n=n+-1|0}while((n|0)!=0)}c[H>>2]=0;w=h;break f}else h=8;while(0);c[H>>2]=h;break e}while(0);h=w+3|0;if(h>>>0>z>>>0){G=124;break}s=d[w+1>>0]<<8|d[w>>0]<<16|d[w+2>>0];do if(s){t=w+(s+3)|0;if(t>>>0>z>>>0){G=124;break e}u=F+84|0;n=F+44|0;m=F+48|0;o=F+52|0;v=F+88|0;r=s;q=h;h:while(1){l=q+4|0;if(l>>>0>t>>>0){G=100;break}k=d[q>>0]<<8|d[q+1>>0];if(k>>>0<4|r>>>0>>0){G=100;break}h=d[q+2>>0]<<8|d[q+3>>0];i:do if((h|0)==3){h=k+-4|0;c[E>>2]=0;j:do if(h){p=(a[q+(k+-1)>>0]|0)==0?k+-5|0:h;if(!p)break;else h=0;do{G=a[q+(h+4)>>0]|0;h=h+1|0;if((G&255)<32|G<<24>>24<0)break j}while(h>>>0

>>0);j=yg(x,p+1|0,E)|0;h=c[E>>2]|0;if(h){G=96;break h}qfa(j|0,l|0,p|0)|0;a[j+p>>0]=0;h=c[E>>2]|0;c[v>>2]=j;c[H>>2]=h;if(!h)break i;else break d}while(0);c[v>>2]=0;c[H>>2]=0}else if((h|0)==1){h=k+-4|0;c[E>>2]=0;k:do if(h){p=(a[q+(k+-1)>>0]|0)==0?k+-5|0:h;if(!p)break;else h=0;do{G=a[q+(h+4)>>0]|0;h=h+1|0;if((G&255)<32|G<<24>>24<0)break k}while(h>>>0

>>0);j=yg(x,p+1|0,E)|0;h=c[E>>2]|0;if(h){G=86;break h}qfa(j|0,l|0,p|0)|0;a[j+p>>0]=0;h=c[E>>2]|0;c[u>>2]=j;c[H>>2]=h;if(!h)break i;else break d}while(0);c[u>>2]=0;c[H>>2]=0}else if((h|0)==2){if(k>>>0<36)break;c[n>>2]=(d[q+14>>0]<<8|d[q+15>>0])<<16>>16;c[m>>2]=(d[q+16>>0]<<8|d[q+17>>0])<<16>>16;c[o>>2]=(d[q+18>>0]<<8|d[q+19>>0])<<16>>16}while(0);q=q+k|0;if((r|0)==(k|0)){G=100;break}else r=r-k|0}if((G|0)==86){c[u>>2]=j;c[H>>2]=h;break d}else if((G|0)==96){c[v>>2]=j;c[H>>2]=h;break d}else if((G|0)==100){o=s+4|0;h=t;break}}else o=4;while(0);j=w+o|0;if(j>>>0>z>>>0){G=124;break}k=a[h>>0]|0;m=k&255;c[F+104>>2]=m;h=(m<<1)+o|0;l=w+h|0;if(l>>>0>z>>>0){G=124;break}n=Dg(x,4,0,m,0,H)|0;c[F+108>>2]=n;if(c[H>>2]|0)break;if(!(k<<24>>24)){l=j;h=o}else{k=0;while(1){c[n+(k<<2)>>2]=(d[j>>0]<<8|d[j+1>>0])<<16>>16;k=k+1|0;if((k|0)==(m|0))break;else j=j+2|0}}j=h+8|0;k=w+j|0;if(k>>>0>z>>>0){G=124;break}c[F+112>>2]=d[l>>0];c[F+116>>2]=d[w+(h+1)>>0];c[F+68>>2]=d[w+(h+2)>>0]<<8|d[w+(h+3)>>0];c[F+56>>2]=d[w+(h+4)>>0]<<8|d[w+(h+5)>>0];v=d[w+(h+6)>>0]<<8|d[w+(h+7)>>0];c[F+120>>2]=v;c[F+124>>2]=k+y-(c[D>>2]|0);o=Dg(x,16,0,v,0,H)|0;c[F+128>>2]=o;if(c[H>>2]|0)break;r=(A&2|0)==0;D=A&8;s=(D|0)!=0;y=A&16;t=(y|0)==0;E=A&32;u=(E|0)==0;if((w+(j+(da(v,(y>>>4)+(D>>>3)+(E>>>5)+(A>>>1&3|4)|0)|0))|0)>>>0>z>>>0){G=124;break}if(!v)break;q=F+40|0;p=0;while(1){if(r){l=d[k>>0]|0;m=3;h=k+1|0;j=2}else{l=d[k>>0]<<8|d[k+1>>0];m=4;h=k+2|0;j=3}c[o+(p<<4)>>2]=l;if(B){l=(d[h>>0]<<8|d[k+j>>0])<<16>>16;h=k+m|0}else l=c[q>>2]|0;c[o+(p<<4)+4>>2]=l;m=s?h+1|0:h;if(t){h=d[m>>0]|0;j=m+1|0;k=2;n=3;l=4}else{h=d[m>>0]<<8|d[m+1>>0];j=m+2|0;k=3;n=4;l=5}c[o+(p<<4)+8>>2]=h;j=d[j>>0]|0;h=a[m+k>>0]|0;if(u){l=n;h=h&255|j<<8}else h=(h&255)<<8|j<<16|d[m+n>>0];c[o+(p<<4)+12>>2]=h;p=p+1|0;if((p|0)==(v|0))break;else k=m+l|0}}while(0);if((G|0)==124)c[H>>2]=8;Xh(e);c[F+144>>2]=Qh(e)|0;c[C>>2]=0;h=c[H>>2]|0;c[J>>2]=h;if(h){J=h;i=K;return J|0}c[f+4>>2]=g;r=F+120|0;l=c[r>>2]|0;c[f+16>>2]=l+1;s=f+8|0;c[s>>2]=1;if(l){j=c[F+128>>2]|0;k=0;while(1){h=k+1|0;if(c[j+(k<<4)+12>>2]|0){h=k;break}if(h>>>0>>0)k=h;else break}if((h|0)!=(l|0))h=1;else G=132}else G=132;do if((G|0)==132){if(c[F+92>>2]|0){c[s>>2]=0;h=0;break}c[J>>2]=3;J=3;i=K;return J|0}while(0);n=F+36|0;j=c[n>>2]|0;if(!(j&4)){h=h|4;c[s>>2]=h}h=(j<<4&16)+16|h;c[s>>2]=h;m=c[F+92>>2]|0;l=(m|0)==0;if(!l){h=h|2;c[s>>2]=h}q=F+132|0;if(c[q>>2]|0)c[s>>2]=h|64;g=c[F+84>>2]|0;h=f+20|0;c[h>>2]=g;if(!g)c[h>>2]=c[F+80>>2];c[f+24>>2]=c[F+88>>2];k=f+28|0;c[k>>2]=0;h=f+32|0;c[h>>2]=0;g=f+52|0;o=F+20|0;c[g+0>>2]=c[o+0>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];g=c[F+12>>2]|0;o=f+68|0;b[o>>1]=g;G=c[F+32>>2]|0;b[f+70>>1]=G;e=c[F+24>>2]|0;b[f+72>>1]=e;g=(((g&65535)*12|0)>>>0)/10|0;p=f+74|0;e=(G<<16>>16)-(e<<16>>16)|0;b[p>>1]=(g<<16>>16|0)<(e|0)?e:g;if(l)h=j;else{l=Dg(c[(c[f+104>>2]|0)+28>>2]|0,16,0,m,0,J)|0;c[h>>2]=l;h=c[J>>2]|0;if(h){J=h;i=K;return J|0}j=0;h=l;l=c[F+100>>2]|0;while(1){g=c[l+4>>2]|0;b[h>>1]=g;e=c[l>>2]|0;b[h+2>>1]=e;g=g<<6;c[h+4>>2]=g;c[h+8>>2]=e<<6;c[h+12>>2]=g;j=j+1|0;if((j|0)==(m|0))break;else{h=h+16|0;l=l+36|0}}c[k>>2]=m;h=c[n>>2]|0}if(!(h&4))b[f+76>>1]=c[F+40>>2];else{h=c[r>>2]|0;if(!h)h=0;else{l=h;j=c[F+128>>2]|0;h=0;while(1){g=c[j+4>>2]|0;h=(h|0)<(g|0)?g:h;l=l+-1|0;if(!l)break;else j=j+16|0}h=h&65535}b[f+76>>1]=h}b[f+78>>1]=b[p>>1]|0;h=b[o>>1]|0;b[f+80>>1]=(h&65535|0)/-10|0;b[f+82>>1]=(h&65535)/30|0;c[I>>2]=f;b[I+8>>1]=3;b[I+10>>1]=1;c[I+4>>2]=1970170211;h=qh(18824,0,I,0)|0;c[J>>2]=h;if(!(c[q>>2]|0)){J=h;i=K;return J|0}c[s>>2]=c[s>>2]|64;J=h;i=K;return J|0}while(0);c[J>>2]=h;J=h;i=K;return J|0}}}}}else h=6}while(0);c[J>>2]=h;J=h;i=K;return J|0}c[J>>2]=2;J=2;i=K;return J|0}}c[J>>2]=h;J=h;i=K;return J|0}function Nm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;if(!a)return;e=c[(c[a+96>>2]|0)+8>>2]|0;c[a+20>>2]=0;c[a+24>>2]=0;f=a+288|0;g=c[a+100>>2]|0;d=f+80|0;Ag(g,c[d>>2]|0);c[d>>2]=0;d=f+84|0;Ag(g,c[d>>2]|0);c[d>>2]=0;d=f+88|0;Ag(g,c[d>>2]|0);c[d>>2]=0;d=f+76|0;Ag(g,c[d>>2]|0);c[d>>2]=0;c[f+72>>2]=0;c[f+64>>2]=0;c[f+60>>2]=0;d=f+100|0;Ag(g,c[d>>2]|0);c[d>>2]=0;c[f+92>>2]=0;c[f+96>>2]=0;d=f+128|0;Ag(g,c[d>>2]|0);c[d>>2]=0;c[f+120>>2]=0;c[f+124>>2]=0;d=f+108|0;Ag(g,c[d>>2]|0);c[d>>2]=0;c[f+104>>2]=0;d=f+136|0;b=c[d>>2]|0;if(b)do{h=b;b=c[b>>2]|0;Ag(g,h)}while((b|0)!=0);c[d>>2]=0;c[f+140>>2]=0;c[f+132>>2]=0;h=a+32|0;Ag(e,c[h>>2]|0);c[h>>2]=0;return}function Om(b){b=b|0;var d=0,e=0,f=0;d=c[c[b+156>>2]>>2]|0;e=b+160|0;f=e+36|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[b+188>>2]=d;a[b+192>>0]=0;zg(d);return 0}function Pm(b){b=b|0;var d=0,e=0;d=c[c[b+188>>2]>>2]|0;e=b+168|0;Ag(d,c[e>>2]|0);c[e>>2]=0;c[b+172>>2]=0;c[b+164>>2]=0;Ag(d,c[b+184>>2]|0);b=b+176|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;a[b+16>>0]=0;return}function Qm(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=i;i=i+16|0;H=J;D=c[f+4>>2]|0;G=f+108|0;E=(h|0)==0?0:h+-1|0;if(!D){I=6;i=J;return I|0}F=D+288|0;if(E>>>0>=(c[F+120>>2]|0)>>>0){I=6;i=J;return I|0}a:do if((j&9|0)==0?(I=c[D+104>>2]|0,w=c[F+128>>2]|0,l=c[F+92>>2]|0,(l|0)!=0):0){y=g+12|0;h=e[y>>1]|0;m=g+14|0;k=0;q=c[F+100>>2]|0;while(1){if((c[q>>2]|0)==(h|0)?(c[q+4>>2]|0)==(e[m>>1]|0):0)break;k=k+1|0;if(k>>>0>=l>>>0)break a;else q=q+36|0}m=q+8|0;h=c[m>>2]|0;if((bh(I,(c[q+24>>2]|0)+(c[F+144>>2]|0)|0)|0)==0?(r=q+28|0,(Uh(I,da(c[r>>2]|0,(h&1|4)+(h>>>1&1)+(h>>>2&1)|0)|0)|0)==0):0){x=I+32|0;v=c[x>>2]|0;z=I+36|0;s=c[z>>2]|0;h=c[r>>2]|0;r=c[m>>2]|0;o=c[w+(E<<4)>>2]|0;l=r&1;n=(l|0)==0;p=r&2;t=(p|0)==0;r=r&4;u=(r|0)==0;r=(l|4)+(p>>>1)+(r>>>2)|0;b:do if(h){p=0;while(1){l=(h+p|0)>>>1;q=da(l,r)|0;k=v+q|0;if((v+(q+r)|0)>>>0>s>>>0)break b;if(n){m=q+1|0;q=d[k>>0]|0}else{m=q+2|0;q=d[k>>0]<<8|d[v+(q+1)>>0]}if((q|0)==(o|0))break;k=q>>>0>>0;h=k?h:l;p=k?l:p;if(p>>>0>=h>>>0)break b}h=d[v+m>>0]|0;if(t){q=1;n=h}else{q=2;n=d[v+(m+1)>>0]|h<<8}h=d[v+(q+m)>>0]|0;if(u)o=d[v+(m+1+q)>>0]|h<<8;else o=d[v+(m+1+q)>>0]<<8|h<<16|d[v+(m+2+q)>>0];Xh(I);if(!n)break a;m=w+(E<<4)+4|0;k=c[m>>2]|0;l=F+16|0;h=c[l>>2]|0;q=c[F+12>>2]|0;if((h|0)==(q|0)){r=k;q=k}else{r=og(k,q,h)|0;q=c[m>>2]|0;h=c[l>>2]|0}c[f+56>>2]=r;k=og(e[y>>1]<<8,q,h)|0;if(bh(I,(c[D+188>>2]|0)+o|0)|0)break a;if(Uh(I,n)|0)break a;q=c[x>>2]|0;r=c[z>>2]|0;m=q+1|0;c:do if(m>>>0<=r>>>0){l=a[q>>0]|0;h=l&3;if((h|0)==1){h=q+3|0;if(h>>>0>r>>>0)break;s=a[m>>0]|0;p=a[q+2>>0]|0}else if((h|0)==2){h=q+5|0;if(h>>>0>r>>>0)break;s=(d[m>>0]<<8|d[q+2>>0])<<16>>16;p=(d[q+3>>0]<<8|d[q+4>>0])<<16>>16}else if(!h){h=q+2|0;if(h>>>0>r>>>0)break;p=a[m>>0]|0;s=p>>4;p=p<<28>>28}else if((h|0)==3){h=q+7|0;if(h>>>0>r>>>0)break;s=d[q+2>>0]<<8|d[m>>0]<<16|d[q+3>>0];p=d[q+5>>0]<<8|d[q+4>>0]<<16|d[q+6>>0]}else{h=m;s=0;p=0}q=(l&255)>>>2&3;if((q|0)==1){q=h+1|0;if(q>>>0>r>>>0)break;o=a[h>>0]|0;n=o>>>4&15;o=o&15}else if((q|0)==3){q=h+4|0;if(q>>>0>r>>>0)break;n=d[h>>0]<<8|d[h+1>>0];o=d[h+2>>0]<<8|d[h+3>>0]}else if((q|0)==2){q=h+2|0;if(q>>>0>r>>>0)break;n=d[h>>0]|0;o=d[h+1>>0]|0}else{q=h;n=0;o=0}l=(l&255)>>>4&255;h=l&3;if((h|0)==1){m=q+1|0;if(m>>>0>r>>>0)break;k=a[q>>0]<<8}else if(!h)m=q;else if((h|0)==2){m=q+2|0;if(m>>>0>r>>>0)break;k=(d[q>>0]<<8|d[q+1>>0])<<16>>16}else if((h|0)==3){m=q+3|0;if(m>>>0>r>>>0)break;k=d[q+1>>0]<<8|d[q>>0]<<16|d[q+2>>0]}else{k=0;m=q}r=l>>>2;h=o+p|0;if((h|0)>-1?(c[f+72>>2]=1651078259,B=f+80|0,c[B>>2]=n,A=f+76|0,c[A>>2]=o,y=n+7>>3,C=f+84|0,c[C>>2]=y,a[f+94>>0]=1,x=n<<6,c[f+24>>2]=x,c[f+28>>2]=o<<6,c[f+32>>2]=s<<6,c[f+36>>2]=p<<6,c[f+40>>2]=(k>>2)+32&-64,c[f+44>>2]=0-x>>1,c[f+48>>2]=0,c[f+52>>2]=c[g+32>>2],c[f+100>>2]=s,c[f+104>>2]=h,(Sg(f,da(y,o)|0)|0)==0):0){v=c[z>>2]|0;k=c[D+208>>2]&2;l=c[A>>2]|0;do if((l|0)>0){x=c[B>>2]|0;if((x|0)<=0)break;q=c[f+88>>2]|0;h=c[C>>2]|0;u=da(x,l)|0;if(!k){w=0-h|0;h=q+(da(h,l+-1|0)|0)|0}else{w=h;h=q}if((r|0)==1){if((u|0)>0){r=h;l=0;s=0;q=0;k=h;t=x;h=128;o=1;n=1}else break;while(1){d:do if(!n)n=s;else{n=s;while(1){if(!o){n=q;o=1}else{if(m>>>0>=v>>>0)break d;q=d[m>>0]|0;m=m+1|0;n=q>>>4;q=q&15;o=0}if(!n)n=0;else break}}while(0);l=((o|0)==0?0:h)|l;h=h>>>1;p=t+-1|0;do if((t|0)<2){a[k>>0]=l;k=r+w|0;r=k;l=0;p=x;h=128}else{if(h)break;a[k>>0]=l;l=0;k=k+1|0;h=128}while(0);u=u+-1|0;if((u|0)<=0)break;else{s=n+-1|0;t=p;n=(n|0)<2&1}}if((h|0)==128)break;a[k>>0]=l;break}else if((r|0)==2){if((u|0)>0){r=m;q=h;l=0;s=0;k=h;t=x;h=128;o=1;m=1}else break;while(1){e:do if(!m){m=r;n=s}else{p=r;n=s;while(1){if(p>>>0>=v>>>0){m=p;break e}m=p+1|0;H=a[p>>0]|0;n=H&255;o=o^1;if(!(H<<24>>24))p=m;else break}}while(0);l=((o|0)==0?0:h)|l;h=h>>>1;p=t+-1|0;do if((t|0)<2){a[k>>0]=l;k=q+w|0;q=k;l=0;p=x;h=128}else{if(h)break;a[k>>0]=l;l=0;k=k+1|0;h=128}while(0);u=u+-1|0;if((u|0)<=0)break;else{r=m;s=n+-1|0;t=p;m=(n|0)<2&1}}if((h|0)==128)break;a[k>>0]=l;break}else if(!r){t=v-m<<3;t=(t|0)>(u|0)?u:t;if((t|0)>0){p=m;o=h;l=0;k=h;q=x;h=128;s=t;m=0}else break;while(1){if(!((s^t)&7)){r=p+1|0;m=d[p>>0]|0}else r=p;l=((m&128|0)==0?0:h)|l;m=m<<1;h=h>>>1;n=q+-1|0;do if((q|0)<2){a[k>>0]=l;k=o+w|0;o=k;l=0;n=x;h=128}else{if(h)break;a[k>>0]=l;l=0;k=k+1|0;h=128}while(0);s=s+-1|0;if((s|0)<=0)break;else{p=r;q=n}}if((h|0)==128)break;a[k>>0]=l;break}else break c}while(0);Xh(I);I=0;i=J;return I|0}}while(0);Xh(I);break a}while(0);Xh(I)}}while(0);if(j&16384){I=6;i=J;return I|0}m=c[F+128>>2]|0;c[f+72>>2]=1869968492;n=f+110|0;b[n>>1]=0;b[G>>1]=0;C=c[D+188>>2]|0;D=c[D+104>>2]|0;I=c[m+(E<<4)+12>>2]|0;h=c[m+(E<<4)+8>>2]|0;k=f+188|0;zg(c[k>>2]|0);c[f+176>>2]=0;h=Es(f+160|0,D,C,I,h)|0;if(h){I=h;i=J;return I|0}q=j&1;h=(c[k>>2]|0)+20|0;c[G+0>>2]=c[h+0>>2];c[G+4>>2]=c[h+4>>2];c[G+8>>2]=c[h+8>>2];c[G+12>>2]=c[h+12>>2];c[G+16>>2]=c[h+16>>2];h=f+124|0;k=c[h>>2]&-6;c[h>>2]=k|4;if((g|0)!=0?(e[g+14>>1]|0)<24:0)c[h>>2]=k|260;r=f+40|0;c[r>>2]=0;o=f+52|0;c[o>>2]=0;k=c[m+(E<<4)+4>>2]|0;h=c[F+16>>2]|0;l=c[F+12>>2]|0;if((h|0)!=(l|0))k=og(k,l,h)|0;if(!(c[F+36>>2]&1)){c[r>>2]=k;h=k;k=c[o>>2]|0}else{c[o>>2]=k;h=c[r>>2]|0}c[f+56>>2]=h;c[f+60>>2]=k;c[f+44>>2]=0;c[f+48>>2]=0;if(!q){m=c[g+16>>2]|0;l=c[g+20>>2]|0;if((b[n>>1]|0)>0){h=0;k=c[f+112>>2]|0;while(1){c[k>>2]=qg(c[k>>2]|0,m)|0;I=k+4|0;c[I>>2]=qg(c[I>>2]|0,l)|0;h=h+1|0;if((h|0)>=(b[n>>1]|0))break;else k=k+8|0}h=c[r>>2]|0}c[r>>2]=qg(h,m)|0;c[o>>2]=qg(c[o>>2]|0,l)|0}Ih(G,H);G=c[H>>2]|0;c[f+24>>2]=(c[H+8>>2]|0)-G;I=c[H+4>>2]|0;c[f+28>>2]=(c[H+12>>2]|0)-I;c[f+32>>2]=G;c[f+36>>2]=I;I=0;i=J;return I|0}function Rm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=a+288|0;Jm(a,b,d,e)|0;f=g+12|0;b=c[f>>2]|0;g=g+16|0;a=c[g>>2]|0;if((b|0)==(a|0))return 0;d=c[e>>2]|0;if(!d)a=0;else{a=og(d,b,a)|0;c[e>>2]=a}b=e+4|0;if(!(c[b>>2]|0))return 0;c[b>>2]=og(a,c[f>>2]|0,c[g>>2]|0)|0;return 0}function Sm(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+16|0;u=x;h=c[f>>2]|0;c[u>>2]=0;o=b+5|0;if(o>>>0<=e>>>0){m=d[b+3>>0]|0;n=a[b+4>>0]|0;v=n&255;w=f+92|0;j=c[w>>2]|0;g=j+v|0;l=f+96|0;do if(g>>>0>(c[l>>2]|0)>>>0){k=g+3&-4;g=f+100|0;c[g>>2]=Dg(h,36,j,k,c[g>>2]|0,u)|0;g=c[u>>2]|0;if(!g){c[l>>2]=k;break}else{w=g;i=x;return w|0}}while(0);g=m&1;q=(g|0)==0;k=m&2;r=(k|0)==0;h=m&4;s=(h|0)==0;j=m&8;t=(j|0)==0;l=m&16;p=(l|0)==0;if((b+((da((g|8)+(k>>>1)+(h>>>2)+(j>>>3)+(l>>>4)|0,v)|0)+5)|0)>>>0<=e>>>0){if(!(n<<24>>24)){h=0;g=c[w>>2]|0}else{g=c[w>>2]|0;b=0;e=(c[f+100>>2]|0)+(g*36|0)|0;while(1){if(q){j=o+1|0;k=2;h=d[o>>0]|0;l=1}else{j=o+2|0;k=3;h=(d[o>>0]|0)<<8|(d[o+1>>0]|0);l=2}c[e>>2]=h;if(r){m=k;k=d[j>>0]|0}else{m=l+2|0;k=(d[o+l>>0]|0)<<8|(d[o+(l+1)>>0]|0)}c[e+4>>2]=k;h=m+1|0;c[e+8>>2]=d[o+m>>0];k=d[o+h>>0]|0;if(s){j=d[o+(m+2)>>0]|0|k<<8;k=m}else{j=(d[o+(m+2)>>0]|0)<<8|k<<16|(d[o+(m+3)>>0]|0);k=h}c[e+20>>2]=j;if(t){j=k+5|0;k=(d[o+(k+3)>>0]|0)<<8|(d[o+(k+4)>>0]|0)}else{j=k+6|0;k=(d[o+(k+4)>>0]|0)<<8|(d[o+(k+3)>>0]|0)<<16|(d[o+(k+5)>>0]|0)}h=o+j|0;c[e+24>>2]=k;if(p){k=j+1|0;h=d[h>>0]|0}else{k=j+2|0;h=(d[h>>0]|0)<<8|(d[o+(j+1)>>0]|0)}c[e+28>>2]=h;b=b+1|0;if((b|0)==(v|0))break;else{o=o+k|0;e=e+36|0}}h=c[u>>2]|0}c[w>>2]=g+v;w=h;i=x;return w|0}}c[u>>2]=8;w=8;i=x;return w|0}function Tm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;c[h>>2]=0;f=d-b|0;g=e+80|0;if(c[g>>2]|0){b=0;i=j;return b|0}d=yg(c[e>>2]|0,f+1|0,h)|0;c[g>>2]=d;e=c[h>>2]|0;if(e){b=e;i=j;return b|0}qfa(d|0,b|0,f|0)|0;a[(c[g>>2]|0)+f>>0]=0;b=c[h>>2]|0;i=j;return b|0}function Um(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;l=m;c[l>>2]=0;f=c[e>>2]|0;j=e+76|0;if(c[j>>2]|0){k=0;i=m;return k|0}h=a+1|0;if(h>>>0<=b>>>0?(g=d[a>>0]|0,k=g&15,g=k+(g>>>4)|0,(a+(g<<1|1)|0)>>>0<=b>>>0):0){f=Dg(f,4,0,g,0,l)|0;b=c[l>>2]|0;if(b){k=b;i=m;return k|0}c[j>>2]=f;c[e+64>>2]=f+(k<<2);if(!g){k=0;i=m;return k|0}while(1){c[f>>2]=((d[h>>0]|0)<<8|(d[h+1>>0]|0))<<16>>16;g=g+-1|0;if(!g)break;else{h=h+2|0;f=f+4|0}}k=c[l>>2]|0;i=m;return k|0}c[l>>2]=8;k=8;i=m;return k|0}function Vm(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=i;i=i+16|0;p=q;c[p>>2]=0;j=c[g>>2]|0;k=yg(j,24,p)|0;if(c[p>>2]|0){g=c[p>>2]|0;i=q;return g|0}n=e+4|0;if(n>>>0<=f>>>0?(o=a[e>>0]|0,a[k+4>>0]=o,b[k+6>>1]=(d[e+1>>0]|0)<<8|(d[e+2>>0]|0),s=a[e+3>>0]|0,a[k+5>>0]=s,c[k+12>>2]=(c[g+4>>2]|0)+n-(c[g+148>>2]|0),l=s&1,m=(l&255)<<1,r=m+3|0,s=(s&2)==0,m=m|4,h=s?r:m,c[k+8>>2]=s?r:m,m=o&255,(e+((da(m,h)|0)+4)|0)>>>0<=f>>>0):0){if(!(o<<24>>24)){Ag(j,k);s=c[p>>2]|0;i=q;return s|0}if(!(l<<24>>24)){c[k+16>>2]=(d[n>>0]|0)<<16|(d[e+5>>0]|0);s=da(m+-1|0,h)|0;c[k+20>>2]=(d[e+(s+4)>>0]|0)<<16|(d[e+(s+5)>>0]|0)}else{c[k+16>>2]=(d[e+6>>0]|0)<<8|(d[e+7>>0]|0)|((d[n>>0]|0)<<8|(d[e+5>>0]|0))<<16;s=da(m+-1|0,h)|0;c[k+20>>2]=(d[e+(s+6)>>0]|0)<<8|(d[e+(s+7)>>0]|0)|((d[e+(s+4)>>0]|0)<<8|(d[e+(s+5)>>0]|0))<<16}c[k>>2]=0;s=g+140|0;c[c[s>>2]>>2]=k;c[s>>2]=k;s=g+132|0;c[s>>2]=(c[s>>2]|0)+m;s=c[p>>2]|0;i=q;return s|0}Ag(j,k);c[p>>2]=8;s=c[p>>2]|0;i=q;return s|0}function Wm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g;c[a+32>>2]=d;e=a+24|0;c[e>>2]=Dg(d,4,0,b,0,f)|0;if((c[f>>2]|0)==0?(c[a+28>>2]=Dg(d,4,0,b,0,f)|0,(c[f>>2]|0)==0):0){c[a+16>>2]=b;c[a+12>>2]=-559038737;c[a+20>>2]=0;c[a>>2]=0;c[a+8>>2]=0;c[a+4>>2]=0;a=a+36|0;c[a+0>>2]=c[4798];c[a+4>>2]=c[4799];c[a+8>>2]=c[4800];c[a+12>>2]=c[4801];a=0;i=g;return a|0}Ag(d,c[e>>2]|0);c[e>>2]=0;a=c[f>>2]|0;i=g;return a|0}function Xm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;d=k;g=c[a+32>>2]|0;h=c[a>>2]|0;if(!h){i=k;return}j=a+4|0;b=yg(g,c[j>>2]|0,d)|0;c[a>>2]=b;if(c[d>>2]|0){i=k;return}qfa(b|0,h|0,c[j>>2]|0)|0;d=c[a+16>>2]|0;b=c[a+24>>2]|0;e=(c[a>>2]|0)-h|0;f=b+(d<<2)|0;if((d|0)>0)do{d=c[b>>2]|0;if(d)c[b>>2]=d+e;b=b+4|0}while(b>>>0>>0);c[a+8>>2]=c[j>>2];Ag(g,h);i=k;return}function Ym(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;g=q;if((b|0)<0){a=6;i=q;return a|0}k=a+16|0;if((e|0)<0?1:(c[k>>2]|0)<=(b|0)){a=6;i=q;return a|0}p=a+4|0;h=(c[p>>2]|0)+e|0;o=a+8|0;f=c[o>>2]|0;if(h>>>0>f>>>0){n=c[a>>2]|0;j=n;m=d-j|0;m=(m|0)>-1&m>>>0>>0?m:-1;do f=f+1024+(f>>>2)&-1024;while(f>>>0>>0);l=c[a+32>>2]|0;h=yg(l,f,g)|0;c[a>>2]=h;g=c[g>>2]|0;if(g){c[a>>2]=n;a=g;i=q;return a|0}if(n){qfa(h|0,n|0,c[o>>2]|0)|0;g=c[k>>2]|0;h=c[a+24>>2]|0;j=(c[a>>2]|0)-j|0;k=h+(g<<2)|0;if((g|0)>0)do{g=c[h>>2]|0;if(g)c[h>>2]=g+j;h=h+4|0}while(h>>>0>>0);Ag(l,n)}c[o>>2]=f;if((m|0)>-1)d=(c[a>>2]|0)+m|0}c[(c[a+24>>2]|0)+(b<<2)>>2]=(c[a>>2]|0)+(c[p>>2]|0);c[(c[a+28>>2]|0)+(b<<2)>>2]=e;qfa((c[a>>2]|0)+(c[p>>2]|0)|0,d|0,e|0)|0;c[p>>2]=(c[p>>2]|0)+e;a=0;i=q;return a|0}function Zm(a){a=a|0;var b=0,d=0,e=0;b=c[a+32>>2]|0;d=a+12|0;if((c[d>>2]|0)!=-559038737)return;Ag(b,c[a>>2]|0);c[a>>2]=0;e=a+24|0;Ag(b,c[e>>2]|0);c[e>>2]=0;a=a+28|0;Ag(b,c[a>>2]|0);c[a>>2]=0;c[d>>2]=0;return}function _m(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a+12>>2]=0;c[a+4>>2]=b;c[a+8>>2]=d;c[a>>2]=b;c[a+16>>2]=e;b=a+20|0;d=19208|0;e=b+52|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));return}function $m(a){a=a|0;return}function an(b){b=b|0;var d=0,e=0,f=0;f=c[b+8>>2]|0;d=c[b>>2]|0;a:do if(d>>>0>>0)while(1){b:do switch(a[d>>0]|0){case 37:{e=37;while(1){if(e<<24>>24==10|e<<24>>24==13)break b;d=d+1|0;if(d>>>0>=f>>>0)break b;e=a[d>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:break a}while(0);d=d+1|0;if(d>>>0>=f>>>0)break a}while(0);c[b>>2]=d;return}function bn(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=c[b>>2]|0;e=c[b+8>>2]|0;a:do if(l>>>0>>0){f=l;while(1){b:do switch(a[f>>0]|0){case 37:{h=37;while(1){if(h<<24>>24==10|h<<24>>24==13)break b;f=f+1|0;if(f>>>0>=e>>>0)break b;h=a[f>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:break a}while(0);f=f+1|0;if(f>>>0>=e>>>0)break a}}else f=l;while(0);c:do if(f>>>0>>0){switch(a[f>>0]|0){case 47:{f=f+1|0;break}case 62:{g=f+1|0;if(g>>>0>=e>>>0){f=g;g=3;break c}k=(a[g>>0]|0)==62;f=k?f+2|0:g;g=k?0:3;break c}case 60:{h=f+1|0;d:do if(h>>>0>>0){g=a[h>>0]|0;if(g<<24>>24==60){f=f+2|0;g=0;break c}else f=h;while(1){e:do switch(g<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{j=66;break}case 37:{g=37;while(1){if(g<<24>>24==10|g<<24>>24==13){j=66;break e}f=f+1|0;if(f>>>0>=e>>>0){j=66;break e}g=a[f>>0]|0}}default:j=68}while(0);if((j|0)==66){j=0;f=f+1|0;if(f>>>0>=e>>>0)j=68}if((j|0)==68){if(f>>>0>=e>>>0)break d;g=a[f>>0]|0;if((g+-48&255)>=10)switch(g<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break d}f=f+1|0;if(f>>>0>=e>>>0)break d}g=a[f>>0]|0}}else f=h;while(0);if(f>>>0>>0?(a[f>>0]|0)!=62:0){g=3;break c}f=f+1|0;g=0;break c}case 40:{g=0;f:while(1){g:while(1){h=a[f>>0]|0;i=f+1|0;h:do if(h<<24>>24==40){f=i;j=56;break g}else if(h<<24>>24==41){f=i;j=58;break g}else if(h<<24>>24==92){if((i|0)==(e|0)){f=3;break f}switch(d[i>>0]|0){case 41:case 40:case 92:case 102:case 98:case 116:case 114:case 110:{f=f+2|0;break h}default:{}}if(i>>>0>>0){h=0;while(1){if((a[i>>0]&-8)<<24>>24!=48){f=i;break h}f=f+2|0;h=h+1|0;if(!(h>>>0<3&f>>>0>>0))break;else{k=i;i=f;f=k}}}else f=i}else f=i;while(0);if(f>>>0>=e>>>0){g=3;break c}}if((j|0)==56)g=g+1|0;else if((j|0)==58){g=g+-1|0;if(!g){g=0;break c}}if(f>>>0>=e>>>0){g=3;break c}}k=b+12|0;c[k>>2]=f;c[b>>2]=e;return}case 123:{h=123;g=0;i:while(1){j:do switch(h&255|0){case 123:{g=g+1|0;break}case 60:{f=f+1|0;k:do if(f>>>0>>0)while(1){l:do switch(a[f>>0]|0){case 37:{h=37;while(1){if(h<<24>>24==10|h<<24>>24==13){j=32;break l}f=f+1|0;if(f>>>0>=e>>>0){j=32;break l}h=a[f>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:{j=32;break}default:{}}while(0);if((j|0)==32){j=0;f=f+1|0;if(f>>>0>>0)continue}if(f>>>0>=e>>>0)break k;h=a[f>>0]|0;if((h+-48&255)>=10)switch(h<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break k}f=f+1|0;if(f>>>0>=e>>>0)break k}while(0);if(f>>>0>>0?(a[f>>0]|0)!=62:0){j=43;break i}f=f+1|0;break}case 125:{g=g+-1|0;if(!g){j=13;break i}break}case 37:while(1){if(h<<24>>24==10|h<<24>>24==13)break j;f=f+1|0;if(f>>>0>=e>>>0)break j;h=a[f>>0]|0}case 40:{if(f>>>0>>0)k=0;else{j=43;break i}while(1){i=f;m:while(1){h=a[i>>0]|0;f=i+1|0;n:do if(h<<24>>24==41){j=26;break m}else if(h<<24>>24==40){j=24;break m}else if(h<<24>>24==92){if((f|0)==(e|0)){f=e;j=43;break i}switch(d[f>>0]|0){case 41:case 40:case 92:case 102:case 98:case 116:case 114:case 110:{f=i+2|0;break n}default:{}}if(f>>>0>>0){j=0;while(1){if((a[f>>0]&-8)<<24>>24!=48)break n;h=i+2|0;j=j+1|0;if(!(j>>>0<3&h>>>0>>0)){f=h;break}else{i=f;f=h}}}}while(0);if(f>>>0>>0)i=f;else{j=43;break i}}if((j|0)==24)h=k+1|0;else if((j|0)==26){j=0;h=k+-1|0;if(!h)break j}if(f>>>0>>0)k=h;else{j=43;break i}}}default:{}}while(0);f=f+1|0;if(f>>>0>=e>>>0){h=0;break}h=a[f>>0]|0}if((j|0)==13){f=f+1|0;g=0;h=0}else if((j|0)==43){f=f+1|0;h=3}g=(g|0)==0?h:3;break c}case 93:case 91:{f=f+1|0;g=0;break c}default:{}}if(f>>>0>>0)while(1){switch(a[f>>0]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:{g=0;break c}default:{}}f=f+1|0;if(f>>>0>=e>>>0){g=0;break c}}else g=0}else g=0;while(0);if(f>>>0>=e>>>0){k=f;j=g;i=b+12|0;c[i>>2]=j;c[b>>2]=k;return}k=f;j=(f|0)==(l|0)?3:g;i=b+12|0;c[i>>2]=j;c[b>>2]=k;return}function cn(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=c[b+8>>2]|0;d=c[b>>2]|0;a:do if(d>>>0>>0)while(1){b:do switch(a[d>>0]|0){case 37:{e=37;while(1){if(e<<24>>24==10|e<<24>>24==13)break b;d=d+1|0;if(d>>>0>=n>>>0)break b;e=a[d>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:break a}while(0);d=d+1|0;if(d>>>0>=n>>>0)break a}while(0);c[b>>2]=d;if(d>>>0>=n>>>0){b=0;return b|0}f=a[d>>0]|0;if(f<<24>>24==43|f<<24>>24==45){e=d+1|0;if((e|0)==(n|0)){b=0;return b|0}else j=f<<24>>24==45&1}else{e=d;j=0}c:do if(e>>>0>>0){h=0;i=0;while(1){f=a[e>>0]|0;g=f&255;switch(f<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{g=h;f=i;break c}default:{}}if(f<<24>>24<0){g=h;f=i;break c}m=g&127;g=a[19600+m>>0]|0;f=g<<24>>24;if((m+-48|0)>>>0>=10){g=h;f=i;break c}if((i|0)<=214748364)if((i|0)==214748364&g<<24>>24>7){g=1;f=214748364}else{g=h;f=f+(i*10|0)|0}else{g=1;f=i}e=e+1|0;if(e>>>0>>0){h=g;i=f}else break c}}else{g=0;f=0}while(0);k=g<<24>>24==0?f:2147483647;k=j<<24>>24==0?k:0-k|0;if((e|0)==(d|0)){b=0;return b|0}if(e>>>0>>0?(a[e>>0]|0)==35:0){m=e+1|0;if(m>>>0>=n>>>0|(k+-2|0)>>>0>34){b=0;return b|0}d=a[m>>0]|0;if(d<<24>>24==43|d<<24>>24==45){e=e+2|0;if((e|0)==(n|0)){b=0;return b|0}else l=d<<24>>24==45&1}else{e=m;l=0}i=2147483647/(k|0)|0;d:do if(e>>>0>>0){j=(2147483647%(k|0)|0)<<24>>24;g=0;d=0;while(1){f=a[e>>0]|0;h=f&255;switch(f<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:break d;default:{}}if(f<<24>>24<0)break d;h=a[19600+(h&127)>>0]|0;f=h<<24>>24;if(!(h<<24>>24>-1&(f|0)<(k|0)))break d;if((d|0)<=(i|0))if((d|0)==(i|0)&(f|0)>(j|0)){g=1;d=i}else d=f+(da(d,k)|0)|0;else g=1;e=e+1|0;if(e>>>0>=n>>>0)break d}}else{g=0;d=0}while(0);d=g<<24>>24==0?d:2147483647;if((e|0)==(m|0)){b=0;return b|0}else d=l<<24>>24==0?d:0-d|0}else d=k;c[b>>2]=e;b=d;return b|0}function dn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=c[b+8>>2]|0;e=c[b>>2]|0;a:do if(e>>>0>>0)while(1){b:do switch(a[e>>0]|0){case 37:{f=37;while(1){if(f<<24>>24==10|f<<24>>24==13)break b;e=e+1|0;if(e>>>0>=g>>>0)break b;f=a[e>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:break a}while(0);e=e+1|0;if(e>>>0>=g>>>0)break a}while(0);c[b>>2]=e;return Fs(b,g,d)|0}function en(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;l=b+8|0;k=c[l>>2]|0;h=c[b>>2]|0;a:do if(h>>>0>>0)while(1){b:do switch(a[h>>0]|0){case 0:case 12:case 9:case 10:case 13:case 32:break;case 37:{i=37;while(1){if(i<<24>>24==10|i<<24>>24==13)break b;h=h+1|0;if(h>>>0>=k>>>0)break b;i=a[h>>0]|0}}default:{m=h;break a}}while(0);h=h+1|0;if(h>>>0>=k>>>0){m=h;break a}}else m=h;while(0);c[b>>2]=m;if(m>>>0>=k>>>0){b=0;return b|0}if(g<<24>>24){if((a[m>>0]|0)!=60){b=3;return b|0}g=m+1|0;h=e<<1;if(g>>>0>>0){k=k-g|0;k=h>>>0>k>>>0?k:h;if(k){g=1;j=0;h=0;c:while(1){i=j+1|0;e=a[m+i>>0]|0;switch(e<<24>>24){case 0:case 9:case 10:case 12:case 13:case 32:break;default:{if(e<<24>>24<0){i=j;break c}e=a[19600+(e&127)>>0]|0;if((e&255)>15){i=j;break c}g=e<<24>>24|g<<4;if(g&256){a[d+h>>0]=g;g=1;h=h+1|0}}}if(i>>>0>>0)j=i;else break}if((g|0)!=1){a[d+h>>0]=g<<4;h=h+1|0}}else{i=0;h=0}e=h;g=m+(i+1)|0;h=i+2|0}else{e=0;h=2}c[f>>2]=e;if(g>>>0<(c[l>>2]|0)>>>0?(a[g>>0]|0)!=62:0){b=3;return b|0}}else{j=e<<1;l=k-m|0;j=j>>>0>l>>>0?l:j;if(j){e=1;h=0;g=0;d:do{i=a[m+h>>0]|0;switch(i<<24>>24){case 0:case 9:case 10:case 12:case 13:case 32:break;default:{if(i<<24>>24<0)break d;i=a[19600+(i&127)>>0]|0;if((i&255)>15)break d;e=i<<24>>24|e<<4;if(e&256){a[d+g>>0]=e;e=1;g=g+1|0}}}h=h+1|0}while(h>>>0>>0);if((e|0)!=1){a[d+g>>0]=e<<4;g=g+1|0}}else{h=0;g=0}c[f>>2]=g}c[b>>2]=m+h;b=0;return b|0}function fn(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;n=o;m=c[d+8>>2]|0;h=c[d>>2]|0;a:do if(h>>>0>>0)while(1){b:do switch(a[h>>0]|0){case 0:case 12:case 9:case 10:case 13:case 32:break;case 37:{g=37;while(1){if(g<<24>>24==10|g<<24>>24==13)break b;h=h+1|0;if(h>>>0>=m>>>0)break b;g=a[h>>0]|0}}default:break a}while(0);h=h+1|0;if(h>>>0>=m>>>0)break a}while(0);c[d>>2]=h;c[n>>2]=h;c:do if(h>>>0>>0){g=a[h>>0]|0;if(g<<24>>24!=91)if(g<<24>>24==123){g=125;k=10}else{j=0;l=0}else{g=93;k=10}if((k|0)==10){h=h+1|0;c[n>>2]=h;j=1;l=g}d:do if(!f){k=j;g=0;while(1){if(h>>>0>=m>>>0)break c;e:while(1){f:do switch(a[h>>0]|0){case 37:{j=37;while(1){if(j<<24>>24==10|j<<24>>24==13)break f;h=h+1|0;if(h>>>0>=m>>>0)break f;j=a[h>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:{j=h;break e}}while(0);h=h+1|0;if(h>>>0>=m>>>0){j=h;break}}c[n>>2]=j;if(j>>>0>=m>>>0){h=j;break c}if((a[j>>0]|0)==l<<24>>24){h=j;break d}Fs(n,m,0)|0;h=c[n>>2]|0;if((j|0)==(h|0)){h=j;g=-1;break c}g=g+1|0;if(k)k=1;else break c}}else{k=j;g=0;while(1){if(h>>>0>=m>>>0)break c;g:do{h:do switch(a[h>>0]|0){case 37:{j=37;while(1){if(j<<24>>24==10|j<<24>>24==13)break h;h=h+1|0;if(h>>>0>=m>>>0)break h;j=a[h>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:break g}while(0);h=h+1|0}while(h>>>0>>0);c[n>>2]=h;if(h>>>0>=m>>>0)break c;if((a[h>>0]|0)==l<<24>>24)break d;if((g|0)>=(e|0))break c;b[f+(g<<1)>>1]=(Fs(n,m,0)|0)>>>16;j=c[n>>2]|0;if((h|0)==(j|0)){g=-1;break c}g=g+1|0;if(k){h=j;k=1}else{h=j;break c}}}while(0);h=h+1|0;c[n>>2]=h}else g=0;while(0);c[d>>2]=h;i=o;return g|0}function gn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;r=s+4|0;q=s;p=c[b+8>>2]|0;h=c[b>>2]|0;a:do if(h>>>0

>>0)while(1){b:do switch(a[h>>0]|0){case 37:{g=37;while(1){if(g<<24>>24==10|g<<24>>24==13)break b;h=h+1|0;if(h>>>0>=p>>>0)break b;g=a[h>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:break a}while(0);h=h+1|0;if(h>>>0>=p>>>0)break a}while(0);c[b>>2]=h;c[r>>2]=h;c:do if(h>>>0

>>0){g=a[h>>0]|0;if(g<<24>>24!=91)if(g<<24>>24==123){g=125;j=10}else{k=0;o=0}else{g=93;j=10}if((j|0)==10){h=h+1|0;c[r>>2]=h;k=1;o=g}n=(e|0)!=0;m=n^1;l=k;g=0;while(1){if(h>>>0>=p>>>0)break c;d:do{e:do switch(a[h>>0]|0){case 37:{k=37;while(1){if(k<<24>>24==10|k<<24>>24==13)break e;h=h+1|0;if(h>>>0>=p>>>0)break e;k=a[h>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:break d}while(0);h=h+1|0}while(h>>>0

>>0);c[r>>2]=h;if(h>>>0>=p>>>0)break c;if((a[h>>0]|0)==o<<24>>24)break;if(!((g|0)<(d|0)|m))break c;j=Fs(r,p,f)|0;if(n)k=e+(g<<2)|0;else k=q;c[k>>2]=j;k=c[r>>2]|0;if((h|0)==(k|0)){g=-1;break c}g=g+1|0;if(l){h=k;l=1}else{h=k;break c}}h=h+1|0;c[r>>2]=h}else g=0;while(0);c[b>>2]=h;i=s;return g|0}function hn(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=e+8|0;c[n>>2]=0;c[e>>2]=0;o=e+4|0;c[o>>2]=0;j=b+8|0;m=c[j>>2]|0;f=c[b>>2]|0;a:do if(f>>>0>>0)while(1){b:do switch(a[f>>0]|0){case 0:case 12:case 9:case 10:case 13:case 32:break;case 37:{i=37;while(1){if(i<<24>>24==10|i<<24>>24==13)break b;f=f+1|0;if(f>>>0>=m>>>0)break b;i=a[f>>0]|0}}default:break a}while(0);f=f+1|0;if(f>>>0>=m>>>0)break a}while(0);c[b>>2]=f;if(f>>>0>=m>>>0)return;g=d[f>>0]|0;c:do if((g|0)==123){c[n>>2]=3;c[e>>2]=f;g=0;d:while(1){h=a[f>>0]|0;e:do switch(h&255|0){case 60:{f=f+1|0;f:do if(f>>>0>>0)while(1){g:do switch(a[f>>0]|0){case 0:case 12:case 9:case 10:case 13:case 32:{l=46;break}case 37:{h=37;while(1){if(h<<24>>24==10|h<<24>>24==13){l=46;break g}f=f+1|0;if(f>>>0>=m>>>0){l=46;break g}h=a[f>>0]|0}}default:{}}while(0);if((l|0)==46){l=0;f=f+1|0;if(f>>>0>>0)continue}if(f>>>0>=m>>>0)break f;h=a[f>>0]|0;if((h+-48&255)>=10)switch(h<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break f}f=f+1|0;if(f>>>0>=m>>>0)break f}while(0);if(f>>>0>>0?(a[f>>0]|0)!=62:0){l=57;break d}f=f+1|0;break}case 37:while(1){if(h<<24>>24==10|h<<24>>24==13)break e;f=f+1|0;if(f>>>0>=m>>>0)break e;h=a[f>>0]|0}case 40:{if(f>>>0>>0)k=0;else{l=57;break d}while(1){i=f;h:while(1){h=a[i>>0]|0;f=i+1|0;i:do if(h<<24>>24==40){l=38;break h}else if(h<<24>>24==92){if((f|0)==(m|0)){f=m;l=57;break d}switch(d[f>>0]|0){case 41:case 40:case 92:case 102:case 98:case 116:case 114:case 110:{f=i+2|0;break i}default:{}}if(f>>>0>>0){h=f;j=0;while(1){if((a[h>>0]&-8)<<24>>24!=48){f=h;break i}f=i+2|0;j=j+1|0;if(!(j>>>0<3&f>>>0>>0))break;else{i=h;h=f}}}}else if(h<<24>>24==41){l=40;break h}while(0);if(f>>>0>>0)i=f;else{l=57;break d}}if((l|0)==38)h=k+1|0;else if((l|0)==40){l=0;h=k+-1|0;if(!h)break e}if(f>>>0>>0)k=h;else{l=57;break d}}}case 125:{g=g+-1|0;if(!g){l=27;break d}break}case 123:{g=g+1|0;break}default:{}}while(0);f=f+1|0;if(f>>>0>=m>>>0){h=0;break}}if((l|0)==27){f=f+1|0;g=0;h=0}else if((l|0)==57){f=f+1|0;h=3}if(!(g|h))c[o>>2]=f;else l=83}else if((g|0)==40){c[n>>2]=2;c[e>>2]=f;j=0;while(1){h=f;j:while(1){g=a[h>>0]|0;f=h+1|0;k:do if(g<<24>>24==41){l=22;break j}else if(g<<24>>24==40){l=20;break j}else if(g<<24>>24==92){if((f|0)==(m|0)){f=m;l=83;break c}switch(d[f>>0]|0){case 41:case 40:case 92:case 102:case 98:case 116:case 114:case 110:{f=h+2|0;break k}default:{}}if(f>>>0>>0){i=0;while(1){if((a[f>>0]&-8)<<24>>24!=48)break k;g=h+2|0;i=i+1|0;if(!(i>>>0<3&g>>>0>>0)){f=g;break}else{h=f;f=g}}}}while(0);if(f>>>0>>0)h=f;else{l=83;break c}}if((l|0)==20)g=j+1|0;else if((l|0)==22){l=0;g=j+-1|0;if(!g)break}if(f>>>0>>0)j=g;else{l=83;break c}}c[o>>2]=f}else if((g|0)==91){c[n>>2]=3;g=f+1|0;c[e>>2]=f;c[b>>2]=g;l:do if(g>>>0>>0){f=g;while(1){m:do switch(a[f>>0]|0){case 37:{i=37;while(1){if(i<<24>>24==10|i<<24>>24==13)break m;f=f+1|0;if(f>>>0>=m>>>0)break m;i=a[f>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:break l}while(0);f=f+1|0;if(f>>>0>=m>>>0)break l}}else f=g;while(0);c[b>>2]=f;if(f>>>0>>0){k=b+12|0;g=1;while(1){if(c[k>>2]|0){l=83;break c}i=a[f>>0]|0;if(i<<24>>24==93)if((g|0)<2)break;else g=g+-1|0;else if(i<<24>>24==91)g=g+1|0;c[b>>2]=f;bn(b);h=c[j>>2]|0;f=c[b>>2]|0;n:do if(f>>>0>>0)while(1){o:do switch(a[f>>0]|0){case 37:{i=37;while(1){if(i<<24>>24==10|i<<24>>24==13)break o;f=f+1|0;if(f>>>0>=h>>>0)break o;i=a[f>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:break n}while(0);f=f+1|0;if(f>>>0>=h>>>0)break n}while(0);c[b>>2]=f;if(f>>>0>=m>>>0){l=83;break c}}f=f+1|0;c[o>>2]=f}else l=83}else{c[e>>2]=f;c[n>>2]=(a[f>>0]|0)==47?4:1;bn(b);f=c[b>>2]|0;if(!(c[b+12>>2]|0)){c[o>>2]=f;g=f;l=84}else l=83}while(0);if((l|0)==83){g=c[o>>2]|0;l=84}if((l|0)==84)if(!g){c[e>>2]=0;c[n>>2]=0}c[b>>2]=f;return}function jn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;f=n+12|0;j=n;c[e>>2]=-1;hn(a,f);if((c[f+8>>2]|0)!=3){i=n;return}k=c[a>>2]|0;l=a+8|0;m=c[l>>2]|0;h=b+(d*12|0)|0;d=(c[f>>2]|0)+1|0;c[a>>2]=d;g=(c[f+4>>2]|0)+-1|0;c[l>>2]=g;a:do if(d>>>0>>0){f=j+8|0;g=(b|0)!=0;d=b;do{hn(a,j);if(!(c[f>>2]|0))break a;if(g&d>>>0>>0){c[d+0>>2]=c[j+0>>2];c[d+4>>2]=c[j+4>>2];c[d+8>>2]=c[j+8>>2]}d=d+12|0}while((c[a>>2]|0)>>>0<(c[l>>2]|0)>>>0)}else d=b;while(0);c[e>>2]=(d-b|0)/12|0;c[a>>2]=k;c[l>>2]=m;i=n;return}function kn(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=i;i=i+64|0;K=P+56|0;L=P;j=P+4|0;N=P+16|0;O=P+20|0;l=P+24|0;M=P+40|0;hn(e,j);k=c[j+8>>2]|0;a:do if(k){m=c[j>>2]|0;c[N>>2]=m;o=c[j+4>>2]|0;n=c[f+8>>2]|0;if((n|0)==7){G=c[e>>2]|0;J=e+8|0;H=c[J>>2]|0;c[e>>2]=m+1;c[J>>2]=o+-1;hn(e,l);c[e>>2]=G;c[J>>2]=H;if((c[l+8>>2]|0)==3){l=1;n=8;x=5}else{j=m;l=1;m=0;n=7;x=7}}else if((k|0)==3){k=3;l=h;x=5}else{j=m;l=1;m=0;x=7}if((x|0)==5){if(!h)break;j=m+1|0;c[N>>2]=j;if(l){m=1;o=o+-1|0;x=7}}b:do if((x|0)==7){J=f+16|0;I=f+20|0;z=e+16|0;A=o;B=M+4|0;C=M+8|0;D=M+12|0;E=h<<2;F=(h|0)==0;G=h<<1;H=h*3|0;y=m;c:while(1){q=c[g+(y<<2)>>2]|0;s=c[J>>2]|0;v=q+s|0;d:do if(j>>>0>>0)while(1){e:do switch(a[j>>0]|0){case 37:{e=37;while(1){if(e<<24>>24==10|e<<24>>24==13)break e;j=j+1|0;if(j>>>0>=o>>>0)break e;e=a[j>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:{r=j;break d}}while(0);j=j+1|0;if(j>>>0>=o>>>0){r=j;break d}}else r=j;while(0);c[N>>2]=r;f:do switch(n|0){case 2:{if(r>>>0>>0){m=a[r>>0]|0;if(m<<24>>24==43|m<<24>>24==45){j=r+1|0;if((j|0)==(o|0)){j=0;x=58;break f}else q=m<<24>>24==45&1}else{j=r;q=0}g:do if(j>>>0>>0){f=0;p=0;while(1){e=a[j>>0]|0;m=e&255;switch(e<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{e=f;m=j;break g}default:{}}if(e<<24>>24<0){e=f;m=j;break g}x=m&127;e=a[19600+x>>0]|0;m=e<<24>>24;if((x+-48|0)>>>0>=10){e=f;m=j;break g}if((p|0)<=214748364)if((p|0)==214748364&e<<24>>24>7){e=1;p=214748364}else{e=f;p=m+(p*10|0)|0}else e=1;j=j+1|0;if(j>>>0>>0)f=e;else{m=j;break g}}}else{e=0;p=0;m=j}while(0);j=e<<24>>24==0?p:2147483647;j=q<<24>>24==0?j:0-j|0;if((m|0)!=(r|0)){if(m>>>0>>0?(a[m>>0]|0)==35:0){u=m+1|0;if(u>>>0>=o>>>0|(j+-2|0)>>>0>34){j=0;x=58;break f}e=a[u>>0]|0;if(e<<24>>24==43|e<<24>>24==45){m=m+2|0;if((m|0)==(o|0)){j=0;x=58;break f}else t=e<<24>>24==45&1}else{m=u;t=0}r=2147483647/(j|0)|0;h:do if(m>>>0>>0){s=(2147483647%(j|0)|0)<<24>>24;q=0;f=0;while(1){e=a[m>>0]|0;p=e&255;switch(e<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{e=q;j=f;break h}default:{}}if(e<<24>>24<0){e=q;j=f;break h}x=a[19600+(p&127)>>0]|0;e=x<<24>>24;if(!(x<<24>>24>-1&(e|0)<(j|0))){e=q;j=f;break h}do if((f|0)>(r|0))p=1;else{if((f|0)==(r|0)&(e|0)>(s|0)){p=1;f=r;break}p=q;f=e+(da(f,j)|0)|0}while(0);m=m+1|0;if(m>>>0>>0)q=p;else{e=p;j=f;break h}}}else{e=0;j=0}while(0);j=e<<24>>24==0?j:2147483647;if((m|0)==(u|0)){j=0;x=58;break f}else j=t<<24>>24==0?j:0-j|0}c[N>>2]=m;x=58}else{j=0;x=58}}else{j=0;x=58}break}case 3:{j=Fs(N,o,0)|0;x=58;break}case 4:{j=Fs(N,o,3)|0;x=58;break}case 1:{j=r+3|0;if((((j>>>0>>0?(a[r>>0]|0)==116:0)?(a[r+1>>0]|0)==114:0)?(a[r+2>>0]|0)==117:0)?(a[j>>0]|0)==101:0){j=r+5|0;m=1}else{m=r+4|0;if((((m>>>0>>0?(a[r>>0]|0)==102:0)?(a[r+1>>0]|0)==97:0)?(a[r+2>>0]|0)==108:0)?(a[j>>0]|0)==115:0){j=(a[m>>0]|0)==101?r+6|0:r;m=0}else{j=r;m=0}}c[N>>2]=j;j=m;x=58;break}case 8:{v=c[z>>2]|0;w=Dg(v,4,0,E,0,O)|0;j=c[O>>2]|0;if(!j){j=r;u=0}else{x=131;break c}do{t=da(u,h)|0;m=w+(t<<2)|0;c[K>>2]=j;if(j>>>0>>0){e=a[j>>0]|0;if(e<<24>>24!=91)if(e<<24>>24==123){e=125;x=100}else{p=0;e=0}else{e=93;x=100}if((x|0)==100){x=0;j=j+1|0;c[K>>2]=j;p=1}s=(m|0)!=0;r=s^1;q=p;m=0;while(1){if(j>>>0>=o>>>0)break;i:do{j:do switch(a[j>>0]|0){case 0:case 12:case 9:case 10:case 13:case 32:break;case 37:{p=37;while(1){if(p<<24>>24==10|p<<24>>24==13)break j;j=j+1|0;if(j>>>0>=o>>>0)break j;p=a[j>>0]|0}}default:break i}while(0);j=j+1|0}while(j>>>0>>0);c[K>>2]=j;if(j>>>0>=o>>>0)break;if((a[j>>0]|0)==e<<24>>24){x=110;break}if(!((m|0)<(h|0)|r))break;p=Fs(K,o,0)|0;if(s)f=w+(m+t<<2)|0;else f=L;c[f>>2]=p;p=c[K>>2]|0;if((j|0)==(p|0)){x=115;break c}m=m+1|0;if(q){j=p;q=1}else{j=p;break}}if((x|0)==110){x=0;j=j+1|0;c[K>>2]=j}c[N>>2]=j;if((m|0)<0){x=118;break c}}else c[N>>2]=j;k:do if(j>>>0>>0)while(1){l:do switch(a[j>>0]|0){case 37:{e=37;while(1){if(e<<24>>24==10|e<<24>>24==13)break l;j=j+1|0;if(j>>>0>=o>>>0)break l;e=a[j>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:break k}while(0);j=j+1|0;if(j>>>0>=o>>>0)break k}while(0);c[N>>2]=j;u=u+1|0}while(u>>>0<4);if(!F){j=0;do{u=c[g+(j<<2)>>2]|0;c[u>>2]=lg(c[w+(j<<2)>>2]|0)|0;c[u+4>>2]=lg(c[w+(j+h<<2)>>2]|0)|0;c[u+8>>2]=lg(c[w+(j+G<<2)>>2]|0)|0;c[u+12>>2]=lg(c[w+(j+H<<2)>>2]|0)|0;j=j+1|0}while((j|0)!=(h|0))}Ag(v,w);break}case 7:{c[K>>2]=r;m:do if(r>>>0>>0){j=a[r>>0]|0;if(j<<24>>24!=91)if(j<<24>>24==123){e=125;x=75}else{m=0;j=r;e=0}else{e=93;x=75}if((x|0)==75){x=0;j=r+1|0;c[K>>2]=j;m=1}f=m;m=0;while(1){if(j>>>0>=o>>>0)break;n:do{o:do switch(a[j>>0]|0){case 0:case 12:case 9:case 10:case 13:case 32:break;case 37:{p=37;while(1){if(p<<24>>24==10|p<<24>>24==13)break o;j=j+1|0;if(j>>>0>=o>>>0)break o;p=a[j>>0]|0}}default:break n}while(0);j=j+1|0}while(j>>>0>>0);c[K>>2]=j;if(j>>>0>=o>>>0)break;if((a[j>>0]|0)==e<<24>>24){x=85;break}if((m|0)>=4){x=90;break m}c[M+(m<<2)>>2]=Fs(K,o,0)|0;p=c[K>>2]|0;if((j|0)==(p|0)){x=88;break c}m=m+1|0;if(f){j=p;f=1}else{j=p;break}}if((x|0)==85){x=0;j=j+1|0;c[K>>2]=j}c[N>>2]=j;if((m|0)<0){x=92;break c}}else{j=r;x=90}while(0);if((x|0)==90){x=0;c[N>>2]=j}c[v>>2]=lg(c[M>>2]|0)|0;c[q+(s+4)>>2]=lg(c[B>>2]|0)|0;c[q+(s+8)>>2]=lg(c[C>>2]|0)|0;c[q+(s+12)>>2]=lg(c[D>>2]|0)|0;break}case 6:case 5:{e=c[z>>2]|0;j=A-r|0;if(r>>>0>>0){if((k|0)==4){p=r+1|0;c[N>>2]=p;f=j+-1|0}else if((k|0)==2){p=r+1|0;c[N>>2]=p;f=j+-2|0}else{x=67;break c}j=c[v>>2]|0;if(j){Ag(e,j);c[v>>2]=0}m=yg(e,f+1|0,O)|0;j=c[O>>2]|0;if(j){x=131;break c}qfa(m|0,p|0,f|0)|0;a[m+f>>0]=0;c[v>>2]=m}break}default:break a}while(0);do if((x|0)==58){x=0;m=d[I>>0]|0;if((m|0)==1){a[v>>0]=j;break}else if((m|0)==2){b[v>>1]=j;break}else if((m|0)==4){c[v>>2]=j;break}else{c[v>>2]=j;break}}while(0);l=l+-1|0;if(!l)break b;j=c[N>>2]|0;y=y+1|0}if((x|0)==67){c[O>>2]=3;O=3;i=P;return O|0}else if((x|0)==88){c[N>>2]=j;x=92}else if((x|0)==115){c[N>>2]=j;x=118}else if((x|0)==131){i=P;return j|0}if((x|0)==92){c[O>>2]=3;O=3;i=P;return O|0}else if((x|0)==118){c[O>>2]=3;O=3;i=P;return O|0}}while(0);c[O>>2]=0;O=0;i=P;return O|0}while(0);c[O>>2]=3;O=3;i=P;return O|0}function ln(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+448|0;k=s+436|0;l=s;q=s+16|0;r=s+400|0;g=r+0|0;h=d+0|0;j=g+36|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0));g=r+8|0;c[g>>2]=2;j=d+8|0;n=c[j>>2]|0;if((n|0)==7|(n|0)==10)c[g>>2]=3;hn(b,k);if((c[k+8>>2]|0)!=3){b=162;i=s;return b|0}n=c[b>>2]|0;o=b+8|0;p=c[o>>2]|0;h=q+384|0;g=(c[k>>2]|0)+1|0;c[b>>2]=g;k=(c[k+4>>2]|0)+-1|0;c[o>>2]=k;a:do if(g>>>0>>0){k=l+8|0;g=q;do{hn(b,l);if(!(c[k>>2]|0))break a;if(g>>>0>>0){c[g+0>>2]=c[l+0>>2];c[g+4>>2]=c[l+4>>2];c[g+8>>2]=c[l+8>>2]}g=g+12|0}while((c[b>>2]|0)>>>0<(c[o>>2]|0)>>>0)}else g=q;while(0);l=g-q|0;g=(l|0)/12|0;c[b>>2]=n;c[o>>2]=p;if((l|0)<0){b=162;i=s;return b|0}h=c[d+24>>2]|0;h=g>>>0>h>>>0?h:g;if((c[j>>2]|0)!=7?(m=c[d+28>>2]|0,(m|0)!=0):0)a[(c[e>>2]|0)+m>>0]=h;if((h|0)>0){k=r+16|0;j=a[r+20>>0]|0;l=c[k>>2]|0;g=q;while(1){c[b>>2]=c[g>>2];c[o>>2]=c[g+4>>2];kn(b,r,e,f,0)|0;l=l+(j&255)|0;c[k>>2]=l;h=h+-1|0;if((h|0)<=0)break;else g=g+12|0}}c[b>>2]=n;c[o>>2]=p;b=0;i=s;return b|0}function mn(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;c[b+64>>2]=0;a[b+68>>0]=1;c[b+4>>2]=d;c[b+8>>2]=f;c[b>>2]=c[d+100>>2];if((f|0)!=0?(i=f+156|0,h=c[c[i>>2]>>2]|0,c[b+12>>2]=h,c[b+16>>2]=h+20,c[b+20>>2]=h+56,zg(h),c[b+76>>2]=c[e+40>>2],h=b+72|0,c[h>>2]=0,g<<24>>24!=0):0)c[h>>2]=c[(c[i>>2]|0)+36>>2];g=b+24|0;e=b+80|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[e+0>>2]=c[4816];c[e+4>>2]=c[4817];c[e+8>>2]=c[4818];c[e+12>>2]=c[4819];c[e+16>>2]=c[4820];c[e+20>>2]=c[4821];c[e+24>>2]=c[4822];c[e+28>>2]=c[4823];return}function nn(a){a=a|0;var b=0;b=c[a+8>>2]|0;if(!b)return;b=b+108|0;a=c[a+16>>2]|0;c[b+0>>2]=c[a+0>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];c[b+16>>2]=c[a+16>>2];return}function on(a,d){a=a|0;d=d|0;if(!d){d=0;return d|0}a=c[a+12>>2]|0;if(((b[a+22>>1]|0)+d+(b[a+58>>1]|0)|0)>>>0<=(c[a+4>>2]|0)>>>0){d=0;return d|0}d=Eg(a,d,0)|0;return d|0}function pn(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=c[d+20>>2]|0;if(!(a[d+68>>0]|0)){f=h+2|0;g=b[f>>1]|0;g=g+1<<16>>16;b[f>>1]=g;return}else{j=c[h+4>>2]|0;d=h+2|0;i=b[d>>1]|0;h=(c[h+8>>2]|0)+i|0;c[j+(i<<3)>>2]=(lg(e)|0)>>16;c[j+(i<<3)+4>>2]=(lg(f)|0)>>16;a[h>>0]=g<<24>>24!=0?1:2;f=d;g=b[f>>1]|0;g=g+1<<16>>16;b[f>>1]=g;return}}function qn(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=c[d+12>>2]|0;if(((b[g+22>>1]|0)+1+(b[g+58>>1]|0)|0)>>>0>(c[g+4>>2]|0)>>>0?(h=Eg(g,1,0)|0,(h|0)!=0):0){f=h;return f|0}g=c[d+20>>2]|0;if(!(a[d+68>>0]|0))g=g+2|0;else{i=c[g+4>>2]|0;d=g+2|0;h=b[d>>1]|0;g=(c[g+8>>2]|0)+h|0;c[i+(h<<3)>>2]=(lg(e)|0)>>16;c[i+(h<<3)+4>>2]=(lg(f)|0)>>16;a[g>>0]=1;g=d}b[g>>1]=(b[g>>1]|0)+1<<16>>16;i=0;return i|0}function rn(d){d=d|0;var f=0,g=0;g=c[d+20>>2]|0;if(!g){g=3;return g|0}if(!(a[d+68>>0]|0)){b[g>>1]=(b[g>>1]|0)+1<<16>>16;g=0;return g|0}d=c[d+12>>2]|0;if(((b[d+20>>1]|0)+1+(b[d+56>>1]|0)|0)>>>0>(c[d+8>>2]|0)>>>0?(f=Eg(d,0,1)|0,(f|0)!=0):0){g=f;return g|0}d=b[g>>1]|0;if(d<<16>>16>0){b[(c[g+12>>2]|0)+((d<<16>>16)+-1<<1)>>1]=(e[g+2>>1]|0)+65535;d=b[g>>1]|0}b[g>>1]=d+1<<16>>16;g=0;return g|0}function sn(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;h=d+64|0;if((c[h>>2]|0)==3){m=0;return m|0}c[h>>2]=3;k=d+20|0;j=c[k>>2]|0;if(!j){m=3;return m|0}m=d+68|0;if(!(a[m>>0]|0)){b[j>>1]=(b[j>>1]|0)+1<<16>>16;h=d+12|0}else{h=d+12|0;d=c[h>>2]|0;if(((b[d+20>>1]|0)+1+(b[d+56>>1]|0)|0)>>>0>(c[d+8>>2]|0)>>>0?(i=Eg(d,0,1)|0,(i|0)!=0):0){m=i;return m|0}d=b[j>>1]|0;if(d<<16>>16>0){b[(c[j+12>>2]|0)+((d<<16>>16)+-1<<1)>>1]=(e[j+2>>1]|0)+65535;d=b[j>>1]|0}b[j>>1]=d+1<<16>>16}h=c[h>>2]|0;if(((b[h+22>>1]|0)+1+(b[h+58>>1]|0)|0)>>>0>(c[h+4>>2]|0)>>>0?(l=Eg(h,1,0)|0,(l|0)!=0):0){m=l;return m|0}h=c[k>>2]|0;if(!(a[m>>0]|0))h=h+2|0;else{l=c[h+4>>2]|0;m=h+2|0;k=b[m>>1]|0;h=(c[h+8>>2]|0)+k|0;c[l+(k<<3)>>2]=(lg(f)|0)>>16;c[l+(k<<3)+4>>2]=(lg(g)|0)>>16;a[h>>0]=1;h=m}b[h>>1]=(b[h>>1]|0)+1<<16>>16;m=0;return m|0}function tn(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=c[d+20>>2]|0;if(!h)return;k=b[h>>1]|0;if(k<<16>>16<2)j=0;else j=(b[(c[h+12>>2]|0)+((k<<16>>16)+-2<<1)>>1]|0)+1|0;i=h+2|0;d=b[i>>1]|0;if(((d<<16>>16>1?(f=c[h+4>>2]|0,e=(d<<16>>16)+-1|0,g=(c[h+8>>2]|0)+e|0,(c[f+(j<<3)>>2]|0)==(c[f+(e<<3)>>2]|0)):0)?(c[f+(j<<3)+4>>2]|0)==(c[f+(e<<3)+4>>2]|0):0)?(a[g>>0]|0)==1:0){d=d+-1<<16>>16;b[i>>1]=d}if(k<<16>>16<=0)return;e=(d<<16>>16)+-1|0;if((j|0)==(e|0)){b[h>>1]=k+-1<<16>>16;b[i>>1]=d+-1<<16>>16;return}else{b[(c[h+12>>2]|0)+((k<<16>>16)+-1<<1)>>1]=e;return}}function un(b,d,e,f,g,h,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0;sfa(b|0,0,1500)|0;m=Ah(c[d+96>>2]|0,89040)|0;if(!m){f=7;return f|0}c[b+1348>>2]=m;c[b+64>>2]=0;a[b+68>>0]=1;c[b+4>>2]=d;c[b+8>>2]=f;c[b>>2]=c[d+100>>2];if((f|0)!=0?(l=f+156|0,n=c[c[l>>2]>>2]|0,c[b+12>>2]=n,c[b+16>>2]=n+20,c[b+20>>2]=n+56,zg(n),c[b+76>>2]=c[e+40>>2],n=b+72|0,c[n>>2]=0,i<<24>>24!=0):0)c[n>>2]=c[(c[l>>2]|0)+36>>2];e=b+24|0;f=b+80|0;c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[f+0>>2]=c[4816];c[f+4>>2]=c[4817];c[f+8>>2]=c[4818];c[f+12>>2]=c[4819];c[f+16>>2]=c[4820];c[f+20>>2]=c[4821];c[f+24>>2]=c[4822];c[f+28>>2]=c[4823];c[b+1352>>2]=c[d+16>>2];c[b+1356>>2]=g;c[b+1468>>2]=j;c[b+1464>>2]=h;c[b+1472>>2]=k;f=b+1476|0;c[f+0>>2]=c[4824];c[f+4>>2]=c[4825];c[f+8>>2]=c[4826];f=0;return f|0}function vn(a){a=a|0;var b=0;b=c[a+8>>2]|0;if(!b)return;b=b+108|0;a=c[a+16>>2]|0;c[b+0>>2]=c[a+0>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];c[b+16>>2]=c[a+16>>2];return}function wn(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;ja=i;i=i+16|0;ca=ja+8|0;p=ja;W=ja+4|0;c[ca>>2]=f;c[p>>2]=g;n=p^ca^W;n=(n>>>10^n^n>>20)&65535;c[W>>2]=(n|0)==0?29572:n;c[f+1136>>2]=f+112;n=f+1140|0;c[f+1344>>2]=n;P=f+64|0;c[P>>2]=0;ea=c[f+72>>2]|0;l=c[f+1488>>2]|0;if((l|0)!=0?(k=c[f+1492>>2]|0,(k|0)!=0):0){sfa(l|0,0,k<<2|0)|0;g=c[p>>2]|0}c[f+1144>>2]=g;p=g+h|0;c[f+1148>>2]=p;c[n>>2]=g;L=f+24|0;l=c[L>>2]|0;M=f+28|0;k=c[M>>2]|0;_=(ea|0)!=0;if(_)Bd[c[ea+4>>2]&511](c[ea>>2]|0);if((h|0)<=0){ba=0;i=ja;return ba|0}Y=f+12|0;Z=f+20|0;C=f+68|0;D=ea+20|0;E=f+32|0;F=f+40|0;G=f+44|0;H=f+70|0;I=f+36|0;J=ea+12|0;K=ea+16|0;m=0;o=0;A=p;t=l;p=0;y=l;z=k;B=n;a:while(1){u=m;l=o;while(1){r=p;while(1){q=c[ca>>2]|0;s=q+1136|0;p=c[s>>2]|0;n=g+1|0;h=a[g>>0]|0;k=h&255;b:do switch(k|0){case 13:{g=n;m=l;o=2;k=0;break}case 21:{g=n;m=l;o=10;k=0;break}case 5:{g=n;m=l;o=9;k=0;break}case 22:{g=n;m=l;o=7;k=0;break}case 9:{g=n;m=l;o=5;k=0;break}case 1:{g=n;m=l;o=16;k=0;break}case 4:{g=n;m=l;o=14;k=0;break}case 7:{g=n;m=l;o=13;k=0;break}case 255:{k=g+5|0;if(k>>>0>A>>>0){j=160;X=259;break a}h=d[g+2>>0]<<16|d[n>>0]<<24|d[g+3>>0]<<8|d[g+4>>0];n=l<<24>>24!=0;if((h+32e3|0)>>>0>64e3){g=k;m=n?l:1;o=0;k=h;break b}else{g=k;m=l;o=0;k=n?h:h<<16;break b}}case 12:{if(n>>>0>A>>>0){j=160;X=259;break a}g=g+2|0;switch(d[n>>0]|0){case 7:{m=l;o=4;k=0;break b}case 6:{m=l;o=3;k=0;break b}case 17:{m=l;o=23;k=0;break b}case 0:{m=l;o=15;k=0;break b}case 16:{m=l;o=21;k=0;break b}case 12:{m=l;o=20;k=0;break b}case 2:{m=l;o=17;k=0;break b}case 33:{m=l;o=25;k=0;break b}case 1:{m=l;o=19;k=0;break b}default:{j=160;X=259;break a}}}case 30:{g=n;m=l;o=12;k=0;break}case 6:{g=n;m=l;o=6;k=0;break}case 14:{g=n;m=l;o=1;k=0;break}case 31:{g=n;m=l;o=8;k=0;break}case 10:{g=n;m=l;o=22;k=0;break}case 3:{g=n;m=l;o=18;k=0;break}case 15:{g=n;m=l;o=26;k=0;break}case 11:{g=n;m=l;o=24;k=0;break}case 8:{g=n;m=l;o=11;k=0;break}default:{if((h&255)<=31){j=160;X=259;break a}do if((h&255)>=247){g=g+2|0;if(g>>>0>A>>>0){j=160;X=259;break a}k=k<<8;if((h&255)<251){k=(d[n>>0]|k+-63232)+108|0;break}else{k=-108-(d[n>>0]|k+-64256)|0;break}}else{g=n;k=k+-139|0}while(0);m=l;o=0;k=l<<24>>24==0?k<<16:k}}while(0);if((r|0)>0?!((o|0)==23|(o|0)==0|(o|0)==24|(o|0)==22):0)h=0;else h=r;x=(o|0)==0;l=m<<24>>24==0|x|(o|0)==20?m:0;if(!x){v=l;l=o;k=h;break}if((p-(q+112)|0)>1020){j=160;X=259;break a}c[p>>2]=k;c[s>>2]=p+4;if(g>>>0>=A>>>0){j=0;X=259;break a}else r=h}if((l|0)!=21){w=k;break}k=q+112|0;l=k;if((p-l|0)<8){j=161;X=259;break a}x=p+-8|0;h=c[p+-4>>2]>>16;m=c[x>>2]>>16;if((m|0)>(x-l>>2|0)){j=161;X=259;break a}n=-2-m|0;s=p+(n<<2)|0;do switch(h|0){case 0:{if((m|0)!=3){j=160;X=259;break a}if(!(c[q+1400>>2]|0)){j=160;X=259;break a}if((c[q+1404>>2]|0)!=7){j=160;X=259;break a}c[s>>2]=y;c[p+(n+1<<2)>>2]=z;l=2;p=s;k=0;break}case 27:{if((m|0)!=4){j=160;X=259;break a}if((c[p+(n+2<<2)>>2]|0)>(c[p+(n+3<<2)>>2]|0)){c[s>>2]=c[p+(n+1<<2)>>2];l=1;p=s;k=0}else{l=1;p=s;k=0}break}case 20:{if((m|0)!=2){j=160;X=259;break a}c[s>>2]=(c[s>>2]|0)+(c[p+(n+1<<2)>>2]|0);l=1;p=s;k=0;break}case 28:{if(m){j=160;X=259;break a}l=c[W>>2]|0;c[s>>2]=((l|0)>32767&1)+l;l=c[W>>2]|0;l=qg(l,65536-l|0)|0;c[W>>2]=(l|0)==0?l+10355|0:l;l=1;p=s;k=0;break}case 18:case 17:case 16:case 15:case 14:{r=c[q+1464>>2]|0;if(!r){j=160;X=259;break a}l=h+-13+((h|0)==18&1)|0;k=c[r>>2]|0;if((m|0)!=(da(k,l)|0)){j=160;X=259;break a}if(!l){l=0;p=s;k=0}else{q=r+136|0;h=p+(l+n<<2)|0;m=0;o=s;while(1){p=c[o>>2]|0;if(k>>>0>1){k=h;n=1;while(1){h=k+4|0;p=(qg(c[k>>2]|0,c[(c[q>>2]|0)+(n<<2)>>2]|0)|0)+p|0;n=n+1|0;k=c[r>>2]|0;if(n>>>0>=k>>>0)break;else k=h}}c[o>>2]=p;m=m+1|0;if((m|0)==(l|0)){p=s;k=0;break}else o=o+4|0}}break}case 13:case 12:{l=0;p=k;k=0;break}case 2:{if(m){j=160;X=259;break a}if(!(c[q+1400>>2]|0)){j=160;X=259;break a}x=q+1404|0;p=c[x>>2]|0;c[x>>2]=p+1;if((p+-1|0)>>>0<6){if((p|0)==3)l=1;else l=(p|0)==6&1;p=c[Z>>2]|0;if(!(a[C>>0]|0))p=p+2|0;else{u=c[p+4>>2]|0;x=p+2|0;w=b[x>>1]|0;p=(c[p+8>>2]|0)+w|0;c[u+(w<<3)>>2]=(lg(y)|0)>>16;c[u+(w<<3)+4>>2]=(lg(z)|0)>>16;a[p>>0]=l<<24>>24!=0?1:2;p=x}b[p>>1]=(b[p>>1]|0)+1<<16>>16;l=0;p=s;k=0}else{l=0;p=s;k=0}break}case 3:{if((m|0)!=1){j=160;X=259;break a}if(_){Cd[c[D>>2]&255](c[ea>>2]|0,b[(c[Z>>2]|0)+2>>1]|0);l=1;p=s;k=0}else{l=1;p=s;k=0}break}case 19:{k=c[q+1464>>2]|0;if((m|0)!=1|(k|0)==0){j=160;X=259;break a}p=c[s>>2]>>16;if((p|0)<0){j=160;X=259;break a}l=c[k>>2]|0;if((l+p|0)>>>0>(c[q+1492>>2]|0)>>>0){j=160;X=259;break a}qfa((c[q+1488>>2]|0)+(p<<2)|0,c[k+136>>2]|0,l<<2|0)|0;l=0;p=s;k=0;break}case 23:{if((m|0)!=2){j=160;X=259;break a}p=c[p+(n+1<<2)>>2]|0;if(!p){j=160;X=259;break a}c[s>>2]=rg(c[s>>2]|0,p)|0;l=1;p=s;k=0;break}case 24:{if((m|0)!=2|(c[q+1464>>2]|0)==0){j=160;X=259;break a}p=c[p+(n+1<<2)>>2]>>16;if((p|0)<0){j=160;X=259;break a}if(p>>>0>=(c[q+1492>>2]|0)>>>0){j=160;X=259;break a}c[(c[q+1488>>2]|0)+(p<<2)>>2]=c[s>>2];l=0;p=s;k=0;break}case 21:{if((m|0)!=2){j=160;X=259;break a}c[s>>2]=(c[s>>2]|0)-(c[p+(n+1<<2)>>2]|0);l=1;p=s;k=0;break}case 25:{if((m|0)!=1|(c[q+1464>>2]|0)==0){j=160;X=259;break a}p=c[s>>2]>>16;if((p|0)<0){j=160;X=259;break a}if(p>>>0>=(c[q+1492>>2]|0)>>>0){j=160;X=259;break a}c[s>>2]=c[(c[q+1488>>2]|0)+(p<<2)>>2];l=1;p=s;k=0;break}case 1:{if(m){j=160;X=259;break a}c[q+1400>>2]=1;c[q+1404>>2]=0;p=sn(f,y,z)|0;if(p){j=p;X=259;break a}p=c[Y>>2]|0;if(((b[p+22>>1]|0)+6+(b[p+58>>1]|0)|0)>>>0>(c[p+4>>2]|0)>>>0?(O=Eg(p,6,0)|0,(O|0)!=0):0){j=O;X=259;break a}else{l=0;p=s;k=0}break}case 22:{if((m|0)!=2){j=160;X=259;break a}c[s>>2]=qg(c[s>>2]|0,c[p+(n+1<<2)>>2]|0)|0;l=1;p=s;k=0;break}default:if((m|h|0)>-1){l=0;p=s;k=m}else{j=160;X=259;break a}}while(0);c[(c[ca>>2]|0)+1136>>2]=p+(l<<2);if(g>>>0>>0){u=l;l=v;p=k}else{j=0;X=259;break a}}k=c[20728+(l<<2)>>2]|0;if((p-(q+112)>>2|0)<(k|0)){j=161;X=259;break}x=p+(0-k<<2)|0;c:do switch(l|0){case 23:{if((u|0)>0){m=u+-1|0;o=v;s=A;r=x;p=w;l=y;h=z;k=B;break c}if(!w){j=160;X=259;break a}m=u;o=v;s=A;r=p+(1-k<<2)|0;p=w+-1|0;l=y;h=z;k=B;break}case 17:{if(_){Ud[c[K>>2]&255](c[ea>>2]|0,1,x);m=u;o=v;s=A;r=x;p=w;l=y;h=z;k=B}else{m=u;o=v;s=A;r=x;p=w;l=y;h=z;k=B}break}case 24:{if(B>>>0<=(q+1140|0)>>>0){j=160;X=259;break a}k=B+-12|0;g=c[k>>2]|0;s=c[B+-4>>2]|0;c[q+1344>>2]=k;m=u;o=v;r=x;p=w;l=y;h=z;break}case 16:{if(_){Ud[c[J>>2]&255](c[ea>>2]|0,1,x);m=u;o=v;s=A;r=x;p=w;l=y;h=z;k=B}else{m=u;o=v;s=A;r=x;p=w;l=y;h=z;k=B}break}case 26:case 15:{m=u;o=v;s=A;r=x;p=w;l=y;h=z;k=B;break}case 19:{if(_){c[x>>2]=(c[x>>2]|0)+t;m=p+(2-k<<2)|0;c[m>>2]=(c[m>>2]|0)+t;m=p+(4-k<<2)|0;c[m>>2]=(c[m>>2]|0)+t;Ud[c[K>>2]&255](c[ea>>2]|0,0,x);m=u;o=v;s=A;r=x;p=w;l=y;h=z;k=B}else{m=u;o=v;s=A;r=x;p=w;l=y;h=z;k=B}break}case 25:{l=c[x>>2]|0;h=c[p+(1-k<<2)>>2]|0;c[q+1400>>2]=0;m=u;o=v;s=A;r=x;p=w;k=B;break}case 18:{if(_){c[x>>2]=(c[x>>2]|0)+t;Ud[c[J>>2]&255](c[ea>>2]|0,0,x);m=u;o=v;s=A;r=x;p=w;l=y;h=z;k=B}else{m=u;o=v;s=A;r=x;p=w;l=y;h=z;k=B}break}case 1:{X=116;break a}case 3:{j=x;X=133;break a}case 6:{p=sn(f,y,z)|0;if(p){j=p;X=259;break a}l=(c[x>>2]|0)+y|0;h=z;X=194;break}case 7:{l=(c[x>>2]|0)+y|0;if(!(c[q+1400>>2]|0)){if(!(c[P>>2]|0)){j=160;X=259;break a}c[P>>2]=2;m=u;o=v;s=A;r=x;p=w;h=z;k=B}else{m=u;o=v;s=A;r=x;p=w;h=z;k=B}break}case 5:{do if((c[P>>2]&-2|0)==2?(Q=c[Z>>2]|0,(Q|0)!=0):0){h=b[Q>>1]|0;if(h<<16>>16<2)m=0;else m=(b[(c[Q+12>>2]|0)+((h<<16>>16)+-2<<1)>>1]|0)+1|0;n=Q+2|0;p=b[n>>1]|0;if(((p<<16>>16>1?(R=c[Q+4>>2]|0,N=(p<<16>>16)+-1|0,S=(c[Q+8>>2]|0)+N|0,(c[R+(m<<3)>>2]|0)==(c[R+(N<<3)>>2]|0)):0)?(c[R+(m<<3)+4>>2]|0)==(c[R+(N<<3)+4>>2]|0):0)?(a[S>>0]|0)==1:0){p=p+-1<<16>>16;b[n>>1]=p}l=h<<16>>16;if(h<<16>>16>0){k=(p<<16>>16)+-1|0;if((m|0)==(k|0)){b[Q>>1]=h+-1<<16>>16;b[n>>1]=p+-1<<16>>16;break}else{b[(c[Q+12>>2]|0)+(l+-1<<1)>>1]=k;break}}}while(0);c[P>>2]=1;m=u;o=v;s=A;r=x;p=w;l=y;h=z;k=B;break}case 4:{c[P>>2]=1;c[E>>2]=(c[E>>2]|0)+(c[x>>2]|0);h=p+(1-k<<2)|0;c[I>>2]=(c[I>>2]|0)+(c[h>>2]|0);c[F>>2]=c[p+(2-k<<2)>>2];c[G>>2]=c[p+(3-k<<2)>>2];if(!(a[H>>0]|0)){m=u;o=v;s=A;r=x;p=w;l=(c[x>>2]|0)+(c[L>>2]|0)|0;h=(c[h>>2]|0)+(c[M>>2]|0)|0;k=B}else{j=0;X=259;break a}break}case 2:{c[P>>2]=1;c[E>>2]=(c[E>>2]|0)+(c[x>>2]|0);c[F>>2]=c[p+(1-k<<2)>>2];c[G>>2]=0;l=(c[x>>2]|0)+(c[L>>2]|0)|0;if(!(a[H>>0]|0)){m=u;o=v;s=A;t=l;r=x;p=w;h=c[M>>2]|0;k=B}else{j=0;X=259;break a}break}case 10:{l=(c[x>>2]|0)+y|0;k=(c[p+(1-k<<2)>>2]|0)+z|0;if(!(c[q+1400>>2]|0)){if(!(c[P>>2]|0)){j=160;X=259;break a}c[P>>2]=2;m=u;o=v;s=A;r=x;p=w;h=k;k=B}else{m=u;o=v;s=A;r=x;p=w;h=k;k=B}break}case 11:{l=sn(f,y,z)|0;if(l){j=l;X=259;break a}l=c[Y>>2]|0;if(((b[l+22>>1]|0)+3+(b[l+58>>1]|0)|0)>>>0>(c[l+4>>2]|0)>>>0?(V=Eg(l,3,0)|0,(V|0)!=0):0){j=V;X=259;break a}n=(c[x>>2]|0)+y|0;m=(c[p+(1-k<<2)>>2]|0)+z|0;l=c[Z>>2]|0;if(!(a[C>>0]|0)){h=l+2|0;o=1}else{y=c[l+4>>2]|0;h=l+2|0;z=b[h>>1]|0;o=(c[l+8>>2]|0)+z|0;c[y+(z<<3)>>2]=(lg(n)|0)>>16;c[y+(z<<3)+4>>2]=(lg(m)|0)>>16;a[o>>0]=2;o=(a[C>>0]|0)==0;l=c[Z>>2]|0}b[h>>1]=(b[h>>1]|0)+1<<16>>16;q=(c[p+(2-k<<2)>>2]|0)+n|0;m=(c[p+(3-k<<2)>>2]|0)+m|0;if(o){h=l+2|0;n=1}else{y=c[l+4>>2]|0;h=l+2|0;z=b[h>>1]|0;n=(c[l+8>>2]|0)+z|0;c[y+(z<<3)>>2]=(lg(q)|0)>>16;c[y+(z<<3)+4>>2]=(lg(m)|0)>>16;a[n>>0]=2;n=(a[C>>0]|0)==0;l=c[Z>>2]|0}b[h>>1]=(b[h>>1]|0)+1<<16>>16;q=(c[p+(4-k<<2)>>2]|0)+q|0;h=(c[p+(5-k<<2)>>2]|0)+m|0;if(n)p=l+2|0;else{s=c[l+4>>2]|0;p=l+2|0;y=b[p>>1]|0;z=(c[l+8>>2]|0)+y|0;c[s+(y<<3)>>2]=(lg(q)|0)>>16;c[s+(y<<3)+4>>2]=(lg(h)|0)>>16;a[z>>0]=1}b[p>>1]=(b[p>>1]|0)+1<<16>>16;m=u;o=v;s=A;r=x;p=w;l=q;k=B;break}case 13:{p=sn(f,y,z)|0;if(p){j=p;X=259;break a}l=y;h=(c[x>>2]|0)+z|0;X=194;break}case 14:{k=(c[x>>2]|0)+z|0;if(!(c[q+1400>>2]|0)){if(!(c[P>>2]|0)){j=160;X=259;break a}c[P>>2]=2;m=u;o=v;s=A;r=x;p=w;l=y;h=k;k=B}else{m=u;o=v;s=A;r=x;p=w;l=y;h=k;k=B}break}case 9:{l=sn(f,y,z)|0;if(l){j=l;X=259;break a}l=(c[x>>2]|0)+y|0;h=(c[p+(1-k<<2)>>2]|0)+z|0;X=194;break}case 8:{l=sn(f,y,z)|0;if(l){j=l;X=259;break a}l=c[Y>>2]|0;if(((b[l+22>>1]|0)+3+(b[l+58>>1]|0)|0)>>>0>(c[l+4>>2]|0)>>>0?(T=Eg(l,3,0)|0,(T|0)!=0):0){j=T;X=259;break a}n=(c[x>>2]|0)+y|0;l=c[Z>>2]|0;if(!(a[C>>0]|0)){h=l+2|0;o=1}else{s=c[l+4>>2]|0;h=l+2|0;y=b[h>>1]|0;o=(c[l+8>>2]|0)+y|0;c[s+(y<<3)>>2]=(lg(n)|0)>>16;c[s+(y<<3)+4>>2]=(lg(z)|0)>>16;a[o>>0]=2;o=(a[C>>0]|0)==0;l=c[Z>>2]|0}b[h>>1]=(b[h>>1]|0)+1<<16>>16;q=(c[p+(1-k<<2)>>2]|0)+n|0;m=(c[p+(2-k<<2)>>2]|0)+z|0;if(o){h=l+2|0;n=1}else{y=c[l+4>>2]|0;h=l+2|0;z=b[h>>1]|0;n=(c[l+8>>2]|0)+z|0;c[y+(z<<3)>>2]=(lg(q)|0)>>16;c[y+(z<<3)+4>>2]=(lg(m)|0)>>16;a[n>>0]=2;n=(a[C>>0]|0)==0;l=c[Z>>2]|0}b[h>>1]=(b[h>>1]|0)+1<<16>>16;h=(c[p+(3-k<<2)>>2]|0)+m|0;if(n)p=l+2|0;else{s=c[l+4>>2]|0;p=l+2|0;y=b[p>>1]|0;z=(c[l+8>>2]|0)+y|0;c[s+(y<<3)>>2]=(lg(q)|0)>>16;c[s+(y<<3)+4>>2]=(lg(h)|0)>>16;a[z>>0]=1}b[p>>1]=(b[p>>1]|0)+1<<16>>16;m=u;o=v;s=A;r=x;p=w;l=q;k=B;break}case 12:{l=sn(f,y,z)|0;if(l){j=l;X=259;break a}l=c[Y>>2]|0;if(((b[l+22>>1]|0)+3+(b[l+58>>1]|0)|0)>>>0>(c[l+4>>2]|0)>>>0?(j=Eg(l,3,0)|0,(j|0)!=0):0){X=259;break a}n=(c[x>>2]|0)+z|0;l=c[Z>>2]|0;if(!(a[C>>0]|0)){h=l+2|0;m=1}else{s=c[l+4>>2]|0;h=l+2|0;z=b[h>>1]|0;m=(c[l+8>>2]|0)+z|0;c[s+(z<<3)>>2]=(lg(y)|0)>>16;c[s+(z<<3)+4>>2]=(lg(n)|0)>>16;a[m>>0]=2;m=(a[C>>0]|0)==0;l=c[Z>>2]|0}b[h>>1]=(b[h>>1]|0)+1<<16>>16;o=(c[p+(1-k<<2)>>2]|0)+y|0;q=(c[p+(2-k<<2)>>2]|0)+n|0;if(m){h=l+2|0;n=1}else{y=c[l+4>>2]|0;h=l+2|0;z=b[h>>1]|0;n=(c[l+8>>2]|0)+z|0;c[y+(z<<3)>>2]=(lg(o)|0)>>16;c[y+(z<<3)+4>>2]=(lg(q)|0)>>16;a[n>>0]=2;n=(a[C>>0]|0)==0;l=c[Z>>2]|0}b[h>>1]=(b[h>>1]|0)+1<<16>>16;k=(c[p+(3-k<<2)>>2]|0)+o|0;if(n)p=l+2|0;else{s=c[l+4>>2]|0;p=l+2|0;y=b[p>>1]|0;z=(c[l+8>>2]|0)+y|0;c[s+(y<<3)>>2]=(lg(k)|0)>>16;c[s+(y<<3)+4>>2]=(lg(q)|0)>>16;a[z>>0]=1}b[p>>1]=(b[p>>1]|0)+1<<16>>16;m=u;o=v;s=A;r=x;p=w;l=k;h=q;k=B;break}case 20:{r=p+(1-k<<2)|0;c[x>>2]=rg(c[x>>2]|0,c[r>>2]|0)|0;m=u;o=0;s=A;p=w;l=y;h=z;k=B;break}case 22:{h=c[x>>2]>>16;if((h|0)<0){j=160;X=259;break a}if((h|0)>=(c[q+1364>>2]|0)){j=160;X=259;break a}if((B-(q+1140)|0)>180){j=160;X=259;break a}c[B>>2]=g;n=B+12|0;g=c[(c[(c[ca>>2]|0)+1368>>2]|0)+(h<<2)>>2]|0;p=B+16|0;c[p>>2]=g;l=c[ca>>2]|0;k=c[l+1372>>2]|0;if(!k){A=c[l+1360>>2]|0;g=g+((A|0)<0?0:A)|0;c[p>>2]=g;p=c[(c[(c[ca>>2]|0)+1368>>2]|0)+(h+1<<2)>>2]|0}else p=g+(c[k+(h<<2)>>2]|0)|0;c[B+20>>2]=p;c[n>>2]=g;if(!g){j=160;X=259;break a}c[(c[ca>>2]|0)+1344>>2]=n;m=u;o=v;s=p;r=x;p=w;l=y;h=z;k=n;break}default:{j=160;X=259;break a}}while(0);if((X|0)==194){X=0;p=c[Y>>2]|0;if(((b[p+22>>1]|0)+1+(b[p+58>>1]|0)|0)>>>0>(c[p+4>>2]|0)>>>0?(U=Eg(p,1,0)|0,(U|0)!=0):0){j=U;X=259;break}p=c[Z>>2]|0;if(!(a[C>>0]|0))p=p+2|0;else{s=c[p+4>>2]|0;z=p+2|0;y=b[z>>1]|0;p=(c[p+8>>2]|0)+y|0;c[s+(y<<3)>>2]=(lg(l)|0)>>16;c[s+(y<<3)+4>>2]=(lg(h)|0)>>16;a[p>>0]=1;p=z}b[p>>1]=(b[p>>1]|0)+1<<16>>16;m=u;o=v;s=A;r=x;p=w;k=B}c[(c[ca>>2]|0)+1136>>2]=r;if(g>>>0>>0){A=s;y=l;z=h;B=k}else{j=0;X=259;break}}if((X|0)==116){p=c[Z>>2]|0;do if(p){g=b[p>>1]|0;if(g<<16>>16<2)m=0;else m=(b[(c[p+12>>2]|0)+((g<<16>>16)+-2<<1)>>1]|0)+1|0;n=p+2|0;l=b[n>>1]|0;if(((l<<16>>16>1?(aa=c[p+4>>2]|0,$=(l<<16>>16)+-1|0,ba=(c[p+8>>2]|0)+$|0,(c[aa+(m<<3)>>2]|0)==(c[aa+($<<3)>>2]|0)):0)?(c[aa+(m<<3)+4>>2]|0)==(c[aa+($<<3)+4>>2]|0):0)?(a[ba>>0]|0)==1:0){l=l+-1<<16>>16;b[n>>1]=l}j=g<<16>>16;if(g<<16>>16>0){k=(l<<16>>16)+-1|0;if((m|0)==(k|0)){b[p>>1]=g+-1<<16>>16;b[n>>1]=l+-1<<16>>16;break}else{b[(c[p+12>>2]|0)+(j+-1<<1)>>1]=k;break}}}while(0);do if(_)if(!(Pd[c[ea+8>>2]&511](c[ea>>2]|0,b[p+2>>1]|0)|0)){Xd[c[ea+24>>2]&255](c[ea>>2]|0,c[Z>>2]|0,c[f+76>>2]|0,c[(c[ca>>2]|0)+1468>>2]|0)|0;break}else{ba=160;i=ja;return ba|0}while(0);Hg(c[Y>>2]|0);ba=0;i=ja;return ba|0}else if((X|0)==133){v=c[j>>2]|0;w=c[p+(2-k<<2)>>2]|0;l=c[p+(3-k<<2)>>2]>>16;r=c[p+(4-k<<2)>>2]>>16;t=q+1496|0;if(a[t>>0]|0){ba=160;i=ja;return ba|0}if(a[q+70>>0]|0){ba=160;i=ja;return ba|0}u=q+32|0;s=(c[u>>2]|0)+(c[p+(1-k<<2)>>2]|0)|0;g=q+1356|0;j=(c[(c[(c[q+4>>2]|0)+128>>2]|0)+48>>2]|0)==0;d:do if(!(c[g>>2]|0)){if(j){ba=160;i=ja;return ba|0}}else if(j){p=q+1348|0;j=c[p>>2]|0;e:do if(l>>>0<=255?(fa=Ed[c[j+20>>2]&511](e[(c[j+24>>2]|0)+(l<<1)>>1]|0)|0,ga=c[q+1352>>2]|0,(ga|0)!=0):0){j=c[g>>2]|0;l=0;while(1){k=c[j+(l<<2)>>2]|0;if(((k|0)!=0?(a[k>>0]|0)==(a[fa>>0]|0):0)?(gfa(k,fa)|0)==0:0)break e;l=l+1|0;if(l>>>0>=ga>>>0){l=-1;break}}}else l=-1;while(0);j=c[p>>2]|0;if(r>>>0<=255?(ha=Ed[c[j+20>>2]&511](e[(c[j+24>>2]|0)+(r<<1)>>1]|0)|0,ia=c[q+1352>>2]|0,(ia|0)!=0):0){j=c[g>>2]|0;g=0;while(1){k=c[j+(g<<2)>>2]|0;if(((k|0)!=0?(a[k>>0]|0)==(a[ha>>0]|0):0)?(gfa(k,ha)|0)==0:0){r=g;break d}g=g+1|0;if(g>>>0>=ia>>>0){r=-1;break}}}else r=-1}while(0);if((l|r|0)<0){ba=160;i=ja;return ba|0}if(a[q+69>>0]|0){j=c[q+8>>2]|0;k=c[c[j+156>>2]>>2]|0;g=Fg(k,2)|0;if(g){ba=g;i=ja;return ba|0}ba=c[k+88>>2]|0;c[ba>>2]=l;b[ba+4>>1]=514;c[ba+8>>2]=0;c[ba+12>>2]=0;c[ba+32>>2]=r;b[ba+36>>1]=2;c[ba+40>>2]=(lg(s-v|0)|0)>>16;c[ba+44>>2]=(lg(w)|0)>>16;c[j+128>>2]=2;c[j+132>>2]=c[k+52>>2];c[j+72>>2]=1668246896;c[k+84>>2]=2;ba=0;i=ja;return ba|0}Gg(c[q+12>>2]|0);a[t>>0]=1;h=q+1472|0;j=Pd[c[h>>2]&511](q,l)|0;a[t>>0]=0;if(j){ba=j;i=ja;return ba|0}g=u;k=c[g>>2]|0;g=c[g+4>>2]|0;m=q+40|0;o=m;n=c[o>>2]|0;o=c[o+4>>2]|0;c[u>>2]=0;c[q+36>>2]=0;p=q+24|0;c[p>>2]=s-v;l=q+28|0;c[l>>2]=w;a[t>>0]=1;j=Pd[c[h>>2]&511](q,r)|0;a[t>>0]=0;if(j){ba=j;i=ja;return ba|0}ba=u;c[ba>>2]=k;c[ba+4>>2]=g;ba=m;c[ba>>2]=n;c[ba+4>>2]=o;c[p>>2]=0;c[l>>2]=0;ba=0;i=ja;return ba|0}else if((X|0)==259){i=ja;return j|0}return 0}function xn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=yg(b,16,g)|0;g=c[g>>2]|0;if(g){a=g;i=h;return a|0}c[f+4>>2]=d;c[f>>2]=d;c[f+8>>2]=e;c[f+12>>2]=2;c[a>>2]=b;c[a+4>>2]=f;c[a+8>>2]=0;c[a+12>>2]=0;a=0;i=h;return a|0}function yn(a){a=a|0;var b=0;b=a+4|0;Ag(c[a>>2]|0,c[b>>2]|0);c[b>>2]=0;return}function zn(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0;lb=i;i=i+160|0;ua=lb+144|0;ta=lb+136|0;kb=lb+128|0;eb=lb+120|0;ib=lb+80|0;jb=lb+40|0;db=lb+32|0;hb=lb;sa=lb+48|0;Ra=c[b>>2]|0;Sa=b+8|0;Ta=c[Sa>>2]|0;if(!Ta){b=6;i=lb;return b|0}gb=b+4|0;C=c[gb>>2]|0;y=C+12|0;g=c[y>>2]|0;a:do if((g|0)>1){f=C+8|0;j=f;m=c[C>>2]|0;f=c[f>>2]|0}else{k=c[C>>2]|0;j=C+8|0;f=c[j>>2]|0;b:do if((g|0)>0)m=k;else{c:do if(k>>>0>>0){d:while(1){g=k+1|0;c[C>>2]=g;switch(d[k>>0]|0){case 59:{m=g;va=9;break d}case 26:{o=g;break c}case 9:case 32:break;case 10:case 13:{l=g;va=8;break d}default:{m=g;break b}}if(g>>>0>>0)k=g;else{o=g;break c}}if((va|0)==8){c[y>>2]=2;m=l;break a}else if((va|0)==9){c[y>>2]=1;break b}}else o=k;while(0);c[y>>2]=3;m=o;break a}while(0);while(1){if(m>>>0>=f>>>0){g=3;break}g=m+1|0;c[C>>2]=g;m=a[m>>0]|0;va=m&255;if((va|0)==10|(va|0)==13){m=g;g=2;break}if(m<<24>>24==26){m=g;g=3;break}else m=g}c[y>>2]=g;j=C+8|0}while(0);c[y>>2]=0;e:do if(m>>>0>>0){f:while(1){g:while(1){g=m;m=m+1|0;c[C>>2]=m;switch(d[g>>0]|0){case 9:case 32:break;case 59:{va=22;break f}case 26:break e;case 10:case 13:{t=m;va=21;break g}default:{q=g;s=m;va=19;break g}}if(m>>>0>=f>>>0)break e}if((va|0)==19){va=0;g=s;m=q;h:while(1){if(g>>>0>=f>>>0){z=g;va=28;break}m=m+2|0;c[C>>2]=m;switch(d[g>>0]|0){case 9:case 32:{x=0;A=m;break h}case 26:{z=m;va=28;break h}case 10:case 13:{u=m;va=26;break h}case 59:{v=m;va=27;break h}default:{I=g;g=m;m=I}}}if((va|0)==26){c[y>>2]=2;x=2;A=u}else if((va|0)==27){c[y>>2]=1;x=1;A=v}else if((va|0)==28){c[y>>2]=3;x=3;A=z}if(q){r=q;w=A;B=x;va=32;break}if((x|0)==2)p=A;else{wa=2;va=275;break}}else if((va|0)==21){c[y>>2]=2;p=t}c[y>>2]=0;f=c[j>>2]|0;if(p>>>0>=f>>>0)break e;else m=p}if((va|0)==22){c[y>>2]=1;b=2;i=lb;return b|0}else if((va|0)==32){if((w+~r|0)!=16){b=2;i=lb;return b|0}if(hfa(r,19576,16)|0){b=2;i=lb;return b|0}G=ta+4|0;r=sa+4|0;s=sa+8|0;t=sa+16|0;u=sa+24|0;v=Ta+4|0;w=sa+12|0;x=Ta+8|0;y=sa+20|0;z=Ta+12|0;A=sa+28|0;E=Ta+16|0;F=Ta+20|0;H=Ta+24|0;I=ua+4|0;f=B;p=160;o=C;i:while(1){l=o+12|0;j:do if((f|0)>1){f=o+8|0;k=f;m=c[o>>2]|0;f=c[f>>2]|0}else{m=c[o>>2]|0;g=o+8|0;j=c[g>>2]|0;k:do if((f|0)<=0){l:do if(m>>>0>>0){f=m;m:while(1){m=f+1|0;c[o>>2]=m;switch(d[f>>0]|0){case 26:{ea=m;break l}case 10:case 13:{J=m;va=41;break m}case 9:case 32:break;case 59:{K=m;va=42;break m}default:break k}if(m>>>0>>0)f=m;else{ea=m;break l}}if((va|0)==41){c[l>>2]=2;k=g;m=J;f=j;break j}else if((va|0)==42){c[l>>2]=1;m=K;break k}}else ea=m;while(0);c[l>>2]=3;k=g;m=ea;f=j;break j}while(0);while(1){if(m>>>0>=j>>>0){f=3;break}f=m+1|0;c[o>>2]=f;m=a[m>>0]|0;va=m&255;if((va|0)==10|(va|0)==13){m=f;f=2;break}if(m<<24>>24==26){m=f;f=3;break}else m=f}c[l>>2]=f;k=o+8|0;f=j}while(0);c[l>>2]=0;if(m>>>0>=f>>>0){na=l;qa=p;va=56;break}while(1){n:while(1){g=m;m=m+1|0;c[o>>2]=m;switch(d[g>>0]|0){case 9:case 32:break;case 10:case 13:{N=m;va=54;break n}case 26:{na=l;qa=p;va=56;break i}case 59:{Y=l;pa=p;va=55;break i}default:{L=g;M=m;va=52;break n}}if(m>>>0>=f>>>0){na=l;qa=p;va=56;break i}}if((va|0)==52){va=0;g=M;m=L;o:while(1){if(g>>>0>=f>>>0){fa=g;va=61;break}m=m+2|0;c[o>>2]=m;switch(d[g>>0]|0){case 10:case 13:{O=m;va=59;break o}case 26:{fa=m;va=61;break o}case 59:{P=m;va=60;break o}case 9:case 32:{ca=0;ga=m;break o}default:{C=g;g=m;m=C}}}if((va|0)==59){va=0;c[l>>2]=2;ca=2;ga=O}else if((va|0)==60){va=0;c[l>>2]=1;ca=1;ga=P}else if((va|0)==61){va=0;c[l>>2]=3;ca=3;ga=fa}if(L){j=L;m=ga;l=ca;break}if((ca|0)==2)oa=ga;else{cb=p;break i}}else if((va|0)==54){c[l>>2]=2;oa=N}c[l>>2]=0;f=c[k>>2]|0;if(oa>>>0>=f>>>0){na=l;qa=p;va=56;break i}else m=oa}g=m+~j|0;k=a[j>>0]|0;m=0;p:while(1){f=c[19728+(m<<2)>>2]|0;q:do if((a[f>>0]|0)==k<<24>>24)while(1){if(!(hfa(f,j,g)|0)){ra=m;va=71;break p}m=m+1|0;if((m|0)>=74)break q;f=c[19728+(m<<2)>>2]|0;if((a[f>>0]|0)!=k<<24>>24){D=p;break p}}while(0);m=m+1|0;if((m|0)>=74){D=p;break}}r:do if((va|0)==71){va=0;switch(ra|0){case 40:{c[ta>>2]=3;if((Gs(b,ta,1)|0)!=1){cb=p;break i}D=c[G>>2]|0;if((D|0)==0|(D|0)==2){D=p;break r}else{cb=7;break i}}case 45:{c[ua>>2]=3;if((Gs(b,ua,1)|0)!=1){cb=p;break i}f=c[I>>2]|0;q=c[gb>>2]|0;o=q+12|0;m=c[o>>2]|0;p=q+8|0;if(f)while(1){f=f+-1|0;s:do if((m|0)>1){m=c[q>>2]|0;j=c[p>>2]|0}else{g=c[q>>2]|0;j=c[p>>2]|0;t:do if((m|0)<=0){u:do if(g>>>0>>0){v:while(1){m=g+1|0;c[q>>2]=m;switch(d[g>>0]|0){case 59:{R=m;va=93;break v}case 26:{ha=m;break u}case 9:case 32:break;case 10:case 13:{Q=m;va=92;break v}default:{g=m;break t}}if(m>>>0>>0)g=m;else{ha=m;break u}}if((va|0)==92){va=0;c[o>>2]=2;m=Q;break s}else if((va|0)==93){va=0;c[o>>2]=1;g=R;break t}}else ha=g;while(0);c[o>>2]=3;m=ha;break s}while(0);while(1){if(g>>>0>=j>>>0){m=g;g=3;break}m=g+1|0;c[q>>2]=m;g=a[g>>0]|0;D=g&255;if((D|0)==10|(D|0)==13){g=2;break}if(g<<24>>24==26){g=3;break}else g=m}c[o>>2]=g}while(0);c[o>>2]=0;if(m>>>0>=j>>>0){$=o;va=104;break i}w:while(1){g=m+1|0;c[q>>2]=g;switch(d[m>>0]|0){case 10:case 13:{c[o>>2]=2;m=g;break}case 9:case 32:if(g>>>0>>0){m=g;continue w}else{$=o;va=104;break i}case 59:{Z=o;va=103;break i}case 26:{$=o;va=104;break i}default:{k=m;x:while(1){if(g>>>0>=j>>>0){ia=g;va=109;break}k=k+2|0;c[q>>2]=k;switch(d[g>>0]|0){case 9:case 32:{ba=0;ja=k;break x}case 26:{ia=k;va=109;break x}case 10:case 13:{S=k;va=107;break x}case 59:{T=k;va=108;break x}default:{D=g;g=k;k=D}}}if((va|0)==107){va=0;c[o>>2]=2;ba=2;ja=S}else if((va|0)==108){va=0;c[o>>2]=1;ba=1;ja=T}else if((va|0)==109){va=0;c[o>>2]=3;ba=3;ja=ia}if(m){m=ba;break w}if((ba|0)==2)m=ja;else{wa=160;va=275;break i}}}c[o>>2]=0;if(m>>>0>=j>>>0){$=o;va=104;break i}}if(!f)break}y:while(1){z:do if((m|0)>1){m=c[q>>2]|0;k=c[p>>2]|0}else{f=c[q>>2]|0;k=c[p>>2]|0;A:do if((m|0)<=0){B:do if(f>>>0>>0){C:while(1){m=f+1|0;c[q>>2]=m;switch(d[f>>0]|0){case 9:case 32:break;case 26:{ka=m;break B}case 59:{V=m;va=120;break C}case 10:case 13:{U=m;va=119;break C}default:{f=m;break A}}if(m>>>0>>0)f=m;else{ka=m;break B}}if((va|0)==119){va=0;c[o>>2]=2;m=U;break z}else if((va|0)==120){va=0;c[o>>2]=1;f=V;break A}}else ka=f;while(0);c[o>>2]=3;m=ka;break z}while(0);while(1){if(f>>>0>=k>>>0){m=f;f=3;break}m=f+1|0;c[q>>2]=m;f=a[f>>0]|0;D=f&255;if((D|0)==10|(D|0)==13){f=2;break}if(f<<24>>24==26){f=3;break}else f=m}c[o>>2]=f}while(0);c[o>>2]=0;if(m>>>0>=k>>>0){aa=o;va=131;break i}D:while(1){f=m+1|0;c[q>>2]=f;switch(d[m>>0]|0){case 9:case 32:if(f>>>0>>0){m=f;continue D}else{aa=o;va=131;break i}case 10:case 13:{c[o>>2]=2;m=f;break}case 59:{_=o;va=130;break i}case 26:{aa=o;va=131;break i}default:{g=m;E:while(1){if(f>>>0>=k>>>0){la=f;va=136;break}g=g+2|0;c[q>>2]=g;switch(d[f>>0]|0){case 59:{X=g;va=135;break E}case 10:case 13:{W=g;va=134;break E}case 26:{la=g;va=136;break E}case 9:case 32:{da=0;ma=g;break E}default:{D=f;f=g;g=D}}}if((va|0)==134){va=0;c[o>>2]=2;da=2;ma=W}else if((va|0)==135){va=0;c[o>>2]=1;da=1;ma=X}else if((va|0)==136){va=0;c[o>>2]=3;da=3;ma=la}if(m){l=m;f=ma;m=da;break D}if((da|0)==2)m=ma;else{wa=160;va=275;break i}}}c[o>>2]=0;if(m>>>0>=k>>>0){aa=o;va=131;break i}}k=f+~l|0;j=a[l>>0]|0;f=0;F:while(1){g=c[19728+(f<<2)>>2]|0;G:do if((a[g>>0]|0)==j<<24>>24)while(1){if(!(hfa(g,l,k)|0))break F;f=f+1|0;if((f|0)>=74)break G;g=c[19728+(f<<2)>>2]|0;if((a[g>>0]|0)!=j<<24>>24)continue y}while(0);f=f+1|0;if((f|0)>=74)continue y}if((f|0)==17|(f|0)==20){D=0;break}}break}case 30:{c[sa>>2]=4;if((Gs(b,sa,1)|0)!=1){cb=p;break i}a[Ta>>0]=a[r>>0]|0;D=p;break r}case 26:{c[sa>>2]=2;c[s>>2]=2;c[t>>2]=2;c[u>>2]=2;if((Gs(b,sa,4)|0)!=4){cb=p;break i}c[v>>2]=c[r>>2];c[x>>2]=c[w>>2];c[z>>2]=c[y>>2];c[E>>2]=c[A>>2];D=p;break r}case 14:{c[sa>>2]=2;if((Gs(b,sa,1)|0)!=1){cb=p;break i}c[H>>2]=c[r>>2];D=p;break r}case 0:{c[sa>>2]=2;if((Gs(b,sa,1)|0)!=1){cb=p;break i}c[F>>2]=c[r>>2];D=p;break r}case 49:{h=l;n=o;va=147;break i}case 20:{wa=0;va=275;break i}default:{D=p;break r}}}while(0);o=c[gb>>2]|0;f=c[o+12>>2]|0;p=D}H:do if((va|0)==55){c[Y>>2]=1;cb=pa}else if((va|0)==56){c[na>>2]=3;cb=qa}else if((va|0)==103){c[Z>>2]=1;b=160;i=lb;return b|0}else if((va|0)==104){c[$>>2]=3;b=160;i=lb;return b|0}else if((va|0)==130){c[_>>2]=1;b=160;i=lb;return b|0}else if((va|0)==131){c[aa>>2]=3;b=160;i=lb;return b|0}else if((va|0)==147){r=kb+4|0;s=ib+8|0;t=ib+16|0;u=ib+24|0;v=ib+32|0;w=ib+4|0;x=ib+12|0;y=ib+20|0;z=ib+28|0;A=ib+36|0;B=jb+4|0;C=hb+8|0;D=hb+16|0;E=hb+24|0;F=hb+4|0;G=hb+12|0;H=hb+20|0;I=hb+28|0;I:while(1){m=n+12|0;J:do if((h|0)>1){f=c[n>>2]|0;k=c[n+8>>2]|0}else{f=c[n>>2]|0;k=c[n+8>>2]|0;K:do if((h|0)>0)g=f;else{L:do if(f>>>0>>0){M:while(1){g=f+1|0;c[n>>2]=g;switch(d[f>>0]|0){case 9:case 32:break;case 26:{Va=g;break L}case 10:case 13:{xa=g;va=154;break M}case 59:{ya=g;va=155;break M}default:break K}if(g>>>0>>0)f=g;else{Va=g;break L}}if((va|0)==154){va=0;c[m>>2]=2;f=xa;break J}else if((va|0)==155){va=0;c[m>>2]=1;g=ya;break K}}else Va=f;while(0);c[m>>2]=3;f=Va;break J}while(0);while(1){if(g>>>0>=k>>>0){f=g;h=3;break}f=g+1|0;c[n>>2]=f;g=a[g>>0]|0;ua=g&255;if((ua|0)==10|(ua|0)==13){h=2;break}if(g<<24>>24==26){h=3;break}else g=f}c[m>>2]=h}while(0);c[m>>2]=0;if(f>>>0>=k>>>0){Ua=m;va=166;break}N:while(1){g=f+1|0;c[n>>2]=g;switch(d[f>>0]|0){case 10:case 13:{c[m>>2]=2;f=g;break}case 9:case 32:if(g>>>0>>0){f=g;continue N}else{Ua=m;va=166;break I}case 59:{Ja=m;va=165;break I}case 26:{Ua=m;va=166;break I}default:{h=f;O:while(1){if(g>>>0>=k>>>0){Wa=g;va=171;break}h=h+2|0;c[n>>2]=h;switch(d[g>>0]|0){case 59:{Aa=h;va=170;break O}case 26:{Wa=h;va=171;break O}case 10:case 13:{za=h;va=169;break O}case 9:case 32:{Oa=0;Xa=h;break O}default:{ua=g;g=h;h=ua}}}if((va|0)==169){va=0;c[m>>2]=2;Oa=2;Xa=za}else if((va|0)==170){va=0;c[m>>2]=1;Oa=1;Xa=Aa}else if((va|0)==171){va=0;c[m>>2]=3;Oa=3;Xa=Wa}if(f){k=f;f=Xa;break N}if((Oa|0)==2)f=Xa;else{cb=160;break H}}}c[m>>2]=0;if(f>>>0>=k>>>0){Ua=m;va=166;break I}}g=f+~k|0;j=a[k>>0]|0;h=0;P:while(1){f=c[19728+(h<<2)>>2]|0;Q:do if((a[f>>0]|0)==j<<24>>24)while(1){if(!(hfa(f,k,g)|0)){fb=h;va=181;break P}h=h+1|0;if((h|0)>=74)break Q;f=c[19728+(h<<2)>>2]|0;if((a[f>>0]|0)!=j<<24>>24){e=n;break P}}while(0);h=h+1|0;if((h|0)>=74){e=n;break}}R:do if((va|0)==181){va=0;switch(fb|0){case 53:{e=c[Sa>>2]|0;q=e+32|0;c[kb>>2]=3;if((Gs(b,kb,1)|0)!=1){cb=160;break H}f=c[r>>2]|0;c[q>>2]=f;if(f){g=e+28|0;c[g>>2]=Dg(c[b>>2]|0,20,0,f,0,eb)|0;e=c[eb>>2]|0;if(e){cb=e;break H}}else g=e+28|0;f=0;S:while(1){e=c[gb>>2]|0;o=e+12|0;p=e+8|0;h=c[o>>2]|0;T:while(1){U:do if((h|0)>1){h=c[e>>2]|0;l=c[p>>2]|0}else{j=c[e>>2]|0;l=c[p>>2]|0;V:do if((h|0)<=0){W:do if(j>>>0>>0){X:while(1){h=j+1|0;c[e>>2]=h;switch(d[j>>0]|0){case 9:case 32:break;case 59:{Ga=h;va=196;break X}case 10:case 13:{Fa=h;va=195;break X}case 26:{Ya=h;break W}default:{j=h;break V}}if(h>>>0>>0)j=h;else{Ya=h;break W}}if((va|0)==195){va=0;c[o>>2]=2;h=Fa;break U}else if((va|0)==196){va=0;c[o>>2]=1;j=Ga;break V}}else Ya=j;while(0);c[o>>2]=3;h=Ya;break U}while(0);while(1){if(j>>>0>=l>>>0){h=j;j=3;break}h=j+1|0;c[e>>2]=h;j=a[j>>0]|0;ua=j&255;if((ua|0)==10|(ua|0)==13){j=2;break}if(j<<24>>24==26){j=3;break}else j=h}c[o>>2]=j}while(0);c[o>>2]=0;if(h>>>0>=l>>>0){Na=o;va=207;break I}Y:while(1){j=h+1|0;c[e>>2]=j;switch(d[h>>0]|0){case 59:{Ma=o;va=206;break I}case 9:case 32:if(j>>>0>>0){h=j;continue Y}else{Na=o;va=207;break I}case 10:case 13:{c[o>>2]=2;h=j;break}case 26:{Na=o;va=207;break I}default:{k=h;Z:while(1){if(j>>>0>=l>>>0){Za=j;va=212;break}k=k+2|0;c[e>>2]=k;switch(d[j>>0]|0){case 26:{Za=k;va=212;break Z}case 9:case 32:{Qa=0;_a=k;break Z}case 10:case 13:{Ha=k;va=210;break Z}case 59:{Ia=k;va=211;break Z}default:{ua=j;j=k;k=ua}}}if((va|0)==210){va=0;c[o>>2]=2;Qa=2;_a=Ha}else if((va|0)==211){va=0;c[o>>2]=1;Qa=1;_a=Ia}else if((va|0)==212){va=0;c[o>>2]=3;Qa=3;_a=Za}if(h){j=_a;n=Qa;break Y}if((Qa|0)==2)h=_a;else{cb=160;break H}}}c[o>>2]=0;if(h>>>0>=l>>>0){Na=o;va=207;break I}}l=j+~h|0;m=a[h>>0]|0;k=0;_:while(1){j=c[19728+(k<<2)>>2]|0;$:do if((a[j>>0]|0)==m<<24>>24)while(1){if(!(hfa(j,h,l)|0)){h=k;break _}k=k+1|0;if((k|0)>=74)break $;j=c[19728+(k<<2)>>2]|0;if((a[j>>0]|0)!=m<<24>>24){h=n;continue T}}while(0);k=k+1|0;if((k|0)>=74){h=n;continue T}}switch(h|0){case 56:break T;case 20:case 21:case 23:break S;case 75:{h=n;break}default:{cb=160;break H}}}if((f|0)>=(c[q>>2]|0)){cb=160;break H}e=c[g>>2]|0;c[ib>>2]=3;c[s>>2]=2;c[t>>2]=2;c[u>>2]=2;c[v>>2]=2;if((Gs(b,ib,5)|0)!=5){cb=160;break H}c[e+(f*20|0)>>2]=c[w>>2];c[e+(f*20|0)+4>>2]=c[x>>2];c[e+(f*20|0)+8>>2]=c[y>>2];c[e+(f*20|0)+12>>2]=c[z>>2];c[e+(f*20|0)+16>>2]=c[A>>2];f=f+1|0}c[q>>2]=f;break R}case 75:{e=n;break R}case 51:case 50:break;case 20:case 21:{wa=0;va=275;break I}default:{cb=160;break H}}e=c[Sa>>2]|0;q=e+40|0;c[jb>>2]=3;if((Gs(b,jb,1)|0)!=1){cb=160;break H}f=c[B>>2]|0;c[q>>2]=f;if(f){g=e+36|0;c[g>>2]=Dg(c[b>>2]|0,16,0,f,0,db)|0;e=c[db>>2]|0;if(e){cb=e;break H}}else g=e+36|0;e=0;aa:while(1){p=c[gb>>2]|0;n=p+12|0;o=p+8|0;h=c[n>>2]|0;ba:while(1){ca:do if((h|0)>1){h=c[p>>2]|0;j=c[o>>2]|0}else{f=c[p>>2]|0;j=c[o>>2]|0;da:do if((h|0)<=0){ea:do if(f>>>0>>0){fa:while(1){h=f+1|0;c[p>>2]=h;switch(d[f>>0]|0){case 10:case 13:{Ba=h;va=238;break fa}case 59:{Ca=h;va=239;break fa}case 9:case 32:break;case 26:{$a=h;break ea}default:{f=h;break da}}if(h>>>0>>0)f=h;else{$a=h;break ea}}if((va|0)==238){va=0;c[n>>2]=2;h=Ba;break ca}else if((va|0)==239){va=0;c[n>>2]=1;f=Ca;break da}}else $a=f;while(0);c[n>>2]=3;h=$a;break ca}while(0);while(1){if(f>>>0>=j>>>0){h=f;f=3;break}h=f+1|0;c[p>>2]=h;f=a[f>>0]|0;ua=f&255;if((ua|0)==10|(ua|0)==13){f=2;break}if(f<<24>>24==26){f=3;break}else f=h}c[n>>2]=f}while(0);c[n>>2]=0;if(h>>>0>=j>>>0){La=n;va=250;break I}ga:while(1){f=h+1|0;c[p>>2]=f;switch(d[h>>0]|0){case 9:case 32:if(f>>>0>>0){h=f;continue ga}else{La=n;va=250;break I}case 26:{La=n;va=250;break I}case 10:case 13:{c[n>>2]=2;h=f;break}case 59:{Ka=n;va=249;break I}default:{k=h;ha:while(1){if(f>>>0>=j>>>0){ab=f;va=255;break}k=k+2|0;c[p>>2]=k;switch(d[f>>0]|0){case 9:case 32:{Pa=0;bb=k;break ha}case 59:{Ea=k;va=254;break ha}case 10:case 13:{Da=k;va=253;break ha}case 26:{ab=k;va=255;break ha}default:{ua=f;f=k;k=ua}}}if((va|0)==253){va=0;c[n>>2]=2;Pa=2;bb=Da}else if((va|0)==254){va=0;c[n>>2]=1;Pa=1;bb=Ea}else if((va|0)==255){va=0;c[n>>2]=3;Pa=3;bb=ab}if(h){j=h;h=bb;l=Pa;break ga}if((Pa|0)==2)h=bb;else{cb=160;break H}}}c[n>>2]=0;if(h>>>0>=j>>>0){La=n;va=250;break I}}m=h+~j|0;k=a[j>>0]|0;h=0;ia:while(1){f=c[19728+(h<<2)>>2]|0;ja:do if((a[f>>0]|0)==k<<24>>24)while(1){if(!(hfa(f,j,m)|0))break ia;h=h+1|0;if((h|0)>=74)break ja;f=c[19728+(h<<2)>>2]|0;if((a[f>>0]|0)!=k<<24>>24){h=l;continue ba}}while(0);h=h+1|0;if((h|0)>=74){h=l;continue ba}}switch(h|0){case 75:{h=l;break}case 20:case 21:case 22:break aa;case 37:case 36:case 34:break ba;default:{cb=160;break H}}}if((e|0)>=(c[q>>2]|0)){cb=160;break H}j=c[g>>2]|0;c[hb>>2]=5;c[C>>2]=5;c[D>>2]=3;c[E>>2]=3;f=Gs(b,hb,4)|0;if((f|0)<3){cb=160;break H}c[j+(e<<4)>>2]=c[F>>2];c[j+(e<<4)+4>>2]=c[G>>2];if((h|0)==37){c[j+(e<<4)+8>>2]=0;f=c[H>>2]|0}else{c[j+(e<<4)+8>>2]=c[H>>2];f=(h|0)==34&(f|0)==4?c[I>>2]|0:0}c[j+(e<<4)+12>>2]=f;e=e+1|0}c[q>>2]=e;Tca(c[g>>2]|0,e,16,193);e=c[gb>>2]|0}while(0);h=c[e+12>>2]|0;n=e}if((va|0)==165){c[Ja>>2]=1;cb=160;break}else if((va|0)==166){c[Ua>>2]=3;cb=160;break}else if((va|0)==206){c[Ma>>2]=1;cb=160;break}else if((va|0)==207){c[Na>>2]=3;cb=160;break}else if((va|0)==249){c[Ka>>2]=1;cb=160;break}else if((va|0)==250){c[La>>2]=3;cb=160;break}else if((va|0)==275){i=lb;return wa|0}}else if((va|0)==275){i=lb;return wa|0}while(0);b=Ta+28|0;Ag(Ra,c[b>>2]|0);c[b>>2]=0;c[Ta+32>>2]=0;b=Ta+36|0;Ag(Ra,c[b>>2]|0);c[b>>2]=0;c[Ta+40>>2]=0;a[Ta>>0]=0;b=cb;i=lb;return b|0}else if((va|0)==275){i=lb;return wa|0}}while(0);c[y>>2]=3;b=2;i=lb;return b|0}function An(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;b=c[d+484>>2]|0;c[a+24>>2]=c[d+416>>2];c[a+28>>2]=c[d+420>>2];c[a+20>>2]=c[b+20>>2];c[a+16>>2]=c[b+24>>2];return 0}function Bn(a){a=a|0;a=a+16|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;return}function Cn(b,d){b=b|0;d=d|0;var f=0,g=0,h=0;if(d>>>0>=256){h=0;return h|0}h=Ed[c[b+20>>2]&511](e[(c[b+16>>2]|0)+(d<<1)>>1]|0)|0;g=c[b+24>>2]|0;if(!g){h=0;return h|0}b=c[b+28>>2]|0;d=0;while(1){f=c[b+(d<<2)>>2]|0;if(((f|0)!=0?(a[f>>0]|0)==(a[h>>0]|0):0)?(gfa(f,h)|0)==0:0){b=8;break}d=d+1|0;if(d>>>0>=g>>>0){d=0;b=8;break}}if((b|0)==8)return d|0;return 0}function Dn(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=(c[d>>2]|0)+1|0;if(g>>>0>=256){k=0;n=0;c[d>>2]=k;return n|0}l=b+16|0;m=b+20|0;n=b+24|0;k=b+28|0;a:while(1){f=Ed[c[m>>2]&511](e[(c[l>>2]|0)+(g<<1)>>1]|0)|0;h=c[n>>2]|0;b:do if(h){i=c[k>>2]|0;b=0;while(1){j=c[i+(b<<2)>>2]|0;if(((j|0)!=0?(a[j>>0]|0)==(a[f>>0]|0):0)?(gfa(j,f)|0)==0:0)break;b=b+1|0;if(b>>>0>=h>>>0)break b}if(b){f=11;break a}}while(0);g=g+1|0;if(g>>>0>=256){g=0;b=0;f=11;break}}if((f|0)==11){c[d>>2]=g;return b|0}return 0}function En(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;b=c[d+484>>2]|0;c[a+24>>2]=c[d+416>>2];c[a+28>>2]=c[d+420>>2];c[a+20>>2]=c[b+20>>2];c[a+16>>2]=c[b+28>>2];return 0}function Fn(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;b=d+372|0;d=c[d+376>>2]|0;c[a+16>>2]=d;c[a+20>>2]=(c[b+8>>2]|0)-d;c[a+24>>2]=c[b+12>>2];return 0}function Gn(a){a=a|0;c[a+24>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;return}function Hn(a,b){a=a|0;b=b|0;var d=0;d=c[a+16>>2]|0;if(d>>>0>b>>>0){a=0;return a|0}if(((c[a+20>>2]|0)+d|0)>>>0<=b>>>0){a=0;return a|0}a=e[(c[a+24>>2]|0)+(b<<1)>>1]|0;return a|0}function In(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;e=(c[d>>2]|0)+1|0;g=c[a+16>>2]|0;e=e>>>0>>0?g:e;g=(c[a+20>>2]|0)+g|0;a:do if(e>>>0>>0){f=c[a+24>>2]|0;while(1){h=b[f+(e<<1)>>1]|0;a=h&65535;if(h<<16>>16)break a;e=e+1|0;if(e>>>0>=g>>>0){e=0;break}}}else{e=0;a=0}while(0);c[d>>2]=e;return a|0}function Jn(a,b){a=a|0;b=b|0;b=c[a>>2]|0;return Dd[c[(c[b+484>>2]|0)+4>>2]&31](c[b+100>>2]|0,a,c[b+416>>2]|0,194,0,b)|0}function Kn(a){a=a|0;var b=0;b=a+20|0;Ag(c[(c[a>>2]|0)+100>>2]|0,c[b>>2]|0);c[b>>2]=0;c[a+16>>2]=0;return}function Ln(a,b){a=a|0;b=b|0;return Pd[c[(c[(c[a>>2]|0)+484>>2]|0)+8>>2]&511](a,b)|0}function Mn(a,b){a=a|0;b=b|0;return Pd[c[(c[(c[a>>2]|0)+484>>2]|0)+12>>2]&511](a,b)|0}function Nn(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0;if((c|0)<1)return;g=b+-1-(b+c)|0;f=~c;f=~(g>>>0>f>>>0?g:f);g=0;e=e&65535;while(1){h=b+g|0;c=d[h>>0]|0;a[h>>0]=c^e>>>8;g=g+1|0;if((g|0)==(f|0))break;else e=((c+e|0)*52845|0)+22719&65535}return}function On(a){a=a|0;return a+100|0}function Pn(a){a=a|0;return a+112|0}function Qn(a){a=a|0;return a+140|0}function Rn(b){b=b|0;var d=0,e=0,f=0,g=0;d=c[b+8>>2]|0;e=b+12|0;f=e+0|0;g=f+88|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[e>>2]=d;c[b+100>>2]=88;c[b+104>>2]=46;c[b+108>>2]=207;d=b+112|0;f=d+0|0;g=f+20|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(g|0));c[b+116>>2]=208;c[b+120>>2]=195;c[b+124>>2]=31;c[b+128>>2]=32;c[b+132>>2]=70;c[b+136>>2]=71;c[d>>2]=e;g=b+140|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[b+144>>2]=209;c[b+148>>2]=195;c[b+152>>2]=18;c[b+156>>2]=19;c[b+160>>2]=33;c[b+164>>2]=71;c[g>>2]=e;return 0}function Sn(a){a=a|0;var b=0,d=0;c[a+112>>2]=0;c[a+140>>2]=0;b=a+12|0;d=c[b>>2]|0;Us(a+28|0,d);Us(a+64|0,d);c[a+16>>2]=0;c[b>>2]=0;return}function Tn(b){b=b|0;var c=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a[b>>0]|0;do if(e<<24>>24==117){k=b+1|0;j=a[k>>0]|0;do if(j<<24>>24==110)if((a[b+2>>0]|0)==105){c=4;f=b+3|0;h=0;while(1){i=d[f>>0]|0;g=i+-48|0;if(g>>>0>9){g=i+-55|0;if((i+-65|0)>>>0>5|g>>>0>15){g=h;break}}g=g+(h<<4)|0;c=c+-1|0;f=f+1|0;if((c|0)>0)h=g;else break}if(!c){c=a[f>>0]|0;if(!(c<<24>>24)){l=g;return l|0}else if(c<<24>>24!=46){i=j;j=b;g=6;c=k;f=0;break}l=g|-2147483648;return l|0}else{i=j;j=b;g=6;c=k;f=0}}else{i=110;j=b;g=6;c=k;f=0}else{i=j;j=b;g=6;c=k;f=0}while(0);while(1){i=i&255;h=i+-48|0;if(h>>>0>9){h=i+-55|0;if((i+-65|0)>>>0>5|h>>>0>15){l=15;break}}f=h+(f<<4)|0;g=g+-1|0;h=j+2|0;if((g|0)<=0){c=h;break}j=c;i=a[h>>0]|0;c=h}if((l|0)==15)if((g|0)>=3){c=b;break}c=a[c>>0]|0;if(!(c<<24>>24)){l=f;return l|0}else if(c<<24>>24!=46){c=b;break}l=f|-2147483648;return l|0}else c=b;while(0);while(1){if(!(e<<24>>24))break;else if(e<<24>>24==46?c>>>0>b>>>0:0){l=21;break}j=c+1|0;e=a[j>>0]|0;c=j}if((l|0)==21)if(!c)c=0;else{l=Vs(b,c)|0|-2147483648;return l|0}l=Vs(b,c)|0;return l|0}function Un(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+96|0;u=v+80|0;r=v;s=v+40|0;h=r+0|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));t=b+16|0;c[t>>2]=0;q=b+20|0;c[q>>2]=0;j=Dg(a,8,0,d+10|0,0,u)|0;c[q>>2]=j;h=c[u>>2]|0;if(h){u=h;i=v;return u|0}if(d){if(!f){k=0;do{h=Pd[e&511](g,k)|0;if(h){b=0;do{if(!(gfa(26544+(c[26632+(b<<2)>>2]|0)|0,h)|0)){m=b;p=7;break}b=b+1|0}while(b>>>0<10);if((p|0)==7?(p=0,l=r+(m<<2)|0,(c[l>>2]|0)==0):0){c[l>>2]=1;c[s+(m<<2)>>2]=k}b=Tn(h)|0;if(b&2147483647){h=0;do{if((c[26504+(h<<2)>>2]|0)==(b|0)){p=12;break}h=h+1|0}while(h>>>0<10);if((p|0)==12){p=0;c[r+(h<<2)>>2]=2}c[j>>2]=b;c[j+4>>2]=k;j=j+8|0}}k=k+1|0}while((k|0)!=(d|0))}else{l=0;do{k=Pd[e&511](g,l)|0;if(k){h=0;do{if(!(gfa(26544+(c[26632+(h<<2)>>2]|0)|0,k)|0)){o=h;p=19;break}h=h+1|0}while(h>>>0<10);if((p|0)==19?(p=0,n=r+(o<<2)|0,(c[n>>2]|0)==0):0){c[n>>2]=1;c[s+(o<<2)>>2]=l}b=Tn(k)|0;if(b&2147483647){h=0;do{if((c[26504+(h<<2)>>2]|0)==(b|0)){p=24;break}h=h+1|0}while(h>>>0<10);if((p|0)==24){p=0;c[r+(h<<2)>>2]=2}c[j>>2]=b;c[j+4>>2]=l;j=j+8|0}Cd[f&255](g,k)}l=l+1|0}while((l|0)!=(d|0))}if((c[r>>2]|0)==1){c[j>>2]=916;c[j+4>>2]=c[s>>2];j=j+8|0}}if((c[r+4>>2]|0)==1){c[j>>2]=937;c[j+4>>2]=c[s+4>>2];j=j+8|0}if((c[r+8>>2]|0)==1){c[j>>2]=8725;c[j+4>>2]=c[s+8>>2];j=j+8|0}if((c[r+12>>2]|0)==1){c[j>>2]=173;c[j+4>>2]=c[s+12>>2];j=j+8|0}if((c[r+16>>2]|0)==1){c[j>>2]=713;c[j+4>>2]=c[s+16>>2];j=j+8|0}if((c[r+20>>2]|0)==1){c[j>>2]=956;c[j+4>>2]=c[s+20>>2];j=j+8|0}if((c[r+24>>2]|0)==1){c[j>>2]=8729;c[j+4>>2]=c[s+24>>2];j=j+8|0}if((c[r+28>>2]|0)==1){c[j>>2]=160;c[j+4>>2]=c[s+28>>2];j=j+8|0}if((c[r+32>>2]|0)==1){c[j>>2]=538;c[j+4>>2]=c[s+32>>2];j=j+8|0}if((c[r+36>>2]|0)==1){c[j>>2]=539;c[j+4>>2]=c[s+36>>2];j=j+8|0}h=c[q>>2]|0;j=j-h>>3;if(!j){Ag(a,h);c[q>>2]=0;h=c[u>>2]|0;if(!h){c[u>>2]=163;h=163}}else{if(j>>>0>>1>>>0){h=Dg(a,8,d,j,h,u)|0;c[q>>2]=h;c[u>>2]=0}Tca(h,j,8,196);h=c[u>>2]|0}c[t>>2]=j;u=h;i=v;return u|0}function Vn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[a+20>>2]|0;a=(c[a+16>>2]|0)+-1|0;if((a|0)<0){i=0;return i|0}i=d+(a<<3)|0;a=0;a:while(1){h=i;while(1){e=h-d>>4;g=d+(e<<3)|0;f=c[g>>2]|0;if((f|0)==(b|0)){a=g;break a}f=f&2147483647;a=(f|0)==(b|0)?g:a;if((d|0)==(i|0))break a;if(f>>>0>=b>>>0)break;d=d+(e+1<<3)|0;if(d>>>0>i>>>0)break a}if((e|0)<1)break;else i=d+(e+-1<<3)|0}if(!a){i=0;return i|0}i=c[a+4>>2]|0;return i|0}function Wn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=(c[b>>2]|0)+1|0;k=c[a+16>>2]|0;do if(k){j=c[a+20>>2]|0;i=k;f=0;d=0;while(1){h=((i-f|0)>>>1)+f|0;g=c[j+(h<<3)>>2]|0;if((g|0)==(e|0)){d=h;g=4;break}g=g&2147483647;if((g|0)==(e|0))d=c[j+(h<<3)+4>>2]|0;g=g>>>0>>0;f=g?h+1|0:f;i=g?i:h;if(i>>>0<=f>>>0){g=8;break}}if((g|0)==4){h=e;j=c[j+(d<<3)+4>>2]|0;c[b>>2]=h;return j|0}else if((g|0)==8){if(!d){d=f;break}c[b>>2]=e;return d|0}}else d=0;while(0);if(d>>>0>=k>>>0){h=0;j=0;c[b>>2]=h;return j|0}j=c[a+20>>2]|0;h=c[j+(d<<3)>>2]&2147483647;j=c[j+(d<<3)+4>>2]|0;c[b>>2]=h;return j|0}function Xn(a){a=a|0;return 21504+(b[25984+((a>>>0>257?0:a)<<1)>>1]|0)|0}function Yn(a){a=a|0;if(a>>>0>390){a=0;return a|0}a=21504+(b[25200+(a<<1)>>1]|0)|0;return a|0}function Zn(a,b){a=a|0;b=b|0;return Jg(20976,b)|0}function _n(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;c[b>>2]=0;d=yg(a,24,e)|0;e=c[e>>2]|0;if(e){i=f;return e|0}c[d+8>>2]=a;c[b>>2]=d;i=f;return e|0}function $n(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)return;if((b|0)!=0&(d|0)>3075){c[a>>2]=b+1032;c[a+4>>2]=d+-1032;c[a+12>>2]=b;return}else{c[a>>2]=0;c[a+4>>2]=0;c[a+12>>2]=0;return}}function ao(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function bo(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;i=c[e+4>>2]|0;j=c[e>>2]|0;if(!d){n=96;return n|0}if(!(c[d>>2]|0)){n=96;return n|0}k=d+4|0;if(!(c[k>>2]|0)){n=96;return n|0}if(!i){n=20;return n|0}f=b[i+2>>1]|0;if(!(f<<16>>16)){n=0;return n|0}g=b[i>>1]|0;if(g<<16>>16<1){n=0;return n|0}h=c[i+12>>2]|0;if(!h){n=20;return n|0}if(!(c[i+4>>2]|0)){n=20;return n|0}if((f<<16>>16|0)!=((b[h+((g<<16>>16)+-1<<1)>>1]|0)+1|0)){n=20;return n|0}n=c[d+12>>2]|0;f=e+8|0;if(c[f>>2]&2){n=19;return n|0}if(!j){n=20;return n|0}if(!(c[j+4>>2]|0)){n=0;return n|0}if(!(c[j>>2]|0)){n=0;return n|0}if(!(c[j+12>>2]|0)){n=20;return n|0}m=n+128|0;c[m+0>>2]=c[i+0>>2];c[m+4>>2]=c[i+4>>2];c[m+8>>2]=c[i+8>>2];c[m+12>>2]=c[i+12>>2];c[m+16>>2]=c[i+16>>2];m=n+104|0;c[m+0>>2]=c[j+0>>2];c[m+4>>2]=c[j+4>>2];c[m+8>>2]=c[j+8>>2];c[m+12>>2]=c[j+12>>2];c[m+16>>2]=c[j+16>>2];c[m+20>>2]=c[j+20>>2];m=c[d>>2]|0;c[n+28>>2]=m;c[n+32>>2]=m+((c[k>>2]|0)>>>2<<2);if(c[f>>2]&1){n=19;return n|0}h=c[n+144>>2]|0;k=(h&256|0)==0;m=k?6:12;c[n>>2]=m;c[n+16>>2]=k?32:256;c[n+20>>2]=k?2:30;k=1<>2]=k;c[n+8>>2]=(k|0)/2|0;m=m+-6|0;c[n+12>>2]=m;c[n+24>>2]=m;if(!(h&8)){f=n+180|0;g=(h&16)>>>2;a[f>>0]=g;if(!(h&32))a[f>>0]=g&255|1}else a[n+180>>0]=2;m=n+181|0;a[m>>0]=h>>>9&1^1;d=n+164|0;c[d>>2]=34;e=n+168|0;c[e>>2]=16;g=n+172|0;c[g>>2]=17;h=n+176|0;c[h>>2]=210;j=n+1024|0;c[j>>2]=0;i=n+960|0;b[i>>1]=0;k=n+962|0;b[k>>1]=(c[n+104>>2]|0)+65535;l=n+108|0;b[n+56>>1]=c[l>>2];c[n+60>>2]=c[n+116>>2];f=$s(n,0)|0;if(f){n=f;return n|0}do if((a[m>>0]|0)!=0?(a[n+180>>0]|0)!=2:0){c[d>>2]=35;c[e>>2]=18;c[g>>2]=19;c[h>>2]=211;c[j>>2]=0;b[i>>1]=0;b[k>>1]=(c[l>>2]|0)+65535;f=$s(n,1)|0;if(!f)break;return f|0}while(0);n=0;return n|0}function co(a){a=a|0;Ag(c[a+8>>2]|0,a);return}function eo(a){a=a|0;var b=0;b=c[a+4>>2]|0;Ud[c[(c[(c[a+12>>2]|0)+56>>2]|0)+8>>2]&255](c[a+52>>2]|0,c[b+164>>2]|0,c[b+168>>2]|0);return 0}function fo(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+80|0;r=v+64|0;u=v;s=v+16|0;t=e+72|0;if((c[t>>2]|0)!=(c[d+16>>2]|0)){c[r>>2]=6;e=6;i=v;return e|0}h=c[d+12>>2]|0;if((f|0)==2){if((h|0)==82776){e=19;i=v;return e|0}}else if((h|0)==82704){e=19;i=v;return e|0}p=e+108|0;if(g)Xg(p,c[g>>2]|0,c[g+4>>2]|0);Ih(p,u);j=(c[u>>2]|0)+32&-64;c[u>>2]=j;m=u+4|0;k=(c[m>>2]|0)+32&-64;c[m>>2]=k;q=u+8|0;o=(c[q>>2]|0)+32&-64;c[q>>2]=o;q=u+12|0;l=(c[q>>2]|0)+32&-64;c[q>>2]=l;j=o-j>>6;k=l-k>>6;if((k|j)>>>0>65535){c[r>>2]=6;e=6;i=v;return e|0}n=e+76|0;l=c[d+8>>2]|0;o=e+156|0;if(c[(c[o>>2]|0)+4>>2]&1){g=e+88|0;Ag(l,c[g>>2]|0);c[g>>2]=0;g=(c[o>>2]|0)+4|0;c[g>>2]=c[g>>2]&-2}if(!(f&2)){b[e+92>>1]=256;h=2;g=j+3&-4}else{h=1;g=(j+15|0)>>>4<<1}f=e+94|0;a[f>>0]=h;c[e+80>>2]=j;c[n>>2]=k;c[e+84>>2]=g;c[e+88>>2]=Dg(l,k,0,g,0,r)|0;h=c[r>>2]|0;if(h){e=h;i=v;return e|0}h=(c[o>>2]|0)+4|0;c[h>>2]=c[h>>2]|1;Xg(p,0-(c[u>>2]|0)|0,0-(c[m>>2]|0)|0);c[s>>2]=n;c[s+4>>2]=p;c[s+8>>2]=(a[f>>0]|0)==2&1;c[r>>2]=Pd[c[d+56>>2]&511](c[d+52>>2]|0,s)|0;Xg(p,c[u>>2]|0,c[m>>2]|0);h=c[r>>2]|0;if(h){e=h;i=v;return e|0}c[t>>2]=1651078259;c[e+100>>2]=c[u>>2]>>6;c[e+104>>2]=c[q>>2]>>6;e=0;i=v;return e|0}function go(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((c[b+72>>2]|0)!=(c[a+16>>2]|0)){a=6;return a|0}if(d)Wg(b+108|0,d);if(!e){a=0;return a|0}Xg(b+108|0,c[e>>2]|0,c[e+4>>2]|0);a=0;return a|0}function ho(a,b,d){a=a|0;b=b|0;d=d|0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;if((c[b+72>>2]|0)!=(c[a+16>>2]|0))return;Ih(b+108|0,d);return}function io(a,b,d){a=a|0;b=b|0;d=d|0;return Hd[c[(c[(c[a+12>>2]|0)+56>>2]|0)+12>>2]&255](c[a+52>>2]|0,b,d)|0}function jo(a,b){a=a|0;b=b|0;c[a+16>>2]=b;return 0}function ko(a,b){a=a|0;b=b|0;if(b>>>0>=256){a=0;return a|0}a=d[(c[a+16>>2]|0)+(b+6)>>0]|0;return a|0}function lo(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=c[b+16>>2]|0;g=c[d>>2]|0;e=0;while(1){b=g+1|0;if(b>>>0>=256){f=e;b=0;e=4;break}g=a[f+(g+7)>>0]|0;e=g&255;if(!(g<<24>>24))g=b;else{f=e;e=4;break}}if((e|0)==4){c[d>>2]=b;return f|0}return 0}function mo(a,b){a=a|0;b=b|0;var e=0,f=0;f=(d[a+2>>0]|0)<<8|(d[a+3>>0]|0);if(f>>>0<262?1:(a+f|0)>>>0>(c[b+4>>2]|0)>>>0)Lg(b,8);if(!(c[b+8>>2]|0))return 0;e=b+172|0;f=0;a=a+6|0;while(1){if((d[a>>0]|0)>>>0>=(c[e>>2]|0)>>>0){a=6;break}f=f+1|0;if((f|0)==256){a=8;break}else a=a+1|0}if((a|0)==6)Lg(b,16);else if((a|0)==8)return 0;return 0}function no(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=0;c[b>>2]=(d[a+4>>0]|0)<<8|(d[a+5>>0]|0);return 0}function oo(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0;i=c[a+16>>2]|0;if(b>>>0>=65536){i=0;return i|0}a=b>>>8;if(!a){h=b<<1&510;if(!((d[i+(h+6)>>0]|0)<<8|(d[i+(h+7)>>0]|0))){h=518;a=i+518|0}else{i=0;return i|0}}else{h=a<<1;h=(d[i+(h+7)>>0]|0)&248|(d[i+(h+6)>>0]|0)<<8;a=h+518|0;if(!h){i=0;return i|0}else{h=a;a=i+a|0}}f=h+6|0;e=h+7|0;g=(d[i+f>>0]|0)<<8|(d[i+e>>0]|0);a=(b&255)-((d[a>>0]|0)<<8|(d[i+(h+1)>>0]|0))|0;if(!((g|0)!=0?a>>>0<((d[i+(h+2)>>0]|0)<<8|(d[i+(h+3)>>0]|0))>>>0:0)){i=0;return i|0}a=g+(a<<1)|0;a=(d[i+(f+a)>>0]|0)<<8|(d[i+(e+a)>>0]|0);if(!a){i=0;return i|0}i=a+((d[i+(h+4)>>0]|0)<<8|(d[i+(h+5)>>0]|0))&65535;return i|0}function po(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=c[a+16>>2]|0;a=(c[b>>2]|0)+1|0;if(a>>>0>=65536){o=0;n=0;c[b>>2]=n;return o|0}n=m+518|0;a:while(1){f=a>>>8;if(!f){j=a<<1&510;if(!((d[m+(j+6)>>0]|0)<<8|(d[m+(j+7)>>0]|0))){g=518;f=n;o=6}}else{j=f<<1;j=(d[m+(j+7)>>0]|0)&248|(d[m+(j+6)>>0]|0)<<8;f=j+518|0;if(j){g=f;f=m+f|0;o=6}}if((o|0)==6){o=0;h=(d[f>>0]|0)<<8|(d[m+(g+1)>>0]|0);k=(d[m+(g+2)>>0]|0)<<8|(d[m+(g+3)>>0]|0);j=g+6|0;l=(d[m+(g+4)>>0]|0)<<8|(d[m+(g+5)>>0]|0);i=(d[m+j>>0]|0)<<8|(d[m+(g+7)>>0]|0);f=a&255;if(i){p=f>>>0>>0;g=p?0:f-h|0;a=(p?h:f)+(a&-256)|0;if(g>>>0>>0){h=m+(j+(g<<1)+i)|0;do{f=(d[h>>0]|0)<<8|(d[h+1>>0]|0);h=h+2|0;if((f|0)!=0?(e=f+l&65535,(e|0)!=0):0){o=13;break a}g=g+1|0;a=a+1|0}while(g>>>0>>0)}}}a=a+256&-256;if(a>>>0>=65536){e=0;a=0;o=13;break}}if((o|0)==13){c[b>>2]=a;return e|0}return 0}function qo(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=(d[a+2>>0]|0)<<8|(d[a+3>>0]|0);q=a+p|0;k=b+4|0;if(p>>>0<518?1:q>>>0>(c[k>>2]|0)>>>0)Lg(b,8);p=b+8|0;e=a+518|0;f=0;h=0;i=a+6|0;while(1){g=d[i+1>>0]|0;if(!((c[p>>2]|0)>>>0<2|(g&7|0)==0)){j=5;break}n=((d[i>>0]|0)<<8|g)>>>3;f=n>>>0>f>>>0?n:f;h=h+1|0;if((h|0)==256){o=f;break}else i=i+2|0}if((j|0)==5)Lg(b,8);n=a+((o<<3)+526)|0;if(n>>>0>(c[k>>2]|0)>>>0)Lg(b,8);l=b+172|0;m=0;a:while(1){i=e;h=(d[e>>0]|0)<<8|(d[e+1>>0]|0);a=(d[e+2>>0]|0)<<8|(d[e+3>>0]|0);j=(d[e+4>>0]|0)<<8|(d[e+5>>0]|0);f=e+8|0;g=(d[e+6>>0]|0)<<8|(d[e+7>>0]|0);if(a){if((c[p>>2]|0)>>>0>1?h>>>0>255|(a+h|0)>>>0>256:0){j=13;break}if(g){g=g+6|0;if((e+g|0)>>>0>>0){j=17;break}if((e+(g+(a<<1))|0)>>>0>q>>>0){j=17;break}if(c[p>>2]|0){k=e+((a<<1)+8)|0;a=e+((a<<1)+8)|0;h=e+10|0;h=(a>>>0>h>>>0?a:h)+(-9-i)|0;do{i=(d[f>>0]|0)<<8|(d[f+1>>0]|0);f=f+2|0;if((i|0)!=0?(i+j&65535)>>>0>=(c[l>>2]|0)>>>0:0){j=22;break a}}while(f>>>0>>0);e=e+(h+10&-2)|0}else e=f}else e=f}else e=f;m=m+1|0;if(m>>>0>o>>>0){j=26;break}}if((j|0)==13)Lg(b,8);else if((j|0)==17)Lg(b,9);else if((j|0)==22)Lg(b,16);else if((j|0)==26)return 0;return 0}function ro(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=2;c[b>>2]=(d[a+4>>0]|0)<<8|(d[a+5>>0]|0);return 0}function so(a,b){a=a|0;b=b|0;c[a+16>>2]=b;c[a+32>>2]=((d[b+6>>0]|0)<<8|(d[b+7>>0]|0))>>>1;c[a+24>>2]=-1;c[a+28>>2]=0;return 0}function to(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=b;do if(b>>>0<=65535)if(!(c[a+20>>2]&1)){d=ft(a,d,0)|0;break}else{d=et(a,d,0)|0;break}else d=0;while(0);i=e;return d|0}function uo(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[b>>2]|0;if(d>>>0>65534){e=0;return e|0}if(c[a+20>>2]&1){e=et(a,b,1)|0;return e|0}e=a+24|0;if((d|0)!=(c[e>>2]|0)){e=ft(a,b,1)|0;return e|0}gt(a);d=c[a+28>>2]|0;if(!d){e=0;return e|0}c[b>>2]=c[e>>2];e=d;return e|0}function vo(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;f=(d[b+2>>0]|0)<<8|(d[b+3>>0]|0);if(f>>>0<16)Lg(e,8);w=e+4|0;x=e+8|0;do if((b+f|0)>>>0>(c[w>>2]|0)>>>0)if(!(c[x>>2]|0)){j=(c[w>>2]|0)-b|0;break}else Lg(e,8);else j=f;while(0);v=d[b+7>>0]|0;f=(d[b+6>>0]|0)<<8|v;if(!((c[x>>2]|0)>>>0<2|(v&1|0)==0))Lg(e,8);v=f>>>1;i=v<<1;if(j>>>0<((v<<3)+16|0)>>>0)Lg(e,8);if((c[x>>2]|0)>>>0>1){u=a[b+9>>0]|0;f=(d[b+8>>0]|0)<<8|u&255;g=(d[b+10>>0]|0)<<8|(d[b+11>>0]|0);t=a[b+13>>0]|0;h=(d[b+12>>0]|0)<<8|t&255;if((t|u)&1)Lg(e,8);u=f>>>1;if(!(u<<1>>>0>=v>>>0&u>>>0<=v>>>0&((h>>>1)+u|0)==(v|0)&(u|0)==(1<>2]|0)>>>0>1?((d[b+(i+12)>>0]|0)<<8|(d[b+(i+13)>>0]|0)|0)!=65535:0)Lg(e,8);if(!v){e=0;return e|0}s=v+-1|0;t=e+172|0;o=b+j|0;f=0;p=0;q=0;r=0;a:while(1){n=l;l=l+2|0;b=q;q=(d[n>>0]|0)<<8|(d[n+1>>0]|0);n=h;h=h+2|0;i=p;p=(d[n>>0]|0)<<8|(d[n+1>>0]|0);n=(d[g>>0]|0)<<8|(d[g+1>>0]|0);g=g+2|0;m=k;k=k+2|0;j=(d[m>>0]|0)<<8|(d[m+1>>0]|0);if(p>>>0>>0){g=22;break}do if(q>>>0<=i>>>0&(r|0)!=0){if(c[x>>2]|0){g=25;break a}if(b>>>0>q>>>0|i>>>0>p>>>0){f=f|1;break}else{f=f|2;break}}while(0);if((j|0)==65535){if((c[x>>2]|0)>>>0>1){g=45;break}if(!((r|0)==(s|0)&(q|0)==65535&(p|0)==65535)){g=45;break}}else if(j){i=m+j|0;if(!(c[x>>2]|0)){if(!((r|0)==(s|0)&(q|0)==65535&(p|0)==65535)){if(i>>>0>>0){g=37;break}if((m+((p-q<<1)+2+j)|0)>>>0>(c[w>>2]|0)>>>0){g=37;break}}}else{if(i>>>0>>0){g=33;break}if((m+((p-q<<1)+2+j)|0)>>>0>o>>>0){g=33;break}}if((c[x>>2]|0)!=0&p>>>0>q>>>0){b=q;do{j=(d[i>>0]|0)<<8|(d[i+1>>0]|0);i=i+2|0;if((j|0)!=0?(j+n&65535)>>>0>=(c[t>>2]|0)>>>0:0){g=41;break a}b=b+1|0}while((b|0)!=(p|0))}}r=r+1|0;if(r>>>0>=v>>>0){g=47;break}}if((g|0)==22)Lg(e,8);else if((g|0)==25)Lg(e,8);else if((g|0)==33)Lg(e,8);else if((g|0)==37)Lg(e,8);else if((g|0)==41)Lg(e,16);else if((g|0)==45)Lg(e,8);else if((g|0)==47)return f|0;return 0}function wo(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=4;c[b>>2]=(d[a+4>>0]|0)<<8|(d[a+5>>0]|0);return 0}function xo(a,b){a=a|0;b=b|0;var e=0;e=c[a+16>>2]|0;a=b-((d[e+6>>0]|0)<<8|(d[e+7>>0]|0))|0;if(a>>>0>=((d[e+8>>0]|0)<<8|(d[e+9>>0]|0))>>>0){b=0;return b|0}b=a<<1;b=(d[e+(b+10)>>0]|0)<<8|(d[e+(b+11)>>0]|0);return b|0}function yo(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;f=c[a+16>>2]|0;a=(c[b>>2]|0)+1|0;e=(d[f+6>>0]|0)<<8|(d[f+7>>0]|0);h=(d[f+8>>0]|0)<<8|(d[f+9>>0]|0);if(a>>>0>65535){h=0;f=0;c[b>>2]=f;return h|0}a=a>>>0>>0?e:a;e=a-e|0;if(e>>>0>=h>>>0){h=0;f=0;c[b>>2]=f;return h|0}g=e;e=f+((e<<1)+10)|0;while(1){f=(d[e>>0]|0)<<8|(d[e+1>>0]|0);if(f){e=6;break}g=g+1|0;if(g>>>0>=h>>>0){f=0;a=0;e=6;break}else{a=a+1|0;e=e+2|0}}if((e|0)==6){c[b>>2]=a;return f|0}return 0}function zo(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;e=a+10|0;g=b+4|0;if(e>>>0>(c[g>>2]|0)>>>0)Lg(b,8);h=(d[a+2>>0]|0)<<8|(d[a+3>>0]|0);f=(d[a+8>>0]|0)<<8|(d[a+9>>0]|0);if((a+h|0)>>>0>(c[g>>2]|0)>>>0)Lg(b,8);if(h>>>0<((f<<1)+10|0)>>>0)Lg(b,8);if(!((c[b+8>>2]|0)!=0&(f|0)!=0))return 0;h=b+172|0;while(1){if(((d[e>>0]|0)<<8|(d[e+1>>0]|0))>>>0>=(c[h>>2]|0)>>>0){e=9;break}f=f+-1|0;if(!f){e=11;break}else e=e+2|0}if((e|0)==9)Lg(b,16);else if((e|0)==11)return 0;return 0}function Ao(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=6;c[b>>2]=(d[a+4>>0]|0)<<8|(d[a+5>>0]|0);return 0}function Bo(a,b){a=a|0;b=b|0;var e=0,f=0;e=c[a+16>>2]|0;a=(d[e+8205>>0]|0)<<16|(d[e+8204>>0]|0)<<24|(d[e+8206>>0]|0)<<8|(d[e+8207>>0]|0);if(!a){f=0;return f|0}f=e+8208|0;while(1){e=(d[f+1>>0]|0)<<16|(d[f>>0]|0)<<24|(d[f+2>>0]|0)<<8|(d[f+3>>0]|0);if(e>>>0>b>>>0){a=0;f=7;break}a=a+-1|0;if(((d[f+5>>0]|0)<<16|(d[f+4>>0]|0)<<24|(d[f+6>>0]|0)<<8|(d[f+7>>0]|0))>>>0>=b>>>0){a=f;f=6;break}if(!a){a=0;f=7;break}else f=f+12|0}if((f|0)==6){f=b-e+((d[a+9>>0]|0)<<16|(d[a+8>>0]|0)<<24|(d[a+10>>0]|0)<<8|(d[a+11>>0]|0))|0;return f|0}else if((f|0)==7)return a|0;return 0}function Co(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0;g=c[a+16>>2]|0;e=(d[g+8205>>0]|0)<<16|(d[g+8204>>0]|0)<<24|(d[g+8206>>0]|0)<<8|(d[g+8207>>0]|0);if(!e){i=0;h=0;c[b>>2]=h;return i|0}a=(c[b>>2]|0)+1|0;h=g+8208|0;while(1){g=(d[h+1>>0]|0)<<16|(d[h>>0]|0)<<24|(d[h+2>>0]|0)<<8|(d[h+3>>0]|0);i=h;h=h+12|0;a=a>>>0>>0?g:a;if(a>>>0<=((d[i+5>>0]|0)<<16|(d[i+4>>0]|0)<<24|(d[i+6>>0]|0)<<8|(d[i+7>>0]|0))>>>0?(f=((d[i+9>>0]|0)<<16|(d[i+8>>0]|0)<<24|(d[i+10>>0]|0)<<8|(d[i+11>>0]|0))+(a-g)|0,(f|0)!=0):0){e=6;break}e=e+-1|0;if(!e){f=0;a=0;e=6;break}}if((e|0)==6){c[b>>2]=a;return f|0}return 0} -function Tj(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;la=i;i=i+32|0;da=la+20|0;ca=la;ba=la+4|0;aa=la+8|0;fa=la+12|0;ea=la+16|0;if(!b){ja=-2;i=la;return ja|0}S=b+28|0;h=c[S>>2]|0;if(!h){ja=-2;i=la;return ja|0}if(!(c[b>>2]|0)){ja=-2;i=la;return ja|0}ha=(e|0)==4?-5:0;ja=b+4|0;ka=b+8|0;ga=b+24|0;P=b+36|0;Q=b+40|0;R=b+32|0;ia=b+48|0;m=h;e=-5;a:while(1){b:while(1){c:do switch(c[m>>2]|0){case 12:{e=1;K=280;break a}case 8:{f=m;K=270;break b}case 13:{K=281;break a}case 7:{K=35;break b}case 4:{g=m;f=m;K=28;break a}case 2:{h=m;f=m;K=22;break a}case 0:{h=c[ja>>2]|0;if(!h){K=280;break a}c[ja>>2]=h+-1;c[ka>>2]=(c[ka>>2]|0)+1;e=c[b>>2]|0;c[b>>2]=e+1;e=d[e>>0]|0;h=m+4|0;c[h>>2]=e;if((e&15|0)!=8){c[m>>2]=13;c[ga>>2]=286312;c[h>>2]=5;e=ha;continue b}if(((e>>>4)+8|0)>>>0>(c[m+16>>2]|0)>>>0){c[m>>2]=13;c[ga>>2]=286344;c[h>>2]=5;e=ha;continue b}else{c[m>>2]=1;e=ha;break c}}case 3:{g=m;f=m;K=25;break a}case 9:{K=9;break b}case 6:{f=m;e=m;K=34;break a}case 11:{K=7;break b}case 1:break;case 10:{K=8;break b}case 5:{g=m;f=m;K=31;break a}default:{e=-2;K=282;break a}}while(0);h=c[ja>>2]|0;if(!h){K=280;break a}g=h+-1|0;c[ja>>2]=g;c[ka>>2]=(c[ka>>2]|0)+1;e=c[b>>2]|0;c[b>>2]=e+1;e=d[e>>0]|0;h=m+4|0;if(((c[h>>2]<<8|e)>>>0)%31|0){c[m>>2]=13;c[ga>>2]=286288;c[h>>2]=5;e=ha;continue}if(e&32){h=m;e=m;K=21;break a}c[m>>2]=7;e=ha}do if((K|0)==7){K=0;h=c[ja>>2]|0;f=m}else if((K|0)==8){h=c[ja>>2]|0;f=m;K=274}else if((K|0)==9){h=c[ja>>2]|0;f=m;K=272}else if((K|0)==35){K=0;O=c[m+20>>2]|0;L=O+32|0;M=O+28|0;N=O+52|0;m=c[N>>2]|0;I=O+48|0;h=c[I>>2]|0;if(m>>>0>>0){G=O+44|0;h=h+~m|0}else{h=O+44|0;G=h;h=(c[h>>2]|0)-m|0}z=O+40|0;H=O+4|0;A=O+24|0;B=O+4|0;C=O+8|0;D=O+20|0;J=O+12|0;E=O+36|0;F=O+16|0;k=c[L>>2]|0;g=c[M>>2]|0;l=h;j=c[ja>>2]|0;f=c[b>>2]|0;h=m;d:while(1){switch(c[O>>2]|0){case 3:{if(g>>>0<14){m=f;while(1){if(!j){j=k;f=m;K=85;break d}j=j+-1|0;f=m+1|0;k=(d[m>>0]|0)<>>0<14){e=0;m=f}else{e=0;break}}}c[H>>2]=k&16383;l=k&31;if(l>>>0>29){K=88;break d}m=k>>>5&31;if(m>>>0>29){K=88;break d}K=Hd[c[R>>2]&255](c[Q>>2]|0,l+258+m|0,4)|0;c[J>>2]=K;if(!K){K=90;break d}c[C>>2]=0;c[O>>2]=4;m=0;k=k>>>14;g=g+-14|0;K=95;break}case 1:{if(g>>>0<32)while(1){if(!j){j=k;K=56;break d}j=j+-1|0;m=f+1|0;k=(d[f>>0]|0)<>>0<32){e=0;f=m}else{e=0;f=m;break}}m=k>>>16;n=m^65535;if((n|0)!=(k&65535|0)){K=58;break d}c[H>>2]=n;if((m|0)==65535)g=(c[A>>2]|0)!=0?7:0;else g=2;c[O>>2]=g;x=h;y=l;k=0;g=0;h=x;l=y;continue d}case 5:{n=c[C>>2]|0;K=110;break}case 0:{if(g>>>0<3){m=f;while(1){if(!j){j=k;f=m;K=46;break d}j=j+-1|0;f=m+1|0;k=(d[m>>0]|0)<>>0<3){e=0;m=f}else{e=0;break}}}c[A>>2]=k&1;m=k>>>1&3;if((m|0)==1){m=Hd[c[R>>2]&255](c[Q>>2]|0,1,28)|0;if(!m){K=51;break d}c[m>>2]=0;a[m+16>>0]=9;a[m+17>>0]=5;c[m+20>>2]=14064;c[m+24>>2]=13808;c[H>>2]=m;c[O>>2]=6;x=h;y=l;k=k>>>3;g=g+-3|0;h=x;l=y;continue d}else if(!m){w=g+-3|0;g=w&7;c[O>>2]=1;x=h;y=l;k=k>>>3>>>g;g=w-g|0;h=x;l=y;continue d}else if((m|0)==3){K=53;break d}else if((m|0)==2){c[O>>2]=3;x=h;y=l;k=k>>>3;g=g+-3|0;h=x;l=y;continue d}else{x=h;y=l;h=x;l=y;continue d}}case 2:{if(!j){j=k;K=63;break d}do if(!l){if((h|0)==(c[G>>2]|0)?(T=c[I>>2]|0,U=c[z>>2]|0,(T|0)!=(U|0)):0){if(U>>>0>>0)h=T+-1-U|0;else h=h-U|0;if(!h)h=U;else{l=h;h=U;break}}c[N>>2]=h;e=Pr(O,b,e)|0;h=c[N>>2]|0;m=c[I>>2]|0;if(h>>>0>>0){l=m+~h|0;n=c[G>>2]|0}else{n=c[G>>2]|0;l=n-h|0}do if((h|0)==(n|0)?(V=c[z>>2]|0,(m|0)!=(V|0)):0)if(V>>>0>>0){l=m+-1-V|0;h=V;break}else{l=h-V|0;h=V;break}while(0);if(!l){K=80;break d}}while(0);y=c[H>>2]|0;y=y>>>0>j>>>0?j:y;y=y>>>0>l>>>0?l:y;qfa(h|0,f|0,y|0)|0;f=f+y|0;j=j-y|0;h=h+y|0;l=l-y|0;x=c[H>>2]|0;c[H>>2]=x-y;if((x|0)!=(y|0)){x=g;y=k;e=0;g=x;k=y;continue d}c[O>>2]=(c[A>>2]|0)!=0?7:0;x=g;y=k;e=0;g=x;k=y;continue d}case 4:{m=c[C>>2]|0;if(m>>>0<(((c[H>>2]|0)>>>10)+4|0)>>>0)K=95;else{l=c[J>>2]|0;K=94}break}case 6:break;case 7:{K=252;break d}case 8:{K=255;break d}case 9:{e=h;K=256;break d}default:{e=h;K=257;break d}}if((K|0)==95)while(1){if(g>>>0<3){n=f;while(1){if(!j){j=k;f=n;K=98;break d}j=j+-1|0;f=n+1|0;k=(d[n>>0]|0)<>>0<3){e=0;n=f}else{e=0;break}}}c[C>>2]=m+1;n=c[J>>2]|0;c[n+(c[12904+(m<<2)>>2]<<2)>>2]=k&7;k=k>>>3;g=g+-3|0;m=c[C>>2]|0;if(m>>>0<(((c[H>>2]|0)>>>10)+4|0)>>>0)K=95;else{l=n;K=94;break}}if((K|0)==94){if(m>>>0<19)do{c[C>>2]=m+1;c[l+(c[12904+(m<<2)>>2]<<2)>>2]=0;m=c[C>>2]|0}while(m>>>0<19);c[F>>2]=7;m=c[E>>2]|0;c[ca>>2]=0;n=Hd[c[R>>2]&255](c[Q>>2]|0,19,4)|0;if(!n){e=-4;K=108;break}m=Qr(l,19,19,0,0,D,F,m,ca,n)|0;if((m|0)==-5){e=n;K=104;break}else if((m|0)==-3){m=n;e=13728;K=105;break}if(!(c[F>>2]|0)){e=n;K=104;break}Cd[c[P>>2]&255](c[Q>>2]|0,n);if((m|0)==-3){K=107;break}else if(m){e=m;K=108;break}c[C>>2]=0;c[O>>2]=5;n=0;K=110}if((K|0)==110){K=0;m=c[H>>2]|0;if(n>>>0<((m&31)+258+(m>>>5&31)|0)>>>0){u=n;while(1){l=c[F>>2]|0;if(g>>>0>>0){n=f;while(1){if(!j){j=k;f=n;K=115;break d}j=j+-1|0;f=n+1|0;k=(d[n>>0]|0)<>>0>>0){e=0;n=f}else{e=0;break}}}y=c[D>>2]|0;r=c[12984+(l<<2)>>2]&k;s=d[y+(r<<3)+1>>0]|0;r=c[y+(r<<3)+4>>2]|0;if(r>>>0<16){c[C>>2]=u+1;o=c[J>>2]|0;c[o+(u<<2)>>2]=r;n=c[C>>2]|0;k=k>>>s;g=g-s|0}else{t=(r|0)==18;o=t?7:r+-14|0;t=t?11:3;l=o+s|0;if(g>>>0>>0){n=f;while(1){if(!j){j=k;f=n;K=121;break d}j=j+-1|0;f=n+1|0;k=(d[n>>0]|0)<>>0>>0){e=0;n=f}else{e=0;break}}}k=k>>>s;q=c[12984+(o<<2)>>2]&k;p=q+t|0;k=k>>>o;g=g-s-o|0;if((p+u|0)>>>0>((m&31)+258+(m>>>5&31)|0)>>>0){K=124;break d}m=(r|0)==16;if(m&(u|0)==0){K=124;break d}if(m){n=c[J>>2]|0;o=n;n=c[n+(u+-1<<2)>>2]|0}else{o=c[J>>2]|0;n=0}l=u;m=p;while(1){c[o+(l<<2)>>2]=n;m=m+-1|0;if(!m)break;else l=l+1|0}n=t+u+q|0;c[C>>2]=n}m=c[H>>2]|0;if(n>>>0<((m&31)+258+(m>>>5&31)|0)>>>0)u=n;else{s=o;break}}}else s=c[J>>2]|0;c[D>>2]=0;c[ba>>2]=9;c[aa>>2]=6;q=m&31;p=q+257|0;n=(m>>>5&31)+1|0;l=c[E>>2]|0;c[da>>2]=0;r=Hd[c[R>>2]&255](c[Q>>2]|0,288,4)|0;if(!r){e=-4;K=148;break}m=Qr(s,p,257,13056,13184,fa,ba,l,da,r)|0;do if((m|0)==-3){c[ga>>2]=13312;l=-3;K=137}else if(!m){o=c[ba>>2]|0;if(!o)K=136;else{m=Qr(s+(p<<2)|0,n,0,13384,13504,ea,aa,l,da,r)|0;if((m|0)==-5){c[ga>>2]=13656;l=-3}else if((m|0)==-4)l=-4;else if((m|0)==-3){c[ga>>2]=13624;l=-3}else if((m|0)==0?(W=c[aa>>2]|0,!((W|0)==0&(q|0)!=0)):0){Cd[c[P>>2]&255](c[Q>>2]|0,r);p=W;break}else K=142;if((K|0)==142){c[ga>>2]=13688;l=-3}Cd[c[P>>2]&255](c[Q>>2]|0,r);K=145}}else if((m|0)==-4){l=-4;K=137}else K=136;while(0);if((K|0)==136){c[ga>>2]=13352;l=-3;K=137}if((K|0)==137){Cd[c[P>>2]&255](c[Q>>2]|0,r);K=145}if((K|0)==145){if((l|0)==-3){K=147;break}else if(l){e=-4;K=148;break}o=c[ba>>2]|0;p=c[aa>>2]|0}m=c[fa>>2]|0;n=c[ea>>2]|0;l=Hd[c[R>>2]&255](c[Q>>2]|0,1,28)|0;if(!l){K=151;break}c[l>>2]=0;a[l+16>>0]=o;a[l+17>>0]=p;c[l+20>>2]=m;c[l+24>>2]=n;c[H>>2]=l;Cd[c[P>>2]&255](c[Q>>2]|0,c[J>>2]|0);c[O>>2]=6}c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;y=c[B>>2]|0;m=c[I>>2]|0;if(h>>>0>>0)m=m+~h|0;else m=(c[G>>2]|0)-h|0;q=y+16|0;r=y+12|0;s=y+20|0;t=y+8|0;u=y+4|0;v=y+8|0;w=y+17|0;x=y+24|0;n=c[y>>2]|0;e:while(1){switch(n|0){case 5:{n=c[r>>2]|0;K=193;break}case 3:{p=c[r>>2]|0;K=179;break}case 0:{l=d[q>>0]|0;c[r>>2]=l;c[t>>2]=c[s>>2];c[y>>2]=1;K=161;break}case 1:{l=c[r>>2]|0;K=161;break}case 2:{l=c[v>>2]|0;if(g>>>0>>0){n=f;while(1){if(!j){f=n;K=177;break e}j=j+-1|0;f=n+1|0;k=(d[n>>0]|0)<>>0>>0){e=0;n=f}else{e=0;break}}}c[u>>2]=(c[u>>2]|0)+(c[12984+(l<<2)>>2]&k);p=d[w>>0]|0;c[r>>2]=p;c[v>>2]=c[x>>2];c[y>>2]=3;k=k>>>l;g=g-l|0;K=179;break}case 4:{l=c[v>>2]|0;if(g>>>0>>0){n=f;while(1){if(!j){f=n;K=191;break e}j=j+-1|0;f=n+1|0;k=(d[n>>0]|0)<>>0>>0){e=0;n=f}else{e=0;break}}}n=(c[r>>2]|0)+(c[12984+(l<<2)>>2]&k)|0;c[r>>2]=n;c[y>>2]=5;k=k>>>l;g=g-l|0;K=193;break}case 9:{K=242;break e}case 6:{do if(!m){if((h|0)==(c[G>>2]|0)?(Z=c[I>>2]|0,_=c[z>>2]|0,(Z|0)!=(_|0)):0){if(_>>>0>>0)m=Z+-1-_|0;else m=h-_|0;if(!m)h=_;else{h=_;break}}c[N>>2]=h;e=Pr(O,b,e)|0;h=c[N>>2]|0;n=c[I>>2]|0;if(h>>>0>>0){m=n+~h|0;l=c[G>>2]|0}else{l=c[G>>2]|0;m=l-h|0}do if((h|0)==(l|0)?($=c[z>>2]|0,(n|0)!=($|0)):0)if($>>>0>>0){m=n+-1-$|0;h=$;break}else{m=h-$|0;h=$;break}while(0);if(!m){K=234;break e}}while(0);a[h>>0]=c[v>>2];c[y>>2]=0;e=0;n=0;m=m+-1|0;h=h+1|0;continue e}case 8:{K=241;break e}case 7:{K=236;break e}default:{K=243;break e}}if((K|0)==161){if(g>>>0>>0){n=f;while(1){if(!j){f=n;K=164;break e}j=j+-1|0;f=n+1|0;k=(d[n>>0]|0)<>>0>>0){e=0;n=f}else{e=0;break}}}o=c[t>>2]|0;l=c[12984+(l<<2)>>2]&k;K=o+(l<<3)|0;n=d[K+1>>0]|0;k=k>>>n;g=g-n|0;K=a[K>>0]|0;n=K&255;if(!(K<<24>>24)){c[t>>2]=c[o+(l<<3)+4>>2];c[y>>2]=6;p=h;K=m;n=6;h=p;m=K;continue}if(n&16){c[t>>2]=n&15;c[u>>2]=c[o+(l<<3)+4>>2];c[y>>2]=2;p=h;K=m;n=2;h=p;m=K;continue}if(!(n&64)){c[r>>2]=n;c[t>>2]=o+((c[o+(l<<3)+4>>2]|0)+l<<3);p=h;K=m;n=1;h=p;m=K;continue}if(!(n&32)){K=173;break}c[y>>2]=7;p=h;K=m;n=7;h=p;m=K;continue}else if((K|0)==179){if(g>>>0

>>0){n=f;while(1){if(!j){f=n;K=182;break e}j=j+-1|0;f=n+1|0;k=(d[n>>0]|0)<>>0

>>0){e=0;n=f}else{e=0;break}}}o=c[t>>2]|0;l=c[12984+(p<<2)>>2]&k;n=o+(l<<3)|0;K=d[n+1>>0]|0;k=k>>>K;g=g-K|0;n=d[n>>0]|0;if(n&16){c[t>>2]=n&15;c[r>>2]=c[o+(l<<3)+4>>2];c[y>>2]=4;p=h;K=m;n=4;h=p;m=K;continue}if(n&64){K=187;break}c[r>>2]=n;c[t>>2]=o+((c[o+(l<<3)+4>>2]|0)+l<<3);p=h;K=m;n=3;h=p;m=K;continue}else if((K|0)==193){n=h+(0-n)|0;l=c[z>>2]|0;if(n>>>0>>0){o=(c[G>>2]|0)-l|0;do n=n+o|0;while(n>>>0>>0)}if(c[u>>2]|0)while(1){do if(!m){if((h|0)==(c[G>>2]|0)?(X=c[I>>2]|0,Y=c[z>>2]|0,(X|0)!=(Y|0)):0){if(Y>>>0>>0)m=X+-1-Y|0;else m=h-Y|0;if(!m)h=Y;else{e=Y;break}}c[N>>2]=h;m=Pr(O,b,e)|0;o=c[N>>2]|0;l=c[I>>2]|0;if(o>>>0>>0){h=l+~o|0;e=c[G>>2]|0}else{e=c[G>>2]|0;h=e-o|0}do if((o|0)==(e|0)){e=c[z>>2]|0;if((l|0)==(e|0)){e=o;break}if(e>>>0>>0){h=l+-1-e|0;break}else{h=o-e|0;break}}else e=o;while(0);if(!h){K=213;break e}else m=h}else e=h;while(0);l=n+1|0;h=e+1|0;a[e>>0]=a[n>>0]|0;m=m+-1|0;if((l|0)==(c[G>>2]|0))n=c[z>>2]|0;else n=l;K=(c[u>>2]|0)+-1|0;c[u>>2]=K;if(!K){e=0;break}else e=0}c[y>>2]=0;n=0;continue}}switch(K|0){case 164:{K=0;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=0;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,e)|0;break}case 173:{K=0;c[y>>2]=9;c[ga>>2]=286680;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,-3)|0;break}case 177:{K=0;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=0;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,e)|0;break}case 182:{K=0;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=0;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,e)|0;break}case 187:{K=0;c[y>>2]=9;c[ga>>2]=286712;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,-3)|0;break}case 191:{K=0;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=0;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,e)|0;break}case 213:{K=0;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=e;e=Pr(O,b,m)|0;break}case 234:{K=0;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,e)|0;break}case 236:{K=0;if(g>>>0>7){g=g+-8|0;j=j+1|0;f=f+-1|0}c[N>>2]=h;e=Pr(O,b,e)|0;h=c[N>>2]|0;if((c[I>>2]|0)==(h|0)){c[y>>2]=8;K=241;break}else{c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,e)|0;break}}case 242:{K=0;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,-3)|0;break}case 243:{K=0;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,-2)|0;break}}if((K|0)==241){K=0;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,1)|0}if((e|0)!=1){K=245;break}Cd[c[P>>2]&255](c[Q>>2]|0,c[B>>2]|0);f=c[b>>2]|0;j=c[ja>>2]|0;k=c[L>>2]|0;g=c[M>>2]|0;h=c[N>>2]|0;e=c[I>>2]|0;if(h>>>0>>0)l=e+~h|0;else l=(c[G>>2]|0)-h|0;if(c[A>>2]|0){K=251;break}c[O>>2]=0;e=0}switch(K|0){case 46:{K=0;c[L>>2]=j;c[M>>2]=g;c[ja>>2]=0;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,e)|0;break}case 51:{K=0;c[H>>2]=0;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,-4)|0;break}case 53:{K=0;c[O>>2]=9;c[ga>>2]=286424;c[L>>2]=k>>>3;c[M>>2]=g+-3;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,-3)|0;break}case 56:{K=0;c[L>>2]=j;c[M>>2]=g;c[ja>>2]=0;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,e)|0;break}case 58:{K=0;c[O>>2]=9;c[ga>>2]=286448;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,-3)|0;break}case 63:{K=0;c[L>>2]=j;c[M>>2]=g;c[ja>>2]=0;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,e)|0;break}case 80:{K=0;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,e)|0;break}case 85:{K=0;c[L>>2]=j;c[M>>2]=g;c[ja>>2]=0;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,e)|0;break}case 88:{K=0;c[O>>2]=9;c[ga>>2]=286480;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,-3)|0;break}case 90:{K=0;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,-4)|0;break}case 98:{K=0;c[L>>2]=j;c[M>>2]=g;c[ja>>2]=0;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,e)|0;break}case 104:{m=e;e=13768;K=105;break}case 115:{K=0;c[L>>2]=j;c[M>>2]=g;c[ja>>2]=0;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,e)|0;break}case 121:{K=0;c[L>>2]=j;c[M>>2]=g;c[ja>>2]=0;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,e)|0;break}case 124:{K=0;Cd[c[P>>2]&255](c[Q>>2]|0,c[J>>2]|0);c[O>>2]=9;c[ga>>2]=286552;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,-3)|0;break}case 147:{Cd[c[P>>2]&255](c[Q>>2]|0,c[J>>2]|0);c[O>>2]=9;e=-3;K=148;break}case 151:{K=0;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,-4)|0;break}case 245:{K=0;e=Pr(O,b,e)|0;break}case 251:{c[O>>2]=7;e=0;K=252;break}case 256:{K=0;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=e;e=Pr(O,b,-3)|0;break}case 257:{K=0;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=e;e=Pr(O,b,-2)|0;break}}do if((K|0)==105){c[ga>>2]=e;Cd[c[P>>2]&255](c[Q>>2]|0,m);K=107}else if((K|0)==148){K=0;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,e)|0}else if((K|0)==252){K=0;c[N>>2]=h;e=Pr(O,b,e)|0;h=c[N>>2]|0;if((c[I>>2]|0)==(h|0)){c[O>>2]=8;K=255;break}else{c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,e)|0;break}}while(0);if((K|0)==107){Cd[c[P>>2]&255](c[Q>>2]|0,c[J>>2]|0);c[O>>2]=9;e=-3;K=108}else if((K|0)==255){K=0;c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,1)|0}if((K|0)==108){c[L>>2]=k;c[M>>2]=g;c[ja>>2]=j;c[ka>>2]=f-(c[b>>2]|0)+(c[ka>>2]|0);c[b>>2]=f;c[N>>2]=h;e=Pr(O,b,e)|0}if(!e){e=ha;K=280;break a}else if((e|0)==-3){m=c[S>>2]|0;c[m>>2]=13;c[m+4>>2]=0;e=-3;continue a}if((e|0)!=1){K=280;break a}e=c[S>>2]|0;h=c[e+20>>2]|0;f=h+60|0;c[e+4>>2]=c[f>>2];e=c[h>>2]|0;if((e&-2|0)==4){Cd[c[P>>2]&255](c[Q>>2]|0,c[h+12>>2]|0);e=c[h>>2]|0}if((e|0)==6)Cd[c[P>>2]&255](c[Q>>2]|0,c[h+4>>2]|0);c[h>>2]=0;c[h+28>>2]=0;c[h+32>>2]=0;e=c[h+40>>2]|0;c[h+52>>2]=e;c[h+48>>2]=e;e=c[h+56>>2]|0;if(e){O=Hd[e&255](0,0,0)|0;c[f>>2]=O;c[ia>>2]=O}e=c[S>>2]|0;if(!(c[e+12>>2]|0)){c[e>>2]=8;f=e;e=ha;K=270;break}else{c[e>>2]=12;m=e;e=ha;continue a}}while(0);if((K|0)==270){h=c[ja>>2]|0;if(!h){K=280;break}h=h+-1|0;c[ja>>2]=h;c[ka>>2]=(c[ka>>2]|0)+1;e=c[b>>2]|0;c[b>>2]=e+1;c[f+8>>2]=(d[e>>0]|0)<<24;c[f>>2]=9;e=ha;K=272}if((K|0)==272){if(!h){K=280;break}h=h+-1|0;c[ja>>2]=h;c[ka>>2]=(c[ka>>2]|0)+1;K=c[b>>2]|0;c[b>>2]=K+1;e=f+8|0;c[e>>2]=(c[e>>2]|0)+((d[K>>0]|0)<<16);c[f>>2]=10;e=ha;K=274}if((K|0)==274){if(!h){K=280;break}h=h+-1|0;c[ja>>2]=h;c[ka>>2]=(c[ka>>2]|0)+1;O=c[b>>2]|0;c[b>>2]=O+1;e=f+8|0;c[e>>2]=(c[e>>2]|0)+((d[O>>0]|0)<<8);c[f>>2]=11;e=ha}if(!h){K=280;break}c[ja>>2]=h+-1;c[ka>>2]=(c[ka>>2]|0)+1;O=c[b>>2]|0;c[b>>2]=O+1;e=f+8|0;O=(c[e>>2]|0)+(d[O>>0]|0)|0;c[e>>2]=O;e=f+4|0;if((c[e>>2]|0)==(O|0)){e=f;K=279;break}c[f>>2]=13;c[ga>>2]=286768;c[e>>2]=5;m=f;e=ha}switch(K|0){case 21:{c[h>>2]=2;f=e;e=ha;K=23;break}case 22:{g=c[ja>>2]|0;K=23;break}case 25:{j=c[ja>>2]|0;K=26;break}case 28:{h=c[ja>>2]|0;K=29;break}case 31:{h=c[ja>>2]|0;break}case 34:{c[f>>2]=13;c[ga>>2]=291944;c[e+4>>2]=0;ja=-2;i=la;return ja|0}case 279:{c[e>>2]=12;ja=1;i=la;return ja|0}case 280:{ja=e;i=la;return ja|0}case 281:{ja=-3;i=la;return ja|0}case 282:{i=la;return e|0}}do if((K|0)==23)if(!g){ja=e;i=la;return ja|0}else{j=g+-1|0;c[ja>>2]=j;c[ka>>2]=(c[ka>>2]|0)+1;g=c[b>>2]|0;c[b>>2]=g+1;c[f+8>>2]=(d[g>>0]|0)<<24;c[h>>2]=3;g=h;e=ha;K=26;break}while(0);do if((K|0)==26)if(!j){ja=e;i=la;return ja|0}else{h=j+-1|0;c[ja>>2]=h;c[ka>>2]=(c[ka>>2]|0)+1;K=c[b>>2]|0;c[b>>2]=K+1;e=f+8|0;c[e>>2]=(c[e>>2]|0)+((d[K>>0]|0)<<16);c[g>>2]=4;e=ha;K=29;break}while(0);do if((K|0)==29)if(!h){ja=e;i=la;return ja|0}else{h=h+-1|0;c[ja>>2]=h;c[ka>>2]=(c[ka>>2]|0)+1;$=c[b>>2]|0;c[b>>2]=$+1;e=f+8|0;c[e>>2]=(c[e>>2]|0)+((d[$>>0]|0)<<8);c[g>>2]=5;e=ha;break}while(0);if(!h){ja=e;i=la;return ja|0}c[ja>>2]=h+-1;c[ka>>2]=(c[ka>>2]|0)+1;ja=c[b>>2]|0;c[b>>2]=ja+1;$=f+8|0;ja=(c[$>>2]|0)+(d[ja>>0]|0)|0;c[$>>2]=ja;c[ia>>2]=ja;c[g>>2]=6;ja=2;i=la;return ja|0}function Uj(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=c[b+12>>2]|0;o=n+4280|0;b=c[o>>2]|0;do if(b>>>0>d>>>0){b=b-d|0;g=n+4284|0;h=c[g>>2]|0;if(b>>>0<=(h-(n+184)|0)>>>0){c[g>>2]=h+(0-b);c[o>>2]=d;k=12;break}if(!(bh(c[n>>2]|0,0)|0)){c[n+16>>2]=0;c[n+36>>2]=0;c[n+40>>2]=0;a[n+44>>0]=0;c[n+48>>2]=0;c[n+104>>2]=0;c[n+64>>2]=9;c[n+12>>2]=0;c[n+4288>>2]=o;c[g>>2]=o;c[o>>2]=0;b=0;k=6;break}else{e=0;return e|0}}else k=6;while(0);if((k|0)==6)if(b>>>0>>0){h=d-b|0;i=n+4288|0;j=n+4284|0;m=c[j>>2]|0;g=(c[i>>2]|0)-m|0;g=g>>>0>>0?g:h;c[j>>2]=m+g;c[o>>2]=g+b;a:do if((h|0)!=(g|0)){d=n+12|0;g=h-g|0;while(1){b=g>>>0<4096?g:4096;if((Wi(d,0,b)|0)>>>0>>0){b=0;break}c[o>>2]=(c[o>>2]|0)+b;if((g|0)==(b|0))break a;else g=g-b|0}return b|0}while(0);if(!f){e=0;return e|0}else{m=i;l=j}}else k=12;do if((k|0)==12)if(!f){e=0;return e|0}else{m=n+4288|0;l=n+4284|0;break}while(0);k=n+12|0;j=n+184|0;h=f;d=c[m>>2]|0;i=c[l>>2]|0;b=0;while(1){g=d-i|0;g=g>>>0>>0?g:h;qfa(e+b|0,i|0,g|0)|0;b=g+b|0;c[l>>2]=(c[l>>2]|0)+g;c[o>>2]=(c[o>>2]|0)+g;if((h|0)==(g|0)){k=17;break}c[l>>2]=j;f=Wi(k,j,4096)|0;i=c[l>>2]|0;d=i+f|0;c[m>>2]=d;if(!f){k=17;break}else h=h-g|0}if((k|0)==17)return b|0;return 0}function Vj(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=b+12|0;h=c[g>>2]|0;if(!h)return;e=c[b+28>>2]|0;f=c[h+180>>2]|0;c[h+16>>2]=0;c[h+36>>2]=0;c[h+40>>2]=0;a[h+44>>0]=0;c[h+48>>2]=0;c[h+104>>2]=0;c[h+64>>2]=9;c[h+12>>2]=0;b=h+100|0;d=c[b>>2]|0;if((d|0)!=(h+112|0)){Ag(f,d);c[b>>2]=0}Ag(f,c[h+88>>2]|0);sfa(h|0,0,184)|0;Ag(e,h);c[g>>2]=0;return}function Wj(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=b+52|0;f=c[i>>2]|0;k=b+24|0;e=c[k>>2]|0;g=b+32|0;j=(a[g>>0]|0)==0;if(!((j?(e|0)<(c[b+28>>2]|0):0)?(c[b+56>>2]|0)>>>0<(c[b+60>>2]|0)>>>0:0)){h=b+60|0;if((c[b+56>>2]|0)>>>0>=(c[h>>2]|0)>>>0){f=f+1|0;c[i>>2]=f;if(f>>>0<(c[b+40>>2]|0)>>>0)e=(1<>2]|0)+1|0;c[h>>2]=e}if(!j){c[i>>2]=9;c[h>>2]=256;a[g>>0]=0;f=9}e=b+4|0;if(c[e>>2]|0){k=-1;return k|0}j=Sh(c[b+164>>2]|0,b+8|0,f)|0;g=b+36|0;c[g>>2]=(c[g>>2]|0)+j;i=c[i>>2]|0;c[e>>2]=j>>>0>>0&1;c[k>>2]=0;c[b+28>>2]=(j<<3|1)-i;if(!j){k=-1;return k|0}else e=0}c[k>>2]=e+f;g=e>>3;j=e&7;i=b+(g+1)+8|0;e=(d[b+g+8>>0]|0)>>>j;j=8-j|0;f=f-j|0;if(f>>>0>7){f=f+-8|0;h=j+8|0;g=b+(g+2)+8|0;e=d[i>>0]<>0]&(1<>2]|0;g=z<<1;h=a+12|0;c[h>>2]=Dg(f,4,0,g,0,D)|0;if(c[D>>2]|0){D=c[D>>2]|0;i=E;return D|0}A=a+8|0;c[A>>2]=Dg(f,28,0,z,0,D)|0;if(c[D>>2]|0){D=c[D>>2]|0;i=E;return D|0}c[a+24>>2]=Dg(f,16,0,g|1,0,D)|0;if(c[D>>2]|0){D=c[D>>2]|0;i=E;return D|0}c[a>>2]=z;y=a+16|0;c[y>>2]=(c[h>>2]|0)+(z<<2);x=a+4|0;c[x>>2]=0;c[a+20>>2]=0;c[a+28>>2]=0;s=(z|0)==0;if(!s){f=z;g=c[b+8>>2]|0;b=c[A>>2]|0;while(1){c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[b+16>>2]=c[g+8>>2];f=f+-1|0;if(!f)break;else{g=g+12|0;b=b+28|0}}}if((e|0)!=0?(j=c[e+8>>2]|0,k=c[e>>2]|0,c[a+32>>2]=e,(k|0)!=0):0){g=0;while(1){r=c[j>>2]|0;if(r){h=c[j+8>>2]|0;q=0;b=0;f=0;while(1){if(!b){p=h+1|0;b=128;f=d[h>>0]|0}else p=h;if(((b&f|0)!=0?(t=c[A>>2]|0,u=t+(q*28|0)|0,z>>>0>q>>>0):0)?(v=t+(q*28|0)+16|0,w=c[v>>2]|0,(w&4|0)==0):0){c[v>>2]=w|4;n=c[y>>2]|0;o=t+(q*28|0)+20|0;c[o>>2]=0;a:do if(g){e=c[u>>2]|0;a=(c[t+(q*28|0)+4>>2]|0)+e|0;l=g;m=n;while(1){h=c[m>>2]|0;F=c[h>>2]|0;if((a|0)>=(F|0)?((c[h+4>>2]|0)+F|0)>=(e|0):0)break;l=l+-1|0;if(!l)break a;else m=m+4|0}c[o>>2]=h}while(0);if(g>>>0>>0){F=g+1|0;c[x>>2]=F;c[n+(g<<2)>>2]=u;g=F}}q=q+1|0;if((q|0)==(r|0))break;else{h=p;b=b>>1}}}k=k+-1|0;if(!k)break;else j=j+16|0}}else g=0;if((g|0)==(z|0)|s){F=c[D>>2]|0;i=E;return F|0}else m=0;do{h=c[A>>2]|0;l=h+(m*28|0)|0;if(z>>>0>m>>>0?(B=h+(m*28|0)+16|0,C=c[B>>2]|0,(C&4|0)==0):0){c[B>>2]=C|4;b=c[y>>2]|0;a=h+(m*28|0)+20|0;c[a>>2]=0;b:do if(g){k=c[l>>2]|0;e=(c[h+(m*28|0)+4>>2]|0)+k|0;f=g;j=b;while(1){h=c[j>>2]|0;F=c[h>>2]|0;if((e|0)>=(F|0)?((c[h+4>>2]|0)+F|0)>=(k|0):0)break;f=f+-1|0;if(!f)break b;else j=j+4|0}c[a>>2]=h}while(0);if(g>>>0>>0){F=g+1|0;c[x>>2]=F;c[b+(g<<2)>>2]=l;g=F}}m=m+1|0}while((m|0)!=(z|0));F=c[D>>2]|0;i=E;return F|0}function Yj(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=b+200|0;i=b+204|0;if(!((c[k>>2]|0)==(d|0)?(c[i>>2]|0)==(f|0):0))l=3;if(((l|0)==3?(c[k>>2]=d,c[i>>2]=f,j=c[b+4>>2]|0,(j|0)!=0):0)?(h=qg(c[b+8>>2]|0,d)|0,m=b+12|0,c[m>>2]=h,c[b+16>>2]=h+32&-64,h=j+-1|0,(h|0)!=0):0){i=b+20|0;while(1){f=qg(c[i>>2]|0,d)|0;l=c[m>>2]|0;j=f-l|0;f=(((j|0)<0?0-j|0:j)|0)<128?l:f;c[i+4>>2]=f;c[i+8>>2]=f+32&-64;h=h+-1|0;if(!h)break;else i=i+12|0}}h=b+404|0;i=b+408|0;if((c[h>>2]|0)==(e|0)?(c[i>>2]|0)==(g|0):0)return 0;c[h>>2]=e;c[i>>2]=g;h=c[b+208>>2]|0;if((h|0)!=0?(n=qg(c[b+212>>2]|0,e)|0,o=b+216|0,c[o>>2]=n,c[b+220>>2]=n+32&-64,n=h+-1|0,(n|0)!=0):0){h=n;i=b+224|0;while(1){m=qg(c[i>>2]|0,e)|0;f=c[o>>2]|0;l=m-f|0;m=(((l|0)<0?0-l|0:l)|0)<128?f:m;c[i+4>>2]=m;c[i+8>>2]=m+32&-64;h=h+-1|0;if(!h)break;else i=i+12|0}}d=b+412|0;h=c[b+2476>>2]|0;if((e|0)>34359737)h=((h<<3|0)/125|0|0)>(e|0);else h=(e*125|0)<(h<<3|0);a[b+2492>>0]=h&1;h=c[b+2480>>2]|0;a:do if((h|0)>0){i=h;while(1){h=i+-1|0;if((qg(i,e)|0)<=32){h=i;break a}if((h|0)>0)i=h;else break}}while(0);c[b+2484>>2]=h;m=b+1960|0;n=b+928|0;l=b+1444|0;i=0;do{if((i|0)==1)k=n;else if(!i)k=d;else if((i|0)==2)k=l;else k=m;h=c[k>>2]|0;if(h){k=k+4|0;while(1){c[k+28>>2]=(qg(c[k+8>>2]|0,e)|0)+g;c[k+24>>2]=(qg(c[k+12>>2]|0,e)|0)+g;o=k+16|0;c[o>>2]=(qg(c[k>>2]|0,e)|0)+g;c[k+20>>2]=qg(c[k+4>>2]|0,e)|0;c[o>>2]=(c[o>>2]|0)+32&-64;h=h+-1|0;if(!h)break;else k=k+32|0}}i=i+1|0}while((i|0)!=4);h=c[d>>2]|0;if(h){f=b+1448|0;j=b+416|0;while(1){i=c[l>>2]|0;b:do if(i){k=f;while(1){g=(c[j>>2]|0)-(c[k>>2]|0)|0;if((qg((g|0)<0?0-g|0:g,e)|0)<64)break;i=i+-1|0;if(!i)break b;else k=k+32|0}c[j+28>>2]=c[k+28>>2];c[j+24>>2]=c[k+24>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2]}while(0);h=h+-1|0;if(!h)break;else j=j+32|0}}h=c[n>>2]|0;if(!h)return 0;f=b+1964|0;k=b+932|0;while(1){i=c[m>>2]|0;c:do if(i){j=f;while(1){b=(c[k>>2]|0)-(c[j>>2]|0)|0;if((qg((b|0)<0?0-b|0:b,e)|0)<64){i=j;break}i=i+-1|0;if(!i)break c;else j=j+32|0}c[k+28>>2]=c[i+28>>2];c[k+24>>2]=c[i+24>>2];c[k+16>>2]=c[i+16>>2];c[k+20>>2]=c[i+20>>2]}while(0);h=h+-1|0;if(!h)break;else k=k+32|0}return 0}function Zj(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;r=c[d+(e*204|0)+200>>2]|0;x=b+16|0;if(c[x>>2]&8)return;s=c[d+(e*204|0)+204>>2]|0;s=(qg(c[b>>2]|0,r)|0)+s|0;t=b+4|0;v=qg(c[t>>2]|0,r)|0;do if((e|0)==1)if(a[f+121>>0]|0){u=(a[f+123>>0]|0)!=0;m=b+12|0;c[m>>2]=v;p=c[b>>2]|0;i=(c[t>>2]|0)+p|0;q=a[d+2492>>0]|0;g=c[d+412>>2]|0;a:do if(!g){o=0;h=2;l=0}else{l=c[d+2488>>2]|0;k=0-l|0;h=g;j=d+416|0;while(1){g=i-(c[j+12>>2]|0)|0;if((g|0)<(k|0)){o=0;h=2;l=0;break a}if(((c[j+8>>2]|0)+l|0)>=(i|0))break;h=h+-1|0;if(!h){o=0;h=2;l=0;break a}else j=j+32|0}if(q<<24>>24==0?(g|0)>(c[d+2484>>2]|0):0){o=0;h=2;l=0;break}o=1;h=3;l=c[j+16>>2]|0}while(0);g=c[d+928>>2]|0;b:do if(!g){h=o;k=0}else{i=c[d+2488>>2]|0;k=0-i|0;n=g;j=d+(g+-1<<5)+932|0;while(1){g=(c[j+8>>2]|0)-p|0;if((g|0)<(k|0)){h=o;k=0;break b}if(((c[j+12>>2]|0)-i|0)<=(p|0))break;n=n+-1|0;if(!n){h=o;k=0;break b}else j=j+-32|0}if(q<<24>>24==0?(g|0)>=(c[d+2484>>2]|0):0){h=o;k=0;break}k=c[j+16>>2]|0}while(0);if((h|0)==1){g=l-v|0;c[b+8>>2]=g;if(u){k=g;h=1;w=48;break}else break}else if((h|0)==2){c[b+8>>2]=k;if(u){h=2;w=48;break}else break}else if((h|0)==3){g=b+8|0;c[g>>2]=k;c[m>>2]=l-k;if(!u)break;k=c[g>>2]|0;h=3;w=48;break}else{o=u;w=28;break}}else w=5;else if(!e)if(!(a[f+120>>0]|0))w=5;else{o=(a[f+122>>0]|0)!=0;m=b+12|0;c[m>>2]=v;h=0;l=0;w=28}else{m=b+12|0;c[m>>2]=v;h=0;l=0;o=0;w=28}while(0);if((w|0)==5){c[b+8>>2]=s;c[b+12>>2]=v;c[x>>2]=c[x>>2]|8;return}if((w|0)==28){g=c[b+20>>2]|0;if(!g)k=s;else{if(!(c[g+16>>2]&8))Zj(g,d,e,f);u=c[g+8>>2]|0;k=c[g+12>>2]>>1;k=u-(v>>1)+k+(qg((c[b>>2]|0)-((c[g+4>>2]>>1)+(c[g>>2]|0))+(c[t>>2]>>1)|0,r)|0)|0}n=b+8|0;c[n>>2]=k;c[m>>2]=v;do if(!(a[f+124>>0]|0)){j=v;g=k}else{if((v|0)<65){if((v|0)>31){j=64;g=k+(v>>1)&-64;break}g=k+32&-64;if((v|0)<=0){j=v;break}d=k+v|0;f=d+32&-64;e=g-k|0;d=f-d|0;j=v;g=(((e|0)<0?0-e|0:e)|0)>(((d|0)<0?0-d|0:d)|0)?f:g;break}g=c[d+(e*204|0)+12>>2]|0;f=v-g|0;if((((f|0)<0?0-f|0:f)|0)<40)if((g|0)<48){g=48;i=48;j=0}else w=40;else{g=v;w=40}if((w|0)==40){if((g|0)>=192){j=g+32&-64;g=k;break}i=g&63;j=g&-64;if(i>>>0<10){j=g;g=k;break}if(i>>>0<32){j=j|10;g=k;break}}j=i>>>0<54?j|54:g;g=k}while(0);f=g+32|0;v=(f&-64)-g|0;f=(f+j&-64)-g-j|0;g=((((v|0)<0?0-v|0:v)|0)>(((f|0)<0?0-f|0:f)|0)?f:v)+g|0;c[n>>2]=g;c[m>>2]=j;if(o){k=g;w=48}}do if((w|0)==48){j=b+8|0;g=c[m>>2]|0;if((g|0)<64)i=64;else i=g+32&-64;if((h|0)==2){c[m>>2]=i;break}else if((h|0)==3)break;else if((h|0)==1){c[j>>2]=l-i;c[m>>2]=i;break}else{c[m>>2]=i;h=i>>1;g=h+k|0;if(!(i&64))g=g+32&-64;else g=g&-64|32;c[j>>2]=g-h;c[m>>2]=i;break}}while(0);c[x>>2]=c[x>>2]|8;return}function _j(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=c[a>>2]|0;if(p){f=p;i=c[a+8>>2]|0;while(1){j=i+16|0;c[j>>2]=c[j>>2]&-5;c[i+24>>2]=-1;f=f+-1|0;if(!f)break;else i=i+28|0}}if(!b){c[a+4>>2]=0;return}k=a+8|0;j=a+12|0;m=0;h=0;f=0;i=0;while(1){if(!f){g=e+1|0;f=128;i=d[e>>0]|0}else g=e;if(((f&i|0)!=0?(n=c[k>>2]|0,l=n+(h*28|0)|0,n=n+(h*28|0)+16|0,o=c[n>>2]|0,(o&4|0)==0):0)?(c[n>>2]=o|4,m>>>0

>>0):0){c[(c[j>>2]|0)+(m<<2)>>2]=l;m=m+1|0}h=h+1|0;if((h|0)==(b|0))break;else{e=g;f=f>>1}}c[a+4>>2]=m;f=c[j>>2]|0;if((m|0)>1)k=1;else return;do{g=c[f+(k<<2)>>2]|0;h=c[g>>2]|0;l=k;do{e=l;l=l+-1|0;i=f+(l<<2)|0;j=c[i>>2]|0;if((c[j>>2]|0)<(h|0))break;c[f+(e<<2)>>2]=j;c[i>>2]=g}while((l|0)>0);k=k+1|0}while((k|0)!=(m|0));return}function $j(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;if(!f)return;p=0-h|0;q=(b|0)==0;o=(h|0)==2;n=o?128:256;o=o?256:128;while(1){m=c[e+28>>2]|0;k=e+16|0;l=c[k>>2]|0;a:do if(!(l&16)){i=a[e+20>>0]|0;if(!((i|0)==(h|0)|(i|0)==(p|0))){i=a[e+21>>0]|0;if((i|0)==(h|0)|(i|0)==(p|0)){r=i;s=6}}else{r=i;s=6}if((s|0)==6?(s=0,(r|0)!=0):0)if((r|0)==(h|0)){if(q)break;else j=0;while(1){i=c[d+(j<<2)>>2]|0;t=m-(c[i>>2]|0)|0;j=j+1|0;if((t|0)<(g|0)&(0-t|0)<(g|0))break;if(j>>>0>=b>>>0)break a}c[k>>2]=l|528;c[e+24>>2]=i;break}else{if((r|0)!=(p|0)|q)break;else j=0;while(1){i=c[d+(j<<2)>>2]|0;t=m-(c[i>>2]|0)-(c[i+4>>2]|0)|0;j=j+1|0;if((t|0)<(g|0)&(0-t|0)<(g|0))break;if(j>>>0>=b>>>0)break a}c[k>>2]=l|1040;c[e+24>>2]=i;break}if(l&64){b:do if(!(l&n)){if(!((l&o|0)==0|q)){j=0;while(1){i=c[d+(j<<2)>>2]|0;t=m-(c[i>>2]|0)-(c[i+4>>2]|0)|0;j=j+1|0;if((t|0)<(g|0)&(0-t|0)<(g|0))break;if(j>>>0>=b>>>0)break b}c[e+24>>2]=i;c[k>>2]=l|1040}}else if(!q){j=0;while(1){i=c[d+(j<<2)>>2]|0;t=m-(c[i>>2]|0)|0;j=j+1|0;if((t|0)<(g|0)&(0-t|0)<(g|0))break;if(j>>>0>=b>>>0)break b}c[e+24>>2]=i;c[k>>2]=l|528}while(0);k=e+24|0;if(!((c[k>>2]|0)!=0|q)){j=0;while(1){i=c[d+(j<<2)>>2]|0;t=c[i>>2]|0;if((m|0)>=(t|0)?(m|0)<=((c[i+4>>2]|0)+t|0):0)break;j=j+1|0;if(j>>>0>=b>>>0)break a}c[k>>2]=i}}}while(0);f=f+-1|0;if(!f)break;else e=e+40|0}return}function ak(a,b){a=a|0;b=b|0;return c[(c[a+384>>2]|0)+(b<<2)>>2]|0}function bk(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=c[(c[a+384>>2]|0)+(d<<2)>>2]|0;g=a+244|0;h=a+256|0;d=c[h>>2]|0;if(d){a=d;a=qg(f,a)|0;return a|0}e=b[a+296>>1]|0;if(!(e<<16>>16)){a=c[g>>2]|0;c[h>>2]=a;a=qg(f,a)|0;return a|0}d=b[a+294>>1]|0;if(!(d<<16>>16)){a=c[a+248>>2]|0;c[h>>2]=a;a=qg(f,a)|0;return a|0}else{j=d<<16>>16;k=c[g>>2]|0;i=(k|0)<0?0-k|0:k;g=d<<16>>16<0?0-j|0:j;d=da(i&65535,g)|0;g=da(i>>>16,g)|0;i=d+(g<<16|8192)|0;i=(g>>>16)+(i>>>0>>0&1)<<18|i>>>14;d=c[a+248>>2]|0;g=e<<16>>16;a=(d|0)<0?0-d|0:d;l=e<<16>>16<0?0-g|0:g;e=da(a&65535,l)|0;l=da(a>>>16,l)|0;a=e+(l<<16|8192)|0;a=(l>>>16)+(a>>>0>>0&1)<<18|a>>>14;a=mg((k^j|0)>-1?i:0-i|0,(d^g|0)>-1?a:0-a|0)|0;c[h>>2]=a;a=qg(f,a)|0;return a|0}return 0}function ck(a,b,d){a=a|0;b=b|0;d=d|0;c[(c[a+384>>2]|0)+(b<<2)>>2]=d;return}function dk(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;h=a+244|0;i=a+256|0;f=c[i>>2]|0;do if(!f){f=b[a+296>>1]|0;if(!(f<<16>>16)){f=c[h>>2]|0;c[i>>2]=f;break}g=b[a+294>>1]|0;if(!(g<<16>>16)){f=c[a+248>>2]|0;c[i>>2]=f;break}else{k=g<<16>>16;l=c[h>>2]|0;j=(l|0)<0?0-l|0:l;h=g<<16>>16<0?0-k|0:k;g=da(j&65535,h)|0;h=da(j>>>16,h)|0;j=g+(h<<16|8192)|0;j=(h>>>16)+(j>>>0>>0&1)<<18|j>>>14;g=c[a+248>>2]|0;h=f<<16>>16;o=(g|0)<0?0-g|0:g;n=f<<16>>16<0?0-h|0:h;m=da(o&65535,n)|0;n=da(o>>>16,n)|0;f=m+(n<<16|8192)|0;f=(n>>>16)+(f>>>0>>0&1)<<18|f>>>14;f=mg((l^k|0)>-1?j:0-j|0,(g^h|0)>-1?f:0-f|0)|0;c[i>>2]=f;break}}while(0);o=rg(e,f)|0;c[(c[a+384>>2]|0)+(d<<2)>>2]=o;return}function ek(a,b,d){a=a|0;b=b|0;d=d|0;b=(c[a+384>>2]|0)+(b<<2)|0;c[b>>2]=(c[b>>2]|0)+d;return}function fk(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;h=a+244|0;i=a+256|0;f=c[i>>2]|0;do if(!f){f=b[a+296>>1]|0;if(!(f<<16>>16)){f=c[h>>2]|0;c[i>>2]=f;break}g=b[a+294>>1]|0;if(!(g<<16>>16)){f=c[a+248>>2]|0;c[i>>2]=f;break}else{k=g<<16>>16;l=c[h>>2]|0;j=(l|0)<0?0-l|0:l;h=g<<16>>16<0?0-k|0:k;g=da(j&65535,h)|0;h=da(j>>>16,h)|0;j=g+(h<<16|8192)|0;j=(h>>>16)+(j>>>0>>0&1)<<18|j>>>14;g=c[a+248>>2]|0;h=f<<16>>16;o=(g|0)<0?0-g|0:g;n=f<<16>>16<0?0-h|0:h;m=da(o&65535,n)|0;n=da(o>>>16,n)|0;f=m+(n<<16|8192)|0;f=(n>>>16)+(f>>>0>>0&1)<<18|f>>>14;f=mg((l^k|0)>-1?j:0-j|0,(g^h|0)>-1?f:0-f|0)|0;c[i>>2]=f;break}}while(0);n=rg(e,f)|0;o=(c[a+384>>2]|0)+(d<<2)|0;c[o>>2]=(c[o>>2]|0)+n;return}function gk(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=b[a+298>>1]|0;e=h<<16>>16;h=h<<16>>16==16384;do if(!h){f=b[a+300>>1]|0;d=b[a+296>>1]|0;if(f<<16>>16==16384){g=d<<16>>16;c[a+564>>2]=g;d=b[a+294>>1]|0;break}else{i=b[a+294>>1]|0;g=(da(d<<16>>16,f<<16>>16)|0)+(da(i<<16>>16,e)|0)>>14;c[a+564>>2]=g;d=i;break}}else{d=b[a+294>>1]|0;g=d<<16>>16;c[a+564>>2]=g}while(0);do if(d<<16>>16!=16384){d=a+572|0;if((b[a+296>>1]|0)==16384){c[d>>2]=85;break}else{c[d>>2]=86;break}}else c[a+572>>2]=84;while(0);do if((b[a+290>>1]|0)!=16384){d=a+576|0;if((b[a+292>>1]|0)==16384){c[d>>2]=85;break}else{c[d>>2]=87;break}}else c[a+576>>2]=84;while(0);d=a+584|0;c[d>>2]=12;e=a+588|0;c[e>>2]=13;f=a+564|0;do if((g|0)==16384){if(h){c[d>>2]=14;c[e>>2]=15;break}if((b[a+300>>1]|0)==16384){c[d>>2]=16;c[e>>2]=17}}while(0);if((((g|0)<0?0-g|0:g)|0)>=1024){i=a+256|0;c[i>>2]=0;return}c[f>>2]=16384;i=a+256|0;c[i>>2]=0;return}function hk(a,b,c){a=a|0;b=b|0;c=c|0;if((b|0)>-1){a=c+b|0;a=(b|0)!=0&(a|0)<0?0:a;return a|0}else{a=b-c|0;a=(a|0)>0?0:a;return a|0}return 0}function ik(a,b,c){a=a|0;b=b|0;c=c|0;if((b|0)>-1){a=b+32+c|0;return ((b|0)!=0&(a|0)>0?a&-64:0)|0}else{a=0-(32-b+c&-64)|0;return ((a|0)>0?0:a)|0}return 0}function jk(a,b,c){a=a|0;b=b|0;c=c|0;if((b|0)>-1){a=b+63+c|0;return ((b|0)!=0&(a|0)>0?a&-64:0)|0}else{a=0-(63-b+c&-64)|0;return ((a|0)>0?0:a)|0}return 0}function kk(a,b,c){a=a|0;b=b|0;c=c|0;if((b|0)>-1){a=c+b|0;return ((b|0)!=0&(a|0)>0?a&-64:0)|0}else{a=0-(c-b&-64)|0;return ((a|0)>0?0:a)|0}return 0}function lk(a,b,c){a=a|0;b=b|0;c=c|0;if((b|0)>-1){a=c+b&-64|32;a=(b|0)!=0&(a|0)<0?0:a;return a|0}else{a=0-(c-b&-64|32)|0;a=(a|0)>0?0:a;return a|0}return 0}function mk(a,b,c){a=a|0;b=b|0;c=c|0;if((b|0)>-1){a=b+16+c|0;return ((b|0)!=0&(a|0)>0?a&-32:0)|0}else{a=0-(16-b+c&-32)|0;return ((a|0)>0?0:a)|0}return 0}function nk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a+480>>2]|0;f=c[a+484>>2]|0;a=c[a+476>>2]|0;if((b|0)>-1){f=d+b-e+f&0-a;b=((b|0)!=0&(f|0)<0?0:f)+e|0;return b|0}else{b=0-(d-b+f-e&0-a)|0;b=((b|0)>0?0:b)-e|0;return b|0}return 0}function ok(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a+480>>2]|0;f=c[a+484>>2]|0;a=c[a+476>>2]|0;if((b|0)>-1){f=d+b-e+f|0;f=f-((f|0)%(a|0)|0)|0;b=((b|0)!=0&(f|0)<0?0:f)+e|0;return b|0}else{b=d-b+f-e|0;b=((b|0)%(a|0)|0)-b|0;b=((b|0)>0?0:b)-e|0;return b|0}return 0}function pk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(b>>>0>d>>>0)return;r=c[a+12>>2]|0;if(!(r>>>0>e>>>0&r>>>0>f>>>0))return;r=a+8|0;p=c[r>>2]|0;q=c[p+(e<<3)>>2]|0;p=c[p+(f<<3)>>2]|0;m=(q|0)>(p|0);g=m?q:p;q=m?p:q;p=m?e:f;m=m?f:e;f=c[a>>2]|0;n=c[f+(m<<3)>>2]|0;k=c[f+(p<<3)>>2]|0;l=a+4|0;h=c[l>>2]|0;m=c[h+(m<<3)>>2]|0;o=m-n|0;e=c[h+(p<<3)>>2]|0;p=e-k|0;if((g|0)==(q|0)){do{a=c[f+(b<<3)>>2]|0;c[h+(b<<3)>>2]=((a|0)>(n|0)?p:o)+a;b=b+1|0}while(b>>>0<=d>>>0);return}j=e-m|0;i=g-q|0;g=f;e=0;f=0;while(1){g=c[g+(b<<3)>>2]|0;do if((g|0)>(n|0)){if((g|0)>=(k|0)){g=g+p|0;break}if(!(f<<24>>24)){e=rg(j,i)|0;f=1}g=(qg((c[(c[r>>2]|0)+(b<<3)>>2]|0)-q|0,e)|0)+m|0;h=c[l>>2]|0}else g=g+o|0;while(0);c[h+(b<<3)>>2]=g;b=b+1|0;if(b>>>0>d>>>0)break;g=c[a>>2]|0}return}function qk(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+16|0;n=s;if(!(a[d+368>>0]&1)){m=d+72|0;l=c[m>>2]|0;m=c[m+4>>2]|0;p=c[d+80>>2]|0;q=c[d+84>>2]|0;r=c[d+88>>2]|0;j=d+92|0;c[n+0>>2]=c[j+0>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];j=d+288|0}else{m=d+36|0;l=c[m>>2]|0;m=c[m+4>>2]|0;p=c[d+44>>2]|0;q=c[d+48>>2]|0;r=c[d+52>>2]|0;j=d+56|0;c[n+0>>2]=c[j+0>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];j=d+286|0}o=p&65535;k=b[j>>1]|0;j=k&65535;if((k&65535)<(o&65535)){t=g;c[t>>2]=l;c[t+4>>2]=m;b[g+8>>1]=o;b[g+10>>1]=p>>>16;c[g+12>>2]=q;c[g+16>>2]=r;p=g+20|0;c[p+0>>2]=c[n+0>>2];c[p+4>>2]=c[n+4>>2];c[p+8>>2]=c[n+8>>2];c[p+12>>2]=c[n+12>>2];b[h>>1]=k;q=Hd[c[d+572>>2]&255](d,(c[r+(j<<3)>>2]|0)-(c[q+(j<<3)>>2]|0)|0,(c[r+(j<<3)+4>>2]|0)-(c[q+(j<<3)+4>>2]|0)|0)|0;r=d+564|0;c[e>>2]=og(q,b[d+298>>1]|0,c[r>>2]|0)|0;c[f>>2]=og(q,b[d+300>>1]|0,c[r>>2]|0)|0;r=0;i=s;return r|0}if(a[d+561>>0]|0)c[d+12>>2]=134;b[h>>1]=0;t=1;i=s;return t|0}function rk(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;n=f+28|0;a:do if(g){o=f+24|0;v=f+36|0;w=f+44|0;x=f+368|0;y=f+332|0;z=f+252|0;A=f+256|0;B=f+296|0;C=f+244|0;p=f+294|0;q=f+248|0;r=f+334|0;s=f+584|0;t=f+561|0;u=f+12|0;D=1;while(1){h=c[n>>2]|0;if((h|0)<2)break;m=h+-2|0;c[n>>2]=m;i=c[o>>2]|0;j=c[i+(h+-1<<2)>>2]|0;l=j&65535;m=c[i+(m<<2)>>2]|0;if((j&65535)>>>0<(e[w>>1]|0)>>>0){h=m>>>4&15;i=d[x>>0]|0;if((i|0)==114)h=h|32;else if((i|0)==113)h=h|16;j=(b[y>>1]|0)+h|0;k=e[z>>1]|0;h=c[A>>2]|0;do if(!h){h=b[B>>1]|0;if(!(h<<16>>16)){h=c[C>>2]|0;c[A>>2]=h;break}i=b[p>>1]|0;if(!(i<<16>>16)){h=c[q>>2]|0;c[A>>2]=h;break}else{G=i<<16>>16;H=c[C>>2]|0;F=(H|0)<0?0-H|0:H;i=i<<16>>16<0?0-G|0:G;E=da(F&65535,i)|0;i=da(F>>>16,i)|0;F=E+(i<<16|8192)|0;F=(i>>>16)+(F>>>0>>0&1)<<18|F>>>14;E=c[q>>2]|0;i=h<<16>>16;K=(E|0)<0?0-E|0:E;J=h<<16>>16<0?0-i|0:i;I=da(K&65535,J)|0;J=da(K>>>16,J)|0;h=I+(J<<16|8192)|0;h=(J>>>16)+(h>>>0>>0&1)<<18|h>>>14;h=mg((H^G|0)>-1?F:0-F|0,(E^i|0)>-1?h:0-h|0)|0;c[A>>2]=h;break}}while(0);if((qg(k,h)|0)==(j|0)){J=m&15;K=J+-8|0;Yd[c[s>>2]&63](f,v,l,(((K|0)>-1?J+-7|0:K)<<6|0)/(1<>1]|0)|0)}}else if(a[t>>0]|0)c[u>>2]=134;D=D+1|0;if(D>>>0>g>>>0)break a}if(a[t>>0]|0)c[u>>2]=129;c[n>>2]=0;J=0;K=f+32|0;c[K>>2]=J;return}while(0);J=c[n>>2]|0;K=f+32|0;c[K>>2]=J;return}function sk(a,b,d,e){a=a|0;b=+b;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;k=l;j=l+16|0;c[j+0>>2]=c[23788];c[j+4>>2]=c[23789];c[j+8>>2]=c[23790];c[j+12>>2]=c[23791];if(!d)Ra(95168,94496,74,95176);if(!(b!=0.0))Ra(95200,94496,75,95176);f=Bi(d)|0;if(f){d=c[p>>2]|0;e=c[93764+(f<<3)>>2]|0;c[k>>2]=c[93760+(f<<3)>>2];c[k+4>>2]=e;Uc(d|0,94800,k|0)|0;d=0;i=l;return d|0}f=c[a+8>>2]|0;if(!f){g=_g(c[d>>2]|0,c[a+12>>2]|0,0,e)|0;h=10}else if((f|0)==1){g=ah(c[d>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0,0,e)|0;h=10}if((h|0)==10?(g|0)!=0:0){e=c[p>>2]|0;h=c[93760+(g<<3)>>2]|0;a=c[93764+(g<<3)>>2]|0;c[k>>2]=99;c[k+4>>2]=h;c[k+8>>2]=a;Uc(e|0,94760,k|0)|0;Ci(c[d>>2]|0)|0;d=0;i=l;return d|0}f=oh(c[e>>2]|0,1970170211)|0;if(f){a=c[p>>2]|0;h=c[93760+(f<<3)>>2]|0;g=c[93764+(f<<3)>>2]|0;c[k>>2]=108;c[k+4>>2]=h;c[k+8>>2]=g;Uc(a|0,94760,k|0)|0;dh(c[e>>2]|0)|0;Ci(c[d>>2]|0)|0;d=0;i=l;return d|0}f=mh(c[e>>2]|0,~~(b*64.0),0,4608,72)|0;if(!f){Vg(c[e>>2]|0,j,0);d=1;i=l;return d|0}else{a=c[p>>2]|0;h=c[93760+(f<<3)>>2]|0;g=c[93764+(f<<3)>>2]|0;c[k>>2]=119;c[k+4>>2]=h;c[k+8>>2]=g;Uc(a|0,94760,k|0)|0;dh(c[e>>2]|0)|0;Ci(c[d>>2]|0)|0;d=0;i=l;return d|0}return 0}function tk(d){d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0,r=0;m=i;i=i+16|0;l=m+4|0;k=m;if(!(c[d+4>>2]|0))Ra(94904,94496,264,94968);j=d+20|0;if(!(+g[j>>2]>0.0))Ra(94992,94496,265,94968);e=c[d+8>>2]|0;if((e|0)==1){if(!(c[d+12>>2]|0))Ra(95008,94496,268,94968);if(!(c[d+16>>2]|0))Ra(95008,94496,268,94968)}else if(!((e|0)==0?(c[d+12>>2]|0)!=0:0))Ra(95008,94496,268,94968);c[d>>2]=jj(4)|0;e=d+52|0;g[e>>2]=0.0;f=d+60|0;g[f>>2]=0.0;h=d+64|0;g[h>>2]=0.0;c[d+28>>2]=0;g[d+32>>2]=0.0;c[d+24>>2]=1;c[d+40>>2]=1;c[d+36>>2]=1;a[d+44>>0]=16;a[d+45>>0]=64;a[d+46>>0]=112;a[d+47>>0]=64;a[d+48>>0]=16;if(!(sk(d,+g[j>>2]*100.0,l,k)|0)){d=-1;i=m;return d|0}k=c[k>>2]|0;o=+g[j>>2];n=+Mea(o*(+(b[k+80>>1]|0)*.000244140625));g[d+68>>2]=n>-2.0?-2.0:n;o=+Mea(o*(+(b[k+82>>1]|0)*.000244140625));g[d+72>>2]=o<1.0?1.0:o;r=c[k+88>>2]|0;q=c[r+28>>2]|0;j=c[r+32>>2]|0;o=+(c[r+24>>2]>>6|0)/100.0;g[f>>2]=o;n=+(q>>6|0)/100.0;g[h>>2]=n;p=+(j>>6|0)/100.0;g[e>>2]=p;g[d+56>>2]=p-o+n;dh(k)|0;Ci(c[l>>2]|0)|0;ij(d,-1)|0;d=0;i=m;return d|0}function uk(a,b){a=a|0;b=b|0;c[a+108>>2]=b;c[a+100>>2]=c[b+28>>2];c[a+4>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+8>>2]=c[b+16>>2];c[a+16>>2]=c[b+20>>2];return 0}function vk(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0;i=$r(b,d)|0;if(i)return i|0;g=c[b+24>>2]|0;f=c[b+28>>2]|0;h=f+(g*40|0)|0;if((g|0)<=0)return i|0;g=c[d+8>>2]|0;d=c[d+4>>2]|0;while(1){c[d>>2]=c[f+16>>2];c[d+4>>2]=c[f+20>>2];b=e[f>>1]|0;do if(!(b&1))if(!(b&2)){a[g>>0]=1;break}else{a[g>>0]=2;break}else a[g>>0]=0;while(0);f=f+40|0;if(f>>>0>=h>>>0)break;else{g=g+1|0;d=d+8|0}}return i|0}function wk(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=i;i=i+1584|0;U=W+1456|0;T=W;r=W+1452|0;V=c[g+92>>2]|0;S=f+40|0;c[S>>2]=e[g+68>>1];if(oh(g,1970170211)|0){ph(g,V)|0;i=W;return 0}h=c[g+100>>2]|0;l=U+0|0;j=l+120|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(j|0));c[U>>2]=h;n=f+52|0;c[n>>2]=0;o=f+756|0;c[o>>2]=0;h=Zg(g,c[(c[f>>2]|0)+16>>2]|0)|0;a:do if((((h|0)!=0?(kg(g,h,1)|0)==0:0)?(k=c[g+84>>2]|0,(b[k+110>>1]|0)>=1):0)?(sfa(T|0,0,1452)|0,p=T+40|0,c[p>>2]=c[S>>2],c[T+8>>2]=65536,c[T+12>>2]=65536,c[T+16>>2]=0,c[T+20>>2]=0,c[T+4>>2]=g,c[T+24>>2]=0,c[T+28>>2]=0,c[U+108>>2]=T,c[U+100>>2]=0,($r(U,k+108|0)|0)==0):0){m=0;do{c[r>>2]=0;if(as(U,m)|0)break a;bs(U,m);l=c[U+(m*28|0)+52>>2]|0;M=c[U+(m*28|0)+44>>2]|0;k=l+(M*48|0)|0;if((M|0)>0){h=0;do{j=c[l+20>>2]|0;if(((j|0)!=0?(j>>>0>l>>>0?(c[j+20>>2]|0)==(l|0):0):0)?(q=(b[l+2>>1]|0)-(b[j+2>>1]|0)|0,h>>>0<16):0){M=h+1|0;c[r>>2]=M;c[f+(m*704|0)+(h*12|0)+56>>2]=(q|0)<0?0-q|0:q;h=M}l=l+48|0}while(l>>>0>>0)}cs(r,f+(m*704|0)+56|0,((c[p>>2]|0)>>>0)/100|0);c[f+(m*704|0)+52>>2]=c[r>>2];m=m+1|0}while((m|0)<2)}while(0);if(!(c[n>>2]|0))h=((c[S>>2]|0)*50|0)/2048|0;else h=c[f+56>>2]|0;c[f+248>>2]=(h|0)/5|0;c[f+252>>2]=h;a[f+256>>0]=0;if(!(c[o>>2]|0))h=((c[S>>2]|0)*50|0)/2048|0;else h=c[f+760>>2]|0;c[f+952>>2]=(h|0)/5|0;c[f+956>>2]=h;a[f+960>>0]=0;ds(U);l=1816+(c[(c[f>>2]|0)+4>>2]<<3)|0;h=c[l>>2]|0;if((h|0)!=385){L=f+964|0;M=g+84|0;p=0;q=0;while(1){j=1424+h|0;h=a[j>>0]|0;b:do if(!(h<<24>>24)){k=0;n=0;u=p;t=q}else{J=l+4|0;k=0;K=0;n=q;while(1){I=k;G=p;H=n;c:while(1){while(1){q=j+1|0;k=h&255;if(h<<24>>24<0){do if((h&255)>=224)if((h&255)<240){h=k&15;p=2;k=q;break}else{h=k&7;p=3;k=q;break}else{h=k&31;p=1;k=q}while(0);while(1){j=j+2|0;h=d[k>>0]&63|h<<6;p=p+-1|0;if(!p)break;else{F=k;k=j;j=F}}}else{h=k;j=q}h=Zg(g,h)|0;if(((h|0)!=0?(F=kg(g,h,1)|0,R=c[M>>2]|0,N=c[R+108>>2]|0,O=N&65535,P=c[R+112>>2]|0,Q=c[R+116>>2]|0,R=c[R+120>>2]|0,(F|0)==0):0)?(N>>>16&65535)<<16>>16>=1:0){if(O<<16>>16<=0){h=0;p=G;q=H;break}r=N<<16>>16;k=0;m=0;o=-1;h=0;n=0;t=0;while(1){s=b[R+(t<<1)>>1]|0;if((s|0)>(n|0)){p=(n|0)>(s|0);do if(!(b[J>>1]&1)){if(p){p=o;break}else{p=o;q=n}while(1){F=c[P+(q<<3)+4>>2]|0;E=(p|0)<0|(F|0)<(h|0);p=E?q:p;h=E?F:h;if((q|0)<(s|0))q=q+1|0;else break}}else{if(p){p=o;break}else{p=o;q=n}while(1){F=c[P+(q<<3)+4>>2]|0;E=(p|0)<0|(F|0)>(h|0);p=E?q:p;h=E?F:h;if((q|0)<(s|0))q=q+1|0;else break}}while(0);q=(p|0)==(o|0);k=q?k:n;q=q?m:s}else{q=m;p=o}t=t+1|0;if((t|0)==(r|0)){x=k;y=q;v=p;break}else{m=q;o=p;n=s+1|0}}if((v|0)<=-1){p=G;q=H;break}w=c[P+(v<<3)>>2]|0;q=(a[Q+v>>0]&3)==1?v:-1;p=q;n=v;while(1){m=n;n=(n|0)>(x|0)?n+-1|0:y;k=(c[P+(n<<3)+4>>2]|0)-h|0;k=(k|0)<0?0-k|0:k;if((k|0)>5?(F=(c[P+(n<<3)>>2]|0)-w|0,(((F|0)<0?0-F|0:F)|0)<=(k*20|0)):0){k=q;break}if((a[Q+n>>0]&3)==1){p=n;k=(q|0)<0?n:q}else k=q;if((n|0)==(v|0)){m=v;break}else q=k}o=v;while(1){r=o;o=(o|0)<(y|0)?o+1|0:x;n=P+(o<<3)|0;q=(c[P+(o<<3)+4>>2]|0)-h|0;q=(q|0)<0?0-q|0:q;if((q|0)>5?(F=(c[n>>2]|0)-w|0,(((F|0)<0?0-F|0:F)|0)<=(q*20|0)):0)break;if((a[Q+o>>0]&3)==1){p=(p|0)<0?o:p;k=o}if((o|0)==(v|0)){r=v;break}}if(!(b[J>>1]&4)){v=P;u=Q;s=p;o=m;p=G;q=H;z=81;break}t=c[S>>2]|0;u=(t>>>0)/25|0;F=(c[P+(r<<3)>>2]|0)-(c[P+(m<<3)>>2]|0)|0;if((((F|0)<0?0-F|0:F)|0)>=(u|0)){v=P;u=Q;s=p;o=m;p=G;q=H;z=81;break}if((2-m+r|0)>(y-x|0)){v=P;u=Q;s=p;o=m;p=G;q=H;z=81;break}else o=v;do{o=(o|0)>(x|0)?o+-1|0:y;s=c[P+(o<<3)>>2]|0;q=(o|0)==(v|0)}while(!((s|0)!=(w|0)|q));if(!q){D=n;E=P;F=Q;q=w;C=x;B=y;A=p;z=65;break}}h=a[j>>0]|0;if(!(h<<24>>24)){k=I;n=K;u=G;t=H;break b}}d:do if((z|0)==65){y=t>>>2;w=(s|0)<(q|0);n=r;o=0;z=r;p=G;q=H;e:while(1){if(!(o<<24>>24)){q=(a[F+z>>0]&3)==1?z:-1;x=z;o=1;p=q}else x=n;z=(z|0)<(B|0)?z+1|0:C;s=E+(x<<3)|0;t=c[E+(x<<3)+4>>2]|0;H=h-t|0;do if((((H|0)<0?0-H|0:H)|0)<=(y|0)){v=E+(z<<3)|0;n=(c[E+(z<<3)+4>>2]|0)-t|0;n=(n|0)<0?0-n|0:n;if((n|0)>5?(H=(c[v>>2]|0)-(c[s>>2]|0)|0,(((H|0)<0?0-H|0:H)|0)<=(n*20|0)):0){o=0;break}if((a[F+z>>0]&3)==1){p=(p|0)<0?z:p;q=z}s=c[s>>2]|0;G=c[v>>2]|0;H=G-s|0;if(!((G|0)>(s|0)^w)?(((H|0)<0?0-H|0:H)|0)>=(u|0):0){h=t;r=s;t=x;k=z;break e}}else o=0;while(0);if((z|0)==(m|0)){v=E;u=F;s=A;o=m;z=81;break d}else n=x}o=n*20|0;while(1){n=(k|0)<(B|0)?k+1|0:C;H=(c[E+(n<<3)+4>>2]|0)-h|0;if((((H|0)<0?0-H|0:H)|0)>5?(H=(c[D>>2]|0)-r|0,(((H|0)<0?0-H|0:H)|0)<=(o|0)):0)break;p=((p|0)<0?(a[F+n>>0]&3)==1:0)?n:p;if((n|0)==(m|0)){v=E;u=F;s=p;k=m;o=t;r=m;q=m;z=81;break d}else{k=n;q=n}}v=E;u=F;s=p;k=q;o=t;r=n+-1|0;z=81}while(0);do if((z|0)==81){z=0;if((k|s|0)>-1?(H=(c[v+(k<<3)>>2]|0)-(c[v+(s<<3)>>2]|0)|0,((H|0)<0?0-H|0:H)>>>0>(c[S>>2]|0)>>>3>>>0):0)break;if((a[u+o>>0]&3)!=1){k=I;break c}if((a[u+r>>0]&3)!=1){k=I;break c}}while(0);k=I+1|0;c[U+(I<<2)>>2]=h;h=a[j>>0]|0;if(!(h<<24>>24)){n=K;u=p;t=q;break b}else{I=k;G=p;H=q}}n=K+1|0;c[T+(K<<2)>>2]=h;h=a[j>>0]|0;if(!(h<<24>>24)){u=p;t=q;break}else{K=n;n=q}}}while(0);s=(n|0)==0;if(k|n){r=(k|0)==0;if(n>>>0>1){o=1;do{h=c[T+(o<<2)>>2]|0;p=o;do{q=p;p=p+-1|0;j=T+(p<<2)|0;m=c[j>>2]|0;if((h|0)>=(m|0))break;c[T+(q<<2)>>2]=m;c[j>>2]=h}while((p|0)!=0);o=o+1|0}while((o|0)!=(n|0))}if(k>>>0>1){o=1;do{h=c[U+(o<<2)>>2]|0;p=o;do{q=p;p=p+-1|0;j=U+(p<<2)|0;m=c[j>>2]|0;if((h|0)>=(m|0))break;c[U+(q<<2)>>2]=m;c[j>>2]=h}while((p|0)!=0);o=o+1|0}while((o|0)!=(k|0))}p=c[L>>2]|0;m=f+(p*28|0)+968|0;o=f+(p*28|0)+980|0;c[L>>2]=p+1;do if(!r){j=c[U+(((k|0)/2|0)<<2)>>2]|0;if(s){c[o>>2]=j;c[m>>2]=j;z=103;break}c[m>>2]=j;h=c[T+(((n|0)/2|0)<<2)>>2]|0;c[o>>2]=h;if((h|0)!=(j|0)){k=b[l+4>>1]|0;if((h|0)>(j|0)^(k&1)!=0){K=(h+j|0)/2|0;c[o>>2]=K;c[m>>2]=K}}else z=103}else{z=c[T+(((n|0)/2|0)<<2)>>2]|0;c[o>>2]=z;c[m>>2]=z;z=103}while(0);if((z|0)==103){z=0;k=b[l+4>>1]|0}h=f+(p*28|0)+992|0;j=(k&1)<<1;c[h>>2]=j;if(k&2)c[h>>2]=j|4}l=l+8|0;h=c[l>>2]|0;if((h|0)==385)break;else{p=u;q=t}}}l=48;k=0;j=0;while(1){h=Zg(g,l)|0;if((h|0)!=0?(ig(g,h,2051,U)|0)==0:0){h=c[U>>2]|0;if(j<<24>>24)if((h|0)==(k|0))h=k;else{h=0;break}else j=1}else h=k;l=l+1|0;if(l>>>0>=58){h=1;break}else k=h}a[f+32>>0]=h;ph(g,V)|0;i=W;return 0}function xk(a,b){a=a|0;b=b|0;c[a+24>>2]=c[b+20>>2];c[a+4>>2]=c[b>>2];c[a+28>>2]=c[b+24>>2];es(a,b,0);es(a,b,1);return}function yk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=c[b+4>>2]|0;c[a+108>>2]=b;d=c[b+28>>2]|0;e=a+100|0;c[e>>2]=d;c[a+4>>2]=c[b+44>>2];c[a+8>>2]=c[b+48>>2];c[a+12>>2]=c[b+748>>2];c[a+16>>2]=c[b+752>>2];g=c[b+24>>2]|0;h=(g|0)==2;b=(g&-2|0)==2&1;b=h|(g|0)==4?b|2:b;g=(g|0)==1;b=g?b:b|4;b=h?b|8:b;if(!g?(c[f+12>>2]&1|0)==0:0){h=d;c[e>>2]=h;h=a+104|0;c[h>>2]=b;return 0}h=d|1;c[e>>2]=h;h=a+104|0;c[h>>2]=b;return 0}function zk(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;i=$r(f,g)|0;if(i){g=i;return g|0}A=f+100|0;i=c[A>>2]|0;do if(!(i&1)){i=fs(f,0)|0;if(!i){i=c[A>>2]|0;break}else{g=i;return g|0}}while(0);if(!(i&2)){i=fs(f,1)|0;if(i){g=i;return g|0}i=c[f+92>>2]|0;y=c[f+84>>2]|0;o=i+(y*48|0)|0;r=c[h+748>>2]|0;if((y|0)>0){s=h+40|0;t=h+964|0;u=f+96|0;do{j=qg(((c[s>>2]|0)>>>0)/40|0,r)|0;if(c[t>>2]|0){p=i+13|0;q=i+12|0;m=0;l=0;j=(j|0)>32?32:j;do{n=h+(m*28|0)+968|0;k=c[h+(m*28|0)+992>>2]|0;if((k&1|0)!=0?(v=(k&2|0)!=0,(a[p>>0]|0)==(c[u>>2]|0)^v):0){y=(b[i>>1]|0)-(c[n>>2]|0)|0;y=qg((y|0)<0?0-y|0:y,r)|0;x=(y|0)<(j|0);j=x?y:j;l=x?n:l;if((a[q>>0]&1)!=0&(y|0)!=0?(w=b[i>>1]|0,(w|0)<(c[n>>2]|0)^v):0){n=h+(m*28|0)+980|0;y=w-(c[n>>2]|0)|0;y=qg((y|0)<0?0-y|0:y,r)|0;x=(y|0)<(j|0);l=x?n:l;j=x?y:j}}m=m+1|0}while(m>>>0<(c[t>>2]|0)>>>0);if(l)c[i+20>>2]=l}i=i+48|0}while(i>>>0>>0)}}x=f+104|0;y=f+108|0;h=0;a:while(1){do if(!h)if(!(c[A>>2]&1)){q=c[f+64>>2]|0;r=c[f+56>>2]|0;w=q;q=q+(r*48|0)|0;i=0;z=27;break}else{h=h+1|0;continue a}else if((h|0)==1){if(c[A>>2]&2)break a;o=c[f+92>>2]|0;r=c[f+84>>2]|0;q=o+(r*48|0)|0;if((r|0)>0){i=0;p=o;do{j=a[p+12>>0]|0;do if(!(j&4)){l=c[p+20>>2]|0;m=c[p+24>>2]|0;if(l)if(!p)break;else n=p;else{if(!m)break;l=c[m+20>>2]|0;if(!l)break;j=a[m+12>>0]|0;n=m;m=p}k=c[l+8>>2]|0;c[n+8>>2]=k;l=j&255|4;a[n+12>>0]=l;if((m|0)!=0?(c[m+20>>2]|0)==0:0){z=m+12|0;w=d[z>>0]|0;c[m+8>>2]=(gs(c[x>>2]|0,c[y>>2]|0,1,(c[m+4>>2]|0)-(c[n+4>>2]|0)|0,l,w)|0)+k;a[z>>0]=w|4}i=(i|0)==0?p:i}while(0);p=p+48|0}while(p>>>0>>0);w=o;z=27}else z=94}while(0);if((z|0)==27){z=0;if((r|0)>0){v=w;l=0;do{t=v+12|0;u=d[t>>0]|0;do if(!(u&4)){s=c[v+24>>2]|0;if(!s){l=l+1|0;break}if(c[s+20>>2]|0){o=c[s+8>>2]|0;c[v+8>>2]=(gs(c[x>>2]|0,c[y>>2]|0,h,(c[v+4>>2]|0)-(c[s+4>>2]|0)|0,d[s+12>>0]|0,u)|0)+o;a[t>>0]=u|4;break}if(!i){p=s+4|0;n=c[v+4>>2]|0;i=(c[p>>2]|0)-n|0;m=s+12|0;j=gs(c[x>>2]|0,c[y>>2]|0,h,i,u,d[m>>0]|0)|0;k=(j|0)<65;if((j|0)<96){K=(i>>1)+n|0;o=K+32&-64;i=o-(k?32:38)|0;J=K-i|0;o=(k?32:26)|o;k=K-o|0;o=((((J|0)<0?0-J|0:J)|0)<(((k|0)<0?0-k|0:k)|0)?i:o)-((j|0)/2|0)|0;i=s+8|0;c[i>>2]=o+j;j=o}else{i=s+8|0;j=n+32&-64}c[v+8>>2]=j;K=u|4;a[t>>0]=K;c[i>>2]=(gs(c[x>>2]|0,c[y>>2]|0,h,(c[p>>2]|0)-n|0,K,d[m>>0]|0)|0)+j;i=v;break}k=c[v+4>>2]|0;j=k-(c[i+4>>2]|0)+(c[i+8>>2]|0)|0;k=(c[s+4>>2]|0)-k|0;n=(k>>1)+j|0;m=s+12|0;K=d[m>>0]|0;o=gs(c[x>>2]|0,c[y>>2]|0,h,k,u,K)|0;do if(!(K&4))if((o|0)<96){K=n+32&-64;j=(o|0)<65;J=K-(j?32:38)|0;k=n-J|0;K=(j?32:26)|K;n=n-K|0;K=(((k|0)<0?0-k|0:k)|0)<(((n|0)<0?0-n|0:n)|0)?J:K;J=(o|0)/2|0;c[v+8>>2]=K-J;c[s+8>>2]=J+K;break}else{J=j+32&-64;L=o>>1;p=L+(J-n)|0;K=(k+32+j&-64)-o|0;n=L-n+K|0;K=(((p|0)<0?0-p|0:p)|0)<(((n|0)<0?0-n|0:n)|0)?J:K;c[v+8>>2]=K;c[s+8>>2]=K+o;break}else c[v+8>>2]=(c[s+8>>2]|0)-o;while(0);a[t>>0]=u|4;a[m>>0]=d[m>>0]|4;if(v>>>0>w>>>0?(B=v+8|0,C=c[v+-40>>2]|0,(c[B>>2]|0)<(C|0)):0)c[B>>2]=C}while(0);v=v+48|0}while(v>>>0>>0);o=0;p=l}else{o=1;p=0}l=r*48|0;do if(!h){n=(l|0)==576;if((l|0)==576){l=5;m=9;j=w+48|0}else if((l|0)==288){l=2;m=4;j=w}else break;L=c[w+(l*48|0)+4>>2]|0;L=L-(c[w+(m*48|0)+4>>2]|0)+(L-(c[j+4>>2]|0))|0;if((((L|0)<0?0-L|0:L)|0)<8){k=w+(m*48|0)+8|0;l=(c[w+(l*48|0)+8>>2]<<1)-(c[j+8>>2]|0)|0;j=(c[k>>2]|0)-l|0;c[k>>2]=l;k=w+(m*48|0)+24|0;l=c[k>>2]|0;if(l){L=l+8|0;c[L>>2]=(c[L>>2]|0)-j}if(n){l=w+392|0;c[l>>2]=(c[l>>2]|0)-j;l=w+536|0;c[l>>2]=(c[l>>2]|0)-j;l=c[k>>2]|0}L=w+(m*48|0)+12|0;a[L>>0]=d[L>>0]|4;if(l){L=l+12|0;a[L>>0]=d[L>>0]|4}}}while(0);if((p|0)==0&(i|0)!=0|o)z=94;else{l=w;do{r=l+12|0;p=a[r>>0]|0;if(!(p&4)){j=c[l+28>>2]|0;if((j|0)!=0?(D=c[j+4>>2]|0,E=c[l+4>>2]|0,L=D-E|0,(((L|0)<0?0-L|0:L)|0)<80):0){k=(c[j+8>>2]|0)-D+E|0;c[l+8>>2]=k;j=p}else z=74;do if((z|0)==74){z=0;if(!i){k=(c[l+4>>2]|0)+32&-64;c[l+8>>2]=k;j=p;i=l;break}else k=l;while(1){j=k+-48|0;if(j>>>0>>0){o=0;break}if(!(a[k+-36>>0]&4))k=j;else{o=1;break}}n=l;while(1){m=n+48|0;if(m>>>0>=q>>>0)break;if(!(a[n+60>>0]&4))n=m;else{H=m;I=n;z=81;break}}if((z|0)==81?(z=0,o&j>>>0>>0&H>>>0>l>>>0):0){j=c[I+52>>2]|0;m=c[k+-44>>2]|0;k=c[k+-40>>2]|0;if((j|0)==(m|0)){c[l+8>>2]=k;j=p;break}else{k=(og((c[l+4>>2]|0)-m|0,(c[I+56>>2]|0)-k|0,j-m|0)|0)+k|0;c[l+8>>2]=k;j=a[r>>0]|0;break}}k=((c[l+4>>2]|0)+16-(c[i+4>>2]|0)&-32)+(c[i+8>>2]|0)|0;c[l+8>>2]=k;j=p}while(0);a[r>>0]=j&255|4;if(l>>>0>w>>>0?(F=c[l+-40>>2]|0,(k|0)<(F|0)):0){c[l+8>>2]=F;k=F}j=l+48|0;if((j>>>0>>0?(a[l+60>>0]&4)!=0:0)?(G=c[l+56>>2]|0,(k|0)>(G|0)):0){c[l+8>>2]=G;l=j}else l=j}else l=l+48|0}while(l>>>0>>0);z=94}}if((z|0)==94){z=0;i=c[f+(h*28|0)+52>>2]|0;l=c[f+(h*28|0)+44>>2]|0;n=i+(l*48|0)|0;l=(l|0)>0;if(!h){if(l)do{l=c[i+12>>2]|0;if(l){k=c[i+44>>2]|0;j=c[l+8>>2]|0;l=i+40|0;while(1){l=c[l>>2]|0;c[l+16>>2]=j;b[l>>1]=e[l>>1]|64;if((l|0)==(k|0))break;else l=l+32|0}}i=i+48|0}while(i>>>0>>0)}else if(l)do{l=c[i+12>>2]|0;if(l){k=c[i+44>>2]|0;j=c[l+8>>2]|0;l=i+40|0;while(1){l=c[l>>2]|0;c[l+20>>2]=j;b[l>>1]=e[l>>1]|128;if((l|0)==(k|0))break;else l=l+32|0}}i=i+48|0}while(i>>>0>>0);hs(f,h);is(f,h)}h=h+1|0;if((h|0)==2)break}L=c[f+24>>2]|0;i=c[f+28>>2]|0;m=i+(L*40|0)|0;if((L|0)<=0){L=0;return L|0}l=c[g+8>>2]|0;k=c[g+4>>2]|0;while(1){c[k>>2]=c[i+16>>2];c[k+4>>2]=c[i+20>>2];j=e[i>>1]|0;do if(!(j&1))if(!(j&2)){a[l>>0]=1;break}else{a[l>>0]=2;break}else a[l>>0]=0;while(0);i=i+40|0;if(i>>>0>=m>>>0){i=0;break}else{l=l+1|0;k=k+8|0}}return i|0}function Ak(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;D=i;i=i+208|0;B=D+100|0;A=D;C=c[g+92>>2]|0;c[f+40>>2]=e[g+68>>1];if(oh(g,1970170211)|0){ph(g,C)|0;i=D;return 0}js(f,g);j=1816+(c[(c[f>>2]|0)+4>>2]<<3)|0;h=c[j>>2]|0;if((h|0)!=385){y=g+84|0;do{l=1424+h|0;x=j+4|0;w=(b[x>>1]&1^1)&65535;h=a[l>>0]|0;a:do if(!(h<<24>>24)){k=0;s=0}else{k=0;s=0;while(1){v=k;while(1){while(1){m=l+1|0;k=h&255;if(h<<24>>24<0){do if((h&255)>=224)if((h&255)<240){h=k&15;n=2;k=m;break}else{h=k&7;n=3;k=m;break}else{h=k&31;n=1;k=m}while(0);while(1){l=l+2|0;h=d[k>>0]&63|h<<6;n=n+-1|0;if(!n)break;else{u=k;k=l;l=u}}}else{h=k;l=m}h=Zg(g,h)|0;if(((h|0)!=0?(u=kg(g,h,1)|0,z=c[y>>2]|0,(u|0)==0):0)?(b[z+110>>1]|0)>=1:0){h=z;t=c[z+120>>2]|0;u=c[z+112>>2]|0;break}h=a[l>>0]|0;if(!(h<<24>>24)){k=v;break a}}h=b[h+108>>1]|0;if(h<<16>>16>0){m=h<<16>>16;p=-1;h=0;q=0;r=0;while(1){o=b[t+(r<<1)>>1]|0;do if((o|0)>(q|0)){E=e[x>>1]|0;k=(E&2|0)!=0;n=(q|0)>(o|0);if(!(E&1))if(k){if(n)break;else k=q;while(1){n=c[u+(k<<3)+4>>2]|0;E=(p|0)<0|(n|0)>(h|0);h=E?n:h;p=E?k:p;if((k|0)<(o|0))k=k+1|0;else break}}else{if(n)break;else k=q;while(1){n=c[u+(k<<3)+4>>2]|0;E=(p|0)<0|(n|0)<(h|0);h=E?n:h;p=E?k:p;if((k|0)<(o|0))k=k+1|0;else break}}else if(k){if(n)break;else k=q;while(1){n=c[u+(k<<3)>>2]|0;E=(p|0)<0|(n|0)>(h|0);h=E?n:h;p=E?k:p;if((k|0)<(o|0))k=k+1|0;else break}}else{if(n)break;else k=q;while(1){n=c[u+(k<<3)>>2]|0;E=(p|0)<0|(n|0)<(h|0);h=E?n:h;p=E?k:p;if((k|0)<(o|0))k=k+1|0;else break}}}while(0);r=r+1|0;if((r|0)==(m|0))break;else q=o+1|0}}else h=0;if(!(b[x>>1]&4)){k=v;break}k=v+1|0;c[B+(v<<2)>>2]=h;h=a[l>>0]|0;if(!(h<<24>>24))break a;else v=k}n=s+1|0;c[A+(s<<2)>>2]=h;h=a[l>>0]|0;if(!(h<<24>>24)){s=n;break}else s=n}}while(0);r=(k|0)==0;if(k|s){q=(s|0)==0;if(s>>>0>1){m=1;do{h=c[A+(m<<2)>>2]|0;o=m;do{p=o;o=o+-1|0;l=A+(o<<2)|0;n=c[l>>2]|0;if((h|0)>=(n|0))break;c[A+(p<<2)>>2]=n;c[l>>2]=h}while((o|0)!=0);m=m+1|0}while((m|0)!=(s|0))}if(k>>>0>1){m=1;do{h=c[B+(m<<2)>>2]|0;p=m;do{o=p;p=p+-1|0;l=B+(p<<2)|0;n=c[l>>2]|0;if((h|0)>=(n|0))break;c[B+(o<<2)>>2]=n;c[l>>2]=h}while((p|0)!=0);m=m+1|0}while((m|0)!=(k|0))}E=f+(w*704|0)+260|0;m=c[E>>2]|0;n=f+(w*704|0)+(m*28|0)+264|0;o=f+(w*704|0)+(m*28|0)+276|0;c[E>>2]=m+1;do if(!q){if(r){E=c[A+(((s|0)/2|0)<<2)>>2]|0;c[o>>2]=E;c[n>>2]=E;break}l=c[B+(((k|0)/2|0)<<2)>>2]|0;c[n>>2]=l;h=c[A+(((s|0)/2|0)<<2)>>2]|0;c[o>>2]=h;if((h|0)!=(l|0)?(e[x>>1]&2|(h|0)<(l|0)|0)!=0:0){E=(h+l|0)/2|0;c[o>>2]=E;c[n>>2]=E}}else{E=c[B+(((k|0)/2|0)<<2)>>2]|0;c[o>>2]=E;c[n>>2]=E}while(0);c[f+(w*704|0)+(m*28|0)+288>>2]=b[x>>1]&2}j=j+8|0;h=c[j>>2]|0}while((h|0)!=385)}l=48;k=0;j=0;while(1){h=Zg(g,l)|0;if((h|0)!=0?(ig(g,h,2051,B)|0)==0:0){h=c[B>>2]|0;if(j<<24>>24)if((h|0)==(k|0))h=k;else{h=0;break}else j=1}else h=k;l=l+1|0;if(l>>>0>=58){h=1;break}else k=h}a[f+32>>0]=h;ph(g,C)|0;i=D;return 0}function Bk(a,b){a=a|0;b=b|0;c[a+24>>2]=c[b+20>>2];c[a+4>>2]=c[b>>2];c[a+28>>2]=c[b+24>>2];ks(a,b,0);ks(a,b,1);return}function Ck(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+108>>2]=b;e=c[b+28>>2]|0;c[a+4>>2]=c[b+44>>2];c[a+8>>2]=c[b+48>>2];c[a+12>>2]=c[b+748>>2];c[a+16>>2]=c[b+752>>2];f=c[b+24>>2]|0;d=(f|0)==2;b=(f&-2|0)==2&1;b=d|(f|0)==4?b|2:b;b=(f|0)==1?b:b|4;c[a+100>>2]=e|4;c[a+104>>2]=d?b|8:b;return 0}function Dk(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;i=$r(f,g)|0;if(i){g=i;return g|0}A=f+100|0;i=c[A>>2]|0;do if(!(i&1)){i=ls(f,0)|0;if(!i){ms(f,h,0);i=c[A>>2]|0;break}else{g=i;return g|0}}while(0);do if(!(i&2)){i=ls(f,1)|0;if(!i){ms(f,h,1);break}else{g=i;return g|0}}while(0);y=f+104|0;z=f+108|0;x=0;while(1){if((x|0)==1)if(!(c[A>>2]&2))E=13;else break;else if(!x)if(!(c[A>>2]&1))E=13;else{x=x+1|0;continue}if((E|0)==13){E=0;t=f+(x*28|0)+64|0;u=c[t>>2]|0;w=f+(x*28|0)+56|0;r=c[w>>2]|0;v=u+(r*48|0)|0;s=(r|0)>0;if(s){i=0;o=u;do{h=a[o+12>>0]|0;do if(!(h&4)){j=c[o+20>>2]|0;k=c[o+24>>2]|0;if(j)if(!o)break;else l=o;else{if(!k)break;j=c[k+20>>2]|0;if(!j)break;h=a[k+12>>0]|0;l=k;k=o}j=c[j+8>>2]|0;c[l+8>>2]=j;a[l+12>>0]=h&255|4;if((k|0)!=0?(c[k+20>>2]|0)==0:0){c[k+8>>2]=(ns(c[y>>2]|0,c[z>>2]|0,x,(c[k+4>>2]|0)-(c[l+4>>2]|0)|0)|0)+j;q=k+12|0;a[q>>0]=d[q>>0]|4}i=(i|0)==0?o:i}while(0);o=o+48|0}while(o>>>0>>0);q=(x|0)==1;k=i;h=0;p=u;l=0;n=0;i=0;while(1){j=p+12|0;o=a[j>>0]|0;a:do if(!(o&4)){m=c[p+24>>2]|0;if(!m){j=l;o=n;i=i+1|0;break}do if(l<<24>>24){F=n+64|0;if((c[p+8>>2]|0)>=(F|0)?(c[m+8>>2]|0)>=(F|0):0)break;j=l;o=n;i=i+1|0;break a}while(0);if(c[m+20>>2]|0){F=c[m+8>>2]|0;c[p+8>>2]=(ns(c[y>>2]|0,c[z>>2]|0,x,(c[p+4>>2]|0)-(c[m+4>>2]|0)|0)|0)+F;a[j>>0]=o&255|4;j=l;o=n;break}if(m>>>0

>>0){F=c[m+8>>2]|0;F=(ns(c[y>>2]|0,c[z>>2]|0,x,(c[p+4>>2]|0)-(c[m+4>>2]|0)|0)|0)+F|0;c[p+8>>2]=F;a[j>>0]=o&255|4;j=1;o=F;break}if(q|(k|0)!=0)os(f,p,m,h,x)|0;else h=os(f,p,m,0,0)|0;a[j>>0]=d[j>>0]|4;k=m+12|0;a[k>>0]=d[k>>0]|4;k=p;j=1;o=c[m+8>>2]|0}else{j=l;o=n}while(0);p=p+48|0;if(p>>>0>=v>>>0)break;else{l=j;n=o}}}else i=0;h=r*48|0;q=(x|0)==0;do if(q){n=(h|0)==576;if((h|0)==576){j=5;o=9;k=6;l=10;m=u+48|0}else if((h|0)==288){j=2;o=4;k=3;l=5;m=u}else break;h=c[u+(j*48|0)+4>>2]|0;h=h-(c[u+(o*48|0)+4>>2]|0)+(h-(c[m+4>>2]|0))|0;h=(h|0)<0?0-h|0:h;if(((c[m+24>>2]|0)==(m+48|0)?(c[u+(j*48|0)+24>>2]|0)==(u+(k*48|0)|0):0)?(B=u+(o*48|0)+24|0,C=c[B>>2]|0,(C|0)==(u+(l*48|0)|0)&(h|0)<8):0){F=u+(o*48|0)+8|0;r=(c[u+(j*48|0)+8>>2]<<1)-(c[m+8>>2]|0)|0;h=(c[F>>2]|0)-r|0;c[F>>2]=r;if(C){F=C+8|0;c[F>>2]=(c[F>>2]|0)-h}if(n){F=u+392|0;c[F>>2]=(c[F>>2]|0)-h;F=u+536|0;c[F>>2]=(c[F>>2]|0)-h;h=c[B>>2]|0}else h=C;F=u+(o*48|0)+12|0;a[F>>0]=d[F>>0]|4;if(h){F=h+12|0;a[F>>0]=d[F>>0]|4}}}while(0);if(!((i|0)==0|s^1)){k=u;do{h=k+12|0;j=a[h>>0]|0;if((j&4)==0?(D=c[k+28>>2]|0,(D|0)!=0):0){c[k+8>>2]=(c[D+8>>2]|0)-(c[D+4>>2]|0)+(c[k+4>>2]|0);a[h>>0]=j&255|4;i=i+-1|0}k=k+48|0}while(k>>>0>>0);if(i){p=u;do{do if(!(a[p+12>>0]&4)){h=p;while(1){i=h+-48|0;if(i>>>0>>0){o=1;j=0;m=h;break}if(!(a[h+-36>>0]&4))h=i;else{o=0;j=1;m=h;break}}k=p;while(1){h=k+48|0;if(h>>>0>=v>>>0){E=66;break}if(!(a[k+60>>0]&4))k=h;else{j=1;break}}if((E|0)==66){E=0;if(j)j=0;else break}if(o){c[p+8>>2]=(c[k+56>>2]|0)-(c[k+52>>2]|0)+(c[p+4>>2]|0);break}if(!j){c[p+8>>2]=(c[m+-40>>2]|0)-(c[m+-44>>2]|0)+(c[p+4>>2]|0);break}j=b[h>>1]|0;F=b[i>>1]|0;h=F<<16>>16;i=c[m+-40>>2]|0;if(j<<16>>16==F<<16>>16){c[p+8>>2]=i;break}else{c[p+8>>2]=(og((b[p>>1]|0)-h|0,(c[k+56>>2]|0)-i|0,(j<<16>>16)-h|0)|0)+i;break}}while(0);p=p+48|0}while(p>>>0>>0)}}j=c[t>>2]|0;i=c[w>>2]|0;n=j+(i*48|0)|0;if(!q)if((x|0)==1)h=(c[y>>2]|0)>>>1&1;else h=0;else h=c[y>>2]&1;if((i|0)>0){p=h<<24>>24==0;do{o=c[j+40>>2]|0;l=j+8|0;if(p){k=(c[l>>2]|0)-(c[j+4>>2]|0)|0;l=o;do{i=l+40|0;h=c[l+44>>2]|0;if(q)while(1){i=c[i>>2]|0;F=i+16|0;c[F>>2]=(c[F>>2]|0)+k;b[i>>1]=e[i>>1]|64;if((i|0)==(h|0))break;else i=i+32|0}else while(1){i=c[i>>2]|0;F=i+20|0;c[F>>2]=(c[F>>2]|0)+k;b[i>>1]=e[i>>1]|128;if((i|0)==(h|0))break;else i=i+32|0}l=c[l+16>>2]|0}while((l|0)!=(o|0))}else{m=o;do{i=m+40|0;h=c[l>>2]|0;k=c[m+44>>2]|0;if(q)while(1){i=c[i>>2]|0;c[i+16>>2]=h;b[i>>1]=e[i>>1]|64;if((i|0)==(k|0))break;else i=i+32|0}else while(1){i=c[i>>2]|0;c[i+20>>2]=h;b[i>>1]=e[i>>1]|128;if((i|0)==(k|0))break;else i=i+32|0}m=c[m+16>>2]|0}while((m|0)!=(o|0))}j=j+48|0}while(j>>>0>>0)}hs(f,x);is(f,x)}x=x+1|0;if((x|0)==2)break}F=c[f+24>>2]|0;i=c[f+28>>2]|0;l=i+(F*40|0)|0;if((F|0)<=0){F=0;return F|0}h=c[g+8>>2]|0;k=c[g+4>>2]|0;while(1){c[k>>2]=c[i+16>>2];c[k+4>>2]=c[i+20>>2];j=e[i>>1]|0;do if(!(j&1))if(!(j&2)){a[h>>0]=1;break}else{a[h>>0]=2;break}else a[h>>0]=0;while(0);i=i+40|0;if(i>>>0>=l>>>0){i=0;break}else{h=h+1|0;k=k+8|0}}return i|0}function Ek(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;k=m;f=d+92|0;l=c[f>>2]|0;c[b+40>>2]=e[d+68>>1];if(oh(d,1970170211)|0){c[f>>2]=0;ph(d,l)|0;i=m;return 0}js(b,d);j=48;h=0;g=0;while(1){f=Zg(d,j)|0;if((f|0)!=0?(ig(d,f,2051,k)|0)==0:0){f=c[k>>2]|0;if(g<<24>>24)if((f|0)==(h|0))f=h;else{f=0;break}else g=1}else f=h;j=j+1|0;if(j>>>0>=58){f=1;break}else h=f}a[b+32>>0]=f;ph(d,l)|0;i=m;return 0}function Fk(a,b){a=a|0;b=b|0;c[a+24>>2]=c[b+20>>2];c[a+4>>2]=c[b>>2];c[a+28>>2]=c[b+24>>2];ks(a,b,0);ks(a,b,1);return}function Gk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+108>>2]=b;e=c[b+28>>2]|0;c[a+4>>2]=c[b+44>>2];c[a+8>>2]=c[b+48>>2];c[a+12>>2]=c[b+748>>2];c[a+16>>2]=c[b+752>>2];f=c[b+24>>2]|0;d=(f|0)==2;b=(f&-2|0)==2&1;b=d|(f|0)==4?b|2:b;b=(f|0)==1?b:b|4;c[a+100>>2]=e|4;c[a+104>>2]=d?b|8:b;return 0}function Hk(a,b,c){a=a|0;b=b|0;c=c|0;return Dk(a,b,c)|0}function Ik(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+32|0;n=r+28|0;p=r;h=c[b+4>>2]|0;e=c[h+88>>2]|0;o=a+16|0;if(!e){a=6;i=r;return a|0};c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=0;c[p>>2]=h;c[p+4>>2]=c[e+16>>2];c[p+12>>2]=0;c[p+8>>2]=c[e+20>>2];c[p+16>>2]=0;c[p+20>>2]=g>>>16&15;c[p+24>>2]=0;c[a+16>>2]=h;j=h+116|0;b=a+20|0;c[b>>2]=c[j>>2];zg(c[a+24>>2]|0);e=c[b>>2]|0;do if(!e){e=tj(h,b,a)|0;if(!e){e=c[b>>2]|0;c[j>>2]=e;c[h+120>>2]=203;break}else{a=e;i=r;return a|0}}while(0);c[n>>2]=0;if((c[e+4>>2]|0)>>>0<=f>>>0){c[n>>2]=6;a=6;i=r;return a|0}l=(d[(c[e+8>>2]|0)+f>>0]|0)&127;h=c[2216+(l<<2)>>2]|0;k=c[2072+(c[h+8>>2]<<2)>>2]|0;l=e+(l<<2)+16|0;j=c[l>>2]|0;do if(!j){m=c[(c[e>>2]|0)+100>>2]|0;j=yg(m,c[k+4>>2]|0,n)|0;b=c[n>>2]|0;if(b){a=b;i=r;return a|0}c[j>>2]=h;c[j+36>>2]=e;b=c[k+8>>2]|0;if((b|0)!=0?(h=Pd[b&511](j,c[e>>2]|0)|0,c[n>>2]=h,(h|0)!=0):0){e=c[k+16>>2]|0;if(e)Bd[e&511](j);Ag(m,j);e=c[n>>2]|0;if(!e){j=0;break}i=r;return e|0}c[l>>2]=j}while(0);h=c[2072+(c[(c[j>>2]|0)+8>>2]<<2)>>2]|0;c[a+148>>2]=j;e=c[h+12>>2]|0;if(!e){m=j+4|0;c[m+0>>2]=c[p+0>>2];c[m+4>>2]=c[p+4>>2];c[m+8>>2]=c[p+8>>2];c[m+12>>2]=c[p+12>>2];c[m+16>>2]=c[p+16>>2];c[m+20>>2]=c[p+20>>2];c[m+24>>2]=c[p+24>>2]}else Cd[e&255](j,p);b=g&-2054|2049;e=c[h+20>>2]|0;if((e|0)!=0?(q=Pd[e&511](a+28|0,j)|0,(q|0)!=0):0){a=q;i=r;return a|0}a=ps(o,p,f,b,0)|0;i=r;return a|0}function Jk(a){a=a|0;var b=0;c[a+12>>2]=2;b=c[c[a+4>>2]>>2]|0;sfa(a+16|0,0,180)|0;c[a+28>>2]=b;return xg(b,a+24|0)|0}function Kk(a){a=a|0;ds(a+28|0);c[a+16>>2]=0;c[a+20>>2]=0;a=a+24|0;Bg(c[a>>2]|0);c[a>>2]=0;return}function Lk(a,b){a=a|0;b=b|0;return Jg(2960,b)|0}function Mk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[e>>2]=0;if(!b){b=81;return b|0}b=qs(b,333319,f)|0;return b|0}function Nk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[e>>2]=0;if(!b){b=81;return b|0}b=qs(b,333312,f)|0;return b|0}function Ok(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=c[b>>2]|0;i=rs(j,e,3240)|0;if(!i){j=64;return j|0}b=c[b>>2]|0;h=Pd[c[b+4>>2]&511](b,40)|0;do if(h){d=h+0|0;e=d+40|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0));e=h+28|0;c[e>>2]=b;d=Qi(h,i)|0;c[h+16>>2]=i;if(d){Cd[c[b+8>>2]&255](b,h);break}c[e>>2]=b;d=qs(h,333319,g)|0;e=c[e>>2]|0;b=c[h+24>>2]|0;if(b)Bd[b&511](h);Cd[c[e+8>>2]&255](e,h);if(!d){c[f>>2]=i;j=0;return j|0}}else d=64;while(0);Cd[c[j+8>>2]&255](j,i);j=d;return j|0}function Pk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=tfa(e|0)|0;h=i+18|0;d=c[b>>2]|0;if((h|0)>0){b=Pd[c[d+4>>2]&511](d,h)|0;j=(b|0)==0;d=j?64:0;if(j)j=0;else{sfa(b|0,0,h|0)|0;j=b}}else{j=0;d=h>>31&6}if(d){f=d;return f|0}qfa(j|0,e|0,i|0)|0;d=j+i+0|0;b=3208|0;h=d+18|0;do{a[d>>0]=a[b>>0]|0;d=d+1|0;b=b+1|0}while((d|0)<(h|0));c[f>>2]=j;c[g>>2]=0;f=0;return f|0}function Qk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=tfa(e|0)|0;h=i+6|0;d=c[b>>2]|0;if((h|0)>0){b=Pd[c[d+4>>2]&511](d,h)|0;j=(b|0)==0;d=j?64:0;if(j)b=0;else sfa(b|0,0,h|0)|0}else{b=0;d=h>>31&6}if(d){g=d;return g|0}qfa(b|0,e|0,i|0)|0;e=b+i|0;a[e+0>>0]=a[3232]|0;a[e+1>>0]=a[3233]|0;a[e+2>>0]=a[3234]|0;a[e+3>>0]=a[3235]|0;a[e+4>>0]=a[3236]|0;a[e+5>>0]=a[3237]|0;c[f>>2]=b;c[g>>2]=0;g=0;return g|0}function Rk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;d=rs(c[a>>2]|0,d,3192)|0;if(!d){f=64;return f|0}c[e>>2]=d;c[f>>2]=0;f=0;return f|0}function Sk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;d=rs(c[a>>2]|0,d,3176)|0;if(!d){f=64;return f|0}c[e>>2]=d;c[f>>2]=0;f=0;return f|0}function Tk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=c[b>>2]|0;i=rs(j,e,3168)|0;if(!i){j=64;return j|0}b=c[b>>2]|0;h=Pd[c[b+4>>2]&511](b,40)|0;do if(h){d=h+0|0;e=d+40|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0));e=h+28|0;c[e>>2]=b;d=Qi(h,i)|0;c[h+16>>2]=i;if(d){Cd[c[b+8>>2]&255](b,h);break}c[e>>2]=b;d=qs(h,333319,g)|0;e=c[e>>2]|0;b=c[h+24>>2]|0;if(b)Bd[b&511](h);Cd[c[e+8>>2]&255](e,h);if(!d){c[f>>2]=i;j=0;return j|0}}else d=64;while(0);Cd[c[j+8>>2]&255](j,i);j=d;return j|0}function Uk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=c[b>>2]|0;i=rs(j,e,3152)|0;if(!i){j=64;return j|0}b=c[b>>2]|0;h=Pd[c[b+4>>2]&511](b,40)|0;do if(h){d=h+0|0;e=d+40|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0));e=h+28|0;c[e>>2]=b;d=Qi(h,i)|0;c[h+16>>2]=i;if(d){Cd[c[b+8>>2]&255](b,h);break}c[e>>2]=b;d=qs(h,333319,g)|0;e=c[e>>2]|0;b=c[h+24>>2]|0;if(b)Bd[b&511](h);Cd[c[e+8>>2]&255](e,h);if(!d){c[f>>2]=i;j=0;return j|0}}else d=64;while(0);Cd[c[j+8>>2]&255](j,i);j=d;return j|0}function Vk(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a>>2]|0;if((c[b+72>>2]|0)!=1651078259){e=18;return e|0}c[a+20>>2]=c[b+100>>2];c[a+24>>2]=c[b+104>>2];e=b+156|0;a=a+28|0;if(!(c[(c[e>>2]|0)+4>>2]&1)){ri(a);e=si(d,b+76|0,a)|0;return e|0}else{b=b+76|0;c[a+0>>2]=c[b+0>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];e=(c[e>>2]|0)+4|0;c[e>>2]=c[e>>2]&-2;e=0;return e|0}return 0}function Wk(a){a=a|0;ui(c[a>>2]|0,a+28|0)|0;return}function Xk(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;c[b+20>>2]=c[a+20>>2];c[b+24>>2]=c[a+24>>2];return si(d,a+28|0,b+28|0)|0}function Yk(a,b){a=a|0;b=b|0;var d=0,e=0;e=c[a+20>>2]<<6;c[b>>2]=e;d=a+28|0;c[b+8>>2]=(c[d+4>>2]<<6)+e;a=c[a+24>>2]<<6;c[b+12>>2]=a;c[b+4>>2]=a-(c[d>>2]<<6);return}function Zk(a,d){a=a|0;d=d|0;var e=0,f=0;e=d+108|0;f=a+20|0;if((c[d+72>>2]|0)!=1869968492){e=18;return e|0}a=Fh(c[a>>2]|0,b[d+110>>1]|0,b[e>>1]|0,f)|0;if(a){e=a;return e|0}Gh(e,f)|0;e=0;return e|0}function _k(a){a=a|0;Hh(c[a>>2]|0,a+20|0)|0;return}function $k(a,d){a=a|0;d=d|0;var e=0,f=0;f=a+20|0;e=d+20|0;d=Fh(c[a>>2]|0,b[f+2>>1]|0,b[f>>1]|0,e)|0;if(d)return d|0;Gh(f,e)|0;return d|0}function al(a,b,d){a=a|0;b=b|0;d=d|0;if(b)Wg(a+20|0,b);if(!d)return;Xg(a+20|0,c[d>>2]|0,c[d+4>>2]|0);return}function bl(a,b){a=a|0;b=b|0;Ih(a+20|0,b);return}function cl(a,b){a=a|0;b=b|0;var d=0;c[b+72>>2]=1869968492;d=b+108|0;a=a+20|0;c[d+0>>2]=c[a+0>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];c[d+16>>2]=c[a+16>>2];b=b+124|0;c[b>>2]=c[b>>2]&-2;return 0}function dl(a,b){a=a|0;b=b|0;b=c[a>>2]|0;c[a+16>>2]=c[(c[b+140>>2]|0)+52>>2];c[a+20>>2]=c[b+144>>2];return 0}function el(a){a=a|0;c[a+20>>2]=0;c[a+16>>2]=0;return}function fl(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0;h=c[a+20>>2]|0;a=c[a+16>>2]|0;if(!a){i=0;return i|0}else{f=a;g=0}while(1){a=(g+f|0)>>>1;d=c[h+(a<<3)>>2]|0;if((d|0)==(b|0))break;d=d>>>0>b>>>0;f=d?a:f;g=d?g:a+1|0;if(g>>>0>=f>>>0){a=0;i=5;break}}if((i|0)==5)return a|0;i=(e[h+(a<<3)+4>>1]|0)+1&65535;return i|0}function gl(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0;j=c[a+20>>2]|0;i=(c[b>>2]|0)+1|0;h=c[a+16>>2]|0;a:do if(!h)a=0;else{g=h;f=0;while(1){a=(f+g|0)>>>1;d=c[j+(a<<3)>>2]|0;if((i|0)==(d|0))break;d=i>>>0>>0;g=d?a:g;a=d?f:a+1|0;if(a>>>0>=g>>>0)break a;else f=a}j=(e[j+(a<<3)+4>>1]|0)+1|0;c[b>>2]=i;j=j&65535;return j|0}while(0);if(a>>>0>=h>>>0){i=0;j=0;c[b>>2]=i;j=j&65535;return j|0}i=c[j+(a<<3)>>2]|0;j=(e[j+(a<<3)+4>>1]|0)+1|0;c[b>>2]=i;j=j&65535;return j|0}function hl(a,b){a=a|0;b=b|0;return Jg(6496,b)|0}function il(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;na=i;i=i+64|0;_=na+56|0;A=na;G=na+4|0;ma=na+8|0;h=na+16|0;la=na+32|0;ja=na+44|0;M=f+100|0;ka=c[M>>2]|0;g=bh(d,0)|0;c[ma>>2]=g;if(g){la=g;i=na;return la|0}c[h>>2]=1;c[h+4>>2]=1;c[h+8>>2]=0;c[h+12>>2]=8;c[G>>2]=0;F=yg(ka,139324,G)|0;do if(!(c[G>>2]|0)){C=F+36|0;c[C>>2]=h;B=F+12|0;b[B>>1]=32767;c[F+139320>>2]=ka;D=F+139304|0;c[D+0>>2]=0;c[D+4>>2]=0;c[D+8>>2]=0;E=F+139316|0;c[E>>2]=ka;z=c[d+28>>2]|0;c[A>>2]=0;g=Dg(z,1,0,1024,0,A)|0;a:do if(!(c[A>>2]|0)){c[_>>2]=45;a[g>>0]=0;t=0;s=1024;j=0;n=0;y=1;h=0;p=0;u=256;b:while(1){q=t;c:while(1){d:do if(!p){p=q;ia=8}else{if(h)v=j;else{v=Sh(d,g+n|0,s-n|0)|0;q=v+n|0;n=0}e:do if((q|0)>(p|0)){h=a[g+p>>0]|0;if((h<<24>>24|0)==(u|0)){h=s;j=v;break d}else j=p;while(1){if(h<<24>>24==10|h<<24>>24==13){t=q;w=s;u=n;n=p;break c}j=j+1|0;if((j|0)>=(q|0))break e;h=a[g+j>>0]|0}}while(0);if(!v)break a;n=q-p|0;rfa(g|0,g+p|0,n|0)|0;j=n;h=0;ia=8}while(0);f:do if((ia|0)==8)while(1){ia=0;if(h)v=j;else{v=Sh(d,g+n|0,s-n|0)|0;p=v+n|0;n=0}g:do if((p|0)>0){h=a[g>>0]|0;if((h<<24>>24|0)==(u|0)){q=p;h=s;j=v;p=0;break f}else j=0;while(1){if(h<<24>>24==10|h<<24>>24==13){t=p;w=s;u=n;n=0;break c}j=j+1|0;if((j|0)>=(p|0))break g;h=a[g+j>>0]|0}}while(0);if(!v)break a;if(s>>>0>65535)break b;h=s<<1;g=Dg(z,1,s,h,g,A)|0;if(!(c[A>>2]|0)){n=s;s=h;j=v;h=0;ia=8}else break a}while(0);s=h;h=1;p=p+1|0;u=256}s=g+j|0;a[s>>0]=0;q=g+n|0;p=a[q>>0]|0;if(!(p<<24>>24==26|p<<24>>24==35)?(j|0)>(n|0):0){p=j-n|0;n=Qd[c[_>>2]&127](q,p,y,_,F)|0;c[A>>2]=n;if((n|0)==-1){n=Qd[c[_>>2]&127](q,p,y,_,F)|0;c[A>>2]=n}if(n)break a}q=y+1|0;a[s>>0]=h;p=j+1|0;if(h<<24>>24==13){s=w;j=v;n=u;y=q;h=1;u=10;continue}else if(h<<24>>24==10){s=w;j=v;n=u;y=q;h=1;u=13;continue}else{s=w;j=v;n=u;y=q;h=1;u=256;continue}}c[A>>2]=6}while(0);Ag(z,g);ia=c[A>>2]|0;c[G>>2]=ia;q=F+32|0;g=c[q>>2]|0;if(!ia){if(g){if((c[g+28>>2]|0)!=8)b[g+32>>1]=b[g+4>>1]|0;h=c[g+52>>2]|0;j=c[g+64>>2]|0;if((c[F+4>>2]|0)!=(j+h|0))b[g+278660>>1]=1;if(!((j|h|0)==0?1:(c[c[C>>2]>>2]|0)==0)){n=b[B>>1]|0;h=(b[F+16>>1]|0)-(n<<16>>16)|0;j=g+4|0;if((h|0)!=(e[j>>1]|0)){b[j>>1]=h;b[g+278660>>1]=1}h=g+8|0;if((b[h>>1]|0)!=n<<16>>16){b[h>>1]=n;b[g+278660>>1]=1}h=g+12|0;p=b[F+18>>1]|0;if((b[h>>1]|0)!=p<<16>>16){b[h>>1]=p;b[g+278660>>1]=1}j=g+14|0;h=b[j>>1]|0;n=b[F+20>>1]|0;if(h<<16>>16!=n<<16>>16){b[j>>1]=n;b[g+10>>1]=0-(n&65535);b[g+278660>>1]=1;h=n}h=(h<<16>>16)+(p<<16>>16)|0;j=g+6|0;if((h|0)!=(e[j>>1]|0))b[j>>1]=h}}else g=0;h=c[F>>2]|0;if(h&1)if(!(h&32)){c[G>>2]=185;ia=62;break}else{c[G>>2]=186;ia=62;break}if(!g){c[G>>2]=3;j=D;h=E;g=0;ia=64;break}h=c[g+88>>2]|0;if(!h){j=D;h=E;ia=64;break}h=Dg(c[g+278664>>2]|0,1,h,h+1|0,c[g+84>>2]|0,G)|0;g=c[q>>2]|0;c[g+84>>2]=h;if(!(c[G>>2]|0)){a[h+(c[g+88>>2]|0)>>0]=0;j=D;h=E;g=c[q>>2]|0;ia=64;break}}ts(g);Ag(ka,c[q>>2]|0);c[q>>2]=0;ia=62}else ia=62;while(0);if((ia|0)==62)if(!F)d=0;else{j=F+139304|0;h=F+139316|0;g=0;ia=64}if((ia|0)==64){h=c[h>>2]|0;if(h){Ag(h,c[j>>2]|0);c[j+0>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0}Ag(ka,F);d=g}g=c[G>>2]|0;c[ma>>2]=g;if((g&255|0)==176){jl(f);la=2;i=na;return la|0}if(g){la=g;i=na;return la|0}s=f+140|0;c[s>>2]=d;c[f>>2]=1;c[f+4>>2]=0;p=f+8|0;c[p>>2]=146;A=(d|0)==0;h:do if(!A?(I=(c[d+72>>2]|0)==0,!I):0){g=c[d+128>>2]|0;q=c[g+12>>2]|0;g=c[g+4>>2]|0;j=q+((3000791075%(g>>>0)|0)<<2)|0;h=c[j>>2]|0;if(h){n=q+(g+-1<<2)|0;do{g=c[h>>2]|0;if((a[g>>0]|0)==83?(gfa(g,3464)|0)==0:0){H=h;ia=77;break}h=j+-4|0;j=h>>>0>>0?n:h;h=c[j>>2]|0}while((h|0)!=0);if((((((ia|0)==77?(H|0)!=0:0)?(J=c[d+80>>2]|0,K=c[H+4>>2]|0,(J+(K<<4)|0)!=0):0)?(c[J+(K<<4)+4>>2]|0)==1:0)?(L=c[J+(K<<4)+12>>2]|0,(L|0)!=0):0)?(L=a[L>>0]|0,L<<24>>24==99|L<<24>>24==67|L<<24>>24==109|L<<24>>24==77):0)c[p>>2]=150;if(I){ia=94;break}}h=c[d+128>>2]|0;p=c[h+12>>2]|0;h=c[h+4>>2]|0;j=p+((1183963782%(h>>>0)|0)<<2)|0;g=c[j>>2]|0;if(g){n=p+(h+-1<<2)|0;while(1){h=c[g>>2]|0;if((a[h>>0]|0)==70?(gfa(h,18328)|0)==0:0)break;g=j+-4|0;j=g>>>0

>>0?n:g;g=c[j>>2]|0;if(!g){ia=94;break h}}if(((g|0)!=0?(N=c[d+80>>2]|0,O=c[g+4>>2]|0,(N+(O<<4)|0)!=0):0)?(P=c[N+(O<<4)+12>>2]|0,(P|0)!=0):0){c[f+20>>2]=oi(ka,P,ma)|0;g=c[ma>>2]|0;if(!g){w=c[s>>2]|0;break}else{la=g;i=na;return la|0}}else ia=94}else ia=94}else ia=94;while(0);if((ia|0)==94){c[f+20>>2]=0;w=d}c[_>>2]=0;z=c[M>>2]|0;q=f+12|0;c[q>>2]=0;if((w|0)!=0?(c[w+72>>2]|0)!=0:0){s=c[w+128>>2]|0;v=c[s+12>>2]|0;s=c[s+4>>2]|0;h=v+((78981326%(s>>>0)|0)<<2)|0;g=c[h>>2]|0;i:do if(g){n=v+(s+-1<<2)|0;while(1){j=c[g>>2]|0;if((a[j>>0]|0)==83?(gfa(j,18424)|0)==0:0)break;g=h+-4|0;h=g>>>0>>0?n:g;g=c[h>>2]|0;if(!g){p=2;u=0;break i}}if(((((g|0)!=0?(Q=c[w+80>>2]|0,R=c[g+4>>2]|0,(Q+(R<<4)|0)!=0):0)?(c[Q+(R<<4)+4>>2]|0)==1:0)?(S=c[Q+(R<<4)+12>>2]|0,(S|0)!=0):0)?(Q=a[S>>0]|0,Q<<24>>24==105|Q<<24>>24==73|Q<<24>>24==111|Q<<24>>24==79):0){c[q>>2]=1;g=a[S>>0]|0;if(g<<24>>24==79){p=3;u=18432}else{p=3;u=g<<24>>24==111?18432:90496}}else{p=2;u=0}}else{p=2;u=0}while(0);h=v+((4260511730%(s>>>0)|0)<<2)|0;g=c[h>>2]|0;j:do if(g){n=v+(s+-1<<2)|0;while(1){j=c[g>>2]|0;if((a[j>>0]|0)==87?(gfa(j,18440)|0)==0:0)break;g=h+-4|0;h=g>>>0>>0?n:g;g=c[h>>2]|0;if(!g){t=0;break j}}if(((((g|0)!=0?(T=c[w+80>>2]|0,U=c[g+4>>2]|0,(T+(U<<4)|0)!=0):0)?(c[T+(U<<4)+4>>2]|0)==1:0)?(V=c[T+(U<<4)+12>>2]|0,(V|0)!=0):0)?(Q=a[V>>0]|0,Q<<24>>24==98|Q<<24>>24==66):0){c[q>>2]=p;t=90488}else t=0}else t=0;while(0);g=v+((41411398%(s>>>0)|0)<<2)|0;h=c[g>>2]|0;k:do if(h){n=v+(s+-1<<2)|0;while(1){j=c[h>>2]|0;if((a[j>>0]|0)==83?(gfa(j,18456)|0)==0:0)break;h=g+-4|0;g=h>>>0>>0?n:h;h=c[g>>2]|0;if(!h){x=0;break k}}if(!(((((h|0)!=0?(W=c[w+80>>2]|0,X=c[h+4>>2]|0,(W+(X<<4)|0)!=0):0)?(c[W+(X<<4)+4>>2]|0)==1:0)?(x=c[W+(X<<4)+12>>2]|0,(x|0)!=0):0)?(X=a[x>>0]|0,!(X<<24>>24==110|X<<24>>24==78|X<<24>>24==0)):0))x=0}else x=0;while(0);p=v+((657458935%(s>>>0)|0)<<2)|0;h=c[p>>2]|0;l:do if(h){g=v+(s+-1<<2)|0;while(1){n=c[h>>2]|0;if((a[n>>0]|0)==65?(gfa(n,18472)|0)==0:0)break;h=p+-4|0;p=h>>>0>>0?g:h;h=c[p>>2]|0;if(!h){r=0;q=0;h=0;break l}}if(((((h|0)!=0?(Y=c[w+80>>2]|0,Z=c[h+4>>2]|0,(Y+(Z<<4)|0)!=0):0)?(c[Y+(Z<<4)+4>>2]|0)==1:0)?(r=c[Y+(Z<<4)+12>>2]|0,(r|0)!=0):0)?(Z=a[r>>0]|0,!(Z<<24>>24==110|Z<<24>>24==78|Z<<24>>24==0)):0){h=tfa(r|0)|0;q=h;h=h+1|0}else{r=0;q=0;h=0}}else{r=0;q=0;h=0}while(0);if(!t){s=1;n=0;g=0}else{Z=tfa(t|0)|0;s=0;n=t;g=Z;h=h+1+Z|0}if(!u){t=1;p=0;j=0}else{Z=tfa(u|0)|0;t=0;p=u;j=Z;h=h+1+Z|0}if(!x){w=n;v=g;x=0;y=0;g=q;n=r;u=1}else{Z=tfa(x|0)|0;w=n;v=g;y=Z;g=q;n=r;u=0;h=h+1+Z|0}}else{w=0;v=0;p=0;j=0;x=0;y=0;g=0;n=0;u=1;s=1;t=1;h=0}r=(h|0)==0;q=r?7:g;g=r?90464:n;h=yg(z,r?8:h,_)|0;r=f+24|0;c[r>>2]=h;n=c[_>>2]|0;if(n){c[ma>>2]=n;la=n;i=na;return la|0}if(g){qfa(h|0,g|0,q|0)|0;if(q){g=0;do{n=h+g|0;if((a[n>>0]|0)==32)a[n>>0]=45;g=g+1|0}while((g|0)!=(q|0))}h=h+q|0}if(!s){if((h|0)!=(c[r>>2]|0)){a[h>>0]=32;h=h+1|0}qfa(h|0,w|0,v|0)|0;h=h+v|0}if(!t){if((h|0)!=(c[r>>2]|0)){a[h>>0]=32;h=h+1|0}qfa(h|0,p|0,j|0)|0;h=h+j|0}if(!u){if((h|0)!=(c[r>>2]|0)){a[h>>0]=32;h=h+1|0}qfa(h|0,x|0,y|0)|0;if(y){p=0;do{n=h+p|0;if((a[n>>0]|0)==32)a[n>>0]=45;p=p+1|0}while((p|0)!=(y|0))}h=h+y|0}a[h>>0]=0;h=c[_>>2]|0;c[ma>>2]=h;if(h){la=h;i=na;return la|0}r=d+48|0;c[f+16>>2]=(c[r>>2]|0)+1;c[f+28>>2]=1;q=Dg(ka,16,0,1,0,ma)|0;c[f+32>>2]=q;h=c[ma>>2]|0;if(h){la=h;i=na;return la|0};c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;p=(c[d+44>>2]|0)+(c[d+40>>2]|0)|0;b[q>>1]=p;m:do if((!A?(c[d+72>>2]|0)!=0:0)?($=c[d+128>>2]|0,aa=c[$+12>>2]|0,$=c[$+4>>2]|0,o=aa+((3825651940%($>>>0)|0)<<2)|0,m=c[o>>2]|0,(m|0)!=0):0){n=aa+($+-1<<2)|0;while(1){h=c[m>>2]|0;if((a[h>>0]|0)==65?(gfa(h,18344)|0)==0:0)break;m=o+-4|0;o=m>>>0>>0?n:m;m=c[o>>2]|0;if(!m){ia=184;break m}}if((m|0)!=0?(ba=c[d+80>>2]|0,ca=c[m+4>>2]|0,(ba+(ca<<4)|0)!=0):0){o=((c[ba+(ca<<4)+12>>2]|0)+5|0)/10|0;b[q+2>>1]=o}else ia=184}else ia=184;while(0);if((ia|0)==184){o=(p<<16>>15|0)/3|0;b[q+2>>1]=o}n:do if((!A?(c[d+72>>2]|0)!=0:0)?(ea=c[d+128>>2]|0,fa=c[ea+12>>2]|0,ea=c[ea+4>>2]|0,l=fa+((1780881776%(ea>>>0)|0)<<2)|0,k=c[l>>2]|0,(k|0)!=0):0){h=fa+(ea+-1<<2)|0;while(1){m=c[k>>2]|0;if((a[m>>0]|0)==80?(gfa(m,18360)|0)==0:0)break;k=l+-4|0;l=k>>>0>>0?h:k;k=c[l>>2]|0;if(!k){ia=195;break n}}if((k|0)!=0?(ga=c[d+80>>2]|0,ha=c[k+4>>2]|0,(ga+(ha<<4)|0)!=0):0){j=(((c[ga+(ha<<4)+12>>2]|0)*460800|0)+36135|0)/72270|0;c[q+4>>2]=j}else ia=195}else ia=195;while(0);if((ia|0)==195){j=o<<16>>10;c[q+4>>2]=j}do if(A){c[q+12>>2]=j;k=j;ia=231}else{g=(c[d+72>>2]|0)==0;if(g){c[q+12>>2]=j;k=j;ia=231;break}m=c[d+128>>2]|0;o=c[m+12>>2]|0;m=c[m+4>>2]|0;l=o+((486426170%(m>>>0)|0)<<2)|0;k=c[l>>2]|0;if(k){h=o+(m+-1<<2)|0;while(1){m=c[k>>2]|0;if((a[m>>0]|0)==80?(gfa(m,18376)|0)==0:0){ia=205;break}k=l+-4|0;l=k>>>0>>0?h:k;k=c[l>>2]|0;if(!k){k=0;break}}do if((ia|0)==205){if(!k){k=0;break}m=c[d+80>>2]|0;k=c[k+4>>2]|0;if(!(m+(k<<4)|0)){k=0;break}k=c[m+(k<<4)+12>>2]<<16>>10;c[q+12>>2]=k}while(0);if(g){h=0;l=0}else ia=209}else{k=0;ia=209}o:do if((ia|0)==209){l=c[d+128>>2]|0;n=c[l+12>>2]|0;l=c[l+4>>2]|0;h=n+((2286220677%(l>>>0)|0)<<2)|0;m=c[h>>2]|0;p:do if(!m)p=0;else{o=n+(l+-1<<2)|0;while(1){l=c[m>>2]|0;if((a[l>>0]|0)==82?(gfa(l,18392)|0)==0:0)break;m=h+-4|0;h=m>>>0>>0?o:m;m=c[h>>2]|0;if(!m){p=0;break p}}if(!m){p=0;break}l=c[d+80>>2]|0;m=c[m+4>>2]|0;if(!(l+(m<<4)|0)){p=0;break}p=c[l+(m<<4)+12>>2]<<16>>16}while(0);if(g){h=p;l=0;break}l=c[d+128>>2]|0;n=c[l+12>>2]|0;l=c[l+4>>2]|0;h=n+((2286220678%(l>>>0)|0)<<2)|0;m=c[h>>2]|0;if(!m){h=p;l=0;break}o=n+(l+-1<<2)|0;while(1){l=c[m>>2]|0;if((a[l>>0]|0)==82?(gfa(l,18408)|0)==0:0)break;m=h+-4|0;h=m>>>0>>0?o:m;m=c[h>>2]|0;if(!m){h=p;l=0;break o}}if(!m){h=p;l=0;break}l=c[d+80>>2]|0;m=c[m+4>>2]|0;if(!(l+(m<<4)|0)){h=p;l=0;break}h=p;l=c[l+(m<<4)+12>>2]&65535}while(0);m=q+12|0;if(!k){c[m>>2]=j;if(!(l<<16>>16)){k=j;ia=231;break}k=(da(j,l<<16>>16)|0)/72|0;c[m>>2]=k}if((h|0)==0|l<<16>>16==0){ia=231;break}c[q+8>>2]=(da(k,h)|0)/(l<<16>>16|0)|0}while(0);if((ia|0)==231)c[q+8>>2]=k;o=c[d+56>>2]|0;n=Dg(ka,8,0,c[r>>2]|0,0,ma)|0;c[f+144>>2]=n;k=c[ma>>2]|0;if(k){la=k;i=na;return la|0}h=f+164|0;c[h>>2]=0;k=c[r>>2]|0;if(k){m=c[d+36>>2]|0;l=0;do{aa=c[o+(l*36|0)+4>>2]|0;c[n+(l<<3)>>2]=aa;b[n+(l<<3)+4>>1]=l;if((aa|0)==(m|0))c[h>>2]=l;l=l+1|0}while(l>>>0>>0)}q:do if(!A){n=(c[d+72>>2]|0)==0;if(n)break;m=c[d+128>>2]|0;o=c[m+12>>2]|0;m=c[m+4>>2]|0;l=o+((3781719536%(m>>>0)|0)<<2)|0;k=c[l>>2]|0;if(k){h=o+(m+-1<<2)|0;while(1){m=c[k>>2]|0;if((a[m>>0]|0)==67?(gfa(m,83640)|0)==0:0){ia=245;break}k=l+-4|0;l=k>>>0>>0?h:k;k=c[l>>2]|0;if(!k){k=0;break}}do if((ia|0)==245){if(!k){k=0;break}k=(c[d+80>>2]|0)+(c[k+4>>2]<<4)|0}while(0);if(n)break}else k=0;l=c[d+128>>2]|0;o=c[l+12>>2]|0;l=c[l+4>>2]|0;h=o+((1888187142%(l>>>0)|0)<<2)|0;m=c[h>>2]|0;if(!m)break;n=o+(l+-1<<2)|0;while(1){l=c[m>>2]|0;if((a[l>>0]|0)==67?(gfa(l,83664)|0)==0:0)break;m=h+-4|0;h=m>>>0>>0?n:m;m=c[h>>2]|0;if(!m)break q}if(!m)break;l=c[d+80>>2]|0;m=c[m+4>>2]|0;if(!((k|0)!=0&(l+(m<<4)|0)!=0))break;if((c[k+4>>2]|0)!=1)break;if((c[l+(m<<4)+4>>2]|0)!=1)break;h=k+12|0;if(!(c[h>>2]|0))break;k=c[l+(m<<4)+12>>2]|0;if(!k)break;m=f+132|0;c[m>>2]=oi(ka,k,ma)|0;k=c[ma>>2]|0;if(k){la=k;i=na;return la|0}k=oi(ka,c[h>>2]|0,ma)|0;c[f+136>>2]=k;l=c[ma>>2]|0;if(l){la=l;i=na;return la|0}aa=a[k>>0]|0;do if(aa<<24>>24==73|aa<<24>>24==105){aa=a[k+1>>0]|0;if(!(aa<<24>>24==83|aa<<24>>24==115)){m=0;break}aa=a[k+2>>0]|0;if(!(aa<<24>>24==79|aa<<24>>24==111)){m=0;break}k=k+3|0;if(gfa(k,18304)|0){if(gfa(k,18312)|0){m=0;break}if(gfa(c[m>>2]|0,18320)|0){m=0;break}}m=1}else m=0;while(0);c[la>>2]=f;k=la+4|0;c[k>>2]=0;l=la+8|0;b[l>>1]=0;h=la+10|0;b[h>>1]=0;if(m){c[k>>2]=1970170211;b[l>>1]=3;b[h>>1]=1}la=qh(3328,0,la,0)|0;c[ma>>2]=la;i=na;return la|0}while(0);c[ja>>2]=f;c[ja+4>>2]=1094995778;b[ja+8>>1]=7;b[ja+10>>1]=0;k=qh(3328,0,ja,0)|0;c[ma>>2]=k;if(!(c[f+36>>2]|0)){la=k;i=na;return la|0}c[f+92>>2]=c[c[f+40>>2]>>2];la=k;i=na;return la|0}function jl(a){a=a|0;var b=0,d=0,e=0;if(!a)return;d=c[a+100>>2]|0;b=a+140|0;ts(c[b>>2]|0);e=a+144|0;Ag(d,c[e>>2]|0);c[e>>2]=0;e=a+132|0;Ag(d,c[e>>2]|0);c[e>>2]=0;e=a+136|0;Ag(d,c[e>>2]|0);c[e>>2]=0;e=a+20|0;Ag(d,c[e>>2]|0);c[e>>2]=0;e=a+24|0;Ag(d,c[e>>2]|0);c[e>>2]=0;a=a+32|0;Ag(d,c[a>>2]|0);c[a>>2]=0;Ag(d,c[b>>2]|0);c[b>>2]=0;return}function kl(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=c[f>>2]|0;k=h+140|0;f=c[k>>2]|0;l=e[f+278662>>1]|0;if(!h){l=6;return l|0}if((c[h+16>>2]|0)>>>0<=g>>>0){l=6;return l|0}if(!g)h=c[h+164>>2]|0;else h=g+-1|0;p=c[f+56>>2]|0;f=b[p+(h*36|0)+10>>1]|0;o=b[p+(h*36|0)+12>>1]|0;g=b[p+(h*36|0)+16>>1]|0;i=b[p+(h*36|0)+20>>1]|0;m=c[p+(h*36|0)+24>>2]|0;n=c[p+(h*36|0)+28>>2]|0;j=d+76|0;c[j>>2]=e[p+(h*36|0)+14>>1];h=d+80|0;c[h>>2]=o&65535;c[d+84>>2]=n;Rg(d,m);if((l|0)==8){a[d+94>>0]=2;b[d+92>>1]=256}else if((l|0)==4)a[d+94>>0]=4;else if((l|0)==1)a[d+94>>0]=1;else if((l|0)==2)a[d+94>>0]=3;c[d+72>>2]=1651078259;n=g<<16>>16;c[d+100>>2]=n;o=i<<16>>16;c[d+104>>2]=o;p=d+24|0;c[d+40>>2]=(f&65535)<<6;c[d+32>>2]=n<<6;c[d+36>>2]=o<<6;c[p>>2]=c[h>>2]<<6;c[d+28>>2]=c[j>>2]<<6;hh(p,(e[(c[k>>2]|0)+6>>1]|0)<<6);p=0;return p|0}function ll(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0;h=c[a>>2]|0;i=c[h+140>>2]|0;f=c[b+16>>2]|0;d=c[b+8>>2]|0;if(f)d=((da(d,f)|0)+36|0)/72|0;g=d+32>>6;d=c[b>>2]|0;do if(!d)if((g|0)==((c[(c[h+32>>2]|0)+12>>2]|0)+32>>6|0)){f=i+44|0;d=i+40|0;break}else{a=23;return a|0}else if((d|0)==1){d=i+40|0;f=i+44|0;if((g|0)!=((c[f>>2]|0)+(c[d>>2]|0)|0)){a=23;return a|0}}else{a=7;return a|0}while(0);ih(h,0);c[a+24>>2]=c[d>>2]<<6;c[a+28>>2]=0-(c[f>>2]|0)<<6;c[a+36>>2]=(e[i+4>>1]|0)<<6;a=0;return a|0}function ml(a,b){a=a|0;b=b|0;var d=0,f=0;f=c[a>>2]|0;d=c[f+140>>2]|0;ih(f,b);c[a+24>>2]=c[d+40>>2]<<6;c[a+28>>2]=0-(c[d+44>>2]|0)<<6;c[a+36>>2]=(e[d+4>>1]|0)<<6;return 0}function nl(a,b,d){a=a|0;b=b|0;d=d|0;c[b>>2]=c[a+132>>2];c[d>>2]=c[a+136>>2];return 0}function ol(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=c[b+140>>2]|0;if(!k){e=6;return e|0}if((c[k+72>>2]|0)==0|(d|0)==0){e=6;return e|0}j=a[d>>0]|0;if(!(j<<24>>24)){e=6;return e|0}h=c[k+128>>2]|0;i=c[h+12>>2]|0;f=j;g=d;b=0;do{g=g+1|0;b=(b*31|0)+(f<<24>>24)|0;f=a[g>>0]|0}while(f<<24>>24!=0);f=c[h+4>>2]|0;g=i+(((b>>>0)%(f>>>0)|0)<<2)|0;b=c[g>>2]|0;if(!b){e=6;return e|0}h=i+(f+-1<<2)|0;while(1){f=c[b>>2]|0;if((a[f>>0]|0)==j<<24>>24?(gfa(f,d)|0)==0:0)break;b=g+-4|0;g=b>>>0>>0?h:b;b=c[g>>2]|0;if(!b){b=6;l=17;break}}if((l|0)==17)return b|0;if(!b){e=6;return e|0}g=c[k+80>>2]|0;b=c[b+4>>2]|0;if(!(g+(b<<4)|0)){e=6;return e|0}f=c[g+(b<<4)+4>>2]|0;if((f|0)==2){c[e>>2]=2;c[e+4>>2]=c[g+(b<<4)+12>>2];e=0;return e|0}else if((f|0)==1){c[e>>2]=1;c[e+4>>2]=c[g+(b<<4)+12>>2];e=0;return e|0}else if((f|0)==3){c[e>>2]=3;c[e+4>>2]=c[g+(b<<4)+12>>2];e=0;return e|0}else{e=6;return e|0}return 0}function pl(b){b=b|0;c[b+28>>2]=1;a[b+32>>0]=0;c[b+36>>2]=500;c[b+40>>2]=400;c[b+44>>2]=1e3;c[b+48>>2]=275;c[b+52>>2]=1667;c[b+56>>2]=275;c[b+60>>2]=2333;c[b+64>>2]=0;return 0}function ql(a){a=a|0;return}function rl(a,b){a=a|0;b=b|0;var d=0;d=Jg(10304,b)|0;if(d){b=d;return b|0}if(!a){b=0;return b|0}d=c[a+4>>2]|0;if(!d){b=0;return b|0}d=yh(d,85592)|0;if(!d){b=0;return b|0}b=Pd[c[(c[d>>2]|0)+32>>2]&511](d,b)|0;return b|0}function sl(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=i;i=i+112|0;O=S+96|0;J=S;K=S+4|0;E=S+8|0;F=S+16|0;p=S+48|0;R=S+80|0;Q=S+84|0;l=g+96|0;r=c[(c[l>>2]|0)+4>>2]|0;m=zh(r,85592)|0;do if(m){G=Ah(c[l>>2]|0,89040)|0;D=zh(r,86544)|0;N=bh(f,0)|0;c[R>>2]=N;if(!N){N=Qd[c[m+4>>2]&127](f,g,h,j,k)|0;c[R>>2]=N;if(!N){if((c[g+148>>2]|0)!=1330926671){c[R>>2]=2;break}if((h|0)<0){Q=0;i=S;return Q|0}n=g+504|0;N=Xd[c[n>>2]&255](g,1751474532,f,0)|0;c[R>>2]=N;if(!N){N=Qd[c[m+8>>2]&127](f,g,h,j,k)|0;c[R>>2]=N;if(!N)l=0;else break}else{N=Pd[c[m+32>>2]&511](g,f)|0;c[R>>2]=N;if(!N)l=1;else break}N=Xd[c[n>>2]&255](g,1128678944,f,0)|0;c[R>>2]=N;if(!N){H=l;N=1}else break}else{N=bh(f,0)|0;c[R>>2]=N;if(N)break;c[R>>2]=0;H=1;N=0}M=c[g+100>>2]|0;P=yg(M,2980,R)|0;if(!(c[R>>2]|0)){c[g+652>>2]=P;z=f+28|0;m=c[z>>2]|0;sfa(P|0,0,2980)|0;c[F+0>>2]=0;c[F+4>>2]=0;c[F+8>>2]=0;c[F+12>>2]=0;c[F+16>>2]=0;c[F+20>>2]=0;c[F+24>>2]=0;c[F+28>>2]=0;c[P>>2]=f;c[P+4>>2]=m;n=P+1324|0;y=Qh(f)|0;C=fi(f,6720,P)|0;c[E>>2]=C;a:do if(!C){if(((a[P+16>>0]|0)==1?(C=a[P+18>>0]|0,q=C&255,(C&255)>=4):0)?(d[P+19>>0]|0)<=4:0){C=Mh(f,q+-4|0)|0;c[E>>2]=C;if(C)break;C=P+20|0;B=us(C,f,0)|0;c[E>>2]=B;if(B)break;q=P+1208|0;B=us(q,f,0)|0;c[E>>2]=B;if(B)break;B=us(F,f,1)|0;c[E>>2]=B;if(B)break;o=P+84|0;B=us(o,f,1)|0;c[E>>2]=B;if(B)break;B=vs(F,P+1316|0,P+1320|0)|0;c[E>>2]=B;if(B)break;c[P+1312>>2]=c[F+8>>2];l=c[P+28>>2]|0;do if(!(H<<24>>24))if(l>>>0>1){c[E>>2]=3;break a}else B=0;else if((l|0)>(h|0)){c[P+8>>2]=l;B=h;break}else{c[E>>2]=6;break a}while(0);if((h|0)<0)break;x=ws(n,q,B,f,y,r)|0;c[E>>2]=x;if(x)break;k=P+1436|0;x=bh(f,(c[k>>2]|0)+y|0)|0;c[E>>2]=x;if(x)break;x=us(P+1176|0,f,0)|0;c[E>>2]=x;if(x)break;x=P+1456|0;if((c[x>>2]|0)!=65535){w=bh(f,(c[P+1488>>2]|0)+y|0)|0;c[E>>2]=w;if(w)break;w=us(p,f,0)|0;c[E>>2]=w;if(w)break;j=p+8|0;l=c[j>>2]|0;b:do if(l>>>0>256)l=0;else{c[P+1896>>2]=l;n=Dg(m,572,0,l,0,E)|0;l=c[E>>2]|0;if(l)break;l=c[j>>2]|0;if(l){q=0;do{c[P+(q<<2)+1900>>2]=n+(q*572|0);q=q+1|0}while((q|0)!=(l|0));q=0;do{l=ws(c[P+(q<<2)+1900>>2]|0,p,q,f,y,r)|0;c[E>>2]=l;q=q+1|0;if(l)break b}while(q>>>0<(c[j>>2]|0)>>>0)}n=c[P+1184>>2]|0;l=bh(f,(c[P+1492>>2]|0)+y|0)|0;c[O>>2]=l;do if(!l){q=bi(f,O)|0;l=c[O>>2]|0;if(l)break;a[P+2924>>0]=q;c[P+2944>>2]=0;l=q&255;if(!l){c[P+2936>>2]=n;l=n}else if((l|0)==3){q=Nh(f,O)|0;l=c[O>>2]|0;if(l)break;l=((q&65535)*3|0)+2|0;c[P+2936>>2]=l}else{c[O>>2]=3;l=3;break}l=Th(f,l,P+2932|0)|0;c[O>>2]=l}while(0);c[E>>2]=l}while(0);n=c[p>>2]|0;if(n){l=c[n+28>>2]|0;q=p+28|0;if(c[q>>2]|0)Vh(n,q);Ag(l,c[p+24>>2]|0);c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=0;c[p+20>>2]=0;c[p+24>>2]=0;c[p+28>>2]=0;l=c[E>>2]|0}if(l)break}else c[P+1896>>2]=0;if(!(c[k>>2]|0)){c[E>>2]=3;break}w=P+12|0;c[w>>2]=c[P+1184>>2];v=vs(o,P+1308|0,0)|0;c[E>>2]=v;if(v)break;t=c[w>>2]|0;c:do if(t){if((c[x>>2]|0)==65535)s=0;else s=H<<24>>24!=0&1;u=P+1152|0;l=c[P+1428>>2]|0;v=c[z>>2]|0;c[J>>2]=0;d:do if(l>>>0>2){L=l+y|0;o=P+1156|0;c[o>>2]=L;L=bh(f,L)|0;c[J>>2]=L;if(L){A=o;L=114;break}c[u>>2]=(bi(f,J)|0)&255;if(c[J>>2]|0){A=o;L=114;break}l=Dg(v,2,0,t,0,J)|0;p=P+1160|0;c[p>>2]=l;if(c[J>>2]|0){A=o;L=114;break}b[l>>1]=0;l=c[u>>2]|0;if(!l){L=Uh(f,(t<<1)+-2|0)|0;c[J>>2]=L;if(L){A=o;L=114;break}if(t>>>0>1){l=1;do{L=Zh(f)|0;b[(c[p>>2]|0)+(l<<1)>>1]=L;l=l+1|0}while((l|0)!=(t|0))}Xh(f);L=100;break}else if((l|0)==2|(l|0)==1){if(t>>>0>1)l=1;else{L=100;break}while(1){m=Nh(f,J)|0;if(c[J>>2]|0){A=o;L=114;break d}if((c[u>>2]|0)==2){q=(Nh(f,J)|0)&65535;if(c[J>>2]|0){A=o;L=114;break d}}else{q=(bi(f,J)|0)&255;if(c[J>>2]|0){A=o;L=114;break d}}n=m&65535;if(l>>>0>>0){k=c[p>>2]|0;j=l-t|0;r=~(n>>>0>(q^65535)>>>0?n^65535:q);r=j>>>0>r>>>0?j:r;j=0-r|0;q=m;n=0;m=l;while(1){b[k+(m<<1)>>1]=q;n=n+1|0;if((n|0)==(j|0))break;else{q=q+1<<16>>16;m=m+1|0}}l=l-r|0}if(l>>>0>=t>>>0){L=100;break}}}else{c[J>>2]=3;A=o;L=114;break}}else{q=P+1156|0;c[q>>2]=l;if((l|0)==2){if(t>>>0>87){c[J>>2]=3;A=q;L=114;break}l=Dg(v,2,0,t,0,J)|0;c[P+1160>>2]=l;if(c[J>>2]|0){A=q;L=114;break}qfa(l|0,8568,t<<1|0)|0;L=100;break}else if((l|0)==1){if(t>>>0>166){c[J>>2]=3;A=q;L=114;break}l=Dg(v,2,0,t,0,J)|0;c[P+1160>>2]=l;if(c[J>>2]|0){A=q;L=114;break}qfa(l|0,8232,t<<1|0)|0;L=100;break}else if(!l){if(t>>>0>229){c[J>>2]=3;A=q;L=114;break}l=Dg(v,2,0,t,0,J)|0;c[P+1160>>2]=l;if(c[J>>2]|0){A=q;L=114;break}qfa(l|0,7768,t<<1|0)|0;L=100;break}else{c[J>>2]=3;A=q;L=114;break}}while(0);do if((L|0)==100){if(!(s<<24>>24))l=c[J>>2]|0;else{c[O>>2]=0;r=P+1168|0;do if(!(c[r>>2]|0)){j=P+1160|0;q=c[j>>2]|0;n=0;l=0;do{s=b[q+(n<<1)>>1]|0;l=(s&65535)>(l&65535)?s:l;n=n+1|0}while((n|0)!=(t|0));n=l&65535;m=Dg(v,2,0,n+1|0,0,O)|0;c[P+1164>>2]=m;l=c[O>>2]|0;if(l)break;l=t+-1|0;if((l|0)>-1){q=c[j>>2]|0;do{b[m+(e[q+(l<<1)>>1]<<1)>>1]=l;l=l+-1|0}while((l|0)>-1)}c[r>>2]=n;c[P+1172>>2]=t;l=0}else l=0;while(0);c[J>>2]=l}if(!l){c[E>>2]=0;break}else{A=P+1156|0;L=114;break}}while(0);if((L|0)==114?(t=P+1160|0,Ag(v,c[t>>2]|0),c[t>>2]=0,s=P+1164|0,Ag(v,c[s>>2]|0),c[s>>2]=0,c[u>>2]=0,c[A>>2]=0,c[t>>2]=0,A=c[J>>2]|0,c[E>>2]=A,(A|0)!=0):0)break a;if((c[x>>2]|0)!=65535)break;t=c[w>>2]|0;l=c[P+1432>>2]|0;c[J>>2]=0;s=P+1160|0;e:do if(!(c[s>>2]|0)){c[J>>2]=3;l=3}else{q=0;do{b[P+(q<<1)+128>>1]=0;b[P+(q<<1)+640>>1]=0;q=q+1|0}while((q|0)!=256);do if(l>>>0>1){l=l+y|0;c[P+120>>2]=l;l=bh(f,l)|0;c[J>>2]=l;if(l)break e;p=P+116|0;c[p>>2]=(bi(f,J)|0)&255;l=c[J>>2]|0;if(l)break e;q=bi(f,J)|0;o=q&255;l=c[J>>2]|0;if(l)break e;l=c[p>>2]&127;do if((l|0)==1){k=P+124|0;c[k>>2]=0;if(!(q<<24>>24))break;else{j=1;r=0}do{m=(bi(f,J)|0)&255;l=c[J>>2]|0;if(l)break e;q=bi(f,J)|0;l=c[J>>2]|0;if(l)break e;q=q&255;n=q+1|0;if(n>>>0>(c[k>>2]|0)>>>0)c[k>>2]=n;l=j;j=n+j|0;if(l>>>0>>0){n=l+1+q|0;q=m;while(1){if(l>>>0>>0&q>>>0<256){b[P+(q<<1)+640>>1]=l;b[P+(q<<1)+128>>1]=b[(c[s>>2]|0)+(l<<1)>>1]|0}l=l+1|0;if((l|0)==(n|0))break;else q=q+1|0}}r=r+1|0}while(r>>>0>>0);if((c[k>>2]|0)>>>0<=256)break;c[k>>2]=256}else if(!l){c[P+124>>2]=o+1;l=Uh(f,o)|0;c[J>>2]=l;if(l)break e;if(q<<24>>24){q=1;n=c[f+32>>2]|0;while(1){l=d[n>>0]|0;if(q>>>0>>0){b[P+(l<<1)+640>>1]=q;b[P+(l<<1)+128>>1]=b[(c[s>>2]|0)+(q<<1)>>1]|0}q=q+1|0;if(q>>>0>o>>>0)break;else n=n+1|0}}Xh(f)}else{c[J>>2]=3;l=3;break e}while(0);if(!(c[p>>2]&128)){f=c[J>>2]|0;c[E>>2]=f;if(!f)break c;else break a}q=bi(f,J)|0;k=q&255;l=c[J>>2]|0;if(l)break e;if(!(q<<24>>24))break;m=(t|0)==0;r=0;do{j=(bi(f,J)|0)&255;l=c[J>>2]|0;if(l)break e;n=Nh(f,J)|0;l=c[J>>2]|0;if(l)break e;b[P+(j<<1)+128>>1]=n;f:do if(!m){q=c[s>>2]|0;l=0;while(1){if((b[q+(l<<1)>>1]|0)==n<<16>>16)break;l=l+1|0;if(l>>>0>=t>>>0)break f}b[P+(j<<1)+640>>1]=l}while(0);r=r+1|0}while(r>>>0>>0)}else{if((l|0)==1)qfa(P+128|0,7256,512)|0;else if(!l)qfa(P+128|0,6744,512)|0;else{c[J>>2]=3;l=3;break e}k=P+124|0;c[k>>2]=0;j=c[z>>2]|0;c[O>>2]=0;r=P+1168|0;l=c[r>>2]|0;if(!l){if(!t)l=0;else{q=c[s>>2]|0;n=0;l=0;do{f=b[q+(n<<1)>>1]|0;l=(f&65535)>(l&65535)?f:l;n=n+1|0}while((n|0)!=(t|0))}m=l&65535;n=Dg(j,2,0,m+1|0,0,O)|0;j=P+1164|0;c[j>>2]=n;l=c[O>>2]|0;if(l){c[J>>2]=l;break e}l=t+-1|0;if((l|0)>-1){q=c[s>>2]|0;do{b[n+(e[q+(l<<1)>>1]<<1)>>1]=l;l=l+-1|0}while((l|0)>-1)}c[r>>2]=m;c[P+1172>>2]=t}else{j=P+1164|0;m=l}c[J>>2]=0;l=0;do{n=P+(l<<1)+128|0;q=b[n>>1]|0;do if(!(q<<16>>16))L=176;else{q=q&65535;if(m>>>0>>0){L=176;break}q=b[(c[j>>2]|0)+(q<<1)>>1]|0;if(!(q<<16>>16)){L=176;break}b[P+(l<<1)+640>>1]=q;l=l+1|0;c[k>>2]=l}while(0);if((L|0)==176){L=0;b[P+(l<<1)+640>>1]=0;b[n>>1]=0;l=l+1|0}}while((l|0)!=256)}while(0);c[E>>2]=0;break c}while(0);c[E>>2]=l;break a}while(0);l=c[(c[C>>2]|0)+28>>2]|0;B=xs(C,B,O,J)|0;c[K>>2]=B;do if(!B){n=c[J>>2]|0;l=yg(l,n+1|0,K)|0;if(!(c[K>>2]|0)){qfa(l|0,c[O>>2]|0,n|0)|0;a[l+n>>0]=0}if(c[P+48>>2]|0)break;Vh(c[C>>2]|0,O)}else l=0;while(0);c[P+1304>>2]=l;break}c[E>>2]=2}while(0);l=c[F>>2]|0;if(l){n=c[l+28>>2]|0;m=F+28|0;if(c[m>>2]|0)Vh(l,m);Ag(n,c[F+24>>2]|0);c[F+0>>2]=0;c[F+4>>2]=0;c[F+8>>2]=0;c[F+12>>2]=0;c[F+16>>2]=0;c[F+20>>2]=0;c[F+24>>2]=0;c[F+28>>2]=0}F=c[E>>2]|0;c[R>>2]=F;if(!F){c[P+2952>>2]=D;w=P+2956|0;c[w>>2]=G;c[g+4>>2]=h;t=g+16|0;c[t>>2]=c[P+12>>2];x=P+1456|0;if(!((c[x>>2]|0)!=65535|(G|0)!=0)){c[R>>2]=11;break}p=P+1388|0;if(!(a[p>>0]|0)){if(!(H<<24>>24))l=e[g+68>>1]|0;else l=1e3;s=P+1392|0;c[s>>2]=l}else s=P+1392|0;k=P+1372|0;o=P+1396|0;l=P+1384|0;n=c[l>>2]|0;n=(n|0)<0?0-n|0:n;if((n|0)==65536){l=o;n=c[P+1400>>2]|0}else{c[s>>2]=rg(c[s>>2]|0,n)|0;c[k>>2]=rg(c[k>>2]|0,n)|0;G=P+1380|0;c[G>>2]=rg(c[G>>2]|0,n)|0;G=P+1376|0;c[G>>2]=rg(c[G>>2]|0,n)|0;c[l>>2]=rg(c[l>>2]|0,n)|0;c[o>>2]=rg(c[o>>2]|0,n)|0;l=P+1400|0;n=rg(c[l>>2]|0,n)|0;c[l>>2]=n;l=o}c[l>>2]=c[l>>2]>>16;c[P+1400>>2]=n>>16;l=c[P+1896>>2]|0;if(l){r=P+1900|0;do{l=l+-1|0;j=c[r+(l<<2)>>2]|0;do if(!(a[j+64>>0]|0)){F=j+48|0;c[F+0>>2]=c[k+0>>2];c[F+4>>2]=c[k+4>>2];c[F+8>>2]=c[k+8>>2];c[F+12>>2]=c[k+12>>2];F=o;G=c[F+4>>2]|0;q=j+72|0;c[q>>2]=c[F>>2];c[q+4>>2]=G;q=j+68|0;c[q>>2]=c[s>>2]}else{if(!(a[p>>0]|0)){q=j+68|0;break}q=c[s>>2]|0;n=j+68|0;if(q>>>0>1?(I=c[n>>2]|0,I>>>0>1):0)q=q>>>0>>0?q:I;else q=1;tg(k,j+48|0,q);ug(j+72|0,k,q);c[n>>2]=og(c[n>>2]|0,c[s>>2]|0,q)|0;q=n}while(0);n=j+60|0;m=c[n>>2]|0;m=(m|0)<0?0-m|0:m;if((m|0)==65536){q=j+72|0;n=c[j+76>>2]|0}else{c[q>>2]=rg(c[q>>2]|0,m)|0;q=j+48|0;c[q>>2]=rg(c[q>>2]|0,m)|0;q=j+56|0;c[q>>2]=rg(c[q>>2]|0,m)|0;q=j+52|0;c[q>>2]=rg(c[q>>2]|0,m)|0;c[n>>2]=rg(c[n>>2]|0,m)|0;q=j+72|0;c[q>>2]=rg(c[q>>2]|0,m)|0;G=j+76|0;n=rg(c[G>>2]|0,m)|0;c[G>>2]=n}c[q>>2]=c[q>>2]>>16;c[j+76>>2]=n>>16}while((l|0)!=0)}v=H<<24>>24==0;if(!v){c[g>>2]=c[P+8>>2];if((c[x>>2]|0)==65535)l=c[P+1184>>2]|0;else l=(c[P+1168>>2]|0)+1|0;c[t>>2]=l;c[g+52>>2]=c[P+1408>>2]>>16;l=c[P+1412>>2]>>16;c[g+56>>2]=l;c[g+60>>2]=(c[P+1416>>2]|0)+65535>>16;I=(c[P+1420>>2]|0)+65535>>16;c[g+64>>2]=I;m=c[s>>2]|0;b[g+68>>1]=m;b[g+70>>1]=I;b[g+72>>1]=l;m=(((m&65535)*12|0)>>>0)/10|0;l=I-l|0;b[g+74>>1]=(m<<16>>16|0)<(l|0)?l:m;b[g+80>>1]=(c[P+1356>>2]|0)>>>16;b[g+82>>1]=(c[P+1360>>2]|0)>>>16;m=P+20|0;l=c[(c[m>>2]|0)+28>>2]|0;h=xs(m,h,O,J)|0;c[K>>2]=h;if(!h){n=c[J>>2]|0;l=yg(l,n+1|0,K)|0;if(!(c[K>>2]|0)){qfa(l|0,c[O>>2]|0,n|0)|0;a[l+n>>0]=0}if(!(c[P+48>>2]|0)){Vh(c[m>>2]|0,O);m=l}else m=l}else m=0;u=g+20|0;c[u>>2]=m;g:do if(!m){l=c[P+1496>>2]|0;if((l|0)==65535)L=274;else{if(l>>>0>390){l=l+-391|0;if((c[P+1312>>2]|0)>>>0<=l>>>0){L=274;break}l=c[(c[P+1316>>2]|0)+(l<<2)>>2]|0}else{m=c[w>>2]|0;if(!m){L=274;break}l=Ed[c[m+20>>2]&511](l)|0}if(!l){L=274;break}c[u>>2]=oi(M,l,O)|0;L=274}}else{l=c[P+1336>>2]|0;do if((l|0)!=65535)if(l>>>0>390){l=l+-391|0;if((c[P+1312>>2]|0)>>>0<=l>>>0){l=0;t=m;break}l=c[(c[P+1316>>2]|0)+(l<<2)>>2]|0;t=m;break}else{n=c[w>>2]|0;if(!n){l=0;t=m;break}l=Ed[c[n+20>>2]&511](l)|0;t=c[u>>2]|0;break}else{l=0;t=m}while(0);n=tfa(t|0)|0;j=t+6|0;h:do if((n|0)>5){k=t+1|0;o=t+2|0;p=t+3|0;q=t+4|0;r=t+5|0;s=1;m=n+1|0;do{if((a[j>>0]|0)!=43)break h;s=((a[r>>0]|0)+-65&255)<26?(((a[q>>0]|0)+-65&255)<26?(((a[p>>0]|0)+-65&255)<26?(((a[o>>0]|0)+-65&255)<26?(((a[k>>0]|0)+-65&255)<26?(((a[t>>0]|0)+-65&255)<26?s:0):0):0):0):0):0;if(!(s<<24>>24))break h;if((m|0)>7){n=7;do{a[t+(n+-7)>>0]=a[t+n>>0]|0;n=n+1|0}while((n|0)!=(m|0))}m=m+-7|0}while((m|0)>6)}while(0);m=c[P+1340>>2]|0;do if(!m)n=t;else if((m|0)!=65535)if(m>>>0>390){n=m+-391|0;if((c[P+1312>>2]|0)>>>0<=n>>>0){n=0;L=246;break}n=c[(c[P+1316>>2]|0)+(n<<2)>>2]|0;L=246;break}else{n=c[w>>2]|0;if(!n){n=0;L=246;break}n=Ed[c[n+20>>2]&511](m)|0;L=246;break}else{n=0;L=246}while(0);if((L|0)==246)n=(n|0)==0?t:n;if(!((l|0)!=0&(n|0)!=0)){L=274;break}m=a[l>>0]|0;if(!(m<<24>>24)){L=274;break}i:while(1){while(1){j=a[n>>0]|0;if(m<<24>>24==j<<24>>24){L=251;break}if(m<<24>>24==45|m<<24>>24==32)break;if(!(j<<24>>24))break i;else if(!(j<<24>>24==45|j<<24>>24==32)){L=274;break g}if(!(m<<24>>24)){L=274;break g}else n=n+1|0}if((L|0)==251){L=0;n=n+1|0}l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){L=274;break g}}k=oi(M,l,O)|0;j=c[u>>2]|0;l=tfa(j|0)|0;n=tfa(k|0)|0;j:do if((l|0)>(n|0)){if((n|0)>=1){m=1;do{if((a[j+(l-m)>>0]|0)!=(a[k+(n-m)>>0]|0))break j;m=m+1|0}while((n|0)>=(m|0))}l=l-n|0;n=l+-1|0;if((n|0)<=0)break;while(1){K=a[j+n>>0]|0;if(!(K<<24>>24==43|K<<24>>24==95|K<<24>>24==32|K<<24>>24==45))break;l=n+-1|0;if((l|0)>0){K=n;n=l;l=K}else break j}a[j+l>>0]=0}while(0);if(!k){L=274;break}c[g+24>>2]=k}while(0);if((L|0)==274)c[g+24>>2]=oi(M,90464,O)|0;l=N<<24>>24==0?2065:2073;c[g+8>>2]=(a[P+1348>>0]|0)==0?l:l|4;l=(c[P+1352>>2]|0)!=0&1;j=c[P+1344>>2]|0;do if((j|0)!=65535){if(j>>>0>390){m=j+-391|0;if((c[P+1312>>2]|0)>>>0<=m>>>0)break;m=c[(c[P+1316>>2]|0)+(m<<2)>>2]|0}else{m=c[w>>2]|0;if(!m)break;m=Ed[c[m+20>>2]&511](j)|0}if(!m)break;if((gfa(m,90488)|0)!=0?(gfa(m,86560)|0)!=0:0)break;l=l|2}while(0);do if(!(l&2)){m=c[g+24>>2]|0;if(!m)break;if((hfa(m,90488,4)|0)!=0?(hfa(m,86560,5)|0)!=0:0)break;l=l|2}while(0);c[g+12>>2]=l}l=(c[x>>2]|0)==65535;if(!l){if(!(l|v)){N=g+8|0;c[N>>2]=c[N>>2]|4096}}else{N=g+8|0;c[N>>2]=c[N>>2]|512}k=g+36|0;m=c[k>>2]|0;k:do if(!m){m=0;L=300}else{l=c[g+40>>2]|0;o=0;while(1){j=c[l+(o<<2)>>2]|0;n=b[j+8>>1]|0;if(n<<16>>16==3){if((b[j+10>>1]|0)==1)break k}else if(!(n<<16>>16))break k;o=o+1|0;if(o>>>0>=m>>>0){L=300;break}}}while(0);if((L|0)==300){if(!v?(c[x>>2]|0)!=65535:0)break;c[Q>>2]=g;b[Q+8>>1]=3;b[Q+10>>1]=1;c[Q+4>>2]=1970170211;N=qh(6680,0,Q,0)|0;c[R>>2]=N;if(!((N|0)==0|(N&255|0)==163))break;c[R>>2]=0;l=g+92|0;if((c[l>>2]|0)==0?(m|0)!=(c[k>>2]|0):0)c[l>>2]=c[(c[g+40>>2]|0)+(m<<2)>>2]}if(c[P+124>>2]|0){c[Q>>2]=g;b[Q+8>>1]=7;l=c[P+120>>2]|0;do if(l){m=Q+10|0;if((l|0)==1){b[m>>1]=1;c[Q+4>>2]=1094992453;break}else{b[m>>1]=2;c[Q+4>>2]=1094992451;break}}else{b[Q+10>>1]=0;c[Q+4>>2]=1094995778}while(0);c[R>>2]=qh(6640,0,Q,0)|0}}}}}else c[R>>2]=11;while(0);Q=c[R>>2]|0;i=S;return Q|0}function tl(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!b)return;m=c[b+100>>2]|0;d=c[b+528>>2]|0;if(d)Bd[c[d+12>>2]&511](b);k=b+652|0;l=c[k>>2]|0;if(!l)return;j=c[l+4>>2]|0;d=l+84|0;b=c[d>>2]|0;if(b){e=c[b+28>>2]|0;f=l+112|0;if(c[f>>2]|0)Vh(b,f);Ag(e,c[l+108>>2]|0);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0}d=l+1208|0;f=c[d>>2]|0;if(f){b=c[f+28>>2]|0;e=l+1236|0;if(c[e>>2]|0)Vh(f,e);Ag(b,c[l+1232>>2]|0);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0}d=l+20|0;f=c[d>>2]|0;if(f){b=c[f+28>>2]|0;e=l+48|0;if(c[e>>2]|0)Vh(f,e);Ag(b,c[l+44>>2]|0);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0}d=l+1176|0;f=c[d>>2]|0;if(f){b=c[f+28>>2]|0;e=l+1204|0;if(c[e>>2]|0)Vh(f,e);Ag(b,c[l+1200>>2]|0);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0}i=l+1896|0;d=c[i>>2]|0;if(d){h=0;do{g=c[l+(h<<2)+1900>>2]|0;if(g){d=g+536|0;f=c[d>>2]|0;if(f){b=c[f+28>>2]|0;e=g+564|0;if(c[e>>2]|0)Vh(f,e);Ag(b,c[g+560>>2]|0);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0}d=g+568|0;Ag(j,c[d>>2]|0);c[d>>2]=0;d=c[i>>2]|0}h=h+1|0}while(h>>>0>>0);i=l+1900|0;Ag(j,c[i>>2]|0);c[i>>2]=0}c[l+116>>2]=0;c[l+120>>2]=0;c[l+124>>2]=0;f=c[(c[l>>2]|0)+28>>2]|0;d=l+1164|0;Ag(f,c[d>>2]|0);c[d>>2]=0;c[l+1168>>2]=0;d=l+1160|0;Ag(f,c[d>>2]|0);c[d>>2]=0;c[l+1152>>2]=0;c[l+1156>>2]=0;d=l+1860|0;f=c[d>>2]|0;if(f){b=c[f+28>>2]|0;e=l+1888|0;if(c[e>>2]|0)Vh(f,e);Ag(b,c[l+1884>>2]|0);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0}d=l+1892|0;Ag(j,c[d>>2]|0);c[d>>2]=0;d=l+2932|0;if(c[d>>2]|0)Vh(c[l>>2]|0,d);c[l+2936>>2]=0;a[l+2924>>0]=0;c[l+2928>>2]=0;d=l+2960|0;Ag(j,c[d>>2]|0);c[d>>2]=0;d=l+1304|0;Ag(j,c[d>>2]|0);c[d>>2]=0;d=l+1308|0;Ag(j,c[d>>2]|0);c[d>>2]=0;d=l+1316|0;Ag(j,c[d>>2]|0);c[d>>2]=0;d=l+1320|0;Ag(j,c[d>>2]|0);c[d>>2]=0;d=c[l+2976>>2]|0;if(d){l=l+2972|0;Bd[d&511](c[l>>2]|0);Ag(j,c[l>>2]|0);c[l>>2]=0}Ag(m,c[k>>2]|0);c[k>>2]=0;return}function ul(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+208|0;j=l+196|0;k=l;c[j>>2]=0;d=c[a>>2]|0;b=c[(c[d+652>>2]|0)+2952>>2]|0;d=yh(c[(c[d+96>>2]|0)+4>>2]|0,86544)|0;do if(((d|0)!=0&(b|0)!=0?(e=c[b>>2]|0,(e|0)!=0):0)?(h=Ed[e&511](d)|0,(h|0)!=0):0){g=c[a>>2]|0;d=c[g+652>>2]|0;g=yg(c[g+100>>2]|0,1028,j)|0;b=c[j>>2]|0;if(b){j=b;i=l;return j|0}ys(d+1324|0,k);b=Hd[c[h>>2]&255](c[(c[a>>2]|0)+100>>2]|0,k,g)|0;c[j>>2]=b;if(b){j=b;i=l;return j|0}e=d+1900|0;f=g+4|0;d=c[d+1896>>2]|0;while(1){if(!d){d=9;break}d=d+-1|0;ys(c[e+(d<<2)>>2]|0,k);b=Hd[c[h>>2]&255](c[(c[a>>2]|0)+100>>2]|0,k,f+(d<<2)|0)|0;c[j>>2]=b;if(b){d=11;break}}if((d|0)==9){c[a+40>>2]=g;break}else if((d|0)==11){i=l;return b|0}}while(0);c[a+44>>2]=-1;j=0;i=l;return j|0}function vl(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;d=c[b+652>>2]|0;e=c[a+40>>2]|0;if(!e)return;a=c[d+2952>>2]|0;b=yh(c[(c[b+96>>2]|0)+4>>2]|0,86544)|0;if(!((b|0)!=0&(a|0)!=0))return;a=c[a>>2]|0;if(!a)return;a=Ed[a&511](b)|0;if(!a)return;b=a+8|0;Bd[c[b>>2]&511](c[e>>2]|0);a=c[d+1896>>2]|0;if(!a)return;do{a=a+-1|0;Bd[c[b>>2]&511](c[e+(a<<2)+4>>2]|0)}while((a|0)!=0);return}function wl(a){a=a|0;var b=0,d=0;b=c[a+4>>2]|0;d=c[(c[b+652>>2]|0)+2952>>2]|0;if(!d)return 0;b=yh(c[(c[b+96>>2]|0)+4>>2]|0,86544)|0;if(!b)return 0;d=Ed[c[d+8>>2]&511](b)|0;c[(c[a+156>>2]|0)+36>>2]=d;return 0}function xl(a){a=a|0;c[(c[a+156>>2]|0)+36>>2]=0;return}function yl(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Y=i;i=i+1040|0;H=Y+48|0;V=Y+72|0;U=Y+56|0;q=Y+1008|0;r=Y+1024|0;s=Y+1030|0;I=Y+44|0;E=Y+40|0;L=Y+24|0;X=Y+8|0;T=Y;Q=Y+1026|0;P=Y+1028|0;if(!f){f=37;i=Y;return f|0}m=j|3;l=(g|0)==0?m:j;R=(l&1|0)==0?g:0;if(R){j=c[g>>2]|0;if((j|0)==(c[f+4>>2]|0))N=j;else{f=35;i=Y;return f|0}}else N=c[f+4>>2]|0;F=N+652|0;G=c[F>>2]|0;if((c[G+1456>>2]|0)!=65535?(k=c[G+1164>>2]|0,(k|0)!=0):0)if(h){if((c[G+1168>>2]|0)>>>0>>0){f=6;i=Y;return f|0}j=b[k+(h<<1)>>1]|0;if(!(j<<16>>16)){f=6;i=Y;return f|0}else J=j&65535}else J=0;else if((c[G+12>>2]|0)>>>0>h>>>0)J=h;else{f=6;i=Y;return f|0}S=(l&1024|0)==0?l:m;M=f+164|0;c[M>>2]=65536;O=f+168|0;c[O>>2]=65536;K=(R|0)!=0;if(((K?(c[M>>2]=c[R+16>>2],c[O>>2]=c[R+20>>2],p=c[R>>2]|0,o=c[p+528>>2]|0,p=c[p+104>>2]|0,n=c[R+44>>2]|0,(n|0)!=-1):0)?(c[o+96>>2]|0)!=0&(S&8|0)==0:0)?(zd[c[o+72>>2]&7](N,n,J,S,p,f+76|0,q)|0)==0:0){b[f+110>>1]=0;b[f+108>>1]=0;c[f+24>>2]=e[q+2>>1]<<6;c[f+28>>2]=e[q>>1]<<6;M=b[q+4>>1]|0;c[f+32>>2]=M<<6;X=b[q+6>>1]|0;c[f+36>>2]=X<<6;c[f+40>>2]=e[q+8>>1]<<6;Q=b[q+10>>1]|0;c[f+44>>2]=Q<<6;j=b[q+12>>1]|0;c[f+48>>2]=j<<6;c[f+52>>2]=e[q+14>>1]<<6;c[f+72>>2]=1651078259;R=(S&16|0)==0;c[f+100>>2]=R?M:Q;c[f+104>>2]=R?X:j;j=N+528|0;Qd[c[(c[j>>2]|0)+112>>2]&127](N,0,J,s,r)|0;c[f+56>>2]=e[r>>1];if((a[N+292>>0]|0)!=0?(b[N+330>>1]|0)!=0:0){Qd[c[(c[j>>2]|0)+112>>2]&127](N,1,J,s,r)|0;c[f+60>>2]=e[r>>1];f=0;i=Y;return f|0}j=N+364|0;if((b[j>>1]|0)==-1){X=N+216|0;c[f+60>>2]=(b[X+4>>1]|0)-(b[X+6>>1]|0);f=0;i=Y;return f|0}else{c[f+60>>2]=(b[j+70>>1]|0)-(b[j+72>>1]|0);f=0;i=Y;return f|0}}if(S&16384){f=6;i=Y;return f|0}p=c[G+1896>>2]|0;if(p){j=d[G+2924>>0]|0;a:do if((j|0)==3){n=G+2940|0;o=G+2944|0;if((J-(c[n>>2]|0)|0)>>>0<(c[o>>2]|0)>>>0){j=a[G+2948>>0]|0;break}m=c[G+2932>>2]|0;h=m+(c[G+2936>>2]|0)|0;l=m;k=d[m>>0]<<8|d[m+1>>0];m=m+2|0;while(1){if(k>>>0>J>>>0){j=0;break a}j=m;m=l+5|0;D=l;l=l+3|0;g=k;k=d[l>>0]<<8|d[D+4>>0];if(k>>>0>J>>>0)break;if(m>>>0>=h>>>0){j=0;break a}}j=a[j>>0]|0;c[n>>2]=g;c[o>>2]=k-g;a[G+2948>>0]=j}else if(!j)j=a[(c[G+2932>>2]|0)+J>>0]|0;else j=0;while(0);if((j&255)>>>0>=p>>>0)j=p+255&255;k=c[G+1392>>2]|0;h=G+1900+((j&255)<<2)|0;g=c[h>>2]|0;j=c[g+68>>2]|0;g=g+48|0;c[U+0>>2]=c[g+0>>2];c[U+4>>2]=c[g+4>>2];c[U+8>>2]=c[g+8>>2];c[U+12>>2]=c[g+12>>2];h=c[h>>2]|0;g=c[h+72>>2]|0;h=c[h+76>>2]|0;if((k|0)==(j|0)){B=g;v=0}else{c[M>>2]=og(c[M>>2]|0,k,j)|0;c[O>>2]=og(c[O>>2]|0,k,j)|0;B=g;v=1}}else{B=G+1372|0;c[U+0>>2]=c[B+0>>2];c[U+4>>2]=c[B+4>>2];c[U+8>>2]=c[B+8>>2];c[U+12>>2]=c[B+12>>2];B=c[G+1396>>2]|0;h=c[G+1400>>2]|0;v=0}D=f+108|0;C=f+110|0;b[C>>1]=0;b[D>>1]=0;w=(S>>>1&1^1)&255;z=S&1;A=(z|0)!=0;t=f+160|0;a[t>>0]=w;a[f+161>>0]=z^1;z=f+72|0;c[z>>2]=1869968492;p=S>>>16&15;k=c[F>>2]|0;sfa(V|0,0,932)|0;a[V+65>>0]=1;m=V+4|0;c[m>>2]=N;y=V+8|0;c[y>>2]=f;c[V>>2]=c[N+100>>2];j=f+156|0;o=c[c[j>>2]>>2]|0;c[V+12>>2]=o;c[V+16>>2]=o+20;c[V+20>>2]=o+56;zg(o);o=V+72|0;c[o>>2]=0;g=V+68|0;c[g>>2]=0;if(w<<24>>24!=0&K){c[o>>2]=c[c[R+40>>2]>>2];c[g>>2]=c[(c[j>>2]|0)+36>>2]}s=V+24|0;c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=0;s=V+76|0;c[s>>2]=k;j=c[k+92>>2]|0;c[V+892>>2]=j;c[V+908>>2]=c[k+1308>>2];if((c[k+1368>>2]|0)!=1)if(j>>>0<1240)j=107;else j=j>>>0<33900?1131:32768;else j=0;c[V+900>>2]=j;c[V+920>>2]=p;if(S&256)a[V+753>>0]=1;x=S&1024;a[V+66>>0]=0;u=N+128|0;j=c[(c[u>>2]|0)+48>>2]|0;if(!j)j=xs((c[F>>2]|0)+1176|0,J,I,E)|0;else{j=Hd[c[c[j>>2]>>2]&255](c[j+4>>2]|0,J,H)|0;c[I>>2]=c[H>>2];c[E>>2]=c[H+4>>2]}if(j){f=j;i=Y;return f|0}q=c[(c[m>>2]|0)+652>>2]|0;r=c[q+1896>>2]|0;if(r){j=d[q+2924>>0]|0;b:do if((j|0)==3){l=q+2940|0;n=q+2944|0;if((J-(c[l>>2]|0)|0)>>>0<(c[n>>2]|0)>>>0){j=a[q+2948>>0]|0;break}m=c[q+2932>>2]|0;k=m+(c[q+2936>>2]|0)|0;p=m;g=d[m>>0]<<8|d[m+1>>0];m=m+2|0;while(1){if(g>>>0>J>>>0){j=0;break b}j=m;m=p+5|0;Z=p;p=p+3|0;o=g;g=d[p>>0]<<8|d[Z+4>>0];if(g>>>0>J>>>0)break;if(m>>>0>=k>>>0){j=0;break b}}j=a[j>>0]|0;c[l>>2]=o;c[n>>2]=g-o;a[q+2948>>0]=j}else if(!j)j=a[(c[q+2932>>2]|0)+J>>0]|0;else j=0;while(0);o=j&255;if(o>>>0>=r>>>0){Z=3;i=Y;return Z|0}j=c[q+1900+(o<<2)>>2]|0;if((c[V+68>>2]|0)!=0&K){c[V+72>>2]=c[(c[R+40>>2]|0)+(o<<2)+4>>2];o=j}else o=j}else o=q+1324|0;j=c[o+544>>2]|0;c[V+888>>2]=j;c[V+904>>2]=c[o+568>>2];if((c[(c[s>>2]|0)+1368>>2]|0)!=1)if(j>>>0<1240)j=107;else j=j>>>0<33900?1131:32768;else j=0;c[V+896>>2]=j;p=V+744|0;c[p>>2]=c[o+528>>2];c[V+748>>2]=c[o+532>>2];c[V+928>>2]=o;k=c[E>>2]|0;j=zs(V,c[I>>2]|0,k)|0;if((j&255|0)==164){a[t>>0]=0;o=zs(V,c[I>>2]|0,k)|0;l=1;q=0}else{o=j;l=v;q=w}j=c[(c[u>>2]|0)+48>>2]|0;if(!j){j=c[F>>2]|0;if(!(c[j+1204>>2]|0))Vh(c[j+1176>>2]|0,I)}else{c[H>>2]=c[I>>2];c[H+4>>2]=k;Cd[c[(c[j>>2]|0)+4>>2]&255](c[j+4>>2]|0,H)}if(o){Z=o;i=Y;return Z|0}j=c[(c[u>>2]|0)+48>>2]|0;if(!j){g=c[G+1200>>2]|0;if(g){c[f+136>>2]=(c[G+1204>>2]|0)+((c[g+(J<<2)>>2]|0)+-1);c[f+140>>2]=k}}else{c[f+136>>2]=0;c[f+140>>2]=0}g=c[y>>2]|0;if(g){Z=c[V+16>>2]|0;j=g+108|0;c[j+0>>2]=c[Z+0>>2];c[j+4>>2]=c[Z+4>>2];c[j+8>>2]=c[Z+8>>2];c[j+12>>2]=c[Z+12>>2];c[j+16>>2]=c[Z+16>>2];j=c[(c[u>>2]|0)+48>>2]|0}do if(j){g=c[(c[j>>2]|0)+8>>2]|0;if(!g)break;E=V+32|0;c[L>>2]=c[E>>2];c[L+4>>2]=0;G=V+40|0;F=L+8|0;c[F>>2]=c[G>>2];Z=V+44|0;H=L+12|0;c[H>>2]=c[Z>>2];j=Xd[g&255](c[j+4>>2]|0,J,0,L)|0;c[E>>2]=c[L>>2];c[G>>2]=c[F>>2];c[Z>>2]=c[H>>2];if(!j)break;i=Y;return j|0}while(0);if(x){Z=c[f+156>>2]|0;c[f+32>>2]=c[V+32>>2];c[f+40>>2]=c[p>>2];f=Z+12|0;c[f+0>>2]=c[U+0>>2];c[f+4>>2]=c[U+4>>2];c[f+8>>2]=c[U+8>>2];c[f+12>>2]=c[U+12>>2];c[Z+28>>2]=B;c[Z+32>>2]=h;a[Z+8>>0]=1;Z=0;i=Y;return Z|0}n=f+24|0;Z=c[p>>2]|0;p=f+40|0;c[p>>2]=Z;c[f+56>>2]=Z;a[(c[f+156>>2]|0)+8>>0]=0;do if(!(a[N+292>>0]|0))W=85;else{if(!(b[N+330>>1]|0)){W=85;break}b[Q>>1]=0;b[P>>1]=0;Qd[c[(c[N+528>>2]|0)+112>>2]&127](N,1,J,Q,P)|0;c[f+48>>2]=b[Q>>1];j=e[P>>1]|0;c[f+52>>2]=j;m=1}while(0);do if((W|0)==85){j=N+364|0;if((b[j>>1]|0)==-1){j=N+216|0;j=(b[j+4>>1]|0)-(b[j+6>>1]|0)|0;c[f+52>>2]=j;m=0;break}else{j=(b[j+70>>1]|0)-(b[j+72>>1]|0)|0;c[f+52>>2]=j;m=0;break}}while(0);o=f+52|0;c[f+60>>2]=j;c[z>>2]=1869968492;g=f+124|0;c[g>>2]=0;do if(K){if((e[R+14>>1]|0)>=24){j=4;break}c[g>>2]=256;j=260}else j=4;while(0);c[g>>2]=j;do if((c[U>>2]|0)==65536){if((c[U+12>>2]|0)!=65536){W=95;break}if(c[U+4>>2]|0){W=95;break}if(c[U+8>>2]|0)W=95}else W=95;while(0);if((W|0)==95)Wg(D,U);if(h|B)Xg(D,B,h);c[T>>2]=c[p>>2];Z=T+4|0;c[Z>>2]=0;Yg(T,U);c[p>>2]=(c[T>>2]|0)+B;c[T>>2]=0;c[Z>>2]=c[o>>2];Yg(T,U);c[o>>2]=(c[Z>>2]|0)+h;if(!(A&l<<24>>24==0)){g=c[f+112>>2]|0;l=c[M>>2]|0;h=c[O>>2]|0;if(!(q<<24>>24!=0?(c[V+68>>2]|0)!=0:0))W=101;do if((W|0)==101){j=b[C>>1]|0;if(j<<16>>16<=0)break;k=j<<16>>16;j=g;while(1){c[j>>2]=qg(c[j>>2]|0,l)|0;Z=j+4|0;c[Z>>2]=qg(c[Z>>2]|0,h)|0;k=k+-1|0;if((k|0)<=0)break;else j=j+8|0}}while(0);c[p>>2]=qg(c[p>>2]|0,l)|0;c[o>>2]=qg(c[o>>2]|0,h)|0}Ih(D,X);j=c[X>>2]|0;c[n>>2]=(c[X+8>>2]|0)-j;Z=c[X+12>>2]|0;c[f+28>>2]=Z-(c[X+4>>2]|0);c[f+32>>2]=j;c[f+36>>2]=Z;if(m){c[f+44>>2]=j-((c[p>>2]|0)/2|0);Z=0;i=Y;return Z|0}if(!(S&16)){Z=0;i=Y;return Z|0}hh(n,c[o>>2]|0);Z=0;i=Y;return Z|0}function zl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=c[a+528>>2]|0;c[e>>2]=0;c[e+4>>2]=0;if(!f)return 0;c[e>>2]=Hd[c[f+84>>2]&255](a,b,d)|0;return 0}function Al(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=c[a+84>>2]|0;j=e|256;h=a+88|0;if(!d){f=0;return f|0}e=(e&16|0)==0?i+56|0:i+60|0;g=0;while(1){a=yl(i,c[h>>2]|0,g+b|0,j)|0;if(a){e=5;break}c[f+(g<<2)>>2]=c[e>>2];g=g+1|0;if(g>>>0>=d>>>0){a=0;e=5;break}}if((e|0)==5)return a|0;return 0}function Bl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;e=l;d=c[a>>2]|0;do if(c[d+8>>2]&2){if(Hd[c[(c[d+528>>2]|0)+104>>2]&255](d,b,e)|0){c[a+44>>2]=-1;d=c[a>>2]|0;break}Cl(a,c[e>>2]|0)|0;i=l;return 0}while(0);jh(d,b);e=c[a>>2]|0;d=c[(c[e+652>>2]|0)+2952>>2]|0;e=yh(c[(c[e+96>>2]|0)+4>>2]|0,86544)|0;if(!((e|0)!=0&(d|0)!=0)){i=l;return 0}d=c[d>>2]|0;if(!d){i=l;return 0}d=Ed[d&511](e)|0;if(!d){i=l;return 0}e=c[(c[a>>2]|0)+652>>2]|0;j=c[a+40>>2]|0;k=c[e+1392>>2]|0;g=d+4|0;h=a+16|0;f=a+20|0;Qd[c[g>>2]&127](c[j>>2]|0,c[h>>2]|0,c[f>>2]|0,0,0)|0;d=c[e+1896>>2]|0;if(!d){i=l;return 0}a=e+1900|0;do{d=d+-1|0;b=c[(c[a+(d<<2)>>2]|0)+68>>2]|0;e=c[h>>2]|0;if((k|0)==(b|0))b=c[f>>2]|0;else{e=og(e,k,b)|0;b=og(c[f>>2]|0,k,b)|0}Qd[c[g>>2]&127](c[j+(d<<2)+4>>2]|0,e,b,0,0)|0}while((d|0)!=0);i=l;return 0}function Cl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;c[a+44>>2]=b;ih(c[a>>2]|0,b);d=c[a>>2]|0;b=c[(c[d+652>>2]|0)+2952>>2]|0;d=yh(c[(c[d+96>>2]|0)+4>>2]|0,86544)|0;if(!((d|0)!=0&(b|0)!=0))return 0;b=c[b>>2]|0;if(!b)return 0;b=Ed[b&511](d)|0;if(!b)return 0;d=c[(c[a>>2]|0)+652>>2]|0;i=c[a+40>>2]|0;j=c[d+1392>>2]|0;g=b+4|0;h=a+16|0;f=a+20|0;Qd[c[g>>2]&127](c[i>>2]|0,c[h>>2]|0,c[f>>2]|0,0,0)|0;b=c[d+1896>>2]|0;if(!b)return 0;e=d+1900|0;do{b=b+-1|0;a=c[(c[e+(b<<2)>>2]|0)+68>>2]|0;d=c[h>>2]|0;if((j|0)==(a|0))a=c[f>>2]|0;else{d=og(d,j,a)|0;a=og(c[f>>2]|0,j,a)|0}Qd[c[g>>2]&127](c[i+(b<<2)+4>>2]|0,d,a,0,0)|0}while((b|0)!=0);return 0}function Dl(a,b){a=a|0;b=b|0;c[a+16>>2]=(c[(c[a>>2]|0)+652>>2]|0)+640;return 0}function El(a){a=a|0;c[a+16>>2]=0;return}function Fl(a,b){a=a|0;b=b|0;if(b>>>0>=256){a=0;return a|0}a=e[(c[a+16>>2]|0)+(b<<1)>>1]|0;return a|0}function Gl(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[d>>2]|0;c[d>>2]=0;if(e>>>0>=255){g=0;return g|0}f=a+16|0;a=0;do{e=e+1|0;if(e>>>0>255){g=6;break}h=b[(c[f>>2]|0)+(e<<1)>>1]|0;a=h&65535}while(h<<16>>16==0);if((g|0)==6)return a|0;c[d>>2]=e;h=a;return h|0}function Hl(a,b){a=a|0;b=b|0;var d=0;b=c[a>>2]|0;d=c[b+652>>2]|0;if(!(c[d+1160>>2]|0)){a=163;return a|0}a=Dd[c[(c[d+2956>>2]|0)+4>>2]&31](c[b+100>>2]|0,a,c[d+12>>2]|0,191,0,b)|0;return a|0}function Il(a){a=a|0;var b=0;b=a+20|0;Ag(c[(c[a>>2]|0)+100>>2]|0,c[b>>2]|0);c[b>>2]=0;c[a+16>>2]=0;return}function Jl(a,b){a=a|0;b=b|0;return Pd[c[(c[(c[(c[a>>2]|0)+652>>2]|0)+2956>>2]|0)+8>>2]&511](a,b)|0}function Kl(a,b){a=a|0;b=b|0;return Pd[c[(c[(c[(c[a>>2]|0)+652>>2]|0)+2956>>2]|0)+12>>2]&511](a,b)|0}function Ll(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;t=u;r=c[b+412>>2]|0;p=r+72|0;s=r+68|0;q=b+40|0;if((c[b+404>>2]|0)>>>0>>0){t=161;i=u;return t|0}n=r+48|0;a[r+64>>0]=1;h=c[b+16>>2]|0;o=b+20|0;e=c[o>>2]|0;f=a[h>>0]|0;do if(f<<24>>24==30)e=Bs(h,e,0,t)|0;else{g=h+1|0;k=f&255;do if(f<<24>>24==29)if((h+5|0)>>>0>e>>>0)e=0;else{e=(d[h+2>>0]|0)<<16|(d[g>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);j=16}else if(f<<24>>24==28)if((h+3|0)>>>0>e>>>0)e=0;else e=((d[g>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;else{if((f&255)<247){e=k+-139|0;j=16;break}e=(h+2|0)>>>0>e>>>0;if((f&255)<251){if(e){e=0;break}e=(d[g>>0]|0|(k<<8)+-63232)+108|0;j=16;break}else{if(e){e=0;break}e=(251-k<<8)+-108-(d[g>>0]|0)|0;j=16;break}}while(0);if((j|0)==16)if((e|0)>32767){f=5;while(1){h=f+1|0;if((e|0)<(c[10200+(f<<2)>>2]|0)){h=f;break}if((h|0)<10)f=h;else break}f=h+-5|0;g=c[10200+(f<<2)>>2]|0;if(((e|0)/(g|0)|0|0)>32767){l=h+-4|0;c[t>>2]=l;e=rg(e,c[10200+(l<<2)>>2]|0)|0;break}else{c[t>>2]=f;e=rg(e,g)|0;break}}c[t>>2]=0;e=e<<16}while(0);c[n>>2]=e;l=c[t>>2]|0;m=0-l|0;c[t>>2]=m;if((l+9|0)>>>0>9){c[n>>2]=65536;c[r+56>>2]=0;c[r+52>>2]=0;c[r+60>>2]=65536;c[p>>2]=0;c[r+76>>2]=0;c[s>>2]=1;t=0;i=u;return t|0}e=b+24|0;h=c[o>>2]|0;j=c[e>>2]|0;k=a[h>>0]|0;if(k<<24>>24!=30){f=h+1|0;g=k&255;do if(k<<24>>24==29)if((h+5|0)>>>0>j>>>0)e=0;else e=(d[h+2>>0]|0)<<16|(d[f>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);else if(k<<24>>24==28)if((h+3|0)>>>0>j>>>0)e=0;else e=((d[f>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;else{if((k&255)<247){e=g+-139|0;break}e=(h+2|0)>>>0>j>>>0;if((k&255)<251){if(e){e=0;break}e=(d[f>>0]|0|(g<<8)+-63232)+108|0;break}else{if(e){e=0;break}e=(251-g<<8)+-108-(d[f>>0]|0)|0;break}}while(0);if(l)e=da(c[10200+(m<<2)>>2]|0,e)|0;if((e|0)>32767)e=2147483647;else e=(e|0)<-32767?-2147483647:e<<16}else{o=Bs(h,j,m,0)|0;j=c[e>>2]|0;e=o}c[r+56>>2]=e;e=b+28|0;l=c[t>>2]|0;k=c[e>>2]|0;g=a[j>>0]|0;if(g<<24>>24!=30){h=j+1|0;f=g&255;do if(g<<24>>24==29)if((j+5|0)>>>0>k>>>0)e=0;else e=(d[j+2>>0]|0)<<16|(d[h>>0]|0)<<24|(d[j+3>>0]|0)<<8|(d[j+4>>0]|0);else if(g<<24>>24==28)if((j+3|0)>>>0>k>>>0)e=0;else e=((d[h>>0]|0)<<8|(d[j+2>>0]|0))<<16>>16;else{if((g&255)<247){e=f+-139|0;break}e=(j+2|0)>>>0>k>>>0;if((g&255)<251){if(e){e=0;break}e=(d[h>>0]|0|(f<<8)+-63232)+108|0;break}else{if(e){e=0;break}e=(251-f<<8)+-108-(d[h>>0]|0)|0;break}}while(0);if(l)e=da(c[10200+(l<<2)>>2]|0,e)|0;if((e|0)>32767)e=2147483647;else e=(e|0)<-32767?-2147483647:e<<16}else{o=Bs(j,k,l,0)|0;k=c[e>>2]|0;e=o}c[r+52>>2]=e;e=b+32|0;j=c[t>>2]|0;l=c[e>>2]|0;g=a[k>>0]|0;if(g<<24>>24!=30){h=k+1|0;f=g&255;do if(g<<24>>24==29)if((k+5|0)>>>0>l>>>0)e=0;else e=(d[k+2>>0]|0)<<16|(d[h>>0]|0)<<24|(d[k+3>>0]|0)<<8|(d[k+4>>0]|0);else if(g<<24>>24==28)if((k+3|0)>>>0>l>>>0)e=0;else e=((d[h>>0]|0)<<8|(d[k+2>>0]|0))<<16>>16;else{if((g&255)<247){e=f+-139|0;break}e=(k+2|0)>>>0>l>>>0;if((g&255)<251){if(e){e=0;break}e=(d[h>>0]|0|(f<<8)+-63232)+108|0;break}else{if(e){e=0;break}e=(251-f<<8)+-108-(d[h>>0]|0)|0;break}}while(0);if(j)e=da(c[10200+(j<<2)>>2]|0,e)|0;if((e|0)>32767)e=2147483647;else e=(e|0)<-32767?-2147483647:e<<16}else{o=Bs(k,l,j,0)|0;l=c[e>>2]|0;e=o}c[r+60>>2]=e;e=b+36|0;j=c[t>>2]|0;k=c[e>>2]|0;g=a[l>>0]|0;if(g<<24>>24!=30){h=l+1|0;f=g&255;do if(g<<24>>24==29)if((l+5|0)>>>0>k>>>0)e=0;else e=(d[l+2>>0]|0)<<16|(d[h>>0]|0)<<24|(d[l+3>>0]|0)<<8|(d[l+4>>0]|0);else if(g<<24>>24==28)if((l+3|0)>>>0>k>>>0)e=0;else e=((d[h>>0]|0)<<8|(d[l+2>>0]|0))<<16>>16;else{if((g&255)<247){e=f+-139|0;break}e=(l+2|0)>>>0>k>>>0;if((g&255)<251){if(e){e=0;break}e=(d[h>>0]|0|(f<<8)+-63232)+108|0;break}else{if(e){e=0;break}e=(251-f<<8)+-108-(d[h>>0]|0)|0;break}}while(0);if(j)e=da(c[10200+(j<<2)>>2]|0,e)|0;if((e|0)>32767)e=2147483647;else e=(e|0)<-32767?-2147483647:e<<16}else{b=Bs(l,k,j,0)|0;k=c[e>>2]|0;e=b}c[p>>2]=e;j=c[t>>2]|0;e=c[q>>2]|0;f=a[k>>0]|0;if(f<<24>>24!=30){g=k+1|0;h=f&255;do if(f<<24>>24==28)if((k+3|0)>>>0>e>>>0)e=0;else e=((d[g>>0]|0)<<8|(d[k+2>>0]|0))<<16>>16;else if(f<<24>>24==29)if((k+5|0)>>>0>e>>>0)e=0;else e=(d[k+2>>0]|0)<<16|(d[g>>0]|0)<<24|(d[k+3>>0]|0)<<8|(d[k+4>>0]|0);else{if((f&255)<247){e=h+-139|0;break}e=(k+2|0)>>>0>e>>>0;if((f&255)<251){if(e){e=0;break}e=(d[g>>0]|0|(h<<8)+-63232)+108|0;break}else{if(e){e=0;break}e=(251-h<<8)+-108-(d[g>>0]|0)|0;break}}while(0);if(j)e=da(c[10200+(j<<2)>>2]|0,e)|0;if((e|0)>32767)e=2147483647;else e=(e|0)<-32767?-2147483647:e<<16}else e=Bs(k,e,j,0)|0;c[r+76>>2]=e;c[s>>2]=c[10200+(c[t>>2]<<2)>>2];t=0;i=u;return t|0}function Ml(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=c[b+412>>2]|0;m=b+32|0;if((c[b+404>>2]|0)>>>0>>0){o=161;return o|0}j=o+84|0;l=b+20|0;h=c[b+16>>2]|0;e=c[l>>2]|0;i=a[h>>0]|0;do if(i<<24>>24==30)e=Bs(h,e,0,0)|0;else{f=h+1|0;g=i&255;do if(i<<24>>24==29)if((h+5|0)>>>0>e>>>0)e=0;else{e=(d[h+2>>0]|0)<<16|(d[f>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);n=16}else if(i<<24>>24==28)if((h+3|0)>>>0>e>>>0)e=0;else e=((d[f>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;else{if((i&255)<247){e=g+-139|0;n=16;break}e=(h+2|0)>>>0>e>>>0;if((i&255)<251){if(e){e=0;break}e=(d[f>>0]|0|(g<<8)+-63232)+108|0;n=16;break}else{if(e){e=0;break}e=(251-g<<8)+-108-(d[f>>0]|0)|0;n=16;break}}while(0);if((n|0)==16)if((e|0)>32767){e=2147483647;break}e=(e|0)<-32767?-2147483647:e<<16}while(0);c[j>>2]=lg(e)|0;k=b+24|0;h=c[l>>2]|0;e=c[k>>2]|0;f=a[h>>0]|0;do if(f<<24>>24==30)e=Bs(h,e,0,0)|0;else{g=h+1|0;i=f&255;do if(f<<24>>24==28)if((h+3|0)>>>0>e>>>0)e=0;else e=((d[g>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;else if(f<<24>>24==29)if((h+5|0)>>>0>e>>>0)e=0;else{e=(d[h+2>>0]|0)<<16|(d[g>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);n=32}else{if((f&255)<247){e=i+-139|0;n=32;break}e=(h+2|0)>>>0>e>>>0;if((f&255)<251){if(e){e=0;break}e=(d[g>>0]|0|(i<<8)+-63232)+108|0;n=32;break}else{if(e){e=0;break}e=(251-i<<8)+-108-(d[g>>0]|0)|0;n=32;break}}while(0);if((n|0)==32)if((e|0)>32767){e=2147483647;break}e=(e|0)<-32767?-2147483647:e<<16}while(0);c[o+88>>2]=lg(e)|0;j=b+28|0;h=c[k>>2]|0;e=c[j>>2]|0;f=a[h>>0]|0;do if(f<<24>>24==30)e=Bs(h,e,0,0)|0;else{g=h+1|0;i=f&255;do if(f<<24>>24==28)if((h+3|0)>>>0>e>>>0)e=0;else e=((d[g>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;else if(f<<24>>24==29)if((h+5|0)>>>0>e>>>0)e=0;else{e=(d[h+2>>0]|0)<<16|(d[g>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);n=48}else{if((f&255)<247){e=i+-139|0;n=48;break}e=(h+2|0)>>>0>e>>>0;if((f&255)<251){if(e){e=0;break}e=(d[g>>0]|0|(i<<8)+-63232)+108|0;n=48;break}else{if(e){e=0;break}e=(251-i<<8)+-108-(d[g>>0]|0)|0;n=48;break}}while(0);if((n|0)==48)if((e|0)>32767){e=2147483647;break}e=(e|0)<-32767?-2147483647:e<<16}while(0);c[o+92>>2]=lg(e)|0;f=c[j>>2]|0;e=c[m>>2]|0;g=a[f>>0]|0;do if(g<<24>>24==30)e=Bs(f,e,0,0)|0;else{h=f+1|0;i=g&255;do if(g<<24>>24==28)if((f+3|0)>>>0>e>>>0)e=0;else e=((d[h>>0]|0)<<8|(d[f+2>>0]|0))<<16>>16;else if(g<<24>>24==29)if((f+5|0)>>>0>e>>>0)e=0;else{e=(d[f+2>>0]|0)<<16|(d[h>>0]|0)<<24|(d[f+3>>0]|0)<<8|(d[f+4>>0]|0);n=64}else{if((g&255)<247){e=i+-139|0;n=64;break}e=(f+2|0)>>>0>e>>>0;if((g&255)<251){if(e){e=0;break}e=(d[h>>0]|0|(i<<8)+-63232)+108|0;n=64;break}else{if(e){e=0;break}e=(251-i<<8)+-108-(d[h>>0]|0)|0;n=64;break}}while(0);if((n|0)==64)if((e|0)>32767){e=2147483647;break}e=(e|0)<-32767?-2147483647:e<<16}while(0);c[o+96>>2]=lg(e)|0;o=0;return o|0}function Nl(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=c[b+412>>2]|0;i=b+24|0;if((c[b+404>>2]|0)>>>0>>0){j=161;return j|0}g=b+20|0;b=c[b+16>>2]|0;e=c[g>>2]|0;h=a[b>>0]|0;do if(h<<24>>24!=30){g=b+1|0;f=h&255;if(h<<24>>24==28){if((b+3|0)>>>0>e>>>0){h=e;b=0;break}h=e;b=((d[g>>0]|0)<<8|(d[b+2>>0]|0))<<16>>16;break}else if(h<<24>>24!=29){if((h&255)<247){h=e;b=f+-139|0;break}b=(b+2|0)>>>0>e>>>0;if((h&255)<251){if(b){h=e;b=0;break}h=e;b=(d[g>>0]|0|(f<<8)+-63232)+108|0;break}else{if(b){h=e;b=0;break}h=e;b=(251-f<<8)+-108-(d[g>>0]|0)|0;break}}else{if((b+5|0)>>>0>e>>>0){h=e;b=0;break}h=e;b=(d[b+2>>0]|0)<<16|(d[g>>0]|0)<<24|(d[b+3>>0]|0)<<8|(d[b+4>>0]|0);break}}else{b=(Bs(b,e,0,0)|0)>>16;h=c[g>>2]|0}while(0);c[j+120>>2]=b;b=c[i>>2]|0;e=a[h>>0]|0;do if(e<<24>>24!=30){f=h+1|0;g=e&255;if(e<<24>>24==28){if((h+3|0)>>>0>b>>>0){b=0;break}b=((d[f>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;break}else if(e<<24>>24!=29){if((e&255)<247){b=g+-139|0;break}b=(h+2|0)>>>0>b>>>0;if((e&255)<251){if(b){b=0;break}b=(d[f>>0]|0|(g<<8)+-63232)+108|0;break}else{if(b){b=0;break}b=(251-g<<8)+-108-(d[f>>0]|0)|0;break}}else{if((h+5|0)>>>0>b>>>0){b=0;break}b=(d[h+2>>0]|0)<<16|(d[f>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);break}}else b=(Bs(h,b,0,0)|0)>>16;while(0);c[j+116>>2]=b;j=0;return j|0}function Ol(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=c[b+412>>2]|0;l=b+28|0;if((c[b+404>>2]|0)>>>0>>0){m=161;return m|0}e=b+20|0;f=c[b+16>>2]|0;h=c[e>>2]|0;j=a[f>>0]|0;do if(j<<24>>24!=30){g=f+1|0;i=j&255;if(j<<24>>24==28){if((f+3|0)>>>0>h>>>0){k=h;e=0;break}k=h;e=((d[g>>0]|0)<<8|(d[f+2>>0]|0))<<16>>16;break}else if(j<<24>>24!=29){if((j&255)<247){k=h;e=i+-139|0;break}e=(f+2|0)>>>0>h>>>0;if((j&255)<251){if(e){k=h;e=0;break}k=h;e=(d[g>>0]|0|(i<<8)+-63232)+108|0;break}else{if(e){k=h;e=0;break}k=h;e=(251-i<<8)+-108-(d[g>>0]|0)|0;break}}else{if((f+5|0)>>>0>h>>>0){k=h;e=0;break}k=h;e=(d[f+2>>0]|0)<<16|(d[g>>0]|0)<<24|(d[f+3>>0]|0)<<8|(d[f+4>>0]|0);break}}else{i=(Bs(f,h,0,0)|0)>>16;k=c[e>>2]|0;e=i}while(0);c[m+132>>2]=e;e=b+24|0;h=c[e>>2]|0;f=a[k>>0]|0;do if(f<<24>>24!=30){g=k+1|0;i=f&255;if(f<<24>>24==29){if((k+5|0)>>>0>h>>>0){j=h;e=0;break}j=h;e=(d[k+2>>0]|0)<<16|(d[g>>0]|0)<<24|(d[k+3>>0]|0)<<8|(d[k+4>>0]|0);break}else if(f<<24>>24!=28){if((f&255)<247){j=h;e=i+-139|0;break}e=(k+2|0)>>>0>h>>>0;if((f&255)<251){if(e){j=h;e=0;break}j=h;e=(d[g>>0]|0|(i<<8)+-63232)+108|0;break}else{if(e){j=h;e=0;break}j=h;e=(251-i<<8)+-108-(d[g>>0]|0)|0;break}}else{if((k+3|0)>>>0>h>>>0){j=h;e=0;break}j=h;e=((d[g>>0]|0)<<8|(d[k+2>>0]|0))<<16>>16;break}}else{b=(Bs(k,h,0,0)|0)>>16;j=c[e>>2]|0;e=b}while(0);c[m+136>>2]=e;e=c[l>>2]|0;f=a[j>>0]|0;do if(f<<24>>24!=30){g=j+1|0;h=f&255;if(f<<24>>24==29){if((j+5|0)>>>0>e>>>0){e=0;break}e=(d[j+2>>0]|0)<<16|(d[g>>0]|0)<<24|(d[j+3>>0]|0)<<8|(d[j+4>>0]|0);break}else if(f<<24>>24!=28){if((f&255)<247){e=h+-139|0;break}e=(j+2|0)>>>0>e>>>0;if((f&255)<251){if(e){e=0;break}e=(d[g>>0]|0|(h<<8)+-63232)+108|0;break}else{if(e){e=0;break}e=(251-h<<8)+-108-(d[g>>0]|0)|0;break}}else{if((j+3|0)>>>0>e>>>0){e=0;break}e=((d[g>>0]|0)<<8|(d[j+2>>0]|0))<<16>>16;break}}else e=(Bs(j,e,0,0)|0)>>16;while(0);c[m+140>>2]=e;m=0;return m|0}function Pl(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;h=c[d+652>>2]|0;c[k>>2]=0;if(!h){k=c[k>>2]|0;i=l;return k|0}j=h+2960|0;f=c[j>>2]|0;if(!f){f=yg(c[d+100>>2]|0,32,k)|0;if(c[k>>2]|0){k=c[k>>2]|0;i=l;return k|0}d=c[h+1324>>2]|0;do if((d|0)!=65535)if(d>>>0>390){d=d+-391|0;if((c[h+1312>>2]|0)>>>0<=d>>>0){d=0;break}d=c[(c[h+1316>>2]|0)+(d<<2)>>2]|0;break}else{g=c[h+2956>>2]|0;if(!g){d=0;break}d=Ed[c[g+20>>2]&511](d)|0;break}else d=0;while(0);c[f>>2]=d;d=c[h+1328>>2]|0;do if((d|0)!=65535)if(d>>>0>390){d=d+-391|0;if((c[h+1312>>2]|0)>>>0<=d>>>0){d=0;break}d=c[(c[h+1316>>2]|0)+(d<<2)>>2]|0;break}else{g=c[h+2956>>2]|0;if(!g){d=0;break}d=Ed[c[g+20>>2]&511](d)|0;break}else d=0;while(0);c[f+4>>2]=d;d=c[h+1336>>2]|0;do if((d|0)!=65535)if(d>>>0>390){d=d+-391|0;if((c[h+1312>>2]|0)>>>0<=d>>>0){d=0;break}d=c[(c[h+1316>>2]|0)+(d<<2)>>2]|0;break}else{g=c[h+2956>>2]|0;if(!g){d=0;break}d=Ed[c[g+20>>2]&511](d)|0;break}else d=0;while(0);c[f+8>>2]=d;d=c[h+1340>>2]|0;do if((d|0)!=65535)if(d>>>0>390){d=d+-391|0;if((c[h+1312>>2]|0)>>>0<=d>>>0){d=0;break}d=c[(c[h+1316>>2]|0)+(d<<2)>>2]|0;break}else{g=c[h+2956>>2]|0;if(!g){d=0;break}d=Ed[c[g+20>>2]&511](d)|0;break}else d=0;while(0);c[f+12>>2]=d;d=c[h+1344>>2]|0;do if((d|0)!=65535)if(d>>>0>390){d=d+-391|0;if((c[h+1312>>2]|0)>>>0<=d>>>0){d=0;break}d=c[(c[h+1316>>2]|0)+(d<<2)>>2]|0;break}else{g=c[h+2956>>2]|0;if(!g){d=0;break}d=Ed[c[g+20>>2]&511](d)|0;break}else d=0;while(0);c[f+16>>2]=d;c[f+20>>2]=c[h+1352>>2];a[f+24>>0]=a[h+1348>>0]|0;b[f+26>>1]=c[h+1356>>2];b[f+28>>1]=c[h+1360>>2];c[j>>2]=f};c[e+0>>2]=c[f+0>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];c[e+16>>2]=c[f+16>>2];c[e+20>>2]=c[f+20>>2];c[e+24>>2]=c[f+24>>2];c[e+28>>2]=c[f+28>>2];k=c[k>>2]|0;i=l;return k|0}function Ql(a){a=a|0;return (c[a+8>>2]|0)>>>9&1|0}function Rl(a){a=a|0;return c[(c[a+652>>2]|0)+1304>>2]|0}function Sl(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=c[a+652>>2]|0;g=c[h+2956>>2]|0;if(!g){f=11;return f|0}a=b[(c[h+1160>>2]|0)+(d<<1)>>1]|0;d=a&65535;if(a<<16>>16==-1){f=0;return f|0}do if((a&65535)>390){a=d+-391|0;if((c[h+1312>>2]|0)>>>0>a>>>0){a=c[(c[h+1316>>2]|0)+(a<<2)>>2]|0;break}else{f=0;return f|0}}else a=Ed[c[g+20>>2]&511](d)|0;while(0);if(!a){f=0;return f|0}pi(e,a,f)|0;f=0;return f|0} -function vL(f,j,l){f=f|0;j=j|0;l=l|0;var m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0;Ba=i;i=i+288|0;Aa=Ba+40|0;ha=Ba+232|0;ga=Ba+228|0;va=Ba+88|0;wa=Ba+96|0;ra=Ba+32|0;oa=Ba+16|0;ta=Ba+224|0;ua=Ba+220|0;fa=Ba+216|0;la=Ba+24|0;Z=Ba+208|0;ja=Ba;X=Ba+204|0;ea=Ba+200|0;$=Ba+212|0;V=Ba+240|0;ka=Ba+8|0;Y=Ba+244|0;ia=Ba+56|0;W=Ba+248|0;da=Ba+252|0;_=Ba+256|0;U=Ba+260|0;ba=Ba+264|0;T=Ba+268|0;aa=Ba+272|0;S=Ba+276|0;ca=Ba+280|0;R=Ba+236|0;ma=Ba+132|0;s=Ba+284|0;pa=Ba+140|0;sa=Ba+72|0;xa=Ba+148|0;ya=Ba+80|0;na=Ba+64|0;P=Ba+124|0;Q=Ba+108|0;D=Ba+104|0;E=Ba+112|0;F=Ba+120|0;G=Ba+116|0;I=Ba+156|0;J=Ba+160|0;K=Ba+164|0;L=Ba+152|0;M=Ba+172|0;N=Ba+176|0;O=Ba+180|0;v=Ba+184|0;w=Ba+192|0;x=Ba+196|0;y=Ba+188|0;z=Ba+168|0;A=Ba+136|0;B=Ba+144|0;C=Ba+128|0;m=c[f+660>>2]|0;q=b[j>>1]|0;a:do if(m){r=c[f+656>>2]|0;u=q&65535;n=-1;p=m;while(1){m=(n+p|0)/2|0;t=c[c[r+(m<<2)>>2]>>2]|0;if((t|0)==(u|0))break;za=t>>>0>>0;n=za?m:n;p=za?p:m;if((n+1|0)==(p|0))break a}while(1){if(!m){m=0;break}t=m+-1|0;if((c[c[r+(t<<2)>>2]>>2]|0)==(u|0))m=t;else{qa=7;break}}if((qa|0)==7)if((m|0)==-1)break;za=c[r+(m<<2)>>2]|0;if(!za)Ra(108848,107440,4737,108792);b:do switch(c[za+16>>2]|0){case 0:{qa=805;break}case 48:{if((b[za+4>>1]|0)!=-3)Ra(109408,107440,5331,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5332,108792);m=WY(f,j,A)|0;if(!m){m=e[j>>1]|0;n=c[A>>2]|0;c[Aa>>2]=c[j+8>>2];c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807;break}case 50:{if((b[za+4>>1]|0)!=-3)Ra(109408,107440,5365,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5366,108792);m=YY(f,j,C)|0;if(!m){m=e[j>>1]|0;n=c[C>>2]|0;c[Aa>>2]=c[j+8>>2];c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807;break}case 49:{if((b[za+4>>1]|0)!=-3)Ra(109408,107440,5348,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5349,108792);m=zL(f,j,B)|0;if(!m){m=e[j>>1]|0;n=c[B>>2]|0;c[Aa>>2]=c[j+8>>2];c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807;break}case 20:{m=b[za+4>>1]|0;if(m<<16>>16<=0)Ra(109264,107440,4958,108792);if(a[za+27>>0]|0)Ra(108944,107440,4959,108792);ua=j+8|0;wa=m<<16>>16;if((c[ua>>2]|0)==(wa|0)?(c[ua+4>>2]|0)==(((wa|0)<0)<<31>>31|0):0){m=VY(f,j,E)|0;if(!m){m=e[j>>1]|0;n=c[E>>2]|0;c[Aa>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807}else qa=805;break}case 27:{if((b[za+4>>1]|0)!=-1)Ra(109344,107440,5002,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5003,108792);p=j+8|0;wa=p;ua=c[wa+4>>2]|0;if(!(ua>>>0>0|(ua|0)==0&(c[wa>>2]|0)>>>0>65535)){m=UY(f,j,G)|0;if(!m){m=e[j>>1]|0;n=c[G>>2]|0;c[Aa>>2]=c[p>>2]&65535;c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807}else{m=1;qa=807}break}case 30:{if((b[za+4>>1]|0)!=-1)Ra(109344,107440,5046,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5047,108792);p=j+8|0;wa=p;ua=c[wa+4>>2]|0;if(!(ua>>>0>0|(ua|0)==0&(c[wa>>2]|0)>>>0>65535)){m=xL(f,j,J)|0;if(!m){m=e[j>>1]|0;n=c[J>>2]|0;c[Aa>>2]=c[p>>2]&65535;c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807}else{m=1;qa=807}break}case 24:{m=b[za+4>>1]|0;if(m<<16>>16<=0)Ra(109264,107440,4980,108792);if(a[za+27>>0]|0)Ra(108944,107440,4981,108792);ua=j+8|0;wa=m<<16>>16;if((c[ua>>2]|0)==(wa|0)?(c[ua+4>>2]|0)==(((wa|0)<0)<<31>>31|0):0){m=WY(f,j,F)|0;if(!m){m=e[j>>1]|0;n=c[F>>2]|0;c[Aa>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807}else qa=805;break}case 18:{m=b[za+4>>1]|0;if(m<<16>>16<=0)Ra(109264,107440,4936,108792);if(a[za+27>>0]|0)Ra(108944,107440,4937,108792);ua=j+8|0;wa=m<<16>>16;if((c[ua>>2]|0)==(wa|0)?(c[ua+4>>2]|0)==(((wa|0)<0)<<31>>31|0):0){m=xL(f,j,D)|0;if(!m){m=e[j>>1]|0;n=c[D>>2]|0;c[Aa>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807}else qa=805;break}case 28:{if((b[za+4>>1]|0)!=-1)Ra(109344,107440,5024,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5025,108792);p=j+8|0;wa=p;ua=c[wa+4>>2]|0;if(!(ua>>>0>0|(ua|0)==0&(c[wa>>2]|0)>>>0>65535)){m=UY(f,j,I)|0;if(!m){m=e[j>>1]|0;n=c[I>>2]|0;c[Aa>>2]=c[p>>2]&65535;c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807}else{m=1;qa=807}break}case 34:{if((b[za+4>>1]|0)!=-1)Ra(109344,107440,5090,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5091,108792);p=j+8|0;wa=p;ua=c[wa+4>>2]|0;if(!(ua>>>0>0|(ua|0)==0&(c[wa>>2]|0)>>>0>65535)){m=XY(f,j,L)|0;if(!m){m=e[j>>1]|0;n=c[L>>2]|0;c[Aa>>2]=c[p>>2]&65535;c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807}else{m=1;qa=807}break}case 32:{if((b[za+4>>1]|0)!=-1)Ra(109344,107440,5068,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5069,108792);p=j+8|0;wa=p;ua=c[wa+4>>2]|0;if(!(ua>>>0>0|(ua|0)==0&(c[wa>>2]|0)>>>0>65535)){m=VY(f,j,K)|0;if(!m){m=e[j>>1]|0;n=c[K>>2]|0;c[Aa>>2]=c[p>>2]&65535;c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807}else{m=1;qa=807}break}case 39:{if((b[za+4>>1]|0)!=-3)Ra(109408,107440,5178,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5179,108792);m=UY(f,j,v)|0;if(!m){m=e[j>>1]|0;n=c[v>>2]|0;c[Aa>>2]=c[j+8>>2];c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807;break}case 41:{if((b[za+4>>1]|0)!=-3)Ra(109408,107440,5212,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5213,108792);p=j+2|0;switch(e[p>>1]|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:case 7:break;default:{m=2;qa=807;break b}}m=ZY(f,j,ta,1,ua)|0;r=c[ua>>2]|0;c:do if((m|0)!=0|(r|0)==0)if(!m)n=0;else{qa=807;break b}else{m=e[p>>1]|0;if((m|0)==1|(m|0)==7){m=c[ta>>2]|0;if(!m){n=r;break}else{p=r;n=0}while(1){if((a[p>>0]|0)<=-1)break;n=n+1|0;if(n>>>0>=m>>>0){n=r;break c}else p=p+1|0}$J(r);m=4;qa=807;break b}else if((m|0)==6){n=r;break}m=c[ta>>2]|0;n=_J(m)|0;if(!n){$J(r);m=7;qa=807;break b}d:do switch(e[p>>1]|0){case 3:{if(!m)qa=602;else{s=f+12|0;p=r;r=n;q=0;while(1){if(c[s>>2]&128)Yw(p);m=b[p>>1]|0;if((m&65535)>=128){qa=601;break d}a[r>>0]=m;q=q+1|0;if(q>>>0>=(c[ta>>2]|0)>>>0){qa=602;break}else{p=p+2|0;r=r+1|0}}}break}case 16:{if(!m)qa=602;else{s=f+12|0;p=r;r=n;q=0;while(1){if(c[s>>2]&128)_w(p);wa=p;m=c[wa>>2]|0;wa=c[wa+4>>2]|0;if(!(wa>>>0<0|(wa|0)==0&m>>>0<128)){qa=601;break d}a[r>>0]=m;q=q+1|0;if(q>>>0>=(c[ta>>2]|0)>>>0){qa=602;break}else{p=p+8|0;r=r+1|0}}}break}case 4:{if(!m)qa=602;else{s=f+12|0;p=r;r=n;q=0;while(1){if(c[s>>2]&128)Zw(p);m=c[p>>2]|0;if(m>>>0>=128){qa=601;break d}a[r>>0]=m;q=q+1|0;if(q>>>0>=(c[ta>>2]|0)>>>0){qa=602;break}else{p=p+4|0;r=r+1|0}}}break}case 17:{if(!m)qa=602;else{s=f+12|0;p=r;r=n;q=0;while(1){if(c[s>>2]&128)_w(p);wa=p;m=c[wa>>2]|0;wa=yfa(m|0,c[wa+4>>2]|0,128,0)|0;ra=H;if(!(ra>>>0<0|(ra|0)==0&wa>>>0<256)){qa=601;break d}a[r>>0]=m;q=q+1|0;if(q>>>0>=(c[ta>>2]|0)>>>0){qa=602;break}else{p=p+8|0;r=r+1|0}}}break}case 9:{if(!m)qa=602;else{s=f+12|0;p=r;r=n;q=0;while(1){if(c[s>>2]&128)Zw(p);m=c[p>>2]|0;if((m+128|0)>>>0>=256){qa=601;break d}a[r>>0]=m;q=q+1|0;if(q>>>0>=(c[ta>>2]|0)>>>0){qa=602;break}else{p=p+4|0;r=r+1|0}}}break}case 8:{if(!m)qa=602;else{s=f+12|0;p=r;r=n;q=0;while(1){if(c[s>>2]&128)Yw(p);m=b[p>>1]|0;if((m+128&65535)>=256){qa=601;break d}a[r>>0]=m;q=q+1|0;if(q>>>0>=(c[ta>>2]|0)>>>0){qa=602;break}else{p=p+2|0;r=r+1|0}}}break}default:qa=602}while(0);if((qa|0)==601){$J(c[ua>>2]|0);$J(n);m=4;qa=807;break b}else if((qa|0)==602){$J(c[ua>>2]|0);break}}while(0);m=e[j>>1]|0;c[Aa>>2]=c[j+8>>2];c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806;break}case 40:{if((b[za+4>>1]|0)!=-3)Ra(109408,107440,5195,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5196,108792);m=UY(f,j,w)|0;if(!m){m=e[j>>1]|0;n=c[w>>2]|0;c[Aa>>2]=c[j+8>>2];c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807;break}case 37:{if((b[za+4>>1]|0)!=-1)Ra(109344,107440,5134,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5135,108792);p=j+8|0;wa=p;ua=c[wa+4>>2]|0;if(!(ua>>>0>0|(ua|0)==0&(c[wa>>2]|0)>>>0>65535)){m=zL(f,j,N)|0;if(!m){m=e[j>>1]|0;n=c[N>>2]|0;c[Aa>>2]=c[p>>2]&65535;c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807}else{m=1;qa=807}break}case 36:{if((b[za+4>>1]|0)!=-1)Ra(109344,107440,5112,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5113,108792);p=j+8|0;wa=p;ua=c[wa+4>>2]|0;if(!(ua>>>0>0|(ua|0)==0&(c[wa>>2]|0)>>>0>65535)){m=WY(f,j,M)|0;if(!m){m=e[j>>1]|0;n=c[M>>2]|0;c[Aa>>2]=c[p>>2]&65535;c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807}else{m=1;qa=807}break}case 38:{if((b[za+4>>1]|0)!=-1)Ra(109344,107440,5156,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5157,108792);p=j+8|0;wa=p;ua=c[wa+4>>2]|0;if(!(ua>>>0>0|(ua|0)==0&(c[wa>>2]|0)>>>0>65535)){m=YY(f,j,O)|0;if(!m){m=e[j>>1]|0;n=c[O>>2]|0;c[Aa>>2]=c[p>>2]&65535;c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807}else{m=1;qa=807}break}case 42:{if((b[za+4>>1]|0)!=-3)Ra(109408,107440,5229,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5230,108792);m=xL(f,j,x)|0;if(!m){m=e[j>>1]|0;n=c[x>>2]|0;c[Aa>>2]=c[j+8>>2];c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807;break}case 43:{if((b[za+4>>1]|0)!=-3)Ra(109408,107440,5246,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5247,108792);p=j+2|0;switch(e[p>>1]|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{m=2;qa=807;break b}}m=ZY(f,j,ra,2,oa)|0;u=c[oa>>2]|0;e:do if((m|0)!=0|(u|0)==0)if(!m)n=0;else{qa=807;break b}else{m=e[p>>1]|0;if((m|0)==8){if(!(c[f+12>>2]&128)){n=u;break}$w(u,c[ra>>2]|0);n=u;break}else if((m|0)!=3){t=c[ra>>2]|0;n=_J(t<<1)|0;if(!n){$J(u);m=7;qa=807;break b}f:do switch(e[p>>1]|0){case 1:{if(!t)qa=663;else{m=u;p=n;q=0;while(1){b[p>>1]=d[m>>0]|0;q=q+1|0;if((q|0)==(t|0)){qa=663;break}else{m=m+1|0;p=p+2|0}}}break}case 4:{if(!t)qa=663;else{m=f+12|0;r=u;q=n;s=0;while(1){if(c[m>>2]&128)Zw(r);p=c[r>>2]|0;if(p>>>0>=32768){qa=662;break f}b[q>>1]=p;s=s+1|0;if(s>>>0>=t>>>0){qa=663;break}else{r=r+4|0;q=q+2|0}}}break}case 9:{if(!t)qa=663;else{m=f+12|0;r=u;q=n;s=0;while(1){if(c[m>>2]&128)Zw(r);p=c[r>>2]|0;if((p+32768|0)>>>0>=65536){qa=662;break f}b[q>>1]=p;s=s+1|0;if(s>>>0>=t>>>0){qa=663;break}else{r=r+4|0;q=q+2|0}}}break}case 6:{if(!t)qa=663;else{m=u;p=n;q=0;while(1){b[p>>1]=a[m>>0]|0;q=q+1|0;if((q|0)==(t|0)){qa=663;break}else{m=m+1|0;p=p+2|0}}}break}case 16:{if(!t)qa=663;else{m=f+12|0;r=u;q=n;s=0;while(1){if(c[m>>2]&128)_w(r);wa=r;p=c[wa>>2]|0;wa=c[wa+4>>2]|0;if(!(wa>>>0<0|(wa|0)==0&p>>>0<32768)){qa=662;break f}b[q>>1]=p;s=s+1|0;if(s>>>0>=t>>>0){qa=663;break}else{r=r+8|0;q=q+2|0}}}break}case 17:{if(!t)qa=663;else{m=f+12|0;r=u;q=n;s=0;while(1){if(c[m>>2]&128)_w(r);wa=r;p=c[wa>>2]|0;wa=yfa(p|0,c[wa+4>>2]|0,32768,0)|0;ua=H;if(!(ua>>>0<0|(ua|0)==0&wa>>>0<65536)){qa=662;break f}b[q>>1]=p;s=s+1|0;if(s>>>0>=t>>>0){qa=663;break}else{r=r+8|0;q=q+2|0}}}break}default:qa=663}while(0);if((qa|0)==662){$J(u);$J(n);m=4;qa=807;break b}else if((qa|0)==663){$J(u);break}}else{m=c[ra>>2]|0;if(!m){n=u;break}p=f+12|0;n=u;q=0;while(1){if(c[p>>2]&128)Yw(n);if((b[n>>1]|0)<=-1)break;q=q+1|0;if(q>>>0>=m>>>0){n=u;break e}else n=n+2|0}$J(u);m=4;qa=807;break b}}while(0);m=e[j>>1]|0;c[Aa>>2]=c[j+8>>2];c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806;break}case 44:{if((b[za+4>>1]|0)!=-3)Ra(109408,107440,5263,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5264,108792);m=VY(f,j,y)|0;if(!m){m=e[j>>1]|0;n=c[y>>2]|0;c[Aa>>2]=c[j+8>>2];c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807;break}case 45:{if((b[za+4>>1]|0)!=-3)Ra(109408,107440,5280,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5281,108792);p=j+2|0;switch(e[p>>1]|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{m=2;qa=807;break b}}m=ZY(f,j,va,4,wa)|0;t=c[wa>>2]|0;g:do if(!((m|0)!=0|(t|0)==0)){m=e[p>>1]|0;if((m|0)==9){if(!(c[f+12>>2]&128)){n=t;break}bx(t,c[va>>2]|0);n=t;break}else if((m|0)!=4){m=c[va>>2]|0;n=_J(m<<2)|0;if(!n){$J(t);m=7;qa=807;break b}h:do switch(e[p>>1]|0){case 16:{if(!m)qa=719;else{m=f+12|0;r=t;q=n;s=0;while(1){if(c[m>>2]&128)_w(r);wa=r;p=c[wa>>2]|0;wa=c[wa+4>>2]|0;if(!(wa>>>0<0|(wa|0)==0&p>>>0<2147483648)){qa=718;break h}c[q>>2]=p;s=s+1|0;if(s>>>0>=(c[va>>2]|0)>>>0){qa=719;break}else{r=r+8|0;q=q+4|0}}}break}case 17:{if(m)if(!(c[f+12>>2]&128))qa=718;else{_w(t);qa=718}else qa=719;break}case 6:{if(!m)qa=719;else{m=t;p=n;q=0;while(1){c[p>>2]=a[m>>0];q=q+1|0;if(q>>>0>=(c[va>>2]|0)>>>0){qa=719;break}else{m=m+1|0;p=p+4|0}}}break}case 3:{if(!m)qa=719;else{m=f+12|0;p=t;q=n;r=0;while(1){if(c[m>>2]&128)Yw(p);c[q>>2]=e[p>>1];r=r+1|0;if(r>>>0>=(c[va>>2]|0)>>>0){qa=719;break}else{p=p+2|0;q=q+4|0}}}break}case 1:{if(!m)qa=719;else{m=t;p=n;q=0;while(1){c[p>>2]=d[m>>0];q=q+1|0;if(q>>>0>=(c[va>>2]|0)>>>0){qa=719;break}else{m=m+1|0;p=p+4|0}}}break}case 8:{if(!m)qa=719;else{m=f+12|0;p=t;q=n;r=0;while(1){if(c[m>>2]&128)Yw(p);c[q>>2]=b[p>>1];r=r+1|0;if(r>>>0>=(c[va>>2]|0)>>>0){qa=719;break}else{p=p+2|0;q=q+4|0}}}break}default:qa=719}while(0);if((qa|0)==718){$J(t);$J(n);m=4;qa=807;break b}else if((qa|0)==719){$J(t);break}}else{p=c[va>>2]|0;if(!p){n=t;break}n=f+12|0;r=t;q=0;while(1){if(c[n>>2]&128)Zw(r);m=c[r>>2]>>31&4;if(m)break;q=q+1|0;if(q>>>0>=p>>>0){n=t;break g}else r=r+4|0}$J(t);qa=720;break}}else qa=720;while(0);if((qa|0)==720)if(!m)n=0;else{qa=807;break b}m=e[j>>1]|0;c[Aa>>2]=c[j+8>>2];c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806;break}case 47:{if((b[za+4>>1]|0)!=-3)Ra(109408,107440,5314,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5315,108792);p=j+2|0;switch(e[p>>1]|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{m=2;qa=807;break b}}m=ZY(f,j,ha,8,ga)|0;t=c[ga>>2]|0;i:do if((m|0)!=0|(t|0)==0)if(!m)n=0;else{qa=807;break b}else{m=e[p>>1]|0;if((m|0)==16){m=c[ha>>2]|0;if(!m){n=t;break}p=f+12|0;n=t;q=0;while(1){if(c[p>>2]&128)_w(n);wa=n;ua=c[wa+4>>2]|0;if(!((ua|0)>-1|(ua|0)==-1&(c[wa>>2]|0)>>>0>4294967295))break;q=q+1|0;if(q>>>0>=m>>>0){n=t;break i}else n=n+8|0}$J(t);m=4;qa=807;break b}else if((m|0)==17){if(!(c[f+12>>2]&128)){n=t;break}cx(t,c[ha>>2]|0);n=t;break}else{s=c[ha>>2]|0;n=_J(s<<3)|0;if(!n){$J(t);m=7;qa=807;break b}switch(e[p>>1]|0){case 3:{if(s){m=f+12|0;p=t;q=n;r=0;while(1){if(c[m>>2]&128)Yw(p);l=q;c[l>>2]=e[p>>1];c[l+4>>2]=0;r=r+1|0;if((r|0)==(s|0))break;else{p=p+2|0;q=q+8|0}}}break}case 6:{if(s){m=t;p=n;q=0;while(1){za=a[m>>0]|0;l=p;c[l>>2]=za;c[l+4>>2]=((za|0)<0)<<31>>31;q=q+1|0;if((q|0)==(s|0))break;else{m=m+1|0;p=p+8|0}}}break}case 4:{if(s){m=f+12|0;p=t;q=n;r=0;while(1){if(c[m>>2]&128)Zw(p);l=q;c[l>>2]=c[p>>2];c[l+4>>2]=0;r=r+1|0;if((r|0)==(s|0))break;else{p=p+4|0;q=q+8|0}}}break}case 1:{if(s){m=t;p=n;q=0;while(1){l=p;c[l>>2]=d[m>>0];c[l+4>>2]=0;q=q+1|0;if((q|0)==(s|0))break;else{m=m+1|0;p=p+8|0}}}break}case 8:{if(s){m=f+12|0;p=t;q=n;r=0;while(1){if(c[m>>2]&128)Yw(p);za=b[p>>1]|0;l=q;c[l>>2]=za;c[l+4>>2]=((za|0)<0)<<31>>31;r=r+1|0;if((r|0)==(s|0))break;else{p=p+2|0;q=q+8|0}}}break}case 9:{if(s){m=f+12|0;p=t;q=n;r=0;while(1){if(c[m>>2]&128)Zw(p);za=c[p>>2]|0;l=q;c[l>>2]=za;c[l+4>>2]=((za|0)<0)<<31>>31;r=r+1|0;if((r|0)==(s|0))break;else{p=p+4|0;q=q+8|0}}}break}default:{}}$J(t);break}}while(0);m=e[j>>1]|0;c[Aa>>2]=c[j+8>>2];c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806;break}case 46:{if((b[za+4>>1]|0)!=-3)Ra(109408,107440,5297,108792);if((a[za+27>>0]|0)!=1)Ra(109384,107440,5298,108792);m=XY(f,j,z)|0;if(!m){m=e[j>>1]|0;n=c[z>>2]|0;c[Aa>>2]=c[j+8>>2];c[Aa+4>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807;break}case 14:{if((b[za+4>>1]|0)!=2)Ra(109184,107440,4888,108792);if(a[za+27>>0]|0)Ra(108944,107440,4889,108792);wa=j+8|0;m=c[wa>>2]|0;if(!((m|0)==2&(c[wa+4>>2]|0)==0)){f=c[f+628>>2]|0;c[Aa>>2]=c[za+28>>2];c[Aa+4>>2]=m;qx(f,108792,109208,Aa);f=0;i=Ba;return f|0}m=xL(f,j,P)|0;if(!m){l=e[j>>1]|0;j=c[P>>2]|0;za=e[j+2>>1]|0;c[Aa>>2]=e[j>>1];c[Aa+4>>2]=za;f=rv(f,l,Aa)|0;$J(j);if(!f){f=0;i=Ba;return f|0}else qa=805}else qa=807;break}case 16:{m=b[za+4>>1]|0;if(m<<16>>16<=0)Ra(109264,107440,4910,108792);if(a[za+27>>0]|0)Ra(108944,107440,4911,108792);ua=j+8|0;n=c[ua>>2]|0;wa=m<<16>>16;if(!((n|0)==(wa|0)?(c[ua+4>>2]|0)==(((wa|0)<0)<<31>>31|0):0)){f=c[f+628>>2]|0;c[Aa>>2]=c[za+28>>2];c[Aa+4>>2]=m<<16>>16;c[Aa+8>>2]=n;qx(f,108792,109288,Aa);f=0;i=Ba;return f|0}m=UY(f,j,Q)|0;if(!m){m=e[j>>1]|0;n=c[Q>>2]|0;c[Aa>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807;break}case 10:{if((b[za+4>>1]|0)!=1)Ra(109160,107440,4849,108792);if(a[za+27>>0]|0)Ra(108944,107440,4850,108792);ua=j+8|0;j:do if((c[ua>>2]|0)==1&(c[ua+4>>2]|0)==0)do switch(e[j+2>>1]|0){case 17:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[da>>2]=p;if(m&128){Zw(da);m=c[n>>2]|0;p=c[da>>2]|0}if(!(m&2048)){m=f+628|0;wa=Xd[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((wa|0)==(p|0)&(H|0)==0)){m=3;break j}if((Hd[c[f+632>>2]&255](c[m>>2]|0,ra,8)|0)!=8){m=3;break j}}else{m=p+8|0;if(p>>>0>4294967287|m>>>0<8){m=3;break j}if(m>>>0>(c[f+616>>2]|0)>>>0){m=3;break j}cK(ra,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ha=p;ua=c[ha+4>>2]|0;wa=ra;c[wa>>2]=c[ha>>2];c[wa+4>>2]=ua}if(m&128)_w(ra);m=ra;g[xa>>2]=+((c[m>>2]|0)>>>0)+4294967296.0*+(c[m+4>>2]|0);m=0;break j}case 16:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[_>>2]=p;if(m&128){Zw(_);m=c[n>>2]|0;p=c[_>>2]|0}if(!(m&2048)){m=f+628|0;ua=Xd[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((ua|0)==(p|0)&(H|0)==0)){m=3;break j}if((Hd[c[f+632>>2]&255](c[m>>2]|0,wa,8)|0)!=8){m=3;break j}}else{m=p+8|0;if(p>>>0>4294967287|m>>>0<8){m=3;break j}if(m>>>0>(c[f+616>>2]|0)>>>0){m=3;break j}cK(wa,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ha=p;ra=c[ha+4>>2]|0;ua=wa;c[ua>>2]=c[ha>>2];c[ua+4>>2]=ra}if(m&128)_w(wa);m=wa;g[xa>>2]=+((c[m>>2]|0)>>>0)+4294967296.0*+((c[m+4>>2]|0)>>>0);m=0;break j}case 4:{m=c[j+16>>2]|0;c[ga>>2]=m;if(c[f+12>>2]&128){Zw(ga);m=c[ga>>2]|0}g[xa>>2]=+(m>>>0);m=0;break j}case 9:{m=c[j+16>>2]|0;c[va>>2]=m;if(c[f+12>>2]&128){Zw(va);m=c[va>>2]|0}g[xa>>2]=+(m|0);m=0;break j}case 3:{wa=c[f+12>>2]|0;m=b[j+16>>1]|0;b[Aa>>1]=m;if(wa&128){Yw(Aa);m=b[Aa>>1]|0}g[xa>>2]=+(m&65535);m=0;break j}case 6:{g[xa>>2]=+(a[j+16>>0]|0);m=0;break j}case 8:{wa=c[f+12>>2]|0;m=b[j+16>>1]|0;b[ha>>1]=m;if(wa&128){Yw(ha);m=b[ha>>1]|0}g[xa>>2]=+(m<<16>>16);m=0;break j}case 1:{g[xa>>2]=+(d[j+16>>0]|0);m=0;break j}case 5:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[W>>2]=p;if(m&128){Zw(W);m=c[n>>2]|0;p=c[W>>2]|0}if(!(m&2048)){m=f+628|0;wa=Xd[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((wa|0)==(p|0)&(H|0)==0)){m=3;break j}if((Hd[c[f+632>>2]&255](c[m>>2]|0,ia,8)|0)!=8){m=3;break j}}else{m=p+8|0;if(p>>>0>4294967287|m>>>0<8){m=3;break j}if(m>>>0>(c[f+616>>2]|0)>>>0){m=3;break j}cK(ia,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ra=p;ua=c[ra+4>>2]|0;wa=ia;c[wa>>2]=c[ra>>2];c[wa+4>>2]=ua}if(m&128)bx(ia,2);m=c[ia>>2]|0;if(!m)o=0.0;else o=+(m>>>0)/+((c[ia+4>>2]|0)>>>0);g[xa>>2]=o;m=0;break j}case 11:{wa=c[f+12>>2]|0;g[xa>>2]=+g[j+16>>2];if(!(wa&128)){m=0;break j}Zw(xa);m=0;break j}case 12:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[U>>2]=p;if(m&128){Zw(U);m=c[n>>2]|0;p=c[U>>2]|0}if(!(m&2048)){m=f+628|0;wa=Xd[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((wa|0)==(p|0)&(H|0)==0)){m=3;break j}if((Hd[c[f+632>>2]&255](c[m>>2]|0,oa,8)|0)!=8){m=3;break j}}else{m=p+8|0;if(p>>>0>4294967287|m>>>0<8){m=3;break j}if(m>>>0>(c[f+616>>2]|0)>>>0){m=3;break j}cK(oa,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{wa=p;c[k>>2]=c[wa>>2];c[k+4>>2]=c[wa+4>>2];h[oa>>3]=+h[k>>3]}if(m&128)_w(oa);g[xa>>2]=+h[oa>>3];m=0;break j}case 10:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[Y>>2]=p;if(m&128){Zw(Y);m=c[n>>2]|0;p=c[Y>>2]|0}if(!(m&2048)){m=f+628|0;wa=Xd[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((wa|0)==(p|0)&(H|0)==0)){m=3;break j}if((Hd[c[f+632>>2]&255](c[m>>2]|0,ka,8)|0)!=8){m=3;break j}}else{m=p+8|0;if(p>>>0>4294967287|m>>>0<8){m=3;break j}if(m>>>0>(c[f+616>>2]|0)>>>0){m=3;break j}cK(ka,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ra=p;ua=c[ra+4>>2]|0;wa=ka;c[wa>>2]=c[ra>>2];c[wa+4>>2]=ua}if(m&128)bx(ka,2);m=c[ka>>2]|0;if(!m)o=0.0;else o=+(m|0)/+((c[ka+4>>2]|0)>>>0);g[xa>>2]=o;m=0;break j}default:{m=2;break j}}while(0);else m=1;while(0);if(!m){j=e[j>>1]|0;h[k>>3]=+g[xa>>2];c[Aa>>2]=c[k>>2];c[Aa+4>>2]=c[k+4>>2];if(!(rv(f,j,Aa)|0)){f=0;i=Ba;return f|0}else qa=805}else qa=807;break}case 11:{if((b[za+4>>1]|0)!=1)Ra(109160,107440,4862,108792);if(a[za+27>>0]|0)Ra(108944,107440,4863,108792);ua=j+8|0;k:do if((c[ua>>2]|0)==1&(c[ua+4>>2]|0)==0)do switch(e[j+2>>1]|0){case 5:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[X>>2]=p;if(m&128){Zw(X);m=c[n>>2]|0;p=c[X>>2]|0}if(!(m&2048)){m=f+628|0;wa=Xd[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((wa|0)==(p|0)&(H|0)==0)){m=3;break k}if((Hd[c[f+632>>2]&255](c[m>>2]|0,ja,8)|0)!=8){m=3;break k}}else{m=p+8|0;if(p>>>0>4294967287|m>>>0<8){m=3;break k}if(m>>>0>(c[f+616>>2]|0)>>>0){m=3;break k}cK(ja,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ra=p;ua=c[ra+4>>2]|0;wa=ja;c[wa>>2]=c[ra>>2];c[wa+4>>2]=ua}if(m&128)bx(ja,2);m=c[ja>>2]|0;if(!m)o=0.0;else o=+(m>>>0)/+((c[ja+4>>2]|0)>>>0);h[ya>>3]=o;m=0;break k}case 9:{m=c[j+16>>2]|0;c[va>>2]=m;if(c[f+12>>2]&128){Zw(va);m=c[va>>2]|0}h[ya>>3]=+(m|0);m=0;break k}case 6:{h[ya>>3]=+(a[j+16>>0]|0);m=0;break k}case 16:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[$>>2]=p;if(m&128){Zw($);m=c[n>>2]|0;p=c[$>>2]|0}if(!(m&2048)){m=f+628|0;ua=Xd[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((ua|0)==(p|0)&(H|0)==0)){m=3;break k}if((Hd[c[f+632>>2]&255](c[m>>2]|0,wa,8)|0)!=8){m=3;break k}}else{m=p+8|0;if(p>>>0>4294967287|m>>>0<8){m=3;break k}if(m>>>0>(c[f+616>>2]|0)>>>0){m=3;break k}cK(wa,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ha=p;ra=c[ha+4>>2]|0;ua=wa;c[ua>>2]=c[ha>>2];c[ua+4>>2]=ra}if(m&128)_w(wa);m=wa;h[ya>>3]=+((c[m>>2]|0)>>>0)+4294967296.0*+((c[m+4>>2]|0)>>>0);m=0;break k}case 8:{wa=c[f+12>>2]|0;m=b[j+16>>1]|0;b[ha>>1]=m;if(wa&128){Yw(ha);m=b[ha>>1]|0}h[ya>>3]=+(m<<16>>16);m=0;break k}case 1:{h[ya>>3]=+(d[j+16>>0]|0);m=0;break k}case 17:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[ea>>2]=p;if(m&128){Zw(ea);m=c[n>>2]|0;p=c[ea>>2]|0}if(!(m&2048)){m=f+628|0;wa=Xd[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((wa|0)==(p|0)&(H|0)==0)){m=3;break k}if((Hd[c[f+632>>2]&255](c[m>>2]|0,ra,8)|0)!=8){m=3;break k}}else{m=p+8|0;if(p>>>0>4294967287|m>>>0<8){m=3;break k}if(m>>>0>(c[f+616>>2]|0)>>>0){m=3;break k}cK(ra,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ha=p;ua=c[ha+4>>2]|0;wa=ra;c[wa>>2]=c[ha>>2];c[wa+4>>2]=ua}if(m&128)_w(ra);m=ra;h[ya>>3]=+((c[m>>2]|0)>>>0)+4294967296.0*+(c[m+4>>2]|0);m=0;break k}case 3:{wa=c[f+12>>2]|0;m=b[j+16>>1]|0;b[Aa>>1]=m;if(wa&128){Yw(Aa);m=b[Aa>>1]|0}h[ya>>3]=+(m&65535);m=0;break k}case 4:{m=c[j+16>>2]|0;c[ga>>2]=m;if(c[f+12>>2]&128){Zw(ga);m=c[ga>>2]|0}h[ya>>3]=+(m>>>0);m=0;break k}case 12:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[V>>2]=p;if(m&128){Zw(V);m=c[n>>2]|0;p=c[V>>2]|0}if(!(m&2048)){m=f+628|0;wa=Xd[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((wa|0)==(p|0)&(H|0)==0)){m=3;break k}if((Hd[c[f+632>>2]&255](c[m>>2]|0,ya,8)|0)!=8){m=3;break k}}else{m=p+8|0;if(p>>>0>4294967287|m>>>0<8){m=3;break k}if(m>>>0>(c[f+616>>2]|0)>>>0){m=3;break k}cK(ya,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{wa=p;c[k>>2]=c[wa>>2];c[k+4>>2]=c[wa+4>>2];h[ya>>3]=+h[k>>3]}if(!(m&128)){m=0;break k}_w(ya);m=0;break k}case 11:{wa=c[f+12>>2]|0;o=+g[j+16>>2];g[oa>>2]=o;if(wa&128){Zw(oa);o=+g[oa>>2]}h[ya>>3]=o;m=0;break k}case 10:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[Z>>2]=p;if(m&128){Zw(Z);m=c[n>>2]|0;p=c[Z>>2]|0}if(!(m&2048)){m=f+628|0;wa=Xd[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((wa|0)==(p|0)&(H|0)==0)){m=3;break k}if((Hd[c[f+632>>2]&255](c[m>>2]|0,la,8)|0)!=8){m=3;break k}}else{m=p+8|0;if(p>>>0>4294967287|m>>>0<8){m=3;break k}if(m>>>0>(c[f+616>>2]|0)>>>0){m=3;break k}cK(la,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ra=p;ua=c[ra+4>>2]|0;wa=la;c[wa>>2]=c[ra>>2];c[wa+4>>2]=ua}if(m&128)bx(la,2);m=c[la>>2]|0;if(!m)o=0.0;else o=+(m|0)/+((c[la+4>>2]|0)>>>0);h[ya>>3]=o;m=0;break k}default:{m=2;break k}}while(0);else m=1;while(0);if(!m){j=e[j>>1]|0;h[k>>3]=+h[ya>>3];c[Aa>>2]=c[k>>2];c[Aa+4>>2]=c[k+4>>2];if(!(rv(f,j,Aa)|0)){f=0;i=Ba;return f|0}else qa=805}else qa=807;break}case 12:{if((b[za+4>>1]|0)!=1)Ra(109160,107440,4875,108792);if(a[za+27>>0]|0)Ra(108944,107440,4876,108792);wa=j+8|0;if((c[wa>>2]|0)==1&(c[wa+4>>2]|0)==0){m=e[j+2>>1]|0;if((m|0)==13|(m|0)==4){m=c[j+16>>2]|0;c[Aa>>2]=m;if(c[f+12>>2]&128){Zw(Aa);m=c[Aa>>2]|0}l=na;c[l>>2]=m;c[l+4>>2]=0}else if((m|0)==18|(m|0)==16){n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[fa>>2]=p;if(m&128){Zw(fa);m=c[n>>2]|0;p=c[fa>>2]|0}if(!(m&2048)){m=f+628|0;wa=Xd[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((wa|0)==(p|0)&(H|0)==0)){m=3;qa=807;break b}if((Hd[c[f+632>>2]&255](c[m>>2]|0,na,8)|0)!=8){m=3;qa=807;break b}}else{m=p+8|0;if(p>>>0>4294967287|m>>>0<8){m=3;qa=807;break b}if(m>>>0>(c[f+616>>2]|0)>>>0){m=3;qa=807;break b}cK(na,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{wa=p;za=c[wa+4>>2]|0;l=na;c[l>>2]=c[wa>>2];c[l+4>>2]=za}if(m&128)_w(na)}else{m=2;qa=807;break b}j=e[j>>1]|0;wa=na;za=c[wa+4>>2]|0;l=Aa;c[l>>2]=c[wa>>2];c[l+4>>2]=za;if(!(rv(f,j,Aa)|0)){f=0;i=Ba;return f|0}else qa=805}else{m=1;qa=807}break}case 51:{Ra(108864,107440,4738,108792);break}case 2:{if((b[za+4>>1]|0)!=1)Ra(109160,107440,4797,108792);if(a[za+27>>0]|0)Ra(108944,107440,4798,108792);ua=j+8|0;l:do if((c[ua>>2]|0)==1&(c[ua+4>>2]|0)==0)switch(e[j+2>>1]|0){case 9:{m=c[j+16>>2]|0;c[va>>2]=m;if(!(c[f+12>>2]&128))n=m;else{Zw(va);n=c[va>>2]|0}wa=n>>>0<256;m=wa?0:4;n=wa?n&255:0;break l}case 16:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[ca>>2]=p;if(m&128){Zw(ca);m=c[n>>2]|0;p=c[ca>>2]|0}if(!(m&2048)){m=f+628|0;ua=Xd[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((ua|0)==(p|0)&(H|0)==0)){m=3;n=0;break l}if((Hd[c[f+632>>2]&255](c[m>>2]|0,wa,8)|0)!=8){m=3;n=0;break l}}else{m=p+8|0;if(p>>>0>4294967287|m>>>0<8){m=3;n=0;break l}if(m>>>0>(c[f+616>>2]|0)>>>0){m=3;n=0;break l}cK(wa,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ha=p;ra=c[ha+4>>2]|0;ua=wa;c[ua>>2]=c[ha>>2];c[ua+4>>2]=ra}if(m&128)_w(wa);n=c[wa>>2]|0;wa=c[wa+4>>2]|0;wa=wa>>>0<0|(wa|0)==0&n>>>0<256;m=wa?0:4;n=wa?n&255:0;break l}case 1:{m=0;n=a[j+16>>0]|0;break l}case 6:{n=a[j+16>>0]|0;wa=n<<24>>24>-1;m=wa?0:4;n=wa?n:0;break l}case 8:{wa=c[f+12>>2]|0;m=b[j+16>>1]|0;b[ha>>1]=m;if(!(wa&128))n=m;else{Yw(ha);n=b[ha>>1]|0}wa=(n&65535)<256;m=wa?0:4;n=wa?n&255:0;break l}case 3:{wa=c[f+12>>2]|0;m=b[j+16>>1]|0;b[Aa>>1]=m;if(!(wa&128))n=m;else{Yw(Aa);n=b[Aa>>1]|0}wa=(n&65535)<256;m=wa?0:4;n=wa?n&255:0;break l}case 4:{m=c[j+16>>2]|0;c[ga>>2]=m;if(!(c[f+12>>2]&128))n=m;else{Zw(ga);n=c[ga>>2]|0}wa=n>>>0<256;m=wa?0:4;n=wa?n&255:0;break l}case 17:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[R>>2]=p;if(m&128){Zw(R);m=c[n>>2]|0;p=c[R>>2]|0}if(!(m&2048)){m=f+628|0;wa=Xd[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((wa|0)==(p|0)&(H|0)==0)){m=3;n=0;break l}if((Hd[c[f+632>>2]&255](c[m>>2]|0,ra,8)|0)!=8){m=3;n=0;break l}}else{m=p+8|0;if(p>>>0>4294967287|m>>>0<8){m=3;n=0;break l}if(m>>>0>(c[f+616>>2]|0)>>>0){m=3;n=0;break l}cK(ra,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ha=p;ua=c[ha+4>>2]|0;wa=ra;c[wa>>2]=c[ha>>2];c[wa+4>>2]=ua}if(m&128)_w(ra);wa=ra;n=c[wa>>2]|0;wa=c[wa+4>>2]|0;wa=wa>>>0<0|(wa|0)==0&n>>>0<256;m=wa?0:4;n=wa?n&255:0;break l}default:{m=2;n=0;break l}}else{m=1;n=0}while(0);if(!m){j=e[j>>1]|0;c[Aa>>2]=n&255;if(!(rv(f,j,Aa)|0)){f=0;i=Ba;return f|0}else qa=805}else qa=807;break}case 13:{Ra(108904,107440,4739,108792);break}case 1:{if(a[za+27>>0]|0)Ra(108944,107440,4748,108792);m=UY(f,j,ma)|0;if(!m){r=j+8|0;n=c[r>>2]|0;m:do if(!n)m=0;else{p=c[ma>>2]|0;m=0;while(1){if(!(a[p>>0]|0))break m;m=m+1|0;if(m>>>0>>0)p=p+1|0;else break}}while(0);m=m+1|0;do if(m>>>0>=n>>>0)if(m>>>0>n>>>0){l=c[f+628>>2]|0;c[Aa>>2]=c[za+28>>2];qx(l,108792,109104,Aa);l=r;za=c[l>>2]|0;m=za+1|0;l=yfa(za|0,c[l+4>>2]|0,1,0)|0;if((m|0)==(l|0)&0==(H|0)){n=_J(m)|0;m=c[ma>>2]|0;if(n){cK(n,m,c[r>>2]|0);a[n+(c[r>>2]|0)>>0]=0;if(m)$J(m);c[ma>>2]=n;break}}else m=c[ma>>2]|0;if(!m){f=0;i=Ba;return f|0}$J(m);f=0;i=Ba;return f|0}else qa=32;else{qa=c[f+628>>2]|0;c[Aa>>2]=c[za+28>>2];qx(qa,108792,108968,Aa);qa=32}while(0);if((qa|0)==32)n=c[ma>>2]|0;m=e[j>>1]|0;c[Aa>>2]=n;m=rv(f,m,Aa)|0;if(n)$J(n);if(!m){f=0;i=Ba;return f|0}else qa=806}else qa=807;break}case 6:{if((b[za+4>>1]|0)!=1)Ra(109160,107440,4823,108792);if(a[za+27>>0]|0)Ra(108944,107440,4824,108792);ua=j+8|0;n:do if((c[ua>>2]|0)==1&(c[ua+4>>2]|0)==0)switch(e[j+2>>1]|0){case 1:{c[pa>>2]=d[j+16>>0];m=0;break n}case 6:{m=a[j+16>>0]|0;if(m<<24>>24<=-1){m=4;break n}c[pa>>2]=m<<24>>24;m=0;break n}case 3:{wa=c[f+12>>2]|0;m=b[j+16>>1]|0;b[Aa>>1]=m;if(wa&128){Yw(Aa);m=b[Aa>>1]|0}c[pa>>2]=m&65535;m=0;break n}case 8:{wa=c[f+12>>2]|0;m=b[j+16>>1]|0;b[ha>>1]=m;if(wa&128){Yw(ha);m=b[ha>>1]|0}if(m<<16>>16<=-1){m=4;break n}c[pa>>2]=m<<16>>16;m=0;break n}case 4:{c[pa>>2]=c[j+16>>2];if(!(c[f+12>>2]&128)){m=0;break n}Zw(pa);m=0;break n}case 9:{m=c[j+16>>2]|0;c[ga>>2]=m;if(!(c[f+12>>2]&128))n=m;else{Zw(ga);n=c[ga>>2]|0}m=n>>31&4;if(m)break n;c[pa>>2]=n;m=0;break n}case 16:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[aa>>2]=p;if(m&128){Zw(aa);m=c[n>>2]|0;p=c[aa>>2]|0}if(!(m&2048)){m=f+628|0;wa=Xd[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((wa|0)==(p|0)&(H|0)==0)){m=3;break n}if((Hd[c[f+632>>2]&255](c[m>>2]|0,va,8)|0)!=8){m=3;break n}}else{m=p+8|0;if(p>>>0>4294967287|m>>>0<8){m=3;break n}if(m>>>0>(c[f+616>>2]|0)>>>0){m=3;break n}cK(va,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ra=p;ua=c[ra+4>>2]|0;wa=va;c[wa>>2]=c[ra>>2];c[wa+4>>2]=ua}if(m&128)_w(va);wa=va;m=c[wa>>2]|0;wa=c[wa+4>>2]|0;if(!(wa>>>0<1|(wa|0)==1&m>>>0<0)){m=4;break n}c[pa>>2]=m;m=0;break n}case 17:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[S>>2]=p;if(m&128){Zw(S);m=c[n>>2]|0;p=c[S>>2]|0}if(!(m&2048)){m=f+628|0;ua=Xd[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((ua|0)==(p|0)&(H|0)==0)){m=3;break n}if((Hd[c[f+632>>2]&255](c[m>>2]|0,wa,8)|0)!=8){m=3;break n}}else{m=p+8|0;if(p>>>0>4294967287|m>>>0<8){m=3;break n}if(m>>>0>(c[f+616>>2]|0)>>>0){m=3;break n}cK(wa,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ha=p;ra=c[ha+4>>2]|0;ua=wa;c[ua>>2]=c[ha>>2];c[ua+4>>2]=ra}if(m&128)_w(wa);m=c[wa>>2]|0;wa=c[wa+4>>2]|0;if(!(wa>>>0<1|(wa|0)==1&m>>>0<0)){m=4;break n}c[pa>>2]=m;m=0;break n}default:{m=2;break n}}else m=1;while(0);if(!m){j=e[j>>1]|0;c[Aa>>2]=c[pa>>2];if(!(rv(f,j,Aa)|0)){f=0;i=Ba;return f|0}else qa=805}else qa=807;break}case 4:{if((b[za+4>>1]|0)!=1)Ra(109160,107440,4810,108792);if(a[za+27>>0]|0)Ra(108944,107440,4811,108792);m=wL(f,j,s)|0;if(!m){j=e[j>>1]|0;c[Aa>>2]=e[s>>1];if(!(rv(f,j,Aa)|0)){f=0;i=Ba;return f|0}else qa=805}else qa=807;break}case 8:{if((b[za+4>>1]|0)!=1)Ra(109160,107440,4836,108792);if(a[za+27>>0]|0)Ra(108944,107440,4837,108792);ua=j+8|0;o:do if((c[ua>>2]|0)==1&(c[ua+4>>2]|0)==0)switch(e[j+2>>1]|0){case 17:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[T>>2]=p;if(m&128){Zw(T);m=c[n>>2]|0;p=c[T>>2]|0}if(!(m&2048)){m=f+628|0;ua=Xd[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((ua|0)==(p|0)&(H|0)==0)){m=3;break o}if((Hd[c[f+632>>2]&255](c[m>>2]|0,wa,8)|0)!=8){m=3;break o}}else{m=p+8|0;if(p>>>0>4294967287|m>>>0<8){m=3;break o}if(m>>>0>(c[f+616>>2]|0)>>>0){m=3;break o}cK(wa,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ha=p;ra=c[ha+4>>2]|0;ua=wa;c[ua>>2]=c[ha>>2];c[ua+4>>2]=ra}if(m&128)_w(wa);n=wa;m=c[n>>2]|0;n=c[n+4>>2]|0;if(!((n|0)>-1|(n|0)==-1&m>>>0>4294967295)){m=4;break o}wa=sa;c[wa>>2]=m;c[wa+4>>2]=n;m=0;break o}case 4:{m=c[j+16>>2]|0;c[ga>>2]=m;if(c[f+12>>2]&128){Zw(ga);m=c[ga>>2]|0}wa=sa;c[wa>>2]=m;c[wa+4>>2]=0;m=0;break o}case 8:{wa=c[f+12>>2]|0;m=b[j+16>>1]|0;b[ha>>1]=m;if(wa&128){Yw(ha);m=b[ha>>1]|0}if(m<<16>>16<=-1){m=4;break o}wa=m<<16>>16;m=sa;c[m>>2]=wa;c[m+4>>2]=((wa|0)<0)<<31>>31;m=0;break o}case 16:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[ba>>2]=p;if(m&128){Zw(ba);m=c[n>>2]|0;p=c[ba>>2]|0}if(!(m&2048)){m=f+628|0;wa=Xd[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((wa|0)==(p|0)&(H|0)==0)){m=3;break o}if((Hd[c[f+632>>2]&255](c[m>>2]|0,sa,8)|0)!=8){m=3;break o}}else{m=p+8|0;if(p>>>0>4294967287|m>>>0<8){m=3;break o}if(m>>>0>(c[f+616>>2]|0)>>>0){m=3;break o}cK(sa,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ra=p;ua=c[ra+4>>2]|0;wa=sa;c[wa>>2]=c[ra>>2];c[wa+4>>2]=ua}if(!(m&128)){m=0;break o}_w(sa);m=0;break o}case 1:{m=sa;c[m>>2]=d[j+16>>0];c[m+4>>2]=0;m=0;break o}case 3:{wa=c[f+12>>2]|0;m=b[j+16>>1]|0;b[Aa>>1]=m;if(wa&128){Yw(Aa);m=b[Aa>>1]|0}wa=sa;c[wa>>2]=m&65535;c[wa+4>>2]=0;m=0;break o}case 9:{m=c[j+16>>2]|0;c[va>>2]=m;if(!(c[f+12>>2]&128))n=m;else{Zw(va);n=c[va>>2]|0}m=n>>31&4;if(m)break o;m=sa;c[m>>2]=n;c[m+4>>2]=((n|0)<0)<<31>>31;m=0;break o}case 6:{m=a[j+16>>0]|0;if(m<<24>>24<=-1){m=4;break o}wa=m<<24>>24;m=sa;c[m>>2]=wa;c[m+4>>2]=((wa|0)<0)<<31>>31;m=0;break o}default:{m=2;break o}}else m=1;while(0);if(!m){j=e[j>>1]|0;wa=sa;za=c[wa+4>>2]|0;l=Aa;c[l>>2]=c[wa>>2];c[l+4>>2]=za;if(!(rv(f,j,Aa)|0)){f=0;i=Ba;return f|0}else qa=805}else qa=807;break}default:Ra(111936,107440,5380,108792)}while(0);if((qa|0)==805){f=1;i=Ba;return f|0}else if((qa|0)==806){f=1;i=Ba;return f|0}else if((qa|0)==807){yL(f,m,108792,c[za+28>>2]|0,l);f=0;i=Ba;return f|0}}while(0);f=c[f+628>>2]|0;c[Aa>>2]=q&65535;Yv(f,108792,108816,Aa);f=0;i=Ba;return f|0}function wL(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;o=r+28|0;n=r+24|0;k=r+32|0;l=r+16|0;m=r+20|0;p=r+8|0;q=r;j=g+8|0;if(!((c[j>>2]|0)==1&(c[j+4>>2]|0)==0)){h=1;i=r;return h|0}switch(e[g+2>>1]|0|0){case 6:{j=a[g+16>>0]|0;if(j<<24>>24<=-1){h=4;i=r;return h|0}b[h>>1]=j<<24>>24;h=0;i=r;return h|0}case 4:{j=c[g+16>>2]|0;c[l>>2]=j;if(c[f+12>>2]&128){Zw(l);j=c[l>>2]|0}if(j>>>0>=65536){h=4;i=r;return h|0}b[h>>1]=j;h=0;i=r;return h|0}case 1:{b[h>>1]=d[g+16>>0]|0;h=0;i=r;return h|0}case 3:{f=c[f+12>>2]|0;b[h>>1]=b[g+16>>1]|0;if(!(f&128)){h=0;i=r;return h|0}Yw(h);h=0;i=r;return h|0}case 8:{f=c[f+12>>2]|0;j=b[g+16>>1]|0;b[k>>1]=j;if(f&128){Yw(k);j=b[k>>1]|0}if(j<<16>>16<=-1){h=4;i=r;return h|0}b[h>>1]=j;h=0;i=r;return h|0}case 9:{j=c[g+16>>2]|0;c[m>>2]=j;if(c[f+12>>2]&128){Zw(m);j=c[m>>2]|0}if(j>>>0>=65536){h=4;i=r;return h|0}b[h>>1]=j;h=0;i=r;return h|0}case 16:{m=f+12|0;j=c[m>>2]|0;k=g+16|0;if(!(j&524288)){k=c[k>>2]|0;c[o>>2]=k;if(j&128){Zw(o);j=c[m>>2]|0;k=c[o>>2]|0}do if(!(j&2048)){j=f+628|0;o=Xd[c[f+640>>2]&255](c[j>>2]|0,k,0,0)|0;if(!((o|0)==(k|0)&(H|0)==0)){h=3;i=r;return h|0}if((Hd[c[f+632>>2]&255](c[j>>2]|0,p,8)|0)!=8){h=3;i=r;return h|0}}else{j=k+8|0;if(k>>>0>4294967287|j>>>0<8){h=3;i=r;return h|0}if(j>>>0>(c[f+616>>2]|0)>>>0){h=3;i=r;return h|0}else{cK(p,(c[f+612>>2]|0)+k|0,8);break}}while(0);j=c[m>>2]|0}else{g=k;o=c[g+4>>2]|0;f=p;c[f>>2]=c[g>>2];c[f+4>>2]=o}if(j&128)_w(p);f=p;j=c[f>>2]|0;f=c[f+4>>2]|0;if(!(f>>>0<0|(f|0)==0&j>>>0<65536)){h=4;i=r;return h|0}b[h>>1]=j;h=0;i=r;return h|0}case 17:{m=f+12|0;j=c[m>>2]|0;k=g+16|0;if(!(j&524288)){k=c[k>>2]|0;c[n>>2]=k;if(j&128){Zw(n);j=c[m>>2]|0;k=c[n>>2]|0}do if(!(j&2048)){j=f+628|0;o=Xd[c[f+640>>2]&255](c[j>>2]|0,k,0,0)|0;if(!((o|0)==(k|0)&(H|0)==0)){h=3;i=r;return h|0}if((Hd[c[f+632>>2]&255](c[j>>2]|0,q,8)|0)!=8){h=3;i=r;return h|0}}else{j=k+8|0;if(k>>>0>4294967287|j>>>0<8){h=3;i=r;return h|0}if(j>>>0>(c[f+616>>2]|0)>>>0){h=3;i=r;return h|0}else{cK(q,(c[f+612>>2]|0)+k|0,8);break}}while(0);j=c[m>>2]|0}else{g=k;o=c[g+4>>2]|0;f=q;c[f>>2]=c[g>>2];c[f+4>>2]=o}if(j&128)_w(q);f=q;j=c[f>>2]|0;f=c[f+4>>2]|0;if(!(f>>>0<0|(f|0)==0&j>>>0<65536)){h=4;i=r;return h|0}b[h>>1]=j;h=0;i=r;return h|0}default:{h=2;i=r;return h|0}}return 0}function xL(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+16|0;j=p+4|0;l=p;k=g+2|0;switch(e[k>>1]|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{n=2;i=p;return n|0}}g=ZY(f,g,j,2,l)|0;o=c[l>>2]|0;if((g|0)!=0|(o|0)==0){c[h>>2]=0;n=g;i=p;return n|0}g=e[k>>1]|0;if((g|0)==8){l=c[j>>2]|0;a:do if(l){g=f+12|0;j=o;k=0;while(1){if(c[g>>2]&128)Yw(j);if((b[j>>1]|0)<=-1)break;k=k+1|0;if(k>>>0>=l>>>0)break a;else j=j+2|0}$J(o);n=4;i=p;return n|0}while(0);c[h>>2]=o;n=0;i=p;return n|0}else if((g|0)!=3){m=c[j>>2]|0;n=_J(m<<1)|0;if(!n){$J(o);n=7;i=p;return n|0}b:do switch(e[k>>1]|0){case 16:{if(!m)g=48;else{g=f+12|0;j=o;k=n;f=0;while(1){if(c[g>>2]&128)_w(j);q=j;l=c[q>>2]|0;q=c[q+4>>2]|0;if(!(q>>>0<0|(q|0)==0&l>>>0<65536)){g=47;break b}b[k>>1]=l;f=f+1|0;if(f>>>0>=m>>>0){g=48;break}else{j=j+8|0;k=k+2|0}}}break}case 4:{if(!m)g=48;else{g=f+12|0;j=o;k=n;f=0;while(1){if(c[g>>2]&128)Zw(j);l=c[j>>2]|0;if(l>>>0>=65536){g=47;break b}b[k>>1]=l;f=f+1|0;if(f>>>0>=m>>>0){g=48;break}else{j=j+4|0;k=k+2|0}}}break}case 1:{if(!m)g=48;else{g=o;l=n;j=0;while(1){b[l>>1]=d[g>>0]|0;j=j+1|0;if(j>>>0>=m>>>0){g=48;break}else{g=g+1|0;l=l+2|0}}}break}case 9:{if(!m)g=48;else{g=f+12|0;j=o;k=n;f=0;while(1){if(c[g>>2]&128)Zw(j);l=c[j>>2]|0;if(l>>>0>=65536){g=47;break b}b[k>>1]=l;f=f+1|0;if(f>>>0>=m>>>0){g=48;break}else{j=j+4|0;k=k+2|0}}}break}case 6:{if(!m)g=48;else{l=o;j=n;k=0;while(1){g=a[l>>0]|0;if(g<<24>>24<=-1){g=47;break b}b[j>>1]=g<<24>>24;k=k+1|0;if(k>>>0>=m>>>0){g=48;break}else{l=l+1|0;j=j+2|0}}}break}case 17:{if(!m)g=48;else{g=f+12|0;j=o;k=n;f=0;while(1){if(c[g>>2]&128)_w(j);q=j;l=c[q>>2]|0;q=c[q+4>>2]|0;if(!(q>>>0<0|(q|0)==0&l>>>0<65536)){g=47;break b}b[k>>1]=l;f=f+1|0;if(f>>>0>=m>>>0){g=48;break}else{j=j+8|0;k=k+2|0}}}break}default:g=48}while(0);if((g|0)==47){$J(o);$J(n);q=4;i=p;return q|0}else if((g|0)==48){$J(o);c[h>>2]=n;q=0;i=p;return q|0}}else{c[h>>2]=o;if(!(c[f+12>>2]&128)){q=0;i=p;return q|0}$w(o,c[j>>2]|0);q=0;i=p;return q|0}return 0}function yL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+16|0;g=h;if(!f)switch(b|0){case 4:{a=c[a+628>>2]|0;c[g>>2]=e;Yv(a,d,110352,g);i=h;return}case 6:{a=c[a+628>>2]|0;c[g>>2]=e;Yv(a,d,110440,g);i=h;return}case 3:{a=c[a+628>>2]|0;c[g>>2]=e;Yv(a,d,110320,g);i=h;return}case 5:{a=c[a+628>>2]|0;c[g>>2]=e;Yv(a,d,110384,g);i=h;return}case 7:{a=c[a+628>>2]|0;c[g>>2]=e;Yv(a,d,110488,g);i=h;return}case 1:{a=c[a+628>>2]|0;c[g>>2]=e;Yv(a,d,110256,g);i=h;return}case 2:{a=c[a+628>>2]|0;c[g>>2]=e;Yv(a,d,110288,g);i=h;return}default:Ra(111936,107440,3371,110520)}else switch(b|0){case 2:{a=c[a+628>>2]|0;c[g>>2]=e;qx(a,d,110592,g);i=h;return}case 7:{a=c[a+628>>2]|0;c[g>>2]=e;qx(a,d,110840,g);i=h;return}case 5:{a=c[a+628>>2]|0;c[g>>2]=e;qx(a,d,110720,g);i=h;return}case 3:{a=c[a+628>>2]|0;c[g>>2]=e;qx(a,d,110632,g);i=h;return}case 4:{a=c[a+628>>2]|0;c[g>>2]=e;qx(a,d,110680,g);i=h;return}case 6:{a=c[a+628>>2]|0;c[g>>2]=e;qx(a,d,110784,g);i=h;return}case 1:{a=c[a+628>>2]|0;c[g>>2]=e;qx(a,d,110552,g);i=h;return}default:Ra(111936,107440,3412,110520)}}function zL(f,j,k){f=f|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;m=u+4|0;l=u;n=j+2|0;switch(e[n>>1]|0){case 12:case 11:case 10:case 5:case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{k=2;i=u;return k|0}}j=ZY(f,j,m,8,l)|0;t=c[l>>2]|0;if((j|0)!=0|(t|0)==0){c[k>>2]=0;k=j;i=u;return k|0}if((b[n>>1]|0)==12){if(c[f+12>>2]&128)cx(t,c[m>>2]|0);c[k>>2]=t;k=0;i=u;return k|0}r=c[m>>2]|0;s=_J(r<<3)|0;if(!s){$J(t);k=7;i=u;return k|0}do switch(e[n>>1]|0){case 16:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)_w(l);p=l;h[m>>3]=+((c[p>>2]|0)>>>0)+4294967296.0*+((c[p+4>>2]|0)>>>0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+8|0;m=m+8|0}}}break}case 8:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Yw(l);h[m>>3]=+(b[l>>1]|0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+2|0;m=m+8|0}}}break}case 9:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Zw(l);h[m>>3]=+(c[l>>2]|0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+4|0;m=m+8|0}}}break}case 10:{if(r){m=f+12|0;f=t;p=s;q=0;while(1){j=c[m>>2]|0;if(j&128){Zw(f);j=c[m>>2]|0}l=c[f>>2]|0;n=f+4|0;if(j&128)Zw(n);j=c[n>>2]|0;if(!j)o=0.0;else o=+(l|0)/+(j>>>0);h[p>>3]=o;q=q+1|0;if(q>>>0>=r>>>0)break;else{f=f+8|0;p=p+8|0}}}break}case 1:{if(r){j=t;l=s;m=0;while(1){h[l>>3]=+(d[j>>0]|0);m=m+1|0;if(m>>>0>=r>>>0)break;else{j=j+1|0;l=l+8|0}}}break}case 17:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)_w(l);p=l;h[m>>3]=+((c[p>>2]|0)>>>0)+4294967296.0*+(c[p+4>>2]|0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+8|0;m=m+8|0}}}break}case 4:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Zw(l);h[m>>3]=+((c[l>>2]|0)>>>0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+4|0;m=m+8|0}}}break}case 6:{if(r){j=t;l=s;m=0;while(1){h[l>>3]=+(a[j>>0]|0);m=m+1|0;if(m>>>0>=r>>>0)break;else{j=j+1|0;l=l+8|0}}}break}case 5:{if(r){m=f+12|0;f=t;p=s;q=0;while(1){j=c[m>>2]|0;if(j&128){Zw(f);j=c[m>>2]|0}n=f+4|0;l=c[f>>2]|0;if(j&128)Zw(n);j=c[n>>2]|0;if(!j)o=0.0;else o=+(l>>>0)/+(j>>>0);h[p>>3]=o;q=q+1|0;if(q>>>0>=r>>>0)break;else{f=f+8|0;p=p+8|0}}}break}case 3:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Yw(l);h[m>>3]=+(e[l>>1]|0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+2|0;m=m+8|0}}}break}case 11:{if(c[f+12>>2]&128)bx(t,r);if(r){j=t;l=s;m=0;while(1){h[l>>3]=+g[j>>2];m=m+1|0;if(m>>>0>=r>>>0)break;else{j=j+4|0;l=l+8|0}}}break}default:{}}while(0);$J(t);c[k>>2]=s;k=0;i=u;return k|0}function AL(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;j=k;g=XY(a,b,j)|0;if(g){b=Iv(a,e[b>>1]|0)|0;if(!b)b=107648;else b=c[b+28>>2]|0;yL(a,g,108680,b,0);f=0;i=k;return f|0}h=b+8|0;g=h;if((c[g+4>>2]|0)==0?(c[g>>2]|0)==(d|0):0)b=c[j>>2]|0;else{b=Wu(a,d,8,108704)|0;if(!b){$J(c[j>>2]|0);f=0;i=k;return f|0}l=h;g=c[l>>2]|0;l=c[l+4>>2]|0;a=c[j>>2]|0;if(l>>>0<0|(l|0)==0&g>>>0>>0){cK(b,a,g<<3);l=c[h>>2]|0;bK(b+(l<<3)|0,0,d-l<<3)}else cK(b,a,d<<3);$J(a);c[j>>2]=b}c[f>>2]=b;f=1;i=k;return f|0}function BL(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+16|0;n=s;r=a+176|0;g=c[r>>2]|0;if(g)$J(g);o=a+168|0;q=Wu(a,c[o>>2]|0,8,110080)|0;c[r>>2]=q;if(!q){a=-1;i=s;return a|0}do if((b[a+88>>1]|0)==1)if(!(c[a+12>>2]&1024)){g=Sw(a)|0;k=c[o>>2]|0;if(!k)break;h=Ifa(((c[a+60>>2]|0)>>>0)/((c[a+164>>2]|0)>>>0)|0|0,0,g|0,H|0)|0;j=H;g=c[r>>2]|0;d=0;do{r=g+(d<<3)|0;c[r>>2]=h;c[r+4>>2]=j;d=d+1|0}while(d>>>0>>0)}else{j=nx(a)|0;k=H;h=c[o>>2]|0;if(!h)break;g=c[r>>2]|0;d=0;do{r=g+(d<<3)|0;c[r>>2]=j;c[r+4>>2]=k;d=d+1|0}while(d>>>0>>0)}else{m=a+628|0;p=Ed[c[a+648>>2]&511](c[m>>2]|0)|0;q=H;l=a+12|0;g=f&65535;if(!(c[l>>2]&524288))j=(g*12|0)+14|0;else j=(g*20|0)+32|0;a:do if(!(f<<16>>16))g=0;else{h=0;k=d;while(1){g=k+2|0;d=Gv(e[g>>1]|0)|0;if(!d)break;t=k+8|0;t=Ifa(c[t>>2]|0,c[t+4>>2]|0,d|0,0)|0;g=H;d=(c[l>>2]&524288|0)==0?g>>>0<0|(g|0)==0&t>>>0<5:g>>>0<0|(g|0)==0&t>>>0<9;j=yfa((d?0:t)|0,(d?0:g)|0,j|0,h|0)|0;g=H;f=f+-1<<16>>16;if(!(f<<16>>16))break a;else{h=g;k=k+24|0}}t=c[m>>2]|0;c[n>>2]=e[g>>1];Yv(t,110056,110112,n);t=-1;i=s;return t|0}while(0);g=xfa(p|0,q|0,j|0,g|0)|0;j=H;if((b[a+126>>1]|0)==2){g=Jfa(g|0,j|0,e[a+98>>1]|0,0)|0;j=H}k=c[o>>2]|0;f=c[r>>2]|0;if(!k)g=-1;else{d=k>>>0>1;h=0;do{t=f+(h<<3)|0;c[t>>2]=g;c[t+4>>2]=j;h=h+1|0}while(h>>>0>>0);g=d?k+-1|0:0}d=(c[a+172>>2]|0)+(g<<3)|0;j=c[d>>2]|0;d=c[d+4>>2]|0;g=f+(g<<3)|0;t=g;t=yfa(c[t>>2]|0,c[t+4>>2]|0,j|0,d|0)|0;r=H;if(r>>>0>q>>>0|(r|0)==(q|0)&t>>>0>p>>>0){r=xfa(p|0,q|0,j|0,d|0)|0;t=g;c[t>>2]=r;c[t+4>>2]=H}}while(0);r=a+40|0;t=c[r>>2]|0;c[r>>2]=t|16777216;if(t&131072){t=1;i=s;return t|0}c[a+100>>2]=c[a+60>>2];t=1;i=s;return t|0}function CL(d,f,h,j){d=d|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0;gb=i;i=i+96|0;fb=gb+32|0;Ha=gb+68|0;Ia=gb+8|0;Ja=gb+72|0;Fa=gb+80|0;Na=gb+64|0;Ka=gb;Ga=gb+24|0;Oa=gb+16|0;bb=gb+76|0;La=gb+84|0;Ma=gb+40|0;Ta=gb+60|0;Pa=gb+82|0;Qa=gb+48|0;Sa=gb+52|0;Ua=gb+56|0;Ya=gb+44|0;if(!(c[d+8>>2]|0)){fb=1;i=gb;return fb|0}cb=(h|0)!=0;db=d+12|0;if(cb){h=c[db>>2]|0;if((h&4096|0)!=0?(c[db>>2]=h&-4097,(Ed[c[d+528>>2]&511](d)|0)==0):0){Yv(c[d+628>>2]|0,111664,111504,fb);fb=0;i=gb;return fb|0}Bd[c[d+556>>2]&511](d);m=d+608|0;if(((c[m>>2]|0)>0?(c[db>>2]&64|0)!=0:0)?(vx(d)|0)==0:0){Yv(c[d+628>>2]|0,111664,111552,fb);fb=0;i=gb;return fb|0}h=c[db>>2]|0;if((h&512|0)!=0?(k=d+588|0,l=c[k>>2]|0,(l|0)!=0):0){$J(l);c[m>>2]=0;c[k+0>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;h=c[db>>2]|0}c[db>>2]=h&-81}Ba=(f|0)!=0;x=d+40|0;y=d+156|0;Ca=d+44|0;z=d+184|0;A=d+464|0;B=d+188|0;C=d+472|0;Da=d+480|0;D=d+660|0;E=d+656|0;F=d+216|0;G=d+220|0;I=d+84|0;J=d+98|0;K=d+200|0;L=d+204|0;M=d+208|0;N=d+212|0;O=d+196|0;P=d+192|0;Q=d+152|0;R=d+76|0;S=d+64|0;T=d+112|0;U=d+108|0;V=d+86|0;W=d+140|0;X=d+144|0;Y=d+148|0;Z=d+168|0;_=d+172|0;$=d+176|0;aa=d+136|0;ba=d+124|0;ca=d+126|0;da=d+106|0;ea=d+104|0;fa=d+100|0;ga=d+96|0;ha=d+94|0;ia=d+92|0;ja=d+90|0;ka=d+88|0;la=d+80|0;ma=d+128|0;na=d+132|0;oa=d+116|0;pa=d+120|0;qa=d+68|0;ra=d+72|0;sa=d+56|0;ta=d+60|0;ua=d+224|0;Za=d+16|0;_a=d+640|0;eb=d+628|0;va=d+432|0;$a=d+636|0;wa=d+632|0;xa=d+428|0;ya=(j|0)==0;za=d+448|0;Aa=d+228|0;h=0;p=0;a:while(1){c[bb>>2]=0;do if(Ba){do if(c[x>>2]&2){m=c[sa>>2]|0;k=(h|0)==0;if(!k){if(m>>>0<65536){b[fb>>1]=m;if(c[db>>2]&128)Yw(fb);m=_Y(d,bb,h,256,3,1,2,fb)|0}else{c[fb>>2]=m;if(c[db>>2]&128)Zw(fb);m=_Y(d,bb,h,256,4,1,4,fb)|0}if(!m){ab=596;break a}m=c[ta>>2]|0;if(!k){if(m>>>0<65536){b[fb>>1]=m;if(c[db>>2]&128)Yw(fb);m=_Y(d,bb,h,257,3,1,2,fb)|0}else{c[fb>>2]=m;if(c[db>>2]&128)Zw(fb);m=_Y(d,bb,h,257,4,1,4,fb)|0}if(!m){ab=596;break a}else break}}else c[bb>>2]=1;c[bb>>2]=(c[bb>>2]|0)+1}while(0);do if(c[x>>2]&4){m=c[qa>>2]|0;k=(h|0)==0;if(!k){if(m>>>0<65536){b[fb>>1]=m;if(c[db>>2]&128)Yw(fb);m=_Y(d,bb,h,322,3,1,2,fb)|0}else{c[fb>>2]=m;if(c[db>>2]&128)Zw(fb);m=_Y(d,bb,h,322,4,1,4,fb)|0}if(!m){ab=596;break a}m=c[ra>>2]|0;if(!k){if(m>>>0<65536){b[fb>>1]=m;if(c[db>>2]&128)Yw(fb);m=_Y(d,bb,h,323,3,1,2,fb)|0}else{c[fb>>2]=m;if(c[db>>2]&128)Zw(fb);m=_Y(d,bb,h,323,4,1,4,fb)|0}if(!m){ab=596;break a}else break}}else c[bb>>2]=(c[bb>>2]|0)+1;c[bb>>2]=(c[bb>>2]|0)+1}while(0);m=c[x>>2]|0;if(m&8){if(!($Y(d,bb,h,282,+g[oa>>2])|0)){ab=596;break a}if(!($Y(d,bb,h,283,+g[pa>>2])|0)){ab=596;break a}m=c[x>>2]|0}if(m&16){if(!($Y(d,bb,h,286,+g[ma>>2])|0)){ab=596;break a}if(!($Y(d,bb,h,287,+g[na>>2])|0)){ab=596;break a}m=c[x>>2]|0}do if(m&32){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}c[fb>>2]=c[la>>2];if(c[db>>2]&128)Zw(fb);if(!(_Y(d,bb,h,254,4,1,4,fb)|0)){ab=596;break a}m=c[x>>2]|0}while(0);do if(m&64){f=b[I>>1]|0;if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}n=_J(e[J>>1]<<1)|0;if(!n){ab=80;break a}if(!(b[J>>1]|0))m=0;else{k=n;l=0;while(1){b[k>>1]=f;l=l+1<<16>>16;m=b[J>>1]|0;if((l&65535)>=(m&65535))break;else k=k+2|0}}m=m&65535;if(c[db>>2]&128)$w(n,m);w=_Y(d,bb,h,258,3,m,m<<1,n)|0;$J(n);if(!w){ab=596;break a}m=c[x>>2]|0}while(0);do if(m&128){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}b[fb>>1]=b[ka>>1]|0;if(c[db>>2]&128)Yw(fb);if(!(_Y(d,bb,h,259,3,1,2,fb)|0)){ab=596;break a}m=c[x>>2]|0}while(0);do if(m&256){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}b[fb>>1]=b[ja>>1]|0;if(c[db>>2]&128)Yw(fb);if(!(_Y(d,bb,h,262,3,1,2,fb)|0)){ab=596;break a}m=c[x>>2]|0}while(0);do if(m&512){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}b[fb>>1]=b[ia>>1]|0;if(c[db>>2]&128)Yw(fb);if(!(_Y(d,bb,h,263,3,1,2,fb)|0)){ab=596;break a}m=c[x>>2]|0}while(0);do if(m&1024){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}b[fb>>1]=b[ha>>1]|0;if(c[db>>2]&128)Yw(fb);if(!(_Y(d,bb,h,266,3,1,2,fb)|0)){ab=596;break a}m=c[x>>2]|0}while(0);do if(m&32768){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}b[fb>>1]=b[ga>>1]|0;if(c[db>>2]&128)Yw(fb);if(!(_Y(d,bb,h,274,3,1,2,fb)|0)){ab=596;break a}m=c[x>>2]|0}while(0);do if(m&65536){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}b[fb>>1]=b[J>>1]|0;if(c[db>>2]&128)Yw(fb);if(!(_Y(d,bb,h,277,3,1,2,fb)|0)){ab=596;break a}m=c[x>>2]|0}while(0);do if(m&131072){k=c[fa>>2]|0;if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}if(k>>>0<65536){b[fb>>1]=k;if(c[db>>2]&128)Yw(fb);m=_Y(d,bb,h,278,3,1,2,fb)|0}else{c[fb>>2]=k;if(c[db>>2]&128)Zw(fb);m=_Y(d,bb,h,278,4,1,4,fb)|0}if(!m){ab=596;break a}m=c[x>>2]|0}while(0);do if(m&262144){f=b[ea>>1]|0;if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}n=_J(e[J>>1]<<1)|0;if(!n){ab=145;break a}if(!(b[J>>1]|0))m=0;else{k=n;l=0;while(1){b[k>>1]=f;l=l+1<<16>>16;m=b[J>>1]|0;if((l&65535)>=(m&65535))break;else k=k+2|0}}m=m&65535;if(c[db>>2]&128)$w(n,m);w=_Y(d,bb,h,280,3,m,m<<1,n)|0;$J(n);if(!w){ab=596;break a}m=c[x>>2]|0}while(0);do if(m&524288){f=b[da>>1]|0;if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}n=_J(e[J>>1]<<1)|0;if(!n){ab=156;break a}if(!(b[J>>1]|0))m=0;else{k=n;l=0;while(1){b[k>>1]=f;l=l+1<<16>>16;m=b[J>>1]|0;if((l&65535)>=(m&65535))break;else k=k+2|0}}m=m&65535;if(c[db>>2]&128)$w(n,m);w=_Y(d,bb,h,281,3,m,m<<1,n)|0;$J(n);if(!w){ab=596;break a}m=c[x>>2]|0}while(0);do if(m&1048576){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}b[fb>>1]=b[ca>>1]|0;if(c[db>>2]&128)Yw(fb);if(!(_Y(d,bb,h,284,3,1,2,fb)|0)){ab=596;break a}m=c[x>>2]|0}while(0);do if(m&4194304){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}b[fb>>1]=b[ba>>1]|0;if(c[db>>2]&128)Yw(fb);if(!(_Y(d,bb,h,296,3,1,2,fb)|0)){ab=596;break a}m=c[x>>2]|0}while(0);do if(m&8388608){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}if(c[db>>2]&128)$w(aa,2);if(!(_Y(d,bb,h,297,3,2,4,aa)|0)){ab=596;break a}m=c[x>>2]|0}while(0);do if(m&16777216){m=c[Z>>2]|0;k=c[$>>2]|0;if(!(c[db>>2]&1024))if(!(aZ(d,bb,h,279,m,k)|0)){ab=596;break a}else break;else if(!(aZ(d,bb,h,325,m,k)|0)){ab=596;break a}else break}while(0);do if(c[x>>2]&33554432){m=c[Z>>2]|0;k=c[_>>2]|0;if(!(c[db>>2]&1024))if(!(aZ(d,bb,h,273,m,k)|0)){ab=596;break a}else break;else if(!(aZ(d,bb,h,324,m,k)|0)){ab=596;break a}else break}while(0);m=c[x>>2]|0;do if(m&67108864){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}k=e[I>>1]|0;m=1<>2]|0,w);cK(f+(m<<1)|0,c[X>>2]|0,w);cK(f+(w<<1)|0,c[Y>>2]|0,w);if((k|0)<=-1){ab=197;break a}if(c[db>>2]&128)$w(f,k);w=_Y(d,bb,h,320,3,k,l,f)|0;$J(f);if(!w){ab=596;break a}m=c[x>>2]|0}while(0);do if((m|0)<0){if(!(b[y>>1]|0))break;c[fb>>2]=La;c[fb+4>>2]=Ma;Yu(d,338,fb)|0;m=e[La>>1]|0;k=c[Ma>>2]|0;if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}if(c[db>>2]&128)$w(k,m);if(!(_Y(d,bb,h,338,3,m,m<<1,k)|0)){ab=596;break a}}while(0);m=c[Ca>>2]|0;do if(m&1){f=b[V>>1]|0;if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}n=_J(e[J>>1]<<1)|0;if(!n){ab=214;break a}if(!(b[J>>1]|0))m=0;else{k=n;l=0;while(1){b[k>>1]=f;l=l+1<<16>>16;m=b[J>>1]|0;if((l&65535)>=(m&65535))break;else k=k+2|0}}m=m&65535;if(c[db>>2]&128)$w(n,m);w=_Y(d,bb,h,339,3,m,m<<1,n)|0;$J(n);if(!w){ab=596;break a}m=c[Ca>>2]|0}while(0);if(m&2){if(!(bZ(d,bb,h,340,e[J>>1]|0,c[U>>2]|0)|0)){ab=596;break a}m=c[Ca>>2]|0}if(m&4){if(!(bZ(d,bb,h,341,e[J>>1]|0,c[T>>2]|0)|0)){ab=596;break a}m=c[Ca>>2]|0}do if(m&8){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}c[fb>>2]=c[S>>2];if(c[db>>2]&128)Zw(fb);if(!(_Y(d,bb,h,-32539,4,1,4,fb)|0)){ab=596;break a}m=c[Ca>>2]|0}while(0);do if(m&16){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}c[fb>>2]=c[R>>2];if(c[db>>2]&128)Zw(fb);if(!(_Y(d,bb,h,-32538,4,1,4,fb)|0)){ab=596;break a}m=c[Ca>>2]|0}while(0);do if(m&32){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}if(c[db>>2]&128)$w(Q,2);if(!(_Y(d,bb,h,321,3,2,4,Q)|0)){ab=596;break a}m=c[Ca>>2]|0}while(0);do if(m&128){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}if(c[db>>2]&128)$w(P,2);if(!(_Y(d,bb,h,530,3,2,4,P)|0)){ab=596;break a}m=c[Ca>>2]|0}while(0);do if(m&256){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}b[fb>>1]=b[O>>1]|0;if(c[db>>2]&128)Yw(fb);if(!(_Y(d,bb,h,531,3,1,2,fb)|0)){ab=596;break a}m=c[Ca>>2]|0}while(0);if(m&512){if(!(cZ(d,bb,h,532,6,c[N>>2]|0)|0)){ab=596;break a}m=c[Ca>>2]|0}do if(m&4096){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}k=e[I>>1]|0;o=1<>1]|0)-(e[y>>1]|0)|0;m=(m&65532)>>>0>3?3:m&65535;if(m<<16>>16==3){m=o<<1;if(!(dK(c[K>>2]|0,c[M>>2]|0,m)|0))ab=270;else m=3}else if(m<<16>>16==2){m=o<<1;ab=270}if((ab|0)==270){ab=0;m=(dK(c[K>>2]|0,c[L>>2]|0,m)|0)==0;m=m?1:2}n=m<<16>>16==0?1:m;m=(n&65535)<>2]|0,f);do if((n&65535)>1){cK(l+(o<<1)|0,c[L>>2]|0,f);if((n&65535)<=2)break;cK(l+(f<<1)|0,c[M>>2]|0,f)}while(0);if((m|0)<=-1){ab=277;break a}if(c[db>>2]&128)$w(l,m);w=_Y(d,bb,h,301,3,m,k,l)|0;$J(l);if(!w){ab=596;break a}m=c[Ca>>2]|0}while(0);do if(m&16384){k=c[F>>2]|0;if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}if(!(_Y(d,bb,h,333,2,k,k,c[G>>2]|0)|0)){Ea=h;break a}m=c[Ca>>2]|0}while(0);do if(m&131072){w=b[z>>1]|0;m=w&65535;if(!(w<<16>>16))break;if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}r=A;q=c[r>>2]|0;r=c[r+4>>2]|0;k=c[db>>2]|0;if(!(k&524288)){o=_J(m<<2)|0;if(!o){ab=293;break a}m=b[z>>1]|0;if(!(m<<16>>16))m=0;else{l=0;f=c[B>>2]|0;n=o;while(1){if(!f){ab=297;break a}w=f;k=c[w>>2]|0;w=c[w+4>>2]|0;if(!(w>>>0<1|(w|0)==1&k>>>0<0)){ab=299;break a}c[n>>2]=k;l=l+1<<16>>16;if((l&65535)>=(m&65535))break;else{f=f+8|0;n=n+4|0}}}m=m&65535;if(c[db>>2]&128)bx(o,m);m=_Y(d,bb,h,330,13,m,m<<2,o)|0;$J(o)}else{l=c[B>>2]|0;if(k&128)cx(l,m);m=_Y(d,bb,h,330,18,m,m<<3,l)|0}if(!m){ab=596;break a}c[db>>2]=c[db>>2]|8192;w=b[z>>1]|0;b[C>>1]=w;if(w<<16>>16==1){w=Da;c[w>>2]=0;c[w+4>>2]=0;break}else{w=Da;c[w>>2]=q;c[w+4>>2]=r;break}}while(0);if(!(c[D>>2]|0))break;f=(h|0)==0;n=0;do{l=c[(c[E>>2]|0)+(n<<2)>>2]|0;m=b[l+24>>1]|0;do if((m&65535)>65){if(!(c[d+(((m&65535)>>>5&65535)<<2)+40>>2]&1<<(m&31)))break;m=c[l+20>>2]|0;if((m|0)==1){if((c[l+8>>2]|0)!=2){ab=317;break a}if((b[l+4>>1]|0)!=-1){ab=319;break a}if(a[l+27>>0]|0){ab=321;break a}m=c[l>>2]|0;c[fb>>2]=Ta;sv(d,m,fb)|0;m=c[Ta>>2]|0;k=tfa(m|0)|0;if(!f)if(!(_Y(d,bb,h,c[l>>2]&65535,2,k,k,m)|0)){Ea=h;break a}else break;else{c[bb>>2]=(c[bb>>2]|0)+1;break}}else if((m|0)==6){if((c[l+8>>2]|0)!=4){ab=337;break a}if((b[l+4>>1]|0)!=1){ab=339;break a}if(a[l+27>>0]|0){ab=341;break a}m=c[l>>2]|0;c[fb>>2]=Qa;sv(d,m,fb)|0;m=c[l>>2]&65535;if(f){c[bb>>2]=(c[bb>>2]|0)+1;break}c[fb>>2]=c[Qa>>2];if(c[db>>2]&128)Zw(fb);if(!(_Y(d,bb,h,m,4,1,4,fb)|0)){ab=596;break a}else break}else if((m|0)==4){if((c[l+8>>2]|0)!=3){ab=326;break a}if((b[l+4>>1]|0)!=1){ab=328;break a}if(a[l+27>>0]|0){ab=330;break a}m=c[l>>2]|0;c[fb>>2]=Pa;sv(d,m,fb)|0;m=c[l>>2]&65535;if(f){c[bb>>2]=(c[bb>>2]|0)+1;break}b[fb>>1]=b[Pa>>1]|0;if(c[db>>2]&128)Yw(fb);if(!(_Y(d,bb,h,m,3,1,2,fb)|0)){ab=596;break a}else break}else if((m|0)==40){if((c[l+8>>2]|0)!=7){ab=348;break a}if((b[l+4>>1]|0)!=-3){ab=350;break a}if((a[l+27>>0]|0)!=1){ab=352;break a}m=c[l>>2]|0;c[fb>>2]=Sa;c[fb+4>>2]=Ua;sv(d,m,fb)|0;m=c[Sa>>2]|0;if(!f)if(!(_Y(d,bb,h,c[l>>2]&65535,7,m,m,c[Ua>>2]|0)|0)){Ea=h;break a}else break;else{c[bb>>2]=(c[bb>>2]|0)+1;break}}else{ab=356;break a}}while(0);n=n+1|0}while(n>>>0<(c[D>>2]|0)>>>0)}while(0);b:do if(c[ua>>2]|0){v=(h|0)==0;w=0;while(1){n=c[Aa>>2]|0;k=c[n+(w*12|0)>>2]|0;c:do switch(c[k+8>>2]|0){case 2:{m=c[n+(w*12|0)+4>>2]|0;if(!v)if(!(_Y(d,bb,h,c[k>>2]&65535,2,m,m,c[n+(w*12|0)+8>>2]|0)|0)){Ea=h;break a}else break c;else{c[bb>>2]=(c[bb>>2]|0)+1;break c}}case 1:{m=c[n+(w*12|0)+4>>2]|0;if(!v)if(!(_Y(d,bb,h,c[k>>2]&65535,1,m,m,c[n+(w*12|0)+8>>2]|0)|0)){Ea=h;break a}else break c;else{c[bb>>2]=(c[bb>>2]|0)+1;break c}}case 6:{m=c[n+(w*12|0)+4>>2]|0;if(!v)if(!(_Y(d,bb,h,c[k>>2]&65535,6,m,m,c[n+(w*12|0)+8>>2]|0)|0)){Ea=h;break a}else break c;else{c[bb>>2]=(c[bb>>2]|0)+1;break c}}case 7:{m=c[n+(w*12|0)+4>>2]|0;if(!v)if(!(_Y(d,bb,h,c[k>>2]&65535,7,m,m,c[n+(w*12|0)+8>>2]|0)|0)){Ea=h;break a}else break c;else{c[bb>>2]=(c[bb>>2]|0)+1;break c}}case 5:{if(!(cZ(d,bb,h,c[k>>2]&65535,c[n+(w*12|0)+4>>2]|0,c[n+(w*12|0)+8>>2]|0)|0)){ab=596;break a}break}case 4:{k=c[k>>2]&65535;l=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}if(l>>>0>=1073741824){ab=388;break a}if(c[db>>2]&128)bx(m,l);if(!(_Y(d,bb,h,k,4,l,l<<2,m)|0)){ab=596;break a}break}case 17:{l=c[k>>2]&65535;f=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}if(f>>>0>=536870912){ab=411;break a}k=c[db>>2]|0;if(!(k&524288)){ab=413;break a}if(k&128)cx(m,f);if(!(_Y(d,bb,h,l,17,f,f<<3,m)|0)){ab=596;break a}break}case 16:{l=c[k>>2]&65535;f=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}if(f>>>0>=536870912){ab=402;break a}k=c[db>>2]|0;if(!(k&524288)){ab=404;break a}if(k&128)cx(m,f);if(!(_Y(d,bb,h,l,16,f,f<<3,m)|0)){ab=596;break a}break}case 10:{t=c[k>>2]&65535;u=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}n=u<<1;o=u<<3;r=_J(o)|0;if(!r){ab=422;break a}if(u){q=r;f=0;while(1){s=+g[m>>2];k=~~s;l=s==+(k|0);do if(s<0.0){if(l){c[q>>2]=k;c[q+4>>2]=1;break}if(s>-1.0){c[q>>2]=0-~~(s*-2147483648.0);c[q+4>>2]=2147483647;break}else{c[q>>2]=-2147483647;c[q+4>>2]=~~(2147483648.0/-s);break}}else{if(l){c[q>>2]=k;c[q+4>>2]=1;break}if(s<1.0){c[q>>2]=~~(s*2147483648.0);c[q+4>>2]=2147483647;break}else{c[q>>2]=2147483647;c[q+4>>2]=~~(2147483648.0/s);break}}while(0);f=f+1|0;if((f|0)==(u|0))break;else{m=m+4|0;q=q+8|0}}}if(c[db>>2]&128)bx(r,n);u=_Y(d,bb,h,t,10,u,o,r)|0;$J(r);if(!u){ab=596;break a}break}case 3:{k=c[k>>2]&65535;l=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}if((l|0)<=-1){ab=374;break a}if(c[db>>2]&128)$w(m,l);if(!(_Y(d,bb,h,k,3,l,l<<1,m)|0)){ab=596;break a}break}case 9:{k=c[k>>2]&65535;l=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}if(l>>>0>=1073741824){ab=395;break a}if(c[db>>2]&128)bx(m,l);if(!(_Y(d,bb,h,k,9,l,l<<2,m)|0)){ab=596;break a}break}case 8:{k=c[k>>2]&65535;l=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}if((l|0)<=-1){ab=381;break a}if(c[db>>2]&128)$w(m,l);if(!(_Y(d,bb,h,k,8,l,l<<1,m)|0)){ab=596;break a}break}case 12:{k=c[k>>2]&65535;l=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}if(l>>>0>=536870912){ab=448;break a}if(c[db>>2]&128)ex(m,l);if(!(_Y(d,bb,h,k,12,l,l<<3,m)|0)){ab=596;break a}break}case 18:{q=c[k>>2]&65535;r=c[n+(w*12|0)+4>>2]|0;l=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}m=c[db>>2]|0;if(!(m&524288)){o=r<<2;k=_J(o)|0;if(!k){ab=469;break a}if(r){f=0;n=k;while(1){u=l;m=c[u>>2]|0;u=c[u+4>>2]|0;if(u>>>0>0|(u|0)==0&m>>>0>4294967295){ab=471;break a}c[n>>2]=m;f=f+1|0;if(f>>>0>=r>>>0)break;else{l=l+8|0;n=n+4|0}}if(r>>>0>=1073741824){ab=474;break a}}if(c[db>>2]&128)bx(k,r);m=_Y(d,bb,h,q,13,r,o,k)|0;$J(k)}else{if(r>>>0>=536870912){ab=463;break a}if(m&128)cx(l,r);m=_Y(d,bb,h,q,18,r,r<<3,l)|0}if(!m){ab=596;break a}break}case 11:{k=c[k>>2]&65535;l=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}if(l>>>0>=1073741824){ab=441;break a}if(c[db>>2]&128)dx(m,l);if(!(_Y(d,bb,h,k,11,l,l<<2,m)|0)){ab=596;break a}break}case 13:{k=c[k>>2]&65535;l=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}if(l>>>0>=1073741824){ab=455;break a}if(c[db>>2]&128)bx(m,l);if(!(_Y(d,bb,h,k,13,l,l<<2,m)|0)){ab=596;break a}break}default:{ab=479;break a}}while(0);w=w+1|0;if(w>>>0>=(c[ua>>2]|0)>>>0)break b}}while(0);if(h){ab=551;break}h=_J((c[bb>>2]|0)*24|0)|0;if(!h){ab=483;break}do if(Ba){w=Za;if((c[w>>2]|0)==0&(c[w+4>>2]|0)==0){m=Xd[c[_a>>2]&255](c[eb>>2]|0,0,0,2)|0;m=yfa(m|0,H|0,1,0)|0;p=H;m=m&-2;k=Za;c[k>>2]=m;c[k+4>>2]=p;k=c[db>>2]|0;l=(k&524288|0)!=0;if(k&8192)if(l){w=Ia;c[w>>2]=m;c[w+4>>2]=p;if(k&128)_w(Ia);w=Da;Xd[c[_a>>2]&255](c[eb>>2]|0,c[w>>2]|0,c[w+4>>2]|0,0)|0;if((Hd[c[$a>>2]&255](c[eb>>2]|0,Ia,8)|0)!=8){ab=498;break a}w=(b[C>>1]|0)+-1<<16>>16;b[C>>1]=w;if(!(w<<16>>16)){c[db>>2]=c[db>>2]&-8193;break}else{v=Da;v=yfa(c[v>>2]|0,c[v+4>>2]|0,8,0)|0;w=Da;c[w>>2]=v;c[w+4>>2]=H;break}}else{c[Ha>>2]=m;if(k&128)Zw(Ha);w=Da;Xd[c[_a>>2]&255](c[eb>>2]|0,c[w>>2]|0,c[w+4>>2]|0,0)|0;if((Hd[c[$a>>2]&255](c[eb>>2]|0,Ha,4)|0)!=4){ab=491;break a}w=(b[C>>1]|0)+-1<<16>>16;b[C>>1]=w;if(!(w<<16>>16)){c[db>>2]=c[db>>2]&-8193;break}else{v=Da;v=yfa(c[v>>2]|0,c[v+4>>2]|0,4,0)|0;w=Da;c[w>>2]=v;c[w+4>>2]=H;break}}if(!l){c[Ja>>2]=m;if(k&128)Zw(Ja);p=c[xa>>2]|0;if(!p){c[xa>>2]=c[Za>>2];Xd[c[_a>>2]&255](c[eb>>2]|0,4,0,0)|0;if((Hd[c[$a>>2]&255](c[eb>>2]|0,Ja,4)|0)==4)break;else{ab=507;break a}}else m=p;do{w=Xd[c[_a>>2]&255](c[eb>>2]|0,m,0,0)|0;if(!((w|0)==(m|0)&(H|0)==0)){ab=510;break a}if((Hd[c[wa>>2]&255](c[eb>>2]|0,Fa,2)|0)!=2){ab=510;break a}if(c[db>>2]&128)Yw(Fa);p=m+2|0;Xd[c[_a>>2]&255](c[eb>>2]|0,((e[Fa>>1]|0)*12|0)+p|0,0,0)|0;if((Hd[c[wa>>2]&255](c[eb>>2]|0,Na,4)|0)!=4){ab=514;break a}if(c[db>>2]&128)Zw(Na);m=c[Na>>2]|0}while((m|0)!=0);Xd[c[_a>>2]&255](c[eb>>2]|0,((e[Fa>>1]|0)*12|0)+p|0,0,0)|0;if((Hd[c[$a>>2]&255](c[eb>>2]|0,Ja,4)|0)==4)break;else{ab=519;break a}}w=Ka;c[w>>2]=m;c[w+4>>2]=p;if(k&128)_w(Ka);m=va;p=c[m>>2]|0;m=c[m+4>>2]|0;if((p|0)==0&(m|0)==0){u=Za;v=c[u+4>>2]|0;w=va;c[w>>2]=c[u>>2];c[w+4>>2]=v;Xd[c[_a>>2]&255](c[eb>>2]|0,8,0,0)|0;if((Hd[c[$a>>2]&255](c[eb>>2]|0,Ka,8)|0)==8)break;else{ab=524;break a}}while(1){w=Xd[c[_a>>2]&255](c[eb>>2]|0,p,m,0)|0;if(!((w|0)==(p|0)&(H|0)==(m|0))){ab=527;break a}if((Hd[c[wa>>2]&255](c[eb>>2]|0,Ga,8)|0)!=8){ab=527;break a}if(c[db>>2]&128)_w(Ga);w=Ga;k=c[w>>2]|0;w=c[w+4>>2]|0;if(w>>>0>0|(w|0)==0&k>>>0>65535){ab=531;break a}v=c[_a>>2]|0;w=c[eb>>2]|0;l=yfa(p|0,m|0,8,0)|0;k=yfa(l|0,H|0,(k&65535)*20|0,0)|0;l=H;Xd[v&255](w,k,l,0)|0;if((Hd[c[wa>>2]&255](c[eb>>2]|0,Oa,8)|0)!=8){ab=533;break a}if(c[db>>2]&128)_w(Oa);m=Oa;p=c[m>>2]|0;m=c[m+4>>2]|0;if((p|0)==0&(m|0)==0){m=k;p=l;break}}Xd[c[_a>>2]&255](c[eb>>2]|0,m,p,0)|0;if((Hd[c[$a>>2]&255](c[eb>>2]|0,Ka,8)|0)!=8){ab=538;break a}}}else{v=Xd[c[_a>>2]&255](c[eb>>2]|0,0,0,2)|0;v=yfa(v|0,H|0,1,0)|0;w=Za;c[w>>2]=v&-2;c[w+4>>2]=H}while(0);if(!ya){u=Za;v=c[u+4>>2]|0;w=j;c[w>>2]=c[u>>2];c[w+4>>2]=v}p=c[bb>>2]|0;if(!(c[db>>2]&524288)){p=(p*12|2)+4|0;l=Za;f=c[l>>2]|0;l=c[l+4>>2]|0;m=yfa(f|0,l|0,p|0,0)|0;k=0;n=0;o=p}else{p=(p*20|0)+16|0;l=Za;f=c[l>>2]|0;l=c[l+4>>2]|0;m=yfa(f|0,l|0,p|0,0)|0;k=H;n=0;o=p}w=A;c[w>>2]=m;c[w+4>>2]=k;if(k>>>0>>0|(k|0)==(l|0)&m>>>0>>0|(k>>>0>>0|(k|0)==(n|0)&m>>>0>>0)){ab=546;break}if(!((m&1|0)==0&0==0)){v=yfa(m|0,k|0,1,0)|0;w=A;c[w>>2]=v;c[w+4>>2]=H}if(!Ba)continue;b[za>>1]=(b[za>>1]|0)+1<<16>>16}switch(ab|0){case 80:{Yv(c[eb>>2]|0,113088,313360,fb);Ea=h;break}case 145:{Yv(c[eb>>2]|0,113088,313360,fb);Ea=h;break}case 156:{Yv(c[eb>>2]|0,113088,313360,fb);Ea=h;break}case 195:{Yv(c[eb>>2]|0,113016,313360,fb);Ea=h;break}case 197:{Ra(112720,111632,1956,112888);break}case 214:{Yv(c[eb>>2]|0,113088,313360,fb);Ea=h;break}case 272:{Yv(c[eb>>2]|0,112848,313360,fb);ab=596;break}case 277:{Ra(112720,111632,1956,112888);break}case 293:{Yv(c[eb>>2]|0,112792,313360,fb);ab=596;break}case 297:{Ra(112784,111632,1868,112792);break}case 299:{Ra(112824,111632,1869,112792);break}case 317:{Ra(111600,111632,643,111664);break}case 319:{Ra(111688,111632,644,111664);break}case 321:{Ra(111728,111632,645,111664);break}case 326:{Ra(111752,111632,655,111664);break}case 328:{Ra(111784,111632,656,111664);break}case 330:{Ra(111728,111632,657,111664);break}case 337:{Ra(111808,111632,666,111664);break}case 339:{Ra(111784,111632,667,111664);break}case 341:{Ra(111728,111632,668,111664);break}case 348:{Ra(111840,111632,678,111664);break}case 350:{Ra(111872,111632,679,111664);break}case 352:{Ra(111912,111632,680,111664);break}case 356:{Ra(111936,111632,687,111664);break}case 374:{Ra(112720,111632,1956,112888);break}case 381:{Ra(112720,111632,1979,112744);break}case 388:{Ra(112160,111632,2e3,112680);break}case 395:{Ra(112160,111632,2023,112640);break}case 402:{Ra(112336,111632,2047,112600);break}case 404:{Ra(112400,111632,2049,112600);break}case 411:{Ra(112336,111632,2072,112560);break}case 413:{Ra(112400,111632,2074,112560);break}case 422:{Yv(c[eb>>2]|0,112512,313360,fb);Ea=h;break}case 441:{Ra(112160,111632,2239,112472);break}case 448:{Ra(112336,111632,2264,112432);break}case 455:{Ra(112160,111632,2275,112184);break}case 463:{Ra(112336,111632,2285,112360);break}case 469:{Yv(c[eb>>2]|0,112048,313360,fb);ab=596;break}case 471:{Yv(c[eb>>2]|0,112048,112088,fb);$J(k);ab=596;break}case 474:{Ra(112160,111632,2275,112184);break}case 479:{Ra(111936,111632,763,111664);break}case 483:{Yv(c[eb>>2]|0,111664,313360,fb);ab=596;break}case 491:{Yv(c[eb>>2]|0,111984,112008,fb);ab=596;break}case 498:{Yv(c[eb>>2]|0,111984,112008,fb);ab=596;break}case 507:{Yv(c[eb>>2]|0,c[d>>2]|0,228520,fb);ab=596;break}case 510:{Yv(c[eb>>2]|0,111984,110944,fb);ab=596;break}case 514:{Yv(c[eb>>2]|0,111984,110976,fb);ab=596;break}case 519:{Yv(c[eb>>2]|0,111984,111008,fb);ab=596;break}case 524:{Yv(c[eb>>2]|0,c[d>>2]|0,228520,fb);ab=596;break}case 527:{Yv(c[eb>>2]|0,111984,110944,fb);ab=596;break}case 531:{Yv(c[eb>>2]|0,111984,111040,fb);ab=596;break}case 533:{Yv(c[eb>>2]|0,111984,110976,fb);ab=596;break}case 538:{Yv(c[eb>>2]|0,111984,111008,fb);ab=596;break}case 546:{Yv(c[eb>>2]|0,111664,233744,fb);ab=596;break}case 551:{do if((Ba?(c[Ca>>2]&131072|0)!=0:0)?(j=Da,(c[j>>2]|0)==0&(c[j+4>>2]|0)==0):0){k=c[bb>>2]|0;if(!k)Ra(111944,111632,809,111664);else{Va=0;Wa=h}while(1){if((b[Wa>>1]|0)==330){Xa=Va;break}Va=Va+1|0;if(Va>>>0>=k>>>0){ab=555;break}else Wa=Wa+24|0}if((ab|0)==555)Ra(111944,111632,809,111664);l=Za;k=c[l>>2]|0;l=c[l+4>>2]|0;if(!(c[db>>2]&524288)){Xa=yfa(Xa*12|0,0,10,0)|0;Xa=yfa(Xa|0,H|0,k|0,l|0)|0;ab=Da;c[ab>>2]=Xa;c[ab+4>>2]=H;break}else{Xa=yfa(Xa*20|0,0,20,0)|0;Xa=yfa(Xa|0,H|0,k|0,l|0)|0;ab=Da;c[ab>>2]=Xa;c[ab+4>>2]=H;break}}while(0);o=_J(p)|0;if(!o){Yv(c[eb>>2]|0,111664,313360,fb);ab=596;break}k=c[db>>2]|0;l=c[bb>>2]|0;if(k&524288){ab=o;c[ab>>2]=l;c[ab+4>>2]=0;if(k&128){_w(o);l=c[bb>>2]|0}k=o+8|0;if(l){n=o;f=0;m=h;while(1){b[k>>1]=b[m>>1]|0;l=c[db>>2]|0;if(l&128){Yw(k);l=c[db>>2]|0}k=n+10|0;b[k>>1]=b[m+2>>1]|0;if(l&128)Yw(k);k=n+12|0;cK(k,m+8|0,8);if(c[db>>2]&128)_w(k);k=n;n=n+20|0;cK(n,m+16|0,8);f=f+1|0;k=k+28|0;if(f>>>0>=(c[bb>>2]|0)>>>0)break;else m=m+24|0}}cK(k,d+24|0,8);if(c[db>>2]&128)_w(k)}else{b[o>>1]=l;if(k&128){Yw(o);l=c[bb>>2]|0}k=o+2|0;if(l){f=0;n=h;while(1){b[k>>1]=b[n>>1]|0;l=c[db>>2]|0;if(l&128){Yw(k);l=c[db>>2]|0}m=k+2|0;b[m>>1]=b[n+2>>1]|0;if(l&128)Yw(m);l=k+4|0;c[Ya>>2]=c[n+8>>2];cK(l,Ya,4);if(c[db>>2]&128)Zw(l);cK(k+8|0,n+16|0,4);k=k+12|0;f=f+1|0;if(f>>>0>=(c[bb>>2]|0)>>>0)break;else n=n+24|0}}c[Ya>>2]=c[d+24>>2];if(c[db>>2]&128)Zw(Ya);cK(k,Ya,4)}$J(h);bb=Za;h=Za;do if((Xd[c[_a>>2]&255](c[eb>>2]|0,c[bb>>2]|0,c[bb+4>>2]|0,0)|0)==(c[h>>2]|0)?(H|0)==(c[h+4>>2]|0):0){if((Hd[c[$a>>2]&255](c[eb>>2]|0,o,p)|0)!=(p|0)){Yv(c[eb>>2]|0,111664,111952,fb);break}$J(o);if(!cb){fb=1;i=gb;return fb|0}uv(d);c[db>>2]=c[db>>2]&-2097161;Bd[c[d+564>>2]&511](d);wv(d)|0;fb=1;i=gb;return fb|0}else Yv(c[eb>>2]|0,111664,111952,fb);while(0);if(!o){fb=0;i=gb;return fb|0}$J(o);fb=0;i=gb;return fb|0}}if((ab|0)==596)if(!h){fb=0;i=gb;return fb|0}else Ea=h;$J(Ea);fb=0;i=gb;return fb|0}function DL(a){a=a|0;return 1}function EL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+32|0;f=h;g=a+608|0;e=c[g>>2]|0;if((e|0)<(d|0)){g=c[a+628>>2]|0;c[f>>2]=c[a+444>>2];a=f+4|0;c[a>>2]=e;c[a+4>>2]=((e|0)<0)<<31>>31;a=f+12|0;c[a>>2]=d;c[a+4>>2]=((d|0)<0)<<31>>31;Yv(g,113240,113256,f);d=0;i=h;return d|0}a=a+604|0;f=c[a>>2]|0;if((f|0)==(b|0))f=b;else{cK(b,f,d);f=c[a>>2]|0;e=c[g>>2]|0}c[a>>2]=f+d;c[g>>2]=e-d;d=1;i=h;return d|0}function FL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;if((d|0)<=0){a=1;return a|0}j=a+608|0;k=a+592|0;l=a+604|0;while(1){f=c[j>>2]|0;h=c[k>>2]|0;i=(f+d|0)>(h|0)?h-f|0:d;if((i|0)<=0){d=4;break}e=c[l>>2]|0;if((e|0)==(b|0)){g=b;e=h}else{cK(e,b,i);g=c[l>>2]|0;f=c[j>>2]|0;e=c[k>>2]|0}c[l>>2]=g+i;g=f+i|0;c[j>>2]=g;b=b+i|0;d=d-i|0;if((g|0)>=(e|0)?(vx(a)|0)==0:0){e=-1;d=10;break}if((d|0)<=0){e=1;d=10;break}}if((d|0)==4)Ra(113184,113192,55,113224);else if((d|0)==10)return e|0;return 0}function GL(a,b){a=a|0;b=b|0;var d=0;b=da(c[a+580>>2]|0,b)|0;d=a+604|0;c[d>>2]=(c[d>>2]|0)+b;a=a+608|0;c[a>>2]=(c[a>>2]|0)-b;return 1}function HL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=i;i=i+16|0;e=f;if(!(Ev(a,116040,5)|0)){Yv(c[a+628>>2]|0,116224,116240,e);a=0;i=f;return a|0}b=_J(96)|0;d=a+576|0;c[d>>2]=b;if(!b){Yv(c[a+628>>2]|0,116224,116296,e);a=0;i=f;return a|0}g=c[a+8>>2]|0;c[b>>2]=g;h=a+672|0;c[b+32>>2]=c[h>>2];c[h>>2]=174;h=a+668|0;c[b+36>>2]=c[h>>2];c[h>>2]=175;h=a+676|0;c[b+40>>2]=c[h>>2];c[h>>2]=66;c[b+28>>2]=0;if(!g){h=a+12|0;c[h>>2]=c[h>>2]|256}c[b+64>>2]=0;c[e>>2]=42;rv(a,65540,e)|0;c[(c[d>>2]|0)+80>>2]=0;c[a+504>>2]=215;c[a+508>>2]=216;c[a+512>>2]=252;c[a+532>>2]=124;c[a+540>>2]=124;c[a+548>>2]=124;c[a+516>>2]=216;c[a+524>>2]=253;c[a+528>>2]=217;c[a+536>>2]=125;c[a+544>>2]=125;c[a+552>>2]=125;c[a+556>>2]=271;c[a+564>>2]=272;h=1;i=f;return h|0}function IL(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+32|0;D=O;l=c[a+576>>2]|0;I=c[l+12>>2]|0;G=c[l+44>>2]|0;x=l+8|0;if((e|0)%(c[x>>2]|0)|0){Yv(c[a+628>>2]|0,115928,232664,D);N=-1;i=O;return N|0}J=l+48|0;g=c[J>>2]|0;K=l+52|0;h=c[K>>2]|0;L=l+56|0;j=c[L>>2]|0;M=a+604|0;f=c[M>>2]|0;N=a+608|0;k=c[N>>2]|0;E=f+k|0;do if((e|0)>0){u=l+72|0;v=l+68|0;w=(I|0)>0;H=l+92|0;A=a+628|0;B=a+12|0;C=a+492|0;z=a+452|0;F=l+60|0;k=c[v>>2]|0;y=c[u>>2]|0;a:while(1){b:do if(w){t=y;o=0;a=0;m=c[k>>2]|0;l=y;k=k+4|0;c:while(1){s=(l|0)==(y|0);d:do if(s){n=0;r=o;while(1){do if((h|0)<7)if(f>>>0>=E>>>0)if(!h){e=y;h=0;m=n;k=y;r=88;break a}else{q=7;break}else{g=(d[G+(d[f>>0]|0)>>0]|0)<>0]|0;h=q-p|0;g=g>>>p;switch(d[117088+(o<<3)>>0]|0|0){case 1:break;case 2:{q=k;r=22;break d}case 5:{q=n;r=70;break d}case 12:{o=q;m=n;l=y;r=78;break c}case 6:{m=n;l=y;r=77;break c}case 4:{q=r;r=66;break d}case 3:{p=r;r=62;break d}default:{m=n;k=y;r=85;break c}}o=(c[k>>2]|0)+m|0;a=r+n+o|0;if((I|0)>(o|0)){n=a;r=0-o|0;a=o;m=o+(c[k+4>>2]|0)|0;k=k+8|0}else{m=a;a=o;k=y;r=99;break c}}}else{n=0;r=o;while(1){do if((h|0)<7)if(f>>>0>=E>>>0)if(!h){e=y;h=0;m=n;k=l;r=88;break a}else{q=7;break}else{g=(d[G+(d[f>>0]|0)>>0]|0)<>0]|0;h=q-p|0;g=g>>>p;switch(d[117088+(o<<3)>>0]|0|0){case 1:break;case 2:{q=k;r=22;break d}case 5:{q=n;r=70;break d}case 12:{o=q;m=n;r=78;break c}case 6:{m=n;r=77;break c}case 4:{q=r;r=66;break d}case 3:{p=r;r=62;break d}default:{m=n;k=l;r=85;break c}}if((m|0)<=(a|0)&(m|0)<(I|0))do{m=(c[k>>2]|0)+m+(c[k+4>>2]|0)|0;k=k+8|0}while((m|0)<=(a|0)&(m|0)<(I|0));o=(c[k>>2]|0)+m|0;a=r+n+o|0;if((I|0)>(o|0)){n=a;r=0-o|0;a=o;m=o+(c[k+4>>2]|0)|0;k=k+8|0}else{m=a;a=o;k=l;r=99;break c}}}while(0);if((r|0)==22){r=0;if(!(l-t&4)){o=n;while(1){do if((h|0)<12){if(f>>>0>=E>>>0)if(!h){e=y;h=0;m=o;k=l;r=88;break a}else{h=12;break}n=f+1|0;g=(d[G+(d[f>>0]|0)>>0]|0)<>>0>>0){g=(d[G+(d[n>>0]|0)>>0]|0)<>0]|0;h=h-k|0;g=g>>>k;k=d[118112+(n<<3)>>0]|0;if((k|0)==7)break;else if(!((k|0)==11|(k|0)==9)){m=o;k=l;r=87;break c}s=c[118116+(n<<3)>>2]|0;o=s+o|0;a=s+a|0}s=c[118116+(n<<3)>>2]|0;k=l+4|0;c[l>>2]=s+o;p=0;a=s+a|0;o=f;while(1){do if((h|0)<13){if(o>>>0>=E>>>0)if(!h){e=y;h=0;m=p;f=o;r=88;break a}else{h=13;f=o;break}f=o+1|0;g=(d[G+(d[o>>0]|0)>>0]|0)<>>0>>0){g=(d[G+(d[f>>0]|0)>>0]|0)<>0]|0;h=h-n|0;g=g>>>n;n=d[150880+(o<<3)>>0]|0;if((n|0)==8){n=p;break}else if(!((n|0)==11|(n|0)==10)){m=p;r=86;break c}o=c[150884+(o<<3)>>2]|0;p=o+p|0;a=o+a|0;o=f}s=c[150884+(o<<3)>>2]|0;c[k>>2]=s+n;a=s+a|0}else{while(1){do if((h|0)<13){if(f>>>0>=E>>>0)if(!h){e=y;h=0;m=n;k=l;r=88;break a}else{h=13;break}o=f+1|0;g=(d[G+(d[f>>0]|0)>>0]|0)<>>0>>0){g=(d[G+(d[o>>0]|0)>>0]|0)<>0]|0;h=h-k|0;g=g>>>k;k=d[150880+(o<<3)>>0]|0;if((k|0)==8){k=o;break}else if(!((k|0)==11|(k|0)==10)){m=n;k=l;r=86;break c}s=c[150884+(o<<3)>>2]|0;n=s+n|0;a=s+a|0}s=c[150884+(k<<3)>>2]|0;k=l+4|0;c[l>>2]=s+n;p=0;a=s+a|0;while(1){do if((h|0)<12){if(f>>>0>=E>>>0)if(!h){e=y;h=0;m=p;r=88;break a}else{h=12;break}o=f+1|0;g=(d[G+(d[f>>0]|0)>>0]|0)<>>0>>0){g=(d[G+(d[o>>0]|0)>>0]|0)<>0]|0;h=h-n|0;g=g>>>n;n=d[118112+(o<<3)>>0]|0;if((n|0)==7){n=p;break}else if(!((n|0)==11|(n|0)==9)){m=p;r=87;break c}s=c[118116+(o<<3)>>2]|0;p=s+p|0;a=s+a|0}s=c[118116+(o<<3)>>2]|0;c[k>>2]=s+n;a=s+a|0}k=l+8|0;if((k|0)!=(y|0))if((m|0)<=(a|0)&(m|0)<(I|0)){l=q;do{m=(c[l>>2]|0)+m+(c[l+4>>2]|0)|0;l=l+8|0}while((m|0)<=(a|0)&(m|0)<(I|0));n=l}else n=q;else{k=y;n=q}}else if((r|0)==62){r=0;if(!s?(m|0)<=(a|0)&(m|0)<(I|0):0){do{m=(c[k>>2]|0)+m+(c[k+4>>2]|0)|0;k=k+8|0}while((m|0)<=(a|0)&(m|0)<(I|0));o=k}else o=k;c[l>>2]=p+n+m;a=m;m=(c[o>>2]|0)+m|0;k=l+4|0;n=o+4|0}else if((r|0)==66){r=0;if(!s?(m|0)<=(a|0)&(m|0)<(I|0):0){do{m=(c[k>>2]|0)+m+(c[k+4>>2]|0)|0;k=k+8|0}while((m|0)<=(a|0)&(m|0)<(I|0));p=k}else p=k;a=c[117092+(o<<3)>>2]|0;c[l>>2]=q+n+m+a;a=a+m|0;m=(c[p>>2]|0)+m|0;k=l+4|0;n=p+4|0}else if((r|0)==70){r=0;p=(l|0)!=(y|0);if(p?(m|0)<=(a|0)&(m|0)<(I|0):0)do{m=(c[k>>2]|0)+m+(c[k+4>>2]|0)|0;k=k+8|0}while((m|0)<=(a|0)&(m|0)<(I|0));n=c[117092+(o<<3)>>2]|0;s=n+a|0;if((m|0)<=(s|0)&((m|0)<(s|0)|p)){m=q;k=l;r=74;break}c[l>>2]=m-a+q-n;s=k+-4|0;a=m-n|0;m=m-(c[s>>2]|0)|0;k=l+4|0;n=s}if((I|0)>(a|0)){o=0-a|0;l=k;k=n}else break b}do if((r|0)==74){r=0;t=c[A>>2]|0;q=(c[B>>2]&1024|0)!=0;s=c[(q?C:z)>>2]|0;c[D>>2]=c[H>>2];c[D+4>>2]=q?233560:233568;c[D+8>>2]=s;c[D+12>>2]=a;Yv(t,115928,115152,D)}else if((r|0)==77){r=0;c[l>>2]=I-a;k=c[A>>2]|0;s=(c[B>>2]&1024|0)!=0;t=c[(s?C:z)>>2]|0;c[D>>2]=c[H>>2];c[D+4>>2]=s?233560:233568;c[D+8>>2]=t;c[D+12>>2]=a;Yv(k,115928,115944,D);k=l+4|0}else if((r|0)==78){r=0;k=l+4|0;c[l>>2]=I-a;do if((h|0)<4)if(f>>>0>=E>>>0)if((o|0)==(p|0)){e=y;r=88;break a}else{h=4;break}else{g=(d[G+(d[f>>0]|0)>>0]|0)<>2]|0;q=(c[B>>2]&1024|0)!=0;s=c[(q?C:z)>>2]|0;c[D>>2]=c[H>>2];c[D+4>>2]=q?233560:233568;c[D+8>>2]=s;c[D+12>>2]=a;Yv(t,115928,115152,D)}g=g>>>4;h=h+-4|0;j=1}else if((r|0)==86){r=0;t=c[A>>2]|0;q=(c[B>>2]&1024|0)!=0;s=c[(q?C:z)>>2]|0;c[D>>2]=c[H>>2];c[D+4>>2]=q?233560:233568;c[D+8>>2]=s;c[D+12>>2]=a;Yv(t,115928,115152,D)}else if((r|0)==87){r=0;t=c[A>>2]|0;q=(c[B>>2]&1024|0)!=0;s=c[(q?C:z)>>2]|0;c[D>>2]=c[H>>2];c[D+4>>2]=q?233560:233568;c[D+8>>2]=s;c[D+12>>2]=a;Yv(t,115928,115152,D)}else if((r|0)==99){r=0;if(!m)break b;if((a+m|0)<(I|0)){do if((h|0)<1)if(f>>>0>=E>>>0)if(!h){e=y;h=0;r=88;break a}else{h=1;break}else{g=(d[G+(d[f>>0]|0)>>0]|0)<>>1;h=h+-1|0}c[k>>2]=m;k=k+4|0;break b}while(0);if((r|0)==85){r=0;t=c[A>>2]|0;q=(c[B>>2]&1024|0)!=0;s=c[(q?C:z)>>2]|0;c[D>>2]=c[H>>2];c[D+4>>2]=q?233560:233568;c[D+8>>2]=s;c[D+12>>2]=a;Yv(t,115928,115152,D)}if(m){c[k>>2]=m;k=k+4|0}}else{a=0;k=y}while(0);do if((a|0)!=(I|0)){q=c[H>>2]|0;l=c[A>>2]|0;s=(c[B>>2]&1024|0)!=0;t=c[(s?C:z)>>2]|0;c[D>>2]=a>>>0>>0?115064:115080;c[D+4>>2]=q;c[D+8>>2]=s?233560:233568;c[D+12>>2]=t;c[D+16>>2]=a;c[D+20>>2]=I;qx(l,115928,115016,D);l=(a|0)>(I|0);if(l&k>>>0>y>>>0)do{k=k+-4|0;a=a-(c[k>>2]|0)|0;l=(a|0)>(I|0)}while(l&k>>>0>y>>>0);if((a|0)>=(I|0)){if(!l)break;c[k>>2]=I;c[k+4>>2]=0;k=k+8|0;break}if(k-y&4){c[k>>2]=0;k=k+4|0}c[k>>2]=I-((a|0)<0?0:a);k=k+4|0}while(0);if(j){e=y;break}Yd[c[F>>2]&63](b,y,k,I);c[k>>2]=0;k=c[u>>2]|0;y=c[v>>2]|0;c[u>>2]=y;c[v>>2]=k;j=c[x>>2]|0;e=e-j|0;c[H>>2]=(c[H>>2]|0)+1;if((e|0)<=0){r=128;break}else{b=b+j|0;j=0}}if((r|0)==128){l=c[M>>2]|0;k=c[N>>2]|0;j=0;break}do if((r|0)==88){y=c[A>>2]|0;w=(c[B>>2]&1024|0)!=0;x=c[(w?C:z)>>2]|0;c[D>>2]=c[H>>2];c[D+4>>2]=w?233560:233568;c[D+8>>2]=x;c[D+12>>2]=a;qx(y,115928,115104,D);if(m){c[k>>2]=m;k=k+4|0}if((a|0)!=(I|0)){y=c[H>>2]|0;l=c[A>>2]|0;B=(c[B>>2]&1024|0)!=0;C=c[(B?C:z)>>2]|0;c[D>>2]=a>>>0>>0?115064:115080;c[D+4>>2]=y;c[D+8>>2]=B?233560:233568;c[D+12>>2]=C;c[D+16>>2]=a;c[D+20>>2]=I;qx(l,115928,115016,D);l=(a|0)>(I|0);if(l&k>>>0>e>>>0)do{k=k+-4|0;a=a-(c[k>>2]|0)|0;l=(a|0)>(I|0)}while(l&k>>>0>e>>>0);if((a|0)>=(I|0)){if(!l)break;c[k>>2]=I;c[k+4>>2]=0;k=k+8|0;break}if(k-e&4){c[k>>2]=0;k=k+4|0}c[k>>2]=I-((a|0)<0?0:a);k=k+4|0}}while(0);do if((h|0)<13){if(f>>>0>=E>>>0){h=(h|0)==0?0:13;break}a=f+1|0;g=(d[G+(d[f>>0]|0)>>0]|0)<>>0>>0){g=(d[G+(d[a>>0]|0)>>0]|0)<>2]&63](b,e,k,I);c[K>>2]=h+-13;c[J>>2]=g>>>13;c[L>>2]=j;c[N>>2]=(c[M>>2]|0)-f+(c[N>>2]|0);c[M>>2]=f;N=(c[H>>2]|0)!=0?1:-1;i=O;return N|0}else l=f;while(0);c[K>>2]=h;c[J>>2]=g;c[L>>2]=j;c[N>>2]=l-f+k;c[M>>2]=f;N=1;i=O;return N|0}function JL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=c[a+576>>2]|0;g=e+8|0;if((d|0)%(c[g>>2]|0)|0){Yv(c[a+628>>2]|0,115272,115288,j);a=0;i=j;return a|0}if((d|0)<=0){a=1;i=j;return a|0}h=e+80|0;f=e+12|0;e=d;while(1){pZ(a,b,c[h>>2]|0,c[f>>2]|0);cK(c[h>>2]|0,b,c[g>>2]|0);d=c[g>>2]|0;e=e-d|0;if((e|0)<=0){e=1;break}else b=b+d|0}i=j;return e|0}function KL(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[b+576>>2]|0;qZ(b,1,12);qZ(b,1,12);e=d+52|0;if((c[e>>2]|0)==8)return 1;f=b+608|0;if((c[f>>2]|0)>=(c[b+592>>2]|0))vx(b)|0;d=d+48|0;g=c[d>>2]&255;h=b+604|0;b=c[h>>2]|0;c[h>>2]=b+1;a[b>>0]=g;c[f>>2]=(c[f>>2]|0)+1;c[d>>2]=0;c[e>>2]=8;return 1}function LL(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=i;i=i+32|0;A=L;l=c[a+576>>2]|0;F=c[l+12>>2]|0;t=c[l+44>>2]|0;m=c[l+4>>2]|0;u=l+8|0;if((e|0)%(c[u>>2]|0)|0){Yv(c[a+628>>2]|0,115e3,232664,A);J=-1;i=L;return J|0}G=l+48|0;h=c[G>>2]|0;H=l+52|0;j=c[H>>2]|0;I=l+56|0;g=c[I>>2]|0;J=a+604|0;f=c[J>>2]|0;K=a+608|0;k=c[K>>2]|0;s=f+k|0;E=c[l+72>>2]|0;do if((e|0)>0){w=l+92|0;x=a+628|0;y=a+12|0;z=a+492|0;v=a+452|0;D=l+60|0;r=(m&4|0)==0;q=(m&8|0)==0;C=E;a:while(1){k=0;p=E;b:while(1){m=0;a=f;while(1){do if((j|0)<12){if(a>>>0>=s>>>0)if(!j){f=p;break a}else{j=12;f=a;break}f=a+1|0;h=(d[t+(d[a>>0]|0)>>0]|0)<>>0>>0){h=(d[t+(d[f>>0]|0)>>0]|0)<>0]|0;j=j-l|0;h=h>>>l;l=d[118112+(a<<3)>>0]|0;if((l|0)==12){g=1;l=p;B=40;break b}else if((l|0)==7)break;else if(!((l|0)==11|(l|0)==9)){l=p;B=16;break b}a=c[118116+(a<<3)>>2]|0;m=a+m|0;k=a+k|0;a=f}n=c[118116+(a<<3)>>2]|0;o=n+m|0;l=p+4|0;c[p>>2]=o;k=n+k|0;if((k|0)<(F|0)){m=0;n=f}else break;while(1){do if((j|0)<13){if(n>>>0>=s>>>0)if(!j){a=n;f=l;break a}else{j=13;f=n;break}f=n+1|0;h=(d[t+(d[n>>0]|0)>>0]|0)<>>0>>0){h=(d[t+(d[f>>0]|0)>>0]|0)<>0]|0;j=j-a|0;h=h>>>a;a=d[150880+(n<<3)>>0]|0;if((a|0)==12){g=1;B=40;break b}else if((a|0)==8)break;else if(!((a|0)==11|(a|0)==10)){B=26;break b}n=c[150884+(n<<3)>>2]|0;m=n+m|0;k=n+k|0;n=f}n=c[150884+(n<<3)>>2]|0;m=n+m|0;a=p+8|0;c[l>>2]=m;k=n+k|0;if((k|0)>=(F|0)){l=a;break}if(m){p=a;continue}p=(o|0)==0?p:a}if((B|0)==16){p=c[x>>2]|0;n=(c[y>>2]&1024|0)!=0;o=c[(n?z:v)>>2]|0;c[A>>2]=c[w>>2];c[A+4>>2]=n?233560:233568;c[A+8>>2]=o;c[A+12>>2]=k;Yv(p,115e3,115152,A);B=40}else if((B|0)==26){p=c[x>>2]|0;n=(c[y>>2]&1024|0)!=0;o=c[(n?z:v)>>2]|0;c[A>>2]=c[w>>2];c[A+4>>2]=n?233560:233568;c[A+8>>2]=o;c[A+12>>2]=k;Yv(p,115e3,115152,A);B=40}if((B|0)==40){B=0;if(m){c[l>>2]=m;l=l+4|0}}do if((k|0)!=(F|0)){n=c[w>>2]|0;m=c[x>>2]|0;o=(c[y>>2]&1024|0)!=0;p=c[(o?z:v)>>2]|0;c[A>>2]=k>>>0>>0?115064:115080;c[A+4>>2]=n;c[A+8>>2]=o?233560:233568;c[A+12>>2]=p;c[A+16>>2]=k;c[A+20>>2]=F;qx(m,115e3,115016,A);m=(k|0)>(F|0);if(m&l>>>0>E>>>0)do{l=l+-4|0;k=k-(c[l>>2]|0)|0;m=(k|0)>(F|0)}while(m&l>>>0>E>>>0);if((k|0)>=(F|0)){if(!m)break;c[l>>2]=F;c[l+4>>2]=0;l=l+8|0;break}if(l-C&4){c[l>>2]=0;l=l+4|0}c[l>>2]=F-((k|0)<0?0:k);l=l+4|0}while(0);Yd[c[D>>2]&63](b,E,l,F);if(r){if(!q){m=j&-16;h=h>>>(j-m|0);if(!m){j=0;f=(f&1|0)==0?f:f+1|0}else j=m}}else{p=j&-8;h=h>>>(j-p|0);j=p}l=c[u>>2]|0;e=e-l|0;c[w>>2]=(c[w>>2]|0)+1;if((e|0)<=0){B=58;break}else b=b+l|0}if((B|0)==58){l=c[J>>2]|0;k=c[K>>2]|0;break}B=c[x>>2]|0;t=(c[y>>2]&1024|0)!=0;u=c[(t?z:v)>>2]|0;c[A>>2]=c[w>>2];c[A+4>>2]=t?233560:233568;c[A+8>>2]=u;c[A+12>>2]=k;qx(B,115e3,115104,A);if(m){c[f>>2]=m;f=f+4|0}do if((k|0)!=(F|0)){w=c[w>>2]|0;j=c[x>>2]|0;y=(c[y>>2]&1024|0)!=0;B=c[(y?z:v)>>2]|0;c[A>>2]=k>>>0>>0?115064:115080;c[A+4>>2]=w;c[A+8>>2]=y?233560:233568;c[A+12>>2]=B;c[A+16>>2]=k;c[A+20>>2]=F;qx(j,115e3,115016,A);j=(k|0)>(F|0);if(j&f>>>0>E>>>0)do{f=f+-4|0;k=k-(c[f>>2]|0)|0;j=(k|0)>(F|0)}while(j&f>>>0>E>>>0);if((k|0)>=(F|0)){if(!j)break;c[f>>2]=F;c[f+4>>2]=0;f=f+8|0;break}if(f-C&4){c[f>>2]=0;f=f+4|0}c[f>>2]=F-((k|0)<0?0:k);f=f+4|0}while(0);Yd[c[D>>2]&63](b,E,f,F);c[H>>2]=0;c[G>>2]=h;c[I>>2]=g;c[K>>2]=(c[J>>2]|0)-a+(c[K>>2]|0);c[J>>2]=a;J=-1;i=L;return J|0}else l=f;while(0);c[H>>2]=j;c[G>>2]=h;c[I>>2]=g;c[K>>2]=l-f+k;c[J>>2]=f;J=1;i=L;return J|0}function ML(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;D=i;i=i+16|0;h=D;B=D+8|0;A=D+4|0;y=c[a>>2]|0;z=c[a+52>>2]|0;C=_J(ox(y)|0)|0;if(!C){d=c[y+628>>2]|0;f=vw(y)|0;c[h>>2]=217472;Yv(d,f,234328,h);f=0;i=D;return f|0}bK(C,0,ox(y)|0);c[h>>2]=B;sv(y,322,h)|0;c[h>>2]=A;sv(y,323,h)|0;a:do switch(e[a+28>>1]|0){case 5:case 1:switch(b[a+30>>1]|0){case 8:case 4:{h=1;l=16;break a}case 7:case 3:{h=3;l=16;break a}case 6:case 2:{h=2;l=17;break a}default:{h=0;l=17;break a}}case 6:case 2:switch(b[a+30>>1]|0){case 8:case 4:{h=3;l=16;break a}case 7:case 3:{h=1;l=16;break a}case 5:case 1:{h=2;l=17;break a}default:{h=0;l=17;break a}}case 7:case 3:switch(b[a+30>>1]|0){case 5:case 1:{h=3;l=16;break a}case 6:case 2:{h=1;l=16;break a}case 8:case 4:{h=2;l=17;break a}default:{h=0;l=17;break a}}case 8:case 4:switch(b[a+30>>1]|0){case 6:case 2:{h=3;l=16;break a}case 5:case 1:{h=1;l=16;break a}case 7:case 3:{h=2;l=17;break a}default:{h=0;l=17;break a}}default:{h=0;l=17}}while(0);if((l|0)==16){x=h;v=1;w=0-((c[B>>2]|0)+f)|0;j=g+-1|0}else if((l|0)==17){x=h;v=0;w=f-(c[B>>2]|0)|0;j=0}u=(g|0)==0;if(u)h=1;else{p=a+84|0;q=a+4|0;r=(f|0)==0;s=a+88|0;h=1;t=0;while(1){o=c[A>>2]|0;l=c[p>>2]|0;o=o-(((l+t|0)>>>0)%(o>>>0)|0)|0;o=(o+t|0)>>>0>g>>>0?g-t|0:o;b:do if(!r){m=da(j,f)|0;k=0;while(1){if((Hw(y,C,(c[s>>2]|0)+k|0,l+t|0,0,0)|0)==-1?(c[q>>2]|0)!=0:0){h=0;break b}l=(((c[p>>2]|0)+t|0)>>>0)%((c[A>>2]|0)>>>0)|0;l=da(lx(y)|0,l)|0;n=c[B>>2]|0;if((n+k|0)>>>0>f>>>0){E=f-k|0;n=n-E|0;Od[z&31](a,d+(k+m<<2)|0,k,j,E,o,n,n+w|0,C+l|0)}else Od[z&31](a,d+(k+m<<2)|0,k,j,n,o,0,w,C+l|0);k=(c[B>>2]|0)+k|0;if(k>>>0>=f>>>0)break b;l=c[p>>2]|0}}while(0);t=o+t|0;if(t>>>0>=g>>>0)break;else j=(v?0-o|0:o)+j|0}}$J(C);if((x&2|0)==0|u){E=h;i=D;return E|0}m=f+-1|0;n=0;do{j=da(n,f)|0;k=m+j|0;if((j|0)<(k|0)){l=d+(j<<2)|0;j=d+(k<<2)|0;do{E=c[l>>2]|0;c[l>>2]=c[j>>2];c[j>>2]=E;l=l+4|0;j=j+-4|0}while(l>>>0>>0)}n=n+1|0}while((n|0)!=(g|0));i=D;return h|0}function NL(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+16|0;l=B;y=B+8|0;z=B+12|0;w=c[a>>2]|0;x=c[a+52>>2]|0;k=c[a+16>>2]|0;c[l>>2]=B+14;c[l+4>>2]=z;Yu(w,530,l)|0;if(!(b[z>>1]|0)){f=c[w+628>>2]|0;Yv(f,vw(w)|0,217880,l);f=0;i=B;return f|0}A=_J(Uw(w)|0)|0;if(!A){f=c[w+628>>2]|0;Yv(f,vw(w)|0,217920,l);f=0;i=B;return f|0}bK(A,0,Uw(w)|0);a:do switch(e[a+28>>1]|0){case 6:case 2:switch(b[a+30>>1]|0){case 5:case 1:{h=2;u=0;v=0;n=0;break a}case 7:case 3:{h=1;j=18;break a}case 8:case 4:{h=3;j=18;break a}default:{h=0;u=0;v=0;n=0;break a}}case 5:case 1:switch(b[a+30>>1]|0){case 6:case 2:{h=2;u=0;v=0;n=0;break a}case 7:case 3:{h=3;j=18;break a}case 8:case 4:{h=1;j=18;break a}default:{h=0;u=0;v=0;n=0;break a}}case 8:case 4:switch(b[a+30>>1]|0){case 7:case 3:{h=2;u=0;v=0;n=0;break a}case 5:case 1:{h=1;j=18;break a}case 6:case 2:{h=3;j=18;break a}default:{h=0;u=0;v=0;n=0;break a}}case 7:case 3:switch(b[a+30>>1]|0){case 8:case 4:{h=2;u=0;v=0;n=0;break a}case 5:case 1:{h=3;j=18;break a}case 6:case 2:{h=1;j=18;break a}default:{h=0;u=0;v=0;n=0;break a}}default:{h=0;u=0;v=0;n=0}}while(0);if((j|0)==18){u=1;v=0-(f<<1)|0;n=g+-1|0}c[l>>2]=y;Yu(w,278,l)|0;s=Xw(w)|0;o=k>>>0>f>>>0?k-f|0:0;p=a+4|0;t=(g|0)==0;b:do if(t)n=1;else{q=a+84|0;r=0;while(1){m=c[y>>2]|0;k=(c[q>>2]|0)+r|0;m=m-((k>>>0)%(m>>>0)|0)|0;m=(m+r|0)>>>0>g>>>0?g-r|0:m;l=e[z>>1]|0;j=(m>>>0)%(l>>>0)|0;if(!j)l=m;else l=l-j+m|0;k=Pw(w,k,0)|0;if((Ew(w,k,A,da(((((c[q>>2]|0)+r|0)>>>0)%((c[y>>2]|0)>>>0)|0)+l|0,s)|0)|0)==-1?(c[p>>2]|0)!=0:0){n=0;break b}j=d+((da(n,f)|0)<<2)|0;k=A+(da((((c[q>>2]|0)+r|0)>>>0)%((c[y>>2]|0)>>>0)|0,s)|0)|0;Od[x&31](a,j,0,n,f,m,o,v,k);r=m+r|0;if(r>>>0>=g>>>0){n=1;break}else n=(u?0-m|0:m)+n|0}}while(0);if(!((h&2|0)==0|t)){l=f+-1|0;m=0;do{h=da(m,f)|0;j=l+h|0;if((h|0)<(j|0)){k=d+(h<<2)|0;h=d+(j<<2)|0;do{z=c[k>>2]|0;c[k>>2]=c[h>>2];c[h>>2]=z;k=k+4|0;h=h+-4|0}while(k>>>0>>0)}m=m+1|0}while((m|0)!=(g|0))}$J(A);f=n;i=B;return f|0}function OL(a,b,f,g,h,i,j,k,l){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;T=e[a+26>>1]|0;P=da(T,j)|0;if(!i)return;Q=h>>>0>7;m=T+1|0;n=T+2|0;o=T+3|0;p=T<<1;q=p|1;r=p+2|0;s=p+3|0;t=T*3|0;u=t+1|0;v=t+2|0;w=t+3|0;x=T<<2;y=x|1;z=x|2;A=x|3;B=T*5|0;C=B+1|0;D=B+2|0;E=B+3|0;F=T*6|0;G=F|1;H=F+2|0;I=F+3|0;J=T*7|0;K=J+1|0;L=J+2|0;M=J+3|0;N=T<<3;R=h+-8|0;S=R&-8;R=R-S|0;S=S+8|0;O=da(S,T)|0;f=l;j=b;while(1){i=i+-1|0;if(Q){a=f+O|0;g=j;l=h;while(1){c[g>>2]=(d[f+1>>0]|0)<<8|(d[f>>0]|0)|(d[f+2>>0]|0)<<16|(d[f+3>>0]|0)<<24;c[g+4>>2]=(d[f+m>>0]|0)<<8|(d[f+T>>0]|0)|(d[f+n>>0]|0)<<16|(d[f+o>>0]|0)<<24;c[g+8>>2]=(d[f+q>>0]|0)<<8|(d[f+p>>0]|0)|(d[f+r>>0]|0)<<16|(d[f+s>>0]|0)<<24;c[g+12>>2]=(d[f+u>>0]|0)<<8|(d[f+t>>0]|0)|(d[f+v>>0]|0)<<16|(d[f+w>>0]|0)<<24;c[g+16>>2]=(d[f+y>>0]|0)<<8|(d[f+x>>0]|0)|(d[f+z>>0]|0)<<16|(d[f+A>>0]|0)<<24;c[g+20>>2]=(d[f+C>>0]|0)<<8|(d[f+B>>0]|0)|(d[f+D>>0]|0)<<16|(d[f+E>>0]|0)<<24;c[g+24>>2]=(d[f+G>>0]|0)<<8|(d[f+F>>0]|0)|(d[f+H>>0]|0)<<16|(d[f+I>>0]|0)<<24;c[g+28>>2]=(d[f+K>>0]|0)<<8|(d[f+J>>0]|0)|(d[f+L>>0]|0)<<16|(d[f+M>>0]|0)<<24;l=l+-8|0;if(l>>>0<=7)break;else{f=f+N|0;g=g+32|0}}j=j+(S<<2)|0;f=R}else{a=f;f=h}switch(f|0){case 2:{U=13;break}case 6:{U=9;break}case 1:{U=14;break}case 5:{U=10;break}case 7:{c[j>>2]=(d[a+1>>0]|0)<<8|(d[a>>0]|0)|(d[a+2>>0]|0)<<16|(d[a+3>>0]|0)<<24;j=j+4|0;a=a+T|0;U=9;break}case 4:{U=11;break}case 3:{U=12;break}default:{}}if((U|0)==9){c[j>>2]=(d[a+1>>0]|0)<<8|(d[a>>0]|0)|(d[a+2>>0]|0)<<16|(d[a+3>>0]|0)<<24;j=j+4|0;a=a+T|0;U=10}if((U|0)==10){c[j>>2]=(d[a+1>>0]|0)<<8|(d[a>>0]|0)|(d[a+2>>0]|0)<<16|(d[a+3>>0]|0)<<24;j=j+4|0;a=a+T|0;U=11}if((U|0)==11){c[j>>2]=(d[a+1>>0]|0)<<8|(d[a>>0]|0)|(d[a+2>>0]|0)<<16|(d[a+3>>0]|0)<<24;j=j+4|0;a=a+T|0;U=12}if((U|0)==12){c[j>>2]=(d[a+1>>0]|0)<<8|(d[a>>0]|0)|(d[a+2>>0]|0)<<16|(d[a+3>>0]|0)<<24;j=j+4|0;a=a+T|0;U=13}if((U|0)==13){c[j>>2]=(d[a+1>>0]|0)<<8|(d[a>>0]|0)|(d[a+2>>0]|0)<<16|(d[a+3>>0]|0)<<24;j=j+4|0;a=a+T|0;U=14}if((U|0)==14){U=0;c[j>>2]=(d[a+1>>0]|0)<<8|(d[a>>0]|0)|(d[a+2>>0]|0)<<16|(d[a+3>>0]|0)<<24;j=j+4|0;a=a+T|0}if(!i)break;else{f=a+P|0;j=j+(k<<2)|0}}return}function PL(a,b,f,g,h,i,j,k,l){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=e[a+26>>1]|0;o=da(q,j)|0;if(!i)return;p=(h|0)==0;m=a+76|0;n=da(q,h)|0;g=b;a=l;while(1){i=i+-1|0;if(p)f=a;else{f=a+n|0;l=c[m>>2]|0;b=h;j=g;while(1){b=b+-1|0;s=d[a+3>>0]|0;r=s<<8;c[j>>2]=d[l+(d[a>>0]|0|r)>>0]|0|s<<24|(d[l+(d[a+1>>0]|0|r)>>0]|0)<<8|(d[l+(d[a+2>>0]|0|r)>>0]|0)<<16;if(!b)break;else{a=a+q|0;j=j+4|0}}g=g+(h<<2)|0}if(!i)break;else{g=g+(k<<2)|0;a=f+o|0}}return}function QL(a,b,f,g,h,i,j,k,l){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;M=e[a+26>>1]|0;I=da(M,j)|0;if(!i)return;J=h>>>0>7;m=M+1|0;n=M+2|0;o=M<<1;p=o|1;q=o+2|0;r=M*3|0;s=r+1|0;t=r+2|0;u=M<<2;v=u|1;w=u|2;x=M*5|0;y=x+1|0;z=x+2|0;A=M*6|0;B=A|1;C=A+2|0;D=M*7|0;E=D+1|0;F=D+2|0;G=M<<3;K=h+-8|0;L=K&-8;K=K-L|0;L=L+8|0;H=da(L,M)|0;f=l;j=b;while(1){i=i+-1|0;if(J){a=f+H|0;g=j;l=h;while(1){c[g>>2]=d[f>>0]|0|(d[f+1>>0]|0)<<8|(d[f+2>>0]|0)<<16|-16777216;c[g+4>>2]=d[f+M>>0]|0|(d[f+m>>0]|0)<<8|(d[f+n>>0]|0)<<16|-16777216;c[g+8>>2]=d[f+o>>0]|0|(d[f+p>>0]|0)<<8|(d[f+q>>0]|0)<<16|-16777216;c[g+12>>2]=d[f+r>>0]|0|(d[f+s>>0]|0)<<8|(d[f+t>>0]|0)<<16|-16777216;c[g+16>>2]=d[f+u>>0]|0|(d[f+v>>0]|0)<<8|(d[f+w>>0]|0)<<16|-16777216;c[g+20>>2]=d[f+x>>0]|0|(d[f+y>>0]|0)<<8|(d[f+z>>0]|0)<<16|-16777216;c[g+24>>2]=d[f+A>>0]|0|(d[f+B>>0]|0)<<8|(d[f+C>>0]|0)<<16|-16777216;c[g+28>>2]=d[f+D>>0]|0|(d[f+E>>0]|0)<<8|(d[f+F>>0]|0)<<16|-16777216;l=l+-8|0;if(l>>>0<=7)break;else{f=f+G|0;g=g+32|0}}j=j+(L<<2)|0;f=K}else{a=f;f=h}switch(f|0){case 2:{N=13;break}case 6:{N=9;break}case 4:{N=11;break}case 3:{N=12;break}case 5:{N=10;break}case 7:{c[j>>2]=d[a>>0]|0|(d[a+1>>0]|0)<<8|(d[a+2>>0]|0)<<16|-16777216;j=j+4|0;a=a+M|0;N=9;break}case 1:{N=14;break}default:{}}if((N|0)==9){c[j>>2]=d[a>>0]|0|(d[a+1>>0]|0)<<8|(d[a+2>>0]|0)<<16|-16777216;j=j+4|0;a=a+M|0;N=10}if((N|0)==10){c[j>>2]=d[a>>0]|0|(d[a+1>>0]|0)<<8|(d[a+2>>0]|0)<<16|-16777216;j=j+4|0;a=a+M|0;N=11}if((N|0)==11){c[j>>2]=d[a>>0]|0|(d[a+1>>0]|0)<<8|(d[a+2>>0]|0)<<16|-16777216;j=j+4|0;a=a+M|0;N=12}if((N|0)==12){c[j>>2]=d[a>>0]|0|(d[a+1>>0]|0)<<8|(d[a+2>>0]|0)<<16|-16777216;j=j+4|0;a=a+M|0;N=13}if((N|0)==13){c[j>>2]=d[a>>0]|0|(d[a+1>>0]|0)<<8|(d[a+2>>0]|0)<<16|-16777216;j=j+4|0;a=a+M|0;N=14}if((N|0)==14){N=0;c[j>>2]=d[a>>0]|0|(d[a+1>>0]|0)<<8|(d[a+2>>0]|0)<<16|-16777216;j=j+4|0;a=a+M|0}if(!i)break;else{f=a+I|0;j=j+(k<<2)|0}}return}function RL(a,b,f,g,h,i,j,k,l){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0;r=e[a+26>>1]|0;p=da(r,j)|0;if(!i)return;q=(h|0)==0;n=a+80|0;o=da(r,h)|0;g=b;m=i;a=l;while(1){m=m+-1|0;if(q)f=a;else{f=a+(o<<1)|0;i=c[n>>2]|0;j=h;b=g;while(1){j=j+-1|0;c[b>>2]=(d[i+(e[a+2>>1]|0)>>0]|0)<<8|(d[i+(e[a>>1]|0)>>0]|0)|(d[i+(e[a+4>>1]|0)>>0]|0)<<16|(d[i+(e[a+6>>1]|0)>>0]|0)<<24;if(!j)break;else{b=b+4|0;a=a+(r<<1)|0}}g=g+(h<<2)|0}if(!m)break;else{g=g+(k<<2)|0;a=f+(p<<1)|0}}return}function SL(a,b,f,g,h,i,j,k,l){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=e[a+26>>1]|0;p=da(s,j)|0;if(!i)return;q=(h|0)==0;r=a+80|0;n=a+76|0;o=da(s,h)|0;g=b;a=l;while(1){i=i+-1|0;if(q)f=a;else{f=a+(o<<1)|0;m=c[r>>2]|0;l=c[n>>2]|0;j=h;b=g;while(1){j=j+-1|0;u=d[m+(e[a+6>>1]|0)>>0]|0;t=u<<8;c[b>>2]=d[l+(d[m+(e[a>>1]|0)>>0]|0|t)>>0]|0|u<<24|(d[l+(d[m+(e[a+2>>1]|0)>>0]|0|t)>>0]|0)<<8|(d[l+(d[m+(e[a+4>>1]|0)>>0]|0|t)>>0]|0)<<16;if(!j)break;else{b=b+4|0;a=a+(s<<1)|0}}g=g+(h<<2)|0}if(!i)break;else{g=g+(k<<2)|0;a=f+(p<<1)|0}}return}function TL(a,b,f,g,h,i,j,k,l){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0;r=e[a+26>>1]|0;p=da(r,j)|0;if(!i)return;q=(h|0)==0;n=a+80|0;o=da(r,h)|0;g=b;m=i;a=l;while(1){m=m+-1|0;if(q)f=a;else{f=a+(o<<1)|0;i=c[n>>2]|0;j=h;b=g;while(1){j=j+-1|0;c[b>>2]=d[i+(e[a>>1]|0)>>0]|0|(d[i+(e[a+2>>1]|0)>>0]|0)<<8|(d[i+(e[a+4>>1]|0)>>0]|0)<<16|-16777216;if(!j)break;else{b=b+4|0;a=a+(r<<1)|0}}g=g+(h<<2)|0}if(!m)break;else{g=g+(k<<2)|0;a=f+(p<<1)|0}}return}function UL(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;u=v;m=f+32|0;switch(e[m>>1]|0){case 0:case 1:break;case 3:{r=f+36|0;o=c[r>>2]|0;s=f+40|0;n=c[s>>2]|0;t=f+44|0;p=c[t>>2]|0;q=f+24|0;l=b[q>>1]|0;g=1<<(l&65535);k=p;h=n;j=g;m=o;while(1){if((j|0)<=0){k=36;break}if((e[m>>1]|0)>255){k=34;break}if((e[h>>1]|0)>255){k=34;break}if((e[k>>1]|0)>255){k=34;break}else{k=k+2|0;h=h+2|0;j=j+-1|0;m=m+2|0}}if((k|0)==34)if(l<<16>>16==31){u=1;i=v;return u|0}else do{g=g+-1|0;l=o+(g<<1)|0;b[l>>1]=(e[l>>1]|0)>>>8;l=n+(g<<1)|0;b[l>>1]=(e[l>>1]|0)>>>8;l=p+(g<<1)|0;b[l>>1]=(e[l>>1]|0)>>>8}while((g|0)>0);else if((k|0)==36){n=c[f>>2]|0;l=c[n+628>>2]|0;qx(l,vw(n)|0,217736,u)}g=b[q>>1]|0;if((g&65535)>=9){u=1;i=v;return u|0}o=g&65535;n=c[r>>2]|0;l=c[s>>2]|0;j=c[t>>2]|0;h=_J(((8/(o>>>0)|0)<<10)+1024|0)|0;m=f+64|0;c[m>>2]=h;if(!h){f=c[f>>2]|0;t=c[f+628>>2]|0;Yv(t,vw(f)|0,217760,u);u=0;i=v;return u|0}k=h;g=0;h=h+1024|0;while(1){c[k+(g<<2)>>2]=h;if((o|0)==1){u=g>>>7&1;c[h>>2]=e[n+(u<<1)>>1]&255|e[l+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g>>>6&1;c[h+4>>2]=e[n+(u<<1)>>1]&255|e[l+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g>>>5&1;c[h+8>>2]=e[n+(u<<1)>>1]&255|e[l+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g>>>4&1;c[h+12>>2]=e[n+(u<<1)>>1]&255|e[l+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g>>>3&1;c[h+16>>2]=e[n+(u<<1)>>1]&255|e[l+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g>>>2&1;c[h+20>>2]=e[n+(u<<1)>>1]&255|e[l+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g>>>1&1;c[h+24>>2]=e[n+(u<<1)>>1]&255|e[l+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g&1;c[h+28>>2]=e[n+(u<<1)>>1]&255|e[l+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;h=h+32|0}else if((o|0)==2){u=g>>>6&3;c[h>>2]=e[n+(u<<1)>>1]&255|e[l+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g>>>4&3;c[h+4>>2]=e[n+(u<<1)>>1]&255|e[l+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g>>>2&3;c[h+8>>2]=e[n+(u<<1)>>1]&255|e[l+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g&3;c[h+12>>2]=e[n+(u<<1)>>1]&255|e[l+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;h=h+16|0}else if((o|0)==4){u=g>>>4&15;c[h>>2]=e[n+(u<<1)>>1]&255|e[l+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g&15;c[h+4>>2]=e[n+(u<<1)>>1]&255|e[l+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;h=h+8|0}else if((o|0)==8){c[h>>2]=e[n+(g<<1)>>1]&255|e[l+(g<<1)>>1]<<8&65280|e[j+(g<<1)>>1]<<16|-16777216;h=h+4|0}g=g+1|0;if((g|0)==256){g=1;break}k=c[m>>2]|0}i=v;return g|0}case 5:case 6:case 2:{if((b[f+24>>1]|0)==8){u=1;i=v;return u|0}break}default:{u=1;i=v;return u|0}}l=f+24|0;j=b[l>>1]|0;j=j<<16>>16==16?255:(1<<(j&65535))+-1|0;k=j+1|0;g=_J(k)|0;n=f+56|0;c[n>>2]=g;if(!g){f=c[f>>2]|0;t=c[f+628>>2]|0;Yv(t,vw(f)|0,217800,u);u=0;i=v;return u|0}h=(j|0)<0;if(!(b[m>>1]|0)){if(!h?(a[g>>0]=-1,(j|0)!=0):0){g=1;do{a[(c[n>>2]|0)+g>>0]=((j-g|0)*255|0)/(j|0)|0;g=g+1|0}while((g|0)!=(k|0))}}else if(!h?(a[g>>0]=0,(j|0)!=0):0){g=1;do{a[(c[n>>2]|0)+g>>0]=(g*255|0)/(j|0)|0;g=g+1|0}while((g|0)!=(k|0))}j=b[l>>1]|0;if((j&65535)>=17){u=1;i=v;return u|0}if((e[m>>1]|0)>=2){u=1;i=v;return u|0}o=c[n>>2]|0;k=j&65535;h=8/(k>>>0)|0;h=_J((h|0)==0?2048:(h<<10)+1024|0)|0;p=f+60|0;c[p>>2]=h;if(!h){f=c[f>>2]|0;t=c[f+628>>2]|0;Yv(t,vw(f)|0,217848,u);u=0;i=v;return u|0}g=h+1024|0;a:do if(j<<16>>16==16){c[h>>2]=g;h=d[o>>0]|0;c[g>>2]=h|h<<8|h<<16|-16777216;h=1;do{g=g+4|0;c[(c[p>>2]|0)+(h<<2)>>2]=g;u=d[o+h>>0]|0;c[g>>2]=u|u<<8|u<<16|-16777216;h=h+1|0}while((h|0)!=256)}else if(j<<16>>16==2){j=0;while(1){c[h+(j<<2)>>2]=g;u=d[o+(j>>6)>>0]|0;c[g>>2]=u|u<<8|u<<16|-16777216;u=d[o+(j>>>4&3)>>0]|0;c[g+4>>2]=u|u<<8|u<<16|-16777216;u=d[o+(j>>>2&3)>>0]|0;c[g+8>>2]=u|u<<8|u<<16|-16777216;u=d[o+(j&3)>>0]|0;c[g+12>>2]=u|u<<8|u<<16|-16777216;if((j|0)==255)break a;h=c[p>>2]|0;j=j+1|0;g=g+16|0}}else if(j<<16>>16==1){j=h;h=0;while(1){c[j+(h<<2)>>2]=g;u=d[o+(h>>7)>>0]|0;c[g>>2]=u|u<<8|u<<16|-16777216;u=d[o+(h>>>6&1)>>0]|0;c[g+4>>2]=u|u<<8|u<<16|-16777216;u=d[o+(h>>>5&1)>>0]|0;c[g+8>>2]=u|u<<8|u<<16|-16777216;u=d[o+(h>>>4&1)>>0]|0;c[g+12>>2]=u|u<<8|u<<16|-16777216;u=d[o+(h>>>3&1)>>0]|0;c[g+16>>2]=u|u<<8|u<<16|-16777216;u=d[o+(h>>>2&1)>>0]|0;c[g+20>>2]=u|u<<8|u<<16|-16777216;u=d[o+(h>>>1&1)>>0]|0;c[g+24>>2]=u|u<<8|u<<16|-16777216;u=d[o+(h&1)>>0]|0;c[g+28>>2]=u|u<<8|u<<16|-16777216;h=h+1|0;if((h|0)==256)break a;j=c[p>>2]|0;g=g+32|0}}else{j=0;while(1){c[h+(j<<2)>>2]=g;if((k|0)==8|(k|0)==16){u=d[o+j>>0]|0;c[g>>2]=u|u<<8|u<<16|-16777216;g=g+4|0}else if((k|0)==4){u=d[o+(j>>4)>>0]|0;c[g>>2]=u|u<<8|u<<16|-16777216;u=d[o+(j&15)>>0]|0;c[g+4>>2]=u|u<<8|u<<16|-16777216;g=g+8|0}j=j+1|0;if((j|0)>=256)break a;h=c[p>>2]|0}}while(0);$J(c[n>>2]|0);c[n>>2]=0;u=1;i=v;return u|0}function VL(a,b,f,g,h,i,j,k,l){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;T=e[a+26>>1]|0;P=da(T,j)|0;if(!i)return;Q=h>>>0>7;m=T+3|0;n=T+1|0;o=T+2|0;p=T<<1;q=p+3|0;r=p|1;s=p+2|0;t=T*3|0;u=t+3|0;v=t+1|0;w=t+2|0;x=T<<2;y=x|3;z=x|1;A=x|2;B=T*5|0;C=B+3|0;D=B+1|0;E=B+2|0;F=T*6|0;G=F+3|0;H=F|1;I=F+2|0;J=T*7|0;K=J+3|0;L=J+1|0;M=J+2|0;N=T<<3;R=h+-8|0;S=R&-8;R=R-S|0;S=S+8|0;O=da(S,T)|0;f=l;j=b;while(1){i=i+-1|0;if(Q){a=f+O|0;g=j;l=h;while(1){b=(d[f+3>>0]|0)^255;V=((da((d[f>>0]|0)^255,b)|0)>>>0)/255|0;W=((da((d[f+1>>0]|0)^255,b)|0)>>>0)/255|0;c[g>>2]=V|W<<8|(((da((d[f+2>>0]|0)^255,b)|0)>>>0)/255|0)<<16|-16777216;b=(d[f+m>>0]|0)^255;W=((da((d[f+T>>0]|0)^255,b)|0)>>>0)/255|0;V=((da((d[f+n>>0]|0)^255,b)|0)>>>0)/255|0;c[g+4>>2]=W|V<<8|(((da((d[f+o>>0]|0)^255,b)|0)>>>0)/255|0)<<16|-16777216;b=(d[f+q>>0]|0)^255;V=((da((d[f+p>>0]|0)^255,b)|0)>>>0)/255|0;W=((da((d[f+r>>0]|0)^255,b)|0)>>>0)/255|0;c[g+8>>2]=V|W<<8|(((da((d[f+s>>0]|0)^255,b)|0)>>>0)/255|0)<<16|-16777216;b=(d[f+u>>0]|0)^255;W=((da((d[f+t>>0]|0)^255,b)|0)>>>0)/255|0;V=((da((d[f+v>>0]|0)^255,b)|0)>>>0)/255|0;c[g+12>>2]=W|V<<8|(((da((d[f+w>>0]|0)^255,b)|0)>>>0)/255|0)<<16|-16777216;b=(d[f+y>>0]|0)^255;V=((da((d[f+x>>0]|0)^255,b)|0)>>>0)/255|0;W=((da((d[f+z>>0]|0)^255,b)|0)>>>0)/255|0;c[g+16>>2]=V|W<<8|(((da((d[f+A>>0]|0)^255,b)|0)>>>0)/255|0)<<16|-16777216;b=(d[f+C>>0]|0)^255;W=((da((d[f+B>>0]|0)^255,b)|0)>>>0)/255|0;V=((da((d[f+D>>0]|0)^255,b)|0)>>>0)/255|0;c[g+20>>2]=W|V<<8|(((da((d[f+E>>0]|0)^255,b)|0)>>>0)/255|0)<<16|-16777216;b=(d[f+G>>0]|0)^255;V=((da((d[f+F>>0]|0)^255,b)|0)>>>0)/255|0;W=((da((d[f+H>>0]|0)^255,b)|0)>>>0)/255|0;c[g+24>>2]=V|W<<8|(((da((d[f+I>>0]|0)^255,b)|0)>>>0)/255|0)<<16|-16777216;b=(d[f+K>>0]|0)^255;W=((da((d[f+J>>0]|0)^255,b)|0)>>>0)/255|0;V=((da((d[f+L>>0]|0)^255,b)|0)>>>0)/255|0;c[g+28>>2]=W|V<<8|(((da((d[f+M>>0]|0)^255,b)|0)>>>0)/255|0)<<16|-16777216;l=l+-8|0;if(l>>>0<=7)break;else{f=f+N|0;g=g+32|0}}j=j+(S<<2)|0;f=R}else{a=f;f=h}switch(f|0){case 4:{U=11;break}case 1:{U=14;break}case 2:{U=13;break}case 7:{U=(d[a+3>>0]|0)^255;W=((da((d[a>>0]|0)^255,U)|0)>>>0)/255|0;c[j>>2]=W|(((da((d[a+1>>0]|0)^255,U)|0)>>>0)/255|0)<<8|(((da((d[a+2>>0]|0)^255,U)|0)>>>0)/255|0)<<16|-16777216;j=j+4|0;a=a+T|0;U=9;break}case 6:{U=9;break}case 5:{U=10;break}case 3:{U=12;break}default:{}}if((U|0)==9){W=(d[a+3>>0]|0)^255;l=((da((d[a>>0]|0)^255,W)|0)>>>0)/255|0;V=((da((d[a+1>>0]|0)^255,W)|0)>>>0)/255|0;c[j>>2]=l|V<<8|(((da((d[a+2>>0]|0)^255,W)|0)>>>0)/255|0)<<16|-16777216;j=j+4|0;a=a+T|0;U=10}if((U|0)==10){W=(d[a+3>>0]|0)^255;l=((da((d[a>>0]|0)^255,W)|0)>>>0)/255|0;V=((da((d[a+1>>0]|0)^255,W)|0)>>>0)/255|0;c[j>>2]=l|V<<8|(((da((d[a+2>>0]|0)^255,W)|0)>>>0)/255|0)<<16|-16777216;j=j+4|0;a=a+T|0;U=11}if((U|0)==11){W=(d[a+3>>0]|0)^255;l=((da((d[a>>0]|0)^255,W)|0)>>>0)/255|0;V=((da((d[a+1>>0]|0)^255,W)|0)>>>0)/255|0;c[j>>2]=l|V<<8|(((da((d[a+2>>0]|0)^255,W)|0)>>>0)/255|0)<<16|-16777216;j=j+4|0;a=a+T|0;U=12}if((U|0)==12){W=(d[a+3>>0]|0)^255;l=((da((d[a>>0]|0)^255,W)|0)>>>0)/255|0;V=((da((d[a+1>>0]|0)^255,W)|0)>>>0)/255|0;c[j>>2]=l|V<<8|(((da((d[a+2>>0]|0)^255,W)|0)>>>0)/255|0)<<16|-16777216;j=j+4|0;a=a+T|0;U=13}if((U|0)==13){W=(d[a+3>>0]|0)^255;l=((da((d[a>>0]|0)^255,W)|0)>>>0)/255|0;V=((da((d[a+1>>0]|0)^255,W)|0)>>>0)/255|0;c[j>>2]=l|V<<8|(((da((d[a+2>>0]|0)^255,W)|0)>>>0)/255|0)<<16|-16777216;j=j+4|0;a=a+T|0;U=14}if((U|0)==14){U=0;W=(d[a+3>>0]|0)^255;l=((da((d[a>>0]|0)^255,W)|0)>>>0)/255|0;V=((da((d[a+1>>0]|0)^255,W)|0)>>>0)/255|0;c[j>>2]=l|V<<8|(((da((d[a+2>>0]|0)^255,W)|0)>>>0)/255|0)<<16|-16777216;j=j+4|0;a=a+T|0}if(!i)break;else{f=a+P|0;j=j+(k<<2)|0}}return}function WL(a,b,f,g,h,i,j,k,l){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=e[a+26>>1]|0;p=c[a+56>>2]|0;m=da(q,j)|0;if(!i)return;n=(h|0)==0;o=da(q,h)|0;j=b;g=l;l=i;while(1){l=l+-1|0;if(n)f=g;else{f=g+o|0;b=h;a=j;while(1){b=b+-1|0;i=(d[g+3>>0]|0)^255;s=((da((d[g>>0]|0)^255,i)|0)>>>0)/255|0;r=((da((d[g+1>>0]|0)^255,i)|0)>>>0)/255|0;i=((da((d[g+2>>0]|0)^255,i)|0)>>>0)/255|0;c[a>>2]=d[p+s>>0]|0|(d[p+r>>0]|0)<<8|(d[p+i>>0]|0)<<16|-16777216;if(!b)break;else{g=g+q|0;a=a+4|0}}j=j+(h<<2)|0}if(!l)break;else{j=j+(k<<2)|0;g=f+m|0}}return}function XL(a,b,f,g,h,i,j,k,l){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=c[a+64>>2]|0;m=e[a+26>>1]|0;if(!i)return;n=(h|0)==0;o=da(m,h)|0;g=b;a=l;while(1){i=i+-1|0;if(n)f=a;else{f=a+o|0;l=h;b=g;while(1){l=l+-1|0;c[b>>2]=c[c[p+((d[a>>0]|0)<<2)>>2]>>2];if(!l)break;else{a=a+m|0;b=b+4|0}}g=g+(h<<2)|0}if(!i)break;else{g=g+(k<<2)|0;a=f+j|0}}return}function YL(a,b,e,f,g,h,i,j,k){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0;q=c[a+64>>2]|0;m=(i|0)/2|0;if(!h)return;n=g>>>0>1;o=g+-2|0;l=o>>>1;p=l<<1;o=o-p|0;p=p+2|0;l=l+1|0;e=b;i=k;while(1){h=h+-1|0;if(n){a=e+(p<<2)|0;b=i;f=g;while(1){k=c[q+((d[b>>0]|0)<<2)>>2]|0;c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];f=f+-2|0;if(f>>>0<=1)break;else{b=b+1|0;e=e+8|0}}i=i+l|0;e=o}else{a=e;e=g}if(e){c[a>>2]=c[c[q+((d[i>>0]|0)<<2)>>2]>>2];a=a+4|0;i=i+1|0}if(!h)break;else{e=a+(j<<2)|0;i=i+m|0}}return}function ZL(a,b,e,f,g,h,i,j,k){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=c[a+64>>2]|0;m=(i|0)/4|0;if(!h)return;n=g>>>0>3;o=g+-4|0;l=o>>>2;p=l<<2;o=o-p|0;p=p+4|0;l=l+1|0;e=b;i=k;while(1){h=h+-1|0;if(n){a=e+(p<<2)|0;b=i;f=g;while(1){k=c[q+((d[b>>0]|0)<<2)>>2]|0;c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];c[e+8>>2]=c[k+8>>2];c[e+12>>2]=c[k+12>>2];f=f+-4|0;if(f>>>0<=3)break;else{b=b+1|0;e=e+16|0}}i=i+l|0;e=o}else{a=e;e=g}do if(e){f=i+1|0;i=c[q+((d[i>>0]|0)<<2)>>2]|0;if((e|0)==3){c[a>>2]=c[i>>2];a=a+4|0;i=i+4|0;r=10}else if((e|0)!=1)if((e|0)==2)r=10;else{i=f;break}if((r|0)==10){r=0;c[a>>2]=c[i>>2];a=a+4|0;i=i+4|0}c[a>>2]=c[i>>2];i=f;a=a+4|0}while(0);if(!h)break;else{e=a+(j<<2)|0;i=i+m|0}}return}function _L(a,b,e,f,g,h,i,j,k){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=c[a+64>>2]|0;m=(i|0)/8|0;if(!h)return;n=g>>>0>7;o=g+-8|0;l=o>>>3;p=l<<3;o=o-p|0;p=p+8|0;l=l+1|0;e=b;i=k;while(1){h=h+-1|0;if(n){a=e+(p<<2)|0;b=i;f=g;while(1){k=c[q+((d[b>>0]|0)<<2)>>2]|0;c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];c[e+8>>2]=c[k+8>>2];c[e+12>>2]=c[k+12>>2];c[e+16>>2]=c[k+16>>2];c[e+20>>2]=c[k+20>>2];c[e+24>>2]=c[k+24>>2];c[e+28>>2]=c[k+28>>2];f=f+-8|0;if(f>>>0<=7)break;else{b=b+1|0;e=e+32|0}}i=i+l|0;e=o}else{a=e;e=g}a:do if(e){f=i+1|0;i=c[q+((d[i>>0]|0)<<2)>>2]|0;switch(e|0){case 3:{r=13;break}case 4:{r=12;break}case 1:break;case 5:{r=11;break}case 6:{r=10;break}case 2:{r=14;break}case 7:{c[a>>2]=c[i>>2];a=a+4|0;i=i+4|0;r=10;break}default:{i=f;break a}}if((r|0)==10){c[a>>2]=c[i>>2];a=a+4|0;i=i+4|0;r=11}if((r|0)==11){c[a>>2]=c[i>>2];a=a+4|0;i=i+4|0;r=12}if((r|0)==12){c[a>>2]=c[i>>2];a=a+4|0;i=i+4|0;r=13}if((r|0)==13){c[a>>2]=c[i>>2];a=a+4|0;i=i+4|0;r=14}if((r|0)==14){r=0;c[a>>2]=c[i>>2];a=a+4|0;i=i+4|0}c[a>>2]=c[i>>2];i=f;a=a+4|0}while(0);if(!h)break;else{e=a+(j<<2)|0;i=i+m|0}}return}function $L(a,b,d,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0;o=e[a+26>>1]|0;l=c[a+60>>2]|0;if(!h)return;m=(g|0)==0;n=(da(o,g)|0)<<1;f=b;b=k;while(1){h=h+-1|0;if(m)d=b;else{d=b+n|0;a=g;k=f;while(1){a=a+-1|0;c[k>>2]=c[c[l+((e[b>>1]|0)>>>8<<2)>>2]>>2];if(!a)break;else{k=k+4|0;b=b+(o<<1)|0}}f=f+(g<<2)|0}if(!h)break;else{f=f+(j<<2)|0;b=d+i|0}}return}function aM(a,b,f,g,h,i,j,k,l){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=e[a+26>>1]|0;m=c[a+60>>2]|0;if(!i)return;n=(h|0)==0;o=da(p,h)|0;g=b;a=l;while(1){i=i+-1|0;if(n)f=a;else{f=a+o|0;l=h;b=g;while(1){l=l+-1|0;c[b>>2]=((d[a+1>>0]|0)<<24|16777215)&c[c[m+((d[a>>0]|0)<<2)>>2]>>2];if(!l)break;else{a=a+p|0;b=b+4|0}}g=g+(h<<2)|0}if(!i)break;else{g=g+(k<<2)|0;a=f+j|0}}return}function bM(a,b,f,g,h,i,j,k,l){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=e[a+26>>1]|0;m=c[a+60>>2]|0;if(!i)return;n=(h|0)==0;o=da(p,h)|0;g=b;a=l;while(1){i=i+-1|0;if(n)f=a;else{f=a+o|0;l=h;b=g;while(1){l=l+-1|0;c[b>>2]=c[c[m+((d[a>>0]|0)<<2)>>2]>>2];if(!l)break;else{a=a+p|0;b=b+4|0}}g=g+(h<<2)|0}if(!i)break;else{g=g+(k<<2)|0;a=f+j|0}}return}function cM(a,b,e,f,g,h,i,j,k){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0;q=c[a+60>>2]|0;m=(i|0)/2|0;if(!h)return;n=g>>>0>1;o=g+-2|0;l=o>>>1;p=l<<1;o=o-p|0;p=p+2|0;l=l+1|0;e=b;i=k;while(1){h=h+-1|0;if(n){a=e+(p<<2)|0;b=i;f=g;while(1){k=c[q+((d[b>>0]|0)<<2)>>2]|0;c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];f=f+-2|0;if(f>>>0<=1)break;else{b=b+1|0;e=e+8|0}}i=i+l|0;e=o}else{a=e;e=g}if(e){c[a>>2]=c[c[q+((d[i>>0]|0)<<2)>>2]>>2];a=a+4|0;i=i+1|0}if(!h)break;else{e=a+(j<<2)|0;i=i+m|0}}return}function dM(a,b,e,f,g,h,i,j,k){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=c[a+60>>2]|0;m=(i|0)/4|0;if(!h)return;n=g>>>0>3;o=g+-4|0;l=o>>>2;p=l<<2;o=o-p|0;p=p+4|0;l=l+1|0;e=b;i=k;while(1){h=h+-1|0;if(n){a=e+(p<<2)|0;b=i;f=g;while(1){k=c[q+((d[b>>0]|0)<<2)>>2]|0;c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];c[e+8>>2]=c[k+8>>2];c[e+12>>2]=c[k+12>>2];f=f+-4|0;if(f>>>0<=3)break;else{b=b+1|0;e=e+16|0}}i=i+l|0;e=o}else{a=e;e=g}do if(e){f=i+1|0;i=c[q+((d[i>>0]|0)<<2)>>2]|0;if((e|0)!=1)if((e|0)==3){c[a>>2]=c[i>>2];a=a+4|0;i=i+4|0;r=10}else if((e|0)==2)r=10;else{i=f;break}if((r|0)==10){r=0;c[a>>2]=c[i>>2];a=a+4|0;i=i+4|0}c[a>>2]=c[i>>2];i=f;a=a+4|0}while(0);if(!h)break;else{e=a+(j<<2)|0;i=i+m|0}}return}function eM(a,b,e,f,g,h,i,j,k){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=c[a+60>>2]|0;m=(i|0)/8|0;if(!h)return;n=g>>>0>7;o=g+-8|0;l=o>>>3;p=l<<3;o=o-p|0;p=p+8|0;l=l+1|0;e=b;i=k;while(1){h=h+-1|0;if(n){a=e+(p<<2)|0;b=i;f=g;while(1){k=c[q+((d[b>>0]|0)<<2)>>2]|0;c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];c[e+8>>2]=c[k+8>>2];c[e+12>>2]=c[k+12>>2];c[e+16>>2]=c[k+16>>2];c[e+20>>2]=c[k+20>>2];c[e+24>>2]=c[k+24>>2];c[e+28>>2]=c[k+28>>2];f=f+-8|0;if(f>>>0<=7)break;else{b=b+1|0;e=e+32|0}}i=i+l|0;e=o}else{a=e;e=g}a:do if(e){f=i+1|0;i=c[q+((d[i>>0]|0)<<2)>>2]|0;switch(e|0){case 5:{r=11;break}case 4:{r=12;break}case 2:{r=14;break}case 1:break;case 7:{c[a>>2]=c[i>>2];a=a+4|0;i=i+4|0;r=10;break}case 6:{r=10;break}case 3:{r=13;break}default:{i=f;break a}}if((r|0)==10){c[a>>2]=c[i>>2];a=a+4|0;i=i+4|0;r=11}if((r|0)==11){c[a>>2]=c[i>>2];a=a+4|0;i=i+4|0;r=12}if((r|0)==12){c[a>>2]=c[i>>2];a=a+4|0;i=i+4|0;r=13}if((r|0)==13){c[a>>2]=c[i>>2];a=a+4|0;i=i+4|0;r=14}if((r|0)==14){r=0;c[a>>2]=c[i>>2];a=a+4|0;i=i+4|0}c[a>>2]=c[i>>2];i=f;a=a+4|0}while(0);if(!h)break;else{e=a+(j<<2)|0;i=i+m|0}}return}function fM(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;f=g;d=g+8|0;e=g+4|0;b=a+68|0;if((c[b>>2]|0)==0?(h=_J(6168)|0,c[b>>2]=h,(h|0)==0):0){Yv(c[(c[a>>2]|0)+628>>2]|0,217232,217256,f);h=0;i=g;return h|0}h=c[a>>2]|0;c[f>>2]=d;Yu(h,529,f)|0;h=c[a>>2]|0;c[f>>2]=e;Yu(h,532,f)|0;h=(dv(c[b>>2]|0,c[d>>2]|0,c[e>>2]|0)|0)>>>31^1;i=g;return h|0}function gM(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0;hb=i;i=i+384|0;$=hb+380|0;L=hb+376|0;v=hb+372|0;aa=hb+368|0;P=hb+364|0;C=hb+360|0;la=hb+356|0;Z=hb+352|0;J=hb+348|0;oa=hb+344|0;_=hb+340|0;K=hb+336|0;ba=hb+332|0;M=hb+328|0;w=hb+324|0;ca=hb+320|0;N=hb+316|0;x=hb+312|0;da=hb+308|0;O=hb+304|0;y=hb+300|0;ea=hb+296|0;Q=hb+292|0;z=hb+288|0;fa=hb+284|0;R=hb+280|0;A=hb+276|0;ga=hb+272|0;S=hb+268|0;B=hb+264|0;ha=hb+260|0;T=hb+256|0;D=hb+252|0;ia=hb+248|0;U=hb+244|0;E=hb+240|0;ja=hb+236|0;V=hb+232|0;F=hb+228|0;ka=hb+224|0;W=hb+220|0;G=hb+216|0;ma=hb+212|0;X=hb+208|0;H=hb+204|0;na=hb+200|0;Y=hb+196|0;I=hb+192|0;Qa=hb+188|0;Aa=hb+88|0;q=hb+84|0;Ra=hb+80|0;Ba=hb+76|0;r=hb+72|0;Sa=hb+68|0;Ca=hb+64|0;s=hb+60|0;Ta=hb+56|0;Da=hb+52|0;t=hb+48|0;Ua=hb+44|0;Ea=hb+16|0;u=hb;Va=hb+4|0;Fa=hb+8|0;pa=hb+12|0;Wa=hb+20|0;Ga=hb+24|0;qa=hb+28|0;Xa=hb+32|0;Ha=hb+36|0;ra=hb+40|0;Ya=hb+92|0;Ia=hb+96|0;sa=hb+100|0;Za=hb+104|0;Ja=hb+108|0;ta=hb+112|0;_a=hb+116|0;Ka=hb+120|0;ua=hb+124|0;$a=hb+128|0;La=hb+132|0;va=hb+136|0;ab=hb+140|0;Ma=hb+144|0;wa=hb+148|0;bb=hb+152|0;Na=hb+156|0;xa=hb+160|0;cb=hb+164|0;Oa=hb+168|0;ya=hb+172|0;db=hb+176|0;Pa=hb+180|0;za=hb+184|0;f=k+g|0;m=b+(f<<2)|0;n=b+(f<<1<<2)|0;f=b+(f*3<<2)|0;gb=(k<<2)+(g*3|0)|0;fb=(j*18|0)/4|0;if(!((h|g)&3)){if(h>>>0<=3){i=hb;return}u=g>>>2;q=a+68|0;r=u<<2;s=u*18|0;t=r+gb|0;while(1){e=u;a=b;o=l;k=m;j=n;p=f;while(1){g=d[o+16>>0]|0;eb=d[o+17>>0]|0;cv(c[q>>2]|0,d[o>>0]|0,g,eb,$,L,v);c[a>>2]=c[$>>2]|c[L>>2]<<8|c[v>>2]<<16|-16777216;cv(c[q>>2]|0,d[o+1>>0]|0,g,eb,aa,P,C);c[a+4>>2]=c[aa>>2]|c[P>>2]<<8|c[C>>2]<<16|-16777216;cv(c[q>>2]|0,d[o+2>>0]|0,g,eb,la,Z,J);c[a+8>>2]=c[la>>2]|c[Z>>2]<<8|c[J>>2]<<16|-16777216;cv(c[q>>2]|0,d[o+3>>0]|0,g,eb,oa,_,K);c[a+12>>2]=c[oa>>2]|c[_>>2]<<8|c[K>>2]<<16|-16777216;cv(c[q>>2]|0,d[o+4>>0]|0,g,eb,ba,M,w);c[k>>2]=c[ba>>2]|c[M>>2]<<8|c[w>>2]<<16|-16777216;cv(c[q>>2]|0,d[o+5>>0]|0,g,eb,ca,N,x);c[k+4>>2]=c[ca>>2]|c[N>>2]<<8|c[x>>2]<<16|-16777216;cv(c[q>>2]|0,d[o+6>>0]|0,g,eb,da,O,y);c[k+8>>2]=c[da>>2]|c[O>>2]<<8|c[y>>2]<<16|-16777216;cv(c[q>>2]|0,d[o+7>>0]|0,g,eb,ea,Q,z);c[k+12>>2]=c[ea>>2]|c[Q>>2]<<8|c[z>>2]<<16|-16777216;cv(c[q>>2]|0,d[o+8>>0]|0,g,eb,fa,R,A);c[j>>2]=c[fa>>2]|c[R>>2]<<8|c[A>>2]<<16|-16777216;cv(c[q>>2]|0,d[o+9>>0]|0,g,eb,ga,S,B);c[j+4>>2]=c[ga>>2]|c[S>>2]<<8|c[B>>2]<<16|-16777216;cv(c[q>>2]|0,d[o+10>>0]|0,g,eb,ha,T,D);c[j+8>>2]=c[ha>>2]|c[T>>2]<<8|c[D>>2]<<16|-16777216;cv(c[q>>2]|0,d[o+11>>0]|0,g,eb,ia,U,E);c[j+12>>2]=c[ia>>2]|c[U>>2]<<8|c[E>>2]<<16|-16777216;cv(c[q>>2]|0,d[o+12>>0]|0,g,eb,ja,V,F);c[p>>2]=c[ja>>2]|c[V>>2]<<8|c[F>>2]<<16|-16777216;cv(c[q>>2]|0,d[o+13>>0]|0,g,eb,ka,W,G);c[p+4>>2]=c[ka>>2]|c[W>>2]<<8|c[G>>2]<<16|-16777216;cv(c[q>>2]|0,d[o+14>>0]|0,g,eb,ma,X,H);c[p+8>>2]=c[ma>>2]|c[X>>2]<<8|c[H>>2]<<16|-16777216;cv(c[q>>2]|0,d[o+15>>0]|0,g,eb,na,Y,I);c[p+12>>2]=c[na>>2]|c[Y>>2]<<8|c[I>>2]<<16|-16777216;e=e+-1|0;if(!e)break;else{a=a+16|0;o=o+18|0;k=k+16|0;j=j+16|0;p=p+16|0}}h=h+-4|0;if(h>>>0<=3)break;else{b=b+(t<<2)|0;l=l+(s+fb)|0;m=m+(r+gb<<2)|0;n=n+(r+gb<<2)|0;f=f+(r+gb<<2)|0}}i=hb;return}if(!h){i=hb;return}p=(g|0)==0;o=a+68|0;e=l;while(1){a:do if(!p){k=g;j=e;a=f;while(1){e=d[j+16>>0]|0;f=d[j+17>>0]|0;if((k|0)==3)eb=16;else if((k|0)==2)eb=21;else if((k|0)!=1){if((h|0)==3)eb=13;else if((h|0)==2)eb=14;else if((h|0)!=1){cv(c[o>>2]|0,d[j+15>>0]|0,e,f,Qa,Aa,q);c[a+12>>2]=c[Qa>>2]|c[Aa>>2]<<8|c[q>>2]<<16|-16777216;eb=13}if((eb|0)==13){cv(c[o>>2]|0,d[j+11>>0]|0,e,f,Ra,Ba,r);c[n+12>>2]=c[Ra>>2]|c[Ba>>2]<<8|c[r>>2]<<16|-16777216;eb=14}if((eb|0)==14){cv(c[o>>2]|0,d[j+7>>0]|0,e,f,Sa,Ca,s);c[m+12>>2]=c[Sa>>2]|c[Ca>>2]<<8|c[s>>2]<<16|-16777216}cv(c[o>>2]|0,d[j+3>>0]|0,e,f,Ta,Da,t);c[b+12>>2]=c[Ta>>2]|c[Da>>2]<<8|c[t>>2]<<16|-16777216;eb=16}if((eb|0)==16){eb=0;if((h|0)==3)eb=18;else if((h|0)==2)eb=19;else if((h|0)!=1){cv(c[o>>2]|0,d[j+14>>0]|0,e,f,Ua,Ea,u);c[a+8>>2]=c[Ua>>2]|c[Ea>>2]<<8|c[u>>2]<<16|-16777216;eb=18}if((eb|0)==18){cv(c[o>>2]|0,d[j+10>>0]|0,e,f,Va,Fa,pa);c[n+8>>2]=c[Va>>2]|c[Fa>>2]<<8|c[pa>>2]<<16|-16777216;eb=19}if((eb|0)==19){cv(c[o>>2]|0,d[j+6>>0]|0,e,f,Wa,Ga,qa);c[m+8>>2]=c[Wa>>2]|c[Ga>>2]<<8|c[qa>>2]<<16|-16777216}cv(c[o>>2]|0,d[j+2>>0]|0,e,f,Xa,Ha,ra);c[b+8>>2]=c[Xa>>2]|c[Ha>>2]<<8|c[ra>>2]<<16|-16777216;eb=21}if((eb|0)==21){eb=0;if((h|0)==2)eb=24;else if((h|0)==3)eb=23;else if((h|0)!=1){cv(c[o>>2]|0,d[j+13>>0]|0,e,f,Ya,Ia,sa);c[a+4>>2]=c[Ya>>2]|c[Ia>>2]<<8|c[sa>>2]<<16|-16777216;eb=23}if((eb|0)==23){cv(c[o>>2]|0,d[j+9>>0]|0,e,f,Za,Ja,ta);c[n+4>>2]=c[Za>>2]|c[Ja>>2]<<8|c[ta>>2]<<16|-16777216;eb=24}if((eb|0)==24){eb=0;cv(c[o>>2]|0,d[j+5>>0]|0,e,f,_a,Ka,ua);c[m+4>>2]=c[_a>>2]|c[Ka>>2]<<8|c[ua>>2]<<16|-16777216}cv(c[o>>2]|0,d[j+1>>0]|0,e,f,$a,La,va);c[b+4>>2]=c[$a>>2]|c[La>>2]<<8|c[va>>2]<<16|-16777216}if((h|0)==2)eb=29;else if((h|0)==3)eb=28;else if((h|0)!=1){cv(c[o>>2]|0,d[j+12>>0]|0,e,f,ab,Ma,wa);c[a>>2]=c[ab>>2]|c[Ma>>2]<<8|c[wa>>2]<<16|-16777216;eb=28}if((eb|0)==28){cv(c[o>>2]|0,d[j+8>>0]|0,e,f,bb,Na,xa);c[n>>2]=c[bb>>2]|c[Na>>2]<<8|c[xa>>2]<<16|-16777216;eb=29}if((eb|0)==29){eb=0;cv(c[o>>2]|0,d[j+4>>0]|0,e,f,cb,Oa,ya);c[m>>2]=c[cb>>2]|c[Oa>>2]<<8|c[ya>>2]<<16|-16777216}cv(c[o>>2]|0,d[j>>0]|0,e,f,db,Pa,za);c[b>>2]=c[db>>2]|c[Pa>>2]<<8|c[za>>2]<<16|-16777216;if(k>>>0<4){e=b;f=j;break}b=b+16|0;m=m+16|0;n=n+16|0;f=a+16|0;k=k+-4|0;e=j+18|0;if(!k)break a;else{j=e;a=f}}b=e+(k<<2)|0;e=f+18|0;m=m+(k<<2)|0;n=n+(k<<2)|0;f=a+(k<<2)|0}while(0);if(h>>>0<5){eb=35;break}h=h+-4|0;if(!h){eb=35;break}else{b=b+(gb<<2)|0;e=e+fb|0;m=m+(gb<<2)|0;n=n+(gb<<2)|0;f=f+(gb<<2)|0}}if((eb|0)==35){i=hb;return}}function hM(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;la=i;i=i+192|0;H=la+188|0;z=la+184|0;r=la+180|0;I=la+176|0;D=la+172|0;w=la+168|0;N=la+164|0;F=la+160|0;x=la+156|0;O=la+152|0;G=la+148|0;y=la+144|0;J=la+140|0;A=la+136|0;s=la+132|0;K=la+128|0;B=la+124|0;t=la+120|0;L=la+116|0;C=la+112|0;u=la+108|0;M=la+104|0;E=la+100|0;v=la+96|0;aa=la+92|0;U=la+40|0;o=la+36|0;ba=la+32|0;V=la+28|0;p=la+24|0;ca=la+20|0;W=la+12|0;q=la+8|0;da=la+4|0;X=la;P=la+16|0;ea=la+44|0;Y=la+48|0;Q=la+52|0;fa=la+56|0;Z=la+60|0;R=la+64|0;ga=la+68|0;_=la+72|0;S=la+76|0;ha=la+80|0;$=la+84|0;T=la+88|0;f=b+(k+g<<2)|0;ka=(k<<1)+g|0;ja=(j*10|0)/4|0;if(!(h&1|g&3)){if(h>>>0<=1){i=la;return}q=g>>>2;j=a+68|0;n=q<<2;o=q*10|0;p=n+ka|0;while(1){e=q;k=b;m=l;a=f;while(1){_=d[m+8>>0]|0;g=d[m+9>>0]|0;cv(c[j>>2]|0,d[m>>0]|0,_,g,H,z,r);c[k>>2]=c[H>>2]|c[z>>2]<<8|c[r>>2]<<16|-16777216;cv(c[j>>2]|0,d[m+1>>0]|0,_,g,I,D,w);c[k+4>>2]=c[I>>2]|c[D>>2]<<8|c[w>>2]<<16|-16777216;cv(c[j>>2]|0,d[m+2>>0]|0,_,g,N,F,x);c[k+8>>2]=c[N>>2]|c[F>>2]<<8|c[x>>2]<<16|-16777216;cv(c[j>>2]|0,d[m+3>>0]|0,_,g,O,G,y);c[k+12>>2]=c[O>>2]|c[G>>2]<<8|c[y>>2]<<16|-16777216;cv(c[j>>2]|0,d[m+4>>0]|0,_,g,J,A,s);c[a>>2]=c[J>>2]|c[A>>2]<<8|c[s>>2]<<16|-16777216;cv(c[j>>2]|0,d[m+5>>0]|0,_,g,K,B,t);c[a+4>>2]=c[K>>2]|c[B>>2]<<8|c[t>>2]<<16|-16777216;cv(c[j>>2]|0,d[m+6>>0]|0,_,g,L,C,u);c[a+8>>2]=c[L>>2]|c[C>>2]<<8|c[u>>2]<<16|-16777216;cv(c[j>>2]|0,d[m+7>>0]|0,_,g,M,E,v);c[a+12>>2]=c[M>>2]|c[E>>2]<<8|c[v>>2]<<16|-16777216;e=e+-1|0;if(!e)break;else{k=k+16|0;m=m+10|0;a=a+16|0}}h=h+-2|0;if(h>>>0<=1)break;else{b=b+(p<<2)|0;l=l+(o+ja)|0;f=f+(n+ka<<2)|0}}i=la;return}if(!h){i=la;return}n=(g|0)==0;a=a+68|0;e=b;while(1){a:do if(!n){j=(h|0)==1;b=g;while(1){k=d[l+8>>0]|0;m=d[l+9>>0]|0;if((b|0)==3)ia=15;else if((b|0)==2)ia=18;else if((b|0)!=1){if(!j){cv(c[a>>2]|0,d[l+7>>0]|0,k,m,aa,U,o);c[f+12>>2]=c[aa>>2]|c[U>>2]<<8|c[o>>2]<<16|-16777216}cv(c[a>>2]|0,d[l+3>>0]|0,k,m,ba,V,p);c[e+12>>2]=c[ba>>2]|c[V>>2]<<8|c[p>>2]<<16|-16777216;ia=15}if((ia|0)==15){if(!j){cv(c[a>>2]|0,d[l+6>>0]|0,k,m,ca,W,q);c[f+8>>2]=c[ca>>2]|c[W>>2]<<8|c[q>>2]<<16|-16777216}cv(c[a>>2]|0,d[l+2>>0]|0,k,m,da,X,P);c[e+8>>2]=c[da>>2]|c[X>>2]<<8|c[P>>2]<<16|-16777216;ia=18}if((ia|0)==18){ia=0;if(!j){cv(c[a>>2]|0,d[l+5>>0]|0,k,m,ea,Y,Q);c[f+4>>2]=c[ea>>2]|c[Y>>2]<<8|c[Q>>2]<<16|-16777216}cv(c[a>>2]|0,d[l+1>>0]|0,k,m,fa,Z,R);c[e+4>>2]=c[fa>>2]|c[Z>>2]<<8|c[R>>2]<<16|-16777216}if(!j){cv(c[a>>2]|0,d[l+4>>0]|0,k,m,ga,_,S);c[f>>2]=c[ga>>2]|c[_>>2]<<8|c[S>>2]<<16|-16777216}cv(c[a>>2]|0,d[l>>0]|0,k,m,ha,$,T);c[e>>2]=c[ha>>2]|c[$>>2]<<8|c[T>>2]<<16|-16777216;if(b>>>0<4){k=b;break}e=e+16|0;f=f+16|0;b=b+-4|0;l=l+10|0;if(!b)break a}e=e+(k<<2)|0;l=l+10|0;f=f+(k<<2)|0}while(0);if(h>>>0<3){ia=28;break}h=h+-2|0;if(!h){ia=28;break}else{l=l+ja|0;e=e+(ka<<2)|0;f=f+(ka<<2)|0}}if((ia|0)==28){i=la;return}}function iM(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;O=i;i=i+96|0;H=O+80|0;A=O+76|0;t=O+72|0;I=O+68|0;E=O+64|0;x=O+60|0;M=O+56|0;F=O+52|0;y=O+48|0;N=O+44|0;G=O+40|0;z=O+12|0;J=O;B=O+4|0;u=O+8|0;K=O+16|0;C=O+20|0;v=O+24|0;L=O+28|0;D=O+32|0;w=O+36|0;r=g>>>2;s=(r|0)==0;p=g&3;q=(p|0)==0;m=a+68|0;n=r*6|0;o=r<<2;e=b;a=l;while(1){if(s)f=a;else{f=a+n|0;g=r;b=e;while(1){Q=d[a+4>>0]|0;l=d[a+5>>0]|0;cv(c[m>>2]|0,d[a>>0]|0,Q,l,H,A,t);c[b>>2]=c[H>>2]|c[A>>2]<<8|c[t>>2]<<16|-16777216;cv(c[m>>2]|0,d[a+1>>0]|0,Q,l,I,E,x);c[b+4>>2]=c[I>>2]|c[E>>2]<<8|c[x>>2]<<16|-16777216;cv(c[m>>2]|0,d[a+2>>0]|0,Q,l,M,F,y);c[b+8>>2]=c[M>>2]|c[F>>2]<<8|c[y>>2]<<16|-16777216;cv(c[m>>2]|0,d[a+3>>0]|0,Q,l,N,G,z);c[b+12>>2]=c[N>>2]|c[G>>2]<<8|c[z>>2]<<16|-16777216;g=g+-1|0;if(!g)break;else{b=b+16|0;a=a+6|0}}e=e+(o<<2)|0}if(!q){a=d[f+4>>0]|0;g=d[f+5>>0]|0;if((p|0)==2)P=9;else if((p|0)==1)P=10;else if((p|0)==3){cv(c[m>>2]|0,d[f+2>>0]|0,a,g,J,B,u);c[e+8>>2]=c[J>>2]|c[B>>2]<<8|c[u>>2]<<16|-16777216;P=9}if((P|0)==9){cv(c[m>>2]|0,d[f+1>>0]|0,a,g,K,C,v);c[e+4>>2]=c[K>>2]|c[C>>2]<<8|c[v>>2]<<16|-16777216;P=10}if((P|0)==10){P=0;cv(c[m>>2]|0,d[f>>0]|0,a,g,L,D,w);c[e>>2]=c[L>>2]|c[D>>2]<<8|c[w>>2]<<16|-16777216}e=e+(p<<2)|0;f=f+6|0}h=h+-1|0;if(!h)break;else{e=e+(k<<2)|0;a=f+j|0}}i=O;return}function jM(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;W=i;i=i+112|0;H=W+104|0;B=W+100|0;v=W+96|0;I=W+92|0;E=W+88|0;y=W+84|0;L=W+80|0;F=W+76|0;z=W+72|0;M=W+68|0;G=W+64|0;A=W+60|0;J=W+56|0;C=W+52|0;w=W+20|0;K=W;D=W+4|0;x=W+8|0;R=W+12|0;P=W+16|0;N=W+24|0;S=W+28|0;Q=W+32|0;O=W+36|0;V=W+40|0;U=W+44|0;T=W+48|0;u=(k<<1)+g|0;r=((j|0)/2|0)*6|0;if(h>>>0>1){s=g>>>0>1;t=a+68|0;o=g+-2|0;p=o>>>1;q=p<<1;o=o-q|0;p=(p*6|0)+6|0;q=q+2|0;e=b;m=h;b=b+(k+g<<2)|0;while(1){if(s){j=b+(q<<2)|0;f=g;k=e;n=l;while(1){Y=d[n+4>>0]|0;X=d[n+5>>0]|0;cv(c[t>>2]|0,d[n>>0]|0,Y,X,H,B,v);c[k>>2]=c[H>>2]|c[B>>2]<<8|c[v>>2]<<16|-16777216;cv(c[t>>2]|0,d[n+1>>0]|0,Y,X,I,E,y);c[k+4>>2]=c[I>>2]|c[E>>2]<<8|c[y>>2]<<16|-16777216;cv(c[t>>2]|0,d[n+2>>0]|0,Y,X,L,F,z);c[b>>2]=c[L>>2]|c[F>>2]<<8|c[z>>2]<<16|-16777216;cv(c[t>>2]|0,d[n+3>>0]|0,Y,X,M,G,A);c[b+4>>2]=c[M>>2]|c[G>>2]<<8|c[A>>2]<<16|-16777216;f=f+-2|0;if(f>>>0<=1)break;else{k=k+8|0;n=n+6|0;b=b+8|0}}f=o;e=e+(q<<2)|0;l=l+p|0}else{f=g;j=b}if((f|0)==1){X=d[l+4>>0]|0;Y=d[l+5>>0]|0;cv(c[t>>2]|0,d[l>>0]|0,X,Y,J,C,w);c[e>>2]=c[J>>2]|c[C>>2]<<8|c[w>>2]<<16|-16777216;cv(c[t>>2]|0,d[l+2>>0]|0,X,Y,K,D,x);c[j>>2]=c[K>>2]|c[D>>2]<<8|c[x>>2]<<16|-16777216;e=e+4|0;l=l+6|0;j=j+4|0}e=e+(u<<2)|0;l=l+r|0;m=m+-2|0;if(m>>>0<=1)break;else b=j+(u<<2)|0}f=h&1}else{e=b;f=h}if((f|0)!=1){i=W;return}if(g>>>0>1){n=a+68|0;o=g+-2|0;p=o>>>1;j=p<<1;p=(p*6|0)+6|0;k=j+2|0;f=g;b=e;m=l;while(1){M=d[m+4>>0]|0;Y=d[m+5>>0]|0;cv(c[n>>2]|0,d[m>>0]|0,M,Y,R,P,N);c[b>>2]=c[R>>2]|c[P>>2]<<8|c[N>>2]<<16|-16777216;cv(c[n>>2]|0,d[m+1>>0]|0,M,Y,S,Q,O);c[b+4>>2]=c[S>>2]|c[Q>>2]<<8|c[O>>2]<<16|-16777216;f=f+-2|0;if(f>>>0<=1)break;else{b=b+8|0;m=m+6|0}}f=o-j|0;e=e+(k<<2)|0;l=l+p|0}else f=g;if((f|0)!=1){i=W;return}cv(c[a+68>>2]|0,d[l>>0]|0,d[l+4>>0]|0,d[l+5>>0]|0,V,U,T);c[e>>2]=c[V>>2]|c[U>>2]<<8|c[T>>2]<<16|-16777216;i=W;return}function kM(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+48|0;z=C+32|0;w=C+28|0;t=C+24|0;A=C+20|0;x=C+16|0;u=C+8|0;B=C+4|0;y=C;v=C+12|0;q=(j<<2|0)/2|0;r=g>>>1;s=(r|0)==0;p=(g&1|0)==0;m=a+68|0;n=r<<2;o=r<<1;f=b;g=l;while(1){if(s)e=g;else{e=g+n|0;a=r;j=f;while(1){l=d[g+2>>0]|0;b=d[g+3>>0]|0;cv(c[m>>2]|0,d[g>>0]|0,l,b,z,w,t);c[j>>2]=c[z>>2]|c[w>>2]<<8|c[t>>2]<<16|-16777216;cv(c[m>>2]|0,d[g+1>>0]|0,l,b,A,x,u);c[j+4>>2]=c[A>>2]|c[x>>2]<<8|c[u>>2]<<16|-16777216;a=a+-1|0;if(!a)break;else{g=g+4|0;j=j+8|0}}f=f+(o<<2)|0}if(!p){cv(c[m>>2]|0,d[e>>0]|0,d[e+2>>0]|0,d[e+3>>0]|0,B,y,v);c[f>>2]=c[B>>2]|c[y>>2]<<8|c[v>>2]<<16|-16777216;f=f+4|0;e=e+4|0}h=h+-1|0;if(!h)break;else{f=f+(k<<2)|0;g=e+q|0}}i=C;return} -function uca(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+32|0;r=s+16|0;q=s;o=s+4|0;p=s+8|0;g=b+52|0;a:do if(a[g>>0]|0){f=b+48|0;e=c[f>>2]|0;if(d){c[f>>2]=-1;a[g>>0]=0}}else{e=c[b+44>>2]|0;e=(e|0)>1?e:1;if((e|0)>0){f=b+32|0;h=0;do{g=hd(c[f>>2]|0)|0;if((g|0)==-1){e=-1;break a}a[r+h>>0]=g;h=h+1|0}while((h|0)<(e|0))}b:do if(!(a[b+53>>0]|0)){k=b+40|0;l=b+36|0;m=q+4|0;n=b+32|0;while(1){g=c[k>>2]|0;f=g;h=c[f>>2]|0;f=c[f+4>>2]|0;t=c[l>>2]|0;j=r+e|0;g=Wd[c[(c[t>>2]|0)+16>>2]&15](t,g,r,j,o,q,m,p)|0;if((g|0)==2){e=-1;break a}else if((g|0)==3)break;else if((g|0)!=1)break b;t=c[k>>2]|0;c[t>>2]=h;c[t+4>>2]=f;if((e|0)==8){e=-1;break a}h=hd(c[n>>2]|0)|0;if((h|0)==-1){e=-1;break a}a[j>>0]=h;e=e+1|0}c[q>>2]=a[r>>0]}else c[q>>2]=a[r>>0];while(0);if(d){e=c[q>>2]|0;c[b+48>>2]=e;break}f=b+32|0;while(1){if((e|0)<=0)break;e=e+-1|0;if((Rc(a[r+e>>0]|0,c[f>>2]|0)|0)==-1){e=-1;break a}}e=c[q>>2]|0}while(0);i=s;return e|0}function vca(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+32|0;s=t+16|0;r=t+8|0;p=t;q=t+4|0;h=b+52|0;a:do if(a[h>>0]|0){g=b+48|0;f=c[g>>2]|0;if(e){c[g>>2]=-1;a[h>>0]=0}}else{f=c[b+44>>2]|0;f=(f|0)>1?f:1;if((f|0)>0){g=b+32|0;j=0;do{h=hd(c[g>>2]|0)|0;if((h|0)==-1){f=-1;break a}a[s+j>>0]=h;j=j+1|0}while((j|0)<(f|0))}b:do if(!(a[b+53>>0]|0)){l=b+40|0;m=b+36|0;n=r+1|0;o=b+32|0;while(1){h=c[l>>2]|0;g=h;j=c[g>>2]|0;g=c[g+4>>2]|0;u=c[m>>2]|0;k=s+f|0;h=Wd[c[(c[u>>2]|0)+16>>2]&15](u,h,s,k,p,r,n,q)|0;if((h|0)==2){f=-1;break a}else if((h|0)==3)break;else if((h|0)!=1)break b;u=c[l>>2]|0;c[u>>2]=j;c[u+4>>2]=g;if((f|0)==8){f=-1;break a}j=hd(c[o>>2]|0)|0;if((j|0)==-1){f=-1;break a}a[k>>0]=j;f=f+1|0}a[r>>0]=a[s>>0]|0}else a[r>>0]=a[s>>0]|0;while(0);if(e){f=a[r>>0]|0;c[b+48>>2]=f&255}else{g=b+32|0;while(1){if((f|0)<=0)break;f=f+-1|0;if((Rc(d[s+f>>0]|0,c[g>>2]|0)|0)==-1){f=-1;break a}}f=a[r>>0]|0}f=f&255}while(0);i=t;return f|0}function wca(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=b+12|0;c[h>>2]=0;c[b+16>>2]=f;do if(d){g=f+112|0;if((a[g>>0]|0)==0&d>>>0<29){a[g>>0]=1;break}else{f=jda(d<<2)|0;break}}else f=0;while(0);c[b>>2]=f;e=f+(e<<2)|0;c[b+8>>2]=e;c[b+4>>2]=e;c[h>>2]=f+(d<<2);return}function xca(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=c[d>>2]|0;do{if(!a)a=0;else{c[a>>2]=0;a=c[d>>2]|0}a=a+4|0;c[d>>2]=a;b=b+-1|0}while((b|0)!=0);return}function yca(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;g=a+4|0;d=b+4|0;f=(c[g>>2]|0)-e|0;h=(c[d>>2]|0)+(0-(f>>2)<<2)|0;c[d>>2]=h;qfa(h|0,e|0,f|0)|0;f=c[a>>2]|0;c[a>>2]=c[d>>2];c[d>>2]=f;f=b+8|0;e=c[g>>2]|0;c[g>>2]=c[f>>2];c[f>>2]=e;f=a+8|0;a=b+12|0;e=c[f>>2]|0;c[f>>2]=c[a>>2];c[a>>2]=e;c[b>>2]=c[d>>2];return}function zca(b){b=b|0;var d=0,e=0,f=0;d=c[b+4>>2]|0;e=b+8|0;f=c[e>>2]|0;if((f|0)!=(d|0))c[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);e=c[b>>2]|0;do if(e){d=c[b+16>>2]|0;if((d|0)==(e|0)){a[d+112>>0]=0;break}else{nda(e);break}}while(0);return}function Aca(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=bfa(a,b,c)|0;return b|0}function Bca(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=cfa(a,b,c)|0;return b|0}function Cca(a,b){a=a|0;b=b|0;return (a+-48|0)>>>0<10|0}function Dca(a,b){a=a|0;b=b|0;return yea(a)|0}function Eca(a,b){a=+a;b=b|0;return +(+Nea(a,b))}function Fca(a,b,c){a=a|0;b=b|0;c=c|0;return Gca(0,a,b,(c|0)!=0?c:365576)|0}function Gca(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;g=k;c[g>>2]=b;j=(f|0)==0?365584:f;f=c[j>>2]|0;a:do if(!d){if(!f){e=0;i=k;return e|0}}else{if(!b){c[g>>2]=g;b=g}if(!e){e=-2;i=k;return e|0}do if(!f){f=a[d>>0]|0;g=f&255;if(f<<24>>24>-1){c[b>>2]=g;e=f<<24>>24!=0&1;i=k;return e|0}else{f=g+-194|0;if(f>>>0>50)break a;g=e+-1|0;f=c[365368+(f<<2)>>2]|0;d=d+1|0;break}}else g=e;while(0);b:do if(g){h=a[d>>0]|0;l=(h&255)>>>3;if((l+-16|l+(f>>26))>>>0>7)break a;while(1){d=d+1|0;f=(h&255)+-128|f<<6;g=g+-1|0;if((f|0)>=0)break;if(!g)break b;h=a[d>>0]|0;if((h&-64)<<24>>24!=-128)break a}c[j>>2]=0;c[b>>2]=f;e=e-g|0;i=k;return e|0}while(0);c[j>>2]=f;e=-2;i=k;return e|0}while(0);c[j>>2]=0;c[(md()|0)>>2]=84;e=-1;i=k;return e|0}function Hca(a){a=a|0;if(!a)a=1;else a=(c[a>>2]|0)==0;return a&1|0}function Ica(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+1040|0;l=p+8|0;o=p;h=c[b>>2]|0;c[o>>2]=h;n=(a|0)!=0;e=n?e:256;g=n?a:l;a:do if((h|0)!=0&(e|0)!=0){j=e;k=d;e=0;while(1){a=k>>>2;d=a>>>0>=j>>>0;if(!(d|k>>>0>131)){d=k;m=7;break a}h=d?j:a;d=k-h|0;h=Jca(g,o,h,f)|0;if((h|0)==-1){e=-1;break a}if((g|0)==(l|0))g=l;else{j=j-h|0;g=g+(h<<2)|0}e=h+e|0;h=c[o>>2]|0;if((h|0)!=0&(j|0)!=0)k=d;else{m=7;break}}}else{j=e;e=0;m=7}while(0);b:do if((m|0)==7)if((h|0)!=0&(j|0)!=0&(d|0)!=0){while(1){a=Gca(g,h,d,f)|0;if((a+2|0)>>>0<3)break;h=(c[o>>2]|0)+a|0;c[o>>2]=h;j=j+-1|0;e=e+1|0;if(!((j|0)!=0&(d|0)!=(a|0)))break b;else{d=d-a|0;g=g+4|0}}if(!a){c[o>>2]=0;break}else if((a|0)==-1){e=-1;break}else{c[f>>2]=0;break}}while(0);if(!n){i=p;return e|0}c[b>>2]=c[o>>2];i=p;return e|0}function Jca(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=c[e>>2]|0;if((g|0)!=0?(i=c[g>>2]|0,(i|0)!=0):0)if(!b){g=f;j=i;l=16}else{c[g>>2]=0;g=f;j=i;k=h;l=36}else if(!b){g=f;l=7}else{g=f;l=6}a:while(1)if((l|0)==6){if(!g){l=26;break}while(1){i=a[h>>0]|0;b:do if(((i&255)+-1|0)>>>0<127?(h&3|0)==0&g>>>0>4:0){while(1){i=c[h>>2]|0;if((i+-16843009|i)&-2139062144){i=i&255;break b}c[b>>2]=i&255;c[b+4>>2]=d[h+1>>0];c[b+8>>2]=d[h+2>>0];i=h+4|0;j=b+16|0;c[b+12>>2]=d[h+3>>0];g=g+-4|0;if(g>>>0>4){b=j;h=i}else{h=i;b=j;break}}i=a[h>>0]|0}while(0);i=i&255;if((i+-1|0)>>>0>=127)break;h=h+1|0;c[b>>2]=i;g=g+-1|0;if(!g){l=26;break a}else b=b+4|0}i=i+-194|0;if(i>>>0>50){l=47;break}j=c[365368+(i<<2)>>2]|0;k=h+1|0;l=36;continue}else if((l|0)==7){i=a[h>>0]|0;if(((i&255)+-1|0)>>>0<127?(h&3|0)==0:0){i=c[h>>2]|0;if(!((i+-16843009|i)&-2139062144))do{h=h+4|0;g=g+-4|0;i=c[h>>2]|0}while(((i+-16843009|i)&-2139062144|0)==0);i=i&255}i=i&255;if((i+-1|0)>>>0<127){g=g+-1|0;h=h+1|0;l=7;continue}i=i+-194|0;if(i>>>0>50){l=47;break}j=c[365368+(i<<2)>>2]|0;h=h+1|0;l=16;continue}else if((l|0)==16){l=(d[h>>0]|0)>>>3;if((l+-16|l+(j>>26))>>>0>7){l=17;break}i=h+1|0;if(j&33554432){if((a[i>>0]&-64)<<24>>24!=-128){l=20;break}i=h+2|0;if(!(j&524288))h=i;else{if((a[i>>0]&-64)<<24>>24!=-128){l=23;break}h=h+3|0}}else h=i;g=g+-1|0;l=7;continue}else if((l|0)==36){i=d[k>>0]|0;l=i>>>3;if((l+-16|l+(j>>26))>>>0>7){l=37;break}h=k+1|0;j=i+-128|j<<6;if((j|0)<0){i=d[h>>0]|0;if((i&192|0)!=128){l=40;break}h=k+2|0;i=i+-128|j<<6;if((i|0)<0){h=d[h>>0]|0;if((h&192|0)!=128){l=43;break}i=h+-128|i<<6;h=k+3|0}}else i=j;c[b>>2]=i;b=b+4|0;g=g+-1|0;l=6;continue}if((l|0)==17){i=j;h=h+-1|0;l=46}else if((l|0)==20){i=j;h=h+-1|0;l=46}else if((l|0)==23){i=j;h=h+-1|0;l=46}else if((l|0)==26){c[e>>2]=h;l=f;return l|0}else if((l|0)==37){i=j;h=k+-1|0;l=46}else if((l|0)==40){i=j;h=k+-1|0;l=46}else if((l|0)==43){h=k+-1|0;l=46}if((l|0)==46)if(!i)l=47;if((l|0)==47)if(!(a[h>>0]|0)){if(b){c[b>>2]=0;c[e>>2]=0}l=f-g|0;return l|0}c[(md()|0)>>2]=84;if(!b){l=-1;return l|0}c[e>>2]=h;l=-1;return l|0}function Kca(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k;c[g>>2]=b;if(!e){e=0;i=k;return e|0}do if(f){if(!b){c[g>>2]=g;j=g}else j=b;g=a[e>>0]|0;b=g&255;if(g<<24>>24>-1){c[j>>2]=b;e=g<<24>>24!=0&1;i=k;return e|0}g=b+-194|0;if(g>>>0<=50){b=e+1|0;h=c[365368+(g<<2)>>2]|0;if(f>>>0<4?(h&-2147483648>>>((f*6|0)+-6|0)|0)!=0:0)break;g=d[b>>0]|0;f=g>>>3;if((f+-16|f+(h>>26))>>>0<=7){g=g+-128|h<<6;if((g|0)>=0){c[j>>2]=g;e=2;i=k;return e|0}b=d[e+2>>0]|0;if((b&192|0)==128){b=b+-128|g<<6;if((b|0)>=0){c[j>>2]=b;e=3;i=k;return e|0}g=d[e+3>>0]|0;if((g&192|0)==128){c[j>>2]=g+-128|b<<6;e=4;i=k;return e|0}}}}}while(0);c[(md()|0)>>2]=84;e=-1;i=k;return e|0}function Lca(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+272|0;j=n+8|0;m=n;g=c[b>>2]|0;c[m>>2]=g;l=(a|0)!=0;f=l?e:256;a=l?a:j;a:do if((g|0)!=0&(f|0)!=0){h=f;f=0;while(1){e=d>>>0>=h>>>0;if(!(e|d>>>0>32)){k=7;break a}g=e?h:d;d=d-g|0;g=Mca(a,m,g,0)|0;if((g|0)==-1){f=-1;break a}if((a|0)==(j|0))a=j;else{h=h-g|0;a=a+g|0}f=g+f|0;g=c[m>>2]|0;if(!((g|0)!=0&(h|0)!=0)){k=7;break}}}else{h=f;f=0;k=7}while(0);b:do if((k|0)==7)if((g|0)!=0&(h|0)!=0&(d|0)!=0){while(1){e=Qea(a,c[g>>2]|0,0)|0;if((e+1|0)>>>0<2)break;g=(c[m>>2]|0)+4|0;c[m>>2]=g;d=d+-1|0;f=f+1|0;if(!((h|0)!=(e|0)&(d|0)!=0))break b;else{h=h-e|0;a=a+e|0}}if(!e)c[m>>2]=0;else f=-1}while(0);if(!l){i=n;return f|0}c[b>>2]=c[m>>2];i=n;return f|0}function Mca(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=i;i=i+16|0;n=o;if(!b){g=c[d>>2]|0;f=c[g>>2]|0;if(!f){d=0;i=o;return d|0}else h=0;while(1){if(f>>>0>127){f=Qea(n,f,0)|0;if((f|0)==-1){m=-1;j=26;break}}else f=1;h=f+h|0;g=g+4|0;f=c[g>>2]|0;if(!f){m=h;j=26;break}}if((j|0)==26){i=o;return m|0}}a:do if(e>>>0>3){f=e;h=c[d>>2]|0;while(1){g=c[h>>2]|0;if((g+-1|0)>>>0>126){if(!g){k=b;l=f;break}g=Qea(b,g,0)|0;if((g|0)==-1){m=-1;j=26;break}b=b+g|0;f=f-g|0}else{a[b>>0]=g;b=b+1|0;f=f+-1|0;h=c[d>>2]|0}h=h+4|0;c[d>>2]=h;if(f>>>0<=3)break a}if((j|0)==26){i=o;return m|0}a[k>>0]=0;c[d>>2]=0;d=e-l|0;i=o;return d|0}else f=e;while(0);if(!f){d=e;i=o;return d|0}g=c[d>>2]|0;while(1){h=c[g>>2]|0;if((h+-1|0)>>>0>126){if(!h){p=b;q=f;j=19;break}h=Qea(n,h,0)|0;if((h|0)==-1){m=-1;j=26;break}if(f>>>0>>0){r=f;j=22;break}Qea(b,c[g>>2]|0,0)|0;b=b+h|0;f=f-h|0}else{a[b>>0]=h;b=b+1|0;f=f+-1|0;g=c[d>>2]|0}g=g+4|0;c[d>>2]=g;if(!f){m=e;j=26;break}}if((j|0)==19){a[p>>0]=0;c[d>>2]=0;d=e-q|0;i=o;return d|0}else if((j|0)==22){d=e-r|0;i=o;return d|0}else if((j|0)==26){i=o;return m|0}return 0}function Nca(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=a+84|0;h=c[g>>2]|0;e=d+256|0;f=efa(h,0,e)|0;if(f)e=f-h|0;d=e>>>0>>0?e:d;qfa(b|0,h|0,d|0)|0;c[a+4>>2]=h+d;b=h+e|0;c[a+8>>2]=b;c[g>>2]=b;return d|0}function Oca(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=d;d=Rca(a,b,f)|0;i=e;return d|0}function Pca(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j;f=qea(240)|0;do if(f){c[e>>2]=c[d>>2];e=Zea(f,240,b,e)|0;if(e>>>0<240){b=tea(f,e+1|0)|0;c[a>>2]=(b|0)!=0?b:f;break}rea(f);if((e|0)>=0?(h=e+1|0,g=qea(h)|0,c[a>>2]=g,(g|0)!=0):0)e=Zea(g,h,b,d)|0;else e=-1}else e=-1;while(0);i=j;return e|0}function Qca(e,f,j){e=e|0;f=f|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=i;i=i+304|0;I=P+16|0;K=P;J=P+33|0;L=P+8|0;z=P+32|0;k=a[f>>0]|0;if(!(k<<24>>24)){O=0;i=P;return O|0}M=e+4|0;N=e+100|0;C=e+108|0;D=e+8|0;E=J+10|0;F=J+33|0;G=K+4|0;A=J+46|0;B=J+94|0;q=k;k=0;t=0;m=0;l=0;a:while(1){b:do if(!(wea(q&255)|0)){o=(a[f>>0]|0)==37;c:do if(o){q=f+1|0;n=a[q>>0]|0;do if(n<<24>>24==37)break c;else if(n<<24>>24==42){n=0;q=f+2|0}else{o=(n&255)+-48|0;if(o>>>0<10?(a[f+2>>0]|0)==36:0){c[I>>2]=c[j>>2];while(1){y=c[I>>2]|0;n=c[y>>2]|0;c[I>>2]=y+4;if(o>>>0>1)o=o+-1|0;else break}q=f+3|0;break}y=c[j>>2]|0;n=c[y>>2]|0;c[j>>2]=y+4}while(0);f=a[q>>0]|0;o=f&255;if((o+-48|0)>>>0<10){f=0;while(1){r=(f*10|0)+-48+o|0;q=q+1|0;f=a[q>>0]|0;o=f&255;if((o+-48|0)>>>0>=10)break;else f=r}}else r=0;if(f<<24>>24==109){q=q+1|0;s=a[q>>0]|0;f=(n|0)!=0&1;m=0;l=0}else{s=f;f=0}o=q+1|0;switch(s&255|0){case 108:{y=(a[o>>0]|0)==108;q=y?q+2|0:o;o=y?3:1;break}case 116:case 122:{q=o;o=1;break}case 104:{y=(a[o>>0]|0)==104;q=y?q+2|0:o;o=y?-2:-1;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{o=0;break}case 76:{q=o;o=2;break}case 106:{q=o;o=3;break}default:{O=163;break a}}s=d[q>>0]|0;v=(s&47|0)==3;s=v?s|32:s;v=v?1:o;if((s|0)==99){y=t;x=(r|0)<1?1:r}else if((s|0)==110){if(!n){f=q;s=t;break b}switch(v|0){case 3:{f=n;c[f>>2]=t;c[f+4>>2]=((t|0)<0)<<31>>31;f=q;s=t;break b}case 1:{c[n>>2]=t;f=q;s=t;break b}case -1:{b[n>>1]=t;f=q;s=t;break b}case 0:{c[n>>2]=t;f=q;s=t;break b}case -2:{a[n>>0]=t;f=q;s=t;break b}default:{f=q;s=t;break b}}}else if((s|0)==91){y=t;x=r}else{Cea(e,0);do{o=c[M>>2]|0;if(o>>>0<(c[N>>2]|0)>>>0){c[M>>2]=o+1;o=d[o>>0]|0}else o=Dea(e)|0}while((wea(o)|0)!=0);o=c[M>>2]|0;if(c[N>>2]|0){o=o+-1|0;c[M>>2]=o}y=(c[C>>2]|0)+t+o-(c[D>>2]|0)|0;x=r}Cea(e,x);o=c[M>>2]|0;r=c[N>>2]|0;if(o>>>0>>0)c[M>>2]=o+1;else{if((Dea(e)|0)<0){O=163;break a}r=c[N>>2]|0}if(r)c[M>>2]=(c[M>>2]|0)+-1;d:do switch(s|0){case 91:case 99:case 115:{w=(s|0)==99;e:do if((s&239|0)==99){sfa(J|0,-1,257)|0;a[J>>0]=0;if((s|0)==115){a[F>>0]=0;a[E+0>>0]=0;a[E+1>>0]=0;a[E+2>>0]=0;a[E+3>>0]=0;a[E+4>>0]=0}}else{u=q+1|0;s=(a[u>>0]|0)==94;o=s&1;t=s?u:q;q=s?q+2|0:u;sfa(J|0,s&1|0,257)|0;a[J>>0]=0;s=a[q>>0]|0;if(s<<24>>24==45){u=(o^1)&255;a[A>>0]=u;q=t+2|0}else if(s<<24>>24==93){u=(o^1)&255;a[B>>0]=u;q=t+2|0}else u=(o^1)&255;while(1){o=a[q>>0]|0;if(o<<24>>24==45){s=q+1|0;o=a[s>>0]|0;if(!(o<<24>>24==93|o<<24>>24==0)){q=a[q+-1>>0]|0;if((q&255)<(o&255)){q=q&255;do{q=q+1|0;a[J+q>>0]=u;o=a[s>>0]|0}while((q|0)<(o&255|0));q=s}else q=s}else o=45}else if(o<<24>>24==93)break e;else if(!(o<<24>>24)){O=163;break a}a[J+((o&255)+1)>>0]=u;q=q+1|0}}while(0);s=w?x+1|0:31;o=(v|0)==1;t=(f|0)!=0;f:do if(o){if(t){l=qea(s<<2)|0;if(!l){m=0;O=163;break a}}else l=n;c[K>>2]=0;c[G>>2]=0;m=0;g:while(1){if(!l)while(1){r=c[M>>2]|0;if(r>>>0<(c[N>>2]|0)>>>0){c[M>>2]=r+1;r=d[r>>0]|0}else r=Dea(e)|0;if(!(a[J+(r+1)>>0]|0)){l=0;break g}a[z>>0]=r;r=Gca(L,z,1,K)|0;if((r|0)==-2)continue;else if((r|0)==-1){m=0;l=0;O=163;break a}if(t&(m|0)==(s|0))break}else{if(!t){O=85;break}while(1){while(1){r=c[M>>2]|0;if(r>>>0<(c[N>>2]|0)>>>0){c[M>>2]=r+1;r=d[r>>0]|0}else r=Dea(e)|0;if(!(a[J+(r+1)>>0]|0))break g;a[z>>0]=r;r=Gca(L,z,1,K)|0;if((r|0)==-1){m=0;O=163;break a}else if((r|0)!=-2)break}c[l+(m<<2)>>2]=c[L>>2];m=m+1|0;if((m|0)==(s|0)){m=s;break}}}s=s<<1|1;r=tea(l,s<<2)|0;if(!r){m=0;O=163;break a}l=r}h:do if((O|0)==85){O=0;s=m;while(1){while(1){m=c[M>>2]|0;if(m>>>0<(c[N>>2]|0)>>>0){c[M>>2]=m+1;m=d[m>>0]|0}else m=Dea(e)|0;if(!(a[J+(m+1)>>0]|0)){m=s;break h}a[z>>0]=m;m=Gca(L,z,1,K)|0;if((m|0)==-1){f=0;m=0;O=163;break a}else if((m|0)!=-2)break}c[l+(s<<2)>>2]=c[L>>2];s=s+1|0}}while(0);if(!(Hca(K)|0)){m=0;O=163;break a}else{s=m;m=0}}else{if(t){m=qea(s)|0;if(!m){m=0;l=0;O=163;break a}else r=0;while(1){do{l=c[M>>2]|0;if(l>>>0<(c[N>>2]|0)>>>0){c[M>>2]=l+1;l=d[l>>0]|0}else l=Dea(e)|0;if(!(a[J+(l+1)>>0]|0)){s=r;l=0;break f}a[m+r>>0]=l;r=r+1|0}while((r|0)!=(s|0));l=s<<1|1;r=tea(m,l)|0;if(!r){l=0;O=163;break a}else{v=s;s=l;m=r;r=v}}}if(!n){m=r;while(1){l=c[M>>2]|0;if(l>>>0>>0){c[M>>2]=l+1;l=d[l>>0]|0}else l=Dea(e)|0;if(!(a[J+(l+1)>>0]|0)){s=0;m=0;l=0;break f}m=c[N>>2]|0}}else{m=0;while(1){l=c[M>>2]|0;if(l>>>0>>0){c[M>>2]=l+1;l=d[l>>0]|0}else l=Dea(e)|0;if(!(a[J+(l+1)>>0]|0)){s=m;m=n;l=0;break f}a[n+m>>0]=l;r=c[N>>2]|0;m=m+1|0}}}while(0);r=c[M>>2]|0;if(c[N>>2]|0){r=r+-1|0;c[M>>2]=r}r=r-(c[D>>2]|0)+(c[C>>2]|0)|0;if(!r)break a;if(!((r|0)==(x|0)|w^1))break a;do if(t)if(o){c[n>>2]=l;break}else{c[n>>2]=m;break}while(0);if(!w){if(l)c[l+(s<<2)>>2]=0;if(!m){f=q;m=0}else{a[m+s>>0]=0;f=q}}else f=q;break}case 120:case 88:case 112:{o=16;O=145;break}case 117:case 100:{o=10;O=145;break}case 105:{o=0;O=145;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{p=+Bea(e,v,0);if((c[C>>2]|0)==((c[D>>2]|0)-(c[M>>2]|0)|0))break a;if(n)if((v|0)==2){h[n>>3]=p;f=q;break d}else if((v|0)==1){h[n>>3]=p;f=q;break d}else if(!v){g[n>>2]=p;f=q;break d}else{f=q;break d}else f=q;break}case 111:{o=8;O=145;break}default:f=q}while(0);i:do if((O|0)==145){O=0;o=Aea(e,o,0,-1,-1)|0;if((c[C>>2]|0)==((c[D>>2]|0)-(c[M>>2]|0)|0))break a;if((s|0)==112&(n|0)!=0){c[n>>2]=o;f=q;break}if(!n)f=q;else switch(v|0){case 3:{f=n;c[f>>2]=o;c[f+4>>2]=H;f=q;break i}case -2:{a[n>>0]=o;f=q;break i}case 0:{c[n>>2]=o;f=q;break i}case 1:{c[n>>2]=o;f=q;break i}case -1:{b[n>>1]=o;f=q;break i}default:{f=q;break i}}}while(0);k=((n|0)!=0&1)+k|0;s=(c[C>>2]|0)+y+(c[M>>2]|0)-(c[D>>2]|0)|0;break b}while(0);o=f+(o&1)|0;Cea(e,0);f=c[M>>2]|0;if(f>>>0<(c[N>>2]|0)>>>0){c[M>>2]=f+1;f=d[f>>0]|0}else f=Dea(e)|0;if((f|0)!=(d[o>>0]|0)){O=19;break a}f=o;s=t+1|0}else{while(1){n=f+1|0;if(!(wea(d[n>>0]|0)|0))break;else f=n}Cea(e,0);do{n=c[M>>2]|0;if(n>>>0<(c[N>>2]|0)>>>0){c[M>>2]=n+1;n=d[n>>0]|0}else n=Dea(e)|0}while((wea(n)|0)!=0);n=c[M>>2]|0;if(c[N>>2]|0){n=n+-1|0;c[M>>2]=n}s=(c[C>>2]|0)+t+n-(c[D>>2]|0)|0}while(0);f=f+1|0;q=a[f>>0]|0;if(!(q<<24>>24)){O=167;break}else t=s}if((O|0)==19){if(c[N>>2]|0)c[M>>2]=(c[M>>2]|0)+-1;if((f|0)>-1|(k|0)!=0){O=k;i=P;return O|0}else{k=0;O=164}}else if((O|0)==163){if(!k){k=f;O=164}}else if((O|0)==167){i=P;return k|0}if((O|0)==164){f=k;k=-1}if(!f){O=k;i=P;return O|0}rea(m);rea(l);O=k;i=P;return O|0}function Rca(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+112|0;e=g;f=e+0|0;h=f+112|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));c[e+32>>2]=203;c[e+44>>2]=a;c[e+76>>2]=-1;c[e+84>>2]=a;h=Qca(e,b,d)|0;i=g;return h|0}function Sca(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!c){a=0;return a|0}else h=b;while(1){g=c>>>1;b=h+(da(g,d)|0)|0;f=Pd[e&511](a,b)|0;if(!f){c=5;break}if((c|0)==1){b=0;c=5;break}f=(f|0)<0;c=f?g:c-g|0;if(!c){b=0;c=5;break}else h=f?h:b}if((c|0)==5)return b|0;return 0}function Tca(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+944|0;z=D+680|0;y=D+424|0;x=D;B=D+232|0;g=da(d,b)|0;if(!g){i=D;return}j=g-d|0;c[B+4>>2]=d;c[B>>2]=d;b=d;f=d;h=2;while(1){b=b+d+f|0;c[B+(h<<2)>>2]=b;if(b>>>0>>0){A=f;f=b;h=h+1|0;b=A}else break}A=0-d|0;u=a+j|0;if((j|0)>0){q=(d|0)==0;r=d>>>0>256?256:d;s=(r|0)==(d|0);t=u;b=1;g=0;f=1;do{do if((b&3|0)!=3){p=f+-1|0;a:do if((c[B+(p<<2)>>2]|0)>>>0<(t-a|0)>>>0){c[x>>2]=a;if((f|0)>1){j=f;h=a;l=a;m=1;while(1){k=h+A|0;o=j+-2|0;h=h+(0-((c[B+(o<<2)>>2]|0)+d))|0;if((Pd[e&511](l,h)|0)>-1?(Pd[e&511](l,k)|0)>-1:0){n=m;break}n=m+1|0;l=x+(m<<2)|0;if((Pd[e&511](h,k)|0)>-1){c[l>>2]=h;j=j+-1|0}else{c[l>>2]=k;h=k;j=o}if((j|0)<=1)break;l=c[x>>2]|0;m=n}if((n|0)>=2?(w=x+(n<<2)|0,c[w>>2]=z,!q):0){if((n|0)>0){h=d;j=z}else{k=c[x>>2]|0;qfa(z|0,k|0,r|0)|0;if(s)break;else{j=d;h=r}while(1){j=j-h|0;h=j>>>0>256?256:j;qfa(z|0,k|0,h|0)|0;if((j|0)==(h|0))break a}}while(1){k=h>>>0>256?256:h;l=c[x>>2]|0;qfa(j|0,l|0,k|0)|0;m=0;do{o=m;m=m+1|0;j=l;l=c[x+(m<<2)>>2]|0;qfa(j|0,l|0,k|0)|0;c[x+(o<<2)>>2]=j+k}while((m|0)!=(n|0));if((h|0)==(k|0))break a;h=h-k|0;j=c[w>>2]|0}}}}else gda(a,d,e,b,g,f,0,B);while(0);if((f|0)==1){j=b<<1;g=b>>>31|g<<1;f=0;break}else{o=p>>>0>31;n=o?0:b;f=o?f+-33|0:p;j=n<>>(32-f|0)|(o?b:g)<>2]=a;b:do if((f|0)>1){j=f;h=a;l=a;k=1;while(1){n=h+A|0;o=j+-2|0;h=h+(0-((c[B+(o<<2)>>2]|0)+d))|0;if((Pd[e&511](l,h)|0)>-1?(Pd[e&511](l,n)|0)>-1:0){m=k;break}m=k+1|0;k=x+(k<<2)|0;if((Pd[e&511](h,n)|0)>-1){c[k>>2]=h;j=j+-1|0}else{c[k>>2]=n;h=n;j=o}if((j|0)<=1)break;l=c[x>>2]|0;k=m}if((m|0)>=2?(v=x+(m<<2)|0,c[v>>2]=y,!q):0){if((m|0)>0){k=d;j=y}else{h=c[x>>2]|0;qfa(y|0,h|0,r|0)|0;if(s)break;else{j=d;k=r}while(1){j=j-k|0;k=j>>>0>256?256:j;qfa(y|0,h|0,k|0)|0;if((j|0)==(k|0))break b}}while(1){l=k>>>0>256?256:k;h=c[x>>2]|0;qfa(j|0,h|0,l|0)|0;j=h;h=0;do{p=h;h=h+1|0;o=j;j=c[x+(h<<2)>>2]|0;qfa(o|0,j|0,l|0)|0;c[x+(p<<2)>>2]=o+l}while((h|0)!=(m|0));if((k|0)==(l|0))break b;k=k-l|0;j=c[v>>2]|0}}}while(0);j=b>>>2|g<<30;g=g>>>2;f=f+2|0}while(0);b=j|1;a=a+d|0}while(a>>>0>>0)}else{g=0;b=1;f=1}gda(a,d,e,b,g,f,0,B);if((f|0)==1&(b|0)==1&(g|0)==0){i=D;return}else{m=b;j=a;l=f}while(1){if((l|0)>=2){x=m>>>30;z=l+-2|0;w=(m<<1&2147483646|x<<31)^3;y=(x|g<<2)>>>1;gda(j+(0-((c[B+(z<<2)>>2]|0)+d))|0,d,e,w,y,l+-1|0,1,B);x=y<<1|x&1;w=w<<1|1;y=j+A|0;gda(y,d,e,w,x,z,1,B);m=w;g=x;j=y;l=z;continue}b=m+-1|0;do if(b){if(!(b&1)){a=b;b=0;do{b=b+1|0;a=a>>>1}while((a&1|0)==0);if(!b)C=54}else C=54;if((C|0)==54){C=0;if(!g){b=64;C=59;break}if(!(g&1)){a=g;b=0}else{f=0;a=m;b=0;break}while(1){f=b+1|0;a=a>>>1;if(a&1){a=f;break}else b=f}if(!a){f=0;a=m;b=0;break}else b=b+33|0}if(b>>>0>31)C=59;else{f=b;a=m}}else{b=32;C=59}while(0);if((C|0)==59){C=0;f=b+-32|0;a=g;g=0}m=g<<32-f|a>>>f;g=g>>>f;l=b+l|0;if((l|0)==1&(m|0)==1&(g|0)==0)break;else j=j+A|0}i=D;return}function Uca(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=c&255;while(1){if(!d){c=0;d=4;break}d=d+-1|0;c=b+d|0;if((a[c>>0]|0)==e<<24>>24){d=4;break}}if((d|0)==4)return c|0;return 0}function Vca(b,c){b=b|0;c=c|0;b=Wca(b,c)|0;return ((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function Wca(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=d&255;if(!g){d=b+(tfa(b|0)|0)|0;return d|0}a:do if(b&3){f=d&255;while(1){h=a[b>>0]|0;e=b+1|0;if(h<<24>>24==0?1:h<<24>>24==f<<24>>24)break;if(!(e&3)){b=e;break a}else b=e}return b|0}while(0);g=da(g,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){h=e^g;b=f+4|0;if((h&-2139062144^-2139062144)&h+-16843009){b=f;break b}e=c[b>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009)break;else f=b}}while(0);e=d&255;while(1){h=a[b>>0]|0;if(h<<24>>24==0?1:h<<24>>24==e<<24>>24)break;else b=b+1|0}return b|0}function Xca(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+32|0;g=h;e=a[d>>0]|0;if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;c[g+28>>2]=0;do{f=g+(((e&255)>>>5&255)<<2)|0;c[f>>2]=c[f>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);e=a[b>>0]|0;a:do if(!(e<<24>>24))e=b;else{f=b;d=e;while(1){e=f+1|0;if(c[g+(((d&255)>>>5&255)<<2)>>2]&1<<(d&31)){e=f;break a}d=a[e>>0]|0;if(!(d<<24>>24))break;else f=e}}while(0);b=e-b|0;i=h;return b|0}b=(Wca(b,e<<24>>24)|0)-b|0;i=h;return b|0}function Yca(a){a=a|0;var b=0,c=0;b=(tfa(a|0)|0)+1|0;c=qea(b)|0;if(!c){a=0;return a|0}qfa(c|0,a|0,b|0)|0;a=c;return a|0}function Zca(a,b){a=a|0;b=b|0;return Uca(a,b,(tfa(a|0)|0)+1|0)|0}function _ca(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+32|0;g=h;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;c[g+28>>2]=0;f=a[d>>0]|0;if(!(f<<24>>24)){b=0;i=h;return b|0}if(!(a[d+1>>0]|0)){d=b;while(1)if((a[d>>0]|0)==f<<24>>24)d=d+1|0;else break;b=d-b|0;i=h;return b|0}else{e=d;d=f}do{f=g+(((d&255)>>>5&255)<<2)|0;c[f>>2]=c[f>>2]|1<<(d&31);e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0);d=a[b>>0]|0;a:do if(!(d<<24>>24))d=b;else{f=b;e=d;while(1){d=f+1|0;if(!(c[g+(((e&255)>>>5&255)<<2)>>2]&1<<(e&31))){d=f;break a}e=a[d>>0]|0;if(!(e<<24>>24))break;else f=d}}while(0);b=d-b|0;i=h;return b|0}function $ca(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+1056|0;t=x+1024|0;w=x;j=a[e>>0]|0;if(!(j<<24>>24)){w=b;i=x;return w|0}q=Vca(b,j<<24>>24)|0;if(!q){w=0;i=x;return w|0}k=a[e+1>>0]|0;if(!(k<<24>>24)){w=q;i=x;return w|0}f=q+1|0;n=a[f>>0]|0;if(!(n<<24>>24)){w=0;i=x;return w|0}h=a[e+2>>0]|0;if(!(h<<24>>24)){k=k&255|(j&255)<<8;j=q;b=n;g=d[q>>0]<<8|n&255;while(1){h=g&65535;if((h|0)==(k|0)){f=j;break}b=j+2|0;g=a[b>>0]|0;if(!(g<<24>>24)){b=0;break}else{j=f;f=b;b=g;g=g&255|h<<8}}w=b<<24>>24==0?0:f;i=x;return w|0}f=q+2|0;l=a[f>>0]|0;if(!(l<<24>>24)){w=0;i=x;return w|0}b=a[e+3>>0]|0;if(!(b<<24>>24)){h=(k&255)<<16|(j&255)<<24|(h&255)<<8;b=(l&255)<<8|(n&255)<<16|d[q>>0]<<24;if((b|0)==(h|0))b=0;else{g=b;do{f=f+1|0;b=a[f>>0]|0;g=(b&255|g)<<8;b=b<<24>>24==0}while(!(b|(g|0)==(h|0)))}w=b?0:f+-2|0;i=x;return w|0}f=q+3|0;g=a[f>>0]|0;if(!(g<<24>>24)){w=0;i=x;return w|0}if(!(a[e+4>>0]|0)){h=(k&255)<<16|(j&255)<<24|(h&255)<<8|b&255;b=(l&255)<<8|(n&255)<<16|g&255|d[q>>0]<<24;if((b|0)==(h|0))b=0;else{g=b;do{f=f+1|0;b=a[f>>0]|0;g=b&255|g<<8;b=b<<24>>24==0}while(!(b|(g|0)==(h|0)))}w=b?0:f+-3|0;i=x;return w|0};c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t+16>>2]=0;c[t+20>>2]=0;c[t+24>>2]=0;c[t+28>>2]=0;b=j;f=0;while(1){if(!(a[q+f>>0]|0)){m=0;o=79;break}h=t+(((b&255)>>>5&255)<<2)|0;c[h>>2]=c[h>>2]|1<<(b&31);h=f+1|0;c[w+((b&255)<<2)>>2]=h;b=a[e+h>>0]|0;if(!(b<<24>>24)){r=h;u=f;break}else f=h}if((o|0)==79){i=x;return m|0}a:do if(r>>>0>1){h=1;m=-1;b=0;b:while(1){j=1;while(1){c:while(1){f=1;while(1){g=a[e+(f+m)>>0]|0;k=a[e+h>>0]|0;if(g<<24>>24!=k<<24>>24){j=h;f=g;h=k;break c}if((f|0)==(j|0))break;f=f+1|0;h=f+b|0;if(h>>>0>=r>>>0){b=m;n=j;break b}}b=b+j|0;h=b+1|0;if(h>>>0>=r>>>0){b=m;n=j;break b}}g=j-m|0;if((f&255)<=(h&255))break;b=j+1|0;if(b>>>0>>0){h=b;b=j;j=g}else{b=m;n=g;break b}}h=b+2|0;if(h>>>0>=r>>>0){n=1;break}else{m=b;b=b+1|0}}f=1;g=-1;h=0;while(1){k=h;h=1;while(1){m=k;d:while(1){k=1;while(1){l=a[e+(k+g)>>0]|0;j=a[e+f>>0]|0;if(l<<24>>24!=j<<24>>24){k=f;f=m;break d}if((k|0)==(h|0))break;k=k+1|0;f=k+m|0;if(f>>>0>=r>>>0){f=n;break a}}m=m+h|0;f=m+1|0;if(f>>>0>=r>>>0){f=n;break a}}h=k-g|0;if((l&255)>=(j&255)){h=f;break}f=k+1|0;if(f>>>0>=r>>>0){f=n;break a}}f=h+2|0;if(f>>>0>=r>>>0){g=h;f=n;h=1;break}else{g=h;h=h+1|0}}}else{b=-1;g=-1;f=1;h=1}while(0);p=(g+1|0)>>>0>(b+1|0)>>>0;j=p?h:f;p=p?g:b;l=p+1|0;if(!(ffa(e,e+j|0,l)|0)){n=r-j|0;k=r|63;if((r|0)!=(j|0)){m=q;g=0;f=q;e:while(1){b=m;do if((f-b|0)>>>0>>0){h=efa(f,0,k)|0;if(h)if((h-b|0)>>>0>>0){m=0;o=79;break e}else break;else{h=f+k|0;break}}else h=f;while(0);b=a[m+u>>0]|0;if(!(1<<(b&31)&c[t+(((b&255)>>>5&255)<<2)>>2])){m=m+r|0;g=0;f=h;continue}o=c[w+((b&255)<<2)>>2]|0;b=r-o|0;if((r|0)!=(o|0)){m=m+((g|0)!=0&b>>>0>>0?n:b)|0;g=0;f=h;continue}b=l>>>0>g>>>0?l:g;f=a[e+b>>0]|0;f:do if(!(f<<24>>24))b=l;else{while(1){if(f<<24>>24!=(a[m+b>>0]|0))break;b=b+1|0;f=a[e+b>>0]|0;if(!(f<<24>>24)){b=l;break f}}m=m+(b-p)|0;g=0;f=h;continue e}while(0);do{if(b>>>0<=g>>>0){o=79;break e}b=b+-1|0}while((a[e+b>>0]|0)==(a[m+b>>0]|0));m=m+j|0;g=n;f=h}if((o|0)==79){i=x;return m|0}}else{s=k;v=r}}else{v=r-p+-1|0;s=r|63;v=(p>>>0>v>>>0?p:v)+1|0}g=e+l|0;m=q;f=q;g:while(1){b=m;do if((f-b|0)>>>0>>0){h=efa(f,0,s)|0;if(h)if((h-b|0)>>>0>>0){m=0;o=79;break g}else break;else{h=f+s|0;break}}else h=f;while(0);b=a[m+u>>0]|0;if(!(1<<(b&31)&c[t+(((b&255)>>>5&255)<<2)>>2])){m=m+r|0;f=h;continue}b=c[w+((b&255)<<2)>>2]|0;if((r|0)!=(b|0)){m=m+(r-b)|0;f=h;continue}b=a[g>>0]|0;h:do if(!(b<<24>>24))b=l;else{f=l;while(1){if(b<<24>>24!=(a[m+f>>0]|0)){b=f;break}f=f+1|0;b=a[e+f>>0]|0;if(!(b<<24>>24)){b=l;break h}}m=m+(b-p)|0;f=h;continue g}while(0);do{if(!b){o=79;break g}b=b+-1|0}while((a[e+b>>0]|0)==(a[m+b>>0]|0));m=m+v|0;f=h}if((o|0)==79){i=x;return m|0}return 0}function ada(b,d){b=b|0;d=d|0;var e=0,f=0;if(!b){b=c[91398]|0;if(!b){d=0;return d|0}}e=_ca(b,d)|0;f=b+e|0;if(!(a[f>>0]|0)){c[91398]=0;d=0;return d|0}e=(Xca(f,d)|0)+e|0;d=b+e|0;c[91398]=d;if(!(a[d>>0]|0)){c[91398]=0;d=f;return d|0}else{c[91398]=b+(e+1);a[d>>0]=0;d=f;return d|0}return 0}function bda(a){a=a|0;var b=0;b=a;while(1)if(!(c[b>>2]|0))break;else b=b+4|0;return b-a>>2|0}function cda(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(!d)return a|0;else e=a;while(1){d=d+-1|0;c[e>>2]=c[b>>2];if(!d)break;else{b=b+4|0;e=e+4|0}}return a|0}function dda(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(d|0)==0;if(a-b>>2>>>0>>0){if(e)return a|0;do{d=d+-1|0;c[a+(d<<2)>>2]=c[b+(d<<2)>>2]}while((d|0)!=0);return a|0}else{if(e)return a|0;else{e=b;b=a}while(1){d=d+-1|0;c[b>>2]=c[e>>2];if(!d)break;else{e=e+4|0;b=b+4|0}}return a|0}return 0}function eda(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(!d)return a|0;else e=a;while(1){d=d+-1|0;c[e>>2]=b;if(!d)break;else e=e+4|0}return a|0}function fda(a,b,c){a=a|0;b=b|0;c=c|0;return Nca(a,b,c)|0}function gda(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+720|0;w=x+456|0;v=x;s=x+228|0;c[s>>2]=a;t=0-b|0;k=(f|0)==0;a:do if((e|0)==1&k){k=1;q=18}else{m=a;n=k;o=f;f=1;l=e;while(1){p=m+(0-(c[j+(g<<2)>>2]|0))|0;if((Pd[d&511](p,a)|0)<1){a=m;k=f;q=18;break a}if((h|0)==0&(g|0)>1){a=c[j+(g+-2<<2)>>2]|0;if((Pd[d&511](m+t|0,p)|0)>-1){a=m;k=f;break a}if((Pd[d&511](m+(0-(a+b))|0,p)|0)>-1){a=m;k=f;break a}}k=f+1|0;c[s+(f<<2)>>2]=p;h=l+-1|0;do if(h){if(!(h&1)){a=h;h=0;do{h=h+1|0;a=a>>>1}while((a&1|0)==0);if(!h)q=10}else q=10;if((q|0)==10){q=0;if(n){h=64;q=15;break}if(!(o&1)){h=o;a=0}else{e=0;a=l;f=o;h=0;break}while(1){f=a+1|0;h=h>>>1;if(h&1){h=f;break}else a=f}if(!h){e=0;a=l;f=o;h=0;break}else h=a+33|0}if(h>>>0>31)q=15;else{e=h;a=l;f=o}}else{h=32;q=15}while(0);if((q|0)==15){q=0;e=h+-32|0;a=o;f=0}l=f<<32-e|a>>>e;f=f>>>e;g=h+g|0;a=(f|0)==0;if((l|0)==1&a){a=p;break a}m=p;h=0;n=a;o=f;a=c[s>>2]|0;f=k}}while(0);if((q|0)==18)if(h){i=x;return}b:do if((k|0)>=2?(r=s+(k<<2)|0,c[r>>2]=w,(b|0)!=0):0){if((k|0)>0){e=b;h=w}else{h=b>>>0>256?256:b;e=c[s>>2]|0;qfa(w|0,e|0,h|0)|0;if((h|0)==(b|0))break;else k=b;while(1){k=k-h|0;h=k>>>0>256?256:k;qfa(w|0,e|0,h|0)|0;if((k|0)==(h|0))break b}}while(1){l=e>>>0>256?256:e;f=c[s>>2]|0;qfa(h|0,f|0,l|0)|0;h=f;f=0;do{q=f;f=f+1|0;p=h;h=c[s+(f<<2)>>2]|0;qfa(p|0,h|0,l|0)|0;c[s+(q<<2)>>2]=p+l}while((f|0)!=(k|0));if((e|0)==(l|0))break b;e=e-l|0;h=c[r>>2]|0}}while(0);c[v>>2]=a;c:do if((g|0)>1){h=a;k=a;f=1;while(1){l=h+t|0;a=g+-2|0;h=h+(0-((c[j+(a<<2)>>2]|0)+b))|0;if((Pd[d&511](k,h)|0)>-1?(Pd[d&511](k,l)|0)>-1:0){e=f;break}e=f+1|0;k=v+(f<<2)|0;if((Pd[d&511](h,l)|0)>-1){c[k>>2]=h;g=g+-1|0}else{c[k>>2]=l;h=l;g=a}if((g|0)<=1)break;k=c[v>>2]|0;f=e}if((e|0)>=2?(u=v+(e<<2)|0,c[u>>2]=w,(b|0)!=0):0){if((e|0)>0)g=w;else{g=b>>>0>256?256:b;k=c[v>>2]|0;qfa(w|0,k|0,g|0)|0;if((g|0)==(b|0))break;while(1){b=b-g|0;g=b>>>0>256?256:b;qfa(w|0,k|0,g|0)|0;if((b|0)==(g|0))break c}}while(1){h=b>>>0>256?256:b;k=c[v>>2]|0;qfa(g|0,k|0,h|0)|0;g=k;k=0;do{j=k;k=k+1|0;d=g;g=c[v+(k<<2)>>2]|0;qfa(d|0,g|0,h|0)|0;c[v+(j<<2)>>2]=d+h}while((k|0)!=(e|0));if((b|0)==(h|0))break c;b=b-h|0;g=c[u>>2]|0}}}while(0);i=x;return}function hda(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d>>2]=b;b=c[p>>2]|0;fc(b|0,a|0,d|0)|0;pd(10,b|0)|0;Gc()}function ida(){var a=0,b=0;a=i;i=i+16|0;if(!(Ob(365792,3)|0)){b=Nc(c[91446]|0)|0;i=a;return b|0}else hda(365800,a);return 0}function jda(a){a=a|0;var b=0;b=(a|0)==0?1:a;a=qea(b)|0;a:do if(!a){while(1){a=vda()|0;if(!a)break;Vd[a&3]();a=qea(b)|0;if(a)break a}b=gc(4)|0;c[b>>2]=365976;qd(b|0,366024,182)}while(0);return a|0}function kda(a,b){a=a|0;b=b|0;return jda(a)|0}function lda(a){a=a|0;return jda(a)|0}function mda(a,b){a=a|0;b=b|0;return lda(a)|0}function nda(a){a=a|0;rea(a);return}function oda(a){a=a|0;nda(a);return}function pda(a){a=a|0;c[a>>2]=365976;return}function qda(a){a=a|0;return}function rda(a){a=a|0;nda(a);return}function sda(a){a=a|0;return 365992}function tda(a){a=a|0;var b=0;b=i;i=i+16|0;Vd[a&3]();hda(366040,b)}function uda(){var a=0,b=0;a=ida()|0;if(((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0)?(a=b+48|0,(c[a>>2]&-256|0)==1126902528?(c[a+4>>2]|0)==1129074247:0):0)tda(c[b+12>>2]|0);b=c[91400]|0;c[91400]=b+0;tda(b)}function vda(){var a=0;a=c[91520]|0;c[91520]=a+0;return a|0}function wda(a){a=a|0;return}function xda(a){a=a|0;return 366088}function yda(a){a=a|0;c[a>>2]=366136;oea(a+4|0);return}function zda(a){a=a|0;yda(a);nda(a);return}function Ada(a){a=a|0;return c[a+4>>2]|0}function Bda(a){a=a|0;c[a>>2]=366160;oea(a+4|0);return}function Cda(a){a=a|0;Bda(a);nda(a);return}function Dda(a){a=a|0;return c[a+4>>2]|0}function Eda(a){a=a|0;yda(a);nda(a);return}function Fda(a){a=a|0;yda(a);nda(a);return}function Gda(a){a=a|0;return}function Hda(a){a=a|0;c[a>>2]=366384;return}function Ida(a){a=a|0;return}function Jda(a){a=a|0;nda(a);return}function Kda(a){a=a|0;return 366400}function Lda(a){a=a|0;return}function Mda(a){a=a|0;return}function Nda(a){a=a|0;return}function Oda(a){a=a|0;nda(a);return}function Pda(a){a=a|0;nda(a);return}function Qda(a){a=a|0;nda(a);return}function Rda(a){a=a|0;nda(a);return}function Sda(a){a=a|0;nda(a);return}function Tda(a,b,c){a=a|0;b=b|0;c=c|0;return (a|0)==(b|0)|0}function Uda(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+64|0;g=h;if((a|0)!=(b|0))if((b|0)!=0?(f=$da(b,366512,366568,0)|0,(f|0)!=0):0){b=g+0|0;e=b+56|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(e|0));c[g>>2]=f;c[g+8>>2]=a;c[g+12>>2]=-1;c[g+48>>2]=1;Yd[c[(c[f>>2]|0)+28>>2]&63](f,g,c[d>>2]|0,1);if((c[g+24>>2]|0)==1){c[d>>2]=c[g+16>>2];b=1}else b=0}else b=0;else b=1;i=h;return b|0}function Vda(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;b=d+16|0;g=c[b>>2]|0;do if(g){if((g|0)!=(e|0)){f=d+36|0;c[f>>2]=(c[f>>2]|0)+1;c[d+24>>2]=2;a[d+54>>0]=1;break}b=d+24|0;if((c[b>>2]|0)==2)c[b>>2]=f}else{c[b>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1}while(0);return}function Wda(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((c[b+8>>2]|0)==(a|0))Vda(0,b,d,e);return}function Xda(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((a|0)==(c[b+8>>2]|0))Vda(0,b,d,e);else{a=c[a+8>>2]|0;Yd[c[(c[a>>2]|0)+28>>2]&63](a,b,d,e)}return}function Yda(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a+4>>2]|0;f=g>>8;if(g&1)f=c[(c[d>>2]|0)+f>>2]|0;a=c[a>>2]|0;Yd[c[(c[a>>2]|0)+28>>2]&63](a,b,d+f|0,(g&2|0)!=0?e:2);return}function Zda(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do if((b|0)!=(c[d+8>>2]|0)){h=c[b+12>>2]|0;g=b+(h<<3)+16|0;Yda(b+16|0,d,e,f);if((h|0)>1){h=d+54|0;b=b+24|0;do{Yda(b,d,e,f);if(a[h>>0]|0)break a;b=b+8|0}while(b>>>0>>0)}}else Vda(0,d,e,f);while(0);return}function _da(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+64|0;j=k;c[d>>2]=c[c[d>>2]>>2];if(!((a|0)==(b|0)|(b|0)==366880))if(((b|0)!=0?(e=$da(b,366512,366680,0)|0,(e|0)!=0):0)?(c[e+8>>2]&~c[a+8>>2]|0)==0:0){b=c[a+12>>2]|0;a=e+12|0;if(!((b|0)==366864?1:(b|0)==(c[a>>2]|0)))if((((b|0)!=0?(g=$da(b,366512,366568,0)|0,(g|0)!=0):0)?(f=c[a>>2]|0,(f|0)!=0):0)?(h=$da(f,366512,366568,0)|0,(h|0)!=0):0){a=j+0|0;b=a+56|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));c[j>>2]=h;c[j+8>>2]=g;c[j+12>>2]=-1;c[j+48>>2]=1;Yd[c[(c[h>>2]|0)+28>>2]&63](h,j,c[d>>2]|0,1);if((c[j+24>>2]|0)==1){c[d>>2]=c[j+16>>2];a=1}else a=0}else a=0;else a=1}else a=0;else a=1;i=k;return a|0}function $da(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+64|0;q=r;p=c[d>>2]|0;o=d+(c[p+-8>>2]|0)|0;p=c[p+-4>>2]|0;c[q>>2]=f;c[q+4>>2]=d;c[q+8>>2]=e;c[q+12>>2]=g;h=q+16|0;j=q+20|0;k=q+24|0;l=q+28|0;m=q+32|0;n=q+40|0;g=(p|0)==(f|0);d=h+0|0;e=d+36|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));b[h+36>>1]=0;a[h+38>>0]=0;do if(g){c[q+48>>2]=1;Kd[c[(c[p>>2]|0)+20>>2]&31](p,q,o,o,1,0);g=(c[k>>2]|0)==1?o:0}else{Ad[c[(c[p>>2]|0)+24>>2]&63](p,q,o,1,0);g=c[q+36>>2]|0;if(!g){g=(c[n>>2]|0)==1&(c[l>>2]|0)==1&(c[m>>2]|0)==1?c[j>>2]|0:0;break}else if((g|0)!=1){g=0;break}if((c[k>>2]|0)!=1?!((c[n>>2]|0)==0&(c[l>>2]|0)==1&(c[m>>2]|0)==1):0){g=0;break}g=c[h>>2]|0}while(0);i=r;return g|0}function aea(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;a[d+53>>0]=1;do if((c[d+4>>2]|0)==(f|0)){a[d+52>>0]=1;f=d+16|0;b=c[f>>2]|0;if(!b){c[f>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((g|0)==1?(c[d+48>>2]|0)==1:0))break;a[d+54>>0]=1;break}if((b|0)!=(e|0)){e=d+36|0;c[e>>2]=(c[e>>2]|0)+1;a[d+54>>0]=1;break}b=d+24|0;f=c[b>>2]|0;if((f|0)==2){c[b>>2]=g;f=g}if((f|0)==1?(c[d+48>>2]|0)==1:0)a[d+54>>0]=1}while(0);return}function bea(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a:do if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)==(e|0)?(h=d+28|0,(c[h>>2]|0)!=1):0)c[h>>2]=f}else{if((b|0)!=(c[d>>2]|0)){q=c[b+12>>2]|0;k=b+(q<<3)+16|0;dea(b+16|0,d,e,f,g);h=b+24|0;if((q|0)<=1)break;i=c[b+8>>2]|0;if((i&2|0)==0?(l=d+36|0,(c[l>>2]|0)!=1):0){if(!(i&1)){i=d+54|0;while(1){if(a[i>>0]|0)break a;if((c[l>>2]|0)==1)break a;dea(h,d,e,f,g);h=h+8|0;if(h>>>0>=k>>>0)break a}}i=d+24|0;j=d+54|0;while(1){if(a[j>>0]|0)break a;if((c[l>>2]|0)==1?(c[i>>2]|0)==1:0)break a;dea(h,d,e,f,g);h=h+8|0;if(h>>>0>=k>>>0)break a}}i=d+54|0;while(1){if(a[i>>0]|0)break a;dea(h,d,e,f,g);h=h+8|0;if(h>>>0>=k>>>0)break a}}if((c[d+16>>2]|0)!=(e|0)?(q=d+20|0,(c[q>>2]|0)!=(e|0)):0){c[d+32>>2]=f;p=d+44|0;if((c[p>>2]|0)==4)break;n=c[b+12>>2]|0;j=b+(n<<3)+16|0;b:do if((n|0)>0){l=d+52|0;m=d+53|0;n=d+54|0;f=b+8|0;o=d+24|0;i=0;h=0;k=b+16|0;c:do{a[l>>0]=0;a[m>>0]=0;cea(k,d,e,e,1,g);if(a[n>>0]|0)break;do if(a[m>>0]|0){if(!(a[l>>0]|0))if(!(c[f>>2]&1)){h=1;break c}else{h=1;break}if((c[o>>2]|0)==1){i=25;break b}if(!(c[f>>2]&2)){i=25;break b}else{i=1;h=1}}while(0);k=k+8|0}while(k>>>0>>0);if(i)i=24;else i=21}else{h=0;i=21}while(0);if((i|0)==21){c[q>>2]=e;e=d+40|0;c[e>>2]=(c[e>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0){a[d+54>>0]=1;if(h)i=25;else i=26}else i=24}if((i|0)==24)if(h)i=25;else i=26;if((i|0)==25){c[p>>2]=3;break}else if((i|0)==26){c[p>>2]=4;break}}if((f|0)==1)c[d+32>>2]=1}while(0);return}function cea(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=c[a+4>>2]|0;h=i>>8;if(i&1)h=c[(c[e>>2]|0)+h>>2]|0;a=c[a>>2]|0;Kd[c[(c[a>>2]|0)+20>>2]&31](a,b,d,e+h|0,(i&2|0)!=0?f:2,g);return}function dea(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=c[a+4>>2]|0;g=h>>8;if(h&1)g=c[(c[d>>2]|0)+g>>2]|0;a=c[a>>2]|0;Ad[c[(c[a>>2]|0)+24>>2]&63](a,b,d+g|0,(h&2|0)!=0?e:2,f);return}function eea(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)==(e|0)?(h=d+28|0,(c[h>>2]|0)!=1):0)c[h>>2]=f}else{if((b|0)!=(c[d>>2]|0)){i=c[b+8>>2]|0;Ad[c[(c[i>>2]|0)+24>>2]&63](i,d,e,f,g);break}if((c[d+16>>2]|0)!=(e|0)?(i=d+20|0,(c[i>>2]|0)!=(e|0)):0){c[d+32>>2]=f;f=d+44|0;if((c[f>>2]|0)==4)break;h=d+52|0;a[h>>0]=0;k=d+53|0;a[k>>0]=0;b=c[b+8>>2]|0;Kd[c[(c[b>>2]|0)+20>>2]&31](b,d,e,e,1,g);if(a[k>>0]|0){if(!(a[h>>0]|0)){h=1;j=13}}else{h=0;j=13}do if((j|0)==13){c[i>>2]=e;i=d+40|0;c[i>>2]=(c[i>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0){a[d+54>>0]=1;if(h)break}else j=16;if((j|0)==16?h:0)break;c[f>>2]=4;break a}while(0);c[f>>2]=3;break}if((f|0)==1)c[d+32>>2]=1}while(0);return}function fea(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;do if((c[d+8>>2]|0)==(b|0)){if((c[d+4>>2]|0)==(e|0)?(i=d+28|0,(c[i>>2]|0)!=1):0)c[i>>2]=f}else if((c[d>>2]|0)==(b|0)){if((c[d+16>>2]|0)!=(e|0)?(h=d+20|0,(c[h>>2]|0)!=(e|0)):0){c[d+32>>2]=f;c[h>>2]=e;g=d+40|0;c[g>>2]=(c[g>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0)a[d+54>>0]=1;c[d+44>>2]=4;break}if((f|0)==1)c[d+32>>2]=1}while(0);return}function gea(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((b|0)==(c[d+8>>2]|0))aea(0,d,e,f,g);else{m=d+52|0;n=a[m>>0]|0;o=d+53|0;p=a[o>>0]|0;l=c[b+12>>2]|0;i=b+(l<<3)+16|0;a[m>>0]=0;a[o>>0]=0;cea(b+16|0,d,e,f,g,h);a:do if((l|0)>1){j=d+24|0;k=b+8|0;l=d+54|0;b=b+24|0;do{if(a[l>>0]|0)break a;if(!(a[m>>0]|0)){if((a[o>>0]|0)!=0?(c[k>>2]&1|0)==0:0)break a}else{if((c[j>>2]|0)==1)break a;if(!(c[k>>2]&2))break a}a[m>>0]=0;a[o>>0]=0;cea(b,d,e,f,g,h);b=b+8|0}while(b>>>0>>0)}while(0);a[m>>0]=n;a[o>>0]=p}return}function hea(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((a|0)==(c[b+8>>2]|0))aea(0,b,d,e,f);else{a=c[a+8>>2]|0;Kd[c[(c[a>>2]|0)+20>>2]&31](a,b,d,e,f,g)}return}function iea(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((c[b+8>>2]|0)==(a|0))aea(0,b,d,e,f);return}function jea(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=c[d>>2];a=Hd[c[(c[a>>2]|0)+16>>2]&255](a,b,e)|0;if(a)c[d>>2]=c[e>>2];i=f;return a&1|0}function kea(a){a=a|0;if(!a)a=0;else a=($da(a,366512,366680,0)|0)!=0;return a&1|0}function lea(){var a=0;a=gc(4)|0;pda(a);qd(a|0,366024,182)}function mea(){var a=0,b=0,d=0,e=0,f=0;e=i;i=i+16|0;f=e;e=e+12|0;a=ida()|0;if((a|0)!=0?(d=c[a>>2]|0,(d|0)!=0):0){a=d+48|0;b=c[a>>2]|0;a=c[a+4>>2]|0;if(!((b&-256|0)==1126902528&(a|0)==1129074247)){c[f>>2]=c[91402];hda(365728,f)}if((b|0)==1126902529&(a|0)==1129074247)a=c[d+44>>2]|0;else a=d+80|0;c[e>>2]=a;d=c[d>>2]|0;a=c[d+4>>2]|0;if(Hd[c[(c[366120>>2]|0)+16>>2]&255](366120,d,e)|0){d=c[e>>2]|0;e=c[91402]|0;d=Ed[c[(c[d>>2]|0)+8>>2]&511](d)|0;c[f>>2]=e;c[f+4>>2]=a;c[f+8>>2]=d;hda(365632,f)}else{c[f>>2]=c[91402];c[f+4>>2]=a;hda(365680,f)}}hda(365768,f)}function nea(){var a=0;a=i;i=i+16|0;if(!(yc(365784,330)|0)){i=a;return}else hda(365856,a)}function oea(a){a=a|0;var b=0,d=0;d=(c[a>>2]|0)+-4|0;b=c[d>>2]|0;c[d>>2]=b+-1;if((b+-1|0)<0)nda((c[a>>2]|0)+-12|0);return}function pea(a){a=a|0;var b=0;b=i;i=i+16|0;rea(a);if(!(nd(c[91446]|0,0)|0)){i=b;return}else hda(365912,b)}function qea(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;do if(a>>>0<245){if(a>>>0<11)o=16;else o=a+11&-8;a=o>>>3;k=c[91792]|0;e=k>>>a;if(e&3){b=(e&1^1)+a|0;e=b<<1;d=367208+(e<<2)|0;e=367208+(e+2<<2)|0;f=c[e>>2]|0;g=f+8|0;h=c[g>>2]|0;do if((d|0)!=(h|0)){if(h>>>0<(c[91796]|0)>>>0)Gc();a=h+12|0;if((c[a>>2]|0)==(f|0)){c[a>>2]=d;c[e>>2]=h;break}else Gc()}else c[91792]=k&~(1<>2]=L|3;L=f+(L|4)|0;c[L>>2]=c[L>>2]|1;L=g;return L|0}h=c[91794]|0;if(o>>>0>h>>>0){if(e){d=2<>>12&16;d=d>>>j;g=d>>>5&8;d=d>>>g;f=d>>>2&4;d=d>>>f;b=d>>>1&2;d=d>>>b;e=d>>>1&1;e=(g|j|f|b|e)+(d>>>e)|0;d=e<<1;b=367208+(d<<2)|0;d=367208+(d+2<<2)|0;f=c[d>>2]|0;j=f+8|0;g=c[j>>2]|0;do if((b|0)!=(g|0)){if(g>>>0<(c[91796]|0)>>>0)Gc();a=g+12|0;if((c[a>>2]|0)==(f|0)){c[a>>2]=b;c[d>>2]=g;l=c[91794]|0;break}else Gc()}else{c[91792]=k&~(1<>2]=o|3;i=f+o|0;c[f+(o|4)>>2]=h|1;c[f+L>>2]=h;if(l){g=c[91797]|0;b=l>>>3;a=b<<1;d=367208+(a<<2)|0;e=c[91792]|0;b=1<>2]|0;if(a>>>0<(c[91796]|0)>>>0)Gc();else{m=e;n=a}}else{c[91792]=e|b;m=367208+(a+2<<2)|0;n=d}c[m>>2]=g;c[n+12>>2]=g;c[g+8>>2]=n;c[g+12>>2]=d}c[91794]=h;c[91797]=i;L=j;return L|0}a=c[91793]|0;if(a){b=(a&0-a)+-1|0;K=b>>>12&16;b=b>>>K;H=b>>>5&8;b=b>>>H;L=b>>>2&4;b=b>>>L;e=b>>>1&2;b=b>>>e;d=b>>>1&1;d=c[367472+((H|K|L|e|d)+(b>>>d)<<2)>>2]|0;b=(c[d+4>>2]&-8)-o|0;e=d;while(1){a=c[e+16>>2]|0;if(!a){a=c[e+20>>2]|0;if(!a){k=b;break}}e=(c[a+4>>2]&-8)-o|0;L=e>>>0>>0;b=L?e:b;e=a;d=L?a:d}i=c[91796]|0;if(d>>>0>>0)Gc();h=d+o|0;if(d>>>0>=h>>>0)Gc();j=c[d+24>>2]|0;b=c[d+12>>2]|0;do if((b|0)==(d|0)){e=d+20|0;a=c[e>>2]|0;if(!a){e=d+16|0;a=c[e>>2]|0;if(!a){f=0;break}}while(1){b=a+20|0;g=c[b>>2]|0;if(g){a=g;e=b;continue}b=a+16|0;g=c[b>>2]|0;if(!g)break;else{a=g;e=b}}if(e>>>0>>0)Gc();else{c[e>>2]=0;f=a;break}}else{g=c[d+8>>2]|0;if(g>>>0>>0)Gc();a=g+12|0;if((c[a>>2]|0)!=(d|0))Gc();e=b+8|0;if((c[e>>2]|0)==(d|0)){c[a>>2]=b;c[e>>2]=g;f=b;break}else Gc()}while(0);do if(j){a=c[d+28>>2]|0;e=367472+(a<<2)|0;if((d|0)==(c[e>>2]|0)){c[e>>2]=f;if(!f){c[91793]=c[91793]&~(1<>>0<(c[91796]|0)>>>0)Gc();a=j+16|0;if((c[a>>2]|0)==(d|0))c[a>>2]=f;else c[j+20>>2]=f;if(!f)break}e=c[91796]|0;if(f>>>0>>0)Gc();c[f+24>>2]=j;a=c[d+16>>2]|0;do if(a)if(a>>>0>>0)Gc();else{c[f+16>>2]=a;c[a+24>>2]=f;break}while(0);a=c[d+20>>2]|0;if(a)if(a>>>0<(c[91796]|0)>>>0)Gc();else{c[f+20>>2]=a;c[a+24>>2]=f;break}}while(0);if(k>>>0<16){L=k+o|0;c[d+4>>2]=L|3;L=d+(L+4)|0;c[L>>2]=c[L>>2]|1}else{c[d+4>>2]=o|3;c[d+(o|4)>>2]=k|1;c[d+(k+o)>>2]=k;a=c[91794]|0;if(a){f=c[91797]|0;b=a>>>3;a=b<<1;g=367208+(a<<2)|0;e=c[91792]|0;b=1<>2]|0;if(e>>>0<(c[91796]|0)>>>0)Gc();else{p=a;q=e}}else{c[91792]=e|b;p=367208+(a+2<<2)|0;q=g}c[p>>2]=f;c[q+12>>2]=f;c[f+8>>2]=q;c[f+12>>2]=g}c[91794]=k;c[91797]=h}L=d+8|0;return L|0}else q=o}else q=o}else if(a>>>0<=4294967231){a=a+11|0;m=a&-8;l=c[91793]|0;if(l){d=0-m|0;a=a>>>8;if(a)if(m>>>0>16777215)k=31;else{p=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;k=14-(n|p|k)+(q<>>15)|0;k=m>>>(k+7|0)&1|k<<1}else k=0;j=c[367472+(k<<2)>>2]|0;a:do if(!j){a=0;e=0}else{if((k|0)==31)e=0;else e=25-(k>>>1)|0;f=d;a=0;h=m<>2]&-8;d=g-m|0;if(d>>>0>>0)if((g|0)==(m|0)){a=j;e=j;break a}else e=j;else d=f;q=c[j+20>>2]|0;j=c[j+(h>>>31<<2)+16>>2]|0;a=(q|0)==0|(q|0)==(j|0)?a:q;if(!j)break;else{f=d;h=h<<1}}}while(0);if((a|0)==0&(e|0)==0){a=2<>>12&16;q=q>>>l;k=q>>>5&8;q=q>>>k;n=q>>>2&4;q=q>>>n;p=q>>>1&2;q=q>>>p;a=q>>>1&1;a=c[367472+((k|l|n|p|a)+(q>>>a)<<2)>>2]|0}if(!a){f=d;h=e}else while(1){q=(c[a+4>>2]&-8)-m|0;j=q>>>0>>0;d=j?q:d;e=j?a:e;j=c[a+16>>2]|0;if(j){a=j;continue}a=c[a+20>>2]|0;if(!a){f=d;h=e;break}}if((h|0)!=0?f>>>0<((c[91794]|0)-m|0)>>>0:0){i=c[91796]|0;if(h>>>0>>0)Gc();g=h+m|0;if(h>>>0>=g>>>0)Gc();j=c[h+24>>2]|0;b=c[h+12>>2]|0;do if((b|0)==(h|0)){e=h+20|0;a=c[e>>2]|0;if(!a){e=h+16|0;a=c[e>>2]|0;if(!a){o=0;break}}while(1){b=a+20|0;d=c[b>>2]|0;if(d){a=d;e=b;continue}b=a+16|0;d=c[b>>2]|0;if(!d)break;else{a=d;e=b}}if(e>>>0>>0)Gc();else{c[e>>2]=0;o=a;break}}else{d=c[h+8>>2]|0;if(d>>>0>>0)Gc();a=d+12|0;if((c[a>>2]|0)!=(h|0))Gc();e=b+8|0;if((c[e>>2]|0)==(h|0)){c[a>>2]=b;c[e>>2]=d;o=b;break}else Gc()}while(0);do if(j){a=c[h+28>>2]|0;e=367472+(a<<2)|0;if((h|0)==(c[e>>2]|0)){c[e>>2]=o;if(!o){c[91793]=c[91793]&~(1<>>0<(c[91796]|0)>>>0)Gc();a=j+16|0;if((c[a>>2]|0)==(h|0))c[a>>2]=o;else c[j+20>>2]=o;if(!o)break}e=c[91796]|0;if(o>>>0>>0)Gc();c[o+24>>2]=j;a=c[h+16>>2]|0;do if(a)if(a>>>0>>0)Gc();else{c[o+16>>2]=a;c[a+24>>2]=o;break}while(0);a=c[h+20>>2]|0;if(a)if(a>>>0<(c[91796]|0)>>>0)Gc();else{c[o+20>>2]=a;c[a+24>>2]=o;break}}while(0);b:do if(f>>>0>=16){c[h+4>>2]=m|3;c[h+(m|4)>>2]=f|1;c[h+(f+m)>>2]=f;a=f>>>3;if(f>>>0<256){e=a<<1;d=367208+(e<<2)|0;b=c[91792]|0;a=1<>2]|0;if(e>>>0>=(c[91796]|0)>>>0){s=a;t=e;break}Gc()}while(0);c[s>>2]=g;c[t+12>>2]=g;c[h+(m+8)>>2]=t;c[h+(m+12)>>2]=d;break}a=f>>>8;if(a)if(f>>>0>16777215)d=31;else{K=(a+1048320|0)>>>16&8;L=a<>>16&4;L=L<>>16&2;d=14-(H|K|d)+(L<>>15)|0;d=f>>>(d+7|0)&1|d<<1}else d=0;a=367472+(d<<2)|0;c[h+(m+28)>>2]=d;c[h+(m+20)>>2]=0;c[h+(m+16)>>2]=0;e=c[91793]|0;b=1<>2]=g;c[h+(m+24)>>2]=a;c[h+(m+12)>>2]=g;c[h+(m+8)>>2]=g;break}a=c[a>>2]|0;if((d|0)==31)b=0;else b=25-(d>>>1)|0;c:do if((c[a+4>>2]&-8|0)!=(f|0)){d=f<>>31<<2)+16|0;e=c[b>>2]|0;if(!e)break;if((c[e+4>>2]&-8|0)==(f|0)){z=e;break c}else{d=d<<1;a=e}}if(b>>>0<(c[91796]|0)>>>0)Gc();else{c[b>>2]=g;c[h+(m+24)>>2]=a;c[h+(m+12)>>2]=g;c[h+(m+8)>>2]=g;break b}}else z=a;while(0);a=z+8|0;b=c[a>>2]|0;L=c[91796]|0;if(z>>>0>=L>>>0&b>>>0>=L>>>0){c[b+12>>2]=g;c[a>>2]=g;c[h+(m+8)>>2]=b;c[h+(m+12)>>2]=z;c[h+(m+24)>>2]=0;break}else Gc()}else{L=f+m|0;c[h+4>>2]=L|3;L=h+(L+4)|0;c[L>>2]=c[L>>2]|1}while(0);L=h+8|0;return L|0}else q=m}else q=m}else q=-1;while(0);e=c[91794]|0;if(e>>>0>=q>>>0){a=e-q|0;b=c[91797]|0;if(a>>>0>15){c[91797]=b+q;c[91794]=a;c[b+(q+4)>>2]=a|1;c[b+e>>2]=a;c[b+4>>2]=q|3}else{c[91794]=0;c[91797]=0;c[b+4>>2]=e|3;L=b+(e+4)|0;c[L>>2]=c[L>>2]|1}L=b+8|0;return L|0}a=c[91795]|0;if(a>>>0>q>>>0){K=a-q|0;c[91795]=K;L=c[91798]|0;c[91798]=L+q;c[L+(q+4)>>2]=K|1;c[L+4>>2]=q|3;L=L+8|0;return L|0}do if(!(c[91910]|0)){a=gb(30)|0;if(!(a+-1&a)){c[91912]=a;c[91911]=a;c[91913]=-1;c[91914]=-1;c[91915]=0;c[91903]=0;c[91910]=(Yb(0)|0)&-16^1431655768;break}else Gc()}while(0);k=q+48|0;h=c[91912]|0;l=q+47|0;f=h+l|0;h=0-h|0;m=f&h;if(m>>>0<=q>>>0){L=0;return L|0}a=c[91902]|0;if((a|0)!=0?(t=c[91900]|0,z=t+m|0,z>>>0<=t>>>0|z>>>0>a>>>0):0){L=0;return L|0}d:do if(!(c[91903]&4)){a=c[91798]|0;e:do if(a){j=367616|0;while(1){e=c[j>>2]|0;if(e>>>0<=a>>>0?(r=j+4|0,(e+(c[r>>2]|0)|0)>>>0>a>>>0):0){g=j;d=r;a=j;break}j=c[j+8>>2]|0;if(!j){E=181;break e}}if(a){a=f-(c[91795]|0)&h;if(a>>>0<2147483647){e=gd(a|0)|0;if((e|0)==((c[g>>2]|0)+(c[d>>2]|0)|0))E=190;else E=191}else a=0}else E=181}else E=181;while(0);do if((E|0)==181){e=gd(0)|0;if((e|0)!=(-1|0)){a=e;d=c[91911]|0;j=d+-1|0;if(!(j&a))a=m;else a=m-a+(j+a&0-d)|0;d=c[91900]|0;j=d+a|0;if(a>>>0>q>>>0&a>>>0<2147483647){z=c[91902]|0;if((z|0)!=0?j>>>0<=d>>>0|j>>>0>z>>>0:0){a=0;break}d=gd(a|0)|0;if((d|0)==(e|0))E=190;else{e=d;E=191}}else a=0}else a=0}while(0);f:do if((E|0)==190){if((e|0)!=(-1|0)){v=e;p=a;E=201;break d}}else if((E|0)==191){d=0-a|0;do if((e|0)!=(-1|0)&a>>>0<2147483647&k>>>0>a>>>0?(u=c[91912]|0,u=l-a+u&0-u,u>>>0<2147483647):0)if((gd(u|0)|0)==(-1|0)){gd(d|0)|0;a=0;break f}else{a=u+a|0;break}while(0);if((e|0)==(-1|0))a=0;else{v=e;p=a;E=201;break d}}while(0);c[91903]=c[91903]|4;E=198}else{a=0;E=198}while(0);if((((E|0)==198?m>>>0<2147483647:0)?(v=gd(m|0)|0,w=gd(0)|0,(v|0)!=(-1|0)&(w|0)!=(-1|0)&v>>>0>>0):0)?(x=w-v|0,y=x>>>0>(q+40|0)>>>0,y):0){p=y?x:a;E=201}if((E|0)==201){a=(c[91900]|0)+p|0;c[91900]=a;if(a>>>0>(c[91901]|0)>>>0)c[91901]=a;g=c[91798]|0;g:do if(g){j=367616|0;do{a=c[j>>2]|0;e=j+4|0;d=c[e>>2]|0;if((v|0)==(a+d|0)){A=a;B=e;C=d;D=j;E=213;break}j=c[j+8>>2]|0}while((j|0)!=0);if(((E|0)==213?(c[D+12>>2]&8|0)==0:0)?g>>>0>=A>>>0&g>>>0>>0:0){c[B>>2]=C+p;b=(c[91795]|0)+p|0;a=g+8|0;if(!(a&7))a=0;else a=0-a&7;L=b-a|0;c[91798]=g+a;c[91795]=L;c[g+(a+4)>>2]=L|1;c[g+(b+4)>>2]=40;c[91799]=c[91914];break}a=c[91796]|0;if(v>>>0>>0){c[91796]=v;l=v}else l=a;a=v+p|0;e=367616|0;do{if((c[e>>2]|0)==(a|0)){F=e;G=e;E=223;break}e=c[e+8>>2]|0}while((e|0)!=0);if((E|0)==223?(c[G+12>>2]&8|0)==0:0){c[F>>2]=v;a=G+4|0;c[a>>2]=(c[a>>2]|0)+p;a=v+8|0;if(!(a&7))o=0;else o=0-a&7;a=v+(p+8)|0;if(!(a&7))h=0;else h=0-a&7;a=v+(h+p)|0;m=o+q|0;n=v+m|0;k=a-(v+o)-q|0;c[v+(o+4)>>2]=q|3;h:do if((a|0)!=(g|0)){if((a|0)==(c[91797]|0)){L=(c[91794]|0)+k|0;c[91794]=L;c[91797]=n;c[v+(m+4)>>2]=L|1;c[v+(L+m)>>2]=L;break}g=p+4|0;i=c[v+(g+h)>>2]|0;if((i&3|0)==1){f=i&-8;d=i>>>3;i:do if(i>>>0>=256){j=c[v+((h|24)+p)>>2]|0;b=c[v+(p+12+h)>>2]|0;do if((b|0)==(a|0)){b=h|16;e=v+(g+b)|0;i=c[e>>2]|0;if(!i){e=v+(b+p)|0;i=c[e>>2]|0;if(!i){L=0;break}}while(1){b=i+20|0;d=c[b>>2]|0;if(d){i=d;e=b;continue}b=i+16|0;d=c[b>>2]|0;if(!d)break;else{i=d;e=b}}if(e>>>0>>0)Gc();else{c[e>>2]=0;L=i;break}}else{d=c[v+((h|8)+p)>>2]|0;if(d>>>0>>0)Gc();i=d+12|0;if((c[i>>2]|0)!=(a|0))Gc();e=b+8|0;if((c[e>>2]|0)==(a|0)){c[i>>2]=b;c[e>>2]=d;L=b;break}else Gc()}while(0);if(!j)break;i=c[v+(p+28+h)>>2]|0;e=367472+(i<<2)|0;do if((a|0)!=(c[e>>2]|0)){if(j>>>0<(c[91796]|0)>>>0)Gc();i=j+16|0;if((c[i>>2]|0)==(a|0))c[i>>2]=L;else c[j+20>>2]=L;if(!L)break i}else{c[e>>2]=L;if(L)break;c[91793]=c[91793]&~(1<>>0>>0)Gc();c[L+24>>2]=j;a=h|16;i=c[v+(a+p)>>2]|0;do if(i)if(i>>>0>>0)Gc();else{c[L+16>>2]=i;c[i+24>>2]=L;break}while(0);a=c[v+(g+a)>>2]|0;if(!a)break;if(a>>>0<(c[91796]|0)>>>0)Gc();else{c[L+20>>2]=a;c[a+24>>2]=L;break}}else{e=c[v+((h|8)+p)>>2]|0;b=c[v+(p+12+h)>>2]|0;i=367208+(d<<1<<2)|0;do if((e|0)!=(i|0)){if(e>>>0>>0)Gc();if((c[e+12>>2]|0)==(a|0))break;Gc()}while(0);if((b|0)==(e|0)){c[91792]=c[91792]&~(1<>>0>>0)Gc();i=b+8|0;if((c[i>>2]|0)==(a|0)){H=i;break}Gc()}while(0);c[e+12>>2]=b;c[H>>2]=e}while(0);a=v+((f|h)+p)|0;i=f+k|0}else i=k;a=a+4|0;c[a>>2]=c[a>>2]&-2;c[v+(m+4)>>2]=i|1;c[v+(i+m)>>2]=i;a=i>>>3;if(i>>>0<256){e=a<<1;d=367208+(e<<2)|0;b=c[91792]|0;a=1<>2]|0;if(e>>>0>=(c[91796]|0)>>>0){M=a;N=e;break}Gc()}while(0);c[M>>2]=n;c[N+12>>2]=n;c[v+(m+8)>>2]=N;c[v+(m+12)>>2]=d;break}a=i>>>8;do if(!a)d=0;else{if(i>>>0>16777215){d=31;break}K=(a+1048320|0)>>>16&8;L=a<>>16&4;L=L<>>16&2;d=14-(H|K|d)+(L<>>15)|0;d=i>>>(d+7|0)&1|d<<1}while(0);a=367472+(d<<2)|0;c[v+(m+28)>>2]=d;c[v+(m+20)>>2]=0;c[v+(m+16)>>2]=0;e=c[91793]|0;b=1<>2]=n;c[v+(m+24)>>2]=a;c[v+(m+12)>>2]=n;c[v+(m+8)>>2]=n;break}a=c[a>>2]|0;if((d|0)==31)e=0;else e=25-(d>>>1)|0;j:do if((c[a+4>>2]&-8|0)!=(i|0)){d=i<>>31<<2)+16|0;e=c[b>>2]|0;if(!e)break;if((c[e+4>>2]&-8|0)==(i|0)){O=e;break j}else{d=d<<1;a=e}}if(b>>>0<(c[91796]|0)>>>0)Gc();else{c[b>>2]=n;c[v+(m+24)>>2]=a;c[v+(m+12)>>2]=n;c[v+(m+8)>>2]=n;break h}}else O=a;while(0);a=O+8|0;b=c[a>>2]|0;L=c[91796]|0;if(O>>>0>=L>>>0&b>>>0>=L>>>0){c[b+12>>2]=n;c[a>>2]=n;c[v+(m+8)>>2]=b;c[v+(m+12)>>2]=O;c[v+(m+24)>>2]=0;break}else Gc()}else{L=(c[91795]|0)+k|0;c[91795]=L;c[91798]=n;c[v+(m+4)>>2]=L|1}while(0);L=v+(o|8)|0;return L|0}e=367616|0;while(1){a=c[e>>2]|0;if(a>>>0<=g>>>0?(b=c[e+4>>2]|0,i=a+b|0,i>>>0>g>>>0):0)break;e=c[e+8>>2]|0}e=a+(b+-39)|0;if(!(e&7))e=0;else e=0-e&7;b=a+(b+-47+e)|0;b=b>>>0<(g+16|0)>>>0?g:b;e=b+8|0;a=v+8|0;if(!(a&7))a=0;else a=0-a&7;L=p+-40-a|0;c[91798]=v+a;c[91795]=L;c[v+(a+4)>>2]=L|1;c[v+(p+-36)>>2]=40;c[91799]=c[91914];c[b+4>>2]=27;c[e+0>>2]=c[91904];c[e+4>>2]=c[91905];c[e+8>>2]=c[91906];c[e+12>>2]=c[91907];c[91904]=v;c[91905]=p;c[91907]=0;c[91906]=e;a=b+28|0;c[a>>2]=7;if((b+32|0)>>>0>>0)do{L=a;a=a+4|0;c[a>>2]=7}while((L+8|0)>>>0>>0);if((b|0)!=(g|0)){i=b-g|0;a=g+(i+4)|0;c[a>>2]=c[a>>2]&-2;c[g+4>>2]=i|1;c[g+i>>2]=i;a=i>>>3;if(i>>>0<256){e=a<<1;d=367208+(e<<2)|0;b=c[91792]|0;a=1<>2]|0;if(b>>>0>=(c[91796]|0)>>>0){I=a;J=b;break}Gc()}while(0);c[I>>2]=g;c[J+12>>2]=g;c[g+8>>2]=J;c[g+12>>2]=d;break}a=i>>>8;if(a)if(i>>>0>16777215)e=31;else{H=(a+1048320|0)>>>16&8;L=a<>>16&4;L=L<>>16&2;e=14-(G|H|e)+(L<>>15)|0;e=i>>>(e+7|0)&1|e<<1}else e=0;a=367472+(e<<2)|0;c[g+28>>2]=e;c[g+20>>2]=0;c[g+16>>2]=0;b=c[91793]|0;d=1<>2]=g;c[g+24>>2]=a;c[g+12>>2]=g;c[g+8>>2]=g;break}a=c[a>>2]|0;if((e|0)==31)b=0;else b=25-(e>>>1)|0;k:do if((c[a+4>>2]&-8|0)!=(i|0)){e=i<>>31<<2)+16|0;d=c[b>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(i|0)){K=d;break k}else{e=e<<1;a=d}}if(b>>>0<(c[91796]|0)>>>0)Gc();else{c[b>>2]=g;c[g+24>>2]=a;c[g+12>>2]=g;c[g+8>>2]=g;break g}}else K=a;while(0);a=K+8|0;b=c[a>>2]|0;L=c[91796]|0;if(K>>>0>=L>>>0&b>>>0>=L>>>0){c[b+12>>2]=g;c[a>>2]=g;c[g+8>>2]=b;c[g+12>>2]=K;c[g+24>>2]=0;break}else Gc()}}else{L=c[91796]|0;if((L|0)==0|v>>>0>>0)c[91796]=v;c[91904]=v;c[91905]=p;c[91907]=0;c[91801]=c[91910];c[91800]=-1;a=0;do{L=a<<1;K=367208+(L<<2)|0;c[367208+(L+3<<2)>>2]=K;c[367208+(L+2<<2)>>2]=K;a=a+1|0}while((a|0)!=32);a=v+8|0;if(!(a&7))a=0;else a=0-a&7;L=p+-40-a|0;c[91798]=v+a;c[91795]=L;c[v+(a+4)>>2]=L|1;c[v+(p+-36)>>2]=40;c[91799]=c[91914]}while(0);a=c[91795]|0;if(a>>>0>q>>>0){K=a-q|0;c[91795]=K;L=c[91798]|0;c[91798]=L+q;c[L+(q+4)>>2]=K|1;c[L+4>>2]=q|3;L=L+8|0;return L|0}}c[(md()|0)>>2]=12;L=0;return L|0}function rea(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;if(!a)return;b=a+-8|0;i=c[91796]|0;if(b>>>0>>0)Gc();f=c[a+-4>>2]|0;d=f&3;if((d|0)==1)Gc();o=f&-8;q=a+(o+-8)|0;do if(!(f&1)){b=c[b>>2]|0;if(!d)return;j=-8-b|0;l=a+j|0;m=b+o|0;if(l>>>0>>0)Gc();if((l|0)==(c[91797]|0)){b=a+(o+-4)|0;f=c[b>>2]|0;if((f&3|0)!=3){u=l;g=m;break}c[91794]=m;c[b>>2]=f&-2;c[a+(j+4)>>2]=m|1;c[q>>2]=m;return}e=b>>>3;if(b>>>0<256){d=c[a+(j+8)>>2]|0;f=c[a+(j+12)>>2]|0;b=367208+(e<<1<<2)|0;if((d|0)!=(b|0)){if(d>>>0>>0)Gc();if((c[d+12>>2]|0)!=(l|0))Gc()}if((f|0)==(d|0)){c[91792]=c[91792]&~(1<>>0>>0)Gc();b=f+8|0;if((c[b>>2]|0)==(l|0))h=b;else Gc()}else h=f+8|0;c[d+12>>2]=f;c[h>>2]=d;u=l;g=m;break}h=c[a+(j+24)>>2]|0;d=c[a+(j+12)>>2]|0;do if((d|0)==(l|0)){f=a+(j+20)|0;b=c[f>>2]|0;if(!b){f=a+(j+16)|0;b=c[f>>2]|0;if(!b){k=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e){b=e;f=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;f=d}}if(f>>>0>>0)Gc();else{c[f>>2]=0;k=b;break}}else{e=c[a+(j+8)>>2]|0;if(e>>>0>>0)Gc();b=e+12|0;if((c[b>>2]|0)!=(l|0))Gc();f=d+8|0;if((c[f>>2]|0)==(l|0)){c[b>>2]=d;c[f>>2]=e;k=d;break}else Gc()}while(0);if(h){b=c[a+(j+28)>>2]|0;f=367472+(b<<2)|0;if((l|0)==(c[f>>2]|0)){c[f>>2]=k;if(!k){c[91793]=c[91793]&~(1<>>0<(c[91796]|0)>>>0)Gc();b=h+16|0;if((c[b>>2]|0)==(l|0))c[b>>2]=k;else c[h+20>>2]=k;if(!k){u=l;g=m;break}}f=c[91796]|0;if(k>>>0>>0)Gc();c[k+24>>2]=h;b=c[a+(j+16)>>2]|0;do if(b)if(b>>>0>>0)Gc();else{c[k+16>>2]=b;c[b+24>>2]=k;break}while(0);b=c[a+(j+20)>>2]|0;if(b)if(b>>>0<(c[91796]|0)>>>0)Gc();else{c[k+20>>2]=b;c[b+24>>2]=k;u=l;g=m;break}else{u=l;g=m}}else{u=l;g=m}}else{u=b;g=o}while(0);if(u>>>0>=q>>>0)Gc();b=a+(o+-4)|0;f=c[b>>2]|0;if(!(f&1))Gc();if(!(f&2)){if((q|0)==(c[91798]|0)){t=(c[91795]|0)+g|0;c[91795]=t;c[91798]=u;c[u+4>>2]=t|1;if((u|0)!=(c[91797]|0))return;c[91797]=0;c[91794]=0;return}if((q|0)==(c[91797]|0)){t=(c[91794]|0)+g|0;c[91794]=t;c[91797]=u;c[u+4>>2]=t|1;c[u+t>>2]=t;return}g=(f&-8)+g|0;e=f>>>3;do if(f>>>0>=256){h=c[a+(o+16)>>2]|0;b=c[a+(o|4)>>2]|0;do if((b|0)==(q|0)){f=a+(o+12)|0;b=c[f>>2]|0;if(!b){f=a+(o+8)|0;b=c[f>>2]|0;if(!b){p=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e){b=e;f=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;f=d}}if(f>>>0<(c[91796]|0)>>>0)Gc();else{c[f>>2]=0;p=b;break}}else{f=c[a+o>>2]|0;if(f>>>0<(c[91796]|0)>>>0)Gc();d=f+12|0;if((c[d>>2]|0)!=(q|0))Gc();e=b+8|0;if((c[e>>2]|0)==(q|0)){c[d>>2]=b;c[e>>2]=f;p=b;break}else Gc()}while(0);if(h){b=c[a+(o+20)>>2]|0;f=367472+(b<<2)|0;if((q|0)==(c[f>>2]|0)){c[f>>2]=p;if(!p){c[91793]=c[91793]&~(1<>>0<(c[91796]|0)>>>0)Gc();b=h+16|0;if((c[b>>2]|0)==(q|0))c[b>>2]=p;else c[h+20>>2]=p;if(!p)break}f=c[91796]|0;if(p>>>0>>0)Gc();c[p+24>>2]=h;b=c[a+(o+8)>>2]|0;do if(b)if(b>>>0>>0)Gc();else{c[p+16>>2]=b;c[b+24>>2]=p;break}while(0);b=c[a+(o+12)>>2]|0;if(b)if(b>>>0<(c[91796]|0)>>>0)Gc();else{c[p+20>>2]=b;c[b+24>>2]=p;break}}}else{d=c[a+o>>2]|0;f=c[a+(o|4)>>2]|0;b=367208+(e<<1<<2)|0;if((d|0)!=(b|0)){if(d>>>0<(c[91796]|0)>>>0)Gc();if((c[d+12>>2]|0)!=(q|0))Gc()}if((f|0)==(d|0)){c[91792]=c[91792]&~(1<>>0<(c[91796]|0)>>>0)Gc();b=f+8|0;if((c[b>>2]|0)==(q|0))n=b;else Gc()}else n=f+8|0;c[d+12>>2]=f;c[n>>2]=d}while(0);c[u+4>>2]=g|1;c[u+g>>2]=g;if((u|0)==(c[91797]|0)){c[91794]=g;return}}else{c[b>>2]=f&-2;c[u+4>>2]=g|1;c[u+g>>2]=g}b=g>>>3;if(g>>>0<256){d=b<<1;f=367208+(d<<2)|0;e=c[91792]|0;b=1<>2]|0;if(d>>>0<(c[91796]|0)>>>0)Gc();else{r=b;s=d}}else{c[91792]=e|b;r=367208+(d+2<<2)|0;s=f}c[r>>2]=u;c[s+12>>2]=u;c[u+8>>2]=s;c[u+12>>2]=f;return}b=g>>>8;if(b)if(g>>>0>16777215)f=31;else{r=(b+1048320|0)>>>16&8;s=b<>>16&4;s=s<>>16&2;f=14-(q|r|f)+(s<>>15)|0;f=g>>>(f+7|0)&1|f<<1}else f=0;b=367472+(f<<2)|0;c[u+28>>2]=f;c[u+20>>2]=0;c[u+16>>2]=0;d=c[91793]|0;e=1<>2]|0;if((f|0)==31)d=0;else d=25-(f>>>1)|0;b:do if((c[b+4>>2]&-8|0)!=(g|0)){f=g<>>31<<2)+16|0;e=c[d>>2]|0;if(!e)break;if((c[e+4>>2]&-8|0)==(g|0)){t=e;break b}else{f=f<<1;b=e}}if(d>>>0<(c[91796]|0)>>>0)Gc();else{c[d>>2]=u;c[u+24>>2]=b;c[u+12>>2]=u;c[u+8>>2]=u;break a}}else t=b;while(0);b=t+8|0;d=c[b>>2]|0;s=c[91796]|0;if(t>>>0>=s>>>0&d>>>0>=s>>>0){c[d+12>>2]=u;c[b>>2]=u;c[u+8>>2]=d;c[u+12>>2]=t;c[u+24>>2]=0;break}else Gc()}else{c[91793]=d|e;c[b>>2]=u;c[u+24>>2]=b;c[u+12>>2]=u;c[u+8>>2]=u}while(0);u=(c[91800]|0)+-1|0;c[91800]=u;if(!u)b=367624|0;else return;while(1){b=c[b>>2]|0;if(!b)break;else b=b+8|0}c[91800]=-1;return}function sea(a,b){a=a|0;b=b|0;var d=0;if(a){d=da(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;b=qea(d)|0;if(!b)return b|0;if(!(c[b+-4>>2]&3))return b|0;sfa(b|0,0,d|0)|0;return b|0}function tea(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){a=qea(b)|0;return a|0}if(b>>>0>4294967231){c[(md()|0)>>2]=12;a=0;return a|0}if(b>>>0<11)d=16;else d=b+11&-8;d=ifa(a+-8|0,d)|0;if(d){a=d+8|0;return a|0}d=qea(b)|0;if(!d){a=0;return a|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;qfa(d|0,a|0,(e>>>0>>0?e:b)|0)|0;rea(a);a=d;return a|0}function uea(a,b){a=a|0;b=b|0;if(a>>>0<9){b=qea(b)|0;return b|0}else{b=jfa(a,b)|0;return b|0}return 0}function vea(a){a=a|0;return (a+-48|0)>>>0<10|0}function wea(a){a=a|0;if((a|0)==32)a=1;else a=(a+-9|0)>>>0<5;return a&1|0}function xea(a){a=a|0;return (a+-65|0)>>>0<26|0}function yea(a){a=a|0;if((a+-48|0)>>>0<10){a=1;a=a&1;return a|0}a=((a|32)+-97|0)>>>0<6;a=a&1;return a|0}function zea(a){a=a|0;var b=0;b=(xea(a)|0)==0;return (b?a:a|32)|0}function Aea(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(e>>>0>36){c[(md()|0)>>2]=22;q=0;r=0;H=q;return r|0}r=b+4|0;q=b+100|0;do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=Dea(b)|0}while((wea(i)|0)!=0);do if((i|0)==43|(i|0)==45){k=((i|0)==45)<<31>>31;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0;p=k;break}else{i=Dea(b)|0;p=k;break}}else p=0;while(0);j=(e|0)==0;do if((e&-17|0)==0&(i|0)==48){k=c[r>>2]|0;if(k>>>0<(c[q>>2]|0)>>>0){c[r>>2]=k+1;i=d[k>>0]|0}else i=Dea(b)|0;if((i|32|0)!=120)if(j){e=8;n=46;break}else{n=32;break}e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;i=d[e>>0]|0}else i=Dea(b)|0;if((d[i+367665>>0]|0)>15){e=(c[q>>2]|0)==0;if(!e)c[r>>2]=(c[r>>2]|0)+-1;if(!f){Cea(b,0);q=0;r=0;H=q;return r|0}if(e){q=0;r=0;H=q;return r|0}c[r>>2]=(c[r>>2]|0)+-1;q=0;r=0;H=q;return r|0}else{e=16;n=46}}else{e=j?10:e;if((d[i+367665>>0]|0)>>>0>>0)n=32;else{if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;Cea(b,0);c[(md()|0)>>2]=22;q=0;r=0;H=q;return r|0}}while(0);if((n|0)==32)if((e|0)==10){e=i+-48|0;if(e>>>0<10){k=e;e=0;do{e=(e*10|0)+k|0;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=Dea(b)|0;k=i+-48|0}while(k>>>0<10&e>>>0<429496729);k=0}else{e=0;k=0}j=i+-48|0;if(j>>>0<10){while(1){l=Ifa(e|0,k|0,10,0)|0;f=H;m=((j|0)<0)<<31>>31;o=~m;if(f>>>0>o>>>0|(f|0)==(o|0)&l>>>0>~j>>>0){l=e;break}e=yfa(l|0,f|0,j|0,m|0)|0;k=H;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=Dea(b)|0;j=i+-48|0;if(!(j>>>0<10&(k>>>0<429496729|(k|0)==429496729&e>>>0<2576980378))){l=e;break}}if(j>>>0>9)e=l;else{e=10;n=72}}}else n=46;a:do if((n|0)==46){if(!(e+-1&e)){n=a[367928+((e*23|0)>>>5&7)>>0]|0;k=a[i+367665>>0]|0;j=k&255;if(j>>>0>>0){k=0;while(1){l=j|k<>2]|0;if(k>>>0<(c[q>>2]|0)>>>0){c[r>>2]=k+1;i=d[k>>0]|0}else i=Dea(b)|0;k=a[i+367665>>0]|0;j=k&255;if(!(j>>>0>>0&l>>>0<134217728))break;else k=l}j=0}else{j=0;l=0}f=Bfa(-1,-1,n|0)|0;m=H;if((k&255)>>>0>=e>>>0|(j>>>0>m>>>0|(j|0)==(m|0)&l>>>0>f>>>0)){k=j;n=72;break}else i=j;while(1){l=vfa(l|0,i|0,n|0)|0;j=H;l=k&255|l;k=c[r>>2]|0;if(k>>>0<(c[q>>2]|0)>>>0){c[r>>2]=k+1;i=d[k>>0]|0}else i=Dea(b)|0;k=a[i+367665>>0]|0;if((k&255)>>>0>=e>>>0|(j>>>0>m>>>0|(j|0)==(m|0)&l>>>0>f>>>0)){k=j;n=72;break a}else i=j}}j=a[i+367665>>0]|0;k=j&255;if(k>>>0>>0){i=0;while(1){l=k+(da(i,e)|0)|0;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=Dea(b)|0;j=a[i+367665>>0]|0;k=j&255;if(!(k>>>0>>0&l>>>0<119304647))break;else i=l}k=0}else{l=0;k=0}if((j&255)>>>0>>0){n=Jfa(-1,-1,e|0,0)|0;o=H;while(1){if(k>>>0>o>>>0|(k|0)==(o|0)&l>>>0>n>>>0){n=72;break a}f=Ifa(l|0,k|0,e|0,0)|0;m=H;j=j&255;if(m>>>0>4294967295|(m|0)==-1&f>>>0>~j>>>0){n=72;break a}l=yfa(j|0,0,f|0,m|0)|0;k=H;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=Dea(b)|0;j=a[i+367665>>0]|0;if((j&255)>>>0>=e>>>0){n=72;break}}}else n=72}while(0);if((n|0)==72)if((d[i+367665>>0]|0)>>>0>>0){do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=Dea(b)|0}while((d[i+367665>>0]|0)>>>0>>0);c[(md()|0)>>2]=34;k=h;e=g}else e=l;if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;if(!(k>>>0>>0|(k|0)==(h|0)&e>>>0>>0)){if(!((g&1|0)!=0|0!=0|(p|0)!=0)){c[(md()|0)>>2]=34;r=yfa(g|0,h|0,-1,-1)|0;q=H;H=q;return r|0}if(k>>>0>h>>>0|(k|0)==(h|0)&e>>>0>g>>>0){c[(md()|0)>>2]=34;q=h;r=g;H=q;return r|0}}r=((p|0)<0)<<31>>31;r=xfa(e^p|0,k^r|0,p|0,r|0)|0;q=H;H=q;return r|0}function Bea(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0.0,M=0.0;K=i;i=i+512|0;F=K;if((e|0)==1){J=53;I=-1074}else if(!e){J=24;I=-149}else if((e|0)==2){J=53;I=-1074}else{t=0.0;i=K;return +t}C=b+4|0;B=b+100|0;do{e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;e=d[e>>0]|0}else e=Dea(b)|0}while((wea(e)|0)!=0);do if((e|0)==43|(e|0)==45){h=1-(((e|0)==45&1)<<1)|0;e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;e=d[e>>0]|0;G=h;break}else{e=Dea(b)|0;G=h;break}}else G=1;while(0);h=e;e=0;do{if((h|32|0)!=(a[367944+e>>0]|0))break;do if(e>>>0<7){h=c[C>>2]|0;if(h>>>0<(c[B>>2]|0)>>>0){c[C>>2]=h+1;h=d[h>>0]|0;break}else{h=Dea(b)|0;break}}while(0);e=e+1|0}while(e>>>0<8);do if((e|0)==3)z=23;else if((e|0)!=8){n=(f|0)!=0;if(e>>>0>3&n)if((e|0)==8)break;else{z=23;break}a:do if(!e){e=0;do{if((h|32|0)!=(a[368536+e>>0]|0))break a;do if(e>>>0<2){h=c[C>>2]|0;if(h>>>0<(c[B>>2]|0)>>>0){c[C>>2]=h+1;h=d[h>>0]|0;break}else{h=Dea(b)|0;break}}while(0);e=e+1|0}while(e>>>0<3)}while(0);if(!e){do if((h|0)==48){e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;e=d[e>>0]|0}else e=Dea(b)|0;if((e|32|0)!=120){if(!(c[B>>2]|0)){e=48;break}c[C>>2]=(c[C>>2]|0)+-1;e=48;break}e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;n=d[e>>0]|0;h=0}else{n=Dea(b)|0;h=0}while(1){if((n|0)==46){z=70;break}else if((n|0)!=48){e=0;p=0;l=0;v=0;r=h;k=0;u=0;o=1.0;h=0;j=0.0;break}e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;n=d[e>>0]|0;h=1;continue}else{n=Dea(b)|0;h=1;continue}}if((z|0)==70){e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;n=d[e>>0]|0}else n=Dea(b)|0;if((n|0)==48){l=0;h=0;do{e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;n=d[e>>0]|0}else n=Dea(b)|0;l=yfa(l|0,h|0,-1,-1)|0;h=H}while((n|0)==48);e=0;p=0;v=h;r=1;k=1;u=0;o=1.0;h=0;j=0.0}else{e=0;p=0;l=0;v=0;r=h;k=1;u=0;o=1.0;h=0;j=0.0}}b:while(1){q=n+-48|0;do if(q>>>0>=10){m=n|32;s=(n|0)==46;if(!((m+-97|0)>>>0<6|s)){q=v;break b}if(s)if(!k){l=p;m=e;k=1;q=u;g=o;break}else{q=v;n=46;break b}else{n=(n|0)>57?m+-87|0:q;z=83;break}}else{n=q;z=83}while(0);if((z|0)==83){z=0;do if(!((e|0)<0|(e|0)==0&p>>>0<8)){if((e|0)<0|(e|0)==0&p>>>0<14){t=o*.0625;q=u;g=t;j=j+t*+(n|0);break}if((n|0)==0|(u|0)!=0){q=u;g=o}else{q=1;g=o;j=j+o*.5}}else{q=u;g=o;h=n+(h<<4)|0}while(0);p=yfa(p|0,e|0,1,0)|0;m=v;e=H;r=1}n=c[C>>2]|0;if(n>>>0<(c[B>>2]|0)>>>0){c[C>>2]=n+1;v=m;n=d[n>>0]|0;u=q;o=g;continue}else{v=m;n=Dea(b)|0;u=q;o=g;continue}}if(!r){e=(c[B>>2]|0)==0;if(!e)c[C>>2]=(c[C>>2]|0)+-1;if(f){if(!e?(y=c[C>>2]|0,c[C>>2]=y+-1,(k|0)!=0):0)c[C>>2]=y+-2}else Cea(b,0);t=+(G|0)*0.0;i=K;return +t}r=(k|0)==0;l=r?p:l;r=r?e:q;if((e|0)<0|(e|0)==0&p>>>0<8)do{h=h<<4;p=yfa(p|0,e|0,1,0)|0;e=H}while((e|0)<0|(e|0)==0&p>>>0<8);do if((n|32|0)==112){k=lfa(b,f)|0;e=H;if((k|0)==0&(e|0)==-2147483648)if(!f){Cea(b,0);t=0.0;i=K;return +t}else{if(!(c[B>>2]|0)){k=0;e=0;break}c[C>>2]=(c[C>>2]|0)+-1;k=0;e=0;break}}else if(!(c[B>>2]|0)){k=0;e=0}else{c[C>>2]=(c[C>>2]|0)+-1;k=0;e=0}while(0);F=vfa(l|0,r|0,2)|0;F=yfa(F|0,H|0,-32,-1)|0;e=yfa(F|0,H|0,k|0,e|0)|0;k=H;if(!h){t=+(G|0)*0.0;i=K;return +t}if((k|0)>0|(k|0)==0&e>>>0>(0-I|0)>>>0){c[(md()|0)>>2]=34;t=+(G|0)*17976931348623157.0e292*17976931348623157.0e292;i=K;return +t}F=I+-106|0;E=((F|0)<0)<<31>>31;if((k|0)<(E|0)|(k|0)==(E|0)&e>>>0>>0){c[(md()|0)>>2]=34;t=+(G|0)*2.2250738585072014e-308*2.2250738585072014e-308;i=K;return +t}if((h|0)>-1){do{h=h<<1;if(!(j>=.5))g=j;else{g=j+-1.0;h=h|1}j=j+g;e=yfa(e|0,k|0,-1,-1)|0;k=H}while((h|0)>-1);r=e;n=h;o=j}else{r=e;n=h;o=j}e=xfa(32,0,I|0,((I|0)<0)<<31>>31|0)|0;e=yfa(r|0,k|0,e|0,H|0)|0;I=H;if(0>(I|0)|0==(I|0)&J>>>0>e>>>0)if((e|0)<0){h=0;z=126}else z=124;else{e=J;z=124}if((z|0)==124)if((e|0)<53){h=e;z=126}else{j=+(G|0);g=0.0}if((z|0)==126){g=+(G|0);e=h;j=g;g=+Fea(+Nea(1.0,84-h|0),g)}J=(e|0)<32&o!=0.0&(n&1|0)==0;g=j*(J?0.0:o)+(g+j*+(((J&1)+n|0)>>>0))-g;if(!(g!=0.0))c[(md()|0)>>2]=34;t=+Oea(g,r);i=K;return +t}else e=h;while(0);D=I+J|0;E=0-D|0;n=0;while(1){if((e|0)==46){z=137;break}else if((e|0)!=48){h=0;k=0;q=n;l=0;break}e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;e=d[e>>0]|0;n=1;continue}else{e=Dea(b)|0;n=1;continue}}if((z|0)==137){e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;e=d[e>>0]|0}else e=Dea(b)|0;if((e|0)==48){h=0;e=0;while(1){h=yfa(h|0,e|0,-1,-1)|0;n=H;e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;e=d[e>>0]|0}else e=Dea(b)|0;if((e|0)==48)e=n;else{k=n;q=1;l=1;break}}}else{h=0;k=0;q=n;l=1}}c[F>>2]=0;r=e+-48|0;n=(e|0)==46;c:do if(r>>>0<10|n){A=F+496|0;u=0;p=0;m=n;z=r;n=h;y=k;v=l;l=0;h=0;r=0;d:while(1){do if(m)if(!v){n=u;k=p;v=1}else{k=y;e=u;break d}else{m=yfa(u|0,p|0,1,0)|0;p=H;s=(e|0)!=48;if((h|0)>=125){if(!s){k=y;u=m;break}c[A>>2]=c[A>>2]|1;k=y;u=m;break}k=F+(h<<2)|0;if(!l)e=z;else e=e+-48+((c[k>>2]|0)*10|0)|0;c[k>>2]=e;l=l+1|0;z=(l|0)==9;k=y;u=m;q=1;l=z?0:l;h=(z&1)+h|0;r=s?m:r}while(0);e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;e=d[e>>0]|0}else e=Dea(b)|0;z=e+-48|0;m=(e|0)==46;if(!(z>>>0<10|m)){m=p;p=v;z=160;break c}else y=k}q=(q|0)!=0;z=168}else{n=h;u=0;m=0;p=l;l=0;h=0;r=0;z=160}while(0);do if((z|0)==160){A=(p|0)==0;n=A?u:n;k=A?m:k;q=(q|0)!=0;if(!(q&(e|32|0)==101))if((e|0)>-1){e=u;p=m;z=168;break}else{e=u;p=m;z=170;break}p=lfa(b,f)|0;e=H;do if((p|0)==0&(e|0)==-2147483648)if(!f){Cea(b,0);t=0.0;i=K;return +t}else{if(!(c[B>>2]|0)){p=0;e=0;break}c[C>>2]=(c[C>>2]|0)+-1;p=0;e=0;break}while(0);n=yfa(p|0,e|0,n|0,k|0)|0;q=u;k=H;p=m}while(0);if((z|0)==168)if(c[B>>2]|0){c[C>>2]=(c[C>>2]|0)+-1;if(q)q=e;else z=171}else z=170;if((z|0)==170)if(q)q=e;else z=171;if((z|0)==171){c[(md()|0)>>2]=22;Cea(b,0);t=0.0;i=K;return +t}e=c[F>>2]|0;if(!e){t=+(G|0)*0.0;i=K;return +t}if((n|0)==(q|0)&(k|0)==(p|0)&((p|0)<0|(p|0)==0&q>>>0<10)?J>>>0>30|(e>>>J|0)==0:0){t=+(G|0)*+(e>>>0);i=K;return +t}b=(I|0)/-2|0;C=((b|0)<0)<<31>>31;if((k|0)>(C|0)|(k|0)==(C|0)&n>>>0>b>>>0){c[(md()|0)>>2]=34;t=+(G|0)*17976931348623157.0e292*17976931348623157.0e292;i=K;return +t}b=I+-106|0;C=((b|0)<0)<<31>>31;if((k|0)<(C|0)|(k|0)==(C|0)&n>>>0>>0){c[(md()|0)>>2]=34;t=+(G|0)*2.2250738585072014e-308*2.2250738585072014e-308;i=K;return +t}if(l){if((l|0)<9){k=F+(h<<2)|0;e=c[k>>2]|0;do{e=e*10|0;l=l+1|0}while((l|0)!=9);c[k>>2]=e}h=h+1|0}if((r|0)<9?(r|0)<=(n|0)&(n|0)<18:0){if((n|0)==9){t=+(G|0)*+((c[F>>2]|0)>>>0);i=K;return +t}if((n|0)<9){t=+(G|0)*+((c[F>>2]|0)>>>0)/+(c[367968+(8-n<<2)>>2]|0);i=K;return +t}b=J+27+(da(n,-3)|0)|0;e=c[F>>2]|0;if((b|0)>30|(e>>>b|0)==0){t=+(G|0)*+(e>>>0)*+(c[367968+(n+-10<<2)>>2]|0);i=K;return +t}}e=(n|0)%9|0;if(!e){k=0;e=0}else{r=(n|0)>-1?e:e+9|0;p=c[367968+(8-r<<2)>>2]|0;if(h){q=1e9/(p|0)|0;k=0;l=0;m=0;e=n;do{B=F+(m<<2)|0;C=c[B>>2]|0;b=((C>>>0)/(p>>>0)|0)+l|0;c[B>>2]=b;l=da((C>>>0)%(p>>>0)|0,q)|0;C=m;m=m+1|0;if((C|0)==(k|0)&(b|0)==0){k=m&127;e=e+-9|0}}while((m|0)!=(h|0));if(!l)l=e;else{c[F+(h<<2)>>2]=l;l=e;h=h+1|0}}else{k=0;l=n;h=0}e=0;n=9-r+l|0}e:while(1){q=F+(k<<2)|0;if((n|0)<18)do{p=0;l=h+127|0;while(1){r=l&127;q=F+(r<<2)|0;l=vfa(c[q>>2]|0,0,29)|0;l=yfa(l|0,H|0,p|0,0)|0;m=H;if(m>>>0>0|(m|0)==0&l>>>0>1e9){p=Jfa(l|0,m|0,1e9,0)|0;l=Kfa(l|0,m|0,1e9,0)|0}else p=0;c[q>>2]=l;m=(r|0)==(k|0);if(!((r|0)!=(h+127&127|0)|m))h=(l|0)==0?r:h;if(m){l=p;break}else l=r+-1|0}e=e+-29|0}while((l|0)==0);else{if((n|0)!=18)break;do{if((c[q>>2]|0)>>>0>=9007199){n=18;break e}l=0;m=h+127|0;while(1){r=m&127;p=F+(r<<2)|0;m=vfa(c[p>>2]|0,0,29)|0;l=yfa(m|0,H|0,l|0,0)|0;m=H;if(m>>>0>0|(m|0)==0&l>>>0>1e9){b=Jfa(l|0,m|0,1e9,0)|0;m=Kfa(l|0,m|0,1e9,0)|0;l=b}else{m=l;l=0}c[p>>2]=m;p=(r|0)==(k|0);if(!((r|0)!=(h+127&127|0)|p))h=(m|0)==0?r:h;if(p)break;else m=r+-1|0}e=e+-29|0}while((l|0)==0)}k=k+127&127;if((k|0)==(h|0)){b=h+127&127;h=F+((h+126&127)<<2)|0;c[h>>2]=c[h>>2]|c[F+(b<<2)>>2];h=b}c[F+(k<<2)>>2]=l;n=n+9|0}f:while(1){m=h+1&127;v=F+((h+127&127)<<2)|0;while(1){s=(n|0)==18;u=(n|0)>27?9:1;while(1){r=0;while(1){p=r+k&127;if((p|0)==(h|0)){l=2;break}p=c[F+(p<<2)>>2]|0;q=c[367960+(r<<2)>>2]|0;if(p>>>0>>0){l=2;break}l=r+1|0;if(p>>>0>q>>>0){l=r;break}if((l|0)<2)r=l;else break}if((l|0)==2&s)break f;e=u+e|0;if((k|0)==(h|0))k=h;else break}q=(1<>>u;r=k;l=0;p=k;while(1){C=F+(p<<2)|0;b=c[C>>2]|0;k=(b>>>u)+l|0;c[C>>2]=k;l=da(b&q,s)|0;k=(p|0)==(r|0)&(k|0)==0;p=p+1&127;n=k?n+-9|0:n;k=k?p:r;if((p|0)==(h|0))break;else r=k}if(!l)continue;if((m|0)!=(k|0))break;c[v>>2]=c[v>>2]|1}c[F+(h<<2)>>2]=l;h=m}l=k&127;if((l|0)==(h|0)){c[F+(m+-1<<2)>>2]=0;h=m}g=+((c[F+(l<<2)>>2]|0)>>>0);l=k+1&127;if((l|0)==(h|0)){q=h+1&127;c[F+(q+-1<<2)>>2]=0}else q=h;j=+(G|0);o=j*(g*1.0e9+ +((c[F+(l<<2)>>2]|0)>>>0));p=e+53|0;r=p-I|0;if((r|0)<(J|0))if((r|0)<0){l=0;h=1;z=244}else{l=r;h=1;z=243}else{l=J;h=0;z=243}if((z|0)==243)if((l|0)<53)z=244;else{t=0.0;g=0.0}if((z|0)==244){M=+Fea(+Nea(1.0,105-l|0),o);L=+Hea(o,+Nea(1.0,53-l|0));t=M;g=L;o=M+(o-L)}n=k+2&127;do if((n|0)==(q|0))j=g;else{m=c[F+(n<<2)>>2]|0;do if(m>>>0>=5e8){if(m>>>0>5e8){g=j*.75+g;break}if((k+3&127|0)==(q|0)){g=j*.5+g;break}else{g=j*.75+g;break}}else{if((m|0)==0?(k+3&127|0)==(q|0):0)break;g=j*.25+g}while(0);if((53-l|0)<=1){j=g;break}if(+Hea(g,1.0)!=0.0){j=g;break}j=g+1.0}while(0);g=o+j-t;do if((p&2147483647|0)>(-2-D|0)){if(+S(+g)>=9007199254740992.0){h=(h|0)!=0&(l|0)==(r|0)?0:h;e=e+1|0;g=g*.5}if((e+50|0)<=(E|0)?!((h|0)!=0&j!=0.0):0)break;c[(md()|0)>>2]=34}while(0);M=+Oea(g,e);i=K;return +M}else if((e|0)==3){e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;e=d[e>>0]|0}else e=Dea(b)|0;if((e|0)==40)e=1;else{if(!(c[B>>2]|0)){M=w;i=K;return +M}c[C>>2]=(c[C>>2]|0)+-1;M=w;i=K;return +M}while(1){h=c[C>>2]|0;if(h>>>0<(c[B>>2]|0)>>>0){c[C>>2]=h+1;h=d[h>>0]|0}else h=Dea(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h+-97|0)>>>0<26|(h|0)==95):0)break;e=e+1|0}if((h|0)==41){M=w;i=K;return +M}h=(c[B>>2]|0)==0;if(!h)c[C>>2]=(c[C>>2]|0)+-1;if(!n){c[(md()|0)>>2]=22;Cea(b,0);M=0.0;i=K;return +M}if((e|0)==0|h){M=w;i=K;return +M}do{e=e+-1|0;c[C>>2]=(c[C>>2]|0)+-1}while((e|0)!=0);g=w;i=K;return +g}else{if(c[B>>2]|0)c[C>>2]=(c[C>>2]|0)+-1;c[(md()|0)>>2]=22;Cea(b,0);M=0.0;i=K;return +M}}while(0);if((z|0)==23){h=(c[B>>2]|0)==0;if(!h)c[C>>2]=(c[C>>2]|0)+-1;if(!(e>>>0<4|(f|0)==0|h))do{c[C>>2]=(c[C>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}M=+(G|0)*x;i=K;return +M}function Cea(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+104>>2]=b;d=c[a+8>>2]|0;e=c[a+4>>2]|0;f=d-e|0;c[a+108>>2]=f;if(!((b|0)!=0&(f|0)>(b|0))){b=d;f=a+100|0;c[f>>2]=b;return}b=e+b|0;f=a+100|0;c[f>>2]=b;return}function Dea(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=b+104|0;j=c[e>>2]|0;if(!((j|0)!=0?(c[b+108>>2]|0)>=(j|0):0))f=3;if((f|0)==3?(i=Uea(b)|0,(i|0)>=0):0){e=c[e>>2]|0;f=c[b+8>>2]|0;if((e|0)!=0?(g=c[b+4>>2]|0,h=e-(c[b+108>>2]|0)+-1|0,(f-g|0)>(h|0)):0)c[b+100>>2]=g+h;else c[b+100>>2]=f;e=c[b+4>>2]|0;if(f){j=b+108|0;c[j>>2]=f+1-e+(c[j>>2]|0)}e=e+-1|0;if((d[e>>0]|0|0)==(i|0)){j=i;return j|0}a[e>>0]=i;j=i;return j|0}c[b+100>>2]=0;j=-1;return j|0}function Eea(a,b){a=+a;b=+b;var d=0,e=0;h[k>>3]=a;e=c[k>>2]|0;d=c[k+4>>2]|0;h[k>>3]=b;d=c[k+4>>2]&-2147483648|d&2147483647;c[k>>2]=e;c[k+4>>2]=d;return +(+h[k>>3])}function Fea(a,b){a=+a;b=+b;return +(+Eea(a,b))}function Gea(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;h[k>>3]=a;l=c[k>>2]|0;m=c[k+4>>2]|0;h[k>>3]=b;n=c[k>>2]|0;o=c[k+4>>2]|0;e=Bfa(l|0,m|0,52)|0;e=e&2047;g=Bfa(n|0,o|0,52)|0;g=g&2047;p=m&-2147483648;i=vfa(n|0,o|0,1)|0;j=H;if(!((i|0)==0&(j|0)==0)?(f=o&2147483647,!(f>>>0>2146435072|(f|0)==2146435072&n>>>0>0|(e|0)==2047)):0){d=vfa(l|0,m|0,1)|0;f=H;if(!(f>>>0>j>>>0|(f|0)==(j|0)&d>>>0>i>>>0)){if(!((d|0)==(i|0)&(f|0)==(j|0)))return +a;a=a*0.0;return +a}if(!e){d=vfa(l|0,m|0,12)|0;e=H;if((e|0)>-1|(e|0)==-1&d>>>0>4294967295){f=e;e=0;do{e=e+-1|0;d=vfa(d|0,f|0,1)|0;f=H}while((f|0)>-1|(f|0)==-1&d>>>0>4294967295)}else e=0;l=vfa(l|0,m|0,1-e|0)|0;j=H}else j=m&1048575|1048576;if(!g){d=vfa(n|0,o|0,12)|0;f=H;if((f|0)>-1|(f|0)==-1&d>>>0>4294967295){g=0;do{g=g+-1|0;d=vfa(d|0,f|0,1)|0;f=H}while((f|0)>-1|(f|0)==-1&d>>>0>4294967295)}else g=0;n=vfa(n|0,o|0,1-g|0)|0;m=H}else m=o&1048575|1048576;d=xfa(l|0,j|0,n|0,m|0)|0;f=H;i=(f|0)>-1|(f|0)==-1&d>>>0>4294967295;a:do if((e|0)>(g|0)){while(1){if(i){if((l|0)==(n|0)&(j|0)==(m|0))break}else{d=l;f=j}l=vfa(d|0,f|0,1)|0;j=H;e=e+-1|0;d=xfa(l|0,j|0,n|0,m|0)|0;f=H;i=(f|0)>-1|(f|0)==-1&d>>>0>4294967295;if((e|0)<=(g|0))break a}a=a*0.0;return +a}while(0);if(i){if((l|0)==(n|0)&(j|0)==(m|0)){a=a*0.0;return +a}}else{f=j;d=l}if(f>>>0<1048576|(f|0)==1048576&d>>>0<0)do{d=vfa(d|0,f|0,1)|0;f=H;e=e+-1|0}while(f>>>0<1048576|(f|0)==1048576&d>>>0<0);if((e|0)>0){o=yfa(d|0,f|0,0,-1048576)|0;d=H;e=vfa(e|0,0,52)|0;d=d|H;e=o|e}else{e=Bfa(d|0,f|0,1-e|0)|0;d=H}c[k>>2]=e;c[k+4>>2]=d|p;a=+h[k>>3];return +a}a=a*b;a=a/a;return +a}function Hea(a,b){a=+a;b=+b;return +(+Gea(a,b))}function Iea(a,b){a=+a;b=b|0;var d=0,e=0,f=0;h[k>>3]=a;d=c[k>>2]|0;e=c[k+4>>2]|0;f=Bfa(d|0,e|0,52)|0;f=f&2047;if((f|0)==2047)return +a;else if(!f){if(a!=0.0){a=+Iea(a*18446744073709552.0e3,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;return +a}else{c[b>>2]=f+-1022;c[k>>2]=d;c[k+4>>2]=e&-2146435073|1071644672;a=+h[k>>3];return +a}return 0.0}function Jea(a,b){a=+a;b=b|0;return +(+Iea(a,b))}function Kea(a){a=+a;return ~~+Lea(a)|0}function Lea(a){a=+a;var b=0;b=(g[k>>2]=a,c[k>>2]|0);if((b&2130706432)>>>0>1249902592)return +a;b=(b|0)<0;if(b)a=a+-8388608.0+8388608.0;else a=a+8388608.0+-8388608.0;if(!(a==0.0))return +a;a=b?-0.0:0.0;return +a}function Mea(a){a=+a;var b=0,d=0.0,e=0.0,f=0,h=0,j=0;j=i;i=i+16|0;h=j;b=(g[k>>2]=a,c[k>>2]|0);f=b>>>23&255;do if(f>>>0<=149){b=(b|0)<0;if(b)e=-a;else e=a;d=e+8388608.0;if(f>>>0<126){g[h>>2]=d;a=a*0.0;break}d=d+-8388608.0-e;if(!(d>.5)){a=e+d;if(d<=-.5)a=a+1.0}else a=e+d+-1.0;if(b)a=-a}while(0);i=j;return +a}function Nea(a,b){a=+a;b=b|0;var d=0;if((b|0)>1023){a=a*89884656743115795.0e291;d=b+-1023|0;if((d|0)>1023){d=b+-2046|0;d=(d|0)>1023?1023:d;a=a*89884656743115795.0e291}}else if((b|0)<-1022){a=a*2.2250738585072014e-308;d=b+1022|0;if((d|0)<-1022){d=b+2044|0;d=(d|0)<-1022?-1022:d;a=a*2.2250738585072014e-308}}else d=b;d=vfa(d+1023|0,0,52)|0;b=H;c[k>>2]=d;c[k+4>>2]=b;return +(a*+h[k>>3])}function Oea(a,b){a=+a;b=b|0;return +(+Nea(a,b))}function Pea(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Qea(a,b,0)|0;return a|0}function Qea(b,d,e){b=b|0;d=d|0;e=e|0;if(!b){d=1;return d|0}if(d>>>0<128){a[b>>0]=d;d=1;return d|0}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;d=2;return d|0}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;d=3;return d|0}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;d=4;return d|0}else{c[(md()|0)>>2]=84;d=-1;return d|0}return 0}function Rea(){var a=0,b=0,d=0;b=368e3;b=Ifa(c[b>>2]|0,c[b+4>>2]|0,1284865837,1481765933)|0;b=yfa(b|0,H|0,1,0)|0;a=H;d=368e3;c[d>>2]=b;c[d+4>>2]=a;a=Bfa(b|0,a|0,33)|0;return a|0}function Sea(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+44|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)Hd[c[b+36>>2]&255](b,0,0)|0;c[b+16>>2]=0;c[b+28>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(!(d&20)){e=c[e>>2]|0;c[b+8>>2]=e;c[b+4>>2]=e;b=0;return b|0}if(!(d&4)){b=-1;return b|0}c[b>>2]=d|32;b=-1;return b|0}function Tea(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;e=c[b+44>>2]|0;c[b+28>>2]=e;c[b+20>>2]=e;c[b+16>>2]=e+(c[b+48>>2]|0);e=0;return e|0}else{c[b>>2]=d|32;e=-1;return e|0}return 0}function Uea(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;if((c[a+8>>2]|0)==0?(Sea(a)|0)!=0:0)b=-1;else if((Hd[c[a+32>>2]&255](a,b,1)|0)==1)b=d[b>>0]|0;else b=-1;i=e;return b|0}function Vea(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=e+16|0;g=c[f>>2]|0;do if(!g)if(!(Tea(e)|0)){g=c[f>>2]|0;break}else{i=0;return i|0}while(0);i=e+20|0;h=c[i>>2]|0;if((g-h|0)>>>0>>0){i=Hd[c[e+36>>2]&255](e,b,d)|0;return i|0}a:do if((a[e+75>>0]|0)>-1){f=d;while(1){if(!f){g=h;f=0;break a}g=f+-1|0;if((a[b+g>>0]|0)==10)break;else f=g}if((Hd[c[e+36>>2]&255](e,b,f)|0)>>>0>>0){i=f;return i|0}else{d=d-f|0;b=b+f|0;g=c[i>>2]|0;break}}else{g=h;f=0}while(0);qfa(g|0,b|0,d|0)|0;c[i>>2]=(c[i>>2]|0)+d;i=f+d|0;return i|0}function Wea(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;c[g>>2]=e;a=Zea(a,b,d,g)|0;i=f;return a|0}function Xea(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=d;d=_ea(a,b,f)|0;i=e;return d|0}function Yea(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+224|0;l=p+120|0;o=p+80|0;n=p;m=p+136|0;e=o+0|0;f=e+40|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[l>>2]=c[d>>2];if((mfa(0,b,l,n,o)|0)<0){a=-1;i=p;return a|0}f=a+48|0;if(!(c[f>>2]|0)){g=a+44|0;h=c[g>>2]|0;c[g>>2]=m;j=a+28|0;c[j>>2]=m;k=a+20|0;c[k>>2]=m;c[f>>2]=80;e=a+16|0;c[e>>2]=m+80;d=mfa(a,b,l,n,o)|0;if(h){Hd[c[a+36>>2]&255](a,0,0)|0;d=(c[k>>2]|0)==0?-1:d;c[g>>2]=h;c[f>>2]=0;c[e>>2]=0;c[j>>2]=0;c[k>>2]=0}}else d=mfa(a,b,l,n,o)|0;a=d;i=p;return a|0}function Zea(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+128|0;g=m+112|0;l=m;h=l+0|0;j=368576|0;k=h+112|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0));if((d+-1|0)>>>0>2147483646)if(!d){b=g;d=1}else{c[(md()|0)>>2]=75;f=-1;i=m;return f|0}j=-2-b|0;j=d>>>0>j>>>0?j:d;c[l+48>>2]=j;g=l+20|0;c[g>>2]=b;c[l+44>>2]=b;d=b+j|0;b=l+16|0;c[b>>2]=d;c[l+28>>2]=d;d=Yea(l,e,f)|0;if(!j){f=d;i=m;return f|0}f=c[g>>2]|0;a[f+(((f|0)==(c[b>>2]|0))<<31>>31)>>0]=0;f=d;i=m;return f|0}function _ea(a,b,c){a=a|0;b=b|0;c=c|0;return Zea(a,2147483647,b,c)|0}function $ea(b){b=b|0;var c=0,d=0,e=0,f=0;while(1){c=b+1|0;if(!(wea(a[b>>0]|0)|0))break;else b=c}e=a[b>>0]|0;d=e<<24>>24;if((d|0)==45){d=1;f=5}else if((d|0)==43){d=0;f=5}else{c=e;d=0}if((f|0)==5){b=c;c=a[c>>0]|0}if(!(vea(c<<24>>24)|0)){e=0;d=(d|0)!=0;f=0-e|0;f=d?e:f;return f|0}else{c=b;b=0}do{b=(b*10|0)+48-(a[c>>0]|0)|0;c=c+1|0}while((vea(a[c>>0]|0)|0)!=0);d=(d|0)!=0;f=0-b|0;f=d?b:f;return f|0}function afa(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,h=0;h=i;i=i+112|0;g=h;d=g+0|0;e=d+112|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));e=g+4|0;c[e>>2]=a;d=g+8|0;c[d>>2]=-1;c[g+44>>2]=a;c[g+76>>2]=-1;Cea(g,0);f=+Bea(g,2,1);d=(c[e>>2]|0)-(c[d>>2]|0)+(c[g+108>>2]|0)|0;if(!b){i=h;return +f}if(!d)d=a;else d=a+d|0;c[b>>2]=d;i=h;return +f}function bfa(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+112|0;h=j;c[h>>2]=0;f=h+4|0;c[f>>2]=a;c[h+44>>2]=a;g=h+8|0;c[g>>2]=(a|0)<0?-1:a+2147483647|0;c[h+76>>2]=-1;Cea(h,0);d=Aea(h,d,1,-1,-1)|0;e=H;if(!b){H=e;i=j;return d|0}c[b>>2]=a+((c[f>>2]|0)+(c[h+108>>2]|0)-(c[g>>2]|0));H=e;i=j;return d|0}function cfa(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+112|0;h=j;c[h>>2]=0;f=h+4|0;c[f>>2]=a;c[h+44>>2]=a;g=h+8|0;c[g>>2]=(a|0)<0?-1:a+2147483647|0;c[h+76>>2]=-1;Cea(h,0);d=Aea(h,d,1,0,-2147483648)|0;e=H;if(!b){H=e;i=j;return d|0}c[b>>2]=a+((c[f>>2]|0)+(c[h+108>>2]|0)-(c[g>>2]|0));H=e;i=j;return d|0}function dfa(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+112|0;g=h;c[g>>2]=0;e=g+4|0;c[e>>2]=a;c[g+44>>2]=a;f=g+8|0;c[f>>2]=(a|0)<0?-1:a+2147483647|0;c[g+76>>2]=-1;Cea(g,0);d=Aea(g,d,1,-2147483648,0)|0;if(!b){i=h;return d|0}c[b>>2]=a+((c[e>>2]|0)+(c[g+108>>2]|0)-(c[f>>2]|0));i=h;return d|0}function efa(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=d&255;f=(e|0)!=0;a:do if((b&3|0)!=0&f){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){g=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!((b&3|0)!=0&f)){g=5;break}}}else g=5;while(0);if((g|0)==5)if(f)g=6;else e=0;b:do if((g|0)==6){g=d&255;if((a[b>>0]|0)!=g<<24>>24){f=da(h,16843009)|0;c:do if(e>>>0>3)do{h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009)break c;b=b+4|0;e=e+-4|0}while(e>>>0>3);while(0);if(!e)e=0;else while(1){if((a[b>>0]|0)==g<<24>>24)break b;b=b+1|0;e=e+-1|0;if(!e){e=0;break}}}}while(0);return ((e|0)!=0?b:0)|0}function ffa(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;if(!d){g=0;return g|0}else{f=d;e=b}while(1){b=a[e>>0]|0;d=a[c>>0]|0;if(b<<24>>24!=d<<24>>24)break;f=f+-1|0;if(!f){d=0;g=5;break}else{e=e+1|0;c=c+1|0}}if((g|0)==5)return d|0;g=(b&255)-(d&255)|0;return g|0}function gfa(b,c){b=b|0;c=c|0;var d=0,e=0;e=a[b>>0]|0;d=a[c>>0]|0;if(e<<24>>24==0?1:e<<24>>24!=d<<24>>24)c=e;else{do{b=b+1|0;c=c+1|0;e=a[b>>0]|0;d=a[c>>0]|0}while(!(e<<24>>24==0?1:e<<24>>24!=d<<24>>24));c=e}return (c&255)-(d&255)|0}function hfa(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0;if(!e){f=0;return f|0}f=a[b>>0]|0;a:do if(!(f<<24>>24))f=0;else while(1){e=e+-1|0;g=a[c>>0]|0;if(!(g<<24>>24!=0&(e|0)!=0&f<<24>>24==g<<24>>24))break a;b=b+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){f=0;break}}while(0);g=(f&255)-(d[c>>0]|0)|0;return g|0}function ifa(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=a+4|0;p=c[o>>2]|0;j=p&-8;l=a+j|0;i=c[91796]|0;d=p&3;if(!((d|0)!=1&a>>>0>=i>>>0&a>>>0>>0))Gc();e=a+(j|4)|0;g=c[e>>2]|0;if(!(g&1))Gc();if(!d){if(b>>>0<256){a=0;return a|0}if(j>>>0>=(b+4|0)>>>0?(j-b|0)>>>0<=c[91912]<<1>>>0:0)return a|0;a=0;return a|0}if(j>>>0>=b>>>0){d=j-b|0;if(d>>>0<=15)return a|0;c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=d|3;c[e>>2]=c[e>>2]|1;kfa(a+b|0,d);return a|0}if((l|0)==(c[91798]|0)){d=(c[91795]|0)+j|0;if(d>>>0<=b>>>0){a=0;return a|0}n=d-b|0;c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=n|1;c[91798]=a+b;c[91795]=n;return a|0}if((l|0)==(c[91797]|0)){e=(c[91794]|0)+j|0;if(e>>>0>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=d|1;c[a+e>>2]=d;e=a+(e+4)|0;c[e>>2]=c[e>>2]&-2;e=a+b|0}else{c[o>>2]=p&1|e|2;e=a+(e+4)|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[91794]=d;c[91797]=e;return a|0}if(g&2){a=0;return a|0}m=(g&-8)+j|0;if(m>>>0>>0){a=0;return a|0}n=m-b|0;f=g>>>3;do if(g>>>0>=256){h=c[a+(j+24)>>2]|0;g=c[a+(j+12)>>2]|0;do if((g|0)==(l|0)){e=a+(j+20)|0;d=c[e>>2]|0;if(!d){e=a+(j+16)|0;d=c[e>>2]|0;if(!d){k=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}g=d+16|0;f=c[g>>2]|0;if(!f)break;else{d=f;e=g}}if(e>>>0>>0)Gc();else{c[e>>2]=0;k=d;break}}else{f=c[a+(j+8)>>2]|0;if(f>>>0>>0)Gc();d=f+12|0;if((c[d>>2]|0)!=(l|0))Gc();e=g+8|0;if((c[e>>2]|0)==(l|0)){c[d>>2]=g;c[e>>2]=f;k=g;break}else Gc()}while(0);if(h){d=c[a+(j+28)>>2]|0;e=367472+(d<<2)|0;if((l|0)==(c[e>>2]|0)){c[e>>2]=k;if(!k){c[91793]=c[91793]&~(1<>>0<(c[91796]|0)>>>0)Gc();d=h+16|0;if((c[d>>2]|0)==(l|0))c[d>>2]=k;else c[h+20>>2]=k;if(!k)break}e=c[91796]|0;if(k>>>0>>0)Gc();c[k+24>>2]=h;d=c[a+(j+16)>>2]|0;do if(d)if(d>>>0>>0)Gc();else{c[k+16>>2]=d;c[d+24>>2]=k;break}while(0);d=c[a+(j+20)>>2]|0;if(d)if(d>>>0<(c[91796]|0)>>>0)Gc();else{c[k+20>>2]=d;c[d+24>>2]=k;break}}}else{g=c[a+(j+8)>>2]|0;e=c[a+(j+12)>>2]|0;d=367208+(f<<1<<2)|0;if((g|0)!=(d|0)){if(g>>>0>>0)Gc();if((c[g+12>>2]|0)!=(l|0))Gc()}if((e|0)==(g|0)){c[91792]=c[91792]&~(1<>>0>>0)Gc();d=e+8|0;if((c[d>>2]|0)==(l|0))h=d;else Gc()}else h=e+8|0;c[g+12>>2]=e;c[h>>2]=g}while(0);if(n>>>0<16){c[o>>2]=m|p&1|2;b=a+(m|4)|0;c[b>>2]=c[b>>2]|1;return a|0}else{c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=n|3;p=a+(m|4)|0;c[p>>2]=c[p>>2]|1;kfa(a+b|0,n);return a|0}return 0}function jfa(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;a=a>>>0<16?16:a;if(a+-1&a){d=16;while(1)if(d>>>0>>0)d=d<<1;else{a=d;break}}if((-64-a|0)>>>0<=b>>>0){c[(md()|0)>>2]=12;k=0;return k|0}if(b>>>0<11)j=16;else j=b+11&-8;h=qea(a+12+j|0)|0;if(!h){k=0;return k|0}i=h+-8|0;d=a+-1|0;do if(h&d){g=h+d&0-a;b=g+-8|0;d=i;if((b-d|0)>>>0>15)f=-4;else{b=g+(a+-8)|0;f=a+-4|0}a=b-d|0;d=h+-4|0;l=c[d>>2]|0;e=(l&-8)-a|0;if(!(l&3)){c[b>>2]=(c[i>>2]|0)+a;c[g+f>>2]=e;break}else{l=g+f|0;c[l>>2]=e|c[l>>2]&1|2;l=g+(f+e)|0;c[l>>2]=c[l>>2]|1;c[d>>2]=a|c[d>>2]&1|2;l=h+(a+-4)|0;c[l>>2]=c[l>>2]|1;kfa(i,a);break}}else b=i;while(0);a=b+4|0;d=c[a>>2]|0;if((d&3|0)!=0?(k=d&-8,k>>>0>(j+16|0)>>>0):0){l=k-j|0;c[a>>2]=j|d&1|2;c[b+(j|4)>>2]=l|3;k=b+(k|4)|0;c[k>>2]=c[k>>2]|1;kfa(b+j|0,l)}l=b+8|0;return l|0}function kfa(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){k=c[a>>2]|0;if(!(d&3))return;n=a+(0-k)|0;m=k+b|0;j=c[91796]|0;if(n>>>0>>0)Gc();if((n|0)==(c[91797]|0)){g=a+(b+4)|0;d=c[g>>2]|0;if((d&3|0)!=3){t=n;h=m;break}c[91794]=m;c[g>>2]=d&-2;c[a+(4-k)>>2]=m|1;c[q>>2]=m;return}f=k>>>3;if(k>>>0<256){e=c[a+(8-k)>>2]|0;g=c[a+(12-k)>>2]|0;d=367208+(f<<1<<2)|0;if((e|0)!=(d|0)){if(e>>>0>>0)Gc();if((c[e+12>>2]|0)!=(n|0))Gc()}if((g|0)==(e|0)){c[91792]=c[91792]&~(1<>>0>>0)Gc();d=g+8|0;if((c[d>>2]|0)==(n|0))i=d;else Gc()}else i=g+8|0;c[e+12>>2]=g;c[i>>2]=e;t=n;h=m;break}i=c[a+(24-k)>>2]|0;e=c[a+(12-k)>>2]|0;do if((e|0)==(n|0)){e=16-k|0;g=a+(e+4)|0;d=c[g>>2]|0;if(!d){g=a+e|0;d=c[g>>2]|0;if(!d){l=0;break}}while(1){e=d+20|0;f=c[e>>2]|0;if(f){d=f;g=e;continue}e=d+16|0;f=c[e>>2]|0;if(!f)break;else{d=f;g=e}}if(g>>>0>>0)Gc();else{c[g>>2]=0;l=d;break}}else{f=c[a+(8-k)>>2]|0;if(f>>>0>>0)Gc();d=f+12|0;if((c[d>>2]|0)!=(n|0))Gc();g=e+8|0;if((c[g>>2]|0)==(n|0)){c[d>>2]=e;c[g>>2]=f;l=e;break}else Gc()}while(0);if(i){d=c[a+(28-k)>>2]|0;g=367472+(d<<2)|0;if((n|0)==(c[g>>2]|0)){c[g>>2]=l;if(!l){c[91793]=c[91793]&~(1<>>0<(c[91796]|0)>>>0)Gc();d=i+16|0;if((c[d>>2]|0)==(n|0))c[d>>2]=l;else c[i+20>>2]=l;if(!l){t=n;h=m;break}}e=c[91796]|0;if(l>>>0>>0)Gc();c[l+24>>2]=i;d=16-k|0;g=c[a+d>>2]|0;do if(g)if(g>>>0>>0)Gc();else{c[l+16>>2]=g;c[g+24>>2]=l;break}while(0);d=c[a+(d+4)>>2]|0;if(d)if(d>>>0<(c[91796]|0)>>>0)Gc();else{c[l+20>>2]=d;c[d+24>>2]=l;t=n;h=m;break}else{t=n;h=m}}else{t=n;h=m}}else{t=a;h=b}while(0);j=c[91796]|0;if(q>>>0>>0)Gc();d=a+(b+4)|0;g=c[d>>2]|0;if(!(g&2)){if((q|0)==(c[91798]|0)){s=(c[91795]|0)+h|0;c[91795]=s;c[91798]=t;c[t+4>>2]=s|1;if((t|0)!=(c[91797]|0))return;c[91797]=0;c[91794]=0;return}if((q|0)==(c[91797]|0)){s=(c[91794]|0)+h|0;c[91794]=s;c[91797]=t;c[t+4>>2]=s|1;c[t+s>>2]=s;return}h=(g&-8)+h|0;f=g>>>3;do if(g>>>0>=256){i=c[a+(b+24)>>2]|0;e=c[a+(b+12)>>2]|0;do if((e|0)==(q|0)){g=a+(b+20)|0;d=c[g>>2]|0;if(!d){g=a+(b+16)|0;d=c[g>>2]|0;if(!d){p=0;break}}while(1){e=d+20|0;f=c[e>>2]|0;if(f){d=f;g=e;continue}e=d+16|0;f=c[e>>2]|0;if(!f)break;else{d=f;g=e}}if(g>>>0>>0)Gc();else{c[g>>2]=0;p=d;break}}else{f=c[a+(b+8)>>2]|0;if(f>>>0>>0)Gc();d=f+12|0;if((c[d>>2]|0)!=(q|0))Gc();g=e+8|0;if((c[g>>2]|0)==(q|0)){c[d>>2]=e;c[g>>2]=f;p=e;break}else Gc()}while(0);if(i){d=c[a+(b+28)>>2]|0;g=367472+(d<<2)|0;if((q|0)==(c[g>>2]|0)){c[g>>2]=p;if(!p){c[91793]=c[91793]&~(1<>>0<(c[91796]|0)>>>0)Gc();d=i+16|0;if((c[d>>2]|0)==(q|0))c[d>>2]=p;else c[i+20>>2]=p;if(!p)break}g=c[91796]|0;if(p>>>0>>0)Gc();c[p+24>>2]=i;d=c[a+(b+16)>>2]|0;do if(d)if(d>>>0>>0)Gc();else{c[p+16>>2]=d;c[d+24>>2]=p;break}while(0);d=c[a+(b+20)>>2]|0;if(d)if(d>>>0<(c[91796]|0)>>>0)Gc();else{c[p+20>>2]=d;c[d+24>>2]=p;break}}}else{e=c[a+(b+8)>>2]|0;g=c[a+(b+12)>>2]|0;d=367208+(f<<1<<2)|0;if((e|0)!=(d|0)){if(e>>>0>>0)Gc();if((c[e+12>>2]|0)!=(q|0))Gc()}if((g|0)==(e|0)){c[91792]=c[91792]&~(1<>>0>>0)Gc();d=g+8|0;if((c[d>>2]|0)==(q|0))o=d;else Gc()}else o=g+8|0;c[e+12>>2]=g;c[o>>2]=e}while(0);c[t+4>>2]=h|1;c[t+h>>2]=h;if((t|0)==(c[91797]|0)){c[91794]=h;return}}else{c[d>>2]=g&-2;c[t+4>>2]=h|1;c[t+h>>2]=h}d=h>>>3;if(h>>>0<256){g=d<<1;f=367208+(g<<2)|0;e=c[91792]|0;d=1<>2]|0;if(e>>>0<(c[91796]|0)>>>0)Gc();else{r=d;s=e}}else{c[91792]=e|d;r=367208+(g+2<<2)|0;s=f}c[r>>2]=t;c[s+12>>2]=t;c[t+8>>2]=s;c[t+12>>2]=f;return}d=h>>>8;if(d)if(h>>>0>16777215)g=31;else{r=(d+1048320|0)>>>16&8;s=d<>>16&4;s=s<>>16&2;g=14-(q|r|g)+(s<>>15)|0;g=h>>>(g+7|0)&1|g<<1}else g=0;d=367472+(g<<2)|0;c[t+28>>2]=g;c[t+20>>2]=0;c[t+16>>2]=0;e=c[91793]|0;f=1<>2]=t;c[t+24>>2]=d;c[t+12>>2]=t;c[t+8>>2]=t;return}d=c[d>>2]|0;if((g|0)==31)e=0;else e=25-(g>>>1)|0;a:do if((c[d+4>>2]&-8|0)!=(h|0)){g=h<>>31<<2)+16|0;f=c[e>>2]|0;if(!f)break;if((c[f+4>>2]&-8|0)==(h|0)){d=f;break a}else{g=g<<1;d=f}}if(e>>>0<(c[91796]|0)>>>0)Gc();c[e>>2]=t;c[t+24>>2]=d;c[t+12>>2]=t;c[t+8>>2]=t;return}while(0);e=d+8|0;f=c[e>>2]|0;s=c[91796]|0;if(!(d>>>0>=s>>>0&f>>>0>=s>>>0))Gc();c[f+12>>2]=t;c[e>>2]=t;c[t+8>>2]=f;c[t+12>>2]=d;c[t+24>>2]=0;return}function lfa(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0;h=a+4|0;e=c[h>>2]|0;i=a+100|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=Dea(a)|0;if((e|0)==43|(e|0)==45){f=(e|0)==45&1;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=Dea(a)|0;if((e+-48|0)>>>0>9&(b|0)!=0?(c[i>>2]|0)!=0:0){c[h>>2]=(c[h>>2]|0)+-1;g=f}else g=f}else g=0;if((e+-48|0)>>>0>9){if(!(c[i>>2]|0)){i=-2147483648;a=0;H=i;return a|0}c[h>>2]=(c[h>>2]|0)+-1;i=-2147483648;a=0;H=i;return a|0}else f=0;do{f=e+-48+(f*10|0)|0;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=Dea(a)|0}while((e+-48|0)>>>0<10&(f|0)<214748364);b=((f|0)<0)<<31>>31;if((e+-48|0)>>>0<10)do{b=Ifa(f|0,b|0,10,0)|0;f=H;e=yfa(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;f=yfa(e|0,H|0,b|0,f|0)|0;b=H;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=Dea(a)|0}while((e+-48|0)>>>0<10&((b|0)<21474836|(b|0)==21474836&f>>>0<2061584302));if((e+-48|0)>>>0<10)do{e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=Dea(a)|0}while((e+-48|0)>>>0<10);if(c[i>>2]|0)c[h>>2]=(c[h>>2]|0)+-1;h=(g|0)!=0;a=xfa(0,0,f|0,b|0)|0;i=h?H:b;a=h?a:f;H=i;return a|0}function mfa(e,f,g,j,l){e=e|0;f=f|0;g=g|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0;hb=i;i=i+864|0;Pa=hb+16|0;Sa=hb;Qa=hb+832|0;la=Qa;Ma=hb+816|0;Za=hb+520|0;Ia=hb+776|0;db=hb+8|0;Wa=hb+828|0;ma=(e|0)!=0;Da=Ia+40|0;Ha=Da;Ia=Ia+39|0;Ja=db+4|0;Ka=db;La=Ma+12|0;Ma=Ma+11|0;Na=La;na=Na-la|0;va=-2-la|0;wa=Na+2|0;xa=Pa+288|0;ya=Qa+9|0;za=ya;Aa=Qa+8|0;B=0;C=0;s=0;o=0;u=0;a:while(1){do if((s|0)>-1)if((o|0)>(2147483647-s|0)){c[(md()|0)>>2]=75;$=-1;break}else{$=o+s|0;break}else $=s;while(0);o=a[f>>0]|0;if(!(o<<24>>24)){Ra=$;Va=u;O=351;break}else p=f;while(1){if(!(o<<24>>24)){ja=p;fa=p;break}else if(o<<24>>24==37){Ua=p;eb=p;O=9;break}M=p+1|0;o=a[M>>0]|0;p=M}b:do if((O|0)==9)while(1){O=0;if((a[Ua+1>>0]|0)!=37){ja=Ua;fa=eb;break b}p=eb+1|0;o=Ua+2|0;if((a[o>>0]|0)==37){Ua=o;eb=p}else{ja=o;fa=p;break}}while(0);o=fa-f|0;if(ma)Vea(f,o,e)|0;if((fa|0)!=(f|0)){s=$;f=ja;continue}s=ja+1|0;q=a[s>>0]|0;p=(q<<24>>24)+-48|0;if(p>>>0<10){M=(a[ja+2>>0]|0)==36;s=M?ja+3|0:s;q=a[s>>0]|0;A=M?p:-1;u=M?1:u}else A=-1;p=q<<24>>24;c:do if((p&-32|0)==32){t=0;do{if(!(1<>24)+-32|t;s=s+1|0;q=a[s>>0]|0;p=q<<24>>24}while((p&-32|0)==32)}else t=0;while(0);do if(q<<24>>24==42){p=s+1|0;q=(a[p>>0]|0)+-48|0;if(q>>>0<10?(a[s+2>>0]|0)==36:0){c[l+(q<<2)>>2]=10;u=1;q=s+3|0;s=c[j+((a[p>>0]|0)+-48<<3)>>2]|0}else{if(u){fb=-1;O=369;break a}if(!ma){q=p;u=0;N=0;break}u=c[g>>2]|0;s=c[u>>2]|0;c[g>>2]=u+4;u=0;q=p}if((s|0)<0){t=t|8192;N=0-s|0}else N=s}else{p=(q<<24>>24)+-48|0;if(p>>>0<10){q=s;s=0;do{s=(s*10|0)+p|0;q=q+1|0;p=(a[q>>0]|0)+-48|0}while(p>>>0<10);if((s|0)<0){fb=-1;O=369;break a}else N=s}else{q=s;N=0}}while(0);d:do if((a[q>>0]|0)==46){p=q+1|0;s=a[p>>0]|0;if(s<<24>>24!=42){v=(s<<24>>24)+-48|0;if(v>>>0<10)s=0;else{q=p;D=0;break}while(1){s=(s*10|0)+v|0;q=q+2|0;v=(a[q>>0]|0)+-48|0;if(v>>>0>=10){D=s;break d}else{M=p;p=q;q=M}}}p=q+2|0;s=(a[p>>0]|0)+-48|0;if(s>>>0<10?(a[q+3>>0]|0)==36:0){c[l+(s<<2)>>2]=10;q=q+4|0;D=c[j+((a[p>>0]|0)+-48<<3)>>2]|0;break}if(u){fb=-1;O=369;break a}if(ma){q=c[g>>2]|0;D=c[q>>2]|0;c[g>>2]=q+4;q=p}else{q=p;D=0}}else D=-1;while(0);z=0;while(1){p=a[q>>0]|0;s=(p<<24>>24)+-65|0;if(s>>>0>57){fb=-1;O=369;break a}v=q+1|0;s=a[368008+(z*58|0)+s>>0]|0;w=s&255;if((w+-1|0)>>>0<8){q=v;z=w}else{M=v;y=s;v=w;w=z;break}}if(!(y<<24>>24)){fb=-1;O=369;break}s=(A|0)>-1;e:do if(y<<24>>24==19)if(s){fb=-1;O=369;break a}else{oa=B;pa=C;O=62}else{if(s){c[l+(A<<2)>>2]=v;pa=j+(A<<3)|0;oa=c[pa>>2]|0;pa=c[pa+4>>2]|0;O=62;break}if(!ma){fb=0;O=369;break a}if((y&255)>20){Ba=p;Ca=B;Ea=C}else do switch(v|0){case 10:{qa=c[g>>2]|0;ra=c[qa>>2]|0;c[g>>2]=qa+4;qa=((ra|0)<0)<<31>>31;O=63;break e}case 9:{qa=c[g>>2]|0;ra=c[qa>>2]|0;c[g>>2]=qa+4;qa=C;O=63;break e}case 11:{qa=c[g>>2]|0;ra=c[qa>>2]|0;c[g>>2]=qa+4;qa=0;O=63;break e}case 12:{O=c[g>>2]|0;qa=O;ra=c[qa>>2]|0;qa=c[qa+4>>2]|0;c[g>>2]=O+8;O=63;break e}case 13:{qa=c[g>>2]|0;ra=c[qa>>2]|0;c[g>>2]=qa+4;qa=(((ra&65535)<<16>>16|0)<0)<<31>>31;ra=ra<<16>>16;O=63;break e}case 14:{qa=c[g>>2]|0;ra=c[qa>>2]|0;c[g>>2]=qa+4;qa=0;ra=ra&65535;O=63;break e}case 15:{qa=c[g>>2]|0;ra=c[qa>>2]|0;c[g>>2]=qa+4;qa=(((ra&255)<<24>>24|0)<0)<<31>>31;ra=ra<<24>>24;O=63;break e}case 16:{qa=c[g>>2]|0;ra=c[qa>>2]|0;c[g>>2]=qa+4;qa=0;ra=ra&255;O=63;break e}case 17:{qa=c[g>>2]|0;c[k>>2]=c[qa>>2];c[k+4>>2]=c[qa+4>>2];x=+h[k>>3];c[g>>2]=qa+8;h[k>>3]=x;qa=c[k+4>>2]|0;ra=c[k>>2]|0;O=63;break e}case 18:{oa=c[g>>2]|0;c[k>>2]=c[oa>>2];c[k+4>>2]=c[oa+4>>2];x=+h[k>>3];c[g>>2]=oa+8;h[k>>3]=x;oa=c[k>>2]|0;pa=c[k+4>>2]|0;O=62;break e}default:{qa=C;ra=B;O=63;break e}}while(0)}while(0);if((O|0)==62){O=0;if(ma){qa=pa;ra=oa;O=63}else{B=oa;C=pa;s=$;f=M;continue}}if((O|0)==63){O=0;Ba=a[q>>0]|0;Ca=ra;Ea=qa}E=Ba<<24>>24;E=(w|0)!=0&(E&15|0)==3?E&-33:E;s=t&-65537;L=(t&8192|0)==0?t:s;f:do switch(E|0){case 112:{Ta=L|8;Xa=D>>>0>8?D:8;cb=120;O=74;break}case 105:case 100:{if((Ea|0)<0){Ga=xfa(0,0,Ca|0,Ea|0)|0;Fa=H;_a=1;$a=368472;O=85;break f}if(!(L&2048)){$a=L&1;Fa=Ea;Ga=Ca;_a=$a;$a=($a|0)==0?368472:368474;O=85}else{Fa=Ea;Ga=Ca;_a=1;$a=368473;O=85}break}case 67:{c[db>>2]=Ca;c[Ja>>2]=0;sa=db;ta=Ka;Ya=-1;O=100;break}case 88:case 120:{Ta=L;Xa=D;cb=E;O=74;break}case 115:{Oa=(Ca|0)==0?368488:Ca;O=95;break}case 83:{f=Ca;if(!D){Z=Ca;_=f;Y=0;O=105}else{sa=f;ta=Ca;Ya=D;O=100}break}case 99:{a[Ia>>0]=Ca;ga=Ca;ha=Ea;ia=Ia;n=s;ba=1;ca=0;ea=368472;aa=Da;break}case 111:{p=(Ca|0)==0&(Ea|0)==0;if(p)m=Da;else{m=Da;f=Ca;o=Ea;do{m=m+-1|0;a[m>>0]=f&7|48;f=Bfa(f|0,o|0,3)|0;o=H}while(!((f|0)==0&(o|0)==0))}S=(L&8|0)==0|p;T=Ca;U=Ea;P=L;Q=D;R=S&1^1;S=S?368472:368477;O=90;break}case 110:switch(w|0){case 4:{a[Ca>>0]=$;B=Ca;C=Ea;s=$;f=M;continue a}case 6:{c[Ca>>2]=$;B=Ca;C=Ea;s=$;f=M;continue a}case 7:{B=Ca;c[B>>2]=$;c[B+4>>2]=(($|0)<0)<<31>>31;B=Ca;C=Ea;s=$;f=M;continue a}case 2:{B=Ca;c[B>>2]=$;c[B+4>>2]=(($|0)<0)<<31>>31;B=Ca;C=Ea;s=$;f=M;continue a}case 1:{c[Ca>>2]=$;B=Ca;C=Ea;s=$;f=M;continue a}case 0:{c[Ca>>2]=$;B=Ca;C=Ea;s=$;f=M;continue a}case 3:{b[Ca>>1]=$;B=Ca;C=Ea;s=$;f=M;continue a}default:{B=Ca;C=Ea;s=$;f=M;continue a}}case 117:{Fa=Ea;Ga=Ca;_a=0;$a=368472;O=85;break}case 109:{Oa=Xc(c[(md()|0)>>2]|0)|0;O=95;break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{c[k>>2]=Ca;c[k+4>>2]=Ea;r=+h[k>>3];c[Sa>>2]=0;if((Ea|0)>=0)if(!(L&2048)){J=L&1;t=J;J=(J|0)==0?368497:368502}else{t=1;J=368499}else{r=-r;t=1;J=368496}h[k>>3]=r;K=c[k+4>>2]&2146435072;if(!(K>>>0<2146435072|(K|0)==2146435072&0<0)){f=(E&32|0)!=0;if(r!=r|0.0!=0.0){t=0;s=f?368536:368544}else s=f?368520:368528;q=t+3|0;p=(N|0)>(q|0);if((L&8192|0)==0&p){f=N-q|0;sfa(Za|0,32,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{Vea(Za,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}Vea(Za,f,e)|0}Vea(J,t,e)|0;Vea(s,3,e)|0;if((L&73728|0)==8192&p){f=N-q|0;sfa(Za|0,32,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{Vea(Za,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}Vea(Za,f,e)|0}B=Ca;C=Ea;s=$;f=M;o=p?N:q;continue a}x=+Jea(r,Sa)*2.0;s=x!=0.0;if(s)c[Sa>>2]=(c[Sa>>2]|0)+-1;C=E|32;if((C|0)==97){q=E&32;A=(q|0)==0?J:J+9|0;z=t|2;f=D>>>0>11?0:12-D|0;do if(f){r=8.0;do{f=f+-1|0;r=r*16.0}while((f|0)!=0);if((a[A>>0]|0)==45){r=-(r+(-x-r));break}else{r=x+r-r;break}}else r=x;while(0);s=c[Sa>>2]|0;s=(s|0)<0?0-s|0:s;if((s|0)<0){f=La;t=s;o=((s|0)<0)<<31>>31;while(1){s=Kfa(t|0,o|0,10,0)|0;f=f+-1|0;a[f>>0]=s|48;s=Jfa(t|0,o|0,10,0)|0;if(o>>>0>9|(o|0)==9&t>>>0>4294967295){t=s;o=H}else break}}else f=La;if(s)while(1){f=f+-1|0;a[f>>0]=(s>>>0)%10|0|48;if(s>>>0<10)break;else s=(s>>>0)/10|0}if((f|0)==(La|0)){a[Ma>>0]=48;f=Ma}a[f+-1>>0]=(c[Sa>>2]>>31&2)+43;y=f+-2|0;a[y>>0]=E+15;if((D|0)<1)if(!(L&8)){f=Qa;do{K=~~r;s=f+1|0;a[f>>0]=d[368552+K>>0]|q;r=(r-+(K|0))*16.0;if((s-la|0)!=1|r==0.0)f=s;else{a[s>>0]=46;f=f+2|0}}while(r!=0.0)}else{f=Qa;do{K=~~r;s=f+1|0;a[f>>0]=d[368552+K>>0]|q;r=(r-+(K|0))*16.0;if((s-la|0)==1){a[s>>0]=46;f=f+2|0}else f=s}while(r!=0.0)}else{f=Qa;do{K=~~r;s=f+1|0;a[f>>0]=d[368552+K>>0]|q;r=(r-+(K|0))*16.0;if((s-la|0)==1){a[s>>0]=46;f=f+2|0}else f=s}while(r!=0.0)}o=y;if((D|0)!=0&(va+f|0)<(D|0))t=wa+D-o|0;else t=na-o+f|0;w=t+z|0;p=L&73728;v=(N|0)>(w|0);if((p|0)==0&v){s=N-w|0;sfa(Za|0,32,(s>>>0>256?256:s)|0)|0;if(s>>>0>255){o=s;do{Vea(Za,256,e)|0;o=o+-256|0}while(o>>>0>255);s=s&255}Vea(Za,s,e)|0}Vea(A,z,e)|0;if((p|0)==65536&v){o=N-w|0;sfa(Za|0,48,(o>>>0>256?256:o)|0)|0;if(o>>>0>255){q=o;do{Vea(Za,256,e)|0;q=q+-256|0}while(q>>>0>255);o=o&255}Vea(Za,o,e)|0}f=f-la|0;Vea(Qa,f,e)|0;s=Na-y|0;f=t-s-f|0;if((f|0)>0){sfa(Za|0,48,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{Vea(Za,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}Vea(Za,f,e)|0}Vea(y,s,e)|0;if((p|0)==8192&v){f=N-w|0;sfa(Za|0,32,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{Vea(Za,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}Vea(Za,f,e)|0}B=Ca;C=Ea;s=$;f=M;o=v?N:w;continue a}f=(D|0)<0?6:D;if(s){s=(c[Sa>>2]|0)+-28|0;c[Sa>>2]=s;r=x*268435456.0}else{r=x;s=c[Sa>>2]|0}K=(s|0)<0?Pa:xa;I=K;s=K;do{G=~~r>>>0;c[s>>2]=G;s=s+4|0;r=(r-+(G>>>0))*1.0e9}while(r!=0.0);q=s;s=c[Sa>>2]|0;if((s|0)>0){o=s;s=K;do{w=(o|0)>29?29:o;p=q+-4|0;do if(p>>>0>=s>>>0){v=q;o=0;while(1){G=vfa(c[p>>2]|0,0,w|0)|0;G=yfa(G|0,H|0,o|0,0)|0;o=H;F=Kfa(G|0,o|0,1e9,0)|0;c[p>>2]=F;o=Jfa(G|0,o|0,1e9,0)|0;v=v+-8|0;if(v>>>0>>0)break;else{G=p;p=v;v=G}}if(!o)break;s=s+-4|0;c[s>>2]=o}while(0);while(1){if(q>>>0<=s>>>0)break;o=q+-4|0;if(!(c[o>>2]|0))q=o;else break}o=(c[Sa>>2]|0)-w|0;c[Sa>>2]=o}while((o|0)>0)}else{o=s;s=K}g:do if((o|0)<0){A=((f+25|0)/9|0)+1|0;if((C|0)==102){z=K+(A<<2)|0;while(1){y=(o|0)<-9?9:0-o|0;do if(s>>>0>>0){p=(1<>>y;o=0;w=s;do{G=c[w>>2]|0;c[w>>2]=(G>>>y)+o;o=da(G&p,v)|0;w=w+4|0}while(w>>>0>>0);s=(c[s>>2]|0)==0?s+4|0:s;if(!o)break;c[q>>2]=o;q=q+4|0}else s=(c[s>>2]|0)==0?s+4|0:s;while(0);q=(q-I>>2|0)>(A|0)?z:q;o=(c[Sa>>2]|0)+y|0;c[Sa>>2]=o;if((o|0)>=0){A=q;break g}}}do{y=(o|0)<-9?9:0-o|0;do if(s>>>0>>0){p=(1<>>y;o=0;w=s;do{G=c[w>>2]|0;c[w>>2]=(G>>>y)+o;o=da(G&p,v)|0;w=w+4|0}while(w>>>0>>0);s=(c[s>>2]|0)==0?s+4|0:s;if(!o)break;c[q>>2]=o;q=q+4|0}else s=(c[s>>2]|0)==0?s+4|0:s;while(0);if((q-s>>2|0)>(A|0))q=s+(A<<2)|0;o=(c[Sa>>2]|0)+y|0;c[Sa>>2]=o}while((o|0)<0);A=q}else A=q;while(0);do if(s>>>0>>0){o=(I-s>>2)*9|0;p=c[s>>2]|0;if(p>>>0<10){z=o;break}else q=10;do{q=q*10|0;o=o+1|0}while(p>>>0>=q>>>0);z=o}else z=0;while(0);B=(C|0)==103;o=f-((C|0)!=102?z:0)+((B&(f|0)!=0)<<31>>31)|0;if((o|0)<(((A-I>>2)*9|0)+-9|0)){p=o+9216|0;w=(p|0)/9|0;o=K+(w+-1023<<2)|0;p=((p|0)%9|0)+1|0;if((p|0)<9){q=10;do{q=q*10|0;p=p+1|0}while((p|0)!=9);y=q}else y=10;p=c[o>>2]|0;v=(p>>>0)%(y>>>0)|0;if((v|0)==0?(K+(w+-1022<<2)|0)==(A|0):0){X=s;W=o;V=z}else O=231;do if((O|0)==231){O=0;x=(((p>>>0)/(y>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;q=(y|0)/2|0;do if(v>>>0>>0)r=.5;else{if((v|0)==(q|0)?(K+(w+-1022<<2)|0)==(A|0):0){r=1.0;break}r=1.5}while(0);do if(t){if((a[J>>0]|0)!=45)break;x=-x;r=-r}while(0);q=p-v|0;c[o>>2]=q;if(!(x+r!=x)){X=s;W=o;V=z;break}W=q+y|0;c[o>>2]=W;if(W>>>0>999999999)while(1){q=o+-4|0;c[o>>2]=0;if(q>>>0>>0){s=s+-4|0;c[s>>2]=0}W=(c[q>>2]|0)+1|0;c[q>>2]=W;if(W>>>0>999999999)o=q;else{o=q;break}}q=(I-s>>2)*9|0;v=c[s>>2]|0;if(v>>>0<10){X=s;W=o;V=q;break}else p=10;do{p=p*10|0;q=q+1|0}while(v>>>0>=p>>>0);X=s;W=o;V=q}while(0);o=W+4|0;s=X;z=V;o=A>>>0>o>>>0?o:A}else o=A;D=s;w=0-z|0;while(1){if(o>>>0<=s>>>0){C=0;G=o;break}q=o+-4|0;if(!(c[q>>2]|0))o=q;else{C=1;G=o;break}}do if(B){f=((f|0)==0&1)+f|0;if((f|0)>(z|0)&(z|0)>-5){v=E+-1|0;f=f+-1-z|0}else{v=E+-2|0;f=f+-1|0}if(L&8)break;do if(C){o=c[G+-4>>2]|0;if(!o){q=9;break}if(!((o>>>0)%10|0)){p=10;q=0}else{q=0;break}do{p=p*10|0;q=q+1|0}while(((o>>>0)%(p>>>0)|0|0)==0)}else q=9;while(0);o=((G-I>>2)*9|0)+-9|0;if((v|32|0)==102){F=o-q|0;F=(F|0)<0?0:F;f=(f|0)<(F|0)?f:F;break}else{F=o+z-q|0;F=(F|0)<0?0:F;f=(f|0)<(F|0)?f:F;break}}else v=E;while(0);B=(f|0)!=0;if(B)o=1;else o=(L&8|0)!=0;y=o&1;A=(v|32|0)==102;if(A){o=(z|0)>0?z:0;z=0}else{q=(z|0)<0?w:z;if((q|0)<0){o=La;w=q;p=((q|0)<0)<<31>>31;while(1){q=Kfa(w|0,p|0,10,0)|0;o=o+-1|0;a[o>>0]=q|48;q=Jfa(w|0,p|0,10,0)|0;if(p>>>0>9|(p|0)==9&w>>>0>4294967295){w=q;p=H}else break}}else o=La;if(q)while(1){o=o+-1|0;a[o>>0]=(q>>>0)%10|0|48;if(q>>>0<10)break;else q=(q>>>0)/10|0}if((Na-o|0)<2)do{o=o+-1|0;a[o>>0]=48}while((Na-o|0)<2);a[o+-1>>0]=(z>>31&2)+43;z=o+-2|0;a[z>>0]=v;o=Na-z|0}E=t+1+f+y+o|0;y=L&73728;F=(N|0)>(E|0);if((y|0)==0&F){o=N-E|0;sfa(Za|0,32,(o>>>0>256?256:o)|0)|0;if(o>>>0>255){q=o;do{Vea(Za,256,e)|0;q=q+-256|0}while(q>>>0>255);o=o&255}Vea(Za,o,e)|0}Vea(J,t,e)|0;if((y|0)==65536&F){o=N-E|0;sfa(Za|0,48,(o>>>0>256?256:o)|0)|0;if(o>>>0>255){t=o;do{Vea(Za,256,e)|0;t=t+-256|0}while(t>>>0>255);o=o&255}Vea(Za,o,e)|0}do if(A){p=s>>>0>K>>>0?K:s;s=~I;q=~D;q=s>>>0>q>>>0?s:q;s=3-q|0;v=K+1|0;v=(s>>>0>v>>>0?s:v)+q|0;q=~q;s=p;do{t=c[s>>2]|0;if(!t)o=ya;else{o=ya;while(1){o=o+-1|0;a[o>>0]=(t>>>0)%10|0|48;if(t>>>0<10)break;else t=(t>>>0)/10|0}}do if((s|0)==(p|0)){if((o|0)!=(ya|0))break;a[Aa>>0]=48;o=Aa}else{if(o>>>0<=Qa>>>0)break;do{o=o+-1|0;a[o>>0]=48}while(o>>>0>Qa>>>0)}while(0);Vea(o,za-o|0,e)|0;s=s+4|0}while(s>>>0<=K>>>0);if(!((L&8|0)==0&(B^1)))Vea(368568,1,e)|0;if(s>>>0>>0&(f|0)>0){t=(v&-4)+q|0;q=s;while(1){s=c[q>>2]|0;if(s){o=ya;while(1){o=o+-1|0;a[o>>0]=(s>>>0)%10|0|48;if(s>>>0<10)break;else s=(s>>>0)/10|0}if(o>>>0>Qa>>>0){ab=o;O=300}else ka=o}else{ab=ya;O=300}if((O|0)==300)while(1){O=0;o=ab+-1|0;a[o>>0]=48;if(o>>>0>Qa>>>0)ab=o;else{ka=o;break}}Vea(ka,(f|0)>9?9:f,e)|0;s=t+8|0;f=f+-9|0;if(s>>>0>>0&(f|0)>0){t=q;q=s}else break}}if((f|0)<=0)break;sfa(Za|0,48,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{Vea(Za,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}Vea(Za,f,e)|0}else{w=C?G:s+4|0;do if((f|0)>-1){v=(L&8|0)==0;p=s;do{o=c[p>>2]|0;if(o){t=ya;q=o;while(1){o=t+-1|0;a[o>>0]=(q>>>0)%10|0|48;if(q>>>0<10)break;else{t=o;q=(q>>>0)/10|0}}if((o|0)!=(ya|0)){ua=t;bb=o}else O=312}else O=312;if((O|0)==312){O=0;a[Aa>>0]=48;ua=ya;bb=Aa}do if((p|0)==(s|0)){Vea(bb,1,e)|0;if((f|0)<1&v){o=ua;break}Vea(368568,1,e)|0;o=ua}else{if(bb>>>0>Qa>>>0)o=bb;else{o=bb;break}do{o=o+-1|0;a[o>>0]=48}while(o>>>0>Qa>>>0)}while(0);L=za-o|0;Vea(o,(f|0)>(L|0)?L:f,e)|0;f=f-L|0;p=p+4|0}while(p>>>0>>0&(f|0)>-1);if((f|0)<=0)break;sfa(Za|0,48,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{Vea(Za,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}Vea(Za,f,e)|0}while(0);Vea(z,Na-z|0,e)|0}while(0);if((y|0)==8192&F){f=N-E|0;sfa(Za|0,32,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{Vea(Za,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}Vea(Za,f,e)|0}B=Ca;C=Ea;s=$;f=M;o=F?N:E;continue a}default:{ga=Ca;ha=Ea;ia=f;n=L;ba=D;ca=0;ea=368472;aa=Da}}while(0);do if((O|0)==74){m=cb&32;if(!((Ca|0)==0&(Ea|0)==0)){f=Da;o=Ca;p=Ea;do{f=f+-1|0;a[f>>0]=d[368552+(o&15)>>0]|m;o=Bfa(o|0,p|0,4)|0;p=H}while(!((o|0)==0&(p|0)==0));if(!(Ta&8)){T=Ca;U=Ea;m=f;P=Ta;Q=Xa;R=0;S=368472;O=90}else{T=Ca;U=Ea;m=f;P=Ta;Q=Xa;R=2;S=368472+(cb>>4)|0;O=90}}else{T=Ca;U=Ea;m=Da;P=Ta;Q=Xa;R=0;S=368472;O=90}}else if((O|0)==85){if(Fa>>>0>0|(Fa|0)==0&Ga>>>0>4294967295){m=Da;o=Ga;p=Fa;while(1){f=Kfa(o|0,p|0,10,0)|0;m=m+-1|0;a[m>>0]=f|48;f=Jfa(o|0,p|0,10,0)|0;if(p>>>0>9|(p|0)==9&o>>>0>4294967295){o=f;p=H}else break}}else{m=Da;f=Ga}if(!f){T=Ga;U=Fa;P=L;Q=D;R=_a;S=$a;O=90}else while(1){m=m+-1|0;a[m>>0]=(f>>>0)%10|0|48;if(f>>>0<10){T=Ga;U=Fa;P=L;Q=D;R=_a;S=$a;O=90;break}else f=(f>>>0)/10|0}}else if((O|0)==95){O=0;f=efa(Oa,0,D)|0;if(!f){ga=Ca;ha=Ea;ia=Oa;n=s;ba=D;ca=0;ea=368472;aa=Oa+D|0;break}else{ga=Ca;ha=Ea;ia=Oa;n=s;ba=f-Oa|0;ca=0;ea=368472;aa=f;break}}else if((O|0)==100){o=0;f=0;q=sa;while(1){p=c[q>>2]|0;if(!p)break;f=Pea(Wa,p)|0;if((f|0)<0|f>>>0>(Ya-o|0)>>>0)break;o=f+o|0;if(Ya>>>0>o>>>0)q=q+4|0;else break}if((f|0)<0){fb=-1;O=369;break a}else{Z=ta;_=sa;Y=o;O=105}}while(0);if((O|0)==90){O=0;n=(Q|0)>-1?P&-65537:P;f=(T|0)!=0|(U|0)!=0;if(f|(Q|0)!=0){ba=(f&1^1)+(Ha-m)|0;ga=T;ha=U;ia=m;ba=(Q|0)>(ba|0)?Q:ba;ca=R;ea=S;aa=Da}else{ga=T;ha=U;ia=Da;ba=0;ca=R;ea=S;aa=Da}}else if((O|0)==105){O=0;s=L&73728;t=(N|0)>(Y|0);if((s|0)==0&t){f=N-Y|0;sfa(Za|0,32,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{Vea(Za,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}Vea(Za,f,e)|0}h:do if(Y){o=0;q=_;while(1){f=c[q>>2]|0;if(!f)break h;f=Pea(Wa,f)|0;o=f+o|0;if((o|0)>(Y|0))break h;Vea(Wa,f,e)|0;if(o>>>0>=Y>>>0)break;else q=q+4|0}}while(0);if((s|0)==8192&t){f=N-Y|0;sfa(Za|0,32,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{Vea(Za,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}Vea(Za,f,e)|0}B=Z;C=Ea;s=$;f=M;o=t?N:Y;continue}p=aa-ia|0;s=(ba|0)<(p|0)?p:ba;v=ca+s|0;w=(N|0)<(v|0)?v:N;t=n&73728;q=(w|0)>(v|0);if((t|0)==0&q){f=w-v|0;sfa(Za|0,32,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{Vea(Za,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}Vea(Za,f,e)|0}Vea(ea,ca,e)|0;if((t|0)==65536&q){f=w-v|0;sfa(Za|0,48,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{Vea(Za,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}Vea(Za,f,e)|0}if((s|0)>(p|0)){f=s-p|0;sfa(Za|0,48,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{Vea(Za,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}Vea(Za,f,e)|0}Vea(ia,p,e)|0;if(!((t|0)==8192&q)){B=ga;C=ha;s=$;f=M;o=w;continue}f=w-v|0;sfa(Za|0,32,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{Vea(Za,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}Vea(Za,f,e)|0;B=ga;C=ha;s=$;f=M;o=w}if((O|0)==351){if(e){l=Ra;i=hb;return l|0}if(!Va){l=0;i=hb;return l|0}else n=1;while(1){f=c[l+(n<<2)>>2]|0;if(!f){gb=n;break}m=j+(n<<3)|0;i:do if(f>>>0<=20)do switch(f|0){case 11:{eb=c[g>>2]|0;db=c[eb>>2]|0;c[g>>2]=eb+4;eb=m;c[eb>>2]=db;c[eb+4>>2]=0;break i}case 9:{db=c[g>>2]|0;eb=c[db>>2]|0;c[g>>2]=db+4;c[m>>2]=eb;break i}case 10:{eb=c[g>>2]|0;db=c[eb>>2]|0;c[g>>2]=eb+4;eb=m;c[eb>>2]=db;c[eb+4>>2]=((db|0)<0)<<31>>31;break i}case 16:{eb=c[g>>2]|0;db=c[eb>>2]|0;c[g>>2]=eb+4;eb=m;c[eb>>2]=db&255;c[eb+4>>2]=0;break i}case 15:{eb=c[g>>2]|0;db=c[eb>>2]|0;c[g>>2]=eb+4;db=(db&255)<<24>>24;eb=m;c[eb>>2]=db;c[eb+4>>2]=((db|0)<0)<<31>>31;break i}case 14:{eb=c[g>>2]|0;db=c[eb>>2]|0;c[g>>2]=eb+4;eb=m;c[eb>>2]=db&65535;c[eb+4>>2]=0;break i}case 17:{eb=c[g>>2]|0;c[k>>2]=c[eb>>2];c[k+4>>2]=c[eb+4>>2];x=+h[k>>3];c[g>>2]=eb+8;h[m>>3]=x;break i}case 13:{eb=c[g>>2]|0;db=c[eb>>2]|0;c[g>>2]=eb+4;db=(db&65535)<<16>>16;eb=m;c[eb>>2]=db;c[eb+4>>2]=((db|0)<0)<<31>>31;break i}case 12:{eb=c[g>>2]|0;db=eb;bb=c[db>>2]|0;db=c[db+4>>2]|0;c[g>>2]=eb+8;eb=m;c[eb>>2]=bb;c[eb+4>>2]=db;break i}case 18:{eb=c[g>>2]|0;c[k>>2]=c[eb>>2];c[k+4>>2]=c[eb+4>>2];x=+h[k>>3];c[g>>2]=eb+8;h[m>>3]=x;break i}default:break i}while(0);while(0);n=n+1|0;if((n|0)>=10){fb=1;O=369;break}}if((O|0)==369){i=hb;return fb|0}while(1){if(c[l+(gb<<2)>>2]|0){fb=-1;O=369;break}gb=gb+1|0;if((gb|0)>=10){fb=1;O=369;break}}if((O|0)==369){i=hb;return fb|0}}else if((O|0)==369){i=hb;return fb|0}return 0}function nfa(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+16>>2]|0)-f|0;a=a>>>0>d>>>0?d:a;qfa(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function ofa(){}function pfa(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){H=b>>c;return a>>>c|(b&(1<>c-32|0}function qfa(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return eb(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function rfa(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else qfa(b,c,d)|0;return b|0}function sfa(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;h=b&3;i=d|d<<8|d<<16|d<<24;g=f&~3;if(h){h=b+4-h|0;while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(g|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function tfa(b){b=b|0;var c=0;c=b;while(a[c>>0]|0)c=c+1|0;return c-b|0}function ufa(b,c){b=b|0;c=c|0;var d=0,e=0;e=b+(tfa(b)|0)|0;do{a[e+d>>0]=a[c+d>>0];d=d+1|0}while(a[c+(d-1)>>0]|0);return b|0}function vfa(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){H=b<>>32-c;return a<>0]=a[c+d>>0];d=d+1|0}while(a[c+(d-1)>>0]|0);return b|0}function xfa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (H=d,a-c>>>0|0)|0}function yfa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (H=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function zfa(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;while((e|0)<(d|0)){a[b+e>>0]=f?0:a[c+e>>0]|0;f=f?1:(a[c+e>>0]|0)==0;e=e+1|0}return b|0}function Afa(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;u=u+1|0;c[a>>2]=u;while((f|0)<(e|0)){if(!(c[d+(f<<3)>>2]|0)){c[d+(f<<3)>>2]=u;c[d+((f<<3)+4)>>2]=b;c[d+((f<<3)+8)>>2]=0;H=e;return d|0}f=f+1|0}e=e*2|0;d=tea(d|0,8*(e+1|0)|0)|0;d=Afa(a|0,b|0,d|0,e|0)|0;H=e;return d|0}function Bfa(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){H=b>>>c;return a>>>c|(b&(1<>>c-32|0}function Cfa(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;while((f|0)<(d|0)){e=c[b+(f<<3)>>2]|0;if(!e)break;if((e|0)==(a|0))return c[b+((f<<3)+4)>>2]|0;f=f+1|0}return 0}function Dfa(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function Efa(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[m+(b>>>24)>>0]|0)+24|0}function Ffa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=da(e,f)|0;d=a>>>16;a=(c>>>16)+(da(e,d)|0)|0;e=b>>>16;b=da(e,f)|0;return (H=(a>>>16)+(da(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function Gfa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=xfa(j^a,i^b,j,i)|0;g=H;a=f^j;b=e^i;c=xfa((Lfa(h,g,xfa(f^c,e^d,f,e)|0,H,0)|0)^a,H^b,a,b)|0;return c|0}function Hfa(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+8|0;j=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;l=e>>31|((e|0)<0?-1:0)<<1;k=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;a=xfa(h^a,g^b,h,g)|0;b=H;Lfa(a,b,xfa(l^d,k^e,l,k)|0,H,j)|0;d=xfa(c[j>>2]^h,c[j+4>>2]^g,h,g)|0;e=H;i=f;return (H=e,d)|0}function Ifa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=Ffa(e,f)|0;a=H;return (H=(da(b,f)|0)+(da(d,e)|0)+a|a&0,c|0|0)|0}function Jfa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=Lfa(a,b,c,d,0)|0;return c|0}function Kfa(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+8|0;f=g|0;Lfa(a,b,d,e,f)|0;i=g;return (H=c[f+4>>2]|0,c[f>>2]|0)|0}function Lfa(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=a;m=b;l=m;i=d;o=e;h=o;if(!l){g=(f|0)!=0;if(!h){if(g){c[f>>2]=(n>>>0)%(i>>>0);c[f+4>>2]=0}o=0;f=(n>>>0)/(i>>>0)>>>0;return (H=o,f)|0}else{if(!g){o=0;f=0;return (H=o,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;o=0;f=0;return (H=o,f)|0}}g=(h|0)==0;do if(i){if(!g){g=(fa(h|0)|0)-(fa(l|0)|0)|0;if(g>>>0<=31){b=g+1|0;h=31-g|0;k=g-31>>31;i=b;j=n>>>(b>>>0)&k|l<>>(b>>>0)&k;g=0;h=n<>2]=a|0;c[f+4>>2]=m|b&0;o=0;f=0;return (H=o,f)|0}g=i-1|0;if(g&i){h=(fa(i|0)|0)+33-(fa(l|0)|0)|0;p=64-h|0;b=32-h|0;a=b>>31;m=h-32|0;k=m>>31;i=h;j=b-1>>31&l>>>(m>>>0)|(l<>>(h>>>0))&k;k=k&l>>>(h>>>0);g=n<>>(m>>>0))&a|n<>31;break}if(f){c[f>>2]=g&n;c[f+4>>2]=0}if((i|0)==1){f=m|b&0;p=a|0|0;return (H=f,p)|0}else{p=Efa(i|0)|0;f=l>>>(p>>>0)|0;p=l<<32-p|n>>>(p>>>0)|0;return (H=f,p)|0}}else{if(g){if(f){c[f>>2]=(l>>>0)%(i>>>0);c[f+4>>2]=0}f=0;p=(l>>>0)/(i>>>0)>>>0;return (H=f,p)|0}if(!n){if(f){c[f>>2]=0;c[f+4>>2]=(l>>>0)%(h>>>0)}f=0;p=(l>>>0)/(h>>>0)>>>0;return (H=f,p)|0}g=h-1|0;if(!(g&h)){if(f){c[f>>2]=a|0;c[f+4>>2]=g&l|b&0}f=0;p=l>>>((Efa(h|0)|0)>>>0);return (H=f,p)|0}g=(fa(h|0)|0)-(fa(l|0)|0)|0;if(g>>>0<=30){k=g+1|0;h=31-g|0;i=k;j=l<>>(k>>>0);k=l>>>(k>>>0);g=0;h=n<>2]=a|0;c[f+4>>2]=m|b&0;f=0;p=0;return (H=f,p)|0}while(0);if(!i){m=h;i=0;a=0}else{d=d|0|0;b=o|e&0;l=yfa(d,b,-1,-1)|0;m=H;a=0;do{n=h;h=g>>>31|h<<1;g=a|g<<1;n=j<<1|n>>>31|0;e=j>>>31|k<<1|0;xfa(l,m,n,e)|0;p=H;o=p>>31|((p|0)<0?-1:0)<<1;a=o&1;j=xfa(n,e,o&d,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&b)|0;k=H;i=i-1|0}while((i|0)!=0);m=h;i=0}h=0;if(f){c[f>>2]=j;c[f+4>>2]=k}f=(g|0)>>>31|(m|h)<<1|(h<<1|g>>>31)&0|i;p=(g<<1|0>>>31)&-2|a;return (H=f,p)|0}function Mfa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return zd[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function Nfa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Ad[a&63](b|0,c|0,d|0,e|0,f|0)}function Ofa(a,b){a=a|0;b=b|0;Bd[a&511](b|0)}function Pfa(a,b,c){a=a|0;b=b|0;c=c|0;Cd[a&255](b|0,c|0)}function Qfa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Dd[a&31](b|0,c|0,d|0,e|0,f|0,g|0)|0}function Rfa(a,b){a=a|0;b=b|0;return Ed[a&511](b|0)|0}function Sfa(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return Fd[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function Tfa(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;Gd[a&3](b|0,+c,+d)}function Ufa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Hd[a&255](b|0,c|0,d|0)|0}function Vfa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;Id[a&7](b|0,c|0,d|0,e|0,f|0,+g)}function Wfa(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;Jd[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function Xfa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Kd[a&31](b|0,c|0,d|0,e|0,f|0,g|0)}function Yfa(a,b){a=a|0;b=b|0;return +Ld[a&3](b|0)}function Zfa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;Md[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function _fa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;Nd[a&3](b|0,c|0,d|0,e|0,f|0,g|0,+h)}function $fa(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;Od[a&31](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aga(a,b,c){a=a|0;b=b|0;c=c|0;return Pd[a&511](b|0,c|0)|0}function bga(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Qd[a&127](b|0,c|0,d|0,e|0,f|0)|0}function cga(a){a=a|0;return Rd[a&255]()|0}function dga(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;Sd[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)}function ega(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return Td[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)|0}function fga(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ud[a&255](b|0,c|0,d|0)}function gga(a){a=a|0;Vd[a&3]()}function hga(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return Wd[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function iga(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Xd[a&255](b|0,c|0,d|0,e|0)|0}function jga(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Yd[a&63](b|0,c|0,d|0,e|0)}function kga(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;ga(0);return 0}function lga(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ga(1)}function mga(a){a=a|0;ga(2)}function nga(a,b){a=a|0;b=b|0;ga(3)}function oga(a,b){a=a|0;b=b|0;td(a|0,b|0)}function pga(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ga(4);return 0}function qga(a){a=a|0;ga(5);return 0}function rga(a){a=a|0;return gc(a|0)|0}function sga(a){a=a|0;return tfa(a|0)|0}function tga(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;ga(6);return 0}function uga(a,b,c){a=a|0;b=+b;c=+c;ga(7)}function vga(a,b,c){a=a|0;b=b|0;c=c|0;ga(8);return 0}function wga(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ga(9)}function xga(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ga(10)}function yga(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ga(11)}function zga(a){a=a|0;ga(12);return 0.0}function Aga(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;ga(13)}function Bga(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;ga(14)}function Cga(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ga(15)}function Dga(a,b){a=a|0;b=b|0;ga(16);return 0}function Ega(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ga(17);return 0}function Fga(){ga(18);return 0}function Gga(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;ga(19)}function Hga(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ga(20);return 0}function Iga(a,b,c){a=a|0;b=b|0;c=c|0;ga(21)}function Jga(a,b,c){a=a|0;b=b|0;c=c|0;qd(a|0,b|0,c|0)}function Kga(){ga(22)}function Lga(){Mc()}function Mga(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ga(23);return 0}function Nga(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ga(24);return 0}function Oga(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ga(25)} -function sA(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0;switch(c[d+80>>2]|0){case 4:{e=d+40|0;if(!(c[e>>2]|0)){ga=c[d+24>>2]|0;Y=d+36|0;G=Y;Y=c[Y>>2]|0;_=ga;ga=(c[d+196>>2]|0)+(ga<<4)|0;l=179}else{c[e>>2]=0;H=c[d+48>>2]|0;c[d+24>>2]=H;l=143}a:while(1){if((l|0)==143){if(H>>>0>=(c[d+60>>2]|0)>>>0){bb=0;l=184;break}e=c[d+196>>2]|0;q=e+(H<<4)|0;o=d+224|0;c[o>>2]=0;p=d+228|0;c[p>>2]=0;i=c[e+(H<<4)+8>>2]|0;if(i){k=c[e+(H<<4)+12>>2]|0;n=c[q>>2]|0;g=c[e+(H<<4)+4>>2]|0;m=i+-1|0;l=0;e=0;h=0;j=0;while(1){f=m+h|0;h=n<<(c[k+(j<<4)>>2]|0)+f;f=g<<(c[k+(j<<4)+4>>2]|0)+f;if(!l)l=h;else l=l>>>0>>0?l:h;if(!e)e=f;else e=e>>>0>>0?e:f;f=j+1|0;if((f|0)==(i|0))break;else{h=~j;j=f}}c[o>>2]=l;c[p>>2]=e}if(!(a[d>>0]|0)){e=c[d+204>>2]|0;c[d+104>>2]=e;c[d+96>>2]=c[d+200>>2];c[d+108>>2]=c[d+212>>2];c[d+100>>2]=c[d+208>>2]}else e=c[d+104>>2]|0;c[d+220>>2]=e;D=e;E=H;l=156}else if((l|0)==179){V=Y+1|0;c[G>>2]=V;W=_;fa=ga;l=174}while(1){if((l|0)==156){if((D|0)>=(c[d+108>>2]|0)){l=183;break}I=c[d+96>>2]|0;c[d+216>>2]=I;$=E;ca=q;l=158}else if((l|0)==174){l=0;if(V>>>0<(c[d+52>>2]|0)>>>0)break;Z=c[d+28>>2]|0;ba=W;ha=fa;l=180}while(1){if((l|0)==158){if((I|0)>=(c[d+100>>2]|0)){l=182;break}J=c[d+44>>2]|0;c[d+28>>2]=J;aa=$;ea=ca}else if((l|0)==180){J=Z+1|0;c[d+28>>2]=J;aa=ba;ea=ha}$a=c[d+56>>2]|0;e=c[ea+8>>2]|0;if(J>>>0>=($a>>>0>>0?$a:e)>>>0){I=c[d+224>>2]|0;$=d+216|0;ca=c[$>>2]|0;I=ca+I-((ca|0)%(I|0)|0)|0;c[$>>2]=I;$=aa;ca=ea;l=158;continue}n=c[ea+12>>2]|0;e=e+~J|0;l=c[ea>>2]|0;K=l<>2]|0;L=K+-1|0;M=(h+L|0)/(K|0)|0;f=c[d+204>>2]|0;g=c[ea+4>>2]|0;N=g<>2]|0)+L|0)/(K|0)|0;P=N+-1|0;j=((c[d+212>>2]|0)+P|0)/(N|0)|0;Q=c[n+(J<<4)>>2]|0;i=Q+e|0;R=c[n+(J<<4)+4>>2]|0;k=R+e|0;S=c[d+220>>2]|0;if((S|0)%(g<>2]|0;if((T|0)%(l<>2]|0;if(!U){Z=J;ba=aa;ha=ea;l=180;continue}if(((M|0)==(m|0)?1:(c[n+(J<<4)+12>>2]|0)==0)|(O|0)==(j|0)){Z=J;ba=aa;ha=ea;l=180}else{l=173;break}}if((l|0)==173){c[d+32>>2]=(((T+L|0)/(K|0)|0)>>Q)-(M>>Q)+(da((((S+P|0)/(N|0)|0)>>R)-(O>>R)|0,U)|0);V=c[d+64>>2]|0;c[d+36>>2]=V;W=aa;fa=ea;l=174;continue}else if((l|0)==182){D=c[d+228>>2]|0;E=d+220|0;q=c[E>>2]|0;D=q+D-((q|0)%(D|0)|0)|0;c[E>>2]=D;E=$;q=ca;l=156;continue}}if((l|0)==183){H=E+1|0;c[d+24>>2]=H;l=143;continue}X=da(c[d+8>>2]|0,V)|0;X=(da(c[d+12>>2]|0,c[d+28>>2]|0)|0)+X|0;X=X+(da(c[d+16>>2]|0,W)|0)|0;X=X+(da(c[d+20>>2]|0,c[d+32>>2]|0)|0)|0;X=(c[d+4>>2]|0)+(X<<1)|0;if(!(b[X>>1]|0)){l=178;break}G=d+36|0;Y=V;_=W;ga=fa;l=179}if((l|0)==162)Ra(258480,258488,105,258528);else if((l|0)==164)Ra(258480,258488,105,258528);else if((l|0)==178){b[X>>1]=1;d=1;return d|0}else if((l|0)==184)return bb|0;break}case 0:{e=d+40|0;if(!(c[e>>2]|0)){A=d+32|0;i=A;A=c[A>>2]|0;l=20}else{c[e>>2]=0;k=c[d+64>>2]|0;c[d+36>>2]=k;l=5}while(1){if((l|0)==5){if(k>>>0>=(c[d+52>>2]|0)>>>0){bb=0;l=184;break}v=c[d+44>>2]|0;c[d+28>>2]=v;l=7}else if((l|0)==20){f=A+1|0;c[i>>2]=f;l=15}while(1){if((l|0)==7){l=0;if(v>>>0>=(c[d+56>>2]|0)>>>0){l=23;break}w=c[d+48>>2]|0;c[d+24>>2]=w}else if((l|0)==15){l=0;if(f>>>0<(c[d+72>>2]|0)>>>0)break;B=d+24|0;g=B;B=c[B>>2]|0;l=21}while(1){if((l|0)==21){l=0;w=B+1|0;c[g>>2]=w}if(w>>>0>=(c[d+60>>2]|0)>>>0){l=22;break}x=c[d+196>>2]|0;y=c[d+28>>2]|0;if(y>>>0<(c[x+(w<<4)+8>>2]|0)>>>0)break;g=d+24|0;B=w;l=21}if((l|0)==22){l=d+28|0;v=(c[l>>2]|0)+1|0;c[l>>2]=v;l=7;continue}e=c[x+(w<<4)+12>>2]|0;if(!(a[d>>0]|0))c[d+72>>2]=da(c[e+(y<<4)+12>>2]|0,c[e+(y<<4)+8>>2]|0)|0;f=c[d+68>>2]|0;c[d+32>>2]=f;l=15}if((l|0)==23){l=d+36|0;k=(c[l>>2]|0)+1|0;c[l>>2]=k;l=5;continue}z=da(c[d+8>>2]|0,c[d+36>>2]|0)|0;z=(da(c[d+12>>2]|0,c[d+28>>2]|0)|0)+z|0;z=z+(da(c[d+16>>2]|0,c[d+24>>2]|0)|0)|0;z=z+(da(c[d+20>>2]|0,f)|0)|0;z=(c[d+4>>2]|0)+(z<<1)|0;if(!(b[z>>1]|0))break;i=d+32|0;A=f;l=20}if((l|0)==184)return bb|0;b[z>>1]=1;d=1;return d|0}case 1:{e=d+40|0;if(!(c[e>>2]|0)){t=d+32|0;m=t;t=c[t>>2]|0;l=42}else{c[e>>2]=0;C=c[d+44>>2]|0;c[d+28>>2]=C;l=27}while(1){if((l|0)==27){if(C>>>0>=(c[d+56>>2]|0)>>>0){bb=0;l=184;break}n=c[d+64>>2]|0;c[d+36>>2]=n;l=29}else if((l|0)==42){h=t+1|0;c[m>>2]=h;l=37}while(1){if((l|0)==29){l=0;if(n>>>0>=(c[d+52>>2]|0)>>>0){l=45;break}o=c[d+48>>2]|0;c[d+24>>2]=o}else if((l|0)==37){l=0;if(h>>>0<(c[d+72>>2]|0)>>>0)break;u=d+24|0;j=u;u=c[u>>2]|0;l=43}while(1){if((l|0)==43){l=0;o=u+1|0;c[j>>2]=o}if(o>>>0>=(c[d+60>>2]|0)>>>0){l=44;break}p=c[d+196>>2]|0;r=c[d+28>>2]|0;if(r>>>0<(c[p+(o<<4)+8>>2]|0)>>>0)break;j=d+24|0;u=o;l=43}if((l|0)==44){l=d+36|0;n=(c[l>>2]|0)+1|0;c[l>>2]=n;l=29;continue}e=c[p+(o<<4)+12>>2]|0;if(!(a[d>>0]|0))c[d+72>>2]=da(c[e+(r<<4)+12>>2]|0,c[e+(r<<4)+8>>2]|0)|0;h=c[d+68>>2]|0;c[d+32>>2]=h;l=37}if((l|0)==45){l=d+28|0;C=(c[l>>2]|0)+1|0;c[l>>2]=C;l=27;continue}s=da(c[d+8>>2]|0,c[d+36>>2]|0)|0;s=(da(c[d+12>>2]|0,c[d+28>>2]|0)|0)+s|0;s=s+(da(c[d+16>>2]|0,c[d+24>>2]|0)|0)|0;s=s+(da(c[d+20>>2]|0,h)|0)|0;s=(c[d+4>>2]|0)+(s<<1)|0;if(!(b[s>>1]|0))break;m=d+32|0;t=h;l=42}if((l|0)==184)return bb|0;b[s>>1]=1;d=1;return d|0}case 3:{f=d+40|0;if(!(c[f>>2]|0)){Ha=c[d+24>>2]|0;Aa=d+36|0;ia=Aa;Aa=c[Aa>>2]|0;Da=Ha;Ha=(c[d+196>>2]|0)+(Ha<<4)|0;l=135}else{c[f>>2]=0;o=d+224|0;c[o>>2]=0;p=d+228|0;c[p>>2]=0;q=c[d+192>>2]|0;if(q){r=c[d+196>>2]|0;l=0;e=0;s=0;do{m=c[r+(s<<4)+8>>2]|0;if(m){j=c[r+(s<<4)+12>>2]|0;i=c[r+(s<<4)>>2]|0;k=c[r+(s<<4)+4>>2]|0;n=m+-1|0;h=0;g=0;while(1){f=n+h|0;h=i<<(c[j+(g<<4)>>2]|0)+f;f=k<<(c[j+(g<<4)+4>>2]|0)+f;if(!l)l=h;else l=l>>>0>>0?l:h;if(!e)e=f;else e=e>>>0>>0?e:f;f=g+1|0;if((f|0)==(m|0))break;else{h=~g;g=f}}c[o>>2]=l;c[p>>2]=e}s=s+1|0}while((s|0)!=(q|0))}if(!(a[d>>0]|0)){e=c[d+204>>2]|0;c[d+104>>2]=e;c[d+96>>2]=c[d+200>>2];c[d+108>>2]=c[d+212>>2];c[d+100>>2]=c[d+208>>2]}else e=c[d+104>>2]|0;c[d+220>>2]=e;l=110}b:while(1){if((l|0)==110){if((e|0)>=(c[d+108>>2]|0)){bb=0;l=184;break}ja=c[d+96>>2]|0;c[d+216>>2]=ja;l=112}else if((l|0)==135){xa=Aa+1|0;c[ia>>2]=xa;ya=Da;Ga=Ha;l=130}while(1){if((l|0)==112){if((ja|0)>=(c[d+100>>2]|0)){l=139;break}ka=c[d+48>>2]|0;c[d+24>>2]=ka;l=114}else if((l|0)==130){l=0;if(xa>>>0<(c[d+52>>2]|0)>>>0)break;Ba=c[d+28>>2]|0;Ea=ya;Ia=Ga;l=136}while(1){if((l|0)==114){if(ka>>>0>=(c[d+60>>2]|0)>>>0){l=138;break}Fa=(c[d+196>>2]|0)+(ka<<4)|0;la=c[d+44>>2]|0;c[d+28>>2]=la;Ca=ka}else if((l|0)==136){la=Ba+1|0;c[d+28>>2]=la;Ca=Ea;Fa=Ia}$a=c[d+56>>2]|0;f=c[Fa+8>>2]|0;if(la>>>0>=($a>>>0>>0?$a:f)>>>0){ka=Ca+1|0;c[d+24>>2]=ka;l=114;continue}o=c[Fa+12>>2]|0;l=f+~la|0;h=c[Fa>>2]|0;ma=h<>2]|0;na=ma+-1|0;oa=(f+na|0)/(ma|0)|0;g=c[d+204>>2]|0;m=c[Fa+4>>2]|0;pa=m<>2]|0)+na|0)/(ma|0)|0;ra=pa+-1|0;i=((c[d+212>>2]|0)+ra|0)/(pa|0)|0;sa=c[o+(la<<4)>>2]|0;k=sa+l|0;ta=c[o+(la<<4)+4>>2]|0;n=ta+l|0;ua=c[d+220>>2]|0;if((ua|0)%(m<>2]|0;if((va|0)%(h<>2]|0;if(!wa){Ba=la;Ea=Ca;Ia=Fa;l=136;continue}if(((oa|0)==(j|0)?1:(c[o+(la<<4)+12>>2]|0)==0)|(qa|0)==(i|0)){Ba=la;Ea=Ca;Ia=Fa;l=136}else{l=129;break}}if((l|0)==129){c[d+32>>2]=(((va+na|0)/(ma|0)|0)>>sa)-(oa>>sa)+(da((((ua+ra|0)/(pa|0)|0)>>ta)-(qa>>ta)|0,wa)|0);xa=c[d+64>>2]|0;c[d+36>>2]=xa;ya=Ca;Ga=Fa;l=130;continue}else if((l|0)==138){ja=c[d+224>>2]|0;l=d+216|0;$a=c[l>>2]|0;ja=$a+ja-(($a|0)%(ja|0)|0)|0;c[l>>2]=ja;l=112;continue}}if((l|0)==139){e=c[d+228>>2]|0;l=d+220|0;$a=c[l>>2]|0;e=$a+e-(($a|0)%(e|0)|0)|0;c[l>>2]=e;l=110;continue}za=da(c[d+8>>2]|0,xa)|0;za=(da(c[d+12>>2]|0,c[d+28>>2]|0)|0)+za|0;za=za+(da(c[d+16>>2]|0,ya)|0)|0;za=za+(da(c[d+20>>2]|0,c[d+32>>2]|0)|0)|0;za=(c[d+4>>2]|0)+(za<<1)|0;if(!(b[za>>1]|0)){l=134;break}ia=d+36|0;Aa=xa;Da=ya;Ha=Ga;l=135}if((l|0)==118)Ra(258480,258488,105,258528);else if((l|0)==120)Ra(258480,258488,105,258528);else if((l|0)==134){b[za>>1]=1;d=1;return d|0}else if((l|0)==184)return bb|0;break}case 2:{e=d+40|0;if(!(c[e>>2]|0)){$a=d+36|0;Ja=$a;$a=c[$a>>2]|0;l=88}else{c[e>>2]=0;o=d+224|0;c[o>>2]=0;p=d+228|0;c[p>>2]=0;q=c[d+192>>2]|0;if(q){r=c[d+196>>2]|0;f=0;e=0;s=0;do{m=c[r+(s<<4)+8>>2]|0;if(m){j=c[r+(s<<4)+12>>2]|0;i=c[r+(s<<4)>>2]|0;k=c[r+(s<<4)+4>>2]|0;n=m+-1|0;l=0;g=0;while(1){h=n+l|0;l=i<<(c[j+(g<<4)>>2]|0)+h;h=k<<(c[j+(g<<4)+4>>2]|0)+h;if(!f)f=l;else f=f>>>0>>0?f:l;if(!e)e=h;else e=e>>>0>>0?e:h;h=g+1|0;if((h|0)==(m|0))break;else{l=~g;g=h}}c[o>>2]=f;c[p>>2]=e}s=s+1|0}while((s|0)!=(q|0))}if(!(a[d>>0]|0)){c[d+104>>2]=c[d+204>>2];c[d+96>>2]=c[d+200>>2];c[d+108>>2]=c[d+212>>2];c[d+100>>2]=c[d+208>>2]}F=c[d+44>>2]|0;c[d+28>>2]=F;l=62}c:while(1){if((l|0)==62){if(F>>>0>=(c[d+56>>2]|0)>>>0){bb=0;l=184;break}Ka=c[d+104>>2]|0;c[d+220>>2]=Ka;l=64}else if((l|0)==88){Za=$a+1|0;c[Ja>>2]=Za;l=83}while(1){if((l|0)==64){if((Ka|0)>=(c[d+108>>2]|0)){l=92;break}La=c[d+96>>2]|0;c[d+216>>2]=La;l=66}else if((l|0)==83){l=0;if(Za>>>0<(c[d+52>>2]|0)>>>0)break;ab=c[d+24>>2]|0;l=89}while(1){if((l|0)==66){if((La|0)>=(c[d+100>>2]|0)){l=91;break}Ma=c[d+48>>2]|0;c[d+24>>2]=Ma}else if((l|0)==89){Ma=ab+1|0;c[d+24>>2]=Ma}if(Ma>>>0>=(c[d+60>>2]|0)>>>0){La=c[d+224>>2]|0;l=d+216|0;Ia=c[l>>2]|0;La=Ia+La-((Ia|0)%(La|0)|0)|0;c[l>>2]=La;l=66;continue}f=c[d+196>>2]|0;n=c[d+28>>2]|0;e=c[f+(Ma<<4)+8>>2]|0;if(n>>>0>=e>>>0){ab=Ma;l=89;continue}o=c[f+(Ma<<4)+12>>2]|0;j=e+~n|0;k=c[f+(Ma<<4)>>2]|0;Na=k<>2]|0;Oa=Na+-1|0;Pa=(l+Oa|0)/(Na|0)|0;m=c[d+204>>2]|0;e=c[f+(Ma<<4)+4>>2]|0;Qa=e<>2]|0)+Oa|0)/(Na|0)|0;Ta=Qa+-1|0;g=((c[d+212>>2]|0)+Ta|0)/(Qa|0)|0;Ua=c[o+(n<<4)>>2]|0;h=Ua+j|0;Va=c[o+(n<<4)+4>>2]|0;i=Va+j|0;Wa=c[d+220>>2]|0;if((Wa|0)%(e<>2]|0;if((Xa|0)%(k<>2]|0;if(!Ya){ab=Ma;l=89;continue}if(((Pa|0)==(f|0)?1:(c[o+(n<<4)+12>>2]|0)==0)|(Sa|0)==(g|0)){ab=Ma;l=89}else{l=82;break}}if((l|0)==82){c[d+32>>2]=(((Xa+Oa|0)/(Na|0)|0)>>Ua)-(Pa>>Ua)+(da((((Wa+Ta|0)/(Qa|0)|0)>>Va)-(Sa>>Va)|0,Ya)|0);Za=c[d+64>>2]|0;c[d+36>>2]=Za;l=83;continue}else if((l|0)==91){Ka=c[d+228>>2]|0;l=d+220|0;Ia=c[l>>2]|0;Ka=Ia+Ka-((Ia|0)%(Ka|0)|0)|0;c[l>>2]=Ka;l=64;continue}}if((l|0)==92){l=d+28|0;F=(c[l>>2]|0)+1|0;c[l>>2]=F;l=62;continue}_a=da(c[d+8>>2]|0,Za)|0;_a=(da(c[d+12>>2]|0,c[d+28>>2]|0)|0)+_a|0;_a=_a+(da(c[d+16>>2]|0,c[d+24>>2]|0)|0)|0;_a=_a+(da(c[d+20>>2]|0,c[d+32>>2]|0)|0)|0;_a=(c[d+4>>2]|0)+(_a<<1)|0;if(!(b[_a>>1]|0)){l=87;break}Ja=d+36|0;$a=Za;l=88}if((l|0)==71)Ra(258480,258488,105,258528);else if((l|0)==73)Ra(258480,258488,105,258528);else if((l|0)==87){b[_a>>1]=1;d=1;return d|0}else if((l|0)==184)return bb|0;break}default:{d=0;return d|0}}return 0}function tA(){return qea(28)|0}function uA(a){a=a|0;if(!a)return;rea(a);return}function vA(b,d,e){b=b|0;d=d|0;e=e|0;c[b+20>>2]=d;c[b+8>>2]=e;c[b+12>>2]=0;a[b>>0]=0;c[b+4>>2]=0;return}function wA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=b+4|0;d=c[g>>2]|0;do if(!d){c[g>>2]=8;e=b+12|0;f=c[e>>2]|0;if((f|0)==(c[b+8>>2]|0)){a[b>>0]=-1;d=8;e=-1;break}if((a[b>>0]|0)==-1){c[g>>2]=7;d=7}else d=8;h=a[(c[b+20>>2]|0)+f>>0]|0;a[b>>0]=h;c[e>>2]=f+1;e=h}else e=a[b>>0]|0;while(0);h=d+-1|0;c[g>>2]=h;return (e&255)>>>h&1|0}function xA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=da(d,b)|0;h=a+24|0;i=a+8|0;e=c[i>>2]|0;do if(g>>>0>(c[h>>2]|0)>>>0){rea(e);f=g<<2;e=uea(16,f)|0;c[i>>2]=e;if(!e){a=0;return a|0}else{c[h>>2]=g;break}}else f=g<<2;while(0);sfa(e|0,0,f|0)|0;h=b+2|0;c[a+32>>2]=h;h=da(d+2|0,h)|0;g=a+28|0;i=a+12|0;e=c[i>>2]|0;do if(h>>>0>(c[g>>2]|0)>>>0){rea(e);f=h<<1;e=uea(16,f)|0;c[i>>2]=e;if(!e){a=0;return a|0}else{c[g>>2]=h;break}}else f=h<<1;while(0);sfa(e|0,0,f|0)|0;c[a+16>>2]=b;c[a+20>>2]=d;a=1;return a|0}function yA(){var a=0,b=0,d=0;d=qea(36)|0;if(!d){d=0;return d|0}a=d+0|0;b=a+36|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));a=Hz()|0;c[d>>2]=a;if(!a){Iz(0);uA(0);rea(d);d=0;return d|0}b=tA()|0;c[d+4>>2]=b;if(b)return d|0;Iz(a);uA(0);rea(d);d=0;return d|0}function zA(a){a=a|0;var b=0,d=0;if(!a)return;Iz(c[a>>2]|0);c[a>>2]=0;b=a+4|0;uA(c[b>>2]|0);c[b>>2]=0;b=a+8|0;d=c[b>>2]|0;if(d){rea(d);c[b>>2]=0}b=c[a+12>>2]|0;if(b)rea(b);rea(a);return}function AA(a,f,h){a=a|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0;ya=(c[f+8>>2]|0)-(c[f>>2]|0)|0;za=f+20|0;i=c[za>>2]|0;if(!i){a=1;return a|0}Aa=f+24|0;Ba=h+808|0;Ca=h+16|0;ta=a+4|0;va=a+8|0;wa=a+16|0;xa=a+20|0;sa=h+20|0;pa=f+32|0;qa=a+32|0;ra=a+12|0;h=i;oa=0;a:while(1){ma=c[Aa>>2]|0;na=ma+(oa*136|0)+24|0;f=c[na>>2]|0;if(f){ja=ma+(oa*136|0)+16|0;ka=ma+(oa*136|0)+20|0;la=oa+-1|0;h=c[ka>>2]|0;i=c[ja>>2]|0;ia=0;do{if(da(h,i)|0){ca=ma+(oa*136|0)+(ia*36|0)+48|0;ea=ma+(oa*136|0)+(ia*36|0)+44|0;fa=ma+(oa*136|0)+(ia*36|0)+28|0;ga=ma+(oa*136|0)+(ia*36|0)+32|0;ha=ma+(oa*136|0)+(ia*36|0)+60|0;ba=0;do{f=c[ca>>2]|0;$=f+(ba*40|0)+16|0;aa=f+(ba*40|0)+20|0;if(da(c[aa>>2]|0,c[$>>2]|0)|0){Z=f+(ba*40|0)+24|0;_=0;do{h=c[Z>>2]|0;S=c[ea>>2]|0;f=c[Ba>>2]|0;n=c[Ca>>2]|0;T=c[ta>>2]|0;U=c[a>>2]|0;V=h+(_*56|0)+8|0;Y=h+(_*56|0)+12|0;if(!(xA(a,(c[h+(_*56|0)+16>>2]|0)-(c[V>>2]|0)|0,(c[h+(_*56|0)+20>>2]|0)-(c[Y>>2]|0)|0)|0)){h=0;G=213;break a}W=h+(_*56|0)+24|0;i=c[W>>2]|0;Qz(U);Rz(U,18,0,46);Rz(U,17,0,3);Rz(U,0,0,4);X=h+(_*56|0)+48|0;j=c[X>>2]|0;if(j){N=h+(_*56|0)+4|0;O=(n&1|0)!=0;P=(n&2|0)==0;Q=(n&8|0)==0;R=S<<8;M=(n&32|0)==0;n=f+-1+i|0;h=2;L=0;do{i=c[N>>2]|0;K=(h>>>0<2?(n|0)<=((c[W>>2]|0)+-5|0):0)&O;f=c[i+(L<<5)>>2]|0;if(f){j=(c[f>>2]|0)+(c[i+(L<<5)+4>>2]|0)|0;f=c[i+(L<<5)+16>>2]|0;if(!K){if(!(Vz(U,j,f)|0)){h=0;G=213;break a}}else vA(T,j,f);I=i+(L<<5)+12|0;if(c[I>>2]|0){J=P|K;H=0;do{b:do if(!h){j=n+1|0;if(K){w=1<>1|w;f=c[xa>>2]|0;if(!f)break;v=0-w|0;j=c[wa>>2]|0;u=0;while(1){t=u;u=u+4|0;if(!j)j=0;else{q=(t|0)==-4;r=t|3;s=0;do{c:do if(!q){if(Q){m=t;while(1){if(m>>>0>=(c[xa>>2]|0)>>>0)break c;l=m;m=m+1|0;j=(da(c[qa>>2]|0,m)|0)+s|0;f=j+1|0;i=c[ra>>2]|0;o=i+(f<<1)|0;l=(da(c[wa>>2]|0,l)|0)+s|0;l=(c[va>>2]|0)+(l<<2)|0;k=c[ta>>2]|0;G=b[o>>1]|0;if((G&255|0)!=0&(G&20480|0)==0){if(wA(k)|0){D=wA(k)|0;c[l>>2]=(D|0)!=0?v:w;F=c[qa>>2]|0;G=i+(f-F<<1)|0;E=i+(F+f<<1)|0;C=i+(f+~F<<1)|0;b[C>>1]=e[C>>1]|2;b[G>>1]=b[G>>1]|b[254968+(D<<1)>>1];G=j+2|0;C=i+(G-F<<1)|0;b[C>>1]=e[C>>1]|4;C=i+(j<<1)|0;b[C>>1]=b[C>>1]|b[254968+(D+2<<1)>>1];b[o>>1]=e[o>>1]|4096;C=i+(G<<1)|0;b[C>>1]=b[C>>1]|b[254968+(D+4<<1)>>1];C=i+(F+j<<1)|0;b[C>>1]=e[C>>1]|1;b[E>>1]=b[E>>1]|b[254968+(D+6<<1)>>1];G=i+(F+G<<1)|0;b[G>>1]=e[G>>1]|8}b[o>>1]=e[o>>1]|16384}if(m>>>0>=u>>>0)break c}}else p=t;do{j=c[xa>>2]|0;if(p>>>0>=j>>>0)break c;if((p|0)==(r|0))m=1;else m=(p|0)==(j+-1|0);l=p;p=p+1|0;j=(da(c[qa>>2]|0,p)|0)+s|0;f=j+1|0;i=c[ra>>2]|0;o=i+(f<<1)|0;l=(da(c[wa>>2]|0,l)|0)+s|0;l=(c[va>>2]|0)+(l<<2)|0;k=c[ta>>2]|0;G=b[o>>1]|0;G=m?G&-1095:G;if((G&255|0)!=0&(G&20480|0)==0){if(wA(k)|0){D=wA(k)|0;c[l>>2]=(D|0)!=0?v:w;F=c[qa>>2]|0;G=i+(f-F<<1)|0;E=i+(F+f<<1)|0;C=i+(f+~F<<1)|0;b[C>>1]=e[C>>1]|2;b[G>>1]=b[G>>1]|b[254968+(D<<1)>>1];G=j+2|0;C=i+(G-F<<1)|0;b[C>>1]=e[C>>1]|4;C=i+(j<<1)|0;b[C>>1]=b[C>>1]|b[254968+(D+2<<1)>>1];b[o>>1]=e[o>>1]|4096;C=i+(G<<1)|0;b[C>>1]=b[C>>1]|b[254968+(D+4<<1)>>1];C=i+(F+j<<1)|0;b[C>>1]=e[C>>1]|1;b[E>>1]=b[E>>1]|b[254968+(D+6<<1)>>1];G=i+(F+G<<1)|0;b[G>>1]=e[G>>1]|8}b[o>>1]=e[o>>1]|16384}}while(p>>>0>>0)}while(0);s=s+1|0;j=c[wa>>2]|0}while(s>>>0>>0);f=c[xa>>2]|0}if(u>>>0>=f>>>0){G=175;break b}}}if(Q){o=c[va>>2]|0;l=(c[ra>>2]|0)+2|0;r=1<>1|r;j=c[xa>>2]|0;i=c[wa>>2]|0;if(j>>>0>3){f=i;k=l;m=0;while(1){if(!i){i=0;l=0}else{f=0;do{G=(c[qa>>2]|0)+f|0;iP(a,k+(G<<1)|0,o+(f<<2)|0,S,r);j=(c[wa>>2]|0)+f|0;G=(c[qa>>2]|0)+G|0;iP(a,k+(G<<1)|0,o+(j<<2)|0,S,r);j=(c[wa>>2]|0)+j|0;G=(c[qa>>2]|0)+G|0;iP(a,k+(G<<1)|0,o+(j<<2)|0,S,r);iP(a,k+((c[qa>>2]|0)+G<<1)|0,o+((c[wa>>2]|0)+j<<2)|0,S,r);f=f+1|0;j=c[wa>>2]|0}while(f>>>0>>0);i=j<<2;f=j;l=j;j=c[xa>>2]|0}o=o+(i<<2)|0;k=k+(c[qa>>2]<<2<<1)|0;m=m+4|0;if(m>>>0<(j&-4)>>>0)i=l;else{q=o;p=k;break}}}else{f=i;q=o;p=l;m=0}if(!f){G=175;break}else k=0;while(1){if(m>>>0>>0){i=q+(k<<2)|0;o=p+(k<<1)|0;l=m;while(1){o=o+(c[qa>>2]<<1)|0;iP(a,o,i,S,r);f=c[wa>>2]|0;l=l+1|0;j=c[xa>>2]|0;if(l>>>0>=j>>>0)break;else i=i+(f<<2)|0}}k=k+1|0;if(k>>>0>=f>>>0){G=175;break b}}}x=1<>1|x;j=c[xa>>2]|0;if(!j){G=175;break}y=0-x|0;f=c[wa>>2]|0;i=f;w=0;do{v=w;w=w+4|0;if(!f)f=0;else{t=(v|0)==-4;u=v|3;j=i;s=0;do{if(!t){r=v;do{j=c[xa>>2]|0;if(r>>>0>=j>>>0)break;if((r|0)==(u|0))j=1;else j=(r|0)==(j+-1|0);p=r;r=r+1|0;o=(da(c[qa>>2]|0,r)|0)+s|0;l=o+1|0;k=c[ra>>2]|0;m=k+(l<<1)|0;p=(da(c[wa>>2]|0,p)|0)+s|0;p=(c[va>>2]|0)+(p<<2)|0;q=c[a>>2]|0;f=b[m>>1]|0;j=j?f&-1095:f;f=j&255;if((f|0)!=0&(j&20480|0)==0){i=q+100|0;c[i>>2]=q+(d[256008+(f|R)>>0]<<2)+24;if(Wz(q)|0){F=j>>>4&255;c[i>>2]=q+(d[255240+F>>0]<<2)+24;G=Wz(q)|0;F=d[254984+F>>0]|0;D=F^G;c[p>>2]=(G|0)!=(F|0)?y:x;F=c[qa>>2]|0;G=k+(l-F<<1)|0;E=k+(F+l<<1)|0;C=k+(l+~F<<1)|0;b[C>>1]=e[C>>1]|2;b[G>>1]=b[G>>1]|b[254968+(D<<1)>>1];G=o+2|0;C=k+(G-F<<1)|0;b[C>>1]=e[C>>1]|4;C=k+(o<<1)|0;b[C>>1]=b[C>>1]|b[254968+(D+2<<1)>>1];b[m>>1]=e[m>>1]|4096;C=k+(G<<1)|0;b[C>>1]=b[C>>1]|b[254968+(D+4<<1)>>1];C=k+(F+o<<1)|0;b[C>>1]=e[C>>1]|1;b[E>>1]=b[E>>1]|b[254968+(D+6<<1)>>1];G=k+(F+G<<1)|0;b[G>>1]=e[G>>1]|8}b[m>>1]=e[m>>1]|16384}}while(r>>>0>>0);j=c[wa>>2]|0}s=s+1|0}while(s>>>0>>0);i=j;f=j;j=c[xa>>2]|0}}while(w>>>0>>0);G=175}else if((h|0)==1){j=n+1|0;if(K){q=1<>1;p=(n|0)>-1?0-q|0:-1;j=c[xa>>2]|0;if(!j)break;f=c[wa>>2]|0;o=f;m=0;while(1){k=m;m=m+4|0;do if(!f){i=o;f=0}else{if((k|0)==-4){i=o;f=o;break}else l=0;do{i=l;l=l+1|0;o=k;do{if(o>>>0>=(c[xa>>2]|0)>>>0)break;f=o;o=o+1|0;j=(da(c[qa>>2]|0,o)|0)+l|0;j=(c[ra>>2]|0)+(j<<1)|0;f=(da(c[wa>>2]|0,f)|0)+i|0;f=(c[va>>2]|0)+(f<<2)|0;if((b[j>>1]&20480)==4096){F=(wA(c[ta>>2]|0)|0)!=0;F=F?q:p;G=c[f>>2]|0;c[f>>2]=((G|0)<0?0-F|0:F)+G;b[j>>1]=e[j>>1]|8192}}while(o>>>0>>0);j=c[wa>>2]|0}while(l>>>0>>0);i=j;f=j;j=c[xa>>2]|0}while(0);if(m>>>0>=j>>>0){G=175;break b}else o=i}}if(!Q){u=1<>1;t=(n|0)>-1?0-u|0:-1;j=c[xa>>2]|0;if(!j){G=175;break}f=c[wa>>2]|0;i=f;s=0;while(1){r=s;s=s+4|0;if(!f)f=0;else{p=(r|0)==-4;q=r|3;j=i;m=0;do{k=m;m=m+1|0;if(!p){l=r;do{j=c[xa>>2]|0;if(l>>>0>=j>>>0)break;if((l|0)==(q|0))j=1;else j=(l|0)==(j+-1|0);i=l;l=l+1|0;f=(da(c[qa>>2]|0,l)|0)+m|0;f=(c[ra>>2]|0)+(f<<1)|0;i=(da(c[wa>>2]|0,i)|0)+k|0;i=(c[va>>2]|0)+(i<<2)|0;o=c[a>>2]|0;G=b[f>>1]|0;j=j?G&-1095:G;if((j&20480|0)==4096){c[o+100>>2]=o+(((j&8192|0)!=0?16:(j&255|0)!=0?15:14)<<2)+24;F=(Wz(o)|0)!=0;F=F?u:t;G=c[i>>2]|0;c[i>>2]=((G|0)<0?0-F|0:F)+G;b[f>>1]=e[f>>1]|8192}}while(l>>>0>>0);j=c[wa>>2]|0}}while(m>>>0>>0);i=j;f=j;j=c[xa>>2]|0}if(s>>>0>=j>>>0){G=175;break b}}}o=c[va>>2]|0;l=(c[ra>>2]|0)+2|0;w=1<>1;v=(n|0)>-1?0-w|0:-1;f=c[xa>>2]|0;i=c[wa>>2]|0;if(f>>>0>3){j=i;t=l;u=0;while(1){if(!i){l=j;i=0}else{s=0;do{f=o+(s<<2)|0;k=c[qa>>2]|0;p=k+s|0;i=t+(p<<1)|0;m=c[a>>2]|0;l=b[i>>1]|0;if((l&20480|0)==4096){c[m+100>>2]=m+(((l&8192|0)!=0?16:(l&255|0)!=0?15:14)<<2)+24;k=(Wz(m)|0)!=0;k=k?w:v;j=c[f>>2]|0;c[f>>2]=((j|0)<0?0-k|0:k)+j;b[i>>1]=e[i>>1]|8192;j=c[wa>>2]|0;f=c[qa>>2]|0;k=c[a>>2]|0}else{f=k;k=m}q=j+s|0;m=o+(q<<2)|0;r=f+p|0;i=t+(r<<1)|0;l=b[i>>1]|0;if((l&20480|0)==4096){c[k+100>>2]=k+(((l&8192|0)!=0?16:(l&255|0)!=0?15:14)<<2)+24;f=(Wz(k)|0)!=0;f=f?w:v;j=c[m>>2]|0;c[m>>2]=((j|0)<0?0-f|0:f)+j;b[i>>1]=e[i>>1]|8192;j=c[wa>>2]|0;f=c[qa>>2]|0;k=c[a>>2]|0}p=j+q|0;m=o+(p<<2)|0;q=f+r|0;i=t+(q<<1)|0;l=b[i>>1]|0;if((l&20480|0)==4096){c[k+100>>2]=k+(((l&8192|0)!=0?16:(l&255|0)!=0?15:14)<<2)+24;f=(Wz(k)|0)!=0;f=f?w:v;j=c[m>>2]|0;c[m>>2]=((j|0)<0?0-f|0:f)+j;b[i>>1]=e[i>>1]|8192;j=c[wa>>2]|0;f=c[qa>>2]|0;k=c[a>>2]|0}l=o+(j+p<<2)|0;f=t+(f+q<<1)|0;i=b[f>>1]|0;if((i&20480|0)==4096){c[k+100>>2]=k+(((i&8192|0)!=0?16:(i&255|0)!=0?15:14)<<2)+24;G=(Wz(k)|0)!=0;G=G?w:v;j=c[l>>2]|0;c[l>>2]=((j|0)<0?0-G|0:G)+j;b[f>>1]=e[f>>1]|8192;j=c[wa>>2]|0}s=s+1|0}while(s>>>0>>0);l=j;i=j;f=c[xa>>2]|0}o=o+(i<<2<<2)|0;k=t+(c[qa>>2]<<2<<1)|0;m=u+4|0;if(m>>>0<(f&-4)>>>0){j=l;t=k;u=m}else{j=l;s=k;r=m;break}}}else{j=i;s=l;r=0}if(!j){G=175;break}else q=0;do{if(r>>>0>>0){l=j;k=o+(q<<2)|0;m=s+(q<<1)|0;p=r;while(1){m=m+(c[qa>>2]<<1)|0;i=c[a>>2]|0;j=b[m>>1]|0;if((j&20480|0)==4096){c[i+100>>2]=i+(((j&8192|0)!=0?16:(j&255|0)!=0?15:14)<<2)+24;f=(Wz(i)|0)!=0;f=f?w:v;j=c[k>>2]|0;c[k>>2]=((j|0)<0?0-f|0:f)+j;b[m>>1]=e[m>>1]|8192;j=c[wa>>2]|0;f=c[xa>>2]|0}else j=l;p=p+1|0;if(p>>>0>=f>>>0)break;else{l=j;k=k+(j<<2)|0}}}q=q+1|0}while(q>>>0>>0);G=175}else if((h|0)==2){E=c[a>>2]|0;F=1<>1|F;do if(Q){i=c[va>>2]|0;o=(c[ra>>2]|0)+2|0;f=c[xa>>2]|0;if(f>>>0>3){x=E+92|0;y=E+100|0;z=E+96|0;A=0-F|0;l=c[wa>>2]|0;j=l;k=i;m=0;while(1){if(!l){l=0;m=m+4|0;i=0}else{r=m|1;s=r+1|0;t=m|3;u=r+3|0;w=m+4|0;v=0;do{j=k+(v<<2)|0;f=c[qa>>2]|0;l=v;v=v+1|0;D=(da(f,r)|0)+v|0;i=c[ra>>2]|0;d:do if(!(b[i+(D<<1)>>1]&20735)){if(b[i+((da(f,s)|0)+v<<1)>>1]&20735){G=166;break}if(b[i+((da(f,t)|0)+v<<1)>>1]&20735){G=166;break}if(b[i+((da(f,u)|0)+v<<1)>>1]&20735){G=166;break}c[y>>2]=x;if(!(Wz(E)|0))break;c[y>>2]=z;j=(Wz(E)|0)<<1;j=j|(Wz(E)|0);p=j+m|0;if(p>>>0>=w>>>0)break;q=k+((da(c[wa>>2]|0,j)|0)+l<<2)|0;f=o+((da(c[qa>>2]|0,j)|0)+l<<1)|0;l=p;while(1){if(l>>>0>=(c[xa>>2]|0)>>>0)break d;j=c[qa>>2]|0;i=f;f=f+(j<<1)|0;if((l|0)==(p|0)){D=c[a>>2]|0;C=(e[f>>1]|0)>>>4&255;c[D+100>>2]=D+(d[255240+C>>0]<<2)+24;D=Wz(D)|0;C=d[254984+C>>0]|0;Da=C^D;c[q>>2]=(D|0)!=(C|0)?A:F;C=c[qa>>2]|0;D=i+(j-C<<1)|0;B=i+(C+j<<1)|0;Ea=i+(j+~C<<1)|0;b[Ea>>1]=e[Ea>>1]|2;b[D>>1]=b[D>>1]|b[254968+(Da<<1)>>1];D=j+1|0;Ea=i+(D-C<<1)|0;b[Ea>>1]=e[Ea>>1]|4;j=j+-1|0;Ea=i+(j<<1)|0;b[Ea>>1]=b[Ea>>1]|b[254968+(Da+2<<1)>>1];b[f>>1]=e[f>>1]|4096;Ea=i+(D<<1)|0;b[Ea>>1]=b[Ea>>1]|b[254968+(Da+4<<1)>>1];j=i+(C+j<<1)|0;b[j>>1]=e[j>>1]|1;b[B>>1]=b[B>>1]|b[254968+(Da+6<<1)>>1];D=i+(C+D<<1)|0;b[D>>1]=e[D>>1]|8;b[f>>1]=e[f>>1]&49151}else jP(a,f,q,S,F);l=l+1|0;if(l>>>0>=w>>>0)break;else q=q+(c[wa>>2]<<2)|0}}else G=166;while(0);if((G|0)==166){G=0;Da=f+l|0;jP(a,o+(Da<<1)|0,j,S,F);Ea=(c[wa>>2]|0)+l|0;Da=(c[qa>>2]|0)+Da|0;jP(a,o+(Da<<1)|0,k+(Ea<<2)|0,S,F);Ea=(c[wa>>2]|0)+Ea|0;Da=(c[qa>>2]|0)+Da|0;jP(a,o+(Da<<1)|0,k+(Ea<<2)|0,S,F);jP(a,o+((c[qa>>2]|0)+Da<<1)|0,k+((c[wa>>2]|0)+Ea<<2)|0,S,F)}i=c[wa>>2]|0}while(v>>>0>>0);l=i<<2;m=w;f=c[xa>>2]|0;j=i}k=k+(l<<2)|0;o=o+(c[qa>>2]<<2<<1)|0;if(m>>>0<(f&-4)>>>0)l=i;else{q=k;p=o;break}}}else{j=c[wa>>2]|0;q=i;p=o;m=0}if(!j)break;else k=0;do{if(m>>>0>>0){i=q+(k<<2)|0;o=p+(k<<1)|0;l=m;while(1){o=o+(c[qa>>2]<<1)|0;jP(a,o,i,S,F);j=c[wa>>2]|0;l=l+1|0;f=c[xa>>2]|0;if(l>>>0>=f>>>0)break;else i=i+(j<<2)|0}}k=k+1|0}while(k>>>0>>0)}else{j=c[xa>>2]|0;if(!j)break;A=E+92|0;B=E+100|0;C=E+96|0;D=0-F|0;f=c[wa>>2]|0;i=0;do if(!f){i=i+4|0;f=0}else{v=i|3;w=i|1;x=w+1|0;y=w+3|0;z=i+4|0;o=0;while(1){do if(v>>>0>>0){j=c[qa>>2]|0;f=o+1|0;Ea=(da(j,w)|0)+f|0;l=c[ra>>2]|0;if(b[l+(Ea<<1)>>1]&20735){u=0;j=0;G=133;break}if(b[l+((da(j,x)|0)+f<<1)>>1]&20735){u=0;j=0;G=133;break}if(b[l+((da(j,v)|0)+f<<1)>>1]&20735){u=0;j=0;G=133;break}if(b[l+((da(j,y)|0)+f<<1)>>1]&20665){u=0;j=0;G=133;break}c[B>>2]=A;if(!(Wz(E)|0)){o=f;break}c[B>>2]=C;j=(Wz(E)|0)<<1;u=1;j=j|(Wz(E)|0);G=133}else{u=0;j=0;G=133}while(0);if((G|0)==133){G=0;s=j+i|0;e:do if(s>>>0>>0){t=s;do{j=c[xa>>2]|0;if(t>>>0>=j>>>0)break e;if((t|0)==(v|0))j=1;else j=(t|0)==(j+-1|0);Ea=t;t=t+1|0;l=(da(c[qa>>2]|0,t)|0)+o|0;k=l+1|0;m=c[ra>>2]|0;p=m+(k<<1)|0;q=(da(c[wa>>2]|0,Ea)|0)+o|0;q=(c[va>>2]|0)+(q<<2)|0;r=c[a>>2]|0;f=b[p>>1]|0;f=j?f&-1095:f;do if(!(u&(Ea|0)==(s|0))){if(f&20480)break;j=r+100|0;c[j>>2]=r+(d[256008+(f&255|R)>>0]<<2)+24;if(Wz(r)|0)G=141}else{j=r+100|0;G=141}while(0);if((G|0)==141){G=0;Da=f>>>4&255;c[j>>2]=r+(d[255240+Da>>0]<<2)+24;Ea=Wz(r)|0;Da=d[254984+Da>>0]|0;f=Da^Ea;c[q>>2]=(Ea|0)!=(Da|0)?D:F;Da=c[qa>>2]|0;Ea=m+(k-Da<<1)|0;r=m+(Da+k<<1)|0;q=m+(k+~Da<<1)|0;b[q>>1]=e[q>>1]|2;b[Ea>>1]=b[Ea>>1]|b[254968+(f<<1)>>1];Ea=l+2|0;q=m+(Ea-Da<<1)|0;b[q>>1]=e[q>>1]|4;q=m+(l<<1)|0;b[q>>1]=b[q>>1]|b[254968+(f+2<<1)>>1];b[p>>1]=e[p>>1]|4096;q=m+(Ea<<1)|0;b[q>>1]=b[q>>1]|b[254968+(f+4<<1)>>1];q=m+(Da+l<<1)|0;b[q>>1]=e[q>>1]|1;b[r>>1]=b[r>>1]|b[254968+(f+6<<1)>>1];Ea=m+(Da+Ea<<1)|0;b[Ea>>1]=e[Ea>>1]|8}b[p>>1]=e[p>>1]&49151}while(t>>>0>>0)}while(0);o=o+1|0}f=c[wa>>2]|0;j=c[xa>>2]|0;if(o>>>0>=f>>>0){i=z;break}}}while(i>>>0>>0)}while(0);if(M){G=175;break}c[E+100>>2]=E+96;Wz(E)|0;Wz(E)|0;Wz(E)|0;Wz(E)|0;G=175}else G=175;while(0);do if((G|0)==175){G=0;if(J)break;Qz(U);Rz(U,18,0,46);Rz(U,17,0,3);Rz(U,0,0,4)}while(0);h=h+1|0;Ea=(h|0)==3;n=(Ea<<31>>31)+n|0;h=Ea?0:h;H=H+1|0}while(H>>>0<(c[I>>2]|0)>>>0)}j=c[X>>2]|0}L=L+1|0}while(L>>>0>>0)}h=(c[V>>2]|0)-(c[fa>>2]|0)|0;f=(c[Y>>2]|0)-(c[ga>>2]|0)|0;i=c[ea>>2]|0;if(i&1){Ea=c[Aa>>2]|0;h=(c[Ea+(la*136|0)+8>>2]|0)+h-(c[Ea+(la*136|0)>>2]|0)|0}if(i&2){Ea=c[Aa>>2]|0;f=(c[Ea+(la*136|0)+12>>2]|0)+f-(c[Ea+(la*136|0)+4>>2]|0)|0}p=c[va>>2]|0;q=c[wa>>2]|0;r=c[xa>>2]|0;i=c[Ba>>2]|0;if((i|0)!=0?(ua=1<>2]|0;m=(l|0)>-1?l:0-l|0;if((m|0)>=(ua|0)){Ea=m>>c[Ba>>2];c[k>>2]=(l|0)<0?0-Ea|0:Ea}n=n+1|0}while((n|0)!=(q|0))}o=o+1|0}while((o|0)!=(r|0))}l=(da(f,ya)|0)+h|0;m=c[pa>>2]|0;h=(r|0)==0;if((c[sa>>2]|0)==1){if(!h){h=(q|0)==0;k=0;do{if(!h){j=da(k,q)|0;f=(da(k,ya)|0)+l|0;i=0;do{c[m+(f+i<<2)>>2]=(c[p+(i+j<<2)>>2]|0)/2|0;i=i+1|0}while((i|0)!=(q|0))}k=k+1|0}while((k|0)!=(r|0))}}else if(!h){o=(q|0)==0;h=p;n=0;k=m+(l<<2)|0;while(1){if(!o){f=h;i=0;j=k;while(1){g[j>>2]=+(c[f>>2]|0)*+g[ha>>2];i=i+1|0;if((i|0)==(q|0))break;else{f=f+4|0;j=j+4|0}}h=h+(q<<2)|0}n=n+1|0;if((n|0)==(r|0))break;else k=k+(ya<<2)|0}}_=_+1|0}while(_>>>0<(da(c[aa>>2]|0,c[$>>2]|0)|0)>>>0);h=c[ka>>2]|0;i=c[ja>>2]|0}ba=ba+1|0}while(ba>>>0<(da(h,i)|0)>>>0);f=c[na>>2]|0}ia=ia+1|0}while(ia>>>0>>0);h=c[za>>2]|0}oa=oa+1|0;if(oa>>>0>=h>>>0){h=1;G=213;break}}if((G|0)==213)return h|0;return 0}function BA(f,i,j,k){f=f|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0,Q=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0.0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0;Ta=i+32|0;h[Ta>>3]=0.0;Ua=i+16|0;l=c[Ua>>2]|0;if(!l){Va=1;return Va|0}Sa=i+20|0;Na=j+5576|0;Oa=f+8|0;Pa=f+16|0;Qa=f+20|0;Ra=(k|0)==0;La=f+32|0;Ma=f+12|0;i=l;Ka=0;a:while(1){j=c[Sa>>2]|0;l=c[Na>>2]|0;Ia=(c[j+(Ka*44|0)+8>>2]|0)-(c[j+(Ka*44|0)>>2]|0)|0;Ja=j+(Ka*44|0)+16|0;m=c[Ja>>2]|0;if(m){Ha=j+(Ka*44|0)+24|0;Fa=j+(Ka*44|0)+32|0;Ga=l+(Ka*1080|0)+20|0;Da=l+(Ka*1080|0)+16|0;Ea=k+(Ka<<3)|0;i=m;Ca=0;do{Aa=c[Ha>>2]|0;Ba=Aa+(Ca*136|0)+24|0;m=c[Ba>>2]|0;if(m){wa=Aa+(Ca*136|0)+16|0;xa=Aa+(Ca*136|0)+20|0;ya=~Ca;za=Ca+-1|0;i=c[xa>>2]|0;j=c[wa>>2]|0;va=0;do{ua=Aa+(Ca*136|0)+(va*36|0)+60|0;if(da(i,j)|0){oa=67108864/(~~+R(+(+g[ua>>2]*8192.0))|0)|0;pa=Aa+(Ca*136|0)+(va*36|0)+48|0;qa=Aa+(Ca*136|0)+(va*36|0)+28|0;ra=Aa+(Ca*136|0)+(va*36|0)+32|0;sa=Aa+(Ca*136|0)+(va*36|0)+44|0;ta=((oa|0)<0)<<31>>31;na=0;do{m=c[pa>>2]|0;la=m+(na*40|0)+16|0;ma=m+(na*40|0)+20|0;if(da(c[ma>>2]|0,c[la>>2]|0)|0){ja=m+(na*40|0)+24|0;ka=0;do{ia=c[ja>>2]|0;l=c[ia+(ka*48|0)+12>>2]|0;i=l-(c[qa>>2]|0)|0;n=c[ia+(ka*48|0)+16>>2]|0;m=n-(c[ra>>2]|0)|0;j=c[sa>>2]|0;if(j&1){ha=c[Ha>>2]|0;i=(c[ha+(za*136|0)+8>>2]|0)+i-(c[ha+(za*136|0)>>2]|0)|0}if(j&2){ha=c[Ha>>2]|0;m=(c[ha+(za*136|0)+12>>2]|0)+m-(c[ha+(za*136|0)+4>>2]|0)|0}if(!(xA(f,(c[ia+(ka*48|0)+20>>2]|0)-l|0,(c[ia+(ka*48|0)+24>>2]|0)-n|0)|0)){i=0;Va=169;break a}u=c[Oa>>2]|0;q=c[Pa>>2]|0;r=c[Qa>>2]|0;o=(da(m,Ia)|0)+i|0;p=c[Fa>>2]|0;i=(r|0)==0;if((c[Ga>>2]|0)==1){if(!i){i=(q|0)==0;n=0;do{if(!i){m=(da(n,Ia)|0)+o|0;j=da(n,q)|0;l=0;do{c[u+(l+j<<2)>>2]=c[p+(m+l<<2)>>2]<<6;l=l+1|0}while((l|0)!=(q|0))}n=n+1|0}while((n|0)!=(r|0))}}else if(!i){i=(q|0)==0;n=0;do{if(!i){m=(da(n,Ia)|0)+o|0;j=da(n,q)|0;l=0;do{ha=c[p+(m+l<<2)>>2]|0;ha=Ifa(ha|0,((ha|0)<0)<<31>>31|0,oa|0,ta|0)|0;ha=yfa(ha&4096|0,0,ha|0,H|0)|0;ha=Bfa(ha|0,H|0,13)|0;c[u+(l+j<<2)>>2]=ha>>5;l=l+1|0}while((l|0)!=(q|0))}n=n+1|0}while((n|0)!=(r|0))}ba=c[sa>>2]|0;ca=(c[Ja>>2]|0)+ya|0;q=c[Ga>>2]|0;ea=+g[ua>>2];ga=c[Da>>2]|0;ha=c[f>>2]|0;m=da(c[Qa>>2]|0,c[Pa>>2]|0)|0;do if(!m)i=0;else{j=0;i=0;do{fa=c[u+(j<<2)>>2]|0;fa=(fa|0)>-1?fa:0-fa|0;i=(i|0)>(fa|0)?i:fa;j=j+1|0}while((j|0)!=(m|0));if(!i){i=0;break}if((i|0)>1)m=0;else{i=-5;break}while(1){i=i>>1;if((i|0)<=1){i=m;break}else m=m+1|0}i=i+-4|0}while(0);aa=ia+(ka*48|0)+28|0;c[aa>>2]=i;i=i+-1|0;Qz(ha);Rz(ha,18,0,46);Rz(ha,17,0,3);Rz(ha,0,0,4);fa=ia+(ka*48|0)|0;Kz(ha,c[fa>>2]|0);if((i|0)>-1){_=ia+(ka*48|0)+8|0;Z=ga&1;$=Z&255;T=(q|0)==1;U=(ga&4|0)==0;S=(Z|0)==0;Z=(Z|0)!=0;V=(ga&2|0)==0;W=(ga&8|0)==0;X=ba<<8;Y=(ga&32|0)==0;q=0;O=i;P=0.0;i=0;Q=2;while(1){N=c[_>>2]|0;j=(Q>>>0<2?(O|0)<((c[aa>>2]|0)+-4|0):0)?$:0;do if((Q|0)==2){I=c[f>>2]|0;q=O+6|0;J=1<>2]|0;if(!m)q=0;else{K=I+92|0;L=I+100|0;M=I+96|0;G=q>>>0>6;l=c[Pa>>2]|0;j=l;q=0;r=0;do if(!j){r=r+4|0;j=0}else{B=r|3;C=r|1;D=C+1|0;E=C+3|0;F=r+4|0;A=0;while(1){do if(B>>>0>>0){m=c[La>>2]|0;n=A+1|0;o=(da(m,C)|0)+n|0;j=c[Ma>>2]|0;o=(b[j+(o<<1)>>1]&20735)!=0;if(W){if(o){z=0;m=0;Va=107;break}if(b[j+((da(m,D)|0)+n<<1)>>1]&20735){z=0;m=0;Va=107;break}if(b[j+((da(m,B)|0)+n<<1)>>1]&20735){z=0;m=0;Va=107;break}if(b[j+((da(m,E)|0)+n<<1)>>1]&20735){z=0;m=0;Va=107;break}}else{if(o){z=0;m=0;Va=107;break}if(b[j+((da(m,D)|0)+n<<1)>>1]&20735){z=0;m=0;Va=107;break}if(b[j+((da(m,B)|0)+n<<1)>>1]&20735){z=0;m=0;Va=107;break}if(b[j+((da(m,E)|0)+n<<1)>>1]&20665){z=0;m=0;Va=107;break}}j=c[Oa>>2]|0;o=0;while(1){z=c[j+((da(o+r|0,l)|0)+A<<2)>>2]|0;m=o+1|0;if(((z|0)<0?0-z|0:z)&J){m=o;break}if(m>>>0<4)o=m;else break}c[L>>2]=K;Lz(I,(m|0)!=4&1);if((m|0)==4){j=n;break}c[L>>2]=M;Lz(I,m>>>1);Lz(I,m&1);z=1;Va=107}else{z=0;m=0;Va=107}while(0);if((Va|0)==107){Va=0;y=m+r|0;b:do if(y>>>0>>0){x=y;do{m=c[Qa>>2]|0;if(x>>>0>=m>>>0)break b;do if(W)m=0;else{if((x|0)==(B|0)){m=1;break}m=(x|0)==(m+-1|0)}while(0);Wa=x;x=x+1|0;n=(da(c[La>>2]|0,x)|0)+A|0;p=n+1|0;u=c[Ma>>2]|0;w=u+(p<<1)|0;j=(da(c[Pa>>2]|0,Wa)|0)+A|0;j=(c[Oa>>2]|0)+(j<<2)|0;v=c[f>>2]|0;l=b[w>>1]|0;o=m?l&-1095:l;do if(!(z&(Wa|0)==(y|0))){if(l&20480)break;c[v+100>>2]=v+(d[256008+(o&255|X)>>0]<<2)+24;Wa=c[j>>2]|0;Wa=(((Wa|0)<0?0-Wa|0:Wa)&J|0)!=0;Lz(v,Wa&1);if(Wa)Va=115}else Va=115;while(0);if((Va|0)==115){Va=0;j=c[j>>2]|0;m=(j|0)<0?0-j|0:j;if(G)m=255496+((m>>>O&127)<<1)|0;else m=255752+((m&127)<<1)|0;q=(b[m>>1]|0)+q|0;Wa=o>>>4&255;c[v+100>>2]=v+(d[255240+Wa>>0]<<2)+24;l=j>>>31;Lz(v,d[254984+Wa>>0]^l);v=c[La>>2]|0;Wa=u+(p-v<<1)|0;o=u+(v+p<<1)|0;p=u+(p+~v<<1)|0;b[p>>1]=e[p>>1]|2;b[Wa>>1]=b[Wa>>1]|b[254968+(l<<1)>>1];Wa=n+2|0;p=u+(Wa-v<<1)|0;b[p>>1]=e[p>>1]|4;p=u+(n<<1)|0;b[p>>1]=b[p>>1]|b[254968+((l|2)<<1)>>1];b[w>>1]=e[w>>1]|4096;p=u+(Wa<<1)|0;b[p>>1]=b[p>>1]|b[254968+((l|4)<<1)>>1];p=u+(v+n<<1)|0;b[p>>1]=e[p>>1]|1;b[o>>1]=b[o>>1]|b[254968+((l|6)<<1)>>1];Wa=u+(v+Wa<<1)|0;b[Wa>>1]=e[Wa>>1]|8}b[w>>1]=e[w>>1]&49151}while(x>>>0>>0)}while(0);j=A+1|0}o=c[Pa>>2]|0;m=c[Qa>>2]|0;if(j>>>0>>0){l=o;A=j}else{r=F;l=o;j=o;break}}}while(r>>>0>>0)}if(Y){j=q;break}Uz(ha);j=q}else if(!Q){q=O+6|0;G=1<>2]|0;if(!m){j=0;break}F=j<<24>>24==1;E=q>>>0>6;l=c[Pa>>2]|0;q=l;j=0;D=0;do{C=D;D=D+4|0;if(!q)q=0;else{A=(C|0)==-4;B=C|3;q=l;z=0;do{if(!A){y=C;do{q=c[Qa>>2]|0;if(y>>>0>=q>>>0)break;do if(W)q=0;else{if((y|0)==(B|0)){q=1;break}q=(y|0)==(q+-1|0)}while(0);r=y;y=y+1|0;p=(da(c[La>>2]|0,y)|0)+z|0;u=p+1|0;v=c[Ma>>2]|0;x=v+(u<<1)|0;r=(da(c[Pa>>2]|0,r)|0)+z|0;r=(c[Oa>>2]|0)+(r<<2)|0;w=c[f>>2]|0;o=b[x>>1]|0;o=q?o&-1095:o;q=o&255;if((q|0)!=0&(o&20480|0)==0){m=c[r>>2]|0;m=(((m|0)<0?0-m|0:m)&G|0)!=0;l=m&1;n=w+100|0;c[n>>2]=w+(d[256008+(q|X)>>0]<<2)+24;if(F)Oz(w,l);else Lz(w,l);if(m){q=c[r>>2]|0;m=q>>>31;q=(q|0)<0?0-q|0:q;if(E)q=255496+((q>>>O&127)<<1)|0;else q=255752+((q&127)<<1)|0;j=(b[q>>1]|0)+j|0;q=o>>>4&255;c[n>>2]=w+(d[255240+q>>0]<<2)+24;if(F)Oz(w,m);else Lz(w,d[254984+q>>0]^m);M=c[La>>2]|0;Wa=v+(u-M<<1)|0;K=v+(M+u<<1)|0;J=v+(u+~M<<1)|0;b[J>>1]=e[J>>1]|2;b[Wa>>1]=b[Wa>>1]|b[254968+(m<<1)>>1];Wa=p+2|0;J=v+(Wa-M<<1)|0;b[J>>1]=e[J>>1]|4;J=v+(p<<1)|0;b[J>>1]=b[J>>1]|b[254968+((m|2)<<1)>>1];b[x>>1]=e[x>>1]|4096;J=v+(Wa<<1)|0;b[J>>1]=b[J>>1]|b[254968+((m|4)<<1)>>1];J=v+(M+p<<1)|0;b[J>>1]=e[J>>1]|1;b[K>>1]=b[K>>1]|b[254968+((m|6)<<1)>>1];Wa=v+(M+Wa<<1)|0;b[Wa>>1]=e[Wa>>1]|8}b[x>>1]=e[x>>1]|16384}}while(y>>>0>>0);q=c[Pa>>2]|0}z=z+1|0}while(z>>>0>>0);m=c[Qa>>2]|0;l=q}}while(D>>>0>>0)}else if((Q|0)==1){q=O+6|0;B=1<>2]|0;if(!m){j=0;break}A=q>>>0>6;z=j<<24>>24==1;l=c[Pa>>2]|0;q=l;j=0;y=0;do{x=y;y=y+4|0;if(!q)q=0;else{v=(x|0)==-4;w=x|3;q=l;u=0;do{p=u;u=u+1|0;if(!v){n=x;do{q=c[Qa>>2]|0;if(n>>>0>=q>>>0)break;do if(W)q=0;else{if((n|0)==(w|0)){q=1;break}q=(n|0)==(q+-1|0)}while(0);m=n;n=n+1|0;r=(da(c[La>>2]|0,n)|0)+u|0;r=(c[Ma>>2]|0)+(r<<1)|0;o=c[f>>2]|0;l=b[r>>1]|0;l=q?l&-1095:l;if((l&20480|0)==4096){m=c[(c[Oa>>2]|0)+((da(c[Pa>>2]|0,m)|0)+p<<2)>>2]|0;m=(m|0)<0?0-m|0:m;if(A)q=257032+((m>>>O&127)<<1)|0;else q=257288+((m&127)<<1)|0;j=(b[q>>1]|0)+j|0;q=(m&B|0)!=0&1;c[o+100>>2]=o+(((l&8192|0)!=0?16:(l&255|0)!=0?15:14)<<2)+24;if(z)Oz(o,q);else Lz(o,q);b[r>>1]=e[r>>1]|8192}}while(n>>>0>>0);q=c[Pa>>2]|0}}while(u>>>0>>0);m=c[Qa>>2]|0;l=q}}while(y>>>0>>0)}else j=q;while(0);if(Ra)s=1.0;else s=+h[Ea>>3];if(T)t=+ly(ca,ba);else t=+oy(ca,ba);t=+(1<>3]=+h[Ta>>3]+t;do if(U)Va=133;else{if((Q|0)==2&(O|0)<1){Va=133;break}Mz(ha);m=N+(i*24|0)+20|0;q=a[m>>0]|1;a[m>>0]=q;m=1}while(0);do if((Va|0)==133){q=(c[aa>>2]|0)+-4|0;if((O|0)<(q|0)&(Q|0)!=0)if(S)Va=137;else Va=136;else if((Q|0)!=2|(O|0)!=(q|0)|S)Va=137;else Va=136;if((Va|0)==136){Va=0;Mz(ha);m=N+(i*24|0)+20|0;q=a[m>>0]|1;a[m>>0]=q;m=1;break}else if((Va|0)==137){Va=0;m=N+(i*24|0)+20|0;q=a[m>>0]&-2;a[m>>0]=q;m=3;break}}while(0);M=Q+1|0;Wa=(M|0)==3;Q=Wa?0:M;O=(Wa<<31>>31)+O|0;do if((q&1)!=0&(O|0)>0)if((Q>>>0<2?(O|0)<((c[aa>>2]|0)+-4|0):0)&Z){Nz(ha);break}else{Sz(ha);break}while(0);h[N+(i*24|0)+8>>3]=P;c[N+(i*24|0)>>2]=(Jz(ha)|0)+m;if(!V)Pz(ha);i=i+1|0;if((O|0)<=-1)break;else q=j}}else i=0;do if(!(ga&16)){if(ga&1)break;Mz(ha)}else Tz(ha);while(0);p=ia+(ka*48|0)+44|0;c[p>>2]=i;if(i){l=ia+(ka*48|0)+8|0;o=0;do{n=c[l>>2]|0;m=n+(o*24|0)|0;Wa=c[m>>2]|0;if(Wa>>>0>(Jz(ha)|0)>>>0){j=Jz(ha)|0;c[m>>2]=j}else j=c[m>>2]|0;do if(j>>>0>1){i=j+-1|0;if((a[(c[fa>>2]|0)+i>>0]|0)!=-1){i=j;break}c[m>>2]=i}else i=j;while(0);if(!o)m=0;else m=c[(c[l>>2]|0)+((o+-1|0)*24|0)>>2]|0;c[n+(o*24|0)+16>>2]=i-m;o=o+1|0}while(o>>>0<(c[p>>2]|0)>>>0)}ka=ka+1|0}while(ka>>>0<(da(c[ma>>2]|0,c[la>>2]|0)|0)>>>0);i=c[xa>>2]|0;j=c[wa>>2]|0}na=na+1|0}while(na>>>0<(da(i,j)|0)>>>0);m=c[Ba>>2]|0}va=va+1|0}while(va>>>0>>0);i=c[Ja>>2]|0}Ca=Ca+1|0}while(Ca>>>0>>0);i=c[Ua>>2]|0}Ka=Ka+1|0;if(Ka>>>0>=i>>>0){i=1;Va=169;break}}if((Va|0)==169)return i|0;return 0}function CA(a,b,e,f,g,h,j,k,l,m,n,o){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+16|0;F=G;c[F>>2]=0;p=c[a>>2]|0;B=c[a+4>>2]|0;a=c[B+68>>2]|0;D=a+(b*5632|0)|0;s=(c[B+72>>2]|0)==3?2:1;q=B+76|0;if(!(c[q>>2]|0))r=1;else r=c[p+16>>2]|0;E=(c[a+(b*5632|0)+420>>2]|0)+1|0;C=pA(p,B,b,o)|0;if(!C){b=0;i=G;return b|0}c[h>>2]=0;a:do if(!o){if(r){a=0;b:while(1){l=0;n=C;p=0;while(1){qA(C,B,b,p,a,m,0);o=n+36|0;c:while(1){do if(!(sA(n)|0))break c;while((c[o>>2]|0)>>>0>=f>>>0);c[F>>2]=0;if(!(kP(b,e,D,n,g,F,j,k)|0)){a=12;break b}A=c[F>>2]|0;c[h>>2]=(c[h>>2]|0)+A;j=j-A|0;l=A+l|0;g=g+A|0}A=c[q>>2]|0;if((A|0)!=0&l>>>0>A>>>0){a=15;break b}p=p+1|0;if(p>>>0>>0)n=n+232|0;else break}a=a+1|0;if(a>>>0>=r>>>0)break a}if((a|0)==12){oA(C,E);b=0;i=G;return b|0}else if((a|0)==15){oA(C,E);b=0;i=G;return b|0}}}else{qA(C,B,b,n,l,m,o);y=C+(n*232|0)|0;m=C+(n*232|0)+36|0;t=(k|0)==0;u=e+840|0;v=k+12|0;w=k+8|0;x=k+88|0;s=B+89|0;r=a+(b*5632|0)+5628|0;while(1){do if(!(sA(y)|0))break a;while((c[m>>2]|0)>>>0>=f>>>0);c[F>>2]=0;if(!(kP(b,e,D,y,g,F,j,k)|0))break;q=c[F>>2]|0;g=g+q|0;j=j-q|0;c[h>>2]=(c[h>>2]|0)+q;if(!t){if(!(c[v>>2]|0))a=c[w>>2]|0;else{a=c[x>>2]|0;l=c[w>>2]|0;n=c[a+(b*592|0)+548>>2]|0;o=n+(l<<5)|0;if(!l){a=(c[a+(b*592|0)+12>>2]|0)+1|0;p=((a|0)<0)<<31>>31;c[o>>2]=a;c[o+4>>2]=p;o=a;a=0}else{if((((d[r>>0]|0)>>>1|(d[s>>0]|0)>>>3)&1)!=0?(A=o,z=c[A>>2]|0,A=c[A+4>>2]|0,!((z|0)==0&(A|0)==0)):0){a=z;p=A}else{a=n+(l+-1<<5)+16|0;a=yfa(c[a>>2]|0,c[a+4>>2]|0,1,0)|0;p=H}c[o>>2]=a;c[o+4>>2]=p;o=a;a=l}p=yfa(o|0,p|0,-1,-1)|0;o=H;q=yfa(p|0,o|0,q|0,0)|0;B=n+(l<<5)+16|0;c[B>>2]=q;c[B+4>>2]=H;B=n+(l<<5)+8|0;n=B;n=yfa(p|0,o|0,c[n>>2]|0,c[n+4>>2]|0)|0;c[B>>2]=n;c[B+4>>2]=H}c[w>>2]=a+1}c[u>>2]=(c[u>>2]|0)+1}oA(C,E);b=0;i=G;return b|0}while(0);oA(C,E);b=1;i=G;return b|0}function DA(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;_=i;i=i+48|0;X=_;T=_+40|0;R=_+28|0;S=_+32|0;Q=_+36|0;j=c[a>>2]|0;M=a+4|0;Z=c[M>>2]|0;h=c[Z+68>>2]|0;O=h+(b*5632|0)|0;P=h+(b*5632|0)+420|0;Y=(c[P>>2]|0)+1|0;Z=nA(j,Z,b)|0;if(!Z){Z=0;i=_;return Z|0}N=j+16|0;L=h+(b*5632|0)+12|0;K=d+20|0;I=j+24|0;a=e;G=Z;H=0;a:while(1){b=c[N>>2]<<2;h=qea(b)|0;if(!h){$=4;break}sfa(h|0,1,b|0)|0;if(!(sA(G)|0))b=a;else{J=G+24|0;F=G+28|0;D=G+36|0;E=G+32|0;C=a;while(1){if((c[L>>2]|0)>>>0>(c[D>>2]|0)>>>0){a=c[J>>2]|0;b=c[K>>2]|0;if((c[F>>2]|0)>>>0<(c[b+(a*44|0)+20>>2]|0)>>>0){c[h+(a<<2)>>2]=0;B=c[M>>2]|0;c[R>>2]=0;if(!(lP(B,b,O,G,T,C,R,g)|0)){$=40;break a}a=c[R>>2]|0;if(c[T>>2]|0){z=C+a|0;c[R>>2]=0;j=c[F>>2]|0;d=c[(c[K>>2]|0)+((c[J>>2]|0)*44|0)+24>>2]|0;x=d+(j*136|0)+24|0;b=c[x>>2]|0;if(!b)b=z;else{y=C+g|0;l=b;B=0;w=d+(j*136|0)+28|0;b=z;while(1){j=c[E>>2]|0;d=c[w+20>>2]|0;if(((c[w+8>>2]|0)!=(c[w>>2]|0)?(c[w+12>>2]|0)!=(c[w+4>>2]|0):0)?(W=da(c[d+(j*40|0)+20>>2]|0,c[d+(j*40|0)+16>>2]|0)|0,(W|0)!=0):0){A=0;j=c[d+(j*40|0)+24>>2]|0;while(1){u=j+40|0;if(c[u>>2]|0){v=j+44|0;d=c[v>>2]|0;do if(!d){k=c[j+4>>2]|0;c[v>>2]=1;c[j+36>>2]=0}else{l=d+-1|0;k=c[j+4>>2]|0;if((c[k+(l<<5)+8>>2]|0)!=(c[k+(l<<5)+20>>2]|0)){k=k+(l<<5)|0;break}c[v>>2]=d+1;k=k+(d<<5)|0}while(0);t=j+36|0;d=j+32|0;l=k+28|0;m=c[l>>2]|0;if((b+m|0)>>>0>y>>>0){b=E;l=F;k=J;d=B;j=A;$=25;break a}q=c[t>>2]|0;s=l;r=k;while(1){k=m+q|0;l=c[j>>2]|0;if(k>>>0>(c[d>>2]|0)>>>0){l=tea(l,k)|0;if(!l){$=28;break a}k=c[t>>2]|0;m=c[s>>2]|0;c[d>>2]=m+k;c[j>>2]=l}else k=q;qfa(l+k|0,b|0,m|0)|0;l=r+8|0;k=c[l>>2]|0;if(!k){c[r>>2]=j;m=c[t>>2]|0;c[r+4>>2]=m}else m=c[t>>2]|0;n=c[s>>2]|0;o=b;b=b+n|0;s=c[r+24>>2]|0;q=s+k|0;c[l>>2]=q;k=c[u>>2]|0;c[u>>2]=k-s;c[r+12>>2]=q;q=n+m|0;c[t>>2]=q;m=r+16|0;c[m>>2]=(c[m>>2]|0)+n;if((k|0)==(s|0))break;c[v>>2]=(c[v>>2]|0)+1;s=r+60|0;m=c[s>>2]|0;if((o+(m+n)|0)>>>0>y>>>0){b=E;l=F;k=J;d=B;j=A;$=25;break a}else r=r+32|0}c[j+48>>2]=c[v>>2]}A=A+1|0;if(A>>>0>=W>>>0)break;else j=j+56|0}j=c[x>>2]|0}else j=l;B=B+1|0;if(B>>>0>=j>>>0)break;else{l=j;w=w+36|0}}}B=b-z|0;c[R>>2]=B;a=B+a|0}z=c[F>>2]|0;B=(c[I>>2]|0)+((c[J>>2]|0)*52|0)+36|0;A=c[B>>2]|0;c[B>>2]=z>>>0>A>>>0?z:A}else $=42}else{b=c[K>>2]|0;$=42}if(($|0)==42){$=0;B=c[M>>2]|0;c[Q>>2]=0;if(!(lP(B,b,O,G,S,C,Q,g)|0)){$=63;break a}v=c[Q>>2]|0;if(!(c[S>>2]|0))a=v;else{m=g-v|0;k=c[F>>2]|0;a=c[J>>2]|0;b=c[(c[K>>2]|0)+(a*44|0)+24>>2]|0;c[Q>>2]=0;u=c[b+(k*136|0)+24>>2]|0;if(!u)b=0;else{l=c[E>>2]|0;d=0;t=b+(k*136|0)+28|0;while(1){b=c[t+20>>2]|0;if(((c[t+8>>2]|0)!=(c[t>>2]|0)?(c[t+12>>2]|0)!=(c[t+4>>2]|0):0)?(U=da(c[b+(l*40|0)+20>>2]|0,c[b+(l*40|0)+16>>2]|0)|0,(U|0)!=0):0){j=0;s=c[b+(l*40|0)+24>>2]|0;while(1){q=s+40|0;b:do if(c[q>>2]|0){r=s+44|0;b=c[r>>2]|0;do if(!b){o=c[s+4>>2]|0;c[r>>2]=1;c[s+36>>2]=0}else{n=b+-1|0;o=c[s+4>>2]|0;if((c[o+(n<<5)+8>>2]|0)!=(c[o+(n<<5)+20>>2]|0)){o=o+(n<<5)|0;break}c[r>>2]=b+1;o=o+(b<<5)|0}while(0);b=c[o+28>>2]|0;n=b+(c[Q>>2]|0)|0;if(n>>>0>m>>>0){$=60;break a}while(1){c[Q>>2]=n;B=c[o+24>>2]|0;A=o+8|0;c[A>>2]=(c[A>>2]|0)+B;A=c[q>>2]|0;c[q>>2]=A-B;if((A|0)==(B|0))break b;c[r>>2]=(c[r>>2]|0)+1;b=c[o+60>>2]|0;n=b+(c[Q>>2]|0)|0;if(n>>>0>m>>>0){$=60;break a}else o=o+32|0}}while(0);j=j+1|0;if(j>>>0>=U>>>0)break;else s=s+56|0}}d=d+1|0;if(d>>>0>=u>>>0)break;else t=t+36|0}b=c[Q>>2]|0}a=b+v|0}}b=c[J>>2]|0;if((c[h+(b<<2)>>2]|0)!=0?(V=(c[I>>2]|0)+(b*52|0)+36|0,(c[V>>2]|0)==0):0)c[V>>2]=(c[(c[K>>2]|0)+(b*44|0)+20>>2]|0)+-1;b=C+a|0;g=g-a|0;if(!(sA(G)|0))break;else C=b}}rea(h);H=H+1|0;if(H>>>0>(c[P>>2]|0)>>>0){h=b;$=69;break}else{a=b;G=G+232|0}}if(($|0)==4){oA(Z,Y);Z=0;i=_;return Z|0}else if(($|0)==25){e=c[p>>2]|0;V=c[b>>2]|0;W=c[l>>2]|0;f=c[k>>2]|0;c[X>>2]=m;c[X+4>>2]=g-a;c[X+8>>2]=j;c[X+12>>2]=V;c[X+16>>2]=d;c[X+20>>2]=W;c[X+24>>2]=f;Uc(e|0,257808,X|0)|0;$=40}else if(($|0)==28){rea(c[j>>2]|0);c[d>>2]=0;$=40}else if(($|0)==60){e=c[p>>2]|0;c[X>>2]=b;c[X+4>>2]=m;c[X+8>>2]=j;c[X+12>>2]=l;c[X+16>>2]=d;c[X+20>>2]=k;c[X+24>>2]=a;Uc(e|0,257544,X|0)|0;$=63}else if(($|0)==69){oA(Z,Y);c[f>>2]=h-e;Z=1;i=_;return Z|0}if(($|0)==40){oA(Z,Y);rea(h);Z=0;i=_;return Z|0}else if(($|0)==63){oA(Z,Y);rea(h);Z=0;i=_;return Z|0}return 0}function EA(a,b){a=a|0;b=b|0;var d=0,e=0;d=qea(8)|0;if(!d){a=0;return a|0}e=d;c[e>>2]=0;c[e+4>>2]=0;c[d>>2]=a;c[d+4>>2]=b;a=d;return a|0}function FA(a){a=a|0;if(!a)return;rea(a);return}function GA(b){b=b|0;var d=0,e=0,f=0;f=qea(44)|0;if(!f){e=0;return e|0}d=f+0|0;e=d+44|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a[f+40>>0]=(b|0)!=0&1;b=qea(4)|0;c[f+20>>2]=b;if(!b){rea(f);e=0;return e|0}else{c[b>>2]=0;e=f;return e|0}return 0}function HA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+1200|0;N=O;e=c[c[a+20>>2]>>2]|0;M=e+16|0;f=c[M>>2]|0;if(!f){i=O;return}J=e+20|0;K=(c[a+32>>2]|0)+8|0;L=(c[a+28>>2]|0)+84|0;H=a+24|0;I=(b|0)==0;F=(d|0)==0;G=b+-1|0;e=f;E=0;do{j=c[J>>2]|0;k=c[K>>2]|0;C=c[j+(E*44|0)+16>>2]|0;a:do if(!k)D=8;else{if(!C){f=0;while(1){f=f+1|0;if(f>>>0>=k>>>0)break a}}else d=0;do{f=da(C,d)|0;a=c[L>>2]|0;g=+((c[(c[(c[H>>2]|0)+24>>2]|0)+(E*52|0)+24>>2]|0)>>>0)*.0625;h=0;do{D=(f+h|0)*3|0;c[N+(d*120|0)+(h*12|0)>>2]=~~(+(c[a+(D<<2)>>2]|0)*g);c[N+(d*120|0)+(h*12|0)+4>>2]=~~(+(c[a+(D+1<<2)>>2]|0)*g);c[N+(d*120|0)+(h*12|0)+8>>2]=~~(+(c[a+(D+2<<2)>>2]|0)*g);h=h+1|0}while(h>>>0>>0);d=d+1|0}while(d>>>0>>0);D=8}while(0);if((D|0)==8){D=0;if(C){w=j+(E*44|0)+24|0;B=0;do{x=c[w>>2]|0;y=x+(B*136|0)+24|0;e=c[y>>2]|0;if(e){z=x+(B*136|0)+16|0;A=x+(B*136|0)+20|0;k=c[A>>2]|0;f=c[z>>2]|0;v=0;do{if(da(k,f)|0){s=x+(B*136|0)+(v*36|0)+48|0;t=N+(b*120|0)+(B*12|0)+(v<<2)|0;u=N+(G*120|0)+(B*12|0)+(v<<2)|0;r=0;do{e=c[s>>2]|0;q=da(c[e+(r*40|0)+20>>2]|0,c[e+(r*40|0)+16>>2]|0)|0;if(q){m=e+(r*40|0)+24|0;n=c[t>>2]|0;p=0;do{j=c[m>>2]|0;l=j+(p*48|0)|0;o=c[j+(p*48|0)+4>>2]|0;e=(c[(c[(c[H>>2]|0)+24>>2]|0)+(E*52|0)+24>>2]|0)-(c[j+(p*48|0)+28>>2]|0)|0;if(!I){k=c[u>>2]|0;f=n-k|0;if((k|0)<=(e|0)){f=f+(k-e)|0;f=(f|0)<0?0:f}}else{c[j+(p*48|0)+40>>2]=0;f=(n|0)>(e|0)?n-e|0:0}h=j+(p*48|0)+40|0;a=c[h>>2]|0;d=(a|0)==0;if(d)if(!f)f=0;else f=(f*3|0)+-2|0;else f=(f*3|0)+a|0;c[o+(b*24|0)>>2]=f-a;do if((f|0)!=(a|0)){e=c[j+(p*48|0)+8>>2]|0;k=c[e+((f+-1|0)*24|0)>>2]|0;if(d){c[o+(b*24|0)+4>>2]=k;e=c[l>>2]|0}else{e=c[e+((a+-1|0)*24|0)>>2]|0;c[o+(b*24|0)+4>>2]=k-e;e=(c[l>>2]|0)+e|0}c[o+(b*24|0)+16>>2]=e;if(F)break;c[h>>2]=f}while(0);p=p+1|0}while(p>>>0>>0);k=c[A>>2]|0;f=c[z>>2]|0}r=r+1|0}while(r>>>0<(da(k,f)|0)>>>0);e=c[y>>2]|0}v=v+1|0}while(v>>>0>>0)}B=B+1|0}while(B>>>0>>0);e=c[M>>2]|0}}E=E+1|0}while(E>>>0>>0);i=O;return}function IA(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0,g=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;a=c[c[a+20>>2]>>2]|0;G=a+(b<<3)+40|0;h[G>>3]=0.0;H=a+16|0;f=c[H>>2]|0;if(!f)return;E=a+20|0;F=(b|0)==0;D=(e|0)==0;a=f;C=0;do{f=c[E>>2]|0;B=c[f+(C*44|0)+16>>2]|0;if(B){v=f+(C*44|0)+24|0;A=0;do{w=c[v>>2]|0;x=w+(A*136|0)+24|0;a=c[x>>2]|0;if(a){y=w+(A*136|0)+16|0;z=w+(A*136|0)+20|0;f=c[z>>2]|0;e=c[y>>2]|0;u=0;do{if(da(f,e)|0){t=w+(A*136|0)+(u*36|0)+48|0;s=0;do{a=c[t>>2]|0;r=da(c[a+(s*40|0)+20>>2]|0,c[a+(s*40|0)+16>>2]|0)|0;if(r){o=a+(s*40|0)+24|0;q=0;do{k=c[o>>2]|0;m=k+(q*48|0)|0;p=c[k+(q*48|0)+4>>2]|0;a=k+(q*48|0)+40|0;if(F){c[a>>2]=0;l=0}else l=c[a>>2]|0;n=k+(q*48|0)+40|0;e=c[k+(q*48|0)+44>>2]|0;if(l>>>0>>0){i=c[k+(q*48|0)+8>>2]|0;a=l;j=l;do{f=c[i+(j*24|0)>>2]|0;g=+h[i+(j*24|0)+8>>3];if(a){J=a+-1|0;g=g-+h[i+(J*24|0)+8>>3];f=f-(c[i+(J*24|0)>>2]|0)|0}do if(!f){if(!(g!=0.0))break;a=j+1|0}else{if(!(g/+(f>>>0)>=d))break;a=j+1|0}while(0);j=j+1|0}while(j>>>0>>0);i=a;c[p+(b*24|0)>>2]=i-l;if((i|0)!=(l|0)){e=i+-1|0;a=c[k+(q*48|0)+8>>2]|0;f=c[a+(e*24|0)>>2]|0;if(!l){c[p+(b*24|0)+4>>2]=f;c[p+(b*24|0)+16>>2]=c[m>>2];g=+h[a+(e*24|0)+8>>3]}else{J=l+-1|0;k=c[a+(J*24|0)>>2]|0;c[p+(b*24|0)+4>>2]=f-k;c[p+(b*24|0)+16>>2]=(c[m>>2]|0)+k;g=+h[a+(e*24|0)+8>>3]-+h[a+(J*24|0)+8>>3]}h[p+(b*24|0)+8>>3]=g;h[G>>3]=g+ +h[G>>3];if(!D)c[n>>2]=i}else I=26}else{c[p+(b*24|0)>>2]=0;I=26}if((I|0)==26){I=0;h[p+(b*24|0)+8>>3]=0.0}q=q+1|0}while(q>>>0>>0);f=c[z>>2]|0;e=c[y>>2]|0}s=s+1|0}while(s>>>0<(da(f,e)|0)>>>0);a=c[x>>2]|0}u=u+1|0}while(u>>>0>>0)}A=A+1|0}while(A>>>0>>0);a=c[H>>2]|0}C=C+1|0}while(C>>>0>>0);return}function JA(b,d,e,f,j){b=b|0;d=d|0;e=e|0;f=f|0;j=j|0;var k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,V=0,W=0;V=i;i=i+800|0;T=V;Q=c[b+28>>2]|0;R=c[c[b+20>>2]>>2]|0;S=c[b+32>>2]|0;N=R+24|0;c[N>>2]=0;O=c[R+16>>2]|0;if(!O){k=0;n=0.0;m=0.0;J=17976931348623157.0e292}else{L=c[R+20>>2]|0;M=c[(c[b+24>>2]|0)+24>>2]|0;k=0;P=0;n=0.0;m=0.0;o=17976931348623157.0e292;do{H=L+(P*44|0)+40|0;c[H>>2]=0;I=c[L+(P*44|0)+16>>2]|0;if(!I)l=0;else{K=c[L+(P*44|0)+24>>2]|0;l=0;G=0;do{D=c[K+(G*136|0)+24>>2]|0;if(D){E=da(c[K+(G*136|0)+20>>2]|0,c[K+(G*136|0)+16>>2]|0)|0;F=(E|0)==0;C=0;do{if(!F){B=c[K+(G*136|0)+(C*36|0)+48>>2]|0;A=0;do{x=da(c[B+(A*40|0)+20>>2]|0,c[B+(A*40|0)+16>>2]|0)|0;if(x){z=c[B+(A*40|0)+24>>2]|0;y=0;do{u=c[z+(y*48|0)+44>>2]|0;if(u){v=c[z+(y*48|0)+8>>2]|0;p=n;t=0;while(1){s=c[v+(t*24|0)>>2]|0;r=+h[v+(t*24|0)+8>>3];if(t){W=t+-1|0;r=r-+h[v+(W*24|0)+8>>3];s=s-(c[v+(W*24|0)>>2]|0)|0}do if(!s)n=p;else{n=r/+(s|0);o=np)){n=p;break}}while(0);t=t+1|0;if(t>>>0>=u>>>0)break;else p=n}}W=da((c[z+(y*48|0)+24>>2]|0)-(c[z+(y*48|0)+16>>2]|0)|0,(c[z+(y*48|0)+20>>2]|0)-(c[z+(y*48|0)+12>>2]|0)|0)|0;k=W+k|0;l=W+l|0;y=y+1|0}while(y>>>0>>0);c[N>>2]=k;c[H>>2]=l}A=A+1|0}while(A>>>0>>0)}C=C+1|0}while(C>>>0>>0)}G=G+1|0}while(G>>>0>>0)}w=+(1<>2]|0)+-1.0;m=m+ +(l|0)*(w*w);P=P+1|0}while(P>>>0>>0);J=o}I=(j|0)!=0;if(I){W=c[b+36>>2]|0;P=c[j+88>>2]|0;c[P+(W*592|0)+552>>2]=k;h[P+(W*592|0)+560>>3]=+h[R+32>>3];x=S+8|0;c[P+(W*592|0)>>2]=qea(c[x>>2]<<3)|0}else x=S+8|0;if(!(c[x>>2]|0)){W=1;i=V;return W|0}y=R+32|0;z=Q+89|0;A=b+36|0;B=j+88|0;C=R+40|0;D=b+24|0;E=b+8|0;F=b+16|0;G=Q+72|0;H=0;while(1){o=+g[S+(H<<2)+20>>2];if(o!=0.0){u=~~+ca(+o)>>>0;u=u>>>0>>0?u:f}else u=f;q=+g[S+(H<<2)+5176>>2];w=+h[y>>3]-m/+U(10.0,+(q/10.0));W=a[z>>0]|0;if(!((W&1)!=0&o>0.0)?!((W&4)!=0&q>0.0):0)o=J;else{v=EA(c[D>>2]|0,Q)|0;if(!v){k=0;l=57;break}t=H+1|0;k=T+(H+-1<<3)|0;l=R+(H<<3)+40|0;if(!H){q=n;k=0;r=J;p=0.0;do{o=(r+q)*.5;IA(b,0,o,0);do if(a[z>>0]&4){if(!(c[G>>2]|0)){W=+h[C>>3]>2]|0,R,t,d,e,u,j,c[E>>2]|0,c[b>>2]|0,c[F>>2]|0,0)|0))r=o;else{W=+h[C>>3]>2]|0,R,t,d,e,u,j,c[E>>2]|0,c[b>>2]|0,c[F>>2]|0,0)|0)==0;q=W?q:o;r=W?o:r;p=W?p:o}while(0);k=k+1|0}while((k|0)!=128)}else{r=n;s=0;q=J;p=0.0;do{o=(q+r)*.5;IA(b,H,o,0);do if(a[z>>0]&4){if(!(c[G>>2]|0)){W=+h[k>>3]+ +h[l>>3]>2]|0,R,t,d,e,u,j,c[E>>2]|0,c[b>>2]|0,c[F>>2]|0,0)|0))q=o;else{W=+h[k>>3]+ +h[l>>3]>2]|0,R,t,d,e,u,j,c[E>>2]|0,c[b>>2]|0,c[F>>2]|0,0)|0)==0;r=W?r:o;q=W?o:q;p=W?p:o}while(0);s=s+1|0}while((s|0)!=128)}FA(v);o=p==0.0?o:p}if(I)h[(c[(c[B>>2]|0)+((c[A>>2]|0)*592|0)>>2]|0)+(H<<3)>>3]=o;IA(b,H,o,1);if(!H)o=+h[C>>3];else o=+h[T+(H+-1<<3)>>3]+ +h[R+(H<<3)+40>>3];h[T+(H<<3)>>3]=o;H=H+1|0;if(H>>>0>=(c[x>>2]|0)>>>0){k=1;l=57;break}}if((l|0)==57){i=V;return k|0}return 0}function KA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;c[a+24>>2]=b;c[a+28>>2]=d;e=qea(848)|0;g=c[a+20>>2]|0;c[g>>2]=e;if(!e){a=0;return a|0}sfa(e|0,0,848)|0;e=c[b+16>>2]|0;b=e*44|0;f=qea(b)|0;c[(c[g>>2]|0)+20>>2]=f;if(!f){a=0;return a|0}sfa(f|0,0,b|0)|0;c[(c[g>>2]|0)+16>>2]=e;c[a>>2]=c[d+80>>2];a=1;return a|0}function LA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(!b)return;p=b+20|0;d=c[p>>2]|0;do if(d){q=(a[b+40>>0]&1)==0?230:229;e=c[d>>2]|0;if(e){o=e+20|0;l=e+16|0;if(c[l>>2]|0){m=0;n=c[o>>2]|0;while(1){k=n+24|0;d=c[k>>2]|0;if(d){h=c[n+28>>2]|0;j=(h>>>0)/136|0;if(h>>>0>135){i=0;while(1){h=d+48|0;e=c[h>>2]|0;if(e){f=c[d+52>>2]|0;g=(f>>>0)/40|0;if(f>>>0>39){f=0;while(1){r=e+32|0;XA(c[r>>2]|0);c[r>>2]=0;r=e+36|0;XA(c[r>>2]|0);c[r>>2]=0;Bd[q&511](e);f=f+1|0;if(f>>>0>=g>>>0)break;else e=e+40|0}e=c[h>>2]|0}rea(e);c[h>>2]=0}h=d+84|0;e=c[h>>2]|0;if(e){r=c[d+88>>2]|0;g=(r>>>0)/40|0;if(r>>>0>39){f=0;while(1){r=e+32|0;XA(c[r>>2]|0);c[r>>2]=0;r=e+36|0;XA(c[r>>2]|0);c[r>>2]=0;Bd[q&511](e);f=f+1|0;if(f>>>0>=g>>>0)break;else e=e+40|0}e=c[h>>2]|0}rea(e);c[h>>2]=0}h=d+120|0;e=c[h>>2]|0;if(e){r=c[d+124>>2]|0;g=(r>>>0)/40|0;if(r>>>0>39){f=0;while(1){r=e+32|0;XA(c[r>>2]|0);c[r>>2]=0;r=e+36|0;XA(c[r>>2]|0);c[r>>2]=0;Bd[q&511](e);f=f+1|0;if(f>>>0>=g>>>0)break;else e=e+40|0}e=c[h>>2]|0}rea(e);c[h>>2]=0}i=i+1|0;if(i>>>0>=j>>>0)break;else d=d+136|0}d=c[k>>2]|0}rea(d);c[k>>2]=0}d=n+32|0;e=c[d>>2]|0;if(e){rea(e);c[d>>2]=0}m=m+1|0;if(m>>>0>=(c[l>>2]|0)>>>0)break;else n=n+44|0}}rea(c[o>>2]|0);c[o>>2]=0;rea(c[c[p>>2]>>2]|0);d=c[p>>2]|0;c[d>>2]=0;if(!d)break}rea(d)}while(0);rea(b);return}function MA(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0.0,wa=0;e=c[b+28>>2]|0;ta=c[c[b+20>>2]>>2]|0;f=c[(c[e+68>>2]|0)+(d*5632|0)+5576>>2]|0;h=c[ta+20>>2]|0;ua=c[b+24>>2]|0;b=c[ua+24>>2]|0;ra=c[e+24>>2]|0;ka=(d>>>0)%(ra>>>0)|0;ra=(d>>>0)/(ra>>>0)|0;$=c[e+4>>2]|0;qa=c[e+12>>2]|0;na=(da(qa,ka)|0)+$|0;sa=c[ua>>2]|0;c[ta>>2]=(na|0)>(sa|0)?na:sa;sa=c[e+8>>2]|0;na=c[e+16>>2]|0;Y=(da(na,ra)|0)+sa|0;_=c[ua+4>>2]|0;pa=ta+4|0;c[pa>>2]=(Y|0)>(_|0)?Y:_;$=(da(qa,ka+1|0)|0)+$|0;ka=c[ua+8>>2]|0;qa=ta+8|0;c[qa>>2]=($|0)<(ka|0)?$:ka;sa=(da(na,ra+1|0)|0)+sa|0;ua=c[ua+12>>2]|0;ra=ta+12|0;c[ra>>2]=(sa|0)<(ua|0)?sa:ua;if(!(c[f+4>>2]|0)){Xb(257896,38,1,c[p>>2]|0)|0;ua=0;return ua|0}sa=ta+16|0;if(!(c[sa>>2]|0)){ua=1;return ua|0}na=e+72|0;ua=c[p>>2]|0;oa=0;ma=b;a:while(1){b=c[ma>>2]|0;if(!b){e=6;break}d=b+-1|0;i=(d+(c[ta>>2]|0)|0)/(b|0)|0;c[h>>2]=i;e=c[ma+4>>2]|0;if(!e){e=8;break}ja=e+-1|0;ia=(ja+(c[pa>>2]|0)|0)/(e|0)|0;la=h+4|0;c[la>>2]=ia;d=(d+(c[qa>>2]|0)|0)/(b|0)|0;ka=h+8|0;c[ka>>2]=d;e=(ja+(c[ra>>2]|0)|0)/(e|0)|0;ja=h+12|0;c[ja>>2]=e;i=da(d-i<<2,e-ia|0)|0;e=c[f+4>>2]|0;ia=h+16|0;c[ia>>2]=e;d=c[na>>2]|0;c[h+20>>2]=e>>>0>>0?1:e-d|0;d=h+32|0;e=c[d>>2]|0;if(e){b=h+36|0;if(i>>>0>(c[b>>2]|0)>>>0){e=tea(e,i)|0;Xb(257936,38,1,ua|0)|0;if(!e){e=14;break}c[d>>2]=e;c[b>>2]=i}}else{$=qea(i)|0;c[d>>2]=$;if(!$){b=0;e=73;break}c[h+36>>2]=i}i=(c[ia>>2]|0)*136|0;d=h+24|0;e=c[d>>2]|0;if(e){b=h+28|0;if(i>>>0>(c[b>>2]|0)>>>0){e=tea(e,i)|0;if(!e){e=21;break}c[d>>2]=e;$=c[b>>2]|0;sfa(e+$|0,0,i-$|0)|0;c[b>>2]=i}}else{b=qea(i)|0;c[d>>2]=b;if(!b){b=0;e=73;break}c[h+28>>2]=i;sfa(b|0,0,i|0)|0}b=c[ia>>2]|0;ha=(c[f+20>>2]|0)==0?150:149;if(b){ca=f+8|0;ea=f+12|0;fa=ma+24|0;ga=f+804|0;ba=c[d>>2]|0;d=f+28|0;e=0;while(1){$=b;aa=b+-1|0;Y=c[h>>2]|0;Z=1<>31|0,-1,-1)|0;_=H;Y=yfa(Z|0,_|0,Y|0,((Y|0)<0)<<31>>31|0)|0;Y=pfa(Y|0,H|0,aa|0)|0;c[ba>>2]=Y;i=c[la>>2]|0;i=yfa(Z|0,_|0,i|0,((i|0)<0)<<31>>31|0)|0;i=pfa(i|0,H|0,aa|0)|0;c[ba+4>>2]=i;b=c[ka>>2]|0;b=yfa(Z|0,_|0,b|0,((b|0)<0)<<31>>31|0)|0;b=pfa(b|0,H|0,aa|0)|0;c[ba+8>>2]=b;j=c[ja>>2]|0;j=yfa(Z|0,_|0,j|0,((j|0)<0)<<31>>31|0)|0;j=pfa(j|0,H|0,aa|0)|0;c[ba+12>>2]=j;n=c[f+(e<<2)+812>>2]|0;m=c[f+(e<<2)+944>>2]|0;o=Y>>n<>m<>31|0,-1,-1)|0;k=yfa(k|0,H|0,j|0,((j|0)<0)<<31>>31|0)|0;k=pfa(k|0,H|0,m|0)|0;if((Y|0)==(b|0))l=0;else{l=1<>31|0,-1,-1)|0;l=yfa(l|0,H|0,b|0,((b|0)<0)<<31>>31|0)|0;l=pfa(l|0,H|0,n|0)|0;l=(l<>n}Y=ba+16|0;c[Y>>2]=l;if((i|0)==(j|0))b=0;else b=(k<>m;c[ba+20>>2]=b;V=da(l,b)|0;W=V*40|0;X=(e|0)==0;if(X)b=1;else{o=yfa(o|0,((o|0)<0)<<31>>31|0,1,0)|0;o=Bfa(o|0,H|0,1)|0;q=yfa(q|0,((q|0)<0)<<31>>31|0,1,0)|0;q=Bfa(q|0,H|0,1)|0;b=3;m=m+-1|0;n=n+-1|0}U=ba+24|0;c[U>>2]=b;E=c[ca>>2]|0;E=E>>>0>>0?E:n;F=c[ea>>2]|0;F=F>>>0>>0?F:m;G=(V|0)==0;I=1<>31|0,-1,-1)|0;M=H;N=1<>31|0,-1,-1)|0;P=H;Q=1<<$;Q=yfa(Q|0,((Q|0)<0)<<31>>31|0,-1,-1)|0;R=H;S=0;T=ba+28|0;D=d;while(1){if(X){c[T+16>>2]=0;b=c[h>>2]|0;b=yfa(Z|0,_|0,b|0,((b|0)<0)<<31>>31|0)|0;b=pfa(b|0,H|0,aa|0)|0;c[T>>2]=b;b=c[la>>2]|0;b=yfa(Z|0,_|0,b|0,((b|0)<0)<<31>>31|0)|0;b=pfa(b|0,H|0,aa|0)|0;c[T+4>>2]=b;b=c[ka>>2]|0;b=yfa(Z|0,_|0,b|0,((b|0)<0)<<31>>31|0)|0;b=pfa(b|0,H|0,aa|0)|0;c[T+8>>2]=b;b=c[ja>>2]|0;b=yfa(Z|0,_|0,b|0,((b|0)<0)<<31>>31|0)|0;b=pfa(b|0,H|0,aa|0)|0;k=0}else{k=S+1|0;c[T+16>>2]=k;C=(k&1)<>2]|0)-C|0;b=yfa(Q|0,R|0,b|0,((b|0)<0)<<31>>31|0)|0;b=pfa(b|0,H|0,$|0)|0;c[T>>2]=b;b=k>>>1<>2]|0)-b|0;B=yfa(Q|0,R|0,B|0,((B|0)<0)<<31>>31|0)|0;B=pfa(B|0,H|0,$|0)|0;c[T+4>>2]=B;C=(c[ka>>2]|0)-C|0;C=yfa(Q|0,R|0,C|0,((C|0)<0)<<31>>31|0)|0;C=pfa(C|0,H|0,$|0)|0;c[T+8>>2]=C;b=(c[ja>>2]|0)-b|0;b=yfa(Q|0,R|0,b|0,((b|0)<0)<<31>>31|0)|0;b=pfa(b|0,H|0,$|0)|0}C=T+12|0;c[C>>2]=b;d=Ed[ha&511](k)|0;va=+(c[D+4>>2]|0)*.00048828125+1.0;g[T+32>>2]=+Eca(1.0,(c[fa>>2]|0)+d-(c[D>>2]|0)|0)*va;c[T+28>>2]=(c[D>>2]|0)+-1+(c[ga>>2]|0);d=T+20|0;k=c[d>>2]|0;if(k){b=T+24|0;if((c[b>>2]|0)>>>0>>0){k=tea(k,W)|0;if(!k){e=40;break a}c[d>>2]=k;B=c[b>>2]|0;sfa(k+B|0,0,W-B|0)|0;c[b>>2]=W}}else{b=qea(W)|0;c[d>>2]=b;if(!b){b=0;e=73;break a}sfa(b|0,0,W|0)|0;c[T+24>>2]=W}if(!G){A=T+4|0;B=T+8|0;y=c[d>>2]|0;z=0;while(1){r=c[Y>>2]|0;v=(((z>>>0)%(r>>>0)|0)<>>0)/(r>>>0)|0)<>2]|0;u=(v|0)>(u|0)?v:u;c[y>>2]=u;v=c[A>>2]|0;v=(r|0)>(v|0)?r:v;r=y+4|0;c[r>>2]=v;x=c[B>>2]|0;x=(s|0)<(x|0)?s:x;s=y+8|0;c[s>>2]=x;l=c[C>>2]|0;l=(t|0)<(l|0)?t:l;t=y+12|0;c[t>>2]=l;u=u>>E<>F<>31|0)|0;x=pfa(x|0,H|0,E|0)|0;l=yfa(O|0,P|0,l|0,((l|0)<0)<<31>>31|0)|0;l=pfa(l|0,H|0,F|0)|0;x=(x<>E;w=y+16|0;c[w>>2]=x;l=(l<>F;j=y+20|0;c[j>>2]=l;x=da(l,x)|0;l=x*48|0;d=y+24|0;k=c[d>>2]|0;do if(!k){b=qea(l)|0;c[d>>2]=b;if(!b){b=0;e=73;break a}sfa(b|0,0,l|0)|0;c[y+28>>2]=l}else{b=y+28|0;if(l>>>0<=(c[b>>2]|0)>>>0)break;k=tea(k,l)|0;if(!k){e=49;break a}c[d>>2]=k;i=c[b>>2]|0;sfa(k+i|0,0,l-i|0)|0;c[b>>2]=l}while(0);i=y+32|0;b=c[i>>2]|0;k=c[w>>2]|0;l=c[j>>2]|0;if(!b)b=UA(k,l)|0;else b=WA(b,k,l)|0;c[i>>2]=b;if(!b)Xb(258128,30,1,ua|0)|0;i=y+36|0;k=c[i>>2]|0;l=c[w>>2]|0;b=c[j>>2]|0;if(!k)b=UA(l,b)|0;else b=WA(k,l,b)|0;c[i>>2]=b;if(!b)Xb(258160,30,1,ua|0)|0;if(x){l=0;d=c[d>>2]|0;while(1){b=c[w>>2]|0;wa=(((l>>>0)%(b>>>0)|0)<>>0)/(b>>>0)|0)<>2]|0;c[d+12>>2]=(wa|0)>(j|0)?wa:j;j=c[r>>2]|0;c[d+16>>2]=(b|0)>(j|0)?b:j;j=c[s>>2]|0;c[d+20>>2]=(k|0)<(j|0)?k:j;j=c[t>>2]|0;c[d+24>>2]=(i|0)<(j|0)?i:j;if(!(c[d>>2]|0)){b=qea(16384)|0;c[d>>2]=b;if(!b){b=0;e=73;break a}a[b>>0]=0;c[d>>2]=b+1;k=qea(2400)|0;c[d+4>>2]=k;if(!k){b=0;e=73;break a}wa=qea(2400)|0;b=d+8|0;c[b>>2]=wa;if(!wa){b=0;e=73;break a}}else{b=d+8|0;k=c[d+4>>2]|0}sfa(k|0,0,2400)|0;sfa(c[b>>2]|0,0,2400)|0;l=l+1|0;if(l>>>0>=x>>>0)break;else d=d+48|0}}z=z+1|0;if(z>>>0>=V>>>0)break;else y=y+40|0}}d=D+8|0;S=S+1|0;if(S>>>0>=(c[U>>2]|0)>>>0)break;else{T=T+36|0;D=d}}e=e+1|0;if(e>>>0<(c[ia>>2]|0)>>>0){b=aa;ba=ba+136|0}else break}}oa=oa+1|0;if(oa>>>0>=(c[sa>>2]|0)>>>0){b=1;e=73;break}else{ma=ma+52|0;f=f+1080|0;h=h+44|0}}if((e|0)==6)Ra(258480,258488,105,258528);else if((e|0)==8)Ra(258480,258488,105,258528);else if((e|0)==14){rea(c[d>>2]|0);c[d>>2]=0;c[b>>2]=0;wa=0;return wa|0}else if((e|0)==21){Xb(257976,38,1,ua|0)|0;rea(c[d>>2]|0);c[d>>2]=0;c[b>>2]=0;wa=0;return wa|0}else if((e|0)==40){Xb(258016,42,1,ua|0)|0;rea(c[d>>2]|0);c[d>>2]=0;c[b>>2]=0;wa=0;return wa|0}else if((e|0)==49){rea(c[d>>2]|0);c[d>>2]=0;c[b>>2]=0;Xb(258064,57,1,ua|0)|0;wa=0;return wa|0}else if((e|0)==73)return b|0;return 0}function NA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0.0,va=0;d=c[a+28>>2]|0;sa=c[c[a+20>>2]>>2]|0;e=c[(c[d+68>>2]|0)+(b*5632|0)+5576>>2]|0;f=c[sa+20>>2]|0;ta=c[a+24>>2]|0;a=c[ta+24>>2]|0;qa=c[d+24>>2]|0;ja=(b>>>0)%(qa>>>0)|0;qa=(b>>>0)/(qa>>>0)|0;_=c[d+4>>2]|0;pa=c[d+12>>2]|0;ma=(da(pa,ja)|0)+_|0;ra=c[ta>>2]|0;c[sa>>2]=(ma|0)>(ra|0)?ma:ra;ra=c[d+8>>2]|0;ma=c[d+16>>2]|0;X=(da(ma,qa)|0)+ra|0;Z=c[ta+4>>2]|0;oa=sa+4|0;c[oa>>2]=(X|0)>(Z|0)?X:Z;_=(da(pa,ja+1|0)|0)+_|0;ja=c[ta+8>>2]|0;pa=sa+8|0;c[pa>>2]=(_|0)<(ja|0)?_:ja;ra=(da(ma,qa+1|0)|0)+ra|0;ta=c[ta+12>>2]|0;qa=sa+12|0;c[qa>>2]=(ra|0)<(ta|0)?ra:ta;if(!(c[e+4>>2]|0)){Xb(257896,38,1,c[p>>2]|0)|0;ta=0;return ta|0}ra=sa+16|0;if(!(c[ra>>2]|0)){ta=1;return ta|0}ma=d+72|0;ta=c[p>>2]|0;na=0;la=a;a:while(1){a=c[la>>2]|0;if(!a){e=6;break}b=a+-1|0;h=(b+(c[sa>>2]|0)|0)/(a|0)|0;c[f>>2]=h;d=c[la+4>>2]|0;if(!d){e=8;break}ia=d+-1|0;ha=(ia+(c[oa>>2]|0)|0)/(d|0)|0;ka=f+4|0;c[ka>>2]=ha;b=(b+(c[pa>>2]|0)|0)/(a|0)|0;ja=f+8|0;c[ja>>2]=b;d=(ia+(c[qa>>2]|0)|0)/(d|0)|0;ia=f+12|0;c[ia>>2]=d;h=da(b-h<<2,d-ha|0)|0;d=c[e+4>>2]|0;ha=f+16|0;c[ha>>2]=d;b=c[ma>>2]|0;c[f+20>>2]=d>>>0>>0?1:d-b|0;b=f+32|0;d=c[b>>2]|0;if(d){a=f+36|0;if(h>>>0>(c[a>>2]|0)>>>0){d=tea(d,h)|0;Xb(257936,38,1,ta|0)|0;if(!d){e=14;break}c[b>>2]=d;c[a>>2]=h}}else{_=qea(h)|0;c[b>>2]=_;if(!_){a=0;e=72;break}c[f+36>>2]=h}h=(c[ha>>2]|0)*136|0;b=f+24|0;d=c[b>>2]|0;if(d){a=f+28|0;if(h>>>0>(c[a>>2]|0)>>>0){d=tea(d,h)|0;if(!d){e=21;break}c[b>>2]=d;_=c[a>>2]|0;sfa(d+_|0,0,h-_|0)|0;c[a>>2]=h}}else{a=qea(h)|0;c[b>>2]=a;if(!a){a=0;e=72;break}c[f+28>>2]=h;sfa(a|0,0,h|0)|0}a=c[ha>>2]|0;ga=(c[e+20>>2]|0)==0?150:149;if(a){ba=e+8|0;ca=e+12|0;ea=la+24|0;fa=e+804|0;aa=c[b>>2]|0;b=e+28|0;d=0;while(1){_=a;$=a+-1|0;X=c[f>>2]|0;Y=1<<$;Y=yfa(Y|0,((Y|0)<0)<<31>>31|0,-1,-1)|0;Z=H;X=yfa(Y|0,Z|0,X|0,((X|0)<0)<<31>>31|0)|0;X=pfa(X|0,H|0,$|0)|0;c[aa>>2]=X;h=c[ka>>2]|0;h=yfa(Y|0,Z|0,h|0,((h|0)<0)<<31>>31|0)|0;h=pfa(h|0,H|0,$|0)|0;c[aa+4>>2]=h;a=c[ja>>2]|0;a=yfa(Y|0,Z|0,a|0,((a|0)<0)<<31>>31|0)|0;a=pfa(a|0,H|0,$|0)|0;c[aa+8>>2]=a;i=c[ia>>2]|0;i=yfa(Y|0,Z|0,i|0,((i|0)<0)<<31>>31|0)|0;i=pfa(i|0,H|0,$|0)|0;c[aa+12>>2]=i;m=c[e+(d<<2)+812>>2]|0;l=c[e+(d<<2)+944>>2]|0;n=X>>m<>l<>31|0,-1,-1)|0;j=yfa(j|0,H|0,i|0,((i|0)<0)<<31>>31|0)|0;j=pfa(j|0,H|0,l|0)|0;if((X|0)==(a|0))k=0;else{k=1<>31|0,-1,-1)|0;k=yfa(k|0,H|0,a|0,((a|0)<0)<<31>>31|0)|0;k=pfa(k|0,H|0,m|0)|0;k=(k<>m}X=aa+16|0;c[X>>2]=k;if((h|0)==(i|0))a=0;else a=(j<>l;c[aa+20>>2]=a;U=da(k,a)|0;V=U*40|0;W=(d|0)==0;if(W)a=1;else{n=yfa(n|0,((n|0)<0)<<31>>31|0,1,0)|0;n=Bfa(n|0,H|0,1)|0;o=yfa(o|0,((o|0)<0)<<31>>31|0,1,0)|0;o=Bfa(o|0,H|0,1)|0;a=3;l=l+-1|0;m=m+-1|0}T=aa+24|0;c[T>>2]=a;D=c[ba>>2]|0;D=D>>>0>>0?D:m;E=c[ca>>2]|0;E=E>>>0>>0?E:l;F=(U|0)==0;G=1<>31|0,-1,-1)|0;L=H;M=1<>31|0,-1,-1)|0;O=H;P=1<<_;P=yfa(P|0,((P|0)<0)<<31>>31|0,-1,-1)|0;Q=H;R=0;S=aa+28|0;C=b;while(1){if(W){c[S+16>>2]=0;a=c[f>>2]|0;a=yfa(Y|0,Z|0,a|0,((a|0)<0)<<31>>31|0)|0;a=pfa(a|0,H|0,$|0)|0;c[S>>2]=a;a=c[ka>>2]|0;a=yfa(Y|0,Z|0,a|0,((a|0)<0)<<31>>31|0)|0;a=pfa(a|0,H|0,$|0)|0;c[S+4>>2]=a;a=c[ja>>2]|0;a=yfa(Y|0,Z|0,a|0,((a|0)<0)<<31>>31|0)|0;a=pfa(a|0,H|0,$|0)|0;c[S+8>>2]=a;a=c[ia>>2]|0;a=yfa(Y|0,Z|0,a|0,((a|0)<0)<<31>>31|0)|0;a=pfa(a|0,H|0,$|0)|0;j=0}else{j=R+1|0;c[S+16>>2]=j;B=(j&1)<<$;a=(c[f>>2]|0)-B|0;a=yfa(P|0,Q|0,a|0,((a|0)<0)<<31>>31|0)|0;a=pfa(a|0,H|0,_|0)|0;c[S>>2]=a;a=j>>>1<<$;A=(c[ka>>2]|0)-a|0;A=yfa(P|0,Q|0,A|0,((A|0)<0)<<31>>31|0)|0;A=pfa(A|0,H|0,_|0)|0;c[S+4>>2]=A;B=(c[ja>>2]|0)-B|0;B=yfa(P|0,Q|0,B|0,((B|0)<0)<<31>>31|0)|0;B=pfa(B|0,H|0,_|0)|0;c[S+8>>2]=B;a=(c[ia>>2]|0)-a|0;a=yfa(P|0,Q|0,a|0,((a|0)<0)<<31>>31|0)|0;a=pfa(a|0,H|0,_|0)|0}B=S+12|0;c[B>>2]=a;b=Ed[ga&511](j)|0;ua=+(c[C+4>>2]|0)*.00048828125+1.0;g[S+32>>2]=+Eca(1.0,(c[ea>>2]|0)+b-(c[C>>2]|0)|0)*ua*.5;c[S+28>>2]=(c[C>>2]|0)+-1+(c[fa>>2]|0);b=S+20|0;j=c[b>>2]|0;if(j){a=S+24|0;if((c[a>>2]|0)>>>0>>0){j=tea(j,V)|0;if(!j){e=40;break a}c[b>>2]=j;A=c[a>>2]|0;sfa(j+A|0,0,V-A|0)|0;c[a>>2]=V}}else{a=qea(V)|0;c[b>>2]=a;if(!a){a=0;e=72;break a}sfa(a|0,0,V|0)|0;c[S+24>>2]=V}if(!F){z=S+4|0;A=S+8|0;x=c[b>>2]|0;y=0;while(1){q=c[X>>2]|0;u=(((y>>>0)%(q>>>0)|0)<>>0)/(q>>>0)|0)<>2]|0;t=(u|0)>(t|0)?u:t;c[x>>2]=t;u=c[z>>2]|0;u=(q|0)>(u|0)?q:u;q=x+4|0;c[q>>2]=u;w=c[A>>2]|0;w=(r|0)<(w|0)?r:w;r=x+8|0;c[r>>2]=w;b=c[B>>2]|0;b=(s|0)<(b|0)?s:b;s=x+12|0;c[s>>2]=b;t=t>>D<>E<>31|0)|0;w=pfa(w|0,H|0,D|0)|0;b=yfa(N|0,O|0,b|0,((b|0)<0)<<31>>31|0)|0;b=pfa(b|0,H|0,E|0)|0;w=(w<>D;v=x+16|0;c[v>>2]=w;b=(b<>E;h=x+20|0;c[h>>2]=b;w=da(b,w)|0;b=w*56|0;i=x+24|0;j=c[i>>2]|0;do if(!j){a=qea(b)|0;c[i>>2]=a;if(!a){a=0;e=72;break a}sfa(a|0,0,b|0)|0;c[x+28>>2]=b}else{a=x+28|0;if(b>>>0<=(c[a>>2]|0)>>>0)break;j=tea(j,b)|0;if(!j){d=i;b=i;e=49;break a}c[i>>2]=j;k=c[a>>2]|0;sfa(j+k|0,0,b-k|0)|0;c[a>>2]=b}while(0);k=x+32|0;a=c[k>>2]|0;j=c[v>>2]|0;b=c[h>>2]|0;if(!a)a=UA(j,b)|0;else a=WA(a,j,b)|0;c[k>>2]=a;if(!a)Xb(258128,30,1,ta|0)|0;k=x+36|0;j=c[k>>2]|0;b=c[v>>2]|0;a=c[h>>2]|0;if(!j)a=UA(b,a)|0;else a=WA(j,b,a)|0;c[k>>2]=a;if(!a)Xb(258160,30,1,ta|0)|0;if(w){b=0;j=c[i>>2]|0;while(1){a=c[v>>2]|0;va=(((b>>>0)%(a>>>0)|0)<>>0)/(a>>>0)|0)<>2]|0;c[j+8>>2]=(va|0)>(i|0)?va:i;i=c[q>>2]|0;c[j+12>>2]=(a|0)>(i|0)?a:i;i=c[r>>2]|0;c[j+16>>2]=(k|0)<(i|0)?k:i;i=c[s>>2]|0;c[j+20>>2]=(h|0)<(i|0)?h:i;if(!(c[j>>2]|0)){va=qea(8192)|0;c[j>>2]=va;if(!va){a=0;e=72;break a}c[j+32>>2]=8192;a=qea(320)|0;c[j+4>>2]=a;if(!a){a=0;e=72;break a}sfa(a|0,0,320)|0;c[j+52>>2]=10}b=b+1|0;if(b>>>0>=w>>>0)break;else j=j+56|0}}y=y+1|0;if(y>>>0>=U>>>0)break;else x=x+40|0}}b=C+8|0;R=R+1|0;if(R>>>0>=(c[T>>2]|0)>>>0)break;else{S=S+36|0;C=b}}d=d+1|0;if(d>>>0<(c[ha>>2]|0)>>>0){a=$;aa=aa+136|0}else break}}na=na+1|0;if(na>>>0>=(c[ra>>2]|0)>>>0){a=1;e=72;break}else{la=la+52|0;e=e+1080|0;f=f+44|0}}if((e|0)==6)Ra(258480,258488,105,258528);else if((e|0)==8)Ra(258480,258488,105,258528);else if((e|0)==14){rea(c[b>>2]|0);c[b>>2]=0;c[a>>2]=0;va=0;return va|0}else if((e|0)==21){Xb(257976,38,1,ta|0)|0;rea(c[b>>2]|0);c[b>>2]=0;c[a>>2]=0;va=0;return va|0}else if((e|0)==40){Xb(258016,42,1,ta|0)|0;rea(c[b>>2]|0);c[b>>2]=0;c[a>>2]=0;va=0;return va|0}else if((e|0)==49){rea(c[b>>2]|0);c[d>>2]=0;c[a>>2]=0;Xb(258064,57,1,ta|0)|0;va=0;return va|0}else if((e|0)==72)return a|0;return 0}function OA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;d=c[a+24>>2]|0;f=c[d+16>>2]|0;if(!f){g=0;return g|0}g=0;b=0;e=c[d+24>>2]|0;d=c[(c[c[a+20>>2]>>2]|0)+20>>2]|0;while(1){i=c[e+24>>2]|0;i=((i&7|0)!=0&1)+(i>>>3)|0;h=c[d+24>>2]|0;a=(c[d+20>>2]|0)+-1|0;b=(da(da((i|0)==3?4:i,(c[h+(a*136|0)+8>>2]|0)-(c[h+(a*136|0)>>2]|0)|0)|0,(c[h+(a*136|0)+12>>2]|0)-(c[h+(a*136|0)+4>>2]|0)|0)|0)+b|0;g=g+1|0;if(g>>>0>=f>>>0)break;else{e=e+52|0;d=d+44|0}}return b|0}function PA(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+16|0;x=z;do if(!(c[b+8>>2]|0)){c[b+36>>2]=d;v=b+28|0;t=c[(c[v>>2]|0)+68>>2]|0;y=b+32|0;c[y>>2]=t+(d*5632|0);w=(h|0)==0;p=c[b+20>>2]|0;if(!w){j=c[(c[p>>2]|0)+20>>2]|0;n=c[t+(d*5632|0)+5576>>2]|0;o=j+16|0;if(!(c[o>>2]|0)){k=c[h+88>>2]|0;j=0}else{m=c[j+24>>2]|0;k=c[h+88>>2]|0;l=0;j=0;do{u=m+(l*136|0)+16|0;c[k+(d*592|0)+(l<<2)+20>>2]=c[u>>2];s=m+(l*136|0)+20|0;c[k+(d*592|0)+(l<<2)+152>>2]=c[s>>2];j=(da(c[s>>2]|0,c[u>>2]|0)|0)+j|0;c[k+(d*592|0)+(l<<2)+284>>2]=c[n+(l<<2)+812>>2];c[k+(d*592|0)+(l<<2)+416>>2]=c[n+(l<<2)+944>>2];l=l+1|0}while(l>>>0<(c[o>>2]|0)>>>0)}c[k+(d*592|0)+548>>2]=sea(da(da(c[h+52>>2]|0,j)|0,c[h+56>>2]|0)|0,32)|0}u=b+20|0;j=c[p>>2]|0;s=j+16|0;if(!(c[s>>2]|0)){k=0;m=c[j+20>>2]|0}else{m=c[j+20>>2]|0;p=0;q=c[t+(d*5632|0)+5576>>2]|0;r=m;while(1){o=c[r+32>>2]|0;n=da((c[r+12>>2]|0)-(c[r+4>>2]|0)|0,(c[r+8>>2]|0)-(c[r>>2]|0)|0)|0;j=(n|0)==0;if((c[q+20>>2]|0)==1){if(!j){k=q+1076|0;l=0;j=o;while(1){c[j>>2]=(c[j>>2]|0)-(c[k>>2]|0);l=l+1|0;if((l|0)==(n|0))break;else j=j+4|0}}}else if(!j){k=q+1076|0;l=0;j=o;while(1){c[j>>2]=(c[j>>2]|0)-(c[k>>2]|0)<<11;l=l+1|0;if((l|0)==(n|0))break;else j=j+4|0}}p=p+1|0;j=c[s>>2]|0;if(p>>>0>=j>>>0)break;else{q=q+1080|0;r=r+44|0}}k=j<<2}o=da((c[m+12>>2]|0)-(c[m+4>>2]|0)|0,(c[m+8>>2]|0)-(c[m>>2]|0)|0)|0;j=c[t+(d*5632|0)+16>>2]|0;do if((j|0)==2){n=t+(d*5632|0)+5600|0;if(c[n>>2]|0){l=qea(k)|0;if(!l){b=0;i=z;return b|0}j=c[s>>2]|0;if(!j)j=0;else{k=0;while(1){c[l+(k<<2)>>2]=c[m+32>>2];k=k+1|0;if((k|0)==(j|0))break;else m=m+44|0}}d=(Ez(c[n>>2]|0,o,l,j,c[(c[(c[b+24>>2]|0)+24>>2]|0)+32>>2]|0)|0)==0;rea(l);if(d){b=0;i=z;return b|0}}}else if(j){k=c[m+32>>2]|0;l=c[m+76>>2]|0;j=c[m+120>>2]|0;if(!(c[(c[t+(d*5632|0)+5576>>2]|0)+20>>2]|0)){Cz(k,l,j,o);break}else{Az(k,l,j,o);break}}while(0);j=c[c[u>>2]>>2]|0;l=j+16|0;a:do if(c[l>>2]|0){m=0;n=c[(c[y>>2]|0)+5576>>2]|0;k=c[j+20>>2]|0;while(1){j=c[n+20>>2]|0;if((j|0)==1){if(!(iy(k)|0)){j=0;k=53;break}}else if((j|0)==0?(my(k)|0)==0:0){j=0;k=53;break}m=m+1|0;if(m>>>0>=(c[l>>2]|0)>>>0)break a;else{n=n+1080|0;k=k+44|0}}if((k|0)==53){i=z;return j|0}}while(0);j=c[y>>2]|0;k=yA()|0;if(!k){b=0;i=z;return b|0}do if((c[j+16>>2]|0)==1)if(!(c[(c[j+5576>>2]|0)+20>>2]|0)){l=zz()|0;break}else{l=yz()|0;break}else l=c[j+5592>>2]|0;while(0);u=BA(k,c[c[u>>2]>>2]|0,j,l)|0;zA(k);if(!u){b=0;i=z;return b|0}j=c[v>>2]|0;c[x>>2]=0;if(!w)c[h+12>>2]=0;if(!(a[j+89>>0]&5)){if(!(c[(c[y>>2]|0)+8>>2]|0))break;else j=0;do{HA(b,j,1);j=j+1|0}while(j>>>0<(c[(c[y>>2]|0)+8>>2]|0)>>>0)}else{if(!(JA(b,e,x,g,h)|0))j=0;else break;i=z;return j|0}}while(0);if(h)c[h+12>>2]=1;j=EA(c[b+24>>2]|0,c[b+28>>2]|0)|0;if(!j)j=1;else{b=CA(j,c[b+36>>2]|0,c[c[b+20>>2]>>2]|0,c[(c[b+32>>2]|0)+8>>2]|0,e,f,g,h,c[b+4>>2]|0,c[b>>2]|0,c[b+16>>2]|0,1)|0;FA(j);j=(b|0)==0}b=j&1^1;i=z;return b|0}function QA(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+16|0;l=w;j=w+4|0;h=a+36|0;c[h>>2]=e;u=c[a+28>>2]|0;o=a+32|0;c[o>>2]=(c[u+68>>2]|0)+(e*5632|0);c[j>>2]=0;n=a+24|0;e=EA(c[n>>2]|0,u)|0;if(!e){v=0;i=w;return v|0}m=a+20|0;u=DA(e,c[h>>2]|0,c[c[m>>2]>>2]|0,b,j,d,f)|0;FA(e);if(!u){v=0;i=w;return v|0}e=c[c[m>>2]>>2]|0;h=c[(c[o>>2]|0)+5576>>2]|0;a=c[e+20>>2]|0;f=yA()|0;if(!f){v=0;i=w;return v|0}j=e+16|0;a:do if(c[j>>2]|0){d=0;e=a;while(1){if(!(AA(f,e,h)|0))break;d=d+1|0;if(d>>>0>=(c[j>>2]|0)>>>0)break a;else{h=h+1080|0;e=e+44|0}}zA(f);v=0;i=w;return v|0}while(0);zA(f);e=c[c[m>>2]>>2]|0;a=e+16|0;do if(c[a>>2]|0){j=0;d=c[(c[n>>2]|0)+24>>2]|0;f=c[(c[o>>2]|0)+5576>>2]|0;h=c[e+20>>2]|0;while(1){e=(c[d+36>>2]|0)+1|0;if((c[f+20>>2]|0)==1){if(!(jy(h,e)|0)){v=0;e=56;break}}else if(!(qy(h,e)|0)){v=0;e=56;break}j=j+1|0;if(j>>>0>=(c[a>>2]|0)>>>0){e=14;break}else{d=d+52|0;f=f+1080|0;h=h+44|0}}if((e|0)==14){k=c[c[m>>2]>>2]|0;break}else if((e|0)==56){i=w;return v|0}}else k=e;while(0);a=c[o>>2]|0;d=c[k+20>>2]|0;e=c[a+16>>2]|0;do if(e){b=da((c[d+12>>2]|0)-(c[d+4>>2]|0)|0,(c[d+8>>2]|0)-(c[d>>2]|0)|0)|0;j=k+16|0;h=c[j>>2]|0;if(h>>>0<=2){u=c[p>>2]|0;c[l>>2]=h;Uc(u|0,258400,l|0)|0;break}if((da((c[d+56>>2]|0)-(c[d+48>>2]|0)|0,(c[d+52>>2]|0)-(c[d+44>>2]|0)|0)|0)>=(b|0)?(da((c[d+100>>2]|0)-(c[d+92>>2]|0)|0,(c[d+96>>2]|0)-(c[d+88>>2]|0)|0)|0)>=(b|0):0){if((e|0)!=2){h=c[d+32>>2]|0;j=c[d+76>>2]|0;e=c[d+120>>2]|0;if((c[(c[a+5576>>2]|0)+20>>2]|0)==1){Bz(h,j,e,b);break}else{Dz(h,j,e,b);break}}f=a+5596|0;if(!(c[f>>2]|0))break;a=qea(h<<2)|0;if(!a){v=0;i=w;return v|0}e=c[j>>2]|0;if(!e)e=0;else{j=0;h=d;while(1){c[a+(j<<2)>>2]=c[h+32>>2];j=j+1|0;if((j|0)==(e|0))break;else h=h+44|0}}u=(Fz(c[f>>2]|0,b,a,e,c[(c[(c[n>>2]|0)+24>>2]|0)+32>>2]|0)|0)==0;rea(a);if(u)v=0;else break;i=w;return v|0}Xb(258336,60,1,c[p>>2]|0)|0;v=0;i=w;return v|0}while(0);e=c[c[m>>2]>>2]|0;t=e+16|0;if(!(c[t>>2]|0)){v=1;i=w;return v|0}u=0;s=c[(c[n>>2]|0)+24>>2]|0;r=c[(c[o>>2]|0)+5576>>2]|0;q=c[e+20>>2]|0;while(1){n=c[q+24>>2]|0;j=c[s+36>>2]|0;a=c[n+(j*136|0)+8>>2]|0;h=c[n+(j*136|0)>>2]|0;m=a-h|0;d=c[n+(j*136|0)+12>>2]|0;j=c[n+(j*136|0)+4>>2]|0;n=d-j|0;b=(c[q+8>>2]|0)-(c[q>>2]|0)|0;o=b-m|0;j=(d|0)==(j|0);if(!j?b>>>0>(((c[q+36>>2]|0)>>>0)/(n>>>0)|0)>>>0:0){e=34;break}e=c[s+24>>2]|0;if(!(c[s+32>>2]|0)){e=1<>2]|0;if((c[r+20>>2]|0)==1){if(!j){f=(a|0)==(h|0);d=r+1076|0;b=0;while(1){if(!f){h=0;j=e;while(1){a=(c[d>>2]|0)+(c[j>>2]|0)|0;if((a|0)<(l|0))a=l;else a=(a|0)>(k|0)?k:a;c[j>>2]=a;h=h+1|0;if((h|0)==(m|0))break;else j=j+4|0}e=e+(m<<2)|0}b=b+1|0;if((b|0)==(n|0))break;else e=e+(o<<2)|0}}}else if(!j){f=(a|0)==(h|0);d=r+1076|0;b=0;while(1){if(!f){h=0;j=e;while(1){a=Kea(+g[j>>2])|0;a=(c[d>>2]|0)+a|0;if((a|0)<(l|0))a=l;else a=(a|0)>(k|0)?k:a;c[j>>2]=a;h=h+1|0;if((h|0)==(m|0))break;else j=j+4|0}e=e+(m<<2)|0}b=b+1|0;if((b|0)==(n|0))break;else e=e+(o<<2)|0}}u=u+1|0;if(u>>>0>=(c[t>>2]|0)>>>0){v=1;e=56;break}else{s=s+52|0;r=r+1080|0;q=q+44|0}}if((e|0)==34)Ra(258192,258272,1669,258304);else if((e|0)==56){i=w;return v|0}return 0}function RA(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=d+24|0;m=c[q>>2]|0;h=c[m+16>>2]|0;l=(h|0)==0;if(l){q=1;return q|0}i=0;g=0;j=c[m+24>>2]|0;k=c[(c[c[d+20>>2]>>2]|0)+20>>2]|0;while(1){n=c[j+24>>2]|0;n=((n&7|0)!=0&1)+(n>>>3)|0;o=c[k+24>>2]|0;p=(c[k+20>>2]|0)+-1|0;g=(da(da((n|0)==3?4:n,(c[o+(p*136|0)+8>>2]|0)-(c[o+(p*136|0)>>2]|0)|0)|0,(c[o+(p*136|0)+12>>2]|0)-(c[o+(p*136|0)+4>>2]|0)|0)|0)+g|0;i=i+1|0;if((i|0)==(h|0))break;else{j=j+52|0;k=k+44|0}}g=g>>>0>f>>>0;if(g|l){q=g&1^1;return q|0}p=0;o=c[m+24>>2]|0;n=c[(c[c[d+20>>2]>>2]|0)+20>>2]|0;while(1){i=c[o+24>>2]|0;d=c[n+24>>2]|0;k=c[o+36>>2]|0;l=c[d+(k*136|0)+8>>2]|0;h=c[d+(k*136|0)>>2]|0;f=l-h|0;m=c[d+(k*136|0)+12>>2]|0;k=c[d+(k*136|0)+4>>2]|0;d=(c[n+8>>2]|0)-(c[n>>2]|0)-f|0;i=((i&7|0)!=0&1)+(i>>>3)|0;i=(i|0)==3?4:i;do if((i|0)==1){i=c[n+32>>2]|0;g=(m|0)==(k|0);if(!(c[o+32>>2]|0)){if(g)break;j=(l|0)==(h|0);m=m-k|0;k=0;while(1){if(!j){h=e+f|0;g=0;l=i;while(1){a[e>>0]=c[l>>2];g=g+1|0;if((g|0)==(f|0))break;else{e=e+1|0;l=l+4|0}}e=h;i=i+(f<<2)|0}k=k+1|0;if((k|0)==(m|0))break;else i=i+(d<<2)|0}}else{if(g)break;j=(l|0)==(h|0);m=m-k|0;k=0;while(1){if(!j){h=e+f|0;g=0;l=i;while(1){a[e>>0]=c[l>>2];g=g+1|0;if((g|0)==(f|0))break;else{e=e+1|0;l=l+4|0}}e=h;i=i+(f<<2)|0}k=k+1|0;if((k|0)==(m|0))break;else i=i+(d<<2)|0}}}else if((i|0)==4){if((m|0)!=(k|0)){j=(l|0)==(h|0);m=m-k|0;k=0;l=e;i=c[n+32>>2]|0;while(1){if(j)e=l;else{e=l+(f<<2)|0;h=0;g=i;while(1){c[l>>2]=c[g>>2];h=h+1|0;if((h|0)==(f|0))break;else{l=l+4|0;g=g+4|0}}i=i+(f<<2)|0}k=k+1|0;if((k|0)==(m|0))break;else{l=e;i=i+(d<<2)|0}}}}else if((i|0)==2){i=c[n+32>>2]|0;g=(m|0)==(k|0);if(!(c[o+32>>2]|0)){if(!g){j=(l|0)==(h|0);m=m-k|0;k=0;l=e;while(1){if(j)e=l;else{e=l+(f<<1)|0;h=0;g=i;while(1){b[l>>1]=c[g>>2];h=h+1|0;if((h|0)==(f|0))break;else{l=l+2|0;g=g+4|0}}i=i+(f<<2)|0}k=k+1|0;if((k|0)==(m|0))break;else{l=e;i=i+(d<<2)|0}}}}else if(!g){j=(l|0)==(h|0);m=m-k|0;k=0;l=e;while(1){if(j)e=l;else{e=l+(f<<1)|0;h=0;g=i;while(1){b[l>>1]=c[g>>2];h=h+1|0;if((h|0)==(f|0))break;else{l=l+2|0;g=g+4|0}}i=i+(f<<2)|0}k=k+1|0;if((k|0)==(m|0))break;else{l=e;i=i+(d<<2)|0}}}}while(0);p=p+1|0;if(p>>>0>=(c[(c[q>>2]|0)+16>>2]|0)>>>0){e=1;break}else{o=o+52|0;n=n+44|0}}return e|0}function SA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=c[a+24>>2]|0;f=c[d+16>>2]|0;if(!f){g=0;return g|0}g=0;b=0;e=c[d+24>>2]|0;d=c[(c[c[a+20>>2]>>2]|0)+20>>2]|0;while(1){a=c[e+24>>2]|0;a=((a&7|0)!=0&1)+(a>>>3)|0;b=(da(da((c[d+12>>2]|0)-(c[d+4>>2]|0)|0,(c[d+8>>2]|0)-(c[d>>2]|0)|0)|0,(a|0)==3?4:a)|0)+b|0;g=g+1|0;if(g>>>0>=f>>>0)break;else{e=e+52|0;d=d+44|0}}return b|0}function TA(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=c[f+24>>2]|0;p=o+16|0;l=c[p>>2]|0;n=(l|0)==0;if(n)i=0;else{j=0;i=0;k=c[o+24>>2]|0;m=c[(c[c[f+20>>2]>>2]|0)+20>>2]|0;while(1){q=c[k+24>>2]|0;q=((q&7|0)!=0&1)+(q>>>3)|0;i=(da(da((c[m+12>>2]|0)-(c[m+4>>2]|0)|0,(c[m+8>>2]|0)-(c[m>>2]|0)|0)|0,(q|0)==3?4:q)|0)+i|0;j=j+1|0;if((j|0)==(l|0))break;else{k=k+52|0;m=m+44|0}}}i=(i|0)!=(h|0);if(i|n){q=i&1^1;return q|0}n=0;m=c[o+24>>2]|0;h=c[(c[c[f+20>>2]>>2]|0)+20>>2]|0;while(1){i=c[m+24>>2]|0;l=(c[h+8>>2]|0)-(c[h>>2]|0)|0;j=(c[h+12>>2]|0)-(c[h+4>>2]|0)|0;o=da(j,l)|0;i=((i&7|0)!=0&1)+(i>>>3)|0;i=(i|0)==3?4:i;do if((i|0)==1){j=c[h+32>>2]|0;i=(o|0)==0;if(!(c[m+32>>2]|0)){if(i){i=g;break}else{k=0;i=j;j=g}while(1){c[i>>2]=d[j>>0];k=k+1|0;if((k|0)==(o|0))break;else{i=i+4|0;j=j+1|0}}i=g+o|0;break}else{if(i){i=g;break}else{k=0;i=j;j=g}while(1){c[i>>2]=a[j>>0];k=k+1|0;if((k|0)==(o|0))break;else{i=i+4|0;j=j+1|0}}i=g+o|0;break}}else if((i|0)==2){k=c[h+32>>2]|0;i=(o|0)==0;if(!(c[m+32>>2]|0))if(i)i=g;else{i=g+(da(j<<1,l)|0)|0;l=0;j=g;while(1){c[k>>2]=e[j>>1];l=l+1|0;if((l|0)==(o|0))break;else{k=k+4|0;j=j+2|0}}}else if(i)i=g;else{i=g+(da(j<<1,l)|0)|0;l=0;j=g;while(1){c[k>>2]=b[j>>1];l=l+1|0;if((l|0)==(o|0))break;else{k=k+4|0;j=j+2|0}}}}else if((i|0)==4)if(!o)i=g;else{i=g+(da(j<<2,l)|0)|0;k=0;l=c[h+32>>2]|0;j=g;while(1){c[l>>2]=c[j>>2];k=k+1|0;if((k|0)==(o|0))break;else{l=l+4|0;j=j+4|0}}}else i=g;while(0);n=n+1|0;if(n>>>0>=(c[p>>2]|0)>>>0){i=1;break}else{g=i;m=m+52|0;h=h+44|0}}return i|0}function UA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+256|0;s=u+128|0;t=u;d=qea(20)|0;if(!d){Xb(258544,42,1,c[p>>2]|0)|0;t=0;i=u;return t|0};c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d>>2]=a;c[d+4>>2]=b;c[s>>2]=a;c[t>>2]=b;k=d+8|0;c[k>>2]=0;e=0;g=b;h=a;j=0;while(1){r=da(g,h)|0;h=(h+1|0)/2|0;f=j+1|0;c[s+(f<<2)>>2]=h;g=(g+1|0)/2|0;c[t+(f<<2)>>2]=g;e=e+r|0;if(r>>>0<=1){r=e;break}else j=f}c[k>>2]=r;if(!r){rea(d);Xb(258592,60,1,c[p>>2]|0)|0;t=0;i=u;return t|0}e=sea(r,16)|0;c[d+12>>2]=e;if(!e){Xb(258656,54,1,c[p>>2]|0)|0;rea(d);t=0;i=u;return t|0}f=r<<4;sfa(e|0,0,f|0)|0;c[d+16>>2]=f;f=e+((da(b,a)|0)<<4)|0;if(!j)f=e;else{q=0;h=f;g=f;f=e;do{n=c[t+(q<<2)>>2]|0;a:do if((n|0)>0){o=c[s+(q<<2)>>2]|0;if((o|0)<=0){a=0;while(1){if((a&1|0)!=0|(a|0)==(n+-1|0)){k=h;g=h}else{k=g;g=g+(o<<4)|0}a=a+1|0;if((a|0)>=(n|0)){h=k;break a}else h=k}}l=(o+-1|0)>>>1;m=0;do{b=o;k=h;while(1){c[f>>2]=k;a=f+16|0;b=b+-2|0;if((b|0)<=-1){f=a;break}c[a>>2]=k;f=f+32|0;if((b|0)<=0)break;else k=k+16|0}a=h+(l+1<<4)|0;if((m&1|0)!=0|(m|0)==(n+-1|0)){h=a;g=a}else{h=g;g=g+(o<<4)|0}m=m+1|0}while((m|0)<(n|0))}while(0);q=q+1|0}while((q|0)!=(j|0))}c[f>>2]=0;f=0;while(1){c[e+4>>2]=999;c[e+8>>2]=0;c[e+12>>2]=0;f=f+1|0;if((f|0)==(r|0))break;else e=e+16|0}i=u;return d|0}function VA(a){a=a|0;var b=0,d=0;if(!a)return;b=c[a+8>>2]|0;if(!b)return;d=0;a=c[a+12>>2]|0;while(1){c[a+4>>2]=999;c[a+8>>2]=0;c[a+12>>2]=0;d=d+1|0;if(d>>>0>=b>>>0)break;else a=a+16|0}return}function WA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0;s=i;i=i+256|0;q=s+128|0;r=s;if(!a){r=0;i=s;return r|0}l=a+4|0;if(!((c[a>>2]|0)==(b|0)?(c[l>>2]|0)==(d|0):0)){c[a>>2]=b;c[l>>2]=d;c[q>>2]=b;c[r>>2]=d;k=a+8|0;c[k>>2]=0;e=0;f=d;h=b;j=0;while(1){o=da(f,h)|0;h=(h+1|0)/2|0;g=j+1|0;c[q+(g<<2)>>2]=h;f=(f+1|0)/2|0;c[r+(g<<2)>>2]=f;e=e+o|0;if(o>>>0<=1)break;else j=g}c[k>>2]=e;if(!e){e=c[a+12>>2]|0;if(e)rea(e);rea(a);r=0;i=s;return r|0}f=e<<4;g=a+16|0;h=a+12|0;e=c[h>>2]|0;do if(f>>>0>(c[g>>2]|0)>>>0){e=tea(e,f)|0;if(e){c[h>>2]=e;d=c[g>>2]|0;sfa(e+d|0,0,f-d|0)|0;c[g>>2]=f;d=c[l>>2]|0;b=c[a>>2]|0;break}Xb(258712,53,1,c[p>>2]|0)|0;e=c[h>>2]|0;if(e)rea(e);rea(a);r=0;i=s;return r|0}while(0);b=e+((da(d,b)|0)<<4)|0;if(j){o=0;d=b;do{m=c[r+(o<<2)>>2]|0;a:do if((m|0)>0){n=c[q+(o<<2)>>2]|0;if((n|0)<=0){k=0;while(1){if((k&1|0)!=0|(k|0)==(m+-1|0)){g=d;b=d}else{g=b;b=b+(n<<4)|0}k=k+1|0;if((k|0)>=(m|0)){d=g;break a}else d=g}}h=(n+-1|0)>>>1;l=0;do{f=n;k=d;while(1){c[e>>2]=k;g=e+16|0;f=f+-2|0;if((f|0)<=-1){e=g;break}c[g>>2]=k;e=e+32|0;if((f|0)<=0)break;else k=k+16|0}g=d+(h+1<<4)|0;if((l&1|0)!=0|(l|0)==(m+-1|0)){d=g;b=g}else{d=b;b=b+(n<<4)|0}l=l+1|0}while((l|0)<(m|0))}while(0);o=o+1|0}while((o|0)!=(j|0))}c[e>>2]=0}e=c[a+8>>2]|0;if(!e){r=a;i=s;return r|0}d=0;b=c[a+12>>2]|0;while(1){c[b+4>>2]=999;c[b+8>>2]=0;c[b+12>>2]=0;d=d+1|0;if((d|0)==(e|0))break;else b=b+16|0}i=s;return a|0}function XA(a){a=a|0;var b=0;if(!a)return;b=c[a+12>>2]|0;if(b)rea(b);rea(a);return}function YA(a,b,d){a=a|0;b=b|0;d=d|0;b=(c[a+12>>2]|0)+(b<<4)|0;if(!b)return;while(1){a=b+4|0;if((c[a>>2]|0)<=(d|0)){b=4;break}c[a>>2]=d;b=c[b>>2]|0;if(!b){b=4;break}}if((b|0)==4)return}function ZA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+128|0;j=k;d=(c[b+12>>2]|0)+(d<<4)|0;if(!(c[d>>2]|0)){f=0;g=j}else{f=d;b=j;while(1){g=b+4|0;c[b>>2]=d;d=c[f>>2]|0;if(!(c[d>>2]|0)){f=0;break}else{f=d;b=g}}}while(1){h=d+8|0;b=c[h>>2]|0;if((f|0)>(b|0)){c[h>>2]=f;b=f}a:do if((b|0)<(e|0)){f=d+4|0;while(1){if((b|0)>=(c[f>>2]|0))break;Cx(a,0,1);b=b+1|0;if((b|0)>=(e|0)){d=b;break a}}d=d+12|0;if(!(c[d>>2]|0)){Cx(a,1,1);c[d>>2]=1;d=b}else d=b}else d=b;while(0);c[h>>2]=d;if((g|0)==(j|0))break;h=g+-4|0;f=d;d=c[h>>2]|0;g=h}i=k;return}function _A(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+128|0;j=k;d=(c[b+12>>2]|0)+(d<<4)|0;if(!(c[d>>2]|0)){b=0;g=j}else{f=d;b=j;while(1){g=b+4|0;c[b>>2]=d;d=c[f>>2]|0;if(!(c[d>>2]|0)){b=0;break}else{f=d;b=g}}}while(1){h=d+8|0;f=c[h>>2]|0;if((b|0)>(f|0))c[h>>2]=b;else b=f;d=d+4|0;a:do if((b|0)<(e|0))do{f=c[d>>2]|0;while(1){if((b|0)>=(f|0))break a;if(!(Dx(a,1)|0))break;c[d>>2]=b;f=b}b=b+1|0}while((b|0)<(e|0));while(0);c[h>>2]=b;if((g|0)==(j|0))break;h=g+-4|0;d=c[h>>2]|0;g=h}i=k;return (c[d>>2]|0)<(e|0)|0}function $A(b,c){b=b|0;c=c|0;if(!b)return;if((c|0)>8)LB(b,258768);a[b+441>>0]=(c|0)<0?0:c&255;return}function aB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+16|0;e=f;g=e;c[g>>2]=1196314761;c[g+4>>2]=169478669;if(d>>>0<=8){if(!d){g=-1;i=f;return g|0}}else d=8;if(b>>>0>7){g=-1;i=f;return g|0}g=ffa(a+b|0,e+b|0,(d+b|0)>>>0>8?8-b|0:d)|0;i=f;return g|0}function bB(a,b,c){a=a|0;b=b|0;c=c|0;if(!a){c=0;return c|0}if((4294967295/(c>>>0)|0)>>>0>b>>>0){c=wC(a,da(c,b)|0)|0;return c|0}else{OB(a,258808);c=0;return c|0}return 0}function cB(a,b){a=a|0;b=b|0;qC(a,b);return}function dB(a){a=a|0;c[a+412>>2]=qH(0,0,0)|0;return}function eB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a+212>>2]|0;if(!(c[a+376>>2]&536870912))e=(e&2048|0)==0;else e=(e&768|0)!=768;if(!(e&(d|0)!=0))return;f=a+412|0;e=c[f>>2]|0;while(1){a=(d|0)==0?-1:d;e=qH(e,b,a)|0;if((d|0)==(a|0))break;else{b=b+a|0;d=d-a|0}}c[f>>2]=e;return}function fB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+128|0;j=k;e=b+212|0;if(!d){g=c[e>>2]|131072;c[e>>2]=g;e=g}else{g=0;h=-1;do{h=h+1|0;f=a[d+h>>0]|0;if(f<<24>>24!=(a[311344+h>>0]|0))c[e>>2]=c[e>>2]|131072;g=(f<<24>>24==46&1)+g|0;if((g|0)>=2)break}while(!(f<<24>>24==0|(h|0)==6));e=c[e>>2]|0}if(!(e&131072)){d=1;i=k;return d|0}MB(j,128,MB(j,128,MB(j,128,MB(j,128,0,258848)|0,d)|0,258880)|0,311344)|0;OB(b,j);d=0;i=k;return d|0}function gB(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;n=i;i=i+1056|0;k=4;m=qea(40)|0;c[m>>2]=0;l=n+156|0;j=n;sfa(l|0,0,900)|0;c[l+748>>2]=2147483647;c[l+752>>2]=2147483647;c[l+756>>2]=0;c[l+760>>2]=0;s=0;Ha(27,l|0,f|0,g|0,h|0);h=s;s=0;if((h|0)!=0&(t|0)!=0){g=Cfa(c[h>>2]|0,m|0,k|0)|0;if(!g)Ua(h|0,t|0);H=t}else g=-1;if((g|0)!=1){s=0;Ha(28,l|0,b|0,d|0,e|0);h=s;s=0;if((h|0)!=0&(t|0)!=0){g=Cfa(c[h>>2]|0,m|0,k|0)|0;if(!g)Ua(h|0,t|0);H=t}else g=-1;if((g|0)!=1){m=Afa(j,1,m|0,k|0)|0;k=H;s=0;h=s;s=0;if((h|0)!=0&(t|0)!=0){g=Cfa(c[h>>2]|0,m|0,k|0)|0;if(!g)Ua(h|0,t|0);H=t}else g=-1;if((g|0)!=1)h=0;else h=H}else h=H}else h=H;while(1){if(h){h=0;g=11;break}d=l+160|0;c[d>>2]=j;e=l+164|0;c[e>>2]=0;b=l+156|0;c[b>>2]=74;s=0;h=ya(224,l|0,a|0)|0;g=s;s=0;if((g|0)!=0&(t|0)!=0){f=Cfa(c[g>>2]|0,m|0,k|0)|0;if(!f)Ua(g|0,t|0);H=t}else f=-1;if((f|0)==1){h=H;continue}if(!h){h=0;g=11;break}s=0;f=ya(225,l|0,900)|0;h=s;s=0;if((h|0)!=0&(t|0)!=0){g=Cfa(c[h>>2]|0,m|0,k|0)|0;if(!g)Ua(h|0,t|0);H=t}else g=-1;if((g|0)==1)h=H;else{g=9;break}}if((g|0)==9){if(!f){l=0;rea(m|0);i=n;return l|0}c[l+256>>2]=153;c[l+260>>2]=78;c[l+264>>2]=f;c[d>>2]=0;c[e>>2]=0;c[b>>2]=0;qfa(f|0,l|0,900)|0;l=f;rea(m|0);i=n;return l|0}else if((g|0)==11){rea(m|0);i=n;return h|0}return 0}function hB(a){a=a|0;if(a){a=tC(a,268)|0;if(a)sfa(a|0,0,268)|0}else a=0;return a|0}function iB(a,b){a=a|0;b=b|0;var d=0;if((a|0)==0|(b|0)==0)return;d=c[b>>2]|0;if(!d)return;c[b>>2]=0;jB(a,d,32767,-1);sfa(d|0,0,268)|0;qC(a,d);return}function jB(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;if((e|0)==0|(f|0)==0)return;l=f+136|0;i=c[l>>2]|0;do if(i){m=f+232|0;if(g&16384&c[m>>2]){if((h|0)!=-1){qC(e,c[i+(h*28|0)+4>>2]|0);c[(c[l>>2]|0)+(h*28|0)+4>>2]=0;break}k=f+128|0;if((c[k>>2]|0)>0){j=0;do{qC(e,c[i+(j*28|0)+4>>2]|0);j=j+1|0;i=c[l>>2]|0}while((j|0)<(c[k>>2]|0))}qC(e,i);c[l>>2]=0;c[k>>2]=0}}else m=f+232|0;while(0);i=c[m>>2]|0;if(g&8192&i){i=f+156|0;qC(e,c[i>>2]|0);c[i>>2]=0;i=f+8|0;c[i>>2]=c[i>>2]&-17;i=c[m>>2]|0}if(g&256&i){k=f+256|0;qC(e,c[k>>2]|0);i=f+260|0;qC(e,c[i>>2]|0);c[k>>2]=0;c[i>>2]=0;i=f+8|0;c[i>>2]=c[i>>2]&-16385;i=c[m>>2]|0}if(g&128&i){i=f+208|0;qC(e,c[i>>2]|0);l=f+220|0;qC(e,c[l>>2]|0);c[i>>2]=0;c[l>>2]=0;l=f+224|0;i=c[l>>2]|0;if(i){k=f+229|0;if(a[k>>0]|0){j=0;do{qC(e,c[i+(j<<2)>>2]|0);j=j+1|0;i=c[l>>2]|0}while((j|0)<(d[k>>0]|0))}qC(e,i);c[l>>2]=0}i=f+8|0;c[i>>2]=c[i>>2]&-1025;i=c[m>>2]|0}if(g&16&i){j=f+116|0;qC(e,c[j>>2]|0);k=f+120|0;qC(e,c[k>>2]|0);c[j>>2]=0;c[k>>2]=0;k=f+8|0;c[k>>2]=c[k>>2]&-4097}l=f+244|0;i=c[l>>2]|0;do if((i|0)!=0?(g&32&c[m>>2]|0)!=0:0){if((h|0)!=-1){qC(e,c[i+(h<<4)>>2]|0);qC(e,c[(c[l>>2]|0)+(h<<4)+8>>2]|0);k=c[l>>2]|0;c[k+(h<<4)>>2]=0;c[k+(h<<4)+8>>2]=0;break}k=f+248|0;j=c[k>>2]|0;if(j){if((j|0)>0){j=0;do{qC(e,c[i+(j<<4)>>2]|0);qC(e,c[(c[l>>2]|0)+(j<<4)+8>>2]|0);j=j+1|0;i=c[l>>2]|0}while((j|0)<(c[k>>2]|0))}qC(e,i);c[l>>2]=0;c[k>>2]=0}k=f+8|0;c[k>>2]=c[k>>2]&-8193}while(0);l=f+236|0;i=c[l>>2]|0;do if((i|0)!=0?(g&512&c[m>>2]|0)!=0:0){if((h|0)!=-1){qC(e,c[i+(h*20|0)+8>>2]|0);c[(c[l>>2]|0)+(h*20|0)+8>>2]=0;break}k=f+240|0;j=c[k>>2]|0;if(j){if((j|0)>0){j=0;do{qC(e,c[i+(j*20|0)+8>>2]|0);j=j+1|0;i=c[l>>2]|0}while((j|0)<(c[k>>2]|0))}qC(e,i);c[l>>2]=0;c[k>>2]=0}}while(0);i=c[m>>2]|0;if(g&8&i){i=f+204|0;qC(e,c[i>>2]|0);c[i>>2]=0;i=f+8|0;c[i>>2]=c[i>>2]&-65;i=c[m>>2]|0}if(g&4096&i){i=f+16|0;qC(e,c[i>>2]|0);c[i>>2]=0;i=f+8|0;c[i>>2]=c[i>>2]&-9;b[f+20>>1]=0;i=c[m>>2]|0}if(g&64&i){l=f+264|0;j=c[l>>2]|0;if(j){k=f+4|0;if(!(c[k>>2]|0))i=j;else{i=j;j=0;do{qC(e,c[i+(j<<2)>>2]|0);j=j+1|0;i=c[l>>2]|0}while(j>>>0<(c[k>>2]|0)>>>0)}qC(e,i);c[l>>2]=0;i=c[m>>2]|0}f=f+8|0;c[f>>2]=c[f>>2]&-32769}c[m>>2]=i&~((h|0)==-1?g:g&-16929);return}function kB(a){a=a|0;if(!a){a=0;return a|0}a=c[a+188>>2]|0;return a|0}function lB(b,c){b=b|0;c=c|0;a[b>>0]=c>>>24;a[b+1>>0]=c>>>16;a[b+2>>0]=c>>>8;a[b+3>>0]=c;return}function mB(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;if((a|0)==0|(b|0)==0){g=0;return g|0}e=c[a+692>>2]|0;if(!e){g=0;return g|0}f=c[a+696>>2]|0;e=f+(e*5|0)|0;while(1){a=e;e=e+-5|0;if(!(ffa(b,e,4)|0))break;if(e>>>0<=f>>>0){a=0;g=7;break}}if((g|0)==7)return a|0;g=d[a+-1>>0]|0;return g|0}function nB(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j;a[g>>0]=e>>>24;a[g+1>>0]=e>>>16;a[g+2>>0]=e>>>8;a[g+3>>0]=e;a[g+4>>0]=0;if(!b){h=0;i=j;return h|0}e=c[b+692>>2]|0;if(!e){h=0;i=j;return h|0}f=c[b+696>>2]|0;b=f+(e*5|0)|0;while(1){e=b;b=b+-5|0;if(!(ffa(g,b,4)|0))break;if(b>>>0<=f>>>0){e=0;h=7;break}}if((h|0)==7){i=j;return e|0}h=d[e+-1>>0]|0;i=j;return h|0}function oB(a,b){a=a|0;b=b|0;a=a+248|0;a:do if(!(c[a>>2]|0))do switch(b|0){case -7:{c[a>>2]=259088;break a}case -6:{c[a>>2]=259056;break a}case 2:{c[a>>2]=258968;break a}case -1:{c[a>>2]=258992;break a}case -2:{c[a>>2]=259008;break a}case 1:{c[a>>2]=258936;break a}case -3:{c[a>>2]=259032;break a}case -4:{c[a>>2]=292024;break a}case -5:{c[a>>2]=262448;break a}default:{c[a>>2]=258904;break a}}while(0);while(0);return}function pB(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0.0,i=0;if((e+-16|0)>>>0<=624999984){f=b[d+74>>1]|0;if((f&8)==0?1:(c[a+208>>2]&32768|0)==0){i=d+74|0;if(f<<16>>16<0)return;do if(f&1){g=c[d>>2]|0;if((!((e|0)==0|(g|0)==0)?(h=+R(+(+(g|0)*1.0e5/+(e|0)+.5)),h<=2147483647.0&h>=-2147483648.0):0)?(~~h+-95e3|0)>>>0<=1e4:0)break;if(!(f&32)){YB(a,260784,0);break}YB(a,260752,2);return}while(0);c[d>>2]=e;b[i>>1]=f&65535|9;return}else g=262232}else{f=b[d+74>>1]|0;g=259112}b[d+74>>1]=f&65535|32768;YB(a,g,1);return}function qB(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=b[d+114>>1]|0;e=g&65535;if(!(e&32768)){f=d+8|0;a=c[f>>2]|0;e=(e&128|0)==0?a&-2049:a|2048;e=(g&2)==0?e&-5:e|4;c[f>>2]=e;if(!(g&1)){c[f>>2]=e&-2;return}else{c[f>>2]=e|1;return}}f=d+8|0;g=c[f>>2]&-6150;c[f>>2]=g;if(!a)return;e=d+232|0;h=c[e>>2]|0;if(h&16){i=d+116|0;qC(a,c[i>>2]|0);d=d+120|0;qC(a,c[d>>2]|0);c[i>>2]=0;c[d>>2]=0;c[f>>2]=g}c[e>>2]=h&-17;return}function rB(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(!d)return;e=d+40|0;f=a+824|0;g=e+76|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));g=b[d+114>>1]|0;e=g&65535;if(!(e&32768)){f=d+8|0;a=c[f>>2]|0;e=(e&128|0)==0?a&-2049:a|2048;e=(g&2)==0?e&-5:e|4;c[f>>2]=e;if(!(g&1)){c[f>>2]=e&-2;return}else{c[f>>2]=e|1;return}}h=d+8|0;f=c[h>>2]&-6150;c[h>>2]=f;if(!a)return;e=d+232|0;g=c[e>>2]|0;if(g&16){i=d+116|0;qC(a,c[i>>2]|0);d=d+120|0;qC(a,c[d>>2]|0);c[i>>2]=0;c[d>>2]=0;c[h>>2]=f}c[e>>2]=g&-17;return}function sB(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+48|0;j=m;h=oP(j,f)|0;if((h|0)==1){l=d+74|0;b[l>>1]=e[l>>1]|0|32768;SB(a,259144);l=0;i=m;return l|0}else if(!h){k=d+74|0;l=e[k>>1]|0;if(l&32768){l=0;i=m;return l|0}h=d+4|0;do if(!((g|0)>1|(l&2|0)==0))if(!(pP(f,h,100)|0)){b[k>>1]=l|32768;SB(a,260720);l=0;i=m;return l|0}else{if(!g)h=1;else break;i=m;return h|0}while(0);c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];c[h+28>>2]=c[f+28>>2];a=d+36|0;h=j+0|0;d=a+36|0;do{c[a>>2]=c[h>>2];a=a+4|0;h=h+4|0}while((a|0)<(d|0));j=(pP(f,259360,1e3)|0)==0;b[k>>1]=j?l&65469|2:l|66;l=2;i=m;return l|0}else{l=d+74|0;b[l>>1]=e[l>>1]|0|32768;LB(a,259168)}return 0}function tB(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0.0,j=0;j=d+74|0;g=b[j>>1]|0;h=g&65535;if(h&32768){d=0;return d|0}if(f>>>0>3){rP(a,d,259248,f,259256);d=0;return d|0}if((h&4|0)!=0?(e[d+72>>1]|0|0)!=(f|0):0){rP(a,d,259248,f,259288);d=0;return d|0}if(h&32){SB(a,259320);d=0;return d|0}if((h&2|0)!=0?(pP(259360,d+4|0,100)|0)==0:0){YB(a,259392,2);g=b[j>>1]|0}do if(g&1){h=c[d>>2]|0;if(((h|0)!=0?(i=+R(+(+(h|0)*1.0e5/45455.0+.5)),i<=2147483647.0&i>=-2147483648.0):0)?(~~i+-95e3|0)>>>0<=1e4:0)break;YB(a,260752,2);g=b[j>>1]|0}while(0);b[d+72>>1]=f;g=g&65535;a=d+4|0;c[a+0>>2]=c[64840];c[a+4>>2]=c[64841];c[a+8>>2]=c[64842];c[a+12>>2]=c[64843];c[a+16>>2]=c[64844];c[a+20>>2]=c[64845];c[a+24>>2]=c[64846];c[a+28>>2]=c[64847];a=d+36|0;f=259208|0;h=a+36|0;do{c[a>>2]=c[f>>2];a=a+4|0;f=f+4|0}while((a|0)<(h|0));c[d>>2]=45455;b[j>>1]=g|231;d=1;return d|0}function uB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(d>>>0>=132){a=1;return a|0}rP(a,b,c,d,262392);a=0;return a|0}function vB(a,b,c,e,f,g){a=a|0;b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;i=i+224|0;j=l+24|0;k=l;h=(d[f+1>>0]|0)<<16|(d[f>>0]|0)<<24|(d[f+2>>0]|0)<<8|(d[f+3>>0]|0);if((h|0)!=(e|0)){rP(a,b,c,h,259424);b=0;i=l;return b|0}if(!((d[f+8>>0]|0)<4|(e&3|0)==0)){rP(a,b,c,e,259456);b=0;i=l;return b|0}h=(d[f+129>>0]|0)<<16|(d[f+128>>0]|0)<<24|(d[f+130>>0]|0)<<8|(d[f+131>>0]|0);if(h>>>0<=357913930?((h*12|0)+132|0)>>>0<=e>>>0:0){h=(d[f+65>>0]|0)<<16|(d[f+64>>0]|0)<<24|(d[f+66>>0]|0)<<8|(d[f+67>>0]|0);if(h>>>0>65534){rP(a,b,c,h,259496);b=0;i=l;return b|0}if(h>>>0>3)rP(a,0,c,h,259528);h=(d[f+37>>0]|0)<<16|(d[f+36>>0]|0)<<24|(d[f+38>>0]|0)<<8|(d[f+39>>0]|0);if((h|0)!=1633907568){rP(a,b,c,h,259560);b=0;i=l;return b|0}if(ffa(f+68|0,259584,12)|0){e=MB(j,196,0,260688)|0;e=MB(j,196,MB(j,e+79|0,e,c)|0,260704)|0;MB(j,196,MB(j,196,MB(j,196,e,NB(k,k+24|0,3,0)|0)|0,260712)|0,259600)|0;YB(a,j,1)}h=(d[f+17>>0]|0)<<16|(d[f+16>>0]|0)<<24|(d[f+18>>0]|0)<<8|(d[f+19>>0]|0);if((h|0)==1196573017){if(g&2){rP(a,b,c,1196573017,259680);b=0;i=l;return b|0}}else if((h|0)==1380401696){if(!(g&2)){rP(a,b,c,1380401696,259632);b=0;i=l;return b|0}}else{rP(a,b,c,h,259728);b=0;i=l;return b|0}h=(d[f+13>>0]|0)<<16|(d[f+12>>0]|0)<<24|(d[f+14>>0]|0)<<8|(d[f+15>>0]|0);if((h|0)==1633842036){rP(a,b,c,1633842036,259760);b=0;i=l;return b|0}else if((h|0)==1852662636)rP(a,0,c,1852662636,259840);else if((h|0)==1818848875){rP(a,b,c,1818848875,259800);b=0;i=l;return b|0}else if(!((h|0)==1936744803|(h|0)==1886549106|(h|0)==1835955314|(h|0)==1935896178))rP(a,0,c,h,259880);h=(d[f+21>>0]|0)<<16|(d[f+20>>0]|0)<<24|(d[f+22>>0]|0)<<8|(d[f+23>>0]|0);if((h|0)==1281450528|(h|0)==1482250784){b=1;i=l;return b|0}rP(a,b,c,h,259912);b=0;i=l;return b|0}rP(a,b,c,h,259472);b=0;i=l;return b|0}function wB(a,b,c,e,f){a=a|0;b=b|0;c=c|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=(d[f+129>>0]|0)<<16|(d[f+128>>0]|0)<<24|(d[f+130>>0]|0)<<8|(d[f+131>>0]|0);if(!j){l=1;return l|0}k=0;i=f+132|0;while(1){f=(d[i+1>>0]|0)<<16|(d[i>>0]|0)<<24|(d[i+2>>0]|0)<<8|(d[i+3>>0]|0);m=d[i+7>>0]|0;g=(d[i+5>>0]|0)<<16|(d[i+4>>0]|0)<<24|(d[i+6>>0]|0)<<8|m;h=(d[i+9>>0]|0)<<16|(d[i+8>>0]|0)<<24|(d[i+10>>0]|0)<<8|(d[i+11>>0]|0);if(m&3)rP(a,0,c,f,259944);if(g>>>0>e>>>0|h>>>0>(e-g|0)>>>0)break;k=k+1|0;if(k>>>0>=j>>>0){f=1;l=8;break}else i=i+12|0}if((l|0)==8)return f|0;rP(a,b,c,f,259992);m=0;return m|0}function xB(a,b,c,e){a=a|0;b=b|0;c=c|0;e=e|0;tB(a,b,(d[c+65>>0]|0)<<16|(d[c+64>>0]|0)<<24|(d[c+66>>0]|0)<<8|(d[c+67>>0]|0))|0;return}function yB(a,c,e,f,g,h){a=a|0;c=c|0;e=e|0;f=f|0;g=g|0;h=h|0;if((b[c+74>>1]|0)<0){f=0;return f|0}if(f>>>0<132){rP(a,c,e,f,262392);f=0;return f|0}if(!(vB(a,c,e,f,g,h)|0)){f=0;return f|0}if(!(wB(a,c,e,f,g)|0)){f=0;return f|0}tB(a,c,d[g+65>>0]<<16|d[g+64>>0]<<24|d[g+66>>0]<<8|d[g+67>>0])|0;f=1;return f|0}function zB(d){d=d|0;var e=0,f=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(a[d+701>>0]|0)return;if(!(b[d+898>>1]&2))return;g=c[d+864>>2]|0;h=c[d+876>>2]|0;i=c[d+888>>2]|0;j=h+g+i|0;if(!((j|0)>0&(g|0)>-1))LB(d,260072);k=(j|0)==0;if(k)LB(d,260072);do if(g){f=+R(+(+(g|0)*32768.0/+(j|0)+.5));if(f<=2147483647.0&f>=-2147483648.0){l=~~f;break}else LB(d,260072)}else l=0;while(0);if(!(l>>>0<32769&(h|0)>-1))LB(d,260072);if(!k)if(h){f=+R(+(+(h|0)*32768.0/+(j|0)+.5));if(f<=2147483647.0&f>=-2147483648.0){g=1;h=~~f}else g=0}else{g=1;h=0}else g=0;if(k|g&(h|0)>-1&(h|0)<32769&(i|0)>-1^1)LB(d,260072);if(i){f=+R(+(+(i|0)*32768.0/+(j|0)+.5));if(!(f<=2147483647.0&f>=-2147483648.0))LB(d,260072);g=~~f;if(g>>>0<32769)e=g;else LB(d,260072)}else e=0;g=h+l+e|0;if((g|0)>=32770)LB(d,260072);if((g|0)<=32768)if((g|0)<32768){i=1;m=20}else g=l;else{i=-1;m=20}do if((m|0)==20){if(!((h|0)<(l|0)|(h|0)<(e|0))){h=i+h|0;g=l;break}if((l|0)<(h|0)|(l|0)<(e|0)){g=l;e=i+e|0;break}else{g=i+l|0;break}}while(0);if((h+g+e|0)!=32768)LB(d,260024);b[d+702>>1]=g;b[d+704>>1]=h;return}function AB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0;if(!e){a=0;return a|0}if((b|0)==0|(d|0)==0){c[a>>2]=0;a=1;return a|0}f=+R(+(+(b|0)*+(d|0)/+(e|0)+.5));if(!(f<=2147483647.0&f>=-2147483648.0)){a=0;return a|0}c[a>>2]=~~f;a=1;return a|0}function BB(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0;do if(b){if((b|0)<0){OB(a,260144);b=1;break}if(b>>>0>536870798){OB(a,260176);b=1;break}if((c[a+748>>2]|0)>>>0>>0){OB(a,260224);b=1}else b=0}else{OB(a,260112);b=1}while(0);do if(d){if((d|0)<0){OB(a,260296);b=1;break}if((c[a+752>>2]|0)>>>0>>0){OB(a,260328);b=1}}else{OB(a,260264);b=1}while(0);switch(e|0){case 1:case 2:case 4:case 8:case 16:break;default:{OB(a,260368);b=1}}if((f|0)<0|(f|0)==1|(f|0)==5|(f|0)>6){OB(a,260400);b=1}if(!(!((f|0)==3&(e|0)>8)?!(((f|0)==2|(f|0)==4|(f|0)==6)&(e|0)<8):0)){OB(a,260432);b=1}if((g|0)>1){OB(a,260488);b=1}if(h){OB(a,260528);b=1}d=a+208|0;if((c[d>>2]&4096|0)!=0?(c[a+708>>2]|0)!=0:0)OB(a,265800);if(i){if(!(((i|0)==64?(c[a+708>>2]&4|0)!=0:0)?(j=c[d>>2]|0,(j&4096|0)==0&(f&-5|0)==2):0)){OB(a,260568);j=c[d>>2]|0;b=1}if(!(j&4096))k=b;else{OB(a,260600);LB(a,260632)}}else k=b;if((k|0)==1)LB(a,260632);else return}function CB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=c[e>>2]|0;h=c[f>>2]|0;a:do if(h>>>0>>0)while(1){switch(a[b+h>>0]|0){case 43:{i=4;break}case 45:{i=132;break}case 46:{i=16;break}case 101:case 69:{i=32;break}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:{i=264;break}case 48:{i=8;break}default:break a}b:do switch(i&60|g&3|0){case 33:{if(!(g&8))break a;g=g&448|2;break}case 6:{if(g&60)break a;g=g|4;break}case 8:{if(g&16)g=g&448|17;g=i|g|64;break}case 4:{if(g&60)break a;g=i|g;break}case 9:{g=g|i|64;break}case 16:{if(g&16)break a;if(!(g&8)){g=g&448|i|1;break b}else{g=i|g;break b}}case 10:{g=g|72;break}case 32:{if(!(g&8))break a;g=g&448|2;break}default:break a}while(0);h=h+1|0;if(h>>>0>=d>>>0)break a}while(0);c[e>>2]=g;c[f>>2]=h;return g>>>3&1|0}function DB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g+4|0;e=g;c[f>>2]=0;c[e>>2]=0;if(!(CB(b,d,f,e)|0)){f=0;i=g;return f|0}e=c[e>>2]|0;if((e|0)!=(d|0)?(a[b+e>>0]|0)!=0:0){f=0;i=g;return f|0}f=c[f>>2]|0;i=g;return f|0}function EB(a){a=a|0;var b=0.0;b=+R(+(1.0e10/+(a|0)+.5));if(!(b<=2147483647.0&b>=-2147483648.0)){a=0;return a|0}a=~~b;return a|0}function FB(a){a=a|0;return (a+-95e3|0)>>>0>1e4|0}function GB(a,b){a=a|0;b=b|0;var c=0.0;c=+R(+(1.0e15/+(a|0)/+(b|0)+.5));if(!(c<=2147483647.0&c>=-2147483648.0)){b=0;return b|0}b=~~c;return b|0}function HB(a,b){a=a|0;b=b|0;if((a|0)!=0&a>>>0<255){a=~~+R(+(+U(+(+(a|0)/255.0),+(+(b|0)*.00001))*255.0+.5))&255;return a|0}else{a=a&255;return a|0}return 0}function IB(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=(c|0)!=0;if((a[b+436>>0]|0)!=8)if(e&c>>>0<65535){b=~~+R(+(+U(+(+(c|0)/65535.0),+(+(d|0)*.00001))*65535.0+.5))&65535;return b|0}else{b=c&65535;return b|0}else{if(e&c>>>0<255)e=~~+R(+(+U(+(+(c|0)/255.0),+(+(d|0)*.00001))*255.0+.5))&255;else e=c&255;b=e&255;return b|0}return 0}function JB(a){a=a|0;var b=0,d=0,e=0,f=0;f=a+492|0;qC(a,c[f>>2]|0);c[f>>2]=0;f=a+496|0;b=c[f>>2]|0;if(b){d=8-(c[a+484>>2]|0)|0;e=1<>2]|0);d=d+1|0;b=c[f>>2]|0}while((d|0)<(e|0))}qC(a,b);c[f>>2]=0}f=a+500|0;qC(a,c[f>>2]|0);c[f>>2]=0;f=a+504|0;qC(a,c[f>>2]|0);c[f>>2]=0;f=a+508|0;b=c[f>>2]|0;if(b){d=8-(c[a+484>>2]|0)|0;e=1<>2]|0);d=d+1|0;b=c[f>>2]|0}while((d|0)<(e|0))}qC(a,b);c[f>>2]=0}f=a+512|0;b=c[f>>2]|0;if(!b)return;d=8-(c[a+484>>2]|0)|0;e=1<>2]|0);d=d+1|0;b=c[f>>2]|0}while((d|0)<(e|0))}qC(a,b);c[f>>2]=0;return}function KB(d,e){d=d|0;e=e|0;var f=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=d+492|0;if(!((c[g>>2]|0)==0?(c[d+496>>2]|0)==0:0)){OB(d,260656);JB(d)}if((e|0)>=9){if(!(a[d+435>>0]&2))e=a[d+519>>0]|0;else{e=a[d+516>>0]|0;q=a[d+517>>0]|0;e=(q&255)>(e&255)?q:e;q=a[d+518>>0]|0;e=(q&255)>(e&255)?q:e}if(e<<24>>24!=0&(e&255)<16)e=16-(e&255)&255;else e=0;o=d+216|0;k=c[o>>2]&67109888;q=(k|0)!=0&(e&255)<5?5:e;q=(q&255)>8?8:q&255;c[d+484>>2]=q;h=d+496|0;p=d+488|0;e=c[p>>2]|0;g=(e|0)>0;if(k){if(g){f=+R(+(+(e|0)*(+(c[d+824>>2]|0)*.00001)+.5));if(f<=2147483647.0&f>=-2147483648.0)f=+(~~f|0)*.00001;else f=0.0}else f=1.0;m=8-q|0;l=1<>2]=n;e=0;do{c[n+(e<<2)>>2]=sC(d,512)|0;e=e+1|0}while(e>>>0>>0);i=(1<>>q;j=0;g=0;while(1){e=j*257|0;h=e&65535;e=((((da(~~+R(+(+U(+(+(e+128|0)/65535.0),+f)*65535.0+.5))&65535,i)|0)+32768|0)>>>0)/65535|0)+1|0;if(g>>>0>>0)do{b[(c[n+((g&k)<<2)>>2]|0)+(g>>>m<<1)>>1]=h;g=g+1|0}while((g|0)!=(e|0));else e=g;j=j+1|0;if((j|0)==255)break;else g=e}g=l<<8;if(e>>>0>>0)do{b[(c[n+((e&k)<<2)>>2]|0)+(e>>>m<<1)>>1]=-1;e=e+1|0}while((e|0)!=(g|0))}else{if(g){f=+R(+(1.0e15/+(c[d+824>>2]|0)/+(e|0)+.5));if(f<=2147483647.0&f>=-2147483648.0)e=~~f;else e=0}else e=1e5;sP(d,h,q,e)}if(!(c[o>>2]&6291584))return;g=d+824|0;f=+R(+(1.0e10/+(c[g>>2]|0)+.5));if(f<=2147483647.0&f>=-2147483648.0)e=~~f;else e=0;sP(d,d+512|0,q,e);h=d+508|0;e=c[p>>2]|0;if((e|0)>0){f=+R(+(1.0e10/+(e|0)+.5));if(f<=2147483647.0&f>=-2147483648.0)e=~~f;else e=0}else e=c[g>>2]|0;sP(d,h,q,e);return}l=d+488|0;e=c[l>>2]|0;if((e|0)>0){f=+R(+(1.0e15/+(c[d+824>>2]|0)/+(e|0)+.5));if(f<=2147483647.0&f>=-2147483648.0)e=~~f;else e=0}else e=1e5;h=sC(d,256)|0;c[g>>2]=h;if((e+-95e3|0)>>>0>1e4){f=+(e|0)*.00001;g=0;do{if((g|0)!=0&g>>>0<255)e=~~+R(+(+U(+(+(g|0)/255.0),+f)*255.0+.5))&255;else e=g&255;a[h+g>>0]=e;g=g+1|0}while((g|0)!=256)}else{e=0;do{a[h+e>>0]=e;e=e+1|0}while((e|0)!=256)}if(!(c[d+216>>2]&6291584))return;i=d+824|0;f=+R(+(1.0e10/+(c[i>>2]|0)+.5));if(f<=2147483647.0&f>=-2147483648.0)e=~~f;else e=0;h=sC(d,256)|0;c[d+504>>2]=h;if((e+-95e3|0)>>>0>1e4){f=+(e|0)*.00001;g=0;do{if((g|0)!=0&g>>>0<255)e=~~+R(+(+U(+(+(g|0)/255.0),+f)*255.0+.5))&255;else e=g&255;a[h+g>>0]=e;g=g+1|0}while((g|0)!=256)}else{e=0;do{a[h+e>>0]=e;e=e+1|0}while((e|0)!=256)}g=d+500|0;e=c[l>>2]|0;if((e|0)>0){f=+R(+(1.0e10/+(e|0)+.5));if(f<=2147483647.0&f>=-2147483648.0)e=~~f;else e=0}else e=c[i>>2]|0;h=sC(d,256)|0;c[g>>2]=h;if((e+-95e3|0)>>>0<=1e4){e=0;do{a[h+e>>0]=e;e=e+1|0}while((e|0)!=256);return}f=+(e|0)*.00001;g=0;do{if((g|0)!=0&g>>>0<255)e=~~+R(+(+U(+(+(g|0)/255.0),+f)*255.0+.5))&255;else e=g&255;a[h+g>>0]=e;g=g+1|0}while((g|0)!=256);return}function LB(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;if((a|0)!=0?(d=c[a+168>>2]|0,(d|0)!=0):0)Cd[d&255](a,b);d=c[p>>2]|0;c[e>>2]=(b|0)!=0?b:261024;Uc(d|0,261e3,e|0)|0;pd(10,d|0)|0;aC(a,1)}function MB(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;if(!((b|0)!=0&d>>>0>>0)){b=d;return b|0}if((e|0)!=0?(f=a[e>>0]|0,g=c+-1|0,f<<24>>24!=0&g>>>0>d>>>0):0)while(1){e=e+1|0;c=d+1|0;a[b+d>>0]=f;f=a[e>>0]|0;if(!(f<<24>>24!=0&c>>>0>>0)){d=c;break}else d=c}a[b+d>>0]=0;b=d;return b|0}function NB(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=c+-1|0;a[h>>0]=0;if(h>>>0<=b>>>0){b=h;return b|0}if((d|0)==2){f=c;g=0;c=1;while(1){if(!((e|0)!=0|(g|0)<(c|0))){f=h;l=20;break}f=f+-2|0;a[f>>0]=a[260832+((e>>>0)%10|0)>>0]|0;if(f>>>0>b>>>0){l=h;e=(e>>>0)/10|0;h=f;g=g+1|0;c=2;f=l}else{l=20;break}}if((l|0)==20)return f|0}else if((d|0)==5){f=h;g=0;c=1;h=0;while(1){if(!((e|0)!=0|(g|0)<(c|0))){l=20;break}c=(e>>>0)%10|0;if(c|h){f=f+-1|0;a[f>>0]=a[260832+c>>0]|0;h=1}c=(e>>>0)/10|0;g=g+1|0;do if((g|0)==5&f>>>0>b>>>0){if(h){f=f+-1|0;a[f>>0]=46;break}if(e>>>0<10){f=f+-1|0;a[f>>0]=48;c=0;h=0}else h=0}while(0);if(f>>>0<=b>>>0){l=20;break}else{e=c;c=5}}if((l|0)==20)return f|0}else{c=0;g=1;while(1){if(!((e|0)!=0|(c|0)<(g|0))){f=h;l=20;break}if((d|0)==3){j=g;l=18}else if((d|0)==4){j=2;l=18}else if((d|0)==1){f=h+-1|0;a[f>>0]=a[260832+((e>>>0)%10|0)>>0]|0;i=(e>>>0)/10|0;k=g}else{i=0;f=h;k=g}if((l|0)==18){l=0;f=h+-1|0;a[f>>0]=a[260832+(e&15)>>0]|0;i=e>>>4;k=j}if(f>>>0>b>>>0){e=i;h=f;c=c+1|0;g=k}else{l=20;break}}if((l|0)==20)return f|0}return 0}function OB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(b){a:do if((a[d>>0]|0)==35){f=1;while(1){e=f+1|0;if((a[d+f>>0]|0)==32){e=f;break a}if((e|0)<15)f=e;else break}}else e=0;while(0);f=c[b+172>>2]|0;if(f){Cd[f&255](b,d+e|0);i=h;return}}else e=0;b=c[p>>2]|0;c[g>>2]=d+e;Uc(b|0,260976,g|0)|0;pd(10,b|0)|0;i=h;return}function PB(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=c+-1|0;if(g>>>0>7|(b+(g<<5)|0)==0)return;if((d|0)!=0?(e=a[d>>0]|0,e<<24>>24!=0):0){f=0;while(1){d=d+1|0;c=f+1|0;a[b+(g<<5)+f>>0]=e;e=a[d>>0]|0;if(!(e<<24>>24!=0&c>>>0<31))break;else f=c}}else c=0;a[b+(g<<5)+c>>0]=0;return}function QB(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+32|0;g=j;f=(e|0)<0;d=NB(g,g+24|0,d,f?0-e|0:e)|0;if(f&d>>>0>g>>>0){d=d+-1|0;a[d>>0]=45}g=c+-1|0;if(g>>>0>7|(b+(g<<5)|0)==0){i=j;return}if((d|0)!=0?(h=a[d>>0]|0,h<<24>>24!=0):0){f=0;c=d;e=h;while(1){c=c+1|0;d=f+1|0;a[b+(g<<5)+f>>0]=e;e=a[c>>0]|0;if(!(e<<24>>24!=0&d>>>0<31))break;else f=d}}else d=0;a[b+(g<<5)+d>>0]=0;i=j;return}function RB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0;q=i;i=i+208|0;o=q;n=q+8|0;l=(d|0)!=0;g=e;e=0;while(1){f=a[g>>0]|0;if(!(f<<24>>24))break;if(l&f<<24>>24==64){j=g+1|0;f=a[j>>0]|0;if(f<<24>>24){h=0;while(1)if((h|0)!=9?(a[260856+h>>0]|0)!=f<<24>>24:0)h=h+1|0;else break;if((h|0)<8){k=d+(h<<5)+32|0;a:do if(e>>>0<191){j=e;f=d+(h<<5)|0;while(1){h=a[f>>0]|0;if(!(h<<24>>24!=0&f>>>0>>0)){e=j;break a}e=j+1|0;a[n+j>>0]=h;if(e>>>0<191){j=e;f=f+1|0}else break}}while(0);f=g+2|0}else{g=j;m=13}}else{f=64;m=13}}else m=13;if((m|0)==13){m=0;a[n+e>>0]=f;f=g+1|0;e=e+1|0}if(e>>>0<191)g=f;else break}a[n+e>>0]=0;if(b){b:do if((a[n>>0]|0)==35){f=1;while(1){e=f+1|0;if((a[n+f>>0]|0)==32){e=f;break b}if((e|0)<15)f=e;else break}}else e=0;while(0);f=c[b+172>>2]|0;if(f){Cd[f&255](b,n+e|0);i=q;return}}else e=0;b=c[p>>2]|0;c[o>>2]=n+e;Uc(b|0,260976,o|0)|0;pd(10,b|0)|0;i=q;return}function SB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;e=(c[b+208>>2]&32768|0)!=0;if(!(c[b+212>>2]&1048576)){if(!e)LB(b,d);if(!(c[b+376>>2]|0))LB(b,d);else UB(b,d)}if(e?(c[b+376>>2]|0)!=0:0){TB(b,d);i=h;return}if(b){a:do if((a[d>>0]|0)==35){f=1;while(1){e=f+1|0;if((a[d+f>>0]|0)==32){e=f;break a}if((e|0)<15)f=e;else break}}else e=0;while(0);f=c[b+172>>2]|0;if(f){Cd[f&255](b,d+e|0);i=h;return}}else e=0;b=c[p>>2]|0;c[g>>2]=d+e;Uc(b|0,260976,g|0)|0;pd(10,b|0)|0;i=h;return}function TB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+224|0;g=h;f=h+4|0;if(!b){f=c[p>>2]|0;c[g>>2]=d;Uc(f|0,260976,g|0)|0;pd(10,f|0)|0;i=h;return}tP(c[b+376>>2]|0,f,d);a:do if((a[f>>0]|0)==35){e=1;while(1){d=e+1|0;if((a[f+e>>0]|0)==32){d=e;break a}if((d|0)<15)e=d;else break}}else d=0;while(0);e=c[b+172>>2]|0;d=f+d|0;if(!e){f=c[p>>2]|0;c[g>>2]=d;Uc(f|0,260976,g|0)|0;pd(10,f|0)|0;i=h;return}else{Cd[e&255](b,d);i=h;return}}function UB(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+224|0;if(!a)LB(0,b);else{tP(c[a+376>>2]|0,d,b);LB(a,d)}}function VB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(!(c[b+212>>2]&2097152))LB(b,d);a:do if((a[d>>0]|0)==35){f=1;while(1){e=f+1|0;if((a[d+f>>0]|0)==32){e=f;break a}if((e|0)<15)f=e;else break}}else e=0;while(0);f=c[b+172>>2]|0;e=d+e|0;if(!f){d=c[p>>2]|0;c[g>>2]=e;Uc(d|0,260976,g|0)|0;pd(10,d|0)|0;i=h;return}else{Cd[f&255](b,e);i=h;return}}function WB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(!(c[b+212>>2]&4194304))LB(b,d);a:do if((a[d>>0]|0)==35){f=1;while(1){e=f+1|0;if((a[d+f>>0]|0)==32){e=f;break a}if((e|0)<15)f=e;else break}}else e=0;while(0);f=c[b+172>>2]|0;e=d+e|0;if(!f){d=c[p>>2]|0;c[g>>2]=e;Uc(d|0,260976,g|0)|0;pd(10,d|0)|0;i=h;return}else{Cd[f&255](b,e);i=h;return}}function XB(a,b){a=a|0;b=b|0;if(!(c[a+212>>2]&1048576))UB(a,b);else{TB(a,b);return}}function YB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(c[b+208>>2]&32768){if((e|0)<2){TB(b,d);i=h;return}if(!(c[b+212>>2]&1048576))UB(b,d);TB(b,d);i=h;return}f=c[b+212>>2]|0;if((e|0)<1){if(!(f&2097152))LB(b,d);a:do if((a[d>>0]|0)==35){e=1;while(1){f=e+1|0;if((a[d+e>>0]|0)==32){f=e;break a}if((f|0)<15)e=f;else break}}else f=0;while(0);e=c[b+172>>2]|0;f=d+f|0;if(!e){d=c[p>>2]|0;c[g>>2]=f;Uc(d|0,260976,g|0)|0;pd(10,d|0)|0;i=h;return}else{Cd[e&255](b,f);i=h;return}}else{if(!(f&4194304))LB(b,d);b:do if((a[d>>0]|0)==35){e=1;while(1){f=e+1|0;if((a[d+e>>0]|0)==32){f=e;break b}if((f|0)<15)e=f;else break}}else f=0;while(0);e=c[b+172>>2]|0;f=d+f|0;if(!e){d=c[p>>2]|0;c[g>>2]=f;Uc(d|0,260976,g|0)|0;pd(10,d|0)|0;i=h;return}else{Cd[e&255](b,f);i=h;return}}}function ZB(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=i;i=i+224|0;d=g+0|0;e=260872|0;f=d+24|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));a:do if(!c)d=0;else{d=0;do{e=a[c+d>>0]|0;if(!(e<<24>>24))break a;a[g+(d+24)>>0]=e;d=d+1|0}while((d|0)<195)}while(0);a[g+(d+24)>>0]=0;LB(b,g)}function _B(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;if(!a){b=0;i=k;return b|0}f=a+160|0;e=c[f>>2]|0;g=a+164|0;do if(!e){c[g>>2]=0;if(d>>>0<157){c[f>>2]=a;e=a;break}e=wC(a,d)|0;c[f>>2]=e;if(!e){b=0;i=k;return b|0}else{c[g>>2]=d;break}}else{f=c[g>>2]|0;if(!f)if((e|0)==(a|0))h=156;else LB(a,260904);else h=f;if((h|0)!=(d|0)){e=c[a+172>>2]|0;if(!e){b=c[p>>2]|0;c[j>>2]=260936;Uc(b|0,260976,j|0)|0;pd(10,b|0)|0;b=0;i=k;return b|0}else{Cd[e&255](a,260936);b=0;i=k;return b|0}}}while(0);c[a+156>>2]=b;b=e;i=k;return b|0}function $B(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+160|0;k=4;j=qea(40)|0;c[j>>2]=0;h=l;if(!a){rea(j|0);i=l;return}f=a+160|0;g=c[f>>2]|0;e=a+164|0;a:do if((g|0)!=0?!((c[e>>2]|0)==0|(g|0)==(a|0)):0){j=Afa(h,1,j|0,k|0)|0;k=H;s=0;b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,j|0,k|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else b=0;while(1){if(b)break a;c[f>>2]=h;c[e>>2]=0;c[a+156>>2]=74;s=0;la(79,a|0,g|0);b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,j|0,k|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else break}}while(0);c[e>>2]=0;c[f>>2]=0;c[a+156>>2]=0;rea(j|0);i=l;return}function aC(a,b){a=a|0;b=b|0;var d=0,e=0;if(((a|0)!=0?(d=c[a+156>>2]|0,(d|0)!=0):0)?(e=c[a+160>>2]|0,(e|0)!=0):0)Cd[d&255](e,b);Gc()}function bC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(!a)return;c[a+176>>2]=b;c[a+168>>2]=d;c[a+172>>2]=e;return}function cC(a,b,d){a=a|0;b=b|0;d=d|0;if(!((a|0)!=0&(b|0)!=0)){a=0;return a|0}a=c[b+8>>2]&d;return a|0}function dC(b,c){b=b|0;c=c|0;if(!((b|0)!=0&(c|0)!=0)){b=0;return b|0}b=a[c+24>>0]|0;return b|0}function eC(b,c){b=b|0;c=c|0;if(!((b|0)!=0&(c|0)!=0)){b=0;return b|0}b=a[c+25>>0]|0;return b|0}function fC(b,c){b=b|0;c=c|0;if(!((b|0)!=0&(c|0)!=0)){b=0;return b|0}b=a[c+29>>0]|0;return b|0}function gC(a,b,d){a=a|0;b=b|0;d=d|0;if(!((a|0)!=0&(b|0)!=0)){a=0;return a|0}if(!((d|0)!=0?(c[b+8>>2]&32|0)!=0:0)){a=0;return a|0}c[d>>2]=b+170;a=32;return a|0}function hC(a,d,e){a=a|0;d=d|0;e=e|0;if(!((a|0)!=0&(d|0)!=0)){a=0;return a|0}if(!((e|0)!=0?(b[d+114>>1]&1)!=0:0)){a=0;return a|0}h[e>>3]=+(c[d+40>>2]|0)*.00001;a=1;return a|0}function iC(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;if(!((a|0)!=0&(b|0)!=0)){h=0;return h|0}if(!(((e|0)!=0?(c[b+8>>2]&4096|0)!=0:0)&(f|0)!=0&(g|0)!=0&(h|0)!=0)){h=0;return h|0}c[e>>2]=c[b+116>>2];e=c[b+120>>2]|0;c[g>>2]=e;c[h>>2]=(d[e+1>>0]|0)<<16|(d[e>>0]|0)<<24|(d[e+2>>0]|0)<<8|(d[e+3>>0]|0);c[f>>2]=0;h=4096;return h|0}function jC(b,e,f,g,h,i,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0;if((b|0)==0|(e|0)==0|(f|0)==0|(g|0)==0|(h|0)==0|(i|0)==0){b=0;return b|0}o=c[e>>2]|0;c[f>>2]=o;n=c[e+4>>2]|0;c[g>>2]=n;m=d[e+24>>0]|0;c[h>>2]=m;g=d[e+25>>0]|0;c[i>>2]=g;if(k)c[k>>2]=d[e+26>>0];if(l)c[l>>2]=d[e+27>>0];f=a[e+28>>0]|0;if(j)c[j>>2]=f&255;BB(b,o,n,m,g,f&255,d[e+26>>0]|0,d[e+27>>0]|0);b=1;return b|0}function kC(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;if(!((a|0)!=0&(b|0)!=0)){g=0;return g|0}if(!(c[b+8>>2]&128)){g=0;return g|0}if(!e)a=0;else{c[e>>2]=c[b+192>>2];a=128}if(f){c[f>>2]=c[b+196>>2];a=128}if(!g){g=a;return g|0}c[g>>2]=d[b+200>>0];g=128;return g|0}function lC(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;if(!((a|0)!=0&(b|0)!=0)){d=0;return d|0}if(!((d|0)!=0?(c[b+8>>2]&8|0)!=0:0)){d=0;return d|0}c[d>>2]=c[b+16>>2];c[f>>2]=e[b+20>>1];d=8;return d|0}function mC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if((a|0)!=0&(b|0)!=0?(f=c[b+128>>2]|0,(f|0)>0):0){if(d)c[d>>2]=c[b+136>>2];if(!e){d=f;return d|0}c[e>>2]=f;d=f;return d|0}if(!e){d=0;return d|0}c[e>>2]=0;d=0;return d|0}function nC(a,b,d){a=a|0;b=b|0;d=d|0;if(!((a|0)!=0&(b|0)!=0)){a=0;return a|0}if(!((d|0)!=0?(c[b+8>>2]&512|0)!=0:0)){a=0;return a|0}c[d>>2]=b+140;a=512;return a|0}function oC(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;if(!((b|0)!=0&(d|0)!=0)){g=0;return g|0}if(!(c[d+8>>2]&16)){g=0;return g|0}if((a[d+25>>0]|0)==3){if(!f)b=0;else{c[f>>2]=c[d+156>>2];b=16}if(h)c[h>>2]=d+160}else{if(!h)b=0;else{c[h>>2]=d+160;b=16}if(f)c[f>>2]=0}if(!g){g=b;return g|0}c[g>>2]=e[d+22>>1];g=16;return g|0}function pC(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+912|0;d=e;if(!a){i=e;return}qfa(d|0,a|0,900)|0;sfa(a|0,0,900)|0;b=c[d+724>>2]|0;if(!b)rea(a);else Cd[b&255](d,a);$B(d);i=e;return}function qC(a,b){a=a|0;b=b|0;var d=0;if((a|0)==0|(b|0)==0)return;d=c[a+724>>2]|0;if(!d){rea(b);return}else{Cd[d&255](a,b);return}}function rC(a,b){a=a|0;b=b|0;var d=0;if(!a){b=0;return b|0}if(!b)LB(a,313360);d=c[a+720>>2]|0;if(!d)d=qea(b)|0;else d=Pd[d&511](a,b)|0;if(!d)LB(a,313360);sfa(d|0,0,b|0)|0;b=d;return b|0}function sC(a,b){a=a|0;b=b|0;var d=0;if(!a){a=0;return a|0}if(!b)LB(a,313360);d=c[a+720>>2]|0;if(!d)d=qea(b)|0;else d=Pd[d&511](a,b)|0;if(!d)LB(a,313360);else{a=d;return a|0}return 0}function tC(a,b){a=a|0;b=b|0;var d=0;if(!b){b=0;return b|0}if((a|0)!=0?(d=c[a+720>>2]|0,(d|0)!=0):0){b=Pd[d&511](a,b)|0;return b|0}b=qea(b)|0;return b|0}function uC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((b|0)<1|(d|0)==0)LB(a,261040);if((4294967295/(d>>>0)|0)>>>0>>0){e=0;return e|0}d=da(d,b)|0;if(!d){e=0;return e|0}if((a|0)!=0?(e=c[a+720>>2]|0,(e|0)!=0):0){e=Pd[e&511](a,d)|0;return e|0}e=qea(d)|0;return e|0}function vC(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;if((e|0)<1|(f|0)==0|(d|0)<0)LB(a,261072);i=(d|0)>0;if((b|0)==0&i)LB(a,261072);if((2147483647-d|0)<(e|0)){f=0;return f|0}g=e+d|0;if((4294967295/(f>>>0)|0)>>>0>>0){f=0;return f|0}g=da(g,f)|0;if(!g){f=0;return f|0}if((a|0)!=0?(h=c[a+720>>2]|0,(h|0)!=0):0)h=Pd[h&511](a,g)|0;else h=qea(g)|0;if(!h){f=0;return f|0}g=da(f,d)|0;if(i)qfa(h|0,b|0,g|0)|0;sfa(h+g|0,0,da(f,e)|0)|0;f=h;return f|0}function wC(a,b){a=a|0;b=b|0;var d=0;if(!a){a=0;return a|0}if(b){d=c[a+720>>2]|0;if(!d)d=qea(b)|0;else d=Pd[d&511](a,b)|0;if(d){a=d;return a|0}}OB(a,313360);a=0;return a|0}function xC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(!a)return;c[a+716>>2]=b;c[a+720>>2]=d;c[a+724>>2]=e;return}function yC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;d=gB(a,b,d,e,0,0,0)|0;if(!d)return d|0;c[d+208>>2]=32768;c[d+796>>2]=8192;a=d+212|0;c[a>>2]=c[a>>2]|3145728;HC(d,0,0);return d|0}function zC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((b|0)==0|(d|0)==0)return;PC(b,d);g=b+376|0;h=b+208|0;i=b+435|0;a:while(1){e=QC(b)|0;j=c[g>>2]|0;k=(j|0)==1229209940;f=c[h>>2]|0;if(!k){if(f&4)c[h>>2]=f|8}else{if(!(f&1)){f=5;break}if((a[i>>0]|0)==3&(f&2|0)==0){f=7;break}if(f&8){XB(b,261168);f=c[h>>2]|0}c[h>>2]=f|4}if((j|0)==1229278788){UC(b,d,e);continue}else if((j|0)==1229472850){SC(b,d,e);continue}else{f=nB(b,j)|0;if(f){kD(b,d,e,f);if((j|0)!=1347179589)if(k){f=20;break}else continue;else{c[h>>2]=c[h>>2]|2;continue}}if((j|0)==1347179589){TC(b,d,e);continue}if(k){f=24;break}do if((j|0)==1732332865){VC(b,d,e);continue a}else if((j|0)==1767135348){jD(b,d,e);continue a}else if((j|0)==1766015824){ZC(b,d,e);continue a}else if((j|0)==1866876531){dD(b,d,e);continue a}else if((j|0)==1665684045){XC(b,d,e);continue a}else if((j|0)==1934772034){YC(b,d,e);continue a}else if((j|0)==1883455820){eD(b,d,e);continue a}else if((j|0)==1883789683){cD(b,d,e);continue a}else if((j|0)==1933723988){WC(b,d,e);continue a}else if((j|0)==1934642260){_C(b,d,e);continue a}else if((j|0)==1951551059){$C(b,d,e);continue a}else if((j|0)==1933787468){fD(b,d,e);continue a}else if((j|0)==2052348020){iD(b,d,e);continue a}else if((j|0)==1649100612){aD(b,d,e);continue a}else if((j|0)==1749635924){bD(b,d,e);continue a}else if((j|0)==1950701684){hD(b,d,e);continue a}else if((j|0)==1950960965){gD(b,d,e);continue a}else{kD(b,d,e,0);continue a}while(0)}}if((f|0)==5)UB(b,261104);else if((f|0)==7)UB(b,261136);else if((f|0)==20){c[b+408>>2]=0;return}else if((f|0)==24){c[b+408>>2]=e;return}}function AC(a,b){a=a|0;b=b|0;if(!a)return;if(!(c[a+212>>2]&64)){rD(a);NC(a,b);return}else{WB(a,261192);return}}function BC(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+16|0;A=B;if(!e){i=B;return}if(!(c[e+212>>2]&64))rD(e);l=c[e+368>>2]|0;c[A>>2]=l;o=A+8|0;a[o>>0]=a[e+435>>0]|0;a[A+9>>0]=a[e+436>>0]|0;a[A+10>>0]=a[e+439>>0]|0;y=a[e+438>>0]|0;x=A+11|0;a[x>>0]=y;h=y&255;if((y&255)>7)m=da(h>>>3,l)|0;else m=((da(l,h)|0)+7|0)>>>3;k=A+4|0;c[k>>2]=m;y=e+372|0;h=c[y>>2]|0;v=e+432|0;a:do if((a[v>>0]|0)!=0?(c[e+216>>2]&2|0)!=0:0)switch(d[e+433>>0]|0){case 2:{if((h&7|0)==4)break a;if(!((g|0)==0|(h&4|0)==0))lD(e,g,1);qD(e);i=B;return}case 3:{if((h&3|0)==0?(c[e+348>>2]|0)>>>0>=3:0)break a;if(g)lD(e,g,1);qD(e);i=B;return}case 5:{if((h&1|0)==0?(c[e+348>>2]|0)>>>0>=2:0)break a;if(g)lD(e,g,1);qD(e);i=B;return}case 0:{if(!(h&7))break a;if(g)lD(e,g,1);qD(e);i=B;return}case 1:{if((h&7|0)==0?(c[e+348>>2]|0)>>>0>=5:0)break a;if(g)lD(e,g,1);qD(e);i=B;return}case 4:{if((h&3|0)==2)break a;if(!((g|0)==0|(h&2|0)==0))lD(e,g,1);qD(e);i=B;return}default:{if(h&1)break a;qD(e);i=B;return}}while(0);if(!(c[e+208>>2]&4))LB(e,261320);w=e+384|0;oD(e,c[w>>2]|0,m+1|0);h=c[w>>2]|0;l=a[h>>0]|0;j=l&255;do if(l<<24>>24)if((l&255)<5){n=e+380|0;nD(e,A,h+1|0,(c[n>>2]|0)+1|0,j);p=c[k>>2]|0;q=c[w>>2]|0;break}else LB(e,261360);else{n=e+380|0;p=m;q=h}while(0);qfa(c[n>>2]|0,q|0,p+1|0)|0;do if(((c[e+708>>2]&4|0)!=0?(a[e+712>>0]|0)==64:0)?(t=(c[w>>2]|0)+1|0,u=c[A>>2]|0,r=b[o>>1]|0,s=r&255,(s&2)!=0):0){h=(r&65535)>>>8&255;if(h<<24>>24==8){if(s<<24>>24==6)l=4;else if(s<<24>>24==2)l=3;else break;if(!u)break;else{j=0;h=t}while(1){s=d[h+1>>0]|0;a[h>>0]=s+(d[h>>0]|0);t=h+2|0;a[t>>0]=(d[t>>0]|0)+s;j=j+1|0;if((j|0)==(u|0))break;else h=h+l|0}}else if(h<<24>>24==16){if(s<<24>>24==2)l=6;else if(s<<24>>24==6)l=8;else break;if(!u)break;else{j=0;h=t}while(1){o=h+1|0;s=d[h+2>>0]<<8|d[h+3>>0];r=h+4|0;t=h+5|0;m=s+(d[h>>0]<<8|d[o>>0])|0;s=(d[r>>0]<<8|d[t>>0])+s|0;a[h>>0]=m>>>8;a[o>>0]=m;a[r>>0]=s>>>8;a[t>>0]=s;j=j+1|0;if((j|0)==(u|0))break;else h=h+l|0}}else break}while(0);j=e+216|0;if(c[j>>2]|0)OC(e,A);k=e+443|0;l=a[k>>0]|0;h=a[x>>0]|0;if(!(l<<24>>24)){a[k>>0]=h;if((h&255)>(d[e+442>>0]|0))LB(e,261392)}else if(l<<24>>24!=h<<24>>24)LB(e,261416);if((a[v>>0]|0)!=0?(z=c[j>>2]|0,(z&2|0)!=0):0){h=a[e+433>>0]|0;if((h&255)<6)mD(A,(c[w>>2]|0)+1|0,h&255,z);if(g)lD(e,g,1);if(f)lD(e,f,0)}else{if(f)lD(e,f,-1);if(g)lD(e,g,-1)}qD(e);h=c[e+544>>2]|0;if(!h){i=B;return}Ud[h&255](e,c[y>>2]|0,d[e+433>>0]|0);i=B;return}function CC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(!b)return;e=b+212|0;do if(!(c[e>>2]&64)){f=MD(b)|0;if(!(c[e>>2]&64)){rD(b);break}else{WB(b,261256);break}}else{if((a[b+432>>0]|0)!=0?(c[b+216>>2]&2|0)==0:0){OB(b,261464);c[b+356>>2]=c[b+352>>2]}f=MD(b)|0}while(0);e=c[b+352>>2]|0;if((f|0)<=0)return;if(!e){e=0;do e=e+1|0;while((e|0)!=(f|0));return}else h=0;do{g=0;i=d;while(1){BC(b,c[i>>2]|0,0);g=g+1|0;if((g|0)==(e|0))break;else i=i+4|0}h=h+1|0}while((h|0)!=(f|0));return}function DC(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!b)return;if(!(nB(b,1229209940)|0))pD(b);if((a[b+435>>0]|0)==3?(c[b+424>>2]|0)>(e[b+420>>1]|0):0)SB(b,261536);f=b+376|0;g=(d|0)==0;h=b+208|0;do{i=QC(b)|0;j=c[f>>2]|0;a:do if((j|0)==1229278788)UC(b,d,i);else if((j|0)==1229472850)SC(b,d,i);else{if(g){RC(b,i)|0;break}k=nB(b,j)|0;l=(j|0)==1229209940;if(k){do if(l){if((i|0)==0?(c[h>>2]&8192|0)==0:0)break;SB(b,261168)}while(0);kD(b,d,i,k);if((j|0)!=1347179589)break;c[h>>2]=c[h>>2]|2;break}if(l){if(!((i|0)==0?(c[h>>2]&8192|0)==0:0))SB(b,261168);RC(b,i)|0;break}do if((j|0)==1665684045){XC(b,d,i);break a}else if((j|0)==1934642260){_C(b,d,i);break a}else if((j|0)==2052348020){iD(b,d,i);break a}else if((j|0)==1933787468){fD(b,d,i);break a}else if((j|0)==1732332865){VC(b,d,i);break a}else if((j|0)==1883455820){eD(b,d,i);break a}else if((j|0)==1950701684){hD(b,d,i);break a}else if((j|0)==1951551059){$C(b,d,i);break a}else if((j|0)==1767135348){jD(b,d,i);break a}else if((j|0)==1934772034){YC(b,d,i);break a}else if((j|0)==1749635924){bD(b,d,i);break a}else if((j|0)==1347179589){TC(b,d,i);break a}else if((j|0)==1933723988){WC(b,d,i);break a}else if((j|0)==1649100612){aD(b,d,i);break a}else if((j|0)==1766015824){ZC(b,d,i);break a}else if((j|0)==1950960965){gD(b,d,i);break a}else if((j|0)==1866876531){dD(b,d,i);break a}else if((j|0)==1883789683){cD(b,d,i);break a}else{kD(b,d,i,0);break a}while(0)}while(0)}while((c[h>>2]&16|0)==0);return}function EC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(!a)return;e=c[a>>2]|0;if(!e)return;iB(e,d);iB(e,b);c[a>>2]=0;JB(e);a=e+728|0;qC(e,c[a>>2]|0);c[a>>2]=0;a=e+804|0;qC(e,c[a>>2]|0);c[a>>2]=0;a=e+788|0;qC(e,c[a>>2]|0);c[a>>2]=0;a=e+612|0;qC(e,c[a>>2]|0);c[a>>2]=0;a=e+616|0;qC(e,c[a>>2]|0);c[a>>2]=0;a=e+676|0;d=c[a>>2]|0;if(d&4096){d=e+416|0;cB(e,c[d>>2]|0);c[d>>2]=0;d=c[a>>2]|0}b=d&-4097;c[a>>2]=b;if(!(d&8192))d=b;else{d=e+528|0;qC(e,c[d>>2]|0);c[d>>2]=0;d=c[a>>2]|0}c[a>>2]=d&-8193;BH(e+224|0)|0;a=e+568|0;qC(e,c[a>>2]|0);c[a>>2]=0;a=e+772|0;qC(e,c[a>>2]|0);c[a>>2]=0;a=e+696|0;qC(e,c[a>>2]|0);c[a>>2]=0;pC(e);return}function FC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+184>>2]|0;if(!e)LB(a,261584);else{Ud[e&255](a,b,d);return}}function GC(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)return;if((Na(b|0,1,d|0,c[a+188>>2]|0)|0)==(d|0))return;else LB(a,261616)}function HC(a,b,d){a=a|0;b=b|0;d=d|0;if(!a)return;c[a+188>>2]=b;c[a+184>>2]=(d|0)==0?46:d;b=a+180|0;if(c[b>>2]|0){c[b>>2]=0;OB(a,265728)}c[a+472>>2]=0;return}function IC(a,d,f){a=a|0;d=+d;f=+f;var g=0,h=0,i=0,j=0,k=0,l=0;if(d>0.0&d<128.0)d=d*1.0e5;d=+R(+(d+.5));if(d>2147483647.0|d<-2147483647.0)ZB(a,262e3);h=~~d;if(f>0.0&f<128.0)d=f*1.0e5;else d=f;d=+R(+(d+.5));if(d>2147483647.0|d<-2147483647.0)ZB(a,262e3);j=~~d;if(!a)return;k=a+212|0;i=c[k>>2]|0;if(i&64){WB(a,262016);return}g=i|16384;c[k>>2]=g;if((h|0)==-5e4|(h|0)==-2)h=151724;else if((h|0)==-1e5|(h|0)==-1){g=i|20480;c[k>>2]=g;h=22e4}if((j|0)==-1e5|(j|0)==-1){c[k>>2]=g|4096;l=45455}else if(!((j|0)==-5e4|(j|0)==-2))if((j|0)<1)LB(a,261632);else l=j;else l=65909;if((h|0)<1)LB(a,261672);c[a+824>>2]=l;k=a+898|0;b[k>>1]=e[k>>1]|0|1;c[a+488>>2]=h;return}function JC(a){a=a|0;var b=0,d=0;if(!a)return;b=a+212|0;d=c[b>>2]|0;if(!(d&64)){c[b>>2]=d|16384;a=a+216|0;c[a>>2]=c[a>>2]|4096;return}else{WB(a,262016);return}}function KC(a){a=a|0;var b=0,d=0;if(!a)return;b=a+212|0;d=c[b>>2]|0;if(!(d&64)){c[b>>2]=d|16384;a=a+216|0;c[a>>2]=c[a>>2]|33558528;return}else{WB(a,262016);return}}function LC(a){a=a|0;var b=0,d=0;if(!a)return;b=a+212|0;d=c[b>>2]|0;if(!(d&64)){c[b>>2]=d|16384;a=a+216|0;c[a>>2]=c[a>>2]|20480;return}else{WB(a,262016);return}} -function Li(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+16|0;l=q;if(!(a[b+21>>0]|0)){e=b+28|0;if(!((c[b+8>>2]|0)==(c[e>>2]|0)?(c[b+12>>2]|0)==(c[b+32>>2]|0):0))h=22;if((h|0)==22?(f=Ii(b,e)|0,(f|0)!=0):0){b=f;i=q;return b|0}e=c[b+24>>2]|0;c[b+4>>2]=e;e=mi(c[b>>2]|0,e)|0;if(e){e=e>>>31;f=b+36|0;g=Dj(b,e,c[f>>2]|0)|0;if(g){b=g;i=q;return b|0}e=Ej(b,e^1,c[f>>2]|0)|0;if(e){b=e;i=q;return b|0}}e=b+84|0;f=c[e>>2]|0;g=b+64|0;h=c[g>>2]|0;if(h>>>0>(f+1|0)>>>0){l=h+-1|0;c[g>>2]=l;p=c[b+72>>2]|0;l=p+(l<<3)|0;o=c[l+4>>2]|0;p=p+(f<<3)|0;c[p>>2]=c[l>>2];c[p+4>>2]=o;p=b+76|0;o=(c[p>>2]|0)+f|0;a[o>>0]=d[o>>0]|4;p=(c[p>>2]|0)+(h+-2)|0;a[p>>0]=d[p>>0]|8}else c[g>>2]=f;c[e>>2]=-1;a[b+80>>0]=0;k=b+116|0;j=c[k>>2]|0;e=b+96|0;h=c[e>>2]|0;f=j+1|0;if(h>>>0>f>>>0){o=h+-1|0;c[e>>2]=o;e=b+104|0;g=c[e>>2]|0;o=g+(o<<3)|0;p=c[o+4>>2]|0;g=g+(j<<3)|0;c[g>>2]=c[o>>2];c[g+4>>2]=p;e=c[e>>2]|0;g=h+-2|0;if((f|0)<(g|0)){h=e+(f<<3)|0;e=e+(g<<3)|0;do{o=h;l=c[o>>2]|0;o=c[o+4>>2]|0;m=e;n=c[m+4>>2]|0;p=h;c[p>>2]=c[m>>2];c[p+4>>2]=n;p=e;c[p>>2]=l;c[p+4>>2]=o;h=h+8|0;e=e+-8|0}while(h>>>0>>0);e=b+108|0;p=c[e>>2]|0;h=p+f|0;f=p+g|0;do{p=a[h>>0]|0;a[h>>0]=a[f>>0]|0;a[f>>0]=p;h=h+1|0;f=f+-1|0}while(h>>>0>>0)}else e=b+108|0;p=(c[e>>2]|0)+j|0;a[p>>0]=d[p>>0]|4;p=(c[e>>2]|0)+g|0;a[p>>0]=d[p>>0]|8}else c[e>>2]=j;c[k>>2]=-1;a[b+112>>0]=0;b=0;i=q;return b|0}else{e=Fj(b,c[b>>2]|0)|0;if(e){b=e;i=q;return b|0}p=b+96|0;f=c[p>>2]|0;m=b+116|0;e=c[m>>2]|0;n=f-e|0;if((n|0)>0){j=b+68|0;k=c[j>>2]|0;o=b+64|0;h=c[o>>2]|0;g=h+n|0;c[l>>2]=0;do if(g>>>0>k>>>0){f=c[b+88>>2]|0;e=k;do e=e+16+(e>>>1)|0;while(e>>>0>>0);h=e;e=b+72|0;c[e>>2]=Dg(f,8,k,h,c[e>>2]|0,l)|0;e=c[l>>2]|0;if(e){b=e;i=q;return b|0}e=b+76|0;c[e>>2]=Dg(f,1,k,h,c[e>>2]|0,l)|0;e=c[l>>2]|0;if(!e){c[j>>2]=h;f=c[p>>2]|0;e=c[m>>2]|0;h=c[o>>2]|0;break}else{b=e;i=q;return b|0}}while(0);l=b+104|0;f=f+-1|0;if((f|0)>=(e|0)){k=(c[b+72>>2]|0)+(h<<3)|0;g=(c[b+76>>2]|0)+h|0;j=(c[l>>2]|0)+(f<<3)|0;h=(c[b+108>>2]|0)+f|0;while(1){r=j;f=c[r+4>>2]|0;e=k;c[e>>2]=c[r>>2];c[e+4>>2]=f;a[g>>0]=d[h>>0]&243;j=j+-8|0;e=c[m>>2]|0;if(j>>>0<((c[l>>2]|0)+(e<<3)|0)>>>0)break;else{k=k+8|0;g=g+1|0;h=h+-1|0}}h=c[o>>2]|0}c[p>>2]=e;c[o>>2]=h+n;a[b+80>>0]=0;a[b+112>>0]=0}p=b+28|0;r=c[p+4>>2]|0;e=b+8|0;c[e>>2]=c[p>>2];c[e+4>>2]=r;e=Fj(b,(c[b+24>>2]|0)+11796480|0)|0;if(e){r=e;i=q;return r|0}e=b+84|0;h=c[e>>2]|0;f=b+64|0;g=c[f>>2]|0;if(g>>>0>(h+1|0)>>>0){o=g+-1|0;c[f>>2]=o;r=c[b+72>>2]|0;o=r+(o<<3)|0;p=c[o+4>>2]|0;r=r+(h<<3)|0;c[r>>2]=c[o>>2];c[r+4>>2]=p;r=b+76|0;p=(c[r>>2]|0)+h|0;a[p>>0]=d[p>>0]|4;r=(c[r>>2]|0)+(g+-2)|0;a[r>>0]=d[r>>0]|8}else c[f>>2]=h;c[e>>2]=-1;a[b+80>>0]=0;r=0;i=q;return r|0}return 0}function Mi(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;if(g>>>0>=2)return;if(!(a[f+(g<<5)+92>>0]|0))return;m=h+2|0;k=f+(g<<5)+64|0;qfa((c[h+4>>2]|0)+(b[m>>1]<<3)|0,c[f+(g<<5)+72>>2]|0,c[k>>2]<<3|0)|0;i=c[k>>2]|0;l=f+(g<<5)+76|0;if(i){f=c[l>>2]|0;j=(c[h+8>>2]|0)+(b[m>>1]|0)|0;while(1){g=d[f>>0]|0;do if(!(g&1))if(!(g&2)){a[j>>0]=0;break}else{a[j>>0]=2;break}else a[j>>0]=1;while(0);i=i+-1|0;if(!i)break;else{f=f+1|0;j=j+1|0}}g=c[k>>2]|0;if(g){j=g;k=b[m>>1]|0;i=c[l>>2]|0;f=(c[h+12>>2]|0)+(b[h>>1]<<1)|0;while(1){if(a[i>>0]&8){b[f>>1]=k;b[h>>1]=(b[h>>1]|0)+1<<16>>16;f=f+2|0}j=j+-1|0;if(!j)break;else{k=k+1<<16>>16;i=i+1|0}}}else g=0}else g=0;b[m>>1]=(e[m>>1]|0)+g;return}function Ni(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;T=i;i=i+64|0;L=T+40|0;N=T;O=T+56|0;P=T+16|0;M=T+48|0;Q=T+32|0;R=T+24|0;S=T+8|0;if(!((f|0)!=0&(e|0)!=0)){P=6;i=T;return P|0}c[e+64>>2]=0;c[e+84>>2]=-1;a[e+92>>0]=0;c[e+96>>2]=0;c[e+116>>2]=-1;a[e+124>>0]=0;if((b[f>>1]|0)<=0){P=0;i=T;return P|0}u=f+12|0;v=f+4|0;w=f+8|0;x=e+20|0;y=e+8|0;z=e+21|0;A=e+48|0;B=g<<24>>24==0;C=e+44|0;D=e+40|0;E=e+28|0;F=O+4|0;G=L+4|0;H=M+4|0;I=N+4|0;o=0;K=0;a:while(1){J=b[(c[u>>2]|0)+(K<<1)>>1]|0;s=c[v>>2]|0;l=s+(J<<3)|0;if(J>>>0>o>>>0){p=s+(o<<3)|0;m=c[p>>2]|0;p=c[p+4>>2]|0;j=N;c[j>>2]=m;c[j+4>>2]=p;j=c[s+(J<<3)>>2]|0;k=c[s+(J<<3)+4>>2]|0;r=L;c[r>>2]=m;c[r+4>>2]=p;r=c[w>>2]|0;q=r+o|0;n=d[q>>0]&3;if((n|0)==2){h=20;k=31;break}else if(!n){if((a[r+J>>0]&3)==1){c[N>>2]=j;c[I>>2]=k;l=s+(J+-1<<3)|0}else{c[N>>2]=(m+j|0)/2|0;c[I>>2]=(p+k|0)/2|0}j=o+-1|0;p=N;o=j;m=c[p>>2]|0;p=c[p+4>>2]|0;t=l;j=r+j|0}else{t=l;j=q}k=s+(o<<3)|0;a[x>>0]=1;l=y;c[l>>2]=m;c[l+4>>2]=p;a[z>>0]=g;l=(c[A>>2]|0)!=0;if(!(l|B))l=(c[C>>2]|0)==0;a[D>>0]=l&1;s=E;c[s>>2]=m;c[s+4>>2]=p;c[e>>2]=0;b:do if(k>>>0>>0){n=j;c:while(1){q=k+8|0;p=n+1|0;l=d[p>>0]&3;if((l|0)==1){c[O>>2]=c[q>>2];c[F>>2]=c[k+12>>2];j=Ii(e,O)|0;if(!j){k=q;j=p}else{h=j;k=31;break a}}else if(!l){l=c[q>>2]|0;c[L>>2]=l;j=c[k+12>>2]|0;c[G>>2]=j;if(q>>>0>>0){r=l;o=j}else{k=21;break}while(1){k=k+16|0;l=n+2|0;j=d[l>>0]&3;s=k;m=r;r=c[s>>2]|0;n=o;o=c[s+4>>2]|0;s=P;c[s>>2]=r;c[s+4>>2]=o;if((j|0)==1)break;else if(j){h=20;k=31;break a}c[M>>2]=(r+m|0)/2|0;c[H>>2]=(o+n|0)/2|0;j=Ji(e,L,M)|0;if(j){h=j;k=31;break a}s=L;c[s>>2]=r;c[s+4>>2]=o;if(k>>>0>=t>>>0){k=21;break c}else{n=p;s=q;q=k;p=l;k=s}}j=Ji(e,L,P)|0;if(!j)j=l;else{h=j;k=31;break a}}else{l=k+16|0;if(l>>>0>t>>>0){h=20;k=31;break a}if((a[n+2>>0]&3)!=2){h=20;k=31;break a}k=k+24|0;s=q;r=c[s+4>>2]|0;o=Q;c[o>>2]=c[s>>2];c[o+4>>2]=r;o=l;r=c[o+4>>2]|0;s=R;c[s>>2]=c[o>>2];c[s+4>>2]=r;if(k>>>0>t>>>0){k=26;break}r=k;s=c[r+4>>2]|0;j=S;c[j>>2]=c[r>>2];c[j+4>>2]=s;j=Ki(e,Q,R,S)|0;if(!j)j=n+3|0;else{h=j;k=31;break a}}if(k>>>0>>0)n=j;else break b}if((k|0)==21)j=Ji(e,L,N)|0;else if((k|0)==26)j=Ki(e,Q,R,N)|0;if(j){h=j;k=31;break a}}while(0);if((a[x>>0]|0)==0?(h=Li(e)|0,(h|0)!=0):0){k=31;break}}K=K+1|0;if((K|0)>=(b[f>>1]|0)){h=0;k=31;break}else o=J+1|0}if((k|0)==31){i=T;return h|0}return 0}function Oi(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;h=t;if(!d){d=6;i=t;return d|0}g=c[d>>2]|0;if(!g){d=6;i=t;return d|0}if((c[g+4>>2]|0)!=3296){d=6;i=t;return d|0}g=wi(g,h)|0;if(g){d=g;i=t;return d|0}r=c[h>>2]|0;q=r+20|0;g=Ni(e,q,0)|0;if(!g){g=c[e+64>>2]|0;a:do if(g){j=0;m=0;h=0;n=c[e+76>>2]|0;while(1){l=a[n>>0]|0;k=(j|0)==0;if(!(l&4)){if(k){p=0;h=0;break a}}else if(k)j=1;else{p=0;h=0;break a}l=l&8;m=(((l&255)>>>3^1)&255^1)+m|0;j=l<<24>>24==0?j:0;g=g+-1|0;h=h+1|0;if(!g){g=m;break}else n=n+1|0}if(!j)s=13;else{p=0;h=0}}else{g=0;h=0;s=13}while(0);if((s|0)==13){a[e+92>>0]=1;p=g}g=c[e+96>>2]|0;b:do if(g){k=0;j=0;n=0;o=c[e+108>>2]|0;while(1){m=a[o>>0]|0;l=(k|0)==0;if(!(m&4)){if(l){j=0;g=0;break b}}else if(l)k=1;else{j=0;g=0;break b}l=m&8;j=(((l&255)>>>3^1)&255^1)+j|0;k=l<<24>>24==0?k:0;g=g+-1|0;l=n+1|0;if(!g){g=l;break}else{n=l;o=o+1|0}}if(!k)s=21;else{j=0;g=0}}else{j=0;g=0;s=21}while(0);if((s|0)==21)a[e+124>>0]=1;Hh(c[r>>2]|0,q)|0;g=Fh(c[r>>2]|0,g+h|0,j+p|0,q)|0;if(!g){b[q+2>>1]=0;b[q>>1]=0;Mi(e,0,q);Mi(e,1,q);if(f<<24>>24)xi(c[d>>2]|0);c[d>>2]=r;d=0;i=t;return d|0}}xi(r);if(f<<24>>24){d=g;i=t;return d|0}c[d>>2]=0;d=g;i=t;return d|0}function Pi(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;j=r;if(!d){d=6;i=r;return d|0}h=c[d>>2]|0;if(!h){d=6;i=r;return d|0}if((c[h+4>>2]|0)!=3296){d=6;i=r;return d|0}h=wi(h,j)|0;if(h){d=h;i=r;return d|0}q=c[j>>2]|0;p=q+20|0;o=((Jh(p)|0)!=0^f<<24>>24!=0)&1;h=Ni(e,p,0)|0;if(!h){a:do if(!e){j=0;h=0}else{h=c[e+(o<<5)+64>>2]|0;if(h){f=0;m=0;j=0;n=c[e+(o<<5)+76>>2]|0;while(1){l=a[n>>0]|0;k=(f|0)==0;if(!(l&4)){if(k){j=0;h=0;break a}}else if(k)f=1;else{j=0;h=0;break a}l=l&8;m=(((l&255)>>>3^1)&255^1)+m|0;f=l<<24>>24==0?f:0;h=h+-1|0;j=j+1|0;if(!h){h=m;break}else n=n+1|0}if(f){j=0;h=0;break}}else{h=0;j=0}a[e+(o<<5)+92>>0]=1}while(0);Hh(c[q>>2]|0,p)|0;h=Fh(c[q>>2]|0,j,h,p)|0;if(!h){b[p+2>>1]=0;b[p>>1]=0;Mi(e,o,p);if(g<<24>>24)xi(c[d>>2]|0);c[d>>2]=q;d=0;i=r;return d|0}}xi(q);if(g<<24>>24){d=h;i=r;return d|0}c[d>>2]=0;d=h;i=r;return d|0}function Qi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!a){a=40;return a|0}d=a+12|0;c[d>>2]=0;c[a+16>>2]=b;c[a>>2]=0;c[a+8>>2]=0;e=a+20|0;c[e>>2]=0;f=a+24|0;c[f>>2]=0;b=Lc(b|0,302864)|0;if(!b){a=1;return a|0}uc(b|0,0,2)|0;g=nb(b|0)|0;c[a+4>>2]=g;if(!g){wc(b|0)|0;g=81;return g|0}else{uc(b|0,0,0)|0;c[d>>2]=b;c[e>>2]=67;c[f>>2]=204;g=0;return g|0}return 0}function Ri(){var a=0;a=qea(16)|0;if(!a)return a|0;c[a>>2]=0;c[a+4>>2]=188;c[a+12>>2]=68;c[a+8>>2]=67;return a|0}function Si(a){a=a|0;rea(a);return}function Ti(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;h=m+4|0;l=m;f=b+28|0;k=c[f>>2]|0;e=Lj(b)|0;c[l>>2]=e;if(e){l=c[l>>2]|0;i=m;return l|0}d=a+0|0;e=d+40|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));d=a+28|0;c[d>>2]=k;g=Wh(k,8276,l)|0;do if(!(c[l>>2]|0)){e=g+12|0;c[g+4>>2]=a;c[g>>2]=b;c[g+8>>2]=c[d>>2];d=g+8264|0;c[g+8272>>2]=d;c[g+8268>>2]=d;c[d>>2]=0;d=Lj(b)|0;if(!d){c[g+68>>2]=Qh(b)|0;c[g+44>>2]=73;c[g+48>>2]=68;c[g+52>>2]=c[f>>2];c[g+16>>2]=0;c[e>>2]=g+4168;if((Oj(e,-15)|0)==0?(c[e>>2]|0)!=0:0){c[l>>2]=0;c[a+12>>2]=g;break}else d=3}c[l>>2]=d;Ag(k,g);l=c[l>>2]|0;i=m;return l|0}while(0);d=c[b+8>>2]|0;if((bh(b,(c[b+4>>2]|0)+-4|0)|0)==0?(j=Ph(b,h)|0,j=(c[h>>2]|0)!=0?0:j,bh(b,d)|0,(j|0)!=0&j>>>0<40960):0){d=yg(k,j,l)|0;do if(!(c[l>>2]|0)){if((Pj(g,0,d,j)|0)!=(j|0)){Pj(g,0,0,0)|0;Ag(k,d);break}Qj(g+12|0)|0;c[g+44>>2]=0;c[g+48>>2]=0;c[g+52>>2]=0;c[g+24>>2]=0;c[g+28>>2]=0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;Ag(k,g);c[a+12>>2]=0;c[a+4>>2]=j;c[a+8>>2]=0;c[a>>2]=d;c[a+20>>2]=0;c[a+24>>2]=205;l=c[l>>2]|0;i=m;return l|0}while(0);c[l>>2]=0}c[a+4>>2]=2147483647;c[a+8>>2]=0;c[a>>2]=0;c[a+20>>2]=69;c[a+24>>2]=205;l=c[l>>2]|0;i=m;return l|0}function Ui(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+64|0;k=m;c[k>>2]=e;c[k+4>>2]=f;c[k+12>>2]=b;c[k+16>>2]=c[d>>2];c[k+32>>2]=73;j=k+36|0;c[j>>2]=68;l=k+40|0;c[l>>2]=a;if(Oj(k,15)|0){l=6;i=m;return l|0}a=Tj(k,4)|0;do if((a|0)==1){c[d>>2]=c[k+20>>2];d=k+28|0;e=c[d>>2]|0;if((e|0)!=0?(g=c[j>>2]|0,(g|0)!=0):0){b=c[e+20>>2]|0;if(b){e=c[b>>2]|0;if((e&-2|0)==4){Cd[g&255](c[l>>2]|0,c[b+12>>2]|0);e=c[b>>2]|0}if((e|0)==6)Cd[c[j>>2]&255](c[l>>2]|0,c[b+4>>2]|0);c[b>>2]=0;c[b+28>>2]=0;c[b+32>>2]=0;g=b+40|0;e=c[g>>2]|0;c[b+52>>2]=e;c[b+48>>2]=e;f=c[b+56>>2]|0;if(f){e=Hd[f&255](0,0,0)|0;c[b+60>>2]=e;c[k+48>>2]=e;e=c[g>>2]|0}Cd[c[j>>2]&255](c[l>>2]|0,e);Cd[c[j>>2]&255](c[l>>2]|0,c[b+36>>2]|0);Cd[c[j>>2]&255](c[l>>2]|0,b);g=c[j>>2]|0;e=c[d>>2]|0}Cd[g&255](c[l>>2]|0,e);c[d>>2]=0}}else{d=k+28|0;e=c[d>>2]|0;if((e|0)!=0?(h=c[j>>2]|0,(h|0)!=0):0){f=c[e+20>>2]|0;if(!f)g=h;else{e=c[f>>2]|0;if((e&-2|0)==4){Cd[h&255](c[l>>2]|0,c[f+12>>2]|0);e=c[f>>2]|0}if((e|0)==6)Cd[c[j>>2]&255](c[l>>2]|0,c[f+4>>2]|0);c[f>>2]=0;c[f+28>>2]=0;c[f+32>>2]=0;b=f+40|0;e=c[b>>2]|0;c[f+52>>2]=e;c[f+48>>2]=e;g=c[f+56>>2]|0;if(g){e=Hd[g&255](0,0,0)|0;c[f+60>>2]=e;c[k+48>>2]=e;e=c[b>>2]|0}Cd[c[j>>2]&255](c[l>>2]|0,e);Cd[c[j>>2]&255](c[l>>2]|0,c[f+36>>2]|0);Cd[c[j>>2]&255](c[l>>2]|0,f);g=c[j>>2]|0;e=c[d>>2]|0}Cd[g&255](c[l>>2]|0,e);c[d>>2]=0}e=(a|0)==0?-5:a;if((e|0)==-5){l=10;i=m;return l|0}else if((e|0)==-3){l=8;i=m;return l|0}else if((e|0)==-4){l=64;i=m;return l|0}else break}while(0);l=0;i=m;return l|0}function Vi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;k=n+4|0;m=n;h=d+28|0;l=c[h>>2]|0;e=bh(d,0)|0;if(!e){e=Lh(d,k,2)|0;if(!e)if((a[k>>0]|0)==31?(j=k+1|0,(a[j>>0]|0)==-99):0){c[m>>2]=0;e=b+0|0;f=e+40|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));f=b+28|0;c[f>>2]=l;g=yg(l,4292,m)|0;e=c[m>>2]|0;do if(!e){c[g+4>>2]=b;c[g>>2]=d;c[g+8>>2]=c[f>>2];e=g+4280|0;c[g+4288>>2]=e;c[g+4284>>2]=e;c[e>>2]=0;e=bh(d,0)|0;if(!e){e=Lh(d,k,2)|0;if(!e)if((a[k>>0]|0)==31&(a[j>>0]|0)==-99){e=g+12|0;sfa(e|0,0,164)|0;c[g+176>>2]=d;c[g+180>>2]=c[h>>2];c[g+88>>2]=0;c[g+92>>2]=0;c[g+96>>2]=0;c[g+100>>2]=g+112;c[g+108>>2]=64;c[g+16>>2]=0;c[g+36>>2]=0;c[g+40>>2]=0;a[g+44>>0]=0;c[g+48>>2]=0;c[g+104>>2]=0;c[g+64>>2]=9;c[e>>2]=0;c[m>>2]=0;c[b+12>>2]=g;e=0;break}else e=3}c[m>>2]=e;Ag(l,g);m=c[m>>2]|0;i=n;return m|0}while(0);c[b+4>>2]=2147483647;c[b+8>>2]=0;c[b>>2]=0;c[b+20>>2]=70;c[b+24>>2]=206;m=e;i=n;return m|0}else e=3}c[m>>2]=e;m=e;i=n;return m|0}function Wi(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+32|0;z=F+12|0;B=F;A=F+4|0;y=F+8|0;p=F+16|0;C=e+68|0;k=c[C>>2]|0;D=e+64|0;j=c[D>>2]|0;E=e+72|0;l=c[E>>2]|0;if(!g){g=l;B=k;A=j;e=0;c[D>>2]=A;c[C>>2]=B;c[E>>2]=g;i=F;return e|0}h=c[e>>2]|0;do if(!h){h=e+164|0;if(((bh(c[h>>2]|0,2)|0)==0?(Sh(c[h>>2]|0,p,1)|0)==1:0)?(n=d[p>>0]|0,m=n&31,c[e+40>>2]=m,c[e+44>>2]=n&128,o=1<>2]=o+-256,m>>>0<=16):0){c[e+52>>2]=9;c[e+56>>2]=n>>>7;c[e+60>>2]=m>>>0>9?256:o+-255|0;h=Wj(e)|0;if(h>>>0<=255){if(f)a[f>>0]=h;if(g>>>0<2){g=0;B=h;A=h;e=1;c[D>>2]=A;c[C>>2]=B;c[E>>2]=g;i=F;return e|0}else{c[e>>2]=1;n=0;k=h;j=h;h=1;q=12;break}}else{l=0;h=0;q=63}}else{h=0;q=63}}else if((h|0)==1){n=l;h=0;q=12}else if((h|0)==2){p=e+88|0;s=e+92|0;h=0;q=47}else{g=l;B=k;A=j;e=0;c[D>>2]=A;c[C>>2]=B;c[E>>2]=g;i=F;return e|0}while(0);a:while(1)if((q|0)==12){l=Wj(e)|0;if((l|0)<0){l=n;q=63;continue}p=e+44|0;m=e+56|0;q=e+32|0;while(1){if((l|0)!=256){n=l;q=17;break}if(!(c[p>>2]|0)){l=256;q=18;break}c[m>>2]=0;a[q>>0]=1;l=Wj(e)|0;if((l|0)<0){l=n;k=0;j=0;q=63;continue a}else{k=0;j=0}}if((q|0)==17){q=0;if(n>>>0>255){l=n;q=18}else{l=n;k=n}}if((q|0)==18){n=l+-256|0;m=c[m>>2]|0;if(n>>>0>>0)p=l;else{if(n>>>0>m>>>0){q=63;continue}s=e+92|0;m=c[s>>2]|0;r=e+96|0;n=c[r>>2]|0;if(m>>>0>=n>>>0){m=c[e+168>>2]|0;q=n+4+(n>>>1)|0;o=e+88|0;p=c[o>>2]|0;if((p|0)==(e+100|0)){c[o>>2]=0;p=0;n=0}if(q>>>0>65536)if((n|0)==65536){q=63;continue}else q=65536;c[o>>2]=Dg(m,1,n,q,p,y)|0;if(c[y>>2]|0){q=63;continue}c[r>>2]=q;m=c[s>>2]|0}c[s>>2]=m+1;a[(c[e+88>>2]|0)+m>>0]=k;p=j}if(p>>>0>255){r=e+76|0;s=e+92|0;t=e+96|0;u=e+80|0;v=e+88|0;w=e+168|0;x=e+100|0;q=c[r>>2]|0;o=p;while(1){if(!q){q=63;continue a}p=c[s>>2]|0;n=c[t>>2]|0;if(p>>>0>=n>>>0){m=c[w>>2]|0;q=n+4+(n>>>1)|0;p=c[v>>2]|0;if((p|0)==(x|0)){c[v>>2]=0;p=0;n=0}if(q>>>0>65536)if((n|0)==65536){q=63;continue a}else q=65536;c[v>>2]=Dg(m,1,n,q,p,A)|0;if(c[A>>2]|0){q=63;continue a}c[t>>2]=q;p=c[s>>2]|0}o=o+-256|0;q=a[(c[u>>2]|0)+o>>0]|0;c[s>>2]=p+1;a[(c[v>>2]|0)+p>>0]=q;q=c[r>>2]|0;o=b[q+(o<<1)>>1]|0;p=o&65535;if((o&65535)<=255){k=p;break}else o=p}}else k=p}s=e+92|0;m=c[s>>2]|0;r=e+96|0;n=c[r>>2]|0;if(m>>>0>=n>>>0){m=c[e+168>>2]|0;q=n+4+(n>>>1)|0;o=e+88|0;p=c[o>>2]|0;if((p|0)==(e+100|0)){c[o>>2]=0;p=0;n=0}if(q>>>0>65536)if((n|0)==65536){q=63;continue}else q=65536;c[o>>2]=Dg(m,1,n,q,p,B)|0;if(c[B>>2]|0){q=63;continue}c[r>>2]=q;m=c[s>>2]|0}c[s>>2]=m+1;p=e+88|0;a[(c[p>>2]|0)+m>>0]=k;c[e>>2]=2;q=47;continue}else if((q|0)==47){b:do if(!f){m=c[s>>2]|0;while(1){if(!m)break b;m=m+-1|0;c[s>>2]=m;h=h+1|0;if((h|0)==(g|0)){h=g;q=62;break a}}}else while(1){m=c[s>>2]|0;if(!m)break b;x=m+-1|0;c[s>>2]=x;a[f+h>>0]=a[(c[p>>2]|0)+x>>0]|0;h=h+1|0;if((h|0)==(g|0)){h=g;q=62;break a}}while(0);r=e+56|0;n=c[r>>2]|0;if(n>>>0<(c[e+48>>2]|0)>>>0){o=e+84|0;q=c[o>>2]|0;if(n>>>0>>0){m=e+76|0;o=e+80|0}else{if(!q)n=512;else n=(q>>>2)+q|0;m=e+76|0;p=Dg(c[e+168>>2]|0,3,q,n,c[m>>2]|0,z)|0;c[m>>2]=p;if(c[z>>2]|0){q=63;continue}w=p+(n<<1)|0;x=e+80|0;c[x>>2]=w;rfa(w|0,p+(q<<1)|0,q|0)|0;c[o>>2]=n;o=x;n=c[r>>2]|0}b[(c[m>>2]|0)+(n<<1)>>1]=j;a[(c[o>>2]|0)+n>>0]=k;c[r>>2]=(c[r>>2]|0)+1}c[e>>2]=1;n=l;j=l;q=12;continue}else if((q|0)==63){c[e>>2]=3;q=62;break}if((q|0)==62){c[D>>2]=j;c[C>>2]=k;c[E>>2]=l;i=F;return h|0}return 0}function Xi(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=i;i=i+208|0;N=P+136|0;M=P;O=P+8|0;m=f+2|0;l=b[m>>1]|0;if(!(l<<16>>16)){O=0;i=P;return O|0}if(!(b[f>>1]|0)){O=0;i=P;return O|0}j=O+0|0;k=j+128|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));A=c[g>>2]|0;K=O+16|0;c[K>>2]=A;L=O+8|0;c[L>>2]=Dg(A,40,0,l<<16>>16,0,N)|0;j=c[N>>2]|0;if(!j){l=Dg(A,8,0,b[f>>1]|0,0,N)|0;k=O+12|0;c[k>>2]=l;j=c[N>>2]|0;if(!j){t=b[m>>1]|0;c[O>>2]=t<<16>>16;G=b[f>>1]|0;p=G<<16>>16;J=O+4|0;c[J>>2]=p;u=c[L>>2]|0;if(G<<16>>16){s=c[f+12>>2]|0;r=0;n=0;while(1){j=b[s+(n<<1)>>1]|0;o=r;r=j+1|0;m=r-o|0;q=u+(o*40|0)|0;c[l>>2]=q;c[l+4>>2]=m;if((m|0)>0){c[q>>2]=u+(j*40|0);c[u+(o*40|0)+8>>2]=l;if((m|0)>1){o=q;do{G=o;o=o+40|0;c[G+4>>2]=o;c[o>>2]=G;c[G+48>>2]=l;m=m+-1|0}while((m|0)>1)}else j=o;c[u+(j*40|0)+4>>2]=q}n=n+1|0;if(n>>>0>=p>>>0)break;else l=l+8|0}}z=f+4|0;y=c[z>>2]|0;if(t<<16>>16){v=u;w=f+8|0;x=0;t=u;while(1){j=((c[t>>2]|0)-v|0)/40|0;l=((c[t+4>>2]|0)-v|0)/40|0;if(!(a[(c[w>>2]|0)+x>>0]&1))c[t+12>>2]=1;m=c[y+(x<<3)>>2]|0;s=m-(c[y+(j<<3)>>2]|0)|0;r=c[y+(x<<3)+4>>2]|0;p=r-(c[y+(j<<3)+4>>2]|0)|0;j=(s|0)<0?0-s|0:s;q=(p|0)<0?0-p|0:p;if((q*12|0)>=(j|0))if((j*12|0)<(q|0))n=(p>>31&2)+-1|0;else n=4;else n=s>>31&-4|2;a[t+20>>0]=n;o=(c[y+(l<<3)>>2]|0)-m|0;l=(c[y+(l<<3)+4>>2]|0)-r|0;j=(o|0)<0?0-o|0:o;q=(l|0)<0?0-l|0:l;if((q*12|0)>=(j|0))if((j*12|0)<(q|0))q=(l>>31&2)+-1|0;else q=4;else q=o>>31&-4|2;a[t+21>>0]=q;m=t+12|0;j=c[m>>2]|0;do if(!(j&1)){if((n|0)==(q|0)){if((n|0)==4){if(!(wg(s,p,o,l)|0))break;j=c[m>>2]|0}c[m>>2]=j|2}}else c[m>>2]=j|2;while(0);x=x+1|0;j=c[O>>2]|0;if(x>>>0>=j>>>0)break;else t=t+40|0}c[O+20>>2]=f;c[O+24>>2]=g;if(j){m=c[L>>2]|0;l=c[z>>2]|0;while(1){c[m+16>>2]=0;c[m+24>>2]=0;c[m+28>>2]=c[l>>2];c[m+32>>2]=c[l+4>>2];j=j+-1|0;if(!j)break;else{m=m+40|0;l=l+8|0}}}}else{c[O+20>>2]=f;c[O+24>>2]=g}if(c[J>>2]|0){w=0;do{j=c[k>>2]|0;a:do if((c[j+(w<<3)+4>>2]|0)>>>0>=4){v=c[j+(w<<3)>>2]|0;o=v+28|0;n=v+32|0;j=v;while(1){j=c[j+4>>2]|0;if((j|0)==(v|0))break a;l=c[j+28>>2]|0;p=c[o>>2]|0;m=c[j+32>>2]|0;q=c[n>>2]|0;if(!((l|0)==(p|0)&(m|0)==(q|0))){o=q;break}}u=l-p|0;t=m-o|0;m=c[v>>2]|0;if((m|0)!=(v|0)){s=v;while(1){n=m+28|0;F=c[n>>2]|0;q=p-F|0;r=m+32|0;G=c[r>>2]|0;l=o-G|0;if(!((p|0)==(F|0)&(o|0)==(G|0))?(B=vg(u,t,q,l)|0,(B|0)!=0):0){m=q;o=B;break}l=c[m>>2]|0;if((l|0)==(v|0))break a;s=m;m=l;p=c[n>>2]|0;o=c[r>>2]|0}u=o;o=s;while(1){t=j;n=0;while(1){j=c[t+4>>2]|0;n=(j|0)==(s|0)?1:n;D=c[j+28>>2]|0;E=c[t+28>>2]|0;q=D-E|0;F=c[j+32>>2]|0;G=c[t+32>>2]|0;p=F-G|0;if((D|0)==(E|0)&(F|0)==(G|0)){t=j;continue}r=vg(m,l,q,p)|0;if(!r)t=j;else{m=q;l=p;q=t;break}}if((r^u|0)<0){do{G=o+12|0;c[G>>2]=c[G>>2]|4;o=c[o+4>>2]|0}while((o|0)!=(q|0));G=q+12|0;c[G>>2]=c[G>>2]|4}if(!n){u=r;o=q}else break}}}while(0);w=w+1|0}while(w>>>0<(c[J>>2]|0)>>>0)}j=Xj(O+28|0,e+16|0,e+28|0,A)|0;c[N>>2]=j;if(!j){j=Xj(O+68|0,e+52|0,e+64|0,A)|0;if(!j){F=O+24|0;H=c[F>>2]|0;G=c[H+200>>2]|0;H=c[H+404>>2]|0;j=qg(c[g+416>>2]|0,H)|0;l=j+32&-64;if((l|0)==0|(j|0)==(l|0))m=0;else{m=og(H,l,j)|0;if((l|0)<(j|0))j=G-((G|0)/50|0)|0;else j=G;Yj(c[F>>2]|0,j,m,0,0)|0;m=1}a[O+120>>0]=1;a[O+121>>0]=1;if((h|0)==2){j=1;l=1}else{j=(h|0)==4&1;l=(h|0)==3&1}a[O+122>>0]=l;a[O+123>>0]=j;a[O+124>>0]=(h|0)!=1&1;E=O+20|0;A=g+412|0;B=g+416|0;e=g+928|0;h=g+2488|0;C=g+2492|0;D=g+2484|0;z=m<<24>>24==0;f=0;while(1){u=c[O>>2]|0;v=c[L>>2]|0;j=c[(c[E>>2]|0)+4>>2]|0;if(u)if(!f){q=u;m=v;while(1){c[m+16>>2]=0;c[m+24>>2]=0;c[m+28>>2]=c[j>>2];c[m+32>>2]=c[j+4>>2];q=q+-1|0;if(!q)break;else{m=m+40|0;j=j+8|0}}}else{q=u;m=v;while(1){c[m+16>>2]=0;c[m+24>>2]=0;c[m+28>>2]=c[j+4>>2];c[m+32>>2]=c[j>>2];q=q+-1|0;if(!q)break;else{m=m+40|0;j=j+8|0}}}s=c[J>>2]|0;b:do if(!s)j=0;else{t=c[k>>2]|0;j=0;while(1){m=c[t+(j<<3)>>2]|0;c:do if(c[t+(j<<3)+4>>2]|0){l=m+28|0;q=m;do{q=c[q>>2]|0;if((q|0)==(m|0)){I=97;break b}}while((c[q+28>>2]|0)==(c[l>>2]|0));p=c[q+4>>2]|0;n=p;while(1){o=n+28|0;m=n;do{m=c[m+4>>2]|0;if((m|0)==(p|0))break c;r=c[m+28>>2]|0;l=c[o>>2]|0}while((r|0)==(l|0));if((c[q+28>>2]|0)<(l|0)){if((r|0)<(l|0)){q=n;I=82}}else if((r|0)>(l|0)){q=n;I=82}if((I|0)==82)while(1){I=0;y=q+16|0;c[y>>2]=c[y>>2]|64;q=c[q+4>>2]|0;if((q|0)==(m|0))break;else I=82}q=c[m>>2]|0;n=m}}while(0);j=j+1|0;if(j>>>0>=s>>>0){j=0;break}}}while(0);d:while(1){if((I|0)==97){I=0;j=j+1|0}if(j>>>0>=u>>>0)break;o=v+(j*40|0)|0;n=v+(j*40|0)+16|0;p=c[n>>2]|0;if(!(p&64)){I=97;continue}q=v+(j*40|0)+32|0;l=o;while(1){l=c[l>>2]|0;if((l|0)==(o|0)){I=97;continue d}m=c[l+32>>2]|0;r=c[q>>2]|0;if((m|0)!=(r|0))break}l=o;while(1){l=c[l+4>>2]|0;if((l|0)==(o|0)){I=97;continue d}q=c[l+32>>2]|0;if((q|0)!=(r|0))break}if((m|0)<(r|0)&(q|0)>(r|0)){c[n>>2]=p|128;I=97;continue}if(!((m|0)>(r|0)&(q|0)<(r|0))){I=97;continue}c[n>>2]=p|256;I=97}w=O+(f*40|0)+28|0;q=c[F>>2]|0;j=c[w>>2]|0;if(j){m=c[O+(f*40|0)+36>>2]|0;while(1){Zj(m,q,f,O);j=j+-1|0;if(!j)break;else m=m+28|0}q=c[F>>2]|0}u=O+(f*40|0)+60|0;r=c[u>>2]|0;m=c[r+8>>2]|0;r=c[r>>2]|0;y=(f|0)==0;v=y?1:2;t=rg(32,c[q+(f*204|0)+200>>2]|0)|0;t=(t|0)>30?30:t;e:do if(r>>>0>1){l=c[O>>2]|0;if(!l){j=1;o=0}else{s=c[m+12>>2]|0;q=O+(f*40|0)+32|0;j=O+(f*40|0)+40|0;p=l;s=s>>>0>l>>>0?l:s;while(1){n=m+16|0;o=c[m+28>>2]|0;o=o>>>0>p>>>0?p:o;l=o-s|0;if((l|0)>0){I=(c[L>>2]|0)+(s*40|0)|0;_j(w,c[n>>2]|0,c[m+24>>2]|0);$j(c[q>>2]|0,c[j>>2]|0,I,l,t,v)}l=r+-1|0;if(l>>>0<=1){I=111;break e}m=n;p=c[O>>2]|0;s=o;r=l}}}else if((r|0)==1){q=O+(f*40|0)+32|0;j=O+(f*40|0)+40|0;I=111}else I=112;while(0);if((I|0)==111){x=c[O>>2]|0;s=c[L>>2]|0;u=c[(c[u>>2]|0)+8>>2]|0;_j(w,c[u>>2]|0,c[u+8>>2]|0);$j(c[q>>2]|0,c[j>>2]|0,s,x,t,v);I=112}if((I|0)==112){I=0;o=c[O>>2]|0;j=(o|0)==0;if(j){j=1;o=0}else{l=o;r=c[L>>2]|0;while(1){do if(c[r+24>>2]|0){q=r+16|0;m=c[q>>2]|0;if(m&16)break;c[q>>2]=m|16}while(0);l=l+-1|0;if(!l)break;else r=r+40|0}}}if((f|0)==1)if(j)j=0;else{v=o;w=c[L>>2]|0;while(1){x=a[w+20>>0]|0;if(!(!(x<<24>>24==-2|x<<24>>24==2)?(x=a[w+21>>0]|0,!(x<<24>>24==-2|x<<24>>24==2)):0))I=123;f:do if((I|0)==123){I=0;t=w+16|0;q=c[t>>2]|0;if(q&16)break;u=c[w+28>>2]|0;m=c[A>>2]|0;g:do if(m){n=c[h>>2]|0;p=0-n|0;s=w+36|0;r=B;while(1){l=u-(c[r+12>>2]|0)|0;if((l|0)<(p|0))break g;do if((u|0)<=((c[r+8>>2]|0)+n|0)){if((a[C>>0]|0)==0?(l|0)>(c[D>>2]|0):0)break;c[s>>2]=c[r+24>>2];q=q|48;c[t>>2]=q}while(0);m=m+-1|0;if(!m)break;else r=r+32|0}}while(0);m=c[e>>2]|0;if(!m)break;n=c[h>>2]|0;p=0-n|0;s=w+36|0;r=m;l=g+(m+-1<<5)+932|0;while(1){m=(c[l+8>>2]|0)-u|0;if((m|0)<(p|0))break f;do if((u|0)>=((c[l+12>>2]|0)-n|0)){if((a[C>>0]|0)==0?(m|0)>=(c[D>>2]|0):0)break;c[s>>2]=c[l+28>>2];q=q|48;c[t>>2]=q}while(0);r=r+-1|0;if(!r)break;else l=l+-32|0}}while(0);v=v+-1|0;if(!v){I=141;break}else w=w+40|0}}else I=141;if((I|0)==141){I=0;s=c[(c[F>>2]|0)+(f*204|0)+200>>2]|0;if(j)j=0;else{p=c[L>>2]|0;while(1){q=c[p+24>>2]|0;if(q){n=p+16|0;j=c[n>>2]|0;do if(!(j&512)){if(j&1024){c[p+36>>2]=(c[q+12>>2]|0)+(c[q+8>>2]|0);break}m=(c[p+28>>2]|0)-(c[q>>2]|0)|0;if((m|0)<1){x=c[q+8>>2]|0;c[p+36>>2]=(qg(m,s)|0)+x;break}l=c[q+4>>2]|0;r=c[q+8>>2]|0;j=c[q+12>>2]|0;if((m|0)<(l|0)){c[p+36>>2]=(og(m,j,l)|0)+r;break}else{c[p+36>>2]=j+r+(qg(m-l|0,s)|0);break}}else c[p+36>>2]=c[q+8>>2];while(0);c[n>>2]=c[n>>2]|32}o=o+-1|0;if(!o)break;else p=p+40|0}j=c[O>>2]|0}}v=c[(c[F>>2]|0)+(f*204|0)+200>>2]|0;w=c[K>>2]|0;p=c[L>>2]|0;x=p+(j*40|0)|0;do if((j|0)>0){j=0;q=p;do{j=((c[q+16>>2]|0)>>>4&1)+j|0;q=q+40|0}while(q>>>0>>0);if(!j)break;if(j>>>0>=17){j=Dg(w,4,0,j,0,M)|0;if(c[M>>2]|0)break}else j=N;q=0;n=p;do{if(c[n+16>>2]&16){m=j+(q<<2)|0;h:do if((q|0)>0){o=c[n+28>>2]|0;r=m;while(1){m=r+-4|0;l=c[m>>2]|0;if((c[l+28>>2]|0)<=(o|0)){m=r;break h}c[r>>2]=l;if(m>>>0>j>>>0)r=m;else break}}while(0);c[m>>2]=n;q=q+1|0}n=n+40|0}while(n>>>0>>0);t=(q|0)==0;u=j+(q+-1<<2)|0;do{s=p+16|0;m=c[s>>2]|0;do if(!(m&16)){l=p+12|0;r=c[l>>2]|0;if(r&2){o=a[p+20>>0]|0;if(o<<24>>24==4)break;if(o<<24>>24!=(a[p+21>>0]|0))break;if(!(r&4|m&64))break;c[l>>2]=r&-3}n=c[p+28>>2]|0;do if(!t){l=0;while(1){m=l+1|0;if((c[(c[j+(l<<2)>>2]|0)+28>>2]|0)>(n|0)){m=l;break}if(m>>>0>>0)l=m;else break}if(!m){I=180;break}o=c[j+(m+-1<<2)>>2]|0;m=q;while(1){if(!m){m=0;break}l=m+-1|0;if((c[(c[j+(l<<2)>>2]|0)+28>>2]|0)<(n|0))break;else m=l}if((m|0)==(q|0)){r=c[u>>2]|0;o=c[r+36>>2]|0;c[p+36>>2]=(qg(n-(c[r+28>>2]|0)|0,v)|0)+o;break}m=c[j+(m<<2)>>2]|0;l=c[o+28>>2]|0;if((n|0)==(l|0)){c[p+36>>2]=c[o+36>>2];break}r=c[m+28>>2]|0;m=c[m+36>>2]|0;if((n|0)==(r|0)){c[p+36>>2]=m;break}else{o=c[o+36>>2]|0;c[p+36>>2]=(og(n-l|0,m-o|0,r-l|0)|0)+o;break}}else I=180;while(0);if((I|0)==180){I=0;r=c[j>>2]|0;o=c[r+36>>2]|0;c[p+36>>2]=(qg(n-(c[r+28>>2]|0)|0,v)|0)+o}c[s>>2]=c[s>>2]|32}while(0);p=p+40|0}while(p>>>0>>0);if((j|0)==(N|0))break;Ag(w,j)}while(0);q=c[J>>2]|0;j=c[F>>2]|0;w=c[j+(f*204|0)+200>>2]|0;if(q){x=c[k>>2]|0;j=c[j+(f*204|0)+204>>2]|0;while(1){m=c[x>>2]|0;v=c[x+4>>2]|0;n=m+(v*40|0)|0;i:do if((v|0)>0){r=0;l=0;o=m;do{if(c[o+16>>2]&32){r=(r|0)==0?o:r;l=l+1|0}o=o+40|0}while(o>>>0>>0);v=r;if(l>>>0<2){if((l|0)==1){j=c[v+36>>2]|0;j=j-(qg(c[v+28>>2]|0,w)|0)|0}while(1){if((m|0)!=(v|0))c[m+36>>2]=(qg(c[m+28>>2]|0,w)|0)+j;m=m+40|0;if(m>>>0>=n>>>0)break i}}l=v+4|0;m=c[l>>2]|0;if((m|0)==(v|0))break;else r=v;do{if(!(c[m+16>>2]&32)){o=m;do o=c[o+4>>2]|0;while((c[o+16>>2]&32|0)==0);p=c[r+28>>2]|0;s=c[o+28>>2]|0;n=c[o+36>>2]|0;r=c[r+36>>2]|0;if((p|0)>(s|0)){u=n;r=r-n|0;t=s;p=p-s|0}else{u=r;r=n-r|0;t=p;p=s-p|0}if((p|0)>0){n=rg(r,p)|0;m=c[l>>2]|0}else n=65536;r=r+u|0;do{l=(c[m+28>>2]|0)-t|0;do if((l|0)>=1)if((l|0)<(p|0)){l=(qg(l,n)|0)+u|0;break}else{l=r+(qg(l-p|0,w)|0)|0;break}else l=(qg(l,w)|0)+u|0;while(0);c[m+36>>2]=l;m=c[m+4>>2]|0}while((m|0)!=(o|0));if((o|0)==(v|0))break i;else r=o}else r=m;l=r+4|0;m=c[l>>2]|0}while((m|0)!=(v|0))}while(0);q=q+-1|0;if(!q)break;else x=x+8|0}}q=c[L>>2]|0;r=c[E>>2]|0;l=c[r+4>>2]|0;r=c[r+8>>2]|0;j=c[O>>2]|0;if(j){o=y?32:64;if(y){m=0;while(1){c[l+(m<<3)>>2]=c[q+36>>2];if(c[q+16>>2]&16){j=r+m|0;a[j>>0]=d[j>>0]|o;j=c[O>>2]|0}m=m+1|0;if(m>>>0>=j>>>0)break;else q=q+40|0}}else{m=0;while(1){c[l+(m<<3)+4>>2]=c[q+36>>2];if(c[q+16>>2]&16){j=r+m|0;a[j>>0]=d[j>>0]|o;j=c[O>>2]|0}m=m+1|0;if(m>>>0>=j>>>0)break;else q=q+40|0}}}if(!z)Yj(c[F>>2]|0,G,H,0,0)|0;f=f+1|0;if((f|0)==2){j=0;break}}}}}}else k=O+12|0;M=c[K>>2]|0;J=O+92|0;Ag(M,c[J>>2]|0);c[J>>2]=0;c[O+88>>2]=0;c[O+96>>2]=0;J=O+80|0;Ag(M,c[J>>2]|0);c[J>>2]=0;J=O+76|0;Ag(M,c[J>>2]|0);c[J>>2]=0;c[O+72>>2]=0;c[O+68>>2]=0;c[O+84>>2]=0;J=O+52|0;Ag(M,c[J>>2]|0);c[J>>2]=0;c[O+48>>2]=0;c[O+56>>2]=0;J=O+40|0;Ag(M,c[J>>2]|0);c[J>>2]=0;J=O+36|0;Ag(M,c[J>>2]|0);c[J>>2]=0;c[O+32>>2]=0;c[O+28>>2]=0;c[O+44>>2]=0;Ag(M,c[L>>2]|0);c[L>>2]=0;Ag(M,c[k>>2]|0);c[k>>2]=0;c[O>>2]=0;c[O+4>>2]=0;c[K>>2]=0;O=j;i=P;return O|0}function Yi(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l+4|0;j=l;h=c[a+8>>2]|0;g=a+28|0;a=c[g>>2]|0;if(a){j=a;i=l;return j|0}d=yg(h,608,j)|0;if(c[j>>2]|0){j=0;i=l;return j|0}e=d+8|0;c[e>>2]=h;f=d+432|0;c[f>>2]=32;a=d+436|0;c[a>>2]=Dg(h,20,0,32,0,k)|0;if(c[k>>2]|0){h=c[e>>2]|0;b[d+440>>1]=0;b[d+442>>1]=0;e=d+24|0;Ag(h,c[e>>2]|0);c[e>>2]=0;c[d+20>>2]=0;Ag(h,c[a>>2]|0);c[a>>2]=0;c[f>>2]=0;c[d+428>>2]=0;e=d+392|0;Ag(h,c[e>>2]|0);c[e>>2]=0;c[d+388>>2]=0;c[d+4>>2]=0;c[d>>2]=0;Ag(h,d);h=c[k>>2]|0;c[j>>2]=h;if(h){j=0;i=l;return j|0}}else{b[d+440>>1]=0;b[d+442>>1]=0;c[d+20>>2]=0;c[d+388>>2]=0;c[d+24>>2]=0;c[d+392>>2]=0;c[d>>2]=0;c[d+4>>2]=0;c[j>>2]=0}c[g>>2]=d;j=d;i=l;return j|0}function Zi(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0;bc=i;i=i+160|0;$b=bc+112|0;Yb=bc+148|0;Sb=bc+108|0;Vb=bc+104|0;_b=bc+68|0;Xb=bc+152|0;Rb=bc+64|0;Ub=bc+44|0;Zb=bc+8|0;Wb=bc+150|0;Qb=bc+4|0;Tb=bc;Pb=bc+48|0;w=f+256|0;c[w>>2]=0;Eb=(b[f+216>>1]|0)==(b[f+218>>1]|0);_a=f+592|0;c[_a>>2]=Eb?190:189;ib=f+596|0;c[ib>>2]=Eb?28:27;tb=f+600|0;c[tb>>2]=Eb?30:29;gk(f);Eb=f+312|0;switch(c[Eb>>2]&255|0){case 3:{v=f+568|0;c[v>>2]=77;break}case 6:{v=f+568|0;c[v>>2]=80;break}case 7:{v=f+568|0;c[v>>2]=81;break}case 1:{v=f+568|0;c[v>>2]=75;break}case 0:{v=f+568|0;c[v>>2]=78;break}case 4:{v=f+568|0;c[v>>2]=76;break}case 5:{v=f+568|0;c[v>>2]=74;break}case 2:{v=f+568|0;c[v>>2]=79;break}default:v=f+568|0}ea=f+360|0;fa=f+356|0;ga=f+368|0;ha=f+372|0;ja=f+364|0;ka=f+16|0;la=f+28|0;ma=f+561|0;oa=f+24|0;pa=f+32|0;qa=f+20|0;ra=f+376|0;sa=f+12|0;ta=f+308|0;ua=f+320|0;wa=f+72|0;Ba=f+80|0;Ca=f+380|0;Da=f+284|0;Ea=f+44|0;Fa=f+328|0;Ga=f+324|0;Ha=f+346|0;Ia=f+48|0;Ja=f+298|0;Ka=f+84|0;La=f+300|0;Ma=f+88|0;Na=f+576|0;Oa=f+572|0;Pa=f+52|0;Qa=f+316|0;Ra=f+584|0;Sa=f+344|0;Ta=f+286|0;Ua=f+288|0;Wa=f+92|0;Xa=f+56|0;Ya=f+220|0;Za=f+224|0;$a=f+416|0;ab=f+408|0;bb=f+428|0;cb=f+432|0;db=f+436|0;eb=f+352|0;ac=f+488|0;fb=f+294|0;gb=f+296|0;hb=f+290|0;jb=f+292|0;kb=f+294|0;lb=f+116|0;mb=f+124|0;nb=f+290|0;ob=f+298|0;pb=f+132|0;qb=f+284|0;rb=f+36|0;sb=f+180|0;ub=f+144|0;vb=f+108|0;wb=f+348|0;xb=f+304|0;yb=f+260|0;zb=f+60|0;Ab=f+420|0;Bb=f+404|0;Cb=f+396|0;Db=f+400|0;Fb=f+264|0;Gb=f+154|0;Hb=f+156|0;Ib=f+160|0;Jb=Pb+4|0;Kb=f+164|0;Lb=Pb+8|0;Mb=f+152|0;Nb=Pb+12|0;Ob=f+172|0;x=f+176|0;y=f+168|0;z=_b+16|0;A=f+136|0;B=f+140|0;C=f+118|0;D=$b+16|0;E=f+120|0;F=f+128|0;G=f+588|0;H=f+468|0;I=f+472|0;J=f+252|0;K=f+244|0;L=f+248|0;M=f+332|0;N=f+334|0;O=f+384|0;P=f+244|0;Q=f+476|0;R=f+484|0;S=f+480|0;T=f+282|0;U=f+337|0;V=f+281|0;W=f+604|0;X=f+412|0;Y=f+424|0;Z=f+340|0;_=f+336|0;o=c[ea>>2]|0;u=0;a:while(1){s=c[fa>>2]|0;q=a[s+o>>0]|0;a[ga>>0]=q;l=q&255;k=a[85080+l>>0]|0;c[ha>>2]=k;if((l&254|0)==64){h=o+1|0;g=c[ja>>2]|0;if((h|0)>=(g|0)){t=840;break}k=2-(da(d[s+h>>0]|0,k)|0)|0;c[ha>>2]=k}else g=c[ja>>2]|0;if((k+o|0)>(g|0)){t=840;break}h=a[85336+l>>0]|0;p=h&255;j=p>>>4;g=(c[ka>>2]|0)-j|0;c[la>>2]=g;if((g|0)<0){if(a[ma>>0]|0){t=21;break}if((h&255)>15){g=c[oa>>2]|0;o=0;h=0;do{c[g+(o<<2)>>2]=0;h=h+1<<16>>16;o=h&65535}while(o>>>0>>0)}c[la>>2]=0;g=0}m=(p&15)+g|0;c[pa>>2]=m;p=c[qa>>2]|0;if(m>>>0>p>>>0){t=25;break}a[ra>>0]=1;c[sa>>2]=0;n=c[oa>>2]|0;r=n+(g<<2)|0;b:do switch(l|0){case 127:case 126:case 89:case 33:{t=833;break}case 120:{if(!(c[n+(g+1<<2)>>2]|0))t=817;else{h=c[r>>2]|0;if(!(h|g))c[sa>>2]=132;g=(c[ea>>2]|0)+h|0;c[ea>>2]=g;if((g|0)>=0){s=c[bb>>2]|0;if((s|0)>0?(g|0)>(c[(c[db>>2]|0)+((s+-1|0)*20|0)+16>>2]|0):0)t=582}else t=582;if((t|0)==582)c[sa>>2]=132;a[ra>>0]=0;t=817}break}case 121:{if(!(c[n+(g+1<<2)>>2]|0)){h=c[r>>2]|0;if(!(h|g))c[sa>>2]=132;g=(c[ea>>2]|0)+h|0;c[ea>>2]=g;if((g|0)>=0){s=c[bb>>2]|0;if((s|0)>0?(g|0)>(c[(c[db>>2]|0)+((s+-1|0)*20|0)+16>>2]|0):0)t=590}else t=590;if((t|0)==590)c[sa>>2]=132;a[ra>>0]=0;t=817}else t=817;break}case 123:{g=c[$a>>2]|0;j=c[ab>>2]|0;k=g+(j*24|0)|0;c:do if((j|0)>0){h=g;while(1){if(q<<24>>24==(c[h+12>>2]&255)<<24>>24?(a[h+16>>0]|0)!=0:0)break;h=h+24|0;if(h>>>0>=k>>>0)break c}g=c[bb>>2]|0;if((g|0)>=(c[cb>>2]|0)){t=597;break a}k=c[db>>2]|0;c[bb>>2]=g+1;c[k+(g*20|0)>>2]=c[eb>>2];c[k+(g*20|0)+4>>2]=(c[ea>>2]|0)+1;c[k+(g*20|0)+8>>2]=1;j=c[h+4>>2]|0;c[k+(g*20|0)+12>>2]=j;c[k+(g*20|0)+16>>2]=c[h+8>>2];k=c[h>>2]|0;g=k+-1|0;do if(g>>>0<=2){h=c[f+(g<<3)+444>>2]|0;if(!h){c[sa>>2]=138;break}g=c[f+(g<<3)+448>>2]|0;if(g>>>0>>0){c[sa>>2]=131;break}else{c[fa>>2]=h;c[ja>>2]=g;c[ea>>2]=j;c[eb>>2]=k;break}}else c[sa>>2]=132;while(0);a[ra>>0]=0;t=817;break b}while(0);c[sa>>2]=128;h=j;t=819;break}case 122:{c[Eb>>2]=5;c[v>>2]=74;t=817;break}case 124:{c[Eb>>2]=4;c[v>>2]=76;t=817;break}case 125:{c[Eb>>2]=3;c[v>>2]=77;t=817;break}case 128:{h=c[xb>>2]|0;d:do if((c[ka>>2]|0)<(h|0)){if(a[ma>>0]|0)c[sa>>2]=129}else if((h|0)>0){k=n;while(1){g=g+-1|0;c[la>>2]=g;g=c[k+(g<<2)>>2]&65535;if(g>>>0>=(e[Mb>>1]|0)>>>0)if(!(a[ma>>0]|0))g=h;else{t=616;break a}else{g=(c[y>>2]|0)+g|0;a[g>>0]=d[g>>0]^1;g=c[xb>>2]|0}h=g+-1|0;c[xb>>2]=h;g=c[la>>2]|0;if((h|0)<=0)break d;k=c[oa>>2]|0}}while(0);c[xb>>2]=1;c[pa>>2]=g;t=817;break}case 130:{h=c[r>>2]|0;k=c[n+(g+1<<2)>>2]&65535;t=e[Mb>>1]|0;g=h&65535;if(!(k>>>0>>0&g>>>0>>0))if(!(a[ma>>0]|0)){t=817;break b}else{t=629;break a}if(g>>>0>k>>>0)t=817;else{h=h&65535;do{t=(c[y>>2]|0)+g|0;a[t>>0]=d[t>>0]&254;h=h+1<<16>>16;g=h&65535}while(g>>>0<=k>>>0);t=817}break}case 129:{h=c[r>>2]|0;k=c[n+(g+1<<2)>>2]&65535;t=e[Mb>>1]|0;g=h&65535;if(!(k>>>0>>0&g>>>0>>0))if(!(a[ma>>0]|0)){t=817;break b}else{t=624;break a}if(g>>>0>k>>>0)t=817;else{h=h&65535;do{t=(c[y>>2]|0)+g|0;a[t>>0]=d[t>>0]|1;h=h+1<<16>>16;g=h&65535}while(g>>>0<=k>>>0);t=817}break}case 132:case 131:{g=c[$a>>2]|0;j=c[ab>>2]|0;k=g+(j*24|0)|0;e:do if((j|0)>0){h=g;while(1){if(q<<24>>24==(c[h+12>>2]&255)<<24>>24?(a[h+16>>0]|0)!=0:0)break;h=h+24|0;if(h>>>0>=k>>>0)break e}g=c[bb>>2]|0;if((g|0)>=(c[cb>>2]|0)){t=635;break a}k=c[db>>2]|0;c[bb>>2]=g+1;c[k+(g*20|0)>>2]=c[eb>>2];c[k+(g*20|0)+4>>2]=(c[ea>>2]|0)+1;c[k+(g*20|0)+8>>2]=1;j=c[h+4>>2]|0;c[k+(g*20|0)+12>>2]=j;c[k+(g*20|0)+16>>2]=c[h+8>>2];k=c[h>>2]|0;g=k+-1|0;do if(g>>>0<=2){h=c[f+(g<<3)+444>>2]|0;if(!h){c[sa>>2]=138;break}g=c[f+(g<<3)+448>>2]|0;if(g>>>0>>0){c[sa>>2]=131;break}else{c[fa>>2]=h;c[ja>>2]=g;c[ea>>2]=j;c[eb>>2]=k;break}}else c[sa>>2]=132;while(0);a[ra>>0]=0;t=817;break b}while(0);c[sa>>2]=128;h=j;t=819;break}case 135:case 134:{o=c[r>>2]&65535;if(o>>>0<(e[Ba>>1]|0)>>>0?(ia=c[n+(g+1<<2)>>2]&65535,ia>>>0<(e[lb>>1]|0)>>>0):0){r=c[Ka>>2]|0;h=c[E>>2]|0;g=c[r+(o<<3)>>2]|0;s=c[h+(ia<<3)>>2]|0;r=c[r+(o<<3)+4>>2]|0;h=c[h+(ia<<3)+4>>2]|0;k=r-h|0;h=(g|0)==(s|0)&(r|0)==(h|0);s=h?16384:g-s|0;h=h|(q&1)==0;g=h?k:s;k=h?s:0-k|0;if((((k|0)<0?0-k|0:k)|0)<16384?(((g|0)<0?0-g|0:g)|0)<16384:0){if(g|k){k=k<<14;g=g<<14;t=675}}else t=675;if((t|0)==675){t=0;s=(mg(k,g)|0)<<2;b[hb>>1]=rg(k,s)|0;b[jb>>1]=rg(g,s)|0}n=c[Ma>>2]|0;g=c[mb>>2]|0;q=c[n+(o<<3)>>2]|0;r=c[g+(ia<<3)>>2]|0;n=c[n+(o<<3)+4>>2]|0;g=c[g+(ia<<3)+4>>2]|0;s=n-g|0;g=(q|0)==(r|0)&(n|0)==(g|0);r=g?16384:q-r|0;h=g|h;g=h?s:r;h=h?r:0-s|0;if((((h|0)<0?0-h|0:h)|0)<16384?(((g|0)<0?0-g|0:g)|0)<16384:0){if(g|h){h=h<<14;g=g<<14;t=680}}else t=680;if((t|0)==680){t=(mg(h,g)|0)<<2;b[fb>>1]=rg(h,t)|0;b[gb>>1]=rg(g,t)|0}gk(f);t=817;break b}if(!(a[ma>>0]|0))t=817;else{t=670;break a}break}case 133:{g=c[r>>2]|0;h=g&255;if(!h){a[U>>0]=0;t=817;break b}else if((h|0)==255){a[U>>0]=1;t=817;break b}else{if((g&256|0)!=0?(e[J>>1]|0)>>>0<=h>>>0:0)a[U>>0]=1;if((g&512|0)!=0?(a[V>>0]|0)!=0:0)a[U>>0]=1;if((g&1024|0)!=0?(a[T>>0]|0)!=0:0)a[U>>0]=1;if((g&2048|0)!=0?(e[J>>1]|0)>>>0>h>>>0:0)a[U>>0]=0;if((g&4096|0)!=0?(a[V>>0]|0)!=0:0)a[U>>0]=0;if(!(g&8192)){t=817;break b}if(!(a[T>>0]|0)){t=817;break b}a[U>>0]=0;t=817;break b}}case 136:{k=c[r>>2]|0;g=(k&1|0)!=0?35:0;if(k&2)g=(a[V>>0]|0)==0?g:g|128;if(k&4)g=(a[T>>0]|0)==0?g:g|256;if(k&32)g=(a[W>>0]|0)==0?g:g|4096;c[r>>2]=g;t=817;break}case 139:{g=c[n+(g+1<<2)>>2]|0;if((g|0)>(c[r>>2]|0)){c[r>>2]=g;t=817}else t=817;break}case 138:{l=n+(g+2<<2)|0;q=c[l>>2]|0;s=n+(g+1<<2)|0;t=c[s>>2]|0;c[l>>2]=c[r>>2];c[s>>2]=q;c[r>>2]=t;t=817;break}case 141:{g=c[r>>2]|0;if((g|0)>-1){c[Z>>2]=g;t=817}else t=817;break}case 142:{g=c[n+(g+1<<2)>>2]|0;if((g+-1|0)>>>0>1)if(!(a[ma>>0]|0)){t=817;break b}else{t=719;break a}else{a[_>>0]=d[_>>0]&(g^255)|((c[r>>2]|0)==0?0:g);t=817;break b}}case 140:{g=c[n+(g+1<<2)>>2]|0;if((g|0)<(c[r>>2]|0)){c[r>>2]=g;t=817}else t=817;break}case 143:{g=c[$a>>2]|0;j=c[ab>>2]|0;k=g+(j*24|0)|0;f:do if((j|0)>0){h=g;while(1){if(q<<24>>24==(c[h+12>>2]&255)<<24>>24?(a[h+16>>0]|0)!=0:0)break;h=h+24|0;if(h>>>0>=k>>>0)break f}g=c[bb>>2]|0;if((g|0)>=(c[cb>>2]|0)){t=725;break a}k=c[db>>2]|0;c[bb>>2]=g+1;c[k+(g*20|0)>>2]=c[eb>>2];c[k+(g*20|0)+4>>2]=(c[ea>>2]|0)+1;c[k+(g*20|0)+8>>2]=1;j=c[h+4>>2]|0;c[k+(g*20|0)+12>>2]=j;c[k+(g*20|0)+16>>2]=c[h+8>>2];k=c[h>>2]|0;g=k+-1|0;do if(g>>>0<=2){h=c[f+(g<<3)+444>>2]|0;if(!h){c[sa>>2]=138;break}g=c[f+(g<<3)+448>>2]|0;if(g>>>0>>0){c[sa>>2]=131;break}else{c[fa>>2]=h;c[ja>>2]=g;c[ea>>2]=j;c[eb>>2]=k;break}}else c[sa>>2]=132;while(0);a[ra>>0]=0;t=817;break b}while(0);c[sa>>2]=128;h=j;t=819;break}case 137:{g=c[$a>>2]|0;o=c[ab>>2]|0;m=g+(o*24|0)|0;g:do if((o|0)>0){j=c[r>>2]|0;while(1){h=g+24|0;if((c[g+12>>2]|0)==(j|0)){h=g;break g}if(h>>>0>>0)g=h;else break}}else h=g;while(0);if((h|0)==(m|0)){if(o>>>0>=(c[X>>2]|0)>>>0){t=695;break a}c[ab>>2]=o+1}g=c[r>>2]|0;if(g>>>0>255){t=698;break a}c[h+12>>2]=g&255;j=c[ea>>2]|0;c[h+4>>2]=j+1;c[h>>2]=c[eb>>2];a[h+16>>0]=1;g=c[r>>2]|0;if(g>>>0>(c[Y>>2]|0)>>>0)c[Y>>2]=g&255;o=c[ja>>2]|0;g=j;while(1){g=k+g|0;c[ea>>2]=g;if((g|0)>=(o|0)){t=707;break a}j=a[s+g>>0]|0;a[ga>>0]=j;j=j&255;k=a[85080+j>>0]|0;c[ha>>2]=k;if((j&254|0)==64){h=g+1|0;if((h|0)>=(o|0)){t=707;break a}k=2-(da(d[s+h>>0]|0,k)|0)|0;c[ha>>2]=k}if((k+g|0)>(o|0)){t=707;break a}if((j|0)==45){t=817;break}else if((j|0)==44|(j|0)==137){t=709;break a}}break}case 79:{t=474;break a}case 85:{c[r>>2]=(c[r>>2]|0)!=(c[n+(g+1<<2)>>2]|0)&1;t=817;break}case 80:{c[r>>2]=(c[r>>2]|0)<(c[n+(g+1<<2)>>2]|0)&1;t=817;break}case 84:{c[r>>2]=(c[r>>2]|0)==(c[n+(g+1<<2)>>2]|0)&1;t=817;break}case 86:{c[r>>2]=((Hd[c[v>>2]&255](f,c[r>>2]|0,0)|0)&127|0)==64&1;t=817;break}case 83:{c[r>>2]=(c[r>>2]|0)>=(c[n+(g+1<<2)>>2]|0)&1;t=817;break}case 77:{a[Qa>>0]=1;t=817;break}case 78:{a[Qa>>0]=0;t=817;break}case 88:{if(!(c[r>>2]|0)){p=c[ja>>2]|0;g=k+(c[ea>>2]|0)|0;c[ea>>2]=g;if((g|0)<(p|0))k=1;else{t=490;break a}while(1){o=(k|0)==1;while(1){l=a[s+g>>0]|0;a[ga>>0]=l;l=l&255;h=a[85080+l>>0]|0;c[ha>>2]=h;if((l&254|0)==64){j=g+1|0;if((j|0)>=(p|0)){t=490;break a}h=2-(da(d[s+j>>0]|0,h)|0)|0;c[ha>>2]=h}g=h+g|0;if((g|0)>(p|0)){t=490;break a}if((l|0)==27){if(o){t=817;break b}}else if((l|0)==89){t=495;break}else if((l|0)==88){t=493;break}c[ea>>2]=g;if((g|0)>=(p|0)){t=490;break a}}if((t|0)==493)k=k+1|0;else if((t|0)==495){k=k+-1|0;if(!k){t=817;break b}}c[ea>>2]=g;if((g|0)>=(p|0)){t=490;break a}}}else t=817;break}case 74:case 73:{o=c[r>>2]&65535;do if(o>>>0<(e[Ea>>1]|0)>>>0?(ca=c[n+(g+1<<2)>>2]&65535,ca>>>0<(e[Ba>>1]|0)>>>0):0){if(q&1){s=c[Pa>>2]|0;g=c[Ma>>2]|0;g=Hd[c[Oa>>2]&255](f,(c[s+(o<<3)>>2]|0)-(c[g+(ca<<3)>>2]|0)|0,(c[s+(o<<3)+4>>2]|0)-(c[g+(ca<<3)+4>>2]|0)|0)|0;break}if((b[Sa>>1]|0)!=0?(b[Ha>>1]|0)!=0:0){g=c[Xa>>2]|0;k=c[Wa>>2]|0;h=c[Ya>>2]|0;j=c[g+(o<<3)>>2]|0;l=c[k+(ca<<3)>>2]|0;if((h|0)==(c[Za>>2]|0)){g=Hd[c[Na>>2]&255](f,j-l|0,(c[g+(o<<3)+4>>2]|0)-(c[k+(ca<<3)+4>>2]|0)|0)|0;g=qg(g,c[Ya>>2]|0)|0;break}else{s=qg(j-l|0,h)|0;g=qg((c[g+(o<<3)+4>>2]|0)-(c[k+(ca<<3)+4>>2]|0)|0,c[Za>>2]|0)|0;g=Hd[c[Na>>2]&255](f,s,g)|0;break}}s=c[Ia>>2]|0;g=c[Ka>>2]|0;g=Hd[c[Na>>2]&255](f,(c[s+(o<<3)>>2]|0)-(c[g+(ca<<3)>>2]|0)|0,(c[s+(o<<3)+4>>2]|0)-(c[g+(ca<<3)+4>>2]|0)|0)|0}else t=447;while(0);if((t|0)==447)if(!(a[ma>>0]|0))g=0;else{c[sa>>2]=134;g=0}c[r>>2]=g;t=817;break}case 87:{c[r>>2]=((Hd[c[v>>2]&255](f,c[r>>2]|0,0)|0)&127|0)==0&1;t=817;break}case 76:{k=e[J>>1]|0;g=c[w>>2]|0;do if(!g){g=b[gb>>1]|0;if(!(g<<16>>16)){g=c[K>>2]|0;c[w>>2]=g;break}h=b[fb>>1]|0;if(!(h<<16>>16)){g=c[L>>2]|0;c[w>>2]=g;break}else{n=h<<16>>16;l=c[K>>2]|0;q=(l|0)<0?0-l|0:l;t=h<<16>>16<0?0-n|0:n;s=da(q&65535,t)|0;t=da(q>>>16,t)|0;q=s+(t<<16|8192)|0;q=(t>>>16)+(q>>>0>>0&1)<<18|q>>>14;s=c[L>>2]|0;t=g<<16>>16;j=(s|0)<0?0-s|0:s;p=g<<16>>16<0?0-t|0:t;m=da(j&65535,p)|0;p=da(j>>>16,p)|0;g=m+(p<<16|8192)|0;g=(p>>>16)+(g>>>0>>0&1)<<18|g>>>14;g=mg((l^n|0)>-1?q:0-q|0,(s^t|0)>-1?g:0-g|0)|0;c[w>>2]=g;break}}while(0);c[r>>2]=qg(k,g)|0;t=817;break}case 75:{k=e[J>>1]|0;g=c[w>>2]|0;do if(!g){g=b[gb>>1]|0;if(!(g<<16>>16)){g=c[K>>2]|0;c[w>>2]=g;break}h=b[fb>>1]|0;if(!(h<<16>>16)){g=c[L>>2]|0;c[w>>2]=g;break}else{n=h<<16>>16;l=c[K>>2]|0;q=(l|0)<0?0-l|0:l;t=h<<16>>16<0?0-n|0:n;s=da(q&65535,t)|0;t=da(q>>>16,t)|0;q=s+(t<<16|8192)|0;q=(t>>>16)+(q>>>0>>0&1)<<18|q>>>14;s=c[L>>2]|0;t=g<<16>>16;j=(s|0)<0?0-s|0:s;p=g<<16>>16<0?0-t|0:t;m=da(j&65535,p)|0;p=da(j>>>16,p)|0;g=m+(p<<16|8192)|0;g=(p>>>16)+(g>>>0>>0&1)<<18|g>>>14;g=mg((l^n|0)>-1?q:0-q|0,(s^t|0)>-1?g:0-g|0)|0;c[w>>2]=g;break}}while(0);c[r>>2]=qg(k,g)|0;t=817;break}case 81:{c[r>>2]=(c[r>>2]|0)<=(c[n+(g+1<<2)>>2]|0)&1;t=817;break}case 82:{c[r>>2]=(c[r>>2]|0)>(c[n+(g+1<<2)>>2]|0)&1;t=817;break}case 118:{h=c[r>>2]|0;g=h&192;if(!g)c[Q>>2]=8192;else if((g|0)==128)c[Q>>2]=32768;else if((g|0)==64)c[Q>>2]=16384;else if((g|0)==192)c[Q>>2]=16384;g=h&48;if((g|0)==32)c[S>>2]=(c[Q>>2]|0)/2|0;else if((g|0)==48)c[S>>2]=((c[Q>>2]|0)*3|0)/4|0;else if(!g)c[S>>2]=0;else if((g|0)==16)c[S>>2]=(c[Q>>2]|0)/4|0;g=h&15;h=c[Q>>2]|0;if(!g)g=h+-1|0;else g=(da(h,g+-4|0)|0)/8|0;c[Q>>2]=(h|0)/256|0;c[S>>2]=(c[S>>2]|0)/256|0;c[R>>2]=(g|0)/256|0;c[Eb>>2]=6;c[v>>2]=80;t=817;break}case 91:{if(!(c[r>>2]|0))g=(c[n+(g+1<<2)>>2]|0)!=0;else g=1;c[r>>2]=g&1;t=817;break}case 100:{t=c[r>>2]|0;c[r>>2]=(t|0)<0?0-t|0:t;t=817;break}case 98:{g=c[n+(g+1<<2)>>2]|0;if(!g){t=510;break a}c[r>>2]=pg(c[r>>2]|0,64,g)|0;t=817;break}case 103:{c[r>>2]=(c[r>>2]|0)+63&-64;t=817;break}case 92:{c[r>>2]=(c[r>>2]|0)==0&1;t=817;break}case 96:{c[r>>2]=(c[r>>2]|0)+(c[n+(g+1<<2)>>2]|0);t=817;break}case 114:case 113:{rk(f,c[r>>2]|0);t=817;break}case 107:case 106:case 105:case 104:{c[r>>2]=Hd[c[v>>2]&255](f,c[r>>2]|0,c[f+(l+-104<<2)+264>>2]|0)|0;t=817;break}case 99:{c[r>>2]=og(c[r>>2]|0,c[n+(g+1<<2)>>2]|0,64)|0;t=817;break}case 95:{b[N>>1]=c[r>>2];t=817;break}case 101:{c[r>>2]=0-(c[r>>2]|0);t=817;break}case 102:{c[r>>2]=c[r>>2]&-64;t=817;break}case 93:{rk(f,c[r>>2]|0);t=817;break}case 94:{b[M>>1]=c[r>>2];t=817;break}case 117:case 116:case 115:{l=c[r>>2]|0;h:do if(l){m=2;while(1){if((g|0)<2)break;p=g+-2|0;c[la>>2]=p;t=c[oa>>2]|0;j=c[t+(g+-1<<2)>>2]|0;p=c[t+(p<<2)>>2]|0;if(j>>>0<(c[Ca>>2]|0)>>>0){g=p>>>4&15;k=d[ga>>0]|0;if((k|0)==117)g=g|32;else if((k|0)==116)g=g|16;o=(b[M>>1]|0)+g|0;h=e[J>>1]|0;g=c[w>>2]|0;do if(!g){g=b[gb>>1]|0;if(!(g<<16>>16)){g=c[P>>2]|0;c[w>>2]=g;break}k=b[fb>>1]|0;if(!(k<<16>>16)){g=c[L>>2]|0;c[w>>2]=g;break}else{q=k<<16>>16;n=c[P>>2]|0;r=(n|0)<0?0-n|0:n;t=k<<16>>16<0?0-q|0:q;s=da(r&65535,t)|0;t=da(r>>>16,t)|0;r=s+(t<<16|8192)|0;r=(t>>>16)+(r>>>0>>0&1)<<18|r>>>14;s=c[L>>2]|0;t=g<<16>>16;dc=(s|0)<0?0-s|0:s;cc=g<<16>>16<0?0-t|0:t;k=da(dc&65535,cc)|0;cc=da(dc>>>16,cc)|0;g=k+(cc<<16|8192)|0;g=(cc>>>16)+(g>>>0>>0&1)<<18|g>>>14;g=mg((n^q|0)>-1?r:0-r|0,(s^t|0)>-1?g:0-g|0)|0;c[w>>2]=g;break}}while(0);if((qg(h,g)|0)==(o|0)){cc=p&15;dc=cc+-8|0;Ud[c[tb>>2]&255](f,j,(((dc|0)>-1?cc+-7|0:dc)<<6|0)/(1<>1]|0)|0)}}else if(a[ma>>0]|0){t=533;break a}g=c[la>>2]|0;if(m>>>0>l>>>0)break h;m=m+1|0}if(a[ma>>0]|0)c[sa>>2]=129;c[la>>2]=0;g=0}while(0);c[pa>>2]=g;t=817;break}case 90:{if(!(c[r>>2]|0))g=0;else g=(c[n+(g+1<<2)>>2]|0)!=0;c[r>>2]=g&1;t=817;break}case 112:{h=c[r>>2]|0;if(h>>>0>=(c[Ca>>2]|0)>>>0)if(!(a[ma>>0]|0)){t=817;break b}else{t=421;break a}else{t=qg(c[n+(g+1<<2)>>2]|0,c[yb>>2]|0)|0;c[(c[O>>2]|0)+(h<<2)>>2]=t;t=817;break b}}case 111:case 110:case 109:case 108:{h=c[r>>2]|0;g=c[f+(l+-108<<2)+264>>2]|0;if((h|0)>-1){g=g+h|0;g=(h|0)!=0&(g|0)<0?0:g}else{g=h-g|0;g=(g|0)>0?0:g}c[r>>2]=g;t=817;break}case 97:{c[r>>2]=(c[r>>2]|0)-(c[n+(g+1<<2)>>2]|0);t=817;break}case 119:{h=c[r>>2]|0;g=h&192;if((g|0)==192)c[Q>>2]=11585;else if((g|0)==128)c[Q>>2]=23170;else if(!g)c[Q>>2]=5792;else if((g|0)==64)c[Q>>2]=11585;g=h&48;if((g|0)==32)c[S>>2]=(c[Q>>2]|0)/2|0;else if((g|0)==48)c[S>>2]=((c[Q>>2]|0)*3|0)/4|0;else if(!g)c[S>>2]=0;else if((g|0)==16)c[S>>2]=(c[Q>>2]|0)/4|0;g=h&15;h=c[Q>>2]|0;if(!g)g=h+-1|0;else g=(da(h,g+-4|0)|0)/8|0;c[Q>>2]=(h|0)/256|0;c[S>>2]=(c[S>>2]|0)/256|0;c[R>>2]=(g|0)/256|0;c[Eb>>2]=7;c[v>>2]=81;t=817;break}case 43:{j=c[r>>2]|0;k=(c[Ab>>2]|0)+1|0;if(k>>>0<=j>>>0){t=208;break a}g=c[Bb>>2]|0;h=c[Cb>>2]|0;if((k|0)==(h|0)?(c[g+(j*24|0)+12>>2]|0)==(j|0):0)g=g+(j*24|0)|0;else{l=g+(h*24|0)|0;i:do if((h|0)>0){k=g;while(1){g=k+24|0;if((c[k+12>>2]|0)==(j|0)){g=k;break i}if(g>>>0>>0)k=g;else break}}while(0);if((g|0)==(l|0)){t=208;break a}}if(!(a[g+16>>0]|0)){t=208;break a}h=c[bb>>2]|0;if((h|0)>=(c[cb>>2]|0)){t=199;break a}k=c[db>>2]|0;c[k+(h*20|0)>>2]=c[eb>>2];c[k+(h*20|0)+4>>2]=(c[ea>>2]|0)+1;c[k+(h*20|0)+8>>2]=1;j=c[g+4>>2]|0;c[k+(h*20|0)+12>>2]=j;c[k+(h*20|0)+16>>2]=c[g+8>>2];c[bb>>2]=h+1;k=c[g>>2]|0;g=k+-1|0;do if(g>>>0<=2){h=c[f+(g<<3)+444>>2]|0;if(!h){c[sa>>2]=138;break}g=c[f+(g<<3)+448>>2]|0;if(g>>>0>>0){c[sa>>2]=131;break}else{c[fa>>2]=h;c[ja>>2]=g;c[ea>>2]=j;c[eb>>2]=k;break}}else c[sa>>2]=132;while(0);a[ra>>0]=0;t=817;break}case 49:case 48:{if(!(b[Gb>>1]|0))t=817;else{g=c[Hb>>2]|0;if(!(q&1)){g=g+4|0;c[Pb>>2]=g;q=(c[Ib>>2]|0)+4|0;c[Jb>>2]=q;k=(c[Kb>>2]|0)+4|0;r=16}else{c[Pb>>2]=g;q=c[Ib>>2]|0;c[Jb>>2]=q;k=c[Kb>>2]|0;r=8}c[Lb>>2]=k;j=b[Mb>>1]|0;c[Nb>>2]=j&65535;k=0;o=0;while(1){dc=(e[(c[Ob>>2]|0)+(k<<16>>16<<1)>>1]|0)-(e[x>>1]|0)|0;n=j&65535;n=dc>>>0>>0?dc:n+-1|0;j:do if(o>>>0<=n>>>0){j=c[y>>2]|0;p=o;while(1){h=p+1|0;if((a[j+p>>0]&r)<<24>>24){j=h;break}if(h>>>0>n>>>0)break j;else p=h}m=p;k:while(1){l=m;while(1){h=l+1|0;if(h>>>0>n>>>0)break k;if(!((a[(c[y>>2]|0)+h>>0]&r)<<24>>24))l=h;else break}pk(Pb,m+1|0,l,m,h);m=h}if((m|0)!=(p|0)){pk(Pb,m+1&65535,n,m,p);if(!p)break;pk(Pb,o,p+-1|0,m,p);break}cc=c[q+(p<<3)>>2]|0;dc=c[g+(p<<3)>>2]|0;m=cc-dc|0;if((cc|0)!=(dc|0)){if(o>>>0

>>0)do{dc=q+(o<<3)|0;c[dc>>2]=(c[dc>>2]|0)+m;o=o+1|0}while((o|0)!=(p|0));if(j>>>0<=n>>>0)do{dc=q+(j<<3)|0;c[dc>>2]=(c[dc>>2]|0)+m;j=j+1|0}while(j>>>0<=n>>>0)}}else h=o;while(0);k=k+1<<16>>16;if(k<<16>>16>=(b[Gb>>1]|0)){t=817;break b}j=b[Mb>>1]|0;o=h}}break}case 44:{o=c[r>>2]|0;g=c[Bb>>2]|0;j=c[Cb>>2]|0;l=g+(j*24|0)|0;l:do if((j|0)>0)while(1){h=g+24|0;if((c[g+12>>2]|0)==(o|0)){p=g;break l}if(h>>>0>>0)g=h;else{p=h;break}}else p=g;while(0);if((p|0)==(l|0)){if(j>>>0>=(c[Db>>2]|0)>>>0){t=214;break a}c[Cb>>2]=j+1}if(o>>>0>65535){t=217;break a}c[p>>2]=c[eb>>2];h=o&65535;c[p+12>>2]=h;g=c[ea>>2]|0;c[p+4>>2]=g+1;a[p+16>>0]=1;a[p+17>>0]=0;c[p+20>>2]=0;if((c[Ab>>2]|0)>>>0>>0)c[Ab>>2]=h;o=c[ja>>2]|0;while(1){g=k+g|0;c[ea>>2]=g;if((g|0)>=(o|0)){t=226;break a}j=a[s+g>>0]|0;a[ga>>0]=j;j=j&255;k=a[85080+j>>0]|0;c[ha>>2]=k;if((j&254|0)==64){h=g+1|0;if((h|0)>=(o|0)){t=226;break a}k=2-(da(d[s+h>>0]|0,k)|0)|0;c[ha>>2]=k}if((k+g|0)>(o|0)){t=226;break a}if((j|0)==44|(j|0)==137){t=228;break a}else if((j|0)==45)break}c[p+8>>2]=g;t=817;break}case 47:case 46:{g=c[r>>2]|0;k=g&65535;g=g&65535;if(g>>>0>=(e[Ea>>1]|0)>>>0)if(!(a[ma>>0]|0)){t=817;break b}else{t=243;break a}if(!(q&1))g=0;else{dc=c[Pa>>2]|0;g=Hd[c[Oa>>2]&255](f,c[dc+(g<<3)>>2]|0,c[dc+(g<<3)+4>>2]|0)|0;g=(Hd[c[v>>2]&255](f,g,c[Fb>>2]|0)|0)-g|0}Yd[c[Ra>>2]&63](f,rb,k,g);b[qb>>1]=k;b[Ta>>1]=k;t=817;break}case 45:{g=c[bb>>2]|0;if((g|0)<1){t=231;break a}k=g+-1|0;c[bb>>2]=k;h=c[db>>2]|0;cc=h+(k*20|0)+8|0;dc=(c[cc>>2]|0)+-1|0;c[cc>>2]=dc;a[ra>>0]=0;if((dc|0)>0){c[bb>>2]=g;c[ea>>2]=c[h+(k*20|0)+12>>2];t=817;break b}j=c[h+(k*20|0)>>2]|0;k=c[h+(k*20|0)+4>>2]|0;g=j+-1|0;if(g>>>0>2){t=235;break a}h=c[f+(g<<3)+444>>2]|0;if(!h){t=237;break a}g=c[f+(g<<3)+448>>2]|0;if(g>>>0>>0){t=239;break a}c[fa>>2]=h;c[ja>>2]=g;c[ea>>2]=k;c[eb>>2]=j;t=817;break}case 55:case 54:{if((c[r>>2]|0)>>>0>1)if(!(a[ma>>0]|0)){t=817;break b}else{t=307;break a}if(!((qk(f,Sb,Vb,$b,Yb)|0)<<24>>24)){g=b[wb>>1]|0;if(!(g<<16>>16))p=b[lb>>1]|0;else if(g<<16>>16==1){g=b[C>>1]|0;if(g<<16>>16<=0){t=817;break b}p=(e[(c[A>>2]|0)+((g<<16>>16)+-1<<1)>>1]|0)+1&65535}else{t=817;break b}if(p<<16>>16){k=c[D>>2]|0;j=c[mb>>2]|0;h=b[Yb>>1]|0;o=c[Vb>>2]|0;m=c[Sb>>2]|0;if((k|0)==(j|0)){g=0;do{if(h<<16>>16!=(g&65535)<<16>>16){if(b[Ja>>1]|0){dc=k+(g<<3)|0;c[dc>>2]=(c[dc>>2]|0)+m}if(b[La>>1]|0){dc=k+(g<<3)+4|0;c[dc>>2]=(c[dc>>2]|0)+o}}g=g+1|0}while((g&65535)<<16>>16!=p<<16>>16);t=817}else{g=(b[Ja>>1]|0)==0;k=(b[La>>1]|0)==0;h=0;do{if(!g){dc=j+(h<<3)|0;c[dc>>2]=(c[dc>>2]|0)+m}if(!k){dc=j+(h<<3)+4|0;c[dc>>2]=(c[dc>>2]|0)+o}h=h+1|0}while((h&65535)<<16>>16!=p<<16>>16);t=817}}else t=817}else t=817;break}case 51:case 50:{if((c[ka>>2]|0)<(c[xb>>2]|0)){if(a[ma>>0]|0)c[sa>>2]=134}else{if((qk(f,Qb,Tb,Zb,Wb)|0)<<24>>24){t=817;break b}if((c[xb>>2]|0)>0){g=c[Tb>>2]|0;h=c[Qb>>2]|0;do{j=(c[la>>2]|0)+-1|0;c[la>>2]=j;j=c[(c[oa>>2]|0)+(j<<2)>>2]&65535;if(j>>>0<(e[lb>>1]|0)>>>0){if(b[Ja>>1]|0){dc=(c[mb>>2]|0)+(j<<3)|0;c[dc>>2]=(c[dc>>2]|0)+h;dc=(c[pb>>2]|0)+j|0;a[dc>>0]=d[dc>>0]|8}if(b[La>>1]|0){dc=(c[mb>>2]|0)+(j<<3)+4|0;c[dc>>2]=(c[dc>>2]|0)+g;dc=(c[pb>>2]|0)+j|0;a[dc>>0]=d[dc>>0]|16}}else if(a[ma>>0]|0){t=279;break a}dc=(c[xb>>2]|0)+-1|0;c[xb>>2]=dc}while((dc|0)>0)}}c[xb>>2]=1;c[pa>>2]=c[la>>2];t=817;break}case 53:case 52:{if(!(b[wb>>1]|0))h=1;else h=b[C>>1]|0;g=c[r>>2]<<16>>16;if(g>>>0>=h<<16>>16>>>0)if(!(a[ma>>0]|0)){t=817;break b}else{t=290;break a}if(!((qk(f,Rb,Ub,_b,Xb)|0)<<24>>24)){if(!g)k=0;else k=(e[(c[A>>2]|0)+(g+-1<<1)>>1]|0)+1-(e[B>>1]|0)&65535;if(!(b[wb>>1]|0))o=b[lb>>1]|0;else o=(e[(c[A>>2]|0)+(g<<1)>>1]|0)+1-(e[B>>1]|0)&65535;if((k&65535)<(o&65535)){h=c[z>>2]|0;j=b[Xb>>1]|0;l=c[Ub>>2]|0;m=c[Rb>>2]|0;n=k;k=k&65535;while(1){g=c[mb>>2]|0;if(!((h|0)==(g|0)?j<<16>>16==(k&65535)<<16>>16:0)){if(b[Ja>>1]|0){dc=g+(k<<3)|0;c[dc>>2]=(c[dc>>2]|0)+m;dc=(c[pb>>2]|0)+k|0;a[dc>>0]=d[dc>>0]|8}if(b[La>>1]|0){dc=(c[mb>>2]|0)+(k<<3)+4|0;c[dc>>2]=(c[dc>>2]|0)+l;dc=(c[pb>>2]|0)+k|0;a[dc>>0]=d[dc>>0]|16}}n=n+1<<16>>16;if((n&65535)>=(o&65535)){t=817;break}else k=k+1|0}}else t=817}else t=817;break}case 57:{g=c[xb>>2]|0;do if((c[ka>>2]|0)<(g|0)){if(a[ma>>0]|0)c[sa>>2]=134}else{if((b[Sa>>1]|0)!=0?(b[Ha>>1]|0)!=0:0)n=(b[wb>>1]|0)==0;else n=1;dc=b[Ta>>1]|0;j=dc&65535;if((dc&65535)>=(e[Ea>>1]|0)){if(!(a[ma>>0]|0))break;c[sa>>2]=134;break}h=c[(n?Ia:Xa)>>2]|0;r=h+(j<<3)|0;p=c[Pa>>2]|0;q=p+(j<<3)|0;dc=b[Ua>>1]|0;k=dc&65535;if((dc&65535)<(e[Ba>>1]|0)){do if(!n){g=c[Ya>>2]|0;if((g|0)==(c[Za>>2]|0)){o=c[Wa>>2]|0;o=Hd[c[Na>>2]&255](f,(c[o+(k<<3)>>2]|0)-(c[r>>2]|0)|0,(c[o+(k<<3)+4>>2]|0)-(c[h+(j<<3)+4>>2]|0)|0)|0;break}else{dc=qg((c[(c[Wa>>2]|0)+(k<<3)>>2]|0)-(c[r>>2]|0)|0,g)|0;o=qg((c[(c[Wa>>2]|0)+(e[Ua>>1]<<3)+4>>2]|0)-(c[h+(j<<3)+4>>2]|0)|0,c[Za>>2]|0)|0;o=Hd[c[Na>>2]&255](f,dc,o)|0;break}}else{o=c[Ka>>2]|0;o=Hd[c[Na>>2]&255](f,(c[o+(k<<3)>>2]|0)-(c[r>>2]|0)|0,(c[o+(k<<3)+4>>2]|0)-(c[h+(j<<3)+4>>2]|0)|0)|0}while(0);l=e[Ua>>1]|0;g=c[Ma>>2]|0;l=Hd[c[Oa>>2]&255](f,(c[g+(l<<3)>>2]|0)-(c[q>>2]|0)|0,(c[g+(l<<3)+4>>2]|0)-(c[p+(j<<3)+4>>2]|0)|0)|0;g=c[xb>>2]|0}else{l=0;o=0}if((g|0)>0){m=h+(j<<3)+4|0;j=p+(j<<3)+4|0;p=(o|0)==0;do{h=(c[la>>2]|0)+-1|0;c[la>>2]=h;h=c[(c[oa>>2]|0)+(h<<2)>>2]|0;if(h>>>0>=(e[lb>>1]|0)>>>0){if(a[ma>>0]|0){t=361;break a}}else{do if(!n){g=c[Ya>>2]|0;if((g|0)==(c[Za>>2]|0)){g=c[F>>2]|0;g=Hd[c[Na>>2]&255](f,(c[g+(h<<3)>>2]|0)-(c[r>>2]|0)|0,(c[g+(h<<3)+4>>2]|0)-(c[m>>2]|0)|0)|0;break}else{dc=qg((c[(c[F>>2]|0)+(h<<3)>>2]|0)-(c[r>>2]|0)|0,g)|0;g=qg((c[(c[F>>2]|0)+(h<<3)+4>>2]|0)-(c[m>>2]|0)|0,c[Za>>2]|0)|0;g=Hd[c[Na>>2]&255](f,dc,g)|0;break}}else{g=c[E>>2]|0;g=Hd[c[Na>>2]&255](f,(c[g+(h<<3)>>2]|0)-(c[r>>2]|0)|0,(c[g+(h<<3)+4>>2]|0)-(c[m>>2]|0)|0)|0}while(0);k=c[mb>>2]|0;k=Hd[c[Oa>>2]&255](f,(c[k+(h<<3)>>2]|0)-(c[q>>2]|0)|0,(c[k+(h<<3)+4>>2]|0)-(c[j>>2]|0)|0)|0;do if(g)if(p){g=0-g|0;break}else{g=og(g,l,o)|0;break}else g=0;while(0);Yd[c[Ra>>2]&63](f,vb,h&65535,g-k|0);g=c[xb>>2]|0}g=g+-1|0;c[xb>>2]=g}while((g|0)>0)}}while(0);c[xb>>2]=1;c[pa>>2]=c[la>>2];t=817;break}case 56:{k=c[xb>>2]|0;m:do if((c[ka>>2]|0)<(k+1|0)){if(a[ma>>0]|0)c[sa>>2]=134}else{dc=c[r>>2]|0;r=b[Ja>>1]|0;l=r<<16>>16;t=(dc|0)<0?0-dc|0:dc;r=r<<16>>16<0?0-l|0:l;s=t>>>16;t=t&65535;cc=da(t,r)|0;r=da(s,r)|0;j=cc+(r<<16|8192)|0;j=(r>>>16)+(j>>>0>>0&1)<<18|j>>>14;j=(l^dc|0)>-1?j:0-j|0;l=b[La>>1]|0;cc=l<<16>>16;l=l<<16>>16<0?0-cc|0:cc;t=da(l,t)|0;s=da(l,s)|0;l=t+(s<<16|8192)|0;l=(s>>>16)+(l>>>0>>0&1)<<18|l>>>14;l=(cc^dc|0)>-1?l:0-l|0;if((k|0)>0){h=n;while(1){g=g+-1|0;c[la>>2]=g;g=c[h+(g<<2)>>2]&65535;if(g>>>0<(e[lb>>1]|0)>>>0){if(b[Ja>>1]|0){dc=(c[mb>>2]|0)+(g<<3)|0;c[dc>>2]=(c[dc>>2]|0)+j;dc=(c[pb>>2]|0)+g|0;a[dc>>0]=d[dc>>0]|8}if(b[La>>1]|0){dc=(c[mb>>2]|0)+(g<<3)+4|0;c[dc>>2]=(c[dc>>2]|0)+l;dc=(c[pb>>2]|0)+g|0;a[dc>>0]=d[dc>>0]|16}}else if(a[ma>>0]|0){t=333;break a}dc=(c[xb>>2]|0)+-1|0;c[xb>>2]=dc;g=c[la>>2]|0;if((dc|0)<=0)break m;h=c[oa>>2]|0}}}while(0);c[xb>>2]=1;c[pa>>2]=g;t=817;break}case 59:case 58:{j=c[r>>2]|0;k=j&65535;j=j&65535;if(j>>>0<(e[Ba>>1]|0)>>>0?($=b[qb>>1]|0,aa=$&65535,($&65535)<(e[Ea>>1]|0)):0){if(!(b[Ha>>1]|0)){h=(c[Ia>>2]|0)+(aa<<3)|0;dc=c[h+4>>2]|0;cc=(c[Ka>>2]|0)+(j<<3)|0;c[cc>>2]=c[h>>2];c[cc+4>>2]=dc;g=n+(g+1<<2)|0;Yd[c[G>>2]&63](f,wa,k,c[g>>2]|0);cc=(c[Ka>>2]|0)+(j<<3)|0;dc=c[cc+4>>2]|0;h=(c[Ma>>2]|0)+(j<<3)|0;c[h>>2]=c[cc>>2];c[h+4>>2]=dc;h=b[qb>>1]|0}else{g=n+(g+1<<2)|0;h=$}t=c[Ma>>2]|0;cc=c[Pa>>2]|0;dc=h&65535;dc=Hd[c[Oa>>2]&255](f,(c[t+(j<<3)>>2]|0)-(c[cc+(dc<<3)>>2]|0)|0,(c[t+(j<<3)+4>>2]|0)-(c[cc+(dc<<3)+4>>2]|0)|0)|0;Yd[c[Ra>>2]&63](f,wa,k,(c[g>>2]|0)-dc|0);b[Ta>>1]=b[qb>>1]|0;b[Ua>>1]=k;if(!(a[ga>>0]&1)){t=817;break b}b[qb>>1]=k;t=817;break b}if(!(a[ma>>0]|0))t=817;else{t=377;break a}break}case 67:{g=c[r>>2]|0;if(g>>>0<(e[H>>1]|0)>>>0){c[r>>2]=c[(c[I>>2]|0)+(g<<2)>>2];t=817;break b}if(a[ma>>0]|0){t=421;break a}c[r>>2]=0;t=817;break}case 63:case 62:{k=c[r>>2]|0;g=c[n+(g+1<<2)>>2]|0;h=c[ua>>2]|0;j=k&65535;k=k&65535;if(k>>>0<(e[Ea>>1]|0)>>>0?(c[Ca>>2]|0)>>>0>g>>>0:0){g=Pd[c[_a>>2]&511](f,g)|0;if(!(b[Sa>>1]|0)){n=b[Ja>>1]|0;dc=n<<16>>16;r=(g|0)<0?0-g|0:g;n=n<<16>>16<0?0-dc|0:dc;q=r>>>16;r=r&65535;s=da(n,r)|0;n=da(n,q)|0;cc=s+(n<<16|8192)|0;cc=(n>>>16)+(cc>>>0>>0&1)<<18|cc>>>14;s=c[Ia>>2]|0;c[s+(k<<3)>>2]=(dc^g|0)>-1?cc:0-cc|0;cc=b[La>>1]|0;dc=cc<<16>>16;cc=cc<<16>>16<0?0-dc|0:dc;r=da(cc,r)|0;q=da(cc,q)|0;cc=r+(q<<16|8192)|0;cc=(q>>>16)+(cc>>>0>>0&1)<<18|cc>>>14;c[s+(k<<3)+4>>2]=(dc^g|0)>-1?cc:0-cc|0;s=s+(k<<3)|0;cc=c[s+4>>2]|0;dc=(c[Pa>>2]|0)+(k<<3)|0;c[dc>>2]=c[s>>2];c[dc+4>>2]=cc}dc=c[Pa>>2]|0;k=Hd[c[Oa>>2]&255](f,c[dc+(k<<3)>>2]|0,c[dc+(k<<3)+4>>2]|0)|0;if(a[ga>>0]&1){dc=g-k|0;g=Hd[c[v>>2]&255](f,(((dc|0)<0?0-dc|0:dc)|0)>(h|0)?k:g,c[Fb>>2]|0)|0}Yd[c[Ra>>2]&63](f,rb,j,g-k|0)}else t=398;if((t|0)==398?(0,(a[ma>>0]|0)!=0):0)c[sa>>2]=134;b[qb>>1]=j;b[Ta>>1]=j;t=817;break}case 72:{h=c[r>>2]|0;j=h&65535;if(j>>>0>=(e[lb>>1]|0)>>>0)if(!(a[ma>>0]|0)){t=817;break b}else{t=442;break a}dc=c[mb>>2]|0;dc=Hd[c[Oa>>2]&255](f,c[dc+(j<<3)>>2]|0,c[dc+(j<<3)+4>>2]|0)|0;Yd[c[Ra>>2]&63](f,vb,h&65535,(c[n+(g+1<<2)>>2]|0)-dc|0);if(!(b[wb>>1]|0)){cc=(c[mb>>2]|0)+(j<<3)|0;dc=c[cc+4>>2]|0;t=(c[E>>2]|0)+(j<<3)|0;c[t>>2]=c[cc>>2];c[t+4>>2]=dc;t=817}else t=817;break}case 69:{g=c[r>>2]|0;if(g>>>0<(c[Ca>>2]|0)>>>0){c[r>>2]=Pd[c[_a>>2]&511](f,g)|0;t=817;break b}if(a[ma>>0]|0){t=421;break a}c[r>>2]=0;t=817;break}case 60:{k=c[xb>>2]|0;n:do if((c[ka>>2]|0)>=(k|0)?(e[qb>>1]|0)<(e[Ea>>1]|0):0){if((k|0)>0){h=n;while(1){g=g+-1|0;c[la>>2]=g;g=c[h+(g<<2)>>2]|0;h=g&65535;if(h>>>0>=(e[Ba>>1]|0)>>>0)if(!(a[ma>>0]|0))g=k;else{t=390;break a}else{s=c[Ma>>2]|0;cc=c[Pa>>2]|0;dc=e[qb>>1]|0;dc=Hd[c[Oa>>2]&255](f,(c[s+(h<<3)>>2]|0)-(c[cc+(dc<<3)>>2]|0)|0,(c[s+(h<<3)+4>>2]|0)-(c[cc+(dc<<3)+4>>2]|0)|0)|0;Yd[c[Ra>>2]&63](f,wa,g&65535,0-dc|0);g=c[xb>>2]|0}k=g+-1|0;c[xb>>2]=k;g=c[la>>2]|0;if((k|0)<=0)break n;h=c[oa>>2]|0}}}else t=385;while(0);if((t|0)==385)if(a[ma>>0]|0)c[sa>>2]=134;c[xb>>2]=1;c[pa>>2]=g;t=817;break}case 64:{k=c[ea>>2]|0;h=a[s+(k+1)>>0]|0;o=h&255;if(o>>>0>=(p+1-(c[ka>>2]|0)|0)>>>0){t=409;break a}if(h<<24>>24!=0?(ba=g+-1|0,c[r>>2]=d[s+(k+2)>>0],(h&255)>=2):0){g=2;k=2;do{k=k+1<<16>>16;c[n+(ba+g<<2)>>2]=d[s+((c[ea>>2]|0)+1+g)>>0];g=k&65535}while(g>>>0<=o>>>0)}c[pa>>2]=m+o;t=817;break}case 66:{h=c[r>>2]|0;if(h>>>0>=(e[H>>1]|0)>>>0)if(!(a[ma>>0]|0)){t=817;break b}else{t=421;break a}else{c[(c[I>>2]|0)+(h<<2)>>2]=c[n+(g+1<<2)>>2];t=817;break b}}case 65:{k=c[ea>>2]|0;h=a[s+(k+1)>>0]|0;o=h&255;if(o>>>0>=(p+1-(c[ka>>2]|0)|0)>>>0){t=413;break a}k=k+2|0;c[ea>>2]=k;o:do if(h<<24>>24){h=0;j=1;while(1){c[ea>>2]=k+2;c[n+(h+g<<2)>>2]=(d[s+k>>0]<<8|d[s+(k+1)>>0])<<16>>16;h=j&65535;if(h>>>0>=o>>>0)break o;k=c[ea>>2]|0;j=j+1<<16>>16}}while(0);a[ra>>0]=0;c[pa>>2]=m+o;t=817;break}case 68:{h=c[r>>2]|0;if(h>>>0>=(c[Ca>>2]|0)>>>0)if(!(a[ma>>0]|0)){t=817;break b}else{t=421;break a}else{Ud[c[ib>>2]&255](f,h,c[n+(g+1<<2)>>2]|0);t=817;break b}}case 71:case 70:{g=c[r>>2]|0;do if(g>>>0<(e[lb>>1]|0)>>>0)if(!(q&1)){dc=c[mb>>2]|0;g=Hd[c[Oa>>2]&255](f,c[dc+(g<<3)>>2]|0,c[dc+(g<<3)+4>>2]|0)|0;break}else{dc=c[E>>2]|0;g=Hd[c[Na>>2]&255](f,c[dc+(g<<3)>>2]|0,c[dc+(g<<3)+4>>2]|0)|0;break}else if(!(a[ma>>0]|0))g=0;else{c[sa>>2]=134;g=0}while(0);c[r>>2]=g;t=817;break}case 61:{c[Eb>>2]=2;c[v>>2]=79;t=817;break}case 11:{j=c[n+(g+1<<2)>>2]<<16;g=j>>16;h=c[r>>2]<<16;k=h>>16;if((((h|0)<0?0-k|0:k)|0)<16384?(((j|0)<0?0-g|0:g)|0)<16384:0){if(k|g){k=h>>2;g=j>>2;t=62}}else t=62;if((t|0)==62){dc=(mg(k,g)|0)<<2;b[Ja>>1]=rg(k,dc)|0;b[La>>1]=rg(g,dc)|0}gk(f);t=817;break}case 5:case 4:case 3:case 2:case 1:case 0:{h=l<<14&16384;g=h&65535;h=(h^16384)&65535;if((q&255)<4){b[fb>>1]=g;b[gb>>1]=h;b[hb>>1]=g;b[jb>>1]=h}if(!(l&2)){b[Ja>>1]=g;b[La>>1]=h}gk(f);t=817;break}case 7:case 6:{dc=c[n+(g+1<<2)>>2]|0;g=c[r>>2]|0;h=dc&65535;if((e[lb>>1]|0)>(dc&65535)?(e[Ba>>1]|0)>(g&65535):0){s=g&65535;r=c[Ma>>2]|0;cc=c[mb>>2]|0;g=c[r+(s<<3)>>2]|0;dc=c[cc+(h<<3)>>2]|0;s=c[r+(s<<3)+4>>2]|0;cc=c[cc+(h<<3)+4>>2]|0;h=s-cc|0;cc=(g|0)==(dc|0)&(s|0)==(cc|0);dc=cc?16384:g-dc|0;cc=cc|(q&1)==0;g=cc?h:dc;h=cc?dc:0-h|0;if((((h|0)<0?0-h|0:h)|0)<16384?(((g|0)<0?0-g|0:g)|0)<16384:0){if(g|h){h=h<<14;g=g<<14;t=40}}else t=40;if((t|0)==40){dc=(mg(h,g)|0)<<2;b[kb>>1]=rg(h,dc)|0;b[gb>>1]=rg(g,dc)|0}t=e[kb>>1]|e[kb+2>>1]<<16;b[nb>>1]=t;b[nb+2>>1]=t>>>16;gk(f);t=817;break b}if(!(a[ma>>0]|0))t=817;else{t=35;break a}break}case 9:case 8:{dc=c[n+(g+1<<2)>>2]|0;g=c[r>>2]|0;h=dc&65535;if((e[lb>>1]|0)>(dc&65535)?(e[Ba>>1]|0)>(g&65535):0){s=g&65535;r=c[Ma>>2]|0;cc=c[mb>>2]|0;g=c[r+(s<<3)>>2]|0;dc=c[cc+(h<<3)>>2]|0;s=c[r+(s<<3)+4>>2]|0;cc=c[cc+(h<<3)+4>>2]|0;h=s-cc|0;cc=(g|0)==(dc|0)&(s|0)==(cc|0);dc=cc?16384:g-dc|0;cc=cc|(q&1)==0;g=cc?h:dc;h=cc?dc:0-h|0;if((((h|0)<0?0-h|0:h)|0)<16384?(((g|0)<0?0-g|0:g)|0)<16384:0){if(g|h){h=h<<14;g=g<<14;t=50}}else t=50;if((t|0)==50){dc=(mg(h,g)|0)<<2;b[Ja>>1]=rg(h,dc)|0;b[La>>1]=rg(g,dc)|0}gk(f);t=817;break b}if(!(a[ma>>0]|0))t=817;else{t=45;break a}break}case 10:{j=c[n+(g+1<<2)>>2]<<16;g=j>>16;h=c[r>>2]<<16;k=h>>16;if((((h|0)<0?0-k|0:k)|0)<16384?(((j|0)<0?0-g|0:g)|0)<16384:0){if(k|g){k=h>>2;g=j>>2;t=56}}else t=56;if((t|0)==56){dc=(mg(k,g)|0)<<2;b[kb>>1]=rg(k,dc)|0;b[gb>>1]=rg(g,dc)|0}t=e[kb>>1]|e[kb+2>>1]<<16;b[nb>>1]=t;b[nb+2>>1]=t>>>16;gk(f);t=817;break}case 23:{g=c[r>>2]|0;if((g|0)<0){t=105;break a}c[xb>>2]=g;t=817;break}case 24:{c[Eb>>2]=1;c[v>>2]=75;t=817;break}case 21:{g=c[r>>2]|0;if((g|0)==1){g=vb+0|0;k=ub+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0))}else if(g)if(!(a[ma>>0]|0)){t=817;break b}else{t=96;break a}else{g=vb+0|0;k=sb+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0))}b[wb>>1]=c[r>>2];t=817;break}case 25:{c[Eb>>2]=0;c[v>>2]=78;t=817;break}case 18:{b[Ua>>1]=c[r>>2];t=817;break}case 26:{c[ta>>2]=c[r>>2];t=817;break}case 13:{c[r>>2]=b[Ja>>1];c[n+(g+1<<2)>>2]=b[La>>1];t=817;break}case 27:{p=c[ja>>2]|0;o=c[ea>>2]|0;g=1;while(1){o=k+o|0;c[ea>>2]=o;if((o|0)>=(p|0)){t=116;break a}j=a[s+o>>0]|0;a[ga>>0]=j;j=j&255;k=a[85080+j>>0]|0;c[ha>>2]=k;if((j&254|0)==64){h=o+1|0;if((h|0)>=(p|0)){t=116;break a}k=2-(da(d[s+h>>0]|0,k)|0)|0;c[ha>>2]=k}if((k+o|0)>(p|0)){t=116;break a}if((j|0)==88)g=g+1|0;else if((j|0)==89)g=g+-1|0;if(!g){t=817;break}}break}case 19:{g=c[r>>2]|0;if(!g){g=rb+0|0;k=sb+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0))}else if((g|0)!=1)if(!(a[ma>>0]|0)){t=817;break b}else{t=84;break a}else{g=rb+0|0;k=ub+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0))}b[Sa>>1]=c[r>>2];t=817;break}case 12:{c[r>>2]=b[fb>>1];c[n+(g+1<<2)>>2]=b[gb>>1];t=817;break}case 14:{t=e[kb>>1]|e[kb+2>>1]<<16;b[ob>>1]=t;b[ob+2>>1]=t>>>16;gk(f);t=817;break}case 17:{b[Ta>>1]=c[r>>2];t=817;break}case 15:{k=c[r>>2]|0;h=c[n+(g+1<<2)>>2]|0;j=c[n+(g+2<<2)>>2]|0;q=c[n+(g+3<<2)>>2]&65535;l=e[Ea>>1]|0;if((((q>>>0>>0?(va=c[n+(g+4<<2)>>2]&65535,va>>>0>>0):0)?(xa=h&65535,ya=e[Ba>>1]|0,xa>>>0>>0):0)?(za=j&65535,za>>>0>>0):0)?(Aa=k&65535,Aa>>>0<(e[lb>>1]|0)>>>0):0){cc=c[Pa>>2]|0;g=c[cc+(q<<3)>>2]|0;o=(c[cc+(va<<3)>>2]|0)-g|0;k=c[cc+(q<<3)+4>>2]|0;cc=(c[cc+(va<<3)+4>>2]|0)-k|0;l=c[Ma>>2]|0;h=c[l+(xa<<3)>>2]|0;j=(c[l+(za<<3)>>2]|0)-h|0;m=c[l+(xa<<3)+4>>2]|0;l=(c[l+(za<<3)+4>>2]|0)-m|0;n=(c[pb>>2]|0)+Aa|0;a[n>>0]=d[n>>0]|24;n=0-cc|0;p=og(j,n,64)|0;p=(og(l,o,64)|0)+p|0;dc=og(j,o,64)|0;dc=(og(l,cc,64)|0)+dc|0;if((((p|0)<0?0-p|0:p)*19|0)>(((dc|0)<0?0-dc|0:dc)|0)){dc=og(g-h|0,n,64)|0;dc=(og(k-m|0,o,64)|0)+dc|0;s=og(dc,j,p)|0;dc=og(dc,l,p)|0;cc=c[Ma>>2]|0;t=c[mb>>2]|0;c[t+(Aa<<3)>>2]=(c[cc+(xa<<3)>>2]|0)+s;c[t+(Aa<<3)+4>>2]=(c[cc+(xa<<3)+4>>2]|0)+dc;t=817;break b}else{cc=c[Ma>>2]|0;dc=c[Pa>>2]|0;t=c[mb>>2]|0;c[t+(Aa<<3)>>2]=((c[cc+(za<<3)>>2]|0)+(c[cc+(xa<<3)>>2]|0)+(c[dc+(q<<3)>>2]|0)+(c[dc+(va<<3)>>2]|0)|0)/4|0;c[t+(Aa<<3)+4>>2]=((c[cc+(za<<3)+4>>2]|0)+(c[cc+(xa<<3)+4>>2]|0)+(c[dc+(q<<3)+4>>2]|0)+(c[dc+(va<<3)+4>>2]|0)|0)/4|0;t=817;break b}}if(!(a[ma>>0]|0))t=817;else{t=73;break a}break}case 22:{g=c[r>>2]|0;if(!g){g=rb+0|0;k=sb+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0))}else if((g|0)!=1)if(!(a[ma>>0]|0)){t=817;break b}else{t=102;break a}else{g=rb+0|0;k=ub+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0))}g=wa+0|0;k=rb+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0));g=vb+0|0;k=rb+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0));t=c[r>>2]&65535;b[Sa>>1]=t;b[Ha>>1]=t;b[wb>>1]=t;t=817;break}case 16:{b[qb>>1]=c[r>>2];t=817;break}case 20:{g=c[r>>2]|0;if(!g){g=wa+0|0;k=sb+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0))}else if((g|0)!=1)if(!(a[ma>>0]|0)){t=817;break b}else{t=90;break a}else{g=wa+0|0;k=ub+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0))}b[Ha>>1]=c[r>>2];t=817;break}case 36:{c[r>>2]=c[ka>>2];t=817;break}case 32:{c[n+(g+1<<2)>>2]=c[r>>2];t=817;break}case 37:{h=c[r>>2]|0;if(!((h|0)<1|(g|0)<(h|0))){c[r>>2]=c[n+(g-h<<2)>>2];t=817;break b}if(a[ma>>0]|0)c[sa>>2]=134;c[r>>2]=0;t=817;break}case 29:{c[ua>>2]=c[r>>2];t=817;break}case 34:{c[pa>>2]=0;t=817;break}case 41:{h=c[r>>2]&65535;if(h>>>0>=(e[Ea>>1]|0)>>>0)if(!(a[ma>>0]|0)){t=817;break b}else{t=166;break a}g=(b[Ja>>1]|0)==0?-1:-9;if(b[La>>1]|0)g=g&239;t=(c[zb>>2]|0)+h|0;a[t>>0]=a[t>>0]&g;t=817;break}case 38:{h=c[r>>2]|0;if((h|0)<1|(g|0)<(h|0))if(!(a[ma>>0]|0)){t=817;break b}else{t=142;break a}else{dc=g-h|0;cc=n+(dc<<2)|0;t=c[cc>>2]|0;rfa(cc|0,n+(dc+1<<2)|0,(h<<2)+-4|0)|0;c[(c[oa>>2]|0)+((c[la>>2]|0)+-1<<2)>>2]=t;t=817;break b}}case 42:{j=c[n+(g+1<<2)>>2]|0;k=(c[Ab>>2]|0)+1|0;if(j>>>0>=k>>>0){t=189;break a}g=c[Bb>>2]|0;h=c[Cb>>2]|0;if((k|0)==(h|0)?(c[g+(j*24|0)+12>>2]|0)==(j|0):0)g=g+(j*24|0)|0;else{l=g+(h*24|0)|0;p:do if((h|0)>0){k=g;while(1){g=k+24|0;if((c[k+12>>2]|0)==(j|0)){g=k;break p}if(g>>>0>>0)k=g;else break}}while(0);if((g|0)==(l|0)){t=189;break a}}if(!(a[g+16>>0]|0)){t=189;break a}k=c[bb>>2]|0;if((k|0)>=(c[cb>>2]|0)){t=179;break a}if((c[r>>2]|0)>0){dc=c[db>>2]|0;c[dc+(k*20|0)>>2]=c[eb>>2];c[dc+(k*20|0)+4>>2]=(c[ea>>2]|0)+1;c[dc+(k*20|0)+8>>2]=c[r>>2];j=c[g+4>>2]|0;c[dc+(k*20|0)+12>>2]=j;c[dc+(k*20|0)+16>>2]=c[g+8>>2];c[bb>>2]=k+1;k=c[g>>2]|0;g=k+-1|0;do if(g>>>0<=2){h=c[f+(g<<3)+444>>2]|0;if(!h){c[sa>>2]=138;break}g=c[f+(g<<3)+448>>2]|0;if(g>>>0>>0){c[sa>>2]=131;break}else{c[fa>>2]=h;c[ja>>2]=g;c[ea>>2]=j;c[eb>>2]=k;break}}else c[sa>>2]=132;while(0);a[ra>>0]=0;t=817}else t=817;break}case 35:{dc=c[r>>2]|0;t=n+(g+1<<2)|0;c[r>>2]=c[t>>2];c[t>>2]=dc;t=817;break}case 40:{g=c[$a>>2]|0;j=c[ab>>2]|0;k=g+(j*24|0)|0;q:do if((j|0)>0){h=g;while(1){if(q<<24>>24==(c[h+12>>2]&255)<<24>>24?(a[h+16>>0]|0)!=0:0)break;h=h+24|0;if(h>>>0>=k>>>0)break q}g=c[bb>>2]|0;if((g|0)>=(c[cb>>2]|0)){t=153;break a}k=c[db>>2]|0;c[bb>>2]=g+1;c[k+(g*20|0)>>2]=c[eb>>2];c[k+(g*20|0)+4>>2]=(c[ea>>2]|0)+1;c[k+(g*20|0)+8>>2]=1;j=c[h+4>>2]|0;c[k+(g*20|0)+12>>2]=j;c[k+(g*20|0)+16>>2]=c[h+8>>2];k=c[h>>2]|0;g=k+-1|0;do if(g>>>0<=2){h=c[f+(g<<3)+444>>2]|0;if(!h){c[sa>>2]=138;break}g=c[f+(g<<3)+448>>2]|0;if(g>>>0>>0){c[sa>>2]=131;break}else{c[fa>>2]=h;c[ja>>2]=g;c[ea>>2]=j;c[eb>>2]=k;break}}else c[sa>>2]=132;while(0);a[ra>>0]=0;t=817;break b}while(0);c[sa>>2]=128;h=j;t=819;break}case 30:{c[Ga>>2]=c[r>>2];t=817;break}case 39:{k=c[r>>2]|0;g=c[n+(g+1<<2)>>2]|0;h=k&65535;j=g&65535;k=k&65535;if(k>>>0<(e[Ba>>1]|0)>>>0?(Va=g&65535,Va>>>0<(e[Ea>>1]|0)>>>0):0){dc=c[Pa>>2]|0;t=c[Ma>>2]|0;t=(Hd[c[Oa>>2]&255](f,(c[dc+(Va<<3)>>2]|0)-(c[t+(k<<3)>>2]|0)|0,(c[dc+(Va<<3)+4>>2]|0)-(c[t+(k<<3)+4>>2]|0)|0)|0)/2|0;Yd[c[Ra>>2]&63](f,wa,h,t);Yd[c[Ra>>2]&63](f,rb,j,0-t|0);t=817;break b}if(!(a[ma>>0]|0))t=817;else{t=147;break a}break}case 31:{c[Fa>>2]=qg(c[r>>2]|0,c[yb>>2]|0)|0;t=817;break}case 28:{h=c[r>>2]|0;if(!(h|g))c[sa>>2]=132;g=(c[ea>>2]|0)+h|0;c[ea>>2]=g;if((g|0)>=0){dc=c[bb>>2]|0;if((dc|0)>0?(g|0)>(c[(c[db>>2]|0)+((dc+-1|0)*20|0)+16>>2]|0):0)t=126}else t=126;if((t|0)==126)c[sa>>2]=132;a[ra>>0]=0;t=817;break}default:{if((q&255)>223){o=c[r>>2]|0;g=c[n+(g+1<<2)>>2]|0;l=c[ta>>2]|0;j=c[ua>>2]|0;n=o&65535;k=g+1|0;o=o&65535;if((o>>>0<(e[Ba>>1]|0)>>>0?k>>>0<((c[Ca>>2]|0)+1|0)>>>0:0)?(e[Da>>1]|0)<(e[Ea>>1]|0):0){if(!k)k=0;else k=Pd[c[_a>>2]&511](f,g)|0;g=c[Fa>>2]|0;dc=k-g|0;if((((dc|0)<0?0-dc|0:dc)|0)<(c[Ga>>2]|0))k=(k|0)>-1?g:0-g|0;if(!(b[Ha>>1]|0)){cc=e[Da>>1]|0;dc=c[Ia>>2]|0;p=b[Ja>>1]|0;r=p<<16>>16;g=0-k|0;q=(k|0)<0?g:k;p=p<<16>>16<0?0-r|0:r;m=q>>>16;q=q&65535;t=da(p,q)|0;p=da(p,m)|0;s=t+(p<<16|8192)|0;s=(p>>>16)+(s>>>0>>0&1)<<18|s>>>14;t=c[Ka>>2]|0;c[t+(o<<3)>>2]=((r^k|0)>-1?s:0-s|0)+(c[dc+(cc<<3)>>2]|0);s=b[La>>1]|0;r=s<<16>>16;s=s<<16>>16<0?0-r|0:r;q=da(s,q)|0;m=da(s,m)|0;s=q+(m<<16|8192)|0;s=(m>>>16)+(s>>>0>>0&1)<<18|s>>>14;c[t+(o<<3)+4>>2]=((r^k|0)>-1?s:0-s|0)+(c[dc+(cc<<3)+4>>2]|0);t=t+(o<<3)|0;cc=c[t+4>>2]|0;dc=(c[Ma>>2]|0)+(o<<3)|0;c[dc>>2]=c[t>>2];c[dc+4>>2]=cc}else g=0-k|0;m=c[Ka>>2]|0;p=e[Da>>1]|0;dc=c[Ia>>2]|0;p=Hd[c[Na>>2]&255](f,(c[m+(o<<3)>>2]|0)-(c[dc+(p<<3)>>2]|0)|0,(c[m+(o<<3)+4>>2]|0)-(c[dc+(p<<3)+4>>2]|0)|0)|0;dc=c[Ma>>2]|0;m=e[Da>>1]|0;h=c[Pa>>2]|0;m=Hd[c[Oa>>2]&255](f,(c[dc+(o<<3)>>2]|0)-(c[h+(m<<3)>>2]|0)|0,(c[dc+(o<<3)+4>>2]|0)-(c[h+(m<<3)+4>>2]|0)|0)|0;g=(a[Qa>>0]|0)!=0&(p^k|0)<0?g:k;h=a[ga>>0]|0;o=h&255;do if(!(o&4)){j=c[f+((o&3)<<2)+264>>2]|0;if((g|0)>-1){g=j+g|0;g=(k|0)!=0&(g|0)<0?0:g;break}else{g=g-j|0;g=(g|0)>0?0:g;break}}else{if((b[Sa>>1]|0)==(b[Ha>>1]|0)){dc=g-p|0;g=(((dc|0)<0?0-dc|0:dc)|0)>(j|0)?p:g}g=Hd[c[v>>2]&255](f,g,c[f+((o&3)<<2)+264>>2]|0)|0;h=a[ga>>0]|0}while(0);do if(h&8)if((p|0)>-1){g=(g|0)<(l|0)?l:g;break}else{dc=0-l|0;g=(g|0)>(dc|0)?dc:g;break}while(0);Yd[c[Ra>>2]&63](f,wa,n,g-m|0);g=a[ga>>0]|0}else if(!(a[ma>>0]|0))g=q;else{c[sa>>2]=134;g=q}b[Ta>>1]=b[Da>>1]|0;if(g&16)b[Da>>1]=n;b[Ua>>1]=n;t=817;break b}if((q&255)>191){m=c[r>>2]|0;p=c[ta>>2]|0;n=m&65535;m=m&65535;if(m>>>0<(e[Ba>>1]|0)>>>0?(dc=b[Da>>1]|0,na=dc&65535,(dc&65535)<(e[Ea>>1]|0)):0){do if((b[Sa>>1]|0)!=0?(b[Ha>>1]|0)!=0:0){g=c[Wa>>2]|0;k=c[Xa>>2]|0;h=c[Ya>>2]|0;j=c[g+(m<<3)>>2]|0;l=c[k+(na<<3)>>2]|0;if((h|0)==(c[Za>>2]|0)){k=Hd[c[Na>>2]&255](f,j-l|0,(c[g+(m<<3)+4>>2]|0)-(c[k+(na<<3)+4>>2]|0)|0)|0;k=qg(k,c[Ya>>2]|0)|0;break}else{dc=qg(j-l|0,h)|0;k=qg((c[g+(m<<3)+4>>2]|0)-(c[k+(na<<3)+4>>2]|0)|0,c[Za>>2]|0)|0;k=Hd[c[Na>>2]&255](f,dc,k)|0;break}}else t=771;while(0);if((t|0)==771){dc=c[Ka>>2]|0;k=c[Ia>>2]|0;k=Hd[c[Na>>2]&255](f,(c[dc+(m<<3)>>2]|0)-(c[k+(na<<3)>>2]|0)|0,(c[dc+(m<<3)+4>>2]|0)-(c[k+(na<<3)+4>>2]|0)|0)|0}g=c[Fa>>2]|0;dc=k-g|0;if((((dc|0)<0?0-dc|0:dc)|0)<(c[Ga>>2]|0))o=(k|0)>-1?g:0-g|0;else o=k;k=a[ga>>0]|0;g=k&255;do if(!(g&4)){g=c[f+((g&3)<<2)+264>>2]|0;if((o|0)>-1){g=g+o|0;g=(o|0)!=0&(g|0)<0?0:g;break}else{g=o-g|0;g=(g|0)>0?0:g;break}}else{g=Hd[c[v>>2]&255](f,o,c[f+((g&3)<<2)+264>>2]|0)|0;k=a[ga>>0]|0}while(0);do if(k&8)if((o|0)>-1){g=(g|0)<(p|0)?p:g;break}else{dc=0-p|0;g=(g|0)>(dc|0)?dc:g;break}while(0);t=c[Ma>>2]|0;cc=c[Pa>>2]|0;dc=e[Da>>1]|0;dc=Hd[c[Oa>>2]&255](f,(c[t+(m<<3)>>2]|0)-(c[cc+(dc<<3)>>2]|0)|0,(c[t+(m<<3)+4>>2]|0)-(c[cc+(dc<<3)+4>>2]|0)|0)|0;Yd[c[Ra>>2]&63](f,wa,n,g-dc|0);g=a[ga>>0]|0}else if(!(a[ma>>0]|0))g=q;else{c[sa>>2]=134;g=q}b[Ta>>1]=b[Da>>1]|0;b[Ua>>1]=n;if(!(g&16)){t=817;break b}b[Da>>1]=n;t=817;break b}if((q&255)>183){o=l+65353&65535;if(o>>>0>=(p+1-(c[ka>>2]|0)|0)>>>0){t=791;break a}k=(c[ea>>2]|0)+1|0;c[ea>>2]=k;r:do if(o){h=0;j=1;while(1){c[ea>>2]=k+2;c[n+(h+g<<2)>>2]=(d[s+k>>0]<<8|d[s+(k+1)>>0])<<16>>16;h=j&65535;if(h>>>0>=o>>>0)break r;k=c[ea>>2]|0;j=j+1<<16>>16}}while(0);a[ra>>0]=0;t=817;break b}if((q&255)>175){j=l+65361&65535;if(j>>>0>=(p+1-(c[ka>>2]|0)|0)>>>0){t=800;break a}if(!j){t=817;break b}g=g+-1|0;k=1;h=1;while(1){c[n+(g+k<<2)>>2]=d[s+((c[ea>>2]|0)+k)>>0];h=h+1<<16>>16;k=h&65535;if(k>>>0>j>>>0){t=817;break b}}}g=c[$a>>2]|0;j=c[ab>>2]|0;k=g+(j*24|0)|0;s:do if((j|0)>0){h=g;while(1){if(q<<24>>24==(c[h+12>>2]&255)<<24>>24?(a[h+16>>0]|0)!=0:0)break;h=h+24|0;if(h>>>0>=k>>>0)break s}g=c[bb>>2]|0;if((g|0)>=(c[cb>>2]|0)){t=806;break a}k=c[db>>2]|0;c[bb>>2]=g+1;c[k+(g*20|0)>>2]=c[eb>>2];c[k+(g*20|0)+4>>2]=(c[ea>>2]|0)+1;c[k+(g*20|0)+8>>2]=1;j=c[h+4>>2]|0;c[k+(g*20|0)+12>>2]=j;c[k+(g*20|0)+16>>2]=c[h+8>>2];k=c[h>>2]|0;g=k+-1|0;do if(g>>>0<=2){h=c[f+(g<<3)+444>>2]|0;if(!h){c[sa>>2]=138;break}g=c[f+(g<<3)+448>>2]|0;if(g>>>0>>0){c[sa>>2]=131;break}else{c[fa>>2]=h;c[ja>>2]=g;c[ea>>2]=j;c[eb>>2]=k;break}}else c[sa>>2]=132;while(0);a[ra>>0]=0;t=817;break b}while(0);c[sa>>2]=128;h=j;t=819}}while(0);do if((t|0)==817){g=c[sa>>2]|0;if(!g){t=833;break}else if((g|0)!=128){t=841;break a}g=c[$a>>2]|0;h=c[ab>>2]|0;t=819}while(0);if((t|0)==819){t=0;k=g+(h*24|0)|0;if((h|0)<=0){t=832;break}while(1){if((a[g+16>>0]|0)!=0?(a[ga>>0]|0)==(c[g+12>>2]&255)<<24>>24:0)break;g=g+24|0;if(g>>>0>=k>>>0){t=832;break a}}h=c[bb>>2]|0;if((h|0)>=(c[cb>>2]|0)){t=823;break}k=c[db>>2]|0;c[k+(h*20|0)>>2]=c[eb>>2];c[k+(h*20|0)+4>>2]=(c[ea>>2]|0)+1;c[k+(h*20|0)+8>>2]=1;j=c[g+4>>2]|0;c[k+(h*20|0)+12>>2]=j;c[k+(h*20|0)+16>>2]=c[g+8>>2];k=c[g>>2]|0;g=k+-1|0;if(g>>>0>2){t=825;break}h=c[f+(g<<3)+444>>2]|0;if(!h){t=827;break}g=c[f+(g<<3)+448>>2]|0;if(g>>>0>>0){t=829;break}c[fa>>2]=h;c[ja>>2]=g;c[ea>>2]=j;c[eb>>2]=k;g=u}else if((t|0)==833){t=0;c[ka>>2]=c[pa>>2];if(a[ra>>0]|0)c[ea>>2]=(c[ea>>2]|0)+(c[ha>>2]|0);if((u|0)>999999){g=139;t=844;break}else g=u+1|0}o=c[ea>>2]|0;if((o|0)>=(c[ja>>2]|0)){t=837;break}if(a[ac>>0]|0){g=0;t=844;break}else u=g}switch(t|0){case 21:{c[sa>>2]=129;g=129;break}case 25:{c[sa>>2]=130;g=130;break}case 35:{c[sa>>2]=134;g=134;break}case 45:{c[sa>>2]=134;g=134;break}case 73:{c[sa>>2]=134;g=134;break}case 84:{c[sa>>2]=134;g=134;break}case 90:{c[sa>>2]=134;g=134;break}case 96:{c[sa>>2]=134;g=134;break}case 102:{c[sa>>2]=134;g=134;break}case 105:{c[sa>>2]=132;g=132;break}case 116:{c[sa>>2]=131;g=131;break}case 142:{c[sa>>2]=134;g=134;break}case 147:{c[sa>>2]=134;g=134;break}case 153:{c[sa>>2]=130;g=130;break}case 166:{c[sa>>2]=134;g=134;break}case 179:{c[sa>>2]=130;g=130;break}case 189:{c[sa>>2]=134;g=134;break}case 199:{c[sa>>2]=130;g=130;break}case 208:{c[sa>>2]=134;g=134;break}case 214:{c[sa>>2]=140;g=140;break}case 217:{c[sa>>2]=140;g=140;break}case 226:{c[sa>>2]=131;g=131;break}case 228:{c[sa>>2]=137;g=137;break}case 231:{c[sa>>2]=136;g=136;break}case 235:{c[sa>>2]=132;g=132;break}case 237:{c[sa>>2]=138;g=138;break}case 239:{c[sa>>2]=131;g=131;break}case 243:{c[sa>>2]=134;g=134;break}case 279:{c[sa>>2]=134;g=134;break}case 290:{c[sa>>2]=134;g=134;break}case 307:{c[sa>>2]=134;g=134;break}case 333:{c[sa>>2]=134;g=134;break}case 361:{c[sa>>2]=134;g=134;break}case 377:{c[sa>>2]=134;g=134;break}case 390:{c[sa>>2]=134;g=134;break}case 409:{c[sa>>2]=130;g=130;break}case 413:{c[sa>>2]=130;g=130;break}case 421:{c[sa>>2]=134;g=134;break}case 442:{c[sa>>2]=134;g=134;break}case 474:{c[sa>>2]=135;g=135;break}case 490:{c[sa>>2]=131;g=131;break}case 510:{c[sa>>2]=133;g=133;break}case 533:{c[sa>>2]=134;g=134;break}case 597:{c[sa>>2]=130;g=130;break}case 616:{c[sa>>2]=134;g=134;break}case 624:{c[sa>>2]=134;g=134;break}case 629:{c[sa>>2]=134;g=134;break}case 635:{c[sa>>2]=130;g=130;break}case 670:{c[sa>>2]=134;g=134;break}case 695:{c[sa>>2]=141;g=141;break}case 698:{c[sa>>2]=141;g=141;break}case 707:{c[sa>>2]=131;g=131;break}case 709:{c[sa>>2]=137;g=137;break}case 719:{c[sa>>2]=134;g=134;break}case 725:{c[sa>>2]=130;g=130;break}case 791:{c[sa>>2]=130;g=130;break}case 800:{c[sa>>2]=130;g=130;break}case 806:{c[sa>>2]=130;g=130;break}case 823:{c[sa>>2]=134;g=134;break}case 825:{c[sa>>2]=132;g=132;break}case 827:{c[sa>>2]=138;g=138;break}case 829:{c[sa>>2]=131;g=131;break}case 832:{c[sa>>2]=128;g=128;break}case 837:if((c[bb>>2]|0)>0){c[sa>>2]=131;g=131;break}else{dc=0;i=bc;return dc|0}case 840:{c[sa>>2]=131;g=131;break}case 841:{if(!g){dc=0;i=bc;return dc|0}break}case 844:{i=bc;return g|0}}if(a[ac>>0]|0){dc=g;i=bc;return dc|0}a[(c[f+4>>2]|0)+301>>0]=0;dc=g;i=bc;return dc|0}function _i(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;g=h;f=h+4|0;e=qea(28)|0;c[f>>2]=1;c[f+4>>2]=1;c[f+8>>2]=a+-2;if((d+-1|0)>>>0>=4)Ra(90976,91040,55,91096);if(!e){j=c[p>>2]|0;c[g>>2]=59;Uc(j|0,95288,g|0)|0;ld(1)}j=jj(12)|0;c[e>>2]=j;c[e+16>>2]=0;c[e+4>>2]=a;c[e+8>>2]=b;c[e+12>>2]=d;c[e+20>>2]=0;sj(j,f);a=sea(da(da(b,a)|0,d)|0,1)|0;c[e+24>>2]=a;if(!a){h=c[p>>2]|0;c[g>>2]=76;Uc(h|0,95288,g|0)|0;ld(1)}else{i=h;return e|0}return 0}function $i(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;if(!b)Ra(95336,91040,117,91120);if(!d)Ra(91152,91040,118,91120);if(!e)Ra(91160,91040,119,91120);p=b+4|0;k=c[p>>2]|0;j=k+-1|0;if(j>>>0<=d>>>0)Ra(91168,91040,120,91120);if((f+d|0)>>>0>j>>>0)Ra(91192,91040,121,91120);j=(c[b+8>>2]|0)+-1|0;if(j>>>0<=e>>>0)Ra(91224,91040,122,91120);if((g+e|0)>>>0>j>>>0)Ra(91248,91040,123,91120);l=c[b+12>>2]|0;if(!g)return;o=b+24|0;n=(f|0)!=0;b=da(l,f)|0;if((l|0)!=2)if(n){j=0;do{m=da((da(c[p>>2]|0,j+e|0)|0)+d|0,l)|0;qfa((c[o>>2]|0)+m|0,h+(da(j,i)|0)|0,b|0)|0;j=j+1|0}while((j|0)!=(g|0));return}else{j=0;do{m=da((da(c[p>>2]|0,j+e|0)|0)+d|0,l)|0;qfa((c[o>>2]|0)+m|0,h+(da(j,i)|0)|0,b|0)|0;j=j+1|0}while((j|0)!=(g|0));return}else{b=k;j=0;while(1){m=c[o>>2]|0;b=(da(b,j+e|0)|0)+d<<1;k=da(j,i)|0;if(n){l=0;do{q=l<<1;a[m+(q+b)>>0]=-1;a[m+((q|1)+b)>>0]=a[h+(l+k)>>0]|0;l=l+1|0}while((l|0)!=(f|0))}j=j+1|0;if((j|0)==(g|0))break;b=c[p>>2]|0}return}}function aj(a){a=a|0;var b=0,d=0,e=0,f=0;if(!a)Ra(95336,91040,197,91288);b=c[a>>2]|0;if((c[b+8>>2]|0)==1)return;else f=0;do{b=lj(b,f)|0;d=f+1|0;e=lj(c[a>>2]|0,d)|0;if((c[b+4>>2]|0)==(c[e+4>>2]|0)){b=b+8|0;c[b>>2]=(c[b>>2]|0)+(c[e+8>>2]|0);rj(c[a>>2]|0,d);b=f+-1|0}else b=f;f=b+1|0;b=c[a>>2]|0}while(f>>>0<((c[b+8>>2]|0)+-1|0)>>>0);return}function bj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;i=i+16|0;u=v;if(!b)Ra(95336,91040,225,91312);f=c[b>>2]|0;if(c[f+8>>2]|0){r=b+4|0;s=(d|0)>0;t=b+8|0;n=2147483647;m=-1;h=2147483647;q=0;l=0;o=0;while(1){f=lj(f,q)|0;a:do if(((c[f>>2]|0)+d|0)>>>0<=((c[r>>2]|0)+-1|0)>>>0){k=c[f+4>>2]|0;if(s){j=q;g=d;while(1){f=lj(c[b>>2]|0,j)|0;w=c[f+4>>2]|0;k=(w|0)>(k|0)?w:k;if((k+e|0)>>>0>((c[t>>2]|0)+-1|0)>>>0){j=n;k=o;break a}g=g-(c[f+8>>2]|0)|0;if((g|0)<=0)break;else j=j+1|0}}if((k|0)>-1){g=lj(c[b>>2]|0,q)|0;j=k+e|0;if(j>>>0>=n>>>0){if((j|0)!=(n|0)){j=n;k=o;break}f=c[g+8>>2]|0;if((f|0)>=(h|0)){j=n;k=o;break}}else f=c[g+8>>2]|0;m=q;h=f;l=c[g>>2]|0}else{j=n;k=o}}else{j=n;k=o}while(0);q=q+1|0;f=c[b>>2]|0;if(q>>>0>=(c[f+8>>2]|0)>>>0)break;else{n=j;o=k}}if((m|0)!=-1){g=qea(12)|0;if(!g){w=c[p>>2]|0;c[u>>2]=261;Uc(w|0,95288,u|0)|0;ld(1)}c[g>>2]=l;c[g+4>>2]=k+e;c[g+8>>2]=d;pj(f,m,g);rea(g);j=m+1|0;f=c[b>>2]|0;b:do if(j>>>0<(c[f+8>>2]|0)>>>0)do{f=lj(f,j)|0;h=lj(c[b>>2]|0,m)|0;g=c[f>>2]|0;h=(c[h+8>>2]|0)+(c[h>>2]|0)|0;if((g|0)>=(h|0))break b;c[f>>2]=h;u=f+8|0;w=(c[u>>2]|0)+(g-h)|0;c[u>>2]=w;if((w|0)>=1)break b;rj(c[b>>2]|0,j);f=c[b>>2]|0}while(j>>>0<(c[f+8>>2]|0)>>>0);while(0);aj(b);u=da(e,d)|0;w=b+16|0;c[w>>2]=(c[w>>2]|0)+u;c[a>>2]=l;c[a+4>>2]=k;c[a+8>>2]=d;c[a+12>>2]=e;i=v;return}}c[a>>2]=-1;c[a+4>>2]=-1;c[a+8>>2]=0;c[a+12>>2]=0;i=v;return}function cj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(!a)Ra(95336,91040,325,91360);g=a+24|0;if(!(c[g>>2]|0))Ra(91344,91040,326,91360);d=a+20|0;b=c[d>>2]|0;if(!b){Pb(1,d|0);b=c[d>>2]|0}nc(3553,b|0);sd(3553,10242,33071);sd(3553,10243,33071);sd(3553,10240,9729);sd(3553,10241,9729);f=c[a+12>>2]|0;if((f|0)==4){Kc(3553,0,6408,c[a+4>>2]|0,c[a+8>>2]|0,0,32993,33639,c[g>>2]|0);return}else if((f|0)!=3){e=c[a+4>>2]|0;d=c[a+8>>2]|0;b=c[g>>2]|0;if((f|0)==2){Kc(3553,0,6410,e|0,d|0,0,6410,5121,b|0);return}else{Kc(3553,0,6403,e|0,d|0,0,6403,5121,b|0);return}}else{Kc(3553,0,6407,c[a+4>>2]|0,c[a+8>>2]|0,0,6407,5121,c[g>>2]|0);return}}function dj(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,h=0;if(!a)Ra(95336,94496,198,94576);e=a+48|0;if(!(nj(c[e>>2]|0)|0)){d=0.0;return +d}else f=0;while(1){a=lj(c[e>>2]|0,f)|0;f=f+1|0;if((c[a>>2]|0)==(b|0))break;if(f>>>0>=(nj(c[e>>2]|0)|0)>>>0){d=0.0;h=7;break}}if((h|0)==7)return +d;d=+g[a+4>>2];return +d}function ej(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;o=p+24|0;l=p;n=p+8|0;m=p+16|0;if(!a)Ra(95336,94496,222,94608);if(!(sk(a,+g[a+20>>2],o,l)|0)){i=p;return}b=c[a>>2]|0;if((c[b+8>>2]|0)>>>0>1){k=m+4|0;j=1;do{h=c[(lj(b,j)|0)>>2]|0;f=Zg(c[l>>2]|0,c[h>>2]|0)|0;h=h+48|0;oj(c[h>>2]|0);b=c[a>>2]|0;d=c[b+8>>2]|0;if(d>>>0>1){e=1;do{b=c[(lj(b,e)|0)>>2]|0;d=Zg(c[l>>2]|0,c[b>>2]|0)|0;nh(c[l>>2]|0,d,f,1,n)|0;d=c[n>>2]|0;if(d){c[m>>2]=c[b>>2];g[k>>2]=+(d|0)*.000244140625;sj(c[h>>2]|0,m)}e=e+1|0;b=c[a>>2]|0;d=c[b+8>>2]|0}while(e>>>0>>0)}j=j+1|0}while(j>>>0>>0)}dh(c[l>>2]|0)|0;Ci(c[o>>2]|0)|0;i=p;return}function fj(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,h=0;h=i;i=i+16|0;f=h;if(!d)Ra(94640,94496,327,94656);e=sea(1,76)|0;if(!e){d=c[p>>2]|0;c[f>>2]=332;Uc(d|0,95288,f|0)|0;f=0;i=h;return f|0}c[e+4>>2]=a;g[e+20>>2]=b;c[e+8>>2]=0;c[e+12>>2]=Yca(d)|0;if(!(tk(e)|0)){f=e;i=h;return f|0}gj(e);f=0;i=h;return f|0}function gj(a){a=a|0;var b=0,d=0,e=0;if(!a)Ra(95336,94496,389,94688);if((c[a+8>>2]|0)==0?(b=c[a+12>>2]|0,(b|0)!=0):0)rea(b);d=(nj(c[a>>2]|0)|0)==0;b=c[a>>2]|0;if(d){d=b;kj(d);rea(a);return}else d=0;while(1){b=c[(lj(b,d)|0)>>2]|0;if(!b){d=8;break}kj(c[b+48>>2]|0);rea(b);d=d+1|0;e=d>>>0<(nj(c[a>>2]|0)|0)>>>0;b=c[a>>2]|0;if(!e){d=10;break}}if((d|0)==8)Ra(95336,94496,186,94552);else if((d|0)==10){kj(b);rea(a);return}}function hj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0.0,t=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+64|0;K=O;M=O+48|0;L=O+12|0;F=O+16|0;G=O+20|0;I=O+24|0;D=O+32|0;if(!a)Ra(95336,94496,428,94712);if(!b)Ra(94744,94496,429,94712);H=a+4|0;C=c[H>>2]|0;e=c[C+4>>2]|0;f=c[C+8>>2]|0;C=c[C+12>>2]|0;C=(C|0)==2?1:C;J=(sk(a,+g[a+20>>2],M,L)|0)==0;d=bda(b)|0;if(J){N=d;i=O;return N|0}a:do if(d){w=a+28|0;x=a+24|0;y=(C|0)==3;z=a+36|0;A=D+4|0;J=c[p>>2]|0;B=a+32|0;u=+(e>>>0);s=+(f>>>0);t=(C|0)==1;v=0;d=0;b:while(1){e=c[a>>2]|0;k=b+(v<<2)|0;c:do if(!(c[e+8>>2]|0)){e=c[k>>2]|0;N=15}else{j=0;while(1){e=c[(lj(e,j)|0)>>2]|0;c[G>>2]=e;f=c[e>>2]|0;h=c[k>>2]|0;if((f|0)==(h|0)){if((f|0)==-1)break c;if((c[e+52>>2]|0)==(c[w>>2]|0)?+g[e+56>>2]==+g[B>>2]:0)break c}j=j+1|0;e=c[a>>2]|0;if(j>>>0>=(c[e+8>>2]|0)>>>0){e=h;N=15;break}}}while(0);do if((N|0)==15){N=0;r=b+(v<<2)|0;q=Zg(c[L>>2]|0,e)|0;e=((c[x>>2]|0)==0?32770:32)|((c[w>>2]|0)>0?8:4);if(y){e=e|196608}e=kg(c[L>>2]|0,q,e)|0;if(e){d=v;N=19;break b}if(!(c[w>>2]|0)){o=c[(c[L>>2]|0)+84>>2]|0;m=c[o+76>>2]|0;h=c[o+80>>2]|0;e=c[o+84>>2]|0;f=c[o+88>>2]|0;n=c[o+100>>2]|0;o=c[o+104>>2]|0}else{e=Fi(c[M>>2]|0,I)|0;if(e){d=e;N=23;break b}Gi(c[I>>2]|0,~~(+g[B>>2]*64.0),1,0,0);e=yi(c[(c[L>>2]|0)+84>>2]|0,F)|0;if(e){d=e;N=25;break b}e=c[w>>2]|0;if((e|0)==1){E=Oi(F,c[I>>2]|0,1)|0;N=30}else if((e|0)==2){E=Pi(F,c[I>>2]|0,0,1)|0;N=30}else if((e|0)==3){E=Pi(F,c[I>>2]|0,1,1)|0;N=30}if((N|0)==30?(N=0,(E|0)!=0):0){d=E;N=31;break b}if(t){e=zi(F,0,0,1)|0;if(e){d=e;N=34;break b}}else{e=zi(F,3,0,1)|0;if(e){d=e;N=36;break b}}n=c[F>>2]|0;m=c[n+28>>2]|0;h=c[n+32>>2]|0;e=c[n+36>>2]|0;f=c[n+40>>2]|0;o=c[n+24>>2]|0;n=c[n+20>>2]|0;Hi(c[I>>2]|0)}k=(h>>>0)/(C>>>0)|0;bj(D,c[H>>2]|0,k+1|0,m+1|0);j=c[D>>2]|0;l=c[A>>2]|0;if((j|0)<0){c[K>>2]=610;Uc(J|0,94824,K|0)|0;d=d+1|0;break}$i(c[H>>2]|0,j,l,k,m,f,e);h=qea(60)|0;if(!h){c[K>>2]=160;Uc(J|0,95288,K|0)|0;h=0}else{c[h+52>>2]=0;g[h+56>>2]=0.0;e=h+4|0;f=e+44|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[h+48>>2]=jj(8)|0}c[G>>2]=h;c[h>>2]=c[r>>2];c[h+8>>2]=k;c[h+12>>2]=m;c[h+52>>2]=c[w>>2];g[h+56>>2]=+g[B>>2];c[h+16>>2]=n;c[h+20>>2]=o;g[h+32>>2]=+(j>>>0)/u;g[h+36>>2]=+(l>>>0)/s;g[h+40>>2]=+((k+j|0)>>>0)/u;g[h+44>>2]=+((m+l|0)>>>0)/s;kg(c[L>>2]|0,q,6)|0;q=c[(c[L>>2]|0)+84>>2]|0;r=c[G>>2]|0;g[r+24>>2]=+(c[q+64>>2]|0)*.015625;g[r+28>>2]=+(c[q+68>>2]|0)*.015625;sj(c[a>>2]|0,G);if((c[w>>2]|0)>0)xi(c[F>>2]|0)}while(0);v=v+1|0;if(v>>>0>=(bda(b)|0)>>>0)break a}if((N|0)==19){I=c[93760+(e<<3)>>2]|0;N=c[93764+(e<<3)>>2]|0;c[K>>2]=502;c[K+4>>2]=I;c[K+8>>2]=N;Uc(J|0,94760,K|0)|0;dh(c[L>>2]|0)|0;Ci(c[M>>2]|0)|0;N=(bda(b)|0)-d|0;i=O;return N|0}else if((N|0)==23){N=c[93764+(d<<3)>>2]|0;c[K>>2]=c[93760+(d<<3)>>2];c[K+4>>2]=N;Uc(J|0,94800,K|0)|0;dh(c[L>>2]|0)|0;Hi(c[I>>2]|0);Ci(c[M>>2]|0)|0;N=0;i=O;return N|0}else if((N|0)==25){N=c[93764+(d<<3)>>2]|0;c[K>>2]=c[93760+(d<<3)>>2];c[K+4>>2]=N;Uc(J|0,94800,K|0)|0;dh(c[L>>2]|0)|0;Hi(c[I>>2]|0);Ci(c[M>>2]|0)|0;N=0;i=O;return N|0}else if((N|0)==31){N=c[93764+(d<<3)>>2]|0;c[K>>2]=c[93760+(d<<3)>>2];c[K+4>>2]=N;Uc(J|0,94800,K|0)|0;dh(c[L>>2]|0)|0;Hi(c[I>>2]|0);Ci(c[M>>2]|0)|0;N=0;i=O;return N|0}else if((N|0)==34){N=c[93764+(d<<3)>>2]|0;c[K>>2]=c[93760+(d<<3)>>2];c[K+4>>2]=N;Uc(J|0,94800,K|0)|0;dh(c[L>>2]|0)|0;Hi(c[I>>2]|0);Ci(c[M>>2]|0)|0;N=0;i=O;return N|0}else if((N|0)==36){N=c[93764+(d<<3)>>2]|0;c[K>>2]=c[93760+(d<<3)>>2];c[K+4>>2]=N;Uc(J|0,94800,K|0)|0;dh(c[L>>2]|0)|0;Hi(c[I>>2]|0);Ci(c[M>>2]|0)|0;N=0;i=O;return N|0}}else d=0;while(0);dh(c[L>>2]|0)|0;Ci(c[M>>2]|0)|0;cj(c[H>>2]|0);ej(a);N=d;i=O;return N|0}function ij(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0.0,r=0.0;o=i;i=i+32|0;n=o+8|0;j=o;m=o+16|0;l=o+12|0;k=j;c[k>>2]=0;c[k+4>>2]=0;if(!a)Ra(95336,94496,663,94864);if(!(c[a+12>>2]|0))Ra(94888,94496,666,94864);k=a+4|0;if(!(c[k>>2]|0))Ra(94904,94496,667,94864);d=c[a>>2]|0;a:do if(c[d+8>>2]|0){e=a+28|0;f=a+32|0;if((b|0)==-1){e=0;while(1){d=c[(lj(d,e)|0)>>2]|0;if((c[d>>2]|0)==-1)break;e=e+1|0;d=c[a>>2]|0;if(e>>>0>=(c[d+8>>2]|0)>>>0)break a}i=o;return d|0}else h=0;while(1){d=c[(lj(d,h)|0)>>2]|0;if(((c[d>>2]|0)==(b|0)?(c[d+52>>2]|0)==(c[e>>2]|0):0)?+g[d+56>>2]==+g[f>>2]:0)break;h=h+1|0;d=c[a>>2]|0;if(h>>>0>=(c[d+8>>2]|0)>>>0)break a}i=o;return d|0}while(0);if((b|0)!=-1){c[j>>2]=b;if(hj(a,j)|0){n=0;i=o;return n|0}n=c[(mj(c[a>>2]|0)|0)>>2]|0;i=o;return n|0}d=c[k>>2]|0;h=c[d+4>>2]|0;j=c[d+8>>2]|0;bj(m,d,5,5);d=qea(60)|0;if(!d){d=c[p>>2]|0;c[n>>2]=160;Uc(d|0,95288,n|0)|0;d=0}else{c[d+52>>2]=0;g[d+56>>2]=0.0;e=d+4|0;f=e+44|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[d+48>>2]=jj(8)|0}c[l>>2]=d;e=c[m>>2]|0;if((e|0)<0){a=c[p>>2]|0;c[n>>2]=698;Uc(a|0,94824,n|0)|0;n=0;i=o;return n|0}else{n=m+4|0;$i(c[k>>2]|0,e,c[n>>2]|0,4,4,94920,0);c[d>>2]=-1;k=c[m>>2]|0;r=+(h>>>0);g[d+32>>2]=+(k+2|0)/r;n=c[n>>2]|0;q=+(j>>>0);g[d+36>>2]=+(n+2|0)/q;g[d+40>>2]=+(k+3|0)/r;g[d+44>>2]=+(n+3|0)/q;sj(c[a>>2]|0,l);n=c[l>>2]|0;i=o;return n|0}return 0}function jj(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;d=e;b=qea(16)|0;if(!a)Ra(95208,95224,46,95272);if(!b){e=c[p>>2]|0;c[d>>2]=51;Uc(e|0,95288,d|0)|0;ld(1)}else{c[b+12>>2]=a;c[b+8>>2]=0;c[b+4>>2]=1;c[b>>2]=qea(a)|0;i=e;return b|0}return 0}function kj(a){a=a|0;if(!a)Ra(95336,95224,67,95344);else{rea(c[a>>2]|0);rea(a);return}}function lj(a,b){a=a|0;b=b|0;var d=0;if(!a)Ra(95336,95224,80,95360);d=c[a+8>>2]|0;if(!d)Ra(95376,95224,81,95360);if(d>>>0>b>>>0)return (c[a>>2]|0)+(da(c[a+12>>2]|0,b)|0)|0;else Ra(95392,95224,82,95360);return 0}function mj(a){a=a|0;var b=0;if(!a)Ra(95336,95224,104,95416);b=c[a+8>>2]|0;if(!b)Ra(95376,95224,105,95416);if(b>>>0>0)return (c[a>>2]|0)+(da(c[a+12>>2]|0,b+-1|0)|0)|0;else Ra(95392,95224,82,95360);return 0}function nj(a){a=a|0;if(!a)Ra(95336,95224,145,95432);else return c[a+8>>2]|0;return 0}function oj(a){a=a|0;if(!a)Ra(95336,95224,194,95448);else{c[a+8>>2]=0;return}}function pj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(!a)Ra(95336,95224,221,95480);i=a+8|0;e=c[i>>2]|0;if(e>>>0>>0)Ra(95496,95224,222,95480);f=a+4|0;g=c[f>>2]|0;if(g>>>0<=e>>>0?(h=g<<1,g>>>0>>0):0){c[a>>2]=tea(c[a>>2]|0,da(c[a+12>>2]|0,h)|0)|0;c[f>>2]=h;e=c[i>>2]|0}if(e>>>0>b>>>0){h=c[a>>2]|0;g=c[a+12>>2]|0;rfa(h+(da(g,b+1|0)|0)|0,h+(da(g,b)|0)|0,da(g,e-b|0)|0)|0;e=c[i>>2]|0}e=e+1|0;c[i>>2]=e;if(!e)Ra(95376,95224,207,95464);if(e>>>0>b>>>0){i=c[a+12>>2]|0;qfa((c[a>>2]|0)+(da(i,b)|0)|0,d|0,i|0)|0;return}else Ra(95392,95224,208,95464)}function qj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if(!a)Ra(95336,95224,245,95520);e=a+8|0;f=c[e>>2]|0;if(f>>>0<=b>>>0)Ra(95544,95224,246,95520);if((f+1|0)>>>0<=d>>>0)Ra(95568,95224,247,95520);if(b>>>0>>0){g=c[a>>2]|0;a=c[a+12>>2]|0;rfa(g+(da(a,b)|0)|0,g+(da(a,d)|0)|0,da(a,f-d|0)|0)|0;c[e>>2]=b-d+(c[e>>2]|0);return}else Ra(95592,95224,248,95520)}function rj(a,b){a=a|0;b=b|0;if(!a)Ra(95336,95224,262,95608);if((c[a+8>>2]|0)>>>0>b>>>0){qj(a,b,b+1|0);return}else Ra(95392,95224,263,95608)}function sj(a,b){a=a|0;b=b|0;pj(a,c[a+8>>2]|0,b);return}function tj(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+16|0;q=w+4|0;v=w;h=b+16|0;u=yg(c[b+100>>2]|0,(c[h>>2]|0)+40|0,v)|0;j=c[v>>2]|0;if(j){b=j;c[e>>2]=u;i=w;return b|0}c[u>>2]=b;m=c[h>>2]|0;t=u+4|0;c[t>>2]=m;k=u+40|0;c[u+8>>2]=k;s=u+36|0;c[s>>2]=f;r=c[b+92>>2]|0;sfa(k|0,127,m|0)|0;if(!(oh(b,1970170211)|0)){m=0;while(1){f=c[(c[2216+(m<<2)>>2]|0)+12>>2]|0;if((f|0)!=0?(n=c[f>>2]|0,(n|0)!=0):0){l=m&255;j=n;do{h=Zg(b,j)|0;c[q>>2]=h;if(((h|0)!=0?h>>>0<(c[t>>2]|0)>>>0:0)?(o=u+(h+40)|0,(a[o>>0]|0)==127):0)a[o>>0]=l;k=f+4|0;h=rh(b,j,q)|0;j=c[q>>2]|0;a:do if(j)do{if(h>>>0>(c[k>>2]|0)>>>0)break a;if(j>>>0<(c[t>>2]|0)>>>0?(p=u+(j+40)|0,(a[p>>0]|0)==127):0)a[p>>0]=l;h=rh(b,h,q)|0;j=c[q>>2]|0}while((j|0)!=0);while(0);f=f+8|0;j=c[f>>2]|0}while((j|0)!=0)}m=m+1|0;if((m|0)==5){j=48;break}}do{h=Zg(b,j)|0;if((h|0)!=0?h>>>0<(c[t>>2]|0)>>>0:0){q=u+(h+40)|0;a[q>>0]=d[q>>0]|128}j=j+1|0}while((j|0)!=58)}if((c[(c[s>>2]|0)+12>>2]|0)!=127?(g=c[t>>2]|0,(g|0)>0):0){f=0;do{h=u+(f+40)|0;j=d[h>>0]|0;if((j&127|0)==127){g=j&128;a[h>>0]=g;a[h>>0]=c[(c[s>>2]|0)+12>>2]|g;g=c[t>>2]|0}f=f+1|0}while((f|0)<(g|0))}ph(b,r)|0;c[v>>2]=0;c[u+12>>2]=0;b=c[v>>2]|0;c[e>>2]=u;i=w;return b|0}function uj(a){a=a|0;var b=0,d=0,e=0;if(!a)return;e=c[(c[a>>2]|0)+100>>2]|0;b=a+16|0;d=c[b>>2]|0;if(d){Ag(e,d);c[b>>2]=0}b=a+20|0;d=c[b>>2]|0;if(d){Ag(e,d);c[b>>2]=0}b=a+24|0;d=c[b>>2]|0;if(d){Ag(e,d);c[b>>2]=0}b=a+28|0;d=c[b>>2]|0;if(d){Ag(e,d);c[b>>2]=0}b=a+32|0;d=c[b>>2]|0;if(d){Ag(e,d);c[b>>2]=0}c[a+4>>2]=0;c[a+8>>2]=0;c[a>>2]=0;Ag(e,a);return}function vj(d,e,f,g,h,i,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=c[d+12>>2]|0;r=c[d+8>>2]|0;l=c[q+36>>2]|0;if((l|0)>0){m=Pd[c[r+4>>2]&511](r,l)|0;s=(m|0)==0;k=s?64:0;if(s)s=0;else{sfa(m|0,0,l|0)|0;s=m}}else{s=0;k=l>>31&6}if(!k){c[s+96>>2]=d;c[s+100>>2]=r;o=s+104|0;c[o>>2]=c[e>>2];if(f<<24>>24){f=s+8|0;c[f>>2]=c[f>>2]|1024}n=Pd[c[r+4>>2]&511](r,60)|0;f=(n|0)==0;k=f?64:0;if(!f){m=n+0|0;l=m+60|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(l|0));c[s+128>>2]=n;c[n+48>>2]=0;a:do if((h|0)>0){l=n+48|0;m=0;d=0;do{if(m)break a;if((c[i+(d<<3)>>2]|0)==1768842098){m=c[i+(d<<3)+4>>2]|0;c[l>>2]=m}else m=0;d=d+1|0}while((d|0)<(h|0))}while(0);m=c[q+48>>2]|0;if(m)k=Qd[m&127](c[e>>2]|0,s,g,h,i)|0;c[e>>2]=c[o>>2];if(!k){f=c[s+40>>2]|0;if(!f){c[j>>2]=s;j=0;return j|0}m=c[s+36>>2]|0;k=m+-1|0;b:do if((k|0)<0)p=28;else{l=f+(k<<2)|0;c:while(1){k=c[l>>2]|0;do if((c[k+4>>2]|0)==1970170211){d=b[k+8>>1]|0;if(d<<16>>16==3)if((b[k+10>>1]|0)==10)break c;else break;else if(d<<16>>16==0?(b[k+10>>1]|0)==4:0)break c;else break}while(0);l=l+-4|0;if(l>>>0>>0){p=28;break b}}c[s+92>>2]=k}while(0);d:do if((p|0)==28){l=f+(m<<2)|0;do{l=l+-4|0;if(l>>>0>>0)break d;k=c[l>>2]|0}while((c[k+4>>2]|0)!=1970170211);c[s+92>>2]=k}while(0);c[j>>2]=s;j=0;return j|0}else o=k}else{o=64;n=0}}else{o=k;n=0}h=(s|0)==0;if(!h){f=s+36|0;g=s+40|0;k=c[g>>2]|0;if((c[f>>2]|0)>0){d=0;do{k=c[k+(d<<2)>>2]|0;m=c[(c[k>>2]|0)+100>>2]|0;l=c[(c[k+12>>2]|0)+8>>2]|0;if(l)Bd[l&511](k);Cd[c[m+8>>2]&255](m,k);c[(c[g>>2]|0)+(d<<2)>>2]=0;d=d+1|0;k=c[g>>2]|0}while((d|0)<(c[f>>2]|0))}if(k)Cd[c[r+8>>2]&255](r,k);c[g>>2]=0;c[f>>2]=0}k=c[q+52>>2]|0;if(k)Bd[k&511](s);if(n)Cd[c[r+8>>2]&255](r,n);if(!h)Cd[c[r+8>>2]&255](r,s);c[j>>2]=0;j=o;return j|0}function wj(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+16|0;l=A+4|0;u=A;v=c[a>>2]|0;x=b+8|0;y=c[x>>2]|0;z=b+4|0;if((y+3|0)>>>0>=(c[z>>2]|0)>>>0){b=85;i=A;return b|0}w=b+20|0;g=c[w>>2]|0;do if(!g){g=(c[b>>2]|0)+y|0;if(!g){c[x>>2]=y+4;g=2}else{j=y;s=7}}else if((Xd[g&255](b,y,u,4)|0)==4){j=c[x>>2]|0;g=u;s=7;break}else{b=85;i=A;return b|0}while(0);do if((s|0)==7){t=(d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0);h=j+4|0;c[x>>2]=h;if((t|0)==1954115633){k=c[z>>2]|0;if((j+5|0)>>>0>=k>>>0){b=85;i=A;return b|0}g=c[w>>2]|0;do if(!g){g=(c[b>>2]|0)+h|0;if(!g){c[x>>2]=j+6;g=j+12|0;h=0;s=17}else{j=0;k=h;s=14}}else if((Xd[g&255](b,h,l,2)|0)==2){j=c[w>>2]|0;k=c[x>>2]|0;g=l;s=14;break}else{b=85;i=A;return b|0}while(0);do if((s|0)==14){h=(d[g>>0]|0)<<8|(d[g+1>>0]|0);c[x>>2]=k+2;g=k+8|0;if(!j){k=c[z>>2]|0;s=17;break}if(Xd[j&255](b,g,0,0)|0){b=85;i=A;return b|0}}while(0);if((s|0)==17)if(k>>>0>>0){b=85;i=A;return b|0}c[x>>2]=g;if((h|0)<=0){b=142;i=A;return b|0}r=(e|0)>-1;t=(e|0)<0;p=0;m=g;q=0;j=-1;a:while(1){k=c[z>>2]|0;if((m+3|0)>>>0>=k>>>0){g=85;s=67;break}g=c[w>>2]|0;if(!g){g=(c[b>>2]|0)+m|0;if(!g){c[x>>2]=m+4;g=m+8|0;l=0;s=31}else{k=0;s=27}}else{if((Xd[g&255](b,m,u,4)|0)!=4){g=85;s=67;break}m=c[x>>2]|0;k=c[w>>2]|0;g=u;s=27}do if((s|0)==27){s=0;l=(d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0);c[x>>2]=m+4;g=m+8|0;if(!k){k=c[z>>2]|0;s=31;break}if(Xd[k&255](b,g,0,0)|0){g=85;s=67;break a}n=g;k=c[z>>2]|0;o=l}while(0);if((s|0)==31){s=0;if(k>>>0>>0){g=85;s=67;break}else{n=g;o=l}}c[x>>2]=n;if((m+11|0)>>>0>=k>>>0){g=85;s=67;break}g=c[w>>2]|0;if(!g){m=(c[b>>2]|0)+n|0;if(!m){l=n;g=0}else{g=n;s=37}}else{if((Xd[g&255](b,n,u,4)|0)!=4){g=85;s=67;break}g=c[x>>2]|0;k=c[z>>2]|0;m=u;s=37}if((s|0)==37){s=0;l=g;g=(d[m+1>>0]|0)<<16|(d[m>>0]|0)<<24|(d[m+2>>0]|0)<<8|(d[m+3>>0]|0)}m=l+4|0;c[x>>2]=m;if((l+7|0)>>>0>=k>>>0){g=85;s=67;break}k=c[w>>2]|0;if(!k){l=(c[b>>2]|0)+m|0;if(!l)k=0;else{k=m;s=43}}else{if((Xd[k&255](b,m,u,4)|0)!=4){g=85;s=67;break}k=c[x>>2]|0;l=u;s=43}if((s|0)==43){m=k;k=(d[l+1>>0]|0)<<16|(d[l>>0]|0)<<24|(d[l+2>>0]|0)<<8|(d[l+3>>0]|0)}m=m+4|0;c[x>>2]=m;if((o|0)==1128875040){g=g+22|0;k=k+-22|0;if(t){n=k;m=1;s=48;break}else{l=1;j=j+1|0}}else if((o|0)==1415139377){g=g+24|0;k=k+-24|0;if(t){n=k;m=0;s=48;break}else{l=0;j=j+1|0}}else l=p;q=q+1|0;if(r&(j|0)==(e|0)){n=k;m=l;s=48;break}if((q|0)>=(h|0)){g=142;s=67;break}else p=l}if((s|0)==48){g=g+y|0;h=c[w>>2]|0;if(!h){if((c[z>>2]|0)>>>0>>0){b=0;i=A;return b|0}}else if(Xd[h&255](b,g,0,0)|0){b=0;i=A;return b|0}c[x>>2]=g;if((n|0)>0){h=Pd[c[v+4>>2]&511](v,n)|0;v=(h|0)==0;g=v?64:0;if(v)h=0;else sfa(h|0,0,n|0)|0}else{h=0;g=n>>31&6}do if(!g){k=c[x>>2]|0;g=c[z>>2]|0;if(g>>>0<=k>>>0){b=85;i=A;return b|0}j=c[w>>2]|0;if(!j){g=g-k|0;g=g>>>0>n>>>0?n:g;qfa(h|0,(c[b>>2]|0)+k|0,g|0)|0}else g=Xd[j&255](b,k,h,n)|0;c[x>>2]=g+k;if(g>>>0>>0){b=85;i=A;return b|0}else{g=Kr(a,h,n,t?e:0,m<<24>>24!=0?3256:86440,f)|0;break}}while(0);if((g&255|0)==2)break;i=A;return g|0}else if((s|0)==67){i=A;return g|0}}else g=2}while(0);h=c[w>>2]|0;if(!h){if((c[z>>2]|0)>>>0>>0){b=85;i=A;return b|0}}else if(Xd[h&255](b,y,0,0)|0){b=85;i=A;return b|0}c[x>>2]=y;b=g;i=A;return b|0}function xj(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+128|0;m=n;if(!e){m=85;i=n;return m|0}j=e+20|0;h=c[j>>2]|0;if((h|0)!=0?(Xd[h&255](e,0,0,0)|0)!=0:0){m=85;i=n;return m|0}l=e+8|0;c[l>>2]=0;k=c[e+4>>2]|0;if(!k){m=85;i=n;return m|0}h=c[j>>2]|0;if(!h){h=k>>>0>128?128:k;qfa(m|0,c[e>>2]|0,h|0)|0}else h=Xd[h&255](e,0,m,128)|0;c[l>>2]=h;if(h>>>0<128){m=85;i=n;return m|0}if(a[m>>0]|0){m=2;i=n;return m|0}if(a[m+74>>0]|0){m=2;i=n;return m|0}if(a[m+82>>0]|0){m=2;i=n;return m|0}h=a[m+1>>0]|0;if((h+-1&255)>32){m=2;i=n;return m|0}if(a[m+63>>0]|0){m=2;i=n;return m|0}if(a[m+((h&255)+2)>>0]|0){m=2;i=n;return m|0}m=yj(b,e,(d[m+84>>0]<<16|d[m+83>>0]<<24|d[m+85>>0]<<8|d[m+86>>0])+255&-128,f,g)|0;i=n;return m|0}function yj(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=i;i=i+32|0;B=H+20|0;D=H+16|0;j=H+4|0;l=H+8|0;G=H;k=H+12|0;F=c[b>>2]|0;f=Kh(0,e,f,j,l)|0;if(f){G=f;i=H;return G|0}j=c[j>>2]|0;f=c[l>>2]|0;if(Oh(b,e,j,f,1347375956,G,k)|0){f=Oh(b,e,j,f,1936092788,G,k)|0;if(f){G=f;i=H;return G|0}r=c[k>>2]|0;j=(g|0)%(r|0)|0;m=c[b>>2]|0;j=(j|0)==-1?0:j;q=c[G>>2]|0;do if((j|0)<(r|0)){k=c[q+(j<<2)>>2]|0;n=e+20|0;f=c[n>>2]|0;if(!f){f=c[e+4>>2]|0;if(f>>>0>>0){f=85;break}}else{if(Xd[f&255](e,k,0,0)|0){f=85;break}f=c[e+4>>2]|0}p=e+8|0;c[p>>2]=k;o=e+4|0;if((k+3|0)>>>0>>0){f=c[n>>2]|0;if(!f){f=(c[e>>2]|0)+k|0;if(!f){c[p>>2]=k+4;g=0}else{l=k;E=76}}else{if((Xd[f&255](e,k,D,4)|0)!=4){f=85;break}l=c[p>>2]|0;f=D;E=76}if((E|0)==76){f=(d[f+1>>0]|0)<<16|(d[f>>0]|0)<<24|(d[f+2>>0]|0)<<8|(d[f+3>>0]|0);c[p>>2]=l+4;if((f|0)==-1){f=1;break}else g=f}f=wj(b,e,j,h)|0;if(f){j=k+4|0;k=c[n>>2]|0;if(!k){if((c[o>>2]|0)>>>0>>0)break}else if(Xd[k&255](e,j,0,0)|0)break;c[p>>2]=j;if((g|0)>0){j=Pd[c[m+4>>2]&511](m,g)|0;E=(j|0)==0;f=E?64:0;if(E)j=0;else sfa(j|0,0,g|0)|0}else{j=0;f=g>>31&6}if(!f){l=c[p>>2]|0;k=c[o>>2]|0;if(k>>>0>l>>>0){f=c[n>>2]|0;if(!f){f=k-l|0;f=f>>>0>g>>>0?g:f;qfa(j|0,(c[e>>2]|0)+l|0,f|0)|0}else f=Xd[f&255](e,l,j,g)|0;c[p>>2]=f+l;if(f>>>0>=g>>>0){if((g|0)>4){f=(ffa(j,3248,4)|0)!=0;f=f?90336:6536}else f=90336;f=Kr(b,j,g,0,f,h)|0}else f=85}else f=85}}else f=0}else f=85}else f=1;while(0);if(q)Cd[c[F+8>>2]&255](F,q);c[G>>2]=0;if(f){G=f;i=H;return G|0}c[c[h>>2]>>2]=r;G=0;i=H;return G|0}A=c[G>>2]|0;y=c[k>>2]|0;z=c[b>>2]|0;a:do if((g|0)==0|(g|0)==-1){p=(y|0)>0;if(p){m=e+20|0;g=e+4|0;n=e+8|0;o=0;f=0;while(1){k=c[A+(o<<2)>>2]|0;l=c[m>>2]|0;if(!l){l=c[g>>2]|0;if(l>>>0>>0){f=85;break a}}else{if(Xd[l&255](e,k,0,0)|0){f=85;break a}l=c[g>>2]|0}c[n>>2]=k;if((k+3|0)>>>0>=l>>>0){f=85;break a}l=c[m>>2]|0;if(!l){j=(c[e>>2]|0)+k|0;if(!j)l=6;else{l=k;E=15}}else{if((Xd[l&255](e,k,D,4)|0)!=4){f=85;break a}l=c[n>>2]|0;j=D;E=15}if((E|0)==15){E=0;k=l;l=((d[j+1>>0]|0)<<16|(d[j>>0]|0)<<24|(d[j+2>>0]|0)<<8|(d[j+3>>0]|0))+6|0}c[n>>2]=k+4;f=l+f|0;o=o+1|0;if((o|0)>=(y|0)){k=f;break}}f=k+2|0;if((f|0)>0){l=f;E=19}else{x=f;j=0;f=f>>31&6;w=k}}else{l=2;k=0;E=19}if((E|0)==19){j=Pd[c[z+4>>2]&511](z,l)|0;x=(j|0)==0;f=x?64:0;if(x){x=l;j=0;w=k}else{sfa(j|0,0,l|0)|0;x=l;w=k}}if(!f){a[j>>0]=-128;a[j+1>>0]=1;v=j+2|0;a[v>>0]=0;a[v+1>>0]=0;a[v+2>>0]=0;a[v+3>>0]=0;b:do if(p){s=e+20|0;t=e+4|0;u=e+8|0;v=0;k=0;l=2;f=6;r=1;while(1){o=c[A+(v<<2)>>2]|0;g=c[s>>2]|0;if(!g){g=c[t>>2]|0;if(g>>>0>>0){f=85;break b}}else{if(Xd[g&255](e,o,0,0)|0){f=85;break b}g=c[t>>2]|0}c[u>>2]=o;if((o+3|0)>>>0>=g>>>0){f=85;break a}m=c[s>>2]|0;if(!m){n=(c[e>>2]|0)+o|0;if(!n)p=0;else{m=o;E=33}}else{if((Xd[m&255](e,o,D,4)|0)!=4){f=85;break a}m=c[u>>2]|0;g=c[t>>2]|0;n=D;E=33}if((E|0)==33){E=0;o=m;p=(d[n+1>>0]|0)<<16|(d[n>>0]|0)<<24|(d[n+2>>0]|0)<<8|(d[n+3>>0]|0)}n=o+4|0;c[u>>2]=n;if((o+5|0)>>>0>=g>>>0){f=85;break a}m=c[s>>2]|0;if(!m){m=(c[e>>2]|0)+n|0;if(!m){c[u>>2]=o+6;m=r}else{g=n;E=40}}else{if((Xd[m&255](e,n,B,2)|0)!=2){f=85;break a}g=c[u>>2]|0;m=B;E=40}if((E|0)==40){E=0;o=a[m>>0]|0;n=o&255;c[u>>2]=g+2;if(o<<24>>24){q=(p|0)>2?p+-2|0:0;if((n|0)==(r|0)){k=q+k|0;m=f;p=r}else{g=l+3|0;if((g|0)>(x|0)){f=0;break b}a[j+l>>0]=k;a[j+(l+1)>>0]=k>>>8;a[j+(l+2)>>0]=k>>>16;a[j+g>>0]=k>>>24;if(o<<24>>24==5){E=55;break b}l=f+4|0;if((l|0)>(w|0)){f=0;break b}a[j+f>>0]=-128;m=f+2|0;a[j+(f+1)>>0]=o;a[j+m>>0]=0;a[j+(f+3)>>0]=0;a[j+l>>0]=0;a[j+(f+5)>>0]=0;k=q;l=m;m=f+6|0;p=n}if((m|0)>(w|0)){f=1;break b}f=m+q|0;if((f|0)>(w|0)){f=1;break b}m=j+m|0;o=c[u>>2]|0;g=c[t>>2]|0;if(g>>>0<=o>>>0){f=85;break b}n=c[s>>2]|0;if(!n){r=g-o|0;r=r>>>0>q>>>0?q:r;qfa(m|0,(c[e>>2]|0)+o|0,r|0)|0;m=r}else m=Xd[n&255](e,o,m,q)|0;c[u>>2]=m+o;if(m>>>0>>0){f=85;break b}else m=p}else m=r}v=v+1|0;if((v|0)>=(y|0)){E=55;break}else r=m}}else{k=0;l=2;f=6;E=55}while(0);if((E|0)==55)if((f|0)<=(w|0)?(a[j+f>>0]=-128,a[j+(f+1)>>0]=3,C=l+3|0,(C|0)<=(x|0)):0){a[j+l>>0]=k;a[j+(l+1)>>0]=k>>>8;a[j+(l+2)>>0]=k>>>16;a[j+C>>0]=k>>>24;f=Kr(b,j,f+2|0,0,86440,h)|0;break}else f=0;if(j)Cd[c[z+8>>2]&255](z,j)}}else f=1;while(0);if(A)Cd[c[F+8>>2]&255](F,A);c[G>>2]=0;if(f){G=f;i=H;return G|0}c[c[h>>2]>>2]=1;G=0;i=H;return G|0}function zj(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+112|0;t=v+72|0;s=v;r=v+36|0;u=c[b>>2]|0;q=g+12|0;g=c[q>>2]|0;h=(d|0)==0;j=d+20|0;k=d+8|0;n=0;do{l=t+(n<<2)|0;c[l>>2]=0;do if(h){c[r+(n<<2)>>2]=0;o=8}else{m=c[j>>2]|0;if((m|0)!=0?(Xd[m&255](d,0,0,0)|0)!=0:0){c[r+(n<<2)>>2]=85;break}c[k>>2]=0;c[r+(n<<2)>>2]=0;o=8}while(0);if((o|0)==8){o=0;c[r+(n<<2)>>2]=Qd[c[2992+(n<<3)>>2]&127](b,d,g,l,s+(n<<2)|0)|0}n=n+1|0}while((n|0)!=9);n=(b|0)==0;h=2;p=0;l=0;a:while(1){m=((c[2996+(p<<3)>>2]|0)+-3|0)>>>0<2;b:do if(l<<24>>24==0|m^1?(c[r+(p<<2)>>2]|0)==0:0){g=c[t+(p<<2)>>2]|0;if(!g)g=c[q>>2]|0;do if(!n){d=c[b>>2]|0;o=Pd[c[d+4>>2]&511](d,40)|0;if(!o)g=64;else{k=o+0|0;h=k+40|0;do{a[k>>0]=0;k=k+1|0}while((k|0)<(h|0));k=o+28|0;c[k>>2]=d;h=Qi(o,g)|0;c[o+16>>2]=g;if(h){Cd[c[d+8>>2]&255](d,o);g=h;break}c[k>>2]=d;h=yj(b,o,c[s+(p<<2)>>2]|0,e,f)|0;g=c[k>>2]|0;j=c[o+24>>2]|0;if(j)Bd[j&511](o);Cd[c[g+8>>2]&255](g,o);if(!h){k=0;break a}g=m?1:l;break b}}else g=33;while(0);h=g;g=m&(g&255|0)==81?1:l}else g=l;while(0);p=p+1|0;if((p|0)>=9){k=h;break}else l=g}d=u+8|0;g=c[t>>2]|0;if(g){Cd[c[d>>2]&255](u,g);c[t>>2]=0}g=t+4|0;h=c[g>>2]|0;if(h){Cd[c[d>>2]&255](u,h);c[g>>2]=0}g=t+8|0;h=c[g>>2]|0;if(h){Cd[c[d>>2]&255](u,h);c[g>>2]=0}g=t+12|0;h=c[g>>2]|0;if(h){Cd[c[d>>2]&255](u,h);c[g>>2]=0}g=t+16|0;h=c[g>>2]|0;if(h){Cd[c[d>>2]&255](u,h);c[g>>2]=0}g=t+20|0;h=c[g>>2]|0;if(h){Cd[c[d>>2]&255](u,h);c[g>>2]=0}g=t+24|0;h=c[g>>2]|0;if(h){Cd[c[d>>2]&255](u,h);c[g>>2]=0}g=t+28|0;h=c[g>>2]|0;if(h){Cd[c[d>>2]&255](u,h);c[g>>2]=0}g=t+32|0;h=c[g>>2]|0;if(!h){u=(k|0)==0;u=u?0:2;i=v;return u|0}Cd[c[d>>2]&255](u,h);c[g>>2]=0;u=(k|0)==0;u=u?0:2;i=v;return u|0}function Aj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=d+12|0;l=c[k>>2]|0;d=c[b+120>>2]|0;if(d)Bd[d&511](c[b+116>>2]|0);e=b+84|0;d=c[e>>2]|0;if(d)do{Ug(d);d=c[e>>2]|0}while((d|0)!=0);i=b+108|0;d=c[i>>2]|0;if(d){j=a+8|0;do{h=d;d=c[d+4>>2]|0;f=c[h+8>>2]|0;g=c[f+8>>2]|0;if(g)Bd[g&511](f);g=c[(c[k>>2]|0)+60>>2]|0;if(g)Bd[g&511](f);g=f+40|0;e=c[g>>2]|0;if(e)Cd[c[j>>2]&255](a,e);c[g>>2]=0;if(f)Cd[c[j>>2]&255](a,f);if(h)Cd[c[j>>2]&255](a,h)}while((d|0)!=0)}c[i>>2]=0;c[b+112>>2]=0;c[b+88>>2]=0;d=c[b+48>>2]|0;if(d)Bd[d&511](b);k=(b|0)==0;if(!k){i=b+36|0;h=b+40|0;d=c[h>>2]|0;if((c[i>>2]|0)>0){f=0;do{d=c[d+(f<<2)>>2]|0;g=c[(c[d>>2]|0)+100>>2]|0;e=c[(c[d+12>>2]|0)+8>>2]|0;if(e)Bd[e&511](d);Cd[c[g+8>>2]&255](g,d);c[(c[h>>2]|0)+(f<<2)>>2]=0;f=f+1|0;d=c[h>>2]|0}while((f|0)<(c[i>>2]|0))}if(d)Cd[c[a+8>>2]&255](a,d);c[h>>2]=0;c[i>>2]=0}d=c[l+52>>2]|0;if(d)Bd[d&511](b);e=b+104|0;f=c[e>>2]|0;d=c[b+8>>2]&1024;if(f){g=c[f+28>>2]|0;h=c[f+24>>2]|0;if(h)Bd[h&511](f);if(!d)Cd[c[g+8>>2]&255](g,f)}c[e>>2]=0;d=b+128|0;e=c[d>>2]|0;if(e){Cd[c[a+8>>2]&255](a,e);c[d>>2]=0}if(k)return;Cd[c[a+8>>2]&255](a,b);return}function Bj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=b[a+70>>1]|0;e=f<<16>>16;i=c[d+8>>2]|0;g=(i|0)==65536;if(!(f<<16>>16==0|g)){f=f<<16>>16<0?0-e|0:e;h=(i|0)<0?0-i|0:i;if(f>>>0<2049&h>>>0<1048577)f=((da(h,f)|0)+32768|0)>>>16;else{j=f&65535;f=(da(h>>>16,j)|0)+(da(f>>>16,h)|0)+(((da(h&65535,j)|0)+32768|0)>>>16)|0}e=(i^e|0)<0?0-f|0:f}c[d+12>>2]=e+63&-64;f=b[a+72>>1]|0;e=f<<16>>16;if(!(f<<16>>16==0|g)){h=f<<16>>16<0?0-e|0:e;f=(i|0)<0?0-i|0:i;if(h>>>0<2049&f>>>0<1048577)f=((da(f,h)|0)+32768|0)>>>16;else{j=h&65535;f=(da(f>>>16,j)|0)+(da(h>>>16,f)|0)+(((da(f&65535,j)|0)+32768|0)>>>16)|0}e=(i^e|0)<0?0-f|0:f}c[d+16>>2]=e&-64;f=b[a+74>>1]|0;e=f<<16>>16;if(!(f<<16>>16==0|g)){f=f<<16>>16<0?0-e|0:e;g=(i|0)<0?0-i|0:i;if(f>>>0<2049&g>>>0<1048577)f=((da(g,f)|0)+32768|0)>>>16;else{j=f&65535;f=(da(g>>>16,j)|0)+(da(f>>>16,g)|0)+(((da(g&65535,j)|0)+32768|0)>>>16)|0}e=(i^e|0)<0?0-f|0:f}c[d+20>>2]=e+32&-64;e=b[a+76>>1]|0;g=e<<16>>16;h=c[d+4>>2]|0;if(e<<16>>16==0|(h|0)==65536){a=g;a=a+32|0;a=a&-64;d=d+24|0;c[d>>2]=a;return}e=e<<16>>16<0?0-g|0:g;f=(h|0)<0?0-h|0:h;if(e>>>0<2049&f>>>0<1048577)e=((da(f,e)|0)+32768|0)>>>16;else{a=e&65535;e=(da(f>>>16,a)|0)+(da(e>>>16,f)|0)+(((da(f&65535,a)|0)+32768|0)>>>16)|0}a=(h^g|0)<0?0-e|0:e;a=a+32|0;a=a&-64;d=d+24|0;c[d>>2]=a;return}function Cj(a,c){a=a|0;c=c|0;var d=0;d=b[a>>1]|0;a=b[c>>1]|0;if((d&65535)<(a&65535)){c=-1;return c|0}c=(d&65535)>(a&65535)&1;return c|0}function Dj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;o=r+8|0;p=r;j=(da(d,-11796480)|0)+5898240|0;g=b+4|0;h=(mi(c[b>>2]|0,c[g>>2]|0)|0)/2|0;q=b+(d<<5)+80|0;f=b+60|0;if(!((a[q>>0]|0)==0|(e|0)==0)?(n=c[f>>2]|0,n=qg(n,ii(h)|0)|0,n=(n|0)>-1?n:0-n|0,!((n|0)>(e|0)?1:(c[b+16>>2]|0)<(n|0))):0){g=c[b>>2]|0;e=gi(h)|0;li(p,rg(c[f>>2]|0,e)|0,h+j+g|0);j=(c[p>>2]|0)+(c[b+8>>2]|0)|0;c[p>>2]=j;f=p+4|0;h=(c[f>>2]|0)+(c[b+12>>2]|0)|0;c[f>>2]=h;f=b+(d<<5)+64|0;g=c[f>>2]|0;if(!(a[q>>0]|0)){n=f;f=h;m=6}else{o=p;p=c[o+4>>2]|0;f=(c[b+(d<<5)+72>>2]|0)+(g+-1<<3)|0;c[f>>2]=c[o>>2];c[f+4>>2]=p;f=0}}else{li(p,c[f>>2]|0,(c[g>>2]|0)+j|0);j=(c[p>>2]|0)+(c[b+8>>2]|0)|0;c[p>>2]=j;g=p+4|0;f=(c[g>>2]|0)+(c[b+12>>2]|0)|0;c[g>>2]=f;a[q>>0]=0;g=b+(d<<5)+64|0;n=g;g=c[g>>2]|0;m=6}do if((m|0)==6){if(((g|0)!=0?(k=g+-1|0,l=c[b+(d<<5)+72>>2]|0,((c[l+(k<<3)>>2]|0)+1-j|0)>>>0<3):0)?((c[l+(k<<3)+4>>2]|0)+1-f|0)>>>0<3:0){q=0;i=r;return q|0}l=b+(d<<5)+68|0;k=c[l>>2]|0;j=g+1|0;c[o>>2]=0;if(j>>>0>k>>>0){e=c[b+(d<<5)+88>>2]|0;f=k;do f=f+16+(f>>>1)|0;while(f>>>0>>0);g=f;h=b+(d<<5)+72|0;c[h>>2]=Dg(e,8,k,g,c[h>>2]|0,o)|0;f=c[o>>2]|0;if(f)break;f=b+(d<<5)+76|0;j=Dg(e,1,k,g,c[f>>2]|0,o)|0;c[f>>2]=j;f=c[o>>2]|0;if(f)break;c[l>>2]=g;g=c[n>>2]|0;f=j}else{h=b+(d<<5)+72|0;f=c[b+(d<<5)+76>>2]|0}d=p;b=c[d+4>>2]|0;p=(c[h>>2]|0)+(g<<3)|0;c[p>>2]=c[d>>2];c[p+4>>2]=b;a[f+g>>0]=1;c[n>>2]=(c[n>>2]|0)+1;f=0}while(0);a[q>>0]=0;q=f;i=r;return q|0}function Ej(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+64|0;E=O+48|0;K=O+44|0;D=O+40|0;t=O+36|0;C=O+32|0;u=O+8|0;x=O+24|0;L=O;F=O+16|0;N=b+(d<<5)+64|0;f=c[b+48>>2]|0;if(!f){N=Lr(b,d)|0;i=O;return N|0}w=b+60|0;G=c[w>>2]|0;M=(da(d,-11796480)|0)+5898240|0;h=(f|0)==1;g=(f|0)==2;do if(!h){f=b+4|0;n=mi(c[b>>2]|0,c[f>>2]|0)|0;if((n|0)==11796480){v=c[b>>2]|0;l=M}else{l=(n|0)/2|0;v=l+M+(c[b>>2]|0)|0}n=gi(l)|0;j=b+56|0;o=qg(c[j>>2]|0,n)|0;if((o|0)<65536){if(!g)break;if((((l|0)>-1?l:0-l|0)|0)>57){li(x,qg(G,c[j>>2]|0)|0,v);q=b+8|0;c[x>>2]=(c[x>>2]|0)+(c[q>>2]|0);t=b+12|0;m=x+4|0;c[m>>2]=(c[m>>2]|0)+(c[t>>2]|0);f=hi(l)|0;o=og(G,65536-o|0,(f|0)>-1?f:0-f|0)|0;li(L,o,v+M|0);f=(c[L>>2]|0)+(c[x>>2]|0)|0;c[L>>2]=f;p=L+4|0;n=(c[p>>2]|0)+(c[m>>2]|0)|0;c[p>>2]=n;u=b+(d<<5)+80|0;j=c[N>>2]|0;do if(!(a[u>>0]|0)){if(((j|0)!=0?(r=j+-1|0,s=c[b+(d<<5)+72>>2]|0,((c[s+(r<<3)>>2]|0)+1-f|0)>>>0<3):0)?(1-n+(c[s+(r<<3)+4>>2]|0)|0)>>>0<3:0)break;k=b+(d<<5)+68|0;l=c[k>>2]|0;n=j+1|0;c[E>>2]=0;do if(n>>>0>l>>>0){h=c[b+(d<<5)+88>>2]|0;f=l;do f=f+16+(f>>>1)|0;while(f>>>0>>0);j=f;g=b+(d<<5)+72|0;c[g>>2]=Dg(h,8,l,j,c[g>>2]|0,E)|0;f=c[E>>2]|0;if(!f){f=b+(d<<5)+76|0;n=Dg(h,1,l,j,c[f>>2]|0,E)|0;c[f>>2]=n;f=c[E>>2]|0;if(!f){c[k>>2]=j;j=c[N>>2]|0;f=n;break}}a[u>>0]=0;N=f;i=O;return N|0}else{g=b+(d<<5)+72|0;f=c[b+(d<<5)+76>>2]|0}while(0);E=L;F=c[E+4>>2]|0;H=(c[g>>2]|0)+(j<<3)|0;c[H>>2]=c[E>>2];c[H+4>>2]=F;a[f+j>>0]=1;c[N>>2]=(c[N>>2]|0)+1;H=37}else{E=L;F=c[E+4>>2]|0;H=(c[b+(d<<5)+72>>2]|0)+(j+-1<<3)|0;c[H>>2]=c[E>>2];c[H+4>>2]=F;H=37}while(0);if((H|0)==37)a[u>>0]=0;li(L,o,v-M|0);g=(c[L>>2]|0)+(c[x>>2]|0)|0;c[L>>2]=g;f=(c[p>>2]|0)+(c[m>>2]|0)|0;c[p>>2]=f;j=c[N>>2]|0;do if(!(a[u>>0]|0)){if(((j|0)!=0?(y=j+-1|0,z=c[b+(d<<5)+72>>2]|0,((c[z+(y<<3)>>2]|0)+1-g|0)>>>0<3):0)?(1-f+(c[z+(y<<3)+4>>2]|0)|0)>>>0<3:0){f=0;break}k=b+(d<<5)+68|0;l=c[k>>2]|0;g=j+1|0;c[D>>2]=0;if(g>>>0>l>>>0){h=c[b+(d<<5)+88>>2]|0;f=l;do f=f+16+(f>>>1)|0;while(f>>>0>>0);j=f;g=b+(d<<5)+72|0;c[g>>2]=Dg(h,8,l,j,c[g>>2]|0,D)|0;f=c[D>>2]|0;if(f){H=52;break}f=b+(d<<5)+76|0;h=Dg(h,1,l,j,c[f>>2]|0,D)|0;c[f>>2]=h;f=c[D>>2]|0;if(f){H=52;break}c[k>>2]=j;j=c[N>>2]|0;f=h}else{g=b+(d<<5)+72|0;f=c[b+(d<<5)+76>>2]|0}E=L;F=c[E+4>>2]|0;H=(c[g>>2]|0)+(j<<3)|0;c[H>>2]=c[E>>2];c[H+4>>2]=F;a[f+j>>0]=1;c[N>>2]=(c[N>>2]|0)+1;f=0;H=52}else{F=L;H=c[F+4>>2]|0;f=(c[b+(d<<5)+72>>2]|0)+(j+-1<<3)|0;c[f>>2]=c[F>>2];c[f+4>>2]=H;f=0;H=52}while(0);if((H|0)==52)a[u>>0]=0;if(f|e){N=f;i=O;return N|0}li(L,G,(c[b+4>>2]|0)+M|0);j=(c[L>>2]|0)+(c[q>>2]|0)|0;c[L>>2]=j;f=(c[p>>2]|0)+(c[t>>2]|0)|0;c[p>>2]=f;g=c[N>>2]|0;do if(!(a[u>>0]|0)){if(((g|0)!=0?(I=g+-1|0,J=c[b+(d<<5)+72>>2]|0,((c[J+(I<<3)>>2]|0)+1-j|0)>>>0<3):0)?(1-f+(c[J+(I<<3)+4>>2]|0)|0)>>>0<3:0){N=0;i=O;return N|0}m=b+(d<<5)+68|0;l=c[m>>2]|0;j=g+1|0;c[K>>2]=0;if(j>>>0>l>>>0){k=c[b+(d<<5)+88>>2]|0;f=l;do f=f+16+(f>>>1)|0;while(f>>>0>>0);g=f;h=b+(d<<5)+72|0;c[h>>2]=Dg(k,8,l,g,c[h>>2]|0,K)|0;f=c[K>>2]|0;if(f)break;f=b+(d<<5)+76|0;j=Dg(k,1,l,g,c[f>>2]|0,K)|0;c[f>>2]=j;f=c[K>>2]|0;if(f)break;c[m>>2]=g;g=c[N>>2]|0;f=j}else{h=b+(d<<5)+72|0;f=c[b+(d<<5)+76>>2]|0}e=c[L+4>>2]|0;b=(c[h>>2]|0)+(g<<3)|0;c[b>>2]=c[L>>2];c[b+4>>2]=e;a[f+g>>0]=1;c[N>>2]=(c[N>>2]|0)+1;f=0}else{e=L;N=c[e+4>>2]|0;f=(c[b+(d<<5)+72>>2]|0)+(g+-1<<3)|0;c[f>>2]=c[e>>2];c[f+4>>2]=N;f=0}while(0);a[u>>0]=0;N=f;i=O;return N|0}}if(!h){li(F,rg(c[w>>2]|0,n)|0,v);n=b+8|0;f=(c[F>>2]|0)+(c[n>>2]|0)|0;c[F>>2]=f;m=b+12|0;o=F+4|0;g=(c[o>>2]|0)+(c[m>>2]|0)|0;c[o>>2]=g;r=b+(d<<5)+80|0;j=c[N>>2]|0;do if(!(a[r>>0]|0)){if(((j|0)!=0?(p=j+-1|0,q=c[b+(d<<5)+72>>2]|0,((c[q+(p<<3)>>2]|0)+1-f|0)>>>0<3):0)?(1-g+(c[q+(p<<3)+4>>2]|0)|0)>>>0<3:0){f=0;break}k=b+(d<<5)+68|0;l=c[k>>2]|0;g=j+1|0;c[E>>2]=0;if(g>>>0>l>>>0){h=c[b+(d<<5)+88>>2]|0;f=l;do f=f+16+(f>>>1)|0;while(f>>>0>>0);j=f;g=b+(d<<5)+72|0;c[g>>2]=Dg(h,8,l,j,c[g>>2]|0,E)|0;f=c[E>>2]|0;if(f){H=81;break}f=b+(d<<5)+76|0;h=Dg(h,1,l,j,c[f>>2]|0,E)|0;c[f>>2]=h;f=c[E>>2]|0;if(f){H=81;break}c[k>>2]=j;j=c[N>>2]|0;f=h}else{g=b+(d<<5)+72|0;f=c[b+(d<<5)+76>>2]|0}K=F;L=c[K+4>>2]|0;H=(c[g>>2]|0)+(j<<3)|0;c[H>>2]=c[K>>2];c[H+4>>2]=L;a[f+j>>0]=1;c[N>>2]=(c[N>>2]|0)+1;f=0;H=81}else{L=F;H=c[L+4>>2]|0;f=(c[b+(d<<5)+72>>2]|0)+(j+-1<<3)|0;c[f>>2]=c[L>>2];c[f+4>>2]=H;f=0;H=81}while(0);if((H|0)==81)a[r>>0]=0;if(f|e){N=f;i=O;return N|0}li(F,c[w>>2]|0,(c[b+4>>2]|0)+M|0);j=(c[F>>2]|0)+(c[n>>2]|0)|0;c[F>>2]=j;f=(c[o>>2]|0)+(c[m>>2]|0)|0;c[o>>2]=f;g=c[N>>2]|0;do if(!(a[r>>0]|0)){if(((g|0)!=0?(A=g+-1|0,B=c[b+(d<<5)+72>>2]|0,((c[B+(A<<3)>>2]|0)+1-j|0)>>>0<3):0)?(1-f+(c[B+(A<<3)+4>>2]|0)|0)>>>0<3:0){N=0;i=O;return N|0}m=b+(d<<5)+68|0;l=c[m>>2]|0;j=g+1|0;c[C>>2]=0;if(j>>>0>l>>>0){k=c[b+(d<<5)+88>>2]|0;f=l;do f=f+16+(f>>>1)|0;while(f>>>0>>0);g=f;h=b+(d<<5)+72|0;c[h>>2]=Dg(k,8,l,g,c[h>>2]|0,C)|0;f=c[C>>2]|0;if(f)break;f=b+(d<<5)+76|0;j=Dg(k,1,l,g,c[f>>2]|0,C)|0;c[f>>2]=j;f=c[C>>2]|0;if(f)break;c[m>>2]=g;g=c[N>>2]|0;f=j}else{h=b+(d<<5)+72|0;f=c[b+(d<<5)+76>>2]|0}L=F;e=c[L+4>>2]|0;b=(c[h>>2]|0)+(g<<3)|0;c[b>>2]=c[L>>2];c[b+4>>2]=e;a[f+g>>0]=1;c[N>>2]=(c[N>>2]|0)+1;f=0}else{e=F;N=c[e+4>>2]|0;f=(c[b+(d<<5)+72>>2]|0)+(g+-1<<3)|0;c[f>>2]=c[e>>2];c[f+4>>2]=N;f=0}while(0);a[r>>0]=0;N=f;i=O;return N|0}else H=11}else H=11;while(0);if((H|0)==11)f=b+4|0;li(u,G,(c[f>>2]|0)+M|0);f=(c[u>>2]|0)+(c[b+8>>2]|0)|0;c[u>>2]=f;n=u+4|0;j=(c[n>>2]|0)+(c[b+12>>2]|0)|0;c[n>>2]=j;n=b+(d<<5)+80|0;a[n>>0]=0;g=c[N>>2]|0;if(((g|0)!=0?(k=g+-1|0,m=c[b+(d<<5)+72>>2]|0,((c[m+(k<<3)>>2]|0)+1-f|0)>>>0<3):0)?((c[m+(k<<3)+4>>2]|0)+1-j|0)>>>0<3:0){N=0;i=O;return N|0}m=b+(d<<5)+68|0;k=c[m>>2]|0;j=g+1|0;c[t>>2]=0;if(j>>>0>k>>>0){l=c[b+(d<<5)+88>>2]|0;f=k;do f=f+16+(f>>>1)|0;while(f>>>0>>0);g=f;h=b+(d<<5)+72|0;c[h>>2]=Dg(l,8,k,g,c[h>>2]|0,t)|0;f=c[t>>2]|0;if(!f){f=b+(d<<5)+76|0;j=Dg(l,1,k,g,c[f>>2]|0,t)|0;c[f>>2]=j;f=c[t>>2]|0;if(!f){c[m>>2]=g;g=c[N>>2]|0;f=j;H=22}}}else{h=b+(d<<5)+72|0;f=c[b+(d<<5)+76>>2]|0;H=22}if((H|0)==22){L=u;e=c[L+4>>2]|0;b=(c[h>>2]|0)+(g<<3)|0;c[b>>2]=c[L>>2];c[b+4>>2]=e;a[f+g>>0]=1;c[N>>2]=(c[N>>2]|0)+1;f=0}a[n>>0]=0;N=f;i=O;return N|0}function Fj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+32|0;z=A+28|0;x=A+24|0;y=A;s=A+16|0;v=A+8|0;e=c[b+44>>2]|0;if((e|0)==2){m=c[b+60>>2]|0;li(s,m,d+5898240|0);li(y,m,d);n=b+8|0;e=(c[s>>2]|0)+(c[n>>2]|0)+(c[y>>2]|0)|0;c[y>>2]=e;o=b+12|0;p=s+4|0;r=y+4|0;f=(c[p>>2]|0)+(c[o>>2]|0)+(c[r>>2]|0)|0;c[r>>2]=f;w=b+80|0;v=b+64|0;h=c[v>>2]|0;do if(!(a[w>>0]|0)){if(((h|0)!=0?(j=h+-1|0,l=c[b+72>>2]|0,((c[l+(j<<3)>>2]|0)+1-e|0)>>>0<3):0)?(1-f+(c[l+(j<<3)+4>>2]|0)|0)>>>0<3:0)break;j=b+68|0;k=c[j>>2]|0;f=h+1|0;c[z>>2]=0;do if(f>>>0>k>>>0){g=c[b+88>>2]|0;e=k;do e=e+16+(e>>>1)|0;while(e>>>0>>0);h=e;f=b+72|0;c[f>>2]=Dg(g,8,k,h,c[f>>2]|0,z)|0;e=c[z>>2]|0;if(!e){e=b+76|0;g=Dg(g,1,k,h,c[e>>2]|0,z)|0;c[e>>2]=g;e=c[z>>2]|0;if(!e){c[j>>2]=h;h=c[v>>2]|0;e=g;break}}a[w>>0]=0;b=e;i=A;return b|0}else{f=b+72|0;e=c[b+76>>2]|0}while(0);l=y;z=c[l+4>>2]|0;q=(c[f>>2]|0)+(h<<3)|0;c[q>>2]=c[l>>2];c[q+4>>2]=z;a[e+h>>0]=1;c[v>>2]=(c[v>>2]|0)+1;q=16}else{l=y;z=c[l+4>>2]|0;q=(c[b+72>>2]|0)+(h+-1<<3)|0;c[q>>2]=c[l>>2];c[q+4>>2]=z;q=16}while(0);if((q|0)==16)a[w>>0]=0;li(s,m,d+-5898240|0);li(y,m,d);h=(c[n>>2]|0)+(c[s>>2]|0)+(c[y>>2]|0)|0;c[y>>2]=h;e=(c[o>>2]|0)+(c[p>>2]|0)+(c[r>>2]|0)|0;c[r>>2]=e;f=c[v>>2]|0;do if(!(a[w>>0]|0)){if(((f|0)!=0?(t=f+-1|0,u=c[b+72>>2]|0,((c[u+(t<<3)>>2]|0)+1-h|0)>>>0<3):0)?(1-e+(c[u+(t<<3)+4>>2]|0)|0)>>>0<3:0){b=0;i=A;return b|0}l=b+68|0;k=c[l>>2]|0;h=f+1|0;c[x>>2]=0;if(h>>>0>k>>>0){j=c[b+88>>2]|0;e=k;do e=e+16+(e>>>1)|0;while(e>>>0>>0);f=e;g=b+72|0;c[g>>2]=Dg(j,8,k,f,c[g>>2]|0,x)|0;e=c[x>>2]|0;if(e)break;e=b+76|0;h=Dg(j,1,k,f,c[e>>2]|0,x)|0;c[e>>2]=h;e=c[x>>2]|0;if(e)break;c[l>>2]=f;f=c[v>>2]|0;e=h}else{g=b+72|0;e=c[b+76>>2]|0}d=y;z=c[d+4>>2]|0;b=(c[g>>2]|0)+(f<<3)|0;c[b>>2]=c[d>>2];c[b+4>>2]=z;a[e+f>>0]=1;c[v>>2]=(c[v>>2]|0)+1;e=0}else{d=y;z=c[d+4>>2]|0;e=(c[b+72>>2]|0)+(f+-1<<3)|0;c[e>>2]=c[d>>2];c[e+4>>2]=z;e=0}while(0);a[w>>0]=0;b=e;i=A;return b|0}else if(!e){l=c[b+60>>2]|0;li(v,l,d+5898240|0);m=b+8|0;e=(c[v>>2]|0)+(c[m>>2]|0)|0;c[v>>2]=e;n=b+12|0;o=v+4|0;f=(c[o>>2]|0)+(c[n>>2]|0)|0;c[o>>2]=f;t=b+80|0;s=b+64|0;h=c[s>>2]|0;do if(!(a[t>>0]|0)){if(((h|0)!=0?(g=h+-1|0,k=c[b+72>>2]|0,((c[k+(g<<3)>>2]|0)+1-e|0)>>>0<3):0)?(1-f+(c[k+(g<<3)+4>>2]|0)|0)>>>0<3:0)break;j=b+68|0;k=c[j>>2]|0;f=h+1|0;c[z>>2]=0;do if(f>>>0>k>>>0){g=c[b+88>>2]|0;e=k;do e=e+16+(e>>>1)|0;while(e>>>0>>0);h=e;f=b+72|0;c[f>>2]=Dg(g,8,k,h,c[f>>2]|0,z)|0;e=c[z>>2]|0;if(!e){e=b+76|0;g=Dg(g,1,k,h,c[e>>2]|0,z)|0;c[e>>2]=g;e=c[z>>2]|0;if(!e){c[j>>2]=h;h=c[s>>2]|0;e=g;break}}a[t>>0]=0;b=e;i=A;return b|0}else{f=b+72|0;e=c[b+76>>2]|0}while(0);x=v;y=c[x+4>>2]|0;q=(c[f>>2]|0)+(h<<3)|0;c[q>>2]=c[x>>2];c[q+4>>2]=y;a[e+h>>0]=1;c[s>>2]=(c[s>>2]|0)+1;q=45}else{x=v;y=c[x+4>>2]|0;q=(c[b+72>>2]|0)+(h+-1<<3)|0;c[q>>2]=c[x>>2];c[q+4>>2]=y;q=45}while(0);if((q|0)==45)a[t>>0]=0;li(v,l,d+-5898240|0);h=(c[v>>2]|0)+(c[m>>2]|0)|0;c[v>>2]=h;e=(c[o>>2]|0)+(c[n>>2]|0)|0;c[o>>2]=e;f=c[s>>2]|0;do if(!(a[t>>0]|0)){if(((f|0)!=0?(p=f+-1|0,r=c[b+72>>2]|0,((c[r+(p<<3)>>2]|0)+1-h|0)>>>0<3):0)?(1-e+(c[r+(p<<3)+4>>2]|0)|0)>>>0<3:0){b=0;i=A;return b|0}l=b+68|0;k=c[l>>2]|0;h=f+1|0;c[z>>2]=0;if(h>>>0>k>>>0){j=c[b+88>>2]|0;e=k;do e=e+16+(e>>>1)|0;while(e>>>0>>0);f=e;g=b+72|0;c[g>>2]=Dg(j,8,k,f,c[g>>2]|0,z)|0;e=c[z>>2]|0;if(e)break;e=b+76|0;h=Dg(j,1,k,f,c[e>>2]|0,z)|0;c[e>>2]=h;e=c[z>>2]|0;if(e)break;c[l>>2]=f;f=c[s>>2]|0;e=h}else{g=b+72|0;e=c[b+76>>2]|0}d=v;z=c[d+4>>2]|0;b=(c[g>>2]|0)+(f<<3)|0;c[b>>2]=c[d>>2];c[b+4>>2]=z;a[e+f>>0]=1;c[s>>2]=(c[s>>2]|0)+1;e=0}else{d=v;z=c[d+4>>2]|0;e=(c[b+72>>2]|0)+(f+-1<<3)|0;c[e>>2]=c[d>>2];c[e+4>>2]=z;e=0}while(0);a[t>>0]=0;b=e;i=A;return b|0}else if((e|0)==1){c[b>>2]=d;c[b+4>>2]=d+11796480;b=Lr(b,0)|0;i=A;return b|0}else{b=0;i=A;return b|0}return 0}function Gj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if((e|0)==0?(c[a+4>>2]|0)>>>0>>0:0){a=1;return a|0}f=c[a+12>>2]|0;if((c[a+8>>2]|0)!=(b|0))uc(f|0,b|0,0)|0;a=Na(d|0,1,e|0,f|0)|0;return a|0}function Hj(a){a=a|0;var b=0;b=a+12|0;wc(c[b>>2]|0)|0;c[b>>2]=0;c[a+4>>2]=0;c[a>>2]=0;return}function Ij(a,b){a=a|0;b=b|0;return qea(b)|0}function Jj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return tea(d,c)|0}function Kj(a,b){a=a|0;b=b|0;rea(b);return}function Lj(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;n=o;f=o+4|0;e=bh(b,0)|0;c[n>>2]=e;if(e){b=e;i=o;return b|0}e=Lh(b,f,4)|0;c[n>>2]=e;if(e){b=e;i=o;return b|0}if((((a[f>>0]|0)==31?(a[f+1>>0]|0)==-117:0)?(a[f+2>>0]|0)==8:0)?(j=f+3|0,(d[j>>0]|0)<=31):0){f=Mh(b,6)|0;c[n>>2]=f;e=a[j>>0]|0;do if(e&4){e=ci(b,n)|0;f=c[n>>2]|0;if(f){b=f;i=o;return b|0}e=Mh(b,e&65535)|0;c[n>>2]=e;if(!e){e=a[j>>0]|0;f=0;break}else{b=e;i=o;return b|0}}while(0);do if(e&8){while(1){e=bi(b,n)|0;f=c[n>>2]|0;if(f){l=f;e=22;break}if(!(e<<24>>24)){e=15;break}}if((e|0)==15){g=a[j>>0]|0;h=0;break}else if((e|0)==22){i=o;return l|0}}else{g=e;h=f}while(0);do if(g&16){while(1){e=bi(b,n)|0;f=c[n>>2]|0;if(f){l=f;e=22;break}if(!(e<<24>>24)){e=19;break}}if((e|0)==19){k=a[j>>0]|0;m=0;break}else if((e|0)==22){i=o;return l|0}}else{k=g;m=h}while(0);if(!(k&2)){b=m;i=o;return b|0}b=Mh(b,2)|0;c[n>>2]=b;i=o;return b|0}c[n>>2]=3;b=3;i=o;return b|0}function Mj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;i=i+16|0;c=yg(a,da(c,b)|0,d)|0;i=d;return c|0}function Nj(a,b){a=a|0;b=b|0;Ag(a,b);return}function Oj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(!a){a=-2;return a|0}l=a+24|0;c[l>>2]=0;j=a+32|0;d=c[j>>2]|0;if(!d){c[j>>2]=82;c[a+40>>2]=0;d=82}m=a+36|0;if(!(c[m>>2]|0))c[m>>2]=69;n=a+40|0;d=Hd[d&255](c[n>>2]|0,1,24)|0;i=a+28|0;c[i>>2]=d;if(!d){a=-4;return a|0}c[d+20>>2]=0;e=(b|0)<0?0-b|0:b;c[d+12>>2]=b>>>31;if((e&-8|0)!=8){Qj(a)|0;a=-2;return a|0}c[d+16>>2]=e;f=(b|0)<0;g=f?0:83;e=1<>2]&255](c[n>>2]|0,1,64)|0;h=(k|0)==0;a:do if(h)c[(c[i>>2]|0)+20>>2]=k;else{d=Hd[c[j>>2]&255](c[n>>2]|0,8,1440)|0;b=k+36|0;c[b>>2]=d;do if(!d)Cd[c[m>>2]&255](c[n>>2]|0,k);else{d=Hd[c[j>>2]&255](c[n>>2]|0,1,e)|0;c[k+40>>2]=d;if(!d){Cd[c[m>>2]&255](c[n>>2]|0,c[b>>2]|0);Cd[c[m>>2]&255](c[n>>2]|0,k);break}c[k+44>>2]=d+e;c[k+56>>2]=g;c[k>>2]=0;c[k+28>>2]=0;c[k+32>>2]=0;c[k+52>>2]=d;c[k+48>>2]=d;if(f){d=c[i>>2]|0;c[d+20>>2]=k;if(h)break a}else{d=Hd[g&255](0,0,0)|0;c[k+60>>2]=d;c[a+48>>2]=d;d=c[i>>2]|0;c[d+20>>2]=k}if(!d){a=0;return a|0}c[a+20>>2]=0;c[a+8>>2]=0;c[l>>2]=0;c[d>>2]=(c[d+12>>2]|0)!=0?7:0;d=c[k>>2]|0;if((d&-2|0)==4){Cd[c[m>>2]&255](c[n>>2]|0,c[k+12>>2]|0);d=c[k>>2]|0}if((d|0)==6)Cd[c[m>>2]&255](c[n>>2]|0,c[k+4>>2]|0);c[k>>2]=0;c[k+28>>2]=0;c[k+32>>2]=0;d=c[k+40>>2]|0;c[k+52>>2]=d;c[k+48>>2]=d;d=c[k+56>>2]|0;if(!d){a=0;return a|0}n=Hd[d&255](0,0,0)|0;c[k+60>>2]=n;c[a+48>>2]=n;a=0;return a|0}while(0);c[(c[i>>2]|0)+20>>2]=0}while(0);Qj(a)|0;a=-4;return a|0}function Pj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=a+8264|0;f=c[y>>2]|0;if(f>>>0>b>>>0){if(bh(c[a>>2]|0,c[a+68>>2]|0)|0){a=0;return a|0}f=c[a+40>>2]|0;if(f){c[a+32>>2]=0;c[a+20>>2]=0;c[a+36>>2]=0;c[f>>2]=(c[f+12>>2]|0)!=0?7:0;h=c[f+20>>2]|0;f=c[h>>2]|0;if((f&-2|0)==4){Cd[c[a+48>>2]&255](c[a+52>>2]|0,c[h+12>>2]|0);f=c[h>>2]|0}if((f|0)==6)Cd[c[a+48>>2]&255](c[a+52>>2]|0,c[h+4>>2]|0);c[h>>2]=0;c[h+28>>2]=0;c[h+32>>2]=0;f=c[h+40>>2]|0;c[h+52>>2]=f;c[h+48>>2]=f;f=c[h+56>>2]|0;if(f){s=Hd[f&255](0,0,0)|0;c[h+60>>2]=s;c[a+60>>2]=s}}c[a+16>>2]=0;c[a+12>>2]=a+72;c[a+28>>2]=0;c[a+24>>2]=a+4168;f=a+8264|0;c[a+8272>>2]=f;c[a+8268>>2]=f;c[y>>2]=0;f=0}do if(f>>>0>>0){j=b-f|0;r=a+8272|0;h=c[r>>2]|0;s=a+8268|0;b=c[s>>2]|0;i=h-b|0;i=i>>>0>>0?i:j;b=b+i|0;c[s>>2]=b;c[y>>2]=i+f;a:do if((i|0)!=(j|0)){l=a+12|0;m=a+4168|0;k=a+24|0;n=a+28|0;o=a+16|0;p=a+72|0;q=a+12|0;b=i;b:while(1){j=j-b|0;c[s>>2]=m;c[k>>2]=m;c[n>>2]=4096;while(1){if(!(c[o>>2]|0)){h=c[a>>2]|0;f=c[h+20>>2]|0;if(f){f=Xd[f&255](h,c[h+8>>2]|0,p,4096)|0;if(!f){f=0;b=43;break b}}else{b=c[h+8>>2]|0;f=(c[h+4>>2]|0)-b|0;f=f>>>0>4096?4096:f;if(!f){f=0;b=43;break b}qfa(p|0,(c[h>>2]|0)+b|0,f|0)|0}i=h+8|0;c[i>>2]=(c[i>>2]|0)+f;c[q>>2]=p;c[o>>2]=f}f=Tj(l,0)|0;if((f|0)==1){b=24;break}else if(f){f=0;b=43;break b}if(!(c[n>>2]|0)){b=14;break}}if((b|0)==14){u=c[r>>2]|0;t=c[s>>2]|0}else if((b|0)==24){f=c[k>>2]|0;c[r>>2]=f;b=c[s>>2]|0;if((f|0)==(b|0)){f=0;b=43;break}else{u=f;t=b}}b=u-t|0;b=b>>>0>>0?b:j;f=t+b|0;c[s>>2]=f;c[y>>2]=b+(c[y>>2]|0);if((j|0)==(b|0)){g=f;v=u;break a}}if((b|0)==43)return f|0}else{g=b;v=h}while(0);if(!e){a=0;return a|0}else f=v}else if(!e){a=0;return a|0}else{f=c[a+8272>>2]|0;g=c[a+8268>>2]|0;break}while(0);r=a+8272|0;s=a+8268|0;f=f-g|0;f=f>>>0>>0?f:e;qfa(d|0,g|0,f|0)|0;c[s>>2]=(c[s>>2]|0)+f;c[y>>2]=f+(c[y>>2]|0);if((f|0)==(e|0)){a=e;return a|0}k=a+12|0;l=a+4168|0;m=a+24|0;n=a+28|0;o=a+16|0;p=a+72|0;q=a+12|0;b=f;i=e;j=d;c:while(1){i=i-b|0;j=j+b|0;c[s>>2]=l;c[m>>2]=l;c[n>>2]=4096;while(1){if(!(c[o>>2]|0)){h=c[a>>2]|0;b=c[h+20>>2]|0;if(b){b=Xd[b&255](h,c[h+8>>2]|0,p,4096)|0;if(!b){b=43;break c}}else{g=c[h+8>>2]|0;b=(c[h+4>>2]|0)-g|0;b=b>>>0>4096?4096:b;if(!b){b=43;break c}qfa(p|0,(c[h>>2]|0)+g|0,b|0)|0}d=h+8|0;c[d>>2]=(c[d>>2]|0)+b;c[q>>2]=p;c[o>>2]=b}g=Tj(k,0)|0;if((g|0)==1){b=41;break}else if(g){b=43;break c}if(!(c[n>>2]|0)){b=31;break}}if((b|0)==31){x=c[r>>2]|0;w=c[s>>2]|0}else if((b|0)==41){g=c[m>>2]|0;c[r>>2]=g;h=c[s>>2]|0;if((g|0)==(h|0)){b=43;break}else{x=g;w=h}}b=x-w|0;b=b>>>0>>0?b:i;qfa(j|0,w|0,b|0)|0;f=b+f|0;c[s>>2]=(c[s>>2]|0)+b;c[y>>2]=b+(c[y>>2]|0);if((i|0)==(b|0)){b=43;break}}if((b|0)==43)return f|0;return 0}function Qj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;if(!a){h=-2;return h|0}h=a+28|0;b=c[h>>2]|0;if(!b){h=-2;return h|0}g=a+36|0;d=c[g>>2]|0;if(!d){h=-2;return h|0}f=c[b+20>>2]|0;if(!f)e=a+40|0;else{b=c[f>>2]|0;if((b&-2|0)==4){Cd[d&255](c[a+40>>2]|0,c[f+12>>2]|0);b=c[f>>2]|0}if((b|0)==6)Cd[c[g>>2]&255](c[a+40>>2]|0,c[f+4>>2]|0);c[f>>2]=0;c[f+28>>2]=0;c[f+32>>2]=0;d=f+40|0;b=c[d>>2]|0;c[f+52>>2]=b;c[f+48>>2]=b;e=c[f+56>>2]|0;if(e){b=Hd[e&255](0,0,0)|0;c[f+60>>2]=b;c[a+48>>2]=b;b=c[d>>2]|0}e=a+40|0;Cd[c[g>>2]&255](c[e>>2]|0,b);Cd[c[g>>2]&255](c[e>>2]|0,c[f+36>>2]|0);Cd[c[g>>2]&255](c[e>>2]|0,f);d=c[g>>2]|0;b=c[h>>2]|0}Cd[d&255](c[e>>2]|0,b);c[h>>2]=0;h=0;return h|0}function Rj(a){a=a|0;var b=0,d=0;b=a+12|0;d=c[b>>2]|0;if(!d)return;a=c[a+28>>2]|0;Qj(d+12|0)|0;c[d+44>>2]=0;c[d+48>>2]=0;c[d+52>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;Ag(a,d);c[b>>2]=0;return}function Sj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return Pj(c[a+12>>2]|0,b,d,e)|0} -function WI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=c[e>>2]|0;k=j+16|0;f=c[k>>2]|0;i=da(d,b)|0;g=j+8|0;e=c[g>>2]|0;h=j+12|0;a:do if((f+i|0)>=(e|0)){while(1){if(e&1073741824)if((e|0)==2147483647){e=0;b=10;break}else b=2147483647;else b=(e|0)==0?4096:e<<1;e=tea(c[h>>2]|0,b)|0;if(!e){e=0;b=10;break}c[h>>2]=e;c[g>>2]=b;f=c[k>>2]|0;if((f+i|0)<(b|0))break a;else e=b}if((b|0)==10)return e|0}else e=c[h>>2]|0;while(0);qfa(e+f|0,a|0,i|0)|0;b=(c[k>>2]|0)+i|0;c[k>>2]=b;e=j+4|0;if((b|0)<=(c[e>>2]|0))return d|0;c[e>>2]=b;return d|0}function XI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a>>2]|0;if((d|0)==2){a=(c[e+4>>2]|0)+b|0;if((a|0)>-1){c[e+16>>2]=a;a=0}else a=-1}else if((d|0)==1){e=e+16|0;a=(c[e>>2]|0)+b|0;if((a|0)>-1){c[e>>2]=a;a=0}else a=-1}else if((b|0)>-1){c[e+16>>2]=b;a=0}else a=-1;return a|0}function YI(a){a=a|0;return c[(c[a>>2]|0)+16>>2]|0}function ZI(b){b=b|0;var c=0;a[b>>0]=122;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;c=b+8|0;a[c>>0]=158;a[c+1>>0]=0;a[c+2>>0]=0;a[c+3>>0]=0;c=b+12|0;a[c>>0]=160;a[c+1>>0]=0;a[c+2>>0]=0;a[c+3>>0]=0;b=b+4|0;a[b>>0]=123;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;return}function _I(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:do if((b|0)!=0?(d=uJ()|0,(d|0)>0):0){c=0;while(1){if(zJ(c,a,b)|0)break;c=c+1|0;if((c|0)>=(d|0)){c=-1;break a}}if((c|0)==18?(zJ(34,a,b)|0)!=0:0){c=34;break}}else c=-1;while(0);return c|0}function $I(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=i;i=i+16|0;d=e;UI(d);c=Lc(a|0,302864)|0;if(!c){c=-1;i=e;return c|0}a=uJ()|0;a:do if((a|0)>0){b=0;while(1){if(zJ(b,d,c)|0)break;b=b+1|0;if((b|0)>=(a|0)){b=-1;break a}}if((b|0)==18?(zJ(34,d,c)|0)!=0:0){b=34;break}}else b=-1;while(0);wc(c|0)|0;c=b;i=e;return c|0}function aJ(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;if(!b){g=0;return g|0}g=qea(12)|0;if(!g){g=0;return g|0}c[g>>2]=a;f=g+4|0;c[f>>2]=b;a=Mx(1048576,(e|0)!=0&1)|0;if(!a){rea(g);g=0;return g|0}else{_x(a,g,0);b=(c[g>>2]|0)+12|0;b=Ed[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&511](c[f>>2]|0)|0;e=(c[g>>2]|0)+8|0;Hd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](c[f>>2]|0,0,2)|0;e=(c[g>>2]|0)+12|0;e=(Ed[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&511](c[f>>2]|0)|0)-b|0;h=(c[g>>2]|0)+8|0;Hd[(d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24)&255](c[f>>2]|0,b,0)|0;$x(a,e,0);Wx(a,159);Yx(a,160);Zx(a,161);Xx(a,162);c[g+8>>2]=a;return g|0}return 0}function bJ(a){a=a|0;var b=0;if(!a)return;b=c[a+8>>2]|0;if(b)Vx(b);rea(a);return}function cJ(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=i;i=i+16|0;l=H;D=e+24|0;g=c[D>>2]|0;E=c[g+8>>2]|0;G=c[g+40>>2]|0;k=1<>G;G=(c[g+12>>2]|0)+-1+k>>G;k=c[e+16>>2]|0;e=k+-1|0;h=0;while(1){if((h|0)>=(e|0)){e=1;break}j=h;h=h+1|0;if((c[g+(j*52|0)>>2]|0)!=(c[g+(h*52|0)>>2]|0)){e=0;break}if((c[g+(j*52|0)+4>>2]|0)!=(c[g+(h*52|0)+4>>2]|0)){e=0;break}if((c[g+(j*52|0)+24>>2]|0)!=(c[g+(h*52|0)+24>>2]|0)){e=0;break}}do if(!(e&(((k&-3|0)==1|(k|0)==4)&1)))if(!k){H=gc(4)|0;c[H>>2]=313264;qd(H|0,366936,0)}else{c[l>>2]=k;PI(d,302048,l);g=c[D>>2]|0;e=1;break}else e=k;while(0);g=c[g+24>>2]|0;do if(g>>>0<9)if((e|0)==4){C=OH(f,F,G,32,16711680,65280,255)|0;break}else if((e|0)==3){C=OH(f,F,G,24,16711680,65280,255)|0;break}else if((e|0)==1){C=OH(f,F,G,8,0,0,0)|0;break}else{H=gc(4)|0;c[H>>2]=315016;qd(H|0,366936,0)}else{if(g>>>0>=17){H=gc(4)|0;c[H>>2]=313264;qd(H|0,366936,0)}if((e|0)==1){C=NH(f,2,F,G,8,0,0,0)|0;break}else if((e|0)==4){C=NH(f,10,F,G,8,0,0,0)|0;break}else if((e|0)==3){C=NH(f,9,F,G,8,0,0,0)|0;break}else{H=gc(4)|0;c[H>>2]=315016;qd(H|0,366936,0)}}while(0);if(!C){H=gc(4)|0;c[H>>2]=315016;qd(H|0,366936,0)}if(f){i=H;return C|0}g=c[(c[D>>2]|0)+24>>2]|0;if(g>>>0<9)if((e|0)==1){g=kI(C)|0;e=0;do{B=e&255;a[g+(e<<2)+2>>0]=B;a[g+(e<<2)+1>>0]=B;a[g+(e<<2)>>0]=B;e=e+1|0}while((e|0)!=256);if((G|0)<=0){i=H;return C|0}m=G+-1|0;if((F|0)>0){d=0;f=0}else{g=0;do{qJ(C,m-g|0)|0;g=g+1|0}while((g|0)<(G|0));i=H;return C|0}while(1){g=qJ(C,m-f|0)|0;k=d;l=0;while(1){j=(da((k>>>0)/(F>>>0)|0,E)|0)+((k>>>0)%(F>>>0)|0)|0;e=c[D>>2]|0;if(!(c[e+32>>2]|0))h=0;else h=1<<(c[e+24>>2]|0)+-1;a[g+l>>0]=h+(c[(c[e+44>>2]|0)+(j<<2)>>2]|0);l=l+1|0;if((l|0)==(F|0))break;else k=k+1|0}f=f+1|0;if((f|0)>=(G|0))break;else d=F+d|0}i=H;return C|0}else if((e|0)==4){if((G|0)<=0){i=H;return C|0}o=G+-1|0;p=(F|0)>0;g=0;q=0;do{e=qJ(C,o-q|0)|0;if(p){l=g;n=0;while(1){m=(da((l>>>0)/(F>>>0)|0,E)|0)+((l>>>0)%(F>>>0)|0)|0;d=c[D>>2]|0;if(!(c[d+32>>2]|0))k=0;else k=1<<(c[d+24>>2]|0)+-1;if(!(c[d+84>>2]|0))f=0;else f=1<<(c[d+76>>2]|0)+-1;h=f+(c[(c[d+96>>2]|0)+(m<<2)>>2]|0)|0;if(!(c[d+136>>2]|0))f=0;else f=1<<(c[d+128>>2]|0)+-1;f=f+(c[(c[d+148>>2]|0)+(m<<2)>>2]|0)|0;if(!(c[d+188>>2]|0))j=0;else j=1<<(c[d+180>>2]|0)+-1;B=j+(c[(c[d+200>>2]|0)+(m<<2)>>2]|0)|0;a[e+2>>0]=k+(c[(c[d+44>>2]|0)+(m<<2)>>2]|0);a[e+1>>0]=h;a[e>>0]=f;a[e+3>>0]=B;n=n+1|0;if((n|0)==(F|0))break;else{e=e+4|0;l=l+1|0}}g=F+g|0}q=q+1|0}while((q|0)<(G|0));i=H;return C|0}else if((e|0)==3){if((G|0)<=0){i=H;return C|0}o=G+-1|0;if((F|0)>0){d=0;n=0}else{g=0;do{qJ(C,o-g|0)|0;g=g+1|0}while((g|0)<(G|0));i=H;return C|0}while(1){m=qJ(C,o-n|0)|0;k=d;l=0;while(1){j=(da((k>>>0)/(F>>>0)|0,E)|0)+((k>>>0)%(F>>>0)|0)|0;e=c[D>>2]|0;if(!(c[e+32>>2]|0))h=0;else h=1<<(c[e+24>>2]|0)+-1;if(!(c[e+84>>2]|0))g=0;else g=1<<(c[e+76>>2]|0)+-1;g=g+(c[(c[e+96>>2]|0)+(j<<2)>>2]|0)|0;if(!(c[e+136>>2]|0))f=0;else f=1<<(c[e+128>>2]|0)+-1;B=f+(c[(c[e+148>>2]|0)+(j<<2)>>2]|0)|0;a[m+2>>0]=h+(c[(c[e+44>>2]|0)+(j<<2)>>2]|0);a[m+1>>0]=g;a[m>>0]=B;l=l+1|0;if((l|0)==(F|0))break;else{m=m+3|0;k=k+1|0}}n=n+1|0;if((n|0)>=(G|0))break;else d=F+d|0}i=H;return C|0}else{i=H;return C|0}if(g>>>0>=17){i=H;return C|0}if((e|0)==3){if((G|0)<=0){i=H;return C|0}v=G+-1|0;w=(F|0)>0;g=0;x=0;do{e=qJ(C,v-x|0)|0;if(w){q=c[D>>2]|0;h=c[q+44>>2]|0;m=(c[q+32>>2]|0)==0;d=c[q+96>>2]|0;k=(c[q+84>>2]|0)==0;l=c[q+148>>2]|0;n=(c[q+136>>2]|0)==0;o=q+128|0;p=q+76|0;q=q+24|0;t=g;u=0;while(1){r=(da((t>>>0)/(F>>>0)|0,E)|0)+((t>>>0)%(F>>>0)|0)|0;if(m)s=0;else s=1<<(c[q>>2]|0)+-1;if(k)f=0;else f=1<<(c[p>>2]|0)+-1;f=f+(c[d+(r<<2)>>2]|0)|0;if(n)j=0;else j=1<<(c[o>>2]|0)+-1;A=j+(c[l+(r<<2)>>2]|0)|0;B=s+(c[h+(r<<2)>>2]|0)&65535;z=e+(u*6|0)|0;a[z>>0]=B;a[z+1>>0]=B>>8;z=f&65535;B=e+(u*6|0)+2|0;a[B>>0]=z;a[B+1>>0]=z>>8;A=A&65535;B=e+(u*6|0)+4|0;a[B>>0]=A;a[B+1>>0]=A>>8;u=u+1|0;if((u|0)==(F|0))break;else t=t+1|0}g=F+g|0}x=x+1|0}while((x|0)<(G|0));i=H;return C|0}else if((e|0)==1){if((G|0)<=0){i=H;return C|0}n=G+-1|0;o=(F|0)>0;g=0;p=0;do{f=qJ(C,n-p|0)|0;if(o){h=c[D>>2]|0;j=c[h+44>>2]|0;e=(c[h+32>>2]|0)==0;h=h+24|0;k=g;l=0;while(1){m=c[j+((da((k>>>0)/(F>>>0)|0,E)|0)+((k>>>0)%(F>>>0)|0)<<2)>>2]|0;if(e)d=0;else d=1<<(c[h>>2]|0)+-1;b[f+(l<<1)>>1]=d+m;l=l+1|0;if((l|0)==(F|0))break;else k=k+1|0}g=F+g|0}p=p+1|0}while((p|0)<(G|0));i=H;return C|0}else if((e|0)==4){if((G|0)<=0){i=H;return C|0}z=G+-1|0;A=(F|0)>0;g=0;B=0;do{h=qJ(C,z-B|0)|0;if(A){u=c[D>>2]|0;m=c[u+44>>2]|0;d=(c[u+32>>2]|0)==0;k=c[u+96>>2]|0;l=(c[u+84>>2]|0)==0;n=c[u+148>>2]|0;o=(c[u+136>>2]|0)==0;p=c[u+200>>2]|0;q=(c[u+188>>2]|0)==0;r=u+180|0;s=u+128|0;t=u+76|0;u=u+24|0;x=g;y=0;while(1){v=(da((x>>>0)/(F>>>0)|0,E)|0)+((x>>>0)%(F>>>0)|0)|0;if(d)w=0;else w=1<<(c[u>>2]|0)+-1;if(l)f=0;else f=1<<(c[t>>2]|0)+-1;e=f+(c[k+(v<<2)>>2]|0)|0;if(o)f=0;else f=1<<(c[s>>2]|0)+-1;f=f+(c[n+(v<<2)>>2]|0)|0;if(q)j=0;else j=1<<(c[r>>2]|0)+-1;j=j+(c[p+(v<<2)>>2]|0)|0;w=w+(c[m+(v<<2)>>2]|0)&65535;v=h+(y<<3)|0;a[v>>0]=w;a[v+1>>0]=w>>8;v=e&65535;w=h+(y<<3)+2|0;a[w>>0]=v;a[w+1>>0]=v>>8;w=f&65535;v=h+(y<<3)+4|0;a[v>>0]=w;a[v+1>>0]=w>>8;v=j&65535;w=h+(y<<3)+6|0;a[w>>0]=v;a[w+1>>0]=v>>8;y=y+1|0;if((y|0)==(F|0))break;else x=x+1|0}g=F+g|0}B=B+1|0}while((B|0)<(G|0));i=H;return C|0}else{i=H;return C|0}return 0}function dJ(a,b,f){a=a|0;b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;i=i+144|0;l=u;s=WH(b)|0;t=XH(b)|0;a=VH(b)|0;do if((a|0)==9){g=1;k=3;m=16}else if((a|0)==10){g=1;k=4;m=16}else if((a|0)==1){a=iI(b)|0;if((a|0)==4){g=1;k=4;m=8;break}else if((a|0)==1){g=2;k=1;m=8;break}else if((a|0)==2){k=(YH(b)|0)==32;g=1;k=k?4:3;m=8;break}else{b=0;i=u;return b|0}}else if((a|0)==2){g=2;k=1;m=16}else{b=0;i=u;return b|0}while(0);sfa(l|0,0,144)|0;n=f+18188|0;a=c[n>>2]|0;o=f+18192|0;j=c[o>>2]|0;h=0;do{c[l+(h*36|0)>>2]=a;c[l+(h*36|0)+4>>2]=j;c[l+(h*36|0)+8>>2]=s;c[l+(h*36|0)+12>>2]=t;c[l+(h*36|0)+24>>2]=m;c[l+(h*36|0)+28>>2]=m;c[l+(h*36|0)+32>>2]=0;h=h+1|0}while((h|0)<(k|0));a=Ay(k,l,g)|0;if(!a){u=gc(4)|0;c[u>>2]=315016;qd(u|0,366936,0)}r=c[f+18180>>2]|0;c[a>>2]=r;q=c[f+18184>>2]|0;c[a+4>>2]=q;c[a+8>>2]=r+1+(da(c[n>>2]|0,s+-1|0)|0);r=t+-1|0;c[a+12>>2]=q+1+(da(c[o>>2]|0,r)|0);if((m|0)==16)if((k|0)==4){if((t|0)<=0){b=a;i=u;return b|0}f=(s|0)>0;p=a+24|0;g=0;q=0;do{n=qJ(b,r-q|0)|0;if(f){l=c[p>>2]|0;j=c[l+44>>2]|0;h=c[l+96>>2]|0;o=c[l+148>>2]|0;l=c[l+200>>2]|0;k=g;m=0;while(1){v=n+(m<<3)|0;c[j+(k<<2)>>2]=(d[v>>0]|d[v+1>>0]<<8)&65535;v=n+(m<<3)+2|0;c[h+(k<<2)>>2]=(d[v>>0]|d[v+1>>0]<<8)&65535;v=n+(m<<3)+4|0;c[o+(k<<2)>>2]=(d[v>>0]|d[v+1>>0]<<8)&65535;v=n+(m<<3)+6|0;c[l+(k<<2)>>2]=(d[v>>0]|d[v+1>>0]<<8)&65535;m=m+1|0;if((m|0)==(s|0))break;else k=k+1|0}g=s+g|0}q=q+1|0}while((q|0)<(t|0));i=u;return a|0}else if((k|0)==1){if((t|0)<=0){v=a;i=u;return v|0}m=(s|0)>0;n=a+24|0;g=0;o=0;do{h=qJ(b,r-o|0)|0;if(m){j=c[(c[n>>2]|0)+44>>2]|0;k=g;l=0;while(1){c[j+(k<<2)>>2]=e[h+(l<<1)>>1];l=l+1|0;if((l|0)==(s|0))break;else k=k+1|0}g=s+g|0}o=o+1|0}while((o|0)<(t|0));i=u;return a|0}else if((k|0)==3){if((t|0)<=0){v=a;i=u;return v|0}m=(s|0)>0;f=a+24|0;g=0;p=0;do{n=qJ(b,r-p|0)|0;if(m){o=c[f>>2]|0;j=c[o+44>>2]|0;h=c[o+96>>2]|0;o=c[o+148>>2]|0;l=g;k=0;while(1){v=n+(k*6|0)|0;c[j+(l<<2)>>2]=(d[v>>0]|d[v+1>>0]<<8)&65535;v=n+(k*6|0)+2|0;c[h+(l<<2)>>2]=(d[v>>0]|d[v+1>>0]<<8)&65535;v=n+(k*6|0)+4|0;c[o+(l<<2)>>2]=(d[v>>0]|d[v+1>>0]<<8)&65535;k=k+1|0;if((k|0)==(s|0))break;else l=l+1|0}g=s+g|0}p=p+1|0}while((p|0)<(t|0));i=u;return a|0}else{v=a;i=u;return v|0}else if((m|0)==8)if((k|0)==3){if((t|0)<=0){v=a;i=u;return v|0}m=(s|0)>0;f=a+24|0;g=0;p=0;do{j=qJ(b,r-p|0)|0;if(m){o=c[f>>2]|0;l=c[o+148>>2]|0;k=c[o+44>>2]|0;o=c[o+96>>2]|0;n=g;h=0;while(1){c[k+(n<<2)>>2]=d[j+2>>0];c[o+(n<<2)>>2]=d[j+1>>0];c[l+(n<<2)>>2]=d[j>>0];h=h+1|0;if((h|0)==(s|0))break;else{j=j+3|0;n=n+1|0}}g=s+g|0}p=p+1|0}while((p|0)<(t|0));i=u;return a|0}else if((k|0)==1){if((t|0)<=0){v=a;i=u;return v|0}n=(s|0)>0;m=a+24|0;g=0;o=0;do{j=qJ(b,r-o|0)|0;if(n){h=c[(c[m>>2]|0)+44>>2]|0;k=g;l=0;while(1){c[h+(k<<2)>>2]=d[j+l>>0];l=l+1|0;if((l|0)==(s|0))break;else k=k+1|0}g=s+g|0}o=o+1|0}while((o|0)<(t|0));i=u;return a|0}else if((k|0)==4){if((t|0)<=0){v=a;i=u;return v|0}f=(s|0)>0;p=a+24|0;g=0;q=0;do{n=qJ(b,r-q|0)|0;if(f){k=c[p>>2]|0;m=c[k+200>>2]|0;o=c[k+44>>2]|0;l=c[k+96>>2]|0;k=c[k+148>>2]|0;j=g;h=0;while(1){c[o+(j<<2)>>2]=d[n+2>>0];c[l+(j<<2)>>2]=d[n+1>>0];c[k+(j<<2)>>2]=d[n>>0];c[m+(j<<2)>>2]=d[n+3>>0];h=h+1|0;if((h|0)==(s|0))break;else{n=n+4|0;j=j+1|0}}g=s+g|0}q=q+1|0}while((q|0)<(t|0));i=u;return a|0}else{v=a;i=u;return v|0}else{v=a;i=u;return v|0}return 0}function eJ(a,b){a=a|0;b=b|0;var d=0,e=0;d=qea(4)|0;if(!d){a=0;return a|0}e=qea(20)|0;c[d>>2]=e;if(!e){rea(d);a=0;return a|0};c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;if((a|0)!=0&(b|0)!=0){c[e>>2]=0;c[e+12>>2]=a;c[e+4>>2]=b;c[e+8>>2]=b;a=d;return a|0}else{c[e>>2]=1;a=d;return a|0}return 0}function fJ(a){a=a|0;var b=0;if(!a)return;b=c[a>>2]|0;if(!b)return;if(c[b>>2]|0)rea(c[b+12>>2]|0);rea(b);rea(a);return}function gJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;if((b|0)!=0?(c[b>>2]|0)!=0:0){ZI(e);a=tJ(a,e,b,d)|0}else a=0;i=f;return a|0}function hJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+32|0;f=g+8|0;if(!d){d=0;i=g;return d|0}ZI(f);if((c[c[d>>2]>>2]|0)==1){d=wJ(a,b,f,d,e)|0;i=g;return d|0}else{PI(a,302136,g);d=0;i=g;return d|0}return 0}function iJ(a,b,d){a=a|0;b=b|0;d=d|0;if(!a){a=0;return a|0}a=c[a>>2]|0;c[b>>2]=c[a+12>>2];c[d>>2]=c[a+4>>2];a=1;return a|0}function jJ(a,b){a=a|0;b=b|0;var c=0,d=0;d=i;i=i+16|0;c=d;ZI(c);if(!a){a=-1;i=d;return a|0}a=_I(c,a,b)|0;i=d;return a|0}function kJ(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,f=0;f=i;i=i+16|0;e=f;ZI(e);if(!a){c=0;i=f;return c|0}e=e+8|0;c=(Hd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](a,b,c)|0)==0&1;i=f;return c|0}function lJ(a){a=a|0;var b=0,c=0;c=i;i=i+16|0;b=c;ZI(b);if(!a){a=-1;i=c;return a|0}b=b+12|0;a=Ed[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&511](a)|0;i=c;return a|0}function mJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g;ZI(f);if(!e){e=0;i=g;return e|0}e=Xd[c[f>>2]&255](a,b,d,e)|0;i=g;return e|0}function nJ(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+32|0;g=h+8|0;if(!f){f=0;i=h;return f|0}ZI(g);if((c[c[f>>2]>>2]|0)==1){g=g+4|0;f=Xd[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](a,b,e,f)|0;i=h;return f|0}else{PI(-1,302136,h);f=0;i=h;return f|0}return 0}function oJ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0;ma=i;i=i+128|0;ca=ma;H=ma+104|0;J=ma+92|0;ba=ma+84|0;$=ma+68|0;U=ma+64|0;I=ma+60|0;T=ma+116|0;G=ma+32|0;fa=ma+28|0;la=ma+16|0;P=ma+12|0;Q=ma+8|0;ia=ma+36|0;ja=ma+48|0;c[I>>2]=0;c[fa>>2]=0;ka=la+4|0;c[ka>>2]=0;ea=la+8|0;c[ea>>2]=0;ga=la+4|0;c[la>>2]=ga;da=(h&32768|0)==0;R=e+12|0;B=Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](f)|0;S=e+8|0;Hd[(d[S>>0]|d[S+1>>0]<<8|d[S+2>>0]<<16|d[S+3>>0]<<24)&255](f,0,2)|0;F=Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](f)|0;Hd[(d[S>>0]|d[S+1>>0]<<8|d[S+2>>0]<<16|d[S+3>>0]<<24)&255](f,B,0)|0;Hd[(d[S>>0]|d[S+1>>0]<<8|d[S+2>>0]<<16|d[S+3>>0]<<24)&255](f,g,0)|0;B=T+4|0;C=H+4|0;D=fa+2|0;E=fa+1|0;L=$+4|0;M=$+8|0;N=$+9|0;O=ba+4|0;u=2835;t=2835;r=0;q=0;s=0;m=0;k=0;j=0;p=0;A=0;o=0;g=0;n=0;K=0;a:while(1){w=Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](f)|0;c[I>>2]=0;Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](I,1,4,f)|0;c[I>>2]=Dfa(c[I>>2]|0)|0;Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](T,1,4,f)|0;a[B>>0]=0;v=c[I>>2]|0;if(v){g=tea(g,v)|0;if(!g){aa=4;break}z=Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](f)|0;v=c[I>>2]|0;if((v+z|0)>(F|0)){aa=6;break}Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](g,1,v,f)|0}Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](G,1,4,f)|0;c[G>>2]=Dfa(c[G>>2]|0)|0;z=tK(0,T,4)|0;z=tK(z,g,c[I>>2]|0)|0;if((z|0)!=(c[G>>2]|0)){aa=9;break}switch(dS(T)|0){case 12:{q=u;n=w;o=s;r=k;s=j;u=p;k=K;aa=16;break a}case 31:{t=Dfa(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24|0)|0;u=g+4|0;sa=K;ra=n;qa=o;pa=A;oa=p;na=j;v=k;w=m;x=s;y=q;z=r;u=Dfa(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24|0)|0;K=sa;n=ra;o=qa;A=pa;p=oa;j=na;k=v;m=w;s=x;q=y;r=z;continue a}case 24:{a[D>>0]=((d[g>>0]|d[g+1>>0]<<8)&65535)>>>8;ta=g+2|0;a[E>>0]=((d[ta>>0]|d[ta+1>>0]<<8)&65535)>>>8;ta=g+4|0;a[fa>>0]=((d[ta>>0]|d[ta+1>>0]<<8)&65535)>>>8;ta=K;v=n;w=o;x=A;y=j;z=k;oa=m;na=s;pa=q;qa=r;ra=t;sa=u;p=1;K=ta;n=v;o=w;A=x;j=y;k=z;m=oa;s=na;q=pa;r=qa;t=ra;u=sa;continue a}case 45:{x=c[I>>2]|0;c[H+0>>2]=0;c[H+4>>2]=0;c[H+8>>2]=0;c[J+0>>2]=0;c[J+4>>2]=0;c[J+8>>2]=0;y=qea(x)|0;if(y){sfa(y|0,0,x|0)|0;b:do if(x){z=0;v=0;do{ta=a[g+z>>0]|0;w=v+1|0;a[y+v>>0]=ta;if(!(ta<<24>>24)){v=a[H>>0]|0;if(!(v&1))v=(v&255)>>>1;else v=c[C>>2]|0;if(v)break b;x2(H,y)|0;sfa(y|0,0,x|0)|0;v=0}else v=w;z=z+1|0}while(z>>>0>>0)}while(0);x2(J,y)|0;rea(y);w2(gS(la,H)|0,J)|0}v2(J);v2(H);ua=K;v=n;w=o;x=A;y=p;z=j;oa=k;na=m;pa=s;qa=q;ra=r;sa=t;ta=u;K=ua;n=v;o=w;A=x;p=y;j=z;k=oa;m=na;s=pa;q=qa;r=ra;t=sa;u=ta;continue a}case 13:{if((c[I>>2]|0)!=16){aa=42;break a}r=g+4|0;r=d[r>>0]|d[r+1>>0]<<8|d[r+2>>0]<<16|d[r+3>>0]<<24;q=Dfa(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24|0)|0;z=K;oa=n;na=p;pa=j;qa=k;ra=m;sa=s;ta=t;ua=u;r=Dfa(r|0)|0;A=a[g+13>>0]|0;o=a[g+12>>0]|0;K=z;n=oa;p=na;j=pa;k=qa;m=ra;s=sa;t=ta;u=ua;continue a}case 11:{v=p;aa=50;break a}case 1:{v=c[I>>2]|0;if((v|0)==28){v=K;w=n;x=o;y=A;z=p;oa=j;na=k;pa=m;qa=s;ra=q;sa=r;ta=t;ua=u;K=v;n=w;o=x;A=y;p=z;j=oa;k=na;m=pa;s=qa;q=ra;r=sa;t=ta;u=ua;continue a}c[ca>>2]=T;c[ca+4>>2]=v;PI(b,302312,ca);v=K;w=n;x=o;y=A;z=p;oa=j;na=k;pa=m;qa=s;ra=q;sa=r;ta=t;ua=u;K=v;n=w;o=x;A=y;p=z;j=oa;k=na;m=pa;s=qa;q=ra;r=sa;t=ta;u=ua;continue a}case 36:{if(!j)j=eJ(0,0)|0;nJ(g,1,c[I>>2]|0,j)|0;w=K;x=n;y=o;z=A;oa=p;na=k;pa=m;qa=s;ra=q;sa=r;ta=t;ua=u;K=w;n=x;o=y;A=z;p=oa;k=na;m=pa;s=qa;q=ra;r=sa;t=ta;u=ua;continue a}case 19:{m=(c[I>>2]|0)+12|0;s=tea(s,m)|0;if(!s){aa=14;break a}y=Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](f)|0;Hd[(d[S>>0]|d[S+1>>0]<<8|d[S+2>>0]<<16|d[S+3>>0]<<24)&255](f,w,0)|0;Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](s,1,m,f)|0;Hd[(d[S>>0]|d[S+1>>0]<<8|d[S+2>>0]<<16|d[S+3>>0]<<24)&255](f,y,0)|0;y=n;z=o;oa=A;na=p;pa=j;qa=k;ra=q;sa=r;ta=t;ua=u;K=1;n=y;o=z;A=oa;p=na;j=pa;k=qa;q=ra;r=sa;t=ta;u=ua;continue a}case 35:{if(!(da&A<<24>>24==0)){v=K;w=n;x=o;y=A;z=p;oa=j;na=k;pa=m;qa=s;ra=q;sa=r;ta=t;ua=u;K=v;n=w;o=x;A=y;p=z;j=oa;k=na;m=pa;s=qa;q=ra;r=sa;t=ta;u=ua;continue a}if(!k){k=eJ(0,0)|0;n=1}nJ(g,1,c[I>>2]|0,k)|0;y=K;z=o;oa=p;na=j;pa=m;qa=s;ra=q;sa=r;ta=t;ua=u;A=0;K=y;o=z;p=oa;j=na;m=pa;s=qa;q=ra;r=sa;t=ta;u=ua;continue a}case 16:{q=u;o=s;m=0;n=0;l=0;break a}default:{v=K;w=n;x=o;y=A;z=p;oa=j;na=k;pa=m;qa=s;ra=q;sa=r;ta=t;ua=u;K=v;n=w;o=x;A=y;p=z;j=oa;k=na;m=pa;s=qa;q=ra;r=sa;t=ta;u=ua;continue a}}}do if((aa|0)==4){c[ca>>2]=T;PI(b,302168,ca);ua=gc(4)|0;c[ua>>2]=0;qd(ua|0,366936,0)}else if((aa|0)==6){c[ca>>2]=T;PI(b,302216,ca);ua=gc(4)|0;c[ua>>2]=0;qd(ua|0,366936,0)}else if((aa|0)==9){c[ca>>2]=T;PI(b,302272,ca);ua=gc(4)|0;c[ua>>2]=0;qd(ua|0,366936,0)}else if((aa|0)==14){c[ca>>2]=T;PI(b,302168,ca);ua=gc(4)|0;c[ua>>2]=0;qd(ua|0,366936,0)}else if((aa|0)==16){c[ca>>2]=0;ua=Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](f)|0;Hd[(d[S>>0]|d[S+1>>0]<<8|d[S+2>>0]<<16|d[S+3>>0]<<24)&255](f,0,2)|0;l=Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](f)|0;Hd[(d[S>>0]|d[S+1>>0]<<8|d[S+2>>0]<<16|d[S+3>>0]<<24)&255](f,ua,0)|0;Hd[(d[S>>0]|d[S+1>>0]<<8|d[S+2>>0]<<16|d[S+3>>0]<<24)&255](f,n,0)|0;while(1){if(((Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](f)|0)+4|0)>(l|0)){aa=22;break}Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](ca,1,4,f)|0;c[ca>>2]=Dfa(c[ca>>2]|0)|0;if(((Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](f)|0)+4|0)>(l|0)){aa=23;break}Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](ba,1,4,f)|0;a[O>>0]=0;ua=Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](f)|0;p=c[ca>>2]|0;if((ua+4+p|0)>(l|0)){aa=24;break}Hd[(d[S>>0]|d[S+1>>0]<<8|d[S+2>>0]<<16|d[S+3>>0]<<24)&255](f,p+4|0,1)|0;p=dS(ba)|0;if((p|0)==11){aa=26;break}else if((p|0)!=12)continue;if((c[ca>>2]|0)!=13){aa=25;break}}if((aa|0)==22){ua=gc(4)|0;c[ua>>2]=1;qd(ua|0,366960,0)}else if((aa|0)==23){ua=gc(4)|0;c[ua>>2]=1;qd(ua|0,366960,0)}else if((aa|0)==24){ua=gc(4)|0;c[ua>>2]=1;qd(ua|0,366960,0)}else if((aa|0)==25){ua=gc(4)|0;c[ua>>2]=1;qd(ua|0,366960,0)}else if((aa|0)==26){j=(Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](f)|0)-n|0;l=eJ(0,0)|0;p=Ed[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](f)|0;kJ(l,0,0)|0;nJ(302368,1,8,l)|0;g=tea(g,j)|0;if(!g){c[ca>>2]=T;PI(b,302168,ca);ua=gc(4)|0;c[ua>>2]=0;qd(ua|0,366936,0)}Hd[(d[S>>0]|d[S+1>>0]<<8|d[S+2>>0]<<16|d[S+3>>0]<<24)&255](f,n,0)|0;Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](g,1,j,f)|0;Hd[(d[S>>0]|d[S+1>>0]<<8|d[S+2>>0]<<16|d[S+3>>0]<<24)&255](f,p,0)|0;nJ(g,1,j,l)|0;c:do if((k|0)!=0?(eS(l,302376),eS(l,302384),eS(l,302392),c[$>>2]=0,c[U>>2]=0,iJ(l,$,U)|0,V=c[$>>2]|0,W=c[U>>2]|0,!((W|0)==0|(V|0)==0|W>>>0<20|(W+-8|0)>>>0<20)):0){p=8;while(1){k=p+4|0;if(k>>>0>W>>>0)break c;j=V+p|0;j=p+12+(Dfa(d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24|0)|0)|0;if(j>>>0>W>>>0)break c;if(!(ffa(V+k|0,302400,4)|0))break;else p=j}c[ca>>2]=0;c[ba>>2]=0;if(((j|0)!=(p|0)?(iJ(l,ca,ba)|0,X=c[ca>>2]|0,Y=c[ba>>2]|0,(j-p|0)>>>0>>0&(((Y|0)==0|(X|0)==0|Y>>>0<20)^1)):0)?(Z=Y+m|0,_=qea(Z)|0,(_|0)!=0):0){qfa(_|0,X|0,p|0)|0;qfa(_+p|0,o|0,m|0)|0;qfa(_+(p+m)|0,X+p|0,Y-p|0)|0;kJ(l,0,0)|0;nJ(_,1,Z,l)|0;rea(_)}}while(0);if(!l){m=0;n=0;k=r;j=s;l=0;p=u;break}kJ(l,0,0)|0;p=jJ(l,0)|0;if((p|0)==-1){m=0;n=0;k=r;j=s;p=u;break}m=gJ(p,l,h)|0;n=0;k=r;j=s;p=u;break}}else if((aa|0)==42){c[ca>>2]=T;PI(b,302408,ca);ua=gc(4)|0;c[ua>>2]=0;qd(ua|0,366936,0)}else if((aa|0)==50)if(j){kJ(j,0,0)|0;p=jJ(j,0)|0;if((p|0)==-1)m=0;else m=gJ(p,j,h)|0;if(((n|0)!=0?(c[P>>2]=0,c[Q>>2]=0,iJ(k,P,Q)|0,(c[P>>2]|0)!=0&(c[Q>>2]|0)!=0):0)?(l=eJ(0,0)|0,ta=c[P>>2]|0,ua=c[Q>>2]|0,nJ(302368,1,8,l)|0,ra=Dfa(q|0)|0,sa=Dfa(r|0)|0,c[$>>2]=ra,c[L>>2]=sa,a[M>>0]=o,a[N>>0]=0,a[N+1>>0]=0,a[N+2>>0]=0,a[N+3>>0]=0,fS(302496,$,13,l),fS(302400,ta,ua,l),c[ca>>2]=0,nJ(ca,1,4,l)|0,c[ca>>2]=Dfa(c[ca>>2]|0)|0,nJ(302488,1,4,l)|0,c[ba>>2]=Dfa(tK(0,302488,4)|0)|0,nJ(ba,1,4,l)|0,(l|0)!=0):0){kJ(l,0,0)|0;p=jJ(l,0)|0;if((p|0)==-1){q=u;o=s;n=0;p=v}else{q=u;o=s;n=gJ(p,l,h)|0;p=v}}else{q=u;o=s;n=0;l=0;p=v}}else{q=u;o=s;m=0;n=0;j=0;l=0;p=v}while(0);fJ(j);fJ(l);fJ(k);rea(g);rea(o);if(da&(n|0)!=0){g=MI(m)|0;if((YH(n)|0)==8?(VH(n)|0)==1:0)hL(g,n,4)|0;else{ua=II(n)|0;hL(g,ua,4)|0;RH(ua)}RH(m)}else g=m;RH(n);if(!g){ua=0;ta=c[ka>>2]|0;hS(la,ta);i=ma;return ua|0}vI(g,t);wI(g,q);if(p)nI(g,fa)|0;if(!(c[ea>>2]|0)){ua=g;ta=c[ka>>2]|0;hS(la,ta);i=ma;return ua|0}j=c[la>>2]|0;if((j|0)==(ga|0)){ua=g;ta=c[ka>>2]|0;hS(la,ta);i=ma;return ua|0}m=ia+1|0;n=ja+1|0;o=ja+8|0;p=ia+8|0;do{q2(ia,j+16|0);q2(ja,j+28|0);k=(a[ia>>0]&1)==0?m:c[p>>2]|0;l=(a[ja>>0]&1)==0?n:c[o>>2]|0;if((k|0)!=0&(l|0)!=0?(ha=BK()|0,(ha|0)!=0):0){ta=(tfa(l|0)|0)+1|0;ra=KK(ha,k)|0;sa=PK(ha,ta)|0;ta=OK(ha,ta)|0;ua=NK(ha,2)|0;if(ra&1&sa&ta&ua&(QK(ha,l)|0))BI(0,g,EK(ha)|0,ha)|0;CK(ha)}v2(ja);v2(ia);k=c[j+4>>2]|0;if(!k)while(1){k=c[j+8>>2]|0;if((c[k>>2]|0)==(j|0)){j=k;break}else j=k}else{j=k;while(1){k=c[j>>2]|0;if(!k)break;else j=k}}}while((j|0)!=(ga|0));ua=c[ka>>2]|0;hS(la,ua);i=ma;return g|0}function pJ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=i;i=i+48|0;r=x+44|0;u=x+40|0;b=x+24|0;o=x+20|0;p=x+16|0;t=x+8|0;v=x+4|0;s=x;w=x+12|0;if(!f){e=0;i=x;return e|0}if((VH(f)|0)!=1){e=0;i=x;return e|0}m=YH(f)|0;if((m|0)==24){j=f;l=0;n=10}else if((m|0)==32){j=LI(f)|0;l=8;n=14}else if((m|0)==8){n=(iI(f)|0)==1;j=f;l=0;n=n?8:10}else{e=0;i=x;return e|0}y=WH(f)|0;k=XH(f)|0;q=eJ(0,0)|0;nJ(302464,1,8,q)|0;y=Dfa(y|0)|0;k=Dfa(k|0)|0;c[b>>2]=y;c[b+4>>2]=k;a[b+8>>0]=n;a[b+9>>0]=8;a[b+10>>0]=8;a[b+11>>0]=0;a[b+12>>0]=l;a[b+13>>0]=0;a[b+14>>0]=0;a[b+15>>0]=0;fS(302472,b,16,q);k=eJ(0,0)|0;if(!(hJ(2,j,k,h|262144)|0)){y=gc(4)|0;c[y>>2]=0;qd(y|0,366936,0)}if((j|0)!=(f|0))RH(j);c[o>>2]=0;c[p>>2]=0;iJ(k,o,p)|0;b=c[p>>2]|0;if(b){l=0;do{y=b-l|0;y=y>>>0>8192?8192:y;fS(302480,(c[o>>2]|0)+l|0,y,q);l=y+l|0;b=c[p>>2]|0}while(b>>>0>l>>>0)}fJ(k);if((m|0)==32&n<<24>>24==14){b=gL(f,4)|0;n=eJ(0,0)|0;if(!(hJ(13,b,n,0)|0)){y=gc(4)|0;c[y>>2]=0;qd(y|0,366936,0)}RH(b);b=8;a:while(1){c[r>>2]=0;c[u>>2]=0;iJ(n,r,u)|0;m=c[r>>2]|0;h=c[u>>2]|0;if((h|0)==0|(m|0)==0|h>>>0<20|(h-b|0)>>>0<20)break;while(1){l=b+4|0;if(l>>>0>h>>>0)break a;k=m+b|0;k=Dfa(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24|0)|0;j=b+12+k|0;if(j>>>0>h>>>0)break a;if(!(ffa(m+l|0,302400,4)|0))break;else b=j}c[t>>2]=0;c[v>>2]=0;iJ(n,t,v)|0;fS(302400,(c[t>>2]|0)+(b+8)|0,k,q);b=j}fJ(n)}c[u>>2]=0;c[r>>2]=0;nJ(r,1,4,q)|0;c[r>>2]=Dfa(c[r>>2]|0)|0;nJ(302488,1,4,q)|0;c[u>>2]=Dfa(tK(0,302488,4)|0)|0;nJ(u,1,4,q)|0;c[s>>2]=0;c[w>>2]=0;iJ(q,s,w)|0;y=e+4|0;Xd[(d[y>>0]|d[y+1>>0]<<8|d[y+2>>0]<<16|d[y+3>>0]<<24)&255](c[s>>2]|0,1,c[w>>2]|0,g)|0;fJ(q);fJ(0);fJ(0);y=1;i=x;return y|0}function qJ(a,b){a=a|0;b=b|0;var c=0;if(!(ZH(a)|0)){b=0;return b|0}c=fI(a)|0;a=dI(a)|0;if(!c){b=0;return b|0}b=c+(da(a,b)|0)|0;return b|0}function rJ(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;m=p;if(!b){o=-1;i=p;return o|0}o=kda(32,367160)|0;k=kda(64,367160)|0;j=(o|0)!=0;l=(k|0)!=0;if(!(j&l)){if(!((o|0)==0|j^1))nda(o);if(!((k|0)==0|l^1))nda(k);PI(-1,315480,m);o=-1;i=p;return o|0}j=k+0|0;l=j+64|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(l|0));n=a+8|0;Cd[b&255](k,c[n>>2]|0);do if(!e){j=c[k>>2]|0;if((j|0)!=0?(Rd[j&255]()|0)!=0:0)break;nda(k);nda(o);o=-1;i=p;return o|0}while(0);b=c[n>>2]|0;c[o>>2]=b;c[o+4>>2]=d;c[o+8>>2]=k;c[o+16>>2]=e;c[o+20>>2]=f;c[o+24>>2]=g;c[o+28>>2]=h;c[o+12>>2]=1;d=a+4|0;j=c[d>>2]|0;do if(j){while(1){k=c[j+16>>2]|0;if((b|0)<(k|0)){k=c[j>>2]|0;if(!k){k=j;l=j;f=14;break}else{j=k;continue}}if((k|0)>=(b|0)){f=18;break}k=j+4|0;l=c[k>>2]|0;if(!l){f=17;break}else j=l}if((f|0)==14){c[m>>2]=l;break}else if((f|0)==17){c[m>>2]=j;l=j;break}else if((f|0)==18){c[m>>2]=j;k=m;l=j;break}}else{l=a+4|0;c[m>>2]=l;k=l}while(0);j=c[k>>2]|0;if(!j){j=jda(24)|0;c[j+16>>2]=b;c[j+20>>2]=0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=l;c[k>>2]=j;b=c[c[a>>2]>>2]|0;if(!b)b=j;else{c[a>>2]=b;b=c[k>>2]|0}VR(c[d>>2]|0,b);c[n>>2]=(c[n>>2]|0)+1;b=c[o>>2]|0}c[j+20>>2]=o;o=b;i=p;return o|0}function sJ(a){a=a|0;var b=0;a=c[75644]|0;c[75644]=a+1;if(a)return;XK()|0;a=kda(16,367160)|0;if(!a){c[75642]=0;return}else{b=a+4|0;c[b>>2]=0;c[a+8>>2]=0;c[a>>2]=b;c[a+12>>2]=0;c[75642]=a;rJ(a,94,0,0,0,0,0)|0;rJ(c[75642]|0,95,0,0,0,0,0)|0;rJ(c[75642]|0,96,0,0,0,0,0)|0;rJ(c[75642]|0,97,0,0,0,0,0)|0;rJ(c[75642]|0,98,0,0,0,0,0)|0;rJ(c[75642]|0,99,0,0,0,0,0)|0;rJ(c[75642]|0,100,0,302584,302592,302616,302624)|0;rJ(c[75642]|0,100,0,302632,302640,302616,302664)|0;rJ(c[75642]|0,101,0,0,0,0,0)|0;rJ(c[75642]|0,102,0,0,0,0,0)|0;rJ(c[75642]|0,100,0,302672,302680,302712,302720)|0;rJ(c[75642]|0,100,0,302728,302736,302712,302760)|0;rJ(c[75642]|0,103,0,0,0,0,0)|0;rJ(c[75642]|0,100,0,302768,302776,302808,302816)|0;rJ(c[75642]|0,100,0,302824,302832,302808,302856)|0;rJ(c[75642]|0,104,0,0,0,0,0)|0;rJ(c[75642]|0,105,0,0,0,0,0)|0;rJ(c[75642]|0,106,0,0,0,0,0)|0;rJ(c[75642]|0,107,0,0,0,0,0)|0;rJ(c[75642]|0,108,0,0,0,0,0)|0;rJ(c[75642]|0,109,0,0,0,0,0)|0;rJ(c[75642]|0,110,0,0,0,0,0)|0;rJ(c[75642]|0,111,0,0,0,0,0)|0;rJ(c[75642]|0,112,0,0,0,0,0)|0;rJ(c[75642]|0,113,0,0,0,0,0)|0;rJ(c[75642]|0,114,0,0,0,0,0)|0;rJ(c[75642]|0,115,0,0,0,0,0)|0;rJ(c[75642]|0,116,0,0,0,0,0)|0;rJ(c[75642]|0,117,0,0,0,0,0)|0;rJ(c[75642]|0,118,0,0,0,0,0)|0;rJ(c[75642]|0,119,0,0,0,0,0)|0;rJ(c[75642]|0,120,0,0,0,0,0)|0;return}}function tJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if((a|0)<=-1){d=0;return d|0}h=c[75642]|0;if(!h)f=0;else f=c[h+8>>2]|0;if((f|0)<=(a|0)){d=0;return d|0}g=c[h+4>>2]|0;i=h+4|0;if(!g){d=0;return d|0}else f=i;a:do{while(1){if((c[g+16>>2]|0)>=(a|0)){f=g;break}g=c[g+4>>2]|0;if(!g)break a}g=c[f>>2]|0}while((g|0)!=0);if((f|0)==(i|0)){d=0;return d|0}if((c[f+16>>2]|0)>(a|0)){d=0;return d|0}f=c[f+20>>2]|0;if(!f){d=0;return d|0}i=f+8|0;f=c[i>>2]|0;g=c[f+32>>2]|0;if(!g){d=0;return d|0}f=c[f+16>>2]|0;if(!f){h=0;f=g}else{h=Hd[f&255](b,d,1)|0;f=c[(c[i>>2]|0)+32>>2]|0}g=Qd[f&127](b,d,-1,e,h)|0;f=c[(c[i>>2]|0)+20>>2]|0;if(!f){d=g;return d|0}Ud[f&255](b,d,h);d=g;return d|0}function uJ(){var a=0;a=c[75642]|0;if(!a){a=0;return a|0}a=c[a+8>>2]|0;return a|0}function vJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;f=o;m=o+8|0;UI(m);n=Lc(b|0,302864)|0;if(!n){c[f>>2]=b;PI(a,302872,f);n=0;i=o;return n|0}if((a|0)>-1){b=c[75642]|0;if(!b)f=0;else f=c[b+8>>2]|0;if((f|0)>(a|0)?(e=c[b+4>>2]|0,g=b+4|0,(e|0)!=0):0){b=g;a:do{while(1){if((c[e+16>>2]|0)>=(a|0)){b=e;break}e=c[e+4>>2]|0;if(!e)break a}e=c[b>>2]|0}while((e|0)!=0);if((((b|0)!=(g|0)?(c[b+16>>2]|0)<=(a|0):0)?(h=c[b+20>>2]|0,(h|0)!=0):0)?(l=h+8|0,j=c[l>>2]|0,k=c[j+32>>2]|0,(k|0)!=0):0){b=c[j+16>>2]|0;if(!b){f=0;b=k}else{f=Hd[b&255](m,n,1)|0;b=c[(c[l>>2]|0)+32>>2]|0}b=Qd[b&127](m,n,-1,d,f)|0;e=c[(c[l>>2]|0)+20>>2]|0;if(e)Ud[e&255](m,n,f)}else b=0}else b=0}else b=0;wc(n|0)|0;n=b;i=o;return n|0}function wJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;if(!(ZH(b)|0)){PI(a,302912,l);f=0;i=l;return f|0}if((a|0)<=-1){f=0;i=l;return f|0}j=c[75642]|0;if(!j)g=0;else g=c[j+8>>2]|0;if((g|0)<=(a|0)){f=0;i=l;return f|0}h=c[j+4>>2]|0;k=j+4|0;if(!h){f=0;i=l;return f|0}else g=k;a:do{while(1){if((c[h+16>>2]|0)>=(a|0)){g=h;break}h=c[h+4>>2]|0;if(!h)break a}h=c[g>>2]|0}while((h|0)!=0);if((g|0)==(k|0)){f=0;i=l;return f|0}if((c[g+16>>2]|0)>(a|0)){f=0;i=l;return f|0}g=c[g+20>>2]|0;if(!g){f=0;i=l;return f|0}k=g+8|0;g=c[k>>2]|0;h=c[g+36>>2]|0;if(!h){f=0;i=l;return f|0}g=c[g+16>>2]|0;if(!g){j=0;g=h}else{j=Hd[g&255](d,e,0)|0;g=c[(c[k>>2]|0)+36>>2]|0}h=Dd[g&31](d,b,e,-1,f,j)|0;g=c[(c[k>>2]|0)+20>>2]|0;if(!g){f=h;i=l;return f|0}Ud[g&255](d,e,j);f=h;i=l;return f|0}function xJ(a){a=a|0;var b=0,d=0,e=0;b=c[75642]|0;if(!b){e=0;return e|0}d=c[b+4>>2]|0;e=b+4|0;if(!d){e=0;return e|0}else b=e;a:do{while(1){if((c[d+16>>2]|0)>=(a|0)){b=d;break}d=c[d+4>>2]|0;if(!d)break a}d=c[b>>2]|0}while((d|0)!=0);if((b|0)==(e|0)){e=0;return e|0}if((c[b+16>>2]|0)>(a|0)){e=0;return e|0}b=c[b+20>>2]|0;if(!b){e=0;return e|0}e=(c[(c[b+8>>2]|0)+32>>2]|0)!=0&1;return e|0}function yJ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if(!b){o=-1;return o|0}j=Zca(b,46)|0;j=(j|0)==0?b:j+1|0;b=0;a:while(1){f=c[75642]|0;h=(f|0)==0;if(h)d=0;else d=c[f+8>>2]|0;if((b|0)>=(d|0)){b=-1;e=81;break}e=c[f+4>>2]|0;g=f+4|0;d=g;f=e;b:do{while(1){if((c[f+16>>2]|0)>=(b|0)){d=f;break}f=c[f+4>>2]|0;if(!f)break b}f=c[d>>2]|0}while((f|0)!=0);if(c[(c[d+20>>2]|0)+12>>2]|0){if(!(h|(e|0)==0)){d=g;c:do{while(1){if((c[e+16>>2]|0)>=(b|0)){d=e;break}e=c[e+4>>2]|0;if(!e)break c}e=c[d>>2]|0}while((e|0)!=0);if(((d|0)!=(g|0)?(c[d+16>>2]|0)<=(b|0):0)?(n=c[d+20>>2]|0,(n|0)!=0):0){d=c[n+16>>2]|0;if(!d){d=Rd[c[c[n+8>>2]>>2]&255]()|0;f=j}else f=j}else{d=0;f=j}}else{d=0;f=j}while(1){g=zea(a[d>>0]|0)|0;e=zea(a[f>>0]|0)|0;if(!g){d=0;break}if((g|0)==(e|0)){d=d+1|0;f=f+1|0}else{d=g;break}}if((d|0)==(e|0)){e=81;break}h=c[75642]|0;if(h){f=c[h+4>>2]|0;e=h+4|0;if(f){d=e;d:do{while(1){if((c[f+16>>2]|0)>=(b|0)){d=f;break}f=c[f+4>>2]|0;if(!f)break d}f=c[d>>2]|0}while((f|0)!=0);if(((d|0)!=(e|0)?(c[d+16>>2]|0)<=(b|0):0)?(o=c[d+20>>2]|0,(o|0)!=0):0){d=c[o+24>>2]|0;if(!d){d=c[(c[o+8>>2]|0)+8>>2]|0;if(!d){d=0;f=h}else{d=Rd[d&255]()|0;f=c[75642]|0}}else f=h}else{d=0;f=h}}else{d=0;f=h}}else{d=0;f=0}d=qea((tfa(d|0)|0)+1|0)|0;if(f){g=c[f+4>>2]|0;h=f+4|0;if(g){e=h;e:do{while(1){if((c[g+16>>2]|0)>=(b|0)){e=g;break}g=c[g+4>>2]|0;if(!g)break e}g=c[e>>2]|0}while((g|0)!=0);if(((e|0)!=(h|0)?(c[e+16>>2]|0)<=(b|0):0)?(k=c[e+20>>2]|0,(k|0)!=0):0){e=c[k+24>>2]|0;if(!e){e=c[(c[k+8>>2]|0)+8>>2]|0;if(!e)e=0;else{e=Rd[e&255]()|0;f=c[75642]|0}}}else e=0}else e=0}else{e=0;f=0}sfa(d|0,0,(tfa(e|0)|0)+1|0)|0;do if(f){g=c[f+4>>2]|0;h=f+4|0;if(g){e=h;f:do{while(1){if((c[g+16>>2]|0)>=(b|0)){e=g;break}g=c[g+4>>2]|0;if(!g)break f}g=c[e>>2]|0}while((g|0)!=0);if(((e|0)!=(h|0)?(c[e+16>>2]|0)<=(b|0):0)?(l=c[e+20>>2]|0,(l|0)!=0):0){e=c[l+24>>2]|0;if(!e){e=c[(c[l+8>>2]|0)+8>>2]|0;if(!e)e=0;else{e=Rd[e&255]()|0;f=c[75642]|0}}}else e=0;if(!f){g=e;e=0;break}else g=e}else g=0;h=c[f+4>>2]|0;i=f+4|0;if(h){e=i;f=h;g:do{while(1){if((c[f+16>>2]|0)>=(b|0)){e=f;break}f=c[f+4>>2]|0;if(!f)break g}f=c[e>>2]|0}while((f|0)!=0);if(((e|0)!=(i|0)?(c[e+16>>2]|0)<=(b|0):0)?(m=c[e+20>>2]|0,(m|0)!=0):0){e=c[m+24>>2]|0;if(!e){f=c[(c[m+8>>2]|0)+8>>2]|0;if(!f)e=0;else e=Rd[f&255]()|0}}else e=0}else e=0}else{g=0;e=0}while(0);qfa(d|0,g|0,tfa(e|0)|0)|0;e=ada(d,302976)|0;if(e){f=j;while(1){g=zea(a[e>>0]|0)|0;h=zea(a[f>>0]|0)|0;if(g)if((g|0)==(h|0)){e=e+1|0;f=f+1|0;continue}else e=g;else e=0;if((e|0)==(h|0)){e=77;break a}e=ada(0,302976)|0;if(!e)break;else f=j}}rea(d)}b=b+1|0}if((e|0)==77){rea(d);o=b;return o|0}else if((e|0)==81)return b|0;return 0}function zJ(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0;f=c[75642]|0;if(!f){b=0;return b|0}g=c[f+4>>2]|0;h=f+4|0;if(!g){b=0;return b|0}else f=h;a:do{while(1){if((c[g+16>>2]|0)>=(a|0)){f=g;break}g=c[g+4>>2]|0;if(!g)break a}g=c[f>>2]|0}while((g|0)!=0);if((f|0)==(h|0)){b=0;return b|0}if((c[f+16>>2]|0)>(a|0)){b=0;return b|0}f=c[f+20>>2]|0;if(!f){b=0;return b|0}g=b+12|0;g=Ed[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&511](e)|0;if((c[f+12>>2]|0)!=0?(i=c[(c[f+8>>2]|0)+40>>2]|0,(i|0)!=0):0)f=Pd[i&511](b,e)|0;else f=0;b=b+8|0;Hd[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](e,g,0)|0;b=f;return b|0}function AJ(a,b){a=a|0;b=b|0;c[75746]=b;c[a>>2]=1;c[a+4>>2]=2;c[a+8>>2]=3;c[a+12>>2]=4;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=56;c[a+36>>2]=8;c[a+40>>2]=228;c[a+44>>2]=5;c[a+48>>2]=161;c[a+52>>2]=162;c[a+56>>2]=0;c[a+60>>2]=6;return}function BJ(a,b){a=a|0;b=b|0;c[75816]=b;c[a>>2]=7;c[a+4>>2]=8;c[a+8>>2]=9;c[a+12>>2]=10;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=57;c[a+36>>2]=0;c[a+40>>2]=229;c[a+44>>2]=11;c[a+48>>2]=163;c[a+52>>2]=164;c[a+56>>2]=0;c[a+60>>2]=12;return}function CJ(a,b){a=a|0;b=b|0;c[a>>2]=13;c[a+4>>2]=14;c[a+8>>2]=15;c[a+12>>2]=16;c[a+16>>2]=163;c[a+20>>2]=54;c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=58;c[a+36>>2]=0;c[a+40>>2]=230;c[a+44>>2]=17;c[a+48>>2]=165;c[a+52>>2]=166;c[a+56>>2]=0;return}function DJ(a,b){a=a|0;b=b|0;c[75842]=b;c[a>>2]=18;c[a+4>>2]=19;c[a+8>>2]=20;c[a+12>>2]=21;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=59;c[a+36>>2]=0;c[a+40>>2]=0;c[a+44>>2]=22;c[a+48>>2]=167;c[a+52>>2]=0;c[a+56>>2]=0;return}function EJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;a[b>>0]=0;c[b+20>>2]=8;i=b+4|0;c[i>>2]=d;g=1<4096?4096:g;c[j>>2]=g;f=g+1|0;k=b+12|0;c[k>>2]=f;c[b+44>>2]=0;c[b+48>>2]=0;c[b+49216>>2]=0;e=c[b+49208>>2]|0;if(!e)e=g;else{sfa(e|0,-1,4194304)|0;f=c[k>>2]|0;d=c[i>>2]|0;e=c[j>>2]|0}g=b+16|0;c[g>>2]=f+1;c[b+28>>2]=0;h=b+32|0;c[h>>2]=d+1;if((e|0)>0)f=0;else{i=f;j=d;i=i+1|0;c[g>>2]=i;j=j+1|0;c[h>>2]=j;h=1<>2]=h;j=b+40|0;c[j>>2]=4096;return}do{e=b+(f*12|0)+56|0;z2(e,1,0);if(!(a[e>>0]&1))e=e+1|0;else e=c[b+(f*12|0)+64>>2]|0;a[e>>0]=f;f=f+1|0}while((f|0)<(c[j>>2]|0));d=c[k>>2]|0;j=c[i>>2]|0;i=d+1|0;c[g>>2]=i;j=j+1|0;c[h>>2]=j;h=1<>2]=h;j=b+40|0;c[j>>2]=4096;return}function FJ(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;D=b+49216|0;g=c[D>>2]|0;if(!g){f=0;return f|0}if(a[b>>0]|0){f=0;return f|0}B=b+20|0;l=c[B>>2]|0;C=b+49224|0;n=b+49212|0;o=b+49228|0;p=b+28|0;q=(1<>2]|0;h=e;a:while(1){b=h-t|0;k=j;while(1){if((k|0)>=(g|0)){E=29;break a}i=c[o>>2]|0;j=q&(d[(c[n>>2]|0)+k>>0]|0)>>>i;if(c[r>>2]|0){e=c[p>>2]|0;b=j;break}c[r>>2]=1;c[p>>2]=j;e=k+1|0;if((i|0)>0)if((e|0)==(g|0)?(i|0)<=(c[s>>2]|0):0)E=27;else e=k;else E=27;if((E|0)==27){E=0;c[C>>2]=e;i=8}c[o>>2]=i-l;if((b|0)==(c[f>>2]|0)){b=1;E=30;break a}else k=e}j=e<<8&1048320|b;g=c[(c[u>>2]|0)+(j<<2)>>2]|0;if((g|0)<=0){k=c[v>>2]|0;g=c[w>>2]|e<>2]=g;k=k+(c[x>>2]|0)|0;c[v>>2]=k;b:do if((k|0)>7){e=h;while(1){if((e-t|0)>=(c[f>>2]|0)){h=e;break b}h=e+1|0;a[e>>0]=g;g=c[w>>2]>>8;c[w>>2]=g;k=(c[v>>2]|0)+-8|0;c[v>>2]=k;if((k|0)<=7)break;else e=h}}while(0);i=c[u>>2]|0;c[i+(j<<2)>>2]=c[y>>2];e=c[y>>2]|0;g=c[x>>2]|0;if((e|0)==(1<>2]=g}k=e+1|0;c[y>>2]=k;if((k|0)==4096){k=c[v>>2]|0;c[w>>2]=c[w>>2]|c[z>>2]<>2]=k+g;if(i)sfa(i|0,-1,4194304)|0;c[y>>2]=(c[A>>2]|0)+1;c[p>>2]=0;c[x>>2]=(c[m>>2]|0)+1}}else b=g;c[p>>2]=b;g=c[o>>2]|0;b=c[C>>2]|0;do if((g|0)>0){if((b+1|0)==(c[D>>2]|0)?(g|0)<=(c[s>>2]|0):0){E=21;break}k=c[B>>2]|0;e=k;g=g-k|0}else E=21;while(0);if((E|0)==21){E=0;b=b+1|0;c[C>>2]=b;g=c[B>>2]|0;e=g;g=8-g|0}c[o>>2]=g;if((h-t|0)==(c[f>>2]|0)){b=1;E=30;break}j=b;g=c[D>>2]|0;l=e}if((E|0)==29){c[D>>2]=0;c[f>>2]=b;f=1;return f|0}else if((E|0)==30)return b|0;return 0}function GJ(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;w=F;D=b+49216|0;g=c[D>>2]|0;if(!g){f=0;i=F;return f|0}if(a[b>>0]|0){f=0;i=F;return f|0}E=b+49224|0;j=c[E>>2]|0;a:do if((j|0)<(g|0)){v=b+49212|0;A=b+48|0;B=b+44|0;C=b+32|0;p=b+36|0;q=b+16|0;r=b+12|0;s=b+8|0;t=b+4|0;u=b+40|0;h=e;l=c[A>>2]|0;k=c[C>>2]|0;g=e;b:while(1){c[B>>2]=c[B>>2]|d[(c[v>>2]|0)+j>>0]<>2]=j;c:do if((j|0)<(k|0))l=j;else while(1){e=c[p>>2]|0;l=c[q>>2]|0;while(1){m=c[B>>2]|0;e=e&m;c[B>>2]=m>>k;j=j-k|0;c[A>>2]=j;if((e|0)>(l|0)){j=10;break b}k=c[r>>2]|0;if((e|0)==(k|0)){j=10;break b}if((e|0)!=(c[s>>2]|0)){o=e;break}if((e|0)>0){k=0;do{j=b+(k*12|0)+56|0;z2(j,1,0);if(!(a[j>>0]&1))j=j+1|0;else j=c[b+(k*12|0)+64>>2]|0;a[j>>0]=k;k=k+1|0}while((k|0)<(c[s>>2]|0));k=c[r>>2]|0;j=c[A>>2]|0}l=k+1|0;c[q>>2]=l;k=(c[t>>2]|0)+1|0;c[C>>2]=k;e=(1<>2]=e;c[u>>2]=4096;if((j|0)<(k|0)){l=j;break c}}m=c[u>>2]|0;if((m|0)!=4096&(l|0)<4096){n=b+(m*12|0)+56|0;k=(o|0)==(l|0)?m:o;j=b+(k*12|0)+56|0;if(!(a[j>>0]&1))k=j+1|0;else k=c[b+(k*12|0)+64>>2]|0;e=a[k>>0]|0;c[w+0>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;k=a[n>>0]|0;if(!(k&1)){j=(k&255)>>>1;k=n+1|0}else{j=c[b+(m*12|0)+60>>2]|0;k=c[b+(m*12|0)+64>>2]|0}H2(w,k,j,j+1|0);D2(w,e);w2(b+(l*12|0)+56|0,w)|0;v2(w)}m=b+(o*12|0)+56|0;l=a[m>>0]|0;j=(l&1)==0;if(j)k=(l&255)>>>1;else k=c[b+(o*12|0)+60>>2]|0;e=g-h|0;if((k|0)>((c[f>>2]|0)-e|0)){h=o;g=e;j=31;break b}if(j){j=m+1|0;k=(l&255)>>>1}else{j=c[b+(o*12|0)+64>>2]|0;k=c[b+(o*12|0)+60>>2]|0}qfa(g|0,j|0,k|0)|0;j=a[m>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[b+(o*12|0)+60>>2]|0;g=g+j|0;if((((c[u>>2]|0)!=4096?(x=c[q>>2]|0,(x|0)<4096):0)?(y=x+1|0,c[q>>2]=y,(y|0)<4096):0)?(z=c[p>>2]|0,(z&y|0)==0):0){c[C>>2]=(c[C>>2]|0)+1;c[p>>2]=z|y}c[u>>2]=o;j=c[A>>2]|0;k=c[C>>2]|0;if((j|0)<(k|0)){l=j;break}}while(0);j=(c[E>>2]|0)+1|0;c[E>>2]=j;if((j|0)>=(c[D>>2]|0))break a}if((j|0)==10){a[b>>0]=1;c[f>>2]=g-h;f=1;i=F;return f|0}else if((j|0)==31){b=c[C>>2]|0;D=c[B>>2]<>2]=(c[A>>2]|0)+b;c[B>>2]=D|h;c[E>>2]=(c[E>>2]|0)+1;c[f>>2]=g;f=1;i=F;return f|0}}else{h=e;g=e}while(0);c[D>>2]=0;c[f>>2]=g-h;f=1;i=F;return f|0}function HJ(a,b){a=a|0;b=b|0;c[75896]=b;c[a>>2]=23;c[a+4>>2]=24;c[a+8>>2]=25;c[a+12>>2]=26;c[a+16>>2]=164;c[a+20>>2]=55;c[a+24>>2]=165;c[a+28>>2]=0;c[a+32>>2]=60;c[a+36>>2]=9;c[a+40>>2]=231;c[a+44>>2]=27;c[a+48>>2]=168;c[a+52>>2]=169;c[a+56>>2]=0;return}function IJ(a,b){a=a|0;b=b|0;c[76e3]=b;c[a>>2]=28;c[a+4>>2]=29;c[a+8>>2]=30;c[a+12>>2]=31;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=61;c[a+36>>2]=10;c[a+40>>2]=232;c[a+44>>2]=32;c[a+48>>2]=170;c[a+52>>2]=171;c[a+56>>2]=0;c[a+60>>2]=33;return}function JJ(a,b){a=a|0;b=b|0;c[76150]=b;c[a>>2]=34;c[a+4>>2]=35;c[a+8>>2]=36;c[a+12>>2]=37;c[a+16>>2]=166;c[a+20>>2]=56;c[a+24>>2]=167;c[a+28>>2]=0;c[a+32>>2]=62;c[a+36>>2]=11;c[a+40>>2]=233;c[a+44>>2]=38;c[a+48>>2]=172;c[a+52>>2]=173;c[a+56>>2]=0;c[a+60>>2]=39;return}function KJ(a,b){a=a|0;b=b|0;c[a>>2]=40;c[a+4>>2]=41;c[a+8>>2]=42;c[a+12>>2]=43;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=63;c[a+36>>2]=0;c[a+40>>2]=234;c[a+44>>2]=44;c[a+48>>2]=174;c[a+52>>2]=175;c[a+56>>2]=0;return}function LJ(a,b){a=a|0;b=b|0;c[76206]=b;c[a>>2]=45;c[a+4>>2]=46;c[a+8>>2]=47;c[a+12>>2]=48;c[a+16>>2]=168;c[a+20>>2]=57;c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=64;c[a+36>>2]=12;c[a+40>>2]=235;c[a+44>>2]=49;c[a+48>>2]=176;c[a+52>>2]=177;c[a+56>>2]=0;return}function MJ(a,b){a=a|0;b=b|0;c[76222]=b;c[a>>2]=50;c[a+4>>2]=51;c[a+8>>2]=52;c[a+12>>2]=53;c[a+16>>2]=169;c[a+20>>2]=58;c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=65;c[a+36>>2]=13;c[a+40>>2]=236;c[a+44>>2]=54;c[a+48>>2]=178;c[a+52>>2]=179;c[a+56>>2]=55;c[a+60>>2]=56;return}function NJ(a,b){a=a|0;b=b|0;c[76238]=b;c[a>>2]=57;c[a+4>>2]=58;c[a+8>>2]=59;c[a+12>>2]=60;c[a+16>>2]=170;c[a+20>>2]=59;c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=66;c[a+36>>2]=14;c[a+40>>2]=237;c[a+44>>2]=61;c[a+48>>2]=180;c[a+52>>2]=181;c[a+56>>2]=0;return}function OJ(a,b){a=a|0;b=b|0;c[76304]=b;c[a>>2]=62;c[a+4>>2]=63;c[a+8>>2]=64;c[a+12>>2]=65;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=67;c[a+36>>2]=15;c[a+40>>2]=238;c[a+44>>2]=66;c[a+48>>2]=182;c[a+52>>2]=183;c[a+56>>2]=67;c[a+60>>2]=68;return}function PJ(a,b){a=a|0;b=b|0;c[76450]=b;c[a>>2]=69;c[a+4>>2]=70;c[a+8>>2]=71;c[a+12>>2]=72;c[a+16>>2]=171;c[a+20>>2]=60;c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=68;c[a+36>>2]=0;c[a+40>>2]=239;c[a+44>>2]=73;c[a+48>>2]=184;c[a+52>>2]=185;c[a+56>>2]=74;c[a+60>>2]=75;return}function QJ(a,b){a=a|0;b=b|0;c[76468]=b;c[a>>2]=76;c[a+4>>2]=77;c[a+8>>2]=78;c[a+12>>2]=79;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=69;c[a+36>>2]=0;c[a+40>>2]=0;c[a+44>>2]=80;c[a+48>>2]=186;c[a+52>>2]=187;c[a+56>>2]=0;c[a+60>>2]=81;return}function RJ(a,b){a=a|0;b=b|0;c[76484]=b;c[a>>2]=82;c[a+4>>2]=83;c[a+8>>2]=84;c[a+12>>2]=85;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=70;c[a+36>>2]=0;c[a+40>>2]=240;c[a+44>>2]=86;c[a+48>>2]=188;c[a+52>>2]=189;c[a+56>>2]=0;c[a+60>>2]=87;return}function SJ(a,b){a=a|0;b=b|0;c[76500]=b;c[a>>2]=88;c[a+4>>2]=89;c[a+8>>2]=90;c[a+12>>2]=91;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=71;c[a+36>>2]=16;c[a+40>>2]=241;c[a+44>>2]=92;c[a+48>>2]=190;c[a+52>>2]=191;c[a+56>>2]=0;c[a+60>>2]=93;return}function TJ(a,b){a=a|0;b=b|0;c[76538]=b;c[a>>2]=94;c[a+4>>2]=95;c[a+8>>2]=96;b=a+12|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[a+32>>2]=72;c[a+36>>2]=0;c[a+40>>2]=242;c[a+44>>2]=97;c[a+48>>2]=192;c[a+52>>2]=193;c[a+56>>2]=98;return}function UJ(a,b){a=a|0;b=b|0;c[77830]=b;c[a>>2]=99;c[a+4>>2]=100;c[a+8>>2]=101;c[a+12>>2]=102;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=73;c[a+36>>2]=17;c[a+40>>2]=243;c[a+44>>2]=103;c[a+48>>2]=194;c[a+52>>2]=195;c[a+56>>2]=104;c[a+60>>2]=105;return}function VJ(a,b){a=a|0;b=b|0;c[77884]=b;c[a>>2]=106;c[a+4>>2]=107;c[a+8>>2]=108;c[a+12>>2]=109;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=74;c[a+36>>2]=18;c[a+40>>2]=244;c[a+44>>2]=110;c[a+48>>2]=196;c[a+52>>2]=197;c[a+56>>2]=0;c[a+60>>2]=111;return}function WJ(a,b){a=a|0;b=b|0;c[77930]=b;c[a>>2]=112;c[a+4>>2]=113;c[a+8>>2]=114;b=a+12|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[a+32>>2]=75;c[a+36>>2]=0;c[a+40>>2]=245;c[a+44>>2]=115;c[a+48>>2]=198;c[a+52>>2]=199;c[a+56>>2]=116;c[a+60>>2]=117;return}function XJ(a,b){a=a|0;b=b|0;c[77948]=b;c[a>>2]=118;c[a+4>>2]=119;c[a+8>>2]=120;c[a+12>>2]=121;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=76;c[a+36>>2]=0;c[a+40>>2]=246;c[a+44>>2]=122;c[a+48>>2]=200;c[a+52>>2]=201;c[a+56>>2]=0;c[a+60>>2]=123;return}function YJ(a,b){a=a|0;b=b|0;c[77974]=b;c[a>>2]=124;c[a+4>>2]=125;c[a+8>>2]=126;c[a+12>>2]=127;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=77;c[a+36>>2]=0;c[a+40>>2]=247;c[a+44>>2]=128;c[a+48>>2]=202;c[a+52>>2]=203;c[a+56>>2]=0;return}function ZJ(a,b){a=a|0;b=b|0;c[78040]=b;c[a>>2]=129;c[a+4>>2]=130;c[a+8>>2]=131;c[a+12>>2]=132;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=78;c[a+36>>2]=19;c[a+40>>2]=248;c[a+44>>2]=133;c[a+48>>2]=204;c[a+52>>2]=205;c[a+56>>2]=0;c[a+60>>2]=134;return}function _J(a){a=a|0;return qea(a)|0}function $J(a){a=a|0;rea(a);return}function aK(a,b){a=a|0;b=b|0;return tea(a,b)|0}function bK(a,b,c){a=a|0;b=b|0;c=c|0;sfa(a|0,b&255|0,c|0)|0;return}function cK(a,b,c){a=a|0;b=b|0;c=c|0;qfa(a|0,b|0,c|0)|0;return}function dK(a,b,c){a=a|0;b=b|0;c=c|0;return ffa(a,b,c)|0}function eK(a,b){a=a|0;b=b|0;c[78074]=b;bL();c[a>>2]=135;c[a+4>>2]=136;c[a+8>>2]=137;c[a+12>>2]=138;c[a+16>>2]=172;c[a+20>>2]=61;c[a+24>>2]=173;c[a+28>>2]=0;c[a+32>>2]=79;c[a+36>>2]=20;c[a+40>>2]=249;c[a+44>>2]=139;c[a+48>>2]=206;c[a+52>>2]=207;c[a+56>>2]=140;c[a+60>>2]=141;return}function fK(a,b){a=a|0;b=b|0;c[78296]=b;c[a>>2]=142;c[a+4>>2]=143;c[a+8>>2]=144;c[a+12>>2]=145;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=80;c[a+36>>2]=21;c[a+40>>2]=0;c[a+44>>2]=146;c[a+48>>2]=208;c[a+52>>2]=209;c[a+56>>2]=0;return}function gK(a,b){a=a|0;b=b|0;c[78332]=b;c[a>>2]=147;c[a+4>>2]=148;c[a+8>>2]=149;c[a+12>>2]=150;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=81;c[a+36>>2]=0;c[a+40>>2]=250;c[a+44>>2]=151;c[a+48>>2]=210;c[a+52>>2]=211;c[a+56>>2]=0;return}function hK(a,b){a=a|0;b=b|0;c[78426]=b;c[a>>2]=152;c[a+4>>2]=153;c[a+8>>2]=154;c[a+12>>2]=155;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=82;c[a+36>>2]=22;c[a+40>>2]=251;c[a+44>>2]=156;c[a+48>>2]=212;c[a+52>>2]=213;c[a+56>>2]=0;c[a+60>>2]=157;return}function iK(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;k=i;i=i+48|0;h=k+10|0;j=k+4|0;if(!(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](h,26,1,g)|0)){e=0;i=k;return e|0}if((d[h+3>>0]|0|(d[h+2>>0]|0|(d[h+1>>0]|0|(d[h>>0]|0)<<8)<<8)<<8|0)!=943870035){e=0;i=k;return e|0}if((d[h+5>>0]|0|(d[h+4>>0]|0)<<8|0)!=1){e=0;i=k;return e|0};a[j+0>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;a[j+3>>0]=0;a[j+4>>0]=0;a[j+5>>0]=0;if(ffa(h+6|0,j,6)|0)PI(20,314480,k);b[e>>1]=d[h+13>>0]|0|(d[h+12>>0]|0)<<8;c[e+4>>2]=d[h+17>>0]|0|(d[h+16>>0]|0|(d[h+15>>0]|0|(d[h+14>>0]|0)<<8)<<8)<<8;c[e+8>>2]=d[h+21>>0]|0|(d[h+20>>0]|0|(d[h+19>>0]|0|(d[h+18>>0]|0)<<8)<<8)<<8;b[e+12>>1]=d[h+23>>0]|0|(d[h+22>>0]|0)<<8;b[e+14>>1]=d[h+25>>0]|0|(d[h+24>>0]|0)<<8;e=1;i=k;return e|0}function jK(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;j=i;i=i+16|0;p=j+4|0;k=j;n=Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](k,2,1,f)|0;l=k+1|0;b[a+4>>1]=d[l>>0]|0|(d[k>>0]|0)<<8;g=Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](p,4,1,f)|0;q=p+1|0;r=p+2|0;s=p+3|0;c[a+8>>2]=d[s>>0]|0|(d[r>>0]|0|(d[q>>0]|0|(d[p>>0]|0)<<8)<<8)<<8;o=Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](k,2,1,f)|0;b[a>>1]=d[l>>0]|0|(d[k>>0]|0)<<8;m=Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](k,2,1,f)|0;b[a+6>>1]=d[l>>0]|0|(d[k>>0]|0)<<8;h=Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](p,4,1,f)|0;c[a+12>>2]=d[s>>0]|0|(d[r>>0]|0|(d[q>>0]|0|(d[p>>0]|0)<<8)<<8)<<8;e=o+n+m+(Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](k,2,1,f)|0)|0;b[a+2>>1]=d[l>>0]|0|(d[k>>0]|0)<<8;i=j;return (h+g<<2)+(e<<1)|0}function kK(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;l=o+2|0;n=o;h=Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](l,2,1,g)|0;j=l+1|0;b[e>>1]=d[j>>0]|0|(d[l>>0]|0)<<8;m=0;h=h<<1;while(1){k=(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](l,2,1,g)|0)<<1;k=k+h|0;h=(d[j>>0]|0|(d[l>>0]|0)<<8)&65535;if((m|0)==4)break;b[e+(m<<1)+2>>1]=h;m=m+1|0;h=k}b[e+10>>1]=h;if((h&65535)>100){o=gc(4)|0;c[o>>2]=314544;qd(o|0,366936,0)}j=Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,1,1,g)|0;a[e+12>>0]=a[n>>0]|0;h=Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,1,1,g)|0;f=a[n>>0]|0;a[e+13>>0]=f;if(!(f<<24>>24)){i=o;return j+k+h|0}else{o=gc(4)|0;c[o>>2]=314584;qd(o|0,366936,0)}return 0}function lK(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;r=i;i=i+16|0;o=r+4|0;l=r;n=e+12|0;p=Ed[(d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24)&511](f)|0;v=Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,4,1,f)|0;j=l+1|0;m=l+2|0;s=l+3|0;k=g+-28|0;p=p+k|0;c[a>>2]=d[s>>0]|0|(d[m>>0]|0|(d[j>>0]|0|(d[l>>0]|0)<<8)<<8)<<8;w=Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,4,1,f)|0;c[a+4>>2]=d[s>>0]|0|(d[m>>0]|0|(d[j>>0]|0|(d[l>>0]|0)<<8)<<8)<<8;u=Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,4,1,f)|0;c[a+8>>2]=d[s>>0]|0|(d[m>>0]|0|(d[j>>0]|0|(d[l>>0]|0)<<8)<<8)<<8;t=Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,4,1,f)|0;c[a+12>>2]=d[s>>0]|0|(d[m>>0]|0|(d[j>>0]|0|(d[l>>0]|0)<<8)<<8)<<8;q=Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,4,1,f)|0;c[a+16>>2]=d[s>>0]|0|(d[m>>0]|0|(d[j>>0]|0|(d[l>>0]|0)<<8)<<8)<<8;q=w+v+u+t+q+(Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,4,1,f)|0)|0;c[a+20>>2]=d[s>>0]|0|(d[m>>0]|0|(d[j>>0]|0|(d[l>>0]|0)<<8)<<8)<<8;l=Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](o,2,1,f)|0;j=o+1|0;b[a+24>>1]=d[j>>0]|0|(d[o>>0]|0)<<8;m=Xd[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](o,2,1,f)|0;b[a+26>>1]=d[j>>0]|0|(d[o>>0]|0)<<8;n=Ed[(d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24)&511](f)|0;o=a+28|0;j=c[o>>2]|0;if(j)RH(j);if((c[a>>2]|0)!=1){w=e+8|0;Hd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](f,k,1)|0;w=g;i=r;return w|0}j=tJ(2,e,f,0)|0;c[o>>2]=j;if(h)EI(j)|0;w=e+8|0;Hd[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](f,p,0)|0;w=(q<<2)+p-n+(m+l<<1)|0;i=r;return w|0}function mK(d){d=d|0;var e=0,f=0,g=0;b[d>>1]=-1;e=d+4|0;c[e+0>>2]=-1;c[e+4>>2]=-1;c[e+8>>2]=-1;c[e+12>>2]=-1;c[d+20>>2]=0;b[d+60>>1]=-1;e=d+52|0;f=d+24|0;g=f+28|0;do{b[f>>1]=65535;f=f+2|0}while((f|0)<(g|0));f=e;g=f;b[g>>1]=0;b[g+2>>1]=0>>>16;f=f+4|0;b[f>>1]=0;b[f+2>>1]=0>>>16;a[d+62>>0]=0;a[d+63>>0]=48;f=d+64|0;c[f+0>>2]=-1;c[f+4>>2]=-1;c[f+8>>2]=-1;c[f+12>>2]=-1;c[f+16>>2]=-1;c[f+20>>2]=-1;c[f+24>>2]=-1;c[d+92>>2]=0;c[d+96>>2]=0;c[d+100>>2]=0;f=d+112|0;a[f+0>>0]=0;a[f+1>>0]=0;a[f+2>>0]=0;a[f+3>>0]=0;a[f+4>>0]=0;c[d+108>>2]=30;b[d+104>>1]=-1;b[d+106>>1]=-1;c[d+120>>2]=0;c[d+124>>2]=-1;return}function nK(a){a=a|0;var b=0,d=0;b=a+100|0;d=c[b>>2]|0;if(d){oda(d);c[b>>2]=0}c[a+96>>2]=0;RH(c[a+92>>2]|0);b=a+20|0;d=c[b>>2]|0;if(!d)return;oda(d);c[b>>2]=0;return}function oK(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;S=i;i=i+48|0;P=S;O=S+4|0;j=S+40|0;J=S+24|0;N=S+26|0;M=S+28|0;K=S+32|0;L=S+36|0;R=O+12|0;c[R>>2]=0;c[O>>2]=-1;G=O+4|0;c[G>>2]=0;H=O+8|0;b[H>>1]=-1;I=O+16|0;c[I>>2]=-1;if((h|0)<=0){Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](j,4,1,g)|0;h=d[j+3>>0]|0|(d[j+2>>0]|0|(d[j+1>>0]|0|(d[j>>0]|0)<<8)<<8)<<8;c[O>>2]=h;if((h|0)>0)Q=4;else{j=0;Q=32}}else{c[O>>2]=h;Q=4}a:do if((Q|0)==4){m=f+8|0;n=e+113|0;o=P+1|0;p=e+40|0;q=e+42|0;r=e+44|0;s=e+46|0;t=e+48|0;u=e+112|0;v=e+24|0;w=e+114|0;x=e+50|0;y=e+116|0;z=e+115|0;A=e+64|0;B=e+108|0;C=e+100|0;D=e+96|0;E=e+104|0;F=e+106|0;j=0;while(1){c[O>>2]=-1;c[G>>2]=0;b[H>>1]=-1;k=c[R>>2]|0;if(k){oda(k);c[R>>2]=0}c[I>>2]=-1;if((Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](G,4,1,g)|0)!=1)break;j=j+4|0;if(j&1){j=0;break a}b:do if((c[G>>2]|0)==1296646712){l=Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](J,2,1,g)|0;b[H>>1]=d[J+1>>0]|0|(d[J>>0]|0)<<8;j=(l<<1)+j+(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](N,1,1,g)|0)|0;l=a[N>>0]|0;k=l&255;if(l<<24>>24){l=lda(k)|0;c[R>>2]=l;j=(da(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](l,k,1,g)|0,k)|0)+j|0}if(!(k&1))j=(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](N,1,1,g)|0)+j|0;k=(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](M,4,1,g)|0)<<2;l=d[M+3>>0]|0;j=k+j|0;l=(l|(d[M+2>>0]|0|(d[M+1>>0]|0|(d[M>>0]|0)<<8)<<8)<<8)+(l&1)|0;c[I>>2]=l;if((l|0)>0){k=b[H>>1]|0;do switch(k<<16>>16|0){case 1037:{k=(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](K,4,1,g)|0)<<2;c[B>>2]=d[K+3>>0]|0|(d[K+2>>0]|0|(d[K+1>>0]|0|(d[K>>0]|0)<<8)<<8)<<8;j=k+j|0;break b}case 1047:{k=(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](L,2,1,g)|0)<<1;b[F>>1]=d[L+1>>0]|0|(d[L>>0]|0)<<8;j=k+j|0;break b}case 1007:{a[w>>0]=1;j=(kK(x,f,g)|0)+j|0;break b}case 1039:{k=c[C>>2]|0;if(k){oda(k);c[C>>2]=0}c[D>>2]=0;k=mda((l|0)>-1?l:-1,367160)|0;c[C>>2]=k;if(!k)k=0;else{k=Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](k,1,l,g)|0;c[D>>2]=l}j=k+j|0;break b}case 1034:{k=(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](L,2,1,g)|0)<<1;a[y>>0]=(d[L+1>>0]|0|(d[L>>0]|0)<<8|0)==1&1;j=k+j|0;break b}case 1046:{k=(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](L,2,1,g)|0)<<1;b[E>>1]=d[L+1>>0]|0|(d[L>>0]|0)<<8;j=k+j|0;break b}case 1005:{a[u>>0]=1;j=(jK(v,f,g)|0)+j|0;break b}case 1e3:{a[n>>0]=1;T=Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](P,2,1,g)|0;b[p>>1]=d[o>>0]|0|(d[P>>0]|0)<<8;U=Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](P,2,1,g)|0;b[q>>1]=d[o>>0]|0|(d[P>>0]|0)<<8;l=Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](P,2,1,g)|0;b[r>>1]=d[o>>0]|0|(d[P>>0]|0)<<8;k=Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](P,2,1,g)|0;b[s>>1]=d[o>>0]|0|(d[P>>0]|0)<<8;k=U+T+l+k+(Xd[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](P,2,1,g)|0)|0;b[t>>1]=d[o>>0]|0|(d[P>>0]|0)<<8;j=(k<<1)+j|0;break b}case 1036:case 1033:{a[z>>0]=1;j=(lK(A,f,g,l,k<<16>>16==1033)|0)+j|0;break b}default:{U=h-j|0;U=(l|0)<(U|0)?l:U;Hd[(d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24)&255](g,U,1)|0;j=U+j|0;break b}}while(0)}}while(0);if((j|0)>=(h|0)){Q=32;break a}}PI(c[e+124>>2]|0,314624,P);j=0}while(0);if((Q|0)==32)j=(j|0)==(h|0);h=c[R>>2]|0;if(!h){i=S;return j|0}oda(h);c[R>>2]=0;i=S;return j|0}function pK(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;R=i;i=i+16|0;N=R;n=R+4|0;if(!h){f=0;i=R;return f|0}P=f+120|0;o=(c[P>>2]|0)>>>15;b[n>>1]=0;Xd[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](n,2,1,h)|0;j=e[n>>1]|0;j=j<<8|j>>>8;m=j&65535;b[n>>1]=m;if((m&65535)>=2){f=c[f+124>>2]|0;c[N>>2]=j&65535;PI(f,314720,N);f=0;i=R;return f|0}k=c[f+8>>2]|0;M=c[f+4>>2]|0;y=b[f>>1]|0;Q=y<<16>>16;j=b[f+12>>1]|0;l=j<<16>>16;r=j<<16>>16==1;L=r?1:l>>>3;if(!r){q=da(L,k)|0;if(m<<16>>16==1&(j&65535)>16){f=c[f+124>>2]|0;c[N>>2]=l;PI(f,314752,N);f=0;i=R;return f|0}}else q=(k+7|0)>>>3;K=b[f+14>>1]|0;m=(y&65535)<3;K=K<<16>>16==7&m?1:K<<16>>16;a:do switch(K|0){case 7:{j=(y&65535)>3|(o&1|0)==0;if(j|m^1){j=j?4:3;p=16}else{f=gc(4)|0;c[f>>2]=314784;qd(f|0,366936,0)}break}case 9:case 4:case 3:{j=(y&65535)>3;if(j|m^1){j=j?4:3;p=16}else{f=gc(4)|0;c[f>>2]=314784;qd(f|0,366936,0)}break}case 1:case 2:case 8:case 0:if((l|0)==16){O=NH(o&1,2,k,M,16,0,0,0)|0;j=1;J=0;break a}else if((l|0)==32){O=NH(o&1,6,k,M,32,0,0,0)|0;j=1;J=0;break a}else{O=OH(o&1,k,M,l,0,0,0)|0;j=1;J=1;break a}default:{f=gc(4)|0;c[f>>2]=314816;qd(f|0,366936,0)}}while(0);do if((p|0)==16)if((l|0)==32){O=NH(o&1,j>>>0<4?11:12,k,M,j<<5,0,0,0)|0;J=0;break}else if((l|0)==16){O=NH(o&1,j>>>0<4?9:10,k,M,j<<4,0,0,0)|0;J=0;break}else{O=OH(o&1,k,M,da(j,l)|0,0,0,0)|0;J=0;break}while(0);if(!O){f=gc(4)|0;c[f>>2]=315016;qd(f|0,366936,0)}cI(O,c[f+92>>2]|0)|0;if(o&1){f=O;i=R;return f|0}if(r)I=1;else I=(YH(O)|0)>>>3;p=dI(O)|0;G=qJ(O,M+-1|0)|0;H=lda(q)|0;m=e[n>>1]|0;if((m|0)==1){m=da(Q,M)|0;F=mda(m>>>0>2147483647?-1:m<<1,367160)|0;if(!F){RH(O);oda(H);f=gc(4)|0;pda(f);qd(f|0,366024,182)}Xd[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](F,2,m,h)|0;n=y<<16>>16==0;if(n)m=0;else{r=(M|0)==0;o=0;m=0;do{if(!r){k=da(o,M)|0;l=0;do{D=F+(l+k<<1)|0;E=e[D>>1]|0;E=(E<<8|E>>>8)&65535;b[D>>1]=E;m=(m&65535)<(E&65535)?E:m;l=l+1|0}while((l|0)!=(M|0))}o=o+1|0}while(o>>>0>>0)}D=mda(m&65535,367160)|0;if(!D){RH(O);oda(H);oda(F);f=gc(4)|0;pda(f);qd(f|0,366024,182)}E=H+q|0;if(!n){C=(M|0)==0;B=(q|0)>0;n=0-p|0;s=(L|0)==0;t=L+-1|0;u=E;y=0;do{v=da(y,L)|0;b:do if(!C){w=da(y,M)|0;x=y>>>0>>0;z=G;A=0;while(1){Xd[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](D,e[F+(A+w<<1)>>1]|0,1,h)|0;if(B){o=H;q=D;while(1){while(1){m=q+1|0;k=a[q>>0]|0;if(k<<24>>24>-1){p=54;break}if((k&255)>128){p=59;break}else q=m}if((p|0)==54){r=k&255;k=r+1|0;l=o+k|0;if(l>>>0>E>>>0)k=u-o|0;qfa(o|0,m|0,k|0)|0;q=q+(r+2)|0}else if((p|0)==59){k=257-(k&255)|0;l=o+k|0;if(l>>>0>E>>>0)k=u-o|0;sfa(o|0,a[m>>0]|0,k|0)|0;q=q+2|0}if(l>>>0>>0)o=l;else break}}if(!x)break b;if(B){m=z;k=H;while(1){if(!s){q=0;do{a[m+(q+v)>>0]=a[k+(t-q)>>0]|0;q=q+1|0}while((q|0)!=(L|0))}k=k+L|0;if(k>>>0>=E>>>0)break;else m=m+I|0}}A=A+1|0;if(A>>>0>=M>>>0)break;else z=z+n|0}}while(0);y=y+1|0}while(y>>>0>>0)}oda(H);oda(F);oda(D)}else if(!m){if(y<<16>>16){v=(M|0)==0;w=H+q|0;x=(q|0)>0;s=0-p|0;t=(L|0)==0;u=L+-1|0;l=j>>>0>1?0-j|0:-1;j=(y&65535)>1?0-Q|0:-1;j=0-(l>>>0>j>>>0?l:j)|0;l=0;do{m=da(l,L)|0;if(!v){o=G;n=0;while(1){Xd[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](H,q,1,h)|0;if(x){r=o;p=H;while(1){if(!t){k=0;do{a[r+(k+m)>>0]=a[p+(u-k)>>0]|0;k=k+1|0}while((k|0)!=(L|0))}p=p+L|0;if(p>>>0>=w>>>0)break;else r=r+I|0}}n=n+1|0;if((n|0)==(M|0))break;else o=o+s|0}}l=l+1|0}while((l|0)!=(j|0))}oda(H)}if((K|0)==7|(K|0)==4){s=(K|0)==7;c:do if(s){N=VH(O)|0;p=(YH(O)|0)>>>3;j=(p|0)==4;if(!((N|0)==1&j|(N|0)==10)){jL(O)|0;break}q=WH(O)|0;t=XH(O)|0;k=qJ(O,0)|0;r=dI(O)|0;j=j?1:2;o=p-j|0;if(!((t|0)==0|(q|0)==0)){if((p|0)==(j|0)){j=0;while(1){j=j+1|0;if((j|0)==(t|0))break c}}else n=0;while(1){l=k;m=0;while(1){j=0;do{N=l+j|0;a[N>>0]=d[N>>0]^255;j=j+1|0}while(j>>>0>>0);m=m+1|0;if((m|0)==(q|0))break;else l=l+p|0}n=n+1|0;if((n|0)==(t|0))break;else k=k+r|0}}}else jL(O)|0;while(0);if(c[P>>2]&1){if(!s){f=O;i=R;return f|0}bI(O,0,0)|0;f=SH(O)|0;b[f>>1]=e[f>>1]|1;f=O;i=R;return f|0}FI(O)|0;j=f+100|0;k=c[j>>2]|0;if(k){oda(k);c[j>>2]=0}c[f+96>>2]=0;if((Q+-3|0)>>>0>=2){f=O;i=R;return f|0}j=HI(O)|0;if(!j){f=O;i=R;return f|0}RH(O);f=j;i=R;return f|0}else if((K|0)==9?(c[P>>2]&2|0)==0:0){GI(O)|0;f=O;i=R;return f|0}d:do if(J?(kI(O)|0)!=0:0){if(!K){c[(kI(O)|0)>>2]=16777215;c[(kI(O)|0)+4>>2]=0;break}else if((K|0)!=2)break;j=f+20|0;if(((c[j>>2]|0)!=0?(c[f+16>>2]|0)==768:0)?(b[f+104>>1]|0)>=0:0){l=kI(O)|0;if(!l)break;j=c[j>>2]|0;k=0;while(1){a[l+(k<<2)+2>>0]=a[j+k>>0]|0;a[l+(k<<2)+1>>0]=a[j+(k+256)>>0]|0;a[l+(k<<2)>>0]=a[j+(k+512)>>0]|0;k=k+1|0;if((k|0)==256)break d}}PI(c[f+124>>2]|0,314840,N)}while(0);if((VH(O)|0)!=1){f=O;i=R;return f|0}EI(O)|0;f=O;i=R;return f|0}function qK(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;q=r+4|0;p=r;c[f+120>>2]=k;c[f+124>>2]=j;if(!h){r=gc(4)|0;c[r>>2]=314904;qd(r|0,366936,0)}if(!(iK(f,g,h)|0)){r=gc(4)|0;c[r>>2]=314928;qd(r|0,366936,0)}o=f+16|0;if((c[o>>2]|0)>0?(l=f+20|0,m=c[l>>2]|0,(m|0)!=0):0){oda(m);c[l>>2]=0}Xd[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](p,4,1,h)|0;j=p+1|0;l=p+2|0;m=p+3|0;n=((d[j>>0]|d[p>>0]<<8)<<8|d[l>>0])<<8|d[m>>0];c[o>>2]=n;if((n|0)>0){o=lda(n)|0;c[f+20>>2]=o;Xd[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](o,n,1,h)|0}if(!(oK(f,g,h,0)|0)){r=gc(4)|0;c[r>>2]=314944;qd(r|0,366936,0)}o=Xd[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](p,4,1,h)|0;l=((d[j>>0]|d[p>>0]<<8)<<8|d[l>>0])<<8|d[m>>0];if((o|0)!=0&(l|0)>0){j=0;do{a[q>>0]=0;o=Xd[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](q,1,1,h)|0;j=o+j|0}while((o|0)!=0&(j|0)<(l|0))}else j=0;if((j|0)!=(l|0)){r=gc(4)|0;c[r>>2]=314968;qd(r|0,366936,0)}m=pK(f,g,h)|0;if(!m){r=gc(4)|0;c[r>>2]=314992;qd(r|0,366936,0)}do if(a[f+112>>0]|0){j=c[f+32>>2]|0;if((j|0)==1)j=~~(+(b[f+28>>1]|0)/.0254+.5)>>>0;else if((j|0)==2)j=~~(+(b[f+28>>1]|0)*100.0+.5)>>>0;else j=2835;l=c[f+36>>2]|0;if((l|0)==2){l=~~(+(b[f+30>>1]|0)*100.0+.5)>>>0;break}else if((l|0)==1){l=~~(+(b[f+30>>1]|0)/.0254+.5)>>>0;break}else{l=2835;break}}else{j=2835;l=2835}while(0);vI(m,j);wI(m,l);bI(m,c[f+100>>2]|0,c[f+96>>2]|0)|0;if(!(k&1)){i=r;return m|0}f=b[f+14>>1]|0;if(!(f<<16>>16==7|f<<16>>16==4)){i=r;return m|0}f=SH(m)|0;b[f>>1]=e[f>>1]|1;i=r;return m|0}function rK(b,c,d,e){b=b|0;c=c|0;d=+d;e=e|0;var f=0,h=0,i=0,j=0;if((e|0)<=0)return;f=0;while(1){j=c+4|0;i=c+8|0;g[k>>2]=+g[c>>2]*2.69+ +g[j>>2]*-1.276+ +g[i>>2]*-.414;a[b>>0]=a[k>>0];a[b+1>>0]=a[k+1>>0];a[b+2>>0]=a[k+2>>0];a[b+3>>0]=a[k+3>>0];h=b+4|0;g[k>>2]=+g[c>>2]*-1.022+ +g[j>>2]*1.978+ +g[i>>2]*.044;a[h>>0]=a[k>>0];a[h+1>>0]=a[k+1>>0];a[h+2>>0]=a[k+2>>0];a[h+3>>0]=a[k+3>>0];h=b+8|0;g[k>>2]=+g[c>>2]*.061+ +g[j>>2]*-.224+ +g[i>>2]*1.163;a[h>>0]=a[k>>0];a[h+1>>0]=a[k+1>>0];a[h+2>>0]=a[k+2>>0];a[h+3>>0]=a[k+3>>0];f=f+1|0;if((f|0)==(e|0))break;else{b=b+12|0;c=c+12|0}}return}function sK(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0.0,h=0,i=0;if((d|0)<=0)return;e=0;while(1){a[k>>0]=a[c>>0];a[k+1>>0]=a[c+1>>0];a[k+2>>0]=a[c+2>>0];a[k+3>>0]=a[c+3>>0];f=+g[k>>2]*.497;i=c+4|0;a[k>>0]=a[i>>0];a[k+1>>0]=a[i+1>>0];a[k+2>>0]=a[i+2>>0];a[k+3>>0]=a[i+3>>0];f=f+ +g[k>>2]*.339;h=c+8|0;a[k>>0]=a[h>>0];a[k+1>>0]=a[h+1>>0];a[k+2>>0]=a[h+2>>0];a[k+3>>0]=a[h+3>>0];g[b>>2]=f+ +g[k>>2]*.164;a[k>>0]=a[c>>0];a[k+1>>0]=a[c+1>>0];a[k+2>>0]=a[c+2>>0];a[k+3>>0]=a[c+3>>0];f=+g[k>>2]*.256;a[k>>0]=a[i>>0];a[k+1>>0]=a[i+1>>0];a[k+2>>0]=a[i+2>>0];a[k+3>>0]=a[i+3>>0];f=f+ +g[k>>2]*.678;a[k>>0]=a[h>>0];a[k+1>>0]=a[h+1>>0];a[k+2>>0]=a[h+2>>0];a[k+3>>0]=a[h+3>>0];g[b+4>>2]=f+ +g[k>>2]*.066;a[k>>0]=a[c>>0];a[k+1>>0]=a[c+1>>0];a[k+2>>0]=a[c+2>>0];a[k+3>>0]=a[c+3>>0];f=+g[k>>2]*.023;a[k>>0]=a[i>>0];a[k+1>>0]=a[i+1>>0];a[k+2>>0]=a[i+2>>0];a[k+3>>0]=a[i+3>>0];f=f+ +g[k>>2]*.113;a[k>>0]=a[h>>0];a[k+1>>0]=a[h+1>>0];a[k+2>>0]=a[h+2>>0];a[k+3>>0]=a[h+3>>0];g[b+8>>2]=f+ +g[k>>2]*.864;e=e+1|0;if((e|0)==(d|0))break;else{c=c+12|0;b=b+12|0}}return}function tK(a,b,c){a=a|0;b=b|0;c=c|0;return qH(a,b,c)|0}function uK(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;g=n+4|0;h=n;c[g>>2]=2771273;c[h>>2]=704662861;if(ffa(315104,e,6)|0){l=0;i=n;return l|0}m=e+6|0;l=f+-6|0;if(ffa(m,g,4)|0)if(!(ffa(m,h,4)|0))k=1;else{l=0;i=n;return l|0}else k=0;j=e+10|0;g=a[e+13>>0]|0;h=a[e+12>>0]|0;f=a[e+11>>0]|0;if(!k)f=(h&255)<<16|(g&255)<<24|(f&255)<<8|(d[j>>0]|0);else f=(h&255)<<8|g&255|(f&255)<<16|(d[j>>0]|0)<<24;if(f>>>0>l>>>0){l=0;i=n;return l|0}l=VX(b,m,f,l,0,k,1)|0;i=n;return l|0}function vK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(ffa(315104,b,6)|0){c=0;return c|0}d=BK()|0;if(!d){c=0;return c|0}KK(d,315112)|0;PK(d,c)|0;OK(d,c)|0;NK(d,1)|0;QK(d,b)|0;BI(11,a,EK(d)|0,d)|0;CK(d);c=1;return c|0}function wK(a){a=a|0;var b=0,d=0,f=0;f=i;i=i+16|0;d=f;if(!(CI(1,c[a>>2]|0)|0)){i=f;return}c[d>>2]=0;jI(1,c[a>>2]|0,348344,d)|0;b=c[d>>2]|0;if(!b){i=f;return}if((FK(b)|0)<<16>>16!=274){i=f;return}switch(e[(JK(c[d>>2]|0)|0)>>1]|0|0){case 5:{d=iL(c[a>>2]|0,90.0,0)|0;RH(c[a>>2]|0);c[a>>2]=d;lL(d)|0;i=f;return}case 8:{d=iL(c[a>>2]|0,90.0,0)|0;RH(c[a>>2]|0);c[a>>2]=d;i=f;return}case 4:{lL(c[a>>2]|0)|0;i=f;return}case 7:{d=iL(c[a>>2]|0,-90.0,0)|0;RH(c[a>>2]|0);c[a>>2]=d;lL(d)|0;i=f;return}case 2:{kL(c[a>>2]|0)|0;i=f;return}case 6:{d=iL(c[a>>2]|0,-90.0,0)|0;RH(c[a>>2]|0);c[a>>2]=d;i=f;return}case 3:{d=iL(c[a>>2]|0,180.0,0)|0;RH(c[a>>2]|0);c[a>>2]=d;i=f;return}default:{i=f;return}}}function xK(a,b){a=a|0;b=+b;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0.0;l=i;i=i+16|0;k=l;d=~~b;if(+(d|0)==b){c[a>>2]=d;c[a+4>>2]=1;i=l;return}m=+S(+b);j=b>0.0?1:-1;e=-1;f=0;b=m;while(1){g=~~+R(+b);c[k+(f<<2)>>2]=g;d=e+1|0;b=b-+(g|0);if(b==0.0)break;f=f+1|0;if((f|0)>=4)break;else{e=d;b=1.0/b}}c[a>>2]=1;d=c[k+(d<<2)>>2]|0;g=a+4|0;c[g>>2]=d;a:do if((e|0)>-1){h=1;f=e;while(1){e=c[k+(f<<2)>>2]|0;if(!e){d=h;break a}d=(da(h,e)|0)+d|0;c[a>>2]=d;c[g>>2]=h;if((f|0)>0){e=h;h=d;f=f+-1|0;d=e}else break}}else d=1;while(0);c[a>>2]=da(d,j)|0;i=l;return}function yK(a){a=a|0;return}function zK(a){a=a|0;return c[a>>2]|0}function AK(a){a=a|0;return c[a+4>>2]|0}function BK(){var b=0,d=0,e=0;e=qea(4)|0;if(!e){e=0;return e|0}b=qea(24)|0;c[e>>2]=b;if(!b){rea(e);e=0;return e|0}else{b=b+0|0;d=b+24|0;do{a[b>>0]=0;b=b+1|0}while((b|0)<(d|0));return e|0}return 0}function CK(a){a=a|0;var b=0;if(!a)return;b=c[a>>2]|0;if(b){rea(c[b>>2]|0);rea(c[b+4>>2]|0);rea(c[b+20>>2]|0);rea(c[a>>2]|0)}rea(a);return}function DK(d){d=d|0;var e=0,f=0,g=0,h=0,i=0;if(!d){h=0;return h|0}g=qea(4)|0;if(!g){h=0;return h|0}h=qea(24)|0;c[g>>2]=h;if(!h){rea(g);h=0;return h|0}e=h+0|0;f=e+24|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0));f=c[d>>2]|0;b[h+8>>1]=b[f+8>>1]|0;d=c[f>>2]|0;do if(d){d=qea((tfa(d|0)|0)+1|0)|0;c[h>>2]=d;if(!d){h=gc(4)|0;c[h>>2]=315480;qd(h|0,366936,0)}else{wfa(d|0,c[f>>2]|0)|0;break}}while(0);e=f+4|0;d=c[e>>2]|0;do if(d){d=qea((tfa(d|0)|0)+1|0)|0;c[h+4>>2]=d;if(!d){h=gc(4)|0;c[h>>2]=315480;qd(h|0,366936,0)}else{wfa(d|0,c[e>>2]|0)|0;break}}while(0);i=b[f+10>>1]|0;b[h+10>>1]=i;c[h+12>>2]=c[f+12>>2];e=f+16|0;c[h+16>>2]=c[e>>2];d=c[e>>2]|0;if(i<<16>>16==2){d=qea(d+1|0)|0;c[h+20>>2]=d;if(!d){i=gc(4)|0;c[i>>2]=315480;qd(i|0,366936,0)}qfa(d|0,c[f+20>>2]|0,c[e>>2]|0)|0;a[d+(c[e>>2]|0)>>0]=0;i=g;return i|0}else{d=qea(d)|0;c[h+20>>2]=d;if(!d){i=gc(4)|0;c[i>>2]=315480;qd(i|0,366936,0)}qfa(d|0,c[f+20>>2]|0,c[e>>2]|0)|0;i=g;return i|0}return 0}function EK(a){a=a|0;if(!a){a=0;return a|0}a=c[c[a>>2]>>2]|0;return a|0}function FK(a){a=a|0;if(!a){a=0;return a|0}a=b[(c[a>>2]|0)+8>>1]|0;return a|0}function GK(a){a=a|0;if(!a){a=0;return a|0}a=e[(c[a>>2]|0)+10>>1]|0;return a|0}function HK(a){a=a|0;if(!a){a=0;return a|0}a=c[(c[a>>2]|0)+12>>2]|0;return a|0}function IK(a){a=a|0;if(!a){a=0;return a|0}a=c[(c[a>>2]|0)+16>>2]|0;return a|0}function JK(a){a=a|0;if(!a){a=0;return a|0}a=c[(c[a>>2]|0)+20>>2]|0;return a|0}function KK(a,b){a=a|0;b=b|0;var d=0;if(!((a|0)!=0&(b|0)!=0)){b=0;return b|0}a=c[a>>2]|0;d=c[a>>2]|0;if(d)rea(d);d=qea((tfa(b|0)|0)+1|0)|0;c[a>>2]=d;wfa(d|0,b|0)|0;b=1;return b|0}function LK(a,b){a=a|0;b=b|0;var d=0;if(!((a|0)!=0&(b|0)!=0)){b=0;return b|0}a=(c[a>>2]|0)+4|0;d=c[a>>2]|0;if(d)rea(d);d=qea((tfa(b|0)|0)+1|0)|0;c[a>>2]=d;wfa(d|0,b|0)|0;b=1;return b|0}function MK(a,d){a=a|0;d=d|0;if(!a){a=0;return a|0}b[(c[a>>2]|0)+8>>1]=d;a=1;return a|0}function NK(a,d){a=a|0;d=d|0;if(!a){d=0;return d|0}b[(c[a>>2]|0)+10>>1]=d;d=1;return d|0}function OK(a,b){a=a|0;b=b|0;if(!a){a=0;return a|0}c[(c[a>>2]|0)+12>>2]=b;a=1;return a|0}function PK(a,b){a=a|0;b=b|0;if(!a){a=0;return a|0}c[(c[a>>2]|0)+16>>2]=b;a=1;return a|0}function QK(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;if(!((d|0)!=0&(e|0)!=0)){e=0;return e|0}g=c[d>>2]|0;h=g+10|0;f=b[h>>1]|0;if((f&65535)<19)d=c[315400+((f&65535)<<2)>>2]|0;else d=0;d=da(d,c[g+12>>2]|0)|0;j=g+16|0;if((d|0)!=(c[j>>2]|0)){e=0;return e|0}i=g+20|0;g=c[i>>2]|0;if(g){rea(g);f=b[h>>1]|0;d=c[j>>2]|0}if(f<<16>>16!=2){d=qea(d)|0;c[i>>2]=d;if(!d){e=0;return e|0}qfa(d|0,e|0,c[j>>2]|0)|0;e=1;return e|0}g=qea(d+1|0)|0;c[i>>2]=g;if(!g){e=0;return e|0}if(!(c[j>>2]|0))d=0;else{f=0;do{a[g+f>>0]=a[e+f>>0]|0;f=f+1|0;d=c[j>>2]|0}while(f>>>0>>0)}a[g+d>>0]=0;e=1;return e|0}function RK(a){a=a|0;if(a>>>0>=19){a=0;return a|0}a=c[315400+(a<<2)>>2]|0;return a|0}function SK(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=i;i=i+48|0;s=w+24|0;u=w;v=w+12|0;c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;if((f|0)==0|(g|0)==0){e=0;v2(v);v2(u);i=w;return e|0}if(g>>>0>8?(ffa(315512,f,8)|0)==0:0){e=0;v2(v);v2(u);i=w;return e|0}t=BK()|0;r=XK()|0;j=g+-1|0;a:do if(!j)h=0;else{k=0;while(1){h=k+1|0;if((a[f+k>>0]|0)==28?(a[f+h>>0]|0)==2:0){h=k;break a}if(h>>>0>>0)k=h;else break}}while(0);b:do if(h>>>0>>0){p=v+4|0;q=u+4|0;do{j=h+5|0;if(!(j>>>0>>0?(a[f+h>>0]|0)==28:0))break b;k=d[f+(h+3)>>0]<<8|d[f+(h+4)>>0];n=k+j|0;if(n>>>0>g>>>0)break b;if(!k)h=j;else{l=d[f+(h+1)>>0]<<8|d[f+(h+2)>>0];m=l&65535;MK(t,m)|0;PK(t,k)|0;x=k+1|0;o=qea(x)|0;sfa(o|0,0,x|0)|0;if((l|0)==512){NK(t,8)|0;OK(t,1)|0;b[o>>1]=d[f+j>>0]<<8|d[f+(h+6)>>0];QK(t,o)|0}else{NK(t,2)|0;OK(t,k)|0;qfa(o|0,f+(h+5)|0,(k>>>0>1?k:1)|0)|0;a[o+k>>0]=0;QK(t,o)|0}do if((l|0)==537){h=a[u>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[q>>2]|0;if(!h){C2(u,o)|0;break}else{C2(u,315528)|0;C2(u,o)|0;break}}else if((l|0)==532){h=a[v>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[p>>2]|0;if(!h){C2(v,o)|0;break}else{C2(v,315528)|0;C2(v,o)|0;break}}else{h=ZK(r,21,m,s)|0;KK(t,h)|0;LK(t,_K(r,21,m)|0)|0;if(h)BI(6,e,h,t)|0}while(0);rea(o);h=n}}while(h>>>0>>0)}while(0);h=a[u>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[u+4>>2]|0;if(h){NK(t,2)|0;MK(t,537)|0;KK(t,ZK(r,21,537,s)|0)|0;LK(t,_K(r,21,537)|0)|0;h=a[u>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[u+4>>2]|0;PK(t,h)|0;h=a[u>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[u+4>>2]|0;OK(t,h)|0;if(!(a[u>>0]&1))h=u+1|0;else h=c[u+8>>2]|0;QK(t,h)|0;BI(6,e,EK(t)|0,t)|0}h=a[v>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[v+4>>2]|0;if(h){NK(t,2)|0;MK(t,532)|0;KK(t,ZK(r,21,532,s)|0)|0;LK(t,_K(r,21,532)|0)|0;h=a[v>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[v+4>>2]|0;PK(t,h)|0;h=a[v>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[v+4>>2]|0;OK(t,h)|0;if(!(a[v>>0]&1))h=v+1|0;else h=c[v+8>>2]|0;QK(t,h)|0;BI(6,e,EK(t)|0,t)|0}CK(t);x=1;v2(v);v2(u);i=w;return x|0}function TK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=i;i=i+64|0;E=H+60|0;F=H;D=H+12|0;C=H+24|0;A=H+36|0;B=H+48|0;c[E>>2]=0;G=xI(6,b,E)|0;if(!G){e=0;i=H;return e|0}u=D+4|0;v=D+8|0;w=F+1|0;x=C+1|0;y=C+8|0;z=C+4|0;s=F+8|0;t=F+4|0;o=0;r=0;while(1){q=FK(c[E>>2]|0)|0;b=q&65535;if((b|0)==537|(b|0)==532)if((GK(c[E>>2]|0)|0)==2){b=JK(c[E>>2]|0)|0;p2(F,b,tfa(b|0)|0);c[D>>2]=0;c[u>>2]=0;c[v>>2]=0;p2(C,315528,1);b=a[F>>0]|0;if(!(b&1)){f=(b&255)>>>1;b=w}else{f=c[t>>2]|0;b=c[s>>2]|0}h=a[C>>0]|0;if(!(h&1)){h=(h&255)>>>1;j=x}else{h=c[z>>2]|0;j=c[y>>2]|0}a:do if(f>>>0>>0)b=0;else{if(h){l=b+f|0;m=j+h|0;n=b;if((f|0)<(h|0)){b=0;break}p=1-h+f|0;g=b+p|0;if(!p){b=0;break}k=a[j>>0]|0;b:while(1){if((a[b>>0]|0)==k<<24>>24){h=b;f=j;do{f=f+1|0;if((f|0)==(m|0))break b;h=h+1|0}while((a[h>>0]|0)==(a[f>>0]|0))}b=b+1|0;if((b|0)==(g|0)){b=0;break a}}if((b|0)==(l|0)){b=0;break}b=b-n|0;if((b|0)==-1){b=0;break}else h=0}else{b=0;h=0}while(1){t2(A,F,h,b-h|0,F);h=c[u>>2]|0;if((h|0)==(c[v>>2]|0))WX(D,A);else{if(!h)h=0;else{q2(h,A);h=c[u>>2]|0}c[u>>2]=h+12}v2(A);f=a[C>>0]|0;g=(f&1)==0;if(g)h=(f&255)>>>1;else h=c[z>>2]|0;h=h+b|0;b=a[F>>0]|0;if(!(b&1)){k=(b&255)>>>1;p=w}else{k=c[t>>2]|0;p=c[s>>2]|0}if(g){f=(f&255)>>>1;n=x}else{f=c[z>>2]|0;n=c[y>>2]|0}if(k>>>0>>0|(k-h|0)>>>0>>0){b=h;break a}if(!f)b=h;else{b=p+h|0;l=p+k|0;m=n+f|0;if((l-b|0)<(f|0)){b=h;break a}j=1-f+k|0;k=p+j|0;if((j|0)==(h|0)){b=h;break a}j=a[n>>0]|0;c:while(1){if((a[b>>0]|0)==j<<24>>24){f=b;g=n;do{g=g+1|0;if((g|0)==(m|0))break c;f=f+1|0}while((a[f>>0]|0)==(a[g>>0]|0))}b=b+1|0;if((b|0)==(k|0)){b=h;break a}}if((b|0)==(l|0)){b=h;break a}b=b-p|0}if((b|0)==-1){b=h;break}}}while(0);t2(B,F,b,-1,F);b=c[u>>2]|0;if((b|0)==(c[v>>2]|0))WX(D,B);else{if(!b)b=0;else{q2(b,B);b=c[u>>2]|0}c[u>>2]=b+12}v2(B);h=c[u>>2]|0;b=c[D>>2]|0;if((h-b|0)>0){p=q&255;m=h;g=r;n=0;while(1){f=b+(n*12|0)|0;h=a[f>>0]|0;if(!(h&1)){k=(h&255)>>>1;j=f+1|0}else{k=c[b+(n*12|0)+4>>2]|0;j=c[b+(n*12|0)+8>>2]|0}h=k+5|0;l=h+o|0;f=qea(l)|0;if(f){a[f>>0]=28;a[f+1>>0]=2;a[f+2>>0]=p;a[f+3>>0]=k>>>8;a[f+4>>0]=k;qfa(f+5|0,j|0,k|0)|0;if(!g){g=f;f=m}else{qfa(f+h|0,g|0,o|0)|0;rea(g);g=f;f=c[u>>2]|0;b=c[D>>2]|0;h=l}}else{g=0;f=m;h=o}n=n+1|0;if((n|0)>=((f-b|0)/12|0|0))break;else{o=h;m=f}}}else{h=o;g=r}v2(C);b=c[D>>2]|0;if(b){while(1){f=c[u>>2]|0;if((f|0)==(b|0))break;r=f+-12|0;c[u>>2]=r;v2(r)}nda(c[D>>2]|0)}v2(F)}else{h=o;g=r}else if((b|0)==522)if((GK(c[E>>2]|0)|0)==2){b=JK(c[E>>2]|0)|0;h=o+6|0;g=qea(h)|0;if(g){a[g>>0]=28;a[g+1>>0]=2;a[g+2>>0]=q;a[g+3>>0]=0;a[g+4>>0]=1;a[g+5>>0]=a[b>>0]|0;if(!r)h=6;else{qfa(g+6|0,r|0,o|0)|0;rea(r)}}else{h=o;g=0}}else{h=o;g=r}else if((b|0)!=512?(GK(c[E>>2]|0)|0)==2:0){b=IK(c[E>>2]|0)|0;f=JK(c[E>>2]|0)|0;j=b+5|0;h=j+o|0;g=qea(h)|0;if(g){a[g>>0]=28;a[g+1>>0]=2;a[g+2>>0]=q;a[g+3>>0]=b>>>8;a[g+4>>0]=b;qfa(g+5|0,f|0,b|0)|0;if(!r)h=j;else{qfa(g+j|0,r|0,o|0)|0;rea(r)}}else{h=o;g=0}}else{h=o;g=r}if(!(yI(G,E)|0))break;else{o=h;r=g}}zI(G);b=h+7|0;f=qea(b)|0;if(f){a[f>>0]=28;a[f+1>>0]=2;a[f+2>>0]=0;a[f+3>>0]=0;a[f+4>>0]=2;F=f+5|0;a[F>>0]=0;a[F+1>>0]=2;if(!g)b=7;else{qfa(f+7|0,g|0,h|0)|0;rea(g)}}else{f=0;b=h}c[d>>2]=f;c[e>>2]=b;e=1;i=H;return e|0}function UK(a){a=a|0;c[a+4>>2]=0;c[a+8>>2]=0;c[a>>2]=a+4;VK(a,1,315536)|0;VK(a,2,315536)|0;VK(a,3,316928)|0;VK(a,4,317312)|0;VK(a,5,317384)|0;VK(a,6,319928)|0;VK(a,7,320160)|0;VK(a,8,320736)|0;VK(a,9,321216)|0;VK(a,10,321256)|0;VK(a,11,321592)|0;VK(a,12,321712)|0;VK(a,13,322016)|0;VK(a,14,323112)|0;VK(a,15,324336)|0;VK(a,16,325224)|0;VK(a,17,325408)|0;VK(a,18,326912)|0;VK(a,19,327512)|0;VK(a,20,328008)|0;VK(a,21,328528)|0;VK(a,22,329360)|0;VK(a,23,329472)|0;return}function VK(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;r=t;s=a+4|0;g=c[s>>2]|0;p=a+4|0;if(g){f=p;a:do{while(1){if((c[g+16>>2]|0)>=(d|0)){f=g;break}g=c[g+4>>2]|0;if(!g)break a}g=c[f>>2]|0}while((g|0)!=0);if(!((f|0)!=(p|0)?(c[f+16>>2]|0)<=(d|0):0))o=8}else o=8;if((o|0)==8)f=p;if(!((f|0)==(p|0)&(e|0)!=0)){a=0;i=t;return a|0}q=kda(12,367160)|0;if(!q){a=0;i=t;return a|0}k=q+4|0;c[k>>2]=0;l=q+8|0;c[l>>2]=0;c[q>>2]=k;n=0;while(1){m=e+(n*12|0)|0;j=b[m>>1]|0;if(j<<16>>16==0?(c[e+(n*12|0)+4>>2]|0)==0:0)break;f=c[k>>2]|0;do if(f){while(1){g=b[f+16>>1]|0;if((j&65535)<(g&65535)){g=c[f>>2]|0;if(!g){g=f;o=17;break}else{f=g;continue}}if((g&65535)>=(j&65535)){o=21;break}g=f+4|0;h=c[g>>2]|0;if(!h){o=20;break}else f=h}if((o|0)==17){c[r>>2]=f;h=g;g=f;break}else if((o|0)==20){c[r>>2]=f;h=g;g=f;break}else if((o|0)==21){c[r>>2]=f;h=r;g=f;break}}else{c[r>>2]=k;h=k;g=k}while(0);f=c[h>>2]|0;if(!f){f=jda(24)|0;b[f+16>>1]=j;c[f+20>>2]=0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=g;c[h>>2]=f;g=c[c[q>>2]>>2]|0;if(!g)g=f;else{c[q>>2]=g;g=c[h>>2]|0}VR(c[k>>2]|0,g);c[l>>2]=(c[l>>2]|0)+1}c[f+20>>2]=m;n=n+1|0}f=c[s>>2]|0;do if(f){while(1){g=c[f+16>>2]|0;if((g|0)>(d|0)){g=c[f>>2]|0;if(!g){g=f;o=31;break}else{f=g;continue}}if((g|0)>=(d|0)){o=35;break}g=f+4|0;h=c[g>>2]|0;if(!h){o=34;break}else f=h}if((o|0)==31){c[r>>2]=f;h=g;g=f;break}else if((o|0)==34){c[r>>2]=f;h=g;g=f;break}else if((o|0)==35){c[r>>2]=f;h=r;g=f;break}}else{c[r>>2]=p;h=p;g=p}while(0);f=c[h>>2]|0;if(!f){f=jda(24)|0;c[f+16>>2]=d;c[f+20>>2]=0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=g;c[h>>2]=f;g=c[c[a>>2]>>2]|0;if(!g)g=f;else{c[a>>2]=g;g=c[h>>2]|0}VR(c[s>>2]|0,g);a=a+8|0;c[a>>2]=(c[a>>2]|0)+1}c[f+20>>2]=q;a=1;i=t;return a|0}function WK(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;e=a+4|0;if((b|0)!=(e|0)){d=b;while(1){b=c[d+20>>2]|0;if(b){YX(b,c[b+4>>2]|0);nda(b)}b=c[d+4>>2]|0;if(!b)while(1){b=c[d+8>>2]|0;if((c[b>>2]|0)==(d|0))break;else d=b}else while(1){d=c[b>>2]|0;if(!d)break;else b=d}if((b|0)==(e|0))break;else d=b}}XX(a,c[a+4>>2]|0);return}function XK(){if(a[329624]|0)return 329608;if(!(Pa(329624)|0))return 329608;UK(329608);qb(269,329608,o|0)|0;Db(329624);return 329608}function YK(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;l=a+4|0;k=c[l>>2]|0;j=a+4|0;if(!k){a=0;i=n;return a|0}else{g=j;h=k}a:do{while(1){if((c[h+16>>2]|0)>=(d|0)){g=h;break}h=c[h+4>>2]|0;if(!h)break a}h=c[g>>2]|0}while((h|0)!=0);if((g|0)==(j|0)){a=0;i=n;return a|0}if((c[g+16>>2]|0)>(d|0)){a=0;i=n;return a|0}while(1){g=c[k+16>>2]|0;if((g|0)>(d|0)){g=c[k>>2]|0;if(!g){g=k;h=k;j=11;break}else{k=g;continue}}if((g|0)>=(d|0)){g=k;j=15;break}g=k+4|0;h=c[g>>2]|0;if(!h){h=k;j=14;break}else k=h}if((j|0)==11){c[m>>2]=h;k=g}else if((j|0)==14){c[m>>2]=h;k=g}else if((j|0)==15){c[m>>2]=g;k=m;h=g}g=c[k>>2]|0;if(!g){g=jda(24)|0;c[g+16>>2]=d;c[g+20>>2]=0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=h;c[k>>2]=g;h=c[c[a>>2]>>2]|0;if(!h)h=g;else{c[a>>2]=h;h=c[k>>2]|0}VR(c[l>>2]|0,h);a=a+8|0;c[a>>2]=(c[a>>2]|0)+1}d=c[g+20>>2]|0;l=d+4|0;j=c[l>>2]|0;k=d+4|0;if(!j){a=0;i=n;return a|0}else{g=k;h=j}b:do{while(1){if((e[h+16>>1]|0)>=(f&65535)){g=h;break}h=c[h+4>>2]|0;if(!h)break b}h=c[g>>2]|0}while((h|0)!=0);if((g|0)==(k|0)){a=0;i=n;return a|0}if((e[g+16>>1]|0)>(f&65535)){a=0;i=n;return a|0}while(1){g=b[j+16>>1]|0;if((g&65535)>(f&65535)){g=c[j>>2]|0;if(!g){g=j;h=j;j=30;break}else{j=g;continue}}if((g&65535)>=(f&65535)){g=j;j=34;break}g=j+4|0;h=c[g>>2]|0;if(!h){h=j;j=33;break}else j=h}if((j|0)==30){c[m>>2]=h;k=g}else if((j|0)==33){c[m>>2]=h;k=g}else if((j|0)==34){c[m>>2]=g;k=m;h=g}g=c[k>>2]|0;if(!g){g=jda(24)|0;b[g+16>>1]=f;c[g+20>>2]=0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=h;c[k>>2]=g;h=c[c[d>>2]>>2]|0;if(!h)h=g;else{c[d>>2]=h;h=c[k>>2]|0}VR(c[l>>2]|0,h);a=d+8|0;c[a>>2]=(c[a>>2]|0)+1}a=c[g+20>>2]|0;i=n;return a|0}function ZK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g;b=YK(a,b,d)|0;if(b){f=c[b+4>>2]|0;i=g;return f|0}if(!e){f=0;i=g;return f|0}c[f>>2]=d&65535;Xea(e,329632,f)|0;f=e;i=g;return f|0}function _K(a,b,d){a=a|0;b=b|0;d=d|0;b=YK(a,b,d)|0;if(!b){a=0;return a|0}a=c[b+8>>2]|0;return a|0}function $K(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;k=m;l=a+4|0;h=c[l>>2]|0;j=a+4|0;if(!h){l=-1;i=m;return l|0}else{f=j;g=h}a:do{while(1){if((c[g+16>>2]|0)>=(b|0)){f=g;break}g=c[g+4>>2]|0;if(!g)break a}g=c[f>>2]|0}while((g|0)!=0);if((f|0)==(j|0)){l=-1;i=m;return l|0}if((c[f+16>>2]|0)>(b|0)){l=-1;i=m;return l|0}while(1){f=c[h+16>>2]|0;if((f|0)>(b|0)){f=c[h>>2]|0;if(!f){f=h;g=h;h=11;break}else{h=f;continue}}if((f|0)>=(b|0)){f=h;h=15;break}f=h+4|0;g=c[f>>2]|0;if(!g){g=h;h=14;break}else h=g}if((h|0)==11){c[k>>2]=g;j=f}else if((h|0)==14){c[k>>2]=g;j=f}else if((h|0)==15){c[k>>2]=f;j=k;g=f}f=c[j>>2]|0;if(!f){f=jda(24)|0;c[f+16>>2]=b;c[f+20>>2]=0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=g;c[j>>2]=f;g=c[c[a>>2]>>2]|0;if(!g)g=f;else{c[a>>2]=g;g=c[j>>2]|0}VR(c[l>>2]|0,g);l=a+8|0;c[l>>2]=(c[l>>2]|0)+1}j=c[f+20>>2]|0;f=c[j>>2]|0;j=j+4|0;if((f|0)==(j|0)){l=-1;i=m;return l|0}else g=f;while(1){f=c[g+20>>2]|0;if((f|0)!=0?(gfa(c[f+4>>2]|0,d)|0)==0:0)break;f=c[g+4>>2]|0;if(!f)while(1){f=c[g+8>>2]|0;if((c[f>>2]|0)==(g|0))break;else g=f}else while(1){g=c[f>>2]|0;if(!g)break;else f=g}if((f|0)==(j|0)){f=-1;h=29;break}else g=f}if((h|0)==29){i=m;return f|0}l=e[f>>1]|0;i=m;return l|0}function aL(a,b){a=a|0;b=b|0;switch(b|0){case 22:{b=8;break}case 23:{b=9;break}case 3:case 2:case 1:break;case 4:{b=5;break}case 20:case 19:case 18:case 17:case 16:case 15:case 14:case 13:case 12:case 11:case 10:case 9:case 8:case 7:case 6:case 5:{b=4;break}case 21:{b=6;break}default:b=-1}return b|0}function bL(){if(!(c[88082]|0))return;c[88082]=0;c[88084]=vv(270)|0;return}function cL(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;o=p;k=p+24|0;f=p+22|0;g=p+12|0;m=p+8|0;n=p+20|0;j=p+16|0;b[f>>1]=0;c[g>>2]=0;c[o>>2]=f;c[o+4>>2]=g;if(!(sv(a,34735,o)|0)){o=1;i=p;return o|0}g=XK()|0;l=0;while(1){e=352344+(l*20|0)|0;h=352352+(l*20|0)|0;if((l|0)!=6){b[n>>1]=0;c[j>>2]=0;e=c[e>>2]|0;c[o>>2]=n;c[o+4>>2]=j;if(sv(a,e,o)|0){f=BK()|0;if(!f){e=0;f=12;break}e=e&65535;h=c[h>>2]|0;NK(f,h)|0;MK(f,e)|0;KK(f,ZK(g,22,e,k)|0)|0;LK(f,_K(g,22,e)|0)|0;h=RK(h)|0;PK(f,da(b[n>>1]|0,h)|0)|0;OK(f,b[n>>1]|0)|0;QK(f,c[j>>2]|0)|0;BI(8,d,EK(f)|0,f)|0;CK(f)}}else{c[m>>2]=0;f=c[e>>2]|0;c[o>>2]=m;if(!(sv(a,f,o)|0)){l=l+1|0;continue}e=BK()|0;if(!e){e=0;f=12;break}f=f&65535;NK(e,c[h>>2]|0)|0;MK(e,f)|0;KK(e,ZK(g,22,f,k)|0)|0;LK(e,_K(g,22,f)|0)|0;PK(e,(tfa(c[m>>2]|0)|0)+1|0)|0;OK(e,IK(e)|0)|0;QK(e,c[m>>2]|0)|0;BI(8,d,EK(e)|0,e)|0;CK(e)}l=l+1|0;if(l>>>0>=8){e=1;f=12;break}}if((f|0)==12){i=p;return e|0}return 0}function dL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;k=l;g=l+16|0;j=l+8|0;if(!(CI(8,b)|0)){i=l;return 1}e=XK()|0;h=0;do{c[j>>2]=0;f=c[352344+(h*20|0)>>2]|0;do if(jI(8,b,ZK(e,22,f&65535,g)|0,j)|0){m=(GK(c[j>>2]|0)|0)==2;d=c[j>>2]|0;if(m){c[k>>2]=JK(d)|0;rv(a,f,k)|0;break}else{d=HK(d)|0;m=JK(c[j>>2]|0)|0;c[k>>2]=d;c[k+4>>2]=m;rv(a,f,k)|0;break}}while(0);h=h+1|0}while((h|0)!=8);i=l;return 1}function eL(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;XK()|0;f=Zv(a)|0;a:do if((f|0)>0){g=0;while(1){if(!(_X(a,_v(a,g)|0,e,d)|0)){f=0;break}g=g+1|0;if((g|0)>=(f|0))break a}return f|0}while(0);if((d|0)!=1){a=1;return a|0}o=c[a+660>>2]|0;if((o|0)<=0){a=1;return a|0}l=a+656|0;m=a+224|0;n=a+228|0;p=0;k=0;while(1){j=c[(c[l>>2]|0)+(p<<2)>>2]|0;f=Jv(j)|0;do if((f|0)==(k|0))f=k;else{g=b[j+24>>1]|0;if(g<<16>>16==65){d=c[m>>2]|0;if((d|0)<=0){f=k;break}h=c[n>>2]|0;i=0;g=0;do{g=(c[h+(i*12|0)>>2]|0)==(j|0)|g;i=i+1|0}while((i|0)<(d|0));if(!g){f=k;break}}else if(!(c[a+(((g&65535)>>>5&65535)<<2)+40>>2]&1<<(g&31))){f=k;break}_X(a,f,e,1)|0}while(0);p=p+1|0;if((p|0)==(o|0)){f=1;break}else k=f}return f|0}function fL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+32|0;o=q;n=q+12|0;l=q+16|0;m=q+8|0;if((b|0)!=1){p=0;i=q;return p|0}if(!(CI(1,d)|0)){p=0;i=q;return p|0}f=XK()|0;g=c[a+660>>2]|0;if((g|0)<=0){p=1;i=q;return p|0}h=a+656|0;j=0;do{b=c[(c[h>>2]|0)+(j<<2)>>2]|0;e=Jv(b)|0;if((e|0)==285){c[n>>2]=0;c[o>>2]=n;sv(a,285,o)|0;if(!(c[n>>2]|0))p=7}else if(!((e|0)==530|(e|0)==532|(e|0)==529|(e|0)==33723|(e|0)==341|(e|0)==340|(e|0)==339|(e|0)==338|(e|0)==325|(e|0)==324|(e|0)==323|(e|0)==322|(e|0)==321|(e|0)==320|(e|0)==317|(e|0)==300|(e|0)==297|(e|0)==296|(e|0)==293|(e|0)==292|(e|0)==291|(e|0)==290|(e|0)==289|(e|0)==288|(e|0)==284|(e|0)==283|(e|0)==282|(e|0)==281|(e|0)==280|(e|0)==279|(e|0)==278|(e|0)==277|(e|0)==274|(e|0)==273|(e|0)==266|(e|0)==265|(e|0)==264|(e|0)==263|(e|0)==262|(e|0)==259|(e|0)==258|(e|0)==257|(e|0)==256|(e|0)==255|(e|0)==254))p=7;do if((((p|0)==7?(p=0,c[m>>2]=0,(jI(1,d,ZK(f,1,e&65535,l)|0,m)|0)!=0):0)?(k=GK(c[m>>2]|0)|0,(Lv(b)|0)==(k|0)):0)?(b=Hv(k)|0,(b|0)==(RK(k)|0)):0){b=c[m>>2]|0;if((k|0)==2){c[o>>2]=JK(b)|0;rv(a,e,o)|0;break}else{r=HK(b)|0;b=JK(c[m>>2]|0)|0;c[o>>2]=r;c[o+4>>2]=b;rv(a,e,o)|0;break}}while(0);j=j+1|0}while((j|0)!=(g|0));b=1;i=q;return b|0}function gL(c,d){c=c|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!(ZH(c)|0)){c=0;return c|0}e=VH(c)|0;h=YH(c)|0;if((e|0)==1){if(!((h|0)==24|(h|0)==32)){c=0;return c|0}if((d|0)==3)m=0;else if((d|0)==4)if((h|0)==32)m=3;else{c=0;return c|0}else if((d|0)==2)m=1;else if((d|0)==1)m=2;else{c=0;return c|0}l=WH(c)|0;j=XH(c)|0;k=PH(l,j,8,0,0,0)|0;if(!k){c=0;return c|0}e=kI(k)|0;d=0;do{i=d&255;a[e+(d<<2)+2>>0]=i;a[e+(d<<2)+1>>0]=i;a[e+(d<<2)>>0]=i;d=d+1|0}while((d|0)!=256);e=h>>>3;a:do if(j){if(!l){e=0;while(1){qJ(c,e)|0;qJ(k,e)|0;e=e+1|0;if((e|0)==(j|0))break a}}else i=0;do{f=qJ(c,i)|0;d=qJ(k,i)|0;h=0;while(1){a[d+h>>0]=a[f+m>>0]|0;h=h+1|0;if((h|0)==(l|0))break;else f=f+e|0}i=i+1|0}while((i|0)!=(j|0))}while(0);AI(k,c)|0;c=k;return c|0}if((e+-9|0)>>>0<2){if((d|0)==4)if((h|0)==64)k=3;else{c=0;return c|0}else if((d|0)==2)k=1;else if((d|0)==3)k=2;else if((d|0)==1)k=0;else{c=0;return c|0}j=WH(c)|0;l=XH(c)|0;m=QH(2,j,l,8,0,0,0)|0;if(!m){c=0;return c|0}e=h>>>4;b:do if(l){if(!j){e=0;while(1){qJ(c,e)|0;qJ(m,e)|0;e=e+1|0;if((e|0)==(l|0))break b}}else i=0;do{f=qJ(c,i)|0;d=qJ(m,i)|0;h=0;while(1){b[d+(h<<1)>>1]=b[f+(k<<1)>>1]|0;h=h+1|0;if((h|0)==(j|0))break;else f=f+(e<<1)|0}i=i+1|0}while((i|0)!=(l|0))}while(0);AI(m,c)|0;c=m;return c|0}if((e+-11|0)>>>0>=2){c=0;return c|0}if((d|0)==4)if((h|0)==128)k=3;else{c=0;return c|0}else if((d|0)==3)k=2;else if((d|0)==2)k=1;else if((d|0)==1)k=0;else{c=0;return c|0}j=WH(c)|0;l=XH(c)|0;m=QH(6,j,l,8,0,0,0)|0;if(!m){c=0;return c|0}e=h>>>5;c:do if(l){if(!j){e=0;while(1){qJ(c,e)|0;qJ(m,e)|0;e=e+1|0;if((e|0)==(l|0))break c}}else i=0;do{f=qJ(c,i)|0;d=qJ(m,i)|0;h=0;while(1){g[d+(h<<2)>>2]=+g[f+(k<<2)>>2];h=h+1|0;if((h|0)==(j|0))break;else f=f+(e<<2)|0}i=i+1|0}while((i|0)!=(l|0))}while(0);AI(m,c)|0;c=m;return c|0}function hL(c,d,e){c=c|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(!(ZH(d)|0)){d=0;return d|0}if(!(ZH(c)|0)){d=0;return d|0}m=WH(d)|0;n=XH(d)|0;l=WH(c)|0;if(!((m|0)==(l|0)&(n|0)==(XH(c)|0))){d=0;return d|0}l=iI(d)|0;j=iI(c)|0;if((j|0)!=2&(j|0)!=4|(l|0)!=1){d=0;return d|0}f=VH(d)|0;h=VH(c)|0;if((h|0)==1&(f|0)==1){l=YH(d)|0;h=YH(c)|0;if((l|0)!=8){d=0;return d|0}f=(h|0)==32;if(!((h|0)==24|(h|0)==32)){d=0;return d|0}if((e|0)==3)k=0;else if((e|0)==4)if(f)k=3;else{d=0;return d|0}else if((e|0)==2)k=1;else if((e|0)==1)k=2;else{d=0;return d|0}f=h>>>3;if(!n){d=1;return d|0}if(!m){f=0;do{qJ(d,f)|0;qJ(c,f)|0;f=f+1|0}while((f|0)!=(n|0));f=1;return f|0}else j=0;do{h=qJ(d,j)|0;i=qJ(c,j)|0;e=0;while(1){a[i+k>>0]=a[h+e>>0]|0;e=e+1|0;if((e|0)==(m|0))break;else i=i+f|0}j=j+1|0}while((j|0)!=(n|0));f=1;return f|0}if((h+-9|0)>>>0<2&(f|0)==2){l=YH(d)|0;h=YH(c)|0;if((l|0)!=16){d=0;return d|0}f=(h|0)==64;if(!((h|0)==48|(h|0)==64)){d=0;return d|0}if((e|0)==4)if(f)k=3;else{d=0;return d|0}else if((e|0)==2)k=1;else if((e|0)==1)k=0;else if((e|0)==3)k=2;else{d=0;return d|0}f=h>>>4;if(!n){d=1;return d|0}if(!m){f=0;do{qJ(d,f)|0;qJ(c,f)|0;f=f+1|0}while((f|0)!=(n|0));f=1;return f|0}else j=0;do{h=qJ(d,j)|0;i=qJ(c,j)|0;e=0;while(1){b[i+(k<<1)>>1]=b[h+(e<<1)>>1]|0;e=e+1|0;if((e|0)==(m|0))break;else i=i+(f<<1)|0}j=j+1|0}while((j|0)!=(n|0));f=1;return f|0}if(!((h+-11|0)>>>0<2&(f|0)==6)){d=0;return d|0}l=YH(d)|0;h=YH(c)|0;if((l|0)!=32){d=0;return d|0}f=(h|0)==128;if(!((h|0)==96|(h|0)==128)){d=0;return d|0}if((e|0)==3)l=2;else if((e|0)==4)if(f)l=3;else{d=0;return d|0}else if((e|0)==1)l=0;else if((e|0)==2)l=1;else{d=0;return d|0}h=h>>>5;if(!n){d=1;return d|0}i=(m|0)==0;j=0;do{k=qJ(d,j)|0;f=qJ(c,j)|0;if(!i){e=0;while(1){g[f+(l<<2)>>2]=+g[k+(e<<2)>>2];e=e+1|0;if((e|0)==(m|0))break;else f=f+(h<<2)|0}}j=j+1|0}while((j|0)!=(n|0));f=1;return f|0}function iL(b,d,e){b=b|0;d=+d;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(!(ZH(b)|0)){b=0;i=h;return b|0}if(d==0.0){b=UH(b)|0;i=h;return b|0}d=-d;f=YH(b)|0;switch(VH(b)|0){case 12:case 11:case 6:case 10:case 9:case 2:{e=$X(b,d,e)|0;if(!e){h=gc(4)|0;c[h>>2]=1;qd(h|0,366960,0)}AI(e,b)|0;b=e;i=h;return b|0}case 1:{if((f|0)==1){if(+Gea(d,90.0)!=0.0){b=0;i=h;return b|0}e=$X(b,d,e)|0;if(!e){h=gc(4)|0;c[h>>2]=1;qd(h|0,366960,0)}g=kI(e)|0;f=(iI(b)|0)==1;a[g>>0]=(f^1)<<31>>31;a[g+1>>0]=(f^1)<<31>>31;a[g+2>>0]=(f^1)<<31>>31;a[g+4>>0]=f<<31>>31;a[g+5>>0]=f<<31>>31;a[g+6>>0]=f<<31>>31;AI(e,b)|0;b=e;i=h;return b|0}if(!((f|0)==8|(f|0)==24|(f|0)==32)){b=0;i=h;return b|0}e=$X(b,d,e)|0;if(!e){h=gc(4)|0;c[h>>2]=1;qd(h|0,366960,0)}if((f|0)==8?(f=kI(b)|0,qfa(kI(e)|0,f|0,1024)|0,f=pI(b)|0,sI(e,f,rI(b)|0),(mI(b,g)|0)!=0):0)nI(e,g)|0;AI(e,b)|0;b=e;i=h;return b|0}default:{b=0;i=h;return b|0}}return 0}function jL(c){c=c|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if(!(ZH(c)|0)){c=0;return c|0}m=WH(c)|0;n=XH(c)|0;f=YH(c)|0;g=VH(c)|0;if((g|0)==1)switch(f|0){case 32:case 24:{i=((eI(c)|0)>>>0)/(m>>>0)|0;if(!n){c=1;return c|0}j=(i|0)==0;if(!m){f=0;do{qJ(c,f)|0;f=f+1|0}while((f|0)!=(n|0));f=1;return f|0}else k=0;do{f=qJ(c,k)|0;if(j){f=0;do f=f+1|0;while((f|0)!=(m|0))}else{h=0;while(1){g=0;do{l=f+g|0;a[l>>0]=(d[l>>0]|0)^255;g=g+1|0}while(g>>>0>>0);h=h+1|0;if((h|0)==(m|0))break;else f=f+i|0}}k=k+1|0}while((k|0)!=(n|0));f=1;return f|0}case 8:case 4:case 1:{if((iI(c)|0)==3){f=kI(c)|0;if(!(hI(c)|0)){c=1;return c|0}else g=0;do{l=f+(g<<2)+2|0;a[l>>0]=(d[l>>0]|0)^255;l=f+(g<<2)+1|0;a[l>>0]=(d[l>>0]|0)^255;l=f+(g<<2)|0;a[l>>0]=(d[l>>0]|0)^255;g=g+1|0}while(g>>>0<(hI(c)|0)>>>0);f=1;return f|0}if(!n){c=1;return c|0}else h=0;do{f=qJ(c,h)|0;if(eI(c)|0){g=0;do{l=f+g|0;a[l>>0]=(d[l>>0]|0)^255;g=g+1|0}while(g>>>0<(eI(c)|0)>>>0)}h=h+1|0}while((h|0)!=(n|0));f=1;return f|0}default:{c=0;return c|0}}else if((g|0)==2|(g|0)==9|(g|0)==10){i=(((eI(c)|0)>>>0)/(m>>>0)|0)>>>1;if(!n){c=1;return c|0}k=(m|0)==0;j=(i|0)==0;l=0;while(1){f=qJ(c,l)|0;a:do if(!k){if(j){f=0;while(1){f=f+1|0;if((f|0)==(m|0))break a}}else h=0;while(1){g=0;do{o=f+(g<<1)|0;b[o>>1]=(e[o>>1]|0)^65535;g=g+1|0}while(g>>>0>>0);h=h+1|0;if((h|0)==(m|0))break;else f=f+(i<<1)|0}}while(0);l=l+1|0;if((l|0)==(n|0)){f=1;break}}return f|0}else{o=0;return o|0}return 0}function kL(c){c=c|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;if(!(ZH(c)|0)){v=0;return v|0}q=eI(c)|0;r=WH(c)|0;s=XH(c)|0;t=eI(c)|0;t=(t>>>0)/((WH(c)|0)>>>0)|0;u=LH(q,16)|0;if(!u){v=0;return v|0}a:do if(s){j=(r|0)==0;k=r+-1|0;l=(q|0)==0;m=q+-1|0;n=u+(q-t)|0;o=0-t|0;p=(t|0)==0;v=0;while(1){f=qJ(c,v)|0;qfa(u|0,f|0,q|0)|0;b:do switch(YH(c)|0){case 4:{if(!l){e=0;do{i=a[u+(m-e)>>0]|0;a[f+e>>0]=(i&255)<<4|(i&255)>>>4&255;e=e+1|0}while((e|0)!=(q|0))}break}case 16:{if(!j){g=0;e=f;f=n;while(1){b[e>>1]=b[f>>1]|0;g=g+1|0;if((g|0)==(r|0))break;else{e=e+2|0;f=f+-2|0}}}break}case 128:case 96:case 64:case 48:case 32:case 24:{if(!j){if(p){e=0;while(1){e=e+1|0;if((e|0)==(r|0))break b}}else{e=0;i=n}while(1){h=f;g=0;while(1){f=h+1|0;a[h>>0]=a[i+g>>0]|0;g=g+1|0;if(g>>>0>=t>>>0)break;else h=f}e=e+1|0;if((e|0)==(r|0))break;else i=i+o|0}}break}case 1:{if(!j){h=0;do{e=k-h|0;g=e&7;if(!((d[u+(h>>>3)>>0]|0)&128>>>(h&7))){i=f+(e>>>3)|0;a[i>>0]=(d[i>>0]|0)&65407>>>g}else{i=f+(e>>>3)|0;a[i>>0]=d[i>>0]|0|128>>>g}h=h+1|0}while((h|0)!=(r|0))}break}case 8:{if(!j){g=0;e=f;f=n;while(1){a[e>>0]=a[f>>0]|0;g=g+1|0;if((g|0)==(r|0))break;else{e=e+1|0;f=f+-1|0}}}break}default:{}}while(0);v=v+1|0;if((v|0)==(s|0))break a}}while(0);MH(u);v=1;return v|0}function lL(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;if(!(ZH(a)|0)){g=0;return g|0}f=dI(a)|0;b=XH(a)|0;g=LH(f,16)|0;if(!g){g=0;return g|0}c=fI(a)|0;d=b>>>1;if(d){e=0;a=da(b+-1|0,f)|0;b=0;while(1){i=c+e|0;qfa(g|0,i|0,f|0)|0;h=c+a|0;qfa(i|0,h|0,f|0)|0;qfa(h|0,g|0,f|0)|0;b=b+1|0;if(b>>>0>=d>>>0)break;else{e=e+f|0;a=a-f|0}}}MH(g);g=1;return g|0}function mL(a,b){a=a|0;b=b|0;c[a+504>>2]=214;c[a+500>>2]=0;c[a+508>>2]=214;c[a+520>>2]=0;c[a+516>>2]=214;return 1}function nL(a){a=a|0;return 1}function oL(a){a=a|0;return}function pL(f,j,l){f=f|0;j=j|0;l=l|0;var m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;ca=i;i=i+80|0;ba=ca+24|0;p=ca+64|0;R=ca+60|0;U=ca+69|0;V=ca+68|0;W=ca+66|0;X=ca+56|0;Y=ca+48|0;Z=ca+52|0;_=ca+8|0;$=ca;S=ca+44|0;T=ca+16|0;n=f+40|0;P=Fv(f,j,0)|0;if(!P){j=0;i=ca;return j|0}t=(b[P+24>>1]|0)==65;m=t?0:j;a:do if((m|0)==257){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;c[f+60>>2]=m;m=1;aa=219}else if((m|0)==283){aa=c[l>>2]|0;c[k>>2]=c[aa>>2];c[k+4>>2]=c[aa+4>>2];o=+h[k>>3];c[l>>2]=aa+8;if(o<0.0)aa=229;else{g[f+120>>2]=o;m=1;aa=219}}else if((m|0)==284){m=c[l>>2]|0;n=c[m>>2]|0;c[l>>2]=m+4;m=n&65535;if((m+-1|0)>>>0>1)aa=223;else{b[f+126>>1]=n;m=1;aa=219}}else if((m|0)==259){m=c[l>>2]|0;p=c[m>>2]|0;c[l>>2]=m+4;m=p&65535;if(c[n>>2]&128){if((b[f+88>>1]|0)==(p&65535)<<16>>16){m=1;aa=219;break a}Bd[c[f+564>>2]&511](f);l=f+12|0;c[l>>2]=c[l>>2]&-33}m=ov(f,m)|0;if(!m)m=0;else{b[f+88>>1]=p;aa=219}}else if((m|0)==262){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[f+90>>1]=m;m=1;aa=219}else if((m|0)==274){m=c[l>>2]|0;n=c[m>>2]|0;c[l>>2]=m+4;m=n&65535;if((m+-1|0)>>>0>7)aa=223;else{b[f+96>>1]=n;m=1;aa=219}}else if((m|0)==266){m=c[l>>2]|0;n=c[m>>2]|0;c[l>>2]=m+4;m=n&65535;if((m+-1|0)>>>0>1)aa=223;else{b[f+94>>1]=n;m=1;aa=219}}else if((m|0)==341){t=f+112|0;if(!(c[f+12>>2]&4194304)){n=c[l>>2]|0;c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];o=+h[k>>3];c[l>>2]=n+8;n=b[f+98>>1]|0;m=n&65535;p=c[t>>2]|0;if(p)$J(p);p=_J(m<<3)|0;c[t>>2]=p;if((p|0)==0|n<<16>>16==0){m=1;aa=219;break a}while(1){m=m+-1|0;h[p+(m<<3)>>3]=o;if(!m){m=1;aa=219;break a}}}m=c[l>>2]|0;n=c[m>>2]|0;c[l>>2]=m+4;m=e[f+98>>1]|0;p=c[t>>2]|0;if(p){$J(p);c[t>>2]=0}if((n|0)!=0?(s=m<<3,v=_J(s)|0,c[t>>2]=v,(v|0)!=0):0){cK(v,n,s);m=1;aa=219}else{m=1;aa=219}}else if((m|0)==280){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[f+104>>1]=m;m=1;aa=219}else if((m|0)==281){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[f+106>>1]=m;m=1;aa=219}else if((m|0)==254){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;c[f+80>>2]=m;m=1;aa=219}else if((m|0)==263){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[f+92>>1]=m;m=1;aa=219}else if((m|0)==277){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;if(!(m&65535)){m=0;aa=223}else{b[f+98>>1]=m;m=1;aa=219}}else if((m|0)==256){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;c[f+56>>2]=m;m=1;aa=219}else if((m|0)==282){aa=c[l>>2]|0;c[k>>2]=c[aa>>2];c[k+4>>2]=c[aa+4>>2];o=+h[k>>3];c[l>>2]=aa+8;if(o<0.0)aa=229;else{g[f+116>>2]=o;m=1;aa=219}}else if((m|0)==258){ba=c[l>>2]|0;m=c[ba>>2]|0;c[l>>2]=ba+4;b[f+84>>1]=m;if(!(c[f+12>>2]&128)){m=1;aa=219}else switch(m&65535|0){case 8:{c[f+652>>2]=37;m=1;aa=219;break a}case 24:{c[f+652>>2]=63;m=1;aa=219;break a}case 32:{c[f+652>>2]=64;m=1;aa=219;break a}case 128:{c[f+652>>2]=65;m=1;aa=219;break a}case 64:{c[f+652>>2]=65;m=1;aa=219;break a}case 16:{c[f+652>>2]=62;m=1;aa=219;break a}default:{m=1;aa=219;break a}}}else if((m|0)==278){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;if(m){c[f+100>>2]=m;if(!(c[n>>2]&4)){c[f+72>>2]=m;c[f+68>>2]=c[f+56>>2];m=1;aa=219}else{m=1;aa=219}}else{m=0;aa=226}}else if((m|0)==340){t=f+108|0;if(!(c[f+12>>2]&4194304)){n=c[l>>2]|0;c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];o=+h[k>>3];c[l>>2]=n+8;n=b[f+98>>1]|0;m=n&65535;p=c[t>>2]|0;if(p)$J(p);p=_J(m<<3)|0;c[t>>2]=p;if((p|0)==0|n<<16>>16==0){m=1;aa=219;break a}while(1){m=m+-1|0;h[p+(m<<3)>>3]=o;if(!m){m=1;aa=219;break a}}}m=c[l>>2]|0;n=c[m>>2]|0;c[l>>2]=m+4;m=e[f+98>>1]|0;p=c[t>>2]|0;if(p){$J(p);c[t>>2]=0}if((n|0)!=0?(A=m<<3,B=_J(A)|0,c[t>>2]=B,(B|0)!=0):0){cK(B,n,A);m=1;aa=219}else{m=1;aa=219}}else if((m|0)==338){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;m=m&65535;if(m>>>0<=(e[f+98>>1]|0)>>>0?(F=c[l>>2]|0,E=c[F>>2]|0,c[l>>2]=F+4,F=(E|0)==0,!((m|0)!=0&F)):0){if(!m)m=0;else{q=0;do{p=E+(q<<1)|0;n=b[p>>1]|0;if((n&65535)>2){if(n<<16>>16!=999){aa=223;break a}b[p>>1]=2}q=q+1|0}while(q>>>0>>0)}b[f+156>>1]=m;p=f+160|0;n=c[p>>2]|0;if(n){$J(n);c[p>>2]=0}if(!F?(G=m<<1,H=_J(G)|0,c[p>>2]=H,(H|0)!=0):0){cK(H,E,G);m=1;aa=219}else{m=1;aa=219}}else aa=223}else if((m|0)==322){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;if(m&15){if(c[f+8>>2]|0){aa=226;break a}aa=c[f+628>>2]|0;l=c[f>>2]|0;c[ba>>2]=m;qx(aa,l,96800,ba)}c[f+68>>2]=m;m=f+12|0;c[m>>2]=c[m>>2]|1024;m=1;aa=219}else if((m|0)==323){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;if(m&15){if(c[f+8>>2]|0){aa=226;break a}aa=c[f+628>>2]|0;l=c[f>>2]|0;c[ba>>2]=m;qx(aa,l,96840,ba)}c[f+72>>2]=m;m=f+12|0;c[m>>2]=c[m>>2]|1024;m=1;aa=219}else if((m|0)==32995){aa=c[l>>2]|0;ba=c[aa>>2]|0;c[l>>2]=aa+4;l=(ba&65535|0)!=0;b[f+156>>1]=l&1;if(l){b[p>>1]=1;n=f+160|0;m=c[n>>2]|0;if(m){$J(m);c[n>>2]=0}m=_J(2)|0;c[n>>2]=m;if(m){cK(m,p,2);m=1;aa=219}else{m=1;aa=219}}else{m=1;aa=219}}else if((m|0)==32996){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;m=m&65535;if((m|0)==1)m=2;else if((m|0)==2)m=1;else if(!m)m=4;else if((m|0)==3)m=3;else{aa=223;break a}b[f+86>>1]=m;m=1;aa=219}else if((m|0)==321){m=c[l>>2]|0;aa=c[m>>2]|0;c[l>>2]=m+4;b[f+152>>1]=aa;aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[f+154>>1]=m;m=1;aa=219}else if((m|0)==287){m=c[l>>2]|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];o=+h[k>>3];c[l>>2]=m+8;g[f+132>>2]=o;m=1;aa=219}else if((m|0)==320){r=1<>1];m=f+140|0;p=c[l>>2]|0;t=c[p>>2]|0;c[l>>2]=p+4;p=c[m>>2]|0;if(p){$J(p);c[m>>2]=0}if(((t|0)!=0?(w=r<<1,(r&2147483647|0)==(r|0)):0)?(x=_J(w)|0,c[m>>2]=x,(x|0)!=0):0)cK(x,t,w);m=f+144|0;n=c[l>>2]|0;p=c[n>>2]|0;c[l>>2]=n+4;n=c[m>>2]|0;if(n){$J(n);c[m>>2]=0}if(((p|0)!=0?(C=r<<1,(r&2147483647|0)==(r|0)):0)?(D=_J(C)|0,c[m>>2]=D,(D|0)!=0):0)cK(D,p,C);p=f+148|0;m=c[l>>2]|0;n=c[m>>2]|0;c[l>>2]=m+4;m=c[p>>2]|0;if(m){$J(m);c[p>>2]=0}if(((n|0)!=0?(K=r<<1,(r&2147483647|0)==(r|0)):0)?(L=_J(K)|0,c[p>>2]=L,(L|0)!=0):0){cK(L,n,K);m=1;aa=219}else{m=1;aa=219}}else if((m|0)==32998){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;if(!m){m=0;aa=226}else{c[f+76>>2]=m;m=1;aa=219}}else if((m|0)==339){m=c[l>>2]|0;p=c[m>>2]|0;c[l>>2]=m+4;m=p&65535;if((m+-1|0)>>>0<=5){n=p&65535;b[f+86>>1]=n;if(((m|0)==5?(b[f+84>>1]|0)==32:0)?(u=f+652|0,(c[u>>2]|0)==64):0){c[u>>2]=62;m=1;aa=219;break a}if(((n+-5&65535)<2?(b[f+84>>1]|0)==64:0)?(r=f+652|0,(c[r>>2]|0)==65):0){c[r>>2]=64;m=1;aa=219}else{m=1;aa=219}}else aa=223}else if((m|0)==296){m=c[l>>2]|0;n=c[m>>2]|0;c[l>>2]=m+4;m=n&65535;if((m+-1|0)>>>0>2)aa=223;else{b[f+124>>1]=n;m=1;aa=219}}else if((m|0)==297){m=c[l>>2]|0;aa=c[m>>2]|0;c[l>>2]=m+4;b[f+136>>1]=aa;aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[f+138>>1]=m;m=1;aa=219}else if((m|0)==286){m=c[l>>2]|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];o=+h[k>>3];c[l>>2]=m+8;g[f+128>>2]=o;m=1;aa=219}else if((m|0)==32997){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;c[f+64>>2]=m;m=1;aa=219}else if((m|0)==330){if(c[f+12>>2]&8192){m=c[f+628>>2]|0;c[ba>>2]=c[f>>2];Yv(m,97048,96888,ba);m=0;break a}m=c[l>>2]|0;n=c[m>>2]|0;c[l>>2]=m+4;m=f+184|0;b[m>>1]=n;n=f+188|0;p=c[l>>2]|0;q=c[p>>2]|0;c[l>>2]=p+4;m=e[m>>1]|0;p=c[n>>2]|0;if(p){$J(p);c[n>>2]=0}if((q|0)!=0?(y=m<<3,z=_J(y)|0,c[n>>2]=z,(z|0)!=0):0){cK(z,q,y);m=1;aa=219}else{m=1;aa=219}}else if((m|0)==301){m=((e[f+98>>1]|0)-(e[f+156>>1]|0)|0)>1?3:1;p=f+84|0;t=0;do{n=f+(t<<2)+200|0;r=c[l>>2]|0;q=c[r>>2]|0;c[l>>2]=r+4;r=1<>1];s=c[n>>2]|0;if(s){$J(s);c[n>>2]=0}if(((q|0)!=0?(I=r<<1,(r&2147483647|0)==(r|0)):0)?(J=_J(I)|0,c[n>>2]=J,(J|0)!=0):0)cK(J,q,I);t=t+1|0}while((t|0)!=(m|0));m=1;aa=219}else if((m|0)==333){r=c[l>>2]|0;m=c[r>>2]|0;c[l>>2]=r+4;m=m&65535;r=c[l>>2]|0;s=c[r>>2]|0;c[l>>2]=r+4;r=b[f+98>>1]|0;b:do if(!m)m=r;else{t=s+m|0;if(!(r<<16>>16)){m=0;break a}else{p=s;m=r}while(1){while(1){if(p>>>0>=t>>>0)break b;n=p+1|0;if(!(a[p>>0]|0)){p=n;break}else p=n}m=m+-1<<16>>16;if(!(m<<16>>16)){m=p;break}}q=m-s|0;l=(m|0)!=(s|0);m=l&1;if(!l){m=0;break a}p=f+220|0;n=c[p>>2]|0;if(n){$J(n);c[p>>2]=0}if((s|0)!=0?(M=_J(q)|0,c[p>>2]=M,(M|0)!=0):0)cK(M,s,q);c[f+216>>2]=q;aa=219;break a}while(0);j=c[f+628>>2]|0;l=r&65535;c[ba>>2]=c[f>>2];c[ba+4>>2]=l;c[ba+8>>2]=l-(m&65535);Yv(j,97232,97248,ba);m=0}else if((m|0)==532){p=f+212|0;m=c[l>>2]|0;n=c[m>>2]|0;c[l>>2]=m+4;m=c[p>>2]|0;if(m){$J(m);c[p>>2]=0}if((n|0)!=0?(q=_J(24)|0,c[p>>2]=q,(q|0)!=0):0){cK(q,n,24);m=1;aa=219}else{m=1;aa=219}}else if((m|0)==531){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[f+196>>1]=m;m=1;aa=219}else if((m|0)==530){m=c[l>>2]|0;aa=c[m>>2]|0;c[l>>2]=m+4;b[f+192>>1]=aa;aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[f+194>>1]=m;m=1;aa=219}else if((m|0)==65563){m=c[l>>2]|0;ba=c[m>>2]|0;c[l>>2]=m+4;m=f+12|0;n=c[m>>2]|0;if((ba&65535|0)==1){c[m>>2]=n|4194304;m=1;aa=219;break a}else{c[m>>2]=n&-4194305;m=1;aa=219;break a}}else{if(!t){m=c[f+628>>2]|0;l=c[P+28>>2]|0;c[ba>>2]=c[f>>2];c[ba+4>>2]=j>>>0>65535?96776:356424;c[ba+8>>2]=l;Yv(m,97048,96728,ba);m=0;break a}q=f+224|0;m=c[q>>2]|0;s=f+228|0;c:do if((m|0)>0){r=c[s>>2]|0;p=0;while(1){t=r+(p*12|0)|0;if((c[c[t>>2]>>2]|0)==(j|0)){n=t;m=p;break}p=p+1|0;if((p|0)>=(m|0)){aa=173;break c}}m=r+(m*12|0)+8|0;t=c[m>>2]|0;if(t){$J(t);c[m>>2]=0;break}if(!n){m=c[q>>2]|0;aa=173}}else aa=173;while(0);do if((aa|0)==173){m=m+1|0;c[q>>2]=m;m=aK(c[s>>2]|0,m*12|0)|0;if(!m){m=c[f+628>>2]|0;c[ba>>2]=c[f>>2];Yv(m,97048,96920,ba);m=0;break a}else{c[s>>2]=m;M=(c[q>>2]|0)+-1|0;n=m+(M*12|0)|0;c[n>>2]=P;c[m+(M*12|0)+8>>2]=0;c[m+(M*12|0)+4>>2]=0;break}}while(0);q=P+8|0;s=Hv(c[q>>2]|0)|0;if(!s){m=c[f+628>>2]|0;l=c[q>>2]|0;j=c[P+28>>2]|0;c[ba>>2]=c[f>>2];c[ba+4>>2]=l;c[ba+8>>2]=j;Yv(m,97048,96976,ba);m=0;break a}u=P+27|0;p=(a[u>>0]|0)!=0;if((c[q>>2]|0)==2){do if(p)if((b[P+6>>1]|0)==-3){ba=c[l>>2]|0;N=c[ba>>2]|0;c[l>>2]=ba+4;ba=c[l>>2]|0;O=c[ba>>2]|0;c[l>>2]=ba+4;break}else Ra(97008,96536,529,97048);else{N=c[l>>2]|0;O=c[N>>2]|0;c[l>>2]=N+4;N=(tfa(O|0)|0)+1|0}while(0);c[n+4>>2]=N;p=n+8|0;m=c[p>>2]|0;if(m){$J(m);c[p>>2]=0}if(!O){m=1;aa=219;break a}m=_J(N)|0;c[p>>2]=m;if(!m){m=1;aa=219;break a}cK(m,O,N);m=1;aa=219;break a}r=P+6|0;t=b[r>>1]|0;m=t<<16>>16;do if(!p)if(t<<16>>16==-2){m=e[f+98>>1]|0;c[n+4>>2]=m;aa=195;break}else if(t<<16>>16==-3|t<<16>>16==-1){c[n+4>>2]=1;m=1;break}else{c[n+4>>2]=m;aa=195;break}else{aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;c[n+4>>2]=m;aa=195}while(0);if((aa|0)==195)if(!m){m=c[f+628>>2]|0;V=c[P+28>>2]|0;W=c[q>>2]|0;l=b[r>>1]|0;j=d[u>>0]|0;c[ba>>2]=c[f>>2];c[ba+4>>2]=V;c[ba+8>>2]=W;c[ba+12>>2]=l;c[ba+16>>2]=j;Yv(m,97048,97064,ba);m=0;break a}p=n+4|0;t=Wu(f,m,s,97128)|0;m=n+8|0;c[m>>2]=t;if(!t)m=0;else{if((c[P>>2]|0)==336?(gfa(c[P+28>>2]|0,105592)|0)==0:0){aa=c[l>>2]|0;ba=c[aa>>2]|0;c[l>>2]=aa+4;b[R>>1]=ba;ba=c[l>>2]|0;aa=c[ba>>2]|0;c[l>>2]=ba+4;b[R+2>>1]=aa;cK(c[m>>2]|0,R,4);m=1;aa=219;break a}if(((a[u>>0]|0)==0?(e[r>>1]|0)<=65532:0)?(Q=c[p>>2]|0,(Q|0)<=1):0){if((Q|0)!=1)Ra(96784,96536,597,97048);do switch(c[q>>2]|0){case 6:{aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;a[V>>0]=m;cK(t,V,s);m=1;aa=219;break a}case 9:{aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;c[Z>>2]=m;cK(t,Z,s);m=1;aa=219;break a}case 11:case 10:case 5:{m=c[l>>2]|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];o=+h[k>>3];c[l>>2]=m+8;g[S>>2]=o;cK(t,S,s);m=1;aa=219;break a}case 12:{m=c[l>>2]|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];o=+h[k>>3];c[l>>2]=m+8;h[T>>3]=o;cK(t,T,s);m=1;aa=219;break a}case 17:{m=c[l>>2]|0;aa=m;ba=c[aa>>2]|0;aa=c[aa+4>>2]|0;c[l>>2]=m+8;m=$;c[m>>2]=ba;c[m+4>>2]=aa;cK(t,$,s);m=1;aa=219;break a}case 8:{aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[X>>1]=m;cK(t,X,s);m=1;aa=219;break a}case 13:case 4:{aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;c[Y>>2]=m;cK(t,Y,s);m=1;aa=219;break a}case 3:{aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[W>>1]=m;cK(t,W,s);m=1;aa=219;break a}case 7:case 1:{aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;a[U>>0]=m;cK(t,U,s);m=1;aa=219;break a}case 18:case 16:{m=c[l>>2]|0;aa=m;ba=c[aa>>2]|0;aa=c[aa+4>>2]|0;c[l>>2]=m+8;m=_;c[m>>2]=ba;c[m+4>>2]=aa;cK(t,_,s);m=1;aa=219;break a}default:{bK(t,0,s);m=0;break a}}while(0)}aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;cK(t,m,da(c[p>>2]|0,s)|0);m=1;aa=219}}while(0);if((aa|0)==219){n=Iv(f,j)|0;if(n){l=b[n+24>>1]|0;j=f+(((l&65535)>>>5&65535)<<2)+40|0;c[j>>2]=1<<(l&31)|c[j>>2]}j=f+12|0;c[j>>2]=c[j>>2]|8}else if((aa|0)==223){n=Iv(f,j)|0;p=c[f+628>>2]|0;if(!n)n=97192;else n=c[n+28>>2]|0;c[ba>>2]=c[f>>2];c[ba+4>>2]=m;c[ba+8>>2]=n;Yv(p,97048,97160,ba);j=0;i=ca;return j|0}else if((aa|0)==226){n=Iv(f,j)|0;p=c[f+628>>2]|0;if(!n)n=97192;else n=c[n+28>>2]|0;c[ba>>2]=c[f>>2];c[ba+4>>2]=m;c[ba+8>>2]=n;Yv(p,97048,97160,ba);j=0;i=ca;return j|0}else if((aa|0)==229){m=Iv(f,j)|0;p=c[f+628>>2]|0;if(!m)m=97192;else m=c[m+28>>2]|0;c[ba>>2]=c[f>>2];j=ba+4|0;h[k>>3]=o;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[ba+12>>2]=m;Yv(p,97048,97200,ba);j=0;i=ca;return j|0}j=m;i=ca;return j|0}function qL(d,f,j){d=d|0;f=f|0;j=j|0;var k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=i;i=i+16|0;n=r;p=Fv(d,f,0)|0;if(!p){o=0;i=r;return o|0}m=(b[p+24>>1]|0)==65;k=m?0:f;do if((k|0)==297){o=b[d+136>>1]|0;q=c[j>>2]|0;f=c[q>>2]|0;c[j>>2]=q+4;b[f>>1]=o;d=b[d+138>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==532){d=c[d+212>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==274){d=b[d+96>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==281){d=b[d+106>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==323){d=c[d+72>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==277){d=b[d+98>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==278){d=c[d+100>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==322){d=c[d+68>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==296){d=b[d+124>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==324|(k|0)==273){Rv(d)|0;d=c[d+172>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==339){d=b[d+86>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==32997){d=c[d+64>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==341){n=c[d+112>>2]|0;if(c[d+12>>2]&4194304){d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;c[o>>2]=n;o=1;i=r;return o|0}l=+h[n>>3];k=b[d+98>>1]|0;if((k&65535)>1){m=1;do{s=+h[n+(m<<3)>>3];l=s>l?s:l;m=m+1|0}while((m&65535)<(k&65535))}d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;h[o>>3]=l;o=1;i=r;return o|0}else if((k|0)==330){o=b[d+184>>1]|0;q=c[j>>2]|0;f=c[q>>2]|0;c[j>>2]=q+4;b[f>>1]=o;d=c[d+188>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==338){o=b[d+156>>1]|0;q=c[j>>2]|0;f=c[q>>2]|0;c[j>>2]=q+4;b[f>>1]=o;d=c[d+160>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==530){o=b[d+192>>1]|0;q=c[j>>2]|0;f=c[q>>2]|0;c[j>>2]=q+4;b[f>>1]=o;d=b[d+194>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==284){d=b[d+126>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==32995){if((b[d+156>>1]|0)==1)k=(b[c[d+160>>2]>>1]|0)==1&1;else k=0;d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;b[o>>1]=k;o=1;i=r;return o|0}else if((k|0)==280){d=b[d+104>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==257){d=c[d+60>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==321){o=b[d+152>>1]|0;q=c[j>>2]|0;f=c[q>>2]|0;c[j>>2]=q+4;b[f>>1]=o;d=b[d+154>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==258){d=b[d+84>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==262){d=b[d+90>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==256){d=c[d+56>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==320){q=c[d+140>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=q;o=c[d+144>>2]|0;q=c[j>>2]|0;f=c[q>>2]|0;c[j>>2]=q+4;c[f>>2]=o;d=c[d+148>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==325|(k|0)==279){Rv(d)|0;d=c[d+176>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==32998){d=c[d+76>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==531){d=b[d+196>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==301){f=c[d+200>>2]|0;q=c[j>>2]|0;o=c[q>>2]|0;c[j>>2]=q+4;c[o>>2]=f;if(((e[d+98>>1]|0)-(e[d+156>>1]|0)|0)<=1){o=1;i=r;return o|0}o=c[d+204>>2]|0;q=c[j>>2]|0;f=c[q>>2]|0;c[j>>2]=q+4;c[f>>2]=o;d=c[d+208>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==283){s=+g[d+120>>2];d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;g[o>>2]=s;o=1;i=r;return o|0}else if((k|0)==333){d=c[d+220>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==259){d=b[d+88>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==286){s=+g[d+128>>2];d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;g[o>>2]=s;o=1;i=r;return o|0}else if((k|0)==32996){k=e[d+86>>1]|0;if((k|0)==1){d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;b[o>>1]=2;o=1;i=r;return o|0}else if((k|0)==3){d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;b[o>>1]=3;o=1;i=r;return o|0}else if((k|0)==2){d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;b[o>>1]=1;o=1;i=r;return o|0}else if((k|0)==4){d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;b[o>>1]=0;o=1;i=r;return o|0}else{o=1;i=r;return o|0}}else if((k|0)==266){d=b[d+94>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==263){d=b[d+92>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==340){n=c[d+108>>2]|0;if(c[d+12>>2]&4194304){d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;c[o>>2]=n;o=1;i=r;return o|0}l=+h[n>>3];k=b[d+98>>1]|0;if((k&65535)>1){m=1;do{s=+h[n+(m<<3)>>3];l=s>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;h[o>>3]=l;o=1;i=r;return o|0}else if((k|0)==254){d=c[d+80>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==282){s=+g[d+116>>2];d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;g[o>>2]=s;o=1;i=r;return o|0}else if((k|0)==287){s=+g[d+132>>2];d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;g[o>>2]=s;o=1;i=r;return o|0}else{if(!m){o=c[d+628>>2]|0;q=c[p+28>>2]|0;c[n>>2]=c[d>>2];c[n+4>>2]=f>>>0>65535?96776:356424;c[n+8>>2]=q;Yv(o,96712,96728,n);o=0;i=r;return o|0}m=c[d+224>>2]|0;if((m|0)<=0){o=0;i=r;return o|0}d=c[d+228>>2]|0;k=0;while(1){if((c[c[d+(k*12|0)>>2]>>2]|0)==(f|0)){n=k;break}k=k+1|0;if((k|0)>=(m|0)){k=0;o=89;break}}if((o|0)==89){i=r;return k|0}if(a[p+27>>0]|0){k=c[d+(n*12|0)+4>>2]|0;if((b[p+4>>1]|0)==-3){f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=k}else{f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=k}d=c[d+(n*12|0)+8>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}if((c[p>>2]|0)==336?(gfa(c[p+28>>2]|0,105592)|0)==0:0){d=d+(n*12|0)+8|0;o=b[c[d>>2]>>1]|0;q=c[j>>2]|0;f=c[q>>2]|0;c[j>>2]=q+4;b[f>>1]=o;d=b[(c[d>>2]|0)+2>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}m=c[p+8>>2]|0;if(((m|0)!=2?(e[p+4>>1]|0)<=65532:0)?(q=c[d+(n*12|0)+4>>2]|0,(q|0)<=1):0){k=c[d+(n*12|0)+8>>2]|0;if((q|0)!=1)Ra(96784,96536,1077,96712);do switch(m|0){case 13:case 4:{d=c[k>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}case 12:{s=+h[k>>3];d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;h[o>>3]=s;o=1;i=r;return o|0}case 9:{d=c[k>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}case 6:{d=a[k>>0]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;a[o>>0]=d;o=1;i=r;return o|0}case 3:{d=b[k>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}case 8:{d=b[k>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}case 17:{d=k;f=c[d>>2]|0;d=c[d+4>>2]|0;q=c[j>>2]|0;o=c[q>>2]|0;c[j>>2]=q+4;c[o>>2]=f;c[o+4>>2]=d;o=1;i=r;return o|0}case 18:case 16:{d=k;f=c[d>>2]|0;d=c[d+4>>2]|0;q=c[j>>2]|0;o=c[q>>2]|0;c[j>>2]=q+4;c[o>>2]=f;c[o+4>>2]=d;o=1;i=r;return o|0}case 7:case 1:{d=a[k>>0]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;a[o>>0]=d;o=1;i=r;return o|0}case 11:case 10:case 5:{s=+g[k>>2];d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;g[o>>2]=s;o=1;i=r;return o|0}default:{o=0;i=r;return o|0}}while(0)}d=c[d+(n*12|0)+8>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}while(0);return 0}function rL(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+32|0;v=w+16|0;m=w+30|0;s=w+24|0;n=w+8|0;j=w+28|0;o=w+20|0;k=w;u=a+12|0;p=c[u>>2]|0;if(!(p&2048)){g=a+640|0;h=a+628|0;t=b;t=Xd[c[g>>2]&255](c[h>>2]|0,c[t>>2]|0,c[t+4>>2]|0,0)|0;f=b;f=(t|0)==(c[f>>2]|0)?(H|0)==(c[f+4>>2]|0):0;if(!(p&524288)){if(f?(l=a+632|0,(Hd[c[l>>2]&255](c[h>>2]|0,j,2)|0)==2):0){if(c[u>>2]&128)Yw(j);f=Xd[c[g>>2]&255](c[h>>2]|0,(e[j>>1]|0)*12|0,0,1)|0;if(d){c[d>>2]=f;c[d+4>>2]=H}if((Hd[c[l>>2]&255](c[h>>2]|0,o,4)|0)!=4){d=c[h>>2]|0;c[v>>2]=c[a>>2];Yv(d,96568,96672,v);v=0;i=w;return v|0}if(c[u>>2]&128)Zw(o);v=b;c[v>>2]=c[o>>2];c[v+4>>2]=0;v=1;i=w;return v|0}d=c[h>>2]|0;c[v>>2]=c[a>>2];Yv(d,96568,96632,v);v=0;i=w;return v|0}if(f?(q=a+632|0,(Hd[c[q>>2]&255](c[h>>2]|0,k,8)|0)==8):0){if(c[u>>2]&128)_w(k);t=k;f=c[t>>2]|0;t=c[t+4>>2]|0;if(t>>>0>0|(t|0)==0&f>>>0>65535){Yv(c[h>>2]|0,96568,110944,v);v=0;i=w;return v|0}f=Xd[c[g>>2]&255](c[h>>2]|0,(f&65535)*20|0,0,1)|0;if(d){c[d>>2]=f;c[d+4>>2]=H}if((Hd[c[q>>2]&255](c[h>>2]|0,b,8)|0)!=8){d=c[h>>2]|0;c[v>>2]=c[a>>2];Yv(d,96568,96672,v);v=0;i=w;return v|0}if(!(c[u>>2]&128)){v=1;i=w;return v|0}_w(b);v=1;i=w;return v|0}d=c[h>>2]|0;c[v>>2]=c[a>>2];Yv(d,96568,96632,v);v=0;i=w;return v|0}f=b;j=c[f>>2]|0;f=c[f+4>>2]|0;if(!(p&524288)){h=j+2|0;if(((j|0)==(j|0)&(((j|0)<0)<<31>>31|0)==(f|0)?!((j|0)>2147483645|(h|0)<2):0)?(r=a+616|0,(h|0)<=(c[r>>2]|0)):0){g=a+612|0;cK(m,(c[g>>2]|0)+j|0,2);if(c[u>>2]&128)Yw(m);f=((e[m>>1]|0)*12|0)+h|0;t=f+4|0;if(((h|0)>=0?!((f|0)>2147483643|(t|0)<4):0)?(t|0)<=(c[r>>2]|0):0){if(d){v=d;c[v>>2]=f;c[v+4>>2]=((f|0)<0)<<31>>31}cK(s,(c[g>>2]|0)+f|0,4);if(c[u>>2]&128)Zw(s);v=b;c[v>>2]=c[s>>2];c[v+4>>2]=0;v=1;i=w;return v|0}Yv(c[a+628>>2]|0,96568,110976,v);v=0;i=w;return v|0}Yv(c[a+628>>2]|0,96568,110944,v);v=b;c[v>>2]=0;c[v+4>>2]=0;v=0;i=w;return v|0}h=j+8|0;if(((j|0)==(j|0)&(((j|0)<0)<<31>>31|0)==(f|0)?!((j|0)>2147483639|(h|0)<8):0)?(t=a+616|0,(h|0)<=(c[t>>2]|0)):0){g=a+612|0;cK(n,(c[g>>2]|0)+j|0,8);if(c[u>>2]&128)_w(n);s=n;f=c[s>>2]|0;s=c[s+4>>2]|0;if(s>>>0>0|(s|0)==0&f>>>0>65535){Yv(c[a+628>>2]|0,96568,96592,v);v=0;i=w;return v|0}f=((f&65535)*20|0)+h|0;s=f+8|0;if(((h|0)>=0?!((f|0)>2147483639|(s|0)<8):0)?(s|0)<=(c[t>>2]|0):0){if(d){v=d;c[v>>2]=f;c[v+4>>2]=((f|0)<0)<<31>>31}cK(b,(c[g>>2]|0)+f|0,8);if(!(c[u>>2]&128)){v=1;i=w;return v|0}_w(b);v=1;i=w;return v|0}Yv(c[a+628>>2]|0,96568,110976,v);v=0;i=w;return v|0}Yv(c[a+628>>2]|0,96568,110944,v);v=0;i=w;return v|0}function sL(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a>>2]|0;e=c[b>>2]|0;a=c[d>>2]|0;b=c[e>>2]|0;if((a|0)!=(b|0)){d=a-b|0;return d|0}a=c[d+8>>2]|0;if(!a){d=0;return d|0}d=(c[e+8>>2]|0)-a|0;return d|0}function tL(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=b<<16>>16==-1;d=c<<24>>24==0;a:do if(!((a|0)==2&e&d)){if(b<<16>>16==1&d)do switch(a|0){case 9:{d=7;break a}case 16:{d=8;break a}case 3:{d=4;break a}case 2:{d=1;break a}case 11:case 10:case 5:{d=10;break a}case 17:{d=9;break a}case 18:case 13:{d=12;break a}case 8:{d=5;break a}case 4:{d=6;break a}case 7:case 1:{d=2;break a}case 12:{d=11;break a}case 6:{d=3;break a}default:{d=0;break a}}while(0);if(b<<16>>16>0&d)do switch(a|0){case 6:{d=17;break a}case 17:{d=23;break a}case 4:{d=20;break a}case 8:{d=19;break a}case 11:case 10:case 5:{d=24;break a}case 7:case 1:{d=16;break a}case 9:{d=21;break a}case 12:{d=25;break a}case 18:case 13:{d=26;break a}case 16:{d=22;break a}case 3:{d=18;break a}case 2:{d=15;break a}default:{d=0;break a}}while(0);d=c<<24>>24==1;if(e&d)do switch(a|0){case 12:{d=37;break a}case 16:{d=34;break a}case 3:{d=30;break a}case 2:{d=27;break a}case 4:{d=32;break a}case 11:case 10:case 5:{d=36;break a}case 9:{d=33;break a}case 17:{d=35;break a}case 18:case 13:{d=38;break a}case 7:case 1:{d=28;break a}case 6:{d=29;break a}case 8:{d=31;break a}default:{d=0;break a}}while(0);if(b<<16>>16==-3&d)do switch(a|0){case 8:{d=43;break a}case 17:{d=47;break a}case 4:{d=44;break a}case 9:{d=45;break a}case 3:{d=42;break a}case 11:case 10:case 5:{d=48;break a}case 18:case 13:{d=50;break a}case 16:{d=46;break a}case 12:{d=49;break a}case 7:case 1:{d=40;break a}case 2:{d=39;break a}case 6:{d=41;break a}default:{d=0;break a}}while(0);else d=0}else d=1;while(0);return d|0}function uL(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;w=i;i=i+32|0;t=w+16|0;v=w+28|0;m=w+8|0;n=w+20|0;l=w;r=w+24|0;if(!j)Ra(109448,107440,4479,109456);q=f+16|0;s=q;c[s>>2]=g;c[s+4>>2]=h;s=(k|0)!=0;if(s){u=k;c[u>>2]=0;c[u+4>>2]=0}u=f+12|0;h=c[u>>2]|0;do if(!(h&2048)){o=f+628|0;r=q;r=Xd[c[f+640>>2]&255](c[o>>2]|0,c[r>>2]|0,c[r+4>>2]|0,0)|0;p=q;if(!((r|0)==(c[p>>2]|0)?(H|0)==(c[p+4>>2]|0):0)){j=c[o>>2]|0;c[t>>2]=c[f>>2];Yv(j,109456,111240,t);j=0;i=w;return j|0}q=f+632|0;g=c[q>>2]|0;h=c[o>>2]|0;do if(!(c[u>>2]&524288)){if((Hd[g&255](h,v,2)|0)!=2){j=c[o>>2]|0;c[t>>2]=c[f>>2];Yv(j,109456,111280,t);j=0;i=w;return j|0}if(c[u>>2]&128)Yw(v);g=b[v>>1]|0;if((g&65535)>4096){Yv(c[o>>2]|0,109456,109480,t);j=0;i=w;return j|0}else h=12}else{if((Hd[g&255](h,m,8)|0)!=8){j=c[o>>2]|0;c[t>>2]=c[f>>2];Yv(j,109456,111280,t);j=0;i=w;return j|0}if(c[u>>2]&128)_w(m);p=m;g=c[p>>2]|0;p=c[p+4>>2]|0;if(!(p>>>0>0|(p|0)==0&g>>>0>4096)){g=g&65535;b[v>>1]=g;h=20;break}Yv(c[o>>2]|0,109456,109480,t);j=0;i=w;return j|0}while(0);m=Wu(f,g&65535,h,109560)|0;if(!m){j=0;i=w;return j|0}p=da(e[v>>1]|0,h)|0;p=Hd[c[q>>2]&255](c[o>>2]|0,m,p)|0;if((p|0)!=(da(e[v>>1]|0,h)|0)){j=c[o>>2]|0;c[t>>2]=c[f>>2];Yv(j,109456,109584,t);$J(m);j=0;i=w;return j|0}if(s){l=c[q>>2]|0;g=c[o>>2]|0;if(c[u>>2]&524288){if((Hd[l&255](g,k,8)|0)!=8){t=k;c[t>>2]=0;c[t+4>>2]=0}if(!(c[u>>2]&128)){q=m;break}_w(k);q=m;break}if((Hd[l&255](g,n,4)|0)!=4)c[n>>2]=0;if(c[u>>2]&128)Zw(n);q=k;c[q>>2]=c[n>>2];c[q+4>>2]=0;q=m}else q=m}else{n=q;g=c[n>>2]|0;if(!((g|0)==(g|0)?(((g|0)<0)<<31>>31|0)==(c[n+4>>2]|0):0)){Yv(c[f+628>>2]|0,109456,109624,t);j=0;i=w;return j|0}do if(!(h&524288)){h=g+2|0;if(!((g|0)>2147483645|(h|0)<2)?(h|0)<=(c[f+616>>2]|0):0){cK(v,(c[f+612>>2]|0)+g|0,2);if(c[u>>2]&128)Yw(v);g=b[v>>1]|0;if((g&65535)<=4096){o=12;break}Yv(c[f+628>>2]|0,109456,109480,t);j=0;i=w;return j|0}Yv(c[f+628>>2]|0,109456,109624,t);j=0;i=w;return j|0}else{h=g+8|0;if(!((g|0)>2147483639|(h|0)<8)?(h|0)<=(c[f+616>>2]|0):0){cK(l,(c[f+612>>2]|0)+g|0,8);if(c[u>>2]&128)_w(l);n=l;g=c[n>>2]|0;n=c[n+4>>2]|0;if(!(n>>>0>0|(n|0)==0&g>>>0>4096)){g=g&65535;b[v>>1]=g;o=20;break}Yv(c[f+628>>2]|0,109456,109480,t);j=0;i=w;return j|0}Yv(c[f+628>>2]|0,109456,109624,t);j=0;i=w;return j|0}while(0);if(!(g<<16>>16)){Yv(c[f+628>>2]|0,109456,109664,t);j=0;i=w;return j|0}q=Wu(f,g&65535,o,109560)|0;if(!q){j=0;i=w;return j|0}l=da(e[v>>1]|0,o)|0;g=l+h|0;if(!((g|0)<(h|0)|(g|0)<(l|0))?(p=f+616|0,(g|0)<=(c[p>>2]|0)):0){m=f+612|0;cK(q,(c[m>>2]|0)+h|0,l);if(!s)break;l=(da(e[v>>1]|0,o)|0)+h|0;g=c[u>>2]|0;if(g&524288){t=l+8|0;if(!((l|0)>2147483639|(t|0)<8)?(t|0)<=(c[p>>2]|0):0){cK(k,(c[m>>2]|0)+l|0,8);g=c[u>>2]|0}else{t=k;c[t>>2]=0;c[t+4>>2]=0}if(!(g&128))break;_w(k);break}t=l+4|0;if(!((l|0)>2147483643|(t|0)<4)?(t|0)<=(c[p>>2]|0):0){cK(r,(c[m>>2]|0)+l|0,4);g=c[u>>2]|0}else c[r>>2]=0;if(g&128)Zw(r);c[k>>2]=c[r>>2];c[k+4>>2]=0;break}Yv(c[f+628>>2]|0,109456,109744,t);$J(q);j=0;i=w;return j|0}while(0);n=Wu(f,e[v>>1]|0,24,109560)|0;if(!n){$J(q);j=0;i=w;return j|0}if(b[v>>1]|0){g=q;o=n;p=0;while(1){l=c[u>>2]|0;if(l&128){Yw(g);l=c[u>>2]|0}b[o>>1]=b[g>>1]|0;m=g+2|0;if(l&128){Yw(m);l=c[u>>2]|0}b[o+2>>1]=b[m>>1]|0;m=g+4|0;h=(l&128|0)!=0;if(!(l&524288)){if(h)Zw(m);f=o+8|0;c[f>>2]=c[m>>2];c[f+4>>2]=0;c[o+16>>2]=c[g+8>>2];g=g+12|0}else{if(h)_w(m);l=a[m>>0]|0;f=a[g+5>>0]|0;m=a[g+6>>0]|0;s=a[g+7>>0]|0;r=a[g+8>>0]|0;t=a[g+9>>0]|0;k=a[g+10>>0]|0;h=vfa(d[g+11>>0]|0,0,56)|0;C=H;k=vfa(k&255|0,0,48)|0;A=H;t=vfa(t&255|0,0,40)|0;z=H;s=vfa(s&255|0,0,24)|0;y=H;m=vfa(m&255|0,0,16)|0;x=H;f=vfa(f&255|0,0,8)|0;B=o+8|0;c[B>>2]=f|l&255|m|s|t|k|h;c[B+4>>2]=H|x|y|r&255|z|A|C;B=a[g+12>>0]|0;C=a[g+13>>0]|0;A=a[g+14>>0]|0;z=a[g+15>>0]|0;r=a[g+16>>0]|0;y=a[g+17>>0]|0;x=a[g+18>>0]|0;h=vfa(d[g+19>>0]|0,0,56)|0;k=H;x=vfa(x&255|0,0,48)|0;t=H;y=vfa(y&255|0,0,40)|0;s=H;z=vfa(z&255|0,0,24)|0;m=H;A=vfa(A&255|0,0,16)|0;l=H;C=vfa(C&255|0,0,8)|0;f=o+16|0;c[f>>2]=C|B&255|A|z|y|x|h;c[f+4>>2]=H|l|m|r&255|s|t|k;g=g+20|0}p=p+1<<16>>16;if((p&65535)>=(e[v>>1]|0))break;else o=o+24|0}}$J(q);c[j>>2]=n;C=b[v>>1]|0;i=w;return C|0} -function Zs(f,g,h,i,j,k){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=c[f+4>>2]|0;n=h+-1|0;p=0-o|0;l=n+o&p;r=p&i;if((l|0)>(r|0)){q=c[j+12>>2]|0;m=q&7;if((l|0)!=(r+o|0))return;if((m|0)==4)n=(c[f+8>>2]|0)+((n+i|0)/2|0)&p;else if((m|0)==5|(m|0)==1){if((c[j+28>>2]|0)==(k|0)?(c[j+16>>2]|0)<1:0){if(!(q&16))return;if((i-h|0)<(c[f+8>>2]|0))return}if((c[k+28>>2]|0)==(j|0)?(c[j+20>>2]|0)==(g<<16>>16|0):0){if(!(q&32))return;if((i-h|0)<(c[f+8>>2]|0))return}if((m|0)==1)n=r;else n=(c[f+8>>2]|0)+((n+i|0)/2|0)&p}else if(!m)n=r;else return;m=c[f>>2]|0;if((n|0)<0)o=l;else o=(n>>m|0)<(e[f+56>>1]|0)?n:r;g=((o|0)==(l|0)?r:l)>>m;r=g&7;if(((g|0)>-1?(g|0)<(e[f+56>>1]|0):0)?(d[(c[f+60>>2]|0)+((c[f+148>>2]|0)+(g<<13>>16))>>0]&128>>>r|0)!=0:0)return;else l=o}else m=c[f>>2]|0;m=l>>m;if((m|0)<=-1)return;if((m|0)>=(e[f+56>>1]|0))return;o=m>>>3;n=o&65535;l=f+158|0;o=o<<16>>16;if((b[l>>1]|0)>(o|0))b[l>>1]=n;l=f+160|0;if((b[l>>1]|0)<(o|0))b[l>>1]=n;f=(c[f+60>>2]|0)+((c[f+148>>2]|0)+o)|0;a[f>>0]=d[f>>0]|128>>>(m&7);return}function _s(a){a=a|0;var d=0;d=a+148|0;c[d>>2]=(c[d>>2]|0)+(b[a+156>>1]|0);return}function $s(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0;ga=i;i=i+16|0;ea=ga+14|0;ca=ga+12|0;fa=ga+4|0;aa=ga;ba=ga+8|0;F=f+1024|0;h=c[F>>2]|0;if((h|0)<=-1){ba=0;i=ga;return ba|0}V=f+4|0;W=f+80|0;X=f+76|0;Y=f+28|0;Z=f+40|0;_=f+44|0;$=f+92|0;G=f+87|0;H=f+86|0;I=f+32|0;J=f+36|0;K=f+48|0;L=f+88|0;M=f+84|0;N=f+128|0;O=f+100|0;P=f+96|0;Q=f+140|0;R=f+132|0;S=f+24|0;U=f+8|0;w=g<<24>>24!=0;x=f+136|0;y=f+68|0;z=f+72|0;A=f+180|0;B=f+164|0;C=f+176|0;D=f+172|0;E=f+168|0;g=h;a:while(1){h=c[V>>2]|0;c[W>>2]=da(b[f+(g<<2)+962>>1]|0,h)|0;c[X>>2]=da(b[f+(g<<2)+960>>1]|0,h)|0;g=c[Y>>2]|0;c[Z>>2]=g;c[_>>2]=0;c[$>>2]=0;a[G>>0]=0;a[H>>0]=0;h=(c[I>>2]|0)+-32|0;c[J>>2]=h;c[K>>2]=0;c[L>>2]=g;c[g+8>>2]=g;b[M>>1]=0;b:do if((b[N>>1]|0)>0){r=c[Q>>2]|0;g=c[U>>2]|0;u=0;q=0;while(1){c[O>>2]=0;c[P>>2]=0;s=c[R>>2]|0;o=e[r+(u<<1)>>1]|0;l=s+(o<<3)|0;h=s+(q<<3)|0;k=c[S>>2]|0;j=(c[h>>2]<>2]<>2]<>2]<>2]|0;g=n+q|0;m=a[g>>0]|0;if(m&4){a[A>>0]=(m&255)>>>5;m=a[g>>0]|0}m=m&3;if(!m){if((a[n+o>>0]&3)==1)g=s+(o+-1<<3)|0;else{g=l;j=(j+p|0)/2|0;k=(k+r|0)/2|0}r=q+-1|0;t=g;h=s+(r<<3)|0;g=n+r|0;s=j;r=k}else if((m|0)==2){v=31;break a}else{t=l;s=p}c[y>>2]=s;c[z>>2]=r;c:do if(h>>>0>>0){q=h;p=g;d:while(1){o=q+8|0;n=p+1|0;g=d[n>>0]&3;if((g|0)==1){m=c[S>>2]|0;v=c[U>>2]|0;l=(c[o>>2]<>2]<>24)){k=o;g=n}else{v=86;break b}}else if(!g){k=c[S>>2]|0;g=c[U>>2]|0;v=(c[o>>2]<>2]<>>0>=t>>>0){v=24;break d}p=q+16|0;l=h+2|0;m=d[l>>0]&3;ha=c[S>>2]|0;v=c[U>>2]|0;h=g;g=(c[p>>2]<>2]<>24){v=86;break b}else{h=n;q=o;o=p;n=l}}}else{h=p;while(1){if(o>>>0>=t>>>0){v=24;break d}p=q+16|0;l=h+2|0;m=d[l>>0]&3;ha=c[S>>2]|0;v=c[U>>2]|0;j=k;k=(c[p>>2]<>2]<>24){v=86;break b}else{h=n;q=o;o=p;n=l}}}while(0);if(!((lu(f,j,h,k,g)|0)<<24>>24)){k=o;g=m}else{v=86;break b}}else{if((q+16|0)>>>0>t>>>0){v=31;break a}if((a[p+2>>0]&3)!=2){v=31;break a}m=q+24|0;l=c[S>>2]|0;n=c[U>>2]|0;k=(c[q+8>>2]<>2]<>2]<>2]<>>0>t>>>0){v=29;break}o=(c[m>>2]<>2]<>24)){k=m;g=p+3|0}else{v=86;break b}}if(k>>>0>>0){q=k;p=g}else{v=30;break c}}if((v|0)==24){v=0;if(!((lu(f,k,g,s,r)|0)<<24>>24))break;else{v=86;break b}}else if((v|0)==29){v=0;if(!((mu(f,j,h,k,g,s,r)|0)<<24>>24))break;else{v=86;break b}}}else v=30;while(0);if((v|0)==30?(v=0,(ku(f,s,r)|0)<<24>>24!=0):0){v=86;break b}r=c[Q>>2]|0;n=(e[r+(u<<1)>>1]|0)+1|0;g=c[z>>2]|0;k=c[V>>2]|0;h=k+-1&g;if(((((h|0)==0?(g|0)>=(c[X>>2]|0):0)?(g|0)<=(c[W>>2]|0):0)?(T=c[P>>2]|0,(T|0)!=0):0)?((c[(c[L>>2]|0)+12>>2]^c[T+12>>2])&8|0)==0:0)c[Z>>2]=(c[Z>>2]|0)+-4;o=c[L>>2]|0;j=o+12|0;m=c[j>>2]|0;l=(m&8|0)==0;if(l){h=c[U>>2]|0;p=h;h=((g+-1+k&0-k)-g|0)>=(h|0)}else{t=c[U>>2]|0;p=t;h=(h|0)>=(t|0)}g=c[Z>>2]|0;k=g-(c[o+8>>2]|0)|0;if((k|0)<0){v=42;break a}if((k|0)>0){c[o+16>>2]=k>>2;do if(h)if(l){c[j>>2]=m|32;break}else{c[j>>2]=m|16;break}while(0);c[L>>2]=g;t=g+32|0;c[Z>>2]=t;c[g+16>>2]=0;c[g+8>>2]=t;c[o+28>>2]=g;b[M>>1]=(b[M>>1]|0)+1<<16>>16;g=t}h=c[J>>2]|0;if(g>>>0>=h>>>0){v=50;break}a[G>>0]=0;k=c[P>>2]|0;if(k)c[o+28>>2]=k;u=u+1|0;if((u|0)>=(b[N>>1]|0))break;else{g=p;q=n&65535}}if((v|0)==50){c[_>>2]=98;v=87;break}j=b[M>>1]|0;k=c[$>>2]|0;if((j&65535)>1&(k|0)!=0)if(j<<16>>16){q=c[I>>2]|0;while(1){h=c[k+16>>2]|0;if((j&65535)>1)n=(c[k+8>>2]|0)+(h<<2)|0;else n=0;c[k+4>>2]=n;g=k+20|0;l=c[g>>2]|0;if(!(c[k+12>>2]&8)){v=l-h+1|0;c[g>>2]=v;g=k+8|0;c[g>>2]=(c[g>>2]|0)+(h+-1<<2);g=v}else{g=l;l=h+-1+l|0}o=c[K>>2]|0;m=o;while(1){k=m+-1|0;if((m|0)<=0){v=68;break}h=c[q+(k-o<<2)>>2]|0;if((h|0)>(g|0))m=k;else{v=65;break}}if((v|0)==65)if((h|0)<(g|0)){h=g;while(1){v=q+(k-o<<2)|0;g=c[v>>2]|0;c[v>>2]=h;if((k|0)>0){h=g;k=k+-1|0}else break}if((0-m|0)>-1){k=m+-2|0;v=68}else v=69}else v=68;if((v|0)==68){v=0;if((k|0)<0)v=69}if((v|0)==69){v=(c[J>>2]|0)+-4|0;c[J>>2]=v;if(v>>>0<=(c[Z>>2]|0)>>>0){v=71;break}v=o+1|0;c[K>>2]=v;c[q+(~o<<2)>>2]=g;o=v}g=l+1|0;p=c[I>>2]|0;m=o;while(1){k=m+-1|0;if((m|0)<=0){v=78;break}h=c[p+(k-o<<2)>>2]|0;if((h|0)>(g|0))m=k;else{v=75;break}}if((v|0)==75)if((h|0)<(g|0)){h=g;while(1){v=p+(k-o<<2)|0;g=c[v>>2]|0;c[v>>2]=h;if((k|0)>0){h=g;k=k+-1|0}else break}if((0-m|0)>-1){k=m+-2|0;v=78}else v=79}else v=78;if((v|0)==78?(v=0,(k|0)<0):0)v=79;if((v|0)==79){v=(c[J>>2]|0)+-4|0;c[J>>2]=v;if(v>>>0<=(c[Z>>2]|0)>>>0){v=81;break}c[K>>2]=o+1;c[p+(~o<<2)>>2]=g}j=j+-1<<16>>16;if(!(j<<16>>16)){v=84;break}else k=n}if((v|0)==71){c[_>>2]=98;v=87;break}else if((v|0)==81){c[_>>2]=98;v=87;break}else if((v|0)==84){g=c[Z>>2]|0;h=c[J>>2]|0;v=85;break}}else v=85;else v=83}else v=83;while(0);if((v|0)==83){c[$>>2]=0;v=85}if((v|0)==85){v=0;if(g>>>0>>0){g=c[$>>2]|0;if(g){c[fa>>2]=0;c[aa>>2]=0;c[ba>>2]=0;m=c[f>>2]|0;l=c[X>>2]>>m&65535;b[ca>>1]=l;m=c[W>>2]>>m&65535;b[ea>>1]=m;while(1){p=g+4|0;n=g;g=c[p>>2]|0;k=c[n+20>>2]|0;h=k+65535+(c[n+16>>2]|0)|0;j=h&65535;if((m<<16>>16|0)>(k<<16>>16|0)){o=k&65535;b[ea>>1]=o}else o=m;if((l<<16>>16|0)<(h<<16>>16|0))b[ca>>1]=j;else j=l;c[n>>2]=0;k=c[fa>>2]|0;f:do if(!k){h=fa;k=0}else{m=fa;while(1){h=k+4|0;if((c[k>>2]|0)>0){h=m;break f}k=c[h>>2]|0;if(!k){k=0;break}else m=h}}while(0);c[p>>2]=k;c[h>>2]=n;if(!g)break;else{m=o;l=j}}if(!(c[K>>2]|0)){v=102;break}Ud[c[B>>2]&255](f,ea,ca);j=c[fa>>2]|0;g=b[ea>>1]|0;if(j){k=g&65535;h=j;do{c[h+24>>2]=(c[h+20>>2]|0)-k&65535;h=c[h+4>>2]|0}while((h|0)!=0)}h=c[K>>2]|0;g:do if((h|0)>0){if((c[(c[I>>2]|0)+(0-h<<2)>>2]|0)==(g<<16>>16|0)){h=h+-1|0;c[K>>2]=h;if((h|0)>0)q=0;else break}else q=0;while(1){if(j)do{p=j+4|0;n=j;j=c[p>>2]|0;t=n+24|0;u=c[t>>2]|0;c[t>>2]=u-q;do if((u|0)==(q|0)){k=fa;while(1){l=c[k>>2]|0;if(!l)break;m=l+4|0;if((l|0)==(n|0)){v=116;break}else k=m}if((v|0)==116){v=0;c[k>>2]=c[m>>2]}o=c[n>>2]|0;if(!(c[n+12>>2]&8)){k=c[ba>>2]|0;h:do if(!k){m=ba;k=0}else{l=ba;while(1){m=k+4|0;if((o|0)<(c[k>>2]|0)){m=l;break h}k=c[m>>2]|0;if(!k){k=0;break}else l=m}}while(0);c[p>>2]=k;c[m>>2]=n;break}else{k=c[aa>>2]|0;i:do if(!k){m=aa;k=0}else{l=aa;while(1){m=k+4|0;if((o|0)<(c[k>>2]|0)){m=l;break i}k=c[m>>2]|0;if(!k){k=0;break}else l=m}}while(0);c[p>>2]=k;c[m>>2]=n;break}}while(0)}while((j|0)!=0);j=c[aa>>2]|0;if(j){k=j;do{u=k+8|0;t=c[u>>2]|0;c[k>>2]=c[t>>2];c[u>>2]=t+(((c[k+12>>2]|0)>>>2&2)+-1<<2);u=k+16|0;c[u>>2]=(c[u>>2]|0)+-1;k=c[k+4>>2]|0}while((k|0)!=0);k=j+4|0;m=c[k>>2]|0;if(m){l=aa;do{if((c[j>>2]|0)>(c[m>>2]|0)){c[l>>2]=m;l=m+4|0;c[k>>2]=c[l>>2];c[l>>2]=j;j=c[aa>>2]|0;l=aa}else{j=m;l=k}k=j+4|0;m=c[k>>2]|0}while((m|0)!=0)}}j=c[ba>>2]|0;if(j){k=j;do{u=k+8|0;t=c[u>>2]|0;c[k>>2]=c[t>>2];c[u>>2]=t+(((c[k+12>>2]|0)>>>2&2)+-1<<2);u=k+16|0;c[u>>2]=(c[u>>2]|0)+-1;k=c[k+4>>2]|0}while((k|0)!=0);m=j+4|0;n=c[m>>2]|0;if(!n)k=j;else{k=j;l=j;j=ba;do{if((c[l>>2]|0)>(c[n>>2]|0)){c[j>>2]=n;k=n+4|0;c[m>>2]=c[k>>2];c[k>>2]=l;l=c[ba>>2]|0;k=l;j=ba}else{l=n;j=m}m=l+4|0;n=c[m>>2]|0}while((n|0)!=0)}}else k=0;c[K>>2]=h+-1;t=c[(c[I>>2]|0)+(0-h<<2)>>2]<<16>>16;u=t-(g&65535)|0;j:do if((g<<16>>16|0)<(t|0))k:while(1){s=c[aa>>2]|0;r=(s|0)==0;do if(!r){q=s;j=ba;h=0;while(1){p=c[j>>2]|0;l=c[q>>2]|0;m=c[p>>2]|0;o=(l|0)>(m|0);j=o?m:l;m=o?l:m;l=c[V>>2]|0;o=0-l|0;n=j&o;o=l+-1+m&o;do if((m-j|0)>(l|0)|(n|0)==(j|0)|(o|0)==(m|0))v=145;else{if(!((n|0)>(o|0)|(o|0)==(n+l|0))){v=145;break}if((c[q+12>>2]&7|0)==2)break;c[q>>2]=j;c[p>>2]=m;c[q+24>>2]=1;h=h+1<<16>>16}while(0);if((v|0)==145){v=0;Kd[c[E>>2]&31](f,g,j,m,q,p)}q=c[q+4>>2]|0;if(!q)break;else j=p+4|0}if(h<<16>>16<1)break;else{m=s;h=ba}while(1){j=c[h>>2]|0;h=m+24|0;if(c[h>>2]|0){c[h>>2]=0;Kd[c[D>>2]&31](f,g,c[m>>2]|0,c[j>>2]|0,m,j)}m=c[m+4>>2]|0;if(!m)break;else h=j+4|0}}while(0);Bd[c[C>>2]&511](f);g=g+1<<16>>16;if((g<<16>>16|0)>=(t|0))break j;do if(r)h=k;else{h=s;do{r=h+8|0;q=c[r>>2]|0;c[h>>2]=c[q>>2];c[r>>2]=q+(((c[h+12>>2]|0)>>>2&2)+-1<<2);r=h+16|0;c[r>>2]=(c[r>>2]|0)+-1;h=c[h+4>>2]|0}while((h|0)!=0);h=s+4|0;j=c[h>>2]|0;if(!j){h=k;break}else{k=s;m=h;h=aa}do{if((c[k>>2]|0)>(c[j>>2]|0)){c[h>>2]=j;h=j+4|0;c[m>>2]=c[h>>2];c[h>>2]=k;k=c[aa>>2]|0;h=aa}else{k=j;h=m}m=k+4|0;j=c[m>>2]|0}while((j|0)!=0);h=c[ba>>2]|0}while(0);if(!h){k=0;continue}else k=h;do{s=k+8|0;r=c[s>>2]|0;c[k>>2]=c[r>>2];c[s>>2]=r+(((c[k+12>>2]|0)>>>2&2)+-1<<2);s=k+16|0;c[s>>2]=(c[s>>2]|0)+-1;k=c[k+4>>2]|0}while((k|0)!=0);j=h+4|0;m=c[j>>2]|0;if(!m){k=h;continue}else{k=h;l=h;h=ba}while(1){if((c[l>>2]|0)>(c[m>>2]|0)){c[h>>2]=m;k=m+4|0;c[j>>2]=c[k>>2];c[k>>2]=l;l=c[ba>>2]|0;k=l;h=ba}else{l=m;h=j}j=l+4|0;m=c[j>>2]|0;if(!m)continue k}}while(0);h=c[aa>>2]|0;if(h)do{l=h;h=c[h+4>>2]|0;l:do if(!(c[l+16>>2]|0)){k=aa;while(1){m=c[k>>2]|0;if(!m)break l;j=m+4|0;if((m|0)==(l|0))break;else k=j}c[k>>2]=c[j>>2]}while(0)}while((h|0)!=0);h=c[ba>>2]|0;if(h)do{l=h;h=c[h+4>>2]|0;m:do if(!(c[l+16>>2]|0)){k=ba;while(1){m=c[k>>2]|0;if(!m)break m;j=m+4|0;if((m|0)==(l|0))break;else k=j}c[k>>2]=c[j>>2]}while(0)}while((h|0)!=0);h=c[K>>2]|0;if((h|0)<=0)break g;j=c[fa>>2]|0;q=u<<16>>16}}while(0);if(g<<16>>16<=(b[ca>>1]|0))do{Bd[c[C>>2]&511](f);g=g+1<<16>>16}while(g<<16>>16<=(b[ca>>1]|0))}g=(c[F>>2]|0)+-1|0}else v=86}if((v|0)==86)if((c[_>>2]|0)==98)v=87;else{g=1;v=180;break}if((v|0)==87){c[_>>2]=0;g=c[F>>2]|0;h=b[f+(g<<2)+962>>1]|0;j=b[f+(g<<2)+960>>1]|0;k=((h<<16>>16)+j|0)/2|0;if((g|0)>6){v=89;break}l=k<<16>>16;if((l|0)<(j|0)){v=89;break}b[f+(g+1<<2)+960>>1]=k;b[f+((c[F>>2]|0)+1<<2)+962>>1]=h;b[f+(c[F>>2]<<2)+962>>1]=l+65535;g=(c[F>>2]|0)+1|0}c[F>>2]=g;if((g|0)<=-1){g=0;v=180;break}}if((v|0)==31){c[_>>2]=20;ba=1;i=ga;return ba|0}else if((v|0)==42){c[_>>2]=99;ba=1;i=ga;return ba|0}else if((v|0)==89){c[F>>2]=0;c[_>>2]=20;ba=20;i=ga;return ba|0}else if((v|0)==102){c[_>>2]=20;ba=20;i=ga;return ba|0}else if((v|0)==180){i=ga;return g|0}return 0}function at(a,b,c){a=a|0;b=b|0;c=c|0;return}function bt(b,e,f,g,h,i){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;h=c[b+4>>2]|0;if((g-f|0)>=(h|0))return;i=0-h|0;h=f+-1+h&i;if((h|0)!=(i&g|0))return;g=e<<16>>16;h=h>>c[b>>2];if((h|0)<=-1)return;i=c[b+104>>2]|0;if((h|0)>=(i|0))return;f=c[b+112>>2]|0;h=(g>>3)-(da(f,h)|0)|0;if((f|0)>0)h=h+(da(f,i+-1|0)|0)|0;b=(c[b+60>>2]|0)+h|0;a[b>>0]=d[b>>0]|0|128>>>(g&7);return}function ct(b,e,f,g,h,i){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=c[b+4>>2]|0;k=f+-1|0;l=0-j|0;p=k+j&l;o=l&g;if((p|0)>(o|0)){n=c[h+12>>2]|0;m=n&7;if((p|0)!=(o+j|0))return;if(!m)j=o;else if((m|0)==4)j=(c[b+8>>2]|0)+((k+g|0)/2|0)&l;else if((m|0)==5|(m|0)==1){if((c[h+28>>2]|0)==(i|0)?(c[h+16>>2]|0)<1:0){if(!(n&16))return;if((g-f|0)<(c[b+8>>2]|0))return}if((c[i+28>>2]|0)==(h|0)?(c[h+20>>2]|0)==(e<<16>>16|0):0){if(!(n&32))return;if((g-f|0)<(c[b+8>>2]|0))return}if((m|0)==1)j=o;else j=(c[b+8>>2]|0)+((k+g|0)/2|0)&l}else return;g=c[b>>2]|0;if((j|0)<0)j=p;else j=(j>>g|0)<(c[b+104>>2]|0)?j:o;n=((j|0)==(p|0)?o:p)>>g;f=c[b+60>>2]|0;i=e<<16>>16;m=i>>3;i=128>>>(i&7);h=b+104|0;l=c[b+112>>2]|0;k=m-(da(n,l)|0)|0;if((l|0)>0)k=(da((c[h>>2]|0)+-1|0,l)|0)+k|0;p=f+k|0;if(((n|0)>-1?(n|0)<(c[h>>2]|0):0)?(i&(d[p>>0]|0)|0)!=0:0)return;else{k=g;n=f}}else{i=e<<16>>16;m=i>>3;i=128>>>(i&7);k=c[b>>2]|0;n=c[b+60>>2]|0;j=p}j=j>>k;if((j|0)<=-1)return;l=c[b+104>>2]|0;if((j|0)>=(l|0))return;k=c[b+112>>2]|0;j=m-(da(k,j)|0)|0;if((k|0)>0)j=j+(da(k,l+-1|0)|0)|0;b=n+j|0;a[b>>0]=d[b>>0]|0|i;return}function dt(a){a=a|0;return}function et(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;f=c[a+16>>2]|0;w=(d[f+7>>0]|0)&254|(d[f+6>>0]|0)<<8;t=w>>>1;if(!t){x=0;return x|0}u=e<<24>>24==0;g=(c[b>>2]|0)+(u&1^1)|0;if(g>>>0>=65536){x=0;return x|0}v=f+14|0;r=f+(w+16)|0;q=w|1;n=w<<1;o=n|1;s=t+-1|0;p=n|2;while(1){m=0;f=v;h=r;while(1){k=(d[f>>0]|0)<<8|(d[f+1>>0]|0);j=(d[h>>0]|0)<<8|(d[h+1>>0]|0);if(!(g>>>0>>0|g>>>0>k>>>0)){f=((d[h+w>>0]|0)<<8|(d[h+q>>0]|0))<<16>>16;l=h+n|0;i=(d[l>>0]|0)<<8|(d[h+o>>0]|0);if(m>>>0>=s>>>0&(j|0)==65535&(k|0)==65535){k=c[a>>2]|0;if(!i){x=12;break}k=(h+(p+i)|0)>>>0>((c[k+496>>2]|0)+(c[k+500>>2]|0)|0)>>>0;f=k?1:f;i=k?0:i}if(!i){x=12;break}else if((i|0)==65535)f=l;else{x=10;break}}else f=f+2|0;h=h+2|0;m=m+1|0;if(m>>>0>=t>>>0){f=0;break}}if((x|0)==10){x=0;l=(g-j<<1)+n+i|0;h=(d[h+l>>0]|0)<<8|(d[h+(l+1)>>0]|0);if(!h)f=0;else f=h+f&65535}else if((x|0)==12){x=0;f=f+g&65535}if(u|(f|0)!=0)break;g=g+1|0;if(g>>>0>=65536){f=0;x=18;break}}if((x|0)==18)return f|0;if(!(e<<24>>24!=0&(f|0)!=0)){x=f;return x|0}c[b>>2]=g;x=f;return x|0}function ft(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;x=c[a+16>>2]|0;w=(d[x+7>>0]|0)&254|(d[x+6>>0]|0)<<8;if(!w){b=0;return b|0}z=w>>>1;y=e<<24>>24!=0;f=(c[b>>2]|0)+(y&1)|0;v=w+2|0;e=65535;i=z;g=z;k=0;a:while(1){while(1){if(k>>>0>=i>>>0){h=e;e=0;break a}g=(i+k|0)>>>1;h=g<<1;e=h+14|0;h=(d[x+e>>0]|0)<<8|(d[x+(h+15)>>0]|0);e=e+v|0;j=(d[x+e>>0]|0)<<8|(d[x+(e|1)>>0]|0);if(f>>>0>=j>>>0)break;else{e=h;i=g}}k=g+1|0;if(f>>>0>h>>>0)e=h;else{u=g;m=h;t=k;l=7;break}}do if((l|0)==7){e=e+w|0;r=((d[x+e>>0]|0)<<8|(d[x+(e|1)>>0]|0))<<16>>16;e=e+w|0;h=x+e|0;s=(d[h>>0]|0)<<8|(d[x+(e|1)>>0]|0);if(u>>>0>=(z+-1|0)>>>0&(j|0)==65535&(m|0)==65535){g=c[a>>2]|0;if(!s){k=r;i=0}else{i=(x+(e+2+s)|0)>>>0>((c[g+496>>2]|0)+(c[g+500>>2]|0)|0)>>>0;k=i?1:r;i=i?0:s}}else{k=r;i=s}e=(i|0)==65535;if(!(c[a+20>>2]&2))if(e){h=m;e=0;g=u;break}else{g=u;e=j}else{g=e?t:u;b:do if(!u){o=m;n=0;e=j}else{p=m;q=u;e=j;while(1){n=q;q=q+-1|0;o=q<<1;l=o+14|0;o=(d[x+l>>0]|0)<<8|(d[x+(o+15)>>0]|0);if(f>>>0>o>>>0){o=p;break b}i=l+v|0;e=(d[x+i>>0]|0)<<8|(d[x+(i|1)>>0]|0);i=i+w|0;k=((d[x+i>>0]|0)<<8|(d[x+(i|1)>>0]|0))<<16>>16;i=i+w|0;h=x+i|0;i=(d[h>>0]|0)<<8|(d[x+(i|1)>>0]|0);g=(i|0)==65535?g:q;if(!q){n=0;break}else p=o}}while(0);if((g|0)==(t|0)){l=(n|0)==(u|0);h=l?o:m;if(t>>>0>>0){o=l?k:r;m=h;p=t;g=u;i=l?i:s;n=l?e:j}else{e=0;g=u;break}while(1){k=p<<1;j=k+14|0;l=j+v|0;h=x+l|0;e=(d[h>>0]|0)<<8|(d[x+(l|1)>>0]|0);if(f>>>0>>0){j=o;k=p;e=n;break}m=(d[x+j>>0]|0)<<8|(d[x+(k+15)>>0]|0);i=l+w|0;j=((d[x+i>>0]|0)<<8|(d[x+(i|1)>>0]|0))<<16>>16;i=i+w|0;h=x+i|0;i=(d[h>>0]|0)<<8|(d[x+(i|1)>>0]|0);g=(i|0)==65535?g:p;k=p+1|0;if(k>>>0>>0){o=j;p=k;n=e}else break}k=k+-1|0;if((g|0)==(u|0)){h=m;e=0;g=k;break}}else{j=k;m=o;k=n}if((g|0)==(k|0))k=j;else{m=g<<1;u=m+14|0;e=u+v|0;k=e+w|0;i=k+w|0;h=x+i|0;k=((d[x+k>>0]|0)<<8|(d[x+(k|1)>>0]|0))<<16>>16;m=(d[x+u>>0]|0)<<8|(d[x+(m+15)>>0]|0);i=(d[h>>0]|0)<<8|(d[x+(i|1)>>0]|0);e=(d[x+e>>0]|0)<<8|(d[x+(e|1)>>0]|0)}}if(!i){h=m;e=k+f&65535;break}e=(f-e<<1)+i|0;e=(d[h+e>>0]|0)<<8|(d[h+(e+1)>>0]|0);if(!e){h=m;e=0}else{h=m;e=e+k&65535}}while(0);if(!y){b=e;return b|0}if(f>>>0>h>>>0){g=g+1|0;if((g|0)==(z|0)){b=0;return b|0}}if(nu(a,g)|0){if(!e){b=0;return b|0}c[b>>2]=f;b=e;return b|0}g=a+24|0;c[g>>2]=f;if(!e){c[g>>2]=f;gt(a);e=c[a+28>>2]|0}else c[a+28>>2]=e;if(!e){b=0;return b|0}c[b>>2]=c[g>>2];b=e;return b|0}function gt(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=a+24|0;b=c[p>>2]|0;a:do if(b>>>0<=65534){g=b+1|0;l=a+40|0;j=c[l>>2]|0;m=a+52|0;n=a+44|0;o=a+48|0;k=a+36|0;h=j;g=g>>>0>>0?j:g;b:while(1){f=c[m>>2]|0;i=c[n>>2]|0;j=c[o>>2]|0;c:do if(g>>>0>i>>>0)b=g;else{if(!f){b=g;while(1){f=b+j&65535;if(f){e=f;f=11;break b}b=b+1|0;if(b>>>0>i>>>0)break c}}b=g;g=f+(g-h<<1)|0;do{f=(d[g>>0]|0)<<8|(d[g+1>>0]|0);g=g+2|0;if((f|0)!=0?(e=f+j&65535,(e|0)!=0):0){f=8;break b}b=b+1|0}while(b>>>0<=i>>>0)}while(0);if((nu(a,(c[k>>2]|0)+1|0)|0)<0)break a;g=c[l>>2]|0;h=g;g=b>>>0>>0?g:b}if((f|0)==8){c[p>>2]=b;c[a+28>>2]=e;return}else if((f|0)==11){c[p>>2]=b;c[a+28>>2]=e;return}}while(0);c[p>>2]=-1;c[a+28>>2]=0;return}function ht(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=c[b+16>>2]|0;o=d[l+13>>0]<<16|d[l+12>>0]<<24|d[l+14>>0]<<8|d[l+15>>0];if(!o){e=0;return e|0}m=f<<24>>24!=0;p=(c[e>>2]|0)+(m&1)|0;k=o;f=0;a:while(1){while(1){g=(f+k|0)>>>1;h=g*12|0;j=d[l+(h+17)>>0]<<16|d[l+(h+16)>>0]<<24|d[l+(h+18)>>0]<<8|d[l+(h+19)>>0];i=d[l+(h+21)>>0]<<16|d[l+(h+20)>>0]<<24|d[l+(h+22)>>0]<<8|d[l+(h+23)>>0];if(p>>>0>>0)break;f=g+1|0;if(p>>>0<=i>>>0){f=j;n=8;break a}if(f>>>0>=k>>>0){f=0;break a}}if(f>>>0>>0)k=g;else{f=0;break}}if((n|0)==8)f=p-f+(d[l+(h+25)>>0]<<16|d[l+(h+24)>>0]<<24|d[l+(h+26)>>0]<<8|d[l+(h+27)>>0])|0;if(!m){e=f;return e|0}if(p>>>0>i>>>0){g=g+1|0;if((g|0)==(o|0)){e=0;return e|0}}h=b+24|0;a[h>>0]=1;i=b+28|0;c[i>>2]=p;c[b+36>>2]=g;do if(!f){it(b);if(!(a[h>>0]|0)){e=0;return e|0}else{f=c[b+32>>2]|0;break}}else c[b+32>>2]=f;while(0);if(!f){e=0;return e|0}c[e>>2]=c[i>>2];e=f;return e|0}function it(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=b+28|0;e=c[n>>2]|0;a:do if((e|0)!=-1?(o=b+36|0,f=c[o>>2]|0,m=c[b+40>>2]|0,f>>>0>>0):0){l=c[b+16>>2]|0;e=e+1|0;b:while(1){k=f*12|0;h=(d[l+(k+17)>>0]|0)<<16|(d[l+(k+16)>>0]|0)<<24|(d[l+(k+18)>>0]|0)<<8|(d[l+(k+19)>>0]|0);j=(d[l+(k+21)>>0]|0)<<16|(d[l+(k+20)>>0]|0)<<24|(d[l+(k+22)>>0]|0)<<8|(d[l+(k+23)>>0]|0);k=(d[l+(k+25)>>0]|0)<<16|(d[l+(k+24)>>0]|0)<<24|(d[l+(k+26)>>0]|0)<<8|(d[l+(k+27)>>0]|0);e=e>>>0>>0?h:e;if(e>>>0<=j>>>0){g=e;while(1){i=g+k|0;e=g+1|0;if((i|0)!=(h|0)){e=f;break b}if(e>>>0>j>>>0)break;else g=e}}f=f+1|0;if(f>>>0>=m>>>0)break a}c[n>>2]=g;c[b+32>>2]=i-h;c[o>>2]=e;return}while(0);a[b+24>>0]=0;return}function jt(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=c[b+16>>2]|0;n=d[k+13>>0]<<16|d[k+12>>0]<<24|d[k+14>>0]<<8|d[k+15>>0];if(!n){e=0;return e|0}l=f<<24>>24!=0;o=(c[e>>2]|0)+(l&1)|0;j=n;f=0;a:while(1){while(1){g=(f+j|0)>>>1;h=g*12|0;i=d[k+(h+21)>>0]<<16|d[k+(h+20)>>0]<<24|d[k+(h+22)>>0]<<8|d[k+(h+23)>>0];if(o>>>0<(d[k+(h+17)>>0]<<16|d[k+(h+16)>>0]<<24|d[k+(h+18)>>0]<<8|d[k+(h+19)>>0])>>>0)break;f=g+1|0;if(o>>>0<=i>>>0){f=i;m=8;break a}if(f>>>0>=j>>>0){f=0;break a}}if(f>>>0>>0)j=g;else{f=0;break}}if((m|0)==8){i=f;f=d[k+(h+25)>>0]<<16|d[k+(h+24)>>0]<<24|d[k+(h+26)>>0]<<8|d[k+(h+27)>>0]}if(!l){e=f;return e|0}if(o>>>0>i>>>0){g=g+1|0;if((g|0)==(n|0)){e=0;return e|0}}h=b+24|0;a[h>>0]=1;i=b+28|0;c[i>>2]=o;c[b+36>>2]=g;do if(!f){kt(b);if(!(a[h>>0]|0)){e=0;return e|0}else{f=c[b+32>>2]|0;break}}else c[b+32>>2]=f;while(0);if(!f){e=0;return e|0}c[e>>2]=c[i>>2];e=f;return e|0}function kt(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=b+28|0;e=c[k>>2]|0;a:do if((e|0)!=-1?(l=b+36|0,f=c[l>>2]|0,j=c[b+40>>2]|0,f>>>0>>0):0){i=c[b+16>>2]|0;g=e+1|0;h=f;while(1){m=h*12|0;e=(d[i+(m+17)>>0]|0)<<16|(d[i+(m+16)>>0]|0)<<24|(d[i+(m+18)>>0]|0)<<8|(d[i+(m+19)>>0]|0);f=(d[i+(m+25)>>0]|0)<<16|(d[i+(m+24)>>0]|0)<<24|(d[i+(m+26)>>0]|0)<<8|(d[i+(m+27)>>0]|0);g=g>>>0>>0?e:g;e=h;h=h+1|0;if(!((f|0)==0?1:g>>>0>((d[i+(m+21)>>0]|0)<<16|(d[i+(m+20)>>0]|0)<<24|(d[i+(m+22)>>0]|0)<<8|(d[i+(m+23)>>0]|0))>>>0))break;if(h>>>0>=j>>>0)break a}c[k>>2]=g;c[b+32>>2]=f;c[l>>2]=e;return}while(0);a[b+24>>0]=0;return}function lt(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=ou(e)|0;g=a[e>>0]|0;h=a[e+1>>0]|0;i=a[e+2>>0]|0;j=a[e+3>>0]|0;if(pu(b,k+1|0,f)|0){k=0;return k|0}g=(h&255)<<16|(g&255)<<24|(i&255)<<8|j&255;l=c[b+32>>2]|0;if(!g)g=l;else{k=g;f=e;g=l;do{b=f;f=f+4|0;j=d[b+7>>0]|0;h=j+1|0;i=g;b=(d[b+5>>0]|0)<<8|(d[f>>0]|0)<<16|(d[b+6>>0]|0);while(1){c[i>>2]=b;h=h+-1|0;if(!h)break;else{i=i+4|0;b=b+1|0}}g=g+(j+1<<2)|0;k=k+-1|0}while((k|0)!=0)}c[g>>2]=0;k=l;return k|0}function mt(a,b){a=a|0;b=b|0;var d=0;d=c[(c[a>>2]|0)+4>>2]|0;a=c[(c[b>>2]|0)+4>>2]|0;if(d>>>0>a>>>0){b=1;return b|0}b=(d>>>0>>0)<<31>>31;return b|0}function nt(a){a=a|0;Ag(c[a+28>>2]|0,c[a>>2]|0);c[a+4>>2]=0;c[a>>2]=0;c[a+24>>2]=0;return}function ot(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;t=u;s=c[a+100>>2]|0;c[t>>2]=0;q=a+356|0;n=b[a+340>>1]|0;if(!(n<<16>>16)){s=0;c[f>>2]=s;f=c[t>>2]|0;i=u;return f|0}h=-1;g=-1;j=-1;m=-1;o=0;k=0;p=c[q>>2]|0;while(1){do if((b[p+6>>1]|0)==d<<16>>16?(b[p+8>>1]|0)!=0:0){l=e[p>>1]|0;if((l|0)==3){if((m|0)!=-1?(b[p+4>>1]&1023)!=9:0)break;l=e[p+2>>1]|0;if(!((l|0)==10|(l|0)==1|(l|0)==0))break;m=o;k=(b[p+4>>1]&1023)==9&1;break}else if((l|0)==1){if(!(b[p+4>>1]|0)){h=o;break}g=(b[p+2>>1]|0)==0?o:g;break}else if((l|0)==2|(l|0)==0){j=o;break}else break}while(0);o=o+1|0;if((o&65535)>=(n&65535))break;else p=p+20|0}g=(h|0)>-1?h:g;if((m|0)>-1?(g|0)<0|k<<24>>24!=0:0){g=c[q>>2]|0;q=e[g+(m*20|0)+2>>1]|0;if((q|0)==10|(q|0)==0|(q|0)==1){l=200;k=g+(m*20|0)|0}else{s=0;c[f>>2]=s;f=c[t>>2]|0;i=u;return f|0}}else r=17;do if((r|0)==17){if((g|0)>-1){l=201;k=(c[q>>2]|0)+(g*20|0)|0;break}if((j|0)>-1){l=200;k=(c[q>>2]|0)+(j*20|0)|0;break}else{s=0;c[f>>2]=s;f=c[t>>2]|0;i=u;return f|0}}while(0);if(!k){s=0;c[f>>2]=s;f=c[t>>2]|0;i=u;return f|0}j=k+16|0;do if(!(c[j>>2]|0)){g=c[a+360>>2]|0;h=k+8|0;c[j>>2]=Dg(s,1,0,e[h>>1]|0,0,t)|0;if(((c[t>>2]|0)==0?(a=bh(g,c[k+12>>2]|0)|0,c[t>>2]=a,(a|0)==0):0)?(a=Lh(g,c[j>>2]|0,e[h>>1]|0)|0,c[t>>2]=a,(a|0)==0):0)break;Ag(s,c[j>>2]|0);c[j>>2]=0;b[h>>1]=0;s=0;c[f>>2]=s;f=c[t>>2]|0;i=u;return f|0}while(0);s=Pd[l&511](k,s)|0;c[f>>2]=s;f=c[t>>2]|0;i=u;return f|0}function pt(a){a=a|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0;I=i;i=i+224|0;F=4;G=qea(40)|0;c[G>>2]=0;A=I+220|0;B=I+216|0;v=I+204|0;x=I+200|0;z=I+196|0;C=I+192|0;w=I+184|0;E=I+8|0;y=I;D=I+188|0;q=c[a+496>>2]|0;r=a+500|0;u=q+(c[r>>2]|0)|0;c[B>>2]=q;if(!(c[B>>2]|0)){rea(G|0);i=I;return}if(((c[B>>2]|0)+4|0)>>>0>u>>>0){rea(G|0);i=I;return}c[B>>2]=(c[B>>2]|0)+2;f=c[B>>2]|0;if(d[(c[B>>2]|0)+-1>>0]|0|(d[(c[B>>2]|0)+-2>>0]|0)<<8){c[B>>2]=f+-2;rea(G|0);i=I;return}c[B>>2]=f+2;c[A>>2]=d[(c[B>>2]|0)+-1>>0]|0|(d[(c[B>>2]|0)+-2>>0]|0)<<8;if(!(c[A>>2]|0)){rea(G|0);i=I;return}j=v+8|0;k=v+10|0;l=v+4|0;m=a+264|0;n=E+172|0;o=E+16|0;p=E+12|0;while(1){if(((c[B>>2]|0)+8|0)>>>0>u>>>0){f=25;break}c[B>>2]=(c[B>>2]|0)+2;b[j>>1]=d[(c[B>>2]|0)+-1>>0]|0|(d[(c[B>>2]|0)+-2>>0]|0)<<8;c[B>>2]=(c[B>>2]|0)+2;b[k>>1]=d[(c[B>>2]|0)+-1>>0]|0|(d[(c[B>>2]|0)+-2>>0]|0)<<8;c[v>>2]=a;c[l>>2]=0;c[B>>2]=(c[B>>2]|0)+4;f=(d[(c[B>>2]|0)+-3>>0]|0)<<16|(d[(c[B>>2]|0)+-4>>0]|0)<<24|(d[(c[B>>2]|0)+-2>>0]|0)<<8|(d[(c[B>>2]|0)+-1>>0]|0);if((f|0)!=0?f>>>0<=((c[r>>2]|0)+-2|0)>>>0:0){c[x>>2]=q+f;c[z>>2]=d[(c[x>>2]|0)+1>>0]|0|(d[c[x>>2]>>0]|0)<<8;c[C>>2]=84512;a:do if(c[c[C>>2]>>2]|0){while(1){c[w>>2]=c[c[C>>2]>>2];if((c[(c[w>>2]|0)+40>>2]|0)==(c[z>>2]|0))break;c[C>>2]=(c[C>>2]|0)+4;if(!(c[c[C>>2]>>2]|0))break a}c[y>>2]=0;s=0;Ha(21,E|0,c[x>>2]|0,u|0,0);f=s;s=0;if((f|0)!=0&(t|0)!=0){g=Cfa(c[f>>2]|0,G|0,F|0)|0;if(!g)Ua(f|0,t|0);H=t}else g=-1;if((g|0)!=1){c[n>>2]=e[m>>1];G=Afa(o,1,G|0,F|0)|0;F=H;s=0;f=s;s=0;if((f|0)!=0&(t|0)!=0){g=Cfa(c[f>>2]|0,G|0,F|0)|0;if(!g)Ua(f|0,t|0);H=t}else g=-1;if((g|0)!=1)f=0;else f=H}else f=H;while(1){if(!f){s=0;f=ya(c[(c[w>>2]|0)+44>>2]|0,c[x>>2]|0,E|0)|0;g=s;s=0;if((g|0)!=0&(t|0)!=0){h=Cfa(c[g>>2]|0,G|0,F|0)|0;if(!h)Ua(g|0,t|0);H=t}else h=-1;if((h|0)==1){f=H;continue}c[y>>2]=f}if(c[p>>2]|0)break a;s=0;f=Ga(73,c[w>>2]|0,c[x>>2]|0,v|0,D|0)|0;g=s;s=0;if((g|0)!=0&(t|0)!=0){h=Cfa(c[g>>2]|0,G|0,F|0)|0;if(!h)Ua(g|0,t|0);H=t}else h=-1;if((h|0)==1)f=H;else break}if(!f)c[(c[D>>2]|0)+20>>2]=c[y>>2]}while(0)}c[A>>2]=(c[A>>2]|0)+-1;if(!(c[A>>2]|0)){f=25;break}}if((f|0)==25){rea(G|0);i=I;return}}function qt(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+16|0;G=I;x=c[f+40>>2]|0;n=c[f+32>>2]|0;if(!n){h=6;i=I;return h|0}z=c[f+36>>2]|0;r=c[f+28>>2]|0;s=z+r|0;q=s;while(1){p=d[q>>0]<<8|d[q+1>>0];if(p>>>0<=g>>>0?(d[q+2>>0]<<8|d[q+3>>0])>>>0>=g>>>0:0){o=q;t=p;break}n=n+-1|0;if(!n){y=6;B=55;break}else q=q+8|0}if((B|0)==55){i=I;return y|0}n=d[o+5>>0]<<16|d[o+4>>0]<<24|d[o+6>>0]<<8|d[o+7>>0];u=x;if(n>>>0>(u-s|0)>>>0){h=8;i=I;return h|0}s=n+r|0;n=s+8|0;p=z+n|0;if(p>>>0>x>>>0){h=6;i=I;return h|0}C=d[z+(s+2)>>0]<<8|d[z+(s+3)>>0];A=d[z+(s+5)>>0]<<16|d[z+(s+4)>>0]<<24|d[z+(s+6)>>0]<<8|d[z+(s+7)>>0];a:do switch(d[z+s>>0]<<8|d[z+(s+1)>>0]|0){case 2:{if((z+(s+20)|0)>>>0>x>>>0){h=6;i=I;return h|0}n=d[z+(s+9)>>0]<<16|d[p>>0]<<24|d[z+(s+10)>>0]<<8|d[z+(s+11)>>0];l=c[f+12>>2]|0;m=z+(s+17)|0;if(m>>>0>x>>>0){h=6;i=I;return h|0}else{b[l>>1]=d[z+(s+12)>>0]|0;b[l+2>>1]=d[z+(s+13)>>0]|0;b[l+4>>1]=a[z+(s+14)>>0]|0;b[l+6>>1]=a[z+(s+15)>>0]|0;b[l+8>>1]=d[z+(s+16)>>0]|0;b[l+10>>1]=a[m>>0]|0;b[l+12>>1]=a[z+(s+18)>>0]|0;b[l+14>>1]=d[z+(s+19)>>0]|0;a[f+16>>0]=1;m=da(n,g-t|0)|0;l=m+n|0;break a}}case 1:{n=n+(g-t<<2)|0;if((z+(n+8)|0)>>>0>x>>>0){h=6;i=I;return h|0}m=d[z+(n+1)>>0]<<16|d[z+n>>0]<<24|d[z+(n+2)>>0]<<8|d[z+(n+3)>>0];l=d[z+(n+5)>>0]<<16|d[z+(n+4)>>0]<<24|d[z+(n+6)>>0]<<8|d[z+(n+7)>>0];if((m|0)==(l|0)){h=6;i=I;return h|0}break}case 3:{n=n+(g-t<<1)|0;if((z+(n+4)|0)>>>0>x>>>0){h=6;i=I;return h|0}m=d[z+n>>0]<<8|d[z+(n+1)>>0];l=d[z+(n+2)>>0]<<8|d[z+(n+3)>>0];if((m|0)==(l|0)){h=6;i=I;return h|0}break}case 4:{n=z+(s+12)|0;if(n>>>0>x>>>0){h=6;i=I;return h|0}p=d[z+(s+9)>>0]<<16|d[p>>0]<<24|d[z+(s+10)>>0]<<8|d[z+(s+11)>>0];if((p+-1|0)>>>0<((u-n>>2)+-1|0)>>>0)o=0;else{h=6;i=I;return h|0}while(1){if((d[n>>0]<<8|d[n+1>>0]|0)==(g|0)){v=n;B=20;break}o=o+1|0;if(o>>>0>=p>>>0){y=6;B=55;break}else n=n+4|0}if((B|0)==20){l=d[v+6>>0]<<8|d[v+7>>0];m=d[v+2>>0]<<8|d[v+3>>0];break a}else if((B|0)==55){i=I;return y|0}break}case 19:case 5:{n=z+(s+24)|0;if(n>>>0>x>>>0){h=6;i=I;return h|0}r=d[z+(s+9)>>0]<<16|d[p>>0]<<24|d[z+(s+10)>>0]<<8|d[z+(s+11)>>0];p=c[f+12>>2]|0;o=z+(s+17)|0;if(o>>>0>x>>>0){h=6;i=I;return h|0}b[p>>1]=d[z+(s+12)>>0]|0;b[p+2>>1]=d[z+(s+13)>>0]|0;b[p+4>>1]=a[z+(s+14)>>0]|0;b[p+6>>1]=a[z+(s+15)>>0]|0;b[p+8>>1]=d[z+(s+16)>>0]|0;q=z+(s+20)|0;if(q>>>0>x>>>0){h=6;i=I;return h|0}b[p+10>>1]=a[o>>0]|0;b[p+12>>1]=a[z+(s+18)>>0]|0;b[p+14>>1]=d[z+(s+19)>>0]|0;a[f+16>>0]=1;p=d[z+(s+21)>>0]<<16|d[q>>0]<<24|d[z+(s+22)>>0]<<8|d[z+(s+23)>>0];if((p+-1|0)>>>0>1>>>0)o=0;else{h=6;i=I;return h|0}while(1){if((d[n>>0]<<8|d[n+1>>0]|0)==(g|0)){w=o;B=27;break}o=o+1|0;if(o>>>0>=p>>>0){y=6;B=55;break}else n=n+2|0}if((B|0)==27){m=da(w,r)|0;l=m+r|0;break a}else if((B|0)==55){i=I;return y|0}break}default:{h=6;i=I;return h|0}}while(0);if(l>>>0>>0){h=6;i=I;return h|0}p=l-m|0;r=c[f+4>>2]|0;if((l+A|0)>>>0>(c[f+24>>2]|0)>>>0){h=6;i=I;return h|0}l=bh(r,m+A+(c[f+20>>2]|0)|0)|0;if(l){h=l;i=I;return h|0}l=Th(r,p,G)|0;if(l){h=l;i=I;return h|0}m=c[G>>2]|0;o=m+p|0;switch(C|0){case 18:case 9:case 7:case 6:{n=c[f+12>>2]|0;l=m+5|0;if((p|0)>=5?(b[n>>1]=d[m>>0]|0,b[n+2>>1]=d[m+1>>0]|0,b[n+4>>1]=a[m+2>>0]|0,b[n+6>>1]=a[m+3>>0]|0,b[n+8>>1]=d[m+4>>0]|0,(p|0)>=8):0){b[n+10>>1]=a[l>>0]|0;b[n+12>>1]=a[m+6>>0]|0;b[n+14>>1]=d[m+7>>0]|0;a[f+16>>0]=1;D=m+8|0;B=38}else E=6;break}case 17:case 8:case 2:case 1:{n=c[f+12>>2]|0;if((p|0)<5)E=6;else{b[n>>1]=d[m>>0]|0;b[n+2>>1]=d[m+1>>0]|0;b[n+4>>1]=a[m+2>>0]|0;b[n+6>>1]=a[m+3>>0]|0;b[n+8>>1]=d[m+4>>0]|0;a[f+16>>0]=1;D=m+5|0;B=38}break}default:{D=m;B=38}}b:do if((B|0)==38){switch(C|0){case 7:case 5:case 2:{F=D;H=50;break}case 8:{k=D+1|0;if(k>>>0>o>>>0){E=0;break b}else B=41;break}case 9:{k=D;B=41;break}case 19:case 18:case 17:case 6:case 1:{F=D;H=49;break}default:{E=8;break b}}if((B|0)==41){F=k;H=51}n=f+17|0;if(!(a[n>>0]|0)){l=c[f+8>>2]|0;if(!(a[f+16>>0]|0)){E=6;break}m=c[f+12>>2]|0;k=e[m+2>>1]|0;m=e[m>>1]|0;c[l+4>>2]=k;c[l>>2]=m;switch(d[f+18>>0]|0){case 8:{a[l+18>>0]=2;c[l+8>>2]=k;b[l+16>>1]=256;break}case 1:{a[l+18>>0]=1;k=(k+7|0)>>>3;c[l+8>>2]=k;b[l+16>>1]=2;break}case 4:{a[l+18>>0]=4;k=(k+1|0)>>>1;c[l+8>>2]=k;b[l+16>>1]=16;break}case 32:{a[l+18>>0]=7;k=k<<2;c[l+8>>2]=k;b[l+16>>1]=256;break}case 2:{a[l+18>>0]=3;k=(k+3|0)>>>2;c[l+8>>2]=k;b[l+16>>1]=4;break}default:{E=3;break b}}k=da(k,m)|0;if(k){k=Sg(c[(c[f>>2]|0)+84>>2]|0,k)|0;if(k){E=k;break}a[n>>0]=1}}E=Qd[H&127](f,F,o,h,j)|0}while(0);Vh(r,G);h=E;i=I;return h|0}function rt(d){d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;l=t+8|0;s=t;g=t+4|0;r=c[d+104>>2]|0;f=Xd[c[d+504>>2]&255](d,1886352244,r,g)|0;if(f){d=f;i=t;return d|0}m=Qh(r)|0;m=(c[g>>2]|0)+m|0;f=c[d+464>>2]|0;g=Mh(r,32)|0;if(g){d=g;i=t;return d|0}a:do if((f|0)==131072){p=c[r+28>>2]|0;n=Nh(r,s)|0;h=n&65535;f=c[s>>2]|0;if(!f){if((n&65535)>(e[d+264>>1]|0)){c[s>>2]=3;f=3;break}o=Dg(p,2,0,h,0,s)|0;b:do if((c[s>>2]|0)==0?(k=Uh(r,h<<1)|0,c[s>>2]=k,(k|0)==0):0){if(!(n<<16>>16)){Xh(r);l=0}else{f=0;do{b[o+(f<<1)>>1]=Zh(r)|0;f=f+1|0}while((f|0)<(h|0));Xh(r);g=0;f=0;do{j=b[o+(g<<1)>>1]|0;if((j&65535)>257){k=(j&65535)+-257|0;f=(k|0)>(f&65535|0)?k&65535:f}g=g+1|0}while((g|0)<(h|0));l=f}f=Dg(p,4,0,l&65535,0,s)|0;if(!(c[s>>2]|0)){c:do if(l<<16>>16){g=0;while(1){if((Qh(r)|0)>=(m|0)){q=19;break}j=(bi(r,s)|0)&255;if(c[s>>2]|0){g=0;break}if(!((m|0)>=(j|0)?(Qh(r)|0)<=(m-j|0):0))if((m-(Qh(r)|0)|0)<0)j=0;else j=m-(Qh(r)|0)|0;h=Dg(p,1,0,j+1|0,0,s)|0;k=f+(g<<2)|0;c[k>>2]=h;if(c[s>>2]|0){g=0;break}h=Lh(r,h,j)|0;c[s>>2]=h;if(h){g=0;break}a[(c[k>>2]|0)+j>>0]=0;g=g+1|0;if((g&65535)>=(l&65535))break c}d:do if((q|0)==19){j=g&65535;if((j&65535)>=(l&65535))break c;h=g&65535;while(1){g=Dg(p,1,0,1,0,s)|0;c[f+(h<<2)>>2]=g;if(c[s>>2]|0){g=0;break d}a[g>>0]=0;j=j+1<<16>>16;if((j&65535)>=(l&65535))break c;else h=h+1|0}}while(0);while(1){r=f+(g<<2)|0;Ag(p,c[r>>2]|0);c[r>>2]=0;g=g+1|0;if((g&65535)<<16>>16==l<<16>>16)break b}}while(0);b[d+612>>1]=n;b[d+614>>1]=l;c[d+616>>2]=o;c[d+620>>2]=f;f=0;break a}}else f=0;while(0);Ag(p,f);Ag(p,o);f=c[s>>2]|0}}else if((f|0)==163840){h=c[r+28>>2]|0;j=Nh(r,l)|0;k=j&65535;f=c[l>>2]|0;if(!f){if((j&65535)>258?1:(j&65535)>(e[d+264>>1]|0)){c[l>>2]=3;f=3;break}g=Dg(h,1,0,k,0,l)|0;e:do if((c[l>>2]|0)==0?(s=Lh(r,g,k)|0,c[l>>2]=s,(s|0)==0):0){f:do if(j<<16>>16){f=0;while(1){s=(a[g+f>>0]|0)+f|0;f=f+1|0;if((s|0)<0|(s|0)>(k|0))break;if((f|0)>=(k|0))break f}c[l>>2]=3;break e}while(0);b[d+612>>1]=j;c[d+616>>2]=g;f=0;break a}while(0);Ag(h,g);f=c[l>>2]|0}}else f=3;while(0);a[d+608>>0]=1;d=f;i=t;return d|0}function st(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;k=c[g+1012>>2]|0;h=c[g+1008>>2]|0;i=da(h,d)|0;if((h|0)>-1)d=da((c[g+1e3>>2]|0)+-1|0,h)|0;else d=0;j=d-i|0;if((e|0)<=0)return;while(1){i=a[f+4>>0]|0;a:do if(i<<24>>24){m=b[f+2>>1]|0;g=m&65535;h=b[f>>1]|0;d=k+(j+h)|0;if((m&65535)>7){sfa(d|0,i|0,g|0)|0;break}switch(g|0){case 7:{l=h+1|0;a[d>>0]=i;h=l;d=k+(j+l)|0;l=9;break}case 2:{l=13;break}case 3:{l=12;break}case 6:{l=9;break}case 5:{l=10;break}case 1:break;case 4:{l=11;break}default:break a}if((l|0)==9){m=h+1|0;a[d>>0]=i;h=m;d=k+(j+m)|0;l=10}if((l|0)==10){m=h+1|0;a[d>>0]=i;h=m;d=k+(j+m)|0;l=11}if((l|0)==11){m=h+1|0;a[d>>0]=i;h=m;d=k+(j+m)|0;l=12}if((l|0)==12){m=h+1|0;a[d>>0]=i;h=m;d=k+(j+m)|0;l=13}if((l|0)==13){l=0;a[d>>0]=i;d=k+(j+(h+1))|0}a[d>>0]=i}while(0);e=e+-1|0;if((e|0)<=0)break;else f=f+6|0}return}function tt(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;n=4;o=qea(40)|0;c[o>>2]=0;m=q;c[m>>2]=0;k=a+1256|0;n=Afa(k,1,o|0,n|0)|0;o=H;s=0;b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,n|0,o|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else b=0;a:while(1){if(b){p=16;break}s=0;b=qa(90,a+980|0,84888,a|0)|0;d=s;s=0;if((d|0)!=0&(t|0)!=0){e=Cfa(c[d>>2]|0,n|0,o|0)|0;if(!e)Ua(d|0,t|0);H=t}else e=-1;if((e|0)==1){b=H;continue}c[m>>2]=b;if(c[a+40>>2]|0){p=17;break}h=c[a+32>>2]|0;j=c[a+36>>2]|0;if(!(j|h)){p=17;break}g=c[a>>2]|0;d=c[a+24>>2]|0;g=(g|0)>(d|0)?d:g;d=(c[a+1420>>2]|0)+(c[a+4>>2]<<2)|0;b=c[d>>2]|0;b:do if(!b)b=0;else while(1){e=c[b>>2]|0;if((e|0)>(g|0))break b;d=b+12|0;if((e|0)==(g|0)){l=b;break a}b=c[d>>2]|0;if(!b){b=0;break}}while(0);e=a+52|0;f=c[e>>2]|0;if((f|0)<(c[a+48>>2]|0)){p=14;break}s=0;la(74,k|0,1);b=s;s=0;if((b|0)!=0&(t|0)!=0){d=Cfa(c[b>>2]|0,n|0,o|0)|0;if(!d)Ua(b|0,t|0);H=t}else d=-1;if((d|0)==1)b=H;else{p=13;break}}if((p|0)!=13)if((p|0)==14){p=c[a+44>>2]|0;c[e>>2]=f+1;l=p+(f<<4)|0;c[l>>2]=g;c[p+(f<<4)+8>>2]=0;c[p+(f<<4)+4>>2]=0;c[p+(f<<4)+12>>2]=b;c[d>>2]=l}else if((p|0)==16){c[m>>2]=64;p=c[m>>2]|0;rea(n|0);i=q;return p|0}else if((p|0)==17){p=c[m>>2]|0;rea(n|0);i=q;return p|0}p=l+8|0;c[p>>2]=(c[p>>2]|0)+h;p=l+4|0;c[p>>2]=(c[p>>2]|0)+j;p=c[m>>2]|0;rea(n|0);i=q;return p|0}function ut(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=i>>9;i=(i|0)<0?0-i|0:i;do if(c[f+996>>2]&2){i=i&511;if(i>>>0>256){q=512-i|0;break}else{q=(i|0)==256?255:i;break}}else q=(i|0)>255?255:i;while(0);o=(c[f+16>>2]|0)+h|0;n=(c[f+8>>2]|0)+g|0;n=(n|0)<32767?n:32767;if(!q)return;p=f+1232|0;i=c[p>>2]|0;l=f+1040|0;k=i+-1|0;m=(i|0)>0;h=c[f+1244>>2]|0;if(m&(h|0)==(o|0)){h=f+(k*6|0)+1042|0;g=e[h>>1]|0;if((g+(b[f+(k*6|0)+1040>>1]|0)|0)==(n|0)?(d[f+(k*6|0)+1044>>0]|0)==(q|0):0){b[h>>1]=g+j;return}else h=o}g=f+1244|0;if((h|0)!=(o|0)|(i|0)>31){k=c[f+1236>>2]|0;if((k|0)!=0&m)Yd[k&63](h,i,l,c[f+1240>>2]|0);c[p>>2]=0;c[g>>2]=o;i=0}b[f+(i*6|0)+1040>>1]=n;b[f+(i*6|0)+1042>>1]=j;a[f+(i*6|0)+1044>>0]=q;c[p>>2]=(c[p>>2]|0)+1;return}function vt(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+80|0;F=G+64|0;m=G;r=G+16|0;p=e+76|0;E=c[d+8>>2]|0;q=(f|0)==3;z=(f|0)==4;C=e+72|0;if((c[C>>2]|0)!=(c[d+16>>2]|0)){c[F>>2]=6;g=c[F>>2]|0;i=G;return g|0}if((f|0)!=(h|0)){c[F>>2]=19;g=c[F>>2]|0;i=G;return g|0}B=e+108|0;if(!g)D=0;else{Xg(B,c[g>>2]|0,c[g+4>>2]|0);D=1}Ih(B,m);f=c[m>>2]&-64;c[m>>2]=f;l=m+4|0;h=c[l>>2]&-64;c[l>>2]=h;n=m+8|0;k=(c[n>>2]|0)+63&-64;c[n>>2]=k;n=m+12|0;j=(c[n>>2]|0)+63&-64;c[n>>2]=j;do if((f|0)<0&(k|0)>(f+2147483647|0)){c[F>>2]=98;f=0}else{s=k-f>>6;if((h|0)<0&(j|0)>(h+2147483647|0)){c[F>>2]=98;f=0;break}t=j-h>>6;f=e+156|0;if(c[(c[f>>2]|0)+4>>2]&1){y=e+88|0;Ag(E,c[y>>2]|0);c[y>>2]=0;y=(c[f>>2]|0)+4|0;c[y>>2]=c[y>>2]&-2}if(q){o=s*3|0;y=o+3&-4}else{y=s;o=s}if(z)v=t*3|0;else v=t;x=c[m>>2]|0;w=c[l>>2]|0;u=x>>6;n=c[n>>2]>>6;if((o|0)>32767|(v|0)>32767){c[F>>2]=98;f=0;break}a[e+94>>0]=2;b[e+92>>1]=256;c[e+80>>2]=o;c[p>>2]=v;c[e+84>>2]=y;Xg(B,0-x|0,0-w|0);m=e+88|0;c[m>>2]=yg(E,da(v,y)|0,F)|0;if(!(c[F>>2]|0)){l=(c[f>>2]|0)+4|0;c[l>>2]=c[l>>2]|1;c[r>>2]=p;c[r+4>>2]=B;c[r+8>>2]=1;d=Pd[c[d+56>>2]&511](c[d+52>>2]|0,r)|0;c[F>>2]=d;if(!d){a:do if(!(q^1|(t|0)==0)){f=c[m>>2]|0;if(!s){f=t;while(1){f=f+-1|0;if(!f)break a}}else j=t;while(1){k=f+o|0;h=s;do{h=h+-1|0;r=a[f+h>>0]|0;d=k;k=k+-3|0;a[k>>0]=r;a[d+-2>>0]=r;a[d+-1>>0]=r}while((h|0)!=0);j=j+-1|0;if(!j)break;else f=f+y|0}}while(0);if(z?(A=c[m>>2]|0,(t|0)!=0):0){j=y<<1;k=y*3|0;l=t;h=A+(da(v-t|0,y)|0)|0;f=A;while(1){qfa(f|0,h|0,y|0)|0;qfa(f+y|0,h|0,y|0)|0;qfa(f+j|0,h|0,y|0)|0;l=l+-1|0;if(!l)break;else{h=h+y|0;f=f+k|0}}}c[C>>2]=1651078259;c[e+100>>2]=u;c[e+104>>2]=n;c[F>>2]=0;f=0}else f=1}else f=0;Xg(B,x,w)}while(0);if(D<<24>>24)Xg(B,0-(c[g>>2]|0)|0,0-(c[g+4>>2]|0)|0);if(!(f<<24>>24)){g=c[F>>2]|0;i=G;return g|0}g=e+88|0;Ag(E,c[g>>2]|0);c[g>>2]=0;g=(c[e+156>>2]|0)+4|0;c[g>>2]=c[g>>2]&-2;g=c[F>>2]|0;i=G;return g|0}function wt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;M=a+72|0;m=c[M>>2]|0;j=m>>8;L=d>>8;N=a+68|0;g=c[N>>2]|0;m=g-m|0;O=L<<8;P=d-O|0;Q=a+64|0;l=c[Q>>2]|0;r=b-l|0;g=d-g|0;h=(j|0)>(L|0);if(((h?L:j)|0)>=(c[a+20>>2]|0)){c[Q>>2]=b;c[N>>2]=d;c[M>>2]=O;return}H=a+16|0;G=c[H>>2]|0;if(((h?j:L)|0)<(G|0)){c[Q>>2]=b;c[N>>2]=d;c[M>>2]=O;return}if((j|0)==(L|0)){vu(a,j,l,m,b,P);c[Q>>2]=b;c[N>>2]=d;c[M>>2]=O;return}if((l|0)==(b|0)){A=b>>8;F=b-(A<<8)<<1;B=g>>31;E=B+256&-256;B=B|1;g=E-m|0;h=da(F,g)|0;C=a+32|0;h=(c[C>>2]|0)+h|0;c[C>>2]=h;D=a+36|0;g=(c[D>>2]|0)+g|0;c[D>>2]=g;p=B+j|0;o=p-G|0;i=c[a+12>>2]|0;A=((i|0)<(A|0)?i:A)-(c[a+8>>2]|0)|0;A=(A|0)>-1?A:-1;i=c[a>>2]|0;if(!((A|0)==(i|0)?(o|0)==(c[a+4>>2]|0):0)){if(!((c[a+40>>2]|0)!=0|(g|h|0)==0)){m=c[a+24>>2]|0;m=(i|0)>(m|0)?m:i;j=(c[a+1420>>2]|0)+(c[a+4>>2]<<2)|0;i=c[j>>2]|0;a:do if(!i){i=0;R=13}else while(1){k=c[i>>2]|0;if((k|0)>(m|0)){R=13;break a}j=i+12|0;if((k|0)==(m|0)){n=i;break a}i=c[j>>2]|0;if(!i){i=0;R=13;break}}while(0);do if((R|0)==13){k=a+52|0;l=c[k>>2]|0;if((l|0)<(c[a+48>>2]|0)){K=c[a+44>>2]|0;c[k>>2]=l+1;n=K+(l<<4)|0;c[n>>2]=m;c[K+(l<<4)+8>>2]=0;c[K+(l<<4)+4>>2]=0;c[K+(l<<4)+12>>2]=i;c[j>>2]=n;break}else Ua(a+1256|0,1)}while(0);K=n+8|0;c[K>>2]=(c[K>>2]|0)+h;K=n+4|0;c[K>>2]=(c[K>>2]|0)+g}c[C>>2]=0;c[D>>2]=0;c[a>>2]=A;c[a+4>>2]=o;h=0;g=0}z=c[a+28>>2]|0;if(o>>>0>>0)i=(A|0)>=(c[a+24>>2]|0);else i=1;l=i&1;q=a+40|0;c[q>>2]=l;r=(E<<1)+-256|0;s=da(r,F)|0;do if((p|0)!=(L|0)){t=a+4|0;u=a+24|0;v=a+1420|0;w=a+52|0;x=a+48|0;y=a+44|0;n=o;m=o;k=p;while(1){h=h+s|0;g=g+r|0;k=k+B|0;K=n;n=k-G|0;if((n|0)!=(K|0)){if(!((l|0)!=0|(g|h|0)==0)){i=c[u>>2]|0;i=(A|0)>(i|0)?i:A;j=(c[v>>2]|0)+(m<<2)|0;l=c[j>>2]|0;b:do if(!l){l=0;R=28}else while(1){m=c[l>>2]|0;if((m|0)>(i|0)){R=28;break b}j=l+12|0;if((m|0)==(i|0))break b;l=c[j>>2]|0;if(!l){l=0;R=28;break}}while(0);if((R|0)==28){R=0;m=c[w>>2]|0;if((m|0)>=(c[x>>2]|0)){R=29;break}J=c[y>>2]|0;c[w>>2]=m+1;K=J+(m<<4)|0;c[K>>2]=i;c[J+(m<<4)+8>>2]=0;c[J+(m<<4)+4>>2]=0;c[J+(m<<4)+12>>2]=l;c[j>>2]=K;l=K}K=l+8|0;c[K>>2]=(c[K>>2]|0)+h;K=l+4|0;c[K>>2]=(c[K>>2]|0)+g}c[a>>2]=A;c[t>>2]=n;m=n;g=0;h=0}if(n>>>0>>0)l=(A|0)>=(c[u>>2]|0);else l=1;l=l&1;c[q>>2]=l;if((k|0)==(L|0)){f=g;e=h;R=36;break}}if((R|0)==29){c[C>>2]=h;c[D>>2]=g;Ua(a+1256|0,1)}else if((R|0)==36){c[C>>2]=e;c[D>>2]=f;break}}else{e=h;f=g}while(0);R=P+-256+E|0;c[C>>2]=e+(da(F,R)|0);c[D>>2]=f+R;c[Q>>2]=b;c[N>>2]=d;c[M>>2]=O;return}h=(g|0)<0;G=g>>31;E=G+256&-256;G=G|1;F=h?0-g|0:g;h=da(h?m:256-m|0,r)|0;e=(h|0)/(F|0)|0;h=(h|0)%(F|0)|0;if((h|0)<0){e=e+-1|0;h=h+F|0}B=l+e|0;vu(a,j,l,m,B,E);z=G+j|0;o=B>>8;p=z-(c[H>>2]|0)|0;C=a+12|0;l=c[C>>2]|0;D=a+8|0;o=((l|0)<(o|0)?l:o)-(c[D>>2]|0)|0;o=(o|0)>-1?o:-1;l=c[a>>2]|0;if(!((o|0)==(l|0)?(p|0)==(c[a+4>>2]|0):0)){n=a+32|0;if(!(c[a+40>>2]|0)){i=c[n>>2]|0;e=a+36|0;k=c[e>>2]|0;if(k|i){j=c[a+24>>2]|0;j=(l|0)>(j|0)?j:l;f=(c[a+1420>>2]|0)+(c[a+4>>2]<<2)|0;l=c[f>>2]|0;c:do if(!l){l=0;R=49}else while(1){g=c[l>>2]|0;if((g|0)>(j|0)){R=49;break c}f=l+12|0;if((g|0)==(j|0)){q=l;break c}l=c[f>>2]|0;if(!l){l=0;R=49;break}}while(0);do if((R|0)==49){g=a+52|0;m=c[g>>2]|0;if((m|0)<(c[a+48>>2]|0)){A=c[a+44>>2]|0;c[g>>2]=m+1;q=A+(m<<4)|0;c[q>>2]=j;c[A+(m<<4)+8>>2]=0;c[A+(m<<4)+4>>2]=0;c[A+(m<<4)+12>>2]=l;c[f>>2]=q;break}else Ua(a+1256|0,1)}while(0);A=q+8|0;c[A>>2]=(c[A>>2]|0)+i;A=q+4|0;c[A>>2]=(c[A>>2]|0)+k}}else e=a+36|0;c[n>>2]=0;c[e>>2]=0;c[a>>2]=o;c[a+4>>2]=p}A=a+28|0;if(p>>>0<(c[A>>2]|0)>>>0)e=(o|0)>=(c[a+24>>2]|0);else e=1;y=a+40|0;c[y>>2]=e&1;d:do if((z|0)==(L|0))K=B;else{f=r<<8;e=(f|0)/(F|0)|0;f=(f|0)%(F|0)|0;if((f|0)<0){e=e+-1|0;f=f+F|0}p=256-E|0;q=a+4|0;r=a+24|0;s=a+32|0;t=a+36|0;u=a+1420|0;v=a+52|0;w=a+48|0;x=a+44|0;o=z;n=h-F|0;l=B;while(1){k=n+f|0;n=k-((k|0)>-1?F:0)|0;k=e+(k>>>31^1)+l|0;vu(a,o,l,p,k,E);o=o+G|0;j=k>>8;i=o-(c[H>>2]|0)|0;l=c[C>>2]|0;j=((l|0)<(j|0)?l:j)-(c[D>>2]|0)|0;j=(j|0)>-1?j:-1;l=c[a>>2]|0;if(!((j|0)==(l|0)?(i|0)==(c[q>>2]|0):0)){if((c[y>>2]|0)==0?(I=c[s>>2]|0,J=c[t>>2]|0,(J|I|0)!=0):0){m=c[r>>2]|0;m=(l|0)>(m|0)?m:l;g=(c[u>>2]|0)+(c[q>>2]<<2)|0;l=c[g>>2]|0;e:do if(!l){l=0;R=68}else while(1){h=c[l>>2]|0;if((h|0)>(m|0)){R=68;break e}g=l+12|0;if((h|0)==(m|0))break e;l=c[g>>2]|0;if(!l){l=0;R=68;break}}while(0);if((R|0)==68){R=0;h=c[v>>2]|0;if((h|0)>=(c[w>>2]|0))break;z=c[x>>2]|0;c[v>>2]=h+1;B=z+(h<<4)|0;c[B>>2]=m;c[z+(h<<4)+8>>2]=0;c[z+(h<<4)+4>>2]=0;c[z+(h<<4)+12>>2]=l;c[g>>2]=B;l=B}B=l+8|0;c[B>>2]=(c[B>>2]|0)+I;B=l+4|0;c[B>>2]=(c[B>>2]|0)+J}c[s>>2]=0;c[t>>2]=0;c[a>>2]=j;c[q>>2]=i}if(i>>>0<(c[A>>2]|0)>>>0)l=(j|0)>=(c[r>>2]|0);else l=1;c[y>>2]=l&1;if((o|0)==(L|0)){K=k;break d}else l=k}Ua(a+1256|0,1)}while(0);vu(a,L,K,256-E|0,b,P);c[Q>>2]=b;c[N>>2]=d;c[M>>2]=O;return}function xt(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l+4|0;f=l;g=c[e+28>>2]|0;h=Xd[c[d+504>>2]&255](d,1668707360,e,f)|0;c[k>>2]=h;if(h){c[d+640>>2]=0;c[d+644>>2]=0;c[k>>2]=0;e=0;i=l;return e|0}f=(c[f>>2]|0)>>>1;j=d+640|0;c[j>>2]=f;h=d+644|0;c[h>>2]=Dg(g,2,0,f,0,k)|0;f=c[k>>2]|0;if(f){e=f;i=l;return e|0}f=Uh(e,c[j>>2]<<1)|0;c[k>>2]=f;if(f){e=f;i=l;return e|0}f=c[h>>2]|0;h=c[j>>2]|0;g=f+(h<<1)|0;if((h|0)>0)do{b[f>>1]=Zh(e)|0;f=f+2|0}while(f>>>0>>0);Xh(e);if(!(a[d+668>>0]|0)){e=c[k>>2]|0;i=l;return e|0}else{e=It(d,e)|0;c[k>>2]=e;i=l;return e|0}return 0}function yt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=c[a+24>>2]|0;b=bh(f,d)|0;if(b){a=b;return a|0}b=Uh(f,e)|0;if(b){a=b;return a|0}c[a+200>>2]=c[f+32>>2];c[a+204>>2]=c[f+36>>2];a=0;return a|0}function zt(a){a=a|0;var e=0,f=0,g=0;e=a+200|0;f=c[e>>2]|0;g=f+10|0;if(g>>>0>(c[a+204>>2]|0)>>>0){g=20;return g|0}b[a+32>>1]=(d[f>>0]|0)<<8|(d[f+1>>0]|0);c[a+36>>2]=((d[f+2>>0]|0)<<8|(d[f+3>>0]|0))<<16>>16;c[a+40>>2]=((d[f+4>>0]|0)<<8|(d[f+5>>0]|0))<<16>>16;c[a+44>>2]=((d[f+6>>0]|0)<<8|(d[f+7>>0]|0))<<16>>16;c[a+48>>2]=((d[f+8>>0]|0)<<8|(d[f+9>>0]|0))<<16>>16;c[e>>2]=g;g=0;return g|0}function At(f){f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;y=f+200|0;h=c[y>>2]|0;z=c[f+204>>2]|0;A=c[f+12>>2]|0;B=b[f+32>>1]|0;j=B<<16>>16;u=c[f>>2]|0;if(B<<16>>16){if(((b[A+20>>1]|0)+j+(b[A+56>>1]|0)|0)>>>0>(c[A+8>>2]|0)>>>0?(g=Eg(A,0,j)|0,(g|0)!=0):0){D=g;return D|0}if(B<<16>>16>4094){D=20;return D|0}}g=c[A+68>>2]|0;k=g+(j<<1)|0;if((h+((j<<1)+2)|0)>>>0>z>>>0){D=20;return D|0}j=d[h>>0]<<8;n=j|d[h+1>>0];p=B<<16>>16>0;if(p)b[g>>1]=n;if(j&32768){D=20;return D|0}a:do if(B<<16>>16>1){l=h;o=g;g=g+2|0;h=h+2|0;j=n;while(1){n=j;j=d[l+2>>0]<<8|d[l+3>>0];b[g>>1]=j;if((j<<16|0)<=(n<<16|0)){x=20;break}n=o+4|0;if(n>>>0>=k>>>0){n=h;break a}else{o=g;E=h;g=n;h=l+4|0;l=E}}return x|0}else n=h;while(0);do if(p){g=b[g>>1]|0;j=g+1|0;if((j|0)>=0){g=g+5|0;if(!g){C=j;break}else{q=g;s=j;t=16;break}}else{E=20;return E|0}}else{q=4;s=0;t=16}while(0);if((t|0)==16)if(((b[A+22>>1]|0)+q+(b[A+58>>1]|0)|0)>>>0>(c[A+4>>2]|0)>>>0?(r=Eg(A,q,0)|0,(r|0)!=0):0){E=r;return E|0}else C=s;j=c[f+8>>2]|0;g=j+140|0;c[g>>2]=0;j=j+136|0;c[j>>2]=0;h=n+4|0;if(h>>>0>z>>>0){E=20;return E|0}k=d[n+2>>0]<<8|d[n+3>>0];if(k>>>0>(e[u+286>>1]|0)>>>0){E=22;return E|0}if((z-h|0)<(k|0)){E=22;return E|0}if(!(c[f+16>>2]&2)){c[g>>2]=k;E=c[(c[f+160>>2]|0)+392>>2]|0;c[j>>2]=E;qfa(E|0,h|0,k|0)|0}j=n+(k+4)|0;p=A+64|0;g=c[p>>2]|0;o=g+C|0;q=(C|0)>0;do if(q){while(1){h=j+1|0;if(h>>>0>z>>>0){x=20;t=51;break}n=a[j>>0]|0;l=g+1|0;a[g>>0]=n;if(n&8){j=j+2|0;if(j>>>0>z>>>0){x=20;t=51;break}h=a[h>>0]|0;if((g+((h&255)+1)|0)>>>0>o>>>0){x=20;t=51;break}if(!(h<<24>>24))g=l;else while(1){g=g+2|0;a[l>>0]=n;h=h+-1<<24>>24;if(!(h<<24>>24))break;else{E=l;l=g;g=E}}}else{g=l;j=h}if(g>>>0>=o>>>0){v=j;t=31;break}}if((t|0)==31){m=c[p>>2]|0;w=v;break}else if((t|0)==51)return x|0}else{m=g;w=j}while(0);o=A+60|0;g=c[o>>2]|0;n=g+(C<<3)|0;if(w>>>0>z>>>0){E=20;return E|0}b:do if(q){h=w;k=0;while(1){l=d[m>>0]|0;if(!(l&2))if(!(l&16)){j=h+2|0;if(j>>>0>z>>>0){x=20;t=51;break}h=(d[h>>0]<<8|d[h+1>>0])<<16>>16}else{j=h;h=0}else{j=h+1|0;if(j>>>0>z>>>0){x=20;t=51;break}h=d[h>>0]|0;h=(l&16|0)==0?0-h|0:h}k=h+k|0;c[g>>2]=k;a[m>>0]=l&237;g=g+8|0;if(g>>>0>=n>>>0){i=j;t=41;break}else{m=m+1|0;h=j}}if((t|0)==41){g=c[o>>2]|0;m=g+(C<<3)|0;if(!q){D=i;break}l=c[p>>2]|0;k=0;while(1){j=d[l>>0]|0;if(!(j&4))if(!(j&32)){h=i+2|0;if(h>>>0>z>>>0){x=20;t=51;break}i=(d[i>>0]<<8|d[i+1>>0])<<16>>16}else{h=i;i=0}else{h=i+1|0;if(h>>>0>z>>>0){x=20;t=51;break}i=d[i>>0]|0;i=(j&32|0)==0?0-i|0:i}k=i+k|0;c[g+4>>2]=k;a[l>>0]=j&1;g=g+8|0;if(g>>>0>=m>>>0){D=h;break b}else{l=l+1|0;i=h}}if((t|0)==51)return x|0}else if((t|0)==51)return x|0}else D=w;while(0);b[A+58>>1]=C;b[A+56>>1]=B;c[y>>2]=D;E=0;return E|0}function Bt(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;z=e+200|0;A=c[e+204>>2]|0;B=c[e+12>>2]|0;x=B+88|0;y=0;w=c[z>>2]|0;while(1){g=y+1|0;f=Fg(B,g)|0;if(f){h=21;break}i=w+4|0;if(i>>>0>A>>>0){f=21;h=21;break}u=c[x>>2]|0;r=u+(y<<5)+12|0;c[r>>2]=0;j=u+(y<<5)+8|0;c[j>>2]=0;s=d[w+1>>0]|0;v=(d[w>>0]<<8|s)&65535;b[u+(y<<5)+4>>1]=v;c[u+(y<<5)>>2]=d[w+2>>0]<<8|d[w+3>>0];k=v&1;f=(k&65535)<<1;h=f+2|0;t=(s&8|0)==0;do if(t)if(!(s&64)){f=h|s>>>4&8;break}else{f=f+6|0;break}else f=f|4;while(0);if((w+(f+4)|0)>>>0>A>>>0){f=21;h=21;break}if(!(k<<16>>16)){c[j>>2]=a[i>>0];n=9;l=11;f=14;o=12;p=13;q=8;h=7;m=10;k=w+6|0;i=a[w+5>>0]|0}else{c[j>>2]=(d[i>>0]<<8|d[w+5>>0])<<16>>16;n=11;l=13;f=16;o=14;p=15;q=10;h=9;m=12;k=w+8|0;i=(d[w+6>>0]<<8|d[w+7>>0])<<16>>16}c[r>>2]=i;do if(t){if(s&64){f=w+m|0;j=(d[k>>0]<<8|d[w+h>>0])<<16>>14;i=0;k=0;h=(d[w+q>>0]<<8|d[w+n>>0])<<16>>14;break}if(!(s&128)){f=k;j=65536;i=0;k=0;h=65536}else{f=w+f|0;j=(d[k>>0]<<8|d[w+h>>0])<<16>>14;i=(d[w+m>>0]<<8|d[w+l>>0])<<16>>14;k=(d[w+q>>0]<<8|d[w+n>>0])<<16>>14;h=(d[w+o>>0]<<8|d[w+p>>0])<<16>>14}}else{h=(d[k>>0]<<8|d[w+h>>0])<<16>>14;f=w+q|0;j=h;i=0;k=0}while(0);c[u+(y<<5)+16>>2]=j;c[u+(y<<5)+20>>2]=i;c[u+(y<<5)+24>>2]=k;c[u+(y<<5)+28>>2]=h;if(!(v&32)){h=20;break}else{y=g;w=f}}if((h|0)==20){c[B+84>>2]=g;c[e+168>>2]=f+(Qh(c[e+24>>2]|0)|0)-A;c[z>>2]=f;e=0;return e|0}else if((h|0)==21)return f|0;return 0}function Ct(a){a=a|0;Xh(c[a+24>>2]|0);return}function Dt(d){d=d|0;var e=0,f=0,g=0,h=0;g=c[(c[d>>2]|0)+100>>2]|0;e=d+292|0;if(a[e>>0]|0){c[d+296>>2]=0;a[e>>0]=0}e=d+244|0;Ag(g,c[e>>2]|0);c[e>>2]=0;c[d+240>>2]=0;e=d+252|0;Ag(g,c[e>>2]|0);c[e>>2]=0;b[d+248>>1]=0;e=d+256|0;f=c[e>>2]|0;if(f){h=e+28|0;Ag(f,c[h>>2]|0);c[h>>2]=0;h=e+24|0;Ag(f,c[h>>2]|0);c[h>>2]=0;h=e+16|0;Ag(f,c[h>>2]|0);c[h>>2]=0;h=e+12|0;Ag(f,c[h>>2]|0);c[h>>2]=0;h=e+20|0;Ag(f,c[h>>2]|0);c[h>>2]=0;c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0}h=d+124|0;Ag(g,c[h>>2]|0);c[h>>2]=0;Ag(g,c[d+136>>2]|0);c[d+116>>2]=0;c[d+120>>2]=0;h=d+128|0;a[d+300>>0]=0;c[h+0>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;a[d+301>>0]=0;return}function Et(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;ca=i;i=i+96|0;Z=ca+64|0;W=ca;l=ca+82|0;n=ca+80|0;I=ca+56|0;r=ca+16|0;ba=ca+8|0;H=c[f>>2]|0;X=f+12|0;N=c[X>>2]|0;c[I>>2]=0;if(h>>>0>1?(e[H+290>>1]|0)>>>0>>0:0){aa=21;i=ca;return aa|0}if((c[H+16>>2]|0)>>>0<=g>>>0){aa=16;i=ca;return aa|0}F=f+20|0;c[F>>2]=g;Y=f+16|0;if(!(c[Y>>2]&1)){L=c[f+4>>2]|0;K=c[L+48>>2]|0;L=c[L+52>>2]|0}else{K=65536;L=65536}b[Z>>1]=0;b[W>>1]=0;b[l>>1]=0;b[n>>1]=0;k=H+528|0;Qd[c[(c[k>>2]|0)+112>>2]&127](H,0,g,Z,l)|0;if(!(a[H+292>>0]|0)){b[W>>1]=0;_=b[H+68>>1]|0;b[n>>1]=_;m=0;n=_}else{Qd[c[(c[k>>2]|0)+112>>2]&127](H,1,g,W,n)|0;m=b[W>>1]|0;n=b[n>>1]|0}E=f+52|0;c[E>>2]=b[Z>>1];k=e[l>>1]|0;C=f+56|0;c[C>>2]=k;D=f+176|0;c[D>>2]=m<<16>>16;B=f+180|0;c[B>>2]=n&65535;z=f+64|0;if(!(a[z>>0]|0)){a[z>>0]=1;c[f+60>>2]=k}$=H+128|0;k=c[(c[$>>2]|0)+48>>2]|0;do if(k){k=Hd[c[c[k>>2]>>2]&255](c[k+4>>2]|0,g,ba)|0;if(!k){k=c[ba+4>>2]|0;c[f+28>>2]=k;n=r+0|0;l=n+40|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(l|0));Ng(r,c[ba>>2]|0,k);c[f+24>>2]=r;_=1;l=0;break}else{aa=k;i=ca;return aa|0}}else{_=0;l=qq(H,g,f+28|0)|0}while(0);R=f+28|0;k=c[R>>2]|0;do if((k|0)>0){n=c[f+84>>2]|0;if((n|0)==0?(c[(c[$>>2]|0)+48>>2]|0)==0:0){k=8;break}k=Xd[c[H+508>>2]&255](f,g,n+l|0,k)|0;if(!k){k=Ed[c[H+516>>2]&511](f)|0;if((k|0)==0&j<<24>>24==0){k=c[R>>2]|0;A=1;aa=21}else aa=120}}else{A=0;aa=21}while(0);a:do if((aa|0)==21){do if((k|0)!=0?(y=f+32|0,(b[y>>1]|0)!=0):0){k=c[E>>2]|0;p=(c[f+36>>2]|0)-k|0;S=f+68|0;c[S>>2]=p;j=f+72|0;c[j>>2]=0;r=c[C>>2]|0;T=f+76|0;c[T>>2]=r+p;p=f+80|0;c[p>>2]=0;U=f+184|0;c[U>>2]=0;n=(c[f+48>>2]|0)+(c[D>>2]|0)|0;o=f+188|0;c[o>>2]=n;V=f+192|0;c[V>>2]=0;q=f+196|0;c[q>>2]=n-(c[B>>2]|0);n=c[(c[(c[f>>2]|0)+128>>2]|0)+48>>2]|0;if((((n|0)!=0?(s=c[(c[n>>2]|0)+8>>2]|0,(s|0)!=0):0)?(c[Z>>2]=k,c[Z+4>>2]=0,t=Z+8|0,c[t>>2]=r,c[Z+12>>2]=0,(Xd[s&255](c[n+4>>2]|0,g,0,Z)|0)==0):0)?(x=c[t>>2]|0,c[E>>2]=c[Z>>2]<<16>>16,x=x&65535,c[C>>2]=x,c[D>>2]=0,c[B>>2]=0,(a[z>>0]|0)==0):0){a[z>>0]=1;c[f+60>>2]=x}k=b[y>>1]|0;if(k<<16>>16>0){k=Ed[c[H+520>>2]&511](f)|0;if(k)break;Bd[c[H+512>>2]&511](f);p=c[X>>2]|0;o=p+58|0;j=b[o>>1]|0;s=p+60|0;r=S;k=c[r+4>>2]|0;t=(c[s>>2]|0)+(j<<3)|0;c[t>>2]=c[r>>2];c[t+4>>2]=k;t=j+1|0;k=T;r=c[k+4>>2]|0;u=(c[s>>2]|0)+(t<<3)|0;c[u>>2]=c[k>>2];c[u+4>>2]=r;u=j+2|0;r=U;k=c[r+4>>2]|0;v=(c[s>>2]|0)+(u<<3)|0;c[v>>2]=c[r>>2];c[v+4>>2]=k;v=j+3|0;k=V;r=c[k+4>>2]|0;q=(c[s>>2]|0)+(v<<3)|0;c[q>>2]=c[k>>2];c[q+4>>2]=r;q=p+64|0;a[(c[q>>2]|0)+j>>0]=0;a[(c[q>>2]|0)+t>>0]=0;a[(c[q>>2]|0)+u>>0]=0;a[(c[q>>2]|0)+v>>0]=0;r=j+4|0;k=c[f>>2]|0;n=a[k+668>>0]|0;if(n<<24>>24){m=c[k+100>>2]|0;k=wu(c[k+104>>2]|0,n,c[k+672>>2]|0,c[F>>2]|0,Z,r)|0;if(k)break a;k=c[Z>>2]|0;if((r|0)>0){n=c[s>>2]|0;l=0;do{X=n+(l<<3)|0;c[X>>2]=(c[X>>2]|0)+(c[k+(l<<3)>>2]|0);X=n+(l<<3)+4|0;c[X>>2]=(c[X>>2]|0)+(c[k+(l<<3)+4>>2]|0);l=l+1|0}while((l|0)!=(r|0))}Ag(m,k);c[Z>>2]=0}k=c[Y>>2]|0;if(!(k&2)){k=b[o>>1]|0;b[f+132>>1]=k;b[f+134>>1]=b[p+56>>1]|0;c[f+136>>2]=c[p+76>>2];Z=c[s>>2]|0;c[f+140>>2]=Z;X=c[p+80>>2]|0;c[f+144>>2]=X;c[f+148>>2]=c[q>>2];c[f+152>>2]=c[p+68>>2];b[f+156>>1]=0;qfa(X|0,Z|0,((k&65535)<<3)+32|0)|0;k=c[Y>>2]|0}n=c[s>>2]|0;l=n+(r<<3)|0;if(!(k&1)){p=c[f+4>>2]|0;m=c[p+48>>2]|0;p=c[p+52>>2]|0;if((r|0)>0){do{c[n>>2]=qg(c[n>>2]|0,m)|0;Z=n+4|0;c[Z>>2]=qg(c[Z>>2]|0,p)|0;n=n+8|0}while(n>>>0>>0);k=c[Y>>2]|0;n=c[s>>2]|0}Z=n+(j<<3)|0;Y=c[Z+4>>2]|0;X=S;c[X>>2]=c[Z>>2];c[X+4>>2]=Y;X=(c[s>>2]|0)+(t<<3)|0;Y=c[X+4>>2]|0;Z=T;c[Z>>2]=c[X>>2];c[Z+4>>2]=Y;Z=(c[s>>2]|0)+(u<<3)|0;Y=c[Z+4>>2]|0;X=U;c[X>>2]=c[Z>>2];c[X+4>>2]=Y;X=(c[s>>2]|0)+(v<<3)|0;Y=c[X+4>>2]|0;Z=V;c[Z>>2]=c[X>>2];c[Z+4>>2]=Y}if((k&2|0)==0?(G=f+132|0,b[G>>1]=(e[G>>1]|0)+4,G=xu(f,0)|0,(G|0)!=0):0){k=G;break a}Hg(N);k=0;break a}if(k<<16>>16==-1){G=N+22|0;O=b[G>>1]|0;Q=O<<16>>16;P=b[N+20>>1]|0;k=Ed[c[H+524>>2]&511](f)|0;if(!k){M=f+168|0;J=c[M>>2]|0;Bd[c[H+512>>2]&511](f);k=a[H+668>>0]|0;if(k<<24>>24){r=c[H+100>>2]|0;n=N+84|0;k=wu(c[H+104>>2]|0,k,c[H+672>>2]|0,g,I,(c[n>>2]|0)+4|0)|0;if(k)break a;k=c[n>>2]|0;if((k|0)>0){n=c[I>>2]|0;l=0;m=(c[N+88>>2]|0)+(c[N+48>>2]<<5)|0;while(1){if(b[m+4>>1]&2){H=m+8|0;c[H>>2]=(c[n+(l<<3)>>2]<<16>>16)+(c[H>>2]|0);H=m+12|0;c[H>>2]=(c[n+(l<<3)+4>>2]<<16>>16)+(c[H>>2]|0)}l=l+1|0;if((l|0)==(k|0))break;else m=m+32|0}}else{n=c[I>>2]|0;k=0}c[S>>2]=(c[S>>2]|0)+(c[n+(k<<3)>>2]|0);c[j>>2]=(c[j>>2]|0)+(c[n+(k<<3)+4>>2]|0);H=k+1|0;c[T>>2]=(c[T>>2]|0)+(c[n+(H<<3)>>2]|0);c[p>>2]=(c[p>>2]|0)+(c[n+(H<<3)+4>>2]|0);H=k+2|0;c[U>>2]=(c[U>>2]|0)+(c[n+(H<<3)>>2]|0);c[o>>2]=(c[o>>2]|0)+(c[n+(H<<3)+4>>2]|0);H=k+3|0;c[V>>2]=(c[V>>2]|0)+(c[n+(H<<3)>>2]|0);c[q>>2]=(c[q>>2]|0)+(c[n+(H<<3)+4>>2]|0);Ag(r,n);c[I>>2]=0}k=c[Y>>2]|0;if(!(k&1)){c[S>>2]=qg(c[S>>2]|0,K)|0;c[T>>2]=qg(c[T>>2]|0,K)|0;c[o>>2]=qg(c[o>>2]|0,L)|0;c[q>>2]=qg(c[q>>2]|0,L)|0;k=c[Y>>2]|0}if(k&1024){Hg(N);c[(c[f+8>>2]|0)+72>>2]=1668246896;k=0;break a}B=c[N+84>>2]|0;C=c[N+48>>2]|0;F=f+24|0;D=c[F>>2]|0;E=c[R>>2]|0;Hg(N);if(!B){l=Q;k=0}else{A=N+52|0;w=h+1|0;x=f+4|0;z=0;do{n=z+C|0;l=S;r=c[l>>2]|0;l=c[l+4>>2]|0;p=T;j=c[p>>2]|0;p=c[p+4>>2]|0;q=U;o=c[q>>2]|0;q=c[q+4>>2]|0;t=V;s=c[t>>2]|0;t=c[t+4>>2]|0;v=b[G>>1]|0;y=v<<16>>16;k=Et(f,c[(c[A>>2]|0)+(n<<5)>>2]|0,w,0)|0;if(k)break a;m=c[A>>2]|0;u=m+(n<<5)+4|0;if(!(b[u>>1]&512)){N=S;c[N>>2]=r;c[N+4>>2]=l;N=T;c[N>>2]=j;c[N+4>>2]=p;N=U;c[N>>2]=o;c[N+4>>2]=q;N=V;c[N>>2]=s;c[N+4>>2]=t}k=b[G>>1]|0;b:do if(k<<16>>16!=v<<16>>16){s=c[X>>2]|0;o=s+24|0;t=c[o>>2]|0;s=b[s+22>>1]|0;q=s<<16>>16;r=b[u>>1]|0;p=(r&200)==0;if((s&65535)>(v&65535)&(p^1)){r=m+(n<<5)+16|0;l=y;do{Yg(t+(l<<3)|0,r);l=l+1|0}while((l|0)!=(q|0));r=b[u>>1]|0}l=r&65535;r=c[m+(n<<5)+8>>2]|0;j=c[m+(n<<5)+12>>2]|0;do if(!(l&2)){l=r+Q|0;r=j+y|0;if(!(l>>>0>>0&r>>>0>>0))break b;p=c[o>>2]|0;o=(c[p+(l<<3)>>2]|0)-(c[p+(r<<3)>>2]|0)|0;p=(c[p+(l<<3)+4>>2]|0)-(c[p+(r<<3)+4>>2]|0)|0}else{if(!(j|r))break b;if(p|(l&2048|0)==0)l=j;else{N=mg(c[m+(n<<5)+16>>2]|0,c[m+(n<<5)+20>>2]|0)|0;l=mg(c[m+(n<<5)+28>>2]|0,c[m+(n<<5)+24>>2]|0)|0;r=qg(r,N)|0;l=qg(j,l)|0}if(c[Y>>2]&1){o=r;p=l;break}L=c[x>>2]|0;N=c[L+52>>2]|0;r=qg(r,c[L+48>>2]|0)|0;l=qg(l,N)|0;if(!(b[u>>1]&4)){o=r;p=l;break}o=r+32&-64;p=l+32&-64}while(0);if(!(o|p))break;j=q-y|0;r=s<<16>>16==v<<16>>16;if(!((o|0)==0|r)){l=0;do{N=t+(l+y<<3)|0;c[N>>2]=(c[N>>2]|0)+o;l=l+1|0}while((l|0)!=(j|0))}if((p|0)==0|r)break;else r=0;do{N=t+(r+y<<3)+4|0;c[N>>2]=(c[N>>2]|0)+p;r=r+1|0}while((r|0)!=(j|0))}while(0);z=z+1|0}while(z>>>0>>0);l=k<<16>>16;k=m+(n<<5)|0}c[F>>2]=D;c[R>>2]=E;c[M>>2]=J;if(c[Y>>2]&2){k=0;break a}if(!(l>>>0>Q>>>0?(b[k+4>>1]&256)!=0:0)){k=0;break a}m=c[X>>2]|0;p=m+22|0;k=b[p>>1]|0;n=k<<16>>16;l=n+4|0;do if(!l)aa=102;else{if((l+n+(b[m+58>>1]|0)|0)>>>0<=(c[m+4>>2]|0)>>>0){aa=102;break}Y=Eg(m,l,0)|0;c[W>>2]=Y;if(Y){k=0;break a}k=b[p>>1]|0}while(0);if((aa|0)==102)c[W>>2]=0;q=m+24|0;L=S;Y=c[L+4>>2]|0;N=(c[q>>2]|0)+(k<<16>>16<<3)|0;c[N>>2]=c[L>>2];c[N+4>>2]=Y;N=T;Y=c[N+4>>2]|0;L=(c[q>>2]|0)+((b[p>>1]|0)+1<<3)|0;c[L>>2]=c[N>>2];c[L+4>>2]=Y;L=U;Y=c[L+4>>2]|0;N=(c[q>>2]|0)+((b[p>>1]|0)+2<<3)|0;c[N>>2]=c[L>>2];c[N+4>>2]=Y;N=V;Y=c[N+4>>2]|0;q=(c[q>>2]|0)+((b[p>>1]|0)+3<<3)|0;c[q>>2]=c[N>>2];c[q+4>>2]=Y;q=m+28|0;a[(c[q>>2]|0)+(b[p>>1]|0)>>0]=0;a[(c[q>>2]|0)+((b[p>>1]|0)+1)>>0]=0;a[(c[q>>2]|0)+((b[p>>1]|0)+2)>>0]=0;a[(c[q>>2]|0)+((b[p>>1]|0)+3)>>0]=0;q=c[F>>2]|0;Y=bh(q,c[M>>2]|0)|0;c[W>>2]=Y;if(Y){k=0;break a}k=Nh(q,W)|0;if(c[W>>2]|0){k=0;break a}p=k&65535;if((k&65535)>(e[(c[f>>2]|0)+286>>1]|0)){if((p|0)>(c[R>>2]|0)){k=0;break a}o=f+160|0;k=c[o>>2]|0;m=c[k+388>>2]|0;l=k+392|0;if(m>>>0

>>0){c[l>>2]=Dg(c[k+8>>2]|0,1,m,p,c[l>>2]|0,Z)|0;l=c[Z>>2]|0;n=l;l=(l|0)==0?p:m;k=c[o>>2]|0}else{n=0;l=m}c[W>>2]=n;c[k+388>>2]=l&65535;if(c[W>>2]|0){k=0;break a}}else{if(!(k<<16>>16)){k=0;break a}k=c[f+160>>2]|0}Z=Lh(q,c[k+392>>2]|0,p)|0;c[W>>2]=Z;if(Z){k=0;break a}Z=c[f+8>>2]|0;c[Z+136>>2]=c[(c[f+160>>2]|0)+392>>2];c[Z+140>>2]=p;Z=c[X>>2]|0;k=(e[Z+22>>1]|0)-Q|0;n=f+132|0;b[n>>1]=k;b[f+134>>1]=(e[Z+20>>1]|0)-P;c[f+136>>2]=(c[Z+40>>2]|0)+(Q<<3);c[f+140>>2]=(c[Z+24>>2]|0)+(Q<<3);c[f+144>>2]=(c[Z+44>>2]|0)+(Q<<3);l=c[Z+28>>2]|0;m=f+148|0;c[m>>2]=l+Q;c[f+152>>2]=(c[Z+32>>2]|0)+(P<<1);b[f+156>>1]=O;k=k&65535;do if(k>>>0>Q>>>0){l=l+(Q<<1)|0;a[l>>0]=d[l>>0]&231;l=Q+1|0;k=e[n>>1]|0;if(l>>>0>=k>>>0)break;do{k=(c[m>>2]|0)+l|0;a[k>>0]=d[k>>0]&231;l=l+1|0;k=e[n>>1]|0}while(l>>>0>>0)}while(0);b[n>>1]=k+4;xu(f,1)|0;k=0;break a}}else k=20}else aa=23;while(0);do if((aa|0)==23){X=f+36|0;c[X+0>>2]=0;c[X+4>>2]=0;c[X+8>>2]=0;c[X+12>>2]=0;if(!(j<<24>>24)){l=c[E>>2]|0;s=f+68|0;c[s>>2]=0-l;t=f+72|0;c[t>>2]=0;k=c[C>>2]|0;m=f+76|0;c[m>>2]=k-l;p=f+80|0;c[p>>2]=0;o=f+184|0;c[o>>2]=0;n=c[D>>2]|0;q=f+188|0;c[q>>2]=n;r=f+192|0;c[r>>2]=0;j=f+196|0;c[j>>2]=n-(c[B>>2]|0);n=c[(c[(c[f>>2]|0)+128>>2]|0)+48>>2]|0;if((((n|0)!=0?(u=c[(c[n>>2]|0)+8>>2]|0,(u|0)!=0):0)?(c[Z>>2]=l,c[Z+4>>2]=0,v=Z+8|0,c[v>>2]=k,c[Z+12>>2]=0,(Xd[u&255](c[n+4>>2]|0,g,0,Z)|0)==0):0)?(w=c[v>>2]|0,c[E>>2]=c[Z>>2]<<16>>16,w=w&65535,c[C>>2]=w,c[D>>2]=0,c[B>>2]=0,(a[z>>0]|0)==0):0){a[z>>0]=1;c[f+60>>2]=w}k=c[f>>2]|0;n=a[k+668>>0]|0;if(n<<24>>24){l=c[k+100>>2]|0;k=wu(c[k+104>>2]|0,n,c[k+672>>2]|0,g,I,4)|0;if(k)break;Z=c[I>>2]|0;c[s>>2]=(c[s>>2]|0)+(c[Z>>2]|0);c[t>>2]=(c[t>>2]|0)+(c[Z+4>>2]|0);c[m>>2]=(c[m>>2]|0)+(c[Z+8>>2]|0);c[p>>2]=(c[p>>2]|0)+(c[Z+12>>2]|0);c[o>>2]=(c[o>>2]|0)+(c[Z+16>>2]|0);c[q>>2]=(c[q>>2]|0)+(c[Z+20>>2]|0);c[r>>2]=(c[r>>2]|0)+(c[Z+24>>2]|0);c[j>>2]=(c[j>>2]|0)+(c[Z+28>>2]|0);Ag(l,Z);c[I>>2]=0}if(!(c[Y>>2]&1)){c[s>>2]=qg(c[s>>2]|0,K)|0;c[m>>2]=qg(c[m>>2]|0,K)|0;c[q>>2]=qg(c[q>>2]|0,L)|0;c[j>>2]=qg(c[j>>2]|0,L)|0;k=0}else k=0}else k=0}while(0);if(A<<24>>24)aa=120}while(0);if((aa|0)==120)Bd[c[H+512>>2]&511](f);if(!(_<<24>>24)){aa=k;i=ca;return aa|0}aa=c[(c[$>>2]|0)+48>>2]|0;Cd[c[(c[aa>>2]|0)+4>>2]&255](c[aa+4>>2]|0,ba);aa=k;i=ca;return aa|0}function Ft(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;n=o;c[d>>2]=f;c[d+4>>2]=g;if(g){c[d+396>>2]=c[g+116>>2];c[d+400>>2]=c[g+120>>2];c[d+408>>2]=c[g+128>>2];c[d+412>>2]=c[g+132>>2];c[d+404>>2]=c[g+124>>2];c[d+416>>2]=c[g+136>>2];k=d+244|0;h=g+72|0;j=k+40|0;do{c[k>>2]=c[h>>2];k=k+4|0;h=h+4|0}while((k|0)<(j|0));j=d+216|0;h=g+44|0;c[j+0>>2]=c[h+0>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[d+420>>2]=c[g+140>>2];c[d+424>>2]=c[g+144>>2];j=g+148|0;h=c[j+4>>2]|0;k=d+444|0;c[k>>2]=c[j>>2];c[k+4>>2]=h;k=g+156|0;h=c[k+4>>2]|0;j=d+452|0;c[j>>2]=c[k>>2];c[j+4>>2]=h;j=g+164|0;h=c[j+4>>2]|0;k=d+460|0;c[k>>2]=c[j>>2];c[k+4>>2]=h;k=d+284|0;h=g+172|0;j=k+68|0;do{c[k>>2]=c[h>>2];k=k+4|0;h=h+4|0}while((k|0)<(j|0));c[d+380>>2]=c[g+240>>2];c[d+384>>2]=c[g+244>>2];b[d+468>>1]=b[g+248>>1]|0;c[d+472>>2]=c[g+252>>2];k=d+180|0;h=g+256|0;j=k+36|0;do{c[k>>2]=c[h>>2];k=k+4|0;h=h+4|0}while((k|0)<(j|0));g=d+36|0;k=g+0|0;j=k+36|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(j|0));k=d+72|0;h=g+0|0;j=k+36|0;do{c[k>>2]=c[h>>2];k=k+4|0;h=h+4|0}while((k|0)<(j|0));k=d+108|0;h=g+0|0;j=k+36|0;do{c[k>>2]=c[h>>2];k=k+4|0;h=h+4|0}while((k|0)<(j|0))}m=d+20|0;k=c[m>>2]|0;j=d+8|0;l=c[j>>2]|0;h=d+24|0;g=(e[f+284>>1]|0)+32|0;do if(k>>>0>>0){c[h>>2]=Dg(l,1,k<<2,g<<2,c[h>>2]|0,n)|0;if(!(c[n>>2]|0)){l=c[j>>2]|0;break}c[m>>2]=k;i=o;return}else g=k;while(0);c[m>>2]=g;k=d+388|0;h=c[k>>2]|0;j=d+392|0;g=e[f+286>>1]|0;if(h>>>0>>0){c[j>>2]=Dg(l,1,h,g,c[j>>2]|0,n)|0;if(c[n>>2]|0){c[k>>2]=h&65535;i=o;return}}else g=h;c[k>>2]=g&65535;g=d+144|0;b[d+152>>1]=0;b[d+154>>1]=0;k=d+72|0;h=g+0|0;j=k+36|0;do{c[k>>2]=c[h>>2];k=k+4|0;h=h+4|0}while((k|0)<(j|0));k=d+108|0;h=g+0|0;j=k+36|0;do{c[k>>2]=c[h>>2];k=k+4|0;h=h+4|0}while((k|0)<(j|0));k=d+36|0;h=g+0|0;j=k+36|0;do{c[k>>2]=c[h>>2];k=k+4|0;h=h+4|0}while((k|0)<(j|0));a[d+488>>0]=0;i=o;return}function Gt(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=c[d>>2]|0;g=d+292|0;if(!(a[g>>0]|0))f=(c[h+96>>2]|0)+28|0;else f=d+296|0;i=c[f>>2]|0;if(!i){d=153;return d|0}Ft(i,h,d);c[i+428>>2]=0;c[i+16>>2]=0;a[i+488>>0]=0;a[i+561>>0]=e;f=c[h+636>>2]|0;e=c[h+632>>2]|0;c[i+452>>2]=f;c[i+456>>2]=e;c[i+460>>2]=0;c[i+464>>2]=0;if((e|0)!=0?(c[i+356>>2]=f,c[i+364>>2]=e,c[i+360>>2]=0,c[i+352>>2]=2,(a[g>>0]|0)==0):0)f=Ed[c[h+648>>2]&511](i)|0;else f=0;g=i+284|0;b[i+290>>1]=16384;b[i+292>>1]=0;b[i+294>>1]=16384;b[i+296>>1]=0;b[i+298>>1]=16384;b[i+300>>1]=0;b[g>>1]=0;b[i+286>>1]=0;b[i+288>>1]=0;b[i+344>>1]=1;b[i+346>>1]=1;b[i+348>>1]=1;c[i+304>>2]=1;e=d+172|0;g=g+0|0;h=e+68|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(h|0));c[d+116>>2]=c[i+396>>2];c[d+128>>2]=c[i+408>>2];c[d+140>>2]=c[i+420>>2];c[d+144>>2]=c[i+424>>2];g=i+444|0;h=c[g+4>>2]|0;e=d+148|0;c[e>>2]=c[g>>2];c[e+4>>2]=h;e=i+452|0;h=c[e+4>>2]|0;g=d+156|0;c[g>>2]=c[e>>2];c[g+4>>2]=h;g=i+460|0;i=c[g+4>>2]|0;d=d+164|0;c[d>>2]=c[g>>2];c[d+4>>2]=i;d=f;return d|0}function Ht(d){d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=d+72|0;l=d+108|0;a[l>>0]=0;h=c[d>>2]|0;i=d+44|0;g=d+12|0;c[i+0>>2]=c[g+0>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];c[i+16>>2]=c[g+16>>2];c[i+20>>2]=c[g+20>>2];c[i+24>>2]=c[g+24>>2];g=b[i>>1]|0;if(!(g<<16>>16)){l=151;return l|0}j=d+46|0;f=b[j>>1]|0;if(!(f<<16>>16)){l=151;return l|0}if(b[h+176>>1]&8){m=h+68|0;f=d+48|0;c[f>>2]=rg((g&65535)<<6,e[m>>1]|0)|0;m=rg(e[j>>1]<<6,e[m>>1]|0)|0;g=d+52|0;c[g>>2]=m;c[d+56>>2]=(qg(b[h+70>>1]|0,m)|0)+32&-64;c[d+60>>2]=(qg(b[h+72>>1]|0,c[g>>2]|0)|0)+32&-64;c[d+64>>2]=(qg(b[h+74>>1]|0,c[g>>2]|0)|0)+32&-64;c[d+68>>2]=(qg(b[h+76>>1]|0,c[f>>2]|0)|0)+32&-64;g=b[i>>1]|0;f=b[j>>1]|0}if((g&65535)<(f&65535)){c[d+88>>2]=c[d+52>>2];b[d+80>>1]=f;c[k>>2]=rg(g&65535,f&65535)|0;f=65536}else{c[d+88>>2]=c[d+48>>2];b[d+80>>1]=g;c[k>>2]=65536;f=rg(f&65535,g&65535)|0}c[d+76>>2]=f;a[d+301>>0]=0;a[l>>0]=1;l=0;return l|0}function It(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=i;i=i+16|0;A=B+8|0;f=B;y=B+4|0;z=c[d+28>>2]|0;w=c[a+672>>2]|0;if(!w){c[A>>2]=0;d=0;y=0;x=0;Ag(z,x);Ag(z,y);Ag(z,d);d=c[A>>2]|0;i=B;return d|0}x=a+644|0;if(!(c[x>>2]|0)){c[A>>2]=0;d=0;y=0;x=0;Ag(z,x);Ag(z,y);Ag(z,d);d=c[A>>2]|0;i=B;return d|0}v=Xd[c[a+504>>2]&255](a,1668702578,d,f)|0;c[A>>2]=v;if(v){c[A>>2]=0;d=0;y=0;x=0;Ag(z,x);Ag(z,y);Ag(z,d);d=c[A>>2]|0;i=B;return d|0}v=Uh(d,c[f>>2]|0)|0;c[A>>2]=v;if(v){c[A>>2]=0;d=0;y=0;x=0;Ag(z,x);Ag(z,y);Ag(z,d);d=c[A>>2]|0;i=B;return d|0}v=d+32|0;k=(c[v>>2]|0)-(c[d>>2]|0)|0;if(($h(d)|0)==65536){f=Dg(z,4,0,c[w>>2]|0,0,A)|0;if(!(c[A>>2]|0)){g=Dg(z,4,0,c[w>>2]|0,0,A)|0;if(!(c[A>>2]|0)){h=Dg(z,4,0,c[w>>2]|0,0,A)|0;if((c[A>>2]|0)==0?(j=Zh(d)|0,l=Zh(d)|0,(j&4095)!=0):0){u=a+640|0;s=j&4095;t=0;q=k+(l&65535)|0;while(1){p=(Zh(d)|0)&65535;j=Zh(d)|0;l=j&65535;if(!(l&32768)){if((l&16384|0)!=0?(c[w>>2]&2147483647|0)!=0:0){a=0;do{Zh(d)|0;a=a+1|0}while(a>>>0>2]<<1>>>0)}}else{if(!(c[w>>2]|0))a=0;else{k=0;do{c[f+(k<<2)>>2]=(Zh(d)|0)<<16>>16<<2;k=k+1|0;a=c[w>>2]|0}while(k>>>0>>0)}if(!((l&16384|0)==0|(a|0)==0)){k=0;do{c[g+(k<<2)>>2]=(Zh(d)|0)<<16>>16<<2;k=k+1|0;a=c[w>>2]|0}while(k>>>0>>0);if(a){a=0;do{c[h+(a<<2)>>2]=(Zh(d)|0)<<16>>16<<2;a=a+1|0}while(a>>>0<(c[w>>2]|0)>>>0)}}o=yu(w,j,f,g,h)|0;if(!((o|0)==0|(l&8192|0)==0)){n=c[d>>2]|0;m=(c[v>>2]|0)-n|0;c[v>>2]=n+q;n=zu(d,y)|0;j=c[y>>2]|0;k=(j|0)==0;if(k)a=c[u>>2]|0;else a=j;l=Au(d,a)|0;do if(!((n|0)==0|(l|0)==0))if((n|0)==(-1|0)){if(!(c[u>>2]|0))break;a=c[x>>2]|0;k=0;do{r=e[a+(k<<1)>>1]|0;r=(qg(b[l+(k<<1)>>1]|0,o)|0)+r&65535;a=c[x>>2]|0;b[a+(k<<1)>>1]=r;k=k+1|0}while(k>>>0<(c[u>>2]|0)>>>0);r=37}else{if(k){r=38;break}a=c[x>>2]|0;k=0;do{r=e[n+(k<<1)>>1]|0;C=e[a+(r<<1)>>1]|0;C=(qg(b[l+(k<<1)>>1]|0,o)|0)+C&65535;a=c[x>>2]|0;b[a+(r<<1)>>1]=C;k=k+1|0}while(k>>>0>>0);r=37}else r=37;while(0);if((r|0)==37?(r=0,(n|0)!=(-1|0)):0)r=38;if((r|0)==38){r=0;Ag(z,n)}Ag(z,l);c[v>>2]=(c[d>>2]|0)+m}}t=t+1|0;if((t|0)==(s|0))break;else q=p+q|0}}}else h=0}else{h=0;g=0}}else{c[A>>2]=0;h=0;g=0;f=0}Xh(d);C=h;d=g;y=f;Ag(z,y);Ag(z,d);Ag(z,C);C=c[A>>2]|0;i=B;return C|0}function Jt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k;e=bh(a,0)|0;do if(!e){f=Nh(a,g)|0;e=c[g>>2]|0;if(!e){if((f+32767&65535)<2){ei(a,g)|0;e=c[g>>2]|0;if(e)break;if(f<<16>>16!=-32767)j=6}else j=6;if((j|0)==6?(h=bh(a,0)|0,(h|0)!=0):0){e=h;break}e=Uh(a,d)|0;if(!e){e=(ffa(c[a+32>>2]|0,b,d)|0)==0;Xh(a);e=e?0:2}}}while(0);i=k;return e|0}function Kt(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;c[e>>2]=f;m=f+g|0;n=e+8|0;c[n>>2]=m;B=e+12|0;c[B>>2]=0;x=e+28|0;Bd[c[x>>2]&511](e);f=c[e>>2]|0;a:do if(f>>>0>>0){y=e+372|0;z=e+32|0;A=b+128|0;o=e+36|0;p=b+528|0;q=b+132|0;r=e+68|0;s=e+64|0;t=b+132|0;u=b+164|0;v=b+168|0;w=b+460|0;l=0;h=0;b:while(1){g=a[f>>0]|0;if(g<<24>>24==101){j=f+6|0;if((j|0)!=(m|0)){if(j>>>0>>0)switch(a[f+5>>0]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:{D=7;break}default:{}}}else D=7;if((D|0)==7?(0,(hfa(f,86568,5)|0)==0):0)break a;if(g<<24>>24==70)D=14;else if(g<<24>>24==99)D=9;else D=21}else if(g<<24>>24==70)D=14;else if(g<<24>>24==99)D=9;else D=21;if((D|0)==9){D=0;j=f+10|0;if((j|0)!=(m|0)){if(j>>>0>>0)switch(a[f+9>>0]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:{D=12;break}default:{}}}else D=12;if((D|0)==12?(0,(hfa(f,86576,9)|0)==0):0)break a;if(g<<24>>24==70)D=14;else D=21}c:do if((D|0)==14){D=0;j=f+14|0;if((j|0)!=(m|0)){if(j>>>0>=m>>>0){D=21;break}switch(a[f+13>>0]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:break;default:{D=21;break c}}}if(!(hfa(f,89080,13)|0)){g=c[y>>2]|0;if(g&1)c[y>>2]=g|2;c[e>>2]=f+13;g=l}else D=21}while(0);d:do if((D|0)==21){D=0;if(((g&255)+-48|0)>>>0<10){Bd[c[z>>2]&511](e);if(!(c[B>>2]|0)){g=1;h=f;break}else break a}j=(f+6|0)>>>0>>0;if(g<<24>>24==82&j?!((a[f+1>>0]|0)!=68|l<<24>>24==0):0){c[e>>2]=h;f=c[(c[A>>2]|0)+48>>2]|0;k=c[n>>2]|0;Bd[c[x>>2]&511](e);g=c[e>>2]|0;if(g>>>0>=k>>>0){D=29;break b}if(((d[g>>0]|0)+-48|0)>>>0>=10){D=29;break b}j=Ed[c[o>>2]&511](e)|0;Bd[c[z>>2]&511](e);g=c[e>>2]|0;if((j|0)<=-1){D=29;break b}if((j|0)>=(k-(g+1)|0)){D=29;break b}c[e>>2]=g+(j+1);if(!(c[B>>2]|0)){g=0;break}else{f=3;D=79;break b}}if(g<<24>>24==45&j?!((a[f+1>>0]|0)!=124|l<<24>>24==0):0){c[e>>2]=h;f=c[(c[A>>2]|0)+48>>2]|0;k=c[n>>2]|0;Bd[c[x>>2]&511](e);g=c[e>>2]|0;if(g>>>0>=k>>>0){D=38;break b}if(((d[g>>0]|0)+-48|0)>>>0>=10){D=38;break b}g=Ed[c[o>>2]&511](e)|0;Bd[c[z>>2]&511](e);j=c[e>>2]|0;if((g|0)<=-1){D=38;break b}if((g|0)>=(k-(j+1)|0)){D=38;break b}c[e>>2]=j+(g+1);if(!(c[B>>2]|0)){g=0;break}else{f=3;D=79;break b}}if(!(g<<24>>24==47&(f+2|0)>>>0>>0)){Bd[c[z>>2]&511](e);if(!(c[B>>2]|0)){g=0;break}else break a}f=f+1|0;c[e>>2]=f;Bd[c[z>>2]&511](e);if(c[B>>2]|0)break a;k=c[e>>2]|0;j=k-f|0;if((j+-1|0)>>>0<21&k>>>0>>0){k=a[f>>0]|0;g=89824;l=86592;while(1){if((k<<24>>24==(a[g>>0]|0)?(j|0)==(tfa(g|0)|0):0)?(ffa(f,g,j)|0)==0:0)break;l=l+36|0;g=c[l>>2]|0;if(!g){g=0;break d}}f=c[y>>2]|0;if((f&1)+1&c[l+32>>2]){if((f&2|0)!=0?(gfa(g,90080)|0)!=0:0){g=0;break}f=c[p>>2]|0;if(!f)j=0;else j=(c[f>>2]|0)==0?0:f;k=c[l+8>>2]|0;do if((k|0)!=11){switch(c[l+4>>2]|0){case 6:{c[C>>2]=e;g=0;f=C;break}case 7:{c[C>>2]=b;g=0;f=C;break}case 2:{c[C>>2]=u;g=0;f=C;break}case 4:{c[C>>2]=v;if(!j){g=0;f=C}else{g=c[j>>2]|0;f=j+212|0}break}case 3:{c[C>>2]=t;if(!j){g=0;f=C}else{g=c[j>>2]|0;f=j+144|0}break}case 5:{c[C>>2]=w;if(!j){g=0;f=C}else{g=c[j>>2]|0;f=j+284|0}break}case 8:{c[C>>2]=f;g=0;f=C;break}default:{c[C>>2]=q;g=0;f=C}}if(!(c[f>>2]|0)){c[B>>2]=0;g=0;break d}if((k+-9|0)>>>0<2){f=Qd[c[r>>2]&127](e,l,f,g,0)|0;break}else{f=Qd[c[s>>2]&127](e,l,f,g,0)|0;break}}else{Cd[c[l+12>>2]&255](b,e);f=c[B>>2]|0}while(0);c[B>>2]=f;if(f){if((f&255|0)!=162){D=79;break b}c[B>>2]=0;g=0}else g=0}else g=0}else g=0}while(0);Bd[c[x>>2]&511](e);f=c[e>>2]|0;if(f>>>0>=m>>>0)break a;else l=g}if((D|0)==29){if(f){D=3;i=E;return D|0}c[B>>2]=3;D=3;i=E;return D|0}else if((D|0)==38){if(f){D=3;i=E;return D|0}c[B>>2]=3;D=3;i=E;return D|0}else if((D|0)==79){i=E;return f|0}}while(0);D=c[B>>2]|0;i=E;return D|0}function Lt(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[b+100>>2]|0;e=b+528|0;f=c[e>>2]|0;if(!f)return;b=c[f>>2]|0;g=c[f+4>>2]|0;d=f+24|0;Ag(h,c[d>>2]|0);c[d>>2]=0;if(b>>>0>1)sfa(f+28|0,0,(b<<2)+-4|0)|0;d=f+216|0;Ag(h,c[d>>2]|0);c[d>>2]=0;d=f+148|0;Ag(h,c[d>>2]|0);c[d>>2]=0;d=f+288|0;Ag(h,c[d>>2]|0);c[d>>2]=0;if(b){d=0;do{c[f+(d<<2)+212>>2]=0;c[f+(d<<2)+144>>2]=0;c[f+(d<<2)+284>>2]=0;d=d+1|0}while((d|0)!=(b|0))}b=f+136|0;Ag(h,c[b>>2]|0);c[b>>2]=0;c[f+140>>2]=0;b=(g|0)==0;if(!b){d=0;do{i=f+(d<<2)+8|0;Ag(h,c[i>>2]|0);c[i>>2]=0;d=d+1|0}while((d|0)!=(g|0));if(!b){b=0;do{i=f+(b*12|0)+92|0;Ag(h,c[i>>2]|0);c[i>>2]=0;a[f+(b*12|0)+88>>0]=0;b=b+1|0}while((b|0)!=(g|0))}}Ag(h,c[e>>2]|0);c[e>>2]=0;return}function Mt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=Nt(a,b,e)|0;if(d){i=f;return d|0}b=c[(c[(c[a+4>>2]|0)+128>>2]|0)+48>>2]|0;if(!b){i=f;return d|0}Cd[c[(c[b>>2]|0)+4>>2]&255](c[b+4>>2]|0,e);i=f;return d|0}function Nt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;j=k;e=c[a+4>>2]|0;h=c[(c[e+128>>2]|0)+48>>2]|0;l=a+1376|0;f=e+436|0;c[l+0>>2]=c[f+0>>2];c[l+4>>2]=c[f+4>>2];c[l+8>>2]=c[f+8>>2];c[l+12>>2]=c[f+12>>2];l=e+452|0;f=c[l+4>>2]|0;g=a+1392|0;c[g>>2]=c[l>>2];c[g+4>>2]=f;g=(h|0)!=0;do if(g){e=Hd[c[c[h>>2]>>2]&255](c[h+4>>2]|0,b,d)|0;if(!e){f=c[d>>2]|0;e=c[d+4>>2]|0;break}else{l=e;i=k;return l|0}}else{f=c[(c[e+424>>2]|0)+(b<<2)>>2]|0;c[d>>2]=f;e=c[(c[e+428>>2]|0)+(b<<2)>>2]|0;c[d+4>>2]=e}while(0);e=Hd[c[a+1484>>2]&255](a,f,e)|0;if(!((e|0)==0&g)){l=e;i=k;return l|0}if(!(c[(c[h>>2]|0)+8>>2]|0)){l=0;i=k;return l|0}e=a+32|0;c[j>>2]=(lg(c[e>>2]|0)|0)>>16;c[j+4>>2]=0;f=a+40|0;g=j+8|0;c[g>>2]=(lg(c[f>>2]|0)|0)>>16;a=a+44|0;d=j+12|0;c[d>>2]=(lg(c[a>>2]|0)|0)>>16;l=Xd[c[(c[h>>2]|0)+8>>2]&255](c[h+4>>2]|0,b,0,j)|0;c[e>>2]=c[j>>2]<<16;c[f>>2]=c[g>>2]<<16;c[a>>2]=c[d>>2]<<16;i=k;return l|0}function Ot(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(d>>>0>65535){b=0;return b|0}h=c[e+284>>2]|0;if((h|0)<=0){b=0;return b|0}f=c[e+288>>2]|0;e=0;while(1){g=c[f+(e<<2)>>2]|0;if((((g|0)!=0?(a[g>>0]|0)==(a[b>>0]|0):0)?(tfa(g|0)|0)==(d|0):0)?(hfa(g,b,d)|0)==0:0){f=9;break}e=e+1|0;if((e|0)>=(h|0)){e=0;f=9;break}}if((f|0)==9)return e|0;return 0}function Pt(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]<<16|c[a+4>>2];a=c[b>>2]<<16|c[b+4>>2];if(d>>>0>a>>>0){b=1;return b|0}b=(d>>>0>>0)<<31>>31;return b|0}function Qt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;k=c[a+100>>2]|0;c[m>>2]=0;f=a+528|0;e=c[f>>2]|0;do if(!e){e=yg(k,420,m)|0;if(!(c[m>>2]|0)){c[e+416>>2]=0;c[f>>2]=e;l=e;break}else{m=c[m>>2]|0;i=n;return m|0}}else l=e;while(0);do if(!b)g=15;else{e=c[l>>2]|0;if(e)if((e|0)==(b|0)){g=15;break}else break;e=l+148|0;c[e>>2]=Dg(k,32,0,b,0,m)|0;if(c[m>>2]|0){m=c[m>>2]|0;i=n;return m|0}g=l+216|0;c[g>>2]=Dg(k,196,0,b,0,m)|0;if(c[m>>2]|0){m=c[m>>2]|0;i=n;return m|0}j=l+288|0;c[j>>2]=Dg(k,16,0,b,0,m)|0;if(c[m>>2]|0){m=c[m>>2]|0;i=n;return m|0}f=Dg(k,4,0,b<<1,0,m)|0;c[l+136>>2]=f;if(c[m>>2]|0){m=c[m>>2]|0;i=n;return m|0}c[l+140>>2]=f+(b<<2);c[l+144>>2]=a+132;c[l+212>>2]=a+168;c[l+284>>2]=a+460;if(b>>>0>=2){h=c[e>>2]|0;a=c[g>>2]|0;e=c[j>>2]|0;f=2;do{h=h+32|0;c[l+(f<<2)+144>>2]=h;a=a+196|0;c[l+(f<<2)+212>>2]=a;e=e+16|0;c[l+(f<<2)+284>>2]=e;f=f+1|0}while(f>>>0<=b>>>0)}c[l>>2]=b;g=15}while(0);do if((g|0)==15){e=l+4|0;f=c[e>>2]|0;if(d){if(!((f|0)==0|(f|0)==(d|0)))break;c[e>>2]=d;f=d}g=c[l>>2]|0;if(!((g|0)!=0&(f|0)!=0)){m=c[m>>2]|0;i=n;return m|0}h=l+24|0;if(c[h>>2]|0){m=c[m>>2]|0;i=n;return m|0}e=Dg(k,4,0,da(f,g)|0,0,m)|0;c[h>>2]=e;if((c[m>>2]|0)==0&g>>>0>1)a=1;else{m=c[m>>2]|0;i=n;return m|0}while(1){c[l+(a<<2)+24>>2]=e+((da(a,f)|0)<<2);a=a+1|0;if((a|0)==(g|0))break;e=c[h>>2]|0}m=c[m>>2]|0;i=n;return m|0}while(0);c[m>>2]=3;m=c[m>>2]|0;i=n;return m|0}function Rt(a,d){a=a|0;d=d|0;var e=0,f=0;f=a+4|0;e=bh(d,c[a>>2]|0)|0;if(e){a=e;return a|0}e=fi(d,90544,f)|0;if(e){a=e;return a|0}e=b[f>>1]|0;if(!(e<<16>>16==768|e<<16>>16==512)){a=2;return a|0}f=a+8|0;if((c[f>>2]|0)>>>0<(e<<16>>16==768?148:118)>>>0){a=2;return a|0}if(e<<16>>16==512){e=a+132|0;c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0}if(b[a+72>>1]&1){a=2;return a|0}e=bh(d,c[a>>2]|0)|0;if(e){a=e;return a|0}a=Th(d,c[f>>2]|0,a+160|0)|0;return a|0}function St(a){a=a|0;var b=0,d=0;b=c[a+28>>2]|0;d=c[a>>2]|0;if(d)Cd[c[b+8>>2]&255](b,d);c[a+4>>2]=0;c[a>>2]=0;c[a+24>>2]=0;return}function Tt(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+16|0;l=p;c[l>>2]=0;o=d+12|0;k=c[o>>2]|0;n=d+16|0;j=c[n>>2]|0;do if((k|0)>=(j|0)){if((j|0)>44739241){c[l>>2]=64;e=64;f=0;c[h>>2]=f;i=p;return e|0}q=(j>>2)+4|0;m=q+j|0;m=(q|0)<0|(m|0)>44739242?44739242:m;q=d+20|0;k=Dg(g,48,j,m,c[q>>2]|0,l)|0;c[q>>2]=k;j=c[l>>2]|0;if(!j){c[n>>2]=m;m=k;k=c[o>>2]|0;break}else{q=j;e=0;c[h>>2]=e;i=p;return q|0}}else m=c[d+20>>2]|0;while(0);j=m+(k*48|0)|0;n=d+24|0;a:do if((k|0)>0){g=j;while(1){j=g+-48|0;k=b[j>>1]|0;if((k|0)<(e|0)){j=g;break a}if((k|0)==(e|0)?(c[n>>2]|0)==(f|0):0){j=g;break a}g=g+0|0;k=j+0|0;l=g+48|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(l|0));if(j>>>0>m>>>0)g=j;else break}}while(0);c[o>>2]=(c[o>>2]|0)+1;g=j+0|0;l=g+48|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(l|0));b[j>>1]=e;a[j+13>>0]=f;q=0;e=j;c[h>>2]=e;i=p;return q|0}function Ut(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=c[d+28>>2]|0;i=c[e+28>>2]|0;g=d+24|0;j=(c[g>>2]|0)-k|0;f=e+24|0;h=(c[f>>2]|0)-i|0;if(a>>>0>b>>>0)return;if((i|0)==(k|0)){do{i=c[a+28>>2]|0;c[a+24>>2]=((i|0)>(k|0)?h:j)+i;a=a+40|0}while(a>>>0<=b>>>0);return}e=i-k|0;if((i|0)>(k|0)){do{d=c[a+28>>2]|0;do if((d|0)>(k|0))if((d|0)<(i|0)){l=c[g>>2]|0;d=(og(d-k|0,(c[f>>2]|0)-l|0,e)|0)+l|0;break}else{d=d+h|0;break}else d=d+j|0;while(0);c[a+24>>2]=d;a=a+40|0}while(a>>>0<=b>>>0);return}else{do{d=c[a+28>>2]|0;do if((d|0)>(i|0))if((d|0)<(k|0)){l=c[g>>2]|0;d=(og(d-k|0,(c[f>>2]|0)-l|0,e)|0)+l|0;break}else{d=d+j|0;break}else d=d+h|0;while(0);c[a+24>>2]=d;a=a+40|0}while(a>>>0<=b>>>0);return}}function Vt(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;t=v+4|0;u=v;s=e+12|0;l=c[s>>2]|0;m=a[b>>0]|0;if(!(m<<24>>24))g=0;else{h=m;j=b;g=0;do{j=j+1|0;g=(g*31|0)+(h<<24>>24)|0;h=a[j>>0]|0}while(h<<24>>24!=0)}r=e+4|0;j=c[r>>2]|0;g=l+(((g>>>0)%(j>>>0)|0)<<2)|0;h=c[g>>2]|0;a:do if(h){k=l+(j+-1<<2)|0;while(1){j=c[h>>2]|0;if((a[j>>0]|0)==m<<24>>24?(gfa(j,b)|0)==0:0)break;g=g+-4|0;g=g>>>0>>0?k:g;h=c[g>>2]|0;if(!h){n=8;break a}}c[u>>2]=0;if(!h)h=g;else{c[h+4>>2]=d;u=c[u>>2]|0;i=v;return u|0}}else n=8;while(0);if((n|0)==8){c[u>>2]=0;h=g}g=yg(f,8,u)|0;if(c[u>>2]|0){u=c[u>>2]|0;i=v;return u|0}c[h>>2]=g;c[g>>2]=b;c[g+4>>2]=d;q=e+8|0;g=c[q>>2]|0;do if((g|0)>=(c[e>>2]|0)){o=c[s>>2]|0;p=c[r>>2]|0;c[t>>2]=0;g=p<<1;c[r>>2]=g;c[e>>2]=(g|0)/3|0;c[s>>2]=Dg(f,4,0,g,0,t)|0;g=c[t>>2]|0;if(g){c[u>>2]=g;u=c[u>>2]|0;i=v;return u|0}if((p|0)>0){n=o;d=0;while(1){b=c[n>>2]|0;if(b){j=c[b>>2]|0;m=c[s>>2]|0;l=a[j>>0]|0;if(!(l<<24>>24))g=0;else{k=l;h=j;g=0;do{h=h+1|0;g=(g*31|0)+(k<<24>>24)|0;k=a[h>>0]|0}while(k<<24>>24!=0)}k=c[r>>2]|0;g=m+(((g>>>0)%(k>>>0)|0)<<2)|0;h=c[g>>2]|0;b:do if(h){k=m+(k+-1<<2)|0;do{h=c[h>>2]|0;if((a[h>>0]|0)==l<<24>>24?(gfa(h,j)|0)==0:0)break b;g=g+-4|0;g=g>>>0>>0?k:g;h=c[g>>2]|0}while((h|0)!=0)}while(0);c[g>>2]=b}d=d+1|0;if((d|0)==(p|0))break;else n=n+4|0}}Ag(f,o);f=c[t>>2]|0;c[u>>2]=f;if(!f){g=c[q>>2]|0;break}else{u=c[u>>2]|0;i=v;return u|0}}while(0);c[q>>2]=g+1;u=c[u>>2]|0;i=v;return u|0}function Wt(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+48|0;r=u+4|0;o=u;p=u+8|0;t=b+8|0;c[t>>2]=0;s=b+4|0;if(c[s>>2]|0){c[c[b>>2]>>2]=356424;c[(c[b>>2]|0)+4>>2]=356424;c[(c[b>>2]|0)+8>>2]=356424;c[(c[b>>2]|0)+12>>2]=356424;c[(c[b>>2]|0)+16>>2]=356424}if(!g){t=0;i=u;return t|0}l=a[f>>0]|0;if(!(l<<24>>24)){t=0;i=u;return t|0}if(!e){t=6;i=u;return t|0}j=a[e>>0]|0;if(!(j<<24>>24)){t=6;i=u;return t|0}h=p+0|0;k=h+32|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(k|0));h=j;j=0;while(1){if(!(h<<24>>24)){e=j;break}else if(h<<24>>24==43){e=e+1|0;if(!(a[e>>0]|0))j=1;else q=11}else{e=e+1|0;q=11}if((q|0)==11){q=0;k=h&255;n=p+(k>>>3)|0;a[n>>0]=1<<(k&7)|d[n>>0]}h=a[e>>0]|0}n=f+g|0;a:do if((g|0)>0){m=b+12|0;g=(e|0)==0;e=l;k=0;while(1){if(!(e<<24>>24))break a;else h=f;while(1){k=e&255;j=h+1|0;if(a[p+(k>>>3)>>0]&1<<(k&7))break;e=a[j>>0]|0;if(!(e<<24>>24)){h=j;break}else h=j}e=c[t>>2]|0;if((e|0)==(c[s>>2]|0)){c[o>>2]=0;if((e|0)==-1)e=-1;else{j=e+5+(e>>>1)|0;if((e|0)==536870911)break;j=j>>>0>>0|j>>>0>536870911?536870911:j;c[b>>2]=Dg(c[m>>2]|0,4,e,j,c[b>>2]|0,o)|0;e=c[o>>2]|0;if(e){q=43;break}c[s>>2]=j;e=c[t>>2]|0}}c[t>>2]=e+1;c[(c[b>>2]|0)+(e<<2)>>2]=h>>>0>f>>>0?f:356424;e=a[h>>0]|0;j=e<<24>>24==0;if(g)if(j){e=0;k=0;j=h}else{j=h+1|0;a[h>>0]=0;h=a[j>>0]|0;q=31}else if(!j){j=h;while(1){k=e&255;if(!(a[p+(k>>>3)>>0]&1<<(k&7)))break;a[j>>0]=0;j=j+1|0;e=a[j>>0]|0;if(!(e<<24>>24)){e=0;break}}if(j>>>0>h>>>0){h=e;q=31}else k=0}else{e=0;k=0;j=h}if((q|0)==31){q=0;e=h;k=h<<24>>24==0}k=k&1;if(j>>>0>>0)f=j;else break a}if((q|0)==43){i=u;return e|0}c[o>>2]=64;t=64;i=u;return t|0}else k=0;while(0);e=(c[t>>2]|0)+k|0;j=c[s>>2]|0;do if(e>>>0>=j>>>0?(c[r>>2]=0,j>>>0<(e+1|0)>>>0):0){e=j+5+(j>>>1)|0;if((j|0)==536870911){c[r>>2]=64;t=64;i=u;return t|0}h=e>>>0>>0|e>>>0>536870911?536870911:e;c[b>>2]=Dg(c[b+12>>2]|0,4,j,h,c[b>>2]|0,r)|0;e=c[r>>2]|0;if(!e){c[s>>2]=h;break}else{t=e;i=u;return t|0}}while(0);e=c[t>>2]|0;if(k){s=e+1|0;c[t>>2]=s;c[(c[b>>2]|0)+(e<<2)>>2]=356424;e=s}c[(c[b>>2]|0)+(e<<2)>>2]=0;t=0;i=u;return t|0}function Xt(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+144|0;u=w;t=w+8|0;if(!(ffa(d,5232,13)|0)){r=h+32|0;m=c[r>>2]|0;a:do if(((m|0)!=0?(c[m+72>>2]|0)!=0:0)?(o=c[m+128>>2]|0,p=c[o+12>>2]|0,o=c[o+4>>2]|0,n=p+((1895527114%(o>>>0)|0)<<2)|0,l=c[n>>2]|0,(l|0)!=0):0){o=p+(o+-1<<2)|0;while(1){f=c[l>>2]|0;if((a[f>>0]|0)==70?(gfa(f,4896)|0)==0:0)break;l=n+-4|0;n=l>>>0

>>0?o:l;l=c[n>>2]|0;if(!l){v=11;break a}}if(!((l|0)!=0?((c[m+80>>2]|0)+(c[l+4>>2]<<4)|0)!=0:0))v=11}else v=11;while(0);do if((v|0)==11){l=b[m+12>>1]|0;c[m+40>>2]=l;c[u>>2]=l;Xea(t,4888,u)|0;l=Yt(c[r>>2]|0,4896,t)|0;if(!l){m=c[r>>2]|0;b[m+278660>>1]=1;break}else{h=l;i=w;return h|0}}while(0);b:do if(((m|0)!=0?(c[m+72>>2]|0)!=0:0)?(q=c[m+128>>2]|0,s=c[q+12>>2]|0,q=c[q+4>>2]|0,k=s+((908209322%(q>>>0)|0)<<2)|0,j=c[k>>2]|0,(j|0)!=0):0){f=s+(q+-1<<2)|0;while(1){l=c[j>>2]|0;if((a[l>>0]|0)==70?(gfa(l,4912)|0)==0:0)break;j=k+-4|0;k=j>>>0>>0?f:j;j=c[k>>2]|0;if(!j){v=22;break b}}if(!((j|0)!=0?((c[m+80>>2]|0)+(c[j+4>>2]<<4)|0)!=0:0))v=22}else v=22;while(0);do if((v|0)==22){j=b[m+14>>1]|0;c[m+44>>2]=j;c[u>>2]=j;Xea(t,4888,u)|0;j=Yt(c[r>>2]|0,4912,t)|0;if(!j){b[(c[r>>2]|0)+278660>>1]=1;break}else{h=j;i=w;return h|0}}while(0);c[h>>2]=c[h>>2]&-17;c[g>>2]=48;h=0;i=w;return h|0}if(!(ffa(d,5248,21)|0)){h=0;i=w;return h|0}if(!(ffa(d,3472,7)|0)){j=d+7|0;if(a[j>>0]|0){a[j>>0]=0;j=d+8|0}h=Yt(c[h+32>>2]|0,d,j)|0;i=w;return h|0}s=h+32|0;q=c[s>>2]|0;f=d;while(1){j=a[f>>0]|0;if(!(j<<24>>24)){p=-1;break}else if(j<<24>>24==32|j<<24>>24==9){v=33;break}f=f+1|0}if((v|0)==33){a[f>>0]=0;p=j<<24>>24}c:do if((d|0)!=0?(r=a[d>>0]|0,r<<24>>24!=0):0){n=c[q+278688>>2]|0;l=r;k=d;j=0;do{k=k+1|0;j=(j*31|0)+(l<<24>>24)|0;l=a[k>>0]|0}while(l<<24>>24!=0);l=c[q+278680>>2]|0;k=n+(((j>>>0)%(l>>>0)|0)<<2)|0;j=c[k>>2]|0;if(j){m=n+(l+-1<<2)|0;while(1){l=c[j>>2]|0;if((a[l>>0]|0)==r<<24>>24?(gfa(l,d)|0)==0:0)break;j=k+-4|0;k=j>>>0>>0?m:j;j=c[k>>2]|0;if(!j){j=0;break c}}if(j){j=c[j+4>>2]|0;if(j>>>0>82){j=(c[q+278668>>2]|0)+(j+-83<<4)|0;break}else{j=3496+(j<<4)|0;break}}else j=0}else j=0}else j=0;while(0);if((p|0)==-1)k=0;else{k=p&255;a[f>>0]=k}if((j|0)!=0?(c[j+4>>2]|0)!=1:0){o=h+139304|0;j=Wt(o,4840,d,e)|0;if(j){h=j;i=w;return h|0}k=c[o>>2]|0;q=c[k>>2]|0;p=h+139312|0;j=c[p>>2]|0;do if(j){if(j>>>0<2){c[p>>2]=0;j=0;break}l=j+-1|0;j=0;f=1;while(1){c[k+(j<<2)>>2]=c[k+(f<<2)>>2];j=j+1|0;if((j|0)==(l|0))break;k=c[o>>2]|0;f=f+1|0}c[p>>2]=l;if(l){j=c[c[o>>2]>>2]|0;m=j;n=1;k=0;while(1){f=a[m>>0]|0;if(f<<24>>24){while(1){m=m+1|0;l=k+1|0;a[j+k>>0]=f;f=a[m>>0]|0;if(!(f<<24>>24)){k=l;break}else k=l}l=c[p>>2]|0}if(n>>>0>>0){a[j+k>>0]=32;l=c[p>>2]|0;k=k+1|0}if(n>>>0>=l>>>0)break;m=c[(c[o>>2]|0)+(n<<2)>>2]|0;n=n+1|0}if((j|0)==356424)j=356424;else a[j+k>>0]=0}else j=0}else j=0;while(0);h=Yt(c[s>>2]|0,q,j)|0;i=w;return h|0}j=d+e|0;if(k<<24>>24){a[f>>0]=0;f=f+1|0}while(1){k=a[f>>0]|0;if(!(k<<24>>24==32|k<<24>>24==9))break;f=f+1|0}f=k<<24>>24==34?f+1|0:f;d:do if(j>>>0>f>>>0){while(1){j=j+-1|0;k=a[j>>0]|0;if(k<<24>>24==34)break;else if(!(k<<24>>24==9|k<<24>>24==32))break d;a[j>>0]=0;if(j>>>0<=f>>>0)break d}a[j>>0]=0}while(0);h=Yt(c[s>>2]|0,d,f)|0;i=w;return h|0}function Yt(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+16|0;u=A+4|0;z=A;y=c[b+278664>>2]|0;c[z>>2]=0;x=b+128|0;l=c[x>>2]|0;n=c[l+12>>2]|0;s=a[e>>0]|0;m=s<<24>>24==0;if(m)g=0;else{j=s;h=e;g=0;do{h=h+1|0;g=(g*31|0)+(j<<24>>24)|0;j=a[h>>0]|0}while(j<<24>>24!=0)}j=c[l+4>>2]|0;h=n+(((g>>>0)%(j>>>0)|0)<<2)|0;g=c[h>>2]|0;a:do if(g){l=n+(j+-1<<2)|0;while(1){j=c[g>>2]|0;if((a[j>>0]|0)==s<<24>>24?(gfa(j,e)|0)==0:0)break;g=h+-4|0;h=g>>>0>>0?l:g;g=c[h>>2]|0;if(!g)break a}if(g){m=c[b+80>>2]|0;n=c[g+4>>2]|0;g=c[m+(n<<4)+4>>2]|0;if((g|0)==3){do if(f){g=a[f>>0]|0;if(g<<24>>24==48){y=a[f+1>>0]|0;if(y<<24>>24==88|y<<24>>24==120){g=f+2|0;f=g;k=16;g=a[g>>0]|0;j=4976}else{k=10;g=48;j=5176}}else if(!(g<<24>>24)){g=0;break}else{k=10;j=5176}h=g<<24>>24;if(d[j+((g&255)>>>3)>>0]&1<<(h&7)){g=0;do{g=da(g,k)|0;g=(d[5008+h>>0]|0)+g|0;f=f+1|0;y=a[f>>0]|0;h=y<<24>>24}while((1<<(h&7)&d[j+((y&255)>>>3)>>0]|0)!=0)}else g=0}else g=0;while(0);c[m+(n<<4)+12>>2]=g;z=c[z>>2]|0;i=A;return z|0}else if((g|0)==2){if((f|0)!=0?(k=a[f>>0]|0,k<<24>>24!=0):0){l=k<<24>>24==45;g=l?f+1|0:f;f=a[g>>0]|0;if(f<<24>>24==48){y=a[g+1>>0]|0;if(y<<24>>24==88|y<<24>>24==120){f=g+2|0;k=16;g=f;f=a[f>>0]|0;j=4976}else{k=10;f=48;j=5176}}else{k=10;j=5176}h=f<<24>>24;if(!(d[j+((f&255)>>>3)>>0]&1<<(h&7)))g=0;else{f=g;g=0;do{g=da(g,k)|0;g=(d[5008+h>>0]|0)+g|0;f=f+1|0;y=a[f>>0]|0;h=y<<24>>24}while((1<<(h&7)&d[j+((y&255)>>>3)>>0]|0)!=0)}g=l?0-g|0:g}else g=0;c[m+(n<<4)+12>>2]=g;z=c[z>>2]|0;i=A;return z|0}else if((g|0)==1){g=m+(n<<4)+12|0;Ag(y,c[g>>2]|0);c[g>>2]=0;if(!f){z=c[z>>2]|0;i=A;return z|0}if(!(a[f>>0]|0)){z=c[z>>2]|0;i=A;return z|0}c[g>>2]=oi(y,f,z)|0;z=c[z>>2]|0;i=A;return z|0}else{z=c[z>>2]|0;i=A;return z|0}}}while(0);p=b+278676|0;q=b+278688|0;o=c[q>>2]|0;if(m)g=0;else{j=s;h=e;g=0;do{h=h+1|0;g=(g*31|0)+(j<<24>>24)|0;j=a[h>>0]|0}while(j<<24>>24!=0)}r=b+278680|0;l=c[r>>2]|0;g=o+(((g>>>0)%(l>>>0)|0)<<2)|0;h=c[g>>2]|0;b:do if(h){n=o+(l+-1<<2)|0;while(1){j=c[h>>2]|0;if((a[j>>0]|0)==s<<24>>24?(gfa(j,e)|0)==0:0)break;h=g+-4|0;g=h>>>0>>0?n:h;h=c[g>>2]|0;if(!h){t=38;break b}}if(!h)t=38}else t=38;while(0);c:do if((t|0)==38){c[u>>2]=0;if(m)g=0;else{j=s;h=e;g=0;do{h=h+1|0;g=(g*31|0)+(j<<24>>24)|0;j=a[h>>0]|0}while(j<<24>>24!=0)}h=o+(((g>>>0)%(l>>>0)|0)<<2)|0;g=c[h>>2]|0;d:do if(g){l=o+(l+-1<<2)|0;while(1){j=c[g>>2]|0;if((a[j>>0]|0)==s<<24>>24?(gfa(j,e)|0)==0:0)break;g=h+-4|0;h=g>>>0>>0?l:g;g=c[h>>2]|0;if(!g){t=46;break d}}if(g){l=s;n=o}else t=46}else t=46;while(0);do if((t|0)==46){n=b+278672|0;m=c[n>>2]|0;g=b+278668|0;m=Dg(y,16,m,m+1|0,c[g>>2]|0,u)|0;c[g>>2]=m;g=c[u>>2]|0;if(!g){j=c[n>>2]|0;h=m+(j<<4)|0;c[h+0>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;l=(tfa(e|0)|0)+1|0;k=Dg(y,1,0,l,0,u)|0;c[h>>2]=k;g=c[u>>2]|0;if(!g){qfa(k|0,e|0,l|0)|0;c[m+(j<<4)+4>>2]=1;c[m+(j<<4)+8>>2]=0;g=Vt(c[h>>2]|0,(c[n>>2]|0)+83|0,p,y)|0;c[u>>2]=g;if(!g){c[n>>2]=(c[n>>2]|0)+1;l=a[e>>0]|0;n=c[q>>2]|0;break}}}c[z>>2]=g;z=c[z>>2]|0;i=A;return z|0}while(0);c[z>>2]=0;if(!(l<<24>>24))g=0;else{j=l;h=e;g=0;do{h=h+1|0;g=(g*31|0)+(j<<24>>24)|0;j=a[h>>0]|0}while(j<<24>>24!=0)}j=c[r>>2]|0;h=n+(((g>>>0)%(j>>>0)|0)<<2)|0;g=c[h>>2]|0;if(!g)h=0;else{k=n+(j+-1<<2)|0;while(1){j=c[g>>2]|0;if((a[j>>0]|0)==l<<24>>24?(gfa(j,e)|0)==0:0){h=g;break c}g=h+-4|0;h=g>>>0>>0?k:g;g=c[h>>2]|0;if(!g){h=0;break}}}}while(0);p=b+76|0;g=c[p>>2]|0;j=b+72|0;if((g|0)==(c[j>>2]|0)){if(!g){g=Dg(y,16,0,1,0,z)|0;c[b+80>>2]=g;if(c[z>>2]|0){z=c[z>>2]|0;i=A;return z|0}}else{u=b+80|0;g=Dg(y,16,g,g+1|0,c[u>>2]|0,z)|0;c[u>>2]=g;if(c[z>>2]|0){z=c[z>>2]|0;i=A;return z|0}}u=g+(c[j>>2]<<4)|0;c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[u+12>>2]=0;c[j>>2]=(c[j>>2]|0)+1}g=c[h+4>>2]|0;if(g>>>0>82)g=(c[b+278668>>2]|0)+(g+-83<<4)|0;else g=3496+(g<<4)|0;k=c[b+80>>2]|0;m=c[p>>2]|0;o=k+(m<<4)|0;c[o>>2]=c[g>>2];u=g+4|0;c[k+(m<<4)+4>>2]=c[u>>2];c[k+(m<<4)+8>>2]=c[g+8>>2];g=c[u>>2]|0;if((g|0)==2){if((f|0)!=0?(w=a[f>>0]|0,w<<24>>24!=0):0){n=w<<24>>24==45;g=n?f+1|0:f;j=a[g>>0]|0;if(j<<24>>24==48){w=a[g+1>>0]|0;if(w<<24>>24==88|w<<24>>24==120){j=g+2|0;l=16;g=j;j=a[j>>0]|0;h=4976}else{l=10;j=48;h=5176}}else{l=10;h=5176}f=j<<24>>24;if(!(d[h+((j&255)>>>3)>>0]&1<<(f&7)))g=0;else{j=g;g=0;do{g=da(g,l)|0;g=(d[5008+f>>0]|0)+g|0;j=j+1|0;w=a[j>>0]|0;f=w<<24>>24}while((1<<(f&7)&d[h+((w&255)>>>3)>>0]|0)!=0)}g=n?0-g|0:g}else g=0;c[k+(m<<4)+12>>2]=g}else if((g|0)==3){do if(f){g=a[f>>0]|0;if(g<<24>>24==48){w=a[f+1>>0]|0;if(w<<24>>24==88|w<<24>>24==120){g=f+2|0;f=g;l=16;g=a[g>>0]|0;h=4976}else{l=10;g=48;h=5176}}else if(!(g<<24>>24)){g=0;break}else{l=10;h=5176}j=g<<24>>24;if(d[h+((g&255)>>>3)>>0]&1<<(j&7)){g=0;do{g=da(g,l)|0;g=(d[5008+j>>0]|0)+g|0;f=f+1|0;w=a[f>>0]|0;j=w<<24>>24}while((1<<(j&7)&d[h+((w&255)>>>3)>>0]|0)!=0)}else g=0}else g=0;while(0);c[k+(m<<4)+12>>2]=g}else if((((g|0)==1?(v=k+(m<<4)+12|0,c[v>>2]=0,(f|0)!=0):0)?(a[f>>0]|0)!=0:0)?(c[v>>2]=oi(y,f,z)|0,(c[z>>2]|0)!=0):0){z=c[z>>2]|0;i=A;return z|0}if((ffa(e,3472,7)|0)!=0?(y=Vt(c[o>>2]|0,c[p>>2]|0,c[x>>2]|0,y)|0,c[z>>2]=y,(y|0)!=0):0){z=c[z>>2]|0;i=A;return z|0}c[p>>2]=(c[p>>2]|0)+1;if(!(ffa(e,5208,12)|0)){c[b+36>>2]=c[k+(m<<4)+12>>2];z=c[z>>2]|0;i=A;return z|0}if(!(ffa(e,4896,11)|0)){c[b+40>>2]=c[k+(m<<4)+12>>2];z=c[z>>2]|0;i=A;return z|0}if(!(ffa(e,4912,12)|0)){c[b+44>>2]=c[k+(m<<4)+12>>2];z=c[z>>2]|0;i=A;return z|0}if(ffa(e,3464,7)|0){z=c[z>>2]|0;i=A;return z|0}g=c[k+(m<<4)+12>>2]|0;if(!g){c[z>>2]=3;z=c[z>>2]|0;i=A;return z|0}switch(a[g>>0]|0){case 80:case 112:{c[b+28>>2]=8;z=c[z>>2]|0;i=A;return z|0}case 77:case 109:{c[b+28>>2]=16;z=c[z>>2]|0;i=A;return z|0}case 67:case 99:{c[b+28>>2]=32;z=c[z>>2]|0;i=A;return z|0}default:{z=c[z>>2]|0;i=A;return z|0}}return 0}function Zt(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+16|0;o=y+4|0;x=y;c[x>>2]=0;p=k+32|0;v=c[p>>2]|0;w=c[v+278664>>2]|0;a:do if(!(ffa(f,3472,7)|0)){j=f+7|0;if(!(a[j>>0]|0)){n=g+-7|0;g=j}else{n=g+-8|0;g=f+8|0}c[o>>2]=0;h=v+88|0;m=c[h>>2]|0;l=n+1|0;j=v+84|0;m=Dg(w,1,m,m+l|0,c[j>>2]|0,o)|0;c[j>>2]=m;j=c[o>>2]|0;if(!j){j=c[h>>2]|0;qfa(m+j|0,g|0,n|0)|0;a[m+(j+n)>>0]=10;c[h>>2]=(c[h>>2]|0)+l;j=c[o>>2]|0}c[x>>2]=j;t=196}else{m=c[k>>2]|0;b:do if(!(m&32)){if(ffa(f,4880,5)|0){c[x>>2]=180;m=k;j=180;break a}h=k+139304|0;j=Wt(h,4840,f,g)|0;c[x>>2]=j;if(j){m=k;break a}j=c[(c[h>>2]|0)+4>>2]|0;do if(j){h=a[j>>0]|0;if(!(h<<24>>24)){t=17;break}else if(h<<24>>24==48){u=a[j+1>>0]|0;if(u<<24>>24==88|u<<24>>24==120){h=j+2|0;j=h;n=16;h=a[h>>0]|0;l=4976}else{n=10;h=48;l=5176}}else{n=10;l=5176}m=h<<24>>24;if(d[l+((h&255)>>>3)>>0]&1<<(m&7)){h=0;do{h=da(h,n)|0;h=(d[5008+m>>0]|0)+h|0;j=j+1|0;u=a[j>>0]|0;m=u<<24>>24}while((1<<(m&7)&d[l+((u&255)>>>3)>>0]|0)!=0);j=v+48|0;c[j>>2]=h;c[k+4>>2]=h;if(h)if(h>>>0>1114111){c[x>>2]=6;m=k;j=6;break a}else j=h;else t=19}else t=17}else t=17;while(0);if((t|0)==17){j=v+48|0;c[j>>2]=0;c[k+4>>2]=0;t=19}if((t|0)==19){c[j>>2]=64;j=64}c[v+56>>2]=Dg(w,36,0,j,0,x)|0;j=c[x>>2]|0;if(j){m=k;break a}c[k>>2]=c[k>>2]|32}else{if(!(ffa(f,4928,7)|0)){Tca(c[v+56>>2]|0,c[v+52>>2]|0,36,202);c[k>>2]=c[k>>2]&-2;break}if(!(ffa(f,4936,7)|0)){c[k+28>>2]=0;c[k>>2]=m&-4033;break}j=(m&64|0)==0;if((!j?(c[k+28>>2]|0)==-1:0)?(c[(c[k+36>>2]|0)+4>>2]|0)==0:0)break;if(!(ffa(f,4944,9)|0)){q=k+24|0;Ag(w,c[q>>2]|0);c[q>>2]=0;p=k+139304|0;j=Wt(p,4840,f,g)|0;c[x>>2]=j;if(j){m=k;break a}o=k+139312|0;j=c[o>>2]|0;do if(j){if(j>>>0<2){c[o>>2]=0;break}h=j+-1|0;j=0;m=1;while(1){v=c[p>>2]|0;c[v+(j<<2)>>2]=c[v+(m<<2)>>2];j=j+1|0;if((j|0)==(h|0))break;else m=m+1|0}c[o>>2]=h;if(h){m=c[c[p>>2]>>2]|0;n=m;g=1;j=0;while(1){l=a[n>>0]|0;if(l<<24>>24){while(1){n=n+1|0;h=j+1|0;a[m+j>>0]=l;l=a[n>>0]|0;if(!(l<<24>>24)){j=h;break}else j=h}h=c[o>>2]|0}if(g>>>0>>0){a[m+j>>0]=32;h=c[o>>2]|0;j=j+1|0}if(g>>>0>=h>>>0)break;n=c[(c[p>>2]|0)+(g<<2)>>2]|0;g=g+1|0}if((m|0)!=356424){a[m+j>>0]=0;if(!m)break}else m=356424;h=j+1|0;l=Dg(w,1,0,h,0,x)|0;c[q>>2]=l;j=c[x>>2]|0;if(j){m=k;break a}qfa(l|0,m|0,h|0)|0;c[k>>2]=c[k>>2]|64;break b}}while(0);c[x>>2]=3;m=k;j=3;break a}if(!(ffa(f,4960,8)|0)){if(j){c[x>>2]=181;m=k;j=181;break a}m=k+139304|0;j=Wt(m,4840,f,g)|0;c[x>>2]=j;if(j){m=k;break a}o=c[m>>2]|0;j=c[o+4>>2]|0;if((j|0)!=0?(l=a[j>>0]|0,l<<24>>24!=0):0){g=l<<24>>24==45;j=g?j+1|0:j;m=a[j>>0]|0;if(m<<24>>24==48){u=a[j+1>>0]|0;if(u<<24>>24==88|u<<24>>24==120){m=j+2|0;n=16;j=m;m=a[m>>0]|0;l=4976}else{n=10;m=48;l=5176}}else{n=10;l=5176}h=m<<24>>24;if(!(d[l+((m&255)>>>3)>>0]&1<<(h&7)))j=0;else{m=j;j=0;do{j=da(j,n)|0;j=(d[5008+h>>0]|0)+j|0;m=m+1|0;u=a[m>>0]|0;h=u<<24>>24}while((1<<(h&7)&d[l+((u&255)>>>3)>>0]|0)!=0)}j=g?0-j|0:j}else j=0;p=k+28|0;j=(j|0)<-1?-1:j;c[p>>2]=j;do if((j|0)==-1)if((c[k+139312>>2]|0)>>>0>2){j=c[o+8>>2]|0;if((j|0)!=0?(r=a[j>>0]|0,r<<24>>24!=0):0){g=r<<24>>24==45;j=g?j+1|0:j;m=a[j>>0]|0;do if(m<<24>>24==48){u=a[j+1>>0]|0;if(!(u<<24>>24==88|u<<24>>24==120)){n=10;m=48;l=5176;break}m=j+2|0;n=16;j=m;m=a[m>>0]|0;l=4976}else{n=10;l=5176}while(0);h=m<<24>>24;if(!(d[l+((m&255)>>>3)>>0]&1<<(h&7)))j=0;else{m=j;j=0;do{j=da(j,n)|0;j=(d[5008+h>>0]|0)+j|0;m=m+1|0;u=a[m>>0]|0;h=u<<24>>24}while((1<<(h&7)&d[l+((u&255)>>>3)>>0]|0)!=0)}j=g?0-j|0:j;c[p>>2]=j;if((j|0)>=-1){t=76;break}c[p>>2]=-1;t=87;break}c[p>>2]=0;j=0;t=79}else t=87;else t=76;while(0);do if((t|0)==76)if(!((j|0)>0&j>>>0>1114111))if((j|0)>-1){t=79;break}else{t=87;break}else{c[x>>2]=3;m=k;j=3;break a}while(0);do if((t|0)==79){m=k+40+(j>>5<<2)|0;h=c[m>>2]|0;j=1<<(j&31);if(h&j){c[p>>2]=-1;b[v+278660>>1]=1;t=87;break}c[m>>2]=h|j;j=c[p>>2]|0;if((j|0)>-1){n=v+52|0;m=c[n>>2]|0;l=v+48|0;if((m|0)==(c[l>>2]|0)){j=v+56|0;h=Dg(w,36,m,m+64|0,c[j>>2]|0,x)|0;c[j>>2]=h;j=c[x>>2]|0;if(j){m=k;break a}c[l>>2]=(c[l>>2]|0)+64;m=c[n>>2]|0;j=c[p>>2]|0}else h=c[v+56>>2]|0;c[n>>2]=m+1;v=k+24|0;c[h+(m*36|0)>>2]=c[v>>2];c[h+(m*36|0)+4>>2]=j;c[v>>2]=0}else t=87}while(0);if((t|0)==87){if(!(c[(c[k+36>>2]|0)+4>>2]|0)){v=k+24|0;Ag(w,c[v>>2]|0);c[v>>2]=0}else{l=v+64|0;j=c[l>>2]|0;m=v+60|0;if((j|0)==(c[m>>2]|0)){v=v+68|0;h=Dg(w,36,j,j+4|0,c[v>>2]|0,x)|0;c[v>>2]=h;j=c[x>>2]|0;if(j){m=k;break a}c[m>>2]=(c[m>>2]|0)+4;j=c[l>>2]|0}else h=c[v+68>>2]|0;c[h+(j*36|0)>>2]=c[k+24>>2];c[l>>2]=j+1;c[h+(j*36|0)+4>>2]=j}c[k+24>>2]=0}c[k>>2]=c[k>>2]&1073741695|128;break}s=k+28|0;if((c[s>>2]|0)==-1)u=(c[v+68>>2]|0)+(((c[v+64>>2]|0)+-1|0)*36|0)|0;else u=(c[v+56>>2]|0)+(((c[v+52>>2]|0)+-1|0)*36|0)|0;if(m&2048){n=k+8|0;j=c[n>>2]|0;if(j>>>0>=(e[u+14>>1]|0)>>>0){if((m|0)<0)break;c[k>>2]=m|-2147483648;b[v+278660>>1]=1;break}h=c[u+28>>2]|0;l=h<<1;h=(c[u+24>>2]|0)+(da(h,j)|0)|0;j=0;c:while(1){m=j;while(1){if(m>>>0>=l>>>0)break c;s=a[f+m>>0]|0;j=s<<24>>24;if(!(1<<(j&7)&d[4976+((s&255)>>>3)>>0])){t=109;break c}a[h>>0]=(d[h>>0]<<4)+(d[5008+j>>0]|0);j=m+1|0;if(j>>>0>=l>>>0|(m&1|0)==0)m=j;else break}s=h+1|0;a[s>>0]=0;h=s}if((t|0)==109){j=c[k>>2]|0;if(!(j&1073741824)){c[k>>2]=j|1073741824;b[v+278660>>1]=1}}j=b[u+12>>1]|0;if(j<<16>>16){u=a[5136+((da(e[(c[p>>2]|0)+278662>>1]|0,j&65535)|0)&7)>>0]|0;a[h>>0]=a[h>>0]&u}if(((m|0)==(l|0)?(u=d[f+l>>0]|0,(1<<(u&7)&d[4976+(u>>>3)>>0]|0)!=0):0)?(q=c[k>>2]|0,(q&1073741824|0)==0):0){c[k>>2]=q|1073741824;b[v+278660>>1]=1}c[n>>2]=(c[n>>2]|0)+1;break}do if(!(ffa(f,5144,6)|0)){if(m&128){h=k+139304|0;j=Wt(h,4840,f,g)|0;c[x>>2]=j;if(j){m=k;break a}j=c[(c[h>>2]|0)+4>>2]|0;do if(j){h=a[j>>0]|0;if(!(h<<24>>24)){j=0;break}else if(h<<24>>24==48){v=a[j+1>>0]|0;if(v<<24>>24==88|v<<24>>24==120){h=j+2|0;j=h;n=16;h=a[h>>0]|0;l=4976}else{n=10;h=48;l=5176}}else{n=10;l=5176}m=h<<24>>24;if(d[l+((h&255)>>>3)>>0]&1<<(m&7)){h=j;j=0;do{j=da(j,n)|0;j=(d[5008+m>>0]|0)+j|0;h=h+1|0;v=a[h>>0]|0;m=v<<24>>24}while((1<<(m&7)&d[l+((v&255)>>>3)>>0]|0)!=0);j=j&65535}else j=0}else j=0;while(0);b[u+8>>1]=j;c[k>>2]=c[k>>2]|256;break b}}else{if(!(ffa(f,5152,6)|0)){if(!(m&128))break;m=k+139304|0;j=Wt(m,4840,f,g)|0;c[x>>2]=j;if(j){m=k;break a}j=c[(c[m>>2]|0)+4>>2]|0;d:do if(j){h=a[j>>0]|0;do if(h<<24>>24==48){t=a[j+1>>0]|0;if(!(t<<24>>24==88|t<<24>>24==120)){n=10;h=48;l=5176;break}h=j+2|0;j=h;n=16;h=a[h>>0]|0;l=4976}else if(!(h<<24>>24)){h=0;break d}else{n=10;l=5176}while(0);m=h<<24>>24;if(d[l+((h&255)>>>3)>>0]&1<<(m&7)){h=0;do{h=da(h,n)|0;h=(d[5008+m>>0]|0)+h|0;j=j+1|0;t=a[j>>0]|0;m=t<<24>>24}while((1<<(m&7)&d[l+((t&255)>>>3)>>0]|0)!=0)}else h=0}else h=0;while(0);b[u+10>>1]=h;j=c[k>>2]|0;if(!(j&256)){b[u+8>>1]=og(h&65535,72e3,da(c[v+20>>2]|0,c[v+16>>2]|0)|0)|0;j=c[k>>2]|0}c[k>>2]=j|512;break b}if(ffa(f,5160,3)|0){if(ffa(f,5168,6)|0){c[x>>2]=3;m=k;j=3;break a}if(!(m&1024)){c[x>>2]=183;m=k;j=183;break a}v=(da(e[v+278662>>1]|0,e[u+12>>1]|0)|0)+7|0;j=v>>>3;c[u+28>>2]=j;j=da(j,e[u+14>>1]|0)|0;if(v>>>0>524287|j>>>0>65535){c[x>>2]=184;m=k;j=184;break a}b[u+32>>1]=j;c[u+24>>2]=Dg(w,1,0,j&65535,0,x)|0;j=c[x>>2]|0;if(j){m=k;break a}c[k+8>>2]=0;c[k>>2]=c[k>>2]|2048;break b}if(m&128){m=k+139304|0;j=Wt(m,4840,f,g)|0;c[x>>2]=j;if(j){m=k;break a}q=c[m>>2]|0;j=c[q+4>>2]|0;if((j|0)!=0?(n=a[j>>0]|0,n<<24>>24!=0):0){g=n<<24>>24==45;j=g?j+1|0:j;m=a[j>>0]|0;do if(m<<24>>24==48){t=a[j+1>>0]|0;if(!(t<<24>>24==88|t<<24>>24==120)){n=10;m=48;l=5176;break}m=j+2|0;n=16;j=m;m=a[m>>0]|0;l=4976}else{n=10;l=5176}while(0);h=m<<24>>24;if(!(d[l+((m&255)>>>3)>>0]&1<<(h&7)))j=0;else{m=j;j=0;do{j=da(j,n)|0;m=m+1|0;j=(d[5008+h>>0]|0)+j<<16>>16;t=a[m>>0]|0;h=t<<24>>24}while((1<<(h&7)&d[l+((t&255)>>>3)>>0]|0)!=0)}r=(g?0-j|0:j)&65535}else r=0;b[u+12>>1]=r;m=c[q+8>>2]|0;do if(!m)p=0;else{j=a[m>>0]|0;if(!(j<<24>>24)){p=0;break}g=j<<24>>24==45;j=g?m+1|0:m;m=a[j>>0]|0;do if(m<<24>>24==48){t=a[j+1>>0]|0;if(!(t<<24>>24==88|t<<24>>24==120)){n=10;m=48;l=5176;break}m=j+2|0;n=16;j=m;m=a[m>>0]|0;l=4976}else{n=10;l=5176}while(0);h=m<<24>>24;if(!(d[l+((m&255)>>>3)>>0]&1<<(h&7)))j=0;else{m=j;j=0;do{j=da(j,n)|0;m=m+1|0;j=(d[5008+h>>0]|0)+j<<16>>16;t=a[m>>0]|0;h=t<<24>>24}while((1<<(h&7)&d[l+((t&255)>>>3)>>0]|0)!=0)}p=(g?0-j|0:j)&65535}while(0);b[u+14>>1]=p;m=c[q+12>>2]|0;do if(!m)o=0;else{j=a[m>>0]|0;if(!(j<<24>>24)){o=0;break}g=j<<24>>24==45;j=g?m+1|0:m;m=a[j>>0]|0;do if(m<<24>>24==48){t=a[j+1>>0]|0;if(!(t<<24>>24==88|t<<24>>24==120)){n=10;m=48;l=5176;break}m=j+2|0;n=16;j=m;m=a[m>>0]|0;l=4976}else{n=10;l=5176}while(0);h=m<<24>>24;if(!(d[l+((m&255)>>>3)>>0]&1<<(h&7)))j=0;else{m=j;j=0;do{j=da(j,n)|0;m=m+1|0;j=(d[5008+h>>0]|0)+j<<16>>16;t=a[m>>0]|0;h=t<<24>>24}while((1<<(h&7)&d[l+((t&255)>>>3)>>0]|0)!=0)}o=(g?0-j|0:j)&65535}while(0);b[u+16>>1]=o;m=c[q+16>>2]|0;do if(!m)j=0;else{j=a[m>>0]|0;if(!(j<<24>>24)){j=0;break}g=j<<24>>24==45;j=g?m+1|0:m;m=a[j>>0]|0;do if(m<<24>>24==48){t=a[j+1>>0]|0;if(!(t<<24>>24==88|t<<24>>24==120)){n=10;m=48;l=5176;break}m=j+2|0;n=16;j=m;m=a[m>>0]|0;l=4976}else{n=10;l=5176}while(0);h=m<<24>>24;if(!(d[l+((m&255)>>>3)>>0]&1<<(h&7)))j=0;else{m=j;j=0;do{j=da(j,n)|0;m=m+1|0;j=(d[5008+h>>0]|0)+j<<16>>16;t=a[m>>0]|0;h=t<<24>>24}while((1<<(h&7)&d[l+((t&255)>>>3)>>0]|0)!=0)}j=(g?0-j|0:j)&65535}while(0);b[u+18>>1]=j;j=j&65535;t=(p&65535)+j&65535;b[u+20>>1]=t;j=0-j&65535;b[u+22>>1]=j;g=k+18|0;f=b[g>>1]|0;b[g>>1]=t<<16>>16>f<<16>>16?t:f;g=k+20|0;f=b[g>>1]|0;b[g>>1]=j<<16>>16>f<<16>>16?j:f;g=(o&65535)+(r&65535)|0;f=g&65535;b[k+22>>1]=f;j=k+16|0;t=b[j>>1]|0;b[j>>1]=(g<<16>>16|0)>(t<<16>>16|0)?f:t;j=k+12|0;t=b[j>>1]|0;b[j>>1]=o<<16>>16>16?o:t;j=k+14|0;t=b[j>>1]|0;b[j>>1]=o<<16>>16>t<<16>>16?o:t;j=c[k>>2]|0;if(!(j&512))b[u+10>>1]=r;do if(c[c[k+36>>2]>>2]|0){h=og(e[u+10>>1]|0,72e3,da(c[v+20>>2]|0,c[v+16>>2]|0)|0)|0;j=u+8|0;h=h&65535;if((b[j>>1]|0)==h<<16>>16){j=c[k>>2]|0;break}b[j>>1]=h;if((c[s>>2]|0)==-1){t=(c[v+64>>2]|0)+-1|0;u=v+(t>>>5<<2)+139396|0;c[u>>2]=1<<(t&31)|c[u>>2]}else{t=c[u+4>>2]|0;u=v+(t>>5<<2)+132|0;c[u>>2]=1<<(t&31)|c[u>>2]}j=c[k>>2]|4096;c[k>>2]=j;b[v+278660>>1]=1}while(0);c[k>>2]=j|1024;break b}}while(0);c[x>>2]=182;m=k;j=182;break a}while(0);j=c[x>>2]|0;t=196}while(0);do if((t|0)==196)if(!j){k=0;i=y;return k|0}else{m=k;break}while(0);if(!(c[m>>2]&64)){k=j;i=y;return k|0}k=k+24|0;Ag(w,c[k>>2]|0);c[k>>2]=0;k=c[x>>2]|0;i=y;return k|0}function _t(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;s=e+16|0;t=e+404|0;c[t>>2]=s;c[e+4>>2]=f;c[e+8>>2]=g;c[e+12>>2]=f;if(f>>>0>=g>>>0){x=0;return x|0}u=s;v=e+408|0;w=e+412|0;r=e+20|0;j=s;a:while(1){i=a[f>>0]|0;h=j-u|0;l=h>>2;do if((i&255)>26&i<<24>>24!=31){if((h|0)>380){f=6;x=96;break a}c[t>>2]=j+4;c[j>>2]=f;if(i<<24>>24==30)do{f=f+1|0;if(f>>>0>=g>>>0){f=0;x=96;break a}q=d[f>>0]|0}while(!((q&240|0)==240|(q&15|0)==15));else if(i<<24>>24==28){f=f+2|0;break}else if(i<<24>>24==29){f=f+4|0;break}else{f=(i&255)>246?f+1|0:f;break}}else{h=i&255;c[j>>2]=f;if(i<<24>>24==12){f=f+1|0;if(f>>>0>=g>>>0){f=6;x=96;break a}h=d[f>>0]|0|256;q=f}else q=f;h=c[v>>2]|h;f=4;i=8744;do{if((c[i+4>>2]|0)==(h|0)){x=17;break}i=i+28|0;f=c[i>>2]|0}while((f|0)!=0);b:do if((x|0)==17){x=0;h=c[w>>2]|0;m=h+(c[i+8>>2]|0)|0;if((f|0)!=6&(l|0)==0){f=6;x=96;break a}c:do switch(f|0){case 3:{h=c[s>>2]|0;f=c[r>>2]|0;j=a[h>>0]|0;if(j<<24>>24==30){h=Bs(h,f,3,0)|0;break c}l=h+1|0;k=j&255;do if(j<<24>>24==29)if((h+5|0)>>>0>f>>>0){f=0;h=0}else{h=(d[h+2>>0]|0)<<16|(d[l>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);x=63}else if(j<<24>>24==28)if((h+3|0)>>>0>f>>>0){f=0;h=0}else{h=((d[l>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;x=63}else{if((j&255)<247){h=k+-139|0;x=63;break}f=(h+2|0)>>>0>f>>>0;if((j&255)<251){if(f){f=0;h=0;break}h=(d[l>>0]|0|(k<<8)+-63232)+108|0;x=63;break}else{if(f){f=0;h=0;break}h=(251-k<<8)+-108-(d[l>>0]|0)|0;x=63;break}}while(0);if((x|0)==63){x=0;f=h*1e3|0;if((f|0)>32767){h=2147483647;break c}}h=da(h,65536e3)|0;h=(f|0)<-32767?-2147483647:h;break}case 1:case 4:case 5:{h=c[s>>2]|0;f=c[r>>2]|0;j=a[h>>0]|0;if(j<<24>>24==30){h=(Bs(h,f,0,0)|0)>>16;break c}l=h+1|0;k=j&255;if(j<<24>>24==29){if((h+5|0)>>>0>f>>>0){h=0;break c}h=(d[h+2>>0]|0)<<16|(d[l>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);break c}else if(j<<24>>24!=28){if((j&255)<247){h=k+-139|0;break c}f=(h+2|0)>>>0>f>>>0;if((j&255)<251){if(f){h=0;break c}h=(d[l>>0]|0|(k<<8)+-63232)+108|0;break c}else{if(f){h=0;break c}h=(251-k<<8)+-108-(d[l>>0]|0)|0;break c}}else{if((h+3|0)>>>0>f>>>0){h=0;break c}h=((d[l>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;break c}}case 2:{h=c[s>>2]|0;f=c[r>>2]|0;j=a[h>>0]|0;if(j<<24>>24==30){h=Bs(h,f,0,0)|0;break c}k=h+1|0;l=j&255;do if(j<<24>>24==29)if((h+5|0)>>>0>f>>>0)f=0;else{f=(d[h+2>>0]|0)<<16|(d[k>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);x=47}else if(j<<24>>24==28)if((h+3|0)>>>0>f>>>0)f=0;else f=((d[k>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;else{if((j&255)<247){f=l+-139|0;x=47;break}f=(h+2|0)>>>0>f>>>0;if((j&255)<251){if(f){f=0;break}f=(d[k>>0]|0|(l<<8)+-63232)+108|0;x=47;break}else{if(f){f=0;break}f=(251-l<<8)+-108-(d[k>>0]|0)|0;x=47;break}}while(0);if((x|0)==47){x=0;if((f|0)>32767){h=2147483647;break c}}h=(f|0)<-32767?-2147483647:f<<16;break}case 6:{f=c[i+20>>2]|0;f=l>>>0>f>>>0?f:l;a[h+(c[i+24>>2]|0)>>0]=f;if(!f)break b;o=i+12|0;p=s;n=0;while(1){h=c[p>>2]|0;p=p+4|0;j=c[p>>2]|0;i=a[h>>0]|0;do if(i<<24>>24!=30){l=h+1|0;k=i&255;if(i<<24>>24==28){if((h+3|0)>>>0>j>>>0){h=0;break}h=((d[l>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;break}else if(i<<24>>24!=29){if((i&255)<247){h=k+-139|0;break}j=(h+2|0)>>>0>j>>>0;if((i&255)<251){if(j){h=0;break}h=(d[l>>0]|0|(k<<8)+-63232)+108|0;break}else{if(j){h=0;break}h=(251-k<<8)+-108-(d[l>>0]|0)|0;break}}else{if((h+5|0)>>>0>j>>>0){h=0;break}h=(d[h+2>>0]|0)<<16|(d[l>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);break}}else h=(Bs(h,j,0,0)|0)>>16;while(0);n=h+n|0;h=a[o>>0]|0;j=h&255;if((j|0)==4)c[m>>2]=n;else if((j|0)==2)b[m>>1]=n;else if((j|0)==1){a[m>>0]=n;h=a[o>>0]|0}else c[m>>2]=n;f=f+-1|0;if(!f)break b;else m=m+(h&255)|0}}default:{f=Ed[c[i+16>>2]&511](e)|0;if(!f)break b;else{x=96;break a}}}while(0);f=d[i+12>>0]|0;if((f|0)==1){a[m>>0]=h;break}else if((f|0)==2){b[m>>1]=h;break}else if((f|0)==4){c[m>>2]=h;break}else{c[m>>2]=h;break}}while(0);c[t>>2]=s;f=q}while(0);f=f+1|0;if(f>>>0>=g>>>0){f=0;x=96;break}j=c[t>>2]|0}if((x|0)==96)return f|0;return 0}function $t(a){a=a|0;return}function au(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=c[d+28>>2]|0;f=c[h+20>>2]|0;if(!f){m=h+64|0;a[m>>0]=0;return}m=b[f>>1]|0;if(m<<16>>16<2)l=0;else l=(b[(c[f+12>>2]|0)+((m<<16>>16)+-2<<1)>>1]|0)+1|0;i=f+2|0;d=b[i>>1]|0;if(((d<<16>>16>1?(j=c[f+4>>2]|0,g=(d<<16>>16)+-1|0,k=(c[f+8>>2]|0)+g|0,(c[j+(l<<3)>>2]|0)==(c[j+(g<<3)>>2]|0)):0)?(c[j+(l<<3)+4>>2]|0)==(c[j+(g<<3)+4>>2]|0):0)?(a[k>>0]|0)==1:0){d=d+-1<<16>>16;b[i>>1]=d}if(m<<16>>16<=0){m=h+64|0;a[m>>0]=0;return}e=(d<<16>>16)+-1|0;if((l|0)==(e|0)){b[f>>1]=m+-1<<16>>16;b[i>>1]=d+-1<<16>>16;m=h+64|0;a[m>>0]=0;return}else{b[(c[f+12>>2]|0)+((m<<16>>16)+-1<<1)>>1]=e;m=h+64|0;a[m>>0]=0;return}}function bu(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=c[d+28>>2]|0;if(!(a[f+64>>0]|0))Cu(f,c[e>>2]|0,c[e+4>>2]|0);g=c[e+8>>2]|0;e=c[e+12>>2]|0;d=c[f+12>>2]|0;if(((b[d+22>>1]|0)+1+(b[d+58>>1]|0)|0)>>>0>(c[d+4>>2]|0)>>>0?(Eg(d,1,0)|0)!=0:0)return;d=c[f+20>>2]|0;if(!(a[f+65>>0]|0))d=d+2|0;else{i=c[d+4>>2]|0;f=d+2|0;h=b[f>>1]|0;d=(c[d+8>>2]|0)+h|0;c[i+(h<<3)>>2]=g>>10;c[i+(h<<3)+4>>2]=e>>10;a[d>>0]=1;d=f}b[d>>1]=(b[d>>1]|0)+1<<16>>16;return}function cu(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=c[d+28>>2]|0;if(!(a[f+64>>0]|0))Cu(f,c[e>>2]|0,c[e+4>>2]|0);d=c[f+12>>2]|0;if(((b[d+22>>1]|0)+3+(b[d+58>>1]|0)|0)>>>0>(c[d+4>>2]|0)>>>0)Eg(d,3,0)|0;g=f+20|0;d=c[g>>2]|0;f=f+65|0;if(a[f>>0]|0){l=c[e+12>>2]|0;k=c[d+4>>2]|0;j=d+2|0;i=b[j>>1]|0;d=(c[d+8>>2]|0)+i|0;c[k+(i<<3)>>2]=c[e+8>>2]>>10;c[k+(i<<3)+4>>2]=l>>10;a[d>>0]=2;d=c[g>>2]|0;i=(a[f>>0]|0)==0;b[j>>1]=(b[j>>1]|0)+1<<16>>16;if(!i){k=c[e+20>>2]|0;l=c[d+4>>2]|0;i=d+2|0;j=b[i>>1]|0;d=(c[d+8>>2]|0)+j|0;c[l+(j<<3)>>2]=c[e+16>>2]>>10;c[l+(j<<3)+4>>2]=k>>10;a[d>>0]=2;d=c[g>>2]|0;j=(a[f>>0]|0)==0;b[i>>1]=(b[i>>1]|0)+1<<16>>16;if(!j){g=c[e+28>>2]|0;l=c[d+4>>2]|0;j=d+2|0;i=b[j>>1]|0;h=(c[d+8>>2]|0)+i|0;c[l+(i<<3)>>2]=c[e+24>>2]>>10;c[l+(i<<3)+4>>2]=g>>10;a[h>>0]=1;h=b[j>>1]|0;h=h+1<<16>>16;b[j>>1]=h;return}}else h=8}else{h=d+2|0;b[h>>1]=(b[h>>1]|0)+1<<16>>16;h=8}if((h|0)==8){j=d+2|0;b[j>>1]=(b[j>>1]|0)+1<<16>>16}j=d+2|0;h=b[j>>1]|0;h=h+1<<16>>16;b[j>>1]=h;return}function du(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=g<<24>>24!=0;if((a|0)<655|((f|0)!=0|g)^1)return;if(g){j=c[h>>2]|0;k=c[h+4>>2]|0;q=c[h+8>>2]|0;r=c[h+12>>2]|0;n=c[h+16>>2]|0;o=c[h+20>>2]|0;p=c[h+24>>2]|0;l=c[h+28>>2]|0;d=f+d|0;g=qg(d,a)|0;if((a|0)<65537|(g|0)>(d|0)){d=qg(g,b)|0;d=(b|0)<65537|(d|0)>(g|0)?d:p<<16;i=g}else{d=p<<16;i=0}g=j<<16;a:do if((d|0)<(g|0)){g=rg(k<<16,b)|0;c[e>>2]=g}else{h=q<<16;if((d|0)<(h|0)){g=rg(g,b)|0;if((r|0)==(k|0))s=13;else{g=qg(i-g|0,rg(r-k|0,q-j|0)|0)|0;g=(rg(k<<16,b)|0)+g|0;c[e>>2]=g;break}}else{g=n<<16;if((d|0)>=(g|0)){if((d|0)<(p<<16|0)){m=g;s=17}}else s=13}do if((s|0)==13){g=rg(h,b)|0;if((o|0)==(r|0)){m=n<<16;s=17;break}else{g=qg(i-g|0,rg(o-r|0,n-q|0)|0)|0;g=(rg(r<<16,b)|0)+g|0;c[e>>2]=g;break a}}while(0);if((s|0)==17?(t=rg(m,b)|0,(l|0)!=(o|0)):0){g=qg(i-t|0,rg(l-o|0,p-n|0)|0)|0;g=(rg(o<<16,b)|0)+g|0;c[e>>2]=g;break}g=rg(l<<16,b)|0;c[e>>2]=g}while(0);g=rg(g,a<<1)|0;c[e>>2]=g}else g=c[e>>2]|0;c[e>>2]=g+((f|0)/2|0);return} +function cV(e,f,g,h,j,k){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0;L=i;i=i+32|0;F=L;J=L+12|0;H=L+8|0;c[J>>2]=0;K=J+4|0;c[K>>2]=0;n=J+8|0;c[n>>2]=0;do if((f|0)!=0&(g|0)!=0&(k|0)!=0){h=FI(f)|0;l=GI(f)|0;if(!((h|0)==(l|0)&(((h+-16|0)>>>0>240|l>>>0<16|l>>>0>256)^1))){m=c[78548]|0;c[F>>2]=h;c[F+4>>2]=l;yJ(m,314232,F);m=0;break}c[H>>2]=0;E=k+4|0;a:do if((d[E>>0]|d[E+1>>0]<<8)<<16>>16){m=0;while(1){h=bV(e,g,m,j,k)|0;c[H>>2]=h;if(!h)break;l=c[K>>2]|0;if((l|0)==(c[n>>2]|0))t1(J,H);else{if(!l)h=0;else{c[l>>2]=h;h=c[K>>2]|0}c[K>>2]=h+4}m=m+1|0;if((m|0)>=((d[E>>0]|d[E+1>>0]<<8)&65535|0))break a}L=kc(4)|0;c[L>>2]=314312;xd(L|0,378680,0)}while(0);h=DI(f)|0;c[H>>2]=h;l=c[K>>2]|0;if((l|0)==(c[n>>2]|0))t1(J,H);else{if(!l)h=0;else{c[l>>2]=h;h=c[K>>2]|0}c[K>>2]=h+4}C=(d[E>>0]|d[E+1>>0]<<8)+1<<16>>16;a[E>>0]=C;a[E+1>>0]=C>>8;C=e+8|0;Od[(d[C>>0]|d[C+1>>0]<<8|d[C+2>>0]<<16|d[C+3>>0]<<24)&255](g,0,0)|0;D=e+4|0;ce[(d[D>>0]|d[D+1>>0]<<8|d[D+2>>0]<<16|d[D+3>>0]<<24)&255](k,6,1,g)|0;h=d[E>>0]|d[E+1>>0]<<8;l=(h&65535)<<4;B=Afa(l)|0;if(!B){L=kc(4)|0;c[L>>2]=314280;xd(L|0,378680,0)}Cga(B|0,0,l|0)|0;if(h<<16>>16){n=0;do{f=c[(c[J>>2]|0)+(n<<2)>>2]|0;h=RI(f)|0;A=c[h+4>>2]|0;a[B+(n<<4)>>0]=(A|0)>255?0:A&255;A=c[h+8>>2]|0;a[B+(n<<4)+1>>0]=(A|0)>255?0:A&255;a[B+(n<<4)+3>>0]=0;A=b[h+12>>1]|0;z=B+(n<<4)+4|0;a[z>>0]=A;a[z+1>>0]=A>>8;h=b[h+14>>1]|0;z=B+(n<<4)+6|0;a[z>>0]=h;a[z+1>>0]=h>>8;h=ea(A&65535,h&65535)|0;if(h>>>0>7)a[B+(n<<4)+2>>0]=0;else a[B+(n<<4)+2>>0]=1<>5<<2)|0,h)|0)|0;l=B+(n<<4)+8|0;a[l>>0]=h;a[l+1>>0]=h>>8;a[l+2>>0]=h>>16;a[l+3>>0]=h>>24;l=c[J>>2]|0;h=(c[K>>2]|0)-l<<2|6;b:do if((n|0)>0){m=0;while(1){y=c[l+(m<<2)>>2]|0;x=SI(y)|0;z=FI(y)|0;A=GI(y)|0;h=h+40+(x<<2)+(ea((OI(y)|0)+(z+31>>5<<2)|0,A)|0)|0;m=m+1|0;if((m|0)==(n|0))break b;l=c[J>>2]|0}}while(0);A=B+(n<<4)+12|0;a[A>>0]=h;a[A+1>>0]=h>>8;a[A+2>>0]=h>>16;a[A+3>>0]=h>>24;n=n+1|0}while((n|0)<((d[E>>0]|d[E+1>>0]<<8)&65535|0));c[H>>2]=f}w=e+12|0;x=Ld[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&511](g)|0;ce[(d[D>>0]|d[D+1>>0]<<8|d[D+2>>0]<<16|d[D+3>>0]<<24)&255](B,((d[E>>0]|d[E+1>>0]<<8)&65535)<<4,1,g)|0;h=Ld[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&511](g)|0;if((d[E>>0]|d[E+1>>0]<<8)<<16>>16){y=F+1|0;z=F+2|0;A=F+3|0;v=0;do{u=c[(c[J>>2]|0)+(v<<2)>>2]|0;c[H>>2]=u;if((a[B+(v<<4)>>0]|0)==0?(a[B+(v<<4)+1>>0]|0)==0:0)fK(13,u,e,g,0)|0;else{m=RI(u)|0;l=m+8|0;c[l>>2]=c[l>>2]<<1;ce[(d[D>>0]|d[D+1>>0]<<8|d[D+2>>0]<<16|d[D+3>>0]<<24)&255](m,40,1,g)|0;c[l>>2]=(c[l>>2]|0)/2|0;if((VI(u)|0)!=0?(G=VI(u)|0,(SI(u)|0)!=0):0){f=0;do{a[F>>0]=a[G+(f<<2)>>0]|0;a[y>>0]=a[G+(f<<2)+1>>0]|0;a[z>>0]=a[G+(f<<2)+2>>0]|0;a[A>>0]=a[G+(f<<2)+3>>0]|0;ce[(d[D>>0]|d[D+1>>0]<<8|d[D+2>>0]<<16|d[D+3>>0]<<24)&255](F,4,1,g)|0;f=f+1|0}while(f>>>0<(SI(u)|0)>>>0)}q=c[m+4>>2]|0;t=c[l>>2]|0;f=b[m+14>>1]|0;p=q+31>>5<<2;r=ea(p,t)|0;k=QI(u)|0;s=Tga(f&65535|0,0,q|0,0)|0;s=Iga(s|0,I|0,7,0)|0;s=Lga(s|0,I|0,3)|0;s=ea(s+3&-4,t)|0;ce[(d[D>>0]|d[D+1>>0]<<8|d[D+2>>0]<<16|d[D+3>>0]<<24)&255](k,s,1,g)|0;s=Afa(r)|0;if(s){c:do if(ZI(u)|0){if(f<<16>>16==32){Cga(s|0,0,r|0)|0;if((t|0)<=0)break;if((q|0)>0){l=s;n=0}else{f=0;while(1){$J(u,f)|0;f=f+1|0;if((f|0)==(t|0))break c}}while(1){f=$J(u,n)|0;m=0;do{if((a[f+(m<<2)+3>>0]|0)!=-1){k=l+(m>>3)|0;a[k>>0]=d[k>>0]|128>>>(m&7)}m=m+1|0}while((m|0)!=(q|0));n=n+1|0;if((n|0)==(t|0))break c;else l=l+p|0}}if((f&65535)<9){o=_I(u)|0;Cga(s|0,0,r|0)|0;f=HI(u)|0;if((f|0)==4){if((t|0)<=0)break;f=(q|0)>0;m=s;j=0;while(1){l=$J(u,j)|0;if(f){n=0;do{k=1-((n|0)%2|0)<<2&252;if((a[o+((15<>1)>>0])>>>k&255)>>0]|0)!=-1){k=m+(n>>3)|0;a[k>>0]=d[k>>0]|128>>>(n&7)}n=n+1|0}while((n|0)!=(q|0))}j=j+1|0;if((j|0)==(t|0))break;else m=m+p|0}}else if((f|0)==8){if((t|0)<=0)break;f=(q|0)>0;m=s;j=0;while(1){l=$J(u,j)|0;if(f){n=0;do{if((a[o+(d[l+n>>0]|0)>>0]|0)!=-1){k=m+(n>>3)|0;a[k>>0]=d[k>>0]|128>>>(n&7)}n=n+1|0}while((n|0)!=(q|0))}j=j+1|0;if((j|0)==(t|0))break;else m=m+p|0}}else if((f|0)==1){if((t|0)<=0)break;if((q|0)>0){n=s;k=0}else{f=0;while(1){$J(u,f)|0;f=f+1|0;if((f|0)==(t|0))break c}}while(1){l=$J(u,k)|0;j=0;do{f=j>>3;m=128>>>(j&7);if((a[o+((d[l+f>>0]&m|0)!=0&1)>>0]|0)!=-1){f=n+f|0;a[f>>0]=d[f>>0]|m}j=j+1|0}while((j|0)!=(q|0));k=k+1|0;if((k|0)==(t|0))break;else n=n+p|0}}else break}}else Cga(s|0,0,r|0)|0;while(0);ce[(d[D>>0]|d[D+1>>0]<<8|d[D+2>>0]<<16|d[D+3>>0]<<24)&255](s,r,1,g)|0;Bfa(s)}}s=h;h=Ld[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&511](g)|0;t=h-s|0;u=B+(v<<4)+12|0;a[u>>0]=s;a[u+1>>0]=s>>8;a[u+2>>0]=s>>16;a[u+3>>0]=s>>24;u=B+(v<<4)+8|0;a[u>>0]=t;a[u+1>>0]=t>>8;a[u+2>>0]=t>>16;a[u+3>>0]=t>>24;v=v+1|0}while((v|0)<((d[E>>0]|d[E+1>>0]<<8)&65535|0))}G=Ld[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&511](g)|0;Od[(d[C>>0]|d[C+1>>0]<<8|d[C+2>>0]<<16|d[C+3>>0]<<24)&255](g,x,0)|0;ce[(d[D>>0]|d[D+1>>0]<<8|d[D+2>>0]<<16|d[D+3>>0]<<24)&255](B,((d[E>>0]|d[E+1>>0]<<8)&65535)<<4,1,g)|0;Od[(d[C>>0]|d[C+1>>0]<<8|d[C+2>>0]<<16|d[C+3>>0]<<24)&255](g,G,0)|0;Bfa(B);if(!((d[E>>0]|d[E+1>>0]<<8)<<16>>16))m=1;else{l=0;do{h=c[(c[J>>2]|0)+(l<<2)>>2]|0;AI(h);l=l+1|0}while((l|0)<((d[E>>0]|d[E+1>>0]<<8)&65535|0));c[H>>2]=h;m=1}}else m=0;while(0);h=c[J>>2]|0;if(!h){i=L;return m|0}l=c[K>>2]|0;if((l|0)!=(h|0))c[K>>2]=l+(~((l+-4-h|0)>>>2)<<2);xea(h);i=L;return m|0}function dV(a,c){a=a|0;c=c|0;var e=0,f=0;f=i;i=i+16|0;e=f;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,6,1,c)|0;if(b[e>>1]|0){a=0;a=a&1;i=f;return a|0}if((b[e+2>>1]|0)!=1){a=0;a=a&1;i=f;return a|0}a=(b[e+4>>1]|0)!=0;a=a&1;i=f;return a|0}function eV(){return 314200}function fV(a){a=a|0;var b=0;b=i;a=a+-1|0;if(a>>>0>=32){a=0;i=b;return a|0}a=-2139062135>>>a&1;i=b;return a|0}function gV(a){a=a|0;return (a|0)==1|0}function hV(){return 1}function iV(){return 314528}function jV(){return 314504}function kV(){return 314496}function lV(){return 0}function mV(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=i;i=i+48|0;F=Q+12|0;E=Q;D=Q+4|0;C=Q+8|0;B=Q+16|0;J=Q+39|0;I=Q+36|0;P=Q+37|0;O=Q+38|0;if(!g){f=0;i=Q;return f|0}ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](F,4,1,g)|0;N=c[F>>2]|0;c[F>>2]=Nga(N|0)|0;if((N|0)!=1297239878){f=0;i=Q;return f|0}ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](E,4,1,g)|0;c[E>>2]=Nga(c[E>>2]|0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](F,4,1,g)|0;N=Nga(c[F>>2]|0)|0;c[F>>2]=N;if(!((N|0)==1229734477|(N|0)==1346522400)){f=0;i=Q;return f|0}N=(c[E>>2]|0)+-4|0;c[E>>2]=N;if(!N){f=0;i=Q;return f|0}r=f+12|0;s=f+8|0;t=B+2|0;u=B+4|0;v=B+6|0;w=B+12|0;x=B+16|0;y=B+18|0;z=B+8|0;A=B+10|0;q=0;K=0;k=0;L=0;M=0;N=0;a:while(1){ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](D,4,1,g)|0;c[D>>2]=Nga(c[D>>2]|0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](C,4,1,g)|0;c[C>>2]=Nga(c[C>>2]|0)|0;o=Ld[(d[r>>0]|d[r+1>>0]<<8|d[r+2>>0]<<16|d[r+3>>0]<<24)&511](g)|0;o=(c[C>>2]|0)+o|0;p=c[D>>2]|0;do if((p|0)==1112361028){if(k)AI(k);ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](B,20,1,g)|0;n=e[B>>1]|0;n=n<<8|n>>>8;b[B>>1]=n;j=e[t>>1]|0;j=j<<8|j>>>8;b[t>>1]=j;h=e[u>>1]|0;b[u>>1]=h<<8|h>>>8;h=e[v>>1]|0;b[v>>1]=h<<8|h>>>8;h=e[w>>1]|0;b[w>>1]=h<<8|h>>>8;h=e[x>>1]|0;b[x>>1]=h<<8|h>>>8;h=e[y>>1]|0;b[y>>1]=h<<8|h>>>8;n=n&65535;j=j&65535;h=b[z>>1]|0;k=d[A>>0]|0;h=((h&65535)>>>8&1)+(h&255)|0;p=h>>>0>8;if(p&(h|0)!=24){k=0;r=61;break a}l=p?24:8;if(p){q=k;m=l;k=yI(n,j,l,16711680,65280,255)|0;break}else{q=k;m=l;k=yI(n,j,l,0,0,0)|0;break}}else if((p|0)==1129136464){if(!k){k=0;r=61;break a}l=VI(k)|0;if((l|0)!=0?(G=((c[C>>2]|0)>>>0)/3|0,H=SI(k)|0,((G>>>0>>0?G:H)|0)!=0):0){j=~H;p=~G;p=~(j>>>0>p>>>0?j:p);j=0;do{ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](l+(j<<2)+2|0,1,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](l+(j<<2)+1|0,1,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](l+(j<<2)|0,1,1,g)|0;j=j+1|0}while((j|0)!=(p|0));m=K;j=L;h=M;n=N}else{m=K;j=L;h=M;n=N}}else if((p|0)==1112491097){r=18;break a}else{m=K;j=L;h=M;n=N}while(0);p=c[C>>2]|0;if(!(p&1))p=o;else{c[C>>2]=p+1;p=o+1|0}M=d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24;N=p-(Ld[(d[r>>0]|d[r+1>>0]<<8|d[r+2>>0]<<16|d[r+3>>0]<<24)&511](g)|0)|0;Od[M&255](g,N,1)|0;N=-8-(c[C>>2]|0)+(c[E>>2]|0)|0;c[E>>2]=N;if(!N){r=59;break}else{K=m;L=j;M=h;N=n}}if((r|0)==18){if(!k){f=0;i=Q;return f|0}if((c[F>>2]|0)==1346522400){p=(PI(k)|0)+1&-2;if(!(GI(k)|0)){f=k;i=Q;return f|0}o=(p|0)==0;if((q|0)==1)n=0;else{j=0;do{O=$J(k,(GI(k)|0)+~j|0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](O,p,1,g)|0;j=j+1|0}while(j>>>0<(GI(k)|0)>>>0);i=Q;return k|0}do{m=$J(k,(GI(k)|0)+~n|0)|0;if(!o){h=0;while(1){while(1){ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](J,1,1,g)|0;j=a[J>>0]|0;if(j<<24>>24>-1){l=0;r=26;break}if((j&255)>128){r=27;break}}if((r|0)==26)while(1){ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](I,1,1,g)|0;j=h+1|0;O=m+h|0;a[O>>0]=(d[O>>0]|0)+(d[I>>0]|0);if((l|0)<(d[J>>0]|0)){l=l+1|0;h=j;r=26}else break}else if((r|0)==27){ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](I,1,1,g)|0;l=0;while(1){j=h+1|0;O=m+h|0;a[O>>0]=(d[O>>0]|0)+(d[I>>0]|0);l=l+1|0;if((l|0)>=(257-(d[J>>0]|0)|0))break;else h=j}}if(j>>>0

>>0)h=j;else break}}n=n+1|0}while(n>>>0<(GI(k)|0)>>>0);i=Q;return k|0}v=K>>>3;w=(N+15|0)>>>3&536870910;x=ea(w,M)|0;y=Afa(x)|0;l=QI(k)|0;j=OI(k)|0;if(L){s=(q|0)==0;t=(N|0)==0;u=(M|0)==0;o=l+(ea(j,L)|0)|0;q=0;do{m=OI(k)|0;b:do if(s)ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](y,x,1,g)|0;else{h=0;while(1){p=x>>>0>h>>>0;while(1){if(!p)break b;a[P>>0]=0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](P,1,1,g)|0;l=a[P>>0]|0;if(l<<24>>24>-1){r=38;break}if(l<<24>>24!=-128){r=42;break}}if((r|0)==38){p=(l<<24>>24)+1|0;l=p+h|0;if(l>>>0>x>>>0){ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](y+h|0,x-h|0,1,g)|0;h=h+1+(a[P>>0]|0)|0;continue}else{ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](y+h|0,p,1,g)|0;h=l;continue}}else if((r|0)==42){a[O>>0]=0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](O,1,1,g)|0;p=a[P>>0]|0;l=1-p|0;j=l+h|0;if(j>>>0>x>>>0){Cga(y+h|0,a[O>>0]|0,x-h|0)|0;h=h+1-p|0;continue}else{Cga(y+h|0,a[O>>0]|0,l|0)|0;h=j;continue}}}}while(0);if(!t){n=0;do{if(!u){p=n>>>3;l=n&7^7;j=(ea(n,v)|0)-m|0;h=0;do{H=((d[y+((ea(h,w)|0)+p)>>0]|0)>>>l&1)<<(h&7);I=o+(j+(h>>>3))|0;a[I>>0]=H|d[I>>0];h=h+1|0}while((h|0)!=(M|0))}n=n+1|0}while((n|0)!=(N|0))}if(!((K|0)!=24|t)){p=2-m|0;l=0;do{G=l*3|0;I=o+(G-m)|0;G=o+(p+G)|0;H=a[I>>0]^a[G>>0];a[I>>0]=H;H=a[G>>0]^H;a[G>>0]=H;a[I>>0]=a[I>>0]^H;l=l+1|0}while((l|0)!=(N|0))}o=o+(0-m)|0;q=q+1|0}while((q|0)!=(L|0))}Bfa(y);f=k;i=Q;return f|0}else if((r|0)==59){if(!k){f=0;i=Q;return f|0}AI(k);f=0;i=Q;return f|0}else if((r|0)==61){i=Q;return k|0}return 0}function nV(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;f=i;i=i+16|0;e=f;c[e>>2]=0;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,4,1,b)|0;g=c[e>>2]|0;c[e>>2]=Nga(g|0)|0;if((g|0)!=1297239878){g=0;i=f;return g|0}ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,4,1,b)|0;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,4,1,b)|0;g=c[e>>2]|0;c[e>>2]=Nga(g|0)|0;g=((g|0)==1296190537|(g|0)==541934160)&1;i=f;return g|0}function oV(){return 314480}function pV(a){a=a|0;return 0}function qV(a){a=a|0;return 0}function rV(){return 314776}function sV(){return 314752}function tV(){return 314744}function uV(){return 0}function vV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;c=LJ(a,b,c)|0;i=d;return c|0}function wV(a,b,c){a=a|0;b=b|0;c=c|0;a=i;MJ(c);i=a;return}function xV(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;m=i;i=i+8272|0;f=m+8258|0;j=m+8256|0;k=m;l=m+8252|0;if(!((e|0)!=0&(h|0)!=0)){k=0;i=m;return k|0}c[l>>2]=0;b[f>>1]=20479;b[j>>1]=0;n=a+12|0;n=Ld[(d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24)&511](e)|0;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](j,1,2,e)|0;a=a+8|0;Od[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,n,0)|0;if(pga(f,j,2)|0){n=0;i=m;return n|0}e=g&32768;g=e>>>15;f=c[h+8>>2]|0;IA(k);j=HA(0)|0;EA(j,0,0)|0;FA(j,122,0)|0;GA(j,123,0)|0;if(!(JA(j,k)|0)){n=kc(4)|0;c[n>>2]=314616;xd(n|0,378680,0)}if(!(KA(f,j,l)|0)){n=kc(4)|0;c[n>>2]=314648;xd(n|0,378680,0)}if(e){f=NJ(c[78634]|0,c[l>>2]|0,g)|0;if(!f){n=kc(4)|0;c[n>>2]=314680;xd(n|0,378680,0)}TA(j);iz(c[l>>2]|0);n=f;i=m;return n|0}if(!(LA(j,f,c[l>>2]|0)|0)){n=kc(4)|0;c[n>>2]=314712;xd(n|0,378680,0)}if(!(SA(j,f)|0)){n=kc(4)|0;c[n>>2]=314712;xd(n|0,378680,0)}TA(j);f=NJ(c[78634]|0,c[l>>2]|0,g)|0;if(!f){n=kc(4)|0;c[n>>2]=314680;xd(n|0,378680,0)}iz(c[l>>2]|0);n=f;i=m;return n|0}function yV(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0;l=i;i=i+18704|0;k=l;if(!((d|0)!=0&(e|0)!=0&(j|0)!=0)){k=0;i=l;return k|0}e=c[j+8>>2]|0;NA(k);b=k+4788|0;c[b>>2]=0;if(!h)g[k+4792>>2]=16.0;else g[k+4792>>2]=+(h&1023|0);c[b>>2]=1;c[k+20>>2]=1;f=OJ(c[78634]|0,d,k)|0;if(!f){k=0;i=l;return k|0}a[k+18690>>0]=(c[f+16>>2]|0)==3&1;j=MA(0)|0;EA(j,0,0)|0;FA(j,122,0)|0;GA(j,123,0)|0;OA(j,k,f)|0;if(!(PA(j,f,e)|0)){k=kc(4)|0;c[k>>2]=314560;xd(k|0,378680,0)}b=(QA(j,e)|0)!=0;if(b)b=(RA(j,e)|0)!=0&1;else b=b&1;if(!b){k=kc(4)|0;c[k>>2]=314560;xd(k|0,378680,0)}TA(j);iz(f);k=1;i=l;return k|0}function zV(a,c){a=a|0;c=c|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+2|0;f=e;b[g>>1]=20479;b[f>>1]=0;h=a+12|0;h=Ld[(d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24)&511](c)|0;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,2,c)|0;a=a+8|0;Od[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](c,h,0)|0;a=(pga(g,f,2)|0)==0&1;i=e;return a|0}function AV(){return 314544}function BV(a){a=a|0;return ((a&-17|0)==8|(a|0)==32)&1|0}function CV(a){a=a|0;var b=0;b=i;a=a+-1|0;if(a>>>0>=10){a=0;i=b;return a|0}a=771>>>(a&1023)&1;i=b;return a|0}function DV(){return 314840}function EV(){return 314816}function FV(){return 314808}function GV(){return 0}function HV(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function IV(a,b,c){a=a|0;b=b|0;c=c|0;return}function JV(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;g=i;i=i+16|0;h=g+8|0;e=g;j=h;c[j>>2]=1196313227;c[j+4>>2]=169478669;j=e;c[j>>2]=0;c[j+4>>2]=0;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,1,8,b)|0;if(pga(h,e,8)|0){j=0;i=g;return j|0}j=ZJ(c[78696]|0,a,b,8,f)|0;i=g;return j|0}function KV(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=i;e=_J(c[78696]|0,a,b,d,f)|0;i=g;return e|0}function LV(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;f=e;h=g;c[h>>2]=1196313227;c[h+4>>2]=169478669;h=f;c[h>>2]=0;c[h+4>>2]=0;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,8,b)|0;a=(pga(g,f,8)|0)==0&1;i=e;return a|0}function MV(){return 314792}function NV(a){a=a|0;return ((a&-17|0)==8|(a|0)==32)&1|0}function OV(a){a=a|0;return (a|0)==1|0}function PV(){return 1}function QV(){return 1}function RV(){return 315104}function SV(){return 315080}function TV(){return 315072}function UV(){return 0}function VV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;c=LJ(a,b,c)|0;i=d;return c|0}function WV(a,b,c){a=a|0;b=b|0;c=c|0;a=i;MJ(c);i=a;return}function XV(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;n=i;i=i+8272|0;f=n+8256|0;l=n;m=n+8252|0;if(!((e|0)!=0&(h|0)!=0)){h=0;i=n;return h|0}c[m>>2]=0;k=f+0|0;j=k+12|0;do{a[k>>0]=0;k=k+1|0}while((k|0)<(j|0));j=b+12|0;j=Ld[(d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24)&511](e)|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](f,1,12,e)|0;b=b+8|0;Od[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](e,j,0)|0;if(pga(314872,f,12)|0){h=0;i=n;return h|0}g=g&32768;j=g>>>15;f=c[h+8>>2]|0;IA(l);k=HA(2)|0;EA(k,0,0)|0;FA(k,124,0)|0;GA(k,125,0)|0;if(!(JA(k,l)|0)){n=kc(4)|0;c[n>>2]=314944;xd(n|0,378680,0)}if(!(KA(f,k,m)|0)){n=kc(4)|0;c[n>>2]=314976;xd(n|0,378680,0)}if(g){f=NJ(c[78712]|0,c[m>>2]|0,j)|0;if(!f){n=kc(4)|0;c[n>>2]=315008;xd(n|0,378680,0)}TA(k);iz(c[m>>2]|0);h=f;i=n;return h|0}if(!(LA(k,f,c[m>>2]|0)|0)){n=kc(4)|0;c[n>>2]=315040;xd(n|0,378680,0)}if(!(SA(k,f)|0)){n=kc(4)|0;c[n>>2]=315040;xd(n|0,378680,0)}TA(k);f=NJ(c[78712]|0,c[m>>2]|0,j)|0;if(!f){n=kc(4)|0;c[n>>2]=315008;xd(n|0,378680,0)}iz(c[m>>2]|0);h=f;i=n;return h|0}function YV(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0;l=i;i=i+18704|0;k=l;if(!((d|0)!=0&(e|0)!=0&(j|0)!=0)){k=0;i=l;return k|0}e=c[j+8>>2]|0;NA(k);b=k+4788|0;c[b>>2]=0;if(!h)g[k+4792>>2]=16.0;else g[k+4792>>2]=+(h&1023|0);c[b>>2]=1;c[k+20>>2]=1;f=OJ(c[78712]|0,d,k)|0;if(!f){k=0;i=l;return k|0}a[k+18690>>0]=(c[f+16>>2]|0)==3&1;j=MA(2)|0;EA(j,0,0)|0;FA(j,124,0)|0;GA(j,125,0)|0;OA(j,k,f)|0;if(!(PA(j,f,e)|0)){k=kc(4)|0;c[k>>2]=314888;xd(k|0,378680,0)}b=(QA(j,e)|0)!=0;if(b)b=(RA(j,e)|0)!=0&1;else b=b&1;if(!b){k=kc(4)|0;c[k>>2]=314888;xd(k|0,378680,0)}TA(j);iz(f);k=1;i=l;return k|0}function ZV(b,c){b=b|0;c=c|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g;f=e+0|0;h=f+12|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(h|0));h=b+12|0;h=Ld[(d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24)&511](c)|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](e,1,12,c)|0;f=b+8|0;Od[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](c,h,0)|0;h=(pga(314872,e,12)|0)==0&1;i=g;return h|0}function _V(){return 314856}function $V(a){a=a|0;return ((a&-17|0)==8|(a|0)==32)&1|0}function aW(a){a=a|0;var b=0;b=i;a=a+-1|0;if(a>>>0>=10){a=0;i=b;return a|0}a=771>>>(a&1023)&1;i=b;return a|0}function bW(b){b=b|0;a[(c[b+24>>2]|0)+40>>0]=1;return}function cW(b){b=b|0;var e=0,f=0,g=0,h=0,j=0;j=i;f=c[b+24>>2]|0;e=c[f+32>>2]|0;h=f+36|0;e=ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](c[h>>2]|0,1,4096,c[f+28>>2]|0)|0;g=f+40|0;if(e){b=c[h>>2]|0;c[f>>2]=b;b=f+4|0;c[b>>2]=e;a[g>>0]=0;i=j;return 1}if(!(a[g>>0]|0))e=b;else{NF(b);e=c[b>>2]|0;c[e+20>>2]=43;Id[c[e>>2]&511](b);e=b}e=c[e>>2]|0;c[e+20>>2]=123;Jd[c[e+4>>2]&255](b,-1);a[c[h>>2]>>0]=-1;a[(c[h>>2]|0)+1>>0]=-39;e=2;b=c[h>>2]|0;c[f>>2]=b;b=f+4|0;c[b>>2]=e;a[g>>0]=0;i=j;return 1}function dW(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;k=b+24|0;l=c[k>>2]|0;if((e|0)<=0){i=n;return}m=l+4|0;f=c[m>>2]|0;a:do if((f|0)<(e|0)){j=l;while(1){e=e-f|0;f=c[j+32>>2]|0;g=j+36|0;f=ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](c[g>>2]|0,1,4096,c[j+28>>2]|0)|0;h=j+40|0;if(!f){if(a[h>>0]|0){NF(b);f=c[b>>2]|0;c[f+20>>2]=43;Id[c[f>>2]&511](b)}f=c[b>>2]|0;c[f+20>>2]=123;Jd[c[f+4>>2]&255](b,-1);a[c[g>>2]>>0]=-1;a[(c[g>>2]|0)+1>>0]=-39;f=2}c[j>>2]=c[g>>2];c[j+4>>2]=f;a[h>>0]=0;f=c[m>>2]|0;if((e|0)<=(f|0))break a;j=c[k>>2]|0}}while(0);c[l>>2]=(c[l>>2]|0)+e;c[m>>2]=f-e;i=n;return}function eW(a){a=a|0;return}function fW(a){a=a|0;var b=0,d=0;b=i;d=c[a+24>>2]|0;a=Od[c[c[a+4>>2]>>2]&255](a,1,4096)|0;c[d+28>>2]=a;c[d>>2]=a;c[d+4>>2]=4096;i=b;return}function gW(a){a=a|0;var b=0,e=0,f=0,g=0;f=i;b=c[a+24>>2]|0;g=(c[b+24>>2]|0)+4|0;e=b+28|0;if((ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](c[e>>2]|0,1,4096,c[b+20>>2]|0)|0)==4096){g=c[e>>2]|0;c[b>>2]=g;g=b+4|0;c[g>>2]=4096;i=f;return 1}NF(a);g=c[a>>2]|0;c[g+20>>2]=38;Id[c[g>>2]&511](a);g=c[e>>2]|0;c[b>>2]=g;g=b+4|0;c[g>>2]=4096;i=f;return 1}function hW(a){a=a|0;var b=0,e=0,f=0,g=0;f=i;b=c[a+24>>2]|0;g=c[b+4>>2]|0;e=4096-g|0;if((g|0)==4096){i=f;return}g=(c[b+24>>2]|0)+4|0;if((ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](c[b+28>>2]|0,1,e,c[b+20>>2]|0)|0)==(e|0)){i=f;return}NF(a);g=c[a>>2]|0;c[g+20>>2]=38;Id[c[g>>2]&511](a);i=f;return}function iW(){return 315840}function jW(){return 315816}function kW(){return 315792}function lW(){return 315784}function mW(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0.0;K=i;i=i+3072|0;H=K+456|0;J=i;i=i+168|0;c[J>>2]=0;D=K+1784|0;E=K+472|0;B=K+2808|0;F=K+464|0;C=K;n=K+1496|0;G=K+460|0;if(!g){L=0;i=K;return L|0}c[F>>2]=0;z=j&32768;A=(z|0)==0;z=z>>>15;t=0;k=na(225,n|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)!=1){c[C>>2]=k;c[n>>2]=303;c[n+8>>2]=304;Kga(n+132|0,1,J|0)|0;t=0;h=t;t=0;if((h|0)!=0&(u|0)!=0){k=Mga(c[h>>2]|0,J)|0;if(!k)Va(h|0,u|0);I=u}else k=-1;if((k|0)!=1)k=0;else k=I}else k=I;a:while(1){if(k){t=0;ka(305,C|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,J)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}t=0;k=na(226,4)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}c[k>>2]=0;t=0;Da(124,k|0,378680,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,J)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}else{L=9;break}}t=0;Da(125,C|0,90,456);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,J)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}o=C+24|0;k=c[o>>2]|0;if(!k){k=C+4|0;t=0;n=qa(c[c[k>>2]>>2]|0,C|0,0,44)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}c[o>>2]=n;t=0;k=qa(c[c[k>>2]>>2]|0,C|0,0,4096)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}c[n+36>>2]=k;k=c[o>>2]|0}c[k+8>>2]=306;c[k+12>>2]=227;c[k+16>>2]=126;c[k+20>>2]=256;c[k+24>>2]=307;c[k+28>>2]=g;c[k+32>>2]=f;c[k+4>>2]=0;c[k>>2]=0;t=0;Da(126,C|0,254,65535);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,J)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}h=0;while(1){t=0;Da(126,C|0,h+224|0,65535);k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue a}h=h+1|0;if((h|0)>=16)break}t=0;ya(284,C|0,1)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,J)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}k=j>>16;if((k|0)>0){M=+((c[C+28>>2]|0)>>>0);l=+((c[C+32>>2]|0)>>>0);l=(M>l?M:l)/+(k|0);if(!(l>=8.0))if(!(l>=4.0))if(!(l>=2.0))q=1;else q=2;else q=4;else q=8}else q=1;c[C+48>>2]=1;c[C+52>>2]=q;if(!(j&2)){c[C+68>>2]=1;a[C+72>>0]=0}if(j&16)c[C+44>>2]=1;t=0;na(228,C|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}y=C+104|0;k=c[y>>2]|0;do if((k|0)==4?(c[C+44>>2]|0)==4:0){m=c[C+92>>2]|0;k=c[C+96>>2]|0;if(!(j&4)){t=0;k=ia(4,z|0,m|0,k|0,24,16711680,65280,255)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}c[F>>2]=k;if(k)break;t=0;k=na(226,4)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}c[k>>2]=315696;t=0;Da(124,k|0,378680,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,J)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}else{L=44;break a}}t=0;k=ia(4,z|0,m|0,k|0,32,16711680,65280,255)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}c[F>>2]=k;if(!k){t=0;k=na(226,4)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){m=Mga(c[h>>2]|0,J)|0;if(!m)Va(h|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue a}c[k>>2]=315696;t=0;Da(124,k|0,378680,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,J)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}else{L=37;break a}}else{t=0;k=na(229,k|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}b[k>>1]=e[k>>1]|1;break}}else L=45;while(0);if((L|0)==45){L=0;t=0;k=ia(4,z|0,c[C+92>>2]|0,c[C+96>>2]|0,k<<3|0,16711680,65280,255)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}c[F>>2]=k;if(!k){t=0;k=na(226,4)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}c[k>>2]=315696;t=0;Da(124,k|0,378680,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,J)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}else{L=49;break}}if((c[y>>2]|0)==1){t=0;h=na(230,k|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}k=0;do{x=k&255;a[h+(k<<2)+2>>0]=x;a[h+(k<<2)+1>>0]=x;a[h+(k<<2)>>0]=x;k=k+1|0}while((k|0)!=256)}}if((q|0)!=1){s=c[F>>2]|0;k=c[C+28>>2]|0;q=c[C+32>>2]|0;t=0;r=Aa(158)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}if(r){t=0;c[H>>2]=k;qa(179,B|0,315640,H|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}t=0;k=na(231,B|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}h=k+1|0;t=0;ya(285,r|0,315648)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}t=0;ya(286,r|0,h|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}t=0;ya(287,r|0,h|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}t=0;ya(288,r|0,2)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}t=0;ya(289,r|0,B|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}t=0;k=na(232,r|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}t=0;Ga(141,0,s|0,k|0,r|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}t=0;c[H>>2]=q;qa(179,B|0,315640,H|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}t=0;k=na(231,B|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}h=k+1|0;t=0;ya(285,r|0,315672)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}t=0;ya(286,r|0,h|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}t=0;ya(287,r|0,h|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}t=0;ya(288,r|0,2)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}t=0;ya(289,r|0,B|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}t=0;k=na(232,r|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}t=0;Ga(141,0,s|0,k|0,r|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}t=0;ka(308,r|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}}}k=a[C+259>>0]|0;if(k<<24>>24==1){t=0;la(127,c[F>>2]|0,~~(+(e[C+260>>1]|0)/.0254+.5)>>>0|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}t=0;la(128,c[F>>2]|0,~~(+(e[C+262>>1]|0)/.0254+.5)>>>0|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}}else if(k<<24>>24==2){t=0;la(127,c[F>>2]|0,(e[C+260>>1]|0)*100|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}t=0;la(128,c[F>>2]|0,(e[C+262>>1]|0)*100|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}}x=c[F>>2]|0;v=C+276|0;k=c[v>>2]|0;if(!k)q=0;else{w=C+256|0;while(1){m=d[k+4>>0]|0;do if((m|0)==254){m=c[k+16>>2]|0;h=c[k+12>>2]|0;q=h+1|0;t=0;p=na(233,q|0)|0;o=t;t=0;if((o|0)!=0&(u|0)!=0){n=Mga(c[o>>2]|0,J)|0;if(!n)Va(o|0,u|0);I=u}else n=-1;if((n|0)==1){k=I;continue a}if(p){Aga(p|0,m|0,h|0)|0;a[p+h>>0]=0;t=0;r=Aa(158)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}if(r){t=0;ya(292,r|0,254)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;ya(285,r|0,315360)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;ya(286,r|0,q|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;ya(287,r|0,q|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;ya(288,r|0,2)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;ya(289,r|0,p|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;m=na(232,r|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){o=Mga(c[h>>2]|0,J)|0;if(!o)Va(h|0,u|0);I=u}else o=-1;if((o|0)==1){k=I;continue a}t=0;Ga(141,0,x|0,m|0,r|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;ka(308,r|0);m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}}t=0;ka(311,p|0);m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}}}else if((m|0)==224){q=k+16|0;m=c[q>>2]|0;t=0;h=qa(180,m|0,315584,5)|0;o=t;t=0;if((o|0)!=0&(u|0)!=0){n=Mga(c[o>>2]|0,J)|0;if(!n)Va(o|0,u|0);I=u}else n=-1;if((n|0)==1){k=I;continue a}if(h){t=0;h=qa(180,m|0,315592,5)|0;o=t;t=0;if((o|0)!=0&(u|0)!=0){n=Mga(c[o>>2]|0,J)|0;if(!n)Va(o|0,u|0);I=u}else n=-1;if((n|0)==1){k=I;continue a}if(h)break;p=c[w>>2]|0;if((p&255)<<24>>24==0|(p>>>16&255)<2){t=0;Da(127,c[78778]|0,315600,H|0);m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}m=c[q>>2]|0}h=c[k+12>>2]|0;if(h>>>0<6)break;if((a[m+5>>0]|0)!=16)break;t=0;o=ya(290,m+6|0,h+-6|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;n=qa(181,2,o|0,0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;ka(309,o|0);m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;ya(291,x|0,n|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;ka(310,n|0);m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}}}else if((m|0)==225){p=k+16|0;s=k+12|0;t=0;qa(182,x|0,c[p>>2]|0,c[s>>2]|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}q=c[p>>2]|0;m=c[s>>2]|0;do if(m>>>0>=30){t=0;h=qa(180,315264,q|0,28)|0;o=t;t=0;if((o|0)!=0&(u|0)!=0){n=Mga(c[o>>2]|0,J)|0;if(!n)Va(o|0,u|0);I=u}else n=-1;if((n|0)==1){k=I;continue a}if(h)break;r=m+-29|0;t=0;n=Aa(158)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}if(!n)break;q=q+29|0;t=0;ya(292,n|0,225)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;ya(285,n|0,315296)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;ya(286,n|0,r|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;ya(287,n|0,r|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;ya(288,n|0,2)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;ya(289,n|0,q|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;m=na(232,n|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){o=Mga(c[h>>2]|0,J)|0;if(!o)Va(h|0,u|0);I=u}else o=-1;if((o|0)==1){k=I;continue a}t=0;Ga(141,7,x|0,m|0,n|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;ka(308,n|0);m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}}while(0);t=0;qa(183,x|0,c[p>>2]|0,c[s>>2]|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}}else if((m|0)==237){t=0;qa(184,x|0,c[k+16>>2]|0,c[k+12>>2]|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}}while(0);k=c[k>>2]|0;if(!k)break}q=c[v>>2]|0}Cga(B|0,0,256)|0;b:do if(q){r=q;h=0;while(1){do if((a[r+4>>0]|0)==-30){p=c[r+12>>2]|0;if(p>>>0<=13)break;n=c[r+16>>2]|0;t=0;k=qa(180,315344,n|0,12)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){o=Mga(c[m>>2]|0,J)|0;if(!o)Va(m|0,u|0);I=u}else o=-1;if((o|0)==1){k=I;continue a}if(k)break;k=d[n+13>>0]|0;if(h){if((h|0)!=(k|0)){n=0;k=0;h=0;break b}}else h=k;w=a[n+12>>0]|0;k=w&255;if(w<<24>>24==0|(k|0)>(h|0)){n=0;k=0;h=0;break b}m=B+k|0;if(a[m>>0]|0){n=0;k=0;h=0;break b}a[m>>0]=1;c[D+(k<<2)>>2]=p+-14}while(0);r=c[r>>2]|0;if(!r)break}if((h|0)>=1){m=1;k=0;while(1){if(!(a[B+m>>0]|0)){n=0;k=0;h=0;break b}c[E+(m<<2)>>2]=k;k=(c[D+(m<<2)>>2]|0)+k|0;if((m|0)>=(h|0))break;else m=m+1|0}if(k){t=0;h=na(233,k|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){n=Mga(c[m>>2]|0,J)|0;if(!n)Va(m|0,u|0);I=u}else n=-1;if((n|0)==1){k=I;continue a}m=(h|0)==0;if(m){n=m&1^1;k=m?0:k;h=0;break}while(1){do if((a[q+4>>0]|0)==-30){if((c[q+12>>2]|0)>>>0<=13)break;p=c[q+16>>2]|0;t=0;m=qa(180,315344,p|0,12)|0;o=t;t=0;if((o|0)!=0&(u|0)!=0){n=Mga(c[o>>2]|0,J)|0;if(!n)Va(o|0,u|0);I=u}else n=-1;if((n|0)==1){k=I;continue a}if(m)break;m=d[p+12>>0]|0;o=c[D+(m<<2)>>2]|0;if(!o)break;n=h+(c[E+(m<<2)>>2]|0)|0;m=p+14|0;while(1){o=o+-1|0;a[n>>0]=a[m>>0]|0;if(!o)break;else{n=n+1|0;m=m+1|0}}}while(0);q=c[q>>2]|0;if(!q){n=1;break}}}else{n=0;k=0;h=0}}else{n=0;k=0;h=0}}else{n=0;k=0;h=0}while(0);if(n){t=0;qa(185,x|0,h|0,k|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}t=0;ka(311,h|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue}}if(!A){t=0;ka(305,C|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,J)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}else{L=171;break}}k=c[C+44>>2]|0;m=(j&4|0)==0;do if(!((k|0)==4&m))if((k|0)!=4|m){o=C+120|0;n=C+96|0;while(1){k=c[o>>2]|0;m=c[n>>2]|0;h=c[F>>2]|0;if(m>>>0<=k>>>0)break;t=0;k=ya(293,h|0,m+~k|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,J)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}c[G>>2]=k;t=0;qa(186,C|0,G|0,1)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue a}}t=0;na(234,h|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,J)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}break}else{p=C+92|0;n=ea(c[y>>2]|0,c[p>>2]|0)|0;t=0;n=Ga(c[(c[C+4>>2]|0)+8>>2]|0,C|0,1,n|0,1)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue a}q=C+120|0;k=c[q>>2]|0;r=C+96|0;m=c[r>>2]|0;if(m>>>0<=k>>>0)break;while(1){o=c[n>>2]|0;t=0;h=ya(293,c[F>>2]|0,m+~k|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue a}t=0;qa(186,C|0,n|0,1)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue a}if(c[p>>2]|0){k=o;m=0;while(1){a[h>>0]=d[k>>0]^255;a[h+1>>0]=d[k+1>>0]^255;a[h+2>>0]=d[k+2>>0]^255;a[h+3>>0]=d[k+3>>0]^255;m=m+1|0;if(m>>>0>=(c[p>>2]|0)>>>0)break;else{h=h+4|0;k=k+4|0}}}k=c[q>>2]|0;m=c[r>>2]|0;if(m>>>0<=k>>>0)break}}else{p=C+92|0;n=ea(c[y>>2]|0,c[p>>2]|0)|0;t=0;n=Ga(c[(c[C+4>>2]|0)+8>>2]|0,C|0,1,n|0,1)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue a}q=C+120|0;k=c[q>>2]|0;r=C+96|0;m=c[r>>2]|0;if(m>>>0<=k>>>0)break;while(1){o=c[n>>2]|0;t=0;h=ya(293,c[F>>2]|0,m+~k|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue a}t=0;qa(186,C|0,n|0,1)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,J)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue a}if(c[p>>2]|0){k=o;m=0;while(1){y=d[k+3>>0]|0;a[h+2>>0]=((ea(d[k>>0]|0,y)|0)>>>0)/255|0;a[h+1>>0]=((ea(d[k+1>>0]|0,y)|0)>>>0)/255|0;a[h>>0]=((ea(d[k+2>>0]|0,y)|0)>>>0)/255|0;m=m+1|0;if(m>>>0>=(c[p>>2]|0)>>>0)break;else{h=h+3|0;k=k+4|0}}}k=c[q>>2]|0;m=c[r>>2]|0;if(m>>>0<=k>>>0)break}}while(0);t=0;na(235,C|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,J)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}t=0;ka(305,C|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,J)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}if((j&32776|0)!=8)break;t=0;ka(312,F|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,J)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1)k=I;else{L=199;break}}if((L|0)!=9)if((L|0)!=37)if((L|0)!=44)if((L|0)!=49)if((L|0)==171){L=c[F>>2]|0;i=K;return L|0}L=c[F>>2]|0;i=K;return L|0}function nW(e,f,g,h,j,k){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+1024|0;M=O+424|0;N=i;i=i+168|0;c[N>>2]=0;E=O+752|0;F=O+748|0;A=O+744|0;B=O+740|0;D=O+736|0;K=O+732|0;L=O+756|0;z=O;q=O+432|0;G=O+428|0;y=O+720|0;H=O+724|0;C=O+760|0;J=O+728|0;if(!((f|0)!=0&(g|0)!=0)){e=0;i=O;return e|0}t=0;x=na(236,f|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;do if((h|0)!=1){t=0;k=na(237,f|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)!=1){k=k&65535;if((k|0)==8)m=8;else if((k|0)!=24){t=0;k=na(226,4)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;break}c[k>>2]=315136;t=0;Da(124,k|0,378680,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;break}}if((m|0)==8?!((x|0)==0|(x|0)==1|(x|0)==3):0){t=0;k=na(226,4)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;break}c[k>>2]=315136;t=0;Da(124,k|0,378680,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;break}}t=0;k=na(225,q|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)!=1){c[z>>2]=k;c[q>>2]=303;c[q+8>>2]=304;Kga(q+132|0,1,N|0)|0;t=0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)!=1)k=0;else k=I}else k=I}else k=I}else k=I;while(0);a:while(1){if(k){t=0;ka(313,z|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}t=0;k=na(226,4)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue}c[k>>2]=0;t=0;Da(124,k|0,378680,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}else{m=19;break}}t=0;Da(128,z|0,90,424);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}o=z+24|0;k=c[o>>2]|0;if(!k){t=0;k=qa(c[c[z+4>>2]>>2]|0,z|0,0,32)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue}c[o>>2]=k}c[k+8>>2]=314;c[k+12>>2]=238;c[k+16>>2]=315;c[k+20>>2]=g;c[k+24>>2]=e;t=0;l=na(239,f|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}v=z+28|0;c[v>>2]=l;t=0;l=na(240,f|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}w=z+32|0;c[w>>2]=l;q=z+40|0;if(x>>>0<2){c[q>>2]=1;c[z+36>>2]=1}else{c[q>>2]=2;c[z+36>>2]=3}t=0;ka(316,z|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}if(j&8192){t=0;ka(317,z|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}}if(j&131072)a[z+210>>0]=1;t=0;k=na(241,f|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue}b[z+236>>1]=~~(+(k>>>0)*.0254+.5);t=0;k=na(242,f|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue}b[z+238>>1]=~~(+(k>>>0)*.0254+.5);a[z+235>>0]=1;t=0;k=na(243,f|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue}if(k){a[z+232>>0]=1;a[z+234>>0]=2}m=(j&262144|0)==0;if(!m){a[z+232>>0]=0;a[z+240>>0]=0}do if((c[q>>2]|0)==2){if(j&4096){s=c[z+84>>2]|0;c[s+8>>2]=4;c[s+12>>2]=1;c[s+96>>2]=1;c[s+100>>2]=1;c[s+184>>2]=1;c[s+188>>2]=1;break}if(j&16384){s=c[z+84>>2]|0;c[s+8>>2]=2;c[s+12>>2]=2;c[s+96>>2]=1;c[s+100>>2]=1;c[s+184>>2]=1;c[s+188>>2]=1;break}if(j&32768){s=c[z+84>>2]|0;c[s+8>>2]=2;c[s+12>>2]=1;c[s+96>>2]=1;c[s+100>>2]=1;c[s+184>>2]=1;c[s+188>>2]=1;break}if(!(j&65536))break;s=c[z+84>>2]|0;c[s+8>>2]=1;c[s+12>>2]=1;c[s+96>>2]=1;c[s+100>>2]=1;c[s+184>>2]=1;c[s+188>>2]=1}while(0);do if(!(j&2048)){if(j&1024){k=25;break}if(j&512){k=50;break}if(j&256){k=75;break}if(j&128){k=100;break}k=j&127;k=(k|0)==0?75:k}else k=10;while(0);t=0;Da(129,z|0,k|0,1);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}t=0;la(129,z|0,1);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}do if(m){t=0;q=na(243,f|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}b:do if(q){t=0;k=na(244,q|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}do if((k|0)==1){t=0;k=na(237,q|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}if((k|0)!=8){t=0;k=na(237,q|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}if((k|0)!=24)break}t=0;r=ya(290,0,0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;k=Ga(142,2,q|0,r|0,262144)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}if(!k){t=0;ka(309,r|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}break b}t=0;qa(187,r|0,0,2)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;k=na(245,r|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}if((k|0)>65527){s=c[78778]|0;t=0;c[M>>2]=k+-65527;Da(127,s|0,315368,M|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;ka(309,r|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}break b}c[K>>2]=0;c[L>>2]=0;t=0;qa(188,r|0,K|0,L|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;Da(130,z|0,224,(c[L>>2]|0)+6|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;la(130,z|0,74);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;la(130,z|0,70);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;la(130,z|0,88);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;la(130,z|0,88);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;la(130,z|0,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;la(130,z|0,16);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}l=c[o>>2]|0;n=l+4|0;k=c[K>>2]|0;s=c[L>>2]|0;o=k+s|0;p=l+12|0;c:do if((s|0)>0)while(1){c[K>>2]=k+1;h=a[k>>0]|0;s=c[l>>2]|0;c[l>>2]=s+1;a[s>>0]=h;s=(c[n>>2]|0)+-1|0;c[n>>2]=s;if(!s){t=0;k=na(c[p>>2]|0,z|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,N)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}if(!(k<<24>>24))break c}k=c[K>>2]|0;if(k>>>0>=o>>>0)break}while(0);t=0;ka(309,r|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}break b}while(0);t=0;Da(127,c[78778]|0,315472,M|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}}while(0);c[D>>2]=0;t=0;Ga(143,0,f|0,315360,D|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}k=c[D>>2]|0;do if(k){t=0;q=na(246,k|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}if(!q)break;t=0;k=na(231,q|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}if((k|0)>0)o=0;else break;while(1){k=q+o|0;t=0;h=na(231,k|0)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){m=Mga(c[l>>2]|0,N)|0;if(!m)Va(l|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue a}t=0;Ha(57,z|0,254,k|0,((h|0)<65533?h:65533)|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}o=o+65533|0;t=0;k=na(231,q|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}if((o|0)>=(k|0))break}}while(0);t=0;l=na(229,f|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}s=l+4|0;k=c[s>>2]|0;do if(k){r=l+8|0;if(!(c[r>>2]|0))break;t=0;p=na(233,k+14|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}if(!p)break;k=p+0|0;m=315344|0;q=k+12|0;do{a[k>>0]=a[m>>0]|0;k=k+1|0;m=m+1|0}while((k|0)<(q|0));k=c[s>>2]|0;if((k|0)>0){l=p+12|0;o=p+13|0;n=p+14|0;h=0;while(1){k=k-h|0;k=(k|0)<65519?k:65519;a[l>>0]=((h|0)/65519|0)+1;a[o>>0]=(((c[s>>2]|0)>>>0)/65519|0)+1;Aga(n|0,(c[r>>2]|0)+h|0,k|0)|0;t=0;Ha(57,z|0,226,p|0,k+14|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,N)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue a}h=h+65519|0;k=c[s>>2]|0;if((k|0)<=(h|0))break}}t=0;ka(311,p|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}}while(0);t=0;k=ya(294,6,f|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}do if(k){c[A>>2]=0;c[B>>2]=0;t=0;k=qa(189,f|0,A|0,B|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}if(!k)break;k=c[B>>2]|0;d:do if((k|0)>0){r=0;while(1){h=k-r|0;h=(h|0)<65517?h:65517;l=h&1;o=h+26|0;n=o+l|0;t=0;p=na(233,n|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,N)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue a}if(!p)break d;k=p+0|0;m=315312|0;q=k+14|0;do{a[k>>0]=a[m>>0]|0;k=k+1|0;m=m+1|0}while((k|0)<(q|0));k=p+14|0;m=315328|0;q=k+10|0;do{a[k>>0]=a[m>>0]|0;k=k+1|0;m=m+1|0}while((k|0)<(q|0));a[p+24>>0]=h>>>8;a[p+25>>0]=h;Aga(p+26|0,(c[A>>2]|0)+r|0,h|0)|0;if(l)a[p+o>>0]=0;t=0;Ha(57,z|0,237,p|0,n|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;ka(311,p|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}r=r+65517|0;k=c[B>>2]|0;if((k|0)<=(r|0))break}}while(0);t=0;ka(311,c[A>>2]|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}}while(0);c[F>>2]=0;t=0;Ga(143,7,f|0,315296,F|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}k=c[F>>2]|0;do if(k){t=0;p=na(246,k|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}if(!p)break;t=0;n=na(247,c[F>>2]|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;o=na(233,n+29|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}if(!o)break;k=o+0|0;m=315264|0;q=k+29|0;do{a[k>>0]=a[m>>0]|0;k=k+1|0;m=m+1|0}while((k|0)<(q|0));if(n){k=o+29|0;l=0;while(1){m=n-l|0;m=(m|0)<65504?m:65504;Aga(k|0,p+l|0,m|0)|0;t=0;Ha(57,z|0,225,o|0,m+29|0);m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,N)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}l=l+65504|0;if(n>>>0<=l>>>0)break}}t=0;ka(311,o|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}}while(0);c[E>>2]=0;t=0;Ga(143,11,f|0,315256,E|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}k=c[E>>2]|0;if(!k)break;t=0;n=na(246,k|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;k=qa(180,315248,n|0,6)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}if((k|0)!=0|(n|0)==0)break;t=0;o=na(247,c[E>>2]|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;l=na(233,o|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}if(!l)break;if(o){h=0;while(1){k=o-h|0;k=(k|0)<65504?k:65504;Aga(l|0,n+h|0,k|0)|0;t=0;Ha(57,z|0,225,l|0,k|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){m=Mga(c[k>>2]|0,N)|0;if(!m)Va(k|0,u|0);I=u}else m=-1;if((m|0)==1){k=I;continue a}h=h+65504|0;if(o>>>0<=h>>>0)break}}t=0;ka(311,l|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}}while(0);e:do if((x|0)==2){t=0;q=na(248,f|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;l=na(233,q|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}c[G>>2]=l;if(!l){t=0;k=na(226,4)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}c[k>>2]=315216;t=0;Da(124,k|0,378680,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}else{m=165;break a}}o=z+248|0;while(1){if((c[o>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;t=0;k=na(240,f|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,N)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;k=ya(293,f|0,k+-1-(c[o>>2]|0)|0)|0;m=t;t=0;if((m|0)!=0&(u|0)!=0){h=Mga(c[m>>2]|0,N)|0;if(!h)Va(m|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}Aga(l|0,k|0,q|0)|0;if(c[v>>2]|0){k=c[G>>2]|0;h=0;while(1){p=k+2|0;s=a[p>>0]|0;a[p>>0]=a[k>>0]|0;a[k>>0]=s;h=h+1|0;if(h>>>0>=(c[v>>2]|0)>>>0)break;else k=k+3|0}}t=0;qa(190,z|0,G|0,1)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}l=c[G>>2]|0}t=0;ka(311,l|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}}else if((x|0)==3){t=0;q=na(230,f|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;k=na(233,(c[v>>2]|0)*3|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}c[H>>2]=k;if(!k){t=0;k=na(226,4)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}c[k>>2]=315216;t=0;Da(124,k|0,378680,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}else{m=187;break a}}m=z+248|0;while(1){if((c[m>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;t=0;k=na(240,f|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}t=0;k=ya(293,f|0,k+-1-(c[m>>2]|0)|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}t=0;Ha(58,c[H>>2]|0,k|0,c[v>>2]|0,q|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}if(c[v>>2]|0){k=c[H>>2]|0;h=0;while(1){p=k+2|0;s=a[p>>0]|0;a[p>>0]=a[k>>0]|0;a[k>>0]=s;h=h+1|0;if(h>>>0>=(c[v>>2]|0)>>>0)break;else k=k+3|0}}t=0;qa(190,z|0,H|0,1)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}}t=0;ka(311,c[H>>2]|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}}else if((x|0)==1){m=z+248|0;while(1){if((c[m>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break e;t=0;k=na(240,f|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}t=0;k=ya(293,f|0,k+-1-(c[m>>2]|0)|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}c[y>>2]=k;t=0;qa(190,z|0,y|0,1)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}}}else if(!x){t=0;k=na(233,c[v>>2]|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}c[J>>2]=k;if(!k){t=0;k=na(226,4)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}c[k>>2]=315216;t=0;Da(124,k|0,378680,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}else{m=203;break a}}else k=0;do{a[C+k>>0]=255-k;k=k+1|0}while((k|0)!=256);m=z+248|0;while(1){if((c[m>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;t=0;k=na(240,f|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){l=Mga(c[h>>2]|0,N)|0;if(!l)Va(h|0,u|0);I=u}else l=-1;if((l|0)==1){k=I;continue a}t=0;l=ya(293,f|0,k+-1-(c[m>>2]|0)|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}if(c[v>>2]|0){k=0;do{a[(c[J>>2]|0)+k>>0]=a[C+(d[l+k>>0]|0)>>0]|0;k=k+1|0}while(k>>>0<(c[v>>2]|0)>>>0)}t=0;qa(190,z|0,J|0,1)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}}t=0;ka(311,c[J>>2]|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}}while(0);t=0;ka(318,z|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}t=0;ka(313,z|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,N)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1)k=I;else{m=217;break}}if((m|0)!=19)if((m|0)!=165)if((m|0)!=187)if((m|0)!=203)if((m|0)==217){e=1;i=O;return e|0}return 0}function oW(a,c){a=a|0;c=c|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+2|0;f=e;b[g>>1]=-9985;b[f>>1]=0;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,2,c)|0;a=(pga(g,f,2)|0)==0&1;i=e;return a|0}function pW(){return 315120}function qW(a){a=a|0;return (a&-17|0)==8|0}function rW(a){a=a|0;return (a|0)==1|0}function sW(){return 1}function tW(){return 1}function uW(){return 315912}function vW(){return 315880}function wW(){return 315872}function xW(){return 0}function yW(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function zW(a,b,c){a=a|0;b=b|0;c=c|0;return}function AW(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;g=i;i=i+16|0;h=g+8|0;e=g;j=h;c[j>>2]=1196313994;c[j+4>>2]=169478669;j=e;c[j>>2]=0;c[j+4>>2]=0;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,1,8,b)|0;if(pga(h,e,8)|0){j=0;i=g;return j|0}j=ZJ(c[78962]|0,a,b,8,f)|0;i=g;return j|0}function BW(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;f=e;h=g;c[h>>2]=1196313994;c[h+4>>2]=169478669;h=f;c[h>>2]=0;c[h+4>>2]=0;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,8,b)|0;a=(pga(g,f,8)|0)==0&1;i=e;return a|0}function CW(){return 315856}function DW(a){a=a|0;return 0}function EW(a){a=a|0;return 0}function FW(){return 1}function GW(){return 0}function HW(){return 316096}function IW(){return 316080}function JW(){return 316072}function KW(){return 0}function LW(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+144|0;j=B+8|0;A=B;h=g&32768;f=(h|0)==0;h=h>>>15;k=b+12|0;k=Ld[(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24)&511](e)|0;if((g|0)==2){l=128;g=8192;z=192}else if((g|0)==3){l=256;g=47104;z=384}else{l=512;g=196608;z=768}y=xI(h,z,l,24,16711680,65280,255)|0;if(!y){b=kc(4)|0;c[b>>2]=315984;xd(b|0,378680,0)}if(!f){i=B;return y|0}ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,128,1,e)|0;h=(a[j+72>>0]&63)==8;u=h?-1:1;v=Afa(z)|0;w=Afa(z)|0;x=Afa(z)|0;if(!((v|0)!=0&(w|0)!=0&(x|0)!=0)){b=kc(4)|0;c[b>>2]=315952;xd(b|0,378680,0)}c[A>>2]=v;c[A+4>>2]=w;s=b+8|0;Od[(d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24)&255](e,k,0)|0;Od[(d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24)&255](e,g,1)|0;s=l>>>1;if(s){t=z>>>1;h=h?l+-1|0:0;r=0;do{ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](v,z,1,e)|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](w,z,1,e)|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](x,z,1,e)|0;q=0;do{l=A+(q<<2)|0;k=$J(y,h)|0;p=0;while(1){j=p>>>1;m=+(d[(c[l>>2]|0)+p>>0]|0|0)*1.407488;n=+((d[x+j>>0]|0)+-156|0);o=+((d[x+(j+t)>>0]|0)+-137|0);j=~~+S(+(m+n*.0000256+o*1.3230336+.5));if((j|0)<0)g=0;else g=(j|0)>255?-1:j&255;j=~~+S(+(m+n*-.3954176+o*-.67392+.5));if((j|0)<0)f=0;else f=(j|0)>255?-1:j&255;j=~~+S(+(m+n*2.0360448+o*.0000256+.5));if((j|0)<0)j=0;else j=(j|0)>255?-1:j&255;a[k>>0]=j;a[k+1>>0]=f;a[k+2>>0]=g;p=p+1|0;if(p>>>0>=z>>>0)break;else k=k+3|0}h=h+u|0;q=q+1|0}while((q|0)<2);r=r+1|0}while(r>>>0>>0)}Bfa(x);Bfa(w);Bfa(v);i=B;return y|0}function MW(){return 315928}function NW(a){a=a|0;return 0}function OW(a){a=a|0;return 0}function PW(){return 1}function QW(){return 316344}function RW(){return 316320}function SW(){return 316312}function TW(){return 0}function UW(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+144|0;k=I;j=I+130|0;s=I+128|0;A=I+129|0;if(!e){b=0;i=I;return b|0}g=g&32768;n=(g|0)==0;g=g>>>15;f=b+12|0;f=Ld[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&511](e)|0;G=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;c[k>>2]=0;do if((ce[G&255](k,1,4,e)|0)==4){F=c[k>>2]|0;G=F>>>24&255;if(((F&255)<<24>>24==10?((F&65535)>>>8&255)<6&(F>>>16&255)<2:0)?G<<24>>24==8|G<<24>>24==1:0){h=1;break}h=0}else h=0;while(0);l=b+8|0;Od[(d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24)&255](e,f,0)|0;if(!h){b=kc(4)|0;c[b>>2]=316288;xd(b|0,378680,0)}if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](k,128,1,e)|0)!=1){b=kc(4)|0;c[b>>2]=316272;xd(b|0,378680,0)}u=k+8|0;u=(d[u>>0]|d[u+1>>0]<<8)&65535;v=k+4|0;v=(d[v>>0]|d[v+1>>0]<<8)&65535;z=u-v+1|0;H=k+10|0;o=k+6|0;o=((d[H>>0]|d[H+1>>0]<<8)&65535)-((d[o>>0]|d[o+1>>0]<<8)&65535)|0;H=o+1|0;p=k+3|0;m=k+65|0;h=ea(d[m>>0]|0,d[p>>0]|0)|0;if((h|0)==24)G=xI(g,z,H,24,16711680,65280,255)|0;else G=xI(g,z,H,h,0,0,0)|0;if(!G){b=kc(4)|0;c[b>>2]=316184;xd(b|0,378680,0)}F=k+12|0;eJ(G,~~(+((d[F>>0]|d[F+1>>0]<<8)&65535)/.0254+.5)>>>0);F=k+14|0;fJ(G,~~(+((d[F>>0]|d[F+1>>0]<<8)&65535)/.0254+.5)>>>0);if((h|0)==4){h=VI(G)|0;f=0;g=k+16|0;while(1){a[h+(f<<2)+2>>0]=a[g>>0]|0;a[h+(f<<2)+1>>0]=a[g+1>>0]|0;a[h+(f<<2)>>0]=a[g+2>>0]|0;f=f+1|0;if((f|0)==16)break;else g=g+3|0}}else if((h|0)==1){F=VI(G)|0;a[F>>0]=0;a[F+1>>0]=0;a[F+2>>0]=0;a[F+4>>0]=-1;a[F+5>>0]=-1;a[F+6>>0]=-1}else if((h|0)==8){Od[(d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24)&255](e,-769,2)|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0;if((a[j>>0]|0)!=12){F=k+68|0;if((d[F>>0]|d[F+1>>0]<<8)<<16>>16==2){h=VI(G)|0;f=0;do{F=f&255;a[h+(f<<2)+2>>0]=F;a[h+(f<<2)+1>>0]=F;a[h+(f<<2)>>0]=F;f=f+1|0}while((f|0)!=256)}}else{h=Afa(768)|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](h,768,1,e)|0;f=VI(G)|0;g=0;j=h;while(1){a[f+(g<<2)+2>>0]=a[j>>0]|0;a[f+(g<<2)+1>>0]=a[j+1>>0]|0;a[f+(g<<2)>>0]=a[j+2>>0]|0;g=g+1|0;if((g|0)==256)break;else j=j+3|0}Bfa(h)}Od[(d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24)&255](e,128,0)|0}if(!n){b=G;i=I;return b|0}B=k+66|0;F=ea(d[m>>0]|0,(d[B>>0]|d[B+1>>0]<<8)&65535)|0;n=OI(G)|0;C=(a[k+2>>0]|0)==1;D=Afa(F)|0;if(!D){b=kc(4)|0;c[b>>2]=316152;xd(b|0,378680,0)}E=Afa(2048)|0;if(!E){b=kc(4)|0;c[b>>2]=316152;xd(b|0,378680,0)}f=$J(G,o)|0;g=a[m>>0]|0;h=a[p>>0]|0;a:do if(g<<24>>24==1){if(!(h<<24>>24==8|h<<24>>24==1)){b=kc(4)|0;c[b>>2]=316128;xd(b|0,378680,0)}if(H){o=(F|0)==0;p=E+2047|0;q=E+1|0;r=0-n|0;if(C){h=2048;n=0}else{g=0;while(1){h=ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](f,F,1,e)|0;if(h>>>0>>0)do{ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](s,1,1,e)|0;h=h+1|0}while(h>>>0>>0);g=g+1|0;if(g>>>0>=H>>>0)break a;else f=f+r|0}}while(1){if(!o){m=F;j=0;g=0;l=0;while(1){m=m+-1|0;do if(!(j<<24>>24)){do if((h|0)>2046)if((h|0)==2047){a[E>>0]=a[p>>0]|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](q,1,2047,e)|0;h=0;break}else{ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](E,1,2048,e)|0;h=0;break}while(0);k=h+1|0;g=a[E+h>>0]|0;j=g&255;if((j&192|0)!=192){h=k;j=1;break}h=h+2|0;j=j&63;g=a[E+k>>0]|0}while(0);a[f+l>>0]=g;if(!m)break;else{j=j+-1<<24>>24;l=l+1|0}}}n=n+1|0;if(n>>>0>=H>>>0)break;else f=f+r|0}}}else{if(!(g<<24>>24==4&h<<24>>24==1)){if(!(g<<24>>24==3&h<<24>>24==8)){b=kc(4)|0;c[b>>2]=316128;xd(b|0,378680,0)}if(!H)break;r=(F|0)==0;s=E+2047|0;t=E+1|0;q=(z|0)==0;p=0-n|0;m=u+1-v|0;h=2048;o=0;while(1){if(C)if(r)g=h;else{l=F;j=0;g=0;n=0;while(1){l=l+-1|0;do if(!(j<<24>>24)){do if((h|0)>2046)if((h|0)==2047){a[E>>0]=a[s>>0]|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](t,1,2047,e)|0;h=0;break}else{ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](E,1,2048,e)|0;h=0;break}while(0);k=h+1|0;g=a[E+h>>0]|0;j=g&255;if((j&192|0)!=192){h=k;j=1;break}h=h+2|0;j=j&63;g=a[E+k>>0]|0}while(0);a[D+n>>0]=g;if(!l){g=h;break}else{j=j+-1<<24>>24;n=n+1|0}}}else{ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](D,F,1,e)|0;g=h}do if(!q){h=0;do{a[f+((h*3|0)+2)>>0]=a[D+h>>0]|0;h=h+1|0}while((h|0)!=(m|0));h=(d[B>>0]|d[B+1>>0]<<8)&65535;if(!q){j=0;do{a[f+((j*3|0)+1)>>0]=a[D+(j+h)>>0]|0;j=j+1|0}while((j|0)!=(m|0));h=((d[B>>0]|d[B+1>>0]<<8)&65535)+h|0;if(q)break;else j=0;do{a[f+(j*3|0)>>0]=a[D+(h+j)>>0]|0;j=j+1|0}while((j|0)!=(m|0))}}while(0);o=o+1|0;if(o>>>0>=H>>>0)break a;else{h=g;f=f+p|0}}}q=Afa(z)|0;if(!q){b=kc(4)|0;c[b>>2]=316152;xd(b|0,378680,0)}if(H){r=(F|0)==0;s=E+2047|0;t=E+1|0;w=(z|0)==0;x=z>>>1;y=(x|0)==0;p=0-n|0;m=u+1-v|0;h=2048;k=0;while(1){if(C)if(r)j=0;else{l=F;n=0;j=0;o=0;while(1){l=l+-1|0;do if(!(n<<24>>24)){do if((h|0)>2046)if((h|0)==2047){a[E>>0]=a[s>>0]|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](t,1,2047,e)|0;h=0;break}else{ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](E,1,2048,e)|0;h=0;break}while(0);g=h+1|0;j=a[E+h>>0]|0;n=j&255;if((n&192|0)!=192){h=g;n=1;break}h=h+2|0;n=n&63;j=a[E+g>>0]|0}while(0);a[D+o>>0]=j;if(!l){j=F;break}else{n=n+-1<<24>>24;o=o+1|0}}}else j=ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](D,F,1,e)|0;Cga(q|0,0,z|0)|0;n=(d[B>>0]|d[B+1>>0]<<8)&65535;if(!w){g=0;do{v=q+g|0;a[v>>0]=(128>>>(g&7)&d[D+(g>>>3)>>0]|0)!=0|d[v>>0];g=g+1|0}while((g|0)!=(m|0));g=0;do{v=q+g|0;a[v>>0]=((128>>>(g&7)&d[D+(n+(g>>>3))>>0]|0)==0?0:2)|d[v>>0];g=g+1|0}while((g|0)!=(m|0));g=n<<1;l=0;do{v=q+l|0;a[v>>0]=((128>>>(l&7)&d[D+(g+(l>>>3))>>0]|0)==0?0:4)|d[v>>0];l=l+1|0}while((l|0)!=(m|0));g=n*3|0;l=0;do{v=q+l|0;a[v>>0]=((128>>>(l&7)&d[D+(g+(l>>>3))>>0]|0)==0?0:8)|d[v>>0];l=l+1|0}while((l|0)!=(m|0))}if(!y){g=0;do{v=g<<1;a[f+g>>0]=d[q+v>>0]<<4|d[q+(v|1)>>0];g=g+1|0}while(g>>>0>>0)}if(j>>>0>>0)do{if((h|0)<2048)h=h+1|0;else ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](A,1,1,e)|0;j=j+1|0}while(j>>>0>>0);k=k+1|0;if(k>>>0>=H>>>0)break;else f=f+p|0}}Bfa(q)}while(0);Bfa(D);Bfa(E);b=G;i=I;return b|0}function VW(a,b){a=a|0;b=b|0;var e=0,f=0;f=i;i=i+16|0;e=f;a=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;c[e>>2]=0;if((ce[a&255](e,1,4,b)|0)!=4){e=0;i=f;return e|0}a=c[e>>2]|0;e=a>>>24&255;if(((a&255)<<24>>24==10?((a&65535)>>>8&255)<6&(a>>>16&255)<2:0)?e<<24>>24==8|e<<24>>24==1:0){e=1;i=f;return e|0}e=0;i=f;return e|0}function WW(){return 316112}function XW(a){a=a|0;return 0}function YW(a){a=a|0;return 0}function ZW(){return 1}function _W(){return 316656}function $W(){return 316632}function aX(){return 316624}function bX(){return 0}function cX(b,e,f,h,j){b=b|0;e=e|0;f=f|0;h=h|0;j=j|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;t=i;i=i+272|0;o=t;m=t+16|0;j=t+9|0;f=t+8|0;s=t+4|0;a[j>>0]=0;a[f>>0]=0;if(!e){b=0;i=t;return b|0}l=h&32768;n=(l|0)==0;l=l>>>15;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](f,1,1,e)|0;if((a[j>>0]|0)!=80){b=kc(4)|0;c[b>>2]=316600;xd(b|0,378680,0)}j=a[f>>0]|0;if(j<<24>>24!=70)if(j<<24>>24==102)h=6;else{b=kc(4)|0;c[b>>2]=316600;xd(b|0,378680,0)}else h=11;q=A1(b,e)|0;r=A1(b,e)|0;g[s>>2]=1.0;Cga(m|0,0,256)|0;f=0;while(1){j=m+f|0;if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){j=11;break}f=f+1|0;if((a[j>>0]|0)==10){j=10;break}if((f|0)>=256){j=11;break}}if((j|0)==10){c[o>>2]=s;if((Yda(m,316408,o)|0)!=1){b=kc(4)|0;c[b>>2]=316416;xd(b|0,378680,0)}p=wI(l,h,q,r,8,0,0,0)|0;if(!p){b=kc(4)|0;c[b>>2]=316496;xd(b|0,378680,0)}if(!n){b=p;i=t;return b|0}if((h|0)==6){n=Afa(q<<2)|0;if(!n){b=kc(4)|0;c[b>>2]=316464;xd(b|0,378680,0)}a:do if(r){h=r+-1|0;l=(q|0)==0;o=0;while(1){m=$J(p,h-o|0)|0;if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](n,4,q,e)|0)!=(q|0))break;if(+g[s>>2]>0.0){if(!l){j=n;f=0;while(1){u=m+(f<<2)|0;a[u>>0]=a[j+3>>0]|0;a[u+1>>0]=a[j+2>>0]|0;a[u+2>>0]=a[j+1>>0]|0;a[u+3>>0]=a[j>>0]|0;f=f+1|0;if((f|0)==(q|0))break;else j=j+4|0}}}else if(!l){j=n;f=0;while(1){g[m+(f<<2)>>2]=+g[j>>2];f=f+1|0;if((f|0)==(q|0))break;else j=j+4|0}}o=o+1|0;if(o>>>0>=r>>>0)break a}u=kc(4)|0;c[u>>2]=316448;xd(u|0,378680,0)}while(0);Bfa(n);u=p;i=t;return u|0}else if((h|0)==11){n=q*3|0;m=Afa(q*12|0)|0;if(!m){u=kc(4)|0;c[u>>2]=316464;xd(u|0,378680,0)}b:do if(r){o=r+-1|0;if(!q){j=0;while(1){$J(p,o-j|0)|0;if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](m,4,n,e)|0)!=(n|0))break;j=j+1|0;if(j>>>0>=r>>>0)break b}u=kc(4)|0;c[u>>2]=316448;xd(u|0,378680,0)}else h=0;while(1){l=$J(p,o-h|0)|0;if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](m,4,n,e)|0)!=(n|0))break;if(+g[s>>2]>0.0){j=m;f=0;while(1){w=j+4|0;v=l+(f*12|0)|0;a[v>>0]=a[j+3>>0]|0;a[v+1>>0]=a[j+2>>0]|0;a[v+2>>0]=a[j+1>>0]|0;a[v+3>>0]=a[j>>0]|0;v=j+8|0;u=l+(f*12|0)+4|0;a[u>>0]=a[w+3>>0]|0;a[u+1>>0]=a[w+2>>0]|0;a[u+2>>0]=a[w+1>>0]|0;a[u+3>>0]=a[w>>0]|0;u=l+(f*12|0)+8|0;a[u>>0]=a[v+3>>0]|0;a[u+1>>0]=a[v+2>>0]|0;a[u+2>>0]=a[v+1>>0]|0;a[u+3>>0]=a[v>>0]|0;f=f+1|0;if((f|0)==(q|0))break;else j=j+12|0}}else{j=m;f=0;while(1){w=l+(f*12|0)|0;g[k>>2]=+g[j>>2];a[w>>0]=a[k>>0];a[w+1>>0]=a[k+1>>0];a[w+2>>0]=a[k+2>>0];a[w+3>>0]=a[k+3>>0];w=l+(f*12|0)+4|0;g[k>>2]=+g[j+4>>2];a[w>>0]=a[k>>0];a[w+1>>0]=a[k+1>>0];a[w+2>>0]=a[k+2>>0];a[w+3>>0]=a[k+3>>0];w=l+(f*12|0)+8|0;g[k>>2]=+g[j+8>>2];a[w>>0]=a[k>>0];a[w+1>>0]=a[k+1>>0];a[w+2>>0]=a[k+2>>0];a[w+3>>0]=a[k+3>>0];f=f+1|0;if((f|0)==(q|0))break;else j=j+12|0}}h=h+1|0;if(h>>>0>=r>>>0)break b}w=kc(4)|0;c[w>>2]=316448;xd(w|0,378680,0)}while(0);Bfa(m);w=p;i=t;return w|0}else{w=p;i=t;return w|0}}else if((j|0)==11){w=kc(4)|0;c[w>>2]=316416;xd(w|0,378680,0)}return 0}function dX(a,b,e,f,g,j){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;var l=0,m=0,n=0,o=0;o=i;i=i+288|0;f=o;l=o+24|0;if(!((b|0)!=0&(e|0)!=0)){e=0;i=o;return e|0}j=EI(b)|0;if(!((j|0)==6|(j|0)==11)){e=0;i=o;return e|0}g=FI(b)|0;m=GI(b)|0;n=PI(b)|0;if((j|0)==6)j=102;else if((j|0)==11)j=70;else{e=0;i=o;return e|0}c[f>>2]=j;c[f+4>>2]=g;c[f+8>>2]=m;g=f+12|0;h[k>>3]=-1.0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];fga(l,316392,f)|0;f=a+4|0;g=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a=Dga(l|0)|0;ce[g&255](l,a,1,e)|0;if(!m){e=1;i=o;return e|0}j=m+-1|0;g=0;do{a=$J(b,j-g|0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](a,1,n,e)|0;g=g+1|0}while((g|0)!=(m|0));j=1;i=o;return j|0}function eX(a,c){a=a|0;c=c|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;h=g+4|0;e=g;f=g+2|0;b[h>>1]=18e3;b[e>>1]=26192;b[f>>1]=0;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,2,c)|0;if(!(pga(h,f,2)|0)){h=1;i=g;return h|0}h=(pga(e,f,2)|0)==0&1;i=g;return h|0}function fX(){return 316360}function gX(a){a=a|0;return 0}function hX(a){a=a|0;return ((a|0)==6|(a|0)==11)&1|0}function iX(){return 1}function jX(){return 321832}function kX(){return 321816}function lX(){return 321800}function mX(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;R=i;i=i+2432|0;P=R+56|0;E=R+2169|0;k=R+2168|0;L=R+104|0;O=R+1144|0;F=R+1139|0;D=R+1138|0;H=R+2176|0;K=R;Q=R+8|0;I=R+60|0;G=R+106|0;B=R+112|0;C=R+1136|0;Cga(H|0,0,256)|0;N=f+8|0;if(Od[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,512,1)|0){g=0;i=R;return g|0}M=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[M&255](P,1,1,g)|0;M=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[M&255](P,1,1,g)|0;M=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[M&255](P,1,1,g)|0;M=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[M&255](P,1,1,g)|0;M=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[M&255](P,1,1,g)|0;M=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[M&255](P,1,1,g)|0;M=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[M&255](P,1,1,g)|0;M=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[M&255](P,1,1,g)|0;M=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[M&255](P,1,1,g)|0;M=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[k>>0]=0;ce[M&255](k,1,1,g)|0;while(1){k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[k&255](P,1,1,g)|0;k=a[P>>0]|0;if(k<<24>>24==17)break;else if(k<<24>>24){l=4;break}}if((l|0)==4){g=kc(4)|0;c[g>>2]=316696;xd(g|0,378680,0)}k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[k&255](P,1,1,g)|0;k=a[P>>0]|0;A=k<<24>>24==2;if(A?(M=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24,a[P>>0]=0,ce[M&255](P,1,1,g)|0,(a[P>>0]|0)!=-1):0){g=kc(4)|0;c[g>>2]=316736;xd(g|0,378680,0)}w=f+12|0;q=k<<24>>24==1;r=I+2|0;s=I+4|0;t=I+6|0;u=I+26|0;x=Q+2|0;y=Q+4|0;z=Q+6|0;v=C+1|0;l=0;j=4718592;J=0;n=0;M=0;k=4718592;a:while(1){if(l){l=62;break}p=Ld[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&511](g)|0;if(!q?((Ld[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&511](g)|0)&1|0)==0:0)l=0;else{l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[P>>0]|0}if(A){l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=a[P>>0]|0;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[o&255](P,1,1,g)|0;l=(d[P>>0]|(l&255)<<8)&65535}h=l&65535;if(l<<16>>16==-1|l<<16>>16==255){l=16;break}b:do if((l&65535)>=162)if(l<<16>>16==-32256){o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[o&255](P,1,1,g)|0;o=d[P>>0]|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[P>>0]|0;n=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[n&255](P,1,1,g)|0;n=a[P>>0]|0;m=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[m&255](P,1,1,g)|0;n=l<<16|o<<24|(n&255)<<8|d[P>>0];o=0;l=0;c:while(1){m=o^1;while(1){h=(l|0)<(n|0)&m;do if(!h)break c;while((ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](C,2,1,g)|0)==0);Od[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,-2,1)|0;if((a[C>>0]|0)==-1&(a[v>>0]|0)==-40){o=1;continue c}h=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[h&255](P,1,1,g)|0;l=l+1|0}}if(o){l=1;h=J;n=2;m=M;break}else{l=50;break a}}else if(l<<16>>16==3072){l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[P>>0]|0;h=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[h&255](P,1,1,g)|0;h=d[P>>0]|0;j=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[j&255](P,1,1,g)|0;j=a[P>>0]|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[k&255](P,1,1,g)|0;j=h<<16|l<<24|(j&255)<<8|d[P>>0];l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[P>>0]|0;h=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[h&255](P,1,1,g)|0;h=d[P>>0]|0;k=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[k&255](P,1,1,g)|0;k=a[P>>0]|0;m=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[m&255](P,1,1,g)|0;k=h<<16|l<<24|(k&255)<<8|d[P>>0];l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[F>>0]=0;ce[l&255](F,1,1,g)|0;l=0;h=J;m=M;break}else{if((l&65535)<176){l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=a[P>>0]|0;h=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[h&255](P,1,1,g)|0;Od[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,d[P>>0]|(l&255)<<8,1)|0;l=0;h=J;m=M;break}if((l+-176<<16>>16&65535)<32){l=0;h=J;m=M;break}if(l<<16>>16<0&(l&65535)<33024){l=0;h=J;m=M;break}if((l+-208<<16>>16&65535)<47|(l&65535)>8099){h=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[h&255](P,1,1,g)|0;h=d[P>>0]|0;m=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[m&255](P,1,1,g)|0;m=d[P>>0]|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=a[P>>0]|0;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[o&255](P,1,1,g)|0;Od[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,m<<16|h<<24|(l&255)<<8|d[P>>0],1)|0;l=0;h=J;m=M;break}if(!((l&65535)>255&l<<16>>16>-1)){l=59;break a}Od[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,h>>>7&255,1)|0;l=0;h=J;m=M;break}else switch(h|0){case 119:case 118:case 117:case 116:case 115:case 114:case 113:case 112:{l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=a[P>>0]|0;h=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[h&255](P,1,1,g)|0;Od[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,(d[P>>0]|(l&255)<<8)+65534&65535,1)|0;l=0;h=J;m=M;break b}case 152:case 144:{m=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[m&255](P,1,1,g)|0;m=a[P>>0]|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;m=(d[P>>0]|(m&255)<<8)&65535;l=1;h=0;n=m<<16>>16<0?3:4;break b}case 161:{l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=a[P>>0]|0;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[o&255](P,1,1,g)|0;l=d[P>>0]|(l&255)<<8;if(!l){l=0;h=J;m=M;break b}Od[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,l,1)|0;l=0;h=J;m=M;break b}case 154:{l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=a[P>>0]|0;h=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[h&255](P,1,1,g)|0;b[Q>>1]=d[P>>0]|(l&255)<<8;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=a[P>>0]|0;h=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[h&255](P,1,1,g)|0;b[x>>1]=d[P>>0]|(l&255)<<8;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=a[P>>0]|0;h=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[h&255](P,1,1,g)|0;b[y>>1]=d[P>>0]|(l&255)<<8;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=a[P>>0]|0;h=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[h&255](P,1,1,g)|0;b[z>>1]=d[P>>0]|(l&255)<<8;B1(f,g,Q);l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[D>>0]=0;ce[l&255](D,1,1,g)|0;l=1;h=J;n=1;m=M;break b}case 1:{l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=a[P>>0]|0;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[o&255](P,1,1,g)|0;l=d[P>>0]|(l&255)<<8;if((l|0)==10){l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[E>>0]=0;ce[l&255](E,1,1,g)|0;l=0;h=J;m=M;break b}else{Od[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,l+-2|0,1)|0;l=0;h=J;m=M;break b}}case 20:case 19:case 18:{l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=a[P>>0]|0;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[o&255](P,1,1,g)|0;l=d[P>>0]|(l&255)<<8;if((l|0)==2){Od[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,8,1)|0;Od[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,5,1)|0;l=0;h=J;m=M;break b}else if((l|0)!=1){l=30;break a}Od[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,8,1)|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=a[P>>0]|0;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[o&255](P,1,1,g)|0;l=d[P>>0]|(l&255)<<8;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[o&255](P,1,1,g)|0;o=a[P>>0]|0;S=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[S&255](P,1,1,g)|0;b[I>>1]=d[P>>0]|(o&255)<<8;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[o&255](P,1,1,g)|0;o=a[P>>0]|0;S=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[S&255](P,1,1,g)|0;b[r>>1]=d[P>>0]|(o&255)<<8;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[o&255](P,1,1,g)|0;o=a[P>>0]|0;S=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[S&255](P,1,1,g)|0;b[s>>1]=d[P>>0]|(o&255)<<8;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[o&255](P,1,1,g)|0;o=a[P>>0]|0;S=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[S&255](P,1,1,g)|0;b[t>>1]=d[P>>0]|(o&255)<<8;B1(f,g,I);C1(f,g,G,B);o=b[u>>1]|0;S=c[s>>2]|0;m=c[I>>2]|0;h=(S&65535)-(m&65535)|0;l=((o&65535)<9?l&32767:l)&65535;l=l<<16>>16==0?(S>>>16)-(m>>>16)<<(o<<16>>16==16&1)&65535:l;if((l&65535)<8){l=ea(l&65535,h)|0;Od[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,l,1)|0;l=0;h=J;m=M;break b}if((h|0)<=0){l=0;h=J;m=M;break b}if((l&65535)>250){l=0;do{S=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[S&255](P,1,1,g)|0;S=a[P>>0]|0;o=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[o&255](P,1,1,g)|0;Od[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,d[P>>0]|(S&255)<<8,1)|0;l=l+1|0}while((l|0)!=(h|0));l=0;h=J;m=M}else{l=0;do{S=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[S&255](P,1,1,g)|0;Od[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,d[P>>0]|0,1)|0;l=l+1|0}while((l|0)!=(h|0));l=0;h=J;m=M}break}case 153:case 145:{m=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[m&255](P,1,1,g)|0;m=a[P>>0]|0;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;m=(d[P>>0]|(m&255)<<8)&65535;l=1;h=1;n=m<<16>>16<0?3:4;break b}default:{l=c[316844+(h*12|0)>>2]|0;if((l|0)==-1){l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=a[P>>0]|0;h=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[h&255](P,1,1,g)|0;Od[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,d[P>>0]|(l&255)<<8,1)|0;l=0;h=J;m=M;break b}else{Od[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,l,1)|0;l=0;h=J;m=M;break b}}}while(0);if((p|0)==(Ld[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&511](g)|0)){l=61;break}else{J=h;M=m}}if((l|0)==16){g=kc(4)|0;c[g>>2]=316776;xd(g|0,378680,0)}else if((l|0)==30){g=kc(4)|0;c[g>>2]=316816;xd(g|0,378680,0)}else if((l|0)==50){g=kc(4)|0;c[g>>2]=318784;xd(g|0,378680,0)}else if((l|0)==59){c[P>>2]=h;fga(H,318832,P)|0;g=kc(4)|0;c[g>>2]=H;xd(g|0,378656,0)}else if((l|0)==61){g=kc(4)|0;c[g>>2]=318864;xd(g|0,378680,0)}else if((l|0)==62){if((n|0)==2)l=cK(2,f,g,0)|0;else if((n|0)==1){I=Q;j=c[I>>2]|0;I=c[I+4>>2]|0;H=K;c[H>>2]=j;c[H+4>>2]=I;H=Lga(j|0,I|0,48)|0;k=Lga(j|0,I|0,16)|0;k=H-(k&65535)|0;j=(I&65535)-(j&65535)|0;if((e[Q+26>>1]|0)>8)k=yI(k,j,32,16711680,65280,255)|0;else k=yI(k,j,8,0,0,0)|0;l=k;j=c[Q+16>>2]<<16;k=c[Q+20>>2]<<16}else if((n|0)==3){I=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[I&255](P,1,1,g)|0;I=a[P>>0]|0;j=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[j&255](P,1,1,g)|0;b[Q>>1]=d[P>>0]|(I&255)<<8;I=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[I&255](P,1,1,g)|0;I=a[P>>0]|0;j=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[j&255](P,1,1,g)|0;b[x>>1]=d[P>>0]|(I&255)<<8;I=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[I&255](P,1,1,g)|0;I=a[P>>0]|0;j=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[j&255](P,1,1,g)|0;b[y>>1]=d[P>>0]|(I&255)<<8;I=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[I&255](P,1,1,g)|0;I=a[P>>0]|0;j=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[j&255](P,1,1,g)|0;b[z>>1]=d[P>>0]|(I&255)<<8;B1(f,g,Q);I=Q;j=c[I>>2]|0;I=c[I+4>>2]|0;H=K;c[H>>2]=j;c[H+4>>2]=I;H=Lga(j|0,I|0,48)|0;k=Lga(j|0,I|0,16)|0;k=H-(k&65535)|0;j=(I&65535)-(j&65535)|0;if((e[Q+26>>1]|0)>8)k=yI(k,j,32,16711680,65280,255)|0;else k=yI(k,j,8,0,0,0)|0;l=k;j=c[Q+16>>2]<<16;k=c[Q+20>>2]<<16}else if((n|0)==4){l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[l&255](P,1,1,g)|0;l=a[P>>0]|0;H=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[H&255](P,1,1,g)|0;l=d[P>>0]|(l&255)<<8;b[K>>1]=l;H=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[H&255](P,1,1,g)|0;H=a[P>>0]|0;I=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[I&255](P,1,1,g)|0;H=d[P>>0]|(H&255)<<8;b[K+2>>1]=H;I=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[I&255](P,1,1,g)|0;I=a[P>>0]|0;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[G&255](P,1,1,g)|0;I=d[P>>0]|(I&255)<<8;b[K+4>>1]=I;G=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[G&255](P,1,1,g)|0;G=a[P>>0]|0;F=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[F&255](P,1,1,g)|0;G=d[P>>0]|(G&255)<<8;b[K+6>>1]=G;F=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[F&255](P,1,1,g)|0;F=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[F&255](P,1,1,g)|0;F=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[F&255](P,1,1,g)|0;F=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[F&255](P,1,1,g)|0;F=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[F&255](P,1,1,g)|0;F=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[F&255](P,1,1,g)|0;F=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[F&255](P,1,1,g)|0;F=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[F&255](P,1,1,g)|0;F=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[F&255](P,1,1,g)|0;F=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[F&255](P,1,1,g)|0;F=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[F&255](P,1,1,g)|0;F=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[F&255](P,1,1,g)|0;F=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[F&255](P,1,1,g)|0;F=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[F&255](P,1,1,g)|0;F=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[F&255](P,1,1,g)|0;F=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[F&255](P,1,1,g)|0;l=yI(G-H&65535,I-l&65535,8,0,0,0)|0}else{g=0;i=R;return g|0}if(!l){g=0;i=R;return g|0}eJ(l,~~(+(j|0)*6.011963123455644e-004));fJ(l,~~(+(k|0)*6.011963123455644e-004));if((n|0)==4){O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;if(J){O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=a[P>>0]|0;L=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[L&255](P,1,1,g)|0;Od[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,(d[P>>0]|(O&255)<<8)+65534&65535,1)|0}k=VI(l)|0;if(!k){g=kc(4)|0;c[g>>2]=318912;xd(g|0,378680,0)}a[k+2>>0]=0;a[k+1>>0]=0;a[k>>0]=0;a[k+6>>0]=-1;a[k+5>>0]=-1;a[k+4>>0]=-1;F1(f,g,l,K,M,1);g=l;i=R;return g|0}else if((n|0)==1){k=e[Q+26>>1]|0;if((k|0)==32){D1(f,g,l,Q,0,e[Q+28>>1]|0);g=l;i=R;return g|0}else if((k|0)==8){E1(f,g,l,Q,0);g=l;i=R;return g|0}else{F1(f,g,l,Q,0,k);g=l;i=R;return g|0}}else if((n|0)==3){C1(f,g,L,O);if((HI(l)|0)==8){h=VI(l)|0;if(!h){g=kc(4)|0;c[g>>2]=318912;xd(g|0,378680,0)}k=b[L>>1]|0;if(k<<16>>16){k=k&65535;j=0;do{a[h+(j<<2)+2>>0]=a[O+(j<<2)+2>>0]|0;a[h+(j<<2)+1>>0]=a[O+(j<<2)+1>>0]|0;a[h+(j<<2)>>0]=a[O+(j<<2)>>0]|0;j=j+1|0}while((j|0)<(k|0))}}O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;if(J){O=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[O&255](P,1,1,g)|0;O=a[P>>0]|0;L=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a[P>>0]=0;ce[L&255](P,1,1,g)|0;Od[(d[N>>0]|d[N+1>>0]<<8|d[N+2>>0]<<16|d[N+3>>0]<<24)&255](g,(d[P>>0]|(O&255)<<8)+65534&65535,1)|0}k=e[Q+26>>1]|0;if((k|0)==32){D1(f,g,l,Q,M,e[Q+28>>1]|0);g=l;i=R;return g|0}else if((k|0)==8){E1(f,g,l,Q,M);g=l;i=R;return g|0}else{F1(f,g,l,Q,M,k);g=l;i=R;return g|0}}else if((n|0)==2){g=l;i=R;return g|0}else{g=kc(4)|0;c[g>>2]=318888;xd(g|0,378680,0)}}return 0}function nX(a,b){a=a|0;b=b|0;var c=0,e=0,f=0;e=i;i=i+16|0;c=e;f=a+8|0;if(Od[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](b,522,0)|0){f=0;i=e;return f|0}if(!(ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](c,1,6,b)|0)){f=0;i=e;return f|0}f=(pga(316688,c,6)|0)==0&1;i=e;return f|0}function oX(){return 316672}function pX(a){a=a|0;return 0}function qX(a){a=a|0;return 0}function rX(){return 0}function sX(){return 322192}function tX(){return 322160}function uX(){return 322152}function vX(){return 322144}function wX(f,g,j,k,l){f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;V=i;i=i+368|0;U=i;i=i+168|0;c[U>>2]=0;A=V;H=V+56|0;D=V+60|0;T=V+64|0;B=V+68|0;y=V+76|0;x=V+80|0;n=V+88|0;j=V+352|0;G=V+52|0;F=V+20|0;R=V+24|0;E=V+72|0;S=V+12|0;Q=V+96|0;C=V+16|0;P=V+360|0;N=V+48|0;O=V+28|0;M=V+32|0;L=V+36|0;J=V+40|0;K=V+44|0;z=V+8|0;c[H>>2]=0;c[D>>2]=0;c[n+4>>2]=g;c[n>>2]=f;if(!g){U=0;i=V;return U|0}v=k&32768;w=(v|0)==0;v=v>>>15;t=0;Ga(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24|0,j|0,8,1,g|0)|0;g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;do if((l|0)!=1){t=0;l=qa(191,j|0,0,8)|0;j=t;t=0;if((j|0)!=0&(u|0)!=0){g=Mga(c[j>>2]|0,U)|0;if(!g)Va(j|0,u|0);I=u}else g=-1;if((g|0)!=1){if(l){U=0;i=V;return U|0}t=0;g=Ga(144,321864,0,131,132)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)!=1){c[H>>2]=g;if(!g){U=0;i=V;return U|0}t=0;g=na(249,g|0)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)!=1){c[D>>2]=g;if(!g){t=0;Da(131,H|0,0,0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;break}U=0;i=V;return U|0}t=0;Da(132,c[H>>2]|0,n|0,133);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)!=1){t=0;g=qa(192,c[H>>2]|0,74,156)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)!=1){Kga(g,1,U|0)|0;t=0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)!=1)l=0;else l=I}else l=I}else l=I}else l=I}else l=I}else l=I}else l=I;while(0);a:while(1){if(l){t=0;Da(131,H|0,D|0,0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}else{o=17;break}}t=0;la(133,c[H>>2]|0,8);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}t=0;la(134,c[H>>2]|0,c[D>>2]|0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}t=0;Ca(2,c[H>>2]|0,c[D>>2]|0,T|0,B|0,x|0,y|0,0,0,0)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}q=c[H>>2]|0;r=c[D>>2]|0;t=0;p=ya(295,q|0,r|0)|0;g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue}o=p&255;t=0;g=ya(296,q|0,r|0)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}f=g&255;t=0;g=ya(297,q|0,r|0)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}n=ea(g&255,f)|0;t=0;g=qa(193,q|0,r|0,16)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}j=(g|0)==16;b:do switch(o|0){case 3:{if((f|0)==8|(f|0)==4|(f|0)==2|(f|0)==1){if((n|0)==2){t=0;ka(322,q|0);g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue a}}if(j&n>>>0<8){t=0;ka(322,q|0);g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue a}o=62}else o=62}else o=76;break}case 6:{if((f|0)==8){o=62;break b}else if((f|0)!=16){o=76;break b}g=(n|0)==64?10:0;o=59;break}case 4:{if((f|0)==8)g=(n|0)==16&1;else if((f|0)==16)g=(n|0)==32?10:0;else g=0;t=0;ka(321,q|0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue a}o=59;break}case 0:{switch(f|0){case 8:case 4:case 2:case 1:break;case 16:{g=(n|0)==16;if(!(j&g)){g=g?2:0;o=59;break b}t=0;ka(320,q|0);g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue a}t=0;ka(321,q|0);g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue a}g=10;o=60;break b}default:{o=76;break b}}if((n|0)==2){t=0;ka(319,q|0);g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue a}}if(j&n>>>0<8){t=0;ka(319,q|0);g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue a}o=62}else o=62;break}case 2:{if((f|0)==16)g=(n|0)==48?9:0;else if((f|0)==8)g=(n|0)==24&1;else{o=76;break b}if(j&(g|0)!=0){if((n|0)==24)g=1;else g=(n|0)==48?10:0;t=0;ka(320,q|0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue a}o=59}else o=59;break}default:o=62}while(0);if((o|0)==59){o=0;switch(g|0){case 2:case 9:case 10:{o=60;break}case 1:{o=62;break}case 0:{o=76;break}default:s=g}}if((o|0)==60){o=0;t=0;ka(323,q|0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}if((g|0)==1&(p&-5)<<24>>24==2)o=63;else s=g}else if((o|0)==62){o=0;if((p&-5)<<24>>24==2)o=63;else s=1}else if((o|0)==76){t=0;l=na(226,4)|0;j=t;t=0;if((j|0)!=0&(u|0)!=0){g=Mga(c[j>>2]|0,U)|0;if(!g)Va(j|0,u|0);I=u}else g=-1;if((g|0)==1){l=I;continue}c[l>>2]=322072;t=0;Da(124,l|0,378680,0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}else{o=78;break}}if((o|0)==63){o=0;t=0;ka(324,q|0);g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue}s=1}t=0;g=qa(193,q|0,r|0,1)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}if(g){h[A>>3]=0.0;t=0;g=qa(194,q|0,r|0,A|0)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}if((g|0)!=0&(k&1|0)==0){t=0;pa(2,q|0,2.2,+(+h[A>>3]));g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue}}}t=0;la(135,q|0,r|0);g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue}t=0;g=ya(295,c[H>>2]|0,c[D>>2]|0)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}c[y>>2]=g&255;t=0;g=ya(296,c[H>>2]|0,c[D>>2]|0)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}g=g&255;c[x>>2]=g;t=0;l=ya(297,c[H>>2]|0,c[D>>2]|0)|0;j=t;t=0;if((j|0)!=0&(u|0)!=0){f=Mga(c[j>>2]|0,U)|0;if(!f)Va(j|0,u|0);I=u}else f=-1;if((f|0)==1){l=I;continue}p=ea(l&255,g)|0;g=c[y>>2]|0;do if((g|0)==3){t=0;n=Fa(9,v|0,s|0,c[T>>2]|0,c[B>>2]|0,p|0,16711680,65280,255)|0;g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue a}if(n){c[G>>2]=0;c[F>>2]=0;t=0;Ga(145,c[H>>2]|0,c[D>>2]|0,G|0,F|0)|0;g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue a}g=c[F>>2]|0;t=0;l=na(250,n|0)|0;j=t;t=0;if((j|0)!=0&(u|0)!=0){f=Mga(c[j>>2]|0,U)|0;if(!f)Va(j|0,u|0);I=u}else f=-1;if((f|0)==1){l=I;continue a}c[F>>2]=g>>>0>>0?g:l;t=0;j=na(230,n|0)|0;g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue a}m=c[F>>2]|0;if((m|0)<=0){m=n;o=98;break}g=c[G>>2]|0;l=0;do{a[j+(l<<2)+2>>0]=a[g+(l*3|0)>>0]|0;a[j+(l<<2)+1>>0]=a[g+(l*3|0)+1>>0]|0;a[j+(l<<2)>>0]=a[g+(l*3|0)+2>>0]|0;l=l+1|0}while((l|0)<(m|0));m=n;o=98}}else if(!g){t=0;f=Fa(9,v|0,s|0,c[T>>2]|0,c[B>>2]|0,p|0,16711680,65280,255)|0;g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue a}if((f|0)!=0&p>>>0<9){t=0;j=na(230,f|0)|0;g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue a}m=1<>0]=r;a[j+(l<<2)+1>>0]=r;a[j+(l<<2)+2>>0]=r;l=l+1|0}while((l|0)<(m|0));m=f;o=98}else{m=f;o=98}}else if(!((g|0)==6|(g|0)==2)){t=0;g=na(226,4)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue a}c[g>>2]=322072;t=0;Da(124,g|0,378680,0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue a}else{o=97;break a}}else{t=0;g=Fa(9,v|0,s|0,c[T>>2]|0,c[B>>2]|0,p|0,16711680,65280,255)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue a}m=g;o=98}while(0);if((o|0)==98?(0,(m|0)!=0):0){t=0;g=qa(193,c[H>>2]|0,c[D>>2]|0,16)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}do if(g){c[R>>2]=0;c[E>>2]=0;c[S>>2]=0;t=0;za(83,c[H>>2]|0,c[D>>2]|0,R|0,E|0,S|0)|0;g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue a}l=c[y>>2]|0;g=c[S>>2]|0;if(!((l|0)==0&(g|0)!=0)){g=c[R>>2]|0;if(!((l|0)==3&(g|0)!=0))break;t=0;Da(134,m|0,g|0,c[E>>2]|0);g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue a}break}g=g+8|0;if((e[g>>1]|0)<256){Cga(Q|0,-1,256)|0;a[Q+(e[g>>1]|0)>>0]=0;t=0;Da(134,m|0,Q|0,256);g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue a}break}g=c[R>>2]|0;if(!((g|0)!=0&p>>>0<9))break;t=0;Da(134,m|0,g|0,c[E>>2]|0);g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue a}}while(0);do if((s|0)==1){t=0;g=qa(193,c[H>>2]|0,c[D>>2]|0,32)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue a}if(!g)break;c[C>>2]=0;t=0;g=qa(195,c[H>>2]|0,c[D>>2]|0,C|0)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue a}if(!g)break;l=c[C>>2]|0;a[P+2>>0]=b[l+2>>1];a[P+1>>0]=b[l+4>>1];a[P>>0]=b[l+6>>1];a[P+3>>0]=0;t=0;ya(298,m|0,P|0)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue a}}while(0);t=0;g=qa(193,c[H>>2]|0,c[D>>2]|0,128)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}do if(g){c[M>>2]=0;t=0;za(84,c[H>>2]|0,c[D>>2]|0,N|0,O|0,M|0)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue a}if((c[M>>2]|0)!=1)break;t=0;la(127,m|0,c[N>>2]|0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue a}t=0;la(128,m|0,c[O>>2]|0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue a}}while(0);t=0;g=qa(193,c[H>>2]|0,c[D>>2]|0,4096)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}if(g){c[L>>2]=0;c[J>>2]=0;c[K>>2]=0;t=0;ma(23,c[H>>2]|0,c[D>>2]|0,L|0,z|0,J|0,K|0)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}t=0;qa(185,m|0,c[J>>2]|0,c[K>>2]|0)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}}if(!w){t=0;Da(135,c[H>>2]|0,c[D>>2]|0,m|0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}if(!(c[H>>2]|0)){o=163;break}t=0;Da(131,H|0,D|0,0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}else{o=138;break}}g=c[B>>2]|0;t=0;n=na(233,g<<2|0)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}if(!n){t=0;Da(131,H|0,D|0,0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}t=0;ka(310,m|0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}else{o=144;break}}if(g){f=0;while(1){t=0;g=ya(293,m|0,f|0)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue a}s=c[B>>2]|0;c[n+(s+~f<<2)>>2]=g;f=f+1|0;if(f>>>0>=s>>>0)break}}t=0;la(136,c[H>>2]|0,1);g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue}t=0;la(137,c[H>>2]|0,n|0);g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue}t=0;g=na(237,m|0)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}do if((g|0)==32){t=0;g=na(236,m|0)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue a}if((g|0)==4){t=0;la(138,m|0,1);g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue a}break}else{t=0;la(138,m|0,0);g=t;t=0;if((g|0)!=0&(u|0)!=0){l=Mga(c[g>>2]|0,U)|0;if(!l)Va(g|0,u|0);I=u}else l=-1;if((l|0)==1){l=I;continue a}break}}while(0);t=0;ka(311,n|0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}t=0;la(139,c[H>>2]|0,c[D>>2]|0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}t=0;Da(135,c[H>>2]|0,c[D>>2]|0,m|0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}if(!(c[H>>2]|0)){o=163;break}t=0;Da(131,H|0,D|0,0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}else{o=162;break}}t=0;g=na(226,4)|0;l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1){l=I;continue}c[g>>2]=321984;t=0;Da(124,g|0,378680,0);l=t;t=0;if((l|0)!=0&(u|0)!=0){j=Mga(c[l>>2]|0,U)|0;if(!j)Va(l|0,u|0);I=u}else j=-1;if((j|0)==1)l=I;else{o=101;break}}if((o|0)==17){U=0;i=V;return U|0}else if((o|0)!=78)if((o|0)!=97)if((o|0)!=101)if((o|0)==138){U=m;i=V;return U|0}else if((o|0)==144){U=0;i=V;return U|0}else if((o|0)==162){U=m;i=V;return U|0}else if((o|0)==163){i=V;return m|0}return 0}function xX(e,f,g,h,j,k){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;U=i;i=i+128|0;R=U;T=i;i=i+168|0;c[T>>2]=0;P=U+92|0;Q=U+64|0;K=U+112|0;S=U+60|0;L=U+56|0;D=U+52|0;F=U+48|0;J=U+36|0;O=U+32|0;M=U+28|0;H=U+24|0;E=U+40|0;G=U+96|0;N=U+120|0;c[E+4>>2]=g;c[E>>2]=e;if(!((f|0)!=0&(g|0)!=0)){T=0;i=U;return T|0}t=0;k=Ga(146,321864,0,131,132)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){g=Mga(c[h>>2]|0,T)|0;if(!g)Va(h|0,u|0);I=u}else g=-1;do if((g|0)!=1){c[M>>2]=k;if(!k){T=0;i=U;return T|0}t=0;h=na(249,k|0)|0;g=t;t=0;if((g|0)!=0&(u|0)!=0){k=Mga(c[g>>2]|0,T)|0;if(!k)Va(g|0,u|0);I=u}else k=-1;if((k|0)!=1){c[H>>2]=h;if(!h){t=0;la(140,M|0,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,T)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;break}T=0;i=U;return T|0}else{t=0;k=qa(192,c[M>>2]|0,74,156)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){g=Mga(c[h>>2]|0,T)|0;if(!g)Va(h|0,u|0);I=u}else g=-1;if((g|0)==1){k=I;break}Kga(k,1,T|0)|0;t=0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,T)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;break}k=0;break}}else k=I}else k=I;while(0);a:while(1){if(k){t=0;la(140,M|0,H|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,T)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}else{W=13;break}}t=0;Ha(59,c[M>>2]|0,E|0,136,325);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,T)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}t=0;e=na(241,f|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,T)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}t=0;k=na(242,f|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){g=Mga(c[h>>2]|0,T)|0;if(!g)Va(h|0,u|0);I=u}else g=-1;if((g|0)==1){k=I;continue}if((e|0)!=0&(k|0)!=0){t=0;ja(59,c[M>>2]|0,c[H>>2]|0,e|0,k|0,1);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,T)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}}t=0;B=na(239,f|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,T)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}t=0;C=na(240,f|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,T)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}t=0;A=na(237,f|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}o=j&512;z=(o|0)==0;o=o>>>9;k=j&15;if((k|0)!=0&k>>>0<10){t=0;la(141,c[M>>2]|0,k|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}}else if(j&256){t=0;la(141,c[M>>2]|0,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}}k=c[M>>2]|0;if((A|0)>15){t=0;la(142,k|0,1);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}t=0;Da(137,c[M>>2]|0,0,152);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}}else{t=0;la(142,k|0,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}}t=0;k=na(244,f|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}m=(k|0)==1;if(m){g=(A|0)>8?8:A;t=0;k=na(251,f|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}if(!k){w=0;x=g}else{t=0;e=na(252,f|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){k=Mga(c[h>>2]|0,T)|0;if(!k)Va(h|0,u|0);I=u}else k=-1;if((k|0)==1){k=I;continue}w=(e|0)!=0;x=g}}else{w=0;x=16}t=0;k=na(236,f|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}switch(k|0){case 2:{t=0;xa(29,c[M>>2]|0,c[H>>2]|0,B|0,C|0,x|0,2,o|0,0,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue a}if(m){t=0;ka(324,c[M>>2]|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue a}v=0;y=0}else{v=0;y=0}break}case 1:{if(w)W=49;else W=47;break}case 3:{W=49;break}case 0:{if(w)W=49;else{t=0;ka(326,c[M>>2]|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue a}W=47}break}case 4:{t=0;xa(29,c[M>>2]|0,c[H>>2]|0,B|0,C|0,x|0,6,o|0,0,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue a}if(m){t=0;ka(324,c[M>>2]|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue a}v=1;y=0}else{v=1;y=0}break}default:{v=0;y=0}}if((W|0)==47){W=0;t=0;xa(29,c[M>>2]|0,c[H>>2]|0,B|0,C|0,x|0,0,o|0,0,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}v=0;y=0}else if((W|0)==49){W=0;t=0;xa(29,c[M>>2]|0,c[H>>2]|0,B|0,C|0,x|0,3,o|0,0,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}g=1<>2]|0,3<>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}t=0;h=na(230,f|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}if((x|0)!=31){k=0;do{a[m+(k*3|0)>>0]=a[h+(k<<2)+2>>0]|0;a[m+(k*3|0)+1>>0]=a[h+(k<<2)+1>>0]|0;a[m+(k*3|0)+2>>0]=a[h+(k<<2)>>0]|0;k=k+1|0}while((k|0)<(g|0))}t=0;Ha(60,c[M>>2]|0,c[H>>2]|0,m|0,g|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}v=0;y=m}t=0;h=na(229,f|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}k=c[h+4>>2]|0;if((k|0)!=0?(V=c[h+8>>2]|0,(V|0)!=0):0){t=0;ta(21,c[M>>2]|0,c[H>>2]|0,321872,0,V|0,k|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}}r=c[M>>2]|0;s=c[H>>2]|0;c[P>>2]=0;t=0;q=qa(196,0,f|0,P|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}if(q){o=Q+4|0;g=Q+8|0;m=Q+12|0;l=Q+16|0;n=Q+20|0;p=Q+24|0;while(1){c[Q+0>>2]=0;c[Q+4>>2]=0;c[Q+8>>2]=0;c[Q+12>>2]=0;c[Q+16>>2]=0;c[Q+20>>2]=0;c[Q+24>>2]=0;c[Q>>2]=1;t=0;k=na(232,c[P>>2]|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}c[o>>2]=k;t=0;k=na(246,c[P>>2]|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}c[g>>2]=k;t=0;k=na(247,c[P>>2]|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}c[m>>2]=k;t=0;k=na(247,c[P>>2]|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}c[l>>2]=k;c[n>>2]=0;c[p>>2]=0;t=0;Ha(61,r|0,s|0,Q|0,1);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue a}t=0;k=ya(300,q|0,P|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}if(!k)break}t=0;ka(327,q|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}}c[P>>2]=0;t=0;Ga(143,7,f|0,321968,P|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}k=c[P>>2]|0;do if(k){t=0;k=na(247,k|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}if(!k)break;c[Q+0>>2]=0;c[Q+4>>2]=0;c[Q+8>>2]=0;c[Q+12>>2]=0;c[Q+16>>2]=0;c[Q+20>>2]=0;c[Q+24>>2]=0;c[Q>>2]=1;c[Q+4>>2]=321896;t=0;k=na(246,c[P>>2]|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}c[Q+8>>2]=k;t=0;k=na(247,c[P>>2]|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}c[Q+12>>2]=k;t=0;k=na(247,c[P>>2]|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}c[Q+16>>2]=k;c[Q+20>>2]=0;c[Q+24>>2]=0;t=0;Ha(61,r|0,s|0,Q|0,1);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue a}}while(0);c[P>>2]=0;t=0;Ga(143,1,f|0,321920,P|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}k=c[P>>2]|0;do if(k){t=0;k=na(247,k|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}if(!k)break;t=0;k=na(246,c[P>>2]|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;c[R>>2]=S;c[R+4>>2]=L;c[R+8>>2]=D;c[R+12>>2]=F;c[R+16>>2]=J;c[R+20>>2]=O;k=qa(197,k|0,321936,R|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}if((k|0)!=6)break;b[K>>1]=c[S>>2];a[K+2>>0]=c[L>>2];a[K+3>>0]=c[D>>2];a[K+4>>0]=c[F>>2];a[K+5>>0]=c[J>>2];a[K+6>>0]=c[O>>2];t=0;Da(138,r|0,s|0,K|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue a}}while(0);if(w){g=c[M>>2]|0;m=c[H>>2]|0;t=0;l=na(253,f|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}t=0;k=na(252,f|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}t=0;ja(60,g|0,m|0,l|0,k|0,0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}}t=0;k=na(254,f|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}if(k){t=0;ya(301,f|0,N|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue};b[G+0>>1]=0;b[G+2>>1]=0;b[G+4>>1]=0;b[G+6>>1]=0;b[G+8>>1]=0;b[G+6>>1]=d[N>>0]|0;b[G+4>>1]=d[N+1>>0]|0;b[G+2>>1]=d[N+2>>0]|0;a[G>>0]=a[N+3>>0]|0;t=0;Da(139,c[M>>2]|0,c[H>>2]|0,G|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}}t=0;la(143,c[M>>2]|0,c[H>>2]|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}if((x|0)==16){t=0;ka(323,c[M>>2]|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue}}if(z)o=1;else{t=0;k=na(255,c[M>>2]|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}o=k}b:do if(!((A|0)!=32|(v|0)!=0)){t=0;n=na(233,B*3|0)|0;k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue a}c:do if((o|0)>0){g=C+-1|0;if(!C){k=0;while(1){k=k+1|0;if((k|0)>=(o|0))break c}}else l=0;while(1){m=0;while(1){t=0;k=ya(293,f|0,g-m|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){h=Mga(c[e>>2]|0,T)|0;if(!h)Va(e|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}t=0;Da(140,n|0,k|0,B|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue a}t=0;la(144,c[M>>2]|0,n|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue a}m=m+1|0;if(C>>>0<=m>>>0)break}l=l+1|0;if((l|0)>=(o|0))break}}while(0);t=0;ka(311,n|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,T)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue a}}else{if((o|0)<=0)break;l=C+-1|0;if(!C){k=0;while(1){k=k+1|0;if((k|0)>=(o|0))break b}}else n=0;while(1){m=0;while(1){k=c[M>>2]|0;t=0;e=ya(293,f|0,l-m|0)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){g=Mga(c[h>>2]|0,T)|0;if(!g)Va(h|0,u|0);I=u}else g=-1;if((g|0)==1){k=I;continue a}t=0;la(144,k|0,e|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){e=Mga(c[k>>2]|0,T)|0;if(!e)Va(k|0,u|0);I=u}else e=-1;if((e|0)==1){k=I;continue a}m=m+1|0;if(C>>>0<=m>>>0)break}n=n+1|0;if((n|0)>=(o|0))break}}while(0);t=0;la(145,c[M>>2]|0,c[H>>2]|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,T)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}if(y){t=0;la(79,c[M>>2]|0,y|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,T)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1){k=I;continue}}t=0;la(140,M|0,H|0);k=t;t=0;if((k|0)!=0&(u|0)!=0){h=Mga(c[k>>2]|0,T)|0;if(!h)Va(k|0,u|0);I=u}else h=-1;if((h|0)==1)k=I;else{W=142;break}}if((W|0)==13){T=0;i=U;return T|0}else if((W|0)==142){T=1;i=U;return T|0}return 0}function yX(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;f=e;h=g;c[h>>2]=1196314761;c[h+4>>2]=169478669;h=f;c[h>>2]=0;c[h+4>>2]=0;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,8,b)|0;a=(pga(g,f,8)|0)==0&1;i=e;return a|0}function zX(){return 321848}function AX(a){a=a|0;var b=0;b=i;a=a+-1|0;if(a>>>0>=32){a=0;i=b;return a|0}a=-2139094903>>>a&1;i=b;return a|0}function BX(a){a=a|0;var b=0;b=i;a=a+-1|0;if(a>>>0>=10){a=0;i=b;return a|0}a=771>>>(a&1023)&1;i=b;return a|0}function CX(){return 1}function DX(){return 1}function EX(){return 322504}function FX(){return 322480}function GX(){return 322464}function HX(){return 0}function IX(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=i;i=i+16|0;s=w;k=w+7|0;p=w+4|0;q=w+5|0;r=w+6|0;a[k>>0]=0;a[p>>0]=0;if(!g){f=0;i=w;return f|0}h=j&32768;m=(h|0)==0;h=h>>>15;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](k,1,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](p,1,1,g)|0;if((a[k>>0]|0)!=80){w=kc(4)|0;c[w>>2]=322440;xd(w|0,378680,0)}if(((a[p>>0]|0)+-49<<24>>24&255)>5){w=kc(4)|0;c[w>>2]=322440;xd(w|0,378680,0)}u=M1(f,g)|0;v=M1(f,g)|0;k=a[p>>0]|0;do if(k<<24>>24==54|k<<24>>24==51|k<<24>>24==53|k<<24>>24==50){j=M1(f,g)|0;if((j+-1|0)>>>0>65534){w=c[80550]|0;c[s>>2]=j;yJ(w,322312,s);w=kc(4)|0;c[w>>2]=0;xd(w|0,378680,0)}else{k=a[p>>0]|0;t=j;break}}else t=1;while(0);a:do switch(k<<24>>24|0){case 52:case 49:{k=xI(h,u,v,1,0,0,0)|0;n=1;break}case 53:case 50:if((t|0)>255){k=wI(h,2,u,v,8,0,0,0)|0;n=2;break a}else{k=xI(h,u,v,8,0,0,0)|0;n=1;break a}case 54:case 51:if((t|0)>255){k=wI(h,9,u,v,8,0,0,0)|0;n=9;break a}else{k=xI(h,u,v,24,16711680,65280,255)|0;n=1;break a}default:{w=kc(4)|0;c[w>>2]=322336;xd(w|0,378680,0)}}while(0);if(!k){w=kc(4)|0;c[w>>2]=322336;xd(w|0,378680,0)}l=(n|0)==1;do if(l){j=a[p>>0]|0;if((j|0)==52|(j|0)==49){h=VI(k)|0;a[h>>0]=0;a[h+1>>0]=0;a[h+2>>0]=0;a[h+4>>0]=-1;a[h+5>>0]=-1;a[h+6>>0]=-1;break}else if(!((j|0)==53|(j|0)==50))break;j=VI(k)|0;h=0;do{x=h&255;a[j+(h<<2)>>0]=x;a[j+(h<<2)+1>>0]=x;a[j+(h<<2)+2>>0]=x;h=h+1|0}while((h|0)!=256)}while(0);if(!m){x=k;i=w;return x|0}j=a[p>>0]|0;switch(j<<24>>24|0){case 52:case 49:{if(j<<24>>24!=49){h=Iga(u|0,0,7,0)|0;h=Lga(h|0,I|0,3)|0;if((v|0)<=0){x=k;i=w;return x|0}n=v+-1|0;if(!h){h=0;do{$J(k,n-h|0)|0;h=h+1|0}while((h|0)<(v|0));i=w;return k|0}else m=0;do{l=$J(k,n-m|0)|0;j=0;do{x=l+j|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](x,1,1,g)|0;a[x>>0]=d[x>>0]^255;j=j+1|0}while((j|0)<(h|0));m=m+1|0}while((m|0)<(v|0));i=w;return k|0}if((v|0)<=0){x=k;i=w;return x|0}m=v+-1|0;if((u|0)>0)n=0;else{h=0;do{$J(k,m-h|0)|0;h=h+1|0}while((h|0)<(v|0));i=w;return k|0}do{j=$J(k,m-n|0)|0;l=0;do{h=l&7;if(!(M1(f,g)|0)){x=j+(l>>3)|0;a[x>>0]=d[x>>0]|128>>>h}else{x=j+(l>>3)|0;a[x>>0]=d[x>>0]&65407>>>h}l=l+1|0}while((l|0)<(u|0));n=n+1|0}while((n|0)<(v|0));i=w;return k|0}case 53:case 50:if(!l){if((n|0)!=2){x=k;i=w;return x|0}h=(v|0)>0;if(j<<24>>24==50){if(!h){x=k;i=w;return x|0}n=v+-1|0;m=(u|0)>0;o=+(t|0);l=0;do{j=$J(k,n-l|0)|0;if(m){h=0;do{b[j+(h<<1)>>1]=~~(+(M1(f,g)|0)*65535.0/o);h=h+1|0}while((h|0)<(u|0))}l=l+1|0}while((l|0)<(v|0));i=w;return k|0}else{if(!h){x=k;i=w;return x|0}n=v+-1|0;m=(u|0)>0;o=+(t|0);l=0;do{j=$J(k,n-l|0)|0;if(m){h=0;do{x=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;b[s>>1]=0;ce[x&255](s,2,1,g)|0;x=e[s>>1]|0;b[j+(h<<1)>>1]=~~(+((x<<8|x>>>8)&65535)*65535.0/o);h=h+1|0}while((h|0)<(u|0))}l=l+1|0}while((l|0)<(v|0));i=w;return k|0}}else{if(j<<24>>24!=50){a[q>>0]=0;if((v|0)<=0){x=k;i=w;return x|0}j=v+-1|0;h=(u|0)>0;m=0;do{l=$J(k,j-m|0)|0;if(h){n=0;do{ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](q,1,1,g)|0;a[l+n>>0]=((d[q>>0]|0)*255|0)/(t|0)|0;n=n+1|0}while((n|0)<(u|0))}m=m+1|0}while((m|0)<(v|0));i=w;return k|0}if((v|0)<=0){x=k;i=w;return x|0}n=v+-1|0;if((u|0)>0)l=0;else{h=0;do{$J(k,n-h|0)|0;h=h+1|0}while((h|0)<(v|0));i=w;return k|0}do{j=$J(k,n-l|0)|0;h=0;do{a[j+h>>0]=((M1(f,g)|0)*255|0)/(t|0)|0;h=h+1|0}while((h|0)<(u|0));l=l+1|0}while((l|0)<(v|0));i=w;return k|0}case 54:case 51:{if(l)if(j<<24>>24==51){if((v|0)<=0){x=k;i=w;return x|0}l=v+-1|0;n=(u|0)>0;m=0;do{j=$J(k,l-m|0)|0;if(n){h=0;while(1){a[j+2>>0]=((M1(f,g)|0)*255|0)/(t|0)|0;a[j+1>>0]=((M1(f,g)|0)*255|0)/(t|0)|0;a[j>>0]=((M1(f,g)|0)*255|0)/(t|0)|0;h=h+1|0;if((h|0)>=(u|0))break;else j=j+3|0}}m=m+1|0}while((m|0)<(v|0));i=w;return k|0}else{a[r>>0]=0;if((v|0)<=0){x=k;i=w;return x|0}l=v+-1|0;n=(u|0)>0;m=0;do{j=$J(k,l-m|0)|0;if(n){h=0;while(1){ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](r,1,1,g)|0;a[j+2>>0]=((d[r>>0]|0)*255|0)/(t|0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](r,1,1,g)|0;a[j+1>>0]=((d[r>>0]|0)*255|0)/(t|0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](r,1,1,g)|0;a[j>>0]=((d[r>>0]|0)*255|0)/(t|0)|0;h=h+1|0;if((h|0)>=(u|0))break;else j=j+3|0}}m=m+1|0}while((m|0)<(v|0));i=w;return k|0}if((n|0)!=9){x=k;i=w;return x|0}h=(v|0)>0;if(j<<24>>24==51){if(!h){x=k;i=w;return x|0}n=v+-1|0;m=(u|0)>0;o=+(t|0);l=0;do{j=$J(k,n-l|0)|0;if(m){h=0;do{t=~~(+(M1(f,g)|0)*65535.0/o)&65535;x=j+(h*6|0)|0;a[x>>0]=t;a[x+1>>0]=t>>8;x=~~(+(M1(f,g)|0)*65535.0/o)&65535;t=j+(h*6|0)+2|0;a[t>>0]=x;a[t+1>>0]=x>>8;t=~~(+(M1(f,g)|0)*65535.0/o)&65535;x=j+(h*6|0)+4|0;a[x>>0]=t;a[x+1>>0]=t>>8;h=h+1|0}while((h|0)<(u|0))}l=l+1|0}while((l|0)<(v|0));i=w;return k|0}else{if(!h){x=k;i=w;return x|0}n=v+-1|0;m=(u|0)>0;o=+(t|0);l=0;do{j=$J(k,n-l|0)|0;if(m){h=0;do{t=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;b[s>>1]=0;ce[t&255](s,2,1,g)|0;t=e[s>>1]|0;t=~~(+((t<<8|t>>>8)&65535)*65535.0/o)&65535;x=j+(h*6|0)|0;a[x>>0]=t;a[x+1>>0]=t>>8;x=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;b[s>>1]=0;ce[x&255](s,2,1,g)|0;x=e[s>>1]|0;x=~~(+((x<<8|x>>>8)&65535)*65535.0/o)&65535;t=j+(h*6|0)+2|0;a[t>>0]=x;a[t+1>>0]=x>>8;t=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;b[s>>1]=0;ce[t&255](s,2,1,g)|0;t=e[s>>1]|0;t=~~(+((t<<8|t>>>8)&65535)*65535.0/o)&65535;x=j+(h*6|0)+4|0;a[x>>0]=t;a[x+1>>0]=t>>8;h=h+1|0}while((h|0)<(u|0))}l=l+1|0}while((l|0)<(v|0));i=w;return k|0}}default:{x=0;i=w;return x|0}}return 0}function JX(a,f,g,h,j,k){a=a|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=i;i=i+272|0;o=s;n=s+16|0;if(!((f|0)!=0&(g|0)!=0)){g=0;i=s;return g|0}l=EI(f)|0;h=HI(f)|0;p=FI(f)|0;r=GI(f)|0;do if((l|0)==9){k=3;m=65535}else if((l|0)==1)if((h|0)==8){k=2;m=255;break}else if((h|0)==1){k=1;m=255;break}else if((h|0)==24){k=3;m=255;break}else{g=0;i=s;return g|0}else if((l|0)==2){k=2;m=65535}else{g=0;i=s;return g|0}while(0);j=(j|0)==0;c[o>>2]=j?k+3|0:k;c[o+4>>2]=p;c[o+8>>2]=r;fga(n,322232,o)|0;q=a+4|0;k=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;a=Dga(n|0)|0;ce[k&255](n,a,1,g)|0;if((h|0)!=1){c[o>>2]=m;fga(n,322248,o)|0;a=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;m=Dga(n|0)|0;ce[a&255](n,m,1,g)|0}if((l|0)==1)if((h|0)==8){k=(r|0)>0;if(j){if(!k){g=1;i=s;return g|0}k=r+-1|0;l=(p|0)>0;m=0;do{h=$J(f,k-m|0)|0;if(l){j=0;do{ce[(d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24)&255](h+j|0,1,1,g)|0;j=j+1|0}while((j|0)!=(p|0))}m=m+1|0}while((m|0)!=(r|0));k=1;i=s;return k|0}if(!k){g=1;i=s;return g|0}j=r+-1|0;a=(p|0)>0;k=0;m=0;do{h=$J(f,j-m|0)|0;if(a){l=0;do{c[o>>2]=d[h+l>>0];fga(n,322272,o)|0;u=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;t=Dga(n|0)|0;ce[u&255](n,t,1,g)|0;k=k+4|0;if((k|0)>66){b[n>>1]=10;u=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;k=Dga(n|0)|0;ce[u&255](n,k,1,g)|0;k=0}l=l+1|0}while((l|0)!=(p|0))}m=m+1|0}while((m|0)!=(r|0));k=1;i=s;return k|0}else if((h|0)==1){k=(r|0)>0;if(j){if(!k){u=1;i=s;return u|0}k=r+-1|0;l=0;do{h=$J(f,k-l|0)|0;if((PI(f)|0)>0){j=0;do{ce[(d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24)&255](h+j|0,1,1,g)|0;j=j+1|0}while((j|0)<(PI(f)|0))}l=l+1|0}while((l|0)!=(r|0));k=1;i=s;return k|0}if(!k){u=1;i=s;return u|0}j=r+-1|0;k=0;a=0;do{h=$J(f,j-a|0)|0;if((PI(f)|0)>0){l=0;do{c[o>>2]=((d[h+(l>>3)>>0]|0)&128>>>(l&7)|0)!=0?49:48;fga(n,322280,o)|0;t=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;u=Dga(n|0)|0;ce[t&255](n,u,1,g)|0;k=k+2|0;if((k|0)>68){b[n>>1]=10;u=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;k=Dga(n|0)|0;ce[u&255](n,k,1,g)|0;k=0}l=l+1|0}while((l|0)<((PI(f)|0)<<3|0))}a=a+1|0}while((a|0)!=(r|0));k=1;i=s;return k|0}else if((h|0)==24){k=(r|0)>0;if(j){if(!k){u=1;i=s;return u|0}h=r+-1|0;j=(p|0)>0;m=0;do{k=$J(f,h-m|0)|0;if(j){l=0;while(1){ce[(d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24)&255](k+2|0,1,1,g)|0;ce[(d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24)&255](k+1|0,1,1,g)|0;ce[(d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24)&255](k,1,1,g)|0;l=l+1|0;if((l|0)==(p|0))break;else k=k+3|0}}m=m+1|0}while((m|0)!=(r|0));k=1;i=s;return k|0}if(!k){u=1;i=s;return u|0}j=r+-1|0;a=(p|0)>0;k=0;m=0;do{l=$J(f,j-m|0)|0;if(a){h=0;while(1){u=d[l+1>>0]|0;t=d[l>>0]|0;c[o>>2]=d[l+2>>0];c[o+4>>2]=u;c[o+8>>2]=t;fga(n,322256,o)|0;t=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;u=Dga(n|0)|0;ce[t&255](n,u,1,g)|0;k=k+12|0;if((k|0)>58){b[n>>1]=10;u=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;k=Dga(n|0)|0;ce[u&255](n,k,1,g)|0;k=0}h=h+1|0;if((h|0)==(p|0))break;else l=l+3|0}}m=m+1|0}while((m|0)!=(r|0));k=1;i=s;return k|0}else{u=1;i=s;return u|0}else if((l|0)==9){k=(r|0)>0;if(j){if(!k){u=1;i=s;return u|0}k=r+-1|0;l=(p|0)>0;m=0;do{h=$J(f,k-m|0)|0;if(l){j=0;do{t=h+(j*6|0)|0;u=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;t=(d[t>>0]|d[t+1>>0]<<8)&65535;b[o>>1]=t<<8|t>>>8;ce[u&255](o,2,1,g)|0;u=h+(j*6|0)+2|0;t=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;u=(d[u>>0]|d[u+1>>0]<<8)&65535;b[o>>1]=u<<8|u>>>8;ce[t&255](o,2,1,g)|0;t=h+(j*6|0)+4|0;u=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;t=(d[t>>0]|d[t+1>>0]<<8)&65535;b[o>>1]=t<<8|t>>>8;ce[u&255](o,2,1,g)|0;j=j+1|0}while((j|0)!=(p|0))}m=m+1|0}while((m|0)!=(r|0));k=1;i=s;return k|0}if(!k){u=1;i=s;return u|0}j=r+-1|0;a=(p|0)>0;k=0;m=0;do{h=$J(f,j-m|0)|0;if(a){l=0;do{v=h+(l*6|0)|0;u=h+(l*6|0)+2|0;u=(d[u>>0]|d[u+1>>0]<<8)&65535;t=h+(l*6|0)+4|0;t=(d[t>>0]|d[t+1>>0]<<8)&65535;c[o>>2]=(d[v>>0]|d[v+1>>0]<<8)&65535;c[o+4>>2]=u;c[o+8>>2]=t;fga(n,322296,o)|0;t=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;u=Dga(n|0)|0;ce[t&255](n,u,1,g)|0;k=k+18|0;if((k|0)>52){b[n>>1]=10;v=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;k=Dga(n|0)|0;ce[v&255](n,k,1,g)|0;k=0}l=l+1|0}while((l|0)!=(p|0))}m=m+1|0}while((m|0)!=(r|0));k=1;i=s;return k|0}else if((l|0)==2){k=(r|0)>0;if(j){if(!k){v=1;i=s;return v|0}k=r+-1|0;l=(p|0)>0;m=0;do{h=$J(f,k-m|0)|0;if(l){j=0;do{v=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;u=e[h+(j<<1)>>1]|0;b[o>>1]=u<<8|u>>>8;ce[v&255](o,2,1,g)|0;j=j+1|0}while((j|0)!=(p|0))}m=m+1|0}while((m|0)!=(r|0));k=1;i=s;return k|0}if(!k){v=1;i=s;return v|0}j=r+-1|0;a=(p|0)>0;k=0;m=0;do{h=$J(f,j-m|0)|0;if(a){l=0;do{c[o>>2]=e[h+(l<<1)>>1];fga(n,322288,o)|0;u=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;v=Dga(n|0)|0;ce[u&255](n,v,1,g)|0;k=k+6|0;if((k|0)>64){b[n>>1]=10;v=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;k=Dga(n|0)|0;ce[v&255](n,k,1,g)|0;k=0}l=l+1|0}while((l|0)!=(p|0))}m=m+1|0}while((m|0)!=(r|0));k=1;i=s;return k|0}else{v=1;i=s;return v|0}return 0}function KX(a,c){a=a|0;c=c|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;m=l+12|0;e=l;f=l+2|0;g=l+4|0;h=l+6|0;j=l+8|0;k=l+10|0;b[m>>1]=12624;b[e>>1]=13392;b[f>>1]=12880;b[g>>1]=13648;b[h>>1]=13136;b[j>>1]=13904;b[k>>1]=0;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](k,1,2,c)|0;if(!(pga(m,k,2)|0)){m=1;i=l;return m|0}if(!(pga(e,k,2)|0)){m=1;i=l;return m|0}if(!(pga(f,k,2)|0)){m=1;i=l;return m|0}if(!(pga(g,k,2)|0)){m=1;i=l;return m|0}if(!(pga(h,k,2)|0)){m=1;i=l;return m|0}m=(pga(j,k,2)|0)==0&1;i=l;return m|0}function LX(){return 322208}function MX(a){a=a|0;if((a|0)==24|(a|0)==1|(a|0)==8)a=1;else a=0;return a|0}function NX(a){a=a|0;return ((a+-1|0)>>>0<2|(a|0)==9)&1|0}function OX(){return 1}function PX(){return 322576}function QX(){return 322560}function RX(){return 322552}function SX(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;d=i;i=i+128|0;f=d;if(!b){a=0;i=d;return a|0}XK(f);a=$K(f,a,b,c[80628]|0,e)|0;YK(f);i=d;return a|0}function TX(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+4|0;f=e;c[g>>2]=1397768760;c[f>>2]=0;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,4,b)|0;a=(pga(g,f,4)|0)==0&1;i=e;return a|0}function UX(){return 322520}function VX(a){a=a|0;return 0}function WX(a){a=a|0;return 0}function XX(){return 1}function YX(){return 1}function ZX(){return 322816}function _X(){return 322792}function $X(){return 322784}function aY(){return 0}function bY(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+48|0;l=z;y=z+32|0;if(!e){b=0;i=z;return b|0}h=g&32768;p=(h|0)==0;h=h>>>15;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](l,32,1,e)|0;v=c[l>>2]|0;c[l>>2]=Nga(v|0)|0;w=l+4|0;g=Nga(c[w>>2]|0)|0;c[w>>2]=g;x=l+8|0;j=Nga(c[x>>2]|0)|0;c[x>>2]=j;t=l+12|0;f=Nga(c[t>>2]|0)|0;c[t>>2]=f;k=l+16|0;c[k>>2]=Nga(c[k>>2]|0)|0;k=l+20|0;c[k>>2]=Nga(c[k>>2]|0)|0;m=l+24|0;c[m>>2]=Nga(c[m>>2]|0)|0;l=l+28|0;c[l>>2]=Nga(c[l>>2]|0)|0;if((v|0)!=-1788172711){b=kc(4)|0;c[b>>2]=322760;xd(b|0,378680,0)}if((f|0)==8|(f|0)==1)h=xI(h,g,j,f,0,0,0)|0;else if((f|0)==32)h=xI(h,g,j,32,16711680,65280,255)|0;else if((f|0)==24)h=xI(h,g,j,24,16711680,65280,255)|0;else{b=kc(4)|0;c[b>>2]=322672;xd(b|0,378680,0)}if(!h){b=kc(4)|0;c[b>>2]=322672;xd(b|0,378680,0)}switch(c[k>>2]|0){case 5:case 4:case 1:case 0:{q=0;s=0;break}case 2:{q=0;s=1;break}case 3:{q=1;s=0;break}default:{b=kc(4)|0;c[b>>2]=322648;xd(b|0,378680,0)}}f=c[m>>2]|0;if((f|0)==1){f=c[l>>2]|0;if(3<>2]>>>0<=f>>>0){b=kc(4)|0;c[b>>2]=322616;xd(b|0,378680,0)}j=(f>>>0)/3|0;v=j*3|0;k=Afa(v)|0;g=j<<1;l=VI(h)|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](k,v,1,e)|0;if(f>>>0>2){f=0;do{a[l+(f<<2)+2>>0]=a[k+f>>0]|0;a[l+(f<<2)+1>>0]=a[k+(f+j)>>0]|0;a[l+(f<<2)>>0]=a[k+(f+g)>>0]|0;f=f+1|0}while((f|0)<(j|0))}Bfa(k)}else if(!f){if((c[t>>2]|0)>>>0<24?(n=VI(h)|0,v=c[t>>2]|0,o=1<>0]=v;a[n+(g<<2)+1>>0]=v;a[n+(g<<2)>>0]=v;g=g+1|0}while((g|0)<(o|0))}}else if((f|0)==2){u=c[l>>2]|0;v=Afa(u)|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](v,u,1,e)|0;Bfa(v)}if(!p){b=h;i=z;return b|0}f=c[w>>2]|0;if((c[t>>2]|0)==1)f=((f&7|0)!=0&1)+(f>>>3)|0;r=f&65535;v=f&1;g=v&65535;u=OI(h)|0;f=c[t>>2]|0;if((f|0)==24){r=Afa((c[w>>2]|0)*3|0)|0;if(c[x>>2]|0){p=(s|0)==0;m=(q|0)==0;n=g<<16>>16==0;o=(v|0)==0;f=0;k=0;do{l=QI(h)|0;l=l+(ea((c[x>>2]|0)+~f|0,u)|0)|0;j=(c[w>>2]|0)*3|0;if(!p){if(j){g=r;while(1){j=j+-1|0;f=a[322640]|0;do if(!(f<<24>>24)){ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](322632,1,1,e)|0;f=a[322632]|0;if(f<<24>>24!=-128){a[g>>0]=f;break}ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](322640,1,1,e)|0;if(!(a[322640]|0)){a[g>>0]=-128;break}else{ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](322632,1,1,e)|0;a[g>>0]=a[322632]|0;break}}else{a[322640]=f+-1<<24>>24;a[g>>0]=a[322632]|0}while(0);if(!j)break;else g=g+1|0}}}else ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](r,j,1,e)|0;f=(c[w>>2]|0)==0;if(m){if(!f){j=l;f=r;g=0;while(1){a[j+2>>0]=a[f+2>>0]|0;a[j+1>>0]=a[f+1>>0]|0;a[j>>0]=a[f>>0]|0;g=g+1<<16>>16;if((g&65535)>>>0>=(c[w>>2]|0)>>>0)break;else{j=j+3|0;f=f+3|0}}}}else if(!f){j=l;f=r;g=0;while(1){a[j+2>>0]=a[f>>0]|0;a[j+1>>0]=a[f+1>>0]|0;a[j>>0]=a[f+2>>0]|0;g=g+1<<16>>16;if((g&65535)>>>0>=(c[w>>2]|0)>>>0)break;else{j=j+3|0;f=f+3|0}}}do if(!n){if(p){ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](y,v,1,e)|0;break}if(!o){f=y;g=v;while(1){g=g+-1|0;j=a[322640]|0;do if(!(j<<24>>24)){ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](322632,1,1,e)|0;j=a[322632]|0;if(j<<24>>24!=-128){a[f>>0]=j;break}ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](322640,1,1,e)|0;if(!(a[322640]|0)){a[f>>0]=-128;break}else{ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](322632,1,1,e)|0;a[f>>0]=a[322632]|0;break}}else{a[322640]=j+-1<<24>>24;a[f>>0]=a[322632]|0}while(0);if(!g)break;else f=f+1|0}}}while(0);k=k+1<<16>>16;f=k&65535}while(f>>>0<(c[x>>2]|0)>>>0)}Bfa(r);b=h;i=z;return b|0}else if((f|0)==8|(f|0)==1){j=QI(h)|0;f=c[x>>2]|0;if(!f){b=h;i=z;return b|0}p=(s|0)==0;q=0-u|0;n=g<<16>>16==0;o=(v|0)==0;m=(r|0)==0;l=j+(ea(f+-1|0,u)|0)|0;k=0;do{if(!p){if(!m){f=l;g=r;while(1){g=g+-1|0;j=a[322640]|0;do if(!(j<<24>>24)){ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](322632,1,1,e)|0;j=a[322632]|0;if(j<<24>>24!=-128){a[f>>0]=j;break}ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](322640,1,1,e)|0;if(!(a[322640]|0)){a[f>>0]=-128;break}else{ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](322632,1,1,e)|0;a[f>>0]=a[322632]|0;break}}else{a[322640]=j+-1<<24>>24;a[f>>0]=a[322632]|0}while(0);if(!g)break;else f=f+1|0}}}else ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](l,r,1,e)|0;l=l+q|0;do if(!n){if(p){ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](y,v,1,e)|0;break}if(!o){f=y;g=v;while(1){g=g+-1|0;j=a[322640]|0;do if(!(j<<24>>24)){ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](322632,1,1,e)|0;j=a[322632]|0;if(j<<24>>24!=-128){a[f>>0]=j;break}ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](322640,1,1,e)|0;if(!(a[322640]|0)){a[f>>0]=-128;break}else{ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](322632,1,1,e)|0;a[f>>0]=a[322632]|0;break}}else{a[322640]=j+-1<<24>>24;a[f>>0]=a[322632]|0}while(0);if(!g)break;else f=f+1|0}}}while(0);k=k+1<<16>>16}while((k&65535)>>>0<(c[x>>2]|0)>>>0);i=z;return h|0}else if((f|0)==32){r=Afa(c[w>>2]<<2)|0;if(c[x>>2]|0){p=(s|0)==0;m=(q|0)==0;n=g<<16>>16==0;o=(v|0)==0;f=0;k=0;do{l=QI(h)|0;l=l+(ea((c[x>>2]|0)+~f|0,u)|0)|0;j=c[w>>2]<<2;if(!p){if(j){g=r;while(1){j=j+-1|0;f=a[322640]|0;do if(!(f<<24>>24)){ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](322632,1,1,e)|0;f=a[322632]|0;if(f<<24>>24!=-128){a[g>>0]=f;break}ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](322640,1,1,e)|0;if(!(a[322640]|0)){a[g>>0]=-128;break}else{ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](322632,1,1,e)|0;a[g>>0]=a[322632]|0;break}}else{a[322640]=f+-1<<24>>24;a[g>>0]=a[322632]|0}while(0);if(!j)break;else g=g+1|0}}}else ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](r,j,1,e)|0;f=(c[w>>2]|0)==0;if(m){if(!f){j=l;f=r;g=0;while(1){a[j+2>>0]=a[f+3>>0]|0;a[j+1>>0]=a[f+2>>0]|0;a[j>>0]=a[f+1>>0]|0;a[j+3>>0]=a[f>>0]|0;g=g+1<<16>>16;if((g&65535)>>>0>=(c[w>>2]|0)>>>0)break;else{j=j+4|0;f=f+4|0}}}}else if(!f){j=l;f=r;g=0;while(1){a[j+3>>0]=a[f>>0]|0;a[j+2>>0]=a[f+1>>0]|0;a[j+1>>0]=a[f+2>>0]|0;a[j>>0]=a[f+3>>0]|0;g=g+1<<16>>16;if((g&65535)>>>0>=(c[w>>2]|0)>>>0)break;else{j=j+4|0;f=f+4|0}}}do if(!n){if(p){ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](y,v,1,e)|0;break}if(!o){f=y;g=v;while(1){g=g+-1|0;j=a[322640]|0;do if(!(j<<24>>24)){ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](322632,1,1,e)|0;j=a[322632]|0;if(j<<24>>24!=-128){a[f>>0]=j;break}ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](322640,1,1,e)|0;if(!(a[322640]|0)){a[f>>0]=-128;break}else{ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](322632,1,1,e)|0;a[f>>0]=a[322632]|0;break}}else{a[322640]=j+-1<<24>>24;a[f>>0]=a[322632]|0}while(0);if(!g)break;else f=f+1|0}}}while(0);k=k+1<<16>>16;f=k&65535}while(f>>>0<(c[x>>2]|0)>>>0)}Bfa(r);b=h;i=z;return b|0}else{b=h;i=z;return b|0}return 0}function cY(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+4|0;f=e;c[g>>2]=-1788172711;c[f>>2]=0;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,4,b)|0;a=(pga(g,f,4)|0)==0&1;i=e;return a|0}function dY(){return 322592}function eY(a){a=a|0;return 0}function fY(a){a=a|0;return 0}function gY(){return 1}function hY(){return 323200}function iY(){return 323176}function jY(){return 323160}function kY(){return 0}function lY(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=i;i=i+544|0;G=L+532|0;I=L+530|0;J=L+528|0;k=L+16|0;o=L+529|0;F=L;H=L+531|0;Cga(k|0,0,512)|0;if((ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](k,1,512,g)|0)>>>0<512){L=kc(4)|0;c[L>>2]=323136;xd(L|0,378680,0)}K=e[k>>1]|0;K=(K<<8|K>>>8)&65535;b[k>>1]=K;D=k+4|0;h=e[D>>1]|0;h=(h<<8|h>>>8)&65535;b[D>>1]=h;D=k+6|0;l=e[D>>1]|0;l=l<<8|l>>>8;E=l&65535;b[D>>1]=E;D=k+8|0;n=e[D>>1]|0;n=n<<8|n>>>8;b[D>>1]=n;D=k+10|0;m=e[D>>1]|0;m=m<<8|m>>>8;b[D>>1]=m;D=k+12|0;c[D>>2]=Nga(c[D>>2]|0)|0;D=k+16|0;c[D>>2]=Nga(c[D>>2]|0)|0;D=k+104|0;j=c[D>>2]|0;c[D>>2]=Nga(j|0)|0;if(K<<16>>16!=474){L=kc(4)|0;c[L>>2]=323112;xd(L|0,378680,0)}K=b[k+2>>1]|0;D=(K&255)<<24>>24==1;if((K&-256)<<16>>16!=256){L=kc(4)|0;c[L>>2]=323088;xd(L|0,378680,0)}if(j){L=kc(4)|0;c[L>>2]=323064;xd(L|0,378680,0)}K=l&65535;if((h&65535)<3)if((h&65535)<2){C=1;A=1}else{k=1;B=12}else{k=m&65535;B=12}if((B|0)==12){C=n&65535;A=k}a:do if(D){k=ea(C,A)|0;j=k<<2;h=Afa(j)|0;if(!h){L=kc(4)|0;c[L>>2]=323032;xd(L|0,378680,0)}if((k|0)!=(ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](h,4,k,g)|0)){L=kc(4)|0;c[L>>2]=323e3;xd(L|0,378680,0)}if((k|0)>0){l=0;do{B=h+(l<<2)|0;c[B>>2]=Nga(c[B>>2]|0)|0;l=l+1|0}while((l|0)!=(k|0))}if((j|0)>0){k=0;while(1){a[o>>0]=0;k=k+1|0;if(!(ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](o,1,1,g)|0))break;if((k|0)>=(j|0)){z=h;break a}}L=kc(4)|0;c[L>>2]=323e3;xd(L|0,378680,0)}else z=h}else z=0;while(0);if((A|0)==2)k=32;else if((A|0)==1)k=8;else if((A|0)==4)k=32;else if((A|0)==3)k=24;else{L=kc(4)|0;c[L>>2]=322976;xd(L|0,378680,0)}y=yI(K,C,k,0,0,0)|0;if(!y){L=kc(4)|0;c[L>>2]=322888;xd(L|0,378680,0)}if((k|0)==8){k=VI(y)|0;l=0;do{B=l&255;a[k+(l<<2)+2>>0]=B;a[k+(l<<2)+1>>0]=B;a[k+(l<<2)>>0]=B;a[k+(l<<2)+3>>0]=0;l=l+1|0}while((l|0)!=256)}x=OI(y)|0;h=$J(y,0)|0;c[F+0>>2]=c[80712];c[F+4>>2]=c[80713];c[F+8>>2]=c[80714];c[F+12>>2]=c[80715];if(A>>>0<3?(c[F>>2]=0,(A|0)==2):0){c[F+4>>2]=3;u=0;w=4;B=38}else B=37;if((B|0)==37?(A|0)>0:0){u=1;w=A;B=38}if((B|0)==38){r=(C|0)==0;s=f+8|0;t=E<<16>>16==0;k=0;l=0;v=0;j=z;b:do{if(!r){p=0;q=h+(c[F+(v<<2)>>2]|0)|0;while(1){if(D){Od[(d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24)&255](g,c[j>>2]|0,0)|0;k=0}if(!t){m=0;o=q;while(1){a[H>>0]=0;if(D){c:do if(k){k=k+-1|0;if((l|0)==-1)B=53;else n=l}else{do{a[G>>0]=0;if(!(ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](G,1,1,g)|0)){n=-1;k=0;break c}k=a[G>>0]|0;n=k&255}while(k<<24>>24==0);k=n&127;if(n&128){k=k+-1|0;B=53;break}a[I>>0]=0;if(!(ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](I,1,1,g)|0)){n=-1;break}l=d[I>>0]|0;n=l;k=k+-1|0}while(0);do if((B|0)==53){B=0;a[J>>0]=0;if(!(ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](J,1,1,g)|0)){n=-1;l=-1;break}n=d[J>>0]|0;l=-1}while(0);a[H>>0]=n}else n=ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](H,1,1,g)|0;if((n|0)==-1){B=58;break b}a[o>>0]=a[H>>0]|0;m=m+1|0;if((m|0)>=(K|0))break;else o=o+w|0}}p=p+1|0;j=j+4|0;if((p|0)>=(C|0))break;else q=q+x|0}}v=v+1|0}while((v|0)<(A|0));if((B|0)==58){L=kc(4)|0;c[L>>2]=322864;xd(L|0,378680,0)}if(!(u|(C|0)==0|E<<16>>16==0)){l=0;while(1){k=0;j=h;while(1){f=a[j>>0]|0;a[j+1>>0]=f;a[j+2>>0]=f;k=k+1|0;if((k|0)>=(K|0))break;else j=j+4|0}l=l+1|0;if((l|0)>=(C|0))break;else h=h+x|0}}}if(!z){i=L;return y|0}Bfa(z);i=L;return y|0}function mY(a,c){a=a|0;c=c|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+2|0;f=e;b[g>>1]=-9727;b[f>>1]=0;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,2,c)|0;a=(pga(g,f,2)|0)==0&1;i=e;return a|0}function nY(){return 322832}function oY(a){a=a|0;return 0}function pY(a){a=a|0;return 0}function qY(){return 323440}function rY(){return 323416}function sY(){return 323400}function tY(){return 0}function uY(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;Y=i;i=i+832|0;U=Y;M=Y+48|0;h=Y+20|0;k=Y+336|0;O=Y+56|0;D=Y+80|0;if(!g){f=0;i=Y;return f|0}w=j&32768;N=(w|0)!=0;w=w>>>15;R=f+12|0;E=Ld[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](g)|0;T=f+8|0;Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0,2)|0;S=Ld[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](g)|0;Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,E,0)|0;a[M>>0]=0;K=M+1|0;a[K>>0]=0;L=M+2|0;a[L>>0]=0;X=M+4|0;c[X>>2]=0;G=Ld[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](g)|0;Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0,2)|0;V=Ld[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](g)|0;Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,G+-18+V|0,0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](U,1,18,g)|0;Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,G,0)|0;if((((pga(323232,U,18)|0)==0?(m=E+-26+S|0,Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,m,0)|0,ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](h,26,1,g)|0,n=c[h>>2]|0,(n|0)!=0):0)?(Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,n,0)|0,ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](k,495,1,g)|0,q=k+486|0,q=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24,m>>>0>q>>>0&(q|0)!=0):0)?(Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,q,0)|0,ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](M,1,1,g)|0,ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](K,1,1,g)|0,p=m-q+-2|0,o=Afa(p)|0,c[X>>2]=o,(o|0)!=0):0)ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](o,1,p,g)|0;Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,E,0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](O,18,1,g)|0;o=O+16|0;p=a[o>>0]|0;a[L>>0]=p;Q=O+12|0;k=p&255;G=Tga(p&255|0,0,(d[Q>>0]|d[Q+1>>0]<<8)&65535|0,0)|0;G=Iga(G|0,I|0,7,0)|0;G=Lga(G|0,I|0,3)|0;p=(p&255)>>>3&255;W=d[O+17>>0]|0;V=(W&16|0)==0;W=(W&32|0)==0;Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,d[O>>0]|0,1)|0;a:do switch(d[o>>0]|0){case 8:{o=O+14|0;m=xI(w,(d[Q>>0]|d[Q+1>>0]<<8)&65535,(d[o>>0]|d[o+1>>0]<<8)&65535,8,0,0,0)|0;if(!m){Y=kc(4)|0;c[Y>>2]=323312;xd(Y|0,378680,0)}q=VI(m)|0;if(a[O+1>>0]|0){h=O+5|0;l=O+7|0;k=(ea(d[l>>0]|0,(d[h>>0]|d[h+1>>0]<<8)&65535)|0)>>>3;p=Afa(k)|0;if(!p){Y=kc(4)|0;c[Y>>2]=323312;xd(Y|0,378680,0)}ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](p,1,k,g)|0;l=d[l>>0]|0;if((l|0)==16){n=O+3|0;n=(d[n>>0]|d[n+1>>0]<<8)&65535;l=d[h>>0]|d[h+1>>0]<<8;k=l&65535;if(n>>>0<(k>>>0>256?256:k)>>>0){h=(l&65535)<256?k:256;l=n;k=p;while(1){E=e[k>>1]|0;a[q+(l<<2)+2>>0]=(((E>>>10&31)*255|0)>>>0)/31|0;a[q+(l<<2)+1>>0]=(((E>>>5&31)*255|0)>>>0)/31|0;a[q+(l<<2)>>0]=(((E&31)*255|0)>>>0)/31|0;l=l+1|0;if((l|0)==(h|0))break;else k=k+2|0}}}else if((l|0)==32){Cga(D|0,-1,256)|0;n=O+3|0;n=(d[n>>0]|d[n+1>>0]<<8)&65535;l=d[h>>0]|d[h+1>>0]<<8;k=l&65535;if(n>>>0<(k>>>0>256?256:k)>>>0){k=(l&65535)<256?k:256;h=p;l=n;while(1){a[q+(l<<2)>>0]=a[h>>0]|0;a[q+(l<<2)+1>>0]=a[h+1>>0]|0;a[q+(l<<2)+2>>0]=a[h+2>>0]|0;a[D+l>>0]=a[h+3>>0]|0;l=l+1|0;if((l|0)==(k|0))break;else h=h+4|0}}bJ(m,D,256)}else if((l|0)==24?(A=O+3|0,A=(d[A>>0]|d[A+1>>0]<<8)&65535,x=d[h>>0]|d[h+1>>0]<<8,y=x&65535,A>>>0<(y>>>0>256?256:y)>>>0):0){k=(x&65535)<256?y:256;h=p;l=A;while(1){a[q+(l<<2)>>0]=a[h>>0]|0;a[q+(l<<2)+1>>0]=a[h+1>>0]|0;a[q+(l<<2)+2>>0]=a[h+2>>0]|0;l=l+1|0;if((l|0)==(k|0))break;else h=h+3|0}}Bfa(p)}if(((c[X>>2]|0)!=0?(L=a[L>>0]|0,F=L&255,L<<24>>24!=0):0)?(J=b[M>>1]|0,M=J&255,H=(ea(M,F)|0)>>>3,J=yI(M,(J&65535)>>>8&65535,F,0,0,0)|0,(J|0)!=0):0){l=a[K>>0]|0;if(l<<24>>24){k=(l&255)+-1|0;h=0;n=c[X>>2]|0;while(1){Aga($J(J,k-h|0)|0,n|0,H|0)|0;h=h+1|0;if((h&255)<<24>>24==l<<24>>24)break;else n=n+H|0}}l=VI(m)|0;k=VI(J)|0;b:do if((k|0)!=0&(l|0)!=0){h=0;while(1){if(h>>>0>=(SI(m)|0)>>>0)break b;M=k+(h<<2)|0;L=l+(h<<2)|0;L=d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24;a[M>>0]=L;a[M+1>>0]=L>>8;a[M+2>>0]=L>>16;a[M+3>>0]=L>>24;h=h+1|0}}while(0);M=_I(m)|0;bJ(J,M,aJ(m)|0);NI(m,J)|0;AI(J)}if(!N){l=d[O+2>>0]|0;if((l|0)==11|(l|0)==9){x=(d[Q>>0]|d[Q+1>>0]<<8)&65535;l=d[o>>0]|d[o+1>>0]<<8;v=l&65535;w=$J(m,v)|0;s=(S-(Ld[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](g)|0)|0)/(v|0)|0;t=Afa(s)|0;if(!t){AI(m);P=198;break a}u=t+s|0;n=$J(m,0)|0;c:do if(l<<16>>16){r=t;l=u;q=0;o=0;while(1){if(l>>>0>=u>>>0){ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](t,1,s,g)|0;l=t}k=l+1|0;h=d[l>>0]|0;j=(h&127)+1|0;if((n+(j+q)|0)>>>0>w>>>0)break;if(!(h&128)){l=k;p=0;h=o;while(1){if((l+1|0)>>>0>>0)k=l;else{Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0-(s+(r-l))|0,1)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](t,1,s,g)|0;k=t}l=k+1|0;a[n+q>>0]=a[k>>0]|0;k=q+1|0;if((k|0)>=(x|0)){h=h+1|0;n=$J(m,h)|0;k=0}p=p+1|0;if((p|0)>=(j|0))break;else q=k}}else{if((l+2|0)>>>0>=u>>>0){Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0-(s+(r-k))|0,1)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](t,1,s,g)|0;k=t}l=k+1|0;p=0;h=o;do{a[n+q>>0]=a[k>>0]|0;q=q+1|0;if((q|0)>=(x|0)){h=h+1|0;n=$J(m,h)|0;q=0}p=p+1|0}while((p|0)<(j|0));k=q}if((h|0)<(v|0)){q=k;o=h}else break c}yJ(c[80802]|0,323256,U)}while(0);Bfa(t);P=198;break a}else if((l|0)==3|(l|0)==1){if(!((d[o>>0]|d[o+1>>0]<<8)<<16>>16)){P=198;break a}else l=0;do{T=$J(m,l)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](T,1,G,g)|0;l=l+1|0}while(l>>>0<((d[o>>0]|d[o+1>>0]<<8)&65535)>>>0);P=198}else{AI(m);m=0;break a}}break}case 16:case 15:{j=j&1;p=(j|0)!=0;l=(d[Q>>0]|d[Q+1>>0]<<8)&65535;o=O+14|0;k=(d[o>>0]|d[o+1>>0]<<8)&65535;if(p){m=xI(w,l,k,24,16711680,65280,255)|0;q=24}else{m=xI(w,l,k,16,31744,992,31)|0;q=16}if(!m){Y=kc(4)|0;c[Y>>2]=323312;xd(Y|0,378680,0)}if(((c[X>>2]|0)!=0?(L=a[L>>0]|0,v=L&255,L<<24>>24!=0):0)?(C=b[M>>1]|0,M=C&255,B=(ea(M,v)|0)>>>3,C=yI(M,(C&65535)>>>8&65535,v,0,0,0)|0,(C|0)!=0):0){l=a[K>>0]|0;if(l<<24>>24){k=(l&255)+-1|0;h=0;n=c[X>>2]|0;while(1){Aga($J(C,k-h|0)|0,n|0,B|0)|0;h=h+1|0;if((h&255)<<24>>24==l<<24>>24)break;else n=n+B|0}}if(p){l=uJ(C)|0;AI(C)}else l=C;NI(m,l)|0;AI(l)}if(!N){u=(ea((d[Q>>0]|d[Q+1>>0]<<8)&65535,q)|0)>>>3;t=q>>>3;if(!(a[O+1>>0]|0))l=18;else{l=O+5|0;l=(ea(((d[O+7>>0]|0)+7|0)>>>3,(d[l>>0]|d[l+1>>0]<<8)&65535)|0)+18|0}Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,E,0)|0;Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,l+(d[O>>0]|0)|0,0)|0;l=d[O+2>>0]|0;if((l|0)==2){s=Afa(((d[Q>>0]|d[Q+1>>0]<<8)&65535)<<1)|0;if(!s){Y=kc(4)|0;c[Y>>2]=323280;xd(Y|0,378680,0)}T=d[o>>0]|d[o+1>>0]<<8;q=T&65535;if(T<<16>>16){r=(u|0)==0;l=(j|0)==0;k=0;do{n=$J(m,k)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](s,2,(d[Q>>0]|d[Q+1>>0]<<8)&65535,g)|0;if(!r){p=s;j=0;while(1){h=n+j|0;o=e[p>>1]|0;if(l)b[h>>1]=o&32767;else{a[h>>0]=(((o&31)*255|0)>>>0)/31|0;a[n+(j+1)>>0]=(((o>>>5&31)*255|0)>>>0)/31|0;a[n+(j+2)>>0]=(((o>>>10&31)*255|0)>>>0)/31|0}j=j+t|0;if((j|0)>=(u|0))break;else p=p+2|0}}k=k+1|0}while((k|0)<(q|0))}Bfa(s);P=198;break a}else if((l|0)==10){l=d[o>>0]|d[o+1>>0]<<8;z=l&65535;A=j|2;x=(ea((d[Q>>0]|d[Q+1>>0]<<8)&65535,j<<3|16)|0)>>>3;y=$J(m,z)|0;u=(S-(Ld[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](g)|0)|0)/(z|0)|0;v=Afa(u)|0;if(!v){AI(m);P=198;break a}w=v+u|0;k=$J(m,0)|0;d:do if(l<<16>>16){s=(j|0)==0;t=v;l=w;q=0;j=0;while(1){if(l>>>0>=w>>>0){ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,1,u,g)|0;l=v}h=l+1|0;n=d[l>>0]|0;r=(n&127)+1|0;if((k+((ea(r,A)|0)+q)|0)>>>0>y>>>0)break;if(n&128){if((l+3|0)>>>0>=w>>>0){Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0-(u+(t-h))|0,1)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,1,u,g)|0;h=v}l=h+2|0;if(s){p=0;n=j;do{b[k+q>>1]=e[h>>1]&32767;q=q+A|0;if((q|0)>=(x|0)){n=n+1|0;k=$J(m,n)|0;q=0}p=p+1|0}while((p|0)<(r|0));h=q}else{p=0;n=j;do{S=e[h>>1]|0;a[k+q>>0]=(((S&31)*255|0)>>>0)/31|0;a[k+(q+1)>>0]=(((S>>>5&31)*255|0)>>>0)/31|0;a[k+(q+2)>>0]=(((S>>>10&31)*255|0)>>>0)/31|0;q=q+A|0;if((q|0)>=(x|0)){n=n+1|0;k=$J(m,n)|0;q=0}p=p+1|0}while((p|0)<(r|0));h=q}}else{l=h;o=0;h=q;n=j;do{if((l+2|0)>>>0>>0)q=l;else{Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0-(u+(t-l))|0,1)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,1,u,g)|0;q=v}l=q+2|0;p=k+h|0;q=e[q>>1]|0;if(s)b[p>>1]=q&32767;else{a[p>>0]=(((q&31)*255|0)>>>0)/31|0;a[k+(h+1)>>0]=(((q>>>5&31)*255|0)>>>0)/31|0;a[k+(h+2)>>0]=(((q>>>10&31)*255|0)>>>0)/31|0}h=h+A|0;if((h|0)>=(x|0)){n=n+1|0;k=$J(m,n)|0;h=0}o=o+1|0}while((o|0)<(r|0))}if((n|0)<(z|0)){q=h;j=n}else break d}yJ(c[80802]|0,323256,U)}while(0);Bfa(v);P=198;break a}else{AI(m);m=0;break a}}break}case 24:{q=O+14|0;m=xI(w,(d[Q>>0]|d[Q+1>>0]<<8)&65535,(d[q>>0]|d[q+1>>0]<<8)&65535,k,16711680,65280,255)|0;if(!m){Y=kc(4)|0;c[Y>>2]=323312;xd(Y|0,378680,0)}if(((c[X>>2]|0)!=0?(L=a[L>>0]|0,r=L&255,L<<24>>24!=0):0)?(u=b[M>>1]|0,M=u&255,t=(ea(M,r)|0)>>>3,u=yI(M,(u&65535)>>>8&65535,r,0,0,0)|0,(u|0)!=0):0){l=a[K>>0]|0;if(l<<24>>24){k=(l&255)+-1|0;h=0;n=c[X>>2]|0;while(1){Aga($J(u,k-h|0)|0,n|0,t|0)|0;h=h+1|0;if((h&255)<<24>>24==l<<24>>24)break;else n=n+t|0}}NI(m,u)|0;AI(u)}if(!N){l=d[O+2>>0]|0;if((l|0)==10){h=d[q>>0]|d[q+1>>0]<<8;z=h&65535;x=(((d[Q>>0]|d[Q+1>>0]<<8)&65535)*24|0)>>>3;y=$J(m,z)|0;u=(S-(Ld[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](g)|0)|0)/(z|0)|0;v=Afa(u)|0;if(!v){AI(m);P=198;break a}w=v+u|0;l=$J(m,0)|0;e:do if(h<<16>>16){t=v;k=w;q=0;r=0;while(1){if(k>>>0>=w>>>0){ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,1,u,g)|0;k=v}h=k+1|0;n=d[k>>0]|0;s=(n&127)+1|0;if((l+((s*3|0)+q)|0)>>>0>y>>>0)break;if(!(n&128)){k=h;p=0;n=r;while(1){if((k+3|0)>>>0>>0)h=k;else{Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0-(u+(t-k))|0,1)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,1,u,g)|0;h=v}k=h+3|0;a[l+q>>0]=a[h>>0]|0;a[l+(q+1)>>0]=a[h+1>>0]|0;a[l+(q+2)>>0]=a[h+2>>0]|0;h=q+3|0;if((h|0)>=(x|0)){n=n+1|0;l=$J(m,n)|0;h=0}p=p+1|0;if((p|0)>=(s|0))break;else q=h}}else{if((k+4|0)>>>0>=w>>>0){Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0-(u+(t-h))|0,1)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,1,u,g)|0;h=v}k=h+3|0;p=h+1|0;o=h+2|0;j=0;n=r;do{a[l+q>>0]=a[h>>0]|0;a[l+(q+1)>>0]=a[p>>0]|0;a[l+(q+2)>>0]=a[o>>0]|0;q=q+3|0;if((q|0)>=(x|0)){n=n+1|0;l=$J(m,n)|0;q=0}j=j+1|0}while((j|0)<(s|0));h=q}if((n|0)<(z|0)){q=h;r=n}else break e}yJ(c[80802]|0,323256,U)}while(0);Bfa(v);P=198;break a}else if((l|0)==2){N1(m,(d[Q>>0]|d[Q+1>>0]<<8)&65535,(d[q>>0]|d[q+1>>0]<<8)&65535,p,f,g,1);P=198;break a}else{AI(m);m=0;break a}}break}case 32:{o=j&1;B=(o|0)==0;p=O+14|0;m=xI(w,(d[Q>>0]|d[Q+1>>0]<<8)&65535,(d[p>>0]|d[p+1>>0]<<8)&65535,(o<<3^8)+24|0,16711680,65280,255)|0;if(!m){Y=kc(4)|0;c[Y>>2]=323312;xd(Y|0,378680,0)}if(((c[X>>2]|0)!=0?(L=a[L>>0]|0,s=L&255,L<<24>>24!=0):0)?(l=b[M>>1]|0,M=l&255,z=(ea(M,s)|0)>>>3,l=yI(M,(l&65535)>>>8&65535,s,0,0,0)|0,(l|0)!=0):0){k=a[K>>0]|0;if(k<<24>>24){h=(k&255)+-1|0;n=0;q=c[X>>2]|0;while(1){Aga($J(l,h-n|0)|0,q|0,z|0)|0;n=n+1|0;if((n&255)<<24>>24==k<<24>>24)break;else q=q+z|0}}if(!B){M=uJ(l)|0;AI(l);l=M}NI(m,l)|0;AI(l)}if(!N){l=d[O+2>>0]|0;if((l|0)==10){k=d[p>>0]|d[p+1>>0]<<8;z=k&65535;A=4-o|0;y=(d[Q>>0]|d[Q+1>>0]<<8)&65535;x=Fga(o|0,0,3)|0;x=Iga(x^8|0,I|0,24,0)|0;x=Tga(y|0,0,x|0,I|0)|0;x=Lga(x|0,I|0,3)|0;y=$J(m,z)|0;u=(S-(Ld[(d[R>>0]|d[R+1>>0]<<8|d[R+2>>0]<<16|d[R+3>>0]<<24)&511](g)|0)|0)/(z|0)|0;v=Afa(u)|0;if(!v){AI(m);P=198;break a}w=v+u|0;l=$J(m,0)|0;f:do if(k<<16>>16){t=v;k=w;p=0;q=0;while(1){if(k>>>0>=w>>>0){ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,1,u,g)|0;k=v}h=k+1|0;n=d[k>>0]|0;s=(n&127)+1|0;if((l+((ea(s,A)|0)+p)|0)>>>0>y>>>0)break;if(!(n&128)){k=h;o=0;h=p;n=q;do{if((k+4|0)>>>0>>0)q=k;else{Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0-(u+(t-k))|0,1)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,1,u,g)|0;q=v}k=q+4|0;p=l+h|0;if(B)c[p>>2]=c[q>>2];else{a[p>>0]=a[q>>0]|0;a[l+(h+1)>>0]=a[q+1>>0]|0;a[l+(h+2)>>0]=a[q+2>>0]|0}h=h+A|0;if((h|0)>=(x|0)){n=n+1|0;l=$J(m,n)|0;h=0}o=o+1|0}while((o|0)<(s|0))}else{if((k+5|0)>>>0>=w>>>0){Od[(d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24)&255](g,0-(u+(t-h))|0,1)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,1,u,g)|0;h=v}k=h+4|0;o=h+1|0;j=h+2|0;r=0;n=q;while(1){q=l+p|0;if(B)c[q>>2]=c[h>>2];else{a[q>>0]=a[h>>0]|0;a[l+(p+1)>>0]=a[o>>0]|0;a[l+(p+2)>>0]=a[j>>0]|0}q=p+A|0;if((q|0)>=(x|0)){n=n+1|0;l=$J(m,n)|0;q=0}r=r+1|0;if((r|0)>=(s|0)){h=q;break}else p=q}}if((n|0)<(z|0)){p=h;q=n}else break f}yJ(c[80802]|0,323256,U)}while(0);Bfa(v);P=198;break a}else if((l|0)==2){N1(m,(d[Q>>0]|d[Q+1>>0]<<8)&65535,(d[p>>0]|d[p+1>>0]<<8)&65535,4,f,g,o);P=198;break a}else{AI(m);m=0;break a}}break}default:{m=0;P=198}}while(0);if((P|0)==198){if(!W)VL(m)|0;if(!V)UL(m)|0}l=c[X>>2]|0;if(!l){f=m;i=Y;return f|0}Bfa(l);f=m;i=Y;return f|0} +function Aw(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+48|0;s=t+24|0;k=t+36|0;l=t+32|0;m=t+28|0;n=t+16|0;o=t+8|0;p=t;r=a+16|0;j=r;f=c[j>>2]|0;j=c[j+4>>2]|0;if((f|0)==0&(j|0)==0){s=bN(a,1,1,0)|0;i=t;return s|0}q=a+12|0;do if(!(c[q>>2]&524288)){d=a+428|0;b=c[d>>2]|0;if((b|0)==(f|0)&0==(j|0)){c[d>>2]=0;b=r;c[b>>2]=0;c[b+4>>2]=0;b=a+628|0;ce[c[a+640>>2]&255](c[b>>2]|0,4,0,0)|0;if((Od[c[a+636>>2]&255](c[b>>2]|0,d,4)|0)==4)break;Dw(c[b>>2]|0,c[a>>2]|0,117728,s);s=0;i=t;return s|0}g=a+640|0;h=a+628|0;d=a+632|0;while(1){p=ce[c[g>>2]&255](c[h>>2]|0,b,0,0)|0;if(!((p|0)==(b|0)&(I|0)==0)){b=10;break}if((Od[c[d>>2]&255](c[h>>2]|0,k,2)|0)!=2){b=10;break}if(c[q>>2]&128)Fx(k);f=b+2|0;ce[c[g>>2]&255](c[h>>2]|0,((e[k>>1]|0)*12|0)+f|0,0,0)|0;if((Od[c[d>>2]&255](c[h>>2]|0,l,4)|0)!=4){b=14;break}if(c[q>>2]&128)Gx(l);b=c[l>>2]|0;p=r;if((b|0)==(c[p>>2]|0)?0==(c[p+4>>2]|0):0){b=18;break}}if((b|0)==10){Dw(c[h>>2]|0,117704,117760,s);s=0;i=t;return s|0}else if((b|0)==14){Dw(c[h>>2]|0,117704,117792,s);s=0;i=t;return s|0}else if((b|0)==18){c[m>>2]=0;ce[c[g>>2]&255](c[h>>2]|0,((e[k>>1]|0)*12|0)+f|0,0,0)|0;if((Od[c[a+636>>2]&255](c[h>>2]|0,m,4)|0)==4){s=r;c[s>>2]=0;c[s+4>>2]=0;break}Dw(c[h>>2]|0,117704,117824,s);s=0;i=t;return s|0}}else{d=a+432|0;g=d;b=c[g>>2]|0;g=c[g+4>>2]|0;if((b|0)==(f|0)&(g|0)==(j|0)){b=d;c[b>>2]=0;c[b+4>>2]=0;b=r;c[b>>2]=0;c[b+4>>2]=0;b=a+628|0;ce[c[a+640>>2]&255](c[b>>2]|0,8,0,0)|0;if((Od[c[a+636>>2]&255](c[b>>2]|0,d,8)|0)==8)break;Dw(c[b>>2]|0,c[a>>2]|0,117728,s);s=0;i=t;return s|0}k=a+640|0;l=a+628|0;j=a+632|0;h=b;while(1){m=ce[c[k>>2]&255](c[l>>2]|0,h,g,0)|0;if(!((m|0)==(h|0)&(I|0)==(g|0))){b=27;break}if((Od[c[j>>2]&255](c[l>>2]|0,n,8)|0)!=8){b=27;break}if(c[q>>2]&128)Hx(n);m=n;b=c[m>>2]|0;m=c[m+4>>2]|0;if(m>>>0>0|(m|0)==0&b>>>0>65535){b=31;break}u=c[k>>2]|0;m=c[l>>2]|0;d=Iga(h|0,g|0,8,0)|0;d=Iga(d|0,I|0,(b&65535)*20|0,0)|0;f=I;ce[u&255](m,d,f,0)|0;if((Od[c[j>>2]&255](c[l>>2]|0,o,8)|0)!=8){b=33;break}if(c[q>>2]&128)Hx(o);g=o;h=c[g>>2]|0;g=c[g+4>>2]|0;u=r;if((h|0)==(c[u>>2]|0)?(g|0)==(c[u+4>>2]|0):0){b=37;break}}if((b|0)==27){Dw(c[l>>2]|0,117704,117760,s);u=0;i=t;return u|0}else if((b|0)==31){Dw(c[l>>2]|0,117704,117856,s);u=0;i=t;return u|0}else if((b|0)==33){Dw(c[l>>2]|0,117704,117792,s);u=0;i=t;return u|0}else if((b|0)==37){u=p;c[u>>2]=0;c[u+4>>2]=0;ce[c[k>>2]&255](c[l>>2]|0,d,f,0)|0;if((Od[c[a+636>>2]&255](c[l>>2]|0,p,8)|0)==8){u=r;c[u>>2]=0;c[u+4>>2]=0;break}Dw(c[l>>2]|0,117704,117824,s);u=0;i=t;return u|0}}while(0);u=bN(a,1,1,0)|0;i=t;return u|0}function Bw(a,d,f,g,h){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+64|0;E=F+24|0;r=F+56|0;D=F+36|0;s=F+60|0;x=F+58|0;z=F+16|0;A=F+8|0;o=F;u=F+32|0;b[s>>1]=0;b[x>>1]=0;q=z;c[q>>2]=0;c[q+4>>2]=0;q=A;c[q>>2]=0;c[q+4>>2]=0;q=d&65535;kw(a,q,0)|0;y=a+12|0;if(c[y>>2]&2048){Dw(c[a+628>>2]|0,117912,117928,E);E=0;i=F;return E|0}l=a+16|0;k=l;j=c[k>>2]|0;k=c[k+4>>2]|0;if((j|0)==0&(k|0)==0){Dw(c[a+628>>2]|0,117912,117992,E);E=0;i=F;return E|0}B=a+640|0;C=a+628|0;m=ce[c[B>>2]&255](c[C>>2]|0,j,k,0)|0;n=I;w=l;if(!((m|0)==(c[w>>2]|0)?(n|0)==(c[w+4>>2]|0):0)){D=c[C>>2]|0;c[E>>2]=c[a>>2];Dw(D,117912,118056,E);E=0;i=F;return E|0}p=a+632|0;j=c[p>>2]|0;k=c[C>>2]|0;if(!(c[y>>2]&524288)){if((Od[j&255](k,r,2)|0)!=2){D=c[C>>2]|0;c[E>>2]=c[a>>2];Dw(D,117912,118096,E);E=0;i=F;return E|0}if(c[y>>2]&128)Fx(r);j=Iga(m|0,n|0,2,0)|0;m=I;k=12;t=18}else{if((Od[j&255](k,o,8)|0)!=8){D=c[C>>2]|0;c[E>>2]=c[a>>2];Dw(D,117912,118096,E);E=0;i=F;return E|0}if(c[y>>2]&128)Hx(o);l=c[o>>2]&65535;b[r>>1]=l;v=Iga(m|0,n|0,8,0)|0;m=I;w=20}while(1){if((t|0)==18){t=0;l=b[r>>1]|0;v=j;w=k}if(!(l<<16>>16)){t=26;break}if((Od[c[p>>2]&255](c[C>>2]|0,D,w)|0)!=(w|0)){t=21;break}j=b[D>>1]|0;b[s>>1]=j;if(c[y>>2]&128){Fx(s);j=b[s>>1]|0}if(j<<16>>16==d<<16>>16)break;j=Iga(v|0,m|0,w|0,0)|0;m=I;k=w;t=18}if((t|0)==21){D=c[C>>2]|0;c[E>>2]=c[a>>2];Dw(D,117912,118136,E);E=0;i=F;return E|0}if((t|0)==26?(b[s>>1]|0)!=d<<16>>16:0){D=c[C>>2]|0;c[E>>2]=c[a>>2];c[E+4>>2]=q;Dw(D,117912,118176,E);E=0;i=F;return E|0}n=D+2|0;b[x>>1]=b[n>>1]|0;j=c[y>>2]|0;if(j&128){Fx(x);j=c[y>>2]|0}o=D+4|0;if(j&524288){t=o;d=t;t=t+4|0;t=e[t>>1]|e[t+2>>1]<<16;u=z;c[u>>2]=e[d>>1]|e[d+2>>1]<<16;c[u+4>>2]=t;if(j&128){Hx(z);j=c[y>>2]|0}t=D+12|0;d=t;t=t+4|0;t=e[t>>1]|e[t+2>>1]<<16;u=A;c[u>>2]=e[d>>1]|e[d+2>>1]<<16;c[u+4>>2]=t;if(j&128)Hx(A)}else{k=e[o>>1]|e[o+2>>1]<<16;c[u>>2]=k;if(!(j&128))l=j;else{Gx(u);k=c[u>>2]|0;l=c[y>>2]|0}j=z;c[j>>2]=k;c[j+4>>2]=0;j=D+8|0;j=e[j>>1]|e[j+2>>1]<<16;c[u>>2]=j;if(l&128){Gx(u);j=c[u>>2]|0}u=A;c[u>>2]=j;c[u+4>>2]=0}do if((lw(f)|0)==8?(c[y>>2]&524288|0)==0:0)if((f|0)==18){l=13;break}else if((f|0)==17){l=9;break}else if((f|0)==16){l=4;break}else{l=f;break}else l=f;while(0);k=Av(a,g,lw(l)|0,118208)|0;if(!k){E=0;i=F;return E|0}a:do if((l|0)==(f|0))Aga(k|0,h|0,ea(lw(f)|0,g)|0)|0;else{if((l|0)==9&(f|0)==17){if((g|0)<=0)break;j=0;while(1){f=h+(j<<3)|0;u=c[f>>2]|0;f=c[f+4>>2]|0;c[k+(j<<2)>>2]=u;j=j+1|0;if(!((u|0)==(u|0)&(((u|0)<0)<<31>>31|0)==(f|0)))break;if((j|0)>=(g|0))break a}KK(k);Dw(c[C>>2]|0,117912,118232,E);E=0;i=F;return E|0}if((l|0)==4&(f|0)==16){if((g|0)<=0)break}else if(!((l|0)==13&(f|0)==18&(g|0)>0))break;j=0;while(1){f=h+(j<<3)|0;u=c[f>>2]|0;f=c[f+4>>2]|0;c[k+(j<<2)>>2]=u;j=j+1|0;if(!((u|0)==(u|0)&0==(f|0)))break;if((j|0)>=(g|0))break a}KK(k);Dw(c[C>>2]|0,117912,118232,E);E=0;i=F;return E|0}while(0);do if((lw(l)|0)>1?(c[y>>2]&128|0)!=0:0){if((lw(l)|0)==2){Ix(k,g);break}if((lw(l)|0)==4){Kx(k,g);break}if((lw(l)|0)==8)Lx(k,g)}while(0);h=(c[y>>2]&524288|0)==0;j=ea(lw(l)|0,g)|0;if(h)if((j|0)<5){h=Iga(v|0,m|0,8,0)|0;j=A;c[j>>2]=h;c[j+4>>2]=I;j=1}else j=0;else if((j|0)<9){h=Iga(v|0,m|0,12,0)|0;j=A;c[j>>2]=h;c[j+4>>2]=I;j=1}else j=0;h=z;if(((c[h>>2]|0)==(g|0)?(c[h+4>>2]|0)==(((g|0)<0)<<31>>31|0):0)?(b[x>>1]|0)==(l&65535)<<16>>16:0){D=A;B=ce[c[B>>2]&255](c[C>>2]|0,c[D>>2]|0,c[D+4>>2]|0,0)|0;D=A;if(!((B|0)==(c[D>>2]|0)?(I|0)==(c[D+4>>2]|0):0)){KK(k);D=c[C>>2]|0;c[E>>2]=c[a>>2];Dw(D,117912,118056,E);E=0;i=F;return E|0}B=c[a+636>>2]|0;D=c[C>>2]|0;a=ea(lw(l)|0,g)|0;a=Od[B&255](D,k,a)|0;a=(a|0)==(ea(lw(l)|0,g)|0);KK(k);if(a){E=1;i=F;return E|0}Dw(c[C>>2]|0,117912,117824,E);E=0;i=F;return E|0}if(!j){f=ce[c[B>>2]&255](c[C>>2]|0,0,0,2)|0;u=A;c[u>>2]=f;c[u+4>>2]=I;u=c[a+636>>2]|0;f=c[C>>2]|0;h=ea(lw(l)|0,g)|0;h=Od[u&255](f,k,h)|0;g=(h|0)==(ea(lw(l)|0,g)|0);KK(k);if(!g){Dw(c[C>>2]|0,117912,117824,E);E=0;i=F;return E|0}}else Aga(A|0,k|0,ea(lw(l)|0,g)|0)|0;k=l&65535;b[x>>1]=k;b[n>>1]=k;k=c[y>>2]|0;if(k&128){Fx(n);k=c[y>>2]|0}if(!(k&524288)){z=c[z>>2]|0;b[o>>1]=z;b[o+2>>1]=z>>>16;if(k&128){Gx(o);k=c[y>>2]|0}A=c[A>>2]|0;j=D+8|0;b[j>>1]=A;b[j+2>>1]=A>>>16;if(k&128)Gx(j)}else{x=z;h=c[x>>2]|0;x=c[x+4>>2]|0;z=o;g=z;b[g>>1]=h;b[g+2>>1]=h>>>16;z=z+4|0;b[z>>1]=x;b[z+2>>1]=x>>>16;if(k&128){Hx(o);k=c[y>>2]|0}j=D+12|0;z=A;x=c[z>>2]|0;z=c[z+4>>2]|0;A=j;y=A;b[y>>1]=x;b[y+2>>1]=x>>>16;A=A+4|0;b[A>>1]=z;b[A+2>>1]=z>>>16;if(k&128)Hx(j)}B=ce[c[B>>2]&255](c[C>>2]|0,v,m,0)|0;if(!((B|0)==(v|0)&(I|0)==(m|0))){D=c[C>>2]|0;c[E>>2]=c[a>>2];Dw(D,117912,118056,E);E=0;i=F;return E|0}if((Od[c[a+636>>2]&255](c[C>>2]|0,D,w)|0)==(w|0)){E=1;i=F;return E|0}D=c[C>>2]|0;c[E>>2]=c[a>>2];Dw(D,117912,118280,E);E=0;i=F;return E|0}function Cw(a,b){a=a|0;b=b|0;c[a+504>>2]=117;c[a+532>>2]=80;c[a+540>>2]=80;c[a+548>>2]=80;c[a+536>>2]=81;c[a+544>>2]=81;c[a+552>>2]=81;c[a+560>>2]=209;return 1}function Dw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g;c[f>>2]=e;e=c[80864]|0;if(e)$d[e&255](b,d,f);e=c[30066]|0;if(!e){i=g;return}de[e&63](a,b,d,f);i=g;return}function Ew(a){a=a|0;return c[a+224>>2]|0}function Fw(a,b){a=a|0;b=b|0;var d=0;d=i;if((b|0)>=0?(c[a+224>>2]|0)>(b|0):0)b=c[c[(c[a+228>>2]|0)+(b*12|0)>>2]>>2]|0;else b=-1;i=d;return b|0}function Gw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;if(!(f-e&4))o=f;else{c[f>>2]=0;o=f+4|0}if(o>>>0>e>>>0){f=0;do{h=c[e>>2]|0;if((h+f|0)>>>0>g>>>0|h>>>0>g>>>0){h=g-f|0;c[e>>2]=h}if(h){l=f>>>3;j=b+l|0;k=f&7;m=8-k|0;if(h>>>0>m>>>0){if(k){a[j>>0]=(d[j>>0]|0)&255<>>3;if(k){if(h>>>0>63){while(1){if(!(j&3))break;l=j+1|0;a[j>>0]=0;k=k+-1|0;if(!k){j=l;k=0;break}else j=l}m=k>>>2;l=m<<2;Cga(j|0,0,l|0)|0;j=j+l|0;k=k-(m<<2)|0}switch(k|0){case 3:{p=20;break}case 1:{p=22;break}case 4:{p=19;break}case 7:{a[j+6>>0]=0;p=17;break}case 5:{p=18;break}case 2:{p=21;break}case 6:{p=17;break}default:{}}if((p|0)==17){a[j+5>>0]=0;p=18}if((p|0)==18){a[j+4>>0]=0;p=19}if((p|0)==19){a[j+3>>0]=0;p=20}if((p|0)==20){a[j+2>>0]=0;p=21}if((p|0)==21){a[j+1>>0]=0;p=22}if((p|0)==22){p=0;a[j>>0]=0;j=j+k|0}h=h&7}if(h)a[j>>0]=(d[j>>0]|0)&255>>>h}else a[j>>0]=((d[121584+h>>0]|0)>>>k^255)&(d[j>>0]|0);f=(c[e>>2]|0)+f|0}n=e+4|0;h=c[n>>2]|0;if((h+f|0)>>>0>g>>>0|h>>>0>g>>>0){h=g-f|0;c[n>>2]=h}if(h){l=f>>>3;j=b+l|0;k=f&7;m=8-k|0;if(h>>>0>m>>>0){if(k){a[j>>0]=d[j>>0]|0|255>>>k;j=b+(l+1)|0;h=h-m|0}l=h>>>3;if(l){if(h>>>0>63){while(1){if(!(j&3))break;k=j+1|0;a[j>>0]=-1;l=l+-1|0;if(!l){j=k;l=0;break}else j=k}m=l>>>2;k=m<<2;Cga(j|0,-1,k|0)|0;j=j+k|0;l=l-(m<<2)|0}switch(l|0){case 6:{p=41;break}case 2:{p=45;break}case 3:{p=44;break}case 5:{p=42;break}case 7:{a[j+6>>0]=-1;p=41;break}case 4:{p=43;break}case 1:{p=46;break}default:{}}if((p|0)==41){a[j+5>>0]=-1;p=42}if((p|0)==42){a[j+4>>0]=-1;p=43}if((p|0)==43){a[j+3>>0]=-1;p=44}if((p|0)==44){a[j+2>>0]=-1;p=45}if((p|0)==45){a[j+1>>0]=-1;p=46}if((p|0)==46){p=0;a[j>>0]=-1;j=j+l|0}h=h&7}if(h)a[j>>0]=d[j>>0]|0|65280>>>h}else a[j>>0]=d[j>>0]|0|(d[121584+h>>0]|0)>>>k;f=(c[n>>2]|0)+f|0}e=e+8|0}while(e>>>0>>0)}else f=0;if((f|0)==(g|0)){i=q;return}else Sa(121600,121616,452,121648)}function Hw(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;b=d;if(!(gN(a)|0)){a=1;i=d;return a|0}if(!(jw(a,121672,1)|0)){Dw(c[a+628>>2]|0,121712,121736,b);a=0;i=d;return a|0}else{c[b>>2]=1;a=Xv(a,65536,b)|0;i=d;return a|0}return 0}function Iw(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;b=d;if(!(gN(a)|0)){a=0;i=d;return a|0}if(!(jw(a,121784,1)|0)){Dw(c[a+628>>2]|0,121824,121848,b);a=0;i=d;return a|0}else{c[a+532>>2]=82;c[a+540>>2]=82;c[a+548>>2]=82;c[a+536>>2]=83;c[a+544>>2]=83;c[a+552>>2]=83;c[a+528>>2]=118;c[b>>2]=1;a=Xv(a,65536,b)|0;i=d;return a|0}return 0}function Jw(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;b=d;if(!(gN(a)|0)){a=0;i=d;return a|0}c[a+532>>2]=84;c[a+540>>2]=84;c[a+548>>2]=84;c[b>>2]=7;a=Xv(a,65536,b)|0;i=d;return a|0}function Kw(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;b=d;if(!(gN(a)|0)){a=0;i=d;return a|0}c[a+532>>2]=84;c[a+540>>2]=84;c[a+548>>2]=84;c[b>>2]=11;a=Xv(a,65536,b)|0;i=d;return a|0}function Lw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j;g=j+8|0;h=j+4|0;d=a+8|0;if(!(c[d>>2]|0)){a=1;i=j;return a|0}f=a+12|0;b=c[f>>2]|0;do if(b&64){if((b&4096|0)!=0?(c[f>>2]=b&-4097,(Ld[c[a+528>>2]&511](a)|0)==0):0){a=0;i=j;return a|0}if(!(cy(a)|0)){a=0;i=j;return a|0}else{b=c[f>>2]|0;break}}while(0);do if((b&2097160|0)==2097152?(c[d>>2]|0)==2:0){c[g>>2]=0;c[h>>2]=0;if(!(ex(a)|0)){c[e>>2]=g;if(!(Zv(a,273,e)|0))break;c[e>>2]=h;if(!(Zv(a,279,e)|0))break;b=a+168|0;if(!(Bw(a,273,16,c[b>>2]|0,c[g>>2]|0)|0))break;if(!(Bw(a,279,16,c[b>>2]|0,c[h>>2]|0)|0))break;c[f>>2]=c[f>>2]&-2097217;a=1;i=j;return a|0}else{c[e>>2]=g;if(!(Zv(a,324,e)|0))break;c[e>>2]=h;if(!(Zv(a,325,e)|0))break;b=a+168|0;if(!(Bw(a,324,16,c[b>>2]|0,c[g>>2]|0)|0))break;if(!(Bw(a,325,16,c[b>>2]|0,c[h>>2]|0)|0))break;c[f>>2]=c[f>>2]&-2097217;a=1;i=j;return a|0}}while(0);if((c[f>>2]&2097160|0)!=0?(Aw(a)|0)==0:0){a=0;i=j;return a|0}a=1;i=j;return a|0}function Mw(a){a=a|0;var b=0,d=0,e=0;e=i;b=a+12|0;d=c[b>>2]|0;if(!(d&64)){a=1;i=e;return a|0}if((d&4096|0)!=0?(c[b>>2]=d&-4097,(Ld[c[a+528>>2]&511](a)|0)==0):0){a=0;i=e;return a|0}a=cy(a)|0;i=e;return a|0}function Nw(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;o=p;h=p+22|0;l=p+20|0;if(!(c[d+500>>2]|0)){g=f+0|0;h=223392;j=g+54|0;do{a[g>>0]=a[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(j|0));o=0;i=p;return o|0}n=d+84|0;g=e[n>>1]|0;switch(g|0){case 16:case 8:case 4:case 2:case 1:break;default:{c[o>>2]=g;fga(f,223448,o)|0;o=0;i=p;return o|0}}m=d+98|0;j=(e[m>>1]|0)-(e[d+156>>1]|0)|0;c[o>>2]=h;do if(!(Zv(d,262,o)|0))if((j|0)==1){b[h>>1]=1;g=1;break}else if((j|0)==3){b[h>>1]=2;g=2;break}else{c[o>>2]=223528;fga(f,223504,o)|0;o=0;i=p;return o|0}else g=b[h>>1]|0;while(0);k=g&65535;if((k|0)==32844){if((b[d+88>>1]|0)==-30860){o=1;i=p;return o|0}c[o>>2]=223824;c[o+4>>2]=34676;fga(f,223784,o)|0;o=0;i=p;return o|0}else if((k|0)==8){h=b[m>>1]|0;g=b[n>>1]|0;if(h<<16>>16==3&g<<16>>16==8){o=1;i=p;return o|0}c[o>>2]=223640;c[o+4>>2]=h&65535;c[o+8>>2]=224056;c[o+12>>2]=g&65535;fga(f,224e3,o)|0;o=0;i=p;return o|0}else if((k|0)==5){c[o>>2]=l;Cv(d,332,o)|0;g=b[l>>1]|0;if(g<<16>>16!=1){c[o>>2]=223776;c[o+4>>2]=g&65535;fga(f,223720,o)|0;o=0;i=p;return o|0}g=b[m>>1]|0;if((g&65535)>=4){o=1;i=p;return o|0}c[o>>2]=223640;c[o+4>>2]=g&65535;fga(f,223720,o)|0;o=0;i=p;return o|0}else if((k|0)==32845){if((b[d+88>>1]&-2)<<16>>16!=-30860){c[o>>2]=223824;c[o+4>>2]=34676;c[o+8>>2]=34677;fga(f,223840,o)|0;o=0;i=p;return o|0}g=b[d+126>>1]|0;if(g<<16>>16!=1){c[o>>2]=223936;c[o+4>>2]=g&65535;fga(f,223888,o)|0;o=0;i=p;return o|0}g=b[m>>1]|0;if(g<<16>>16==3){o=1;i=p;return o|0}c[o>>2]=223640;c[o+4>>2]=g&65535;fga(f,223960,o)|0;o=0;i=p;return o|0}else if((k|0)==2){if((j|0)>=3){o=1;i=p;return o|0}c[o>>2]=223704;c[o+4>>2]=j;fga(f,223656,o)|0;o=0;i=p;return o|0}else if((k|0)==6){o=1;i=p;return o|0}else if((k|0)==3|(k|0)==1|(k|0)==0){if((b[d+126>>1]|0)!=1){o=1;i=p;return o|0}h=b[m>>1]|0;if(h<<16>>16==1){o=1;i=p;return o|0}g=b[n>>1]|0;if((g&65535)>=8){o=1;i=p;return o|0}c[o>>2]=223528;c[o+4>>2]=k;c[o+8>>2]=223640;c[o+12>>2]=h&65535;c[o+16>>2]=g&65535;fga(f,223560,o)|0;o=0;i=p;return o|0}else{c[o>>2]=223528;c[o+4>>2]=k;fga(f,223960,o)|0;o=0;i=p;return o|0}return 0}function Ow(a){a=a|0;var b=0,d=0,e=0;e=i;b=a+56|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}b=a+60|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}b=a+64|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}d=a+68|0;b=c[d>>2]|0;if(b){KK(b);c[d>>2]=0}b=a+72|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}b=a+76|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}b=a+80|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}b=a+36|0;d=c[b>>2]|0;if(!d){i=e;return}KK(d);d=a+40|0;KK(c[d>>2]|0);a=a+44|0;KK(c[a>>2]|0);c[a>>2]=0;c[d>>2]=0;c[b>>2]=0;i=e;return}function Pw(d,f,h,j){d=d|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0;H=i;i=i+64|0;D=H;B=H+44|0;C=H+20|0;x=H+60|0;y=H+58|0;m=H+48|0;k=H+62|0;v=H+54|0;l=H+52|0;q=H+40|0;p=H+36|0;o=H+32|0;n=H+56|0;c[d+84>>2]=0;c[d+88>>2]=0;E=d+36|0;c[E>>2]=0;F=d+40|0;c[F>>2]=0;G=d+44|0;c[G>>2]=0;b[d+30>>1]=4;c[d>>2]=f;c[d+4>>2]=h;z=d+24|0;c[D>>2]=z;Cv(f,258,D)|0;h=e[z>>1]|0;a:do switch(h|0){case 16:case 8:case 4:case 2:case 1:{A=d+12|0;c[A>>2]=0;w=d+26|0;c[D>>2]=w;Cv(f,277,D)|0;c[D>>2]=k;c[D+4>>2]=m;Cv(f,338,D)|0;do if(b[k>>1]|0){h=e[c[m>>2]>>1]|0;if((h|0)==2|(h|0)==1){c[A>>2]=h;break}else if(h)break;if((e[w>>1]|0)>3)c[A>>2]=1}while(0);u=d+32|0;c[D>>2]=u;if(!(Zv(f,262,D)|0))b[u>>1]=0;h=b[k>>1]|0;m=b[w>>1]|0;if(!(h<<16>>16))if(m<<16>>16==4)if((b[u>>1]|0)==2){c[A>>2]=1;b[k>>1]=1;m=4;h=1}else{m=4;h=0}else h=0;m=(m&65535)-(h&65535)|0;c[D>>2]=l;Cv(f,259,D)|0;c[D>>2]=v;Cv(f,284,D)|0;c[D>>2]=u;do if(!(Zv(f,262,D)|0))if((m|0)==3){b[u>>1]=2;h=2;break}else if((m|0)==1){c[D>>2]=B;Zv(f,259,D)|0;k=b[B>>1]|0;if(k<<16>>16==-32765|k<<16>>16==2|k<<16>>16==4|k<<16>>16==3){b[u>>1]=0;h=0;break}else{b[u>>1]=1;h=1;break}}else{c[D>>2]=223528;fga(j,223504,D)|0;break a}else h=b[u>>1]|0;while(0);h=h&65535;do if((h|0)==2){if((m|0)<3){c[D>>2]=223704;c[D+4>>2]=m;fga(j,223656,D)|0;break a}}else if((h|0)==32844)if((b[l>>1]|0)==-30860){c[D>>2]=3;Xv(f,65560,D)|0;b[u>>1]=1;b[z>>1]=8;break}else{c[D>>2]=223824;c[D+4>>2]=34676;fga(j,223784,D)|0;break a}else if((h|0)==5){c[D>>2]=n;Cv(f,332,D)|0;h=b[n>>1]|0;if(h<<16>>16!=1){c[D>>2]=223776;c[D+4>>2]=h&65535;fga(j,223720,D)|0;break a}h=b[w>>1]|0;if((h&65535)<4){c[D>>2]=223640;c[D+4>>2]=h&65535;fga(j,223720,D)|0;break a}}else if((h|0)==32845){if((b[l>>1]&-2)<<16>>16!=-30860){c[D>>2]=223824;c[D+4>>2]=34676;c[D+8>>2]=34677;fga(j,223840,D)|0;break a}h=b[v>>1]|0;if(h<<16>>16==1){c[D>>2]=3;Xv(f,65560,D)|0;b[u>>1]=2;b[z>>1]=8;break}c[D>>2]=223936;c[D+4>>2]=h&65535;fga(j,223888,D)|0;G=0;i=H;return G|0}else if((h|0)==1|(h|0)==0)r=29;else if((h|0)==3){c[D>>2]=q;c[D+4>>2]=p;c[D+8>>2]=o;if(!(Zv(f,320,D)|0)){h=j+0|0;k=224072;l=h+32|0;do{a[h>>0]=a[k>>0]|0;h=h+1|0;k=k+1|0}while((h|0)<(l|0));break a}h=2<>1];c[E>>2]=JK(h)|0;c[F>>2]=JK(h)|0;n=JK(h)|0;c[G>>2]=n;m=c[E>>2]|0;if((m|0)!=0?!((c[F>>2]|0)==0|(n|0)==0):0){NK(m,c[q>>2]|0,h);NK(c[F>>2]|0,c[p>>2]|0,h);NK(c[G>>2]|0,c[o>>2]|0,h);r=29;break}h=j+0|0;k=224104;l=h+32|0;do{a[h>>0]=a[k>>0]|0;h=h+1|0;k=k+1|0}while((h|0)<(l|0));break a}else if((h|0)==6){if((b[v>>1]|0)==1&(b[l>>1]|0)==7){c[D>>2]=1;Xv(f,65538,D)|0;b[u>>1]=2}}else if((h|0)!=8){c[D>>2]=223528;c[D+4>>2]=h;fga(j,223960,D)|0;break a}while(0);if((((r|0)==29?(b[v>>1]|0)==1:0)?(p=b[w>>1]|0,s=p&65535,p<<16>>16!=1):0)?(t=b[z>>1]|0,(t&65535)<8):0){d=e[u>>1]|0;c[D>>2]=223528;c[D+4>>2]=d;c[D+8>>2]=223640;c[D+12>>2]=s;c[D+16>>2]=t&65535;fga(j,223560,D)|0;break a}h=d+56|0;m=d+72|0;p=d+76|0;l=d+80|0;c[h+0>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;c[h+24>>2]=0;c[D>>2]=d+16;Zv(f,256,D)|0;c[D>>2]=d+20;Zv(f,257,D)|0;c[D>>2]=d+28;Cv(f,274,D)|0;if((b[v>>1]|0)==2){f=(e[w>>1]|0)<2;c[d+8>>2]=f&1;if(!f){o=(ex(c[d>>2]|0)|0)!=0;n=d+48|0;c[n>>2]=o?88:87;o=d+52|0;c[o>>2]=0;b:do switch(e[u>>1]|0){case 2:case 1:case 0:{h=e[z>>1]|0;if((h|0)==8){h=c[A>>2]|0;if((h|0)==2){if(c[p>>2]|0)Sa(224440,224368,2690,224464);k=JK(65536)|0;c[p>>2]=k;if(!k){Dw(c[(c[d>>2]|0)+628>>2]|0,224464,224424,D);break b}else m=0;while(1){h=0;l=k;while(1){a[l>>0]=(((ea(h,m)|0)+127|0)>>>0)/255|0;h=h+1|0;if((h|0)==256)break;else l=l+1|0}m=m+1|0;if((m|0)==256)break;else k=k+256|0}c[o>>2]=2;break b}else if((h|0)==1){c[o>>2]=1;break b}else{c[o>>2]=3;break b}}else if((h|0)!=16)break b;h=c[A>>2]|0;if((h|0)==1){if(c[l>>2]|0)Sa(224336,224368,2712,224400);h=JK(65536)|0;c[l>>2]=h;if(!h){Dw(c[(c[d>>2]|0)+628>>2]|0,224400,224424,D);break b}else k=0;while(1){a[h>>0]=((k+128|0)>>>0)/257|0;k=k+1|0;if((k|0)==65536)break;else h=h+1|0}c[o>>2]=4;break b}k=(h|0)==2;if(c[l>>2]|0)Sa(224336,224368,2712,224400);h=JK(65536)|0;c[l>>2]=h;if(!h){Dw(c[(c[d>>2]|0)+628>>2]|0,224400,224424,D);h=0}else{m=0;while(1){a[h>>0]=((m+128|0)>>>0)/257|0;m=m+1|0;if((m|0)==65536){h=1;break}else h=h+1|0}}if(!k){if(!h)break b;c[o>>2]=6;break b}if(h){if(c[p>>2]|0)Sa(224440,224368,2690,224464);k=JK(65536)|0;c[p>>2]=k;if(!k){Dw(c[(c[d>>2]|0)+628>>2]|0,224464,224424,D);break b}else m=0;while(1){h=0;l=k;while(1){a[l>>0]=(((ea(h,m)|0)+127|0)>>>0)/255|0;h=h+1|0;if((h|0)==256)break;else l=l+1|0}m=m+1|0;if((m|0)==256)break;else k=k+256|0}c[o>>2]=5}break}case 6:{if((((b[z>>1]|0)==8?(b[w>>1]|0)==3:0)?(GN(d)|0)!=0:0)?(d=c[d>>2]|0,c[D>>2]=B,c[D+4>>2]=C,Cv(d,530,D)|0,(e[B>>1]<<4|e[C>>1]|0)==17):0)c[o>>2]=8;break}case 5:{if((b[z>>1]|0)==8?(b[w>>1]|0)==4:0){c[A>>2]=1;c[o>>2]=7}break}default:{}}while(0);if((c[n>>2]|0)!=0?(c[o>>2]|0)!=0:0){G=1;i=H;return G|0}h=j+0|0;k=224136;l=h+28|0;do{a[h>>0]=a[k>>0]|0;h=h+1|0;k=k+1|0}while((h|0)<(l|0));break a}}else c[d+8>>2]=1;r=(ex(c[d>>2]|0)|0)!=0;q=d+48|0;c[q>>2]=r?86:85;r=d+52|0;c[r>>2]=0;c:do switch(e[u>>1]|0){case 5:{if((tN(d)|0)!=0?(b[z>>1]|0)==8:0)if(!(c[h>>2]|0)){c[r>>2]=9;break c}else{c[r>>2]=10;break c}break}case 3:{if(tN(d)|0){h=e[z>>1]|0;if((h|0)==8){c[r>>2]=11;break c}else if((h|0)==4){c[r>>2]=12;break c}else if((h|0)==1){c[r>>2]=14;break c}else if((h|0)==2){c[r>>2]=13;break c}else break c}break}case 1:case 0:{if(tN(d)|0)switch(e[z>>1]|0){case 1:{c[r>>2]=20;break c}case 16:{c[r>>2]=15;break c}case 2:{c[r>>2]=19;break c}case 4:{c[r>>2]=18;break c}case 8:{if((c[A>>2]|0)!=0?(b[w>>1]|0)==2:0){c[r>>2]=16;break c}c[r>>2]=17;break c}default:break c}break}case 8:{if((tN(d)|0)!=0?(b[z>>1]|0)==8:0){if((c[m>>2]|0)==0?(A=JK(18124)|0,c[m>>2]=A,(A|0)==0):0){Dw(c[(c[d>>2]|0)+628>>2]|0,224568,224592,D);h=0}else{A=c[d>>2]|0;c[D>>2]=B;Cv(A,318,D)|0;g[C+4>>2]=100.0;B=c[B>>2]|0;A=B+4|0;g[C>>2]=+g[B>>2]/+g[A>>2]*100.0;I=+g[A>>2];g[C+8>>2]=(1.0-+g[B>>2]-I)/I*100.0;if((Hv(c[m>>2]|0,224640,C)|0)<0){Dw(c[(c[d>>2]|0)+628>>2]|0,224568,224728,D);KK(c[m>>2]|0);h=0}else h=28}c[r>>2]=h}break}case 6:{if(((b[z>>1]|0)==8?(b[w>>1]|0)==3:0)?(GN(d)|0)!=0:0){d=c[d>>2]|0;c[D>>2]=x;c[D+4>>2]=y;Cv(d,530,D)|0;switch(e[x>>1]<<4|e[y>>1]|0){case 65:{c[r>>2]=23;break c}case 17:{c[r>>2]=27;break c}case 68:{c[r>>2]=21;break c}case 18:{c[r>>2]=26;break c}case 34:{c[r>>2]=24;break c}case 33:{c[r>>2]=25;break c}case 66:{c[r>>2]=22;break c}default:break c}}break}case 2:{h=e[z>>1]|0;if((h|0)==8){h=c[A>>2]|0;if((h|0)==2){if(c[p>>2]|0)Sa(224440,224368,2690,224464);k=JK(65536)|0;c[p>>2]=k;if(!k){Dw(c[(c[d>>2]|0)+628>>2]|0,224464,224424,D);break c}else m=0;while(1){h=0;l=k;while(1){a[l>>0]=(((ea(h,m)|0)+127|0)>>>0)/255|0;h=h+1|0;if((h|0)==256)break;else l=l+1|0}m=m+1|0;if((m|0)==256)break;else k=k+256|0}c[r>>2]=4;break c}else if((h|0)==1){c[r>>2]=3;break c}else{c[r>>2]=5;break c}}else if((h|0)!=16)break c;h=c[A>>2]|0;if((h|0)==1){if(c[l>>2]|0)Sa(224336,224368,2712,224400);h=JK(65536)|0;c[l>>2]=h;if(!h){Dw(c[(c[d>>2]|0)+628>>2]|0,224400,224424,D);break c}else k=0;while(1){a[h>>0]=((k+128|0)>>>0)/257|0;k=k+1|0;if((k|0)==65536)break;else h=h+1|0}c[r>>2]=6;break c}k=(h|0)==2;if(c[l>>2]|0)Sa(224336,224368,2712,224400);h=JK(65536)|0;c[l>>2]=h;if(!h){Dw(c[(c[d>>2]|0)+628>>2]|0,224400,224424,D);h=0}else{m=0;while(1){a[h>>0]=((m+128|0)>>>0)/257|0;m=m+1|0;if((m|0)==65536){h=1;break}else h=h+1|0}}if(!k){if(!h)break c;c[r>>2]=8;break c}if(h){if(c[p>>2]|0)Sa(224440,224368,2690,224464);k=JK(65536)|0;c[p>>2]=k;if(!k){Dw(c[(c[d>>2]|0)+628>>2]|0,224464,224424,D);break c}else m=0;while(1){h=0;l=k;while(1){a[l>>0]=(((ea(h,m)|0)+127|0)>>>0)/255|0;h=h+1|0;if((h|0)==256)break;else l=l+1|0}m=m+1|0;if((m|0)==256)break;else k=k+256|0}c[r>>2]=7}break}default:{}}while(0);if((c[q>>2]|0)!=0?(c[r>>2]|0)!=0:0){G=1;i=H;return G|0}h=j+0|0;k=224136;l=h+28|0;do{a[h>>0]=a[k>>0]|0;h=h+1|0;k=k+1|0}while((h|0)<(l|0));break}default:{c[D>>2]=h;fga(j,223448,D)|0}}while(0);KK(c[E>>2]|0);KK(c[F>>2]|0);KK(c[G>>2]|0);c[G>>2]=0;c[F>>2]=0;c[E>>2]=0;G=0;i=H;return G|0}function Qw(a,d,e,f,g,h){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;m=i;i=i+1120|0;k=m;j=m+96|0;l=m+4|0;Cga(j|0,0,1024)|0;if((Nw(a,j)|0)!=0?(Pw(l,a,h,j)|0)!=0:0){b[l+30>>1]=g;h=c[l+20>>2]|0;j=f+((ea(e-h|0,d)|0)<<2)|0;g=c[l+48>>2]|0;do if(g)if(!(c[l+52>>2]|0)){j=c[l>>2]|0;d=c[j+628>>2]|0;Dw(d,cx(j)|0,224192,k);j=0;break}else{j=ce[g&255](l,j,d,h)|0;break}else{j=c[l>>2]|0;d=c[j+628>>2]|0;Dw(d,cx(j)|0,224168,k);j=0}while(0);Ow(l);d=j;i=m;return d|0}f=c[a+628>>2]|0;d=cx(a)|0;c[k>>2]=j;Dw(f,d,224256,k);d=0;i=m;return d|0}function Rw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=i;a=Qw(a,b,c,d,4,e)|0;i=f;return a|0}function Sw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;e=f;if((b|0)!=7)Sa(225e3,225032,2249,225064);if(!(jw(a,225080,4)|0)){Dw(c[a+628>>2]|0,225064,225224,e);e=0;i=f;return e|0}b=JK(904)|0;d=a+576|0;c[d>>2]=b;if(!b){Dw(c[a+628>>2]|0,225064,225264,e);e=0;i=f;return e|0}MK(b,0,904);e=c[d>>2]|0;c[e+796>>2]=a;b=a+672|0;c[e+860>>2]=c[b>>2];c[b>>2]=93;b=a+668|0;c[e+864>>2]=c[b>>2];c[b>>2]=94;b=a+676|0;c[e+868>>2]=c[b>>2];c[b>>2]=38;b=e+880|0;c[b>>2]=0;d=e+884|0;c[d>>2]=0;c[e+888>>2]=75;c[e+892>>2]=0;c[e+896>>2]=3;c[e+900>>2]=0;c[a+504>>2]=119;c[a+508>>2]=120;c[a+512>>2]=210;c[a+532>>2]=89;c[a+540>>2]=89;c[a+548>>2]=89;c[a+516>>2]=121;c[a+524>>2]=211;c[a+528>>2]=122;c[a+536>>2]=90;c[a+544>>2]=90;c[a+552>>2]=90;c[a+564>>2]=234;g=a+568|0;c[e+872>>2]=c[g>>2];c[g>>2]=212;g=a+572|0;c[e+876>>2]=c[g>>2];c[g>>2]=39;g=a+12|0;c[g>>2]=c[g>>2]|256;c[e+456>>2]=0;e=a+16|0;if(!((c[e>>2]|0)==0&(c[e+4>>2]|0)==0)){g=1;i=f;return g|0}c[d>>2]=2e3;g=JK(2e3)|0;c[b>>2]=g;MK(g,0,2e3);g=1;i=f;return g|0}function Tw(a,b){a=+a;b=b|0;var c=0;c=i;if(a>=18371976.0e12){b=32767;i=c;return b|0}if(a<=-18371976.0e12){b=65535;i=c;return b|0}if(a>5.4136769e-020){a=(+ca(+a)*1.4426950408889634+64.0)*256.0;if(b)a=a+ +($fa()|0)*4.656612875245797e-010+-.5;b=~~a;i=c;return b|0}if(!(a<-5.4136769e-020)){b=0;i=c;return b|0}a=(+ca(+-a)*1.4426950408889634+64.0)*256.0;if(b)a=a+ +($fa()|0)*4.656612875245797e-010+-.5;b=~~a|-32768;i=c;return b|0}function Uw(a,c,d){a=+a;c=+c;d=d|0;var e=0.0,f=0,h=0;h=i;if(c<.016939999535679817){f=lO(a,c)|0;i=h;return f|0}d=(d|0)==0;e=(c+-.016939999535679817)*285.7142768952314;if(!d)e=e+ +($fa()|0)*4.656612875245797e-010+-.5;f=~~e;if((f|0)>162){f=lO(a,c)|0;i=h;return f|0}e=+g[227256+(f<<3)>>2];if(e>a){f=lO(a,c)|0;i=h;return f|0}e=(a-e)*285.7142768952314;if(!d)e=e+ +($fa()|0)*4.656612875245797e-010+-.5;d=~~e;if((d|0)<(b[227260+(f<<3)>>1]|0)){f=(b[227262+(f<<3)>>1]|0)+d|0;i=h;return f|0}else{f=lO(a,c)|0;i=h;return f|0}return 0}function Vw(a,c){a=a|0;c=c|0;var d=0.0,e=0,f=0.0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0.0,q=0.0;o=i;e=a>>>14&1023;if((e|0)!=0?(n=+ba(+((+(e|0)+.5)*.010830424696249145+-8.317766166719343)),!(n<=0.0)):0){l=a&16383;if(l>>>0>16288){f=.210526316;d=.473684211}else{a=0;j=163;a:while(1){while(1){if((j-a|0)<=1){m=9;break a}k=a+j>>1;e=b[227262+(k<<3)>>1]|0;h=l-(e<<16>>16)|0;if((h|0)>0)a=k;else break}if((h|0)<0)j=k;else{a=k;break}}if((m|0)==9)e=b[227262+(a<<3)>>1]|0;f=+g[227256+(a<<3)>>2]+(+(l-(e<<16>>16)|0)+.5)*3.5000001080334187e-003;d=(+(a|0)+.5)*3.5000001080334187e-003+.016939999535679817}q=1.0/(f*6.0-d*16.0+12.0);p=f*9.0*q;f=d*4.0*q;g[c>>2]=n*(p/f);g[c+4>>2]=n;g[c+8>>2]=n*((1.0-p-f)/f);i=o;return}g[c+8>>2]=0.0;g[c+4>>2]=0.0;g[c>>2]=0.0;i=o;return}function Ww(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0,f=0.0,h=0,j=0.0;h=i;e=a+4|0;d=+g[e>>2];c=d;if(!(c>=15.742))if(!(c<=.00024283)){c=(+ca(+c)*1.4426950408889634+12.0)*64.0;if(b){c=c+ +($fa()|0)*4.656612875245797e-010+-.5;d=+g[e>>2]}e=~~c;c=d}else{e=0;c=d}else{e=1023;c=d}f=+g[a>>2];d=f+c*15.0+ +g[a+8>>2]*3.0;if((e|0)==0|d<=0.0){d=.210526316;f=.473684211;a=Uw(d,f,b)|0;b=(a|0)<0;a=b?12266:a;b=e<<14;b=a|b;i=h;return b|0}j=f*4.0/d;f=c*9.0/d;a=Uw(j,f,b)|0;b=(a|0)<0;a=b?12266:a;b=e<<14;b=a|b;i=h;return b|0}function Xw(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0,f=0,h=0.0,j=0.0,k=0.0;f=i;e=a>>16;d=e&32767;if(d){c=+ba(+((+(d|0)+.5)*2.7076061740622863e-003+-44.3614195558365));if(e&32768)c=-c;if(!(c<=0.0)){j=(+((a>>>8&255)>>>0)+.5)*2.4390243902439024e-003;k=(+((a&255)>>>0)+.5)*2.4390243902439024e-003;h=1.0/(j*6.0-k*16.0+12.0);j=j*9.0*h;h=k*4.0*h;g[b>>2]=c*(j/h);g[b+4>>2]=c;g[b+8>>2]=c*((1.0-j-h)/h);i=f;return}}g[b+8>>2]=0.0;g[b+4>>2]=0.0;g[b>>2]=0.0;i=f;return}function Yw(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0,h=0,j=0,k=0;k=i;f=a+4|0;j=Tw(+g[f>>2],b)|0;c=+g[a>>2];e=+g[f>>2];d=c+e*15.0+ +g[a+8>>2]*3.0;if(!((j|0)==0|d<=0.0)){c=c*4.0/d;d=e*9.0/d;if(!(c<=0.0))h=3;else{f=0;c=d}}else{c=.210526316;d=.473684211;h=3}if((h|0)==3){c=c*410.0;if(b)c=c+ +($fa()|0)*4.656612875245797e-010+-.5;f=~~c;c=d}a=f>>>0>255;if(c<=0.0){b=0;h=b>>>0>255;b=h?255:b;h=j<<16;f=f<<8;f=a?65280:f;h=f|h;b=h|b;i=k;return b|0}c=c*410.0;if(b)c=c+ +($fa()|0)*4.656612875245797e-010+-.5;b=~~c;h=b>>>0>255;b=h?255:b;h=j<<16;f=f<<8;f=a?65280:f;h=f|h;b=h|b;i=k;return b|0}function Zw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;if((b&-2|0)!=34676)Sa(228560,228624,1620,228656);if(!(jw(a,228672,2)|0)){Dw(c[a+628>>2]|0,228656,228744,e);a=0;i=f;return a|0}d=JK(32)|0;c[a+576>>2]=d;if(!d){b=c[a+628>>2]|0;c[e>>2]=c[a>>2];Dw(b,228656,228792,e);a=0;i=f;return a|0}else{MK(d,0,32);c[d>>2]=-1;c[d+4>>2]=(b|0)==34677&1;c[d+20>>2]=40;c[a+504>>2]=123;c[a+508>>2]=124;c[a+540>>2]=91;c[a+548>>2]=92;c[a+516>>2]=125;c[a+544>>2]=93;c[a+552>>2]=94;c[a+556>>2]=235;c[a+564>>2]=236;e=a+672|0;c[d+24>>2]=c[e>>2];c[e>>2]=95;a=a+668|0;c[d+28>>2]=c[a>>2];c[a>>2]=96;a=1;i=f;return a|0}return 0}function _w(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;if((b|0)!=5)Sa(230272,230304,1101,230336);b=JK(160)|0;c[a+576>>2]=b;if(!b){Dw(c[a+628>>2]|0,230336,230352,d);a=0;i=d;return a|0}else{c[b+124>>2]=0;c[b+104>>2]=0;c[b+152>>2]=0;c[b+80>>2]=c[a+8>>2];c[a+504>>2]=126;c[a+508>>2]=127;c[a+512>>2]=213;c[a+532>>2]=95;c[a+540>>2]=95;c[a+548>>2]=95;c[a+516>>2]=128;c[a+524>>2]=214;c[a+528>>2]=129;c[a+536>>2]=96;c[a+544>>2]=96;c[a+552>>2]=96;c[a+564>>2]=237;jx(a)|0;a=1;i=d;return a|0}return 0}function $w(a,b){a=a|0;b=b|0;c[a+512>>2]=215;c[a+532>>2]=97;c[a+540>>2]=97;c[a+548>>2]=97;return 1}function ax(b,d){b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;if((d|0)!=6)Sa(231200,231232,424,231264);if(!(jw(b,231280,7)|0)){Dw(c[b+628>>2]|0,231264,231536,e);e=0;i=f;return e|0}d=JK(5336)|0;if(!d){Dw(c[b+628>>2]|0,231264,231584,e);e=0;i=f;return e|0}else{MK(d,0,5336);c[d>>2]=b;a[d+224>>0]=1;a[d+228>>0]=2;a[d+229>>0]=2;c[e>>2]=2;c[e+4>>2]=2;Xv(b,530,e)|0;c[b+504>>2]=130;c[b+508>>2]=131;c[b+512>>2]=216;c[b+652>>2]=41;c[b+532>>2]=98;c[b+540>>2]=98;c[b+548>>2]=98;c[b+516>>2]=132;c[b+524>>2]=217;c[b+528>>2]=133;c[b+536>>2]=99;c[b+544>>2]=99;c[b+552>>2]=99;c[b+564>>2]=238;c[b+576>>2]=d;e=b+672|0;c[d+160>>2]=c[e>>2];c[e>>2]=97;e=b+668|0;c[d+164>>2]=c[e>>2];c[e>>2]=98;e=b+676|0;c[d+168>>2]=c[e>>2];c[e>>2]=42;e=b+12|0;c[e>>2]=c[e>>2]|131072;e=1;i=f;return e|0}return 0}function bx(d,f,g,h,j,k,l,m,n,o){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;y=E+8|0;A=E;p=a[f>>0]|0;q=p<<24>>24;if((q|0)==114)r=(a[f+1>>0]|0)==43?2:0;else if((q|0)==97|(q|0)==119)r=p<<24>>24==119?578:66;else{c[y>>2]=f;Dw(0,235584,235536,y);D=0;i=E;return D|0}p=JK((Dga(d|0)|0)+697|0)|0;if(!p){c[y>>2]=d;Dw(g,235584,235600,y);D=0;i=E;return D|0}MK(p,0,696);C=p+696|0;c[p>>2]=C;Gga(C|0,d|0)|0;C=p+8|0;c[C>>2]=r&2;b[p+448>>1]=-1;D=p+456|0;c[D>>2]=0;c[D+4>>2]=0;c[p+452>>2]=-1;c[p+444>>2]=-1;D=p+628|0;c[D>>2]=g;if(!((h|0)!=0&(j|0)!=0&(k|0)!=0&(l|0)!=0&(m|0)!=0)){Dw(g,235584,235640,y);D=0;i=E;return D|0}v=p+632|0;c[v>>2]=h;t=p+636|0;c[t>>2]=j;s=p+640|0;c[s>>2]=k;c[p+644>>2]=l;c[p+648>>2]=m;w=p+620|0;c[w>>2]=(n|0)==0?99:n;c[p+624>>2]=(o|0)==0?23:o;Tv(p);x=p+12|0;q=(r|0)==0;m=q?2049:1;m=(r&576|0)==0?m|32768:m;c[x>>2]=m;g=a[f>>0]|0;a:do if(g<<24>>24){o=(r&64|0)==0;if(q){j=m;q=m;h=m;n=m;l=m;k=f}else{q=m;h=m;j=f;while(1){switch(g<<24>>24|0){case 66:{q=q&-4|1;c[x>>2]=q;h=q;break}case 56:{if(!o){q=q|524288;c[x>>2]=q;h=q}break}case 104:{q=h|65536;c[x>>2]=q;h=q;break}case 76:{q=q&-4|2;c[x>>2]=q;h=q;break}case 72:{q=q&-4|2;c[x>>2]=q;h=q;break}case 98:{if(!o){q=q|128;c[x>>2]=q;h=q}break}default:{}}j=j+1|0;g=a[j>>0]|0;if(!(g<<24>>24))break a}}while(1){do switch(g<<24>>24|0){case 67:{l=q|32768;c[x>>2]=l;m=l;q=l;h=l;n=l;break}case 98:{if(o)m=j;else{l=l|128;c[x>>2]=l;m=l;q=l;h=l;n=l}break}case 76:{l=l&-4|2;c[x>>2]=l;m=l;q=l;h=l;n=l;break}case 66:{l=l&-4|1;c[x>>2]=l;m=l;q=l;h=l;n=l;break}case 56:{if(o)m=j;else{l=l|524288;c[x>>2]=l;m=l;q=l;h=l;n=l}break}case 99:{l=j&-32769;c[x>>2]=l;m=l;q=l;h=l;n=l;break}case 72:{l=l&-4|2;c[x>>2]=l;m=l;q=l;h=l;n=l;break}case 109:{l=h&-2049;c[x>>2]=l;m=l;q=l;h=l;n=l;break}case 77:{l=n|2048;c[x>>2]=l;m=l;q=l;h=l;n=l;break}case 104:{l=j|65536;c[x>>2]=l;m=l;q=l;h=l;n=l;break}default:m=j}while(0);k=k+1|0;g=a[k>>0]|0;if(!(g<<24>>24))break a;else j=m}}while(0);b:do if((r&512|0)==0?(u=p+424|0,(Od[c[v>>2]&255](c[D>>2]|0,u,8)|0)==8):0){q=b[u>>1]|0;g=q&65535;if(q<<16>>16==18761)g=c[x>>2]|0;else if(q<<16>>16==19789){g=c[x>>2]|128;c[x>>2]=g}else{D=c[D>>2]|0;c[y>>2]=g;c[y+4>>2]=g;Dw(D,d,235744,y);break}q=p+426|0;if(g&128)Fx(q);q=b[q>>1]|0;g=q&65535;if((q&-2)<<16>>16!=42){D=c[D>>2]|0;c[y>>2]=g;c[y+4>>2]=g;Dw(D,d,235792,y);break}do if(q<<16>>16!=42){g=p+432|0;if((Od[c[v>>2]&255](c[D>>2]|0,g,8)|0)!=8){Dw(c[D>>2]|0,d,235688,y);break b}q=p+428|0;if(c[x>>2]&128){Fx(q);Hx(g)}v=b[q>>1]|0;g=v&65535;if(v<<16>>16!=8){D=c[D>>2]|0;c[y>>2]=g;c[y+4>>2]=g;Dw(D,d,235840,y);break b}v=b[p+430>>1]|0;g=v&65535;if(!(v<<16>>16)){b[p+440>>1]=16;g=c[x>>2]|524288;c[x>>2]=g;break}else{D=c[D>>2]|0;c[y>>2]=g;c[y+4>>2]=g;Dw(D,d,235896,y);break b}}else{g=c[x>>2]|0;if(g&128){Gx(p+428|0);g=c[x>>2]|0}b[p+440>>1]=8}while(0);q=g|512;c[x>>2]=q;h=p+588|0;c[h+0>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;h=a[f>>0]|0;if((h|0)==97){if(!(cw(p)|0))break;i=E;return p|0}else if((h|0)!=114)break;if(!(g&524288)){y=p+24|0;c[y>>2]=c[p+428>>2];c[y+4>>2]=0}else{f=p+432|0;d=c[f+4>>2]|0;y=p+24|0;c[y>>2]=c[f>>2];c[y+4>>2]=d}do if(g&2048){if(!(Od[c[w>>2]&255](c[D>>2]|0,p+612|0,A)|0)){z=c[x>>2]&-2049;c[x>>2]=z;break}D=A;A=c[D>>2]|0;D=c[D+4>>2]|0;c[p+616>>2]=A;if((A|0)==(A|0)&(((A|0)<0)<<31>>31|0)==(D|0)){z=c[x>>2]|0;break}else Sa(235944,235552,449,235584)}else z=q;while(0);if(z&65536){D=p;i=E;return D|0}if(vw(p)|0){c[p+608>>2]=-1;c[x>>2]=c[x>>2]|16;D=p;i=E;return D|0}}else B=37;while(0);do if((B|0)==37){if(!(c[C>>2]|0)){Dw(c[D>>2]|0,d,235688,y);break}B=c[x>>2]|0;q=B&128;j=p+424|0;b[j>>1]=(q|0)!=0?19789:18761;g=p+426|0;if(!(B&524288)){b[g>>1]=42;c[p+428>>2]=0;if(q)Fx(g);b[p+440>>1]=8}else{b[g>>1]=43;h=p+428|0;b[h>>1]=8;b[p+430>>1]=0;B=p+432|0;c[B>>2]=0;c[B+4>>2]=0;if(q){Fx(g);Fx(h)}b[p+440>>1]=16}ce[c[s>>2]&255](c[D>>2]|0,0,0,0)|0;B=p+440|0;A=Od[c[t>>2]&255](c[D>>2]|0,j,e[B>>1]|0)|0;if((A|0)!=(e[B>>1]|0)){Dw(c[D>>2]|0,d,235712,y);break}if((b[j>>1]|0)==19789)c[x>>2]=c[x>>2]|128;if(cw(p)|0){D=p+16|0;c[D>>2]=0;c[D+4>>2]=0;c[p+32>>2]=0;b[p+36>>1]=0;b[p+38>>1]=0;D=p;i=E;return D|0}}while(0);c[C>>2]=0;Dv(p);D=0;i=E;return D|0}function cx(a){a=a|0;return c[a>>2]|0}function dx(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=c[d>>2]|0;c[d>>2]=b;return a|0}function ex(a){a=a|0;return (c[a+12>>2]|0)>>>10&1|0}function fx(a){a=a|0;return b[a+448>>1]|0}function gx(a){a=a|0;return (c[a+12>>2]|0)>>>7&1|0}function hx(a,b){a=a|0;b=b|0;c[a+532>>2]=100;c[a+540>>2]=100;c[a+548>>2]=100;c[a+524>>2]=218;c[a+528>>2]=134;c[a+536>>2]=101;c[a+544>>2]=102;c[a+552>>2]=102;return 1}function ix(d,e){d=d|0;e=e|0;var f=0,h=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=i;i=i+16|0;f=u;if((e|0)!=32909)Sa(236128,236160,1366,236192);if(!(jw(d,236216,2)|0)){Dw(c[d+628>>2]|0,236192,236288,f);t=0;i=u;return t|0}t=JK(172)|0;c[d+576>>2]=t;if(!t){Dw(c[d+628>>2]|0,236192,236336,f);t=0;i=u;return t|0}MK(t,0,172);c[t+108>>2]=0;c[t+132>>2]=-1;c[d+504>>2]=135;c[d+508>>2]=136;c[d+512>>2]=219;c[d+532>>2]=103;c[d+540>>2]=103;c[d+548>>2]=103;c[d+516>>2]=137;c[d+524>>2]=220;c[d+528>>2]=138;c[d+536>>2]=104;c[d+544>>2]=104;c[d+552>>2]=104;c[d+556>>2]=239;c[d+564>>2]=240;n=d+672|0;c[t+140>>2]=c[n>>2];c[n>>2]=100;n=d+668|0;c[t+144>>2]=c[n>>2];c[n>>2]=101;c[t+136>>2]=-1;c[t+128>>2]=0;jx(d)|0;g[59094]=250.0;g[59096]=148.4131622314453;n=JK(54600)|0;o=JK(32768)|0;p=JK(512)|0;q=JK(8196)|0;r=JK(4098)|0;s=JK(2049)|0;e=(n|0)==0;d=(o|0)==0;f=(p|0)==0;k=(q|0)==0;l=(r|0)==0;m=(s|0)==0;if(e|d|f|k|l|m){if(!e)KK(n);if(!d)KK(o);if(!f)KK(p);if(!k)KK(q);if(!l)KK(r);if(!m)KK(s);t=t+148|0;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t+16>>2]=0;c[t+20>>2]=0;t=1;i=u;return t|0}else e=0;do{g[q+(e<<2)>>2]=+(e|0)*7.326255555493672e-005;e=e+1|0}while((e|0)!=250);e=250;do{g[q+(e<<2)>>2]=+ba(+(+(e|0)*.004))*.006737946999085467;e=e+1|0}while((e|0)!=2048);g[q+8192>>2]=+g[q+8188>>2];m=0;do{j=+g[q+(m<<2)>>2];h=j*65535.0+.5;if(h>65535.0)e=-1;else e=~~h&65535;b[r+(m<<1)>>1]=e;h=j*255.0+.5;if(h>255.0)e=-1;else e=~~h&255;a[s+m>>0]=e;m=m+1|0}while((m|0)!=2049);e=0;d=0;do{j=+(e|0)*7.326255555493672e-005;l=d+1|0;d=j*j>+g[q+(d<<2)>>2]*+g[q+(l<<2)>>2]?l:d;b[n+(e<<1)>>1]=d;e=e+1|0}while((e|0)!=27300);m=0;e=0;do{h=+(m|0)/16383.0;h=h*h;j=+g[q+(e<<2)>>2];while(1){d=e+1|0;v=j;j=+g[q+(d<<2)>>2];if(!(h>v*j))break;else e=d}b[o+(m<<1)>>1]=e;m=m+1|0}while((m|0)!=16384);m=0;e=0;do{h=+(m|0)/255.0;h=h*h;j=+g[q+(e<<2)>>2];while(1){d=e+1|0;v=j;j=+g[q+(d<<2)>>2];if(!(h>v*j))break;else e=d}b[p+(m<<1)>>1]=e;m=m+1|0}while((m|0)!=256);g[59098]=13650.0;c[t+148>>2]=q;c[t+152>>2]=r;c[t+156>>2]=s;c[t+160>>2]=n;c[t+164>>2]=o;c[t+168>>2]=p;t=1;i=u;return t|0}function jx(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=c[a+576>>2]|0;if(!b)Sa(237112,237120,705,237152);if(!(jw(a,237176,1)|0)){Dw(c[a+628>>2]|0,237152,237216,d);a=0;i=d;return a|0}else{e=a+672|0;c[b+44>>2]=c[e>>2];c[e>>2]=102;e=a+668|0;c[b+48>>2]=c[e>>2];c[e>>2]=103;e=a+676|0;c[b+52>>2]=c[e>>2];c[e>>2]=43;e=a+508|0;c[b+56>>2]=c[e>>2];c[e>>2]=139;a=a+516|0;c[b+60>>2]=c[a>>2];c[a>>2]=140;c[b>>2]=1;c[b+24>>2]=0;c[b+40>>2]=0;a=1;i=d;return a|0}return 0}function kx(a){a=a|0;var b=0,d=0;d=i;b=c[a+576>>2]|0;if(!b)Sa(237112,237120,746,237264);else{c[a+672>>2]=c[b+44>>2];c[a+668>>2]=c[b+48>>2];c[a+676>>2]=c[b+52>>2];c[a+508>>2]=c[b+56>>2];c[a+516>>2]=c[b+60>>2];i=d;return 1}return 0}function lx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;h=i;i=i+16|0;g=h;if((c[a+8>>2]|0)==1){Dw(c[a+628>>2]|0,c[a>>2]|0,239016,g);a=-1;i=h;return a|0}if(c[a+12>>2]&1024){Dw(c[a+628>>2]|0,c[a>>2]|0,239096,g);a=-1;i=h;return a|0}f=c[a+168>>2]|0;if(f>>>0<=b>>>0){a=c[a+628>>2]|0;c[g>>2]=b;c[g+4>>2]=f;Dw(a,238288,238312,g);a=-1;i=h;return a|0}j=c[a+100>>2]|0;f=c[a+60>>2]|0;j=j>>>0>f>>>0?f:j;g=((f+-1+j|0)>>>0)/(j>>>0)|0;f=f-(ea((b>>>0)%(g>>>0)|0,j)|0)|0;f=Ax(a,f>>>0>j>>>0?j:f)|0;if(!f){a=-1;i=h;return a|0}f=(e|0)!=-1&(f|0)>(e|0)?e:f;if(!(mx(a,b)|0)){a=-1;i=h;return a|0}if((ce[c[a+540>>2]&255](a,d,f,((b>>>0)/(g>>>0)|0)&65535)|0)<1){a=-1;i=h;return a|0}$d[c[a+652>>2]&255](a,d,f);a=f;i=h;return a|0}function mx(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=i;i=i+32|0;l=p;if(!(ww(a)|0)){a=0;i=p;return a|0}n=a+176|0;f=c[n>>2]|0;if(!f){a=0;i=p;return a|0}o=a+12|0;d=c[o>>2]|0;do if(!(d&131072)){k=f+(b<<3)|0;m=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)<0|(k|0)==0&m>>>0<1){a=c[a+628>>2]|0;o=l;c[o>>2]=m;c[o+4>>2]=k;c[l+8>>2]=b;Dw(a,238376,238392,l);a=0;i=p;return a|0}if((d&2048|0)!=0?((e[a+94>>1]|0|256)&d|0)!=0:0){if((d&512|0)!=0?(g=a+588|0,h=c[g>>2]|0,(h|0)!=0):0){KK(h);c[g>>2]=0;c[a+592>>2]=0;d=c[o>>2]|0}d=d&-513;c[o>>2]=d;h=c[a+616>>2]|0;f=((h|0)<0)<<31>>31;j=(c[a+172>>2]|0)+(b<<3)|0;g=c[j>>2]|0;j=c[j+4>>2]|0;q=Hga(h|0,f|0,m|0,k|0)|0;r=I;if(!(f>>>0>>0|(f|0)==(k|0)&h>>>0>>0|(j>>>0>r>>>0|(j|0)==(r|0)&g>>>0>q>>>0))){c[a+592>>2]=m;c[a+588>>2]=(c[a+612>>2]|0)+g;c[a+596>>2]=0;c[a+600>>2]=m;c[o>>2]=d|8388608;break}r=c[a+628>>2]|0;o=Hga(h|0,f|0,g|0,j|0)|0;c[l>>2]=b;q=l+4|0;c[q>>2]=o;c[q+4>>2]=I;q=l+12|0;c[q>>2]=m;c[q+4>>2]=k;Dw(r,238376,238440,l);c[a+452>>2]=-1;r=0;i=p;return r|0}if(!((m|0)==(m|0)&(((m|0)<0)<<31>>31|0)==(k|0))){Dw(c[a+628>>2]|0,238376,238352,l);r=0;i=p;return r|0}do if((m|0)>(c[a+592>>2]|0)){c[a+452>>2]=-1;if(!(d&512)){r=c[a+628>>2]|0;c[l>>2]=b;Dw(r,238376,238496,l);r=0;i=p;return r|0}if(!(nx(a,0,m)|0)){r=0;i=p;return r|0}else{d=c[o>>2]|0;break}}while(0);if((d&8388608|0)!=0?(c[a+452>>2]=-1,(nx(a,0,m)|0)==0):0){r=0;i=p;return r|0}d=a+588|0;if((sP(a,b,c[d>>2]|0,m,238376)|0)!=(m|0)){r=0;i=p;return r|0}c[a+596>>2]=0;c[a+600>>2]=m;if(!((e[a+94>>1]|0|256)&c[o>>2]))Px(c[d>>2]|0,m)}while(0);if(!(ww(a)|0)){r=0;i=p;return r|0}if(!(c[n>>2]|0)){r=0;i=p;return r|0}d=c[o>>2]|0;do if(!(d&32))if(!(Ld[c[a+508>>2]&511](a)|0)){r=0;i=p;return r|0}else{d=c[o>>2]|32;c[o>>2]=d;break}while(0);c[a+452>>2]=b;f=c[a+164>>2]|0;c[a+444>>2]=ea(c[a+100>>2]|0,(b>>>0)%(f>>>0)|0)|0;c[o>>2]=d&-1048577;if(!(d&131072)){c[a+604>>2]=c[a+588>>2];c[a+608>>2]=c[(c[n>>2]|0)+(b<<3)>>2]}else{c[a+604>>2]=0;c[a+608>>2]=0}r=Wd[c[a+512>>2]&511](a,((b>>>0)/(f>>>0)|0)&65535)|0;i=p;return r|0}function nx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;g=a+12|0;e=c[g>>2]|0;if(e&131072)Sa(238688,238728,918,238760);c[g>>2]=e&-8388609;h=a+588|0;f=c[h>>2]|0;if(f){if(e&512)KK(f);c[h>>2]=0;c[a+592>>2]=0}if(b){c[a+592>>2]=d;c[h>>2]=b;c[g>>2]=c[g>>2]&-513;a=1;i=k;return a|0}e=d+1023&-1024;c[a+592>>2]=e;if(!e){Dw(c[a+628>>2]|0,238760,238784,j);a=0;i=k;return a|0}b=JK(e)|0;c[h>>2]=b;c[g>>2]=c[g>>2]|512;if(b){a=1;i=k;return a|0}g=c[a+628>>2]|0;c[j>>2]=c[a+444>>2];Dw(g,238760,238808,j);c[a+592>>2]=0;a=0;i=k;return a|0}function ox(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;j=i;i=i+16|0;h=j;if((c[a+8>>2]|0)==1){Dw(c[a+628>>2]|0,c[a>>2]|0,239016,h);f=-1;i=j;return f|0}if(!(c[a+12>>2]&1024)){Dw(c[a+628>>2]|0,c[a>>2]|0,239048,h);f=-1;i=j;return f|0}if(!(Sx(a,d,e,f,g)|0)){f=-1;i=j;return f|0}f=px(a,Rx(a,d,e,f,g)|0,b,-1)|0;i=j;return f|0}function px(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;f=c[a+496>>2]|0;if((c[a+8>>2]|0)==1){Dw(c[a+628>>2]|0,c[a>>2]|0,239016,h);b=-1;i=j;return b|0}if(!(c[a+12>>2]&1024)){Dw(c[a+628>>2]|0,c[a>>2]|0,239048,h);b=-1;i=j;return b|0}g=c[a+168>>2]|0;if(g>>>0<=b>>>0){a=c[a+628>>2]|0;c[h>>2]=b;c[h+4>>2]=g;Dw(a,238536,238560,h);b=-1;i=j;return b|0}if((e|0)!=-1)f=(f|0)<(e|0)?f:e;if(!(qx(a,b)|0)){b=-1;i=j;return b|0}if(!(ce[c[a+548>>2]&255](a,d,f,((b>>>0)/((c[a+164>>2]|0)>>>0)|0)&65535)|0)){b=-1;i=j;return b|0}$d[c[a+652>>2]&255](a,d,f);b=f;i=j;return b|0}function qx(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;j=p;if(!(ww(a)|0)){b=0;i=p;return b|0}n=a+176|0;f=c[n>>2]|0;if(!f){b=0;i=p;return b|0}o=a+12|0;d=c[o>>2]|0;do if(!(d&131072)){k=f+(b<<3)|0;m=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)<0|(k|0)==0&m>>>0<1){a=c[a+628>>2]|0;o=j;c[o>>2]=m;c[o+4>>2]=k;c[j+8>>2]=b;Dw(a,238592,238608,j);b=0;i=p;return b|0}if((d&2048|0)!=0?((e[a+94>>1]|0|256)&d|0)!=0:0){if((d&512|0)!=0?(h=a+588|0,g=c[h>>2]|0,(g|0)!=0):0){KK(g);c[h>>2]=0;c[a+592>>2]=0;d=c[o>>2]|0}d=d&-513;c[o>>2]=d;f=c[a+616>>2]|0;g=((f|0)<0)<<31>>31;if(!(g>>>0>>0|(g|0)==(k|0)&f>>>0>>0)?(h=(c[a+172>>2]|0)+(b<<3)|0,l=c[h>>2]|0,h=c[h+4>>2]|0,j=Hga(f|0,g|0,m|0,k|0)|0,k=I,!(h>>>0>k>>>0|(h|0)==(k|0)&l>>>0>j>>>0)):0){c[a+592>>2]=m;c[a+588>>2]=(c[a+612>>2]|0)+l;c[a+596>>2]=0;c[a+600>>2]=m;c[o>>2]=d|8388608;break}c[a+492>>2]=-1;b=0;i=p;return b|0}if(!((m|0)==(m|0)&(((m|0)<0)<<31>>31|0)==(k|0))){Dw(c[a+628>>2]|0,238592,238352,j);b=0;i=p;return b|0}do if((m|0)>(c[a+592>>2]|0)){c[a+492>>2]=-1;if(!(d&512)){a=c[a+628>>2]|0;c[j>>2]=b;Dw(a,238592,238648,j);b=0;i=p;return b|0}if(!(nx(a,0,m)|0)){b=0;i=p;return b|0}else{d=c[o>>2]|0;break}}while(0);if((d&8388608|0)!=0?(c[a+492>>2]=-1,(nx(a,0,m)|0)==0):0){b=0;i=p;return b|0}d=a+588|0;if((tP(a,b,c[d>>2]|0,m,238592)|0)!=(m|0)){b=0;i=p;return b|0}c[a+596>>2]=0;c[a+600>>2]=m;if(!((e[a+94>>1]|0|256)&c[o>>2]))Px(c[d>>2]|0,m)}while(0);if(!(ww(a)|0)){b=0;i=p;return b|0}if(!(c[n>>2]|0)){b=0;i=p;return b|0}d=c[o>>2]|0;do if(!(d&32))if(!(Ld[c[a+508>>2]&511](a)|0)){b=0;i=p;return b|0}else{d=c[o>>2]|32;c[o>>2]=d;break}while(0);c[a+492>>2]=b;f=c[a+56>>2]|0;h=c[a+68>>2]|0;if(f>>>0<(0-h|0)>>>0)f=((f+-1+h|0)>>>0)/(h>>>0)|0;else f=0;g=c[a+72>>2]|0;c[a+444>>2]=ea(g,(b>>>0)%(f>>>0)|0)|0;f=c[a+60>>2]|0;if(f>>>0<(0-g|0)>>>0)f=((g+-1+f|0)>>>0)/(g>>>0)|0;else f=0;c[a+488>>2]=ea((b>>>0)%(f>>>0)|0,h)|0;c[o>>2]=d&-1048577;if(!(d&131072)){c[a+604>>2]=c[a+588>>2];c[a+608>>2]=c[(c[n>>2]|0)+(b<<3)>>2]}else{c[a+604>>2]=0;c[a+608>>2]=0}b=Wd[c[a+512>>2]&511](a,((b>>>0)/((c[a+164>>2]|0)>>>0)|0)&65535)|0;i=p;return b|0}function rx(a,b,c){a=a|0;b=b|0;c=c|0;return}function sx(a,b,c){a=a|0;b=b|0;c=c|0;a=i;if(!(c&1)){Ix(b,(c|0)/2|0);i=a;return}else Sa(238856,238728,1051,238872)}function tx(a,b,c){a=a|0;b=b|0;c=c|0;a=i;if(!((c|0)%3|0)){Jx(b,(c|0)/3|0);i=a;return}else Sa(238896,238728,1059,238912)}function ux(a,b,c){a=a|0;b=b|0;c=c|0;a=i;if(!(c&3)){Kx(b,(c|0)/4|0);i=a;return}else Sa(238936,238728,1067,238952)}function vx(a,b,c){a=a|0;b=b|0;c=c|0;a=i;if(!(c&7)){Nx(b,(c|0)/8|0);i=a;return}else Sa(238976,238728,1075,238992)}function wx(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;d=(d>>>0)/((c[a+100>>2]|0)>>>0)|0;if((b[a+126>>1]|0)!=2){h=d;i=j;return h|0}f=e&65535;g=b[a+98>>1]|0;if((g&65535)>(e&65535)){h=(ea(c[a+164>>2]|0,f)|0)+d|0;i=j;return h|0}else{a=c[a+628>>2]|0;c[h>>2]=f;c[h+4>>2]=g&65535;Dw(a,239552,239576,h);h=0;i=j;return h|0}return 0}function xx(a){a=a|0;var d=0,f=0,g=0;g=i;d=c[a+100>>2]|0;if((d|0)!=-1){f=c[a+60>>2]|0;if(f>>>0<(0-d|0)>>>0)d=((d+-1+f|0)>>>0)/(d>>>0)|0;else d=0}else d=1;if((b[a+126>>1]|0)!=2){a=d;i=g;return a|0}a=xv(a,d,e[a+98>>1]|0,239616)|0;i=g;return a|0}function yx(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;h=m;f=m+8|0;if((d|0)==-1)l=c[a+60>>2]|0;else l=d;if(((b[a+126>>1]|0)==1?(b[a+90>>1]|0)==6:0)?(c[a+12>>2]&16384|0)==0:0){if((b[a+98>>1]|0)!=3){Dw(c[a+628>>2]|0,239640,239664,h);j=0;l=0;I=j;i=m;return l|0}d=f+2|0;c[h>>2]=f;c[h+4>>2]=d;Cv(a,530,h)|0;f=b[f>>1]|0;if(f<<16>>16==4|f<<16>>16==2|f<<16>>16==1){d=b[d>>1]|0;if(d<<16>>16==4|d<<16>>16==2|d<<16>>16==1){f=f&65535;g=d&65535;k=(ea(g,f)|0)+2|0;d=c[a+56>>2]|0;if(d>>>0<(0-f|0)>>>0){h=((f+-1+d|0)>>>0)/(f>>>0)|0;j=0}else{h=0;j=0}if(l>>>0<(0-g|0)>>>0){d=((l+-1+g|0)>>>0)/(g>>>0)|0;f=0}else{d=0;f=0}g=yv(a,h,j,k&65535,0,239640)|0;k=I;j=a+84|0;l=yv(a,g,k,e[j>>1]|0,0,239640)|0;j=yv(a,g,k,e[j>>1]|0,0,239640)|0;j=Lga(j|0,I|0,3)|0;l=Iga(j|0,I|0,((l&7|0)!=0|0!=0)&1|0,0)|0;l=yv(a,l,I,d,f,239640)|0;j=I;I=j;i=m;return l|0}}else d=b[d>>1]|0;j=c[a+628>>2]|0;c[h>>2]=f&65535;c[h+4>>2]=d&65535;Dw(j,239640,239704,h);j=0;l=0;I=j;i=m;return l|0}j=zx(a)|0;l=yv(a,l,0,j,I,239640)|0;j=I;I=j;i=m;return l|0}function zx(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k;f=k+8|0;if((b[a+126>>1]|0)!=1){a=yv(a,c[a+56>>2]|0,0,e[a+84>>1]|0,0,239800)|0;a=Iga(a|0,I|0,7,0)|0;a=Lga(a|0,I|0,3)|0;j=I;I=j;i=k;return a|0}d=b[a+98>>1]|0;if(d<<16>>16==3?(b[a+90>>1]|0)==6:0)if(!(c[a+12>>2]&16384)){j=f+2|0;c[g>>2]=f;c[g+4>>2]=j;Cv(a,530,g)|0;d=b[f>>1]|0;if(d<<16>>16==4|d<<16>>16==2|d<<16>>16==1?(h=b[j>>1]|0,h<<16>>16==4|h<<16>>16==2|h<<16>>16==1):0){f=d&65535;g=(ea(h&65535,f)|0)+2|0;d=c[a+56>>2]|0;if(d>>>0<(0-f|0)>>>0){d=((f+-1+d|0)>>>0)/(f>>>0)|0;f=0}else{d=0;f=0}g=yv(a,d,f,g&65535,0,239800)|0;a=yv(a,g,I,e[a+84>>1]|0,0,239800)|0;a=Iga(a|0,I|0,7,0)|0;a=Lga(a|0,I|0,3)|0;a=Uga(a|0,I|0,e[j>>1]|0,0)|0;j=I;I=j;i=k;return a|0}Dw(c[a+628>>2]|0,239800,239824,g);j=0;a=0;I=j;i=k;return a|0}else d=3;j=yv(a,c[a+56>>2]|0,0,d&65535,0,239800)|0;a=yv(a,j,I,e[a+84>>1]|0,0,239800)|0;a=Iga(a|0,I|0,7,0)|0;a=Lga(a|0,I|0,3)|0;j=I;I=j;i=k;return a|0}function Ax(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;b=yx(a,b)|0;if((b|0)==(b|0)&(((b|0)<0)<<31>>31|0)==(I|0)){a=b;i=d;return a|0}Dw(c[a+628>>2]|0,239744,239760,d);a=0;i=d;return a|0}function Bx(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=c[a+100>>2]|0;e=c[a+60>>2]|0;b=yx(a,b>>>0>e>>>0?e:b)|0;if((b|0)==(b|0)&(((b|0)<0)<<31>>31|0)==(I|0)){e=b;i=d;return e|0}Dw(c[a+628>>2]|0,239784,239760,d);e=0;i=d;return e|0}function Cx(a,b){a=a|0;b=b|0;var d=0;d=i;a=Wd[c[a+568>>2]&511](a,b)|0;i=d;return a|0}function Dx(a,b){a=a|0;b=b|0;var c=0,d=0;c=i;if((b|0)>=1){a=b;i=c;return a|0}d=zx(a)|0;a=I;b=(d|0)==0&(a|0)==0;a=Uga(8192,0,(b?1:d)|0,(b?0:a)|0)|0;a=(a|0)==0&(I|0)==0?1:a;i=c;return a|0}function Ex(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=zx(a)|0;if((b|0)==(b|0)&(((b|0)<0)<<31>>31|0)==(I|0)){a=b;i=d;return a|0}Dw(c[a+628>>2]|0,239856,239880,d);a=0;i=d;return a|0}function Fx(b){b=b|0;var c=0,d=0;d=b+1|0;c=a[d>>0]|0;a[d>>0]=a[b>>0]|0;a[b>>0]=c;return}function Gx(b){b=b|0;var c=0,d=0;c=b+3|0;d=a[c>>0]|0;a[c>>0]=a[b>>0]|0;a[b>>0]=d;d=b+2|0;c=a[d>>0]|0;b=b+1|0;a[d>>0]=a[b>>0]|0;a[b>>0]=c;return}function Hx(b){b=b|0;var c=0,d=0,e=0;c=b+7|0;d=a[c>>0]|0;a[c>>0]=a[b>>0]|0;a[b>>0]=d;d=b+6|0;c=a[d>>0]|0;e=b+1|0;a[d>>0]=a[e>>0]|0;a[e>>0]=c;e=b+5|0;c=a[e>>0]|0;d=b+2|0;a[e>>0]=a[d>>0]|0;a[d>>0]=c;d=b+4|0;c=a[d>>0]|0;b=b+3|0;a[d>>0]=a[b>>0]|0;a[b>>0]=c;return}function Ix(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;d=i;if((c|0)<=0){i=d;return}while(1){c=c+-1|0;f=b+1|0;e=a[f>>0]|0;a[f>>0]=a[b>>0]|0;a[b>>0]=e;if((c|0)<=0)break;else b=b+2|0}i=d;return}function Jx(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;d=i;if((c|0)<=0){i=d;return}while(1){c=c+-1|0;f=b+2|0;e=a[f>>0]|0;a[f>>0]=a[b>>0]|0;a[b>>0]=e;if((c|0)<=0)break;else b=b+3|0}i=d;return}function Kx(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=i;if((c|0)<=0){i=d;return}while(1){c=c+-1|0;f=b+3|0;g=a[f>>0]|0;a[f>>0]=a[b>>0]|0;a[b>>0]=g;g=b+2|0;f=a[g>>0]|0;e=b+1|0;a[g>>0]=a[e>>0]|0;a[e>>0]=f;if((c|0)<=0)break;else b=b+4|0}i=d;return}function Lx(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=i;if((c|0)<=0){i=d;return}while(1){c=c+-1|0;f=b+7|0;g=a[f>>0]|0;a[f>>0]=a[b>>0]|0;a[b>>0]=g;g=b+6|0;f=a[g>>0]|0;e=b+1|0;a[g>>0]=a[e>>0]|0;a[e>>0]=f;e=b+5|0;f=a[e>>0]|0;g=b+2|0;a[e>>0]=a[g>>0]|0;a[g>>0]=f;g=b+4|0;f=a[g>>0]|0;e=b+3|0;a[g>>0]=a[e>>0]|0;a[e>>0]=f;if((c|0)<=0)break;else b=b+8|0}i=d;return}function Mx(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=i;if((c|0)<=0){i=d;return}while(1){c=c+-1|0;f=b+3|0;g=a[f>>0]|0;a[f>>0]=a[b>>0]|0;a[b>>0]=g;g=b+2|0;f=a[g>>0]|0;e=b+1|0;a[g>>0]=a[e>>0]|0;a[e>>0]=f;if((c|0)<=0)break;else b=b+4|0}i=d;return}function Nx(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=i;if((c|0)<=0){i=d;return}while(1){c=c+-1|0;f=b+7|0;g=a[f>>0]|0;a[f>>0]=a[b>>0]|0;a[b>>0]=g;g=b+6|0;f=a[g>>0]|0;e=b+1|0;a[g>>0]=a[e>>0]|0;a[e>>0]=f;e=b+5|0;f=a[e>>0]|0;g=b+2|0;a[e>>0]=a[g>>0]|0;a[g>>0]=f;g=b+4|0;f=a[g>>0]|0;e=b+3|0;a[g>>0]=a[e>>0]|0;a[e>>0]=f;if((c|0)<=0)break;else b=b+8|0}i=d;return}function Ox(a){a=a|0;return ((a|0)!=0?239912:240168)|0}function Px(b,c){b=b|0;c=c|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;if((c|0)>8){g=c+-9&-8;h=g+8|0;e=b;f=c;while(1){a[e>>0]=a[239912+(d[e>>0]|0)>>0]|0;k=e+1|0;a[k>>0]=a[239912+(d[k>>0]|0)>>0]|0;k=e+2|0;a[k>>0]=a[239912+(d[k>>0]|0)>>0]|0;k=e+3|0;a[k>>0]=a[239912+(d[k>>0]|0)>>0]|0;k=e+4|0;a[k>>0]=a[239912+(d[k>>0]|0)>>0]|0;k=e+5|0;a[k>>0]=a[239912+(d[k>>0]|0)>>0]|0;k=e+6|0;a[k>>0]=a[239912+(d[k>>0]|0)>>0]|0;k=e+7|0;a[k>>0]=a[239912+(d[k>>0]|0)>>0]|0;f=f+-8|0;if((f|0)<=8)break;else e=e+8|0}c=c+-8-g|0;b=b+h|0}if((c|0)<=0){i=j;return}while(1){c=c+-1|0;a[b>>0]=a[239912+(d[b>>0]|0)>>0]|0;if((c|0)<=0)break;else b=b+1|0}i=j;return}function Qx(a,b){a=a|0;b=b|0;c[a+508>>2]=141;c[a+532>>2]=105;c[a+540>>2]=105;return 1}function Rx(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;h=c[a+68>>2]|0;j=c[a+72>>2]|0;k=c[a+76>>2]|0;n=c[a+64>>2]|0;o=(n|0)==1?0:f;if((h|0)==-1)h=c[a+56>>2]|0;if((j|0)==-1)j=c[a+60>>2]|0;m=(k|0)==-1?n:k;if(!((h|0)!=0&(j|0)!=0&(m|0)!=0)){e=1;i=p;return e|0}f=c[a+56>>2]|0;if(f>>>0<(0-h|0)>>>0)l=((h+-1+f|0)>>>0)/(h>>>0)|0;else l=0;f=c[a+60>>2]|0;if(f>>>0<(0-j|0)>>>0)f=((j+-1+f|0)>>>0)/(j>>>0)|0;else f=0;if(n>>>0<(0-m|0)>>>0)k=((m+-1+n|0)>>>0)/(m>>>0)|0;else k=0;f=ea(f,l)|0;if((b[a+126>>1]|0)==2){e=((d>>>0)/(h>>>0)|0)+(ea((e>>>0)/(j>>>0)|0,l)|0)+(ea(((o>>>0)/(m>>>0)|0)+(ea(k,g&65535)|0)|0,f)|0)|0;i=p;return e|0}else{e=(ea((e>>>0)/(j>>>0)|0,l)|0)+(ea((o>>>0)/(m>>>0)|0,f)|0)+((d>>>0)/(h>>>0)|0)|0;i=p;return e|0}return 0}function Sx(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=c[a+56>>2]|0;if(h>>>0<=d>>>0){g=c[a+628>>2]|0;a=c[a>>2]|0;c[j>>2]=d;c[j+4>>2]=h+-1;Dw(g,a,240728,j);j=0;i=k;return j|0}h=c[a+60>>2]|0;if(h>>>0<=e>>>0){g=c[a+628>>2]|0;a=c[a>>2]|0;c[j>>2]=e;c[j+4>>2]=h+-1;Dw(g,a,240760,j);j=0;i=k;return j|0}h=c[a+64>>2]|0;if(h>>>0<=f>>>0){g=c[a+628>>2]|0;a=c[a>>2]|0;c[j>>2]=f;c[j+4>>2]=h+-1;Dw(g,a,240792,j);j=0;i=k;return j|0}if((b[a+126>>1]|0)!=2){j=1;i=k;return j|0}h=b[a+98>>1]|0;if((h&65535)>(g&65535)){j=1;i=k;return j|0}e=c[a+628>>2]|0;a=c[a>>2]|0;c[j>>2]=g&65535;c[j+4>>2]=(h&65535)+-1;Dw(e,a,240832,j);j=0;i=k;return j|0}function Tx(a){a=a|0;var d=0,f=0,g=0,h=0,j=0;j=i;d=c[a+68>>2]|0;f=c[a+72>>2]|0;g=c[a+76>>2]|0;if((d|0)==-1)d=c[a+56>>2]|0;if((f|0)==-1)h=c[a+60>>2]|0;else h=f;if((g|0)==-1)g=c[a+64>>2]|0;if((d|0)==0|(h|0)==0|(g|0)==0)d=0;else{f=c[a+56>>2]|0;if(f>>>0<(0-d|0)>>>0)f=((d+-1+f|0)>>>0)/(d>>>0)|0;else f=0;d=c[a+60>>2]|0;if(d>>>0<(0-h|0)>>>0)d=((h+-1+d|0)>>>0)/(h>>>0)|0;else d=0;f=xv(a,f,d,240872)|0;d=c[a+64>>2]|0;if(d>>>0<(0-g|0)>>>0)d=((g+-1+d|0)>>>0)/(g>>>0)|0;else d=0;d=xv(a,f,d,240872)|0}if((b[a+126>>1]|0)!=2){a=d;i=j;return a|0}a=xv(a,d,e[a+98>>1]|0,240872)|0;i=j;return a|0}function Ux(a){a=a|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;if((c[a+72>>2]|0)!=0?(d=c[a+68>>2]|0,(d|0)!=0):0){f=yv(a,e[a+84>>1]|0,0,d,0,240896)|0;d=I;if((b[a+126>>1]|0)==1){f=yv(a,f,d,e[a+98>>1]|0,0,240896)|0;d=I}d=Lga(f|0,d|0,3)|0;d=Iga(((f&7|0)!=0|0!=0)&1|0,0,d|0,I|0)|0;f=I}else{d=0;f=0}if((d|0)==(d|0)&(((d|0)<0)<<31>>31|0)==(f|0)){a=d;i=h;return a|0}Dw(c[a+628>>2]|0,240896,240912,g);a=0;i=h;return a|0}function Vx(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;l=n;j=n+8|0;if(!(c[a+72>>2]|0)){k=0;m=0;I=k;i=n;return m|0}m=a+68|0;f=c[m>>2]|0;if(!f){k=0;m=0;I=k;i=n;return m|0}if(!(c[a+76>>2]|0)){k=0;m=0;I=k;i=n;return m|0}h=a+126|0;if((((b[h>>1]|0)==1?(b[a+90>>1]|0)==6:0)?(b[a+98>>1]|0)==3:0)?(c[a+12>>2]&16384|0)==0:0){f=j+2|0;c[l>>2]=j;c[l+4>>2]=f;Cv(a,530,l)|0;g=b[j>>1]|0;if(g<<16>>16==4|g<<16>>16==2|g<<16>>16==1){f=b[f>>1]|0;if(f<<16>>16==4|f<<16>>16==2|f<<16>>16==1){g=g&65535;k=f&65535;l=(ea(k,g)|0)+2|0;f=c[m>>2]|0;if(f>>>0<(0-g|0)>>>0){h=((g+-1+f|0)>>>0)/(g>>>0)|0;j=0}else{h=0;j=0}if(d>>>0<(0-k|0)>>>0){f=((d+-1+k|0)>>>0)/(k>>>0)|0;g=0}else{f=0;g=0}h=yv(a,h,j,l&65535,0,240936)|0;l=I;k=a+84|0;m=yv(a,h,l,e[k>>1]|0,0,240936)|0;k=yv(a,h,l,e[k>>1]|0,0,240936)|0;k=Lga(k|0,I|0,3)|0;m=Iga(k|0,I|0,((m&7|0)!=0|0!=0)&1|0,0)|0;m=yv(a,m,I,f,g,240936)|0;k=I;I=k;i=n;return m|0}}else f=b[f>>1]|0;k=c[a+628>>2]|0;c[l>>2]=g&65535;c[l+4>>2]=f&65535;Dw(k,240936,240952,l);k=0;m=0;I=k;i=n;return m|0}g=yv(a,e[a+84>>1]|0,0,f,0,240896)|0;f=I;if((b[h>>1]|0)==1){g=yv(a,g,f,e[a+98>>1]|0,0,240896)|0;f=I}m=Lga(g|0,f|0,3)|0;m=Iga(((g&7|0)!=0|0!=0)&1|0,0,m|0,I|0)|0;m=yv(a,d,0,m,I,240936)|0;k=I;I=k;i=n;return m|0}function Wx(a){a=a|0;var b=0;b=i;a=Vx(a,c[a+72>>2]|0)|0;i=b;return a|0}function Xx(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=Vx(a,c[a+72>>2]|0)|0;if((b|0)==(b|0)&(((b|0)<0)<<31>>31|0)==(I|0)){a=b;i=d;return a|0}Dw(c[a+628>>2]|0,240992,240912,d);a=0;i=d;return a|0}function Yx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;a=c[b>>2]|0;if((a|0)<1){c[b>>2]=256;e=256}else e=a;a=c[d>>2]|0;if((a|0)<1){c[d>>2]=256;a=256;e=c[b>>2]|0}if(e&15){if(e>>>0<4294967280)a=e+15&-16;else a=0;c[b>>2]=a;a=c[d>>2]|0}if(!(a&15)){i=f;return}if(a>>>0<4294967280)a=a+15&-16;else a=0;c[d>>2]=a;i=f;return}function Zx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g;c[f>>2]=e;e=c[80862]|0;if(e)$d[e&255](b,d,f);e=c[60252]|0;if(!e){i=g;return}de[e&63](a,b,d,f);i=g;return}function _x(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;k=o;n=a+12|0;g=c[n>>2]|0;do if(!(g&64))if(!($x(a,0,241016)|0)){a=-1;i=o;return a|0}else{g=c[n>>2]|0;break}while(0);if(!((g&16|0)!=0?(c[a+588>>2]|0)!=0:0))l=6;do if((l|0)==6)if(!(ay(a,0,-1)|0)){a=-1;i=o;return a|0}else{g=c[n>>2]|0;break}while(0);c[n>>2]=g|1048576;j=a+60|0;g=(b[a+126>>1]|0)==2;do if((c[j>>2]|0)>>>0>e>>>0)if(g){g=f&65535;h=b[a+98>>1]|0;if((h&65535)>(f&65535)){m=ea(c[a+164>>2]|0,g)|0;g=0;m=((e>>>0)/((c[a+100>>2]|0)>>>0)|0)+m|0;break}a=c[a+628>>2]|0;c[k>>2]=g;c[k+4>>2]=h&65535;Dw(a,241016,241096,k);a=-1;i=o;return a|0}else{g=0;l=16}else{if(!g){c[j>>2]=e+1;g=1;l=16;break}Dw(c[a+628>>2]|0,241016,241040,k);a=-1;i=o;return a|0}while(0);if((l|0)==16)m=(e>>>0)/((c[a+100>>2]|0)>>>0)|0;if(m>>>0>=(c[a+168>>2]|0)>>>0?(wP(a,241016)|0)==0:0){a=-1;i=o;return a|0}h=a+452|0;do if((m|0)!=(c[h>>2]|0)){if(!(Mw(a)|0)){a=-1;i=o;return a|0}c[h>>2]=m;k=a+164|0;h=c[k>>2]|0;if(m>>>0>=h>>>0&(g|0)!=0){g=c[j>>2]|0;j=c[a+100>>2]|0;if(g>>>0<(0-j|0)>>>0)g=((g+-1+j|0)>>>0)/(j>>>0)|0;else g=0;c[k>>2]=g}else{g=h;j=c[a+100>>2]|0}h=a+444|0;c[h>>2]=ea(j,(m>>>0)%(g>>>0)|0)|0;do if(!(c[n>>2]&32))if(!(Ld[c[a+516>>2]&511](a)|0)){a=-1;i=o;return a|0}else{c[n>>2]=c[n>>2]|32;break}while(0);c[a+608>>2]=0;c[a+604>>2]=c[a+588>>2];g=(c[a+176>>2]|0)+(m<<3)|0;l=g;if(!((c[l>>2]|0)==0&(c[l+4>>2]|0)==0)){l=g;c[l>>2]=0;c[l+4>>2]=0;l=a+456|0;c[l>>2]=0;c[l+4>>2]=0}if(!(Wd[c[a+524>>2]&511](a,f)|0)){a=-1;i=o;return a|0}else{c[n>>2]=c[n>>2]|4096;break}}else h=a+444|0;while(0);g=c[h>>2]|0;do if((g|0)!=(e|0)){if(g>>>0>e>>>0){g=ea(c[a+100>>2]|0,(m>>>0)%((c[a+164>>2]|0)>>>0)|0)|0;c[h>>2]=g;c[a+604>>2]=c[a+588>>2]}if(!(Wd[c[a+560>>2]&511](a,e-g|0)|0)){a=-1;i=o;return a|0}else{c[h>>2]=e;break}}while(0);n=a+580|0;$d[c[a+652>>2]&255](a,d,c[n>>2]|0);a=ce[c[a+536>>2]&255](a,d,c[n>>2]|0,f)|0;c[h>>2]=e+1;i=o;return a|0}function $x(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(!(c[a+8>>2]|0)){Dw(c[a+628>>2]|0,e,241136,g);g=0;i=h;return g|0}f=a+12|0;if(((c[f>>2]|0)>>>10&1|0)!=(d|0)){Dw(c[a+628>>2]|0,e,(d|0)!=0?241168:241208,g);g=0;i=h;return g|0}ww(a)|0;d=c[a+40>>2]|0;if(!(d&2)){Dw(c[a+628>>2]|0,e,241256,g);g=0;i=h;return g|0}d=(d&1048576|0)!=0;if((b[a+98>>1]|0)==1){if(!d)b[a+126>>1]=1}else if(!d){Dw(c[a+628>>2]|0,e,241304,g);g=0;i=h;return g|0}if((c[a+172>>2]|0)==0?(by(a)|0)==0:0){c[a+168>>2]=0;a=c[a+628>>2]|0;c[g>>2]=(c[f>>2]&1024|0)!=0?241384:241392;Dw(a,e,241360,g);g=0;i=h;return g|0}if(c[f>>2]&1024){g=Xx(a)|0;c[a+496>>2]=g;if(!g){g=0;i=h;return g|0}}else c[a+496>>2]=-1;g=Ex(a)|0;c[a+580>>2]=g;if(!g){g=0;i=h;return g|0}c[f>>2]=c[f>>2]|64;g=1;i=h;return g|0}function ay(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k;j=a+588|0;e=c[j>>2]|0;if(e){f=a+12|0;if(c[f>>2]&512){KK(e);c[f>>2]=c[f>>2]&-513}c[j>>2]=0}if((d|0)!=-1)if(!b)h=11;else{g=a+12|0;e=c[g>>2]&-513;c[g>>2]=e}else{if(!(c[a+12>>2]&1024))d=Bx(a)|0;else d=c[a+496>>2]|0;d=(d|0)<8192?8192:d;h=11}do if((h|0)==11){b=JK(d)|0;if(b){g=a+12|0;e=c[g>>2]|512;c[g>>2]=e;break}Dw(c[a+628>>2]|0,241400,241424,g);j=0;i=k;return j|0}while(0);c[j>>2]=b;c[a+592>>2]=d;c[a+608>>2]=0;c[a+604>>2]=b;c[a+12>>2]=e|16;j=1;i=k;return j|0}function by(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0;h=i;g=a+40|0;d=c[g>>2]|0;if(!(c[a+12>>2]&1024)){if((d&131072|0)!=0?(c[a+60>>2]|0)==0:0)d=e[a+98>>1]|0;else d=xx(a)|0;c[a+164>>2]=d}else{if((d&4|0)!=0?(c[a+60>>2]|0)==0:0)d=e[a+98>>1]|0;else d=Tx(a)|0;c[a+164>>2]=d}f=a+168|0;c[f>>2]=d;if((b[a+126>>1]|0)==2)c[a+164>>2]=(d>>>0)/((e[a+98>>1]|0)>>>0)|0;k=a+172|0;c[k>>2]=JK(d<<3)|0;j=JK(c[f>>2]<<3)|0;d=a+176|0;c[d>>2]=j;a=c[k>>2]|0;if((a|0)==0|(j|0)==0){k=0;i=h;return k|0}MK(a,0,c[f>>2]<<3);MK(c[d>>2]|0,0,c[f>>2]<<3);c[g>>2]=c[g>>2]|50331648;k=1;i=h;return k|0}function cy(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,j=0;j=i;g=a+608|0;b=c[g>>2]|0;if((b|0)<=0){a=1;i=j;return a|0}f=a+12|0;d=c[f>>2]|0;if(!(d&1048576)){a=1;i=j;return a|0}h=a+588|0;if(!((e[a+94>>1]|0|256)&d)){Px(c[h>>2]|0,b);d=c[f>>2]|0;b=c[g>>2]|0}if(!(xP(a,c[((d&1024|0)==0?a+452|0:a+492|0)>>2]|0,c[h>>2]|0,b)|0)){a=0;i=j;return a|0}c[g>>2]=0;c[a+604>>2]=c[h>>2];a=1;i=j;return a|0}function dy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e;if(!((b|0)==8|(b|0)==32946))Sa(241728,241808,402,241840);if(!(jw(a,241856,1)|0)){Dw(c[a+628>>2]|0,241840,241896,d);d=0;i=e;return d|0}b=JK(136)|0;c[a+576>>2]=b;if(!b){Dw(c[a+628>>2]|0,241840,241944,d);d=0;i=e;return d|0}else{f=b+96|0;d=a+672|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[b+128>>2]=c[d>>2];c[d>>2]=104;d=a+668|0;c[b+132>>2]=c[d>>2];c[d>>2]=105;c[b+120>>2]=-1;c[b+124>>2]=0;c[a+504>>2]=142;c[a+508>>2]=143;c[a+512>>2]=221;c[a+532>>2]=106;c[a+540>>2]=106;c[a+548>>2]=106;c[a+516>>2]=144;c[a+524>>2]=222;c[a+528>>2]=145;c[a+536>>2]=107;c[a+544>>2]=107;c[a+552>>2]=107;c[a+564>>2]=241;jx(a)|0;d=1;i=e;return d|0}return 0}function ey(){var a=0,b=0;b=i;a=Afa(20)|0;i=b;return a|0}function fy(a){a=a|0;var b=0;b=i;if(a)Bfa(a);i=b;return}function gy(a){a=a|0;return (c[a+8>>2]|0)-(c[a>>2]|0)|0}function hy(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=b+d;c[a+8>>2]=b;c[a+12>>2]=0;c[a+16>>2]=8;return}function iy(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=b+d;c[a+8>>2]=b;c[a+12>>2]=0;c[a+16>>2]=0;return}function jy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;if(!e){i=o;return}l=b+16|0;m=b+12|0;n=b+8|0;h=b+4|0;b=c[l>>2]|0;k=e+-1|0;do{j=d>>>k&1;if(!b){g=c[m>>2]|0;b=g<<8&65280;c[m>>2]=b;b=(b|0)==65280?7:8;c[l>>2]=b;f=c[n>>2]|0;if(f>>>0<(c[h>>2]|0)>>>0){c[n>>2]=f+1;a[f>>0]=g;b=c[l>>2]|0}}b=b+-1|0;c[l>>2]=b;c[m>>2]=j<>2];k=k+-1|0}while(k>>>0>>0);i=o;return}function ky(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;if(!b){b=0;i=n;return b|0}k=a+16|0;l=a+12|0;m=a+8|0;h=a+4|0;e=c[k>>2]|0;f=c[l>>2]|0;j=b+-1|0;a=0;do{if(!e){g=f<<8&65280;c[l>>2]=g;e=(g|0)==65280?7:8;c[k>>2]=e;f=c[m>>2]|0;if(f>>>0<(c[h>>2]|0)>>>0){c[m>>2]=f+1;f=d[f>>0]|0|g;c[l>>2]=f}else f=g}e=e+-1|0;c[k>>2]=e;a=((f>>>e&1)<>>0>>0);i=n;return a|0}function ly(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;f=b+16|0;g=b+12|0;d=c[g>>2]|0;j=d<<8&65280;c[g>>2]=j;c[f>>2]=(j|0)==65280?7:8;j=b+8|0;e=c[j>>2]|0;h=b+4|0;if(e>>>0>=(c[h>>2]|0)>>>0){j=0;i=k;return j|0}c[j>>2]=e+1;a[e>>0]=d;if((c[f>>2]|0)!=7){j=1;i=k;return j|0}d=c[g>>2]|0;b=d<<8&65280;c[g>>2]=b;c[f>>2]=(b|0)==65280?7:8;b=c[j>>2]|0;if(b>>>0>=(c[h>>2]|0)>>>0){j=0;i=k;return j|0}c[j>>2]=b+1;a[b>>0]=d;j=1;i=k;return j|0}function my(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0;j=i;g=a+16|0;c[g>>2]=0;h=a+12|0;b=c[h>>2]|0;if((b&255|0)!=255){a=1;i=j;return a|0}e=b<<8&65280;c[h>>2]=e;c[g>>2]=(e|0)==65280?7:8;f=a+8|0;b=c[f>>2]|0;if(b>>>0>=(c[a+4>>2]|0)>>>0){a=0;i=j;return a|0}c[f>>2]=b+1;c[h>>2]=d[b>>0]|0|e;c[g>>2]=0;a=1;i=j;return a|0}function ny(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;c[g>>2]=d;if(!((e|0)!=0&e>>>0<5))Sa(242368,242424,55,242456);d=b;f=0;b=g+(e+-1)|0;while(1){a[d>>0]=a[b>>0]|0;f=f+1|0;if((f|0)==(e|0))break;else{d=d+1|0;b=b+-1|0}}i=h;return}function oy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;if(!((e|0)!=0&e>>>0<5))Sa(242368,242424,77,242480);c[d>>2]=0;f=0;d=d+(e+-1)|0;while(1){a[d>>0]=a[b>>0]|0;f=f+1|0;if((f|0)==(e|0))break;else{b=b+1|0;d=d+-1|0}}i=g;return}function py(b,d){b=b|0;d=+d;var e=0,f=0,g=0,j=0,l=0;e=i;i=i+16|0;j=e;h[j>>3]=d;j=j+8|0;h[k>>3]=d;f=c[k>>2]|0;g=c[k+4>>2]|0;l=Lga(f|0,g|0,56)|0;a[b>>0]=l;l=Lga(f|0,g|0,48)|0;a[b+1>>0]=l;l=Lga(f|0,g|0,40)|0;a[b+2>>0]=l;a[b+3>>0]=g;a[b+4>>0]=a[j+-5>>0]|0;a[b+5>>0]=a[j+-6>>0]|0;g=Lga(f|0,g|0,8)|0;a[b+6>>0]=g;a[b+7>>0]=f;i=e;return}function qy(b,c){b=b|0;c=c|0;var d=0;d=c+8|0;a[d+-1>>0]=a[b>>0]|0;a[d+-2>>0]=a[b+1>>0]|0;a[d+-3>>0]=a[b+2>>0]|0;a[d+-4>>0]=a[b+3>>0]|0;a[d+-5>>0]=a[b+4>>0]|0;a[d+-6>>0]=a[b+5>>0]|0;a[d+-7>>0]=a[b+6>>0]|0;a[c>>0]=a[b+7>>0]|0;return}function ry(b,d){b=b|0;d=+d;var e=0,f=0;e=i;f=(g[k>>2]=d,c[k>>2]|0);a[b>>0]=f>>>24;a[b+1>>0]=f>>>16;a[b+2>>0]=f>>>8;a[b+3>>0]=f;i=e;return}function sy(b,c){b=b|0;c=c|0;var d=0;d=c+4|0;a[d+-1>>0]=a[b>>0]|0;a[d+-2>>0]=a[b+1>>0]|0;a[d+-3>>0]=a[b+2>>0]|0;a[c>>0]=a[b+3>>0]|0;return}function ty(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;f=Afa(72)|0;if(!f){b=0;i=g;return b|0}d=f+0|0;e=d+72|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));c[f+64>>2]=a;a=Afa(a)|0;c[f+32>>2]=a;if(!a){Bfa(f);b=0;i=g;return b|0}c[f+36>>2]=a;a=f+68|0;if(!b){c[a>>2]=1;c[f+40>>2]=110;c[f+44>>2]=111}else{c[a>>2]=2;c[f+40>>2]=108;c[f+44>>2]=109}c[f+16>>2]=106;c[f+20>>2]=107;c[f+24>>2]=108;c[f+28>>2]=109;b=f;i=g;return b|0}function uy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;if(!((d|0)>-1|(d|0)==-1&b>>>0>4294967295))Sa(242568,242424,455,242584);f=a+48|0;g=c[f>>2]|0;if(g>>>0>=b>>>0){m=a+36|0;c[m>>2]=(c[m>>2]|0)+b;c[f>>2]=g-b;m=a+56|0;a=m;a=Iga(c[a>>2]|0,c[a+4>>2]|0,b|0,d|0)|0;c[m>>2]=a;c[m+4>>2]=I;m=d;a=b;I=m;i=n;return a|0}l=a+68|0;if(c[l>>2]&4){m=a+36|0;c[m>>2]=(c[m>>2]|0)+g;c[f>>2]=0;a=a+56|0;m=a;m=Iga(c[m>>2]|0,c[m+4>>2]|0,g|0,0)|0;c[a>>2]=m;c[a+4>>2]=I;a=(g|0)!=0;m=a?0:-1;a=a?g:-1;I=m;i=n;return a|0}if(!g){g=0;f=0}else{c[a+36>>2]=c[a+32>>2];b=Hga(b|0,d|0,g|0,0)|0;c[f>>2]=0;f=0;d=I}a:do if((d|0)>0|(d|0)==0&b>>>0>0){k=a+24|0;while(1){h=Od[c[k>>2]&255](b,d,c[a>>2]|0)|0;j=I;if((h|0)==-1&(j|0)==-1)break;b=Hga(b|0,d|0,h|0,j|0)|0;d=I;g=Iga(h|0,j|0,g|0,f|0)|0;f=I;if(!((d|0)>0|(d|0)==0&b>>>0>0))break a}_y(e,4,242504,m)|0;c[l>>2]=c[l>>2]|4;a=a+56|0;m=a;m=Iga(c[m>>2]|0,c[m+4>>2]|0,g|0,f|0)|0;c[a>>2]=m;c[a+4>>2]=I;a=(g|0)!=0|(f|0)!=0;m=a?f:-1;a=a?g:-1;I=m;i=n;return a|0}while(0);m=a+56|0;a=m;a=Iga(c[a>>2]|0,c[a+4>>2]|0,g|0,f|0)|0;c[m>>2]=a;c[m+4>>2]=I;m=f;a=g;I=m;i=n;return a|0}function vy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=i;c[a+36>>2]=c[a+32>>2];c[a+48>>2]=0;h=(Od[c[a+28>>2]&255](b,d,c[a>>2]|0)|0)==0;e=a+68|0;f=c[e>>2]|0;if(h){c[e>>2]=f|4;h=0;i=g;return h|0}else{c[e>>2]=f&-5;h=a+56|0;c[h>>2]=b;c[h+4>>2]=d;h=1;i=g;return h|0}return 0}function wy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+16|0;p=q;o=a+68|0;if(c[o>>2]&8){p=-1;a=-1;I=p;i=q;return a|0}k=a+32|0;f=c[k>>2]|0;n=a+36|0;c[n>>2]=f;l=a+48|0;j=c[l>>2]|0;do if(j){h=a+20|0;while(1){g=Od[c[h>>2]&255](f,j,c[a>>2]|0)|0;if((g|0)==-1)break;f=(c[n>>2]|0)+g|0;c[n>>2]=f;r=c[l>>2]|0;j=r-g|0;c[l>>2]=j;if((r|0)==(g|0)){m=6;break}}if((m|0)==6){f=c[k>>2]|0;break}c[o>>2]=c[o>>2]|8;_y(e,4,242536,p)|0;c[o>>2]=c[o>>2]|8;c[l>>2]=0;a=-1;r=-1;I=a;i=q;return r|0}while(0);c[n>>2]=f;a:do if((d|0)>0|(d|0)==0&b>>>0>0){k=a+24|0;g=0;f=0;while(1){h=Od[c[k>>2]&255](b,d,c[a>>2]|0)|0;j=I;if((h|0)==-1&(j|0)==-1)break;b=Hga(b|0,d|0,h|0,j|0)|0;d=I;g=Iga(h|0,j|0,g|0,f|0)|0;f=I;if(!((d|0)>0|(d|0)==0&b>>>0>0))break a}_y(e,4,242608,p)|0;c[o>>2]=c[o>>2]|8;r=a+56|0;a=r;a=Iga(c[a>>2]|0,c[a+4>>2]|0,g|0,f|0)|0;c[r>>2]=a;c[r+4>>2]=I;r=(g|0)!=0|(f|0)!=0;a=r?f:-1;r=r?g:-1;I=a;i=q;return r|0}else{g=0;f=0}while(0);a=a+56|0;r=a;r=Iga(c[r>>2]|0,c[r+4>>2]|0,g|0,f|0)|0;c[a>>2]=r;c[a+4>>2]=I;a=f;r=g;I=a;i=q;return r|0}function xy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+16|0;k=p;m=a+32|0;f=c[m>>2]|0;n=a+36|0;c[n>>2]=f;o=a+48|0;g=c[o>>2]|0;do if(!g)g=a;else{j=a+20|0;while(1){h=Od[c[j>>2]&255](f,g,c[a>>2]|0)|0;if((h|0)==-1)break;f=(c[n>>2]|0)+h|0;c[n>>2]=f;q=c[o>>2]|0;g=q-h|0;c[o>>2]=g;if((q|0)==(h|0)){l=6;break}}if((l|0)==6){g=a;f=c[m>>2]|0;break}q=a+68|0;c[q>>2]=c[q>>2]|8;_y(e,4,242536,k)|0;c[q>>2]=c[q>>2]|8;q=0;i=p;return q|0}while(0);c[n>>2]=f;c[o>>2]=0;if(!(Od[c[a+28>>2]&255](b,d,c[g>>2]|0)|0)){q=a+68|0;c[q>>2]=c[q>>2]|8;q=0;i=p;return q|0}else{q=a+56|0;c[q>>2]=b;c[q+4>>2]=d;q=1;i=p;return q|0}return 0}function yy(a,b,c){a=a|0;b=b|0;c=c|0;return -1}function zy(a,b,c){a=a|0;b=b|0;c=c|0;return -1}function Ay(a,b,c){a=a|0;b=b|0;c=c|0;c=i;I=-1;i=c;return -1}function By(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function Cy(a){a=a|0;var b=0,d=0;d=i;if(!a){i=d;return}b=c[a+4>>2]|0;if(b)Id[b&511](c[a>>2]|0);Bfa(c[a+32>>2]|0);Bfa(a);i=d;return}function Dy(a,b){a=a|0;b=b|0;var d=0;d=i;if((a|0)!=0?(c[a+68>>2]&2|0)!=0:0)c[a+16>>2]=b;i=d;return}function Ey(a,b){a=a|0;b=b|0;if(a)c[a+28>>2]=b;return}function Fy(a,b){a=a|0;b=b|0;var d=0;d=i;if((a|0)!=0?(c[a+68>>2]&1|0)!=0:0)c[a+20>>2]=b;i=d;return}function Gy(a,b){a=a|0;b=b|0;if(a)c[a+24>>2]=b;return}function Hy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!a){i=e;return}c[a>>2]=b;c[a+4>>2]=d;i=e;return}function Iy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!a){i=e;return}a=a+8|0;c[a>>2]=b;c[a+4>>2]=d;i=e;return}function Jy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;t=u;r=a+48|0;f=c[r>>2]|0;if(f>>>0>=d>>>0){t=a+36|0;Aga(b|0,c[t>>2]|0,d|0)|0;c[t>>2]=(c[t>>2]|0)+d;c[r>>2]=(c[r>>2]|0)-d;t=a+56|0;e=t;e=Iga(c[e>>2]|0,c[e+4>>2]|0,d|0,0)|0;c[t>>2]=e;c[t+4>>2]=I;t=d;i=u;return t|0}s=a+68|0;if(c[s>>2]&4){t=a+36|0;Aga(b|0,c[t>>2]|0,f|0)|0;e=c[r>>2]|0;c[t>>2]=(c[t>>2]|0)+e;t=a+56|0;s=t;e=Iga(c[s>>2]|0,c[s+4>>2]|0,e|0,0)|0;c[t>>2]=e;c[t+4>>2]=I;c[r>>2]=0;t=(f|0)!=0?f:-1;i=u;return t|0}if(!f){g=c[a+32>>2]|0;c[a+36>>2]=g;q=a+56|0;f=0}else{p=a+36|0;Aga(b|0,c[p>>2]|0,f|0)|0;g=c[a+32>>2]|0;c[p>>2]=g;p=c[r>>2]|0;q=a+56|0;n=q;n=Iga(c[n>>2]|0,c[n+4>>2]|0,p|0,0)|0;o=q;c[o>>2]=n;c[o+4>>2]=I;c[r>>2]=0;d=d-p|0;b=b+p|0}m=a+64|0;n=a+16|0;o=a+32|0;p=a+36|0;while(1){h=c[m>>2]|0;j=c[n>>2]|0;k=c[a>>2]|0;if(d>>>0>>0){j=Od[j&255](g,h,k)|0;c[r>>2]=j;if((j|0)==-1){g=11;break}if(j>>>0>=d>>>0){g=14;break}Aga(b|0,c[p>>2]|0,j|0)|0;g=c[o>>2]|0;c[p>>2]=g;h=c[r>>2]|0;k=q;k=Iga(c[k>>2]|0,c[k+4>>2]|0,h|0,0)|0;l=I;f=j+f|0}else{h=Od[j&255](b,d,k)|0;c[r>>2]=h;if((h|0)==-1){g=16;break}f=h+f|0;if(h>>>0>=d>>>0){g=20;break}g=c[o>>2]|0;c[p>>2]=g;k=q;k=Iga(c[k>>2]|0,c[k+4>>2]|0,h|0,0)|0;l=I}j=q;c[j>>2]=k;c[j+4>>2]=l;c[r>>2]=0;d=d-h|0;b=b+h|0}if((g|0)==11){_y(e,4,242504,t)|0;c[r>>2]=0;c[s>>2]=c[s>>2]|4;t=(f|0)!=0?f:-1;i=u;return t|0}else if((g|0)==14){Aga(b|0,c[p>>2]|0,d|0)|0;c[p>>2]=(c[p>>2]|0)+d;c[r>>2]=(c[r>>2]|0)-d;e=q;e=Iga(c[e>>2]|0,c[e+4>>2]|0,d|0,0)|0;t=q;c[t>>2]=e;c[t+4>>2]=I;t=f+d|0;i=u;return t|0}else if((g|0)==16){_y(e,4,242504,t)|0;c[r>>2]=0;c[s>>2]=c[s>>2]|4;t=(f|0)!=0?f:-1;i=u;return t|0}else if((g|0)==20){e=q;e=Iga(c[e>>2]|0,c[e+4>>2]|0,h|0,0)|0;t=q;c[t>>2]=e;c[t+4>>2]=I;c[p>>2]=c[o>>2];c[r>>2]=0;t=f;i=u;return t|0}return 0}function Ky(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+16|0;r=t;m=a+68|0;if(c[m>>2]&8){a=-1;i=t;return a|0}q=a+64|0;f=c[q>>2]|0;s=a+48|0;k=c[s>>2]|0;g=f-k|0;a:do if(g>>>0>>0){n=a+32|0;o=a+36|0;p=a+20|0;h=a+56|0;j=f;l=g;f=0;b:while(1){if((j|0)==(k|0))g=c[n>>2]|0;else{Aga(c[o>>2]|0,b|0,l|0)|0;g=c[n>>2]|0;c[o>>2]=g;k=(c[s>>2]|0)+l|0;c[s>>2]=k;u=h;u=Iga(c[u>>2]|0,c[u+4>>2]|0,l|0,0)|0;j=h;c[j>>2]=u;c[j+4>>2]=I;d=d-l|0;b=b+l|0;f=l+f|0}c[o>>2]=g;if(!k)k=0;else{do{j=Od[c[p>>2]&255](g,k,c[a>>2]|0)|0;if((j|0)==-1)break b;g=(c[o>>2]|0)+j|0;c[o>>2]=g;u=c[s>>2]|0;k=u-j|0;c[s>>2]=k}while((u|0)!=(j|0));g=c[n>>2]|0}c[o>>2]=g;j=c[q>>2]|0;l=j-k|0;if(d>>>0<=l>>>0)break a}c[m>>2]=c[m>>2]|8;_y(e,4,242536,r)|0;u=-1;i=t;return u|0}else{h=a+56|0;g=c[a+36>>2]|0;f=0}while(0);a=a+36|0;Aga(g|0,b|0,d|0)|0;c[a>>2]=(c[a>>2]|0)+d;c[s>>2]=(c[s>>2]|0)+d;a=h;a=Iga(c[a>>2]|0,c[a+4>>2]|0,d|0,0)|0;u=h;c[u>>2]=a;c[u+4>>2]=I;u=f+d|0;i=t;return u|0}function Ly(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+16|0;k=n;g=a+32|0;d=c[g>>2]|0;m=a+36|0;c[m>>2]=d;h=a+48|0;e=c[h>>2]|0;do if(e){j=a+20|0;while(1){f=Od[c[j>>2]&255](d,e,c[a>>2]|0)|0;if((f|0)==-1)break;d=(c[m>>2]|0)+f|0;c[m>>2]=d;o=c[h>>2]|0;e=o-f|0;c[h>>2]=e;if((o|0)==(f|0)){l=6;break}}if((l|0)==6){d=c[g>>2]|0;break}o=a+68|0;c[o>>2]=c[o>>2]|8;_y(b,4,242536,k)|0;o=0;i=n;return o|0}while(0);c[m>>2]=d;o=1;i=n;return o|0}function My(a){a=a|0;var b=0;b=i;a=a+56|0;I=c[a+4>>2]|0;i=b;return c[a>>2]|0}function Ny(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=i;e=a+56|0;d=c[e>>2]|0;e=c[e+4>>2]|0;if(!((e|0)>-1|(e|0)==-1&d>>>0>4294967295))Sa(242624,242424,551,242656);b=a+8|0;a=c[b>>2]|0;b=c[b+4>>2]|0;if(b>>>0>>0|(b|0)==(e|0)&a>>>0>>0)Sa(242688,242424,552,242656);else{g=(a|0)==0&(b|0)==0;d=Hga(a|0,b|0,d|0,e|0)|0;I=g?0:I;i=f;return (g?0:d)|0}return 0}function Oy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if((d|0)>-1|(d|0)==-1&b>>>0>4294967295){e=ce[c[a+40>>2]&255](a,b,d,e)|0;i=f;return e|0}else Sa(242568,242424,560,242760);return 0}function Py(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if((d|0)>-1|(d|0)==-1&b>>>0>4294967295){e=ce[c[a+44>>2]&255](a,b,d,e)|0;i=f;return e|0}else Sa(242568,242424,607,242776);return 0}function Qy(a){a=a|0;return (c[a+28>>2]|0)!=109|0}function Ry(a){a=a|0;var b=0;b=i;a=KP(a,24)|0;i=b;return a|0}function Sy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+32|0;B=D+16|0;C=D;m=c[a+24>>2]|0;k=c[m+8>>2]|0;l=c[m>>2]|0;h=c[m+12>>2]|0;j=c[m+4>>2]|0;A=(c[a+8>>2]|0)-(c[a>>2]|0)|0;g=b+-1|0;f=(g|0)==0;if(f)b=0;else{b=m;d=g;e=0;do{y=b;b=b+136|0;z=(c[y+144>>2]|0)-(c[b>>2]|0)|0;z=e>>>0>>0?z:e;y=(c[y+148>>2]|0)-(c[y+140>>2]|0)|0;e=z>>>0>>0?y:z;d=d+-1|0}while((d|0)!=0);b=e<<2}z=Efa(16,b)|0;c[B>>2]=z;if(!z){C=0;i=D;return C|0}c[C>>2]=z;if(!f){s=a+32|0;t=B+8|0;u=C+8|0;v=B+4|0;w=B+12|0;x=C+4|0;y=C+12|0;r=h-j|0;q=k-l|0;do{o=c[s>>2]|0;h=m;m=m+136|0;c[t>>2]=q;c[u>>2]=r;l=c[h+144>>2]|0;n=c[m>>2]|0;d=q;q=l-n|0;b=c[h+148>>2]|0;h=h+140|0;p=c[h>>2]|0;f=r;r=b-p|0;c[v>>2]=q-d;c[w>>2]=(n|0)%2|0;p=(b|0)==(p|0);if(!p){a=q<<2;b=0;while(1){e=ea(b,A)|0;k=o+(e<<2)|0;if(d){j=k;f=z+(c[w>>2]<<2)|0;while(1){d=d+-1|0;c[f>>2]=c[j>>2];if(!d)break;else{j=j+4|0;f=f+8|0}}}j=c[v>>2]|0;if(j){f=o+((c[t>>2]|0)+e<<2)|0;d=z+(1-(c[w>>2]|0)<<2)|0;while(1){j=j+-1|0;c[d>>2]=c[f>>2];if(!j)break;else{f=f+4|0;d=d+8|0}}}LP(B);Aga(k|0,z|0,a|0)|0;b=b+1|0;if((b|0)==(r|0))break;d=c[t>>2]|0}f=c[u>>2]|0;b=c[h>>2]|0}c[x>>2]=r-f;c[y>>2]=(b|0)%2|0;a:do if((l|0)!=(n|0)){b=0;while(1){if(f){d=o+(b<<2)|0;e=z+(c[y>>2]<<2)|0;while(1){f=f+-1|0;c[e>>2]=c[d>>2];if(!f)break;else{d=d+(A<<2)|0;e=e+8|0}}}f=c[x>>2]|0;if(f){d=o+((ea(c[u>>2]|0,A)|0)+b<<2)|0;e=z+(1-(c[y>>2]|0)<<2)|0;while(1){f=f+-1|0;c[e>>2]=c[d>>2];if(!f)break;else{d=d+(A<<2)|0;e=e+8|0}}}LP(C);if(!p){f=0;do{c[o+((ea(f,A)|0)+b<<2)>>2]=c[z+(f<<2)>>2];f=f+1|0}while((f|0)!=(r|0))}b=b+1|0;if((b|0)==(q|0))break a;f=c[u>>2]|0}}while(0);g=g+-1|0}while((g|0)!=0)}Bfa(z);C=1;i=D;return C|0}function Ty(a){a=a|0;if(!a)a=0;else a=(a+-1|0)>>>0<2?1:2;return a|0}function Uy(a,b){a=a|0;b=b|0;return +(+h[242792+(b*80|0)+(a<<3)>>3])}function Vy(a){a=a|0;var b=0;b=i;a=KP(a,25)|0;i=b;return a|0}function Wy(a){a=a|0;return 0}function Xy(a,b){a=a|0;b=b|0;return +(+h[243112+(b*80|0)+(a<<3)>>3])}function Yy(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;l=a+4|0;m=((c[l>>2]|0)*3|0)+-2|0;if(!m){i=q;return}n=a+20|0;o=a+24|0;p=0;do{if(p){f=p+-1|0;e=(f>>>0)%3|0;g=e+1|0;f=-2-((f>>>0)/3|0)+(c[l>>2]|0)|0;if(c[n>>2]|0)if(!e){e=1;g=1}else{e=g;g=(g|0)==2?1:2}else{e=g;g=0}}else{e=0;f=(c[l>>2]|0)+-1|0;g=0}if(!(c[o>>2]|0))d=8192.0;else d=+(1<>3]*8192.0;j=~~+S(+d);k=g+b|0;if((j|0)>1){e=j;g=0;while(1){e=e>>1;if((e|0)<=1){f=j;e=0;break}else g=g+1|0}do{f=f>>1;e=e+1|0}while((f|0)>1);g=g+-12|0}else{g=-13;e=0}e=11-e|0;if((e|0)<0)e=j>>0-e;else e=j<>2]=e&2047;c[a+(p<<3)+28>>2]=k-g;p=p+1|0}while((p|0)!=(m|0));i=q;return}function Zy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=i;i=i+32|0;M=P+16|0;N=P;m=c[a+24>>2]|0;n=(c[m+8>>2]|0)-(c[m>>2]|0)|0;l=(c[m+12>>2]|0)-(c[m+4>>2]|0)|0;K=a+8|0;j=c[K>>2]|0;k=c[a>>2]|0;L=j-k|0;h=b+-1|0;f=(h|0)==0;if(f)b=80;else{b=m;d=h;e=0;do{I=b;b=b+136|0;J=(c[I+144>>2]|0)-(c[b>>2]|0)|0;J=e>>>0>>0?J:e;I=(c[I+148>>2]|0)-(c[I+140>>2]|0)|0;e=J>>>0>>0?I:J;d=d+-1|0}while((d|0)!=0);b=(e<<4)+80|0}J=Efa(16,b)|0;c[M>>2]=J;c[N>>2]=J;if(f){Bfa(J);i=P;return 1}x=a+32|0;y=a+12|0;z=a+4|0;A=M+8|0;B=N+8|0;C=M+4|0;D=M+12|0;E=N+4|0;F=N+12|0;G=L<<1;H=L<<2;I=L*3|0;b=h;f=k;d=m;e=n;while(1){m=c[x>>2]|0;f=ea((c[y>>2]|0)-(c[z>>2]|0)|0,j-f|0)|0;c[A>>2]=e;c[B>>2]=l;v=d+136|0;q=c[d+144>>2]|0;r=c[v>>2]|0;w=q-r|0;t=c[d+148>>2]|0;p=d+140|0;s=c[p>>2]|0;u=t-s|0;c[C>>2]=w-e;c[D>>2]=(r|0)%2|0;if((u|0)>3){j=(w|0)>0;e=(t+-4-s|0)>>>2;o=ea(L,-4-(e<<2)|0)|0;e=m+(ea(L,(e<<4)+16|0)|0)|0;h=m;k=f;n=u;while(1){NP(M,h,L,k);OP(M);if(j){d=w;do{d=d+-1|0;g[h+(d<<2)>>2]=+g[J+(d<<4)>>2];g[h+(d+L<<2)>>2]=+g[J+(d<<4)+4>>2];g[h+(d+G<<2)>>2]=+g[J+(d<<4)+8>>2];g[h+(d+I<<2)>>2]=+g[J+(d<<4)+12>>2]}while((d|0)>0)}n=n+-4|0;if((n|0)<=3)break;else{h=h+(H<<2)|0;k=k-H|0}}f=f+o|0}else e=m;d=u&3;do if(!d)O=20;else{NP(M,e,L,f);OP(M);if((w|0)>0)f=w;else{j=u-l|0;c[E>>2]=j;e=(c[p>>2]|0)%2|0;c[F>>2]=e;h=m;break}do{f=f+-1|0;if((d|0)==3){g[e+(f+G<<2)>>2]=+g[J+(f<<4)+8>>2];O=17}else if((d|0)==1)O=18;else if((d|0)==2)O=17;if((O|0)==17){g[e+(f+L<<2)>>2]=+g[J+(f<<4)+4>>2];O=18}if((O|0)==18){O=0;g[e+(f<<2)>>2]=+g[J+(f<<4)>>2]}}while((f|0)>0);O=20}while(0);if((O|0)==20){O=0;n=u-l|0;c[E>>2]=n;e=(c[p>>2]|0)%2|0;c[F>>2]=e;if((w|0)>3){k=(t|0)==(s|0);h=m+((q+-4-r+4&-4)<<2)|0;j=w;while(1){if((l|0)>0){f=0;do{r=J+((f<<1)+e<<4)|0;q=m+((ea(f,L)|0)<<2)|0;c[r+0>>2]=c[q+0>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];f=f+1|0}while((f|0)!=(l|0))}f=1-e|0;if((n|0)>0){d=0;do{r=J+(f+(d<<1)<<4)|0;q=m+((ea(d+l|0,L)|0)<<2)|0;c[r+0>>2]=c[q+0>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];d=d+1|0}while((d|0)!=(n|0))}OP(N);if(!k){f=0;do{r=m+((ea(f,L)|0)<<2)|0;q=J+(f<<4)|0;c[r+0>>2]=c[q+0>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];f=f+1|0}while((f|0)!=(u|0))}j=j+-4|0;if((j|0)<=3)break;else m=m+16|0}j=n}else{j=n;h=m}}m=w&3;if(m){if((l|0)>0){f=m<<2;d=0;do{Aga(J+((d<<1)+e<<4)|0,h+((ea(d,L)|0)<<2)|0,f|0)|0;d=d+1|0}while((d|0)!=(l|0))}f=1-e|0;if((j|0)>0){d=m<<2;e=0;do{Aga(J+(f+(e<<1)<<4)|0,h+((ea(e+l|0,L)|0)<<2)|0,d|0)|0;e=e+1|0}while((e|0)!=(j|0))}OP(N);if((t|0)!=(s|0)){f=m<<2;d=0;do{Aga(h+((ea(d,L)|0)<<2)|0,J+(d<<4)|0,f|0)|0;d=d+1|0}while((d|0)!=(u|0))}}b=b+-1|0;if(!b)break;j=c[K>>2]|0;f=c[a>>2]|0;l=u;d=v;e=w}Bfa(J);i=P;return 1}function _y(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+528|0;g=j;h=j+16|0;do if(a){if((b|0)==1){b=a;f=a+12|0}else if((b|0)==2){b=a+4|0;f=a+16|0}else if((b|0)==4){b=a+8|0;f=a+20|0}else{b=0;break}a=c[b>>2]|0;b=c[f>>2]|0;if(b)if(!d)b=1;else{Cga(h|0,0,512)|0;c[g>>2]=e;iga(h,d,g)|0;Jd[b&255](h,a);b=1}else b=0}else b=0;while(0);i=j;return b|0}function $y(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=75;c[a+20>>2]=75;c[a+16>>2]=75;return}function az(){var a=0,b=0,d=0,e=0;e=i;d=Afa(12)|0;if(!d){d=0;i=e;return d|0}a=d;c[a>>2]=0;c[a+4>>2]=0;c[d+4>>2]=10;a=Afa(40)|0;c[d+8>>2]=a;if(!a){Bfa(d);d=0;i=e;return d|0}else{a=a+0|0;b=a+40|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));i=e;return d|0}return 0}function bz(a){a=a|0;var b=0,d=0;d=i;if(!a){i=d;return}b=c[a+8>>2]|0;if(b)Bfa(b);Bfa(a);i=d;return}function cz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;f=a+4|0;e=c[f>>2]|0;d=c[a>>2]|0;do if((e|0)==(d|0)){e=e+10|0;c[f>>2]=e;d=a+8|0;e=Dfa(c[d>>2]|0,e<<2)|0;if(e){c[d>>2]=e;d=c[a>>2]|0;break}Bfa(c[d>>2]|0);c[f>>2]=0;c[a>>2]=0;$b(243432,52,1,c[q>>2]|0)|0;a=0;i=g;return a|0}else e=c[a+8>>2]|0;while(0);c[e+(d<<2)>>2]=b;c[a>>2]=d+1;a=1;i=g;return a|0}function dz(a){a=a|0;return c[a>>2]|0}function ez(a){a=a|0;return c[a+8>>2]|0}function fz(a){a=a|0;c[a>>2]=0;return}function gz(){var a=0,b=0;b=i;a=Cfa(1,36)|0;i=b;return a|0}function hz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;h=i;e=Cfa(1,36)|0;if(!e){a=e;i=h;return a|0}c[e+20>>2]=d;c[e+16>>2]=a;f=Cfa(1,a*52|0)|0;c[e+24>>2]=f;if(!f){$b(243488,37,1,c[q>>2]|0)|0;d=c[e+28>>2]|0;if(d)Bfa(d);Bfa(e);a=0;i=h;return a|0}if(!a){a=e;i=h;return a|0}else d=0;while(1){c[f+(d*52|0)>>2]=c[b+(d*36|0)>>2];c[f+(d*52|0)+4>>2]=c[b+(d*36|0)+4>>2];j=c[b+(d*36|0)+8>>2]|0;c[f+(d*52|0)+8>>2]=j;k=c[b+(d*36|0)+12>>2]|0;c[f+(d*52|0)+12>>2]=k;c[f+(d*52|0)+16>>2]=c[b+(d*36|0)+16>>2];c[f+(d*52|0)+20>>2]=c[b+(d*36|0)+20>>2];c[f+(d*52|0)+24>>2]=c[b+(d*36|0)+24>>2];c[f+(d*52|0)+28>>2]=c[b+(d*36|0)+28>>2];c[f+(d*52|0)+32>>2]=c[b+(d*36|0)+32>>2];j=Cfa(ea(k,j)|0,4)|0;c[f+(d*52|0)+44>>2]=j;d=d+1|0;if(!j)break;if(d>>>0>=a>>>0){g=17;break}}if((g|0)==17){i=h;return e|0}$b(243488,37,1,c[q>>2]|0)|0;if(f){b=0;do{d=c[f+(b*52|0)+44>>2]|0;if(d)Bfa(d);b=b+1|0}while(b>>>0>>0);Bfa(f)}d=c[e+28>>2]|0;if(d)Bfa(d);Bfa(e);g=0;i=h;return g|0}function iz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;j=i;if(!a){i=j;return}g=a+24|0;b=c[g>>2]|0;if(b){h=a+16|0;d=c[h>>2]|0;if(d){f=0;do{e=c[b+(f*52|0)+44>>2]|0;if(e){Bfa(e);d=c[h>>2]|0;b=c[g>>2]|0}f=f+1|0}while(f>>>0>>0)}Bfa(b)}b=c[a+28>>2]|0;if(b)Bfa(b);Bfa(a);i=j;return}function jz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;f=c[b+4>>2]|0;d=c[a>>2]|0;e=c[b+8>>2]|0;h=c[a+4>>2]|0;g=(ea(c[b+12>>2]|0,c[b+24>>2]|0)|0)+f|0;j=c[a+8>>2]|0;b=(ea(c[b+16>>2]|0,c[b+28>>2]|0)|0)+e|0;k=c[a+12>>2]|0;n=c[a+16>>2]|0;if(!n){i=o;return}m=((f|0)>(d|0)?f:d)+-1|0;l=((e|0)>(h|0)?e:h)+-1|0;j=((g|0)<(j|0)?g:j)+-1|0;g=((b|0)<(k|0)?b:k)+-1|0;h=0;f=c[a+24>>2]|0;while(1){b=c[f>>2]|0;if(!b){b=4;break}d=(m+b|0)/(b|0)|0;e=c[f+4>>2]|0;if(!e){b=6;break}a=(l+e|0)/(e|0)|0;k=((j+b|0)/(b|0)|0)-d|0;b=c[f+40>>2]|0;q=1<>31;k=Iga(k|0,((k|0)<0)<<31>>31|0,-1,-1)|0;k=Iga(k|0,I|0,q|0,p|0)|0;k=zga(k|0,I|0,b|0)|0;e=((g+e|0)/(e|0)|0)-a|0;e=Iga(e|0,((e|0)<0)<<31>>31|0,-1,-1)|0;e=Iga(e|0,I|0,q|0,p|0)|0;e=zga(e|0,I|0,b|0)|0;c[f+8>>2]=k;c[f+12>>2]=e;c[f+16>>2]=d;c[f+20>>2]=a;h=h+1|0;if(h>>>0>=n>>>0){b=8;break}else f=f+52|0}if((b|0)==4)Sa(243632,243640,105,243680);else if((b|0)==6)Sa(243632,243640,105,243680);else if((b|0)==8){i=o;return}}function kz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;if(!a)Sa(243528,243552,144,243584);if(!b)Sa(243608,243552,145,243584);c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];k=b+24|0;d=c[k>>2]|0;j=b+16|0;if(d){e=c[j>>2]|0;if(e){f=0;do{g=c[d+(f*52|0)+44>>2]|0;if(g){Bfa(g);e=c[j>>2]|0;d=c[k>>2]|0}f=f+1|0}while(f>>>0>>0)}Bfa(d);c[k>>2]=0}d=c[a+16>>2]|0;c[j>>2]=d;e=Afa(d*52|0)|0;c[k>>2]=e;if(!e){c[k>>2]=0;c[j>>2]=0;i=l;return}if(d){h=a+24|0;f=0;do{d=e+(f*52|0)+0|0;g=(c[h>>2]|0)+(f*52|0)+0|0;e=d+52|0;do{c[d>>2]=c[g>>2];d=d+4|0;g=g+4|0}while((d|0)<(e|0));e=c[k>>2]|0;c[e+(f*52|0)+44>>2]=0;f=f+1|0}while(f>>>0<(c[j>>2]|0)>>>0)}c[b+20>>2]=c[a+20>>2];f=a+32|0;d=c[f>>2]|0;g=b+32|0;c[g>>2]=d;if(!d){c[b+28>>2]=0;i=l;return}e=Afa(d)|0;d=b+28|0;c[d>>2]=e;if(!e){c[d>>2]=0;c[g>>2]=0;i=l;return}else{Aga(e|0,c[a+28>>2]|0,c[f>>2]|0)|0;i=l;return}}function lz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;y=d<<2;z=Afa(y+(d*12|0)|0)|0;if(!z){a=0;i=B;return a|0}A=z+y|0;Cga(z|0,0,y|0)|0;w=d+-1|0;v=(d|0)==0;if(!v){e=0;f=z;while(1){c[f>>2]=e;e=e+1|0;if((e|0)==(d|0))break;else f=f+4|0}}a:do if(w){q=w;r=0;e=0;s=a;t=1;u=z;while(1){l=s+(r<<2)|0;if(r>>>0>>0){k=r;f=l;j=0.0}else break;while(1){h=+g[f>>2];if(!(h>0.0))h=-h;x=h>j;e=x?k:e;j=x?h:j;k=k+1|0;if((k|0)==(d|0))break;else f=f+(d<<2)|0}if(j==0.0)break;if((e|0)!=(r|0)){x=e-r|0;m=u+(x<<2)|0;k=c[u>>2]|0;c[u>>2]=c[m>>2];c[m>>2]=k;x=s+((ea(x,d)|0)<<2)|0;Aga(A|0,x|0,y|0)|0;Aga(x|0,s|0,y|0)|0;Aga(s|0,A|0,y|0)|0}f=r;r=r+1|0;j=+g[l>>2];if(t>>>0>>0){k=s+(r<<2)|0;p=r+q|0;m=t;f=s+(f+d<<2)|0;while(1){h=+g[f>>2]/j;g[f>>2]=h;n=t;o=f;l=k;while(1){o=o+4|0;g[o>>2]=+g[o>>2]-h*+g[l>>2];n=n+1|0;if((n|0)==(d|0))break;else l=l+4|0}m=m+1|0;if((m|0)==(d|0))break;else f=f+(p<<2)|0}}if(r>>>0>=w>>>0)break a;else{q=q+-1|0;s=s+(d<<2)|0;t=t+1|0;u=u+4|0}}Bfa(z);a=0;i=B;return a|0}while(0);e=d<<1;x=A+(e<<2)|0;if(!v){v=A+(w+d<<2)|0;r=A+(e+w<<2)|0;s=a+((ea(d,d)|0)+-1<<2)|0;t=~d;u=0;q=b;while(1){Cga(A|0,0,y|0)|0;g[A+(u<<2)>>2]=1.0;l=0;m=z;n=x;o=a;while(1){if(!l)h=0.0;else{e=1;f=x;k=o;h=0.0;while(1){h=h+ +g[k>>2]*+g[f>>2];e=e+1|0;if(e>>>0>l>>>0)break;else{f=f+4|0;k=k+4|0}}}g[n>>2]=+g[A+(c[m>>2]<<2)>>2]-h;l=l+1|0;if((l|0)==(d|0)){p=d;o=v;l=x;k=r;m=s;break}else{m=m+4|0;n=n+4|0;o=o+(d<<2)|0}}while(1){e=p;p=p+-1|0;j=+g[m>>2];if(e>>>0>>0){n=l;f=m;h=0.0;while(1){f=f+4|0;h=h+ +g[f>>2]*+g[n>>2];e=e+1|0;if((e|0)==(d|0))break;else n=n+4|0}}else h=0.0;l=l+-4|0;g[o>>2]=(+g[k>>2]-h)/j;if(!p){e=0;f=q;break}else{o=o+-4|0;k=k+-4|0;m=m+(t<<2)|0}}while(1){g[f>>2]=+g[A+(e+d<<2)>>2];e=e+1|0;if((e|0)==(d|0))break;else f=f+(d<<2)|0}u=u+1|0;if((u|0)==(d|0))break;else q=q+4|0}}Bfa(z);a=1;i=B;return a|0}function mz(a){a=a|0;var b=0,d=0,e=0;d=i;b=243696;while(1){e=c[b>>2]|0;if((e|0)==-1|(e|0)==(a|0))break;else b=b+12|0}i=d;return b+4|0}function nz(a,b){a=a|0;b=b|0;var d=0;d=i;if(!((a|0)!=0&(b|0)!=0)){i=d;return}c[a+164>>2]=c[b+4>>2];c[a+160>>2]=c[b>>2];i=d;return}function oz(){var b=0,d=0,e=0;d=i;b=Afa(208)|0;do if(b){Cga(b|0,0,208)|0;c[b>>2]=0;a[b+180>>0]=0;e=Afa(1e3)|0;c[b+44>>2]=e;if(!e){pz(b);b=0;break}c[b+48>>2]=1e3;e=az()|0;c[b+188>>2]=e;if(!e){pz(b);b=0;break}e=az()|0;c[b+184>>2]=e;if(!e){pz(b);b=0}}else b=0;while(0);i=d;return b|0}function pz(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;if(!b){i=j;return}if(!(c[b>>2]|0)){d=b+36|0;e=c[d>>2]|0;if(e){Bfa(e);c[d>>2]=0}d=b+24|0;e=c[d>>2]|0;if(e){Bfa(e);c[d>>2]=0;c[b+28>>2]=0}d=b+44|0;e=c[d>>2]|0;if(e){Bfa(e);c[d>>2]=0;c[b+48>>2]=0}}else{d=b+12|0;e=c[d>>2]|0;if(e){QP(e);Bfa(c[d>>2]|0);c[d>>2]=0}d=b+16|0;e=c[d>>2]|0;if(e){Bfa(e);c[d>>2]=0;c[b+20>>2]=0}}sB(c[b+200>>2]|0);g=b+88|0;h=b+156|0;d=c[h>>2]|0;if(d){e=ea(c[b+112>>2]|0,c[b+116>>2]|0)|0;if(e){f=0;while(1){QP(d);f=f+1|0;if((f|0)==(e|0))break;else d=d+5632|0}d=c[h>>2]|0}Bfa(d);c[h>>2]=0}h=b+136|0;Bfa(c[h>>2]|0);c[h>>2]=0;c[b+120>>2]=0;h=b+108|0;Bfa(c[h>>2]|0);c[h>>2]=0;if(!(a[b+180>>0]&2)){h=b+172|0;Bfa(c[h>>2]|0);c[h>>2]=0}d=g+0|0;e=d+96|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));h=b+184|0;bz(c[h>>2]|0);c[h>>2]=0;bz(c[b+188>>2]|0);c[h>>2]=0;h=b+192|0;uz(c[h>>2]|0);c[h>>2]=0;h=b+80|0;iz(c[h>>2]|0);c[h>>2]=0;iz(c[b+84>>2]|0);Bfa(b);i=j;return}function qz(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var j=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;U=i;i=i+32|0;I=U;v=U+25|0;u=U+16|0;if(!((b|0)!=0&(d|0)!=0&(e|0)!=0)){i=U;return}R=b+112|0;c[R>>2]=1;S=b+116|0;c[S>>2]=1;w=d+18676|0;j=c[w>>2]|0;if(!j)j=0;else if((j|0)==2|(j|0)==1){c[d+18684>>2]=3;Q=5}else if((j|0)==3){c[d+18684>>2]=4;Q=5}else Q=5;a:do if((Q|0)==5){c[d>>2]=0;c[d+12>>2]=1;c[d+16>>2]=1;a[d+18689>>0]=67;a[d+18688>>0]=1;c[d+4>>2]=0;c[d+8>>2]=0;c[d+18180>>2]=0;c[d+18184>>2]=0;c[d+5596>>2]=32;c[d+5600>>2]=32;c[d+5604>>2]=0;c[d+5612>>2]=-1;c[d+18188>>2]=1;c[d+18192>>2]=1;c[d+5608>>2]=1;l=d+4788|0;m=c[l>>2]|0;if((m|0)>1){c[I>>2]=m;_y(f,2,251440,I)|0;c[l>>2]=1;j=c[w>>2]|0}do if((j|0)==2|(j|0)==1){j=d+5592|0;l=c[j>>2]|0;if((l|0)>6){c[I>>2]=l+1;_y(f,2,251568,I)|0;c[j>>2]=6;l=6}}else if((j|0)==3){j=d+5592|0;l=c[j>>2]|0;if((l|0)<2){c[I>>2]=l+1;_y(f,2,251720,I)|0;c[j>>2]=1;l=1;break}if((l|0)>7){c[I>>2]=l+1;_y(f,2,251880,I)|0;c[j>>2]=7;l=7}}else l=c[d+5592>>2]|0;while(0);m=d+40|0;c[m>>2]=c[m>>2]|1;m=d+5592|0;O=l+-1|0;j=d+5620|0;c[j>>2]=O;if((O|0)>0){l=0;do{c[d+(l<<2)+5624>>2]=256;c[d+(l<<2)+5756>>2]=256;l=l+1|0}while((l|0)<(c[j>>2]|0))}c[d+44>>2]=4;j=c[w>>2]|0;do if((j|0)==3){Q=c[m>>2]|0;c[d+96>>2]=1;c[d+48>>2]=0;c[d+52>>2]=0;c[d+56>>2]=1;O=Q+-1|0;c[d+60>>2]=O;c[d+64>>2]=3;c[d+80>>2]=4;c[d+244>>2]=1;c[d+196>>2]=O;c[d+200>>2]=0;c[d+204>>2]=1;c[d+208>>2]=Q;c[d+212>>2]=3;c[d+228>>2]=4;c[d+4784>>2]=2;c[d+20>>2]=1;Q=21}else{c[d+4784>>2]=0;c[d+20>>2]=1;if((j|0)==1){Q=21;break}else if((j|0)!=2){l=e+16|0;break}l=e+16|0;n=c[e+24>>2]|0;j=ea(c[n+8>>2]|0,c[l>>2]|0)|0;j=ea(j,c[n+12>>2]|0)|0;p=+((ea(j,c[n+24>>2]|0)|0)>>>0);j=c[n>>2]|0;m=ea(j,5208328)|0;n=c[n+4>>2]|0;q=p/+((ea(m,n)|0)>>>0);m=d+4792|0;r=+g[m>>2];do if(!(r==0.0)){s=r;if(p/(+(n>>>0)*(+(j>>>0)*(r*8.0)))>651041.0){h[k>>3]=s;c[I>>2]=c[k>>2];c[I+4>>2]=c[k+4>>2];O=I+8|0;h[k>>3]=q;c[O>>2]=c[k>>2];c[O+4>>2]=c[k+4>>2];_y(f,2,252328,I)|0;g[m>>2]=q;break}else{h[k>>3]=s;c[I>>2]=c[k>>2];c[I+4>>2]=c[k+4>>2];_y(f,2,252496,I)|0;break}}else g[m>>2]=q;while(0);c[d+18680>>2]=520833}while(0);if((Q|0)==21){l=e+16|0;n=c[e+24>>2]|0;j=ea(c[n+8>>2]|0,c[l>>2]|0)|0;j=ea(j,c[n+12>>2]|0)|0;s=+((ea(j,c[n+24>>2]|0)|0)>>>0);j=c[n>>2]|0;m=ea(j,10416664)|0;n=c[n+4>>2]|0;q=s/+((ea(m,n)|0)>>>0);m=d+4792|0;r=+g[m>>2];do if(!(r==0.0)){p=r;if(s/(+(n>>>0)*(+(j>>>0)*(r*8.0)))>1302083.0){h[k>>3]=p;c[I>>2]=c[k>>2];c[I+4>>2]=c[k+4>>2];O=I+8|0;h[k>>3]=q;c[O>>2]=c[k>>2];c[O+4>>2]=c[k+4>>2];_y(f,2,252040,I)|0;g[m>>2]=q;break}else{h[k>>3]=p;c[I>>2]=c[k>>2];c[I+4>>2]=c[k+4>>2];_y(f,2,252216,I)|0;break}}else g[m>>2]=q;while(0);c[d+18680>>2]=1041666}j=c[w>>2]|0;l=c[l>>2]|0;do if((l|0)==3){n=c[e+24>>2]|0;o=0;while(1){m=n+(o*52|0)+28|0;t=n+(o*52|0)+32|0;l=o+1|0;if((c[m>>2]|0)!=12|c[t>>2]){Q=38;break}if(l>>>0<3)o=l;else break}if((Q|0)==38){a[v+0>>0]=a[250848]|0;a[v+1>>0]=a[250849]|0;a[v+2>>0]=a[250850]|0;a[v+3>>0]=a[250851]|0;a[v+4>>0]=a[250852]|0;a[v+5>>0]=a[250853]|0;a[v+6>>0]=a[250854]|0;j=u+0|0;n=250856;l=j+9|0;do{a[j>>0]=a[n>>0]|0;j=j+1|0;n=n+1|0}while((j|0)<(l|0));O=(c[t>>2]|0)!=0?v:u;N=c[m>>2]|0;c[I>>2]=o;c[I+4>>2]=N;c[I+8>>2]=O;_y(f,2,250872,I)|0;break}if((j|0)==3){l=c[n+8>>2]|0;j=c[n+12>>2]|0;if(!(j>>>0>2160|l>>>0>4096)){j=3;break a}c[I>>2]=l;c[I+4>>2]=j;_y(f,2,251272,I)|0;break}else if((j|0)==2|(j|0)==1){m=c[n+8>>2]|0;l=c[n+12>>2]|0;if(!(l>>>0>1080|m>>>0>2048))break a;c[I>>2]=m;c[I+4>>2]=l;_y(f,2,251096,I)|0;break}else break a}else{c[I>>2]=l;_y(f,2,250680,I)|0}while(0);c[d+18684>>2]=0;j=c[w>>2]|0}while(0);O=b+160|0;c[O>>2]=j;c[b+164>>2]=c[d+18680>>2];c[b+88>>2]=c[d+18684>>2];N=b+177|0;L=a[N>>0]&-2|c[d+20>>2]&1;a[N>>0]=L;M=d+24|0;L=(c[M>>2]&255)<<1&2|L&-3;a[N>>0]=L;a[N>>0]=L&-5|(c[d+28>>2]&255)<<2&4;if((c[M>>2]|0)!=0?(x=c[d+32>>2]|0,(x|0)!=0):0){M=ea((c[d+4788>>2]|0)*12|0,c[d+5592>>2]|0)|0;L=Afa(M)|0;c[b+172>>2]=L;Aga(L|0,x|0,M|0)|0}n=b+100|0;c[n>>2]=c[d+12>>2];o=b+104|0;c[o>>2]=c[d+16>>2];j=c[d+4>>2]|0;l=b+92|0;c[l>>2]=j;t=b+96|0;c[t>>2]=c[d+8>>2];m=c[d+36>>2]|0;if((m|0)!=0?(y=Afa((Dga(m|0)|0)+1|0)|0,c[b+108>>2]=y,(y|0)!=0):0){Gga(y|0,m|0)|0;j=c[l>>2]|0}l=(c[e+8>>2]|0)-j|0;do if(c[d>>2]|0){j=c[n>>2]|0;if(!j)Sa(250616,250624,105,250664);c[R>>2]=(l+-1+j|0)/(j|0)|0;j=c[o>>2]|0;if(!j)Sa(250616,250624,105,250664);else{c[S>>2]=(j+-1-(c[t>>2]|0)+(c[e+12>>2]|0)|0)/(j|0)|0;break}}else{c[n>>2]=l;c[o>>2]=(c[e+12>>2]|0)-(c[t>>2]|0)}while(0);if(a[d+18688>>0]|0){a[b+176>>0]=a[d+18689>>0]|0;a[N>>0]=a[N>>0]|8}L=b+156|0;c[L>>2]=Cfa(ea(c[S>>2]|0,c[R>>2]|0)|0,5632)|0;M=d+4784|0;C=c[M>>2]|0;do if(C){A=d+48|0;E=c[d+5592>>2]|0;F=c[e+16>>2]|0;G=c[d+4788>>2]|0;D=ea(F,E)|0;j=ea(D,G)|0;H=Cfa(j,4)|0;if(!H){_y(f,1,250528,I)|0;break}Cga(H|0,0,j<<2|0)|0;j=c[A>>2]|0;u=c[d+60>>2]|0;if(j>>>0>>0){z=ea(j,F)|0;w=c[d+52>>2]|0;x=c[d+64>>2]|0;y=w>>>0>>0;b=d+56|0;while(1){if(y){n=c[b>>2]|0;l=(n|0)==0;m=w;o=z+w|0;while(1){if(!l){v=o;t=0;while(1){c[H+(v<<2)>>2]=1;t=t+1|0;if((t|0)==(n|0))break;else v=v+D|0}}m=m+1|0;if((m|0)==(x|0))break;else o=o+1|0}}j=j+1|0;if((j|0)==(u|0))break;else z=z+F|0}}if(C>>>0>1){B=1;do{j=A;A=A+148|0;y=c[j+8>>2]|0;x=j+156|0;n=c[x>>2]|0;y=n>>>0>y>>>0?y:0;v=c[A>>2]|0;b=j+160|0;l=c[b>>2]|0;if(v>>>0>>0){o=ea(v,F)|0;z=j+152|0;u=j+164|0;w=ea(y,D)|0;j=c[u>>2]|0;while(1){m=c[z>>2]|0;if(m>>>0>>0){t=m;m=m+o|0;while(1){if(y>>>0>>0){j=m+w|0;l=y;while(1){c[H+(j<<2)>>2]=1;l=l+1|0;n=c[x>>2]|0;if(l>>>0>=n>>>0)break;else j=j+D|0}j=c[u>>2]|0}t=t+1|0;if(t>>>0>=j>>>0)break;else m=m+1|0}l=c[b>>2]|0}v=v+1|0;if(v>>>0>=l>>>0)break;else o=o+F|0}}B=B+1|0}while((B|0)!=(C|0))}if(G){o=(E|0)==0;u=(F|0)==0;j=0;v=0;n=0;do{if(!o){t=0;do{if(!u){l=0;m=j;while(1){n=(c[H+(m<<2)>>2]|0)!=1|n;l=l+1|0;if((l|0)==(F|0))break;else m=m+1|0}j=j+F|0}t=t+1|0}while((t|0)!=(E|0))}v=v+1|0}while((v|0)!=(G|0));if(n)_y(f,1,250576,I)|0}Bfa(H)}while(0);b:do if(ea(c[S>>2]|0,c[R>>2]|0)|0){x=d+4788|0;y=d+40|0;b=d+44|0;z=d+18690|0;A=e+16|0;B=d+18696|0;C=e+24|0;D=d+5592|0;E=d+5596|0;F=d+5600|0;G=d+5604|0;H=d+5608|0;I=d+5612|0;J=d+5616|0;f=d+5620|0;K=0;c:while(1){o=c[L>>2]|0;u=o+(K*5632|0)|0;w=c[x>>2]|0;j=o+(K*5632|0)+8|0;c[j>>2]=w;if(w){n=(c[O>>2]|0)==0;v=0;do{l=(a[N>>0]&4)!=0;do if(n)if(l){g[o+(K*5632|0)+(v<<2)+5176>>2]=+g[d+(v<<2)+5192>>2];break}else{g[o+(K*5632|0)+(v<<2)+20>>2]=+g[d+(v<<2)+4792>>2];break}else{if(l)g[o+(K*5632|0)+(v<<2)+5176>>2]=+g[d+(v<<2)+5192>>2];g[o+(K*5632|0)+(v<<2)+20>>2]=+g[d+(v<<2)+4792>>2]}while(0);v=v+1|0}while(v>>>0<(c[j>>2]|0)>>>0)}c[u>>2]=c[y>>2];c[o+(K*5632|0)+4>>2]=c[b>>2];t=o+(K*5632|0)+16|0;c[t>>2]=a[z>>0];j=o+(K*5632|0)+5628|0;n=a[j>>0]|0;a[j>>0]=n&-3;if(!(c[M>>2]|0))c[o+(K*5632|0)+420>>2]=0;else{a[j>>0]=n|2;n=c[M>>2]|0;if(!n)j=0;else{l=K+1|0;v=0;j=0;do{if((l|0)==(c[d+(v*148|0)+96>>2]|0)){c[o+(K*5632|0)+(j*148|0)+424>>2]=c[d+(j*148|0)+48>>2];c[o+(K*5632|0)+(j*148|0)+428>>2]=c[d+(j*148|0)+52>>2];c[o+(K*5632|0)+(j*148|0)+432>>2]=c[d+(j*148|0)+56>>2];c[o+(K*5632|0)+(j*148|0)+436>>2]=c[d+(j*148|0)+60>>2];c[o+(K*5632|0)+(j*148|0)+440>>2]=c[d+(j*148|0)+64>>2];c[o+(K*5632|0)+(j*148|0)+456>>2]=c[d+(j*148|0)+80>>2];c[o+(K*5632|0)+(j*148|0)+472>>2]=c[d+(j*148|0)+96>>2];j=j+1|0}v=v+1|0}while(v>>>0>>0)}c[o+(K*5632|0)+420>>2]=j+-1}m=c[A>>2]|0;l=Cfa(m,1080)|0;w=o+(K*5632|0)+5576|0;c[w>>2]=l;j=c[B>>2]|0;if(!j){if(m){j=c[C>>2]|0;n=0;do{if(!(c[j+(n*52|0)+32>>2]|0))c[l+(n*1080|0)+1076>>2]=1<<(c[j+(n*52|0)+24>>2]|0)+-1;n=n+1|0}while(n>>>0>>0);P=m;Q=128}}else{Q=ea(m<<2,m)|0;n=Afa(Q)|0;v=j+Q|0;c[t>>2]=2;P=Afa(Q)|0;c[o+(K*5632|0)+5600>>2]=P;Aga(P|0,j|0,Q|0)|0;Aga(n|0,j|0,Q|0)|0;Q=Afa(Q)|0;j=o+(K*5632|0)+5596|0;c[j>>2]=Q;if(!(lz(n,Q,m)|0)){Q=120;break}Q=c[A>>2]|0;P=Afa(Q<<3)|0;c[o+(K*5632|0)+5592>>2]=P;nA(P,Q,c[j>>2]|0);Bfa(n);j=c[A>>2]|0;if(j){n=c[w>>2]|0;l=0;do{c[n+(l*1080|0)+1076>>2]=c[v+(l<<2)>>2];l=l+1|0}while(l>>>0>>0)}rz(u,e)|0;P=c[A>>2]|0;Q=128}if((Q|0)==128?(Q=0,(P|0)!=0):0){u=0;do{t=c[w>>2]|0;o=t+(u*1080|0)|0;l=c[y>>2]&1;c[o>>2]=l;v=c[D>>2]|0;m=t+(u*1080|0)+4|0;c[m>>2]=v;j=c[E>>2]|0;if((j|0)>1){n=0;do{j=j>>1;n=n+1|0}while((j|0)>1);j=n}else j=0;c[t+(u*1080|0)+8>>2]=j;j=c[F>>2]|0;if((j|0)>1){n=0;do{j=j>>1;n=n+1|0}while((j|0)>1);j=n}else j=0;c[t+(u*1080|0)+12>>2]=j;c[t+(u*1080|0)+16>>2]=c[G>>2];n=c[H>>2]|0;c[t+(u*1080|0)+20>>2]=(n|0)==0&1;c[t+(u*1080|0)+24>>2]=(n|0)!=0?2:0;c[t+(u*1080|0)+804>>2]=2;if((u|0)==(c[I>>2]|0))c[t+(u*1080|0)+808>>2]=c[J>>2];else c[t+(u*1080|0)+808>>2]=0;j=(v|0)==0;do if(!l){if(j)break;else j=0;do{c[t+(u*1080|0)+(j<<2)+812>>2]=15;c[t+(u*1080|0)+(j<<2)+944>>2]=15;j=j+1|0}while(j>>>0<(c[m>>2]|0)>>>0)}else{if(j){Q=140;break c}if((v|0)>0)m=0;else break;while(1){v=v+-1|0;j=c[f>>2]|0;do if((m|0)<(j|0)){j=c[d+(m<<2)+5624>>2]|0;if((j|0)<1)c[t+(u*1080|0)+(v<<2)+812>>2]=1;else{if((j|0)>1){n=0;do{j=j>>1;n=n+1|0}while((j|0)>1);j=n}else j=0;c[t+(u*1080|0)+(v<<2)+812>>2]=j}j=c[d+(m<<2)+5756>>2]|0;if((j|0)<1){c[t+(u*1080|0)+(v<<2)+944>>2]=1;break}if((j|0)>1){n=0;do{j=j>>1;n=n+1|0}while((j|0)>1);j=n}else j=0;c[t+(u*1080|0)+(v<<2)+944>>2]=j}else{if((j|0)<=0){Q=153;break c}l=j+-1|0;n=m-l|0;j=c[d+(l<<2)+5624>>2]>>n;n=c[d+(l<<2)+5756>>2]>>n;if((j|0)<1)c[t+(u*1080|0)+(v<<2)+812>>2]=1;else{if((j|0)>1){l=0;do{j=j>>1;l=l+1|0}while((j|0)>1);j=l}else j=0;c[t+(u*1080|0)+(v<<2)+812>>2]=j}if((n|0)<1){c[t+(u*1080|0)+(v<<2)+944>>2]=1;break}if((n|0)>1){j=0;do{n=n>>1;j=j+1|0}while((n|0)>1)}else j=0;c[t+(u*1080|0)+(v<<2)+944>>2]=j}while(0);if((v|0)<=0)break;else m=m+1|0}}while(0);Yy(o,c[(c[C>>2]|0)+(u*52|0)+24>>2]|0);u=u+1|0}while(u>>>0<(c[A>>2]|0)>>>0)}K=K+1|0;if(K>>>0>=(ea(c[S>>2]|0,c[R>>2]|0)|0)>>>0){T=B;break b}}if((Q|0)==120)Sa(244072,244152,6349,244184);else if((Q|0)==140)Sa(244208,244152,6395,244184);else if((Q|0)==153)Sa(244240,244152,6416,244184)}else T=d+18696|0;while(0);j=c[T>>2]|0;if(!j){i=U;return}Bfa(j);c[T>>2]=0;i=U;return}function rz(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;if(!b)Sa(244328,244152,6656,244344);if((c[b+16>>2]|0)!=2){b=1;i=u;return b|0}o=b+5596|0;n=b+5608|0;e=c[n>>2]|0;p=b+5612|0;do if(c[o>>2]|0){do if((e|0)==(c[p>>2]|0)){f=e+10|0;c[p>>2]=f;e=b+5604|0;f=Dfa(c[e>>2]|0,f*20|0)|0;if(f){c[e>>2]=f;e=c[n>>2]|0;Cga(f+(e*20|0)|0,0,((c[p>>2]|0)-e|0)*20|0)|0;break}Bfa(c[e>>2]|0);c[e>>2]=0;c[p>>2]=0;c[n>>2]=0;b=0;i=u;return b|0}else f=c[b+5604>>2]|0;while(0);m=f+(e*20|0)|0;l=f+(e*20|0)+12|0;h=c[l>>2]|0;if(h){Bfa(h);c[l>>2]=0}c[f+(e*20|0)+8>>2]=1;c[f+(e*20|0)+4>>2]=1;c[m>>2]=2;h=c[d+16>>2]|0;h=ea(h,h)|0;j=h<<2;k=Afa(j)|0;c[l>>2]=k;if(!k){b=0;i=u;return b|0}else{$d[c[243800+(c[m>>2]<<2)>>2]&255](c[o>>2]|0,k,h);c[f+(e*20|0)+16>>2]=j;e=(c[n>>2]|0)+1|0;c[n>>2]=e;o=2;j=m;break}}else{o=1;j=0}while(0);q=b+5608|0;do if((e|0)==(c[p>>2]|0)){h=e+10|0;c[p>>2]=h;e=b+5604|0;h=Dfa(c[e>>2]|0,h*20|0)|0;if(!h){Bfa(c[e>>2]|0);c[e>>2]=0;c[p>>2]=0;c[q>>2]=0;b=0;i=u;return b|0}else{c[e>>2]=h;f=c[q>>2]|0;Cga(h+(f*20|0)|0,0,((c[p>>2]|0)-f|0)*20|0)|0;if(!j){p=h;e=f;t=0;break}p=h;e=f;t=h+((f+-1|0)*20|0)|0;break}}else{p=c[b+5604>>2]|0;t=j}while(0);s=p+(e*20|0)|0;n=p+(e*20|0)+12|0;f=c[n>>2]|0;if(f){Bfa(f);c[n>>2]=0}r=o+1|0;c[p+(e*20|0)+8>>2]=o;c[p+(e*20|0)+4>>2]=2;c[s>>2]=2;o=d+16|0;j=c[o>>2]|0;f=j<<2;d=Afa(f)|0;c[n>>2]=d;if(!d){b=0;i=u;return b|0}h=Afa(f)|0;if(!h){Bfa(c[n>>2]|0);c[n>>2]=0;b=0;i=u;return b|0}if(j){l=0;k=h;m=c[b+5576>>2]|0;while(1){g[k>>2]=+(c[m+1076>>2]|0);l=l+1|0;if((l|0)==(j|0))break;else{k=k+4|0;m=m+1080|0}}}$d[c[243800+(c[s>>2]<<2)>>2]&255](h,c[n>>2]|0,j);Bfa(h);c[p+(e*20|0)+16>>2]=f;c[q>>2]=(c[q>>2]|0)+1;j=b+5620|0;e=c[j>>2]|0;h=b+5624|0;do if((e|0)==(c[h>>2]|0)){e=e+10|0;c[h>>2]=e;f=b+5616|0;e=Dfa(c[f>>2]|0,e*20|0)|0;if(e){c[f>>2]=e;b=c[j>>2]|0;Cga(e+(b*20|0)|0,0,((c[h>>2]|0)-b|0)*20|0)|0;f=e;e=b;break}Bfa(c[f>>2]|0);c[f>>2]=0;c[h>>2]=0;c[j>>2]=0;b=0;i=u;return b|0}else f=c[b+5616>>2]|0;while(0);c[f+(e*20|0)+8>>2]=t;b=f+(e*20|0)+16|0;a[b>>0]=a[b>>0]|1;c[f+(e*20|0)+4>>2]=c[o>>2];c[f+(e*20|0)>>2]=r;c[f+(e*20|0)+12>>2]=s;c[j>>2]=(c[j>>2]|0)+1;b=1;i=u;return b|0}function sz(a,b,c){a=a|0;b=b|0;c=c|0;return 1}function tz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=i;if(!b)Sa(244256,244152,6543,244272);if(!a)Sa(244296,244152,6544,244272);if(!e)Sa(244312,244152,6545,244272);h=gz()|0;f=b+80|0;c[f>>2]=h;if(!h){h=0;i=g;return h|0}h=b+188|0;cz(c[h>>2]|0,110)|0;cz(c[h>>2]|0,111)|0;if(!(TP(b,c[h>>2]|0,a,e)|0)){iz(c[f>>2]|0);c[f>>2]=0;h=0;i=g;return h|0}h=b+184|0;cz(c[h>>2]|0,112)|0;cz(c[h>>2]|0,113)|0;if(!(TP(b,c[h>>2]|0,a,e)|0)){iz(c[f>>2]|0);c[f>>2]=0;h=0;i=g;return h|0}e=gz()|0;c[d>>2]=e;if(!e){h=0;i=g;return h|0}kz(c[f>>2]|0,e);e=ea(c[b+116>>2]|0,c[b+112>>2]|0)|0;a=c[b+192>>2]|0;d=a+36|0;c[d>>2]=e;e=Cfa(e,40)|0;a=a+40|0;c[a>>2]=e;if(!e){h=0;i=g;return h|0}if(!(c[d>>2]|0)){h=1;i=g;return h|0}else f=0;while(1){c[e+(f*40|0)+28>>2]=100;c[e+(f*40|0)+20>>2]=0;h=Cfa(100,24)|0;e=c[a>>2]|0;c[e+(f*40|0)+24>>2]=h;f=f+1|0;if(!h){e=0;f=17;break}if(f>>>0>=(c[d>>2]|0)>>>0){e=1;f=17;break}}if((f|0)==17){i=g;return e|0}return 0}function uz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;if(!a){i=h;return}b=a+28|0;d=c[b>>2]|0;if(d){Bfa(d);c[b>>2]=0}f=a+40|0;b=c[f>>2]|0;if(b){g=a+36|0;if(c[g>>2]|0){e=0;do{d=c[b+(e*40|0)+36>>2]|0;if(d){Bfa(d);b=c[f>>2]|0;c[b+(e*40|0)+36>>2]=0}d=c[b+(e*40|0)+16>>2]|0;if(d){Bfa(d);b=c[f>>2]|0;c[b+(e*40|0)+16>>2]=0}d=c[b+(e*40|0)+24>>2]|0;if(d){Bfa(d);b=c[f>>2]|0;c[b+(e*40|0)+24>>2]=0}e=e+1|0}while(e>>>0<(c[g>>2]|0)>>>0)}Bfa(b)}Bfa(a);i=h;return}function vz(b,d,e,f,g,h,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;G=i;i=i+16|0;F=G;B=G+12|0;C=G+8|0;c[B>>2]=65424;if(!m)Sa(244296,244152,7407,244392);if(!b)Sa(244256,244152,7408,244392);if(!n)Sa(244312,244152,7409,244392);E=b+8|0;o=c[E>>2]|0;do if((o|0)==8){o=b+76|0;if(!(a[o>>0]&1)){t=b+196|0;u=b+156|0;v=b+72|0;w=b+24|0;x=b+192|0;y=b+16|0;z=b+20|0;A=b+64|0;p=65424;a:while(1){b:do if((p|0)!=65427){while(1){s=Ny(m)|0;if((s|0)==0&(I|0)==0){D=13;break}if((Jy(m,c[y>>2]|0,2,n)|0)!=2){D=15;break a}oy(c[y>>2]|0,C,2);if((c[B>>2]|0)==32896?(s=Ny(m)|0,(s|0)==0&(I|0)==0):0){D=18;break}q=c[E>>2]|0;r=c[C>>2]|0;if(q&16)c[w>>2]=-2-r+(c[w>>2]|0);p=r+-2|0;c[C>>2]=p;r=c[B>>2]|0;s=243816;while(1){H=c[s>>2]|0;if((H|0)==0|(H|0)==(r|0))break;else s=s+12|0}if(!(c[s+4>>2]&q)){D=24;break a}r=c[y>>2]|0;if(p>>>0>(c[z>>2]|0)>>>0){r=Dfa(r,p)|0;if(!r){D=27;break a}c[y>>2]=r;p=c[C>>2]|0;c[z>>2]=p}r=Jy(m,r,p,n)|0;if((r|0)!=(c[C>>2]|0)){D=30;break a}p=c[s+8>>2]|0;if(!p){D=32;break a}if(!(ce[p&255](b,c[y>>2]|0,r,n)|0)){D=34;break a}J=c[t>>2]|0;r=c[x>>2]|0;p=c[s>>2]|0;q=My(m)|0;H=c[C>>2]|0;if(!(WP(J,r,p,-4-H+q|0,0,H+4|0)|0)){D=36;break a}do if((c[s>>2]|0)==65424){r=My(m)|0;r=-4-(c[C>>2]|0)+r|0;J=A;H=c[J+4>>2]|0;if(!(0>(H|0)|(0==(H|0)?r>>>0>(c[J>>2]|0)>>>0:0)))break;J=A;c[J>>2]=r;c[J+4>>2]=0}while(0);if(a[o>>0]&4){D=41;break}if((Jy(m,c[y>>2]|0,2,n)|0)!=2){D=45;break a}oy(c[y>>2]|0,B,2);if((c[B>>2]|0)==65427)break b}if((D|0)==13){D=0;c[E>>2]=64;break}else if((D|0)==18){D=0;c[E>>2]=64;break}else if((D|0)==41){D=0;J=Oy(m,c[w>>2]|0,0,n)|0;if(!((I|0)==0?(J|0)==(c[w>>2]|0):0)){D=42;break a}c[B>>2]=65427;break}}while(0);J=Ny(m)|0;if((J|0)==0&(I|0)==0?(c[E>>2]|0)==64:0){D=74;break}r=a[o>>0]|0;if(!(r&4)){p=c[t>>2]|0;q=c[u>>2]|0;if(!(c[v>>2]|0)){r=c[w>>2]|0;if(r>>>0>1){r=r+-2|0;c[w>>2]=r}}else{r=Ny(m)|0;r=Iga(r|0,I|0,-2,0)|0;c[w>>2]=r}s=q+(p*5632|0)+5584|0;q=q+(p*5632|0)+5588|0;do if(!r)p=1;else{p=c[s>>2]|0;if(!p){J=Afa(r)|0;c[s>>2]=J;if(!J)break a;else{p=0;break}}r=Dfa(p,(c[q>>2]|0)+r|0)|0;if(!r){D=58;break a}c[s>>2]=r;p=0}while(0);r=c[x>>2]|0;if((r|0)!=0?(P=My(m)|0,N=I,K=Iga(P|0,N|0,-2,-1)|0,H=I,L=c[t>>2]|0,O=c[r+40>>2]|0,M=c[O+(L*40|0)+12>>2]|0,O=c[O+(L*40|0)+16>>2]|0,J=O+(M*24|0)+8|0,c[J>>2]=K,c[J+4>>2]=H,J=c[w>>2]|0,N=Iga(J|0,0,P|0,N|0)|0,M=O+(M*24|0)+16|0,c[M>>2]=N,c[M+4>>2]=I,(WP(L,r,65427,K,H,J+2|0)|0)==0):0){D=63;break}if(!p)r=Jy(m,(c[s>>2]|0)+(c[q>>2]|0)|0,c[w>>2]|0,n)|0;else r=0;c[E>>2]=(r|0)==(c[w>>2]|0)?8:64;c[q>>2]=(c[q>>2]|0)+r;if(!(a[o>>0]&1)){if((Jy(m,c[y>>2]|0,2,n)|0)!=2){D=68;break}oy(c[y>>2]|0,B,2)}}else{a[o>>0]=r&-6;c[E>>2]=8;if((Jy(m,c[y>>2]|0,2,n)|0)!=2){D=72;break}oy(c[y>>2]|0,B,2)}p=c[B>>2]|0;if(!((a[o>>0]&1)==0&(p|0)!=65497)){D=75;break}}switch(D|0){case 15:{_y(n,1,244424,F)|0;O=0;i=G;return O|0}case 24:{_y(n,1,244448,F)|0;O=0;i=G;return O|0}case 27:{Bfa(c[y>>2]|0);c[y>>2]=0;c[z>>2]=0;_y(n,1,244496,F)|0;O=0;i=G;return O|0}case 30:{_y(n,1,244424,F)|0;O=0;i=G;return O|0}case 32:{_y(n,1,244536,F)|0;O=0;i=G;return O|0}case 34:{c[F>>2]=c[B>>2];_y(n,1,244568,F)|0;O=0;i=G;return O|0}case 36:{_y(n,1,244616,F)|0;O=0;i=G;return O|0}case 42:{_y(n,1,244424,F)|0;O=0;i=G;return O|0}case 45:{_y(n,1,244424,F)|0;O=0;i=G;return O|0}case 58:{Bfa(c[s>>2]|0);c[s>>2]=0;break}case 63:{_y(n,1,244616,F)|0;O=0;i=G;return O|0}case 68:{_y(n,1,244424,F)|0;O=0;i=G;return O|0}case 72:{_y(n,1,244424,F)|0;O=0;i=G;return O|0}case 74:{p=c[B>>2]|0;D=75;break}}if((D|0)==75)if((p|0)==65497){D=76;break}else{p=o;break}_y(n,1,249896,F)|0;O=0;i=G;return O|0}else p=o}else if((o|0)==256){c[B>>2]=65497;o=b+76|0;D=76}else{O=0;i=G;return O|0}while(0);if((D|0)==76)if((c[E>>2]|0)==256)p=o;else{c[b+196>>2]=0;c[E>>2]=256;p=o}r=b+196|0;o=c[r>>2]|0;if(!(a[p>>0]&1)){s=ea(c[b+112>>2]|0,c[b+116>>2]|0)|0;c:do if(o>>>0>>0){p=o;q=(c[b+156>>2]|0)+(o*5632|0)|0;while(1){if(c[q+5584>>2]|0){o=p;break c}o=p+1|0;c[r>>2]=o;if(o>>>0>>0){p=o;q=q+5632|0}else break}}while(0);if((o|0)==(s|0)){c[l>>2]=0;O=1;i=G;return O|0}}p=b+200|0;q=b+196|0;if(!(uB(c[p>>2]|0,o)|0)){_y(n,1,244656,F)|0;O=0;i=G;return O|0}else{O=(ea(c[b+112>>2]|0,c[b+116>>2]|0)|0)+-1|0;c[F>>2]=c[q>>2];c[F+4>>2]=O;_y(n,4,244696,F)|0;c[d>>2]=c[q>>2];c[l>>2]=1;c[e>>2]=vB(c[p>>2]|0)|0;O=c[c[(c[p>>2]|0)+20>>2]>>2]|0;c[f>>2]=c[O>>2];c[g>>2]=c[O+4>>2];c[h>>2]=c[O+8>>2];c[j>>2]=c[O+12>>2];c[k>>2]=c[O+16>>2];c[E>>2]=c[E>>2]|128;O=1;i=G;return O|0}return 0}function wz(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;t=u;p=u+4|0;q=u+8|0;if(!g)Sa(244296,244152,7629,244736);if(!b)Sa(244256,244152,7630,244736);if(!h)Sa(244312,244152,7631,244736);r=b+8|0;if(!(c[r>>2]&128)){t=0;i=u;return t|0}s=b+196|0;if((c[s>>2]|0)!=(d|0)){t=0;i=u;return t|0}j=c[b+156>>2]|0;k=j+(d*5632|0)|0;o=j+(d*5632|0)+5584|0;l=c[o>>2]|0;if(!l){QP(k);t=0;i=u;return t|0}m=b+200|0;n=j+(d*5632|0)+5588|0;if(!(xB(c[m>>2]|0,l,c[n>>2]|0,d,c[b+192>>2]|0)|0)){QP(k);c[r>>2]=c[r>>2]|32768;_y(h,1,244760,t)|0;t=0;i=u;return t|0}if(!(yB(c[m>>2]|0,e,f)|0)){t=0;i=u;return t|0}j=c[o>>2]|0;if(j){Bfa(j);c[o>>2]=0;c[n>>2]=0}f=b+76|0;a[f>>0]=a[f>>0]&-2;c[r>>2]=c[r>>2]&-129;f=Ny(g)|0;b=c[r>>2]|0;if((f|0)==0&(I|0)==0&(b|0)==64|(b|0)==256){t=1;i=u;return t|0}if((Jy(g,q,2,h)|0)!=2){_y(h,1,244424,t)|0;t=0;i=u;return t|0}oy(q,p,2);j=c[p>>2]|0;if((j|0)==65497){c[s>>2]=0;c[r>>2]=256;t=1;i=u;return t|0}else if((j|0)==65424){t=1;i=u;return t|0}else{_y(h,1,244784,t)|0;t=Ny(g)|0;if(!((t|0)==0&(I|0)==0)){t=0;i=u;return t|0}c[r>>2]=64;t=1;i=u;return t|0}return 0}function xz(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+16|0;y=z;l=c[b+80>>2]|0;if((c[b+8>>2]|0)!=8){_y(j,1,244816,y)|0;y=0;i=z;return y|0}if(!(f|e|g|h)){_y(j,4,244896,y)|0;c[b+28>>2]=0;c[b+32>>2]=0;c[b+36>>2]=c[b+112>>2];c[b+40>>2]=c[b+116>>2];y=1;i=z;return y|0}if((e|0)<=-1)Sa(244968,244152,7996,244984);if((f|0)<=-1)Sa(245008,244152,7997,244984);m=l+8|0;k=c[m>>2]|0;if(k>>>0>>0){c[y>>2]=e;c[y+4>>2]=k;_y(j,1,245024,y)|0;y=0;i=z;return y|0}k=c[l>>2]|0;if(k>>>0>e>>>0){c[y>>2]=e;c[y+4>>2]=k;_y(j,2,245112,y)|0;c[b+28>>2]=0;c[d>>2]=c[l>>2]}else{c[b+28>>2]=((e-(c[b+92>>2]|0)|0)>>>0)/((c[b+100>>2]|0)>>>0)|0;c[d>>2]=e}n=l+12|0;k=c[n>>2]|0;if(k>>>0>>0){c[y>>2]=f;c[y+4>>2]=k;_y(j,1,245200,y)|0;y=0;i=z;return y|0}e=l+4|0;k=c[e>>2]|0;if(k>>>0>f>>>0){c[y>>2]=f;c[y+4>>2]=k;_y(j,2,245288,y)|0;c[b+32>>2]=0;c[d+4>>2]=c[e>>2]}else{c[b+32>>2]=((f-(c[b+96>>2]|0)|0)>>>0)/((c[b+104>>2]|0)>>>0)|0;c[d+4>>2]=f}if(!g)Sa(245376,244152,8037,244984);if(!h)Sa(245400,244152,8038,244984);k=c[l>>2]|0;if(k>>>0>g>>>0){c[y>>2]=g;c[y+4>>2]=k;_y(j,1,245424,y)|0;y=0;i=z;return y|0}k=c[m>>2]|0;do if(k>>>0>=g>>>0){k=c[b+100>>2]|0;if(!k)Sa(250616,250624,105,250664);else{c[b+36>>2]=(g+-1+k-(c[b+92>>2]|0)|0)/(k|0)|0;c[d+8>>2]=g;break}}else{c[y>>2]=g;c[y+4>>2]=k;_y(j,2,245520,y)|0;c[b+36>>2]=c[b+112>>2];c[d+8>>2]=c[m>>2]}while(0);k=c[e>>2]|0;if(k>>>0>h>>>0){c[y>>2]=h;c[y+4>>2]=k;_y(j,1,245608,y)|0;y=0;i=z;return y|0}k=c[n>>2]|0;do if(k>>>0>=h>>>0){k=c[b+104>>2]|0;if(!k)Sa(250616,250624,105,250664);else{c[b+40>>2]=(h+-1+k-(c[b+96>>2]|0)|0)/(k|0)|0;c[d+12>>2]=h;break}}else{c[y>>2]=h;c[y+4>>2]=k;_y(j,2,245704,y)|0;c[b+40>>2]=c[b+116>>2];c[d+12>>2]=c[n>>2]}while(0);s=b+76|0;a[s>>0]=a[s>>0]|2;s=c[d+16>>2]|0;u=c[d>>2]|0;a:do if(s){p=d+4|0;q=d+8|0;r=d+12|0;t=0;o=c[d+24>>2]|0;while(1){k=c[o>>2]|0;if(!k){k=41;break}f=(u+-1+k|0)/(k|0)|0;c[o+16>>2]=f;n=c[o+4>>2]|0;if(!n){k=43;break}b=c[p>>2]|0;m=n+-1|0;g=(m+b|0)/(n|0)|0;c[o+20>>2]=g;d=c[q>>2]|0;h=(k+-1+d|0)/(k|0)|0;k=c[o+40>>2]|0;e=1<>31;h=Iga(h|0,((h|0)<0)<<31>>31|0,-1,-1)|0;h=Iga(h|0,I|0,e|0,l|0)|0;h=zga(h|0,I|0,k|0)|0;f=Iga(f|0,((f|0)<0)<<31>>31|0,-1,-1)|0;f=Iga(f|0,I|0,e|0,l|0)|0;f=zga(f|0,I|0,k|0)|0;f=h-f|0;if((f|0)<0){k=45;break}h=c[r>>2]|0;m=(m+h|0)/(n|0)|0;c[o+8>>2]=f;m=Iga(m|0,((m|0)<0)<<31>>31|0,-1,-1)|0;m=Iga(m|0,I|0,e|0,l|0)|0;m=zga(m|0,I|0,k|0)|0;g=Iga(g|0,((g|0)<0)<<31>>31|0,-1,-1)|0;e=Iga(g|0,I|0,e|0,l|0)|0;e=zga(e|0,I|0,k|0)|0;e=m-e|0;if((e|0)<0){k=47;break}c[o+12>>2]=e;k=t+1|0;if(k>>>0>>0){t=k;o=o+52|0}else{v=b;w=d;x=h;break a}}if((k|0)==41)Sa(250616,250624,105,250664);else if((k|0)==43)Sa(250616,250624,105,250664);else if((k|0)==45){c[y>>2]=t;c[y+4>>2]=f;_y(j,1,245800,y)|0;y=0;i=z;return y|0}else if((k|0)==47){c[y>>2]=t;c[y+4>>2]=e;_y(j,1,245872,y)|0;y=0;i=z;return y|0}}else{v=c[d+4>>2]|0;w=c[d+8>>2]|0;x=c[d+12>>2]|0}while(0);c[y>>2]=u;c[y+4>>2]=v;c[y+8>>2]=w;c[y+12>>2]=x;_y(j,4,245944,y)|0;y=1;i=z;return y|0}function yz(){var b=0,d=0,e=0,f=0;e=i;d=Afa(208)|0;if(!d){d=0;i=e;return d|0}Cga(d|0,0,208)|0;c[d>>2]=1;a[d+180>>0]=2;b=Afa(5632)|0;c[d+12>>2]=b;if(!b){pz(d);d=0;i=e;return d|0}Cga(b|0,0,5632)|0;b=Afa(1e3)|0;c[d+16>>2]=b;if(!b){pz(d);d=0;i=e;return d|0}c[d+20>>2]=1e3;c[d+60>>2]=-1;b=d+64|0;c[b>>2]=0;c[b+4>>2]=0;b=Cfa(1,48)|0;if((b|0)!=0?(c[b+32>>2]=100,c[b+24>>2]=0,f=Cfa(100,24)|0,c[b+28>>2]=f,(f|0)!=0):0)c[b+40>>2]=0;else b=0;c[d+192>>2]=b;f=az()|0;c[d+188>>2]=f;if(!f){pz(d);f=0;i=e;return f|0}f=az()|0;c[d+184>>2]=f;if(f){f=d;i=e;return f|0}pz(d);f=0;i=e;return f|0}function zz(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;o=i;i=i+32|0;n=o;if(b&384){$b(245984,11,1,d|0)|0;i=o;return}if((b&1|0)!=0?(f=c[a+80>>2]|0,(f|0)!=0):0)Az(f,0,d);if(b&2){$b(249120,36,1,d|0)|0;h=c[a+96>>2]|0;c[n>>2]=c[a+92>>2];c[n+4>>2]=h;_c(d|0,249160,n|0)|0;h=c[a+104>>2]|0;c[n>>2]=c[a+100>>2];c[n+4>>2]=h;_c(d|0,249184,n|0)|0;h=c[a+116>>2]|0;c[n>>2]=c[a+112>>2];c[n+4>>2]=h;_c(d|0,249208,n|0)|0;XP(c[a+12>>2]|0,c[(c[a+80>>2]|0)+16>>2]|0,d);$b(246152,2,1,d|0)|0}if((b&8|0)!=0?(j=ea(c[a+112>>2]|0,c[a+116>>2]|0)|0,(j|0)!=0):0){f=a+80|0;g=0;h=c[a+156>>2]|0;while(1){XP(h,c[(c[f>>2]|0)+16>>2]|0,d);g=g+1|0;if((g|0)==(j|0))break;else h=h+5632|0}}if(!(b&16)){i=o;return}j=c[a+192>>2]|0;$b(249224,37,1,d|0)|0;g=j;a=c[g+4>>2]|0;f=j+8|0;b=c[f>>2]|0;f=c[f+4>>2]|0;h=n;c[h>>2]=c[g>>2];c[h+4>>2]=a;h=n+8|0;c[h>>2]=b;c[h+4>>2]=f;_c(d|0,249264,n|0)|0;$b(249336,17,1,d|0)|0;h=j+28|0;f=c[h>>2]|0;a:do if((f|0)!=0?(k=j+24|0,(c[k>>2]|0)!=0):0){g=0;while(1){p=f+(g*24|0)+8|0;q=c[p>>2]|0;p=c[p+4>>2]|0;b=c[f+(g*24|0)+16>>2]|0;c[n>>2]=e[f+(g*24|0)>>1];a=n+4|0;c[a>>2]=q;c[a+4>>2]=p;c[n+12>>2]=b;_c(d|0,249360,n|0)|0;g=g+1|0;if(g>>>0>=(c[k>>2]|0)>>>0)break a;f=c[h>>2]|0}}while(0);$b(249392,4,1,d|0)|0;b=j+40|0;h=c[b>>2]|0;if((h|0)!=0?(m=j+36|0,l=c[m>>2]|0,(l|0)!=0):0){f=0;g=0;do{g=(c[h+(f*40|0)+4>>2]|0)+g|0;f=f+1|0}while((f|0)!=(l|0));if(g){$b(249400,16,1,d|0)|0;if(c[m>>2]|0){f=c[b>>2]|0;a=0;do{j=c[f+(a*40|0)+4>>2]|0;c[n>>2]=a;c[n+4>>2]=j;_c(d|0,249424,n|0)|0;f=c[b>>2]|0;g=c[f+(a*40|0)+16>>2]|0;b:do if(!((g|0)==0|(j|0)==0)){f=0;while(1){r=g+(f*24|0)|0;s=c[r>>2]|0;r=c[r+4>>2]|0;k=g+(f*24|0)+8|0;l=c[k>>2]|0;k=c[k+4>>2]|0;q=g+(f*24|0)+16|0;p=c[q>>2]|0;q=c[q+4>>2]|0;c[n>>2]=f;h=n+4|0;c[h>>2]=s;c[h+4>>2]=r;h=n+12|0;c[h>>2]=l;c[h+4>>2]=k;h=n+20|0;c[h>>2]=p;c[h+4>>2]=q;_c(d|0,249464,n|0)|0;h=f+1|0;f=c[b>>2]|0;if((h|0)==(j|0))break b;g=c[f+(a*40|0)+16>>2]|0;f=h}}while(0);g=c[f+(a*40|0)+24>>2]|0;c:do if((g|0)!=0?(c[f+(a*40|0)+20>>2]|0)!=0:0){f=0;while(1){r=g+(f*24|0)+8|0;q=c[r>>2]|0;r=c[r+4>>2]|0;h=c[g+(f*24|0)+16>>2]|0;c[n>>2]=e[g+(f*24|0)>>1];s=n+4|0;c[s>>2]=q;c[s+4>>2]=r;c[n+12>>2]=h;_c(d|0,249360,n|0)|0;h=f+1|0;f=c[b>>2]|0;if(h>>>0>=(c[f+(a*40|0)+20>>2]|0)>>>0)break c;g=c[f+(a*40|0)+24>>2]|0;f=h}}while(0);a=a+1|0}while(a>>>0<(c[m>>2]|0)>>>0)}$b(249392,4,1,d|0)|0}}$b(246152,2,1,d|0)|0;i=o;return}function Az(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=k+12|0;if(!d){$b(246040,13,1,e|0)|0;a[h>>0]=9;a[h+1>>0]=0}else{$b(246e3,36,1,c[s>>2]|0)|0;a[h>>0]=0}g=c[b>>2]|0;f=c[b+4>>2]|0;c[j>>2]=h;c[j+4>>2]=g;c[j+8>>2]=f;_c(e|0,246056,j|0)|0;f=c[b+8>>2]|0;g=c[b+12>>2]|0;c[j>>2]=h;c[j+4>>2]=f;c[j+8>>2]=g;_c(e|0,246080,j|0)|0;g=b+16|0;f=c[g>>2]|0;c[j>>2]=h;c[j+4>>2]=f;_c(e|0,246104,j|0)|0;b=b+24|0;if(!(c[b>>2]|0)){$b(246152,2,1,e|0)|0;i=k;return}if(!(c[g>>2]|0)){$b(246152,2,1,e|0)|0;i=k;return}else f=0;do{c[j>>2]=h;c[j+4>>2]=f;_c(e|0,246120,j|0)|0;Bz((c[b>>2]|0)+(f*52|0)|0,d,e);c[j>>2]=h;_c(e|0,246144,j|0)|0;f=f+1|0}while(f>>>0<(c[g>>2]|0)>>>0);$b(246152,2,1,e|0)|0;i=k;return}function Bz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;h=i;i=i+16|0;g=h;f=h+12|0;d=(d|0)!=0;if(d){$b(246160,41,1,c[s>>2]|0)|0;a[f>>0]=0}else{a[f>>0]=9;a[f+1>>0]=9;a[f+2>>0]=0}k=c[b>>2]|0;j=c[b+4>>2]|0;c[g>>2]=f;c[g+4>>2]=k;c[g+8>>2]=j;_c(e|0,246208,g|0)|0;j=c[b+24>>2]|0;c[g>>2]=f;c[g+4>>2]=j;_c(e|0,246232,g|0)|0;b=c[b+32>>2]|0;c[g>>2]=f;c[g+4>>2]=b;_c(e|0,246248,g|0)|0;if(!d){i=h;return}$b(246152,2,1,e|0)|0;i=h;return}function Cz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;j=l;b=(c[a+80>>2]|0)+16|0;h=c[b>>2]|0;d=Cfa(1,56)|0;c[j>>2]=d;if(!d){h=0;i=l;return h|0}f=c[b>>2]|0;c[d+24>>2]=f;c[d>>2]=c[a+92>>2];c[d+4>>2]=c[a+96>>2];c[d+8>>2]=c[a+100>>2];c[d+12>>2]=c[a+104>>2];c[d+16>>2]=c[a+112>>2];c[d+20>>2]=c[a+116>>2];c[d+52>>2]=0;b=c[a+12>>2]|0;c[d+32>>2]=c[b>>2];c[d+36>>2]=c[b+4>>2];c[d+40>>2]=c[b+8>>2];c[d+44>>2]=c[b+16>>2];a=Cfa(f,1080)|0;c[d+48>>2]=a;if(!a){UA(j);h=0;i=l;return h|0}if(!h){h=d;i=l;return h|0}g=b+5576|0;d=0;while(1){f=c[g>>2]|0;c[a+(d*1080|0)+4>>2]=c[f+(d*1080|0)>>2];b=f+(d*1080|0)+4|0;e=c[b>>2]|0;c[a+(d*1080|0)+8>>2]=e;c[a+(d*1080|0)+12>>2]=c[f+(d*1080|0)+8>>2];c[a+(d*1080|0)+16>>2]=c[f+(d*1080|0)+12>>2];c[a+(d*1080|0)+20>>2]=c[f+(d*1080|0)+16>>2];c[a+(d*1080|0)+24>>2]=c[f+(d*1080|0)+20>>2];if(e>>>0<33){Aga(a+(d*1080|0)+948|0,f+(d*1080|0)+944|0,e|0)|0;Aga(a+(d*1080|0)+816|0,f+(d*1080|0)+812|0,c[b>>2]|0)|0}e=c[f+(d*1080|0)+24>>2]|0;c[a+(d*1080|0)+28>>2]=e;c[a+(d*1080|0)+808>>2]=c[f+(d*1080|0)+804>>2];if((e|0)!=1){b=(c[b>>2]|0)*3|0;if((b+-3|0)>>>0<96){b=b+-2|0;k=10}}else{b=1;k=10}if((k|0)==10){k=0;e=0;do{c[a+(d*1080|0)+(e<<2)+32>>2]=c[f+(d*1080|0)+(e<<3)+32>>2];c[a+(d*1080|0)+(e<<2)+420>>2]=c[f+(d*1080|0)+(e<<3)+28>>2];e=e+1|0}while((e|0)!=(b|0))}c[a+(d*1080|0)+812>>2]=c[f+(d*1080|0)+808>>2];d=d+1|0;b=c[j>>2]|0;if((d|0)==(h|0))break;a=c[b+48>>2]|0}i=l;return b|0}function Dz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;b=Cfa(1,48)|0;if(!b){m=0;i=n;return m|0}m=a+192|0;a=c[m>>2]|0;e=a;g=c[e+4>>2]|0;d=b;c[d>>2]=c[e>>2];c[d+4>>2]=g;d=a+8|0;g=c[d+4>>2]|0;e=b+8|0;c[e>>2]=c[d>>2];c[e+4>>2]=g;e=a+16|0;g=c[e+4>>2]|0;d=b+16|0;c[d>>2]=c[e>>2];c[d+4>>2]=g;d=c[a+24>>2]|0;c[b+24>>2]=d;d=d*24|0;g=Afa(d)|0;e=b+28|0;c[e>>2]=g;if(!g){Bfa(b);m=0;i=n;return m|0}f=c[a+28>>2]|0;if(!f){Bfa(g);c[e>>2]=0;a=c[m>>2]|0;g=0}else Aga(g|0,f|0,d|0)|0;k=c[a+36>>2]|0;c[b+36>>2]=k;l=Cfa(k,40)|0;e=b+40|0;c[e>>2]=l;if(!l){Bfa(g);Bfa(b);m=0;i=n;return m|0}d=c[a+40>>2]|0;if(!d){Bfa(l);c[e>>2]=0;m=b;i=n;return m|0}if(!k){m=b;i=n;return m|0}else e=0;while(1){d=c[d+(e*40|0)+20>>2]|0;c[l+(e*40|0)+20>>2]=d;d=d*24|0;f=Afa(d)|0;h=l+(e*40|0)+24|0;c[h>>2]=f;if(!f){a=13;break}j=c[(c[a+40>>2]|0)+(e*40|0)+24>>2]|0;if(!j){Bfa(f);c[h>>2]=0;a=c[m>>2]|0}else Aga(f|0,j|0,d|0)|0;a=a+40|0;j=c[(c[a>>2]|0)+(e*40|0)+4>>2]|0;c[l+(e*40|0)+4>>2]=j;j=j*24|0;d=Afa(j)|0;f=l+(e*40|0)+16|0;c[f>>2]=d;if(!d){a=20;break}a=c[(c[a>>2]|0)+(e*40|0)+16>>2]|0;if(!a){Bfa(d);c[f>>2]=0}else Aga(d|0,a|0,j|0)|0;c[l+(e*40|0)+32>>2]=0;c[l+(e*40|0)+36>>2]=0;e=e+1|0;if(e>>>0>=k>>>0){a=28;break}a=c[m>>2]|0;d=c[a+40>>2]|0}if((a|0)==13){if(e){a=0;do{Bfa(c[l+(a*40|0)+24>>2]|0);a=a+1|0}while((a|0)!=(e|0))}Bfa(l);Bfa(g);Bfa(b);m=0;i=n;return m|0}else if((a|0)==20){if(e){a=0;do{Bfa(c[l+(a*40|0)+24>>2]|0);Bfa(c[l+(a*40|0)+16>>2]|0);a=a+1|0}while((a|0)!=(e|0))}Bfa(l);Bfa(g);Bfa(b);m=0;i=n;return m|0}else if((a|0)==28){i=n;return b|0}return 0}function Ez(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;if(!d){d=0;i=h;return d|0}f=gz()|0;g=a+84|0;c[g>>2]=f;if(!f){d=0;i=h;return d|0}kz(d,f);if(!a)Sa(244256,244152,9191,249024);f=a+184|0;cz(c[f>>2]|0,114)|0;if(!(TP(a,c[f>>2]|0,b,e)|0)){d=a+80|0;iz(c[d>>2]|0);c[d>>2]=0;d=0;i=h;return d|0}a=c[d+16>>2]|0;if(!a){d=1;i=h;return d|0}b=c[(c[g>>2]|0)+24>>2]|0;f=c[d+24>>2]|0;e=0;do{c[f+(e*52|0)+36>>2]=c[b+(e*52|0)+36>>2];d=b+(e*52|0)+44|0;c[f+(e*52|0)+44>>2]=c[d>>2];c[d>>2]=0;e=e+1|0}while(e>>>0>>0);f=1;i=h;return f|0}function Fz(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=i;i=i+16|0;j=x;if(!d){_y(e,1,246264,j)|0;w=0;i=x;return w|0}g=c[a+112>>2]|0;h=ea(c[a+116>>2]|0,g)|0;if(h>>>0<=f>>>0){c[j>>2]=f;c[j+4>>2]=h+-1;_y(e,1,246304,j)|0;w=0;i=x;return w|0}w=(f>>>0)%(g>>>0)|0;v=(f>>>0)/(g>>>0)|0;q=c[a+100>>2]|0;p=ea(q,w)|0;r=c[a+92>>2]|0;p=p+r|0;c[d>>2]=p;u=a+80|0;g=c[u>>2]|0;s=c[g>>2]|0;p=p>>>0>>0?s:p;c[d>>2]=p;r=(ea(q,w+1|0)|0)+r|0;w=d+8|0;c[w>>2]=r;q=c[g+8>>2]|0;r=r>>>0>q>>>0?q:r;c[w>>2]=r;w=c[a+104>>2]|0;q=ea(w,v)|0;s=c[a+96>>2]|0;q=q+s|0;t=d+4|0;c[t>>2]=q;n=c[g+4>>2]|0;q=q>>>0>>0?n:q;c[t>>2]=q;s=(ea(w,v+1|0)|0)+s|0;v=d+12|0;c[v>>2]=s;w=c[g+12>>2]|0;s=s>>>0>w>>>0?w:s;c[v>>2]=s;v=d+24|0;w=d+16|0;t=c[w>>2]|0;a:do if(t){g=c[g+24>>2]|0;n=0;o=c[v>>2]|0;while(1){k=c[g+(n*52|0)+40>>2]|0;c[o+40>>2]=k;h=c[o>>2]|0;if(!h){g=8;break}j=h+-1|0;m=(j+p|0)/(h|0)|0;c[o+16>>2]=m;l=c[o+4>>2]|0;if(!l){g=10;break}A=l+-1|0;y=(A+q|0)/(l|0)|0;c[o+20>>2]=y;z=(j+r|0)/(h|0)|0;h=(A+s|0)/(l|0)|0;j=1<>31;z=Iga(z|0,((z|0)<0)<<31>>31|0,-1,-1)|0;z=Iga(z|0,I|0,j|0,l|0)|0;z=zga(z|0,I|0,k|0)|0;m=Iga(m|0,((m|0)<0)<<31>>31|0,-1,-1)|0;m=Iga(m|0,I|0,j|0,l|0)|0;m=zga(m|0,I|0,k|0)|0;c[o+8>>2]=z-m;m=Iga(h|0,((h|0)<0)<<31>>31|0,-1,-1)|0;m=Iga(m|0,I|0,j|0,l|0)|0;m=zga(m|0,I|0,k|0)|0;h=Iga(y|0,((y|0)<0)<<31>>31|0,-1,-1)|0;l=Iga(h|0,I|0,j|0,l|0)|0;l=zga(l|0,I|0,k|0)|0;c[o+12>>2]=m-l;n=n+1|0;if(n>>>0>=t>>>0)break a;else o=o+52|0}if((g|0)==8)Sa(250616,250624,105,250664);else if((g|0)==10)Sa(250616,250624,105,250664)}while(0);m=a+84|0;g=c[m>>2]|0;if(g)iz(g);g=gz()|0;c[m>>2]=g;if(!g){A=0;i=x;return A|0}kz(d,g);c[a+60>>2]=f;if(!a)Sa(244256,244152,9324,248672);A=a+184|0;cz(c[A>>2]|0,115)|0;if(!(TP(a,c[A>>2]|0,b,e)|0)){iz(c[u>>2]|0);c[u>>2]=0;A=0;i=x;return A|0}g=c[w>>2]|0;if(!g){A=1;i=x;return A|0}k=c[(c[m>>2]|0)+24>>2]|0;j=c[v>>2]|0;l=0;while(1){c[j+(l*52|0)+36>>2]=c[k+(l*52|0)+36>>2];h=c[j+(l*52|0)+44>>2]|0;if(!h)h=k;else{Bfa(h);h=c[(c[m>>2]|0)+24>>2]|0;j=c[v>>2]|0;g=c[w>>2]|0}A=h+(l*52|0)+44|0;c[j+(l*52|0)+44>>2]=c[A>>2];c[A>>2]=0;l=l+1|0;if(l>>>0>=g>>>0){g=1;break}else k=h}i=x;return g|0}function Gz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;c[a+160>>2]=b;e=c[a+80>>2]|0;a:do if((((e|0)!=0?(h=c[e+24>>2]|0,(h|0)!=0):0)?(f=c[a+12>>2]|0,(f|0)!=0):0)?(g=c[f+5576>>2]|0,(g|0)!=0):0){e=c[e+16>>2]|0;if(!e)e=1;else{f=0;while(1){if((c[g+(f*1080|0)+4>>2]|0)>>>0<=b>>>0)break;c[h+(f*52|0)+40>>2]=b;f=f+1|0;if(f>>>0>=e>>>0){e=1;break a}}_y(d,1,246368,j)|0;e=0}}else e=0;while(0);i=k;return e|0}function Hz(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=i;i=i+16|0;N=P;if(!d)Sa(244256,244152,9507,246448);if(!e)Sa(244296,244152,9508,246448);if(!f)Sa(244312,244152,9509,246448);g=Afa(1e3)|0;if(!g){_y(f,1,246464,N)|0;O=0;i=P;return O|0}J=d+116|0;K=d+112|0;L=ea(c[K>>2]|0,c[J>>2]|0)|0;a:do if(L){E=d+196|0;F=d+12|0;G=d+156|0;H=d+200|0;I=d+8|0;M=0;j=1e3;b:while(1){if((c[E>>2]|0)!=(M|0)){O=13;break}C=M;M=M+1|0;D=ea(c[J>>2]|0,c[K>>2]|0)|0;c[N>>2]=M;c[N+4>>2]=D;_y(f,4,248648,N)|0;c[F>>2]=0;D=c[H>>2]|0;c[D+12>>2]=c[(c[G>>2]|0)+(C*5632|0)+5580>>2];c[I>>2]=0;if(!(tB(D,c[E>>2]|0)|0))break;D=zB(c[H>>2]|0)|0;if(D>>>0>j>>>0){h=Dfa(g,D)|0;if(!h){O=18;break}else j=D}else h=g;l=c[H>>2]|0;x=l+24|0;y=c[x>>2]|0;if(c[y+16>>2]|0){z=y+4|0;A=y+8|0;k=h;B=0;C=c[y+24>>2]|0;w=c[(c[c[l+20>>2]>>2]|0)+20>>2]|0;while(1){n=c[C+24>>2]|0;n=((n&7|0)!=0&1)+(n>>>3)|0;n=(n|0)==3?4:n;p=c[w+8>>2]|0;q=c[w>>2]|0;u=p-q|0;s=c[w+12>>2]|0;t=c[w+4>>2]|0;o=c[y>>2]|0;m=c[C>>2]|0;if(!m){O=22;break b}l=c[C+4>>2]|0;if(!l){O=24;break b}r=(m+~o+(c[A>>2]|0)|0)/(m|0)|0;v=r-u|0;l=(c[C+44>>2]|0)+(q-((o+-1+m|0)/(m|0)|0)+(ea(r,t-((l+-1+(c[z>>2]|0)|0)/(l|0)|0)|0)|0)<<2)|0;do if((n|0)==1){m=(s|0)==(t|0);if(!(c[C+32>>2]|0)){if(m)break;r=(p|0)==(q|0);p=s-t|0;q=0;while(1){if(!r){m=0;n=k;o=l;while(1){a[n>>0]=c[o>>2];m=m+1|0;if((m|0)==(u|0))break;else{n=n+1|0;o=o+4|0}}k=k+u|0;l=l+(u<<2)|0}q=q+1|0;if((q|0)==(p|0))break;else l=l+(v<<2)|0}}else{if(m)break;r=(p|0)==(q|0);p=s-t|0;q=0;while(1){if(!r){m=0;n=k;o=l;while(1){a[n>>0]=c[o>>2];m=m+1|0;if((m|0)==(u|0))break;else{n=n+1|0;o=o+4|0}}k=k+u|0;l=l+(u<<2)|0}q=q+1|0;if((q|0)==(p|0))break;else l=l+(v<<2)|0}}}else if((n|0)==2){m=(s|0)==(t|0);if(!(c[C+32>>2]|0)){if(!m){r=(p|0)==(q|0);p=s-t|0;q=0;while(1){if(!r){m=0;n=k;o=l;while(1){b[n>>1]=c[o>>2];m=m+1|0;if((m|0)==(u|0))break;else{n=n+2|0;o=o+4|0}}k=k+(u<<1)|0;l=l+(u<<2)|0}q=q+1|0;if((q|0)==(p|0))break;else l=l+(v<<2)|0}}}else if(!m){r=(p|0)==(q|0);p=s-t|0;q=0;while(1){if(!r){m=0;n=k;o=l;while(1){b[n>>1]=c[o>>2];m=m+1|0;if((m|0)==(u|0))break;else{n=n+2|0;o=o+4|0}}k=k+(u<<1)|0;l=l+(u<<2)|0}q=q+1|0;if((q|0)==(p|0))break;else l=l+(v<<2)|0}}}else if((n|0)==4)if((s|0)!=(t|0)){r=(p|0)==(q|0);p=s-t|0;q=0;while(1){if(!r){m=0;n=k;o=l;while(1){c[n>>2]=c[o>>2];m=m+1|0;if((m|0)==(u|0))break;else{n=n+4|0;o=o+4|0}}k=k+(u<<2)|0;l=l+(u<<2)|0}q=q+1|0;if((q|0)==(p|0))break;else l=l+(v<<2)|0}}while(0);B=B+1|0;if(B>>>0>=(c[(c[x>>2]|0)+16>>2]|0)>>>0)break;else{C=C+52|0;w=w+44|0}}}if(!(_P(d,h,D,e,f)|0)){g=0;O=63;break}if(M>>>0>=L>>>0){g=h;break a}else g=h}if((O|0)==13)_y(f,1,248608,N)|0;else if((O|0)==18){Bfa(g);_y(f,1,246464,N)|0;O=0;i=P;return O|0}else if((O|0)==22)Sa(250616,250624,105,250664);else if((O|0)==24)Sa(250616,250624,105,250664);else if((O|0)==63){i=P;return g|0}Bfa(g);O=0;i=P;return O|0}while(0);Bfa(g);O=1;i=P;return O|0}function Iz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;if(!a)Sa(244256,244152,9790,248240);e=a+184|0;cz(c[e>>2]|0,116)|0;if(c[a+160>>2]|0)cz(c[e>>2]|0,117)|0;cz(c[e>>2]|0,118)|0;cz(c[e>>2]|0,119)|0;cz(c[e>>2]|0,120)|0;d=(TP(a,c[e>>2]|0,b,d)|0)!=0&1;i=f;return d|0}function Jz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;if(!a)Sa(244256,244152,9569,246504);if(!b)Sa(244296,244152,9570,246504);if(!e)Sa(244312,244152,9571,246504);j=gz()|0;h=a+80|0;c[h>>2]=j;kz(d,j);j=c[d+24>>2]|0;if((j|0)!=0?(k=c[d+16>>2]|0,(k|0)!=0):0){g=0;do{d=j+(g*52|0)+44|0;f=c[d>>2]|0;if(f){c[(c[(c[h>>2]|0)+24>>2]|0)+(g*52|0)+44>>2]=f;c[d>>2]=0}g=g+1|0}while(g>>>0>>0)}j=a+188|0;cz(c[j>>2]|0,121)|0;cz(c[j>>2]|0,122)|0;cz(c[j>>2]|0,123)|0;if(!(TP(a,c[j>>2]|0,b,e)|0)){a=0;i=l;return a|0}d=a+184|0;cz(c[d>>2]|0,124)|0;cz(c[d>>2]|0,125)|0;cz(c[d>>2]|0,126)|0;cz(c[d>>2]|0,127)|0;cz(c[d>>2]|0,128)|0;f=a+160|0;if((c[f>>2]|0)!=0?(cz(c[d>>2]|0,129)|0,(c[f>>2]|0)==3):0)cz(c[d>>2]|0,130)|0;cz(c[d>>2]|0,131)|0;if(c[a+108>>2]|0)cz(c[d>>2]|0,132)|0;if(c[a+88>>2]&33024)cz(c[d>>2]|0,133)|0;if(c[a+192>>2]|0)cz(c[d>>2]|0,134)|0;cz(c[d>>2]|0,135)|0;cz(c[d>>2]|0,136)|0;a=(TP(a,c[d>>2]|0,b,e)|0)!=0&1;i=l;return a|0}function Kz(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;k=i;i=i+16|0;j=k;h=a+196|0;if((c[h>>2]|0)==(b|0)){l=ea(c[a+116>>2]|0,c[a+112>>2]|0)|0;c[j>>2]=b+1;c[j+4>>2]=l;_y(g,4,248648,j)|0;c[a+12>>2]=0;l=c[a+200>>2]|0;c[l+12>>2]=c[(c[a+156>>2]|0)+(b*5632|0)+5580>>2];c[a+8>>2]=0;if(tB(l,c[h>>2]|0)|0){if(_P(a,d,e,f,g)|0){l=1;i=k;return l|0}c[j>>2]=b;_y(g,1,246592,j)|0;l=0;i=k;return l|0}}else _y(g,1,248608,j)|0;c[j>>2]=b;_y(g,1,246528,j)|0;l=0;i=k;return l|0}function Lz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;if(!d){d=0;i=h;return d|0}if(!(Ez(c[a>>2]|0,b,d,e)|0)){_y(e,1,256944,h)|0;d=0;i=h;return d|0}if(c[a+128>>2]|0){d=1;i=h;return d|0}g=a+108|0;if(!(uQ(d,g,e)|0)){d=0;i=h;return d|0}b=c[a+48>>2]|0;do if((b|0)==17)c[d+20>>2]=2;else if((b|0)==18)c[d+20>>2]=3;else if((b|0)!=16){e=d+20|0;if((b|0)==24){c[e>>2]=4;break}else{c[e>>2]=-1;break}}else c[d+20>>2]=1;while(0);if(c[a+116>>2]|0)vQ(d,g);f=a+120|0;b=c[f>>2]|0;do if(b){if(c[b+12>>2]|0){wQ(d,g);break}Bfa(c[b+4>>2]|0);Bfa(c[(c[f>>2]|0)+8>>2]|0);Bfa(c[c[f>>2]>>2]|0);b=c[f>>2]|0;e=c[b+12>>2]|0;if(e){Bfa(e);b=c[f>>2]|0}Bfa(b);c[f>>2]=0}while(0);b=c[g>>2]|0;if(!b){d=1;i=h;return d|0}c[d+28>>2]=b;c[d+32>>2]=c[a+112>>2];c[g>>2]=0;d=1;i=h;return d|0}function Mz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;m=o;f=o+4|0;k=o+40|0;if(!b)Sa(257e3,257016,1350,257048);if(!a)Sa(257072,257016,1351,257048);if(!d)Sa(257088,257016,1352,257048);e=f+0|0;h=e+36|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(h|0));n=(c[a+24>>2]|0)==255;c[f>>2]=223;e=f+12|0;if(n){c[e>>2]=224;c[f+24>>2]=225;n=3}else{c[e>>2]=225;n=2}ny(k+4|0,1785737832,4);h=0;g=f;j=8;while(1){e=g+8|0;p=Wd[c[g>>2]&511](a,e)|0;c[g+4>>2]=p;if(!p){l=12;break}j=(c[e>>2]|0)+j|0;h=h+1|0;if((h|0)>=(n|0))break;else g=g+12|0}if((l|0)==12){_y(d,1,257104,m)|0;g=0;while(1){e=c[f+4>>2]|0;if(e)Bfa(e);g=g+1|0;if((g|0)>=(n|0)){e=0;break}else f=f+12|0}i=o;return e|0}ny(k,j,4);a:do if((Ky(b,k,8,d)|0)==8){e=0;h=f;while(1){p=h+8|0;k=Ky(b,c[h+4>>2]|0,c[p>>2]|0,d)|0;if((k|0)!=(c[p>>2]|0))break;e=e+1|0;if((e|0)>=(n|0)){e=1;break a}else h=h+12|0}_y(d,1,257152,m)|0;e=0}else{_y(d,1,257152,m)|0;e=0}while(0);h=0;while(1){g=c[f+4>>2]|0;if(g)Bfa(g);h=h+1|0;if((h|0)>=(n|0))break;else f=f+12|0}i=o;return e|0}function Nz(b,d){b=b|0;d=d|0;var e=0;e=i;nz(c[b>>2]|0,d);a[b+124>>0]=0;c[b+128>>2]=c[d+8248>>2]&1;i=e;return}function Oz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;j=m;if(!((a|0)!=0&(b|0)!=0&(d|0)!=0)){i=m;return}h=d+16|0;if(((c[h>>2]|0)+-1|0)>>>0>16383){_y(e,1,257200,j)|0;i=m;return}qz(c[a>>2]|0,b,d,e);c[a+56>>2]=1785737760;c[a+60>>2]=0;c[a+64>>2]=1;f=Afa(4)|0;g=a+68|0;c[g>>2]=f;if(!f){c[g>>2]=0;_y(e,1,257272,j)|0;i=m;return}c[f>>2]=1785737760;k=c[h>>2]|0;c[a+20>>2]=k;l=Afa(k*12|0)|0;f=a+72|0;c[f>>2]=l;if(!l){c[f>>2]=0;_y(e,1,257272,j)|0;i=m;return}c[a+16>>2]=(c[d+12>>2]|0)-(c[d+4>>2]|0);c[a+12>>2]=(c[d+8>>2]|0)-(c[d>>2]|0);j=c[d+24>>2]|0;f=c[j+24>>2]|0;e=c[j+32>>2]|0;g=a+24|0;c[g>>2]=f+-1+(e<<7);if(k>>>0>1){h=1;do{if((f|0)!=(c[j+(h*52|0)+24>>2]|0))c[g>>2]=255;h=h+1|0}while(h>>>0>>0)}c[a+28>>2]=7;c[a+32>>2]=0;c[a+36>>2]=0;a:do if(k){h=f;g=e;f=0;while(1){c[l+(f*12|0)+8>>2]=h+-1+(g<<7);f=f+1|0;if(f>>>0>=k>>>0)break a;h=c[j+(f*52|0)+24>>2]|0;g=c[j+(f*52|0)+32>>2]|0}}while(0);f=a+40|0;do if(!(c[d+32>>2]|0)){c[f>>2]=1;f=c[d+20>>2]|0;if((f|0)==2){c[a+48>>2]=17;break}else if((f|0)==3){c[a+48>>2]=18;break}else if((f|0)==1){c[a+48>>2]=16;break}else break}else{c[f>>2]=2;c[a+48>>2]=0}while(0);c[a+52>>2]=0;c[a+44>>2]=0;c[a+96>>2]=c[b+18692>>2];i=m;return}function Pz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;b=Hz(c[a>>2]|0,b,d)|0;i=e;return b|0}function Qz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;if(!a)Sa(257072,257016,1669,257320);if(!b)Sa(257344,257016,1670,257320);if(!d)Sa(257088,257016,1671,257320);f=a+8|0;cz(c[f>>2]|0,137)|0;if(!(BQ(a,c[f>>2]|0,b,d)|0)){f=0;i=e;return f|0}f=sz(c[a>>2]|0,b,d)|0;i=e;return f|0}function Rz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;if(!a)Sa(257072,257016,1690,257360);if(!b)Sa(257344,257016,1691,257360);if(!d)Sa(257088,257016,1692,257360);e=a+8|0;cz(c[e>>2]|0,138)|0;if(!(Iz(c[a>>2]|0,b,d)|0)){a=0;i=f;return a|0}a=BQ(a,c[e>>2]|0,b,d)|0;i=f;return a|0}function Sz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;if(!a)Sa(257072,257016,1742,257384);if(!b)Sa(257344,257016,1743,257384);if(!d)Sa(257088,257016,1744,257384);d=((c[a>>2]|0)!=0?(c[a+104>>2]|c[a+100>>2]|0)==0:0)&(c[a+8>>2]|0)!=0&(c[a+4>>2]|0)!=0&(c[a+64>>2]|0)!=0&(c[a+16>>2]|0)!=0&(c[a+12>>2]|0)!=0&1;e=c[a+20>>2]|0;if(!e){f=d;a=a+40|0;a=c[a>>2]|0;g=a>>>0<3;a=(a|0)!=0;a=g&a;a=a&1;b=Qy(b)|0;b=b&f;a=b&a;i=h;return a|0}f=c[a+72>>2]|0;g=0;do{d=(c[f+(g*12|0)+8>>2]|0)!=0&d;g=g+1|0}while(g>>>0>>0);a=a+40|0;a=c[a>>2]|0;f=a>>>0<3;a=(a|0)!=0;a=f&a;a=a&1;b=Qy(b)|0;b=b&d;a=b&a;i=h;return a|0}function Tz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;if(!a)Sa(257072,257016,1927,257416);if(!b)Sa(257e3,257016,1928,257416);if(!e)Sa(257088,257016,1929,257416);f=a+4|0;cz(c[f>>2]|0,139)|0;if(!(BQ(a,c[f>>2]|0,b,e)|0)){b=0;i=g;return b|0}f=a+8|0;cz(c[f>>2]|0,140)|0;cz(c[f>>2]|0,141)|0;cz(c[f>>2]|0,142)|0;if(c[a+96>>2]|0)cz(c[f>>2]|0,143)|0;cz(c[f>>2]|0,144)|0;if(!(BQ(a,c[f>>2]|0,b,e)|0)){b=0;i=g;return b|0}b=Jz(c[a>>2]|0,b,d,e)|0;i=g;return b|0}function Uz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;if(!a)Sa(257072,257016,2104,257440);if(!b)Sa(257e3,257016,2105,257440);if(!d)Sa(257088,257016,2106,257440);else{f=My(b)|0;a=a+80|0;c[a>>2]=f;c[a+4>>2]=I;b=Oy(b,8,0,d)|0;b=(b|0)==8&(I|0)==0&1;i=e;return b|0}return 0}function Vz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;if(!b)Sa(257072,257016,2277,257464);if(!a)Sa(257488,257016,2278,257464);if(!e)Sa(257088,257016,2279,257464);f=b+8|0;cz(c[f>>2]|0,137)|0;if(!(BQ(b,c[b+4>>2]|0,a,e)|0)){a=0;i=g;return a|0}if(!(BQ(b,c[f>>2]|0,a,e)|0)){a=0;i=g;return a|0}a=tz(a,c[b>>2]|0,d,e)|0;i=g;return a|0}function Wz(a,b,d,e,f,g,h,j,k,l,m){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0;n=i;h=vz(c[a>>2]|0,b,d,e,f,g,h,j,k,l,m)|0;i=n;return h|0}function Xz(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;b=Kz(c[a>>2]|0,b,d,e,f,g)|0;i=h;return b|0}function Yz(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;b=wz(c[a>>2]|0,b,d,e,f,g)|0;i=h;return b|0}function Zz(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;if(!a){i=f;return}pz(c[a>>2]|0);c[a>>2]=0;b=a+72|0;d=c[b>>2]|0;if(d){Bfa(d);c[b>>2]=0}b=a+68|0;d=c[b>>2]|0;if(d){Bfa(d);c[b>>2]=0}b=a+108|0;d=c[b>>2]|0;if(d){Bfa(d);c[b>>2]=0}e=a+116|0;b=c[e>>2]|0;if(b){d=c[b>>2]|0;if(d){Bfa(d);b=c[e>>2]|0;c[b>>2]=0}Bfa(b);c[e>>2]=0}e=a+120|0;b=c[e>>2]|0;if(b){d=c[b+12>>2]|0;if(d){Bfa(d);b=c[e>>2]|0;c[b+12>>2]=0}d=c[b+4>>2]|0;if(d){Bfa(d);b=c[e>>2]|0;c[b+4>>2]=0}d=c[b+8>>2]|0;if(d){Bfa(d);b=c[e>>2]|0;c[b+8>>2]=0}d=c[b>>2]|0;if(d){Bfa(d);b=c[e>>2]|0;c[b>>2]=0}Bfa(b);c[e>>2]=0}b=a+4|0;d=c[b>>2]|0;if(d){bz(d);c[b>>2]=0}b=c[a+8>>2]|0;if(b)bz(b);Bfa(a);i=f;return}function _z(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0;j=i;e=xz(c[a>>2]|0,b,d,e,f,g,h)|0;i=j;return e|0}function $z(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+16|0;g=h;if(!d){a=0;i=h;return a|0}_y(e,2,257504,g)|0;if(!(Fz(c[a>>2]|0,b,d,e,f)|0)){_y(e,1,256944,g)|0;a=0;i=h;return a|0}g=a+108|0;if(!(uQ(d,g,e)|0)){a=0;i=h;return a|0}f=c[a+48>>2]|0;do if((f|0)==17)c[d+20>>2]=2;else if((f|0)!=16){b=d+20|0;if((f|0)==18){c[b>>2]=3;break}else{c[b>>2]=-1;break}}else c[d+20>>2]=1;while(0);if(c[a+116>>2]|0)vQ(d,g);e=a+120|0;b=c[e>>2]|0;do if(b){if(c[b+12>>2]|0){wQ(d,g);break}Bfa(c[b+4>>2]|0);Bfa(c[(c[e>>2]|0)+8>>2]|0);Bfa(c[c[e>>2]>>2]|0);b=c[e>>2]|0;f=c[b+12>>2]|0;if(f){Bfa(f);b=c[e>>2]|0}Bfa(b);c[e>>2]=0}while(0);b=c[g>>2]|0;if(!b){a=1;i=h;return a|0}c[d+28>>2]=b;c[d+32>>2]=c[a+112>>2];c[g>>2]=0;a=1;i=h;return a|0}function aA(b){b=b|0;var d=0,e=0;e=i;d=Afa(136)|0;if(!d){i=e;return d|0}Cga(d|0,0,136)|0;if(!b){b=oz()|0;c[d>>2]=b}else{b=yz()|0;c[d>>2]=b}if(!b){Zz(d);d=0;i=e;return d|0}b=d+108|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;a[b+16>>0]=0;b=az()|0;c[d+4>>2]=b;if(!b){Zz(d);d=0;i=e;return d|0}b=az()|0;c[d+8>>2]=b;if(b){i=e;return d|0}Zz(d);d=0;i=e;return d|0}function bA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!a)Sa(257584,257016,2573,257600);else{zz(c[a>>2]|0,b,d);i=e;return}}function cA(a){a=a|0;var b=0;b=i;a=Dz(c[a>>2]|0)|0;i=b;return a|0}function dA(a){a=a|0;var b=0;b=i;a=Cz(c[a>>2]|0)|0;i=b;return a|0}function eA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;b=Gz(c[a>>2]|0,b,d)|0;i=e;return b|0}function fA(){return 260816}function gA(){return 260840}function hA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;if(!e){i=g;return}else f=0;do{n=a+(f<<2)|0;k=c[n>>2]|0;l=b+(f<<2)|0;j=c[l>>2]|0;h=d+(f<<2)|0;m=c[h>>2]|0;c[n>>2]=(j<<1)+k+m>>2;c[l>>2]=m-j;c[h>>2]=k-j;f=f+1|0}while((f|0)!=(e|0));i=g;return}function iA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;if(!e){i=g;return}else f=0;do{m=a+(f<<2)|0;l=b+(f<<2)|0;j=c[l>>2]|0;h=d+(f<<2)|0;n=c[h>>2]|0;k=(c[m>>2]|0)-(n+j>>2)|0;c[m>>2]=k+n;c[l>>2]=k;c[h>>2]=k+j;f=f+1|0}while((f|0)!=(e|0));i=g;return}function jA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;g=i;if(!e){i=g;return}else f=0;do{q=a+(f<<2)|0;w=c[q>>2]|0;m=b+(f<<2)|0;v=c[m>>2]|0;h=d+(f<<2)|0;u=c[h>>2]|0;l=((w|0)<0)<<31>>31;s=Tga(w|0,l|0,2449,0)|0;s=Iga(s&4096|0,0,s|0,I|0)|0;s=Lga(s|0,I|0,13)|0;k=((v|0)<0)<<31>>31;t=Tga(v|0,k|0,4809,0)|0;t=Iga(t&4096|0,0,t|0,I|0)|0;t=Lga(t|0,I|0,13)|0;j=((u|0)<0)<<31>>31;r=Tga(u|0,j|0,934,0)|0;r=Iga(r&4096|0,0,r|0,I|0)|0;r=Lga(r|0,I|0,13)|0;n=Tga(w|0,l|0,1382,0)|0;n=Iga(n&4096|0,0,n|0,I|0)|0;n=Lga(n|0,I|0,13)|0;o=Tga(v|0,k|0,2714,0)|0;o=Iga(o&4096|0,0,o|0,I|0)|0;o=Lga(o|0,I|0,13)|0;p=Fga(u|0,j|0,12)|0;p=Iga(p&4096|0,0,p|0,I|0)|0;p=Lga(p|0,I|0,13)|0;l=Fga(w|0,l|0,12)|0;l=Iga(l&4096|0,0,l|0,I|0)|0;l=Lga(l|0,I|0,13)|0;k=Tga(v|0,k|0,3430,0)|0;k=Iga(k&4096|0,0,k|0,I|0)|0;k=Lga(k|0,I|0,13)|0;j=Tga(u|0,j|0,666,0)|0;j=Iga(j&4096|0,0,j|0,I|0)|0;j=Lga(j|0,I|0,13)|0;c[q>>2]=t+s+r;c[m>>2]=p-(o+n);c[h>>2]=l-k-j;f=f+1|0}while((f|0)!=(e|0));i=g;return}function kA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0,j=0.0,k=0.0,l=0,m=0.0,n=0;f=i;if(!d){i=f;return}else e=0;do{n=a+(e<<2)|0;k=+g[n>>2];l=b+(e<<2)|0;j=+g[l>>2];h=c+(e<<2)|0;m=+g[h>>2];g[n>>2]=k+m*1.4019999504089355;g[l>>2]=k-j*.3441300094127655-m*.714139997959137;g[h>>2]=k+j*1.7719999551773071;e=e+1|0}while((e|0)!=(d|0));i=f;return}function lA(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;h=ea(e,e)|0;n=Afa(h+e<<2)|0;if(!n){e=0;i=o;return e|0}if(h){j=0;f=a;while(1){c[n+(j+e<<2)>>2]=~~(+g[f>>2]*8192.0);j=j+1|0;if((j|0)==(h|0))break;else f=f+4|0}}if(b){l=(e|0)==0;m=0;do{if(!l){f=0;do{c[n+(f<<2)>>2]=c[c[d+(f<<2)>>2]>>2];f=f+1|0}while((f|0)!=(e|0));if(!l){a=0;j=n;do{j=j+(e<<2)|0;f=d+(a<<2)|0;c[c[f>>2]>>2]=0;h=0;k=j;while(1){q=c[k>>2]|0;p=c[n+(h<<2)>>2]|0;q=Tga(p|0,((p|0)<0)<<31>>31|0,q|0,((q|0)<0)<<31>>31|0)|0;q=Iga(q&4096|0,0,q|0,I|0)|0;q=Lga(q|0,I|0,13)|0;p=c[f>>2]|0;c[p>>2]=q+(c[p>>2]|0);h=h+1|0;if((h|0)==(e|0))break;else k=k+4|0}c[f>>2]=(c[f>>2]|0)+4;a=a+1|0}while((a|0)!=(e|0))}}m=m+1|0}while((m|0)!=(b|0))}Bfa(n);q=1;i=o;return q|0}function mA(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;n=Afa(e<<3)|0;if(!n){e=0;i=q;return e|0}if(b){o=(e|0)==0;p=0;do{if(!o){f=0;do{g[n+(f<<2)>>2]=+g[c[d+(f<<2)>>2]>>2];f=f+1|0}while((f|0)!=(e|0));if(!o){j=0;l=a;while(1){f=n+(j+e<<2)|0;g[f>>2]=0.0;h=0.0;k=0;m=l;while(1){h=h+ +g[m>>2]*+g[n+(k<<2)>>2];g[f>>2]=h;k=k+1|0;if((k|0)==(e|0))break;else m=m+4|0}k=d+(j<<2)|0;m=c[k>>2]|0;c[k>>2]=m+4;g[m>>2]=h;j=j+1|0;if((j|0)==(e|0))break;else l=l+(e<<2)|0}}}p=p+1|0}while((p|0)!=(b|0))}Bfa(n);e=1;i=q;return e|0}function nA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,j=0,k=0,l=0,m=0.0;l=i;if(!b){i=l;return}else f=0;do{e=a+(f<<3)|0;h[e>>3]=0.0;d=0.0;j=0;k=f;while(1){m=+g[c+(k<<2)>>2];d=d+m*m;j=j+1|0;if((j|0)==(b|0))break;else k=k+b|0}h[e>>3]=+U(+d);f=f+1|0}while((f|0)!=(b|0));i=l;return}function oA(){var a=0,b=0;b=i;a=Afa(104)|0;i=b;return a|0}function pA(a){a=a|0;var b=0;b=i;if(a)Bfa(a);i=b;return}function qA(a){a=a|0;return (c[a+12>>2]|0)-(c[a+16>>2]|0)|0}function rA(b,d){b=b|0;d=d|0;var e=0,f=0;c[b+100>>2]=b+24;c[b+4>>2]=32768;c[b>>2]=0;f=d+-1|0;c[b+12>>2]=f;e=b+8|0;c[e>>2]=12;c[e>>2]=(a[f>>0]|0)==-1?13:12;c[b+16>>2]=d;return}function sA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;g=c[b+100>>2]|0;h=c[g>>2]|0;j=(c[h+4>>2]|0)==(d|0);d=c[h>>2]|0;k=b+4|0;f=(c[k>>2]|0)-d|0;c[k>>2]=f;if(!j){if(f>>>0>>0){e=(c[b>>2]|0)+d|0;c[b>>2]=e}else{c[k>>2]=d;f=d;e=c[b>>2]|0}c[g>>2]=c[h+12>>2];j=b+8|0;h=b+12|0;d=c[j>>2]|0;do{f=f<<1;c[k>>2]=f;g=e<<1;c[b>>2]=g;d=d+-1|0;c[j>>2]=d;if(!d){d=c[h>>2]|0;f=a[d>>0]|0;do if(f<<24>>24!=-1){if(!(g&134217728)){d=d+1|0;c[h>>2]=d;a[d>>0]=e>>>18;e=c[b>>2]&524287;c[b>>2]=e;c[j>>2]=8;d=8;break}a[d>>0]=f+1<<24>>24;d=c[h>>2]|0;if((a[d>>0]|0)==-1){f=c[b>>2]&134217727;c[b>>2]=f;e=d+1|0;c[h>>2]=e;a[e>>0]=f>>>20;e=c[b>>2]&1048575;c[b>>2]=e;c[j>>2]=7;d=7;break}else{e=d+1|0;c[h>>2]=e;a[e>>0]=(c[b>>2]|0)>>>19;e=c[b>>2]&524287;c[b>>2]=e;c[j>>2]=8;d=8;break}}else{d=d+1|0;c[h>>2]=d;a[d>>0]=e>>>19;e=c[b>>2]&1048575;c[b>>2]=e;c[j>>2]=7;d=7}while(0);f=c[k>>2]|0}else e=g}while((f&32768|0)==0);i=l;return}if(f&32768){c[b>>2]=(c[b>>2]|0)+d;i=l;return}if(f>>>0>>0){c[k>>2]=d;e=c[b>>2]|0;f=d}else{e=(c[b>>2]|0)+d|0;c[b>>2]=e}c[g>>2]=c[h+8>>2];h=b+8|0;j=b+12|0;d=c[h>>2]|0;do{f=f<<1;c[k>>2]=f;g=e<<1;c[b>>2]=g;d=d+-1|0;c[h>>2]=d;if(!d){d=c[j>>2]|0;f=a[d>>0]|0;do if(f<<24>>24!=-1){if(!(g&134217728)){d=d+1|0;c[j>>2]=d;a[d>>0]=e>>>18;e=c[b>>2]&524287;c[b>>2]=e;c[h>>2]=8;d=8;break}a[d>>0]=f+1<<24>>24;d=c[j>>2]|0;if((a[d>>0]|0)==-1){f=c[b>>2]&134217727;c[b>>2]=f;e=d+1|0;c[j>>2]=e;a[e>>0]=f>>>20;e=c[b>>2]&1048575;c[b>>2]=e;c[h>>2]=7;d=7;break}else{e=d+1|0;c[j>>2]=e;a[e>>0]=(c[b>>2]|0)>>>19;e=c[b>>2]&524287;c[b>>2]=e;c[h>>2]=8;d=8;break}}else{d=d+1|0;c[j>>2]=d;a[d>>0]=e>>>19;e=c[b>>2]&1048575;c[b>>2]=e;c[h>>2]=7;d=7}while(0);f=c[k>>2]|0}else e=g}while((f&32768|0)==0);i=l;return}function tA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;h=c[b>>2]|0;f=h|65535;g=b+8|0;f=(f>>>0<((c[b+4>>2]|0)+h|0)>>>0?f:f+-32768|0)<>2];c[b>>2]=f;h=b+12|0;d=c[h>>2]|0;e=a[d>>0]|0;do if(e<<24>>24!=-1){if(!(f&134217728)){d=d+1|0;c[h>>2]=d;a[d>>0]=f>>>19;d=c[b>>2]&524287;c[b>>2]=d;c[g>>2]=8;e=8;break}a[d>>0]=e+1<<24>>24;d=c[h>>2]|0;if((a[d>>0]|0)==-1){e=c[b>>2]&134217727;c[b>>2]=e;d=d+1|0;c[h>>2]=d;a[d>>0]=e>>>20;d=c[b>>2]&1048575;c[b>>2]=d;c[g>>2]=7;e=7;break}else{d=d+1|0;c[h>>2]=d;a[d>>0]=(c[b>>2]|0)>>>19;d=c[b>>2]&524287;c[b>>2]=d;c[g>>2]=8;e=8;break}}else{d=d+1|0;c[h>>2]=d;a[d>>0]=f>>>20;d=c[b>>2]&1048575;c[b>>2]=d;c[g>>2]=7;e=7}while(0);d=d<>2]=d;e=c[h>>2]|0;f=a[e>>0]|0;do if(f<<24>>24!=-1){if(!(d&134217728)){f=e+1|0;c[h>>2]=f;a[f>>0]=d>>>19;c[b>>2]=c[b>>2]&524287;c[g>>2]=8;break}a[e>>0]=f+1<<24>>24;d=c[h>>2]|0;if((a[d>>0]|0)==-1){e=c[b>>2]&134217727;c[b>>2]=e;f=d+1|0;c[h>>2]=f;a[f>>0]=e>>>20;c[b>>2]=c[b>>2]&1048575;c[g>>2]=7;break}else{f=d+1|0;c[h>>2]=f;a[f>>0]=(c[b>>2]|0)>>>19;c[b>>2]=c[b>>2]&524287;c[g>>2]=8;break}}else{f=e+1|0;c[h>>2]=f;a[f>>0]=d>>>20;c[b>>2]=c[b>>2]&1048575;c[g>>2]=7}while(0);d=c[h>>2]|0;if((a[d>>0]|0)==-1){i=j;return}c[h>>2]=d+1;i=j;return}function uA(a){a=a|0;c[a>>2]=0;c[a+8>>2]=8;return}function vA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=i;e=b+8|0;g=(c[e>>2]|0)+-1|0;c[e>>2]=g;d=(d<>2]|0)|0;c[b>>2]=d;if(g){i=f;return}g=b+12|0;h=(c[g>>2]|0)+1|0;c[g>>2]=h;a[h>>0]=d;c[e>>2]=8;c[e>>2]=(a[c[g>>2]>>0]|0)==-1?7:8;c[b>>2]=0;i=f;return}function wA(a){a=a|0;c[a+28>>2]=260864;c[a+32>>2]=260864;c[a+36>>2]=260864;c[a+40>>2]=260864;c[a+44>>2]=260864;c[a+48>>2]=260864;c[a+52>>2]=260864;c[a+56>>2]=260864;c[a+60>>2]=260864;c[a+64>>2]=260864;c[a+68>>2]=260864;c[a+72>>2]=260864;c[a+76>>2]=260864;c[a+80>>2]=260864;c[a+84>>2]=260864;c[a+88>>2]=260864;c[a+96>>2]=262336;c[a+92>>2]=260960;c[a+24>>2]=260992;return}function xA(a){a=a|0;c[a+24>>2]=260864;c[a+28>>2]=260864;c[a+32>>2]=260864;c[a+36>>2]=260864;c[a+40>>2]=260864;c[a+44>>2]=260864;c[a+48>>2]=260864;c[a+52>>2]=260864;c[a+56>>2]=260864;c[a+60>>2]=260864;c[a+64>>2]=260864;c[a+68>>2]=260864;c[a+72>>2]=260864;c[a+76>>2]=260864;c[a+80>>2]=260864;c[a+84>>2]=260864;c[a+88>>2]=260864;c[a+92>>2]=260864;c[a+96>>2]=260864;return}function yA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a+(b<<2)+24>>2]=260864+((e<<1)+d<<4);return}function zA(b){b=b|0;var d=0,e=0,f=0;e=i;c[b+100>>2]=b+24;c[b+4>>2]=32768;c[b>>2]=0;d=b+8|0;c[d>>2]=12;f=b+12|0;b=(c[f>>2]|0)+-1|0;c[f>>2]=b;if((a[b>>0]|0)!=-1){i=e;return}c[d>>2]=13;i=e;return}function AA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;j=b+8|0;d=c[j>>2]|0;f=12-d|0;if((f|0)>0){g=b+12|0;e=c[b>>2]|0;do{d=e<>2]=d;c[j>>2]=0;e=c[g>>2]|0;h=a[e>>0]|0;do if(h<<24>>24!=-1){if(!(d&134217728)){e=e+1|0;c[g>>2]=e;a[e>>0]=d>>>19;e=c[b>>2]&524287;c[b>>2]=e;c[j>>2]=8;d=8;break}a[e>>0]=h+1<<24>>24;d=c[g>>2]|0;if((a[d>>0]|0)==-1){h=c[b>>2]&134217727;c[b>>2]=h;e=d+1|0;c[g>>2]=e;a[e>>0]=h>>>20;e=c[b>>2]&1048575;c[b>>2]=e;c[j>>2]=7;d=7;break}else{e=d+1|0;c[g>>2]=e;a[e>>0]=(c[b>>2]|0)>>>19;e=c[b>>2]&524287;c[b>>2]=e;c[j>>2]=8;d=8;break}}else{e=e+1|0;c[g>>2]=e;a[e>>0]=d>>>20;e=c[b>>2]&1048575;c[b>>2]=e;c[j>>2]=7;d=7}while(0);f=f-d|0}while((f|0)>0)}else g=b+12|0;d=c[g>>2]|0;e=a[d>>0]|0;if(e<<24>>24==-1){i=k;return}f=c[b>>2]|0;if(!(f&134217728)){h=d+1|0;c[g>>2]=h;a[h>>0]=f>>>19;c[b>>2]=c[b>>2]&524287;c[j>>2]=8;i=k;return}a[d>>0]=e+1<<24>>24;d=c[g>>2]|0;if((a[d>>0]|0)==-1){f=c[b>>2]&134217727;c[b>>2]=f;h=d+1|0;c[g>>2]=h;a[h>>0]=f>>>20;c[b>>2]=c[b>>2]&1048575;c[j>>2]=7;i=k;return}else{h=d+1|0;c[g>>2]=h;a[h>>0]=(c[b>>2]|0)>>>19;c[b>>2]=c[b>>2]&524287;c[j>>2]=8;i=k;return}}function BA(a){a=a|0;var b=0;b=i;c[a+100>>2]=a+96;sA(a,1);sA(a,0);sA(a,1);sA(a,0);i=b;return}function CA(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;c[b+100>>2]=b+24;c[b+16>>2]=e;c[b+20>>2]=e+f;h=b+12|0;c[h>>2]=e;do if(f){j=d[e>>0]<<16;c[b>>2]=j;g=e+1|0;if((f|0)==1)f=255;else f=d[g>>0]|0;if((a[e>>0]|0)!=-1){c[h>>2]=g;f=j|f<<8;c[b>>2]=f;c[b+8>>2]=8;g=1;break}if(f>>>0>143){f=j|65280;c[b>>2]=f;c[b+8>>2]=8;g=1;break}else{c[h>>2]=g;f=j+(f<<9)|0;c[b>>2]=f;c[b+8>>2]=7;g=0;break}}else{c[b>>2]=16776960;c[b+8>>2]=8;f=16776960;g=1}while(0);c[b>>2]=f<<7;c[b+8>>2]=g;c[b+4>>2]=32768;i=k;return 1}function DA(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;g=c[b+100>>2]|0;f=c[g>>2]|0;k=c[f>>2]|0;o=b+4|0;j=(c[o>>2]|0)-k|0;c[o>>2]=j;h=c[b>>2]|0;if(h>>>16>>>0>>0){c[o>>2]=k;e=c[f+4>>2]|0;if(j>>>0>>0)f=f+8|0;else{e=1-e|0;f=f+12|0}c[g>>2]=c[f>>2];l=b+8|0;m=b+12|0;n=b+20|0;f=h;g=c[l>>2]|0;do{do if(!g){h=c[m>>2]|0;g=c[n>>2]|0;if((h|0)==(g|0)){f=f+65280|0;c[b>>2]=f;c[l>>2]=8;g=8;break}j=h+1|0;if((j|0)==(g|0))g=255;else g=d[j>>0]|0;if((a[h>>0]|0)!=-1){c[m>>2]=j;f=f+(g<<8)|0;c[b>>2]=f;c[l>>2]=8;g=8;break}if(g>>>0>143){f=f+65280|0;c[b>>2]=f;c[l>>2]=8;g=8;break}else{c[m>>2]=j;f=f+(g<<9)|0;c[b>>2]=f;c[l>>2]=7;g=7;break}}while(0);k=k<<1;c[o>>2]=k;f=f<<1;c[b>>2]=f;g=g+-1|0;c[l>>2]=g}while(k>>>0<32768);i=p;return e|0}h=h-(k<<16)|0;c[b>>2]=h;if(j&32768){b=c[f+4>>2]|0;i=p;return b|0}e=c[f+4>>2]|0;if(k>>>0>j>>>0){e=1-e|0;f=f+12|0}else f=f+8|0;c[g>>2]=c[f>>2];m=b+8|0;n=b+12|0;l=b+20|0;f=h;g=c[m>>2]|0;k=j;do{do if(!g){h=c[n>>2]|0;g=c[l>>2]|0;if((h|0)==(g|0)){f=f+65280|0;c[b>>2]=f;c[m>>2]=8;g=8;break}j=h+1|0;if((j|0)==(g|0))g=255;else g=d[j>>0]|0;if((a[h>>0]|0)!=-1){c[n>>2]=j;f=f+(g<<8)|0;c[b>>2]=f;c[m>>2]=8;g=8;break}if(g>>>0>143){f=f+65280|0;c[b>>2]=f;c[m>>2]=8;g=8;break}else{c[n>>2]=j;f=f+(g<<9)|0;c[b>>2]=f;c[m>>2]=7;g=7;break}}while(0);k=k<<1;c[o>>2]=k;f=f<<1;c[b>>2]=f;g=g+-1|0;c[m>>2]=g}while(k>>>0<32768);i=p;return e|0}function EA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!a){d=0;i=e;return d|0}c[a+64>>2]=b;c[a+52>>2]=d;d=1;i=e;return d|0}function FA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!a){d=0;i=e;return d|0}c[a+60>>2]=b;c[a+48>>2]=d;d=1;i=e;return d|0}function GA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!a){d=0;i=e;return d|0}c[a+56>>2]=b;c[a+44>>2]=d;d=1;i=e;return d|0}function HA(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;b=Cfa(1,84)|0;if(!b){f=0;i=e;return f|0}d=b+0|0;f=d+84|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(f|0));c[b+68>>2]=1;if((a|0)==2){c[b+72>>2]=45;c[b+76>>2]=148;c[b+80>>2]=149;c[b+4>>2]=114;c[b+16>>2]=147;c[b>>2]=115;c[b+8>>2]=2;c[b+12>>2]=3;c[b+20>>2]=243;c[b+24>>2]=77;c[b+28>>2]=3;c[b+32>>2]=53;c[b+36>>2]=148;f=aA(1)|0;c[b+40>>2]=f;if(!f){Bfa(b);f=0;i=e;return f|0}}else if(!((a|0)==0?(c[b+72>>2]=44,c[b+76>>2]=146,c[b+80>>2]=147,c[b+4>>2]=112,c[b+16>>2]=145,c[b>>2]=113,c[b+20>>2]=242,c[b+24>>2]=76,c[b+8>>2]=1,c[b+12>>2]=2,c[b+28>>2]=2,c[b+32>>2]=52,c[b+36>>2]=146,f=yz()|0,c[b+40>>2]=f,(f|0)!=0):0)){Bfa(b);f=0;i=e;return f|0}$y(b+44|0);f=b;i=e;return f|0}function IA(a){a=a|0;var b=0;b=i;if(!a){i=b;return}Cga(a|0,0,8248)|0;c[a>>2]=0;c[a+8200>>2]=-1;c[a+8204>>2]=-1;c[a+8248>>2]=0;i=b;return}function JA(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;if(!((a|0)!=0&(b|0)!=0)){b=0;i=d;return b|0}if(!(c[a+68>>2]|0)){_y(a+44|0,1,262368,d)|0;b=0;i=d;return b|0}else{Jd[c[a+24>>2]&255](c[a+40>>2]|0,b);b=1;i=d;return b|0}return 0}function KA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;i=i+16|0;if(!((b|0)!=0&(a|0)!=0)){a=0;i=e;return a|0}if(!(c[b+68>>2]|0)){_y(b+44|0,1,262456,e)|0;a=0;i=e;return a|0}else{a=ce[c[b>>2]&255](a,c[b+40>>2]|0,d,b+44|0)|0;i=e;return a|0}return 0}function LA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!((a|0)!=0&(b|0)!=0)){b=0;i=e;return b|0}if(!(c[a+68>>2]|0)){b=0;i=e;return b|0}b=ce[c[a+4>>2]&255](c[a+40>>2]|0,b,d,a+44|0)|0;i=e;return b|0}function MA(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;b=Cfa(1,84)|0;if(!b){f=0;i=e;return f|0}d=b+0|0;f=d+84|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(f|0));if((a|0)==2){c[b+4>>2]=151;c[b+12>>2]=152;c[b>>2]=117;c[b+8>>2]=5;c[b+16>>2]=243;c[b+20>>2]=27;f=aA(0)|0;c[b+40>>2]=f;if(!f){Bfa(b);f=0;i=e;return f|0}}else if(!((a|0)==0?(c[b+4>>2]=149,c[b+12>>2]=150,c[b>>2]=116,c[b+8>>2]=4,c[b+16>>2]=242,c[b+20>>2]=26,f=oz()|0,c[b+40>>2]=f,(f|0)!=0):0)){Bfa(b);f=0;i=e;return f|0}$y(b+44|0);f=b;i=e;return f|0}function NA(b){b=b|0;var d=0;d=i;if(!b){i=d;return}Cga(b|0,0,18700)|0;c[b+5592>>2]=6;c[b+18684>>2]=0;c[b+5596>>2]=64;c[b+5600>>2]=64;c[b+44>>2]=0;c[b+5612>>2]=-1;c[b+18188>>2]=1;c[b+18192>>2]=1;a[b+18688>>0]=0;c[b+18196>>2]=-1;c[b+18200>>2]=-1;g[b+4792>>2]=0.0;c[b+4788>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;c[b+18692>>2]=0;i=d;return}function OA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!((a|0)!=0&(b|0)!=0&(d|0)!=0)){b=0;i=e;return b|0}if(c[a+68>>2]|0){b=0;i=e;return b|0}de[c[a+20>>2]&63](c[a+40>>2]|0,b,d,a+44|0);b=1;i=e;return b|0}function PA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!((a|0)!=0&(d|0)!=0)){d=0;i=e;return d|0}if(c[a+68>>2]|0){d=0;i=e;return d|0}d=ce[c[a>>2]&255](c[a+40>>2]|0,d,b,a+44|0)|0;i=e;return d|0}function QA(a,b){a=a|0;b=b|0;var d=0;d=i;if(!((a|0)!=0&(b|0)!=0)){b=0;i=d;return b|0}if(c[a+68>>2]|0){b=0;i=d;return b|0}b=Od[c[a+4>>2]&255](c[a+40>>2]|0,b,a+44|0)|0;i=d;return b|0}function RA(a,b){a=a|0;b=b|0;var d=0;d=i;if(!((a|0)!=0&(b|0)!=0)){b=0;i=d;return b|0}if(c[a+68>>2]|0){b=0;i=d;return b|0}b=Od[c[a+12>>2]&255](c[a+40>>2]|0,b,a+44|0)|0;i=d;return b|0}function SA(a,b){a=a|0;b=b|0;var d=0;d=i;if(!((a|0)!=0&(b|0)!=0)){b=0;i=d;return b|0}if(!(c[a+68>>2]|0)){b=0;i=d;return b|0}b=Od[c[a+16>>2]&255](c[a+40>>2]|0,b,a+44|0)|0;i=d;return b|0}function TA(a){a=a|0;var b=0;b=i;if(!a){i=b;return}if(!(c[a+68>>2]|0))Id[c[a+16>>2]&511](c[a+40>>2]|0);else Id[c[a+20>>2]&511](c[a+40>>2]|0);Bfa(a);i=b;return}function UA(a){a=a|0;var b=0,d=0,e=0;e=i;if(!a){i=e;return}b=c[a>>2]|0;d=c[b+48>>2]|0;if(d){Bfa(d);b=c[a>>2]|0}Bfa(b);c[a>>2]=0;i=e;return}function VA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;j=c[d+68>>2]|0;if((b|0)>-1)k=b;else{g=0;i=l;return g|0}while(1){h=a[g+k>>0]|0;if((h|0)==76){h=8;break}else if((h|0)==80){h=10;break}else if((h|0)==67){h=6;break}else if((h|0)==82){h=4;break}k=k+-1|0}if((h|0)==4)if((c[j+(e*5632|0)+(f*148|0)+552>>2]|0)==(c[j+(e*5632|0)+(f*148|0)+512>>2]|0)){g=(VA(b+-1|0,d,e,f,g)|0)!=0&1;i=l;return g|0}else{g=1;i=l;return g|0}else if((h|0)==6)if((c[j+(e*5632|0)+(f*148|0)+556>>2]|0)==(c[j+(e*5632|0)+(f*148|0)+516>>2]|0)){g=(VA(b+-1|0,d,e,f,g)|0)!=0&1;i=l;return g|0}else{g=1;i=l;return g|0}else if((h|0)==8)if((c[j+(e*5632|0)+(f*148|0)+548>>2]|0)==(c[j+(e*5632|0)+(f*148|0)+508>>2]|0)){g=(VA(b+-1|0,d,e,f,g)|0)!=0&1;i=l;return g|0}else{g=1;i=l;return g|0}else if((h|0)==10){if((c[j+(e*5632|0)+(f*148|0)+460>>2]|0)==1)if((c[j+(e*5632|0)+(f*148|0)+560>>2]|0)==(c[j+(e*5632|0)+(f*148|0)+520>>2]|0)){g=(VA(k+-1|0,d,e,f,g)|0)!=0&1;i=l;return g|0}else{g=1;i=l;return g|0}if((c[j+(e*5632|0)+(f*148|0)+564>>2]|0)!=(c[j+(e*5632|0)+(f*148|0)+528>>2]|0)){g=1;i=l;return g|0}if((c[j+(e*5632|0)+(f*148|0)+568>>2]|0)==(c[j+(e*5632|0)+(f*148|0)+536>>2]|0)){g=(VA(k+-1|0,d,e,f,g)|0)!=0&1;i=l;return g|0}else{g=1;i=l;return g|0}}return 0}function WA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+32|0;C=G+28|0;x=G;y=G+4|0;z=G+8|0;A=G+12|0;B=G+16|0;h=G+20|0;k=G+24|0;if(!d)Sa(262536,262552,1176,262576);if(!b)Sa(262600,262552,1177,262576);if((ea(c[d+28>>2]|0,c[d+24>>2]|0)|0)>>>0<=e>>>0)Sa(262616,262552,1178,262576);F=c[d+68>>2]|0;D=F+(e*5632|0)|0;E=F+(e*5632|0)+420|0;v=(c[E>>2]|0)+1|0;l=b+16|0;f=c[l>>2]|0;w=Afa(f*528|0)|0;if(!w){e=0;i=G;return e|0}u=Afa(f<<2)|0;if(!u){Bfa(w);e=0;i=G;return e|0}f=GQ(b,d,e)|0;if(!f){Bfa(w);Bfa(u);e=0;i=G;return e|0}m=c[l>>2]|0;if(m){j=0;g=w;while(1){c[u+(j<<2)>>2]=g;j=j+1|0;if(j>>>0>=m>>>0)break;else g=g+528|0}}HQ(b,d,e,y,z,A,B,h,k,x,C,u);s=c[x>>2]|0;q=ea(c[l>>2]|0,s)|0;r=ea(c[C>>2]|0,q)|0;t=F+(e*5632|0)+8|0;m=Cfa(ea((c[t>>2]|0)+1|0,r)|0,2)|0;c[f+4>>2]=m;if(!m){Bfa(w);Bfa(u);XA(f,v);e=0;i=G;return e|0}Cga(m|0,0,ea(r<<1,(c[t>>2]|0)+1|0)|0)|0;m=c[f+196>>2]|0;p=c[b+24>>2]|0;c[f+200>>2]=c[y>>2];c[f+204>>2]=c[A>>2];c[f+208>>2]=c[z>>2];c[f+212>>2]=c[B>>2];c[f+20>>2]=1;c[f+16>>2]=s;c[f+12>>2]=q;c[f+8>>2]=r;b=c[f+192>>2]|0;if(b){l=0;d=p;while(1){g=c[m+12>>2]|0;j=c[u+(l<<2)>>2]|0;c[m>>2]=c[d>>2];c[m+4>>2]=c[d+4>>2];k=c[m+8>>2]|0;if(k){h=0;while(1){c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];h=h+1|0;if(h>>>0>=k>>>0)break;else{j=j+16|0;g=g+16|0}}}l=l+1|0;if(l>>>0>=b>>>0)break;else{m=m+16|0;d=d+52|0}}}if(v>>>0>1){d=f;o=1;do{m=c[d+428>>2]|0;c[d+432>>2]=c[y>>2];c[d+436>>2]=c[A>>2];c[d+440>>2]=c[z>>2];c[d+444>>2]=c[B>>2];c[d+252>>2]=1;c[d+248>>2]=s;c[d+244>>2]=q;c[d+240>>2]=r;l=c[d+424>>2]|0;if(l){n=0;k=p;while(1){g=c[m+12>>2]|0;j=c[u+(n<<2)>>2]|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];b=c[m+8>>2]|0;if(b){h=0;while(1){c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];h=h+1|0;if(h>>>0>=b>>>0)break;else{j=j+16|0;g=g+16|0}}}n=n+1|0;if(n>>>0>=l>>>0)break;else{m=m+16|0;k=k+52|0}}}c[d+236>>2]=c[d+4>>2];d=d+232|0;o=o+1|0}while((o|0)!=(v|0))}Bfa(w);Bfa(u);m=c[x>>2]|0;if(!(a[F+(e*5632|0)+5628>>0]&2)){l=c[C>>2]|0;if(!D)Sa(262888,262552,1033,262904);k=(c[E>>2]|0)+1|0;if(!k){e=f;i=G;return e|0}d=c[F+(e*5632|0)+4>>2]|0;j=c[t>>2]|0;g=f;h=0;while(1){c[g+80>>2]=d;c[g+40>>2]=1;c[g+44>>2]=0;c[g+48>>2]=0;c[g+64>>2]=0;c[g+68>>2]=0;c[g+56>>2]=l;c[g+60>>2]=c[g+192>>2];c[g+52>>2]=j;c[g+72>>2]=m;h=h+1|0;if((h|0)==(k|0))break;else g=g+232|0}i=G;return f|0}else{if(!D)Sa(262888,262552,996,262936);j=(c[E>>2]|0)+1|0;if(!j){e=f;i=G;return e|0}d=f;g=F+(e*5632|0)+424|0;h=0;while(1){c[d+80>>2]=c[g+36>>2];c[d+40>>2]=1;c[d+44>>2]=c[g>>2];c[d+48>>2]=c[g+4>>2];c[d+64>>2]=0;c[d+68>>2]=0;c[d+56>>2]=c[g+12>>2];c[d+60>>2]=c[g+16>>2];c[d+52>>2]=c[g+8>>2];c[d+72>>2]=m;h=h+1|0;if((h|0)==(j|0))break;else{d=d+232|0;g=g+148|0}}i=G;return f|0}return 0}function XA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;if(!a){i=n;return}d=a+4|0;e=c[d>>2]|0;if(e){Bfa(e);c[d>>2]=0}if(b){l=a;m=0;while(1){k=l+196|0;d=c[k>>2]|0;if(d){j=l+192|0;e=c[j>>2]|0;if(e){h=0;while(1){f=d+12|0;g=c[f>>2]|0;if(g){Bfa(g);c[f>>2]=0;e=c[j>>2]|0}h=h+1|0;if(h>>>0>=e>>>0)break;else d=d+16|0}d=c[k>>2]|0}Bfa(d);c[k>>2]=0}m=m+1|0;if((m|0)==(b|0))break;else l=l+232|0}}Bfa(a);i=n;return}function YA(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=i;i=i+32|0;G=M+28|0;F=M;B=M+4|0;C=M+8|0;D=M+12|0;E=M+16|0;H=M+20|0;I=M+24|0;if(!e)Sa(262536,262552,1378,262648);if(!b)Sa(262600,262552,1379,262648);J=e+24|0;K=e+28|0;if((ea(c[K>>2]|0,c[J>>2]|0)|0)>>>0<=f>>>0)Sa(262616,262552,1380,262648);L=e+68|0;A=c[L>>2]|0;x=(c[A+(f*5632|0)+420>>2]|0)+1|0;y=b+16|0;h=c[y>>2]|0;z=Afa(h*528|0)|0;if(!z){L=0;i=M;return L|0}w=Afa(h<<2)|0;if(!w){Bfa(z);L=0;i=M;return L|0}h=GQ(b,e,f)|0;if(!h){Bfa(z);Bfa(w);L=0;i=M;return L|0}o=c[y>>2]|0;if(o){k=0;j=z;while(1){c[w+(k<<2)>>2]=j;k=k+1|0;if(k>>>0>=o>>>0)break;else j=j+528|0}}HQ(b,e,f,B,C,D,E,H,I,F,G,w);t=c[F>>2]|0;u=ea(c[y>>2]|0,t)|0;v=ea(c[G>>2]|0,u)|0;a[h>>0]=(d[e+89>>0]|0)>>>3&1;o=A+(f*5632|0)+8|0;k=Cfa(ea(c[o>>2]|0,v)|0,2)|0;c[h+4>>2]=k;if(!k){Bfa(z);Bfa(w);XA(h,x);L=0;i=M;return L|0}Cga(k|0,0,ea(v<<1,c[o>>2]|0)|0)|0;o=c[h+196>>2]|0;s=c[b+24>>2]|0;c[h+200>>2]=c[B>>2];c[h+204>>2]=c[D>>2];c[h+208>>2]=c[C>>2];c[h+212>>2]=c[E>>2];c[h+224>>2]=c[H>>2];c[h+228>>2]=c[I>>2];c[h+20>>2]=1;c[h+16>>2]=t;c[h+12>>2]=u;c[h+8>>2]=v;l=c[h+192>>2]|0;if(l){n=0;m=s;while(1){j=c[o+12>>2]|0;k=c[w+(n<<2)>>2]|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];p=c[o+8>>2]|0;if(p){b=0;while(1){c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];b=b+1|0;if(b>>>0>=p>>>0)break;else{k=k+16|0;j=j+16|0}}}n=n+1|0;if(n>>>0>=l>>>0)break;else{o=o+16|0;m=m+52|0}}}if(x>>>0>1){l=h;r=1;do{o=c[l+428>>2]|0;c[l+432>>2]=c[B>>2];c[l+436>>2]=c[D>>2];c[l+440>>2]=c[C>>2];c[l+444>>2]=c[E>>2];c[l+456>>2]=c[H>>2];c[l+460>>2]=c[I>>2];c[l+252>>2]=1;c[l+248>>2]=t;c[l+244>>2]=u;c[l+240>>2]=v;n=c[l+424>>2]|0;if(n){q=0;m=s;while(1){j=c[o+12>>2]|0;k=c[w+(q<<2)>>2]|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];p=c[o+8>>2]|0;if(p){b=0;while(1){c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];b=b+1|0;if(b>>>0>=p>>>0)break;else{k=k+16|0;j=j+16|0}}}q=q+1|0;if(q>>>0>=n>>>0)break;else{o=o+16|0;m=m+52|0}}}c[l+236>>2]=c[l+4>>2];l=l+232|0;r=r+1|0}while((r|0)!=(x|0))}Bfa(z);Bfa(w);if((a[A+(f*5632|0)+5628>>0]&2)!=0?(c[e+72>>2]|0)!=0|(g|0)==1:0){IQ(e,f,c[B>>2]|0,c[C>>2]|0,c[D>>2]|0,c[E>>2]|0,c[F>>2]|0,c[H>>2]|0,c[I>>2]|0);L=h;i=M;return L|0}v=c[y>>2]|0;u=c[B>>2]|0;t=c[C>>2]|0;s=c[D>>2]|0;r=c[E>>2]|0;q=c[F>>2]|0;p=c[G>>2]|0;o=c[H>>2]|0;n=c[I>>2]|0;if((ea(c[K>>2]|0,c[J>>2]|0)|0)>>>0<=f>>>0)Sa(262784,262552,946,262816);j=c[L>>2]|0;k=(c[j+(f*5632|0)+420>>2]|0)+1|0;if(!k){L=h;i=M;return L|0}l=c[j+(f*5632|0)+8>>2]|0;m=c[j+(f*5632|0)+4>>2]|0;j=j+(f*5632|0)+424|0;b=0;while(1){c[j+76>>2]=0;c[j+92>>2]=v;c[j+72>>2]=0;c[j+88>>2]=p;c[j+68>>2]=0;c[j+84>>2]=l;c[j+36>>2]=m;c[j+80>>2]=0;c[j+96>>2]=q;c[j+100>>2]=u;c[j+104>>2]=t;c[j+108>>2]=s;c[j+112>>2]=r;c[j+116>>2]=o;c[j+120>>2]=n;b=b+1|0;if((b|0)==(k|0))break;else j=j+148|0}i=M;return h|0} +function z4(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;if((d|0)<=0){a=0;i=j;return a|0}g=a+12|0;h=a+16|0;f=b;b=0;while(1){e=c[g>>2]|0;if(e>>>0>=(c[h>>2]|0)>>>0){e=Ld[c[(c[a>>2]|0)+40>>2]&511](a)|0;if((e|0)==-1){e=7;break}}else{c[g>>2]=e+4;e=c[e>>2]|0}c[f>>2]=e;b=b+1|0;if((b|0)<(d|0))f=f+4|0;else{e=7;break}}if((e|0)==7){i=j;return b|0}return 0}function A4(a){a=a|0;return -1}function B4(a){a=a|0;var b=0,d=0;b=i;if((Ld[c[(c[a>>2]|0)+36>>2]&511](a)|0)==-1){a=-1;i=b;return a|0}d=a+12|0;a=c[d>>2]|0;c[d>>2]=a+4;a=c[a>>2]|0;i=b;return a|0}function C4(a,b){a=a|0;b=b|0;return -1}function D4(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;if((d|0)<=0){a=0;i=j;return a|0}g=a+24|0;h=a+28|0;f=b;b=0;while(1){e=c[g>>2]|0;if(e>>>0>=(c[h>>2]|0)>>>0){if((Wd[c[(c[a>>2]|0)+52>>2]&511](a,c[f>>2]|0)|0)==-1){e=7;break}}else{k=c[f>>2]|0;c[g>>2]=e+4;c[e>>2]=k}b=b+1|0;if((b|0)<(d|0))f=f+4|0;else{e=7;break}}if((e|0)==7){i=j;return b|0}return 0}function E4(a,b){a=a|0;b=b|0;return -1}function F4(a){a=a|0;var b=0;b=i;V3(a+8|0);xea(a);i=b;return}function G4(a){a=a|0;var b=0;b=i;V3(a+8|0);i=b;return}function H4(a){a=a|0;var b=0;b=i;F4(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);i=b;return}function I4(a){a=a|0;var b=0;b=i;V3(a+((c[(c[a>>2]|0)+-12>>2]|0)+8)|0);i=b;return}function J4(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;k=o;a[e>>0]=0;h=c[(c[f>>2]|0)+-12>>2]|0;j=c[f+(h+16)>>2]|0;if(j){U3(f+h|0,j|4);i=o;return}h=c[f+(h+72)>>2]|0;if(h)L4(h)|0;do if(!g?(l=c[(c[f>>2]|0)+-12>>2]|0,(c[f+(l+4)>>2]&4096|0)!=0):0){C9(k,f+(l+28)|0);h=F9(k,369400)|0;D9(k);k=h+8|0;h=c[f+((c[(c[f>>2]|0)+-12>>2]|0)+24)>>2]|0;while(1){if(!h)break;if((c[h+12>>2]|0)==(c[h+16>>2]|0)){g=(Ld[c[(c[h>>2]|0)+36>>2]&511](h)|0)==-1;h=g?0:h;if(!h)break;else m=h}else m=h;l=m+12|0;h=c[l>>2]|0;j=m+16|0;if((h|0)==(c[j>>2]|0))h=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else h=d[h>>0]|0;if((h&255)<<24>>24<=-1){n=18;break}if(!(b[(c[k>>2]|0)+(h<<24>>24<<1)>>1]&8192)){n=18;break}h=c[l>>2]|0;if((h|0)==(c[j>>2]|0)){Ld[c[(c[m>>2]|0)+40>>2]&511](m)|0;h=m;continue}else{c[l>>2]=h+1;h=m;continue}}if((n|0)==18?(m|0)!=0:0){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))break;if(!((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1|(m|0)==0))break}g=c[(c[f>>2]|0)+-12>>2]|0;U3(f+g|0,c[f+(g+16)>>2]|6)}while(0);a[e>>0]=(c[f+((c[(c[f>>2]|0)+-12>>2]|0)+16)>>2]|0)==0&1;i=o;return}function K4(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;J4(a,b,c);i=d;return}function L4(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e;if(!(c[b+((c[(c[b>>2]|0)+-12>>2]|0)+24)>>2]|0)){i=e;return b|0}W4(d,b);if((a[d>>0]|0)!=0?(f=c[b+((c[(c[b>>2]|0)+-12>>2]|0)+24)>>2]|0,(Ld[c[(c[f>>2]|0)+24>>2]&511](f)|0)==-1):0){f=c[(c[b>>2]|0)+-12>>2]|0;U3(b+f|0,c[b+(f+16)>>2]|1)}Y4(d);i=e;return b|0}function M4(a){a=a|0;var b=0;b=a+16|0;c[b>>2]=c[b>>2]|1;if(!(c[a+20>>2]&1))return;else sb()}function N4(a){a=a|0;var b=0;b=i;V3(a+8|0);xea(a);i=b;return}function O4(a){a=a|0;var b=0;b=i;V3(a+8|0);i=b;return}function P4(a){a=a|0;var b=0;b=i;N4(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);i=b;return}function Q4(a){a=a|0;var b=0;b=i;V3(a+((c[(c[a>>2]|0)+-12>>2]|0)+8)|0);i=b;return}function R4(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e;if(!(c[b+((c[(c[b>>2]|0)+-12>>2]|0)+24)>>2]|0)){i=e;return b|0}e5(d,b);if((a[d>>0]|0)!=0?(f=c[b+((c[(c[b>>2]|0)+-12>>2]|0)+24)>>2]|0,(Ld[c[(c[f>>2]|0)+24>>2]&511](f)|0)==-1):0){f=c[(c[b>>2]|0)+-12>>2]|0;U3(b+f|0,c[b+(f+16)>>2]|1)}f5(d);i=e;return b|0}function S4(a){a=a|0;var b=0;b=i;V3(a+4|0);xea(a);i=b;return}function T4(a){a=a|0;var b=0;b=i;V3(a+4|0);i=b;return}function U4(a){a=a|0;var b=0;b=i;S4(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);i=b;return}function V4(a){a=a|0;var b=0;b=i;V3(a+((c[(c[a>>2]|0)+-12>>2]|0)+4)|0);i=b;return}function W4(b,d){b=b|0;d=d|0;var e=0,f=0;f=i;a[b>>0]=0;c[b+4>>2]=d;e=c[(c[d>>2]|0)+-12>>2]|0;if(c[d+(e+16)>>2]|0){i=f;return}e=c[d+(e+72)>>2]|0;if(e)L4(e)|0;a[b>>0]=1;i=f;return}function X4(a,b){a=a|0;b=b|0;var c=0;c=i;W4(a,b);i=c;return}function Y4(a){a=a|0;var b=0,d=0,e=0;e=i;a=a+4|0;b=c[a>>2]|0;d=c[(c[b>>2]|0)+-12>>2]|0;if(!(c[b+(d+24)>>2]|0)){i=e;return}if(c[b+(d+16)>>2]|0){i=e;return}if(!(c[b+(d+4)>>2]&8192)){i=e;return}if(Ua()|0){i=e;return}d=c[a>>2]|0;d=c[d+((c[(c[d>>2]|0)+-12>>2]|0)+24)>>2]|0;if((Ld[c[(c[d>>2]|0)+24>>2]&511](d)|0)!=-1){i=e;return}b=c[a>>2]|0;d=c[(c[b>>2]|0)+-12>>2]|0;U3(b+d|0,c[b+(d+16)>>2]|1);i=e;return}function Z4(a){a=a|0;var b=0;b=i;Y4(a);i=b;return}function _4(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;j=o+24|0;k=o;n=o+8|0;e=o+16|0;l=o+20|0;W4(n,b);if(!(a[n>>0]|0)){Y4(n);i=o;return b|0}C9(e,b+((c[(c[b>>2]|0)+-12>>2]|0)+28)|0);m=F9(e,368088)|0;D9(e);g=c[(c[b>>2]|0)+-12>>2]|0;h=c[b+(g+24)>>2]|0;f=b+(g+76)|0;e=c[f>>2]|0;if((e|0)==-1){C9(j,b+(g+28)|0);e=F9(j,369400)|0;e=Wd[c[(c[e>>2]|0)+28>>2]&511](e,32)|0;D9(j);e=e<<24>>24;c[f>>2]=e}f=c[(c[m>>2]|0)+24>>2]|0;c[k>>2]=h;c[j+0>>2]=c[k+0>>2];Rd[f&31](l,m,j,b+g|0,e&255,d);if(c[l>>2]|0){Y4(n);i=o;return b|0}l=c[(c[b>>2]|0)+-12>>2]|0;U3(b+l|0,c[b+(l+16)>>2]|5);Y4(n);i=o;return b|0}function $4(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;W4(h,b);do if(a[h>>0]|0){e=c[b>>2]|0;g=c[b+((c[e+-12>>2]|0)+24)>>2]|0;if(g){e=g+24|0;f=c[e>>2]|0;if((f|0)!=(c[g+28>>2]|0)){c[e>>2]=f+1;a[f>>0]=d;break}if((Wd[c[(c[g>>2]|0)+52>>2]&511](g,d&255)|0)!=-1)break;e=c[b>>2]|0}g=c[e+-12>>2]|0;U3(b+g|0,c[b+(g+16)>>2]|1)}while(0);Y4(h);i=j;return b|0}function a5(a){a=a|0;var b=0;b=i;V3(a+4|0);xea(a);i=b;return}function b5(a){a=a|0;var b=0;b=i;V3(a+4|0);i=b;return}function c5(a){a=a|0;var b=0;b=i;a5(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);i=b;return}function d5(a){a=a|0;var b=0;b=i;V3(a+((c[(c[a>>2]|0)+-12>>2]|0)+4)|0);i=b;return}function e5(b,d){b=b|0;d=d|0;var e=0,f=0;f=i;a[b>>0]=0;c[b+4>>2]=d;e=c[(c[d>>2]|0)+-12>>2]|0;if(c[d+(e+16)>>2]|0){i=f;return}e=c[d+(e+72)>>2]|0;if(e)R4(e)|0;a[b>>0]=1;i=f;return}function f5(a){a=a|0;var b=0,d=0,e=0;e=i;a=a+4|0;b=c[a>>2]|0;d=c[(c[b>>2]|0)+-12>>2]|0;if(!(c[b+(d+24)>>2]|0)){i=e;return}if(c[b+(d+16)>>2]|0){i=e;return}if(!(c[b+(d+4)>>2]&8192)){i=e;return}if(Ua()|0){i=e;return}d=c[a>>2]|0;d=c[d+((c[(c[d>>2]|0)+-12>>2]|0)+24)>>2]|0;if((Ld[c[(c[d>>2]|0)+24>>2]&511](d)|0)!=-1){i=e;return}b=c[a>>2]|0;d=c[(c[b>>2]|0)+-12>>2]|0;U3(b+d|0,c[b+(d+16)>>2]|1);i=e;return}function g5(a){a=a|0;var b=0;b=i;V3(a+12|0);xea(a);i=b;return}function h5(a){a=a|0;var b=0;b=i;V3(a+12|0);i=b;return}function i5(a){a=a|0;var b=0;b=i;g5(a+-8|0);i=b;return}function j5(a){a=a|0;var b=0;b=i;g5(a+(c[(c[a>>2]|0)+-12>>2]|0)|0);i=b;return}function k5(a,b){a=a|0;b=b|0;return}function l5(a){a=a|0;var b=0;b=i;V3(a+-8+12|0);i=b;return}function m5(a){a=a|0;var b=0;b=i;V3(a+((c[(c[a>>2]|0)+-12>>2]|0)+12)|0);i=b;return}function n5(a){a=a|0;return 366840}function o5(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;if((c|0)!=1&(c|0)<257){Z2(a,b,c);i=d;return}else{q3(a,366856,35);i=d;return}}function p5(){var b=0;b=i;if((a[366904]|0)==0?(Qa(366904)|0)!=0:0){c[91724]=367680;rb(117,366896,p|0)|0;Eb(366904)}i=b;return 366896}function q5(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e+8|0;g=e;j=d;h=c[j+4>>2]|0;d=g;c[d>>2]=c[j>>2];c[d+4>>2]=h;c[f+0>>2]=c[g+0>>2];c[f+4>>2]=c[g+4>>2];g3(a,f,b);c[a>>2]=366920;i=e;return}function r5(a){a=a|0;var b=0;b=i;i3(a);xea(a);i=b;return}function s5(a){a=a|0;var b=0;b=i;i3(a);i=b;return}function t5(a){a=a|0;var b=0;b=i;V3(a);xea(a);i=b;return}function u5(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function v5(a){a=a|0;return}function w5(a){a=a|0;return}function x5(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;h=i;a:do if((e|0)==(f|0))j=6;else while(1){if((c|0)==(d|0)){c=-1;break a}b=a[c>>0]|0;g=a[e>>0]|0;if(b<<24>>24>24){c=-1;break a}if(g<<24>>24>24){c=1;break a}c=c+1|0;e=e+1|0;if((e|0)==(f|0)){j=6;break}}while(0);if((j|0)==6)c=(c|0)!=(d|0)&1;i=h;return c|0}function y5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=i;Wba(a,c,d);i=b;return}function z5(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;e=i;if((c|0)==(d|0)){d=0;i=e;return d|0}else b=0;do{b=(a[c>>0]|0)+(b<<4)|0;f=b&-268435456;b=(f>>>24|f)^b;c=c+1|0}while((c|0)!=(d|0));i=e;return b|0}function A5(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function B5(a){a=a|0;return}function C5(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;h=i;a:do if((e|0)==(f|0))j=6;else while(1){if((b|0)==(d|0)){b=-1;break a}a=c[b>>2]|0;g=c[e>>2]|0;if((a|0)<(g|0)){b=-1;break a}if((g|0)<(a|0)){b=1;break a}b=b+4|0;e=e+4|0;if((e|0)==(f|0)){j=6;break}}while(0);if((j|0)==6)b=(b|0)!=(d|0)&1;i=h;return b|0}function D5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=i;Xba(a,c,d);i=b;return}function E5(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;if((b|0)==(d|0)){d=0;i=e;return d|0}else a=0;do{a=(c[b>>2]|0)+(a<<4)|0;f=a&-268435456;a=(f>>>24|f)^a;b=b+4|0}while((b|0)!=(d|0));i=e;return a|0}function F5(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function G5(a){a=a|0;return}function H5(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+64|0;l=u+56|0;k=u+52|0;t=u+48|0;m=u+44|0;n=u+40|0;o=u+36|0;p=u+28|0;q=u+24|0;s=u;r=u+32|0;if(c[g+4>>2]&1){Y3(p,g);t=F9(p,369400)|0;S2(c[p>>2]|0)|0;Y3(q,g);d=F9(q,369544)|0;S2(c[q>>2]|0)|0;Jd[c[(c[d>>2]|0)+24>>2]&255](s,d);Jd[c[(c[d>>2]|0)+28>>2]&255](s+12|0,d);c[r>>2]=c[f>>2];c[l+0>>2]=c[r+0>>2];a[j>>0]=(Yba(e,l,s,s+24|0,t,h,1)|0)==(s|0)&1;c[b>>2]=c[e>>2];v3(s+12|0);v3(s);i=u;return}c[t>>2]=-1;s=c[(c[d>>2]|0)+16>>2]|0;c[n>>2]=c[e>>2];c[o>>2]=c[f>>2];c[k+0>>2]=c[n+0>>2];c[l+0>>2]=c[o+0>>2];Td[s&63](m,d,k,l,g,h,t);l=c[m>>2]|0;c[e>>2]=l;k=c[t>>2]|0;if((k|0)==1)a[j>>0]=1;else if(!k)a[j>>0]=0;else{a[j>>0]=1;c[h>>2]=4}c[b>>2]=l;i=u;return}function I5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];Zba(a,b,l,k,f,g,h);i=j;return}function J5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];_ba(a,b,l,k,f,g,h);i=j;return}function K5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];$ba(a,b,l,k,f,g,h);i=j;return}function L5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];aca(a,b,l,k,f,g,h);i=j;return}function M5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];bca(a,b,l,k,f,g,h);i=j;return}function N5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];cca(a,b,l,k,f,g,h);i=j;return}function O5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];dca(a,b,l,k,f,g,h);i=j;return}function P5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];eca(a,b,l,k,f,g,h);i=j;return}function Q5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];fca(a,b,l,k,f,g,h);i=j;return}function R5(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=i;i=i+240|0;y=B;s=B+208|0;A=B+184|0;w=B+180|0;z=B+196|0;x=B+168|0;u=B+8|0;v=B+172|0;t=B+176|0;c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;Y3(w,h);p=F9(w,369400)|0;ce[c[(c[p>>2]|0)+32>>2]&255](p,367912,367938|0,s)|0;S2(c[w>>2]|0)|0;c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;z3(z,10,0);if(!(a[z>>0]&1)){l=z+1|0;h=l;w=z+8|0}else{l=z+8|0;h=z+1|0;w=l;l=c[l>>2]|0}c[x>>2]=l;c[v>>2]=u;c[t>>2]=0;r=z+4|0;e=c[f>>2]|0;a:while(1){if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;n=(e|0)==0;m=c[g>>2]|0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(n)break;else break a;if((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(n)break;else break a;else{c[g>>2]=0;C=14;break}}else C=14;while(0);if((C|0)==14){C=0;if(n){m=0;break}else m=0}p=a[z>>0]|0;n=(p&1)==0;if(n)o=(p&255)>>>1;else o=c[r>>2]|0;if((c[x>>2]|0)==(l+o|0)){if(n){l=(p&255)>>>1;o=(p&255)>>>1}else{o=c[r>>2]|0;l=o}z3(z,l<<1,0);if(!(a[z>>0]&1))l=10;else l=(c[z>>2]&-2)+-1|0;z3(z,l,0);if(!(a[z>>0]&1))l=h;else l=c[w>>2]|0;c[x>>2]=l+o}p=e+12|0;o=c[p>>2]|0;q=e+16|0;if((o|0)==(c[q>>2]|0))n=Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0;else n=d[o>>0]|0;if(S5(n&255,16,l,x,t,0,A,u,v,s)|0)break;m=c[p>>2]|0;if((m|0)==(c[q>>2]|0)){Ld[c[(c[e>>2]|0)+40>>2]&511](e)|0;continue}else{c[p>>2]=m+1;continue}}z3(z,(c[x>>2]|0)-l|0,0);if(a[z>>0]&1)h=c[w>>2]|0;x=T5()|0;c[y>>2]=k;if((gca(h,x,367952,y)|0)!=1)c[j>>2]=4;if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0)){if(!h)break;c[b>>2]=e;v3(z);v3(A);i=B;return}if((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1){c[g>>2]=0;C=48;break}if(h^(m|0)==0){c[b>>2]=e;v3(z);v3(A);i=B;return}}else C=48;while(0);if((C|0)==48?!h:0){c[b>>2]=e;v3(z);v3(A);i=B;return}c[j>>2]=c[j>>2]|2;c[b>>2]=e;v3(z);v3(A);i=B;return}function S5(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0;q=i;o=c[f>>2]|0;p=(o|0)==(e|0);do if(p){n=(a[m+24>>0]|0)==b<<24>>24;if(!n?(a[m+25>>0]|0)!=b<<24>>24:0)break;c[f>>2]=e+1;a[e>>0]=n?43:45;c[g>>2]=0;g=0;i=q;return g|0}while(0);n=a[j>>0]|0;if(!(n&1))n=(n&255)>>>1;else n=c[j+4>>2]|0;if((n|0)!=0?b<<24>>24==h<<24>>24:0){n=c[l>>2]|0;if((n-k|0)>=160){g=0;i=q;return g|0}d=c[g>>2]|0;c[l>>2]=n+4;c[n>>2]=d;c[g>>2]=0;g=0;i=q;return g|0}n=m+26|0;j=m;do{if((a[j>>0]|0)==b<<24>>24){n=j;break}j=j+1|0}while((j|0)!=(n|0));n=n-m|0;if((n|0)>23){g=-1;i=q;return g|0}if((d|0)==16){if((n|0)>=22){if(p){g=-1;i=q;return g|0}if((o-e|0)>=3){g=-1;i=q;return g|0}if((a[o+-1>>0]|0)!=48){g=-1;i=q;return g|0}c[g>>2]=0;g=a[367912+n>>0]|0;c[f>>2]=o+1;a[o>>0]=g;g=0;i=q;return g|0}}else if((d|0)==10|(d|0)==8?(n|0)>=(d|0):0){g=-1;i=q;return g|0}d=a[367912+n>>0]|0;c[f>>2]=o+1;a[o>>0]=d;c[g>>2]=(c[g>>2]|0)+1;g=0;i=q;return g|0}function T5(){var b=0;b=i;if((a[369296]|0)==0?(Qa(369296)|0)!=0:0){c[92322]=Kb(2147483647,369304,0)|0;Eb(369296)}i=b;return c[92322]|0}function U5(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function V5(a){a=a|0;return}function W5(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+64|0;l=u+56|0;k=u+52|0;t=u+48|0;m=u+44|0;n=u+40|0;o=u+36|0;p=u+28|0;q=u+24|0;s=u;r=u+32|0;if(c[g+4>>2]&1){Y3(p,g);t=F9(p,369392)|0;S2(c[p>>2]|0)|0;Y3(q,g);d=F9(q,369552)|0;S2(c[q>>2]|0)|0;Jd[c[(c[d>>2]|0)+24>>2]&255](s,d);Jd[c[(c[d>>2]|0)+28>>2]&255](s+12|0,d);c[r>>2]=c[f>>2];c[l+0>>2]=c[r+0>>2];a[j>>0]=(hca(e,l,s,s+24|0,t,h,1)|0)==(s|0)&1;c[b>>2]=c[e>>2];L3(s+12|0);L3(s);i=u;return}c[t>>2]=-1;s=c[(c[d>>2]|0)+16>>2]|0;c[n>>2]=c[e>>2];c[o>>2]=c[f>>2];c[k+0>>2]=c[n+0>>2];c[l+0>>2]=c[o+0>>2];Td[s&63](m,d,k,l,g,h,t);l=c[m>>2]|0;c[e>>2]=l;k=c[t>>2]|0;if(!k)a[j>>0]=0;else if((k|0)==1)a[j>>0]=1;else{a[j>>0]=1;c[h>>2]=4}c[b>>2]=l;i=u;return}function X5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];ica(a,b,l,k,f,g,h);i=j;return}function Y5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];jca(a,b,l,k,f,g,h);i=j;return}function Z5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];kca(a,b,l,k,f,g,h);i=j;return}function _5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];lca(a,b,l,k,f,g,h);i=j;return}function $5(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];mca(a,b,l,k,f,g,h);i=j;return}function a6(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];nca(a,b,l,k,f,g,h);i=j;return}function b6(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];oca(a,b,l,k,f,g,h);i=j;return}function c6(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];pca(a,b,l,k,f,g,h);i=j;return}function d6(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];qca(a,b,l,k,f,g,h);i=j;return}function e6(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=i;i=i+320|0;w=z;q=z+200|0;y=z+184|0;u=z+180|0;x=z+304|0;v=z+168|0;s=z+8|0;t=z+172|0;r=z+176|0;c[y+0>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;Y3(u,g);o=F9(u,369392)|0;ce[c[(c[o>>2]|0)+48>>2]&255](o,367912,367938|0,q)|0;S2(c[u>>2]|0)|0;c[x+0>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;z3(x,10,0);if(!(a[x>>0]&1)){k=x+1|0;d=k;u=x+8|0}else{k=x+8|0;d=x+1|0;u=k;k=c[k>>2]|0}c[v>>2]=k;c[t>>2]=s;c[r>>2]=0;p=x+4|0;g=c[e>>2]|0;a:while(1){if(g){l=c[g+12>>2]|0;if((l|0)==(c[g+16>>2]|0))l=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else l=c[l>>2]|0;if((l|0)==-1){c[e>>2]=0;n=1;g=0}else n=0}else{n=1;g=0}m=c[f>>2]|0;do if(m){l=c[m+12>>2]|0;if((l|0)==(c[m+16>>2]|0))l=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else l=c[l>>2]|0;if((l|0)!=-1)if(n)break;else{l=m;break a}else{c[f>>2]=0;A=17;break}}else A=17;while(0);if((A|0)==17){A=0;if(n){l=0;break}else m=0}o=a[x>>0]|0;l=(o&1)==0;if(l)n=(o&255)>>>1;else n=c[p>>2]|0;if((c[v>>2]|0)==(k+n|0)){if(l){l=(o&255)>>>1;n=(o&255)>>>1}else{n=c[p>>2]|0;l=n}z3(x,l<<1,0);if(!(a[x>>0]&1))l=10;else l=(c[x>>2]&-2)+-1|0;z3(x,l,0);if(!(a[x>>0]&1))k=d;else k=c[u>>2]|0;c[v>>2]=k+n}n=g+12|0;l=c[n>>2]|0;o=g+16|0;if((l|0)==(c[o>>2]|0))l=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else l=c[l>>2]|0;if(f6(l,16,k,v,r,0,y,s,t,q)|0){l=m;break}l=c[n>>2]|0;if((l|0)==(c[o>>2]|0)){Ld[c[(c[g>>2]|0)+40>>2]&511](g)|0;continue}else{c[n>>2]=l+4;continue}}z3(x,(c[v>>2]|0)-k|0,0);if(a[x>>0]&1)d=c[u>>2]|0;v=T5()|0;c[w>>2]=j;if((gca(d,v,367952,w)|0)!=1)c[h>>2]=4;if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;g=0;k=1}else k=0}else{g=0;k=1}do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ld[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)==-1){c[f>>2]=0;A=54;break}if(k){c[b>>2]=g;v3(x);v3(y);i=z;return}}else A=54;while(0);if((A|0)==54?!k:0){c[b>>2]=g;v3(x);v3(y);i=z;return}c[h>>2]=c[h>>2]|2;c[b>>2]=g;v3(x);v3(y);i=z;return}function f6(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0;q=i;o=c[f>>2]|0;p=(o|0)==(e|0);do if(p){n=(c[m+96>>2]|0)==(b|0);if(!n?(c[m+100>>2]|0)!=(b|0):0)break;c[f>>2]=e+1;a[e>>0]=n?43:45;c[g>>2]=0;g=0;i=q;return g|0}while(0);n=a[j>>0]|0;if(!(n&1))n=(n&255)>>>1;else n=c[j+4>>2]|0;if((n|0)!=0&(b|0)==(h|0)){n=c[l>>2]|0;if((n-k|0)>=160){g=0;i=q;return g|0}d=c[g>>2]|0;c[l>>2]=n+4;c[n>>2]=d;c[g>>2]=0;g=0;i=q;return g|0}n=m+104|0;j=m;do{if((c[j>>2]|0)==(b|0)){n=j;break}j=j+4|0}while((j|0)!=(n|0));n=n-m|0;j=n>>2;if((n|0)>92){g=-1;i=q;return g|0}if((d|0)==16){if((n|0)>=88){if(p){g=-1;i=q;return g|0}if((o-e|0)>=3){g=-1;i=q;return g|0}if((a[o+-1>>0]|0)!=48){g=-1;i=q;return g|0}c[g>>2]=0;g=a[367912+j>>0]|0;c[f>>2]=o+1;a[o>>0]=g;g=0;i=q;return g|0}}else if((d|0)==10|(d|0)==8?(j|0)>=(d|0):0){g=-1;i=q;return g|0}d=a[367912+j>>0]|0;c[f>>2]=o+1;a[o>>0]=d;c[g>>2]=(c[g>>2]|0)+1;g=0;i=q;return g|0}function g6(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;i=i+16|0;h=g;Y3(h,d);d=F9(h,369400)|0;ce[c[(c[d>>2]|0)+32>>2]&255](d,367912,367938|0,e)|0;d=F9(h,369544)|0;a[f>>0]=Ld[c[(c[d>>2]|0)+16>>2]&511](d)|0;Jd[c[(c[d>>2]|0)+20>>2]&255](b,d);S2(c[h>>2]|0)|0;i=g;return}function h6(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;j=h;Y3(j,d);d=F9(j,369400)|0;ce[c[(c[d>>2]|0)+32>>2]&255](d,367912,367944|0,e)|0;d=F9(j,369544)|0;a[f>>0]=Ld[c[(c[d>>2]|0)+12>>2]&511](d)|0;a[g>>0]=Ld[c[(c[d>>2]|0)+16>>2]&511](d)|0;Jd[c[(c[d>>2]|0)+20>>2]&255](b,d);S2(c[j>>2]|0)|0;i=h;return}function i6(b,e,f,g,h,j,k,l,m,n,o,p){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0;r=i;if(b<<24>>24==j<<24>>24){if(!(a[e>>0]|0)){n=-1;i=r;return n|0}a[e>>0]=0;j=c[h>>2]|0;c[h>>2]=j+1;a[j>>0]=46;j=a[l>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[l+4>>2]|0;if(!j){n=0;i=r;return n|0}j=c[n>>2]|0;if((j-m|0)>=160){n=0;i=r;return n|0}m=c[o>>2]|0;c[n>>2]=j+4;c[j>>2]=m;n=0;i=r;return n|0}if(b<<24>>24==k<<24>>24){j=a[l>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[l+4>>2]|0;if(j){if(!(a[e>>0]|0)){n=-1;i=r;return n|0}j=c[n>>2]|0;if((j-m|0)>=160){n=0;i=r;return n|0}m=c[o>>2]|0;c[n>>2]=j+4;c[j>>2]=m;c[o>>2]=0;n=0;i=r;return n|0}}j=p+32|0;k=p;do{if((a[k>>0]|0)==b<<24>>24){j=k;break}k=k+1|0}while((k|0)!=(j|0));k=j-p|0;if((k|0)>31){n=-1;i=r;return n|0}b=a[367912+k>>0]|0;if((k|0)==24|(k|0)==25){j=c[h>>2]|0;if((j|0)!=(g|0)?(d[j+-1>>0]&95|0)!=(d[f>>0]&127|0):0){n=-1;i=r;return n|0}c[h>>2]=j+1;a[j>>0]=b;n=0;i=r;return n|0}else if((k|0)==23|(k|0)==22){a[f>>0]=80;n=c[h>>2]|0;c[h>>2]=n+1;a[n>>0]=b;n=0;i=r;return n|0}else{j=b&95;if((j|0)==(a[f>>0]|0)?(a[f>>0]=j|128,(a[e>>0]|0)!=0):0){a[e>>0]=0;j=a[l>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[l+4>>2]|0;if((j|0)!=0?(q=c[n>>2]|0,(q-m|0)<160):0){m=c[o>>2]|0;c[n>>2]=q+4;c[q>>2]=m}}n=c[h>>2]|0;c[h>>2]=n+1;a[n>>0]=b;if((k|0)>21){n=0;i=r;return n|0}c[o>>2]=(c[o>>2]|0)+1;n=0;i=r;return n|0}return 0}function j6(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;Y3(g,b);b=F9(g,369392)|0;ce[c[(c[b>>2]|0)+48>>2]&255](b,367912,367938|0,d)|0;b=F9(g,369552)|0;c[e>>2]=Ld[c[(c[b>>2]|0)+16>>2]&511](b)|0;Jd[c[(c[b>>2]|0)+20>>2]&255](a,b);S2(c[g>>2]|0)|0;i=f;return}function k6(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;i=i+16|0;h=g;Y3(h,b);b=F9(h,369392)|0;ce[c[(c[b>>2]|0)+48>>2]&255](b,367912,367944|0,d)|0;b=F9(h,369552)|0;c[e>>2]=Ld[c[(c[b>>2]|0)+12>>2]&511](b)|0;c[f>>2]=Ld[c[(c[b>>2]|0)+16>>2]&511](b)|0;Jd[c[(c[b>>2]|0)+20>>2]&255](a,b);S2(c[h>>2]|0)|0;i=g;return}function l6(b,e,f,g,h,j,k,l,m,n,o,p){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0;r=i;if((b|0)==(j|0)){if(!(a[e>>0]|0)){n=-1;i=r;return n|0}a[e>>0]=0;j=c[h>>2]|0;c[h>>2]=j+1;a[j>>0]=46;j=a[l>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[l+4>>2]|0;if(!j){n=0;i=r;return n|0}j=c[n>>2]|0;if((j-m|0)>=160){n=0;i=r;return n|0}m=c[o>>2]|0;c[n>>2]=j+4;c[j>>2]=m;n=0;i=r;return n|0}if((b|0)==(k|0)){j=a[l>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[l+4>>2]|0;if(j){if(!(a[e>>0]|0)){n=-1;i=r;return n|0}j=c[n>>2]|0;if((j-m|0)>=160){n=0;i=r;return n|0}m=c[o>>2]|0;c[n>>2]=j+4;c[j>>2]=m;c[o>>2]=0;n=0;i=r;return n|0}}j=p+128|0;k=p;do{if((c[k>>2]|0)==(b|0)){j=k;break}k=k+4|0}while((k|0)!=(j|0));k=j-p|0;j=k>>2;if((k|0)>124){n=-1;i=r;return n|0}b=a[367912+j>>0]|0;if((j|0)==23|(j|0)==22)a[f>>0]=80;else if(!((j|0)==24|(j|0)==25)){j=b&95;if((j|0)==(a[f>>0]|0)?(a[f>>0]=j|128,(a[e>>0]|0)!=0):0){a[e>>0]=0;j=a[l>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[l+4>>2]|0;if((j|0)!=0?(q=c[n>>2]|0,(q-m|0)<160):0){m=c[o>>2]|0;c[n>>2]=q+4;c[q>>2]=m}}}else{j=c[h>>2]|0;if((j|0)!=(g|0)?(d[j+-1>>0]&95|0)!=(d[f>>0]&127|0):0){n=-1;i=r;return n|0}c[h>>2]=j+1;a[j>>0]=b;n=0;i=r;return n|0}n=c[h>>2]|0;c[h>>2]=n+1;a[n>>0]=b;if((k|0)>84){n=0;i=r;return n|0}c[o>>2]=(c[o>>2]|0)+1;n=0;i=r;return n|0}function m6(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function n6(a){a=a|0;return}function o6(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;j=o+20|0;k=o;l=o+4|0;n=o+8|0;if(!(c[f+4>>2]&1)){l=c[(c[d>>2]|0)+24>>2]|0;c[k>>2]=c[e>>2];c[j+0>>2]=c[k+0>>2];Rd[l&31](b,d,j,f,g,h&1);i=o;return}Y3(l,f);k=F9(l,369544)|0;S2(c[l>>2]|0)|0;j=c[k>>2]|0;if(h)Jd[c[j+24>>2]&255](n,k);else Jd[c[j+28>>2]&255](n,k);j=a[n>>0]|0;if(!(j&1)){d=n+1|0;k=d;h=n+8|0}else{h=n+8|0;k=c[h>>2]|0;d=n+1|0}m=n+4|0;while(1){if(!(j&1)){g=d;j=(j&255)>>>1}else{g=c[h>>2]|0;j=c[m>>2]|0}if((k|0)==(g+j|0))break;j=a[k>>0]|0;f=c[e>>2]|0;do if(f){g=f+24|0;l=c[g>>2]|0;if((l|0)!=(c[f+28>>2]|0)){c[g>>2]=l+1;a[l>>0]=j;break}if((Wd[c[(c[f>>2]|0)+52>>2]&511](f,j&255)|0)==-1)c[e>>2]=0}while(0);j=a[n>>0]|0;k=k+1|0}c[b>>2]=c[e>>2];v3(n);i=o;return}function p6(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;i=i+64|0;k=d;p=d+56|0;q=d+44|0;j=d+20|0;n=d+12|0;m=d+8|0;o=d+4|0;l=d+16|0;a[p+0>>0]=a[368192]|0;a[p+1>>0]=a[368193]|0;a[p+2>>0]=a[368194]|0;a[p+3>>0]=a[368195]|0;a[p+4>>0]=a[368196]|0;a[p+5>>0]=a[368197]|0;q6(p+1|0,368096,1,c[f+4>>2]|0);r=T5()|0;c[k>>2]=h;h=q+(rca(q,12,r,p,k)|0)|0;p=r6(q,h,f)|0;Y3(o,f);s6(q,p,h,j,n,m,o);S2(c[o>>2]|0)|0;c[l>>2]=c[e>>2];h=c[n>>2]|0;e=c[m>>2]|0;c[k+0>>2]=c[l+0>>2];Ie(b,k,j,h,e,f,g);i=d;return}function q6(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;if(e&2048){a[b>>0]=43;b=b+1|0}if(e&512){a[b>>0]=35;b=b+1|0}f=a[c>>0]|0;if(f<<24>>24){g=c;while(1){g=g+1|0;c=b+1|0;a[b>>0]=f;f=a[g>>0]|0;if(!(f<<24>>24)){b=c;break}else b=c}}f=e&74;if((f|0)==8)if(!(e&16384)){a[b>>0]=120;i=h;return}else{a[b>>0]=88;i=h;return}else if((f|0)!=64)if(d){a[b>>0]=100;i=h;return}else{a[b>>0]=117;i=h;return}else{a[b>>0]=111;i=h;return}}function r6(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;e=c[e+4>>2]&176;do if((e|0)==32)b=d;else if((e|0)==16){e=a[b>>0]|0;if(e<<24>>24==43|e<<24>>24==45){b=b+1|0;break}if((d-b|0)>1&e<<24>>24==48?(d=a[b+1>>0]|0,d<<24>>24==88|d<<24>>24==120):0)b=b+2|0;else f=7}else f=7;while(0);i=g;return b|0}function s6(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;i=i+16|0;u=v;t=F9(j,369400)|0;m=F9(j,369544)|0;Jd[c[(c[m>>2]|0)+20>>2]&255](u,m);j=a[u>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[u+4>>2]|0;if(j){c[h>>2]=f;j=a[b>>0]|0;if(j<<24>>24==43|j<<24>>24==45){s=Wd[c[(c[t>>2]|0)+28>>2]&511](t,j)|0;j=c[h>>2]|0;c[h>>2]=j+1;a[j>>0]=s;j=b+1|0}else j=b;if(((e-j|0)>1?(a[j>>0]|0)==48:0)?(l=j+1|0,s=a[l>>0]|0,s<<24>>24==88|s<<24>>24==120):0){s=Wd[c[(c[t>>2]|0)+28>>2]&511](t,48)|0;p=c[h>>2]|0;c[h>>2]=p+1;a[p>>0]=s;p=Wd[c[(c[t>>2]|0)+28>>2]&511](t,a[l>>0]|0)|0;s=c[h>>2]|0;c[h>>2]=s+1;a[s>>0]=p;s=j+2|0}else s=j;if((s|0)!=(e|0)?(n=e+-1|0,n>>>0>s>>>0):0){l=s;j=n;do{p=a[l>>0]|0;a[l>>0]=a[j>>0]|0;a[j>>0]=p;l=l+1|0;j=j+-1|0}while(l>>>0>>0)}n=Ld[c[(c[m>>2]|0)+16>>2]&511](m)|0;if(s>>>0>>0){o=u+1|0;p=u+4|0;q=u+8|0;j=0;l=0;r=s;while(1){m=(a[u>>0]&1)==0;if((a[(m?o:c[q>>2]|0)+l>>0]|0)!=0?(j|0)==(a[(m?o:c[q>>2]|0)+l>>0]|0):0){j=c[h>>2]|0;c[h>>2]=j+1;a[j>>0]=n;j=a[u>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[p>>2]|0;m=0;l=(l>>>0<(j+-1|0)>>>0&1)+l|0}else m=j;w=Wd[c[(c[t>>2]|0)+28>>2]&511](t,a[r>>0]|0)|0;j=c[h>>2]|0;c[h>>2]=j+1;a[j>>0]=w;r=r+1|0;if(r>>>0>=e>>>0)break;else j=m+1|0}}j=f+(s-b)|0;l=c[h>>2]|0;if((j|0)!=(l|0)?(k=l+-1|0,k>>>0>j>>>0):0)do{w=a[j>>0]|0;a[j>>0]=a[k>>0]|0;a[k>>0]=w;j=j+1|0;k=k+-1|0}while(j>>>0>>0)}else{ce[c[(c[t>>2]|0)+32>>2]&255](t,b,e,f)|0;c[h>>2]=f+(e-b)}if((d|0)==(e|0)){w=c[h>>2]|0;c[g>>2]=w;v3(u);i=v;return}else{w=f+(d-b)|0;c[g>>2]=w;v3(u);i=v;return}}function t6(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=i;i=i+96|0;k=b+8|0;q=b;p=b+74|0;j=b+32|0;n=b+20|0;m=b+24|0;o=b+16|0;l=b+28|0;r=q;c[r>>2]=37;c[r+4>>2]=0;q6(q+1|0,368104,1,c[e+4>>2]|0);r=T5()|0;s=k;c[s>>2]=g;c[s+4>>2]=h;h=p+(rca(p,22,r,q,k)|0)|0;g=r6(p,h,e)|0;Y3(o,e);s6(p,g,h,j,n,m,o);S2(c[o>>2]|0)|0;c[l>>2]=c[d>>2];h=c[n>>2]|0;d=c[m>>2]|0;c[k+0>>2]=c[l+0>>2];Ie(a,k,j,h,d,e,f);i=b;return}function u6(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;i=i+64|0;k=d;p=d+56|0;q=d+44|0;j=d+20|0;n=d+12|0;m=d+8|0;o=d+4|0;l=d+16|0;a[p+0>>0]=a[368192]|0;a[p+1>>0]=a[368193]|0;a[p+2>>0]=a[368194]|0;a[p+3>>0]=a[368195]|0;a[p+4>>0]=a[368196]|0;a[p+5>>0]=a[368197]|0;q6(p+1|0,368096,0,c[f+4>>2]|0);r=T5()|0;c[k>>2]=h;h=q+(rca(q,12,r,p,k)|0)|0;p=r6(q,h,f)|0;Y3(o,f);s6(q,p,h,j,n,m,o);S2(c[o>>2]|0)|0;c[l>>2]=c[e>>2];h=c[n>>2]|0;e=c[m>>2]|0;c[k+0>>2]=c[l+0>>2];Ie(b,k,j,h,e,f,g);i=d;return}function v6(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=i;i=i+112|0;k=b+8|0;q=b;p=b+75|0;j=b+32|0;n=b+20|0;m=b+24|0;o=b+16|0;l=b+28|0;r=q;c[r>>2]=37;c[r+4>>2]=0;q6(q+1|0,368104,0,c[e+4>>2]|0);r=T5()|0;s=k;c[s>>2]=g;c[s+4>>2]=h;h=p+(rca(p,23,r,q,k)|0)|0;g=r6(p,h,e)|0;Y3(o,e);s6(p,g,h,j,n,m,o);S2(c[o>>2]|0)|0;c[l>>2]=c[d>>2];h=c[n>>2]|0;d=c[m>>2]|0;c[k+0>>2]=c[l+0>>2];Ie(a,k,j,h,d,e,f);i=b;return}function w6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;v=i;i=i+144|0;o=v+8|0;j=v;m=v+44|0;l=v+36|0;n=v+74|0;u=v+40|0;t=v+24|0;p=v+20|0;q=v+28|0;r=v+32|0;B=j;c[B>>2]=37;c[B+4>>2]=0;B=x6(j+1|0,368112,c[e+4>>2]|0)|0;c[l>>2]=m;b=T5()|0;if(B){c[o>>2]=c[e+8>>2];B=o+4|0;h[k>>3]=g;c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];b=rca(m,30,b,j,o)|0}else{h[k>>3]=g;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];b=rca(m,30,b,j,o)|0}if((b|0)>29){b=T5()|0;c[o>>2]=c[e+8>>2];B=o+4|0;h[k>>3]=g;c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];j=sca(l,b,j,o)|0;b=c[l>>2]|0;if(!b)vfa();else{w=b;z=b;s=j}}else{w=c[l>>2]|0;z=0;s=b}j=w+s|0;l=r6(w,j,e)|0;if((w|0)!=(m|0)){b=Afa(s<<1)|0;if(!b)vfa();else{x=w;y=b;A=b}}else{x=m;y=0;A=n}Y3(p,e);y6(x,l,j,A,u,t,p);S2(c[p>>2]|0)|0;c[r>>2]=c[d>>2];x=c[u>>2]|0;B=c[t>>2]|0;c[o+0>>2]=c[r+0>>2];Ie(q,o,A,x,B,e,f);B=c[q>>2]|0;c[d>>2]=B;c[a>>2]=B;if(y)Bfa(y);if(!z){i=v;return}Bfa(z);i=v;return}function x6(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;if(d&2048){a[b>>0]=43;b=b+1|0}if(d&1024){a[b>>0]=35;b=b+1|0}h=d&260;f=d>>>14;j=(h|0)==260;if(j)g=0;else{a[b>>0]=46;a[b+1>>0]=42;b=b+2|0;g=1}e=a[c>>0]|0;if(e<<24>>24)while(1){c=c+1|0;d=b+1|0;a[b>>0]=e;e=a[c>>0]|0;if(!(e<<24>>24)){b=d;break}else b=d}do if((h|0)==4)if(!(f&1)){a[b>>0]=102;break}else{a[b>>0]=70;break}else if((h|0)==256)if(!(f&1)){a[b>>0]=101;break}else{a[b>>0]=69;break}else{d=(f&1|0)!=0;if(j)if(d){a[b>>0]=65;break}else{a[b>>0]=97;break}else if(d){a[b>>0]=71;break}else{a[b>>0]=103;break}}while(0);i=k;return g|0}function y6(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=i;i=i+16|0;x=y;w=F9(j,369400)|0;u=F9(j,369544)|0;Jd[c[(c[u>>2]|0)+20>>2]&255](x,u);c[h>>2]=f;j=a[b>>0]|0;if(j<<24>>24==43|j<<24>>24==45){v=Wd[c[(c[w>>2]|0)+28>>2]&511](w,j)|0;l=c[h>>2]|0;c[h>>2]=l+1;a[l>>0]=v;l=b+1|0}else l=b;v=e;a:do if(((v-l|0)>1?(a[l>>0]|0)==48:0)?(m=l+1|0,t=a[m>>0]|0,t<<24>>24==88|t<<24>>24==120):0){t=Wd[c[(c[w>>2]|0)+28>>2]&511](w,48)|0;s=c[h>>2]|0;c[h>>2]=s+1;a[s>>0]=t;l=l+2|0;s=Wd[c[(c[w>>2]|0)+28>>2]&511](w,a[m>>0]|0)|0;t=c[h>>2]|0;c[h>>2]=t+1;a[t>>0]=s;if(l>>>0>>0){m=l;while(1){t=a[m>>0]|0;j=m+1|0;if(!(Nda(t<<24>>24,T5()|0)|0)){t=l;j=m;break a}if(j>>>0>>0)m=j;else{t=l;break}}}else{t=l;j=l}}else n=4;while(0);b:do if((n|0)==4)if(l>>>0>>0){m=l;while(1){t=a[m>>0]|0;j=m+1|0;if(!(Mda(t<<24>>24,T5()|0)|0)){t=l;j=m;break b}if(j>>>0>>0)m=j;else{t=l;break}}}else{t=l;j=l}while(0);m=a[x>>0]|0;if(!(m&1))m=(m&255)>>>1;else m=c[x+4>>2]|0;if(m){if((t|0)!=(j|0)?(q=j+-1|0,q>>>0>t>>>0):0){l=t;m=q;do{s=a[l>>0]|0;a[l>>0]=a[m>>0]|0;a[m>>0]=s;l=l+1|0;m=m+-1|0}while(l>>>0>>0)}o=Ld[c[(c[u>>2]|0)+16>>2]&511](u)|0;if(t>>>0>>0){p=x+1|0;q=x+4|0;r=x+8|0;m=0;l=0;s=t;while(1){n=(a[x>>0]&1)==0;if((a[(n?p:c[r>>2]|0)+l>>0]|0)>0?(m|0)==(a[(n?p:c[r>>2]|0)+l>>0]|0):0){m=c[h>>2]|0;c[h>>2]=m+1;a[m>>0]=o;m=a[x>>0]|0;if(!(m&1))m=(m&255)>>>1;else m=c[q>>2]|0;n=0;l=(l>>>0<(m+-1|0)>>>0&1)+l|0}else n=m;z=Wd[c[(c[w>>2]|0)+28>>2]&511](w,a[s>>0]|0)|0;m=c[h>>2]|0;c[h>>2]=m+1;a[m>>0]=z;s=s+1|0;if(s>>>0>=j>>>0)break;else m=n+1|0}}l=f+(t-b)|0;m=c[h>>2]|0;if((l|0)!=(m|0)?(k=m+-1|0,k>>>0>l>>>0):0)do{z=a[l>>0]|0;a[l>>0]=a[k>>0]|0;a[k>>0]=z;l=l+1|0;k=k+-1|0}while(l>>>0>>0)}else{ce[c[(c[w>>2]|0)+32>>2]&255](w,t,j,c[h>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+(j-t)}c:do if(j>>>0>>0){while(1){k=a[j>>0]|0;if(k<<24>>24==46)break;t=Wd[c[(c[w>>2]|0)+28>>2]&511](w,k)|0;z=c[h>>2]|0;c[h>>2]=z+1;a[z>>0]=t;j=j+1|0;if(j>>>0>=e>>>0)break c}u=Ld[c[(c[u>>2]|0)+12>>2]&511](u)|0;z=c[h>>2]|0;c[h>>2]=z+1;a[z>>0]=u;j=j+1|0}while(0);ce[c[(c[w>>2]|0)+32>>2]&255](w,j,e,c[h>>2]|0)|0;j=(c[h>>2]|0)+(v-j)|0;c[h>>2]=j;if((d|0)==(e|0)){z=j;c[g>>2]=z;v3(x);i=y;return}z=f+(d-b)|0;c[g>>2]=z;v3(x);i=y;return}function z6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;w=i;i=i+144|0;p=w+8|0;l=w;n=w+44|0;m=w+36|0;o=w+74|0;v=w+40|0;u=w+24|0;q=w+20|0;r=w+28|0;s=w+32|0;j=l;c[j>>2]=37;c[j+4>>2]=0;j=x6(l+1|0,368120,c[e+4>>2]|0)|0;c[m>>2]=n;b=T5()|0;if(j){c[p>>2]=c[e+8>>2];C=p+4|0;h[k>>3]=g;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];b=rca(n,30,b,l,p)|0}else{h[k>>3]=g;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];b=rca(n,30,b,l,p)|0}if((b|0)>29){b=T5()|0;if(j){c[p>>2]=c[e+8>>2];j=p+4|0;h[k>>3]=g;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];j=sca(m,b,l,p)|0}else{h[k>>3]=g;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];j=sca(m,b,l,p)|0}b=c[m>>2]|0;if(!b)vfa();else{x=b;A=b;t=j}}else{x=c[m>>2]|0;A=0;t=b}j=x+t|0;l=r6(x,j,e)|0;if((x|0)!=(n|0)){b=Afa(t<<1)|0;if(!b)vfa();else{y=x;z=b;B=b}}else{y=n;z=0;B=o}Y3(q,e);y6(y,l,j,B,v,u,q);S2(c[q>>2]|0)|0;c[s>>2]=c[d>>2];d=c[v>>2]|0;C=c[u>>2]|0;c[p+0>>2]=c[s+0>>2];Ie(r,p,B,d,C,e,f);c[a>>2]=c[r>>2];Bfa(z);Bfa(A);i=w;return}function A6(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=i;i=i+80|0;k=n;o=n+72|0;j=n+52|0;m=n+12|0;q=n+4|0;l=n+8|0;a[o+0>>0]=a[368200]|0;a[o+1>>0]=a[368201]|0;a[o+2>>0]=a[368202]|0;a[o+3>>0]=a[368203]|0;a[o+4>>0]=a[368204]|0;a[o+5>>0]=a[368205]|0;d=T5()|0;c[k>>2]=h;h=rca(j,20,d,o,k)|0;o=j+h|0;d=r6(j,o,f)|0;Y3(q,f);p=F9(q,369400)|0;S2(c[q>>2]|0)|0;ce[c[(c[p>>2]|0)+32>>2]&255](p,j,o,m)|0;h=m+h|0;if((d|0)==(o|0))d=h;else d=m+(d-j)|0;c[l>>2]=c[e>>2];c[k+0>>2]=c[l+0>>2];Ie(b,k,m,d,h,f,g);i=n;return}function B6(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function C6(a){a=a|0;return}function D6(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;j=n+20|0;k=n;l=n+4|0;m=n+8|0;if(!(c[f+4>>2]&1)){l=c[(c[d>>2]|0)+24>>2]|0;c[k>>2]=c[e>>2];c[j+0>>2]=c[k+0>>2];Rd[l&31](b,d,j,f,g,h&1);i=n;return}Y3(l,f);k=F9(l,369552)|0;S2(c[l>>2]|0)|0;j=c[k>>2]|0;if(h)Jd[c[j+24>>2]&255](m,k);else Jd[c[j+28>>2]&255](m,k);j=a[m>>0]|0;if(!(j&1)){h=m+4|0;k=h;l=m+8|0}else{l=m+8|0;k=c[l>>2]|0;h=m+4|0}while(1){if(!(j&1)){f=h;j=(j&255)>>>1}else{f=c[l>>2]|0;j=c[h>>2]|0}if((k|0)==(f+(j<<2)|0))break;j=c[k>>2]|0;f=c[e>>2]|0;if(f){g=f+24|0;d=c[g>>2]|0;if((d|0)==(c[f+28>>2]|0))j=Wd[c[(c[f>>2]|0)+52>>2]&511](f,j)|0;else{c[g>>2]=d+4;c[d>>2]=j}if((j|0)==-1)c[e>>2]=0}j=a[m>>0]|0;k=k+4|0}c[b>>2]=c[e>>2];L3(m);i=n;return}function E6(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;i=i+128|0;k=d;p=d+116|0;q=d+104|0;j=d+8|0;n=d+92|0;m=d+96|0;o=d+4|0;l=d+100|0;a[p+0>>0]=a[368192]|0;a[p+1>>0]=a[368193]|0;a[p+2>>0]=a[368194]|0;a[p+3>>0]=a[368195]|0;a[p+4>>0]=a[368196]|0;a[p+5>>0]=a[368197]|0;q6(p+1|0,368096,1,c[f+4>>2]|0);r=T5()|0;c[k>>2]=h;h=q+(rca(q,12,r,p,k)|0)|0;p=r6(q,h,f)|0;Y3(o,f);F6(q,p,h,j,n,m,o);S2(c[o>>2]|0)|0;c[l>>2]=c[e>>2];h=c[n>>2]|0;e=c[m>>2]|0;c[k+0>>2]=c[l+0>>2];tca(b,k,j,h,e,f,g);i=d;return}function F6(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=i;i=i+16|0;u=v;t=F9(j,369392)|0;m=F9(j,369552)|0;Jd[c[(c[m>>2]|0)+20>>2]&255](u,m);j=a[u>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[u+4>>2]|0;if(j){c[h>>2]=f;j=a[b>>0]|0;if(j<<24>>24==43|j<<24>>24==45){s=Wd[c[(c[t>>2]|0)+44>>2]&511](t,j)|0;j=c[h>>2]|0;c[h>>2]=j+4;c[j>>2]=s;j=b+1|0}else j=b;if(((e-j|0)>1?(a[j>>0]|0)==48:0)?(k=j+1|0,s=a[k>>0]|0,s<<24>>24==88|s<<24>>24==120):0){s=Wd[c[(c[t>>2]|0)+44>>2]&511](t,48)|0;p=c[h>>2]|0;c[h>>2]=p+4;c[p>>2]=s;p=Wd[c[(c[t>>2]|0)+44>>2]&511](t,a[k>>0]|0)|0;s=c[h>>2]|0;c[h>>2]=s+4;c[s>>2]=p;s=j+2|0}else s=j;if((s|0)!=(e|0)?(n=e+-1|0,n>>>0>s>>>0):0){k=s;j=n;do{p=a[k>>0]|0;a[k>>0]=a[j>>0]|0;a[j>>0]=p;k=k+1|0;j=j+-1|0}while(k>>>0>>0)}n=Ld[c[(c[m>>2]|0)+16>>2]&511](m)|0;if(s>>>0>>0){o=u+1|0;p=u+4|0;q=u+8|0;j=0;m=0;r=s;while(1){k=(a[u>>0]&1)==0;if((a[(k?o:c[q>>2]|0)+m>>0]|0)!=0?(j|0)==(a[(k?o:c[q>>2]|0)+m>>0]|0):0){j=c[h>>2]|0;c[h>>2]=j+4;c[j>>2]=n;j=a[u>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[p>>2]|0;k=0;m=(m>>>0<(j+-1|0)>>>0&1)+m|0}else k=j;x=Wd[c[(c[t>>2]|0)+44>>2]&511](t,a[r>>0]|0)|0;w=c[h>>2]|0;j=w+4|0;c[h>>2]=j;c[w>>2]=x;r=r+1|0;if(r>>>0>=e>>>0)break;else j=k+1|0}}else j=c[h>>2]|0;k=f+(s-b<<2)|0;if((k|0)!=(j|0)?(l=j+-4|0,l>>>0>k>>>0):0)do{x=c[k>>2]|0;c[k>>2]=c[l>>2];c[l>>2]=x;k=k+4|0;l=l+-4|0}while(k>>>0>>0)}else{ce[c[(c[t>>2]|0)+48>>2]&255](t,b,e,f)|0;j=f+(e-b<<2)|0;c[h>>2]=j}if((d|0)==(e|0)){x=j;c[g>>2]=x;v3(u);i=v;return}x=f+(d-b<<2)|0;c[g>>2]=x;v3(u);i=v;return}function G6(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=i;i=i+224|0;k=b+8|0;q=b;p=b+196|0;j=b+16|0;n=b+180|0;m=b+184|0;o=b+188|0;l=b+192|0;r=q;c[r>>2]=37;c[r+4>>2]=0;q6(q+1|0,368104,1,c[e+4>>2]|0);r=T5()|0;s=k;c[s>>2]=g;c[s+4>>2]=h;h=p+(rca(p,22,r,q,k)|0)|0;g=r6(p,h,e)|0;Y3(o,e);F6(p,g,h,j,n,m,o);S2(c[o>>2]|0)|0;c[l>>2]=c[d>>2];h=c[n>>2]|0;d=c[m>>2]|0;c[k+0>>2]=c[l+0>>2];tca(a,k,j,h,d,e,f);i=b;return}function H6(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;i=i+128|0;k=d;p=d+116|0;q=d+104|0;j=d+8|0;n=d+92|0;m=d+96|0;o=d+4|0;l=d+100|0;a[p+0>>0]=a[368192]|0;a[p+1>>0]=a[368193]|0;a[p+2>>0]=a[368194]|0;a[p+3>>0]=a[368195]|0;a[p+4>>0]=a[368196]|0;a[p+5>>0]=a[368197]|0;q6(p+1|0,368096,0,c[f+4>>2]|0);r=T5()|0;c[k>>2]=h;h=q+(rca(q,12,r,p,k)|0)|0;p=r6(q,h,f)|0;Y3(o,f);F6(q,p,h,j,n,m,o);S2(c[o>>2]|0)|0;c[l>>2]=c[e>>2];h=c[n>>2]|0;e=c[m>>2]|0;c[k+0>>2]=c[l+0>>2];tca(b,k,j,h,e,f,g);i=d;return}function I6(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=i;i=i+240|0;k=b+8|0;q=b;p=b+204|0;j=b+16|0;n=b+188|0;m=b+192|0;o=b+196|0;l=b+200|0;r=q;c[r>>2]=37;c[r+4>>2]=0;q6(q+1|0,368104,0,c[e+4>>2]|0);r=T5()|0;s=k;c[s>>2]=g;c[s+4>>2]=h;h=p+(rca(p,23,r,q,k)|0)|0;g=r6(p,h,e)|0;Y3(o,e);F6(p,g,h,j,n,m,o);S2(c[o>>2]|0)|0;c[l>>2]=c[d>>2];h=c[n>>2]|0;d=c[m>>2]|0;c[k+0>>2]=c[l+0>>2];tca(a,k,j,h,d,e,f);i=b;return}function J6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;v=i;i=i+304|0;o=v+8|0;j=v;m=v+272|0;l=v+264|0;n=v+36|0;u=v+268|0;t=v+24|0;p=v+20|0;q=v+28|0;r=v+32|0;B=j;c[B>>2]=37;c[B+4>>2]=0;B=x6(j+1|0,368112,c[e+4>>2]|0)|0;c[l>>2]=m;b=T5()|0;if(B){c[o>>2]=c[e+8>>2];B=o+4|0;h[k>>3]=g;c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];b=rca(m,30,b,j,o)|0}else{h[k>>3]=g;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];b=rca(m,30,b,j,o)|0}if((b|0)>29){b=T5()|0;c[o>>2]=c[e+8>>2];B=o+4|0;h[k>>3]=g;c[B>>2]=c[k>>2];c[B+4>>2]=c[k+4>>2];j=sca(l,b,j,o)|0;b=c[l>>2]|0;if(!b)vfa();else{w=b;z=b;s=j}}else{w=c[l>>2]|0;z=0;s=b}j=w+s|0;l=r6(w,j,e)|0;if((w|0)!=(m|0)){b=Afa(s<<3)|0;if(!b)vfa();else{x=w;y=b;A=b}}else{x=m;y=0;A=n}Y3(p,e);K6(x,l,j,A,u,t,p);S2(c[p>>2]|0)|0;c[r>>2]=c[d>>2];x=c[u>>2]|0;B=c[t>>2]|0;c[o+0>>2]=c[r+0>>2];tca(q,o,A,x,B,e,f);B=c[q>>2]|0;c[d>>2]=B;c[a>>2]=B;if(!y){Bfa(z);i=v;return}Bfa(y);Bfa(z);i=v;return}function K6(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=i;i=i+16|0;x=y;w=F9(j,369392)|0;u=F9(j,369552)|0;Jd[c[(c[u>>2]|0)+20>>2]&255](x,u);c[h>>2]=f;j=a[b>>0]|0;if(j<<24>>24==43|j<<24>>24==45){v=Wd[c[(c[w>>2]|0)+44>>2]&511](w,j)|0;l=c[h>>2]|0;c[h>>2]=l+4;c[l>>2]=v;l=b+1|0}else l=b;v=e;a:do if(((v-l|0)>1?(a[l>>0]|0)==48:0)?(k=l+1|0,t=a[k>>0]|0,t<<24>>24==88|t<<24>>24==120):0){t=Wd[c[(c[w>>2]|0)+44>>2]&511](w,48)|0;s=c[h>>2]|0;c[h>>2]=s+4;c[s>>2]=t;l=l+2|0;s=Wd[c[(c[w>>2]|0)+44>>2]&511](w,a[k>>0]|0)|0;t=c[h>>2]|0;c[h>>2]=t+4;c[t>>2]=s;if(l>>>0>>0){k=l;while(1){t=a[k>>0]|0;j=k+1|0;if(!(Nda(t<<24>>24,T5()|0)|0)){t=l;j=k;break a}if(j>>>0>>0)k=j;else{t=l;break}}}else{t=l;j=l}}else n=4;while(0);b:do if((n|0)==4)if(l>>>0>>0){k=l;while(1){t=a[k>>0]|0;j=k+1|0;if(!(Mda(t<<24>>24,T5()|0)|0)){t=l;j=k;break b}if(j>>>0>>0)k=j;else{t=l;break}}}else{t=l;j=l}while(0);k=a[x>>0]|0;if(!(k&1))k=(k&255)>>>1;else k=c[x+4>>2]|0;if(k){if((t|0)!=(j|0)?(q=j+-1|0,q>>>0>t>>>0):0){l=t;k=q;do{s=a[l>>0]|0;a[l>>0]=a[k>>0]|0;a[k>>0]=s;l=l+1|0;k=k+-1|0}while(l>>>0>>0)}o=Ld[c[(c[u>>2]|0)+16>>2]&511](u)|0;if(t>>>0>>0){p=x+1|0;q=x+4|0;r=x+8|0;k=0;l=0;s=t;while(1){n=(a[x>>0]&1)==0;if((a[(n?p:c[r>>2]|0)+l>>0]|0)>0?(k|0)==(a[(n?p:c[r>>2]|0)+l>>0]|0):0){k=c[h>>2]|0;c[h>>2]=k+4;c[k>>2]=o;k=a[x>>0]|0;if(!(k&1))k=(k&255)>>>1;else k=c[q>>2]|0;n=0;l=(l>>>0<(k+-1|0)>>>0&1)+l|0}else n=k;A=Wd[c[(c[w>>2]|0)+44>>2]&511](w,a[s>>0]|0)|0;z=c[h>>2]|0;k=z+4|0;c[h>>2]=k;c[z>>2]=A;s=s+1|0;if(s>>>0>=j>>>0)break;else k=n+1|0}}else k=c[h>>2]|0;l=f+(t-b<<2)|0;if((l|0)!=(k|0)?(m=k+-4|0,m>>>0>l>>>0):0)do{A=c[l>>2]|0;c[l>>2]=c[m>>2];c[m>>2]=A;l=l+4|0;m=m+-4|0}while(l>>>0>>0)}else{ce[c[(c[w>>2]|0)+48>>2]&255](w,t,j,c[h>>2]|0)|0;k=(c[h>>2]|0)+(j-t<<2)|0;c[h>>2]=k}c:do if(j>>>0>>0){while(1){k=a[j>>0]|0;if(k<<24>>24==46)break;z=Wd[c[(c[w>>2]|0)+44>>2]&511](w,k)|0;A=c[h>>2]|0;k=A+4|0;c[h>>2]=k;c[A>>2]=z;j=j+1|0;if(j>>>0>=e>>>0)break c}z=Ld[c[(c[u>>2]|0)+12>>2]&511](u)|0;A=c[h>>2]|0;k=A+4|0;c[h>>2]=k;c[A>>2]=z;j=j+1|0}while(0);ce[c[(c[w>>2]|0)+48>>2]&255](w,j,e,k)|0;j=(c[h>>2]|0)+(v-j<<2)|0;c[h>>2]=j;if((d|0)==(e|0)){A=j;c[g>>2]=A;v3(x);i=y;return}A=f+(d-b<<2)|0;c[g>>2]=A;v3(x);i=y;return}function L6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;w=i;i=i+304|0;p=w+8|0;l=w;n=w+272|0;m=w+264|0;o=w+36|0;v=w+268|0;u=w+24|0;q=w+20|0;r=w+28|0;s=w+32|0;j=l;c[j>>2]=37;c[j+4>>2]=0;j=x6(l+1|0,368120,c[e+4>>2]|0)|0;c[m>>2]=n;b=T5()|0;if(j){c[p>>2]=c[e+8>>2];C=p+4|0;h[k>>3]=g;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];b=rca(n,30,b,l,p)|0}else{h[k>>3]=g;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];b=rca(n,30,b,l,p)|0}if((b|0)>29){b=T5()|0;if(j){c[p>>2]=c[e+8>>2];j=p+4|0;h[k>>3]=g;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];j=sca(m,b,l,p)|0}else{h[k>>3]=g;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];j=sca(m,b,l,p)|0}b=c[m>>2]|0;if(!b)vfa();else{x=b;A=b;t=j}}else{x=c[m>>2]|0;A=0;t=b}j=x+t|0;l=r6(x,j,e)|0;if((x|0)!=(n|0)){b=Afa(t<<3)|0;if(!b)vfa();else{y=x;z=b;B=b}}else{y=n;z=0;B=o}Y3(q,e);K6(y,l,j,B,v,u,q);S2(c[q>>2]|0)|0;c[s>>2]=c[d>>2];y=c[v>>2]|0;C=c[u>>2]|0;c[p+0>>2]=c[s+0>>2];tca(r,p,B,y,C,e,f);C=c[r>>2]|0;c[d>>2]=C;c[a>>2]=C;if(!z){Bfa(A);i=w;return}Bfa(z);Bfa(A);i=w;return}function M6(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=i;i=i+192|0;k=n;o=n+180|0;j=n+160|0;m=n+8|0;q=n+4|0;l=n+156|0;a[o+0>>0]=a[368200]|0;a[o+1>>0]=a[368201]|0;a[o+2>>0]=a[368202]|0;a[o+3>>0]=a[368203]|0;a[o+4>>0]=a[368204]|0;a[o+5>>0]=a[368205]|0;d=T5()|0;c[k>>2]=h;h=rca(j,20,d,o,k)|0;o=j+h|0;d=r6(j,o,f)|0;Y3(q,f);p=F9(q,369392)|0;S2(c[q>>2]|0)|0;ce[c[(c[p>>2]|0)+48>>2]&255](p,j,o,m)|0;h=m+(h<<2)|0;if((d|0)==(o|0))d=h;else d=m+(d-j<<2)|0;c[l>>2]=c[e>>2];c[k+0>>2]=c[l+0>>2];tca(b,k,m,d,h,f,g);i=n;return}function N6(e,f,g,h,j,k,l,m,n){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+32|0;v=D+20|0;u=D;B=D+4|0;w=D+8|0;x=D+12|0;y=D+16|0;Y3(B,j);z=F9(B,369400)|0;S2(c[B>>2]|0)|0;c[k>>2]=0;a:do if((m|0)!=(n|0)){B=z+8|0;o=m;m=0;b:while(1){while(1){if(m){C=60;break a}m=c[g>>2]|0;if(m){if((c[m+12>>2]|0)==(c[m+16>>2]|0)?(Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1:0){c[g>>2]=0;m=0}}else m=0;p=(m|0)==0;q=c[h>>2]|0;do if(q){if((c[q+12>>2]|0)==(c[q+16>>2]|0)?(Ld[c[(c[q>>2]|0)+36>>2]&511](q)|0)==-1:0){c[h>>2]=0;C=14;break}if(!p){C=15;break b}}else C=14;while(0);if((C|0)==14){C=0;if(p){C=15;break b}else q=0}if((Od[c[(c[z>>2]|0)+36>>2]&255](z,a[o>>0]|0,0)|0)<<24>>24==37){C=17;break}p=a[o>>0]|0;if(p<<24>>24>-1?(A=c[B>>2]|0,(b[A+(p<<24>>24<<1)>>1]&8192)!=0):0){C=28;break}p=m+12|0;q=c[p>>2]|0;r=m+16|0;if((q|0)==(c[r>>2]|0))q=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else q=d[q>>0]|0;t=Wd[c[(c[z>>2]|0)+12>>2]&511](z,q&255)|0;if(t<<24>>24==(Wd[c[(c[z>>2]|0)+12>>2]&511](z,a[o>>0]|0)|0)<<24>>24){C=55;break}c[k>>2]=4;m=4}c:do if((C|0)==17){C=0;p=o+1|0;if((p|0)==(n|0)){C=18;break b}s=Od[c[(c[z>>2]|0)+36>>2]&255](z,a[p>>0]|0,0)|0;if(s<<24>>24==48|s<<24>>24==69){o=o+2|0;if((o|0)==(n|0)){C=21;break b}p=o;r=Od[c[(c[z>>2]|0)+36>>2]&255](z,a[o>>0]|0,0)|0;o=s}else{r=s;o=0}t=c[(c[f>>2]|0)+36>>2]|0;c[x>>2]=m;c[y>>2]=q;c[u+0>>2]=c[x+0>>2];c[v+0>>2]=c[y+0>>2];Vd[t&31](w,f,u,v,j,k,l,r,o);c[g>>2]=c[w>>2];m=p+1|0}else if((C|0)==28){while(1){C=0;o=o+1|0;if((o|0)==(n|0)){o=n;break}p=a[o>>0]|0;if(p<<24>>24<=-1)break;if(!(b[A+(p<<24>>24<<1)>>1]&8192))break;else C=28}s=q;r=q;while(1){if(m){if((c[m+12>>2]|0)==(c[m+16>>2]|0)?(Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1:0){c[g>>2]=0;m=0}}else m=0;q=(m|0)==0;do if(r){if((c[r+12>>2]|0)!=(c[r+16>>2]|0))if(q){p=s;break}else{m=o;break c}if((Ld[c[(c[r>>2]|0)+36>>2]&511](r)|0)!=-1)if(q^(s|0)==0){p=s;r=s;break}else{m=o;break c}else{c[h>>2]=0;p=0;C=41;break}}else{p=s;C=41}while(0);if((C|0)==41){C=0;if(q){m=o;break c}else r=0}s=m+12|0;q=c[s>>2]|0;t=m+16|0;if((q|0)==(c[t>>2]|0))q=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else q=d[q>>0]|0;if((q&255)<<24>>24<=-1){m=o;break c}if(!(b[(c[B>>2]|0)+(q<<24>>24<<1)>>1]&8192)){m=o;break c}q=c[s>>2]|0;if((q|0)==(c[t>>2]|0)){Ld[c[(c[m>>2]|0)+40>>2]&511](m)|0;s=p;continue}else{c[s>>2]=q+1;s=p;continue}}}else if((C|0)==55){C=0;q=c[p>>2]|0;if((q|0)==(c[r>>2]|0))Ld[c[(c[m>>2]|0)+40>>2]&511](m)|0;else c[p>>2]=q+1;m=o+1|0}while(0);if((m|0)==(n|0)){C=60;break a}o=m;m=c[k>>2]|0}if((C|0)==15){c[k>>2]=4;break}else if((C|0)==18){c[k>>2]=4;break}else if((C|0)==21){c[k>>2]=4;break}}else C=60;while(0);if((C|0)==60)m=c[g>>2]|0;if(m){if((c[m+12>>2]|0)==(c[m+16>>2]|0)?(Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1:0){c[g>>2]=0;m=0}}else m=0;o=(m|0)==0;p=c[h>>2]|0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0)?(Ld[c[(c[p>>2]|0)+36>>2]&511](p)|0)==-1:0){c[h>>2]=0;C=70;break}if(o){c[e>>2]=m;i=D;return}}else C=70;while(0);if((C|0)==70?!o:0){c[e>>2]=m;i=D;return}c[k>>2]=c[k>>2]|2;c[e>>2]=m;i=D;return}function O6(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function P6(a){a=a|0;return}function Q6(a){a=a|0;return 2}function R6(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];N6(a,b,l,k,f,g,h,368304,368312|0);i=j;return}function S6(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;n=q+12|0;m=q;o=q+4|0;p=q+8|0;l=d+8|0;l=Ld[c[(c[l>>2]|0)+20>>2]&511](l)|0;c[o>>2]=c[e>>2];c[p>>2]=c[f>>2];e=a[l>>0]|0;if(!(e&1)){k=l+1|0;f=(e&255)>>>1;e=l+1|0}else{e=c[l+8>>2]|0;k=e;f=c[l+4>>2]|0}c[m+0>>2]=c[o+0>>2];c[n+0>>2]=c[p+0>>2];N6(b,d,m,n,g,h,j,e,k+f|0);i=q;return}function T6(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;i=i+16|0;k=j+8|0;m=j;l=j+4|0;Y3(m,f);f=F9(m,369400)|0;S2(c[m>>2]|0)|0;c[l>>2]=c[e>>2];c[k+0>>2]=c[l+0>>2];U6(b,h+24|0,d,k,g,f);c[a>>2]=c[d>>2];i=j;return}function U6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;h=i;i=i+16|0;j=h+4|0;k=h;a=a+8|0;a=Ld[c[c[a>>2]>>2]&511](a)|0;c[k>>2]=c[e>>2];c[j+0>>2]=c[k+0>>2];d=(Yba(d,j,a,a+168|0,g,f,0)|0)-a|0;if((d|0)>=168){i=h;return}c[b>>2]=((d|0)/12|0|0)%7|0;i=h;return}function V6(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;i=i+16|0;k=j+8|0;m=j;l=j+4|0;Y3(m,f);f=F9(m,369400)|0;S2(c[m>>2]|0)|0;c[l>>2]=c[e>>2];c[k+0>>2]=c[l+0>>2];W6(b,h+16|0,d,k,g,f);c[a>>2]=c[d>>2];i=j;return}function W6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;h=i;i=i+16|0;j=h+4|0;k=h;a=a+8|0;a=Ld[c[(c[a>>2]|0)+4>>2]&511](a)|0;c[k>>2]=c[e>>2];c[j+0>>2]=c[k+0>>2];d=(Yba(d,j,a,a+288|0,g,f,0)|0)-a|0;if((d|0)>=288){i=h;return}c[b>>2]=((d|0)/12|0|0)%12|0;i=h;return}function X6(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;i=i+16|0;k=j+8|0;m=j;l=j+4|0;Y3(m,f);f=F9(m,369400)|0;S2(c[m>>2]|0)|0;c[l>>2]=c[e>>2];c[k+0>>2]=c[l+0>>2];Y6(b,h+20|0,d,k,g,f);c[a>>2]=c[d>>2];i=j;return}function Y6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=uca(d,a,f,g,4)|0;if(c[f>>2]&4){i=h;return}if((a|0)<69)a=a+2e3|0;else a=(a+-69|0)>>>0<31?a+1900|0:a;c[b>>2]=a+-1900;i=h;return}function Z6(b,d,e,f,g,h,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;_=i;i=i+176|0;Z=_+160|0;Y=_+156|0;$=_+152|0;v=_+148|0;G=_+144|0;V=_+140|0;W=_+136|0;X=_+132|0;P=_+128|0;Q=_+124|0;R=_+120|0;l=_+116|0;o=_+112|0;m=_+108|0;n=_+104|0;p=_+100|0;q=_+96|0;r=_+92|0;s=_+88|0;t=_+84|0;u=_+80|0;w=_+32|0;x=_+28|0;y=_+24|0;z=_+20|0;A=_+16|0;B=_+8|0;C=_+4|0;D=_;E=_+12|0;F=_+36|0;H=_+40|0;I=_+44|0;J=_+48|0;K=_+52|0;S=_+56|0;T=_+60|0;U=_+64|0;L=_+68|0;M=_+72|0;N=_+76|0;c[h>>2]=0;Y3($,g);O=F9($,369400)|0;S2(c[$>>2]|0)|0;do switch(k<<24>>24|0){case 88:{n=d+8|0;n=Ld[c[(c[n>>2]|0)+24>>2]&511](n)|0;c[T>>2]=c[e>>2];c[U>>2]=c[f>>2];l=a[n>>0]|0;if(!(l&1)){o=n+1|0;m=(l&255)>>>1;l=n+1|0}else{l=c[n+8>>2]|0;o=l;m=c[n+4>>2]|0}c[Y+0>>2]=c[T+0>>2];c[Z+0>>2]=c[U+0>>2];N6(S,d,Y,Z,g,h,j,l,o+m|0);c[e>>2]=c[S>>2];break}case 37:{c[N>>2]=c[f>>2];c[Z+0>>2]=c[N+0>>2];j7(d,e,Z,h,O);break}case 68:{c[R>>2]=c[e>>2];c[l>>2]=c[f>>2];c[Y+0>>2]=c[R+0>>2];c[Z+0>>2]=c[l+0>>2];N6(Q,d,Y,Z,g,h,j,368312,368320|0);c[e>>2]=c[Q>>2];break}case 106:{c[r>>2]=c[f>>2];c[Z+0>>2]=c[r+0>>2];b7(d,j+28|0,e,Z,h,O);break}case 109:{c[s>>2]=c[f>>2];c[Z+0>>2]=c[s+0>>2];c7(d,j+16|0,e,Z,h,O);break}case 116:case 110:{c[u>>2]=c[f>>2];c[Z+0>>2]=c[u+0>>2];e7(d,e,Z,h,O);break}case 73:{c[q>>2]=c[f>>2];c[Z+0>>2]=c[q+0>>2];a7(d,j+8|0,e,Z,h,O);break}case 104:case 66:case 98:{c[G>>2]=c[f>>2];c[Z+0>>2]=c[G+0>>2];W6(d,j+16|0,e,Z,h,O);break}case 77:{c[t>>2]=c[f>>2];c[Z+0>>2]=c[t+0>>2];d7(d,j+4|0,e,Z,h,O);break}case 84:{c[F>>2]=c[e>>2];c[H>>2]=c[f>>2];c[Y+0>>2]=c[F+0>>2];c[Z+0>>2]=c[H+0>>2];N6(E,d,Y,Z,g,h,j,368352,368360|0);c[e>>2]=c[E>>2];break}case 72:{c[p>>2]=c[f>>2];c[Z+0>>2]=c[p+0>>2];$6(d,j+8|0,e,Z,h,O);break}case 101:case 100:{c[P>>2]=c[f>>2];c[Z+0>>2]=c[P+0>>2];_6(d,j+12|0,e,Z,h,O);break}case 89:{c[M>>2]=c[f>>2];c[Z+0>>2]=c[M+0>>2];i7(d,j+20|0,e,Z,h,O);break}case 70:{c[m>>2]=c[e>>2];c[n>>2]=c[f>>2];c[Y+0>>2]=c[m+0>>2];c[Z+0>>2]=c[n+0>>2];N6(o,d,Y,Z,g,h,j,368320,368328|0);c[e>>2]=c[o>>2];break}case 82:{c[B>>2]=c[e>>2];c[C>>2]=c[f>>2];c[Y+0>>2]=c[B+0>>2];c[Z+0>>2]=c[C+0>>2];N6(A,d,Y,Z,g,h,j,368344,368349|0);c[e>>2]=c[A>>2];break}case 99:{o=d+8|0;o=Ld[c[(c[o>>2]|0)+12>>2]&511](o)|0;c[W>>2]=c[e>>2];c[X>>2]=c[f>>2];l=a[o>>0]|0;if(!(l&1)){n=o+1|0;m=(l&255)>>>1;l=o+1|0}else{l=c[o+8>>2]|0;n=l;m=c[o+4>>2]|0}c[Y+0>>2]=c[W+0>>2];c[Z+0>>2]=c[X+0>>2];N6(V,d,Y,Z,g,h,j,l,n+m|0);c[e>>2]=c[V>>2];break}case 112:{c[w>>2]=c[f>>2];c[Z+0>>2]=c[w+0>>2];f7(d,j+8|0,e,Z,h,O);break}case 83:{c[D>>2]=c[f>>2];c[Z+0>>2]=c[D+0>>2];g7(d,j,e,Z,h,O);break}case 114:{c[y>>2]=c[e>>2];c[z>>2]=c[f>>2];c[Y+0>>2]=c[y+0>>2];c[Z+0>>2]=c[z+0>>2];N6(x,d,Y,Z,g,h,j,368328,368339|0);c[e>>2]=c[x>>2];break}case 119:{c[I>>2]=c[f>>2];c[Z+0>>2]=c[I+0>>2];h7(d,j+24|0,e,Z,h,O);break}case 121:{c[L>>2]=c[f>>2];c[Z+0>>2]=c[L+0>>2];Y6(d,j+20|0,e,Z,h,O);break}case 120:{T=c[(c[d>>2]|0)+20>>2]|0;c[J>>2]=c[e>>2];c[K>>2]=c[f>>2];c[Y+0>>2]=c[J+0>>2];c[Z+0>>2]=c[K+0>>2];Td[T&63](b,d,Y,Z,g,h,j);i=_;return}case 65:case 97:{c[v>>2]=c[f>>2];c[Z+0>>2]=c[v+0>>2];U6(d,j+24|0,e,Z,h,O);break}default:c[h>>2]=c[h>>2]|4}while(0);c[b>>2]=c[e>>2];i=_;return}function _6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=uca(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)>0&(a|0)<32){c[b>>2]=a;i=h;return}else{c[f>>2]=d|4;i=h;return}}function $6(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=uca(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<24){c[b>>2]=a;i=h;return}else{c[f>>2]=d|4;i=h;return}}function a7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=uca(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)>0&(a|0)<13){c[b>>2]=a;i=h;return}else{c[f>>2]=d|4;i=h;return}}function b7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=uca(d,a,f,g,3)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<366){c[b>>2]=a;i=h;return}else{c[f>>2]=d|4;i=h;return}}function c7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=uca(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<13){c[b>>2]=a+-1;i=h;return}else{c[f>>2]=d|4;i=h;return}}function d7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=uca(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<60){c[b>>2]=a;i=h;return}else{c[f>>2]=d|4;i=h;return}}function e7(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;l=i;k=h+8|0;a:while(1){a=c[e>>2]|0;do if(a){if((c[a+12>>2]|0)==(c[a+16>>2]|0))if((Ld[c[(c[a>>2]|0)+36>>2]&511](a)|0)==-1){c[e>>2]=0;a=0;break}else{a=c[e>>2]|0;break}}else a=0;while(0);a=(a|0)==0;h=c[f>>2]|0;do if(h){if((c[h+12>>2]|0)!=(c[h+16>>2]|0))if(a)break;else break a;if((Ld[c[(c[h>>2]|0)+36>>2]&511](h)|0)!=-1)if(a)break;else break a;else{c[f>>2]=0;m=12;break}}else m=12;while(0);if((m|0)==12){m=0;if(a){h=0;break}else h=0}a=c[e>>2]|0;j=c[a+12>>2]|0;if((j|0)==(c[a+16>>2]|0))a=Ld[c[(c[a>>2]|0)+36>>2]&511](a)|0;else a=d[j>>0]|0;if((a&255)<<24>>24<=-1)break;if(!(b[(c[k>>2]|0)+(a<<24>>24<<1)>>1]&8192))break;a=c[e>>2]|0;h=a+12|0;j=c[h>>2]|0;if((j|0)==(c[a+16>>2]|0)){Ld[c[(c[a>>2]|0)+40>>2]&511](a)|0;continue}else{c[h>>2]=j+1;continue}}a=c[e>>2]|0;do if(a){if((c[a+12>>2]|0)==(c[a+16>>2]|0))if((Ld[c[(c[a>>2]|0)+36>>2]&511](a)|0)==-1){c[e>>2]=0;a=0;break}else{a=c[e>>2]|0;break}}else a=0;while(0);a=(a|0)==0;do if(h){if((c[h+12>>2]|0)==(c[h+16>>2]|0)?(Ld[c[(c[h>>2]|0)+36>>2]&511](h)|0)==-1:0){c[f>>2]=0;m=32;break}if(a){i=l;return}}else m=32;while(0);if((m|0)==32?!a:0){i=l;return}c[g>>2]=c[g>>2]|2;i=l;return}function f7(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;k=n+4|0;l=n;m=b+8|0;m=Ld[c[(c[m>>2]|0)+8>>2]&511](m)|0;b=a[m>>0]|0;if(!(b&1))j=(b&255)>>>1;else j=c[m+4>>2]|0;b=a[m+12>>0]|0;if(!(b&1))b=(b&255)>>>1;else b=c[m+16>>2]|0;if((j|0)==(0-b|0)){c[g>>2]=c[g>>2]|4;i=n;return}c[l>>2]=c[f>>2];c[k+0>>2]=c[l+0>>2];h=Yba(e,k,m,m+24|0,h,g,0)|0;b=h-m|0;if((h|0)==(m|0)?(c[d>>2]|0)==12:0){c[d>>2]=0;i=n;return}if((b|0)!=12){i=n;return}b=c[d>>2]|0;if((b|0)>=12){i=n;return}c[d>>2]=b+12;i=n;return}function g7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=uca(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<61){c[b>>2]=a;i=h;return}else{c[f>>2]=d|4;i=h;return}}function h7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=uca(d,a,f,g,1)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<7){c[b>>2]=a;i=h;return}else{c[f>>2]=d|4;i=h;return}}function i7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=uca(d,a,f,g,4)|0;if(c[f>>2]&4){i=h;return}c[b>>2]=a+-1900;i=h;return}function j7(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;k=i;a=c[b>>2]|0;do if(a){if((c[a+12>>2]|0)==(c[a+16>>2]|0))if((Ld[c[(c[a>>2]|0)+36>>2]&511](a)|0)==-1){c[b>>2]=0;a=0;break}else{a=c[b>>2]|0;break}}else a=0;while(0);a=(a|0)==0;h=c[e>>2]|0;do if(h){if((c[h+12>>2]|0)==(c[h+16>>2]|0)?(Ld[c[(c[h>>2]|0)+36>>2]&511](h)|0)==-1:0){c[e>>2]=0;l=11;break}if(!a)l=12}else l=11;while(0);if((l|0)==11)if(a)l=12;else h=0;if((l|0)==12){c[f>>2]=c[f>>2]|6;i=k;return}a=c[b>>2]|0;j=c[a+12>>2]|0;if((j|0)==(c[a+16>>2]|0))a=Ld[c[(c[a>>2]|0)+36>>2]&511](a)|0;else a=d[j>>0]|0;if((Od[c[(c[g>>2]|0)+36>>2]&255](g,a&255,0)|0)<<24>>24!=37){c[f>>2]=c[f>>2]|4;i=k;return}a=c[b>>2]|0;j=a+12|0;g=c[j>>2]|0;if((g|0)==(c[a+16>>2]|0)){Ld[c[(c[a>>2]|0)+40>>2]&511](a)|0;a=c[b>>2]|0}else c[j>>2]=g+1;do if(a){if((c[a+12>>2]|0)==(c[a+16>>2]|0))if((Ld[c[(c[a>>2]|0)+36>>2]&511](a)|0)==-1){c[b>>2]=0;a=0;break}else{a=c[b>>2]|0;break}}else a=0;while(0);a=(a|0)==0;do if(h){if((c[h+12>>2]|0)==(c[h+16>>2]|0)?(Ld[c[(c[h>>2]|0)+36>>2]&511](h)|0)==-1:0){c[e>>2]=0;l=31;break}if(a){i=k;return}}else l=31;while(0);if((l|0)==31?!a:0){i=k;return}c[f>>2]=c[f>>2]|2;i=k;return}function k7(a,b,d,e,f,g,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+32|0;s=y+20|0;r=y;q=y+4|0;t=y+8|0;u=y+12|0;v=y+16|0;Y3(q,f);w=F9(q,369392)|0;S2(c[q>>2]|0)|0;c[g>>2]=0;a:do if((j|0)!=(k|0)){n=0;b:while(1){while(1){if(n){x=64;break a}l=c[d>>2]|0;if(l){n=c[l+12>>2]|0;if((n|0)==(c[l+16>>2]|0))n=Ld[c[(c[l>>2]|0)+36>>2]&511](l)|0;else n=c[n>>2]|0;if((n|0)==-1){c[d>>2]=0;o=1;l=0}else o=0}else{o=1;l=0}m=c[e>>2]|0;do if(m){n=c[m+12>>2]|0;if((n|0)==(c[m+16>>2]|0))n=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else n=c[n>>2]|0;if((n|0)!=-1)if(o)break;else{x=19;break b}else{c[e>>2]=0;x=17;break}}else x=17;while(0);if((x|0)==17){x=0;if(o){x=19;break b}else m=0}if((Od[c[(c[w>>2]|0)+52>>2]&255](w,c[j>>2]|0,0)|0)<<24>>24==37){x=21;break}if(Od[c[(c[w>>2]|0)+12>>2]&255](w,8192,c[j>>2]|0)|0){x=31;break}m=l+12|0;n=c[m>>2]|0;o=l+16|0;if((n|0)==(c[o>>2]|0))n=Ld[c[(c[l>>2]|0)+36>>2]&511](l)|0;else n=c[n>>2]|0;q=Wd[c[(c[w>>2]|0)+28>>2]&511](w,n)|0;if((q|0)==(Wd[c[(c[w>>2]|0)+28>>2]&511](w,c[j>>2]|0)|0)){x=59;break}c[g>>2]=4;n=4}c:do if((x|0)==21){x=0;n=j+4|0;if((n|0)==(k|0)){x=22;break b}p=Od[c[(c[w>>2]|0)+52>>2]&255](w,c[n>>2]|0,0)|0;if(p<<24>>24==48|p<<24>>24==69){j=j+8|0;if((j|0)==(k|0)){x=25;break b}n=j;o=Od[c[(c[w>>2]|0)+52>>2]&255](w,c[j>>2]|0,0)|0;j=p}else{o=p;j=0}q=c[(c[b>>2]|0)+36>>2]|0;c[u>>2]=l;c[v>>2]=m;c[r+0>>2]=c[u+0>>2];c[s+0>>2]=c[v+0>>2];Vd[q&31](t,b,r,s,f,g,h,o,j);c[d>>2]=c[t>>2];j=n+4|0}else if((x|0)==31){while(1){x=0;j=j+4|0;if((j|0)==(k|0)){j=k;break}if(Od[c[(c[w>>2]|0)+12>>2]&255](w,8192,c[j>>2]|0)|0)x=31;else break}o=m;p=m;while(1){if(l){n=c[l+12>>2]|0;if((n|0)==(c[l+16>>2]|0))n=Ld[c[(c[l>>2]|0)+36>>2]&511](l)|0;else n=c[n>>2]|0;if((n|0)==-1){c[d>>2]=0;l=0;m=1}else m=0}else{l=0;m=1}do if(p){n=c[p+12>>2]|0;if((n|0)==(c[p+16>>2]|0))n=Ld[c[(c[p>>2]|0)+36>>2]&511](p)|0;else n=c[n>>2]|0;if((n|0)!=-1)if(m^(o|0)==0){n=o;q=o;break}else break c;else{c[e>>2]=0;n=0;x=46;break}}else{n=o;x=46}while(0);if((x|0)==46){x=0;if(m)break c;else q=0}p=l+12|0;m=c[p>>2]|0;o=l+16|0;if((m|0)==(c[o>>2]|0))m=Ld[c[(c[l>>2]|0)+36>>2]&511](l)|0;else m=c[m>>2]|0;if(!(Od[c[(c[w>>2]|0)+12>>2]&255](w,8192,m)|0))break c;m=c[p>>2]|0;if((m|0)==(c[o>>2]|0)){Ld[c[(c[l>>2]|0)+40>>2]&511](l)|0;o=n;p=q;continue}else{c[p>>2]=m+4;o=n;p=q;continue}}}else if((x|0)==59){x=0;n=c[m>>2]|0;if((n|0)==(c[o>>2]|0))Ld[c[(c[l>>2]|0)+40>>2]&511](l)|0;else c[m>>2]=n+4;j=j+4|0}while(0);if((j|0)==(k|0)){x=64;break a}n=c[g>>2]|0}if((x|0)==19){c[g>>2]=4;break}else if((x|0)==22){c[g>>2]=4;break}else if((x|0)==25){c[g>>2]=4;break}}else x=64;while(0);if((x|0)==64)l=c[d>>2]|0;if(l){j=c[l+12>>2]|0;if((j|0)==(c[l+16>>2]|0))j=Ld[c[(c[l>>2]|0)+36>>2]&511](l)|0;else j=c[j>>2]|0;if((j|0)==-1){c[d>>2]=0;l=0;n=1}else n=0}else{l=0;n=1}j=c[e>>2]|0;do if(j){m=c[j+12>>2]|0;if((m|0)==(c[j+16>>2]|0))j=Ld[c[(c[j>>2]|0)+36>>2]&511](j)|0;else j=c[m>>2]|0;if((j|0)==-1){c[e>>2]=0;x=77;break}if(n){c[a>>2]=l;i=y;return}}else x=77;while(0);if((x|0)==77?!n:0){c[a>>2]=l;i=y;return}c[g>>2]=c[g>>2]|2;c[a>>2]=l;i=y;return}function l7(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function m7(a){a=a|0;return}function n7(a){a=a|0;return 2}function o7(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j+12|0;l=j;n=j+4|0;m=j+8|0;c[n>>2]=c[d>>2];c[m>>2]=c[e>>2];c[l+0>>2]=c[n+0>>2];c[k+0>>2]=c[m+0>>2];k7(a,b,l,k,f,g,h,368456,368488|0);i=j;return}function p7(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;n=q+12|0;m=q;o=q+4|0;p=q+8|0;l=d+8|0;l=Ld[c[(c[l>>2]|0)+20>>2]&511](l)|0;c[o>>2]=c[e>>2];c[p>>2]=c[f>>2];e=a[l>>0]|0;if(!(e&1)){k=l+4|0;f=(e&255)>>>1;e=l+4|0}else{e=c[l+8>>2]|0;k=e;f=c[l+4>>2]|0}c[m+0>>2]=c[o+0>>2];c[n+0>>2]=c[p+0>>2];k7(b,d,m,n,g,h,j,e,k+(f<<2)|0);i=q;return}function q7(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;i=i+16|0;k=j+8|0;m=j;l=j+4|0;Y3(m,f);f=F9(m,369392)|0;S2(c[m>>2]|0)|0;c[l>>2]=c[e>>2];c[k+0>>2]=c[l+0>>2];r7(b,h+24|0,d,k,g,f);c[a>>2]=c[d>>2];i=j;return}function r7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;h=i;i=i+16|0;j=h+4|0;k=h;a=a+8|0;a=Ld[c[c[a>>2]>>2]&511](a)|0;c[k>>2]=c[e>>2];c[j+0>>2]=c[k+0>>2];d=(hca(d,j,a,a+168|0,g,f,0)|0)-a|0;if((d|0)>=168){i=h;return}c[b>>2]=((d|0)/12|0|0)%7|0;i=h;return}function s7(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;i=i+16|0;k=j+8|0;m=j;l=j+4|0;Y3(m,f);f=F9(m,369392)|0;S2(c[m>>2]|0)|0;c[l>>2]=c[e>>2];c[k+0>>2]=c[l+0>>2];t7(b,h+16|0,d,k,g,f);c[a>>2]=c[d>>2];i=j;return}function t7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;h=i;i=i+16|0;j=h+4|0;k=h;a=a+8|0;a=Ld[c[(c[a>>2]|0)+4>>2]&511](a)|0;c[k>>2]=c[e>>2];c[j+0>>2]=c[k+0>>2];d=(hca(d,j,a,a+288|0,g,f,0)|0)-a|0;if((d|0)>=288){i=h;return}c[b>>2]=((d|0)/12|0|0)%12|0;i=h;return}function u7(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;i=i+16|0;k=j+8|0;m=j;l=j+4|0;Y3(m,f);f=F9(m,369392)|0;S2(c[m>>2]|0)|0;c[l>>2]=c[e>>2];c[k+0>>2]=c[l+0>>2];v7(b,h+20|0,d,k,g,f);c[a>>2]=c[d>>2];i=j;return}function v7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=vca(d,a,f,g,4)|0;if(c[f>>2]&4){i=h;return}if((a|0)<69)a=a+2e3|0;else a=(a+-69|0)>>>0<31?a+1900|0:a;c[b>>2]=a+-1900;i=h;return}function w7(b,d,e,f,g,h,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;_=i;i=i+176|0;Z=_+160|0;Y=_+156|0;$=_+152|0;v=_+148|0;G=_+144|0;V=_+140|0;W=_+136|0;X=_+132|0;P=_+128|0;Q=_+124|0;R=_+120|0;l=_+116|0;o=_+112|0;m=_+108|0;n=_+104|0;p=_+100|0;q=_+96|0;r=_+92|0;s=_+88|0;t=_+84|0;u=_+80|0;w=_+32|0;x=_+28|0;y=_+24|0;z=_+20|0;A=_+16|0;B=_+8|0;C=_+4|0;D=_;E=_+12|0;F=_+36|0;H=_+40|0;I=_+44|0;J=_+48|0;K=_+52|0;S=_+56|0;T=_+60|0;U=_+64|0;L=_+68|0;M=_+72|0;N=_+76|0;c[h>>2]=0;Y3($,g);O=F9($,369392)|0;S2(c[$>>2]|0)|0;do switch(k<<24>>24|0){case 88:{n=d+8|0;n=Ld[c[(c[n>>2]|0)+24>>2]&511](n)|0;c[T>>2]=c[e>>2];c[U>>2]=c[f>>2];l=a[n>>0]|0;if(!(l&1)){o=n+4|0;m=(l&255)>>>1;l=n+4|0}else{l=c[n+8>>2]|0;o=l;m=c[n+4>>2]|0}c[Y+0>>2]=c[T+0>>2];c[Z+0>>2]=c[U+0>>2];k7(S,d,Y,Z,g,h,j,l,o+(m<<2)|0);c[e>>2]=c[S>>2];break}case 77:{c[t>>2]=c[f>>2];c[Z+0>>2]=c[t+0>>2];C7(d,j+4|0,e,Z,h,O);break}case 82:{c[B>>2]=c[e>>2];c[C>>2]=c[f>>2];c[Y+0>>2]=c[B+0>>2];c[Z+0>>2]=c[C+0>>2];k7(A,d,Y,Z,g,h,j,368600,368620|0);c[e>>2]=c[A>>2];break}case 70:{c[m>>2]=c[e>>2];c[n>>2]=c[f>>2];c[Y+0>>2]=c[m+0>>2];c[Z+0>>2]=c[n+0>>2];k7(o,d,Y,Z,g,h,j,368520,368552|0);c[e>>2]=c[o>>2];break}case 106:{c[r>>2]=c[f>>2];c[Z+0>>2]=c[r+0>>2];A7(d,j+28|0,e,Z,h,O);break}case 89:{c[M>>2]=c[f>>2];c[Z+0>>2]=c[M+0>>2];H7(d,j+20|0,e,Z,h,O);break}case 119:{c[I>>2]=c[f>>2];c[Z+0>>2]=c[I+0>>2];G7(d,j+24|0,e,Z,h,O);break}case 120:{T=c[(c[d>>2]|0)+20>>2]|0;c[J>>2]=c[e>>2];c[K>>2]=c[f>>2];c[Y+0>>2]=c[J+0>>2];c[Z+0>>2]=c[K+0>>2];Td[T&63](b,d,Y,Z,g,h,j);i=_;return}case 114:{c[y>>2]=c[e>>2];c[z>>2]=c[f>>2];c[Y+0>>2]=c[y+0>>2];c[Z+0>>2]=c[z+0>>2];k7(x,d,Y,Z,g,h,j,368552,368596|0);c[e>>2]=c[x>>2];break}case 65:case 97:{c[v>>2]=c[f>>2];c[Z+0>>2]=c[v+0>>2];r7(d,j+24|0,e,Z,h,O);break}case 73:{c[q>>2]=c[f>>2];c[Z+0>>2]=c[q+0>>2];z7(d,j+8|0,e,Z,h,O);break}case 99:{o=d+8|0;o=Ld[c[(c[o>>2]|0)+12>>2]&511](o)|0;c[W>>2]=c[e>>2];c[X>>2]=c[f>>2];l=a[o>>0]|0;if(!(l&1)){n=o+4|0;m=(l&255)>>>1;l=o+4|0}else{l=c[o+8>>2]|0;n=l;m=c[o+4>>2]|0}c[Y+0>>2]=c[W+0>>2];c[Z+0>>2]=c[X+0>>2];k7(V,d,Y,Z,g,h,j,l,n+(m<<2)|0);c[e>>2]=c[V>>2];break}case 72:{c[p>>2]=c[f>>2];c[Z+0>>2]=c[p+0>>2];y7(d,j+8|0,e,Z,h,O);break}case 112:{c[w>>2]=c[f>>2];c[Z+0>>2]=c[w+0>>2];E7(d,j+8|0,e,Z,h,O);break}case 121:{c[L>>2]=c[f>>2];c[Z+0>>2]=c[L+0>>2];v7(d,j+20|0,e,Z,h,O);break}case 104:case 66:case 98:{c[G>>2]=c[f>>2];c[Z+0>>2]=c[G+0>>2];t7(d,j+16|0,e,Z,h,O);break}case 101:case 100:{c[P>>2]=c[f>>2];c[Z+0>>2]=c[P+0>>2];x7(d,j+12|0,e,Z,h,O);break}case 83:{c[D>>2]=c[f>>2];c[Z+0>>2]=c[D+0>>2];F7(d,j,e,Z,h,O);break}case 116:case 110:{c[u>>2]=c[f>>2];c[Z+0>>2]=c[u+0>>2];D7(d,e,Z,h,O);break}case 68:{c[R>>2]=c[e>>2];c[l>>2]=c[f>>2];c[Y+0>>2]=c[R+0>>2];c[Z+0>>2]=c[l+0>>2];k7(Q,d,Y,Z,g,h,j,368488,368520|0);c[e>>2]=c[Q>>2];break}case 109:{c[s>>2]=c[f>>2];c[Z+0>>2]=c[s+0>>2];B7(d,j+16|0,e,Z,h,O);break}case 84:{c[F>>2]=c[e>>2];c[H>>2]=c[f>>2];c[Y+0>>2]=c[F+0>>2];c[Z+0>>2]=c[H+0>>2];k7(E,d,Y,Z,g,h,j,368624,368656|0);c[e>>2]=c[E>>2];break}case 37:{c[N>>2]=c[f>>2];c[Z+0>>2]=c[N+0>>2];I7(d,e,Z,h,O);break}default:c[h>>2]=c[h>>2]|4}while(0);c[b>>2]=c[e>>2];i=_;return}function x7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=vca(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)>0&(a|0)<32){c[b>>2]=a;i=h;return}else{c[f>>2]=d|4;i=h;return}}function y7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=vca(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<24){c[b>>2]=a;i=h;return}else{c[f>>2]=d|4;i=h;return}}function z7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=vca(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)>0&(a|0)<13){c[b>>2]=a;i=h;return}else{c[f>>2]=d|4;i=h;return}}function A7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=vca(d,a,f,g,3)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<366){c[b>>2]=a;i=h;return}else{c[f>>2]=d|4;i=h;return}}function B7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=vca(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<13){c[b>>2]=a+-1;i=h;return}else{c[f>>2]=d|4;i=h;return}}function C7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=vca(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<60){c[b>>2]=a;i=h;return}else{c[f>>2]=d|4;i=h;return}}function D7(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;j=i;a:while(1){a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Ld[c[(c[a>>2]|0)+36>>2]&511](a)|0;else a=c[g>>2]|0;if((a|0)==-1){c[b>>2]=0;h=1;break}else{h=(c[b>>2]|0)==0;break}}else h=1;while(0);g=c[d>>2]|0;do if(g){a=c[g+12>>2]|0;if((a|0)==(c[g+16>>2]|0))a=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else a=c[a>>2]|0;if((a|0)!=-1)if(h){h=g;break}else{h=g;break a}else{c[d>>2]=0;k=15;break}}else k=15;while(0);if((k|0)==15){k=0;if(h){h=0;break}else h=0}a=c[b>>2]|0;g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Ld[c[(c[a>>2]|0)+36>>2]&511](a)|0;else a=c[g>>2]|0;if(!(Od[c[(c[f>>2]|0)+12>>2]&255](f,8192,a)|0))break;a=c[b>>2]|0;g=a+12|0;h=c[g>>2]|0;if((h|0)==(c[a+16>>2]|0)){Ld[c[(c[a>>2]|0)+40>>2]&511](a)|0;continue}else{c[g>>2]=h+4;continue}}a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Ld[c[(c[a>>2]|0)+36>>2]&511](a)|0;else a=c[g>>2]|0;if((a|0)==-1){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(h){a=c[h+12>>2]|0;if((a|0)==(c[h+16>>2]|0))a=Ld[c[(c[h>>2]|0)+36>>2]&511](h)|0;else a=c[a>>2]|0;if((a|0)==-1){c[d>>2]=0;k=37;break}if(g){i=j;return}}else k=37;while(0);if((k|0)==37?!g:0){i=j;return}c[e>>2]=c[e>>2]|2;i=j;return}function E7(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;k=n+4|0;l=n;m=b+8|0;m=Ld[c[(c[m>>2]|0)+8>>2]&511](m)|0;b=a[m>>0]|0;if(!(b&1))j=(b&255)>>>1;else j=c[m+4>>2]|0;b=a[m+12>>0]|0;if(!(b&1))b=(b&255)>>>1;else b=c[m+16>>2]|0;if((j|0)==(0-b|0)){c[g>>2]=c[g>>2]|4;i=n;return}c[l>>2]=c[f>>2];c[k+0>>2]=c[l+0>>2];h=hca(e,k,m,m+24|0,h,g,0)|0;b=h-m|0;if((h|0)==(m|0)?(c[d>>2]|0)==12:0){c[d>>2]=0;i=n;return}if((b|0)!=12){i=n;return}b=c[d>>2]|0;if((b|0)>=12){i=n;return}c[d>>2]=b+12;i=n;return}function F7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=vca(d,a,f,g,2)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<61){c[b>>2]=a;i=h;return}else{c[f>>2]=d|4;i=h;return}}function G7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=vca(d,a,f,g,1)|0;d=c[f>>2]|0;if((d&4|0)==0&(a|0)<7){c[b>>2]=a;i=h;return}else{c[f>>2]=d|4;i=h;return}}function H7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;i=i+16|0;a=h+4|0;j=h;c[j>>2]=c[e>>2];c[a+0>>2]=c[j+0>>2];a=vca(d,a,f,g,4)|0;if(c[f>>2]&4){i=h;return}c[b>>2]=a+-1900;i=h;return}function I7(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;a=c[b>>2]|0;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Ld[c[(c[a>>2]|0)+36>>2]&511](a)|0;else a=c[g>>2]|0;if((a|0)==-1){c[b>>2]=0;h=1;break}else{h=(c[b>>2]|0)==0;break}}else h=1;while(0);g=c[d>>2]|0;do if(g){a=c[g+12>>2]|0;if((a|0)==(c[g+16>>2]|0))a=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else a=c[a>>2]|0;if((a|0)!=-1)if(h){j=g;break}else{l=16;break}else{c[d>>2]=0;l=14;break}}else l=14;while(0);if((l|0)==14)if(h)l=16;else j=0;if((l|0)==16){c[e>>2]=c[e>>2]|6;i=k;return}a=c[b>>2]|0;g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Ld[c[(c[a>>2]|0)+36>>2]&511](a)|0;else a=c[g>>2]|0;if((Od[c[(c[f>>2]|0)+52>>2]&255](f,a,0)|0)<<24>>24!=37){c[e>>2]=c[e>>2]|4;i=k;return}a=c[b>>2]|0;g=a+12|0;h=c[g>>2]|0;if((h|0)==(c[a+16>>2]|0)){Ld[c[(c[a>>2]|0)+40>>2]&511](a)|0;a=c[b>>2]|0}else c[g>>2]=h+4;do if(a){g=c[a+12>>2]|0;if((g|0)==(c[a+16>>2]|0))a=Ld[c[(c[a>>2]|0)+36>>2]&511](a)|0;else a=c[g>>2]|0;if((a|0)==-1){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(j){a=c[j+12>>2]|0;if((a|0)==(c[j+16>>2]|0))a=Ld[c[(c[j>>2]|0)+36>>2]&511](j)|0;else a=c[a>>2]|0;if((a|0)==-1){c[d>>2]=0;l=38;break}if(g){i=k;return}}else l=38;while(0);if((l|0)==38?!g:0){i=k;return}c[e>>2]=c[e>>2]|2;i=k;return}function J7(a){a=a|0;var b=0;b=i;L7(a+8|0);xea(a);i=b;return}function K7(a){a=a|0;var b=0;b=i;L7(a+8|0);i=b;return}function L7(a){a=a|0;var b=0,d=0;b=i;d=c[a>>2]|0;if((d|0)==(T5()|0)){i=b;return}Mb(c[a>>2]|0);i=b;return}function M7(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0;m=i;i=i+112|0;l=m+4|0;f=m;c[f>>2]=l+100;N7(d+8|0,l,f,h,j,k);h=c[f>>2]|0;f=c[e>>2]|0;if((l|0)==(h|0)){d=f;c[b>>2]=d;i=m;return}do{j=a[l>>0]|0;do if(f){g=f+24|0;k=c[g>>2]|0;if((k|0)==(c[f+28>>2]|0)){d=(Wd[c[(c[f>>2]|0)+52>>2]&511](f,j&255)|0)==-1;f=d?0:f;break}else{c[g>>2]=k+1;a[k>>0]=j;break}}else f=0;while(0);l=l+1|0}while((l|0)!=(h|0));c[b>>2]=f;i=m;return}function N7(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;m=i;i=i+16|0;l=m;a[l>>0]=37;j=l+1|0;a[j>>0]=g;k=l+2|0;a[k>>0]=h;a[l+3>>0]=0;if(h<<24>>24){a[j>>0]=h;a[k>>0]=g}c[e>>2]=d+(Zc(d|0,(c[e>>2]|0)-d|0,l|0,f|0,c[b>>2]|0)|0);i=m;return}function O7(a){a=a|0;var b=0;b=i;L7(a+8|0);xea(a);i=b;return}function P7(a){a=a|0;var b=0;b=i;L7(a+8|0);i=b;return}function Q7(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0;k=i;i=i+416|0;f=k+8|0;e=k;c[e>>2]=f+400;R7(b+8|0,f,e,g,h,j);g=c[e>>2]|0;e=c[d>>2]|0;if((f|0)==(g|0)){d=e;c[a>>2]=d;i=k;return}else b=f;do{f=c[b>>2]|0;if(!e)e=0;else{j=e+24|0;h=c[j>>2]|0;if((h|0)==(c[e+28>>2]|0))f=Wd[c[(c[e>>2]|0)+52>>2]&511](e,f)|0;else{c[j>>2]=h+4;c[h>>2]=f}e=(f|0)==-1?0:e}b=b+4|0}while((b|0)!=(g|0));c[a>>2]=e;i=k;return}function R7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;h=i;i=i+128|0;l=h+16|0;m=h+8|0;j=h;k=h+12|0;c[m>>2]=l+100;N7(a,l,m,e,f,g);g=j;c[g>>2]=0;c[g+4>>2]=0;c[k>>2]=l;g=(c[d>>2]|0)-b>>2;f=qc(c[a>>2]|0)|0;g=Tda(b,k,g,j)|0;if(f)qc(f|0)|0;if((g|0)==-1)N8(370280);else{c[d>>2]=b+(g<<2);i=h;return}}function S7(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function T7(a){a=a|0;return}function U7(a){a=a|0;return 127}function V7(a){a=a|0;return 127}function W7(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function X7(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function Y7(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function Z7(a,b){a=a|0;b=b|0;b=i;r3(a,1,45);i=b;return}function _7(a){a=a|0;return 0}function $7(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function a8(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function b8(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function c8(a){a=a|0;return}function d8(a){a=a|0;return 127}function e8(a){a=a|0;return 127}function f8(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function g8(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function h8(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function i8(a,b){a=a|0;b=b|0;b=i;r3(a,1,45);i=b;return}function j8(a){a=a|0;return 0}function k8(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function l8(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function m8(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function n8(a){a=a|0;return}function o8(a){a=a|0;return 2147483647}function p8(a){a=a|0;return 2147483647}function q8(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function r8(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function s8(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function t8(a,b){a=a|0;b=b|0;b=i;J3(a,1,45);i=b;return}function u8(a){a=a|0;return 0}function v8(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function w8(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function x8(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function y8(a){a=a|0;return}function z8(a){a=a|0;return 2147483647}function A8(a){a=a|0;return 2147483647}function B8(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function C8(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function D8(a,b){a=a|0;b=b|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function E8(a,b){a=a|0;b=b|0;b=i;J3(a,1,45);i=b;return}function F8(a){a=a|0;return 0}function G8(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function H8(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function I8(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function J8(a){a=a|0;return}function K8(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=i;i=i+240|0;q=x;l=x+24|0;v=x+16|0;p=x+8|0;t=x+4|0;m=x+236|0;y=x+12|0;o=x+124|0;r=x+136|0;c[v>>2]=l;u=v+4|0;c[u>>2]=333;Y3(t,h);d=F9(t,369400)|0;a[m>>0]=0;c[y>>2]=c[f>>2];h=c[h+4>>2]|0;c[q+0>>2]=c[y+0>>2];do if(M8(e,q,g,t,h,j,m,d,v,p,l+100|0)|0){ce[c[(c[d>>2]|0)+32>>2]&255](d,369016,369026,o)|0;g=c[p>>2]|0;l=c[v>>2]|0;d=g-l|0;if((d|0)>98){d=Afa(d+2|0)|0;if(!d)vfa();else{s=d;n=d}}else{s=0;n=r}if(!(a[m>>0]|0))d=n;else{a[n>>0]=45;d=n+1|0}if(l>>>0>>0){m=o+10|0;n=o;do{h=a[l>>0]|0;g=o;while(1){if((a[g>>0]|0)==h<<24>>24)break;g=g+1|0;if((g|0)==(m|0)){g=m;break}}a[d>>0]=a[369016+(g-n)>>0]|0;l=l+1|0;d=d+1|0}while(l>>>0<(c[p>>2]|0)>>>0)}a[d>>0]=0;c[q>>2]=k;if((Yda(r,369032,q)|0)==1){Bfa(s);break}else N8(369040)}while(0);d=c[e>>2]|0;do if(d){if((c[d+12>>2]|0)==(c[d+16>>2]|0))if((Ld[c[(c[d>>2]|0)+36>>2]&511](d)|0)==-1){c[e>>2]=0;d=0;break}else{d=c[e>>2]|0;break}}else d=0;while(0);d=(d|0)==0;g=c[f>>2]|0;do if(g){if((c[g+12>>2]|0)!=(c[g+16>>2]|0))if(d)break;else{w=28;break}if((Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0)!=-1)if(d)break;else{w=28;break}else{c[f>>2]=0;w=26;break}}else w=26;while(0);if((w|0)==26?d:0)w=28;if((w|0)==28)c[j>>2]=c[j>>2]|2;c[b>>2]=c[e>>2];S2(c[t>>2]|0)|0;d=c[v>>2]|0;c[v>>2]=0;if(!d){i=x;return}Id[c[u>>2]&511](d);i=x;return}function L8(a){a=a|0;return}function M8(e,f,g,h,j,k,l,m,n,o,p){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;ca=i;i=i+512|0;O=ca+68|0;v=ca+96|0;ba=ca+88|0;S=ca+80|0;R=ca+76|0;T=ca+72|0;P=ca+497|0;U=ca+496|0;Y=ca+52|0;aa=ca+40|0;_=ca+28|0;Z=ca+16|0;$=ca+4|0;Q=ca;W=ca+64|0;c[O>>2]=p;c[ba>>2]=v;X=ba+4|0;c[X>>2]=333;c[S>>2]=v;c[R>>2]=v+400;c[T>>2]=0;c[Y+0>>2]=0;c[Y+4>>2]=0;c[Y+8>>2]=0;c[aa+0>>2]=0;c[aa+4>>2]=0;c[aa+8>>2]=0;c[_+0>>2]=0;c[_+4>>2]=0;c[_+8>>2]=0;c[Z+0>>2]=0;c[Z+4>>2]=0;c[Z+8>>2]=0;c[$+0>>2]=0;c[$+4>>2]=0;c[$+8>>2]=0;P8(g,h,T,P,U,Y,aa,_,Z,Q);c[o>>2]=c[n>>2];I=m+8|0;J=Z+1|0;K=Z+4|0;L=Z+8|0;M=_+1|0;N=_+4|0;H=_+8|0;x=(j&512|0)!=0;y=aa+1|0;z=aa+8|0;A=aa+4|0;B=$+1|0;C=$+8|0;D=$+4|0;E=T+3|0;F=Y+4|0;G=0;u=0;a:while(1){p=c[e>>2]|0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0))if((Ld[c[(c[p>>2]|0)+36>>2]&511](p)|0)==-1){c[e>>2]=0;p=0;break}else{p=c[e>>2]|0;break}}else p=0;while(0);s=(p|0)==0;p=c[f>>2]|0;do if(p){if((c[p+12>>2]|0)!=(c[p+16>>2]|0))if(s)break;else{V=250;break a}if((Ld[c[(c[p>>2]|0)+36>>2]&511](p)|0)!=-1)if(s)break;else{V=250;break a}else{c[f>>2]=0;V=12;break}}else V=12;while(0);if((V|0)==12){V=0;if(s){p=0;V=250;break}else p=0}b:do switch(a[T+G>>0]|0){case 0:{V=27;break}case 3:{s=a[_>>0]|0;t=(s&1)==0;if(t)g=(s&255)>>>1;else g=c[N>>2]|0;j=a[Z>>0]|0;h=(j&1)==0;if(h)m=(j&255)>>>1;else m=c[K>>2]|0;if((g|0)==(0-m|0))s=v;else{if(t)m=(s&255)>>>1;else m=c[N>>2]|0;if(m){if(h)m=(j&255)>>>1;else m=c[K>>2]|0;if(m){m=c[e>>2]|0;g=c[m+12>>2]|0;if((g|0)==(c[m+16>>2]|0)){j=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;s=a[_>>0]|0}else j=d[g>>0]|0;m=c[e>>2]|0;g=m+12|0;h=c[g>>2]|0;t=(h|0)==(c[m+16>>2]|0);if((j&255)<<24>>24==(a[((s&1)==0?M:c[H>>2]|0)>>0]|0)){if(t)Ld[c[(c[m>>2]|0)+40>>2]&511](m)|0;else c[g>>2]=h+1;s=a[_>>0]|0;if(!(s&1))m=(s&255)>>>1;else m=c[N>>2]|0;s=v;u=m>>>0>1?_:u;break b}if(t)s=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else s=d[h>>0]|0;if((s&255)<<24>>24!=(a[((a[Z>>0]&1)==0?J:c[L>>2]|0)>>0]|0)){V=113;break a}s=c[e>>2]|0;m=s+12|0;g=c[m>>2]|0;if((g|0)==(c[s+16>>2]|0))Ld[c[(c[s>>2]|0)+40>>2]&511](s)|0;else c[m>>2]=g+1;a[l>>0]=1;s=a[Z>>0]|0;if(!(s&1))m=(s&255)>>>1;else m=c[K>>2]|0;s=v;u=m>>>0>1?Z:u;break b}}if(t)m=(s&255)>>>1;else m=c[N>>2]|0;g=c[e>>2]|0;h=c[g+12>>2]|0;t=(h|0)==(c[g+16>>2]|0);if(!m){if(t){m=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;s=a[Z>>0]|0}else{m=d[h>>0]|0;s=j}if((m&255)<<24>>24!=(a[((s&1)==0?J:c[L>>2]|0)>>0]|0)){s=v;break b}s=c[e>>2]|0;m=s+12|0;g=c[m>>2]|0;if((g|0)==(c[s+16>>2]|0))Ld[c[(c[s>>2]|0)+40>>2]&511](s)|0;else c[m>>2]=g+1;a[l>>0]=1;s=a[Z>>0]|0;if(!(s&1))m=(s&255)>>>1;else m=c[K>>2]|0;s=v;u=m>>>0>1?Z:u;break b}if(t){m=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;s=a[_>>0]|0}else m=d[h>>0]|0;if((m&255)<<24>>24!=(a[((s&1)==0?M:c[H>>2]|0)>>0]|0)){a[l>>0]=1;s=v;break b}s=c[e>>2]|0;m=s+12|0;g=c[m>>2]|0;if((g|0)==(c[s+16>>2]|0))Ld[c[(c[s>>2]|0)+40>>2]&511](s)|0;else c[m>>2]=g+1;s=a[_>>0]|0;if(!(s&1))m=(s&255)>>>1;else m=c[N>>2]|0;s=v;u=m>>>0>1?_:u}break}case 1:{if((G|0)==3){V=250;break a}s=c[e>>2]|0;m=c[s+12>>2]|0;if((m|0)==(c[s+16>>2]|0))s=Ld[c[(c[s>>2]|0)+36>>2]&511](s)|0;else s=d[m>>0]|0;if((s&255)<<24>>24<=-1){V=26;break a}if(!(b[(c[I>>2]|0)+(s<<24>>24<<1)>>1]&8192)){V=26;break a}s=c[e>>2]|0;m=s+12|0;g=c[m>>2]|0;if((g|0)==(c[s+16>>2]|0))s=Ld[c[(c[s>>2]|0)+40>>2]&511](s)|0;else{c[m>>2]=g+1;s=d[g>>0]|0}D3($,s&255);V=27;break}case 4:{q=a[U>>0]|0;h=p;g=p;s=v;t=0;c:while(1){p=c[e>>2]|0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0))if((Ld[c[(c[p>>2]|0)+36>>2]&511](p)|0)==-1){c[e>>2]=0;p=0;break}else{p=c[e>>2]|0;break}}else p=0;while(0);m=(p|0)==0;do if(g){if((c[g+12>>2]|0)!=(c[g+16>>2]|0))if(m){p=h;j=g;break}else{p=h;break c}if((Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0)!=-1)if(m^(h|0)==0){p=h;j=h;break}else{p=h;break c}else{c[f>>2]=0;p=0;V=175;break}}else{p=h;V=175}while(0);if((V|0)==175){V=0;if(m)break;else j=0}m=c[e>>2]|0;g=c[m+12>>2]|0;if((g|0)==(c[m+16>>2]|0))m=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else m=d[g>>0]|0;g=m&255;if(g<<24>>24>-1?(b[(c[I>>2]|0)+(m<<24>>24<<1)>>1]&2048)!=0:0){m=c[o>>2]|0;if((m|0)==(c[O>>2]|0)){wca(n,o,O);m=c[o>>2]|0}c[o>>2]=m+1;a[m>>0]=g;t=t+1|0}else{m=a[Y>>0]|0;if(!(m&1))m=(m&255)>>>1;else m=c[F>>2]|0;if(!((m|0)!=0&(t|0)!=0&g<<24>>24==q<<24>>24))break;if((s|0)==(c[R>>2]|0)){xca(ba,S,R);s=c[S>>2]|0}w=s+4|0;c[S>>2]=w;c[s>>2]=t;s=w;t=0}m=c[e>>2]|0;g=m+12|0;h=c[g>>2]|0;if((h|0)==(c[m+16>>2]|0)){Ld[c[(c[m>>2]|0)+40>>2]&511](m)|0;h=p;g=j;continue}else{c[g>>2]=h+1;h=p;g=j;continue}}if((t|0)!=0?(c[ba>>2]|0)!=(s|0):0){if((s|0)==(c[R>>2]|0)){xca(ba,S,R);s=c[S>>2]|0}w=s+4|0;c[S>>2]=w;c[s>>2]=t;s=w}t=c[Q>>2]|0;if((t|0)>0){m=c[e>>2]|0;do if(m){if((c[m+12>>2]|0)==(c[m+16>>2]|0))if((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1){c[e>>2]=0;m=0;break}else{m=c[e>>2]|0;break}}else m=0;while(0);m=(m|0)==0;do if(p){if((c[p+12>>2]|0)!=(c[p+16>>2]|0))if(m)break;else{V=216;break a}if((Ld[c[(c[p>>2]|0)+36>>2]&511](p)|0)!=-1)if(m^(p|0)==0)break;else{V=216;break a}else{c[f>>2]=0;V=210;break}}else V=210;while(0);if((V|0)==210){V=0;if(m){V=216;break a}else p=0}m=c[e>>2]|0;g=c[m+12>>2]|0;if((g|0)==(c[m+16>>2]|0))m=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else m=d[g>>0]|0;if((m&255)<<24>>24!=(a[P>>0]|0)){V=216;break a}m=c[e>>2]|0;g=m+12|0;h=c[g>>2]|0;if((h|0)==(c[m+16>>2]|0)){Ld[c[(c[m>>2]|0)+40>>2]&511](m)|0;h=p;g=p;j=t}else{c[g>>2]=h+1;h=p;g=p;j=t}while(1){p=c[e>>2]|0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0))if((Ld[c[(c[p>>2]|0)+36>>2]&511](p)|0)==-1){c[e>>2]=0;p=0;break}else{p=c[e>>2]|0;break}}else p=0;while(0);m=(p|0)==0;do if(g){if((c[g+12>>2]|0)!=(c[g+16>>2]|0))if(m){p=h;t=g;break}else{V=237;break a}if((Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0)!=-1)if(m^(h|0)==0){p=h;t=h;break}else{V=237;break a}else{c[f>>2]=0;p=0;V=230;break}}else{p=h;V=230}while(0);if((V|0)==230){V=0;if(m){V=237;break a}else t=0}m=c[e>>2]|0;g=c[m+12>>2]|0;if((g|0)==(c[m+16>>2]|0))m=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else m=d[g>>0]|0;if((m&255)<<24>>24<=-1){V=237;break a}if(!(b[(c[I>>2]|0)+(m<<24>>24<<1)>>1]&2048)){V=237;break a}if((c[o>>2]|0)==(c[O>>2]|0))wca(n,o,O);m=c[e>>2]|0;g=c[m+12>>2]|0;if((g|0)==(c[m+16>>2]|0))m=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else m=d[g>>0]|0;g=c[o>>2]|0;c[o>>2]=g+1;a[g>>0]=m;j=j+-1|0;c[Q>>2]=j;m=c[e>>2]|0;g=m+12|0;h=c[g>>2]|0;if((h|0)==(c[m+16>>2]|0))Ld[c[(c[m>>2]|0)+40>>2]&511](m)|0;else c[g>>2]=h+1;if((j|0)<=0)break;else{h=p;g=t}}}if((c[o>>2]|0)==(c[n>>2]|0)){V=248;break a}break}case 2:{if(!((u|0)!=0|G>>>0<2)){if((G|0)==2)s=(a[E>>0]|0)!=0;else s=0;if(!(x|s)){s=v;u=0;break b}}j=a[aa>>0]|0;r=(j&1)==0;s=r?y:c[z>>2]|0;d:do if((G|0)!=0?(d[T+(G+-1)>>0]|0)<2:0){m=(j&255)>>>1;w=c[z>>2]|0;g=c[A>>2]|0;q=s;while(1){if((q|0)==((r?y:w)+(r?m:g)|0))break;s=a[q>>0]|0;if(s<<24>>24<=-1)break;if(!(b[(c[I>>2]|0)+(s<<24>>24<<1)>>1]&8192))break;else q=q+1|0}h=q-(r?y:w)|0;t=a[$>>0]|0;s=(t&1)==0;if(s)m=(t&255)>>>1;else m=c[D>>2]|0;e:do if(h>>>0<=m>>>0){if(s){m=B;g=(t&255)>>>1;s=$+(((t&255)>>>1)-h)+1|0}else{t=c[C>>2]|0;s=c[D>>2]|0;m=t;g=s;s=t+(s-h)|0}g=m+g|0;if((s|0)==(g|0)){t=p;g=j;m=p;break d}else m=r?y:w;while(1){if((a[s>>0]|0)!=(a[m>>0]|0))break e;s=s+1|0;if((s|0)==(g|0)){t=p;g=j;m=p;break d}else m=m+1|0}}while(0);t=p;g=j;q=r?y:w;m=p}else{t=p;g=j;q=s;m=p}while(0);f:while(1){if(!(g&1)){s=y;p=(g&255)>>>1}else{s=c[z>>2]|0;p=c[A>>2]|0}if((q|0)==(s+p|0)){p=t;break}p=c[e>>2]|0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0))if((Ld[c[(c[p>>2]|0)+36>>2]&511](p)|0)==-1){c[e>>2]=0;p=0;break}else{p=c[e>>2]|0;break}}else p=0;while(0);s=(p|0)==0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(s){p=t;h=m;break}else{p=t;break f}if((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(s^(t|0)==0){p=t;h=t;break}else{p=t;break f}else{c[f>>2]=0;p=0;V=149;break}}else{p=t;V=149}while(0);if((V|0)==149){V=0;if(s)break;else h=0}s=c[e>>2]|0;m=c[s+12>>2]|0;if((m|0)==(c[s+16>>2]|0))s=Ld[c[(c[s>>2]|0)+36>>2]&511](s)|0;else s=d[m>>0]|0;if((s&255)<<24>>24!=(a[q>>0]|0))break;s=c[e>>2]|0;m=s+12|0;g=c[m>>2]|0;if((g|0)==(c[s+16>>2]|0))Ld[c[(c[s>>2]|0)+40>>2]&511](s)|0;else c[m>>2]=g+1;t=p;g=a[aa>>0]|0;q=q+1|0;m=h}if(x){s=a[aa>>0]|0;if(!(s&1)){m=y;s=(s&255)>>>1}else{m=c[z>>2]|0;s=c[A>>2]|0}if((q|0)!=(m+s|0)){V=164;break a}else s=v}else s=v;break}default:s=v}while(0);g:do if((V|0)==27){V=0;if((G|0)==3){V=250;break a}else{g=p;m=p}while(1){p=c[e>>2]|0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0))if((Ld[c[(c[p>>2]|0)+36>>2]&511](p)|0)==-1){c[e>>2]=0;p=0;break}else{p=c[e>>2]|0;break}}else p=0;while(0);s=(p|0)==0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(s){p=g;h=m;break}else{p=g;s=v;break g}if((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(s^(g|0)==0){p=g;h=g;break}else{p=g;s=v;break g}else{c[f>>2]=0;p=0;V=38;break}}else{p=g;V=38}while(0);if((V|0)==38){V=0;if(s){s=v;break g}else h=0}s=c[e>>2]|0;m=c[s+12>>2]|0;if((m|0)==(c[s+16>>2]|0))s=Ld[c[(c[s>>2]|0)+36>>2]&511](s)|0;else s=d[m>>0]|0;if((s&255)<<24>>24<=-1){s=v;break g}if(!(b[(c[I>>2]|0)+(s<<24>>24<<1)>>1]&8192)){s=v;break g}s=c[e>>2]|0;m=s+12|0;g=c[m>>2]|0;if((g|0)==(c[s+16>>2]|0))s=Ld[c[(c[s>>2]|0)+40>>2]&511](s)|0;else{c[m>>2]=g+1;s=d[g>>0]|0}D3($,s&255);g=p;m=h}}while(0);G=G+1|0;if(G>>>0>=4){v=s;V=250;break}else v=s}h:do if((V|0)==26){c[k>>2]=c[k>>2]|4;g=0}else if((V|0)==113){c[k>>2]=c[k>>2]|4;g=0}else if((V|0)==164){c[k>>2]=c[k>>2]|4;g=0}else if((V|0)==216){c[k>>2]=c[k>>2]|4;g=0}else if((V|0)==237){c[k>>2]=c[k>>2]|4;g=0}else if((V|0)==248){c[k>>2]=c[k>>2]|4;g=0}else if((V|0)==250){i:do if(u){r=u+1|0;s=u+8|0;t=u+4|0;h=p;m=p;q=1;j:while(1){p=a[u>>0]|0;if(!(p&1))p=(p&255)>>>1;else p=c[t>>2]|0;if(q>>>0>=p>>>0)break i;p=c[e>>2]|0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0))if((Ld[c[(c[p>>2]|0)+36>>2]&511](p)|0)==-1){c[e>>2]=0;p=0;break}else{p=c[e>>2]|0;break}}else p=0;while(0);g=(p|0)==0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(g){p=h;j=m;break}else break j;if((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(g^(h|0)==0){p=h;j=h;break}else break j;else{c[f>>2]=0;p=0;V=266;break}}else{p=h;V=266}while(0);if((V|0)==266){V=0;if(g)break;else j=0}g=c[e>>2]|0;h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else g=d[h>>0]|0;if(!(a[u>>0]&1))h=r;else h=c[s>>2]|0;if((g&255)<<24>>24!=(a[h+q>>0]|0))break;q=q+1|0;g=c[e>>2]|0;h=g+12|0;m=c[h>>2]|0;if((m|0)==(c[g+16>>2]|0)){Ld[c[(c[g>>2]|0)+40>>2]&511](g)|0;h=p;m=j;continue}else{c[h>>2]=m+1;h=p;m=j;continue}}c[k>>2]=c[k>>2]|4;g=0;break h}while(0);p=c[ba>>2]|0;if((p|0)!=(v|0)?(c[W>>2]=0,Q8(Y,p,v,W),(c[W>>2]|0)!=0):0){c[k>>2]=c[k>>2]|4;g=0}else g=1}while(0);v3($);v3(Z);v3(_);v3(aa);v3(Y);p=c[ba>>2]|0;c[ba>>2]=0;if(!p){i=ca;return g|0}Id[c[X>>2]&511](p);i=ca;return g|0}function N8(a){a=a|0;var b=0;b=kc(8)|0;V2(b,a);xd(b|0,378104,200)}function O8(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=i;i=i+144|0;u=s+24|0;t=s+32|0;q=s+8|0;m=s+16|0;o=s+20|0;l=s+28|0;v=s;c[q>>2]=t;p=q+4|0;c[p>>2]=333;Y3(o,h);d=F9(o,369400)|0;a[l>>0]=0;n=c[f>>2]|0;c[v>>2]=n;h=c[h+4>>2]|0;c[u+0>>2]=c[v+0>>2];if(M8(e,u,g,o,h,j,l,d,q,m,t+100|0)|0){if(!(a[k>>0]&1)){a[k+1>>0]=0;a[k>>0]=0}else{a[c[k+8>>2]>>0]=0;c[k+4>>2]=0}if(a[l>>0]|0)D3(k,Wd[c[(c[d>>2]|0)+28>>2]&511](d,45)|0);h=Wd[c[(c[d>>2]|0)+28>>2]&511](d,48)|0;d=c[q>>2]|0;m=c[m>>2]|0;g=m+-1|0;a:do if(d>>>0>>0){l=d;while(1){d=l+1|0;if((a[l>>0]|0)!=h<<24>>24){d=l;break a}if(d>>>0>>0)l=d;else break}}while(0);yca(k,d,m)|0}d=c[e>>2]|0;do if(d){if((c[d+12>>2]|0)==(c[d+16>>2]|0))if((Ld[c[(c[d>>2]|0)+36>>2]&511](d)|0)==-1){c[e>>2]=0;d=0;break}else{d=c[e>>2]|0;break}}else d=0;while(0);d=(d|0)==0;do if(n){if((c[n+12>>2]|0)!=(c[n+16>>2]|0))if(d)break;else{r=23;break}if((Ld[c[(c[n>>2]|0)+36>>2]&511](n)|0)!=-1)if(d^(n|0)==0)break;else{r=23;break}else{c[f>>2]=0;r=21;break}}else r=21;while(0);if((r|0)==21?d:0)r=23;if((r|0)==23)c[j>>2]=c[j>>2]|2;c[b>>2]=c[e>>2];S2(c[o>>2]|0)|0;d=c[q>>2]|0;c[q>>2]=0;if(!d){i=s;return}Id[c[p>>2]&511](d);i=s;return}function P8(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+112|0;n=x+100|0;o=x+88|0;p=x+76|0;q=x+64|0;r=x+52|0;s=x+48|0;t=x+24|0;u=x+12|0;v=x;w=x+36|0;if(b){b=F9(d,368840)|0;Jd[c[(c[b>>2]|0)+44>>2]&255](n,b);w=c[n>>2]|0;a[e>>0]=w;a[e+1>>0]=w>>8;a[e+2>>0]=w>>16;a[e+3>>0]=w>>24;Jd[c[(c[b>>2]|0)+32>>2]&255](o,b);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}B3(l,0);c[l+0>>2]=c[o+0>>2];c[l+4>>2]=c[o+4>>2];c[l+8>>2]=c[o+8>>2];c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;v3(o);Jd[c[(c[b>>2]|0)+28>>2]&255](p,b);if(!(a[k>>0]&1)){a[k+1>>0]=0;a[k>>0]=0}else{a[c[k+8>>2]>>0]=0;c[k+4>>2]=0}B3(k,0);c[k+0>>2]=c[p+0>>2];c[k+4>>2]=c[p+4>>2];c[k+8>>2]=c[p+8>>2];c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;v3(p);a[f>>0]=Ld[c[(c[b>>2]|0)+12>>2]&511](b)|0;a[g>>0]=Ld[c[(c[b>>2]|0)+16>>2]&511](b)|0;Jd[c[(c[b>>2]|0)+20>>2]&255](q,b);if(!(a[h>>0]&1)){a[h+1>>0]=0;a[h>>0]=0}else{a[c[h+8>>2]>>0]=0;c[h+4>>2]=0}B3(h,0);c[h+0>>2]=c[q+0>>2];c[h+4>>2]=c[q+4>>2];c[h+8>>2]=c[q+8>>2];c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;v3(q);Jd[c[(c[b>>2]|0)+24>>2]&255](r,b);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}B3(j,0);c[j+0>>2]=c[r+0>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;v3(r);g=Ld[c[(c[b>>2]|0)+36>>2]&511](b)|0;c[m>>2]=g;i=x;return}else{b=F9(d,368776)|0;Jd[c[(c[b>>2]|0)+44>>2]&255](s,b);r=c[s>>2]|0;a[e>>0]=r;a[e+1>>0]=r>>8;a[e+2>>0]=r>>16;a[e+3>>0]=r>>24;Jd[c[(c[b>>2]|0)+32>>2]&255](t,b);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}B3(l,0);c[l+0>>2]=c[t+0>>2];c[l+4>>2]=c[t+4>>2];c[l+8>>2]=c[t+8>>2];c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;v3(t);Jd[c[(c[b>>2]|0)+28>>2]&255](u,b);if(!(a[k>>0]&1)){a[k+1>>0]=0;a[k>>0]=0}else{a[c[k+8>>2]>>0]=0;c[k+4>>2]=0}B3(k,0);c[k+0>>2]=c[u+0>>2];c[k+4>>2]=c[u+4>>2];c[k+8>>2]=c[u+8>>2];c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;v3(u);a[f>>0]=Ld[c[(c[b>>2]|0)+12>>2]&511](b)|0;a[g>>0]=Ld[c[(c[b>>2]|0)+16>>2]&511](b)|0;Jd[c[(c[b>>2]|0)+20>>2]&255](v,b);if(!(a[h>>0]&1)){a[h+1>>0]=0;a[h>>0]=0}else{a[c[h+8>>2]>>0]=0;c[h+4>>2]=0}B3(h,0);c[h+0>>2]=c[v+0>>2];c[h+4>>2]=c[v+4>>2];c[h+8>>2]=c[v+8>>2];c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;v3(v);Jd[c[(c[b>>2]|0)+24>>2]&255](w,b);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}B3(j,0);c[j+0>>2]=c[w+0>>2];c[j+4>>2]=c[w+4>>2];c[j+8>>2]=c[w+8>>2];c[w+0>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;v3(w);g=Ld[c[(c[b>>2]|0)+36>>2]&511](b)|0;c[m>>2]=g;i=x;return}}function Q8(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;h=a[b>>0]|0;if(!(h&1))j=(h&255)>>>1;else j=c[b+4>>2]|0;if(!j){i=m;return}if((d|0)!=(e|0)?(g=e+-4|0,g>>>0>d>>>0):0){h=d;do{l=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=l;h=h+4|0;g=g+-4|0}while(h>>>0>>0);g=a[b>>0]|0}else g=h;if(!(g&1)){k=b+1|0;j=(g&255)>>>1}else{k=c[b+8>>2]|0;j=c[b+4>>2]|0}l=e+-4|0;h=a[k>>0]|0;g=h<<24>>24<1|h<<24>>24==127;a:do if(l>>>0>d>>>0){e=k+j|0;b=k;j=d;while(1){if(!g?(h<<24>>24|0)!=(c[j>>2]|0):0)break;b=(e-b|0)>1?b+1|0:b;j=j+4|0;h=a[b>>0]|0;g=h<<24>>24<1|h<<24>>24==127;if(j>>>0>=l>>>0)break a}c[f>>2]=4;i=m;return}while(0);if(g){i=m;return}if(((c[l>>2]|0)+-1|0)>>>0>24>>>0){i=m;return}c[f>>2]=4;i=m;return}function R8(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function S8(a){a=a|0;return}function T8(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=i;i=i+576|0;q=x;l=x+64|0;v=x+56|0;p=x+52|0;t=x+48|0;m=x+564|0;y=x+4|0;o=x+8|0;r=x+464|0;c[v>>2]=l;u=v+4|0;c[u>>2]=333;Y3(t,h);d=F9(t,369392)|0;a[m>>0]=0;c[y>>2]=c[f>>2];h=c[h+4>>2]|0;c[q+0>>2]=c[y+0>>2];do if(U8(e,q,g,t,h,j,m,d,v,p,l+400|0)|0){ce[c[(c[d>>2]|0)+48>>2]&255](d,369096,369106,o)|0;g=c[p>>2]|0;l=c[v>>2]|0;d=g-l|0;if((d|0)>392){d=Afa((d>>2)+2|0)|0;if(!d)vfa();else{s=d;n=d}}else{s=0;n=r}if(!(a[m>>0]|0))d=n;else{a[n>>0]=45;d=n+1|0}if(l>>>0>>0){m=o+40|0;n=o;do{h=c[l>>2]|0;g=o;while(1){if((c[g>>2]|0)==(h|0))break;g=g+4|0;if((g|0)==(m|0)){g=m;break}}a[d>>0]=a[369096+(g-n>>2)>>0]|0;l=l+4|0;d=d+1|0}while(l>>>0<(c[p>>2]|0)>>>0)}a[d>>0]=0;c[q>>2]=k;if((Yda(r,369032,q)|0)==1){Bfa(s);break}else N8(369040)}while(0);d=c[e>>2]|0;do if(d){g=c[d+12>>2]|0;if((g|0)==(c[d+16>>2]|0))d=Ld[c[(c[d>>2]|0)+36>>2]&511](d)|0;else d=c[g>>2]|0;if((d|0)==-1){c[e>>2]=0;h=1;break}else{h=(c[e>>2]|0)==0;break}}else h=1;while(0);d=c[f>>2]|0;do if(d){g=c[d+12>>2]|0;if((g|0)==(c[d+16>>2]|0))d=Ld[c[(c[d>>2]|0)+36>>2]&511](d)|0;else d=c[g>>2]|0;if((d|0)!=-1)if(h)break;else{w=31;break}else{c[f>>2]=0;w=29;break}}else w=29;while(0);if((w|0)==29?h:0)w=31;if((w|0)==31)c[j>>2]=c[j>>2]|2;c[b>>2]=c[e>>2];S2(c[t>>2]|0)|0;d=c[v>>2]|0;c[v>>2]=0;if(!d){i=x;return}Id[c[u>>2]&511](d);i=x;return}function U8(b,e,f,g,h,j,k,l,m,n,o){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;Y=i;i=i+512|0;I=Y+496|0;v=Y+96|0;X=Y+88|0;M=Y+84|0;L=Y+80|0;N=Y+76|0;J=Y+72|0;O=Y+68|0;S=Y+52|0;W=Y+40|0;U=Y+28|0;T=Y+16|0;V=Y+4|0;K=Y;Q=Y+64|0;c[I>>2]=o;c[X>>2]=v;R=X+4|0;c[R>>2]=333;c[M>>2]=v;c[L>>2]=v+400;c[N>>2]=0;c[S+0>>2]=0;c[S+4>>2]=0;c[S+8>>2]=0;c[W+0>>2]=0;c[W+4>>2]=0;c[W+8>>2]=0;c[U+0>>2]=0;c[U+4>>2]=0;c[U+8>>2]=0;c[T+0>>2]=0;c[T+4>>2]=0;c[T+8>>2]=0;c[V+0>>2]=0;c[V+4>>2]=0;c[V+8>>2]=0;W8(f,g,N,J,O,S,W,U,T,K);c[n>>2]=c[m>>2];E=T+4|0;F=T+8|0;G=U+4|0;H=U+8|0;C=(h&512|0)!=0;w=W+4|0;x=W+8|0;y=V+4|0;z=V+8|0;A=N+3|0;B=S+4|0;D=0;u=0;a:while(1){o=c[b>>2]|0;do if(o){f=c[o+12>>2]|0;if((f|0)==(c[o+16>>2]|0))o=Ld[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[f>>2]|0;if((o|0)==-1){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);o=c[e>>2]|0;do if(o){s=c[o+12>>2]|0;if((s|0)==(c[o+16>>2]|0))s=Ld[c[(c[o>>2]|0)+36>>2]&511](o)|0;else s=c[s>>2]|0;if((s|0)!=-1)if(f)break;else{P=267;break a}else{c[e>>2]=0;P=15;break}}else P=15;while(0);if((P|0)==15){P=0;if(f){o=0;P=267;break}else o=0}b:do switch(a[N+D>>0]|0){case 3:{s=a[U>>0]|0;t=(s&1)==0;if(t)g=(s&255)>>>1;else g=c[G>>2]|0;q=a[T>>0]|0;h=(q&1)==0;if(h)f=(q&255)>>>1;else f=c[E>>2]|0;if((g|0)==(0-f|0))f=v;else{if(t)f=(s&255)>>>1;else f=c[G>>2]|0;if(f){if(h)f=(q&255)>>>1;else f=c[E>>2]|0;if(f){f=c[b>>2]|0;g=c[f+12>>2]|0;if((g|0)==(c[f+16>>2]|0)){q=Ld[c[(c[f>>2]|0)+36>>2]&511](f)|0;s=a[U>>0]|0}else q=c[g>>2]|0;f=c[b>>2]|0;g=f+12|0;h=c[g>>2]|0;t=(h|0)==(c[f+16>>2]|0);if((q|0)==(c[((s&1)==0?G:c[H>>2]|0)>>2]|0)){if(t)Ld[c[(c[f>>2]|0)+40>>2]&511](f)|0;else c[g>>2]=h+4;f=a[U>>0]|0;if(!(f&1))s=(f&255)>>>1;else s=c[G>>2]|0;f=v;u=s>>>0>1?U:u;break b}if(t)f=Ld[c[(c[f>>2]|0)+36>>2]&511](f)|0;else f=c[h>>2]|0;if((f|0)!=(c[((a[T>>0]&1)==0?E:c[F>>2]|0)>>2]|0)){P=117;break a}s=c[b>>2]|0;f=s+12|0;g=c[f>>2]|0;if((g|0)==(c[s+16>>2]|0))Ld[c[(c[s>>2]|0)+40>>2]&511](s)|0;else c[f>>2]=g+4;a[k>>0]=1;f=a[T>>0]|0;if(!(f&1))s=(f&255)>>>1;else s=c[E>>2]|0;f=v;u=s>>>0>1?T:u;break b}}if(t)f=(s&255)>>>1;else f=c[G>>2]|0;g=c[b>>2]|0;h=c[g+12>>2]|0;t=(h|0)==(c[g+16>>2]|0);if(!f){if(t){f=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;s=a[T>>0]|0}else{f=c[h>>2]|0;s=q}if((f|0)!=(c[((s&1)==0?E:c[F>>2]|0)>>2]|0)){f=v;break b}s=c[b>>2]|0;f=s+12|0;g=c[f>>2]|0;if((g|0)==(c[s+16>>2]|0))Ld[c[(c[s>>2]|0)+40>>2]&511](s)|0;else c[f>>2]=g+4;a[k>>0]=1;f=a[T>>0]|0;if(!(f&1))s=(f&255)>>>1;else s=c[E>>2]|0;f=v;u=s>>>0>1?T:u;break b}if(t){f=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;s=a[U>>0]|0}else f=c[h>>2]|0;if((f|0)!=(c[((s&1)==0?G:c[H>>2]|0)>>2]|0)){a[k>>0]=1;f=v;break b}s=c[b>>2]|0;f=s+12|0;g=c[f>>2]|0;if((g|0)==(c[s+16>>2]|0))Ld[c[(c[s>>2]|0)+40>>2]&511](s)|0;else c[f>>2]=g+4;f=a[U>>0]|0;if(!(f&1))s=(f&255)>>>1;else s=c[G>>2]|0;f=v;u=s>>>0>1?U:u}break}case 4:{p=c[O>>2]|0;h=o;g=o;f=v;t=0;c:while(1){o=c[b>>2]|0;do if(o){s=c[o+12>>2]|0;if((s|0)==(c[o+16>>2]|0))o=Ld[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[s>>2]|0;if((o|0)==-1){c[b>>2]=0;s=1;break}else{s=(c[b>>2]|0)==0;break}}else s=1;while(0);do if(g){o=c[g+12>>2]|0;if((o|0)==(c[g+16>>2]|0))o=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else o=c[o>>2]|0;if((o|0)!=-1)if(s^(h|0)==0){o=h;q=h;break}else{o=h;break c}else{c[e>>2]=0;o=0;P=188;break}}else{o=h;P=188}while(0);if((P|0)==188){P=0;if(s)break;else q=0}s=c[b>>2]|0;g=c[s+12>>2]|0;if((g|0)==(c[s+16>>2]|0))g=Ld[c[(c[s>>2]|0)+36>>2]&511](s)|0;else g=c[g>>2]|0;if(Od[c[(c[l>>2]|0)+12>>2]&255](l,2048,g)|0){s=c[n>>2]|0;if((s|0)==(c[I>>2]|0)){zca(m,n,I);s=c[n>>2]|0}c[n>>2]=s+4;c[s>>2]=g;t=t+1|0}else{s=a[S>>0]|0;if(!(s&1))s=(s&255)>>>1;else s=c[B>>2]|0;if(!((s|0)!=0&(t|0)!=0&(g|0)==(p|0)))break;if((f|0)==(c[L>>2]|0)){xca(X,M,L);f=c[M>>2]|0}v=f+4|0;c[M>>2]=v;c[f>>2]=t;f=v;t=0}s=c[b>>2]|0;g=s+12|0;h=c[g>>2]|0;if((h|0)==(c[s+16>>2]|0)){Ld[c[(c[s>>2]|0)+40>>2]&511](s)|0;h=o;g=q;continue}else{c[g>>2]=h+4;h=o;g=q;continue}}if((t|0)!=0?(c[X>>2]|0)!=(f|0):0){if((f|0)==(c[L>>2]|0)){xca(X,M,L);f=c[M>>2]|0}v=f+4|0;c[M>>2]=v;c[f>>2]=t;f=v}t=c[K>>2]|0;if((t|0)>0){s=c[b>>2]|0;do if(s){g=c[s+12>>2]|0;if((g|0)==(c[s+16>>2]|0))s=Ld[c[(c[s>>2]|0)+36>>2]&511](s)|0;else s=c[g>>2]|0;if((s|0)==-1){c[b>>2]=0;g=1;break}else{g=(c[b>>2]|0)==0;break}}else g=1;while(0);do if(o){s=c[o+12>>2]|0;if((s|0)==(c[o+16>>2]|0))s=Ld[c[(c[o>>2]|0)+36>>2]&511](o)|0;else s=c[s>>2]|0;if((s|0)!=-1)if(g)break;else{P=231;break a}else{c[e>>2]=0;P=225;break}}else P=225;while(0);if((P|0)==225){P=0;if(g){P=231;break a}else o=0}s=c[b>>2]|0;g=c[s+12>>2]|0;if((g|0)==(c[s+16>>2]|0))s=Ld[c[(c[s>>2]|0)+36>>2]&511](s)|0;else s=c[g>>2]|0;if((s|0)!=(c[J>>2]|0)){P=231;break a}s=c[b>>2]|0;g=s+12|0;h=c[g>>2]|0;if((h|0)==(c[s+16>>2]|0)){Ld[c[(c[s>>2]|0)+40>>2]&511](s)|0;h=o;g=o;q=t}else{c[g>>2]=h+4;h=o;g=o;q=t}while(1){o=c[b>>2]|0;do if(o){s=c[o+12>>2]|0;if((s|0)==(c[o+16>>2]|0))o=Ld[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[s>>2]|0;if((o|0)==-1){c[b>>2]=0;s=1;break}else{s=(c[b>>2]|0)==0;break}}else s=1;while(0);do if(g){o=c[g+12>>2]|0;if((o|0)==(c[g+16>>2]|0))o=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else o=c[o>>2]|0;if((o|0)!=-1)if(s^(h|0)==0){o=h;t=h;break}else{P=254;break a}else{c[e>>2]=0;o=0;P=248;break}}else{o=h;P=248}while(0);if((P|0)==248){P=0;if(s){P=254;break a}else t=0}s=c[b>>2]|0;g=c[s+12>>2]|0;if((g|0)==(c[s+16>>2]|0))s=Ld[c[(c[s>>2]|0)+36>>2]&511](s)|0;else s=c[g>>2]|0;if(!(Od[c[(c[l>>2]|0)+12>>2]&255](l,2048,s)|0)){P=254;break a}if((c[n>>2]|0)==(c[I>>2]|0))zca(m,n,I);s=c[b>>2]|0;g=c[s+12>>2]|0;if((g|0)==(c[s+16>>2]|0))s=Ld[c[(c[s>>2]|0)+36>>2]&511](s)|0;else s=c[g>>2]|0;g=c[n>>2]|0;c[n>>2]=g+4;c[g>>2]=s;q=q+-1|0;c[K>>2]=q;s=c[b>>2]|0;g=s+12|0;h=c[g>>2]|0;if((h|0)==(c[s+16>>2]|0))Ld[c[(c[s>>2]|0)+40>>2]&511](s)|0;else c[g>>2]=h+4;if((q|0)<=0)break;else{h=o;g=t}}}if((c[n>>2]|0)==(c[m>>2]|0)){P=265;break a}break}case 0:{P=29;break}case 1:{if((D|0)==3){P=267;break a}f=c[b>>2]|0;g=c[f+12>>2]|0;if((g|0)==(c[f+16>>2]|0))f=Ld[c[(c[f>>2]|0)+36>>2]&511](f)|0;else f=c[g>>2]|0;if(!(Od[c[(c[l>>2]|0)+12>>2]&255](l,8192,f)|0)){P=28;break a}s=c[b>>2]|0;f=s+12|0;g=c[f>>2]|0;if((g|0)==(c[s+16>>2]|0))f=Ld[c[(c[s>>2]|0)+40>>2]&511](s)|0;else{c[f>>2]=g+4;f=c[g>>2]|0}P3(V,f);P=29;break}case 2:{if(!((u|0)!=0|D>>>0<2)){if((D|0)==2)f=(a[A>>0]|0)!=0;else f=0;if(!(C|f)){f=v;u=0;break b}}s=a[W>>0]|0;f=(s&1)==0?w:c[x>>2]|0;d:do if((D|0)!=0?(d[N+(D+-1)>>0]|0)<2:0){r=f;while(1){if(!(s&1)){f=w;g=(s&255)>>>1}else{f=c[x>>2]|0;g=c[w>>2]|0}if((r|0)==(f+(g<<2)|0))break;if(!(Od[c[(c[l>>2]|0)+12>>2]&255](l,8192,c[r>>2]|0)|0)){P=129;break}s=a[W>>0]|0;r=r+4|0}if((P|0)==129){P=0;s=a[W>>0]|0}p=(s&1)==0;t=r-(p?w:c[x>>2]|0)>>2;q=a[V>>0]|0;f=(q&1)==0;if(f)g=(q&255)>>>1;else g=c[y>>2]|0;e:do if(t>>>0<=g>>>0){if(f){g=y;h=(q&255)>>>1;f=y+(((q&255)>>>1)-t<<2)|0}else{q=c[z>>2]|0;f=c[y>>2]|0;g=q;h=f;f=q+(f-t<<2)|0}h=g+(h<<2)|0;if((f|0)==(h|0)){t=o;g=o;break d}else g=p?w:c[x>>2]|0;while(1){if((c[f>>2]|0)!=(c[g>>2]|0))break e;f=f+4|0;if((f|0)==(h|0)){t=o;g=o;break d}else g=g+4|0}}while(0);t=o;r=p?w:c[x>>2]|0;g=o}else{t=o;r=f;g=o}while(0);f:while(1){if(!(s&1)){f=w;o=(s&255)>>>1}else{f=c[x>>2]|0;o=c[w>>2]|0}if((r|0)==(f+(o<<2)|0)){o=t;break}o=c[b>>2]|0;do if(o){s=c[o+12>>2]|0;if((s|0)==(c[o+16>>2]|0))o=Ld[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[s>>2]|0;if((o|0)==-1){c[b>>2]=0;s=1;break}else{s=(c[b>>2]|0)==0;break}}else s=1;while(0);do if(g){o=c[g+12>>2]|0;if((o|0)==(c[g+16>>2]|0))o=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else o=c[o>>2]|0;if((o|0)!=-1)if(s^(t|0)==0){o=t;h=t;break}else{o=t;break f}else{c[e>>2]=0;o=0;P=159;break}}else{o=t;P=159}while(0);if((P|0)==159){P=0;if(s)break;else h=0}s=c[b>>2]|0;f=c[s+12>>2]|0;if((f|0)==(c[s+16>>2]|0))s=Ld[c[(c[s>>2]|0)+36>>2]&511](s)|0;else s=c[f>>2]|0;if((s|0)!=(c[r>>2]|0))break;s=c[b>>2]|0;f=s+12|0;g=c[f>>2]|0;if((g|0)==(c[s+16>>2]|0))Ld[c[(c[s>>2]|0)+40>>2]&511](s)|0;else c[f>>2]=g+4;t=o;s=a[W>>0]|0;r=r+4|0;g=h}if(C){s=a[W>>0]|0;if(!(s&1)){f=w;s=(s&255)>>>1}else{f=c[x>>2]|0;s=c[w>>2]|0}if((r|0)!=(f+(s<<2)|0)){P=174;break a}else f=v}else f=v;break}default:f=v}while(0);g:do if((P|0)==29){P=0;if((D|0)==3){P=267;break a}else{g=o;f=o}while(1){o=c[b>>2]|0;do if(o){s=c[o+12>>2]|0;if((s|0)==(c[o+16>>2]|0))o=Ld[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[s>>2]|0;if((o|0)==-1){c[b>>2]=0;s=1;break}else{s=(c[b>>2]|0)==0;break}}else s=1;while(0);do if(f){o=c[f+12>>2]|0;if((o|0)==(c[f+16>>2]|0))o=Ld[c[(c[f>>2]|0)+36>>2]&511](f)|0;else o=c[o>>2]|0;if((o|0)!=-1)if(s^(g|0)==0){o=g;h=g;break}else{o=g;f=v;break g}else{c[e>>2]=0;o=0;P=43;break}}else{o=g;P=43}while(0);if((P|0)==43){P=0;if(s){f=v;break g}else h=0}s=c[b>>2]|0;f=c[s+12>>2]|0;if((f|0)==(c[s+16>>2]|0))s=Ld[c[(c[s>>2]|0)+36>>2]&511](s)|0;else s=c[f>>2]|0;if(!(Od[c[(c[l>>2]|0)+12>>2]&255](l,8192,s)|0)){f=v;break g}s=c[b>>2]|0;f=s+12|0;g=c[f>>2]|0;if((g|0)==(c[s+16>>2]|0))s=Ld[c[(c[s>>2]|0)+40>>2]&511](s)|0;else{c[f>>2]=g+4;s=c[g>>2]|0}P3(V,s);g=o;f=h}}while(0);D=D+1|0;if(D>>>0>=4){v=f;P=267;break}else v=f}h:do if((P|0)==28){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==117){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==174){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==231){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==254){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==265){c[j>>2]=c[j>>2]|4;g=0}else if((P|0)==267){i:do if(u){s=u+4|0;t=u+8|0;r=o;h=o;p=1;j:while(1){o=a[u>>0]|0;if(!(o&1))o=(o&255)>>>1;else o=c[s>>2]|0;if(p>>>0>=o>>>0)break i;o=c[b>>2]|0;do if(o){g=c[o+12>>2]|0;if((g|0)==(c[o+16>>2]|0))o=Ld[c[(c[o>>2]|0)+36>>2]&511](o)|0;else o=c[g>>2]|0;if((o|0)==-1){c[b>>2]=0;f=1;break}else{f=(c[b>>2]|0)==0;break}}else f=1;while(0);do if(h){o=c[h+12>>2]|0;if((o|0)==(c[h+16>>2]|0))o=Ld[c[(c[h>>2]|0)+36>>2]&511](h)|0;else o=c[o>>2]|0;if((o|0)!=-1)if(f^(r|0)==0){o=r;q=r;break}else break j;else{c[e>>2]=0;o=0;P=286;break}}else{o=r;P=286}while(0);if((P|0)==286){P=0;if(f)break;else q=0}g=c[b>>2]|0;h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else g=c[h>>2]|0;if(!(a[u>>0]&1))h=s;else h=c[t>>2]|0;if((g|0)!=(c[h+(p<<2)>>2]|0))break;p=p+1|0;g=c[b>>2]|0;h=g+12|0;f=c[h>>2]|0;if((f|0)==(c[g+16>>2]|0)){Ld[c[(c[g>>2]|0)+40>>2]&511](g)|0;r=o;h=q;continue}else{c[h>>2]=f+4;r=o;h=q;continue}}c[j>>2]=c[j>>2]|4;g=0;break h}while(0);o=c[X>>2]|0;if((o|0)!=(v|0)?(c[Q>>2]=0,Q8(S,o,v,Q),(c[Q>>2]|0)!=0):0){c[j>>2]=c[j>>2]|4;g=0}else g=1}while(0);L3(V);L3(T);L3(U);L3(W);v3(S);o=c[X>>2]|0;c[X>>2]=0;if(!o){i=Y;return g|0}Id[c[R>>2]&511](o);i=Y;return g|0}function V8(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=i;i=i+432|0;u=s+420|0;t=s;q=s+400|0;m=s+408|0;o=s+412|0;l=s+424|0;v=s+416|0;c[q>>2]=t;p=q+4|0;c[p>>2]=333;Y3(o,h);d=F9(o,369392)|0;a[l>>0]=0;n=c[f>>2]|0;c[v>>2]=n;h=c[h+4>>2]|0;c[u+0>>2]=c[v+0>>2];if(U8(e,u,g,o,h,j,l,d,q,m,t+400|0)|0){if(!(a[k>>0]&1)){c[k+4>>2]=0;a[k>>0]=0}else{c[c[k+8>>2]>>2]=0;c[k+4>>2]=0}if(a[l>>0]|0)P3(k,Wd[c[(c[d>>2]|0)+44>>2]&511](d,45)|0);h=Wd[c[(c[d>>2]|0)+44>>2]&511](d,48)|0;d=c[q>>2]|0;m=c[m>>2]|0;g=m+-4|0;a:do if(d>>>0>>0){l=d;while(1){d=l+4|0;if((c[l>>2]|0)!=(h|0)){d=l;break a}if(d>>>0>>0)l=d;else break}}while(0);Aca(k,d,m)|0}d=c[e>>2]|0;do if(d){l=c[d+12>>2]|0;if((l|0)==(c[d+16>>2]|0))d=Ld[c[(c[d>>2]|0)+36>>2]&511](d)|0;else d=c[l>>2]|0;if((d|0)==-1){c[e>>2]=0;l=1;break}else{l=(c[e>>2]|0)==0;break}}else l=1;while(0);do if(n){d=c[n+12>>2]|0;if((d|0)==(c[n+16>>2]|0))d=Ld[c[(c[n>>2]|0)+36>>2]&511](n)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(l)break;else{r=26;break}else{c[f>>2]=0;r=24;break}}else r=24;while(0);if((r|0)==24?l:0)r=26;if((r|0)==26)c[j>>2]=c[j>>2]|2;c[b>>2]=c[e>>2];S2(c[o>>2]|0)|0;d=c[q>>2]|0;c[q>>2]=0;if(!d){i=s;return}Id[c[p>>2]&511](d);i=s;return}function W8(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+112|0;n=x+100|0;o=x+88|0;p=x+76|0;q=x+64|0;r=x+52|0;s=x+48|0;t=x+24|0;u=x+12|0;v=x;w=x+36|0;if(b){b=F9(d,368968)|0;Jd[c[(c[b>>2]|0)+44>>2]&255](n,b);w=c[n>>2]|0;a[e>>0]=w;a[e+1>>0]=w>>8;a[e+2>>0]=w>>16;a[e+3>>0]=w>>24;Jd[c[(c[b>>2]|0)+32>>2]&255](o,b);if(!(a[l>>0]&1)){c[l+4>>2]=0;a[l>>0]=0}else{c[c[l+8>>2]>>2]=0;c[l+4>>2]=0}O3(l,0);c[l+0>>2]=c[o+0>>2];c[l+4>>2]=c[o+4>>2];c[l+8>>2]=c[o+8>>2];c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;L3(o);Jd[c[(c[b>>2]|0)+28>>2]&255](p,b);if(!(a[k>>0]&1)){c[k+4>>2]=0;a[k>>0]=0}else{c[c[k+8>>2]>>2]=0;c[k+4>>2]=0}O3(k,0);c[k+0>>2]=c[p+0>>2];c[k+4>>2]=c[p+4>>2];c[k+8>>2]=c[p+8>>2];c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;L3(p);c[f>>2]=Ld[c[(c[b>>2]|0)+12>>2]&511](b)|0;c[g>>2]=Ld[c[(c[b>>2]|0)+16>>2]&511](b)|0;Jd[c[(c[b>>2]|0)+20>>2]&255](q,b);if(!(a[h>>0]&1)){a[h+1>>0]=0;a[h>>0]=0}else{a[c[h+8>>2]>>0]=0;c[h+4>>2]=0}B3(h,0);c[h+0>>2]=c[q+0>>2];c[h+4>>2]=c[q+4>>2];c[h+8>>2]=c[q+8>>2];c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;v3(q);Jd[c[(c[b>>2]|0)+24>>2]&255](r,b);if(!(a[j>>0]&1)){c[j+4>>2]=0;a[j>>0]=0}else{c[c[j+8>>2]>>2]=0;c[j+4>>2]=0}O3(j,0);c[j+0>>2]=c[r+0>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;L3(r);g=Ld[c[(c[b>>2]|0)+36>>2]&511](b)|0;c[m>>2]=g;i=x;return}else{b=F9(d,368904)|0;Jd[c[(c[b>>2]|0)+44>>2]&255](s,b);r=c[s>>2]|0;a[e>>0]=r;a[e+1>>0]=r>>8;a[e+2>>0]=r>>16;a[e+3>>0]=r>>24;Jd[c[(c[b>>2]|0)+32>>2]&255](t,b);if(!(a[l>>0]&1)){c[l+4>>2]=0;a[l>>0]=0}else{c[c[l+8>>2]>>2]=0;c[l+4>>2]=0}O3(l,0);c[l+0>>2]=c[t+0>>2];c[l+4>>2]=c[t+4>>2];c[l+8>>2]=c[t+8>>2];c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;L3(t);Jd[c[(c[b>>2]|0)+28>>2]&255](u,b);if(!(a[k>>0]&1)){c[k+4>>2]=0;a[k>>0]=0}else{c[c[k+8>>2]>>2]=0;c[k+4>>2]=0}O3(k,0);c[k+0>>2]=c[u+0>>2];c[k+4>>2]=c[u+4>>2];c[k+8>>2]=c[u+8>>2];c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;L3(u);c[f>>2]=Ld[c[(c[b>>2]|0)+12>>2]&511](b)|0;c[g>>2]=Ld[c[(c[b>>2]|0)+16>>2]&511](b)|0;Jd[c[(c[b>>2]|0)+20>>2]&255](v,b);if(!(a[h>>0]&1)){a[h+1>>0]=0;a[h>>0]=0}else{a[c[h+8>>2]>>0]=0;c[h+4>>2]=0}B3(h,0);c[h+0>>2]=c[v+0>>2];c[h+4>>2]=c[v+4>>2];c[h+8>>2]=c[v+8>>2];c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;v3(v);Jd[c[(c[b>>2]|0)+24>>2]&255](w,b);if(!(a[j>>0]&1)){c[j+4>>2]=0;a[j>>0]=0}else{c[c[j+8>>2]>>2]=0;c[j+4>>2]=0}O3(j,0);c[j+0>>2]=c[w+0>>2];c[j+4>>2]=c[w+4>>2];c[j+8>>2]=c[w+8>>2];c[w+0>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;L3(w);g=Ld[c[(c[b>>2]|0)+36>>2]&511](b)|0;c[m>>2]=g;i=x;return}}function X8(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function Y8(a){a=a|0;return}function Z8(b,d,e,f,g,j,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;l=+l;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;D=i;i=i+384|0;s=D;d=D+272|0;o=D+48|0;m=D+172|0;w=D+56|0;z=D+52|0;u=D+372|0;C=D+373|0;v=D+60|0;B=D+28|0;A=D+16|0;p=D+12|0;r=D+72|0;y=D+8|0;x=D+40|0;t=D+44|0;c[o>>2]=d;h[k>>3]=l;c[s>>2]=c[k>>2];c[s+4>>2]=c[k+4>>2];d=ega(d,100,369152,s)|0;if(d>>>0>99){d=T5()|0;h[k>>3]=l;c[s>>2]=c[k>>2];c[s+4>>2]=c[k+4>>2];d=sca(o,d,369152,s)|0;m=c[o>>2]|0;if(!m)vfa();n=Afa(d)|0;if(!n)vfa();else{F=n;G=m;H=n;J=d}}else{F=0;G=0;H=m;J=d}Y3(w,g);q=F9(w,369400)|0;n=c[o>>2]|0;ce[c[(c[q>>2]|0)+32>>2]&255](q,n,n+J|0,H)|0;if(!J)o=0;else o=(a[c[o>>2]>>0]|0)==45;c[z>>2]=0;c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[B+0>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;_8(f,o,w,z,u,C,v,B,A,p);n=c[p>>2]|0;if((J|0)>(n|0)){d=a[A>>0]|0;if(!(d&1))m=(d&255)>>>1;else m=c[A+4>>2]|0;d=a[B>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[B+4>>2]|0;d=m+(J-n<<1|1)+d|0}else{d=a[A>>0]|0;if(!(d&1))m=(d&255)>>>1;else m=c[A+4>>2]|0;d=a[B>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[B+4>>2]|0;d=m+2+d|0}d=d+n|0;if(d>>>0>100){d=Afa(d)|0;if(!d)vfa();else{E=d;I=d}}else{E=0;I=r}$8(I,y,x,c[g+4>>2]|0,H,H+J|0,q,o,z,a[u>>0]|0,a[C>>0]|0,v,B,A,n);c[t>>2]=c[e>>2];J=c[y>>2]|0;e=c[x>>2]|0;c[s+0>>2]=c[t+0>>2];Ie(b,s,I,J,e,g,j);Bfa(E);v3(A);v3(B);v3(v);S2(c[w>>2]|0)|0;Bfa(F);Bfa(G);i=D;return}function _8(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+112|0;n=z+108|0;o=z+96|0;r=z+92|0;s=z+80|0;t=z+68|0;u=z+56|0;v=z+52|0;w=z+28|0;x=z+24|0;y=z+12|0;p=z;q=z+40|0;if(b){b=F9(e,368840)|0;e=c[b>>2]|0;if(d){Jd[c[e+44>>2]&255](n,b);d=c[n>>2]|0;a[f>>0]=d;a[f+1>>0]=d>>8;a[f+2>>0]=d>>16;a[f+3>>0]=d>>24;Jd[c[(c[b>>2]|0)+32>>2]&255](o,b);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}B3(l,0);c[l+0>>2]=c[o+0>>2];c[l+4>>2]=c[o+4>>2];c[l+8>>2]=c[o+8>>2];c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;v3(o)}else{Jd[c[e+40>>2]&255](r,b);d=c[r>>2]|0;a[f>>0]=d;a[f+1>>0]=d>>8;a[f+2>>0]=d>>16;a[f+3>>0]=d>>24;Jd[c[(c[b>>2]|0)+28>>2]&255](s,b);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}B3(l,0);c[l+0>>2]=c[s+0>>2];c[l+4>>2]=c[s+4>>2];c[l+8>>2]=c[s+8>>2];c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;v3(s)}a[g>>0]=Ld[c[(c[b>>2]|0)+12>>2]&511](b)|0;a[h>>0]=Ld[c[(c[b>>2]|0)+16>>2]&511](b)|0;Jd[c[(c[b>>2]|0)+20>>2]&255](t,b);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}B3(j,0);c[j+0>>2]=c[t+0>>2];c[j+4>>2]=c[t+4>>2];c[j+8>>2]=c[t+8>>2];c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;v3(t);Jd[c[(c[b>>2]|0)+24>>2]&255](u,b);if(!(a[k>>0]&1)){a[k+1>>0]=0;a[k>>0]=0}else{a[c[k+8>>2]>>0]=0;c[k+4>>2]=0}B3(k,0);c[k+0>>2]=c[u+0>>2];c[k+4>>2]=c[u+4>>2];c[k+8>>2]=c[u+8>>2];c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;v3(u);h=Ld[c[(c[b>>2]|0)+36>>2]&511](b)|0;c[m>>2]=h;i=z;return}else{b=F9(e,368776)|0;e=c[b>>2]|0;if(d){Jd[c[e+44>>2]&255](v,b);d=c[v>>2]|0;a[f>>0]=d;a[f+1>>0]=d>>8;a[f+2>>0]=d>>16;a[f+3>>0]=d>>24;Jd[c[(c[b>>2]|0)+32>>2]&255](w,b);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}B3(l,0);c[l+0>>2]=c[w+0>>2];c[l+4>>2]=c[w+4>>2];c[l+8>>2]=c[w+8>>2];c[w+0>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;v3(w)}else{Jd[c[e+40>>2]&255](x,b);d=c[x>>2]|0;a[f>>0]=d;a[f+1>>0]=d>>8;a[f+2>>0]=d>>16;a[f+3>>0]=d>>24;Jd[c[(c[b>>2]|0)+28>>2]&255](y,b);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}B3(l,0);c[l+0>>2]=c[y+0>>2];c[l+4>>2]=c[y+4>>2];c[l+8>>2]=c[y+8>>2];c[y+0>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;v3(y)}a[g>>0]=Ld[c[(c[b>>2]|0)+12>>2]&511](b)|0;a[h>>0]=Ld[c[(c[b>>2]|0)+16>>2]&511](b)|0;Jd[c[(c[b>>2]|0)+20>>2]&255](p,b);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}B3(j,0);c[j+0>>2]=c[p+0>>2];c[j+4>>2]=c[p+4>>2];c[j+8>>2]=c[p+8>>2];c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;v3(p);Jd[c[(c[b>>2]|0)+24>>2]&255](q,b);if(!(a[k>>0]&1)){a[k+1>>0]=0;a[k>>0]=0}else{a[c[k+8>>2]>>0]=0;c[k+4>>2]=0}B3(k,0);c[k+0>>2]=c[q+0>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;v3(q);h=Ld[c[(c[b>>2]|0)+36>>2]&511](b)|0;c[m>>2]=h;i=z;return}}function $8(d,e,f,g,h,j,k,l,m,n,o,p,q,r,s){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;var t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;R=i;c[f>>2]=d;u=r+1|0;P=r+8|0;Q=r+4|0;I=(g&512|0)==0;J=q+1|0;K=q+8|0;L=q+4|0;M=(s|0)>0;N=p+1|0;D=p+8|0;E=p+4|0;F=k+8|0;G=0-s|0;C=0;do{switch(a[m+C>>0]|0){case 1:{c[e>>2]=c[f>>2];y=Wd[c[(c[k>>2]|0)+28>>2]&511](k,32)|0;B=c[f>>2]|0;c[f>>2]=B+1;a[B>>0]=y;break}case 0:{c[e>>2]=c[f>>2];break}case 4:{v=c[f>>2]|0;h=l?h+1|0:h;a:do if(h>>>0>>0){x=h;while(1){w=a[x>>0]|0;if(w<<24>>24<=-1)break a;t=x+1|0;if(!(b[(c[F>>2]|0)+(w<<24>>24<<1)>>1]&2048))break a;if(t>>>0>>0)x=t;else{x=t;break}}}else x=h;while(0);t=x;if(M){if(x>>>0>h>>>0){B=h-t|0;B=B>>>0>>0?G:B;t=B+s|0;A=v;w=x;y=s;while(1){z=w+-1|0;w=a[z>>0]|0;c[f>>2]=A+1;a[A>>0]=w;y=y+-1|0;w=(y|0)>0;if(!(z>>>0>h>>>0&w))break;A=c[f>>2]|0;w=z}x=x+B|0;if(w)O=32;else{z=0;w=t}}else{t=s;O=32}if((O|0)==32){O=0;z=Wd[c[(c[k>>2]|0)+28>>2]&511](k,48)|0;w=t}t=c[f>>2]|0;c[f>>2]=t+1;if((w|0)>0)do{a[t>>0]=z;w=w+-1|0;t=c[f>>2]|0;c[f>>2]=t+1}while((w|0)>0);a[t>>0]=n}if((x|0)==(h|0)){y=Wd[c[(c[k>>2]|0)+28>>2]&511](k,48)|0;B=c[f>>2]|0;c[f>>2]=B+1;a[B>>0]=y}else{t=a[p>>0]|0;w=(t&1)==0;if(w)t=(t&255)>>>1;else t=c[E>>2]|0;if(!t){y=-1;t=0;w=0}else{if(w)t=N;else t=c[D>>2]|0;y=a[t>>0]|0;t=0;w=0}while(1){if((w|0)==(y|0)){z=c[f>>2]|0;c[f>>2]=z+1;a[z>>0]=o;z=t+1|0;t=a[p>>0]|0;w=(t&1)==0;if(w)t=(t&255)>>>1;else t=c[E>>2]|0;if(z>>>0>>0){if(w)t=N;else t=c[D>>2]|0;if((a[t+z>>0]|0)==127){y=-1;t=z;w=0}else{if(w)t=N;else t=c[D>>2]|0;y=a[t+z>>0]|0;t=z;w=0}}else{t=z;w=0}}x=x+-1|0;A=a[x>>0]|0;B=c[f>>2]|0;c[f>>2]=B+1;a[B>>0]=A;if((x|0)==(h|0))break;else w=w+1|0}}t=c[f>>2]|0;if((v|0)!=(t|0)?(H=t+-1|0,H>>>0>v>>>0):0){t=H;do{B=a[v>>0]|0;a[v>>0]=a[t>>0]|0;a[t>>0]=B;v=v+1|0;t=t+-1|0}while(v>>>0>>0)}break}case 2:{w=a[q>>0]|0;v=(w&1)==0;if(v)t=(w&255)>>>1;else t=c[L>>2]|0;if(!((t|0)==0|I)){if(v){t=J;v=(w&255)>>>1}else{t=c[K>>2]|0;v=c[L>>2]|0}x=t+v|0;v=c[f>>2]|0;if((t|0)!=(x|0))do{a[v>>0]=a[t>>0]|0;t=t+1|0;v=v+1|0}while((t|0)!=(x|0));c[f>>2]=v}break}case 3:{v=a[r>>0]|0;t=(v&1)==0;if(t)v=(v&255)>>>1;else v=c[Q>>2]|0;if(v){if(t)v=u;else v=c[P>>2]|0;y=a[v>>0]|0;B=c[f>>2]|0;c[f>>2]=B+1;a[B>>0]=y}break}default:{}}C=C+1|0}while((C|0)!=4);v=a[r>>0]|0;h=(v&1)==0;if(h)t=(v&255)>>>1;else t=c[Q>>2]|0;if(t>>>0>1){if(h)h=(v&255)>>>1;else{u=c[P>>2]|0;h=c[Q>>2]|0}t=u+1|0;u=u+h|0;h=c[f>>2]|0;if((t|0)!=(u|0))do{a[h>>0]=a[t>>0]|0;t=t+1|0;h=h+1|0}while((t|0)!=(u|0));c[f>>2]=h}h=g&176;if((h|0)==16){i=R;return}else if((h|0)==32){c[e>>2]=c[f>>2];i=R;return}else{c[e>>2]=d;i=R;return}}function a9(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;B=i;i=i+176|0;p=B+60|0;u=B+52|0;x=B+56|0;s=B+164|0;A=B+165|0;t=B+40|0;z=B+28|0;y=B+12|0;l=B+8|0;o=B+64|0;w=B+4|0;v=B;q=B+24|0;Y3(u,g);r=F9(u,369400)|0;d=a[j>>0]|0;k=(d&1)==0;if(k)d=(d&255)>>>1;else d=c[j+4>>2]|0;if(!d)n=0;else{if(k)d=j+1|0;else d=c[j+8>>2]|0;n=a[d>>0]|0;n=n<<24>>24==(Wd[c[(c[r>>2]|0)+28>>2]&511](r,45)|0)<<24>>24}c[x>>2]=0;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[y+0>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;_8(f,n,u,x,s,A,t,z,y,l);m=a[j>>0]|0;d=(m&1)==0;if(d)k=(m&255)>>>1;else k=c[j+4>>2]|0;l=c[l>>2]|0;if((k|0)>(l|0)){if(d)f=(m&255)>>>1;else f=c[j+4>>2]|0;d=a[y>>0]|0;if(!(d&1))k=(d&255)>>>1;else k=c[y+4>>2]|0;d=a[z>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[z+4>>2]|0;d=k+(f-l<<1|1)+d|0}else{d=a[y>>0]|0;if(!(d&1))k=(d&255)>>>1;else k=c[y+4>>2]|0;d=a[z>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[z+4>>2]|0;d=k+2+d|0}d=d+l|0;if(d>>>0>100){d=Afa(d)|0;if(!d)vfa();else{C=d;D=d}}else{C=0;D=o}if(!(m&1)){k=j+1|0;d=(m&255)>>>1}else{k=c[j+8>>2]|0;d=c[j+4>>2]|0}$8(D,w,v,c[g+4>>2]|0,k,k+d|0,r,n,x,a[s>>0]|0,a[A>>0]|0,t,z,y,l);c[q>>2]=c[e>>2];A=c[w>>2]|0;e=c[v>>2]|0;c[p+0>>2]=c[q+0>>2];Ie(b,p,D,A,e,g,h);Bfa(C);v3(y);v3(z);v3(t);S2(c[u>>2]|0)|0;i=B;return}function b9(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function c9(a){a=a|0;return}function d9(b,d,e,f,g,j,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;l=+l;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;D=i;i=i+992|0;s=D;d=D+888|0;o=D+872|0;m=D+472|0;w=D+464|0;z=D+460|0;u=D+456|0;C=D+452|0;v=D+876|0;B=D+432|0;A=D+420|0;p=D+416|0;r=D+16|0;y=D+8|0;x=D+444|0;t=D+448|0;c[o>>2]=d;h[k>>3]=l;c[s>>2]=c[k>>2];c[s+4>>2]=c[k+4>>2];d=ega(d,100,369152,s)|0;if(d>>>0>99){d=T5()|0;h[k>>3]=l;c[s>>2]=c[k>>2];c[s+4>>2]=c[k+4>>2];d=sca(o,d,369152,s)|0;m=c[o>>2]|0;if(!m)vfa();n=Afa(d<<2)|0;if(!n)vfa();else{F=n;G=m;H=n;J=d}}else{F=0;G=0;H=m;J=d}Y3(w,g);q=F9(w,369392)|0;n=c[o>>2]|0;ce[c[(c[q>>2]|0)+48>>2]&255](q,n,n+J|0,H)|0;if(!J)o=0;else o=(a[c[o>>2]>>0]|0)==45;c[z>>2]=0;c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[B+0>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;e9(f,o,w,z,u,C,v,B,A,p);n=c[p>>2]|0;if((J|0)>(n|0)){d=a[A>>0]|0;if(!(d&1))m=(d&255)>>>1;else m=c[A+4>>2]|0;d=a[B>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[B+4>>2]|0;d=m+(J-n<<1|1)+d|0}else{d=a[A>>0]|0;if(!(d&1))m=(d&255)>>>1;else m=c[A+4>>2]|0;d=a[B>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[B+4>>2]|0;d=m+2+d|0}d=d+n|0;if(d>>>0>100){d=Afa(d<<2)|0;if(!d)vfa();else{E=d;I=d}}else{E=0;I=r}f9(I,y,x,c[g+4>>2]|0,H,H+(J<<2)|0,q,o,z,c[u>>2]|0,c[C>>2]|0,v,B,A,n);c[t>>2]=c[e>>2];J=c[y>>2]|0;e=c[x>>2]|0;c[s+0>>2]=c[t+0>>2];tca(b,s,I,J,e,g,j);if(E)Bfa(E);L3(A);L3(B);v3(v);S2(c[w>>2]|0)|0;if(!F){Bfa(G);i=D;return}Bfa(F);Bfa(G);i=D;return}function e9(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+112|0;n=z+108|0;o=z+96|0;r=z+92|0;s=z+80|0;t=z+68|0;u=z+56|0;v=z+52|0;w=z+28|0;x=z+24|0;y=z+12|0;p=z;q=z+40|0;if(b){b=F9(e,368968)|0;e=c[b>>2]|0;if(d){Jd[c[e+44>>2]&255](n,b);d=c[n>>2]|0;a[f>>0]=d;a[f+1>>0]=d>>8;a[f+2>>0]=d>>16;a[f+3>>0]=d>>24;Jd[c[(c[b>>2]|0)+32>>2]&255](o,b);if(!(a[l>>0]&1)){c[l+4>>2]=0;a[l>>0]=0}else{c[c[l+8>>2]>>2]=0;c[l+4>>2]=0}O3(l,0);c[l+0>>2]=c[o+0>>2];c[l+4>>2]=c[o+4>>2];c[l+8>>2]=c[o+8>>2];c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;L3(o)}else{Jd[c[e+40>>2]&255](r,b);d=c[r>>2]|0;a[f>>0]=d;a[f+1>>0]=d>>8;a[f+2>>0]=d>>16;a[f+3>>0]=d>>24;Jd[c[(c[b>>2]|0)+28>>2]&255](s,b);if(!(a[l>>0]&1)){c[l+4>>2]=0;a[l>>0]=0}else{c[c[l+8>>2]>>2]=0;c[l+4>>2]=0}O3(l,0);c[l+0>>2]=c[s+0>>2];c[l+4>>2]=c[s+4>>2];c[l+8>>2]=c[s+8>>2];c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;L3(s)}c[g>>2]=Ld[c[(c[b>>2]|0)+12>>2]&511](b)|0;c[h>>2]=Ld[c[(c[b>>2]|0)+16>>2]&511](b)|0;Jd[c[(c[b>>2]|0)+20>>2]&255](t,b);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}B3(j,0);c[j+0>>2]=c[t+0>>2];c[j+4>>2]=c[t+4>>2];c[j+8>>2]=c[t+8>>2];c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;v3(t);Jd[c[(c[b>>2]|0)+24>>2]&255](u,b);if(!(a[k>>0]&1)){c[k+4>>2]=0;a[k>>0]=0}else{c[c[k+8>>2]>>2]=0;c[k+4>>2]=0}O3(k,0);c[k+0>>2]=c[u+0>>2];c[k+4>>2]=c[u+4>>2];c[k+8>>2]=c[u+8>>2];c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;L3(u);h=Ld[c[(c[b>>2]|0)+36>>2]&511](b)|0;c[m>>2]=h;i=z;return}else{b=F9(e,368904)|0;e=c[b>>2]|0;if(d){Jd[c[e+44>>2]&255](v,b);d=c[v>>2]|0;a[f>>0]=d;a[f+1>>0]=d>>8;a[f+2>>0]=d>>16;a[f+3>>0]=d>>24;Jd[c[(c[b>>2]|0)+32>>2]&255](w,b);if(!(a[l>>0]&1)){c[l+4>>2]=0;a[l>>0]=0}else{c[c[l+8>>2]>>2]=0;c[l+4>>2]=0}O3(l,0);c[l+0>>2]=c[w+0>>2];c[l+4>>2]=c[w+4>>2];c[l+8>>2]=c[w+8>>2];c[w+0>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;L3(w)}else{Jd[c[e+40>>2]&255](x,b);d=c[x>>2]|0;a[f>>0]=d;a[f+1>>0]=d>>8;a[f+2>>0]=d>>16;a[f+3>>0]=d>>24;Jd[c[(c[b>>2]|0)+28>>2]&255](y,b);if(!(a[l>>0]&1)){c[l+4>>2]=0;a[l>>0]=0}else{c[c[l+8>>2]>>2]=0;c[l+4>>2]=0}O3(l,0);c[l+0>>2]=c[y+0>>2];c[l+4>>2]=c[y+4>>2];c[l+8>>2]=c[y+8>>2];c[y+0>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;L3(y)}c[g>>2]=Ld[c[(c[b>>2]|0)+12>>2]&511](b)|0;c[h>>2]=Ld[c[(c[b>>2]|0)+16>>2]&511](b)|0;Jd[c[(c[b>>2]|0)+20>>2]&255](p,b);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}B3(j,0);c[j+0>>2]=c[p+0>>2];c[j+4>>2]=c[p+4>>2];c[j+8>>2]=c[p+8>>2];c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;v3(p);Jd[c[(c[b>>2]|0)+24>>2]&255](q,b);if(!(a[k>>0]&1)){c[k+4>>2]=0;a[k>>0]=0}else{c[c[k+8>>2]>>2]=0;c[k+4>>2]=0}O3(k,0);c[k+0>>2]=c[q+0>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;L3(q);h=Ld[c[(c[b>>2]|0)+36>>2]&511](b)|0;c[m>>2]=h;i=z;return}}function f9(b,d,e,f,g,h,j,k,l,m,n,o,p,q,r){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=i;c[e>>2]=b;L=q+4|0;K=q+8|0;C=(f&512|0)==0;D=p+4|0;E=p+8|0;F=(r|0)>0;G=o+1|0;H=o+8|0;I=o+4|0;A=0;do{switch(a[l+A>>0]|0){case 0:{c[d>>2]=c[e>>2];break}case 1:{c[d>>2]=c[e>>2];v=Wd[c[(c[j>>2]|0)+44>>2]&511](j,32)|0;x=c[e>>2]|0;c[e>>2]=x+4;c[x>>2]=v;break}case 4:{u=c[e>>2]|0;g=k?g+4|0:g;a:do if(g>>>0>>0){t=g;while(1){s=t+4|0;if(!(Od[c[(c[j>>2]|0)+12>>2]&255](j,2048,c[t>>2]|0)|0)){s=t;break a}if(s>>>0>>0)t=s;else break}}else s=g;while(0);if(F){if(s>>>0>g>>>0){w=c[e>>2]|0;v=r;do{s=s+-4|0;t=w;w=w+4|0;c[t>>2]=c[s>>2];v=v+-1|0;t=(v|0)>0}while(s>>>0>g>>>0&t);c[e>>2]=w;if(t)J=33;else{t=c[e>>2]|0;c[e>>2]=t+4}}else{v=r;J=33}if((J|0)==33){J=0;y=Wd[c[(c[j>>2]|0)+44>>2]&511](j,48)|0;t=c[e>>2]|0;w=t+4|0;c[e>>2]=w;if((v|0)>0){z=t;x=v;while(1){c[z>>2]=y;x=x+-1|0;if((x|0)<=0)break;else{z=w;w=w+4|0}}c[e>>2]=t+(v+1<<2);t=t+(v<<2)|0}}c[t>>2]=m}if((s|0)==(g|0)){v=Wd[c[(c[j>>2]|0)+44>>2]&511](j,48)|0;x=c[e>>2]|0;s=x+4|0;c[e>>2]=s;c[x>>2]=v}else{t=a[o>>0]|0;w=(t&1)==0;if(w)t=(t&255)>>>1;else t=c[I>>2]|0;if(!t){v=s;z=-1;y=0;t=0}else{if(w)t=G;else t=c[H>>2]|0;v=s;z=a[t>>0]|0;y=0;t=0}while(1){s=c[e>>2]|0;if((t|0)==(z|0)){w=s+4|0;c[e>>2]=w;c[s>>2]=n;y=y+1|0;s=a[o>>0]|0;t=(s&1)==0;if(t)s=(s&255)>>>1;else s=c[I>>2]|0;if(y>>>0>>0){if(t)s=G;else s=c[H>>2]|0;if((a[s+y>>0]|0)==127){z=-1;t=0}else{if(t)s=G;else s=c[H>>2]|0;z=a[s+y>>0]|0;t=0}}else t=0}else w=s;v=v+-4|0;x=c[v>>2]|0;s=w+4|0;c[e>>2]=s;c[w>>2]=x;if((v|0)==(g|0))break;else t=t+1|0}}if((u|0)!=(s|0)?(B=s+-4|0,B>>>0>u>>>0):0){s=B;do{x=c[u>>2]|0;c[u>>2]=c[s>>2];c[s>>2]=x;u=u+4|0;s=s+-4|0}while(u>>>0>>0)}break}case 3:{u=a[q>>0]|0;s=(u&1)==0;if(s)u=(u&255)>>>1;else u=c[L>>2]|0;if(u){if(s)u=L;else u=c[K>>2]|0;v=c[u>>2]|0;x=c[e>>2]|0;c[e>>2]=x+4;c[x>>2]=v}break}case 2:{t=a[p>>0]|0;u=(t&1)==0;if(u)s=(t&255)>>>1;else s=c[D>>2]|0;if(!((s|0)==0|C)){if(u){x=D;s=(t&255)>>>1}else{x=c[E>>2]|0;s=c[D>>2]|0}v=x+(s<<2)|0;u=c[e>>2]|0;if((x|0)!=(v|0)){w=(x+(s+-1<<2)-x|0)>>>2;t=u;s=x;while(1){c[t>>2]=c[s>>2];s=s+4|0;if((s|0)==(v|0))break;else t=t+4|0}u=u+(w+1<<2)|0}c[e>>2]=u}break}default:{}}A=A+1|0}while((A|0)!=4);t=a[q>>0]|0;g=(t&1)==0;if(g)s=(t&255)>>>1;else s=c[L>>2]|0;if(s>>>0>1){if(g){u=L;s=(t&255)>>>1}else{u=c[K>>2]|0;s=c[L>>2]|0}v=u+4|0;w=u+(s<<2)|0;g=c[e>>2]|0;if((v|0)!=(w|0)){u=(u+(s+-1<<2)-v|0)>>>2;t=g;s=v;while(1){c[t>>2]=c[s>>2];s=s+4|0;if((s|0)==(w|0))break;else t=t+4|0}g=g+(u+1<<2)|0}c[e>>2]=g}g=f&176;if((g|0)==16){i=M;return}else if((g|0)==32){c[d>>2]=c[e>>2];i=M;return}else{c[d>>2]=b;i=M;return}}function g9(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;B=i;i=i+480|0;p=B+468|0;u=B+464|0;x=B+460|0;s=B+456|0;A=B+452|0;t=B+440|0;z=B+428|0;y=B+412|0;l=B+408|0;o=B+8|0;w=B+4|0;v=B;q=B+424|0;Y3(u,g);r=F9(u,369392)|0;d=a[j>>0]|0;k=(d&1)==0;if(k)d=(d&255)>>>1;else d=c[j+4>>2]|0;if(!d)n=0;else{if(k)d=j+4|0;else d=c[j+8>>2]|0;n=c[d>>2]|0;n=(n|0)==(Wd[c[(c[r>>2]|0)+44>>2]&511](r,45)|0)}c[x>>2]=0;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[y+0>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;e9(f,n,u,x,s,A,t,z,y,l);m=a[j>>0]|0;d=(m&1)==0;if(d)k=(m&255)>>>1;else k=c[j+4>>2]|0;l=c[l>>2]|0;if((k|0)>(l|0)){if(d)f=(m&255)>>>1;else f=c[j+4>>2]|0;d=a[y>>0]|0;if(!(d&1))k=(d&255)>>>1;else k=c[y+4>>2]|0;d=a[z>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[z+4>>2]|0;d=k+(f-l<<1|1)+d|0}else{d=a[y>>0]|0;if(!(d&1))k=(d&255)>>>1;else k=c[y+4>>2]|0;d=a[z>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[z+4>>2]|0;d=k+2+d|0}d=d+l|0;if(d>>>0>100){d=Afa(d<<2)|0;if(!d)vfa();else{C=d;D=d}}else{C=0;D=o}if(!(m&1)){k=j+4|0;d=(m&255)>>>1}else{k=c[j+8>>2]|0;d=c[j+4>>2]|0}f9(D,w,v,c[g+4>>2]|0,k,k+(d<<2)|0,r,n,x,c[s>>2]|0,c[A>>2]|0,t,z,y,l);c[q>>2]=c[e>>2];A=c[w>>2]|0;e=c[v>>2]|0;c[p+0>>2]=c[q+0>>2];tca(b,p,D,A,e,g,h);if(!C){L3(y);L3(z);v3(t);b=c[u>>2]|0;S2(b)|0;i=B;return}Bfa(C);L3(y);L3(z);v3(t);b=c[u>>2]|0;S2(b)|0;i=B;return}function h9(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function i9(a){a=a|0;return}function j9(b,d,e){b=b|0;d=d|0;e=e|0;b=i;if(!(a[d>>0]&1))e=d+1|0;else e=c[d+8>>2]|0;d=dc(e|0,1)|0;i=b;return d>>>((d|0)!=(-1|0)&1)|0}function k9(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;d=a[h>>0]|0;if(!(d&1)){k=h+1|0;j=(d&255)>>>1;d=h+1|0}else{d=c[h+8>>2]|0;k=d;j=c[h+4>>2]|0}j=k+j|0;if(d>>>0>>0){do{D3(m,a[d>>0]|0);d=d+1|0}while((d|0)!=(j|0));d=(e|0)==-1?-1:e<<1;if(!(a[m>>0]&1))l=9;else j=c[m+8>>2]|0}else{d=(e|0)==-1?-1:e<<1;l=9}if((l|0)==9)j=m+1|0;d=ad(d|0,f|0,g|0,j|0)|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;f=Dga(d|0)|0;j=d+f|0;if((f|0)<=0){v3(m);i=n;return}do{D3(b,a[d>>0]|0);d=d+1|0}while((d|0)!=(j|0));v3(m);i=n;return}function l9(a,b){a=a|0;b=b|0;a=i;tb(((b|0)==-1?-1:b<<1)|0)|0;i=a;return}function m9(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function n9(a){a=a|0;return}function o9(b,d,e){b=b|0;d=d|0;e=e|0;b=i;if(!(a[d>>0]&1))e=d+1|0;else e=c[d+8>>2]|0;d=dc(e|0,1)|0;i=b;return d>>>((d|0)!=(-1|0)&1)|0}function p9(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+176|0;p=s;o=s+48|0;n=s+8|0;q=s+12|0;r=s+16|0;l=s+32|0;m=s+40|0;c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[l+4>>2]=0;c[l>>2]=371056;d=a[h>>0]|0;if(!(d&1)){k=h+4|0;j=(d&255)>>>1;d=h+4|0}else{d=c[h+8>>2]|0;k=d;j=c[h+4>>2]|0}h=k+(j<<2)|0;k=p;c[k>>2]=0;c[k+4>>2]=0;a:do if(d>>>0>>0){k=o+32|0;j=371056|0;while(1){c[q>>2]=d;t=(be[c[j+12>>2]&15](l,p,d,h,q,o,k,n)|0)==2;j=c[q>>2]|0;if(t|(j|0)==(d|0))break;if(o>>>0<(c[n>>2]|0)>>>0){d=o;do{D3(r,a[d>>0]|0);d=d+1|0}while(d>>>0<(c[n>>2]|0)>>>0);d=c[q>>2]|0}else d=j;if(d>>>0>=h>>>0)break a;j=c[l>>2]|0}N8(370280)}while(0);if(!(a[r>>0]&1))d=r+1|0;else d=c[r+8>>2]|0;d=ad(((e|0)==-1?-1:e<<1)|0,f|0,g|0,d|0)|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[m+4>>2]=0;c[m>>2]=371160;t=Dga(d|0)|0;k=d+t|0;g=p;c[g>>2]=0;c[g+4>>2]=0;if((t|0)<=0){v3(r);i=s;return}h=k;l=o+128|0;j=371160|0;while(1){c[q>>2]=d;t=(be[c[j+16>>2]&15](m,p,d,(h-d|0)>32?d+32|0:k,q,o,l,n)|0)==2;j=c[q>>2]|0;if(t|(j|0)==(d|0)){d=20;break}if(o>>>0<(c[n>>2]|0)>>>0){d=o;do{P3(b,c[d>>2]|0);d=d+4|0}while(d>>>0<(c[n>>2]|0)>>>0);d=c[q>>2]|0}else d=j;if(d>>>0>=k>>>0){d=25;break}j=c[m>>2]|0}if((d|0)==20)N8(370280);else if((d|0)==25){v3(r);i=s;return}}function q9(a,b){a=a|0;b=b|0;a=i;tb(((b|0)==-1?-1:b<<1)|0)|0;i=a;return}function r9(a){a=a|0;a=kc(8)|0;T2(a,369280);c[a>>2]=377960;xd(a|0,378e3,198)}function s9(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;c[b+4>>2]=d+-1;c[b>>2]=369320;d=b+8|0;Bca(d,28);q3(b+144|0,369304,1);d=c[d>>2]|0;e=b+12|0;f=c[e>>2]|0;if((f|0)!=(d|0))c[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);c[93553]=0;c[93552]=367768;Cca(b,374208);c[93551]=0;c[93550]=367808;Dca(b,374200);Z9(374184,0,0,1);Eca(b,374184);c[93545]=0;c[93544]=370376;Fca(b,374176);c[93543]=0;c[93542]=370592;Gca(b,374168);qaa(374152,1);Hca(b,374152);c[93537]=0;c[93536]=370816;Ica(b,374144);c[93535]=0;c[93534]=370936;Jca(b,374136);c[93529]=0;c[93528]=369568;a[374120]=46;a[374121]=44;c[93531]=0;c[93532]=0;c[93533]=0;Kca(b,374112);c[93521]=0;c[93520]=369608;c[93522]=46;c[93523]=44;c[93524]=0;c[93525]=0;c[93526]=0;Lca(b,374080);c[93519]=0;c[93518]=367848;Mca(b,374072);c[93517]=0;c[93516]=367968;Nca(b,374064);c[93515]=0;c[93514]=368040;Oca(b,374056);c[93513]=0;c[93512]=368136;Pca(b,374048);c[93511]=0;c[93510]=368728;Qca(b,374040);c[93509]=0;c[93508]=368792;Rca(b,374032);c[93507]=0;c[93506]=368856;Sca(b,374024);c[93505]=0;c[93504]=368920;Tca(b,374016);c[93503]=0;c[93502]=368984;Uca(b,374008);c[93501]=0;c[93500]=369064;Vca(b,374e3);c[93499]=0;c[93498]=369120;Wca(b,373992);c[93497]=0;c[93496]=369168;Xca(b,373984);c[93493]=0;c[93492]=368216;c[93494]=368264;Yca(b,373968);c[93489]=0;c[93488]=368368;c[93490]=368416;Zca(b,373952);c[93485]=0;c[93484]=370312;c[93486]=T5()|0;c[93484]=368664;_ca(b,373936);c[93481]=0;c[93480]=370312;c[93482]=T5()|0;c[93480]=368696;$ca(b,373920);c[93479]=0;c[93478]=369208;ada(b,373912);c[93477]=0;c[93476]=369248;bda(b,373904);i=g;return}function t9(){var b=0;b=i;if((a[369352]|0)==0?(Qa(369352)|0)!=0:0){y9()|0;c[92336]=369336;Eb(369352)}i=b;return c[92336]|0}function u9(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;R2(b);f=a+8|0;e=c[f>>2]|0;if((c[a+12>>2]|0)-e>>2>>>0<=d>>>0){dda(f,d+1|0);e=c[f>>2]|0}a=c[e+(d<<2)>>2]|0;if(!a){f=e;d=f+(d<<2)|0;c[d>>2]=b;i=g;return}S2(a)|0;f=c[f>>2]|0;d=f+(d<<2)|0;c[d>>2]=b;i=g;return}function v9(a){a=a|0;var b=0;b=i;w9(a);xea(a);i=b;return}function w9(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;j=i;c[a>>2]=369320;g=a+8|0;h=a+12|0;b=c[h>>2]|0;d=c[g>>2]|0;if((b|0)!=(d|0)){f=0;do{e=c[d+(f<<2)>>2]|0;if(e){S2(e)|0;b=c[h>>2]|0;d=c[g>>2]|0}f=f+1|0}while(f>>>0>2>>>0)}v3(a+144|0);cda(g);i=j;return}function x9(a,b){a=a|0;b=b|0;var d=0;d=i;if(eda(a,b)|0){i=d;return c[(c[a+8>>2]|0)+(b<<2)>>2]|0}else{d=kc(4)|0;Rea(d);xd(d|0,378200,204)}return 0}function y9(){var a=0;a=i;s9(373744,1);c[92334]=373744;i=a;return 369336}function z9(){var a=0,b=0;a=i;b=c[(t9()|0)>>2]|0;c[92340]=b;R2(b);i=a;return 369360}function A9(){var b=0;b=i;if((a[369376]|0)==0?(Qa(369376)|0)!=0:0){z9()|0;c[92342]=369360;Eb(369376)}i=b;return c[92342]|0}function B9(a){a=a|0;var b=0,d=0;b=i;d=c[(A9()|0)>>2]|0;c[a>>2]=d;R2(d);i=b;return}function C9(a,b){a=a|0;b=b|0;var d=0;d=i;b=c[b>>2]|0;c[a>>2]=b;R2(b);i=d;return}function D9(a){a=a|0;var b=0;b=i;S2(c[a>>2]|0)|0;i=b;return}function E9(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;if((c[a>>2]|0)!=-1){c[b>>2]=a;c[b+4>>2]=334;c[b+8>>2]=0;l3(a,b,335)}i=d;return (c[a+4>>2]|0)+-1|0}function F9(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[a>>2]|0;b=x9(a,E9(b)|0)|0;i=d;return b|0}function G9(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function H9(a){a=a|0;var b=0;b=i;if(!a){i=b;return}Id[c[(c[a>>2]|0)+4>>2]&511](a);i=b;return}function I9(a){a=a|0;var b=0;b=c[92346]|0;c[92346]=b+1;c[a+4>>2]=b+1;return}function J9(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function K9(a,c,d){a=a|0;c=c|0;d=d|0;a=i;if(d>>>0>=128){c=0;i=a;return c|0}c=(b[(L9()|0)+(d<<1)>>1]&c)<<16>>16!=0;i=a;return c|0}function L9(){var a=0,b=0;b=i;a=c[(hc()|0)>>2]|0;i=b;return a|0}function M9(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;if((d|0)==(e|0)){i=j;return d|0}h=((e+-4-d|0)>>>2)+1|0;g=d;while(1){a=c[g>>2]|0;if(a>>>0<128)a=b[(L9()|0)+(a<<1)>>1]|0;else a=0;b[f>>1]=a;g=g+4|0;if((g|0)==(e|0))break;else f=f+2|0}d=d+(h<<2)|0;i=j;return d|0}function N9(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;a:do if((e|0)==(f|0))f=e;else{a=e;do{e=c[a>>2]|0;if(e>>>0<128?(b[(L9()|0)+(e<<1)>>1]&d)<<16>>16!=0:0){f=a;break a}a=a+4|0}while((a|0)!=(f|0))}while(0);i=g;return f|0}function O9(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;a:do if((e|0)==(f|0))f=e;else{a=e;do{e=c[a>>2]|0;if(e>>>0>=128){f=a;break a}if(!((b[(L9()|0)+(e<<1)>>1]&d)<<16>>16)){f=a;break a}a=a+4|0}while((a|0)!=(f|0))}while(0);i=g;return f|0}function P9(a,b){a=a|0;b=b|0;a=i;if(b>>>0>=128){i=a;return b|0}b=c[(Q9()|0)+(b<<2)>>2]|0;i=a;return b|0}function Q9(){var a=0,b=0;b=i;a=c[(Wa()|0)>>2]|0;i=b;return a|0}function R9(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;if((b|0)==(d|0)){i=g;return b|0}f=((d+-4-b|0)>>>2)+1|0;e=b;do{a=c[e>>2]|0;if(a>>>0<128)a=c[(Q9()|0)+(a<<2)>>2]|0;c[e>>2]=a;e=e+4|0}while((e|0)!=(d|0));b=b+(f<<2)|0;i=g;return b|0}function S9(a,b){a=a|0;b=b|0;a=i;if(b>>>0>=128){i=a;return b|0}b=c[(T9()|0)+(b<<2)>>2]|0;i=a;return b|0}function T9(){var a=0,b=0;b=i;a=c[(hd()|0)>>2]|0;i=b;return a|0}function U9(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;if((b|0)==(d|0)){i=g;return b|0}f=((d+-4-b|0)>>>2)+1|0;e=b;do{a=c[e>>2]|0;if(a>>>0<128)a=c[(T9()|0)+(a<<2)>>2]|0;c[e>>2]=a;e=e+4|0}while((e|0)!=(d|0));b=b+(f<<2)|0;i=g;return b|0}function V9(a,b){a=a|0;b=b|0;return b<<24>>24|0}function W9(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;if((d|0)==(e|0)){b=d;i=g;return b|0}else b=d;while(1){c[f>>2]=a[b>>0];b=b+1|0;if((b|0)==(e|0))break;else f=f+4|0}i=g;return e|0}function X9(a,b,c){a=a|0;b=b|0;c=c|0;return (b>>>0<128?b&255:c)|0}function Y9(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;k=i;if((d|0)==(e|0)){e=d;i=k;return e|0}j=((e+-4-d|0)>>>2)+1|0;h=d;b=g;while(1){g=c[h>>2]|0;a[b>>0]=g>>>0<128?g&255:f;h=h+4|0;if((h|0)==(e|0))break;else b=b+1|0}e=d+(j<<2)|0;i=k;return e|0}function Z9(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;c[b+4>>2]=f+-1;c[b>>2]=369416;f=b+8|0;c[f>>2]=d;a[b+12>>0]=e&1;if(d){i=g;return}c[f>>2]=L9()|0;i=g;return}function _9(a){a=a|0;var b=0;b=i;$9(a);xea(a);i=b;return}function $9(b){b=b|0;var d=0,e=0;e=i;c[b>>2]=369416;d=c[b+8>>2]|0;if((d|0)!=0?(a[b+12>>0]|0)!=0:0)yea(d);i=e;return}function aaa(a,b){a=a|0;b=b|0;a=i;if(b<<24>>24<=-1){i=a;return b|0}b=c[(Q9()|0)+((b&255)<<2)>>2]&255;i=a;return b|0}function baa(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=i;if((d|0)==(e|0)){i=f;return d|0}do{b=a[d>>0]|0;if(b<<24>>24>-1)b=c[(Q9()|0)+(b<<24>>24<<2)>>2]&255;a[d>>0]=b;d=d+1|0}while((d|0)!=(e|0));i=f;return e|0}function caa(a,b){a=a|0;b=b|0;a=i;if(b<<24>>24<=-1){i=a;return b|0}b=c[(T9()|0)+(b<<24>>24<<2)>>2]&255;i=a;return b|0}function daa(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=i;if((d|0)==(e|0)){i=f;return d|0}do{b=a[d>>0]|0;if(b<<24>>24>-1)b=c[(T9()|0)+(b<<24>>24<<2)>>2]&255;a[d>>0]=b;d=d+1|0}while((d|0)!=(e|0));i=f;return e|0}function eaa(a,b){a=a|0;b=b|0;return b|0}function faa(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=i;if((c|0)==(d|0))d=c;else{b=c;while(1){a[e>>0]=a[b>>0]|0;b=b+1|0;if((b|0)==(d|0))break;else e=e+1|0}}i=f;return d|0}function gaa(a,b,c){a=a|0;b=b|0;c=c|0;return (b<<24>>24>-1?b:c)|0}function haa(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;if((c|0)==(d|0)){e=c;i=g;return e|0}else b=c;while(1){c=a[b>>0]|0;a[f>>0]=c<<24>>24>-1?c:e;b=b+1|0;if((b|0)==(d|0))break;else f=f+1|0}i=g;return d|0}function iaa(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function jaa(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;c[f>>2]=d;c[i>>2]=g;return 3}function kaa(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;c[f>>2]=d;c[i>>2]=g;return 3}function laa(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function maa(a){a=a|0;return 1}function naa(a){a=a|0;return 1}function oaa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;a=d-c|0;return (a>>>0>>0?a:e)|0}function paa(a){a=a|0;return 1}function qaa(a,b){a=a|0;b=b|0;var d=0;d=i;c[a+4>>2]=b+-1;c[a>>2]=369488;c[a+8>>2]=T5()|0;i=d;return}function raa(a){a=a|0;var b=0;b=i;sba(a);xea(a);i=b;return}function saa(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+16|0;q=r;o=r+8|0;m=(e|0)==(f|0);a:do if(!m){l=e;while(1){if(!(c[l>>2]|0))break;l=l+4|0;if((l|0)==(f|0)){l=f;break}}c[k>>2]=h;c[g>>2]=e;if(!(m|(h|0)==(j|0))){n=j;p=b+8|0;while(1){s=d;b=c[s+4>>2]|0;m=q;c[m>>2]=c[s>>2];c[m+4>>2]=b;m=qc(c[p>>2]|0)|0;b=Vda(h,g,l-e>>2,n-h|0,d)|0;if(m)qc(m|0)|0;if((b|0)==-1){l=10;break}else if(!b){e=1;l=33;break}h=(c[k>>2]|0)+b|0;c[k>>2]=h;if((h|0)==(j|0)){l=31;break}if((l|0)==(f|0)){e=c[g>>2]|0;l=f}else{e=qc(c[p>>2]|0)|0;h=_fa(o,0,d)|0;if(e)qc(e|0)|0;if((h|0)==-1){e=2;l=33;break}e=c[k>>2]|0;if(h>>>0>(n-e|0)>>>0){e=1;l=33;break}b:do if(h){m=o;while(1){s=a[m>>0]|0;c[k>>2]=e+1;a[e>>0]=s;h=h+-1|0;if(!h)break b;e=c[k>>2]|0;m=m+1|0}}while(0);e=(c[g>>2]|0)+4|0;c[g>>2]=e;c:do if((e|0)==(f|0))l=f;else{h=e;while(1){if(!(c[h>>2]|0)){l=h;break c}h=h+4|0;if((h|0)==(f|0)){l=f;break}}}while(0);h=c[k>>2]|0}if((e|0)==(f|0)|(h|0)==(j|0))break a}if((l|0)==10){c[k>>2]=h;d:do if((e|0)!=(c[g>>2]|0))do{s=c[e>>2]|0;l=qc(c[p>>2]|0)|0;h=_fa(h,s,q)|0;if(l)qc(l|0)|0;if((h|0)==-1)break d;h=(c[k>>2]|0)+h|0;c[k>>2]=h;e=e+4|0}while((e|0)!=(c[g>>2]|0));while(0);c[g>>2]=e;s=2;i=r;return s|0}else if((l|0)==31){e=c[g>>2]|0;break}else if((l|0)==33){i=r;return e|0}}}else{c[k>>2]=h;c[g>>2]=e}while(0);s=(e|0)!=(f|0)&1;i=r;return s|0}function taa(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;q=r;m=(e|0)==(f|0);a:do if(!m){l=e;while(1){if(!(a[l>>0]|0))break;l=l+1|0;if((l|0)==(f|0)){l=f;break}}c[k>>2]=h;c[g>>2]=e;if(!(m|(h|0)==(j|0))){o=j;p=b+8|0;m=h;while(1){h=d;b=c[h+4>>2]|0;n=q;c[n>>2]=c[h>>2];c[n+4>>2]=b;n=l;b=qc(c[p>>2]|0)|0;h=Sda(m,g,n-e|0,o-m>>2,d)|0;if(b)qc(b|0)|0;if(!h){e=2;b=32;break}else if((h|0)==-1){b=10;break}m=(c[k>>2]|0)+(h<<2)|0;c[k>>2]=m;if((m|0)==(j|0)){b=30;break}e=c[g>>2]|0;if((l|0)==(f|0))l=f;else{l=qc(c[p>>2]|0)|0;e=Qda(m,e,1,d)|0;if(l)qc(l|0)|0;if(e){e=2;b=32;break}c[k>>2]=(c[k>>2]|0)+4;e=(c[g>>2]|0)+1|0;c[g>>2]=e;b:do if((e|0)==(f|0))l=f;else{l=e;while(1){if(!(a[l>>0]|0))break b;l=l+1|0;if((l|0)==(f|0)){l=f;break}}}while(0);m=c[k>>2]|0}if((e|0)==(f|0)|(m|0)==(j|0))break a}if((b|0)==10){c[k>>2]=m;c:do if((e|0)!=(c[g>>2]|0)){l=m;while(1){m=qc(c[p>>2]|0)|0;l=Qda(l,e,n-e|0,q)|0;if(m)qc(m|0)|0;if((l|0)==-1){b=15;break}else if(!l)e=e+1|0;else if((l|0)==-2){b=16;break}else e=e+l|0;l=(c[k>>2]|0)+4|0;c[k>>2]=l;if((e|0)==(c[g>>2]|0))break c}if((b|0)==15){c[g>>2]=e;f=2;i=r;return f|0}else if((b|0)==16){c[g>>2]=e;f=1;i=r;return f|0}}while(0);c[g>>2]=e;f=(e|0)!=(f|0)&1;i=r;return f|0}else if((b|0)==30){e=c[g>>2]|0;break}else if((b|0)==32){i=r;return e|0}}}else{c[k>>2]=h;c[g>>2]=e}while(0);f=(e|0)!=(f|0)&1;i=r;return f|0}function uaa(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;j=i;i=i+16|0;h=j;c[g>>2]=e;e=qc(c[b+8>>2]|0)|0;b=_fa(h,0,d)|0;if(e)qc(e|0)|0;if((b|0)==0|(b|0)==-1){g=2;i=j;return g|0}b=b+-1|0;e=c[g>>2]|0;if(b>>>0>(f-e|0)>>>0){g=1;i=j;return g|0}if(!b){g=0;i=j;return g|0}while(1){f=a[h>>0]|0;c[g>>2]=e+1;a[e>>0]=f;b=b+-1|0;if(!b){b=0;break}e=c[g>>2]|0;h=h+1|0}i=j;return b|0}function vaa(a){a=a|0;var b=0,d=0,e=0;e=i;a=a+8|0;b=qc(c[a>>2]|0)|0;d=Uda(0,0,4)|0;if(b)qc(b|0)|0;if(!d){a=c[a>>2]|0;if(a){a=qc(a|0)|0;if(!a)a=0;else{qc(a|0)|0;a=0}}else a=1}else a=-1;i=e;return a|0}function waa(a){a=a|0;return 0}function xaa(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;if((f|0)==0|(d|0)==(e|0)){b=0;i=m;return b|0}l=e;k=a+8|0;a=0;j=0;while(1){h=qc(c[k>>2]|0)|0;g=Pda(d,l-d|0,b)|0;if(h)qc(h|0)|0;if(!g){d=d+1|0;g=1}else if((g|0)==-2|(g|0)==-1){d=9;break}else d=d+g|0;a=g+a|0;j=j+1|0;if(j>>>0>=f>>>0|(d|0)==(e|0)){d=9;break}}if((d|0)==9){i=m;return a|0}return 0}function yaa(a){a=a|0;var b=0;b=i;a=c[a+8>>2]|0;if(a){a=qc(a|0)|0;if(!a)a=4;else{qc(a|0)|0;a=4}}else a=1;i=b;return a|0}function zaa(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function Aaa(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0;a=i;i=i+16|0;k=a+4|0;b=a;c[k>>2]=d;c[b>>2]=g;h=gda(d,e,k,g,h,b,1114111,0)|0;c[f>>2]=d+((c[k>>2]|0)-d>>1<<1);c[j>>2]=g+((c[b>>2]|0)-g);i=a;return h|0}function Baa(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0;a=i;i=i+16|0;k=a+4|0;b=a;c[k>>2]=d;c[b>>2]=g;h=hda(d,e,k,g,h,b,1114111,0)|0;c[f>>2]=d+((c[k>>2]|0)-d);c[j>>2]=g+((c[b>>2]|0)-g>>1<<1);i=a;return h|0}function Caa(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function Daa(a){a=a|0;return 0}function Eaa(a){a=a|0;return 0}function Faa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;b=i;a=ida(c,d,e,1114111,0)|0;i=b;return a|0}function Gaa(a){a=a|0;return 4}function Haa(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function Iaa(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0;a=i;i=i+16|0;k=a+4|0;b=a;c[k>>2]=d;c[b>>2]=g;h=jda(d,e,k,g,h,b,1114111,0)|0;c[f>>2]=d+((c[k>>2]|0)-d>>2<<2);c[j>>2]=g+((c[b>>2]|0)-g);i=a;return h|0}function Jaa(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0;a=i;i=i+16|0;k=a+4|0;b=a;c[k>>2]=d;c[b>>2]=g;h=kda(d,e,k,g,h,b,1114111,0)|0;c[f>>2]=d+((c[k>>2]|0)-d);c[j>>2]=g+((c[b>>2]|0)-g>>2<<2);i=a;return h|0}function Kaa(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function Laa(a){a=a|0;return 0}function Maa(a){a=a|0;return 0}function Naa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;b=i;a=lda(c,d,e,1114111,0)|0;i=b;return a|0}function Oaa(a){a=a|0;return 4}function Paa(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function Qaa(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function Raa(a){a=a|0;var b=0;b=i;Saa(a);xea(a);i=b;return}function Saa(a){a=a|0;var b=0;b=i;c[a>>2]=369568;v3(a+12|0);i=b;return}function Taa(a){a=a|0;var b=0;b=i;Uaa(a);xea(a);i=b;return}function Uaa(a){a=a|0;var b=0;b=i;c[a>>2]=369608;v3(a+16|0);i=b;return}function Vaa(b){b=b|0;return a[b+8>>0]|0}function Waa(a){a=a|0;return c[a+8>>2]|0}function Xaa(b){b=b|0;return a[b+9>>0]|0}function Yaa(a){a=a|0;return c[a+12>>2]|0}function Zaa(a,b){a=a|0;b=b|0;var c=0;c=i;p3(a,b+12|0);i=c;return}function _aa(a,b){a=a|0;b=b|0;var c=0;c=i;p3(a,b+16|0);i=c;return}function $aa(a,b){a=a|0;b=b|0;b=i;q3(a,369640,4);i=b;return}function aba(a,b){a=a|0;b=b|0;b=i;I3(a,369648,lea(369648)|0);i=b;return}function bba(a,b){a=a|0;b=b|0;b=i;q3(a,369672,5);i=b;return}function cba(a,b){a=a|0;b=b|0;b=i;I3(a,369680,lea(369680)|0);i=b;return}function dba(a){a=a|0;var b=0;b=i;a=c[a+4>>2]&74;if((a|0)==8)a=16;else if((a|0)==64)a=8;else if(!a)a=0;else a=10;i=b;return a|0}function eba(b){b=b|0;var d=0;b=i;if(a[369712]|0){d=c[92426]|0;i=b;return d|0}if(!(Qa(369712)|0)){d=c[92426]|0;i=b;return d|0}if((a[376912]|0)==0?(Qa(376912)|0)!=0:0){Cga(376744,0,168)|0;rb(336,0,p|0)|0;Eb(376912)}x3(376744,376920)|0;x3(376756,376928)|0;x3(376768,376936)|0;x3(376780,376944)|0;x3(376792,376960)|0;x3(376804,376976)|0;x3(376816,376984)|0;x3(376828,377e3)|0;x3(376840,377008)|0;x3(376852,377016)|0;x3(376864,377024)|0;x3(376876,377032)|0;x3(376888,377040)|0;x3(376900,377048)|0;c[92426]=376744;Eb(369712);d=c[92426]|0;i=b;return d|0}function fba(b){b=b|0;var d=0;b=i;if(a[369728]|0){d=c[92430]|0;i=b;return d|0}if(!(Qa(369728)|0)){d=c[92430]|0;i=b;return d|0}if((a[376376]|0)==0?(Qa(376376)|0)!=0:0){Cga(376208,0,168)|0;rb(337,0,p|0)|0;Eb(376376)}M3(376208,376384)|0;M3(376220,376416)|0;M3(376232,376448)|0;M3(376244,376480)|0;M3(376256,376520)|0;M3(376268,376560)|0;M3(376280,376592)|0;M3(376292,376632)|0;M3(376304,376648)|0;M3(376316,376664)|0;M3(376328,376680)|0;M3(376340,376696)|0;M3(376352,376712)|0;M3(376364,376728)|0;c[92430]=376208;Eb(369728);d=c[92430]|0;i=b;return d|0}function gba(b){b=b|0;var d=0;b=i;if(a[369744]|0){d=c[92434]|0;i=b;return d|0}if(!(Qa(369744)|0)){d=c[92434]|0;i=b;return d|0}if((a[375984]|0)==0?(Qa(375984)|0)!=0:0){Cga(375696,0,288)|0;rb(338,0,p|0)|0;Eb(375984)}x3(375696,375992)|0;x3(375708,376e3)|0;x3(375720,376016)|0;x3(375732,376024)|0;x3(375744,376032)|0;x3(375756,376040)|0;x3(375768,376048)|0;x3(375780,376056)|0;x3(375792,376064)|0;x3(375804,376080)|0;x3(375816,376088)|0;x3(375828,376104)|0;x3(375840,376120)|0;x3(375852,376128)|0;x3(375864,376136)|0;x3(375876,376144)|0;x3(375888,376032)|0;x3(375900,376152)|0;x3(375912,376160)|0;x3(375924,376168)|0;x3(375936,376176)|0;x3(375948,376184)|0;x3(375960,376192)|0;x3(375972,376200)|0;c[92434]=375696;Eb(369744);d=c[92434]|0;i=b;return d|0}function hba(b){b=b|0;var d=0;b=i;if(a[369760]|0){d=c[92438]|0;i=b;return d|0}if(!(Qa(369760)|0)){d=c[92438]|0;i=b;return d|0}if((a[375144]|0)==0?(Qa(375144)|0)!=0:0){Cga(374856,0,288)|0;rb(339,0,p|0)|0;Eb(375144)}M3(374856,375152)|0;M3(374868,375184)|0;M3(374880,375224)|0;M3(374892,375248)|0;M3(374904,375568)|0;M3(374916,375272)|0;M3(374928,375296)|0;M3(374940,375320)|0;M3(374952,375352)|0;M3(374964,375392)|0;M3(374976,375424)|0;M3(374988,375464)|0;M3(375e3,375504)|0;M3(375012,375520)|0;M3(375024,375536)|0;M3(375036,375552)|0;M3(375048,375568)|0;M3(375060,375584)|0;M3(375072,375600)|0;M3(375084,375616)|0;M3(375096,375632)|0;M3(375108,375648)|0;M3(375120,375664)|0;M3(375132,375680)|0;c[92438]=374856;Eb(369760);d=c[92438]|0;i=b;return d|0}function iba(b){b=b|0;var d=0;b=i;if(a[369776]|0){d=c[92442]|0;i=b;return d|0}if(!(Qa(369776)|0)){d=c[92442]|0;i=b;return d|0}if((a[374832]|0)==0?(Qa(374832)|0)!=0:0){Cga(374544,0,288)|0;rb(340,0,p|0)|0;Eb(374832)}x3(374544,374840)|0;x3(374556,374848)|0;c[92442]=374544;Eb(369776);d=c[92442]|0;i=b;return d|0}function jba(b){b=b|0;var d=0;b=i;if(a[369792]|0){d=c[92446]|0;i=b;return d|0}if(!(Qa(369792)|0)){d=c[92446]|0;i=b;return d|0}if((a[374504]|0)==0?(Qa(374504)|0)!=0:0){Cga(374216,0,288)|0;rb(341,0,p|0)|0;Eb(374504)}M3(374216,374512)|0;M3(374228,374528)|0;c[92446]=374216;Eb(369792);d=c[92446]|0;i=b;return d|0}function kba(b){b=b|0;b=i;if((a[369816]|0)==0?(Qa(369816)|0)!=0:0){q3(369800,369824,8);rb(342,369800,p|0)|0;Eb(369816)}i=b;return 369800}function lba(b){b=b|0;b=i;if(a[369856]|0){i=b;return 369840}if(!(Qa(369856)|0)){i=b;return 369840}I3(369840,369864,lea(369864)|0);rb(343,369840,p|0)|0;Eb(369856);i=b;return 369840}function mba(b){b=b|0;b=i;if((a[369920]|0)==0?(Qa(369920)|0)!=0:0){q3(369904,369928,8);rb(342,369904,p|0)|0;Eb(369920)}i=b;return 369904}function nba(b){b=b|0;b=i;if(a[369960]|0){i=b;return 369944}if(!(Qa(369960)|0)){i=b;return 369944}I3(369944,369968,lea(369968)|0);rb(343,369944,p|0)|0;Eb(369960);i=b;return 369944}function oba(b){b=b|0;b=i;if(a[370024]|0){i=b;return 370008}if(!(Qa(370024)|0)){i=b;return 370008}q3(370008,370032,20);rb(342,370008,p|0)|0;Eb(370024);i=b;return 370008}function pba(b){b=b|0;b=i;if(a[370072]|0){i=b;return 370056}if(!(Qa(370072)|0)){i=b;return 370056}I3(370056,370080,lea(370080)|0);rb(343,370056,p|0)|0;Eb(370072);i=b;return 370056}function qba(b){b=b|0;b=i;if(a[370184]|0){i=b;return 370168}if(!(Qa(370184)|0)){i=b;return 370168}q3(370168,370192,11);rb(342,370168,p|0)|0;Eb(370184);i=b;return 370168}function rba(b){b=b|0;b=i;if(a[370224]|0){i=b;return 370208}if(!(Qa(370224)|0)){i=b;return 370208}I3(370208,370232,lea(370232)|0);rb(343,370208,p|0)|0;Eb(370224);i=b;return 370208}function sba(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=369488;a=a+8|0;d=c[a>>2]|0;if((d|0)==(T5()|0)){i=b;return}Mb(c[a>>2]|0);i=b;return}function tba(){var a=0;a=i;O2(0);rb(344,365072,p|0)|0;i=a;return}function uba(a){a=a|0;var b=0;b=i;r4(a);xea(a);i=b;return} +function MP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;if(!e){l=(b|0)>0;if(!(l|(d|0)>1)){i=m;return}if(l){g=a+((d<<1)+-2<<2)|0;h=0;do{if((h|0)<(d|0))f=a+(h<<1<<2)|0;else f=g;j=h;h=h+1|0;if((h|0)<(d|0))e=a+(h<<1<<2)|0;else e=g;k=(c[e>>2]|0)+(c[f>>2]|0)|0;k=Tga(k|0,((k|0)<0)<<31>>31|0,12993,0)|0;k=Iga(k&4096|0,0,k|0,I|0)|0;k=Lga(k|0,I|0,13)|0;j=a+((j<<1|1)<<2)|0;c[j>>2]=(c[j>>2]|0)-k}while((h|0)!=(b|0))}k=(d|0)>0;if(k){g=a+4|0;f=a+((b<<1)+-1<<2)|0;j=0;do{if((j|0)>=1)if((j|0)>(b|0))e=f;else e=a+((j<<1)+-1<<2)|0;else e=g;if((j|0)<(b|0))h=a+((j<<1|1)<<2)|0;else h=f;e=(c[h>>2]|0)+(c[e>>2]|0)|0;e=Tga(e|0,((e|0)<0)<<31>>31|0,434,0)|0;e=Iga(e&4096|0,0,e|0,I|0)|0;e=Lga(e|0,I|0,13)|0;h=a+(j<<1<<2)|0;c[h>>2]=(c[h>>2]|0)-e;j=j+1|0}while((j|0)!=(d|0))}if(l){f=a+((d<<1)+-2<<2)|0;g=0;do{if((g|0)<(d|0))e=a+(g<<1<<2)|0;else e=f;j=g;g=g+1|0;if((g|0)<(d|0))h=a+(g<<1<<2)|0;else h=f;h=(c[h>>2]|0)+(c[e>>2]|0)|0;h=Tga(h|0,((h|0)<0)<<31>>31|0,7233,0)|0;h=Iga(h&4096|0,0,h|0,I|0)|0;h=Lga(h|0,I|0,13)|0;j=a+((j<<1|1)<<2)|0;c[j>>2]=h+(c[j>>2]|0)}while((g|0)!=(b|0))}if(k){f=a+4|0;g=a+((b<<1)+-1<<2)|0;j=0;do{if((j|0)>=1)if((j|0)>(b|0))h=g;else h=a+((j<<1)+-1<<2)|0;else h=f;if((j|0)<(b|0))e=a+((j<<1|1)<<2)|0;else e=g;e=(c[e>>2]|0)+(c[h>>2]|0)|0;e=Tga(e|0,((e|0)<0)<<31>>31|0,3633,0)|0;e=Iga(e&4096|0,0,e|0,I|0)|0;e=Lga(e|0,I|0,13)|0;h=a+(j<<1<<2)|0;c[h>>2]=e+(c[h>>2]|0);j=j+1|0}while((j|0)!=(d|0))}if(l){e=0;do{l=a+((e<<1|1)<<2)|0;j=c[l>>2]|0;j=Tga(j|0,((j|0)<0)<<31>>31|0,5038,0)|0;j=Iga(j&4096|0,0,j|0,I|0)|0;j=Lga(j|0,I|0,13)|0;c[l>>2]=j;e=e+1|0}while((e|0)!=(b|0))}if(k)e=0;else{i=m;return}do{l=a+(e<<1<<2)|0;j=c[l>>2]|0;j=Tga(j|0,((j|0)<0)<<31>>31|0,6659,0)|0;j=Iga(j&4096|0,0,j|0,I|0)|0;j=Lga(j|0,I|0,13)|0;c[l>>2]=j;e=e+1|0}while((e|0)!=(d|0));i=m;return}else{l=(d|0)>0;if(!(l|(b|0)>1)){i=m;return}k=(b|0)>0;if(k){f=a+4|0;g=a+((d<<1)+-1<<2)|0;j=0;do{if((j|0)<(d|0))e=a+((j<<1|1)<<2)|0;else e=g;h=c[e>>2]|0;if((j|0)>=1)if((j|0)>(d|0))e=g;else e=a+((j<<1)+-1<<2)|0;else e=f;e=(c[e>>2]|0)+h|0;e=Tga(e|0,((e|0)<0)<<31>>31|0,12993,0)|0;e=Iga(e&4096|0,0,e|0,I|0)|0;e=Lga(e|0,I|0,13)|0;h=a+(j<<1<<2)|0;c[h>>2]=(c[h>>2]|0)-e;j=j+1|0}while((j|0)!=(b|0))}if(l){f=a+((b<<1)+-2<<2)|0;g=0;do{if((g|0)<(b|0))e=a+(g<<1<<2)|0;else e=f;j=g;g=g+1|0;if((g|0)<(b|0))h=a+(g<<1<<2)|0;else h=f;h=(c[h>>2]|0)+(c[e>>2]|0)|0;h=Tga(h|0,((h|0)<0)<<31>>31|0,434,0)|0;h=Iga(h&4096|0,0,h|0,I|0)|0;h=Lga(h|0,I|0,13)|0;j=a+((j<<1|1)<<2)|0;c[j>>2]=(c[j>>2]|0)-h}while((g|0)!=(d|0))}if(k){f=a+4|0;g=a+((d<<1)+-1<<2)|0;j=0;do{if((j|0)<(d|0))e=a+((j<<1|1)<<2)|0;else e=g;h=c[e>>2]|0;if((j|0)>=1)if((j|0)>(d|0))e=g;else e=a+((j<<1)+-1<<2)|0;else e=f;e=(c[e>>2]|0)+h|0;e=Tga(e|0,((e|0)<0)<<31>>31|0,7233,0)|0;e=Iga(e&4096|0,0,e|0,I|0)|0;e=Lga(e|0,I|0,13)|0;h=a+(j<<1<<2)|0;c[h>>2]=e+(c[h>>2]|0);j=j+1|0}while((j|0)!=(b|0))}if(l){f=a+((b<<1)+-2<<2)|0;g=0;do{if((g|0)<(b|0))e=a+(g<<1<<2)|0;else e=f;j=g;g=g+1|0;if((g|0)<(b|0))h=a+(g<<1<<2)|0;else h=f;h=(c[h>>2]|0)+(c[e>>2]|0)|0;h=Tga(h|0,((h|0)<0)<<31>>31|0,3633,0)|0;h=Iga(h&4096|0,0,h|0,I|0)|0;h=Lga(h|0,I|0,13)|0;j=a+((j<<1|1)<<2)|0;c[j>>2]=h+(c[j>>2]|0)}while((g|0)!=(d|0))}if(k){e=0;do{j=a+(e<<1<<2)|0;k=c[j>>2]|0;k=Tga(k|0,((k|0)<0)<<31>>31|0,5038,0)|0;k=Iga(k&4096|0,0,k|0,I|0)|0;k=Lga(k|0,I|0,13)|0;c[j>>2]=k;e=e+1|0}while((e|0)!=(b|0))}if(l)e=0;else{i=m;return}do{l=a+((e<<1|1)<<2)|0;j=c[l>>2]|0;j=Tga(j|0,((j|0)<0)<<31>>31|0,6659,0)|0;j=Iga(j&4096|0,0,j|0,I|0)|0;j=Lga(j|0,I|0,13)|0;c[l>>2]=j;e=e+1|0}while((e|0)!=(d|0));i=m;return}}function NP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;o=c[a>>2]|0;k=c[a+12>>2]|0;s=c[a+8>>2]|0;p=d*3|0;n=1-k|0;m=a+4|0;l=s;a=0;while(1){h=o+(k<<4)|0;if(((l+p|0)<(e|0)?(b&15|0)==0:0)?((h|d)&15|0)==0:0){if((l|0)>0){f=0;do{h=f<<3;g[o+(k<<4)+(h<<2)>>2]=+g[b+(f<<2)>>2];j=f+d|0;g[o+(k<<4)+((h|1)<<2)>>2]=+g[b+(j<<2)>>2];j=j+d|0;g[o+(k<<4)+((h|2)<<2)>>2]=+g[b+(j<<2)>>2];g[o+(k<<4)+((h|3)<<2)>>2]=+g[b+(j+d<<2)>>2];f=f+1|0}while((f|0)!=(l|0))}}else t=3;if((t|0)==3?(t=0,(l|0)>0):0){j=0;do{f=j<<3;g[o+(k<<4)+(f<<2)>>2]=+g[b+(j<<2)>>2];h=j+d|0;if(((h|0)<(e|0)?(g[o+(k<<4)+((f|1)<<2)>>2]=+g[b+(h<<2)>>2],q=h+d|0,(q|0)<(e|0)):0)?(g[o+(k<<4)+((f|2)<<2)>>2]=+g[b+(q<<2)>>2],r=q+d|0,(r|0)<(e|0)):0)g[o+(k<<4)+((f|3)<<2)>>2]=+g[b+(r<<2)>>2];j=j+1|0}while((j|0)!=(l|0))}a=a+1|0;if((a|0)==2)break;else{b=b+(s<<2)|0;e=e-s|0;k=n;l=c[m>>2]|0}}i=u;return}function OP(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0,p=0.0,q=0,r=0;l=i;do if(!(c[a+12>>2]|0)){d=c[a+8>>2]|0;if((c[a+4>>2]|0)>0){b=c[a>>2]|0;if((d|0)>0){f=0;h=1;k=9;break}else{j=0;h=1;break}}if((d|0)>1){f=0;e=1;k=7}else{i=l;return}}else{d=c[a+8>>2]|0;if((d|0)<=0)if((c[a+4>>2]|0)>1){b=c[a>>2]|0;j=1;h=0;break}else{i=l;return}else{f=1;e=0;k=7}}while(0);if((k|0)==7){b=c[a>>2]|0;h=e;k=9}if((k|0)==9){e=0;do{k=e<<3;q=b+(f<<4)+(k<<2)|0;o=b+(f<<4)+((k|1)<<2)|0;p=+g[o>>2];j=b+(f<<4)+((k|2)<<2)|0;n=+g[j>>2];k=b+(f<<4)+((k|3)<<2)|0;m=+g[k>>2];g[q>>2]=+g[q>>2]*1.2301740646362305;g[o>>2]=p*1.2301740646362305;g[j>>2]=n*1.2301740646362305;g[k>>2]=m*1.2301740646362305;e=e+1|0}while((e|0)!=(d|0));j=f}e=c[a+4>>2]|0;if((e|0)>0){f=0;do{q=f<<3;a=b+(h<<4)+(q<<2)|0;k=b+(h<<4)+((q|1)<<2)|0;m=+g[k>>2];o=b+(h<<4)+((q|2)<<2)|0;n=+g[o>>2];q=b+(h<<4)+((q|3)<<2)|0;p=+g[q>>2];g[a>>2]=+g[a>>2]*1.625732421875;g[k>>2]=m*1.625732421875;g[o>>2]=n*1.625732421875;g[q>>2]=p*1.625732421875;f=f+1|0}while((f|0)!=(e|0))}r=b+(h<<4)|0;a=b+(j+1<<4)|0;f=e-j|0;f=(d|0)<(f|0)?d:f;P$(r,a,d,f,-.4435068666934967);k=b+(j<<4)|0;o=b+(h+1<<4)|0;q=d-h|0;q=(e|0)<(q|0)?e:q;P$(k,o,e,q,-.8829110860824585);P$(r,a,d,f,.05298011749982834);P$(k,o,e,q,1.5861343145370483);i=l;return}function PP(a,b){a=a|0;b=b|0;return}function QP(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;if(!a){i=k;return}b=a+5164|0;d=c[b>>2]|0;if(d){Bfa(d);c[b>>2]=0}b=a+5576|0;d=c[b>>2]|0;if(d){Bfa(d);c[b>>2]=0}b=a+5600|0;d=c[b>>2]|0;if(d){Bfa(d);c[b>>2]=0}b=a+5596|0;d=c[b>>2]|0;if(d){Bfa(d);c[b>>2]=0}b=a+5616|0;d=c[b>>2]|0;if(d){Bfa(d);c[b>>2]=0;c[a+5624>>2]=0;c[a+5620>>2]=0}j=a+5604|0;b=c[j>>2]|0;if(b){h=a+5608|0;d=c[h>>2]|0;if(d){g=0;while(1){e=b+12|0;f=c[e>>2]|0;if(f){Bfa(f);c[e>>2]=0;d=c[h>>2]|0}g=g+1|0;if(g>>>0>=d>>>0)break;else b=b+20|0}b=c[j>>2]|0}Bfa(b);c[j>>2]=0}b=a+5592|0;d=c[b>>2]|0;if(d){Bfa(d);c[b>>2]=0}b=a+5584|0;d=c[b>>2]|0;if(!d){i=k;return}Bfa(d);c[b>>2]=0;c[a+5588>>2]=0;i=k;return}function RP(a,b,c){a=a|0;b=b|0;c=c|0;return 1}function SP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!a)Sa(244256,244152,6865,250056);if(!b)Sa(244296,244152,6866,250056);if(!d)Sa(244312,244152,6867,250056);else{i=e;return (c[a+8>>2]|0)==0&(c[a+184>>2]|0)!=0&(c[a+188>>2]|0)!=0&1|0}return 0}function TP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;if(!b)Sa(250016,244152,7026,250040);if(!a)Sa(244256,244152,7027,250040);if(!d)Sa(244296,244152,7028,250040);if(!e)Sa(244312,244152,7029,250040);h=dz(b)|0;f=ez(b)|0;if(!h){d=1;fz(b);i=k;return d|0}j=0;g=f;f=1;while(1){if(!f)f=0;else f=(Od[c[g>>2]&255](a,d,e)|0)!=0;f=f&1;j=j+1|0;if((j|0)==(h|0))break;else g=g+4|0}fz(b);i=k;return f|0}function UP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+32|0;q=r;n=r+20|0;e=r+8|0;p=r+12|0;m=r+16|0;if(!b)Sa(244296,244152,6896,250128);if(!a)Sa(244256,244152,6897,250128);if(!d)Sa(244312,244152,6898,250128);o=a+8|0;c[o>>2]=1;do if((Jy(b,n,2,d)|0)==2?(oy(n,e,2),(c[e>>2]|0)==65359):0){c[o>>2]=2;g=My(b)|0;g=Iga(g|0,I|0,-2,-1)|0;l=I;j=a+192|0;k=c[j>>2]|0;c[k>>2]=g;c[k+4>>2]=l;k=q;c[k>>2]=g;c[k+4>>2]=l;_y(d,4,250488,q)|0;k=c[j>>2]|0;l=k;if(!(Q$(k,65359,c[l>>2]|0,c[l+4>>2]|0,2)|0)){_y(d,1,250360,q)|0;break}k=a+16|0;if((Jy(b,c[k>>2]|0,2,d)|0)!=2){_y(d,1,244424,q)|0;q=0;i=r;return q|0}oy(c[k>>2]|0,p,2);e=c[p>>2]|0;a:do if((e|0)!=65424){l=a+20|0;g=e;b:while(1){if(g>>>0<65280){e=17;break}else f=243816;while(1){h=c[f>>2]|0;e=(h|0)==0;if(e|(h|0)==(g|0))break;else f=f+12|0}if(e){_y(d,2,250472,q)|0;h=2;while(1){while(1){if((Jy(b,c[k>>2]|0,2,d)|0)!=2){e=23;break b}oy(c[k>>2]|0,n,2);e=c[n>>2]|0;if(e>>>0>=65280){g=243816;break}}while(1){f=c[g>>2]|0;if((f|0)==0|(f|0)==(e|0))break;else g=g+12|0}if(!(c[g+4>>2]&c[o>>2])){e=27;break b}if((f|0)==65424){e=29;break b}else if(f)break;h=h+2|0}e=c[j>>2]|0;f=My(b)|0;if(!(Q$(e,0,f-h|0,0,h)|0)){e=31;break}e=c[g>>2]|0;c[p>>2]=e;if((e|0)==65424)break a;else f=243816;while(1){g=c[f>>2]|0;if((g|0)==0|(g|0)==(e|0))break;else f=f+12|0}}if(!(c[f+4>>2]&c[o>>2])){e=37;break}if((Jy(b,c[k>>2]|0,2,d)|0)!=2){e=39;break}oy(c[k>>2]|0,m,2);g=(c[m>>2]|0)+-2|0;c[m>>2]=g;e=c[k>>2]|0;if(g>>>0>(c[l>>2]|0)>>>0){e=Dfa(e,g)|0;if(!e){e=42;break}c[k>>2]=e;g=c[m>>2]|0;c[l>>2]=g}e=Jy(b,e,g,d)|0;if((e|0)!=(c[m>>2]|0)){e=45;break}if(!(ce[c[f+8>>2]&255](a,c[k>>2]|0,e,d)|0)){e=47;break}e=c[j>>2]|0;h=c[f>>2]|0;f=My(b)|0;g=c[m>>2]|0;if(!(Q$(e,h,-4-g+f|0,0,g+4|0)|0)){e=49;break}if((Jy(b,c[k>>2]|0,2,d)|0)!=2){e=51;break}oy(c[k>>2]|0,p,2);e=c[p>>2]|0;if((e|0)==65424)break a;else g=e}switch(e|0){case 17:{c[q>>2]=g;_y(d,1,250184,q)|0;q=0;i=r;return q|0}case 23:{_y(d,1,244424,q)|0;break}case 27:{_y(d,1,244448,q)|0;break}case 29:{c[p>>2]=65424;break a}case 31:{_y(d,1,250360,q)|0;break}case 37:{_y(d,1,244448,q)|0;q=0;i=r;return q|0}case 39:{_y(d,1,244424,q)|0;q=0;i=r;return q|0}case 42:{Bfa(c[k>>2]|0);c[k>>2]=0;c[l>>2]=0;_y(d,1,244496,q)|0;q=0;i=r;return q|0}case 45:{_y(d,1,244424,q)|0;q=0;i=r;return q|0}case 47:{_y(d,1,250296,q)|0;q=0;i=r;return q|0}case 49:{_y(d,1,250360,q)|0;q=0;i=r;return q|0}case 51:{_y(d,1,244424,q)|0;q=0;i=r;return q|0}}_y(d,1,250240,q)|0;q=0;i=r;return q|0}while(0);_y(d,4,250400,q)|0;b=My(b)|0;q=(c[j>>2]|0)+8|0;c[q>>2]=b+-2;c[q+4>>2]=0;c[o>>2]=8;q=1;i=r;return q|0}while(0);_y(d,1,250160,q)|0;q=0;i=r;return q|0}function VP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;C=D;if(!b)Sa(244256,244152,7064,250088);if(!d)Sa(244296,244152,7065,250088);if(!e)Sa(244312,244152,7066,250088);A=c[b+80>>2]|0;B=b+88|0;m=ea(c[b+112>>2]|0,c[b+116>>2]|0)|0;p=c[A+16>>2]|0;n=p*1080|0;o=c[b+12>>2]|0;p=ea(p<<2,p)|0;a:do if(m){q=o+5596|0;r=o+5612|0;s=o+5604|0;t=o+5608|0;u=o+5624|0;v=o+5616|0;w=o+5576|0;y=0;z=c[b+156>>2]|0;b:while(1){l=z+5576|0;x=c[l>>2]|0;Aga(z|0,o|0,5632)|0;j=z+5628|0;a[j>>0]=a[j>>0]&-2;c[z+5160>>2]=0;c[l>>2]=x;if(c[q>>2]|0){d=Afa(p)|0;c[z+5596>>2]=d;if(!d){d=0;f=31;break}Aga(d|0,c[q>>2]|0,p|0)|0}d=(c[r>>2]|0)*20|0;f=Afa(d)|0;l=z+5604|0;c[l>>2]=f;if(!f){d=0;f=31;break}Aga(f|0,c[s>>2]|0,d|0)|0;d=c[t>>2]|0;if(d){h=0;j=c[l>>2]|0;k=c[s>>2]|0;while(1){g=k+12|0;if(c[g>>2]|0){d=k+16|0;f=Afa(c[d>>2]|0)|0;c[j+12>>2]=f;if(!f){d=0;f=31;break b}Aga(f|0,c[g>>2]|0,c[d>>2]|0)|0;d=c[t>>2]|0}h=h+1|0;if(h>>>0>=d>>>0)break;else{j=j+20|0;k=k+20|0}}}d=(c[u>>2]|0)*20|0;f=Afa(d)|0;g=z+5616|0;c[g>>2]=f;if(!f){d=0;f=31;break}Aga(f|0,c[v>>2]|0,d|0)|0;h=c[u>>2]|0;if(h){j=0;f=c[g>>2]|0;g=c[v>>2]|0;while(1){d=c[g+8>>2]|0;if(d)c[f+8>>2]=(c[l>>2]|0)+(((d-(c[s>>2]|0)|0)/20|0)*20|0);d=c[g+12>>2]|0;if(d)c[f+12>>2]=(c[l>>2]|0)+(((d-(c[s>>2]|0)|0)/20|0)*20|0);j=j+1|0;if(j>>>0>=h>>>0)break;else{f=f+20|0;g=g+20|0}}}Aga(x|0,c[w>>2]|0,n|0)|0;y=y+1|0;if(y>>>0>=m>>>0)break a;else z=z+5632|0}if((f|0)==31){i=D;return d|0}}while(0);f=nB(1)|0;d=b+200|0;c[d>>2]=f;if(!f){C=0;i=D;return C|0}if(rB(f,A,B)|0){C=1;i=D;return C|0}sB(c[d>>2]|0);c[d>>2]=0;_y(e,1,244656,C)|0;C=0;i=D;return C|0}function WP(a,d,e,f,g,h){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;n=i;if(!d)Sa(249936,244152,6483,249960);l=d+40|0;m=c[l>>2]|0;if(!m)Sa(249984,244152,6484,249960);j=c[m+(a*40|0)+20>>2]|0;k=m+(a*40|0)+28|0;d=c[k>>2]|0;do if((j+1|0)>>>0>d>>>0){d=~~(+(d>>>0)+100.0)>>>0;c[k>>2]=d;d=Dfa(c[m+(a*40|0)+24>>2]|0,d*24|0)|0;if(d){j=c[l>>2]|0;c[j+(a*40|0)+24>>2]=d;l=j;j=c[j+(a*40|0)+20>>2]|0;break}Bfa(c[(c[l>>2]|0)+(a*40|0)+24>>2]|0);e=c[l>>2]|0;c[e+(a*40|0)+24>>2]=0;c[e+(a*40|0)+28>>2]=0;c[e+(a*40|0)+20>>2]=0;a=0;i=n;return a|0}else{l=m;d=c[m+(a*40|0)+24>>2]|0}while(0);b[d+(j*24|0)>>1]=e;k=zga(0,f|0,32)|0;m=d+(j*24|0)+8|0;c[m>>2]=k;c[m+4>>2]=I;c[d+(j*24|0)+16>>2]=h;c[l+(a*40|0)+20>>2]=j+1;if((e|0)!=65424){a=1;i=n;return a|0}d=c[l+(a*40|0)+16>>2]|0;if(!d){a=1;i=n;return a|0}a=d+((c[l+(a*40|0)+12>>2]|0)*24|0)|0;c[a>>2]=f;c[a+4>>2]=g;a=1;i=n;return a|0}function XP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;j=l;if(!a){i=l;return}$b(249536,17,1,d|0)|0;c[j>>2]=c[a>>2];_c(d|0,249560,j|0)|0;c[j>>2]=c[a+4>>2];_c(d|0,249576,j|0)|0;c[j>>2]=c[a+8>>2];_c(d|0,249592,j|0)|0;c[j>>2]=c[a+16>>2];_c(d|0,249616,j|0)|0;if((b|0)>0){g=a+5576|0;h=0;do{f=c[g>>2]|0;c[j>>2]=h;_c(d|0,249632,j|0)|0;c[j>>2]=c[f+(h*1080|0)>>2];_c(d|0,249648,j|0)|0;a=f+(h*1080|0)+4|0;c[j>>2]=c[a>>2];_c(d|0,249664,j|0)|0;c[j>>2]=c[f+(h*1080|0)+8>>2];_c(d|0,249688,j|0)|0;c[j>>2]=c[f+(h*1080|0)+12>>2];_c(d|0,249704,j|0)|0;c[j>>2]=c[f+(h*1080|0)+16>>2];_c(d|0,249720,j|0)|0;c[j>>2]=c[f+(h*1080|0)+20>>2];_c(d|0,249744,j|0)|0;$b(249760,23,1,d|0)|0;if(c[a>>2]|0){e=0;do{m=c[f+(h*1080|0)+(e<<2)+944>>2]|0;c[j>>2]=c[f+(h*1080|0)+(e<<2)+812>>2];c[j+4>>2]=m;_c(d|0,249784,j|0)|0;e=e+1|0}while(e>>>0<(c[a>>2]|0)>>>0)}wd(10,d|0)|0;m=f+(h*1080|0)+24|0;c[j>>2]=c[m>>2];_c(d|0,249800,j|0)|0;c[j>>2]=c[f+(h*1080|0)+804>>2];_c(d|0,249816,j|0)|0;$b(249840,20,1,d|0)|0;if((c[m>>2]|0)!=1){a=((c[a>>2]|0)*3|0)+-2|0;if((a|0)>0)k=8}else{a=1;k=8}if((k|0)==8){k=0;e=0;do{m=c[f+(h*1080|0)+(e<<3)+28>>2]|0;c[j>>2]=c[f+(h*1080|0)+(e<<3)+32>>2];c[j+4>>2]=m;_c(d|0,249784,j|0)|0;e=e+1|0}while((e|0)!=(a|0))}wd(10,d|0)|0;c[j>>2]=c[f+(h*1080|0)+808>>2];_c(d|0,249864,j|0)|0;$b(249888,5,1,d|0)|0;h=h+1|0}while((h|0)!=(b|0))}$b(249392,4,1,d|0)|0;i=l;return}function YP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+48|0;y=z;p=z+32|0;x=z+28|0;o=z+24|0;r=z+36|0;t=z+12|0;s=z+8|0;u=z+16|0;q=z+20|0;c[p>>2]=1;e=Afa(1e3)|0;if(!e){_y(d,1,249048,y)|0;y=0;i=z;return y|0}v=a+116|0;w=a+112|0;l=a+200|0;m=a+84|0;n=a+8|0;g=e;f=1e3;k=0;while(1){if(!(vz(a,x,o,r,t,s,u,q,p,b,d)|0)){f=5;break}if(!(c[p>>2]|0)){e=g;f=17;break}j=c[o>>2]|0;if(j>>>0>f>>>0){e=Dfa(g,j)|0;if(!e){f=9;break}else h=j}else{e=g;h=f}g=c[x>>2]|0;if(!(wz(a,g,e,j,b,d)|0)){f=11;break}f=g+1|0;j=ea(c[w>>2]|0,c[v>>2]|0)|0;c[y>>2]=f;c[y+4>>2]=j;_y(d,4,248816,y)|0;j=c[l>>2]|0;if(!(R$(c[(c[c[j+20>>2]>>2]|0)+20>>2]|0,c[j+24>>2]|0,e,c[(c[m>>2]|0)+24>>2]|0)|0)){f=13;break}c[y>>2]=f;_y(d,4,248848,y)|0;j=Ny(b)|0;if((j|0)==0&(I|0)==0?(c[n>>2]|0)==64:0){f=17;break}k=k+1|0;if((k|0)==(ea(c[w>>2]|0,c[v>>2]|0)|0)){f=17;break}else{g=e;f=h}}if((f|0)==5){Bfa(g);y=0;i=z;return y|0}else if((f|0)==9){Bfa(g);w=ea(c[w>>2]|0,c[v>>2]|0)|0;c[y>>2]=(c[x>>2]|0)+1;c[y+4>>2]=w;_y(d,1,248776,y)|0;y=0;i=z;return y|0}else if((f|0)==11){Bfa(e);x=ea(c[w>>2]|0,c[v>>2]|0)|0;c[y>>2]=g+1;c[y+4>>2]=x;_y(d,1,249088,y)|0;y=0;i=z;return y|0}else if((f|0)==13){Bfa(e);y=0;i=z;return y|0}else if((f|0)==17){Bfa(e);y=1;i=z;return y|0}return 0}function ZP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+48|0;x=z;r=z+32|0;p=z+28|0;q=z+24|0;t=z+36|0;v=z+12|0;u=z+8|0;w=z+16|0;s=z+20|0;c[r>>2]=1;e=Afa(1e3)|0;if(!e){_y(d,1,248704,x)|0;y=0;i=z;return y|0}o=a+192|0;g=c[o>>2]|0;j=g+40|0;f=c[j>>2]|0;a:do if(!f){f=ea(c[a+116>>2]|0,c[a+112>>2]|0)|0;h=g+36|0;c[h>>2]=f;f=Cfa(f,40)|0;c[j>>2]=f;b:do if(f){if(c[h>>2]|0){g=0;do{c[f+(g*40|0)+28>>2]=100;c[f+(g*40|0)+20>>2]=0;l=Cfa(100,24)|0;f=c[j>>2]|0;c[f+(g*40|0)+24>>2]=l;g=g+1|0;if(!l)break b}while(g>>>0<(c[h>>2]|0)>>>0)}g=c[a+60>>2]|0;if(!f)break a;else{y=11;break a}}while(0);Bfa(e);y=0;i=z;return y|0}else{g=c[a+60>>2]|0;y=11}while(0);if((y|0)==11)if(c[f+16>>2]|0){if(!(c[f+(g*40|0)+4>>2]|0)){l=a+64|0;l=Iga(c[l>>2]|0,c[l+4>>2]|0,2,0)|0;if(!(vy(b,l,I,d)|0)){_y(d,1,248744,x)|0;Bfa(e);y=0;i=z;return y|0}}else{l=c[f+(g*40|0)+16>>2]|0;l=Iga(c[l>>2]|0,c[l+4>>2]|0,2,0)|0;if(!(vy(b,l,I,d)|0)){_y(d,1,248744,x)|0;Bfa(e);y=0;i=z;return y|0}}f=a+8|0;if((c[f>>2]|0)==256)c[f>>2]=8}c:do if(vz(a,p,q,t,v,u,w,s,r,b,d)|0){k=a+116|0;l=a+112|0;m=a+200|0;n=a+84|0;h=1e3;while(1){if(!(c[r>>2]|0))break;j=c[q>>2]|0;if(j>>>0>h>>>0){h=Dfa(e,j)|0;if(!h){y=25;break}else{e=h;f=j}}else f=h;h=c[p>>2]|0;if(!(wz(a,h,e,j,b,d)|0)){y=27;break}j=(ea(c[l>>2]|0,c[k>>2]|0)|0)+-1|0;c[x>>2]=h;c[x+4>>2]=j;_y(d,4,248816,x)|0;j=c[m>>2]|0;if(!(R$(c[(c[c[j+20>>2]>>2]|0)+20>>2]|0,c[j+24>>2]|0,e,c[(c[n>>2]|0)+24>>2]|0)|0)){y=29;break}c[x>>2]=h;_y(d,4,248848,x)|0;if((h|0)==(g|0)){y=31;break}c[x>>2]=h;c[x+4>>2]=g;_y(d,2,248896,x)|0;if(!(vz(a,p,q,t,v,u,w,s,r,b,d)|0))break c;else h=f}if((y|0)==25){Bfa(e);y=(ea(c[l>>2]|0,c[k>>2]|0)|0)+-1|0;c[x>>2]=c[p>>2];c[x+4>>2]=y;_y(d,1,248776,x)|0;y=0;i=z;return y|0}else if((y|0)==27){Bfa(e);y=0;i=z;return y|0}else if((y|0)==29){Bfa(e);y=0;i=z;return y|0}else if((y|0)==31){y=(c[o>>2]|0)+8|0;y=Iga(c[y>>2]|0,c[y+4>>2]|0,2,0)|0;if(!(vy(b,y,I,d)|0)){_y(d,1,248744,x)|0;y=0;i=z;return y|0}}Bfa(e);y=1;i=z;return y|0}while(0);Bfa(e);y=0;i=z;return y|0}function _P(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=i;i=i+16|0;x=A;j=A+4|0;y=a+36|0;k=c[y>>2]|0;if(!k)Sa(248408,244152,9748,248464);l=a+200|0;z=c[a+40>>2]|0;if(!(AB(c[l>>2]|0,b,d)|0)){_y(f,1,248488,x)|0;e=0;i=A;return e|0}h=c[l>>2]|0;c[h+16>>2]=0;c[a+8>>2]=0;c[j>>2]=0;S$(a,k,j,e,f);d=c[j>>2]|0;b=k+d|0;g=z-d|0;w=a+160|0;if((c[w>>2]|0)==0?(c[(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)+420>>2]|0)!=0:0){c[j>>2]=0;T$(a,b,j,f);v=c[j>>2]|0;d=v+d|0;b=k+d|0;g=g-v|0}c[j>>2]=0;if(!(U$(a,h,b,j,g,e,f)|0)){e=0;i=A;return e|0}b=(c[j>>2]|0)+d|0;ny(k+6|0,b,4);if(!(c[w>>2]|0))v=a+196|0;else{u=a+28|0;v=a+196|0;ny(c[u>>2]|0,c[v>>2]|0,1);t=(c[u>>2]|0)+1|0;c[u>>2]=t;ny(t,b,4);c[u>>2]=(c[u>>2]|0)+4}h=k+b|0;u=z-b|0;q=c[l>>2]|0;r=a+88|0;o=c[a+156>>2]|0;p=c[v>>2]|0;m=V$(r,0,p)|0;s=a+8|0;t=a+12|0;c[t>>2]=(c[t>>2]|0)+1;a:do if(m>>>0>1){n=a+28|0;j=h;d=u;b=0;l=1;while(1){c[s>>2]=l;c[x>>2]=0;S$(a,j,x,e,f);g=c[x>>2]|0;d=d-g|0;c[x>>2]=0;if(!(U$(a,q,j+g|0,x,d,e,f)|0)){b=0;break}B=c[x>>2]|0;k=B+g|0;h=j+k|0;b=g+b+B|0;d=d-B|0;ny(j+6|0,k,4);if(c[w>>2]|0){ny(c[n>>2]|0,c[v>>2]|0,1);B=(c[n>>2]|0)+1|0;c[n>>2]=B;ny(B,k,4);c[n>>2]=(c[n>>2]|0)+4}c[t>>2]=(c[t>>2]|0)+1;l=l+1|0;if(l>>>0>=m>>>0)break a;else j=h}i=A;return b|0}else{d=u;b=0}while(0);l=o+(p*5632|0)+420|0;b:do if(c[l>>2]|0){o=q+16|0;p=a+28|0;j=1;c:while(1){c[o>>2]=j;n=V$(r,j,c[v>>2]|0)|0;if(n){m=0;while(1){c[s>>2]=m;c[x>>2]=0;S$(a,h,x,e,f);g=c[x>>2]|0;d=d-g|0;c[x>>2]=0;if(!(U$(a,q,h+g|0,x,d,e,f)|0)){b=0;break c}B=c[x>>2]|0;b=g+b+B|0;g=B+g|0;k=h+g|0;d=d-B|0;ny(h+6|0,g,4);if(c[w>>2]|0){ny(c[p>>2]|0,c[v>>2]|0,1);B=(c[p>>2]|0)+1|0;c[p>>2]=B;ny(B,g,4);c[p>>2]=(c[p>>2]|0)+4}c[t>>2]=(c[t>>2]|0)+1;m=m+1|0;if(m>>>0>=n>>>0){h=k;break}else h=k}}j=j+1|0;if(j>>>0>(c[l>>2]|0)>>>0)break b}i=A;return b|0}while(0);B=b-u+z|0;if((Ky(e,c[y>>2]|0,B,f)|0)!=(B|0)){B=0;i=A;return B|0}c[v>>2]=(c[v>>2]|0)+1;B=1;i=A;return B|0}function $P(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!a)Sa(244256,244152,4456,248384);if(!d)Sa(244312,244152,4457,248384);if(!b)Sa(244296,244152,4458,248384);a=a+44|0;ny(c[a>>2]|0,65497,2);if((Ky(b,c[a>>2]|0,2,d)|0)!=2){b=0;i=e;return b|0}b=(Ly(b,d)|0)!=0&1;i=e;return b|0}function aQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;h=i;if(!a)Sa(244256,244152,10058,248352);if(!d)Sa(244312,244152,10059,248352);if(!b)Sa(244296,244152,10060,248352);g=(c[a+32>>2]|0)*5|0;k=a+16|0;k=Iga(c[k>>2]|0,c[k+4>>2]|0,6,0)|0;j=I;e=My(b)|0;f=I;if(!(Py(b,k,j,d)|0)){d=0;i=h;return d|0}if((Ky(b,c[a+24>>2]|0,g,d)|0)!=(g|0)){d=0;i=h;return d|0}d=(Py(b,e,f,d)|0)!=0&1;i=h;return d|0}function bQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!a)Sa(244256,244152,4928,248328);if(!d)Sa(244312,244152,4929,248328);if(!b)Sa(244296,244152,4930,248328);a=c[a+192>>2]|0;if(!a){i=e;return 1}b=My(b)|0;d=a;d=Hga(b|0,I|0,c[d>>2]|0,c[d+4>>2]|0)|0;b=a+16|0;c[b>>2]=d;c[b+4>>2]=I;i=e;return 1}function cQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!a)Sa(244256,244152,10086,248304);if(!d)Sa(244312,244152,10087,248304);if(!b)Sa(244296,244152,10088,248304);d=a+200|0;sB(c[d>>2]|0);c[d>>2]=0;d=a+24|0;b=c[d>>2]|0;if(b){Bfa(b);c[d>>2]=0;c[a+28>>2]=0}b=a+36|0;d=c[b>>2]|0;if(!d){a=a+40|0;c[a>>2]=0;i=e;return 1}Bfa(d);c[b>>2]=0;a=a+40|0;c[a>>2]=0;i=e;return 1}function dQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!a)Sa(244256,244152,10118,248272);if(!b)Sa(244296,244152,10119,248272);if(!d)Sa(244312,244152,10120,248272);d=a+44|0;b=c[d>>2]|0;if(!b){a=a+48|0;c[a>>2]=0;i=e;return 1}Bfa(b);c[d>>2]=0;a=a+48|0;c[a>>2]=0;i=e;return 1}function eQ(a,b,c){a=a|0;b=b|0;c=c|0;return 1}function fQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;if(!a)Sa(244256,244152,6829,248136);if(!b)Sa(244296,244152,6830,248136);if(!d)Sa(244312,244152,6831,248136);b=1<>2]|0)+5576>>2]|0)+4>>2];if((c[a+100>>2]|0)>>>0>>0){_y(d,1,248168,e)|0;d=0;i=f;return d|0}if((c[a+104>>2]|0)>>>0>=b>>>0){d=(c[a+8>>2]|0)==0&(c[a+184>>2]|0)!=0&(c[a+188>>2]|0)!=0&1;i=f;return d|0}_y(d,1,248168,e)|0;d=0;i=f;return d|0}function gQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;if(!a)Sa(244256,244152,6620,248112);if(!b)Sa(244296,244152,6621,248112);if(!d)Sa(244312,244152,6622,248112);if((c[a+88>>2]&33280|0)!=33280){h=1;i=k;return h|0}g=ea(c[a+112>>2]|0,c[a+116>>2]|0)|0;if(!g){h=1;i=k;return h|0}h=a+80|0;j=0;d=1;f=c[a+156>>2]|0;while(1){if((c[f+16>>2]|0)==2){d=(c[f+5600>>2]|0)!=0&d;a=c[(c[h>>2]|0)+16>>2]|0;if(a){e=0;b=c[f+5576>>2]|0;while(1){d=(c[b+20>>2]&1^1)&d;e=e+1|0;if(e>>>0>=a>>>0)break;else b=b+1080|0}}}j=j+1|0;if((j|0)==(g|0))break;else f=f+5632|0}i=k;return d|0}function hQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;if(!a)Sa(244256,244152,10139,247912);if(!d)Sa(244312,244152,10140,247912);if(!b)Sa(244296,244152,10141,247912);h=a+88|0;j=a+32|0;k=c[a+80>>2]|0;if(!k)Sa(247960,244152,1657,247936);g=ea(c[a+116>>2]|0,c[a+112>>2]|0)|0;c[j>>2]=0;if(!g){i=l;return 1}e=c[a+156>>2]|0;f=0;while(1){_A(k,h,f);d=e+420|0;b=0;a=0;do{m=V$(h,a,f)|0;c[j>>2]=(c[j>>2]|0)+m;b=m+b|0;a=a+1|0}while(a>>>0<=(c[d>>2]|0)>>>0);c[e+5580>>2]=b;f=f+1|0;if((f|0)==(g|0))break;else e=e+5632|0}i=l;return 1}function iQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!b)Sa(244296,244152,1729,247888);if(!a)Sa(244256,244152,1730,247888);if(!d)Sa(244312,244152,1731,247888);else{a=c[a+44>>2]|0;ny(a,65359,2);b=(Ky(b,a,2,d)|0)==2&1;i=e;return b|0}return 0}function jQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;j=o;if(!b)Sa(244296,244152,1811,247824);if(!a)Sa(244256,244152,1812,247824);if(!d)Sa(244312,244152,1813,247824);k=c[a+80>>2]|0;m=k+16|0;l=(c[m>>2]|0)*3|0;n=l+40|0;e=c[k+24>>2]|0;g=a+48|0;h=a+44|0;f=c[h>>2]|0;do if(n>>>0>(c[g>>2]|0)>>>0){f=Dfa(f,n)|0;if(f){c[h>>2]=f;c[g>>2]=n;break}Bfa(c[h>>2]|0);c[h>>2]=0;c[g>>2]=0;_y(d,1,247848,j)|0;b=0;i=o;return b|0}while(0);h=a+44|0;ny(f,65361,2);ny(f+2|0,l+38|0,2);ny(f+4|0,c[a+88>>2]|0,2);ny(f+6|0,c[k+8>>2]|0,4);ny(f+10|0,c[k+12>>2]|0,4);ny(f+14|0,c[k>>2]|0,4);ny(f+18|0,c[k+4>>2]|0,4);ny(f+22|0,c[a+100>>2]|0,4);ny(f+26|0,c[a+104>>2]|0,4);ny(f+30|0,c[a+92>>2]|0,4);ny(f+34|0,c[a+96>>2]|0,4);ny(f+38|0,c[m>>2]|0,2);if(c[m>>2]|0){g=0;f=f+40|0;while(1){ny(f,(c[e+24>>2]|0)+-1+(c[e+32>>2]<<7)|0,1);ny(f+1|0,c[e>>2]|0,1);ny(f+2|0,c[e+4>>2]|0,1);g=g+1|0;if(g>>>0>=(c[m>>2]|0)>>>0)break;else{f=f+3|0;e=e+52|0}}}b=(Ky(b,c[h>>2]|0,n,d)|0)==(n|0)&1;i=o;return b|0}function kQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;s=t;if(!a)Sa(244256,244152,2322,247608);if(!d)Sa(244312,244152,2323,247608);if(!b)Sa(244296,244152,2324,247608);j=a+196|0;h=c[j>>2]|0;k=a+156|0;l=c[k>>2]|0;e=c[l+(h*5632|0)+5576>>2]|0;p=a+112|0;n=a+116|0;if((ea(c[n>>2]|0,c[p>>2]|0)|0)>>>0<=h>>>0)Sa(246712,244152,8212,246680);o=a+80|0;if(!(c[(c[o>>2]|0)+16>>2]|0))Sa(246752,244152,8213,246680);if(!(c[e>>2]&1))m=5;else m=(c[e+4>>2]|0)+5|0;r=m+9|0;g=a+48|0;f=a+44|0;e=c[f>>2]|0;do if(r>>>0>(c[g>>2]|0)>>>0){e=Dfa(e,r)|0;if(e){c[f>>2]=e;c[g>>2]=r;g=e;break}Bfa(c[f>>2]|0);c[f>>2]=0;c[g>>2]=0;_y(d,1,247632,s)|0;s=0;i=t;return s|0}else g=e;while(0);q=a+44|0;ny(g,65362,2);ny(g+2|0,m+7|0,2);ny(g+4|0,c[l+(h*5632|0)>>2]|0,1);ny(g+5|0,c[l+(h*5632|0)+4>>2]|0,1);ny(g+6|0,c[l+(h*5632|0)+8>>2]|0,2);ny(g+8|0,c[l+(h*5632|0)+16>>2]|0,1);h=c[j>>2]|0;j=c[(c[k>>2]|0)+(h*5632|0)+5576>>2]|0;if((ea(c[n>>2]|0,c[p>>2]|0)|0)>>>0<=h>>>0)Sa(246712,244152,8246,247704);if(!(c[(c[o>>2]|0)+16>>2]|0))Sa(247736,244152,8247,247704);do if(m>>>0>=5){h=j+4|0;ny(g+9|0,(c[h>>2]|0)+-1|0,1);ny(g+10|0,(c[j+8>>2]|0)+-2|0,1);ny(g+11|0,(c[j+12>>2]|0)+-2|0,1);ny(g+12|0,c[j+16>>2]|0,1);ny(g+13|0,c[j+20>>2]|0,1);e=m+-5|0;if(c[j>>2]&1){f=c[h>>2]|0;if(e>>>0>>0){_y(d,1,247784,s)|0;break}if(!f)f=0;else{a=g+14|0;g=0;while(1){ny(a,(c[j+(g<<2)+944>>2]<<4)+(c[j+(g<<2)+812>>2]|0)|0,1);g=g+1|0;f=c[h>>2]|0;if(g>>>0>=f>>>0)break;else a=a+1|0}}e=e-f|0}if(!e){s=(Ky(b,c[q>>2]|0,r,d)|0)==(r|0)&1;i=t;return s|0}else{_y(d,1,247672,s)|0;s=0;i=t;return s|0}}else _y(d,1,247784,s)|0;while(0);_y(d,1,247672,s)|0;s=0;i=t;return s|0}function lQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;r=t;if(!a)Sa(244256,244152,2660,247336);if(!d)Sa(244312,244152,2661,247336);if(!b)Sa(244296,244152,2662,247336);j=a+196|0;q=c[j>>2]|0;k=a+156|0;e=c[(c[k>>2]|0)+(q*5632|0)+5576>>2]|0;n=a+112|0;l=a+116|0;if((ea(c[l>>2]|0,c[n>>2]|0)|0)>>>0<=q>>>0)Sa(247456,244152,8452,247576);m=a+80|0;if(!(c[(c[m>>2]|0)+16>>2]|0))Sa(246752,244152,8453,247576);f=c[e+24>>2]|0;if((f|0)!=1){e=(c[e+4>>2]|0)*3|0;if(!f)p=e+-1|0;else{e=e+-2|0;s=14}}else{e=1;s=14}if((s|0)==14)p=e<<1|1;q=p+4|0;f=a+48|0;g=a+44|0;e=c[g>>2]|0;do if(q>>>0>(c[f>>2]|0)>>>0){e=Dfa(e,q)|0;if(e){c[g>>2]=e;c[f>>2]=q;h=e;break}Bfa(c[g>>2]|0);c[g>>2]=0;c[f>>2]=0;_y(d,1,247360,r)|0;s=0;i=t;return s|0}else h=e;while(0);o=a+44|0;ny(h,65372,2);ny(h+2|0,p+2|0,2);f=h+4|0;g=c[j>>2]|0;j=c[(c[k>>2]|0)+(g*5632|0)+5576>>2]|0;if((ea(c[l>>2]|0,c[n>>2]|0)|0)>>>0<=g>>>0)Sa(247456,244152,8491,247432);if(!(c[(c[m>>2]|0)+16>>2]|0))Sa(247488,244152,8492,247432);g=c[j+24>>2]|0;do if((g|0)!=1){e=(c[j+4>>2]|0)*3|0;a=e+-2|0;if(!g){e=e+-1|0;if(p>>>0>>0){_y(d,1,247536,r)|0;s=34;break}ny(f,c[j+804>>2]<<5,1);if(a){g=0;do{f=f+1|0;ny(f,c[j+(g<<3)+28>>2]<<3,1);g=g+1|0}while((g|0)!=(a|0))}}else s=29}else{a=1;g=1;s=29}while(0);do if((s|0)==29){e=a<<1|1;if(p>>>0>>0){_y(d,1,247536,r)|0;s=34;break}ny(f,(c[j+804>>2]<<5)+g|0,1);if(a){f=h+5|0;g=0;while(1){ny(f,(c[j+(g<<3)+28>>2]<<11)+(c[j+(g<<3)+32>>2]|0)|0,2);g=g+1|0;if((g|0)==(a|0))break;else f=f+2|0}}}while(0);if((s|0)==34){_y(d,1,247400,r)|0;s=0;i=t;return s|0}if((p|0)==(e|0)){s=(Ky(b,c[o>>2]|0,q,d)|0)==(q|0)&1;i=t;return s|0}else{_y(d,1,247400,r)|0;s=0;i=t;return s|0}return 0}function mQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l;if(!a)Sa(244256,244152,3856,247272);if(!d)Sa(244312,244152,3857,247272);if(!b)Sa(244296,244152,3858,247272);j=(c[a+32>>2]|0)*5|0;k=j+6|0;g=a+48|0;f=a+44|0;e=c[f>>2]|0;do if(k>>>0>(c[g>>2]|0)>>>0){e=Dfa(e,k)|0;if(e){c[f>>2]=e;c[g>>2]=k;break}Bfa(c[f>>2]|0);c[f>>2]=0;c[g>>2]=0;_y(d,1,247296,h)|0;a=0;i=l;return a|0}while(0);f=My(b)|0;g=a+16|0;c[g>>2]=f;c[g+4>>2]=I;ny(e,65365,2);ny(e+2|0,j+4|0,2);ny(e+4|0,0,1);ny(e+5|0,80,1);a=(Ky(b,c[a+44>>2]|0,k,d)|0)==(k|0)&1;i=l;return a|0}function nQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l;k=l+4|0;c[k>>2]=0;if(!a)Sa(244256,244152,2938,247176);if(!d)Sa(244312,244152,2939,247176);if(!b)Sa(244296,244152,2940,247176);j=(ea((c[(c[a+80>>2]|0)+16>>2]|0)>>>0<257?7:9,(c[(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)+420>>2]|0)+1|0)|0)+4|0;f=a+48|0;g=a+44|0;e=c[g>>2]|0;do if(j>>>0>(c[f>>2]|0)>>>0){e=Dfa(e,j)|0;if(e){c[g>>2]=e;c[f>>2]=j;break}Bfa(c[g>>2]|0);c[g>>2]=0;c[f>>2]=0;_y(d,1,247200,h)|0;a=0;i=l;return a|0}while(0);T$(a,e,k,d);a=(Ky(b,c[a+44>>2]|0,j,d)|0)==(j|0)&1;i=l;return a|0}function oQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;l=i;if(!a)Sa(244256,244152,4901,247152);if(!d)Sa(244312,244152,4902,247152);if(!b)Sa(244296,244152,4903,247152);j=a+156|0;k=a+80|0;f=c[k>>2]|0;e=c[f+16>>2]|0;if(!e){k=1;i=l;return k|0}h=a+44|0;a=f;f=0;g=c[(c[j>>2]|0)+5576>>2]|0;while(1){if(c[g+808>>2]|0){a=c[(c[j>>2]|0)+5576>>2]|0;o=e>>>0<257?1:2;e=o+6|0;n=c[h>>2]|0;ny(n,65374,2);m=o|4;ny(n+2|0,m,2);ny(n+4|0,f,o);ny(n+m|0,0,1);ny(n+(m+1)|0,c[a+(f*1080|0)+808>>2]|0,1);if((Ky(b,c[h>>2]|0,e,d)|0)!=(e|0)){a=0;e=13;break}a=c[k>>2]|0}f=f+1|0;e=c[a+16>>2]|0;if(f>>>0>=e>>>0){a=1;e=13;break}else g=g+1080|0}if((e|0)==13){i=l;return a|0}return 0}function pQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;h=m;if(!a)Sa(244256,244152,2249,247080);if(!b)Sa(244296,244152,2250,247080);if(!d)Sa(244312,244152,2251,247080);j=c[a+108>>2]|0;k=Dga(j|0)|0;l=k+6|0;g=a+48|0;f=a+44|0;e=c[f>>2]|0;do if(l>>>0>(c[g>>2]|0)>>>0){e=Dfa(e,l)|0;if(e){c[f>>2]=e;c[g>>2]=l;break}Bfa(c[f>>2]|0);c[f>>2]=0;c[g>>2]=0;_y(d,1,247104,h)|0;b=0;i=m;return b|0}while(0);ny(e,65380,2);ny(e+2|0,k+4|0,2);ny(e+4|0,1,2);Aga(e+6|0,j|0,k|0)|0;b=(Ky(b,c[a+44>>2]|0,l,d)|0)==(l|0)&1;i=m;return b|0}function qQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+16|0;v=y;if(!b)Sa(244256,244152,4808,246888);if(!d)Sa(244296,244152,4809,246888);if(!e)Sa(244312,244152,4810,246888);m=c[b+80>>2]|0;h=m+16|0;j=c[h>>2]|0;k=j+6|0;u=b+48|0;x=b+44|0;f=c[x>>2]|0;do if(k>>>0>(c[u>>2]|0)>>>0){f=Dfa(f,k)|0;if(f){c[x>>2]=f;c[u>>2]=k;break}Bfa(c[x>>2]|0);c[x>>2]=0;c[u>>2]=0;_y(e,1,247040,v)|0;d=0;i=y;return d|0}while(0);ny(f,65400,2);ny(f+2|0,j+4|0,2);ny(f+4|0,c[h>>2]|0,2);if(c[h>>2]|0){g=0;j=c[m+24>>2]|0;f=f+6|0;while(1){ny(f,(c[j+24>>2]|0)+-1|c[j+32>>2]<<7,1);g=g+1|0;if(g>>>0>=(c[h>>2]|0)>>>0)break;else{j=j+52|0;f=f+1|0}}}if((Ky(d,c[x>>2]|0,k,e)|0)!=(k|0)){d=0;i=y;return d|0}q=b+196|0;n=c[q>>2]|0;r=b+156|0;l=c[r>>2]|0;m=l+(n*5632|0)+5608|0;a:do if(c[m>>2]|0){k=0;b=c[l+(n*5632|0)+5604>>2]|0;while(1){j=b+16|0;g=c[j>>2]|0;h=g+10|0;f=c[x>>2]|0;if(h>>>0>(c[u>>2]|0)>>>0){f=Dfa(f,h)|0;if(!f)break;c[x>>2]=f;c[u>>2]=h}ny(f,65396,2);ny(f+2|0,g+8|0,2);ny(f+4|0,0,2);ny(f+6|0,c[b+4>>2]<<8|c[b+8>>2]&255|c[b>>2]<<10,2);ny(f+8|0,0,2);Aga(f+10|0,c[b+12>>2]|0,c[j>>2]|0)|0;if((Ky(d,c[x>>2]|0,h,e)|0)!=(h|0)){s=0;w=48;break}k=k+1|0;if(k>>>0>=(c[m>>2]|0)>>>0)break a;else b=b+20|0}if((w|0)==48){i=y;return s|0}Bfa(c[x>>2]|0);c[x>>2]=0;c[u>>2]=0;_y(e,1,247e3,v)|0;d=0;i=y;return d|0}while(0);o=l+(n*5632|0)+5620|0;b:do if(c[o>>2]|0){p=0;b=c[l+(n*5632|0)+5616>>2]|0;while(1){n=b+4|0;m=c[n>>2]|0;g=m>>>0>255;h=g?2:1;g=g?32768:0;m=ea(h,m<<1)|0;k=m+19|0;f=c[x>>2]|0;if(k>>>0>(c[u>>2]|0)>>>0){f=Dfa(f,k)|0;if(!f)break;c[x>>2]=f;c[u>>2]=k}ny(f,65397,2);ny(f+2|0,m+17|0,2);ny(f+4|0,0,2);ny(f+6|0,c[b>>2]|0,1);ny(f+7|0,0,2);ny(f+9|0,1,2);ny(f+11|0,1,1);ny(f+12|0,c[n>>2]|g,2);f=f+14|0;if(!(c[n>>2]|0))m=0;else{j=0;do{ny(f,j,h);f=f+h|0;j=j+1|0;m=c[n>>2]|0}while(j>>>0>>0)}ny(f,m|g,2);f=f+2|0;if(!(c[n>>2]|0))m=f;else{m=0;do{ny(f,m,h);f=f+h|0;m=m+1|0}while(m>>>0<(c[n>>2]|0)>>>0);m=f}f=((a[b+16>>0]^1)&255)<<16&65536;j=c[b+8>>2]|0;if(j)f=c[j+8>>2]|f;j=c[b+12>>2]|0;if(j)f=c[j+8>>2]<<8|f;ny(m,f,3);if((Ky(d,c[x>>2]|0,k,e)|0)!=(k|0)){s=0;w=48;break}p=p+1|0;if(p>>>0>=(c[o>>2]|0)>>>0)break b;else b=b+20|0}if((w|0)==48){i=y;return s|0}Bfa(c[x>>2]|0);c[x>>2]=0;c[u>>2]=0;_y(e,1,246960,v)|0;d=0;i=y;return d|0}while(0);k=c[q>>2]|0;b=c[r>>2]|0;j=c[x>>2]|0;l=b+(k*5632|0)+5620|0;f=c[l>>2]|0;m=f+5|0;do if(m>>>0>(c[u>>2]|0)>>>0){g=Dfa(j,m)|0;if(!g){Bfa(c[x>>2]|0);c[x>>2]=0;c[u>>2]=0;_y(e,1,246920,v)|0;t=1;break}else{c[x>>2]=g;c[u>>2]=m;w=43;break}}else w=43;while(0);if((w|0)==43){ny(j,65399,2);ny(j+2|0,f+3|0,2);ny(j+4|0,c[l>>2]|0,1);if(c[l>>2]|0){h=0;g=j+5|0;f=c[b+(k*5632|0)+5616>>2]|0;while(1){ny(g,c[f>>2]|0,1);h=h+1|0;if(h>>>0>=(c[l>>2]|0)>>>0)break;else{g=g+1|0;f=f+20|0}}}t=(Ky(d,c[x>>2]|0,m,e)|0)!=(m|0)}d=t&1^1;i=y;return d|0}function rQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!a)Sa(244256,244152,4789,246864);if(!d)Sa(244312,244152,4790,246864);if(!b)Sa(244296,244152,4791,246864);else{d=My(b)|0;b=(c[a+192>>2]|0)+8|0;c[b>>2]=d;c[b+4>>2]=I;i=e;return 1}return 0}function sQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;if(!a)Sa(244256,244152,10199,246800);if(!d)Sa(244312,244152,10200,246800);if(!b)Sa(244296,244152,10201,246800);b=nB(0)|0;e=a+200|0;c[e>>2]=b;if(!b){_y(d,1,246824,f)|0;a=0;i=f;return a|0}if(rB(b,c[a+80>>2]|0,a+88|0)|0){a=1;i=f;return a|0}sB(c[e>>2]|0);c[e>>2]=0;a=0;i=f;return a|0}function tQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0.0,G=0.0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;Q=i;if(!b)Sa(244256,244152,4590,246656);if(!e)Sa(244312,244152,4591,246656);if(!d)Sa(244296,244152,4592,246656);M=b+80|0;C=c[M>>2]|0;P=b+156|0;n=c[P>>2]|0;L=C+24|0;B=c[L>>2]|0;h=c[B>>2]|0;f=c[B+4>>2]|0;K=C+16|0;B=ea(c[B+24>>2]|0,c[K>>2]|0)|0;A=My(d)|0;O=b+116|0;e=c[O>>2]|0;N=b+112|0;j=c[N>>2]|0;D=(+(A>>>0)+4294967296.0*+(I|0))/+((ea(j,e)|0)>>>0);A=(a[b+177>>0]&8)==0?2:1;if(e){r=b+92|0;s=b+100|0;t=b+96|0;u=b+104|0;v=C+4|0;y=C+8|0;z=C+12|0;x=+((ea(h<<3,f)|0)>>>0);q=0;d=n;do{m=q;q=q+1|0;if(!j)j=0;else{k=0;do{w=+Sd[A&3](d);l=c[d+8>>2]|0;w=w/+(l>>>0);R=c[r>>2]|0;f=c[s>>2]|0;n=(ea(f,k)|0)+R|0;e=c[C>>2]|0;e=(n|0)>(e|0)?n:e;n=c[t>>2]|0;h=c[u>>2]|0;S=(ea(h,m)|0)+n|0;j=c[v>>2]|0;j=(S|0)>(j|0)?S:j;k=k+1|0;R=(ea(f,k)|0)+R|0;f=c[y>>2]|0;f=(R|0)<(f|0)?R:f;n=(ea(h,q)|0)+n|0;h=c[z>>2]|0;h=(n|0)<(h|0)?n:h;n=d+20|0;o=+g[n>>2];if(o!=0.0)g[n>>2]=+((ea(ea(f-e|0,B)|0,h-j|0)|0)>>>0)/(x*o)-w;if(l>>>0>1){o=+((ea(ea(f-e|0,B)|0,h-j|0)|0)>>>0);e=1;j=d+24|0;while(1){p=+g[j>>2];if(p!=0.0)g[j>>2]=o/(x*p)-w;e=e+1|0;if(e>>>0>=l>>>0)break;else j=j+4|0}}d=d+5632|0;j=c[N>>2]|0}while(k>>>0>>0);e=c[O>>2]|0}}while(q>>>0>>0);if(!e)e=0;else{u=(j|0)==0;p=D+2.0;v=0;d=c[P>>2]|0;do{if(!u){j=c[N>>2]|0;t=j>>>0>1?j:1;q=d+16|0;r=0;s=d;while(1){f=s+20|0;o=+g[f>>2];if(o!=0.0?(x=o-D,g[f>>2]=x,x<30.0):0)g[f>>2]=30.0;l=s+24|0;f=c[s+8>>2]|0;m=f+-1|0;o=+g[l>>2];h=o!=0.0;if(m>>>0>1){k=q+(f<<2)|0;n=1;f=l;do{if(h?(x=o-D,g[f>>2]=x,F=+g[f+-4>>2],x>2]=F+20.0;f=f+4|0;n=n+1|0;o=+g[f>>2];h=o!=0.0}while((n|0)!=(m|0));if(h){E=o;H=k;J=35}}else if(h){E=o;H=l;J=35}if((J|0)==35?(J=0,x=E-p,g[H>>2]=x,G=+g[H+-4>>2],x>2]=G+20.0;r=r+1|0;if(r>>>0>=j>>>0)break;else{q=q+5632|0;s=s+5632|0}}d=d+(t*5632|0)|0}v=v+1|0}while(v>>>0>>0)}}else e=0;l=c[K>>2]|0;if(!l)n=0;else{k=(c[b+100>>2]|0)+-1|0;m=(c[b+104>>2]|0)+-1|0;d=0;f=c[L>>2]|0;h=0;while(1){L=c[f>>2]|0;K=c[f+4>>2]|0;L=ea(((m+K|0)>>>0)/(K>>>0)|0,((k+L|0)>>>0)/(L>>>0)|0)|0;h=(ea(L,c[f+24>>2]|0)|0)+h|0;d=d+1|0;if(d>>>0>=l>>>0)break;else f=f+52|0}n=~~(+(h>>>0)*.1625)>>>0}m=(c[(c[M>>2]|0)+16>>2]|0)+-1|0;f=ea(e,j)|0;if(!f)f=0;else{h=0;k=0;l=c[P>>2]|0;while(1){M=c[l+5580>>2]|0;k=k>>>0>M>>>0?k:M;h=h+1|0;if((h|0)==(f|0))break;else l=l+5632|0}f=k*12|0}l=b+160|0;if(!(c[l>>2]|0)){d=Y$(b)|0;d=(ea((Y$(b)|0)+d|0,m)|0)+f|0;j=c[N>>2]|0;e=c[O>>2]|0}else d=f;f=ea(j,e)|0;if(!f)e=13;else{h=0;j=0;e=c[P>>2]|0;while(1){P=c[e+420>>2]|0;j=j>>>0>P>>>0?j:P;h=h+1|0;if((h|0)==(f|0))break;else e=e+5632|0}e=(j*9|0)+13|0}P=d+n+e|0;c[b+40>>2]=P;P=Afa(P)|0;c[b+36>>2]=P;if(!P){b=0;i=Q;return b|0}if(!(c[l>>2]|0)){b=1;i=Q;return b|0}P=Afa((c[b+32>>2]|0)*5|0)|0;e=P;c[b+24>>2]=e;if(!P){b=0;i=Q;return b|0}c[b+28>>2]=e;b=1;i=Q;return b|0}function uQ(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;u=v;j=c[f+8>>2]|0;a:do if((j|0)!=0?(o=c[j>>2]|0,p=b[j+4>>1]|0,p<<16>>16!=0):0){k=c[d+16>>2]|0;m=0;while(1){j=m&65535;l=e[o+(j*6|0)>>1]|0;if(l>>>0>=k>>>0){s=5;break}j=b[o+(j*6|0)+4>>1]|0;if(j<<16>>16!=0?(n=(j&65535)+-1|0,n>>>0>=k>>>0):0){s=8;break}m=m+1<<16>>16;if((m&65535)>=(p&65535))break a}if((s|0)==5){c[u>>2]=l;c[u+4>>2]=k;_y(g,1,259328,u)|0;u=0;i=v;return u|0}else if((s|0)==8){c[u>>2]=n;c[u+4>>2]=k;_y(g,1,259328,u)|0;u=0;i=v;return u|0}}while(0);j=c[f+12>>2]|0;if((j|0)!=0?(t=c[j+12>>2]|0,(t|0)!=0):0){o=a[j+18>>0]|0;r=o&255;q=o<<24>>24==0;if(q)j=1;else{m=d+16|0;k=0;n=0;j=1;do{k=e[t+(k<<2)>>1]|0;l=c[m>>2]|0;if(k>>>0>=l>>>0){c[u>>2]=k;c[u+4>>2]=l;_y(g,1,259328,u)|0;j=0}n=n+1<<16>>16;k=n&65535}while(k>>>0>>0)}m=Cfa(r,4)|0;if(!m){_y(g,1,259368,u)|0;u=0;i=v;return u|0}if(!q){p=0;f=0;while(1){k=a[t+(p<<2)+3>>0]|0;n=a[t+(p<<2)+2>>0]|0;if((n&255)>=2){s=22;break}h=k&255;do if((k&255)<(o&255)){l=m+(h<<2)|0;if((c[l>>2]|0)!=0&n<<24>>24==1){c[u>>2]=h;_y(g,1,259512,u)|0;h=0;break}if(n<<24>>24!=0|k<<24>>24==0){c[l>>2]=1;h=j;break}else{c[u>>2]=p;c[u+4>>2]=h;_y(g,1,259544,u)|0;h=0;break}}else{c[u>>2]=h;_y(g,1,259456,u)|0;h=0}while(0);f=f+1<<16>>16;p=f&65535;if(p>>>0>=r>>>0)break;else j=h}if((s|0)==22)Sa(259392,257016,801,259432);if(!q){j=0;k=0;do{if((c[m+(j<<2)>>2]|0)==0?(a[t+(j<<2)+2>>0]|0)!=0:0){c[u>>2]=j;_y(g,1,259584,u)|0;h=0}k=k+1<<16>>16;j=k&65535}while(j>>>0>>0)}}else h=j;Bfa(m);if(!h){u=0;i=v;return u|0}}u=1;i=v;return u|0}function vQ(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+64|0;t=v;u=d+8|0;d=c[u>>2]|0;f=c[d>>2]|0;s=b[d+4>>1]|0;if(s<<16>>16){r=a+16|0;m=a+24|0;n=c[q>>2]|0;p=0;do{o=f+(p*6|0)+4|0;d=b[o>>1]|0;do if(d<<16>>16==-1|d<<16>>16==0){if(p>>>0<(c[r>>2]|0)>>>0)b[(c[m>>2]|0)+(p*52|0)+48>>1]=b[f+(p*6|0)+2>>1]|0}else{l=e[f+(p*6|0)>>1]|0;a=c[r>>2]|0;k=(d&65535)+65535&65535;if(!(l>>>0>>0&k>>>0>>0)){c[t>>2]=l;c[t+4>>2]=k;c[t+8>>2]=a;_c(n|0,259296,t|0)|0;break}if((l|0)!=(k|0)){d=c[m>>2]|0;a=d+(l*52|0)|0;g=t+0|0;h=a+0|0;j=g+52|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0));g=a+0|0;h=d+(k*52|0)+0|0;j=g+52|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0));g=(c[m>>2]|0)+(k*52|0)+0|0;h=t+0|0;j=g+52|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0));b[o>>1]=l+1;b[f+(k*6|0)+4>>1]=(e[f+(k*6|0)>>1]|0)+1}b[(c[m>>2]|0)+(l*52|0)+48>>1]=b[f+(p*6|0)+2>>1]|0}while(0);p=p+1|0}while((p&65535)<<16>>16!=s<<16>>16);d=c[u>>2]|0;f=c[d>>2]|0}if(!f){t=d;Bfa(t);c[u>>2]=0;i=v;return}Bfa(f);t=c[u>>2]|0;Bfa(t);c[u>>2]=0;i=v;return}function wQ(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;x=g+12|0;p=c[x>>2]|0;m=c[p+8>>2]|0;n=c[p+4>>2]|0;r=c[p>>2]|0;s=c[p+12>>2]|0;q=a[p+18>>0]|0;t=f+24|0;u=c[t>>2]|0;v=q&255;w=Afa(v*52|0)|0;q=q<<24>>24==0;a:do if(!q){j=0;o=0;while(1){g=a[s+(j<<2)+3>>0]|0;l=b[s+(j<<2)>>1]|0;if(!(a[s+(j<<2)+2>>0]|0)){if(g<<24>>24){g=4;break}g=w+(j*52|0)+0|0;k=u+((l&65535)*52|0)+0|0;h=g+52|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0))}else{if((j|0)!=(g&255|0)){g=7;break}g=w+(j*52|0)+0|0;k=u+((l&65535)*52|0)+0|0;h=g+52|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0))}l=l&65535;c[w+(j*52|0)+44>>2]=Afa(ea(c[u+(l*52|0)+8>>2]<<2,c[u+(l*52|0)+12>>2]|0)|0)|0;c[w+(j*52|0)+24>>2]=d[m+j>>0];c[w+(j*52|0)+32>>2]=d[n+j>>0];o=o+1<<16>>16;j=o&65535;if(j>>>0>=v>>>0){g=10;break}}if((g|0)==4)Sa(259208,257016,862,259224);else if((g|0)==7)Sa(259248,257016,865,259224);else if((g|0)==10){l=(e[p+16>>1]|0)+-1|0;if(q)break;else{j=0;m=0}while(1){g=b[s+(j<<2)>>1]|0;o=c[u+((g&65535)*52|0)+44>>2]|0;if(!o){g=12;break}k=d[s+(j<<2)+3>>0]|0;p=ea(c[w+(k*52|0)+12>>2]|0,c[w+(k*52|0)+8>>2]|0)|0;if(!(a[s+(j<<2)+2>>0]|0)){if(g<<16>>16){g=15;break}g=c[w+(j*52|0)+44>>2]|0;if(!g){g=18;break}if(p){k=0;do{c[g+(k<<2)>>2]=c[o+(k<<2)>>2];k=k+1|0}while((k|0)!=(p|0))}}else{if((j|0)!=(k|0)){g=21;break}k=c[w+(j*52|0)+44>>2]|0;if(!k){g=24;break}if(p){h=0;do{g=c[o+(h<<2)>>2]|0;if((g|0)<0)g=0;else g=(g|0)>(l|0)?l:g;c[k+(h<<2)>>2]=c[r+((ea(g,v)|0)+j<<2)>>2];h=h+1|0}while((h|0)!=(p|0))}}m=m+1<<16>>16;j=m&65535;if(j>>>0>=v>>>0)break a}if((g|0)==12)Sa(259264,257016,882,259224);else if((g|0)==15)Sa(259272,257016,887,259224);else if((g|0)==18)Sa(259288,257016,889,259224);else if((g|0)==21)Sa(259248,257016,895,259224);else if((g|0)==24)Sa(259288,257016,897,259224)}}while(0);h=f+16|0;j=c[h>>2]|0;if(j){g=0;k=0;do{g=c[u+(g*52|0)+44>>2]|0;if(g)Bfa(g);k=k+1<<16>>16;g=k&65535}while(g>>>0>>0)}Bfa(u);c[t>>2]=w;c[h>>2]=v;Bfa(c[(c[x>>2]|0)+4>>2]|0);Bfa(c[(c[x>>2]|0)+8>>2]|0);Bfa(c[c[x>>2]>>2]|0);g=c[x>>2]|0;h=c[g+12>>2]|0;if(!h){w=g;Bfa(w);c[x>>2]=0;i=y;return}Bfa(h);w=c[x>>2]|0;Bfa(w);c[x>>2]=0;i=y;return}function xQ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;if(!b)Sa(257072,257016,567,259184);if(!d)Sa(259056,257016,568,259184);e=Afa(22)|0;if(!e){h=0;i=g;return h|0}f=e+0|0;h=f+22|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(h|0));ny(e,22,4);ny(e+4|0,1768449138,4);ny(e+8|0,c[b+16>>2]|0,4);ny(e+12|0,c[b+12>>2]|0,4);ny(e+16|0,c[b+20>>2]|0,2);ny(e+18|0,c[b+24>>2]|0,1);ny(e+19|0,c[b+28>>2]|0,1);ny(e+20|0,c[b+32>>2]|0,1);ny(e+21|0,c[b+36>>2]|0,1);c[d>>2]=22;h=e;i=g;return h|0}function yQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;f=a+20|0;g=(c[f>>2]|0)+8|0;if(!a)Sa(257072,257016,621,259160);if(!b)Sa(259056,257016,622,259160);h=Afa(g)|0;if(!h){b=0;i=j;return b|0}Cga(h|0,0,g|0)|0;ny(h,g,4);ny(h+4|0,1651532643,4);if(c[f>>2]|0){a=a+72|0;d=0;e=h+8|0;while(1){ny(e,c[(c[a>>2]|0)+(d*12|0)+8>>2]|0,1);d=d+1|0;if(d>>>0>=(c[f>>2]|0)>>>0)break;else e=e+1|0}}c[b>>2]=g;b=h;i=j;return b|0}function zQ(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;if(!a)Sa(257072,257016,690,259032);if(!b)Sa(259056,257016,691,259032);g=a+40|0;e=c[g>>2]|0;if((e+-1|0)>>>0>=2)Sa(259088,257016,692,259032);if((e|0)==1)l=15;else if((e|0)==2)f=8;else{k=0;i=m;return k|0}do if((f|0)==8){e=c[a+112>>2]|0;if(!e)Sa(259128,257016,699,259032);else{l=e+11|0;break}}while(0);j=Afa(l)|0;if(!j){k=0;i=m;return k|0}Cga(j|0,0,l|0)|0;ny(j,l,4);ny(j+4|0,1668246642,4);ny(j+8|0,c[g>>2]|0,1);ny(j+9|0,c[a+52>>2]|0,1);ny(j+10|0,c[a+44>>2]|0,1);h=j+11|0;e=c[g>>2]|0;if((e|0)==1)ny(h,c[a+48>>2]|0,4);else if((e|0)==2?(k=a+112|0,(c[k>>2]|0)!=0):0){f=a+108|0;g=0;e=h;while(1){ny(e,d[(c[f>>2]|0)+g>>0]|0,1);g=g+1|0;if(g>>>0>=(c[k>>2]|0)>>>0)break;else e=e+1|0}}c[b>>2]=l;k=j;i=m;return k|0}function AQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+32|0;u=v;r=v+24|0;s=v+8|0;q=v+12|0;if(!b)Sa(257e3,257016,1800,257616);if(!a)Sa(257072,257016,1801,257616);if(!d)Sa(257088,257016,1802,257616);e=Afa(1024)|0;if(!e){_y(d,1,257648,u)|0;u=0;i=v;return u|0}Cga(e|0,0,1024)|0;o=r+4|0;p=q+4|0;t=a+100|0;m=e;g=1024;a:while(1){while(1){if((Jy(b,r,8,d)|0)!=8)break a;oy(r,q,4);oy(o,p,4);e=c[q>>2]|0;if((e|0)==1){if((Jy(b,r,8,d)|0)!=8)break a;oy(r,s,4);if(c[s>>2]|0){n=17;break a}oy(o,q,4);f=16}else if((e|0)==0?(l=Ny(b)|0,c[q>>2]=l,!((l|0)==(l|0)&0==(I|0))):0){n=14;break a}else f=8;h=c[p>>2]|0;if((h|0)==1785737827){n=20;break a}j=c[q>>2]|0;if(!j){n=24;break a}if(j>>>0>>0){n=26;break a}else l=0;while(1){k=256872+(l<<3)|0;e=l+1|0;if((c[k>>2]|0)==(h|0)){n=30;break}if(e>>>0<3)l=e;else{n=28;break}}if((n|0)==28){n=0;e=j-f|0}else if((n|0)==30){n=0;e=j-f|0;if(k)break}c[t>>2]=c[t>>2]|2147483647;l=Oy(b,e,0,d)|0;if(!((l|0)==(e|0)&(I|0)==0)){n=39;break a}}if(e>>>0>g>>>0){f=Dfa(m,e)|0;if(!f){n=33;break}else g=e}else f=m;if((Jy(b,f,e,d)|0)!=(e|0)){n=35;break}if(!(ce[c[256872+(l<<3)+4>>2]&255](a,f,e,d)|0)){n=37;break}else m=f}if((n|0)==14)Sa(257992,257016,458,257968);else if((n|0)==17)_y(d,1,258024,u)|0;else if((n|0)==20){e=c[t>>2]|0;if(!(e&4)){_y(d,1,257704,u)|0;Bfa(m);u=0;i=v;return u|0}else{c[t>>2]=e|8;Bfa(m);u=1;i=v;return u|0}}else if((n|0)==24){_y(d,1,257736,u)|0;Bfa(m);u=0;i=v;return u|0}else if((n|0)==26){c[u>>2]=j;c[u+4>>2]=h;_y(d,1,257776,u)|0;Bfa(m);u=0;i=v;return u|0}else if((n|0)==33){Bfa(m);_y(d,1,257808,u)|0;u=0;i=v;return u|0}else if((n|0)==35){_y(d,1,257856,u)|0;Bfa(f);u=0;i=v;return u|0}else if((n|0)==37){Bfa(f);u=0;i=v;return u|0}else if((n|0)==39){_y(d,1,257912,u)|0;Bfa(m);u=0;i=v;return u|0}Bfa(m);u=1;i=v;return u|0}function BQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;if(!b)Sa(258904,257016,1902,258928);if(!a)Sa(257072,257016,1903,258928);if(!d)Sa(257e3,257016,1904,258928);if(!e)Sa(257088,257016,1905,258928);h=dz(b)|0;f=ez(b)|0;if(!h){d=1;fz(b);i=k;return d|0}j=0;g=f;f=1;while(1){if(!f)f=0;else f=(Od[c[g>>2]&255](a,d,e)|0)!=0;f=f&1;j=j+1|0;if((j|0)==(h|0))break;else g=g+4|0}fz(b);i=k;return f|0}function CQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;h=j;g=j+8|0;if(!a)Sa(257072,257016,1491,258944);if(!b)Sa(257344,257016,1492,258944);if(!d)Sa(257088,257016,1493,258944);if(!(Qy(b)|0))Sa(258968,257016,1494,258944);e=My(b)|0;f=I;a=a+80|0;k=a;k=Hga(e|0,f|0,c[k>>2]|0,c[k+4>>2]|0)|0;ny(g,k,4);ny(g+4|0,1785737827,4);if(!(Py(b,c[a>>2]|0,c[a+4>>2]|0,d)|0)){_y(d,1,259e3,h)|0;h=0;i=j;return h|0}if((Ky(b,g,8,d)|0)!=8){_y(d,1,259e3,h)|0;h=0;i=j;return h|0}if(Py(b,e,f,d)|0){h=1;i=j;return h|0}_y(d,1,259e3,h)|0;h=0;i=j;return h|0}function DQ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=i;i=i+16|0;d=e;if(!b)Sa(257344,257016,1528,258208);if(!a)Sa(257072,257016,1529,258208);if(!c)Sa(257088,257016,1530,258208);else{ny(d,12,4);ny(d+4|0,1783636e3,4);ny(d+8|0,218793738,4);d=(Ky(b,d,12,c)|0)==12&1;i=e;return d|0}return 0}function EQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;f=a+64|0;h=(c[f>>2]<<2)+16|0;if(!b)Sa(257344,257016,1441,258096);if(!d)Sa(257088,257016,1443,258096);j=Afa(h)|0;if(!j){_y(d,1,258120,k)|0;j=0;i=l;return j|0}Cga(j|0,0,h|0)|0;ny(j,h,4);ny(j+4|0,1718909296,4);ny(j+8|0,c[a+56>>2]|0,4);ny(j+12|0,c[a+60>>2]|0,4);g=j+16|0;if(c[f>>2]|0){a=a+68|0;e=0;do{ny(g,c[(c[a>>2]|0)+(e<<2)>>2]|0,4);e=e+1|0}while(e>>>0<(c[f>>2]|0)>>>0)}a=(Ky(b,j,h,d)|0)==(h|0);if(!a)_y(d,1,258160,k)|0;Bfa(j);j=a&1;i=l;return j|0}function FQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;if(!a)Sa(257072,257016,2122,258072);if(!b)Sa(257e3,257016,2123,258072);if(!d)Sa(257088,257016,2124,258072);else{f=My(b)|0;a=a+88|0;c[a>>2]=f;c[a+4>>2]=I;b=Oy(b,24,0,d)|0;b=(b|0)==24&(I|0)==0&1;i=e;return b|0}return 0}function GQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;if(!b)Sa(263032,262552,799,263048);if(!a)Sa(263064,262552,800,263048);if((ea(c[b+28>>2]|0,c[b+24>>2]|0)|0)>>>0<=d>>>0)Sa(263080,262552,801,263048);e=c[b+68>>2]|0;m=(c[e+(d*5632|0)+420>>2]|0)+1|0;b=Cfa(m,232)|0;if(!b){m=0;i=n;return m|0}Cga(b|0,0,m*232|0)|0;if(!m){m=b;i=n;return m|0}l=e+(d*5632|0)+5576|0;h=c[a+16>>2]|0;e=h;j=b;k=0;a:while(1){a=Cfa(e,16)|0;g=j+196|0;c[g>>2]=a;if(!a){e=11;break}c[j+192>>2]=e;Cga(a|0,0,e<<4|0)|0;if(!e)e=0;else{f=0;while(1){a=c[g>>2]|0;e=(c[l>>2]|0)+(f*1080|0)+4|0;d=Afa(c[e>>2]<<4)|0;c[a+(f<<4)+12>>2]=d;if(!d){e=14;break a}e=c[e>>2]|0;c[a+(f<<4)+8>>2]=e;Cga(d|0,0,e<<4|0)|0;f=f+1|0;if(f>>>0>=h>>>0){e=h;break}}}k=k+1|0;if(k>>>0>=m>>>0){e=17;break}else j=j+232|0}if((e|0)==11){XA(b,m);m=0;i=n;return m|0}else if((e|0)==14){XA(b,m);m=0;i=n;return m|0}else if((e|0)==17){i=n;return b|0}return 0}function HQ(a,b,d,e,f,g,h,j,k,l,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0;K=i;if(!b)Sa(262536,262552,691,262968);if(!a)Sa(262600,262552,692,262968);o=c[b+24>>2]|0;if((ea(c[b+28>>2]|0,o)|0)>>>0<=d>>>0)Sa(263e3,262552,693,262968);q=c[(c[b+68>>2]|0)+(d*5632|0)+5576>>2]|0;p=c[a+24>>2]|0;J=(d>>>0)%(o>>>0)|0;H=(d>>>0)/(o>>>0)|0;G=b+4|0;E=b+12|0;D=(ea(c[E>>2]|0,J)|0)+(c[G>>2]|0)|0;F=c[a>>2]|0;c[e>>2]=(D|0)>(F|0)?D:F;G=(ea(c[E>>2]|0,J+1|0)|0)+(c[G>>2]|0)|0;J=c[a+8>>2]|0;c[f>>2]=(G|0)<(J|0)?G:J;J=b+8|0;G=b+16|0;E=(ea(c[G>>2]|0,H)|0)+(c[J>>2]|0)|0;F=c[a+4>>2]|0;c[g>>2]=(E|0)>(F|0)?E:F;J=(ea(c[G>>2]|0,H+1|0)|0)+(c[J>>2]|0)|0;H=c[a+12>>2]|0;c[h>>2]=(J|0)<(H|0)?J:H;c[l>>2]=0;c[m>>2]=0;c[j>>2]=2147483647;c[k>>2]=2147483647;H=a+16|0;if(!(c[H>>2]|0)){i=K;return}else J=0;while(1){s=c[n+(J<<2)>>2]|0;o=c[p>>2]|0;if(!o){o=9;break}d=o+-1|0;a=(d+(c[e>>2]|0)|0)/(o|0)|0;G=p+4|0;b=c[G>>2]|0;if(!b){o=11;break}F=b+-1|0;r=(F+(c[g>>2]|0)|0)/(b|0)|0;d=(d+(c[f>>2]|0)|0)/(o|0)|0;b=(F+(c[h>>2]|0)|0)/(b|0)|0;F=q+4|0;o=c[F>>2]|0;if(o>>>0>(c[m>>2]|0)>>>0){c[m>>2]=o;o=c[F>>2]|0}if(o){D=Iga(a|0,((a|0)<0)<<31>>31|0,-1,-1)|0;E=I;B=Iga(r|0,((r|0)<0)<<31>>31|0,-1,-1)|0;C=I;z=Iga(d|0,((d|0)<0)<<31>>31|0,-1,-1)|0;A=I;x=Iga(b|0,((b|0)<0)<<31>>31|0,-1,-1)|0;y=I;w=0;while(1){o=o+-1|0;d=c[q+(w<<2)+812>>2]|0;r=c[q+(w<<2)+944>>2]|0;c[s>>2]=d;c[s+4>>2]=r;u=c[p>>2]<>2]<>2]|0;c[j>>2]=(b|0)<(u|0)?b:u;u=c[k>>2]|0;c[k>>2]=(u|0)<(v|0)?u:v;v=1<>31;b=Iga(D|0,E|0,v|0,u|0)|0;b=zga(b|0,I|0,o|0)|0;t=Iga(B|0,C|0,v|0,u|0)|0;t=zga(t|0,I|0,o|0)|0;a=Iga(z|0,A|0,v|0,u|0)|0;a=zga(a|0,I|0,o|0)|0;u=Iga(x|0,y|0,v|0,u|0)|0;u=zga(u|0,I|0,o|0)|0;v=1<>31|0,-1,-1)|0;v=Iga(L|0,I|0,v|0,((v|0)<0)<<31>>31|0)|0;v=zga(v|0,I|0,r|0)|0;if((b|0)==(a|0))b=0;else{L=1<>31|0,-1,-1)|0;L=Iga(a|0,I|0,L|0,((L|0)<0)<<31>>31|0)|0;L=zga(L|0,I|0,d|0)|0;b=(L<>d<>d}if((t|0)==(u|0))d=0;else d=(v<>r<>r;c[s+8>>2]=b;c[s+12>>2]=d;d=ea(d,b)|0;if(d>>>0>(c[l>>2]|0)>>>0)c[l>>2]=d;w=w+1|0;if(w>>>0>=(c[F>>2]|0)>>>0)break;else s=s+16|0}}J=J+1|0;if(J>>>0>=(c[H>>2]|0)>>>0){o=24;break}else{p=p+52|0;q=q+1080|0}}if((o|0)==9)Sa(262720,262728,105,262768);else if((o|0)==11)Sa(262720,262728,105,262768);else if((o|0)==24){i=K;return}}function IQ(a,b,d,e,f,g,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0;m=i;if(!a)Sa(262536,262552,869,262848);if((ea(c[a+28>>2]|0,c[a+24>>2]|0)|0)>>>0<=b>>>0)Sa(262784,262552,870,262848);a=c[a+68>>2]|0;l=(c[a+(b*5632|0)+420>>2]|0)+1|0;c[a+(b*5632|0)+500>>2]=c[a+(b*5632|0)+428>>2];c[a+(b*5632|0)+516>>2]=c[a+(b*5632|0)+440>>2];c[a+(b*5632|0)+496>>2]=c[a+(b*5632|0)+424>>2];c[a+(b*5632|0)+512>>2]=c[a+(b*5632|0)+436>>2];c[a+(b*5632|0)+508>>2]=c[a+(b*5632|0)+432>>2];c[a+(b*5632|0)+492>>2]=0;c[a+(b*5632|0)+460>>2]=c[a+(b*5632|0)+456>>2];c[a+(b*5632|0)+504>>2]=0;c[a+(b*5632|0)+520>>2]=h;c[a+(b*5632|0)+524>>2]=d;c[a+(b*5632|0)+528>>2]=e;c[a+(b*5632|0)+532>>2]=f;c[a+(b*5632|0)+536>>2]=g;c[a+(b*5632|0)+540>>2]=j;c[a+(b*5632|0)+544>>2]=k;if(l>>>0<=1){i=m;return}a=a+(b*5632|0)+572|0;b=1;while(1){c[a+76>>2]=c[a+4>>2];c[a+92>>2]=c[a+16>>2];c[a+72>>2]=c[a>>2];c[a+88>>2]=c[a+12>>2];n=c[a+8>>2]|0;c[a+84>>2]=n;c[a+36>>2]=c[a+32>>2];c[a+80>>2]=0;c[a+68>>2]=n>>>0>(c[a+-64>>2]|0)>>>0?n:0;c[a+96>>2]=h;c[a+100>>2]=d;c[a+104>>2]=e;c[a+108>>2]=f;c[a+112>>2]=g;c[a+116>>2]=j;c[a+120>>2]=k;b=b+1|0;if((b|0)==(l|0))break;else a=a+148|0}i=m;return}function JQ(a,f,g,h,j){a=a|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0;o=i;k=c[a>>2]|0;m=b[f>>1]|0;n=m&255;if(!((n|0)!=0&(m&20480|0)==0)){i=o;return}l=k+100|0;c[l>>2]=k+(d[264152+(n|h<<8)>>0]<<2)+24;if(DA(k)|0){m=m>>>4&255;c[l>>2]=k+(d[263384+m>>0]<<2)+24;n=DA(k)|0;l=d[263128+m>>0]|0;m=l^n;c[g>>2]=(n|0)!=(l|0)?0-j|0:j;j=c[a+32>>2]|0;a=f+(0-j<<1)|0;g=f+(j<<1)|0;l=f+(~j<<1)|0;b[l>>1]=e[l>>1]|2;b[a>>1]=b[a>>1]|b[263112+(m<<1)>>1];a=f+(1-j<<1)|0;b[a>>1]=e[a>>1]|4;a=f+-2|0;b[a>>1]=b[a>>1]|b[263112+(m+2<<1)>>1];b[f>>1]=e[f>>1]|4096;a=f+2|0;b[a>>1]=b[a>>1]|b[263112+(m+4<<1)>>1];a=f+(j+-1<<1)|0;b[a>>1]=e[a>>1]|1;b[g>>1]=b[g>>1]|b[263112+(m+6<<1)>>1];j=f+(j+1<<1)|0;b[j>>1]=e[j>>1]|8}b[f>>1]=e[f>>1]|16384;i=o;return}function KQ(a,f,g,h,j){a=a|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0;n=i;k=c[a>>2]|0;m=b[f>>1]|0;if(m&20480){h=b[f>>1]|0;h=h&65535;h=h&49151;h=h&65535;b[f>>1]=h;i=n;return}l=k+100|0;c[l>>2]=k+(d[264152+(m&255|h<<8)>>0]<<2)+24;if(!(DA(k)|0)){h=b[f>>1]|0;h=h&65535;h=h&49151;h=h&65535;b[f>>1]=h;i=n;return}h=m>>>4&255;c[l>>2]=k+(d[263384+h>>0]<<2)+24;l=DA(k)|0;h=d[263128+h>>0]|0;m=h^l;c[g>>2]=(l|0)!=(h|0)?0-j|0:j;h=c[a+32>>2]|0;l=f+(0-h<<1)|0;j=f+(h<<1)|0;g=f+(~h<<1)|0;b[g>>1]=e[g>>1]|2;b[l>>1]=b[l>>1]|b[263112+(m<<1)>>1];l=f+(1-h<<1)|0;b[l>>1]=e[l>>1]|4;l=f+-2|0;b[l>>1]=b[l>>1]|b[263112+(m+2<<1)>>1];b[f>>1]=e[f>>1]|4096;l=f+2|0;b[l>>1]=b[l>>1]|b[263112+(m+4<<1)>>1];l=f+(h+-1<<1)|0;b[l>>1]=e[l>>1]|1;b[j>>1]=b[j>>1]|b[263112+(m+6<<1)>>1];h=f+(h+1<<1)|0;b[h>>1]=e[h>>1]|8;h=b[f>>1]|0;h=h&65535;h=h&49151;h=h&65535;b[f>>1]=h;i=n;return}function LQ(b,d,e,f,g,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0,N=0;N=i;s=c[f+28>>2]|0;L=c[f+32>>2]|0;M=c[f+36>>2]|0;r=c[(c[d+20>>2]|0)+((c[f+24>>2]|0)*44|0)+24>>2]|0;if(!(c[e>>2]&2))I=g;else{a[g>>0]=-1;a[g+1>>0]=-111;a[g+2>>0]=0;a[g+3>>0]=4;I=d+840|0;a[g+4>>0]=(c[I>>2]|0)>>>8;a[g+5>>0]=c[I>>2];k=k+-6|0;I=g+6|0}J=r+(s*136|0)+24|0;if((M|0)==0?(c[J>>2]|0)!=0:0){p=r+(s*136|0)+28|0;q=0;while(1){f=c[p+20>>2]|0;CB(c[f+(L*40|0)+32>>2]|0);n=f+(L*40|0)+36|0;CB(c[n>>2]|0);o=ea(c[f+(L*40|0)+20>>2]|0,c[f+(L*40|0)+16>>2]|0)|0;if(o){f=f+(L*40|0)+24|0;d=p+28|0;m=0;do{H=c[f>>2]|0;c[H+(m*48|0)+36>>2]=0;FB(c[n>>2]|0,m,(c[d>>2]|0)-(c[H+(m*48|0)+28>>2]|0)|0);m=m+1|0}while((m|0)!=(o|0))}q=q+1|0;if(q>>>0>=(c[J>>2]|0)>>>0)break;else p=p+36|0}}G=ey()|0;hy(G,I,k);jy(G,1,1);H=r+(s*136|0)+28|0;if(c[J>>2]|0){C=M+1|0;E=H;F=0;while(1){r=c[E+20>>2]|0;D=ea(c[r+(L*40|0)+20>>2]|0,c[r+(L*40|0)+16>>2]|0)|0;o=r+(L*40|0)+24|0;f=(D|0)==0;if(!f){q=r+(L*40|0)+32|0;m=c[o>>2]|0;d=0;while(1){if((c[m+36>>2]|0)==0?(c[(c[m+4>>2]|0)+(M*24|0)>>2]|0)!=0:0)FB(c[q>>2]|0,d,M);d=d+1|0;if((d|0)==(D|0))break;else m=m+48|0}if(!f){B=r+(L*40|0)+32|0;A=r+(L*40|0)+36|0;y=c[o>>2]|0;z=0;while(1){f=(c[y+4>>2]|0)+(M*24|0)|0;x=y+36|0;if(!(c[x>>2]|0))GB(G,c[B>>2]|0,z,C);else jy(G,(c[f>>2]|0)!=0&1,1);q=c[f>>2]|0;if(q){if(!(c[x>>2]|0)){c[y+32>>2]=3;GB(G,c[A>>2]|0,z,999);q=c[f>>2]|0}do if((q|0)==1)jy(G,0,1);else if((q|0)!=2){if(q>>>0<6){jy(G,q+-3|12,4);break}if(q>>>0<37){jy(G,q+-6|480,9);break}if(q>>>0<165)jy(G,q+-37|65408,16)}else jy(G,2,2);while(0);n=c[x>>2]|0;p=c[f>>2]|0;w=p+n|0;v=y+8|0;if(n>>>0>>0){s=y+32|0;d=0;q=0;m=0;t=(c[v>>2]|0)+(n*24|0)|0;u=n;while(1){m=m+1|0;q=(c[t+16>>2]|0)+q|0;if((a[t+20>>0]&1)==0?(u|0)!=(n+-1+p|0):0)r=q;else{if((q|0)>1){r=0;while(1){q=q>>1;if((q|0)<=1)break;else r=r+1|0}o=r+2|0}else o=1;r=c[s>>2]|0;if((m|0)>1){q=0;do{m=m>>1;q=q+1|0}while((m|0)>1)}else q=0;r=o-r-q|0;d=(d|0)>(r|0)?d:r;r=0;m=0}u=u+1|0;if((u|0)==(w|0))break;else{q=r;t=t+24|0}}if((d|0)>0){q=d;do{q=q+-1|0;jy(G,1,1)}while((q|0)>0);q=r}else q=r}else{d=0;q=0;m=0}jy(G,0,1);p=y+32|0;c[p>>2]=(c[p>>2]|0)+d;d=c[x>>2]|0;if(d>>>0>>0){n=(c[v>>2]|0)+(d*24|0)|0;while(1){m=m+1|0;r=(c[n+16>>2]|0)+q|0;if((a[n+20>>0]&1)==0?(d|0)!=((c[x>>2]|0)+-1+(c[f>>2]|0)|0):0)q=r;else{o=c[p>>2]|0;if((m|0)>1){q=0;do{m=m>>1;q=q+1|0}while((m|0)>1)}else q=0;jy(G,r,q+o|0);q=0;m=0}d=d+1|0;if((d|0)==(w|0))break;else n=n+24|0}}}z=z+1|0;if((z|0)==(D|0))break;else y=y+48|0}}}F=F+1|0;if(F>>>0>=(c[J>>2]|0)>>>0)break;else E=E+36|0}}if(!(ly(G)|0)){fy(G);b=0;i=N;return b|0}d=gy(G)|0;f=I+d|0;k=k-d|0;fy(G);if(c[e>>2]&4){a[f>>0]=-1;a[I+(d+1)>>0]=-110;k=k+-2|0;f=I+(d+2)|0}u=(l|0)!=0;if(u?(c[l+12>>2]|0)!=0:0){I=f-g|0;e=(c[(c[l+88>>2]|0)+(b*592|0)+548>>2]|0)+(c[l+8>>2]<<5)+8|0;c[e>>2]=I;c[e+4>>2]=((I|0)<0)<<31>>31}d=c[J>>2]|0;a:do if(d){v=l+12|0;w=l+8|0;x=l+88|0;s=H;t=0;b:while(1){q=c[s+20>>2]|0;p=ea(c[q+(L*40|0)+20>>2]|0,c[q+(L*40|0)+16>>2]|0)|0;q=c[q+(L*40|0)+24>>2]|0;if(p){if(u){n=0;while(1){r=c[q+4>>2]|0;m=r+(M*24|0)|0;if(c[m>>2]|0){d=r+(M*24|0)+4|0;o=c[d>>2]|0;if(o>>>0>k>>>0){f=0;k=84;break b}Aga(f|0,c[r+(M*24|0)+16>>2]|0,o|0)|0;e=q+36|0;c[e>>2]=(c[e>>2]|0)+(c[m>>2]|0);e=c[d>>2]|0;f=f+e|0;k=k-e|0;if((c[v>>2]|0)!=0?(e=(c[(c[x>>2]|0)+(b*592|0)+548>>2]|0)+(c[w>>2]<<5)+24|0,K=+h[r+(M*24|0)+8>>3]+ +h[e>>3],h[e>>3]=K,+h[l>>3]>3]=K}n=n+1|0;if(n>>>0>=p>>>0)break;else q=q+48|0}}else{r=0;while(1){m=c[q+4>>2]|0;d=m+(M*24|0)|0;if(c[d>>2]|0){o=m+(M*24|0)+4|0;n=c[o>>2]|0;if(n>>>0>k>>>0){f=0;k=84;break b}Aga(f|0,c[m+(M*24|0)+16>>2]|0,n|0)|0;e=q+36|0;c[e>>2]=(c[e>>2]|0)+(c[d>>2]|0);e=c[o>>2]|0;k=k-e|0;f=f+e|0}r=r+1|0;if(r>>>0>=p>>>0)break;else q=q+48|0}}d=c[J>>2]|0}t=t+1|0;if(t>>>0>=d>>>0)break a;else s=s+36|0}if((k|0)==84){i=N;return f|0}}while(0);if(f>>>0>>0)Sa(265888,265904,757,265928);c[j>>2]=f-g+(c[j>>2]|0);b=1;i=N;return b|0}function MQ(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+16|0;t=I+4|0;H=I;c[H>>2]=h;v=c[f+28>>2]|0;G=f+24|0;u=c[d+((c[G>>2]|0)*44|0)+24>>2]|0;E=f+36|0;if((c[E>>2]|0)==0?(s=u+(v*136|0)+24|0,l=c[s>>2]|0,(l|0)!=0):0){r=f+32|0;o=0;p=u+(v*136|0)+28|0;while(1){d=c[r>>2]|0;m=c[p+20>>2]|0;if((c[p+8>>2]|0)!=(c[p>>2]|0)?(c[p+12>>2]|0)!=(c[p+4>>2]|0):0){CB(c[m+(d*40|0)+32>>2]|0);CB(c[m+(d*40|0)+36>>2]|0);l=ea(c[m+(d*40|0)+20>>2]|0,c[m+(d*40|0)+16>>2]|0)|0;if(l){n=0;d=c[m+(d*40|0)+24>>2]|0;while(1){c[d+44>>2]=0;c[d+48>>2]=0;n=n+1|0;if((n|0)==(l|0))break;else d=d+56|0}}l=c[s>>2]|0}o=o+1|0;if(o>>>0>=l>>>0)break;else p=p+36|0}}do if(c[e>>2]&2){d=c[H>>2]|0;if((a[d>>0]|0)==-1?(a[d+1>>0]|0)==-111:0){c[H>>2]=d+6;break}$b(265776,28,1,c[q>>2]|0)|0}while(0);B=ey()|0;if(!B){h=0;i=I;return h|0}do if(!(a[b+92>>0]&1))if(!(a[e+5628>>0]&1)){C=c[H>>2]|0;c[t>>2]=h+k-C;D=H;break}else{D=e+5160|0;C=c[D>>2]|0;t=e+5172|0;break}else{D=b+32|0;C=c[D>>2]|0;t=b+36|0}while(0);iy(B,C,c[t>>2]|0);if(!(ky(B,1)|0)){my(B)|0;l=gy(B)|0;d=C+l|0;fy(B);do if(c[e>>2]&4){if(k>>>0<2){$b(265808,41,1,c[q>>2]|0)|0;break}if((a[d>>0]|0)==-1?(a[C+(l+1)>>0]|0)==-110:0){d=C+(l+2)|0;break}$b(265856,28,1,c[q>>2]|0)|0}while(0);k=c[D>>2]|0;e=d-k|0;c[t>>2]=(c[t>>2]|0)-e;c[D>>2]=k+e;c[g>>2]=0;c[j>>2]=(c[H>>2]|0)-h;h=1;i=I;return h|0}A=u+(v*136|0)+24|0;d=c[A>>2]|0;a:do if(d){y=f+32|0;z=e+5576|0;x=0;w=u+(v*136|0)+28|0;b:while(1){n=c[y>>2]|0;l=c[w+20>>2]|0;if(((c[w+8>>2]|0)!=(c[w>>2]|0)?(c[w+12>>2]|0)!=(c[w+4>>2]|0):0)?(F=ea(c[l+(n*40|0)+20>>2]|0,c[l+(n*40|0)+16>>2]|0)|0,(F|0)!=0):0){b=l+(n*40|0)+32|0;f=l+(n*40|0)+36|0;u=w+28|0;v=0;r=c[l+(n*40|0)+24>>2]|0;while(1){s=r+44|0;if(!(c[s>>2]|0))d=HB(B,c[b>>2]|0,v,(c[E>>2]|0)+1|0)|0;else d=ky(B,1)|0;c:do if(!d)c[r+40>>2]=0;else{if(!(c[s>>2]|0)){d=0;while(1)if(!(HB(B,c[f>>2]|0,v,d)|0))d=d+1|0;else break;c[r+24>>2]=1-d+(c[u>>2]|0);c[r+28>>2]=3}do if(ky(B,1)|0)if(ky(B,1)|0){d=ky(B,2)|0;if((d|0)!=3){d=d+3|0;break}d=ky(B,5)|0;if((d|0)==31){d=(ky(B,7)|0)+37|0;break}else{d=d+6|0;break}}else d=2;else d=1;while(0);m=r+40|0;c[m>>2]=d;d=0;while(1)if(!(ky(B,1)|0))break;else d=d+1|0;o=r+28|0;c[o>>2]=(c[o>>2]|0)+d;d=c[s>>2]|0;do if(!d){l=c[(c[z>>2]|0)+((c[G>>2]|0)*1080|0)+16>>2]|0;s=r+52|0;if(!(c[s>>2]|0)){c[s>>2]=10;n=r+4|0;d=Dfa(c[n>>2]|0,320)|0;if(!d){d=64;break b}c[n>>2]=d}else d=c[r+4>>2]|0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0;if(l&4){c[d+20>>2]=1;d=0;break}d=d+20|0;if(!(l&1)){c[d>>2]=109;d=0;break}else{c[d>>2]=10;d=0;break}}else{n=d+-1|0;p=c[r+4>>2]|0;if((c[p+(n<<5)+8>>2]|0)!=(c[p+(n<<5)+20>>2]|0)){d=n;break}if(!(Z$(r,d,c[(c[z>>2]|0)+((c[G>>2]|0)*1080|0)+16>>2]|0,0)|0)){d=67;break b}}while(0);p=r+4|0;m=c[m>>2]|0;while(1){l=c[p>>2]|0;s=(c[l+(d<<5)+20>>2]|0)-(c[l+(d<<5)+8>>2]|0)|0;s=(s|0)<(m|0)?s:m;c[l+(d<<5)+24>>2]=s;l=c[o>>2]|0;if(s>>>0>1){n=0;while(1){n=n+1|0;if(s>>>0>3)s=s>>>1;else{s=n;break}}}else s=0;n=ky(B,s+l|0)|0;l=c[p>>2]|0;c[l+(d<<5)+28>>2]=n;m=m-(c[l+(d<<5)+24>>2]|0)|0;if((m|0)<=0)break c;d=d+1|0;if(!(Z$(r,d,c[(c[z>>2]|0)+((c[G>>2]|0)*1080|0)+16>>2]|0,0)|0)){d=73;break b}}}while(0);v=v+1|0;if(v>>>0>=F>>>0)break;else r=r+56|0}d=c[A>>2]|0}x=x+1|0;if(x>>>0>=d>>>0)break a;else w=w+36|0}if((d|0)==64){Bfa(c[n>>2]|0);c[n>>2]=0;c[s>>2]=0;fy(B);h=0;i=I;return h|0}else if((d|0)==67){fy(B);h=0;i=I;return h|0}else if((d|0)==73){fy(B);h=0;i=I;return h|0}}while(0);if(!(my(B)|0)){fy(B);h=0;i=I;return h|0}l=gy(B)|0;d=C+l|0;fy(B);do if(c[e>>2]&4){if(k>>>0<2){$b(265808,41,1,c[q>>2]|0)|0;break}if((a[d>>0]|0)==-1?(a[C+(l+1)>>0]|0)==-110:0){d=C+(l+2)|0;break}$b(265856,28,1,c[q>>2]|0)|0}while(0);k=c[D>>2]|0;e=d-k|0;c[t>>2]=(c[t>>2]|0)-e;c[D>>2]=k+e;c[g>>2]=1;c[j>>2]=(c[H>>2]|0)-h;h=1;i=I;return h|0}function NQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;g=a+24|0;b=c[g>>2]|0;if(!b){i=h;return}f=c[a+28>>2]|0;e=(f>>>0)/48|0;if(f>>>0>47){f=0;while(1){a=c[b>>2]|0;if(a){Bfa(a+-1|0);c[b>>2]=0}a=b+4|0;d=c[a>>2]|0;if(d){Bfa(d);c[a>>2]=0}a=b+8|0;d=c[a>>2]|0;if(d){Bfa(d);c[a>>2]=0}f=f+1|0;if(f>>>0>=e>>>0)break;else b=b+48|0}b=c[g>>2]|0}Bfa(b);c[g>>2]=0;i=h;return}function OQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;g=a+24|0;b=c[g>>2]|0;if(!b){i=h;return}f=c[a+28>>2]|0;e=(f>>>0)/56|0;if(f>>>0>55){f=0;while(1){a=c[b>>2]|0;if(a){Bfa(a);c[b>>2]=0}d=b+4|0;a=c[d>>2]|0;if(a){Bfa(a);c[d>>2]=0}f=f+1|0;if(f>>>0>=e>>>0)break;else b=b+56|0}b=c[g>>2]|0}Bfa(b);c[g>>2]=0;i=h;return}function PQ(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,g=0,h=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+32|0;D=E;x=c[b>>2]|0;if(x>>>0>1e5){b=1;i=E;return b|0}y=b+4|0;o=c[y>>2]|0;if((o|0)<0|(o|0)>(1e5-x|0)){b=1;i=E;return b|0}z=b+8|0;f=c[z>>2]|0;if(f>>>0>1e5){b=1;i=E;return b|0}A=b+12|0;j=c[A>>2]|0;if((j|0)<0|(j|0)>(1e5-f|0)){b=1;i=E;return b|0}B=b+16|0;s=c[B>>2]|0;if(s>>>0>1e5){b=1;i=E;return b|0}C=b+20|0;t=c[C>>2]|0;if((t|0)<0|(t|0)>(1e5-s|0)){b=1;i=E;return b|0}n=c[b+24>>2]|0;if(n>>>0>1e5){b=1;i=E;return b|0}w=c[b+28>>2]|0;if((w|0)<0|(w|0)>(1e5-n|0)){b=1;i=E;return b|0}d=(f|0)==(s|0);p=(o|0)==(t|0);do if(!(d|p)){e=+S(+(+(f-s|0)*+(o-t|0)/7.0+.5));if(e<=2147483647.0&e>=-2147483648.0){m=~~e;break}else{b=2;i=E;return b|0}}else m=0;while(0);g=(j|0)==(t|0);r=(x|0)==(s|0);do if(!(g|r)){e=+S(+(+(x-s|0)*+(j-t|0)/7.0+.5));if(e<=2147483647.0&e>=-2147483648.0){h=~~e;break}else{b=2;i=E;return b|0}}else h=0;while(0);u=m-h|0;q=(w|0)==(t|0);do if(!(d|q)){e=+S(+(+(f-s|0)*+(w-t|0)/7.0+.5));if(e<=2147483647.0&e>=-2147483648.0){f=~~e;break}else{b=2;i=E;return b|0}}else f=0;while(0);l=(n|0)==(s|0);do if(!(g|l)){e=+S(+(+(j-t|0)*+(n-s|0)/7.0+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=2;i=E;return b|0}}else d=0;while(0);if((f|0)==(d|0)){b=1;i=E;return b|0}g=(w|0)==0|(m|0)==(h|0);do if(!g){e=+S(+(+(w|0)*+(u|0)/+(f-d|0)+.5));if(e<=2147483647.0&e>=-2147483648.0){m=~~e;break}else{b=1;i=E;return b|0}}else m=0;while(0);if((m|0)<=(w|0)){b=1;i=E;return b|0}do if(!(p|l)){e=+S(+(+(o-t|0)*+(n-s|0)/7.0+.5));if(e<=2147483647.0&e>=-2147483648.0){f=~~e;break}else{b=2;i=E;return b|0}}else f=0;while(0);do if(!(r|q)){e=+S(+(+(x-s|0)*+(w-t|0)/7.0+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=2;i=E;return b|0}}else d=0;while(0);if((f|0)==(d|0)){b=1;i=E;return b|0}do if(!g){e=+S(+(+(w|0)*+(u|0)/+(f-d|0)+.5));if(e<=2147483647.0&e>=-2147483648.0){l=~~e;break}else{b=1;i=E;return b|0}}else l=0;while(0);if((l|0)<=(w|0)){b=1;i=E;return b|0}e=+S(+(1.0e10/+(w|0)+.5));if(e<=2147483647.0&e>=-2147483648.0)f=~~e;else f=0;k=+(m|0);e=+S(+(1.0e10/k+.5));if(e<=2147483647.0&e>=-2147483648.0)d=~~e;else d=0;j=f-d|0;v=+(l|0);e=+S(+(1.0e10/v+.5));if(e<=2147483647.0&e>=-2147483648.0)n=~~e;else n=0;o=j-n|0;if((o|0)<1){b=1;i=E;return b|0}if(!m){b=1;i=E;return b|0}do if(x){e=+S(+(+(x|0)*1.0e5/k+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=1;i=E;return b|0}}else d=0;while(0);c[a>>2]=d;f=a+4|0;d=c[y>>2]|0;do if(d){e=+S(+(+(d|0)*1.0e5/k+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=1;i=E;return b|0}}else d=0;while(0);c[f>>2]=d;g=a+8|0;f=1e5-(c[b>>2]|0)|0;d=c[y>>2]|0;do if((f|0)!=(d|0)){e=+S(+(+(f-d|0)*1.0e5/k+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=1;i=E;return b|0}}else d=0;while(0);c[g>>2]=d;f=a+12|0;d=c[z>>2]|0;if(!l){b=1;i=E;return b|0}do if(d){e=+S(+(+(d|0)*1.0e5/v+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=1;i=E;return b|0}}else d=0;while(0);c[f>>2]=d;f=a+16|0;d=c[A>>2]|0;do if(d){e=+S(+(+(d|0)*1.0e5/v+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=1;i=E;return b|0}}else d=0;while(0);c[f>>2]=d;g=a+20|0;f=1e5-(c[z>>2]|0)|0;d=c[A>>2]|0;do if((f|0)!=(d|0)){e=+S(+(+(f-d|0)*1.0e5/v+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=1;i=E;return b|0}}else d=0;while(0);c[g>>2]=d;f=a+24|0;d=c[B>>2]|0;h=(j|0)==(n|0);do if(!((d|0)==0|h)){e=+S(+(+(o|0)*+(d|0)/1.0e5+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=1;i=E;return b|0}}else d=0;while(0);c[f>>2]=d;f=a+28|0;d=c[C>>2]|0;do if(!((d|0)==0|h)){e=+S(+(+(o|0)*+(d|0)/1.0e5+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=1;i=E;return b|0}}else d=0;while(0);c[f>>2]=d;g=a+32|0;f=1e5-(c[B>>2]|0)|0;d=c[C>>2]|0;do if(!((f|0)==(d|0)|h)){e=+S(+(+(o|0)*+(f-d|0)/1.0e5+.5));if(e<=2147483647.0&e>=-2147483648.0){d=~~e;break}else{b=1;i=E;return b|0}}else d=0;while(0);c[g>>2]=d;d=RQ(D,a)|0;if(d){b=d;i=E;return b|0}b=(QQ(b,D,5)|0)==0&1;i=E;return b|0}function QQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;g=c[a+24>>2]|0;f=c[b+24>>2]|0;if((g|0)<(f-d|0)|(g|0)>(f+d|0)){i=e;return 0}f=c[a+28>>2]|0;g=c[b+28>>2]|0;if((f|0)<(g-d|0)|(f|0)>(g+d|0)){i=e;return 0}f=c[a>>2]|0;g=c[b>>2]|0;if((f|0)<(g-d|0)|(f|0)>(g+d|0)){i=e;return 0}f=c[a+4>>2]|0;g=c[b+4>>2]|0;if((f|0)<(g-d|0)|(f|0)>(g+d|0)){i=e;return 0}f=c[a+8>>2]|0;g=c[b+8>>2]|0;if((f|0)<(g-d|0)|(f|0)>(g+d|0)){i=e;return 0}f=c[a+12>>2]|0;g=c[b+12>>2]|0;if((f|0)<(g-d|0)|(f|0)>(g+d|0)){i=e;return 0}f=c[a+16>>2]|0;g=c[b+16>>2]|0;if((f|0)<(g-d|0)|(f|0)>(g+d|0)){i=e;return 0}else{f=c[a+20>>2]|0;g=c[b+20>>2]|0;i=e;return ((f|0)<(g-d|0)|(f|0)>(g+d|0))&1^1|0}return 0}function RQ(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;e=c[b>>2]|0;f=b+4|0;n=(c[f>>2]|0)+e+(c[b+8>>2]|0)|0;if(!n){a=1;i=o;return a|0}do if(e){d=+S(+(+(e|0)*1.0e5/+(n|0)+.5));if(d<=2147483647.0&d>=-2147483648.0){e=~~d;break}else{a=1;i=o;return a|0}}else e=0;while(0);c[a>>2]=e;g=a+4|0;e=c[f>>2]|0;do if(e){d=+S(+(+(e|0)*1.0e5/+(n|0)+.5));if(d<=2147483647.0&d>=-2147483648.0){e=~~d;break}else{a=1;i=o;return a|0}}else e=0;while(0);c[g>>2]=e;j=c[b>>2]|0;k=c[f>>2]|0;h=b+12|0;g=c[h>>2]|0;l=b+16|0;f=(c[l>>2]|0)+g+(c[b+20>>2]|0)|0;e=a+8|0;if(!f){a=1;i=o;return a|0}do if(g){d=+S(+(+(g|0)*1.0e5/+(f|0)+.5));if(d<=2147483647.0&d>=-2147483648.0){g=~~d;break}else{a=1;i=o;return a|0}}else g=0;while(0);c[e>>2]=g;e=a+12|0;g=c[l>>2]|0;do if(g){d=+S(+(+(g|0)*1.0e5/+(f|0)+.5));if(d<=2147483647.0&d>=-2147483648.0){g=~~d;break}else{a=1;i=o;return a|0}}else g=0;while(0);c[e>>2]=g;n=f+n|0;m=(c[h>>2]|0)+j|0;k=(c[l>>2]|0)+k|0;j=b+24|0;g=c[j>>2]|0;l=b+28|0;f=(c[l>>2]|0)+g+(c[b+32>>2]|0)|0;e=a+16|0;if(!f){a=1;i=o;return a|0}do if(g){d=+S(+(+(g|0)*1.0e5/+(f|0)+.5));if(d<=2147483647.0&d>=-2147483648.0){g=~~d;break}else{a=1;i=o;return a|0}}else g=0;while(0);c[e>>2]=g;e=a+20|0;g=c[l>>2]|0;do if(g){d=+S(+(+(g|0)*1.0e5/+(f|0)+.5));if(d<=2147483647.0&d>=-2147483648.0){g=~~d;break}else{a=1;i=o;return a|0}}else g=0;while(0);c[e>>2]=g;h=n+f|0;e=m+(c[j>>2]|0)|0;f=c[l>>2]|0;g=a+24|0;if(!h){a=1;i=o;return a|0}do if(e){d=+S(+(+(e|0)*1.0e5/+(h|0)+.5));if(d<=2147483647.0&d>=-2147483648.0){e=~~d;break}else{a=1;i=o;return a|0}}else e=0;while(0);c[g>>2]=e;e=k+f|0;f=a+28|0;if(!e){c[f>>2]=0;a=0;i=o;return a|0}d=+S(+(+(e|0)*1.0e5/+(h|0)+.5));if(!(d<=2147483647.0&d>=-2147483648.0)){a=1;i=o;return a|0}c[f>>2]=~~d;a=0;i=o;return a|0}function SQ(c,d,f,g,h){c=c|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+224|0;p=r+24|0;q=r;j=(d|0)!=0;if(j){d=d+74|0;b[d>>1]=e[d>>1]|0|32768}d=tC(p,196,0,268968)|0;f=tC(p,196,tC(p,d+79|0,d,f)|0,268984)|0;d=g>>>24;if((((d|0)==32|(d+-48|0)>>>0<10|(d+-65|0)>>>0<26|(d+-97|0)>>>0<26?(k=g>>>16,l=k&255,(l|0)==32|(l+-48|0)>>>0<10|(l+-65|0)>>>0<26|(l+-97|0)>>>0<26):0)?(m=g>>>8,n=m&255,(n|0)==32|(n+-48|0)>>>0<10|(n+-65|0)>>>0<26|(n+-97|0)>>>0<26):0)?(o=g&255,(o|0)==32|(o+-48|0)>>>0<10|(o+-65|0)>>>0<26|(o+-97|0)>>>0<26):0){a[p+f>>0]=39;a[p+(f+1)>>0]=(d+-32|0)>>>0<95?d&255:63;a[p+(f+2)>>0]=(l+-32|0)>>>0<95?k&255:63;a[p+(f+3)>>0]=(n+-32|0)>>>0<95?m&255:63;a[p+(f+4)>>0]=(o+-32|0)>>>0<95?g&255:63;a[p+(f+5)>>0]=39;a[p+(f+6)>>0]=58;a[p+(f+7)>>0]=32;g=f+8|0;tC(p,196,g,h)|0;g=j?2:1;FC(c,p,g);i=r;return}g=tC(p,196,tC(p,196,f,uC(q,q+24|0,3,g)|0)|0,268992)|0;tC(p,196,g,h)|0;g=j?2:1;FC(c,p,g);i=r;return}function TQ(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0.0,h=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;m=8-e|0;n=1<>2]=o;h=(e|0)==0;g=+(f|0)*.00001;if((f+-95e3|0)>>>0>1e4){e=0;do{d=$C(a,512)|0;c[o+(e<<2)>>2]=d;f=0;do{b[d+(f<<1)>>1]=~~+S(+(+V(+(j*+(((f<>>0)),+g)*65535.0+.5));f=f+1|0}while((f|0)!=256);e=e+1|0}while(e>>>0>>0);i=p;return}else f=0;do{e=$C(a,512)|0;c[o+(f<<2)>>2]=e;if(h){d=0;do{b[e+(d<<1)>>1]=(d<>1]=(((((d<>>0)/(k>>>0)|0;d=d+1|0}while((d|0)!=256)}f=f+1|0}while(f>>>0>>0);i=p;return}function UQ(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;e=b>>>24;if((e+-65|0)>>>0>57|(e+-91|0)>>>0<6){a[c>>0]=91;a[c+1>>0]=a[269320+(b>>>28)>>0]|0;a[c+2>>0]=a[269320+(e&15)>>0]|0;a[c+3>>0]=93;f=4}else{a[c>>0]=e;f=1}e=b>>>16;g=e&255;if((g+-65|0)>>>0>57|(g+-91|0)>>>0<6){a[c+f>>0]=91;a[c+(f+1)>>0]=a[269320+(b>>>20&15)>>0]|0;a[c+(f|2)>>0]=a[269320+(e&15)>>0]|0;a[c+(f+3)>>0]=93;f=f+4|0}else{a[c+f>>0]=e;f=f+1|0}e=b>>>8;g=e&255;if((g+-65|0)>>>0>57|(g+-91|0)>>>0<6){a[c+f>>0]=91;a[c+(f+1)>>0]=a[269320+(b>>>12&15)>>0]|0;a[c+(f+2)>>0]=a[269320+(e&15)>>0]|0;a[c+(f+3)>>0]=93;e=f+4|0}else{a[c+f>>0]=e;e=f+1|0}g=b&255;if((g+-65|0)>>>0>57|(g+-91|0)>>>0<6){a[c+e>>0]=91;a[c+(e+1)>>0]=a[269320+(b>>>4&15)>>0]|0;a[c+(e+2)>>0]=a[269320+(b&15)>>0]|0;a[c+(e+3)>>0]=93;e=e+4|0}else{a[c+e>>0]=b;e=e+1|0}if(!d){a[c+e>>0]=0;i=h;return}a[c+e>>0]=58;a[c+(e+1)>>0]=32;b=0;g=e+2|0;while(1){f=a[d+b>>0]|0;if(!(f<<24>>24)){e=g;break}b=b+1|0;e=g+1|0;a[c+g>>0]=f;if((b|0)>=195)break;else g=e}a[c+e>>0]=0;i=h;return}function VQ(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;B=c[f>>2]|0;A=f+8|0;j=a[A>>0]|0;if(j<<24>>24){if(!(j<<24>>24==2&(h|0)!=0)){i=C;return}z=f+9|0;j=a[z>>0]|0;if(j<<24>>24==8){if(B){p=b[h+2>>1]&255;q=b[h+4>>1]&255;n=b[h+6>>1]&255;m=g+((B<<2)+-1)|0;o=0;k=g+((c[f+4>>2]|0)+-1)|0;while(1){j=k+-2|0;l=k+-1|0;if(((a[j>>0]|0)==p<<24>>24?(a[l>>0]|0)==q<<24>>24:0)?(a[k>>0]|0)==n<<24>>24:0)h=0;else h=-1;a[m>>0]=h;a[m+-1>>0]=a[k>>0]|0;a[m+-2>>0]=a[l>>0]|0;a[m+-3>>0]=a[j>>0]|0;o=o+1|0;if((o|0)==(B|0))break;else{m=m+-4|0;k=k+-3|0}}}}else if(j<<24>>24==16?(p=b[h+2>>1]|0,t=(p&65535)>>>8&65535,l=b[h+4>>1]|0,u=(l&65535)>>>8&65535,k=b[h+6>>1]|0,v=(k&65535)>>>8&65535,(B|0)!=0):0){s=p&255;r=l&255;n=k&255;m=g+((B<<3)+-1)|0;o=0;q=g+((c[f+4>>2]|0)+-1)|0;while(1){k=q+-5|0;h=q+-4|0;if((((((d[k>>0]|0)==(t|0)?(a[h>>0]|0)==s<<24>>24:0)?(w=q+-3|0,(d[w>>0]|0)==(u|0)):0)?(x=q+-2|0,(a[x>>0]|0)==r<<24>>24):0)?(y=q+-1|0,(d[y>>0]|0)==(v|0)):0)?(a[q>>0]|0)==n<<24>>24:0){a[m>>0]=0;a[m+-1>>0]=0;j=y;p=x;l=w}else{a[m>>0]=-1;a[m+-1>>0]=-1;j=q+-1|0;p=q+-2|0;l=q+-3|0}a[m+-2>>0]=a[q>>0]|0;a[m+-3>>0]=a[j>>0]|0;a[m+-4>>0]=a[p>>0]|0;a[m+-5>>0]=a[l>>0]|0;a[m+-6>>0]=a[h>>0]|0;a[m+-7>>0]=a[k>>0]|0;o=o+1|0;if((o|0)==(B|0))break;else{m=m+-8|0;q=q+-6|0}}}a[A>>0]=6;a[f+10>>0]=4;j=d[z>>0]<<2;a[f+11>>0]=j;j=j&252;if(j>>>0>7)j=ea(j>>>3,B)|0;else j=((ea(j,B)|0)+7|0)>>>3;c[f+4>>2]=j;i=C;return}p=(h|0)!=0;if(p)k=e[h+8>>1]|0;else k=0;q=f+9|0;j=a[q>>0]|0;if((j&255)<8){j=j&255;if((j|0)==2){k=(k&3)*85|0;j=B+-1|0;if(B){h=g+j|0;n=0;m=(B<<1)+6&6^6;l=g+(j>>>2)|0;while(1){j=(d[l>>0]|0)>>>m&3;a[h>>0]=j<<2|j|j<<4|j<<6;j=(m|0)==6;n=n+1|0;if((n|0)==(B|0))break;else{h=h+-1|0;m=j?0:m+2|0;l=j?l+-1|0:l}}}}else if((j|0)==4){k=(k&15)*17|0;j=B+-1|0;if(B){h=g+j|0;n=0;m=B<<2&4;l=g+(j>>>1)|0;while(1){j=(d[l>>0]|0)>>>m&15;a[h>>0]=j<<4|j;j=(m|0)==4;n=n+1|0;if((n|0)==(B|0))break;else{h=h+-1|0;m=j?0:4;l=j?l+-1|0:l}}}}else if((j|0)==1){k=0-(k&1)&255;j=B+-1|0;if(B){h=g+j|0;n=0;m=B+7&7^7;l=g+(j>>>3)|0;while(1){a[h>>0]=((d[l>>0]&1<>31;j=(m|0)==7;n=n+1|0;if((n|0)==(B|0))break;else{h=h+-1|0;m=j?0:m+1|0;l=j?l+-1|0:l}}}}a[q>>0]=8;a[f+11>>0]=8;c[f+4>>2]=B;j=8}if(!p){i=C;return}if(j<<24>>24==8){if(B){k=k&255;h=g+((B<<1)+-1)|0;l=0;j=g+(B+-1)|0;while(1){a[h>>0]=((a[j>>0]|0)!=k<<24>>24)<<31>>31;a[h+-1>>0]=a[j>>0]|0;l=l+1|0;if((l|0)==(B|0))break;else{h=h+-2|0;j=j+-1|0}}}}else if(j<<24>>24==16?(o=c[f+4>>2]|0,(B|0)!=0):0){n=k>>>8&255;k=k&255;h=g+((o<<1)+-1)|0;m=0;l=g+(o+-1)|0;while(1){j=l+-1|0;if((a[j>>0]|0)==n<<24>>24?(a[l>>0]|0)==k<<24>>24:0){a[h>>0]=0;a[h+-1>>0]=0}else{a[h>>0]=-1;a[h+-1>>0]=-1}a[h+-2>>0]=a[l>>0]|0;a[h+-3>>0]=a[j>>0]|0;m=m+1|0;if((m|0)==(B|0))break;else{h=h+-4|0;l=l+-2|0}}}a[A>>0]=4;a[f+10>>0]=2;j=d[q>>0]<<1;a[f+11>>0]=j;j=j&254;if(j>>>0>7)j=ea(j>>>3,B)|0;else j=((ea(j,B)|0)+7|0)>>>3;c[f+4>>2]=j;i=C;return}function WQ(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;m=c[b>>2]|0;k=b+9|0;f=a[k>>0]|0;if((f&255)<=7){i=n;return}l=b+8|0;g=a[l>>0]|0;if(g&2){i=n;return}do if(!(g<<24>>24))if(f<<24>>24==8){f=m+-1|0;if(!m)break;g=e+(f+(m<<1))|0;h=0;f=e+f|0;while(1){a[g>>0]=a[f>>0]|0;a[g+-1>>0]=a[f>>0]|0;a[g+-2>>0]=a[f>>0]|0;h=h+1|0;if((h|0)==(m|0))break;else{g=g+-3|0;f=f+-1|0}}}else{f=(m<<1)+-1|0;if(!m)break;g=e+(f+(m<<2))|0;h=0;f=e+f|0;while(1){a[g>>0]=a[f>>0]|0;e=f+-1|0;a[g+-1>>0]=a[e>>0]|0;a[g+-2>>0]=a[f>>0]|0;a[g+-3>>0]=a[e>>0]|0;a[g+-4>>0]=a[f>>0]|0;a[g+-5>>0]=a[e>>0]|0;h=h+1|0;if((h|0)==(m|0))break;else{g=g+-6|0;f=f+-2|0}}}else if(g<<24>>24==4)if(f<<24>>24==8){f=m<<1;g=f+-1|0;if(!m)break;h=e+(g+f)|0;j=0;f=e+g|0;while(1){e=f+-1|0;a[h>>0]=a[f>>0]|0;a[h+-1>>0]=a[e>>0]|0;a[h+-2>>0]=a[e>>0]|0;a[h+-3>>0]=a[e>>0]|0;j=j+1|0;if((j|0)==(m|0))break;else{h=h+-4|0;f=f+-2|0}}}else{f=m<<2;g=f+-1|0;if(!m)break;h=e+(g+f)|0;j=0;f=e+g|0;while(1){a[h>>0]=a[f>>0]|0;g=f+-2|0;a[h+-1>>0]=a[f+-1>>0]|0;a[h+-2>>0]=a[g>>0]|0;e=f+-3|0;a[h+-3>>0]=a[e>>0]|0;a[h+-4>>0]=a[g>>0]|0;a[h+-5>>0]=a[e>>0]|0;a[h+-6>>0]=a[g>>0]|0;a[h+-7>>0]=a[e>>0]|0;j=j+1|0;if((j|0)==(m|0))break;else{h=h+-8|0;f=f+-4|0}}}while(0);e=b+10|0;f=(d[e>>0]|0)+2|0;a[e>>0]=f;a[l>>0]=d[l>>0]|0|2;f=ea(d[k>>0]|0,f&255)|0;a[b+11>>0]=f;f=f&255;if(f>>>0>7)f=ea(f>>>3,m)|0;else f=((ea(f,m)|0)+7|0)>>>3;c[b+4>>2]=f;i=n;return}function XQ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+64|0;f=h;g=b+220|0;e=c[g>>2]|0;if(e){a[f>>0]=e>>>24;a[f+1>>0]=e>>>16;a[f+2>>0]=e>>>8;a[f+3>>0]=e;tC(f,64,4,272264)|0;AC(b,f);c[g>>2]=0}e=b+224|0;c[e>>2]=0;c[b+228>>2]=0;c[b+236>>2]=0;c[b+240>>2]=0;f=b+212|0;if(!(c[f>>2]&2)){e=iI(e,272280,56)|0;if(!e){c[f>>2]=c[f>>2]|2;f=7}else f=8}else{e=gI(e)|0;if(!e)f=7;else f=8}if((f|0)==7){c[g>>2]=d;b=0;i=h;return b|0}else if((f|0)==8){XB(b,e);b=e;i=h;return b|0}return 0}function YQ(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;if((c[a+220>>2]|0)!=(c[a+376>>2]|0)){c[a+248>>2]=272200;i=m;return}k=a+224|0;c[a+236>>2]=e;l=a+240|0;c[l>>2]=0;j=a+228|0;h=(g|0)!=0?4:2;e=1024;while(1){if(!(c[j>>2]|0)){g=c[d>>2]|0;e=e>>>0>g>>>0?g:e;c[d>>2]=g-e;if(e){mD(a,b,e);NB(a,b,e)}c[k>>2]=b;c[j>>2]=e;g=e}else g=e;if(!(c[l>>2]|0)){e=c[f>>2]|0;c[f>>2]=0;c[l>>2]=e}e=jI(k,(c[d>>2]|0)==0?h:0)|0;if(e)break;if(c[f>>2]|0){e=g;continue}if(!(c[l>>2]|0)){e=0;break}else e=g}c[f>>2]=(c[f>>2]|0)+(c[l>>2]|0);c[l>>2]=0;XB(a,e);i=m;return}function ZQ(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;n=o;h=c[b+760>>2]|0;if(!((h|0)==-1|(h|0)==0)){g=e+1|0;if(h>>>0>>0){XB(b,-4);b=-4;i=o;return b|0}}else{g=e+1|0;h=-1}g=h-g|0;if(g>>>0<(c[f>>2]|0)>>>0)c[f>>2]=g;l=b+376|0;g=XQ(b,c[l>>2]|0)|0;if((g|0)==1){b=-7;i=o;return b|0}else if(!g){m=d-e|0;c[n>>2]=m;j=b+788|0;g=_$(b,c[l>>2]|0,(c[j>>2]|0)+e|0,n,0,f)|0;do if((g|0)==1){if(gI(b+224|0)|0){XB(b,1);g=-7;break}h=c[f>>2]|0;d=e+1+h|0;k=aD(b,d)|0;if(!k){XB(b,-4);g=-4;break}g=_$(b,c[l>>2]|0,(c[j>>2]|0)+e|0,n,k+e|0,f)|0;if(!g){g=-7;h=k}else if((g|0)==1)if((h|0)==(c[f>>2]|0)){a[k+(h+e)>>0]=0;h=c[j>>2]|0;if(e)Aga(k|0,h|0,e|0)|0;c[j>>2]=k;c[b+792>>2]=d;g=1}else{g=-7;h=k}else h=k;ZC(b,h);if(!((g|0)!=1?1:(m|0)==(c[n>>2]|0))){EC(b,270792);g=1}}else g=(g|0)==0?-7:g;while(0);c[b+220>>2]=0;b=g;i=o;return b|0}else{b=g;i=o;return b|0}return 0}function _Q(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;f=b+772|0;e=c[f>>2]|0;if(e){ZC(b,e);c[f>>2]=0}e=c[b+760>>2]|0;if(!((e|0)==-1|(e|0)==0)?e>>>0>>0:0){f=0;e=8}else e=5;do if((e|0)==5){h=c[b+376>>2]|0;a[b+764>>0]=h>>>24;a[b+765>>0]=h>>>16;a[b+766>>0]=h>>>8;a[b+767>>0]=h;a[b+768>>0]=0;c[b+776>>2]=d;a[b+780>>0]=c[b+208>>2];if(!d){c[f>>2]=0;break}else{e=dD(b,d)|0;c[f>>2]=e;f=e;e=8;break}}while(0);do if((e|0)==8){e=(d|0)!=0;if((f|0)==0&e){yD(b,d)|0;EC(b,272160);h=0;i=g;return h|0}else{if((b|0)==0|e^1)break;mD(b,f,d);NB(b,f,d);break}}while(0);yD(b,0)|0;h=1;i=g;return h|0}function $Q(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;h=c[b+4>>2]|0;f=((d[b+11>>0]|0)+7|0)>>>3;if(f>>>0>=h>>>0){i=j;return}b=0-f|0;g=f;f=e+f|0;while(1){a[f>>0]=(d[f+b>>0]|0)+(d[f>>0]|0);g=g+1|0;if((g|0)==(h|0))break;else f=f+1|0}i=j;return}function aR(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;g=c[b+4>>2]|0;if(!g){i=j;return}else{h=0;b=e}while(1){a[b>>0]=(d[f>>0]|0)+(d[b>>0]|0);h=h+1|0;if((h|0)==(g|0))break;else{f=f+1|0;b=b+1|0}}i=j;return}function bR(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;k=((d[b+11>>0]|0)+7|0)>>>3;j=c[b+4>>2]|0;if(!k)b=e;else{b=e+k|0;g=0;h=f;while(1){a[e>>0]=((d[h>>0]|0)>>>1&255)+(d[e>>0]|0);g=g+1|0;if(g>>>0>=k>>>0)break;else{h=h+1|0;e=e+1|0}}f=f+k|0}if((j|0)==(k|0)){i=l;return}h=0-k|0;g=j-k|0;e=0;while(1){a[b>>0]=(((d[b+h>>0]|0)+(d[f>>0]|0)|0)>>>1)+(d[b>>0]|0);e=e+1|0;if((e|0)==(g|0))break;else{f=f+1|0;b=b+1|0}}i=l;return}function cR(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;k=i;h=c[b+4>>2]|0;j=e+h|0;g=d[f>>0]|0;b=(d[e>>0]|0)+g|0;a[e>>0]=b;if((h|0)<=1){i=k;return}h=e+1|0;e=b;b=f;do{b=b+1|0;f=e&255;m=g;g=d[b>>0]|0;l=g-m|0;p=f-m|0;n=(l|0)<0?0-l|0:l;o=(p|0)<0?0-p|0:p;p=l+p|0;l=(o|0)<(n|0);e=((((p|0)<0?0-p|0:p)|0)<((l?o:n)|0)?m:l?g:f)+(d[h>>0]|0)|0;a[h>>0]=e;h=h+1|0}while(h>>>0>>0);i=k;return}function dR(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=i;l=((d[b+11>>0]|0)+7|0)>>>3;h=e+l|0;if(!l)g=e;else{k=e+1|0;k=(h>>>0>k>>>0?h:k)-e|0;j=f;g=e;while(1){n=g;g=g+1|0;a[n>>0]=(d[j>>0]|0)+(d[n>>0]|0);if(g>>>0>=h>>>0)break;else j=j+1|0}f=f+k|0}j=e+(c[b+4>>2]|0)|0;if(g>>>0>=j>>>0){i=m;return}h=0-l|0;while(1){e=d[f+h>>0]|0;n=d[g+h>>0]|0;b=d[f>>0]|0;k=b-e|0;p=n-e|0;l=(k|0)<0?0-k|0:k;o=(p|0)<0?0-p|0:p;p=k+p|0;k=(o|0)<(l|0);a[g>>0]=((((p|0)<0?0-p|0:p)|0)<((k?o:l)|0)?e:k?b:n)+(d[g>>0]|0);g=g+1|0;if((g|0)==(j|0))break;else f=f+1|0}i=m;return}function eR(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;l=c[e+240>>2]|0;if((l|0)<=0){i=n;return}h=c[e+236>>2]|0;j=b+688|0;k=h;do{do if(((d[k+16>>0]|0)&f|0)!=0?(m=VB(b,k)|0,(m|0)!=1):0){if(!((a[k+3>>0]&32)!=0|(m|0)==3)){if(m)break;if((c[j>>2]|0)!=3)break}g=k+12|0;e=c[g>>2]|0;if(!e){vC(b,274792);e=c[g>>2]|0}SE(b,k,c[k+8>>2]|0,e)}while(0);k=k+20|0}while(k>>>0<(h+(l*20|0)|0)>>>0);i=n;return}function fR(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;e=c[b+352>>2]|0;d=c[b+364>>2]|0;if((d|e)>>>0>=32768){n=-1;i=o;return n|0}if(!(a[b+432>>0]|0)){n=ea(d+1|0,e)|0;i=o;return n|0}j=a[b+438>>0]|0;l=j&255;n=(c[b+348>>2]|0)+-1|0;k=l>>>3;m=e+-1|0;if((j&255)>7){d=0;b=0;a:while(1){j=b;while(1){if((j|0)>=7)break a;e=(j|0)>1;if(e)f=7-j>>1;else f=3;h=j&1;b=j+1|0;if(e)e=7-j>>1;else e=3;e=(n-(h<<3-(b>>1)&7)+(1<>>e;if(!e)j=b;else break}g=(ea(e,k)|0)+1|0;f=(j|0)>2;if(f)e=8-j>>1;else e=3;if(f)f=8-j>>1;else f=3;d=(ea((m-((h^1)<<3-(j>>1)&7)+(1<>>f,g)|0)+d|0}i=o;return d|0}else{d=0;b=0;b:while(1){j=b;while(1){if((j|0)>=7)break b;e=(j|0)>1;if(e)f=7-j>>1;else f=3;h=j&1;b=j+1|0;if(e)e=7-j>>1;else e=3;e=(n-(h<<3-(b>>1)&7)+(1<>>e;if(!e)j=b;else break}g=(((ea(e,l)|0)+7|0)>>>3)+1|0;f=(j|0)>2;if(f)e=8-j>>1;else e=3;if(f)f=8-j>>1;else f=3;d=(ea((m-((h^1)<<3-(j>>1)&7)+(1<>>f,g)|0)+d|0}i=o;return d|0}return 0}function gR(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+64|0;g=q;p=b+220|0;f=c[p>>2]|0;do if(f){a[g>>0]=d>>>24;a[g+1>>0]=d>>>16;a[g+2>>0]=d>>>8;a[g+3>>0]=d;a[g+4>>0]=58;a[g+5>>0]=32;a[g+6>>0]=f>>>24;a[g+7>>0]=f>>>16;a[g+8>>0]=f>>>8;a[g+9>>0]=f;tC(g,64,10,276600)|0;vC(b,g);if((c[p>>2]|0)!=1229209940){c[p>>2]=0;break}c[b+248>>2]=276616;b=-2;i=q;return b|0}while(0);f=c[b+288>>2]|0;j=c[b+292>>2]|0;g=c[b+296>>2]|0;h=c[b+300>>2]|0;do if((d|0)==1229209940)if(!(c[b+212>>2]&1)){o=h;m=j;n=(a[b+434>>0]|0)!=8&1;break}else{o=h;m=j;n=c[b+304>>2]|0;break}else{f=c[b+308>>2]|0;o=c[b+320>>2]|0;m=c[b+312>>2]|0;n=c[b+324>>2]|0;g=c[b+316>>2]|0}while(0);if(e>>>0<16385?(k=1<>>0<=k>>>0):0){j=k;do{j=j>>>1;g=g+-1|0}while(l>>>0<=j>>>0)}k=b+212|0;h=c[k>>2]|0;do if(h&2){if(((((c[b+328>>2]|0)==(f|0)?(c[b+332>>2]|0)==(m|0):0)?(c[b+336>>2]|0)==(g|0):0)?(c[b+340>>2]|0)==(o|0):0)?(c[b+344>>2]|0)==(n|0):0)break;if(aI(b+224|0)|0)vC(b,276632);h=c[k>>2]&-3;c[k>>2]=h}while(0);j=b+224|0;c[j>>2]=0;c[b+228>>2]=0;c[b+236>>2]=0;c[b+240>>2]=0;if(!(h&2)){f=$H(j,f,m,g,o,n,276664,56)|0;if(!f){c[k>>2]=c[k>>2]|2;g=26}else g=27}else{f=bI(j)|0;if(!f)g=26;else g=27}if((g|0)==26){c[p>>2]=d;b=0;i=q;return b|0}else if((g|0)==27){XB(b,f);b=f;i=q;return b|0}return 0}function hR(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+256|0;l=m;if(!c){a[d>>0]=0;b=0;i=m;return b|0}e=a[c>>0]|0;if(!(e<<24>>24)){a[d>>0]=0;b=0;i=m;return b|0}else{g=c;j=d;h=0;d=0;f=1}a:while(1){b:do if(!f){f=g+1|0;if((e+-33<<24>>24&255)<94|(e&255)>160)k=5;else{a[j>>0]=32;g=f;h=e<<24>>24==32?h:e&255;f=1}}else while(1){g=g+1|0;if((e+-33<<24>>24&255)<94|(e&255)>160){f=g;k=5;break b}h=(h|0)==0?e&255:h;e=a[g>>0]|0;if(!(e<<24>>24)){e=h;break a}}while(0);if((k|0)==5){k=0;a[j>>0]=e;g=f;f=0}d=d+1|0;j=j+1|0;e=a[g>>0]|0;if(!(e<<24>>24!=0&d>>>0<79)){e=h;break}}if((d|0)!=0&(f|0)!=0){f=j+-1|0;e=(e|0)==0?32:e;d=d+-1|0}else f=j;a[f>>0]=0;if(!d){b=0;i=m;return b|0}if(a[g>>0]|0){vC(b,276536);b=d;i=m;return b|0}if(!e){b=d;i=m;return b|0}wC(l,1,c);xC(l,2,4,e);yC(b,l,276560);b=d;i=m;return b|0}function iR(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;q=f+4|0;e=gR(b,e,c[q>>2]|0)|0;if(e){f=e;i=s;return f|0}j=c[q>>2]|0;n=b+224|0;c[n>>2]=c[f>>2];o=b+228|0;c[o>>2]=0;r=f+12|0;l=b+236|0;c[l>>2]=r;p=b+240|0;c[p>>2]=1024;m=b+284|0;e=0;k=b+280|0;h=1024;while(1){c[o>>2]=j;if(e){if((h+g|0)<0){j=0;e=-4;break}e=c[k>>2]|0;if(!e){e=aD(b,(c[m>>2]|0)+4|0)|0;if(!e){j=0;e=-4;break}c[e>>2]=0;c[k>>2]=e}c[l>>2]=e+4;j=c[m>>2]|0;c[p>>2]=j;k=e;h=j+h|0}e=eI(n,4)|0;j=c[o>>2]|0;c[o>>2]=0;if(e)break;e=(c[p>>2]|0)==0}n=h-(c[p>>2]|0)|0;c[p>>2]=0;c[f+8>>2]=n;if((n+g|0)>>>0>2147483646){c[b+248>>2]=276504;c[b+220>>2]=0;f=-4;i=s;return f|0}XB(b,e);c[b+220>>2]=0;if(!((e|0)==1&(j|0)==0)){f=e;i=s;return f|0}j=c[q>>2]|0;if(j>>>0>=16385){f=0;i=s;return f|0}e=d[r>>0]|0;if(!((e&15|0)==8&(e&240)>>>0<113)){f=0;i=s;return f|0}h=e>>>4;e=1<>>0>>0){f=0;i=s;return f|0}do{e=e>>>1;h=h+-1|0}while(!((h|0)==0|e>>>0>>0));g=h<<4|8;a[r>>0]=g;f=f+13|0;r=(d[f>>0]|0)&224;a[f>>0]=(r|(((r|g<<8)>>>0)%31|0))^31;f=0;i=s;return f|0}function jR(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;r=c[b+408>>2]|0;if(d<<24>>24){q=c[b>>2]|0;c[q+20>>2]=49;Id[c[q>>2]&511](b)}do if(a[b+252>>0]|0){d=(c[b+348>>2]|0)==0;e=r+4|0;if(!(c[b+356>>2]|0))if(d){c[e>>2]=258;break}else{c[e>>2]=259;break}else if(d){c[e>>2]=260;break}else{c[e>>2]=261;break}}else c[r+4>>2]=262;while(0);g=b+276|0;if((c[g>>2]|0)<=0){q=r+12|0;c[q>>2]=0;q=r+16|0;c[q>>2]=65536;q=r+20|0;c[q>>2]=0;q=r+24|0;c[q>>2]=0;q=r+28|0;c[q>>2]=11;q=r+32|0;c[q>>2]=-1;q=b+224|0;q=c[q>>2]|0;b=r+68|0;c[b>>2]=q;b=r+72|0;c[b>>2]=0;i=s;return}h=b+348|0;j=b+356|0;k=r+76|0;l=b+4|0;m=r+36|0;n=r+52|0;o=b+352|0;p=r+140|0;q=0;do{f=c[b+(q<<2)+280>>2]|0;if((c[h>>2]|0)==0?(c[j>>2]|0)==0:0){d=c[f+20>>2]|0;if(d>>>0>15){e=c[b>>2]|0;c[e+20>>2]=50;c[e+24>>2]=d;Id[c[e>>2]&511](b)}e=k+(d<<2)|0;d=c[e>>2]|0;if(!d){d=Od[c[c[l>>2]>>2]&255](b,1,64)|0;c[e>>2]=d}d=d+0|0;e=d+64|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0));c[m+(q<<2)>>2]=0;c[n+(q<<2)>>2]=0}if(c[o>>2]|0){d=c[f+24>>2]|0;if(d>>>0>15){f=c[b>>2]|0;c[f+20>>2]=50;c[f+24>>2]=d;Id[c[f>>2]&511](b)}e=p+(d<<2)|0;d=c[e>>2]|0;if(!d){d=Od[c[c[l>>2]>>2]&255](b,1,256)|0;c[e>>2]=d}Cga(d|0,0,256)|0}q=q+1|0}while((q|0)<(c[g>>2]|0));q=r+12|0;c[q>>2]=0;q=r+16|0;c[q>>2]=65536;q=r+20|0;c[q>>2]=0;q=r+24|0;c[q>>2]=0;q=r+28|0;c[q>>2]=11;q=r+32|0;c[q>>2]=-1;q=b+224|0;q=c[q>>2]|0;b=r+68|0;c[b>>2]=q;b=r+72|0;c[b>>2]=0;i=s;return}function kR(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;k=c[b+408>>2]|0;m=k+12|0;j=c[m>>2]|0;d=(c[k+16>>2]|0)+-1+j&-65536;if((d|0)<(j|0)){d=d|32768;c[m>>2]=d}else c[m>>2]=d;f=d<>2];c[m>>2]=f;j=k+32|0;e=c[j>>2]|0;if(f>>>0<=134217727){if(e){if((e|0)>-1){f=k+24|0;g=b+24|0;if(c[f>>2]|0){do{d=c[g>>2]|0;e=c[d>>2]|0;c[d>>2]=e+1;a[e>>0]=0;e=d+4|0;h=(c[e>>2]|0)+-1|0;c[e>>2]=h;if((h|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b)}h=(c[f>>2]|0)+-1|0;c[f>>2]=h}while((h|0)!=0);e=c[j>>2]|0}d=c[g>>2]|0;j=c[d>>2]|0;c[d>>2]=j+1;a[j>>0]=e;j=d+4|0;h=(c[j>>2]|0)+-1|0;c[j>>2]=h;if((h|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b)}}}else{h=k+24|0;c[h>>2]=(c[h>>2]|0)+1}g=k+20|0;if(c[g>>2]|0){d=k+24|0;f=b+24|0;if(c[d>>2]|0)do{e=c[f>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=0;j=e+4|0;h=(c[j>>2]|0)+-1|0;c[j>>2]=h;if((h|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b)}h=(c[d>>2]|0)+-1|0;c[d>>2]=h}while((h|0)!=0);do{d=c[f>>2]|0;j=c[d>>2]|0;c[d>>2]=j+1;a[j>>0]=-1;j=d+4|0;h=(c[j>>2]|0)+-1|0;c[j>>2]=h;if((h|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b)}d=c[f>>2]|0;j=c[d>>2]|0;c[d>>2]=j+1;a[j>>0]=0;j=d+4|0;h=(c[j>>2]|0)+-1|0;c[j>>2]=h;if((h|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b)}h=(c[g>>2]|0)+-1|0;c[g>>2]=h}while((h|0)!=0)}}else{f=k+24|0;if((e|0)>-1){g=b+24|0;if(c[f>>2]|0){do{d=c[g>>2]|0;o=c[d>>2]|0;c[d>>2]=o+1;a[o>>0]=0;o=d+4|0;e=(c[o>>2]|0)+-1|0;c[o>>2]=e;if((e|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){o=c[b>>2]|0;c[o+20>>2]=25;Id[c[o>>2]&511](b)}o=(c[f>>2]|0)+-1|0;c[f>>2]=o}while((o|0)!=0);e=c[j>>2]|0}d=c[g>>2]|0;o=c[d>>2]|0;c[d>>2]=o+1;a[o>>0]=e+1;e=d+4|0;o=(c[e>>2]|0)+-1|0;c[e>>2]=o;if((o|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){o=c[b>>2]|0;c[o+20>>2]=25;Id[c[o>>2]&511](b)}if(((c[j>>2]|0)==254?(h=c[g>>2]|0,j=c[h>>2]|0,c[h>>2]=j+1,a[j>>0]=0,j=h+4|0,o=(c[j>>2]|0)+-1|0,c[j>>2]=o,(o|0)==0):0)?(Ld[c[h+12>>2]&511](b)|0)<<24>>24==0:0){o=c[b>>2]|0;c[o+20>>2]=25;Id[c[o>>2]&511](b)}}o=k+20|0;c[f>>2]=(c[f>>2]|0)+(c[o>>2]|0);c[o>>2]=0}d=c[m>>2]|0;if(!(d&134215680)){i=n;return}e=k+24|0;g=b+24|0;if(c[e>>2]|0){do{d=c[g>>2]|0;k=c[d>>2]|0;c[d>>2]=k+1;a[k>>0]=0;k=d+4|0;o=(c[k>>2]|0)+-1|0;c[k>>2]=o;if((o|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){o=c[b>>2]|0;c[o+20>>2]=25;Id[c[o>>2]&511](b)}o=(c[e>>2]|0)+-1|0;c[e>>2]=o}while((o|0)!=0);d=c[m>>2]|0}e=c[g>>2]|0;k=c[e>>2]|0;c[e>>2]=k+1;a[k>>0]=d>>>19;k=e+4|0;o=(c[k>>2]|0)+-1|0;c[k>>2]=o;if((o|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){o=c[b>>2]|0;c[o+20>>2]=25;Id[c[o>>2]&511](b)}if(((c[m>>2]&133693440|0)==133693440?(l=c[g>>2]|0,k=c[l>>2]|0,c[l>>2]=k+1,a[k>>0]=0,k=l+4|0,o=(c[k>>2]|0)+-1|0,c[k>>2]=o,(o|0)==0):0)?(Ld[c[l+12>>2]&511](b)|0)<<24>>24==0:0){o=c[b>>2]|0;c[o+20>>2]=25;Id[c[o>>2]&511](b)}d=c[m>>2]|0;if(!(d&522240)){i=n;return}e=c[g>>2]|0;k=c[e>>2]|0;c[e>>2]=k+1;a[k>>0]=d>>>11;k=e+4|0;o=(c[k>>2]|0)+-1|0;c[k>>2]=o;if((o|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){o=c[b>>2]|0;c[o+20>>2]=25;Id[c[o>>2]&511](b)}if((c[m>>2]&522240|0)!=522240){i=n;return}d=c[g>>2]|0;k=c[d>>2]|0;c[d>>2]=k+1;a[k>>0]=0;k=d+4|0;o=(c[k>>2]|0)+-1|0;c[k>>2]=o;if(o){i=n;return}if((Ld[c[d+12>>2]&511](b)|0)<<24>>24){i=n;return}o=c[b>>2]|0;c[o+20>>2]=25;Id[c[o>>2]&511](b);i=n;return}function lR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;d=c[a+388>>2]|0;c[d+8>>2]=0;do if((c[a+276>>2]|0)<=1){e=c[a+280>>2]|0;if((c[a+272>>2]|0)==1){c[d+20>>2]=c[e+76>>2];break}else{c[d+20>>2]=c[e+12>>2];break}}else c[d+20>>2]=1;while(0);c[d+12>>2]=0;c[d+16>>2]=0;if(!b){if(c[d+64>>2]|0){b=c[a>>2]|0;c[b+20>>2]=3;Id[c[b>>2]&511](a)}c[d+4>>2]=263;i=f;return}else if((b|0)==3){if(!(c[d+64>>2]|0)){b=c[a>>2]|0;c[b+20>>2]=3;Id[c[b>>2]&511](a)}c[d+4>>2]=264;i=f;return}else if((b|0)==2){if(!(c[d+64>>2]|0)){b=c[a>>2]|0;c[b+20>>2]=3;Id[c[b>>2]&511](a)}c[d+4>>2]=265;i=f;return}else{b=c[a>>2]|0;c[b+20>>2]=3;Id[c[b>>2]&511](a);i=f;return}}function mR(a){a=a|0;return}function nR(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;l=c[b+36>>2]|0;k=c[b+28>>2]|0;if((g|0)<1|(k|0)==0){i=m;return}else b=g;do{b=b+-1|0;j=d;d=d+4|0;g=c[(c[e>>2]|0)+(f<<2)>>2]|0;f=f+1|0;h=0;j=c[j>>2]|0;while(1){a[g+h>>0]=a[j>>0]|0;h=h+1|0;if((h|0)==(k|0))break;else j=j+l|0}}while((b|0)>0);i=m;return}function oR(a){a=a|0;var b=0,d=0;d=i;b=c[a+396>>2]|0;a=Od[c[c[a+4>>2]>>2]&255](a,1,8192)|0;c[b+8>>2]=a;b=0;do{c[a+(b<<2)>>2]=b*19595;c[a+(b+256<<2)>>2]=b*38470;c[a+(b+512<<2)>>2]=(b*7471|0)+32768;c[a+(b+768<<2)>>2]=ea(b,-11058)|0;c[a+(b+1024<<2)>>2]=ea(b,-21710)|0;c[a+(b+1280<<2)>>2]=(b<<15)+8421375;c[a+(b+1536<<2)>>2]=ea(b,-27439)|0;c[a+(b+1792<<2)>>2]=ea(b,-5329)|0;b=b+1|0}while((b|0)!=256);i=d;return}function pR(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;n=i;m=c[(c[b+396>>2]|0)+8>>2]|0;l=c[b+28>>2]|0;if((h|0)<1|(l|0)==0){i=n;return}else b=h;do{b=b+-1|0;k=e;e=e+4|0;h=c[(c[f>>2]|0)+(g<<2)>>2]|0;g=g+1|0;j=0;k=c[k>>2]|0;while(1){a[h+j>>0]=((c[m+((d[k+1>>0]|0|256)<<2)>>2]|0)+(c[m+((d[k>>0]|0)<<2)>>2]|0)+(c[m+((d[k+2>>0]|0|512)<<2)>>2]|0)|0)>>>16;j=j+1|0;if((j|0)==(l|0))break;else k=k+3|0}}while((b|0)>0);i=n;return}function qR(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;m=c[b+28>>2]|0;if((g|0)<=0){i=p;return}n=e+4|0;o=e+8|0;if(!m){i=p;return}do{g=g+-1|0;l=d;d=d+4|0;j=c[(c[e>>2]|0)+(f<<2)>>2]|0;b=c[(c[n>>2]|0)+(f<<2)>>2]|0;h=c[(c[o>>2]|0)+(f<<2)>>2]|0;f=f+1|0;k=0;l=c[l>>2]|0;while(1){a[j+k>>0]=a[l>>0]|0;a[b+k>>0]=a[l+1>>0]|0;a[h+k>>0]=a[l+2>>0]|0;k=k+1|0;if((k|0)==(m|0))break;else l=l+3|0}}while((g|0)>0);i=p;return}function rR(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=i;n=c[b+28>>2]|0;if((h|0)<=0){i=q;return}o=f+4|0;p=f+8|0;if(!n){i=q;return}do{h=h+-1|0;m=e;e=e+4|0;b=c[(c[f>>2]|0)+(g<<2)>>2]|0;j=c[(c[o>>2]|0)+(g<<2)>>2]|0;k=c[(c[p>>2]|0)+(g<<2)>>2]|0;g=g+1|0;l=0;m=c[m>>2]|0;while(1){t=a[m+1>>0]|0;s=t&255;r=d[m+2>>0]|0;a[b+l>>0]=(d[m>>0]|0)+128-s;a[j+l>>0]=t;a[k+l>>0]=128-s+r;l=l+1|0;if((l|0)==(n|0))break;else m=m+3|0}}while((h|0)>0);i=q;return}function sR(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=i;r=c[(c[b+396>>2]|0)+8>>2]|0;n=c[b+28>>2]|0;if((h|0)<=0){i=s;return}o=f+4|0;p=f+8|0;q=(n|0)==0;do{h=h+-1|0;b=e;e=e+4|0;j=c[(c[f>>2]|0)+(g<<2)>>2]|0;k=c[(c[o>>2]|0)+(g<<2)>>2]|0;l=c[(c[p>>2]|0)+(g<<2)>>2]|0;g=g+1|0;if(!q){m=0;b=c[b>>2]|0;while(1){u=d[b>>0]|0;v=d[b+1>>0]|0;t=d[b+2>>0]|0;a[j+m>>0]=((c[r+((v|256)<<2)>>2]|0)+(c[r+(u<<2)>>2]|0)+(c[r+((t|512)<<2)>>2]|0)|0)>>>16;a[k+m>>0]=((c[r+((v|1024)<<2)>>2]|0)+(c[r+((u|768)<<2)>>2]|0)+(c[r+((t|1280)<<2)>>2]|0)|0)>>>16;a[l+m>>0]=((c[r+((v|1536)<<2)>>2]|0)+(c[r+((u|1280)<<2)>>2]|0)+(c[r+((t|1792)<<2)>>2]|0)|0)>>>16;m=m+1|0;if((m|0)==(n|0))break;else b=b+3|0}}}while((h|0)>0);i=s;return}function tR(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;o=c[b+76>>2]|0;l=c[b+28>>2]|0;if((g|0)<=0){i=p;return}m=(o|0)>0;n=(l|0)==0;while(1){g=g+-1|0;if(m){b=0;do{if(!n){h=0;j=(c[d>>2]|0)+b|0;k=c[(c[e+(b<<2)>>2]|0)+(f<<2)>>2]|0;while(1){a[k>>0]=a[j>>0]|0;h=h+1|0;if((h|0)==(l|0))break;else{j=j+o|0;k=k+1|0}}}b=b+1|0}while((b|0)!=(o|0))}if((g|0)<=0)break;else{d=d+4|0;f=f+1|0}}i=p;return}function uR(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;u=i;t=c[(c[b+396>>2]|0)+8>>2]|0;p=c[b+28>>2]|0;if((h|0)<=0){i=u;return}q=f+4|0;r=f+8|0;s=f+12|0;o=(p|0)==0;do{h=h+-1|0;b=e;e=e+4|0;j=c[(c[f>>2]|0)+(g<<2)>>2]|0;k=c[(c[q>>2]|0)+(g<<2)>>2]|0;l=c[(c[r>>2]|0)+(g<<2)>>2]|0;m=c[(c[s>>2]|0)+(g<<2)>>2]|0;g=g+1|0;if(!o){n=0;b=c[b>>2]|0;while(1){w=(d[b>>0]|0)^255;x=(d[b+1>>0]|0)^255;v=(d[b+2>>0]|0)^255;a[m+n>>0]=a[b+3>>0]|0;a[j+n>>0]=((c[t+((x|256)<<2)>>2]|0)+(c[t+(w<<2)>>2]|0)+(c[t+((v|512)<<2)>>2]|0)|0)>>>16;a[k+n>>0]=((c[t+((x|1024)<<2)>>2]|0)+(c[t+((w|768)<<2)>>2]|0)+(c[t+((v|1280)<<2)>>2]|0)|0)>>>16;a[l+n>>0]=((c[t+((x|1536)<<2)>>2]|0)+(c[t+((w|1280)<<2)>>2]|0)+(c[t+((v|1792)<<2)>>2]|0)|0)>>>16;n=n+1|0;if((n|0)==(p|0))break;else b=b+4|0}}}while((h|0)>0);i=u;return}function vR(d){d=d|0;var f=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0;x=i;p=c[d+404>>2]|0;q=d+76|0;if((c[q>>2]|0)<=0){i=x;return}s=p+44|0;t=d+220|0;u=p+84|0;v=0;w=c[d+84>>2]|0;k=0;while(1){f=c[w+36>>2]|0;j=w+40|0;a:do switch((f<<8)+(c[j>>2]|0)|0){case 3078:{c[s+(v<<2)>>2]=107;k=0;break}case 1026:{c[s+(v<<2)>>2]=111;k=0;break}case 774:{c[s+(v<<2)>>2]=118;k=0;break}case 2056:{f=c[t>>2]|0;if(!f){c[s+(v<<2)>>2]=121;k=0;break a}else if((f|0)==2){c[u+(v<<2)>>2]=123;k=2;break a}else if((f|0)==1){c[s+(v<<2)>>2]=122;k=1;break a}else{o=c[d>>2]|0;c[o+20>>2]=49;Id[c[o>>2]&511](d);break a}}case 3598:{c[s+(v<<2)>>2]=102;k=0;break}case 2064:{c[s+(v<<2)>>2]=113;k=0;break}case 514:{c[s+(v<<2)>>2]=91;k=0;break}case 3591:{c[s+(v<<2)>>2]=106;k=0;break}case 2052:{c[s+(v<<2)>>2]=109;k=0;break}case 3084:{c[s+(v<<2)>>2]=100;k=0;break}case 3855:{c[s+(v<<2)>>2]=103;k=0;break}case 513:{c[s+(v<<2)>>2]=112;k=0;break}case 1285:{c[s+(v<<2)>>2]=94;k=0;break}case 1799:{c[s+(v<<2)>>2]=96;k=0;break}case 2565:{c[s+(v<<2)>>2]=108;k=0;break}case 2827:{c[s+(v<<2)>>2]=99;k=0;break}case 2313:{c[s+(v<<2)>>2]=97;k=0;break}case 258:{c[s+(v<<2)>>2]=120;k=0;break}case 257:{c[s+(v<<2)>>2]=90;k=0;break}case 3341:{c[s+(v<<2)>>2]=101;k=0;break}case 2570:{c[s+(v<<2)>>2]=98;k=0;break}case 1542:{c[s+(v<<2)>>2]=95;k=0;break}case 1539:{c[s+(v<<2)>>2]=110;k=0;break}case 771:{c[s+(v<<2)>>2]=92;k=0;break}case 1032:{c[s+(v<<2)>>2]=117;k=0;break}case 1028:{c[s+(v<<2)>>2]=93;k=0;break}case 516:{c[s+(v<<2)>>2]=119;k=0;break}case 1806:{c[s+(v<<2)>>2]=114;k=0;break}case 1548:{c[s+(v<<2)>>2]=115;k=0;break}case 1290:{c[s+(v<<2)>>2]=116;k=0;break}case 4104:{c[s+(v<<2)>>2]=105;k=0;break}case 4112:{c[s+(v<<2)>>2]=104;k=0;break}default:{o=c[d>>2]|0;c[o+20>>2]=7;c[o+24>>2]=f;c[o+28>>2]=c[j>>2];Id[c[o>>2]&511](d)}}while(0);j=c[w+16>>2]|0;f=d+(j<<2)+88|0;if(j>>>0<=3?(r=c[f>>2]|0,(r|0)!=0):0)o=r;else{o=c[d>>2]|0;c[o+20>>2]=54;c[o+24>>2]=j;Id[c[o>>2]&511](d);o=c[f>>2]|0}if(!k){f=c[w+84>>2]|0;j=(a[w+52>>0]|0)!=0?4:3;l=0;do{c[f+(l<<2)>>2]=e[o+(l<<1)>>1]<>2]=44}else if((k|0)==1){f=c[w+84>>2]|0;l=(a[w+52>>0]|0)!=0?10:11;j=1<>2]=j+(ea(b[277160+(n<<1)>>1]|0,e[o+(n<<1)>>1]|0)|0)>>l;n=n+1|0}while((n|0)!=64);c[p+(v<<2)+4>>2]=44}else if((k|0)==2){f=c[w+84>>2]|0;m=(a[w+52>>0]|0)!=0?16.0:8.0;l=0;j=0;while(1){y=+h[277288+(j<<3)>>3];g[f+(l<<2)>>2]=1.0/(+(e[o+(l<<1)>>1]|0)*y*m);n=l|1;g[f+(n<<2)>>2]=1.0/(+(e[o+(n<<1)>>1]|0)*y*1.387039845*m);n=n+1|0;g[f+(n<<2)>>2]=1.0/(+(e[o+(n<<1)>>1]|0)*y*1.306562965*m);n=l|3;g[f+(n<<2)>>2]=1.0/(+(e[o+(n<<1)>>1]|0)*y*1.175875602*m);z=n+1|0;g[f+(z<<2)>>2]=1.0/(+(e[o+(z<<1)>>1]|0)*y*m);z=n+2|0;g[f+(z<<2)>>2]=1.0/(+(e[o+(z<<1)>>1]|0)*y*.785694958*m);n=n+3|0;g[f+(n<<2)>>2]=1.0/(+(e[o+(n<<1)>>1]|0)*y*.5411961*m);n=l|7;g[f+(n<<2)>>2]=1.0/(+(e[o+(n<<1)>>1]|0)*y*.275899379*m);j=j+1|0;if((j|0)==8)break;else l=l+8|0}c[p+(v<<2)+4>>2]=45}else{z=c[d>>2]|0;c[z+20>>2]=49;Id[c[z>>2]&511](d)}v=v+1|0;if((v|0)>=(c[q>>2]|0))break;else w=w+88|0}i=x;return}function wR(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;r=c[b+408>>2]|0;h=d<<24>>24!=0;c[r+8>>2]=h?300:299;do if(!(a[b+252>>0]|0)){d=r+4|0;if(h){c[d>>2]=270;break}else{c[d>>2]=271;break}}else{c[r+120>>2]=b;a[r+108>>0]=d;d=(c[b+348>>2]|0)==0;e=r+4|0;do if(!(c[b+356>>2]|0))if(d){c[e>>2]=266;break}else{c[e>>2]=267;break}else{if(d){c[e>>2]=268;break}c[e>>2]=269;d=r+136|0;if(!(c[d>>2]|0))c[d>>2]=Od[c[c[b+4>>2]>>2]&255](b,1,1e3)|0}while(0);c[r+124>>2]=c[(c[b+280>>2]|0)+24>>2];c[r+128>>2]=0;c[r+132>>2]=0}while(0);m=b+276|0;if((c[m>>2]|0)<=0){q=r+12|0;c[q>>2]=0;q=r+16|0;c[q>>2]=0;q=b+224|0;q=c[q>>2]|0;b=r+36|0;c[b>>2]=q;b=r+40|0;c[b>>2]=0;i=s;return}n=b+348|0;o=b+356|0;j=r+76|0;k=b+4|0;p=r+20|0;f=r+44|0;q=b+352|0;l=r+92|0;g=r+60|0;if(h)f=0;else{e=0;do{d=c[b+(e<<2)+280>>2]|0;if((c[n>>2]|0)==0?(c[o>>2]|0)==0:0){k=c[d+20>>2]|0;r0(b,1,k,f+(k<<2)|0);c[p+(e<<2)>>2]=0}if(c[q>>2]|0){k=c[d+24>>2]|0;r0(b,0,k,g+(k<<2)|0)}e=e+1|0}while((e|0)<(c[m>>2]|0));q=r+12|0;c[q>>2]=0;q=r+16|0;c[q>>2]=0;q=b+224|0;q=c[q>>2]|0;b=r+36|0;c[b>>2]=q;b=r+40|0;c[b>>2]=0;i=s;return}do{g=c[b+(f<<2)+280>>2]|0;if((c[n>>2]|0)==0?(c[o>>2]|0)==0:0){d=c[g+20>>2]|0;if(d>>>0>3){h=c[b>>2]|0;c[h+20>>2]=52;c[h+24>>2]=d;Id[c[h>>2]&511](b)}e=j+(d<<2)|0;d=c[e>>2]|0;if(!d){d=Od[c[c[k>>2]>>2]&255](b,1,1028)|0;c[e>>2]=d}Cga(d|0,0,1028)|0;c[p+(f<<2)>>2]=0}if(c[q>>2]|0){d=c[g+24>>2]|0;if(d>>>0>3){h=c[b>>2]|0;c[h+20>>2]=52;c[h+24>>2]=d;Id[c[h>>2]&511](b)}e=l+(d<<2)|0;d=c[e>>2]|0;if(!d){d=Od[c[c[k>>2]>>2]&255](b,1,1028)|0;c[e>>2]=d}Cga(d|0,0,1028)|0}f=f+1|0}while((f|0)<(c[m>>2]|0));q=r+12|0;c[q>>2]=0;q=r+16|0;c[q>>2]=0;q=b+224|0;q=c[q>>2]|0;b=r+36|0;c[b>>2]=q;b=r+40|0;c[b>>2]=0;i=s;return}function xR(b,d){b=b|0;d=d|0;var e=0,f=0;f=i;e=c[b+380>>2]|0;if(a[b+208>>0]|0){i=f;return}c[e+8>>2]=0;c[e+12>>2]=0;a[e+16>>0]=0;c[e+20>>2]=d;if(!d){c[e+4>>2]=44;i=f;return}else{d=c[b>>2]|0;c[d+20>>2]=3;Id[c[d>>2]&511](b);i=f;return}}function yR(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;h=i;f=c[d+392>>2]|0;g=d+24|0;e=c[g>>2]|0;k=c[e>>2]|0;c[e>>2]=k+1;a[k>>0]=-1;k=e+4|0;j=(c[k>>2]|0)+-1|0;c[k>>2]=j;if((j|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=-40;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}c[f+28>>2]=0;do if(a[d+232>>0]|0){e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=-1;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=-32;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=0;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=16;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=74;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=70;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=73;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=70;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=0;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}k=a[d+233>>0]|0;e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=k;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}k=a[d+234>>0]|0;e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=k;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}k=a[d+235>>0]|0;e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=k;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}f=b[d+236>>1]|0;e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=(f&65535)>>>8;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=f;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}f=b[d+238>>1]|0;e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=(f&65535)>>>8;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;do if(!k){if((Ld[c[e+12>>2]&511](d)|0)<<24>>24)break;k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}while(0);e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=f;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;do if(!k){if((Ld[c[e+12>>2]&511](d)|0)<<24>>24)break;k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}while(0);e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=0;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;do if(!k){if((Ld[c[e+12>>2]&511](d)|0)<<24>>24)break;k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}while(0);e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=0;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if(k)break;if((Ld[c[e+12>>2]&511](d)|0)<<24>>24)break;k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}while(0);if(!(a[d+240>>0]|0)){i=h;return}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=-1;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=-18;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=0;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=14;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=65;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=100;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=111;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=98;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=101;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=0;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=100;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=0;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=0;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=0;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](d)|0)<<24>>24==0:0){k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=0;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;do if(!k){if((Ld[c[e+12>>2]&511](d)|0)<<24>>24)break;k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}while(0);e=c[d+80>>2]|0;if((e|0)==5){e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=2;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if(k){i=h;return}if((Ld[c[e+12>>2]&511](d)|0)<<24>>24){i=h;return}k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d);i=h;return}else if((e|0)==3){e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=1;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if(k){i=h;return}if((Ld[c[e+12>>2]&511](d)|0)<<24>>24){i=h;return}k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d);i=h;return}else{e=c[g>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=0;j=e+4|0;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if(k){i=h;return}if((Ld[c[e+12>>2]&511](d)|0)<<24>>24){i=h;return}k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d);i=h;return}}function zR(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;m=b+84|0;k=b+76|0;d=c[k>>2]|0;if((d|0)>0){f=0;g=c[m>>2]|0;d=0;while(1){e=(t0(b,c[g+16>>2]|0)|0)+d|0;f=f+1|0;d=c[k>>2]|0;if((f|0)>=(d|0)){h=e;break}else{g=g+88|0;d=e}}}else h=0;j=b+209|0;n=b+252|0;e=(a[n>>0]|0)==0;a:do if(a[j>>0]|0)if(e)l=19;else l=18;else{b:do if(e){do if((c[b+72>>2]|0)==8?(c[b+364>>2]|0)==8:0){if((d|0)>0){e=0;f=c[m>>2]|0;g=1;while(1){if(!((c[f+20>>2]|0)<=1?(c[f+24>>2]|0)<=1:0))g=0;e=e+1|0;if((e|0)>=(d|0)){d=g;break}else f=f+88|0}}else d=1;if((h|0)==0|d<<24>>24==0){if(!(d<<24>>24))break;u0(b,192);break a}d=c[b>>2]|0;c[d+20>>2]=77;Jd[c[d+4>>2]&255](b,0);d=(a[n>>0]|0)!=0;if(!(a[j>>0]|0))if(d)break b;else break;else if(d){l=18;break a}else{l=19;break a}}while(0);u0(b,193);break a}while(0);u0(b,194)}while(0);if((l|0)==18)u0(b,202);else if((l|0)==19)u0(b,201);d=c[b+244>>2]|0;if((d|0)==1)if((c[k>>2]|0)<3)l=27;else l=28;else if(d)l=27;if((l|0)==27){k=c[b>>2]|0;c[k+20>>2]=28;Id[c[k>>2]&511](b);l=28}do if((l|0)==28){l=b+24|0;d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=-1;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;if((k|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=-8;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;if((k|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;if((k|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=24;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;if((k|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=13;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;if((k|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;if((k|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=-1;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;if((k|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=3;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;if((k|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}d=c[l>>2]|0;k=c[(c[m>>2]|0)+88>>2]&255;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=k;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;if((k|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}d=c[l>>2]|0;k=c[c[m>>2]>>2]&255;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=k;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;if((k|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}d=c[l>>2]|0;k=c[(c[m>>2]|0)+176>>2]&255;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=k;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;if((k|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=-128;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;if((k|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;if((k|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;if((k|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;if((k|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;do if(!k){if((Ld[c[d+12>>2]&511](b)|0)<<24>>24)break;k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}while(0);d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;do if(!k){if((Ld[c[d+12>>2]&511](b)|0)<<24>>24)break;k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}while(0);d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;do if(!k){if((Ld[c[d+12>>2]&511](b)|0)<<24>>24)break;k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}while(0);d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=1;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;do if(!k){if((Ld[c[d+12>>2]&511](b)|0)<<24>>24)break;k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}while(0);d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;do if(!k){if((Ld[c[d+12>>2]&511](b)|0)<<24>>24)break;k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}while(0);d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;do if(!k){if((Ld[c[d+12>>2]&511](b)|0)<<24>>24)break;k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}while(0);d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;do if(!k){if((Ld[c[d+12>>2]&511](b)|0)<<24>>24)break;k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}while(0);d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;do if(!k){if((Ld[c[d+12>>2]&511](b)|0)<<24>>24)break;k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}while(0);d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=1;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;do if(!k){if((Ld[c[d+12>>2]&511](b)|0)<<24>>24)break;k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}while(0);d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;do if(!k){if((Ld[c[d+12>>2]&511](b)|0)<<24>>24)break;k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}while(0);d=c[l>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=0;h=d+4|0;k=(c[h>>2]|0)+-1|0;c[h>>2]=k;if(k)break;if((Ld[c[d+12>>2]&511](b)|0)<<24>>24)break;k=c[b>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](b)}while(0);if(!(a[n>>0]|0)){i=o;return}e=b+364|0;if((c[e>>2]|0)==8){i=o;return}g=b+24|0;d=c[g>>2]|0;k=c[d>>2]|0;c[d>>2]=k+1;a[k>>0]=-1;k=d+4|0;n=(c[k>>2]|0)+-1|0;c[k>>2]=n;if((n|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){n=c[b>>2]|0;c[n+20>>2]=25;Id[c[n>>2]&511](b)}d=c[g>>2]|0;k=c[d>>2]|0;c[d>>2]=k+1;a[k>>0]=-38;k=d+4|0;n=(c[k>>2]|0)+-1|0;c[k>>2]=n;if((n|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){n=c[b>>2]|0;c[n+20>>2]=25;Id[c[n>>2]&511](b)}d=c[g>>2]|0;k=c[d>>2]|0;c[d>>2]=k+1;a[k>>0]=0;k=d+4|0;n=(c[k>>2]|0)+-1|0;c[k>>2]=n;if((n|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){n=c[b>>2]|0;c[n+20>>2]=25;Id[c[n>>2]&511](b)}d=c[g>>2]|0;k=c[d>>2]|0;c[d>>2]=k+1;a[k>>0]=6;k=d+4|0;n=(c[k>>2]|0)+-1|0;c[k>>2]=n;if((n|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){n=c[b>>2]|0;c[n+20>>2]=25;Id[c[n>>2]&511](b)}d=c[g>>2]|0;k=c[d>>2]|0;c[d>>2]=k+1;a[k>>0]=0;k=d+4|0;n=(c[k>>2]|0)+-1|0;c[k>>2]=n;if((n|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){n=c[b>>2]|0;c[n+20>>2]=25;Id[c[n>>2]&511](b)}d=c[g>>2]|0;k=c[d>>2]|0;c[d>>2]=k+1;a[k>>0]=0;k=d+4|0;n=(c[k>>2]|0)+-1|0;c[k>>2]=n;if((n|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){n=c[b>>2]|0;c[n+20>>2]=25;Id[c[n>>2]&511](b)}n=c[e>>2]|0;n=(ea(n,n)|0)+255|0;d=c[g>>2]|0;k=c[d>>2]|0;c[d>>2]=k+1;a[k>>0]=n;k=d+4|0;n=(c[k>>2]|0)+-1|0;c[k>>2]=n;if((n|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){n=c[b>>2]|0;c[n+20>>2]=25;Id[c[n>>2]&511](b)}d=c[g>>2]|0;k=c[d>>2]|0;c[d>>2]=k+1;a[k>>0]=0;k=d+4|0;n=(c[k>>2]|0)+-1|0;c[k>>2]=n;if(n){i=o;return}if((Ld[c[d+12>>2]&511](b)|0)<<24>>24){i=o;return}n=c[b>>2]|0;c[n+20>>2]=25;Id[c[n>>2]&511](b);i=o;return}function AR(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+32|0;j=o+16|0;k=o;n=c[b+392>>2]|0;if(!(a[b+209>>0]|0)){g=b+276|0;if((c[g>>2]|0)>0){h=b+348|0;j=b+356|0;e=b+352|0;k=0;do{f=c[b+(k<<2)+280>>2]|0;if((c[h>>2]|0)==0?(c[j>>2]|0)==0:0)v0(b,c[f+20>>2]|0,0);if(c[e>>2]|0)v0(b,c[f+24>>2]|0,1);k=k+1|0}while((k|0)<(c[g>>2]|0))}}else{e=k+0|0;f=e+16|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0));e=j+0|0;f=e+16|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0));g=c[b+276>>2]|0;a:do if((g|0)>0){e=(c[b+352>>2]|0)==0;if(c[b+348>>2]|0){if(e){e=0;h=0;break}else e=0;while(1){a[k+(c[(c[b+(e<<2)+280>>2]|0)+24>>2]|0)>>0]=1;e=e+1|0;if((e|0)==(g|0)){e=0;h=0;break a}}}f=(c[b+356>>2]|0)==0;if(e){e=0;do{if(f)a[j+(c[(c[b+(e<<2)+280>>2]|0)+20>>2]|0)>>0]=1;e=e+1|0}while((e|0)!=(g|0));e=0;h=0}else{h=0;do{e=c[b+(h<<2)+280>>2]|0;if(f)a[j+(c[e+20>>2]|0)>>0]=1;a[k+(c[e+24>>2]|0)>>0]=1;h=h+1|0}while((h|0)!=(g|0));e=0;h=0}}else{e=0;h=0}while(0);do{h=(a[j+e>>0]|0)+h+(a[k+e>>0]|0)|0;e=e+1|0}while((e|0)!=16);if(h){m=b+24|0;e=c[m>>2]|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=-1;g=e+4|0;l=(c[g>>2]|0)+-1|0;c[g>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}e=c[m>>2]|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=-52;g=e+4|0;l=(c[g>>2]|0)+-1|0;c[g>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}h=(h<<1)+2|0;e=c[m>>2]|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=h>>>8;g=e+4|0;l=(c[g>>2]|0)+-1|0;c[g>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}e=c[m>>2]|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=h;g=e+4|0;l=(c[g>>2]|0)+-1|0;c[g>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}h=0;do{if(a[j+h>>0]|0){e=c[m>>2]|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=h;g=e+4|0;l=(c[g>>2]|0)+-1|0;c[g>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}e=c[m>>2]|0;l=(d[b+h+168>>0]<<4)+(d[b+h+152>>0]|0)&255;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=l;g=e+4|0;l=(c[g>>2]|0)+-1|0;c[g>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}}if(a[k+h>>0]|0){e=c[m>>2]|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=h+16;g=e+4|0;l=(c[g>>2]|0)+-1|0;c[g>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}l=a[b+h+184>>0]|0;e=c[m>>2]|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=l;g=e+4|0;l=(c[g>>2]|0)+-1|0;c[g>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}}h=h+1|0}while((h|0)!=16)}}g=b+224|0;h=n+28|0;n=b+24|0;if((c[g>>2]|0)!=(c[h>>2]|0)){e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=-1;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=-35;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=0;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=4;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}f=c[g>>2]|0;e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=f>>>8;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=f;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}c[h>>2]=c[g>>2]}e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=-1;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=-38;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}m=b+276|0;f=(c[m>>2]<<1)+6|0;e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=f>>>8;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}e=c[n>>2]|0;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=f;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}e=c[n>>2]|0;l=c[m>>2]&255;j=c[e>>2]|0;c[e>>2]=j+1;a[j>>0]=l;j=e+4|0;l=(c[j>>2]|0)+-1|0;c[j>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}if((c[m>>2]|0)>0){e=b+348|0;k=b+356|0;j=b+352|0;l=0;do{f=c[b+(l<<2)+280>>2]|0;h=c[n>>2]|0;g=c[f>>2]&255;p=c[h>>2]|0;c[h>>2]=p+1;a[p>>0]=g;p=h+4|0;g=(c[p>>2]|0)+-1|0;c[p>>2]=g;if((g|0)==0?(Ld[c[h+12>>2]&511](b)|0)<<24>>24==0:0){p=c[b>>2]|0;c[p+20>>2]=25;Id[c[p>>2]&511](b)}if((c[e>>2]|0)==0?(c[k>>2]|0)==0:0)g=c[f+20>>2]<<4;else g=0;if(!(c[j>>2]|0))h=0;else h=c[f+24>>2]|0;f=c[n>>2]|0;p=c[f>>2]|0;c[f>>2]=p+1;a[p>>0]=h+g;g=f+4|0;p=(c[g>>2]|0)+-1|0;c[g>>2]=p;if((p|0)==0?(Ld[c[f+12>>2]&511](b)|0)<<24>>24==0:0){p=c[b>>2]|0;c[p+20>>2]=25;Id[c[p>>2]&511](b)}l=l+1|0}while((l|0)<(c[m>>2]|0))}else e=b+348|0;f=c[n>>2]|0;p=c[e>>2]&255;l=c[f>>2]|0;c[f>>2]=l+1;a[l>>0]=p;l=f+4|0;p=(c[l>>2]|0)+-1|0;c[l>>2]=p;if((p|0)==0?(Ld[c[f+12>>2]&511](b)|0)<<24>>24==0:0){p=c[b>>2]|0;c[p+20>>2]=25;Id[c[p>>2]&511](b)}e=c[n>>2]|0;p=c[b+352>>2]&255;l=c[e>>2]|0;c[e>>2]=l+1;a[l>>0]=p;l=e+4|0;p=(c[l>>2]|0)+-1|0;c[l>>2]=p;if((p|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){p=c[b>>2]|0;c[p+20>>2]=25;Id[c[p>>2]&511](b)}e=c[n>>2]|0;p=(c[b+356>>2]<<4)+(c[b+360>>2]|0)&255;l=c[e>>2]|0;c[e>>2]=l+1;a[l>>0]=p;l=e+4|0;p=(c[l>>2]|0)+-1|0;c[l>>2]=p;if(p){i=o;return}if((Ld[c[e+12>>2]&511](b)|0)<<24>>24){i=o;return}p=c[b>>2]|0;c[p+20>>2]=25;Id[c[p>>2]&511](b);i=o;return}function BR(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;f=i;d=b+24|0;e=c[d>>2]|0;h=c[e>>2]|0;c[e>>2]=h+1;a[h>>0]=-1;h=e+4|0;g=(c[h>>2]|0)+-1|0;c[h>>2]=g;if((g|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b)}d=c[d>>2]|0;g=c[d>>2]|0;c[d>>2]=g+1;a[g>>0]=-39;g=d+4|0;h=(c[g>>2]|0)+-1|0;c[g>>2]=h;if(h){i=f;return}if((Ld[c[d+12>>2]&511](b)|0)<<24>>24){i=f;return}h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b);i=f;return}function CR(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;f=i;e=b+24|0;d=c[e>>2]|0;h=c[d>>2]|0;c[d>>2]=h+1;a[h>>0]=-1;h=d+4|0;g=(c[h>>2]|0)+-1|0;c[h>>2]=g;if((g|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b)}d=c[e>>2]|0;g=c[d>>2]|0;c[d>>2]=g+1;a[g>>0]=-40;g=d+4|0;h=(c[g>>2]|0)+-1|0;c[g>>2]=h;if((h|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b)}if(c[b+88>>2]|0)t0(b,0)|0;if(c[b+92>>2]|0)t0(b,1)|0;if(c[b+96>>2]|0)t0(b,2)|0;if(c[b+100>>2]|0)t0(b,3)|0;if(!(a[b+209>>0]|0)){if(c[b+120>>2]|0)v0(b,0,0);if(c[b+136>>2]|0)v0(b,0,1);if(c[b+124>>2]|0)v0(b,1,0);if(c[b+140>>2]|0)v0(b,1,1);if(c[b+128>>2]|0)v0(b,2,0);if(c[b+144>>2]|0)v0(b,2,1);if(c[b+132>>2]|0)v0(b,3,0);if(c[b+148>>2]|0)v0(b,3,1)}d=c[e>>2]|0;g=c[d>>2]|0;c[d>>2]=g+1;a[g>>0]=-1;g=d+4|0;h=(c[g>>2]|0)+-1|0;c[g>>2]=h;if((h|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b)}d=c[e>>2]|0;g=c[d>>2]|0;c[d>>2]=g+1;a[g>>0]=-39;g=d+4|0;h=(c[g>>2]|0)+-1|0;c[g>>2]=h;if(h){i=f;return}if((Ld[c[d+12>>2]&511](b)|0)<<24>>24){i=f;return}h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b);i=f;return}function DR(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;h=i;if(e>>>0>65533){g=c[b>>2]|0;c[g+20>>2]=12;Id[c[g>>2]&511](b)}g=b+24|0;f=c[g>>2]|0;k=c[f>>2]|0;c[f>>2]=k+1;a[k>>0]=-1;k=f+4|0;j=(c[k>>2]|0)+-1|0;c[k>>2]=j;if((j|0)==0?(Ld[c[f+12>>2]&511](b)|0)<<24>>24==0:0){j=c[b>>2]|0;c[j+20>>2]=25;Id[c[j>>2]&511](b)}f=c[g>>2]|0;j=c[f>>2]|0;c[f>>2]=j+1;a[j>>0]=d;d=f+4|0;j=(c[d>>2]|0)+-1|0;c[d>>2]=j;if((j|0)==0?(Ld[c[f+12>>2]&511](b)|0)<<24>>24==0:0){j=c[b>>2]|0;c[j+20>>2]=25;Id[c[j>>2]&511](b)}e=e+2|0;f=c[g>>2]|0;d=c[f>>2]|0;c[f>>2]=d+1;a[d>>0]=e>>>8;d=f+4|0;j=(c[d>>2]|0)+-1|0;c[d>>2]=j;if((j|0)==0?(Ld[c[f+12>>2]&511](b)|0)<<24>>24==0:0){j=c[b>>2]|0;c[j+20>>2]=25;Id[c[j>>2]&511](b)}f=c[g>>2]|0;d=c[f>>2]|0;c[f>>2]=d+1;a[d>>0]=e;d=f+4|0;j=(c[d>>2]|0)+-1|0;c[d>>2]=j;if(j){i=h;return}if((Ld[c[f+12>>2]&511](b)|0)<<24>>24){i=h;return}j=c[b>>2]|0;c[j+20>>2]=25;Id[c[j>>2]&511](b);i=h;return}function ER(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=i;e=c[b+24>>2]|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=d;g=e+4|0;d=(c[g>>2]|0)+-1|0;c[g>>2]=d;if(d){i=f;return}if((Ld[c[e+12>>2]&511](b)|0)<<24>>24){i=f;return}g=c[b>>2]|0;c[g+20>>2]=25;Id[c[g>>2]&511](b);i=f;return}function FR(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;g=c[b+376>>2]|0;d=g+16|0;e=c[d>>2]|0;do if(!e){w0(b);x0(b);if(!(a[b+208>>0]|0)){Id[c[c[b+396>>2]>>2]&511](b);Id[c[c[b+400>>2]>>2]&511](b);Jd[c[c[b+384>>2]>>2]&255](b,0)}Id[c[c[b+404>>2]>>2]&511](b);e=b+210|0;Jd[c[c[b+408>>2]>>2]&255](b,a[e>>0]|0);Jd[c[c[b+388>>2]>>2]&255](b,(c[g+24>>2]|0)>1?3:0);Jd[c[c[b+380>>2]>>2]&255](b,0);d=g+12|0;if(!(a[e>>0]|0)){a[d>>0]=1;break}else{a[d>>0]=0;break}}else if((e|0)==1){w0(b);x0(b);if((c[b+348>>2]|0)==0?(c[b+356>>2]|0)!=0:0){c[d>>2]=2;f=g+20|0;c[f>>2]=(c[f>>2]|0)+1;f=11;break}Jd[c[c[b+408>>2]>>2]&255](b,1);Jd[c[c[b+388>>2]>>2]&255](b,2);a[g+12>>0]=0}else if((e|0)==2)f=11;else{e=c[b>>2]|0;c[e+20>>2]=49;Id[c[e>>2]&511](b)}while(0);if((f|0)==11){if(!(a[b+210>>0]|0)){w0(b);x0(b)}Jd[c[c[b+408>>2]>>2]&255](b,0);Jd[c[c[b+388>>2]>>2]&255](b,2);d=b+392|0;if(!(c[g+28>>2]|0))Id[c[(c[d>>2]|0)+4>>2]&511](b);Id[c[(c[d>>2]|0)+8>>2]&511](b);a[g+12>>0]=0}e=c[g+20>>2]|0;f=c[g+24>>2]|0;a[g+13>>0]=(e|0)==(f+-1|0)&1;d=c[b+8>>2]|0;if(!d){i=h;return}c[d+12>>2]=e;c[d+16>>2]=f;i=h;return}function GR(b){b=b|0;var d=0,e=0;d=i;a[(c[b+376>>2]|0)+12>>0]=0;e=b+392|0;Id[c[(c[e>>2]|0)+4>>2]&511](b);Id[c[(c[e>>2]|0)+8>>2]&511](b);i=d;return}function HR(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;d=c[b+376>>2]|0;Id[c[(c[b+408>>2]|0)+8>>2]&511](b);e=d+16|0;f=c[e>>2]|0;if(!f){c[e>>2]=2;if(!(a[b+210>>0]|0)){f=d+28|0;c[f>>2]=(c[f>>2]|0)+1}}else if((f|0)==1)c[e>>2]=2;else if((f|0)==2){if(a[b+210>>0]|0)c[e>>2]=1;f=d+28|0;c[f>>2]=(c[f>>2]|0)+1}f=d+20|0;c[f>>2]=(c[f>>2]|0)+1;i=g;return}function IR(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;h=c[e>>2]|0;if(!h){h=PF(b)|0;c[e>>2]=h}h=h+0|0;j=f+0|0;k=h+17|0;do{a[h>>0]=a[j>>0]|0;h=h+1|0;j=j+1|0}while((h|0)<(k|0));h=(d[f+16>>0]|0)+((d[f+15>>0]|0)+((d[f+14>>0]|0)+((d[f+13>>0]|0)+((d[f+12>>0]|0)+((d[f+11>>0]|0)+((d[f+10>>0]|0)+((d[f+9>>0]|0)+((d[f+8>>0]|0)+((d[f+7>>0]|0)+((d[f+6>>0]|0)+((d[f+5>>0]|0)+((d[f+4>>0]|0)+((d[f+3>>0]|0)+((d[f+2>>0]|0)+(d[f+1>>0]|0)))))))))))))))|0;if((h+-1|0)>>>0<=255){b=c[e>>2]|0;b=b+17|0;Aga(b|0,g|0,h|0)|0;g=c[e>>2]|0;g=g+273|0;a[g>>0]=0;i=l;return}k=c[b>>2]|0;c[k+20>>2]=9;Id[c[k>>2]&511](b);b=c[e>>2]|0;b=b+17|0;Aga(b|0,g|0,h|0)|0;g=c[e>>2]|0;g=g+273|0;a[g>>0]=0;i=l;return}function JR(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;d=c[a+384>>2]|0;if(b){b=c[a>>2]|0;c[b+20>>2]=3;Id[c[b>>2]&511](a)}c[d+48>>2]=c[a+32>>2];c[d+52>>2]=0;c[d+56>>2]=0;c[d+60>>2]=c[a+260>>2]<<1;i=e;return}function KR(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;j=c[a+384>>2]|0;w=a+260|0;y=(c[w>>2]|0)*3|0;z=j+48|0;if((c[g>>2]|0)>>>0>=h>>>0){i=C;return}A=j+60|0;B=j+52|0;q=a+396|0;r=j+8|0;s=a+32|0;t=a+76|0;u=a+28|0;v=a+400|0;p=j+56|0;while(1){j=c[d>>2]|0;if(j>>>0>=e>>>0){if(c[z>>2]|0){l=29;break}k=c[B>>2]|0;j=c[A>>2]|0;if((k|0)<(j|0)){l=c[t>>2]|0;if((l|0)>0){m=0;while(1){n=c[r+(m<<2)>>2]|0;o=c[u>>2]|0;if((k|0)<(j|0)){l=k+-1|0;do{WH(n,l,n,k,1,o);k=k+1|0}while((k|0)!=(j|0));l=c[t>>2]|0}m=m+1|0;if((m|0)>=(l|0))break;k=c[B>>2]|0;j=c[A>>2]|0}j=c[A>>2]|0}c[B>>2]=j;l=25}else l=24}else{o=e-j|0;n=c[B>>2]|0;l=(c[A>>2]|0)-n|0;o=l>>>0>>0?l:o;Hd[c[(c[q>>2]|0)+4>>2]&63](a,b+(j<<2)|0,r,n,o);if((c[z>>2]|0)==(c[s>>2]|0)?(x=c[t>>2]|0,(x|0)>0):0){k=c[w>>2]|0;j=x;l=0;do{if((k|0)>=1){j=r+(l<<2)|0;m=1;while(1){k=c[j>>2]|0;WH(k,0,k,0-m|0,1,c[u>>2]|0);k=c[w>>2]|0;if((m|0)<(k|0))m=m+1|0;else break}j=c[t>>2]|0}l=l+1|0}while((l|0)<(j|0))}c[d>>2]=(c[d>>2]|0)+o;k=(c[B>>2]|0)+o|0;c[B>>2]=k;c[z>>2]=(c[z>>2]|0)-o;j=c[A>>2]|0;l=24}if((l|0)==24?(l=0,(k|0)==(j|0)):0)l=25;if((l|0)==25){Hd[c[(c[v>>2]|0)+4>>2]&63](a,r,c[p>>2]|0,f,c[g>>2]|0);c[g>>2]=(c[g>>2]|0)+1;k=c[w>>2]|0;j=(c[p>>2]|0)+k|0;c[p>>2]=(j|0)<(y|0)?j:0;j=c[B>>2]|0;if((j|0)>=(y|0)){c[B>>2]=0;j=0}c[A>>2]=k+j}if((c[g>>2]|0)>>>0>=h>>>0){l=29;break}}if((l|0)==29){i=C;return}}function LR(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;j=c[a+384>>2]|0;q=c[d>>2]|0;if(q>>>0>=e>>>0){i=y;return}t=a+260|0;u=j+52|0;v=a+396|0;w=j+8|0;s=j+48|0;x=a+76|0;n=a+28|0;p=a+400|0;j=q;while(1){if((c[g>>2]|0)>>>0>=h>>>0){k=28;break}o=e-j|0;q=c[u>>2]|0;r=(c[t>>2]|0)-q|0;o=r>>>0>>0?r:o;Hd[c[(c[v>>2]|0)+4>>2]&63](a,b+(j<<2)|0,w,q,o);c[d>>2]=(c[d>>2]|0)+o;q=(c[u>>2]|0)+o|0;c[u>>2]=q;r=c[s>>2]|0;c[s>>2]=r-o;j=c[t>>2]|0;if(!((r|0)==(o|0)&(q|0)<(j|0))){if((q|0)==(j|0))k=15}else{k=c[x>>2]|0;if((k|0)>0){l=0;while(1){r=c[w+(l<<2)>>2]|0;o=c[n>>2]|0;if((q|0)<(j|0)){k=q+-1|0;do{WH(r,k,r,q,1,o);q=q+1|0}while((q|0)!=(j|0));k=c[x>>2]|0}l=l+1|0;if((l|0)>=(k|0))break;q=c[u>>2]|0;j=c[t>>2]|0}j=c[t>>2]|0}c[u>>2]=j;k=15}if((k|0)==15){k=0;Hd[c[(c[p>>2]|0)+4>>2]&63](a,w,0,f,c[g>>2]|0);c[u>>2]=0;c[g>>2]=(c[g>>2]|0)+1}if((c[s>>2]|0)==0?(m=c[g>>2]|0,m>>>0>>0):0){k=19;break}j=c[d>>2]|0;if(j>>>0>=e>>>0){k=28;break}}if((k|0)==19){j=c[x>>2]|0;a:do if((j|0)>0){r=a+268|0;k=0;q=c[a+84>>2]|0;while(1){n=ea(c[q+40>>2]|0,c[q+12>>2]|0)|0;n=(n|0)/(c[r>>2]|0)|0;o=c[f+(k<<2)>>2]|0;p=ea(c[q+36>>2]|0,c[q+28>>2]|0)|0;l=ea(m,n)|0;n=ea(n,h)|0;if((l|0)<(n|0)){m=l+-1|0;j=l;do{WH(o,m,o,j,1,p);j=j+1|0}while((j|0)!=(n|0));j=c[x>>2]|0}k=k+1|0;if((k|0)>=(j|0))break a;m=c[g>>2]|0;q=q+88|0}}while(0);c[g>>2]=h;i=y;return}else if((k|0)==28){i=y;return}}function MR(a){a=a|0;return}function NR(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;g=c[a+400>>2]|0;k=a+76|0;if((c[k>>2]|0)<=0){i=m;return}l=g+52|0;g=g+12|0;h=0;j=c[a+84>>2]|0;while(1){n=(c[e+(h<<2)>>2]|0)+((ea(c[l+(h<<2)>>2]|0,f)|0)<<2)|0;de[c[g+(h<<2)>>2]&63](a,j,(c[b+(h<<2)>>2]|0)+(d<<2)|0,n);h=h+1|0;if((h|0)>=(c[k>>2]|0))break;else j=j+88|0}i=m;return}function OR(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=i;m=ea(c[e+36>>2]|0,c[e+28>>2]|0)|0;v=b+260|0;e=c[v>>2]|0;k=e+2|0;l=c[b+28>>2]|0;j=m-l|0;if((j|0)>0&(k|0)>0){e=l+-1|0;h=0;do{u=c[f+(h+-1<<2)>>2]|0;Cga(u+l|0,a[u+e>>0]|0,j|0)|0;h=h+1|0}while((h|0)!=(k|0));e=c[v>>2]|0}u=c[b+216>>2]|0;t=65536-(u<<9)|0;u=u<<6;if((e|0)<=0){i=w;return}s=m+-2|0;if(!s){e=0;do{s=c[g+(e<<2)>>2]|0;q=c[f+(e<<2)>>2]|0;r=c[f+(e+-1<<2)>>2]|0;e=e+1|0;b=c[f+(e<<2)>>2]|0;m=(d[b>>0]|0)+(d[r>>0]|0)|0;l=d[q>>0]|0;p=m+l|0;q=q+1|0;r=(d[b+1>>0]|0)+(d[r+1>>0]|0)+(d[q>>0]|0)|0;a[s>>0]=((ea(l,t)|0)+32768+(ea(p+m+r|0,u)|0)|0)>>>16;q=d[q>>0]|0;a[s+1>>0]=((ea(q,t)|0)+32768+(ea(p-q+(r<<1)|0,u)|0)|0)>>>16}while((e|0)<(c[v>>2]|0));i=w;return}h=m+-1|0;p=0;do{e=c[g+(p<<2)>>2]|0;j=c[f+(p<<2)>>2]|0;r=c[f+(p+-1<<2)>>2]|0;p=p+1|0;m=c[f+(p<<2)>>2]|0;b=r+1|0;l=m+1|0;r=(d[m>>0]|0)+(d[r>>0]|0)|0;m=d[j>>0]|0;q=r+m|0;o=j+1|0;n=(d[l>>0]|0)+(d[b>>0]|0)+(d[o>>0]|0)|0;a[e>>0]=((ea(m,t)|0)+32768+(ea(q+r+n|0,u)|0)|0)>>>16;r=e+h|0;m=s;while(1){e=e+1|0;x=d[o>>0]|0;o=o+1|0;b=b+1|0;l=l+1|0;k=(d[l>>0]|0)+(d[b>>0]|0)+(d[o>>0]|0)|0;a[e>>0]=((ea(x,t)|0)+32768+(ea(q+n-x+k|0,u)|0)|0)>>>16;m=m+-1|0;if(!m)break;else{q=n;n=k}}x=d[j+h>>0]|0;a[r>>0]=((ea(x,t)|0)+32768+(ea(n-x+(k<<1)|0,u)|0)|0)>>>16}while((p|0)<(c[v>>2]|0));i=w;return}function PR(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;j=i;g=b+260|0;h=b+28|0;WH(e,0,f,0,c[g>>2]|0,c[h>>2]|0);g=c[g>>2]|0;h=c[h>>2]|0;e=(ea(c[d+36>>2]|0,c[d+28>>2]|0)|0)-h|0;if(!((e|0)>0&(g|0)>0)){i=j;return}b=h+-1|0;d=0;do{k=c[f+(d<<2)>>2]|0;Cga(k+h|0,a[k+b>>0]|0,e|0)|0;d=d+1|0}while((d|0)!=(g|0));i=j;return}function QR(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;l=ea(c[e+36>>2]|0,c[e+28>>2]|0)|0;m=b+260|0;h=c[m>>2]|0;j=c[b+28>>2]|0;b=(l<<1)-j|0;if((b|0)>0&(h|0)>0){e=j+-1|0;k=0;do{o=c[f+(k<<2)>>2]|0;Cga(o+j|0,a[o+e>>0]|0,b|0)|0;k=k+1|0}while((k|0)!=(h|0));h=c[m>>2]|0}if((h|0)<=0){i=n;return}if(!l){e=0;do e=e+1|0;while((e|0)<(h|0));i=n;return}else h=0;do{e=0;j=c[f+(h<<2)>>2]|0;b=0;k=c[g+(h<<2)>>2]|0;while(1){a[k>>0]=((d[j>>0]|0)+e+(d[j+1>>0]|0)|0)>>>1;b=b+1|0;if((b|0)==(l|0))break;else{e=e^1;j=j+2|0;k=k+1|0}}h=h+1|0}while((h|0)<(c[m>>2]|0));i=n;return}function RR(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;m=ea(c[e+36>>2]|0,c[e+28>>2]|0)|0;D=b+260|0;e=c[D>>2]|0;k=e+2|0;l=c[b+28>>2]|0;j=(m<<1)-l|0;if((j|0)>0&(k|0)>0){e=l+-1|0;h=0;do{C=c[f+(h+-1<<2)>>2]|0;Cga(C+l|0,a[C+e>>0]|0,j|0)|0;h=h+1|0}while((h|0)!=(k|0));e=c[D>>2]|0}C=c[b+216>>2]|0;B=(ea(C,-80)|0)+16384|0;C=C<<4;if((e|0)<=0){i=E;return}z=m+-2|0;A=m+-1|0;n=m<<1;w=0;x=0;while(1){e=c[g+(x<<2)>>2]|0;b=c[f+(w<<2)>>2]|0;o=c[f+((w|1)<<2)>>2]|0;p=c[f+(w+-1<<2)>>2]|0;w=w+2|0;q=c[f+(w<<2)>>2]|0;m=d[b>>0]|0;l=d[o>>0]|0;t=d[p>>0]|0;y=d[q>>0]|0;u=b+2|0;v=o+2|0;r=p+2|0;s=q+2|0;a[e>>0]=((ea((d[b+1>>0]|0)+m+l+(d[o+1>>0]|0)|0,B)|0)+32768+(ea(y+t+(d[r>>0]|0)+(d[s>>0]|0)+(l+m+t+(d[p+1>>0]|0)+y+(d[q+1>>0]|0)+(d[u>>0]|0)+(d[v>>0]|0)<<1)|0,C)|0)|0)>>>16;y=e+A|0;t=z;while(1){e=e+1|0;k=d[u+1>>0]|0;h=d[v+1>>0]|0;j=k+(d[u>>0]|0)+(d[v>>0]|0)+h|0;b=d[r+1>>0]|0;l=d[s+1>>0]|0;m=b+(d[r>>0]|0)+(d[s>>0]|0)+l+(d[u+-1>>0]|0)|0;if(!t)break;b=u+2|0;l=v+2|0;k=r+2|0;h=s+2|0;a[e>>0]=((ea(j,B)|0)+32768+(ea((d[k>>0]|0)+(d[r+-1>>0]|0)+((d[b>>0]|0)+m+(d[v+-1>>0]|0)+(d[l>>0]|0)<<1)+(d[s+-1>>0]|0)+(d[h>>0]|0)|0,C)|0)|0)>>>16;r=k;s=h;t=t+-1|0;u=b;v=l}a[y>>0]=((ea(j,B)|0)+32768+(ea(l+b+(d[p+(n+-3)>>0]|0)+(d[q+(n+-3)>>0]|0)+(h+k+m+(d[o+(n+-3)>>0]|0)<<1)|0,C)|0)|0)>>>16;if((w|0)>=(c[D>>2]|0))break;else x=x+1|0}i=E;return}function SR(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;n=ea(c[e+36>>2]|0,c[e+28>>2]|0)|0;o=b+260|0;h=c[o>>2]|0;j=c[b+28>>2]|0;b=(n<<1)-j|0;if((b|0)>0&(h|0)>0){e=j+-1|0;k=0;do{m=c[f+(k<<2)>>2]|0;Cga(m+j|0,a[m+e>>0]|0,b|0)|0;k=k+1|0}while((k|0)!=(h|0));h=c[o>>2]|0}if((h|0)<=0){i=p;return}if(!n){e=0;do e=e+2|0;while((e|0)<(h|0));i=p;return}else{b=0;m=0}while(1){e=1;j=c[f+(b<<2)>>2]|0;h=c[f+((b|1)<<2)>>2]|0;k=0;l=c[g+(m<<2)>>2]|0;while(1){a[l>>0]=((d[j>>0]|0)+e+(d[j+1>>0]|0)+(d[h>>0]|0)+(d[h+1>>0]|0)|0)>>>2;k=k+1|0;if((k|0)==(n|0))break;else{e=e^3;j=j+2|0;h=h+2|0;l=l+1|0}}b=b+2|0;if((b|0)>=(c[o>>2]|0))break;else m=m+1|0}i=p;return}function TR(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;t=c[b+400>>2]|0;x=ea(c[e+36>>2]|0,c[e+28>>2]|0)|0;l=c[e+4>>2]|0;m=a[t+92+l>>0]|0;s=m&255;l=a[t+l+102>>0]|0;t=l&255;u=ea(t,s)|0;v=u>>>1;w=b+260|0;e=c[w>>2]|0;h=c[b+28>>2]|0;j=(ea(s,x)|0)-h|0;if((j|0)>0&(e|0)>0){b=h+-1|0;k=0;do{r=c[f+(k<<2)>>2]|0;Cga(r+h|0,a[r+b>>0]|0,j|0)|0;k=k+1|0}while((k|0)!=(e|0));e=c[w>>2]|0}if((e|0)<=0){i=y;return}r=(x|0)==0;q=l<<24>>24==0;p=m<<24>>24==0;n=0;o=0;while(1){if(!r){l=0;k=0;m=c[g+(o<<2)>>2]|0;while(1){if(q)e=0;else{e=0;h=0;do{if(!p){j=0;b=(c[f+(h+n<<2)>>2]|0)+k|0;while(1){e=(d[b>>0]|0)+e|0;j=j+1|0;if((j|0)>=(s|0))break;else b=b+1|0}}h=h+1|0}while((h|0)<(t|0))}a[m>>0]=(e+v|0)/(u|0)|0;l=l+1|0;if((l|0)==(x|0))break;else{k=k+s|0;m=m+1|0}}e=c[w>>2]|0}n=n+t|0;if((n|0)>=(e|0))break;else o=o+1|0}i=y;return}function UR(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;g=b+20|0;f=b+408|0;if((c[g>>2]|0)!=204){Id[c[c[f>>2]>>2]&511](b);c[b+120>>2]=0;c[g>>2]=204}a:do if(a[(c[f>>2]|0)+8>>0]|0){h=b+120|0;j=b+96|0;k=b+8|0;l=b+412|0;m=c[h>>2]|0;while(1){d=c[j>>2]|0;if(m>>>0>=d>>>0){Id[c[(c[f>>2]|0)+4>>2]&511](b);Id[c[c[f>>2]>>2]&511](b);c[h>>2]=0;if(!(a[(c[f>>2]|0)+8>>0]|0))break a;else{m=0;continue}}e=c[k>>2]|0;if(!e)d=m;else{c[e+4>>2]=m;c[e+8>>2]=d;Id[c[e>>2]&511](b);d=c[h>>2]|0}de[c[(c[l>>2]|0)+4>>2]&63](b,0,h,0);m=c[h>>2]|0;if((m|0)==(d|0)){d=0;break}}i=n;return d|0}while(0);c[g>>2]=(a[b+65>>0]|0)!=0?206:205;b=1;i=n;return b|0}function VR(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;r=c[b+432>>2]|0;s=b+201|0;t=b+376|0;g=c[t>>2]|0;e=(g|0)==0;do if(a[s>>0]|0){n=b+380|0;d=c[n>>2]|0;if(e)if(!d)q=7;else q=11;else if(((d|0)>=(g|0)?(d|0)<=(c[b+400>>2]|0):0)?(c[b+304>>2]|0)==1:0)q=7;else q=11;do if((q|0)==7){d=c[b+384>>2]|0;if(d){d=d+-1|0;if((d|0)!=(c[b+388>>2]|0)){q=11;break}}else d=c[b+388>>2]|0;if((d|0)>13)q=11}while(0);if((q|0)==11){p=c[b>>2]|0;c[p+20>>2]=17;c[p+24>>2]=g;c[p+28>>2]=c[n>>2];c[p+32>>2]=c[b+384>>2];c[p+36>>2]=c[b+388>>2];Id[c[p>>2]&511](b)}m=b+304|0;d=c[m>>2]|0;if((d|0)>0){j=b+140|0;g=b+384|0;k=b+388|0;l=0;do{f=c[(c[b+(l<<2)+308>>2]|0)+4>>2]|0;h=c[j>>2]|0;d=c[t>>2]|0;if(d){if((c[h+(f<<8)>>2]|0)<0){d=c[b>>2]|0;c[d+20>>2]=118;c[d+24>>2]=f;c[d+28>>2]=0;Jd[c[d+4>>2]&255](b,-1);d=c[t>>2]|0}}else d=0;if((d|0)<=(c[n>>2]|0))while(1){e=h+(f<<8)+(d<<2)|0;p=c[e>>2]|0;if((c[g>>2]|0)!=(((p|0)<0?0:p)|0)){p=c[b>>2]|0;c[p+20>>2]=118;c[p+24>>2]=f;c[p+28>>2]=d;Jd[c[p+4>>2]&255](b,-1)}c[e>>2]=c[k>>2];if((d|0)<(c[n>>2]|0))d=d+1|0;else break}l=l+1|0;d=c[m>>2]|0}while((l|0)<(d|0))}else g=b+384|0;e=(c[t>>2]|0)==0;f=r+4|0;if(!(c[g>>2]|0))if(e){c[f>>2]=272;break}else{c[f>>2]=273;break}else if(e){c[f>>2]=274;break}else{c[f>>2]=275;break}}else{if((e?(c[b+384>>2]|0)==0:0)?(c[b+388>>2]|0)==0:0){p=c[b+380>>2]|0;if((p|0)<64?(p|0)!=(c[b+400>>2]|0):0)q=35}else q=35;if((q|0)==35){p=c[b>>2]|0;c[p+20>>2]=125;Jd[c[p+4>>2]&255](b,-1)}c[r+4>>2]=276;d=c[b+304>>2]|0}while(0);p=b+304|0;if((d|0)<=0){t=r+12|0;c[t>>2]=0;t=r+16|0;c[t>>2]=0;t=r+20|0;c[t>>2]=-16;t=b+252|0;t=c[t>>2]|0;b=r+56|0;c[b>>2]=t;i=u;return}e=r+60|0;f=b+4|0;m=r+24|0;j=r+40|0;h=b+400|0;k=r+124|0;n=b+384|0;o=0;do{l=c[b+(o<<2)+308>>2]|0;d=a[s>>0]|0;if(d<<24>>24){if((c[t>>2]|0)==0?(c[n>>2]|0)==0:0)q=42}else q=42;if((q|0)==42){q=0;d=c[l+20>>2]|0;if(d>>>0>15){g=c[b>>2]|0;c[g+20>>2]=50;c[g+24>>2]=d;Id[c[g>>2]&511](b)}g=e+(d<<2)|0;d=c[g>>2]|0;if(!d){d=Od[c[c[f>>2]>>2]&255](b,1,64)|0;c[g>>2]=d}d=d+0|0;g=d+64|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(g|0));c[m+(o<<2)>>2]=0;c[j+(o<<2)>>2]=0;d=a[s>>0]|0}if(!(d<<24>>24)){if(c[h>>2]|0)q=50}else if(c[t>>2]|0)q=50;if((q|0)==50){q=0;d=c[l+24>>2]|0;if(d>>>0>15){g=c[b>>2]|0;c[g+20>>2]=50;c[g+24>>2]=d;Id[c[g>>2]&511](b)}g=k+(d<<2)|0;d=c[g>>2]|0;if(!d){d=Od[c[c[f>>2]>>2]&255](b,1,256)|0;c[g>>2]=d}Cga(d|0,0,256)|0}o=o+1|0}while((o|0)<(c[p>>2]|0));t=r+12|0;c[t>>2]=0;t=r+16|0;c[t>>2]=0;t=r+20|0;c[t>>2]=-16;t=b+252|0;t=c[t>>2]|0;b=r+56|0;c[b>>2]=t;i=u;return}function WR(a){a=a|0;return}function XR(a){a=a|0;var b=0,d=0,e=0;e=i;c[a+128>>2]=0;d=c[a+416>>2]|0;do if((c[a+304>>2]|0)<=1){b=c[a+308>>2]|0;if((c[a+296>>2]|0)==1){c[d+28>>2]=c[b+76>>2];break}else{c[d+28>>2]=c[b+12>>2];break}}else c[d+28>>2]=1;while(0);c[d+20>>2]=0;c[d+24>>2]=0;i=e;return}function YR(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;l=c[d+416>>2]|0;if(!(c[l+16>>2]|0)){l=d+136|0;c[l>>2]=0;i=n;return}a:do if(((a[d+73>>0]|0)!=0?(a[d+201>>0]|0)!=0:0)?(m=d+140|0,(c[m>>2]|0)!=0):0){e=l+112|0;f=c[e>>2]|0;if(!f){k=d+36|0;f=Od[c[c[d+4>>2]>>2]&255](d,1,(c[k>>2]|0)*24|0)|0;c[e>>2]=f}else k=d+36|0;if((c[k>>2]|0)>0){j=0;g=c[d+196>>2]|0;h=0;while(1){e=c[g+80>>2]|0;if(!e)break a;if(!(b[e>>1]|0))break a;if(!(b[e+2>>1]|0))break a;if(!(b[e+16>>1]|0))break a;if(!(b[e+32>>1]|0))break a;if(!(b[e+18>>1]|0))break a;if(!(b[e+4>>1]|0))break a;e=c[m>>2]|0;if((c[e+(j<<8)>>2]|0)<0)break a;o=e+(j<<8)+4|0;c[f+4>>2]=c[o>>2];o=(c[o>>2]|0)==0?h:1;p=e+(j<<8)+8|0;c[f+8>>2]=c[p>>2];o=(c[p>>2]|0)==0?o:1;p=e+(j<<8)+12|0;c[f+12>>2]=c[p>>2];o=(c[p>>2]|0)==0?o:1;p=e+(j<<8)+16|0;c[f+16>>2]=c[p>>2];o=(c[p>>2]|0)==0?o:1;e=e+(j<<8)+20|0;c[f+20>>2]=c[e>>2];h=(c[e>>2]|0)==0?o:1;j=j+1|0;if((j|0)>=(c[k>>2]|0))break;else{f=f+24|0;g=g+88|0}}if(h<<24>>24){c[l+12>>2]=277;p=d+136|0;c[p>>2]=0;i=n;return}}}while(0);c[l+12>>2]=228;p=d+136|0;c[p>>2]=0;i=n;return}function ZR(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+16|0;x=A;y=a+416|0;g=c[y>>2]|0;z=a+304|0;if((c[z>>2]|0)>0){b=a+4|0;f=g+72|0;d=a+128|0;e=0;do{t=c[a+(e<<2)+308>>2]|0;v=c[t+12>>2]|0;u=ea(v,c[d>>2]|0)|0;c[x+(e<<2)>>2]=Xd[c[(c[b>>2]|0)+32>>2]&127](a,c[f+(c[t+4>>2]<<2)>>2]|0,u,v,1)|0;e=e+1|0}while((e|0)<(c[z>>2]|0))}r=g+24|0;d=c[r>>2]|0;s=g+28|0;b=c[s>>2]|0;a:do if((d|0)<(b|0)){t=g+20|0;u=a+324|0;v=a+432|0;q=g+32|0;e=c[t>>2]|0;f=c[u>>2]|0;b:while(1){if(e>>>0>>0){while(1){o=c[z>>2]|0;if((o|0)>0){b=0;p=0;do{n=c[a+(p<<2)+308>>2]|0;l=c[n+56>>2]|0;m=ea(l,e)|0;n=c[n+60>>2]|0;if((n|0)>0?(w=c[x+(p<<2)>>2]|0,(l|0)>0):0){k=0;do{h=(l|0)>1?l:1;f=b;g=(c[w+(k+d<<2)>>2]|0)+(m<<7)|0;j=0;while(1){c[q+(f<<2)>>2]=g;j=j+1|0;if((j|0)>=(l|0))break;else{f=f+1|0;g=g+128|0}}b=b+h|0;k=k+1|0}while((k|0)<(n|0))}p=p+1|0}while((p|0)<(o|0))}f=e+1|0;if(!((Wd[c[(c[v>>2]|0)+4>>2]&511](a,q)|0)<<24>>24))break b;b=c[u>>2]|0;if(f>>>0>>0)e=f;else break}f=b;b=c[s>>2]|0}c[t>>2]=0;d=d+1|0;if((d|0)<(b|0))e=0;else break a}c[r>>2]=d;c[t>>2]=e;a=0;i=A;return a|0}while(0);f=a+128|0;e=(c[f>>2]|0)+1|0;c[f>>2]=e;f=c[a+296>>2]|0;if(e>>>0>=f>>>0){Id[c[(c[a+424>>2]|0)+12>>2]&511](a);a=4;i=A;return a|0}d=c[y>>2]|0;do if((c[z>>2]|0)<=1){b=c[a+308>>2]|0;if(e>>>0<(f+-1|0)>>>0){c[d+28>>2]=c[b+12>>2];break}else{c[d+28>>2]=c[b+76>>2];break}}else c[d+28>>2]=1;while(0);c[d+20>>2]=0;c[d+24>>2]=0;a=3;i=A;return a|0}function _R(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;m=c[b+416>>2]|0;x=b+296|0;y=(c[x>>2]|0)+-1|0;g=b+124|0;h=b+132|0;j=b+424|0;k=b+128|0;z=b+136|0;while(1){e=c[g>>2]|0;f=c[h>>2]|0;if((e|0)>=(f|0)){if((e|0)!=(f|0))break;if((c[k>>2]|0)>>>0>(c[z>>2]|0)>>>0)break}if(!(Ld[c[c[j>>2]>>2]&511](b)|0)){e=0;l=21;break}}if((l|0)==21){i=A;return e|0}v=b+36|0;e=c[v>>2]|0;if((e|0)>0){w=b+4|0;t=m+72|0;u=b+436|0;r=0;s=c[b+196>>2]|0;while(1){if(a[s+52>>0]|0){e=s+12|0;q=c[e>>2]|0;p=ea(q,c[z>>2]|0)|0;q=Xd[c[(c[w>>2]|0)+32>>2]&127](b,c[t+(r<<2)>>2]|0,p,q,0)|0;if((c[z>>2]|0)>>>0>>0)o=c[e>>2]|0;else{p=c[e>>2]|0;o=((c[s+32>>2]|0)>>>0)%(p>>>0)|0;o=(o|0)==0?p:o}g=c[(c[u>>2]|0)+(r<<2)+4>>2]|0;if((o|0)>0){k=s+28|0;j=s+40|0;l=s+36|0;e=c[k>>2]|0;n=0;p=c[d+(r<<2)>>2]|0;while(1){if(!e)e=0;else{m=0;h=c[q+(n<<2)>>2]|0;f=0;while(1){Hd[g&63](b,s,h,p,f);m=m+1|0;e=c[k>>2]|0;if(m>>>0>=e>>>0)break;else{h=h+128|0;f=(c[l>>2]|0)+f|0}}}n=n+1|0;if((n|0)==(o|0))break;else p=p+(c[j>>2]<<2)|0}}e=c[v>>2]|0}r=r+1|0;if((r|0)>=(e|0))break;else s=s+88|0}}d=(c[z>>2]|0)+1|0;c[z>>2]=d;d=d>>>0<(c[x>>2]|0)>>>0?3:4;i=A;return d|0}function $R(a){a=a|0;return 0}function aS(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;N=b+416|0;e=c[N>>2]|0;I=(c[b+324>>2]|0)+-1|0;M=b+296|0;h=c[M>>2]|0;J=h+-1|0;K=e+24|0;g=c[K>>2]|0;H=e+28|0;f=c[H>>2]|0;do if((g|0)<(f|0)){E=e+20|0;F=b+400|0;G=b+432|0;A=e+32|0;B=b+304|0;C=b+436|0;e=b+128|0;D=b+332|0;h=c[E>>2]|0;a:while(1){if(h>>>0>I>>>0)h=f;else{do{if(c[F>>2]|0)Cga(c[A>>2]|0,0,c[D>>2]<<7|0)|0;if(!((Wd[c[(c[G>>2]|0)+4>>2]&511](b,A)|0)<<24>>24))break a;f=c[B>>2]|0;if((f|0)>0){z=h>>>0>>0;j=0;y=0;do{w=c[b+(y<<2)+308>>2]|0;if(!(a[w+52>>0]|0))j=(c[w+64>>2]|0)+j|0;else{k=c[w+4>>2]|0;p=c[(c[C>>2]|0)+(k<<2)+4>>2]|0;x=w+56|0;q=c[(z?x:w+72|0)>>2]|0;r=w+40|0;f=c[r>>2]|0;s=ea(c[w+68>>2]|0,h)|0;t=w+60|0;l=c[t>>2]|0;b:do if((l|0)>0){m=ea(f,g)|0;u=w+76|0;v=w+36|0;if((q|0)>0){n=(c[d+(k<<2)>>2]|0)+(m<<2)|0;o=0}else{f=0;while(1){j=(c[x>>2]|0)+j|0;f=f+1|0;if((f|0)>=(l|0))break b}}while(1){if((c[e>>2]|0)>>>0>=J>>>0?(o+g|0)>=(c[u>>2]|0):0){m=f;f=l}else{f=s;k=0;L=18}if((L|0)==18){while(1){L=0;Hd[p&63](b,w,c[A+(k+j<<2)>>2]|0,n,f);k=k+1|0;if((k|0)==(q|0))break;else{f=(c[v>>2]|0)+f|0;L=18}}m=c[r>>2]|0;f=c[t>>2]|0}j=(c[x>>2]|0)+j|0;o=o+1|0;if((o|0)>=(f|0))break;else{l=f;f=m;n=n+(m<<2)|0}}}while(0);f=c[B>>2]|0}y=y+1|0}while((y|0)<(f|0))}h=h+1|0}while(h>>>0<=I>>>0);h=c[H>>2]|0}c[E>>2]=0;g=g+1|0;if((g|0)<(h|0)){f=h;h=0}else{L=26;break}}if((L|0)==26){h=c[M>>2]|0;break}c[K>>2]=g;c[E>>2]=h;b=0;i=O;return b|0}else e=b+128|0;while(0);g=b+136|0;c[g>>2]=(c[g>>2]|0)+1;g=(c[e>>2]|0)+1|0;c[e>>2]=g;if(g>>>0>=h>>>0){Id[c[(c[b+424>>2]|0)+12>>2]&511](b);b=4;i=O;return b|0}f=c[N>>2]|0;do if((c[b+304>>2]|0)<=1){e=c[b+308>>2]|0;if(g>>>0<(h+-1|0)>>>0){c[f+28>>2]=c[e+12>>2];break}else{c[f+28>>2]=c[e+76>>2];break}}else c[f+28>>2]=1;while(0);c[f+20>>2]=0;c[f+24>>2]=0;b=3;i=O;return b|0}function bS(a){a=a|0;return}function cS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;WH(c[b>>2]|0,d,e,0,f,c[a+92>>2]|0);i=g;return}function dS(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;q=c[(c[b+444>>2]|0)+28>>2]|0;n=c[b+92>>2]|0;if((h|0)<=0){i=r;return}o=e+4|0;p=e+8|0;if(!n){i=r;return}do{h=h+-1|0;b=c[(c[e>>2]|0)+(f<<2)>>2]|0;j=c[(c[o>>2]|0)+(f<<2)>>2]|0;k=c[(c[p>>2]|0)+(f<<2)>>2]|0;f=f+1|0;l=c[g>>2]|0;g=g+4|0;m=0;do{a[l+m>>0]=((c[q+((d[j+m>>0]|0|256)<<2)>>2]|0)+(c[q+((d[b+m>>0]|0)<<2)>>2]|0)+(c[q+((d[k+m>>0]|0|512)<<2)>>2]|0)|0)>>>16;m=m+1|0}while((m|0)!=(n|0))}while((h|0)>0);i=r;return}function eS(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;q=c[(c[b+444>>2]|0)+28>>2]|0;n=c[b+92>>2]|0;if((h|0)<=0){i=r;return}o=e+4|0;p=e+8|0;if(!n){i=r;return}do{h=h+-1|0;b=c[(c[e>>2]|0)+(f<<2)>>2]|0;j=c[(c[o>>2]|0)+(f<<2)>>2]|0;k=c[(c[p>>2]|0)+(f<<2)>>2]|0;f=f+1|0;l=c[g>>2]|0;g=g+4|0;m=0;do{s=d[j+m>>0]|0;a[l+m>>0]=((c[q+((s|256)<<2)>>2]|0)+(c[q+(((d[b+m>>0]|0)+128+s&255)<<2)>>2]|0)+(c[q+((s+128+(d[k+m>>0]|0)&255|512)<<2)>>2]|0)|0)>>>16;m=m+1|0}while((m|0)!=(n|0))}while((h|0)>0);i=r;return}function fS(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;l=i;k=c[b+92>>2]|0;if((g|0)<1|(k|0)==0){i=l;return}else b=g;do{b=b+-1|0;g=c[(c[d>>2]|0)+(e<<2)>>2]|0;e=e+1|0;h=0;j=c[f>>2]|0;f=f+4|0;while(1){m=a[g+h>>0]|0;a[j+2>>0]=m;a[j+1>>0]=m;a[j>>0]=m;h=h+1|0;if((h|0)==(k|0))break;else j=j+3|0}}while((b|0)>0);i=l;return}function gS(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;v=i;o=c[b+444>>2]|0;r=c[b+92>>2]|0;s=c[o+24>>2]|0;t=c[o+8>>2]|0;u=c[o+12>>2]|0;n=c[o+16>>2]|0;o=c[o+20>>2]|0;if((h|0)<=0){i=v;return}p=e+4|0;q=e+8|0;if(!r){i=v;return}do{h=h+-1|0;b=c[(c[e>>2]|0)+(f<<2)>>2]|0;j=c[(c[p>>2]|0)+(f<<2)>>2]|0;k=c[(c[q>>2]|0)+(f<<2)>>2]|0;f=f+1|0;l=0;m=c[g>>2]|0;g=g+4|0;while(1){w=d[b+l>>0]|0;x=d[j+l>>0]|0;y=d[k+l>>0]|0;a[m>>0]=a[s+((c[t+(y<<2)>>2]|0)+w)>>0]|0;a[m+1>>0]=a[s+(((c[n+(y<<2)>>2]|0)+(c[o+(x<<2)>>2]|0)>>16)+w)>>0]|0;a[m+2>>0]=a[s+((c[u+(x<<2)>>2]|0)+w)>>0]|0;l=l+1|0;if((l|0)==(r|0))break;else m=m+3|0}}while((h|0)>0);i=v;return}function hS(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;h=i;e=c[a+444>>2]|0;j=a+4|0;d=e+8|0;c[d>>2]=Od[c[c[j>>2]>>2]&255](a,1,1024)|0;f=e+12|0;c[f>>2]=Od[c[c[j>>2]>>2]&255](a,1,1024)|0;b=e+16|0;c[b>>2]=Od[c[c[j>>2]>>2]&255](a,1,1024)|0;g=e+20|0;c[g>>2]=Od[c[c[j>>2]>>2]&255](a,1,1024)|0;c[e+24>>2]=c[a+300>>2];a=c[d>>2]|0;b=c[b>>2]|0;d=0;e=-128;while(1){c[a+(d<<2)>>2]=(e*91881|0)+32768>>16;c[(c[f>>2]|0)+(d<<2)>>2]=(e*116130|0)+32768>>16;c[b+(d<<2)>>2]=ea(e,-46802)|0;j=(ea(e,-22553)|0)+32768|0;c[(c[g>>2]|0)+(d<<2)>>2]=j;d=d+1|0;if((d|0)==256)break;else e=e+1|0}i=h;return}function iS(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;m=c[b+92>>2]|0;if((g|0)<=0){i=q;return}n=d+4|0;o=d+8|0;p=(m|0)==0;do{g=g+-1|0;b=c[(c[d>>2]|0)+(e<<2)>>2]|0;h=c[(c[n>>2]|0)+(e<<2)>>2]|0;j=c[(c[o>>2]|0)+(e<<2)>>2]|0;e=e+1|0;if(!p){k=0;l=c[f>>2]|0;while(1){a[l>>0]=a[b+k>>0]|0;a[l+1>>0]=a[h+k>>0]|0;a[l+2>>0]=a[j+k>>0]|0;k=k+1|0;if((k|0)==(m|0))break;else l=l+3|0}}f=f+4|0}while((g|0)>0);i=q;return}function jS(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;r=i;n=c[b+92>>2]|0;if((h|0)<=0){i=r;return}o=e+4|0;p=e+8|0;q=(n|0)==0;do{h=h+-1|0;b=c[(c[e>>2]|0)+(f<<2)>>2]|0;j=c[(c[o>>2]|0)+(f<<2)>>2]|0;k=c[(c[p>>2]|0)+(f<<2)>>2]|0;f=f+1|0;if(!q){l=0;m=c[g>>2]|0;while(1){u=a[j+l>>0]|0;t=u&255;s=d[k+l>>0]|0;a[m>>0]=(d[b+l>>0]|0)+128+t;a[m+1>>0]=u;a[m+2>>0]=t+128+s;l=l+1|0;if((l|0)==(n|0))break;else m=m+3|0}}g=g+4|0}while((h|0)>0);i=r;return}function kS(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;y=i;p=c[b+444>>2]|0;x=c[b+92>>2]|0;u=c[b+300>>2]|0;v=c[p+8>>2]|0;w=c[p+12>>2]|0;o=c[p+16>>2]|0;p=c[p+20>>2]|0;if((h|0)<=0){i=y;return}q=e+4|0;r=e+8|0;s=e+12|0;t=(x|0)==0;do{h=h+-1|0;b=c[(c[e>>2]|0)+(f<<2)>>2]|0;j=c[(c[q>>2]|0)+(f<<2)>>2]|0;k=c[(c[r>>2]|0)+(f<<2)>>2]|0;l=c[(c[s>>2]|0)+(f<<2)>>2]|0;f=f+1|0;if(!t){m=0;n=c[g>>2]|0;while(1){z=d[j+m>>0]|0;B=d[k+m>>0]|0;A=(d[b+m>>0]|0)^255;a[n>>0]=a[u+(A-(c[v+(B<<2)>>2]|0))>>0]|0;a[n+1>>0]=a[u+(A-((c[o+(B<<2)>>2]|0)+(c[p+(z<<2)>>2]|0)>>16))>>0]|0;a[n+2>>0]=a[u+(A-(c[w+(z<<2)>>2]|0))>>0]|0;a[n+3>>0]=a[l+m>>0]|0;m=m+1|0;if((m|0)==(x|0))break;else n=n+4|0}}g=g+4|0}while((h|0)>0);i=y;return}function lS(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;o=c[b+36>>2]|0;l=c[b+92>>2]|0;if((g|0)<=0){i=p;return}m=(o|0)>0;n=(l|0)==0;while(1){g=g+-1|0;if(m){b=0;do{if(!n){h=0;j=c[(c[d+(b<<2)>>2]|0)+(e<<2)>>2]|0;k=(c[f>>2]|0)+b|0;while(1){a[k>>0]=a[j>>0]|0;h=h+1|0;if((h|0)==(l|0))break;else{j=j+1|0;k=k+o|0}}}b=b+1|0}while((b|0)!=(o|0))}if((g|0)<=0)break;else{e=e+1|0;f=f+4|0}}i=p;return} +function ee(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;return b|0}function fe(){return i|0}function ge(a){a=a|0;i=a}function he(a,b){a=a|0;b=b|0;if(!t){t=a;u=b}}function ie(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function je(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function ke(a){a=a|0;I=a}function le(){return I|0}function me(a){a=a|0;eb(a|0)|0;Eea()}function ne(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;c[a+4>>2]=d;pb(1,a|0);Xa(34963,c[a>>2]|0);Nc(34963,d<<2|0,b|0,35044);Xa(34963,0);i=e;return}function oe(a){a=a|0;var b=0;b=i;Mc(1,a|0);i=b;return}function pe(a){a=a|0;var b=0;b=i;Xa(34963,c[a>>2]|0);i=b;return}function qe(a){a=a|0;a=i;Xa(34963,0);i=a;return}function re(a){a=a|0;var b=0,d=0,e=0;e=i;c[a>>2]=64;d=c[a+28>>2]|0;if(!d){i=e;return}a=a+32|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-d|0)>>>3)<<3);xea(d);i=e;return}function se(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;c[a>>2]=64;b=c[a+28>>2]|0;if(!b){xea(a);i=f;return}d=a+32|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-8-b|0)>>>3)<<3);xea(b);xea(a);i=f;return}function te(a,b){a=a|0;b=b|0;var d=0;d=i;Jd[c[(c[b>>2]|0)+12>>2]&255](b,a);i=d;return}function ue(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+64|0;b=s+8|0;d=s+48|0;r=s+36|0;h=s+16|0;e=s+60|0;f=s+32|0;l=s+24|0;j=s+40|0;k=s+44|0;q=s;m=s+52|0;n=s+56|0;p=a+28|0;g[d>>2]=0.0;g[r>>2]=0.0;Nf(b,d,r);r=a+32|0;d=c[r>>2]|0;o=a+36|0;if(d>>>0<(c[o>>2]|0)>>>0){if(!d)a=0;else{t=b;b=c[t+4>>2]|0;a=d;c[a>>2]=c[t>>2];c[a+4>>2]=b;a=c[r>>2]|0}c[r>>2]=a+8}else xe(p,b);g[e>>2]=0.0;g[f>>2]=1.0;Nf(h,e,f);a=c[r>>2]|0;if(a>>>0<(c[o>>2]|0)>>>0){if(!a)a=0;else{f=h;t=c[f+4>>2]|0;c[a>>2]=c[f>>2];c[a+4>>2]=t;a=c[r>>2]|0}c[r>>2]=a+8}else xe(p,h);g[j>>2]=1.0;g[k>>2]=1.0;Nf(l,j,k);a=c[r>>2]|0;if(a>>>0<(c[o>>2]|0)>>>0){if(!a)a=0;else{j=l;t=c[j+4>>2]|0;c[a>>2]=c[j>>2];c[a+4>>2]=t;a=c[r>>2]|0}c[r>>2]=a+8}else xe(p,l);g[m>>2]=1.0;g[n>>2]=0.0;Nf(q,m,n);a=c[r>>2]|0;if(a>>>0>=(c[o>>2]|0)>>>0){xe(p,q);i=s;return}if(!a)a=0;else{t=c[q+4>>2]|0;c[a>>2]=c[q>>2];c[a+4>>2]=t;a=c[r>>2]|0}c[r>>2]=a+8;i=s;return}function ve(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;j=a+4|0;d=c[a>>2]|0;f=((c[j>>2]|0)-d>>2)+1|0;if(f>>>0>1073741823)r9(a);k=a+8|0;e=(c[k>>2]|0)-d|0;if(e>>2>>>0<536870911){e=e>>1;e=e>>>0>>0?f:e;d=(c[j>>2]|0)-d>>2;if(!e){g=0;f=0;e=d}else h=6}else{e=1073741823;d=(c[j>>2]|0)-d>>2;h=6}if((h|0)==6){g=e;f=tea(e<<2)|0;e=d}d=f+(e<<2)|0;if(d)c[d>>2]=c[b>>2];d=c[a>>2]|0;b=(c[j>>2]|0)-d|0;h=f+(e-(b>>2)<<2)|0;Aga(h|0,d|0,b|0)|0;c[a>>2]=h;c[j>>2]=f+(e+1<<2);c[k>>2]=f+(g<<2);if(!d){i=l;return}xea(d);i=l;return}function we(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;k=a+4|0;d=c[a>>2]|0;f=((c[k>>2]|0)-d>>6)+1|0;if(f>>>0>67108863)r9(a);l=a+8|0;e=(c[l>>2]|0)-d|0;if(e>>6>>>0<33554431){e=e>>5;e=e>>>0>>0?f:e;d=(c[k>>2]|0)-d>>6;if(!e){f=0;j=0;h=d}else g=6}else{e=67108863;d=(c[k>>2]|0)-d>>6;g=6}if((g|0)==6){f=e;j=tea(e<<6)|0;h=d}d=j+(h<<6)|0;g=j+(f<<6)|0;if(d){f=d+0|0;d=b+0|0;e=f+64|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0))}d=c[a>>2]|0;f=(c[k>>2]|0)-d|0;b=j+(h-(f>>6)<<6)|0;Aga(b|0,d|0,f|0)|0;c[a>>2]=b;c[k>>2]=j+(h+1<<6);c[l>>2]=g;if(!d){i=m;return}xea(d);i=m;return}function xe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;j=a+4|0;d=c[a>>2]|0;f=((c[j>>2]|0)-d>>3)+1|0;if(f>>>0>536870911)r9(a);k=a+8|0;e=(c[k>>2]|0)-d|0;if(e>>3>>>0<268435455){e=e>>2;e=e>>>0>>0?f:e;d=(c[j>>2]|0)-d>>3;if(!e){g=0;f=0;e=d}else h=6}else{e=536870911;d=(c[j>>2]|0)-d>>3;h=6}if((h|0)==6){g=e;f=tea(e<<3)|0;e=d}d=f+(e<<3)|0;if(d){m=b;b=c[m+4>>2]|0;h=d;c[h>>2]=c[m>>2];c[h+4>>2]=b}d=c[a>>2]|0;h=(c[j>>2]|0)-d|0;m=f+(e-(h>>3)<<3)|0;Aga(m|0,d|0,h|0)|0;c[a>>2]=m;c[j>>2]=f+(e+1<<3);c[k>>2]=f+(g<<3);if(!d){i=l;return}xea(d);i=l;return}function ye(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;c[a>>2]=88;c[a+4>>2]=b;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;h=a+20|0;c[h>>2]=d;f=a+24|0;g=f+0|0;b=e+0|0;a=g+64|0;do{c[g>>2]=c[b>>2];g=g+4|0;b=b+4|0}while((g|0)<(a|0));pf(d);of(c[h>>2]|0,104,f);mf(c[h>>2]|0,120,0);mf(c[h>>2]|0,136,1);mf(c[h>>2]|0,152,2);mf(c[h>>2]|0,168,3);mf(c[h>>2]|0,184,4);mf(c[h>>2]|0,200,5);mf(c[h>>2]|0,216,6);mf(c[h>>2]|0,232,7);qf(c[h>>2]|0);i=j;return}function ze(a){a=a|0;var b=0;b=i;Ae(a);xea(a);i=b;return}function Ae(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;c[a>>2]=88;b=c[a+20>>2]|0;if(b){lf(b);xea(b)}b=c[a+4>>2]|0;if(b)Id[c[(c[b>>2]|0)+4>>2]&511](b);g=a+12|0;b=c[g>>2]|0;f=a+8|0;a=c[f>>2]|0;if((b|0)==(a|0))a=b;else{e=0;do{d=c[a+(e<<2)>>2]|0;if(d){Id[c[(c[d>>2]|0)+4>>2]&511](d);b=c[g>>2]|0;a=c[f>>2]|0}e=e+1|0}while(e>>>0>2>>>0)}if(!a){i=h;return}if((b|0)!=(a|0))c[g>>2]=b+(~((b+-4-a|0)>>>2)<<2);xea(a);i=h;return}function Be(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g;c[d>>2]=b;f=a+12|0;e=c[f>>2]|0;if((e|0)==(c[a+16>>2]|0)){ve(a+8|0,d);i=g;return}if(!e)d=0;else{c[e>>2]=b;d=c[f>>2]|0}c[f>>2]=d+4;i=g;return}function Ce(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;pf(c[a+20>>2]|0);d=a+4|0;b=c[d>>2]|0;Id[c[(c[b>>2]|0)+8>>2]&511](b);b=c[a+8>>2]|0;a=c[a+12>>2]|0;if((b|0)!=(a|0))do{f=c[b>>2]|0;Jd[c[(c[f>>2]|0)+8>>2]&255](f,c[d>>2]|0);b=b+4|0}while((b|0)!=(a|0));f=c[d>>2]|0;Id[c[(c[f>>2]|0)+20>>2]&511](f);f=c[d>>2]|0;Id[c[(c[f>>2]|0)+24>>2]&511](f);i=e;return}function De(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=i;i=i+48|0;n=h+32|0;m=h;p=h+4|0;k=h+16|0;l=h+28|0;g[n>>2]=d;g[m>>2]=e;c[a>>2]=64;j=a+4|0;Of(j);Mf(a+16|0);o=a+28|0;c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;ue(a);c[a>>2]=296;q3(p,312,13);o=df(p)|0;v3(p);c[a+44>>2]=o;p3(a+48|0,b);c[a+60>>2]=j;g[l>>2]=0.0;Pf(k,n,m,l);c[j+0>>2]=c[k+0>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[a+24>>2]=f;i=h;return}function Ee(a,b){a=a|0;b=b|0;var d=0;d=i;Hd[c[(c[b>>2]|0)+16>>2]&63](b,a+48|0,c[a+60>>2]|0,c[a+44>>2]|0,c[a+24>>2]|0);i=d;return}function Fe(a){a=a|0;var b=0,d=0,e=0;e=i;c[a>>2]=296;v3(a+48|0);c[a>>2]=64;d=c[a+28>>2]|0;if(!d){i=e;return}a=a+32|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-8-d|0)>>>3)<<3);xea(d);i=e;return}function Ge(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;c[a>>2]=296;v3(a+48|0);c[a>>2]=64;b=c[a+28>>2]|0;if(!b){xea(a);i=f;return}d=a+32|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-8-b|0)>>>3)<<3);xea(b);xea(a);i=f;return}function He(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;j=o+16|0;n=o;k=o+8|0;l=o+12|0;X4(n,b);if(!(a[n>>0]|0)){Z4(n);i=o;return b|0}f=c[(c[b>>2]|0)+-12>>2]|0;c[k>>2]=c[b+(f+24)>>2];if((c[b+(f+4)>>2]&176|0)==32)m=d+e|0;else m=d;g=b+f|0;h=b+(f+76)|0;f=c[h>>2]|0;if((f|0)==-1){Y3(j,g);f=F9(j,369400)|0;f=Wd[c[(c[f>>2]|0)+28>>2]&511](f,32)|0;D9(j);f=f<<24>>24;c[h>>2]=f}c[j+0>>2]=c[k+0>>2];Ie(l,j,d,m,d+e|0,g,f&255);if(c[l>>2]|0){Z4(n);i=o;return b|0}d=c[(c[b>>2]|0)+-12>>2]|0;U3(b+d|0,c[b+(d+16)>>2]|5);Z4(n);i=o;return b|0}function Ie(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+16|0;n=p;o=c[d>>2]|0;if(!o){c[b>>2]=0;i=p;return}q=e;l=g-q|0;m=h+12|0;k=c[m>>2]|0;l=(k|0)>(l|0)?k-l|0:0;k=f;h=k-q|0;if((h|0)>0?(Od[c[(c[o>>2]|0)+48>>2]&255](o,e,h)|0)!=(h|0):0){c[d>>2]=0;c[b>>2]=0;i=p;return}do if((l|0)>0){r3(n,l,j);if(!(a[n>>0]&1))h=n+1|0;else h=c[n+8>>2]|0;if((Od[c[(c[o>>2]|0)+48>>2]&255](o,h,l)|0)==(l|0)){v3(n);break}c[d>>2]=0;c[b>>2]=0;v3(n);i=p;return}while(0);g=g-k|0;if((g|0)>0?(Od[c[(c[o>>2]|0)+48>>2]&255](o,f,g)|0)!=(g|0):0){c[d>>2]=0;c[b>>2]=0;i=p;return}c[m>>2]=0;c[b>>2]=o;i=p;return}function Je(a,b,d,e,f,h){a=a|0;b=+b;d=+d;e=+e;f=+f;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+48|0;q=j+36|0;p=j+32|0;l=j+8|0;o=j+12|0;k=j+16|0;m=j+28|0;n=j;g[q>>2]=b;g[p>>2]=d;g[l>>2]=e;g[o>>2]=f;g[m>>2]=0.0;Pf(k,q,p,m);Nf(n,l,o);o=c[n>>2]|0;n=c[n+4>>2]|0;c[a>>2]=64;l=a+4|0;c[l+0>>2]=c[k+0>>2];c[l+4>>2]=c[k+4>>2];c[l+8>>2]=c[k+8>>2];k=a+16|0;m=k;c[m>>2]=o;c[m+4>>2]=n;c[a+24>>2]=-1;m=a+28|0;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;ue(a);c[a>>2]=384;c[a+44>>2]=l;c[a+48>>2]=k;c[a+40>>2]=h;i=j;return}function Ke(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;c[a>>2]=64;b=c[a+28>>2]|0;if(!b){xea(a);i=f;return}d=a+32|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-8-b|0)>>>3)<<3);xea(b);xea(a);i=f;return}function Le(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;i=i+64|0;e=h;c[a>>2]=592;b=a+4|0;c[b>>2]=0;g=a+8|0;c[g>>2]=0;f=a+12|0;c[f>>2]=0;Jf(e);d=c[g>>2]|0;if(d>>>0<(c[f>>2]|0)>>>0){if(!d)b=0;else{f=d+0|0;b=e+0|0;d=f+64|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0}while((f|0)<(d|0));b=c[g>>2]|0}b=b+64|0;c[g>>2]=b}else{we(b,e);b=c[g>>2]|0}c[a+16>>2]=b+-64;c[a>>2]=456;c[a+32>>2]=0;c[a+44>>2]=0;c[a+48>>2]=0;c[a+52>>2]=0;Me(a);i=h;return}function Me(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=i;d=a+20|0;Vc(1,d|0);b=a+24|0;pb(1,b|0);Lc(c[d>>2]|0);Xa(34962,c[b>>2]|0);Nc(34962,672e4,0,35048);Jc(0);Jc(1);Jc(2);Jc(3);lc(0,3,5126,0,28,0);lc(1,2,5126,0,28,12);lc(2,1,5126,0,28,20);lc(3,4,5121,1,28,24);Xa(34962,0);b=vea(144e4)|0;d=0;e=0;while(1){c[b+(d<<2)>>2]=e;c[b+((d|1)<<2)>>2]=e|1;g=e|2;c[b+(d+2<<2)>>2]=g;c[b+(d+3<<2)>>2]=g;c[b+(d+4<<2)>>2]=e|3;c[b+(d+5<<2)>>2]=e;d=d+6|0;if((d|0)>=36e4)break;else e=e+4|0}d=tea(8)|0;ne(d,b,36e4);c[a+28>>2]=d;Lc(0);b=vea(672e4)|0;d=b+672e4|0;e=b;do{Of(e);Mf(e+12|0);e=e+28|0}while((e|0)!=(d|0));c[a+40>>2]=b;i=f;return}function Ne(a){a=a|0;var b=0;b=i;Oe(a);xea(a);i=b;return}function Oe(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;c[a>>2]=456;b=c[a+28>>2]|0;if(b){oe(b);xea(b)}Mc(1,a+24|0);Ib(1,a+20|0);b=c[a+44>>2]|0;if(b){d=a+48|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-4-b|0)>>>2)<<2);xea(b)}c[a>>2]=592;e=c[a+4>>2]|0;if(!e){i=f;return}b=a+8|0;d=c[b>>2]|0;if((d|0)!=(e|0))c[b>>2]=d+(~((d+-64-e|0)>>>6)<<6);xea(e);i=f;return}function Pe(a){a=a|0;var b=0;b=i;Xa(34962,c[a+24>>2]|0);c[a+36>>2]=c[a+40>>2];i=b;return}function Qe(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=i;i=i+112|0;o=C+100|0;p=C+88|0;q=C+76|0;u=C+64|0;v=C+60|0;w=C+48|0;x=C+36|0;y=C+28|0;z=C+24|0;A=C+12|0;B=C;r=C+32|0;s=b+4|0;t=c[b+24>>2]|0;e=c[b+40>>2]|0;do if(e){k=c[e+24>>2]|0;c[o>>2]=k;if(!k)d=0.0;else{n=a+44|0;l=a+48|0;e=c[l>>2]|0;f=c[n>>2]|0;h=e-f>>2;j=0;while(1){if(j>>>0>=h>>>0)break;D=j;j=j+1|0;if((c[f+(D<<2)>>2]|0)==(k|0)){m=7;break}}if((m|0)==7){d=+(j|0);break}if(h>>>0>31){Id[c[(c[a>>2]|0)+20>>2]&511](a);Id[c[(c[a>>2]|0)+24>>2]&511](a);Id[c[(c[a>>2]|0)+8>>2]&511](a);e=c[l>>2]|0}if((e|0)==(c[a+52>>2]|0)){Ze(n,o);e=c[l>>2]|0}else{if(e)c[e>>2]=k;e=e+4|0;c[l>>2]=e}d=+(e-(c[n>>2]|0)>>2>>>0)}}else{c[o>>2]=0;d=0.0}while(0);D=a+36|0;j=c[D>>2]|0;k=a+16|0;Kf(p,c[k>>2]|0,s);c[j+0>>2]=c[p+0>>2];c[j+4>>2]=c[p+4>>2];c[j+8>>2]=c[p+8>>2];p=b+28|0;j=c[p>>2]|0;f=c[j+4>>2]|0;o=(c[D>>2]|0)+12|0;c[o>>2]=c[j>>2];c[o+4>>2]=f;o=c[D>>2]|0;g[o+20>>2]=d;c[o+24>>2]=t;o=o+28|0;c[D>>2]=o;f=c[k>>2]|0;j=b+8|0;n=b+20|0;g[v>>2]=+g[j>>2]+ +g[n>>2];l=b+12|0;Pf(u,s,v,l);Kf(q,f,u);c[o+0>>2]=c[q+0>>2];c[o+4>>2]=c[q+4>>2];c[o+8>>2]=c[q+8>>2];v=(c[p>>2]|0)+8|0;q=c[v+4>>2]|0;u=(c[D>>2]|0)+12|0;c[u>>2]=c[v>>2];c[u+4>>2]=q;u=c[D>>2]|0;g[u+20>>2]=d;c[u+24>>2]=t;u=u+28|0;c[D>>2]=u;q=c[k>>2]|0;v=b+16|0;g[y>>2]=+g[s>>2]+ +g[v>>2];g[z>>2]=+g[j>>2]+ +g[n>>2];Pf(x,y,z,l);Kf(w,q,x);c[u+0>>2]=c[w+0>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];y=(c[p>>2]|0)+16|0;z=c[y+4>>2]|0;b=(c[D>>2]|0)+12|0;c[b>>2]=c[y>>2];c[b+4>>2]=z;b=c[D>>2]|0;g[b+20>>2]=d;c[b+24>>2]=t;b=b+28|0;c[D>>2]=b;z=c[k>>2]|0;g[r>>2]=+g[s>>2]+ +g[v>>2];Pf(B,r,j,l);Kf(A,z,B);c[b+0>>2]=c[A+0>>2];c[b+4>>2]=c[A+4>>2];c[b+8>>2]=c[A+8>>2];A=(c[p>>2]|0)+24|0;B=c[A+4>>2]|0;b=(c[D>>2]|0)+12|0;c[b>>2]=c[A>>2];c[b+4>>2]=B;b=c[D>>2]|0;g[b+20>>2]=d;c[b+24>>2]=t;c[D>>2]=b+28;D=a+32|0;c[D>>2]=(c[D>>2]|0)+6;i=C;return}function Re(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0.0,Y=0.0,Z=0.0;W=i;i=i+192|0;n=W+100|0;S=W+68|0;U=W+32|0;T=W+128|0;V=W+176|0;O=W+172|0;Q=W+168|0;P=W+164|0;R=W+160|0;y=W+148|0;G=W+136|0;H=W+132|0;I=W+24|0;J=W+116|0;K=W+104|0;L=W+60|0;M=W+8|0;N=W+36|0;z=W+48|0;A=W+64|0;B=W;C=W+72|0;D=W+84|0;E=W+96|0;F=W+16|0;q=b+44|0;o=b+48|0;k=c[o>>2]|0;j=c[q>>2]|0;l=k-j>>2;m=0;while(1){if(m>>>0>=l>>>0){j=5;break}w=m;m=m+1|0;if((c[j+(w<<2)>>2]|0)==(c[(c[f>>2]|0)+20>>2]|0)){j=4;break}}if((j|0)==4)x=+(m|0);else if((j|0)==5){if(l>>>0>31){Id[c[(c[b>>2]|0)+20>>2]&511](b);Id[c[(c[b>>2]|0)+24>>2]&511](b);Id[c[(c[b>>2]|0)+8>>2]&511](b);k=c[o>>2]|0}j=c[(c[f>>2]|0)+20>>2]|0;c[n>>2]=j;if(k>>>0<(c[b+52>>2]|0)>>>0){if(k)c[k>>2]=j;j=k+4|0;c[o>>2]=j}else{_e(q,n);j=c[o>>2]|0}x=+(j-(c[q>>2]|0)>>2>>>0)}s=c[f+4>>2]|0;t=d+1|0;u=f+12|0;v=d+8|0;w=e+4|0;f=f+16|0;o=b+36|0;n=b+16|0;m=b+32|0;k=d+4|0;l=0;p=+g[e>>2];while(1){j=a[d>>0]|0;q=(j&1)==0;if(q)j=(j&255)>>>1;else j=c[k>>2]|0;if(l>>>0>=j>>>0)break;if(q)j=t;else j=c[v>>2]|0;q=Oj(s,a[j+l>>0]|0)|0;if(q){if((l|0)>0){if(!(a[d>>0]&1))j=t;else j=c[v>>2]|0;Y=+Jj(q,a[j+(l+-1)>>0]|0);X=+g[u>>2];r=X;p=p+Y/X}else r=+g[u>>2];Z=p+ +(c[q+16>>2]|0)/r;g[S>>2]=Z;X=+g[f>>2];Y=+g[w>>2]+ +(c[q+20>>2]|0)/X;g[U>>2]=Y;g[T>>2]=Z+ +((c[q+8>>2]|0)>>>0)/r;g[V>>2]=Y-+((c[q+12>>2]|0)>>>0)/X;g[O>>2]=+g[q+32>>2];g[Q>>2]=+g[q+36>>2];g[P>>2]=+g[q+40>>2];g[R>>2]=+g[q+44>>2];e=c[o>>2]|0;b=c[n>>2]|0;g[H>>2]=0.0;Pf(G,S,U,H);Kf(y,b,G);c[e+0>>2]=c[y+0>>2];c[e+4>>2]=c[y+4>>2];c[e+8>>2]=c[y+8>>2];e=(c[o>>2]|0)+12|0;Nf(I,O,Q);b=I;j=c[b+4>>2]|0;c[e>>2]=c[b>>2];c[e+4>>2]=j;e=c[o>>2]|0;g[e+20>>2]=x;c[e+24>>2]=h;e=e+28|0;c[o>>2]=e;j=c[n>>2]|0;g[L>>2]=0.0;Pf(K,S,V,L);Kf(J,j,K);c[e+0>>2]=c[J+0>>2];c[e+4>>2]=c[J+4>>2];c[e+8>>2]=c[J+8>>2];e=(c[o>>2]|0)+12|0;Nf(M,O,R);j=M;b=c[j+4>>2]|0;c[e>>2]=c[j>>2];c[e+4>>2]=b;e=c[o>>2]|0;g[e+20>>2]=x;c[e+24>>2]=h;e=e+28|0;c[o>>2]=e;b=c[n>>2]|0;g[A>>2]=0.0;Pf(z,T,V,A);Kf(N,b,z);c[e+0>>2]=c[N+0>>2];c[e+4>>2]=c[N+4>>2];c[e+8>>2]=c[N+8>>2];e=(c[o>>2]|0)+12|0;Nf(B,P,R);b=B;j=c[b+4>>2]|0;c[e>>2]=c[b>>2];c[e+4>>2]=j;e=c[o>>2]|0;g[e+20>>2]=x;c[e+24>>2]=h;e=e+28|0;c[o>>2]=e;j=c[n>>2]|0;g[E>>2]=0.0;Pf(D,T,U,E);Kf(C,j,D);c[e+0>>2]=c[C+0>>2];c[e+4>>2]=c[C+4>>2];c[e+8>>2]=c[C+8>>2];e=(c[o>>2]|0)+12|0;Nf(F,P,Q);j=F;b=c[j+4>>2]|0;c[e>>2]=c[j>>2];c[e+4>>2]=b;e=c[o>>2]|0;g[e+20>>2]=x;c[e+24>>2]=h;c[o>>2]=e+28;c[m>>2]=(c[m>>2]|0)+6;p=p+ +g[q+24>>2]/+g[u>>2]}l=l+1|0}i=W;return}function Se(a){a=a|0;var b=0,d=0,e=0;b=i;Xa(34962,c[a+24>>2]|0);d=a+36|0;a=a+40|0;e=c[a>>2]|0;Fb(34962,0,(c[d>>2]|0)-e|0,e|0);c[d>>2]=c[a>>2];Xa(34962,0);i=b;return}function Te(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=i;e=a+48|0;b=a+44|0;if((c[e>>2]|0)!=(c[b>>2]|0)){d=0;do{Dc(d+33984|0);rc(3553,c[(c[b>>2]|0)+(d<<2)>>2]|0);d=d+1|0}while(d>>>0<(c[e>>2]|0)-(c[b>>2]|0)>>2>>>0)}Lc(c[a+20>>2]|0);g=a+28|0;pe(c[g>>2]|0);d=a+32|0;Db(4,c[d>>2]|0,5125,0);qe(c[g>>2]|0);Lc(0);c[d>>2]=0;b=c[b>>2]|0;d=c[e>>2]|0;if((d|0)==(b|0)){i=f;return}c[e>>2]=d+(~((d+-4-b|0)>>>2)<<2);i=f;return}function Ue(a){a=a|0;var b=0,d=0,e=0;e=i;c[a>>2]=592;d=c[a+4>>2]|0;if(!d){i=e;return}a=a+8|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-64-d|0)>>>6)<<6);xea(d);i=e;return}function Ve(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;c[a>>2]=592;b=c[a+4>>2]|0;if(!b){xea(a);i=f;return}d=a+8|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-64-b|0)>>>6)<<6);xea(b);xea(a);i=f;return}function We(a){a=a|0;return}function Xe(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function Ye(a){a=a|0;return}function Ze(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;j=a+4|0;d=c[a>>2]|0;f=((c[j>>2]|0)-d>>2)+1|0;if(f>>>0>1073741823)r9(a);k=a+8|0;e=(c[k>>2]|0)-d|0;if(e>>2>>>0<536870911){e=e>>1;e=e>>>0>>0?f:e;d=(c[j>>2]|0)-d>>2;if(!e){g=0;f=0;e=d}else h=6}else{e=1073741823;d=(c[j>>2]|0)-d>>2;h=6}if((h|0)==6){g=e;f=tea(e<<2)|0;e=d}d=f+(e<<2)|0;if(d)c[d>>2]=c[b>>2];d=c[a>>2]|0;b=(c[j>>2]|0)-d|0;h=f+(e-(b>>2)<<2)|0;Aga(h|0,d|0,b|0)|0;c[a>>2]=h;c[j>>2]=f+(e+1<<2);c[k>>2]=f+(g<<2);if(!d){i=l;return}xea(d);i=l;return}function _e(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;j=a+4|0;d=c[a>>2]|0;f=((c[j>>2]|0)-d>>2)+1|0;if(f>>>0>1073741823)r9(a);k=a+8|0;e=(c[k>>2]|0)-d|0;if(e>>2>>>0<536870911){e=e>>1;e=e>>>0>>0?f:e;d=(c[j>>2]|0)-d>>2;if(!e){g=0;f=0;e=d}else h=6}else{e=1073741823;d=(c[j>>2]|0)-d>>2;h=6}if((h|0)==6){g=e;f=tea(e<<2)|0;e=d}d=f+(e<<2)|0;if(d)c[d>>2]=c[b>>2];d=c[a>>2]|0;b=(c[j>>2]|0)-d|0;h=f+(e-(b>>2)<<2)|0;Aga(h|0,d|0,b|0)|0;c[a>>2]=h;c[j>>2]=f+(e+1<<2);c[k>>2]=f+(g<<2);if(!d){i=l;return}xea(d);i=l;return}function $e(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,j=0,k=0,l=0;j=i;i=i+16|0;l=j+4|0;k=j;c[b+8>>2]=f;g[l>>2]=1.0;g[k>>2]=1.0;Nf(b+12|0,l,k);p3(b+20|0,d);p3(b+32|0,e);d=Ej(512,512,2)|0;c[b>>2]=d;h=+(f|0);if(!(a[e>>0]&1)){f=e+1|0;f=Lj(d,h,f)|0;k=b+4|0;c[k>>2]=f;i=j;return}else{f=c[e+8>>2]|0;f=Lj(d,h,f)|0;k=b+4|0;c[k>>2]=f;i=j;return}}function af(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0,h=0,j=0;e=i;i=i+16|0;j=e+12|0;f=e+8|0;h=e;g[j>>2]=b;g[f>>2]=d;Nf(h,j,f);f=c[h+4>>2]|0;a=a+12|0;c[a>>2]=c[h>>2];c[a+4>>2]=f;i=e;return}function bf(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;d=c[157]|0;if((d|0)==(c[158]|0)){gf(624,b);i=e;return}if(!d)b=0;else{c[d>>2]=a;b=c[157]|0}c[157]=b+4;i=e;return}function cf(){return c[c[156]>>2]|0}function df(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;d=c[156]|0;n=c[157]|0;if((d|0)==(n|0)){n=0;i=o;return n|0}g=a[b>>0]|0;k=(g&255)>>>1;l=b+1|0;m=b+8|0;j=b+4|0;if(!(g&1)){a:while(1){b=c[d>>2]|0;h=b+20|0;e=a[h>>0]|0;f=(e&1)==0;if(f)e=(e&255)>>>1;else e=c[b+24>>2]|0;b:do if((e|0)==(k|0)){if(!f)if(!(pga(c[b+28>>2]|0,l,k)|0)){d=23;break a}else break;if(!k){d=23;break a}else{g=k;f=h+1|0;e=l}while(1){if((a[f>>0]|0)!=(a[e>>0]|0))break b;g=g+-1|0;if(!g){d=23;break a}else{f=f+1|0;e=e+1|0}}}while(0);d=d+4|0;if((d|0)==(n|0)){b=0;d=23;break}}if((d|0)==23){i=o;return b|0}}else{c:while(1){b=c[d>>2]|0;h=b+20|0;e=a[h>>0]|0;f=(e&1)==0;if(f)e=(e&255)>>>1;else e=c[b+24>>2]|0;d:do if((e|0)==(c[j>>2]|0)){if(!f)if(!(pga(c[b+28>>2]|0,c[m>>2]|0,e)|0)){d=23;break c}else break;if(!e){d=23;break c}else{f=h+1|0;g=c[m>>2]|0}while(1){if((a[f>>0]|0)!=(a[g>>0]|0))break d;e=e+-1|0;if(!e){d=23;break c}else{f=f+1|0;g=g+1|0}}}while(0);d=d+4|0;if((d|0)==(n|0)){b=0;d=23;break}}if((d|0)==23){i=o;return b|0}}return 0}function ef(){var a=0,b=0,d=0,e=0,f=0;f=i;a=c[157]|0;b=c[156]|0;if((a|0)==(b|0)){i=f;return}else e=0;do{d=c[b+(e<<2)>>2]|0;if(d){v3(d+32|0);v3(d+20|0);xea(d);a=c[157]|0;b=c[156]|0}e=e+1|0}while(e>>>0>2>>>0);i=f;return}function ff(){var a=0;a=i;c[156]=0;c[157]=0;c[158]=0;rb(214,624,p|0)|0;i=a;return}function gf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;j=a+4|0;d=c[a>>2]|0;f=((c[j>>2]|0)-d>>2)+1|0;if(f>>>0>1073741823)r9(a);k=a+8|0;e=(c[k>>2]|0)-d|0;if(e>>2>>>0<536870911){e=e>>1;e=e>>>0>>0?f:e;d=(c[j>>2]|0)-d>>2;if(!e){g=0;f=0;e=d}else h=6}else{e=1073741823;d=(c[j>>2]|0)-d>>2;h=6}if((h|0)==6){g=e;f=tea(e<<2)|0;e=d}d=f+(e<<2)|0;if(d)c[d>>2]=c[b>>2];d=c[a>>2]|0;b=(c[j>>2]|0)-d|0;h=f+(e-(b>>2)<<2)|0;Aga(h|0,d|0,b|0)|0;c[a>>2]=h;c[j>>2]=f+(e+1<<2);c[k>>2]=f+(g<<2);if(!d){i=l;return}xea(d);i=l;return}function hf(a){a=a|0;var b=0,d=0,e=0;e=i;d=c[a>>2]|0;if(!d){i=e;return}a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-4-d|0)>>>2)<<2);xea(d);i=e;return}function jf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=kf(a)|0;i=e;return}function kf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;r=i;i=i+80|0;o=r+68|0;q=r+56|0;p=r+44|0;g=r+40|0;e=r+36|0;f=r+32|0;m=r+16|0;k=r+4|0;n=r;l=r+20|0;d=Ya()|0;h=wc(35633)|0;j=wc(35632)|0;t=Pc(c[b>>2]|0,720)|0;yc(t|0,0,2)|0;u=ob(t|0)|0;v=u+1|0;s=vea(v)|0;Cga(s|0,0,v|0)|0;yc(t|0,0,0)|0;Na(s|0,1,u|0,t|0)|0;Ac(t|0)|0;q3(q,s,Dga(s|0)|0);yea(s);s=Pc(c[b+4>>2]|0,720)|0;yc(s|0,0,2)|0;t=ob(s|0)|0;u=t+1|0;b=vea(u)|0;Cga(b|0,0,u|0)|0;yc(s|0,0,0)|0;Na(b|0,1,t|0,s|0)|0;Ac(s|0)|0;q3(p,b,Dga(b|0)|0);yea(b);if(!(a[q>>0]&1))b=q+1|0;else b=c[q+8>>2]|0;c[g>>2]=b;if(!(a[p>>0]&1))b=p+1|0;else b=c[p+8>>2]|0;c[e>>2]=b;qb(h|0,1,g|0,0);Hc(h|0);gd(h|0,35713,f|0);if(!(c[f>>2]|0)){gd(h|0,35716,m|0);b=c[m>>2]|0;c[k>>2]=0;e=k+4|0;c[e>>2]=0;d=k+8|0;c[d>>2]=0;if(!b){b=0;d=0}else{if((b|0)<0)r9(k);v=tea(b)|0;c[e>>2]=v;c[k>>2]=v;c[d>>2]=v+b;d=v;do{if(!d)d=0;else{a[d>>0]=0;d=c[e>>2]|0}d=d+1|0;c[e>>2]=d;b=b+-1|0}while((b|0)!=0);b=c[m>>2]|0;d=c[k>>2]|0}Xb(h|0,b|0,m|0,d|0);v=He(364456,640,32)|0;Y3(o,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);b=F9(o,369400)|0;b=Wd[c[(c[b>>2]|0)+28>>2]&511](b,10)|0;D9(o);$4(v,b)|0;L4(v)|0;b=c[k>>2]|0;b=He(v,b,Dga(b|0)|0)|0;Y3(o,b+(c[(c[b>>2]|0)+-12>>2]|0)|0);v=F9(o,369400)|0;v=Wd[c[(c[v>>2]|0)+28>>2]&511](v,10)|0;D9(o);$4(b,v)|0;L4(b)|0;zb(h|0);b=c[k>>2]|0;if(!b){v=0;v3(p);v3(q);i=r;return v|0}if((c[e>>2]|0)!=(b|0))c[e>>2]=b;xea(b);v=0;v3(p);v3(q);i=r;return v|0}qb(j|0,1,e|0,0);Hc(j|0);gd(j|0,35713,f|0);if(c[f>>2]|0){Wb(d|0,h|0);Wb(d|0,j|0);Yc(d|0);vb(d|0);zb(h|0);zb(j|0);v=d;v3(p);v3(q);i=r;return v|0}gd(j|0,35716,n|0);b=c[n>>2]|0;c[l>>2]=0;e=l+4|0;c[e>>2]=0;d=l+8|0;c[d>>2]=0;if(!b){b=0;d=0}else{if((b|0)<0)r9(l);v=tea(b)|0;c[e>>2]=v;c[l>>2]=v;c[d>>2]=v+b;d=v;do{if(!d)d=0;else{a[d>>0]=0;d=c[e>>2]|0}d=d+1|0;c[e>>2]=d;b=b+-1|0}while((b|0)!=0);b=c[n>>2]|0;d=c[l>>2]|0}Xb(j|0,b|0,n|0,d|0);v=He(364456,680,34)|0;Y3(o,v+(c[(c[v>>2]|0)+-12>>2]|0)|0);b=F9(o,369400)|0;b=Wd[c[(c[b>>2]|0)+28>>2]&511](b,10)|0;D9(o);$4(v,b)|0;L4(v)|0;b=c[l>>2]|0;b=He(v,b,Dga(b|0)|0)|0;Y3(o,b+(c[(c[b>>2]|0)+-12>>2]|0)|0);v=F9(o,369400)|0;v=Wd[c[(c[v>>2]|0)+28>>2]&511](v,10)|0;D9(o);$4(b,v)|0;L4(b)|0;zb(j|0);b=c[l>>2]|0;if(!b){v=0;v3(p);v3(q);i=r;return v|0}if((c[e>>2]|0)!=(b|0))c[e>>2]=b;xea(b);v=0;v3(p);v3(q);i=r;return v|0}function lf(a){a=a|0;var b=0;b=i;Ta(c[a+8>>2]|0);i=b;return}function mf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;uc(Oa(c[a+8>>2]|0,b|0)|0,d|0);i=e;return}function nf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;a=Oa(c[a+8>>2]|0,b|0)|0;ec(a|0,+(+g[d>>2]),+(+g[d+4>>2]));i=e;return}function of(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;Pa(Oa(c[a+8>>2]|0,b|0)|0,1,0,d|0);i=e;return}function pf(a){a=a|0;var b=0;b=i;Ia(c[a+8>>2]|0);i=b;return}function qf(a){a=a|0;a=i;Ia(0);i=a;return}function rf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;p3(a,b);p3(a+12|0,d);c[a+24>>2]=sf(a)|0;i=e;return}function sf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;l=n;m=n+4|0;d=b+12|0;if(!(a[d>>0]&1))e=d+1|0;else e=c[b+20>>2]|0;j=b+28|0;k=b+32|0;g=b+36|0;d=KJ(e,0)|0;if((d|0)==-1){d=hK(e)|0;if((d|0)==-1)b=0;else h=6}else h=6;if((h|0)==6)if((gK(d)|0)!=0?(f=eK(d,e,0)|0,(f|0)!=0):0){e=QI(f)|0;c[j>>2]=FI(f)|0;c[k>>2]=GI(f)|0;c[g>>2]=HI(f)|0;nJ(f)|0;h=ea(c[k>>2]|0,c[j>>2]|0)|0;h=ea(h,(c[g>>2]|0)>>>3)|0;b=vea((h|0)>-1?h:-1)|0;Aga(b|0,e|0,h|0)|0;AI(f)}else b=0;Tb(1,m|0);rc(3553,c[m>>2]|0);zd(3553,10241,9728);zd(3553,10240,9728);d=c[g>>2]|0;if(!((d|0)==32|(d|0)==24)){Sb(728,l|0)|0;c[l>>2]=c[g>>2];Sb(752,l|0)|0;Ob(10)|0;d=c[g>>2]|0}g=(d|0)==32?6408:6407;Oc(3553,0,g|0,c[j>>2]|0,c[k>>2]|0,0,g|0,5121,b|0);rc(3553,0);if(!b){m=c[m>>2]|0;i=n;return m|0}yea(b);m=c[m>>2]|0;i=n;return m|0}function tf(a){a=a|0;var b=0;b=i;Jb(1,a+24|0);v3(a+12|0);v3(a);i=b;return}function uf(){var a=0,b=0,d=0,e=0,f=0;f=i;a=c[201]|0;b=c[200]|0;if((a|0)==(b|0)){i=f;return}else e=0;do{d=c[b+(e<<2)>>2]|0;if(d){tf(d);xea(d);b=c[200]|0;a=c[201]|0}e=e+1|0}while(e>>>0>2>>>0);i=f;return}function vf(){var a=0;a=i;c[200]=0;c[201]=0;c[202]=0;rb(215,800,p|0)|0;i=a;return}function wf(a){a=a|0;var b=0,d=0,e=0;e=i;d=c[a>>2]|0;if(!d){i=e;return}a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-4-d|0)>>>2)<<2);xea(d);i=e;return}function xf(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+32|0;g=j+12|0;h=j;Mf(b+3188|0);c[b>>2]=d;c[b+4>>2]=e;c[b+8>>2]=f;if(!(yf(b)|0))kb();e=tea(44)|0;q3(g,816,13);q3(h,832,27);$e(e,g,h,32);bf(e);v3(h);v3(g);bK(0);hg();g=0;do{a[b+g+17>>0]=0;a[b+g+1041>>0]=0;a[b+g+2065>>0]=0;g=g+1|0}while((g|0)!=1024);g=0;do{a[b+g+3089>>0]=0;a[b+g+3121>>0]=0;a[b+g+3153>>0]=0;g=g+1|0}while((g|0)!=32);i=j;return}function yf(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f;if(!(lb()|0)){e=He(364456,864,26)|0;Y3(b,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);a=F9(b,369400)|0;a=Wd[c[(c[a>>2]|0)+28>>2]&511](a,10)|0;D9(b);$4(e,a)|0;L4(e)|0;e=0;i=f;return e|0}d=La(c[a+4>>2]|0,c[a+8>>2]|0,c[a>>2]|0,0,0)|0;e=a+12|0;c[e>>2]=d;if(!d){e=He(364456,896,29)|0;Y3(b,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);a=F9(b,369400)|0;a=Wd[c[(c[a>>2]|0)+28>>2]&511](a,10)|0;D9(b);$4(e,a)|0;L4(e)|0;e=0;i=f;return e|0}else{Cb(d|0);id(c[e>>2]|0,a|0);db(c[e>>2]|0,26)|0;yd(c[e>>2]|0,7)|0;cc(c[e>>2]|0,12)|0;Ed(c[e>>2]|0,1)|0;Ic(0);ld(3042);cb(770,771);a=He(364456,928,7)|0;e=Ub(7938)|0;e=He(a,e,Dga(e|0)|0)|0;Y3(b,e+(c[(c[e>>2]|0)+-12>>2]|0)|0);a=F9(b,369400)|0;a=Wd[c[(c[a>>2]|0)+28>>2]&511](a,10)|0;D9(b);$4(e,a)|0;L4(e)|0;e=1;i=f;return e|0}return 0}function zf(a){a=a|0;a=i;ef();uf();jg();kb();i=a;return}function Af(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;Hb(0,0,b|0,d|0);a=Yb(a|0)|0;c[a+4>>2]=b;c[a+8>>2]=d;i=e;return}function Bf(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;f=i;a[(Yb(b|0)|0)+(c+17)>>0]=(e|0)!=0&1;i=f;return}function Cf(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;e=i;a[(Yb(b|0)|0)+(c+3089)>>0]=(d|0)!=0&1;i=e;return}function Df(a,b,c){a=a|0;b=+b;c=+c;var d=0;d=i;a=Yb(a|0)|0;g[a+3188>>2]=b;g[a+3192>>2]=c;i=d;return}function Ef(b,c){b=b|0;c=c|0;if(c>>>0>1023)c=0;else c=(a[b+c+17>>0]|0)!=0;return c|0}function Ff(a){a=a|0;return a+3188|0}function Gf(a){a=a|0;a=i;cd(16640);i=a;return}function Hf(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;b=e;d=xc()|0;if(!d){a=a+12|0;a=c[a>>2]|0;pd(a|0);gc();i=e;return}d=_4(He(364456,936,14)|0,d)|0;Y3(b,d+(c[(c[d>>2]|0)+-12>>2]|0)|0);f=F9(b,369400)|0;f=Wd[c[(c[f>>2]|0)+28>>2]&511](f,10)|0;D9(b);$4(d,f)|0;L4(d)|0;a=a+12|0;a=c[a>>2]|0;pd(a|0);gc();i=e;return}function If(b){b=b|0;var c=0,d=0,e=0,f=0;f=i;d=0;do{if(!(a[b+d+17>>0]|0))c=0;else c=a[b+d+1041>>0]^1;a[b+d+2065>>0]=c;d=d+1|0}while((d|0)!=1024);d=0;do{if(!(a[b+d+3089>>0]|0))c=0;else c=a[b+d+3121>>0]^1;a[b+d+3153>>0]=c;d=d+1|0}while((d|0)!=32);Aga(b+1041|0,b+17|0,1024)|0;e=b+3121|0;c=b+3089|0;d=e+32|0;do{a[e>>0]=a[c>>0]|0;e=e+1|0;c=c+1|0}while((e|0)<(d|0));i=f;return}function Jf(a){a=a|0;var b=0,d=0,e=0;d=i;b=a+0|0;e=b+60|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(e|0));g[a>>2]=1.0;g[a+20>>2]=1.0;g[a+40>>2]=1.0;g[a+60>>2]=1.0;i=d;return}function Kf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,j=0.0,k=0.0,l=0.0;d=i;i=i+16|0;h=d+8|0;f=d;e=d+4|0;l=+g[c>>2];k=+g[c+4>>2];j=+g[c+8>>2];g[h>>2]=+g[b+48>>2]+(+g[b>>2]*l+ +g[b+16>>2]*k+ +g[b+32>>2]*j);g[f>>2]=+g[b+52>>2]+(l*+g[b+4>>2]+k*+g[b+20>>2]+j*+g[b+36>>2]);g[e>>2]=+g[b+56>>2]+(l*+g[b+8>>2]+k*+g[b+24>>2]+j*+g[b+40>>2]);Pf(a,h,f,e);i=d;return}function Lf(a,b,d,e,f,h,j){a=a|0;b=+b;d=+d;e=+e;f=+f;h=+h;j=+j;var k=0,l=0,m=0;l=i;k=a+0|0;m=k+56|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(m|0));g[a+60>>2]=1.0;g[a>>2]=2.0/(d-b);g[a+20>>2]=2.0/(f-e);g[a+40>>2]=2.0/(h-j);g[a+48>>2]=(b+d)/(b-d);g[a+52>>2]=(e+f)/(e-f);g[a+56>>2]=(h+j)/(j-h);i=l;return}function Mf(a){a=a|0;g[a>>2]=0.0;g[a+4>>2]=0.0;return}function Nf(a,b,c){a=a|0;b=b|0;c=c|0;g[a>>2]=+g[b>>2];g[a+4>>2]=+g[c>>2];return}function Of(a){a=a|0;g[a>>2]=0.0;g[a+4>>2]=0.0;g[a+8>>2]=0.0;return}function Pf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;g[a>>2]=+g[b>>2];g[a+4>>2]=+g[c>>2];g[a+8>>2]=+g[d>>2];return}function Qf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+176|0;m=p+24|0;k=p;o=p+12|0;p3(b,d);l=b+12|0;p3(l,e);c[b+24>>2]=0;a[b+28>>0]=0;c[o>>2]=0;n=o+4|0;c[n>>2]=0;f=o+8|0;c[f>>2]=0;g=m+64|0;h=m+8|0;c[h>>2]=1024;j=m+12|0;c[m>>2]=1172;c[g>>2]=1192;c[m+4>>2]=0;Z3(m+64|0,j);c[m+136>>2]=0;c[m+140>>2]=-1;c[m>>2]=1004;c[g>>2]=1044;c[h>>2]=1024;c4(j);c[j>>2]=1336;e=m+44|0;c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[m+60>>2]=24;eg(j,l);c[k+0>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;while(1){d=fg(m,k,46)|0;if(c[d+((c[(c[d>>2]|0)+-12>>2]|0)+16)>>2]&5)break;d=c[n>>2]|0;if((d|0)==(c[f>>2]|0)){gg(o,k);continue}if(!d)d=0;else{p3(d,k);d=c[n>>2]|0}c[n>>2]=d+12}v3(k);c[m>>2]=1004;c[m+64>>2]=1044;c[h>>2]=1024;c[j>>2]=1336;v3(e);b4(j);W3(g);d=c[o>>2]|0;if((((c[n>>2]|0)-d|0)/12|0)>>>0<2){f=He(364456,952,27)|0;d=a[l>>0]|0;if(!(d&1)){e=l+1|0;d=(d&255)>>>1}else{e=c[b+20>>2]|0;d=c[b+16>>2]|0}d=He(He(f,e,d)|0,984,2)|0;Y3(m,d+(c[(c[d>>2]|0)+-12>>2]|0)|0);k=F9(m,369400)|0;k=Wd[c[(c[k>>2]|0)+28>>2]&511](k,10)|0;D9(m);$4(d,k)|0;L4(d)|0;d=c[o>>2]|0}if(!d){i=p;return}e=c[n>>2]|0;if((e|0)!=(d|0)){do{m=e+-12|0;c[n>>2]=m;v3(m);e=c[n>>2]|0}while((e|0)!=(d|0));d=c[o>>2]|0}xea(d);i=p;return}function Rf(a){a=a|0;var b=0;b=i;v3(a+12|0);v3(a);i=b;return}function Sf(b){b=b|0;var d=0,e=0;e=i;if(!(a[b>>0]&1))d=b+1|0;else d=c[b+8>>2]|0;Xc(d|0);a[b+28>>0]=1;i=e;return}function Tf(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=1004;c[a+64>>2]=1044;c[a+8>>2]=1024;d=a+12|0;c[d>>2]=1336;v3(a+44|0);b4(d);W3(a+64|0);i=b;return}function Uf(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=1004;c[a+64>>2]=1044;c[a+8>>2]=1024;d=a+12|0;c[d>>2]=1336;v3(a+44|0);b4(d);W3(a+64|0);xea(a);i=b;return}function Vf(a){a=a|0;var b=0,d=0,e=0;b=i;e=a+-8|0;c[e>>2]=1004;a=e+64|0;c[a>>2]=1044;c[e+8>>2]=1024;d=e+12|0;c[d>>2]=1336;v3(e+44|0);b4(d);W3(a);i=b;return}function Wf(a){a=a|0;var b=0,d=0,e=0;b=i;a=a+-8|0;c[a>>2]=1004;d=a+64|0;c[d>>2]=1044;c[a+8>>2]=1024;e=a+12|0;c[e>>2]=1336;v3(a+44|0);b4(e);W3(d);xea(a);i=b;return}function Xf(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;f=c[(c[a>>2]|0)+-12>>2]|0;c[a+f>>2]=1004;d=a+(f+64)|0;c[d>>2]=1044;c[a+(f+8)>>2]=1024;e=a+(f+12)|0;c[e>>2]=1336;v3(a+(f+44)|0);b4(e);W3(d);i=b;return}function Yf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;g=c[(c[a>>2]|0)+-12>>2]|0;d=a+g|0;c[d>>2]=1004;e=a+(g+64)|0;c[e>>2]=1044;c[a+(g+8)>>2]=1024;f=a+(g+12)|0;c[f>>2]=1336;v3(a+(g+44)|0);b4(f);W3(e);xea(d);i=b;return}function Zf(a){a=a|0;var b=0;b=i;c[a>>2]=1336;v3(a+32|0);b4(a);i=b;return}function _f(a){a=a|0;var b=0;b=i;c[a>>2]=1336;v3(a+32|0);b4(a);xea(a);i=b;return}function $f(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;o=i;j=d+44|0;k=c[j>>2]|0;m=d+24|0;n=c[m>>2]|0;if(k>>>0>>0){c[j>>2]=n;k=n}j=h&24;if(!j){d=b;c[d>>2]=0;c[d+4>>2]=0;d=b+8|0;c[d>>2]=-1;c[d+4>>2]=-1;i=o;return}if((j|0)==24&(g|0)==1){d=b;c[d>>2]=0;c[d+4>>2]=0;d=b+8|0;c[d>>2]=-1;c[d+4>>2]=-1;i=o;return}do if((g|0)==2){j=d+32|0;if(!(a[j>>0]&1))j=j+1|0;else j=c[d+40>>2]|0;l=k-j|0;j=l;l=((l|0)<0)<<31>>31}else if((g|0)==1)if(!(h&8)){l=n-(c[d+20>>2]|0)|0;j=l;l=((l|0)<0)<<31>>31;break}else{l=(c[d+12>>2]|0)-(c[d+8>>2]|0)|0;j=l;l=((l|0)<0)<<31>>31;break}else if(!g){j=0;l=0}else{d=b;c[d>>2]=0;c[d+4>>2]=0;d=b+8|0;c[d>>2]=-1;c[d+4>>2]=-1;i=o;return}while(0);l=Iga(j|0,l|0,e|0,f|0)|0;g=I;if((g|0)>=0){j=d+32|0;if(!(a[j>>0]&1))j=j+1|0;else j=c[d+40>>2]|0;e=k-j|0;f=((e|0)<0)<<31>>31;if(!((f|0)<(g|0)|(f|0)==(g|0)&e>>>0>>0)){j=h&8;if(!((l|0)==0&(g|0)==0)){if((j|0)!=0?(c[d+12>>2]|0)==0:0){d=b;c[d>>2]=0;c[d+4>>2]=0;d=b+8|0;c[d>>2]=-1;c[d+4>>2]=-1;i=o;return}if((h&16|0)!=0&(n|0)==0){d=b;c[d>>2]=0;c[d+4>>2]=0;d=b+8|0;c[d>>2]=-1;c[d+4>>2]=-1;i=o;return}}if(j){c[d+12>>2]=(c[d+8>>2]|0)+l;c[d+16>>2]=k}if(h&16)c[m>>2]=(c[d+20>>2]|0)+l;d=b;c[d>>2]=0;c[d+4>>2]=0;d=b+8|0;c[d>>2]=l;c[d+4>>2]=g;i=o;return}}d=b;c[d>>2]=0;c[d+4>>2]=0;d=b+8|0;c[d>>2]=-1;c[d+4>>2]=-1;i=o;return}function ag(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;d=d+8|0;Rd[c[(c[b>>2]|0)+16>>2]&31](a,b,c[d>>2]|0,c[d+4>>2]|0,0,e);i=f;return}function bg(a){a=a|0;var b=0,e=0,f=0,g=0,h=0;h=i;b=a+44|0;e=c[b>>2]|0;f=c[a+24>>2]|0;if(e>>>0>>0){c[b>>2]=f;e=f}if(!(c[a+48>>2]&8)){a=-1;i=h;return a|0}g=a+16|0;b=c[g>>2]|0;f=c[a+12>>2]|0;if(b>>>0>>0){c[g>>2]=e;b=e}if(f>>>0>=b>>>0){a=-1;i=h;return a|0}a=d[f>>0]|0;i=h;return a|0}function cg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;e=b+44|0;f=c[e>>2]|0;g=c[b+24>>2]|0;if(f>>>0>>0){c[e>>2]=g;f=g}h=b+8|0;j=c[h>>2]|0;k=b+12|0;e=c[k>>2]|0;if(j>>>0>=e>>>0){d=-1;i=l;return d|0}if((d|0)==-1){c[h>>2]=j;c[k>>2]=e+-1;c[b+16>>2]=f;d=0;i=l;return d|0}if(!(c[b+48>>2]&16)){g=d&255;e=e+-1|0;if(g<<24>>24!=(a[e>>0]|0)){d=-1;i=l;return d|0}}else{g=d&255;e=e+-1|0}c[h>>2]=j;c[k>>2]=e;c[b+16>>2]=f;a[e>>0]=g;i=l;return d|0}function dg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;if((d|0)==-1){b=0;i=s;return b|0}o=b+12|0;p=b+8|0;q=(c[o>>2]|0)-(c[p>>2]|0)|0;r=b+24|0;k=c[r>>2]|0;n=b+28|0;e=c[n>>2]|0;if((k|0)==(e|0)){g=b+48|0;if(!(c[g>>2]&16)){b=-1;i=s;return b|0}f=b+20|0;j=c[f>>2]|0;l=b+44|0;m=(c[l>>2]|0)-j|0;h=b+32|0;D3(h,0);if(!(a[h>>0]&1))e=10;else e=(c[h>>2]&-2)+-1|0;z3(h,e,0);e=a[h>>0]|0;if(!(e&1)){h=h+1|0;e=(e&255)>>>1}else{h=c[b+40>>2]|0;e=c[b+36>>2]|0}e=h+e|0;c[f>>2]=h;c[n>>2]=e;k=h+(k-j)|0;c[r>>2]=k;f=h+m|0;c[l>>2]=f;j=e}else{g=b+48|0;f=c[b+44>>2]|0;j=e}h=k+1|0;f=h>>>0>>0?f:h;c[b+44>>2]=f;if(c[g>>2]&8){e=b+32|0;if(!(a[e>>0]&1))e=e+1|0;else e=c[b+40>>2]|0;c[p>>2]=e;c[o>>2]=e+q;c[b+16>>2]=f}if((k|0)==(j|0)){b=Wd[c[(c[b>>2]|0)+52>>2]&511](b,d&255)|0;i=s;return b|0}else{c[r>>2]=h;a[k>>0]=d;b=d&255;i=s;return b|0}return 0}function eg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;j=b+32|0;w3(j,d)|0;h=b+44|0;c[h>>2]=0;k=b+48|0;g=c[k>>2]|0;if(g&8){d=a[j>>0]|0;if(!(d&1)){f=j+((d&255)>>>1)+1|0;c[h>>2]=f;d=j+1|0;e=j+1|0}else{f=(c[b+40>>2]|0)+(c[b+36>>2]|0)|0;c[h>>2]=f;e=c[b+40>>2]|0;d=e}c[b+8>>2]=d;c[b+12>>2]=e;c[b+16>>2]=f}if(!(g&16)){i=l;return}d=a[j>>0]|0;if(!(d&1)){f=(d&255)>>>1;c[h>>2]=j+f+1;d=10;h=f}else{f=c[b+36>>2]|0;c[h>>2]=(c[b+40>>2]|0)+f;d=(c[j>>2]&-2)+-1|0;h=f}z3(j,d,0);d=a[j>>0]|0;if(!(d&1)){g=j+1|0;f=(d&255)>>>1;e=j+1|0}else{e=c[b+40>>2]|0;g=e;f=c[b+36>>2]|0}d=b+24|0;c[d>>2]=e;c[b+20>>2]=e;c[b+28>>2]=g+f;if(!(c[k>>2]&3)){i=l;return}c[d>>2]=e+h;i=l;return}function fg(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;l=m;K4(l,b,1);if(!(a[l>>0]|0)){i=m;return b|0}if(!(a[e>>0]&1)){a[e+1>>0]=0;a[e>>0]=0;l=e+4|0}else{a[c[e+8>>2]>>0]=0;l=e+4|0;c[l>>2]=0}g=0;while(1){h=c[b+((c[(c[b>>2]|0)+-12>>2]|0)+24)>>2]|0;j=h+12|0;k=c[j>>2]|0;if((k|0)==(c[h+16>>2]|0)){h=Ld[c[(c[h>>2]|0)+40>>2]&511](h)|0;if((h|0)==-1){h=2;break}}else{c[j>>2]=k+1;h=d[k>>0]|0}g=g+1|0;h=h&255;if(h<<24>>24==f<<24>>24){h=0;break}D3(e,h);if(!(a[e>>0]&1))continue;if((c[l>>2]|0)==-17){h=4;break}}e=c[(c[b>>2]|0)+-12>>2]|0;U3(b+e|0,c[b+(e+16)>>2]|((g|0)==0?h|4:h));i=m;return b|0}function gg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;k=a+4|0;d=c[a>>2]|0;f=(((c[k>>2]|0)-d|0)/12|0)+1|0;if(f>>>0>357913941)r9(a);l=a+8|0;e=((c[l>>2]|0)-d|0)/12|0;if(e>>>0<178956970){e=e<<1;e=e>>>0>>0?f:e;d=((c[k>>2]|0)-d|0)/12|0;if(!e){f=0;j=0;g=d}else h=6}else{e=357913941;d=((c[k>>2]|0)-d|0)/12|0;h=6}if((h|0)==6){f=e;j=tea(e*12|0)|0;g=d}e=j+(g*12|0)|0;h=j+(f*12|0)|0;if(e)p3(e,b);b=j+((g+1|0)*12|0)|0;d=c[a>>2]|0;f=c[k>>2]|0;if((f|0)!=(d|0)){g=g+-1-(((f+-12-d|0)>>>0)/12|0)|0;do{e=e+-12|0;f=f+-12|0;c[e+0>>2]=c[f+0>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0}while((f|0)!=(d|0));d=c[a>>2]|0;e=c[k>>2]|0;c[a>>2]=j+(g*12|0);c[k>>2]=b;c[l>>2]=h;if((e|0)!=(d|0))do{e=e+-12|0;v3(e)}while((e|0)!=(d|0))}else{c[a>>2]=e;c[k>>2]=b;c[l>>2]=h}if(!d){i=m;return}xea(d);i=m;return}function hg(){var a=0;a=i;Uc(1496);i=a;return}function ig(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f;c[d>>2]=b;e=c[371]|0;if((e|0)==(c[372]|0))mg(1480,d);else{if(!e)d=0;else{c[e>>2]=b;d=c[371]|0}c[371]=d+4}if(!(a[b>>0]&1))e=b+1|0;else e=c[b+8>>2]|0;d=b+12|0;if(!(a[d>>0]&1)){d=d+1|0;jd(e|0,d|0);i=f;return b|0}else{d=c[b+20>>2]|0;jd(e|0,d|0);i=f;return b|0}return 0}function jg(){var a=0,b=0,d=0,e=0,f=0;f=i;a=c[371]|0;b=c[370]|0;if((a|0)==(b|0)){i=f;return}else e=0;do{d=c[b+(e<<2)>>2]|0;if(d){Rf(d);xea(d);b=c[370]|0;a=c[371]|0}e=e+1|0}while(e>>>0>2>>>0);i=f;return}function kg(){return}function lg(){var a=0;a=i;c[370]=0;c[371]=0;c[372]=0;rb(216,1480,p|0)|0;i=a;return}function mg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;j=a+4|0;d=c[a>>2]|0;f=((c[j>>2]|0)-d>>2)+1|0;if(f>>>0>1073741823)r9(a);k=a+8|0;e=(c[k>>2]|0)-d|0;if(e>>2>>>0<536870911){e=e>>1;e=e>>>0>>0?f:e;d=(c[j>>2]|0)-d>>2;if(!e){g=0;f=0;e=d}else h=6}else{e=1073741823;d=(c[j>>2]|0)-d>>2;h=6}if((h|0)==6){g=e;f=tea(e<<2)|0;e=d}d=f+(e<<2)|0;if(d)c[d>>2]=c[b>>2];d=c[a>>2]|0;b=(c[j>>2]|0)-d|0;h=f+(e-(b>>2)<<2)|0;Aga(h|0,d|0,b|0)|0;c[a>>2]=h;c[j>>2]=f+(e+1<<2);c[k>>2]=f+(g<<2);if(!d){i=l;return}xea(d);i=l;return}function ng(a){a=a|0;var b=0,d=0,e=0;e=i;d=c[a>>2]|0;if(!d){i=e;return}a=a+4|0;b=c[a>>2]|0;if((b|0)!=(d|0))c[a>>2]=b+(~((b+-4-d|0)>>>2)<<2);xea(d);i=e;return}function og(){var a=0,b=0,d=0;d=i;i=i+48|0;b=d;c[b+12>>2]=0;c[b+16>>2]=0;c[b>>2]=2288;rg(b);Jg(b);c[b>>2]=2288;a=c[b+24>>2]|0;if(a)Id[c[(c[a>>2]|0)+4>>2]&511](a);c[b>>2]=2544;a=c[b+8>>2]|0;if(a)xea(a);a=c[b+4>>2]|0;if(!a){i=d;return 0}zf(a);xea(a);i=d;return 0}function pg(a){a=a|0;var b=0,d=0;d=i;c[a>>2]=2288;b=c[a+24>>2]|0;if(b)Id[c[(c[b>>2]|0)+4>>2]&511](b);c[a>>2]=2544;b=c[a+8>>2]|0;if(b)xea(b);b=c[a+4>>2]|0;if(!b){i=d;return}zf(b);xea(b);i=d;return}function qg(a){a=a|0;var b=0,d=0;d=i;c[a>>2]=2288;b=c[a+24>>2]|0;if(b)Id[c[(c[b>>2]|0)+4>>2]&511](b);c[a>>2]=2544;b=c[a+8>>2]|0;if(b)xea(b);b=c[a+4>>2]|0;if(!b){xea(a);i=d;return}zf(b);xea(b);xea(a);i=d;return}function rg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+192|0;b=n+128|0;o=n;d=n+64|0;e=n+76|0;j=n+88|0;k=n+100|0;l=n+112|0;h=tea(3196)|0;xf(h,2400,960,540);c[a+4>>2]=h;f=a+20|0;c[f>>2]=h;h=cf()|0;f=c[f>>2]|0;af(h,+(c[f+4>>2]|0)*.03125,+(c[f+8>>2]|0)/18.0);f=tea(12)|0;jf(f,2416,2448);h=a+36|0;c[h>>2]=f;f=tea(88)|0;g=tea(56)|0;Le(g);h=c[h>>2]|0;Lf(o,-16.0,16.0,-9.0,9.0,-1.0,1.0);m=b+0|0;o=o+0|0;p=m+64|0;do{c[m>>2]=c[o>>2];m=m+4|0;o=o+4|0}while((m|0)<(p|0));ye(f,g,h,b);o=a+24|0;c[o>>2]=f;p=tea(52)|0;m=tea(40)|0;q3(d,2480,3);q3(e,2488,10);rf(m,d,e);Je(p,0.0,0.0,4.0,4.0,m);m=a+32|0;c[m>>2]=p;v3(e);v3(d);p=c[o>>2]|0;Jd[c[(c[p>>2]|0)+8>>2]&255](p,c[m>>2]|0);m=tea(72)|0;q3(j,2504,0);De(m,j,-15.5,7.800000190734863,-1);p=a+28|0;c[p>>2]=m;v3(j);o=c[o>>2]|0;Jd[c[(c[o>>2]|0)+8>>2]&255](o,c[p>>2]|0);p=tea(36)|0;q3(k,2512,3);q3(l,2520,10);Qf(p,k,l);Sf(ig(p)|0);v3(l);v3(k);i=n;return}function sg(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;d=k+24|0;e=k;f=k+12|0;g=c[b+28>>2]|0;h=b+12|0;S3(f,c[h>>2]|0);j=C3(f,2384)|0;c[e+0>>2]=c[j+0>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[j+0>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;j=g+48|0;if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[g+56>>2]>>0]=0;c[g+52>>2]=0}B3(j,0);c[j+0>>2]=c[e+0>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;v3(e);v3(f);b=He(_4(364456,c[b+16>>2]|0)|0,2392,6)|0;b=He(_4(b,c[h>>2]|0)|0,2384,4)|0;Y3(d,b+(c[(c[b>>2]|0)+-12>>2]|0)|0);j=F9(d,369400)|0;j=Wd[c[(c[j>>2]|0)+28>>2]&511](j,10)|0;D9(d);$4(b,j)|0;L4(b)|0;i=k;return}function tg(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0.0,l=0;h=i;i=i+16|0;b=h+8|0;d=h;e=h+4|0;f=a+20|0;if(!(Ef(c[f>>2]|0,265)|0)){if(Ef(c[f>>2]|0,264)|0){j=(c[(c[a+32>>2]|0)+44>>2]|0)+4|0;g[j>>2]=+g[j>>2]+-.5}}else{j=(c[(c[a+32>>2]|0)+44>>2]|0)+4|0;g[j>>2]=+g[j>>2]+.5}if(!(Ef(c[f>>2]|0,263)|0)){if(Ef(c[f>>2]|0,262)|0){j=c[(c[a+32>>2]|0)+44>>2]|0;g[j>>2]=+g[j>>2]+.5}}else{j=c[(c[a+32>>2]|0)+44>>2]|0;g[j>>2]=+g[j>>2]+-.5}l=Ff(c[f>>2]|0)|0;k=+g[l+4>>2];j=c[a+36>>2]|0;a=c[f>>2]|0;g[d>>2]=+g[l>>2]*32.0/+(c[a+4>>2]|0)+-16.0;g[e>>2]=9.0-k*18.0/+(c[a+8>>2]|0);Nf(b,d,e);nf(j,2368,b);i=h;return}function ug(a){a=a|0;var b=0;b=i;a=c[a+24>>2]|0;Id[c[(c[a>>2]|0)+12>>2]&511](a);i=b;return}function vg(a){a=a|0;var b=0,d=0;d=i;c[a>>2]=2544;b=c[a+8>>2]|0;if(b)xea(b);b=c[a+4>>2]|0;if(!b){i=d;return}zf(b);xea(b);i=d;return}function wg(a){a=a|0;var b=0,d=0;d=i;c[a>>2]=2544;b=c[a+8>>2]|0;if(b)xea(b);b=c[a+4>>2]|0;if(!b){xea(a);i=d;return}zf(b);xea(b);xea(a);i=d;return}function xg(a){a=a|0;return}function yg(a){a=a|0;return}function zg(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function Ag(a){a=a|0;return}function Bg(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function Cg(a){a=a|0;var b=0,d=0,e=0;d=i;b=tea(28)|0;if(!b){i=d;return b|0}e=a+4|0;c[b>>2]=2648;a=b+4|0;c[a+0>>2]=c[e+0>>2];c[a+4>>2]=c[e+4>>2];c[a+8>>2]=c[e+8>>2];c[a+12>>2]=c[e+12>>2];c[a+16>>2]=c[e+16>>2];c[a+20>>2]=c[e+20>>2];i=d;return b|0}function Dg(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;if(!b){i=d;return}e=a+4|0;c[b>>2]=2648;a=b+4|0;c[a+0>>2]=c[e+0>>2];c[a+4>>2]=c[e+4>>2];c[a+8>>2]=c[e+8>>2];c[a+12>>2]=c[e+12>>2];c[a+16>>2]=c[e+16>>2];c[a+20>>2]=c[e+20>>2];i=d;return}function Eg(a){a=a|0;return}function Fg(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function Gg(a){a=a|0;var b=0;b=i;Kg(a+4|0);i=b;return}function Hg(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==2840)b=a+4|0;else b=0;return b|0}function Ig(a){a=a|0;return 2872}function Jg(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+64|0;o=m+24|0;f=m+48|0;j=m+44|0;h=m+32|0;e=m+36|0;k=m+40|0;l=m;b=tea(8)|0;T3(o);n=c[o+4>>2]|0;d=b;c[d>>2]=c[o>>2];c[d+4>>2]=n;c[a+8>>2]=b;g[f>>2]=0.0;g[j>>2]=0.0;g[h>>2]=.01666666753590107;c[e>>2]=0;c[k>>2]=0;b=l+16|0;c[b>>2]=0;d=tea(28)|0;if(d){c[d>>2]=2648;c[d+4>>2]=a;c[d+8>>2]=j;c[d+12>>2]=h;c[d+16>>2]=k;c[d+20>>2]=e;c[d+24>>2]=f}c[b>>2]=d;gb(217,l|0,0,1);b=c[b>>2]|0;if((b|0)==(l|0)){Id[c[(c[b>>2]|0)+16>>2]&511](b);i=m;return}if(!b){i=m;return}Id[c[(c[b>>2]|0)+20>>2]&511](b);i=m;return}function Kg(a){a=a|0;var b=0,d=0.0,e=0,f=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;f=m;l=c[a>>2]|0;h=l+4|0;Gf(c[h>>2]|0);j=l+8|0;k=c[j>>2]|0;T3(f);b=f;k=Hga(c[b>>2]|0,c[b+4>>2]|0,c[k>>2]|0,c[k+4>>2]|0)|0;b=a+4|0;e=a+8|0;if((+(k>>>0)+4294967296.0*+(I|0))/1.0e6/1.0e3-+g[c[b>>2]>>2]>+g[c[e>>2]>>2]){If(c[h>>2]|0);Id[c[(c[l>>2]|0)+16>>2]&511](l);k=c[a+12>>2]|0;c[k>>2]=(c[k>>2]|0)+1;k=c[b>>2]|0;g[k>>2]=+g[c[e>>2]>>2]+ +g[k>>2];e=l}else e=l;Id[c[(c[e>>2]|0)+20>>2]&511](l);k=a+16|0;b=c[k>>2]|0;c[b>>2]=(c[b>>2]|0)+1;Hf(c[h>>2]|0);h=c[j>>2]|0;T3(f);b=f;h=Hga(c[b>>2]|0,c[b+4>>2]|0,c[h>>2]|0,c[h+4>>2]|0)|0;b=c[a+20>>2]|0;d=+g[b>>2];if(!((+(h>>>0)+4294967296.0*+(I|0))/1.0e6/1.0e3-d>1.0)){i=m;return}g[b>>2]=d+1.0;c[l+12>>2]=c[c[k>>2]>>2];h=a+12|0;c[l+16>>2]=c[c[h>>2]>>2];c[c[k>>2]>>2]=0;c[c[h>>2]>>2]=0;Id[c[(c[e>>2]|0)+12>>2]&511](l);i=m;return}function Lg(a){a=a|0;var b=0;b=i;a=c[a+16>>2]|0;if(!a){b=kc(4)|0;c[b>>2]=2624;xd(b|0,2600,50)}else{Id[c[(c[a>>2]|0)+24>>2]&511](a);i=b;return}}function Mg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(!(qga(b,4280)|0)){c[a+12>>2]=c[d>>2];d=0;i=h;return d|0}if(qga(b,4296)|0){d=12;i=h;return d|0}e=c[d>>2]|0;if(!e){d=6;i=h;return d|0}f=e+116|0;b=c[f>>2]|0;c[g>>2]=b;do if(!b){b=nr(e,g,a)|0;if(!b){b=c[g>>2]|0;c[f>>2]=b;c[e+120>>2]=218;break}else{d=b;i=h;return d|0}}while(0);c[b+12>>2]=c[d+4>>2];d=0;i=h;return d|0}function Ng(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j+4|0;g=j;e=c[a+12>>2]|0;if(!(qga(b,4320)|0)){b=c[d>>2]|0;if(!b){d=6;i=j;return d|0}f=b+116|0;e=c[f>>2]|0;c[g>>2]=e;do if(!e){e=nr(b,g,a)|0;if(!e){e=c[g>>2]|0;c[f>>2]=e;c[b+120>>2]=218;break}else{d=e;i=j;return d|0}}while(0);c[d+4>>2]=c[e+8>>2];d=0;i=j;return d|0}if(!(qga(b,4280)|0)){c[d>>2]=e;d=0;i=j;return d|0}if(qga(b,4296)|0){d=12;i=j;return d|0}b=c[d>>2]|0;if(!b){d=6;i=j;return d|0}f=b+116|0;e=c[f>>2]|0;c[h>>2]=e;do if(!e){e=nr(b,h,a)|0;if(!e){e=c[h>>2]|0;c[f>>2]=e;c[b+120>>2]=218;break}else{d=e;i=j;return d|0}}while(0);c[d+4>>2]=c[e+12>>2];d=0;i=j;return d|0}function Og(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;if(!a){e=35;i=g;return e|0}if((c[a+16>>2]|0)>>>0<=b>>>0){e=16;i=g;return e|0}f=c[(c[(c[a+96>>2]|0)+12>>2]|0)+84>>2]|0;do if((f|0)!=0?(d&3|0)!=0|(d&983040|0)==65536:0){f=Xd[f&127](a,b,1,d,e)|0;if(f){if((f&255|0)==7)break;i=g;return f|0}if(d&1){e=0;i=g;return e|0}f=c[a+88>>2]|0;if(!f){e=36;i=g;return e|0}c[e>>2]=Ug(c[e>>2]|0,c[((d&16|0)==0?f+16|0:f+20|0)>>2]|0,64)|0;e=0;i=g;return e|0}while(0);e=Pg(a,b,1,d,e)|0;i=g;return e|0}function Pg(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;if(!a){b=35;i=l;return b|0}g=c[a+16>>2]|0;h=b+d|0;if(g>>>0<=b>>>0){b=16;i=l;return b|0}if(h>>>0>>0|h>>>0>g>>>0){b=16;i=l;return b|0}if(!d){b=0;i=l;return b|0}g=c[(c[(c[a+96>>2]|0)+12>>2]|0)+84>>2]|0;do if((g|0)!=0?(e&3|0)!=0|(e&983040|0)==65536:0){g=Xd[g&127](a,b,d,e,f)|0;if(g){if((g&255|0)==7)break;i=l;return g|0}if(e&1){b=0;i=l;return b|0}g=c[a+88>>2]|0;if(!g){b=36;i=l;return b|0}h=c[((e&16|0)==0?g+16|0:g+20|0)>>2]|0;g=0;do{b=f+(g<<2)|0;c[b>>2]=Ug(c[b>>2]|0,h,64)|0;g=g+1|0}while((g|0)!=(d|0));g=0;i=l;return g|0}while(0);if(e&536870912){b=7;i=l;return b|0}j=e|256;k=a+84|0;if(!(e&16)){h=0;while(1){g=Qg(a,h+b|0,j)|0;if(g){h=19;break}c[f+(h<<2)>>2]=c[(c[k>>2]|0)+64>>2]<<10;h=h+1|0;if(h>>>0>=d>>>0){g=0;h=19;break}}if((h|0)==19){i=l;return g|0}}else{h=0;while(1){g=Qg(a,h+b|0,j)|0;if(g){h=19;break}c[f+(h<<2)>>2]=c[(c[k>>2]|0)+68>>2]<<10;h=h+1|0;if(h>>>0>=d>>>0){g=0;h=19;break}}if((h|0)==19){i=l;return g|0}}return 0}function Qg(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;if(!d){E=35;i=F;return E|0}u=d+88|0;if(!(c[u>>2]|0)){E=35;i=F;return E|0}E=c[d+84>>2]|0;if(!E){E=35;i=F;return E|0}o=E+156|0;j=c[o>>2]|0;if((j|0)!=0?(g=c[j+4>>2]|0,(g&1|0)!=0):0){l=c[(c[E+4>>2]|0)+100>>2]|0;p=E+88|0;n=c[p>>2]|0;if(n){Jd[c[l+8>>2]&255](l,n);g=c[o>>2]|0;j=g;g=c[g+4>>2]|0}c[p>>2]=0;c[j+4>>2]=g&-2}else c[E+88>>2]=0;t=E+24|0;a[E+94>>0]=0;g=E+100|0;x=E+72|0;j=t+0|0;l=j+40|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(l|0));c[x+0>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;j=g+0|0;l=j+56|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(l|0));o=c[d+96>>2]|0;j=c[(c[o+4>>2]|0)+160>>2]|0;g=(f&1024|0)==0?f:f|2049;if(!(g&1))w=g;else w=g&-15|10;q=(w&2|0)==0;a:do if(((j|0)!=0&q&(w&32768|0)==0?(r=c[c[o>>2]>>2]|0,(r&768|0)==256):0)?(s=c[d+8>>2]|0,(s&8192|0)==0):0){do if(!(w&2048)){f=c[d+128>>2]|0;g=(c[f>>2]|0)==0;if(!(c[f+8>>2]|0))if(g){v=29;break a}else break;else if(g)break;else{v=29;break a}}while(0);if(((w&32|0)==0?!((r&1024|0)==0|(w&983040|0)==65536):0)?(a[(c[d+128>>2]|0)+52>>0]|0)==0:0){if(!(s&8)){v=29;break}if(!(c[d+692>>2]|0)){v=29;break}if(b[d+286>>1]|0){v=29;break}}if(((s&2|0)!=0&(w&8|0)==0?(ce[c[(c[o+12>>2]|0)+72>>2]&255](E,c[u>>2]|0,e,w|16384)|0)==0:0)?(c[x>>2]|0)==1651078259:0){g=0;break}t=(c[d+128>>2]|0)+24|0;s=c[t>>2]|0;c[t>>2]=0;g=Xd[c[(c[(c[j>>2]|0)+20>>2]|0)+12>>2]&127](j,E,c[u>>2]|0,e,w)|0;c[t>>2]=s}else v=29;while(0);if((v|0)==29){g=ce[c[(c[o+12>>2]|0)+72>>2]&255](E,c[u>>2]|0,e,w)|0;if(g){E=g;i=F;return E|0}if((c[x>>2]|0)==1869968492){n=b[E+110>>1]|0;f=n<<16>>16;g=b[E+108>>1]|0;p=g<<16>>16;if((g|n)<<16>>16){if(n<<16>>16<1|g<<16>>16<1){E=6;i=F;return E|0}b:do if(g<<16>>16>0){j=c[E+120>>2]|0;o=-1;l=0;while(1){v=b[j+(l<<1)>>1]|0;g=v<<16>>16;l=l+1|0;if(!((g|0)>(o|0)?v<<16>>16>16:0)){g=6;break}if((l|0)>=(p|0))break b;else o=g}i=F;return g|0}else g=-1;while(0);if((g|0)!=(f+-1|0)){E=6;i=F;return E|0}}if(q){if(!(w&16)){n=E+44|0;c[n>>2]=c[n>>2]&-64;n=E+48|0;c[n>>2]=c[n>>2]&-64;n=E+32|0;r=c[n>>2]|0;q=r+63+(c[t>>2]|0)&-64;f=E+36|0;s=c[f>>2]|0;v=E+28|0;e=s-(c[v>>2]|0)&-64;r=r&-64;c[n>>2]=r;s=s+63&-64;c[f>>2]=s;c[t>>2]=q-r;c[v>>2]=s-e}else{n=E+32|0;c[n>>2]=c[n>>2]&-64;n=E+36|0;c[n>>2]=(c[n>>2]|0)+63&-64;n=E+44|0;r=c[n>>2]|0;q=r+63+(c[t>>2]|0)&-64;f=E+48|0;e=c[f>>2]|0;v=E+28|0;s=e+63+(c[v>>2]|0)&-64;r=r&-64;c[n>>2]=r;e=e&-64;c[f>>2]=e;c[t>>2]=q-r;c[v>>2]=s-e}g=E+40|0;c[g>>2]=(c[g>>2]|0)+32&-64;g=E+52|0;c[g>>2]=(c[g>>2]|0)+32&-64;g=0}else g=0}else g=0}if(!(w&16)){c[E+64>>2]=c[E+40>>2];j=0}else{c[E+64>>2]=0;j=c[E+52>>2]|0}c[E+68>>2]=j;if((w&8192|0)==0?(c[d+8>>2]&1|0)!=0:0){u=c[u>>2]|0;v=E+56|0;c[v>>2]=Ug(c[v>>2]|0,c[u+16>>2]|0,64)|0;v=E+60|0;c[v>>2]=Ug(c[v>>2]|0,c[u+20>>2]|0,64)|0}if((w&2048|0)==0?(D=c[d+128>>2]|0,y=D+24|0,h=c[y>>2]|0,(h|0)!=0):0){n=c[(c[(c[E+4>>2]|0)+96>>2]|0)+4>>2]|0;j=c[n+156>>2]|0;if(j){l=c[x>>2]|0;if((c[j+16>>2]|0)==(l|0)){g=j;v=59}else v=54}else{l=c[x>>2]|0;v=54}c:do if((v|0)==54){d:do if((n|0)!=0?(m=c[n+148>>2]|0,(m|0)!=0):0){while(1){j=c[m+8>>2]|0;if((c[j+16>>2]|0)==(l|0))break;m=c[m+4>>2]|0;if(!m)break d}if(j){g=j;v=59;break c}}while(0);if((l|0)==1869968492){if(((h&1|0)!=0?(D|0)!=0:0)?(k=c[E+112>>2]|0,d=b[E+110>>1]|0,z=k+(d<<16>>16<<3)|0,d<<16>>16>0):0){do{Ch(k,D);k=k+8|0}while(k>>>0>>0);h=c[y>>2]|0}if((h&2|0)!=0?(B=c[D+16>>2]|0,C=c[D+20>>2]|0,A=b[E+110>>1]|0,A<<16>>16>0):0){h=A<<16>>16;j=0;k=c[E+112>>2]|0;while(1){c[k>>2]=(c[k>>2]|0)+B;A=k+4|0;c[A>>2]=(c[A>>2]|0)+C;j=j+1<<16>>16;if((j&65535|0)>=(h|0))break;else k=k+8|0}}}}while(0);if((v|0)==59)g=ce[c[(c[g+12>>2]|0)+44>>2]&255](g,E,D,D+16|0)|0;Ch(E+64|0,D)}if(g){E=g;i=F;return E|0}D=c[x>>2]|0;if((D|0)==1668246896|(D|0)==1651078259){E=0;i=F;return E|0}if(!(w&4)){E=0;i=F;return E|0}g=w>>>16&15;h=c[E+4>>2]|0;if(!h){E=6;i=F;return E|0}E=$h(c[(c[h+96>>2]|0)+4>>2]|0,E,(g|0)!=0|(w&4096|0)==0?g:2)|0;i=F;return E|0}function Rg(a){a=a|0;var b=0;b=i;if((a|0)>-1){a=a+32768&-65536;i=b;return a|0}else{a=0-(32768-a&-65536)|0;i=b;return a|0}return 0}function Sg(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=Tg(e)|0;i=d;return b|0}function Tg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;j=i;e=a;g=c[e>>2]|0;e=c[e+4>>2]|0;if(!g){h=(e|0)<0?0-e|0:e;i=j;return h|0}a=(g|0)<0?0-g|0:g;if(!e){h=a;i=j;return h|0}a=((e|0)<0?0-e|0:e)|a;b=a>>>0>65535;a=b?a>>>16:a;b=b?16:0;if(a>>>0>255){a=a>>>8;b=b|8}if(a>>>0>15){a=a>>>4;b=b+4|0}if(a>>>0>3){a=a>>>2;b=b+2|0}a=(a>>>0>1&1)+b|0;if((a|0)<30){h=29-a|0;d=e<>b;b=g>>b;h=29-a|0}a=0-b|0;if((d|0)>(b|0)){b=(d|0)>(a|0);e=1;f=1;g=b?d:a;b=b?a:0-d|0}else{a=(d|0)<(a|0);e=1;f=1;g=a?0-d|0:b;b=a?b:d}while(1){a=b+e>>f;if((b|0)>0){a=a+g|0;b=b-(g+e>>f)|0}else{a=g-a|0;b=(g+e>>f)+b|0}f=f+1|0;if((f|0)==23)break;else{e=e<<1;g=a}}f=(a|0)<0?0-a|0:a;g=f>>>16;f=f&65535;d=(f*56281|0)+(g*23318|0)|0;f=(f*23318|0)>>>16;e=d+f|0;g=(e>>>16)+(g*56281|0)|0;g=e>>>0<(d>>>0>f>>>0?d:f)>>>0?g+65536|0:g;a=(a|0)>-1?g:0-g|0;if((h|0)>0){h=a+(1<>h;i=j;return h|0}else{h=a<<0-h;i=j;return h|0}return 0}function Ug(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;if((a|0)==0|(b|0)==(c|0)){g=a;i=j;return g|0}e=(a|0)<0?0-a|0:a;f=(b|0)<0?0-b|0:b;h=b^a^c;b=(c|0)<0?0-c|0:c;a=(b|0)>0;if(!((e|0)<46341&(f|0)<46341&(b|0)<176096&a))if(a?(d=e&65535,a=e>>>16,c=f&65535,k=f>>>16,e=ea(c,d)|0,f=ea(k,d)|0,c=f+(ea(c,a)|0)|0,d=e+(c<<16)|0,g=d+(b>>1)|0,d=(c>>>16)+(ea(k,a)|0)+((c>>>0>>0&1)<<16)+(d>>>0>>0&1)+(g>>>0>>0&1)|0,d>>>0>>0):0){c=32;a=0;while(1){a=a<<1;d=d<<1|g>>>31;if(d>>>0>=b>>>0){a=a|1;d=d-b|0}c=c+-1|0;if(!c)break;else g=g<<1}}else a=2147483647;else a=((b>>1)+(ea(f,e)|0)|0)/(b|0)|0;k=(h|0)<0?0-a|0:a;i=j;return k|0}function Vg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;if((a|0)==0|(b|0)==(c|0)){g=a;i=j;return g|0}e=(a|0)<0?0-a|0:a;f=(b|0)<0?0-b|0:b;h=b^a^c;b=(c|0)<0?0-c|0:c;a=(b|0)>0;if(!((e|0)<46341&(f|0)<46341&a))if(a?(k=e&65535,c=e>>>16,g=f&65535,a=f>>>16,d=ea(g,k)|0,e=ea(a,k)|0,f=e+(ea(g,c)|0)|0,g=d+(f<<16)|0,d=(f>>>16)+(ea(a,c)|0)+((f>>>0>>0&1)<<16)+(g>>>0>>0&1)|0,d>>>0>>0):0){c=32;a=0;while(1){a=a<<1;d=d<<1|g>>>31;if(d>>>0>=b>>>0){a=a|1;d=d-b|0}c=c+-1|0;if(!c)break;else g=g<<1}}else a=2147483647;else a=(ea(f,e)|0)/(b|0)|0;k=(h|0)<0?0-a|0:a;i=j;return k|0}function Wg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=i;if((a|0)==0|(b|0)==65536){i=e;return a|0}c=(a|0)<0?0-a|0:a;d=(b|0)<0?0-b|0:b;if(c>>>0<2049&d>>>0<1048577)c=((ea(d,c)|0)+32768|0)>>>16;else{f=c&65535;c=(ea(d>>>16,f)|0)+(ea(c>>>16,d)|0)+(((ea(d&65535,f)|0)+32768|0)>>>16)|0}f=(b^a|0)<0?0-c|0:c;i=e;return f|0}function Xg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=i;c=(a|0)<0?0-a|0:a;f=b^a;e=(b|0)<0?0-b|0:b;do if(e){d=c>>16;b=c<<16;a=e>>1;if(!d){a=((a+b|0)>>>0)/(e>>>0)|0;break}a=b+a|0;b=(a>>>0>>0&1)+d|0;if(b>>>0>>0){d=a;c=32;a=0;while(1){a=a<<1;b=b<<1|d>>>31;if(b>>>0>=e>>>0){a=a|1;b=b-e|0}c=c+-1|0;if(!c)break;else d=d<<1}}else a=2147483647}else a=2147483647;while(0);i=g;return ((f|0)<0?0-a|0:a)|0}function Yg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;if(!a){q=6;i=r;return q|0}o=c[a>>2]|0;q=a+12|0;l=c[q>>2]|0;if((o|0)==0|(l|0)==65536)f=o;else{d=(o|0)<0?0-o|0:o;b=(l|0)<0?0-l|0:l;if(d>>>0<2049&b>>>0<1048577)b=((ea(b,d)|0)+32768|0)>>>16;else{p=d&65535;b=(ea(b>>>16,p)|0)+(ea(d>>>16,b)|0)+(((ea(b&65535,p)|0)+32768|0)>>>16)|0}f=(l^o|0)<0?0-b|0:b}h=a+4|0;e=c[h>>2]|0;k=a+8|0;j=c[k>>2]|0;if((e|0)==0|(j|0)==65536)b=e;else{b=(e|0)<0?0-e|0:e;d=(j|0)<0?0-j|0:j;if(b>>>0<2049&d>>>0<1048577)b=((ea(d,b)|0)+32768|0)>>>16;else{p=b&65535;b=(ea(d>>>16,p)|0)+(ea(b>>>16,d)|0)+(((ea(d&65535,p)|0)+32768|0)>>>16)|0}b=(j^e|0)<0?0-b|0:b}n=f-b|0;if((f|0)==(b|0)){q=6;i=r;return q|0}b=(e|0)<0?0-e|0:e;g=e^n;p=(n|0)<0?0-n|0:n;m=(p|0)==0;do if(!m){d=b>>16;f=b<<16;b=p>>1;if(!d){b=((f+b|0)>>>0)/(p>>>0)|0;break}b=f+b|0;f=(b>>>0>>0&1)+d|0;if(f>>>0

>>0){d=b;e=32;b=0;while(1){b=b<<1;f=f<<1|d>>>31;if(f>>>0>=p>>>0){b=b|1;f=f-p|0}e=e+-1|0;if(!e)break;else d=d<<1}}else b=2147483647}else b=2147483647;while(0);c[h>>2]=0-((g|0)<0?0-b|0:b);b=(j|0)<0?0-j|0:j;g=j^n;do if(!m){d=b>>16;f=b<<16;b=p>>1;if(!d){b=((f+b|0)>>>0)/(p>>>0)|0;break}b=f+b|0;f=(b>>>0>>0&1)+d|0;if(f>>>0

>>0){d=b;e=32;b=0;while(1){b=b<<1;f=f<<1|d>>>31;if(f>>>0>=p>>>0){b=b|1;f=f-p|0}e=e+-1|0;if(!e)break;else d=d<<1}}else b=2147483647}else b=2147483647;while(0);c[k>>2]=0-((g|0)<0?0-b|0:b);b=(l|0)<0?0-l|0:l;g=l^n;do if(!m){e=b>>16;d=b<<16;b=p>>1;if(!e){b=((d+b|0)>>>0)/(p>>>0)|0;break}b=d+b|0;d=(b>>>0>>0&1)+e|0;if(d>>>0

>>0){f=b;e=32;b=0;while(1){b=b<<1;d=d<<1|f>>>31;if(d>>>0>=p>>>0){b=b|1;d=d-p|0}e=e+-1|0;if(!e)break;else f=f<<1}}else b=2147483647}else b=2147483647;while(0);c[a>>2]=(g|0)<0?0-b|0:b;b=(o|0)<0?0-o|0:o;g=o^n;do if(!m){e=b>>16;d=b<<16;b=p>>1;if(!e){b=((d+b|0)>>>0)/(p>>>0)|0;break}b=d+b|0;d=(b>>>0>>0&1)+e|0;if(d>>>0

>>0){e=b;f=32;b=0;while(1){b=b<<1;d=d<<1|e>>>31;if(d>>>0>=p>>>0){b=b|1;d=d-p|0}f=f+-1|0;if(!f)break;else e=e<<1}}else b=2147483647}else b=2147483647;while(0);c[q>>2]=(g|0)<0?0-b|0:b;q=0;i=r;return q|0}function Zg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=i;d=d<<16;if(!((a|0)!=0&(b|0)!=0)){i=e;return}k=c[a>>2]|0;h=c[b>>2]|0;l=Ug(k,h,d)|0;p=c[a+4>>2]|0;g=b+8|0;q=c[g>>2]|0;l=(Ug(p,q,d)|0)+l|0;j=b+4|0;o=c[j>>2]|0;k=Ug(k,o,d)|0;f=b+12|0;m=c[f>>2]|0;k=(Ug(p,m,d)|0)+k|0;p=c[a+8>>2]|0;h=Ug(p,h,d)|0;n=c[a+12>>2]|0;h=(Ug(n,q,d)|0)+h|0;a=Ug(p,o,d)|0;a=(Ug(n,m,d)|0)+a|0;c[b>>2]=l;c[j>>2]=k;c[g>>2]=h;c[f>>2]=a;i=e;return}function _g(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;d=d<<16;if(!((a|0)!=0&(b|0)!=0)){i=e;return}h=c[a>>2]|0;g=Ug(h,c[b>>2]|0,d)|0;f=a+4|0;j=c[f>>2]|0;g=(Ug(j,c[b+4>>2]|0,d)|0)+g|0;h=Ug(h,c[b+8>>2]|0,d)|0;b=(Ug(j,c[b+12>>2]|0,d)|0)+h|0;c[a>>2]=g;c[f>>2]=b;i=e;return}function $g(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;if(!b){i=g;return ((a|0)>-1?d:0-d|0)|0}if(!a){f=(b|0)>-1?0-c|0:c;i=g;return f|0}if(!d){f=(c|0)>-1?b:0-b|0;i=g;return f|0}if(!c){f=(d|0)>-1?0-a|0:a;i=g;return f|0}f=a&65535;j=a>>>16;h=d&65535;a=d>>>16;e=ea(h,f)|0;d=ea(a,f)|0;h=d+(ea(h,j)|0)|0;f=e+(h<<16)|0;e=(h>>>16)+(ea(a,j)|0)+((h>>>0>>0&1)<<16)+(f>>>0>>0&1)|0;d=b&65535;h=b>>>16;b=c&65535;j=c>>>16;a=ea(b,d)|0;c=ea(j,d)|0;b=c+(ea(b,h)|0)|0;d=a+(b<<16)|0;a=(b>>>16)+(ea(j,h)|0)+((b>>>0>>0&1)<<16)+(d>>>0>>0&1)|0;if(e>>>0>a>>>0){c=1;i=g;return c|0}if(e>>>0>>0){c=-1;i=g;return c|0}if(f>>>0>d>>>0){c=1;i=g;return c|0}c=(f>>>0>>0)<<31>>31;i=g;return c|0}function ah(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=c+a|0;f=d+b|0;e=((f|0)<0?0-f|0:f)+((e|0)<0?0-e|0:e)|0;return (((b|0)<0?0-b|0:b)+((a|0)<0?0-a|0:a)+((c|0)<0?0-c|0:c)+((d|0)<0?0-d|0:d)-e|0)<(e>>4|0)|0}function bh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;f=Wd[c[b+4>>2]&511](b,96)|0;j=(f|0)==0;e=j?64:0;if(j){i=h;return e|0}g=f+0|0;j=g+96|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(j|0));c[f>>2]=b;c[d>>2]=f;i=h;return e|0}function ch(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;if((b|0)>0){e=Wd[c[a+4>>2]&511](a,b)|0;g=(e|0)==0;a=g?64:0;if(g)e=0;else Cga(e|0,0,b|0)|0}else{e=0;a=b>>31&6}c[d>>2]=a;i=f;return e|0}function dh(a){a=a|0;var d=0,e=0,f=0;f=i;d=a+20|0;b[a+22>>1]=0;b[d>>1]=0;c[a+48>>2]=0;a=a+56|0;d=d+0|0;e=a+36|0;do{c[a>>2]=c[d>>2];a=a+4|0;d=d+4|0}while((a|0)<(e|0));i=f;return}function eh(a,b){a=a|0;b=b|0;var d=0;d=i;if(!b){i=d;return}Jd[c[a+8>>2]&255](a,b);i=d;return}function fh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0;h=i;if(!a){i=h;return}g=c[a>>2]|0;d=a+24|0;e=c[d>>2]|0;if(e)Jd[c[g+8>>2]&255](g,e);c[d>>2]=0;d=a+28|0;e=c[d>>2]|0;if(e)Jd[c[g+8>>2]&255](g,e);c[d>>2]=0;d=a+32|0;e=c[d>>2]|0;if(e)Jd[c[g+8>>2]&255](g,e);c[d>>2]=0;d=a+40|0;e=c[d>>2]|0;if(e)Jd[c[g+8>>2]&255](g,e);c[d>>2]=0;d=a+52|0;e=c[d>>2]|0;if(e)Jd[c[g+8>>2]&255](g,e);c[d>>2]=0;c[a+44>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;e=a+20|0;b[a+22>>1]=0;b[e>>1]=0;c[a+48>>2]=0;d=a+56|0;e=e+0|0;f=d+36|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));Jd[c[g+8>>2]&255](g,a);i=h;return}function gh(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;f=c[d>>2]|0;l=d+4|0;e=c[l>>2]|0;k=e<<1;a:do if((k|0)<0)e=6;else{do if(k){if((k|0)>268435455){e=10;break a}j=e<<4;if((j|0)>0){e=Wd[c[f+4>>2]&511](f,j)|0;g=(e|0)==0;f=g?64:0;if(g){e=0;g=f}else{Cga(e|0,0,j|0)|0;g=f}}else{e=0;g=j>>31&6}h=(g|0)==0;if(h&(k|0)>0){Cga(e|0,0,j|0)|0;m=10;break}f=d+40|0;c[f>>2]=e;if(h)e=f;else{l=g;i=n;return l|0}}else{e=0;m=10}while(0);if((m|0)==10){j=d+40|0;c[j>>2]=e;e=j}a[d+16>>0]=1;k=c[e>>2]|0;j=c[l>>2]|0;c[d+44>>2]=k+(j<<3);l=b[d+22>>1]|0;c[d+60>>2]=(c[d+24>>2]|0)+(l<<3);c[d+64>>2]=(c[d+28>>2]|0)+l;c[d+68>>2]=(c[d+32>>2]|0)+(b[d+20>>1]<<1);c[d+76>>2]=(c[e>>2]|0)+(l<<3);c[d+80>>2]=k+(j+l<<3);l=0;i=n;return l|0}while(0);c[d+40>>2]=0;l=e;i=n;return l|0}function hh(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;j=i;if((d|b|e|0)<0){e=f;b=6;c[g>>2]=b;i=j;return e|0}do if((e|0)==0|(b|0)==0)if(!f){a=0;f=0}else{Jd[c[a+8>>2]&255](a,f);a=0;f=0}else{if((2147483647/(b|0)|0|0)<(e|0)){e=f;b=10;c[g>>2]=b;i=j;return e|0}if(d){k=ea(d,b)|0;h=ea(e,b)|0;a=ce[c[a+12>>2]&255](a,k,h,f)|0;h=(a|0)==0;a=h?f:a;f=h?64:0;break}h=ea(e,b)|0;if((h|0)<=0){a=0;f=h>>31&6;break}a=Wd[c[a+4>>2]&511](a,h)|0;k=(a|0)==0;f=k?64:0;if(k)a=0;else Cga(a|0,0,h|0)|0}while(0);if(!((f|0)==0&(e|0)>(d|0))){b=a;e=f;c[g>>2]=e;i=j;return b|0}Cga(a+(ea(d,b)|0)|0,0,ea(e-d|0,b)|0)|0;b=a;e=0;c[g>>2]=e;i=j;return b|0}function ih(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;q=c[d>>2]|0;s=d+22|0;e=(b[s>>1]|0)+e+(b[d+58>>1]|0)|0;r=d+4|0;o=c[r>>2]|0;a:do if(e>>>0>o>>>0){n=e+7|0;m=n&-8;if(m>>>0>32767){d=10;i=t;return d|0}j=d+24|0;g=c[j>>2]|0;b:do if((n|o|0)<0)e=6;else{l=(m|0)==0;do if(l)if(!g){g=0;h=0}else{Jd[c[q+8>>2]&255](q,g);g=0;h=0}else{if((m|0)>268435455){e=10;break b}if(o){k=ce[c[q+12>>2]&255](q,o<<3,m<<3,g)|0;h=(k|0)==0;g=h?g:k;h=h?64:0;break}e=m<<3;if((m|0)<=0){g=0;h=n>>>28&6;break}g=Wd[c[q+4>>2]&511](q,e)|0;k=(g|0)==0;h=k?64:0;if(k)g=0;else Cga(g|0,0,e|0)|0}while(0);e=(h|0)==0;k=(m|0)>(o|0);if(!(e&k)){c[j>>2]=g;if(!e){j=h;break a}}else{Cga(g+(o<<3)|0,0,m-o<<3|0)|0;c[j>>2]=g}j=d+28|0;e=c[j>>2]|0;do if(l)if(!e){e=0;g=0}else{Jd[c[q+8>>2]&255](q,e);e=0;g=0}else{if(o){l=ce[c[q+12>>2]&255](q,o,m,e)|0;g=(l|0)==0;e=g?e:l;g=g?64:0;break}if((m|0)<=0){e=0;g=n>>31&6;break}e=Wd[c[q+4>>2]&511](q,m)|0;l=(e|0)==0;g=l?64:0;if(l)e=0;else Cga(e|0,0,m|0)|0}while(0);h=(g|0)==0;if(!(h&k)){c[j>>2]=e;if(!h){j=g;break a}}else{Cga(e+o|0,0,m-o|0)|0;c[j>>2]=e}c:do if(a[d+16>>0]|0){j=o<<1;k=m<<1;l=d+40|0;g=c[l>>2]|0;d:do if((k|j|0)<0)e=6;else{do if(!k)if(!g){e=0;g=0}else{Jd[c[q+8>>2]&255](q,g);e=0;g=0}else{if((k|0)>268435455){e=10;break d}if(j){e=ce[c[q+12>>2]&255](q,o<<4,m<<4,g)|0;h=(e|0)==0;e=h?g:e;g=h?64:0;break}h=m<<4;if((h|0)<=0){e=0;g=h>>31&6;break}e=Wd[c[q+4>>2]&511](q,h)|0;n=(e|0)==0;g=n?64:0;if(n)e=0;else Cga(e|0,0,h|0)|0}while(0);h=(g|0)==0;if(!(h&(k|0)>(j|0))){c[l>>2]=e;if(!h){j=g;break a}}else{Cga(e+(o<<4)|0,0,k-j<<3|0)|0;c[l>>2]=e}Bga(e+(m<<3)|0,e+(o<<3)|0,o<<3|0)|0;c[d+44>>2]=(c[l>>2]|0)+(m<<3);break c}while(0);c[l>>2]=g;j=e;break a}while(0);c[r>>2]=m;g=1;p=48;break a}while(0);c[j>>2]=g;j=e}else{g=0;p=48}while(0);e:do if((p|0)==48){m=d+8|0;l=c[m>>2]|0;n=d+20|0;h=b[n>>1]|0;e=(h<<16>>16)+f+(b[d+56>>1]|0)|0;f:do if(e>>>0<=l>>>0)if(!(g<<24>>24)){d=0;i=t;return d|0}else{g=c[d+32>>2]|0;break}else{e=e+3|0;j=e&-4;if(j>>>0>32767){d=10;i=t;return d|0}k=d+32|0;g=c[k>>2]|0;g:do if((e|l|0)<0)e=6;else{do if(!j)if(!g){g=0;e=0}else{Jd[c[q+8>>2]&255](q,g);g=0;e=0}else{if((j|0)>1073741823){e=10;break g}if(l){q=ce[c[q+12>>2]&255](q,l<<1,j<<1,g)|0;e=(q|0)==0;g=e?g:q;e=e?64:0;break}h=j<<1;if((j|0)<=0){g=0;e=e>>30&6;break}g=Wd[c[q+4>>2]&511](q,h)|0;q=(g|0)==0;e=q?64:0;if(q)g=0;else Cga(g|0,0,h|0)|0}while(0);h=(e|0)==0;if(!(h&(j|0)>(l|0))){c[k>>2]=g;if(!h){j=e;break e}}else{Cga(g+(l<<1)|0,0,j-l<<1|0)|0;c[k>>2]=g}c[m>>2]=j;h=b[n>>1]|0;break f}while(0);c[k>>2]=g;j=e;break e}while(0);e=b[s>>1]|0;c[d+60>>2]=(c[d+24>>2]|0)+(e<<3);c[d+64>>2]=(c[d+28>>2]|0)+e;c[d+68>>2]=g+(h<<16>>16<<1);if(!(a[d+16>>0]|0)){d=0;i=t;return d|0}c[d+76>>2]=(c[d+40>>2]|0)+(e<<3);c[d+80>>2]=(c[d+44>>2]|0)+(e<<3);d=0;i=t;return d|0}while(0);h=c[d>>2]|0;e=d+24|0;g=c[e>>2]|0;if(g)Jd[c[h+8>>2]&255](h,g);c[e>>2]=0;e=d+28|0;g=c[e>>2]|0;if(g)Jd[c[h+8>>2]&255](h,g);c[e>>2]=0;e=d+32|0;g=c[e>>2]|0;if(g)Jd[c[h+8>>2]&255](h,g);c[e>>2]=0;e=d+40|0;g=c[e>>2]|0;if(g)Jd[c[h+8>>2]&255](h,g);c[e>>2]=0;e=d+52|0;g=c[e>>2]|0;if(g)Jd[c[h+8>>2]&255](h,g);c[e>>2]=0;c[d+44>>2]=0;c[r>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;g=d+20|0;b[s>>1]=0;b[g>>1]=0;c[d+48>>2]=0;e=d+56|0;g=g+0|0;h=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(h|0));d=j;i=t;return d|0}function jh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;g=c[a>>2]|0;m=a+48|0;b=(c[m>>2]|0)+b+(c[a+84>>2]|0)|0;l=a+12|0;k=c[l>>2]|0;if(b>>>0<=k>>>0){a=0;i=n;return a|0}e=b+1|0;h=e&-2;j=a+52|0;d=c[j>>2]|0;a:do if((e|k|0)<0)b=6;else{do if(!h)if(!d){b=0;d=0}else{Jd[c[g+8>>2]&255](g,d);b=0;d=0}else{if((h|0)>67108863){b=10;break a}if(k){b=ce[c[g+12>>2]&255](g,k<<5,h<<5,d)|0;g=(b|0)==0;b=g?d:b;d=g?64:0;break}f=h<<5;if((h|0)<=0){b=0;d=e>>>26&6;break}b=Wd[c[g+4>>2]&511](g,f)|0;g=(b|0)==0;d=g?64:0;if(g)b=0;else Cga(b|0,0,f|0)|0}while(0);e=(d|0)==0;if(!(e&(h|0)>(k|0))){c[j>>2]=b;if(!e){a=d;i=n;return a|0}}else{Cga(b+(k<<5)|0,0,h-k<<5|0)|0;c[j>>2]=b}c[l>>2]=h;c[a+88>>2]=b+(c[m>>2]<<5);a=0;i=n;return a|0}while(0);c[j>>2]=d;a=b;i=n;return a|0}function kh(d){d=d|0;var e=0,f=0,g=0;f=i;b[d+58>>1]=0;b[d+56>>1]=0;c[d+84>>2]=0;e=b[d+22>>1]|0;c[d+60>>2]=(c[d+24>>2]|0)+(e<<3);c[d+64>>2]=(c[d+28>>2]|0)+e;c[d+68>>2]=(c[d+32>>2]|0)+(b[d+20>>1]<<1);if(!(a[d+16>>0]|0)){g=d+52|0;g=c[g>>2]|0;e=d+48|0;e=c[e>>2]|0;e=g+(e<<5)|0;d=d+88|0;c[d>>2]=e;i=f;return}c[d+76>>2]=(c[d+40>>2]|0)+(e<<3);c[d+80>>2]=(c[d+44>>2]|0)+(e<<3);g=d+52|0;g=c[g>>2]|0;e=d+48|0;e=c[e>>2]|0;e=g+(e<<5)|0;g=d+88|0;c[g>>2]=e;i=f;return}function lh(d){d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;if(!d){i=r;return}m=d+56|0;s=b[m>>1]|0;h=s<<16>>16;j=d+22|0;k=b[j>>1]|0;o=d+58|0;f=(e[o>>1]|0)+k&65535;b[j>>1]=f;l=d+20|0;g=(s&65535)+(e[l>>1]|0)&65535;b[l>>1]=g;n=d+84|0;p=d+48|0;q=(c[p>>2]|0)+(c[n>>2]|0)|0;c[p>>2]=q;p=d+68|0;if(s<<16>>16){f=c[p>>2]|0;g=0;do{s=f+(g<<1)|0;b[s>>1]=(e[s>>1]|0)+k;g=g+1|0}while(g>>>0>>0);f=b[j>>1]|0;g=b[l>>1]|0}b[o>>1]=0;b[m>>1]=0;c[n>>2]=0;f=f<<16>>16;c[d+60>>2]=(c[d+24>>2]|0)+(f<<3);c[d+64>>2]=(c[d+28>>2]|0)+f;c[p>>2]=(c[d+32>>2]|0)+(g<<16>>16<<1);if(a[d+16>>0]|0){c[d+76>>2]=(c[d+40>>2]|0)+(f<<3);c[d+80>>2]=(c[d+44>>2]|0)+(f<<3)}c[d+88>>2]=(c[d+52>>2]|0)+(q<<5);i=r;return}function mh(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;j=b[e+22>>1]|0;m=j<<16>>16;n=b[e+20>>1]|0;o=n<<16>>16;p=ih(d,m,o)|0;if(p){i=r;return p|0}q=d+24|0;g=m<<3;Aga(c[q>>2]|0,c[e+24>>2]|0,g|0)|0;k=d+28|0;Aga(c[k>>2]|0,c[e+28>>2]|0,m|0)|0;l=d+32|0;Aga(c[l>>2]|0,c[e+32>>2]|0,o<<1|0)|0;h=d+16|0;f=a[h>>0]|0;if(f<<24>>24){if(a[e+16>>0]|0){Aga(c[d+40>>2]|0,c[e+40>>2]|0,g|0)|0;Aga(c[d+44>>2]|0,c[e+44>>2]|0,g|0)|0;f=a[h>>0]|0}}else f=0;b[d+22>>1]=j;b[d+20>>1]=n;c[d+60>>2]=(c[q>>2]|0)+(m<<3);c[d+64>>2]=(c[k>>2]|0)+m;c[d+68>>2]=(c[l>>2]|0)+(o<<1);if(!(f<<24>>24)){i=r;return p|0}c[d+76>>2]=(c[d+40>>2]|0)+(m<<3);c[d+80>>2]=(c[d+44>>2]|0)+(m<<3);i=r;return p|0}function nh(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;a:do if((a|0)!=0&(b|0)!=0?(d=c[a>>2]|0,(d|0)!=0):0){while(1){if(!(qga(d,b)|0))break;a=a+8|0;d=c[a>>2]|0;if(!d){a=0;break a}}a=c[a+4>>2]|0}else a=0;while(0);i=e;return a|0}function oh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=e;c[a+12>>2]=0;return}function ph(a,b){a=a|0;b=b|0;c[a+12>>2]=b;Va(a+16|0,1)}function qh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;c[e>>2]=0;if(!b){k=33;i=m;return k|0}if(!d){k=6;i=m;return k|0}l=c[b>>2]|0;b=Wd[c[l+4>>2]&511](l,40)|0;g=(b|0)==0;f=g?64:0;if(g){k=64;i=m;return k|0}g=b+0|0;h=g+40|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));c[b+28>>2]=l;g=c[d>>2]|0;do if(!(g&1)){if(g&4){g=d+12|0;f=uj(b,c[g>>2]|0)|0;c[b+16>>2]=c[g>>2];g=12;break}if((g&2|0)!=0?(j=d+16|0,k=c[j>>2]|0,(k|0)!=0):0)if(!b){b=k;g=12}else{Jd[c[l+8>>2]&255](l,b);b=c[j>>2]|0;g=12}else{f=6;g=13}}else{g=c[d+8>>2]|0;c[b>>2]=c[d+4>>2];c[b+4>>2]=g;c[b+8>>2]=0;c[b+32>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;g=12}while(0);if((g|0)==12)if(!f){c[b+28>>2]=l;f=0}else g=13;if((g|0)==13)if(!b)b=0;else{Jd[c[l+8>>2]&255](l,b);b=0}c[e>>2]=b;k=f;i=m;return k|0}function rh(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=0;c[a+32>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;return}function sh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;if(!a){i=f;return}d=c[a+28>>2]|0;e=c[a+24>>2]|0;if(e)Id[e&511](a);if(b){i=f;return}Jd[c[d+8>>2]&255](d,a);i=f;return}function th(a){a=a|0;var b=0,d=0;d=i;if((a|0)!=0?(b=c[a+24>>2]|0,(b|0)!=0):0)Id[b&511](a);i=d;return}function uh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;e=a+156|0;d=c[e>>2]|0;if((d|0)!=0?(b=c[d+4>>2]|0,(b&1|0)!=0):0){f=c[(c[a+4>>2]|0)+100>>2]|0;g=a+88|0;a=c[g>>2]|0;if(a){Jd[c[f+8>>2]&255](f,a);b=c[e>>2]|0;d=b;b=c[b+4>>2]|0}c[g>>2]=0;c[d+4>>2]=b&-2;i=h;return}c[a+88>>2]=0;i=h;return}function vh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;f=a+156|0;e=c[f>>2]|0;if((e|0)!=0?(d=c[e+4>>2]|0,(d&1|0)!=0):0){g=c[(c[a+4>>2]|0)+100>>2]|0;j=a+88|0;h=c[j>>2]|0;if(h){Jd[c[g+8>>2]&255](g,h);d=c[f>>2]|0;e=d;d=c[d+4>>2]|0}c[j>>2]=0;c[e+4>>2]=d&-2;h=a+88|0;c[h>>2]=b;i=k;return}c[a+88>>2]=0;h=a+88|0;c[h>>2]=b;i=k;return}function wh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;f=c[(c[a+4>>2]|0)+100>>2]|0;d=(c[a+156>>2]|0)+4|0;e=c[d>>2]|0;if(!(e&1))c[d>>2]=e|1;else{d=a+88|0;e=c[d>>2]|0;if(e)Jd[c[f+8>>2]&255](f,e);c[d>>2]=0}if((b|0)>0){e=Wd[c[f+4>>2]&511](f,b)|0;f=(e|0)==0;d=f?64:0;if(f)e=0;else Cga(e|0,0,b|0)|0}else{e=0;d=b>>31&6}c[a+88>>2]=e;i=g;return d|0}function xh(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;if(!d){s=6;i=t;return s|0}k=d+96|0;f=c[k>>2]|0;if(!f){s=6;i=t;return s|0}r=c[f+8>>2]|0;j=c[(c[f+12>>2]|0)+44>>2]|0;if((j|0)>0){g=Wd[c[r+4>>2]&511](r,j)|0;q=(g|0)==0;f=q?64:0;if(q)g=0;else Cga(g|0,0,j|0)|0}else{g=0;f=j>>31&6}if(f){if(!e){s=f;i=t;return s|0}c[e>>2]=0;s=f;i=t;return s|0}q=g+4|0;c[q>>2]=d;f=c[k>>2]|0;l=c[f+12>>2]|0;k=c[f+8>>2]|0;c[g>>2]=c[f+4>>2];j=k+4|0;m=Wd[c[j>>2]&511](k,40)|0;do if(!m)n=64;else{o=m+0|0;p=o+40|0;do{a[o>>0]=0;o=o+1|0}while((o|0)<(p|0));c[g+156>>2]=m;if(!(c[c[f>>2]>>2]&512)){f=Wd[c[j>>2]&511](k,96)|0;if(!f){n=64;break}o=f+0|0;p=o+96|0;do{a[o>>0]=0;o=o+1|0}while((o|0)<(p|0));c[f>>2]=k;c[m>>2]=f}f=c[l+64>>2]|0;if((f|0)!=0?(n=Ld[f&511](g)|0,(n|0)!=0):0)break;s=d+84|0;c[g+8>>2]=c[s>>2];c[s>>2]=g;if(!e){s=0;i=t;return s|0}c[e>>2]=g;s=0;i=t;return s|0}while(0);m=c[(c[q>>2]|0)+96>>2]|0;d=c[m+8>>2]|0;f=c[(c[m+12>>2]|0)+68>>2]|0;if(f)Id[f&511](g);e=g+156|0;f=c[e>>2]|0;if((f|0)!=0?(h=c[f+4>>2]|0,(h&1|0)!=0):0){j=c[(c[q>>2]|0)+100>>2]|0;l=g+88|0;k=c[l>>2]|0;if(k){Jd[c[j+8>>2]&255](j,k);h=c[e>>2]|0;f=h;h=c[h+4>>2]|0}c[l>>2]=0;c[f+4>>2]=h&-2}else c[g+88>>2]=0;if(f){if(!(c[c[m>>2]>>2]&512)){k=c[f>>2]|0;if(k){l=c[k>>2]|0;f=k+24|0;h=c[f>>2]|0;if(h)Jd[c[l+8>>2]&255](l,h);c[f>>2]=0;f=k+28|0;h=c[f>>2]|0;if(h)Jd[c[l+8>>2]&255](l,h);c[f>>2]=0;f=k+32|0;h=c[f>>2]|0;if(h)Jd[c[l+8>>2]&255](l,h);c[f>>2]=0;f=k+40|0;h=c[f>>2]|0;if(h)Jd[c[l+8>>2]&255](l,h);c[f>>2]=0;h=k+52|0;f=c[h>>2]|0;if(!f)j=l+8|0;else{j=l+8|0;Jd[c[j>>2]&255](l,f)}c[h>>2]=0;c[k+44>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;f=k+20|0;b[k+22>>1]=0;b[f>>1]=0;c[k+48>>2]=0;o=k+56|0;f=f+0|0;p=o+36|0;do{c[o>>2]=c[f>>2];o=o+4|0;f=f+4|0}while((o|0)<(p|0));Jd[c[j>>2]&255](l,k);f=c[e>>2]|0}c[f>>2]=0;if(f)s=38}else s=38;if((s|0)==38)Jd[c[d+8>>2]&255](d,f);c[e>>2]=0}if(!g){s=n;i=t;return s|0}Jd[c[r+8>>2]&255](r,g);s=n;i=t;return s|0}function yh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;if(!a){i=p;return}k=a+4|0;g=c[k>>2]|0;h=c[g+96>>2]|0;n=c[h+8>>2]|0;g=g+84|0;d=c[g>>2]|0;if(!d){i=p;return}else f=0;while(1){if((d|0)==(a|0))break;f=c[d+8>>2]|0;if(!f){o=37;break}else{j=d;d=f;f=j}}if((o|0)==37){i=p;return}d=c[a+8>>2]|0;if(!f)c[g>>2]=d;else c[f+8>>2]=d;d=c[a+20>>2]|0;if(!d){j=h;m=n}else{Id[d&511](a);m=c[(c[k>>2]|0)+96>>2]|0;j=m;m=c[m+8>>2]|0}d=c[(c[j+12>>2]|0)+68>>2]|0;if(d)Id[d&511](a);l=a+156|0;d=c[l>>2]|0;if((d|0)!=0?(e=c[d+4>>2]|0,(e&1|0)!=0):0){f=c[(c[k>>2]|0)+100>>2]|0;h=a+88|0;g=c[h>>2]|0;if(g){Jd[c[f+8>>2]&255](f,g);e=c[l>>2]|0;d=e;e=c[e+4>>2]|0}c[h>>2]=0;c[d+4>>2]=e&-2}else c[a+88>>2]=0;if(d){if(!(c[c[j>>2]>>2]&512)){h=c[d>>2]|0;if(h){j=c[h>>2]|0;d=h+24|0;e=c[d>>2]|0;if(e)Jd[c[j+8>>2]&255](j,e);c[d>>2]=0;d=h+28|0;e=c[d>>2]|0;if(e)Jd[c[j+8>>2]&255](j,e);c[d>>2]=0;d=h+32|0;e=c[d>>2]|0;if(e)Jd[c[j+8>>2]&255](j,e);c[d>>2]=0;d=h+40|0;e=c[d>>2]|0;if(e)Jd[c[j+8>>2]&255](j,e);c[d>>2]=0;e=h+52|0;d=c[e>>2]|0;if(!d)f=j+8|0;else{f=j+8|0;Jd[c[f>>2]&255](j,d)}c[e>>2]=0;c[h+44>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;g=h+20|0;b[h+22>>1]=0;b[g>>1]=0;c[h+48>>2]=0;d=h+56|0;g=g+0|0;e=d+36|0;do{c[d>>2]=c[g>>2];d=d+4|0;g=g+4|0}while((d|0)<(e|0));Jd[c[f>>2]&255](j,h);d=c[l>>2]|0}c[d>>2]=0;if(d)o=34}else o=34;if((o|0)==34)Jd[c[m+8>>2]&255](m,d);c[l>>2]=0}Jd[c[n+8>>2]&255](n,a);i=p;return}function zh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;if(!a){i=h;return}e=c[a+128>>2]|0;g=e+24|0;c[g>>2]=0;if(!b){c[e>>2]=65536;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=65536;a=e}else{c[e+0>>2]=c[b+0>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];a=b}if(((c[a+8>>2]|c[a+4>>2]|0)==0?(c[a>>2]|0)==65536:0)?(c[a+12>>2]|0)==65536:0)f=2;else{c[g>>2]=1;f=3}b=e+16|0;if(!d){c[b>>2]=0;c[e+20>>2]=0;a=0}else{e=d;a=c[e+4>>2]|0;c[b>>2]=c[e>>2];c[b+4>>2]=a;b=d;a=c[d>>2]|0}if(!(c[b+4>>2]|a)){i=h;return}c[g>>2]=f;i=h;return}function Ah(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=i;if(!((a|0)!=0&(d|0)!=0)){i=g;return}e=c[a+4>>2]|0;a=b[a+2>>1]|0;f=e+(a<<16>>16<<3)|0;if(a<<16>>16>0)a=e;else{i=g;return}do{Ch(a,d);a=a+8|0}while(a>>>0>>0);i=g;return}function Bh(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;if(!a){i=j;return}f=b[a+2>>1]|0;if(f<<16>>16<=0){i=j;return}g=f<<16>>16;h=0;f=c[a+4>>2]|0;while(1){c[f>>2]=(c[f>>2]|0)+d;a=f+4|0;c[a>>2]=(c[a>>2]|0)+e;h=h+1<<16>>16;if((h&65535|0)>=(g|0))break;else f=f+8|0}i=j;return}function Ch(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;if(!((a|0)!=0&(b|0)!=0)){i=n;return}h=c[a>>2]|0;f=c[b>>2]|0;k=(h|0)==0;if(k|(f|0)==65536)j=h;else{e=(h|0)<0?0-h|0:h;d=(f|0)<0?0-f|0:f;if(e>>>0<2049&d>>>0<1048577)d=((ea(d,e)|0)+32768|0)>>>16;else{m=e&65535;d=(ea(d>>>16,m)|0)+(ea(e>>>16,d)|0)+(((ea(d&65535,m)|0)+32768|0)>>>16)|0}j=(f^h|0)<0?0-d|0:d}m=a+4|0;d=c[m>>2]|0;f=c[b+4>>2]|0;l=(d|0)==0;if(l|(f|0)==65536)e=d;else{g=(d|0)<0?0-d|0:d;e=(f|0)<0?0-f|0:f;if(g>>>0<2049&e>>>0<1048577)g=((ea(e,g)|0)+32768|0)>>>16;else{o=g&65535;g=(ea(e>>>16,o)|0)+(ea(g>>>16,e)|0)+(((ea(e&65535,o)|0)+32768|0)>>>16)|0}e=(f^d|0)<0?0-g|0:g}j=e+j|0;g=c[b+8>>2]|0;if(!(k|(g|0)==65536)){e=(h|0)<0?0-h|0:h;f=(g|0)<0?0-g|0:g;if(e>>>0<2049&f>>>0<1048577)e=((ea(f,e)|0)+32768|0)>>>16;else{o=e&65535;e=(ea(f>>>16,o)|0)+(ea(e>>>16,f)|0)+(((ea(f&65535,o)|0)+32768|0)>>>16)|0}h=(g^h|0)<0?0-e|0:e}g=c[b+12>>2]|0;if(!(l|(g|0)==65536)){f=(d|0)<0?0-d|0:d;e=(g|0)<0?0-g|0:g;if(f>>>0<2049&e>>>0<1048577)e=((ea(e,f)|0)+32768|0)>>>16;else{o=f&65535;e=(ea(e>>>16,o)|0)+(ea(f>>>16,e)|0)+(((ea(e&65535,o)|0)+32768|0)>>>16)|0}d=(g^d|0)<0?0-e|0:e}c[a>>2]=j;c[m>>2]=d+h;i=n;return}function Dh(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;if((a|0)!=0?(d=c[a+92>>2]|0,(d|0)!=0):0)d=Wd[c[(c[d+12>>2]|0)+12>>2]&511](d,b)|0;else d=0;i=e;return d|0}function Eh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+32|0;f=g;if(!b){b=6;i=g;return b|0}c[f>>2]=4;c[f+12>>2]=b;c[f+16>>2]=0;b=Fh(a,f,d,e)|0;i=g;return b|0}function Fh(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=i;i=i+16|0;K=S+8|0;L=S;s=S+4|0;c[K>>2]=0;c[L>>2]=0;N=(f|0)==0;r=(e|0)>-1;if(!((d|0)!=0&(N&r^1))){O=6;i=S;return O|0}if(!(c[d>>2]&2))O=0;else O=(c[d+16>>2]|0)!=0&1;g=qh(a,d,K)|0;a:do if(!g){w=c[a>>2]|0;g=c[d>>2]|0;do if((g&8|0)!=0?(n=c[d+20>>2]|0,(n|0)!=0):0){if(c[c[n>>2]>>2]&1){if(!(g&16)){g=0;h=0}else{g=c[d+24>>2]|0;h=c[d+28>>2]|0}g=pr(n,K,O,e,g,h,L)|0;if(!g){o=n;break}}else g=32;h=c[K>>2]|0;if(!h){x=g;z=n;A=w;R=92;break a}j=c[h+28>>2]|0;l=c[h+24>>2]|0;if(l)Id[l&511](h);if(O<<24>>24){x=g;z=n;A=w;R=92;break a}Jd[c[j+8>>2]&255](j,h);x=g;z=n;A=w;R=92;break a}else R=16;while(0);b:do if((R|0)==16){q=c[a+16>>2]|0;l=a+(q<<2)+20|0;if((q|0)<=0){F=11;H=0;J=w;R=34;break a}n=d+24|0;p=d+28|0;g=11;q=a+20|0;h=0;while(1){o=c[q>>2]|0;if(c[c[o>>2]>>2]&1){if(!(c[d>>2]&16)){g=0;h=0}else{g=c[n>>2]|0;h=c[p>>2]|0}h=pr(o,K,O,e,g,h,L)|0;if(!h)break b;if((qga(c[(c[c[q>>2]>>2]|0)+8>>2]|0,4456)|0)==0&(h&255|0)==142){g=c[K>>2]|0;j=c[g+20>>2]|0;if((j|0)!=0?(ce[j&255](g,0,0,0)|0)!=0:0){y=h;G=o;I=w;R=33;break a}c[g+8>>2]=0;h=qr(a,g,e,f)|0;if(!h)break;else g=h}else g=h;if((g&255|0)==2)h=o;else{y=g;G=o;I=w;R=33;break a}}q=q+4|0;if(q>>>0>=l>>>0){y=g;G=h;I=w;R=33;break a}}if(!g){O=0;i=S;return O|0}h=c[g+28>>2]|0;j=c[g+24>>2]|0;if(j)Id[j&511](g);if(O<<24>>24){O=0;i=S;return O|0}Jd[c[h+8>>2]&255](h,g);O=0;i=S;return O|0}while(0);l=Wd[c[w+4>>2]&511](w,12)|0;v=(l|0)==0;m=v?64:0;if(v){v=c[L>>2]|0;m=64;t=o;u=w;break}v=c[L>>2]|0;c[l+8>>2]=v;p=v+96|0;g=c[p>>2]|0;h=g+20|0;j=c[h>>2]|0;c[l+4>>2]=0;c[l>>2]=j;if(!j)c[g+16>>2]=l;else c[j+4>>2]=l;c[h>>2]=l;do if(r){g=xh(v,0)|0;if(!g){g=Ih(v,s)|0;if(!g){c[v+88>>2]=c[s>>2];m=0;break}else m=g}else m=g;if(!l){t=o;u=w;break a}if(!v){O=m;i=S;return O|0}k=c[v+96>>2]|0;if(!k){O=m;i=S;return O|0}N=(c[v+128>>2]|0)+56|0;O=(c[N>>2]|0)+-1|0;c[N>>2]=O;if((O|0)>0){O=m;i=S;return O|0}j=c[k+8>>2]|0;l=k+16|0;g=c[l>>2]|0;if(!g){O=m;i=S;return O|0}while(1){if((c[g+8>>2]|0)==(v|0)){E=g;break}g=c[g+4>>2]|0;if(!g){Q=m;R=111;break}}if((R|0)==111){i=S;return Q|0}g=c[E>>2]|0;h=c[E+4>>2]|0;if(!g)c[l>>2]=h;else c[g+4>>2]=h;if(!h)c[k+20>>2]=g;else c[h>>2]=g;if(E)Jd[c[j+8>>2]&255](j,E);ur(j,v,k);O=m;i=S;return O|0}while(0);k=c[v+8>>2]|0;if(k&1){h=v+74|0;g=b[h>>1]|0;if(g<<16>>16<0){g=0-(g&65535)&65535;b[h>>1]=g}if(!(k&32))b[v+78>>1]=g}if((k&2|0)!=0?(M=c[v+28>>2]|0,(M|0)>0):0){h=c[v+32>>2]|0;j=0;do{g=h+(j<<4)|0;k=b[g>>1]|0;if(k<<16>>16<0)b[g>>1]=0-(k&65535);g=h+(j<<4)+8|0;k=c[g>>2]|0;if((k|0)<0)c[g>>2]=0-k<<16>>16;g=h+(j<<4)+12|0;k=c[g>>2]|0;if((k|0)<0)c[g>>2]=0-k;j=j+1|0}while((j|0)<(M|0))}g=c[v+128>>2]|0;c[g>>2]=65536;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=65536;c[g+16>>2]=0;c[g+20>>2]=0;g=g+56|0;c[g>>2]=1;if(!N){c[f>>2]=v;O=m;i=S;return O|0}if(!v){O=m;i=S;return O|0}l=c[p>>2]|0;if(!l){O=m;i=S;return O|0}c[g>>2]=0;j=c[l+8>>2]|0;k=l+16|0;g=c[k>>2]|0;if(!g){O=m;i=S;return O|0}while(1){if((c[g+8>>2]|0)==(v|0)){P=g;break}g=c[g+4>>2]|0;if(!g){Q=m;R=111;break}}if((R|0)==111){i=S;return Q|0}g=c[P>>2]|0;h=c[P+4>>2]|0;if(!g)c[k>>2]=h;else c[g+4>>2]=h;if(!h)c[l+20>>2]=g;else c[h>>2]=g;if(P)Jd[c[j+8>>2]&255](j,P);ur(j,v,l);O=m;i=S;return O|0}else{y=g;G=0;I=0;R=33}while(0);do if((R|0)==33){N=y&255;if((N|0)==85|(N|0)==2|(N|0)==81){k=c[K>>2]|0;g=rr(a,k,e,f)|0;if((g&255|0)==2)g=sr(a,k,0,e,f)|0;N=g&255;if((N|0)==85|(N|0)==2?(c[d>>2]&4|0)!=0:0)g=tr(a,k,e,f,d)|0;if(g){B=(g&255|0)==2?2:g;C=G;D=I;R=47;break}if(!k){O=0;i=S;return O|0}g=c[k+28>>2]|0;h=c[k+24>>2]|0;if(h)Id[h&511](k);if(O<<24>>24){O=0;i=S;return O|0}Jd[c[g+8>>2]&255](g,k);O=0;i=S;return O|0}else{F=y;H=G;J=I;R=34}}while(0);if((R|0)==34){k=c[K>>2]|0;B=F;C=H;D=J;R=47}if((R|0)==47)if(k){g=c[k+28>>2]|0;h=c[k+24>>2]|0;if(h)Id[h&511](k);if(!(O<<24>>24)){Jd[c[g+8>>2]&255](g,k);x=B;z=C;A=D;R=92}else{x=B;z=C;A=D;R=92}}else{x=B;z=C;A=D;R=92}if((R|0)==92){v=c[L>>2]|0;m=x;t=z;u=A}if(!v){O=m;i=S;return O|0}ur(u,v,t);O=m;i=S;return O|0}function Gh(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+32|0;g=h;if(!b){a=6;i=h;return a|0}c[g>>2]=1;c[g+4>>2]=b;c[g+8>>2]=d;c[g+16>>2]=0;a=Fh(a,g,e,f)|0;i=h;return a|0}function Hh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;d=c[a+20>>2]|0;if(!d)if((c[a+4>>2]|0)>>>0>>0)d=85;else e=4;else if(!(ce[d&255](a,b,0,0)|0))e=4;else d=85;if((e|0)==4){c[a+8>>2]=b;d=0}i=f;return d|0}function Ih(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;if(!b){l=35;i=m;return l|0}if(!d){l=36;i=m;return l|0}f=b+96|0;if(!(c[f>>2]|0)){l=34;i=m;return l|0}c[d>>2]=0;k=c[(c[f>>2]|0)+12>>2]|0;l=c[b+100>>2]|0;h=c[k+40>>2]|0;if((h|0)>0){g=Wd[c[l+4>>2]&511](l,h)|0;j=(g|0)==0;f=j?64:0;if(j)g=0;else Cga(g|0,0,h|0)|0}else{g=0;f=h>>31&6}do if(!f){j=Wd[c[l+4>>2]&511](l,12)|0;if(!j)e=64;else{h=j+0|0;f=h+12|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(f|0));c[g>>2]=b;c[g+40>>2]=0;f=c[k+56>>2]|0;if((f|0)!=0?(e=Ld[f&511](g)|0,(e|0)!=0):0){if(!j)break;Jd[c[l+8>>2]&255](l,j);break}c[d>>2]=g;c[j+8>>2]=g;e=b+112|0;f=c[e>>2]|0;c[j+4>>2]=0;c[j>>2]=f;if(!f)c[b+108>>2]=j;else c[f+4>>2]=j;c[e>>2]=j;l=0;i=m;return l|0}}else e=f;while(0);if(!g){l=e;i=m;return l|0}Jd[c[l+8>>2]&255](l,g);l=e;i=m;return l|0}function Jh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;j=i;if(!a){a=35;i=j;return a|0}h=c[a+96>>2]|0;if(!h){a=35;i=j;return a|0}e=(c[a+128>>2]|0)+56|0;g=(c[e>>2]|0)+-1|0;c[e>>2]=g;if((g|0)>0){a=0;i=j;return a|0}f=c[h+8>>2]|0;g=h+16|0;b=c[g>>2]|0;if(!b){a=35;i=j;return a|0}while(1){if((c[b+8>>2]|0)==(a|0))break;b=c[b+4>>2]|0;if(!b){b=35;d=16;break}}if((d|0)==16){i=j;return b|0}d=c[b>>2]|0;e=c[b+4>>2]|0;if(!d)c[g>>2]=e;else c[d+4>>2]=e;if(!e)c[h+20>>2]=d;else c[e>>2]=d;if(b)Jd[c[f+8>>2]&255](f,b);ur(f,a,h);a=0;i=j;return a|0}function Kh(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[a>>2]|0;a:do if(!a)a=0;else while(1){if((c[a+8>>2]|0)==(b|0))break a;a=c[a+4>>2]|0;if(!a){a=0;break}}while(0);i=d;return a|0}function Lh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;if(!a){j=36;i=l;return j|0}f=c[a>>2]|0;if(!f){j=35;i=l;return j|0}j=c[f+96>>2]|0;if(!j){j=34;i=l;return j|0}k=c[j+8>>2]|0;h=f+108|0;b=c[h>>2]|0;if(!b){j=36;i=l;return j|0}while(1){if((c[b+8>>2]|0)==(a|0))break;b=c[b+4>>2]|0;if(!b){b=36;d=25;break}}if((d|0)==25){i=l;return b|0}d=c[b>>2]|0;e=c[b+4>>2]|0;if(!d)c[h>>2]=e;else c[d+4>>2]=e;if(!e)c[f+112>>2]=d;else c[e>>2]=d;if(b)Jd[c[k+8>>2]&255](k,b);b=f+88|0;if((c[b>>2]|0)==(a|0)?(c[b>>2]=0,g=c[h>>2]|0,(g|0)!=0):0)c[b>>2]=c[g+8>>2];b=c[a+8>>2]|0;if(b)Id[b&511](a);b=c[(c[j+12>>2]|0)+60>>2]|0;if(b)Id[b&511](a);b=a+40|0;d=c[b>>2]|0;if(d)Jd[c[k+8>>2]&255](k,d);c[b>>2]=0;Jd[c[k+8>>2]&255](k,a);j=0;i=l;return j|0}function Mh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;if(!(c[a+8>>2]&2)){l=35;i=m;return l|0}if(c[b>>2]|0){l=7;i=m;return l|0}f=c[b+12>>2]|0;h=c[b+4>>2]|0;if(!f)g=h;else g=((ea(h,f)|0)+36|0)/72|0;f=c[b+16>>2]|0;b=c[b+8>>2]|0;if(!f)f=b;else f=((ea(b,f)|0)+36|0)/72|0;j=(h|0)==0;h=(b|0)==0?g:f;k=(j?h:g)+32|0;h=(j?f:h)+32|0;j=c[a+28>>2]|0;if((j|0)<=0){l=23;i=m;return l|0}g=c[a+32>>2]|0;b=d<<24>>24==0;f=0;while(1){if(((c[g+(f<<4)+12>>2]|0)+32^h)>>>0<=63?!(((c[g+(f<<4)+8>>2]|0)+32^k)>>>0>63&b):0)break;f=f+1|0;if((f|0)>=(j|0)){f=23;l=14;break}}if((l|0)==14){i=m;return f|0}if(!e){l=0;i=m;return l|0}c[e>>2]=f;l=0;i=m;return l|0}function Nh(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+4>>2]|0;e=c[a+12>>2]|0;if((e|0)<0)d=(d|0)<(e|0)?e:d;else d=d-((e|0)>0?e:0)|0;if(!b)b=(d*12|0)/10|0;c[a+20>>2]=(c[a+8>>2]|0)-((c[a+16>>2]|0)/2|0);c[a+24>>2]=(b-d|0)/2|0;c[a+28>>2]=b;return}function Oh(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;m=c[a+88>>2]|0;n=m+12|0;e=c[a+32>>2]|0;f=c[e+(d<<4)+8>>2]|0;b[n>>1]=(f+32|0)>>>6;k=c[e+(d<<4)+12>>2]|0;b[m+14>>1]=(k+32|0)>>>6;if(!(c[a+8>>2]&1)){c[m+16>>2]=65536;c[m+20>>2]=65536;c[m+24>>2]=k;c[m+28>>2]=0;c[m+32>>2]=b[e+(d<<4)>>1]<<6;c[m+36>>2]=f;i=o;return}j=b[a+68>>1]|0;l=j&65535;h=(f|0)<0;e=h?0-f|0:f;j=j<<16>>16==0;do if(!j){f=e>>16;d=e<<16;e=l>>>1;if(!f){e=((e|d)>>>0)/(l>>>0)|0;break}e=d+e|0;d=(e>>>0>>0&1)+f|0;if(d>>>0>>0){g=e;f=32;e=0;while(1){e=e<<1;d=d<<1|g>>>31;if(d>>>0>=l>>>0){e=e|1;d=d-l|0}f=f+-1|0;if(!f)break;else g=g<<1}}else e=2147483647}else e=2147483647;while(0);c[m+16>>2]=h?0-e|0:e;h=(k|0)<0;e=h?0-k|0:k;do if(!j){f=e>>16;d=e<<16;e=l>>>1;if(!f){e=((e|d)>>>0)/(l>>>0)|0;break}e=d+e|0;d=(e>>>0>>0&1)+f|0;if(d>>>0>>0){f=e;g=32;e=0;while(1){e=e<<1;d=d<<1|f>>>31;if(d>>>0>=l>>>0){e=e|1;d=d-l|0}g=g+-1|0;if(!g)break;else f=f<<1}}else e=2147483647}else e=2147483647;while(0);c[m+20>>2]=h?0-e|0:e;vr(a,n);i=o;return}function Ph(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;s=c[a+88>>2]|0;t=s+12|0;if(!(c[a+8>>2]&1)){c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t+16>>2]=0;c[t+20>>2]=0;c[t+24>>2]=0;c[s+16>>2]=65536;c[s+20>>2]=65536;i=u;return}r=c[d>>2]|0;a:do switch(r|0){case 2:{g=(c[a+64>>2]|0)-(c[a+56>>2]|0)|0;f=(c[a+60>>2]|0)-(c[a+52>>2]|0)|0;k=11;break}case 1:{f=(b[a+70>>1]|0)-(b[a+72>>1]|0)|0;g=f;k=11;break}case 4:{h=c[d+4>>2]|0;g=s+16|0;c[g>>2]=h;d=c[d+8>>2]|0;f=s+20|0;c[f>>2]=d;if(!h){c[g>>2]=d;h=d;k=48;break a}if(!d){c[f>>2]=h;d=h;g=0;f=0;k=47}else{g=0;f=0;k=47}break}case 3:{g=(b[a+70>>1]|0)-(b[a+72>>1]|0)|0;f=b[a+76>>1]|0;k=11;break}case 0:{f=e[a+68>>1]|0;g=f;k=11;break}default:{g=0;f=0;k=11}}while(0);do if((k|0)==11){o=(f|0)<0?0-f|0:f;q=(g|0)<0?0-g|0:g;f=c[d+12>>2]|0;g=c[d+4>>2]|0;if(!f)f=g;else f=((ea(g,f)|0)+36|0)/72|0;h=c[d+16>>2]|0;l=c[d+8>>2]|0;if(!h)p=l;else p=((ea(l,h)|0)+36|0)/72|0;if(!g){f=(p|0)<0?0-p|0:p;k=p^q;do if(q){g=f>>16;h=f<<16;f=q>>1;if(!g){f=((h+f|0)>>>0)/(q>>>0)|0;break}f=h+f|0;h=(f>>>0>>0&1)+g|0;if(h>>>0>>0){g=f;d=32;f=0;while(1){f=f<<1;h=h<<1|g>>>31;if(h>>>0>=q>>>0){f=f|1;h=h-q|0}d=d+-1|0;if(!d)break;else g=g<<1}}else f=2147483647}else f=2147483647;while(0);h=(k|0)<0?0-f|0:f;c[s+20>>2]=h;c[s+16>>2]=h;d=h;g=p;f=Ug(p,o,q)|0;k=47;break}h=(f|0)<0?0-f|0:f;j=f^o;do if(o){d=h>>16;g=h<<16;h=o>>1;if(!d){h=((g+h|0)>>>0)/(o>>>0)|0;break}h=g+h|0;g=(h>>>0>>0&1)+d|0;if(g>>>0>>0){d=h;k=32;h=0;while(1){h=h<<1;g=g<<1|d>>>31;if(g>>>0>=o>>>0){h=h|1;g=g-o|0}k=k+-1|0;if(!k)break;else d=d<<1}}else h=2147483647}else h=2147483647;while(0);n=(j|0)<0?0-h|0:h;m=s+16|0;c[m>>2]=n;if(!l){c[s+20>>2]=n;d=n;h=n;g=Ug(f,q,o)|0;k=47;break}h=(p|0)<0?0-p|0:p;j=p^q;do if(q){d=h>>16;g=h<<16;h=q>>1;if(!d){h=((g+h|0)>>>0)/(q>>>0)|0;break}h=g+h|0;g=(h>>>0>>0&1)+d|0;if(g>>>0>>0){d=h;k=32;h=0;while(1){h=h<<1;g=g<<1|d>>>31;if(g>>>0>=q>>>0){h=h|1;g=g-q|0}k=k+-1|0;if(!k)break;else d=d<<1}}else h=2147483647}else h=2147483647;while(0);h=(j|0)<0?0-h|0:h;g=s+20|0;c[g>>2]=h;if((r|0)==3)if((h|0)>(n|0)){c[g>>2]=n;h=n;d=n;k=48;break}else{c[m>>2]=h;d=h;g=p;k=47;break}else{d=h;h=n;g=p;k=47}}while(0);if((k|0)==47)if(r)k=48;if((k|0)==48){k=b[a+68>>1]|0;l=k&65535;j=k<<16>>16==0;if(j|(h|0)==65536)f=l;else{g=(h|0)<0;f=g?0-h|0:h;if((k&65535)<2049&f>>>0<1048577)f=((ea(f,l)|0)+32768|0)>>>16;else f=(((ea(f&65535,l)|0)+32768|0)>>>16)+(ea(f>>>16,l)|0)|0;f=g?0-f|0:f}if(j|(d|0)==65536)g=l;else{h=(d|0)<0;g=h?0-d|0:d;if((k&65535)<2049&g>>>0<1048577)g=((ea(g,l)|0)+32768|0)>>>16;else g=(((ea(g&65535,l)|0)+32768|0)>>>16)+(ea(g>>>16,l)|0)|0;g=h?0-g|0:g}}b[t>>1]=(f+32|0)>>>6;b[s+14>>1]=(g+32|0)>>>6;vr(a,t);i=u;return}function Qh(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;do if((a|0)!=0?(c[a+8>>2]&2|0)!=0:0)if((b|0)>=0?(c[a+28>>2]|0)>(b|0):0){d=c[(c[(c[a+96>>2]|0)+12>>2]|0)+92>>2]|0;if(!d){Oh(a,b);d=0;break}else{d=Wd[d&511](c[a+88>>2]|0,b)|0;break}}else d=6;else d=35;while(0);i=e;return d|0}function Rh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;a:do if(a)if((((b|0)!=0?(g=c[b+4>>2]|0,(g|0)>=0):0)?(h=c[b+8>>2]|0,(h|0)>=0):0)?(f=c[b>>2]|0,f>>>0<=4):0){j=c[(c[a+96>>2]|0)+12>>2]|0;d=c[j+88>>2]|0;if(d){d=Wd[d&511](c[a+88>>2]|0,b)|0;break}d=c[a+8>>2]|0;if((d&3|0)!=2){Ph(a,b);d=0;break}if(d&2)if(!f){d=c[b+12>>2]|0;if(!d)e=g;else e=((ea(d,g)|0)+36|0)/72|0;d=c[b+16>>2]|0;if(!d)d=h;else d=((ea(h,d)|0)+36|0)/72|0;b=(g|0)==0;g=(h|0)==0?e:d;f=(b?g:e)+32|0;d=(b?d:g)+32|0;g=c[a+28>>2]|0;if((g|0)>0){b=c[a+32>>2]|0;e=0;while(1){if(((c[b+(e<<4)+12>>2]|0)+32^d)>>>0<=63?((c[b+(e<<4)+8>>2]|0)+32^f)>>>0<=63:0)break;e=e+1|0;if((e|0)>=(g|0)){d=23;break a}}if((e|0)>-1&(g|0)>(e|0)){d=c[j+92>>2]|0;if(!d){Oh(a,e);d=0;break}else{d=Wd[d&511](c[a+88>>2]|0,e)|0;break}}else d=6}else d=23}else d=7;else d=35}else d=6;else d=35;while(0);i=k;return d|0}function Sh(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+32|0;h=j;if(!b){g=d;b=d}else g=(d|0)==0?b:d;if(!e){d=f;e=f}else d=(f|0)==0?e:f;f=(e|0)==0;c[h>>2]=0;c[h+4>>2]=(b|0)<64?64:b;c[h+8>>2]=(g|0)<64?64:g;c[h+12>>2]=f?72:e;c[h+16>>2]=f?72:d;h=Rh(a,h)|0;i=j;return h|0}function Th(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;m=i;if(!a){f=35;i=m;return f|0}if(!g){f=6;i=m;return f|0}h=c[a+96>>2]|0;c[g>>2]=0;l=g+4|0;c[l>>2]=0;h=c[(c[h+12>>2]|0)+76>>2]|0;if(!h){f=0;i=m;return f|0}h=ce[h&255](a,d,e,g)|0;if(!((h|0)==0&(f|0)!=2)){f=h;i=m;return f|0}e=c[g>>2]|0;k=c[a+88>>2]|0;a=c[k+16>>2]|0;if(!((e|0)==0|(a|0)==65536)){h=(e|0)<0?0-e|0:e;d=(a|0)<0?0-a|0:a;if(h>>>0<2049&d>>>0<1048577)h=((ea(d,h)|0)+32768|0)>>>16;else{j=h&65535;h=(ea(d>>>16,j)|0)+(ea(d,h>>>16)|0)+(((ea(d&65535,j)|0)+32768|0)>>>16)|0}e=(a^e|0)<0?0-h|0:h}c[g>>2]=e;h=c[l>>2]|0;j=c[k+20>>2]|0;if(!((h|0)==0|(j|0)==65536)){a=(h|0)<0?0-h|0:h;d=(j|0)<0?0-j|0:j;if(a>>>0<2049&d>>>0<1048577)d=((ea(d,a)|0)+32768|0)>>>16;else{n=a&65535;d=(ea(d>>>16,n)|0)+(ea(d,a>>>16)|0)+(((ea(d&65535,n)|0)+32768|0)>>>16)|0}h=(j^h|0)<0?0-d|0:d}c[l>>2]=h;if((f|0)==1){n=0;i=m;return n|0}d=b[k+12>>1]|0;if((d&65535)<25){e=Ug(e,d&65535,25)|0;c[g>>2]=e}d=b[k+14>>1]|0;if((d&65535)<25){h=Ug(h,d&65535,25)|0;c[l>>2]=h}c[g>>2]=e+32&-64;c[l>>2]=h+32&-64;n=0;i=m;return n|0}function Uh(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;a:do if(a){if(!d){e=6;break}else if((d|0)!=1970170211){e=c[a+40>>2]|0;if(!e){e=38;break}h=c[a+36>>2]|0;g=e+(h<<2)|0;if((h|0)>0)f=e;else{e=6;break}while(1){e=c[f>>2]|0;f=f+4|0;if((c[e+4>>2]|0)==(d|0))break;if(f>>>0>=g>>>0){e=6;break a}}c[a+92>>2]=e;e=0;break}h=c[a+40>>2]|0;if(!h)e=38;else{d=c[a+36>>2]|0;e=d+-1|0;b:do if((e|0)>=0){g=h+(e<<2)|0;c:while(1){e=c[g>>2]|0;do if((c[e+4>>2]|0)==1970170211){f=b[e+8>>1]|0;if(f<<16>>16==3)if((b[e+10>>1]|0)==10)break c;else break;else if(f<<16>>16==0?(b[e+10>>1]|0)==4:0)break c;else break}while(0);g=g+-4|0;if(g>>>0>>0)break b}c[a+92>>2]=e;e=0;break a}while(0);f=h+(d<<2)|0;do{f=f+-4|0;if(f>>>0>>0){e=38;break a}e=c[f>>2]|0}while((c[e+4>>2]|0)!=1970170211);c[a+92>>2]=e;e=0}}else e=35;while(0);i=j;return e|0}function Vh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;j=l;if(!a){b=35;i=l;return b|0}d=c[a+40>>2]|0;if(!d){b=38;i=l;return b|0}if((((((b|0)!=0?(g=c[b>>2]|0,(g|0)!=0):0)?(h=c[g+96>>2]|0,e=c[(c[h>>2]|0)+32>>2]|0,(e|0)!=0):0)?(f=Wd[e&511](h,4488)|0,(f|0)!=0):0)?(Wd[c[f>>2]&511](b,j)|0)==0:0)?(c[j+4>>2]|0)==14:0){b=6;i=l;return b|0}h=c[a+36>>2]|0;e=d+(h<<2)|0;if((h|0)<=0){b=6;i=l;return b|0}while(1){if((c[d>>2]|0)==(b|0))break;d=d+4|0;if(d>>>0>=e>>>0){d=6;k=13;break}}if((k|0)==13){i=l;return d|0}c[a+92>>2]=b;b=0;i=l;return b|0}function Wh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;if((b|0)==0|(e|0)==0){f=6;i=o;return f|0}l=c[e>>2]|0;if(!l){f=6;i=o;return f|0}m=c[l+100>>2]|0;j=c[b>>2]|0;if((j|0)>0){g=Wd[c[m+4>>2]&511](m,j)|0;n=(g|0)==0;k=n?64:0;if(n)g=0;else Cga(g|0,0,j|0)|0}else{g=0;k=j>>31&6}a:do if(!k){c[g+0>>2]=c[e+0>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];n=g+12|0;c[n>>2]=b;k=c[b+4>>2]|0;if(!((k|0)!=0?(h=Wd[k&511](g,d)|0,(h|0)!=0):0)){b=l+36|0;e=c[b>>2]|0;k=e+1|0;l=l+40|0;j=c[l>>2]|0;b:do if((k|e|0)<0)h=6;else{do if(!k)if(!j)h=0;else{Jd[c[m+8>>2]&255](m,j);h=0}else{if((e|0)>536870910){h=10;break b}if(e){h=ce[c[m+12>>2]&255](m,e<<2,k<<2,j)|0;d=(h|0)==0;h=d?j:h;if(d){j=h;h=64;break b}else break}k=k<<2;h=Wd[c[m+4>>2]&511](m,k)|0;j=(h|0)==0;if(j)h=0;else Cga(h|0,0,k|0)|0;if(j){j=h;h=64;break b}}while(0);n=h+(e<<2)|0;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0;c[l>>2]=h;n=c[b>>2]|0;c[b>>2]=n+1;c[h+(n<<2)>>2]=g;h=0;break a}while(0);c[l>>2]=j}k=c[(c[g>>2]|0)+100>>2]|0;j=c[(c[n>>2]|0)+8>>2]|0;if(j)Id[j&511](g);Jd[c[k+8>>2]&255](k,g);g=0}else h=k;while(0);if(!f){f=h;i=o;return f|0}c[f>>2]=g;f=h;i=o;return f|0}function Xh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(((a|0)!=0?(e=c[a+92>>2]|0,(e|0)!=0):0)?(f=a+16|0,(c[f>>2]|0)!=0):0){c[g>>2]=b;a=e+12|0;do b=Wd[c[(c[a>>2]|0)+16>>2]&511](e,g)|0;while(b>>>0>=(c[f>>2]|0)>>>0);a=b;b=(b|0)==0?0:c[g>>2]|0}else{a=0;b=0}if(!d){i=h;return b|0}c[d>>2]=a;i=h;return b|0}function Yh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;if((e|0)!=0&(f|0)!=0)a[e>>0]=0;a:do if(((b|0)!=0?(c[b+16>>2]|0)>=(d|0):0)?(c[b+8>>2]&512|0)!=0:0){k=b+128|0;j=(c[k>>2]|0)+36|0;g=c[j>>2]|0;h=g;do if(!h){g=c[b+96>>2]|0;h=c[(c[g>>2]|0)+32>>2]|0;if(h){g=Wd[h&511](g,4472)|0;c[(c[k>>2]|0)+36>>2]=(g|0)!=0?g:-2;if(!g){g=6;break a}else break}else{c[j>>2]=-2;g=6;break a}}else if((h|0)==-2){g=6;break a}while(0);g=c[g>>2]|0;if(g)g=ce[g&255](b,d,e,f)|0;else g=6}else g=6;while(0);i=l;return g|0}function Zh(a){a=a|0;var b=0,d=0;d=i;if(((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0)?(c[b+96>>2]|0)!=0:0){c[b+88>>2]=a;b=0}else b=6;i=d;return b|0}function _h(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;a:do if(a){a=c[a+148>>2]|0;f=(d|0)!=0;if(f){e=c[d>>2]|0;if(e)a=c[e+4>>2]|0;c[d>>2]=0}if(a){e=a;while(1){a=c[e+8>>2]|0;if((c[a+16>>2]|0)==(b|0))break;e=c[e+4>>2]|0;if(!e){a=0;break a}}if(f)c[d>>2]=e}else a=0}else a=0;while(0);i=g;return a|0}function $h(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;k=b+72|0;f=c[k>>2]|0;a:do if((f|0)==1869968492){l=a+148|0;e=c[l>>2]|0;h=c[a+156>>2]|0;m=9}else if((f|0)==1651078259){a=0;i=n;return a|0}else{l=a+148|0;if(a){e=c[l>>2]|0;if(!e){e=0;h=0;m=9;break}while(1){h=c[e+8>>2]|0;if((c[h+16>>2]|0)==(f|0)){m=6;break}e=c[e+4>>2]|0;if(!e){e=0;h=0;break}}if(!a){e=7;f=0}else{m=9;break}}else{e=7;h=0;f=0}while(1){if(!h)break;e=ce[c[h+60>>2]&255](h,b,d,0)|0;if((e|0)!=0&(e&255|0)==19){h=0;f=1}else{g=1;k=h;break a}}i=n;return e|0}while(0);b:do if((m|0)==9){j=e;e=7;f=0;c:while(1){if(!h)break;e=ce[c[h+60>>2]&255](h,b,d,0)|0;if(!((e|0)!=0&(e&255|0)==19)){g=0;k=h;break b}g=c[k>>2]|0;h=c[((j|0)==0?l:j+4|0)>>2]|0;if(!h){j=0;h=0;f=1;continue}else f=h;while(1){h=c[f+8>>2]|0;if((c[h+16>>2]|0)==(g|0))break;h=c[f+4>>2]|0;if(!h){j=0;h=0;f=1;continue c}else f=h}j=f;f=1}i=n;return e|0}while(0);if(g|((f|0)==0|(e|0)!=0)|(k|0)==0){a=e;i=n;return a|0}f=c[l>>2]|0;if(!f){a=e;i=n;return a|0}while(1){if((c[f+8>>2]|0)==(k|0))break;f=c[f+4>>2]|0;if(!f){m=29;break}}if((m|0)==29){i=n;return e|0}g=c[f>>2]|0;h=f+4|0;j=c[h>>2]|0;if(g){c[g+4>>2]=j;if(!j)c[a+152>>2]=g;else c[j>>2]=g;c[f>>2]=0;m=c[l>>2]|0;c[h>>2]=m;c[m>>2]=f;c[l>>2]=f}if((c[k+16>>2]|0)!=1869968492){a=e;i=n;return a|0}c[a+156>>2]=k;a=e;i=n;return a|0}function ai(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;if(!d){v=33;i=w;return v|0}if(!e){v=6;i=w;return v|0}if((c[e+16>>2]|0)>131077){v=4;i=w;return v|0}q=d+16|0;f=c[q>>2]|0;if(f){h=c[e+8>>2]|0;j=0;do{g=c[d+(j<<2)+20>>2]|0;k=c[g>>2]|0;j=j+1|0;if(!(qga(c[k+8>>2]|0,h)|0)){f=k;p=9;break}}while(j>>>0>>0);do if((p|0)==9)if((c[e+12>>2]|0)>(c[f+12>>2]|0)){bi(d,g)|0;f=c[q>>2]|0;break}else{v=5;i=w;return v|0}while(0);if(f>>>0>31){v=48;i=w;return v|0}else h=d}else h=d;s=c[h>>2]|0;j=c[e+4>>2]|0;if((j|0)>0){g=Wd[c[s+4>>2]&511](s,j)|0;r=(g|0)==0;f=r?64:0;if(r)r=0;else{Cga(g|0,0,j|0)|0;r=g}}else{r=0;f=j>>31&6}if(f){v=f;i=w;return v|0}c[r+4>>2]=d;c[r+8>>2]=s;c[r>>2]=e;f=c[e>>2]|0;a:do if(f&2){h=c[h>>2]|0;f=Wd[c[h+4>>2]&511](h,12)|0;if(!f)m=64;else{k=f+0|0;l=k+12|0;do{a[k>>0]=0;k=k+1|0}while((k|0)<(l|0));j=c[r>>2]|0;c[r+12>>2]=j;k=c[j+36>>2]|0;c[r+16>>2]=k;do if((k|0)==1869968492?(o=j+56|0,n=c[(c[o>>2]|0)+4>>2]|0,(n|0)!=0):0){g=Wd[n&511](h,r+52|0)|0;if(!g){c[r+56>>2]=c[(c[o>>2]|0)+16>>2];c[r+60>>2]=c[j+40>>2];break}else{Jd[c[h+8>>2]&255](h,f);m=g;break a}}while(0);c[f+8>>2]=r;g=d+152|0;h=c[g>>2]|0;c[f+4>>2]=0;c[f>>2]=h;if(!h){c[d+148>>2]=f;c[g>>2]=f}else{c[h+4>>2]=f;c[g>>2]=f;f=c[d+148>>2]|0}b:do if(!f)f=0;else{g=f;while(1){f=c[g+8>>2]|0;if((c[f+16>>2]|0)==1869968492)break;g=c[g+4>>2]|0;if(!g){f=0;break b}}}while(0);c[d+156>>2]=f;g=c[r>>2]|0;f=c[g>>2]|0;p=32}}else{g=e;p=32}while(0);do if((p|0)==32){if(f&4)c[d+160>>2]=r;if((f&1|0)!=0?(c[r+12>>2]=g,(f&512|0)==0):0){f=Wd[c[s+4>>2]&511](s,96)|0;if(!f){m=64;break}g=r+24|0;k=f+0|0;l=k+96|0;do{a[k>>0]=0;k=k+1|0}while((k|0)<(l|0));c[f>>2]=s;c[g>>2]=f}f=c[e+24>>2]|0;if((f|0)!=0?(m=Ld[f&511](r)|0,(m|0)!=0):0)break;v=c[q>>2]|0;c[q>>2]=v+1;c[d+(v<<2)+20>>2]=r;v=0;i=w;return v|0}while(0);f=c[c[r>>2]>>2]|0;if((f&513|0)==1?(t=c[r+24>>2]|0,(t|0)!=0):0){j=c[t>>2]|0;f=t+24|0;g=c[f>>2]|0;if(g)Jd[c[j+8>>2]&255](j,g);c[f>>2]=0;f=t+28|0;g=c[f>>2]|0;if(g)Jd[c[j+8>>2]&255](j,g);c[f>>2]=0;f=t+32|0;g=c[f>>2]|0;if(g)Jd[c[j+8>>2]&255](j,g);c[f>>2]=0;f=t+40|0;g=c[f>>2]|0;if(g)Jd[c[j+8>>2]&255](j,g);c[f>>2]=0;g=t+52|0;f=c[g>>2]|0;if(!f)h=j+8|0;else{h=j+8|0;Jd[c[h>>2]&255](j,f)}c[g>>2]=0;c[t+44>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;f=t+20|0;b[t+22>>1]=0;b[f>>1]=0;c[t+48>>2]=0;k=t+56|0;f=f+0|0;l=k+36|0;do{c[k>>2]=c[f>>2];k=k+4|0;f=f+4|0}while((k|0)<(l|0));Jd[c[h>>2]&255](j,t);f=c[c[r>>2]>>2]|0}if((((f&2|0)!=0?(u=c[r+12>>2]|0,(u|0)!=0):0)?(c[u+36>>2]|0)==1869968492:0)?(v=c[r+52>>2]|0,(v|0)!=0):0)Id[c[(c[u+56>>2]|0)+20>>2]&511](v);if(!r){v=m;i=w;return v|0}Jd[c[s+8>>2]&255](s,r);v=m;i=w;return v|0}function bi(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;if(!a){d=33;i=t;return d|0}if(!d){d=34;i=t;return d|0}g=a+16|0;j=c[g>>2]|0;h=a+(j<<2)+20|0;if((j|0)<=0){d=34;i=t;return d|0}e=a+20|0;while(1){if((c[e>>2]|0)==(d|0))break;e=e+4|0;if(e>>>0>=h>>>0){e=34;k=57;break}}if((k|0)==57){i=t;return e|0}h=j+-1|0;c[g>>2]=h;h=a+(h<<2)+20|0;if(e>>>0>>0)do{r=e;e=e+4|0;c[r>>2]=c[e>>2]}while(e>>>0>>0);c[h>>2]=0;k=d+8|0;r=c[k>>2]|0;q=c[d>>2]|0;j=c[d+4>>2]|0;a=(j|0)==0;if(!a?(l=j+160|0,(c[l>>2]|0)==(d|0)):0)c[l>>2]=0;e=c[q>>2]|0;a:do if((e&2|0)!=0?(o=c[j>>2]|0,p=j+148|0,m=c[p>>2]|0,(m|0)!=0):0){h=m;while(1){if((c[h+8>>2]|0)==(d|0)){g=h;break}h=c[h+4>>2]|0;if(!h)break a}e=c[d+12>>2]|0;if((c[e+36>>2]|0)==1869968492?(n=c[d+52>>2]|0,(n|0)!=0):0)Id[c[(c[e+56>>2]|0)+20>>2]&511](n);e=c[g>>2]|0;h=c[g+4>>2]|0;if(!e)c[p>>2]=h;else c[e+4>>2]=h;if(!h)c[j+152>>2]=e;else c[h>>2]=e;if(g)Jd[c[o+8>>2]&255](o,g);b:do if(!a?(f=c[p>>2]|0,(f|0)!=0):0)while(1){e=c[f+8>>2]|0;if((c[e+16>>2]|0)==1869968492)break;f=c[f+4>>2]|0;if(!f){e=0;break b}}else e=0;while(0);c[j+156>>2]=e;e=c[c[d>>2]>>2]|0}while(0);if(e&1){g=c[k>>2]|0;j=d+16|0;f=c[j>>2]|0;if(f){h=g+8|0;do{e=f;f=c[f+4>>2]|0;ur(g,c[e+8>>2]|0,d);if(e)Jd[c[h>>2]&255](g,e)}while((f|0)!=0);e=c[c[d>>2]>>2]|0}c[j>>2]=0;c[d+20>>2]=0;if((e&512|0)==0?(s=c[d+24>>2]|0,(s|0)!=0):0){a=c[s>>2]|0;e=s+24|0;f=c[e>>2]|0;if(f)Jd[c[a+8>>2]&255](a,f);c[e>>2]=0;e=s+28|0;f=c[e>>2]|0;if(f)Jd[c[a+8>>2]&255](a,f);c[e>>2]=0;e=s+32|0;f=c[e>>2]|0;if(f)Jd[c[a+8>>2]&255](a,f);c[e>>2]=0;e=s+40|0;f=c[e>>2]|0;if(f)Jd[c[a+8>>2]&255](a,f);c[e>>2]=0;f=s+52|0;e=c[f>>2]|0;if(!e)h=a+8|0;else{h=a+8|0;Jd[c[h>>2]&255](a,e)}c[f>>2]=0;c[s+44>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;f=s+20|0;b[s+22>>1]=0;b[f>>1]=0;c[s+48>>2]=0;e=s+56|0;f=f+0|0;g=e+36|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));Jd[c[h>>2]&255](a,s)}}e=c[q+28>>2]|0;if(e)Id[e&511](d);Jd[c[r+8>>2]&255](r,d);d=0;i=t;return d|0}function ci(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;a:do if((a|0)!=0&(b|0)!=0?(d=c[a+16>>2]|0,e=a+(d<<2)+20|0,(d|0)>0):0){d=a+20|0;while(1){a=c[d>>2]|0;d=d+4|0;if(!(qga(c[(c[a>>2]|0)+8>>2]|0,b)|0))break a;if(d>>>0>=e>>>0){a=0;break}}}else a=0;while(0);i=f;return a|0}function di(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;a:do if((a|0)!=0&(b|0)!=0?(e=c[a+16>>2]|0,f=a+(e<<2)+20|0,(e|0)>0):0){e=a+20|0;while(1){d=c[e>>2]|0;a=c[d>>2]|0;e=e+4|0;if(!(qga(c[a+8>>2]|0,b)|0))break;if(e>>>0>=f>>>0){a=0;break a}}if(d)a=c[a+20>>2]|0;else a=0}else a=0;while(0);i=g;return a|0}function ei(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;a:do if(a){e=c[(c[a>>2]|0)+32>>2]|0;if((e|0)!=0?(d=Wd[e&511](a,b)|0,(d|0)!=0):0)break;d=c[a+4>>2]|0;e=c[d+16>>2]|0;f=d+(e<<2)+20|0;if((e|0)>0){e=d+20|0;while(1){d=c[e>>2]|0;if(((d|0)!=(a|0)?(g=c[(c[d>>2]|0)+32>>2]|0,(g|0)!=0):0)?(h=Wd[g&511](d,b)|0,(h|0)!=0):0){d=h;break a}e=e+4|0;if(e>>>0>=f>>>0){d=0;break}}}else d=0}else d=0;while(0);i=j;return d|0}function fi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;if(!a){a=6;i=g;return a|0}d=a+4|0;f=Wd[c[d>>2]&511](a,192)|0;if(!f){a=64;i=g;return a|0}Cga(f|0,0,192)|0;c[f>>2]=a;c[f+168>>2]=16384;d=Wd[c[d>>2]&511](a,16384)|0;e=(d|0)==0;if(e){c[f+164>>2]=0;Jd[c[a+8>>2]&255](a,f);a=e?64:0;i=g;return a|0}else{Cga(d|0,0,16384)|0;c[f+164>>2]=d;c[f+4>>2]=2;c[f+8>>2]=5;c[f+12>>2]=0;c[f+188>>2]=1;c[b>>2]=f;a=0;i=g;return a|0}return 0}function gi(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;if(!a){a=33;i=v;return a|0}t=a+188|0;u=(c[t>>2]|0)+-1|0;c[t>>2]=u;if((u|0)>0){a=0;i=v;return a|0}u=c[a>>2]|0;t=a+16|0;b=c[t>>2]|0;d=b;r=0;do{if(!d)d=0;else{h=(r|0)==0;g=4512+(r<<2)|0;j=0;while(1){b=c[a+(j<<2)+20>>2]|0;if(h){d=c[b>>2]|0;if(!(qga(c[d+8>>2]|0,c[g>>2]|0)|0)){k=d;s=10}}else{k=c[b>>2]|0;s=10}if(((s|0)==10?(s=0,(c[k>>2]&1|0)!=0):0)?(l=b+16|0,m=c[l>>2]|0,(m|0)!=0):0){b=m;do{f=c[b+8>>2]|0;a:do if((((f|0)!=0?(n=c[f+96>>2]|0,(n|0)!=0):0)?(d=(c[f+128>>2]|0)+56|0,e=(c[d>>2]|0)+-1|0,c[d>>2]=e,(e|0)<=0):0)?(o=c[n+8>>2]|0,p=n+16|0,q=c[p>>2]|0,(q|0)!=0):0){b=q;while(1){if((c[b+8>>2]|0)==(f|0))break;b=c[b+4>>2]|0;if(!b)break a}d=c[b>>2]|0;e=c[b+4>>2]|0;if(!d)c[p>>2]=e;else c[d+4>>2]=e;if(!e)c[n+20>>2]=d;else c[e>>2]=d;if(b)Jd[c[o+8>>2]&255](o,b);ur(o,f,n)}while(0);b=c[l>>2]|0}while((b|0)!=0)}j=j+1|0;d=c[t>>2]|0;if(j>>>0>=d>>>0){b=d;break}}}r=r+1|0}while((r|0)!=2);if(b)do{bi(a,c[a+(b+-1<<2)+20>>2]|0)|0;b=c[t>>2]|0}while((b|0)!=0);b=a+164|0;d=c[b>>2]|0;if(d)Jd[c[u+8>>2]&255](u,d);c[b>>2]=0;c[a+168>>2]=0;Jd[c[u+8>>2]&255](u,a);a=0;i=v;return a|0}function hi(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;T=i;i=i+64|0;L=T+16|0;N=T;O=T+56|0;P=T+8|0;M=T+24|0;Q=T+32|0;R=T+40|0;S=T+48|0;if(!((e|0)!=0&(f|0)!=0)){P=6;i=T;return P|0}G=c[f+16>>2]|0;H=c[f+20>>2]|0;if((b[e>>1]|0)<=0){P=0;i=T;return P|0}I=e+12|0;J=e+4|0;t=N+4|0;u=e+8|0;v=f+4|0;w=Q+4|0;x=R+4|0;y=S+4|0;z=f+12|0;A=O+4|0;B=L+4|0;C=P+4|0;D=M+4|0;E=f+8|0;j=0;K=0;a:while(1){s=b[(c[I>>2]|0)+(K<<1)>>1]|0;F=s<<16>>16;if(s<<16>>16<0){h=20;j=29;break}r=c[J>>2]|0;h=r+(F<<3)|0;l=r+(j<<3)|0;m=c[l>>2]|0;l=c[l+4>>2]|0;n=N;c[n>>2]=m;c[n+4>>2]=l;c[N>>2]=(m<>2]=l;m=(c[r+(F<<3)>>2]<>2]<>2]|0;k=c[k+4>>2]|0;q=L;c[q>>2]=o;c[q+4>>2]=k;q=c[u>>2]|0;k=q+j|0;p=d[k>>0]&3;if((p|0)==2){h=20;j=29;break}else if(!p){if((a[q+F>>0]&3)==1){c[N>>2]=m;c[t>>2]=n;h=r+(F+-1<<3)|0}else{c[N>>2]=(o+m|0)/2|0;c[t>>2]=(l+n|0)/2|0}k=j+-1|0;j=k;s=h;k=q+k|0}else s=h;j=r+(j<<3)|0;h=Wd[c[f>>2]&511](N,g)|0;if(h){j=29;break}b:do if(j>>>0>>0){p=k;c:while(1){l=j+8|0;q=p+1|0;h=d[q>>0]&3;if(!h){h=(c[l>>2]<>2]=h;k=(c[j+12>>2]<>2]=k;if(l>>>0>>0){r=j;m=k;o=l}else{j=20;break}while(1){j=r+16|0;k=p+2|0;p=d[k>>0]&3;n=(c[j>>2]<>2]=n;l=(c[r+20>>2]<>2]=l;if((p|0)==1)break;else if(p){h=20;j=29;break a}c[M>>2]=(n+h|0)/2|0;c[D>>2]=(l+m|0)/2|0;h=Od[c[E>>2]&255](L,M,g)|0;if(h){j=29;break a}m=P;h=c[m>>2]|0;m=c[m+4>>2]|0;r=L;c[r>>2]=h;c[r+4>>2]=m;if(j>>>0>=s>>>0){j=20;break c}else{p=q;r=o;o=j;q=k}}h=Od[c[E>>2]&255](L,P,g)|0;if(!h)h=k;else{j=29;break a}}else if((h|0)==1){c[O>>2]=(c[l>>2]<>2]=(c[j+12>>2]<>2]&511](O,g)|0;if(!h){j=l;h=q}else{j=29;break a}}else{if((j+16|0)>>>0>s>>>0){h=20;j=29;break a}if((a[p+2>>0]&3)!=2){h=20;j=29;break a}k=j+24|0;c[Q>>2]=(c[j+8>>2]<>2]=(c[j+12>>2]<>2]=(c[j+16>>2]<>2]=(c[j+20>>2]<>>0>s>>>0){j=25;break}c[S>>2]=(c[k>>2]<>2]=(c[j+28>>2]<>2]&255](Q,R,S,g)|0;if(!h){j=k;h=p+3|0}else{j=29;break a}}if(j>>>0>>0)p=h;else{j=26;break b}}if((j|0)==20){j=0;h=Od[c[E>>2]&255](L,N,g)|0;break}else if((j|0)==25){j=0;h=ce[c[z>>2]&255](Q,R,N,g)|0;break}}else j=26;while(0);if((j|0)==26)h=Wd[c[v>>2]&511](N,g)|0;if(h){j=29;break}K=K+1|0;if((K|0)>=(b[e>>1]|0)){h=0;j=29;break}else j=F+1|0}if((j|0)==29){i=T;return h|0}return 0}function ii(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;if(!((f|0)!=0&(a|0)!=0)){f=6;i=n;return f|0};c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;if((e|0)<0|e>>>0>d>>>0){f=6;i=n;return f|0}if(d>>>0>32767){f=10;i=n;return f|0}j=(d|0)==0;do if(!j){k=d<<3;g=Wd[c[a+4>>2]&511](a,k)|0;h=(g|0)==0;if(h)g=0;else Cga(g|0,0,k|0)|0;if(h){h=f+4|0;c[h>>2]=g;j=64;break}else{Cga(g|0,0,k|0)|0;m=9;break}}else{g=0;m=9}while(0);a:do if((m|0)==9){h=f+4|0;c[h>>2]=g;do if(!j){j=(d|0)>0;if(!j){g=d>>31&6;c[f+8>>2]=0;if(!g)break;else{j=g;break a}}g=Wd[c[a+4>>2]&511](a,d)|0;k=(g|0)==0;if(k)g=0;else Cga(g|0,0,d|0)|0;if(!(j&(k^1))){c[f+8>>2]=g;if(k){j=64;break a}else break}else{Cga(g|0,0,d|0)|0;m=17;break}}else{g=0;m=17}while(0);if((m|0)==17)c[f+8>>2]=g;do if(e){if((e|0)>1073741823){c[f+12>>2]=0;j=10;break a}k=e<<1;j=(e|0)>0;if(!j){g=e>>30&6;c[f+12>>2]=0;if(!g)break;else{j=g;break a}}g=Wd[c[a+4>>2]&511](a,k)|0;l=(g|0)==0;if(l)g=0;else Cga(g|0,0,k|0)|0;if(!(j&(l^1))){c[f+12>>2]=g;if(l){j=64;break a}else break}else{Cga(g|0,0,k|0)|0;m=27;break}}else{g=0;m=27}while(0);if((m|0)==27)c[f+12>>2]=g;b[f+2>>1]=d;b[f>>1]=e;f=f+16|0;c[f>>2]=c[f>>2]|1;f=0;i=n;return f|0}while(0);g=f+16|0;c[g>>2]=c[g>>2]|1;g=c[h>>2]|0;if(g)Jd[c[a+8>>2]&255](a,g);c[h>>2]=0;g=f+8|0;h=c[g>>2]|0;if(h)Jd[c[a+8>>2]&255](a,h);c[g>>2]=0;g=c[f+12>>2]|0;if(g)Jd[c[a+8>>2]&255](a,g);c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;f=j;i=n;return f|0}function ji(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if(!a){d=33;i=f;return d|0}d=ii(c[a>>2]|0,b,d,e)|0;i=f;return d|0}function ki(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=i;if(!((a|0)!=0&(d|0)!=0)){a=6;i=g;return a|0}e=a+2|0;f=b[e>>1]|0;if(f<<16>>16!=(b[d+2>>1]|0)){a=6;i=g;return a|0}if((b[a>>1]|0)!=(b[d>>1]|0)){a=6;i=g;return a|0}if((a|0)==(d|0)){a=0;i=g;return a|0}Aga(c[d+4>>2]|0,c[a+4>>2]|0,f<<16>>16<<3|0)|0;Aga(c[d+8>>2]|0,c[a+8>>2]|0,b[e>>1]|0)|0;Aga(c[d+12>>2]|0,c[a+12>>2]|0,b[a>>1]<<1|0)|0;d=d+16|0;c[d>>2]=c[a+16>>2]&-2|c[d>>2]&1;a=0;i=g;return a|0}function li(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;if(!a){e=33;i=f;return e|0}e=c[a>>2]|0;if(!((e|0)!=0&(b|0)!=0)){e=6;i=f;return e|0}if(c[b+16>>2]&1){a=b+4|0;d=c[a>>2]|0;if(d)Jd[c[e+8>>2]&255](e,d);c[a>>2]=0;a=b+8|0;d=c[a>>2]|0;if(d)Jd[c[e+8>>2]&255](e,d);c[a>>2]=0;a=b+12|0;d=c[a>>2]|0;if(d)Jd[c[e+8>>2]&255](e,d);c[a>>2]=0};c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;e=0;i=f;return e|0}function mi(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;if(!((a|0)!=0&(d|0)!=0)){i=m;return}e=b[a+2>>1]|0;if(e<<16>>16){a=c[a+4>>2]|0;l=a+(e<<16>>16<<3)|0;f=c[a>>2]|0;h=c[a+4>>2]|0;if(e<<16>>16>1){j=a;k=a+8|0;g=f;e=h;a=h;while(1){n=c[j+8>>2]|0;h=(n|0)<(f|0)?n:f;g=(n|0)>(g|0)?n:g;f=c[j+12>>2]|0;a=(f|0)<(a|0)?f:a;e=(f|0)>(e|0)?f:e;f=j+16|0;if(f>>>0>>0){j=k;k=f;f=h}else{f=h;break}}}else{g=f;e=h;a=h}}else{g=0;f=0;e=0;a=0}c[d>>2]=f;c[d+8>>2]=g;c[d+4>>2]=a;c[d+12>>2]=e;i=m;return}function ni(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;if(!a){n=0;i=o;return n|0}d=b[a+2>>1]|0;if(d<<16>>16<1){n=0;i=o;return n|0}n=c[a+4>>2]|0;l=n+(d<<16>>16<<3)|0;e=c[n>>2]|0;h=c[n+4>>2]|0;if(d<<16>>16>1){j=n;k=n+8|0;f=e;d=e;g=h;e=h;while(1){m=c[j+8>>2]|0;d=(m|0)<(d|0)?m:d;f=(m|0)>(f|0)?m:f;m=c[j+12>>2]|0;h=(m|0)<(e|0)?m:e;g=(m|0)>(g|0)?m:g;e=j+16|0;if(e>>>0>>0){j=k;k=e;e=h}else{j=h;break}}}else{f=e;d=e;g=h;j=h}d=((d|0)<0?0-d|0:d)|((f|0)<0?0-f|0:f);e=d>>>0>65535;d=e?d>>>16:d;e=e?16:0;if(d>>>0>255){d=d>>>8;e=e|8}if(d>>>0>15){d=d>>>4;e=e+4|0}if(d>>>0>3){d=d>>>2;e=e+2|0}m=e+-14+(d>>>0>1&1)|0;m=(m|0)>0?m:0;d=g-j|0;e=d>>>0>65535;d=e?d>>>16:d;e=e?16:0;if(d>>>0>255){d=d>>>8;e=e|8}if(d>>>0>15){d=d>>>4;e=e+4|0}if(d>>>0>3){d=d>>>2;e=e+2|0}l=e+-14+(d>>>0>1&1)|0;l=(l|0)>0?l:0;d=b[a>>1]|0;if(d<<16>>16>0){k=c[a+12>>2]|0;j=d<<16>>16;d=0;a=0;e=0;while(1){h=b[k+(a<<1)>>1]|0;if((e|0)<=(h|0)){f=c[n+(h<<3)>>2]|0;g=c[n+(h<<3)+4>>2]|0;while(1){p=f;f=c[n+(e<<3)>>2]|0;q=g;g=c[n+(e<<3)+4>>2]|0;d=(ea(g-q>>l,f+p>>m)|0)+d|0;if((e|0)>=(h|0))break;else e=e+1|0}}a=a+1|0;if((a|0)>=(j|0))break;else e=h+1|0}if((d|0)>0){q=1;i=o;return q|0}}else d=0;q=(d>>31)+2&-2;i=o;return q|0}function oi(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;o=s+32|0;l=s;m=s+16|0;n=e+20|0;b=c[n>>2]|0;do if(!b){b=c[e+4>>2]|0;if(b>>>0>>0){g=85;i=s;return g|0}}else if(!(ce[b&255](e,f,0,0)|0)){b=c[e+4>>2]|0;break}else{g=85;i=s;return g|0}while(0);q=e+8|0;c[q>>2]=f;p=e+4|0;if(b>>>0<=f>>>0){g=85;i=s;return g|0}j=c[n>>2]|0;if(!j){b=b-f|0;b=b>>>0>16?16:b;Aga(l|0,(c[e>>2]|0)+f|0,b|0)|0}else b=ce[j&255](e,f,l,16)|0;c[q>>2]=b+f;if(b>>>0<16){g=85;i=s;return g|0}k=(d[l+1>>0]<<16|d[l>>0]<<24|d[l+2>>0]<<8|d[l+3>>0])+f|0;c[h>>2]=k;h=d[l+5>>0]<<16|d[l+4>>0]<<24|d[l+6>>0]<<8|d[l+7>>0];b=h+f|0;if((h|0)==0?1:((d[l+9>>0]<<16|d[l+8>>0]<<24|d[l+10>>0]<<8|d[l+11>>0])+k|0)!=(b|0)){g=2;i=s;return g|0}h=c[n>>2]|0;do if(!h){h=c[p>>2]|0;if(h>>>0>>0){g=85;i=s;return g|0}}else if(!(ce[h&255](e,b,0,0)|0)){h=c[p>>2]|0;break}else{g=85;i=s;return g|0}while(0);c[q>>2]=b;a[m+15>>0]=(d[l+15>>0]|0)+1;if(h>>>0<=b>>>0){g=85;i=s;return g|0}j=c[n>>2]|0;if(!j){j=h-b|0;j=j>>>0>16?16:j;Aga(m|0,(c[e>>2]|0)+b|0,j|0)|0}else j=ce[j&255](e,b,m,16)|0;k=j+b|0;c[q>>2]=k;if(j>>>0<16){g=85;i=s;return g|0}else{j=1;h=1;f=0}do{t=a[m+f>>0]|0;h=t<<24>>24==0?h:0;j=t<<24>>24==(a[l+f>>0]|0)?j:0;f=f+1|0}while((f|0)!=16);if(!(j|h)){t=2;i=s;return t|0}h=k+8|0;f=c[n>>2]|0;if(!f)if((c[p>>2]|0)>>>0>>0)f=k;else r=26;else if(!(ce[f&255](e,h,0,0)|0))r=26;else f=c[q>>2]|0;if((r|0)==26){c[q>>2]=h;f=h}if((f+1|0)>>>0>=(c[p>>2]|0)>>>0){t=85;i=s;return t|0}h=c[n>>2]|0;do if(!h){h=(c[e>>2]|0)+f|0;if(!h){c[q>>2]=f+2;r=35}else{j=0;r=33}}else if((ce[h&255](e,f,o,2)|0)==2){f=c[q>>2]|0;j=c[n>>2]|0;h=o;r=33;break}else{t=85;i=s;return t|0}while(0);if((r|0)==33){t=d[h>>0]<<8|d[h+1>>0];c[q>>2]=f+2;b=t+b|0;if(j){if(ce[j&255](e,b,0,0)|0){t=85;i=s;return t|0}}else r=35}if((r|0)==35)if((c[p>>2]|0)>>>0>>0){t=85;i=s;return t|0}c[q>>2]=b;c[g>>2]=b;t=0;i=s;return t|0}function pi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;g=a+8|0;h=c[g>>2]|0;e=c[a+4>>2]|0;if(e>>>0<=h>>>0){d=85;i=j;return d|0}f=c[a+20>>2]|0;if(!f){e=e-h|0;e=e>>>0>d>>>0?d:e;Aga(b|0,(c[a>>2]|0)+h|0,e|0)|0}else e=ce[f&255](a,h,b,d)|0;c[g>>2]=e+h;d=e>>>0>>0?85:0;i=j;return d|0}function qi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;do if((b|0)<0)b=85;else{e=a+8|0;b=(c[e>>2]|0)+b|0;d=c[a+20>>2]|0;if(!d){if((c[a+4>>2]|0)>>>0>>0){b=85;break}}else if(ce[d&255](a,b,0,0)|0){b=85;break}c[e>>2]=b;b=0}while(0);i=f;return b|0}function ri(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;e=k;c[b>>2]=0;h=a+8|0;f=c[h>>2]|0;do if((f+1|0)>>>0<(c[a+4>>2]|0)>>>0){g=c[a+20>>2]|0;if(!g){e=(c[a>>2]|0)+f|0;if(!e)e=0;else j=6}else{if((ce[g&255](a,f,e,2)|0)!=2)break;f=c[h>>2]|0;j=6}if((j|0)==6)e=((d[e>>0]|0)<<8|(d[e+1>>0]|0))&65535;c[h>>2]=f+2;j=e;i=k;return j|0}while(0);c[b>>2]=85;j=0;i=k;return j|0}function si(a,e,f,g,h,j,k){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+16|0;w=z+4|0;v=z;y=c[a>>2]|0;u=e+20|0;a=c[u>>2]|0;do if(!a){a=c[e+4>>2]|0;if(a>>>0>>0){y=85;i=z;return y|0}}else if(!(ce[a&255](e,f,0,0)|0)){a=c[e+4>>2]|0;break}else{y=85;i=z;return y|0}while(0);t=e+8|0;c[t>>2]=f;s=e+4|0;if((f+1|0)>>>0>=a>>>0){y=85;i=z;return y|0}a=c[u>>2]|0;do if(!a){a=(c[e>>2]|0)+f|0;if(!a){r=e;l=f;q=1}else{m=f;l=e;x=10}}else if((ce[a&255](e,f,v,2)|0)==2){m=c[t>>2]|0;l=e;a=v;x=10;break}else{y=85;i=z;return y|0}while(0);if((x|0)==10){r=l;l=m;q=((d[a>>0]|0)<<8|(d[a+1>>0]|0))+1|0}m=l+2|0;c[t>>2]=m;p=0;while(1){n=c[s>>2]|0;if((m+3|0)>>>0>=n>>>0){a=85;x=77;break}a=c[u>>2]|0;if(!a){l=(c[r>>2]|0)+m|0;if(!l){a=m;o=0}else{a=m;x=18}}else{if((ce[a&255](e,m,w,4)|0)!=4){a=85;x=77;break}a=c[t>>2]|0;n=c[s>>2]|0;l=w;x=18}if((x|0)==18){x=0;o=(d[l+1>>0]|0)<<16|(d[l>>0]|0)<<24|(d[l+2>>0]|0)<<8|(d[l+3>>0]|0)}l=a+4|0;c[t>>2]=l;if((a+5|0)>>>0>=n>>>0){a=85;x=77;break}a=c[u>>2]|0;if(!a){m=(c[r>>2]|0)+l|0;if(!m){a=l;l=1}else{a=l;x=24}}else{if((ce[a&255](e,l,v,2)|0)!=2){a=85;x=77;break}a=c[t>>2]|0;n=c[s>>2]|0;m=v;x=24}if((x|0)==24){x=0;l=((d[m>>0]|0)<<8|(d[m+1>>0]|0))+1|0}m=a+2|0;c[t>>2]=m;if((a+3|0)>>>0>=n>>>0){a=85;x=77;break}a=c[u>>2]|0;if(!a){n=(c[r>>2]|0)+m|0;if(!n)a=0;else{a=m;x=30}}else{if((ce[a&255](e,m,v,2)|0)!=2){a=85;x=77;break}a=c[t>>2]|0;n=v;x=30}if((x|0)==30){x=0;m=a;a=(d[n>>0]|0)<<8|(d[n+1>>0]|0)}m=m+2|0;c[t>>2]=m;p=p+1|0;if((o|0)==(h|0)){x=32;break}if((p|0)>=(q|0)){a=1;x=77;break}}if((x|0)==32){c[k>>2]=l;a=a+f|0;l=c[u>>2]|0;if(!l){if((c[s>>2]|0)>>>0>>0){y=85;i=z;return y|0}}else if(ce[l&255](e,a,0,0)|0){y=85;i=z;return y|0}c[t>>2]=a;a=c[k>>2]|0;if((a|0)<0){y=6;i=z;return y|0}do if(a){if((a|0)>268435455){y=10;i=z;return y|0}l=a<<3;a=Wd[c[y+4>>2]&511](y,l)|0;m=(a|0)==0;if(m)a=0;else Cga(a|0,0,l|0)|0;if(m){y=64;i=z;return y|0}else{Cga(a|0,0,l|0)|0;p=a;break}}else p=0;while(0);a=c[k>>2]|0;a:do if((a|0)>0){m=c[t>>2]|0;a=0;while(1){if((m+1|0)>>>0>=(c[s>>2]|0)>>>0)break;l=c[u>>2]|0;if(!l){l=(c[r>>2]|0)+m|0;if(!l){n=0;l=0}else{n=0;x=49}}else{if((ce[l&255](e,m,v,2)|0)!=2)break;m=c[t>>2]|0;n=c[u>>2]|0;l=v;x=49}if((x|0)==49){x=0;l=((d[l>>0]|0)<<8|(d[l+1>>0]|0))&65535}c[t>>2]=m+2;b[p+(a<<3)>>1]=l;o=m+4|0;if(!n){l=c[s>>2]|0;if(l>>>0>>0){a=85;break a}}else{if(ce[n&255](e,o,0,0)|0){a=85;break a}l=c[s>>2]|0}c[t>>2]=o;if((m+7|0)>>>0>=l>>>0){a=85;break a}l=c[u>>2]|0;if(!l){l=(c[r>>2]|0)+o|0;if(!l){c[t>>2]=m+8;m=m+12|0;l=0;x=63}else{m=o;n=0;x=61}}else{if((ce[l&255](e,o,w,4)|0)!=4){a=85;break a}m=c[t>>2]|0;n=c[u>>2]|0;l=w;x=61}if((x|0)==61){x=0;l=(d[l+2>>0]|0)<<8|(d[l+1>>0]|0)<<16|(d[l+3>>0]|0);c[t>>2]=m+4;m=m+8|0;if(n){if(ce[n&255](e,m,0,0)|0){a=85;break a}}else x=63}if((x|0)==63){x=0;if((c[s>>2]|0)>>>0>>0){a=85;break a}}c[t>>2]=m;c[p+(a<<3)+4>>2]=l;a=a+1|0;l=c[k>>2]|0;if((a|0)>=(l|0)){a=l;x=65;break a}}b[p+(a<<3)>>1]=0;a=85}else x=65;while(0);do if((x|0)==65){bea(p,a,8,189);a=c[k>>2]|0;if((a|0)<0)a=6;else{if(!a)a=0;else{if((a|0)>536870911){a=10;break}l=a<<2;a=Wd[c[y+4>>2]&511](y,l)|0;m=(a|0)==0;if(m)a=0;else Cga(a|0,0,l|0)|0;if(m){a=64;break}Cga(a|0,0,l|0)|0}if((c[k>>2]|0)>0){l=0;do{c[a+(l<<2)>>2]=(c[p+(l<<3)+4>>2]|0)+g;l=l+1|0}while((l|0)<(c[k>>2]|0))}c[j>>2]=a;a=0}}while(0);if(!p){y=a;i=z;return y|0}Jd[c[y+8>>2]&255](y,p);y=a;i=z;return y|0}else if((x|0)==77){i=z;return a|0}return 0}function ti(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;e=k;c[b>>2]=0;h=a+8|0;f=c[h>>2]|0;do if((f+3|0)>>>0<(c[a+4>>2]|0)>>>0){g=c[a+20>>2]|0;if(!g){e=(c[a>>2]|0)+f|0;if(!e)e=0;else j=6}else{if((ce[g&255](a,f,e,4)|0)!=4)break;f=c[h>>2]|0;j=6}if((j|0)==6)e=(d[e+1>>0]|0)<<16|(d[e>>0]|0)<<24|(d[e+2>>0]|0)<<8|(d[e+3>>0]|0);c[h>>2]=f+4;j=e;i=k;return j|0}while(0);c[b>>2]=85;j=0;i=k;return j|0}function ui(a){a=a|0;return c[a+8>>2]|0}function vi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;f=c[a+4>>2]|0;if(f>>>0<=b>>>0){a=85;i=h;return a|0}g=c[a+20>>2]|0;if(!g){f=f-b|0;f=f>>>0>e>>>0?e:f;Aga(d|0,(c[a>>2]|0)+b|0,f|0)|0}else f=ce[g&255](a,b,d,e)|0;c[a+8>>2]=f+b;a=f>>>0>>0?85:0;i=h;return a|0}function wi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;h=a+8|0;e=c[h>>2]|0;f=c[a+4>>2]|0;if(f>>>0<=e>>>0){h=0;i=j;return h|0}g=c[a+20>>2]|0;if(!g){g=f-e|0;d=g>>>0>d>>>0?d:g;Aga(b|0,(c[a>>2]|0)+e|0,d|0)|0;e=d}else e=ce[g&255](a,e,b,d)|0;c[h>>2]=(c[h>>2]|0)+e;h=e;i=j;return h|0}function xi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;b=yi(a,b)|0;if(b){i=e;return b|0}f=a+32|0;c[d>>2]=c[f>>2];c[f>>2]=0;c[a+36>>2]=0;i=e;return b|0}function yi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;d=a+20|0;e=c[d>>2]|0;if(!e){d=a+8|0;e=c[d>>2]|0;h=c[a+4>>2]|0;if(h>>>0<=e>>>0|(h-e|0)>>>0>>0){b=85;i=k;return b|0}h=c[a>>2]|0;c[a+32>>2]=h+e;b=e+b|0;c[a+36>>2]=h+b;c[d>>2]=b;b=0;i=k;return b|0}j=c[a+28>>2]|0;if((c[a+4>>2]|0)>>>0>>0){b=85;i=k;return b|0}do if((b|0)>0){f=Wd[c[j+4>>2]&511](j,b)|0;c[a>>2]=f;if(!f){b=64;i=k;return b|0}else{e=c[d>>2]|0;g=a;break}}else{d=b>>31&6;c[a>>2]=0;if(!d){g=a;f=0}else{b=d;i=k;return b|0}}while(0);h=a+8|0;f=ce[e&255](a,c[h>>2]|0,f,b)|0;d=c[g>>2]|0;if(f>>>0>>0){if(d)Jd[c[j+8>>2]&255](j,d);c[g>>2]=0;d=0;e=85}else e=0;c[a+32>>2]=d;c[a+36>>2]=d+b;c[h>>2]=(c[h>>2]|0)+f;b=e;i=k;return b|0}function zi(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;if((a|0)!=0?(c[a+20>>2]|0)!=0:0){a=c[a+28>>2]|0;d=c[b>>2]|0;if(d)Jd[c[a+8>>2]&255](a,d);c[b>>2]=0}c[b>>2]=0;i=e;return}function Ai(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;if((b|0)>0){a=Wd[c[a+4>>2]&511](a,b)|0;e=a;a=(a|0)==0?64:0}else{e=0;a=b>>31&6}c[d>>2]=a;i=f;return e|0}function Bi(a){a=a|0;var b=0,d=0,e=0;e=i;if(c[a+20>>2]|0){b=c[a+28>>2]|0;d=c[a>>2]|0;if(d)Jd[c[b+8>>2]&255](b,d);c[a>>2]=0}c[a+32>>2]=0;c[a+36>>2]=0;i=e;return}function Ci(b){b=b|0;var d=0,e=0,f=0;f=i;d=b+32|0;e=c[d>>2]|0;if(e>>>0>=(c[b+36>>2]|0)>>>0){b=0;i=f;return b|0}c[d>>2]=e+1;b=a[e>>0]|0;i=f;return b|0}function Di(a){a=a|0;var b=0,e=0,f=0,g=0;g=i;b=a+32|0;e=c[b>>2]|0;f=e+1|0;if(f>>>0>=(c[a+36>>2]|0)>>>0){a=e;f=0;c[b>>2]=a;i=g;return f|0}a=e+2|0;f=((d[e>>0]|0)<<8|(d[f>>0]|0))&65535;c[b>>2]=a;i=g;return f|0}function Ei(a){a=a|0;var b=0,e=0,f=0,g=0;g=i;b=a+32|0;e=c[b>>2]|0;f=e+1|0;if(f>>>0>=(c[a+36>>2]|0)>>>0){a=e;f=0;c[b>>2]=a;i=g;return f|0}a=e+2|0;f=((d[f>>0]|0)<<8|(d[e>>0]|0))&65535;c[b>>2]=a;i=g;return f|0}function Fi(a){a=a|0;var b=0,e=0,f=0,g=0;g=i;b=a+32|0;e=c[b>>2]|0;f=e+3|0;if(f>>>0>=(c[a+36>>2]|0)>>>0){a=e;f=0;c[b>>2]=a;i=g;return f|0}a=e+4|0;f=(d[e+1>>0]|0)<<16|(d[e>>0]|0)<<24|(d[e+2>>0]|0)<<8|(d[f>>0]|0);c[b>>2]=a;i=g;return f|0}function Gi(a){a=a|0;var b=0,e=0,f=0,g=0;g=i;b=a+32|0;e=c[b>>2]|0;f=e+3|0;if(f>>>0>=(c[a+36>>2]|0)>>>0){a=e;f=0;c[b>>2]=a;i=g;return f|0}a=e+4|0;f=(d[e+2>>0]|0)<<16|(d[f>>0]|0)<<24|(d[e+1>>0]|0)<<8|(d[e>>0]|0);c[b>>2]=a;i=g;return f|0}function Hi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j;a[g>>0]=0;c[d>>2]=0;e=c[b+20>>2]|0;h=b+8|0;f=c[h>>2]|0;if(!e)if(f>>>0<(c[b+4>>2]|0)>>>0){e=a[(c[b>>2]|0)+f>>0]|0;a[g>>0]=e;b=6}else b=7;else if((ce[e&255](b,f,g,1)|0)==1){f=c[h>>2]|0;e=a[g>>0]|0;b=6}else b=7;if((b|0)==6){c[h>>2]=f+1;h=e;i=j;return h|0}else if((b|0)==7){c[d>>2]=85;h=0;i=j;return h|0}return 0}function Ii(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;e=k;c[b>>2]=0;h=a+8|0;f=c[h>>2]|0;do if((f+1|0)>>>0<(c[a+4>>2]|0)>>>0){g=c[a+20>>2]|0;if(!g){e=(c[a>>2]|0)+f|0;if(!e)e=0;else j=6}else{if((ce[g&255](a,f,e,2)|0)!=2)break;f=c[h>>2]|0;j=6}if((j|0)==6)e=((d[e+1>>0]|0)<<8|(d[e>>0]|0))&65535;c[h>>2]=f+2;j=e;i=k;return j|0}while(0);c[b>>2]=85;j=0;i=k;return j|0}function Ji(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;e=k;c[b>>2]=0;h=a+8|0;f=c[h>>2]|0;do if((f+2|0)>>>0<(c[a+4>>2]|0)>>>0){g=c[a+20>>2]|0;if(!g){e=(c[a>>2]|0)+f|0;if(!e)e=0;else j=6}else{if((ce[g&255](a,f,e,3)|0)!=3)break;f=c[h>>2]|0;j=6}if((j|0)==6)e=(d[e+1>>0]|0)<<8|(d[e>>0]|0)<<16|(d[e+2>>0]|0);c[h>>2]=f+3;j=e;i=k;return j|0}while(0);c[b>>2]=85;j=0;i=k;return j|0}function Ki(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;e=k;c[b>>2]=0;h=a+8|0;f=c[h>>2]|0;do if((f+3|0)>>>0<(c[a+4>>2]|0)>>>0){g=c[a+20>>2]|0;if(!g){e=(c[a>>2]|0)+f|0;if(!e)e=0;else j=6}else{if((ce[g&255](a,f,e,4)|0)!=4)break;f=c[h>>2]|0;j=6}if((j|0)==6)e=(d[e+2>>0]|0)<<16|(d[e+3>>0]|0)<<24|(d[e+1>>0]|0)<<8|(d[e>>0]|0);c[h>>2]=f+4;j=e;i=k;return j|0}while(0);c[b>>2]=85;j=0;i=k;return j|0}function Li(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;if(!((g|0)!=0&(f|0)!=0)){f=6;i=s;return f|0}q=f+32|0;r=f+36|0;o=0;a:while(1){j=c[q>>2]|0;b:while(1){m=a[g>>0]|0;switch(m&255|0){case 16:case 17:{n=j+4|0;k=0;l=(d[j+1>>0]|0)<<16|(d[j>>0]|0)<<24|(d[j+2>>0]|0)<<8|(d[j+3>>0]|0);p=18;break}case 9:case 8:{n=j+1|0;k=24;l=d[j>>0]|0;p=18;break}case 25:case 24:{k=d[g+1>>0]|0;l=j+k|0;if(l>>>0>(c[r>>2]|0)>>>0){k=85;g=o;break a}if(m<<24>>24==24){Aga(h+(e[g+2>>1]|0)|0,j|0,k|0)|0;j=l}else j=l;break}case 14:case 15:{n=j+2|0;k=16;l=(d[j+1>>0]|0)<<8|(d[j>>0]|0);p=18;break}case 22:case 23:{n=j+3|0;k=8;l=(d[j+1>>0]|0)<<8|(d[j+2>>0]|0)<<16|(d[j>>0]|0);p=18;break}case 12:case 13:{n=j+2|0;k=16;l=(d[j>>0]|0)<<8|(d[j+1>>0]|0);p=18;break}case 4:break b;case 18:case 19:{n=j+4|0;k=0;l=(d[j+2>>0]|0)<<16|(d[j+3>>0]|0)<<24|(d[j+1>>0]|0)<<8|(d[j>>0]|0);p=18;break}case 20:case 21:{n=j+3|0;k=8;l=(d[j+1>>0]|0)<<8|(d[j>>0]|0)<<16|(d[j+2>>0]|0);p=18;break}default:{g=o;p=17;break a}}do if((p|0)==18){p=0;if(m&1)l=l<>k;j=h+(e[g+2>>1]|0)|0;k=d[g+1>>0]|0;if((k|0)==4){c[j>>2]=l;j=n;break}else if((k|0)==1){a[j>>0]=l;j=n;break}else if((k|0)==2){b[j>>1]=l;j=n;break}else{c[j>>2]=l;j=n;break}}while(0);g=g+4|0}j=yi(f,e[g+2>>1]|0)|0;if(j){k=j;g=o;break}g=g+4|0;o=1}if((p|0)==17){c[q>>2]=j;k=0}if(!(g<<24>>24)){f=k;i=s;return f|0}if(c[f+20>>2]|0){g=c[f+28>>2]|0;j=c[f>>2]|0;if(j)Jd[c[g+8>>2]&255](g,j);c[f>>2]=0}c[q>>2]=0;c[r>>2]=0;f=k;i=s;return f|0}function Mi(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;j=i;if((a|0)<-2949120){e=-2949121-a|0;d=14408027;b=0;while(1){d=0-d|0;a=a+5898240|0;if((a|0)>=-2949120)break;else{h=b;b=d;d=h}}a=2949119-((e>>>0)%5898240|0)|0}else{b=14408027;d=0}if((a|0)>2949120){f=a+-2949121|0;e=b;while(1){b=0-d|0;a=a+-5898240|0;if((a|0)<=2949120){d=e;break}else{d=e;e=b}}e=((f>>>0)%5898240|0)+-2949119|0;f=4592;g=1;h=1}else{e=a;f=4592;g=1;h=1}while(1){a=d+g>>h;if((e|0)<0){e=(c[f>>2]|0)+e|0;a=a+b|0;d=d-(b+g>>h)|0}else{e=e-(c[f>>2]|0)|0;a=b-a|0;d=(b+g>>h)+d|0}h=h+1|0;if((h|0)==23)break;else{f=f+4|0;g=g<<1;b=a}}i=j;return a+128>>8|0}function Ni(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;j=i;e=5898240-a|0;if((e|0)<-2949120){d=e;a=14408027;b=0;while(1){a=0-a|0;d=d+5898240|0;if((d|0)>=-2949120)break;else{h=b;b=a;a=h}}e=2949119-(((-2949121-e|0)>>>0)%5898240|0)|0}else{b=14408027;a=0}if((e|0)>2949120){d=e;while(1){a=0-a|0;d=d+-5898240|0;if((d|0)<=2949120){d=b;break}else{h=b;b=a;a=h}}e=(((e+-2949121|0)>>>0)%5898240|0)+-2949119|0;f=4592;g=1;h=1;b=a}else{f=4592;g=1;h=1;d=a}while(1){a=d+g>>h;if((e|0)<0){e=(c[f>>2]|0)+e|0;a=a+b|0;d=d-(b+g>>h)|0}else{e=e-(c[f>>2]|0)|0;a=b-a|0;d=(b+g>>h)+d|0}h=h+1|0;if((h|0)==23)break;else{f=f+4|0;g=g<<1;b=a}}i=j;return a+128>>8|0}function Oi(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;j=i;if((a|0)<-2949120){e=-2949121-a|0;d=14408027;b=0;while(1){d=0-d|0;a=a+5898240|0;if((a|0)>=-2949120)break;else{h=b;b=d;d=h}}a=2949119-((e>>>0)%5898240|0)|0}else{b=14408027;d=0}if((a|0)>2949120){f=a+-2949121|0;e=b;while(1){b=0-d|0;a=a+-5898240|0;if((a|0)<=2949120){d=e;break}else{d=e;e=b}}a=((f>>>0)%5898240|0)+-2949119|0;f=4592;g=1;h=1}else{f=4592;g=1;h=1}while(1){e=d+g>>h;if((a|0)<0){a=(c[f>>2]|0)+a|0;e=e+b|0;d=d-(b+g>>h)|0}else{a=a-(c[f>>2]|0)|0;e=b-e|0;d=(b+g>>h)+d|0}h=h+1|0;if((h|0)==23){b=e;a=d;break}else{f=f+4|0;g=g<<1;b=e}}d=(a|0)<0?0-a|0:a;f=a^b;g=(b|0)<0?0-b|0:b;if(!g){h=2147483647;f=(f|0)<0;g=0-h|0;h=f?g:h;i=j;return h|0}e=d>>16;b=d<<16;a=g>>1;if(!e){h=((b+a|0)>>>0)/(g>>>0)|0;f=(f|0)<0;g=0-h|0;h=f?g:h;i=j;return h|0}a=b+a|0;e=(a>>>0>>0&1)+e|0;if(e>>>0>=g>>>0){h=2147483647;f=(f|0)<0;g=0-h|0;h=f?g:h;i=j;return h|0}b=a;d=32;a=0;while(1){a=a<<1;e=e<<1|b>>>31;if(e>>>0>=g>>>0){a=a|1;e=e-g|0}d=d+-1|0;if(!d)break;else b=b<<1}g=(f|0)<0;h=0-a|0;h=g?h:a;i=j;return h|0}function Pi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;if(!(b|a)){h=0;i=k;return h|0}d=((b|0)<0?0-b|0:b)|((a|0)<0?0-a|0:a);e=d>>>0>65535;d=e?d>>>16:d;e=e?16:0;if(d>>>0>255){d=d>>>8;e=e|8}if(d>>>0>15){d=d>>>4;e=e+4|0}if(d>>>0>3){d=d>>>2;e=e+2|0}d=(d>>>0>1&1)+e|0;if((d|0)<30){h=29-d|0;a=a<>h;b=b>>h}e=0-a|0;if((b|0)>(a|0))if((b|0)>(e|0)){f=4592;g=1;h=1;d=5898240;j=b}else{f=4592;g=1;h=1;d=(b|0)>0?11796480:-11796480;j=e;e=0-b|0}else{e=(b|0)<(e|0);f=4592;g=1;h=1;d=e?-5898240:0;j=e?0-b|0:a;e=e?a:b}while(1){b=e+g>>h;if((e|0)>0){d=(c[f>>2]|0)+d|0;a=b+j|0;e=e-(j+g>>h)|0}else{d=d-(c[f>>2]|0)|0;a=j-b|0;e=(j+g>>h)+e|0}h=h+1|0;if((h|0)==23)break;else{f=f+4|0;g=g<<1;j=a}}if((d|0)>-1){h=d+16&-32;i=k;return h|0}else{h=0-(16-d&-32)|0;i=k;return h|0}return 0}function Qi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;g=c[a>>2]|0;l=a+4|0;f=c[l>>2]|0;if((b|0)==0|(f|g|0)==0){i=m;return}d=((f|0)<0?0-f|0:f)|((g|0)<0?0-g|0:g);e=d>>>0>65535;d=e?d>>>16:d;e=e?16:0;if(d>>>0>255){d=d>>>8;e=e|8}if(d>>>0>15){d=d>>>4;e=e+4|0}if(d>>>0>3){d=d>>>2;e=e+2|0}e=(d>>>0>1&1)+e|0;if((e|0)<30){k=29-e|0;d=f<>k;f=g>>k;k=29-e|0}if((b|0)<-2949120){g=-2949121-b|0;e=f;f=d;while(1){d=0-e|0;b=b+5898240|0;if((b|0)>=-2949120)break;else{e=f;f=d}}b=2949119-((g>>>0)%5898240|0)|0}if((b|0)>2949120){e=b+-2949121|0;while(1){d=0-d|0;b=b+-5898240|0;if((b|0)<=2949120)break;else{j=f;f=d;d=j}}b=((e>>>0)%5898240|0)+-2949119|0;g=4592;h=1;j=1;e=d}else{g=4592;h=1;j=1;e=f;f=d}while(1){d=f+h>>j;if((b|0)<0){b=(c[g>>2]|0)+b|0;d=d+e|0;f=f-(e+h>>j)|0}else{b=b-(c[g>>2]|0)|0;d=e-d|0;f=(e+h>>j)+f|0}j=j+1|0;if((j|0)==23)break;else{g=g+4|0;h=h<<1;e=d}}j=(d|0)<0?0-d|0:d;e=j>>>16;j=j&65535;g=(j*56281|0)+(e*23318|0)|0;j=(j*23318|0)>>>16;h=g+j|0;e=(h>>>16)+(e*56281|0)|0;e=h>>>0<(g>>>0>j>>>0?g:j)>>>0?e+65536|0:e;e=(d|0)>-1?e:0-e|0;j=(f|0)<0?0-f|0:f;d=j>>>16;j=j&65535;g=(j*56281|0)+(d*23318|0)|0;j=(j*23318|0)>>>16;h=g+j|0;d=(h>>>16)+(d*56281|0)|0;d=h>>>0<(g>>>0>j>>>0?g:j)>>>0?d+65536|0:d;d=(f|0)>-1?d:0-d|0;if((k|0)>0){j=1<>2]=e+j+(e>>31)>>k;c[l>>2]=d+j+(d>>31)>>k;i=m;return}else{j=0-k|0;c[a>>2]=e<>2]=d<>2]=b;c[a+4>>2]=0;Qi(a,d);i=e;return}function Si(a,b){a=a|0;b=b|0;b=(b-a|0)%23592960|0;b=(b|0)<0?b+23592960|0:b;return ((b|0)>11796480?b+-23592960|0:b)|0}function Ti(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;do if((d|b|e|0)>=0){if((e|0)==0|(b|0)==0){if(!f){f=0;d=0;break}Jd[c[a+8>>2]&255](a,f);f=0;d=0;break}if((2147483647/(b|0)|0|0)>=(e|0)){if(d){j=ea(d,b)|0;d=ea(e,b)|0;a=ce[c[a+12>>2]&255](a,j,d,f)|0;d=(a|0)==0;f=d?f:a;d=d?64:0;break}b=ea(e,b)|0;if((b|0)<=0){f=0;d=b>>31&6;break}f=Wd[c[a+4>>2]&511](a,b)|0;a=(f|0)==0;d=a?64:0;if(a)f=0;else Cga(f|0,0,b|0)|0}else d=10}else d=6;while(0);c[g>>2]=d;i=h;return f|0}function Ui(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;if(b){e=(Dga(b|0)|0)+1|0;if((e|0)>0){j=Wd[c[a+4>>2]&511](a,e)|0;a=e;f=j;e=(j|0)==0?64:0}else g=4}else{e=0;g=4}if((g|0)==4){a=e;f=0;e=e>>31&6}if(!((e|0)==0&(b|0)!=0)){c[d>>2]=e;i=h;return f|0}Aga(f|0,b|0,a|0)|0;c[d>>2]=e;i=h;return f|0}function Vi(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=i;a:do if(d>>>0>1)while(1){e=a[c>>0]|0;if(!(e<<24>>24))break a;c=c+1|0;f=b+1|0;a[b>>0]=e;d=d+-1|0;if(d>>>0<=1){b=f;break}else b=f}while(0);a[b>>0]=0;i=g;return (a[c>>0]|0)!=0|0}function Wi(a){a=a|0;var b=0,c=0;c=i;while(1){b=a+-1&a;if(!b)break;else a=b}i=c;return a|0}function Xi(a){a=a|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;return}function Yi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;f=c[a>>2]|0;c[k>>2]=0;a=c[b+8>>2]|0;if((b|0)==(d|0)){k=0;i=l;return k|0}j=b+12|0;if(!(c[j>>2]|0)){c[d+0>>2]=c[b+0>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[d+16>>2]=c[b+16>>2];c[d+20>>2]=c[b+20>>2];k=0;i=l;return k|0}g=ea(c[b>>2]|0,(a|0)<0?0-a|0:a)|0;h=d+12|0;e=c[h>>2]|0;if(e){a=c[d+8>>2]|0;a=ea((a|0)<0?0-a|0:a,c[d>>2]|0)|0;if((a|0)!=(g|0)){e=Ti(f,1,a,g,e,k)|0;c[h>>2]=e}}else{e=Ai(f,g,k)|0;c[h>>2]=e}a=c[k>>2]|0;if(a){k=a;i=l;return k|0};c[d+0>>2]=c[b+0>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[d+16>>2]=c[b+16>>2];c[d+20>>2]=c[b+20>>2];c[h>>2]=e;Aga(e|0,c[j>>2]|0,g|0)|0;k=c[k>>2]|0;i=l;return k|0}function Zi(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;s=t;c[s>>2]=0;if(!e){s=33;i=t;return s|0}n=c[e>>2]|0;o=f+18|0;if(((a[o>>0]|0)+-1|0)>>>0<7){m=g+8|0;l=ea(c[m>>2]|0,c[g>>2]|0)|0;l=(l|0)<0?0-l|0:l;a[g+18>>0]=2;j=c[f>>2]|0;c[g>>2]=j;k=f+4|0;c[g+4>>2]=c[k>>2];k=c[k>>2]|0;if((h|0)>0){e=(k|0)%(h|0)|0;e=(e|0)==0?0:h-e|0}else e=0;e=k+e|0;c[m>>2]=e;if((e|0)>0?j>>>0>(4294967295/(e>>>0)|0)>>>0:0){s=6;i=t;return s|0}e=ea(e,j)|0;if((e|0)>(l|0)?(p=g+12|0,c[p>>2]=Ti(n,1,l,e,c[p>>2]|0,s)|0,p=c[s>>2]|0,(p|0)!=0):0){s=p;i=t;return s|0}}else c[s>>2]=6;switch(a[o>>0]|0){case 1:{h=c[f+12>>2]|0;k=c[g+12>>2]|0;b[g+16>>1]=2;e=c[f>>2]|0;if((e|0)>0){q=f+4|0;f=f+8|0;n=g+8|0;l=h;p=k;while(1){h=c[q>>2]|0;o=h>>3;if((o|0)>0){m=o<<3;k=o;h=l;j=p;while(1){r=a[h>>0]|0;g=r&255;a[j>>0]=(r&255)>>>7;a[j+1>>0]=g>>>6&1;a[j+2>>0]=g>>>5&1;a[j+3>>0]=g>>>4&1;a[j+4>>0]=g>>>3&1;a[j+5>>0]=g>>>2&1;a[j+6>>0]=g>>>1&1;a[j+7>>0]=g&1;k=k+-1|0;if((k|0)<=0)break;else{h=h+1|0;j=j+8|0}}h=c[q>>2]|0;o=l+o|0;j=p+m|0}else{o=l;j=p}h=h&7;if(h){k=d[o>>0]|0;while(1){a[j>>0]=k>>>7&1;h=h+-1|0;if((h|0)<=0)break;else{j=j+1|0;k=k<<1}}}e=e+-1|0;if((e|0)<=0)break;else{l=l+(c[f>>2]|0)|0;p=p+(c[n>>2]|0)|0}}}break}case 4:{h=c[f+12>>2]|0;k=c[g+12>>2]|0;b[g+16>>1]=16;e=c[f>>2]|0;if((e|0)>0){q=f+4|0;f=f+8|0;p=g+8|0;o=h;while(1){h=c[q>>2]|0;n=h>>1;if((n|0)>0){j=k+(n<<1)|0;h=n;m=o;l=k;while(1){g=a[m>>0]|0;a[l>>0]=(g&255)>>>4;a[l+1>>0]=g&15;h=h+-1|0;if((h|0)<=0)break;else{m=m+1|0;l=l+2|0}}h=c[q>>2]|0;l=o+n|0}else{l=o;j=k}if(h&1)a[j>>0]=(d[l>>0]|0)>>>4;e=e+-1|0;if((e|0)<=0)break;else{o=o+(c[f>>2]|0)|0;k=k+(c[p>>2]|0)|0}}}break}case 3:{h=c[f+12>>2]|0;k=c[g+12>>2]|0;b[g+16>>1]=4;e=c[f>>2]|0;if((e|0)>0){r=f+4|0;q=f+8|0;f=g+8|0;n=h;p=k;while(1){h=c[r>>2]|0;l=h>>2;if((l|0)>0){j=p+(l<<2)|0;k=l;h=n;m=p;while(1){o=a[h>>0]|0;g=o&255;a[m>>0]=(o&255)>>>6;a[m+1>>0]=g>>>4&3;a[m+2>>0]=g>>>2&3;a[m+3>>0]=g&3;k=k+-1|0;if((k|0)<=0)break;else{h=h+1|0;m=m+4|0}}h=c[r>>2]|0;o=n+l|0}else{o=n;j=p}h=h&3;if(h){k=d[o>>0]|0;while(1){a[j>>0]=k>>>6&3;h=h+-1|0;if((h|0)<=0)break;else{j=j+1|0;k=k<<2}}}e=e+-1|0;if((e|0)<=0)break;else{n=n+(c[q>>2]|0)|0;p=p+(c[f>>2]|0)|0}}}break}case 6:case 5:case 2:{k=c[f+4>>2]|0;j=c[f+12>>2]|0;h=c[g+12>>2]|0;l=c[f+8>>2]|0;m=c[g+8>>2]|0;b[g+16>>1]=256;e=c[f>>2]|0;if((e|0)>0)while(1){Aga(h|0,j|0,k|0)|0;e=e+-1|0;if((e|0)<=0)break;else{j=j+l|0;h=h+m|0}}break}case 7:{h=c[f+12>>2]|0;k=c[g+12>>2]|0;p=c[f+8>>2]|0;n=c[g+8>>2]|0;b[g+16>>1]=256;e=c[f>>2]|0;if((e|0)>0){o=f+4|0;m=h;l=k;while(1){h=c[o>>2]|0;if((h|0)>0){j=m;k=l;while(1){a[k>>0]=$i(j)|0;h=h+-1|0;if((h|0)<=0)break;else{j=j+4|0;k=k+1|0}}}e=e+-1|0;if((e|0)<=0)break;else{m=m+p|0;l=l+n|0}}}break}default:{}}s=c[s>>2]|0;i=t;return s|0}function _i(a,b){a=a|0;b=b|0;var d=0;d=i;if(!a){a=33;i=d;return a|0}if(!b){a=6;i=d;return a|0}eh(c[a>>2]|0,c[b+12>>2]|0);c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;a=0;i=d;return a|0}function $i(b){b=b|0;var c=0,e=0,f=0,g=0,h=0;e=i;f=a[b+3>>0]|0;c=f&255;if(!(f<<24>>24)){f=0;i=e;return f|0}f=d[b+2>>0]|0;h=d[b+1>>0]|0;g=Ug(d[b>>0]|0,65536,c)|0;b=Ug(h,65536,c)|0;f=Ug(f,65536,c)|0;g=Wg(g,g)|0;b=Wg(b,b)|0;f=Wg(f,f)|0;g=Wg(g,4731)|0;b=Wg(b,46871)|0;f=(Wg(65535-g-b-(Wg(f,13933)|0)|0,c<<8)|0)>>>8&255;i=e;return f|0}function aj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+16|0;d=k;if(!b){h=6;i=k;return h|0}c[b>>2]=0;if(!a){h=6;i=k;return h|0}g=c[a+4>>2]|0;if(!g){h=6;i=k;return h|0}e=c[a>>2]|0;j=ch(c[e>>2]|0,c[g>>2]|0,d)|0;d=c[d>>2]|0;if(d){h=d;i=k;return h|0}c[j>>2]=e;f=j+4|0;c[f>>2]=g;d=j+8|0;c[d>>2]=c[g+4>>2];m=a+12|0;l=c[m+4>>2]|0;e=j+12|0;c[e>>2]=c[m>>2];c[e+4>>2]=l;c[d>>2]=c[a+8>>2];d=c[g+16>>2]|0;if((d|0)!=0?(h=Wd[d&511](a,j)|0,(h|0)!=0):0){if(!j){m=h;i=k;return m|0}e=c[c[j>>2]>>2]|0;d=c[(c[f>>2]|0)+12>>2]|0;if(d)Id[d&511](j);eh(e,j);m=h;i=k;return m|0}c[b>>2]=j;m=0;i=k;return m|0}function bj(a){a=a|0;var b=0,d=0,e=0;e=i;if(!a){i=e;return}b=c[c[a>>2]>>2]|0;d=c[(c[a+4>>2]|0)+12>>2]|0;if(d)Id[d&511](a);eh(b,a);i=e;return}function cj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j;if(!a){b=37;i=j;return b|0}g=c[a>>2]|0;if(!b){b=6;i=j;return b|0}d=c[a+72>>2]|0;if((d|0)==1869968492)e=4840;else if((d|0)!=1651078259){d=_h(g,d,0)|0;if(!d){b=18;i=j;return b|0}else e=d+20|0}else e=4808;h=ch(c[g>>2]|0,c[e>>2]|0,f)|0;d=c[f>>2]|0;if(d){b=d;i=j;return b|0}c[h>>2]=g;d=h+4|0;c[d>>2]=e;c[h+8>>2]=c[e+4>>2];c[h+12>>2]=c[a+64>>2]<<10;c[h+16>>2]=c[a+68>>2]<<10;f=Wd[c[e+8>>2]&511](h,a)|0;if(!f){c[b>>2]=h;b=0;i=j;return b|0}if(!h){b=f;i=j;return b|0}e=c[c[h>>2]>>2]|0;d=c[(c[d>>2]|0)+12>>2]|0;if(d)Id[d&511](h);eh(e,h);b=f;i=j;return b|0}function dj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+224|0;k=y+208|0;u=y;g=y+160|0;t=y+200|0;if(!a){a=6;i=y;return a|0}x=c[a>>2]|0;if(!x){a=6;i=y;return a|0}w=x+4|0;h=c[w>>2]|0;l=c[x>>2]|0;if(!((l|0)!=0&(h|0)!=0)){a=6;i=y;return a|0}if((h|0)==4808){a=0;i=y;return a|0}o=h+28|0;if(!(c[o>>2]|0)){a=6;i=y;return a|0}Cga(u|0,0,156)|0;f=g+0|0;j=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(j|0));q=u+156|0;c[q>>2]=g;c[u>>2]=l;p=u+72|0;c[p>>2]=c[h+4>>2];v=ch(c[l>>2]|0,52,k)|0;f=c[k>>2]|0;if(f){a=f;i=y;return a|0}c[v>>2]=l;l=v+4|0;c[l>>2]=4808;c[v+8>>2]=1651078259;f=(d|0)!=0;if((f?(m=c[w>>2]|0,(m|0)!=0):0)?(n=c[m+20>>2]|0,(n|0)!=0):0)$d[n&255](x,0,d);h=Wd[c[o>>2]&511](x,u)|0;if(!h)h=$h(c[x>>2]|0,u,b)|0;j=e<<24>>24==0;if((j&f?(c[t>>2]=0-(c[d>>2]|0),c[t+4>>2]=0-(c[d+4>>2]|0),r=c[w>>2]|0,(r|0)!=0):0)?(s=c[r+20>>2]|0,(s|0)!=0):0)$d[s&255](x,0,t);do if(!h){g=c[v>>2]|0;if((c[p>>2]|0)==1651078259){c[v+20>>2]=c[u+100>>2];c[v+24>>2]=c[u+104>>2];f=v+28|0;if(!(c[(c[q>>2]|0)+4>>2]&1)){Xi(f);h=Yi(g,u+76|0,f)|0;if(h)break}else{u=u+76|0;c[f+0>>2]=c[u+0>>2];c[f+4>>2]=c[u+4>>2];c[f+8>>2]=c[u+8>>2];c[f+12>>2]=c[u+12>>2];c[f+16>>2]=c[u+16>>2];c[f+20>>2]=c[u+20>>2];u=(c[q>>2]|0)+4|0;c[u>>2]=c[u>>2]&-2}d=x+12|0;t=c[d+4>>2]|0;u=v+12|0;c[u>>2]=c[d>>2];c[u+4>>2]=t;if(!j){g=c[c[x>>2]>>2]|0;f=c[(c[w>>2]|0)+12>>2]|0;if(f)Id[f&511](x);eh(g,x)}c[a>>2]=v;a=0;i=y;return a|0}else h=18}while(0);if(!((h|0)!=0&(v|0)!=0)){a=h;i=y;return a|0}g=c[c[v>>2]>>2]|0;f=c[(c[l>>2]|0)+12>>2]|0;if(f)Id[f&511](v);eh(g,v);a=h;i=y;return a|0}function ej(a){a=a|0;var b=0;b=i;ai(a,4376)|0;ai(a,88928)|0;ai(a,90544)|0;ai(a,8392)|0;ai(a,12560)|0;ai(a,21944)|0;ai(a,93528)|0;ai(a,94984)|0;ai(a,21160)|0;ai(a,22624)|0;ai(a,24328)|0;ai(a,24248)|0;ai(a,86632)|0;ai(a,87400)|0;ai(a,88664)|0;ai(a,88744)|0;ai(a,88824)|0;ai(a,4928)|0;i=b;return}function fj(a){a=a|0;var b=0,d=0,e=0;e=i;d=vj()|0;do if(d){b=fi(d,a)|0;if(!b){ej(c[a>>2]|0);b=0;break}else{wj(d);break}}else b=7;while(0);i=e;return b|0}function gj(a){a=a|0;var b=0,d=0;b=i;if(!a){i=b;return 0}d=c[a>>2]|0;gi(a)|0;wj(d);i=b;return 0}function hj(a,b){a=a|0;b=b|0;return 7}function ij(a,b){a=a|0;b=b|0;return 7}function jj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j;if(!b){d=6;i=j;return d|0}f=c[b>>2]|0;h=ch(f,132,g)|0;e=c[g>>2]|0;if(!e){c[h+128>>2]=b;e=h+64|0;c[h+88>>2]=f;c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[h+84>>2]=-1;a[h+92>>0]=0;e=h+96|0;c[h+120>>2]=f;c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[h+116>>2]=-1;a[h+124>>0]=0;e=c[g>>2]|0}c[d>>2]=h;d=e;i=j;return d|0}function kj(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;c[b+60>>2]=d;c[b+44>>2]=e;c[b+48>>2]=f;c[b+56>>2]=(g|0)<65536?65536:g;c[b+52>>2]=f;if(!b){i=h;return}c[b+64>>2]=0;c[b+84>>2]=-1;a[b+92>>0]=0;c[b+96>>2]=0;c[b+116>>2]=-1;a[b+124>>0]=0;i=h;return}function lj(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;if(!b){i=d;return}f=b+128|0;e=c[c[f>>2]>>2]|0;g=c[b+88>>2]|0;h=b+72|0;eh(g,c[h>>2]|0);c[h>>2]=0;h=b+76|0;eh(g,c[h>>2]|0);c[h>>2]=0;c[b+64>>2]=0;c[b+68>>2]=0;c[b+84>>2]=-1;a[b+92>>0]=0;h=c[b+120>>2]|0;g=b+104|0;eh(h,c[g>>2]|0);c[g>>2]=0;g=b+108|0;eh(h,c[g>>2]|0);c[g>>2]=0;c[b+96>>2]=0;c[b+100>>2]=0;c[b+116>>2]=-1;a[b+124>>0]=0;c[f>>2]=0;eh(e,b);i=d;return}function mj(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;I=i;i=i+32|0;H=I+24|0;x=I;t=I+8|0;G=I+16|0;s=c[e>>2]|0;z=b+8|0;y=c[z>>2]|0;c[G>>2]=s-y;E=e+4|0;A=c[E>>2]|0;u=b+12|0;B=c[u>>2]|0;F=G+4|0;c[F>>2]=A-B;if((s|0)==(y|0)&(A|0)==(B|0)){e=0;i=I;return e|0}A=Tg(G)|0;B=Pi(c[G>>2]|0,c[F>>2]|0)|0;f=b+60|0;g=B+5898240|0;Ri(G,c[f>>2]|0,g);y=b+20|0;if(!(a[y>>0]|0)){c[b+4>>2]=B;f=Si(c[b>>2]|0,B)|0;if(f){f=f>>>31;g=xr(b,f,A)|0;if(g){e=g;i=I;return e|0}f=yr(b,f^1,A)|0;if(f){e=f;i=I;return e|0}}}else{Ri(t,c[f>>2]|0,g);m=b+8|0;p=(c[t>>2]|0)+(c[m>>2]|0)|0;s=t+4|0;q=(c[s>>2]|0)+(c[u>>2]|0)|0;j=b+84|0;f=c[j>>2]|0;r=b+64|0;if((f|0)>-1){n=c[r>>2]|0;if(n>>>0>(f+1|0)>>>0){J=n+-1|0;c[r>>2]=J;k=c[b+72>>2]|0;J=k+(J<<3)|0;g=c[J+4>>2]|0;k=k+(f<<3)|0;c[k>>2]=c[J>>2];c[k+4>>2]=g;k=b+76|0;g=(c[k>>2]|0)+f|0;a[g>>0]=d[g>>0]|4;k=(c[k>>2]|0)+(n+-2)|0;a[k>>0]=d[k>>0]|8}else c[r>>2]=f;c[j>>2]=-1;f=b+80|0;a[f>>0]=0}else f=b+80|0;c[j>>2]=c[r>>2];a[f>>0]=0;k=b+80|0;j=c[r>>2]|0;do if(!(a[k>>0]|0)){if(((j|0)!=0?(h=j+-1|0,o=c[b+72>>2]|0,(1-p+(c[o+(h<<3)>>2]|0)|0)>>>0<3):0)?(1-q+(c[o+(h<<3)+4>>2]|0)|0)>>>0<3:0)break;l=b+68|0;o=c[l>>2]|0;n=j+1|0;c[H>>2]=0;do if(n>>>0>o>>>0){h=c[b+88>>2]|0;f=o;do f=f+16+(f>>>1)|0;while(f>>>0>>0);j=f;g=b+72|0;c[g>>2]=hh(h,8,o,j,c[g>>2]|0,H)|0;f=c[H>>2]|0;if(!f){f=b+76|0;n=hh(h,1,o,j,c[f>>2]|0,H)|0;c[f>>2]=n;f=c[H>>2]|0;if(!f){c[l>>2]=j;j=c[r>>2]|0;f=n;break}}a[k>>0]=0;J=f;i=I;return J|0}else{g=b+72|0;f=c[b+76>>2]|0}while(0);l=(c[g>>2]|0)+(j<<3)|0;c[l>>2]=p;c[l+4>>2]=q;a[f+j>>0]=1;c[r>>2]=(c[r>>2]|0)+1;l=22}else{l=(c[b+72>>2]|0)+(j+-1<<3)|0;c[l>>2]=p;c[l+4>>2]=q;l=22}while(0);if((l|0)==22)a[k>>0]=0;q=(c[m>>2]|0)-(c[t>>2]|0)|0;m=(c[u>>2]|0)-(c[s>>2]|0)|0;j=b+116|0;f=c[j>>2]|0;p=b+96|0;if((f|0)>-1){g=c[p>>2]|0;if(g>>>0>(f+1|0)>>>0){t=g+-1|0;c[p>>2]=t;J=c[b+104>>2]|0;t=J+(t<<3)|0;u=c[t+4>>2]|0;J=J+(f<<3)|0;c[J>>2]=c[t>>2];c[J+4>>2]=u;J=b+108|0;u=(c[J>>2]|0)+f|0;a[u>>0]=d[u>>0]|4;J=(c[J>>2]|0)+(g+-2)|0;a[J>>0]=d[J>>0]|8}else c[p>>2]=f;c[j>>2]=-1;f=b+112|0;a[f>>0]=0}else f=b+112|0;c[j>>2]=c[p>>2];a[f>>0]=0;o=b+112|0;g=c[p>>2]|0;do if(!(a[o>>0]|0)){if(((g|0)!=0?(v=g+-1|0,w=c[b+104>>2]|0,(1-q+(c[w+(v<<3)>>2]|0)|0)>>>0<3):0)?(1-m+(c[w+(v<<3)+4>>2]|0)|0)>>>0<3:0){f=0;break}n=b+100|0;l=c[n>>2]|0;j=g+1|0;c[x>>2]=0;if(j>>>0>l>>>0){k=c[b+120>>2]|0;f=l;do f=f+16+(f>>>1)|0;while(f>>>0>>0);g=f;h=b+104|0;c[h>>2]=hh(k,8,l,g,c[h>>2]|0,x)|0;f=c[x>>2]|0;if(f){l=43;break}f=b+108|0;j=hh(k,1,l,g,c[f>>2]|0,x)|0;c[f>>2]=j;f=c[x>>2]|0;if(f){l=43;break}c[n>>2]=g;g=c[p>>2]|0;f=j}else{h=b+104|0;f=c[b+108>>2]|0}l=(c[h>>2]|0)+(g<<3)|0;c[l>>2]=q;c[l+4>>2]=m;a[f+g>>0]=1;c[p>>2]=(c[p>>2]|0)+1;f=0;l=43}else{f=(c[b+104>>2]|0)+(g+-1<<3)|0;c[f>>2]=q;c[f+4>>2]=m;f=0;l=43}while(0);if((l|0)==43)a[o>>0]=0;c[b+24>>2]=B;a[y>>0]=0;c[b+36>>2]=A;if(f){J=f;i=I;return J|0}}f=c[G>>2]|0;h=c[F>>2]|0;q=b+64|0;r=1;a:while(1){o=f+(c[e>>2]|0)|0;p=h+(c[E>>2]|0)|0;g=q+16|0;j=c[q>>2]|0;do if(!(a[g>>0]|0)){if(((j|0)!=0?(C=j+-1|0,D=c[q+8>>2]|0,(1-o+(c[D+(C<<3)>>2]|0)|0)>>>0<3):0)?(1-p+(c[D+(C<<3)+4>>2]|0)|0)>>>0<3:0){g=h;break}n=q+4|0;m=c[n>>2]|0;j=j+1|0;c[H>>2]=0;if(j>>>0>m>>>0){l=c[q+24>>2]|0;f=m;do f=f+16+(f>>>1)|0;while(f>>>0>>0);j=f;h=q+8|0;c[h>>2]=hh(l,8,m,j,c[h>>2]|0,H)|0;f=c[H>>2]|0;if(f){l=63;break a}k=q+12|0;c[k>>2]=hh(l,1,m,j,c[k>>2]|0,H)|0;f=c[H>>2]|0;if(f){l=63;break a}c[n>>2]=j;f=k}else{h=q+8|0;f=q+12|0}J=c[q>>2]|0;l=(c[f>>2]|0)+J|0;J=(c[h>>2]|0)+(J<<3)|0;c[J>>2]=o;c[J+4>>2]=p;a[l>>0]=1;c[q>>2]=(c[q>>2]|0)+1;l=62}else{l=(c[q+8>>2]|0)+(j+-1<<3)|0;c[l>>2]=o;c[l+4>>2]=p;l=62}while(0);if((l|0)==62){l=0;a[g>>0]=1;f=c[G>>2]|0;g=c[F>>2]|0}f=0-f|0;c[G>>2]=f;h=0-g|0;c[F>>2]=h;if((r|0)<=0){l=65;break}else{q=q+32|0;r=r+-1|0}}if((l|0)==63){a[g>>0]=1;J=f;i=I;return J|0}else if((l|0)==65){c[b>>2]=B;G=e;e=c[G+4>>2]|0;J=z;c[J>>2]=c[G>>2];c[J+4>>2]=e;c[b+16>>2]=A;J=0;i=I;return J|0}return 0}function nj(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0;Ca=i;i=i+320|0;Aa=Ca+316|0;za=Ca+312|0;xa=Ca+296|0;ta=Ca+16|0;va=Ca+8|0;ya=Ca;ua=Ca+304|0;wa=Ca+288|0;ba=ta+240|0;ca=b+8|0;h=c[e>>2]|0;sa=b+12|0;if(((((c[ca>>2]|0)+1-h|0)>>>0<3?(j=c[e+4>>2]|0,((c[sa>>2]|0)+1-j|0)>>>0<3):0)?(h+1-(c[f>>2]|0)|0)>>>0<3:0)?(j+1-(c[f+4>>2]|0)|0)>>>0<3:0){b=f;f=c[b+4>>2]|0;Ba=ca;c[Ba>>2]=c[b>>2];c[Ba+4>>2]=f;Ba=0;i=Ca;return Ba|0}E=f;D=c[E+4>>2]|0;C=ta;c[C>>2]=c[E>>2];c[C+4>>2]=D;C=e;D=c[C+4>>2]|0;E=ta+8|0;c[E>>2]=c[C>>2];c[E+4>>2]=D;E=ca;D=c[E+4>>2]|0;C=ta+16|0;c[C>>2]=c[E>>2];c[C+4>>2]=D;C=b+20|0;D=b+4|0;E=b+48|0;F=b+52|0;G=b+60|0;H=b+40|0;I=b+64|0;J=va+4|0;K=ya+4|0;L=ua+4|0;M=wa+4|0;N=b+8|0;O=xa+4|0;P=b+84|0;Q=b+64|0;R=b+72|0;B=b+76|0;aa=b+80|0;S=b+68|0;T=b+88|0;U=b+116|0;V=b+96|0;W=b+104|0;A=b+108|0;X=b+112|0;Y=b+100|0;Z=b+120|0;_=b+24|0;$=b+36|0;e=ta;t=1;a:while(1){while(1){n=c[b>>2]|0;if(e>>>0>=ba>>>0){l=n;z=n;y=e;break}p=e+8|0;l=c[p>>2]|0;q=e+16|0;h=l-(c[q>>2]|0)|0;r=e+12|0;m=c[r>>2]|0;s=e+20|0;j=m-(c[s>>2]|0)|0;l=(c[e>>2]|0)-l|0;o=e+4|0;m=(c[o>>2]|0)-m|0;k=(l+1|0)>>>0<3&(m|0)>-2&(m|0)<2;if((h+1|0)>>>0<3&(j|0)>-2&(j|0)<2)if(k){j=n;h=n}else{h=Pi(l,m)|0;j=h}else{h=Pi(h,j)|0;if(k)j=h;else{j=h;h=Pi(l,m)|0}}z=Si(j,h)|0;if((((z|0)>-1?z:0-z|0)|0)<1966080){l=j;z=h;y=e;break}if(a[C>>0]|0)c[b>>2]=j;z=c[q>>2]|0;c[e+32>>2]=z;y=c[p>>2]|0;z=(y+z|0)/2|0;c[e+24>>2]=z;y=((c[e>>2]|0)+y|0)/2|0;c[p>>2]=y;c[q>>2]=(y+z|0)/2|0;z=c[s>>2]|0;c[e+36>>2]=z;y=c[r>>2]|0;z=(y+z|0)/2|0;c[e+28>>2]=z;y=((c[o>>2]|0)+y|0)/2|0;c[r>>2]=y;c[s>>2]=(y+z|0)/2|0;e=e+16|0;if(e>>>0>>0){Ba=124;break a}}do if(!(t<<24>>24)){x=Si(c[b>>2]|0,l)|0;if((((x|0)>-1?x:0-x|0)|0)>491520){x=y+16|0;Ba=c[x+4>>2]|0;g=ca;c[g>>2]=c[x>>2];c[g+4>>2]=Ba;c[D>>2]=l;c[E>>2]=0;g=Si(c[b>>2]|0,l)|0;if(g){e=g>>>31;g=xr(b,e,0)|0;if(!g)g=yr(b,e^1,0)|0}else g=0;c[E>>2]=c[F>>2];Ba=63}}else{if(!(a[C>>0]|0)){c[D>>2]=l;e=Si(c[b>>2]|0,l)|0;if(!e)break;e=e>>>31;g=xr(b,e,0)|0;if(g){Ba=125;break a}g=yr(b,e^1,0)|0;Ba=63;break}Ri(xa,c[G>>2]|0,l+5898240|0);n=(c[xa>>2]|0)+(c[N>>2]|0)|0;o=(c[O>>2]|0)+(c[sa>>2]|0)|0;g=c[P>>2]|0;if((g|0)>-1){e=c[Q>>2]|0;if(e>>>0>(g+1|0)>>>0){v=e+-1|0;c[Q>>2]=v;x=c[R>>2]|0;v=x+(v<<3)|0;w=c[v+4>>2]|0;x=x+(g<<3)|0;c[x>>2]=c[v>>2];c[x+4>>2]=w;x=(c[B>>2]|0)+g|0;a[x>>0]=d[x>>0]|4;x=(c[B>>2]|0)+(e+-2)|0;a[x>>0]=d[x>>0]|8}else c[Q>>2]=g;c[P>>2]=-1;a[aa>>0]=0}g=c[Q>>2]|0;c[P>>2]=g;a[aa>>0]=0;if(!(((g|0)!=0?(da=g+-1|0,fa=c[R>>2]|0,(1-n+(c[fa+(da<<3)>>2]|0)|0)>>>0<3):0)?(1-o+(c[fa+(da<<3)+4>>2]|0)|0)>>>0<3:0)){j=c[S>>2]|0;e=g+1|0;c[Aa>>2]=0;if(e>>>0>j>>>0){h=c[T>>2]|0;g=j;do g=g+16+(g>>>1)|0;while(g>>>0>>0);e=g;c[R>>2]=hh(h,8,j,e,c[R>>2]|0,Aa)|0;g=c[Aa>>2]|0;if(g){Ba=36;break a}h=hh(h,1,j,e,c[B>>2]|0,Aa)|0;c[B>>2]=h;g=c[Aa>>2]|0;if(g){Ba=36;break a}c[S>>2]=e;e=c[Q>>2]|0;g=h}else{e=g;g=c[B>>2]|0}x=(c[R>>2]|0)+(e<<3)|0;c[x>>2]=n;c[x+4>>2]=o;a[g+e>>0]=1;c[Q>>2]=(c[Q>>2]|0)+1;a[aa>>0]=0}n=(c[N>>2]|0)-(c[xa>>2]|0)|0;o=(c[sa>>2]|0)-(c[O>>2]|0)|0;g=c[U>>2]|0;if((g|0)>-1){e=c[V>>2]|0;if(e>>>0>(g+1|0)>>>0){v=e+-1|0;c[V>>2]=v;x=c[W>>2]|0;v=x+(v<<3)|0;w=c[v+4>>2]|0;x=x+(g<<3)|0;c[x>>2]=c[v>>2];c[x+4>>2]=w;x=(c[A>>2]|0)+g|0;a[x>>0]=d[x>>0]|4;x=(c[A>>2]|0)+(e+-2)|0;a[x>>0]=d[x>>0]|8}else c[V>>2]=g;c[U>>2]=-1;a[X>>0]=0}g=c[V>>2]|0;c[U>>2]=g;a[X>>0]=0;if(((g|0)!=0?(ga=g+-1|0,ha=c[W>>2]|0,(1-n+(c[ha+(ga<<3)>>2]|0)|0)>>>0<3):0)?(1-o+(c[ha+(ga<<3)+4>>2]|0)|0)>>>0<3:0)g=0;else{j=c[Y>>2]|0;e=g+1|0;c[za>>2]=0;if(e>>>0>j>>>0){h=c[Z>>2]|0;g=j;do g=g+16+(g>>>1)|0;while(g>>>0>>0);e=g;c[W>>2]=hh(h,8,j,e,c[W>>2]|0,za)|0;g=c[za>>2]|0;if(!g){h=hh(h,1,j,e,c[A>>2]|0,za)|0;c[A>>2]=h;g=c[za>>2]|0;if(!g){c[Y>>2]=e;e=c[V>>2]|0;g=h;Ba=52}}}else{e=g;g=c[A>>2]|0;Ba=52}if((Ba|0)==52){Ba=(c[W>>2]|0)+(e<<3)|0;c[Ba>>2]=n;c[Ba+4>>2]=o;a[g+e>>0]=1;c[V>>2]=(c[V>>2]|0)+1;g=0}a[X>>0]=0}c[_>>2]=l;a[C>>0]=0;c[$>>2]=0;Ba=63}while(0);if((Ba|0)==63?(Ba=0,(g|0)!=0):0){Ba=125;break}s=(Si(l,z)|0)/2|0;r=s+l|0;x=c[G>>2]|0;s=Xg(x,Mi(s)|0)|0;if(!(a[H>>0]|0)){m=y+4|0;p=y+16|0;q=y+20|0;v=0}else{w=y+16|0;x=y+4|0;v=y+20|0;m=x;p=w;q=v;v=Pi((c[y>>2]|0)-(c[w>>2]|0)|0,(c[x>>2]|0)-(c[v>>2]|0)|0)|0}t=y+8|0;u=y+12|0;x=I;w=0;while(1){e=(ea(w,-11796480)|0)+5898240|0;Ri(va,s,r+e|0);c[va>>2]=(c[va>>2]|0)+(c[t>>2]|0);c[J>>2]=(c[J>>2]|0)+(c[u>>2]|0);Ri(ya,c[G>>2]|0,e+z|0);e=(c[ya>>2]|0)+(c[y>>2]|0)|0;c[ya>>2]=e;h=(c[K>>2]|0)+(c[m>>2]|0)|0;c[K>>2]=h;do if((a[H>>0]|0)!=0?(ia=x+8|0,ka=(c[ia>>2]|0)+((c[x>>2]|0)+-1<<3)|0,ja=c[ka>>2]|0,ka=c[ka+4>>2]|0,la=Pi(e-ja|0,h-ka|0)|0,k=Si(v,la)|0,(((k|0)>-1?k:0-k|0)|0)>5898240):0){n=Pi((c[p>>2]|0)-ja|0,(c[q>>2]|0)-ka|0)|0;e=Pi((c[y>>2]|0)-(c[ya>>2]|0)|0,(c[m>>2]|0)-(c[K>>2]|0)|0)|0;c[ua>>2]=(c[ya>>2]|0)-ja;c[L>>2]=(c[K>>2]|0)-ka;j=Tg(ua)|0;h=Ni(la-e|0)|0;e=Ni(n-e|0)|0;Ri(wa,Ug(j,(h|0)>-1?h:0-h|0,(e|0)>-1?e:0-e|0)|0,n);n=(c[wa>>2]|0)+ja|0;c[wa>>2]=n;e=(c[M>>2]|0)+ka|0;c[M>>2]=e;h=x+16|0;a[h>>0]=0;j=c[x>>2]|0;if(((j|0)!=0?(ma=j+-1|0,na=c[ia>>2]|0,((c[na+(ma<<3)>>2]|0)+1-n|0)>>>0<3):0)?((c[na+(ma<<3)+4>>2]|0)+1-e|0)>>>0<3:0)n=j;else{l=x+4|0;o=c[l>>2]|0;e=j+1|0;c[Aa>>2]=0;if(e>>>0>o>>>0){j=c[x+24>>2]|0;n=o;do n=n+16+(n>>>1)|0;while(n>>>0>>0);c[ia>>2]=hh(j,8,o,n,c[ia>>2]|0,Aa)|0;e=c[Aa>>2]|0;if(e){g=e;Ba=81;break a}e=x+12|0;c[e>>2]=hh(j,1,o,n,c[e>>2]|0,Aa)|0;j=c[Aa>>2]|0;if(j){g=j;Ba=81;break a}c[l>>2]=n}else e=x+12|0;k=c[x>>2]|0;n=(c[e>>2]|0)+k|0;o=wa;l=c[o+4>>2]|0;k=(c[ia>>2]|0)+(k<<3)|0;c[k>>2]=c[o>>2];c[k+4>>2]=l;a[n>>0]=1;n=(c[x>>2]|0)+1|0;c[x>>2]=n;a[h>>0]=0}if(!(((n|0)!=0?(oa=n+-1|0,pa=c[ia>>2]|0,((c[pa+(oa<<3)>>2]|0)+1-(c[ya>>2]|0)|0)>>>0<3):0)?((c[pa+(oa<<3)+4>>2]|0)+1-(c[K>>2]|0)|0)>>>0<3:0)){l=x+4|0;o=c[l>>2]|0;e=n+1|0;c[Aa>>2]=0;if(e>>>0>o>>>0){j=c[x+24>>2]|0;n=o;do n=n+16+(n>>>1)|0;while(n>>>0>>0);c[ia>>2]=hh(j,8,o,n,c[ia>>2]|0,Aa)|0;e=c[Aa>>2]|0;if(e){g=e;Ba=93;break a}e=x+12|0;c[e>>2]=hh(j,1,o,n,c[e>>2]|0,Aa)|0;j=c[Aa>>2]|0;if(j){g=j;Ba=93;break a}c[l>>2]=n}else e=x+12|0;k=c[x>>2]|0;n=(c[e>>2]|0)+k|0;o=ya;l=c[o+4>>2]|0;k=(c[ia>>2]|0)+(k<<3)|0;c[k>>2]=c[o>>2];c[k+4>>2]=l;a[n>>0]=1;n=(c[x>>2]|0)+1|0;c[x>>2]=n;a[h>>0]=0}k=x+4|0;l=c[k>>2]|0;e=n+2|0;c[Aa>>2]=0;if(e>>>0>l>>>0){o=c[x+24>>2]|0;n=l;do n=n+16+(n>>>1)|0;while(n>>>0>>0);c[ia>>2]=hh(o,8,l,n,c[ia>>2]|0,Aa)|0;e=c[Aa>>2]|0;if(e){g=e;Ba=101;break a}j=x+12|0;c[j>>2]=hh(o,1,l,n,c[j>>2]|0,Aa)|0;e=c[Aa>>2]|0;if(e){g=e;Ba=101;break a}c[k>>2]=n}else j=x+12|0;e=c[ia>>2]|0;o=c[x>>2]|0;l=c[j>>2]|0;Ea=va;Da=c[Ea+4>>2]|0;n=e+(o<<3)|0;c[n>>2]=c[Ea>>2];c[n+4>>2]=Da;n=o+1|0;e=e+(n<<3)|0;c[e>>2]=ja;c[e+4>>2]=ka;a[l+o>>0]=0;a[l+n>>0]=1;n=c[x>>2]|0;l=n+2|0;c[x>>2]=l;a[h>>0]=0;if(((l|0)!=0?(qa=n+1|0,ra=c[ia>>2]|0,((c[ra+(qa<<3)>>2]|0)+1-(c[ya>>2]|0)|0)>>>0<3):0)?((c[ra+(qa<<3)+4>>2]|0)+1-(c[K>>2]|0)|0)>>>0<3:0)break;l=c[k>>2]|0;e=n+3|0;c[Aa>>2]=0;if(e>>>0>l>>>0){o=c[x+24>>2]|0;n=l;do n=n+16+(n>>>1)|0;while(n>>>0>>0);e=n;c[ia>>2]=hh(o,8,l,e,c[ia>>2]|0,Aa)|0;n=c[Aa>>2]|0;if(n){g=n;Ba=112;break a}c[j>>2]=hh(o,1,l,e,c[j>>2]|0,Aa)|0;n=c[Aa>>2]|0;if(n){g=n;Ba=112;break a}c[k>>2]=e}Da=c[x>>2]|0;Ea=(c[j>>2]|0)+Da|0;l=ya;k=c[l+4>>2]|0;Da=(c[ia>>2]|0)+(Da<<3)|0;c[Da>>2]=c[l>>2];c[Da+4>>2]=k;a[Ea>>0]=1;c[x>>2]=(c[x>>2]|0)+1;a[h>>0]=0}else Ba=113;while(0);if((Ba|0)==113){Ba=0;k=x+4|0;o=c[k>>2]|0;e=(c[x>>2]|0)+2|0;c[Aa>>2]=0;if(e>>>0>o>>>0){l=c[x+24>>2]|0;n=o;do n=n+16+(n>>>1)|0;while(n>>>0>>0);j=x+8|0;c[j>>2]=hh(l,8,o,n,c[j>>2]|0,Aa)|0;h=c[Aa>>2]|0;if(h){g=x;Ba=121;break a}e=x+12|0;c[e>>2]=hh(l,1,o,n,c[e>>2]|0,Aa)|0;h=c[Aa>>2]|0;if(h){g=x;Ba=121;break a}c[k>>2]=n;h=j}else{h=x+8|0;e=x+12|0}l=c[h>>2]|0;k=c[x>>2]|0;Da=c[e>>2]|0;o=va;j=c[o+4>>2]|0;Ea=l+(k<<3)|0;c[Ea>>2]=c[o>>2];c[Ea+4>>2]=j;Ea=k+1|0;j=ya;o=c[j+4>>2]|0;l=l+(Ea<<3)|0;c[l>>2]=c[j>>2];c[l+4>>2]=o;a[Da+k>>0]=0;a[Da+Ea>>0]=1;c[x>>2]=(c[x>>2]|0)+2;a[x+16>>0]=0}w=w+1|0;if((w|0)>=2)break;else x=x+32|0}e=y+-16|0;c[b>>2]=z;if(e>>>0>>0){Ba=124;break}else t=0}if((Ba|0)==36){a[aa>>0]=0;Ea=g;i=Ca;return Ea|0}else if((Ba|0)==81){a[h>>0]=0;Ea=g;i=Ca;return Ea|0}else if((Ba|0)==93){a[h>>0]=0;Ea=g;i=Ca;return Ea|0}else if((Ba|0)==101){a[h>>0]=0;Ea=g;i=Ca;return Ea|0}else if((Ba|0)==112){a[h>>0]=0;Ea=g;i=Ca;return Ea|0}else if((Ba|0)==121){a[g+16>>0]=0;Ea=h;i=Ca;return Ea|0}else if((Ba|0)==124){Ba=f;Da=c[Ba+4>>2]|0;Ea=ca;c[Ea>>2]=c[Ba>>2];c[Ea+4>>2]=Da;Ea=0;i=Ca;return Ea|0}else if((Ba|0)==125){i=Ca;return g|0}return 0} +function mS(d){d=d|0;var f=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0;v=i;n=c[d+436>>2]|0;o=d+36|0;if((c[o>>2]|0)<=0){i=v;return}r=n+44|0;s=d+68|0;t=0;u=c[d+196>>2]|0;l=0;k=0;while(1){f=c[u+36>>2]|0;j=u+40|0;a:do switch((f<<8)+(c[j>>2]|0)|0){case 514:{f=0;m=26;break}case 3341:{f=0;m=36;break}case 3855:{f=0;m=38;break}case 1032:{f=0;m=52;break}case 258:{f=0;m=55;break}case 4104:{f=0;m=40;break}case 1285:{f=0;m=29;break}case 2056:{f=c[s>>2]|0;if((f|0)==1){m=57;break a}else if((f|0)==2){m=58;break a}else if(!f){f=0;m=56;break a}else{f=c[d>>2]|0;c[f+20>>2]=49;Id[c[f>>2]&511](d);f=l;m=k;break a}}case 1542:{f=0;m=30;break}case 3598:{f=0;m=37;break}case 513:{f=0;m=47;break}case 774:{f=0;m=53;break}case 2313:{f=0;m=32;break}case 1806:{f=0;m=49;break}case 2570:{f=0;m=33;break}case 2064:{f=0;m=48;break}case 3084:{f=0;m=35;break}case 1799:{f=0;m=31;break}case 2052:{f=0;m=44;break}case 1548:{f=0;m=50;break}case 1026:{f=0;m=46;break}case 1028:{f=0;m=28;break}case 2565:{f=0;m=43;break}case 1539:{f=0;m=45;break}case 4112:{f=0;m=39;break}case 516:{f=0;m=54;break}case 771:{f=0;m=27;break}case 257:{f=0;m=25;break}case 1290:{f=0;m=51;break}case 3078:{f=0;m=42;break}case 3591:{f=0;m=41;break}case 2827:{f=0;m=34;break}default:{m=c[d>>2]|0;c[m+20>>2]=7;c[m+24>>2]=f;c[m+28>>2]=c[j>>2];Id[c[m>>2]&511](d);f=l;m=k}}while(0);c[n+(t<<2)+4>>2]=m;do if(((a[u+52>>0]|0)!=0?(p=r+(t<<2)|0,(c[p>>2]|0)!=(f|0)):0)?(q=c[u+80>>2]|0,(q|0)!=0):0){c[p>>2]=f;if((f|0)==2){j=c[u+84>>2]|0;k=0;l=0;while(1){x=+h[278456+(l<<3)>>3];g[j+(k<<2)>>2]=+(e[q+(k<<1)>>1]|0)*x*.125;w=k|1;g[j+(w<<2)>>2]=+(e[q+(w<<1)>>1]|0)*x*1.387039845*.125;w=w+1|0;g[j+(w<<2)>>2]=+(e[q+(w<<1)>>1]|0)*x*1.306562965*.125;w=k|3;g[j+(w<<2)>>2]=+(e[q+(w<<1)>>1]|0)*x*1.175875602*.125;y=w+1|0;g[j+(y<<2)>>2]=+(e[q+(y<<1)>>1]|0)*x*.125;y=w+2|0;g[j+(y<<2)>>2]=+(e[q+(y<<1)>>1]|0)*x*.785694958*.125;w=w+3|0;g[j+(w<<2)>>2]=+(e[q+(w<<1)>>1]|0)*x*.5411961*.125;w=k|7;g[j+(w<<2)>>2]=+(e[q+(w<<1)>>1]|0)*x*.275899379*.125;l=l+1|0;if((l|0)==8)break;else k=k+8|0}}else if((f|0)==1){j=c[u+84>>2]|0;k=0;do{c[j+(k<<2)>>2]=(ea(b[278328+(k<<1)>>1]|0,e[q+(k<<1)>>1]|0)|0)+2048>>12;k=k+1|0}while((k|0)!=64)}else if(!f){j=c[u+84>>2]|0;k=0;do{c[j+(k<<2)>>2]=e[q+(k<<1)>>1];k=k+1|0}while((k|0)!=64)}else{y=c[d>>2]|0;c[y+20>>2]=49;Id[c[y>>2]&511](d);break}}while(0);t=t+1|0;if((t|0)>=(c[o>>2]|0))break;else{u=u+88|0;l=f;k=m}}i=v;return}function nS(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;p=c[b+432>>2]|0;o=b+376|0;f=c[o>>2]|0;e=(f|0)==0;if(!(a[b+201>>0]|0)){if((e?(c[b+384>>2]|0)==0:0)?(c[b+388>>2]|0)==0:0){o=c[b+380>>2]|0;if((a[b+200>>0]|0)!=0|(o|0)<64?(o|0)!=(c[b+400>>2]|0):0)g=45}else g=45;if((g|0)==45){o=c[b>>2]|0;c[o+20>>2]=125;Jd[c[o+4>>2]&255](b,-1)}n=b+400|0;c[p+4>>2]=(c[n>>2]|0)==63?283:282;d=b+304|0;if((c[d>>2]|0)>0){e=p+68|0;f=p+24|0;g=p+84|0;j=0;do{h=c[b+(j<<2)+308>>2]|0;o=c[h+20>>2]|0;I0(b,1,o,e+(o<<2)|0);if(c[n>>2]|0){o=c[h+24>>2]|0;I0(b,0,o,g+(o<<2)|0)}c[f+(j<<2)>>2]=0;j=j+1|0}while((j|0)<(c[d>>2]|0))}g=b+332|0;if((c[g>>2]|0)<=0){o=p+16|0;c[o>>2]=0;o=p+12|0;c[o>>2]=0;o=p+40|0;a[o>>0]=0;o=b+252|0;o=c[o>>2]|0;b=p+44|0;p=o;c[b>>2]=p;i=q;return}e=p+68|0;f=p+100|0;j=p+84|0;h=p+140|0;k=p+180|0;m=0;do{d=c[b+(c[b+(m<<2)+336>>2]<<2)+308>>2]|0;c[f+(m<<2)>>2]=c[e+(c[d+20>>2]<<2)>>2];c[h+(m<<2)>>2]=c[j+(c[d+24>>2]<<2)>>2];a:do if(!(a[d+52>>0]|0))c[k+(m<<2)>>2]=0;else{l=c[d+40>>2]|0;d=c[d+36>>2]|0;switch(c[n>>2]|0){case 3:{l=l+-1|0;o=d+-1|0;c[k+(m<<2)>>2]=(c[278520+((l>>>0>1?1:l)<<3)+((o>>>0>1?1:o)<<2)>>2]|0)+1;break a}case 8:{l=l+-1|0;o=d+-1|0;c[k+(m<<2)>>2]=(c[278536+((l>>>0>2?2:l)*12|0)+((o>>>0>2?2:o)<<2)>>2]|0)+1;break a}case 0:{c[k+(m<<2)>>2]=1;break a}case 15:{l=l+-1|0;o=d+-1|0;c[k+(m<<2)>>2]=(c[278576+((l>>>0>3?3:l)<<4)+((o>>>0>3?3:o)<<2)>>2]|0)+1;break a}case 24:{l=l+-1|0;o=d+-1|0;c[k+(m<<2)>>2]=(c[278640+((l>>>0>4?4:l)*20|0)+((o>>>0>4?4:o)<<2)>>2]|0)+1;break a}case 35:{l=l+-1|0;o=d+-1|0;c[k+(m<<2)>>2]=(c[278744+((l>>>0>5?5:l)*24|0)+((o>>>0>5?5:o)<<2)>>2]|0)+1;break a}case 48:{l=l+-1|0;o=d+-1|0;c[k+(m<<2)>>2]=(c[278888+((l>>>0>6?6:l)*28|0)+((o>>>0>6?6:o)<<2)>>2]|0)+1;break a}default:{l=l+-1|0;o=d+-1|0;c[k+(m<<2)>>2]=(c[279088+((l>>>0>7?7:l)<<5)+((o>>>0>7?7:o)<<2)>>2]|0)+1;break a}}}while(0);m=m+1|0}while((m|0)<(c[g>>2]|0));o=p+16|0;c[o>>2]=0;o=p+12|0;c[o>>2]=0;o=p+40|0;a[o>>0]=0;o=b+252|0;o=c[o>>2]|0;b=p+44|0;p=o;c[b>>2]=p;i=q;return}k=b+380|0;d=c[k>>2]|0;if(e)if(!d)g=7;else g=11;else if(((d|0)>=(f|0)?(d|0)<=(c[b+400>>2]|0):0)?(c[b+304>>2]|0)==1:0)g=7;else g=11;do if((g|0)==7){d=c[b+384>>2]|0;if(d){d=d+-1|0;if((d|0)!=(c[b+388>>2]|0)){g=11;break}}else d=c[b+388>>2]|0;if((d|0)>13)g=11}while(0);if((g|0)==11){n=c[b>>2]|0;c[n+20>>2]=17;c[n+24>>2]=f;c[n+28>>2]=c[k>>2];c[n+32>>2]=c[b+384>>2];c[n+36>>2]=c[b+388>>2];Id[c[n>>2]&511](b)}n=b+304|0;d=c[n>>2]|0;if((d|0)>0){f=b+140|0;m=b+384|0;j=b+388|0;h=0;do{g=c[(c[b+(h<<2)+308>>2]|0)+4>>2]|0;e=c[f>>2]|0;d=c[o>>2]|0;if(d){if((c[e+(g<<8)>>2]|0)<0){d=c[b>>2]|0;c[d+20>>2]=118;c[d+24>>2]=g;c[d+28>>2]=0;Jd[c[d+4>>2]&255](b,-1);d=c[o>>2]|0}}else d=0;if((d|0)<=(c[k>>2]|0))while(1){l=e+(g<<8)+(d<<2)|0;r=c[l>>2]|0;if((c[m>>2]|0)!=(((r|0)<0?0:r)|0)){r=c[b>>2]|0;c[r+20>>2]=118;c[r+24>>2]=g;c[r+28>>2]=d;Jd[c[r+4>>2]&255](b,-1)}c[l>>2]=c[j>>2];if((d|0)<(c[k>>2]|0))d=d+1|0;else break}h=h+1|0;d=c[n>>2]|0}while((h|0)<(d|0));h=m}else h=b+384|0;l=c[o>>2]|0;g=(l|0)==0;e=p+4|0;do if(!(c[h>>2]|0))if(g){c[e>>2]=278;break}else{c[e>>2]=279;break}else if(g){c[e>>2]=280;break}else{c[e>>2]=281;break}while(0);b:do if((d|0)>0){f=p+48|0;d=p+20|0;m=d+4|0;j=p+64|0;g=0;while(1){e=c[b+(g<<2)+308>>2]|0;if(!l){if(!(c[h>>2]|0)){r=c[e+20>>2]|0;I0(b,1,r,f+(r<<2)|0)}}else{k=c[e+24>>2]|0;r=f+(k<<2)|0;I0(b,0,k,r);c[j>>2]=c[r>>2]}c[m+(g<<2)>>2]=0;g=g+1|0;if((g|0)>=(c[n>>2]|0))break b;l=c[o>>2]|0}}else d=p+20|0;while(0);c[d>>2]=0;r=p+16|0;c[r>>2]=0;r=p+12|0;c[r>>2]=0;r=p+40|0;a[r>>0]=0;b=b+252|0;b=c[b>>2]|0;r=p+44|0;c[r>>2]=b;i=q;return}function oS(a){a=a|0;var b=0;b=(c[a+432>>2]|0)+16|0;a=(c[a+428>>2]|0)+20|0;c[a>>2]=(c[a>>2]|0)+((c[b>>2]|0)/8|0);c[b>>2]=0;return}function pS(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=i;G=b+424|0;d=c[G>>2]|0;H=d+17|0;if(a[H>>0]|0){M=2;i=N;return M|0}I=b+428|0;K=d+20|0;L=b+304|0;E=d+16|0;F=b+32|0;n=b+192|0;o=b+36|0;p=b+280|0;q=b+284|0;r=b+196|0;s=b+200|0;t=b+201|0;u=b+380|0;v=b+376|0;w=b+384|0;x=b+388|0;m=b+392|0;y=b+396|0;z=b+400|0;A=b+288|0;B=b+292|0;C=b+28|0;D=b+296|0;a:while(1){d=Ld[c[(c[I>>2]|0)+4>>2]&511](b)|0;if((d|0)==2){M=57;break}else if((d|0)!=1){M=62;break}d=c[K>>2]|0;do if(!d){if(!(a[E>>0]|0)){k=c[b>>2]|0;c[k+20>>2]=36;Id[c[k>>2]&511](b)}if(!(c[L>>2]|0))continue a;else{M=56;break a}}else if((d|0)==1){if(!((c[F>>2]|0)<=65500?(c[C>>2]|0)<=65500:0)){k=c[b>>2]|0;c[k+20>>2]=42;c[k+24>>2]=65500;Id[c[k>>2]&511](b)}d=c[n>>2]|0;if((d+-8|0)>>>0>4){k=c[b>>2]|0;c[k+20>>2]=16;c[k+24>>2]=d;Id[c[k>>2]&511](b)}d=c[o>>2]|0;if((d|0)>10){k=c[b>>2]|0;c[k+20>>2]=27;c[k+24>>2]=d;c[k+28>>2]=10;Id[c[k>>2]&511](b);d=c[o>>2]|0}c[p>>2]=1;c[q>>2]=1;if((d|0)>0){g=1;j=1;k=0;l=c[r>>2]|0;while(1){e=l+8|0;f=c[e>>2]|0;h=l+12|0;if((f+-1|0)>>>0<=3?(J=c[h>>2]|0,(J+-1|0)>>>0<=3):0)e=J;else{j=c[b>>2]|0;c[j+20>>2]=19;Id[c[j>>2]&511](b);j=c[p>>2]|0;f=c[e>>2]|0;g=c[q>>2]|0;e=c[h>>2]|0;d=c[o>>2]|0}j=(j|0)>(f|0)?j:f;c[p>>2]=j;g=(g|0)>(e|0)?g:e;c[q>>2]=g;k=k+1|0;if((k|0)>=(d|0)){e=d;break}else l=l+88|0}}else e=d;b:do if(!(a[s>>0]|0)){if((a[t>>0]|0)!=0?(c[L>>2]|0)!=0:0){M=22;break}do switch(c[u>>2]|0){case 195:{c[m>>2]=14;c[y>>2]=285352;c[z>>2]=63;d=14;break b}case 224:{c[m>>2]=15;c[y>>2]=285352;c[z>>2]=63;d=15;break b}case 35:{c[m>>2]=6;c[y>>2]=285936;c[z>>2]=35;d=6;break b}case 0:{c[m>>2]=1;c[y>>2]=285352;c[z>>2]=0;d=1;break b}case 80:{c[m>>2]=9;c[y>>2]=285352;c[z>>2]=63;d=9;break b}case 168:{c[m>>2]=13;c[y>>2]=285352;c[z>>2]=63;d=13;break b}case 24:{c[m>>2]=5;c[y>>2]=286144;c[z>>2]=24;d=5;break b}case 15:{c[m>>2]=4;c[y>>2]=286312;c[z>>2]=15;d=4;break b}case 63:{c[m>>2]=8;c[y>>2]=285352;c[z>>2]=63;d=8;break b}case 48:{c[m>>2]=7;c[y>>2]=285672;c[z>>2]=48;d=7;break b}case 143:{c[m>>2]=12;c[y>>2]=285352;c[z>>2]=63;d=12;break b}case 99:{c[m>>2]=10;c[y>>2]=285352;c[z>>2]=63;d=10;break b}case 255:{c[m>>2]=16;c[y>>2]=285352;c[z>>2]=63;d=16;break b}case 8:{c[m>>2]=3;c[y>>2]=286440;c[z>>2]=8;d=3;break b}case 120:{c[m>>2]=11;c[y>>2]=285352;c[z>>2]=63;d=11;break b}case 3:{c[m>>2]=2;c[y>>2]=286544;c[z>>2]=3;d=2;break b}default:{d=c[b>>2]|0;c[d+20>>2]=17;c[d+24>>2]=c[v>>2];c[d+28>>2]=c[u>>2];c[d+32>>2]=c[w>>2];c[d+36>>2]=c[x>>2];Id[c[d>>2]&511](b);d=c[m>>2]|0;e=c[o>>2]|0;break b}}while(0)}else M=22;while(0);if((M|0)==22){M=0;c[m>>2]=8;c[y>>2]=285352;c[z>>2]=63;d=8}c[A>>2]=d;c[B>>2]=d;if((e|0)>0){e=1;f=c[r>>2]|0;while(1){c[f+36>>2]=d;c[f+40>>2]=d;h=f+8|0;k=ea(c[h>>2]|0,c[C>>2]|0)|0;c[f+28>>2]=UH(k,ea(c[p>>2]|0,d)|0)|0;k=f+12|0;j=ea(c[k>>2]|0,c[F>>2]|0)|0;c[f+32>>2]=UH(j,ea(c[m>>2]|0,c[q>>2]|0)|0)|0;h=ea(c[h>>2]|0,c[C>>2]|0)|0;c[f+44>>2]=UH(h,c[p>>2]|0)|0;k=ea(c[k>>2]|0,c[F>>2]|0)|0;c[f+48>>2]=UH(k,c[q>>2]|0)|0;a[f+52>>0]=1;c[f+80>>2]=0;if((e|0)>=(c[o>>2]|0))break;d=c[m>>2]|0;e=e+1|0;f=f+88|0}d=c[m>>2]|0}c[D>>2]=UH(c[F>>2]|0,ea(d,c[q>>2]|0)|0)|0;d=c[L>>2]|0;if((d|0)>=(c[o>>2]|0)?(a[t>>0]|0)==0:0){a[(c[G>>2]|0)+16>>0]=0;break}a[(c[G>>2]|0)+16>>0]=1}else d=c[L>>2]|0;while(0);if(d){M=52;break}c[K>>2]=2}if((M|0)==52){c[K>>2]=0;M=1;i=N;return M|0}else if((M|0)==56){rS(b);M=1;i=N;return M|0}else if((M|0)==57){a[H>>0]=1;if(!(c[K>>2]|0)){e=b+132|0;d=c[b+124>>2]|0;if((c[e>>2]|0)<=(d|0)){M=2;i=N;return M|0}c[e>>2]=d;M=2;i=N;return M|0}else{if(!(a[(c[I>>2]|0)+13>>0]|0)){M=2;i=N;return M|0}M=c[b>>2]|0;c[M+20>>2]=62;Id[c[M>>2]&511](b);M=2;i=N;return M|0}}else if((M|0)==62){i=N;return d|0}return 0}function qS(b){b=b|0;var d=0,e=0;d=i;e=c[b+424>>2]|0;c[e>>2]=154;a[e+16>>0]=0;a[e+17>>0]=0;c[e+20>>2]=1;Id[c[(c[b>>2]|0)+16>>2]&511](b);Id[c[c[b+428>>2]>>2]&511](b);c[b+140>>2]=0;i=d;return}function rS(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;j=i;h=a+304|0;b=c[h>>2]|0;if((b|0)!=1){if((b+-1|0)>>>0>3){e=c[a>>2]|0;c[e+20>>2]=27;c[e+24>>2]=b;c[e+28>>2]=4;Id[c[e>>2]&511](a)}f=a+392|0;c[a+324>>2]=UH(c[a+28>>2]|0,ea(c[f>>2]|0,c[a+280>>2]|0)|0)|0;c[a+328>>2]=UH(c[a+32>>2]|0,ea(c[f>>2]|0,c[a+284>>2]|0)|0)|0;f=a+332|0;c[f>>2]=0;if((c[h>>2]|0)>0){e=0;d=0;while(1){k=c[a+(d<<2)+308>>2]|0;n=c[k+8>>2]|0;c[k+56>>2]=n;m=c[k+12>>2]|0;c[k+60>>2]=m;b=ea(m,n)|0;c[k+64>>2]=b;c[k+68>>2]=ea(c[k+36>>2]|0,n)|0;l=((c[k+28>>2]|0)>>>0)%(n>>>0)|0;c[k+72>>2]=(l|0)==0?n:l;l=((c[k+32>>2]|0)>>>0)%(m>>>0)|0;c[k+76>>2]=(l|0)==0?m:l;if((b+e|0)>10){n=c[a>>2]|0;c[n+20>>2]=14;Id[c[n>>2]&511](a)}if((b|0)>0)do{b=b+-1|0;n=c[f>>2]|0;c[f>>2]=n+1;c[a+(n<<2)+336>>2]=d}while((b|0)>0);d=d+1|0;b=c[h>>2]|0;if((d|0)>=(b|0))break;e=c[f>>2]|0}if((b|0)>0)g=14}}else{b=c[a+308>>2]|0;c[a+324>>2]=c[b+28>>2];g=c[b+32>>2]|0;c[a+328>>2]=g;c[b+56>>2]=1;c[b+60>>2]=1;c[b+64>>2]=1;c[b+68>>2]=c[b+36>>2];c[b+72>>2]=1;n=c[b+12>>2]|0;g=(g>>>0)%(n>>>0)|0;c[b+76>>2]=(g|0)==0?n:g;c[a+332>>2]=1;c[a+336>>2]=0;b=1;g=14}if((g|0)==14){g=a+4|0;f=0;do{d=c[a+(f<<2)+308>>2]|0;e=d+80|0;if(!(c[e>>2]|0)){d=c[d+16>>2]|0;b=a+(d<<2)+144|0;if(!(d>>>0<=3?(c[b>>2]|0)!=0:0)){n=c[a>>2]|0;c[n+20>>2]=54;c[n+24>>2]=d;Id[c[n>>2]&511](a)}n=Od[c[c[g>>2]>>2]&255](a,1,130)|0;Aga(n|0,c[b>>2]|0,130)|0;c[e>>2]=n;b=c[h>>2]|0}f=f+1|0}while((f|0)<(b|0))}Id[c[c[a+432>>2]>>2]&511](a);n=a+416|0;Id[c[c[n>>2]>>2]&511](a);c[c[a+424>>2]>>2]=c[(c[n>>2]|0)+4>>2];i=j;return}function sS(a){a=a|0;var b=0;b=i;Id[c[(c[a+432>>2]|0)+8>>2]&511](a);c[c[a+424>>2]>>2]=154;i=b;return}function tS(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=i;u=c[b+412>>2]|0;if((d|0)==2){c[u+4>>2]=47;i=v;return}else if(!d){d=u+4|0;if(!(a[(c[b+440>>2]|0)+8>>0]|0))c[d>>2]=46;else{c[d>>2]=45;s=c[b+292>>2]|0;m=c[b+36>>2]|0;if((m|0)>0){n=u+56|0;o=u+60|0;p=u+8|0;q=s+2|0;r=s+-2|0;t=0;l=c[b+196>>2]|0;while(1){j=(ea(c[l+40>>2]|0,c[l+12>>2]|0)|0)/(s|0)|0;k=c[(c[n>>2]|0)+(t<<2)>>2]|0;g=c[(c[o>>2]|0)+(t<<2)>>2]|0;h=c[p+(t<<2)>>2]|0;d=ea(j,q)|0;if((d|0)>0){b=0;do{e=c[h+(b<<2)>>2]|0;c[g+(b<<2)>>2]=e;c[k+(b<<2)>>2]=e;b=b+1|0}while((b|0)!=(d|0))}d=j<<1;if((j|0)>0){b=ea(j,s)|0;e=ea(j,r)|0;f=0;do{w=f+b|0;x=f+e|0;c[g+(x<<2)>>2]=c[h+(w<<2)>>2];c[g+(w<<2)>>2]=c[h+(x<<2)>>2];f=f+1|0}while((f|0)<(d|0));d=0;do{c[k+(d-j<<2)>>2]=c[k>>2];d=d+1|0}while((d|0)!=(j|0))}t=t+1|0;if((t|0)==(m|0))break;else l=l+88|0}}c[u+64>>2]=0;c[u+68>>2]=0;c[u+76>>2]=0}a[u+48>>0]=0;c[u+52>>2]=0;i=v;return}else{x=c[b>>2]|0;c[x+20>>2]=3;Id[c[x>>2]&511](b);i=v;return}}function uS(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;l=c[b+24>>2]|0;m=l+4|0;k=l+12|0;n=b+428|0;d=c[m>>2]|0;e=c[l>>2]|0;a:while(1){if(!d){if(!((Ld[c[k>>2]&511](b)|0)<<24>>24)){d=0;f=19;break}f=c[l>>2]|0;d=c[m>>2]|0}else f=e;d=d+-1|0;e=f+1|0;if((a[f>>0]|0)!=-1)do{h=(c[n>>2]|0)+20|0;c[h>>2]=(c[h>>2]|0)+1;c[l>>2]=e;c[m>>2]=d;if(!d){if(!((Ld[c[k>>2]&511](b)|0)<<24>>24)){d=0;f=19;break a}f=c[l>>2]|0;d=c[m>>2]|0}else f=e;d=d+-1|0;e=f+1|0}while((a[f>>0]|0)!=-1);do{if(!d){if(!((Ld[c[k>>2]&511](b)|0)<<24>>24)){d=0;f=19;break a}d=c[m>>2]|0;f=c[l>>2]|0}else f=e;d=d+-1|0;e=f+1|0;f=a[f>>0]|0}while(f<<24>>24==-1);h=f&255;g=(c[n>>2]|0)+20|0;j=c[g>>2]|0;if(f<<24>>24){f=16;break}c[g>>2]=j+2;c[l>>2]=e;c[m>>2]=d}if((f|0)==16){if(j){k=c[b>>2]|0;c[k+20>>2]=119;c[k+24>>2]=j;c[k+28>>2]=h;Jd[c[k+4>>2]&255](b,-1);c[(c[n>>2]|0)+20>>2]=0}c[b+404>>2]=h;c[l>>2]=e;c[m>>2]=d;b=1;i=o;return b|0}else if((f|0)==19){i=o;return d|0}return 0}function vS(b){b=b|0;var d=0;d=c[b+428>>2]|0;c[b+196>>2]=0;c[b+124>>2]=0;c[b+404>>2]=0;a[d+12>>0]=0;a[d+13>>0]=0;c[d+20>>2]=0;c[d+160>>2]=0;return}function wS(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0;ub=i;i=i+288|0;Wa=ub+256|0;_a=ub;rb=f+404|0;sb=f+428|0;J=f+24|0;U=f+203|0;da=f+219|0;oa=f+235|0;za=f+204|0;Ka=f+220|0;Ua=f+236|0;Va=f+205|0;z=f+221|0;A=f+237|0;B=f+206|0;C=f+222|0;D=f+238|0;E=f+207|0;F=f+223|0;G=f+239|0;H=f+208|0;I=f+224|0;K=f+240|0;L=f+209|0;M=f+225|0;N=f+241|0;O=f+210|0;P=f+226|0;Q=f+242|0;R=f+211|0;S=f+227|0;T=f+243|0;V=f+212|0;W=f+228|0;X=f+244|0;Y=f+213|0;Z=f+229|0;_=f+245|0;$=f+214|0;aa=f+230|0;ba=f+246|0;ca=f+215|0;ea=f+231|0;fa=f+247|0;ga=f+216|0;ha=f+232|0;ia=f+248|0;ja=f+217|0;ka=f+233|0;la=f+249|0;ma=f+218|0;na=f+234|0;pa=f+250|0;qa=f+252|0;ra=f+40|0;sa=f+268|0;ta=f+272|0;ua=f+256|0;va=f+257|0;wa=f+258|0;xa=f+259|0;ya=f+260|0;Aa=f+262|0;Ba=f+264|0;Ca=f+265|0;Da=Wa+1|0;Ea=Wa+2|0;Fa=Wa+3|0;Ga=Wa+4|0;Ha=Wa+5|0;Ia=Wa+6|0;Ja=Wa+7|0;La=Wa+8|0;Ma=Wa+9|0;Na=Wa+10|0;Oa=Wa+11|0;Pa=Wa+12|0;Qa=Wa+13|0;Ra=Wa+14|0;Sa=Wa+15|0;Ta=Wa+16|0;jb=f+36|0;kb=f+196|0;g=c[rb>>2]|0;a:while(1){do if(!g){if(a[(c[sb>>2]|0)+12>>0]|0){if(!((uS(f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[rb>>2]|0;break}p=c[J>>2]|0;m=p+4|0;g=c[m>>2]|0;if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0}h=c[p>>2]|0;g=g+-1|0;o=h+1|0;h=a[h>>0]|0;j=h&255;if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}k=c[m>>2]|0;o=c[p>>2]|0}else k=g;r=a[o>>0]|0;g=r&255;if(h<<24>>24!=-1|r<<24>>24!=-40){r=c[f>>2]|0;c[r+20>>2]=55;c[r+24>>2]=j;c[r+28>>2]=g;Id[c[r>>2]&511](f)}c[rb>>2]=g;c[p>>2]=o+1;c[m>>2]=k+-1}while(0);do switch(g|0){case 196:{n=c[J>>2]|0;q=n+4|0;g=c[q>>2]|0;if(!g){if(!((Ld[c[n+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[q>>2]|0}h=c[n>>2]|0;g=g+-1|0;o=h+1|0;h=d[h>>0]<<8;if(!g){if(!((Ld[c[n+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[q>>2]|0;o=c[n>>2]|0}k=g+-1|0;g=o+1|0;o=(d[o>>0]|h)+-2|0;if((o|0)>16){l=n+12|0;do{if(!k){if(!((Ld[c[l>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}k=c[q>>2]|0;g=c[n>>2]|0}h=d[g>>0]|0;m=c[f>>2]|0;c[m+20>>2]=82;c[m+24>>2]=h;Jd[c[m+4>>2]&255](f,1);a[Wa>>0]=0;k=k+-1|0;m=0;j=1;g=g+1|0;do{if(!k){if(!((Ld[c[l>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}k=c[q>>2]|0;g=c[n>>2]|0}r=a[g>>0]|0;a[Wa+j>>0]=r;m=(r&255)+m|0;j=j+1|0;k=k+-1|0;g=g+1|0}while((j|0)<17);p=o+-17|0;r=c[f>>2]|0;c[r+24>>2]=d[Da>>0];c[r+28>>2]=d[Ea>>0];c[r+32>>2]=d[Fa>>0];c[r+36>>2]=d[Ga>>0];c[r+40>>2]=d[Ha>>0];c[r+44>>2]=d[Ia>>0];c[r+48>>2]=d[Ja>>0];c[r+52>>2]=d[La>>0];c[r+20>>2]=88;Jd[c[r+4>>2]&255](f,2);r=c[f>>2]|0;c[r+24>>2]=d[Ma>>0];c[r+28>>2]=d[Na>>0];c[r+32>>2]=d[Oa>>0];c[r+36>>2]=d[Pa>>0];c[r+40>>2]=d[Qa>>0];c[r+44>>2]=d[Ra>>0];c[r+48>>2]=d[Sa>>0];c[r+52>>2]=d[Ta>>0];c[r+20>>2]=88;Jd[c[r+4>>2]&255](f,2);if((m|0)>256|(p|0)<(m|0)){r=c[f>>2]|0;c[r+20>>2]=9;Id[c[r>>2]&511](f)}Cga(_a|0,0,256)|0;if((m|0)>0){j=0;do{if(!k){if(!((Ld[c[l>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}k=c[q>>2]|0;o=c[n>>2]|0}else o=g;k=k+-1|0;g=o+1|0;a[_a+j>>0]=a[o>>0]|0;j=j+1|0}while((j|0)<(m|0))}o=p-m|0;if(!(h&16))m=f+(h<<2)+160|0;else{h=h+-16|0;m=f+(h<<2)+176|0}if(h>>>0>3){r=c[f>>2]|0;c[r+20>>2]=31;c[r+24>>2]=h;Id[c[r>>2]&511](f)}h=c[m>>2]|0;if(!h){h=PF(f)|0;c[m>>2]=h}h=h+0|0;j=Wa+0|0;p=h+17|0;do{a[h>>0]=a[j>>0]|0;h=h+1|0;j=j+1|0}while((h|0)<(p|0));Aga((c[m>>2]|0)+17|0,_a|0,256)|0}while((o|0)>16)}if(o){r=c[f>>2]|0;c[r+20>>2]=12;Id[c[r>>2]&511](f)}c[n>>2]=g;c[q>>2]=k;break}case 204:{n=c[J>>2]|0;q=n+4|0;g=c[q>>2]|0;if(!g){if(!((Ld[c[n+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[q>>2]|0}k=c[n>>2]|0;g=g+-1|0;o=k+1|0;k=d[k>>0]<<8;if(!g){if(!((Ld[c[n+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[q>>2]|0;o=c[n>>2]|0}h=g+-1|0;g=o+1|0;k=(d[o>>0]|k)+-2|0;if((k|0)>0){l=n+12|0;o=h;do{if(!o){if(!((Ld[c[l>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}o=c[q>>2]|0;g=c[n>>2]|0}o=o+-1|0;h=g+1|0;p=a[g>>0]|0;m=p&255;if(!o){if(!((Ld[c[l>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}o=c[q>>2]|0;h=c[n>>2]|0}o=o+-1|0;g=h+1|0;h=a[h>>0]|0;j=h&255;k=k+-2|0;r=c[f>>2]|0;c[r+20>>2]=81;c[r+24>>2]=m;c[r+28>>2]=j;Jd[c[r+4>>2]&255](f,1);if((p&255)<=31)if((p&255)<=15){p=j&15;a[f+m+203>>0]=p;r=(h&255)>>>4;a[f+m+219>>0]=r;if((p&255)>(r&255)){r=c[f>>2]|0;c[r+20>>2]=30;c[r+24>>2]=j;Id[c[r>>2]&511](f)}}else fb=90;else{fb=c[f>>2]|0;c[fb+20>>2]=29;c[fb+24>>2]=m;Id[c[fb>>2]&511](f);fb=90}if((fb|0)==90){fb=0;a[f+(m+-16)+235>>0]=h}}while((k|0)>0)}else o=h;if(k){r=c[f>>2]|0;c[r+20>>2]=12;Id[c[r>>2]&511](f)}c[n>>2]=g;c[q>>2]=o;break}case 217:{fb=72;break a}case 219:{q=c[J>>2]|0;r=q+4|0;g=c[r>>2]|0;if(!g){if(!((Ld[c[q+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[r>>2]|0}h=c[q>>2]|0;g=g+-1|0;o=h+1|0;h=d[h>>0]<<8;if(!g){if(!((Ld[c[q+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[r>>2]|0;o=c[q>>2]|0}k=g+-1|0;g=o+1|0;o=(d[o>>0]|h)+-2|0;if((o|0)>0){n=q+12|0;while(1){l=o+-1|0;if(!k){if(!((Ld[c[n>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}p=c[r>>2]|0;g=c[q>>2]|0}else p=k;k=d[g>>0]|0;j=k>>>4;k=k&15;fb=c[f>>2]|0;c[fb+20>>2]=83;c[fb+24>>2]=k;c[fb+28>>2]=j;Jd[c[fb+4>>2]&255](f,1);if(k>>>0>3){fb=c[f>>2]|0;c[fb+20>>2]=32;c[fb+24>>2]=k;Id[c[fb>>2]&511](f)}k=f+(k<<2)+144|0;h=c[k>>2]|0;if(!h){h=OF(f)|0;c[k>>2]=h}m=(j|0)!=0;if(m)if((o|0)<129){o=0;do{b[h+(o<<1)>>1]=1;o=o+1|0}while((o|0)!=64);v=l>>1;fb=152}else fb=159;else if((o|0)<65){o=0;do{b[h+(o<<1)>>1]=1;o=o+1|0}while((o|0)!=64);v=l;fb=152}else fb=159;b:do if((fb|0)==152){fb=0;switch(v|0){case 9:{o=v;k=286440;break}case 16:{o=v;k=286312;break}case 25:{o=v;k=286144;break}case 49:{o=v;k=285672;break}case 4:{o=4;k=286544;break}case 36:{o=v;k=285936;break}default:{o=p+-1|0;g=g+1|0;if((v|0)>0){Za=o;y=v;w=285352;x=g;fb=161;break b}else{t=o;u=v;s=g;break b}}}Za=p+-1|0;y=o;w=k;x=g+1|0;fb=161}else if((fb|0)==159){Za=p+-1|0;y=64;w=285352;x=g+1|0;fb=161}while(0);if((fb|0)==161){fb=0;o=Za;p=0;k=x;while(1){g=(o|0)==0;if(m){if(g){if(!((Ld[c[n>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[r>>2]|0;o=c[q>>2]|0}else{g=o;o=k}g=g+-1|0;k=o+1|0;o=d[o>>0]<<8;if(!g){if(!((Ld[c[n>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[r>>2]|0;k=c[q>>2]|0}j=k;o=d[k>>0]|o}else{if(g){if(!((Ld[c[n>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[r>>2]|0;o=c[q>>2]|0}else{g=o;o=k}j=o;o=d[o>>0]|0}b[h+(c[w+(p<<2)>>2]<<1)>>1]=o;p=p+1|0;g=g+-1|0;k=j+1|0;if((p|0)>=(y|0)){t=g;u=y;s=k;break}else o=g}}g=c[f>>2]|0;c:do if((c[g+104>>2]|0)>1){o=0;while(1){c[g+24>>2]=e[h+(o<<1)>>1];c[g+28>>2]=e[h+((o|1)<<1)>>1];c[g+32>>2]=e[h+((o|2)<<1)>>1];c[g+36>>2]=e[h+((o|3)<<1)>>1];c[g+40>>2]=e[h+((o|4)<<1)>>1];c[g+44>>2]=e[h+((o|5)<<1)>>1];c[g+48>>2]=e[h+((o|6)<<1)>>1];c[g+52>>2]=e[h+((o|7)<<1)>>1];c[g+20>>2]=95;Jd[c[g+4>>2]&255](f,2);o=o+8|0;if((o|0)>=64)break c;g=c[f>>2]|0}}while(0);g=l-u+(m?0-u|0:0)|0;if((g|0)>0){k=t;o=g;g=s}else{k=t;o=g;g=s;break}}}if(o){n=c[f>>2]|0;c[n+20>>2]=12;Id[c[n>>2]&511](f)}c[q>>2]=g;c[r>>2]=k;break}case 248:{p=c[J>>2]|0;o=c[p>>2]|0;m=p+4|0;g=c[m>>2]|0;if(!(a[(c[sb>>2]|0)+13>>0]|0)){r=c[f>>2]|0;c[r+20>>2]=60;Jga(r+24|0,279408,80)|0;Id[c[c[f>>2]>>2]&511](f)}do if((c[jb>>2]|0)>=3){if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}g=g+-1|0;k=o+1|0;h=d[o>>0]<<8;if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}else o=k;g=g+-1|0;k=o+1|0;if((d[o>>0]|h|0)!=24){r=c[f>>2]|0;c[r+20>>2]=12;Id[c[r>>2]&511](f)}if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;k=c[p>>2]|0}g=g+-1|0;o=k+1|0;if((a[k>>0]|0)!=13){r=c[f>>2]|0;c[r+20>>2]=70;c[r+24>>2]=c[rb>>2];Id[c[r>>2]&511](f)}if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}g=g+-1|0;k=o+1|0;h=d[o>>0]<<8;if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}else o=k;g=g+-1|0;k=o+1|0;if((d[o>>0]|h|0)==255){if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;k=c[p>>2]|0}g=g+-1|0;o=k+1|0;if((a[k>>0]|0)==3){if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}k=g+-1|0;h=o+1|0;g=c[kb>>2]|0;if((d[o>>0]|0)==(c[g+88>>2]|0)){if(!k){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[kb>>2]|0;o=c[m>>2]|0;k=c[p>>2]|0}else{o=k;k=h}o=o+-1|0;h=k+1|0;if((d[k>>0]|0)==(c[g>>2]|0)){if(!o){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}j=c[kb>>2]|0;g=c[m>>2]|0;o=c[p>>2]|0}else{j=g;g=o;o=h}g=g+-1|0;k=o+1|0;if((d[o>>0]|0)!=(c[j+176>>2]|0)){Xa=g;$a=k;fb=290;break}if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;k=c[p>>2]|0}g=g+-1|0;o=k+1|0;if((a[k>>0]|0)!=-128){Xa=g;$a=o;fb=290;break}if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}g=g+-1|0;k=o+1|0;h=d[o>>0]<<8;if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;k=c[p>>2]|0}g=g+-1|0;o=k+1|0;if(d[k>>0]|h){Xa=g;$a=o;fb=290;break}if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}g=g+-1|0;k=o+1|0;h=d[o>>0]<<8;if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}else o=k;g=g+-1|0;k=o+1|0;if(d[o>>0]|h){Xa=g;$a=k;fb=290;break}if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;k=c[p>>2]|0}g=g+-1|0;o=k+1|0;if(a[k>>0]|0){Xa=g;$a=o;fb=290;break}if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}g=g+-1|0;k=o+1|0;h=d[o>>0]<<8;if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;k=c[p>>2]|0}g=g+-1|0;o=k+1|0;if((d[k>>0]|h|0)!=1){Xa=g;$a=o;fb=290;break}if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}g=g+-1|0;k=o+1|0;h=d[o>>0]<<8;if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}else o=k;g=g+-1|0;k=o+1|0;if(d[o>>0]|h){Xa=g;$a=k;fb=290;break}if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;k=c[p>>2]|0}g=g+-1|0;o=k+1|0;if(a[k>>0]|0){Xa=g;$a=o;fb=290;break}if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}g=g+-1|0;k=o+1|0;h=d[o>>0]<<8;if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;k=c[p>>2]|0}g=g+-1|0;o=k+1|0;if((d[k>>0]|h|0)!=1){Xa=g;$a=o;fb=290;break}if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;o=c[p>>2]|0}g=g+-1|0;k=o+1|0;h=d[o>>0]<<8;if(!g){if(!((Ld[c[p+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[m>>2]|0;k=c[p>>2]|0}g=g+-1|0;o=k+1|0;if(!(d[k>>0]|h)){Ya=g;ab=o}else{Xa=g;$a=o;fb=290}}else{Xa=o;$a=h;fb=290}}else{Xa=k;$a=h;fb=290}}else{Xa=g;$a=o;fb=290}}else{Xa=g;$a=k;fb=290}}else{Xa=g;$a=o;fb=290}while(0);if((fb|0)==290){fb=0;Ya=c[f>>2]|0;c[Ya+20>>2]=28;Id[c[Ya>>2]&511](f);Ya=Xa;ab=$a}c[sa>>2]=1;c[p>>2]=ab;c[m>>2]=Ya;break}case 221:{j=c[J>>2]|0;p=j+4|0;g=c[p>>2]|0;if(!g){if(!((Ld[c[j+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[p>>2]|0}h=c[j>>2]|0;g=g+-1|0;o=h+1|0;h=d[h>>0]<<8;if(!g){if(!((Ld[c[j+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[p>>2]|0;o=c[j>>2]|0}g=g+-1|0;k=o+1|0;if((d[o>>0]|h|0)!=4){r=c[f>>2]|0;c[r+20>>2]=12;Id[c[r>>2]&511](f)}if(!g){if(!((Ld[c[j+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[p>>2]|0;k=c[j>>2]|0}o=g+-1|0;g=k+1|0;k=d[k>>0]<<8;if(!o){if(!((Ld[c[j+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}o=c[p>>2]|0;g=c[j>>2]|0}r=d[g>>0]|k;q=c[f>>2]|0;c[q+20>>2]=84;c[q+24>>2]=r;Jd[c[q+4>>2]&255](f,1);c[qa>>2]=r;c[j>>2]=g+1;c[p>>2]=o+-1;break}case 239:case 238:case 237:case 236:case 235:case 234:case 233:case 232:case 231:case 230:case 229:case 228:case 227:case 226:case 225:case 224:{if(!((Ld[c[(c[sb>>2]|0)+28+(g+-224<<2)>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}break}case 1:case 215:case 214:case 213:case 212:case 211:case 210:case 209:case 208:{r=c[f>>2]|0;c[r+20>>2]=94;c[r+24>>2]=g;Jd[c[r+4>>2]&255](f,1);break}case 220:{j=c[J>>2]|0;p=j+4|0;g=c[p>>2]|0;if(!g){if(!((Ld[c[j+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[p>>2]|0}h=c[j>>2]|0;g=g+-1|0;o=h+1|0;h=d[h>>0]<<8;if(!g){if(!((Ld[c[j+12>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}g=c[p>>2]|0;k=c[j>>2]|0}else k=o;o=(d[k>>0]|h)+-2|0;r=c[f>>2]|0;c[r+20>>2]=93;c[r+24>>2]=c[rb>>2];c[r+28>>2]=o;Jd[c[r+4>>2]&255](f,1);c[j>>2]=k+1;c[p>>2]=g+-1;if((o|0)>0)Jd[c[(c[J>>2]|0)+16>>2]&255](f,o);break}case 254:{if(!((Ld[c[(c[sb>>2]|0)+24>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break a}break}case 216:{g=c[f>>2]|0;c[g+20>>2]=104;Jd[c[g+4>>2]&255](f,1);g=c[sb>>2]|0;if(a[g+12>>0]|0){g=c[f>>2]|0;c[g+20>>2]=64;Id[c[g>>2]&511](f);g=c[sb>>2]|0}a[U>>0]=0;a[da>>0]=1;a[oa>>0]=5;a[za>>0]=0;a[Ka>>0]=1;a[Ua>>0]=5;a[Va>>0]=0;a[z>>0]=1;a[A>>0]=5;a[B>>0]=0;a[C>>0]=1;a[D>>0]=5;a[E>>0]=0;a[F>>0]=1;a[G>>0]=5;a[H>>0]=0;a[I>>0]=1;a[K>>0]=5;a[L>>0]=0;a[M>>0]=1;a[N>>0]=5;a[O>>0]=0;a[P>>0]=1;a[Q>>0]=5;a[R>>0]=0;a[S>>0]=1;a[T>>0]=5;a[V>>0]=0;a[W>>0]=1;a[X>>0]=5;a[Y>>0]=0;a[Z>>0]=1;a[_>>0]=5;a[$>>0]=0;a[aa>>0]=1;a[ba>>0]=5;a[ca>>0]=0;a[ea>>0]=1;a[fa>>0]=5;a[ga>>0]=0;a[ha>>0]=1;a[ia>>0]=5;a[ja>>0]=0;a[ka>>0]=1;a[la>>0]=5;a[ma>>0]=0;a[na>>0]=1;a[pa>>0]=5;c[qa>>2]=0;c[ra>>2]=0;c[sa>>2]=0;a[ta>>0]=0;a[ua>>0]=0;a[va>>0]=1;a[wa>>0]=1;a[xa>>0]=0;b[ya>>1]=1;b[Aa>>1]=1;a[Ba>>0]=0;a[Ca>>0]=0;a[g+12>>0]=1;break}case 193:{if(!((O0(f,0,0,0)|0)<<24>>24)){bb=0;fb=305;break a}break}case 218:{fb=25;break a}case 192:{if(!((O0(f,1,0,0)|0)<<24>>24)){bb=0;fb=305;break a}break}case 201:{if(!((O0(f,0,0,1)|0)<<24>>24)){bb=0;fb=305;break a}break}case 202:{if(!((O0(f,0,1,1)|0)<<24>>24)){bb=0;fb=305;break a}break}case 194:{if(!((O0(f,0,1,0)|0)<<24>>24)){bb=0;fb=305;break a}break}case 207:case 206:case 205:case 203:case 200:case 199:case 198:case 197:case 195:{r=c[f>>2]|0;c[r+20>>2]=63;c[r+24>>2]=g;Id[c[r>>2]&511](f);break}default:{r=c[f>>2]|0;c[r+20>>2]=70;c[r+24>>2]=g;Id[c[r>>2]&511](f)}}while(0);c[rb>>2]=0;g=0}if((fb|0)==25){r=c[J>>2]|0;k=c[r>>2]|0;s=r+4|0;g=c[s>>2]|0;if(!(a[(c[sb>>2]|0)+13>>0]|0)){ab=c[f>>2]|0;c[ab+20>>2]=60;Jga(ab+24|0,279416,80)|0;Id[c[c[f>>2]>>2]&511](f)}do if(!g)if(!((Ld[c[r+12>>2]&511](f)|0)<<24>>24)){tb=0;i=ub;return tb|0}else{g=c[s>>2]|0;k=c[r>>2]|0;break}while(0);g=g+-1|0;h=k+1|0;j=d[k>>0]<<8;do if(!g)if(!((Ld[c[r+12>>2]&511](f)|0)<<24>>24)){tb=0;i=ub;return tb|0}else{g=c[s>>2]|0;h=c[r>>2]|0;break}while(0);g=g+-1|0;k=h+1|0;h=d[h>>0]|j;do if(!g)if(!((Ld[c[r+12>>2]&511](f)|0)<<24>>24)){tb=0;i=ub;return tb|0}else{g=c[s>>2]|0;j=c[r>>2]|0;break}else j=k;while(0);l=a[j>>0]|0;q=l&255;ab=c[f>>2]|0;c[ab+20>>2]=105;c[ab+24>>2]=q;Jd[c[ab+4>>2]&255](f,1);do if(!((h|0)!=((q<<1)+6|0)|(l&255)>4)){if(l<<24>>24){c[f+304>>2]=q;db=g+-1|0;cb=(db|0)==0;eb=j+1|0;fb=42;break}if(a[f+201>>0]|0){c[f+304>>2]=q;k=g+-1|0;if(!k){hb=1;fb=61}else{tb=1;mb=k;qb=j+1|0}}else fb=41}else fb=41;while(0);if((fb|0)==41){h=c[f>>2]|0;c[h+20>>2]=12;Id[c[h>>2]&511](f);c[f+304>>2]=q;h=g+-1|0;k=j+1|0;g=(h|0)==0;if(!(l<<24>>24)){gb=g;ib=1;lb=h;pb=k;fb=60}else{cb=g;db=h;eb=k;fb=42}}d:do if((fb|0)==42){o=r+12|0;p=f+308|0;g=cb;h=db;n=0;k=eb;while(1){if(g){if(!((Ld[c[o>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break}g=c[s>>2]|0;h=c[r>>2]|0}else{g=h;h=k}m=g+-1|0;k=h+1|0;g=d[h>>0]|0;e:do if((n|0)>0){h=0;while(1){if((g|0)==(c[c[f+(h<<2)+308>>2]>>2]|0))break;h=h+1|0;if((h|0)>=(n|0))break e}g=c[c[p>>2]>>2]|0;if((n|0)>1){h=1;do{eb=c[c[f+(h<<2)+308>>2]>>2]|0;g=(eb|0)>(g|0)?eb:g;h=h+1|0}while((h|0)!=(n|0))}g=g+1|0}while(0);h=c[kb>>2]|0;j=c[jb>>2]|0;f:do if((j|0)>0){l=0;while(1){if((g|0)==(c[h>>2]|0)){ob=h;break f}l=l+1|0;h=h+88|0;if((l|0)>=(j|0)){nb=h;fb=55;break}}}else{nb=h;fb=55}while(0);if((fb|0)==55){fb=0;ob=c[f>>2]|0;c[ob+20>>2]=4;c[ob+24>>2]=g;Id[c[ob>>2]&511](f);ob=nb}c[f+(n<<2)+308>>2]=ob;if(!m){if(!((Ld[c[o>>2]&511](f)|0)<<24>>24)){bb=0;fb=305;break}g=c[s>>2]|0;k=c[r>>2]|0}else g=m;h=d[k>>0]|0;db=ob+20|0;c[db>>2]=h>>>4;eb=ob+24|0;c[eb>>2]=h&15;h=c[f>>2]|0;c[h+24>>2]=c[ob>>2];c[h+28>>2]=c[db>>2];c[h+32>>2]=c[eb>>2];c[h+20>>2]=106;Jd[c[h+4>>2]&255](f,1);n=n+1|0;h=g+-1|0;k=k+1|0;g=(h|0)==0;if((n|0)>=(q|0)){gb=g;ib=0;lb=h;pb=k;fb=60;break d}}if((fb|0)==305){i=ub;return bb|0}}while(0);if((fb|0)==60)if(gb){hb=ib;fb=61}else{tb=ib;mb=lb;qb=pb}do if((fb|0)==61)if(!((Ld[c[r+12>>2]&511](f)|0)<<24>>24)){tb=0;i=ub;return tb|0}else{tb=hb;mb=c[s>>2]|0;qb=c[r>>2]|0;break}while(0);g=mb+-1|0;h=qb+1|0;l=f+376|0;c[l>>2]=d[qb>>0];do if(!g)if(!((Ld[c[r+12>>2]&511](f)|0)<<24>>24)){tb=0;i=ub;return tb|0}else{g=c[s>>2]|0;h=c[r>>2]|0;break}while(0);j=g+-1|0;g=h+1|0;k=f+380|0;c[k>>2]=d[h>>0];do if(!j)if(!((Ld[c[r+12>>2]&511](f)|0)<<24>>24)){tb=0;i=ub;return tb|0}else{j=c[s>>2]|0;g=c[r>>2]|0;break}while(0);qb=d[g>>0]|0;ob=f+384|0;c[ob>>2]=qb>>>4;pb=f+388|0;c[pb>>2]=qb&15;qb=c[f>>2]|0;c[qb+24>>2]=c[l>>2];c[qb+28>>2]=c[k>>2];c[qb+32>>2]=c[ob>>2];c[qb+36>>2]=c[pb>>2];c[qb+20>>2]=107;Jd[c[qb+4>>2]&255](f,1);c[(c[sb>>2]|0)+16>>2]=0;if(!tb){tb=f+124|0;c[tb>>2]=(c[tb>>2]|0)+1}c[r>>2]=g+1;c[s>>2]=j+-1;c[rb>>2]=0;tb=1;i=ub;return tb|0}else if((fb|0)==72){tb=c[f>>2]|0;c[tb+20>>2]=87;Jd[c[tb+4>>2]&255](f,1);c[rb>>2]=0;tb=2;i=ub;return tb|0}else if((fb|0)==305){i=ub;return bb|0}return 0}function xS(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;f=a+404|0;b=c[f>>2]|0;do if(!b)if(!((uS(a)|0)<<24>>24)){a=0;i=g;return a|0}else{b=c[f>>2]|0;break}while(0);d=a+428|0;e=c[(c[d>>2]|0)+16>>2]|0;if((b|0)!=(e+208|0)){if(!((Wd[c[(c[a+24>>2]|0)+20>>2]&511](a,e)|0)<<24>>24)){a=0;i=g;return a|0}}else{b=c[a>>2]|0;c[b+20>>2]=100;c[b+24>>2]=e;Jd[c[b+4>>2]&255](a,3);c[f>>2]=0}a=(c[d>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+1&7;a=1;i=g;return a|0}function yS(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;h=a+24|0;j=c[h>>2]|0;k=j+4|0;b=c[k>>2]|0;do if(!b)if(!((Ld[c[j+12>>2]&511](a)|0)<<24>>24)){k=0;i=l;return k|0}else{b=c[k>>2]|0;break}while(0);g=c[j>>2]|0;b=b+-1|0;e=g+1|0;g=(d[g>>0]|0)<<8;do if(!b)if(!((Ld[c[j+12>>2]&511](a)|0)<<24>>24)){k=0;i=l;return k|0}else{b=c[k>>2]|0;f=c[j>>2]|0;break}else f=e;while(0);e=(d[f>>0]|0|g)+-2|0;g=c[a>>2]|0;c[g+20>>2]=93;c[g+24>>2]=c[a+404>>2];c[g+28>>2]=e;Jd[c[g+4>>2]&255](a,1);c[j>>2]=f+1;c[k>>2]=b+-1;if((e|0)<=0){k=1;i=l;return k|0}Jd[c[(c[h>>2]|0)+16>>2]&255](a,e);k=1;i=l;return k|0}function zS(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;p=q;m=b+24|0;n=c[m>>2]|0;o=n+4|0;e=c[o>>2]|0;do if(!e)if(!((Ld[c[n+12>>2]&511](b)|0)<<24>>24)){b=0;i=q;return b|0}else{e=c[o>>2]|0;break}while(0);g=c[n>>2]|0;e=e+-1|0;f=g+1|0;g=d[g>>0]<<8;do if(!e)if(!((Ld[c[n+12>>2]&511](b)|0)<<24>>24)){b=0;i=q;return b|0}else{e=c[o>>2]|0;f=c[n>>2]|0;break}while(0);l=(d[f>>0]|g)+-2|0;if((l|0)<=13)if((l|0)>0){g=l;k=10}else{j=e+-1|0;h=f+1|0;g=0}else{g=14;k=10}a:do if((k|0)==10){j=n+12|0;e=e+-1|0;h=0;f=f+1|0;while(1){if(!e){if(!((Ld[c[j>>2]&511](b)|0)<<24>>24)){e=0;break}e=c[o>>2]|0;f=c[n>>2]|0}a[p+h>>0]=a[f>>0]|0;h=h+1|0;e=e+-1|0;f=f+1|0;if(h>>>0>=g>>>0){j=e;h=f;break a}}i=q;return e|0}while(0);e=l-g|0;f=c[b+404>>2]|0;do if((f|0)==224)P0(b,p,g,e);else if((f|0)==238){if((((g>>>0>11&(a[p>>0]|0)==65?(a[p+1>>0]|0)==100:0)?(a[p+2>>0]|0)==111:0)?(a[p+3>>0]|0)==98:0)?(a[p+4>>0]|0)==101:0){f=d[p+7>>0]<<8|d[p+8>>0];g=d[p+9>>0]<<8|d[p+10>>0];l=a[p+11>>0]|0;k=c[b>>2]|0;c[k+24>>2]=d[p+5>>0]<<8|d[p+6>>0];c[k+28>>2]=f;c[k+32>>2]=g;c[k+36>>2]=l&255;c[k+20>>2]=78;Jd[c[k+4>>2]&255](b,1);a[b+264>>0]=1;a[b+265>>0]=l;break}p=c[b>>2]|0;c[p+20>>2]=80;c[p+24>>2]=l;Jd[c[p+4>>2]&255](b,1)}else{p=c[b>>2]|0;c[p+20>>2]=70;c[p+24>>2]=f;Id[c[p>>2]&511](b)}while(0);c[n>>2]=h;c[o>>2]=j;if((e|0)<=0){b=1;i=q;return b|0}Jd[c[(c[m>>2]|0)+16>>2]&255](b,e);b=1;i=q;return b|0}function AS(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;j=c[b+428>>2]|0;r=j+160|0;g=c[r>>2]|0;s=b+24|0;t=c[s>>2]|0;f=c[t>>2]|0;u=t+4|0;e=c[u>>2]|0;if(!g){do if(!e)if(!((Ld[c[t+12>>2]&511](b)|0)<<24>>24)){b=0;i=v;return b|0}else{e=c[u>>2]|0;f=c[t>>2]|0;break}while(0);e=e+-1|0;g=f+1|0;f=d[f>>0]<<8;do if(!e)if(!((Ld[c[t+12>>2]&511](b)|0)<<24>>24)){b=0;i=v;return b|0}else{e=c[u>>2]|0;g=c[t>>2]|0;break}while(0);e=e+-1|0;m=g+1|0;h=(d[g>>0]|f)+-2|0;if((h|0)>-1){g=b+404|0;f=c[g>>2]|0;if((f|0)==254)f=j+92|0;else f=j+96+(f+-224<<2)|0;p=c[f>>2]|0;p=h>>>0

>>0?h:p;q=Od[c[(c[b+4>>2]|0)+4>>2]&255](b,1,p+20|0)|0;c[q>>2]=0;a[q+4>>0]=c[g>>2];c[q+8>>2]=h;c[q+12>>2]=p;k=q+20|0;c[q+16>>2]=k;c[r>>2]=q;c[j+164>>2]=0;l=0;f=m;n=14}else{k=0;j=0;g=m}}else{k=c[j+164>>2]|0;l=k;q=g;k=(c[g+16>>2]|0)+k|0;p=c[g+12>>2]|0;h=0;n=14}if((n|0)==14){a:do if(l>>>0

>>0){n=j+164|0;o=t+12|0;while(1){c[t>>2]=f;c[u>>2]=e;c[n>>2]=l;if(!e){if(!((Ld[c[o>>2]&511](b)|0)<<24>>24)){e=0;break}e=c[u>>2]|0;j=c[t>>2]|0}else j=f;if(l>>>0

>>0&(e|0)!=0){f=0-e|0;m=l-p|0;m=m>>>0>>0?f:m;l=l-m|0;f=0-m|0;g=k+f|0;f=j+f|0;while(1){a[k>>0]=a[j>>0]|0;j=j+1|0;if((j|0)==(f|0))break;else k=k+1|0}e=e+m|0}else{g=k;f=j}if(l>>>0

>>0)k=g;else{l=f;break a}}i=v;return e|0}else{g=k;l=f}while(0);if(!q){k=g;j=p;g=l}else{f=b+276|0;g=c[f>>2]|0;if(!g)c[f>>2]=q;else{while(1){f=c[g>>2]|0;if(!f)break;else g=f}c[g>>2]=q}k=c[q+16>>2]|0;j=p;h=(c[q+8>>2]|0)-p|0;g=l}}c[r>>2]=0;f=c[b+404>>2]|0;do if((f|0)==238){if(((((j>>>0>11?(a[k>>0]|0)==65:0)?(a[k+1>>0]|0)==100:0)?(a[k+2>>0]|0)==111:0)?(a[k+3>>0]|0)==98:0)?(a[k+4>>0]|0)==101:0){o=d[k+7>>0]<<8|d[k+8>>0];p=d[k+9>>0]<<8|d[k+10>>0];r=a[k+11>>0]|0;q=c[b>>2]|0;c[q+24>>2]=d[k+5>>0]<<8|d[k+6>>0];c[q+28>>2]=o;c[q+32>>2]=p;c[q+36>>2]=r&255;c[q+20>>2]=78;Jd[c[q+4>>2]&255](b,1);a[b+264>>0]=1;a[b+265>>0]=r;break}r=c[b>>2]|0;c[r+20>>2]=80;c[r+24>>2]=h+j;Jd[c[r+4>>2]&255](b,1)}else if((f|0)==224)P0(b,k,j,h);else{r=c[b>>2]|0;c[r+20>>2]=93;c[r+24>>2]=f;c[r+28>>2]=h+j;Jd[c[r+4>>2]&255](b,1)}while(0);c[t>>2]=g;c[u>>2]=e;if((h|0)<=0){b=1;i=v;return b|0}Jd[c[(c[s>>2]|0)+16>>2]&255](b,h);b=1;i=v;return b|0}function BS(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;if((((((((((((((((((a[b+72>>0]|0)==0?(a[b+272>>0]|0)==0:0)?(c[b+40>>2]|0)==3:0)?(c[b+36>>2]|0)==3:0)?(c[b+44>>2]|0)==2:0)?(c[b+100>>2]|0)==3:0)?(c[b+268>>2]|0)==0:0)?(d=c[b+196>>2]|0,(c[d+8>>2]|0)==2):0)?(c[d+96>>2]|0)==1:0)?(c[d+184>>2]|0)==1:0)?(c[d+12>>2]|0)<=2:0)?(c[d+100>>2]|0)==1:0)?(c[d+188>>2]|0)==1:0)?(e=c[d+36>>2]|0,(e|0)==(c[b+288>>2]|0)):0)?(c[d+124>>2]|0)==(e|0):0)?(c[d+212>>2]|0)==(e|0):0)?(f=c[d+40>>2]|0,(f|0)==(c[b+292>>2]|0)):0)?(c[d+128>>2]|0)==(f|0):0){i=g;return (c[d+216>>2]|0)==(f|0)|0}i=g;return 0}function CS(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;e=c[b+408>>2]|0;f=e+8|0;if(!(a[f>>0]|0)){d=b+74|0;do if((a[d>>0]|0)!=0?(c[b+116>>2]|0)==0:0){if((a[b+80>>0]|0)!=0?(a[b+90>>0]|0)!=0:0){c[b+448>>2]=c[e+24>>2];a[f>>0]=1;break}if(!(a[b+88>>0]|0)){h=c[b>>2]|0;c[h+20>>2]=47;Id[c[h>>2]&511](b);break}else{c[b+448>>2]=c[e+20>>2];break}}while(0);Id[c[c[b+436>>2]>>2]&511](b);Id[c[(c[b+416>>2]|0)+8>>2]&511](b);if(!(a[b+65>>0]|0)){if(!(a[e+16>>0]|0))Id[c[c[b+444>>2]>>2]&511](b);Id[c[c[b+440>>2]>>2]&511](b);if(a[d>>0]|0)Jd[c[c[b+448>>2]>>2]&255](b,a[f>>0]|0);Jd[c[c[b+420>>2]>>2]&255](b,(a[f>>0]|0)!=0?3:0);Jd[c[c[b+412>>2]>>2]&255](b,0)}}else{a[f>>0]=0;Jd[c[c[b+448>>2]>>2]&255](b,0);Jd[c[c[b+420>>2]>>2]&255](b,2);Jd[c[c[b+412>>2]>>2]&255](b,2)}d=c[b+8>>2]|0;if(!d){i=g;return}e=c[e+12>>2]|0;c[d+12>>2]=e;e=((a[f>>0]|0)!=0?2:1)+e|0;d=d+16|0;c[d>>2]=e;if(!(a[b+64>>0]|0)){i=g;return}if(a[(c[b+424>>2]|0)+17>>0]|0){i=g;return}c[d>>2]=e+((a[b+90>>0]|0)!=0?2:1);i=g;return}function DS(b){b=b|0;var d=0,e=0;e=i;d=c[b+408>>2]|0;if(a[b+74>>0]|0)Id[c[(c[b+448>>2]|0)+8>>2]&511](b);b=d+12|0;c[b>>2]=(c[b>>2]|0)+1;i=e;return}function ES(b){b=b|0;var d=0;d=c[b+440>>2]|0;a[d+36>>0]=0;c[d+44>>2]=c[b+96>>2];return}function FS(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;o=p;k=c[b+440>>2]|0;n=k+36|0;if(!(a[n>>0]|0)){l=k+44|0;f=c[l>>2]|0;f=f>>>0<2?f:2;m=c[h>>2]|0;j=j-m|0;f=f>>>0>j>>>0?j:f;c[o>>2]=c[g+(m<<2)>>2];if(f>>>0>1)c[o+4>>2]=c[g+(m+1<<2)>>2];else{c[o+4>>2]=c[k+32>>2];a[n>>0]=1}de[c[k+12>>2]&63](b,d,c[e>>2]|0,o);g=(a[n>>0]|0)==0;c[h>>2]=(c[h>>2]|0)+f;c[l>>2]=(c[l>>2]|0)-f;if(!g){i=p;return}}else{WH(k+32|0,0,g+(c[h>>2]<<2)|0,0,1,c[k+40>>2]|0);a[n>>0]=0;g=k+44|0;c[h>>2]=(c[h>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+-1}c[e>>2]=(c[e>>2]|0)+1;i=p;return}function GS(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;A=i;v=c[b+440>>2]|0;w=c[b+300>>2]|0;x=c[v+16>>2]|0;y=c[v+20>>2]|0;z=c[v+24>>2]|0;v=c[v+28>>2]|0;j=f<<1;h=c[e>>2]|0;k=c[h+(j<<2)>>2]|0;j=c[h+((j|1)<<2)>>2]|0;h=c[(c[e+4>>2]|0)+(f<<2)>>2]|0;m=c[(c[e+8>>2]|0)+(f<<2)>>2]|0;l=c[g>>2]|0;f=c[g+4>>2]|0;r=b+92|0;e=c[r>>2]|0;t=e>>>1;if(!t){b=m;g=l}else{u=t*6|0;s=t<<1;g=l+u|0;b=m+t|0;n=t;o=k;p=j;q=h;e=l;l=f;while(1){B=d[q>>0]|0;D=d[m>>0]|0;E=c[x+(D<<2)>>2]|0;D=(c[z+(D<<2)>>2]|0)+(c[v+(B<<2)>>2]|0)>>16;B=c[y+(B<<2)>>2]|0;C=d[o>>0]|0;a[e>>0]=a[w+(C+E)>>0]|0;a[e+1>>0]=a[w+(C+D)>>0]|0;a[e+2>>0]=a[w+(C+B)>>0]|0;C=d[o+1>>0]|0;a[e+3>>0]=a[w+(C+E)>>0]|0;a[e+4>>0]=a[w+(C+D)>>0]|0;a[e+5>>0]=a[w+(C+B)>>0]|0;C=d[p>>0]|0;a[l>>0]=a[w+(C+E)>>0]|0;a[l+1>>0]=a[w+(C+D)>>0]|0;a[l+2>>0]=a[w+(C+B)>>0]|0;C=d[p+1>>0]|0;a[l+3>>0]=a[w+(C+E)>>0]|0;a[l+4>>0]=a[w+(C+D)>>0]|0;a[l+5>>0]=a[w+(C+B)>>0]|0;n=n+-1|0;if(!n)break;else{o=o+2|0;p=p+2|0;q=q+1|0;m=m+1|0;e=e+6|0;l=l+6|0}}e=c[r>>2]|0;k=k+s|0;j=j+s|0;h=h+t|0;f=f+u|0}if(!(e&1)){i=A;return}E=d[h>>0]|0;C=d[b>>0]|0;B=c[x+(C<<2)>>2]|0;C=(c[z+(C<<2)>>2]|0)+(c[v+(E<<2)>>2]|0)>>16;E=c[y+(E<<2)>>2]|0;D=d[k>>0]|0;a[g>>0]=a[w+(D+B)>>0]|0;a[g+1>>0]=a[w+(D+C)>>0]|0;a[g+2>>0]=a[w+(D+E)>>0]|0;D=d[j>>0]|0;a[f>>0]=a[w+(D+B)>>0]|0;a[f+1>>0]=a[w+(D+C)>>0]|0;a[f+2>>0]=a[w+(D+E)>>0]|0;i=A;return}function HS(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;h=i;de[c[(c[a+440>>2]|0)+12>>2]&63](a,b,c[d>>2]|0,f+(c[g>>2]<<2)|0);c[g>>2]=(c[g>>2]|0)+1;c[d>>2]=(c[d>>2]|0)+1;i=h;return}function IS(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=i;s=c[b+440>>2]|0;t=c[b+300>>2]|0;u=c[s+16>>2]|0;v=c[s+20>>2]|0;w=c[s+24>>2]|0;s=c[s+28>>2]|0;h=c[(c[e>>2]|0)+(f<<2)>>2]|0;r=c[(c[e+4>>2]|0)+(f<<2)>>2]|0;p=c[(c[e+8>>2]|0)+(f<<2)>>2]|0;f=c[g>>2]|0;m=b+92|0;e=c[m>>2]|0;o=e>>>1;if(!o){b=r;g=p}else{q=o*6|0;n=o<<1;g=p+o|0;j=o;k=h;l=r;b=p;e=f;while(1){p=d[l>>0]|0;z=d[b>>0]|0;A=c[u+(z<<2)>>2]|0;z=(c[w+(z<<2)>>2]|0)+(c[s+(p<<2)>>2]|0)>>16;p=c[v+(p<<2)>>2]|0;y=d[k>>0]|0;a[e>>0]=a[t+(y+A)>>0]|0;a[e+1>>0]=a[t+(y+z)>>0]|0;a[e+2>>0]=a[t+(y+p)>>0]|0;y=d[k+1>>0]|0;a[e+3>>0]=a[t+(y+A)>>0]|0;a[e+4>>0]=a[t+(y+z)>>0]|0;a[e+5>>0]=a[t+(y+p)>>0]|0;j=j+-1|0;if(!j)break;else{k=k+2|0;l=l+1|0;b=b+1|0;e=e+6|0}}e=c[m>>2]|0;h=h+n|0;b=r+o|0;f=f+q|0}if(!(e&1)){i=x;return}A=d[b>>0]|0;r=d[g>>0]|0;y=(c[w+(r<<2)>>2]|0)+(c[s+(A<<2)>>2]|0)>>16;A=c[v+(A<<2)>>2]|0;z=d[h>>0]|0;a[f>>0]=a[t+(z+(c[u+(r<<2)>>2]|0))>>0]|0;a[f+1>>0]=a[t+(z+y)>>0]|0;a[f+2>>0]=a[t+(z+A)>>0]|0;i=x;return}function JS(b,d){b=b|0;d=d|0;var e=0,f=0;f=i;e=c[b+420>>2]|0;do if((d|0)==2){if(!(c[e+8>>2]|0)){d=c[b>>2]|0;c[d+20>>2]=3;Id[c[d>>2]&511](b)}c[e+4>>2]=48}else if(!d){if(!(a[b+74>>0]|0)){c[e+4>>2]=c[(c[b+440>>2]|0)+4>>2];break}c[e+4>>2]=46;d=e+12|0;if(!(c[d>>2]|0))c[d>>2]=Xd[c[(c[b+4>>2]|0)+28>>2]&127](b,c[e+8>>2]|0,0,c[e+16>>2]|0,1)|0}else if((d|0)==3){if(!(c[e+8>>2]|0)){d=c[b>>2]|0;c[d+20>>2]=3;Id[c[d>>2]&511](b)}c[e+4>>2]=47}else{d=c[b>>2]|0;c[d+20>>2]=3;Id[c[d>>2]&511](b)}while(0);c[e+24>>2]=0;c[e+20>>2]=0;i=f;return}function KS(a){a=a|0;var b=0;b=c[a+440>>2]|0;c[b+92>>2]=c[a+284>>2];c[b+96>>2]=c[a+96>>2];return}function LS(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;o=c[a+440>>2]|0;p=o+92|0;j=c[p>>2]|0;q=a+284|0;e=c[q>>2]|0;if((j|0)>=(e|0)){n=a+36|0;if((c[n>>2]|0)>0){e=o+52|0;j=o+100|0;k=o+12|0;l=0;m=c[a+196>>2]|0;while(1){s=(c[b+(l<<2)>>2]|0)+((ea(c[j+(l<<2)>>2]|0,c[d>>2]|0)|0)<<2)|0;de[c[e+(l<<2)>>2]&63](a,m,s,k+(l<<2)|0);l=l+1|0;if((l|0)>=(c[n>>2]|0))break;else m=m+88|0}e=c[q>>2]|0}c[p>>2]=0;j=0}s=e-j|0;b=o+96|0;m=c[b>>2]|0;s=s>>>0>m>>>0?m:s;m=c[g>>2]|0;h=h-m|0;s=s>>>0>h>>>0?h:s;Hd[c[(c[a+444>>2]|0)+4>>2]&63](a,o+12|0,j,f+(m<<2)|0,s);c[g>>2]=(c[g>>2]|0)+s;c[b>>2]=(c[b>>2]|0)-s;s=(c[p>>2]|0)+s|0;c[p>>2]=s;if((s|0)<(c[q>>2]|0)){i=r;return}c[d>>2]=(c[d>>2]|0)+1;i=r;return}function MS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[e>>2]=0;return}function NS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[e>>2]=d;return}function OS(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;k=c[f>>2]|0;l=b+284|0;d=c[l>>2]|0;if((d|0)<=0){i=m;return}j=b+92|0;h=0;do{f=c[k+(h<<2)>>2]|0;b=c[j>>2]|0;g=f+b|0;if((b|0)>0){b=c[e+(h<<2)>>2]|0;d=f;while(1){f=a[b>>0]|0;a[d>>0]=f;a[d+1>>0]=f;d=d+2|0;if(d>>>0>=g>>>0)break;else b=b+1|0}d=c[l>>2]|0}h=h+1|0}while((h|0)<(d|0));i=m;return}function PS(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;l=c[f>>2]|0;m=b+284|0;if((c[m>>2]|0)<=0){i=n;return}h=b+92|0;j=0;k=0;while(1){f=c[l+(k<<2)>>2]|0;d=c[h>>2]|0;g=f+d|0;if((d|0)>0){b=c[e+(j<<2)>>2]|0;d=f;while(1){f=a[b>>0]|0;a[d>>0]=f;a[d+1>>0]=f;d=d+2|0;if(d>>>0>=g>>>0)break;else b=b+1|0}d=c[h>>2]|0}WH(l,k,l,k|1,1,d);k=k+2|0;if((k|0)>=(c[m>>2]|0))break;else j=j+1|0}i=n;return}function QS(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;o=c[b+440>>2]|0;q=c[f>>2]|0;g=c[d+4>>2]|0;f=a[o+140+g>>0]|0;d=f&255;g=a[o+g+150>>0]|0;o=g&255;p=b+284|0;if((c[p>>2]|0)<=0){i=r;return}n=b+92|0;m=f<<24>>24!=0;k=o+-1|0;l=0-d|0;l=((l|0)>-1?l:-1)+d+1|0;if((g&255)>1){j=0;h=0;while(1){g=c[q+(h<<2)>>2]|0;f=c[n>>2]|0;b=g+f|0;if((f|0)>0)if(m){d=c[e+(j<<2)>>2]|0;f=g;while(1){Cga(f|0,a[d>>0]|0,l|0)|0;f=f+l|0;if(f>>>0>=b>>>0)break;else d=d+1|0}}else do{}while((f|0)>0);WH(q,h,q,h+1|0,k,c[n>>2]|0);h=h+o|0;if((h|0)>=(c[p>>2]|0))break;else j=j+1|0}i=r;return}else{h=0;j=0;while(1){g=c[q+(j<<2)>>2]|0;f=c[n>>2]|0;b=g+f|0;if((f|0)>0)if(m){d=c[e+(h<<2)>>2]|0;f=g;while(1){Cga(f|0,a[d>>0]|0,l|0)|0;f=f+l|0;if(f>>>0>=b>>>0)break;else d=d+1|0}}else do{}while((f|0)>0);j=j+o|0;if((j|0)>=(c[p>>2]|0))break;else h=h+1|0}i=r;return}}function RS(a){a=a|0;Id[c[(c[a>>2]|0)+8>>2]&511](a);NF(a);sd(1)}function SS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;d=c[a>>2]|0;if((b|0)>=0){if((c[d+104>>2]|0)<(b|0)){i=f;return}Id[c[d+8>>2]&511](a);i=f;return}e=d+108|0;b=c[e>>2]|0;if(!((b|0)!=0?(c[d+104>>2]|0)<=2:0)){Id[c[d+8>>2]&511](a);b=c[e>>2]|0}c[e>>2]=b+1;i=f;return}function TS(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+208|0;d=b;e=b+8|0;Jd[c[(c[a>>2]|0)+12>>2]&255](a,e);a=c[q>>2]|0;c[d>>2]=e;_c(a|0,285040,d|0)|0;i=b;return}function US(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;k=i;i=i+32|0;j=k;h=c[b>>2]|0;f=c[h+20>>2]|0;if((f|0)>0?(f|0)<=(c[h+116>>2]|0):0){b=(c[h+112>>2]|0)+(f<<2)|0;g=8}else{b=c[h+120>>2]|0;if(((b|0)!=0?(e=c[h+124>>2]|0,(f|0)>=(e|0)):0)?(f|0)<=(c[h+128>>2]|0):0){b=b+(f-e<<2)|0;g=8}else g=9}if((g|0)==8){b=c[b>>2]|0;if(!b)g=9;else f=b}if((g|0)==9){c[h+24>>2]=f;f=c[c[h+112>>2]>>2]|0}b=f;while(1){e=b+1|0;b=a[b>>0]|0;if(!(b<<24>>24)){g=12;break}else if(b<<24>>24==37){g=13;break}else b=e}if((g|0)==12)b=h+24|0;else if((g|0)==13){b=h+24|0;if((a[e>>0]|0)==115){c[j>>2]=b;fga(d,f,j)|0;i=k;return}}o=c[h+28>>2]|0;n=c[h+32>>2]|0;m=c[h+36>>2]|0;l=c[h+40>>2]|0;e=c[h+44>>2]|0;g=c[h+48>>2]|0;h=c[h+52>>2]|0;c[j>>2]=c[b>>2];c[j+4>>2]=o;c[j+8>>2]=n;c[j+12>>2]=m;c[j+16>>2]=l;c[j+20>>2]=e;c[j+24>>2]=g;c[j+28>>2]=h;fga(d,f,j)|0;i=k;return}function VS(a){a=a|0;a=c[a>>2]|0;c[a+108>>2]=0;c[a+20>>2]=0;return}function WS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;m=c[a+4>>2]|0;if(d>>>0>999999984){l=c[a>>2]|0;c[l+20>>2]=56;c[l+24>>2]=1;Id[c[l>>2]&511](a)}e=d&7;if(e)d=d+8-e|0;if(b>>>0>1){l=c[a>>2]|0;c[l+20>>2]=15;c[l+24>>2]=b;Id[c[l>>2]&511](a)}l=m+52+(b<<2)|0;e=c[l>>2]|0;a:do if(!e){k=0;g=10}else while(1){if((c[e+8>>2]|0)>>>0>=d>>>0)break a;f=c[e>>2]|0;if(!f){k=e;g=10;break}else e=f}while(0);do if((g|0)==10){h=d+16|0;j=(k|0)==0;f=c[(j?285064:285072)+(b<<2)>>2]|0;g=999999984-d|0;f=f>>>0>g>>>0?g:f;g=h+f|0;e=KH(a,g)|0;if(!e){e=f;while(1){f=e>>>1;if(e>>>0<100){b=c[a>>2]|0;c[b+20>>2]=56;c[b+24>>2]=2;Id[c[b>>2]&511](a)}g=h+f|0;e=KH(a,g)|0;if(!e)e=f;else break}}m=m+76|0;c[m>>2]=(c[m>>2]|0)+g;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=f+d;if(j){c[l>>2]=e;break}else{c[k>>2]=e;break}}while(0);l=e+4|0;m=c[l>>2]|0;c[l>>2]=m+d;l=e+8|0;c[l>>2]=(c[l>>2]|0)-d;i=n;return e+16+m|0}function XS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;g=c[a+4>>2]|0;if(d>>>0>999999984){f=c[a>>2]|0;c[f+20>>2]=56;c[f+24>>2]=3;Id[c[f>>2]&511](a)}e=d&7;if(e)d=d+8-e|0;if(b>>>0>1){f=c[a>>2]|0;c[f+20>>2]=15;c[f+24>>2]=b;Id[c[f>>2]&511](a)}e=d+16|0;f=MH(a,e)|0;if(!f){j=c[a>>2]|0;c[j+20>>2]=56;c[j+24>>2]=4;Id[c[j>>2]&511](a)}a=g+76|0;c[a>>2]=(c[a>>2]|0)+e;b=g+60+(b<<2)|0;c[f>>2]=c[b>>2];c[f+4>>2]=d;c[f+8>>2]=0;c[b>>2]=f;i=h;return f+16|0}function YS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;g=c[a+4>>2]|0;f=999999984/(d>>>0)|0;if(!f){m=c[a>>2]|0;c[m+20>>2]=72;Id[c[m>>2]&511](a)}h=(f|0)<(e|0)?f:e;c[g+80>>2]=h;n=WS(a,b,e<<2)|0;if(!e){i=p;return n|0}o=~e;f=0;do{j=e-f|0;g=h;h=h>>>0>>0?h:j;j=XS(a,b,ea(h,d)|0)|0;if(h){k=f+o|0;m=~g;m=k>>>0>m>>>0?k:m;k=f;l=h;g=j;while(1){c[n+(k<<2)>>2]=g;l=l+-1|0;if(!l)break;else{k=k+1|0;g=g+d|0}}f=f+-1-m|0}}while(f>>>0>>0);i=p;return n|0}function ZS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;g=c[a+4>>2]|0;p=d<<7;f=999999984/(p>>>0)|0;if(!f){m=c[a>>2]|0;c[m+20>>2]=72;Id[c[m>>2]&511](a)}h=(f|0)<(e|0)?f:e;c[g+80>>2]=h;n=WS(a,b,e<<2)|0;if(!e){i=q;return n|0}o=~e;f=0;do{j=e-f|0;g=h;h=h>>>0>>0?h:j;j=XS(a,b,ea(p,h)|0)|0;if(h){k=f+o|0;m=~g;m=k>>>0>m>>>0?k:m;k=f;l=h;g=j;while(1){c[n+(k<<2)>>2]=g;l=l+-1|0;if(!l)break;else{k=k+1|0;g=g+(d<<7)|0}}f=f+-1-m|0}}while(f>>>0>>0);i=q;return n|0}function _S(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0;k=i;j=c[b+4>>2]|0;if((d|0)!=1){l=c[b>>2]|0;c[l+20>>2]=15;c[l+24>>2]=d;Id[c[l>>2]&511](b)}d=WS(b,d,120)|0;c[d>>2]=0;c[d+4>>2]=g;c[d+8>>2]=f;c[d+12>>2]=h;a[d+32>>0]=e;a[d+34>>0]=0;f=j+68|0;c[d+36>>2]=c[f>>2];c[f>>2]=d;i=k;return d|0}function $S(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0;k=i;j=c[b+4>>2]|0;if((d|0)!=1){l=c[b>>2]|0;c[l+20>>2]=15;c[l+24>>2]=d;Id[c[l>>2]&511](b)}d=WS(b,d,120)|0;c[d>>2]=0;c[d+4>>2]=g;c[d+8>>2]=f;c[d+12>>2]=h;a[d+32>>0]=e;a[d+34>>0]=0;e=j+72|0;c[d+36>>2]=c[e>>2];c[e>>2]=d;i=k;return d|0}function aT(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;l=c[b+4>>2]|0;g=l+68|0;d=c[g>>2]|0;if(!d){e=0;f=0}else{e=0;f=0;do{if(!(c[d>>2]|0)){k=c[d+8>>2]|0;f=(ea(k,c[d+12>>2]|0)|0)+f|0;e=(ea(c[d+4>>2]|0,k)|0)+e|0}d=c[d+36>>2]|0}while((d|0)!=0)}k=l+72|0;d=c[k>>2]|0;if(d)do{if(!(c[d>>2]|0)){h=c[d+8>>2]|0;f=(ea(c[d+12>>2]<<7,h)|0)+f|0;e=(ea(h<<7,c[d+4>>2]|0)|0)+e|0}d=c[d+36>>2]|0}while((d|0)!=0);if((f|0)<1){i=m;return}d=OH(b,f,e,c[l+76>>2]|0)|0;if((d|0)<(e|0)){j=(d|0)/(f|0)|0;j=(j|0)<1?1:j}else j=1e9;d=c[g>>2]|0;if(d){h=l+80|0;do{if(!(c[d>>2]|0)){g=c[d+4>>2]|0;e=c[d+12>>2]|0;if(((((g+-1|0)>>>0)/(e>>>0)|0)+1|0)>(j|0)){n=d+16|0;c[n>>2]=ea(e,j)|0;f=d+8|0;PH(b,d+40|0,ea(c[f>>2]|0,g)|0);a[d+34>>0]=1;e=c[n>>2]|0}else{c[d+16>>2]=g;f=d+8|0;e=g}c[d>>2]=YS(b,1,c[f>>2]|0,e)|0;c[d+20>>2]=c[h>>2];c[d+24>>2]=0;c[d+28>>2]=0;a[d+33>>0]=0}d=c[d+36>>2]|0}while((d|0)!=0)}d=c[k>>2]|0;if(!d){i=m;return}g=l+80|0;do{if(!(c[d>>2]|0)){e=c[d+4>>2]|0;f=c[d+12>>2]|0;if(((((e+-1|0)>>>0)/(f>>>0)|0)+1|0)>(j|0)){n=d+16|0;c[n>>2]=ea(f,j)|0;f=d+8|0;PH(b,d+40|0,ea(e<<7,c[f>>2]|0)|0);a[d+34>>0]=1;e=c[n>>2]|0}else{c[d+16>>2]=e;f=d+8|0}c[d>>2]=ZS(b,1,c[f>>2]|0,e)|0;c[d+20>>2]=c[g>>2];c[d+24>>2]=0;c[d+28>>2]=0;a[d+33>>0]=0}d=c[d+36>>2]|0}while((d|0)!=0);i=m;return}function bT(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;z=f+e|0;v=d+4|0;if(!((z>>>0<=(c[v>>2]|0)>>>0?(c[d+12>>2]|0)>>>0>=f>>>0:0)?(c[d>>2]|0)!=0:0)){A=c[b>>2]|0;c[A+20>>2]=23;Id[c[A>>2]&511](b)}A=d+24|0;q=c[A>>2]|0;if(!(q>>>0<=e>>>0?z>>>0<=((c[d+16>>2]|0)+q|0)>>>0:0))y=7;a:do if((y|0)==7){if(!(a[d+34>>0]|0)){q=c[b>>2]|0;c[q+20>>2]=71;Id[c[q>>2]&511](b)}l=d+33|0;if(a[l>>0]|0){n=c[d+8>>2]|0;h=c[A>>2]|0;p=d+20|0;q=d+16|0;f=c[q>>2]|0;b:do if((f|0)>0?(r=d+28|0,s=d+40|0,t=d+44|0,k=c[p>>2]|0,k=(k|0)<(f|0)?k:f,m=(c[r>>2]|0)-h|0,m=(k|0)<(m|0)?k:m,k=(c[v>>2]|0)-h|0,k=(m|0)<(k|0)?m:k,(k|0)>=1):0){j=ea(h,n)|0;m=0;while(1){h=ea(k,n)|0;Hd[c[t>>2]&63](b,s,c[(c[d>>2]|0)+(m<<2)>>2]|0,j,h);f=c[p>>2]|0;o=c[q>>2]|0;m=f+m|0;if((o|0)<=(m|0))break b;k=o-m|0;f=(f|0)<(k|0)?f:k;k=m+(c[A>>2]|0)|0;o=(c[r>>2]|0)-k|0;o=(f|0)<(o|0)?f:o;k=(c[v>>2]|0)-k|0;k=(o|0)<(k|0)?o:k;if((k|0)<1)break;else j=h+j|0}}while(0);a[l>>0]=0}f=c[d+16>>2]|0;if((c[A>>2]|0)>>>0>>0)h=e;else{h=z-f|0;h=(h|0)<0?0:h}c[A>>2]=h;m=c[d+8>>2]|0;n=d+20|0;o=d+16|0;if((f|0)>0?(w=d+28|0,x=d+40|0,u=c[n>>2]|0,u=(u|0)<(f|0)?u:f,t=(c[w>>2]|0)-h|0,t=(u|0)<(t|0)?u:t,u=(c[v>>2]|0)-h|0,u=(t|0)<(u|0)?t:u,(u|0)>=1):0){f=u;k=ea(m,h)|0;l=0;while(1){j=ea(f,m)|0;Hd[c[x>>2]&63](b,x,c[(c[d>>2]|0)+(l<<2)>>2]|0,k,j);f=c[n>>2]|0;h=c[o>>2]|0;l=f+l|0;if((h|0)<=(l|0))break a;t=h-l|0;t=(f|0)<(t|0)?f:t;f=l+(c[A>>2]|0)|0;u=(c[w>>2]|0)-f|0;u=(t|0)<(u|0)?t:u;f=(c[v>>2]|0)-f|0;f=(u|0)<(f|0)?u:f;if((f|0)<1)break;else k=j+k|0}}}while(0);h=d+28|0;f=c[h>>2]|0;do if(f>>>0>>0){if(f>>>0>>0)if(!(g<<24>>24)){h=0;f=e}else{f=c[b>>2]|0;c[f+20>>2]=23;Id[c[f>>2]&511](b);f=e;y=27}else y=27;if((y|0)==27)if(!(g<<24>>24))h=0;else{c[h>>2]=z;h=1}if(!(a[d+32>>0]|0)){if(h)break;z=c[b>>2]|0;c[z+20>>2]=23;Id[c[z>>2]&511](b);break}j=c[d+8>>2]|0;h=c[A>>2]|0;f=f-h|0;h=z-h|0;if(f>>>0>>0)do{Cga(c[(c[d>>2]|0)+(f<<2)>>2]|0,0,j|0)|0;f=f+1|0}while((f|0)!=(h|0))}while(0);if(!(g<<24>>24)){d=c[d>>2]|0;g=c[A>>2]|0;g=e-g|0;g=d+(g<<2)|0;i=B;return g|0}a[d+33>>0]=1;d=c[d>>2]|0;g=c[A>>2]|0;g=e-g|0;g=d+(g<<2)|0;i=B;return g|0}function cT(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;z=f+e|0;v=d+4|0;if(!((z>>>0<=(c[v>>2]|0)>>>0?(c[d+12>>2]|0)>>>0>=f>>>0:0)?(c[d>>2]|0)!=0:0)){A=c[b>>2]|0;c[A+20>>2]=23;Id[c[A>>2]&511](b)}A=d+24|0;q=c[A>>2]|0;if(!(q>>>0<=e>>>0?z>>>0<=((c[d+16>>2]|0)+q|0)>>>0:0))y=7;a:do if((y|0)==7){if(!(a[d+34>>0]|0)){q=c[b>>2]|0;c[q+20>>2]=71;Id[c[q>>2]&511](b)}l=d+33|0;if(a[l>>0]|0){n=c[d+8>>2]<<7;h=c[A>>2]|0;p=d+20|0;q=d+16|0;f=c[q>>2]|0;b:do if((f|0)>0?(r=d+28|0,s=d+40|0,t=d+44|0,k=c[p>>2]|0,k=(k|0)<(f|0)?k:f,m=(c[r>>2]|0)-h|0,m=(k|0)<(m|0)?k:m,k=(c[v>>2]|0)-h|0,k=(m|0)<(k|0)?m:k,(k|0)>=1):0){j=ea(h,n)|0;m=0;while(1){h=ea(k,n)|0;Hd[c[t>>2]&63](b,s,c[(c[d>>2]|0)+(m<<2)>>2]|0,j,h);f=c[p>>2]|0;o=c[q>>2]|0;m=f+m|0;if((o|0)<=(m|0))break b;k=o-m|0;f=(f|0)<(k|0)?f:k;k=m+(c[A>>2]|0)|0;o=(c[r>>2]|0)-k|0;o=(f|0)<(o|0)?f:o;k=(c[v>>2]|0)-k|0;k=(o|0)<(k|0)?o:k;if((k|0)<1)break;else j=h+j|0}}while(0);a[l>>0]=0}f=c[d+16>>2]|0;if((c[A>>2]|0)>>>0>>0)h=e;else{h=z-f|0;h=(h|0)<0?0:h}c[A>>2]=h;m=c[d+8>>2]<<7;n=d+20|0;o=d+16|0;if((f|0)>0?(w=d+28|0,x=d+40|0,u=c[n>>2]|0,u=(u|0)<(f|0)?u:f,t=(c[w>>2]|0)-h|0,t=(u|0)<(t|0)?u:t,u=(c[v>>2]|0)-h|0,u=(t|0)<(u|0)?t:u,(u|0)>=1):0){f=u;k=ea(m,h)|0;l=0;while(1){j=ea(f,m)|0;Hd[c[x>>2]&63](b,x,c[(c[d>>2]|0)+(l<<2)>>2]|0,k,j);f=c[n>>2]|0;h=c[o>>2]|0;l=f+l|0;if((h|0)<=(l|0))break a;t=h-l|0;t=(f|0)<(t|0)?f:t;f=l+(c[A>>2]|0)|0;u=(c[w>>2]|0)-f|0;u=(t|0)<(u|0)?t:u;f=(c[v>>2]|0)-f|0;f=(u|0)<(f|0)?u:f;if((f|0)<1)break;else k=j+k|0}}}while(0);h=d+28|0;f=c[h>>2]|0;do if(f>>>0>>0){if(f>>>0>>0)if(!(g<<24>>24)){h=0;f=e}else{f=c[b>>2]|0;c[f+20>>2]=23;Id[c[f>>2]&511](b);f=e;y=27}else y=27;if((y|0)==27)if(!(g<<24>>24))h=0;else{c[h>>2]=z;h=1}if(!(a[d+32>>0]|0)){if(h)break;z=c[b>>2]|0;c[z+20>>2]=23;Id[c[z>>2]&511](b);break}j=c[d+8>>2]<<7;h=c[A>>2]|0;f=f-h|0;h=z-h|0;if(f>>>0>>0)do{Cga(c[(c[d>>2]|0)+(f<<2)>>2]|0,0,j|0)|0;f=f+1|0}while((f|0)!=(h|0))}while(0);if(!(g<<24>>24)){d=c[d>>2]|0;g=c[A>>2]|0;g=e-g|0;g=d+(g<<2)|0;i=B;return g|0}a[d+33>>0]=1;d=c[d>>2]|0;g=c[A>>2]|0;g=e-g|0;g=d+(g<<2)|0;i=B;return g|0}function dT(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;h=c[b+4>>2]|0;if(d>>>0<=1){if((d|0)==1){g=h+68|0;e=c[g>>2]|0;if(e)do{f=e+34|0;if(a[f>>0]|0){a[f>>0]=0;Jd[c[e+48>>2]&255](b,e+40|0)}e=c[e+36>>2]|0}while((e|0)!=0);c[g>>2]=0;g=h+72|0;e=c[g>>2]|0;if(e)do{f=e+34|0;if(a[f>>0]|0){a[f>>0]=0;Jd[c[e+48>>2]&255](b,e+40|0)}e=c[e+36>>2]|0}while((e|0)!=0);c[g>>2]=0}}else{g=c[b>>2]|0;c[g+20>>2]=15;c[g+24>>2]=d;Id[c[g>>2]&511](b)}g=h+60+(d<<2)|0;e=c[g>>2]|0;c[g>>2]=0;if(e){f=h+76|0;do{k=e;e=c[e>>2]|0;g=(c[k+4>>2]|0)+16+(c[k+8>>2]|0)|0;NH(b,k,g);c[f>>2]=(c[f>>2]|0)-g}while((e|0)!=0)}g=h+52+(d<<2)|0;e=c[g>>2]|0;c[g>>2]=0;if(!e){i=j;return}f=h+76|0;do{g=e;e=c[e>>2]|0;h=(c[g+4>>2]|0)+16+(c[g+8>>2]|0)|0;LH(b,g,h);c[f>>2]=(c[f>>2]|0)-h}while((e|0)!=0);i=j;return}function eT(a){a=a|0;var b=0,d=0;b=i;dT(a,1);dT(a,0);d=a+4|0;LH(a,c[d>>2]|0,84);c[d>>2]=0;RH(a);i=b;return}function fT(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;f=b+448|0;g=c[f>>2]|0;c[b+116>>2]=c[g+16>>2];c[b+112>>2]=c[g+20>>2];e=c[b+76>>2]|0;if(!e){e=g+4|0;if((c[b+100>>2]|0)==3){c[e>>2]=48;i=q;return}else{c[e>>2]=49;i=q;return}}else if((e|0)==1){o=b+100|0;c[g+4>>2]=(c[o>>2]|0)==3?51:50;c[g+48>>2]=0;if(!(a[g+28>>0]|0))iT(b);if(c[g+52>>2]|0){i=q;return}e=c[f>>2]|0;h=c[o>>2]|0;if((h|0)<=0){i=q;return}m=e+32|0;n=b+4|0;l=e+52|0;j=0;do{g=c[m+(j<<2)>>2]|0;a:do if((j|0)>0){f=0;while(1){e=f+1|0;if((g|0)==(c[m+(f<<2)>>2]|0))break;if((e|0)<(j|0))f=e;else{p=14;break a}}e=c[l+(f<<2)>>2]|0;if(!e)p=14}else p=14;while(0);if((p|0)==14){p=0;e=Od[c[c[n>>2]>>2]&255](b,1,1024)|0;f=(g<<9)+-512|0;g=0;do{k=0;do{r=255-(d[285096+(g<<4)+k>>0]<<1)|0;h=r*255|0;if((r|0)<0)h=0-((0-h|0)/(f|0)|0)|0;else h=(h|0)/(f|0)|0;c[e+(g<<6)+(k<<2)>>2]=h;k=k+1|0}while((k|0)!=16);g=g+1|0}while((g|0)!=16);h=c[o>>2]|0}c[l+(j<<2)>>2]=e;j=j+1|0}while((j|0)<(h|0));i=q;return}else if((e|0)==2){c[g+4>>2]=52;a[g+84>>0]=0;l=g+68|0;if(!(c[l>>2]|0)){e=b+92|0;f=(c[e>>2]<<1)+4|0;g=b+100|0;if((c[g>>2]|0)<=0){i=q;return}j=b+4|0;k=0;do{c[l+(k<<2)>>2]=Od[c[(c[j>>2]|0)+4>>2]&255](b,1,f)|0;k=k+1|0;h=c[g>>2]|0}while((k|0)<(h|0))}else{e=b+92|0;h=c[b+100>>2]|0}g=(c[e>>2]<<1)+4|0;f=b+100|0;if((h|0)>0)e=0;else{i=q;return}do{Cga(c[l+(e<<2)>>2]|0,0,g|0)|0;e=e+1|0}while((e|0)<(c[f>>2]|0));i=q;return}else{r=c[b>>2]|0;c[r+20>>2]=49;Id[c[r>>2]&511](b);i=q;return}}function gT(a){a=a|0;return}function hT(a){a=a|0;var b=0,d=0;b=i;d=c[a>>2]|0;c[d+20>>2]=47;Id[c[d>>2]&511](a);i=b;return}function iT(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;d=c[b+448>>2]|0;o=(c[b+76>>2]|0)==1;a[d+28>>0]=o&1;m=b+100|0;n=d+24|0;c[n>>2]=ce[c[(c[b+4>>2]|0)+8>>2]&255](b,1,o?766:256,c[m>>2]|0)|0;if((c[m>>2]|0)<=0){i=p;return}l=d+32|0;j=c[d+20>>2]|0;k=0;do{b=c[l+(k<<2)>>2]|0;j=(j|0)/(b|0)|0;if(o){g=(c[n>>2]|0)+(k<<2)|0;c[g>>2]=(c[g>>2]|0)+255}h=c[(c[n>>2]|0)+(k<<2)>>2]|0;e=b+-1|0;f=e<<1;g=0;d=(b+254|0)/(f|0)|0;b=0;do{if((g|0)>(d|0))do{b=b+1|0;d=(((b<<1|1)*255|0)+e|0)/(f|0)|0}while((g|0)>(d|0));a[h+g>>0]=ea(b,j)|0;g=g+1|0}while((g|0)!=256);if(o){b=h+255|0;d=1;do{a[h+(0-d)>>0]=a[h>>0]|0;a[h+(d+255)>>0]=a[b>>0]|0;d=d+1|0}while((d|0)!=256)}k=k+1|0}while((k|0)<(c[m>>2]|0));i=p;return}function jT(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;g=c[b+448>>2]|0;h=c[g+24>>2]|0;f=b+76|0;if(!(c[f>>2]|0))e=0;else{c[f>>2]=2;e=2}if(!(d<<24>>24)){c[g+4>>2]=(e|0)==2?55:54;c[g+8>>2]=302;e=c[b+112>>2]|0;if((e|0)>=1){if((e|0)>256){d=c[b>>2]|0;c[d+20>>2]=59;c[d+24>>2]=256;Id[c[d>>2]&511](b)}}else{d=c[b>>2]|0;c[d+20>>2]=58;c[d+24>>2]=1;Id[c[d>>2]&511](b)}if((c[f>>2]|0)==2){f=((c[b+92>>2]|0)*6|0)+12|0;d=g+32|0;e=c[d>>2]|0;if(!e){e=Od[c[(c[b+4>>2]|0)+4>>2]&255](b,1,f)|0;c[d>>2]=e}Cga(e|0,0,f|0)|0;if(!(c[g+40>>2]|0))lT(b);a[g+36>>0]=0}}else{c[g+4>>2]=53;c[g+8>>2]=301;a[g+28>>0]=1}e=g+28|0;if(!(a[e>>0]|0)){i=j;return}else d=0;do{Cga(c[h+(d<<2)>>2]|0,0,4096)|0;d=d+1|0}while((d|0)!=32);a[e>>0]=0;i=j;return}function kT(b){b=b|0;a[(c[b+448>>2]|0)+28>>0]=1;return}function lT(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;e=c[a+448>>2]|0;a=Od[c[c[a+4>>2]>>2]&255](a,1,2044)|0;d=a+1020|0;c[e+40>>2]=d;c[d>>2]=0;c[a+1024>>2]=1;c[a+1016>>2]=-1;c[a+1028>>2]=2;c[a+1012>>2]=-2;c[a+1032>>2]=3;c[a+1008>>2]=-3;c[a+1036>>2]=4;c[a+1004>>2]=-4;c[a+1040>>2]=5;c[a+1e3>>2]=-5;c[a+1044>>2]=6;c[a+996>>2]=-6;c[a+1048>>2]=7;c[a+992>>2]=-7;c[a+1052>>2]=8;c[a+988>>2]=-8;c[a+1056>>2]=9;c[a+984>>2]=-9;c[a+1060>>2]=10;c[a+980>>2]=-10;c[a+1064>>2]=11;c[a+976>>2]=-11;c[a+1068>>2]=12;c[a+972>>2]=-12;c[a+1072>>2]=13;c[a+968>>2]=-13;c[a+1076>>2]=14;c[a+964>>2]=-14;c[a+1080>>2]=15;c[a+960>>2]=-15;a=16;e=16;do{c[d+(a<<2)>>2]=e;c[d+(0-a<<2)>>2]=0-e;a=a+1|0;e=(a&1^1)+e|0}while((a|0)!=48);a=0-e|0;b=48;do{c[d+(b<<2)>>2]=e;c[d+(0-b<<2)>>2]=a;b=b+1|0}while((b|0)!=256);i=f;return}function mT(a){a=a|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;E=i;n=a+44|0;o=c[n>>2]|0;A=a+60|0;B=a+116|0;C=a+108|0;w=o+-262|0;D=a+56|0;x=a+5812|0;y=a+72|0;z=a+88|0;p=a+84|0;q=a+68|0;r=a+52|0;s=a+64|0;t=a+112|0;u=a+92|0;v=a+76|0;f=c[B>>2]|0;g=o;while(1){j=c[C>>2]|0;l=(c[A>>2]|0)-f-j|0;if(j>>>0<(w+g|0)>>>0)g=l;else{j=c[D>>2]|0;Aga(j|0,j+o|0,o|0)|0;c[t>>2]=(c[t>>2]|0)-o;j=(c[C>>2]|0)-o|0;c[C>>2]=j;c[u>>2]=(c[u>>2]|0)-o;h=c[v>>2]|0;g=h;h=(c[q>>2]|0)+(h<<1)|0;do{h=h+-2|0;f=e[h>>1]|0;if(f>>>0>>0)f=0;else f=f-o&65535;b[h>>1]=f;g=g+-1|0}while((g|0)!=0);g=o;h=(c[s>>2]|0)+(o<<1)|0;do{h=h+-2|0;f=e[h>>1]|0;if(f>>>0>>0)f=0;else f=f-o&65535;b[h>>1]=f;g=g+-1|0}while((g|0)!=0);g=l+o|0}m=c[a>>2]|0;h=m+4|0;k=c[h>>2]|0;if(!k)break;f=c[B>>2]|0;l=(c[D>>2]|0)+(f+j)|0;j=k>>>0>g>>>0?g:k;if(!j)j=0;else{c[h>>2]=k-j;Aga(l|0,c[m>>2]|0,j|0)|0;f=c[(c[m+28>>2]|0)+24>>2]|0;if((f|0)==1){k=m+48|0;c[k>>2]=YH(c[k>>2]|0,l,j)|0}else if((f|0)==2){k=m+48|0;c[k>>2]=ZH(c[k>>2]|0,l,j)|0}c[m>>2]=(c[m>>2]|0)+j;f=m+8|0;c[f>>2]=(c[f>>2]|0)+j;f=c[B>>2]|0}f=f+j|0;c[B>>2]=f;j=c[x>>2]|0;a:do if((f+j|0)>>>0>2){h=(c[C>>2]|0)-j|0;l=c[D>>2]|0;g=d[l+h>>0]|0;c[y>>2]=g;m=c[z>>2]|0;k=c[p>>2]|0;g=((d[l+(h+1)>>0]|0)^g<>2]=g;while(1){if(!j)break a;g=((d[l+(h+2)>>0]|0)^g<>2]=g;F=(c[q>>2]|0)+(g<<1)|0;b[(c[s>>2]|0)+((c[r>>2]&h)<<1)>>1]=b[F>>1]|0;b[F>>1]=h;j=j+-1|0;c[x>>2]=j;if((f+j|0)>>>0<3)break;else h=h+1|0}}while(0);if(f>>>0>=262)break;if(!(c[(c[a>>2]|0)+4>>2]|0))break;g=c[n>>2]|0}h=a+5824|0;j=c[h>>2]|0;g=c[A>>2]|0;if(g>>>0<=j>>>0){i=E;return}f=(c[B>>2]|0)+(c[C>>2]|0)|0;if(j>>>0>>0){F=g-f|0;F=F>>>0>258?258:F;Cga((c[D>>2]|0)+f|0,0,F|0)|0;c[h>>2]=F+f;i=E;return}f=f+258|0;if(f>>>0<=j>>>0){i=E;return}F=f-j|0;C=g-j|0;F=F>>>0>C>>>0?C:F;Cga((c[D>>2]|0)+j|0,0,F|0)|0;c[h>>2]=(c[h>>2]|0)+F;i=E;return}function nT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;h=c[a+28>>2]|0;j=h+52|0;e=c[j>>2]|0;if(!e){e=Od[c[a+32>>2]&255](c[a+40>>2]|0,1<>2],1)|0;c[j>>2]=e;if(!e){b=1;i=k;return b|0}}g=h+40|0;a=c[g>>2]|0;if(!a){a=1<>2];c[g>>2]=a;c[h+48>>2]=0;c[h+44>>2]=0}if(a>>>0<=d>>>0){Aga(e|0,b+(0-a)|0,a|0)|0;c[h+48>>2]=0;c[h+44>>2]=c[g>>2];b=0;i=k;return b|0}f=h+48|0;l=c[f>>2]|0;a=a-l|0;a=a>>>0>d>>>0?d:a;Aga(e+l|0,b+(0-d)|0,a|0)|0;e=d-a|0;if((a|0)!=(d|0)){Aga(c[j>>2]|0,b+(0-e)|0,e|0)|0;c[f>>2]=e;c[h+44>>2]=c[g>>2];l=0;i=k;return l|0}e=(c[f>>2]|0)+d|0;l=c[g>>2]|0;c[f>>2]=(e|0)==(l|0)?0:e;e=h+44|0;a=c[e>>2]|0;if(a>>>0>=l>>>0){l=0;i=k;return l|0}c[e>>2]=a+d;l=0;i=k;return l|0}function oT(a){a=a|0;var d=0,e=0;e=i;d=0;do{b[a+(d<<2)+148>>1]=0;d=d+1|0}while((d|0)!=286);b[a+2440>>1]=0;b[a+2444>>1]=0;b[a+2448>>1]=0;b[a+2452>>1]=0;b[a+2456>>1]=0;b[a+2460>>1]=0;b[a+2464>>1]=0;b[a+2468>>1]=0;b[a+2472>>1]=0;b[a+2476>>1]=0;b[a+2480>>1]=0;b[a+2484>>1]=0;b[a+2488>>1]=0;b[a+2492>>1]=0;b[a+2496>>1]=0;b[a+2500>>1]=0;b[a+2504>>1]=0;b[a+2508>>1]=0;b[a+2512>>1]=0;b[a+2516>>1]=0;b[a+2520>>1]=0;b[a+2524>>1]=0;b[a+2528>>1]=0;b[a+2532>>1]=0;b[a+2536>>1]=0;b[a+2540>>1]=0;b[a+2544>>1]=0;b[a+2548>>1]=0;b[a+2552>>1]=0;b[a+2556>>1]=0;b[a+2684>>1]=0;b[a+2688>>1]=0;b[a+2692>>1]=0;b[a+2696>>1]=0;b[a+2700>>1]=0;b[a+2704>>1]=0;b[a+2708>>1]=0;b[a+2712>>1]=0;b[a+2716>>1]=0;b[a+2720>>1]=0;b[a+2724>>1]=0;b[a+2728>>1]=0;b[a+2732>>1]=0;b[a+2736>>1]=0;b[a+2740>>1]=0;b[a+2744>>1]=0;b[a+2748>>1]=0;b[a+2752>>1]=0;b[a+2756>>1]=0;b[a+1172>>1]=1;c[a+5804>>2]=0;c[a+5800>>2]=0;c[a+5808>>2]=0;c[a+5792>>2]=0;i=e;return}function pT(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+32|0;B=C;A=c[g>>2]|0;x=g+8|0;t=c[x>>2]|0;p=c[t>>2]|0;t=c[t+12>>2]|0;w=f+5200|0;c[w>>2]=0;y=f+5204|0;c[y>>2]=573;if((t|0)>0){l=-1;h=0;do{if(!(b[A+(h<<2)>>1]|0))b[A+(h<<2)+2>>1]=0;else{l=(c[w>>2]|0)+1|0;c[w>>2]=l;c[f+(l<<2)+2908>>2]=h;a[f+h+5208>>0]=0;l=h}h=h+1|0}while((h|0)!=(t|0));h=c[w>>2]|0;if((h|0)<2)j=3;else z=l}else{h=0;l=-1;j=3}if((j|0)==3){k=f+5800|0;j=f+5804|0;if(!p){do{v=(l|0)<2;z=l+1|0;l=v?z:l;z=v?z:0;h=h+1|0;c[w>>2]=h;c[f+(h<<2)+2908>>2]=z;b[A+(z<<2)>>1]=1;a[f+z+5208>>0]=0;c[k>>2]=(c[k>>2]|0)+-1;h=c[w>>2]|0}while((h|0)<2);z=l}else{do{v=(l|0)<2;z=l+1|0;l=v?z:l;z=v?z:0;h=h+1|0;c[w>>2]=h;c[f+(h<<2)+2908>>2]=z;b[A+(z<<2)>>1]=1;a[f+z+5208>>0]=0;c[k>>2]=(c[k>>2]|0)+-1;c[j>>2]=(c[j>>2]|0)-(e[p+(z<<2)+2>>1]|0);h=c[w>>2]|0}while((h|0)<2);z=l}}v=g+4|0;c[v>>2]=z;l=h;s=(h|0)/2|0;do{r=c[f+(s<<2)+2908>>2]|0;m=f+r+5208|0;h=s<<1;a:do if((h|0)>(l|0))h=s;else{o=A+(r<<2)|0;q=s;p=h;while(1){do if((p|0)<(l|0)){h=p|1;l=c[f+(h<<2)+2908>>2]|0;j=b[A+(l<<2)>>1]|0;k=c[f+(p<<2)+2908>>2]|0;n=b[A+(k<<2)>>1]|0;if((j&65535)>=(n&65535)){if(j<<16>>16!=n<<16>>16){h=p;break}if((d[f+l+5208>>0]|0)>(d[f+k+5208>>0]|0)){h=p;break}}}else h=p;while(0);l=b[o>>1]|0;j=c[f+(h<<2)+2908>>2]|0;k=b[A+(j<<2)>>1]|0;if((l&65535)<(k&65535)){h=q;break a}if(l<<16>>16==k<<16>>16?(d[m>>0]|0)<=(d[f+j+5208>>0]|0):0){h=q;break a}c[f+(q<<2)+2908>>2]=j;p=h<<1;l=c[w>>2]|0;if((p|0)>(l|0))break;else q=h}}while(0);c[f+(h<<2)+2908>>2]=r;s=s+-1|0;l=c[w>>2]|0}while((s|0)>0);u=f+2912|0;h=l;do{s=c[u>>2]|0;l=h+-1|0;c[w>>2]=l;r=c[f+(h<<2)+2908>>2]|0;c[u>>2]=r;o=f+r+5208|0;b:do if((h|0)<3)h=1;else{m=A+(r<<2)|0;q=1;p=2;while(1){do if((p|0)<(l|0)){h=p|1;l=c[f+(h<<2)+2908>>2]|0;j=b[A+(l<<2)>>1]|0;k=c[f+(p<<2)+2908>>2]|0;n=b[A+(k<<2)>>1]|0;if((j&65535)>=(n&65535)){if(j<<16>>16!=n<<16>>16){h=p;break}if((d[f+l+5208>>0]|0)>(d[f+k+5208>>0]|0)){h=p;break}}}else h=p;while(0);l=b[m>>1]|0;j=c[f+(h<<2)+2908>>2]|0;k=b[A+(j<<2)>>1]|0;if((l&65535)<(k&65535)){h=q;break b}if(l<<16>>16==k<<16>>16?(d[o>>0]|0)<=(d[f+j+5208>>0]|0):0){h=q;break b}c[f+(q<<2)+2908>>2]=j;p=h<<1;l=c[w>>2]|0;if((p|0)>(l|0))break;else q=h}}while(0);c[f+(h<<2)+2908>>2]=r;r=c[u>>2]|0;o=(c[y>>2]|0)+-1|0;c[y>>2]=o;c[f+(o<<2)+2908>>2]=s;o=(c[y>>2]|0)+-1|0;c[y>>2]=o;c[f+(o<<2)+2908>>2]=r;o=A+(t<<2)|0;b[o>>1]=(e[A+(r<<2)>>1]|0)+(e[A+(s<<2)>>1]|0);h=a[f+s+5208>>0]|0;m=a[f+r+5208>>0]|0;q=f+t+5208|0;a[q>>0]=(((h&255)<(m&255)?m:h)&255)+1;h=t&65535;b[A+(r<<2)+2>>1]=h;b[A+(s<<2)+2>>1]=h;c[u>>2]=t;h=c[w>>2]|0;c:do if((h|0)<2)h=1;else{m=1;l=h;p=2;while(1){do if((p|0)<(l|0)){h=p|1;l=c[f+(h<<2)+2908>>2]|0;j=b[A+(l<<2)>>1]|0;k=c[f+(p<<2)+2908>>2]|0;n=b[A+(k<<2)>>1]|0;if((j&65535)>=(n&65535)){if(j<<16>>16!=n<<16>>16){h=p;break}if((d[f+l+5208>>0]|0)>(d[f+k+5208>>0]|0)){h=p;break}}}else h=p;while(0);l=b[o>>1]|0;j=c[f+(h<<2)+2908>>2]|0;k=b[A+(j<<2)>>1]|0;if((l&65535)<(k&65535)){h=m;break c}if(l<<16>>16==k<<16>>16?(d[q>>0]|0)<=(d[f+j+5208>>0]|0):0){h=m;break c}c[f+(m<<2)+2908>>2]=j;p=h<<1;l=c[w>>2]|0;if((p|0)>(l|0))break;else m=h}}while(0);c[f+(h<<2)+2908>>2]=t;t=t+1|0;h=c[w>>2]|0}while((h|0)>1);t=c[u>>2]|0;u=(c[y>>2]|0)+-1|0;c[y>>2]=u;c[f+(u<<2)+2908>>2]=t;u=c[g>>2]|0;t=c[v>>2]|0;h=c[x>>2]|0;p=c[h>>2]|0;q=c[h+4>>2]|0;r=c[h+8>>2]|0;h=c[h+16>>2]|0;l=f+2876|0;j=l+32|0;do{b[l>>1]=0;l=l+2|0}while((l|0)<(j|0));l=c[y>>2]|0;b[u+(c[f+(l<<2)+2908>>2]<<2)+2>>1]=0;l=l+1|0;d:do if((l|0)<573){s=f+5800|0;o=f+5804|0;if(!p){m=l;l=0;do{n=c[f+(m<<2)+2908>>2]|0;y=u+(n<<2)+2|0;k=e[u+(e[y>>1]<<2)+2>>1]|0;x=(k|0)<(h|0);k=x?k+1|0:h;l=(x&1^1)+l|0;b[y>>1]=k;if((n|0)<=(t|0)){y=f+(k<<1)+2876|0;b[y>>1]=(b[y>>1]|0)+1<<16>>16;if((n|0)<(r|0))j=0;else j=c[q+(n-r<<2)>>2]|0;y=ea(e[u+(n<<2)>>1]|0,j+k|0)|0;c[s>>2]=y+(c[s>>2]|0)}m=m+1|0}while((m|0)!=573)}else{m=l;l=0;do{n=c[f+(m<<2)+2908>>2]|0;y=u+(n<<2)+2|0;k=e[u+(e[y>>1]<<2)+2>>1]|0;x=(k|0)<(h|0);k=x?k+1|0:h;l=(x&1^1)+l|0;b[y>>1]=k;if((n|0)<=(t|0)){y=f+(k<<1)+2876|0;b[y>>1]=(b[y>>1]|0)+1<<16>>16;if((n|0)<(r|0))j=0;else j=c[q+(n-r<<2)>>2]|0;y=e[u+(n<<2)>>1]|0;x=ea(y,j+k|0)|0;c[s>>2]=x+(c[s>>2]|0);y=ea((e[p+(n<<2)+2>>1]|0)+j|0,y)|0;c[o>>2]=y+(c[o>>2]|0)}m=m+1|0}while((m|0)!=573)}if(l){o=f+(h<<1)+2876|0;do{n=h;while(1){m=n+-1|0;j=f+(m<<1)+2876|0;k=b[j>>1]|0;if(!(k<<16>>16))n=m;else break}b[j>>1]=k+-1<<16>>16;j=f+(n<<1)+2876|0;b[j>>1]=(e[j>>1]|0)+2;j=(b[o>>1]|0)+-1<<16>>16;b[o>>1]=j;l=l+-2|0}while((l|0)>0);if(h){l=573;while(1){o=h&65535;if(j<<16>>16){n=j&65535;do{do{l=l+-1|0;k=c[f+(l<<2)+2908>>2]|0}while((k|0)>(t|0));j=u+(k<<2)+2|0;m=e[j>>1]|0;if((h|0)!=(m|0)){y=ea(e[u+(k<<2)>>1]|0,h-m|0)|0;c[s>>2]=y+(c[s>>2]|0);b[j>>1]=o}n=n+-1|0}while((n|0)!=0)}h=h+-1|0;if(!h)break d;j=b[f+(h<<1)+2876>>1]|0}}}}while(0);h=1;j=0;do{j=(e[f+(h+-1<<1)+2876>>1]|0)+(j&65534)<<1;b[B+(h<<1)>>1]=j;h=h+1|0}while((h|0)!=16);if((z|0)<0){i=C;return}else l=0;while(1){f=b[A+(l<<2)+2>>1]|0;h=f&65535;if(f<<16>>16){j=B+(h<<1)|0;k=b[j>>1]|0;b[j>>1]=k+1<<16>>16;k=k&65535;j=0;while(1){j=j|k&1;h=h+-1|0;if((h|0)<=0)break;else{k=k>>>1;j=j<<1}}b[A+(l<<2)>>1]=j}if((l|0)==(z|0))break;else l=l+1|0}i=C;return}function qT(a,c,d){a=a|0;c=c|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;q=b[c+2>>1]|0;p=q<<16>>16==0;b[c+(d+1<<2)+2>>1]=-1;k=a+2752|0;l=a+2756|0;m=a+2748|0;o=p?138:7;p=p?3:4;f=0;q=q&65535;r=-1;a:while(1){n=0;do{if((f|0)>(d|0))break a;f=f+1|0;g=b[c+(f<<2)+2>>1]|0;j=g&65535;n=n+1|0;h=(q|0)==(j|0)}while((n|0)<(o|0)&h);do if((n|0)>=(p|0))if(!q)if((n|0)<11){b[k>>1]=(b[k>>1]|0)+1<<16>>16;break}else{b[l>>1]=(b[l>>1]|0)+1<<16>>16;break}else{if((q|0)!=(r|0)){r=a+(q<<2)+2684|0;b[r>>1]=(b[r>>1]|0)+1<<16>>16}b[m>>1]=(b[m>>1]|0)+1<<16>>16;break}else{r=a+(q<<2)+2684|0;b[r>>1]=(e[r>>1]|0)+n}while(0);if(!(g<<16>>16)){r=q;o=138;p=3;q=j;continue}r=q;o=h?6:7;p=h?3:4;q=j}i=s;return}function rT(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;r=f+5792|0;if(!(c[r>>2]|0)){o=c[f+5820>>2]|0;j=b[f+5816>>1]|0}else{s=f+5796|0;t=f+5784|0;u=f+5820|0;v=f+5816|0;w=f+20|0;x=f+8|0;y=0;do{n=b[(c[s>>2]|0)+(y<<1)>>1]|0;p=n&65535;q=d[(c[t>>2]|0)+y>>0]|0;y=y+1|0;do if(!(n<<16>>16)){l=e[g+(q<<2)+2>>1]|0;o=c[u>>2]|0;m=e[g+(q<<2)>>1]|0;k=e[v>>1]|0|m<>1]=j;if((o|0)>(16-l|0)){j=c[w>>2]|0;c[w>>2]=j+1;a[(c[x>>2]|0)+j>>0]=k;j=(e[v>>1]|0)>>>8&255;o=c[w>>2]|0;c[w>>2]=o+1;a[(c[x>>2]|0)+o>>0]=j;o=c[u>>2]|0;j=m>>>(16-o|0)&65535;b[v>>1]=j;o=l+-16+o|0;c[u>>2]=o;break}else{o=o+l|0;c[u>>2]=o;break}}else{n=d[298536+q>>0]|0;j=(n|256)+1|0;l=e[g+(j<<2)+2>>1]|0;o=c[u>>2]|0;j=e[g+(j<<2)>>1]|0;m=e[v>>1]|0|j<>1]=k;if((o|0)>(16-l|0)){k=c[w>>2]|0;c[w>>2]=k+1;a[(c[x>>2]|0)+k>>0]=m;k=(e[v>>1]|0)>>>8&255;o=c[w>>2]|0;c[w>>2]=o+1;a[(c[x>>2]|0)+o>>0]=k;o=c[u>>2]|0;k=j>>>(16-o|0)&65535;b[v>>1]=k;l=l+-16+o|0}else l=o+l|0;c[u>>2]=l;o=c[300136+(n<<2)>>2]|0;do if((n+-8|0)>>>0<20){m=q-(c[300256+(n<<2)>>2]|0)&65535;j=m<>1]=k;if((l|0)>(16-o|0)){k=c[w>>2]|0;c[w>>2]=k+1;a[(c[x>>2]|0)+k>>0]=j;k=(e[v>>1]|0)>>>8&255;q=c[w>>2]|0;c[w>>2]=q+1;a[(c[x>>2]|0)+q>>0]=k;q=c[u>>2]|0;k=m>>>(16-q|0)&65535;b[v>>1]=k;q=o+-16+q|0;c[u>>2]=q;break}else{q=l+o|0;c[u>>2]=q;break}}else q=l;while(0);p=p+-1|0;if(p>>>0<256)j=p;else j=(p>>>7)+256|0;n=d[298024+j>>0]|0;l=e[h+(n<<2)+2>>1]|0;o=e[h+(n<<2)>>1]|0;m=k&65535|o<>1]=j;if((q|0)>(16-l|0)){j=c[w>>2]|0;c[w>>2]=j+1;a[(c[x>>2]|0)+j>>0]=m;j=(e[v>>1]|0)>>>8&255;k=c[w>>2]|0;c[w>>2]=k+1;a[(c[x>>2]|0)+k>>0]=j;k=c[u>>2]|0;j=o>>>(16-k|0)&65535;b[v>>1]=j;o=l+-16+k|0}else o=q+l|0;c[u>>2]=o;l=c[300376+(n<<2)>>2]|0;if((n+-4|0)>>>0<26){k=p-(c[300496+(n<<2)>>2]|0)&65535;m=k<>1]=j;if((o|0)>(16-l|0)){j=c[w>>2]|0;c[w>>2]=j+1;a[(c[x>>2]|0)+j>>0]=m;j=(e[v>>1]|0)>>>8&255;o=c[w>>2]|0;c[w>>2]=o+1;a[(c[x>>2]|0)+o>>0]=j;o=c[u>>2]|0;j=k>>>(16-o|0)&65535;b[v>>1]=j;o=l+-16+o|0;c[u>>2]=o;break}else{o=o+l|0;c[u>>2]=o;break}}}while(0)}while(y>>>0<(c[r>>2]|0)>>>0)}m=e[g+1026>>1]|0;n=f+5820|0;k=e[g+1024>>1]|0;l=f+5816|0;j=j&65535|k<>1]=j;if((o|0)>(16-m|0)){h=f+20|0;y=c[h>>2]|0;c[h>>2]=y+1;g=f+8|0;a[(c[g>>2]|0)+y>>0]=j;y=(e[l>>1]|0)>>>8&255;f=c[h>>2]|0;c[h>>2]=f+1;a[(c[g>>2]|0)+f>>0]=y;f=c[n>>2]|0;b[l>>1]=k>>>(16-f|0);f=m+-16+f|0;c[n>>2]=f;i=z;return}else{f=o+m|0;c[n>>2]=f;i=z;return}}function sT(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;E=b[f+2>>1]|0;j=E<<16>>16==0;y=d+2754|0;z=d+5820|0;A=d+2752|0;B=d+5816|0;C=d+20|0;D=d+8|0;t=d+2758|0;u=d+2756|0;v=d+2750|0;w=d+2748|0;l=j?138:7;j=j?3:4;h=0;E=E&65535;k=-1;a:while(1){o=0;while(1){if((h|0)>(g|0))break a;h=h+1|0;r=b[f+(h<<2)+2>>1]|0;x=r&65535;m=o+1|0;s=(E|0)==(x|0);if(!((m|0)<(l|0)&s))break;else o=m}do if((m|0)>=(j|0)){if(E){if((E|0)==(k|0)){l=b[B>>1]|0;n=c[z>>2]|0;o=m}else{m=e[d+(E<<2)+2686>>1]|0;n=c[z>>2]|0;j=e[d+(E<<2)+2684>>1]|0;k=e[B>>1]|0|j<>1]=l;if((n|0)>(16-m|0)){l=c[C>>2]|0;c[C>>2]=l+1;a[(c[D>>2]|0)+l>>0]=k;l=(e[B>>1]|0)>>>8&255;n=c[C>>2]|0;c[C>>2]=n+1;a[(c[D>>2]|0)+n>>0]=l;n=c[z>>2]|0;l=j>>>(16-n|0)&65535;b[B>>1]=l;j=m+-16+n|0}else j=n+m|0;c[z>>2]=j;n=j}k=e[v>>1]|0;m=e[w>>1]|0;j=l&65535|m<>1]=j;if((n|0)>(16-k|0)){l=c[C>>2]|0;c[C>>2]=l+1;a[(c[D>>2]|0)+l>>0]=j;j=(e[B>>1]|0)>>>8&255;l=c[C>>2]|0;c[C>>2]=l+1;a[(c[D>>2]|0)+l>>0]=j;l=c[z>>2]|0;j=m>>>(16-l|0);b[B>>1]=j;l=k+-16+l|0}else l=n+k|0;c[z>>2]=l;k=o+65533&65535;j=j&65535|k<>1]=j;if((l|0)>14){m=c[C>>2]|0;c[C>>2]=m+1;a[(c[D>>2]|0)+m>>0]=j;m=(e[B>>1]|0)>>>8&255;o=c[C>>2]|0;c[C>>2]=o+1;a[(c[D>>2]|0)+o>>0]=m;o=c[z>>2]|0;b[B>>1]=k>>>(16-o|0);c[z>>2]=o+-14;break}else{c[z>>2]=l+2;break}}if((m|0)<11){k=e[y>>1]|0;l=c[z>>2]|0;m=e[A>>1]|0;j=e[B>>1]|0|m<>1]=j;if((l|0)>(16-k|0)){l=c[C>>2]|0;c[C>>2]=l+1;a[(c[D>>2]|0)+l>>0]=j;j=(e[B>>1]|0)>>>8&255;l=c[C>>2]|0;c[C>>2]=l+1;a[(c[D>>2]|0)+l>>0]=j;l=c[z>>2]|0;j=m>>>(16-l|0);b[B>>1]=j;l=k+-16+l|0}else l=l+k|0;c[z>>2]=l;k=o+65534&65535;j=j&65535|k<>1]=j;if((l|0)>13){m=c[C>>2]|0;c[C>>2]=m+1;a[(c[D>>2]|0)+m>>0]=j;m=(e[B>>1]|0)>>>8&255;o=c[C>>2]|0;c[C>>2]=o+1;a[(c[D>>2]|0)+o>>0]=m;o=c[z>>2]|0;b[B>>1]=k>>>(16-o|0);c[z>>2]=o+-13;break}else{c[z>>2]=l+3;break}}else{l=e[t>>1]|0;k=c[z>>2]|0;m=e[u>>1]|0;j=e[B>>1]|0|m<>1]=j;if((k|0)>(16-l|0)){n=c[C>>2]|0;c[C>>2]=n+1;a[(c[D>>2]|0)+n>>0]=j;j=(e[B>>1]|0)>>>8&255;n=c[C>>2]|0;c[C>>2]=n+1;a[(c[D>>2]|0)+n>>0]=j;n=c[z>>2]|0;j=m>>>(16-n|0);b[B>>1]=j;l=l+-16+n|0}else l=k+l|0;c[z>>2]=l;k=o+65526&65535;j=j&65535|k<>1]=j;if((l|0)>9){m=c[C>>2]|0;c[C>>2]=m+1;a[(c[D>>2]|0)+m>>0]=j;m=(e[B>>1]|0)>>>8&255;o=c[C>>2]|0;c[C>>2]=o+1;a[(c[D>>2]|0)+o>>0]=m;o=c[z>>2]|0;b[B>>1]=k>>>(16-o|0);c[z>>2]=o+-9;break}else{c[z>>2]=l+7;break}}}else{p=d+(E<<2)+2686|0;q=d+(E<<2)+2684|0;l=c[z>>2]|0;j=b[B>>1]|0;o=m;do{m=e[p>>1]|0;n=e[q>>1]|0;k=j&65535|n<>1]=j;if((l|0)>(16-m|0)){j=c[C>>2]|0;c[C>>2]=j+1;a[(c[D>>2]|0)+j>>0]=k;j=(e[B>>1]|0)>>>8&255;l=c[C>>2]|0;c[C>>2]=l+1;a[(c[D>>2]|0)+l>>0]=j;l=c[z>>2]|0;j=n>>>(16-l|0)&65535;b[B>>1]=j;l=m+-16+l|0}else l=l+m|0;c[z>>2]=l;o=o+-1|0}while((o|0)!=0)}while(0);if(!(r<<16>>16)){k=E;l=138;j=3;E=x;continue}k=E;l=s?6:7;j=s?3:4;E=x}i=F;return}function tT(d,f,g,h,j,k,l,m,n,o){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=i;x=(j|0)>-1?j:0-j|0;v=(k|0)>-1?k:0-k|0;if(!((x|0)>0&(v|0)>0)){m=0;i=z;return m|0}p=(f|0)!=0;if(p&(g|0)==0){m=0;i=z;return m|0}a:do switch(h|0){case 10:{l=64;j=0;break}case 1:switch(l|0){case 32:case 24:case 8:case 4:case 1:{j=0;break a}case 16:{l=16;j=1;break a}default:{l=8;j=0;break a}}case 9:{l=48;j=0;break}case 7:{l=64;j=0;break}case 6:{l=32;j=0;break}case 3:case 2:{l=16;j=0;break}case 11:{l=96;j=0;break}case 4:{l=32;j=0;break}case 8:{l=128;j=0;break}case 12:{l=128;j=0;break}case 5:{l=32;j=0;break}default:{m=0;i=z;return m|0}}while(0);y=Afa(4)|0;if(!y){m=0;i=z;return m|0}q=(d|0)!=0;r=(l|0)!=0&l>>>0<9;w=(j|0)!=0;k=(r?(4<>>0)+ +(v>>>0)*(+S(+((+(x>>>0)*+(l>>>0)+31.0)*.03125))*4.0);if(!(A!=+(j>>>0)|A>4294967167.0)){u=j;s=19}}else{u=k;s=19}if((s|0)==19?(u|0)!=0:0){j=Afa(u+32|0)|0;if((j|0)!=0?(k=j,p=32-(k&15)+k|0,t=p,c[p+-4>>2]=k,c[y>>2]=t,(p|0)!=0):0){Cga(t|0,0,u|0)|0;d=c[y>>2]|0;c[d>>2]=h;j=d+4|0;a[j>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;a[j+3>>0]=0;c[d+268>>2]=0;c[d+264>>2]=0;Cga(d+8|0,-1,256)|0;c[d+288>>2]=q&1^1;c[d+276>>2]=0;c[d+280>>2]=0;b[d+272>>1]=0;j=uea(12,378904)|0;if(!j)j=0;else{h=j+4|0;c[h>>2]=0;c[j+8>>2]=0;c[j>>2]=h}c[d+284>>2]=j;c[d+292>>2]=0;c[d+296>>2]=f;c[d+300>>2]=g;f=d;g=f&15;g=f+312+((g|0)==0?0:16-g|0)|0;c[g>>2]=40;c[g+4>>2]=x;c[g+8>>2]=v;b[g+12>>1]=1;c[g+16>>2]=w?3:0;b[g+14>>1]=l;f=r?1<>2]=f;c[g+36>>2]=f;c[g+24>>2]=2835;c[g+28>>2]=2835;if((l|0)==8){g=d;j=g&15;j=g+312+((j|0)==0?0:16-j|0)|0;if((e[j+14>>1]|0)<16)j=j+40|0;else j=0;k=0;do{g=k&255;a[j+(k<<2)+2>>0]=g;a[j+(k<<2)+1>>0]=g;a[j+(k<<2)>>0]=g;k=k+1|0}while((k|0)!=256)}if(!w){m=y;i=z;return m|0}g=d;j=g&15;j=g+312+((j|0)==0?0:16-j|0)|0;if((c[j+16>>2]|0)==3)j=j+40|0;else j=0;c[j>>2]=m;c[j+4>>2]=n;c[j+8>>2]=o;m=y;i=z;return m|0}Bfa(y);m=0;i=z;return m|0}Bfa(y);m=0;i=z;return m|0}function uT(a,b){a=a|0;b=b|0;var d=0;d=i;if(!b){i=d;return}uT(a,c[b>>2]|0);uT(a,c[b+4>>2]|0);v3(b+16|0);xea(b);i=d;return}function vT(a,b){a=a|0;b=b|0;var d=0;d=i;if(!b){i=d;return}else{vT(a,c[b>>2]|0);vT(a,c[b+4>>2]|0);xea(b);i=d;return}}function wT(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h;f=b1(a,e,b)|0;d=c[f>>2]|0;if(d){a=d;a=a+28|0;i=h;return a|0}g=tea(32)|0;p3(g+16|0,b);c[g+28>>2]=0;d=c[e>>2]|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=d;c[f>>2]=g;d=c[c[a>>2]>>2]|0;if(!d)d=g;else{c[a>>2]=d;d=c[f>>2]|0}c1(c[a+4>>2]|0,d);a=a+8|0;c[a>>2]=(c[a>>2]|0)+1;a=g;a=a+28|0;i=h;return a|0}function xT(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;h=k;j=a+4|0;d=c[j>>2]|0;do if(d){g=c[b>>2]|0;while(1){e=c[d+16>>2]|0;if((g|0)<(e|0)){e=c[d>>2]|0;if(!e){e=5;break}else{d=e;continue}}if((e|0)>=(g|0)){e=9;break}f=d+4|0;e=c[f>>2]|0;if(!e){e=8;break}else d=e}if((e|0)==5){c[h>>2]=d;f=d;break}else if((e|0)==8){c[h>>2]=d;break}else if((e|0)==9){c[h>>2]=d;f=h;break}}else{d=a+4|0;c[h>>2]=d;f=d}while(0);e=c[f>>2]|0;if(e){j=e;j=j+20|0;i=k;return j|0}e=tea(24)|0;c[e+16>>2]=c[b>>2];c[e+20>>2]=0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=d;c[f>>2]=e;d=c[c[a>>2]>>2]|0;if(!d)d=e;else{c[a>>2]=d;d=c[f>>2]|0}c1(c[j>>2]|0,d);j=a+8|0;c[j>>2]=(c[j>>2]|0)+1;j=e;j=j+20|0;i=k;return j|0}function yT(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;g=c[d+4>>2]|0;q=d+4|0;do if(g){j=a[e>>0]|0;p=(j&1)==0;j=(j&255)>>>1;f=e+1|0;o=e+8|0;n=e+4|0;k=q;e=g;a:while(1){d=e;while(1){e=d+16|0;g=a[e>>0]|0;h=(g&1)==0;if(h)m=(g&255)>>>1;else m=c[d+20>>2]|0;if(p)l=j;else l=c[n>>2]|0;if(h)g=e+1|0;else g=c[d+24>>2]|0;if(p)e=f;else e=c[o>>2]|0;g=pga(g,e,l>>>0>>0?l:m)|0;if(!g){if(m>>>0>=l>>>0)break}else if((g|0)>=0)break;d=c[d+4>>2]|0;if(!d)break a}e=c[d>>2]|0;if(!e){k=d;break}else k=d}if((k|0)!=(q|0)){h=k+16|0;if(!p)j=c[n>>2]|0;d=a[h>>0]|0;g=(d&1)==0;if(g)e=(d&255)>>>1;else e=c[k+20>>2]|0;if(!p)f=c[o>>2]|0;if(g)d=h+1|0;else d=c[k+24>>2]|0;d=pga(f,d,e>>>0>>0?e:j)|0;if(!d){if(j>>>0>>0)break}else if((d|0)<0)break;c[b>>2]=k;i=r;return}}while(0);c[b>>2]=q;i=r;return}function zT(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;f=c[d>>2]|0;if(f){e=c[d+4>>2]|0;if(!e)e=d;else while(1){f=c[e>>2]|0;if(!f){f=0;break}else e=f}}else{e=d;f=0}n=e+4|0;l=c[((f|0)==0?n:e)>>2]|0;m=(l|0)==0;k=e+8|0;if(!m)c[l+8>>2]=c[k>>2];g=c[k>>2]|0;f=c[g>>2]|0;if((f|0)==(e|0)){c[g>>2]=l;if((e|0)==(b|0)){b=l;f=0}else f=c[g+4>>2]|0}else c[g+4>>2]=l;h=e+12|0;j=(a[h>>0]|0)==0;if((e|0)!=(d|0)){p=d+8|0;g=c[p>>2]|0;c[k>>2]=g;if((c[c[p>>2]>>2]|0)==(d|0))c[g>>2]=e;else c[g+4>>2]=e;g=c[d>>2]|0;c[e>>2]=g;c[g+8>>2]=e;g=c[d+4>>2]|0;c[n>>2]=g;if(g)c[g+8>>2]=e;a[h>>0]=a[d+12>>0]|0;b=(b|0)==(d|0)?e:b}if(j|(b|0)==0){i=o;return}if(m)l=f;else{a[l+12>>0]=1;i=o;return}while(1){h=l+8|0;j=c[h>>2]|0;e=l+12|0;g=(a[e>>0]|0)!=0;if((c[j>>2]|0)==(l|0)){if(g)g=l;else{a[e>>0]=1;a[j+12>>0]=0;f=l+4|0;e=c[f>>2]|0;c[j>>2]=e;if(e)c[e+8>>2]=j;g=j+8|0;c[h>>2]=c[g>>2];e=c[g>>2]|0;if((c[e>>2]|0)==(j|0))c[e>>2]=l;else c[e+4>>2]=l;c[f>>2]=j;c[g>>2]=l;b=(b|0)==(j|0)?l:b;g=c[j>>2]|0}e=c[g>>2]|0;f=(e|0)==0;if(!f?(a[e+12>>0]|0)==0:0){j=66;break}p=c[g+4>>2]|0;if((p|0)!=0?(a[p+12>>0]|0)==0:0){j=65;break}a[g+12>>0]=0;e=c[g+8>>2]|0;f=e+12|0;if((a[f>>0]|0)==0|(e|0)==(b|0)){j=62;break}p=c[e+8>>2]|0;e=(c[p>>2]|0)==(e|0)?p+4|0:p}else{if(g)h=l;else{a[e>>0]=1;a[j+12>>0]=0;p=j+4|0;f=c[p>>2]|0;e=c[f>>2]|0;c[p>>2]=e;if(e)c[e+8>>2]=j;e=j+8|0;c[f+8>>2]=c[e>>2];g=c[e>>2]|0;if((c[g>>2]|0)==(j|0))c[g>>2]=f;else c[g+4>>2]=f;c[f>>2]=j;c[e>>2]=f;h=c[l>>2]|0;b=(b|0)==(h|0)?l:b;h=c[h+4>>2]|0}f=c[h>>2]|0;if((f|0)!=0?(a[f+12>>0]|0)==0:0){j=36;break}e=c[h+4>>2]|0;if((e|0)!=0?(a[e+12>>0]|0)==0:0){j=37;break}a[h+12>>0]=0;e=c[h+8>>2]|0;if((e|0)==(b|0)){e=b;j=34;break}if(!(a[e+12>>0]|0)){j=34;break}p=c[e+8>>2]|0;e=(c[p>>2]|0)==(e|0)?p+4|0:p}l=c[e>>2]|0}if((j|0)==34){a[e+12>>0]=1;i=o;return}else if((j|0)==36){e=c[h+4>>2]|0;if(!e)j=38;else j=37}else if((j|0)==62){a[f>>0]=1;i=o;return}else if((j|0)==65)if(f)j=67;else j=66;if((j|0)==37)if(!(a[e+12>>0]|0)){b=h;j=44}else j=38;else if((j|0)==66)if(!(a[e+12>>0]|0)){b=e;e=g;j=73}else j=67;if((j|0)==38){a[f+12>>0]=1;a[h+12>>0]=0;g=f+4|0;e=c[g>>2]|0;c[h>>2]=e;if(e)c[e+8>>2]=h;e=h+8|0;c[f+8>>2]=c[e>>2];b=c[e>>2]|0;if((c[b>>2]|0)==(h|0))c[b>>2]=f;else c[b+4>>2]=f;c[g>>2]=h;c[e>>2]=f;e=h;b=f;j=44}else if((j|0)==67){p=g+4|0;f=c[p>>2]|0;a[f+12>>0]=1;a[g+12>>0]=0;e=c[f>>2]|0;c[p>>2]=e;if(e)c[e+8>>2]=g;e=g+8|0;c[f+8>>2]=c[e>>2];b=c[e>>2]|0;if((c[b>>2]|0)==(g|0))c[b>>2]=f;else c[b+4>>2]=f;c[f>>2]=g;c[e>>2]=f;b=g;e=f;j=73}if((j|0)==44){g=c[b+8>>2]|0;p=g+12|0;a[b+12>>0]=a[p>>0]|0;a[p>>0]=1;a[e+12>>0]=1;p=g+4|0;f=c[p>>2]|0;e=c[f>>2]|0;c[p>>2]=e;if(e)c[e+8>>2]=g;e=g+8|0;c[f+8>>2]=c[e>>2];b=c[e>>2]|0;if((c[b>>2]|0)==(g|0))c[b>>2]=f;else c[b+4>>2]=f;c[f>>2]=g;c[e>>2]=f;i=o;return}else if((j|0)==73){h=c[e+8>>2]|0;f=h+12|0;a[e+12>>0]=a[f>>0]|0;a[f>>0]=1;a[b+12>>0]=1;f=c[h>>2]|0;g=f+4|0;e=c[g>>2]|0;c[h>>2]=e;if(e)c[e+8>>2]=h;e=h+8|0;c[f+8>>2]=c[e>>2];b=c[e>>2]|0;if((c[b>>2]|0)==(h|0))c[b>>2]=f;else c[b+4>>2]=f;c[g>>2]=h;c[e>>2]=f;i=o;return}}function AT(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+64|0;j=k;f=a[b>>0]|0;if(!(f<<24>>24))f=0;else{h=f;g=b;f=0;do{do if(!(Gfa(h<<24>>24)|0)){h=(Hfa(a[g>>0]|0)|0)==0;g=a[g>>0]|0;if(h){a[j+f>>0]=g;break}else{a[j+f>>0]=Jfa(g<<24>>24)|0;break}}while(0);f=f+1|0;g=b+f|0;h=a[g>>0]|0}while(h<<24>>24!=0&f>>>0<63)}a[j+f>>0]=0;if((e|0)<1){d=-1;i=k;return d|0}g=e+-1|0;e=0;a:while(1){while(1){f=(g+e|0)/2|0;h=qga(j,c[d+(f<<3)>>2]|0)|0;b=f+-1|0;if((h|0)>=0)break;if((e|0)>(b|0)){f=-1;g=14;break a}else g=b}if((h|0)<=0){g=14;break}if((f|0)<(g|0))e=f+1|0;else{f=-1;g=14;break}}if((g|0)==14){i=k;return f|0}return 0}function BT(b,c,e,f,g,h){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;o=i;if((e|0)<=0){i=o;return}if((h|0)>0){n=0;j=0;k=0;while(1){m=(j|0)!=0;j=c+k|0;l=d[j>>0]|0;if(m){a[b>>0]=a[f+((l&15)<<2)>>0]|0;a[b+1>>0]=a[f+(((d[j>>0]|0)&15)<<2)+1>>0]|0;a[b+2>>0]=a[f+(((d[j>>0]|0)&15)<<2)+2>>0]|0;j=(d[j>>0]|0)&15;if((j|0)<(h|0))j=a[g+j>>0]|0;else j=-1;a[b+3>>0]=j;k=k+1|0}else{a[b>>0]=a[f+(l>>>4<<2)>>0]|0;a[b+1>>0]=a[f+((d[j>>0]|0)>>>4<<2)+1>>0]|0;a[b+2>>0]=a[f+((d[j>>0]|0)>>>4<<2)+2>>0]|0;a[b+3>>0]=a[g+((d[j>>0]|0)>>>4)>>0]|0}n=n+1|0;if((n|0)==(e|0))break;else{b=b+4|0;j=m&1^1}}i=o;return}else{n=0;j=0;k=0;while(1){m=(j|0)!=0;l=c+k|0;j=d[l>>0]|0;if(m){a[b>>0]=a[f+((j&15)<<2)>>0]|0;a[b+1>>0]=a[f+(((d[l>>0]|0)&15)<<2)+1>>0]|0;a[b+2>>0]=a[f+(((d[l>>0]|0)&15)<<2)+2>>0]|0;j=(d[l>>0]|0)&15;if((j|0)<(h|0))j=a[g+j>>0]|0;else j=-1;a[b+3>>0]=j;k=k+1|0}else{a[b>>0]=a[f+(j>>>4<<2)>>0]|0;a[b+1>>0]=a[f+((d[l>>0]|0)>>>4<<2)+1>>0]|0;a[b+2>>0]=a[f+((d[l>>0]|0)>>>4<<2)+2>>0]|0;a[b+3>>0]=-1}n=n+1|0;if((n|0)==(e|0))break;else{b=b+4|0;j=m&1^1}}i=o;return}}function CT(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;f=i;e=(b>>>0)/(d>>>0)|0;if(e)c=CT(e,c,d)|0;a[c>>0]=a[310824+((b>>>0)%(d>>>0)|0)>>0]|0;i=f;return c+1|0}function DT(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;f=i;g=c[e>>2]|0;e=ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](a,1,b,c[e+4>>2]|0)|0;i=f;return ((e|0)!=0?e:-1)|0}function ET(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;f=i;g=(c[e>>2]|0)+4|0;e=ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](a,1,b,c[e+4>>2]|0)|0;i=f;return e|0}function FT(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;f=i;g=(c[e>>2]|0)+8|0;e=(Od[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](c[e+4>>2]|0,a,1)|0)==0;I=e?b:-1;i=f;return (e?a:-1)|0}function GT(a,b,e){a=a|0;b=b|0;e=e|0;var f=0;b=i;f=(c[e>>2]|0)+8|0;e=(Od[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](c[e+4>>2]|0,a,0)|0)==0&1;i=b;return e|0}function HT(a){a=a|0;var b=0;b=i;if(pga(a,311504,4)|0)if(pga(a,311512,4)|0)if(pga(a,311520,4)|0)if(pga(a,311376,4)|0)if(pga(a,311384,4)|0)if(pga(a,311496,4)|0)if(pga(a,311472,4)|0)if(pga(a,311528,4)|0)if(pga(a,311488,4)|0)if(pga(a,311480,4)|0)if(pga(a,311400,4)|0)if(pga(a,311536,4)|0)if(pga(a,311544,4)|0)if(pga(a,311552,4)|0)if(!(pga(a,311392,4)|0))a=24;else{a=(pga(a,311560,4)|0)==0;a=a?45:0}else a=31;else a=26;else a=37;else a=35;else a=36;else a=11;else a=16;else a=13;else a=12;else a=34;else a=19;else a=6;else a=14;else a=1;i=b;return a|0}function IT(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;e=m+12|0;f=m;h=m+4|0;j=m+8|0;c[e>>2]=0;c[f>>2]=0;TJ(a,e,f)|0;e=c[e>>2]|0;f=c[f>>2]|0;if((f|0)==0|(e|0)==0|f>>>0<20|(f+-8|0)>>>0<20){i=m;return}else l=8;while(1){g=l+4|0;if(g>>>0>f>>>0){e=9;break}k=e+l|0;k=l+12+(Nga(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24|0)|0)|0;if(k>>>0>f>>>0){e=9;break}if(!(pga(e+g|0,b,4)|0)){e=5;break}else l=k}if((e|0)==5){c[h>>2]=0;c[j>>2]=0;e=k-l|0;if((k|0)==(l|0)){i=m;return}TJ(a,h,j)|0;g=c[h>>2]|0;b=c[j>>2]|0;if(!(e>>>0>>0&(((b|0)==0|(g|0)==0|b>>>0<20)^1))){i=m;return}e=b+e|0;f=Afa(e)|0;if(!f){i=m;return}Aga(f|0,g|0,l|0)|0;Aga(f+l|0,g+k|0,b-k|0)|0;VJ(a,0,0)|0;YJ(f,1,e,a)|0;Bfa(f);i=m;return}else if((e|0)==9){i=m;return}}function JT(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[g>>2]=0;c[f>>2]=Nga(d|0)|0;YJ(f,1,4,e)|0;c[f>>2]=Nga(c[f>>2]|0)|0;YJ(a,1,4,e)|0;d=c[f>>2]|0;if((b|0)!=0&(d|0)!=0){YJ(b,1,d,e)|0;a=cL(0,a,4)|0;c[g>>2]=a;c[g>>2]=Nga(cL(a,b,c[f>>2]|0)|0)|0;YJ(g,1,4,e)|0;i=h;return}else{c[g>>2]=Nga(cL(0,a,4)|0)|0;YJ(g,1,4,e)|0;i=h;return}}function KT(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h;f=d1(a,e,b)|0;d=c[f>>2]|0;if(d){a=d;a=a+28|0;i=h;return a|0}g=tea(40)|0;p3(g+16|0,b);d=g+28|0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;d=c[e>>2]|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=d;c[f>>2]=g;d=c[c[a>>2]>>2]|0;if(!d)d=g;else{c[a>>2]=d;d=c[f>>2]|0}c1(c[a+4>>2]|0,d);a=a+8|0;c[a>>2]=(c[a>>2]|0)+1;a=g;a=a+28|0;i=h;return a|0}function LT(a,b){a=a|0;b=b|0;var d=0;d=i;if(!b){i=d;return}LT(a,c[b>>2]|0);LT(a,c[b+4>>2]|0);v3(b+28|0);v3(b+16|0);xea(b);i=d;return}function MT(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;h=k;j=a+4|0;d=c[j>>2]|0;do if(d){g=c[b>>2]|0;while(1){e=c[d+16>>2]|0;if((g|0)<(e|0)){e=c[d>>2]|0;if(!e){e=5;break}else{d=e;continue}}if((e|0)>=(g|0)){e=9;break}f=d+4|0;e=c[f>>2]|0;if(!e){e=8;break}else d=e}if((e|0)==5){c[h>>2]=d;f=d;break}else if((e|0)==8){c[h>>2]=d;break}else if((e|0)==9){c[h>>2]=d;f=h;break}}else{d=a+4|0;c[h>>2]=d;f=d}while(0);e=c[f>>2]|0;if(e){j=e;j=j+20|0;i=k;return j|0}e=tea(24)|0;c[e+16>>2]=c[b>>2];c[e+20>>2]=0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=d;c[f>>2]=e;d=c[c[a>>2]>>2]|0;if(!d)d=e;else{c[a>>2]=d;d=c[f>>2]|0}c1(c[j>>2]|0,d);j=a+8|0;c[j>>2]=(c[j>>2]|0)+1;j=e;j=j+20|0;i=k;return j|0}function NT(){return 312400}function OT(){return 312376}function PT(){return 312368}function QT(){return 312360}function RT(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+176|0;x=C;t=C+120|0;u=C+104|0;v=C+48|0;z=C+172|0;y=C+168|0;q=C+88|0;l=C+156|0;w=C+150|0;h=C+136|0;k=C+40|0;if(!g){f=0;i=C;return f|0}c[k>>2]=0;m=f+12|0;m=Ld[(d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24)&511](g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](h,14,1,g)|0;B=b[h>>1]|0;if(!(B<<16>>16==16706|B<<16>>16==19778)){yJ(c[78004]|0,312336,x);f=0;i=C;return f|0}ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](k,4,1,g)|0;B=f+8|0;Od[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,-4,1)|0;s=c[k>>2]|0;switch(s|0){case 64:{s=h+10|0;s=(e[s>>1]|e[s+2>>1]<<16)+m|0;k=j&32768;p=(k|0)!=0;k=k>>>15;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](v,40,1,g)|0;h=c[v+32>>2]|0;o=c[v+4>>2]|0;r=c[v+8>>2]|0;t=b[v+14>>1]|0;m=t&65535;n=c[v+16>>2]|0;t=(Lga(Iga(Tga(t&65535|0,0,o|0,0)|0,I|0,7,0)|0,I|0,3)|0)+3&-4;switch(m|0){case 8:case 4:case 1:{q=1<>>0>=q>>>0?q:h;k=xI(k,o,r,m,0,0,0)|0;if(!k){f=kc(4)|0;c[f>>2]=312248;xd(f|0,378680,0)}eJ(k,c[v+24>>2]|0);fJ(k,c[v+28>>2]|0);j=c[v>>2]|0;m=((s+-14-j|0)>>>0)/(q>>>0)|0;Od[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,j+14|0,0)|0;j=VI(k)|0;if((m|0)==3){if(q){m=y+2|0;h=y+1|0;l=0;do{ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](y,3,1,g)|0;a[j+(l<<2)+2>>0]=a[m>>0]|0;a[j+(l<<2)+1>>0]=a[h>>0]|0;a[j+(l<<2)>>0]=a[y>>0]|0;l=l+1|0}while(l>>>0>>0)}}else if((m|0)==4?(q|0)!=0:0){m=z+2|0;h=z+1|0;l=0;do{ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](z,4,1,g)|0;a[j+(l<<2)+2>>0]=a[m>>0]|0;a[j+(l<<2)+1>>0]=a[h>>0]|0;a[j+(l<<2)>>0]=a[z>>0]|0;l=l+1|0}while(l>>>0>>0)}if(p){f=k;i=C;return f|0}if(((q*3|0)+54|0)>>>0>>0)Od[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,s,0)|0;if((n|0)==2)if(!(e1(f,g,o,r,k)|0)){f=kc(4)|0;c[f>>2]=312120;xd(f|0,378680,0)}else{f=k;i=C;return f|0}else if((n|0)==1)if(!(f1(f,g,o,r,k)|0)){f=kc(4)|0;c[f>>2]=312168;xd(f|0,378680,0)}else{f=k;i=C;return f|0}else if(!n){if((r|0)>0){A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=QI(k)|0;f=ea(t,r)|0;ce[A&255](B,f,1,g)|0;f=k;i=C;return f|0}h=(r|0)>-1?r:0-r|0;if((h|0)<=0){f=k;i=C;return f|0}l=h+-1|0;m=0;do{A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=$J(k,l-m|0)|0;m=m+1|0}while((ce[A&255](B,t,1,g)|0)==1&(h|0)>(m|0));i=C;return k|0}else{f=kc(4)|0;c[f>>2]=312216;xd(f|0,378680,0)}}case 16:{if((n|0)==3){ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](q,12,1,g)|0;k=xI(k,o,r,16,c[q>>2]|0,c[q+4>>2]|0,c[q+8>>2]|0)|0}else k=xI(k,o,r,16,31744,992,31)|0;if(!k){f=kc(4)|0;c[f>>2]=312248;xd(f|0,378680,0)}eJ(k,c[v+24>>2]|0);fJ(k,c[v+28>>2]|0);if(p){f=k;i=C;return f|0}if(((h*3|0)+54|0)>>>0>>0)Od[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,s,0)|0;if((r|0)>0){A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=QI(k)|0;f=ea(t,r)|0;ce[A&255](B,f,1,g)|0;f=k;i=C;return f|0}h=(r|0)>-1?r:0-r|0;if((h|0)<=0){f=k;i=C;return f|0}l=h+-1|0;m=0;do{A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=$J(k,l-m|0)|0;m=m+1|0}while((ce[A&255](B,t,1,g)|0)==1&(h|0)>(m|0));i=C;return k|0}case 32:case 24:{m=xI(k,o,r,m,16711680,65280,255)|0;if(!m){f=kc(4)|0;c[f>>2]=312248;xd(f|0,378680,0)}eJ(m,c[v+24>>2]|0);fJ(m,c[v+28>>2]|0);if(p){f=m;i=C;return f|0}if(((h*3|0)+54|0)>>>0>>0)Od[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,s,0)|0;if((r|0)<=0){k=(r|0)>-1?r:0-r|0;if((k|0)>0){h=k+-1|0;l=0;do{A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=$J(m,h-l|0)|0;l=l+1|0}while((ce[A&255](B,t,1,g)|0)==1&(k|0)>(l|0))}}else{A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=QI(m)|0;f=ea(t,r)|0;ce[A&255](B,f,1,g)|0}$I(m,(TI(m)|0)==4&1);f=m;i=C;return f|0}default:{f=0;i=C;return f|0}}}case 12:{p=h+10|0;p=(e[p>>1]|e[p+2>>1]<<16)+m|0;m=j&32768;q=(m|0)!=0;m=m>>>15;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](l,12,1,g)|0;j=l+4|0;j=d[j>>0]|d[j+1>>0]<<8;h=j&65535;r=l+6|0;r=d[r>>0]|d[r+1>>0]<<8;s=r&65535;A=l+10|0;A=d[A>>0]|d[A+1>>0]<<8;k=A&65535;j=Tga(A&65535|0,0,j&65535|0,0)|0;j=Iga(j|0,I|0,7,0)|0;j=Lga(j|0,I|0,3)|0;j=j+3&-4;switch(k|0){case 8:case 4:case 1:{o=1<>2]=312248;xd(f|0,378680,0)}eJ(k,2835);fJ(k,2835);m=VI(k)|0;h=w+2|0;l=w+1|0;n=0;do{ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](w,3,1,g)|0;a[m+(n<<2)+2>>0]=a[h>>0]|0;a[m+(n<<2)+1>>0]=a[l>>0]|0;a[m+(n<<2)>>0]=a[w>>0]|0;n=n+1|0}while(n>>>0>>0);if(q){f=k;i=C;return f|0}Od[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,p,0)|0;if(!(r<<16>>16)){f=k;i=C;return f|0}A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=QI(k)|0;f=ea(j,s)|0;ce[A&255](B,f,1,g)|0;f=k;i=C;return f|0}case 32:case 24:{k=xI(m,h,s,k,16711680,65280,255)|0;if(!k){f=kc(4)|0;c[f>>2]=312248;xd(f|0,378680,0)}eJ(k,2835);fJ(k,2835);if(q){f=k;i=C;return f|0}if(r<<16>>16){A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=QI(k)|0;f=ea(j,s)|0;ce[A&255](B,f,1,g)|0}$I(k,(TI(k)|0)==4&1);f=k;i=C;return f|0}case 16:{k=xI(m,h,s,16,31744,992,31)|0;if(!k){f=kc(4)|0;c[f>>2]=312248;xd(f|0,378680,0)}eJ(k,2835);fJ(k,2835);if(!(r<<16>>16!=0&(q^1))){f=k;i=C;return f|0}A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=QI(k)|0;f=ea(j,s)|0;ce[A&255](B,f,1,g)|0;f=k;i=C;return f|0}default:{f=0;i=C;return f|0}}}case 124:case 108:case 56:case 52:case 40:{r=h+10|0;r=(e[r>>1]|e[r+2>>1]<<16)+m|0;n=j&32768;q=(n|0)!=0;n=n>>>15;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](x,40,1,g)|0;h=c[x+32>>2]|0;j=c[x+4>>2]|0;p=c[x+8>>2]|0;v=b[x+14>>1]|0;l=v&65535;o=c[x+16>>2]|0;v=Tga(v&65535|0,0,j|0,0)|0;v=Iga(v|0,I|0,7,0)|0;v=Lga(v|0,I|0,3)|0;v=v+3&-4;switch(l|0){case 32:case 24:{if((o|0)==6){k=16;A=108}else if((o|0)!=3?(s|0)!=52:0)if((s|0)>55){k=16;A=108}else m=xI(n,j,p,l,16711680,65280,255)|0;else{k=12;A=108}if((A|0)==108){ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](u,k,1,g)|0;m=xI(n,j,p,l,c[u>>2]|0,c[u+4>>2]|0,c[u+8>>2]|0)|0}if(!m){f=kc(4)|0;c[f>>2]=312248;xd(f|0,378680,0)}eJ(m,c[x+24>>2]|0);fJ(m,c[x+28>>2]|0);if(q){f=m;i=C;return f|0}Od[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,r,0)|0;if((p|0)<=0){k=(p|0)>-1?p:0-p|0;if((k|0)>0){h=k+-1|0;l=0;do{A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=$J(m,h-l|0)|0;l=l+1|0}while((ce[A&255](B,v,1,g)|0)==1&(k|0)>(l|0))}}else{A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=QI(m)|0;f=ea(v,p)|0;ce[A&255](B,f,1,g)|0}$I(m,(TI(m)|0)==4&1);f=m;i=C;return f|0}case 16:{if((o|0)==6){k=16;A=94}else if((o|0)!=3?(s|0)!=52:0)if((s|0)>55){k=16;A=94}else k=xI(n,j,p,16,31744,992,31)|0;else{k=12;A=94}if((A|0)==94){ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](t,k,1,g)|0;k=xI(n,j,p,16,c[t>>2]|0,c[t+4>>2]|0,c[t+8>>2]|0)|0}if(!k){f=kc(4)|0;c[f>>2]=312248;xd(f|0,378680,0)}eJ(k,c[x+24>>2]|0);fJ(k,c[x+28>>2]|0);if(q){f=k;i=C;return f|0}Od[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,r,0)|0;if((p|0)>0){A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=QI(k)|0;f=ea(v,p)|0;ce[A&255](B,f,1,g)|0;f=k;i=C;return f|0}h=(p|0)>-1?p:0-p|0;if((h|0)<=0){f=k;i=C;return f|0}l=h+-1|0;m=0;do{A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=$J(k,l-m|0)|0;m=m+1|0}while((ce[A&255](B,v,1,g)|0)==1&(h|0)>(m|0));i=C;return k|0}case 8:case 4:case 1:{m=1<>2]=312248;xd(f|0,378680,0)}eJ(k,c[x+24>>2]|0);fJ(k,c[x+28>>2]|0);if((s|0)==108|(s|0)==56|(s|0)==52|(s|0)==124)Od[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,s+-40|0,1)|0;z=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;A=VI(k)|0;ce[z&255](A,((h+-1|0)>>>0>=m>>>0?m:h)<<2,1,g)|0;if(q){f=k;i=C;return f|0}Od[(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24)&255](g,r,0)|0;if(!o){if((p|0)>0){A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=QI(k)|0;f=ea(v,p)|0;if((ce[A&255](B,f,1,g)|0)==1){f=k;i=C;return f|0}else{f=kc(4)|0;c[f>>2]=312072;xd(f|0,378680,0)}}h=(p|0)>-1?p:0-p|0;if((h|0)<=0){f=k;i=C;return f|0}l=h+-1|0;m=0;while(1){A=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;B=$J(k,l-m|0)|0;m=m+1|0;if((ce[A&255](B,v,1,g)|0)!=1){A=84;break}if((h|0)<=(m|0)){A=120;break}}if((A|0)==84){f=kc(4)|0;c[f>>2]=312072;xd(f|0,378680,0)}else if((A|0)==120){i=C;return k|0}}else if((o|0)==2)if(!(e1(f,g,j,p,k)|0)){f=kc(4)|0;c[f>>2]=312120;xd(f|0,378680,0)}else{f=k;i=C;return f|0}else if((o|0)==1)if(!(f1(f,g,j,p,k)|0)){f=kc(4)|0;c[f>>2]=312168;xd(f|0,378680,0)}else{f=k;i=C;return f|0}else{f=kc(4)|0;c[f>>2]=312216;xd(f|0,378680,0)}break}default:{f=0;i=C;return f|0}}break}default:{f=c[78004]|0;c[x>>2]=s;yJ(f,312040,x);f=0;i=C;return f|0}}return 0}function ST(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=i;i=i+320|0;z=A+64|0;j=A+44|0;o=A;p=A+40|0;q=A+60|0;if(!((g|0)!=0&(h|0)!=0)){h=0;i=A;return h|0}b[j>>1]=19778;n=((SI(g)|0)<<2)+54|0;m=j+10|0;b[m>>1]=n;b[m+2>>1]=n>>>16;l=GI(g)|0;n=(ea(OI(g)|0,l)|0)+n|0;l=j+2|0;b[l>>1]=n;b[l+2>>1]=n>>>16;b[j+6>>1]=0;b[j+8>>1]=0;n=(HI(g)|0)==16;if(n){y=(e[l>>1]|e[l+2>>1]<<16)+12|0;b[l>>1]=y;b[l+2>>1]=y>>>16;y=(e[m>>1]|e[m+2>>1]<<16)+12|0;b[m>>1]=y;b[m+2>>1]=y>>>16}y=f+4|0;if((ce[(d[y>>0]|d[y+1>>0]<<8|d[y+2>>0]<<16|d[y+3>>0]<<24)&255](j,14,1,h)|0)!=1){h=0;i=A;return h|0}l=o+0|0;m=(RI(g)|0)+0|0;j=l+40|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(j|0));do if(!n){l=o+16|0;if((k&1|0)==0?1:(b[o+14>>1]|0)!=8){c[l>>2]=0;break}else{c[l>>2]=1;break}}else c[o+16>>2]=3;while(0);if((ce[(d[y>>0]|d[y+1>>0]<<8|d[y+2>>0]<<16|d[y+3>>0]<<24)&255](o,40,1,h)|0)!=1){h=0;i=A;return h|0}if(n){c[p>>2]=JI(g)|0;if((ce[(d[y>>0]|d[y+1>>0]<<8|d[y+2>>0]<<16|d[y+3>>0]<<24)&255](p,4,1,h)|0)!=1){h=0;i=A;return h|0}c[p>>2]=KI(g)|0;if((ce[(d[y>>0]|d[y+1>>0]<<8|d[y+2>>0]<<16|d[y+3>>0]<<24)&255](p,4,1,h)|0)!=1){h=0;i=A;return h|0}c[p>>2]=LI(g)|0;if((ce[(d[y>>0]|d[y+1>>0]<<8|d[y+2>>0]<<16|d[y+3>>0]<<24)&255](p,4,1,h)|0)!=1){h=0;i=A;return h|0}}a:do if((VI(g)|0)!=0?(r=VI(g)|0,(SI(g)|0)!=0):0){l=q+1|0;j=q+2|0;f=q+3|0;m=0;while(1){a[q>>0]=a[r+(m<<2)>>0]|0;a[l>>0]=a[r+(m<<2)+1>>0]|0;a[j>>0]=a[r+(m<<2)+2>>0]|0;a[f>>0]=a[r+(m<<2)+3>>0]|0;m=m+1|0;if((ce[(d[y>>0]|d[y+1>>0]<<8|d[y+2>>0]<<16|d[y+3>>0]<<24)&255](q,4,1,h)|0)!=1){l=0;break}if(m>>>0>=(SI(g)|0)>>>0)break a}i=A;return l|0}while(0);if((HI(g)|0)!=8|(k&1|0)==0){z=d[y>>0]|d[y+1>>0]<<8|d[y+2>>0]<<16|d[y+3>>0]<<24;B=QI(g)|0;y=GI(g)|0;g=ea(OI(g)|0,y)|0;if((ce[z&255](B,g,1,h)|0)!=1){h=0;i=A;return h|0}}else{u=Afa((OI(g)|0)<<1)|0;b:do if(GI(g)|0){v=z+1|0;w=0;while(1){k=$J(g,w)|0;s=PI(g)|0;do if((s|0)>0){t=s+-1|0;j=0;m=0;l=0;do{p=k+m|0;f=a[p>>0]|0;c:do if((m|0)<(t|0)?(B=m+1|0,f<<24>>24==(a[k+B>>0]|0)):0){n=m+254|0;r=B;while(1){if(!((r|0)<(t|0)&(r|0)<(n|0)))break;o=r+1|0;if(f<<24>>24==(a[k+o>>0]|0))r=o;else break}f=r-m|0;q=f+1|0;if((f|0)<=2){if((f|0)>-1){f=j;o=0}else{m=r;x=42;break}while(1){j=f+1|0;a[z+f>>0]=a[k+(o+m)>>0]|0;if((j|0)==254){a[u+l>>0]=0;a[u+(l+1)>>0]=-2;Aga(u+(l+2)|0,z|0,254)|0;j=0;l=l+256|0}o=o+1|0;if((o|0)>=(q|0)){m=r;x=42;break c}else f=j}}if(j)if((j|0)==2){a[u+l>>0]=1;a[u+(l+1)>>0]=a[z>>0]|0;a[u+(l+2)>>0]=1;a[u+(l+3)>>0]=a[v>>0]|0;l=l+4|0}else if((j|0)==1){a[u+l>>0]=1;a[u+(l+1)>>0]=a[z>>0]|0;l=l+2|0}else{a[u+l>>0]=0;n=l+2|0;a[u+(l+1)>>0]=j;Aga(u+n|0,z|0,j|0)|0;l=(j&1)+j+n|0}a[u+l>>0]=q;a[u+(l+1)>>0]=a[p>>0]|0;j=0;m=r;l=l+2|0}else x=41;while(0);if((x|0)==41){a[z+j>>0]=f;j=j+1|0;x=42}if((x|0)==42){x=0;if((j|0)==254){a[u+l>>0]=0;a[u+(l+1)>>0]=-2;Aga(u+(l+2)|0,z|0,254)|0;j=0;l=l+256|0}}m=m+1|0}while((m|0)<(s|0));if((j|0)==1){a[u+l>>0]=1;a[u+(l+1)>>0]=a[z>>0]|0;l=l+2|0;break}else if(!j)break;else if((j|0)==2){a[u+l>>0]=1;a[u+(l+1)>>0]=a[z>>0]|0;a[u+(l+2)>>0]=1;a[u+(l+3)>>0]=a[v>>0]|0;l=l+4|0;break}else{a[u+l>>0]=0;t=l+2|0;a[u+(l+1)>>0]=j;Aga(u+t|0,z|0,j|0)|0;l=t+j+(j&1)|0;break}}else l=0;while(0);a[u+l>>0]=0;a[u+(l+1)>>0]=0;w=w+1|0;if((ce[(d[y>>0]|d[y+1>>0]<<8|d[y+2>>0]<<16|d[y+3>>0]<<24)&255](u,l+2|0,1,h)|0)!=1)break;if(w>>>0>=(GI(g)|0)>>>0)break b}Bfa(u);h=0;i=A;return h|0}while(0);a[u>>0]=0;a[u+1>>0]=1;h=(ce[(d[y>>0]|d[y+1>>0]<<8|d[y+2>>0]<<16|d[y+3>>0]<<24)&255](u,2,1,h)|0)==1;Bfa(u);if(!h){h=0;i=A;return h|0}}h=1;i=A;return h|0}function TT(a,c){a=a|0;c=c|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;h=g+4|0;e=g;f=g+2|0;b[h>>1]=19778;b[e>>1]=16706;b[f>>1]=0;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,2,c)|0;if(!(pga(h,f,2)|0)){h=1;i=g;return h|0}h=(pga(e,f,2)|0)==0&1;i=g;return h|0}function UT(){return 312024}function VT(a){a=a|0;var b=0;b=i;a=a+-1|0;if(a>>>0>=32){a=0;i=b;return a|0}a=-2139062135>>>a&1;i=b;return a|0}function WT(a){a=a|0;return (a|0)==1|0}function XT(){return 1}function YT(){return 312560}function ZT(){return 312544}function _T(){return 312536}function $T(){return 0}function aU(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;r=t;q=t+9|0;s=t+8|0;if(!g){f=0;i=t;return f|0}k=j&32768;m=(k|0)==0;if((ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](r,1,8,g)|0)!=8){t=kc(4)|0;c[t>>2]=312520;xd(t|0,378680,0)}j=b[r>>1]|0;if(!(j<<16>>16)){f=0;i=t;return f|0}l=r+2|0;h=b[l>>1]|0;if(!(h<<16>>16)){f=0;i=t;return f|0}k=xI(k>>>15,j&65535,h&65535,8,0,0,0)|0;if(!k){t=kc(4)|0;c[t>>2]=312432;xd(t|0,378680,0)}h=VI(k)|0;j=0;do{o=j&255;a[h+(j<<2)+2>>0]=o;a[h+(j<<2)+1>>0]=o;a[h+(j<<2)>>0]=o;j=j+1|0}while((j|0)!=256);if(!m){f=k;i=t;return f|0}p=$J(k,(e[l>>1]|0)+-1|0)|0;o=OI(k)|0;n=ea(e[l>>1]|0,e[r>>1]|0)|0;a[q>>0]=0;a[s>>0]=0;o=0-o|0;h=0;a:while(1){if(h>>>0>>0)m=0;else{h=28;break}while(1){if((ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](q,1,1,g)|0)!=1){h=14;break a}l=a[q>>0]|0;j=l&255;if(!(l<<24>>24))break;if(!(j&128)){if((j+m|0)>>>0>(e[r>>1]|0)>>>0){h=26;break a}if((ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](p+m|0,j,1,g)|0)!=1){h=25;break a}}else{a[q>>0]=j&127;if((ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](s,1,1,g)|0)!=1){h=19;break a}j=d[q>>0]|0;if((j+m|0)>>>0>(e[r>>1]|0)>>>0){h=22;break a}Cga(p+m|0,a[s>>0]|0,j|0)|0}l=d[q>>0]|0;h=l+h|0;if(h>>>0>>0)m=l+m|0;else{h=28;break a}}ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](q,1,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](q,1,1,g)|0;p=p+o|0}if((h|0)==14){t=kc(4)|0;c[t>>2]=312520;xd(t|0,378680,0)}else if((h|0)==19){t=kc(4)|0;c[t>>2]=312520;xd(t|0,378680,0)}else if((h|0)==22){t=kc(4)|0;c[t>>2]=312520;xd(t|0,378680,0)}else if((h|0)==25){t=kc(4)|0;c[t>>2]=312520;xd(t|0,378680,0)}else if((h|0)==26){t=kc(4)|0;c[t>>2]=312520;xd(t|0,378680,0)}else if((h|0)==28){i=t;return k|0}return 0}function bU(a,b){a=a|0;b=b|0;return 0}function cU(){return 312416}function dU(a){a=a|0;return 0}function eU(a){a=a|0;return 0}function fU(){return 1}function gU(){return 312608}function hU(){return 312592}function iU(){return 312584}function jU(){return 0}function kU(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function lU(a,b,c){a=a|0;b=b|0;c=c|0;return}function mU(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+128|0;h=o;g=h+0|0;f=g+128|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(f|0));ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](h,1,128,c)|0;n=h+80|0;g=d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24;if(!(g&64)){if(!(g&4)){b=0;i=o;return b|0}g=h+84|0;g=d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24;if((g|0)==827611204){j=h+12|0;l=h+16|0;b=g1(1,d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24,d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24,b,c)|0;i=o;return b|0}else if((g|0)==861165636){j=h+12|0;l=h+16|0;b=g1(3,d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24,d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24,b,c)|0;i=o;return b|0}else if((g|0)==894720068){j=h+12|0;l=h+16|0;b=g1(5,d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24,d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24,b,c)|0;i=o;return b|0}else{b=0;i=o;return b|0}}g=h+16|0;g=(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&-4;k=h+12|0;k=(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24)&-4;l=h+88|0;l=d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24;e=h+92|0;j=h+96|0;m=h+100|0;m=yI(g,k,l,d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24,d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24,d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24)|0;if(!m){b=0;i=o;return b|0}j=Tga(l|0,0,g|0,0)|0;j=Iga(j|0,I|0,7,0)|0;j=Lga(j|0,I|0,3)|0;e=h+8|0;if(!((d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&8))g=j;else{g=h+20|0;g=d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24}g=g-j|0;if((k|0)>0){f=k+-1|0;e=b+8|0;h=0;do{p=$J(m,f-h|0)|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](p,1,j,c)|0;Od[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](c,g,1)|0;h=h+1|0}while((h|0)!=(k|0))}$I(m,(d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24)&1);if(!((l|0)==32?((d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24)&1|0)==0:0)){p=m;i=o;return p|0}p=uJ(m)|0;AI(m);i=o;return p|0}function nU(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;g=i;i=i+128|0;e=g;f=e+0|0;h=f+128|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,1,128,b)|0;if((c[e>>2]|0)!=542327876){h=0;i=g;return h|0}if((c[e+4>>2]|0)!=124){h=0;i=g;return h|0}h=(c[e+76>>2]|0)==32&1;i=g;return h|0}function oU(){return 312568}function pU(a){a=a|0;return 0}function qU(a){a=a|0;return 0}function rU(){return 312864}function sU(){return 312832}function tU(){return 312824}function uU(){return 0}function vU(b,e,f,j,l){b=b|0;e=e|0;f=f|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;l=t;q=t+8|0;g[q>>2]=196.0;if(!e){s=0;i=t;return s|0}r=PJ(0,0)|0;if(!r){t=kc(4)|0;c[t>>2]=312792;xd(t|0,378680,0)}s=bx(312640,312656,0,176,177,140,223,224,178,56)|0;if(!s){t=kc(4)|0;c[t>>2]=312664;xd(t|0,378680,0)}dx(s,0)|0;c[l>>2]=1728;Xv(s,256,l)|0;c[l>>2]=1;Xv(s,277,l)|0;c[l>>2]=1;Xv(s,258,l)|0;c[l>>2]=1;Xv(s,266,l)|0;c[l>>2]=1;Xv(s,284,l)|0;c[l>>2]=0;Xv(s,262,l)|0;h[k>>3]=+g[q>>2];c[l>>2]=c[k>>2];c[l+4>>2]=c[k+4>>2];Xv(s,283,l)|0;c[l>>2]=2;Xv(s,296,l)|0;c[l>>2]=3;Xv(s,259,l)|0;c[l>>2]=0;Xv(s,292,l)|0;c[l>>2]=q;Zv(s,283,l)|0;p=JK(216)|0;n=JK(216)|0;if((p|0)==0|(n|0)==0){t=kc(4)|0;c[t>>2]=312792;xd(t|0,378680,0)}l=b+12|0;m=Ld[(d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24)&511](e)|0;o=b+8|0;Od[(d[o>>0]|d[o+1>>0]<<8|d[o+2>>0]<<16|d[o+3>>0]<<24)&255](e,0,2)|0;l=Ld[(d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24)&511](e)|0;Od[(d[o>>0]|d[o+1>>0]<<8|d[o+2>>0]<<16|d[o+3>>0]<<24)&255](e,m,0)|0;m=s+592|0;c[m>>2]=l;l=JK(l)|0;o=s+588|0;c[o>>2]=l;if(!l){t=kc(4)|0;c[t>>2]=312792;xd(t|0,378680,0)}f=c[m>>2]|0;if((ea(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](l,f,1,e)|0,f)|0)!=(f|0)){t=kc(4)|0;c[t>>2]=312760;xd(t|0,378680,0)}c[s+604>>2]=c[o>>2];f=s+608|0;c[f>>2]=c[m>>2];Ld[c[s+508>>2]&511](s)|0;Wd[c[s+512>>2]&511](s,0)|0;m=s+444|0;c[m>>2]=0;MK(n,0,216);if((c[f>>2]|0)>0){j=s+532|0;l=0;do{if(!(ce[c[j>>2]&255](s,p,216,0)|0))NK(p,n,216);else NK(n,p,216);c[m>>2]=(c[m>>2]|0)+1;YJ(p,216,1,r)|0;l=l+1|0}while((c[f>>2]|0)>0);e=l}else e=0;KK(c[o>>2]|0);c[o>>2]=0;KK(p);KK(n);if((e|0)<1){t=kc(4)|0;c[t>>2]=312696;xd(t|0,378680,0)}m=yI(1728,e,1,0,0,0)|0;l=OI(m)|0;j=VI(m)|0;a[j>>0]=-1;a[j+1>>0]=-1;a[j+2>>0]=-1;a[j+4>>0]=0;a[j+5>>0]=0;a[j+6>>0]=0;eJ(m,8031);fJ(m,~~(+g[q>>2]/.0254+.5)>>>0);VJ(r,0,0)|0;j=$J(m,e+-1|0)|0;if((e|0)>0){f=0-l|0;l=0;while(1){XJ(j,216,1,r)|0;l=l+1|0;if((l|0)>=(e|0))break;else j=j+f|0}}Ev(s);QJ(r);s=m;i=t;return s|0}function wU(){return 312624}function xU(a){a=a|0;return 0}function yU(){return 312896}function zU(){return 313520}function AU(){return 313512}function BU(){return 313504}function CU(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+32|0;h=G+20|0;F=G+19|0;D=G+4|0;B=G+18|0;x=G+12|0;C=G+16|0;y=G+8|0;z=G;E=G+17|0;g=uea(64,378904)|0;if(!g){E=0;i=G;return E|0}A=g+16|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;a[g+12>>0]=0;j=A+0|0;k=j+48|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));c[g>>2]=f;if(!f){E=b+4|0;ce[(d[E>>0]|d[E+1>>0]<<8|d[E+2>>0]<<16|d[E+3>>0]<<24)&255](313472,6,1,e)|0;E=g;i=G;return E|0}if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](h,6,1,e)|0)){G=kc(4)|0;c[G>>2]=313480;xd(G|0,378680,0)}if(((rga(h,312896,3)|0)==0?((a[h+3>>0]|0)+-48<<24>>24&255)<10:0)?((a[h+4>>0]|0)+-48<<24>>24&255)<10:0)h=((a[h+5>>0]|0)+-97<<24>>24&255)<26&1;else h=0;w=b+8|0;Od[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](e,-6,1)|0;if(!h){G=kc(4)|0;c[G>>2]=313480;xd(G|0,378680,0)}Od[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](e,6,1)|0;Od[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](e,4,1)|0;if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](F,1,1,e)|0)){G=kc(4)|0;c[G>>2]=313304;xd(G|0,378680,0)}if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](g+12|0,1,1,e)|0)){G=kc(4)|0;c[G>>2]=313304;xd(G|0,378680,0)}Od[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](e,1,1)|0;k=b+12|0;if((a[F>>0]|0)<0){c[g+4>>2]=Ld[(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24)&511](e)|0;v=2<<(d[F>>0]&7);c[g+8>>2]=v;Od[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](e,v*3|0,1)|0}c[D>>2]=0;a[B>>0]=0;l=g+56|0;m=g+60|0;n=g+52|0;o=g+44|0;p=g+48|0;q=g+40|0;r=g+32|0;s=g+36|0;t=g+28|0;u=g+20|0;v=g+24|0;h=0;a:while(1){if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](B,1,1,e)|0)){h=19;break}j=a[B>>0]|0;do if(j<<24>>24==33){if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](C,1,1,e)|0)){h=37;break a}j=a[C>>0]|0;if(j<<24>>24==-7){h=Ld[(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24)&511](e)|0;c[D>>2]=h;break}else if(j<<24>>24==-2){j=Ld[(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24)&511](e)|0;c[y>>2]=j;f=c[r>>2]|0;if((f|0)==(c[s>>2]|0)){p1(t,y);break}if(f)c[f>>2]=j;c[r>>2]=f+4;break}else if(j<<24>>24==-1){j=Ld[(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24)&511](e)|0;c[z>>2]=j;f=c[u>>2]|0;if((f|0)==(c[v>>2]|0)){p1(A,z);break}if(f)c[f>>2]=j;c[u>>2]=f+4;break}else break}else if(j<<24>>24==44){j=Ld[(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24)&511](e)|0;c[x>>2]=j;f=c[l>>2]|0;if((f|0)==(c[m>>2]|0))p1(n,x);else{if(f)c[f>>2]=j;c[l>>2]=f+4}j=c[o>>2]|0;if((j|0)==(c[p>>2]|0))p1(q,D);else{if(j)c[j>>2]=h;c[o>>2]=j+4}c[D>>2]=0;Od[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](e,8,1)|0;if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](F,1,1,e)|0)){h=32;break a}j=d[F>>0]|0;if(j&128)Od[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](e,(2<<(j&7))*3|0,1)|0;Od[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](e,1,1)|0;h=0}else if(j<<24>>24==59){h=57;break a}else{h=50;break a}while(0);if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](E,1,1,e)|0)){h=52;break}while(1){j=a[E>>0]|0;if(!(j<<24>>24))break;Od[(d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24)&255](e,j&255,1)|0;if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](E,1,1,e)|0)){h=55;break a}}if((a[B>>0]|0)==59){h=57;break}}if((h|0)==19){G=kc(4)|0;c[G>>2]=313344;xd(G|0,378680,0)}else if((h|0)==32){G=kc(4)|0;c[G>>2]=313368;xd(G|0,378680,0)}else if((h|0)==37){G=kc(4)|0;c[G>>2]=313400;xd(G|0,378680,0)}else if((h|0)==50){G=kc(4)|0;c[G>>2]=313424;xd(G|0,378680,0)}else if((h|0)==52){G=kc(4)|0;c[G>>2]=313448;xd(G|0,378680,0)}else if((h|0)==55){G=kc(4)|0;c[G>>2]=313448;xd(G|0,378680,0)}else if((h|0)==57){i=G;return g|0}return 0}function DU(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+16|0;g=h;if(!f){i=h;return}if(!(c[f>>2]|0)){a[g>>0]=59;b=b+4|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](g,1,1,e)|0}o1(f);xea(f);i=h;return}function EU(a,b,d){a=a|0;b=b|0;d=d|0;b=i;if(!d){d=0;i=b;return d|0}d=(c[d+56>>2]|0)-(c[d+52>>2]|0)>>2;i=b;return d|0}function FU(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;$=i;i=i+5728|0;V=$;_=$+308|0;y=$+312|0;z=$+322|0;T=$+320|0;S=$+324|0;Y=$+1627|0;W=$+1626|0;U=$+318|0;x=$+326|0;F=$+328|0;E=$+292|0;G=$+280|0;w=$+268|0;H=$+264|0;J=$+1632|0;M=$+260|0;L=$+316|0;K=$+314|0;N=$+336|0;P=$+256|0;O=$+1360|0;R=$+296|0;Q=$+1371|0;if(!k){f=0;i=$;return f|0}Z=(h|0)==-1?0:h;if((Z|0)<0){f=0;i=$;return f|0}v=k+52|0;q=c[v>>2]|0;if((Z|0)>=((c[k+56>>2]|0)-q>>2|0)){f=0;i=$;return f|0}c[_>>2]=0;X=f+8|0;h=d[X>>0]|d[X+1>>0]<<8|d[X+2>>0]<<16|d[X+3>>0]<<24;if(j&2){Od[h&255](g,6,0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](x,2,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](F,2,1,g)|0;h=c[k+4>>2]|0;if((h|0)!=0?(m=d[k+12>>0]|0,(m|0)<(c[k+8>>2]|0)):0){Od[(d[X>>0]|d[X+1>>0]<<8|d[X+2>>0]<<16|d[X+3>>0]<<24)&255](g,(m*3|0)+h|0,0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](E+2|0,1,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](E+1|0,1,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](E,1,1,g)|0}else{a[E+2>>0]=0;a[E+1>>0]=0;a[E>>0]=0}a[E+3>>0]=0;B=yI(e[x>>1]|0,e[F>>1]|0,32,0,0,0)|0;if(!B){$=kc(4)|0;c[$>>2]=313216;xd($|0,378680,0)}if(b[F>>1]|0){j=0;do{m=$J(B,j)|0;h=b[x>>1]|0;if(h<<16>>16){q=h&65535;h=0;while(1){P=c[E>>2]|0;a[m>>0]=P;a[m+1>>0]=P>>8;a[m+2>>0]=P>>16;a[m+3>>0]=P>>24;h=h+1|0;if((h|0)>=(q|0))break;else m=m+4|0}}j=j+1|0}while((j|0)<(e[F>>1]|0))}c[G>>2]=0;A=G+4|0;c[A>>2]=0;r=G+8|0;c[r>>2]=0;a:do if((Z|0)>-1){o=k+40|0;n=w+4|0;p=w+6|0;s=w+8|0;t=w+10|0;u=Z;b:while(1){Od[(d[X>>0]|d[X+1>>0]<<8|d[X+2>>0]<<16|d[X+3>>0]<<24)&255](g,(c[(c[o>>2]|0)+(u<<2)>>2]|0)+1|0,0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](Y,1,1,g)|0;l=d[Y>>0]|0;j=(l&1|0)==0;l=l>>>2&7;Od[(d[X>>0]|d[X+1>>0]<<8|d[X+2>>0]<<16|d[X+3>>0]<<24)&255](g,c[(c[v>>2]|0)+(u<<2)>>2]|0,0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](y,2,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](z,2,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](T,2,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](S,2,1,g)|0;h=b[y>>1]|0;q=b[z>>1]|0;P=b[T>>1]|0;m=b[S>>1]|0;c[w>>2]=l;b[n>>1]=h;b[p>>1]=q;b[s>>1]=P;b[t>>1]=m;m=c[A>>2]|0;if((m|0)==(c[r>>2]|0)){q1(G,w);q=b[z>>1]|0;h=b[y>>1]|0}else{if(!m)m=0;else{c[m+0>>2]=c[w+0>>2];c[m+4>>2]=c[w+4>>2];c[m+8>>2]=c[w+8>>2];m=c[A>>2]|0}c[A>>2]=m+12}do if(((u|0)!=(Z|0)&h<<16>>16==0&q<<16>>16==0?(b[T>>1]|0)==(b[x>>1]|0):0)?(b[S>>1]|0)==(b[F>>1]|0):0){if((l|0)==2)break b;else if((l|0)==3)break;if(j){h=u;break a}}while(0);h=u+-1|0;if((u|0)>0)u=h;else break a}c[A>>2]=(c[A>>2]|0)+-12;h=u+1|0}else h=Z;while(0);h=(h|0)<0?0:h;c[_>>2]=0;if((Z|0)>=(h|0)){r=0;while(1){m=Z-h|0;l=c[G>>2]|0;y=(Z|0)==(h|0);c:do if(!y){j=c[l+(m*12|0)>>2]|0;if((j|0)==3){j=r;break}else if((j|0)!=2){I=40;break}o=l+(m*12|0)+10|0;if(!(b[o>>1]|0))j=r;else{p=l+(m*12|0)+6|0;q=l+(m*12|0)+4|0;l=l+(m*12|0)+8|0;n=0;while(1){j=(e[F>>1]|0)-n-(e[p>>1]|0)|0;if((j|0)<1){j=r;break c}j=$J(B,j+-1|0)|0;if(b[l>>1]|0){m=j+(e[q>>1]<<2)|0;j=0;while(1){T=c[E>>2]|0;a[m>>0]=T;a[m+1>>0]=T>>8;a[m+2>>0]=T>>16;a[m+3>>0]=T>>24;j=j+1|0;if((j|0)>=(e[l>>1]|0))break;else m=m+4|0}}n=n+1|0;if((n|0)>=(e[o>>1]|0)){j=r;break}}}}else I=40;while(0);if((I|0)==40){I=0;v=FU(f,g,h,1,k)|0;if(!v)j=r;else{w=VI(v)|0;d:do if((ZI(v)|0)!=0?(C=aJ(v)|0,D=_I(v)|0,(C|0)>0):0){j=0;while(1){if(!(a[D+j>>0]|0)){x=1;break d}j=j+1|0;if((j|0)>=(C|0)){x=0;j=r;break}}}else{x=0;j=r}while(0);s=l+(m*12|0)+10|0;e:do if(b[s>>1]|0){t=l+(m*12|0)+6|0;u=l+(m*12|0)+4|0;r=l+(m*12|0)+8|0;m=0;p=0;while(1){q=(e[F>>1]|0)+m-(e[t>>1]|0)|0;if((q|0)<1)break e;q=$J(B,q+-1|0)|0;o=b[u>>1]|0;m=$J(v,m+-1+(e[s>>1]|0)|0)|0;o=q+((o&65535)<<2)|0;q=b[r>>1]|0;f:do if(q<<16>>16){if(x)n=0;else{l=m;q=o;m=0;while(1){T=w+(d[l>>0]<<2)|0;T=d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24;a[q>>0]=T;a[q+1>>0]=T>>8;a[q+2>>0]=T>>16;a[q+3>>0]=T>>24;a[q+3>>0]=-1;m=m+1|0;if((m|0)>=(e[r>>1]|0))break f;else{l=l+1|0;q=q+4|0}}}while(1){l=d[m>>0]|0;if((l|0)!=(j|0)){q=w+(l<<2)|0;q=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;a[o>>0]=q;a[o+1>>0]=q>>8;a[o+2>>0]=q>>16;a[o+3>>0]=q>>24;a[o+3>>0]=-1;q=b[r>>1]|0}n=n+1|0;if((n|0)>=(q&65535|0))break;else{m=m+1|0;o=o+4|0}}}while(0);q=p+1|0;if((q|0)<(e[s>>1]|0)){m=~p;p=q}else break}}while(0);do if(y?(UI(9,v,313008,H)|0)!=0:0){if((pL(c[H>>2]|0)|0)!=4)break;c[_>>2]=c[(sL(c[H>>2]|0)|0)>>2]}while(0);AI(v)}}h=h+1|0;if((Z|0)<(h|0))break;else r=j}}r1(9,B,313008,4101,4,1,4,_);h=c[G>>2]|0;if(!h){f=B;i=$;return f|0}j=c[A>>2]|0;if((j|0)!=(h|0))c[A>>2]=j+(~(((j+-12-h|0)>>>0)/12|0)*12|0);xea(h);f=B;i=$;return f|0}Od[h&255](g,c[q+(Z<<2)>>2]|0,0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](y,2,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](z,2,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](T,2,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](S,2,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](Y,1,1,g)|0;h=d[Y>>0]|0;q=h&64;B=(q|0)==0;m=h>>>7;do if(!(j&1)){if((m|0)==1){h=2<<(h&7);if((h|0)<3){A=1;break}A=(h|0)<17?4:8;break}if(c[k+4>>2]|0){h=c[k+8>>2]|0;if((h|0)<3)A=1;else A=(h|0)<17?4:8}else A=8}else A=8;while(0);F=yI(e[T>>1]|0,e[S>>1]|0,A,0,0,0)|0;if(!F){$=kc(4)|0;c[$>>2]=313216;xd($|0,378680,0)}r1(9,F,312944,4097,3,1,2,y);r1(9,F,312960,4098,3,1,2,z);a[W>>0]=m^1;r1(9,F,312976,4099,1,1,1,W);a[W>>0]=q>>>6;r1(9,F,312992,4100,1,1,1,W);j=VI(F)|0;g:do if((m|0)==1){h=2<<(d[Y>>0]&7);if((h|0)>0){q=0;do{ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](j+(q<<2)+2|0,1,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](j+(q<<2)+1|0,1,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](j+(q<<2)|0,1,1,g)|0;q=q+1|0}while((q|0)<(h|0))}}else{h=k+4|0;if(!(c[h>>2]|0)){h=0;while(1){I=h&255;a[j+(h<<2)+2>>0]=I;a[j+(h<<2)+1>>0]=I;a[j+(h<<2)>>0]=I;h=h+1|0;if((h|0)==256)break g}}m=f+12|0;m=Ld[(d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24)&511](g)|0;Od[(d[X>>0]|d[X+1>>0]<<8|d[X+2>>0]<<16|d[X+3>>0]<<24)&255](g,c[h>>2]|0,0)|0;h=k+8|0;if((c[h>>2]|0)>0){q=0;do{ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](j+(q<<2)+2|0,1,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](j+(q<<2)+1|0,1,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](j+(q<<2)|0,1,1,g)|0;q=q+1|0}while((q|0)<(c[h>>2]|0))}Od[(d[X>>0]|d[X+1>>0]<<8|d[X+2>>0]<<16|d[X+3>>0]<<24)&255](g,m,0)|0}while(0);ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](W,1,1,g)|0;h=uea(49232,378904)|0;if(!h)E=0;else{c[h+49212>>2]=0;Cga(h+52|0,0,49156)|0;c[h+49208>>2]=wea(4194304,378904)|0;E=h}nK(E,d[W>>0]|0);t=8-A|0;C=1<>1]|0)+-1|0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](W,1,1,g)|0;D=E+49212|0;v=E+49220|0;w=E+49216|0;x=E+49224|0;y=E+20|0;z=E+49228|0;n=0;o=t;j=0;q=0;s=0;while(1){h=a[W>>0]|0;if(!(h<<24>>24))break;l=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;r=h&255;m=c[D>>2]|0;if(m){if((c[v>>2]|0)<(r|0)){yea(m);m=wea(r,378904)|0;c[D>>2]=m;c[v>>2]=r;h=a[W>>0]|0}}else{m=wea(r,378904)|0;c[D>>2]=m;c[v>>2]=r}c[w>>2]=r;c[x>>2]=0;c[z>>2]=8-(c[y>>2]|0);ce[l&255](m,h&255,1,g)|0;r=n;l=p;m=s;h:while(1){c[M>>2]=4096;if(!(pK(E,J,M)|0))break;if((c[M>>2]|0)<=0){I=r;r=I;continue}i:do if(B){h=0;n=m;while(1){I=l+q|0;a[I>>0]=(d[J+h>>0]&u)<>0];I=(o|0)>0;p=(I&1^1)+q|0;o=I?o-A|0:t;j=j+1|0;if((j|0)<(e[T>>1]|0)){q=p;m=n}else{m=n+1|0;q=e[S>>1]|0;if((q|0)<=(m|0)){h=o;q=p;break i}l=$J(F,q+(-2-n)|0)|0;o=t;j=0;q=0}h=h+1|0;if((h|0)<(c[M>>2]|0))n=m;else{I=r;r=I;continue h}}}else{h=0;p=l;l=o;while(1){o=p+q|0;a[o>>0]=(d[J+h>>0]&u)<>0];o=(l|0)>0;n=(o&1^1)+q|0;o=o?l-A|0:t;j=j+1|0;if((j|0)<(e[T>>1]|0)){l=p;q=n}else{m=(c[313136+(r<<2)>>2]|0)+m|0;l=b[S>>1]|0;do if((m|0)>=(l&65535|0)){q=r+1|0;if((q|0)>=4){r=q;break}r=q;m=c[313152+(q<<2)>>2]|0}while(0);q=l&65535;if((q|0)<=(m|0)){l=p;h=o;q=n;break i}l=$J(F,q+~m|0)|0;o=t;j=0;q=0}h=h+1|0;if((h|0)<(c[M>>2]|0)){p=l;l=o}else continue h}}while(0);a[E>>0]=1;o=h}ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](W,1,1,g)|0;n=r;p=l;s=m}if(!Z){Od[(d[X>>0]|d[X+1>>0]<<8|d[X+2>>0]<<16|d[X+3>>0]<<24)&255](g,6,0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](L,2,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](K,2,1,g)|0;r1(9,F,313040,1,3,1,2,L);r1(9,F,313056,2,3,1,2,K);h=c[k+4>>2]|0;if(h){Od[(d[X>>0]|d[X+1>>0]<<8|d[X+2>>0]<<16|d[X+3>>0]<<24)&255](g,h,0)|0;m=k+8|0;h=c[m>>2]|0;if((h|0)>0){j=0;do{ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](N+(j<<2)+2|0,1,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](N+(j<<2)+1|0,1,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](N+(j<<2)|0,1,1,g)|0;a[N+(j<<2)+3>>0]=0;j=j+1|0;h=c[m>>2]|0}while((j|0)<(h|0))}r1(9,F,313072,3,14,h,h<<2,N);h=d[k+12>>0]|0;if((h|0)<(c[m>>2]|0))YI(F,N+(h<<2)|0)|0}c[P>>2]=1;l=k+16|0;m=k+20|0;h=c[l>>2]|0;j:do if((c[m>>2]|0)!=(h|0)){j=0;k:while(1){Od[(d[X>>0]|d[X+1>>0]<<8|d[X+2>>0]<<16|d[X+3>>0]<<24)&255](g,c[h+(j<<2)>>2]|0,0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](W,1,1,g)|0;do if((a[W>>0]|0)==11){ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](O,11,1,g)|0;if((pga(O,313168,11)|0)!=0?(pga(O,313184,11)|0)!=0:0)break;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](W,1,1,g)|0;if((a[W>>0]|0)==3)break k}while(0);j=j+1|0;h=c[l>>2]|0;if(j>>>0>=(c[m>>2]|0)-h>>2>>>0)break j}ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](W,1,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](U,2,1,g)|0;T=b[U>>1]|0;h=T&65535;c[P>>2]=h;if(T<<16>>16)c[P>>2]=h+1}while(0);r1(9,F,313088,4,4,1,4,P);j=k+28|0;l=k+32|0;h=c[j>>2]|0;if((c[l>>2]|0)!=(h|0)){o=R+1|0;n=R+8|0;p=R+4|0;q=0;do{Od[(d[X>>0]|d[X+1>>0]<<8|d[X+2>>0]<<16|d[X+3>>0]<<24)&255](g,c[h+(q<<2)>>2]|0,0)|0;c[R+0>>2]=0;c[R+4>>2]=0;c[R+8>>2]=0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](W,1,1,g)|0;while(1){h=a[W>>0]|0;if(!(h<<24>>24))break;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](Q,h&255,1,g)|0;E3(R,Q,d[W>>0]|0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](W,1,1,g)|0}A3(R,1,0)|0;c[V>>2]=q;fga(Q,313200,V)|0;h=a[R>>0]|0;if(!(h&1)){h=(h&255)>>>1;m=o}else{h=c[p>>2]|0;m=c[n>>2]|0}r1(0,F,Q,1,2,h,h,m);v3(R);q=q+1|0;h=c[j>>2]|0}while(q>>>0<(c[l>>2]|0)-h>>2>>>0)}}h=c[(c[k+40>>2]|0)+(Z<<2)>>2]|0;if(h){Od[(d[X>>0]|d[X+1>>0]<<8|d[X+2>>0]<<16|d[X+3>>0]<<24)&255](g,h+1|0,0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](Y,1,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](U,2,1,g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](W,1,1,g)|0;f=d[Y>>0]|0;h=f>>>2&7;c[_>>2]=(e[U>>1]|0)*10;j=d[W>>0]|0;if(!((f&1|0)==0|(j|0)>(C|0))){Cga(V|0,-1,C|0)|0;a[V+j>>0]=0;bJ(F,V,C)}}else h=1;r1(9,F,313008,4101,4,1,4,_);a[W>>0]=h;r1(9,F,313024,4102,1,1,1,W);if(!E){f=F;i=$;return f|0}h=c[D>>2]|0;if(h)yea(h);h=E+49208|0;j=c[h>>2]|0;if(j){yea(j);c[h>>2]=0}h=E+56|0;j=E+49208|0;do{j=j+-12|0;v3(j)}while((j|0)!=(h|0));xea(E);f=F;i=$;return f|0}function GU(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=i;i=i+304|0;E=Q+293|0;M=Q+292|0;P=Q+24|0;s=Q+8|0;A=Q+22|0;B=Q+20|0;H=Q+16|0;z=Q+18|0;n=Q+14|0;m=Q+12|0;q=Q+28|0;v=Q+4|0;N=Q+32|0;L=Q;O=Q+288|0;if(!l){h=0;i=Q;return h|0}G=HI(g)|0;if(!((G|0)==1|(G|0)==4|(G|0)==8)){Q=kc(4)|0;c[Q>>2]=312904;xd(Q|0,378680,0)}b[A>>1]=0;b[B>>1]=0;b[H>>1]=FI(g)|0;I=GI(g)|0;b[z>>1]=I;if((UI(9,g,312944,s)|0)!=0?(pL(c[s>>2]|0)|0)==3:0)b[A>>1]=b[(sL(c[s>>2]|0)|0)>>1]|0;if((UI(9,g,312960,s)|0)!=0?(pL(c[s>>2]|0)|0)==3:0)b[B>>1]=b[(sL(c[s>>2]|0)|0)>>1]|0;if((UI(9,g,312976,s)|0)!=0?(pL(c[s>>2]|0)|0)==1:0)C=(a[(sL(c[s>>2]|0)|0)>>0]|0)!=0;else C=0;if((UI(9,g,312992,s)|0)!=0?(pL(c[s>>2]|0)|0)==1:0)K=(a[(sL(c[s>>2]|0)|0)>>0]|0)!=0;else K=0;if((UI(9,g,313008,s)|0)!=0?(pL(c[s>>2]|0)|0)==4:0)y=((c[(sL(c[s>>2]|0)|0)>>2]|0)/10|0)&65535;else y=10;if((UI(9,g,313024,s)|0)!=0?(pL(c[s>>2]|0)|0)==1:0)k=d[(sL(c[s>>2]|0)|0)>>0]<<2&28;else k=8;D=VI(g)|0;if((j|0)==0|(j|0)==-1){b[n>>1]=b[H>>1]|0;if((UI(9,g,313040,s)|0)!=0?(pL(c[s>>2]|0)|0)==3:0)b[n>>1]=b[(sL(c[s>>2]|0)|0)>>1]|0;b[m>>1]=b[z>>1]|0;if((UI(9,g,313056,s)|0)!=0?(pL(c[s>>2]|0)|0)==3:0)b[m>>1]=b[(sL(c[s>>2]|0)|0)>>1]|0;if((UI(9,g,313072,s)|0)!=0?(pL(c[s>>2]|0)|0)==14:0){l=qL(c[s>>2]|0)|0;if((l|0)>1)r=sL(c[s>>2]|0)|0;else r=0}else{r=0;l=0}u=f+4|0;ce[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](n,2,1,h)|0;ce[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](m,2,1,h)|0;a[E>>0]=112;a[M>>0]=0;p=(r|0)!=0;a:do if(p){a[E>>0]=-16;do if((l|0)>=4){if((l|0)<8){a[E>>0]=-15;j=4;break}if((l|0)<16){a[E>>0]=-14;j=8;break}if((l|0)<32){a[E>>0]=-13;j=16;break}if((l|0)<64){a[E>>0]=-12;j=32;break}if((l|0)<128){a[E>>0]=-11;j=64;break}if((l|0)<256){a[E>>0]=-10;j=128;break}else{a[E>>0]=-9;j=256;break}}else{a[E>>0]=-16;j=2}while(0);if(XI(g,q)|0){n=a[q+2>>0]|0;o=a[q+1>>0]|0;m=a[q>>0]|0;l=0;b:while(1){do if(n<<24>>24==(a[r+(l<<2)+2>>0]|0)){if(o<<24>>24!=(a[r+(l<<2)+1>>0]|0))break;if(m<<24>>24==(a[r+(l<<2)>>0]|0))break b}while(0);l=l+1|0;if((l|0)>=(j|0))break a}a[M>>0]=l}}else{a[E>>0]=G+7&7|112;j=l}while(0);ce[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](E,1,1,h)|0;ce[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](M,1,1,h)|0;a[M>>0]=0;ce[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](M,1,1,h)|0;if(p&(j|0)>0){l=0;do{ce[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](r+(l<<2)+2|0,1,1,h)|0;ce[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](r+(l<<2)+1|0,1,1,h)|0;ce[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](r+(l<<2)|0,1,1,h)|0;l=l+1|0}while((l|0)<(j|0))}if((UI(9,g,313088,s)|0)!=0?(pL(c[s>>2]|0)|0)==4:0){l=c[(sL(c[s>>2]|0)|0)>>2]|0;if((l|0)!=1)t=62}else{l=0;t=62}if((t|0)==62){t=(((l|0)>1)<<31>>31)+l|0;b[P>>1]=(t|0)>65535?-1:t&65535;ce[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](313096,16,1,h)|0;ce[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](P,2,1,h)|0;a[M>>0]=0;ce[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](M,1,1,h)|0}c[v>>2]=0;n=gJ(0,g,v)|0;if(n){do if((pL(c[v>>2]|0)|0)==2){l=rL(c[v>>2]|0)|0;j=sL(c[v>>2]|0)|0;l=l+-1|0;ce[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](313120,2,1,h)|0;if((l|0)>0)while(1){a[M>>0]=(l|0)<255?l&255:-1;ce[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](M,1,1,h)|0;ce[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](j,d[M>>0]|0,1,h)|0;m=d[M>>0]|0;l=l-m|0;if((l|0)<=0)break;else j=j+m|0}a[M>>0]=0;ce[(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)&255](M,1,1,h)|0}while((hJ(n,v)|0)!=0);iJ(n)}}c:do if((ZI(g)|0)!=0?(w=aJ(g)|0,x=_I(g)|0,(w|0)>0):0){j=0;while(1){if(!(a[x+j>>0]|0)){l=1;break c}j=j+1|0;if((j|0)>=(w|0)){l=0;j=0;break}}}else{l=0;j=0}while(0);J=f+4|0;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](313128,3,1,h)|0;if(l)k=(k&255|1)&255;a[M>>0]=k;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;b[P>>1]=y;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](P,2,1,h)|0;a[M>>0]=j;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;a[M>>0]=0;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;a[M>>0]=44;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](A,2,1,h)|0;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](B,2,1,h)|0;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](H,2,1,h)|0;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](z,2,1,h)|0;if(C)k=0;else k=(G+7&7|128)&255;if(K)k=(k&255|64)&255;a[E>>0]=k;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](E,1,1,h)|0;if(!C?(F=1<>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](D+(k<<2)+2|0,1,1,h)|0;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](D+(k<<2)+1|0,1,1,h)|0;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](D+(k<<2)|0,1,1,h)|0;k=k+1|0}while((k|0)<(F|0))}a[M>>0]=(G|0)==1?2:G&255;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;k=uea(49232,378904)|0;if(!k)E=0;else{c[k+49212>>2]=0;Cga(k+52|0,0,49156)|0;c[k+49208>>2]=wea(4194304,378904)|0;E=k}nK(E,d[M>>0]|0);B=e[H>>1]|0;y=E+20|0;c[y>>2]=G;c[E+24>>2]=(8-((ea(B,G)|0)%8|0)|0)%8|0;B=E+48|0;D=c[B>>2]|0;C=E+44|0;c[C>>2]=c[C>>2]|c[E+8>>2]<>2]=(c[z>>2]|0)+D;D=E+49208|0;k=c[D>>2]|0;if(k)Cga(k|0,-1,4194304)|0;A=E+12|0;c[E+16>>2]=(c[A>>2]|0)+1;f=E+28|0;c[f>>2]=0;c[z>>2]=(c[E+4>>2]|0)+1;x=PI(g)|0;c[L>>2]=255;a[M>>0]=-1;r=I&65535;d:do if(!r){j=N;k=N}else{o=E+49212|0;n=(x|0)>-1?x:-1;p=E+49220|0;s=E+49216|0;t=E+49224|0;u=E+49228|0;v=r+-1|0;j=N;k=N;w=0;l=0;do{q=313136+(w<<2)|0;while(1){m=c[o>>2]|0;do if(!m){m=wea(n,378904)|0;c[o>>2]=m;c[p>>2]=x}else{if((c[p>>2]|0)>=(x|0))break;yea(m);m=wea(n,378904)|0;c[o>>2]=m;c[p>>2]=x}while(0);c[s>>2]=x;c[t>>2]=0;c[u>>2]=8-(c[y>>2]|0);Aga(m|0,$J(g,v-l|0)|0,x|0)|0;if(oK(E,k,L)|0)do{k=k+(c[L>>2]|0)|0;m=k-j|0;if((m|0)==255){ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](N,255,1,h)|0;k=N;m=255}else m=255-m|0;c[L>>2]=m}while(oK(E,k,L)|0);if(K){l=(c[q>>2]|0)+l|0;if((l|0)>=(r|0))break}else l=l+1|0;if((r|0)<=(l|0))break d}w=w+1|0;if((w|0)<4)l=c[313152+(w<<2)>>2]|0}while((r|0)>(l|0))}while(0);c[L>>2]=k-j;k=c[B>>2]|0;j=c[C>>2]|c[f>>2]<>2]=j;l=c[z>>2]|0;k=l+k|0;c[B>>2]=k;if((k|0)>7){m=O;l=j;k=0;do{j=m;m=m+1|0;a[j>>0]=l;l=c[C>>2]>>8;c[C>>2]=l;j=(c[B>>2]|0)+-8|0;c[B>>2]=j;k=k+1|0}while((j|0)>7);n=j;j=l;l=c[z>>2]|0}else{m=O;n=k;k=0}j=c[A>>2]<>2]=j;g=l+n|0;c[B>>2]=g;if((g|0)>0)while(1){a[m>>0]=j;j=c[C>>2]>>8;c[C>>2]=j;g=(c[B>>2]|0)+-8|0;c[B>>2]=g;k=k+1|0;if((g|0)<=0)break;else m=m+1|0}b[P>>1]=k;j=c[L>>2]|0;k=j+(k&65535)|0;do if(k>>>0>254){ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](N,j,1,h)|0;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](O,255-j|0,1,h)|0;N=j+1+(e[P>>1]|0)|0;a[M>>0]=N;if(!(N&255))break;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;N=d[M>>0]|0;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](O+((e[P>>1]|0)-N)|0,N,1,h)|0}else{a[M>>0]=k;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](N,j,1,h)|0;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](O,e[P>>1]|0,1,h)|0}while(0);a[M>>0]=0;ce[(d[J>>0]|d[J+1>>0]<<8|d[J+2>>0]<<16|d[J+3>>0]<<24)&255](M,1,1,h)|0;if(!E){h=1;i=Q;return h|0}k=c[E+49212>>2]|0;if(k)yea(k);k=c[D>>2]|0;if(k){yea(k);c[D>>2]=0}k=E+56|0;j=E+49208|0;do{j=j+-12|0;v3(j)}while((j|0)!=(k|0));xea(E);h=1;i=Q;return h|0}function HU(b,c){b=b|0;c=c|0;var e=0,f=0;f=i;i=i+16|0;e=f;if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](e,6,1,c)|0)){b=0;i=f;return b|0}if(((rga(e,312896,3)|0)==0?((a[e+3>>0]|0)+-48<<24>>24&255)<10:0)?((a[e+4>>0]|0)+-48<<24>>24&255)<10:0)e=((a[e+5>>0]|0)+-97<<24>>24&255)<26&1;else e=0;b=b+8|0;Od[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](c,-6,1)|0;b=e;i=f;return b|0}function IU(){return 312880}function JU(a){a=a|0;if((a|0)==8|(a|0)==1|(a|0)==4)a=1;else a=0;return a|0}function KU(a){a=a|0;return (a|0)==1|0}function LU(){return 314184}function MU(){return 314152}function NU(){return 314144}function OU(){return 0}function PU(b,e,f,h,j){b=b|0;e=e|0;f=f|0;h=h|0;j=j|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0;H=i;i=i+576|0;E=H;D=H+564|0;B=H+560|0;t=H+304|0;p=H+296|0;o=H+12|0;F=H+8|0;C=H+300|0;if(!e){J=0;i=H;return J|0}q=h&32768;s=(q|0)==0;q=q>>>15;c[o>>2]=0;a[o+4>>0]=0;m=o+276|0;g[m>>2]=1.0;n=o+280|0;g[n>>2]=1.0;Cga(t|0,0,256)|0;f=0;while(1){j=t+f|0;if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){J=6;break}f=f+1|0;if((a[j>>0]|0)==10)break;if((f|0)>=256){J=6;break}}if((J|0)==6){yJ(c[78388]|0,313704,E);J=0;i=H;return J|0}if((a[t>>0]|0)==35?(r=t+1|0,(a[r>>0]|0)==63):0){c[o>>2]=c[o>>2]|1;j=0;do{f=t+(j+2)|0;h=a[f>>0]|0;if(!(h<<24>>24))break;if(Gfa(h<<24>>24)|0)break;a[o+j+4>>0]=a[f>>0]|0;j=j+1|0}while(j>>>0<15);a[o+j+4>>0]=0;j=o+20|0;h=0;a:while(1)while(1){Cga(t|0,0,256)|0;l=0;while(1){f=t+l|0;if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](f,1,1,e)|0)){J=20;break a}l=l+1|0;if((a[f>>0]|0)==10)break;if((l|0)>=256){J=20;break a}}A=a[t>>0]|0;if(A<<24>>24==10|A<<24>>24==0)break a;if(!(qga(t,313824)|0)){h=1;continue a}c[E>>2]=p;if((Yda(t,314032,E)|0)==1){g[m>>2]=+g[p>>2];c[o>>2]=c[o>>2]|4;continue}c[E>>2]=p;if((Yda(t,314048,E)|0)==1){g[n>>2]=+g[p>>2];c[o>>2]=c[o>>2]|8;continue}if(!((a[t>>0]|0)==35&(a[r>>0]|0)==32))continue;c[o>>2]=c[o>>2]|2;Gga(j|0,t|0)|0}if((J|0)==20){yJ(c[78388]|0,313704,E);J=0;i=H;return J|0}if(!h){J=c[78388]|0;c[E>>2]=314064;yJ(J,313744,E);J=0;i=H;return J|0}Cga(t|0,0,256)|0;f=0;while(1){j=t+f|0;if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){J=35;break}f=f+1|0;if((a[j>>0]|0)==10)break;if((f|0)>=256){J=35;break}}if((J|0)==35){yJ(c[78388]|0,313704,E);J=0;i=H;return J|0}c[E>>2]=C;c[E+4>>2]=F;if((Yda(t,314080,E)|0)<2?(c[E>>2]=C,c[E+4>>2]=F,(Yda(t,314096,E)|0)<2):0){J=c[78388]|0;c[E>>2]=314112;yJ(J,313744,E);J=0;i=H;return J|0}j=wI(q,11,c[F>>2]|0,c[C>>2]|0,8,0,0,0)|0;if(!j){J=kc(4)|0;c[J>>2]=313976;xd(J|0,378680,0)}if(!s){J=j;i=H;return J|0}f=c[C>>2]|0;if(!f){J=j;i=H;return J|0}x=D+1|0;y=D+2|0;z=D+3|0;A=B+1|0;w=0;b:while(1){r=$J(j,f+~w|0)|0;v=c[F>>2]|0;do if((v+-8|0)>>>0>32759){G=s1(b,e,r,v)|0;J=84}else{l=v<<2;o=(v|0)>0;t=v<<1;u=v*3|0;if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](D,1,4,e)|0)){J=47;break b}h=a[D>>0]|0;if(h<<24>>24==2&(a[x>>0]|0)==2?(I=d[y>>0]|0,(I&128|0)==0):0){if((d[z>>0]|I<<8|0)!=(v|0)){J=55;break b}s=Afa(l)|0;if(!s){J=57;break b}else{m=0;l=s}do{m=m+1|0;q=s+(ea(m,v)|0)|0;if(l>>>0>>0){n=q;p=l;while(1){if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](B,1,2,e)|0)){J=63;break b}l=a[B>>0]|0;h=l&255;do if((l&255)>128){l=h+-128|0;if(!l){J=68;break b}if((l|0)>(n-p|0)){J=68;break b}if((l|0)>0){f=l;h=p}else{l=p;break}while(1){f=f+-1|0;a[h>>0]=a[A>>0]|0;if((f|0)<=0)break;else h=h+1|0}l=p+l|0}else{if(!(l<<24>>24)){J=72;break b}if((h|0)>(n-p|0)){J=72;break b}l=p+1|0;a[p>>0]=a[A>>0]|0;f=h+-1|0;if((f|0)<=0)break;if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](l,1,f,e)|0)){J=76;break b}l=p+h|0}while(0);if(l>>>0>>0)p=l;else break}}}while((m|0)<4);if(o){l=r;m=0;while(1){f=a[s+m>>0]|0;a[D>>0]=f;a[x>>0]=a[s+(m+v)>>0]|0;a[y>>0]=a[s+(m+t)>>0]|0;h=a[s+(m+u)>>0]|0;a[z>>0]=h;if(!(h<<24>>24)){r=l+8|0;g[k>>2]=0.0;a[r>>0]=a[k>>0];a[r+1>>0]=a[k+1>>0];a[r+2>>0]=a[k+2>>0];a[r+3>>0]=a[k+3>>0];r=l+4|0;g[k>>2]=0.0;a[r>>0]=a[k>>0];a[r+1>>0]=a[k+1>>0];a[r+2>>0]=a[k+2>>0];a[r+3>>0]=a[k+3>>0];g[k>>2]=0.0;a[l>>0]=a[k>>0];a[l+1>>0]=a[k+1>>0];a[l+2>>0]=a[k+2>>0];a[l+3>>0]=a[k+3>>0]}else{K=+Oda(1.0,(h&255)+-136|0);g[k>>2]=+(f&255|0)*K;a[l>>0]=a[k>>0];a[l+1>>0]=a[k+1>>0];a[l+2>>0]=a[k+2>>0];a[l+3>>0]=a[k+3>>0];r=l+4|0;g[k>>2]=K*+(d[x>>0]|0);a[r>>0]=a[k>>0];a[r+1>>0]=a[k+1>>0];a[r+2>>0]=a[k+2>>0];a[r+3>>0]=a[k+3>>0];r=l+8|0;g[k>>2]=K*+(d[y>>0]|0);a[r>>0]=a[k>>0];a[r+1>>0]=a[k+1>>0];a[r+2>>0]=a[k+2>>0];a[r+3>>0]=a[k+3>>0]}m=m+1|0;if((m|0)==(v|0))break;else l=l+12|0}}Bfa(s);break}f=a[z>>0]|0;if(!(f<<24>>24)){J=r+8|0;g[k>>2]=0.0;a[J>>0]=a[k>>0];a[J+1>>0]=a[k+1>>0];a[J+2>>0]=a[k+2>>0];a[J+3>>0]=a[k+3>>0];J=r+4|0;g[k>>2]=0.0;a[J>>0]=a[k>>0];a[J+1>>0]=a[k+1>>0];a[J+2>>0]=a[k+2>>0];a[J+3>>0]=a[k+3>>0];g[k>>2]=0.0;a[r>>0]=a[k>>0];a[r+1>>0]=a[k+1>>0];a[r+2>>0]=a[k+2>>0];a[r+3>>0]=a[k+3>>0]}else{K=+Oda(1.0,(f&255)+-136|0);g[k>>2]=+(h&255|0)*K;a[r>>0]=a[k>>0];a[r+1>>0]=a[k+1>>0];a[r+2>>0]=a[k+2>>0];a[r+3>>0]=a[k+3>>0];J=r+4|0;g[k>>2]=K*+(d[x>>0]|0);a[J>>0]=a[k>>0];a[J+1>>0]=a[k+1>>0];a[J+2>>0]=a[k+2>>0];a[J+3>>0]=a[k+3>>0];J=r+8|0;g[k>>2]=K*+(d[y>>0]|0);a[J>>0]=a[k>>0];a[J+1>>0]=a[k+1>>0];a[J+2>>0]=a[k+2>>0];a[J+3>>0]=a[k+3>>0]}G=s1(b,e,r+12|0,v+-1|0)|0;J=84}while(0);if((J|0)==84?(J=0,(G|0)==0):0)break;w=w+1|0;f=c[C>>2]|0;if(w>>>0>=f>>>0){J=87;break}}if((J|0)==47)yJ(c[78388]|0,313704,E);else if((J|0)==55){J=c[78388]|0;c[E>>2]=313896;yJ(J,313744,E)}else if((J|0)==57){J=c[78388]|0;c[E>>2]=313920;yJ(J,313776,E)}else if((J|0)==63){Bfa(s);yJ(c[78388]|0,313704,E)}else if((J|0)==68){Bfa(s);J=c[78388]|0;c[E>>2]=313952;yJ(J,313744,E)}else if((J|0)==72){Bfa(s);J=c[78388]|0;c[E>>2]=313952;yJ(J,313744,E)}else if((J|0)==76){Bfa(s);yJ(c[78388]|0,313704,E)}else if((J|0)==87){i=H;return j|0}AI(j);J=0;i=H;return J|0}J=c[78388]|0;c[E>>2]=314008;yJ(J,313744,E);J=0;i=H;return J|0}function QU(b,e,f,j,l,m){b=b|0;e=e|0;f=f|0;j=j|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0.0;V=i;i=i+560|0;U=V;q=V+304|0;R=V+300|0;T=V+12|0;S=V+8|0;p=V+16|0;if(!e){T=0;i=V;return T|0}m=EI(e)|0;if((m|0)!=11){T=c[78388]|0;c[U>>2]=m;c[U+4>>2]=11;yJ(T,313584,U);T=0;i=V;return T|0}P=FI(e)|0;Q=GI(e)|0;Cga(p|0,0,280)|0;n=p+276|0;g[n>>2]=1.0;o=p+280|0;g[o>>2]=0.0;c[p>>2]=12;m=p+20|0;c[U>>2]=xJ()|0;fga(m,313672,U)|0;c[U>>2]=(c[p>>2]&1|0)==0?313792:p+4|0;fga(q,313808,U)|0;O=b+4|0;M=d[O>>0]|d[O+1>>0]<<8|d[O+2>>0]<<16|d[O+3>>0]<<24;N=Dga(q|0)|0;if(!(ce[M&255](q,1,N,f)|0)){yJ(c[78388]|0,313720,U);T=0;i=V;return T|0}c[U>>2]=m;fga(q,313816,U)|0;M=d[O>>0]|d[O+1>>0]<<8|d[O+2>>0]<<16|d[O+3>>0]<<24;N=Dga(q|0)|0;if(!(ce[M&255](q,1,N,f)|0)){yJ(c[78388]|0,313720,U);T=0;i=V;return T|0}m=q+0|0;l=313824;j=m+24|0;do{a[m>>0]=a[l>>0]|0;m=m+1|0;l=l+1|0}while((m|0)<(j|0));M=d[O>>0]|d[O+1>>0]<<8|d[O+2>>0]<<16|d[O+3>>0]<<24;N=Dga(q|0)|0;if(!(ce[M&255](q,1,N,f)|0)){yJ(c[78388]|0,313720,U);T=0;i=V;return T|0}m=c[p>>2]|0;do if(m&4){h[k>>3]=+g[n>>2];c[U>>2]=c[k>>2];c[U+4>>2]=c[k+4>>2];fga(q,313848,U)|0;M=d[O>>0]|d[O+1>>0]<<8|d[O+2>>0]<<16|d[O+3>>0]<<24;N=Dga(q|0)|0;if(ce[M&255](q,1,N,f)|0){m=c[p>>2]|0;break}yJ(c[78388]|0,313720,U);T=0;i=V;return T|0}while(0);if((m&8|0)!=0?(h[k>>3]=+g[o>>2],c[U>>2]=c[k>>2],c[U+4>>2]=c[k+4>>2],fga(q,313864,U)|0,M=d[O>>0]|d[O+1>>0]<<8|d[O+2>>0]<<16|d[O+3>>0]<<24,N=Dga(q|0)|0,(ce[M&255](q,1,N,f)|0)==0):0){yJ(c[78388]|0,313720,U);T=0;i=V;return T|0}c[U>>2]=Q;c[U+4>>2]=P;fga(q,313880,U)|0;M=d[O>>0]|d[O+1>>0]<<8|d[O+2>>0]<<16|d[O+3>>0]<<24;N=Dga(q|0)|0;if(!(ce[M&255](q,1,N,f)|0)){yJ(c[78388]|0,313720,U);T=0;i=V;return T|0}if(!Q){T=1;i=V;return T|0}u=Q+-1|0;v=(P+-8|0)>>>0>32759;w=(P|0)==0;x=T+1|0;y=T+2|0;z=T+3|0;A=P<<2;B=T+1|0;C=T+2|0;D=T+3|0;E=S+1|0;F=P>>>8&255;G=S+2|0;H=P&255;I=S+3|0;J=(P|0)>0;K=R+1|0;L=P<<1;M=P*3|0;N=0;a:while(1){j=$J(e,u-N|0)|0;b:do if(v){if(!w){l=0;do{m=j+(l*12|0)|0;a[k>>0]=a[m>>0];a[k+1>>0]=a[m+1>>0];a[k+2>>0]=a[m+2>>0];a[k+3>>0]=a[m+3>>0];r=+g[k>>2];q=j+(l*12|0)+4|0;a[k>>0]=a[q>>0];a[k+1>>0]=a[q+1>>0];a[k+2>>0]=a[q+2>>0];a[k+3>>0]=a[q+3>>0];W=+g[k>>2];r=W>r?W:r;b=j+(l*12|0)+8|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];W=+g[k>>2];r=W>r?W:r;if(r<1.0e-032)c[T>>2]=0;else{W=+Sfa(r,U)*256.0/r;a[k>>0]=a[m>>0];a[k+1>>0]=a[m+1>>0];a[k+2>>0]=a[m+2>>0];a[k+3>>0]=a[m+3>>0];a[T>>0]=~~(+g[k>>2]*W);a[k>>0]=a[q>>0];a[k+1>>0]=a[q+1>>0];a[k+2>>0]=a[q+2>>0];a[k+3>>0]=a[q+3>>0];a[x>>0]=~~(W*+g[k>>2]);a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[y>>0]=~~(W*+g[k>>2]);a[z>>0]=(c[U>>2]|0)+128}l=l+1|0;if(!(ce[(d[O>>0]|d[O+1>>0]<<8|d[O+2>>0]<<16|d[O+3>>0]<<24)&255](T,4,1,f)|0)){l=28;break a}}while(l>>>0

>>0)}}else{t=Afa(A)|0;if(!t){if(w)break;else l=0;while(1){m=j+(l*12|0)|0;a[k>>0]=a[m>>0];a[k+1>>0]=a[m+1>>0];a[k+2>>0]=a[m+2>>0];a[k+3>>0]=a[m+3>>0];r=+g[k>>2];q=j+(l*12|0)+4|0;a[k>>0]=a[q>>0];a[k+1>>0]=a[q+1>>0];a[k+2>>0]=a[q+2>>0];a[k+3>>0]=a[q+3>>0];W=+g[k>>2];r=W>r?W:r;b=j+(l*12|0)+8|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];W=+g[k>>2];r=W>r?W:r;if(r<1.0e-032)c[T>>2]=0;else{W=+Sfa(r,U)*256.0/r;a[k>>0]=a[m>>0];a[k+1>>0]=a[m+1>>0];a[k+2>>0]=a[m+2>>0];a[k+3>>0]=a[m+3>>0];a[T>>0]=~~(+g[k>>2]*W);a[k>>0]=a[q>>0];a[k+1>>0]=a[q+1>>0];a[k+2>>0]=a[q+2>>0];a[k+3>>0]=a[q+3>>0];a[B>>0]=~~(W*+g[k>>2]);a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[C>>0]=~~(W*+g[k>>2]);a[D>>0]=(c[U>>2]|0)+128}l=l+1|0;if(!(ce[(d[O>>0]|d[O+1>>0]<<8|d[O+2>>0]<<16|d[O+3>>0]<<24)&255](T,4,1,f)|0)){l=36;break a}if(l>>>0>=P>>>0)break b}}a[S>>0]=2;a[E>>0]=2;a[G>>0]=F;a[I>>0]=H;if(!(ce[(d[O>>0]|d[O+1>>0]<<8|d[O+2>>0]<<16|d[O+3>>0]<<24)&255](S,4,1,f)|0)){l=39;break a}if(w)s=0;else{o=0;while(1){a[k>>0]=a[j>>0];a[k+1>>0]=a[j+1>>0];a[k+2>>0]=a[j+2>>0];a[k+3>>0]=a[j+3>>0];r=+g[k>>2];m=j+4|0;a[k>>0]=a[m>>0];a[k+1>>0]=a[m+1>>0];a[k+2>>0]=a[m+2>>0];a[k+3>>0]=a[m+3>>0];W=+g[k>>2];r=W>r?W:r;q=j+8|0;a[k>>0]=a[q>>0];a[k+1>>0]=a[q+1>>0];a[k+2>>0]=a[q+2>>0];a[k+3>>0]=a[q+3>>0];W=+g[k>>2];r=W>r?W:r;if(r<1.0e-032){c[S>>2]=0;m=0;q=0;b=0;l=0}else{W=+Sfa(r,U)*256.0/r;a[k>>0]=a[j>>0];a[k+1>>0]=a[j+1>>0];a[k+2>>0]=a[j+2>>0];a[k+3>>0]=a[j+3>>0];n=~~(+g[k>>2]*W)&255;a[S>>0]=n;a[k>>0]=a[m>>0];a[k+1>>0]=a[m+1>>0];a[k+2>>0]=a[m+2>>0];a[k+3>>0]=a[m+3>>0];p=~~(W*+g[k>>2])&255;a[E>>0]=p;a[k>>0]=a[q>>0];a[k+1>>0]=a[q+1>>0];a[k+2>>0]=a[q+2>>0];a[k+3>>0]=a[q+3>>0];b=~~(W*+g[k>>2])&255;a[G>>0]=b;l=(c[U>>2]|0)+128&255;a[I>>0]=l;m=n;q=p}a[t+o>>0]=m;a[t+(o+P)>>0]=q;a[t+(o+L)>>0]=b;a[t+(o+M)>>0]=l;o=o+1|0;if((o|0)==(P|0)){s=0;break}else j=j+12|0}}do{p=ea(s,P)|0;if(J){m=0;do do if((m|0)<(P|0)){n=m;o=0;while(1){n=n+o|0;q=n+1|0;c:do if((q|0)<(P|0)){j=a[t+(n+p)>>0]|0;l=1;while(1){b=l+1|0;if(j<<24>>24!=(a[t+(q+p)>>0]|0))break c;q=b+n|0;if(!((q|0)<(P|0)&(b|0)<127)){l=b;break}else l=b}}else l=1;while(0);if(!((l|0)<4&(n|0)<(P|0)))break;else o=l}do if((o|0)>1&(o|0)==(n-m|0)){a[R>>0]=o+128;a[K>>0]=a[t+(m+p)>>0]|0;if(!(ce[(d[O>>0]|d[O+1>>0]<<8|d[O+2>>0]<<16|d[O+3>>0]<<24)&255](R,2,1,f)|0)){l=54;break a}else m=n}else{if((n|0)>(m|0))b=m;else break;while(1){q=n-b|0;q=(q|0)>128?128:q;a[R>>0]=q;if(!(ce[(d[O>>0]|d[O+1>>0]<<8|d[O+2>>0]<<16|d[O+3>>0]<<24)&255](R,1,1,f)|0)){l=57;break a}m=q+b|0;if(!(ce[(d[O>>0]|d[O+1>>0]<<8|d[O+2>>0]<<16|d[O+3>>0]<<24)&255](t+(b+p)|0,q,1,f)|0)){l=59;break a}if((n|0)>(m|0))b=m;else break}}while(0);if((l|0)<=3)break;a[R>>0]=l+128;a[K>>0]=a[t+(n+p)>>0]|0;if(!(ce[(d[O>>0]|d[O+1>>0]<<8|d[O+2>>0]<<16|d[O+3>>0]<<24)&255](R,2,1,f)|0)){l=62;break a}m=m+l|0}while(0);while((m|0)<(P|0))}s=s+1|0}while((s|0)<4);Bfa(t)}while(0);N=N+1|0;if(N>>>0>=Q>>>0){m=1;l=69;break}}if((l|0)==28){yJ(c[78388]|0,313720,U);T=0;i=V;return T|0}else if((l|0)==36){yJ(c[78388]|0,313720,U);T=0;i=V;return T|0}else if((l|0)==39){Bfa(t);yJ(c[78388]|0,313720,U);T=0;i=V;return T|0}else if((l|0)==54)yJ(c[78388]|0,313720,U);else if((l|0)==57)yJ(c[78388]|0,313720,U);else if((l|0)==59)yJ(c[78388]|0,313720,U);else if((l|0)==62)yJ(c[78388]|0,313720,U);else if((l|0)==69){i=V;return m|0}Bfa(t);T=0;i=V;return T|0}function RU(a,c){a=a|0;c=c|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+2|0;f=e;b[g>>1]=16163;b[f>>1]=0;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](f,1,2,c)|0;a=(pga(g,f,2)|0)==0&1;i=e;return a|0}function SU(){return 313560}function TU(a){a=a|0;return 0}function UU(a){a=a|0;return (a|0)==11|0}function VU(){return 1}function WU(){return 314472}function XU(){return 314456}function YU(){return 314448}function ZU(){return 0}function _U(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0;g=i;f=Afa(6)|0;if(!f){b=0;i=g;return b|0}if(!e){a[f>>0]=0;a[f+1>>0]=0;b=f+2|0;a[b>>0]=1;a[b+1>>0]=0;b=f+4|0;a[b>>0]=0;a[b+1>>0]=0;b=f;i=g;return b|0}ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](f,1,6,c)|0;if((d[f>>0]|d[f+1>>0]<<8)<<16>>16==0?(b=f+2|0,(d[b>>0]|d[b+1>>0]<<8)<<16>>16==1):0){b=f;i=g;return b|0}Bfa(f);b=0;i=g;return b|0}function $U(a,b,c){a=a|0;b=b|0;c=c|0;a=i;Bfa(c);i=a;return}function aV(a,b,c){a=a|0;b=b|0;c=c|0;if(!c)c=1;else{c=c+4|0;c=(d[c>>0]|d[c+1>>0]<<8)&65535}return c|0}function bV(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+48|0;n=u+8|0;o=u;m=(h|0)==-1?0:h;l=j&32768;q=l>>>15;if(!g){f=0;i=u;return f|0}if(!k){yJ(c[78548]|0,314424,n);f=0;i=u;return f|0}k=k+4|0;t=Afa(((d[k>>0]|d[k+1>>0]<<8)&65535)<<4)|0;if(!t){f=0;i=u;return f|0}h=f+8|0;Od[(d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24)&255](g,6,0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](t,((d[k>>0]|d[k+1>>0]<<8)&65535)<<4,1,g)|0;if((m|0)>=((d[k>>0]|d[k+1>>0]<<8)&65535|0)){Bfa(t);yJ(c[78548]|0,314400,n);f=0;i=u;return f|0}p=t+(m<<4)+12|0;Od[(d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24)&255](g,d[p>>0]|d[p+1>>0]<<8|d[p+2>>0]<<16|d[p+3>>0]<<24,0)|0;p=n;c[p>>2]=1196314761;c[p+4>>2]=169478669;p=o;c[p>>2]=0;c[p+4>>2]=0;p=f+12|0;p=Ld[(d[p>>0]|d[p+1>>0]<<8|d[p+2>>0]<<16|d[p+3>>0]<<24)&511](g)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](o,1,8,g)|0;s=(pga(n,o,8)|0)==0;Od[(d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24)&255](g,p,0)|0;do if(!s){ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,40,1,g)|0;r=c[n+4>>2]|0;p=c[n+8>>2]|0;s=(p|0)/2|0;h=n+14|0;m=b[h>>1]|0;k=m&65535;l=Tga(m&65535|0,0,r|0,0)|0;l=Iga(l|0,I|0,7,0)|0;l=Lga(l|0,I|0,3)|0;l=l+3&-4;o=xI(q,r,s,k,0,0,0)|0;if(o){if((e[h>>1]|0)<9){h=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;n=VI(o)|0;ce[h&255](n,m<<16>>16!=0&(m&65535)<9?4<>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24,k=QI(o)|0,n=ea(l,s)|0,ce[q&255](k,n,1,g)|0,(j&1|0)!=0&(m&65535)<32):0){h=vJ(o)|0;AI(o);if(!h)h=0;else{n=r+31>>5<<2;o=Afa(n)|0;if(!o){AI(h);h=0;break}a:do if((p|0)>1){if((r|0)>0)m=0;else{k=0;while(1){$J(h,k)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](o,n,1,g)|0;k=k+1|0;if((k|0)>=(s|0))break a}}do{k=$J(h,m)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](o,n,1,g)|0;l=0;while(1){j=((d[o+(l>>3)>>0]|0)&128>>>(l&7)|0)==0;a[k+3>>0]=j<<31>>31;if(!j){a[k>>0]=(d[k>>0]|0)^255;j=k+1|0;a[j>>0]=(d[j>>0]|0)^255;j=k+2|0;a[j>>0]=(d[j>>0]|0)^255}l=l+1|0;if((l|0)==(r|0))break;else k=k+4|0}m=m+1|0}while((m|0)<(s|0))}while(0);Bfa(o)}}else h=o}else h=0}else h=cK(13,f,g,l)|0;while(0);Bfa(t);f=h;i=u;return f|0} +function uJ(b){b=b|0;var c=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;if(!(II(b)|0)){q=0;i=r;return q|0}f=HI(b)|0;c=EI(b)|0;if(!((c|0)==1|(c|0)==9|(c|0)==10)){q=0;i=r;return q|0}p=FI(b)|0;q=GI(b)|0;if((c|0)==10){c=yI(p,q,24,16711680,65280,255)|0;if(!c){q=0;i=r;return q|0}jJ(c,b)|0;m=OI(b)|0;l=OI(c)|0;h=QI(b)|0;f=QI(c)|0;if((q|0)<=0){q=c;i=r;return q|0}j=(p|0)>0;k=0;while(1){if(j){g=0;do{b=h+(g<<3)|0;a[f+(g*3|0)+2>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;b=h+(g<<3)+2|0;a[f+(g*3|0)+1>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;b=h+(g<<3)+4|0;a[f+(g*3|0)>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;g=g+1|0}while((g|0)!=(p|0))}k=k+1|0;if((k|0)==(q|0))break;else{f=f+l|0;h=h+m|0}}i=r;return c|0}else if((c|0)==9){c=yI(p,q,24,16711680,65280,255)|0;if(!c){q=0;i=r;return q|0}jJ(c,b)|0;l=OI(b)|0;m=OI(c)|0;h=QI(b)|0;f=QI(c)|0;if((q|0)<=0){q=c;i=r;return q|0}j=(p|0)>0;k=0;while(1){if(j){g=0;do{b=h+(g*6|0)|0;a[f+(g*3|0)+2>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;b=h+(g*6|0)+2|0;a[f+(g*3|0)+1>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;b=h+(g*6|0)+4|0;a[f+(g*3|0)>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;g=g+1|0}while((g|0)!=(p|0))}k=k+1|0;if((k|0)==(q|0))break;else{f=f+m|0;h=h+l|0}}i=r;return c|0}else if((c|0)==1){if((f|0)==24){q=DI(b)|0;i=r;return q|0}c=yI(p,q,24,16711680,65280,255)|0;if(!c){q=0;i=r;return q|0}jJ(c,b)|0;switch(f|0){case 32:{if((q|0)<=0){q=c;i=r;return q|0}k=(p|0)>0;j=0;do{g=$J(c,j)|0;f=$J(b,j)|0;if(k){h=0;while(1){a[g>>0]=a[f>>0]|0;a[g+1>>0]=a[f+1>>0]|0;a[g+2>>0]=a[f+2>>0]|0;h=h+1|0;if((h|0)==(p|0))break;else{f=f+4|0;g=g+3|0}}}j=j+1|0}while((j|0)!=(q|0));i=r;return c|0}case 1:{if((q|0)<=0){q=c;i=r;return q|0}if((p|0)>0)k=0;else{f=0;do{$J(c,f)|0;$J(b,f)|0;f=f+1|0}while((f|0)!=(q|0));i=r;return c|0}do{f=$J(c,k)|0;g=$J(b,k)|0;h=VI(b)|0;j=0;while(1){o=((d[g+(j>>3)>>0]|0)&128>>>(j&7)|0)!=0&1;a[f>>0]=a[h+(o<<2)>>0]|0;a[f+1>>0]=a[h+(o<<2)+1>>0]|0;a[f+2>>0]=a[h+(o<<2)+2>>0]|0;j=j+1|0;if((j|0)==(p|0))break;else f=f+3|0}k=k+1|0}while((k|0)!=(q|0));i=r;return c|0}case 16:{if((q|0)<=0){q=c;i=r;return q|0}m=(p|0)>0;n=0;do{if(((JI(b)|0)==63488?(KI(b)|0)==2016:0)?(LI(b)|0)==31:0){h=$J(c,n)|0;g=$J(b,n)|0;if(m){f=0;while(1){o=g+(f<<1)|0;a[h+2>>0]=((((e[o>>1]|0)>>>11)*255|0)>>>0)/31|0;a[h+1>>0]=((((e[o>>1]|0)>>>5&63)*255|0)>>>0)/63|0;a[h>>0]=((((e[o>>1]|0)&31)*255|0)>>>0)/31|0;f=f+1|0;if((f|0)==(p|0))break;else h=h+3|0}}}else l=37;if((l|0)==37?(l=0,k=$J(c,n)|0,j=$J(b,n)|0,m):0){h=k;f=0;while(1){o=j+(f<<1)|0;a[h+2>>0]=((((e[o>>1]|0)>>>10&31)*255|0)>>>0)/31|0;a[h+1>>0]=((((e[o>>1]|0)>>>5&31)*255|0)>>>0)/31|0;a[h>>0]=((((e[o>>1]|0)&31)*255|0)>>>0)/31|0;f=f+1|0;if((f|0)==(p|0))break;else h=h+3|0}}n=n+1|0}while((n|0)!=(q|0));i=r;return c|0}case 8:{if((q|0)<=0){q=c;i=r;return q|0}g=(p|0)>0;l=0;do{h=$J(c,l)|0;k=$J(b,l)|0;j=VI(b)|0;if(g){f=0;while(1){o=k+f|0;a[h>>0]=a[j+((d[o>>0]|0)<<2)>>0]|0;a[h+1>>0]=a[j+((d[o>>0]|0)<<2)+1>>0]|0;a[h+2>>0]=a[j+((d[o>>0]|0)<<2)+2>>0]|0;f=f+1|0;if((f|0)==(p|0))break;else h=h+3|0}}l=l+1|0}while((l|0)!=(q|0));i=r;return c|0}case 4:{if((q|0)<=0){q=c;i=r;return q|0}if((p|0)>0)o=0;else{f=0;do{$J(c,f)|0;$J(b,f)|0;f=f+1|0}while((f|0)!=(q|0));i=r;return c|0}do{k=$J(c,o)|0;j=$J(b,o)|0;l=VI(b)|0;n=0;h=0;f=0;while(1){g=(h|0)!=0;m=j+f|0;h=d[m>>0]|0;if(g){a[k>>0]=a[l+((h&15)<<2)>>0]|0;a[k+1>>0]=a[l+(((d[m>>0]|0)&15)<<2)+1>>0]|0;a[k+2>>0]=a[l+(((d[m>>0]|0)&15)<<2)+2>>0]|0;f=f+1|0}else{a[k>>0]=a[l+(h>>>4<<2)>>0]|0;a[k+1>>0]=a[l+((d[m>>0]|0)>>>4<<2)+1>>0]|0;a[k+2>>0]=a[l+((d[m>>0]|0)>>>4<<2)+2>>0]|0}n=n+1|0;if((n|0)==(p|0))break;else{k=k+3|0;h=g&1^1}}o=o+1|0}while((o|0)!=(q|0));i=r;return c|0}default:{q=0;i=r;return q|0}}}else{q=0;i=r;return q|0}return 0}function vJ(b){b=b|0;var c=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;if(!(II(b)|0)){r=0;i=s;return r|0}h=HI(b)|0;c=EI(b)|0;if(!((c|0)==1|(c|0)==9|(c|0)==10)){r=0;i=s;return r|0}q=FI(b)|0;r=GI(b)|0;if((c|0)==1){if((h|0)==32){r=DI(b)|0;i=s;return r|0}c=yI(q,r,32,16711680,65280,255)|0;if(!c){r=0;i=s;return r|0}jJ(c,b)|0;g=ZI(b)|0;switch(h|0){case 24:{if((r|0)<=0){r=c;i=s;return r|0}k=(q|0)>0;j=0;do{g=$J(c,j)|0;f=$J(b,j)|0;if(k){h=0;while(1){a[g+2>>0]=a[f+2>>0]|0;a[g+1>>0]=a[f+1>>0]|0;a[g>>0]=a[f>>0]|0;a[g+3>>0]=-1;h=h+1|0;if((h|0)==(q|0))break;else{f=f+3|0;g=g+4|0}}}j=j+1|0}while((j|0)!=(r|0));i=s;return c|0}case 8:{f=(r|0)>0;if(!g){if(!f){r=c;i=s;return r|0}g=(q|0)>0;l=0;do{f=$J(c,l)|0;k=$J(b,l)|0;j=VI(b)|0;if(g){h=0;while(1){p=k+h|0;a[f>>0]=a[j+((d[p>>0]|0)<<2)>>0]|0;a[f+1>>0]=a[j+((d[p>>0]|0)<<2)+1>>0]|0;a[f+2>>0]=a[j+((d[p>>0]|0)<<2)+2>>0]|0;a[f+3>>0]=-1;h=h+1|0;if((h|0)==(q|0))break;else f=f+4|0}}l=l+1|0}while((l|0)!=(r|0));i=s;return c|0}if(!f){r=c;i=s;return r|0}g=(q|0)>0;o=0;do{h=$J(c,o)|0;n=$J(b,o)|0;k=VI(b)|0;j=_I(b)|0;l=aJ(b)|0;if(g){m=0;while(1){f=n+m|0;a[h>>0]=a[k+((d[f>>0]|0)<<2)>>0]|0;a[h+1>>0]=a[k+((d[f>>0]|0)<<2)+1>>0]|0;a[h+2>>0]=a[k+((d[f>>0]|0)<<2)+2>>0]|0;f=d[f>>0]|0;if((f|0)<(l|0))f=a[j+f>>0]|0;else f=-1;a[h+3>>0]=f;m=m+1|0;if((m|0)==(q|0))break;else h=h+4|0}}o=o+1|0}while((o|0)!=(r|0));i=s;return c|0}case 1:{f=(r|0)>0;if(!g){if(!f){r=c;i=s;return r|0}if((q|0)>0)k=0;else{f=0;do{$J(c,f)|0;$J(b,f)|0;f=f+1|0}while((f|0)!=(r|0));i=s;return c|0}do{f=$J(c,k)|0;g=$J(b,k)|0;h=VI(b)|0;j=0;while(1){p=((d[g+(j>>3)>>0]|0)&128>>>(j&7)|0)!=0&1;a[f>>0]=a[h+(p<<2)>>0]|0;a[f+1>>0]=a[h+(p<<2)+1>>0]|0;a[f+2>>0]=a[h+(p<<2)+2>>0]|0;a[f+3>>0]=-1;j=j+1|0;if((j|0)==(q|0))break;else f=f+4|0}k=k+1|0}while((k|0)!=(r|0));i=s;return c|0}if(!f){r=c;i=s;return r|0}if((q|0)>0)n=0;else{f=0;do{$J(c,f)|0;$J(b,f)|0;f=f+1|0}while((f|0)!=(r|0));i=s;return c|0}do{f=$J(c,n)|0;g=$J(b,n)|0;m=VI(b)|0;j=_I(b)|0;k=aJ(b)|0;l=0;while(1){h=((d[g+(l>>3)>>0]|0)&128>>>(l&7)|0)!=0&1;a[f>>0]=a[m+(h<<2)>>0]|0;a[f+1>>0]=a[m+(h<<2)+1>>0]|0;a[f+2>>0]=a[m+(h<<2)+2>>0]|0;if((h|0)<(k|0))h=a[j+h>>0]|0;else h=-1;a[f+3>>0]=h;l=l+1|0;if((l|0)==(q|0))break;else f=f+4|0}n=n+1|0}while((n|0)!=(r|0));i=s;return c|0}case 4:{f=(r|0)>0;if(g){if(f)f=0;else{r=c;i=s;return r|0}do{j=$J(c,f)|0;l=$J(b,f)|0;o=VI(b)|0;p=_I(b)|0;BT(j,l,q,o,p,aJ(b)|0);f=f+1|0}while((f|0)!=(r|0));i=s;return c|0}if(!f){r=c;i=s;return r|0}j=(q|0)>0;p=0;do{h=$J(c,p)|0;l=$J(b,p)|0;o=VI(b)|0;if(j){k=0;m=0;f=0;while(1){n=(m|0)!=0;m=l+f|0;g=d[m>>0]|0;if(n){a[h>>0]=a[o+((g&15)<<2)>>0]|0;a[h+1>>0]=a[o+(((d[m>>0]|0)&15)<<2)+1>>0]|0;a[h+2>>0]=a[o+(((d[m>>0]|0)&15)<<2)+2>>0]|0;f=f+1|0}else{a[h>>0]=a[o+(g>>>4<<2)>>0]|0;a[h+1>>0]=a[o+((d[m>>0]|0)>>>4<<2)+1>>0]|0;a[h+2>>0]=a[o+((d[m>>0]|0)>>>4<<2)+2>>0]|0}a[h+3>>0]=-1;k=k+1|0;if((k|0)==(q|0))break;else{h=h+4|0;m=n&1^1}}}p=p+1|0}while((p|0)!=(r|0));i=s;return c|0}case 16:{if((r|0)<=0){r=c;i=s;return r|0}m=(q|0)>0;n=0;do{if(((JI(b)|0)==63488?(KI(b)|0)==2016:0)?(LI(b)|0)==31:0){h=$J(c,n)|0;g=$J(b,n)|0;if(m){f=0;while(1){p=g+(f<<1)|0;a[h+2>>0]=((((e[p>>1]|0)>>>11)*255|0)>>>0)/31|0;a[h+1>>0]=((((e[p>>1]|0)>>>5&63)*255|0)>>>0)/63|0;a[h>>0]=((((e[p>>1]|0)&31)*255|0)>>>0)/31|0;a[h+3>>0]=-1;f=f+1|0;if((f|0)==(q|0))break;else h=h+4|0}}}else l=56;if((l|0)==56?(l=0,k=$J(c,n)|0,j=$J(b,n)|0,m):0){h=k;f=0;while(1){p=j+(f<<1)|0;a[h+2>>0]=((((e[p>>1]|0)>>>10&31)*255|0)>>>0)/31|0;a[h+1>>0]=((((e[p>>1]|0)>>>5&31)*255|0)>>>0)/31|0;a[h>>0]=((((e[p>>1]|0)&31)*255|0)>>>0)/31|0;a[h+3>>0]=-1;f=f+1|0;if((f|0)==(q|0))break;else h=h+4|0}}n=n+1|0}while((n|0)!=(r|0));i=s;return c|0}default:{r=0;i=s;return r|0}}}else if((c|0)==10){c=yI(q,r,32,16711680,65280,255)|0;if(!c){r=0;i=s;return r|0}jJ(c,b)|0;m=OI(b)|0;l=OI(c)|0;h=QI(b)|0;f=QI(c)|0;if((r|0)<=0){r=c;i=s;return r|0}j=(q|0)>0;k=0;while(1){if(j){g=0;do{b=h+(g<<3)|0;a[f+(g<<2)+2>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;b=h+(g<<3)+2|0;a[f+(g<<2)+1>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;b=h+(g<<3)+4|0;a[f+(g<<2)>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;b=h+(g<<3)+6|0;a[f+(g<<2)+3>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;g=g+1|0}while((g|0)!=(q|0))}k=k+1|0;if((k|0)==(r|0))break;else{f=f+l|0;h=h+m|0}}i=s;return c|0}else if((c|0)==9){c=yI(q,r,32,16711680,65280,255)|0;if(!c){r=0;i=s;return r|0}jJ(c,b)|0;l=OI(b)|0;m=OI(c)|0;h=QI(b)|0;f=QI(c)|0;if((r|0)<=0){r=c;i=s;return r|0}j=(q|0)>0;k=0;while(1){if(j){g=0;do{b=h+(g*6|0)|0;a[f+(g<<2)+2>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;b=h+(g*6|0)+2|0;a[f+(g<<2)+1>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;b=h+(g*6|0)+4|0;a[f+(g<<2)>>0]=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>8;a[f+(g<<2)+3>>0]=-1;g=g+1|0}while((g|0)!=(q|0))}k=k+1|0;if((k|0)==(r|0))break;else{f=f+m|0;h=h+l|0}}i=s;return c|0}else{r=0;i=s;return r|0}return 0}function wJ(c){c=c|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;if(!(II(c)|0)){c=0;i=o;return c|0}f=EI(c)|0;if((f|0)==1)if((HI(c)|0)!=24?(HI(c)|0)!=32:0){e=uJ(c)|0;if(!e){c=0;i=o;return c|0}}else e=c;else if((f|0)==9){c=DI(c)|0;i=o;return c|0}else if((f|0)==10|(f|0)==2)e=c;else{c=0;i=o;return c|0}l=FI(e)|0;m=GI(e)|0;n=zI(9,l,m,8,0,0,0)|0;if(!n){if((e|0)==(c|0)){c=0;i=o;return c|0}AI(e);c=0;i=o;return c|0}jJ(n,e)|0;a:do if((f|0)==2){if(m){if(!l){f=0;while(1){$J(e,f)|0;$J(n,f)|0;f=f+1|0;if((f|0)==(m|0))break a}}else j=0;do{f=$J(e,j)|0;g=$J(n,j)|0;h=0;do{p=f+(h<<1)|0;k=b[p>>1]|0;q=g+(h*6|0)|0;a[q>>0]=k;a[q+1>>0]=k>>8;q=b[p>>1]|0;k=g+(h*6|0)+2|0;a[k>>0]=q;a[k+1>>0]=q>>8;p=b[p>>1]|0;k=g+(h*6|0)+4|0;a[k>>0]=p;a[k+1>>0]=p>>8;h=h+1|0}while((h|0)!=(l|0));j=j+1|0}while((j|0)!=(m|0))}}else if((f|0)==1){h=PI(e)|0;h=(h>>>0)/((FI(e)|0)>>>0)|0;if(m){if(!l){f=0;while(1){$J(e,f)|0;$J(n,f)|0;f=f+1|0;if((f|0)==(m|0))break a}}else k=0;do{g=$J(e,k)|0;f=$J(n,k)|0;j=0;while(1){p=(d[g+2>>0]|0)<<8&65535;q=f+(j*6|0)|0;a[q>>0]=p;a[q+1>>0]=p>>8;q=(d[g+1>>0]|0)<<8&65535;p=f+(j*6|0)+2|0;a[p>>0]=q;a[p+1>>0]=q>>8;p=(d[g>>0]|0)<<8&65535;q=f+(j*6|0)+4|0;a[q>>0]=p;a[q+1>>0]=p>>8;j=j+1|0;if((j|0)==(l|0))break;else g=g+h|0}k=k+1|0}while((k|0)!=(m|0))}}else if((f|0)==10?(m|0)!=0:0){if(!l){f=0;while(1){$J(e,f)|0;$J(n,f)|0;f=f+1|0;if((f|0)==(m|0))break a}}else j=0;do{f=$J(e,j)|0;g=$J(n,j)|0;h=0;do{p=f+(h<<3)|0;p=d[p>>0]|d[p+1>>0]<<8;q=g+(h*6|0)|0;a[q>>0]=p;a[q+1>>0]=p>>8;q=f+(h<<3)+2|0;q=d[q>>0]|d[q+1>>0]<<8;p=g+(h*6|0)+2|0;a[p>>0]=q;a[p+1>>0]=q>>8;p=f+(h<<3)+4|0;p=d[p>>0]|d[p+1>>0]<<8;q=g+(h*6|0)+4|0;a[q>>0]=p;a[q+1>>0]=p>>8;h=h+1|0}while((h|0)!=(l|0));j=j+1|0}while((j|0)!=(m|0))}while(0);if((e|0)==(c|0)){q=n;i=o;return q|0}AI(e);q=n;i=o;return q|0}function xJ(){var a=0,b=0;a=i;i=i+16|0;b=a;c[b>>2]=3;c[b+4>>2]=17;c[b+8>>2]=0;fga(310776,310792,b)|0;i=a;return 310776}function yJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+576|0;r=s+64|0;n=s;o=s+16|0;p=s+32|0;q=s+48|0;if(!d){i=s;return}if(!((c[77702]|0)!=0|(c[77704]|0)!=0)){i=s;return}Cga(r|0,0,512)|0;c[n>>2]=e;j=Dga(d|0)|0;j=j>>>0>512?512:j;if((j|0)>0){l=o+1|0;m=p+1|0;k=q+1|0;g=0;f=0;do{e=a[d+g>>0]|0;a:do if(e<<24>>24==37){h=g+1|0;if((h|0)>=(j|0)){a[r+f>>0]=37;e=g;f=f+1|0;break}switch(Jfa(a[d+h>>0]|0)|0){case 37:{a[r+f>>0]=37;e=g;f=f+1|0;break a}case 120:{g=c[n>>2]|0;e=c[g>>2]|0;c[n>>2]=g+4;if((e|0)<0){a[q>>0]=45;a[(CT(0-e|0,k,16)|0)>>0]=0}else a[(CT(e,q,16)|0)>>0]=0;Ega(r|0,q|0)|0;e=h;f=(Dga(q|0)|0)+f|0;break a}case 100:case 105:{g=c[n>>2]|0;e=c[g>>2]|0;c[n>>2]=g+4;if((e|0)<0){a[p>>0]=45;a[(CT(0-e|0,m,10)|0)>>0]=0}else a[(CT(e,p,10)|0)>>0]=0;Ega(r|0,p|0)|0;e=h;f=(Dga(p|0)|0)+f|0;break a}case 111:{g=c[n>>2]|0;e=c[g>>2]|0;c[n>>2]=g+4;if((e|0)<0){a[o>>0]=45;a[(CT(0-e|0,l,8)|0)>>0]=0}else a[(CT(e,o,8)|0)>>0]=0;Ega(r|0,o|0)|0;e=h;f=(Dga(o|0)|0)+f|0;break a}case 115:{e=c[n>>2]|0;g=c[e>>2]|0;c[n>>2]=e+4;Ega(r|0,g|0)|0;e=h;f=(Dga(g|0)|0)+f|0;break a}default:{e=g;break a}}}else{a[r+f>>0]=e;e=g;f=f+1|0}while(0);g=e+1|0}while((g|0)<(j|0))}e=c[77702]|0;if(e)Jd[e&255](b,r);e=c[77704]|0;if(!e){i=s;return}Jd[e&255](b,r);i=s;return}function zJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;d=Na(a|0,b|0,c|0,d|0)|0;i=e;return d|0}function AJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;d=$b(a|0,b|0,c|0,d|0)|0;i=e;return d|0}function BJ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;c=yc(a|0,b|0,c|0)|0;i=d;return c|0}function CJ(a){a=a|0;var b=0;b=i;a=ob(a|0)|0;i=b;return a|0}function DJ(b){b=b|0;var c=0;a[b>>0]=120;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;c=b+8|0;a[c>>0]=157;a[c+1>>0]=0;a[c+2>>0]=0;a[c+3>>0]=0;c=b+12|0;a[c>>0]=160;a[c+1>>0]=0;a[c+2>>0]=0;a[c+3>>0]=0;b=b+4|0;a[b>>0]=121;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;return}function EJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;e=c[e>>2]|0;if(!d){m=0;i=n;return m|0}k=e+4|0;l=e+16|0;j=e+12|0;h=a;g=c[l>>2]|0;e=0;while(1){a=c[k>>2]|0;f=a-g|0;if((f|0)<(b|0))break;Aga(h|0,(c[j>>2]|0)+g|0,b|0)|0;a=(c[l>>2]|0)+b|0;c[l>>2]=a;e=e+1|0;if(e>>>0>>0){h=h+b|0;g=a}else{m=8;break}}if((m|0)==8){i=n;return e|0}if((f|0)>0){Aga(h|0,(c[j>>2]|0)+g|0,f|0)|0;a=c[k>>2]|0}c[l>>2]=a;m=e;i=n;return m|0}function FJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;k=c[e>>2]|0;l=k+16|0;f=c[l>>2]|0;j=ea(d,b)|0;g=k+8|0;e=c[g>>2]|0;h=k+12|0;a:do if((f+j|0)>=(e|0)){while(1){if(e&1073741824)if((e|0)==2147483647){e=0;b=10;break}else b=2147483647;else b=(e|0)==0?4096:e<<1;e=Dfa(c[h>>2]|0,b)|0;if(!e){e=0;b=10;break}c[h>>2]=e;c[g>>2]=b;f=c[l>>2]|0;if((f+j|0)<(b|0))break a;else e=b}if((b|0)==10){i=m;return e|0}}else e=c[h>>2]|0;while(0);Aga(e+f|0,a|0,j|0)|0;b=(c[l>>2]|0)+j|0;c[l>>2]=b;e=k+4|0;if((b|0)<=(c[e>>2]|0)){i=m;return d|0}c[e>>2]=b;i=m;return d|0}function GJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;e=c[a>>2]|0;if((d|0)==2){a=(c[e+4>>2]|0)+b|0;if((a|0)>-1){c[e+16>>2]=a;a=0}else a=-1}else if((d|0)==1){e=e+16|0;a=(c[e>>2]|0)+b|0;if((a|0)>-1){c[e>>2]=a;a=0}else a=-1}else if((b|0)>-1){c[e+16>>2]=b;a=0}else a=-1;i=f;return a|0}function HJ(a){a=a|0;return c[(c[a>>2]|0)+16>>2]|0}function IJ(b){b=b|0;var c=0;a[b>>0]=122;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;c=b+8|0;a[c>>0]=158;a[c+1>>0]=0;a[c+2>>0]=0;a[c+3>>0]=0;c=b+12|0;a[c>>0]=161;a[c+1>>0]=0;a[c+2>>0]=0;a[c+3>>0]=0;b=b+4|0;a[b>>0]=123;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;return}function JJ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=i;a:do if((b|0)!=0?(e=dK()|0,(e|0)>0):0){c=0;while(1){d=c+1|0;if(iK(c,a,b)|0)break;if((d|0)<(e|0))c=d;else{c=-1;break a}}if((c|0)==18?(iK(34,a,b)|0)!=0:0){c=34;break}}else c=-1;while(0);i=f;return c|0}function KJ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=i;i=i+16|0;e=f;DJ(e);d=Pc(a|0,310864)|0;if(!d){e=-1;i=f;return e|0}a=dK()|0;a:do if((a|0)>0){b=0;while(1){c=b+1|0;if(iK(b,e,d)|0)break;if((c|0)<(a|0))b=c;else{b=-1;break a}}if((b|0)==18?(iK(34,e,d)|0)!=0:0){b=34;break}}else b=-1;while(0);Ac(d|0)|0;e=b;i=f;return e|0}function LJ(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0;h=i;if(!b){g=0;i=h;return g|0}g=Afa(12)|0;if(!g){g=0;i=h;return g|0}c[g>>2]=a;f=g+4|0;c[f>>2]=b;a=ty(1048576,(e|0)!=0&1)|0;if(!a){Bfa(g);g=0;i=h;return g|0}else{Hy(a,g,0);b=(c[g>>2]|0)+12|0;b=Ld[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&511](c[f>>2]|0)|0;e=(c[g>>2]|0)+8|0;Od[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](c[f>>2]|0,0,2)|0;e=(c[g>>2]|0)+12|0;e=(Ld[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&511](c[f>>2]|0)|0)-b|0;j=(c[g>>2]|0)+8|0;Od[(d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24)&255](c[f>>2]|0,b,0)|0;Iy(a,e,0);Dy(a,159);Fy(a,160);Gy(a,161);Ey(a,162);c[g+8>>2]=a;i=h;return g|0}return 0}function MJ(a){a=a|0;var b=0,d=0;d=i;if(!a){i=d;return}b=c[a+8>>2]|0;if(b)Cy(b);Bfa(a);i=d;return}function NJ(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=i;i=i+16|0;l=H;D=e+24|0;g=c[D>>2]|0;E=c[g+8>>2]|0;G=c[g+40>>2]|0;k=1<>G;G=(c[g+12>>2]|0)+-1+k>>G;k=c[e+16>>2]|0;e=k+-1|0;h=0;while(1){if((h|0)>=(e|0)){e=1;break}j=h;h=h+1|0;if((c[g+(j*52|0)>>2]|0)!=(c[g+(h*52|0)>>2]|0)){e=0;break}if((c[g+(j*52|0)+4>>2]|0)!=(c[g+(h*52|0)+4>>2]|0)){e=0;break}if((c[g+(j*52|0)+24>>2]|0)!=(c[g+(h*52|0)+24>>2]|0)){e=0;break}}do if(!(e&(((k&-3|0)==1|(k|0)==4)&1)))if(!k){H=kc(4)|0;c[H>>2]=311048;xd(H|0,378680,0)}else{c[l>>2]=k;yJ(d,310872,l);g=c[D>>2]|0;e=1;break}else e=k;while(0);g=c[g+24>>2]|0;do if(g>>>0<9)if((e|0)==3){C=xI(f,F,G,24,16711680,65280,255)|0;break}else if((e|0)==4){C=xI(f,F,G,32,16711680,65280,255)|0;break}else if((e|0)==1){C=xI(f,F,G,8,0,0,0)|0;break}else{H=kc(4)|0;c[H>>2]=310960;xd(H|0,378680,0)}else{if(g>>>0>=17){H=kc(4)|0;c[H>>2]=311048;xd(H|0,378680,0)}if((e|0)==1){C=wI(f,2,F,G,8,0,0,0)|0;break}else if((e|0)==4){C=wI(f,10,F,G,8,0,0,0)|0;break}else if((e|0)==3){C=wI(f,9,F,G,8,0,0,0)|0;break}else{H=kc(4)|0;c[H>>2]=310960;xd(H|0,378680,0)}}while(0);if(!C){H=kc(4)|0;c[H>>2]=310960;xd(H|0,378680,0)}if(f){i=H;return C|0}g=c[(c[D>>2]|0)+24>>2]|0;if(g>>>0<9)if((e|0)==3){if((G|0)<=0){i=H;return C|0}o=G+-1|0;if((F|0)>0){d=0;n=0}else{g=0;do{$J(C,o-g|0)|0;g=g+1|0}while((g|0)<(G|0));i=H;return C|0}while(1){m=$J(C,o-n|0)|0;k=d;l=0;while(1){j=(ea((k>>>0)/(F>>>0)|0,E)|0)+((k>>>0)%(F>>>0)|0)|0;e=c[D>>2]|0;if(!(c[e+32>>2]|0))h=0;else h=1<<(c[e+24>>2]|0)+-1;if(!(c[e+84>>2]|0))g=0;else g=1<<(c[e+76>>2]|0)+-1;g=g+(c[(c[e+96>>2]|0)+(j<<2)>>2]|0)|0;if(!(c[e+136>>2]|0))f=0;else f=1<<(c[e+128>>2]|0)+-1;B=f+(c[(c[e+148>>2]|0)+(j<<2)>>2]|0)|0;a[m+2>>0]=h+(c[(c[e+44>>2]|0)+(j<<2)>>2]|0);a[m+1>>0]=g;a[m>>0]=B;l=l+1|0;if((l|0)==(F|0))break;else{m=m+3|0;k=k+1|0}}n=n+1|0;if((n|0)>=(G|0))break;else d=F+d|0}i=H;return C|0}else if((e|0)==1){g=VI(C)|0;e=0;do{B=e&255;a[g+(e<<2)+2>>0]=B;a[g+(e<<2)+1>>0]=B;a[g+(e<<2)>>0]=B;e=e+1|0}while((e|0)!=256);if((G|0)<=0){i=H;return C|0}m=G+-1|0;if((F|0)>0){d=0;f=0}else{g=0;do{$J(C,m-g|0)|0;g=g+1|0}while((g|0)<(G|0));i=H;return C|0}while(1){g=$J(C,m-f|0)|0;k=d;l=0;while(1){j=(ea((k>>>0)/(F>>>0)|0,E)|0)+((k>>>0)%(F>>>0)|0)|0;e=c[D>>2]|0;if(!(c[e+32>>2]|0))h=0;else h=1<<(c[e+24>>2]|0)+-1;a[g+l>>0]=h+(c[(c[e+44>>2]|0)+(j<<2)>>2]|0);l=l+1|0;if((l|0)==(F|0))break;else k=k+1|0}f=f+1|0;if((f|0)>=(G|0))break;else d=F+d|0}i=H;return C|0}else if((e|0)==4){if((G|0)<=0){i=H;return C|0}o=G+-1|0;p=(F|0)>0;g=0;q=0;do{e=$J(C,o-q|0)|0;if(p){l=g;n=0;while(1){m=(ea((l>>>0)/(F>>>0)|0,E)|0)+((l>>>0)%(F>>>0)|0)|0;d=c[D>>2]|0;if(!(c[d+32>>2]|0))k=0;else k=1<<(c[d+24>>2]|0)+-1;if(!(c[d+84>>2]|0))f=0;else f=1<<(c[d+76>>2]|0)+-1;h=f+(c[(c[d+96>>2]|0)+(m<<2)>>2]|0)|0;if(!(c[d+136>>2]|0))f=0;else f=1<<(c[d+128>>2]|0)+-1;f=f+(c[(c[d+148>>2]|0)+(m<<2)>>2]|0)|0;if(!(c[d+188>>2]|0))j=0;else j=1<<(c[d+180>>2]|0)+-1;B=j+(c[(c[d+200>>2]|0)+(m<<2)>>2]|0)|0;a[e+2>>0]=k+(c[(c[d+44>>2]|0)+(m<<2)>>2]|0);a[e+1>>0]=h;a[e>>0]=f;a[e+3>>0]=B;n=n+1|0;if((n|0)==(F|0))break;else{e=e+4|0;l=l+1|0}}g=F+g|0}q=q+1|0}while((q|0)<(G|0));i=H;return C|0}else{i=H;return C|0}if(g>>>0>=17){i=H;return C|0}if((e|0)==3){if((G|0)<=0){i=H;return C|0}v=G+-1|0;w=(F|0)>0;g=0;x=0;do{e=$J(C,v-x|0)|0;if(w){q=c[D>>2]|0;h=c[q+44>>2]|0;m=(c[q+32>>2]|0)==0;d=c[q+96>>2]|0;k=(c[q+84>>2]|0)==0;l=c[q+148>>2]|0;n=(c[q+136>>2]|0)==0;o=q+128|0;p=q+76|0;q=q+24|0;t=g;u=0;while(1){r=(ea((t>>>0)/(F>>>0)|0,E)|0)+((t>>>0)%(F>>>0)|0)|0;if(m)s=0;else s=1<<(c[q>>2]|0)+-1;if(k)f=0;else f=1<<(c[p>>2]|0)+-1;f=f+(c[d+(r<<2)>>2]|0)|0;if(n)j=0;else j=1<<(c[o>>2]|0)+-1;A=j+(c[l+(r<<2)>>2]|0)|0;B=s+(c[h+(r<<2)>>2]|0)&65535;z=e+(u*6|0)|0;a[z>>0]=B;a[z+1>>0]=B>>8;z=f&65535;B=e+(u*6|0)+2|0;a[B>>0]=z;a[B+1>>0]=z>>8;A=A&65535;B=e+(u*6|0)+4|0;a[B>>0]=A;a[B+1>>0]=A>>8;u=u+1|0;if((u|0)==(F|0))break;else t=t+1|0}g=F+g|0}x=x+1|0}while((x|0)<(G|0));i=H;return C|0}else if((e|0)==1){if((G|0)<=0){i=H;return C|0}n=G+-1|0;o=(F|0)>0;g=0;p=0;do{f=$J(C,n-p|0)|0;if(o){h=c[D>>2]|0;j=c[h+44>>2]|0;e=(c[h+32>>2]|0)==0;h=h+24|0;k=g;l=0;while(1){m=c[j+((ea((k>>>0)/(F>>>0)|0,E)|0)+((k>>>0)%(F>>>0)|0)<<2)>>2]|0;if(e)d=0;else d=1<<(c[h>>2]|0)+-1;b[f+(l<<1)>>1]=d+m;l=l+1|0;if((l|0)==(F|0))break;else k=k+1|0}g=F+g|0}p=p+1|0}while((p|0)<(G|0));i=H;return C|0}else if((e|0)==4){if((G|0)<=0){i=H;return C|0}z=G+-1|0;A=(F|0)>0;g=0;B=0;do{h=$J(C,z-B|0)|0;if(A){u=c[D>>2]|0;m=c[u+44>>2]|0;d=(c[u+32>>2]|0)==0;k=c[u+96>>2]|0;l=(c[u+84>>2]|0)==0;n=c[u+148>>2]|0;o=(c[u+136>>2]|0)==0;p=c[u+200>>2]|0;q=(c[u+188>>2]|0)==0;r=u+180|0;s=u+128|0;t=u+76|0;u=u+24|0;x=g;y=0;while(1){v=(ea((x>>>0)/(F>>>0)|0,E)|0)+((x>>>0)%(F>>>0)|0)|0;if(d)w=0;else w=1<<(c[u>>2]|0)+-1;if(l)f=0;else f=1<<(c[t>>2]|0)+-1;e=f+(c[k+(v<<2)>>2]|0)|0;if(o)f=0;else f=1<<(c[s>>2]|0)+-1;f=f+(c[n+(v<<2)>>2]|0)|0;if(q)j=0;else j=1<<(c[r>>2]|0)+-1;j=j+(c[p+(v<<2)>>2]|0)|0;w=w+(c[m+(v<<2)>>2]|0)&65535;v=h+(y<<3)|0;a[v>>0]=w;a[v+1>>0]=w>>8;v=e&65535;w=h+(y<<3)+2|0;a[w>>0]=v;a[w+1>>0]=v>>8;w=f&65535;v=h+(y<<3)+4|0;a[v>>0]=w;a[v+1>>0]=w>>8;v=j&65535;w=h+(y<<3)+6|0;a[w>>0]=v;a[w+1>>0]=v>>8;y=y+1|0;if((y|0)==(F|0))break;else x=x+1|0}g=F+g|0}B=B+1|0}while((B|0)<(G|0));i=H;return C|0}else{i=H;return C|0}return 0}function OJ(a,b,f){a=a|0;b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;i=i+144|0;l=u;s=FI(b)|0;t=GI(b)|0;a=EI(b)|0;do if((a|0)==1){a=TI(b)|0;if((a|0)==2){k=(HI(b)|0)==32;g=1;k=k?4:3;m=8;break}else if((a|0)==4){g=1;k=4;m=8;break}else if((a|0)==1){g=2;k=1;m=8;break}else{b=0;i=u;return b|0}}else if((a|0)==10){g=1;k=4;m=16}else if((a|0)==9){g=1;k=3;m=16}else if((a|0)==2){g=2;k=1;m=16}else{b=0;i=u;return b|0}while(0);Cga(l|0,0,144)|0;n=f+18188|0;a=c[n>>2]|0;o=f+18192|0;j=c[o>>2]|0;h=0;do{c[l+(h*36|0)>>2]=a;c[l+(h*36|0)+4>>2]=j;c[l+(h*36|0)+8>>2]=s;c[l+(h*36|0)+12>>2]=t;c[l+(h*36|0)+24>>2]=m;c[l+(h*36|0)+28>>2]=m;c[l+(h*36|0)+32>>2]=0;h=h+1|0}while((h|0)<(k|0));a=hz(k,l,g)|0;if(!a){u=kc(4)|0;c[u>>2]=310960;xd(u|0,378680,0)}r=c[f+18180>>2]|0;c[a>>2]=r;q=c[f+18184>>2]|0;c[a+4>>2]=q;c[a+8>>2]=r+1+(ea(c[n>>2]|0,s+-1|0)|0);r=t+-1|0;c[a+12>>2]=q+1+(ea(c[o>>2]|0,r)|0);if((m|0)==16)if((k|0)==1){if((t|0)<=0){b=a;i=u;return b|0}m=(s|0)>0;n=a+24|0;g=0;o=0;do{h=$J(b,r-o|0)|0;if(m){j=c[(c[n>>2]|0)+44>>2]|0;k=g;l=0;while(1){c[j+(k<<2)>>2]=e[h+(l<<1)>>1];l=l+1|0;if((l|0)==(s|0))break;else k=k+1|0}g=s+g|0}o=o+1|0}while((o|0)<(t|0));i=u;return a|0}else if((k|0)==3){if((t|0)<=0){b=a;i=u;return b|0}m=(s|0)>0;f=a+24|0;g=0;p=0;do{n=$J(b,r-p|0)|0;if(m){o=c[f>>2]|0;j=c[o+44>>2]|0;h=c[o+96>>2]|0;o=c[o+148>>2]|0;l=g;k=0;while(1){q=n+(k*6|0)|0;c[j+(l<<2)>>2]=(d[q>>0]|d[q+1>>0]<<8)&65535;q=n+(k*6|0)+2|0;c[h+(l<<2)>>2]=(d[q>>0]|d[q+1>>0]<<8)&65535;q=n+(k*6|0)+4|0;c[o+(l<<2)>>2]=(d[q>>0]|d[q+1>>0]<<8)&65535;k=k+1|0;if((k|0)==(s|0))break;else l=l+1|0}g=s+g|0}p=p+1|0}while((p|0)<(t|0));i=u;return a|0}else if((k|0)==4){if((t|0)<=0){b=a;i=u;return b|0}f=(s|0)>0;p=a+24|0;g=0;q=0;do{n=$J(b,r-q|0)|0;if(f){l=c[p>>2]|0;j=c[l+44>>2]|0;h=c[l+96>>2]|0;o=c[l+148>>2]|0;l=c[l+200>>2]|0;k=g;m=0;while(1){v=n+(m<<3)|0;c[j+(k<<2)>>2]=(d[v>>0]|d[v+1>>0]<<8)&65535;v=n+(m<<3)+2|0;c[h+(k<<2)>>2]=(d[v>>0]|d[v+1>>0]<<8)&65535;v=n+(m<<3)+4|0;c[o+(k<<2)>>2]=(d[v>>0]|d[v+1>>0]<<8)&65535;v=n+(m<<3)+6|0;c[l+(k<<2)>>2]=(d[v>>0]|d[v+1>>0]<<8)&65535;m=m+1|0;if((m|0)==(s|0))break;else k=k+1|0}g=s+g|0}q=q+1|0}while((q|0)<(t|0));i=u;return a|0}else{v=a;i=u;return v|0}else if((m|0)==8)if((k|0)==4){if((t|0)<=0){v=a;i=u;return v|0}f=(s|0)>0;p=a+24|0;g=0;q=0;do{n=$J(b,r-q|0)|0;if(f){l=c[p>>2]|0;k=c[l+200>>2]|0;m=c[l+44>>2]|0;o=c[l+96>>2]|0;l=c[l+148>>2]|0;j=g;h=0;while(1){c[m+(j<<2)>>2]=d[n+2>>0];c[o+(j<<2)>>2]=d[n+1>>0];c[l+(j<<2)>>2]=d[n>>0];c[k+(j<<2)>>2]=d[n+3>>0];h=h+1|0;if((h|0)==(s|0))break;else{n=n+4|0;j=j+1|0}}g=s+g|0}q=q+1|0}while((q|0)<(t|0));i=u;return a|0}else if((k|0)==3){if((t|0)<=0){v=a;i=u;return v|0}m=(s|0)>0;f=a+24|0;g=0;p=0;do{j=$J(b,r-p|0)|0;if(m){k=c[f>>2]|0;o=c[k+148>>2]|0;l=c[k+44>>2]|0;k=c[k+96>>2]|0;n=g;h=0;while(1){c[l+(n<<2)>>2]=d[j+2>>0];c[k+(n<<2)>>2]=d[j+1>>0];c[o+(n<<2)>>2]=d[j>>0];h=h+1|0;if((h|0)==(s|0))break;else{j=j+3|0;n=n+1|0}}g=s+g|0}p=p+1|0}while((p|0)<(t|0));i=u;return a|0}else if((k|0)==1){if((t|0)<=0){v=a;i=u;return v|0}n=(s|0)>0;m=a+24|0;g=0;o=0;do{j=$J(b,r-o|0)|0;if(n){h=c[(c[m>>2]|0)+44>>2]|0;k=g;l=0;while(1){c[h+(k<<2)>>2]=d[j+l>>0];l=l+1|0;if((l|0)==(s|0))break;else k=k+1|0}g=s+g|0}o=o+1|0}while((o|0)<(t|0));i=u;return a|0}else{v=a;i=u;return v|0}else{v=a;i=u;return v|0}return 0}function PJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;d=Afa(4)|0;if(!d){a=0;i=f;return a|0}e=Afa(20)|0;c[d>>2]=e;if(!e){Bfa(d);a=0;i=f;return a|0};c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;if((a|0)!=0&(b|0)!=0){c[e>>2]=0;c[e+12>>2]=a;c[e+4>>2]=b;c[e+8>>2]=b;a=d;i=f;return a|0}else{c[e>>2]=1;a=d;i=f;return a|0}return 0}function QJ(a){a=a|0;var b=0,d=0;d=i;if((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0){if(c[b>>2]|0)Bfa(c[b+12>>2]|0);Bfa(b);Bfa(a)}i=d;return}function RJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;if((b|0)!=0?(c[b>>2]|0)!=0:0){IJ(e);a=cK(a,e,b,d)|0}else a=0;i=f;return a|0}function SJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+32|0;f=g+8|0;if(!d){d=0;i=g;return d|0}IJ(f);if((c[c[d>>2]>>2]|0)==1){d=fK(a,b,f,d,e)|0;i=g;return d|0}else{yJ(a,311072,g);d=0;i=g;return d|0}return 0}function TJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!a){a=0;i=e;return a|0}a=c[a>>2]|0;c[b>>2]=c[a+12>>2];c[d>>2]=c[a+4>>2];a=1;i=e;return a|0}function UJ(a,b){a=a|0;b=b|0;var c=0,d=0;d=i;i=i+16|0;c=d;IJ(c);if(!a){a=-1;i=d;return a|0}a=JJ(c,a,b)|0;i=d;return a|0}function VJ(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,f=0;f=i;i=i+16|0;e=f;IJ(e);if(!a){c=0;i=f;return c|0}e=e+8|0;c=(Od[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](a,b,c)|0)==0&1;i=f;return c|0}function WJ(a){a=a|0;var b=0,c=0;c=i;i=i+16|0;b=c;IJ(b);if(!a){a=-1;i=c;return a|0}b=b+12|0;a=Ld[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&511](a)|0;i=c;return a|0}function XJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g;IJ(f);if(!e){e=0;i=g;return e|0}e=ce[c[f>>2]&255](a,b,d,e)|0;i=g;return e|0}function YJ(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+32|0;g=h+8|0;if(!f){f=0;i=h;return f|0}IJ(g);if((c[c[f>>2]>>2]|0)==1){g=g+4|0;f=ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](a,b,e,f)|0;i=h;return f|0}else{yJ(-1,311072,h);f=0;i=h;return f|0}return 0}function ZJ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0;ma=i;i=i+128|0;Y=ma;w=ma+104|0;z=ma+92|0;X=ma+84|0;Q=ma+68|0;P=ma+64|0;y=ma+60|0;O=ma+116|0;v=ma+32|0;fa=ma+28|0;la=ma+16|0;H=ma+12|0;I=ma+8|0;ia=ma+36|0;ja=ma+48|0;c[y>>2]=0;c[fa>>2]=0;ka=la+4|0;c[ka>>2]=0;ea=la+8|0;c[ea>>2]=0;ga=la+4|0;c[la>>2]=ga;aa=(h&32768|0)==0;K=e+12|0;q=Ld[(d[K>>0]|d[K+1>>0]<<8|d[K+2>>0]<<16|d[K+3>>0]<<24)&511](f)|0;M=e+8|0;Od[(d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24)&255](f,0,2)|0;u=Ld[(d[K>>0]|d[K+1>>0]<<8|d[K+2>>0]<<16|d[K+3>>0]<<24)&511](f)|0;Od[(d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24)&255](f,q,0)|0;Od[(d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24)&255](f,g,0)|0;q=O+4|0;r=w+4|0;s=fa+2|0;t=fa+1|0;C=Q+4|0;D=Q+8|0;E=Q+9|0;G=X+4|0;A=0;B=0;ba=2835;ca=2835;_=0;N=0;$=0;Z=0;da=0;o=0;F=0;g=0;x=0;J=0;a:while(1){k=Ld[(d[K>>0]|d[K+1>>0]<<8|d[K+2>>0]<<16|d[K+3>>0]<<24)&511](f)|0;c[y>>2]=0;ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](y,1,4,f)|0;c[y>>2]=Nga(c[y>>2]|0)|0;ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](O,1,4,f)|0;a[q>>0]=0;l=c[y>>2]|0;if(l){g=Dfa(g,l)|0;if(!g){L=4;break}m=Ld[(d[K>>0]|d[K+1>>0]<<8|d[K+2>>0]<<16|d[K+3>>0]<<24)&511](f)|0;l=c[y>>2]|0;if((l+m|0)>(u|0)){L=6;break}ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](g,1,l,f)|0}ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](v,1,4,f)|0;c[v>>2]=Nga(c[v>>2]|0)|0;m=cL(0,O,4)|0;m=cL(m,g,c[y>>2]|0)|0;if((m|0)!=(c[v>>2]|0)){L=9;break}switch(HT(O)|0){case 19:{j=(c[y>>2]|0)+12|0;l=Dfa(_,j)|0;if(!l){L=14;break a}ta=Ld[(d[K>>0]|d[K+1>>0]<<8|d[K+2>>0]<<16|d[K+3>>0]<<24)&511](f)|0;Od[(d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24)&255](f,k,0)|0;ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,1,j,f)|0;Od[(d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24)&255](f,ta,0)|0;ta=x;sa=F;ra=o;qa=da;pa=Z;oa=$;na=ca;k=ba;n=B;m=A;_=l;N=j;J=1;x=ta;F=sa;o=ra;da=qa;Z=pa;$=oa;ca=na;ba=k;B=n;A=m;continue a}case 12:{L=16;break a}case 13:{if((c[y>>2]|0)!=16){L=42;break a}B=g+4|0;B=d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24;A=Nga(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24|0)|0;n=J;m=x;oa=da;na=Z;pa=$;qa=N;ra=_;sa=ca;ta=ba;B=Nga(B|0)|0;o=a[g+13>>0]|0;F=a[g+12>>0]|0;J=n;x=m;da=oa;Z=na;$=pa;N=qa;_=ra;ca=sa;ba=ta;continue a}case 1:{l=c[y>>2]|0;if((l|0)==28){ua=J;l=x;j=F;k=o;n=da;m=Z;oa=$;na=N;pa=_;qa=ca;ra=ba;sa=B;ta=A;J=ua;x=l;F=j;o=k;da=n;Z=m;$=oa;N=na;_=pa;ca=qa;ba=ra;B=sa;A=ta;continue a}c[Y>>2]=O;c[Y+4>>2]=l;yJ(b,311248,Y);l=J;j=x;k=F;n=o;m=da;oa=Z;na=$;pa=N;qa=_;ra=ca;sa=ba;ta=B;ua=A;J=l;x=j;F=k;o=n;da=m;Z=oa;$=na;N=pa;_=qa;ca=ra;ba=sa;B=ta;A=ua;continue a}case 11:{L=50;break a}case 35:{if(!(aa&o<<24>>24==0)){l=J;j=x;k=F;n=o;m=da;oa=Z;na=$;pa=N;qa=_;ra=ca;sa=ba;ta=B;ua=A;J=l;x=j;F=k;o=n;da=m;Z=oa;$=na;N=pa;_=qa;ca=ra;ba=sa;B=ta;A=ua;continue a}if(!$){l=PJ(0,0)|0;j=1}else{l=$;j=x}YJ(g,1,c[y>>2]|0,l)|0;n=J;m=F;oa=da;na=Z;pa=N;qa=_;ra=ca;sa=ba;ta=B;ua=A;$=l;o=0;x=j;J=n;F=m;da=oa;Z=na;N=pa;_=qa;ca=ra;ba=sa;B=ta;A=ua;continue a}case 24:{a[s>>0]=((d[g>>0]|d[g+1>>0]<<8)&65535)>>>8;j=g+2|0;a[t>>0]=((d[j>>0]|d[j+1>>0]<<8)&65535)>>>8;j=g+4|0;a[fa>>0]=((d[j>>0]|d[j+1>>0]<<8)&65535)>>>8;j=J;k=x;n=F;m=o;oa=Z;na=$;pa=N;qa=_;ra=ca;sa=ba;ta=B;ua=A;da=1;J=j;x=k;F=n;o=m;Z=oa;$=na;N=pa;_=qa;ca=ra;ba=sa;B=ta;A=ua;continue a}case 16:{k=0;j=0;l=Z;p=0;break a}case 36:{if(!Z)l=PJ(0,0)|0;else l=Z;YJ(g,1,c[y>>2]|0,l)|0;j=J;k=x;n=F;m=o;oa=da;na=$;pa=N;qa=_;ra=ca;sa=ba;ta=B;ua=A;Z=l;J=j;x=k;F=n;o=m;da=oa;$=na;N=pa;_=qa;ca=ra;ba=sa;B=ta;A=ua;continue a}case 31:{ca=g+4|0;k=J;n=x;m=F;oa=o;na=da;pa=Z;qa=$;ra=N;sa=_;ta=B;ua=A;ba=Nga(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24|0)|0;ca=Nga(d[ca>>0]|d[ca+1>>0]<<8|d[ca+2>>0]<<16|d[ca+3>>0]<<24|0)|0;J=k;x=n;F=m;o=oa;da=na;Z=pa;$=qa;N=ra;_=sa;B=ta;A=ua;continue a}case 45:{k=c[y>>2]|0;c[w+0>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;n=Afa(k)|0;if(n){Cga(n|0,0,k|0)|0;b:do if(k){m=0;l=0;do{ua=a[g+m>>0]|0;j=l+1|0;a[n+l>>0]=ua;if(!(ua<<24>>24)){l=a[w>>0]|0;if(!(l&1))l=(l&255)>>>1;else l=c[r>>2]|0;if(l)break b;x3(w,n)|0;Cga(n|0,0,k|0)|0;l=0}else l=j;m=m+1|0}while(m>>>0>>0)}while(0);x3(z,n)|0;Bfa(n);w3(KT(la,w)|0,z)|0}v3(z);v3(w);l=J;j=x;k=F;n=o;m=da;oa=Z;na=$;pa=N;qa=_;ra=ca;sa=ba;ta=B;ua=A;J=l;x=j;F=k;o=n;da=m;Z=oa;$=na;N=pa;_=qa;ca=ra;ba=sa;B=ta;A=ua;continue a}default:{l=J;j=x;k=F;n=o;m=da;oa=Z;na=$;pa=N;qa=_;ra=ca;sa=ba;ta=B;ua=A;J=l;x=j;F=k;o=n;da=m;Z=oa;$=na;N=pa;_=qa;ca=ra;ba=sa;B=ta;A=ua;continue a}}}do if((L|0)==4){c[Y>>2]=O;yJ(b,311104,Y);ua=kc(4)|0;c[ua>>2]=0;xd(ua|0,378680,0)}else if((L|0)==6){c[Y>>2]=O;yJ(b,311152,Y);ua=kc(4)|0;c[ua>>2]=0;xd(ua|0,378680,0)}else if((L|0)==9){c[Y>>2]=O;yJ(b,311208,Y);ua=kc(4)|0;c[ua>>2]=0;xd(ua|0,378680,0)}else if((L|0)==14){c[Y>>2]=O;yJ(b,311104,Y);ua=kc(4)|0;c[ua>>2]=0;xd(ua|0,378680,0)}else if((L|0)==16){c[Y>>2]=0;ua=Ld[(d[K>>0]|d[K+1>>0]<<8|d[K+2>>0]<<16|d[K+3>>0]<<24)&511](f)|0;Od[(d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24)&255](f,0,2)|0;l=Ld[(d[K>>0]|d[K+1>>0]<<8|d[K+2>>0]<<16|d[K+3>>0]<<24)&511](f)|0;Od[(d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24)&255](f,ua,0)|0;Od[(d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24)&255](f,k,0)|0;while(1){if(((Ld[(d[K>>0]|d[K+1>>0]<<8|d[K+2>>0]<<16|d[K+3>>0]<<24)&511](f)|0)+4|0)>(l|0)){L=22;break}ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](Y,1,4,f)|0;c[Y>>2]=Nga(c[Y>>2]|0)|0;if(((Ld[(d[K>>0]|d[K+1>>0]<<8|d[K+2>>0]<<16|d[K+3>>0]<<24)&511](f)|0)+4|0)>(l|0)){L=23;break}ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](X,1,4,f)|0;a[G>>0]=0;ua=Ld[(d[K>>0]|d[K+1>>0]<<8|d[K+2>>0]<<16|d[K+3>>0]<<24)&511](f)|0;p=c[Y>>2]|0;if((ua+4+p|0)>(l|0)){L=24;break}Od[(d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24)&255](f,p+4|0,1)|0;p=HT(X)|0;if((p|0)==11){L=26;break}else if((p|0)!=12)continue;if((c[Y>>2]|0)!=13){L=25;break}}if((L|0)==22){ua=kc(4)|0;c[ua>>2]=1;xd(ua|0,378704,0)}else if((L|0)==23){ua=kc(4)|0;c[ua>>2]=1;xd(ua|0,378704,0)}else if((L|0)==24){ua=kc(4)|0;c[ua>>2]=1;xd(ua|0,378704,0)}else if((L|0)==25){ua=kc(4)|0;c[ua>>2]=1;xd(ua|0,378704,0)}else if((L|0)==26){j=(Ld[(d[K>>0]|d[K+1>>0]<<8|d[K+2>>0]<<16|d[K+3>>0]<<24)&511](f)|0)-k|0;p=PJ(0,0)|0;l=Ld[(d[K>>0]|d[K+1>>0]<<8|d[K+2>>0]<<16|d[K+3>>0]<<24)&511](f)|0;VJ(p,0,0)|0;YJ(311368,1,8,p)|0;n=Dfa(g,j)|0;if(!n){c[Y>>2]=O;yJ(b,311104,Y);ua=kc(4)|0;c[ua>>2]=0;xd(ua|0,378680,0)}Od[(d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24)&255](f,k,0)|0;ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](n,1,j,f)|0;Od[(d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24)&255](f,l,0)|0;YJ(n,1,j,p)|0;c:do if((J|0)!=0?(IT(p,311376),IT(p,311384),IT(p,311392),c[Q>>2]=0,c[P>>2]=0,TJ(p,Q,P)|0,R=c[Q>>2]|0,S=c[P>>2]|0,!((S|0)==0|(R|0)==0|S>>>0<20|(S+-8|0)>>>0<20)):0){j=8;while(1){g=j+4|0;if(g>>>0>S>>>0)break c;l=R+j|0;l=j+12+(Nga(d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24|0)|0)|0;if(l>>>0>S>>>0)break c;if(!(pga(R+g|0,311400,4)|0))break;else j=l}c[Y>>2]=0;c[X>>2]=0;if(((l|0)!=(j|0)?(TJ(p,Y,X)|0,T=c[Y>>2]|0,U=c[X>>2]|0,(l-j|0)>>>0>>0&(((U|0)==0|(T|0)==0|U>>>0<20)^1)):0)?(V=U+N|0,W=Afa(V)|0,(W|0)!=0):0){Aga(W|0,T|0,j|0)|0;Aga(W+j|0,_|0,N|0)|0;Aga(W+(j+N)|0,T+j|0,U-j|0)|0;VJ(p,0,0)|0;YJ(W,1,V,p)|0;Bfa(W)}}while(0);if(!p){k=0;j=0;l=Z;p=0;g=n;break}VJ(p,0,0)|0;g=UJ(p,0)|0;if((g|0)==-1){k=0;j=0;l=Z;g=n;break}k=RJ(g,p,h)|0;j=0;l=Z;g=n;break}}else if((L|0)==42){c[Y>>2]=O;yJ(b,311408,Y);ua=kc(4)|0;c[ua>>2]=0;xd(ua|0,378680,0)}else if((L|0)==50)if(Z){VJ(Z,0,0)|0;l=UJ(Z,0)|0;if((l|0)==-1)k=0;else k=RJ(l,Z,h)|0;if(((x|0)!=0?(c[H>>2]=0,c[I>>2]=0,TJ($,H,I)|0,(c[H>>2]|0)!=0&(c[I>>2]|0)!=0):0)?(p=PJ(0,0)|0,ta=c[H>>2]|0,ua=c[I>>2]|0,YJ(311368,1,8,p)|0,ra=Nga(A|0)|0,sa=Nga(B|0)|0,c[Q>>2]=ra,c[C>>2]=sa,a[D>>0]=F,a[E>>0]=0,a[E+1>>0]=0,a[E+2>>0]=0,a[E+3>>0]=0,JT(311496,Q,13,p),JT(311400,ta,ua,p),c[Y>>2]=0,YJ(Y,1,4,p)|0,c[Y>>2]=Nga(c[Y>>2]|0)|0,YJ(311488,1,4,p)|0,c[X>>2]=Nga(cL(0,311488,4)|0)|0,YJ(X,1,4,p)|0,(p|0)!=0):0){VJ(p,0,0)|0;l=UJ(p,0)|0;if((l|0)==-1){j=0;l=Z}else{j=RJ(l,p,h)|0;l=Z}}else{j=0;l=Z;p=0}}else{k=0;j=0;l=0;p=0}while(0);QJ(l);QJ(p);QJ($);Bfa(g);Bfa(_);if(aa&(j|0)!=0){g=vJ(k)|0;if((HI(j)|0)==8?(EI(j)|0)==1:0)RL(g,j,4)|0;else{ua=rJ(j)|0;RL(g,ua,4)|0;AI(ua)}AI(k)}else g=k;AI(j);if(!g){ua=0;ta=c[ka>>2]|0;LT(la,ta);i=ma;return ua|0}eJ(g,ba);fJ(g,ca);if(da)YI(g,fa)|0;if(!(c[ea>>2]|0)){ua=g;ta=c[ka>>2]|0;LT(la,ta);i=ma;return ua|0}j=c[la>>2]|0;if((j|0)==(ga|0)){ua=g;ta=c[ka>>2]|0;LT(la,ta);i=ma;return ua|0}m=ia+1|0;n=ja+1|0;o=ja+8|0;p=ia+8|0;do{p3(ia,j+16|0);p3(ja,j+28|0);k=(a[ia>>0]&1)==0?m:c[p>>2]|0;l=(a[ja>>0]&1)==0?n:c[o>>2]|0;if((k|0)!=0&(l|0)!=0?(ha=kL()|0,(ha|0)!=0):0){ta=(Dga(l|0)|0)+1|0;ra=tL(ha,k)|0;sa=yL(ha,ta)|0;ta=xL(ha,ta)|0;ua=wL(ha,2)|0;if(ra&1&sa&ta&ua&(zL(ha,l)|0))kJ(0,g,nL(ha)|0,ha)|0;lL(ha)}v3(ja);v3(ia);k=c[j+4>>2]|0;if(!k)while(1){k=c[j+8>>2]|0;if((c[k>>2]|0)==(j|0)){j=k;break}else j=k}else{j=k;while(1){k=c[j>>2]|0;if(!k)break;else j=k}}}while((j|0)!=(ga|0));ua=c[ka>>2]|0;LT(la,ua);i=ma;return g|0}function _J(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=i;i=i+48|0;r=x+44|0;u=x+40|0;b=x+24|0;o=x+20|0;p=x+16|0;t=x+8|0;v=x+4|0;s=x;w=x+12|0;if(!f){e=0;i=x;return e|0}if((EI(f)|0)!=1){e=0;i=x;return e|0}m=HI(f)|0;if((m|0)==32){j=uJ(f)|0;l=8;n=14}else if((m|0)==24){j=f;l=0;n=10}else if((m|0)==8){n=(TI(f)|0)==1;j=f;l=0;n=n?8:10}else{e=0;i=x;return e|0}y=FI(f)|0;k=GI(f)|0;q=PJ(0,0)|0;YJ(311464,1,8,q)|0;y=Nga(y|0)|0;k=Nga(k|0)|0;c[b>>2]=y;c[b+4>>2]=k;a[b+8>>0]=n;a[b+9>>0]=8;a[b+10>>0]=8;a[b+11>>0]=0;a[b+12>>0]=l;a[b+13>>0]=0;a[b+14>>0]=0;a[b+15>>0]=0;JT(311472,b,16,q);k=PJ(0,0)|0;if(!(SJ(2,j,k,h|262144)|0)){y=kc(4)|0;c[y>>2]=0;xd(y|0,378680,0)}if((j|0)!=(f|0))AI(j);c[o>>2]=0;c[p>>2]=0;TJ(k,o,p)|0;b=c[p>>2]|0;if(b){l=0;do{y=b-l|0;y=y>>>0>8192?8192:y;JT(311480,(c[o>>2]|0)+l|0,y,q);l=y+l|0;b=c[p>>2]|0}while(b>>>0>l>>>0)}QJ(k);if((m|0)==32&n<<24>>24==14){b=QL(f,4)|0;n=PJ(0,0)|0;if(!(SJ(13,b,n,0)|0)){y=kc(4)|0;c[y>>2]=0;xd(y|0,378680,0)}AI(b);b=8;a:while(1){c[r>>2]=0;c[u>>2]=0;TJ(n,r,u)|0;m=c[r>>2]|0;h=c[u>>2]|0;if((h|0)==0|(m|0)==0|h>>>0<20|(h-b|0)>>>0<20)break;else l=b;while(1){j=l+4|0;if(j>>>0>h>>>0)break a;k=m+l|0;k=Nga(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24|0)|0;b=l+12+k|0;if(b>>>0>h>>>0)break a;if(!(pga(m+j|0,311400,4)|0))break;else l=b}c[t>>2]=0;c[v>>2]=0;TJ(n,t,v)|0;JT(311400,(c[t>>2]|0)+(l+8)|0,k,q)}QJ(n)}c[u>>2]=0;c[r>>2]=0;YJ(r,1,4,q)|0;c[r>>2]=Nga(c[r>>2]|0)|0;YJ(311488,1,4,q)|0;c[u>>2]=Nga(cL(0,311488,4)|0)|0;YJ(u,1,4,q)|0;c[s>>2]=0;c[w>>2]=0;TJ(q,s,w)|0;y=e+4|0;ce[(d[y>>0]|d[y+1>>0]<<8|d[y+2>>0]<<16|d[y+3>>0]<<24)&255](c[s>>2]|0,1,c[w>>2]|0,g)|0;QJ(q);QJ(0);QJ(0);y=1;i=x;return y|0}function $J(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=i;if((II(a)|0)!=0?(c=QI(a)|0,d=OI(a)|0,(c|0)!=0):0)c=c+(ea(d,b)|0)|0;else c=0;i=e;return c|0}function aK(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;k=o;n=o+4|0;if(!b){a=-1;i=o;return a|0}j=uea(32,378904)|0;if(!j)j=0;m=uea(64,378904)|0;do if(!m){if(j)xea(j)}else{if(!j){if(!m)break;xea(m);break}k=m+0|0;l=k+64|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));l=a+8|0;Jd[b&255](m,c[l>>2]|0);do if(!e){k=c[m>>2]|0;if((k|0)!=0?(Yd[k&255]()|0)!=0:0)break;xea(m);xea(j);a=-1;i=o;return a|0}while(0);b=c[l>>2]|0;c[j>>2]=b;c[j+4>>2]=d;c[j+8>>2]=m;c[j+16>>2]=e;c[j+20>>2]=f;c[j+24>>2]=g;c[j+28>>2]=h;c[j+12>>2]=1;c[n>>2]=b;c[(MT(a,n)|0)>>2]=j;a=c[j>>2]|0;i=o;return a|0}while(0);yJ(-1,311984,k);a=-1;i=o;return a|0}function bK(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;h=j;g=j+4|0;f=c[77894]|0;c[77894]=f+1;if(f){i=j;return}FL()|0;a=uea(16,378904)|0;if(!a){c[77892]=0;i=j;return}d=a+4|0;c[d>>2]=0;c[a+8>>2]=0;c[a>>2]=d;c[a+12>>2]=0;c[77892]=a;aK(a,94,0,0,0,0,0)|0;aK(c[77892]|0,95,0,0,0,0,0)|0;aK(c[77892]|0,96,0,0,0,0,0)|0;aK(c[77892]|0,97,0,0,0,0,0)|0;aK(c[77892]|0,98,0,0,0,0,0)|0;aK(c[77892]|0,99,0,0,0,0,0)|0;d=c[77892]|0;a=uea(32,378904)|0;if(!a)a=0;b=uea(64,378904)|0;do if(!b)if(!a)k=11;else{xea(a);k=11}else if(!a){xea(b);k=11;break}else{e=b+0|0;f=e+64|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));f=d+8|0;EK(b,c[f>>2]|0);f=c[f>>2]|0;c[a>>2]=f;c[a+4>>2]=0;c[a+8>>2]=b;c[a+16>>2]=311584;c[a+20>>2]=311592;c[a+24>>2]=311616;c[a+28>>2]=311624;c[a+12>>2]=1;c[g>>2]=f;c[(MT(d,g)|0)>>2]=a;break}while(0);if((k|0)==11)yJ(-1,311984,h);d=c[77892]|0;a=uea(32,378904)|0;if(!a)a=0;b=uea(64,378904)|0;do if(!b)if(!a)k=20;else{xea(a);k=20}else if(!a){xea(b);k=20;break}else{e=b+0|0;f=e+64|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));f=d+8|0;EK(b,c[f>>2]|0);f=c[f>>2]|0;c[a>>2]=f;c[a+4>>2]=0;c[a+8>>2]=b;c[a+16>>2]=311632;c[a+20>>2]=311640;c[a+24>>2]=311616;c[a+28>>2]=311664;c[a+12>>2]=1;c[g>>2]=f;c[(MT(d,g)|0)>>2]=a;break}while(0);if((k|0)==20)yJ(-1,311984,h);aK(c[77892]|0,100,0,0,0,0,0)|0;aK(c[77892]|0,101,0,0,0,0,0)|0;d=c[77892]|0;a=uea(32,378904)|0;if(!a)a=0;b=uea(64,378904)|0;do if(!b)if(!a)k=29;else{xea(a);k=29}else if(!a){xea(b);k=29;break}else{e=b+0|0;f=e+64|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));f=d+8|0;EK(b,c[f>>2]|0);f=c[f>>2]|0;c[a>>2]=f;c[a+4>>2]=0;c[a+8>>2]=b;c[a+16>>2]=311672;c[a+20>>2]=311680;c[a+24>>2]=311712;c[a+28>>2]=311720;c[a+12>>2]=1;c[g>>2]=f;c[(MT(d,g)|0)>>2]=a;break}while(0);if((k|0)==29)yJ(-1,311984,h);d=c[77892]|0;a=uea(32,378904)|0;if(!a)a=0;b=uea(64,378904)|0;do if(!b)if(!a)k=38;else{xea(a);k=38}else if(!a){xea(b);k=38;break}else{e=b+0|0;f=e+64|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));f=d+8|0;EK(b,c[f>>2]|0);f=c[f>>2]|0;c[a>>2]=f;c[a+4>>2]=0;c[a+8>>2]=b;c[a+16>>2]=311728;c[a+20>>2]=311736;c[a+24>>2]=311712;c[a+28>>2]=311760;c[a+12>>2]=1;c[g>>2]=f;c[(MT(d,g)|0)>>2]=a;break}while(0);if((k|0)==38)yJ(-1,311984,h);aK(c[77892]|0,102,0,0,0,0,0)|0;d=c[77892]|0;a=uea(32,378904)|0;if(!a)a=0;b=uea(64,378904)|0;do if(!b)if(!a)k=47;else{xea(a);k=47}else if(!a){xea(b);k=47;break}else{e=b+0|0;f=e+64|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));f=d+8|0;EK(b,c[f>>2]|0);f=c[f>>2]|0;c[a>>2]=f;c[a+4>>2]=0;c[a+8>>2]=b;c[a+16>>2]=311768;c[a+20>>2]=311776;c[a+24>>2]=311808;c[a+28>>2]=311816;c[a+12>>2]=1;c[g>>2]=f;c[(MT(d,g)|0)>>2]=a;break}while(0);if((k|0)==47)yJ(-1,311984,h);d=c[77892]|0;a=uea(32,378904)|0;if(!a)a=0;b=uea(64,378904)|0;do if(!b)if(!a)k=56;else{xea(a);k=56}else if(!a){xea(b);k=56;break}else{e=b+0|0;f=e+64|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));h=d+8|0;EK(b,c[h>>2]|0);h=c[h>>2]|0;c[a>>2]=h;c[a+4>>2]=0;c[a+8>>2]=b;c[a+16>>2]=311824;c[a+20>>2]=311832;c[a+24>>2]=311808;c[a+28>>2]=311856;c[a+12>>2]=1;c[g>>2]=h;c[(MT(d,g)|0)>>2]=a;break}while(0);if((k|0)==56)yJ(-1,311984,h);aK(c[77892]|0,103,0,0,0,0,0)|0;aK(c[77892]|0,104,0,0,0,0,0)|0;aK(c[77892]|0,105,0,0,0,0,0)|0;aK(c[77892]|0,106,0,0,0,0,0)|0;aK(c[77892]|0,107,0,0,0,0,0)|0;aK(c[77892]|0,108,0,0,0,0,0)|0;aK(c[77892]|0,109,0,0,0,0,0)|0;aK(c[77892]|0,110,0,0,0,0,0)|0;aK(c[77892]|0,111,0,0,0,0,0)|0;aK(c[77892]|0,112,0,0,0,0,0)|0;aK(c[77892]|0,113,0,0,0,0,0)|0;aK(c[77892]|0,114,0,0,0,0,0)|0;aK(c[77892]|0,115,0,0,0,0,0)|0;aK(c[77892]|0,116,0,0,0,0,0)|0;aK(c[77892]|0,117,0,0,0,0,0)|0;aK(c[77892]|0,118,0,0,0,0,0)|0;aK(c[77892]|0,119,0,0,0,0,0)|0;i=j;return}function cK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;if((a|0)<=-1){d=0;i=k;return d|0}g=c[77892]|0;if(!g)f=0;else f=c[g+8>>2]|0;if((f|0)<=(a|0)){d=0;i=k;return d|0}f=c[g+4>>2]|0;j=g+4|0;if(!f){d=0;i=k;return d|0}else{h=j;g=f}a:while(1){f=g;while(1){if((c[f+16>>2]|0)>=(a|0))break;f=c[f+4>>2]|0;if(!f){f=h;break a}}g=c[f>>2]|0;if(!g)break;else h=f}if((f|0)==(j|0)){d=0;i=k;return d|0}if((c[f+16>>2]|0)>(a|0)){d=0;i=k;return d|0}f=c[f+20>>2]|0;if(!f){d=0;i=k;return d|0}j=f+8|0;f=c[j>>2]|0;g=c[f+32>>2]|0;if(!g){d=0;i=k;return d|0}f=c[f+16>>2]|0;if(!f){h=0;f=g}else{h=Od[f&255](b,d,1)|0;f=c[(c[j>>2]|0)+32>>2]|0}g=Xd[f&127](b,d,-1,e,h)|0;f=c[(c[j>>2]|0)+20>>2]|0;if(!f){d=g;i=k;return d|0}$d[f&255](b,d,h);d=g;i=k;return d|0}function dK(){var a=0;a=c[77892]|0;if(!a)a=0;else a=c[a+8>>2]|0;return a|0}function eK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+32|0;g=h;f=h+8|0;DJ(f);e=Pc(b|0,311864)|0;if(!e){c[g>>2]=b;yJ(a,311872,g);g=0;i=h;return g|0}else{g=cK(a,f,e,d)|0;Ac(e|0)|0;i=h;return g|0}return 0}function fK(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;if(!(II(b)|0)){yJ(a,311912,l);f=0;i=l;return f|0}if((a|0)<=-1){f=0;i=l;return f|0}h=c[77892]|0;if(!h)g=0;else g=c[h+8>>2]|0;if((g|0)<=(a|0)){f=0;i=l;return f|0}g=c[h+4>>2]|0;k=h+4|0;if(!g){f=0;i=l;return f|0}else{j=k;h=g}a:while(1){g=h;while(1){if((c[g+16>>2]|0)>=(a|0))break;g=c[g+4>>2]|0;if(!g){g=j;break a}}h=c[g>>2]|0;if(!h)break;else j=g}if((g|0)==(k|0)){f=0;i=l;return f|0}if((c[g+16>>2]|0)>(a|0)){f=0;i=l;return f|0}g=c[g+20>>2]|0;if(!g){f=0;i=l;return f|0}k=g+8|0;g=c[k>>2]|0;h=c[g+36>>2]|0;if(!h){f=0;i=l;return f|0}g=c[g+16>>2]|0;if(!g){j=0;g=h}else{j=Od[g&255](d,e,0)|0;g=c[(c[k>>2]|0)+36>>2]|0}h=Kd[g&31](d,b,e,-1,f,j)|0;g=c[(c[k>>2]|0)+20>>2]|0;if(!g){f=h;i=l;return f|0}$d[g&255](d,e,j);f=h;i=l;return f|0}function gK(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;b=c[77892]|0;if((b|0)!=0?(d=c[b+4>>2]|0,g=b+4|0,(d|0)!=0):0){e=g;a:while(1){b=d;while(1){if((c[b+16>>2]|0)>=(a|0))break;b=c[b+4>>2]|0;if(!b){b=e;break a}}d=c[b>>2]|0;if(!d)break;else e=b}if(((b|0)!=(g|0)?(c[b+16>>2]|0)<=(a|0):0)?(f=c[b+20>>2]|0,(f|0)!=0):0)b=(c[(c[f+8>>2]|0)+32>>2]|0)!=0&1;else b=0}else b=0;i=h;return b|0}function hK(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;if(!b){p=-1;i=q;return p|0}k=hea(b,46)|0;k=(k|0)==0?b:k+1|0;b=0;a:while(1){f=c[77892]|0;h=(f|0)==0;if(h)d=0;else d=c[f+8>>2]|0;if((b|0)>=(d|0)){b=-1;d=81;break}e=c[f+4>>2]|0;j=f+4|0;g=j;f=e;b:while(1){d=f;while(1){if((c[d+16>>2]|0)>=(b|0))break;d=c[d+4>>2]|0;if(!d){d=g;break b}}f=c[d>>2]|0;if(!f)break;else g=d}if(c[(c[d+20>>2]|0)+12>>2]|0){if(!(h|(e|0)==0)){f=j;c:while(1){d=e;while(1){if((c[d+16>>2]|0)>=(b|0))break;d=c[d+4>>2]|0;if(!d){d=f;break c}}e=c[d>>2]|0;if(!e)break;else f=d}if(((d|0)!=(j|0)?(c[d+16>>2]|0)<=(b|0):0)?(o=c[d+20>>2]|0,(o|0)!=0):0){d=c[o+16>>2]|0;if(!d){d=Yd[c[c[o+8>>2]>>2]&255]()|0;e=k}else e=k}else{d=0;e=k}}else{d=0;e=k}while(1){f=Jfa(a[d>>0]|0)|0;g=Jfa(a[e>>0]|0)|0;if(!f){d=0;break}if((f|0)==(g|0)){d=d+1|0;e=e+1|0}else{d=f;break}}if((d|0)==(g|0)){d=81;break}e=c[77892]|0;if(e){f=c[e+4>>2]|0;h=e+4|0;if(f){g=h;d:while(1){d=f;while(1){if((c[d+16>>2]|0)>=(b|0))break;d=c[d+4>>2]|0;if(!d){d=g;break d}}f=c[d>>2]|0;if(!f)break;else g=d}if(((d|0)!=(h|0)?(c[d+16>>2]|0)<=(b|0):0)?(p=c[d+20>>2]|0,(p|0)!=0):0){d=c[p+24>>2]|0;if(!d){d=c[(c[p+8>>2]|0)+8>>2]|0;if(!d)d=0;else{d=Yd[d&255]()|0;e=c[77892]|0}}}else d=0}else d=0}else{d=0;e=0}j=Afa((Dga(d|0)|0)+1|0)|0;if(e){f=c[e+4>>2]|0;h=e+4|0;if(f){g=h;e:while(1){d=f;while(1){if((c[d+16>>2]|0)>=(b|0))break;d=c[d+4>>2]|0;if(!d){d=g;break e}}f=c[d>>2]|0;if(!f)break;else g=d}if(((d|0)!=(h|0)?(c[d+16>>2]|0)<=(b|0):0)?(l=c[d+20>>2]|0,(l|0)!=0):0){d=c[l+24>>2]|0;if(!d){d=c[(c[l+8>>2]|0)+8>>2]|0;if(!d)d=0;else{d=Yd[d&255]()|0;e=c[77892]|0}}}else d=0}else d=0}else{d=0;e=0}Cga(j|0,0,(Dga(d|0)|0)+1|0)|0;do if(e){f=c[e+4>>2]|0;h=e+4|0;if(f){g=h;f:while(1){d=f;while(1){if((c[d+16>>2]|0)>=(b|0))break;d=c[d+4>>2]|0;if(!d){d=g;break f}}f=c[d>>2]|0;if(!f)break;else g=d}if(((d|0)!=(h|0)?(c[d+16>>2]|0)<=(b|0):0)?(m=c[d+20>>2]|0,(m|0)!=0):0){d=c[m+24>>2]|0;if(!d){d=c[(c[m+8>>2]|0)+8>>2]|0;if(!d)d=0;else{d=Yd[d&255]()|0;e=c[77892]|0}}}else d=0;if(!e){f=d;d=0;break}else f=d}else f=0;d=c[e+4>>2]|0;h=e+4|0;if(d){g=h;e=d;g:while(1){d=e;while(1){if((c[d+16>>2]|0)>=(b|0))break;d=c[d+4>>2]|0;if(!d){d=g;break g}}e=c[d>>2]|0;if(!e)break;else g=d}if(((d|0)!=(h|0)?(c[d+16>>2]|0)<=(b|0):0)?(n=c[d+20>>2]|0,(n|0)!=0):0){d=c[n+24>>2]|0;if(!d){d=c[(c[n+8>>2]|0)+8>>2]|0;if(!d)d=0;else d=Yd[d&255]()|0}}else d=0}else d=0}else{f=0;d=0}while(0);Aga(j|0,f|0,Dga(d|0)|0)|0;d=kea(j,311976)|0;if(d){f=k;while(1){e=Jfa(a[d>>0]|0)|0;g=Jfa(a[f>>0]|0)|0;if(e)if((e|0)==(g|0)){d=d+1|0;f=f+1|0;continue}else d=e;else d=0;if((d|0)==(g|0)){d=77;break a}d=kea(0,311976)|0;if(!d)break;else f=k}}Bfa(j)}b=b+1|0}if((d|0)==77){Bfa(j);p=b;i=q;return p|0}else if((d|0)==81){i=q;return b|0}return 0}function iK(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;f=c[77892]|0;if(!f){e=0;i=l;return e|0}g=c[f+4>>2]|0;j=f+4|0;if(!g){e=0;i=l;return e|0}else h=j;a:while(1){f=g;while(1){if((c[f+16>>2]|0)>=(a|0))break;f=c[f+4>>2]|0;if(!f){f=h;break a}}g=c[f>>2]|0;if(!g)break;else h=f}if((f|0)==(j|0)){e=0;i=l;return e|0}if((c[f+16>>2]|0)>(a|0)){e=0;i=l;return e|0}f=c[f+20>>2]|0;if(!f){e=0;i=l;return e|0}g=b+12|0;g=Ld[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&511](e)|0;if((c[f+12>>2]|0)!=0?(k=c[(c[f+8>>2]|0)+40>>2]|0,(k|0)!=0):0)f=Wd[k&511](b,e)|0;else f=0;a=b+8|0;Od[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,g,0)|0;e=f;i=l;return e|0}function jK(a,b){a=a|0;b=b|0;c[78004]=b;c[a>>2]=1;c[a+4>>2]=2;c[a+8>>2]=3;c[a+12>>2]=4;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=56;c[a+36>>2]=8;c[a+40>>2]=230;c[a+44>>2]=5;c[a+48>>2]=162;c[a+52>>2]=163;c[a+56>>2]=0;c[a+60>>2]=6;return}function kK(a,b){a=a|0;b=b|0;c[78102]=b;c[a>>2]=7;c[a+4>>2]=8;c[a+8>>2]=9;c[a+12>>2]=10;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=57;c[a+36>>2]=0;c[a+40>>2]=231;c[a+44>>2]=11;c[a+48>>2]=164;c[a+52>>2]=165;c[a+56>>2]=0;c[a+60>>2]=12;return}function lK(a,b){a=a|0;b=b|0;c[a>>2]=13;c[a+4>>2]=14;c[a+8>>2]=15;c[a+12>>2]=16;c[a+16>>2]=163;c[a+20>>2]=54;c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=58;c[a+36>>2]=0;c[a+40>>2]=232;c[a+44>>2]=17;c[a+48>>2]=166;c[a+52>>2]=167;c[a+56>>2]=0;return}function mK(a,b){a=a|0;b=b|0;c[78154]=b;c[a>>2]=18;c[a+4>>2]=19;c[a+8>>2]=20;c[a+12>>2]=21;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=59;c[a+36>>2]=0;c[a+40>>2]=0;c[a+44>>2]=22;c[a+48>>2]=168;c[a+52>>2]=0;c[a+56>>2]=0;return}function nK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;a[b>>0]=0;c[b+20>>2]=8;j=b+4|0;c[j>>2]=d;g=1<4096?4096:g;c[k>>2]=g;f=g+1|0;l=b+12|0;c[l>>2]=f;c[b+44>>2]=0;c[b+48>>2]=0;c[b+49216>>2]=0;e=c[b+49208>>2]|0;if(!e)e=g;else{Cga(e|0,-1,4194304)|0;f=c[l>>2]|0;d=c[j>>2]|0;e=c[k>>2]|0}g=b+16|0;c[g>>2]=f+1;c[b+28>>2]=0;h=b+32|0;c[h>>2]=d+1;if((e|0)>0)f=0;else{j=f;k=d;j=j+1|0;c[g>>2]=j;k=k+1|0;c[h>>2]=k;h=1<>2]=h;k=b+40|0;c[k>>2]=4096;i=m;return}do{e=b+(f*12|0)+56|0;z3(e,1,0);if(!(a[e>>0]&1))e=e+1|0;else e=c[b+(f*12|0)+64>>2]|0;a[e>>0]=f;f=f+1|0}while((f|0)<(c[k>>2]|0));d=c[l>>2]|0;k=c[j>>2]|0;j=d+1|0;c[g>>2]=j;k=k+1|0;c[h>>2]=k;h=1<>2]=h;k=b+40|0;c[k>>2]=4096;i=m;return}function oK(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=i;p=b+49216|0;g=c[p>>2]|0;if(!g){G=0;i=H;return G|0}if(a[b>>0]|0){G=0;i=H;return G|0}E=b+20|0;m=c[E>>2]|0;F=b+49224|0;q=b+49212|0;r=b+49228|0;s=b+28|0;t=(1<>2]|0;h=e;a:while(1){l=h-w|0;k=b;while(1){if((k|0)>=(g|0)){G=29;break a}e=c[r>>2]|0;j=c[s>>2]|0;b=t&(d[(c[q>>2]|0)+k>>0]|0)>>>e;n=j<<8&1048320|b;if(c[u>>2]|0)break;c[u>>2]=1;c[s>>2]=b;b=k+1|0;if((e|0)>0)if((b|0)==(g|0)?(e|0)<=(c[v>>2]|0):0)G=27;else b=k;else G=27;if((G|0)==27){G=0;c[F>>2]=b;e=8}c[r>>2]=e-m;if((l|0)==(c[f>>2]|0)){b=1;G=30;break a}else k=b}e=c[(c[x>>2]|0)+(n<<2)>>2]|0;if((e|0)<=0){l=c[y>>2]|0;g=c[z>>2]|j<>2]=g;l=l+(c[A>>2]|0)|0;c[y>>2]=l;b:do if((l|0)>7){e=h;while(1){if((e-w|0)>=(c[f>>2]|0)){h=e;break b}h=e+1|0;a[e>>0]=g;g=c[z>>2]>>8;c[z>>2]=g;l=(c[y>>2]|0)+-8|0;c[y>>2]=l;if((l|0)<=7)break;else e=h}}while(0);j=c[x>>2]|0;c[j+(n<<2)>>2]=c[B>>2];e=c[B>>2]|0;g=c[A>>2]|0;if((e|0)==(1<>2]=g}l=e+1|0;c[B>>2]=l;if((l|0)==4096){l=c[y>>2]|0;c[z>>2]=c[z>>2]|c[C>>2]<>2]=l+g;if(j)Cga(j|0,-1,4194304)|0;c[B>>2]=(c[D>>2]|0)+1;c[s>>2]=0;c[A>>2]=(c[o>>2]|0)+1}}else b=e;c[s>>2]=b;g=c[r>>2]|0;b=c[F>>2]|0;do if((g|0)>0){if((b+1|0)==(c[p>>2]|0)?(g|0)<=(c[v>>2]|0):0){G=21;break}l=c[E>>2]|0;e=l;g=g-l|0}else G=21;while(0);if((G|0)==21){G=0;b=b+1|0;c[F>>2]=b;g=c[E>>2]|0;e=g;g=8-g|0}c[r>>2]=g;if((h-w|0)==(c[f>>2]|0)){b=1;G=30;break}g=c[p>>2]|0;m=e}if((G|0)==29){c[p>>2]=0;c[f>>2]=l;G=1;i=H;return G|0}else if((G|0)==30){i=H;return b|0}return 0}function pK(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+16|0;w=F;E=b+49216|0;g=c[E>>2]|0;if(!g){f=0;i=F;return f|0}if(a[b>>0]|0){f=0;i=F;return f|0}D=b+49224|0;j=c[D>>2]|0;a:do if((j|0)<(g|0)){v=b+49212|0;x=b+48|0;y=b+44|0;z=b+32|0;p=b+36|0;q=b+16|0;r=b+12|0;s=b+8|0;t=b+4|0;u=b+40|0;h=e;l=c[x>>2]|0;k=c[z>>2]|0;g=e;b:while(1){c[y>>2]=c[y>>2]|d[(c[v>>2]|0)+j>>0]<>2]=j;c:do if((j|0)<(k|0))l=j;else while(1){e=c[p>>2]|0;l=c[q>>2]|0;while(1){m=c[y>>2]|0;o=e&m;c[y>>2]=m>>k;j=j-k|0;c[x>>2]=j;if((o|0)>(l|0)){j=10;break b}k=c[r>>2]|0;if((o|0)==(k|0)){j=10;break b}if((o|0)!=(c[s>>2]|0))break;if((o|0)>0){k=0;do{j=b+(k*12|0)+56|0;z3(j,1,0);if(!(a[j>>0]&1))j=j+1|0;else j=c[b+(k*12|0)+64>>2]|0;a[j>>0]=k;k=k+1|0}while((k|0)<(c[s>>2]|0));k=c[r>>2]|0;j=c[x>>2]|0}l=k+1|0;c[q>>2]=l;k=(c[t>>2]|0)+1|0;c[z>>2]=k;e=(1<>2]=e;c[u>>2]=4096;if((j|0)<(k|0)){l=j;break c}}m=c[u>>2]|0;if((m|0)!=4096&(l|0)<4096){n=b+(m*12|0)+56|0;k=(o|0)==(l|0)?m:o;j=b+(k*12|0)+56|0;if(!(a[j>>0]&1))k=j+1|0;else k=c[b+(k*12|0)+64>>2]|0;e=a[k>>0]|0;c[w+0>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;k=a[n>>0]|0;if(!(k&1)){j=(k&255)>>>1;k=n+1|0}else{j=c[b+(m*12|0)+60>>2]|0;k=c[b+(m*12|0)+64>>2]|0}H3(w,k,j,j+1|0);D3(w,e);w3(b+(l*12|0)+56|0,w)|0;v3(w)}m=b+(o*12|0)+56|0;l=a[m>>0]|0;j=(l&1)==0;if(j)k=(l&255)>>>1;else k=c[b+(o*12|0)+60>>2]|0;e=g-h|0;if((k|0)>((c[f>>2]|0)-e|0)){j=31;break b}if(j){j=m+1|0;k=(l&255)>>>1}else{j=c[b+(o*12|0)+64>>2]|0;k=c[b+(o*12|0)+60>>2]|0}Aga(g|0,j|0,k|0)|0;j=a[m>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[b+(o*12|0)+60>>2]|0;g=g+j|0;if((((c[u>>2]|0)!=4096?(A=c[q>>2]|0,(A|0)<4096):0)?(B=A+1|0,c[q>>2]=B,(B|0)<4096):0)?(C=c[p>>2]|0,(C&B|0)==0):0){c[z>>2]=(c[z>>2]|0)+1;c[p>>2]=C|B}c[u>>2]=o;j=c[x>>2]|0;k=c[z>>2]|0;if((j|0)<(k|0)){l=j;break}}while(0);j=(c[D>>2]|0)+1|0;c[D>>2]=j;if((j|0)>=(c[E>>2]|0))break a}if((j|0)==10){a[b>>0]=1;c[f>>2]=g-h;f=1;i=F;return f|0}else if((j|0)==31){b=c[z>>2]|0;E=c[y>>2]<>2]=(c[x>>2]|0)+b;c[y>>2]=E|o;c[D>>2]=(c[D>>2]|0)+1;c[f>>2]=e;f=1;i=F;return f|0}}else{h=e;g=e}while(0);c[E>>2]=0;c[f>>2]=g-h;f=1;i=F;return f|0}function qK(a,b){a=a|0;b=b|0;c[78218]=b;c[a>>2]=23;c[a+4>>2]=24;c[a+8>>2]=25;c[a+12>>2]=26;c[a+16>>2]=164;c[a+20>>2]=55;c[a+24>>2]=165;c[a+28>>2]=0;c[a+32>>2]=60;c[a+36>>2]=9;c[a+40>>2]=233;c[a+44>>2]=27;c[a+48>>2]=169;c[a+52>>2]=170;c[a+56>>2]=0;return}function rK(a,b){a=a|0;b=b|0;c[78388]=b;c[a>>2]=28;c[a+4>>2]=29;c[a+8>>2]=30;c[a+12>>2]=31;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=61;c[a+36>>2]=10;c[a+40>>2]=234;c[a+44>>2]=32;c[a+48>>2]=171;c[a+52>>2]=172;c[a+56>>2]=0;c[a+60>>2]=33;return}function sK(a,b){a=a|0;b=b|0;c[78548]=b;c[a>>2]=34;c[a+4>>2]=35;c[a+8>>2]=36;c[a+12>>2]=37;c[a+16>>2]=166;c[a+20>>2]=56;c[a+24>>2]=167;c[a+28>>2]=0;c[a+32>>2]=62;c[a+36>>2]=11;c[a+40>>2]=235;c[a+44>>2]=38;c[a+48>>2]=173;c[a+52>>2]=174;c[a+56>>2]=0;c[a+60>>2]=39;return}function tK(a,b){a=a|0;b=b|0;c[a>>2]=40;c[a+4>>2]=41;c[a+8>>2]=42;c[a+12>>2]=43;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=63;c[a+36>>2]=0;c[a+40>>2]=236;c[a+44>>2]=44;c[a+48>>2]=175;c[a+52>>2]=176;c[a+56>>2]=0;return}function uK(a,b){a=a|0;b=b|0;c[78634]=b;c[a>>2]=45;c[a+4>>2]=46;c[a+8>>2]=47;c[a+12>>2]=48;c[a+16>>2]=168;c[a+20>>2]=57;c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=64;c[a+36>>2]=12;c[a+40>>2]=237;c[a+44>>2]=49;c[a+48>>2]=177;c[a+52>>2]=178;c[a+56>>2]=0;return}function vK(a,b){a=a|0;b=b|0;c[78696]=b;c[a>>2]=50;c[a+4>>2]=51;c[a+8>>2]=52;c[a+12>>2]=53;c[a+16>>2]=169;c[a+20>>2]=58;c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=65;c[a+36>>2]=13;c[a+40>>2]=238;c[a+44>>2]=54;c[a+48>>2]=179;c[a+52>>2]=180;c[a+56>>2]=55;c[a+60>>2]=56;return}function wK(a,b){a=a|0;b=b|0;c[78712]=b;c[a>>2]=57;c[a+4>>2]=58;c[a+8>>2]=59;c[a+12>>2]=60;c[a+16>>2]=170;c[a+20>>2]=59;c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=66;c[a+36>>2]=14;c[a+40>>2]=239;c[a+44>>2]=61;c[a+48>>2]=181;c[a+52>>2]=182;c[a+56>>2]=0;return}function xK(a,b){a=a|0;b=b|0;c[78778]=b;c[a>>2]=62;c[a+4>>2]=63;c[a+8>>2]=64;c[a+12>>2]=65;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=67;c[a+36>>2]=15;c[a+40>>2]=240;c[a+44>>2]=66;c[a+48>>2]=183;c[a+52>>2]=184;c[a+56>>2]=67;c[a+60>>2]=68;return}function yK(a,b){a=a|0;b=b|0;c[78962]=b;c[a>>2]=69;c[a+4>>2]=70;c[a+8>>2]=71;c[a+12>>2]=72;c[a+16>>2]=171;c[a+20>>2]=60;c[a+24>>2]=0;c[a+28>>2]=0;c[a+32>>2]=68;c[a+36>>2]=0;c[a+40>>2]=241;c[a+44>>2]=73;c[a+48>>2]=185;c[a+52>>2]=186;c[a+56>>2]=74;c[a+60>>2]=75;return}function zK(a,b){a=a|0;b=b|0;c[78980]=b;c[a>>2]=76;c[a+4>>2]=77;c[a+8>>2]=78;c[a+12>>2]=79;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=69;c[a+36>>2]=0;c[a+40>>2]=0;c[a+44>>2]=80;c[a+48>>2]=187;c[a+52>>2]=188;c[a+56>>2]=0;c[a+60>>2]=81;return}function AK(a,b){a=a|0;b=b|0;c[79026]=b;c[a>>2]=82;c[a+4>>2]=83;c[a+8>>2]=84;c[a+12>>2]=85;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=70;c[a+36>>2]=0;c[a+40>>2]=242;c[a+44>>2]=86;c[a+48>>2]=189;c[a+52>>2]=190;c[a+56>>2]=0;c[a+60>>2]=87;return}function BK(a,b){a=a|0;b=b|0;c[79088]=b;c[a>>2]=88;c[a+4>>2]=89;c[a+8>>2]=90;c[a+12>>2]=91;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=71;c[a+36>>2]=16;c[a+40>>2]=243;c[a+44>>2]=92;c[a+48>>2]=191;c[a+52>>2]=192;c[a+56>>2]=0;c[a+60>>2]=93;return}function CK(a,b){a=a|0;b=b|0;c[79166]=b;c[a>>2]=94;c[a+4>>2]=95;c[a+8>>2]=96;b=a+12|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[a+32>>2]=72;c[a+36>>2]=0;c[a+40>>2]=244;c[a+44>>2]=97;c[a+48>>2]=193;c[a+52>>2]=194;c[a+56>>2]=98;return}function DK(a,b){a=a|0;b=b|0;c[80460]=b;c[a>>2]=99;c[a+4>>2]=100;c[a+8>>2]=101;c[a+12>>2]=102;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=73;c[a+36>>2]=17;c[a+40>>2]=245;c[a+44>>2]=103;c[a+48>>2]=195;c[a+52>>2]=196;c[a+56>>2]=104;c[a+60>>2]=105;return}function EK(a,b){a=a|0;b=b|0;c[80550]=b;c[a>>2]=106;c[a+4>>2]=107;c[a+8>>2]=108;c[a+12>>2]=109;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=74;c[a+36>>2]=18;c[a+40>>2]=246;c[a+44>>2]=110;c[a+48>>2]=197;c[a+52>>2]=198;c[a+56>>2]=0;c[a+60>>2]=111;return}function FK(a,b){a=a|0;b=b|0;c[80628]=b;c[a>>2]=112;c[a+4>>2]=113;c[a+8>>2]=114;b=a+12|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[a+32>>2]=75;c[a+36>>2]=0;c[a+40>>2]=247;c[a+44>>2]=115;c[a+48>>2]=199;c[a+52>>2]=200;c[a+56>>2]=116;c[a+60>>2]=117;return}function GK(a,b){a=a|0;b=b|0;c[80646]=b;c[a>>2]=118;c[a+4>>2]=119;c[a+8>>2]=120;c[a+12>>2]=121;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=76;c[a+36>>2]=0;c[a+40>>2]=248;c[a+44>>2]=122;c[a+48>>2]=201;c[a+52>>2]=202;c[a+56>>2]=0;c[a+60>>2]=123;return}function HK(a,b){a=a|0;b=b|0;c[80706]=b;c[a>>2]=124;c[a+4>>2]=125;c[a+8>>2]=126;c[a+12>>2]=127;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=77;c[a+36>>2]=0;c[a+40>>2]=249;c[a+44>>2]=128;c[a+48>>2]=203;c[a+52>>2]=204;c[a+56>>2]=0;return}function IK(a,b){a=a|0;b=b|0;c[80802]=b;c[a>>2]=129;c[a+4>>2]=130;c[a+8>>2]=131;c[a+12>>2]=132;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=78;c[a+36>>2]=19;c[a+40>>2]=250;c[a+44>>2]=133;c[a+48>>2]=205;c[a+52>>2]=206;c[a+56>>2]=0;c[a+60>>2]=134;return}function JK(a){a=a|0;var b=0;b=i;a=Afa(a)|0;i=b;return a|0}function KK(a){a=a|0;var b=0;b=i;Bfa(a);i=b;return}function LK(a,b){a=a|0;b=b|0;var c=0;c=i;b=Dfa(a,b)|0;i=c;return b|0}function MK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;Cga(a|0,b&255|0,c|0)|0;i=d;return}function NK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;Aga(a|0,b|0,c|0)|0;i=d;return}function OK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;b=pga(a,b,c)|0;i=d;return b|0}function PK(a,b){a=a|0;b=b|0;var d=0;d=i;c[80866]=b;LL();c[a>>2]=135;c[a+4>>2]=136;c[a+8>>2]=137;c[a+12>>2]=138;c[a+16>>2]=172;c[a+20>>2]=61;c[a+24>>2]=173;c[a+28>>2]=0;c[a+32>>2]=79;c[a+36>>2]=20;c[a+40>>2]=251;c[a+44>>2]=139;c[a+48>>2]=207;c[a+52>>2]=208;c[a+56>>2]=140;c[a+60>>2]=141;i=d;return}function QK(a,b){a=a|0;b=b|0;c[81126]=b;c[a>>2]=142;c[a+4>>2]=143;c[a+8>>2]=144;c[a+12>>2]=145;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=80;c[a+36>>2]=21;c[a+40>>2]=0;c[a+44>>2]=146;c[a+48>>2]=209;c[a+52>>2]=210;c[a+56>>2]=0;return}function RK(a,b){a=a|0;b=b|0;c[81184]=b;c[a>>2]=147;c[a+4>>2]=148;c[a+8>>2]=149;c[a+12>>2]=150;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=81;c[a+36>>2]=0;c[a+40>>2]=252;c[a+44>>2]=151;c[a+48>>2]=211;c[a+52>>2]=212;c[a+56>>2]=0;return}function SK(a,b){a=a|0;b=b|0;c[81278]=b;c[a>>2]=152;c[a+4>>2]=153;c[a+8>>2]=154;c[a+12>>2]=155;b=a+16|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[a+32>>2]=82;c[a+36>>2]=22;c[a+40>>2]=253;c[a+44>>2]=156;c[a+48>>2]=213;c[a+52>>2]=214;c[a+56>>2]=0;c[a+60>>2]=157;return}function TK(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;k=i;i=i+48|0;h=k+10|0;j=k+4|0;if(!(ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](h,26,1,g)|0)){e=0;i=k;return e|0}if((d[h+3>>0]|0|(d[h+2>>0]|0|(d[h+1>>0]|0|(d[h>>0]|0)<<8)<<8)<<8|0)!=943870035){e=0;i=k;return e|0}if((d[h+5>>0]|0|(d[h+4>>0]|0)<<8|0)!=1){e=0;i=k;return e|0};a[j+0>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;a[j+3>>0]=0;a[j+4>>0]=0;a[j+5>>0]=0;if(pga(h+6|0,j,6)|0)yJ(20,325888,k);b[e>>1]=d[h+13>>0]|0|(d[h+12>>0]|0)<<8;c[e+4>>2]=d[h+17>>0]|0|(d[h+16>>0]|0|(d[h+15>>0]|0|(d[h+14>>0]|0)<<8)<<8)<<8;c[e+8>>2]=d[h+21>>0]|0|(d[h+20>>0]|0|(d[h+19>>0]|0|(d[h+18>>0]|0)<<8)<<8)<<8;b[e+12>>1]=d[h+23>>0]|0|(d[h+22>>0]|0)<<8;b[e+14>>1]=d[h+25>>0]|0|(d[h+24>>0]|0)<<8;e=1;i=k;return e|0}function UK(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;j=i;i=i+16|0;p=j+4|0;k=j;n=ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](k,2,1,f)|0;l=k+1|0;b[a+4>>1]=d[l>>0]|0|(d[k>>0]|0)<<8;g=ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](p,4,1,f)|0;q=p+1|0;r=p+2|0;s=p+3|0;c[a+8>>2]=d[s>>0]|0|(d[r>>0]|0|(d[q>>0]|0|(d[p>>0]|0)<<8)<<8)<<8;o=ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](k,2,1,f)|0;b[a>>1]=d[l>>0]|0|(d[k>>0]|0)<<8;m=ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](k,2,1,f)|0;b[a+6>>1]=d[l>>0]|0|(d[k>>0]|0)<<8;h=ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](p,4,1,f)|0;c[a+12>>2]=d[s>>0]|0|(d[r>>0]|0|(d[q>>0]|0|(d[p>>0]|0)<<8)<<8)<<8;e=o+n+m+(ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](k,2,1,f)|0)|0;b[a+2>>1]=d[l>>0]|0|(d[k>>0]|0)<<8;i=j;return (h+g<<2)+(e<<1)|0}function VK(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;k=o+2|0;n=o;h=ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](k,2,1,g)|0;j=k+1|0;b[e>>1]=d[j>>0]|0|(d[k>>0]|0)<<8;l=0;h=h<<1;while(1){m=(ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](k,2,1,g)|0)<<1;m=m+h|0;h=(d[j>>0]|0|(d[k>>0]|0)<<8)&65535;if((l|0)==4)break;b[e+(l<<1)+2>>1]=h;l=l+1|0;h=m}b[e+10>>1]=h;if((h&65535)>100){o=kc(4)|0;c[o>>2]=325952;xd(o|0,378680,0)}j=ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,1,1,g)|0;a[e+12>>0]=a[n>>0]|0;h=ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,1,1,g)|0;f=a[n>>0]|0;a[e+13>>0]=f;if(!(f<<24>>24)){i=o;return j+m+h|0}else{o=kc(4)|0;c[o>>2]=325992;xd(o|0,378680,0)}return 0}function WK(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=i;i=i+16|0;o=w+4|0;l=w;n=e+12|0;p=Ld[(d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24)&511](f)|0;r=ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,4,1,f)|0;j=l+1|0;m=l+2|0;x=l+3|0;k=g+-28|0;p=p+k|0;c[a>>2]=d[x>>0]|0|(d[m>>0]|0|(d[j>>0]|0|(d[l>>0]|0)<<8)<<8)<<8;q=ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,4,1,f)|0;c[a+4>>2]=d[x>>0]|0|(d[m>>0]|0|(d[j>>0]|0|(d[l>>0]|0)<<8)<<8)<<8;s=ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,4,1,f)|0;c[a+8>>2]=d[x>>0]|0|(d[m>>0]|0|(d[j>>0]|0|(d[l>>0]|0)<<8)<<8)<<8;t=ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,4,1,f)|0;c[a+12>>2]=d[x>>0]|0|(d[m>>0]|0|(d[j>>0]|0|(d[l>>0]|0)<<8)<<8)<<8;u=ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,4,1,f)|0;c[a+16>>2]=d[x>>0]|0|(d[m>>0]|0|(d[j>>0]|0|(d[l>>0]|0)<<8)<<8)<<8;v=ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,4,1,f)|0;c[a+20>>2]=d[x>>0]|0|(d[m>>0]|0|(d[j>>0]|0|(d[l>>0]|0)<<8)<<8)<<8;l=ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](o,2,1,f)|0;j=o+1|0;b[a+24>>1]=d[j>>0]|0|(d[o>>0]|0)<<8;m=ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](o,2,1,f)|0;b[a+26>>1]=d[j>>0]|0|(d[o>>0]|0)<<8;n=Ld[(d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24)&511](f)|0;o=a+28|0;j=c[o>>2]|0;if(j)AI(j);if((c[a>>2]|0)!=1){x=e+8|0;Od[(d[x>>0]|d[x+1>>0]<<8|d[x+2>>0]<<16|d[x+3>>0]<<24)&255](f,k,1)|0;x=g;i=w;return x|0}j=cK(2,e,f,0)|0;c[o>>2]=j;if(h)nJ(j)|0;x=e+8|0;Od[(d[x>>0]|d[x+1>>0]<<8|d[x+2>>0]<<16|d[x+3>>0]<<24)&255](f,p,0)|0;x=p-n+(q+r+s+t+u+v<<2)+(m+l<<1)|0;i=w;return x|0}function XK(d){d=d|0;var e=0,f=0,g=0,h=0;g=i;b[d>>1]=-1;e=d+4|0;c[e+0>>2]=-1;c[e+4>>2]=-1;c[e+8>>2]=-1;c[e+12>>2]=-1;c[d+20>>2]=0;b[d+60>>1]=-1;e=d+52|0;f=d+24|0;h=f+28|0;do{b[f>>1]=65535;f=f+2|0}while((f|0)<(h|0));h=e;f=h;b[f>>1]=0;b[f+2>>1]=0>>>16;h=h+4|0;b[h>>1]=0;b[h+2>>1]=0>>>16;a[d+62>>0]=0;a[d+63>>0]=48;h=d+64|0;c[h+0>>2]=-1;c[h+4>>2]=-1;c[h+8>>2]=-1;c[h+12>>2]=-1;c[h+16>>2]=-1;c[h+20>>2]=-1;c[h+24>>2]=-1;c[d+92>>2]=0;c[d+96>>2]=0;c[d+100>>2]=0;h=d+112|0;a[h+0>>0]=0;a[h+1>>0]=0;a[h+2>>0]=0;a[h+3>>0]=0;a[h+4>>0]=0;c[d+108>>2]=30;b[d+104>>1]=-1;b[d+106>>1]=-1;c[d+120>>2]=0;c[d+124>>2]=-1;i=g;return}function YK(a){a=a|0;var b=0,d=0,e=0;e=i;b=a+100|0;d=c[b>>2]|0;if(d){yea(d);c[b>>2]=0}c[a+96>>2]=0;AI(c[a+92>>2]|0);b=a+20|0;d=c[b>>2]|0;if(!d){i=e;return}yea(d);c[b>>2]=0;i=e;return}function ZK(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;S=i;i=i+48|0;P=S;O=S+4|0;j=S+40|0;J=S+24|0;N=S+26|0;M=S+28|0;K=S+32|0;L=S+36|0;R=O+12|0;c[R>>2]=0;c[O>>2]=-1;G=O+4|0;c[G>>2]=0;H=O+8|0;b[H>>1]=-1;I=O+16|0;c[I>>2]=-1;if((h|0)<=0){ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](j,4,1,g)|0;h=d[j+3>>0]|0|(d[j+2>>0]|0|(d[j+1>>0]|0|(d[j>>0]|0)<<8)<<8)<<8;c[O>>2]=h;if((h|0)>0)Q=4;else{j=0;Q=32}}else{c[O>>2]=h;Q=4}a:do if((Q|0)==4){m=f+8|0;n=e+113|0;o=P+1|0;p=e+40|0;q=e+42|0;r=e+44|0;s=e+46|0;t=e+48|0;u=e+112|0;v=e+24|0;w=e+114|0;x=e+50|0;y=e+116|0;z=e+115|0;A=e+64|0;B=e+108|0;C=e+100|0;D=e+96|0;E=e+104|0;F=e+106|0;j=0;while(1){c[O>>2]=-1;c[G>>2]=0;b[H>>1]=-1;k=c[R>>2]|0;if(k){yea(k);c[R>>2]=0}c[I>>2]=-1;if((ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](G,4,1,g)|0)!=1)break;j=j+4|0;if(j&1){j=0;break a}b:do if((c[G>>2]|0)==1296646712){l=ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](J,2,1,g)|0;b[H>>1]=d[J+1>>0]|0|(d[J>>0]|0)<<8;j=(l<<1)+j+(ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](N,1,1,g)|0)|0;l=a[N>>0]|0;k=l&255;if(l<<24>>24){l=vea(k)|0;c[R>>2]=l;j=(ea(ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](l,k,1,g)|0,k)|0)+j|0}if(!(k&1))j=(ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](N,1,1,g)|0)+j|0;k=(ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](M,4,1,g)|0)<<2;l=d[M+3>>0]|0;j=k+j|0;l=(l|(d[M+2>>0]|0|(d[M+1>>0]|0|(d[M>>0]|0)<<8)<<8)<<8)+(l&1)|0;c[I>>2]=l;if((l|0)>0){k=b[H>>1]|0;do switch(k<<16>>16|0){case 1007:{a[w>>0]=1;j=(VK(x,f,g)|0)+j|0;break b}case 1039:{k=c[C>>2]|0;if(k){yea(k);c[C>>2]=0}c[D>>2]=0;k=wea((l|0)>-1?l:-1,378904)|0;c[C>>2]=k;if(!k)k=0;else{k=ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](k,1,l,g)|0;c[D>>2]=l}j=k+j|0;break b}case 1046:{k=(ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](L,2,1,g)|0)<<1;b[E>>1]=d[L+1>>0]|0|(d[L>>0]|0)<<8;j=k+j|0;break b}case 1047:{k=(ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](L,2,1,g)|0)<<1;b[F>>1]=d[L+1>>0]|0|(d[L>>0]|0)<<8;j=k+j|0;break b}case 1034:{k=(ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](L,2,1,g)|0)<<1;a[y>>0]=(d[L+1>>0]|0|(d[L>>0]|0)<<8|0)==1&1;j=k+j|0;break b}case 1005:{a[u>>0]=1;j=(UK(v,f,g)|0)+j|0;break b}case 1e3:{a[n>>0]=1;T=ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](P,2,1,g)|0;b[p>>1]=d[o>>0]|0|(d[P>>0]|0)<<8;U=ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](P,2,1,g)|0;b[q>>1]=d[o>>0]|0|(d[P>>0]|0)<<8;l=ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](P,2,1,g)|0;b[r>>1]=d[o>>0]|0|(d[P>>0]|0)<<8;k=ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](P,2,1,g)|0;b[s>>1]=d[o>>0]|0|(d[P>>0]|0)<<8;k=U+T+l+k+(ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](P,2,1,g)|0)|0;b[t>>1]=d[o>>0]|0|(d[P>>0]|0)<<8;j=(k<<1)+j|0;break b}case 1036:case 1033:{a[z>>0]=1;j=(WK(A,f,g,l,k<<16>>16==1033)|0)+j|0;break b}case 1037:{U=(ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](K,4,1,g)|0)<<2;c[B>>2]=d[K+3>>0]|0|(d[K+2>>0]|0|(d[K+1>>0]|0|(d[K>>0]|0)<<8)<<8)<<8;j=U+j|0;break b}default:{U=h-j|0;U=(l|0)<(U|0)?l:U;Od[(d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24)&255](g,U,1)|0;j=U+j|0;break b}}while(0)}}while(0);if((j|0)>=(h|0)){Q=32;break a}}yJ(c[e+124>>2]|0,326032,P);j=0}while(0);if((Q|0)==32)j=(j|0)==(h|0);h=c[R>>2]|0;if(!h){i=S;return j|0}yea(h);c[R>>2]=0;i=S;return j|0}function _K(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;R=i;i=i+16|0;N=R;n=R+4|0;if(!h){f=0;i=R;return f|0}P=f+120|0;o=(c[P>>2]|0)>>>15;b[n>>1]=0;ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](n,2,1,h)|0;j=e[n>>1]|0;j=j<<8|j>>>8;m=j&65535;b[n>>1]=m;if((m&65535)>=2){f=c[f+124>>2]|0;c[N>>2]=j&65535;yJ(f,326128,N);f=0;i=R;return f|0}k=c[f+8>>2]|0;M=c[f+4>>2]|0;p=b[f>>1]|0;Q=p<<16>>16;j=b[f+12>>1]|0;l=j<<16>>16;r=j<<16>>16==1;L=r?1:l>>>3;if(!r){q=ea(L,k)|0;if(m<<16>>16==1&(j&65535)>16){f=c[f+124>>2]|0;c[N>>2]=l;yJ(f,326160,N);f=0;i=R;return f|0}}else q=(k+7|0)>>>3;K=b[f+14>>1]|0;m=(p&65535)<3;K=K<<16>>16==7&m?1:K<<16>>16;a:do switch(K|0){case 9:case 4:case 3:{j=(p&65535)>3;if(j|m^1){j=j?4:3;C=16}else{f=kc(4)|0;c[f>>2]=326192;xd(f|0,378680,0)}break}case 1:case 2:case 8:case 0:if((l|0)==16){O=wI(o&1,2,k,M,16,0,0,0)|0;j=1;J=0;break a}else if((l|0)==32){O=wI(o&1,6,k,M,32,0,0,0)|0;j=1;J=0;break a}else{O=xI(o&1,k,M,l,0,0,0)|0;j=1;J=1;break a}case 7:{j=(p&65535)>3|(o&1|0)==0;if(j|m^1){j=j?4:3;C=16}else{f=kc(4)|0;c[f>>2]=326192;xd(f|0,378680,0)}break}default:{f=kc(4)|0;c[f>>2]=326224;xd(f|0,378680,0)}}while(0);do if((C|0)==16)if((l|0)==32){O=wI(o&1,j>>>0<4?11:12,k,M,j<<5,0,0,0)|0;J=0;break}else if((l|0)==16){O=wI(o&1,j>>>0<4?9:10,k,M,j<<4,0,0,0)|0;J=0;break}else{O=xI(o&1,k,M,ea(j,l)|0,0,0,0)|0;J=0;break}while(0);if(!O){f=kc(4)|0;c[f>>2]=326432;xd(f|0,378680,0)}NI(O,c[f+92>>2]|0)|0;if(o&1){f=O;i=R;return f|0}if(r)I=1;else I=(HI(O)|0)>>>3;s=OI(O)|0;G=$J(O,M+-1|0)|0;H=vea(q)|0;m=e[n>>1]|0;if(!m){if(p<<16>>16){t=(M|0)==0;u=H+q|0;v=(q|0)>0;w=(L|0)==0;x=L+-1|0;s=0-s|0;l=j>>>0>1?0-j|0:-1;j=(p&65535)>1?0-Q|0:-1;j=0-(l>>>0>j>>>0?l:j)|0;l=0;do{m=ea(l,L)|0;if(!t){o=G;n=0;while(1){ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](H,q,1,h)|0;b:do if(v){if(w)while(1)if((q|0)<=0)break b;else{r=o;p=H}while(1){k=0;do{a[r+(k+m)>>0]=a[p+(x-k)>>0]|0;k=k+1|0}while((k|0)!=(L|0));p=p+L|0;if(p>>>0>=u>>>0)break;else r=r+I|0}}while(0);n=n+1|0;if((n|0)==(M|0))break;else o=o+s|0}}l=l+1|0}while((l|0)!=(j|0))}yea(H)}else if((m|0)==1){m=ea(Q,M)|0;F=wea(m>>>0>2147483647?-1:m<<1,378904)|0;if(!F){AI(O);yea(H);f=kc(4)|0;zea(f);xd(f|0,377712,196)}ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](F,2,m,h)|0;n=p<<16>>16==0;if(n)m=0;else{r=(M|0)==0;o=0;m=0;do{if(!r){k=ea(o,M)|0;l=0;do{D=F+(l+k<<1)|0;E=e[D>>1]|0;E=(E<<8|E>>>8)&65535;b[D>>1]=E;m=(m&65535)<(E&65535)?E:m;l=l+1|0}while((l|0)!=(M|0))}o=o+1|0}while(o>>>0>>0)}D=wea(m&65535,378904)|0;if(!D){AI(O);yea(H);yea(F);f=kc(4)|0;zea(f);xd(f|0,377712,196)}E=H+q|0;if(!n){A=(M|0)==0;B=E;z=(q|0)>0;n=0-s|0;p=(L|0)==0;s=L+-1|0;w=0;do{t=ea(w,L)|0;c:do if(!A){u=ea(w,M)|0;v=w>>>0>>0;x=G;y=0;while(1){ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](D,e[F+(y+u<<1)>>1]|0,1,h)|0;o=H;q=D;d:while(1){k=o>>>0>>0;while(1){if(!k)break d;r=q+1|0;m=a[q>>0]|0;l=m&255;if(m<<24>>24>-1){C=57;break}if((m&255)>128){C=61;break}else q=r}if((C|0)==57){m=l+1|0;k=o+m|0;if(k>>>0>E>>>0)m=B-o|0;Aga(o|0,r|0,m|0)|0;o=k;q=q+(l+2)|0;continue}else if((C|0)==61){m=257-l|0;k=o+m|0;if(k>>>0>E>>>0)m=B-o|0;Cga(o|0,a[r>>0]|0,m|0)|0;o=k;q=q+2|0;continue}}if(!v)break c;if(z){m=x;k=H;while(1){if(!p){q=0;do{a[m+(q+t)>>0]=a[k+(s-q)>>0]|0;q=q+1|0}while((q|0)!=(L|0))}k=k+L|0;if(k>>>0>=E>>>0)break;else m=m+I|0}}y=y+1|0;if(y>>>0>=M>>>0)break;else x=x+n|0}}while(0);w=w+1|0}while(w>>>0>>0)}yea(H);yea(F);yea(D)}if((K|0)==7|(K|0)==4){p=(K|0)==7;do if(p){N=EI(O)|0;q=(HI(O)|0)>>>3;j=(q|0)==4;if(!((N|0)==1&j|(N|0)==10)){TL(O)|0;break}r=FI(O)|0;s=GI(O)|0;k=$J(O,0)|0;t=OI(O)|0;N=j?1:2;o=q-N|0;if(!((s|0)==0|(r|0)==0|(q|0)==(N|0))){n=0;while(1){l=k;m=0;while(1){j=0;do{N=l+j|0;a[N>>0]=d[N>>0]^255;j=j+1|0}while(j>>>0>>0);m=m+1|0;if((m|0)==(r|0))break;else l=l+q|0}n=n+1|0;if((n|0)==(s|0))break;else k=k+t|0}}}else TL(O)|0;while(0);if(c[P>>2]&1){if(!p){f=O;i=R;return f|0}MI(O,0,0)|0;f=BI(O)|0;b[f>>1]=e[f>>1]|1;f=O;i=R;return f|0}oJ(O)|0;j=f+100|0;k=c[j>>2]|0;if(k){yea(k);c[j>>2]=0}c[f+96>>2]=0;if((Q+-3|0)>>>0>=2){f=O;i=R;return f|0}j=qJ(O)|0;if(!j){f=O;i=R;return f|0}AI(O);f=j;i=R;return f|0}else if((K|0)==9?(c[P>>2]&2|0)==0:0){pJ(O)|0;f=O;i=R;return f|0}e:do if(J?(VI(O)|0)!=0:0){if(!K){c[(VI(O)|0)>>2]=16777215;c[(VI(O)|0)+4>>2]=0;break}else if((K|0)!=2)break;j=f+20|0;if(((c[j>>2]|0)!=0?(c[f+16>>2]|0)==768:0)?(b[f+104>>1]|0)>=0:0){l=VI(O)|0;if(!l)break;j=c[j>>2]|0;k=0;while(1){a[l+(k<<2)+2>>0]=a[j+k>>0]|0;a[l+(k<<2)+1>>0]=a[j+(k+256)>>0]|0;a[l+(k<<2)>>0]=a[j+(k+512)>>0]|0;k=k+1|0;if((k|0)==256)break e}}yJ(c[f+124>>2]|0,326248,N)}while(0);if((EI(O)|0)!=1){f=O;i=R;return f|0}nJ(O)|0;f=O;i=R;return f|0}function $K(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;q=r+4|0;p=r;c[f+120>>2]=k;c[f+124>>2]=j;if(!h){r=kc(4)|0;c[r>>2]=326312;xd(r|0,378680,0)}if(!(TK(f,g,h)|0)){r=kc(4)|0;c[r>>2]=326336;xd(r|0,378680,0)}o=f+16|0;if((c[o>>2]|0)>0?(l=f+20|0,m=c[l>>2]|0,(m|0)!=0):0){yea(m);c[l>>2]=0}ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](p,4,1,h)|0;j=p+1|0;l=p+2|0;m=p+3|0;n=((d[j>>0]|d[p>>0]<<8)<<8|d[l>>0])<<8|d[m>>0];c[o>>2]=n;if((n|0)>0){o=vea(n)|0;c[f+20>>2]=o;ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](o,n,1,h)|0}if(!(ZK(f,g,h,0)|0)){r=kc(4)|0;c[r>>2]=326352;xd(r|0,378680,0)}o=ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](p,4,1,h)|0;l=((d[j>>0]|d[p>>0]<<8)<<8|d[l>>0])<<8|d[m>>0];if((o|0)!=0&(l|0)>0){j=0;do{a[q>>0]=0;o=ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](q,1,1,h)|0;j=o+j|0}while((o|0)!=0&(j|0)<(l|0))}else j=0;if((j|0)!=(l|0)){r=kc(4)|0;c[r>>2]=326376;xd(r|0,378680,0)}m=_K(f,g,h)|0;if(!m){r=kc(4)|0;c[r>>2]=326400;xd(r|0,378680,0)}do if(a[f+112>>0]|0){j=c[f+32>>2]|0;if((j|0)==1)j=~~(+(b[f+28>>1]|0)/.0254+.5)>>>0;else if((j|0)==2)j=~~(+(b[f+28>>1]|0)*100.0+.5)>>>0;else j=2835;l=c[f+36>>2]|0;if((l|0)==2){l=~~(+(b[f+30>>1]|0)*100.0+.5)>>>0;break}else if((l|0)==1){l=~~(+(b[f+30>>1]|0)/.0254+.5)>>>0;break}else{l=2835;break}}else{j=2835;l=2835}while(0);eJ(m,j);fJ(m,l);MI(m,c[f+100>>2]|0,c[f+96>>2]|0)|0;if(!(k&1)){i=r;return m|0}f=b[f+14>>1]|0;if(!(f<<16>>16==7|f<<16>>16==4)){i=r;return m|0}f=BI(m)|0;b[f>>1]=e[f>>1]|1;i=r;return m|0}function aL(b,c,d,e){b=b|0;c=c|0;d=+d;e=e|0;var f=0,h=0,j=0,l=0,m=0;h=i;if((e|0)<=0){i=h;return}f=0;while(1){m=c+4|0;l=c+8|0;g[k>>2]=+g[c>>2]*2.69+ +g[m>>2]*-1.276+ +g[l>>2]*-.414;a[b>>0]=a[k>>0];a[b+1>>0]=a[k+1>>0];a[b+2>>0]=a[k+2>>0];a[b+3>>0]=a[k+3>>0];j=b+4|0;g[k>>2]=+g[c>>2]*-1.022+ +g[m>>2]*1.978+ +g[l>>2]*.044;a[j>>0]=a[k>>0];a[j+1>>0]=a[k+1>>0];a[j+2>>0]=a[k+2>>0];a[j+3>>0]=a[k+3>>0];j=b+8|0;g[k>>2]=+g[c>>2]*.061+ +g[m>>2]*-.224+ +g[l>>2]*1.163;a[j>>0]=a[k>>0];a[j+1>>0]=a[k+1>>0];a[j+2>>0]=a[k+2>>0];a[j+3>>0]=a[k+3>>0];f=f+1|0;if((f|0)==(e|0))break;else{b=b+12|0;c=c+12|0}}i=h;return}function bL(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0.0,j=0,l=0;f=i;if((d|0)<=0){i=f;return}e=0;while(1){a[k>>0]=a[c>>0];a[k+1>>0]=a[c+1>>0];a[k+2>>0]=a[c+2>>0];a[k+3>>0]=a[c+3>>0];h=+g[k>>2]*.497;l=c+4|0;a[k>>0]=a[l>>0];a[k+1>>0]=a[l+1>>0];a[k+2>>0]=a[l+2>>0];a[k+3>>0]=a[l+3>>0];h=h+ +g[k>>2]*.339;j=c+8|0;a[k>>0]=a[j>>0];a[k+1>>0]=a[j+1>>0];a[k+2>>0]=a[j+2>>0];a[k+3>>0]=a[j+3>>0];g[b>>2]=h+ +g[k>>2]*.164;a[k>>0]=a[c>>0];a[k+1>>0]=a[c+1>>0];a[k+2>>0]=a[c+2>>0];a[k+3>>0]=a[c+3>>0];h=+g[k>>2]*.256;a[k>>0]=a[l>>0];a[k+1>>0]=a[l+1>>0];a[k+2>>0]=a[l+2>>0];a[k+3>>0]=a[l+3>>0];h=h+ +g[k>>2]*.678;a[k>>0]=a[j>>0];a[k+1>>0]=a[j+1>>0];a[k+2>>0]=a[j+2>>0];a[k+3>>0]=a[j+3>>0];g[b+4>>2]=h+ +g[k>>2]*.066;a[k>>0]=a[c>>0];a[k+1>>0]=a[c+1>>0];a[k+2>>0]=a[c+2>>0];a[k+3>>0]=a[c+3>>0];h=+g[k>>2]*.023;a[k>>0]=a[l>>0];a[k+1>>0]=a[l+1>>0];a[k+2>>0]=a[l+2>>0];a[k+3>>0]=a[l+3>>0];h=h+ +g[k>>2]*.113;a[k>>0]=a[j>>0];a[k+1>>0]=a[j+1>>0];a[k+2>>0]=a[j+2>>0];a[k+3>>0]=a[j+3>>0];g[b+8>>2]=h+ +g[k>>2]*.864;e=e+1|0;if((e|0)==(d|0))break;else{c=c+12|0;b=b+12|0}}i=f;return}function cL(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;c=ZH(a,b,c)|0;i=d;return c|0}function dL(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+4|0;g=k;c[f>>2]=2771273;c[g>>2]=704662861;if(pga(326520,b,6)|0){a=0;i=k;return a|0}j=b+6|0;h=e+-6|0;do if(pga(j,f,4)|0)if(!(pga(j,g,4)|0)){e=(d[b+11>>0]|0)<<16|(d[b+10>>0]|0)<<24|(d[b+12>>0]|0)<<8|(d[b+13>>0]|0);b=1;break}else{a=0;i=k;return a|0}else{e=(d[b+12>>0]|0)<<16|(d[b+13>>0]|0)<<24|(d[b+11>>0]|0)<<8|(d[b+10>>0]|0);b=0}while(0);if(e>>>0>h>>>0){a=0;i=k;return a|0}a=yZ(a,j,e,h,0,b,1)|0;i=k;return a|0}function eL(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=i;if(pga(326520,b,6)|0){c=0;i=e;return c|0}d=kL()|0;if(!d){c=0;i=e;return c|0}tL(d,326544)|0;yL(d,c)|0;xL(d,c)|0;wL(d,1)|0;zL(d,b)|0;kJ(11,a,nL(d)|0,d)|0;lL(d);c=1;i=e;return c|0}function fL(a){a=a|0;var b=0,d=0,f=0;f=i;i=i+16|0;d=f;if(!(lJ(1,c[a>>2]|0)|0)){i=f;return}c[d>>2]=0;UI(1,c[a>>2]|0,326528,d)|0;b=c[d>>2]|0;if(!b){i=f;return}if((oL(b)|0)<<16>>16!=274){i=f;return}switch(e[(sL(c[d>>2]|0)|0)>>1]|0|0){case 5:{d=SL(c[a>>2]|0,90.0,0)|0;AI(c[a>>2]|0);c[a>>2]=d;VL(d)|0;i=f;return}case 8:{d=SL(c[a>>2]|0,90.0,0)|0;AI(c[a>>2]|0);c[a>>2]=d;i=f;return}case 6:{d=SL(c[a>>2]|0,-90.0,0)|0;AI(c[a>>2]|0);c[a>>2]=d;i=f;return}case 2:{UL(c[a>>2]|0)|0;i=f;return}case 4:{VL(c[a>>2]|0)|0;i=f;return}case 7:{d=SL(c[a>>2]|0,-90.0,0)|0;AI(c[a>>2]|0);c[a>>2]=d;VL(d)|0;i=f;return}case 3:{d=SL(c[a>>2]|0,180.0,0)|0;AI(c[a>>2]|0);c[a>>2]=d;i=f;return}default:{i=f;return}}}function gL(a,b){a=a|0;b=+b;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0.0;l=i;i=i+16|0;k=l;d=~~b;if(+(d|0)==b){c[a>>2]=d;c[a+4>>2]=1;i=l;return}m=+T(+b);j=b>0.0?1:-1;f=-1;e=0;b=m;while(1){g=~~+S(+b);c[k+(e<<2)>>2]=g;d=f+1|0;b=b-+(g|0);if(b==0.0)break;e=e+1|0;if((e|0)>=4)break;else{f=d;b=1.0/b}}c[a>>2]=1;d=c[k+(d<<2)>>2]|0;g=a+4|0;c[g>>2]=d;a:do if((f|0)>-1){h=1;while(1){e=c[k+(f<<2)>>2]|0;if(!e){d=h;break a}d=(ea(h,e)|0)+d|0;c[a>>2]=d;c[g>>2]=h;if((f|0)>0){e=h;h=d;f=f+-1|0;d=e}else break}}else d=1;while(0);c[a>>2]=ea(d,j)|0;i=l;return}function hL(a){a=a|0;return}function iL(a){a=a|0;return c[a>>2]|0}function jL(a){a=a|0;return c[a+4>>2]|0}function kL(){var b=0,d=0,e=0,f=0;f=i;b=Afa(4)|0;do if(b){d=Afa(24)|0;c[b>>2]=d;if(!d){Bfa(b);b=0;break}else{d=d+0|0;e=d+24|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0));break}}else b=0;while(0);i=f;return b|0}function lL(a){a=a|0;var b=0,d=0;d=i;if(!a){i=d;return}b=c[a>>2]|0;if(b){Bfa(c[b>>2]|0);Bfa(c[b+4>>2]|0);Bfa(c[b+20>>2]|0);Bfa(c[a>>2]|0)}Bfa(a);i=d;return}function mL(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;if(!d){h=0;i=j;return h|0}g=Afa(4)|0;if(!g){h=0;i=j;return h|0}h=Afa(24)|0;c[g>>2]=h;if(!h){Bfa(g);h=0;i=j;return h|0}e=h+0|0;f=e+24|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0));f=c[d>>2]|0;b[h+8>>1]=b[f+8>>1]|0;d=c[f>>2]|0;do if(d){d=Afa((Dga(d|0)|0)+1|0)|0;c[h>>2]=d;if(!d){j=kc(4)|0;c[j>>2]=326928;xd(j|0,378680,0)}else{Gga(d|0,c[f>>2]|0)|0;break}}while(0);e=f+4|0;d=c[e>>2]|0;do if(d){d=Afa((Dga(d|0)|0)+1|0)|0;c[h+4>>2]=d;if(!d){j=kc(4)|0;c[j>>2]=326928;xd(j|0,378680,0)}else{Gga(d|0,c[e>>2]|0)|0;break}}while(0);k=b[f+10>>1]|0;b[h+10>>1]=k;c[h+12>>2]=c[f+12>>2];e=f+16|0;c[h+16>>2]=c[e>>2];d=c[e>>2]|0;if(k<<16>>16==2){d=Afa(d+1|0)|0;c[h+20>>2]=d;if(!d){k=kc(4)|0;c[k>>2]=326928;xd(k|0,378680,0)}Aga(d|0,c[f+20>>2]|0,c[e>>2]|0)|0;a[d+(c[e>>2]|0)>>0]=0;k=g;i=j;return k|0}else{d=Afa(d)|0;c[h+20>>2]=d;if(!d){k=kc(4)|0;c[k>>2]=326928;xd(k|0,378680,0)}Aga(d|0,c[f+20>>2]|0,c[e>>2]|0)|0;k=g;i=j;return k|0}return 0}function nL(a){a=a|0;if(!a)a=0;else a=c[c[a>>2]>>2]|0;return a|0}function oL(a){a=a|0;if(!a)a=0;else a=b[(c[a>>2]|0)+8>>1]|0;return a|0}function pL(a){a=a|0;if(!a)a=0;else a=e[(c[a>>2]|0)+10>>1]|0;return a|0}function qL(a){a=a|0;if(!a)a=0;else a=c[(c[a>>2]|0)+12>>2]|0;return a|0}function rL(a){a=a|0;if(!a)a=0;else a=c[(c[a>>2]|0)+16>>2]|0;return a|0}function sL(a){a=a|0;if(!a)a=0;else a=c[(c[a>>2]|0)+20>>2]|0;return a|0}function tL(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;if(!((a|0)!=0&(b|0)!=0)){b=0;i=e;return b|0}a=c[a>>2]|0;d=c[a>>2]|0;if(d)Bfa(d);d=Afa((Dga(b|0)|0)+1|0)|0;c[a>>2]=d;Gga(d|0,b|0)|0;b=1;i=e;return b|0}function uL(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;if(!((a|0)!=0&(b|0)!=0)){b=0;i=e;return b|0}a=(c[a>>2]|0)+4|0;d=c[a>>2]|0;if(d)Bfa(d);d=Afa((Dga(b|0)|0)+1|0)|0;c[a>>2]=d;Gga(d|0,b|0)|0;b=1;i=e;return b|0}function vL(a,d){a=a|0;d=d|0;if(!a)d=0;else{b[(c[a>>2]|0)+8>>1]=d;d=1}return d|0}function wL(a,d){a=a|0;d=d|0;if(!a)a=0;else{b[(c[a>>2]|0)+10>>1]=d;a=1}return a|0}function xL(a,b){a=a|0;b=b|0;if(!a)b=0;else{c[(c[a>>2]|0)+12>>2]=b;b=1}return b|0}function yL(a,b){a=a|0;b=b|0;if(!a)b=0;else{c[(c[a>>2]|0)+16>>2]=b;b=1}return b|0}function zL(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;if(!((d|0)!=0&(e|0)!=0)){e=0;i=l;return e|0}g=c[d>>2]|0;h=g+10|0;f=b[h>>1]|0;if((f&65535)<19)d=c[326848+((f&65535)<<2)>>2]|0;else d=0;d=ea(d,c[g+12>>2]|0)|0;k=g+16|0;if((d|0)!=(c[k>>2]|0)){e=0;i=l;return e|0}j=g+20|0;g=c[j>>2]|0;if(g){Bfa(g);f=b[h>>1]|0;d=c[k>>2]|0}if(f<<16>>16!=2){d=Afa(d)|0;c[j>>2]=d;if(!d){e=0;i=l;return e|0}Aga(d|0,e|0,c[k>>2]|0)|0;e=1;i=l;return e|0}g=Afa(d+1|0)|0;c[j>>2]=g;if(!g){e=0;i=l;return e|0}if(!(c[k>>2]|0))d=0;else{f=0;do{a[g+f>>0]=a[e+f>>0]|0;f=f+1|0;d=c[k>>2]|0}while(f>>>0>>0)}a[g+d>>0]=0;e=1;i=l;return e|0}function AL(a){a=a|0;if(a>>>0<19)a=c[326848+(a<<2)>>2]|0;else a=0;return a|0}function BL(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=i;i=i+48|0;s=w+24|0;u=w;v=w+12|0;c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;if((f|0)==0|(g|0)==0){e=0;v3(v);v3(u);i=w;return e|0}if(g>>>0>8?(pga(326960,f,8)|0)==0:0){e=0;v3(v);v3(u);i=w;return e|0}t=kL()|0;r=FL()|0;j=g+-1|0;a:do if(!j)h=0;else{k=0;while(1){h=k+1|0;if((a[f+k>>0]|0)==28?(a[f+h>>0]|0)==2:0){h=k;break a}if(h>>>0>>0)k=h;else break}}while(0);b:do if(h>>>0>>0){p=v+4|0;q=u+4|0;do{j=h+5|0;if(!(j>>>0>>0?(a[f+h>>0]|0)==28:0))break b;k=d[f+(h+3)>>0]<<8|d[f+(h+4)>>0];n=k+j|0;if(n>>>0>g>>>0)break b;if(!k)h=j;else{l=d[f+(h+1)>>0]<<8|d[f+(h+2)>>0];m=l&65535;vL(t,m)|0;yL(t,k)|0;x=k+1|0;o=Afa(x)|0;Cga(o|0,0,x|0)|0;if((l|0)==512){wL(t,8)|0;xL(t,1)|0;b[o>>1]=d[f+j>>0]<<8|d[f+(h+6)>>0];zL(t,o)|0}else{wL(t,2)|0;xL(t,k)|0;Aga(o|0,f+(h+5)|0,(k>>>0>1?k:1)|0)|0;a[o+k>>0]=0;zL(t,o)|0}do if((l|0)==532){h=a[v>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[p>>2]|0;if(!h){C3(v,o)|0;break}else{C3(v,326976)|0;C3(v,o)|0;break}}else if((l|0)==537){h=a[u>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[q>>2]|0;if(!h){C3(u,o)|0;break}else{C3(u,326976)|0;C3(u,o)|0;break}}else{h=HL(r,21,m,s)|0;tL(t,h)|0;uL(t,IL(r,21,m)|0)|0;if(h)kJ(6,e,h,t)|0}while(0);Bfa(o);h=n}}while(h>>>0>>0)}while(0);h=a[u>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[u+4>>2]|0;if(h){wL(t,2)|0;vL(t,537)|0;tL(t,HL(r,21,537,s)|0)|0;uL(t,IL(r,21,537)|0)|0;h=a[u>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[u+4>>2]|0;yL(t,h)|0;h=a[u>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[u+4>>2]|0;xL(t,h)|0;if(!(a[u>>0]&1))h=u+1|0;else h=c[u+8>>2]|0;zL(t,h)|0;kJ(6,e,nL(t)|0,t)|0}h=a[v>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[v+4>>2]|0;if(h){wL(t,2)|0;vL(t,532)|0;tL(t,HL(r,21,532,s)|0)|0;uL(t,IL(r,21,532)|0)|0;h=a[v>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[v+4>>2]|0;yL(t,h)|0;h=a[v>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[v+4>>2]|0;xL(t,h)|0;if(!(a[v>>0]&1))h=v+1|0;else h=c[v+8>>2]|0;zL(t,h)|0;kJ(6,e,nL(t)|0,t)|0}lL(t);x=1;v3(v);v3(u);i=w;return x|0}function CL(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=i;i=i+64|0;F=H+60|0;G=H;E=H+12|0;D=H+24|0;B=H+36|0;C=H+48|0;c[F>>2]=0;u=gJ(6,b,F)|0;if(!u){e=0;i=H;return e|0}v=E+4|0;w=E+8|0;x=G+1|0;y=D+1|0;z=D+8|0;A=D+4|0;s=G+8|0;t=G+4|0;o=0;r=0;while(1){q=oL(c[F>>2]|0)|0;b=q&65535;if((b|0)==537|(b|0)==532)if((pL(c[F>>2]|0)|0)==2){b=sL(c[F>>2]|0)|0;q3(G,b,Dga(b|0)|0);c[E>>2]=0;c[v>>2]=0;c[w>>2]=0;q3(D,326976,1);b=a[G>>0]|0;if(!(b&1)){h=(b&255)>>>1;f=x}else{h=c[t>>2]|0;f=c[s>>2]|0}b=a[D>>0]|0;if(!(b&1)){b=(b&255)>>>1;l=y}else{b=c[A>>2]|0;l=c[z>>2]|0}a:do if(h>>>0>>0)b=0;else{if(b){m=f+h|0;j=l+b|0;n=f;if((h|0)<(b|0)){b=0;break}p=1-b+h|0;g=f+p|0;if(!p){b=0;break}k=a[l>>0]|0;b=f;b:while(1){if((a[b>>0]|0)==k<<24>>24){h=b;f=l;do{f=f+1|0;if((f|0)==(j|0))break b;h=h+1|0}while((a[h>>0]|0)==(a[f>>0]|0))}b=b+1|0;if((b|0)==(g|0)){b=0;break a}}if((b|0)==(m|0)){b=0;break}b=b-n|0;if((b|0)==-1){b=0;break}else f=0}else{b=0;f=0}while(1){t3(B,G,f,b-f|0,G);f=c[v>>2]|0;if((f|0)==(c[w>>2]|0))zZ(E,B);else{if(!f)f=0;else{p3(f,B);f=c[v>>2]|0}c[v>>2]=f+12}v3(B);g=a[D>>0]|0;j=(g&1)==0;if(j)h=(g&255)>>>1;else h=c[A>>2]|0;f=h+b|0;b=a[G>>0]|0;if(!(b&1)){k=(b&255)>>>1;p=x}else{k=c[t>>2]|0;p=c[s>>2]|0}if(j){h=(g&255)>>>1;l=y}else{h=c[A>>2]|0;l=c[z>>2]|0}if(k>>>0>>0|(k-f|0)>>>0>>0){b=f;break a}if(!h)b=f;else{b=p+f|0;m=p+k|0;n=l+h|0;if((m-b|0)<(h|0)){b=f;break a}j=1-h+k|0;k=p+j|0;if((j|0)==(f|0)){b=f;break a}j=a[l>>0]|0;c:while(1){if((a[b>>0]|0)==j<<24>>24){h=b;g=l;do{g=g+1|0;if((g|0)==(n|0))break c;h=h+1|0}while((a[h>>0]|0)==(a[g>>0]|0))}b=b+1|0;if((b|0)==(k|0)){b=f;break a}}if((b|0)==(m|0)){b=f;break a}b=b-p|0}if((b|0)==-1){b=f;break}}}while(0);t3(C,G,b,-1,G);b=c[v>>2]|0;if((b|0)==(c[w>>2]|0))zZ(E,C);else{if(!b)b=0;else{p3(b,C);b=c[v>>2]|0}c[v>>2]=b+12}v3(C);h=c[v>>2]|0;b=c[E>>2]|0;if((h-b|0)>0){p=q&255;m=h;g=r;n=0;while(1){f=b+(n*12|0)|0;h=a[f>>0]|0;if(!(h&1)){k=(h&255)>>>1;j=f+1|0}else{k=c[b+(n*12|0)+4>>2]|0;j=c[b+(n*12|0)+8>>2]|0}h=k+5|0;l=h+o|0;f=Afa(l)|0;if(f){a[f>>0]=28;a[f+1>>0]=2;a[f+2>>0]=p;a[f+3>>0]=k>>>8;a[f+4>>0]=k;Aga(f+5|0,j|0,k|0)|0;if(!g){g=f;f=m}else{Aga(f+h|0,g|0,o|0)|0;Bfa(g);g=f;f=c[v>>2]|0;b=c[E>>2]|0;h=l}}else{g=0;f=m;h=o}n=n+1|0;if((n|0)>=((f-b|0)/12|0|0))break;else{o=h;m=f}}}else{h=o;g=r}v3(D);b=c[E>>2]|0;if(b){while(1){f=c[v>>2]|0;if((f|0)==(b|0))break;r=f+-12|0;c[v>>2]=r;v3(r)}xea(c[E>>2]|0)}v3(G)}else{h=o;g=r}else if((b|0)==512){h=o;g=r}else if((b|0)==522)if((pL(c[F>>2]|0)|0)==2){b=sL(c[F>>2]|0)|0;h=o+6|0;g=Afa(h)|0;if(g){a[g>>0]=28;a[g+1>>0]=2;a[g+2>>0]=q;a[g+3>>0]=0;a[g+4>>0]=1;a[g+5>>0]=a[b>>0]|0;if(!r)h=6;else{Aga(g+6|0,r|0,o|0)|0;Bfa(r)}}else{h=o;g=0}}else{h=o;g=r}else if((pL(c[F>>2]|0)|0)==2){b=rL(c[F>>2]|0)|0;f=sL(c[F>>2]|0)|0;j=b+5|0;h=j+o|0;g=Afa(h)|0;if(g){a[g>>0]=28;a[g+1>>0]=2;a[g+2>>0]=q;a[g+3>>0]=b>>>8;a[g+4>>0]=b;Aga(g+5|0,f|0,b|0)|0;if(!r)h=j;else{Aga(g+j|0,r|0,o|0)|0;Bfa(r)}}else{h=o;g=0}}else{h=o;g=r}if(!(hJ(u,F)|0))break;else{o=h;r=g}}iJ(u);b=h+7|0;f=Afa(b)|0;if(f){a[f>>0]=28;a[f+1>>0]=2;a[f+2>>0]=0;a[f+3>>0]=0;a[f+4>>0]=2;F=f+5|0;a[F>>0]=0;a[F+1>>0]=2;if(!g)b=7;else{Aga(f+7|0,g|0,h|0)|0;Bfa(g)}}else{f=0;b=h}c[d>>2]=f;c[e>>2]=b;e=1;i=H;return e|0}function DL(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;l=m;f=c[a+4>>2]|0;j=a+4|0;if(f){h=j;g=f;a:while(1){f=g;while(1){if((c[f+16>>2]|0)>=(d|0))break;f=c[f+4>>2]|0;if(!f){f=h;break a}}g=c[f>>2]|0;if(!g)break;else h=f}if(!((f|0)!=(j|0)?(c[f+16>>2]|0)<=(d|0):0))k=8}else k=8;if((k|0)==8)f=j;if(!((f|0)==(j|0)&(e|0)!=0)){d=0;i=m;return d|0}f=uea(12,378904)|0;if(!f){d=0;i=m;return d|0}h=f+4|0;c[h>>2]=0;c[f+8>>2]=0;c[f>>2]=h;h=0;while(1){g=e+(h*12|0)|0;if((b[g>>1]|0)==0?(c[e+(h*12|0)+4>>2]|0)==0:0)break;c[(BZ(f,g)|0)>>2]=g;h=h+1|0}c[l>>2]=d;c[(CZ(a,l)|0)>>2]=f;d=1;i=m;return d|0}function EL(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;b=c[a>>2]|0;e=a+4|0;if((b|0)!=(e|0)){d=b;while(1){b=c[d+20>>2]|0;if(b){DZ(b,c[b+4>>2]|0);xea(b)}b=c[d+4>>2]|0;if(!b)while(1){b=c[d+8>>2]|0;if((c[b>>2]|0)==(d|0))break;else d=b}else while(1){d=c[b>>2]|0;if(!d)break;else b=d}if((b|0)==(e|0))break;else d=b}}AZ(a,c[a+4>>2]|0);i=f;return}function FL(){var b=0;b=i;if(a[341072]|0){i=b;return 341056}if(!(Qa(341072)|0)){i=b;return 341056}c[85265]=0;c[85266]=0;c[85264]=341060;DL(341056,1,326984)|0;DL(341056,2,326984)|0;DL(341056,3,328376)|0;DL(341056,4,328760)|0;DL(341056,5,328832)|0;DL(341056,6,331376)|0;DL(341056,7,331608)|0;DL(341056,8,332184)|0;DL(341056,9,332664)|0;DL(341056,10,332704)|0;DL(341056,11,333040)|0;DL(341056,12,333160)|0;DL(341056,13,333464)|0;DL(341056,14,334560)|0;DL(341056,15,335784)|0;DL(341056,16,336672)|0;DL(341056,17,336856)|0;DL(341056,18,338360)|0;DL(341056,19,338960)|0;DL(341056,20,339456)|0;DL(341056,21,339976)|0;DL(341056,22,340808)|0;DL(341056,23,340920)|0;rb(284,341056,p|0)|0;Eb(341072);i=b;return 341056}function GL(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n+4|0;j=n;b[m>>1]=f;g=c[a+4>>2]|0;l=a+4|0;if(!g){a=0;i=n;return a|0}else{k=l;h=g}a:while(1){g=h;while(1){if((c[g+16>>2]|0)>=(d|0))break;g=c[g+4>>2]|0;if(!g){g=k;break a}}h=c[g>>2]|0;if(!h)break;else k=g}if((g|0)==(l|0)){a=0;i=n;return a|0}if((c[g+16>>2]|0)>(d|0)){a=0;i=n;return a|0}c[j>>2]=d;k=c[(CZ(a,j)|0)>>2]|0;g=c[k+4>>2]|0;l=k+4|0;if(!g){a=0;i=n;return a|0}else{j=l;h=g}b:while(1){g=h;while(1){if((e[g+16>>1]|0)>=(f&65535))break;g=c[g+4>>2]|0;if(!g){g=j;break b}}h=c[g>>2]|0;if(!h)break;else j=g}if((g|0)==(l|0)){a=0;i=n;return a|0}if((e[g+16>>1]|0)>(f&65535)){a=0;i=n;return a|0}a=c[(BZ(k,m)|0)>>2]|0;i=n;return a|0}function HL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g;b=GL(a,b,d)|0;if(b){f=c[b+4>>2]|0;i=g;return f|0}if(!e){f=0;i=g;return f|0}c[f>>2]=d&65535;fga(e,341080,f)|0;f=e;i=g;return f|0}function IL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;b=GL(a,b,d)|0;if(!b){a=0;i=e;return a|0}a=c[b+8>>2]|0;i=e;return a|0}function JL(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;j=m;f=c[a+4>>2]|0;k=a+4|0;if(!f){a=-1;i=m;return a|0}else{h=k;g=f}a:while(1){f=g;while(1){if((c[f+16>>2]|0)>=(b|0))break;f=c[f+4>>2]|0;if(!f){f=h;break a}}g=c[f>>2]|0;if(!g)break;else h=f}if((f|0)==(k|0)){a=-1;i=m;return a|0}if((c[f+16>>2]|0)>(b|0)){a=-1;i=m;return a|0}c[j>>2]=b;j=c[(CZ(a,j)|0)>>2]|0;f=c[j>>2]|0;j=j+4|0;if((f|0)==(j|0)){a=-1;i=m;return a|0}while(1){g=c[f+20>>2]|0;if((g|0)!=0?(qga(c[g+4>>2]|0,d)|0)==0:0)break;g=c[f+4>>2]|0;if(!g)while(1){g=c[f+8>>2]|0;if((c[g>>2]|0)==(f|0)){f=g;break}else f=g}else{f=g;while(1){g=c[f>>2]|0;if(!g)break;else f=g}}if((f|0)==(j|0)){f=-1;l=17;break}}if((l|0)==17){i=m;return f|0}a=e[g>>1]|0;i=m;return a|0}function KL(a,b){a=a|0;b=b|0;a=i;switch(b|0){case 4:{b=5;break}case 22:{b=8;break}case 20:case 19:case 18:case 17:case 16:case 15:case 14:case 13:case 12:case 11:case 10:case 9:case 8:case 7:case 6:case 5:{b=4;break}case 3:case 2:case 1:break;case 23:{b=9;break}case 21:{b=6;break}default:b=-1}i=a;return b|0}function LL(){var a=0;a=i;if(!(c[90984]|0)){i=a;return}c[90984]=0;c[90986]=aw(285)|0;i=a;return}function ML(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;o=p;k=p+24|0;f=p+22|0;g=p+12|0;m=p+8|0;n=p+20|0;j=p+16|0;b[f>>1]=0;c[g>>2]=0;c[o>>2]=f;c[o+4>>2]=g;if(!(Zv(a,34735,o)|0)){o=1;i=p;return o|0}g=FL()|0;l=0;while(1){e=363952+(l*20|0)|0;h=363960+(l*20|0)|0;if((l|0)!=6){b[n>>1]=0;c[j>>2]=0;e=c[e>>2]|0;c[o>>2]=n;c[o+4>>2]=j;if(Zv(a,e,o)|0){f=kL()|0;if(!f){e=0;f=12;break}e=e&65535;h=c[h>>2]|0;wL(f,h)|0;vL(f,e)|0;tL(f,HL(g,22,e,k)|0)|0;uL(f,IL(g,22,e)|0)|0;h=AL(h)|0;yL(f,ea(b[n>>1]|0,h)|0)|0;xL(f,b[n>>1]|0)|0;zL(f,c[j>>2]|0)|0;kJ(8,d,nL(f)|0,f)|0;lL(f)}}else{c[m>>2]=0;f=c[e>>2]|0;c[o>>2]=m;if(!(Zv(a,f,o)|0)){l=l+1|0;continue}e=kL()|0;if(!e){e=0;f=12;break}f=f&65535;wL(e,c[h>>2]|0)|0;vL(e,f)|0;tL(e,HL(g,22,f,k)|0)|0;uL(e,IL(g,22,f)|0)|0;yL(e,(Dga(c[m>>2]|0)|0)+1|0)|0;xL(e,rL(e)|0)|0;zL(e,c[m>>2]|0)|0;kJ(8,d,nL(e)|0,e)|0;lL(e)}l=l+1|0;if(l>>>0>=8){e=1;f=12;break}}if((f|0)==12){i=p;return e|0}return 0}function NL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;k=l;g=l+16|0;j=l+8|0;if(!(lJ(8,b)|0)){i=l;return 1}e=FL()|0;h=0;do{c[j>>2]=0;f=c[363952+(h*20|0)>>2]|0;do if(UI(8,b,HL(e,22,f&65535,g)|0,j)|0){m=(pL(c[j>>2]|0)|0)==2;d=c[j>>2]|0;if(m){c[k>>2]=sL(d)|0;Xv(a,f,k)|0;break}else{d=qL(d)|0;m=sL(c[j>>2]|0)|0;c[k>>2]=d;c[k+4>>2]=m;Xv(a,f,k)|0;break}}while(0);h=h+1|0}while((h|0)!=8);i=l;return 1}function OL(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;FL()|0;f=Ew(a)|0;a:do if((f|0)>0){g=0;while(1){if(!(FZ(a,Fw(a,g)|0,e,d)|0)){f=0;break}g=g+1|0;if((g|0)>=(f|0))break a}i=r;return f|0}while(0);if((d|0)!=1){a=1;i=r;return a|0}p=c[a+660>>2]|0;if((p|0)<=0){a=1;i=r;return a|0}m=a+656|0;n=a+224|0;o=a+228|0;q=0;l=0;while(1){k=c[(c[m>>2]|0)+(q<<2)>>2]|0;f=ow(k)|0;do if((f|0)==(l|0))f=l;else{g=b[k+24>>1]|0;if(g<<16>>16==65){g=c[n>>2]|0;if((g|0)<=0){f=l;break}d=c[o>>2]|0;h=0;j=0;do{j=(c[d+(h*12|0)>>2]|0)==(k|0)|j;h=h+1|0}while((h|0)<(g|0));if(!j){f=l;break}}else if(!(c[a+(((g&65535)>>>5&65535)<<2)+40>>2]&1<<(g&31))){f=l;break}FZ(a,f,e,1)|0}while(0);q=q+1|0;if((q|0)==(p|0)){f=1;break}else l=f}i=r;return f|0}function PL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+32|0;o=q;n=q+12|0;l=q+16|0;m=q+8|0;if((b|0)!=1){p=0;i=q;return p|0}if(!(lJ(1,d)|0)){p=0;i=q;return p|0}f=FL()|0;g=c[a+660>>2]|0;if((g|0)<=0){p=1;i=q;return p|0}h=a+656|0;j=0;do{b=c[(c[h>>2]|0)+(j<<2)>>2]|0;e=ow(b)|0;if((e|0)==285){c[n>>2]=0;c[o>>2]=n;Zv(a,285,o)|0;if(!(c[n>>2]|0))p=7}else if(!((e|0)==530|(e|0)==532|(e|0)==529|(e|0)==33723|(e|0)==341|(e|0)==340|(e|0)==339|(e|0)==338|(e|0)==325|(e|0)==324|(e|0)==323|(e|0)==322|(e|0)==321|(e|0)==320|(e|0)==317|(e|0)==300|(e|0)==297|(e|0)==296|(e|0)==293|(e|0)==292|(e|0)==291|(e|0)==290|(e|0)==289|(e|0)==288|(e|0)==284|(e|0)==283|(e|0)==282|(e|0)==281|(e|0)==280|(e|0)==279|(e|0)==278|(e|0)==277|(e|0)==274|(e|0)==273|(e|0)==266|(e|0)==265|(e|0)==264|(e|0)==263|(e|0)==262|(e|0)==259|(e|0)==258|(e|0)==257|(e|0)==256|(e|0)==255|(e|0)==254))p=7;do if((((p|0)==7?(p=0,c[m>>2]=0,(UI(1,d,HL(f,1,e&65535,l)|0,m)|0)!=0):0)?(k=pL(c[m>>2]|0)|0,(qw(b)|0)==(k|0)):0)?(b=mw(k)|0,(b|0)==(AL(k)|0)):0){b=c[m>>2]|0;if((k|0)==2){c[o>>2]=sL(b)|0;Xv(a,e,o)|0;break}else{r=qL(b)|0;b=sL(c[m>>2]|0)|0;c[o>>2]=r;c[o+4>>2]=b;Xv(a,e,o)|0;break}}while(0);j=j+1|0}while((j|0)!=(g|0));b=1;i=q;return b|0}function QL(c,d){c=c|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;if(!(II(c)|0)){c=0;i=o;return c|0}e=EI(c)|0;h=HI(c)|0;if((e|0)==1){if(!((h|0)==24|(h|0)==32)){c=0;i=o;return c|0}if((d|0)==4)if((h|0)==32)n=3;else{c=0;i=o;return c|0}else if((d|0)==3)n=0;else if((d|0)==2)n=1;else if((d|0)==1)n=2;else{c=0;i=o;return c|0}m=FI(c)|0;k=GI(c)|0;l=yI(m,k,8,0,0,0)|0;if(!l){c=0;i=o;return c|0}e=VI(l)|0;d=0;do{j=d&255;a[e+(d<<2)+2>>0]=j;a[e+(d<<2)+1>>0]=j;a[e+(d<<2)>>0]=j;d=d+1|0}while((d|0)!=256);e=h>>>3;a:do if(k){if(!m){e=0;while(1){$J(c,e)|0;$J(l,e)|0;e=e+1|0;if((e|0)==(k|0))break a}}else j=0;do{f=$J(c,j)|0;d=$J(l,j)|0;h=0;while(1){a[d+h>>0]=a[f+n>>0]|0;h=h+1|0;if((h|0)==(m|0))break;else f=f+e|0}j=j+1|0}while((j|0)!=(k|0))}while(0);jJ(l,c)|0;c=l;i=o;return c|0}if((e+-9|0)>>>0<2){if((d|0)==3)l=2;else if((d|0)==2)l=1;else if((d|0)==4)if((h|0)==64)l=3;else{c=0;i=o;return c|0}else if((d|0)==1)l=0;else{c=0;i=o;return c|0}k=FI(c)|0;m=GI(c)|0;n=zI(2,k,m,8,0,0,0)|0;if(!n){c=0;i=o;return c|0}e=h>>>4;b:do if(m){if(!k){e=0;while(1){$J(c,e)|0;$J(n,e)|0;e=e+1|0;if((e|0)==(m|0))break b}}else j=0;do{f=$J(c,j)|0;d=$J(n,j)|0;h=0;while(1){b[d+(h<<1)>>1]=b[f+(l<<1)>>1]|0;h=h+1|0;if((h|0)==(k|0))break;else f=f+(e<<1)|0}j=j+1|0}while((j|0)!=(m|0))}while(0);jJ(n,c)|0;c=n;i=o;return c|0}if((e+-11|0)>>>0>=2){c=0;i=o;return c|0}if((d|0)==2)l=1;else if((d|0)==4)if((h|0)==128)l=3;else{c=0;i=o;return c|0}else if((d|0)==3)l=2;else if((d|0)==1)l=0;else{c=0;i=o;return c|0}k=FI(c)|0;m=GI(c)|0;n=zI(6,k,m,8,0,0,0)|0;if(!n){c=0;i=o;return c|0}e=h>>>5;c:do if(m){if(!k){e=0;while(1){$J(c,e)|0;$J(n,e)|0;e=e+1|0;if((e|0)==(m|0))break c}}else j=0;do{f=$J(c,j)|0;d=$J(n,j)|0;h=0;while(1){g[d+(h<<2)>>2]=+g[f+(l<<2)>>2];h=h+1|0;if((h|0)==(k|0))break;else f=f+(e<<2)|0}j=j+1|0}while((j|0)!=(m|0))}while(0);jJ(n,c)|0;c=n;i=o;return c|0}function RL(c,d,e){c=c|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;a:do if((((II(d)|0)!=0?(II(c)|0)!=0:0)?(n=FI(d)|0,o=GI(d)|0,m=FI(c)|0,(n|0)==(m|0)&(o|0)==(GI(c)|0)):0)?(m=TI(d)|0,l=TI(c)|0,!((l|0)!=2&(l|0)!=4|(m|0)!=1)):0){f=EI(d)|0;h=EI(c)|0;if((h|0)==1&(f|0)==1){m=HI(d)|0;h=HI(c)|0;if((m|0)!=8){f=0;break}f=(h|0)==32;if(!((h|0)==24|(h|0)==32)){f=0;break}if((e|0)==4)if(f)e=3;else{f=0;break}else if((e|0)==3)e=0;else if((e|0)==1)e=2;else if((e|0)==2)e=1;else{f=0;break}f=h>>>3;if(!o){f=1;break}if(!n){f=0;while(1){$J(d,f)|0;$J(c,f)|0;f=f+1|0;if((f|0)==(o|0)){f=1;break a}}}else l=0;while(1){h=$J(d,l)|0;k=$J(c,l)|0;j=0;while(1){a[k+e>>0]=a[h+j>>0]|0;j=j+1|0;if((j|0)==(n|0))break;else k=k+f|0}l=l+1|0;if((l|0)==(o|0)){f=1;break a}}}if((h+-9|0)>>>0<2&(f|0)==2){m=HI(d)|0;h=HI(c)|0;if((m|0)!=16){f=0;break}f=(h|0)==64;if(!((h|0)==48|(h|0)==64)){f=0;break}if((e|0)==2)e=1;else if((e|0)==3)e=2;else if((e|0)==4)if(f)e=3;else{f=0;break}else if((e|0)==1)e=0;else{f=0;break}f=h>>>4;if(!o){f=1;break}if(!n){f=0;while(1){$J(d,f)|0;$J(c,f)|0;f=f+1|0;if((f|0)==(o|0)){f=1;break a}}}else l=0;while(1){h=$J(d,l)|0;k=$J(c,l)|0;j=0;while(1){b[k+(e<<1)>>1]=b[h+(j<<1)>>1]|0;j=j+1|0;if((j|0)==(n|0))break;else k=k+(f<<1)|0}l=l+1|0;if((l|0)==(o|0)){f=1;break a}}}if(((h+-11|0)>>>0<2&(f|0)==6?(m=HI(d)|0,k=HI(c)|0,(m|0)==32):0)?(j=(k|0)==128,(k|0)==96|(k|0)==128):0){if((e|0)==4)if(j)m=3;else{f=0;break}else if((e|0)==1)m=0;else if((e|0)==2)m=1;else if((e|0)==3)m=2;else{f=0;break}h=k>>>5;if(!o)f=1;else{j=(n|0)==0;l=0;do{e=$J(d,l)|0;f=$J(c,l)|0;if(!j){k=0;while(1){g[f+(m<<2)>>2]=+g[e+(k<<2)>>2];k=k+1|0;if((k|0)==(n|0))break;else f=f+(h<<2)|0}}l=l+1|0}while((l|0)!=(o|0));f=1}}else f=0}else f=0;while(0);i=p;return f|0}function SL(b,d,e){b=b|0;d=+d;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(!(II(b)|0)){b=0;i=h;return b|0}if(d==0.0){b=DI(b)|0;i=h;return b|0}d=d*-1.0;f=HI(b)|0;switch(EI(b)|0){case 12:case 11:case 6:case 10:case 9:case 2:{e=GZ(b,d,e)|0;if(!e){h=kc(4)|0;c[h>>2]=1;xd(h|0,378704,0)}jJ(e,b)|0;b=e;i=h;return b|0}case 1:if((f|0)==1){if(+Qfa(d,90.0)!=0.0){b=0;i=h;return b|0}e=GZ(b,d,e)|0;if(!e){h=kc(4)|0;c[h>>2]=1;xd(h|0,378704,0)}f=VI(e)|0;if((TI(b)|0)==1){a[f>>0]=0;a[f+1>>0]=0;a[f+2>>0]=0;a[f+4>>0]=-1;a[f+5>>0]=-1;a[f+6>>0]=-1}else{a[f>>0]=-1;a[f+1>>0]=-1;a[f+2>>0]=-1;a[f+4>>0]=0;a[f+5>>0]=0;a[f+6>>0]=0}jJ(e,b)|0;b=e;i=h;return b|0}else{if(!((f|0)==8|(f|0)==24|(f|0)==32)){b=0;i=h;return b|0}e=GZ(b,d,e)|0;if(!e){h=kc(4)|0;c[h>>2]=1;xd(h|0,378704,0)}if((f|0)==8?(f=VI(b)|0,Aga(VI(e)|0,f|0,1024)|0,f=_I(b)|0,bJ(e,f,aJ(b)|0),(XI(b,g)|0)!=0):0)YI(e,g)|0;jJ(e,b)|0;b=e;i=h;return b|0}default:{b=0;i=h;return b|0}}return 0}function TL(c){c=c|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;if(!(II(c)|0)){c=0;i=p;return c|0}n=FI(c)|0;o=GI(c)|0;f=HI(c)|0;g=EI(c)|0;if((g|0)==1)switch(f|0){case 8:case 4:case 1:{if((TI(c)|0)==3){f=VI(c)|0;if(!(SI(c)|0)){c=1;i=p;return c|0}else g=0;do{m=f+(g<<2)+2|0;a[m>>0]=(d[m>>0]|0)^255;m=f+(g<<2)+1|0;a[m>>0]=(d[m>>0]|0)^255;m=f+(g<<2)|0;a[m>>0]=(d[m>>0]|0)^255;g=g+1|0}while(g>>>0<(SI(c)|0)>>>0);f=1;i=p;return f|0}if(!o){c=1;i=p;return c|0}else h=0;do{f=$J(c,h)|0;if(PI(c)|0){g=0;do{m=f+g|0;a[m>>0]=(d[m>>0]|0)^255;g=g+1|0}while(g>>>0<(PI(c)|0)>>>0)}h=h+1|0}while((h|0)!=(o|0));f=1;i=p;return f|0}case 32:case 24:{j=((PI(c)|0)>>>0)/(n>>>0)|0;if(!o){c=1;i=p;return c|0}k=(j|0)==0;if(!n){f=0;do{$J(c,f)|0;f=f+1|0}while((f|0)!=(o|0));f=1;i=p;return f|0}else l=0;do{f=$J(c,l)|0;if(!k){h=0;while(1){g=0;do{m=f+g|0;a[m>>0]=(d[m>>0]|0)^255;g=g+1|0}while(g>>>0>>0);h=h+1|0;if((h|0)==(n|0))break;else f=f+j|0}}l=l+1|0}while((l|0)!=(o|0));f=1;i=p;return f|0}default:{c=0;i=p;return c|0}}else if((g|0)==2|(g|0)==9|(g|0)==10){h=(((PI(c)|0)>>>0)/(n>>>0)|0)>>>1;if(!o){c=1;i=p;return c|0}l=(n|0)==0;k=(h|0)==0;m=0;do{f=$J(c,m)|0;if(!(l|k)){g=0;while(1){j=0;do{q=f+(j<<1)|0;b[q>>1]=(e[q>>1]|0)^65535;j=j+1|0}while(j>>>0>>0);g=g+1|0;if((g|0)==(n|0))break;else f=f+(h<<1)|0}}m=m+1|0}while((m|0)!=(o|0));f=1;i=p;return f|0}else{q=0;i=p;return q|0}return 0}function UL(c){c=c|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;if(!(II(c)|0)){w=0;i=x;return w|0}r=PI(c)|0;s=FI(c)|0;t=GI(c)|0;u=PI(c)|0;u=(u>>>0)/((FI(c)|0)>>>0)|0;v=uI(r,16)|0;if(!v){w=0;i=x;return w|0}a:do if(t){k=v+(r-u)|0;l=(s|0)==0;m=0-u|0;n=(u|0)==0;o=(r|0)==0;p=r+-1|0;q=s+-1|0;w=0;while(1){j=$J(c,w)|0;Aga(v|0,j|0,r|0)|0;switch(HI(c)|0){case 16:{if(!l){g=0;e=j;f=k;while(1){b[e>>1]=b[f>>1]|0;g=g+1|0;if((g|0)==(s|0))break;else{e=e+2|0;f=f+-2|0}}}break}case 128:case 96:case 64:case 48:case 32:case 24:{if(!(l|n)){h=0;e=j;g=k;while(1){f=0;do{j=e;e=e+1|0;a[j>>0]=a[g+f>>0]|0;f=f+1|0}while(f>>>0>>0);h=h+1|0;if((h|0)==(s|0))break;else g=g+m|0}}break}case 1:{if(!l){g=0;do{e=q-g|0;f=e&7;if(!((d[v+(g>>>3)>>0]|0)&128>>>(g&7))){h=j+(e>>>3)|0;a[h>>0]=(d[h>>0]|0)&65407>>>f}else{h=j+(e>>>3)|0;a[h>>0]=d[h>>0]|0|128>>>f}g=g+1|0}while((g|0)!=(s|0))}break}case 4:{if(!o){e=0;do{g=a[v+(p-e)>>0]|0;a[j+e>>0]=(g&255)<<4|(g&255)>>>4&255;e=e+1|0}while((e|0)!=(r|0))}break}case 8:{if(!l){g=0;e=j;f=k;while(1){a[e>>0]=a[f>>0]|0;g=g+1|0;if((g|0)==(s|0))break;else{e=e+1|0;f=f+-1|0}}}break}default:{}}w=w+1|0;if((w|0)==(t|0))break a}}while(0);vI(v);w=1;i=x;return w|0}function VL(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;h=i;if(!(II(a)|0)){g=0;i=h;return g|0}f=OI(a)|0;b=GI(a)|0;g=uI(f,16)|0;if(!g){g=0;i=h;return g|0}c=QI(a)|0;d=b>>>1;if(d){e=0;a=ea(b+-1|0,f)|0;b=0;while(1){k=c+e|0;Aga(g|0,k|0,f|0)|0;j=c+a|0;Aga(k|0,j|0,f|0)|0;Aga(j|0,g|0,f|0)|0;b=b+1|0;if(b>>>0>=d>>>0)break;else{e=e+f|0;a=a-f|0}}}vI(g);k=1;i=h;return k|0}function WL(a,b){a=a|0;b=b|0;c[a+504>>2]=215;c[a+500>>2]=0;c[a+508>>2]=215;c[a+520>>2]=0;c[a+516>>2]=215;return 1}function XL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0;h=i;i=i+16|0;f=h;if(!d){i=h;return}e=0;while(1){oy(a,f,2);g[b>>2]=+((c[f>>2]|0)>>>0);e=e+1|0;if((e|0)==(d|0))break;else{b=b+4|0;a=a+2|0}}i=h;return}function YL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0;h=i;i=i+16|0;f=h;if(!d){i=h;return}e=0;while(1){oy(a,f,4);g[b>>2]=+((c[f>>2]|0)>>>0);e=e+1|0;if((e|0)==(d|0))break;else{b=b+4|0;a=a+4|0}}i=h;return}function ZL(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;if(!c){i=f;return}d=0;while(1){sy(a,e);g[b>>2]=+g[e>>2];d=d+1|0;if((d|0)==(c|0))break;else{b=b+4|0;a=a+4|0}}i=f;return}function _L(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;if(!c){i=f;return}d=0;while(1){qy(a,e);g[b>>2]=+h[e>>3];d=d+1|0;if((d|0)==(c|0))break;else{b=b+4|0;a=a+8|0}}i=f;return}function $L(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g;if(!d){i=g;return}e=0;while(1){oy(a,f,2);c[b>>2]=c[f>>2];e=e+1|0;if((e|0)==(d|0))break;else{b=b+4|0;a=a+2|0}}i=g;return}function aM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g;if(!d){i=g;return}e=0;while(1){oy(a,f,4);c[b>>2]=c[f>>2];e=e+1|0;if((e|0)==(d|0))break;else{b=b+4|0;a=a+4|0}}i=g;return}function bM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0;h=i;i=i+16|0;f=h;if(!d){i=h;return}e=0;while(1){sy(a,f);c[b>>2]=~~+g[f>>2];e=e+1|0;if((e|0)==(d|0))break;else{b=b+4|0;a=a+4|0}}i=h;return}function cM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g;if(!d){i=g;return}e=0;while(1){qy(a,f);c[b>>2]=~~+h[f>>3];e=e+1|0;if((e|0)==(d|0))break;else{b=b+4|0;a=a+8|0}}i=g;return}function dM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=i;if(!c){i=e;return}d=0;while(1){ny(b,~~+g[a>>2]>>>0,2);d=d+1|0;if((d|0)==(c|0))break;else{b=b+2|0;a=a+4|0}}i=e;return}function eM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=i;if(!c){i=e;return}d=0;while(1){ny(b,~~+g[a>>2]>>>0,4);d=d+1|0;if((d|0)==(c|0))break;else{b=b+4|0;a=a+4|0}}i=e;return}function fM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=i;if(!c){i=e;return}d=0;while(1){ry(b,+g[a>>2]);d=d+1|0;if((d|0)==(c|0))break;else{b=b+4|0;a=a+4|0}}i=e;return}function gM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=i;if(!c){i=e;return}d=0;while(1){py(b,+g[a>>2]);d=d+1|0;if((d|0)==(c|0))break;else{b=b+8|0;a=a+4|0}}i=e;return}function hM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+32|0;q=r;m=r+16|0;n=r+8|0;o=r+12|0;c[n>>2]=0;if(!d)Sa(252600,244152,3957,253528);if(!b)Sa(244256,244152,3958,253528);if(!f)Sa(244312,244152,3959,253528);if((e|0)!=8){_y(f,1,253552,q)|0;q=0;i=r;return q|0}p=b+196|0;oy(d,p,2);h=c[p>>2]|0;e=c[b+112>>2]|0;if(h>>>0>=(ea(c[b+116>>2]|0,e)|0)>>>0){c[q>>2]=h;_y(f,1,253584,q)|0;q=0;i=r;return q|0}g=c[b+156>>2]|0;l=(h>>>0)%(e>>>0)|0;k=(h>>>0)/(e>>>0)|0;oy(d+2|0,m,4);j=d+6|0;e=c[m>>2]|0;do if((e|0)!=0&e>>>0<14){if((e|0)==12){c[q>>2]=12;_y(f,2,253608,q)|0;e=c[m>>2]|0;break}c[q>>2]=e;_y(f,1,253648,q)|0;q=0;i=r;return q|0}while(0);if(!e){_y(f,4,253712,q)|0;c[b+72>>2]=1}oy(j,o,1);oy(d+7|0,n,1);e=c[n>>2]|0;j=g+(h*5632|0)+5580|0;g=c[j>>2]|0;do if(!e)e=g;else{h=c[o>>2]|0;if((g+-1|0)>>>0>>0){c[q>>2]=h;c[q+4>>2]=g;_y(f,1,253824,q)|0;c[b+72>>2]=1;q=0;i=r;return q|0}if(h>>>0>>0){c[j>>2]=e;break}c[q>>2]=h;c[q+4>>2]=e;_y(f,1,253928,q)|0;c[b+72>>2]=1;q=0;i=r;return q|0}while(0);if((e|0)!=0?(e|0)==((c[o>>2]|0)+1|0):0){d=b+76|0;a[d>>0]=a[d>>0]|1}if(!(c[b+72>>2]|0))c[b+24>>2]=(c[m>>2]|0)+-12;else c[b+24>>2]=0;c[b+8>>2]=16;e=c[b+60>>2]|0;do if((e|0)!=-1)if((e|0)>-1){l=b+76|0;a[l>>0]=((c[p>>2]|0)!=(e|0)&1)<<2&255|a[l>>0]&-5;break}else Sa(254040,244152,4111,253528);else{if((l>>>0>=(c[b+28>>2]|0)>>>0?l>>>0<(c[b+36>>2]|0)>>>0:0)?k>>>0>=(c[b+32>>2]|0)>>>0:0)e=(k>>>0>=(c[b+40>>2]|0)>>>0&1)<<2&255;else e=4;l=b+76|0;a[l>>0]=a[l>>0]&-5|e}while(0);k=b+192|0;e=c[k>>2]|0;if(!e){q=1;i=r;return q|0}j=e+40|0;h=c[j>>2]|0;if(!h)Sa(254104,244152,4119,253528);d=c[p>>2]|0;c[h+(d*40|0)>>2]=d;c[h+(d*40|0)+12>>2]=c[o>>2];e=c[n>>2]|0;if(e){c[h+(d*40|0)+4>>2]=e;c[h+(d*40|0)+8>>2]=c[n>>2];e=c[h+(d*40|0)+16>>2]|0;if(!e){q=Cfa(c[n>>2]|0,24)|0;c[(c[j>>2]|0)+(d*40|0)+16>>2]=q;q=1;i=r;return q|0}e=Dfa(e,(c[n>>2]|0)*24|0)|0;if(!e){Bfa(c[(c[(c[k>>2]|0)+40>>2]|0)+((c[p>>2]|0)*40|0)+16>>2]|0);c[(c[(c[k>>2]|0)+40>>2]|0)+((c[p>>2]|0)*40|0)+16>>2]=0;_y(f,1,254144,q)|0;q=0;i=r;return q|0}else{c[(c[(c[k>>2]|0)+40>>2]|0)+((c[p>>2]|0)*40|0)+16>>2]=e;q=1;i=r;return q|0}}e=c[h+(d*40|0)+16>>2]|0;if(!e){c[h+(d*40|0)+8>>2]=10;n=Cfa(10,24)|0;h=c[j>>2]|0;c[h+(d*40|0)+16>>2]=n;j=n}else j=e;g=c[o>>2]|0;e=h+(d*40|0)+8|0;if(g>>>0<(c[e>>2]|0)>>>0){q=1;i=r;return q|0}o=g+1|0;c[e>>2]=o;e=Dfa(j,o*24|0)|0;if(!e){Bfa(c[(c[(c[k>>2]|0)+40>>2]|0)+((c[p>>2]|0)*40|0)+16>>2]|0);p=c[p>>2]|0;o=c[(c[k>>2]|0)+40>>2]|0;c[o+(p*40|0)+16>>2]=0;c[o+(p*40|0)+8>>2]=0;_y(f,1,254144,q)|0;q=0;i=r;return q|0}else{c[(c[(c[k>>2]|0)+40>>2]|0)+((c[p>>2]|0)*40|0)+16>>2]=e;q=1;i=r;return q|0}return 0}function iM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;n=s;l=s+8|0;f=s+4|0;c[l>>2]=d;if(!b)Sa(252600,244152,2404,256144);if(!a)Sa(244256,244152,2405,256144);if(!e)Sa(244312,244152,2406,256144);r=a+80|0;h=c[r>>2]|0;m=a+8|0;if((c[m>>2]|0)==16)k=(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)|0;else k=c[a+12>>2]|0;if(d>>>0<5){_y(e,1,256168,n)|0;r=0;i=s;return r|0}oy(b,k,1);oy(b+1|0,f,1);c[k+4>>2]=c[f>>2];f=k+8|0;oy(b+2|0,f,2);g=c[a+164>>2]|0;if(!g)c[k+12>>2]=c[f>>2];else c[k+12>>2]=g;oy(b+4|0,k+16|0,1);j=b+5|0;c[l>>2]=d+-5;h=c[h+16>>2]|0;if(h){b=c[k>>2]&1;f=c[k+5576>>2]|0;g=0;do{c[f+(g*1080|0)>>2]=b;g=g+1|0}while(g>>>0>>0)}if(!(IZ(a,0,j,l,e)|0)){_y(e,1,256168,n)|0;r=0;i=s;return r|0}if(c[l>>2]|0){_y(e,1,256168,n)|0;r=0;i=s;return r|0}if((c[m>>2]|0)==16)f=(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)|0;else f=c[a+12>>2]|0;f=c[f+5576>>2]|0;j=f+4|0;b=c[j>>2]|0;k=b<<2;if((c[(c[r>>2]|0)+16>>2]|0)>>>0<=1){r=1;i=s;return r|0}a=f+8|0;e=f+12|0;n=f+16|0;o=f+20|0;p=f+812|0;q=f+944|0;c[f+1084>>2]=b;h=c[a>>2]|0;c[f+1088>>2]=h;l=c[e>>2]|0;c[f+1092>>2]=l;d=c[n>>2]|0;c[f+1096>>2]=d;g=c[o>>2]|0;c[f+1100>>2]=g;Aga(f+1892|0,p|0,k|0)|0;Aga(f+2024|0,q|0,k|0)|0;if((c[(c[r>>2]|0)+16>>2]|0)>>>0>2){m=h;h=3}else{r=1;i=s;return r|0}while(1){c[f+2164>>2]=b;c[f+2168>>2]=m;c[f+2172>>2]=l;c[f+2176>>2]=d;c[f+2180>>2]=g;Aga(f+2972|0,p|0,k|0)|0;Aga(f+3104|0,q|0,k|0)|0;if(h>>>0>=(c[(c[r>>2]|0)+16>>2]|0)>>>0){f=1;break}f=f+1080|0;b=c[j>>2]|0;m=c[a>>2]|0;l=c[e>>2]|0;d=c[n>>2]|0;g=c[o>>2]|0;h=h+1|0}i=s;return f|0}function jM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;f=n+8|0;l=n+4|0;c[f>>2]=d;if(!b)Sa(252600,244152,2610,255672);if(!a)Sa(244256,244152,2611,255672);if(!e)Sa(244312,244152,2612,255672);if((c[a+8>>2]|0)==16)k=(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)|0;else k=c[a+12>>2]|0;g=(c[a+80>>2]|0)+16|0;h=(c[g>>2]|0)>>>0<257?1:2;j=h+1|0;if(j>>>0>d>>>0){_y(e,1,255696,m)|0;m=0;i=n;return m|0}c[f>>2]=d-j;oy(b,l,h);d=c[l>>2]|0;if(d>>>0>=(c[g>>2]|0)>>>0){_y(e,1,255728,m)|0;m=0;i=n;return m|0}oy(b+h|0,(c[k+5576>>2]|0)+(d*1080|0)|0,1);if(!(IZ(a,c[l>>2]|0,b+j|0,f,e)|0)){_y(e,1,255696,m)|0;m=0;i=n;return m|0}if(!(c[f>>2]|0)){m=1;i=n;return m|0}_y(e,1,255696,m)|0;m=0;i=n;return m|0}function kM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;f=k+12|0;if(!b)Sa(252600,244152,4503,253408);if(!a)Sa(244256,244152,4504,253408);if(!e)Sa(244312,244152,4505,253408);h=c[(c[a+80>>2]|0)+16>>2]|0;g=h>>>0<257?1:2;if((g+2|0)!=(d|0)){_y(e,1,253432,j)|0;e=0;i=k;return e|0}if((c[a+8>>2]|0)==16)a=(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)|0;else a=c[a+12>>2]|0;oy(b,f,g);oy(b+g|0,k+8|0,1);d=c[f>>2]|0;if(d>>>0>>0){oy(b+(g+1)|0,(c[a+5576>>2]|0)+(d*1080|0)+808|0,1);e=1;i=k;return e|0}else{c[j>>2]=d;c[j+4>>2]=h;_y(e,1,253464,j)|0;e=0;i=k;return e|0}return 0}function lM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=h+4|0;c[f>>2]=d;if(!b)Sa(252600,244152,2721,255616);if(!a)Sa(244256,244152,2722,255616);if(!e)Sa(244312,244152,2723,255616);if(!(JZ(a,0,b,f,e)|0)){_y(e,1,255640,g)|0;a=0;i=h;return a|0}if(c[f>>2]|0){_y(e,1,255640,g)|0;a=0;i=h;return a|0}if((c[a+8>>2]|0)==16)f=(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)|0;else f=c[a+12>>2]|0;f=c[f+5576>>2]|0;e=a+80|0;if((c[(c[e>>2]|0)+16>>2]|0)>>>0<=1){a=1;i=h;return a|0}d=f+24|0;g=f+804|0;a=f+28|0;b=1;while(1){c[f+1104>>2]=c[d>>2];c[f+1884>>2]=c[g>>2];Aga(f+1108|0,a|0,776)|0;b=b+1|0;if(b>>>0>=(c[(c[e>>2]|0)+16>>2]|0)>>>0){f=1;break}else f=f+1080|0}i=h;return f|0}function mM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;j=l+12|0;f=l+8|0;c[j>>2]=d;if(!b)Sa(252600,244152,2854,255208);if(!a)Sa(244256,244152,2855,255208);if(!e)Sa(244312,244152,2856,255208);h=a+80|0;do if((c[(c[h>>2]|0)+16>>2]|0)>>>0<257){if(d){oy(b,f,1);g=b+1|0;b=d+-1|0;break}_y(e,1,255232,k)|0;a=0;i=l;return a|0}else{if(d>>>0>=2){oy(b,f,2);g=b+2|0;b=d+-2|0;break}_y(e,1,255232,k)|0;a=0;i=l;return a|0}while(0);c[j>>2]=b;d=c[f>>2]|0;b=c[(c[h>>2]|0)+16>>2]|0;if(d>>>0>=b>>>0){c[k>>2]=d;c[k+4>>2]=b;_y(e,1,255264,k)|0;a=0;i=l;return a|0}if(!(JZ(a,d,g,j,e)|0)){_y(e,1,255232,k)|0;a=0;i=l;return a|0}if(!(c[j>>2]|0)){a=1;i=l;return a|0}_y(e,1,255232,k)|0;a=0;i=l;return a|0}function nM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+16|0;h=t;s=t+4|0;if(!d)Sa(252600,244152,3138,255128);if(!b)Sa(244256,244152,3139,255128);if(!f)Sa(244312,244152,3140,255128);r=c[(c[b+80>>2]|0)+16>>2]|0;q=r>>>0<257?1:2;p=(q<<1)+5|0;g=(e>>>0)/(p>>>0)|0;if((g|0)==0|((e>>>0)%(p>>>0)|0|0)!=0){_y(f,1,255152,h)|0;s=0;i=t;return s|0}if((c[b+8>>2]|0)==16)p=(c[b+156>>2]|0)+((c[b+196>>2]|0)*5632|0)|0;else p=c[b+12>>2]|0;e=p+5628|0;b=a[e>>0]|0;if(!(b&2))o=0;else o=(c[p+420>>2]|0)+1|0;n=o+g|0;if(n>>>0>31){c[h>>2]=n;_y(f,1,255184,h)|0;s=0;i=t;return s|0}a[e>>0]=b|2;if(o>>>0>>0){g=q+1|0;m=p+8|0;h=q+3|0;j=q|4;k=j+q|0;l=k+1|0;f=d;b=o;e=p+(o*148|0)+424|0;while(1){oy(f,e,1);oy(f+1|0,e+4|0,q);d=e+8|0;oy(f+g|0,d,2);u=c[d>>2]|0;o=c[m>>2]|0;c[d>>2]=u>>>0>>0?u:o;oy(f+h|0,e+12|0,1);d=e+16|0;oy(f+j|0,d,q);oy(f+k|0,s,1);c[e+36>>2]=c[s>>2];o=c[d>>2]|0;c[d>>2]=o>>>0>>0?o:r;b=b+1|0;if(b>>>0>=n>>>0)break;else{f=f+l|0;e=e+148|0}}}c[p+420>>2]=n+-1;u=1;i=t;return u|0}function oM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+32|0;y=z;g=z+16|0;o=z+12|0;if(!b)Sa(244256,244152,1919,256224);if(!f)Sa(244312,244152,1920,256224);if(!d)Sa(252600,244152,1921,256224);w=c[b+80>>2]|0;x=b+88|0;if(e>>>0<36){_y(f,1,256248,y)|0;y=0;i=z;return y|0}v=e+-36|0;k=(v>>>0)/3|0;if((v>>>0)%3|0){_y(f,1,256248,y)|0;y=0;i=z;return y|0}oy(d,g,2);c[x>>2]=c[g>>2];q=w+8|0;oy(d+2|0,q,4);u=w+12|0;oy(d+6|0,u,4);oy(d+10|0,w,4);h=w+4|0;oy(d+14|0,h,4);j=b+100|0;oy(d+18|0,j,4);r=b+104|0;oy(d+22|0,r,4);l=b+92|0;oy(d+26|0,l,4);s=b+96|0;oy(d+30|0,s,4);oy(d+34|0,g,2);m=d+36|0;e=c[g>>2]|0;if(e>>>0>=16385){c[y>>2]=e;_y(f,1,256280,y)|0;y=0;i=z;return y|0}e=e&65535;v=w+16|0;c[v>>2]=e;if((e|0)!=(k|0)){c[y>>2]=e;c[y+4>>2]=k;_y(f,1,256344,y)|0;y=0;i=z;return y|0}d=c[w>>2]|0;n=c[q>>2]|0;if(n>>>0>=d>>>0){e=c[h>>2]|0;g=c[u>>2]|0;if(e>>>0<=g>>>0){d=c[j>>2]|0;e=c[r>>2]|0;if(!(ea(e,d)|0)){c[y>>2]=d;c[y+4>>2]=e;_y(f,1,256520,y)|0;y=0;i=z;return y|0}t=Tga(g|0,0,n|0,0)|0;if(!((t|0)==(ea(g,n)|0)&(I|0)==0)){c[y>>2]=n;c[y+4>>2]=g;_y(f,1,256584,y)|0;y=0;i=z;return y|0}e=Cfa(k,52)|0;t=w+24|0;c[t>>2]=e;if(!e){c[v>>2]=0;_y(f,1,256632,y)|0;y=0;i=z;return y|0}Cga(e|0,0,(c[v>>2]|0)*52|0)|0;do if(!(c[v>>2]|0))n=d;else{n=b+160|0;e=0;h=c[t>>2]|0;while(1){oy(m,o,1);c[h+24>>2]=(c[o>>2]&127)+1;c[h+32>>2]=(c[o>>2]|0)>>>7;oy(m+1|0,o,1);c[h>>2]=c[o>>2];oy(m+2|0,o,1);d=c[o>>2]|0;c[h+4>>2]=d;g=c[h>>2]|0;if((g+-1|0)>>>0>254|(d|0)==0|d>>>0>255)break;c[h+36>>2]=0;c[h+40>>2]=c[n>>2];e=e+1|0;if(e>>>0<(c[v>>2]|0)>>>0){m=m+3|0;h=h+52|0}else{p=30;break}}if((p|0)==30){n=c[j>>2]|0;break}c[y>>2]=e;c[y+4>>2]=g;c[y+8>>2]=d;_y(f,1,256680,y)|0;y=0;i=z;return y|0}while(0);if(!n)Sa(250616,250624,105,250664);l=c[l>>2]|0;m=n+-1-l|0;k=(m+(c[q>>2]|0)|0)/(n|0)|0;c[b+112>>2]=k;j=c[r>>2]|0;if(!j)Sa(250616,250624,105,250664);h=c[s>>2]|0;g=j+-1-h|0;e=(g+(c[u>>2]|0)|0)/(j|0)|0;c[b+116>>2]=e;if(!((k|0)==0|(e|0)==0)?k>>>0<=(65535/(e>>>0)|0)>>>0:0){o=ea(k,e)|0;d=b+28|0;if(!(a[b+76>>0]&2)){c[d>>2]=0;c[b+32>>2]=0;c[b+36>>2]=k;c[b+40>>2]=e}else{c[d>>2]=(((c[d>>2]|0)-l|0)>>>0)/(n>>>0)|0;u=b+32|0;c[u>>2]=(((c[u>>2]|0)-h|0)>>>0)/(j>>>0)|0;u=b+36|0;c[u>>2]=(m+(c[u>>2]|0)|0)/(n|0)|0;u=b+40|0;c[u>>2]=(g+(c[u>>2]|0)|0)/(j|0)|0}g=Cfa(o,5632)|0;c[b+156>>2]=g;if(!g){_y(f,1,256632,y)|0;y=0;i=z;return y|0}Cga(g|0,0,o*5632|0)|0;e=Cfa(c[v>>2]|0,1080)|0;d=c[b+12>>2]|0;j=d+5576|0;c[j>>2]=e;if(!e){_y(f,1,256632,y)|0;y=0;i=z;return y|0}Cga(e|0,0,(c[v>>2]|0)*1080|0)|0;e=Afa(200)|0;c[d+5604>>2]=e;if(!e){_y(f,1,256632,y)|0;y=0;i=z;return y|0}Cga(e|0,0,200)|0;c[d+5612>>2]=10;e=Afa(200)|0;c[d+5616>>2]=e;if(!e){_y(f,1,256632,y)|0;y=0;i=z;return y|0}Cga(e|0,0,200)|0;c[d+5624>>2]=10;e=c[v>>2]|0;if(!e)e=0;else{h=c[t>>2]|0;d=0;do{if(!(c[h+(d*52|0)+32>>2]|0))c[(c[j>>2]|0)+(d*1080|0)+1076>>2]=1<<(c[h+(d*52|0)+24>>2]|0)+-1;d=d+1|0}while(d>>>0>>0)}a:do if(o){d=1;while(1){e=Afa(e*1080|0)|0;c[g+5576>>2]=e;if(!e)break;Cga(e|0,0,(c[v>>2]|0)*1080|0)|0;if(d>>>0>=o>>>0)break a;e=c[v>>2]|0;d=d+1|0;g=g+5632|0}_y(f,1,256632,y)|0;y=0;i=z;return y|0}while(0);c[b+8>>2]=4;jz(w,x);y=1;i=z;return y|0}c[y>>2]=k;c[y+4>>2]=e;_y(f,1,256784,y)|0;y=0;i=z;return y|0}}else{g=c[u>>2]|0;e=c[h>>2]|0}c[y>>2]=n-d;c[y+4>>2]=g-e;_y(f,1,256464,y)|0;y=0;i=z;return y|0}function pM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=h+4|0;if(!b)Sa(252600,244152,3258,255016);if(!a)Sa(244256,244152,3259,255016);if(!e)Sa(244312,244152,3260,255016);if(d>>>0<2){_y(e,1,255040,g)|0;g=0;i=h;return g|0}oy(b,h+8|0,1);oy(b+1|0,f,1);a=c[f>>2]|0;if(!(((d+-2|0)>>>0)%(((a>>>5&2)+2+(a>>>4&3)|0)>>>0)|0)){g=1;i=h;return g|0}_y(e,1,255040,g)|0;g=0;i=h;return g|0}function qM(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;i=i+16|0;if(!b)Sa(252600,244152,3313,254960);if(!a)Sa(244256,244152,3314,254960);if(!d)Sa(244312,244152,3315,254960);if(c){a=1;i=e;return a|0}_y(d,1,254984,e)|0;a=0;i=e;return a|0}function rM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=k+4|0;if(!b)Sa(252600,244152,3385,254904);if(!a)Sa(244256,244152,3386,254904);if(!e)Sa(244312,244152,3387,254904);if(!d){_y(e,1,254928,j)|0;e=0;i=k;return e|0}oy(b,k+8|0,1);f=d+-1|0;if(!f){e=1;i=k;return e|0}else{g=0;d=0}do{b=b+1|0;oy(b,h,1);a=c[h>>2]|0;if(!(a&128))d=0;else d=(a&127|d)<<7;g=g+1|0}while((g|0)!=(f|0));if(!d){e=1;i=k;return e|0}_y(e,1,254928,j)|0;e=0;i=k;return e|0}function sM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;r=s;m=s+16|0;q=s+12|0;if(!d)Sa(252600,244152,3534,254344);if(!b)Sa(244256,244152,3535,254344);if(!f)Sa(244312,244152,3536,254344);if(!e){_y(f,1,254360,r)|0;r=0;i=s;return r|0}l=b+180|0;a[l>>0]=a[l>>0]|1;oy(d,m,1);h=d+1|0;k=e+-1|0;g=k>>>0<4;do if(!(c[m>>2]|0)){if(g){_y(f,1,254360,r)|0;r=0;i=s;return r|0}oy(h,q,4);k=e+-5|0;j=c[q>>2]|0;if(k>>>0>>0){q=c[m>>2]|0;c[r>>2]=k;c[r+4>>2]=j;c[r+8>>2]=q;_y(f,1,254392,r)|0;r=b+120|0;Bfa(c[r>>2]|0);c[r>>2]=0;c[b+136>>2]=0;a[l>>0]=a[l>>0]&-2;r=1;i=s;return r|0}c[b+124>>2]=j;c[b+128>>2]=0;g=Afa(j)|0;c[b+120>>2]=g;c[b+136>>2]=g;if(g){Cga(g|0,0,j|0)|0;c[b+132>>2]=g;h=d+5|0;break}_y(f,1,254456,r)|0;r=0;i=s;return r|0}else{if(g){_y(f,2,254496,r)|0;r=1;i=s;return r|0}g=c[b+128>>2]|0;n=b+124|0;j=c[n>>2]|0;if(j>>>0>g>>>0){o=(c[b+120>>2]|0)+g|0;c[b+132>>2]=o;j=j-g|0;c[q>>2]=j;g=o;break}oy(h,q,4);k=e+-5|0;e=c[q>>2]|0;if(k>>>0>>0){q=c[m>>2]|0;c[r>>2]=k;c[r+4>>2]=e;c[r+8>>2]=q;_y(f,1,254392,r)|0;r=b+120|0;Bfa(c[r>>2]|0);c[r>>2]=0;c[b+136>>2]=0;a[l>>0]=a[l>>0]&-2;r=1;i=s;return r|0}j=b+120|0;g=c[j>>2]|0;h=b+136|0;if((g|0)!=(c[h>>2]|0))Sa(254520,244152,3619,254344);g=Dfa(g,(c[n>>2]|0)+e|0)|0;if(g){c[j>>2]=g;c[h>>2]=g;h=c[n>>2]|0;g=g+h|0;c[b+132>>2]=g;j=c[q>>2]|0;c[n>>2]=h+j;h=d+5|0;break}Bfa(c[j>>2]|0);c[j>>2]=0;c[h>>2]=0;c[n>>2]=0;_y(f,1,254632,r)|0;r=0;i=s;return r|0}while(0);a:do if(k>>>0>>0){m=h;l=j}else{n=b+132|0;d=b+128|0;l=b+120|0;m=b+136|0;o=b+124|0;while(1){Aga(g|0,h|0,j|0)|0;g=c[q>>2]|0;e=k-g|0;j=h+g|0;c[d>>2]=(c[d>>2]|0)+g;if((k|0)==(g|0)){m=j;l=k;k=e;break a}oy(j,q,4);h=h+(g+4)|0;k=e+-4|0;j=c[q>>2]|0;if(k>>>0>=j>>>0){g=c[l>>2]|0;if((g|0)!=(c[m>>2]|0)){p=33;break}g=Dfa(g,(c[o>>2]|0)+j|0)|0;if(!g)break;c[l>>2]=g;c[m>>2]=g;e=c[o>>2]|0;c[n>>2]=g+e;j=c[q>>2]|0;c[o>>2]=e+j}if(k>>>0>>0){m=h;l=j;break a}g=c[n>>2]|0}if((p|0)==33)Sa(254520,244152,3666,254344);Bfa(c[l>>2]|0);c[l>>2]=0;c[m>>2]=0;c[o>>2]=0;_y(f,1,254712,r)|0;r=0;i=s;return r|0}while(0);if(!k){r=1;i=s;return r|0}j=b+120|0;g=c[j>>2]|0;h=b+136|0;if((g|0)!=(c[h>>2]|0))Sa(254520,244152,3689,254344);e=b+124|0;g=Dfa(g,l+(c[e>>2]|0)|0)|0;if(!g){Bfa(c[j>>2]|0);c[j>>2]=0;c[h>>2]=0;c[e>>2]=0;_y(f,1,254808,r)|0;r=0;i=s;return r|0}else{c[j>>2]=g;c[h>>2]=g;f=c[e>>2]|0;r=g+f|0;c[b+132>>2]=r;c[e>>2]=f+(c[q>>2]|0);Aga(r|0,m|0,k|0)|0;r=b+128|0;c[r>>2]=(c[r>>2]|0)+k;r=1;i=s;return r|0}return 0}function tM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;l=n;g=n+4|0;if(!d)Sa(252600,244152,3782,254184);if(!b)Sa(244256,244152,3783,254184);if(!f)Sa(244312,244152,3784,254184);if(!e){_y(f,1,254208,l)|0;m=0;i=n;return m|0}if(a[b+180>>0]&1){_y(f,1,254240,l)|0;m=0;i=n;return m|0}m=c[b+196>>2]|0;k=c[b+156>>2]|0;j=k+(m*5632|0)+5628|0;a[j>>0]=a[j>>0]|1;oy(d,g,1);j=d+1|0;h=e+-1|0;do if(!(c[g>>2]|0)){c[k+(m*5632|0)+5168>>2]=0;b=k+(m*5632|0)+5172|0;c[b>>2]=h;e=k+(m*5632|0)+5164|0;Bfa(c[e>>2]|0);b=Cfa(c[b>>2]|0,1)|0;c[e>>2]=b;if(b){c[k+(m*5632|0)+5160>>2]=b;break}_y(f,1,254144,l)|0;m=0;i=n;return m|0}else{b=k+(m*5632|0)+5172|0;e=(c[b>>2]|0)+h|0;c[b>>2]=e;d=k+(m*5632|0)+5164|0;e=Dfa(c[d>>2]|0,e)|0;if(e){c[d>>2]=e;c[k+(m*5632|0)+5160>>2]=e;Cga(e+(c[k+(m*5632|0)+5168>>2]|0)|0,0,h|0)|0;b=c[d>>2]|0;break}Bfa(c[d>>2]|0);c[d>>2]=0;c[b>>2]=0;_y(f,1,254144,l)|0;m=0;i=n;return m|0}while(0);m=k+(m*5632|0)+5168|0;Aga(b+(c[m>>2]|0)|0,j|0,h|0)|0;c[m>>2]=(c[m>>2]|0)+h;m=1;i=n;return m|0}function uM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;i=i+16|0;if(!b)Sa(252600,244152,3218,255072);if(!a)Sa(244256,244152,3219,255072);if(!e)Sa(244312,244152,3220,255072);if((c[(c[a+80>>2]|0)+16>>2]<<2|0)==(d|0)){a=1;i=f;return a|0}_y(e,1,255096,f)|0;a=0;i=f;return a|0}function vM(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=i;if(!a)Sa(244256,244152,2304,256200);if(!d)Sa(244312,244152,2305,256200);if(!b)Sa(252600,244152,2306,256200);else{i=c;return 1}return 0}function wM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;q=r;o=r+4|0;if(!b)Sa(252600,244152,5100,253200);if(!a)Sa(244256,244152,5101,253200);if((c[a+8>>2]|0)==16)j=(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)|0;else j=c[a+12>>2]|0;if(d>>>0<2){_y(e,1,253224,q)|0;q=0;i=r;return q|0}oy(b,o,2);if(c[o>>2]|0){_y(e,2,253256,q)|0;q=1;i=r;return q|0}if(d>>>0<7){_y(e,1,253224,q)|0;q=0;i=r;return q|0}oy(b+2|0,o,2);m=b+4|0;n=c[o>>2]&255;k=j+5604|0;f=c[k>>2]|0;p=j+5608|0;a=c[p>>2]|0;if(a){g=0;h=f;do{if((c[h+8>>2]|0)==(n|0))break;h=h+20|0;g=g+1|0}while(g>>>0>>0);if((g|0)==(a|0))l=18}else{a=0;l=18}if((l|0)==18){g=j+5612|0;do if((a|0)==(c[g>>2]|0)){a=a+10|0;c[g>>2]=a;a=Dfa(f,a*20|0)|0;if(a){c[k>>2]=a;f=c[p>>2]|0;Cga(a+(f*20|0)|0,0,((c[g>>2]|0)-f|0)*20|0)|0;f=c[k>>2]|0;a=c[p>>2]|0;break}Bfa(c[k>>2]|0);c[k>>2]=0;c[g>>2]=0;c[p>>2]=0;_y(e,1,253320,q)|0;q=0;i=r;return q|0}while(0);h=f+(a*20|0)|0}g=h+12|0;a=c[g>>2]|0;if(a){Bfa(a);c[g>>2]=0}c[h+8>>2]=n;l=c[o>>2]|0;c[h+4>>2]=l>>>8&3;c[h>>2]=l>>>10&3;oy(m,o,2);if(c[o>>2]|0){_y(e,2,253360,q)|0;q=1;i=r;return q|0}a=d+-6|0;f=Afa(a)|0;c[g>>2]=f;if(!f){_y(e,1,253224,q)|0;q=0;i=r;return q|0}else{Aga(f|0,b+6|0,a|0)|0;c[h+16>>2]=a;c[p>>2]=(c[p>>2]|0)+1;q=1;i=r;return q|0}return 0}function xM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k;f=k+8|0;j=k+4|0;if(!b)Sa(252600,244152,5800,252624);if(!a)Sa(244256,244152,5801,252624);if(!e)Sa(244312,244152,5802,252624);a=a+80|0;h=c[(c[a>>2]|0)+16>>2]|0;if((h+2|0)!=(d|0)){_y(e,1,252648,g)|0;h=0;i=k;return h|0}oy(b,f,2);if((c[f>>2]|0)!=(h|0)){_y(e,1,252648,g)|0;h=0;i=k;return h|0}if(!h){h=1;i=k;return h|0}f=b+2|0;b=0;a=c[(c[a>>2]|0)+24>>2]|0;while(1){oy(f,j,1);c[a+32>>2]=(c[j>>2]|0)>>>7&1;c[a+24>>2]=(c[j>>2]&127)+1;b=b+1|0;if((b|0)==(h|0)){a=1;break}else{f=f+1|0;a=a+52|0}}i=k;return a|0}function yM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+32|0;z=A;y=A+16|0;v=A+4|0;w=A+8|0;x=A+12|0;if(!d)Sa(252600,244152,5312,252808);if(!b)Sa(244256,244152,5313,252808);if(!f)Sa(244312,244152,5314,252808);if((c[b+8>>2]|0)==16)o=(c[b+156>>2]|0)+((c[b+196>>2]|0)*5632|0)|0;else o=c[b+12>>2]|0;if(e>>>0<2){_y(f,1,252832,z)|0;z=0;i=A;return z|0}oy(d,y,2);if(c[y>>2]|0){_y(f,2,252864,z)|0;z=1;i=A;return z|0}if(e>>>0<7){_y(f,1,252832,z)|0;z=0;i=A;return z|0}oy(d+2|0,v,1);n=d+3|0;l=o+5616|0;g=c[l>>2]|0;u=o+5620|0;b=c[u>>2]|0;if(b){k=c[v>>2]|0;j=0;h=g;do{if((c[h>>2]|0)==(k|0))break;h=h+20|0;j=j+1|0}while(j>>>0>>0);if((j|0)==(b|0))m=21}else{b=0;m=21}if((m|0)==21){h=o+5624|0;do if((b|0)==(c[h>>2]|0)){b=b+10|0;c[h>>2]=b;b=Dfa(g,b*20|0)|0;if(b){c[l>>2]=b;g=c[u>>2]|0;Cga(b+(g*20|0)|0,0,((c[h>>2]|0)-g|0)*20|0)|0;g=c[l>>2]|0;b=c[u>>2]|0;break}Bfa(c[l>>2]|0);c[l>>2]=0;c[h>>2]=0;c[u>>2]=0;_y(f,1,252912,z)|0;z=0;i=A;return z|0}while(0);h=g+(b*20|0)|0}c[h>>2]=c[v>>2];oy(n,y,2);if(c[y>>2]|0){_y(f,2,252864,z)|0;z=1;i=A;return z|0}oy(d+5|0,w,2);g=c[w>>2]|0;if(g>>>0>1){_y(f,2,252952,z)|0;z=1;i=A;return z|0}b=e+-7|0;a:do if(g){r=h+4|0;s=h+16|0;t=h+8|0;p=h+12|0;q=o+5604|0;m=o+5608|0;n=d+7|0;e=0;b:while(1){if(b>>>0<3){m=33;break}oy(n,y,1);if((c[y>>2]|0)!=1){m=35;break}oy(n+1|0,x,2);j=b+-3|0;h=c[x>>2]|0;l=(h>>>15)+1|0;h=h&32767;c[r>>2]=h;g=(ea(l,h)|0)+2|0;if(j>>>0>>0){m=37;break}b=n+3|0;k=j-g|0;if(h){j=0;do{oy(b,y,l);if((c[y>>2]|0)!=(j|0)){m=40;break b}b=b+l|0;j=j+1|0}while(j>>>0<(c[r>>2]|0)>>>0)}oy(b,x,2);g=b+2|0;j=c[x>>2]|0;h=(j>>>15)+1|0;j=j&32767;c[x>>2]=j;if((j|0)!=(c[r>>2]|0)){m=43;break}b=(ea(h,j)|0)+3|0;if(k>>>0>>0){m=45;break}b=k-b|0;if(j){j=0;do{oy(g,y,h);if((c[y>>2]|0)!=(j|0)){m=48;break b}g=g+h|0;j=j+1|0}while(j>>>0<(c[r>>2]|0)>>>0)}oy(g,y,3);n=g+3|0;a[s>>0]=((c[y>>2]|0)>>>16^1)&1|a[s>>0]&-2;c[t>>2]=0;c[p>>2]=0;j=c[y>>2]|0;g=j&255;c[v>>2]=g;if(g){h=c[m>>2]|0;if(!h){m=56;break}k=0;l=c[q>>2]|0;while(1){if((c[l+8>>2]|0)==(g|0))break;k=k+1|0;if(k>>>0>=h>>>0){m=56;break b}else l=l+20|0}c[t>>2]=l;if(!l){m=56;break}}j=j>>>8&255;c[v>>2]=j;if(j){g=c[m>>2]|0;if(!g){m=63;break}h=0;k=c[q>>2]|0;while(1){if((c[k+8>>2]|0)==(j|0))break;h=h+1|0;if(h>>>0>=g>>>0){m=63;break b}else k=k+20|0}c[p>>2]=k;if(!k){m=63;break}}e=e+1|0;if(e>>>0>=(c[w>>2]|0)>>>0)break a}if((m|0)==33){_y(f,1,252832,z)|0;z=0;i=A;return z|0}else if((m|0)==35){_y(f,2,253e3,z)|0;z=1;i=A;return z|0}else if((m|0)==37){_y(f,1,252832,z)|0;z=0;i=A;return z|0}else if((m|0)==40){_y(f,2,253072,z)|0;z=1;i=A;return z|0}else if((m|0)==43){_y(f,2,253128,z)|0;z=1;i=A;return z|0}else if((m|0)==45){_y(f,1,252832,z)|0;z=0;i=A;return z|0}else if((m|0)==48){_y(f,2,253072,z)|0;z=1;i=A;return z|0}else if((m|0)==56){_y(f,1,252832,z)|0;z=0;i=A;return z|0}else if((m|0)==63){_y(f,1,252832,z)|0;z=0;i=A;return z|0}}while(0);if(!b){c[u>>2]=(c[u>>2]|0)+1;z=1;i=A;return z|0}else{_y(f,1,252832,z)|0;z=0;i=A;return z|0}return 0}function zM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;f=t;s=t+8|0;r=t+4|0;if(!b)Sa(252600,244152,5590,252680);if(!a)Sa(244256,244152,5591,252680);if(!e)Sa(244312,244152,5592,252680);n=a+80|0;g=c[n>>2]|0;if((c[a+8>>2]|0)==16)h=(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)|0;else h=c[a+12>>2]|0;if(!d){_y(e,1,252704,f)|0;s=0;i=t;return s|0}oy(b,r,1);a=c[r>>2]|0;if(a>>>0>1){_y(e,2,252736,f)|0;s=1;i=t;return s|0}if((a+1|0)!=(d|0)){_y(e,2,252704,f)|0;s=0;i=t;return s|0}l=h+5576|0;a=c[g+16>>2]|0;if(a){d=0;e=c[l>>2]|0;while(1){c[e+1076>>2]=0;d=d+1|0;if(d>>>0>=a>>>0)break;else e=e+1080|0}}k=h+5596|0;a=c[k>>2]|0;if(a){Bfa(a);c[k>>2]=0}a=b+1|0;if(!(c[r>>2]|0)){s=1;i=t;return s|0}b=h+5616|0;j=h+5620|0;if(!h){oy(a,s,1);Sa(244328,244152,5652,252792)}else{m=a;q=0}while(1){oy(m,s,1);a=c[n>>2]|0;f=c[b>>2]|0;h=c[j>>2]|0;if(((h|0)!=0?!((h|0)==0?1:(c[f>>2]|0)!=(c[s>>2]|0)):0)?(o=c[f+4>>2]|0,p=a+16|0,(o|0)==(c[p>>2]|0)):0){a=c[f+8>>2]|0;if(a){d=ea(o,o)|0;h=ea(c[244376+(c[a>>2]<<2)>>2]|0,d)|0;if((c[a+16>>2]|0)!=(h|0)){a=0;d=39;break}e=Afa(d<<2)|0;c[k>>2]=e;if(!e){a=0;d=39;break}$d[c[243768+(c[a>>2]<<2)>>2]&255](c[a+12>>2]|0,e,d)}a=c[f+12>>2]|0;if(a){d=c[p>>2]|0;h=ea(d,c[244376+(c[a>>2]<<2)>>2]|0)|0;if((c[a+16>>2]|0)!=(h|0)){a=0;d=39;break}g=Afa(d<<2)|0;if(!g){a=0;d=39;break}$d[c[243784+(c[a>>2]<<2)>>2]&255](c[a+12>>2]|0,g,d);a=c[p>>2]|0;if(a){f=0;d=g;e=c[l>>2]|0;while(1){c[e+1076>>2]=c[d>>2];f=f+1|0;if((f|0)==(a|0))break;else{d=d+4|0;e=e+1080|0}}}Bfa(g)}}q=q+1|0;if(q>>>0>=(c[r>>2]|0)>>>0){a=1;d=39;break}else m=m+1|0}if((d|0)==39){i=t;return a|0}return 0}function AM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=h+4|0;if(!b)Sa(258232,257016,2002,258744);if(!a)Sa(257072,257016,2003,258744);if(!e)Sa(257088,257016,2004,258744);a=a+100|0;if(c[a>>2]|0){_y(e,1,258760,g)|0;g=0;i=h;return g|0}if((d|0)!=4){_y(e,1,258816,g)|0;g=0;i=h;return g|0}oy(b,f,4);if((c[f>>2]|0)==218793738){c[a>>2]=c[a>>2]|1;g=1;i=h;return g|0}else{_y(e,1,258856,g)|0;g=0;i=h;return g|0}return 0}function BM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;h=k;if(!b)Sa(258232,257016,2048,258584);if(!a)Sa(257072,257016,2049,258584);if(!e)Sa(257088,257016,2050,258584);j=a+100|0;if((c[j>>2]|0)!=1){_y(e,1,258608,h)|0;h=0;i=k;return h|0}if(d>>>0<8){_y(e,1,258664,h)|0;h=0;i=k;return h|0}oy(b,a+56|0,4);oy(b+4|0,a+60|0,4);b=b+8|0;d=d+-8|0;if(d&3){_y(e,1,258664,h)|0;h=0;i=k;return h|0}d=d>>>2;g=a+64|0;c[g>>2]=d;if(d){d=d<<2;f=Afa(d)|0;c[a+68>>2]=f;if(!f){_y(e,1,258704,h)|0;h=0;i=k;return h|0}else{Cga(f|0,0,d|0)|0;f=a+68|0;d=0;while(1){oy(b,(c[f>>2]|0)+(d<<2)|0,4);d=d+1|0;if(d>>>0>=(c[g>>2]|0)>>>0)break;else b=b+4|0}}}c[j>>2]=c[j>>2]|2;h=1;i=k;return h|0}function CM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;p=r;n=r+8|0;o=r+4|0;if(!b)Sa(258232,257016,2156,258256);if(!a)Sa(257072,257016,2157,258256);if(!e)Sa(257088,257016,2158,258256);q=a+100|0;f=c[q>>2]|0;if(!(f&2)){_y(e,1,258280,p)|0;q=0;i=r;return q|0}m=a+104|0;c[m>>2]=0;do if(d){while(1){if(!b){g=12;break}if(d>>>0<8){g=14;break}oy(b,n,4);g=c[n>>2]|0;oy(b+4|0,n,4);f=b+8|0;l=c[n>>2]|0;if((g|0)==1){if(d>>>0<16){g=17;break}oy(f,o,4);if(c[o>>2]|0){g=19;break}oy(b+12|0,n,4);f=c[n>>2]|0;if(!f){g=21;break}else k=16}else if(!g){g=22;break}else{k=8;f=g}if(d>>>0>>0){g=25;break}else j=0;while(1){h=256896+(j<<3)|0;g=j+1|0;if((c[h>>2]|0)==(l|0)){g=28;break}if(g>>>0<6)j=g;else{g=30;break}}if((g|0)==28){g=0;if(h){if(!(ce[c[256896+(j<<3)+4>>2]&255](a,b+k|0,f-k|0,e)|0)){f=0;g=34;break}}else g=30}if((g|0)==30)c[m>>2]=c[m>>2]|2147483647;if((d|0)==(f|0)){g=32;break}else{b=b+f|0;d=d-f|0}}if((g|0)==12)Sa(258448,257016,2213,258464);else if((g|0)==14)_y(e,1,258496,p)|0;else if((g|0)==17)_y(e,1,258536,p)|0;else if((g|0)==19)_y(e,1,258024,p)|0;else if((g|0)==21)_y(e,1,257736,p)|0;else if((g|0)==22)_y(e,1,257736,p)|0;else if((g|0)==25){_y(e,1,258376,p)|0;q=0;i=r;return q|0}else if((g|0)==32){f=c[q>>2]|0;break}else if((g|0)==34){i=r;return f|0}_y(e,1,258328,p)|0;q=0;i=r;return q|0}while(0);c[q>>2]=f|4;q=1;i=r;return q|0}function DM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(!b)Sa(260568,257016,517,260600);if(!a)Sa(257072,257016,518,260600);if(!e)Sa(257088,257016,519,260600);if((d|0)!=14){_y(e,1,260624,g)|0;g=0;i=h;return g|0}oy(b,a+16|0,4);oy(b+4|0,a+12|0,4);d=a+20|0;oy(b+8|0,d,2);d=(c[d>>2]|0)*12|0;f=Afa(d)|0;c[a+72>>2]=f;if(!f){_y(e,1,260664,g)|0;g=0;i=h;return g|0}Cga(f|0,0,d|0)|0;oy(b+10|0,a+24|0,1);d=a+28|0;oy(b+11|0,d,1);d=c[d>>2]|0;if((d|0)!=7){c[g>>2]=d;_y(e,4,260720,g)|0}oy(b+12|0,a+32|0,1);oy(b+13|0,a+36|0,1);g=1;i=h;return g|0}function EM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l;k=l+4|0;if(!b)Sa(257072,257016,1205,259624);if(!d)Sa(259648,257016,1206,259624);if(!f)Sa(257088,257016,1207,259624);if(e>>>0<3){_y(f,1,259680,h)|0;j=0;i=l;return j|0}j=b+124|0;if(a[j>>0]|0){_y(f,4,259712,h)|0;j=1;i=l;return j|0}g=b+40|0;oy(d,g,1);oy(d+1|0,b+52|0,1);oy(d+2|0,b+44|0,1);d=d+3|0;g=c[g>>2]|0;if((g|0)==1){if(e>>>0<7){c[h>>2]=e;_y(f,1,259824,h)|0;j=0;i=l;return j|0}if(e>>>0>7){c[h>>2]=e;_y(f,2,259824,h)|0}oy(d,b+48|0,4);a[j>>0]=1;j=1;i=l;return j|0}else if((g|0)==2){h=e+-3|0;g=b+112|0;c[g>>2]=h;f=Afa(h)|0;e=b+108|0;c[e>>2]=f;if(!f){c[g>>2]=0;j=0;i=l;return j|0}Cga(f|0,0,h|0)|0;if((h|0)>0){g=0;while(1){oy(d,k,1);a[(c[e>>2]|0)+g>>0]=c[k>>2];g=g+1|0;if((g|0)==(h|0))break;else d=d+1|0}}a[j>>0]=1;j=1;i=l;return j|0}else{if(g>>>0<=2){j=1;i=l;return j|0}c[h>>2]=g;_y(f,4,259864,h)|0;j=1;i=l;return j|0}return 0}function FM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j;if(!b)Sa(260368,257016,657,260392);if(!a)Sa(257072,257016,658,260392);if(!e)Sa(257088,257016,659,260392);f=c[a+24>>2]|0;if((f|0)!=255){c[g>>2]=f;_y(e,2,260416,g)|0}h=a+20|0;if((c[h>>2]|0)!=(d|0)){_y(e,1,260536,g)|0;h=0;i=j;return h|0}if(!d){h=1;i=j;return h|0}a=a+72|0;f=0;while(1){oy(b,(c[a>>2]|0)+(f*12|0)+8|0,1);f=f+1|0;if(f>>>0>=(c[h>>2]|0)>>>0){b=1;break}else b=b+1|0}i=j;return b|0}function GM(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;q=r;if(!f)Sa(260312,257016,936,260344);if(!e)Sa(257072,257016,937,260344);if(!h)Sa(257088,257016,938,260344);j=e+120|0;if((c[j>>2]|0)!=0|g>>>0<3){g=0;i=r;return g|0}oy(f,q,2);k=c[q>>2]|0;oy(f+2|0,q,1);e=c[q>>2]|0;n=e&65535;if((n+3|0)>>>0>g>>>0|(n|0)==0){g=0;i=r;return g|0}o=k&65535;if(o>>>0>=(4294967295/(n>>>0)|0)>>>0){g=0;i=r;return g|0}m=Afa(ea(o<<2,n)|0)|0;if(!m){g=0;i=r;return g|0}p=Afa(n)|0;if(!p){Bfa(m);g=0;i=r;return g|0}l=Afa(n)|0;if(!l){Bfa(m);Bfa(p);g=0;i=r;return g|0}h=Afa(20)|0;if(!h){Bfa(m);Bfa(p);Bfa(l);g=0;i=r;return g|0}c[h+4>>2]=l;c[h+8>>2]=p;c[h>>2]=m;b[h+16>>1]=k;a[h+18>>0]=e;c[h+12>>2]=0;c[j>>2]=h;e=f+3|0;h=0;j=0;do{oy(e,q,1);e=e+1|0;k=c[q>>2]|0;a[p+h>>0]=(k&127)+1;a[l+h>>0]=k>>>7&1;j=j+1<<16>>16;h=j&65535}while(h>>>0>>0);if(!o){g=1;i=r;return g|0}h=m;l=0;a:while(1){j=e;e=0;k=0;do{e=((d[p+e>>0]|0)+7|0)>>>3;e=e>>>0>4?4:e;if((j-f+e|0)>(g|0)){e=0;h=25;break a}oy(j,q,e);j=j+e|0;c[h>>2]=c[q>>2];h=h+4|0;k=k+1<<16>>16;e=k&65535}while(e>>>0>>0);l=l+1<<16>>16;if((l&65535)>>>0>=o>>>0){e=1;h=25;break}else e=j}if((h|0)==25){i=r;return e|0}return 0}function HM(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;j=n;m=n+4|0;if(!d)Sa(257072,257016,1031,260136);if(!e)Sa(260160,257016,1032,260136);if(!g)Sa(257088,257016,1033,260136);l=d+120|0;d=c[l>>2]|0;if(!d){_y(g,1,260192,j)|0;k=0;i=n;return k|0}if(c[d+12>>2]|0){_y(g,1,260240,j)|0;k=0;i=n;return k|0}k=a[d+18>>0]|0;h=(k&255)<<2;if(h>>>0>f>>>0){_y(g,1,260272,j)|0;k=0;i=n;return k|0}f=Afa(h)|0;if(!f){k=0;i=n;return k|0}if(k<<24>>24){d=e;h=0;while(1){oy(d,m,2);b[f+(h<<2)>>1]=c[m>>2];oy(d+2|0,m,1);a[f+(h<<2)+2>>0]=c[m>>2];oy(d+3|0,m,1);a[f+(h<<2)+3>>0]=c[m>>2];h=h+1|0;if((h&255)<<24>>24==k<<24>>24)break;else d=d+4|0}d=c[l>>2]|0}c[d+12>>2]=f;k=1;i=n;return k|0}function IM(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;h=m;l=m+4|0;if(!a)Sa(257072,257016,1139,259976);if(!d)Sa(26e4,257016,1140,259976);if(!g)Sa(257088,257016,1141,259976);k=a+116|0;if(c[k>>2]|0){k=0;i=m;return k|0}if(f>>>0<2){_y(g,1,260032,h)|0;k=0;i=m;return k|0}oy(d,l,2);j=c[l>>2]|0;a=j&65535;if(!a){_y(g,1,260072,h)|0;k=0;i=m;return k|0}if(((a*6|0)+2|0)>>>0>f>>>0){_y(g,1,260032,h)|0;k=0;i=m;return k|0}f=Afa(j*6|0)|0;if(!f){k=0;i=m;return k|0}a=Afa(8)|0;c[k>>2]=a;if(!a){Bfa(f);k=0;i=m;return k|0}c[a>>2]=f;h=j&65535;b[a+4>>1]=h;if(!(h<<16>>16)){k=1;i=m;return k|0}else a=0;do{h=a&65535;oy(d+2|0,l,2);b[f+(h*6|0)>>1]=c[l>>2];oy(d+4|0,l,2);d=d+6|0;b[f+(h*6|0)+2>>1]=c[l>>2];oy(d,l,2);b[f+(h*6|0)+4>>1]=c[l>>2];a=a+1<<16>>16}while((a&65535)<(e[(c[k>>2]|0)+4>>1]|0));d=1;i=m;return d|0}function JM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;j=(c[a+12>>2]|0)+-5|0;j=j>>>0<65535?j:65535;l=a+116|0;p=a+108|0;q=a+92|0;m=a+44|0;o=a+56|0;while(1){d=c[l>>2]|0;if(d>>>0<2){mT(a);d=c[l>>2]|0;if(!(d|b)){d=0;g=35;break}if(!d){g=20;break}}d=(c[p>>2]|0)+d|0;c[p>>2]=d;c[l>>2]=0;e=c[q>>2]|0;g=e+j|0;if(!((d|0)!=0&d>>>0>>0)){c[l>>2]=d-g;c[p>>2]=g;if((e|0)>-1)d=(c[o>>2]|0)+e|0;else d=0;rI(a,d,j,0);c[q>>2]=c[p>>2];g=c[a>>2]|0;e=c[g+28>>2]|0;pI(e);f=e+20|0;d=c[f>>2]|0;h=g+16|0;u=c[h>>2]|0;d=d>>>0>u>>>0?u:d;if((d|0)!=0?(u=g+12|0,k=e+16|0,Aga(c[u>>2]|0,c[k>>2]|0,d|0)|0,c[u>>2]=(c[u>>2]|0)+d,c[k>>2]=(c[k>>2]|0)+d,u=g+20|0,c[u>>2]=(c[u>>2]|0)+d,c[h>>2]=(c[h>>2]|0)-d,u=c[f>>2]|0,c[f>>2]=u-d,(u|0)==(d|0)):0)c[k>>2]=c[e+8>>2];if(!(c[(c[a>>2]|0)+16>>2]|0)){d=0;g=35;break}d=c[p>>2]|0;e=c[q>>2]|0}g=d-e|0;if(g>>>0<((c[m>>2]|0)+-262|0)>>>0)continue;if((e|0)>-1)d=(c[o>>2]|0)+e|0;else d=0;rI(a,d,g,0);c[q>>2]=c[p>>2];g=c[a>>2]|0;e=c[g+28>>2]|0;pI(e);f=e+20|0;d=c[f>>2]|0;h=g+16|0;u=c[h>>2]|0;d=d>>>0>u>>>0?u:d;if((d|0)!=0?(u=g+12|0,n=e+16|0,Aga(c[u>>2]|0,c[n>>2]|0,d|0)|0,c[u>>2]=(c[u>>2]|0)+d,c[n>>2]=(c[n>>2]|0)+d,u=g+20|0,c[u>>2]=(c[u>>2]|0)+d,c[h>>2]=(c[h>>2]|0)-d,u=c[f>>2]|0,c[f>>2]=u-d,(u|0)==(d|0)):0)c[n>>2]=c[e+8>>2];if(!(c[(c[a>>2]|0)+16>>2]|0)){d=0;g=35;break}}if((g|0)==20){c[a+5812>>2]=0;if((b|0)==4){e=c[q>>2]|0;if((e|0)>-1)d=(c[o>>2]|0)+e|0;else d=0;rI(a,d,(c[p>>2]|0)-e|0,1);c[q>>2]=c[p>>2];e=c[a>>2]|0;f=c[e+28>>2]|0;pI(f);g=f+20|0;d=c[g>>2]|0;h=e+16|0;u=c[h>>2]|0;d=d>>>0>u>>>0?u:d;if((d|0)!=0?(u=e+12|0,r=f+16|0,Aga(c[u>>2]|0,c[r>>2]|0,d|0)|0,c[u>>2]=(c[u>>2]|0)+d,c[r>>2]=(c[r>>2]|0)+d,u=e+20|0,c[u>>2]=(c[u>>2]|0)+d,c[h>>2]=(c[h>>2]|0)-d,u=c[g>>2]|0,c[g>>2]=u-d,(u|0)==(d|0)):0)c[r>>2]=c[f+8>>2];u=(c[(c[a>>2]|0)+16>>2]|0)==0?2:3;i=t;return u|0}g=c[p>>2]|0;e=c[q>>2]|0;if((g|0)>(e|0)){if((e|0)>-1)d=(c[o>>2]|0)+e|0;else d=0;rI(a,d,g-e|0,0);c[q>>2]=c[p>>2];g=c[a>>2]|0;e=c[g+28>>2]|0;pI(e);f=e+20|0;d=c[f>>2]|0;h=g+16|0;u=c[h>>2]|0;d=d>>>0>u>>>0?u:d;if((d|0)!=0?(u=g+12|0,s=e+16|0,Aga(c[u>>2]|0,c[s>>2]|0,d|0)|0,c[u>>2]=(c[u>>2]|0)+d,c[s>>2]=(c[s>>2]|0)+d,u=g+20|0,c[u>>2]=(c[u>>2]|0)+d,c[h>>2]=(c[h>>2]|0)-d,u=c[f>>2]|0,c[f>>2]=u-d,(u|0)==(d|0)):0)c[s>>2]=c[e+8>>2];if(!(c[(c[a>>2]|0)+16>>2]|0)){u=0;i=t;return u|0}}u=1;i=t;return u|0}else if((g|0)==35){i=t;return d|0}return 0}function KM(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;O=i;s=e+116|0;t=(f|0)==0;C=e+72|0;D=e+88|0;L=e+108|0;J=e+56|0;E=e+84|0;F=e+68|0;G=e+52|0;H=e+64|0;u=e+44|0;v=e+96|0;w=e+112|0;I=e+5792|0;x=e+5796|0;y=e+5784|0;z=e+5788|0;A=e+128|0;K=e+92|0;while(1){if((c[s>>2]|0)>>>0<262){mT(e);g=c[s>>2]|0;if(g>>>0<262&t){g=0;k=41;break}if(!g){k=26;break}if(g>>>0<=2)k=9;else k=6}else k=6;if((k|0)==6){k=0;r=c[L>>2]|0;n=((d[(c[J>>2]|0)+(r+2)>>0]|0)^c[C>>2]<>2])&c[E>>2];c[C>>2]=n;n=(c[F>>2]|0)+(n<<1)|0;q=b[n>>1]|0;b[(c[H>>2]|0)+((c[G>>2]&r)<<1)>>1]=q;g=q&65535;b[n>>1]=r;if(q<<16>>16!=0?(r-g|0)>>>0<=((c[u>>2]|0)+-262|0)>>>0:0){g=KZ(e,g)|0;c[v>>2]=g}else k=9}if((k|0)==9)g=c[v>>2]|0;do if(g>>>0>2){r=g+253|0;g=(c[L>>2]|0)-(c[w>>2]|0)|0;q=c[I>>2]|0;b[(c[x>>2]|0)+(q<<1)>>1]=g;c[I>>2]=q+1;a[(c[y>>2]|0)+q>>0]=r;r=e+((d[298536+(r&255)>>0]|0|256)+1<<2)+148|0;b[r>>1]=(b[r>>1]|0)+1<<16>>16;g=g+65535&65535;if(g>>>0>=256)g=(g>>>7)+256|0;r=e+((d[298024+g>>0]|0)<<2)+2440|0;b[r>>1]=(b[r>>1]|0)+1<<16>>16;r=(c[I>>2]|0)==((c[z>>2]|0)+-1|0)&1;g=c[v>>2]|0;q=(c[s>>2]|0)-g|0;c[s>>2]=q;if(!(q>>>0>2?g>>>0<=(c[A>>2]|0)>>>0:0)){h=(c[L>>2]|0)+g|0;c[L>>2]=h;c[v>>2]=0;q=c[J>>2]|0;g=d[q+h>>0]|0;c[C>>2]=g;c[C>>2]=((d[q+(h+1)>>0]|0)^g<>2])&c[E>>2];g=r;break}n=g+-1|0;c[v>>2]=n;g=c[D>>2]|0;k=c[J>>2]|0;h=c[E>>2]|0;j=c[F>>2]|0;l=c[G>>2]|0;m=c[H>>2]|0;p=c[L>>2]|0;q=c[C>>2]|0;while(1){o=p+1|0;c[L>>2]=o;q=((d[k+(p+3)>>0]|0)^q<>2]=q;P=j+(q<<1)|0;b[m+((l&o)<<1)>>1]=b[P>>1]|0;b[P>>1]=o;n=n+-1|0;c[v>>2]=n;if(!n)break;else p=o}h=p+2|0;c[L>>2]=h;g=r}else{g=a[(c[J>>2]|0)+(c[L>>2]|0)>>0]|0;h=c[I>>2]|0;b[(c[x>>2]|0)+(h<<1)>>1]=0;c[I>>2]=h+1;a[(c[y>>2]|0)+h>>0]=g;g=e+((g&255)<<2)+148|0;b[g>>1]=(b[g>>1]|0)+1<<16>>16;g=(c[I>>2]|0)==((c[z>>2]|0)+-1|0)&1;c[s>>2]=(c[s>>2]|0)+-1;h=(c[L>>2]|0)+1|0;c[L>>2]=h}while(0);if(!g)continue;g=c[K>>2]|0;if((g|0)>-1)k=(c[J>>2]|0)+g|0;else k=0;rI(e,k,h-g|0,0);c[K>>2]=c[L>>2];k=c[e>>2]|0;h=c[k+28>>2]|0;pI(h);j=h+20|0;g=c[j>>2]|0;l=k+16|0;P=c[l>>2]|0;g=g>>>0>P>>>0?P:g;if((g|0)!=0?(P=k+12|0,B=h+16|0,Aga(c[P>>2]|0,c[B>>2]|0,g|0)|0,c[P>>2]=(c[P>>2]|0)+g,c[B>>2]=(c[B>>2]|0)+g,P=k+20|0,c[P>>2]=(c[P>>2]|0)+g,c[l>>2]=(c[l>>2]|0)-g,P=c[j>>2]|0,c[j>>2]=P-g,(P|0)==(g|0)):0)c[B>>2]=c[h+8>>2];if(!(c[(c[e>>2]|0)+16>>2]|0)){g=0;k=41;break}}if((k|0)==26){h=c[L>>2]|0;c[e+5812>>2]=h>>>0<2?h:2;if((f|0)==4){k=c[K>>2]|0;if((k|0)>-1)g=(c[J>>2]|0)+k|0;else g=0;rI(e,g,h-k|0,1);c[K>>2]=c[L>>2];h=c[e>>2]|0;j=c[h+28>>2]|0;pI(j);k=j+20|0;g=c[k>>2]|0;l=h+16|0;P=c[l>>2]|0;g=g>>>0>P>>>0?P:g;if((g|0)!=0?(P=h+12|0,M=j+16|0,Aga(c[P>>2]|0,c[M>>2]|0,g|0)|0,c[P>>2]=(c[P>>2]|0)+g,c[M>>2]=(c[M>>2]|0)+g,P=h+20|0,c[P>>2]=(c[P>>2]|0)+g,c[l>>2]=(c[l>>2]|0)-g,P=c[k>>2]|0,c[k>>2]=P-g,(P|0)==(g|0)):0)c[M>>2]=c[j+8>>2];P=(c[(c[e>>2]|0)+16>>2]|0)==0?2:3;i=O;return P|0}if(c[I>>2]|0){k=c[K>>2]|0;if((k|0)>-1)g=(c[J>>2]|0)+k|0;else g=0;rI(e,g,h-k|0,0);c[K>>2]=c[L>>2];k=c[e>>2]|0;h=c[k+28>>2]|0;pI(h);j=h+20|0;g=c[j>>2]|0;l=k+16|0;P=c[l>>2]|0;g=g>>>0>P>>>0?P:g;if((g|0)!=0?(P=k+12|0,N=h+16|0,Aga(c[P>>2]|0,c[N>>2]|0,g|0)|0,c[P>>2]=(c[P>>2]|0)+g,c[N>>2]=(c[N>>2]|0)+g,P=k+20|0,c[P>>2]=(c[P>>2]|0)+g,c[l>>2]=(c[l>>2]|0)-g,P=c[j>>2]|0,c[j>>2]=P-g,(P|0)==(g|0)):0)c[N>>2]=c[h+8>>2];if(!(c[(c[e>>2]|0)+16>>2]|0)){P=0;i=O;return P|0}}P=1;i=O;return P|0}else if((k|0)==41){i=O;return g|0}return 0}function LM(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;O=i;n=e+116|0;o=(f|0)==0;y=e+72|0;D=e+88|0;L=e+108|0;J=e+56|0;E=e+84|0;F=e+68|0;G=e+52|0;H=e+64|0;p=e+96|0;q=e+120|0;r=e+112|0;s=e+100|0;I=e+5792|0;t=e+5796|0;u=e+5784|0;w=e+5788|0;x=e+104|0;K=e+92|0;z=e+128|0;A=e+44|0;B=e+136|0;a:while(1){g=c[n>>2]|0;while(1){if(g>>>0<262){mT(e);g=c[n>>2]|0;if(g>>>0<262&o){g=0;h=57;break a}if(!g){h=40;break a}if(g>>>0<=2){c[q>>2]=c[p>>2];c[s>>2]=c[r>>2];c[p>>2]=2;g=2;h=16}else h=8}else h=8;do if((h|0)==8){h=0;m=c[L>>2]|0;k=((d[(c[J>>2]|0)+(m+2)>>0]|0)^c[y>>2]<>2])&c[E>>2];c[y>>2]=k;k=(c[F>>2]|0)+(k<<1)|0;l=b[k>>1]|0;b[(c[H>>2]|0)+((c[G>>2]&m)<<1)>>1]=l;g=l&65535;b[k>>1]=m;k=c[p>>2]|0;c[q>>2]=k;c[s>>2]=c[r>>2];c[p>>2]=2;if(l<<16>>16)if(k>>>0<(c[z>>2]|0)>>>0)if(((c[L>>2]|0)-g|0)>>>0<=((c[A>>2]|0)+-262|0)>>>0){g=KZ(e,g)|0;c[p>>2]=g;if(g>>>0<6){if((c[B>>2]|0)!=1){if((g|0)!=3){h=16;break}if(((c[L>>2]|0)-(c[r>>2]|0)|0)>>>0<=4096){g=3;h=16;break}}c[p>>2]=2;g=2;h=16}else h=16}else{g=2;h=16}else g=2;else{g=2;h=16}}while(0);if((h|0)==16)k=c[q>>2]|0;if(!(k>>>0<3|g>>>0>k>>>0))break;if(!(c[x>>2]|0)){c[x>>2]=1;c[L>>2]=(c[L>>2]|0)+1;g=(c[n>>2]|0)+-1|0;c[n>>2]=g;continue}l=a[(c[J>>2]|0)+((c[L>>2]|0)+-1)>>0]|0;m=c[I>>2]|0;b[(c[t>>2]|0)+(m<<1)>>1]=0;c[I>>2]=m+1;a[(c[u>>2]|0)+m>>0]=l;l=e+((l&255)<<2)+148|0;b[l>>1]=(b[l>>1]|0)+1<<16>>16;if((c[I>>2]|0)==((c[w>>2]|0)+-1|0)){g=c[K>>2]|0;if((g|0)>-1)k=(c[J>>2]|0)+g|0;else k=0;rI(e,k,(c[L>>2]|0)-g|0,0);c[K>>2]=c[L>>2];k=c[e>>2]|0;h=c[k+28>>2]|0;pI(h);j=h+20|0;g=c[j>>2]|0;l=k+16|0;m=c[l>>2]|0;g=g>>>0>m>>>0?m:g;if((g|0)!=0?(m=k+12|0,C=h+16|0,Aga(c[m>>2]|0,c[C>>2]|0,g|0)|0,c[m>>2]=(c[m>>2]|0)+g,c[C>>2]=(c[C>>2]|0)+g,m=k+20|0,c[m>>2]=(c[m>>2]|0)+g,c[l>>2]=(c[l>>2]|0)-g,l=c[j>>2]|0,c[j>>2]=l-g,(l|0)==(g|0)):0)c[C>>2]=c[h+8>>2]}c[L>>2]=(c[L>>2]|0)+1;g=(c[n>>2]|0)+-1|0;c[n>>2]=g;if(!(c[(c[e>>2]|0)+16>>2]|0)){g=0;h=57;break a}}g=c[L>>2]|0;m=g+-3+(c[n>>2]|0)|0;l=k+253|0;g=g+65535-(c[s>>2]|0)|0;j=c[I>>2]|0;b[(c[t>>2]|0)+(j<<1)>>1]=g;c[I>>2]=j+1;a[(c[u>>2]|0)+j>>0]=l;l=e+((d[298536+(l&255)>>0]|0|256)+1<<2)+148|0;b[l>>1]=(b[l>>1]|0)+1<<16>>16;g=g+65535&65535;if(g>>>0>=256)g=(g>>>7)+256|0;j=e+((d[298024+g>>0]|0)<<2)+2440|0;b[j>>1]=(b[j>>1]|0)+1<<16>>16;j=c[I>>2]|0;l=(c[w>>2]|0)+-1|0;h=c[q>>2]|0;c[n>>2]=1-h+(c[n>>2]|0);h=h+-2|0;c[q>>2]=h;k=c[L>>2]|0;while(1){g=k+1|0;c[L>>2]=g;if(g>>>0<=m>>>0){P=((d[(c[J>>2]|0)+(k+3)>>0]|0)^c[y>>2]<>2])&c[E>>2];c[y>>2]=P;P=(c[F>>2]|0)+(P<<1)|0;b[(c[H>>2]|0)+((c[G>>2]&g)<<1)>>1]=b[P>>1]|0;b[P>>1]=g}h=h+-1|0;c[q>>2]=h;if(!h)break;else k=g}c[x>>2]=0;c[p>>2]=2;h=k+2|0;c[L>>2]=h;if((j|0)!=(l|0))continue;g=c[K>>2]|0;if((g|0)>-1)k=(c[J>>2]|0)+g|0;else k=0;rI(e,k,h-g|0,0);c[K>>2]=c[L>>2];k=c[e>>2]|0;h=c[k+28>>2]|0;pI(h);j=h+20|0;g=c[j>>2]|0;l=k+16|0;P=c[l>>2]|0;g=g>>>0>P>>>0?P:g;if((g|0)!=0?(P=k+12|0,v=h+16|0,Aga(c[P>>2]|0,c[v>>2]|0,g|0)|0,c[P>>2]=(c[P>>2]|0)+g,c[v>>2]=(c[v>>2]|0)+g,P=k+20|0,c[P>>2]=(c[P>>2]|0)+g,c[l>>2]=(c[l>>2]|0)-g,P=c[j>>2]|0,c[j>>2]=P-g,(P|0)==(g|0)):0)c[v>>2]=c[h+8>>2];if(!(c[(c[e>>2]|0)+16>>2]|0)){g=0;h=57;break}}if((h|0)==40){if(c[x>>2]|0){P=a[(c[J>>2]|0)+((c[L>>2]|0)+-1)>>0]|0;H=c[I>>2]|0;b[(c[t>>2]|0)+(H<<1)>>1]=0;c[I>>2]=H+1;a[(c[u>>2]|0)+H>>0]=P;P=e+((P&255)<<2)+148|0;b[P>>1]=(b[P>>1]|0)+1<<16>>16;c[x>>2]=0}h=c[L>>2]|0;c[e+5812>>2]=h>>>0<2?h:2;if((f|0)==4){k=c[K>>2]|0;if((k|0)>-1)g=(c[J>>2]|0)+k|0;else g=0;rI(e,g,h-k|0,1);c[K>>2]=c[L>>2];h=c[e>>2]|0;j=c[h+28>>2]|0;pI(j);k=j+20|0;g=c[k>>2]|0;l=h+16|0;P=c[l>>2]|0;g=g>>>0>P>>>0?P:g;if((g|0)!=0?(P=h+12|0,M=j+16|0,Aga(c[P>>2]|0,c[M>>2]|0,g|0)|0,c[P>>2]=(c[P>>2]|0)+g,c[M>>2]=(c[M>>2]|0)+g,P=h+20|0,c[P>>2]=(c[P>>2]|0)+g,c[l>>2]=(c[l>>2]|0)-g,P=c[k>>2]|0,c[k>>2]=P-g,(P|0)==(g|0)):0)c[M>>2]=c[j+8>>2];P=(c[(c[e>>2]|0)+16>>2]|0)==0?2:3;i=O;return P|0}if(c[I>>2]|0){k=c[K>>2]|0;if((k|0)>-1)g=(c[J>>2]|0)+k|0;else g=0;rI(e,g,h-k|0,0);c[K>>2]=c[L>>2];k=c[e>>2]|0;h=c[k+28>>2]|0;pI(h);j=h+20|0;g=c[j>>2]|0;l=k+16|0;P=c[l>>2]|0;g=g>>>0>P>>>0?P:g;if((g|0)!=0?(P=k+12|0,N=h+16|0,Aga(c[P>>2]|0,c[N>>2]|0,g|0)|0,c[P>>2]=(c[P>>2]|0)+g,c[N>>2]=(c[N>>2]|0)+g,P=k+20|0,c[P>>2]=(c[P>>2]|0)+g,c[l>>2]=(c[l>>2]|0)-g,P=c[j>>2]|0,c[j>>2]=P-g,(P|0)==(g|0)):0)c[N>>2]=c[h+8>>2];if(!(c[(c[e>>2]|0)+16>>2]|0)){P=0;i=O;return P|0}}P=1;i=O;return P|0}else if((h|0)==57){i=O;return g|0}return 0}function MM(a,b,c){a=a|0;b=b|0;c=c|0;return}function NM(a,b,c){a=a|0;b=b|0;c=c|0;return}function OM(a){a=a|0;return 1}function PM(a){a=a|0;return} +function Z0(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=i;B=d+448|0;E=c[B>>2]|0;D=d+116|0;c[D>>2]=c[E+16>>2];u=c[E+20>>2]|0;C=Od[c[c[d+4>>2]>>2]&255](d,1,u<<5)|0;c[C>>2]=0;c[C+4>>2]=31;c[C+8>>2]=0;c[C+12>>2]=63;c[C+16>>2]=0;c[C+20>>2]=31;B2(c[(c[B>>2]|0)+24>>2]|0,C);if((u|0)>1){e=1;do{if((e<<1|0)>(u|0)){j=C;k=0;l=0;g=0;while(1){h=c[j+24>>2]|0;f=(h|0)>(l|0);g=f?j:g;k=k+1|0;if((k|0)==(e|0))break;else{j=j+32|0;l=f?h:l}}}else{j=C;k=0;h=0;g=0;while(1){f=c[j+28>>2]|0;if((f|0)>(h|0)){A=(c[j+24>>2]|0)>0;f=A?f:h;g=A?j:g}else f=h;k=k+1|0;if((k|0)==(e|0))break;else{j=j+32|0;h=f}}}if(!g)break;h=C+(e<<5)|0;f=g+4|0;c[C+(e<<5)+4>>2]=c[f>>2];k=g+12|0;c[C+(e<<5)+12>>2]=c[k>>2];j=g+20|0;c[C+(e<<5)+20>>2]=c[j>>2];c[h>>2]=c[g>>2];q=g+8|0;l=C+(e<<5)+8|0;c[l>>2]=c[q>>2];s=g+16|0;m=C+(e<<5)+16|0;c[m>>2]=c[s>>2];n=c[f>>2]|0;o=c[g>>2]|0;z=n-o<<4;p=c[k>>2]|0;q=c[q>>2]|0;A=(p-q|0)*12|0;r=c[j>>2]|0;s=c[s>>2]|0;t=(z|0)>(A|0);t=(r-s<<3|0)>((t?z:A)|0)?2:t&1^1;if((t|0)==2){A=(s+r|0)/2|0;c[j>>2]=A;c[m>>2]=A+1}else if((t|0)==1){A=(q+p|0)/2|0;c[k>>2]=A;c[l>>2]=A+1}else if(!t){A=(o+n|0)/2|0;c[f>>2]=A;c[h>>2]=A+1}B2(c[(c[B>>2]|0)+24>>2]|0,g);B2(c[(c[B>>2]|0)+24>>2]|0,h);e=e+1|0}while((e|0)<(u|0));if((e|0)<=0){B=e;D=d+112|0;c[D>>2]=B;D=c[d>>2]|0;C=D+20|0;c[C>>2]=98;C=D+24|0;c[C>>2]=B;D=D+4|0;D=c[D>>2]|0;Jd[D&255](d,1);d=E+28|0;a[d>>0]=1;i=F;return}}else e=1;A=0;do{s=c[(c[B>>2]|0)+24>>2]|0;h=c[C+(A<<5)>>2]|0;t=c[C+(A<<5)+4>>2]|0;u=c[C+(A<<5)+8>>2]|0;v=c[C+(A<<5)+12>>2]|0;w=c[C+(A<<5)+16>>2]|0;x=c[C+(A<<5)+20>>2]|0;if((h|0)>(t|0)){j=0;h=0;g=0;f=0}else{y=(u|0)>(v|0);z=(w|0)>(x|0);r=h;j=0;h=0;g=0;f=0;while(1){if(!y){p=c[s+(r<<2)>>2]|0;q=r<<3|4;o=u;while(1){if(!z){l=o<<2|2;k=w;n=p+(o<<6)+(w<<1)|0;while(1){G=b[n>>1]|0;m=G&65535;if(G<<16>>16){j=(ea(m,q)|0)+j|0;h=(ea(m,l)|0)+h|0;g=(ea(m,k<<3|4)|0)+g|0;f=m+f|0}if((k|0)<(x|0)){k=k+1|0;n=n+2|0}else break}}if((o|0)<(v|0))o=o+1|0;else break}}if((r|0)<(t|0))r=r+1|0;else break}}G=f>>1;a[(c[c[D>>2]>>2]|0)+A>>0]=(G+j|0)/(f|0)|0;a[(c[(c[D>>2]|0)+4>>2]|0)+A>>0]=(G+h|0)/(f|0)|0;a[(c[(c[D>>2]|0)+8>>2]|0)+A>>0]=(G+g|0)/(f|0)|0;A=A+1|0}while((A|0)!=(e|0));G=d+112|0;c[G>>2]=e;G=c[d>>2]|0;D=G+20|0;c[D>>2]=98;D=G+24|0;c[D>>2]=e;G=G+4|0;G=c[G>>2]|0;Jd[G&255](d,1);G=E+28|0;a[G>>0]=1;i=F;return}function _0(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=i;j=c[e+448>>2]|0;S=c[j+24>>2]|0;T=c[e+92>>2]|0;U=c[e+300>>2]|0;V=c[j+40>>2]|0;Q=c[e+116>>2]|0;O=c[Q>>2]|0;P=c[Q+4>>2]|0;Q=c[Q+8>>2]|0;if((h|0)<=0){i=W;return}R=j+36|0;I=j+32|0;J=(T|0)==0;K=T+-1|0;L=K*3|0;M=(T*3|0)+3|0;N=0;do{k=c[f+(N<<2)>>2]|0;l=c[g+(N<<2)>>2]|0;if(!(a[R>>0]|0)){G=1;H=3;j=c[I>>2]|0;m=1}else{G=-1;H=-3;j=(c[I>>2]|0)+(M<<1)|0;k=k+L|0;l=l+K|0;m=0}a[R>>0]=m;if(J){l=0;m=0;k=0}else{v=H+1|0;w=H+2|0;F=ea(T,H)|0;x=0;y=0;z=0;A=0;D=0;E=0;B=T;n=0;m=0;q=0;C=j;while(1){u=C;C=C+(H<<1)|0;t=d[U+((d[k>>0]|0)+(c[V+(n+8+(b[C>>1]|0)>>4<<2)>>2]|0))>>0]|0;s=d[U+((d[k+1>>0]|0)+(c[V+(m+8+(b[u+(v<<1)>>1]|0)>>4<<2)>>2]|0))>>0]|0;p=d[U+((d[k+2>>0]|0)+(c[V+(q+8+(b[u+(w<<1)>>1]|0)>>4<<2)>>2]|0))>>0]|0;q=p>>>3;r=s>>>2;o=t>>>3;n=(c[S+(o<<2)>>2]|0)+(r<<6)+(q<<1)|0;m=b[n>>1]|0;if(!(m<<16>>16)){C2(e,o,r,q);m=b[n>>1]|0}m=(m&65535)+-1|0;a[l>>0]=m;o=x;x=t-(d[O+m>>0]|0)|0;r=y;y=s-(d[P+m>>0]|0)|0;t=z;z=p-(d[Q+m>>0]|0)|0;m=x<<1;n=m+x|0;b[u>>1]=n+A;n=n+m|0;A=n+o|0;o=y<<1;p=o+y|0;b[u+2>>1]=p+D;p=p+o|0;D=p+r|0;r=z<<1;q=r+z|0;b[u+4>>1]=q+E;q=q+r|0;E=q+t|0;B=B+-1|0;if(!B)break;else{n=n+m|0;m=p+o|0;q=q+r|0;k=k+H|0;l=l+G|0}}l=A&65535;m=D&65535;k=E&65535;j=j+(F<<1)|0}b[j>>1]=l;b[j+2>>1]=m;b[j+4>>1]=k;N=N+1|0}while((N|0)!=(h|0));i=W;return}function $0(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;o=c[(c[e+448>>2]|0)+24>>2]|0;p=c[e+92>>2]|0;if((h|0)<=0){i=v;return}q=(p|0)==0;u=0;do{if(!q){r=p;s=c[f+(u<<2)>>2]|0;t=c[g+(u<<2)>>2]|0;while(1){k=(d[s>>0]|0)>>>3;l=(d[s+1>>0]|0)>>>2;m=(d[s+2>>0]|0)>>>3;n=(c[o+(k<<2)>>2]|0)+(l<<6)+(m<<1)|0;j=b[n>>1]|0;if(!(j<<16>>16)){C2(e,k,l,m);j=b[n>>1]|0}a[t>>0]=(j&65535)+255;r=r+-1|0;if(!r)break;else{s=s+3|0;t=t+1|0}}}u=u+1|0}while((u|0)!=(h|0));i=v;return}function a1(a){a=a|0;return}function b1(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;f=c[b+4>>2]|0;if(!f){o=b+4|0;c[d>>2]=o;i=p;return o|0}h=a[e>>0]|0;k=(h&255)>>>1;l=e+1|0;n=e+8|0;m=e+4|0;a:do if(!(h&1))while(1){j=f+16|0;g=a[j>>0]|0;e=(g&1)==0;if(e){h=(g&255)>>>1;b=j+1|0}else{h=c[f+20>>2]|0;b=c[f+24>>2]|0}b=pga(l,b,h>>>0>>0?h:k)|0;if(!b){if(k>>>0>>0)o=16}else if((b|0)<0)o=16;if((o|0)==16){o=0;b=c[f>>2]|0;if(!b){b=f;o=24;break}else{f=b;continue}}if(e){e=(g&255)>>>1;b=j+1|0}else{e=c[f+20>>2]|0;b=c[f+24>>2]|0}b=pga(b,l,k>>>0>>0?k:e)|0;if(!b){if(e>>>0>=k>>>0){o=33;break a}}else if((b|0)>=0){o=33;break a}b=f+4|0;e=c[b>>2]|0;if(!e){o=32;break}else f=e}else while(1){k=f+16|0;b=c[m>>2]|0;e=a[k>>0]|0;j=(e&1)==0;if(j){h=(e&255)>>>1;g=k+1|0}else{h=c[f+20>>2]|0;g=c[f+24>>2]|0}g=pga(c[n>>2]|0,g,h>>>0>>0?h:b)|0;if(!g){if(b>>>0>>0)o=23}else if((g|0)<0)o=23;if((o|0)==23){o=0;b=c[f>>2]|0;if(!b){b=f;o=24;break}else{f=b;continue}}if(j){g=(e&255)>>>1;b=k+1|0}else{g=c[f+20>>2]|0;b=c[f+24>>2]|0}e=c[m>>2]|0;b=pga(b,c[n>>2]|0,e>>>0>>0?e:g)|0;if(!b){if(g>>>0>=e>>>0){o=33;break a}}else if((b|0)>=0){o=33;break a}b=f+4|0;e=c[b>>2]|0;if(!e){o=32;break}else f=e}while(0);if((o|0)==24){c[d>>2]=f;o=b;i=p;return o|0}else if((o|0)==32){c[d>>2]=f;o=b;i=p;return o|0}else if((o|0)==33){c[d>>2]=f;o=d;i=p;return o|0}return 0}function c1(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;j=(d|0)==(b|0);a[d+12>>0]=j&1;if(j){i=l;return}while(1){h=d+8|0;k=c[h>>2]|0;f=k+12|0;if(a[f>>0]|0){g=37;break}j=k+8|0;e=c[j>>2]|0;g=c[e>>2]|0;if((g|0)==(k|0)){g=c[e+4>>2]|0;if(!g){g=7;break}g=g+12|0;if(a[g>>0]|0){g=7;break}a[f>>0]=1;a[e+12>>0]=(e|0)==(b|0)&1;a[g>>0]=1}else{if(!g){g=24;break}g=g+12|0;if(a[g>>0]|0){g=24;break}a[f>>0]=1;a[e+12>>0]=(e|0)==(b|0)&1;a[g>>0]=1}if((e|0)==(b|0)){g=37;break}else d=e}if((g|0)==7){if((c[k>>2]|0)==(d|0)){d=k;b=e;g=k}else{b=k+4|0;g=c[b>>2]|0;d=c[g>>2]|0;c[b>>2]=d;if(!d)d=e;else{c[d+8>>2]=k;d=c[j>>2]|0}e=g+8|0;c[e>>2]=d;d=c[j>>2]|0;if((c[d>>2]|0)==(k|0))c[d>>2]=g;else c[d+4>>2]=g;c[g>>2]=k;c[j>>2]=g;j=c[e>>2]|0;d=g;b=j;g=c[j>>2]|0}a[d+12>>0]=1;a[b+12>>0]=0;f=g+4|0;d=c[f>>2]|0;c[b>>2]=d;if(d)c[d+8>>2]=b;d=b+8|0;c[g+8>>2]=c[d>>2];e=c[d>>2]|0;if((c[e>>2]|0)==(b|0))c[e>>2]=g;else c[e+4>>2]=g;c[f>>2]=b;c[d>>2]=g;i=l;return}else if((g|0)==24){if((c[k>>2]|0)==(d|0)){f=d+4|0;g=c[f>>2]|0;c[k>>2]=g;if(g){c[g+8>>2]=k;e=c[j>>2]|0}c[h>>2]=e;e=c[j>>2]|0;if((c[e>>2]|0)==(k|0))c[e>>2]=d;else c[e+4>>2]=d;c[f>>2]=k;c[j>>2]=d;g=c[h>>2]|0}else{d=k;g=e}a[d+12>>0]=1;a[g+12>>0]=0;j=g+4|0;f=c[j>>2]|0;d=c[f>>2]|0;c[j>>2]=d;if(d)c[d+8>>2]=g;d=g+8|0;c[f+8>>2]=c[d>>2];e=c[d>>2]|0;if((c[e>>2]|0)==(g|0))c[e>>2]=f;else c[e+4>>2]=f;c[f>>2]=g;c[d>>2]=f;i=l;return}else if((g|0)==37){i=l;return}}function d1(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;f=c[b+4>>2]|0;if(!f){r=b+4|0;c[d>>2]=r;i=s;return r|0}o=a[e>>0]|0;n=(o&1)==0;o=(o&255)>>>1;p=e+1|0;q=e+8|0;m=e+4|0;while(1){k=f+16|0;if(n)j=o;else j=c[m>>2]|0;g=a[k>>0]|0;l=(g&1)==0;if(l)h=(g&255)>>>1;else h=c[f+20>>2]|0;if(n)b=p;else b=c[q>>2]|0;if(l)e=k+1|0;else e=c[f+24>>2]|0;b=pga(b,e,h>>>0>>0?h:j)|0;if(!b){if(j>>>0>>0)r=16}else if((b|0)<0)r=16;if((r|0)==16){r=0;b=c[f>>2]|0;if(!b){r=17;break}else{f=b;continue}}if(l)h=(g&255)>>>1;else h=c[f+20>>2]|0;if(n)g=o;else g=c[m>>2]|0;if(l)b=k+1|0;else b=c[f+24>>2]|0;if(n)e=p;else e=c[q>>2]|0;b=pga(b,e,g>>>0>>0?g:h)|0;if(!b){if(h>>>0>=g>>>0){r=33;break}}else if((b|0)>=0){r=33;break}b=f+4|0;e=c[b>>2]|0;if(!e){r=32;break}else f=e}if((r|0)==17){c[d>>2]=f;r=f;i=s;return r|0}else if((r|0)==32){c[d>>2]=f;r=b;i=s;return r|0}else if((r|0)==33){c[d>>2]=f;r=d;i=s;return r|0}return 0}function e1(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=i;i=i+16|0;v=z;u=z+7|0;r=z+4|0;s=z+5|0;t=z+6|0;c[v>>2]=0;a[u>>0]=0;x=(g|0)>-1?g:0-g|0;g=ea(x,f)|0;y=Afa(g)|0;if(!y){z=kc(4)|0;c[z>>2]=1;xd(z|0,378704,0)}Cga(y|0,0,g|0)|0;p=y+g|0;q=p;g=0;l=y;o=0;a:while(1){m=(o|0)<(x|0);b:while(1){if(!m){w=11;break a}while(1){if(!(l>>>0>=y>>>0&l>>>0

>>0)){w=11;break a}if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](v,1,1,e)|0)!=1){w=19;break a}j=c[v>>2]|0;k=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;if(j){w=20;break}if((ce[k&255](v,1,1,e)|0)!=1){w=25;break a}j=c[v>>2]|0;if((j|0)==1)l=p;else if((j|0)==2){w=27;break b}else if(!j){w=26;break b}else break}if((w|0)==20){w=0;n=q-l|0;c[v>>2]=j>>>0>>0?j:n;if((ce[k&255](u,1,1,e)|0)!=1){w=22;break a}j=c[v>>2]|0;if((j|0)>0){k=0;j=l;while(1){n=d[u>>0]|0;l=j+1|0;a[j>>0]=((k&1|0)!=0?n:n>>>4)&15;k=k+1|0;j=c[v>>2]|0;if((k|0)>=(j|0))break;else j=l}}g=j+g|0;continue}n=q-l|0;j=j>>>0>>0?j:n;c[v>>2]=j;if((j|0)>0){n=0;k=l;while(1){j=n&1;if((j|0)==0?(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,e)|0)!=1:0){w=36;break a}A=d[u>>0]|0;l=k+1|0;a[k>>0]=((j|0)!=0?A:A>>>4)&15;n=n+1|0;j=c[v>>2]|0;if((n|0)>=(j|0))break;else k=l}}g=j+g|0;if(((j&3)+-1|0)>>>0>=2)continue;a[t>>0]=0;if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](t,1,1,e)|0)!=1){w=40;break a}}if((w|0)==26){w=0;j=o+1|0;l=ea(j,f)|0;g=0}else if((w|0)==27){w=0;A=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[r>>0]=0;a[s>>0]=0;if((ce[A&255](r,1,1,e)|0)!=1){w=28;break}if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](s,1,1,e)|0)!=1){w=30;break}g=(d[r>>0]|0)+g|0;j=(d[s>>0]|0)+o|0;l=(ea(j,f)|0)+g|0}l=y+l|0;o=j}if((w|0)==11){if((x|0)<=0){Bfa(y);i=z;return 1}if((f|0)>0)n=0;else{g=0;do{$J(h,g)|0;g=g+1|0}while((g|0)<(x|0));Bfa(y);i=z;return 1}do{k=ea(n,f)|0;l=$J(h,n)|0;m=0;g=1;while(1){g=(g|0)!=0;j=a[y+(m+k)>>0]|0;if(g)a[l+(m>>1)>>0]=(j&255)<<4;else{A=l+(m>>1)|0;a[A>>0]=a[A>>0]|j}m=m+1|0;if((m|0)==(f|0))break;else g=g&1^1}n=n+1|0}while((n|0)<(x|0));Bfa(y);i=z;return 1}else if((w|0)==19){A=kc(4)|0;c[A>>2]=1;xd(A|0,378704,0)}else if((w|0)==22){A=kc(4)|0;c[A>>2]=1;xd(A|0,378704,0)}else if((w|0)==25){A=kc(4)|0;c[A>>2]=1;xd(A|0,378704,0)}else if((w|0)==28){A=kc(4)|0;c[A>>2]=1;xd(A|0,378704,0)}else if((w|0)==30){A=kc(4)|0;c[A>>2]=1;xd(A|0,378704,0)}else if((w|0)==36){A=kc(4)|0;c[A>>2]=1;xd(A|0,378704,0)}else if((w|0)==40){A=kc(4)|0;c[A>>2]=1;xd(A|0,378704,0)}return 0}function f1(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;u=v+3|0;t=v;r=v+1|0;s=v+2|0;a[u>>0]=0;a[t>>0]=0;if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,c)|0)!=1){e=0;i=v;return e|0}p=(f|0)>-1?f:0-f|0;q=~e;f=0;o=0;a:while(1){n=(o|0)<(p|0);while(1){l=a[u>>0]|0;j=l&255;if(l<<24>>24){if(!n){f=1;j=25;break a}h=e-f|0;m=$J(g,o)|0;if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](t,1,1,c)|0)!=1){f=0;j=25;break a}if((((j|0)<(h|0)?j:h)|0)>0){h=f+q|0;l=~j;l=(h|0)>(l|0)?h:l;h=~l;j=f;k=0;while(1){a[m+j>>0]=a[t>>0]|0;k=k+1|0;if((k|0)==(h|0))break;else j=j+1|0}f=f+-1-l|0}}else{if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,c)|0)!=1){f=0;j=25;break a}h=d[u>>0]|0;if(!h){j=8;break}else if((h|0)==2){j=9;break}else if((h|0)==1){f=1;j=25;break a}if(!n){f=1;j=25;break a}l=e-f|0;m=$J(g,o)|0;if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](m+f|0,(h|0)<(l|0)?h:l,1,c)|0)!=1){f=0;j=25;break a}h=a[u>>0]|0;if(h&1){if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](t,1,1,c)|0)!=1){f=0;j=25;break a}h=a[u>>0]|0}f=(h&255)+f|0}if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,c)|0)!=1){f=0;j=25;break a}}if((j|0)==8){f=0;h=o+1|0}else if((j|0)==9){a[r>>0]=0;a[s>>0]=0;if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](r,1,1,c)|0)!=1){f=0;j=25;break}if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](s,1,1,c)|0)!=1){f=0;j=25;break}f=(d[r>>0]|0)+f|0;h=(d[s>>0]|0)+o|0}if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](u,1,1,c)|0)==1)o=h;else{f=0;j=25;break}}if((j|0)==25){i=v;return f|0}return 0}function g1(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0;H=i;i=i+32|0;D=H;G=f&-4;E=e&-4;F=yI(G,E,32,16711680,65280,255)|0;if(!F){g=0;i=H;return g|0}C=Tga(HI(F)|0,0,G|0,0)|0;C=Iga(C|0,I|0,7,0)|0;C=Lga(C|0,I|0,3)|0;if((b|0)==5){j=(f|3|0)/4|0;k=wea(j>>>0>268435455?-1:j<<4,378904)|0;if(!k){g=F;i=H;return g|0}if((E|0)>3){l=E+-1|0;m=(G|0)>3;n=0;do{ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](k,16,j,h)|0;e=$J(F,l-n|0)|0;if(m){f=k;b=0;while(1){E2(e,f,C,4,4);b=b+4|0;if((b|0)>=(G|0))break;else{e=e+16|0;f=f+16|0}}}n=n+4|0}while((n|0)<(E|0))}yea(k);g=F;i=H;return g|0}else if((b|0)==1){u=(f|3|0)/4|0;v=wea(u>>>0>536870911?-1:u<<3,378904)|0;if(!v){g=F;i=H;return g|0}if((E|0)>3){w=E+-1|0;x=(G|0)>3;y=D+16|0;z=0-C|0;A=D+20|0;o=4-C|0;p=o+4|0;q=o+8|0;B=z<<1;r=B+4|0;s=B+8|0;t=B+12|0;k=ea(C,-3)|0;f=k+4|0;b=k+8|0;l=k+12|0;m=0;do{ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](v,8,u,h)|0;e=$J(F,w-m|0)|0;if(x){n=v;j=0;while(1){c[y>>2]=n;D2(n,D);J=d[(c[y>>2]|0)+4>>0]|0;c[A>>2]=J;J=c[D+((J&3)<<2)>>2]|0;a[e>>0]=J;a[e+1>>0]=J>>8;a[e+2>>0]=J>>16;a[e+3>>0]=J>>24;J=e+4|0;C=c[D+(((c[A>>2]|0)>>>2&3)<<2)>>2]|0;a[J>>0]=C;a[J+1>>0]=C>>8;a[J+2>>0]=C>>16;a[J+3>>0]=C>>24;J=e+8|0;C=c[D+(((c[A>>2]|0)>>>4&3)<<2)>>2]|0;a[J>>0]=C;a[J+1>>0]=C>>8;a[J+2>>0]=C>>16;a[J+3>>0]=C>>24;J=e+12|0;C=c[D+(((c[A>>2]|0)>>>6&3)<<2)>>2]|0;a[J>>0]=C;a[J+1>>0]=C>>8;a[J+2>>0]=C>>16;a[J+3>>0]=C>>24;J=d[(c[y>>2]|0)+5>>0]|0;c[A>>2]=J;C=e+z|0;J=c[D+((J&3)<<2)>>2]|0;a[C>>0]=J;a[C+1>>0]=J>>8;a[C+2>>0]=J>>16;a[C+3>>0]=J>>24;C=e+o|0;J=c[D+(((c[A>>2]|0)>>>2&3)<<2)>>2]|0;a[C>>0]=J;a[C+1>>0]=J>>8;a[C+2>>0]=J>>16;a[C+3>>0]=J>>24;C=e+p|0;J=c[D+(((c[A>>2]|0)>>>4&3)<<2)>>2]|0;a[C>>0]=J;a[C+1>>0]=J>>8;a[C+2>>0]=J>>16;a[C+3>>0]=J>>24;C=e+q|0;J=c[D+(((c[A>>2]|0)>>>6&3)<<2)>>2]|0;a[C>>0]=J;a[C+1>>0]=J>>8;a[C+2>>0]=J>>16;a[C+3>>0]=J>>24;C=d[(c[y>>2]|0)+6>>0]|0;c[A>>2]=C;J=e+B|0;C=c[D+((C&3)<<2)>>2]|0;a[J>>0]=C;a[J+1>>0]=C>>8;a[J+2>>0]=C>>16;a[J+3>>0]=C>>24;J=e+r|0;C=c[D+(((c[A>>2]|0)>>>2&3)<<2)>>2]|0;a[J>>0]=C;a[J+1>>0]=C>>8;a[J+2>>0]=C>>16;a[J+3>>0]=C>>24;J=e+s|0;C=c[D+(((c[A>>2]|0)>>>4&3)<<2)>>2]|0;a[J>>0]=C;a[J+1>>0]=C>>8;a[J+2>>0]=C>>16;a[J+3>>0]=C>>24;J=e+t|0;C=c[D+(((c[A>>2]|0)>>>6&3)<<2)>>2]|0;a[J>>0]=C;a[J+1>>0]=C>>8;a[J+2>>0]=C>>16;a[J+3>>0]=C>>24;J=d[(c[y>>2]|0)+7>>0]|0;c[A>>2]=J;C=e+k|0;J=c[D+((J&3)<<2)>>2]|0;a[C>>0]=J;a[C+1>>0]=J>>8;a[C+2>>0]=J>>16;a[C+3>>0]=J>>24;C=e+f|0;J=c[D+(((c[A>>2]|0)>>>2&3)<<2)>>2]|0;a[C>>0]=J;a[C+1>>0]=J>>8;a[C+2>>0]=J>>16;a[C+3>>0]=J>>24;C=e+b|0;J=c[D+(((c[A>>2]|0)>>>4&3)<<2)>>2]|0;a[C>>0]=J;a[C+1>>0]=J>>8;a[C+2>>0]=J>>16;a[C+3>>0]=J>>24;C=e+l|0;J=c[D+(((c[A>>2]|0)>>>6&3)<<2)>>2]|0;a[C>>0]=J;a[C+1>>0]=J>>8;a[C+2>>0]=J>>16;a[C+3>>0]=J>>24;j=j+4|0;if((j|0)>=(G|0))break;else{e=e+16|0;n=n+8|0}}}m=m+4|0}while((m|0)<(E|0))}yea(v);J=F;i=H;return J|0}else if((b|0)==3){m=(f|3|0)/4|0;p=wea(m>>>0>268435455?-1:m<<4,378904)|0;if(!p){J=F;i=H;return J|0}if((E|0)>3){q=E+-1|0;r=(G|0)>3;s=D+16|0;t=0-C|0;u=D+20|0;v=D+24|0;w=t<<1;l=ea(C,-3)|0;k=0;do{ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](p,16,m,h)|0;e=$J(F,q-k|0)|0;if(r){b=p;o=0;while(1){c[s>>2]=b;D2(b+8|0,D);f=c[s>>2]|0;j=d[f+12>>0]|0;c[u>>2]=j;c[v>>2]=(d[f>>0]|d[f+1>>0]<<8)&65535;f=e;n=0;while(1){J=c[D+((j>>>(n<<1)&3)<<2)>>2]|0;a[f>>0]=J;a[f+1>>0]=J>>8;a[f+2>>0]=J>>16;a[f+3>>0]=J>>24;a[f+3>>0]=((((c[v>>2]|0)>>>(n<<2)&15)*255|0)>>>0)/15|0;n=n+1|0;if((n|0)==4)break;j=c[u>>2]|0;f=f+4|0}f=c[s>>2]|0;j=d[f+13>>0]|0;c[u>>2]=j;f=f+2|0;c[v>>2]=(d[f>>0]|d[f+1>>0]<<8)&65535;f=e+t|0;n=0;while(1){J=c[D+((j>>>(n<<1)&3)<<2)>>2]|0;a[f>>0]=J;a[f+1>>0]=J>>8;a[f+2>>0]=J>>16;a[f+3>>0]=J>>24;a[f+3>>0]=((((c[v>>2]|0)>>>(n<<2)&15)*255|0)>>>0)/15|0;n=n+1|0;if((n|0)==4)break;j=c[u>>2]|0;f=f+4|0}f=c[s>>2]|0;j=d[f+14>>0]|0;c[u>>2]=j;f=f+4|0;c[v>>2]=(d[f>>0]|d[f+1>>0]<<8)&65535;f=e+w|0;n=0;while(1){J=c[D+((j>>>(n<<1)&3)<<2)>>2]|0;a[f>>0]=J;a[f+1>>0]=J>>8;a[f+2>>0]=J>>16;a[f+3>>0]=J>>24;a[f+3>>0]=((((c[v>>2]|0)>>>(n<<2)&15)*255|0)>>>0)/15|0;n=n+1|0;if((n|0)==4)break;j=c[u>>2]|0;f=f+4|0}f=c[s>>2]|0;j=d[f+15>>0]|0;c[u>>2]=j;f=f+6|0;c[v>>2]=(d[f>>0]|d[f+1>>0]<<8)&65535;f=e+l|0;n=0;while(1){J=c[D+((j>>>(n<<1)&3)<<2)>>2]|0;a[f>>0]=J;a[f+1>>0]=J>>8;a[f+2>>0]=J>>16;a[f+3>>0]=J>>24;a[f+3>>0]=((((c[v>>2]|0)>>>(n<<2)&15)*255|0)>>>0)/15|0;n=n+1|0;if((n|0)==4)break;j=c[u>>2]|0;f=f+4|0}o=o+4|0;if((o|0)>=(G|0))break;else{e=e+16|0;b=b+16|0}}}k=k+4|0}while((k|0)<(E|0))}yea(p);J=F;i=H;return J|0}else{J=F;i=H;return J|0}return 0}function h1(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function i1(a,b,c){a=a|0;b=b|0;c=c|0;return c|0}function j1(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=i;I=0;i=a;return 0}function k1(a){a=a|0;return 0}function l1(a){a=a|0;a=i;I=0;i=a;return 0}function m1(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function n1(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function o1(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;b=c[a+52>>2]|0;if(b){d=a+56|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-4-b|0)>>>2)<<2);xea(b)}b=c[a+40>>2]|0;if(b){d=a+44|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-4-b|0)>>>2)<<2);xea(b)}b=c[a+28>>2]|0;if(b){d=a+32|0;e=c[d>>2]|0;if((e|0)!=(b|0))c[d>>2]=e+(~((e+-4-b|0)>>>2)<<2);xea(b)}e=c[a+16>>2]|0;if(!e){i=f;return}b=a+20|0;d=c[b>>2]|0;if((d|0)!=(e|0))c[b>>2]=d+(~((d+-4-e|0)>>>2)<<2);xea(e);i=f;return}function p1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;j=a+4|0;d=c[a>>2]|0;f=((c[j>>2]|0)-d>>2)+1|0;if(f>>>0>1073741823)r9(a);k=a+8|0;e=(c[k>>2]|0)-d|0;if(e>>2>>>0<536870911){e=e>>1;e=e>>>0>>0?f:e;d=(c[j>>2]|0)-d>>2;if(!e){g=0;f=0;e=d}else h=6}else{e=1073741823;d=(c[j>>2]|0)-d>>2;h=6}if((h|0)==6){g=e;f=tea(e<<2)|0;e=d}d=f+(e<<2)|0;if(d)c[d>>2]=c[b>>2];d=c[a>>2]|0;b=(c[j>>2]|0)-d|0;h=f+(e-(b>>2)<<2)|0;Aga(h|0,d|0,b|0)|0;c[a>>2]=h;c[j>>2]=f+(e+1<<2);c[k>>2]=f+(g<<2);if(!d){i=l;return}xea(d);i=l;return}function q1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;j=a+4|0;d=c[a>>2]|0;f=(((c[j>>2]|0)-d|0)/12|0)+1|0;if(f>>>0>357913941)r9(a);k=a+8|0;e=((c[k>>2]|0)-d|0)/12|0;if(e>>>0<178956970){e=e<<1;e=e>>>0>>0?f:e;d=((c[j>>2]|0)-d|0)/12|0;if(!e){g=0;f=0;e=d}else h=6}else{e=357913941;d=((c[j>>2]|0)-d|0)/12|0;h=6}if((h|0)==6){g=e;f=tea(e*12|0)|0;e=d}d=f+(e*12|0)|0;if(d){c[d+0>>2]=c[b+0>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2]}d=c[a>>2]|0;b=(c[j>>2]|0)-d|0;h=f+((((b|0)/-12|0)+e|0)*12|0)|0;Aga(h|0,d|0,b|0)|0;c[a>>2]=h;c[j>>2]=f+((e+1|0)*12|0);c[k>>2]=f+(g*12|0);if(!d){i=l;return}xea(d);i=l;return}function r1(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0;k=i;j=kL()|0;if(!j){i=k;return}tL(j,c)|0;vL(j,d)|0;wL(j,e)|0;xL(j,f)|0;yL(j,g)|0;zL(j,h)|0;if((a|0)==9)uL(j,IL(FL()|0,23,d)|0)|0;kJ(a,b,c,j)|0;lL(j);i=k;return}function s1(b,e,f,h){b=b|0;e=e|0;f=f|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0;t=i;i=i+16|0;q=t;p=t+4|0;if(!h){s=1;i=t;return s|0}j=p+3|0;l=p+1|0;m=p+2|0;r=0;while(1){if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](p,1,4,e)|0))break;n=f+(r*12|0)|0;o=a[j>>0]|0;if(!(o<<24>>24)){o=f+(r*12|0)+8|0;g[k>>2]=0.0;a[o>>0]=a[k>>0];a[o+1>>0]=a[k+1>>0];a[o+2>>0]=a[k+2>>0];a[o+3>>0]=a[k+3>>0];o=f+(r*12|0)+4|0;g[k>>2]=0.0;a[o>>0]=a[k>>0];a[o+1>>0]=a[k+1>>0];a[o+2>>0]=a[k+2>>0];a[o+3>>0]=a[k+3>>0];g[k>>2]=0.0;a[n>>0]=a[k>>0];a[n+1>>0]=a[k+1>>0];a[n+2>>0]=a[k+2>>0];a[n+3>>0]=a[k+3>>0]}else{u=+Oda(1.0,(o&255)+-136|0);g[k>>2]=u*+(d[p>>0]|0|0);a[n>>0]=a[k>>0];a[n+1>>0]=a[k+1>>0];a[n+2>>0]=a[k+2>>0];a[n+3>>0]=a[k+3>>0];o=f+(r*12|0)+4|0;g[k>>2]=u*+(d[l>>0]|0|0);a[o>>0]=a[k>>0];a[o+1>>0]=a[k+1>>0];a[o+2>>0]=a[k+2>>0];a[o+3>>0]=a[k+3>>0];o=f+(r*12|0)+8|0;g[k>>2]=u*+(d[m>>0]|0|0);a[o>>0]=a[k>>0];a[o+1>>0]=a[k+1>>0];a[o+2>>0]=a[k+2>>0];a[o+3>>0]=a[k+3>>0]}r=r+1|0;if(r>>>0>=h>>>0){j=1;s=9;break}}if((s|0)==9){i=t;return j|0}yJ(c[78388]|0,313704,q);s=0;i=t;return s|0}function t1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;j=a+4|0;d=c[a>>2]|0;f=((c[j>>2]|0)-d>>2)+1|0;if(f>>>0>1073741823)r9(a);k=a+8|0;e=(c[k>>2]|0)-d|0;if(e>>2>>>0<536870911){e=e>>1;e=e>>>0>>0?f:e;d=(c[j>>2]|0)-d>>2;if(!e){g=0;f=0;e=d}else h=6}else{e=1073741823;d=(c[j>>2]|0)-d>>2;h=6}if((h|0)==6){g=e;f=tea(e<<2)|0;e=d}d=f+(e<<2)|0;if(d)c[d>>2]=c[b>>2];d=c[a>>2]|0;b=(c[j>>2]|0)-d|0;h=f+(e-(b>>2)<<2)|0;Aga(h|0,d|0,b|0)|0;c[a>>2]=h;c[j>>2]=f+(e+1<<2);c[k>>2]=f+(g<<2);if(!d){i=l;return}xea(d);i=l;return}function u1(a,b){a=a|0;b=b|0;var d=0,e=0;b=i;i=i+16|0;d=b;e=c[78634]|0;c[d>>2]=a;yJ(e,314600,d);i=b;return}function v1(a,b){a=a|0;b=b|0;var d=0,e=0;b=i;i=i+16|0;d=b;e=c[78634]|0;c[d>>2]=a;yJ(e,314584,d);i=b;return}function w1(a,b){a=a|0;b=b|0;var d=0,e=0;b=i;i=i+16|0;d=b;e=c[78712]|0;c[d>>2]=a;yJ(e,314928,d);i=b;return}function x1(a,b){a=a|0;b=b|0;var d=0,e=0;b=i;i=i+16|0;d=b;e=c[78712]|0;c[d>>2]=a;yJ(e,314912,d);i=b;return}function y1(a){a=a|0;var b=0,d=0;d=i;b=c[a>>2]|0;Id[c[b+8>>2]&511](a);if((c[b+20>>2]|0)==70){i=d;return}else{NF(a);Va(b+132|0,1)}}function z1(a){a=a|0;var b=0,d=0;b=i;i=i+208|0;d=b+8|0;Jd[c[(c[a>>2]|0)+12>>2]&255](a,d);yJ(c[78778]|0,d,b);i=b;return}function A1(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;a[j>>0]=0;if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){k=kc(4)|0;c[k>>2]=316584;xd(k|0,378680,0)}a:while(1){f=a[j>>0]|0;b:do if(f<<24>>24!=35){if((f+-48<<24>>24&255)<10){g=0;h=12;break a}}else{while(1){if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){h=7;break a}f=a[j>>0]|0;if(f<<24>>24==32)break;else if(f<<24>>24==10)break b}do if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){h=7;break a}while((a[j>>0]|0)!=10)}while(0);if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){h=11;break}}if((h|0)==7){k=kc(4)|0;c[k>>2]=316584;xd(k|0,378680,0)}else if((h|0)==11){k=kc(4)|0;c[k>>2]=316584;xd(k|0,378680,0)}else if((h|0)==12){while(1){g=(g*10|0)+-48+(f<<24>>24)|0;if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){h=13;break}f=a[j>>0]|0;if((f+-48<<24>>24&255)>9){h=15;break}else h=12}if((h|0)==13){k=kc(4)|0;c[k>>2]=316584;xd(k|0,378680,0)}else if((h|0)==15){i=k;return g|0}}return 0}function B1(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+16|0;j=h;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[l&255](j,1,1,f)|0;l=d[j>>0]|0;m=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[m&255](j,1,1,f)|0;b[g+8>>1]=d[j>>0]|0|l<<8;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[l&255](j,1,1,f)|0;l=d[j>>0]|0;m=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[m&255](j,1,1,f)|0;b[g+10>>1]=d[j>>0]|0|l<<8;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[l&255](j,1,1,f)|0;l=d[j>>0]|0;m=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[m&255](j,1,1,f)|0;m=d[j>>0]|0;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[k&255](j,1,1,f)|0;k=d[j>>0]|0;n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[n&255](j,1,1,f)|0;c[g+12>>2]=m<<16|l<<24|k<<8|(d[j>>0]|0);k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[k&255](j,1,1,f)|0;k=d[j>>0]|0;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[l&255](j,1,1,f)|0;c[g+16>>2]=d[j>>0]|0|k<<8;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[k&255](j,1,1,f)|0;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[k&255](j,1,1,f)|0;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[k&255](j,1,1,f)|0;k=d[j>>0]|0;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[l&255](j,1,1,f)|0;c[g+20>>2]=d[j>>0]|0|k<<8;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[k&255](j,1,1,f)|0;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[k&255](j,1,1,f)|0;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[k&255](j,1,1,f)|0;k=d[j>>0]|0;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[l&255](j,1,1,f)|0;b[g+24>>1]=d[j>>0]|0|k<<8;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[k&255](j,1,1,f)|0;k=d[j>>0]|0;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[l&255](j,1,1,f)|0;b[g+26>>1]=d[j>>0]|0|k<<8;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[k&255](j,1,1,f)|0;k=d[j>>0]|0;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[l&255](j,1,1,f)|0;b[g+28>>1]=d[j>>0]|0|k<<8;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[k&255](j,1,1,f)|0;k=d[j>>0]|0;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[l&255](j,1,1,f)|0;b[g+30>>1]=d[j>>0]|0|k<<8;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[k&255](j,1,1,f)|0;k=d[j>>0]|0;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[l&255](j,1,1,f)|0;l=d[j>>0]|0;m=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[m&255](j,1,1,f)|0;m=d[j>>0]|0;n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[n&255](j,1,1,f)|0;c[g+32>>2]=l<<16|k<<24|m<<8|(d[j>>0]|0);m=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[m&255](j,1,1,f)|0;m=d[j>>0]|0;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[k&255](j,1,1,f)|0;k=d[j>>0]|0;l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[l&255](j,1,1,f)|0;l=d[j>>0]|0;n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[n&255](j,1,1,f)|0;c[g+36>>2]=k<<16|m<<24|l<<8|(d[j>>0]|0);l=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[l&255](j,1,1,f)|0;l=d[j>>0]|0;m=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[m&255](j,1,1,f)|0;m=d[j>>0]|0;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[k&255](j,1,1,f)|0;k=d[j>>0]|0;e=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[j>>0]=0;ce[e&255](j,1,1,f)|0;c[g+40>>2]=m<<16|l<<24|k<<8|(d[j>>0]|0);i=h;return}function C1(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+16|0;l=m;j=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[j&255](l,1,1,f)|0;j=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[j&255](l,1,1,f)|0;j=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[j&255](l,1,1,f)|0;j=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[j&255](l,1,1,f)|0;j=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[j&255](l,1,1,f)|0;j=a[l>>0]|0;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[k&255](l,1,1,f)|0;k=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[k&255](l,1,1,f)|0;k=d[l>>0]|0;n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[n&255](l,1,1,f)|0;k=(d[l>>0]|0|k<<8)+1|0;b[g>>1]=k;k=k&65535;if(!k){i=m;return}if(((j&255)<<8&65535)<<16>>16<0){j=0;while(1){g=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[g&255](l,1,1,f)|0;g=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[g&255](l,1,1,f)|0;g=j&65535;if(g>>>0>=k>>>0){g=6;break}n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[n&255](l,1,1,f)|0;n=a[l>>0]|0;o=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[o&255](l,1,1,f)|0;a[h+(g<<2)+2>>0]=n;n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[n&255](l,1,1,f)|0;n=a[l>>0]|0;o=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[o&255](l,1,1,f)|0;a[h+(g<<2)+1>>0]=n;n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[n&255](l,1,1,f)|0;n=a[l>>0]|0;o=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[o&255](l,1,1,f)|0;a[h+(g<<2)>>0]=n;j=j+1|0;if((j|0)>=(k|0)){g=8;break}}if((g|0)==6){o=kc(4)|0;c[o>>2]=321752;xd(o|0,378680,0)}else if((g|0)==8){i=m;return}}else{j=0;while(1){g=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[g&255](l,1,1,f)|0;g=d[l>>0]|0;o=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[o&255](l,1,1,f)|0;g=d[l>>0]|0|g<<8;if(g>>>0>=k>>>0){g=6;break}o=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[o&255](l,1,1,f)|0;o=a[l>>0]|0;n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[n&255](l,1,1,f)|0;a[h+(g<<2)+2>>0]=o;o=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[o&255](l,1,1,f)|0;o=a[l>>0]|0;n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[n&255](l,1,1,f)|0;a[h+(g<<2)+1>>0]=o;o=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[o&255](l,1,1,f)|0;o=a[l>>0]|0;n=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[l>>0]=0;ce[n&255](l,1,1,f)|0;a[h+(g<<2)>>0]=o;j=j+1|0;if((j|0)>=(k|0)){g=8;break}}if((g|0)==6){o=kc(4)|0;c[o>>2]=321752;xd(o|0,378680,0)}else if((g|0)==8){i=m;return}}}function D1(b,c,f,g,h,j){b=b|0;c=c|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+16|0;z=A;y=(e[g+4>>1]|0)-(e[g>>1]|0)|0;x=(e[g+6>>1]|0)-(e[g+2>>1]|0)|0;if(!(h<<16>>16))h=x<<2&65535;u=h&65535;v=Afa(u)|0;if(!((v|0)!=0&(y|0)>0)){Bfa(v);i=A;return}w=(h&65535)>250;s=(h&65535)<8;t=y+-1|0;n=(j|0)==3;o=(x|0)>0;p=x*3|0;q=x<<1;r=0;do{g=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;if(w){a[z>>0]=0;ce[g&255](z,1,1,c)|0;l=a[z>>0]|0;m=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[z>>0]=0;ce[m&255](z,1,1,c)|0;l=d[z>>0]|0|(l&255)<<8}else{a[z>>0]=0;ce[g&255](z,1,1,c)|0;l=d[z>>0]|0}a:do if(!s){if(l){g=0;m=v;while(1){while(1){j=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[z>>0]=0;ce[j&255](z,1,1,c)|0;j=a[z>>0]|0;k=j&255;if(!(k&128)){h=17;break}h=g+1|0;if(j<<24>>24!=-128){h=14;break}if((h|0)<(l|0))g=h;else break a}if((h|0)==14){j=257-k|0;h=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[z>>0]=0;ce[h&255](z,1,1,c)|0;Cga(m|0,a[z>>0]|0,j|0)|0;g=g+2|0}else if((h|0)==17){j=k+1|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](m,j,1,c)|0;g=g+2+k|0}if((g|0)<(l|0))m=m+j|0;else break}}}else ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](v,u,1,c)|0;while(0);g=$J(f,t-r|0)|0;if(n){if(o){h=0;j=v;while(1){a[g>>0]=a[j+q>>0]|0;a[g+1>>0]=a[j+x>>0]|0;a[g+2>>0]=a[j>>0]|0;a[g+3>>0]=-1;h=h+1|0;if((h|0)==(x|0))break;else{g=g+4|0;j=j+1|0}}}}else if(o){h=0;j=v;while(1){a[g>>0]=a[j+p>>0]|0;a[g+1>>0]=a[j+q>>0]|0;a[g+2>>0]=a[j+x>>0]|0;a[g+3>>0]=a[j>>0]|0;h=h+1|0;if((h|0)==(x|0))break;else{g=g+4|0;j=j+1|0}}}r=r+1|0}while((r|0)<(y|0));Bfa(v);i=A;return}function E1(b,c,f,g,h){b=b|0;c=c|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;t=u;s=(e[g+4>>1]|0)-(e[g>>1]|0)|0;h=h&32767;if(!h)h=(e[g+6>>1]|0)-(e[g+2>>1]|0)|0;if((s|0)<=0){i=u;return}n=h&65535;o=n>>>0>250;p=s+-1|0;q=n>>>0<8;r=0;do{h=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;if(o){a[t>>0]=0;ce[h&255](t,1,1,c)|0;m=d[t>>0]|0;l=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[t>>0]=0;ce[l&255](t,1,1,c)|0;m=d[t>>0]|0|m<<8}else{a[t>>0]=0;ce[h&255](t,1,1,c)|0;m=d[t>>0]|0}h=$J(f,p-r|0)|0;a:do if(!q){if(m){g=0;while(1){while(1){k=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[t>>0]=0;ce[k&255](t,1,1,c)|0;k=a[t>>0]|0;l=k&255;if(!(l&128)){k=17;break}j=g+1|0;if(k<<24>>24!=-128){k=14;break}if((j|0)<(m|0))g=j;else break a}if((k|0)==14){j=257-l|0;l=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[t>>0]=0;ce[l&255](t,1,1,c)|0;Cga(h|0,a[t>>0]|0,j|0)|0;g=g+2|0}else if((k|0)==17){j=l+1|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](h,j,1,c)|0;g=g+2+l|0}if((g|0)<(m|0))h=h+j|0;else break}}}else ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](h,n,1,c)|0;while(0);r=r+1|0}while((r|0)!=(s|0));i=u;return}function F1(b,f,g,h,j,k){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;z=i;i=i+272|0;x=z;m=z+8|0;Cga(m|0,0,256)|0;y=(e[h+4>>1]|0)-(e[h>>1]|0)|0;o=(e[h+6>>1]|0)-(e[h+2>>1]|0)|0;if((k|0)<9)j=j&32767;w=(k|0)==16;v=w?2:1;j=j<<16>>16==0?o<<(w&1)&65535:j;switch(k|0){case 4:{u=2;break}case 1:{u=8;break}case 16:{u=1;break}case 2:{u=4;break}case 8:{u=1;break}default:{c[x>>2]=k;fga(m,318936,x)|0;z=kc(4)|0;c[z>>2]=m;xd(z|0,378656,0)}}h=(y|0)>0;if((j&65535)<8){if(!h){i=z;return}n=y+-1|0;m=(o|0)>0;if(w){l=0;do{h=$J(g,n-l|0)|0;if(m){j=0;while(1){k=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[x>>0]=0;ce[k&255](x,1,1,f)|0;k=d[x>>0]|0;w=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[x>>0]=0;ce[w&255](x,1,1,f)|0;w=d[x>>0]|0;a[h>>0]=w<<3;a[h+1>>0]=(w|k<<8)>>>2&248;a[h+2>>0]=k<<1&248;a[h+3>>0]=-1;j=j+1|0;if((j|0)==(o|0))break;else h=h+4|0}}l=l+1|0}while((l|0)!=(y|0));i=z;return}if(m){h=0;do{F2(b,f,o,k,$J(g,n-h|0)|0);h=h+1|0}while((h|0)!=(y|0));i=z;return}else{h=0;do{F2(b,f,o,k,$J(g,n-h|0)|0);h=h+1|0}while((h|0)!=(y|0));i=z;return}}if(!h){i=z;return}p=(j&65535)>250;q=y+-1|0;r=v+1|0;s=u<<2;t=0;do{h=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;if(p){a[x>>0]=0;ce[h&255](x,1,1,f)|0;o=d[x>>0]|0;n=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[x>>0]=0;ce[n&255](x,1,1,f)|0;o=d[x>>0]|0|o<<8}else{a[x>>0]=0;ce[h&255](x,1,1,f)|0;o=d[x>>0]|0}h=$J(g,q-t|0)|0;a:do if((o|0)>0){m=0;do{while(1){l=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[x>>0]=0;ce[l&255](x,1,1,f)|0;l=a[x>>0]|0;n=l&255;if(!(n&128)){l=36;break}j=m+1|0;if(l<<24>>24!=-128){l=28;break}if((j|0)<(o|0))m=j;else break a}if((l|0)==28){j=257-n|0;if(!w){F2(b,f,1,k,h);if(j>>>0>1){l=1;do{Aga(h+(ea(l,u)|0)|0,h|0,u|0)|0;l=l+1|0}while((l|0)<(j|0))}}else{n=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[x>>0]=0;ce[n&255](x,1,1,f)|0;n=d[x>>0]|0;l=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[x>>0]=0;ce[l&255](x,1,1,f)|0;l=d[x>>0]|0;a[h>>0]=l<<3;a[h+1>>0]=(l|n<<8)>>>2&248;a[h+2>>0]=n<<1&248;a[h+3>>0]=-1;if(j>>>0>1){l=1;do{Aga(h+(ea(s,l)|0)|0,h|0,s|0)|0;l=l+1|0}while((l|0)<(j|0))}j=j<<2}m=r+m|0}else if((l|0)==36){n=n+1|0;if(w){j=h;l=0;while(1){A=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[x>>0]=0;ce[A&255](x,1,1,f)|0;A=d[x>>0]|0;B=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[x>>0]=0;ce[B&255](x,1,1,f)|0;B=d[x>>0]|0;a[j>>0]=B<<3;a[j+1>>0]=(B|A<<8)>>>2&248;a[j+2>>0]=A<<1&248;a[j+3>>0]=-1;l=l+1|0;if((l|0)==(n|0))break;else j=j+4|0}j=n<<2}else{F2(b,f,n,k,h);j=n}m=m+1+(ea(n,v)|0)|0}h=h+(ea(j,u)|0)|0}while((m|0)<(o|0))}while(0);t=t+1|0}while((t|0)!=(y|0));i=z;return}function G1(a,b){a=a|0;b=b|0;a=kc(4)|0;c[a>>2]=b;xd(a|0,378680,0)}function H1(a,b){a=a|0;b=b|0;return}function I1(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;f=i;a=TB(a)|0;g=c[a>>2]|0;if((e|0)!=0&(ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](b,e,1,c[a+4>>2]|0)|0)==0){g=kc(4)|0;c[g>>2]=322096;xd(g|0,378680,0)}else{i=f;return}}function J1(a,b,f){a=a|0;b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+80|0;o=p;l=p+32|0;m=p+24|0;k=p+28|0;n=p+40|0;c[l>>2]=0;c[m>>2]=0;c[k>>2]=0;j=(VC(a,b,l,k)|0)>0;a:do if(j&(c[k>>2]|0)>0){j=0;while(1){h=kL()|0;if(!h)break;g=c[l>>2]|0;q=c[g+(j*28|0)+12>>2]|0;g=c[g+(j*28|0)+16>>2]|0;g=q>>>0>g>>>0?q:g;yL(h,g)|0;xL(h,g)|0;wL(h,2)|0;zL(h,c[(c[l>>2]|0)+(j*28|0)+8>>2]|0)|0;g=c[(c[l>>2]|0)+(j*28|0)+4>>2]|0;if(!(qga(g,321896)|0)){tL(h,321968)|0;kJ(7,f,nL(h)|0,h)|0}else{tL(h,g)|0;kJ(0,f,nL(h)|0,h)|0}lL(h);j=j+1|0;if((j|0)>=(c[k>>2]|0))break a}i=p;return}while(0);if(!(WC(a,b,m)|0)){i=p;return}g=kL()|0;if(!g){i=p;return}j=c[m>>2]|0;m=d[j+2>>0]|0;a=d[j+3>>0]|0;k=d[j+4>>0]|0;l=d[j+5>>0]|0;q=d[j+6>>0]|0;c[o>>2]=e[j>>1];c[o+4>>2]=m;c[o+8>>2]=a;c[o+12>>2]=k;c[o+16>>2]=l;c[o+20>>2]=q;fga(n,321936,o)|0;q=(Dga(n|0)|0)+1|0;yL(g,q)|0;xL(g,q)|0;wL(g,2)|0;vL(g,306)|0;zL(g,n)|0;tL(g,321920)|0;kJ(1,f,nL(g)|0,g)|0;lL(g);i=p;return}function K1(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;f=i;a=TB(a)|0;g=(c[a>>2]|0)+4|0;ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](b,e,1,c[a+4>>2]|0)|0;i=f;return}function L1(a){a=a|0;return}function M1(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;a[j>>0]=0;if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){k=kc(4)|0;c[k>>2]=322424;xd(k|0,378680,0)}a:while(1){f=a[j>>0]|0;b:do if(f<<24>>24!=35){if((f+-48<<24>>24&255)<10){g=0;h=12;break a}}else{while(1){if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){h=7;break a}f=a[j>>0]|0;if(f<<24>>24==10)break b;else if(f<<24>>24==32)break}do if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){h=7;break a}while((a[j>>0]|0)!=10)}while(0);if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){h=11;break}}if((h|0)==7){k=kc(4)|0;c[k>>2]=322424;xd(k|0,378680,0)}else if((h|0)==11){k=kc(4)|0;c[k>>2]=322424;xd(k|0,378680,0)}else if((h|0)==12){while(1){g=(g*10|0)+-48+(f<<24>>24)|0;if(!(ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,1,e)|0)){h=13;break}f=a[j>>0]|0;if((f+-48<<24>>24&255)>9){h=15;break}else h=12}if((h|0)==13){k=kc(4)|0;c[k>>2]=322424;xd(k|0,378680,0)}else if((h|0)==15){i=k;return g|0}}return 0}function N1(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;n=(k|0)!=0;o=n?3:g;q=Afa(ea(g,e)|0)|0;if(!q){r=kc(4)|0;c[r>>2]=323280;xd(r|0,378680,0)}if((f|0)<=0){Bfa(q);i=r;return}if((e|0)>0)p=0;else{k=0;do{$J(b,k)|0;ce[(d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24)&255](q,g,e,j)|0;k=k+1|0}while((k|0)!=(f|0));Bfa(q);i=r;return}do{k=$J(b,p)|0;ce[(d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24)&255](q,g,e,j)|0;if(n){m=q;l=0;while(1){a[k>>0]=a[m>>0]|0;a[k+1>>0]=a[m+1>>0]|0;a[k+2>>0]=a[m+2>>0]|0;l=l+1|0;if((l|0)==(e|0))break;else{m=m+g|0;k=k+o|0}}}else{m=q;l=0;while(1){a[k>>0]=a[m>>0]|0;a[k+1>>0]=a[m+1>>0]|0;a[k+2>>0]=a[m+2>>0]|0;a[k+3>>0]=a[m+3>>0]|0;l=l+1|0;if((l|0)==(e|0))break;else{m=m+g|0;k=k+o|0}}}p=p+1|0}while((p|0)!=(f|0));Bfa(q);i=r;return}function O1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=i;if((d|c|0)<0){c=0;i=h;return c|0}g=ea(f&65535,e&65535)|0;if((b|0)!=1){c=wI(a,b,c,d,g,0,0,0)|0;i=h;return c|0}if((g|0)!=16){c=xI(a,c,d,g>>>0<32?g:32,16711680,65280,255)|0;i=h;return c|0}if(f<<16>>16==2&e<<16>>16==8){c=xI(a,c,d,8,0,0,0)|0;i=h;return c|0}else{c=xI(a,c,d,16,63488,2016,31)|0;i=h;return c|0}return 0}function P1(a,d){a=a|0;d=d|0;var e=0.0,f=0,h=0,j=0,k=0,l=0;j=i;i=i+16|0;l=j;k=j+8|0;f=j+4|0;h=j+12|0;g[k>>2]=300.0;g[f>>2]=300.0;b[h>>1]=2;c[l>>2]=h;Zv(a,296,l)|0;c[l>>2]=k;Zv(a,282,l)|0;c[l>>2]=f;Zv(a,283,l)|0;a=b[h>>1]|0;e=+g[k>>2];do if(a<<16>>16==1&e>0.0&+g[f>>2]>0.0)b[h>>1]=2;else{if(a<<16>>16==2)break;else if(a<<16>>16!=3){i=j;return}eJ(d,~~(e*100.0+.5)>>>0);fJ(d,~~(+g[f>>2]*100.0+.5)>>>0);i=j;return}while(0);eJ(d,~~(e/.0254+.5)>>>0);fJ(d,~~(+g[f>>2]/.0254+.5)>>>0);i=j;return}function Q1(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;k=q;l=q+20|0;m=q+12|0;n=q+16|0;p=VI(h)|0;j=f&65535;if((j|0)==3){c[k>>2]=l;c[k+4>>2]=m;c[k+8>>2]=n;Zv(d,320,k)|0;j=1<<(g&65535);o=c[l>>2]|0;f=c[m>>2]|0;m=c[n>>2]|0;d=m;k=f;h=o;l=j;while(1){if((l|0)<=0){d=15;break}if((e[h>>1]|0)>255){d=19;break}if((e[k>>1]|0)>255){d=19;break}if((e[d>>1]|0)>255){d=19;break}else{d=d+2|0;k=k+2|0;h=h+2|0;l=l+-1|0}}if((d|0)==15){if(g<<16>>16==31){i=q;return}do{j=j+-1|0;a[p+(j<<2)+2>>0]=b[o+(j<<1)>>1];a[p+(j<<2)+1>>0]=b[f+(j<<1)>>1];a[p+(j<<2)>>0]=b[m+(j<<1)>>1]}while((j|0)>0);i=q;return}else if((d|0)==19){if(g<<16>>16==31){i=q;return}do{j=j+-1|0;a[p+(j<<2)+2>>0]=(((e[o+(j<<1)>>1]|0)*255|0)>>>0)/65535|0;a[p+(j<<2)+1>>0]=(((e[f+(j<<1)>>1]|0)*255|0)>>>0)/65535|0;a[p+(j<<2)>>0]=(((e[m+(j<<1)>>1]|0)*255|0)>>>0)/65535|0}while((j|0)>0);i=q;return}}else if((j|0)==0|(j|0)==1)if(g<<16>>16==1)if(!(f<<16>>16)){a[p>>0]=-1;a[p+1>>0]=-1;a[p+2>>0]=-1;a[p+4>>0]=0;a[p+5>>0]=0;a[p+6>>0]=0;i=q;return}else{a[p>>0]=0;a[p+1>>0]=0;a[p+2>>0]=0;a[p+4>>0]=-1;a[p+5>>0]=-1;a[p+6>>0]=-1;i=q;return}else if(g<<16>>16==8|g<<16>>16==4){k=SI(h)|0;j=(k|0)>0;if(f<<16>>16==1){if(!j){i=q;return}j=255/(k+-1|0)|0;d=0;do{g=(ea(j,d)|0)&255;a[p+(d<<2)>>0]=g;a[p+(d<<2)+1>>0]=g;a[p+(d<<2)+2>>0]=g;d=d+1|0}while((d|0)!=(k|0));i=q;return}else{if(!j){i=q;return}j=255/(k+-1|0)|0;d=0;do{g=255-(ea(j,d)|0)&255;a[p+(d<<2)>>0]=g;a[p+(d<<2)+1>>0]=g;a[p+(d<<2)+2>>0]=g;d=d+1|0}while((d|0)!=(k|0));i=q;return}}else{i=q;return}else{i=q;return}}function R1(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+13|0;g=k+12|0;j=k;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](f,1,1,e)|0;while(1){if((a[f>>0]|0)==34)break;if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](f,1,1,e)|0)!=1){f=0;h=12;break}}if((h|0)==12){i=k;return f|0};c[j+0>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](g,1,1,e)|0;while(1){f=a[g>>0]|0;if(f<<24>>24==34){h=7;break}D3(j,f);if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](g,1,1,e)|0)!=1){f=0;break}}if((h|0)==7){f=a[j>>0]|0;if(!(f&1)){f=Afa(((f&255)>>>1)+1|0)|0;g=j+1|0}else{f=Afa((c[j+4>>2]|0)+1|0)|0;g=c[j+8>>2]|0}Gga(f|0,g|0)|0}v3(j);j=f;i=k;return j|0}function S1(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j;g=G2(b,f,d)|0;e=c[g>>2]|0;if(e){b=e;b=b+28|0;i=j;return b|0}h=tea(32)|0;p3(h+16|0,d);e=h+28|0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;e=c[f>>2]|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=e;c[g>>2]=h;e=c[c[b>>2]>>2]|0;if(!e)e=h;else{c[b>>2]=e;e=c[g>>2]|0}c1(c[b+4>>2]|0,e);b=b+8|0;c[b>>2]=(c[b>>2]|0)+1;b=h;b=b+28|0;i=j;return b|0}function T1(a,b){a=a|0;b=b|0;var d=0;d=i;if(!b){i=d;return}T1(a,c[b>>2]|0);T1(a,c[b+4>>2]|0);v3(b+16|0);xea(b);i=d;return}function U1(a,b){a=a|0;b=b|0;var d=0;d=i;if(!b){i=d;return}U1(a,c[b>>2]|0);U1(a,c[b+4>>2]|0);v3(b+20|0);xea(b);i=d;return}function V1(a,b){a=a|0;b=b|0;var d=0;d=i;if(!b){i=d;return}else{V1(a,c[b>>2]|0);V1(a,c[b+4>>2]|0);xea(b);i=d;return}}function W1(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;e=p+20|0;l=p;b=a+16|0;d=c[b>>2]|0;if(d>>>0>1023){c[b>>2]=d+-1024;j=a+4|0;d=c[j>>2]|0;l=c[d>>2]|0;e=d+4|0;c[j>>2]=e;m=a+8|0;b=c[m>>2]|0;k=a+12|0;do if((b|0)==(c[k>>2]|0)){f=c[a>>2]|0;if(e>>>0>f>>>0){a=e;f=((a-f>>2)+1|0)/-2|0;b=b-a|0;Bga(d+(f+1<<2)|0,e|0,b|0)|0;b=d+((b>>2)+1+f<<2)|0;c[m>>2]=b;c[j>>2]=(c[j>>2]|0)+(f<<2);f=12;break}g=b-f>>1;g=(g|0)==0?1:g;e=tea(g<<2)|0;h=e+(g>>>2<<2)|0;g=e+(g<<2)|0;f=c[j>>2]|0;d=c[m>>2]|0;if((f|0)==(d|0))b=h;else{b=h;do{if(!b)b=0;else c[b>>2]=c[f>>2];b=b+4|0;f=f+4|0}while((f|0)!=(d|0))}f=c[a>>2]|0;c[a>>2]=e;c[j>>2]=h;c[m>>2]=b;c[k>>2]=g;if(!f)f=11;else{xea(f);b=c[m>>2]|0;f=11}}else f=11;while(0);if((f|0)==11)if(!b)b=0;else f=12;if((f|0)==12){c[b>>2]=l;b=c[m>>2]|0}c[m>>2]=b+4;i=p;return}o=a+8|0;f=c[o>>2]|0;m=a+4|0;h=f-(c[m>>2]|0)>>2;n=a+12|0;d=c[n>>2]|0;b=d-(c[a>>2]|0)|0;if(h>>>0>=b>>2>>>0){f=b>>1;f=(f|0)==0?1:f;j=l+12|0;c[l+16>>2]=a+12;d=tea(f<<2)|0;c[l>>2]=d;b=d+(h<<2)|0;k=l+8|0;c[k>>2]=b;g=l+4|0;c[g>>2]=b;c[j>>2]=d+(f<<2);e=tea(4096)|0;do if((h|0)==(f|0)){f=b-d|0;if(b>>>0>d>>>0){b=d+(h+(((f>>2)+1|0)/-2|0)<<2)|0;c[k>>2]=b;c[g>>2]=b;break}h=f>>1;h=(h|0)==0?1:h;f=tea(h<<2)|0;b=f+(h>>>2<<2)|0;c[l>>2]=f;c[g>>2]=b;c[k>>2]=b;c[j>>2]=f+(h<<2);if(d)xea(d)}while(0);if(!b)b=0;else c[b>>2]=e;c[k>>2]=b+4;d=c[o>>2]|0;while(1){if((d|0)==(c[m>>2]|0))break;h=d+-4|0;I2(l,h);d=h}f=c[a>>2]|0;c[a>>2]=c[l>>2];c[l>>2]=f;c[m>>2]=c[g>>2];c[g>>2]=d;b=c[o>>2]|0;c[o>>2]=c[k>>2];c[k>>2]=b;a=c[n>>2]|0;c[n>>2]=c[j>>2];c[j>>2]=a;if((b|0)!=(d|0))c[k>>2]=b+(~((b+-4-d|0)>>>2)<<2);if(!f){i=p;return}xea(f);i=p;return}k=tea(4096)|0;if((d|0)==(f|0)){c[e>>2]=k;H2(a,e);d=c[m>>2]|0;k=c[d>>2]|0;e=d+4|0;c[m>>2]=e;b=c[o>>2]|0;do if((b|0)==(c[n>>2]|0)){f=c[a>>2]|0;if(e>>>0>f>>>0){a=e;f=((a-f>>2)+1|0)/-2|0;b=b-a|0;Bga(d+(f+1<<2)|0,e|0,b|0)|0;b=d+((b>>2)+1+f<<2)|0;c[o>>2]=b;c[m>>2]=(c[m>>2]|0)+(f<<2);f=38;break}g=b-f>>1;g=(g|0)==0?1:g;e=tea(g<<2)|0;h=e+(g>>>2<<2)|0;g=e+(g<<2)|0;f=c[m>>2]|0;d=c[o>>2]|0;if((f|0)==(d|0))b=h;else{b=h;do{if(!b)b=0;else c[b>>2]=c[f>>2];b=b+4|0;f=f+4|0}while((f|0)!=(d|0))}f=c[a>>2]|0;c[a>>2]=e;c[m>>2]=h;c[o>>2]=b;c[n>>2]=g;if(!f)f=37;else{xea(f);b=c[o>>2]|0;f=37}}else f=37;while(0);if((f|0)==37)if(!b)b=0;else f=38;if((f|0)==38){c[b>>2]=k;b=c[o>>2]|0}c[o>>2]=b+4;i=p;return}else{b=c[o>>2]|0;do if((b|0)==(c[n>>2]|0)){d=c[m>>2]|0;e=c[a>>2]|0;if(d>>>0>e>>>0){n=d;a=((n-e>>2)+1|0)/-2|0;b=b-n|0;Bga(d+(a<<2)|0,d|0,b|0)|0;b=d+(a+(b>>2)<<2)|0;c[o>>2]=b;c[m>>2]=(c[m>>2]|0)+(a<<2);break}h=b-e>>1;h=(h|0)==0?1:h;e=tea(h<<2)|0;g=e+(h>>>2<<2)|0;h=e+(h<<2)|0;f=c[m>>2]|0;d=c[o>>2]|0;if((f|0)==(d|0))b=g;else{b=g;do{if(!b)b=0;else c[b>>2]=c[f>>2];b=b+4|0;f=f+4|0}while((f|0)!=(d|0))}f=c[a>>2]|0;c[a>>2]=e;c[m>>2]=g;c[o>>2]=b;c[n>>2]=h;if(f){xea(f);b=c[o>>2]|0}}while(0);if(!b)b=0;else{c[b>>2]=k;b=c[o>>2]|0}c[o>>2]=b+4;i=p;return}}function X1(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;e=p+20|0;l=p;b=a+16|0;d=c[b>>2]|0;if(d>>>0>2047){c[b>>2]=d+-2048;j=a+4|0;d=c[j>>2]|0;l=c[d>>2]|0;e=d+4|0;c[j>>2]=e;m=a+8|0;b=c[m>>2]|0;k=a+12|0;do if((b|0)==(c[k>>2]|0)){f=c[a>>2]|0;if(e>>>0>f>>>0){a=e;f=((a-f>>2)+1|0)/-2|0;b=b-a|0;Bga(d+(f+1<<2)|0,e|0,b|0)|0;b=d+((b>>2)+1+f<<2)|0;c[m>>2]=b;c[j>>2]=(c[j>>2]|0)+(f<<2);f=12;break}g=b-f>>1;g=(g|0)==0?1:g;e=tea(g<<2)|0;h=e+(g>>>2<<2)|0;g=e+(g<<2)|0;f=c[j>>2]|0;d=c[m>>2]|0;if((f|0)==(d|0))b=h;else{b=h;do{if(!b)b=0;else c[b>>2]=c[f>>2];b=b+4|0;f=f+4|0}while((f|0)!=(d|0))}f=c[a>>2]|0;c[a>>2]=e;c[j>>2]=h;c[m>>2]=b;c[k>>2]=g;if(!f)f=11;else{xea(f);b=c[m>>2]|0;f=11}}else f=11;while(0);if((f|0)==11)if(!b)b=0;else f=12;if((f|0)==12){c[b>>2]=l;b=c[m>>2]|0}c[m>>2]=b+4;i=p;return}o=a+8|0;f=c[o>>2]|0;m=a+4|0;h=f-(c[m>>2]|0)>>2;n=a+12|0;d=c[n>>2]|0;b=d-(c[a>>2]|0)|0;if(h>>>0>=b>>2>>>0){f=b>>1;f=(f|0)==0?1:f;j=l+12|0;c[l+16>>2]=a+12;d=tea(f<<2)|0;c[l>>2]=d;b=d+(h<<2)|0;k=l+8|0;c[k>>2]=b;g=l+4|0;c[g>>2]=b;c[j>>2]=d+(f<<2);e=tea(4096)|0;do if((h|0)==(f|0)){f=b-d|0;if(b>>>0>d>>>0){b=d+(h+(((f>>2)+1|0)/-2|0)<<2)|0;c[k>>2]=b;c[g>>2]=b;break}h=f>>1;h=(h|0)==0?1:h;f=tea(h<<2)|0;b=f+(h>>>2<<2)|0;c[l>>2]=f;c[g>>2]=b;c[k>>2]=b;c[j>>2]=f+(h<<2);if(d)xea(d)}while(0);if(!b)b=0;else c[b>>2]=e;c[k>>2]=b+4;d=c[o>>2]|0;while(1){if((d|0)==(c[m>>2]|0))break;h=d+-4|0;K2(l,h);d=h}f=c[a>>2]|0;c[a>>2]=c[l>>2];c[l>>2]=f;c[m>>2]=c[g>>2];c[g>>2]=d;b=c[o>>2]|0;c[o>>2]=c[k>>2];c[k>>2]=b;a=c[n>>2]|0;c[n>>2]=c[j>>2];c[j>>2]=a;if((b|0)!=(d|0))c[k>>2]=b+(~((b+-4-d|0)>>>2)<<2);if(!f){i=p;return}xea(f);i=p;return}k=tea(4096)|0;if((d|0)==(f|0)){c[e>>2]=k;J2(a,e);d=c[m>>2]|0;k=c[d>>2]|0;e=d+4|0;c[m>>2]=e;b=c[o>>2]|0;do if((b|0)==(c[n>>2]|0)){f=c[a>>2]|0;if(e>>>0>f>>>0){a=e;f=((a-f>>2)+1|0)/-2|0;b=b-a|0;Bga(d+(f+1<<2)|0,e|0,b|0)|0;b=d+((b>>2)+1+f<<2)|0;c[o>>2]=b;c[m>>2]=(c[m>>2]|0)+(f<<2);f=38;break}g=b-f>>1;g=(g|0)==0?1:g;e=tea(g<<2)|0;h=e+(g>>>2<<2)|0;g=e+(g<<2)|0;f=c[m>>2]|0;d=c[o>>2]|0;if((f|0)==(d|0))b=h;else{b=h;do{if(!b)b=0;else c[b>>2]=c[f>>2];b=b+4|0;f=f+4|0}while((f|0)!=(d|0))}f=c[a>>2]|0;c[a>>2]=e;c[m>>2]=h;c[o>>2]=b;c[n>>2]=g;if(!f)f=37;else{xea(f);b=c[o>>2]|0;f=37}}else f=37;while(0);if((f|0)==37)if(!b)b=0;else f=38;if((f|0)==38){c[b>>2]=k;b=c[o>>2]|0}c[o>>2]=b+4;i=p;return}else{b=c[o>>2]|0;do if((b|0)==(c[n>>2]|0)){d=c[m>>2]|0;e=c[a>>2]|0;if(d>>>0>e>>>0){n=d;a=((n-e>>2)+1|0)/-2|0;b=b-n|0;Bga(d+(a<<2)|0,d|0,b|0)|0;b=d+(a+(b>>2)<<2)|0;c[o>>2]=b;c[m>>2]=(c[m>>2]|0)+(a<<2);break}h=b-e>>1;h=(h|0)==0?1:h;e=tea(h<<2)|0;g=e+(h>>>2<<2)|0;h=e+(h<<2)|0;f=c[m>>2]|0;d=c[o>>2]|0;if((f|0)==(d|0))b=g;else{b=g;do{if(!b)b=0;else c[b>>2]=c[f>>2];b=b+4|0;f=f+4|0}while((f|0)!=(d|0))}f=c[a>>2]|0;c[a>>2]=e;c[m>>2]=g;c[o>>2]=b;c[n>>2]=h;if(f){xea(f);b=c[o>>2]|0}}while(0);if(!b)b=0;else{c[b>>2]=k;b=c[o>>2]|0}c[o>>2]=b+4;i=p;return}}function Y1(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;e=p+20|0;l=p;b=a+16|0;d=c[b>>2]|0;if(d>>>0>1023){c[b>>2]=d+-1024;j=a+4|0;d=c[j>>2]|0;l=c[d>>2]|0;e=d+4|0;c[j>>2]=e;m=a+8|0;b=c[m>>2]|0;k=a+12|0;do if((b|0)==(c[k>>2]|0)){f=c[a>>2]|0;if(e>>>0>f>>>0){a=e;f=((a-f>>2)+1|0)/-2|0;b=b-a|0;Bga(d+(f+1<<2)|0,e|0,b|0)|0;b=d+((b>>2)+1+f<<2)|0;c[m>>2]=b;c[j>>2]=(c[j>>2]|0)+(f<<2);f=12;break}g=b-f>>1;g=(g|0)==0?1:g;e=tea(g<<2)|0;h=e+(g>>>2<<2)|0;g=e+(g<<2)|0;f=c[j>>2]|0;d=c[m>>2]|0;if((f|0)==(d|0))b=h;else{b=h;do{if(!b)b=0;else c[b>>2]=c[f>>2];b=b+4|0;f=f+4|0}while((f|0)!=(d|0))}f=c[a>>2]|0;c[a>>2]=e;c[j>>2]=h;c[m>>2]=b;c[k>>2]=g;if(!f)f=11;else{xea(f);b=c[m>>2]|0;f=11}}else f=11;while(0);if((f|0)==11)if(!b)b=0;else f=12;if((f|0)==12){c[b>>2]=l;b=c[m>>2]|0}c[m>>2]=b+4;i=p;return}o=a+8|0;f=c[o>>2]|0;m=a+4|0;h=f-(c[m>>2]|0)>>2;n=a+12|0;d=c[n>>2]|0;b=d-(c[a>>2]|0)|0;if(h>>>0>=b>>2>>>0){f=b>>1;f=(f|0)==0?1:f;j=l+12|0;c[l+16>>2]=a+12;d=tea(f<<2)|0;c[l>>2]=d;b=d+(h<<2)|0;k=l+8|0;c[k>>2]=b;g=l+4|0;c[g>>2]=b;c[j>>2]=d+(f<<2);e=tea(4096)|0;do if((h|0)==(f|0)){f=b-d|0;if(b>>>0>d>>>0){b=d+(h+(((f>>2)+1|0)/-2|0)<<2)|0;c[k>>2]=b;c[g>>2]=b;break}h=f>>1;h=(h|0)==0?1:h;f=tea(h<<2)|0;b=f+(h>>>2<<2)|0;c[l>>2]=f;c[g>>2]=b;c[k>>2]=b;c[j>>2]=f+(h<<2);if(d)xea(d)}while(0);if(!b)b=0;else c[b>>2]=e;c[k>>2]=b+4;d=c[o>>2]|0;while(1){if((d|0)==(c[m>>2]|0))break;h=d+-4|0;M2(l,h);d=h}f=c[a>>2]|0;c[a>>2]=c[l>>2];c[l>>2]=f;c[m>>2]=c[g>>2];c[g>>2]=d;b=c[o>>2]|0;c[o>>2]=c[k>>2];c[k>>2]=b;a=c[n>>2]|0;c[n>>2]=c[j>>2];c[j>>2]=a;if((b|0)!=(d|0))c[k>>2]=b+(~((b+-4-d|0)>>>2)<<2);if(!f){i=p;return}xea(f);i=p;return}k=tea(4096)|0;if((d|0)==(f|0)){c[e>>2]=k;L2(a,e);d=c[m>>2]|0;k=c[d>>2]|0;e=d+4|0;c[m>>2]=e;b=c[o>>2]|0;do if((b|0)==(c[n>>2]|0)){f=c[a>>2]|0;if(e>>>0>f>>>0){a=e;f=((a-f>>2)+1|0)/-2|0;b=b-a|0;Bga(d+(f+1<<2)|0,e|0,b|0)|0;b=d+((b>>2)+1+f<<2)|0;c[o>>2]=b;c[m>>2]=(c[m>>2]|0)+(f<<2);f=38;break}g=b-f>>1;g=(g|0)==0?1:g;e=tea(g<<2)|0;h=e+(g>>>2<<2)|0;g=e+(g<<2)|0;f=c[m>>2]|0;d=c[o>>2]|0;if((f|0)==(d|0))b=h;else{b=h;do{if(!b)b=0;else c[b>>2]=c[f>>2];b=b+4|0;f=f+4|0}while((f|0)!=(d|0))}f=c[a>>2]|0;c[a>>2]=e;c[m>>2]=h;c[o>>2]=b;c[n>>2]=g;if(!f)f=37;else{xea(f);b=c[o>>2]|0;f=37}}else f=37;while(0);if((f|0)==37)if(!b)b=0;else f=38;if((f|0)==38){c[b>>2]=k;b=c[o>>2]|0}c[o>>2]=b+4;i=p;return}else{b=c[o>>2]|0;do if((b|0)==(c[n>>2]|0)){d=c[m>>2]|0;e=c[a>>2]|0;if(d>>>0>e>>>0){n=d;a=((n-e>>2)+1|0)/-2|0;b=b-n|0;Bga(d+(a<<2)|0,d|0,b|0)|0;b=d+(a+(b>>2)<<2)|0;c[o>>2]=b;c[m>>2]=(c[m>>2]|0)+(a<<2);break}h=b-e>>1;h=(h|0)==0?1:h;e=tea(h<<2)|0;g=e+(h>>>2<<2)|0;h=e+(h<<2)|0;f=c[m>>2]|0;d=c[o>>2]|0;if((f|0)==(d|0))b=g;else{b=g;do{if(!b)b=0;else c[b>>2]=c[f>>2];b=b+4|0;f=f+4|0}while((f|0)!=(d|0))}f=c[a>>2]|0;c[a>>2]=e;c[m>>2]=g;c[o>>2]=b;c[n>>2]=h;if(f){xea(f);b=c[o>>2]|0}}while(0);if(!b)b=0;else{c[b>>2]=k;b=c[o>>2]|0}c[o>>2]=b+4;i=p;return}}function Z1(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;n=p+16|0;m=p;o=Afa(rL(e)|0)|0;if(!o){i=p;return}Cga(o|0,0,rL(e)|0)|0;switch(pL(e)|0){case 9:{if(qL(e)|0){l=(g|0)==0;k=0;do{g=k<<2;j=f+g|0;if(l)g=(d[f+(g|2)>>0]|0)<<16|(d[f+(g|3)>>0]|0)<<24|(d[f+(g|1)>>0]|0)<<8|(d[j>>0]|0);else g=(d[f+(g|1)>>0]|0)<<16|(d[j>>0]|0)<<24|(d[f+(g|2)>>0]|0)<<8|(d[f+(g|3)>>0]|0);c[o+(k<<2)>>2]=g;k=k+1|0}while(k>>>0<(qL(e)|0)>>>0)}zL(e,o)|0;break}case 10:{if((qL(e)|0)&2147483647){l=(g|0)==0;k=0;do{g=k<<2;j=f+g|0;if(l)g=(d[f+(g|2)>>0]|0)<<16|(d[f+(g|3)>>0]|0)<<24|(d[f+(g|1)>>0]|0)<<8|(d[j>>0]|0);else g=(d[f+(g|1)>>0]|0)<<16|(d[j>>0]|0)<<24|(d[f+(g|2)>>0]|0)<<8|(d[f+(g|3)>>0]|0);c[o+(k<<2)>>2]=g;k=k+1|0}while(k>>>0<(qL(e)|0)<<1>>>0)}zL(e,o)|0;break}case 5:{if((qL(e)|0)&2147483647){l=(g|0)==0;k=0;do{g=k<<2;j=f+g|0;if(l)g=(d[f+(g|2)>>0]|0)<<16|(d[f+(g|3)>>0]|0)<<24|(d[f+(g|1)>>0]|0)<<8|(d[j>>0]|0);else g=(d[f+(g|1)>>0]|0)<<16|(d[j>>0]|0)<<24|(d[f+(g|2)>>0]|0)<<8|(d[f+(g|3)>>0]|0);c[o+(k<<2)>>2]=g;k=k+1|0}while(k>>>0<(qL(e)|0)<<1>>>0)}zL(e,o)|0;break}case 4:{if(qL(e)|0)if(!g){g=0;do{k=g<<2;c[o+(g<<2)>>2]=(d[f+(k|2)>>0]|0)<<16|(d[f+(k|3)>>0]|0)<<24|(d[f+(k|1)>>0]|0)<<8|(d[f+k>>0]|0);g=g+1|0}while(g>>>0<(qL(e)|0)>>>0)}else{g=0;do{k=g<<2;c[o+(g<<2)>>2]=(d[f+(k|1)>>0]|0)<<16|(d[f+k>>0]|0)<<24|(d[f+(k|2)>>0]|0)<<8|(d[f+(k|3)>>0]|0);g=g+1|0}while(g>>>0<(qL(e)|0)>>>0)}zL(e,o)|0;break}case 3:{if(qL(e)|0)if(!g){g=0;do{k=g<<1;b[o+(g<<1)>>1]=(d[f+(k|1)>>0]|0)<<8|(d[f+k>>0]|0);g=g+1|0}while(g>>>0<(qL(e)|0)>>>0)}else{g=0;do{k=g<<1;b[o+(g<<1)>>1]=(d[f+k>>0]|0)<<8|(d[f+(k|1)>>0]|0);g=g+1|0}while(g>>>0<(qL(e)|0)>>>0)}zL(e,o)|0;break}case 8:{if(qL(e)|0)if(!g){g=0;do{k=g<<1;b[o+(g<<1)>>1]=(d[f+(k|1)>>0]|0)<<8|(d[f+k>>0]|0);g=g+1|0}while(g>>>0<(qL(e)|0)>>>0)}else{g=0;do{k=g<<1;b[o+(g<<1)>>1]=(d[f+k>>0]|0)<<8|(d[f+(k|1)>>0]|0);g=g+1|0}while(g>>>0<(qL(e)|0)>>>0)}zL(e,o)|0;break}default:zL(e,f)|0}a:do if((h|0)==5){f=FL()|0;j=oL(e)|0;switch(j&65535|0){case 4:{g=1;m=50176;break}case 224:{g=1;m=52736;break}case 18:{g=0;m=4608;break}case 160:{g=1;m=51712;break}case 1:{g=1;m=49408;break}case 2:{g=0;m=49664;break}default:{g=HL(f,5,j,n)|0;tL(e,g)|0;uL(e,IL(f,5,j)|0)|0;if(!g)break a;kJ(4,a,g,e)|0;break a}}k=sL(e)|0;l=kL()|0;if(l){if(g>>>0<(qL(e)|0)>>>0)do{h=g+m&65535;vL(l,h)|0;wL(l,3)|0;xL(l,1)|0;yL(l,2)|0;zL(l,k+(g<<1)|0)|0;j=HL(f,5,h,n)|0;tL(l,j)|0;uL(l,IL(f,5,h)|0)|0;if(j)kJ(4,a,j,l)|0;g=g+1|0}while(g>>>0<(qL(e)|0)>>>0);lL(l)}}else{j=FL()|0;f=oL(e)|0;g=HL(j,h,f,m)|0;tL(e,g)|0;uL(e,IL(j,h,f)|0)|0;if(g)kJ(KL(j,h)|0,a,g,e)|0}while(0);Bfa(o);i=p;return}function _1(a,b){a=a|0;b=b|0;var d=0;d=i;if(!b){i=d;return}else{_1(a,c[b>>2]|0);_1(a,c[b+4>>2]|0);xea(b);i=d;return}}function $1(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;k=a+4|0;d=c[k>>2]|0;j=a+16|0;b=c[j>>2]|0;e=d+(b>>>10<<2)|0;l=a+8|0;h=c[l>>2]|0;if((h|0)==(d|0)){f=0;g=a+20|0;b=0}else{g=a+20|0;f=(c[g>>2]|0)+b|0;f=(c[d+(f>>>10<<2)>>2]|0)+((f&1023)<<2)|0;b=(c[e>>2]|0)+((b&1023)<<2)|0}a:while(1){do{if((b|0)==(f|0))break a;b=b+4|0}while((b-(c[e>>2]|0)|0)!=4096);n=e+4|0;b=c[n>>2]|0;e=n}c[g>>2]=0;b=h-d>>2;if(b>>>0>2)do{xea(c[d>>2]|0);d=(c[k>>2]|0)+4|0;c[k>>2]=d;b=(c[l>>2]|0)-d>>2}while(b>>>0>2);if((b|0)==1)c[j>>2]=512;else if((b|0)==2)c[j>>2]=1024;b=c[k>>2]|0;d=c[l>>2]|0;if((b|0)!=(d|0)){do{xea(c[b>>2]|0);b=b+4|0}while((b|0)!=(d|0));b=c[k>>2]|0;d=c[l>>2]|0;if((d|0)!=(b|0))c[l>>2]=d+(~((d+-4-b|0)>>>2)<<2)}b=c[a>>2]|0;if(!b){i=m;return}xea(b);i=m;return}function a2(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;k=a+4|0;d=c[k>>2]|0;j=a+16|0;b=c[j>>2]|0;e=d+(b>>>10<<2)|0;l=a+8|0;h=c[l>>2]|0;if((h|0)==(d|0)){f=0;g=a+20|0;b=0}else{g=a+20|0;f=(c[g>>2]|0)+b|0;f=(c[d+(f>>>10<<2)>>2]|0)+((f&1023)<<2)|0;b=(c[e>>2]|0)+((b&1023)<<2)|0}a:while(1){do{if((b|0)==(f|0))break a;b=b+4|0}while((b-(c[e>>2]|0)|0)!=4096);n=e+4|0;b=c[n>>2]|0;e=n}c[g>>2]=0;b=h-d>>2;if(b>>>0>2)do{xea(c[d>>2]|0);d=(c[k>>2]|0)+4|0;c[k>>2]=d;b=(c[l>>2]|0)-d>>2}while(b>>>0>2);if((b|0)==1)c[j>>2]=512;else if((b|0)==2)c[j>>2]=1024;b=c[k>>2]|0;d=c[l>>2]|0;if((b|0)!=(d|0)){do{xea(c[b>>2]|0);b=b+4|0}while((b|0)!=(d|0));b=c[k>>2]|0;d=c[l>>2]|0;if((d|0)!=(b|0))c[l>>2]=d+(~((d+-4-b|0)>>>2)<<2)}b=c[a>>2]|0;if(!b){i=m;return}xea(b);i=m;return}function b2(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;k=a+4|0;d=c[k>>2]|0;j=a+16|0;b=c[j>>2]|0;e=d+(b>>>11<<2)|0;l=a+8|0;h=c[l>>2]|0;if((h|0)==(d|0)){f=0;g=a+20|0;b=0}else{g=a+20|0;f=(c[g>>2]|0)+b|0;f=(c[d+(f>>>11<<2)>>2]|0)+((f&2047)<<1)|0;b=(c[e>>2]|0)+((b&2047)<<1)|0}a:while(1){do{if((b|0)==(f|0))break a;b=b+2|0}while((b-(c[e>>2]|0)|0)!=4096);n=e+4|0;b=c[n>>2]|0;e=n}c[g>>2]=0;b=h-d>>2;if(b>>>0>2)do{xea(c[d>>2]|0);d=(c[k>>2]|0)+4|0;c[k>>2]=d;b=(c[l>>2]|0)-d>>2}while(b>>>0>2);if((b|0)==2)c[j>>2]=2048;else if((b|0)==1)c[j>>2]=1024;b=c[k>>2]|0;d=c[l>>2]|0;if((b|0)!=(d|0)){do{xea(c[b>>2]|0);b=b+4|0}while((b|0)!=(d|0));b=c[k>>2]|0;d=c[l>>2]|0;if((d|0)!=(b|0))c[l>>2]=d+(~((d+-4-b|0)>>>2)<<2)}b=c[a>>2]|0;if(!b){i=m;return}xea(b);i=m;return}function c2(e,f,h,j,k,l){e=e|0;f=f|0;h=h|0;j=j|0;k=+k;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;E=i;i=i+16|0;y=E+8|0;x=E;A=E+4|0;w=FI(e)|0;B=FI(f)|0;C=(l|0)!=0;v=C?l:364360;D=PI(e)|0;D=(D>>>0)/((FI(e)|0)>>>0)|0;o=$J(e,h)|0;u=$J(f,h)|0;e=(j|0)>0;a:do if(C){if(e){e=0;do{Aga(u+(ea(e,D)|0)|0,l|0,D|0)|0;e=e+1|0}while((e|0)!=(j|0))}switch(D|0){case 12:{g[A>>2]=+g[l>>2];g[A+4>>2]=+g[l+4>>2];g[A+8>>2]=+g[l+8>>2];break a}case 16:{g[A>>2]=+g[l>>2];g[A+4>>2]=+g[l+4>>2];g[A+8>>2]=+g[l+8>>2];g[A+12>>2]=+g[l+12>>2];break a}case 4:{c[A>>2]=c[l>>2];break a}case 1:{a[A>>0]=a[l>>0]|0;break a}case 6:{c[A>>2]=c[l>>2];b[A+4>>1]=b[l+4>>1]|0;break a}case 2:{b[A>>1]=b[l>>1]|0;break a}case 3:{b[A>>1]=b[l>>1]|0;a[A+2>>0]=a[l+2>>0]|0;break a}case 8:{c[A>>2]=c[l>>2];c[A+4>>2]=c[l+4>>2];break a}default:break a}}else{if(e)Cga(u|0,0,ea(D,j)|0)|0;Cga(A|0,0,D|0)|0}while(0);b:do if(w){n=y+2|0;p=y+4|0;q=y+8|0;r=y+12|0;s=(D|0)==0;t=0;m=o;while(1){switch(D|0){case 8:{c[y>>2]=c[m>>2];c[p>>2]=c[m+4>>2];break}case 3:{b[y>>1]=b[m>>1]|0;a[n>>0]=a[m+2>>0]|0;break}case 6:{c[y>>2]=c[m>>2];b[p>>1]=b[m+4>>1]|0;break}case 2:{b[y>>1]=b[m>>1]|0;break}case 12:{g[y>>2]=+g[m>>2];g[p>>2]=+g[m+4>>2];g[q>>2]=+g[m+8>>2];break}case 16:{g[y>>2]=+g[m>>2];g[p>>2]=+g[m+4>>2];g[q>>2]=+g[m+8>>2];g[r>>2]=+g[m+12>>2];break}case 4:{c[y>>2]=c[m>>2];break}case 1:{a[y>>0]=a[m>>0]|0;break}default:{}}if(!s){e=0;do{o=d[v+e>>0]|0;a[x+e>>0]=~~(+(o|0)+ +((d[y+e>>0]|0)-o|0)*k+.5);e=e+1|0}while(e>>>0>>0)}e=t+j|0;c:do if((e|0)>-1&(e|0)<(B|0)){if(!s){o=0;do{F=y+o|0;a[F>>0]=(d[F>>0]|0)-(d[x+o>>0]|0)+(d[A+o>>0]|0);o=o+1|0}while(o>>>0>>0);e=ea(e,D)|0;o=u+e|0;switch(D|0){case 3:{z=c[y>>2]|0;b[o>>1]=z;a[u+(e+2)>>0]=z>>>16;z=44;break c}case 2:{b[o>>1]=b[y>>1]|0;z=43;break c}case 6:{c[o>>2]=c[y>>2];b[u+(e+4)>>1]=b[p>>1]|0;z=46;break c}case 16:{g[o>>2]=+g[y>>2];g[u+(e+4)>>2]=+g[p>>2];g[u+(e+8)>>2]=+g[q>>2];g[u+(e+12)>>2]=+g[r>>2];z=49;break c}case 8:{c[o>>2]=c[y>>2];c[u+(e+4)>>2]=c[p>>2];z=47;break c}case 12:{g[o>>2]=+g[y>>2];g[u+(e+4)>>2]=+g[p>>2];g[u+(e+8)>>2]=+g[q>>2];z=48;break c}case 1:{a[o>>0]=a[y>>0]|0;z=42;break c}case 4:{c[o>>2]=c[y>>2];z=45;break c}default:break c}}}else switch(D|0){case 6:{z=46;break}case 1:{z=42;break}case 8:{z=47;break}case 4:{z=45;break}case 16:{z=49;break}case 3:{z=44;break}case 12:{z=48;break}case 2:{z=43;break}default:{}}while(0);if((z|0)==42){z=0;a[A>>0]=a[x>>0]|0}else if((z|0)==43){z=0;b[A>>1]=b[x>>1]|0}else if((z|0)==44){z=0;b[A>>1]=b[x>>1]|0;a[A+2>>0]=a[x+2>>0]|0}else if((z|0)==45){z=0;c[A>>2]=c[x>>2]}else if((z|0)==46){z=0;c[A>>2]=c[x>>2];b[A+4>>1]=b[x+4>>1]|0}else if((z|0)==47){z=0;c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2]}else if((z|0)==48){z=0;g[A>>2]=+g[x>>2];g[A+4>>2]=+g[x+4>>2];g[A+8>>2]=+g[x+8>>2]}else if((z|0)==49){z=0;g[A>>2]=+g[x>>2];g[A+4>>2]=+g[x+4>>2];g[A+8>>2]=+g[x+8>>2];g[A+12>>2]=+g[x+12>>2]}t=t+1|0;if((t|0)==(w|0))break b;else m=m+D|0}}while(0);o=w+j|0;if(!((o|0)>-1&(B|0)>(o|0))){i=E;return}p=$J(f,h)|0;e=ea(D,o)|0;m=p+e|0;switch(D|0){case 8:{c[m>>2]=c[A>>2];c[p+(e+4)>>2]=c[A+4>>2];break}case 12:{g[m>>2]=+g[A>>2];g[p+(e+4)>>2]=+g[A+4>>2];g[p+(e+8)>>2]=+g[A+8>>2];break}case 4:{c[m>>2]=c[A>>2];break}case 6:{c[m>>2]=c[A>>2];b[p+(e+4)>>1]=b[A+4>>1]|0;break}case 1:{a[m>>0]=a[A>>0]|0;break}case 2:{b[m>>1]=b[A>>1]|0;break}case 3:{b[m>>1]=b[A>>1]|0;a[p+(e+2)>>0]=a[A+2>>0]|0;break}case 16:{g[m>>2]=+g[A>>2];g[p+(e+4)>>2]=+g[A+4>>2];g[p+(e+8)>>2]=+g[A+8>>2];g[p+(e+12)>>2]=+g[A+12>>2];break}default:{}}n=e+D|0;if(!C){Cga(p+n|0,0,ea(D,B+~o|0)|0)|0;i=E;return}if((B|0)==(o+1|0)){i=E;return}e=B+-1-o|0;m=0;do{Aga(p+((ea(m,D)|0)+n)|0,l|0,D|0)|0;m=m+1|0}while((m|0)!=(e|0));i=E;return}function d2(d,f,h,j,k,l){d=d|0;f=f|0;h=h|0;j=j|0;k=+k;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=i;i=i+32|0;z=F+16|0;y=F;B=F+8|0;w=FI(d)|0;C=FI(f)|0;D=(l|0)!=0;v=D?l:364352;E=PI(d)|0;E=(E>>>0)/((FI(d)|0)>>>0)|0;x=E>>>1;o=$J(d,h)|0;u=$J(f,h)|0;d=(j|0)>0;a:do if(D){if(d){d=0;do{Aga(u+(ea(d,E)|0)|0,l|0,E|0)|0;d=d+1|0}while((d|0)!=(j|0))}switch(E|0){case 16:{g[B>>2]=+g[l>>2];g[B+4>>2]=+g[l+4>>2];g[B+8>>2]=+g[l+8>>2];g[B+12>>2]=+g[l+12>>2];break a}case 6:{c[B>>2]=c[l>>2];b[B+4>>1]=b[l+4>>1]|0;break a}case 8:{c[B>>2]=c[l>>2];c[B+4>>2]=c[l+4>>2];break a}case 12:{g[B>>2]=+g[l>>2];g[B+4>>2]=+g[l+4>>2];g[B+8>>2]=+g[l+8>>2];break a}case 2:{b[B>>1]=b[l>>1]|0;break a}case 1:{a[B>>0]=a[l>>0]|0;break a}case 3:{b[B>>1]=b[l>>1]|0;a[B+2>>0]=a[l+2>>0]|0;break a}case 4:{c[B>>2]=c[l>>2];break a}default:break a}}else{if(d)Cga(u|0,0,ea(E,j)|0)|0;Cga(B|0,0,E|0)|0}while(0);b:do if(w){n=z+2|0;p=z+4|0;q=z+8|0;r=z+12|0;s=(x|0)==0;t=0;m=o;while(1){switch(E|0){case 1:{a[z>>0]=a[m>>0]|0;break}case 12:{g[z>>2]=+g[m>>2];g[p>>2]=+g[m+4>>2];g[q>>2]=+g[m+8>>2];break}case 3:{b[z>>1]=b[m>>1]|0;a[n>>0]=a[m+2>>0]|0;break}case 6:{c[z>>2]=c[m>>2];b[p>>1]=b[m+4>>1]|0;break}case 16:{g[z>>2]=+g[m>>2];g[p>>2]=+g[m+4>>2];g[q>>2]=+g[m+8>>2];g[r>>2]=+g[m+12>>2];break}case 4:{c[z>>2]=c[m>>2];break}case 8:{c[z>>2]=c[m>>2];c[p>>2]=c[m+4>>2];break}case 2:{b[z>>1]=b[m>>1]|0;break}default:{}}if(!s){d=0;do{o=e[v+(d<<1)>>1]|0;b[y+(d<<1)>>1]=~~(+(o|0)+ +((e[z+(d<<1)>>1]|0)-o|0)*k+.5);d=d+1|0}while(d>>>0>>0)}d=t+j|0;c:do if((d|0)>-1&(d|0)<(C|0)){if(!s){o=0;do{G=z+(o<<1)|0;b[G>>1]=(e[G>>1]|0)-(e[y+(o<<1)>>1]|0)+(e[B+(o<<1)>>1]|0);o=o+1|0}while(o>>>0>>0)}d=ea(d,E)|0;o=u+d|0;switch(E|0){case 3:{A=c[z>>2]|0;b[o>>1]=A;a[u+(d+2)>>0]=A>>>16;A=44;break c}case 16:{g[o>>2]=+g[z>>2];g[u+(d+4)>>2]=+g[p>>2];g[u+(d+8)>>2]=+g[q>>2];g[u+(d+12)>>2]=+g[r>>2];A=49;break c}case 8:{c[o>>2]=c[z>>2];c[u+(d+4)>>2]=c[p>>2];A=47;break c}case 12:{g[o>>2]=+g[z>>2];g[u+(d+4)>>2]=+g[p>>2];g[u+(d+8)>>2]=+g[q>>2];A=48;break c}case 1:{a[o>>0]=a[z>>0]|0;A=42;break c}case 2:{b[o>>1]=b[z>>1]|0;A=43;break c}case 4:{c[o>>2]=c[z>>2];A=45;break c}case 6:{c[o>>2]=c[z>>2];b[u+(d+4)>>1]=b[p>>1]|0;A=46;break c}default:break c}}else switch(E|0){case 3:{A=44;break}case 8:{A=47;break}case 12:{A=48;break}case 16:{A=49;break}case 2:{A=43;break}case 4:{A=45;break}case 6:{A=46;break}case 1:{A=42;break}default:{}}while(0);if((A|0)==42){A=0;a[B>>0]=a[y>>0]|0}else if((A|0)==43){A=0;b[B>>1]=b[y>>1]|0}else if((A|0)==44){A=0;b[B>>1]=b[y>>1]|0;a[B+2>>0]=a[y+2>>0]|0}else if((A|0)==45){A=0;c[B>>2]=c[y>>2]}else if((A|0)==46){A=0;c[B>>2]=c[y>>2];b[B+4>>1]=b[y+4>>1]|0}else if((A|0)==47){A=0;c[B>>2]=c[y>>2];c[B+4>>2]=c[y+4>>2]}else if((A|0)==48){A=0;g[B>>2]=+g[y>>2];g[B+4>>2]=+g[y+4>>2];g[B+8>>2]=+g[y+8>>2]}else if((A|0)==49){A=0;g[B>>2]=+g[y>>2];g[B+4>>2]=+g[y+4>>2];g[B+8>>2]=+g[y+8>>2];g[B+12>>2]=+g[y+12>>2]}t=t+1|0;if((t|0)==(w|0))break b;else m=m+E|0}}while(0);o=w+j|0;if(!((o|0)>-1&(C|0)>(o|0))){i=F;return}p=$J(f,h)|0;d=ea(E,o)|0;m=p+d|0;switch(E|0){case 1:{a[m>>0]=a[B>>0]|0;break}case 2:{b[m>>1]=b[B>>1]|0;break}case 3:{b[m>>1]=b[B>>1]|0;a[p+(d+2)>>0]=a[B+2>>0]|0;break}case 4:{c[m>>2]=c[B>>2];break}case 6:{c[m>>2]=c[B>>2];b[p+(d+4)>>1]=b[B+4>>1]|0;break}case 8:{c[m>>2]=c[B>>2];c[p+(d+4)>>2]=c[B+4>>2];break}case 12:{g[m>>2]=+g[B>>2];g[p+(d+4)>>2]=+g[B+4>>2];g[p+(d+8)>>2]=+g[B+8>>2];break}case 16:{g[m>>2]=+g[B>>2];g[p+(d+4)>>2]=+g[B+4>>2];g[p+(d+8)>>2]=+g[B+8>>2];g[p+(d+12)>>2]=+g[B+12>>2];break}default:{}}n=d+E|0;if(!D){Cga(p+n|0,0,ea(E,C+~o|0)|0)|0;i=F;return}if((C|0)==(o+1|0)){i=F;return}d=C+-1-o|0;m=0;do{Aga(p+((ea(m,E)|0)+n)|0,l|0,E|0)|0;m=m+1|0}while((m|0)!=(d|0));i=F;return}function e2(d,e,f,h,j,k){d=d|0;e=e|0;f=f|0;h=h|0;j=+j;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0;E=i;i=i+48|0;y=E+32|0;x=E;A=E+16|0;v=FI(d)|0;B=FI(e)|0;C=(k|0)!=0;u=C?k:364336;D=PI(d)|0;D=(D>>>0)/((FI(d)|0)>>>0)|0;w=D>>>2;n=$J(d,f)|0;t=$J(e,f)|0;d=(h|0)>0;a:do if(C){if(d){d=0;do{Aga(t+(ea(d,D)|0)|0,k|0,D|0)|0;d=d+1|0}while((d|0)!=(h|0))}switch(D|0){case 4:{c[A>>2]=c[k>>2];break a}case 1:{a[A>>0]=a[k>>0]|0;break a}case 3:{b[A>>1]=b[k>>1]|0;a[A+2>>0]=a[k+2>>0]|0;break a}case 12:{g[A>>2]=+g[k>>2];g[A+4>>2]=+g[k+4>>2];g[A+8>>2]=+g[k+8>>2];break a}case 8:{c[A>>2]=c[k>>2];c[A+4>>2]=c[k+4>>2];break a}case 6:{c[A>>2]=c[k>>2];b[A+4>>1]=b[k+4>>1]|0;break a}case 2:{b[A>>1]=b[k>>1]|0;break a}case 16:{g[A>>2]=+g[k>>2];g[A+4>>2]=+g[k+4>>2];g[A+8>>2]=+g[k+8>>2];g[A+12>>2]=+g[k+12>>2];break a}default:break a}}else{if(d)Cga(t|0,0,ea(D,h)|0)|0;Cga(A|0,0,D|0)|0}while(0);b:do if(v){m=y+2|0;o=y+4|0;p=y+8|0;q=y+12|0;r=(w|0)==0;s=0;l=n;while(1){switch(D|0){case 8:{c[y>>2]=c[l>>2];c[o>>2]=c[l+4>>2];break}case 12:{g[y>>2]=+g[l>>2];g[o>>2]=+g[l+4>>2];g[p>>2]=+g[l+8>>2];break}case 2:{b[y>>1]=b[l>>1]|0;break}case 16:{g[y>>2]=+g[l>>2];g[o>>2]=+g[l+4>>2];g[p>>2]=+g[l+8>>2];g[q>>2]=+g[l+12>>2];break}case 4:{c[y>>2]=c[l>>2];break}case 3:{b[y>>1]=b[l>>1]|0;a[m>>0]=a[l+2>>0]|0;break}case 6:{c[y>>2]=c[l>>2];b[o>>1]=b[l+4>>1]|0;break}case 1:{a[y>>0]=a[l>>0]|0;break}default:{}}if(!r){d=0;do{F=+g[u+(d<<2)>>2];g[x+(d<<2)>>2]=F+(+g[y+(d<<2)>>2]-F)*j+.5;d=d+1|0}while(d>>>0>>0)}d=s+h|0;c:do if((d|0)>-1&(d|0)<(B|0)){if(!r){n=0;do{G=y+(n<<2)|0;g[G>>2]=+g[G>>2]-(+g[x+(n<<2)>>2]-+g[A+(n<<2)>>2]);n=n+1|0}while(n>>>0>>0)}d=ea(d,D)|0;n=t+d|0;switch(D|0){case 1:{a[n>>0]=a[y>>0]|0;z=42;break c}case 2:{b[n>>1]=b[y>>1]|0;z=43;break c}case 3:{z=c[y>>2]|0;b[n>>1]=z;a[t+(d+2)>>0]=z>>>16;z=44;break c}case 4:{c[n>>2]=c[y>>2];z=45;break c}case 8:{c[n>>2]=c[y>>2];c[t+(d+4)>>2]=c[o>>2];z=47;break c}case 12:{g[n>>2]=+g[y>>2];g[t+(d+4)>>2]=+g[o>>2];g[t+(d+8)>>2]=+g[p>>2];z=48;break c}case 6:{c[n>>2]=c[y>>2];b[t+(d+4)>>1]=b[o>>1]|0;z=46;break c}case 16:{g[n>>2]=+g[y>>2];g[t+(d+4)>>2]=+g[o>>2];g[t+(d+8)>>2]=+g[p>>2];g[t+(d+12)>>2]=+g[q>>2];z=49;break c}default:break c}}else switch(D|0){case 4:{z=45;break}case 1:{z=42;break}case 3:{z=44;break}case 12:{z=48;break}case 6:{z=46;break}case 16:{z=49;break}case 2:{z=43;break}case 8:{z=47;break}default:{}}while(0);if((z|0)==42){z=0;a[A>>0]=a[x>>0]|0}else if((z|0)==43){z=0;b[A>>1]=b[x>>1]|0}else if((z|0)==44){z=0;b[A>>1]=b[x>>1]|0;a[A+2>>0]=a[x+2>>0]|0}else if((z|0)==45){z=0;c[A>>2]=c[x>>2]}else if((z|0)==46){z=0;c[A>>2]=c[x>>2];b[A+4>>1]=b[x+4>>1]|0}else if((z|0)==47){z=0;c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2]}else if((z|0)==48){z=0;g[A>>2]=+g[x>>2];g[A+4>>2]=+g[x+4>>2];g[A+8>>2]=+g[x+8>>2]}else if((z|0)==49){z=0;g[A>>2]=+g[x>>2];g[A+4>>2]=+g[x+4>>2];g[A+8>>2]=+g[x+8>>2];g[A+12>>2]=+g[x+12>>2]}s=s+1|0;if((s|0)==(v|0))break b;else l=l+D|0}}while(0);n=v+h|0;if(!((n|0)>-1&(B|0)>(n|0))){i=E;return}o=$J(e,f)|0;d=ea(D,n)|0;l=o+d|0;switch(D|0){case 2:{b[l>>1]=b[A>>1]|0;break}case 4:{c[l>>2]=c[A>>2];break}case 1:{a[l>>0]=a[A>>0]|0;break}case 12:{g[l>>2]=+g[A>>2];g[o+(d+4)>>2]=+g[A+4>>2];g[o+(d+8)>>2]=+g[A+8>>2];break}case 6:{c[l>>2]=c[A>>2];b[o+(d+4)>>1]=b[A+4>>1]|0;break}case 8:{c[l>>2]=c[A>>2];c[o+(d+4)>>2]=c[A+4>>2];break}case 3:{b[l>>1]=b[A>>1]|0;a[o+(d+2)>>0]=a[A+2>>0]|0;break}case 16:{g[l>>2]=+g[A>>2];g[o+(d+4)>>2]=+g[A+4>>2];g[o+(d+8)>>2]=+g[A+8>>2];g[o+(d+12)>>2]=+g[A+12>>2];break}default:{}}m=d+D|0;if(!C){Cga(o+m|0,0,ea(D,B+~n|0)|0)|0;i=E;return}if((B|0)==(n+1|0)){i=E;return}d=B+-1-n|0;l=0;do{Aga(o+((ea(l,D)|0)+m)|0,k|0,D|0)|0;l=l+1|0}while((l|0)!=(d|0));i=E;return}function f2(e,f,h,j,k,l){e=e|0;f=f|0;h=h|0;j=j|0;k=+k;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;J=i;i=i+16|0;B=J+8|0;A=J;E=J+4|0;y=GI(e)|0;G=GI(f)|0;F=(l|0)!=0;x=F?l:364360;H=PI(e)|0;H=(H>>>0)/((FI(e)|0)>>>0)|0;z=OI(e)|0;I=OI(f)|0;D=ea(H,h)|0;o=(QI(e)|0)+D|0;h=(QI(f)|0)+D|0;e=(j|0)>0;if(F){if(e){e=0;while(1){Aga(h|0,l|0,H|0)|0;e=e+1|0;if((e|0)==(j|0))break;else h=h+I|0}}Aga(E|0,l|0,H|0)|0}else{if(e){e=0;while(1){Cga(h|0,0,H|0)|0;e=e+1|0;if((e|0)==(j|0))break;else h=h+I|0}}Cga(E|0,0,H|0)|0}a:do if(y){p=B+2|0;r=B+4|0;t=B+8|0;u=B+12|0;v=(H|0)==0;q=D+2|0;s=D+4|0;n=D+8|0;m=D+12|0;w=0;while(1){switch(H|0){case 1:{a[B>>0]=a[o>>0]|0;break}case 4:{c[B>>2]=c[o>>2];break}case 2:{b[B>>1]=b[o>>1]|0;break}case 12:{g[B>>2]=+g[o>>2];g[r>>2]=+g[o+4>>2];g[t>>2]=+g[o+8>>2];break}case 16:{g[B>>2]=+g[o>>2];g[r>>2]=+g[o+4>>2];g[t>>2]=+g[o+8>>2];g[u>>2]=+g[o+12>>2];break}case 6:{c[B>>2]=c[o>>2];b[r>>1]=b[o+4>>1]|0;break}case 8:{c[B>>2]=c[o>>2];c[r>>2]=c[o+4>>2];break}case 3:{b[B>>1]=b[o>>1]|0;a[p>>0]=a[o+2>>0]|0;break}default:{}}if(!v){h=0;do{e=d[x+h>>0]|0;a[A+h>>0]=~~(+(e|0)+ +((d[B+h>>0]|0)-e|0)*k+.5);h=h+1|0}while(h>>>0>>0)}h=w+j|0;b:do if((h|0)>-1&(h|0)<(G|0)){if(v){$J(f,h)|0;break}else e=0;do{K=B+e|0;a[K>>0]=(d[K>>0]|0)-(d[A+e>>0]|0)+(d[E+e>>0]|0);e=e+1|0}while(e>>>0>>0);h=$J(f,h)|0;e=h+D|0;switch(H|0){case 2:{b[e>>1]=b[B>>1]|0;C=36;break b}case 1:{a[e>>0]=a[B>>0]|0;C=35;break b}case 8:{c[e>>2]=c[B>>2];c[h+s>>2]=c[r>>2];C=40;break b}case 12:{g[e>>2]=+g[B>>2];g[h+s>>2]=+g[r>>2];g[h+n>>2]=+g[t>>2];C=41;break b}case 6:{c[e>>2]=c[B>>2];b[h+s>>1]=b[r>>1]|0;C=39;break b}case 16:{g[e>>2]=+g[B>>2];g[h+s>>2]=+g[r>>2];g[h+n>>2]=+g[t>>2];g[h+m>>2]=+g[u>>2];C=42;break b}case 3:{C=c[B>>2]|0;b[e>>1]=C;a[h+q>>0]=C>>>16;C=37;break b}case 4:{c[e>>2]=c[B>>2];C=38;break b}default:break b}}else switch(H|0){case 3:{C=37;break}case 2:{C=36;break}case 12:{C=41;break}case 16:{C=42;break}case 4:{C=38;break}case 8:{C=40;break}case 1:{C=35;break}case 6:{C=39;break}default:{}}while(0);if((C|0)==35){C=0;a[E>>0]=a[A>>0]|0}else if((C|0)==36){C=0;b[E>>1]=b[A>>1]|0}else if((C|0)==37){C=0;b[E>>1]=b[A>>1]|0;a[E+2>>0]=a[A+2>>0]|0}else if((C|0)==38){C=0;c[E>>2]=c[A>>2]}else if((C|0)==39){C=0;c[E>>2]=c[A>>2];b[E+4>>1]=b[A+4>>1]|0}else if((C|0)==40){C=0;c[E>>2]=c[A>>2];c[E+4>>2]=c[A+4>>2]}else if((C|0)==41){C=0;g[E>>2]=+g[A>>2];g[E+4>>2]=+g[A+4>>2];g[E+8>>2]=+g[A+8>>2]}else if((C|0)==42){C=0;g[E>>2]=+g[A>>2];g[E+4>>2]=+g[A+4>>2];g[E+8>>2]=+g[A+8>>2];g[E+12>>2]=+g[A+12>>2]}w=w+1|0;if((w|0)==(y|0))break a;else o=o+z|0}}while(0);n=y+j|0;if(!((n|0)>-1&(n|0)<(G|0))){i=J;return}m=$J(f,n)|0;h=m+D|0;switch(H|0){case 1:{a[h>>0]=a[E>>0]|0;break}case 6:{c[h>>2]=c[E>>2];b[m+(D+4)>>1]=b[E+4>>1]|0;break}case 16:{g[h>>2]=+g[E>>2];g[m+(D+4)>>2]=+g[E+4>>2];g[m+(D+8)>>2]=+g[E+8>>2];g[m+(D+12)>>2]=+g[E+12>>2];break}case 3:{b[h>>1]=b[E>>1]|0;a[m+(D+2)>>0]=a[E+2>>0]|0;break}case 4:{c[h>>2]=c[E>>2];break}case 2:{b[h>>1]=b[E>>1]|0;break}case 8:{c[h>>2]=c[E>>2];c[m+(D+4)>>2]=c[E+4>>2];break}case 12:{g[h>>2]=+g[E>>2];g[m+(D+4)>>2]=+g[E+4>>2];g[m+(D+8)>>2]=+g[E+8>>2];break}default:{}}m=n+1|0;n=(m|0)<(G|0);if(!F){if(!n){i=J;return}do{h=h+I|0;Cga(h|0,0,H|0)|0;m=m+1|0}while((m|0)!=(G|0));i=J;return}if(!n){i=J;return}e=l+2|0;r=I+2|0;s=l+4|0;q=I+4|0;t=l+8|0;p=I+8|0;u=l+12|0;o=I+12|0;do{n=h;h=h+I|0;switch(H|0){case 1:{a[h>>0]=a[l>>0]|0;break}case 2:{b[h>>1]=b[l>>1]|0;break}case 16:{g[h>>2]=+g[l>>2];g[n+q>>2]=+g[s>>2];g[n+p>>2]=+g[t>>2];g[n+o>>2]=+g[u>>2];break}case 8:{c[h>>2]=c[l>>2];c[n+q>>2]=c[s>>2];break}case 4:{c[h>>2]=c[l>>2];break}case 12:{g[h>>2]=+g[l>>2];g[n+q>>2]=+g[s>>2];g[n+p>>2]=+g[t>>2];break}case 6:{c[h>>2]=c[l>>2];b[n+q>>1]=b[s>>1]|0;break}case 3:{b[h>>1]=b[l>>1]|0;a[n+r>>0]=a[e>>0]|0;break}default:{}}m=m+1|0}while((m|0)!=(G|0));i=J;return}function g2(d,f,h,j,k,l){d=d|0;f=f|0;h=h|0;j=j|0;k=+k;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;K=i;i=i+32|0;C=K+16|0;B=K;F=K+8|0;y=GI(d)|0;H=GI(f)|0;G=(l|0)!=0;x=G?l:364352;I=PI(d)|0;I=(I>>>0)/((FI(d)|0)>>>0)|0;z=I>>>1;A=OI(d)|0;J=OI(f)|0;E=ea(I,h)|0;o=(QI(d)|0)+E|0;h=(QI(f)|0)+E|0;d=(j|0)>0;if(G){if(d){d=0;while(1){Aga(h|0,l|0,I|0)|0;d=d+1|0;if((d|0)==(j|0))break;else h=h+J|0}}Aga(F|0,l|0,I|0)|0}else{if(d){d=0;while(1){Cga(h|0,0,I|0)|0;d=d+1|0;if((d|0)==(j|0))break;else h=h+J|0}}Cga(F|0,0,I|0)|0}a:do if(y){p=C+2|0;r=C+4|0;t=C+8|0;u=C+12|0;v=(z|0)==0;q=E+2|0;s=E+4|0;n=E+8|0;m=E+12|0;w=0;while(1){switch(I|0){case 1:{a[C>>0]=a[o>>0]|0;break}case 8:{c[C>>2]=c[o>>2];c[r>>2]=c[o+4>>2];break}case 12:{g[C>>2]=+g[o>>2];g[r>>2]=+g[o+4>>2];g[t>>2]=+g[o+8>>2];break}case 16:{g[C>>2]=+g[o>>2];g[r>>2]=+g[o+4>>2];g[t>>2]=+g[o+8>>2];g[u>>2]=+g[o+12>>2];break}case 6:{c[C>>2]=c[o>>2];b[r>>1]=b[o+4>>1]|0;break}case 4:{c[C>>2]=c[o>>2];break}case 3:{b[C>>1]=b[o>>1]|0;a[p>>0]=a[o+2>>0]|0;break}case 2:{b[C>>1]=b[o>>1]|0;break}default:{}}if(!v){h=0;do{d=e[x+(h<<1)>>1]|0;b[B+(h<<1)>>1]=~~(+(d|0)+ +((e[C+(h<<1)>>1]|0)-d|0)*k+.5);h=h+1|0}while(h>>>0>>0)}h=w+j|0;b:do if((h|0)>-1&(h|0)<(H|0)){if(!v){d=0;do{L=C+(d<<1)|0;b[L>>1]=(e[L>>1]|0)-(e[B+(d<<1)>>1]|0)+(e[F+(d<<1)>>1]|0);d=d+1|0}while(d>>>0>>0)}h=$J(f,h)|0;d=h+E|0;switch(I|0){case 4:{c[d>>2]=c[C>>2];D=37;break b}case 6:{c[d>>2]=c[C>>2];b[h+s>>1]=b[r>>1]|0;D=38;break b}case 2:{b[d>>1]=b[C>>1]|0;D=35;break b}case 12:{g[d>>2]=+g[C>>2];g[h+s>>2]=+g[r>>2];g[h+n>>2]=+g[t>>2];D=40;break b}case 16:{g[d>>2]=+g[C>>2];g[h+s>>2]=+g[r>>2];g[h+n>>2]=+g[t>>2];g[h+m>>2]=+g[u>>2];D=41;break b}case 8:{c[d>>2]=c[C>>2];c[h+s>>2]=c[r>>2];D=39;break b}case 1:{a[d>>0]=a[C>>0]|0;D=34;break b}case 3:{D=c[C>>2]|0;b[d>>1]=D;a[h+q>>0]=D>>>16;D=36;break b}default:break b}}else switch(I|0){case 8:{D=39;break}case 4:{D=37;break}case 1:{D=34;break}case 3:{D=36;break}case 12:{D=40;break}case 2:{D=35;break}case 6:{D=38;break}case 16:{D=41;break}default:{}}while(0);if((D|0)==34){D=0;a[F>>0]=a[B>>0]|0}else if((D|0)==35){D=0;b[F>>1]=b[B>>1]|0}else if((D|0)==36){D=0;b[F>>1]=b[B>>1]|0;a[F+2>>0]=a[B+2>>0]|0}else if((D|0)==37){D=0;c[F>>2]=c[B>>2]}else if((D|0)==38){D=0;c[F>>2]=c[B>>2];b[F+4>>1]=b[B+4>>1]|0}else if((D|0)==39){D=0;c[F>>2]=c[B>>2];c[F+4>>2]=c[B+4>>2]}else if((D|0)==40){D=0;g[F>>2]=+g[B>>2];g[F+4>>2]=+g[B+4>>2];g[F+8>>2]=+g[B+8>>2]}else if((D|0)==41){D=0;g[F>>2]=+g[B>>2];g[F+4>>2]=+g[B+4>>2];g[F+8>>2]=+g[B+8>>2];g[F+12>>2]=+g[B+12>>2]}w=w+1|0;if((w|0)==(y|0))break a;else o=o+A|0}}while(0);n=y+j|0;if(!((n|0)>-1&(n|0)<(H|0))){i=K;return}m=$J(f,n)|0;h=m+E|0;switch(I|0){case 8:{c[h>>2]=c[F>>2];c[m+(E+4)>>2]=c[F+4>>2];break}case 16:{g[h>>2]=+g[F>>2];g[m+(E+4)>>2]=+g[F+4>>2];g[m+(E+8)>>2]=+g[F+8>>2];g[m+(E+12)>>2]=+g[F+12>>2];break}case 12:{g[h>>2]=+g[F>>2];g[m+(E+4)>>2]=+g[F+4>>2];g[m+(E+8)>>2]=+g[F+8>>2];break}case 1:{a[h>>0]=a[F>>0]|0;break}case 3:{b[h>>1]=b[F>>1]|0;a[m+(E+2)>>0]=a[F+2>>0]|0;break}case 2:{b[h>>1]=b[F>>1]|0;break}case 4:{c[h>>2]=c[F>>2];break}case 6:{c[h>>2]=c[F>>2];b[m+(E+4)>>1]=b[F+4>>1]|0;break}default:{}}m=n+1|0;n=(m|0)<(H|0);if(!G){if(!n){i=K;return}do{h=h+J|0;Cga(h|0,0,I|0)|0;m=m+1|0}while((m|0)!=(H|0));i=K;return}if(!n){i=K;return}d=l+2|0;r=J+2|0;s=l+4|0;q=J+4|0;t=l+8|0;p=J+8|0;u=l+12|0;o=J+12|0;do{n=h;h=h+J|0;switch(I|0){case 1:{a[h>>0]=a[l>>0]|0;break}case 2:{b[h>>1]=b[l>>1]|0;break}case 3:{b[h>>1]=b[l>>1]|0;a[n+r>>0]=a[d>>0]|0;break}case 4:{c[h>>2]=c[l>>2];break}case 8:{c[h>>2]=c[l>>2];c[n+q>>2]=c[s>>2];break}case 16:{g[h>>2]=+g[l>>2];g[n+q>>2]=+g[s>>2];g[n+p>>2]=+g[t>>2];g[n+o>>2]=+g[u>>2];break}case 12:{g[h>>2]=+g[l>>2];g[n+q>>2]=+g[s>>2];g[n+p>>2]=+g[t>>2];break}case 6:{c[h>>2]=c[l>>2];b[n+q>>1]=b[s>>1]|0;break}default:{}}m=m+1|0}while((m|0)!=(H|0));i=K;return}function h2(d,e,f,h,j,k){d=d|0;e=e|0;f=f|0;h=h|0;j=+j;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0;J=i;i=i+48|0;B=J+32|0;A=J;E=J+16|0;x=GI(d)|0;G=GI(e)|0;F=(k|0)!=0;w=F?k:364336;H=PI(d)|0;H=(H>>>0)/((FI(d)|0)>>>0)|0;y=H>>>2;z=OI(d)|0;I=OI(e)|0;D=ea(H,f)|0;n=(QI(d)|0)+D|0;f=(QI(e)|0)+D|0;d=(h|0)>0;if(F){if(d){d=0;while(1){Aga(f|0,k|0,H|0)|0;d=d+1|0;if((d|0)==(h|0))break;else f=f+I|0}}Aga(E|0,k|0,H|0)|0}else{if(d){d=0;while(1){Cga(f|0,0,H|0)|0;d=d+1|0;if((d|0)==(h|0))break;else f=f+I|0}}Cga(E|0,0,H|0)|0}a:do if(x){o=B+2|0;q=B+4|0;s=B+8|0;t=B+12|0;u=(y|0)==0;p=D+2|0;r=D+4|0;m=D+8|0;l=D+12|0;v=0;while(1){switch(H|0){case 8:{c[B>>2]=c[n>>2];c[q>>2]=c[n+4>>2];break}case 2:{b[B>>1]=b[n>>1]|0;break}case 6:{c[B>>2]=c[n>>2];b[q>>1]=b[n+4>>1]|0;break}case 4:{c[B>>2]=c[n>>2];break}case 16:{g[B>>2]=+g[n>>2];g[q>>2]=+g[n+4>>2];g[s>>2]=+g[n+8>>2];g[t>>2]=+g[n+12>>2];break}case 1:{a[B>>0]=a[n>>0]|0;break}case 3:{b[B>>1]=b[n>>1]|0;a[o>>0]=a[n+2>>0]|0;break}case 12:{g[B>>2]=+g[n>>2];g[q>>2]=+g[n+4>>2];g[s>>2]=+g[n+8>>2];break}default:{}}if(!u){f=0;do{K=+g[w+(f<<2)>>2];g[A+(f<<2)>>2]=K+(+g[B+(f<<2)>>2]-K)*j+.5;f=f+1|0}while(f>>>0>>0)}f=v+h|0;b:do if((f|0)>-1&(f|0)<(G|0)){if(!u){d=0;do{L=B+(d<<2)|0;g[L>>2]=+g[L>>2]-(+g[A+(d<<2)>>2]-+g[E+(d<<2)>>2]);d=d+1|0}while(d>>>0>>0)}f=$J(e,f)|0;d=f+D|0;switch(H|0){case 6:{c[d>>2]=c[B>>2];b[f+r>>1]=b[q>>1]|0;C=38;break b}case 4:{c[d>>2]=c[B>>2];C=37;break b}case 12:{g[d>>2]=+g[B>>2];g[f+r>>2]=+g[q>>2];g[f+m>>2]=+g[s>>2];C=40;break b}case 3:{C=c[B>>2]|0;b[d>>1]=C;a[f+p>>0]=C>>>16;C=36;break b}case 16:{g[d>>2]=+g[B>>2];g[f+r>>2]=+g[q>>2];g[f+m>>2]=+g[s>>2];g[f+l>>2]=+g[t>>2];C=41;break b}case 1:{a[d>>0]=a[B>>0]|0;C=34;break b}case 2:{b[d>>1]=b[B>>1]|0;C=35;break b}case 8:{c[d>>2]=c[B>>2];c[f+r>>2]=c[q>>2];C=39;break b}default:break b}}else switch(H|0){case 3:{C=36;break}case 12:{C=40;break}case 8:{C=39;break}case 4:{C=37;break}case 16:{C=41;break}case 2:{C=35;break}case 1:{C=34;break}case 6:{C=38;break}default:{}}while(0);if((C|0)==34){C=0;a[E>>0]=a[A>>0]|0}else if((C|0)==35){C=0;b[E>>1]=b[A>>1]|0}else if((C|0)==36){C=0;b[E>>1]=b[A>>1]|0;a[E+2>>0]=a[A+2>>0]|0}else if((C|0)==37){C=0;c[E>>2]=c[A>>2]}else if((C|0)==38){C=0;c[E>>2]=c[A>>2];b[E+4>>1]=b[A+4>>1]|0}else if((C|0)==39){C=0;c[E>>2]=c[A>>2];c[E+4>>2]=c[A+4>>2]}else if((C|0)==40){C=0;g[E>>2]=+g[A>>2];g[E+4>>2]=+g[A+4>>2];g[E+8>>2]=+g[A+8>>2]}else if((C|0)==41){C=0;g[E>>2]=+g[A>>2];g[E+4>>2]=+g[A+4>>2];g[E+8>>2]=+g[A+8>>2];g[E+12>>2]=+g[A+12>>2]}v=v+1|0;if((v|0)==(x|0))break a;else n=n+z|0}}while(0);m=x+h|0;if(!((m|0)>-1&(m|0)<(G|0))){i=J;return}l=$J(e,m)|0;f=l+D|0;switch(H|0){case 2:{b[f>>1]=b[E>>1]|0;break}case 1:{a[f>>0]=a[E>>0]|0;break}case 3:{b[f>>1]=b[E>>1]|0;a[l+(D+2)>>0]=a[E+2>>0]|0;break}case 4:{c[f>>2]=c[E>>2];break}case 6:{c[f>>2]=c[E>>2];b[l+(D+4)>>1]=b[E+4>>1]|0;break}case 8:{c[f>>2]=c[E>>2];c[l+(D+4)>>2]=c[E+4>>2];break}case 12:{g[f>>2]=+g[E>>2];g[l+(D+4)>>2]=+g[E+4>>2];g[l+(D+8)>>2]=+g[E+8>>2];break}case 16:{g[f>>2]=+g[E>>2];g[l+(D+4)>>2]=+g[E+4>>2];g[l+(D+8)>>2]=+g[E+8>>2];g[l+(D+12)>>2]=+g[E+12>>2];break}default:{}}l=m+1|0;m=(l|0)<(G|0);if(!F){if(!m){i=J;return}do{f=f+I|0;Cga(f|0,0,H|0)|0;l=l+1|0}while((l|0)!=(G|0));i=J;return}if(!m){i=J;return}d=k+2|0;q=I+2|0;r=k+4|0;p=I+4|0;s=k+8|0;o=I+8|0;t=k+12|0;n=I+12|0;do{m=f;f=f+I|0;switch(H|0){case 16:{g[f>>2]=+g[k>>2];g[m+p>>2]=+g[r>>2];g[m+o>>2]=+g[s>>2];g[m+n>>2]=+g[t>>2];break}case 12:{g[f>>2]=+g[k>>2];g[m+p>>2]=+g[r>>2];g[m+o>>2]=+g[s>>2];break}case 2:{b[f>>1]=b[k>>1]|0;break}case 3:{b[f>>1]=b[k>>1]|0;a[m+q>>0]=a[d>>0]|0;break}case 1:{a[f>>0]=a[k>>0]|0;break}case 6:{c[f>>2]=c[k>>2];b[m+p>>1]=b[r>>1]|0;break}case 4:{c[f>>2]=c[k>>2];break}case 8:{c[f>>2]=c[k>>2];c[m+p>>2]=c[r>>2];break}default:{}}l=l+1|0}while((l|0)!=(G|0));i=J;return}function i2(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=i;i=i+32|0;E=N;l=c[a+576>>2]|0;H=c[l+12>>2]|0;w=c[l+44>>2]|0;x=l+8|0;if((e|0)%(c[x>>2]|0)|0){Dw(c[a+628>>2]|0,123608,121912,E);M=-1;i=N;return M|0}I=l+48|0;h=c[I>>2]|0;J=l+52|0;j=c[J>>2]|0;K=l+56|0;g=c[K>>2]|0;L=a+604|0;f=c[L>>2]|0;M=a+608|0;k=c[M>>2]|0;v=f+k|0;a:do if((e|0)>0){t=l+72|0;u=l+68|0;y=(H|0)>0;A=l+92|0;B=a+628|0;C=a+12|0;D=a+492|0;z=a+452|0;G=l+60|0;F=c[t>>2]|0;b:while(1){c:do if(!g){k=j;while(1){do if((k|0)<11){if(f>>>0>=v>>>0)if(!k){g=0;p=186;break b}else{j=11;break}l=f+1|0;h=(d[w+(d[f>>0]|0)>>0]|0)<>>0>>0){h=(d[w+(d[l>>0]|0)>>0]|0)<>>1;k=j+-1|0}}while(0);while(1){do if((j|0)<8)if(f>>>0>=v>>>0)if(!j){p=186;break b}else{j=8;break}else{h=(d[w+(d[f>>0]|0)>>0]|0)<>>8;j=j+-8|0}while(1){g=j+-1|0;s=h;h=h>>>1;if(s&1)break;else j=g}do if((j|0)<2)if(f>>>0>=v>>>0)if(!g){g=0;p=186;break b}else{j=1;break}else{h=(d[w+(d[f>>0]|0)>>0]|0)<>>1;a=c[u>>2]|0;l=a+4|0;a=c[a>>2]|0;do if(!(h&1)){d:do if(y){r=F;m=0;h=0;s=F;e:while(1){q=(s|0)==(F|0);f:do if(q){p=0;o=m;while(1){do if((j|0)<7)if(f>>>0>=v>>>0)if(!j){e=g;l=0;j=p;k=F;p=154;break b}else{n=7;break}else{g=(d[w+(d[f>>0]|0)>>0]|0)<>0]|0;j=n-m|0;g=g>>>m;switch(d[124064+(k<<3)>>0]|0|0){case 1:break;case 2:{k=p;p=88;break f}case 6:{k=p;l=F;p=143;break e}case 5:{n=p;p=136;break f}case 4:{n=p;m=o;p=132;break f}case 12:{a=n;n=p;l=F;p=144;break e}case 3:{m=p;k=o;p=128;break f}default:{l=p;k=F;p=151;break e}}k=(c[l>>2]|0)+a|0;h=o+p+k|0;if((H|0)>(k|0)){p=h;o=0-k|0;h=k;a=k+(c[l+4>>2]|0)|0;l=l+8|0}else{a=h;h=k;k=F;p=165;break e}}}else{p=0;o=m;while(1){do if((j|0)<7)if(f>>>0>=v>>>0)if(!j){e=g;l=0;j=p;k=s;p=154;break b}else{n=7;break}else{g=(d[w+(d[f>>0]|0)>>0]|0)<>0]|0;j=n-m|0;g=g>>>m;switch(d[124064+(k<<3)>>0]|0|0){case 1:break;case 2:{k=p;p=88;break f}case 6:{k=p;l=s;p=143;break e}case 5:{n=p;p=136;break f}case 4:{n=p;m=o;p=132;break f}case 12:{a=n;n=p;l=s;p=144;break e}case 3:{m=p;k=o;p=128;break f}default:{l=p;k=s;p=151;break e}}if((a|0)<=(h|0)&(a|0)<(H|0))do{a=(c[l>>2]|0)+a+(c[l+4>>2]|0)|0;l=l+8|0}while((a|0)<=(h|0)&(a|0)<(H|0));k=(c[l>>2]|0)+a|0;h=o+p+k|0;if((H|0)>(k|0)){p=h;o=0-k|0;h=k;a=k+(c[l+4>>2]|0)|0;l=l+8|0}else{a=h;h=k;k=s;p=165;break e}}}while(0);if((p|0)==88){p=0;if(!(s-r&4)){n=k;m=f;while(1){do if((j|0)<12){if(m>>>0>=v>>>0)if(!j){e=g;l=0;j=n;f=m;k=s;p=154;break b}else{j=12;f=m;break}f=m+1|0;g=(d[w+(d[m>>0]|0)>>0]|0)<>>0>=v>>>0){j=12;break}g=(d[w+(d[f>>0]|0)>>0]|0)<>0]|0;j=j-k|0;g=g>>>k;k=d[125088+(m<<3)>>0]|0;if((k|0)==7)break;else if(!((k|0)==11|(k|0)==9)){l=n;k=s;p=153;break e}m=c[125092+(m<<3)>>2]|0;n=m+n|0;h=m+h|0;m=f}q=c[125092+(m<<3)>>2]|0;k=s+4|0;c[s>>2]=q+n;o=0;h=q+h|0;while(1){do if((j|0)<13){if(f>>>0>=v>>>0)if(!j){e=g;l=0;j=o;p=154;break b}else{j=13;break}n=f+1|0;g=(d[w+(d[f>>0]|0)>>0]|0)<>>0>=v>>>0){j=13;f=n;break}g=(d[w+(d[n>>0]|0)>>0]|0)<>0]|0;j=j-m|0;g=g>>>m;m=d[157856+(n<<3)>>0]|0;if((m|0)==8)break;else if(!((m|0)==11|(m|0)==10)){l=o;p=152;break e}q=c[157860+(n<<3)>>2]|0;o=q+o|0;h=q+h|0}q=c[157860+(n<<3)>>2]|0;c[k>>2]=q+o;h=q+h|0}else{n=k;while(1){do if((j|0)<13){if(f>>>0>=v>>>0)if(!j){e=g;l=0;j=n;k=s;p=154;break b}else{j=13;break}m=f+1|0;g=(d[w+(d[f>>0]|0)>>0]|0)<>>0>=v>>>0){j=13;f=m;break}g=(d[w+(d[m>>0]|0)>>0]|0)<>0]|0;j=j-k|0;g=g>>>k;k=d[157856+(m<<3)>>0]|0;if((k|0)==8)break;else if(!((k|0)==11|(k|0)==10)){l=n;k=s;p=152;break e}q=c[157860+(m<<3)>>2]|0;n=q+n|0;h=q+h|0}q=c[157860+(m<<3)>>2]|0;k=s+4|0;c[s>>2]=q+n;o=0;h=q+h|0;while(1){do if((j|0)<12){if(f>>>0>=v>>>0)if(!j){e=g;l=0;j=o;p=154;break b}else{j=12;break}n=f+1|0;g=(d[w+(d[f>>0]|0)>>0]|0)<>>0>=v>>>0){j=12;f=n;break}g=(d[w+(d[n>>0]|0)>>0]|0)<>0]|0;j=j-m|0;g=g>>>m;m=d[125088+(n<<3)>>0]|0;if((m|0)==7)break;else if(!((m|0)==11|(m|0)==9)){l=o;p=153;break e}q=c[125092+(n<<3)>>2]|0;o=q+o|0;h=q+h|0}q=c[125092+(n<<3)>>2]|0;c[k>>2]=q+o;h=q+h|0}k=s+8|0;if((k|0)!=(F|0)){if((a|0)<=(h|0)&(a|0)<(H|0))do{a=(c[l>>2]|0)+a+(c[l+4>>2]|0)|0;l=l+8|0}while((a|0)<=(h|0)&(a|0)<(H|0))}else k=F}else if((p|0)==128){p=0;if(!q?(a|0)<=(h|0)&(a|0)<(H|0):0)do{a=(c[l>>2]|0)+a+(c[l+4>>2]|0)|0;l=l+8|0}while((a|0)<=(h|0)&(a|0)<(H|0));c[s>>2]=k+m+a;h=a;a=(c[l>>2]|0)+a|0;k=s+4|0;l=l+4|0}else if((p|0)==132){p=0;if(!q?(a|0)<=(h|0)&(a|0)<(H|0):0)do{a=(c[l>>2]|0)+a+(c[l+4>>2]|0)|0;l=l+8|0}while((a|0)<=(h|0)&(a|0)<(H|0));h=c[124068+(k<<3)>>2]|0;c[s>>2]=m+n+a+h;h=h+a|0;a=(c[l>>2]|0)+a|0;k=s+4|0;l=l+4|0}else if((p|0)==136){p=0;m=(s|0)!=(F|0);if(m?(a|0)<=(h|0)&(a|0)<(H|0):0)do{a=(c[l>>2]|0)+a+(c[l+4>>2]|0)|0;l=l+8|0}while((a|0)<=(h|0)&(a|0)<(H|0));k=c[124068+(k<<3)>>2]|0;q=k+h|0;if((a|0)<=(q|0)&((a|0)<(q|0)|m)){p=140;break}c[s>>2]=a-h+n-k;l=l+-4|0;h=a-k|0;a=a-(c[l>>2]|0)|0;k=s+4|0}if((H|0)>(h|0)){m=0-h|0;s=k}else{a=g;g=0;break d}}do if((p|0)==140){p=0;a=c[B>>2]|0;r=(c[C>>2]&1024|0)!=0;k=c[(r?D:z)>>2]|0;c[E>>2]=c[A>>2];c[E+4>>2]=r?122040:122048;c[E+8>>2]=k;c[E+12>>2]=h;Dw(a,123608,122104,E);a=g;g=0;k=s}else if((p|0)==143){p=0;c[l>>2]=H-h;a=c[B>>2]|0;s=(c[C>>2]&1024|0)!=0;n=c[(s?D:z)>>2]|0;c[E>>2]=c[A>>2];c[E+4>>2]=s?122040:122048;c[E+8>>2]=n;c[E+12>>2]=h;Dw(a,123608,122896,E);a=g;g=0;n=k;k=l+4|0}else if((p|0)==144){p=0;k=l+4|0;c[l>>2]=H-h;do if((j|0)<4)if(f>>>0>=v>>>0)if((a|0)==(m|0)){e=g;l=j;j=n;p=154;break b}else{j=4;break}else{g=(d[w+(d[f>>0]|0)>>0]|0)<>2]|0;q=(c[C>>2]&1024|0)!=0;r=c[(q?D:z)>>2]|0;c[E>>2]=c[A>>2];c[E+4>>2]=q?122040:122048;c[E+8>>2]=r;c[E+12>>2]=h;Dw(s,123608,122104,E)}a=g>>>4;j=j+-4|0;g=1}else if((p|0)==152){p=0;a=c[B>>2]|0;s=(c[C>>2]&1024|0)!=0;n=c[(s?D:z)>>2]|0;c[E>>2]=c[A>>2];c[E+4>>2]=s?122040:122048;c[E+8>>2]=n;c[E+12>>2]=h;Dw(a,123608,122104,E);a=g;g=0;n=l}else if((p|0)==153){p=0;a=c[B>>2]|0;s=(c[C>>2]&1024|0)!=0;n=c[(s?D:z)>>2]|0;c[E>>2]=c[A>>2];c[E+4>>2]=s?122040:122048;c[E+8>>2]=n;c[E+12>>2]=h;Dw(a,123608,122104,E);a=g;g=0;n=l}else if((p|0)==165){p=0;if(!a){a=g;g=0;break d}if((h+a|0)<(H|0)){do if((j|0)<1)if(f>>>0>=v>>>0)if(!j){e=g;l=0;j=a;p=154;break b}else{j=1;break}else{g=(d[w+(d[f>>0]|0)>>0]|0)<>>1;j=j+-1|0}c[k>>2]=a;a=g;g=0;k=k+4|0;break d}while(0);if((p|0)==151){p=0;a=c[B>>2]|0;s=(c[C>>2]&1024|0)!=0;n=c[(s?D:z)>>2]|0;c[E>>2]=c[A>>2];c[E+4>>2]=s?122040:122048;c[E+8>>2]=n;c[E+12>>2]=h;Dw(a,123608,122104,E);a=g;g=0;n=l}if(n){c[k>>2]=n;k=k+4|0}}else{a=g;g=0;h=0;k=F}while(0);if((h|0)==(H|0))h=a;else{q=c[A>>2]|0;l=c[B>>2]|0;r=(c[C>>2]&1024|0)!=0;s=c[(r?D:z)>>2]|0;c[E>>2]=h>>>0>>0?122e3:122016;c[E+4>>2]=q;c[E+8>>2]=r?122040:122048;c[E+12>>2]=s;c[E+16>>2]=h;c[E+20>>2]=H;Zx(l,123608,121952,E);l=(h|0)>(H|0);if(l&k>>>0>F>>>0)do{k=k+-4|0;h=h-(c[k>>2]|0)|0;l=(h|0)>(H|0)}while(l&k>>>0>F>>>0);if((h|0)>=(H|0)){if(!l){h=a;break}c[k>>2]=H;c[k+4>>2]=0;h=a;k=k+8|0;break}if(k-F&4){c[k>>2]=0;k=k+4|0}c[k>>2]=H-((h|0)<0?0:h);h=a;k=k+4|0}}else{h=g;g=j;j=0;o=F;g:while(1){k=g;m=0;while(1){do if((k|0)<12){if(f>>>0>=v>>>0)if(!k){e=h;g=m;k=o;p=51;break b}else{g=12;break}l=f+1|0;h=(d[w+(d[f>>0]|0)>>0]|0)<>>0>>0){h=(d[w+(d[l>>0]|0)>>0]|0)<>0]|0;a=g-s|0;h=h>>>s;g=d[125088+(l<<3)>>0]|0;if((g|0)==7)break;else if((g|0)==12){g=1;l=m;k=o;p=62;break g}else if(!((g|0)==11|(g|0)==9)){p=38;break g}s=c[125092+(l<<3)>>2]|0;k=a;m=s+m|0;j=s+j|0}s=c[125092+(l<<3)>>2]|0;n=s+m|0;k=o+4|0;c[o>>2]=n;j=s+j|0;if((j|0)<(H|0))m=0;else{g=0;break}while(1){do if((a|0)<13){if(f>>>0>=v>>>0)if(!a){e=h;g=m;p=51;break b}else{g=13;break}l=f+1|0;h=(d[w+(d[f>>0]|0)>>0]|0)<>>0>>0){h=(d[w+(d[l>>0]|0)>>0]|0)<>0]|0;a=g-s|0;h=h>>>s;g=d[157856+(l<<3)>>0]|0;if((g|0)==8)break;else if((g|0)==12){g=1;l=m;p=62;break g}else if(!((g|0)==11|(g|0)==10)){p=48;break g}s=c[157860+(l<<3)>>2]|0;m=s+m|0;j=s+j|0}s=c[157860+(l<<3)>>2]|0;g=s+m|0;l=o+8|0;c[k>>2]=g;j=s+j|0;if((j|0)>=(H|0)){g=0;k=l;break}if(g){g=a;o=l;continue}g=a;o=(n|0)==0?o:l}if((p|0)==38){g=c[B>>2]|0;k=(c[C>>2]&1024|0)!=0;l=c[(k?D:z)>>2]|0;c[E>>2]=c[A>>2];c[E+4>>2]=k?122040:122048;c[E+8>>2]=l;c[E+12>>2]=j;Dw(g,123608,122104,E);g=0;l=m;k=o;p=62}else if((p|0)==48){g=c[B>>2]|0;s=(c[C>>2]&1024|0)!=0;l=c[(s?D:z)>>2]|0;c[E>>2]=c[A>>2];c[E+4>>2]=s?122040:122048;c[E+8>>2]=l;c[E+12>>2]=j;Dw(g,123608,122104,E);g=0;l=m;p=62}if((p|0)==62){p=0;if(l){c[k>>2]=l;k=k+4|0}}if((j|0)==(H|0))j=a;else{q=c[A>>2]|0;l=c[B>>2]|0;r=(c[C>>2]&1024|0)!=0;s=c[(r?D:z)>>2]|0;c[E>>2]=j>>>0>>0?122e3:122016;c[E+4>>2]=q;c[E+8>>2]=r?122040:122048;c[E+12>>2]=s;c[E+16>>2]=j;c[E+20>>2]=H;Zx(l,123608,121952,E);l=(j|0)>(H|0);if(l&k>>>0>F>>>0)do{k=k+-4|0;j=j-(c[k>>2]|0)|0;l=(j|0)>(H|0)}while(l&k>>>0>F>>>0);if((j|0)>=(H|0)){if(!l){j=a;break}c[k>>2]=H;c[k+4>>2]=0;j=a;k=k+8|0;break}if(k-F&4){c[k>>2]=0;k=k+4|0}c[k>>2]=H-((j|0)<0?0:j);j=a;k=k+4|0}}while(0);de[c[G>>2]&63](b,F,k,H);c[k>>2]=0;k=c[t>>2]|0;l=c[u>>2]|0;c[t>>2]=l;c[u>>2]=k;k=c[x>>2]|0;e=e-k|0;c[A>>2]=(c[A>>2]|0)+1;if((e|0)<=0){p=190;break}else{b=b+k|0;F=l}}do if((p|0)==51){y=c[B>>2]|0;w=(c[C>>2]&1024|0)!=0;x=c[(w?D:z)>>2]|0;c[E>>2]=c[A>>2];c[E+4>>2]=w?122040:122048;c[E+8>>2]=x;c[E+12>>2]=j;Zx(y,123608,122056,E);if(g){c[k>>2]=g;k=k+4|0}if((j|0)==(H|0)){h=e;l=0;g=0;j=k}else{A=c[A>>2]|0;g=c[B>>2]|0;C=(c[C>>2]&1024|0)!=0;D=c[(C?D:z)>>2]|0;c[E>>2]=j>>>0>>0?122e3:122016;c[E+4>>2]=A;c[E+8>>2]=C?122040:122048;c[E+12>>2]=D;c[E+16>>2]=j;c[E+20>>2]=H;Zx(g,123608,121952,E);g=(j|0)>(H|0);if(g&k>>>0>F>>>0){g=k;do{g=g+-4|0;j=j-(c[g>>2]|0)|0;h=(j|0)>(H|0)}while(h&g>>>0>F>>>0);k=g}else h=g;if((j|0)>=(H|0)){if(!h){h=e;l=0;g=0;j=k;break}c[k>>2]=H;c[k+4>>2]=0;h=e;l=0;g=0;j=k+8|0;break}if(k-F&4){c[k>>2]=0;k=k+4|0}c[k>>2]=H-((j|0)<0?0:j);h=e;l=0;g=0;j=k+4|0}}else if((p|0)==154){y=c[B>>2]|0;w=(c[C>>2]&1024|0)!=0;x=c[(w?D:z)>>2]|0;c[E>>2]=c[A>>2];c[E+4>>2]=w?122040:122048;c[E+8>>2]=x;c[E+12>>2]=h;Zx(y,123608,122056,E);if(j){c[k>>2]=j;k=k+4|0}if((h|0)==(H|0)){h=e;g=0;j=k}else{A=c[A>>2]|0;j=c[B>>2]|0;C=(c[C>>2]&1024|0)!=0;D=c[(C?D:z)>>2]|0;c[E>>2]=h>>>0>>0?122e3:122016;c[E+4>>2]=A;c[E+8>>2]=C?122040:122048;c[E+12>>2]=D;c[E+16>>2]=h;c[E+20>>2]=H;Zx(j,123608,121952,E);j=(h|0)>(H|0);if(j&k>>>0>F>>>0){g=k;do{g=g+-4|0;h=h-(c[g>>2]|0)|0;j=(h|0)>(H|0)}while(j&g>>>0>F>>>0);k=g}if((h|0)>=(H|0)){if(!j){h=e;g=0;j=k;break}c[k>>2]=H;c[k+4>>2]=0;h=e;g=0;j=k+8|0;break}if(k-F&4){c[k>>2]=0;k=k+4|0}c[k>>2]=H-((h|0)<0?0:h);h=e;g=0;j=k+4|0}}else if((p|0)==186)if(H){A=c[A>>2]|0;j=c[B>>2]|0;C=(c[C>>2]&1024|0)!=0;D=c[(C?D:z)>>2]|0;c[E>>2]=122e3;c[E+4>>2]=A;c[E+8>>2]=C?122040:122048;c[E+12>>2]=D;c[E+16>>2]=0;c[E+20>>2]=H;Zx(j,123608,121952,E);j=F+4|0;c[F>>2]=H;if(y)l=0;else{c[j>>2]=0;l=0;j=F+8|0}}else{l=0;j=F}else if((p|0)==190){l=c[L>>2]|0;k=c[M>>2]|0;break a}while(0);de[c[G>>2]&63](b,F,j,H);c[J>>2]=l;c[I>>2]=h;c[K>>2]=g;c[M>>2]=(c[L>>2]|0)-f+(c[M>>2]|0);c[L>>2]=f;M=-1;i=N;return M|0}else l=f;while(0);c[J>>2]=j;c[I>>2]=h;c[K>>2]=g;c[M>>2]=l-f+k;c[L>>2]=f;M=1;i=N;return M|0}function j2(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;j=i;h=c[b+576>>2]|0;f=0;do{g=l2(d,f,e)|0;m2(b,g,120272);f=g+f|0;if(f>>>0>=e>>>0)break;g=k2(d,f,e)|0;m2(b,g,120928);f=g+f|0}while(f>>>0>>0);e=h+4|0;f=c[e>>2]|0;if(!(f&12)){i=j;return}g=h+52|0;if((c[g>>2]|0)!=8){f=b+608|0;if((c[f>>2]|0)>=(c[b+592>>2]|0))cy(b)|0;d=h+48|0;l=c[d>>2]&255;m=b+604|0;k=c[m>>2]|0;c[m>>2]=k+1;a[k>>0]=l;c[f>>2]=(c[f>>2]|0)+1;c[d>>2]=0;c[g>>2]=8;f=c[e>>2]|0}if(!(f&8)){i=j;return}e=b+604|0;f=c[e>>2]|0;if(!(f&1)){i=j;return}d=b+608|0;if((c[d>>2]|0)>=(c[b+592>>2]|0)){cy(b)|0;f=c[e>>2]|0}m=h+48|0;b=c[m>>2]&255;c[e>>2]=f+1;a[f>>0]=b;c[d>>2]=(c[d>>2]|0)+1;c[m>>2]=0;c[g>>2]=8;i=j;return}function k2(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;h=f-e|0;j=e>>3;f=b+j|0;if((h|0)<=0){b=0;i=k;return b|0}e=e&7;do if(e){g=d[122368+((d[f>>0]|0)<>0]|0;f=8-e|0;g=g>>>0>f>>>0?f:g;g=(g|0)>(h|0)?h:g;if((g+e|0)<8){b=g;i=k;return b|0}else{f=b+(j+1)|0;h=h-g|0;break}}else g=0;while(0);if((h|0)>63){a:do if(f&3){e=h;while(1){h=a[f>>0]|0;if(h<<24>>24!=-1)break;g=g+8|0;h=e+-8|0;f=f+1|0;if(!(f&3))break a;else e=h}b=(d[122368+(h&255)>>0]|0)+g|0;i=k;return b|0}while(0);b:do if((h|0)>31)do{if((c[f>>2]|0)!=-1)break b;g=g+32|0;h=h+-32|0;f=f+4|0}while((h|0)>31);while(0)}c:do if((h|0)>7){while(1){e=a[f>>0]|0;if(e<<24>>24!=-1)break;g=g+8|0;h=h+-8|0;f=f+1|0;if((h|0)<=7)break c}b=(d[122368+(e&255)>>0]|0)+g|0;i=k;return b|0}while(0);if((h|0)<=0){b=g;i=k;return b|0}b=d[122368+(d[f>>0]|0)>>0]|0;b=((b|0)>(h|0)?h:b)+g|0;i=k;return b|0}function l2(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;h=f-e|0;j=e>>3;f=b+j|0;if((h|0)<=0){b=0;i=k;return b|0}e=e&7;do if(e){g=d[122624+((d[f>>0]|0)<>0]|0;f=8-e|0;g=g>>>0>f>>>0?f:g;g=(g|0)>(h|0)?h:g;if((g+e|0)<8){b=g;i=k;return b|0}else{f=b+(j+1)|0;h=h-g|0;break}}else g=0;while(0);if((h|0)>63){a:do if(f&3){e=h;while(1){h=a[f>>0]|0;if(h<<24>>24)break;g=g+8|0;h=e+-8|0;f=f+1|0;if(!(f&3))break a;else e=h}b=(d[122624+(h&255)>>0]|0)+g|0;i=k;return b|0}while(0);b:do if((h|0)>31)do{if(c[f>>2]|0)break b;g=g+32|0;h=h+-32|0;f=f+4|0}while((h|0)>31);while(0)}c:do if((h|0)>7){while(1){e=a[f>>0]|0;if(e<<24>>24)break;g=g+8|0;h=h+-8|0;f=f+1|0;if((h|0)<=7)break c}b=(d[122624+(e&255)>>0]|0)+g|0;i=k;return b|0}while(0);if((h|0)<=0){b=g;i=k;return b|0}b=d[122624+(d[f>>0]|0)>>0]|0;b=((b|0)>(h|0)?h:b)+g|0;i=k;return b|0}function m2(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;E=c[d+576>>2]|0;D=E+52|0;o=c[D>>2]|0;E=E+48|0;p=c[E>>2]|0;a:do if((f|0)>2623){u=g+620|0;v=g+618|0;w=d+608|0;r=d+592|0;s=d+604|0;t=g+622|0;while(1){q=e[u>>1]|0;m=b[v>>1]|0;n=m&65535;if(n>>>0<=o>>>0)if((m&65535)<9){l=o;m=n}else break;else{l=c[w>>2]|0;m=n;while(1){m=m-o|0;if((l|0)>=(c[r>>2]|0))cy(d)|0;l=c[s>>2]|0;c[s>>2]=l+1;a[l>>0]=q>>>m|p;l=(c[w>>2]|0)+1|0;c[w>>2]=l;if(m>>>0<=8){l=8;p=0;break}else{o=8;p=0}}}o=l-m|0;p=(c[122184+(m<<2)>>2]&q)<>2]|0)>=(c[r>>2]|0))cy(d)|0;o=c[s>>2]|0;c[s>>2]=o+1;a[o>>0]=p;c[w>>2]=(c[w>>2]|0)+1;o=8;p=0}f=f-(b[t>>1]|0)|0;if((f|0)<=2623){k=f;j=o;h=p;break a}}Sa(122152,121616,650,122328)}else{k=f;j=o;h=p}while(0);if((k|0)>63){w=k>>6;f=w+63|0;r=g+(f*6|0)+4|0;if((b[r>>1]|0)!=(w<<6|0))Sa(122336,121616,655,122328);q=e[g+(f*6|0)+2>>1]|0;f=b[g+(f*6|0)>>1]|0;p=f&65535;if(p>>>0<=j>>>0)if((f&65535)<9){z=j;x=h;y=p}else Sa(122152,121616,660,122328);else{o=d+608|0;m=d+592|0;l=d+604|0;n=c[o>>2]|0;f=p;while(1){f=f-j|0;if((n|0)>=(c[m>>2]|0))cy(d)|0;n=c[l>>2]|0;c[l>>2]=n+1;a[n>>0]=q>>>f|h;n=(c[o>>2]|0)+1|0;c[o>>2]=n;if(f>>>0<=8){z=8;x=0;y=f;break}else{j=8;h=0}}}f=z-y|0;h=(c[122184+(y<<2)>>2]&q)<>2]|0)>=(c[d+592>>2]|0))cy(d)|0;y=d+604|0;z=c[y>>2]|0;c[y>>2]=z+1;a[z>>0]=h;c[f>>2]=(c[f>>2]|0)+1;f=8;h=0}k=k-(b[r>>1]|0)|0;j=f}p=e[g+(k*6|0)+2>>1]|0;f=b[g+(k*6|0)>>1]|0;o=f&65535;if(o>>>0<=j>>>0)if((f&65535)<9){C=j;A=h;B=o}else Sa(122152,121616,667,122328);else{k=d+608|0;l=d+592|0;m=d+604|0;n=c[k>>2]|0;f=o;while(1){f=f-j|0;if((n|0)>=(c[l>>2]|0))cy(d)|0;n=c[m>>2]|0;c[m>>2]=n+1;a[n>>0]=p>>>f|h;n=(c[k>>2]|0)+1|0;c[k>>2]=n;if(f>>>0<=8){C=8;A=0;B=f;break}else{j=8;h=0}}}f=C-B|0;h=(c[122184+(B<<2)>>2]&p)<>2]=C;c[D>>2]=d;i=F;return}f=d+608|0;if((c[f>>2]|0)>=(c[d+592>>2]|0))cy(d)|0;C=d+604|0;d=c[C>>2]|0;c[C>>2]=d+1;a[d>>0]=h;c[f>>2]=(c[f>>2]|0)+1;d=8;C=0;c[E>>2]=C;c[D>>2]=d;i=F;return}function n2(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+208|0;b=e;e=e+8|0;Jd[c[(c[a>>2]|0)+12>>2]&255](a,e);d=c[(c[a+796>>2]|0)+628>>2]|0;c[b>>2]=e;Dw(d,225784,225792,b);MF(a);Va(a+592|0,1)}function o2(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+208|0;d=b;e=b+8|0;Jd[c[(c[a>>2]|0)+12>>2]&255](a,e);a=c[(c[a+796>>2]|0)+628>>2]|0;c[d>>2]=e;Zx(a,225784,225792,d);i=b;return}function p2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;h=i;i=i+168|0;c[h>>2]=0;Kga(a+592|0,1,h|0)|0;t=0;e=t;t=0;if((e|0)!=0&(u|0)!=0){f=Mga(c[e>>2]|0,h)|0;if(!f)Va(e|0,u|0);I=u}else f=-1;if((f|0)==1)e=I;else e=0;while(1){if(e){e=-1;j=6;break}t=0;e=qa(202,a|0,b|0,d|0)|0;f=t;t=0;if((f|0)!=0&(u|0)!=0){g=Mga(c[f>>2]|0,h)|0;if(!g)Va(f|0,u|0);I=u}else g=-1;if((g|0)==1)e=I;else break}if((j|0)==6){i=k;return e|0}h=e;i=k;return h|0}function q2(a){a=a|0;Va(a+4|0,1)}function r2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;q=c[b+408>>2]|0;kR(b);e=b+24|0;f=c[e>>2]|0;o=c[f>>2]|0;c[f>>2]=o+1;a[o>>0]=-1;o=f+4|0;p=(c[o>>2]|0)+-1|0;c[o>>2]=p;if((p|0)==0?(Ld[c[f+12>>2]&511](b)|0)<<24>>24==0:0){p=c[b>>2]|0;c[p+20>>2]=25;Id[c[p>>2]&511](b)}e=c[e>>2]|0;o=c[e>>2]|0;c[e>>2]=o+1;a[o>>0]=d+208;o=e+4|0;p=(c[o>>2]|0)+-1|0;c[o>>2]=p;if((p|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){p=c[b>>2]|0;c[p+20>>2]=25;Id[c[p>>2]&511](b)}e=b+276|0;if((c[e>>2]|0)<=0){b=q+12|0;c[b>>2]=0;b=q+16|0;c[b>>2]=65536;b=q+20|0;c[b>>2]=0;b=q+24|0;c[b>>2]=0;b=q+28|0;c[b>>2]=11;b=q+32|0;c[b>>2]=-1;i=r;return}f=b+348|0;d=b+356|0;g=q+76|0;h=q+36|0;j=q+52|0;k=b+352|0;l=q+140|0;n=0;do{m=c[b+(n<<2)+280>>2]|0;if((c[f>>2]|0)==0?(c[d>>2]|0)==0:0){o=(c[g+(c[m+20>>2]<<2)>>2]|0)+0|0;p=o+64|0;do{a[o>>0]=0;o=o+1|0}while((o|0)<(p|0));c[h+(n<<2)>>2]=0;c[j+(n<<2)>>2]=0}if(c[k>>2]|0)Cga(c[l+(c[m+24>>2]<<2)>>2]|0,0,256)|0;n=n+1|0}while((n|0)<(c[e>>2]|0));b=q+12|0;c[b>>2]=0;b=q+16|0;c[b>>2]=65536;b=q+20|0;c[b>>2]=0;b=q+24|0;c[b>>2]=0;b=q+28|0;c[b>>2]=11;b=q+32|0;c[b>>2]=-1;i=r;return}function s2(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;m=c[b+408>>2]|0;h=d[e>>0]|0;j=c[276704+((h&127)<<2)>>2]|0;k=j>>>8;l=j>>16;q=m+16|0;g=(c[q>>2]|0)-l|0;c[q>>2]=g;if((h>>>7|0)==(f|0)){if((g|0)>32767){i=r;return}if((g|0)<(l|0)){o=m+12|0;c[o>>2]=(c[o>>2]|0)+g;c[q>>2]=l}g=h&128^k}else{if((g|0)>=(l|0)){o=m+12|0;c[o>>2]=(c[o>>2]|0)+g;c[q>>2]=l}g=h&128^j}a[e>>0]=g;f=m+12|0;l=m+28|0;e=m+32|0;n=m+24|0;o=b+24|0;j=m+20|0;h=c[q>>2]|0;g=c[f>>2]|0;k=c[l>>2]|0;do{h=h<<1;c[q>>2]=h;g=g<<1;c[f>>2]=g;k=k+-1|0;c[l>>2]=k;if(!k){m=g>>19;do if((m|0)>255){g=c[e>>2]|0;if((g|0)>-1){if(c[n>>2]|0){do{g=c[o>>2]|0;k=c[g>>2]|0;c[g>>2]=k+1;a[k>>0]=0;k=g+4|0;h=(c[k>>2]|0)+-1|0;c[k>>2]=h;if((h|0)==0?(Ld[c[g+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b)}h=(c[n>>2]|0)+-1|0;c[n>>2]=h}while((h|0)!=0);g=c[e>>2]|0}k=c[o>>2]|0;h=c[k>>2]|0;c[k>>2]=h+1;a[h>>0]=g+1;g=k+4|0;h=(c[g>>2]|0)+-1|0;c[g>>2]=h;if((h|0)==0?(Ld[c[k+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b)}if(((c[e>>2]|0)==254?(p=c[o>>2]|0,k=c[p>>2]|0,c[p>>2]=k+1,a[k>>0]=0,k=p+4|0,h=(c[k>>2]|0)+-1|0,c[k>>2]=h,(h|0)==0):0)?(Ld[c[p+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b)}}c[n>>2]=(c[n>>2]|0)+(c[j>>2]|0);c[j>>2]=0;c[e>>2]=m&255}else{if((m|0)==255){c[j>>2]=(c[j>>2]|0)+1;break}g=c[e>>2]|0;if(g){if((g|0)>-1){if(c[n>>2]|0){do{g=c[o>>2]|0;k=c[g>>2]|0;c[g>>2]=k+1;a[k>>0]=0;k=g+4|0;h=(c[k>>2]|0)+-1|0;c[k>>2]=h;if((h|0)==0?(Ld[c[g+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b)}h=(c[n>>2]|0)+-1|0;c[n>>2]=h}while((h|0)!=0);g=c[e>>2]|0}k=c[o>>2]|0;h=c[k>>2]|0;c[k>>2]=h+1;a[h>>0]=g;g=k+4|0;h=(c[g>>2]|0)+-1|0;c[g>>2]=h;if((h|0)==0?(Ld[c[k+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b)}}}else c[n>>2]=(c[n>>2]|0)+1;if(c[j>>2]|0){if(c[n>>2]|0)do{g=c[o>>2]|0;k=c[g>>2]|0;c[g>>2]=k+1;a[k>>0]=0;k=g+4|0;h=(c[k>>2]|0)+-1|0;c[k>>2]=h;if((h|0)==0?(Ld[c[g+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b)}h=(c[n>>2]|0)+-1|0;c[n>>2]=h}while((h|0)!=0);do{g=c[o>>2]|0;k=c[g>>2]|0;c[g>>2]=k+1;a[k>>0]=-1;k=g+4|0;h=(c[k>>2]|0)+-1|0;c[k>>2]=h;if((h|0)==0?(Ld[c[g+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b)}g=c[o>>2]|0;k=c[g>>2]|0;c[g>>2]=k+1;a[k>>0]=0;k=g+4|0;h=(c[k>>2]|0)+-1|0;c[k>>2]=h;if((h|0)==0?(Ld[c[g+12>>2]&511](b)|0)<<24>>24==0:0){h=c[b>>2]|0;c[h+20>>2]=25;Id[c[h>>2]&511](b)}h=(c[j>>2]|0)+-1|0;c[j>>2]=h}while((h|0)!=0)}c[e>>2]=m&255}while(0);g=c[f>>2]&524287;c[f>>2]=g;k=(c[l>>2]|0)+8|0;c[l>>2]=k;h=c[q>>2]|0}}while((h|0)<32768);i=r;return}function t2(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;f=b+128|0;d=c[f>>2]|0;if(!d){i=j;return}else h=0;while(1){d=d>>1;if(!d)break;else h=h+1|0}if((h|0)>14){g=c[b+120>>2]|0;e=c[g>>2]|0;c[e+20>>2]=41;Id[c[e>>2]&511](g)}d=c[b+124>>2]|0;e=h<<4;g=b+108|0;if(!(a[g>>0]|0)){d=c[b+(d<<2)+60>>2]|0;v2(b,c[d+(e<<2)>>2]|0,a[d+e+1024>>0]|0)}else{e=(c[b+(d<<2)+92>>2]|0)+(e<<2)|0;c[e>>2]=(c[e>>2]|0)+1}if(h)v2(b,c[f>>2]|0,h);c[f>>2]=0;f=b+132|0;d=c[f>>2]|0;if((a[g>>0]|0)==0&(d|0)!=0){e=c[b+136>>2]|0;while(1){v2(b,a[e>>0]|0,1);d=d+-1|0;if(!d)break;else e=e+1|0}}c[f>>2]=0;i=j;return}function u2(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+2096|0;o=q+2056|0;p=q;n=q+1028|0;h=o+0|0;j=h+33|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(j|0));Cga(p|0,0,1028)|0;Cga(n|0,-1,1028)|0;c[f+1024>>2]=1;m=-1;g=0;h=1e9;a:while(1){if((g|0)<257){l=c[f+(g<<2)>>2]|0;j=(l|0)==0|(l|0)>(h|0);m=j?m:g;g=g+1|0;h=j?h:l;continue}else{l=-1;k=0;j=1e9}while(1){g=c[f+(k<<2)>>2]|0;h=(g|0)==0|(g|0)>(j|0)|(k|0)==(m|0);l=h?l:k;k=k+1|0;if((k|0)==257)break;else j=h?j:g}if((l|0)<0)break;g=f+(l<<2)|0;h=f+(m<<2)|0;c[h>>2]=(c[h>>2]|0)+(c[g>>2]|0);c[g>>2]=0;g=p+(m<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=n+(m<<2)|0;h=c[g>>2]|0;if((h|0)>-1)do{g=p+(h<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=n+(h<<2)|0;h=c[g>>2]|0}while((h|0)>-1);c[g>>2]=l;g=p+(l<<2)|0;c[g>>2]=(c[g>>2]|0)+1;g=c[n+(l<<2)>>2]|0;if((g|0)<=-1){m=-1;g=0;h=1e9;continue}while(1){l=p+(g<<2)|0;c[l>>2]=(c[l>>2]|0)+1;g=c[n+(g<<2)>>2]|0;if((g|0)<=-1){m=-1;g=0;h=1e9;continue a}}}h=0;do{g=c[p+(h<<2)>>2]|0;if(g){if((g|0)>32){f=c[b>>2]|0;c[f+20>>2]=40;Id[c[f>>2]&511](b)}f=o+g|0;a[f>>0]=(a[f>>0]|0)+1<<24>>24}h=h+1|0}while((h|0)!=257);g=32;do{m=o+g|0;h=a[m>>0]|0;if(!(h<<24>>24))g=g+-1|0;else{f=g+-2|0;g=g+-1|0;l=o+g|0;do{k=f;while(1){j=o+k|0;if(!(a[j>>0]|0))k=k+-1|0;else break}a[m>>0]=(h&255)+254;a[l>>0]=(a[l>>0]|0)+1<<24>>24;b=o+(k+1)|0;a[b>>0]=(d[b>>0]|0)+2;a[j>>0]=(a[j>>0]|0)+-1<<24>>24;h=a[m>>0]|0}while(h<<24>>24!=0)}}while((g|0)>16);j=16;while(1){g=o+j|0;h=a[g>>0]|0;if(!(h<<24>>24))j=j+-1|0;else break}a[g>>0]=h+-1<<24>>24;h=e+0|0;g=o+0|0;j=h+17|0;do{a[h>>0]=a[g>>0]|0;h=h+1|0;g=g+1|0}while((h|0)<(j|0));h=1;g=0;do{j=0;do{if((c[p+(j<<2)>>2]|0)==(h|0)){a[e+g+17>>0]=j;g=g+1|0}j=j+1|0}while((j|0)!=256);h=h+1|0}while((h|0)!=33);a[e+273>>0]=0;i=q;return}function v2(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;if(!e){m=c[b+120>>2]|0;j=c[m>>2]|0;c[j+20>>2]=41;Id[c[j>>2]&511](m)}if(a[b+108>>0]|0){i=n;return}l=b+16|0;g=c[l>>2]|0;f=g+e|0;m=b+12|0;d=((1<>2];if((f|0)>7){j=b+112|0;k=b+116|0;h=b+120|0;e=g+e|0;do{o=d>>>16;g=o&255;b=c[j>>2]|0;c[j>>2]=b+1;a[b>>0]=o;b=(c[k>>2]|0)+-1|0;c[k>>2]=b;if(!b){o=c[h>>2]|0;b=c[o+24>>2]|0;if(!((Ld[c[b+12>>2]&511](o)|0)<<24>>24)){o=c[h>>2]|0;p=c[o>>2]|0;c[p+20>>2]=25;Id[c[p>>2]&511](o)}c[j>>2]=c[b>>2];c[k>>2]=c[b+4>>2]}if((g|0)==255?(p=c[j>>2]|0,c[j>>2]=p+1,a[p>>0]=0,p=(c[k>>2]|0)+-1|0,c[k>>2]=p,(p|0)==0):0){p=c[h>>2]|0;g=c[p+24>>2]|0;if(!((Ld[c[g+12>>2]&511](p)|0)<<24>>24)){p=c[h>>2]|0;o=c[p>>2]|0;c[o+20>>2]=25;Id[c[o>>2]&511](p)}c[j>>2]=c[g>>2];c[k>>2]=c[g+4>>2]}d=d<<8;f=f+-8|0}while((f|0)>7);f=e&7}c[m>>2]=d;c[l>>2]=f;i=n;return}function w2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;t2(b);if(!(a[b+108>>0]|0)){v2(b,127,7);c[b+12>>2]=0;c[b+16>>2]=0;g=b+112|0;h=c[g>>2]|0;c[g>>2]=h+1;a[h>>0]=-1;h=b+116|0;f=(c[h>>2]|0)+-1|0;c[h>>2]=f;if(!f){e=b+120|0;k=c[e>>2]|0;f=c[k+24>>2]|0;if(!((Ld[c[f+12>>2]&511](k)|0)<<24>>24)){k=c[e>>2]|0;e=c[k>>2]|0;c[e+20>>2]=25;Id[c[e>>2]&511](k)}e=c[f>>2]|0;c[g>>2]=e;c[h>>2]=c[f+4>>2]}else e=c[g>>2]|0;c[g>>2]=e+1;a[e>>0]=d+208;d=(c[h>>2]|0)+-1|0;c[h>>2]=d;if(!d){e=b+120|0;d=c[e>>2]|0;f=c[d+24>>2]|0;if(!((Ld[c[f+12>>2]&511](d)|0)<<24>>24)){d=c[e>>2]|0;k=c[d>>2]|0;c[k+20>>2]=25;Id[c[k>>2]&511](d)}c[g>>2]=c[f>>2];c[h>>2]=c[f+4>>2]}}f=b+120|0;e=c[f>>2]|0;if(c[e+348>>2]|0){c[b+128>>2]=0;c[b+132>>2]=0;i=j;return}if((c[e+276>>2]|0)>0)e=0;else{i=j;return}do{c[b+(e<<2)+20>>2]=0;e=e+1|0}while((e|0)<(c[(c[f>>2]|0)+276>>2]|0));i=j;return}function x2(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;f=c[b+432>>2]|0;if(!((Ld[c[(c[b+428>>2]|0)+8>>2]&511](b)|0)<<24>>24)){r=c[b>>2]|0;c[r+20>>2]=25;Id[c[r>>2]&511](b)}g=b+304|0;if((c[g>>2]|0)<=0){s=f+12|0;c[s>>2]=0;s=f+16|0;c[s>>2]=0;s=f+20|0;c[s>>2]=-16;b=b+252|0;b=c[b>>2]|0;s=f+56|0;c[s>>2]=b;i=t;return}h=b+201|0;j=f+60|0;k=f+24|0;l=f+40|0;m=b+400|0;n=b+376|0;o=f+124|0;p=b+384|0;r=0;do{q=c[b+(r<<2)+308>>2]|0;d=a[h>>0]|0;if(d<<24>>24){if((c[n>>2]|0)==0?(c[p>>2]|0)==0:0)s=8}else s=8;if((s|0)==8){s=0;d=(c[j+(c[q+20>>2]<<2)>>2]|0)+0|0;e=d+64|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0));c[k+(r<<2)>>2]=0;c[l+(r<<2)>>2]=0;d=a[h>>0]|0}if(!(d<<24>>24)){if(c[m>>2]|0)s=12}else if(c[n>>2]|0)s=12;if((s|0)==12){s=0;Cga(c[o+(c[q+24>>2]<<2)>>2]|0,0,256)|0}r=r+1|0}while((r|0)<(c[g>>2]|0));s=f+12|0;c[s>>2]=0;s=f+16|0;c[s>>2]=0;s=f+20|0;c[s>>2]=-16;b=b+252|0;b=c[b>>2]|0;s=f+56|0;c[s>>2]=b;i=t;return}function y2(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;g=c[b+432>>2]|0;o=g+16|0;f=c[o>>2]|0;l=g+20|0;if((f|0)<32768){n=b+404|0;j=b+24|0;h=g+12|0;f=c[l>>2]|0;while(1){g=f+-1|0;c[l>>2]=g;if((f|0)<1){a:do if(!(c[n>>2]|0)){f=c[j>>2]|0;g=f+4|0;if((c[g>>2]|0)==0?(Ld[c[f+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Id[c[m>>2]&511](b)}c[g>>2]=(c[g>>2]|0)+-1;m=c[f>>2]|0;c[f>>2]=m+1;m=a[m>>0]|0;f=m&255;if(m<<24>>24==-1){while(1){f=c[j>>2]|0;g=f+4|0;if((c[g>>2]|0)==0?(Ld[c[f+12>>2]&511](b)|0)<<24>>24==0:0){m=c[b>>2]|0;c[m+20>>2]=25;Id[c[m>>2]&511](b)}c[g>>2]=(c[g>>2]|0)+-1;m=c[f>>2]|0;c[f>>2]=m+1;f=d[m>>0]|0;if(!f){f=255;break a}else if((f|0)!=255)break}c[n>>2]=f;f=0}}else f=0;while(0);c[h>>2]=c[h>>2]<<8|f;f=c[l>>2]|0;g=f+8|0;c[l>>2]=g;if((g|0)<0){f=f+9|0;c[l>>2]=f;if(!f){c[o>>2]=32768;g=0}else g=f}}f=c[o>>2]<<1;c[o>>2]=f;if((f|0)<32768)f=g;else{j=h;k=h;break}}}else{k=g+12|0;j=k;g=c[l>>2]|0}l=d[e>>0]|0;m=c[276704+((l&127)<<2)>>2]|0;n=m>>8;b=m>>16;h=f-b|0;c[o>>2]=h;g=h<>2]|0;if((f|0)>=(g|0)){c[k>>2]=f-g;c[o>>2]=b;f=l&128;if((h|0)<(b|0)){a[e>>0]=f^n;e=l;e=e>>7;i=p;return e|0}else{a[e>>0]=f^m;e=l^128;e=e>>7;i=p;return e|0}}if((h|0)>=32768){e=l;e=e>>7;i=p;return e|0}f=l&128;if((h|0)<(b|0)){a[e>>0]=f^m;e=l^128;e=e>>7;i=p;return e|0}else{a[e>>0]=f^n;e=l;e=e>>7;i=p;return e|0}return 0}function z2(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;g=c[b>>2]|0;n=b+4|0;h=c[n>>2]|0;m=c[b+16>>2]|0;k=m+404|0;a:do if(!(c[k>>2]|0)){if((e|0)<25){l=m+24|0;j=e;b:while(1){if(!h){if(!((Ld[c[(c[l>>2]|0)+12>>2]&511](m)|0)<<24>>24)){g=0;o=19;break}e=c[l>>2]|0;h=c[e+4>>2]|0;e=c[e>>2]|0}else e=g;h=h+-1|0;g=e+1|0;q=a[e>>0]|0;e=q&255;if(q<<24>>24==-1)while(1){if(!h){if(!((Ld[c[(c[l>>2]|0)+12>>2]&511](m)|0)<<24>>24)){g=0;o=19;break b}e=c[l>>2]|0;h=c[e+4>>2]|0;e=c[e>>2]|0}else e=g;h=h+-1|0;g=e+1|0;e=a[e>>0]|0;if(!(e<<24>>24)){e=255;break}else if(e<<24>>24!=-1){o=12;break b}}d=e|d<<8;e=j+8|0;if((e|0)<25)j=e;else break a}if((o|0)==12){c[k>>2]=e&255;e=j;j=h;o=14;break}else if((o|0)==19){i=p;return g|0}}}else{j=h;o=14}while(0);if((o|0)==14)if((e|0)<(f|0)){h=m+432|0;if(!(a[(c[h>>2]|0)+40>>0]|0)){q=c[m>>2]|0;c[q+20>>2]=120;Jd[c[q+4>>2]&255](m,-1);a[(c[h>>2]|0)+40>>0]=1}d=d<<25-e;e=25;h=j}else h=j;c[b>>2]=g;c[n>>2]=h;c[b+8>>2]=d;c[b+12>>2]=e;q=1;i=p;return q|0}function A2(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;do if((e|0)<(g|0))if(!((z2(a,b,e,g)|0)<<24>>24)){f=-1;i=l;return f|0}else{b=c[a+8>>2]|0;e=c[a+12>>2]|0;break}while(0);e=e-g|0;h=b>>e&c[279344+(g<<2)>>2];j=a+8|0;k=a+12|0;a:do if((h|0)>(c[f+(g<<2)>>2]|0)){while(1){h=h<<1;if((e|0)<1){if(!((z2(a,b,e,1)|0)<<24>>24)){e=-1;break}b=c[j>>2]|0;e=c[k>>2]|0}e=e+-1|0;h=b>>>e&1|h;g=g+1|0;if((h|0)<=(c[f+(g<<2)>>2]|0))break a}i=l;return e|0}while(0);c[j>>2]=b;c[k>>2]=e;if((g|0)>16){f=c[a+16>>2]|0;j=c[f>>2]|0;c[j+20>>2]=121;Jd[c[j+4>>2]&255](f,-1);f=0;i=l;return f|0}else{f=d[(c[f+140>>2]|0)+((c[f+(g<<2)+72>>2]|0)+h)+17>>0]|0;i=l;return f|0}return 0}function B2(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;l=c[d>>2]|0;o=d+4|0;p=c[o>>2]|0;q=d+8|0;r=c[q>>2]|0;s=d+12|0;t=c[s>>2]|0;u=d+16|0;n=c[u>>2]|0;w=d+20|0;v=c[w>>2]|0;a:do if((l|0)<(p|0)){e=(r|0)>(t|0);m=(n|0)>(v|0);f=l;b:while(1){if(!e){h=c[a+(f<<2)>>2]|0;g=r;while(1){if(!m){k=n;j=h+(g<<6)+(n<<1)|0;while(1){if(b[j>>1]|0)break b;if((k|0)<(v|0)){k=k+1|0;j=j+2|0}else break}}if((g|0)<(t|0))g=g+1|0;else break}}if((f|0)<(p|0))f=f+1|0;else break a}c[d>>2]=f;l=f}while(0);c:do if((p|0)>(l|0)){e=(r|0)>(t|0);m=(n|0)>(v|0);f=p;d:while(1){if(!e){h=c[a+(f<<2)>>2]|0;g=r;while(1){if(!m){k=n;j=h+(g<<6)+(n<<1)|0;while(1){if(b[j>>1]|0)break d;if((k|0)<(v|0)){k=k+1|0;j=j+2|0}else break}}if((g|0)<(t|0))g=g+1|0;else break}}if((f|0)>(l|0))f=f+-1|0;else break c}c[o>>2]=f;p=f}while(0);e:do if((r|0)<(t|0)){e=(p|0)<(l|0);m=(n|0)>(v|0);f=r;f:while(1){if(!e){h=l;while(1){if(!m){g=n;k=(c[a+(h<<2)>>2]|0)+(f<<6)+(n<<1)|0;while(1){if(b[k>>1]|0)break f;if((g|0)<(v|0)){g=g+1|0;k=k+2|0}else break}}if((h|0)<(p|0))h=h+1|0;else break}}if((f|0)<(t|0))f=f+1|0;else break e}c[q>>2]=f;r=f}while(0);g:do if((t|0)>(r|0)){e=(p|0)<(l|0);h=(n|0)>(v|0);g=t;h:while(1){if(!e){f=l;while(1){if(!h){k=n;j=(c[a+(f<<2)>>2]|0)+(g<<6)+(n<<1)|0;while(1){if(b[j>>1]|0)break h;if((k|0)<(v|0)){k=k+1|0;j=j+2|0}else break}}if((f|0)<(p|0))f=f+1|0;else break}}if((g|0)>(r|0))g=g+-1|0;else{o=t;break g}}c[s>>2]=g;o=g}else o=t;while(0);i:do if((n|0)<(v|0)){e=(p|0)<(l|0);h=(o|0)<(r|0);j=n;j:while(1){if(!e){f=l;while(1){if(!h){g=r;k=(c[a+(f<<2)>>2]|0)+(r<<6)+(j<<1)|0;while(1){if(b[k>>1]|0)break j;if((g|0)<(o|0)){g=g+1|0;k=k+64|0}else break}}if((f|0)<(p|0))f=f+1|0;else break}}if((j|0)<(v|0))j=j+1|0;else break i}c[u>>2]=j;n=j}while(0);k:do if((v|0)>(n|0)){h=(p|0)<(l|0);j=(o|0)<(r|0);k=v;l:while(1){m:do if(!h){if(j){e=l;while(1)if((e|0)<(p|0))e=e+1|0;else break m}else e=l;while(1){f=r;g=(c[a+(e<<2)>>2]|0)+(r<<6)+(k<<1)|0;while(1){if(b[g>>1]|0)break l;if((f|0)<(o|0)){f=f+1|0;g=g+64|0}else break}if((e|0)<(p|0))e=e+1|0;else break}}while(0);if((k|0)>(n|0))k=k+-1|0;else{k=v;break k}}c[w>>2]=k}else k=v;while(0);v=p-l<<4;u=(o-r|0)*12|0;w=k-n<<3;c[d+24>>2]=(ea(u,u)|0)+(ea(v,v)|0)+(ea(w,w)|0);if((p|0)<(l|0)){a=0;d=d+28|0;c[d>>2]=a;i=x;return}m=(k|0)<(n|0);if((o|0)<(r|0)){a=0;d=d+28|0;c[d>>2]=a;i=x;return}else e=0;while(1){h=c[a+(l<<2)>>2]|0;if(!m){j=r;while(1){g=n;f=h+(j<<6)+(n<<1)|0;while(1){e=((b[f>>1]|0)!=0&1)+e|0;if((g|0)>=(k|0))break;else{g=g+1|0;f=f+2|0}}if((j|0)<(o|0))j=j+1|0;else break}}if((l|0)<(p|0))l=l+1|0;else break}d=d+28|0;c[d>>2]=e;i=x;return}function C2(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=i;i=i+1408|0;F=J;G=J+1152|0;I=J+1024|0;H=c[(c[e+448>>2]|0)+24>>2]|0;C=f>>2;D=g>>3;E=h>>2;l=C<<5;B=l|4;m=D<<5;z=m|2;o=E<<5;A=o|4;u=c[e+112>>2]|0;l=l|28;k=l+B>>1;m=m|30;n=m+z>>1;o=o|28;p=o+A>>1;if((u|0)>0){s=c[e+116>>2]|0;q=c[s>>2]|0;r=c[s+4>>2]|0;s=c[s+8>>2]|0;t=0;v=2147483647;do{f=d[q+t>>0]|0;do if((f|0)>=(B|0)){if((f|0)>(l|0)){j=f-l<<1;g=f-B<<1;g=ea(g,g)|0;j=ea(j,j)|0;break}if((f|0)>(k|0)){g=f-B<<1;g=ea(g,g)|0;j=0;break}else{g=f-l<<1;g=ea(g,g)|0;j=0;break}}else{j=f-B<<1;g=f-l<<1;g=ea(g,g)|0;j=ea(j,j)|0}while(0);f=d[r+t>>0]|0;do if((f|0)>=(z|0)){if((f|0)>(m|0)){h=(f-m|0)*3|0;f=(f-z|0)*3|0;f=ea(f,f)|0;h=(ea(h,h)|0)+j|0;break}if((f|0)>(n|0)){f=(f-z|0)*3|0;f=ea(f,f)|0;h=j;break}else{f=(f-m|0)*3|0;f=ea(f,f)|0;h=j;break}}else{h=(f-z|0)*3|0;f=(f-m|0)*3|0;f=ea(f,f)|0;h=(ea(h,h)|0)+j|0}while(0);g=f+g|0;f=d[s+t>>0]|0;do if((f|0)>=(A|0)){if((f|0)>(o|0)){y=f-o|0;j=f-A|0;j=ea(j,j)|0;f=(ea(y,y)|0)+h|0;break}if((f|0)>(p|0)){j=f-A|0;j=ea(j,j)|0;f=h;break}else{j=f-o|0;j=ea(j,j)|0;f=h;break}}else{y=f-A|0;j=f-o|0;j=ea(j,j)|0;f=(ea(y,y)|0)+h|0}while(0);y=g+j|0;c[F+(t<<2)>>2]=f;v=(y|0)<(v|0)?y:v;t=t+1|0}while((t|0)!=(u|0));j=0;f=0;do{if((c[F+(j<<2)>>2]|0)<=(v|0)){a[G+f>>0]=j;f=f+1|0}j=j+1|0}while((j|0)!=(u|0));y=f}else y=0;f=F;g=127;while(1){c[f>>2]=2147483647;if((g|0)>0){f=f+4|0;g=g+-1|0}else break}if((y|0)>0){n=e+116|0;u=0;do{g=a[G+u>>0]|0;s=g&255;k=c[n>>2]|0;w=B-(d[(c[k>>2]|0)+s>>0]|0)|0;v=w<<1;v=ea(v,v)|0;h=z-(d[(c[k+4>>2]|0)+s>>0]|0)|0;o=h*3|0;v=(ea(o,o)|0)+v|0;s=A-(d[(c[k+8>>2]|0)+s>>0]|0)|0;h=(h*72|0)+144|0;k=s<<4;o=k+64|0;l=k+192|0;k=k+320|0;m=F;q=I;s=v+(ea(s,s)|0)|0;v=3;w=(w<<6)+256|0;while(1){p=m;r=q;t=s;e=7;x=h;while(1){if((t|0)<(c[p>>2]|0)){c[p>>2]=t;a[r>>0]=g}f=o+t|0;j=p+4|0;if((f|0)<(c[j>>2]|0)){c[j>>2]=f;a[r+1>>0]=g}f=l+f|0;j=p+8|0;if((f|0)<(c[j>>2]|0)){c[j>>2]=f;a[r+2>>0]=g}f=k+f|0;j=p+12|0;if((f|0)<(c[j>>2]|0)){c[j>>2]=f;a[r+3>>0]=g}if((e|0)>0){p=p+16|0;r=r+4|0;t=t+x|0;e=e+-1|0;x=x+288|0}else break}if((v|0)>0){m=m+128|0;q=q+32|0;s=s+w|0;v=v+-1|0;w=w+512|0}else break}u=u+1|0}while((u|0)!=(y|0))}j=C<<2;l=D<<3;k=E<<2;f=c[H+(j<<2)>>2]|0;g=I;h=0;while(1){F=h+l|0;E=k|1;b[f+(F<<6)+(k<<1)>>1]=(d[g>>0]|0)+1;b[f+(F<<6)+(E<<1)>>1]=(d[g+1>>0]|0)+1;b[f+(F<<6)+(E+1<<1)>>1]=(d[g+2>>0]|0)+1;b[f+(F<<6)+((k|3)<<1)>>1]=(d[g+3>>0]|0)+1;h=h+1|0;if((h|0)==8)break;else g=g+4|0}f=c[H+((j|1)<<2)>>2]|0;g=I+32|0;h=0;while(1){F=h+l|0;E=k|1;b[f+(F<<6)+(k<<1)>>1]=(d[g>>0]|0)+1;b[f+(F<<6)+(E<<1)>>1]=(d[g+1>>0]|0)+1;b[f+(F<<6)+(E+1<<1)>>1]=(d[g+2>>0]|0)+1;b[f+(F<<6)+((k|3)<<1)>>1]=(d[g+3>>0]|0)+1;h=h+1|0;if((h|0)==8)break;else g=g+4|0}f=c[H+((j|2)<<2)>>2]|0;g=I+64|0;h=0;while(1){F=h+l|0;E=k|1;b[f+(F<<6)+(k<<1)>>1]=(d[g>>0]|0)+1;b[f+(F<<6)+(E<<1)>>1]=(d[g+1>>0]|0)+1;b[f+(F<<6)+(E+1<<1)>>1]=(d[g+2>>0]|0)+1;b[f+(F<<6)+((k|3)<<1)>>1]=(d[g+3>>0]|0)+1;h=h+1|0;if((h|0)==8)break;else g=g+4|0}h=c[H+((j|3)<<2)>>2]|0;f=I+96|0;g=0;while(1){I=g+l|0;H=k|1;b[h+(I<<6)+(k<<1)>>1]=(d[f>>0]|0)+1;b[h+(I<<6)+(H<<1)>>1]=(d[f+1>>0]|0)+1;b[h+(I<<6)+(H+1<<1)>>1]=(d[f+2>>0]|0)+1;b[h+(I<<6)+((k|3)<<1)>>1]=(d[f+3>>0]|0)+1;g=g+1|0;if((g|0)==8)break;else f=f+4|0}i=J;return}function D2(b,c){b=b|0;c=c|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;a[c+3>>0]=-1;j=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>11&65535;j=j<<3|j>>>2;a[c+2>>0]=j;g=((d[b>>0]|d[b+1>>0]<<8)&65535)>>>5&63;g=g<<2|g>>>4;a[c+1>>0]=g;m=d[b>>0]|d[b+1>>0]<<8;h=m&31;h=h<<3|h>>>2;a[c>>0]=h;a[c+7>>0]=-1;l=b+2|0;b=((d[l>>0]|d[l+1>>0]<<8)&65535)>>>11&65535;b=b<<3|b>>>2;a[c+6>>0]=b;e=((d[l>>0]|d[l+1>>0]<<8)&65535)>>>5&63;e=e<<2|e>>>4;a[c+5>>0]=e;l=d[l>>0]|d[l+1>>0]<<8;f=l&31;f=f<<3|f>>>2;a[c+4>>0]=f;a[c+11>>0]=-1;if((m&65535)>(l&65535)){a[c+10>>0]=((b+(j<<1)|0)>>>0)/3|0;a[c+9>>0]=((e+(g<<1)|0)>>>0)/3|0;a[c+8>>0]=((f+(h<<1)|0)>>>0)/3|0;a[c+15>>0]=-1;a[c+14>>0]=(((b<<1)+j|0)>>>0)/3|0;a[c+13>>0]=(((e<<1)+g|0)>>>0)/3|0;a[c+12>>0]=(((f<<1)+h|0)>>>0)/3|0;i=k;return}else{a[c+10>>0]=(b+j|0)>>>1;a[c+9>>0]=(e+g|0)>>>1;a[c+8>>0]=(f+h|0)>>>1;m=c+12|0;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;i=k;return}}function E2(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+64|0;r=s;N2(r,e);if((h|0)<=0){i=s;return}k=0-f|0;l=r+16|0;m=r+20|0;n=r+56|0;o=r+60|0;p=(g|0)>0;q=0;do{e=c[l>>2]|0;f=d[e+q+12>>0]|0;c[m>>2]=f;j=((q|0)/2|0)*3|0;c[n>>2]=(d[e+(j+1)+2>>0]|0)<<8|(d[e+j+2>>0]|0)|(d[e+(j+2)+2>>0]|0)<<16;c[o>>2]=0-(q&1)&12;a:do if(p){j=b+(ea(q,k)|0)|0;e=0;while(1){f=c[r+((f>>>(e<<1)&3)<<2)>>2]|0;a[j>>0]=f;a[j+1>>0]=f>>8;a[j+2>>0]=f>>16;a[j+3>>0]=f>>24;a[j+3>>0]=c[r+(((c[n>>2]|0)>>>((c[o>>2]|0)+(e*3|0)|0)&7)<<2)+24>>2];e=e+1|0;if((e|0)==(g|0))break a;f=c[m>>2]|0;j=j+4|0}}while(0);q=q+1|0}while((q|0)!=(h|0));i=s;return}function F2(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+16|0;l=m;if((g|0)==4){if((f|0)>0){j=f<<1;g=h;k=0;while(1){n=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[l>>0]=0;ce[n&255](l,1,1,e)|0;n=a[l>>0]|0;a[g>>0]=(n&255)>>>4;a[g+1>>0]=n&15;k=k+1|0;if((k|0)==(f|0))break;else g=g+2|0}h=h+j|0}if(!(f&1)){i=m;return}n=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[l>>0]=0;ce[n&255](l,1,1,e)|0;a[h>>0]=(d[l>>0]|0)>>>4;i=m;return}else if((g|0)==1){if((f|0)>0){j=f<<3;g=h;k=0;while(1){o=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[l>>0]=0;ce[o&255](l,1,1,e)|0;o=a[l>>0]|0;n=o&255;a[g>>0]=(o&255)>>>7;a[g+1>>0]=n>>>6&1;a[g+2>>0]=n>>>5&1;a[g+3>>0]=n>>>4&1;a[g+4>>0]=n>>>3&1;a[g+5>>0]=n>>>2&1;a[g+6>>0]=n>>>1&1;a[g+7>>0]=n&1;k=k+1|0;if((k|0)==(f|0))break;else g=g+8|0}h=h+j|0}if(!(f&7)){i=m;return}j=0-f&7;if((j|0)==7){i=m;return}g=7;while(1){o=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[l>>0]=0;ce[o&255](l,1,1,e)|0;a[h>>0]=(d[l>>0]|0)>>>g&1;g=g+-1|0;if((g|0)<=(j|0))break;else h=h+1|0}i=m;return}else if((g|0)==2){if((f|0)>0){j=f<<2;g=h;k=0;while(1){n=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[l>>0]=0;ce[n&255](l,1,1,e)|0;n=a[l>>0]|0;o=n&255;a[g>>0]=(n&255)>>>6;a[g+1>>0]=o>>>4&3;a[g+2>>0]=o>>>2&3;a[g+3>>0]=o&3;k=k+1|0;if((k|0)==(f|0))break;else g=g+4|0}h=h+j|0}g=f&3;if(!g){i=m;return}j=8-(g<<1)|0;if(j>>>0>=6){i=m;return}g=6;while(1){o=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;a[l>>0]=0;ce[o&255](l,1,1,e)|0;a[h>>0]=(d[l>>0]|0)>>>g&3;g=g+-2|0;if((g|0)<=(j|0))break;else h=h+1|0}i=m;return}else if((g|0)==8){ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](h,f,1,e)|0;i=m;return}else{o=kc(4)|0;c[o>>2]=318976;xd(o|0,378680,0)}}function G2(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;f=c[b+4>>2]|0;if(!f){o=b+4|0;c[d>>2]=o;i=p;return o|0}h=a[e>>0]|0;k=(h&255)>>>1;l=e+1|0;n=e+8|0;m=e+4|0;a:do if(!(h&1))while(1){j=f+16|0;g=a[j>>0]|0;e=(g&1)==0;if(e){h=(g&255)>>>1;b=j+1|0}else{h=c[f+20>>2]|0;b=c[f+24>>2]|0}b=pga(l,b,h>>>0>>0?h:k)|0;if(!b){if(k>>>0>>0)o=16}else if((b|0)<0)o=16;if((o|0)==16){o=0;b=c[f>>2]|0;if(!b){b=f;o=24;break}else{f=b;continue}}if(e){e=(g&255)>>>1;b=j+1|0}else{e=c[f+20>>2]|0;b=c[f+24>>2]|0}b=pga(b,l,k>>>0>>0?k:e)|0;if(!b){if(e>>>0>=k>>>0){o=33;break a}}else if((b|0)>=0){o=33;break a}b=f+4|0;e=c[b>>2]|0;if(!e){o=32;break}else f=e}else while(1){k=f+16|0;b=c[m>>2]|0;e=a[k>>0]|0;j=(e&1)==0;if(j){h=(e&255)>>>1;g=k+1|0}else{h=c[f+20>>2]|0;g=c[f+24>>2]|0}g=pga(c[n>>2]|0,g,h>>>0>>0?h:b)|0;if(!g){if(b>>>0>>0)o=23}else if((g|0)<0)o=23;if((o|0)==23){o=0;b=c[f>>2]|0;if(!b){b=f;o=24;break}else{f=b;continue}}if(j){g=(e&255)>>>1;b=k+1|0}else{g=c[f+20>>2]|0;b=c[f+24>>2]|0}e=c[m>>2]|0;b=pga(b,c[n>>2]|0,e>>>0>>0?e:g)|0;if(!b){if(g>>>0>=e>>>0){o=33;break a}}else if((b|0)>=0){o=33;break a}b=f+4|0;e=c[b>>2]|0;if(!e){o=32;break}else f=e}while(0);if((o|0)==24){c[d>>2]=f;o=b;i=p;return o|0}else if((o|0)==32){c[d>>2]=f;o=b;i=p;return o|0}else if((o|0)==33){c[d>>2]=f;o=d;i=p;return o|0}return 0}function H2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;m=a+4|0;d=c[m>>2]|0;do if((d|0)==(c[a>>2]|0)){k=a+8|0;e=c[k>>2]|0;l=a+12|0;h=c[l>>2]|0;f=h;if(e>>>0>>0){a=e;j=((f-a>>2)+1|0)/2|0;a=a-d|0;h=e+(j-(a>>2)<<2)|0;Bga(h|0,d|0,a|0)|0;c[m>>2]=h;c[k>>2]=(c[k>>2]|0)+(j<<2);d=h;break}j=f-d>>1;j=(j|0)==0?1:j;h=tea(j<<2)|0;d=h+((j+3|0)>>>2<<2)|0;j=h+(j<<2)|0;e=c[m>>2]|0;g=c[k>>2]|0;if((e|0)==(g|0))f=d;else{f=d;do{if(!f)f=0;else c[f>>2]=c[e>>2];f=f+4|0;e=e+4|0}while((e|0)!=(g|0))}e=c[a>>2]|0;c[a>>2]=h;c[m>>2]=d;c[k>>2]=f;c[l>>2]=j;if(e){xea(e);d=c[m>>2]|0}}while(0);c[d+-4>>2]=c[b>>2];c[m>>2]=(c[m>>2]|0)+-4;i=n;return}function I2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;m=a+4|0;d=c[m>>2]|0;do if((d|0)==(c[a>>2]|0)){k=a+8|0;e=c[k>>2]|0;l=a+12|0;h=c[l>>2]|0;f=h;if(e>>>0>>0){a=e;j=((f-a>>2)+1|0)/2|0;a=a-d|0;h=e+(j-(a>>2)<<2)|0;Bga(h|0,d|0,a|0)|0;c[m>>2]=h;c[k>>2]=(c[k>>2]|0)+(j<<2);d=h;break}j=f-d>>1;j=(j|0)==0?1:j;h=tea(j<<2)|0;d=h+((j+3|0)>>>2<<2)|0;j=h+(j<<2)|0;e=c[m>>2]|0;g=c[k>>2]|0;if((e|0)==(g|0))f=d;else{f=d;do{if(!f)f=0;else c[f>>2]=c[e>>2];f=f+4|0;e=e+4|0}while((e|0)!=(g|0))}e=c[a>>2]|0;c[a>>2]=h;c[m>>2]=d;c[k>>2]=f;c[l>>2]=j;if(e){xea(e);d=c[m>>2]|0}}while(0);c[d+-4>>2]=c[b>>2];c[m>>2]=(c[m>>2]|0)+-4;i=n;return}function J2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;m=a+4|0;d=c[m>>2]|0;do if((d|0)==(c[a>>2]|0)){k=a+8|0;e=c[k>>2]|0;l=a+12|0;h=c[l>>2]|0;f=h;if(e>>>0>>0){a=e;j=((f-a>>2)+1|0)/2|0;a=a-d|0;h=e+(j-(a>>2)<<2)|0;Bga(h|0,d|0,a|0)|0;c[m>>2]=h;c[k>>2]=(c[k>>2]|0)+(j<<2);d=h;break}j=f-d>>1;j=(j|0)==0?1:j;h=tea(j<<2)|0;d=h+((j+3|0)>>>2<<2)|0;j=h+(j<<2)|0;e=c[m>>2]|0;g=c[k>>2]|0;if((e|0)==(g|0))f=d;else{f=d;do{if(!f)f=0;else c[f>>2]=c[e>>2];f=f+4|0;e=e+4|0}while((e|0)!=(g|0))}e=c[a>>2]|0;c[a>>2]=h;c[m>>2]=d;c[k>>2]=f;c[l>>2]=j;if(e){xea(e);d=c[m>>2]|0}}while(0);c[d+-4>>2]=c[b>>2];c[m>>2]=(c[m>>2]|0)+-4;i=n;return}function K2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;m=a+4|0;d=c[m>>2]|0;do if((d|0)==(c[a>>2]|0)){k=a+8|0;e=c[k>>2]|0;l=a+12|0;h=c[l>>2]|0;f=h;if(e>>>0>>0){a=e;j=((f-a>>2)+1|0)/2|0;a=a-d|0;h=e+(j-(a>>2)<<2)|0;Bga(h|0,d|0,a|0)|0;c[m>>2]=h;c[k>>2]=(c[k>>2]|0)+(j<<2);d=h;break}j=f-d>>1;j=(j|0)==0?1:j;h=tea(j<<2)|0;d=h+((j+3|0)>>>2<<2)|0;j=h+(j<<2)|0;e=c[m>>2]|0;g=c[k>>2]|0;if((e|0)==(g|0))f=d;else{f=d;do{if(!f)f=0;else c[f>>2]=c[e>>2];f=f+4|0;e=e+4|0}while((e|0)!=(g|0))}e=c[a>>2]|0;c[a>>2]=h;c[m>>2]=d;c[k>>2]=f;c[l>>2]=j;if(e){xea(e);d=c[m>>2]|0}}while(0);c[d+-4>>2]=c[b>>2];c[m>>2]=(c[m>>2]|0)+-4;i=n;return}function L2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;m=a+4|0;d=c[m>>2]|0;do if((d|0)==(c[a>>2]|0)){k=a+8|0;e=c[k>>2]|0;l=a+12|0;h=c[l>>2]|0;f=h;if(e>>>0>>0){a=e;j=((f-a>>2)+1|0)/2|0;a=a-d|0;h=e+(j-(a>>2)<<2)|0;Bga(h|0,d|0,a|0)|0;c[m>>2]=h;c[k>>2]=(c[k>>2]|0)+(j<<2);d=h;break}j=f-d>>1;j=(j|0)==0?1:j;h=tea(j<<2)|0;d=h+((j+3|0)>>>2<<2)|0;j=h+(j<<2)|0;e=c[m>>2]|0;g=c[k>>2]|0;if((e|0)==(g|0))f=d;else{f=d;do{if(!f)f=0;else c[f>>2]=c[e>>2];f=f+4|0;e=e+4|0}while((e|0)!=(g|0))}e=c[a>>2]|0;c[a>>2]=h;c[m>>2]=d;c[k>>2]=f;c[l>>2]=j;if(e){xea(e);d=c[m>>2]|0}}while(0);c[d+-4>>2]=c[b>>2];c[m>>2]=(c[m>>2]|0)+-4;i=n;return}function M2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;m=a+4|0;d=c[m>>2]|0;do if((d|0)==(c[a>>2]|0)){k=a+8|0;e=c[k>>2]|0;l=a+12|0;h=c[l>>2]|0;f=h;if(e>>>0>>0){a=e;j=((f-a>>2)+1|0)/2|0;a=a-d|0;h=e+(j-(a>>2)<<2)|0;Bga(h|0,d|0,a|0)|0;c[m>>2]=h;c[k>>2]=(c[k>>2]|0)+(j<<2);d=h;break}j=f-d>>1;j=(j|0)==0?1:j;h=tea(j<<2)|0;d=h+((j+3|0)>>>2<<2)|0;j=h+(j<<2)|0;e=c[m>>2]|0;g=c[k>>2]|0;if((e|0)==(g|0))f=d;else{f=d;do{if(!f)f=0;else c[f>>2]=c[e>>2];f=f+4|0;e=e+4|0}while((e|0)!=(g|0))}e=c[a>>2]|0;c[a>>2]=h;c[m>>2]=d;c[k>>2]=f;c[l>>2]=j;if(e){xea(e);d=c[m>>2]|0}}while(0);c[d+-4>>2]=c[b>>2];c[m>>2]=(c[m>>2]|0)+-4;i=n;return}function N2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=i;g=b+16|0;c[g>>2]=d;D2(d+8|0,b);g=c[g>>2]|0;h=a[g>>0]|0;d=h&255;c[b+24>>2]=d;g=a[g+1>>0]|0;e=g&255;c[b+28>>2]=e;if((h&255)>(g&255)){c[b+32>>2]=(((d*6|0)+3+e|0)>>>0)/7|0;c[b+36>>2]=(((d*5|0)+3+(e<<1)|0)>>>0)/7|0;c[b+40>>2]=(((d<<2|3)+(e*3|0)|0)>>>0)/7|0;c[b+44>>2]=(((d*3|0)+3+(e<<2)|0)>>>0)/7|0;c[b+48>>2]=(((d<<1)+3+(e*5|0)|0)>>>0)/7|0;c[b+52>>2]=((d+3+(e*6|0)|0)>>>0)/7|0;i=f;return}else{c[b+32>>2]=(((d<<2|2)+e|0)>>>0)/5|0;c[b+36>>2]=(((d*3|0)+2+(e<<1)|0)>>>0)/5|0;c[b+40>>2]=(((d<<1)+2+(e*3|0)|0)>>>0)/5|0;c[b+44>>2]=((d+2+(e<<2)|0)>>>0)/5|0;c[b+48>>2]=0;c[b+52>>2]=255;i=f;return}}function O2(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;a=i;d=c[r>>2]|0;Rba(365080,d,365136);c[91092]=366692;c[91094]=366712;c[91093]=0;f=c[91670]|0;Z3(364368+f|0,365080);c[f+364440>>2]=0;c[f+364444>>2]=-1;f=c[s>>2]|0;Sba(365184,f,365144|0);c[91114]=366772;c[91115]=366792;j=c[91690]|0;Z3(364456+j|0,365184);g=j+72|0;c[364456+g>>2]=0;b=j+76|0;c[364456+b>>2]=-1;e=c[q>>2]|0;Sba(365232,e,365152|0);c[91136]=366772;c[91137]=366792;Z3(364544+j|0,365232);c[364544+g>>2]=0;c[364544+b>>2]=-1;h=c[(c[(c[91136]|0)+-12>>2]|0)+364568>>2]|0;c[91158]=366772;c[91159]=366792;Z3(364632+j|0,h);c[364632+g>>2]=0;c[364632+b>>2]=-1;c[(c[(c[91092]|0)+-12>>2]|0)+364440>>2]=364456;b=(c[(c[91136]|0)+-12>>2]|0)+364548|0;c[b>>2]=c[b>>2]|8192;c[(c[(c[91136]|0)+-12>>2]|0)+364616>>2]=364456;Tba(365280,d,365160|0);c[91180]=366732;c[91182]=366752;c[91181]=0;d=c[91680]|0;Z3(364720+d|0,365280);c[d+364792>>2]=0;c[d+364796>>2]=-1;Uba(365336,f,365168|0);c[91202]=366812;c[91203]=366832;f=c[91700]|0;Z3(364808+f|0,365336);d=f+72|0;c[364808+d>>2]=0;b=f+76|0;c[364808+b>>2]=-1;Uba(365384,e,365176|0);c[91224]=366812;c[91225]=366832;Z3(364896+f|0,365384);c[364896+d>>2]=0;c[364896+b>>2]=-1;e=c[(c[(c[91224]|0)+-12>>2]|0)+364920>>2]|0;c[91246]=366812;c[91247]=366832;Z3(364984+f|0,e);c[364984+d>>2]=0;c[364984+b>>2]=-1;c[(c[(c[91180]|0)+-12>>2]|0)+364792>>2]=364808;b=(c[(c[91224]|0)+-12>>2]|0)+364900|0;c[b>>2]=c[b>>2]|8192;c[(c[(c[91224]|0)+-12>>2]|0)+364968>>2]=364808;i=a;return}function P2(a){a=a|0;a=i;L4(364456)|0;L4(364632)|0;R4(364808)|0;R4(364984)|0;i=a;return}function Q2(a){a=a|0;return}function R2(a){a=a|0;a=a+4|0;c[a>>2]=(c[a>>2]|0)+1;return}function S2(a){a=a|0;var b=0,d=0,e=0;b=i;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+-1;if(d){d=0;i=b;return d|0}Id[c[(c[a>>2]|0)+8>>2]&511](a);d=1;i=b;return d|0}function T2(a,b){a=a|0;b=b|0;var d=0;d=i;c[a>>2]=377880;Vba(a+4|0,b);i=d;return}function U2(b,d){b=b|0;d=d|0;var e=0;e=i;c[b>>2]=377904;if(!(a[d>>0]&1))d=d+1|0;else d=c[d+8>>2]|0;Vba(b+4|0,d);i=e;return}function V2(a,b){a=a|0;b=b|0;var d=0;d=i;c[a>>2]=377904;Vba(a+4|0,b);i=d;return}function W2(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=d;c[a+4>>2]=b;return}function X2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;$d[c[(c[a>>2]|0)+12>>2]&255](e,a,b);if((c[e+4>>2]|0)!=(c[d+4>>2]|0)){d=0;i=f;return d|0}d=(c[e>>2]|0)==(c[d>>2]|0);i=f;return d|0}function Y2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((c[b+4>>2]|0)!=(a|0)){a=0;i=e;return a|0}a=(c[b>>2]|0)==(d|0);i=e;return a|0}function Z2(a,b,c){a=a|0;b=b|0;c=c|0;b=i;c=bd(c|0)|0;q3(a,c,Dga(c|0)|0);i=b;return}function _2(a){a=a|0;return 365944}function $2(a,b,c){a=a|0;b=b|0;c=c|0;b=i;if((c|0)>256){q3(a,365952,34);i=b;return}else{Z2(a,0,c);i=b;return}}function a3(){var b=0;b=i;if((a[366e3]|0)==0?(Qa(366e3)|0)!=0:0){c[91498]=366232;Eb(366e3)}i=b;return 365992}function b3(a){a=a|0;return 366008}function c3(a,b,c){a=a|0;b=b|0;c=c|0;b=i;if((c|0)>256){q3(a,366016,33);i=b;return}else{Z2(a,0,c);i=b;return}}function d3(a,b,d){a=a|0;b=b|0;d=d|0;b=i;if((d|0)>256){e3()|0;c[a>>2]=d;c[a+4>>2]=366056;i=b;return}else{a3()|0;c[a>>2]=d;c[a+4>>2]=365992;i=b;return}}function e3(){var b=0;b=i;if((a[366064]|0)==0?(Qa(366064)|0)!=0:0){c[91514]=366328;Eb(366064)}i=b;return 366056}function f3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;f=c[d>>2]|0;if(f){g=a[e>>0]|0;if(!(g&1))g=(g&255)>>>1;else g=c[e+4>>2]|0;if(g){C3(e,366072)|0;f=c[d>>2]|0}d=c[d+4>>2]|0;$d[c[(c[d>>2]|0)+24>>2]&255](h,d,f);f=a[h>>0]|0;if(!(f&1)){g=h+1|0;f=(f&255)>>>1}else{g=c[h+8>>2]|0;f=c[h+4>>2]|0}E3(e,g,f)|0;v3(h)};c[b+0>>2]=c[e+0>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;i=j;return}function g3(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+32|0;g=e+12|0;f=e;q3(f,d,Dga(d|0)|0);f3(g,b,f);U2(a,g);v3(g);v3(f);c[a>>2]=366088;f=b;b=c[f+4>>2]|0;d=a+8|0;c[d>>2]=c[f>>2];c[d+4>>2]=b;i=e;return}function h3(a){a=a|0;var b=0;b=i;Mea(a);xea(a);i=b;return}function i3(a){a=a|0;var b=0;b=i;Mea(a);i=b;return}function j3(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f+8|0;d=kc(16)|0;e3()|0;c[f>>2]=a;c[f+4>>2]=366056;c[e+0>>2]=c[f+0>>2];c[e+4>>2]=c[f+4>>2];g3(d,e,b);xd(d|0,366128,115)}function k3(a){a=a|0;return}function l3(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;bc(366416)|0;if((c[a>>2]|0)==1)do Sc(366440,366416)|0;while((c[a>>2]|0)==1);if(!(c[a>>2]|0)){c[a>>2]=1;Rb(366416)|0;Id[d&511](b);bc(366416)|0;c[a>>2]=-1;Rb(366416)|0;Ec(366440)|0;i=e;return}else{Rb(366416)|0;i=e;return}}function m3(a){a=a|0;a=kc(8)|0;T2(a,366488);c[a>>2]=377960;xd(a|0,378e3,198)}function n3(a){a=a|0;a=kc(8)|0;T2(a,366488);c[a>>2]=378024;xd(a|0,378064,198)}function o3(b,d){b=b|0;d=d|0;var e=0;e=i;if(!(a[d>>0]&1)){c[b+0>>2]=c[d+0>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];i=e;return}else{q3(b,c[d+8>>2]|0,c[d+4>>2]|0);i=e;return}}function p3(a,b){a=a|0;b=b|0;var c=0;c=i;o3(a,b);i=c;return}function q3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if(e>>>0>4294967279)m3(b);if(e>>>0<11){a[b>>0]=e<<1;b=b+1|0}else{h=e+16&-16;g=tea(h)|0;c[b+8>>2]=g;c[b>>2]=h|1;c[b+4>>2]=e;b=g}Aga(b|0,d|0,e|0)|0;a[b+e>>0]=0;i=f;return}function r3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if(d>>>0>4294967279)m3(b);if(d>>>0<11){a[b>>0]=d<<1;b=b+1|0}else{h=d+16&-16;g=tea(h)|0;c[b+8>>2]=g;c[b>>2]=h|1;c[b+4>>2]=d;b=g}Cga(b|0,e|0,d|0)|0;a[b+d>>0]=0;i=f;return}function s3(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;k=i;g=a[d>>0]|0;h=(g&1)==0;if(h)j=(g&255)>>>1;else j=c[d+4>>2]|0;if(j>>>0>>0)n3(b);if(h)g=d+1|0;else g=c[d+8>>2]|0;j=j-e|0;q3(b,g+e|0,j>>>0>>0?j:f);i=k;return}function t3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=i;s3(a,b,c,d,e);i=f;return}function u3(b){b=b|0;var d=0;d=i;if(!(a[b>>0]&1)){i=d;return}xea(c[b+8>>2]|0);i=d;return}function v3(a){a=a|0;var b=0;b=i;u3(a);i=b;return}function w3(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;if((b|0)==(d|0)){i=g;return b|0}e=a[d>>0]|0;if(!(e&1)){f=d+1|0;e=(e&255)>>>1}else{f=c[d+8>>2]|0;e=c[d+4>>2]|0}y3(b,f,e)|0;i=g;return b|0}function x3(a,b){a=a|0;b=b|0;var c=0;c=i;a=y3(a,b,Dga(b|0)|0)|0;i=c;return a|0}function y3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;f=a[b>>0]|0;if(!(f&1))h=10;else{f=c[b>>2]|0;h=(f&-2)+-1|0;f=f&255}g=(f&1)==0;if(h>>>0>>0){if(g)f=(f&255)>>>1;else f=c[b+4>>2]|0;F3(b,h,e-h|0,f,0,f,e,d);i=j;return b|0}if(g)f=b+1|0;else f=c[b+8>>2]|0;Bga(f|0,d|0,e|0)|0;a[f+e>>0]=0;if(!(a[b>>0]&1)){a[b>>0]=e<<1;i=j;return b|0}else{c[b+4>>2]=e;i=j;return b|0}return 0}function z3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;f=a[b>>0]|0;g=(f&1)==0;if(g)f=(f&255)>>>1;else f=c[b+4>>2]|0;if(f>>>0>>0){A3(b,d-f|0,e)|0;i=h;return}if(g){a[b+d+1>>0]=0;a[b>>0]=d<<1;i=h;return}else{a[(c[b+8>>2]|0)+d>>0]=0;c[b+4>>2]=d;i=h;return}}function A3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;if(!d){i=j;return b|0}f=a[b>>0]|0;if(!(f&1))g=10;else{f=c[b>>2]|0;g=(f&-2)+-1|0;f=f&255}if(!(f&1))h=(f&255)>>>1;else h=c[b+4>>2]|0;if((g-h|0)>>>0>>0){G3(b,g,d-g+h|0,h,h,0,0);f=a[b>>0]|0}if(!(f&1))g=b+1|0;else g=c[b+8>>2]|0;Cga(g+h|0,e|0,d|0)|0;f=h+d|0;if(!(a[b>>0]&1))a[b>>0]=f<<1;else c[b+4>>2]=f;a[g+f>>0]=0;i=j;return b|0}function B3(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;if(d>>>0>4294967279)m3(b);e=a[b>>0]|0;if(!(e&1))f=10;else{e=c[b>>2]|0;f=(e&-2)+-1|0;e=e&255}if(!(e&1))k=(e&255)>>>1;else k=c[b+4>>2]|0;d=k>>>0>d>>>0?k:d;if(d>>>0<11)j=10;else j=(d+16&-16)+-1|0;if((j|0)==(f|0)){i=l;return}do if((j|0)!=10){e=j+1|0;if(j>>>0>f>>>0)d=tea(e)|0;else d=tea(e)|0;e=a[b>>0]|0;if(!(e&1)){f=1;g=b+1|0;h=0;break}else{f=1;g=c[b+8>>2]|0;h=1;break}}else{d=b+1|0;f=0;g=c[b+8>>2]|0;h=1}while(0);if(!(e&1))e=(e&255)>>>1;else e=c[b+4>>2]|0;Aga(d|0,g|0,e+1|0)|0;if(h)xea(g);if(f){c[b>>2]=j+1|1;c[b+4>>2]=k;c[b+8>>2]=d;i=l;return}else{a[b>>0]=k<<1;i=l;return}}function C3(a,b){a=a|0;b=b|0;var c=0;c=i;a=E3(a,b,Dga(b|0)|0)|0;i=c;return a|0}function D3(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;e=a[b>>0]|0;f=(e&1)!=0;if(f){g=(c[b>>2]&-2)+-1|0;h=c[b+4>>2]|0}else{g=10;h=(e&255)>>>1}if((h|0)==(g|0)){G3(b,g,1,g,g,0,0);if(!(a[b>>0]&1))e=7;else e=8}else if(f)e=8;else e=7;if((e|0)==7){a[b>>0]=(h<<1)+2;g=b+1|0;b=h+1|0;h=g+h|0;a[h>>0]=d;b=g+b|0;a[b>>0]=0;i=j;return}else if((e|0)==8){g=c[b+8>>2]|0;f=h+1|0;c[b+4>>2]=f;b=f;h=g+h|0;a[h>>0]=d;b=g+b|0;a[b>>0]=0;i=j;return}}function E3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;f=a[b>>0]|0;if(!(f&1))g=10;else{f=c[b>>2]|0;g=(f&-2)+-1|0;f=f&255}if(!(f&1))h=(f&255)>>>1;else h=c[b+4>>2]|0;if((g-h|0)>>>0>>0){F3(b,g,e-g+h|0,h,h,0,e,d);i=j;return b|0}if(!e){i=j;return b|0}if(!(f&1))g=b+1|0;else g=c[b+8>>2]|0;Aga(g+h|0,d|0,e|0)|0;f=h+e|0;if(!(a[b>>0]&1))a[b>>0]=f<<1;else c[b+4>>2]=f;a[g+f>>0]=0;i=j;return b|0}function F3(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0;o=i;if((-18-d|0)>>>0>>0)m3(b);if(!(a[b>>0]&1))n=b+1|0;else n=c[b+8>>2]|0;if(d>>>0<2147483623){e=e+d|0;m=d<<1;e=e>>>0>>0?m:e;if(e>>>0<11)l=11;else l=e+16&-16}else l=-17;m=tea(l)|0;if(g)Aga(m|0,n|0,g|0)|0;if(j)Aga(m+g|0,k|0,j|0)|0;e=f-h|0;if((e|0)!=(g|0))Aga(m+(j+g)|0,n+(h+g)|0,e-g|0)|0;if((d|0)==10){d=b+8|0;c[d>>2]=m;d=l|1;c[b>>2]=d;d=e+j|0;b=b+4|0;c[b>>2]=d;b=m+d|0;a[b>>0]=0;i=o;return}xea(n);d=b+8|0;c[d>>2]=m;d=l|1;c[b>>2]=d;d=e+j|0;b=b+4|0;c[b>>2]=d;b=m+d|0;a[b>>0]=0;i=o;return}function G3(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0;n=i;if((-17-d|0)>>>0>>0)m3(b);if(!(a[b>>0]&1))m=b+1|0;else m=c[b+8>>2]|0;if(d>>>0<2147483623){e=e+d|0;l=d<<1;e=e>>>0>>0?l:e;if(e>>>0<11)k=11;else k=e+16&-16}else k=-17;l=tea(k)|0;if(g)Aga(l|0,m|0,g|0)|0;e=f-h|0;if((e|0)!=(g|0))Aga(l+(j+g)|0,m+(h+g)|0,e-g|0)|0;if((d|0)==10){g=b+8|0;c[g>>2]=l;g=k|1;c[b>>2]=g;i=n;return}xea(m);g=b+8|0;c[g>>2]=l;g=k|1;c[b>>2]=g;i=n;return}function H3(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;if(f>>>0>4294967279)m3(b);if(f>>>0<11){a[b>>0]=e<<1;f=b+1|0}else{h=f+16&-16;f=tea(h)|0;c[b+8>>2]=f;c[b>>2]=h|1;c[b+4>>2]=e}Aga(f|0,d|0,e|0)|0;a[f+e>>0]=0;i=g;return}function I3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if(e>>>0>1073741807)m3(b);if(e>>>0<2){a[b>>0]=e<<1;b=b+4|0}else{h=e+4&-4;g=tea(h<<2)|0;c[b+8>>2]=g;c[b>>2]=h|1;c[b+4>>2]=e;b=g}mea(b,d,e)|0;c[b+(e<<2)>>2]=0;i=f;return}function J3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if(d>>>0>1073741807)m3(b);if(d>>>0<2){a[b>>0]=d<<1;b=b+4|0}else{h=d+4&-4;g=tea(h<<2)|0;c[b+8>>2]=g;c[b>>2]=h|1;c[b+4>>2]=d;b=g}oea(b,e,d)|0;c[b+(d<<2)>>2]=0;i=f;return}function K3(b){b=b|0;var d=0;d=i;if(!(a[b>>0]&1)){i=d;return}xea(c[b+8>>2]|0);i=d;return}function L3(a){a=a|0;var b=0;b=i;K3(a);i=b;return}function M3(a,b){a=a|0;b=b|0;var c=0;c=i;a=N3(a,b,lea(b)|0)|0;i=c;return a|0}function N3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;f=a[b>>0]|0;if(!(f&1))h=1;else{f=c[b>>2]|0;h=(f&-2)+-1|0;f=f&255}g=(f&1)==0;if(h>>>0>>0){if(g)f=(f&255)>>>1;else f=c[b+4>>2]|0;Q3(b,h,e-h|0,f,0,f,e,d);i=j;return b|0}if(g)f=b+4|0;else f=c[b+8>>2]|0;nea(f,d,e)|0;c[f+(e<<2)>>2]=0;if(!(a[b>>0]&1)){a[b>>0]=e<<1;i=j;return b|0}else{c[b+4>>2]=e;i=j;return b|0}return 0}function O3(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;if(d>>>0>1073741807)m3(b);e=a[b>>0]|0;if(!(e&1))f=1;else{e=c[b>>2]|0;f=(e&-2)+-1|0;e=e&255}if(!(e&1))k=(e&255)>>>1;else k=c[b+4>>2]|0;d=k>>>0>d>>>0?k:d;if(d>>>0<2)j=1;else j=(d+4&-4)+-1|0;if((j|0)==(f|0)){i=l;return}do if((j|0)!=1){e=(j<<2)+4|0;if(j>>>0>f>>>0)d=tea(e)|0;else d=tea(e)|0;e=a[b>>0]|0;if(!(e&1)){f=1;g=b+4|0;h=0;break}else{f=1;g=c[b+8>>2]|0;h=1;break}}else{d=b+4|0;f=0;g=c[b+8>>2]|0;h=1}while(0);if(!(e&1))e=(e&255)>>>1;else e=c[b+4>>2]|0;mea(d,g,e+1|0)|0;if(h)xea(g);if(f){c[b>>2]=j+1|1;c[b+4>>2]=k;c[b+8>>2]=d;i=l;return}else{a[b>>0]=k<<1;i=l;return}}function P3(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;e=a[b>>0]|0;f=(e&1)!=0;if(f){g=(c[b>>2]&-2)+-1|0;h=c[b+4>>2]|0}else{g=1;h=(e&255)>>>1}if((h|0)==(g|0)){R3(b,g,1,g,g,0,0);if(!(a[b>>0]&1))e=7;else e=8}else if(f)e=8;else e=7;if((e|0)==7){a[b>>0]=(h<<1)+2;g=b+4|0;b=h+1|0;h=g+(h<<2)|0;c[h>>2]=d;b=g+(b<<2)|0;c[b>>2]=0;i=j;return}else if((e|0)==8){g=c[b+8>>2]|0;f=h+1|0;c[b+4>>2]=f;b=f;h=g+(h<<2)|0;c[h>>2]=d;b=g+(b<<2)|0;c[b>>2]=0;i=j;return}}function Q3(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0;o=i;if((1073741806-d|0)>>>0>>0)m3(b);if(!(a[b>>0]&1))n=b+4|0;else n=c[b+8>>2]|0;if(d>>>0<536870887){e=e+d|0;m=d<<1;e=e>>>0>>0?m:e;if(e>>>0<2)l=2;else l=e+4&-4}else l=1073741807;m=tea(l<<2)|0;if(g)mea(m,n,g)|0;if(j)mea(m+(g<<2)|0,k,j)|0;e=f-h|0;if((e|0)!=(g|0))mea(m+(j+g<<2)|0,n+(h+g<<2)|0,e-g|0)|0;if((d|0)==1){d=b+8|0;c[d>>2]=m;d=l|1;c[b>>2]=d;d=e+j|0;b=b+4|0;c[b>>2]=d;b=m+(d<<2)|0;c[b>>2]=0;i=o;return}xea(n);d=b+8|0;c[d>>2]=m;d=l|1;c[b>>2]=d;d=e+j|0;b=b+4|0;c[b>>2]=d;b=m+(d<<2)|0;c[b>>2]=0;i=o;return}function R3(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0;n=i;if((1073741807-d|0)>>>0>>0)m3(b);if(!(a[b>>0]&1))m=b+4|0;else m=c[b+8>>2]|0;if(d>>>0<536870887){e=e+d|0;l=d<<1;e=e>>>0>>0?l:e;if(e>>>0<2)k=2;else k=e+4&-4}else k=1073741807;l=tea(k<<2)|0;if(g)mea(l,m,g)|0;e=f-h|0;if((e|0)!=(g|0))mea(l+(j+g<<2)|0,m+(h+g<<2)|0,e-g|0)|0;if((d|0)==1){g=b+8|0;c[g>>2]=l;g=k|1;c[b>>2]=g;i=n;return}xea(m);g=b+8|0;c[g>>2]=l;g=k|1;c[b>>2]=g;i=n;return}function S3(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;g=l+4|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;z3(g,10,0);e=a[g>>0]|0;if(!(e&1))f=(e&255)>>>1;else f=c[g+4>>2]|0;h=g+1|0;j=g+8|0;while(1){e=(e&1)==0?h:c[j>>2]|0;c[k>>2]=d;e=ega(e,f+1|0,366504,k)|0;if((e|0)>-1)if(e>>>0>f>>>0)f=e;else break;else f=f<<1|1;z3(g,f,0);e=a[g>>0]|0}z3(g,e,0);c[b+0>>2]=c[g+0>>2];c[b+4>>2]=c[g+4>>2];c[b+8>>2]=c[g+8>>2];c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;u3(g);i=l;return}function T3(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;b=d;if(!(_b(1,b|0)|0)){f=c[b>>2]|0;e=c[b+4>>2]|0;b=Tga(f|0,((f|0)<0)<<31>>31|0,1e9,0)|0;e=Iga(b|0,I|0,e|0,((e|0)<0)<<31>>31|0)|0;b=a;c[b>>2]=e;c[b+4>>2]=I;i=d;return}else j3(c[(td()|0)>>2]|0,366512)}function U3(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f;e=(c[a+24>>2]|0)==0;if(e)c[a+16>>2]=b|1;else c[a+16>>2]=b;if(!((e&1|b)&c[a+20>>2])){i=f;return}else{f=kc(16)|0;p5()|0;b=d;c[b>>2]=1;c[b+4>>2]=366896;q5(f,366952,d);xd(f|0,367e3,132)}}function V3(a){a=a|0;var b=0;b=i;c[a>>2]=366944;X3(a,0);D9(a+28|0);Bfa(c[a+32>>2]|0);Bfa(c[a+36>>2]|0);Bfa(c[a+48>>2]|0);Bfa(c[a+60>>2]|0);i=b;return}function W3(a){a=a|0;var b=0;b=i;V3(a);i=b;return}function X3(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;d=c[a+40>>2]|0;if(!d){i=g;return}e=a+32|0;f=a+36|0;do{d=d+-1|0;$d[c[(c[e>>2]|0)+(d<<2)>>2]&255](b,a,c[(c[f>>2]|0)+(d<<2)>>2]|0)}while((d|0)!=0);i=g;return}function Y3(a,b){a=a|0;b=b|0;var c=0;c=i;C9(a,b+28|0);i=c;return}function Z3(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;c[a+24>>2]=b;c[a+16>>2]=(b|0)==0&1;c[a+20>>2]=0;c[a+4>>2]=4098;c[a+12>>2]=0;c[a+8>>2]=6;d=a+28|0;b=a+32|0;a=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(a|0));B9(d);i=e;return}function _3(a){a=a|0;var b=0;b=i;V3(a);i=b;return}function $3(a){a=a|0;var b=0;b=i;c[a>>2]=366560;D9(a+4|0);xea(a);i=b;return}function a4(a){a=a|0;var b=0;b=i;c[a>>2]=366560;D9(a+4|0);i=b;return}function b4(a){a=a|0;var b=0;b=i;c[a>>2]=366560;D9(a+4|0);i=b;return}function c4(a){a=a|0;var b=0;b=i;c[a>>2]=366560;B9(a+4|0);a=a+8|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;i=b;return}function d4(a,b){a=a|0;b=b|0;return}function e4(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function f4(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;b=a;c[b>>2]=0;c[b+4>>2]=0;b=a+8|0;c[b>>2]=-1;c[b+4>>2]=-1;return}function g4(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=a;c[b>>2]=0;c[b+4>>2]=0;a=a+8|0;c[a>>2]=-1;c[a+4>>2]=-1;return}function h4(a){a=a|0;return 0}function i4(a){a=a|0;return 0}function j4(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;if((e|0)<=0){b=0;i=k;return b|0}h=b+12|0;j=b+16|0;g=d;d=0;while(1){f=c[h>>2]|0;if(f>>>0<(c[j>>2]|0)>>>0){c[h>>2]=f+1;f=a[f>>0]|0}else{f=Ld[c[(c[b>>2]|0)+40>>2]&511](b)|0;if((f|0)==-1){f=8;break}f=f&255}a[g>>0]=f;d=d+1|0;if((d|0)<(e|0))g=g+1|0;else{f=8;break}}if((f|0)==8){i=k;return d|0}return 0}function k4(a){a=a|0;return -1}function l4(a){a=a|0;var b=0,e=0;b=i;if((Ld[c[(c[a>>2]|0)+36>>2]&511](a)|0)==-1){a=-1;i=b;return a|0}e=a+12|0;a=c[e>>2]|0;c[e>>2]=a+1;a=d[a>>0]|0;i=b;return a|0}function m4(a,b){a=a|0;b=b|0;return -1}function n4(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;l=i;if((f|0)<=0){b=0;i=l;return b|0}j=b+24|0;k=b+28|0;h=e;e=0;while(1){g=c[j>>2]|0;if(g>>>0>=(c[k>>2]|0)>>>0){if((Wd[c[(c[b>>2]|0)+52>>2]&511](b,d[h>>0]|0)|0)==-1){g=7;break}}else{m=a[h>>0]|0;c[j>>2]=g+1;a[g>>0]=m}e=e+1|0;if((e|0)<(f|0))h=h+1|0;else{g=7;break}}if((g|0)==7){i=l;return e|0}return 0}function o4(a,b){a=a|0;b=b|0;return -1}function p4(a){a=a|0;var b=0;b=i;c[a>>2]=366624;D9(a+4|0);xea(a);i=b;return}function q4(a){a=a|0;var b=0;b=i;c[a>>2]=366624;D9(a+4|0);i=b;return}function r4(a){a=a|0;var b=0;b=i;c[a>>2]=366624;D9(a+4|0);i=b;return}function s4(a){a=a|0;var b=0;b=i;c[a>>2]=366624;B9(a+4|0);a=a+8|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;i=b;return}function t4(a,b){a=a|0;b=b|0;return}function u4(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function v4(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;b=a;c[b>>2]=0;c[b+4>>2]=0;b=a+8|0;c[b>>2]=-1;c[b+4>>2]=-1;return}function w4(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=a;c[b>>2]=0;c[b+4>>2]=0;a=a+8|0;c[a>>2]=-1;c[a+4>>2]=-1;return}function x4(a){a=a|0;return 0}function y4(a){a=a|0;return 0} +function b$(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;g=c[b+576>>2]|0;if(f<<16>>16)Sa(229240,228624,510,229472);if(!g)Sa(229264,228624,511,229472);h=(e|0)/(c[g+8>>2]|0)|0;do if((c[g>>2]|0)!=2)if((c[g+16>>2]|0)<(h|0))Sa(229280,228624,518,229472);else{k=c[g+12>>2]|0;$d[c[g+20>>2]&255](g,d,h);break}else k=d;while(0);l=b+604|0;e=c[l>>2]|0;j=b+592|0;f=c[j>>2]|0;m=b+608|0;d=f-(c[m>>2]|0)|0;do if(h){g=k;while(1){h=h+-1|0;if((d|0)<3){c[l>>2]=e;c[m>>2]=(c[j>>2]|0)-d;if(!(cy(b)|0)){e=-1;g=17;break}d=(c[j>>2]|0)-(c[m>>2]|0)|0;f=c[l>>2]|0}else f=e;a[f>>0]=(c[g>>2]|0)>>>16;a[f+1>>0]=(c[g>>2]|0)>>>8;e=f+3|0;a[f+2>>0]=c[g>>2];d=d+-3|0;if(!h){g=15;break}else g=g+4|0}if((g|0)==15){f=c[j>>2]|0;break}else if((g|0)==17){i=n;return e|0}}while(0);c[l>>2]=e;c[m>>2]=f-d;b=1;i=n;return b|0}function c$(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;if((d|0)<=0){i=f;return}e=a+4|0;a=c[a+12>>2]|0;while(1){d=d+-1|0;c[a>>2]=Ww(b,c[e>>2]|0)|0;if((d|0)<=0)break;else{a=a+4|0;b=b+12|0}}i=f;return}function d$(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;if((e|0)<=0){i=j;return}h=a+4|0;g=c[a+12>>2]|0;f=d;while(1){e=e+-1|0;a=b[f>>1]|0;d=a<<16>>16;do if(a<<16>>16>=1)if(a<<16>>16<=7409)if(!(c[h>>2]|0)){a=d+-3314>>2;break}else{a=~~((+(a<<16>>16)+-3314.0)*.25+ +($fa()|0)*4.656612875245797e-010+-.5);break}else a=1023;else a=0;while(0);d=Uw((+(b[f+2>>1]|0)+.5)*.000030517578125,(+(b[f+4>>1]|0)+.5)*.000030517578125,c[h>>2]|0)|0;c[g>>2]=((d|0)<0?12266:d)|a<<14;if((e|0)<=0)break;else{g=g+4|0;f=f+6|0}}i=j;return}function e$(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;g=c[b+576>>2]|0;if(f<<16>>16)Sa(229240,228624,562,229456);if(!g)Sa(229264,228624,563,229456);u=(e|0)/(c[g+8>>2]|0)|0;do if((c[g>>2]|0)!=2)if((c[g+16>>2]|0)<(u|0))Sa(229280,228624,571,229456);else{v=c[g+12>>2]|0;$d[c[g+20>>2]&255](g,d,u);break}else v=d;while(0);r=b+604|0;s=b+592|0;t=b+608|0;p=(u|0)>0;q=24;d=(c[s>>2]|0)-(c[t>>2]|0)|0;f=c[r>>2]|0;e=0;a:while(1){if(p){o=255<>2]=f;c[t>>2]=(c[s>>2]|0)-d;if(!(cy(b)|0)){e=-1;d=41;break a}d=(c[s>>2]|0)-(c[t>>2]|0)|0;f=c[r>>2]|0}b:do if((m|0)<(u|0)){l=m;while(1){g=c[v+(l<<2)>>2]|0;e=1;while(1){h=e+l|0;k=(h|0)<(u|0);if(!k)break;j=e+1|0;if((c[v+(h<<2)>>2]^g)&o)break;if((j|0)<129)e=j;else{e=j;break b}}g=(e|0)>3;if(g|k^1){l=g?l:h;break}else l=h}}else l=m;while(0);c:do if((l-m&-2|0)==2){g=c[v+(m<<2)>>2]&o;j=m+1|0;while(1){h=j+1|0;if((c[v+(j<<2)>>2]&o|0)!=(g|0)){g=m;break c}if((h|0)==(l|0))break;else j=h}a[f>>0]=127-m+j;a[f+1>>0]=g>>>q;g=l;d=d+-2|0;f=f+2|0}else g=m;while(0);if((l|0)>(g|0)){n=~l;h=g;while(1){k=l-h|0;k=(k|0)>127?127:k;if((d|0)<(k+3|0)){c[r>>2]=f;c[t>>2]=(c[s>>2]|0)-d;if(!(cy(b)|0)){e=-1;d=41;break a}d=(c[s>>2]|0)-(c[t>>2]|0)|0;f=c[r>>2]|0}a[f>>0]=k;j=f+1|0;if(!k){f=j;g=-1}else{g=h+n|0;g=(g|0)>-128?g:-128;f=f+(0-g)|0;m=h+-1|0;while(1){k=k+-1|0;a[j>>0]=(c[v+(h<<2)>>2]|0)>>>q;if(!k)break;else{h=h+1|0;j=j+1|0}}h=m-g|0}d=d+g|0;if((l|0)<=(h|0)){g=h;break}}}if((e|0)>3){a[f>>0]=e+126;a[f+1>>0]=(c[v+(l<<2)>>2]|0)>>>q;d=d+-2|0;f=f+2|0}else e=0;m=e+g|0;if((m|0)>=(u|0)){g=d;break}}}else g=d;q=q+-8|0;if((q|0)<=-1){d=40;break}else d=g}if((d|0)==40){c[r>>2]=f;c[t>>2]=(c[s>>2]|0)-g;v=1;i=w;return v|0}else if((d|0)==41){i=w;return e|0}return 0}function f$(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;if((d|0)<=0){i=f;return}e=a+4|0;a=c[a+12>>2]|0;while(1){d=d+-1|0;c[a>>2]=Yw(b,c[e>>2]|0)|0;if((d|0)<=0)break;else{a=a+4|0;b=b+12|0}}i=f;return}function g$(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0.0,j=0,k=0.0,l=0,m=0,n=0;n=i;g=c[a+12>>2]|0;m=a+4|0;j=c[m>>2]|0;a=(f|0)>0;if(!j){if(a)a=f;else{i=n;return}while(1){a=a+-1|0;c[g>>2]=((b[d+2>>1]|0)*410|0)>>>7&65280|e[d>>1]<<16|((b[d+4>>1]|0)*410|0)>>>15&255;if((a|0)<=0)break;else{g=g+4|0;d=d+6|0}}i=n;return}if(!a){i=n;return}while(1){f=f+-1|0;l=e[d>>1]<<16;h=+(b[d+2>>1]|0)*.01251220703125;if(!j){k=h;a=1}else{k=h+ +($fa()|0)*4.656612875245797e-010+-.5;a=(c[m>>2]|0)==0}h=+(b[d+4>>1]|0)*.01251220703125;if(!a)h=h+ +($fa()|0)*4.656612875245797e-010+-.5;c[g>>2]=~~k<<8&65280|l|~~h&255;if((f|0)<=0)break;j=c[m>>2]|0;g=g+4|0;d=d+6|0}i=n;return}function h$(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;j=c[d+576>>2]|0;if(h<<16>>16)Sa(229240,228624,422,229248);if(!j)Sa(229264,228624,423,229248);w=(g|0)/(c[j+8>>2]|0)|0;do if((c[j>>2]|0)!=1)if((c[j+16>>2]|0)<(w|0))Sa(229280,228624,430,229248);else{x=c[j+12>>2]|0;$d[c[j+20>>2]&255](j,f,w);break}else x=f;while(0);t=d+604|0;u=d+592|0;v=d+608|0;r=(w|0)>0;s=8;f=(c[u>>2]|0)-(c[v>>2]|0)|0;h=c[t>>2]|0;g=0;a:while(1){if(r){q=255<>2]=h;c[v>>2]=(c[u>>2]|0)-f;if(!(cy(d)|0)){g=-1;f=41;break a}f=(c[u>>2]|0)-(c[v>>2]|0)|0;h=c[t>>2]|0}b:do if((o|0)<(w|0)){n=o;while(1){j=(e[x+(n<<1)>>1]&q)<<16>>16;g=1;while(1){k=g+n|0;m=(k|0)<(w|0);if(!m)break;l=g+1|0;if((b[x+(k<<1)>>1]&q|0)!=(j|0))break;if((l|0)<129)g=l;else{g=l;break b}}j=(g|0)>3;if(j|m^1){n=j?n:k;break}else n=k}}else n=o;while(0);c:do if((n-o&-2|0)==2){j=(e[x+(o<<1)>>1]&q)<<16>>16;l=o+1|0;while(1){k=l+1|0;if((b[x+(l<<1)>>1]&q|0)!=(j|0)){j=o;break c}if((k|0)==(n|0))break;else l=k}a[h>>0]=127-o+l;a[h+1>>0]=j>>s;j=n;f=f+-2|0;h=h+2|0}else j=o;while(0);if((n|0)>(j|0)){p=~n;k=j;while(1){m=n-k|0;m=(m|0)>127?127:m;if((f|0)<(m+3|0)){c[t>>2]=h;c[v>>2]=(c[u>>2]|0)-f;if(!(cy(d)|0)){g=-1;f=41;break a}f=(c[u>>2]|0)-(c[v>>2]|0)|0;h=c[t>>2]|0}a[h>>0]=m;l=h+1|0;if(!m){h=l;j=-1}else{j=k+p|0;j=(j|0)>-128?j:-128;h=h+(0-j)|0;o=k+-1|0;while(1){m=m+-1|0;a[l>>0]=b[x+(k<<1)>>1]>>s;if(!m)break;else{k=k+1|0;l=l+1|0}}k=o-j|0}f=f+j|0;if((n|0)<=(k|0)){j=k;break}}}if((g|0)>3){a[h>>0]=g+126;a[h+1>>0]=b[x+(n<<1)>>1]>>s;f=f+-2|0;h=h+2|0}else g=0;o=g+j|0;if((o|0)>=(w|0)){j=f;break}}}else j=f;s=s+-8|0;if((s|0)<=-1){f=40;break}else f=j}if((f|0)==40){c[t>>2]=h;c[v>>2]=(c[u>>2]|0)-j;x=1;i=y;return x|0}else if((f|0)==41){i=y;return g|0}return 0}function i$(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,h=0;h=i;if((e|0)<=0){i=h;return}f=a+4|0;a=c[a+12>>2]|0;while(1){e=e+-1|0;b[a>>1]=Tw(+g[d>>2],c[f>>2]|0)|0;if((e|0)<=0)break;else{a=a+2|0;d=d+4|0}}i=h;return}function j$(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0;N=i;i=i+16|0;M=N;B=c[f+576>>2]|0;if(!B)Sa(230488,230304,598,230992);C=B+88|0;l=c[C>>2]|0;do if(l){k=c[B+108>>2]|0;j=(e[k+4>>1]|0)-l|0;if((j|0)<=(h|0)){g=g+j|0;l=j;m=g;while(1){m=m+-1|0;a[m>>0]=a[k+6>>0]|0;l=l+-1|0;if(!l)break;else k=c[k>>2]|0}c[C>>2]=0;h=h-j|0;break}c[C>>2]=l+h;do{k=c[k>>2]|0;j=j+-1|0}while((j|0)>(h|0));l=h;j=g+h|0;while(1){j=j+-1|0;a[j>>0]=a[k+6>>0]|0;l=l+-1|0;if(!l){j=1;break}else k=c[k>>2]|0}i=N;return j|0}while(0);D=f+604|0;m=c[D>>2]|0;E=B+64|0;o=e[E>>1]|0;F=B+72|0;l=c[F>>2]|0;G=B+76|0;p=c[G>>2]|0;H=B+84|0;q=c[H>>2]|0;J=B+112|0;j=c[J>>2]|0;K=B+116|0;k=c[K>>2]|0;L=B+120|0;n=c[L>>2]|0;a:do if((h|0)>0){z=B+96|0;A=B+124|0;y=j;u=p;b:while(1){s=z;r=c[s>>2]|0;s=c[s+4>>2]|0;t=((o|0)<0)<<31>>31;if(s>>>0>>0|(s|0)==(t|0)&r>>>0>>0){r=16;break}p=m+1|0;j=(d[m>>0]|0)<>0]|0)<>o;p=m-o|0;s=Hga(r|0,s|0,o|0,t|0)|0;t=z;c[t>>2]=s;c[t+4>>2]=I;if((v|0)==257){m=w;l=x;j=y;break a}l=c[A>>2]|0;do if((v|0)==256){k=l+2064|0;MK(k,0,38888);t=(c[A>>2]|0)+4088|0;r=z;q=c[r>>2]|0;r=c[r+4>>2]|0;if(r>>>0<0|(r|0)==0&q>>>0<9){r=22;break b}n=w+1|0;j=(d[w>>0]|0)<>0]|0)<>9;p=o+-9|0;w=Iga(q|0,r|0,-9,-1)|0;x=z;c[x>>2]=w;c[x+4>>2]=I;if((s|0)==257){n=t;o=9;q=511;j=y;break a}if(s>>>0>255){r=27;break b}a[g>>0]=j;n=t;o=9;q=511;h=h+-1|0;j=(c[A>>2]|0)+(s<<3)|0;g=g+1|0}else{j=l+(v<<3)|0;m=l+40952|0;if(!(k>>>0>=l>>>0&k>>>0>>0)){r=31;break b}c[k>>2]=y;if(!(y>>>0>=l>>>0&y>>>0>>0)){r=33;break b}m=a[y+7>>0]|0;a[k+7>>0]=m;b[k+4>>1]=(e[y+4>>1]|0)+1;if(j>>>0>>0)m=a[l+(v<<3)+7>>0]|0;a[k+6>>0]=m;s=k+8|0;if(s>>>0>n>>>0){o=o+1|0;o=(o|0)>12?12:o;q=(1<>>0<=255){a[g>>0]=u;m=w;k=s;l=x;h=h+-1|0;g=g+1|0;break}y=b[l+(v<<3)+4>>1]|0;r=y&65535;if(!(y<<16>>16)){r=40;break b}if((h|0)<(r|0)){r=42;break b}g=g+r|0;m=j;k=g;do{k=k+-1|0;a[k>>0]=a[m+6>>0]|0;m=c[m>>2]|0}while((m|0)!=0);m=w;k=s;l=x;h=h-r|0}while(0);if((h|0)>0){y=j;u=p}else break a}if((r|0)==16){p=c[f+628>>2]|0;c[M>>2]=c[f+452>>2];Zx(p,230992,230608,M);p=u;j=y;break}else if((r|0)==22){m=c[f+628>>2]|0;c[M>>2]=c[f+452>>2];Zx(m,230992,230608,M);m=w;n=t;o=9;q=511;l=x;j=y;break}else if((r|0)==27){K=c[f+628>>2]|0;L=c[f>>2]|0;c[M>>2]=c[f+444>>2];Dw(K,L,230664,M);f=0;i=N;return f|0}else if((r|0)==31){L=c[f+628>>2]|0;c[M>>2]=c[f+444>>2];Dw(L,230992,230712,M);f=0;i=N;return f|0}else if((r|0)==33){L=c[f+628>>2]|0;c[M>>2]=c[f+444>>2];Dw(L,230992,230712,M);f=0;i=N;return f|0}else if((r|0)==40){L=c[f+628>>2]|0;c[M>>2]=c[f+444>>2];Dw(L,230992,230752,M);f=0;i=N;return f|0}else if((r|0)==42){c[B+108>>2]=j;m=j;do m=c[m>>2]|0;while((e[m+4>>1]|0|0)>(h|0));c[C>>2]=h;k=m;l=h;m=g+h|0;while(1){m=m+-1|0;a[m>>0]=a[k+6>>0]|0;l=l+-1|0;if(!l){m=w;k=s;l=x;h=0;break}else k=c[k>>2]|0}}}while(0);c[D>>2]=m;b[E>>1]=o;c[F>>2]=l;c[G>>2]=p;c[H>>2]=q;c[J>>2]=j;c[K>>2]=k;c[L>>2]=n;if((h|0)<=0){f=1;i=N;return f|0}L=c[f+628>>2]|0;c[M>>2]=c[f+444>>2];f=M+4|0;c[f>>2]=h;c[f+4>>2]=((h|0)<0)<<31>>31;Dw(L,230992,230824,M);f=0;i=N;return f|0}function k$(e){e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;r=s;l=c[e+576>>2]|0;ww(e)|0;q=l+226|0;if(a[q>>0]|0)Sa(233952,231232,989,233984);if((b[e+98>>1]|0)==3?(p=b[e+90>>1]|0,p<<16>>16==10|p<<16>>16==6):0){a[q>>0]=1;m=l+228|0;g=a[m>>0]|0;p=l+229|0;n=a[p>>0]|0;f=l+225|0;a[f>>0]=1;l$(e)|0;o=l+230|0;h=(a[o>>0]|0)==0;if(h)j=a[m>>0]|0;else{a[m>>0]=1;a[p>>0]=1;j=1}a[f>>0]=0;k=g&255;if(j<<24>>24==g<<24>>24?(a[p>>0]|0)==n<<24>>24:0)f=17;else f=13;do if((f|0)==13)if(h){h=c[e+628>>2]|0;f=j&255;g=d[p>>0]|0;if(!(a[l+227>>0]|0)){c[r>>2]=f;c[r+4>>2]=g;Zx(h,233984,234088,r);f=17;break}else{c[r>>2]=f;c[r+4>>2]=g;c[r+8>>2]=k;c[r+12>>2]=n&255;Zx(h,233984,234248,r);f=17;break}}else f=18;while(0);if((f|0)==17?(a[o>>0]|0)!=0:0)f=18;if((f|0)==18){f=c[e+628>>2]|0;if(!(a[l+227>>0]|0))Zx(f,233984,234384,r);else{c[r>>2]=k;c[r+4>>2]=n&255;Zx(f,233984,234616,r)}if(a[o>>0]|0){a[q>>0]=1;i=s;return}}g=a[m>>0]|0;f=a[p>>0]|0;if((g&255)>=(f&255)){a[q>>0]=1;i=s;return}e=c[e+628>>2]|0;c[r>>2]=g&255;c[r+4>>2]=f&255;Zx(e,233984,234824,r);a[q>>0]=1;i=s;return}if(a[l+227>>0]|0)Zx(c[e+628>>2]|0,233984,234008,r);a[l+228>>0]=1;a[l+229>>0]=1;a[l+230>>0]=0;a[q>>0]=1;i=s;return}function l$(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;T=i;i=i+32|0;R=T;Q=T+8|0;N=f+576|0;S=c[N>>2]|0;g=S+176|0;h=g;j=c[h>>2]|0;h=c[h+4>>2]|0;if((j|0)==0&(h|0)==0){j=Ld[c[f+648>>2]&511](c[f+628>>2]|0)|0;h=I;M=g;c[M>>2]=j;c[M+4>>2]=h}g=S+208|0;l=g;k=c[l>>2]|0;l=c[l+4>>2]|0;do if(!((k|0)==0&(l|0)==0)){if(!(h>>>0>l>>>0|(h|0)==(l|0)&j>>>0>k>>>0)){c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;break}g=S+216|0;z=g;y=c[z>>2]|0;z=c[z+4>>2]|0;M=Iga(y|0,z|0,k|0,l|0)|0;L=I;if((y|0)==0&(z|0)==0|(L>>>0>h>>>0|(L|0)==(h|0)&M>>>0>j>>>0)){L=Hga(j|0,h|0,k|0,l|0)|0;M=g;c[M>>2]=L;c[M+4>>2]=I}}while(0);c[S+1188>>2]=0;c[S+1192>>2]=0;c[S+1196>>2]=c[f+168>>2];t=S+1216|0;u=t;c[u>>2]=0;c[u+4>>2]=0;u=S+1224|0;b[u>>1]=0;v=S+1228|0;w=S+1200|0;x=S+1208|0;z=S+225|0;y=S+205|0;g=0;a:while(1){if(!(g<<16>>16)){if(!(m$(S)|0)){O=0;M=314;break}g=b[u>>1]|0;if(!(g<<16>>16)){M=12;break}}k=c[v>>2]|0;if((a[k>>0]|0)!=-1){M=251;break}if(!(g<<16>>16)){M=15;break}k=k+1|0;c[v>>2]=k;g=g+-1<<16>>16;b[u>>1]=g;do{if(!(g<<16>>16)){if(!(m$(S)|0)){O=0;M=314;break a}g=b[u>>1]|0;if(!(g<<16>>16)){M=21;break a}k=c[v>>2]|0}s=a[k>>0]|0;k=k+1|0;c[v>>2]=k;g=g+-1<<16>>16;b[u>>1]=g;A=s&255}while(s<<24>>24==-1);b:do switch(A|0){case 239:case 238:case 237:case 236:case 235:case 234:case 233:case 232:case 231:case 230:case 229:case 228:case 227:case 226:case 225:case 224:case 254:{if(!(g<<16>>16)){if(!(m$(S)|0)){O=0;M=314;break a}g=b[u>>1]|0;if(!(g<<16>>16)){M=28;break a}k=c[v>>2]|0}M=a[k>>0]|0;o=k+1|0;c[v>>2]=o;g=g+-1<<16>>16;b[u>>1]=g;k=(M&255)<<8;if(!(g<<16>>16)){if(!(m$(S)|0)){O=0;M=314;break a}g=b[u>>1]|0;if(!(g<<16>>16)){M=33;break a}o=c[v>>2]|0}M=a[o>>0]|0;c[v>>2]=o+1;h=g+-1<<16>>16;b[u>>1]=h;g=M&255|k;k=g&65535;if((k&65535)<2){M=35;break a}if((k&65535)>2?(D=g+65534|0,E=D&65535,E=((h&65535)<(E&65535)?h:E)&65535,c[v>>2]=o+(E+1),C=(h&65535)-E|0,b[u>>1]=C,E=D-E|0,D=E&65535,E=E&65535,(E|0)!=0):0){if(C&65535){M=40;break a}M=t;r=c[M>>2]|0;M=c[M+4>>2]|0;L=(0>M>>>0|0==(M|0)&E>>>0>r>>>0?r&65535:D)&65535;n=w;n=Iga(L|0,0,c[n>>2]|0,c[n+4>>2]|0)|0;q=w;c[q>>2]=n;c[q+4>>2]=I;L=Hga(r|0,M|0,L|0,0)|0;M=t;c[M>>2]=L;c[M+4>>2]=I;a[x>>0]=0}break}case 221:{h=c[N>>2]|0;j=h+1224|0;g=b[j>>1]|0;if(!(g<<16>>16)){if(!(m$(h)|0)){O=0;M=314;break a}g=b[j>>1]|0;if(!(g<<16>>16)){M=45;break a}}J=h+1228|0;o=c[J>>2]|0;k=a[o>>0]|0;o=o+1|0;c[J>>2]=o;g=g+-1<<16>>16;b[j>>1]=g;k=(k&255)<<8;if(!(g<<16>>16)){if(!(m$(h)|0)){O=0;M=314;break a}g=b[j>>1]|0;if(!(g<<16>>16)){M=50;break a}o=c[J>>2]|0}M=a[o>>0]|0;o=o+1|0;c[J>>2]=o;g=g+-1<<16>>16;b[j>>1]=g;if((M&255|k|0)!=4){M=52;break a}if(!(g<<16>>16)){if(!(m$(h)|0)){O=0;M=314;break a}g=b[j>>1]|0;if(!(g<<16>>16)){M=57;break a}o=c[J>>2]|0}k=a[o>>0]|0;o=o+1|0;c[J>>2]=o;g=g+-1<<16>>16;b[j>>1]=g;k=(k&255)<<8;if(!(g<<16>>16)){if(!(m$(h)|0)){O=0;M=314;break a}g=b[j>>1]|0;if(!(g<<16>>16)){M=62;break a}o=c[J>>2]|0}M=a[o>>0]|0;c[J>>2]=o+1;b[j>>1]=g+-1<<16>>16;b[h+360>>1]=M&255|k;break}case 219:{n=c[N>>2]|0;l=n+1224|0;g=b[l>>1]|0;if(!(g<<16>>16)){if(!(m$(n)|0)){O=0;M=314;break a}g=b[l>>1]|0;if(!(g<<16>>16)){M=67;break a}}m=n+1228|0;o=c[m>>2]|0;k=a[o>>0]|0;o=o+1|0;c[m>>2]=o;g=g+-1<<16>>16;b[l>>1]=g;k=(k&255)<<8;if(!(g<<16>>16)){if(!(m$(n)|0)){O=0;M=314;break a}g=b[l>>1]|0;if(!(g<<16>>16)){M=72;break a}o=c[m>>2]|0}F=a[o>>0]|0;c[m>>2]=o+1;h=g+-1<<16>>16;b[l>>1]=h;g=F&255|k;F=(a[n+225>>0]|0)==0;if((g&65535)<3){M=74;break a}g=g+65534|0;k=g&65535;if(!F){M=((h&65535)<(k&65535)?h:k)&65535;c[m>>2]=o+(M+1);k=(h&65535)-M|0;b[l>>1]=k;g=g-M|0;o=g&65535;if(!o)break b;if(k&65535){M=80;break a}M=n+1216|0;r=M;q=c[r>>2]|0;r=c[r+4>>2]|0;L=(0>r>>>0|0==(r|0)&o>>>0>q>>>0?q&65535:g&65535)&65535;l=n+1200|0;m=l;m=Iga(L|0,0,c[m>>2]|0,c[m+4>>2]|0)|0;c[l>>2]=m;c[l+4>>2]=I;L=Hga(q|0,r|0,L|0,0)|0;c[M>>2]=L;c[M+4>>2]=I;a[n+1208>>0]=0;break b}J=n+312|0;while(1){if((k&65535)<65){M=83;break a}H=JK(73)|0;if(!H){M=85;break a}c[H>>2]=73;a[H+4>>0]=-1;a[H+5>>0]=-37;a[H+6>>0]=0;a[H+7>>0]=67;j=H+8|0;g=b[l>>1]|0;o=65;p=j;while(1){if(!(g<<16>>16)){if(!(m$(n)|0)){M=92;break a}g=b[l>>1]|0;if(!(g<<16>>16)){M=90;break a}}h=((o&65535)>(g&65535)?g:o)&65535;NK(p,c[m>>2]|0,h);c[m>>2]=(c[m>>2]|0)+h;g=(e[l>>1]|0)-h&65535;b[l>>1]=g;o=(o&65535)-h|0;if(!(o&65535))break;else{o=o&65535;p=p+h|0}}g=d[j>>0]&15;if(g>>>0>3){M=94;break a}g=J+(g<<2)|0;o=c[g>>2]|0;if(o)KK(o);c[g>>2]=H;g=(k&65535)+65471|0;if(!(g&65535))break;else k=g&65535}break}case 196:{l=c[N>>2]|0;m=l+1224|0;g=b[m>>1]|0;if(!(g<<16>>16)){if(!(m$(l)|0)){O=0;M=314;break a}g=b[m>>1]|0;if(!(g<<16>>16)){M=101;break a}}J=l+1228|0;o=c[J>>2]|0;k=a[o>>0]|0;o=o+1|0;c[J>>2]=o;g=g+-1<<16>>16;b[m>>1]=g;k=(k&255)<<8;if(!(g<<16>>16)){if(!(m$(l)|0)){O=0;M=314;break a}g=b[m>>1]|0;if(!(g<<16>>16)){M=106;break a}o=c[J>>2]|0}j=a[o>>0]|0;c[J>>2]=o+1;g=g+-1<<16>>16;b[m>>1]=g;k=j&255|k;h=k&65535;G=(a[l+225>>0]|0)==0;if((h&65535)<3){M=108;break a}if(!G){L=k+65534|0;M=L&65535;M=((g&65535)<(M&65535)?g:M)&65535;c[J>>2]=o+(M+1);k=(g&65535)-M|0;b[m>>1]=k;g=L-M|0;o=g&65535;if(!o)break b;if(k&65535){M=113;break a}M=l+1216|0;r=M;q=c[r>>2]|0;r=c[r+4>>2]|0;L=(0>r>>>0|0==(r|0)&o>>>0>q>>>0?q&65535:g&65535)&65535;n=l+1200|0;m=n;m=Iga(L|0,0,c[m>>2]|0,c[m+4>>2]|0)|0;c[n>>2]=m;c[n+4>>2]=I;L=Hga(q|0,r|0,L|0,0)|0;c[M>>2]=L;c[M+4>>2]=I;a[l+1208>>0]=0;break b}g=k+6|0;p=JK(g)|0;if(!p){M=116;break a}c[p>>2]=g;a[p+4>>0]=-1;a[p+5>>0]=-60;a[p+6>>0]=(h&65535)>>>8;a[p+7>>0]=j;g=k+65534&65535;j=p+8|0;if(!(g<<16>>16)){M=119;break a}o=b[m>>1]|0;h=j;while(1){if(!(o<<16>>16)){if(!(m$(l)|0)){O=0;M=314;break a}o=b[m>>1]|0;if(!(o<<16>>16)){M=123;break a}}k=((g&65535)>(o&65535)?o:g)&65535;NK(h,c[J>>2]|0,k);c[J>>2]=(c[J>>2]|0)+k;o=(e[m>>1]|0)-k&65535;b[m>>1]=o;g=(g&65535)-k|0;if(!(g&65535))break;else{g=g&65535;h=h+k|0}}g=a[j>>0]|0;o=g&255;k=o&240;if(!k){if((g&255)>3){M=127;break a}g=l+328+(o<<2)|0;o=c[g>>2]|0;if(o)KK(o);c[g>>2]=p;break b}else if((k|0)==16){g=o&15;if(g>>>0>3){M=133;break a}g=l+344+(g<<2)|0;o=c[g>>2]|0;if(o)KK(o);c[g>>2]=p;break b}else{M=131;break a}}case 195:case 193:case 192:{n=c[N>>2]|0;q=n+363|0;if(a[q>>0]|0){M=138;break a}K=n+225|0;if(!(a[K>>0]|0))a[n+364>>0]=s;r=n+1224|0;g=b[r>>1]|0;if(!(g<<16>>16)){if(!(m$(n)|0)){O=0;M=314;break a}g=b[r>>1]|0;if(!(g<<16>>16)){M=144;break a}}l=n+1228|0;o=c[l>>2]|0;k=a[o>>0]|0;o=o+1|0;c[l>>2]=o;g=g+-1<<16>>16;b[r>>1]=g;k=(k&255)<<8;if(!(g<<16>>16)){if(!(m$(n)|0)){O=0;M=314;break a}g=b[r>>1]|0;if(!(g<<16>>16)){M=149;break a}o=c[l>>2]|0}M=a[o>>0]|0;h=o+1|0;c[l>>2]=h;j=g+-1<<16>>16;b[r>>1]=j;g=M&255|k;if((g&65535)<11){M=151;break a}J=g+65528&65535;if((J>>>0)%3|0){M=154;break a}m=(J>>>0)/3|0;o=a[K>>0]|0;if(o<<24>>24==0?(m|0)!=(d[n+204>>0]|0):0){M=158;break a}if(!(j<<16>>16)){if(!(m$(n)|0)){O=0;M=314;break a}g=b[r>>1]|0;if(!(g<<16>>16)){M=163;break a}h=c[l>>2]|0;o=a[K>>0]|0}else g=j;M=a[h>>0]|0;k=h+1|0;c[l>>2]=k;g=g+-1<<16>>16;b[r>>1]=g;B=o<<24>>24==0;if(M<<24>>24!=8){M=165;break a}if(!B){k=g&65535;j=(g&65535)<4?k:4;o=h+(j+1)|0;c[l>>2]=o;k=k-j|0;g=k&65535;b[r>>1]=g;j=4-j|0;h=j&65535;j=j&65535;if(j){if(k&65535){M=170;break a}M=n+1216|0;p=M;k=c[p>>2]|0;p=c[p+4>>2]|0;L=(0>p>>>0|0==(p|0)&j>>>0>k>>>0?k&65535:h)&65535;j=n+1200|0;h=j;h=Iga(L|0,0,c[h>>2]|0,c[h+4>>2]|0)|0;c[j>>2]=h;c[j+4>>2]=I;L=Hga(k|0,p|0,L|0,0)|0;c[M>>2]=L;c[M+4>>2]=I;a[n+1208>>0]=0}}else{if(!(g<<16>>16)){if(!(m$(n)|0)){O=0;M=314;break a}g=b[r>>1]|0;if(!(g<<16>>16)){M=176;break a}o=c[l>>2]|0}else o=k;h=a[o>>0]|0;o=o+1|0;c[l>>2]=o;g=g+-1<<16>>16;b[r>>1]=g;h=(h&255)<<8;if(!(g<<16>>16)){if(!(m$(n)|0)){O=0;M=314;break a}g=b[r>>1]|0;if(!(g<<16>>16)){M=181;break a}o=c[l>>2]|0}M=a[o>>0]|0;k=o+1|0;c[l>>2]=k;g=g+-1<<16>>16;b[r>>1]=g;o=M&255|h;if(o>>>0<(c[n+188>>2]|0)>>>0?o>>>0<(c[n+200>>2]|0)>>>0:0){M=184;break a}c[n+372>>2]=o;if(!(g<<16>>16)){if(!(m$(n)|0)){O=0;M=314;break a}g=b[r>>1]|0;if(!(g<<16>>16)){M=189;break a}o=c[l>>2]|0}else o=k;k=a[o>>0]|0;o=o+1|0;c[l>>2]=o;g=g+-1<<16>>16;b[r>>1]=g;k=(k&255)<<8;if(!(g<<16>>16)){if(!(m$(n)|0)){O=0;M=314;break a}g=b[r>>1]|0;if(!(g<<16>>16)){M=194;break a}o=c[l>>2]|0}h=a[o>>0]|0;o=o+1|0;c[l>>2]=o;g=g+-1<<16>>16;b[r>>1]=g;k=h&255|k;h=c[n+192>>2]|0;if(k>>>0>>0?k>>>0<(c[n+184>>2]|0)>>>0:0){M=196;break a}if(k>>>0>h>>>0){M=198;break a}c[n+368>>2]=k}if(!(g<<16>>16)){if(!(m$(n)|0)){O=0;M=314;break a}g=b[r>>1]|0;if(!(g<<16>>16)){M=204;break a}o=c[l>>2]|0}M=a[o>>0]|0;c[l>>2]=o+1;g=g+-1<<16>>16;b[r>>1]=g;if((M&255|0)!=(m|0)){M=208;break a}c:do if(J>>>0>2){h=n+230|0;j=n+228|0;p=n+229|0;o=0;J=0;while(1){if(!(g<<16>>16)){if(!(m$(n)|0)){O=0;M=314;break a}g=b[r>>1]|0;if(!(g<<16>>16)){M=213;break a}}M=c[l>>2]|0;k=a[M>>0]|0;c[l>>2]=M+1;g=g+-1<<16>>16;b[r>>1]=g;if(!(a[K>>0]|0)){a[n+(o+376)>>0]=k;g=b[r>>1]|0}if(!(g<<16>>16)){if(!(m$(n)|0)){O=0;M=314;break a}g=b[r>>1]|0;if(!(g<<16>>16)){M=219;break a}}M=c[l>>2]|0;k=a[M>>0]|0;c[l>>2]=M+1;b[r>>1]=g+-1<<16>>16;do if(!(a[K>>0]|0)){a[n+(o+379)>>0]=k;if(a[h>>0]|0)break;if(!(J<<16>>16))if((k&255|0)==(d[j>>0]<<4|d[p>>0]|0))break;else{M=230;break a}else if(k<<24>>24==17)break;else{M=232;break a}}else{if(J<<16>>16){if(k<<24>>24==17)break;a[h>>0]=1;break}L=(k&255)>>>4;a[j>>0]=L;M=k&15;a[p>>0]=M;if(L<<24>>24==4|L<<24>>24==2|L<<24>>24==1?M<<24>>24==4|M<<24>>24==2|M<<24>>24==1:0)break;a[h>>0]=1}while(0);g=b[r>>1]|0;if(!(g<<16>>16)){if(!(m$(n)|0)){O=0;M=314;break a}g=b[r>>1]|0;if(!(g<<16>>16)){M=236;break a}}M=c[l>>2]|0;k=a[M>>0]|0;c[l>>2]=M+1;b[r>>1]=g+-1<<16>>16;if(!(a[K>>0]|0))a[n+(o+382)>>0]=k;k=J+1<<16>>16;o=k&65535;if(o>>>0>=m>>>0)break c;g=b[r>>1]|0;J=k}}while(0);if(!(a[K>>0]|0))a[q>>0]=1;if(a[z>>0]|0){O=1;M=314;break a}break}case 218:{if(a[z>>0]|0){O=1;M=314;break a}if(a[y>>0]|0){M=246;break a}if(!(n$(f)|0)){O=0;M=314;break a}break}case 216:break;default:{M=248;break a}}while(0);if(s<<24>>24==-38){M=251;break}g=b[u>>1]|0}switch(M|0){case 12:{Sa(232184,231232,2025,233928);break}case 15:{Sa(232184,231232,2034,233904);break}case 21:{Sa(232184,231232,2010,232704);break}case 28:{Sa(232184,231232,2010,232704);break}case 33:{Sa(232184,231232,2010,232704);break}case 35:{if(a[z>>0]|0){R=0;i=T;return R|0}Dw(c[f+628>>2]|0,232952,232896,R);R=0;i=T;return R|0}case 40:{Sa(232664,231232,2095,232688);break}case 45:{Sa(232184,231232,2010,232704);break}case 50:{Sa(232184,231232,2010,232704);break}case 52:{Dw(c[f+628>>2]|0,233840,233872,R);R=0;i=T;return R|0}case 57:{Sa(232184,231232,2010,232704);break}case 62:{Sa(232184,231232,2010,232704);break}case 67:{Sa(232184,231232,2010,232704);break}case 72:{Sa(232184,231232,2010,232704);break}case 74:{if(!F){R=0;i=T;return R|0}Dw(c[f+628>>2]|0,233776,233808,R);R=0;i=T;return R|0}case 80:{Sa(232664,231232,2095,232688);break}case 83:{Dw(c[f+628>>2]|0,233776,233808,R);R=0;i=T;return R|0}case 85:{Dw(c[f+628>>2]|0,233776,231952,R);R=0;i=T;return R|0}case 90:{Sa(232184,231232,2067,233760);break}case 92:{KK(H);R=0;i=T;return R|0}case 94:{Dw(c[f+628>>2]|0,233776,233808,R);KK(H);R=0;i=T;return R|0}case 101:{Sa(232184,231232,2010,232704);break}case 106:{Sa(232184,231232,2010,232704);break}case 108:{if(!G){R=0;i=T;return R|0}Dw(c[f+628>>2]|0,233688,233720,R);R=0;i=T;return R|0}case 113:{Sa(232664,231232,2095,232688);break}case 116:{Dw(c[f+628>>2]|0,233688,231952,R);R=0;i=T;return R|0}case 119:{Sa(233752,231232,2058,233760);break}case 123:{Sa(232184,231232,2067,233760);break}case 127:{Dw(c[f+628>>2]|0,233688,233720,R);R=0;i=T;return R|0}case 131:{Dw(c[f+628>>2]|0,233688,233720,R);R=0;i=T;return R|0}case 133:{Dw(c[f+628>>2]|0,233688,233720,R);R=0;i=T;return R|0}case 138:{Dw(c[f+628>>2]|0,233256,232896,R);R=0;i=T;return R|0}case 144:{Sa(232184,231232,2010,232704);break}case 149:{Sa(232184,231232,2010,232704);break}case 151:{if(a[K>>0]|0){R=0;i=T;return R|0}Dw(c[f+628>>2]|0,233256,233288,R);R=0;i=T;return R|0}case 154:{if(a[K>>0]|0){R=0;i=T;return R|0}Dw(c[f+628>>2]|0,233256,233288,R);R=0;i=T;return R|0}case 158:{Dw(c[f+628>>2]|0,233256,233320,R);R=0;i=T;return R|0}case 163:{Sa(232184,231232,2010,232704);break}case 165:{if(!B){R=0;i=T;return R|0}Dw(c[f+628>>2]|0,233256,233384,R);R=0;i=T;return R|0}case 170:{Sa(232664,231232,2095,232688);break}case 176:{Sa(232184,231232,2010,232704);break}case 181:{Sa(232184,231232,2010,232704);break}case 184:{Dw(c[f+628>>2]|0,233256,233456,R);R=0;i=T;return R|0}case 189:{Sa(232184,231232,2010,232704);break}case 194:{Sa(232184,231232,2010,232704);break}case 196:{Dw(c[f+628>>2]|0,233256,233512,R);R=0;i=T;return R|0}case 198:{Dw(c[f+628>>2]|0,233256,233560,R);R=0;i=T;return R|0}case 204:{Sa(232184,231232,2010,232704);break}case 208:{if(a[K>>0]|0){R=0;i=T;return R|0}Dw(c[f+628>>2]|0,233256,233288,R);R=0;i=T;return R|0}case 213:{Sa(232184,231232,2010,232704);break}case 219:{Sa(232184,231232,2010,232704);break}case 230:{Dw(c[f+628>>2]|0,233256,233624,R);R=0;i=T;return R|0}case 232:{Dw(c[f+628>>2]|0,233256,233624,R);R=0;i=T;return R|0}case 236:{Sa(232184,231232,2010,232704);break}case 246:{Sa(232920,231232,1347,232952);break}case 248:{Q=c[f+628>>2]|0;c[R>>2]=A;Dw(Q,232952,232976,R);R=0;i=T;return R|0}case 251:{if(a[z>>0]|0){R=1;i=T;return R|0}w=S+363|0;if(a[w>>0]|0){R=1;i=T;return R|0}o=c[N>>2]|0;p=o+240|0;L=p;if((c[L>>2]|0)==0&(c[L+4>>2]|0)==0){Dw(c[f+628>>2]|0,233184,233056,R);R=0;i=T;return R|0}a[o+1208>>0]=0;q=o+204|0;d:do if(a[q>>0]|0){r=f+640|0;s=f+628|0;t=f+632|0;u=o+312|0;v=0;g=0;e:while(1){n=p+(v<<3)|0;j=n;h=c[j>>2]|0;j=c[j+4>>2]|0;do if((h|0)==0&(j|0)==0)M=268;else{k=v+-1|0;if(g<<24>>24!=0?(L=p+(k<<3)|0,(h|0)==(c[L>>2]|0)?(j|0)==(c[L+4>>2]|0):0):0){M=268;break}if((k|0)>0){l=0;m=0;do{L=p+(l<<3)|0;m=m+1<<24>>24;if((h|0)==(c[L>>2]|0)?(j|0)==(c[L+4>>2]|0):0){M=263;break e}l=m&255}while((l|0)<(k|0))}h=JK(73)|0;if(!h){M=265;break e}c[h>>2]=73;a[h+4>>0]=-1;a[h+5>>0]=-37;a[h+6>>0]=0;a[h+7>>0]=67;a[h+8>>0]=g;L=n;ce[c[r>>2]&255](c[s>>2]|0,c[L>>2]|0,c[L+4>>2]|0,0)|0;if((Od[c[t>>2]&255](c[s>>2]|0,h+9|0,64)|0)!=64){O=0;M=314;break e}c[u+(v<<2)>>2]=h;a[o+(v+382)>>0]=g}while(0);if((M|0)==268){M=0;a[o+(v+382)>>0]=a[o+(v+381)>>0]|0}g=g+1<<24>>24;if((g&255)<(d[q>>0]|0))v=g&255;else break d}if((M|0)==263){Dw(c[s>>2]|0,233184,233224,R);R=0;i=T;return R|0}else if((M|0)==265){Dw(c[s>>2]|0,233184,231952,R);R=0;i=T;return R|0}else if((M|0)==314){i=T;return O|0}}while(0);a[S+364>>0]=-64;L=S+204|0;if(!(a[L>>0]|0))g=0;else{h=0;do{a[S+((h&255)+376)>>0]=h;h=h+1<<24>>24;g=a[L>>0]|0}while((h&255)<(g&255));g=(g&255)>1}a[S+379>>0]=d[S+228>>0]<<4|d[S+229>>0];if(g){g=1;do{a[S+((g&255)+379)>>0]=17;g=g+1<<24>>24}while((g&255)<(d[L>>0]|0))}c[S+368>>2]=c[S+192>>2];c[S+372>>2]=c[S+200>>2];a[w>>0]=1;J=c[N>>2]|0;m=J+264|0;K=m;if((c[K>>2]|0)==0&(c[K+4>>2]|0)==0){Dw(c[f+628>>2]|0,233112,233056,R);R=0;i=T;return R|0}a[J+1208>>0]=0;l=J+204|0;do if(a[l>>0]|0){n=f+640|0;q=f+628|0;r=f+632|0;s=J+328|0;t=Q+1|0;u=Q+2|0;v=Q+3|0;w=Q+4|0;x=Q+5|0;y=Q+6|0;z=Q+7|0;A=Q+8|0;B=Q+9|0;C=Q+10|0;D=Q+11|0;E=Q+12|0;F=Q+13|0;G=Q+14|0;H=Q+15|0;K=0;g=0;f:while(1){h=m+(K<<3)|0;k=c[h>>2]|0;h=c[h+4>>2]|0;do if((k|0)==0&(h|0)==0)M=291;else{o=K+-1|0;if(g<<24>>24!=0?(p=m+(o<<3)|0,(k|0)==(c[p>>2]|0)?(h|0)==(c[p+4>>2]|0):0):0){M=291;break}if((o|0)>0){j=0;p=0;do{j=m+(j<<3)|0;p=p+1<<24>>24;if((k|0)==(c[j>>2]|0)?(h|0)==(c[j+4>>2]|0):0){M=285;break f}j=p&255}while((j|0)<(o|0))}ce[c[n>>2]&255](c[q>>2]|0,k,h,0)|0;if((Od[c[r>>2]&255](c[q>>2]|0,Q,16)|0)!=16){O=0;M=314;break f}o=(d[t>>0]|0)+(d[Q>>0]|0)+(d[u>>0]|0)+(d[v>>0]|0)+(d[w>>0]|0)+(d[x>>0]|0)+(d[y>>0]|0)+(d[z>>0]|0)+(d[A>>0]|0)+(d[B>>0]|0)+(d[C>>0]|0)+(d[D>>0]|0)+(d[E>>0]|0)+(d[F>>0]|0)+(d[G>>0]|0)+(d[H>>0]|0)|0;k=o+25|0;h=JK(k)|0;if(!h){M=288;break f}c[h>>2]=k;a[h+4>>0]=-1;a[h+5>>0]=-60;p=o+19|0;a[h+6>>0]=p>>>8;a[h+7>>0]=p;a[h+8>>0]=g;a[h+9>>0]=a[Q>>0]|0;a[h+10>>0]=a[t>>0]|0;a[h+11>>0]=a[u>>0]|0;a[h+12>>0]=a[v>>0]|0;a[h+13>>0]=a[w>>0]|0;a[h+14>>0]=a[x>>0]|0;a[h+15>>0]=a[y>>0]|0;a[h+16>>0]=a[z>>0]|0;a[h+17>>0]=a[A>>0]|0;a[h+18>>0]=a[B>>0]|0;a[h+19>>0]=a[C>>0]|0;a[h+20>>0]=a[D>>0]|0;a[h+21>>0]=a[E>>0]|0;a[h+22>>0]=a[F>>0]|0;a[h+23>>0]=a[G>>0]|0;a[h+24>>0]=a[H>>0]|0;if((Od[c[r>>2]&255](c[q>>2]|0,h+25|0,o)|0)!=(o|0)){O=0;M=314;break f}c[s+(K<<2)>>2]=h;a[J+(K+388)>>0]=K<<4}while(0);if((M|0)==291){M=0;a[J+(K+388)>>0]=a[J+(K+387)>>0]|0}g=g+1<<24>>24;if((g&255)<(d[l>>0]|0))K=g&255;else{M=293;break}}if((M|0)==285){Dw(c[q>>2]|0,233112,233152,R);R=0;i=T;return R|0}else if((M|0)==288){Dw(c[q>>2]|0,233112,231952,R);R=0;i=T;return R|0}else if((M|0)==293){P=c[N>>2]|0;break}else if((M|0)==314){i=T;return O|0}}else P=J;while(0);F=P+288|0;N=F;if((c[N>>2]|0)==0&(c[N+4>>2]|0)==0){Dw(c[f+628>>2]|0,233016,233056,R);R=0;i=T;return R|0}a[P+1208>>0]=0;G=P+204|0;g:do if(a[G>>0]|0){H=f+640|0;J=f+628|0;m=f+632|0;l=P+344|0;n=Q+1|0;q=Q+2|0;r=Q+3|0;s=Q+4|0;t=Q+5|0;u=Q+6|0;v=Q+7|0;w=Q+8|0;x=Q+9|0;y=Q+10|0;z=Q+11|0;A=Q+12|0;B=Q+13|0;C=Q+14|0;D=Q+15|0;E=0;g=0;h:while(1){h=F+(E<<3)|0;k=c[h>>2]|0;h=c[h+4>>2]|0;do if((k|0)==0&(h|0)==0)M=310;else{o=E+-1|0;if(g<<24>>24!=0?(f=F+(o<<3)|0,(k|0)==(c[f>>2]|0)?(h|0)==(c[f+4>>2]|0):0):0){M=310;break}if((o|0)>0){j=0;p=0;do{f=F+(j<<3)|0;p=p+1<<24>>24;if((k|0)==(c[f>>2]|0)?(h|0)==(c[f+4>>2]|0):0){M=304;break h}j=p&255}while((j|0)<(o|0))}ce[c[H>>2]&255](c[J>>2]|0,k,h,0)|0;if((Od[c[m>>2]&255](c[J>>2]|0,Q,16)|0)!=16){O=0;M=314;break h}o=(d[n>>0]|0)+(d[Q>>0]|0)+(d[q>>0]|0)+(d[r>>0]|0)+(d[s>>0]|0)+(d[t>>0]|0)+(d[u>>0]|0)+(d[v>>0]|0)+(d[w>>0]|0)+(d[x>>0]|0)+(d[y>>0]|0)+(d[z>>0]|0)+(d[A>>0]|0)+(d[B>>0]|0)+(d[C>>0]|0)+(d[D>>0]|0)|0;k=o+25|0;h=JK(k)|0;if(!h){M=307;break h}c[h>>2]=k;a[h+4>>0]=-1;a[h+5>>0]=-60;f=o+19|0;a[h+6>>0]=f>>>8;a[h+7>>0]=f;a[h+8>>0]=E|16;a[h+9>>0]=a[Q>>0]|0;a[h+10>>0]=a[n>>0]|0;a[h+11>>0]=a[q>>0]|0;a[h+12>>0]=a[r>>0]|0;a[h+13>>0]=a[s>>0]|0;a[h+14>>0]=a[t>>0]|0;a[h+15>>0]=a[u>>0]|0;a[h+16>>0]=a[v>>0]|0;a[h+17>>0]=a[w>>0]|0;a[h+18>>0]=a[x>>0]|0;a[h+19>>0]=a[y>>0]|0;a[h+20>>0]=a[z>>0]|0;a[h+21>>0]=a[A>>0]|0;a[h+22>>0]=a[B>>0]|0;a[h+23>>0]=a[C>>0]|0;a[h+24>>0]=a[D>>0]|0;if((Od[c[m>>2]&255](c[J>>2]|0,h+25|0,o)|0)!=(o|0)){O=0;M=314;break h}c[l+(E<<2)>>2]=h;f=P+(E+388)|0;a[f>>0]=a[f>>0]|g}while(0);if((M|0)==310){M=0;f=P+(E+388)|0;a[f>>0]=d[P+(E+387)>>0]&15|d[f>>0]}g=g+1<<24>>24;if((g&255)<(d[G>>0]|0))E=g&255;else break g}if((M|0)==304){Dw(c[J>>2]|0,233016,233080,R);R=0;i=T;return R|0}else if((M|0)==307){Dw(c[J>>2]|0,233016,231952,R);R=0;i=T;return R|0}else if((M|0)==314){i=T;return O|0}}while(0);if((d[L>>0]|0)>1)g=1;else{R=1;i=T;return R|0}do{a[S+((g&255)+385)>>0]=g;g=g+1<<24>>24}while((g&255)<(d[L>>0]|0));O=1;i=T;return O|0}case 314:{i=T;return O|0}}return 0}function m$(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=i;v=d+1216|0;f=v;e=c[f>>2]|0;f=c[f+4>>2]|0;t=d+1208|0;a:do if((e|0)==0&(f|0)==0){m=d+1188|0;n=d+208|0;o=d+1200|0;p=d+216|0;q=d+1192|0;r=d+1196|0;s=d+176|0;b:while(1){a[t>>0]=0;e=c[m>>2]|0;if(!e){h=n;e=c[h>>2]|0;h=c[h+4>>2]|0;if(!((e|0)==0&(h|0)==0)){k=o;c[k>>2]=e;c[k+4>>2]=h;k=p;j=c[k+4>>2]|0;l=v;c[l>>2]=c[k>>2];c[l+4>>2]=j}c[m>>2]=1}else if((e|0)==2)u=21;else if((e|0)==1){c[m>>2]=2;u=21}else{e=0;u=34;break}do if((u|0)==21){u=0;if(!(ww(c[d>>2]|0)|0)){e=0;u=34;break b}e=c[d>>2]|0;h=c[e+172>>2]|0;if(!h){e=0;u=34;break b}e=c[e+176>>2]|0;if(!e){e=0;u=34;break b}l=c[q>>2]|0;if((l|0)==(c[r>>2]|0)){c[m>>2]=3;break}g=h+(l<<3)|0;f=c[g>>2]|0;g=c[g+4>>2]|0;j=o;c[j>>2]=f;c[j+4>>2]=g;do if(!((f|0)==0&(g|0)==0)){k=s;j=c[k>>2]|0;k=c[k+4>>2]|0;if(!(k>>>0>g>>>0|(k|0)==(g|0)&j>>>0>f>>>0)){j=o;c[j>>2]=0;c[j+4>>2]=0;break}h=e+(l<<3)|0;e=c[h>>2]|0;h=c[h+4>>2]|0;x=v;c[x>>2]=e;c[x+4>>2]=h;if((e|0)==0&(h|0)==0){x=o;c[x>>2]=0;c[x+4>>2]=0;break}x=Iga(f|0,g|0,e|0,h|0)|0;h=I;if(h>>>0>k>>>0|(h|0)==(k|0)&x>>>0>j>>>0){j=Hga(j|0,k|0,f|0,g|0)|0;x=v;c[x>>2]=j;c[x+4>>2]=I}}while(0);c[q>>2]=l+1}while(0);f=v;e=c[f>>2]|0;f=c[f+4>>2]|0;if(!((e|0)==0&(f|0)==0))break a}if((u|0)==34){i=w;return e|0}}while(0);if(!(a[t>>0]|0)){f=c[d>>2]|0;e=d+1200|0;ce[c[f+640>>2]&255](c[f+628>>2]|0,c[e>>2]|0,c[e+4>>2]|0,0)|0;a[t>>0]=1;e=v;f=c[e+4>>2]|0;e=c[e>>2]|0}if(f>>>0<0|(f|0)==0&e>>>0<2048)e=e&65535;else e=2048;x=c[d>>2]|0;h=d+1232|0;e=Od[c[x+632>>2]&255](c[x+628>>2]|0,h,e)|0;if(!e){x=0;i=w;return x|0}if((e|0)<=0)Sa(232240,231232,1939,232248);if((e|0)>=2049)Sa(232272,231232,1940,232248);x=((e|0)<0)<<31>>31;g=v;f=c[g>>2]|0;g=c[g+4>>2]|0;if(x>>>0>g>>>0|(x|0)==(g|0)&e>>>0>f>>>0)Sa(232288,231232,1942,232248);b[d+1224>>1]=e;c[d+1228>>2]=h;u=e&65535;t=Hga(f|0,g|0,u|0,0)|0;x=v;c[x>>2]=t;c[x+4>>2]=I;x=d+1200|0;d=x;d=Iga(c[d>>2]|0,c[d+4>>2]|0,u|0,0)|0;c[x>>2]=d;c[x+4>>2]=I;x=1;i=w;return x|0}function n$(e){e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;i=i+16|0;p=v;u=c[e+576>>2]|0;if(a[u+225>>0]|0)Sa(232568,231232,1696,232600);if(!(a[u+363>>0]|0)){Dw(c[e+628>>2]|0,232600,232632,p);u=0;i=v;return u|0}t=u+1224|0;f=b[t>>1]|0;if(!(f<<16>>16)){if(!(m$(u)|0)){u=0;i=v;return u|0}f=b[t>>1]|0;if(!(f<<16>>16))Sa(232184,231232,2010,232704);else h=f}else h=f;q=u+1228|0;g=c[q>>2]|0;k=a[g>>0]|0;g=g+1|0;c[q>>2]=g;f=h+-1<<16>>16;b[t>>1]=f;k=(k&255)<<8;do if(!(f<<16>>16)){if(!(m$(u)|0)){u=0;i=v;return u|0}f=b[t>>1]|0;if(!(f<<16>>16))Sa(232184,231232,2010,232704);else{j=c[q>>2]|0;l=f;break}}else{j=g;l=f}while(0);w=a[j>>0]|0;h=j+1|0;c[q>>2]=h;f=l+-1<<16>>16;b[t>>1]=f;l=u+206|0;g=a[l>>0]|0;if((w&255|k|0)!=(((g&255)<<1)+6|0)){Dw(c[e+628>>2]|0,232600,232632,p);w=0;i=v;return w|0}do if(!(f<<16>>16)){if(!(m$(u)|0)){w=0;i=v;return w|0}f=b[t>>1]|0;if(!(f<<16>>16))Sa(232184,231232,2010,232704);else{m=c[q>>2]|0;n=f;o=a[l>>0]|0;break}}else{m=h;n=f;o=g}while(0);w=a[m>>0]|0;g=m+1|0;c[q>>2]=g;f=n+-1<<16>>16;b[t>>1]=f;if(w<<24>>24!=o<<24>>24){Dw(c[e+628>>2]|0,232600,232632,p);w=0;i=v;return w|0}do if(o<<24>>24){j=u+205|0;h=0;g=0;while(1){if(!(f<<16>>16)){if(!(m$(u)|0)){f=0;g=39;break}f=b[t>>1]|0;if(!(f<<16>>16)){g=28;break}}p=c[q>>2]|0;w=a[p>>0]|0;c[q>>2]=p+1;b[t>>1]=f+-1<<16>>16;a[u+(h+385+(d[j>>0]|0))>>0]=w;f=b[t>>1]|0;if(!(f<<16>>16)){if(!(m$(u)|0)){f=0;g=39;break}f=b[t>>1]|0;if(!(f<<16>>16)){g=32;break}}p=c[q>>2]|0;w=a[p>>0]|0;c[q>>2]=p+1;b[t>>1]=f+-1<<16>>16;a[u+(h+388+(d[j>>0]|0))>>0]=w;g=g+1<<24>>24;f=b[t>>1]|0;if((g&255)>=(d[l>>0]|0)){g=34;break}else h=g&255}if((g|0)==28)Sa(232184,231232,2010,232704);else if((g|0)==32)Sa(232184,231232,2010,232704);else if((g|0)==34){r=f;s=c[q>>2]|0;break}else if((g|0)==39){i=v;return f|0}}else{r=f;s=g}while(0);h=r&65535;f=(r&65535)<3?h:3;c[q>>2]=s+f;h=h-f|0;b[t>>1]=h;f=3-f|0;g=f&65535;if(!g){w=1;i=v;return w|0}if(h&65535)Sa(232664,231232,2095,232688);w=u+1216|0;s=w;r=c[s>>2]|0;s=c[s+4>>2]|0;t=(0>s>>>0|0==(s|0)&g>>>0>r>>>0?r&65535:f&65535)&65535;q=u+1200|0;p=q;p=Iga(t|0,0,c[p>>2]|0,c[p+4>>2]|0)|0;c[q>>2]=p;c[q+4>>2]=I;t=Hga(r|0,s|0,t|0,0)|0;c[w>>2]=t;c[w+4>>2]=I;a[u+1208>>0]=0;w=1;i=v;return w|0}function o$(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+208|0;d=b;e=b+8|0;Jd[c[(c[a>>2]|0)+12>>2]&255](a,e);a=c[(c[a+12>>2]|0)+628>>2]|0;c[d>>2]=e;Zx(a,232072,232472,d);i=b;return}function p$(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+208|0;b=e;e=e+8|0;Jd[c[(c[a>>2]|0)+12>>2]&255](a,e);a=a+12|0;d=c[(c[a>>2]|0)+628>>2]|0;c[b>>2]=e;Dw(d,232072,232472,b);q2(c[(c[a>>2]|0)+576>>2]|0)}function q$(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;e=i;i=i+168|0;c[e>>2]=0;Kga(a+4|0,1,e|0)|0;t=0;a=t;t=0;if((a|0)!=0&(u|0)!=0){d=Mga(c[a>>2]|0,e)|0;if(!d)Va(a|0,u|0);I=u}else d=-1;if((d|0)==1)a=I;else a=0;while(1){if(a){a=0;f=6;break}t=0;Da(125,b|0,90,456);a=t;t=0;if((a|0)!=0&(u|0)!=0){d=Mga(c[a>>2]|0,e)|0;if(!d)Va(a|0,u|0);I=u}else d=-1;if((d|0)==1)a=I;else break}if((f|0)==6){i=g;return a|0}f=1;i=g;return f|0}function r$(a){a=a|0;return}function s$(e){e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;o=q;l=c[e+12>>2]|0;n=l+576|0;p=c[n>>2]|0;j=p+3280|0;f=0;e=0;a:while(1){g=c[j>>2]|0;if(g>>>0>=19){g=4;break}b:do switch(g|0){case 5:{g=c[n>>2]|0;h=c[g+328>>2]|0;if(!h)h=0;else{k=(c[h>>2]|0)+-4|0;f=h+4|0;e=k;h=k}k=g+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 2:{g=c[n>>2]|0;h=c[g+316>>2]|0;if(!h)h=0;else{k=(c[h>>2]|0)+-4|0;f=h+4|0;e=k;h=k}k=g+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 3:{g=c[n>>2]|0;h=c[g+320>>2]|0;if(!h)h=0;else{k=(c[h>>2]|0)+-4|0;f=h+4|0;e=k;h=k}k=g+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 7:{g=c[n>>2]|0;h=c[g+336>>2]|0;if(!h)h=0;else{k=(c[h>>2]|0)+-4|0;f=h+4|0;e=k;h=k}k=g+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 8:{g=c[n>>2]|0;h=c[g+340>>2]|0;if(!h)h=0;else{k=(c[h>>2]|0)+-4|0;f=h+4|0;e=k;h=k}k=g+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 15:{g=51;break a}case 1:{k=c[n>>2]|0;g=c[k+312>>2]|0;if(!g)h=0;else{h=(c[g>>2]|0)+-4|0;f=g+4|0;e=h}k=k+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 10:{g=c[n>>2]|0;h=c[g+348>>2]|0;if(!h)h=0;else{k=(c[h>>2]|0)+-4|0;f=h+4|0;e=k;h=k}k=g+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 0:{g=5;break a}case 6:{g=c[n>>2]|0;h=c[g+332>>2]|0;if(!h)h=0;else{k=(c[h>>2]|0)+-4|0;f=h+4|0;e=k;h=k}k=g+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 9:{g=c[n>>2]|0;h=c[g+344>>2]|0;if(!h)h=0;else{k=(c[h>>2]|0)+-4|0;f=h+4|0;e=k;h=k}k=g+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 12:{k=c[n>>2]|0;g=c[k+356>>2]|0;if(!g)h=0;else{h=(c[g>>2]|0)+-4|0;f=g+4|0;e=h}k=k+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 4:{g=c[n>>2]|0;h=c[g+324>>2]|0;if(!h)h=0;else{k=(c[h>>2]|0)+-4|0;f=h+4|0;e=k;h=k}k=g+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 13:{k=c[n>>2]|0;g=b[k+360>>1]|0;if(!(g<<16>>16))h=0;else{f=k+3284|0;a[f>>0]=-1;a[k+3285>>0]=-35;a[k+3286>>0]=0;a[k+3287>>0]=4;a[k+3288>>0]=(g&65535)>>>8;a[k+3289>>0]=g;e=6;h=6}k=k+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 11:{k=c[n>>2]|0;g=c[k+352>>2]|0;if(!g)h=0;else{h=(c[g>>2]|0)+-4|0;f=g+4|0;e=h}k=k+3280|0;c[k>>2]=(c[k>>2]|0)+1;break}case 14:{g=45;break a}case 17:{g=67;break a}case 18:{g=68;break a}case 16:{m=c[n>>2]|0;h=m+1224|0;e=b[h>>1]|0;if(!(e<<16>>16)){if(!(m$(m)|0)){g=70;break a}e=b[h>>1]|0;if(!(e<<16>>16)){g=60;break a}}g=e&65535;f=c[m+1228>>2]|0;b[h>>1]=0;k=m+1216|0;if((c[k>>2]|0)==0&(c[k+4>>2]|0)==0){e=c[m+1188>>2]|0;if((e|0)==3){c[m+3280>>2]=18;h=g;e=g;break b}else if((e|0)!=2){h=g;e=g;break b}e=m+3280|0;if((c[m+1192>>2]|0)>>>0<(c[m+1196>>2]|0)>>>0){c[e>>2]=17;h=g;e=g;break b}else{c[e>>2]=18;h=g;e=g;break b}}else{h=g;e=g}break}default:{g=72;break a}}while(0);if(h){g=71;break}}switch(g|0){case 4:{Sa(232136,231232,2118,232160);break}case 5:{j=c[n>>2]|0;l=j+3284|0;a[l>>0]=-1;a[j+3285>>0]=-40;j=j+3280|0;c[j>>2]=(c[j>>2]|0)+1;j=2;o=p+1088|0;p=p+1092|0;c[p>>2]=j;c[o>>2]=l;i=q;return 1}case 45:{l=c[n>>2]|0;j=l+206|0;e=a[j>>0]|0;f=((e&255)*3|0)+8|0;if(f>>>0>=256)Sa(232424,231232,2257,232400);k=l+3284|0;a[k>>0]=-1;a[l+3285>>0]=a[l+364>>0]|0;a[l+3286>>0]=0;a[l+3287>>0]=f;a[l+3288>>0]=8;o=c[l+372>>2]|0;a[l+3289>>0]=o>>>8;a[l+3290>>0]=o;o=c[l+368>>2]|0;a[l+3291>>0]=o>>>8;a[l+3292>>0]=o;a[l+3293>>0]=e;if(!(e<<24>>24))e=0;else{h=l+205|0;f=0;e=0;while(1){g=f*3|0;a[l+(g+3294)>>0]=a[l+(f+376+(d[h>>0]|0))>>0]|0;a[l+(g+3295)>>0]=a[l+(f+379+(d[h>>0]|0))>>0]|0;a[l+(g+3296)>>0]=a[l+(f+382+(d[h>>0]|0))>>0]|0;g=e+1<<24>>24;e=a[j>>0]|0;if((g&255)<(e&255)){f=g&255;e=g}else break}}l=l+3280|0;c[l>>2]=(c[l>>2]|0)+1;l=k;j=((e&255)*3|0)+10|0;o=p+1088|0;p=p+1092|0;c[p>>2]=j;c[o>>2]=l;i=q;return 1}case 51:{m=c[n>>2]|0;k=m+206|0;e=a[k>>0]|0;f=((e&255)<<1)+6|0;if(f>>>0>=256)Sa(232352,231232,2293,232328);l=m+3284|0;a[l>>0]=-1;a[m+3285>>0]=-38;a[m+3286>>0]=0;a[m+3287>>0]=f;a[m+3288>>0]=e;if(!(e<<24>>24))e=0;else{g=m+205|0;j=a[g>>0]|0;h=0;e=0;while(1){f=h<<1;a[m+(f+3289)>>0]=a[m+(h+385+(j&255))>>0]|0;j=a[g>>0]|0;a[m+(f+3290)>>0]=a[m+(h+388+(j&255))>>0]|0;f=e+1<<24>>24;e=a[k>>0]|0;if((f&255)>=(e&255))break;else{h=f&255;e=f}}}j=(e&255)<<1;a[m+(j+3289)>>0]=0;a[m+(j+3290)>>0]=63;j=(d[k>>0]|0)<<1;a[m+(j+3291)>>0]=0;o=m+3280|0;c[o>>2]=(c[o>>2]|0)+1;j=j+8|0;o=p+1088|0;p=p+1092|0;c[p>>2]=j;c[o>>2]=l;i=q;return 1}case 60:{Sa(232184,231232,2327,232208);break}case 67:{j=c[n>>2]|0;l=j+3284|0;a[l>>0]=-1;o=j+362|0;k=a[o>>0]|0;a[j+3285>>0]=(k&255)+208;k=k+1<<24>>24;a[o>>0]=k<<24>>24==8?0:k;c[j+3280>>2]=16;j=2;o=p+1088|0;p=p+1092|0;c[p>>2]=j;c[o>>2]=l;i=q;return 1}case 68:{j=c[n>>2]|0;l=j+3284|0;a[l>>0]=-1;a[j+3285>>0]=-39;j=2;o=p+1088|0;p=p+1092|0;c[p>>2]=j;c[o>>2]=l;i=q;return 1}case 70:{Dw(c[l+628>>2]|0,232072,232104,o);q2(c[n>>2]|0);break}case 71:{o=p+1088|0;p=p+1092|0;c[p>>2]=e;c[o>>2]=f;i=q;return 1}case 72:while(1)g=72}return 0}function t$(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;b=c[a+12>>2]|0;Dw(c[b+628>>2]|0,232072,232080,d);q2(c[b+576>>2]|0)}function u$(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;b=c[a+12>>2]|0;Dw(c[b+628>>2]|0,232072,232080,d);q2(c[b+576>>2]|0);return 0}function v$(a){a=a|0;return}function w$(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;e=i;i=i+168|0;c[e>>2]=0;Kga(a+4|0,1,e|0)|0;t=0;a=t;t=0;if((a|0)!=0&(u|0)!=0){d=Mga(c[a>>2]|0,e)|0;if(!d)Va(a|0,u|0);I=u}else d=-1;if((d|0)==1)a=I;else a=0;while(1){if(a){a=0;f=6;break}t=0;ya(284,b|0,1)|0;a=t;t=0;if((a|0)!=0&(u|0)!=0){d=Mga(c[a>>2]|0,e)|0;if(!d)Va(a|0,u|0);I=u}else d=-1;if((d|0)==1)a=I;else break}if((f|0)==6){i=g;return a|0}f=1;i=g;return f|0}function x$(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;e=i;i=i+168|0;c[e>>2]=0;Kga(a+4|0,1,e|0)|0;t=0;a=t;t=0;if((a|0)!=0&(u|0)!=0){d=Mga(c[a>>2]|0,e)|0;if(!d)Va(a|0,u|0);I=u}else d=-1;if((d|0)==1)a=I;else a=0;while(1){if(a){a=0;f=6;break}t=0;na(228,b|0)|0;a=t;t=0;if((a|0)!=0&(u|0)!=0){d=Mga(c[a>>2]|0,e)|0;if(!d)Va(a|0,u|0);I=u}else d=-1;if((d|0)==1)a=I;else break}if((f|0)==6){i=g;return a|0}f=1;i=g;return f|0}function y$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;g=i;i=i+168|0;c[g>>2]=0;Kga(a+4|0,1,g|0)|0;t=0;a=t;t=0;if((a|0)!=0&(u|0)!=0){f=Mga(c[a>>2]|0,g)|0;if(!f)Va(a|0,u|0);I=u}else f=-1;if((f|0)==1)a=I;else a=0;while(1){if(a){a=0;h=6;break}t=0;qa(202,b|0,d|0,e|0)|0;a=t;t=0;if((a|0)!=0&(u|0)!=0){f=Mga(c[a>>2]|0,g)|0;if(!f)Va(a|0,u|0);I=u}else f=-1;if((f|0)==1)a=I;else break}if((h|0)==6){i=j;return a|0}h=1;i=j;return h|0}function z$(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;f=i;i=i+168|0;c[f>>2]=0;Kga(a+4|0,1,f|0)|0;t=0;a=t;t=0;if((a|0)!=0&(u|0)!=0){e=Mga(c[a>>2]|0,f)|0;if(!e)Va(a|0,u|0);I=u}else e=-1;if((e|0)==1)a=I;else a=0;while(1){if(a){a=0;g=6;break}t=0;qa(186,b|0,d|0,1)|0;a=t;t=0;if((a|0)!=0&(u|0)!=0){e=Mga(c[a>>2]|0,f)|0;if(!e)Va(a|0,u|0);I=u}else e=-1;if((e|0)==1)a=I;else break}if((g|0)==6){i=h;return a|0}g=1;i=h;return g|0}function A$(a){a=a|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;f=h;g=c[a+576>>2]|0;d=c[g>>2]|0;if((d|0)==1){g=1;i=h;return g|0}else if((d|0)==2){d=b[a+84>>1]|0;if(!(d<<16>>16==32|d<<16>>16==16|d<<16>>16==8)){g=c[a+628>>2]|0;c[f>>2]=d&65535;Dw(g,237656,237672,f);g=0;i=h;return g|0}}else if((d|0)==3){d=b[a+86>>1]|0;if(d<<16>>16!=3){g=c[a+628>>2]|0;c[f>>2]=d&65535;Dw(g,237656,237744,f);g=0;i=h;return g|0}}else{g=c[a+628>>2]|0;c[f>>2]=d;Dw(g,237656,237808,f);g=0;i=h;return g|0}if((b[a+126>>1]|0)==1)d=e[a+98>>1]|0;else d=1;c[g+4>>2]=d;if(!(c[a+12>>2]&1024)){d=Ex(a)|0;c[g+8>>2]=d}else{d=Ux(a)|0;c[g+8>>2]=d}g=(d|0)!=0&1;i=h;return g|0}function B$(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;k=c[(c[b+576>>2]|0)+4>>2]|0;if((f|0)%(k|0)|0)Sa(237624,237120,248,238064);if((k|0)>=(f|0)){i=m;return}if((k|0)==3){b=f+-3|0;if((b|0)<=0){i=m;return}h=a[e+2>>0]|0;f=a[e+1>>0]|0;j=e;g=a[e>>0]|0;do{l=j;j=j+3|0;g=(a[j>>0]|0)+g|0;a[j>>0]=g;k=l+4|0;f=(a[k>>0]|0)+f|0;a[k>>0]=f;l=l+5|0;h=(a[l>>0]|0)+h|0;a[l>>0]=h;b=b+-3|0}while((b|0)>0);i=m;return}else if((k|0)==4){b=f+-4|0;if((b|0)<=0){i=m;return}g=a[e+3>>0]|0;h=a[e+2>>0]|0;j=a[e+1>>0]|0;k=e;f=a[e>>0]|0;do{l=k;k=k+4|0;f=(a[k>>0]|0)+f|0;a[k>>0]=f;e=l+5|0;j=(a[e>>0]|0)+j|0;a[e>>0]=j;e=l+6|0;h=(a[e>>0]|0)+h|0;a[e>>0]=h;l=l+7|0;g=(a[l>>0]|0)+g|0;a[l>>0]=g;b=b+-4|0}while((b|0)>0);i=m;return}else{j=k+-4|0;l=(j|0)>0;h=f-k|0;b=e;do{switch(k|0){case 3:{g=17;break}case 0:break;case 4:{g=16;break}case 2:{g=18;break}case 1:{g=19;break}default:if(l){f=b;g=j;while(1){e=f+k|0;a[e>>0]=(d[f>>0]|0)+(d[e>>0]|0);g=g+-1|0;if((g|0)<=0)break;else f=f+1|0}b=b+j|0;g=16}else g=16}if((g|0)==16){f=b+k|0;a[f>>0]=(d[b>>0]|0)+(d[f>>0]|0);b=b+1|0;g=17}if((g|0)==17){f=b+k|0;a[f>>0]=(d[b>>0]|0)+(d[f>>0]|0);b=b+1|0;g=18}if((g|0)==18){f=b+k|0;a[f>>0]=(d[b>>0]|0)+(d[f>>0]|0);b=b+1|0;g=19}if((g|0)==19){g=0;f=b+k|0;a[f>>0]=(d[b>>0]|0)+(d[f>>0]|0);b=b+1|0}h=h-k|0}while((h|0)>0);i=m;return}}function C$(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;l=c[(c[a+576>>2]|0)+4>>2]|0;a=(f|0)/2|0;if((f|0)%(l<<1|0)|0)Sa(237584,237120,318,238048);if((a|0)<=(l|0)){i=m;return}h=l+-4|0;j=(h|0)>0;g=a-l|0;a=d;do{switch(l|0){case 4:{k=9;break}case 0:break;case 1:{k=12;break}case 2:{k=11;break}case 3:{k=10;break}default:if(j){f=h;d=a;while(1){k=d+(l<<1)|0;b[k>>1]=(e[k>>1]|0)+(e[d>>1]|0);f=f+-1|0;if((f|0)<=0)break;else d=d+2|0}a=a+(h<<1)|0;k=9}else k=9}if((k|0)==9){d=a+(l<<1)|0;b[d>>1]=(e[d>>1]|0)+(e[a>>1]|0);a=a+2|0;k=10}if((k|0)==10){d=a+(l<<1)|0;b[d>>1]=(e[d>>1]|0)+(e[a>>1]|0);a=a+2|0;k=11}if((k|0)==11){d=a+(l<<1)|0;b[d>>1]=(e[d>>1]|0)+(e[a>>1]|0);a=a+2|0;k=12}if((k|0)==12){k=0;d=a+(l<<1)|0;b[d>>1]=(e[d>>1]|0)+(e[a>>1]|0);a=a+2|0}g=g-l|0}while((g|0)>0);i=m;return}function D$(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;j=c[(c[a+576>>2]|0)+4>>2]|0;a=(d|0)/4|0;if((d|0)%(j<<2|0)|0)Sa(237544,237120,355,238032);if((a|0)<=(j|0)){i=k;return}f=j+-4|0;g=(f|0)>0;e=a-j|0;a=b;do{switch(j|0){case 2:{h=11;break}case 4:{h=9;break}case 1:{h=12;break}case 0:break;case 3:{h=10;break}default:if(g){d=f;b=a;while(1){h=b+(j<<2)|0;c[h>>2]=(c[h>>2]|0)+(c[b>>2]|0);d=d+-1|0;if((d|0)<=0)break;else b=b+4|0}a=a+(f<<2)|0;h=9}else h=9}if((h|0)==9){b=a+(j<<2)|0;c[b>>2]=(c[b>>2]|0)+(c[a>>2]|0);a=a+4|0;h=10}if((h|0)==10){b=a+(j<<2)|0;c[b>>2]=(c[b>>2]|0)+(c[a>>2]|0);a=a+4|0;h=11}if((h|0)==11){b=a+(j<<2)|0;c[b>>2]=(c[b>>2]|0)+(c[a>>2]|0);a=a+4|0;h=12}if((h|0)==12){h=0;b=a+(j<<2)|0;c[b>>2]=(c[b>>2]|0)+(c[a>>2]|0);a=a+4|0}e=e-j|0}while((e|0)>0);i=k;return}function E$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;f=c[a+576>>2]|0;if(!f)Sa(237320,237120,413,237984);g=c[f+28>>2]|0;if(!g)Sa(238008,237120,414,237984);f=f+40|0;if(!(c[f>>2]|0))Sa(237960,237120,415,237984);if(!(ce[g&255](a,b,d,e)|0)){a=0;i=h;return a|0}$d[c[f>>2]&255](a,b,d);a=1;i=h;return a|0}function F$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;g=c[a+576>>2]|0;if(!g)Sa(237320,237120,436,237888);f=c[g+36>>2]|0;if(!f)Sa(237912,237120,437,237888);if(!(ce[f&255](a,b,d,e)|0)){a=0;i=j;return a|0}h=c[g+8>>2]|0;if((h|0)<=0)Sa(237456,237120,441,237888);if((d|0)%(h|0)|0)Sa(237936,237120,442,237888);e=g+40|0;f=c[e>>2]|0;if(!f)Sa(237960,237120,443,237888);if((d|0)>0)g=b;else{a=1;i=j;return a|0}while(1){$d[f&255](a,g,h);d=d-h|0;if((d|0)<=0){d=1;break}g=g+h|0;f=c[e>>2]|0}i=j;return d|0}function G$(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;l=c[(c[a+576>>2]|0)+4>>2]|0;a=(f|0)/2|0;if((f|0)%(l<<1|0)|0)Sa(237584,237120,299,237872);if((a|0)<=(l|0)){i=m;return}Ix(d,a);h=l+-4|0;j=(h|0)>0;g=a-l|0;a=d;do{switch(l|0){case 0:break;case 2:{k=11;break}case 4:{k=9;break}case 1:{k=12;break}case 3:{k=10;break}default:if(j){f=h;d=a;while(1){k=d+(l<<1)|0;b[k>>1]=(e[k>>1]|0)+(e[d>>1]|0);f=f+-1|0;if((f|0)<=0)break;else d=d+2|0}a=a+(h<<1)|0;k=9}else k=9}if((k|0)==9){d=a+(l<<1)|0;b[d>>1]=(e[d>>1]|0)+(e[a>>1]|0);a=a+2|0;k=10}if((k|0)==10){d=a+(l<<1)|0;b[d>>1]=(e[d>>1]|0)+(e[a>>1]|0);a=a+2|0;k=11}if((k|0)==11){d=a+(l<<1)|0;b[d>>1]=(e[d>>1]|0)+(e[a>>1]|0);a=a+2|0;k=12}if((k|0)==12){k=0;d=a+(l<<1)|0;b[d>>1]=(e[d>>1]|0)+(e[a>>1]|0);a=a+2|0}g=g-l|0}while((g|0)>0);i=m;return}function H$(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;j=c[(c[a+576>>2]|0)+4>>2]|0;a=(d|0)/4|0;if((d|0)%(j<<2|0)|0)Sa(237544,237120,336,237856);if((a|0)<=(j|0)){i=k;return}Kx(b,a);f=j+-4|0;g=(f|0)>0;e=a-j|0;a=b;do{switch(j|0){case 2:{h=11;break}case 4:{h=9;break}case 1:{h=12;break}case 0:break;case 3:{h=10;break}default:if(g){d=f;b=a;while(1){h=b+(j<<2)|0;c[h>>2]=(c[h>>2]|0)+(c[b>>2]|0);d=d+-1|0;if((d|0)<=0)break;else b=b+4|0}a=a+(f<<2)|0;h=9}else h=9}if((h|0)==9){b=a+(j<<2)|0;c[b>>2]=(c[b>>2]|0)+(c[a>>2]|0);a=a+4|0;h=10}if((h|0)==10){b=a+(j<<2)|0;c[b>>2]=(c[b>>2]|0)+(c[a>>2]|0);a=a+4|0;h=11}if((h|0)==11){b=a+(j<<2)|0;c[b>>2]=(c[b>>2]|0)+(c[a>>2]|0);a=a+4|0;h=12}if((h|0)==12){h=0;b=a+(j<<2)|0;c[b>>2]=(c[b>>2]|0)+(c[a>>2]|0);a=a+4|0}e=e-j|0}while((e|0)>0);i=k;return}function I$(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;o=c[(c[b+576>>2]|0)+4>>2]|0;n=(e[b+84>>1]|0)>>>3;p=n&65535;q=(g>>>0)/(p>>>0)|0;r=JK(g)|0;if((g>>>0)%((ea(p,o)|0)>>>0)|0)Sa(237288,237120,379,237848);if(!r){i=s;return}a:do if((o|0)<(g|0)){j=o+-4|0;l=(j|0)>0;m=g;b=f;while(1){switch(o|0){case 4:{k=10;break}case 1:{k=13;break}case 2:{k=12;break}case 0:break;case 3:{k=11;break}default:if(l){k=b;h=j;while(1){t=k+o|0;a[t>>0]=(d[t>>0]|0)+(d[k>>0]|0);h=h+-1|0;if((h|0)<=0)break;else k=k+1|0}b=b+j|0;k=10}else k=10}if((k|0)==10){t=b+o|0;a[t>>0]=(d[t>>0]|0)+(d[b>>0]|0);b=b+1|0;k=11}if((k|0)==11){t=b+o|0;a[t>>0]=(d[t>>0]|0)+(d[b>>0]|0);b=b+1|0;k=12}if((k|0)==12){t=b+o|0;a[t>>0]=(d[t>>0]|0)+(d[b>>0]|0);b=b+1|0;k=13}if((k|0)==13){k=0;t=b+o|0;a[t>>0]=(d[t>>0]|0)+(d[b>>0]|0);b=b+1|0}m=m-o|0;if((m|0)<=(o|0))break a}}while(0);NK(r,f,g);if((q|0)>0){b=n<<16>>16==0;h=p+-1|0;l=0;do{if(!b){j=ea(l,p)|0;k=0;do{a[f+(k+j)>>0]=a[r+((ea(h-k|0,q)|0)+l)>>0]|0;k=k+1|0}while((k|0)!=(p|0))}l=l+1|0}while((l|0)<(q|0))}KK(r);i=s;return}function J$(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;m=c[(c[b+576>>2]|0)+4>>2]|0;if((f|0)%(m|0)|0)Sa(237624,237120,461,237640);if((m|0)>=(f|0)){i=n;return}f=f-m|0;if((m|0)==3){g=a[e+2>>0]|0;h=e;j=a[e+1>>0]|0;b=a[e>>0]|0;do{l=h;h=h+3|0;k=b;b=a[h>>0]|0;a[h>>0]=b-k;k=l+4|0;e=j;j=a[k>>0]|0;a[k>>0]=j-e;l=l+5|0;k=g;g=a[l>>0]|0;a[l>>0]=g-k;f=f+-3|0}while((f|0)>0);i=n;return}else if((m|0)==4){h=a[e+3>>0]|0;g=a[e+2>>0]|0;j=e;k=a[e+1>>0]|0;b=a[e>>0]|0;do{l=j;j=j+4|0;e=b;b=a[j>>0]|0;a[j>>0]=b-e;e=l+5|0;m=k;k=a[e>>0]|0;a[e>>0]=k-m;e=l+6|0;m=g;g=a[e>>0]|0;a[e>>0]=g-m;l=l+7|0;e=h;h=a[l>>0]|0;a[l>>0]=h-e;f=f+-4|0}while((f|0)>0);i=n;return}else{k=m+-4|0;j=(k|0)>0;l=4-m|0;g=f;b=e+(f+-1)|0;do{if((m|0)==3)h=15;else if((m|0)==2)h=16;else if((m|0)==1)h=17;else if(m){if(j){h=b;f=k;while(1){e=h+m|0;a[e>>0]=(d[e>>0]|0)-(d[h>>0]|0);f=f+-1|0;if((f|0)<=0)break;else h=h+-1|0}b=b+l|0}h=b+m|0;a[h>>0]=(d[h>>0]|0)-(d[b>>0]|0);b=b+-1|0;h=15}if((h|0)==15){e=b+m|0;a[e>>0]=(d[e>>0]|0)-(d[b>>0]|0);b=b+-1|0;h=16}if((h|0)==16){e=b+m|0;a[e>>0]=(d[e>>0]|0)-(d[b>>0]|0);b=b+-1|0;h=17}if((h|0)==17){h=0;e=b+m|0;a[e>>0]=(d[e>>0]|0)-(d[b>>0]|0);b=b+-1|0}g=g-m|0}while((g|0)>0);i=n;return}}function K$(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;m=c[(c[a+576>>2]|0)+4>>2]|0;a=(f|0)/2|0;if((f|0)%(m<<1|0)|0)Sa(237584,237120,509,237608);if((a|0)<=(m|0)){i=n;return}a=a-m|0;g=m+-4|0;h=(g|0)>0;j=4-m|0;k=a;a=d+(a+-1<<1)|0;do{switch(m|0){case 4:{l=9;break}case 0:break;case 3:{l=10;break}case 1:{l=12;break}case 2:{l=11;break}default:if(h){f=g;d=a;while(1){l=d+(m<<1)|0;b[l>>1]=(e[l>>1]|0)-(e[d>>1]|0);f=f+-1|0;if((f|0)<=0)break;else d=d+-2|0}a=a+(j<<1)|0;l=9}else l=9}if((l|0)==9){d=a+(m<<1)|0;b[d>>1]=(e[d>>1]|0)-(e[a>>1]|0);a=a+-2|0;l=10}if((l|0)==10){d=a+(m<<1)|0;b[d>>1]=(e[d>>1]|0)-(e[a>>1]|0);a=a+-2|0;l=11}if((l|0)==11){d=a+(m<<1)|0;b[d>>1]=(e[d>>1]|0)-(e[a>>1]|0);a=a+-2|0;l=12}if((l|0)==12){l=0;d=a+(m<<1)|0;b[d>>1]=(e[d>>1]|0)-(e[a>>1]|0);a=a+-2|0}k=k-m|0}while((k|0)>0);i=n;return}function L$(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;j=c[(c[a+576>>2]|0)+4>>2]|0;a=(d|0)/4|0;if((d|0)%(j<<2|0)|0)Sa(237544,237120,529,237568);if((a|0)<=(j|0)){i=k;return}d=a-j|0;a=b+(d+-1<<2)|0;f=j+-4|0;g=(f|0)>0;if((j|0)==4){while(1){h=a+16|0;c[h>>2]=(c[h>>2]|0)-(c[a>>2]|0);h=a+12|0;c[h>>2]=(c[h>>2]|0)-(c[a+-4>>2]|0);h=a+8|0;c[h>>2]=(c[h>>2]|0)-(c[a+-8>>2]|0);h=a+4|0;c[h>>2]=(c[h>>2]|0)-(c[a+-12>>2]|0);d=d+-4|0;if((d|0)<=0)break;else a=a+-16|0}i=k;return}h=4-j|0;do{if(j)if((j|0)==2)e=13;else if((j|0)==1)e=14;else if((j|0)==3)e=12;else{if(g){b=f;e=a;while(1){l=e+(j<<2)|0;c[l>>2]=(c[l>>2]|0)-(c[e>>2]|0);b=b+-1|0;if((b|0)<=0)break;else e=e+-4|0}a=a+(h<<2)|0}e=a+(j<<2)|0;c[e>>2]=(c[e>>2]|0)-(c[a>>2]|0);a=a+-4|0;e=12}if((e|0)==12){l=a+(j<<2)|0;c[l>>2]=(c[l>>2]|0)-(c[a>>2]|0);a=a+-4|0;e=13}if((e|0)==13){l=a+(j<<2)|0;c[l>>2]=(c[l>>2]|0)-(c[a>>2]|0);a=a+-4|0;e=14}if((e|0)==14){e=0;l=a+(j<<2)|0;c[l>>2]=(c[l>>2]|0)-(c[a>>2]|0);a=a+-4|0}d=d-j|0}while((d|0)>0);i=k;return}function M$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;f=c[a+576>>2]|0;if(!f)Sa(237320,237120,584,237496);g=c[f+24>>2]|0;if(!g)Sa(237360,237120,585,237496);f=f+12|0;if(!(c[f>>2]|0))Sa(237520,237120,586,237496);else{$d[g&255](a,b,d);a=ce[c[f>>2]&255](a,b,d,e)|0;i=h;return a|0}return 0}function N$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;g=l;f=c[a+576>>2]|0;if(!f)Sa(237320,237120,603,237336);h=f+24|0;if(!(c[h>>2]|0))Sa(237360,237120,604,237336);j=f+20|0;if(!(c[j>>2]|0))Sa(237384,237120,605,237336);k=JK(d)|0;if(!k){j=c[a+628>>2]|0;c[g>>2]=d;Dw(j,237336,237408,g);d=0;i=l;return d|0}Aga(k|0,b|0,d|0)|0;f=c[f+8>>2]|0;if((f|0)<=0)Sa(237456,237120,623,237336);if((d|0)%(f|0)|0)Sa(237472,237120,624,237336);if((d|0)>0){b=k;g=d;while(1){$d[c[h>>2]&255](a,b,f);g=g-f|0;if((g|0)<=0)break;else b=b+f|0}}d=ce[c[j>>2]&255](a,k,d,e)|0;KK(k);i=l;return d|0}function O$(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;q=c[(c[b+576>>2]|0)+4>>2]|0;b=(e[b+84>>1]|0)>>>3;m=b&65535;n=(g>>>0)/(m>>>0)|0;o=JK(g)|0;if((g>>>0)%((ea(m,q)|0)>>>0)|0)Sa(237288,237120,554,237312);if(!o){i=r;return}NK(o,f,g);if((n|0)>0){b=b<<16>>16==0;h=m+-1|0;l=0;do{if(!b){j=ea(l,m)|0;k=0;do{a[f+((ea(h-k|0,n)|0)+l)>>0]=a[o+(k+j)>>0]|0;k=k+1|0}while((k|0)!=(m|0))}l=l+1|0}while((l|0)<(n|0))}KK(o);if((q|0)>=(g|0)){i=r;return}o=q+-4|0;k=(o|0)>0;m=4-q|0;l=g;b=f+(g+-1-q)|0;do{switch(q|0){case 2:{p=18;break}case 4:{p=16;break}case 0:break;case 3:{p=17;break}case 1:{p=19;break}default:if(k){h=b;j=o;while(1){p=h+q|0;a[p>>0]=(d[p>>0]|0)-(d[h>>0]|0);j=j+-1|0;if((j|0)<=0)break;else h=h+-1|0}b=b+m|0;p=16}else p=16}if((p|0)==16){f=b+q|0;a[f>>0]=(d[f>>0]|0)-(d[b>>0]|0);b=b+-1|0;p=17}if((p|0)==17){f=b+q|0;a[f>>0]=(d[f>>0]|0)-(d[b>>0]|0);b=b+-1|0;p=18}if((p|0)==18){f=b+q|0;a[f>>0]=(d[f>>0]|0)-(d[b>>0]|0);b=b+-1|0;p=19}if((p|0)==19){p=0;f=b+q|0;a[f>>0]=(d[f>>0]|0)-(d[b>>0]|0);b=b+-1|0}l=l-q|0}while((l|0)>(q|0));i=r;return}function P$(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0.0,h=0.0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0,w=0.0,x=0.0,y=0,z=0.0;o=i;if((d|0)>0){n=d<<1;m=n+-2|0;h=+g[a>>2];k=+g[a+4>>2];j=+g[a+8>>2];f=+g[a+12>>2];a=b;l=0;while(1){y=a+-16|0;v=a+-12|0;x=+g[v>>2];s=a+-8|0;u=+g[s>>2];p=a+-4|0;r=+g[p>>2];z=h;h=+g[a>>2];w=k;k=+g[a+4>>2];t=j;j=+g[a+8>>2];q=f;f=+g[a+12>>2];g[y>>2]=+g[y>>2]+(z+h)*e;g[v>>2]=x+(w+k)*e;g[s>>2]=u+(t+j)*e;g[p>>2]=r+(q+f)*e;l=l+1|0;if((l|0)==(d|0))break;else a=a+32|0}a=b+(m<<4)|0;b=b+(n<<4)|0}if((d|0)>=(c|0)){i=o;return}f=e+e;h=f*+g[a>>2];j=f*+g[a+4>>2];k=f*+g[a+8>>2];f=f*+g[a+12>>2];while(1){p=b+-16|0;s=b+-12|0;w=+g[s>>2];v=b+-8|0;x=+g[v>>2];y=b+-4|0;z=+g[y>>2];g[p>>2]=h+ +g[p>>2];g[s>>2]=j+w;g[v>>2]=k+x;g[y>>2]=f+z;d=d+1|0;if((d|0)==(c|0))break;else b=b+32|0}i=o;return}function Q$(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;if(!a)Sa(249936,244152,6455,250448);k=a+24|0;f=c[k>>2]|0;j=a+32|0;h=c[j>>2]|0;do if((f+1|0)>>>0>h>>>0){h=~~(+(h>>>0)+100.0)>>>0;c[j>>2]=h;f=a+28|0;h=Dfa(c[f>>2]|0,h*24|0)|0;if(h){c[f>>2]=h;f=c[k>>2]|0;break}Bfa(c[f>>2]|0);c[f>>2]=0;c[j>>2]=0;e=0;d=0;c[k>>2]=d;i=l;return e|0}else h=c[a+28>>2]|0;while(0);b[h+(f*24|0)>>1]=d;d=zga(0,e|0,32)|0;e=h+(f*24|0)+8|0;c[e>>2]=d;c[e+4>>2]=I;c[h+(f*24|0)+16>>2]=g;e=1;d=f+1|0;c[k>>2]=d;i=l;return e|0}function R$(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;D=g+16|0;if(!(c[D>>2]|0)){D=1;i=E;return D|0}C=0;B=c[g+24>>2]|0;while(1){l=j+44|0;k=c[l>>2]|0;m=j+8|0;if(!k){g=j+12|0;k=Cfa(ea(c[g>>2]|0,c[m>>2]|0)|0,4)|0;c[l>>2]=k;if(!k){h=0;j=65;break}}else g=j+12|0;r=B+36|0;c[j+36>>2]=c[r>>2];y=c[B+24>>2]|0;u=c[f+24>>2]|0;r=c[r>>2]|0;y=((y&7|0)!=0&1)+(y>>>3)|0;y=(y|0)==3?4:y;p=c[u+(r*136|0)+8>>2]|0;n=c[u+(r*136|0)>>2]|0;w=p-n|0;t=c[u+(r*136|0)+12>>2]|0;r=c[u+(r*136|0)+4>>2]|0;u=t-r|0;l=c[j+16>>2]|0;q=c[j+40>>2]|0;o=1<>31;l=Iga(l|0,((l|0)<0)<<31>>31|0,-1,-1)|0;l=Iga(l|0,I|0,o|0,x|0)|0;l=zga(l|0,I|0,q|0)|0;s=c[j+20>>2]|0;s=Iga(s|0,((s|0)<0)<<31>>31|0,-1,-1)|0;x=Iga(s|0,I|0,o|0,x|0)|0;q=zga(x|0,I|0,q|0)|0;x=c[m>>2]|0;o=l+x|0;m=c[g>>2]|0;s=q+m|0;if((n|0)<=-1){j=7;break}if((p|0)<=-1){j=9;break}do if(l>>>0>>0){g=n-l|0;if(p>>>0>o>>>0){A=o-n|0;v=0;n=w-A|0;o=g}else{v=0;n=0;o=g;A=w}}else{g=l-n|0;if(p>>>0>o>>>0){v=g;n=p-o|0;o=0;A=x;break}else{v=g;n=0;o=0;A=w-g|0;break}}while(0);do if(q>>>0>>0){m=r-q|0;if(t>>>0>s>>>0){l=s-r|0;z=l;g=0;l=u-l|0}else{z=u;g=0;l=0}}else{g=q-r|0;if(t>>>0>s>>>0){z=m;l=t-s|0;m=0;break}else{z=u-g|0;l=0;m=0;break}}while(0);if((v|n|A|l|g|z|0)<0){h=0;j=65;break}g=(ea(g,w)|0)+v|0;q=v+n|0;r=(ea(l,w)|0)-v|0;p=x-A|0;l=k+((ea(x,m)|0)+o<<2)|0;if((y|0)==2){h=h+(g<<1)|0;g=(z|0)==0;if(!(c[B+32>>2]|0)){if(!g){n=(A|0)==0;o=0;while(1){if(n)g=l;else{g=l+(A<<2)|0;m=0;k=h;while(1){c[l>>2]=e[k>>1];m=m+1|0;if((m|0)==(A|0))break;else{l=l+4|0;k=k+2|0}}h=h+(A<<1)|0}h=h+(q<<1)|0;o=o+1|0;if((o|0)==(z|0))break;else l=g+(p<<2)|0}}}else if(!g){n=(A|0)==0;o=0;while(1){if(n)g=l;else{g=l+(A<<2)|0;m=0;k=h;while(1){c[l>>2]=b[k>>1];m=m+1|0;if((m|0)==(A|0))break;else{l=l+4|0;k=k+2|0}}h=h+(A<<1)|0}h=h+(q<<1)|0;o=o+1|0;if((o|0)==(z|0))break;else l=g+(p<<2)|0}}h=h+(r<<1)|0}else if((y|0)==4){h=h+(g<<2)|0;if(z){n=(A|0)==0;o=0;while(1){if(n)g=l;else{g=l+(A<<2)|0;m=0;k=h;while(1){c[l>>2]=c[k>>2];m=m+1|0;if((m|0)==(A|0))break;else{l=l+4|0;k=k+4|0}}h=h+(A<<2)|0}h=h+(q<<2)|0;o=o+1|0;if((o|0)==(z|0))break;else l=g+(p<<2)|0}}h=h+(r<<2)|0}else if((y|0)==1){h=h+g|0;g=(z|0)==0;if(!(c[B+32>>2]|0)){if(!g){n=(A|0)==0;o=0;while(1){if(n)g=l;else{g=l+(A<<2)|0;m=0;k=h;while(1){c[l>>2]=d[k>>0];m=m+1|0;if((m|0)==(A|0))break;else{l=l+4|0;k=k+1|0}}h=h+A|0}h=h+q|0;o=o+1|0;if((o|0)==(z|0))break;else l=g+(p<<2)|0}}}else if(!g){n=(A|0)==0;o=0;while(1){if(n)g=l;else{g=l+(A<<2)|0;m=0;k=h;while(1){c[l>>2]=a[k>>0];m=m+1|0;if((m|0)==(A|0))break;else{l=l+4|0;k=k+1|0}}h=h+A|0}h=h+q|0;o=o+1|0;if((o|0)==(z|0))break;else l=g+(p<<2)|0}}h=h+r|0}C=C+1|0;if(C>>>0>=(c[D>>2]|0)>>>0){h=1;j=65;break}else{j=j+52|0;B=B+52|0;f=f+44|0}}if((j|0)==7)Sa(248960,244152,7782,248976);else if((j|0)==9)Sa(249008,244152,7783,248976);else if((j|0)==65){i=E;return h|0}return 0}function S$(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;if(!a)Sa(244256,244152,3909,248584);if(!f)Sa(244312,244152,3910,248584);if(!e)Sa(244296,244152,3911,248584);else{ny(b,65424,2);ny(b+2|0,10,2);e=a+196|0;ny(b+4|0,c[e>>2]|0,2);ny(b+10|0,c[a+12>>2]|0,1);ny(b+11|0,c[(c[a+156>>2]|0)+((c[e>>2]|0)*5632|0)+5580>>2]|0,1);c[d>>2]=12;i=g;return}}function T$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=i;if(!a)Sa(244256,244152,2994,247240);if(!e)Sa(244312,244152,2995,247240);s=c[a+196>>2]|0;t=c[a+156>>2]|0;e=c[t+(s*5632|0)+5576>>2]|0;o=c[(c[a+80>>2]|0)+16>>2]|0;p=(c[t+(s*5632|0)+420>>2]|0)+1|0;h=o>>>0<257?1:2;r=ea((h<<1)+5|0,p)|0;q=r+4|0;ny(b,65375,2);ny(b+2|0,r+2|0,2);if(!p){c[d>>2]=q;i=u;return}j=h+1|0;k=h+3|0;l=h|4;m=l+h|0;n=m+1|0;r=t+(s*5632|0)+8|0;f=e+4|0;g=0;a=b+4|0;e=t+(s*5632|0)+424|0;while(1){ny(a,c[e>>2]|0,1);ny(a+1|0,c[e+4>>2]|0,h);v=e+8|0;ny(a+j|0,c[v>>2]|0,2);t=e+12|0;ny(a+k|0,c[t>>2]|0,1);b=e+16|0;ny(a+l|0,c[b>>2]|0,h);ny(a+m|0,c[e+36>>2]|0,1);w=c[v>>2]|0;s=c[r>>2]|0;c[v>>2]=(w|0)<(s|0)?w:s;v=c[t>>2]|0;s=c[f>>2]|0;c[t>>2]=(v|0)<(s|0)?v:s;t=c[b>>2]|0;c[b>>2]=(t|0)<(o|0)?t:o;g=g+1|0;if((g|0)==(p|0))break;else{a=a+n|0;e=e+148|0}}c[d>>2]=q;i=u;return}function U$(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0;j=i;i=i+16|0;if(!a)Sa(244256,244152,4217,248536);if(!h)Sa(244312,244152,4218,248536);if(!g)Sa(244296,244152,4219,248536);ny(d,65427,2);c[b+4>>2]=c[a+8>>2];g=c[a+12>>2]|0;c[b+8>>2]=g;if(!g)c[(c[c[b+20>>2]>>2]|0)+840>>2]=0;c[e>>2]=0;if(!(wB(b,c[a+196>>2]|0,d+2|0,e,f+-4|0,0)|0)){_y(h,1,248560,j)|0;f=0;i=j;return f|0}else{c[e>>2]=(c[e>>2]|0)+2;f=1;i=j;return f|0}return 0}function V$(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;if((ea(c[b+28>>2]|0,c[b+24>>2]|0)|0)>>>0<=f>>>0)Sa(247976,244152,1594,248008);h=c[b+68>>2]|0;if(((c[h+(f*5632|0)+420>>2]|0)+1|0)>>>0<=e>>>0)Sa(248032,244152,1595,248008);if(!(h+(f*5632|0)|0))Sa(248072,244152,1599,248008);g=c[h+(f*5632|0)+4>>2]|0;o=243696;while(1){l=c[o>>2]|0;if((l|0)==-1|(l|0)==(g|0))break;else o=o+12|0}g=a[o+4>>0]|0;if(!(g<<24>>24))Sa(248088,244152,1606,248008);if(!(a[b+89>>0]&8)){p=1;i=q;return p|0}k=d[b+88>>0]|0;l=h+(f*5632|0)+(e*148|0)+516|0;m=h+(f*5632|0)+(e*148|0)+512|0;n=h+(f*5632|0)+(e*148|0)+520|0;j=h+(f*5632|0)+(e*148|0)+508|0;h=g;e=0;g=1;while(1){h=h<<24>>24;if((h|0)==80)g=ea(c[n>>2]|0,g)|0;else if((h|0)==82)g=ea(c[m>>2]|0,g)|0;else if((h|0)==76)g=ea(c[j>>2]|0,g)|0;else if((h|0)==67)g=ea(c[l>>2]|0,g)|0;f=e+1|0;if((k|0)==(h|0))break;if((f|0)>=4){p=22;break}h=a[o+f+4>>0]|0;e=f}if((p|0)==22){i=q;return g|0}c[b+80>>2]=e;p=g;i=q;return p|0}function W$(a){a=a|0;return 0.0}function X$(a){a=a|0;return +(+((((c[a+5580>>2]|0)*14|0)+-14|0)>>>0))}function Y$(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;h=ea(c[a+116>>2]|0,c[a+112>>2]|0)|0;j=c[(c[a+80>>2]|0)+16>>2]|0;if(!h){h=0;h=h+6|0;i=k;return h|0}g=(j|0)==0;e=a+156|0;f=0;a=0;a:while(1){if(!g){d=0;do{b=c[(c[e>>2]|0)+(f*5632|0)+5576>>2]|0;if(h>>>0<=f>>>0){b=5;break a}if(j>>>0<=d>>>0){b=7;break a}if(!(c[b+(d*1080|0)>>2]&1))b=5;else b=(c[b+(d*1080|0)+4>>2]|0)+5|0;a=a>>>0>b>>>0?a:b;d=d+1|0}while(d>>>0>>0)}f=f+1|0;if(f>>>0>=h>>>0){b=12;break}}if((b|0)==5)Sa(246712,244152,8212,246680);else if((b|0)==7)Sa(246752,244152,8213,246680);else if((b|0)==12){h=a+6|0;i=k;return h|0}return 0}function Z$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;h=i;g=a+52|0;f=c[g>>2]|0;do if((b+1|0)>>>0>f>>>0){j=f+10|0;c[g>>2]=j;f=a+4|0;a=Dfa(c[f>>2]|0,j<<5)|0;if(a){c[f>>2]=a;break}Bfa(c[f>>2]|0);c[f>>2]=0;c[g>>2]=0;b=0;i=h;return b|0}else a=c[a+4>>2]|0;while(0);g=a+(b<<5)|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;c[g+28>>2]=0;if(d&4){c[a+(b<<5)+20>>2]=1;b=1;i=h;return b|0}if(!(d&1)){c[a+(b<<5)+20>>2]=109;b=1;i=h;return b|0}if(e){c[a+(b<<5)+20>>2]=10;b=1;i=h;return b|0}f=c[a+(b+-1<<5)+20>>2]|0;if((f|0)==1)f=2;else f=(f|0)==10?2:1;c[a+(b<<5)+20>>2]=f;b=1;i=h;return b|0}function _$(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+1024|0;o=p;if((c[a+220>>2]|0)!=(b|0)){c[a+248>>2]=272200;a=-2;i=p;return a|0}b=c[g>>2]|0;h=c[e>>2]|0;m=a+224|0;c[m>>2]=d;k=a+228|0;c[k>>2]=0;n=a+240|0;c[n>>2]=0;l=(f|0)==0;j=a+236|0;if(!l)c[j>>2]=f;d=0;f=0;while(1){c[k>>2]=d+h;d=f+b|0;if(l){c[j>>2]=o;b=1024}else b=-1;f=d>>>0>>0?d:b;c[n>>2]=f;b=d-f|0;f=jI(m,(d|0)==(f|0)?4:0)|0;if(f)break;d=c[k>>2]|0;f=c[n>>2]|0;h=0}if(l)c[j>>2]=0;d=c[k>>2]|0;b=(c[n>>2]|0)+b|0;if(b)c[g>>2]=(c[g>>2]|0)-b;if(d)c[e>>2]=(c[e>>2]|0)-d;XB(a,f);a=f;i=p;return a|0}function $$(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;j=c[a+408>>2]|0;g=a+224|0;if(c[g>>2]|0){h=j+68|0;f=c[h>>2]|0;if(!f){u=j+72|0;r2(a,c[u>>2]|0);f=c[g>>2]|0;c[h>>2]=f;c[u>>2]=(c[u>>2]|0)+1&7}c[h>>2]=f+-1}r=a+304|0;if((c[r>>2]|0)<=0){i=v;return 1}s=a+360|0;t=j+76|0;u=j+52|0;p=j+36|0;q=0;do{k=c[a+(q<<2)+308>>2]|0;n=c[(c[a+(k<<2)+280>>2]|0)+20>>2]|0;f=b[c[e+(q<<2)>>2]>>1]>>c[s>>2];m=t+(n<<2)|0;l=c[m>>2]|0;o=u+(k<<2)|0;g=c[o>>2]|0;h=l+g|0;k=p+(k<<2)|0;w=c[k>>2]|0;j=f-w|0;if((f|0)!=(w|0)){c[k>>2]=f;s2(a,h,1);if((j|0)>0){s2(a,l+(g+1)|0,0);f=g+2|0;g=4}else{s2(a,l+(g+1)|0,1);f=g+3|0;g=8;j=0-j|0}f=l+f|0;c[o>>2]=g;l=j+-1|0;if(l){s2(a,f,1);g=(c[m>>2]|0)+20|0;f=l>>1;if(!f){h=1;f=g}else{j=1;do{s2(a,g,1);j=j<<1;g=g+1|0;f=f>>1}while((f|0)!=0);h=j;f=g}}else h=0;s2(a,f,0);if((h|0)>=(1<>0]>>1|0)){if((h|0)>(1<>0]>>1|0))c[o>>2]=(c[o>>2]|0)+8}else c[o>>2]=0;j=f+14|0;f=h>>1;if(f)do{s2(a,j,(f&l|0)!=0&1);f=f>>1}while((f|0)!=0)}else{s2(a,h,0);c[o>>2]=0}q=q+1|0}while((q|0)<(c[r>>2]|0));i=v;return 1}function a0(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;u=c[a+408>>2]|0;g=a+224|0;if(c[g>>2]|0){h=u+68|0;f=c[h>>2]|0;if(!f){t=u+72|0;r2(a,c[t>>2]|0);f=c[g>>2]|0;c[h>>2]=f;c[t>>2]=(c[t>>2]|0)+1&7}c[h>>2]=f+-1}s=c[a+368>>2]|0;p=c[e>>2]|0;t=c[(c[a+280>>2]|0)+24>>2]|0;q=a+352|0;g=c[q>>2]|0;r=a+360|0;e=g;while(1){o=b[p+(c[s+(e<<2)>>2]<<1)>>1]|0;f=o<<16>>16;if(o<<16>>16>-1){if(f>>c[r>>2])break}else if(0-f>>c[r>>2])break;e=e+-1|0;if(!e){e=0;break}}o=c[a+348>>2]|0;f=o+-1|0;if((o|0)<=(e|0)){m=u+140+(t<<2)|0;n=u+204|0;o=a+t+184|0;do{k=(c[m>>2]|0)+(f*3|0)|0;s2(a,k,0);l=f;while(1){f=l+1|0;j=b[p+(c[s+(f<<2)>>2]<<1)>>1]|0;g=j<<16>>16;if(j<<16>>16>-1){g=g>>c[r>>2];if(g){j=16;break}}else{g=0-g>>c[r>>2];if(g){j=18;break}}s2(a,k+1|0,0);l=f;k=k+3|0}if((j|0)==16){s2(a,k+1|0,1);s2(a,n,0);h=g}else if((j|0)==18){s2(a,k+1|0,1);s2(a,n,1);h=g}g=k+2|0;k=h+-1|0;if(k){s2(a,g,1);if(k>>>0>=2){s2(a,g,1);j=(c[m>>2]|0)+((l|0)<(d[o>>0]|0|0)?189:217)|0;g=k>>2;if(!g){h=2;g=j}else{h=2;do{s2(a,j,1);h=h<<1;j=j+1|0;g=g>>1}while((g|0)!=0);g=j}}else h=1}else h=0;s2(a,g,0);j=g+14|0;g=h>>1;if(g)do{s2(a,j,(g&k|0)!=0&1);g=g>>1}while((g|0)!=0)}while((f|0)<(e|0));g=c[q>>2]|0}if((f|0)>=(g|0)){i=v;return 1}s2(a,(c[u+140+(t<<2)>>2]|0)+(f*3|0)|0,1);i=v;return 1}function b0(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;h=c[a+408>>2]|0;f=a+224|0;if(c[f>>2]|0){g=h+68|0;e=c[g>>2]|0;if(!e){k=h+72|0;r2(a,c[k>>2]|0);e=c[f>>2]|0;c[g>>2]=e;c[k>>2]=(c[k>>2]|0)+1&7}c[g>>2]=e+-1}e=h+204|0;f=c[a+360>>2]|0;g=a+304|0;if((c[g>>2]|0)>0)h=0;else{i=j;return 1}do{s2(a,e,(b[c[d+(h<<2)>>2]>>1]|0)>>>f&1);h=h+1|0}while((h|0)<(c[g>>2]|0));i=j;return 1}function c0(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;r=c[a+408>>2]|0;f=a+224|0;if(c[f>>2]|0){g=r+68|0;e=c[g>>2]|0;if(!e){q=r+72|0;r2(a,c[q>>2]|0);e=c[f>>2]|0;c[g>>2]=e;c[q>>2]=(c[q>>2]|0)+1&7}c[g>>2]=e+-1}p=c[a+368>>2]|0;m=c[d>>2]|0;q=c[(c[a+280>>2]|0)+24>>2]|0;n=a+352|0;f=c[n>>2]|0;o=a+360|0;e=f;while(1){k=b[m+(c[p+(e<<2)>>2]<<1)>>1]|0;d=k<<16>>16;if(k<<16>>16>-1){if(d>>c[o>>2]){l=10;break}}else if(0-d>>c[o>>2]){l=10;break}e=e+-1|0;if(!e){k=0;d=0;break}}a:do if((l|0)==10){g=a+356|0;if((e|0)>0){h=e;while(1){k=b[m+(c[p+(h<<2)>>2]<<1)>>1]|0;d=k<<16>>16;if(k<<16>>16>-1){if(d>>c[g>>2]){k=e;d=h;break a}}else if(0-d>>c[g>>2]){k=e;d=h;break a}d=h+-1|0;if((d|0)>0)h=d;else{k=e;break}}}else{k=e;d=e}}while(0);h=c[a+348>>2]|0;e=h+-1|0;if((h|0)<=(k|0)){h=r+140+(q<<2)|0;j=r+204|0;do{f=(c[h>>2]|0)+(e*3|0)|0;if((e|0)>=(d|0))s2(a,f,0);while(1){e=e+1|0;l=b[m+(c[p+(e<<2)>>2]<<1)>>1]|0;g=l<<16>>16;if(l<<16>>16>-1){g=g>>c[o>>2];if(g){l=21;break}}else{g=0-g>>c[o>>2];if(g){l=25;break}}s2(a,f+1|0,0);f=f+3|0}do if((l|0)==21)if(g>>>0>1){s2(a,f+2|0,g&1);break}else{s2(a,f+1|0,1);s2(a,j,0);break}else if((l|0)==25)if(g>>>0>1){s2(a,f+2|0,g&1);break}else{s2(a,f+1|0,1);s2(a,j,1);break}while(0)}while((e|0)<(k|0));f=c[n>>2]|0}if((e|0)>=(f|0)){i=s;return 1}s2(a,(c[r+140+(q<<2)>>2]|0)+(e*3|0)|0,1);i=s;return 1}function d0(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=i;j=c[a+408>>2]|0;g=a+224|0;if(c[g>>2]|0){h=j+68|0;f=c[h>>2]|0;if(!f){z=j+72|0;r2(a,c[z>>2]|0);f=c[g>>2]|0;c[h>>2]=f;c[z>>2]=(c[z>>2]|0)+1&7}c[h>>2]=f+-1}t=c[a+368>>2]|0;u=a+304|0;if((c[u>>2]|0)<=0){i=B;return 1}v=j+76|0;w=j+52|0;x=j+36|0;y=a+372|0;z=j+140|0;r=j+204|0;s=0;do{q=c[e+(s<<2)>>2]|0;k=c[a+(s<<2)+308>>2]|0;p=c[a+(k<<2)+280>>2]|0;n=c[p+20>>2]|0;m=v+(n<<2)|0;l=c[m>>2]|0;o=w+(k<<2)|0;f=c[o>>2]|0;g=l+f|0;h=b[q>>1]|0;k=x+(k<<2)|0;C=c[k>>2]|0;j=h-C|0;if((h|0)!=(C|0)){c[k>>2]=h;s2(a,g,1);if((j|0)>0){s2(a,l+(f+1)|0,0);f=f+2|0;g=4}else{s2(a,l+(f+1)|0,1);f=f+3|0;g=8;j=0-j|0}f=l+f|0;c[o>>2]=g;l=j+-1|0;if(l){s2(a,f,1);g=(c[m>>2]|0)+20|0;f=l>>1;if(!f){h=1;f=g}else{j=1;do{s2(a,g,1);j=j<<1;g=g+1|0;f=f>>1}while((f|0)!=0);h=j;f=g}}else h=0;s2(a,f,0);if((h|0)>=(1<>0]>>1|0)){if((h|0)>(1<>0]>>1|0))c[o>>2]=(c[o>>2]|0)+8}else c[o>>2]=0;j=f+14|0;f=h>>1;if(f)do{s2(a,j,(f&l|0)!=0&1);f=f>>1}while((f|0)!=0)}else{s2(a,g,0);c[o>>2]=0}j=c[y>>2]|0;if(j){p=c[p+24>>2]|0;m=j;while(1){if(b[q+(c[t+(m<<2)>>2]<<1)>>1]|0){A=25;break}f=m+-1|0;if(!f){f=0;break}else m=f}if((A|0)==25){A=0;if((m|0)>0){n=z+(p<<2)|0;o=a+p+184|0;l=0;while(1){C=c[n>>2]|0;k=l*3|0;h=C+k|0;s2(a,h,0);f=l+1|0;j=b[q+(c[t+(f<<2)>>2]<<1)>>1]|0;g=j<<16>>16;k=C+(k+1)|0;if(!(j<<16>>16)){l=f;while(1){s2(a,k,0);C=h;h=h+3|0;f=l+1|0;g=b[q+(c[t+(f<<2)>>2]<<1)>>1]|0;k=C+4|0;if(g<<16>>16)break;else l=f}j=g;g=g<<16>>16}s2(a,k,1);if(j<<16>>16>0)s2(a,r,0);else{s2(a,r,1);g=0-g|0}j=h+2|0;k=g+-1|0;if(k){s2(a,j,1);if(k>>>0>=2){s2(a,j,1);h=(c[n>>2]|0)+((l|0)<(d[o>>0]|0)?189:217)|0;j=k>>2;if(!j){g=2;j=h}else{g=2;do{s2(a,h,1);g=g<<1;h=h+1|0;j=j>>1}while((j|0)!=0);j=h}}else g=1}else g=0;s2(a,j,0);h=j+14|0;j=g>>1;if(j)do{s2(a,h,(j&k|0)!=0&1);j=j>>1}while((j|0)!=0);if((f|0)<(m|0))l=f;else break}j=c[y>>2]|0}else f=0}if((f|0)<(j|0))s2(a,(c[z+(p<<2)>>2]|0)+(f*3|0)|0,1)}s=s+1|0}while((s|0)<(c[u>>2]|0));i=B;return 1}function e0(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=i;K=a+388|0;f=c[K>>2]|0;D=(c[a+296>>2]|0)+-1|0;L=a+272|0;F=(c[L>>2]|0)+-1|0;H=f+16|0;h=c[H>>2]|0;A=f+20|0;e=c[A>>2]|0;do if((h|0)<(e|0)){B=f+12|0;g=a+276|0;C=a+404|0;J=f+8|0;y=f+24|0;z=a+408|0;f=c[B>>2]|0;a:while(1){if(f>>>0<=D>>>0){x=f;while(1){e=c[g>>2]|0;if((e|0)>0)if(x>>>0>>0){f=0;w=0;do{o=c[a+(w<<2)+280>>2]|0;p=o+4|0;q=c[(c[C>>2]|0)+(c[p>>2]<<2)+4>>2]|0;r=o+56|0;s=c[r>>2]|0;t=ea(c[o+68>>2]|0,x)|0;u=o+40|0;v=o+60|0;if((c[v>>2]|0)>0){n=o+76|0;e=s;l=0;m=ea(c[u>>2]|0,h)|0;while(1){if((c[J>>2]|0)>>>0>=F>>>0?(l+h|0)>=(c[n>>2]|0):0){Cga(c[y+(f<<2)>>2]|0,0,e<<7|0)|0;e=c[r>>2]|0;if((e|0)>0){j=c[y+(f+-1<<2)>>2]|0;k=0;do{b[c[y+(k+f<<2)>>2]>>1]=b[j>>1]|0;k=k+1|0}while((k|0)<(e|0))}}else I=14;if(((I|0)==14?(I=0,Td[q&63](a,o,c[d+(c[p>>2]<<2)>>2]|0,c[y+(f<<2)>>2]|0,m,t,s),E=c[r>>2]|0,(E|0)>(s|0)):0)?(Cga(c[y+(f+s<<2)>>2]|0,0,E-s<<7|0)|0,G=c[r>>2]|0,(s|0)<(G|0)):0){e=s;do{j=e+f|0;b[c[y+(j<<2)>>2]>>1]=b[c[y+(j+-1<<2)>>2]>>1]|0;e=e+1|0}while((e|0)<(G|0))}e=c[r>>2]|0;f=e+f|0;l=l+1|0;if((l|0)>=(c[v>>2]|0))break;else m=(c[u>>2]|0)+m|0}e=c[g>>2]|0}w=w+1|0}while((w|0)<(e|0))}else{f=0;w=0;do{v=c[a+(w<<2)+280>>2]|0;o=v+4|0;p=c[(c[C>>2]|0)+(c[o>>2]<<2)+4>>2]|0;q=v+56|0;r=c[v+72>>2]|0;s=ea(c[v+68>>2]|0,x)|0;t=v+40|0;u=v+60|0;if((c[u>>2]|0)>0){l=v+76|0;m=0;n=ea(c[t>>2]|0,h)|0;while(1){if((c[J>>2]|0)>>>0>=F>>>0?(m+h|0)>=(c[l>>2]|0):0){Cga(c[y+(f<<2)>>2]|0,0,c[q>>2]<<7|0)|0;e=c[q>>2]|0;if((e|0)>0){j=c[y+(f+-1<<2)>>2]|0;k=0;do{b[c[y+(k+f<<2)>>2]>>1]=b[j>>1]|0;k=k+1|0}while((k|0)<(e|0))}}else{Td[p&63](a,v,c[d+(c[o>>2]<<2)>>2]|0,c[y+(f<<2)>>2]|0,n,s,r);e=c[q>>2]|0;if((e|0)>(r|0)){Cga(c[y+(f+r<<2)>>2]|0,0,e-r<<7|0)|0;e=c[q>>2]|0;if((r|0)<(e|0)){j=r;do{k=j+f|0;b[c[y+(k<<2)>>2]>>1]=b[c[y+(k+-1<<2)>>2]>>1]|0;j=j+1|0}while((j|0)<(e|0))}}}f=e+f|0;m=m+1|0;if((m|0)>=(c[u>>2]|0))break;else n=(c[t>>2]|0)+n|0}e=c[g>>2]|0}w=w+1|0}while((w|0)<(e|0))}e=x+1|0;if(!((Wd[c[(c[z>>2]|0)+4>>2]&511](a,y)|0)<<24>>24))break a;if(e>>>0>D>>>0)break;else x=e}e=c[A>>2]|0}c[B>>2]=0;h=h+1|0;if((h|0)<(e|0))f=0;else{I=38;break}}if((I|0)==38){h=J;e=J;f=c[K>>2]|0;break}c[H>>2]=h;c[B>>2]=x;K=0;i=M;return K|0}else{e=f+8|0;h=e;g=a+276|0}while(0);c[e>>2]=(c[h>>2]|0)+1;do if((c[g>>2]|0)<=1){e=c[a+280>>2]|0;if((c[f+8>>2]|0)>>>0<((c[L>>2]|0)+-1|0)>>>0){c[f+20>>2]=c[e+12>>2];break}else{c[f+20>>2]=c[e+76>>2];break}}else c[f+20>>2]=1;while(0);c[f+12>>2]=0;c[f+16>>2]=0;K=1;i=M;return K|0}function f0(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;e=c[a+388>>2]|0;B=(c[a+272>>2]|0)+-1|0;C=a+76|0;if((c[C>>2]|0)<=0){a=g0(a,d)|0;i=F;return a|0}z=a+4|0;A=e+64|0;s=e+8|0;t=a+404|0;x=0;y=c[a+84>>2]|0;while(1){u=y+12|0;v=c[u>>2]|0;e=ea(v,c[s>>2]|0)|0;v=Xd[c[(c[z>>2]|0)+32>>2]&127](a,c[A+(x<<2)>>2]|0,e,v,1)|0;e=c[s>>2]|0;if(e>>>0>>0)k=c[u>>2]|0;else{w=c[u>>2]|0;k=((c[y+32>>2]|0)>>>0)%(w>>>0)|0;k=(k|0)==0?w:k}r=c[y+28>>2]|0;w=c[y+8>>2]|0;q=(r>>>0)%(w>>>0)|0;q=(q|0)>0?w-q|0:q;p=c[(c[t>>2]|0)+(x<<2)+4>>2]|0;if((k|0)>0){h=d+(x<<2)|0;f=y+40|0;g=(q|0)>0;j=q<<7;e=r+-1|0;o=0;do{l=c[v+(o<<2)>>2]|0;n=ea(c[f>>2]|0,o)|0;Td[p&63](a,y,c[h>>2]|0,l,n,0,r);if(g){Cga(l+(r<<7)|0,0,j|0)|0;m=b[l+(e<<7)>>1]|0;n=0;do{b[l+(n+r<<7)>>1]=m;n=n+1|0}while((n|0)!=(q|0))}o=o+1|0}while((o|0)!=(k|0));e=c[s>>2]|0}if((e|0)==(B|0)?(D=q+r|0,E=(D>>>0)/(w>>>0)|0,(k|0)<(c[u>>2]|0)):0){m=D<<7;l=(E|0)==0;n=w+-1|0;o=(w|0)>0;do{f=c[v+(k<<2)>>2]|0;e=c[v+(k+-1<<2)>>2]|0;Cga(f|0,0,m|0)|0;if(!l){j=0;while(1){g=b[e+(n<<7)>>1]|0;if(o){h=0;do{b[f+(h<<7)>>1]=g;h=h+1|0}while((h|0)!=(w|0))}j=j+1|0;if(j>>>0>=E>>>0)break;else{e=e+(w<<7)|0;f=f+(w<<7)|0}}}k=k+1|0}while((k|0)<(c[u>>2]|0))}x=x+1|0;if((x|0)>=(c[C>>2]|0))break;else y=y+88|0}a=g0(a,d)|0;i=F;return a|0}function g0(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;z=D;A=a+388|0;B=c[A>>2]|0;y=a+276|0;b=c[y>>2]|0;if((b|0)>0){d=a+4|0;e=B+64|0;f=B+8|0;g=0;do{w=c[a+(g<<2)+280>>2]|0;b=c[w+12>>2]|0;x=ea(b,c[f>>2]|0)|0;c[z+(g<<2)>>2]=Xd[c[(c[d>>2]|0)+32>>2]&127](a,c[e+(c[w+4>>2]<<2)>>2]|0,x,b,0)|0;g=g+1|0;b=c[y>>2]|0}while((g|0)<(b|0))}w=B+16|0;d=c[w>>2]|0;x=B+20|0;f=c[x>>2]|0;do if((d|0)<(f|0)){s=B+12|0;t=a+296|0;u=a+408|0;v=B+24|0;e=c[s>>2]|0;b=c[t>>2]|0;a:while(1){if(e>>>0>>0){while(1){q=c[y>>2]|0;if((q|0)>0){b=0;r=0;do{n=c[a+(r<<2)+280>>2]|0;l=c[n+56>>2]|0;m=ea(l,e)|0;n=c[n+60>>2]|0;if((n|0)>0){o=c[z+(r<<2)>>2]|0;p=(l|0)>0;k=0;do{if(p){h=(l|0)>1?l:1;f=b;g=(c[o+(k+d<<2)>>2]|0)+(m<<7)|0;j=0;while(1){c[v+(f<<2)>>2]=g;j=j+1|0;if((j|0)>=(l|0))break;else{f=f+1|0;g=g+128|0}}b=b+h|0}k=k+1|0}while((k|0)<(n|0))}r=r+1|0}while((r|0)<(q|0))}f=e+1|0;if(!((Wd[c[(c[u>>2]|0)+4>>2]&511](a,v)|0)<<24>>24))break a;b=c[t>>2]|0;if(f>>>0>>0)e=f;else break}f=c[x>>2]|0}c[s>>2]=0;d=d+1|0;if((d|0)<(f|0))e=0;else{C=21;break}}if((C|0)==21){b=c[y>>2]|0;break}c[w>>2]=d;c[s>>2]=e;C=0;i=D;return C|0}while(0);d=B+8|0;c[d>>2]=(c[d>>2]|0)+1;d=c[A>>2]|0;do if((b|0)<=1){b=c[a+280>>2]|0;if((c[d+8>>2]|0)>>>0<((c[a+272>>2]|0)+-1|0)>>>0){c[d+20>>2]=c[b+12>>2];break}else{c[d+20>>2]=c[b+76>>2];break}}else c[d+20>>2]=1;while(0);c[d+12>>2]=0;c[d+16>>2]=0;C=1;i=D;return C|0}function h0(a,d,e,f,g,h,j){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+256|0;p=q;n=c[(c[a+404>>2]|0)+44+(c[d+4>>2]<<2)>>2]|0;o=c[d+84>>2]|0;m=e+(g<<2)|0;if(!j){i=q;return}l=d+36|0;g=0;while(1){$d[n&255](p,m,h);k=0;do{e=c[o+(k<<2)>>2]|0;a=c[p+(k<<2)>>2]|0;d=e>>1;if((a|0)>=0){a=a+d|0;if((a|0)<(e|0))a=0;else a=(a|0)/(e|0)|0}else{a=d-a|0;if((a|0)<(e|0))a=0;else a=(a|0)/(e|0)|0;a=0-a|0}b[f+(g<<7)+(k<<1)>>1]=a;k=k+1|0}while((k|0)!=64);g=g+1|0;if((g|0)==(j|0))break;else h=(c[l>>2]|0)+h|0}i=q;return}function i0(a,d,e,f,h,j,k){a=a|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0;p=i;i=i+256|0;o=p;m=c[(c[a+404>>2]|0)+84+(c[d+4>>2]<<2)>>2]|0;n=c[d+84>>2]|0;l=e+(h<<2)|0;if(!k){i=p;return}d=d+36|0;a=j;e=0;while(1){$d[m&255](o,l,a);h=0;do{b[f+(e<<7)+(h<<1)>>1]=~~(+g[o+(h<<2)>>2]*+g[n+(h<<2)>>2]+16384.5)+49152;h=h+1|0}while((h|0)!=64);e=e+1|0;if((e|0)==(k|0))break;else a=(c[d>>2]|0)+a|0}i=p;return}function j0(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;t=u+4|0;s=u;d=c[b+408>>2]|0;if(a[b+252>>0]|0)t2(d);c[t>>2]=0;c[s>>2]=0;p=b+276|0;if((c[p>>2]|0)<=0){i=u;return}q=b+348|0;r=b+356|0;j=d+76|0;k=b+352|0;g=d+92|0;h=0;do{f=c[b+(h<<2)+280>>2]|0;if(((c[q>>2]|0)==0?(c[r>>2]|0)==0:0)?(l=c[f+20>>2]|0,m=t+l|0,(a[m>>0]|0)==0):0){e=b+(l<<2)+120|0;d=c[e>>2]|0;if(!d){d=PF(b)|0;c[e>>2]=d}u2(b,d,c[j+(l<<2)>>2]|0);a[m>>0]=1}if((c[k>>2]|0)!=0?(n=c[f+24>>2]|0,o=s+n|0,(a[o>>0]|0)==0):0){e=b+(n<<2)+136|0;d=c[e>>2]|0;if(!d){d=PF(b)|0;c[e>>2]=d}u2(b,d,c[g+(n<<2)>>2]|0);a[o>>0]=1}h=h+1|0}while((h|0)<(c[p>>2]|0));i=u;return}function k0(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+16|0;q=r;g=c[b+408>>2]|0;p=b+24|0;d=c[p>>2]|0;h=c[d>>2]|0;if(a[b+252>>0]|0){n=g+112|0;c[n>>2]=h;o=g+116|0;c[o>>2]=c[d+4>>2];t2(g);v2(g,127,7);c[g+12>>2]=0;c[g+16>>2]=0;q=c[p>>2]|0;c[q>>2]=c[n>>2];c[q+4>>2]=c[o>>2];i=r;return}j=c[d+4>>2]|0;n=g+12|0;f=c[n>>2]|0;o=g+16|0;e=c[o>>2]|0;m=g+20|0;c[q+0>>2]=c[m+0>>2];c[q+4>>2]=c[m+4>>2];c[q+8>>2]=c[m+8>>2];c[q+12>>2]=c[m+12>>2];a:do if((e|0)>0){d=h;g=j;k=e+7|0;l=127<<17-e|f;while(1){s=l>>>16;h=s&255;j=d+1|0;a[d>>0]=s;g=g+-1|0;if(!g){d=c[p>>2]|0;if(!((Ld[c[d+12>>2]&511](b)|0)<<24>>24)){d=j;break}j=c[d>>2]|0;g=c[d+4>>2]|0}if((h|0)==255){d=j+1|0;a[j>>0]=0;g=g+-1|0;if(!g){j=c[p>>2]|0;if(!((Ld[c[j+12>>2]&511](b)|0)<<24>>24))break;g=c[j+4>>2]|0;d=c[j>>2]|0}}else d=j;k=k+-8|0;if((k|0)<=7){f=0;e=0;break a}else l=l<<8}g=c[b>>2]|0;c[g+20>>2]=25;Id[c[g>>2]&511](b);g=0}else{d=h;g=j;f=0;e=0}while(0);s=c[p>>2]|0;c[s>>2]=d;c[s+4>>2]=g;c[n>>2]=f;c[o>>2]=e;c[m+0>>2]=c[q+0>>2];c[m+4>>2]=c[q+4>>2];c[m+8>>2]=c[q+8>>2];c[m+12>>2]=c[q+12>>2];i=r;return}function l0(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;u=c[d+408>>2]|0;l=d+24|0;s=c[l>>2]|0;q=u+112|0;c[q>>2]=c[s>>2];r=u+116|0;c[r>>2]=c[s+4>>2];s=d+224|0;if((c[s>>2]|0)!=0?(c[u+36>>2]|0)==0:0)w2(u,c[u+40>>2]|0);k=d+304|0;if((c[k>>2]|0)>0){m=d+360|0;n=u+20|0;o=u+108|0;t=0;do{h=c[d+(t<<2)+308>>2]|0;p=c[(c[d+(h<<2)+280>>2]|0)+20>>2]|0;g=b[c[e+(t<<2)>>2]>>1]>>c[m>>2];h=n+(h<<2)|0;f=g-(c[h>>2]|0)|0;c[h>>2]=g;if((f|0)<0){g=0-f|0;j=f+-1|0}else{g=f;j=f}if(g){h=0;while(1){f=h+1|0;g=g>>1;if(!g)break;else h=f}if((h|0)>10){h=c[d>>2]|0;c[h+20>>2]=6;Id[c[h>>2]&511](d)}}else f=0;if(!(a[o>>0]|0)){p=c[u+(p<<2)+44>>2]|0;v2(u,c[p+(f<<2)>>2]|0,a[p+f+1024>>0]|0)}else{p=(c[u+(p<<2)+76>>2]|0)+(f<<2)|0;c[p>>2]=(c[p>>2]|0)+1}if(f)v2(u,j,f);t=t+1|0}while((t|0)<(c[k>>2]|0))}g=c[l>>2]|0;c[g>>2]=c[q>>2];c[g+4>>2]=c[r>>2];g=c[s>>2]|0;if(!g){i=v;return 1}h=u+36|0;f=c[h>>2]|0;if(!f){c[h>>2]=g;f=u+40|0;c[f>>2]=(c[f>>2]|0)+1&7;f=g}c[h>>2]=f+-1;i=v;return 1}function m0(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;w=c[d+408>>2]|0;q=d+24|0;v=c[q>>2]|0;t=w+112|0;c[t>>2]=c[v>>2];u=w+116|0;c[u>>2]=c[v+4>>2];v=d+224|0;if((c[v>>2]|0)!=0?(c[w+36>>2]|0)==0:0)w2(w,c[w+40>>2]|0);p=c[d+352>>2]|0;r=c[d+360>>2]|0;s=c[d+368>>2]|0;l=c[e>>2]|0;e=c[d+348>>2]|0;if((e|0)<=(p|0)){m=w+128|0;n=w+124|0;o=w+108|0;f=0;while(1){g=b[l+(c[s+(e<<2)>>2]<<1)>>1]|0;h=g<<16>>16;do if(!(g<<16>>16))f=f+1|0;else{if(g<<16>>16<0){k=0-h>>r;h=k;k=~k}else{k=h>>r;h=k}if(!h){f=f+1|0;break}if(c[m>>2]|0)t2(w);if((f|0)>15){j=f;do{g=c[n>>2]|0;if(!(a[o>>0]|0)){g=c[w+(g<<2)+60>>2]|0;v2(w,c[g+960>>2]|0,a[g+1264>>0]|0)}else{g=(c[w+(g<<2)+92>>2]|0)+960|0;c[g>>2]=(c[g>>2]|0)+1}j=j+-16|0}while((j|0)>15);f=f&15}j=1;while(1){h=h>>1;if(!h)break;else j=j+1|0}if((j|0)>10){g=c[d>>2]|0;c[g+20>>2]=6;Id[c[g>>2]&511](d)}g=c[n>>2]|0;h=j+(f<<4)|0;if(!(a[o>>0]|0)){g=c[w+(g<<2)+60>>2]|0;v2(w,c[g+(h<<2)>>2]|0,a[g+h+1024>>0]|0)}else{g=(c[w+(g<<2)+92>>2]|0)+(h<<2)|0;c[g>>2]=(c[g>>2]|0)+1}v2(w,k,j);f=0}while(0);if((e|0)<(p|0))e=e+1|0;else break}if((f|0)>0?(s=w+128|0,d=(c[s>>2]|0)+1|0,c[s>>2]=d,(d|0)==32767):0)t2(w)}f=c[q>>2]|0;c[f>>2]=c[t>>2];c[f+4>>2]=c[u>>2];f=c[v>>2]|0;if(!f){i=x;return 1}g=w+36|0;e=c[g>>2]|0;if(!e){c[g>>2]=f;e=w+40|0;c[e>>2]=(c[e>>2]|0)+1&7;e=f}c[g>>2]=e+-1;i=x;return 1}function n0(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;l=c[a+408>>2]|0;g=a+24|0;k=c[g>>2]|0;h=l+112|0;c[h>>2]=c[k>>2];j=l+116|0;c[j>>2]=c[k+4>>2];k=a+224|0;if((c[k>>2]|0)!=0?(c[l+36>>2]|0)==0:0)w2(l,c[l+40>>2]|0);f=c[a+360>>2]|0;a=a+304|0;if((c[a>>2]|0)>0){e=0;do{v2(l,b[c[d+(e<<2)>>2]>>1]>>f,1);e=e+1|0}while((e|0)<(c[a>>2]|0))}e=c[g>>2]|0;c[e>>2]=c[h>>2];c[e+4>>2]=c[j>>2];e=c[k>>2]|0;if(!e){i=m;return 1}f=l+36|0;a=c[f>>2]|0;if(!a){c[f>>2]=e;a=l+40|0;c[a>>2]=(c[a>>2]|0)+1&7;a=e}c[f>>2]=a+-1;i=m;return 1}function o0(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+256|0;u=A;z=c[d+408>>2]|0;v=d+24|0;y=c[v>>2]|0;w=z+112|0;c[w>>2]=c[y>>2];x=z+116|0;c[x>>2]=c[y+4>>2];y=d+224|0;if((c[y>>2]|0)!=0?(c[z+36>>2]|0)==0:0)w2(z,c[z+40>>2]|0);s=c[d+352>>2]|0;g=c[d+360>>2]|0;t=c[d+368>>2]|0;r=c[f>>2]|0;h=c[d+348>>2]|0;d=(h|0)>(s|0);if(!d){q=0;f=h;while(1){o=b[r+(c[t+(f<<2)>>2]<<1)>>1]|0;p=o<<16>>16;p=(o<<16>>16<0?0-p|0:p)>>g;c[u+(f<<2)>>2]=p;q=(p|0)==1?f:q;if((f|0)>=(s|0))break;else f=f+1|0}o=z+136|0;p=z+132|0;if(d){d=p;h=p;g=0;f=0}else{m=z+124|0;n=z+108|0;g=0;d=(c[o>>2]|0)+(c[p>>2]|0)|0;f=0;while(1){l=c[u+(h<<2)>>2]|0;do if(!l)f=f+1|0;else{if(!((f|0)<16|(h|0)>(q|0)))while(1){t2(z);j=c[m>>2]|0;k=a[n>>0]|0;if(!(k<<24>>24)){k=c[z+(j<<2)+60>>2]|0;v2(z,c[k+960>>2]|0,a[k+1264>>0]|0);k=a[n>>0]|0}else{j=(c[z+(j<<2)+92>>2]|0)+960|0;c[j>>2]=(c[j>>2]|0)+1}f=f+-16|0;if(k<<24>>24==0&(g|0)!=0)while(1){v2(z,a[d>>0]|0,1);g=g+-1|0;if(!g)break;else d=d+1|0}d=c[o>>2]|0;if((f|0)<16){g=0;break}else g=0}if((l|0)>1){a[d+g>>0]=l&1;g=g+1|0;break}t2(z);j=c[m>>2]|0;f=f<<4|1;if(!(a[n>>0]|0)){l=c[z+(j<<2)+60>>2]|0;v2(z,c[l+(f<<2)>>2]|0,a[l+f+1024>>0]|0)}else{l=(c[z+(j<<2)+92>>2]|0)+(f<<2)|0;c[l>>2]=(c[l>>2]|0)+1}v2(z,(e[r+(c[t+(h<<2)>>2]<<1)>>1]|0)>>>15&65535^1,1);if((a[n>>0]|0)==0&(g|0)!=0){f=d;while(1){v2(z,a[f>>0]|0,1);g=g+-1|0;if(!g)break;else f=f+1|0}}g=0;d=c[o>>2]|0;f=0}while(0);if((h|0)<(s|0))h=h+1|0;else{d=p;h=p;break}}}}else{h=z+132|0;d=h;g=0;f=0}if((f|0)>0|(g|0)!=0?(u=z+128|0,t=(c[u>>2]|0)+1|0,c[u>>2]=t,u=(c[d>>2]|0)+g|0,c[h>>2]=u,(t|0)==32767|u>>>0>937):0)t2(z);g=c[v>>2]|0;c[g>>2]=c[w>>2];c[g+4>>2]=c[x>>2];g=c[y>>2]|0;if(!g){i=A;return 1}h=z+36|0;f=c[h>>2]|0;if(!f){c[h>>2]=g;f=z+40|0;c[f>>2]=(c[f>>2]|0)+1&7;f=g}c[h>>2]=f+-1;i=A;return 1}function p0(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;k=c[a+408>>2]|0;j=a+224|0;g=c[j>>2]|0;if(g){f=k+36|0;e=c[f>>2]|0;if(!e){h=a+276|0;if((c[h>>2]|0)>0){e=k+20|0;g=0;do{c[e+(g<<2)>>2]=0;g=g+1|0}while((g|0)<(c[h>>2]|0));e=c[j>>2]|0}else e=g;c[f>>2]=e}c[f>>2]=e+-1}v=a+304|0;if((c[v>>2]|0)<=0){i=y;return 1}w=k+20|0;x=k+76|0;l=k+92|0;m=a+372|0;n=a+368|0;u=0;do{q=c[a+(u<<2)+308>>2]|0;r=c[a+(q<<2)+280>>2]|0;o=d+(u<<2)|0;p=c[o>>2]|0;q=w+(q<<2)|0;g=c[x+(c[r+20>>2]<<2)>>2]|0;r=c[l+(c[r+24>>2]<<2)>>2]|0;s=c[m>>2]|0;t=c[n>>2]|0;e=(b[p>>1]|0)-(c[q>>2]|0)|0;e=(e|0)<0?0-e|0:e;if(e){f=0;h=e;while(1){e=f+1|0;h=h>>1;if(!h)break;else f=e}if((f|0)>10){j=c[a>>2]|0;c[j+20>>2]=6;Id[c[j>>2]&511](a)}}else e=0;j=g+(e<<2)|0;c[j>>2]=(c[j>>2]|0)+1;if((s|0)>=1){k=r+960|0;j=1;e=0;while(1){h=b[p+(c[t+(j<<2)>>2]<<1)>>1]|0;f=h<<16>>16;if(!(h<<16>>16))e=e+1|0;else{if((e|0)>15){g=e+-16|0;e=g>>>4;c[k>>2]=e+1+(c[k>>2]|0);e=g-(e<<4)|0}g=1;h=h<<16>>16<0?0-f|0:f;while(1){h=h>>1;if(!h)break;else g=g+1|0}if((g|0)>10){f=c[a>>2]|0;c[f+20>>2]=6;Id[c[f>>2]&511](a)}e=r+(g+(e<<4)<<2)|0;c[e>>2]=(c[e>>2]|0)+1;e=0}if((j|0)==(s|0))break;else j=j+1|0}if((e|0)>0)c[r>>2]=(c[r>>2]|0)+1}c[q>>2]=b[c[o>>2]>>1];u=u+1|0}while((u|0)<(c[v>>2]|0));i=y;return 1}function q0(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;K=i;i=i+48|0;I=K;J=c[d+408>>2]|0;E=d+24|0;G=c[E>>2]|0;f=c[G>>2]|0;c[I>>2]=f;F=I+4|0;c[F>>2]=c[G+4>>2];G=I+8|0;H=J+12|0;c[G+0>>2]=c[H+0>>2];c[G+4>>2]=c[H+4>>2];c[G+8>>2]=c[H+8>>2];c[G+12>>2]=c[H+12>>2];c[G+16>>2]=c[H+16>>2];c[G+20>>2]=c[H+20>>2];C=I+32|0;c[C>>2]=d;D=d+224|0;if((c[D>>2]|0)!=0?(c[J+36>>2]|0)==0:0){o=c[J+40>>2]|0;l=I+12|0;h=c[l>>2]|0;m=I+8|0;do if((h|0)>0){g=h+7|0;j=c[m>>2]|127<<17-h;while(1){B=j>>>16;h=B&255;c[I>>2]=f+1;a[f>>0]=B;B=(c[F>>2]|0)+-1|0;c[F>>2]=B;if(!B){B=c[C>>2]|0;f=c[B+24>>2]|0;if(!((Ld[c[f+12>>2]&511](B)|0)<<24>>24)){k=0;f=120;break}c[I>>2]=c[f>>2];c[F>>2]=c[f+4>>2]}if((h|0)==255?(B=c[I>>2]|0,c[I>>2]=B+1,a[B>>0]=0,B=(c[F>>2]|0)+-1|0,c[F>>2]=B,(B|0)==0):0){B=c[C>>2]|0;f=c[B+24>>2]|0;if(!((Ld[c[f+12>>2]&511](B)|0)<<24>>24)){k=0;f=120;break}c[I>>2]=c[f>>2];c[F>>2]=c[f+4>>2]}g=g+-8|0;if((g|0)<=7){f=14;break}f=c[I>>2]|0;j=j<<8}if((f|0)==14){n=c[I>>2]|0;break}else if((f|0)==120){i=K;return k|0}}else n=f;while(0);c[m>>2]=0;c[l>>2]=0;c[I>>2]=n+1;a[n>>0]=-1;B=(c[F>>2]|0)+-1|0;c[F>>2]=B;do if(!B){B=c[C>>2]|0;f=c[B+24>>2]|0;if(!((Ld[c[f+12>>2]&511](B)|0)<<24>>24)){J=0;i=K;return J|0}else{B=c[f>>2]|0;c[I>>2]=B;c[F>>2]=c[f+4>>2];f=B;break}}else f=c[I>>2]|0;while(0);c[I>>2]=f+1;a[f>>0]=o+208;B=(c[F>>2]|0)+-1|0;c[F>>2]=B;do if(!B){B=c[C>>2]|0;f=c[B+24>>2]|0;if(!((Ld[c[f+12>>2]&511](B)|0)<<24>>24)){J=0;i=K;return J|0}else{c[I>>2]=c[f>>2];c[F>>2]=c[f+4>>2];break}}while(0);f=c[C>>2]|0;if((c[f+276>>2]|0)>0){g=0;do{c[I+(g<<2)+16>>2]=0;g=g+1|0;f=c[C>>2]|0}while((g|0)<(c[f+276>>2]|0))}}else f=d;x=d+304|0;a:do if((c[x>>2]|0)>0){y=J+44|0;z=J+60|0;A=I+12|0;B=I+8|0;g=0;b:while(1){w=c[d+(g<<2)+308>>2]|0;u=c[d+(w<<2)+280>>2]|0;v=e+(g<<2)|0;r=c[v>>2]|0;w=I+(w<<2)+16|0;o=c[y+(c[u+20>>2]<<2)>>2]|0;u=c[z+(c[u+24>>2]<<2)>>2]|0;s=c[f+372>>2]|0;t=c[f+368>>2]|0;n=(b[r>>1]|0)-(c[w>>2]|0)|0;if((n|0)<0){j=0-n|0;k=n+-1|0}else{j=n;k=n}if(j){h=0;while(1){n=h+1|0;j=j>>1;if(!j)break;else h=n}if((h|0)>10){l=c[f>>2]|0;c[l+20>>2]=6;Id[c[l>>2]&511](f);l=n}else l=n}else l=0;j=c[o+(l<<2)>>2]|0;q=a[o+l+1024>>0]|0;n=q<<24>>24;if(!(q<<24>>24)){q=c[C>>2]|0;p=c[q>>2]|0;c[p+20>>2]=41;Id[c[p>>2]&511](q)}f=(c[A>>2]|0)+n|0;j=((1<>2];if((f|0)>7)do{p=j>>>16;n=p&255;q=c[I>>2]|0;c[I>>2]=q+1;a[q>>0]=p;q=(c[F>>2]|0)+-1|0;c[F>>2]=q;if(!q){q=c[C>>2]|0;h=c[q+24>>2]|0;if(!((Ld[c[h+12>>2]&511](q)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[h>>2];c[F>>2]=c[h+4>>2]}if((n|0)==255?(q=c[I>>2]|0,c[I>>2]=q+1,a[q>>0]=0,q=(c[F>>2]|0)+-1|0,c[F>>2]=q,(q|0)==0):0){q=c[C>>2]|0;n=c[q+24>>2]|0;if(!((Ld[c[n+12>>2]&511](q)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[n>>2];c[F>>2]=c[n+4>>2]}j=j<<8;f=f+-8|0}while((f|0)>7);c[B>>2]=j;c[A>>2]=f;if(l){f=f+l|0;j=((1<7)do{p=j>>>16;n=p&255;q=c[I>>2]|0;c[I>>2]=q+1;a[q>>0]=p;q=(c[F>>2]|0)+-1|0;c[F>>2]=q;if(!q){q=c[C>>2]|0;h=c[q+24>>2]|0;if(!((Ld[c[h+12>>2]&511](q)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[h>>2];c[F>>2]=c[h+4>>2]}if((n|0)==255?(q=c[I>>2]|0,c[I>>2]=q+1,a[q>>0]=0,q=(c[F>>2]|0)+-1|0,c[F>>2]=q,(q|0)==0):0){q=c[C>>2]|0;h=c[q+24>>2]|0;if(!((Ld[c[h+12>>2]&511](q)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[h>>2];c[F>>2]=c[h+4>>2]}j=j<<8;f=f+-8|0}while((f|0)>7);c[B>>2]=j;c[A>>2]=f}if((s|0)>=1){p=u+960|0;q=u+1264|0;m=1;n=0;while(1){l=b[r+(c[t+(m<<2)>>2]<<1)>>1]|0;k=l<<16>>16;if(!(l<<16>>16))n=n+1|0;else{if((n|0)>15)do{h=c[p>>2]|0;L=a[q>>0]|0;o=L<<24>>24;if(!(L<<24>>24)){f=c[C>>2]|0;j=c[f>>2]|0;c[j+20>>2]=41;Id[c[j>>2]&511](f);f=c[A>>2]|0;j=c[B>>2]|0}f=f+o|0;j=((1<7)do{o=j>>>16;h=o&255;L=c[I>>2]|0;c[I>>2]=L+1;a[L>>0]=o;L=(c[F>>2]|0)+-1|0;c[F>>2]=L;if(!L){L=c[C>>2]|0;o=c[L+24>>2]|0;if(!((Ld[c[o+12>>2]&511](L)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[o>>2];c[F>>2]=c[o+4>>2]}do if((h|0)==255){L=c[I>>2]|0;c[I>>2]=L+1;a[L>>0]=0;L=(c[F>>2]|0)+-1|0;c[F>>2]=L;if(L)break;L=c[C>>2]|0;h=c[L+24>>2]|0;if(!((Ld[c[h+12>>2]&511](L)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[h>>2];c[F>>2]=c[h+4>>2]}while(0);j=j<<8;f=f+-8|0}while((f|0)>7);c[B>>2]=j;c[A>>2]=f;n=n+-16|0}while((n|0)>15);if(l<<16>>16<0){f=0-k|0;l=k+-1|0}else{f=k;l=k}o=1;while(1){f=f>>1;if(!f)break;else o=o+1|0}if((o|0)>10){L=c[C>>2]|0;k=c[L>>2]|0;c[k+20>>2]=6;Id[c[k>>2]&511](L)}L=o+(n<<4)|0;n=c[u+(L<<2)>>2]|0;L=a[u+L+1024>>0]|0;j=L<<24>>24;if(!(L<<24>>24)){L=c[C>>2]|0;k=c[L>>2]|0;c[k+20>>2]=41;Id[c[k>>2]&511](L)}f=(c[A>>2]|0)+j|0;n=((1<>2];if((f|0)>7){h=n;while(1){k=h>>>16;n=k&255;L=c[I>>2]|0;c[I>>2]=L+1;a[L>>0]=k;L=(c[F>>2]|0)+-1|0;c[F>>2]=L;if(!L){L=c[C>>2]|0;j=c[L+24>>2]|0;if(!((Ld[c[j+12>>2]&511](L)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[j>>2];c[F>>2]=c[j+4>>2]}do if((n|0)==255){L=c[I>>2]|0;c[I>>2]=L+1;a[L>>0]=0;L=(c[F>>2]|0)+-1|0;c[F>>2]=L;if(L)break;L=c[C>>2]|0;n=c[L+24>>2]|0;if(!((Ld[c[n+12>>2]&511](L)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[n>>2];c[F>>2]=c[n+4>>2]}while(0);n=h<<8;f=f+-8|0;if((f|0)>7)h=n;else break}}c[B>>2]=n;c[A>>2]=f;if(!o){f=c[C>>2]|0;n=c[f>>2]|0;c[n+20>>2]=41;Id[c[n>>2]&511](f);f=c[A>>2]|0;n=c[B>>2]|0}f=f+o|0;j=((1<7)do{k=j>>>16;n=k&255;L=c[I>>2]|0;c[I>>2]=L+1;a[L>>0]=k;L=(c[F>>2]|0)+-1|0;c[F>>2]=L;if(!L){L=c[C>>2]|0;h=c[L+24>>2]|0;if(!((Ld[c[h+12>>2]&511](L)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[h>>2];c[F>>2]=c[h+4>>2]}do if((n|0)==255){L=c[I>>2]|0;c[I>>2]=L+1;a[L>>0]=0;L=(c[F>>2]|0)+-1|0;c[F>>2]=L;if(L)break;L=c[C>>2]|0;n=c[L+24>>2]|0;if(!((Ld[c[n+12>>2]&511](L)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[n>>2];c[F>>2]=c[n+4>>2]}while(0);j=j<<8;f=f+-8|0}while((f|0)>7);c[B>>2]=j;c[A>>2]=f;n=0}if((m|0)<(s|0))m=m+1|0;else break}if((n|0)>0){n=c[u>>2]|0;L=a[u+1024>>0]|0;h=L<<24>>24;if(!(L<<24>>24)){f=c[C>>2]|0;j=c[f>>2]|0;c[j+20>>2]=41;Id[c[j>>2]&511](f);f=c[A>>2]|0;j=c[B>>2]|0}f=f+h|0;h=((1<7)do{u=h>>>16;j=u&255;L=c[I>>2]|0;c[I>>2]=L+1;a[L>>0]=u;L=(c[F>>2]|0)+-1|0;c[F>>2]=L;if(!L){L=c[C>>2]|0;k=c[L+24>>2]|0;if(!((Ld[c[k+12>>2]&511](L)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[k>>2];c[F>>2]=c[k+4>>2]}if((j|0)==255?(L=c[I>>2]|0,c[I>>2]=L+1,a[L>>0]=0,L=(c[F>>2]|0)+-1|0,c[F>>2]=L,(L|0)==0):0){L=c[C>>2]|0;j=c[L+24>>2]|0;if(!((Ld[c[j+12>>2]&511](L)|0)<<24>>24)){k=0;f=120;break b}c[I>>2]=c[j>>2];c[F>>2]=c[j+4>>2]}h=h<<8;f=f+-8|0}while((f|0)>7);c[B>>2]=h;c[A>>2]=f}}c[w>>2]=b[c[v>>2]>>1];g=g+1|0;if((g|0)>=(c[x>>2]|0))break a;f=c[C>>2]|0}if((f|0)==120){i=K;return k|0}}while(0);g=c[E>>2]|0;c[g>>2]=c[I>>2];c[g+4>>2]=c[F>>2];c[H+0>>2]=c[G+0>>2];c[H+4>>2]=c[G+4>>2];c[H+8>>2]=c[G+8>>2];c[H+12>>2]=c[G+12>>2];c[H+16>>2]=c[G+16>>2];c[H+20>>2]=c[G+20>>2];g=c[D>>2]|0;if(!g){J=1;i=K;return J|0}h=J+36|0;f=c[h>>2]|0;if(!f){c[h>>2]=g;f=J+40|0;c[f>>2]=(c[f>>2]|0)+1&7;f=g}c[h>>2]=f+-1;J=1;i=K;return J|0}function r0(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+1296|0;q=r+1028|0;p=r;if(f>>>0>3){o=c[b>>2]|0;c[o+20>>2]=52;c[o+24>>2]=f;Id[c[o>>2]&511](b)}m=e<<24>>24!=0;if(m)e=b+(f<<2)+120|0;else e=b+(f<<2)+136|0;o=c[e>>2]|0;if(!o){l=c[b>>2]|0;c[l+20>>2]=52;c[l+24>>2]=f;Id[c[l>>2]&511](b)}e=c[g>>2]|0;if(!e){e=Od[c[c[b+4>>2]>>2]&255](b,1,1280)|0;c[g>>2]=e;n=b}else n=b;k=1;j=0;while(1){h=a[o+k>>0]|0;f=h&255;g=f+j|0;if((g|0)>256){l=c[b>>2]|0;c[l+20>>2]=9;Id[c[l>>2]&511](n)}if(!(h<<24>>24))l=j;else{Cga(q+j|0,k&255|0,f|0)|0;l=g}k=k+1|0;if((k|0)==17)break;else j=l}a[q+l>>0]=0;h=a[q>>0]|0;if(h<<24>>24){k=h;f=0;g=0;j=h<<24>>24;while(1){if((k<<24>>24|0)==(j|0)){h=g;while(1){g=h+1|0;c[p+(h<<2)>>2]=f;f=f+1|0;h=a[q+g>>0]|0;if((h<<24>>24|0)==(j|0))h=g;else break}}else h=k;if((f|0)>=(1<>2]|0;c[k+20>>2]=9;Id[c[k>>2]&511](n)}if(!(h<<24>>24))break;else{k=h;f=f<<1;j=j+1|0}}}Cga(e+1024|0,0,256)|0;g=m?15:255;if((l|0)>0)j=0;else{i=r;return}do{h=d[o+j+17>>0]|0;f=e+h+1024|0;if(!(h>>>0<=g>>>0?(a[f>>0]|0)==0:0)){k=c[b>>2]|0;c[k+20>>2]=9;Id[c[k>>2]&511](n)}c[e+(h<<2)>>2]=c[p+(j<<2)>>2];a[f>>0]=a[q+j>>0]|0;j=j+1|0}while((j|0)!=(l|0));i=r;return}function s0(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;g=c[b+380>>2]|0;m=g+8|0;n=b+272|0;if((c[m>>2]|0)>>>0>=(c[n>>2]|0)>>>0){i=r;return}o=g+12|0;p=b+268|0;q=b+384|0;j=g+24|0;k=b+388|0;l=g+16|0;g=c[o>>2]|0;while(1){h=c[p>>2]|0;if(g>>>0>>0){Td[c[(c[q>>2]|0)+4>>2]&63](b,d,e,f,j,o,h);g=c[o>>2]|0;h=c[p>>2]|0}if((g|0)!=(h|0)){g=12;break}g=(Wd[c[(c[k>>2]|0)+4>>2]&511](b,j)|0)<<24>>24==0;h=(a[l>>0]|0)!=0;if(g){g=7;break}if(h){c[e>>2]=(c[e>>2]|0)+1;a[l>>0]=0}c[o>>2]=0;h=(c[m>>2]|0)+1|0;c[m>>2]=h;if(h>>>0<(c[n>>2]|0)>>>0)g=0;else{g=12;break}}if((g|0)==7){if(h){i=r;return}c[e>>2]=(c[e>>2]|0)+-1;a[l>>0]=1;i=r;return}else if((g|0)==12){i=r;return}}function t0(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=i;n=c[d+(f<<2)+88>>2]|0;if(!n){m=c[d>>2]|0;c[m+20>>2]=54;c[m+24>>2]=f;Id[c[m>>2]&511](d)}o=d+372|0;j=c[o>>2]|0;if((j|0)<0)g=0;else{h=c[d+368>>2]|0;k=0;g=0;while(1){g=(e[n+(c[h+(k<<2)>>2]<<1)>>1]|0)>255?1:g;if((k|0)<(j|0))k=k+1|0;else break}}l=n+128|0;if(a[l>>0]|0){i=p;return g|0}m=d+24|0;h=c[m>>2]|0;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=-1;k=h+4|0;j=(c[k>>2]|0)+-1|0;c[k>>2]=j;if((j|0)==0?(Ld[c[h+12>>2]&511](d)|0)<<24>>24==0:0){j=c[d>>2]|0;c[j+20>>2]=25;Id[c[j>>2]&511](d)}h=c[m>>2]|0;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=-37;k=h+4|0;j=(c[k>>2]|0)+-1|0;c[k>>2]=j;if((j|0)==0?(Ld[c[h+12>>2]&511](d)|0)<<24>>24==0:0){j=c[d>>2]|0;c[j+20>>2]=25;Id[c[j>>2]&511](d)}j=(g|0)!=0;h=c[o>>2]|0;if(j)h=(h<<1)+2|0;else h=h+1|0;h=h+3|0;k=c[m>>2]|0;r=c[k>>2]|0;c[k>>2]=r+1;a[r>>0]=h>>>8;r=k+4|0;q=(c[r>>2]|0)+-1|0;c[r>>2]=q;if((q|0)==0?(Ld[c[k+12>>2]&511](d)|0)<<24>>24==0:0){r=c[d>>2]|0;c[r+20>>2]=25;Id[c[r>>2]&511](d)}k=c[m>>2]|0;q=c[k>>2]|0;c[k>>2]=q+1;a[q>>0]=h;q=k+4|0;r=(c[q>>2]|0)+-1|0;c[q>>2]=r;if((r|0)==0?(Ld[c[k+12>>2]&511](d)|0)<<24>>24==0:0){r=c[d>>2]|0;c[r+20>>2]=25;Id[c[r>>2]&511](d)}h=c[m>>2]|0;q=c[h>>2]|0;c[h>>2]=q+1;a[q>>0]=(g<<4)+f;q=h+4|0;r=(c[q>>2]|0)+-1|0;c[q>>2]=r;if((r|0)==0?(Ld[c[h+12>>2]&511](d)|0)<<24>>24==0:0){r=c[d>>2]|0;c[r+20>>2]=25;Id[c[r>>2]&511](d)}a:do if((c[o>>2]|0)>=0){f=d+368|0;if(j)j=0;else{k=0;while(1){h=c[m>>2]|0;r=b[n+(c[(c[f>>2]|0)+(k<<2)>>2]<<1)>>1]&255;q=c[h>>2]|0;c[h>>2]=q+1;a[q>>0]=r;q=h+4|0;r=(c[q>>2]|0)+-1|0;c[q>>2]=r;if((r|0)==0?(Ld[c[h+12>>2]&511](d)|0)<<24>>24==0:0){r=c[d>>2]|0;c[r+20>>2]=25;Id[c[r>>2]&511](d)}if((k|0)<(c[o>>2]|0))k=k+1|0;else break a}}while(1){h=b[n+(c[(c[f>>2]|0)+(j<<2)>>2]<<1)>>1]|0;k=c[m>>2]|0;q=c[k>>2]|0;c[k>>2]=q+1;a[q>>0]=(h&65535)>>>8;q=k+4|0;r=(c[q>>2]|0)+-1|0;c[q>>2]=r;if((r|0)==0?(Ld[c[k+12>>2]&511](d)|0)<<24>>24==0:0){r=c[d>>2]|0;c[r+20>>2]=25;Id[c[r>>2]&511](d)}k=c[m>>2]|0;q=c[k>>2]|0;c[k>>2]=q+1;a[q>>0]=h;q=k+4|0;r=(c[q>>2]|0)+-1|0;c[q>>2]=r;if((r|0)==0?(Ld[c[k+12>>2]&511](d)|0)<<24>>24==0:0){r=c[d>>2]|0;c[r+20>>2]=25;Id[c[r>>2]&511](d)}if((j|0)<(c[o>>2]|0))j=j+1|0;else break}}while(0);a[l>>0]=1;i=p;return g|0}function u0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;j=i;h=b+24|0;e=c[h>>2]|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=-1;g=e+4|0;f=(c[g>>2]|0)+-1|0;c[g>>2]=f;if((f|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){f=c[b>>2]|0;c[f+20>>2]=25;Id[c[f>>2]&511](b)}e=c[h>>2]|0;g=c[e>>2]|0;c[e>>2]=g+1;a[g>>0]=d;g=e+4|0;f=(c[g>>2]|0)+-1|0;c[g>>2]=f;if((f|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){f=c[b>>2]|0;c[f+20>>2]=25;Id[c[f>>2]&511](b)}g=b+76|0;d=((c[g>>2]|0)*3|0)+8|0;e=c[h>>2]|0;k=c[e>>2]|0;c[e>>2]=k+1;a[k>>0]=d>>>8;k=e+4|0;f=(c[k>>2]|0)+-1|0;c[k>>2]=f;if((f|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){f=c[b>>2]|0;c[f+20>>2]=25;Id[c[f>>2]&511](b)}e=c[h>>2]|0;k=c[e>>2]|0;c[e>>2]=k+1;a[k>>0]=d;k=e+4|0;f=(c[k>>2]|0)+-1|0;c[k>>2]=f;if((f|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){f=c[b>>2]|0;c[f+20>>2]=25;Id[c[f>>2]&511](b)}e=b+68|0;if(!((c[e>>2]|0)<=65535?(c[b+64>>2]|0)<=65535:0)){f=c[b>>2]|0;c[f+20>>2]=42;c[f+24>>2]=65535;Id[c[f>>2]&511](b)}d=c[h>>2]|0;f=c[b+72>>2]&255;k=c[d>>2]|0;c[d>>2]=k+1;a[k>>0]=f;k=d+4|0;f=(c[k>>2]|0)+-1|0;c[k>>2]=f;if((f|0)==0?(Ld[c[d+12>>2]&511](b)|0)<<24>>24==0:0){f=c[b>>2]|0;c[f+20>>2]=25;Id[c[f>>2]&511](b)}d=c[e>>2]|0;e=c[h>>2]|0;k=c[e>>2]|0;c[e>>2]=k+1;a[k>>0]=d>>>8;k=e+4|0;f=(c[k>>2]|0)+-1|0;c[k>>2]=f;if((f|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){f=c[b>>2]|0;c[f+20>>2]=25;Id[c[f>>2]&511](b)}e=c[h>>2]|0;k=c[e>>2]|0;c[e>>2]=k+1;a[k>>0]=d;k=e+4|0;f=(c[k>>2]|0)+-1|0;c[k>>2]=f;if((f|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){f=c[b>>2]|0;c[f+20>>2]=25;Id[c[f>>2]&511](b)}d=c[b+64>>2]|0;e=c[h>>2]|0;k=c[e>>2]|0;c[e>>2]=k+1;a[k>>0]=d>>>8;k=e+4|0;f=(c[k>>2]|0)+-1|0;c[k>>2]=f;if((f|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){f=c[b>>2]|0;c[f+20>>2]=25;Id[c[f>>2]&511](b)}e=c[h>>2]|0;k=c[e>>2]|0;c[e>>2]=k+1;a[k>>0]=d;k=e+4|0;f=(c[k>>2]|0)+-1|0;c[k>>2]=f;if((f|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){f=c[b>>2]|0;c[f+20>>2]=25;Id[c[f>>2]&511](b)}e=c[h>>2]|0;f=c[g>>2]&255;k=c[e>>2]|0;c[e>>2]=k+1;a[k>>0]=f;k=e+4|0;f=(c[k>>2]|0)+-1|0;c[k>>2]=f;if((f|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){f=c[b>>2]|0;c[f+20>>2]=25;Id[c[f>>2]&511](b)}if((c[g>>2]|0)<=0){i=j;return}d=0;f=c[b+84>>2]|0;while(1){e=c[h>>2]|0;k=c[f>>2]&255;l=c[e>>2]|0;c[e>>2]=l+1;a[l>>0]=k;l=e+4|0;k=(c[l>>2]|0)+-1|0;c[l>>2]=k;if((k|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}e=c[h>>2]|0;l=(c[f+8>>2]<<4)+(c[f+12>>2]|0)&255;k=c[e>>2]|0;c[e>>2]=k+1;a[k>>0]=l;k=e+4|0;l=(c[k>>2]|0)+-1|0;c[k>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}e=c[h>>2]|0;l=c[f+16>>2]&255;k=c[e>>2]|0;c[e>>2]=k+1;a[k>>0]=l;k=e+4|0;l=(c[k>>2]|0)+-1|0;c[k>>2]=l;if((l|0)==0?(Ld[c[e+12>>2]&511](b)|0)<<24>>24==0:0){l=c[b>>2]|0;c[l+20>>2]=25;Id[c[l>>2]&511](b)}d=d+1|0;if((d|0)>=(c[g>>2]|0))break;else f=f+88|0}i=j;return}function v0(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;if(!(f<<24>>24)){g=e;f=b+(e<<2)+120|0}else{g=e+16|0;f=b+(e<<2)+136|0}l=c[f>>2]|0;if(!l){j=c[b>>2]|0;c[j+20>>2]=52;c[j+24>>2]=g;Id[c[j>>2]&511](b)}k=l+273|0;if(a[k>>0]|0){i=m;return}j=b+24|0;f=c[j>>2]|0;h=c[f>>2]|0;c[f>>2]=h+1;a[h>>0]=-1;h=f+4|0;e=(c[h>>2]|0)+-1|0;c[h>>2]=e;if((e|0)==0?(Ld[c[f+12>>2]&511](b)|0)<<24>>24==0:0){e=c[b>>2]|0;c[e+20>>2]=25;Id[c[e>>2]&511](b)}f=c[j>>2]|0;h=c[f>>2]|0;c[f>>2]=h+1;a[h>>0]=-60;h=f+4|0;e=(c[h>>2]|0)+-1|0;c[h>>2]=e;if((e|0)==0?(Ld[c[f+12>>2]&511](b)|0)<<24>>24==0:0){e=c[b>>2]|0;c[e+20>>2]=25;Id[c[e>>2]&511](b)}h=(d[l+16>>0]|0)+((d[l+15>>0]|0)+((d[l+14>>0]|0)+((d[l+13>>0]|0)+((d[l+12>>0]|0)+((d[l+11>>0]|0)+((d[l+10>>0]|0)+((d[l+9>>0]|0)+((d[l+8>>0]|0)+((d[l+7>>0]|0)+((d[l+6>>0]|0)+((d[l+5>>0]|0)+((d[l+4>>0]|0)+((d[l+3>>0]|0)+((d[l+2>>0]|0)+(d[l+1>>0]|0)))))))))))))))|0;e=h+19|0;f=c[j>>2]|0;o=c[f>>2]|0;c[f>>2]=o+1;a[o>>0]=e>>>8;o=f+4|0;n=(c[o>>2]|0)+-1|0;c[o>>2]=n;if((n|0)==0?(Ld[c[f+12>>2]&511](b)|0)<<24>>24==0:0){o=c[b>>2]|0;c[o+20>>2]=25;Id[c[o>>2]&511](b)}f=c[j>>2]|0;n=c[f>>2]|0;c[f>>2]=n+1;a[n>>0]=e;n=f+4|0;o=(c[n>>2]|0)+-1|0;c[n>>2]=o;if((o|0)==0?(Ld[c[f+12>>2]&511](b)|0)<<24>>24==0:0){o=c[b>>2]|0;c[o+20>>2]=25;Id[c[o>>2]&511](b)}f=c[j>>2]|0;n=c[f>>2]|0;c[f>>2]=n+1;a[n>>0]=g;n=f+4|0;o=(c[n>>2]|0)+-1|0;c[n>>2]=o;if((o|0)==0?(Ld[c[f+12>>2]&511](b)|0)<<24>>24==0:0){o=c[b>>2]|0;c[o+20>>2]=25;Id[c[o>>2]&511](b)}e=1;do{o=a[l+e>>0]|0;f=c[j>>2]|0;n=c[f>>2]|0;c[f>>2]=n+1;a[n>>0]=o;n=f+4|0;o=(c[n>>2]|0)+-1|0;c[n>>2]=o;if((o|0)==0?(Ld[c[f+12>>2]&511](b)|0)<<24>>24==0:0){o=c[b>>2]|0;c[o+20>>2]=25;Id[c[o>>2]&511](b)}e=e+1|0}while((e|0)!=17);if((h|0)>0){e=0;do{o=a[l+e+17>>0]|0;f=c[j>>2]|0;n=c[f>>2]|0;c[f>>2]=n+1;a[n>>0]=o;n=f+4|0;o=(c[n>>2]|0)+-1|0;c[n>>2]=o;if((o|0)==0?(Ld[c[f+12>>2]&511](b)|0)<<24>>24==0:0){o=c[b>>2]|0;c[o+20>>2]=25;Id[c[o>>2]&511](b)}e=e+1|0}while((e|0)!=(h|0))}a[k>>0]=1;i=m;return}function w0(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;d=c[b+204>>2]|0;if(!d){f=b+76|0;d=c[f>>2]|0;if((d|0)>4){h=c[b>>2]|0;c[h+20>>2]=27;c[h+24>>2]=d;c[h+28>>2]=4;Id[c[h>>2]&511](b);d=c[f>>2]|0}c[b+276>>2]=d;if((d|0)>0){d=b+84|0;e=0;do{c[b+(e<<2)+280>>2]=(c[d>>2]|0)+(e*88|0);e=e+1|0}while((e|0)<(c[f>>2]|0))}}else{f=c[(c[b+376>>2]|0)+28>>2]|0;g=c[d+(f*36|0)>>2]|0;c[b+276>>2]=g;if((g|0)>0){e=b+84|0;h=0;do{c[b+(h<<2)+280>>2]=(c[e>>2]|0)+((c[d+(f*36|0)+(h<<2)+4>>2]|0)*88|0);h=h+1|0}while((h|0)<(g|0))}if(a[b+252>>0]|0){c[b+348>>2]=c[d+(f*36|0)+20>>2];c[b+352>>2]=c[d+(f*36|0)+24>>2];c[b+356>>2]=c[d+(f*36|0)+28>>2];c[b+360>>2]=c[d+(f*36|0)+32>>2];i=j;return}}c[b+348>>2]=0;h=c[b+364>>2]|0;c[b+352>>2]=(ea(h,h)|0)+-1;c[b+356>>2]=0;c[b+360>>2]=0;i=j;return}function x0(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;h=i;g=a+276|0;b=c[g>>2]|0;a:do if((b|0)!=1){if((b+-1|0)>>>0>3){e=c[a>>2]|0;c[e+20>>2]=27;c[e+24>>2]=b;c[e+28>>2]=4;Id[c[e>>2]&511](a)}f=a+364|0;c[a+296>>2]=UH(c[a+64>>2]|0,ea(c[f>>2]|0,c[a+256>>2]|0)|0)|0;c[a+300>>2]=UH(c[a+68>>2]|0,ea(c[f>>2]|0,c[a+260>>2]|0)|0)|0;f=a+304|0;c[f>>2]=0;if((c[g>>2]|0)>0){e=0;b=0;while(1){j=c[a+(b<<2)+280>>2]|0;m=c[j+8>>2]|0;c[j+56>>2]=m;l=c[j+12>>2]|0;c[j+60>>2]=l;d=ea(m,l)|0;c[j+64>>2]=d;c[j+68>>2]=ea(c[j+36>>2]|0,m)|0;k=((c[j+28>>2]|0)>>>0)%(m>>>0)|0;c[j+72>>2]=(k|0)==0?m:k;k=((c[j+32>>2]|0)>>>0)%(l>>>0)|0;c[j+76>>2]=(k|0)==0?l:k;if((e+d|0)>10){m=c[a>>2]|0;c[m+20>>2]=14;Id[c[m>>2]&511](a)}if((d|0)>0)do{d=d+-1|0;m=c[f>>2]|0;c[f>>2]=m+1;c[a+(m<<2)+308>>2]=b}while((d|0)>0);b=b+1|0;if((b|0)>=(c[g>>2]|0))break a;e=c[f>>2]|0}}}else{m=c[a+280>>2]|0;c[a+296>>2]=c[m+28>>2];l=c[m+32>>2]|0;c[a+300>>2]=l;c[m+56>>2]=1;c[m+60>>2]=1;c[m+64>>2]=1;c[m+68>>2]=c[m+36>>2];c[m+72>>2]=1;g=c[m+12>>2]|0;l=(l>>>0)%(g>>>0)|0;c[m+76>>2]=(l|0)==0?g:l;c[a+304>>2]=1;c[a+308>>2]=0}while(0);b=c[a+228>>2]|0;if((b|0)<=0){i=h;return}m=ea(c[a+296>>2]|0,b)|0;c[a+224>>2]=(m|0)<65535?m:65535;i=h;return}function y0(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;h=c[a+432>>2]|0;if(c[a+252>>2]|0){g=h+56|0;f=c[g>>2]|0;if(!f){x2(a);f=c[g>>2]|0}c[g>>2]=f+-1}s=h+20|0;if((c[s>>2]|0)==-1){i=x;return 1}t=a+332|0;if((c[t>>2]|0)<=0){i=x;return 1}u=h+60|0;v=h+40|0;o=h+24|0;p=a+388|0;r=0;a:while(1){q=c[e+(r<<2)>>2]|0;m=c[a+(r<<2)+336>>2]|0;k=c[(c[a+(m<<2)+308>>2]|0)+20>>2]|0;j=u+(k<<2)|0;f=c[j>>2]|0;l=v+(m<<2)|0;g=c[l>>2]|0;if(!(y2(a,f+g|0)|0)){c[l>>2]=0;f=c[o+(m<<2)>>2]|0}else{n=y2(a,f+(g+1)|0)|0;h=f+(g+2+n)|0;f=y2(a,h)|0;if(f){g=(c[j>>2]|0)+20|0;if(!(y2(a,g)|0))h=g;else while(1){f=f<<1;g=g+1|0;if((f|0)==32768)break a;if(!(y2(a,g)|0)){h=g;break}}}else f=0;do if((f|0)>=(1<<(d[a+k+203>>0]|0)>>1|0)){g=n<<2;if((f|0)>(1<<(d[a+k+219>>0]|0)>>1|0)){c[l>>2]=g+12;break}else{c[l>>2]=g+4;break}}else c[l>>2]=0;while(0);h=h+14|0;g=f>>1;if(g)do{k=(y2(a,h)|0)==0;f=(k?0:g)|f;g=g>>1}while((g|0)!=0);m=o+(m<<2)|0;f=(c[m>>2]|0)+((n|0)==0?f+1|0:~f)|0;c[m>>2]=f}b[q>>1]=f<>2];r=r+1|0;if((r|0)>=(c[t>>2]|0)){w=24;break}}if((w|0)==24){i=x;return 1}w=c[a>>2]|0;c[w+20>>2]=117;Jd[c[w+4>>2]&255](a,-1);c[s>>2]=-1;i=x;return 1}function z0(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;h=c[a+432>>2]|0;if(c[a+252>>2]|0){g=h+56|0;f=c[g>>2]|0;if(!f){x2(a);f=c[g>>2]|0}c[g>>2]=f+-1}r=h+20|0;if((c[r>>2]|0)==-1){i=s;return 1}q=c[a+396>>2]|0;n=c[e>>2]|0;m=c[(c[a+308>>2]|0)+24>>2]|0;o=h+124+(m<<2)|0;p=a+380|0;k=h+188|0;l=a+388|0;m=a+m+235|0;f=(c[a+376>>2]|0)+-1|0;a:while(1){h=(c[o>>2]|0)+(f*3|0)|0;if(!(y2(a,h)|0))e=f;else{f=20;break}while(1){f=e+1|0;if(y2(a,h+1|0)|0)break;if((f|0)<(c[p>>2]|0)){e=f;h=h+3|0}else{f=10;break a}}j=y2(a,k)|0;g=h+2|0;h=y2(a,g)|0;if(h){if(y2(a,g)|0){h=h<<1;g=(c[o>>2]|0)+((e|0)<(d[m>>0]|0|0)?189:217)|0;if(y2(a,g)|0)do{h=h<<1;g=g+1|0;if((h|0)==32768){f=16;break a}}while((y2(a,g)|0)!=0)}e=g+14|0;g=h>>1;if(g)do{t=(y2(a,e)|0)==0;h=(t?0:g)|h;g=g>>1}while((g|0)!=0)}else h=0;b[n+(c[q+(f<<2)>>2]<<1)>>1]=((j|0)==0?h+1|0:~h)<>2];if((f|0)>=(c[p>>2]|0)){f=20;break}}if((f|0)==10){t=c[a>>2]|0;c[t+20>>2]=117;Jd[c[t+4>>2]&255](a,-1);c[r>>2]=-1;i=s;return 1}else if((f|0)==16){t=c[a>>2]|0;c[t+20>>2]=117;Jd[c[t+4>>2]&255](a,-1);c[r>>2]=-1;i=s;return 1}else if((f|0)==20){i=s;return 1}return 0}function A0(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;g=c[a+432>>2]|0;if(c[a+252>>2]|0){h=g+56|0;f=c[h>>2]|0;if(!f){x2(a);f=c[h>>2]|0}c[h>>2]=f+-1}f=g+188|0;g=1<>2];h=a+332|0;if((c[h>>2]|0)>0)j=0;else{i=k;return 1}do{if(y2(a,f)|0){l=c[d+(j<<2)>>2]|0;b[l>>1]=e[l>>1]|0|g}j=j+1|0}while((j|0)<(c[h>>2]|0));i=k;return 1}function B0(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;g=c[a+432>>2]|0;if(c[a+252>>2]|0){f=g+56|0;e=c[f>>2]|0;if(!e){x2(a);e=c[f>>2]|0}c[f>>2]=e+-1}r=g+20|0;if((c[r>>2]|0)==-1){i=t;return 1}s=c[a+396>>2]|0;n=c[d>>2]|0;f=c[(c[a+308>>2]|0)+24>>2]|0;p=c[a+388>>2]|0;o=1<>2]|0;while(1){if(b[n+(c[s+(e<<2)>>2]<<1)>>1]|0)break;e=e+-1|0;if(!e){e=0;break}}m=g+124+(f<<2)|0;j=g+188|0;k=o&65535;l=p&65535;f=(c[a+376>>2]|0)+-1|0;a:while(1){d=(c[m>>2]|0)+(f*3|0)|0;if((f|0)>=(e|0)?(y2(a,d)|0)!=0:0){g=24;break}while(1){f=f+1|0;h=n+(c[s+(f<<2)>>2]<<1)|0;if(b[h>>1]|0){g=13;break}if(y2(a,d+1|0)|0){g=18;break}if((f|0)>=(c[q>>2]|0)){g=22;break a}else d=d+3|0}do if((g|0)==13){if(y2(a,d+2|0)|0){g=b[h>>1]|0;d=g<<16>>16;if(g<<16>>16<0){b[h>>1]=d+p;break}else{b[h>>1]=d+o;break}}}else if((g|0)==18)if(!(y2(a,j)|0)){b[h>>1]=k;break}else{b[h>>1]=l;break}while(0);if((f|0)>=(c[q>>2]|0)){g=24;break}}if((g|0)==22){s=c[a>>2]|0;c[s+20>>2]=117;Jd[c[s+4>>2]&255](a,-1);c[r>>2]=-1;i=t;return 1}else if((g|0)==24){i=t;return 1}return 0}function C0(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;h=c[a+432>>2]|0;if(c[a+252>>2]|0){g=h+56|0;f=c[g>>2]|0;if(!f){x2(a);f=c[g>>2]|0}c[g>>2]=f+-1}z=h+20|0;if((c[z>>2]|0)==-1){i=A;return 1}s=c[a+396>>2]|0;t=a+332|0;if((c[t>>2]|0)<=0){i=A;return 1}u=h+60|0;v=h+40|0;w=h+24|0;x=a+400|0;y=h+124|0;p=h+188|0;r=0;a:while(1){q=c[e+(r<<2)>>2]|0;m=c[a+(r<<2)+336>>2]|0;o=c[a+(m<<2)+308>>2]|0;k=c[o+20>>2]|0;j=u+(k<<2)|0;f=c[j>>2]|0;l=v+(m<<2)|0;g=c[l>>2]|0;if(!(y2(a,f+g|0)|0)){c[l>>2]=0;f=c[w+(m<<2)>>2]|0}else{n=y2(a,f+(g+1)|0)|0;h=f+(g+2+n)|0;f=y2(a,h)|0;if(f){g=(c[j>>2]|0)+20|0;if(!(y2(a,g)|0))h=g;else while(1){f=f<<1;g=g+1|0;if((f|0)==32768){f=14;break a}if(!(y2(a,g)|0)){h=g;break}}}else f=0;do if((f|0)>=(1<<(d[a+k+203>>0]|0)>>1|0)){g=n<<2;if((f|0)>(1<<(d[a+k+219>>0]|0)>>1|0)){c[l>>2]=g+12;break}else{c[l>>2]=g+4;break}}else c[l>>2]=0;while(0);h=h+14|0;g=f>>1;if(g)do{k=(y2(a,h)|0)==0;f=(k?0:g)|f;g=g>>1}while((g|0)!=0);m=w+(m<<2)|0;f=(c[m>>2]|0)+((n|0)==0?f+1|0:~f)|0;c[m>>2]=f}b[q>>1]=f;b:do if(c[x>>2]|0){k=c[o+24>>2]|0;n=y+(k<<2)|0;k=a+k+235|0;f=0;do{g=(c[n>>2]|0)+(f*3|0)|0;if(!(y2(a,g)|0))j=f;else break b;while(1){f=j+1|0;if(y2(a,g+1|0)|0)break;if((f|0)<(c[x>>2]|0)){j=f;g=g+3|0}else{f=28;break a}}l=y2(a,p)|0;h=g+2|0;g=y2(a,h)|0;if(g){if(y2(a,h)|0){g=g<<1;h=(c[n>>2]|0)+((j|0)<(d[k>>0]|0|0)?189:217)|0;if(y2(a,h)|0)do{g=g<<1;h=h+1|0;if((g|0)==32768){f=34;break a}}while((y2(a,h)|0)!=0)}j=h+14|0;h=g>>1;if(h)do{m=(y2(a,j)|0)==0;g=(m?0:h)|g;h=h>>1}while((h|0)!=0)}else g=0;b[q+(c[s+(f<<2)>>2]<<1)>>1]=(l|0)==0?g+1|0:g^65535}while((f|0)<(c[x>>2]|0))}while(0);r=r+1|0;if((r|0)>=(c[t>>2]|0)){f=39;break}}if((f|0)==14){e=c[a>>2]|0;c[e+20>>2]=117;Jd[c[e+4>>2]&255](a,-1);c[z>>2]=-1;i=A;return 1}else if((f|0)==28){e=c[a>>2]|0;c[e+20>>2]=117;Jd[c[e+4>>2]&255](a,-1);c[z>>2]=-1;i=A;return 1}else if((f|0)==34){e=c[a>>2]|0;c[e+20>>2]=117;Jd[c[e+4>>2]&255](a,-1);c[z>>2]=-1;i=A;return 1}else if((f|0)==39){i=A;return 1}return 0}function D0(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0;qa=i;i=i+128|0;pa=qa;q=c[d+416>>2]|0;na=d+296|0;oa=(c[na>>2]|0)+-1|0;k=d+124|0;l=d+132|0;m=d+424|0;n=d+376|0;o=d+128|0;ma=d+136|0;while(1){g=c[k>>2]|0;h=c[l>>2]|0;if((g|0)>(h|0))break;j=c[m>>2]|0;if(a[j+17>>0]|0)break;if((g|0)==(h|0)?(c[o>>2]|0)>>>0>((c[ma>>2]|0)+((c[n>>2]|0)==0&1)|0)>>>0:0)break;if(!(Ld[c[j>>2]&511](d)|0)){g=0;p=70;break}}if((p|0)==70){i=qa;return g|0}ja=d+36|0;g=c[ja>>2]|0;if((g|0)>0){ka=d+4|0;la=q+72|0;ba=q+112|0;ca=d+436|0;da=pa+4|0;fa=pa+18|0;ga=pa+32|0;ha=pa+16|0;ia=pa+2|0;$=0;aa=c[d+196>>2]|0;while(1){if(a[aa+52>>0]|0){g=c[ma>>2]|0;if(g>>>0>>0){_=c[aa+12>>2]|0;o=_;k=_<<1;h=0}else{o=c[aa+12>>2]|0;_=((c[aa+32>>2]|0)>>>0)%(o>>>0)|0;_=(_|0)==0?o:_;k=_;h=1}if(!g){Z=Xd[c[(c[ka>>2]|0)+32>>2]&127](d,c[la+($<<2)>>2]|0,0,k,0)|0;g=1}else{Z=ea(o,g+-1|0)|0;Z=Xd[c[(c[ka>>2]|0)+32>>2]&127](d,c[la+($<<2)>>2]|0,Z,o+k|0,0)|0;Z=Z+(c[aa+12>>2]<<2)|0;g=0}o=c[ba>>2]|0;k=$*6|0;j=c[aa+80>>2]|0;l=e[j>>1]|0;q=e[j+2>>1]|0;n=e[j+16>>1]|0;m=e[j+32>>1]|0;p=e[j+18>>1]|0;j=e[j+4>>1]|0;Y=c[(c[ca>>2]|0)+($<<2)+4>>2]|0;if((_|0)>0){X=(g|0)!=0;Q=(h|0)!=0;R=_+-1|0;S=aa+28|0;T=o+((k|1)<<2)|0;U=o+(k+2<<2)|0;V=o+(k+3<<2)|0;W=o+(k+4<<2)|0;M=o+(k+5<<2)|0;N=aa+36|0;O=l*9|0;P=j<<7;J=j<<8;K=l*5|0;L=p<<7;H=p<<8;I=m<<7;G=m<<8;E=l*36|0;F=n<<7;C=n<<8;D=q<<7;t=q<<8;u=aa+40|0;A=0;B=c[f+($<<2)>>2]|0;while(1){g=c[Z+(A<<2)>>2]|0;if(X&(A|0)==0)k=g;else k=c[Z+(A+-1<<2)>>2]|0;if(Q&(A|0)==(R|0))o=g;else o=c[Z+(A+1<<2)>>2]|0;w=b[k>>1]|0;x=b[g>>1]|0;y=b[o>>1]|0;v=(c[S>>2]|0)+-1|0;j=w;m=x;p=y;z=0;s=0;r=k;while(1){XH(g,pa,1);if(z>>>0>>0){l=b[r+128>>1]|0;n=b[g+128>>1]|0;q=b[o+128>>1]|0}else{l=w;n=x;q=y}h=c[T>>2]|0;if((h|0)!=0&(b[ia>>1]|0)==0){k=ea(E,m-n|0)|0;if((k|0)>-1){k=(k+D|0)/(t|0)|0;if((h|0)>0){h=1<0){h=1<>1]=k}h=c[U>>2]|0;if((h|0)!=0&(b[ha>>1]|0)==0){k=ea(E,w-y|0)|0;if((k|0)>-1){k=(k+F|0)/(C|0)|0;if((h|0)>0){h=1<0){h=1<>1]=k}h=c[V>>2]|0;if((h|0)!=0&(b[ga>>1]|0)==0){k=ea(O,w-(x<<1)+y|0)|0;do if((k|0)>-1){k=(k+I|0)/(G|0)|0;if((h|0)<=0)break;h=1<0){h=1<>1]=k}h=c[W>>2]|0;if((h|0)!=0&(b[fa>>1]|0)==0){k=ea(K,j-p-l+q|0)|0;do if((k|0)>-1){k=(k+L|0)/(H|0)|0;if((h|0)<=0)break;p=1<0){p=1<>1]=k}h=c[M>>2]|0;if((h|0)!=0&(b[da>>1]|0)==0){k=ea(O,m-(x<<1)+n|0)|0;do if((k|0)>-1){k=(k+P|0)/(J|0)|0;if((h|0)<=0)break;m=1<0){m=1<>1]=k}Hd[Y&63](d,aa,pa,B,s);z=z+1|0;if(z>>>0>v>>>0)break;else{p=y;m=x;j=w;w=l;x=n;y=q;g=g+128|0;o=o+128|0;s=(c[N>>2]|0)+s|0;r=r+128|0}}A=A+1|0;if((A|0)==(_|0))break;else B=B+(c[u>>2]<<2)|0}}g=c[ja>>2]|0}$=$+1|0;if(($|0)>=(g|0))break;else aa=aa+88|0}}pa=(c[ma>>2]|0)+1|0;c[ma>>2]=pa;pa=pa>>>0<(c[na>>2]|0)>>>0?3:4;i=qa;return pa|0}function E0(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+48|0;A=D+20|0;C=D;B=c[e+432>>2]|0;z=c[e+388>>2]|0;k=e+252|0;if((c[k>>2]|0)!=0?(l=B+44|0,(c[l>>2]|0)==0):0){x=B+16|0;y=c[e+428>>2]|0;w=y+20|0;c[w>>2]=(c[w>>2]|0)+((c[x>>2]|0)/8|0);c[x>>2]=0;if(!((Ld[c[y+8>>2]&511](e)|0)<<24>>24)){C=0;i=D;return C|0}g=e+304|0;h=B+20|0;if((c[g>>2]|0)>0){j=h+4|0;m=0;do{c[j+(m<<2)>>2]=0;m=m+1|0}while((m|0)<(c[g>>2]|0))}c[h>>2]=0;c[l>>2]=c[k>>2];if(!(c[e+404>>2]|0))a[B+40>>0]=0}if(!(a[B+40>>0]|0)){c[A+16>>2]=e;u=e+24|0;j=c[u>>2]|0;m=c[j>>2]|0;c[A>>2]=m;h=c[j+4>>2]|0;v=A+4|0;c[v>>2]=h;w=B+12|0;g=c[w>>2]|0;x=B+16|0;k=c[x>>2]|0;y=B+20|0;c[C+0>>2]=c[y+0>>2];c[C+4>>2]=c[y+4>>2];c[C+8>>2]=c[y+8>>2];c[C+12>>2]=c[y+12>>2];c[C+16>>2]=c[y+16>>2];t=e+332|0;do if((c[t>>2]|0)>0){q=B+48|0;r=A+8|0;s=A+12|0;p=0;while(1){n=c[f+(p<<2)>>2]|0;o=c[e+(p<<2)+336>>2]|0;m=c[q+(c[(c[e+(o<<2)+308>>2]|0)+20>>2]<<2)>>2]|0;if((k|0)<8){if(!((z2(A,g,k,0)|0)<<24>>24)){g=0;l=28;break}g=c[r>>2]|0;k=c[s>>2]|0;if((k|0)<8){h=1;l=17}else l=15}else l=15;if((l|0)==15){l=0;j=g>>k+-8&255;h=c[m+(j<<2)+144>>2]|0;if(!h){h=9;l=17}else{k=k-h|0;h=d[m+j+1168>>0]|0}}if((l|0)==17){h=A2(A,g,k,m,h)|0;if((h|0)<0){g=0;l=28;break}k=c[s>>2]|0;g=c[r>>2]|0}if(!h)h=0;else{if((k|0)<(h|0)){if(!((z2(A,g,k,h)|0)<<24>>24)){g=0;l=28;break}k=c[s>>2]|0;g=c[r>>2]|0}k=k-h|0;l=c[279344+(h<<2)>>2]|0;m=g>>k&l;h=m-((m|0)>(c[279344+(h+-1<<2)>>2]|0)?0:l)|0}m=C+(o<<2)+4|0;l=(c[m>>2]|0)+h|0;c[m>>2]=l;b[n>>1]=l<=(c[t>>2]|0)){l=25;break}}if((l|0)==25){m=c[A>>2]|0;j=c[u>>2]|0;h=c[v>>2]|0;break}else if((l|0)==28){i=D;return g|0}}while(0);c[j>>2]=m;c[j+4>>2]=h;c[w>>2]=g;c[x>>2]=k;c[y+0>>2]=c[C+0>>2];c[y+4>>2]=c[C+4>>2];c[y+8>>2]=c[C+8>>2];c[y+12>>2]=c[C+12>>2];c[y+16>>2]=c[C+16>>2]}C=B+44|0;c[C>>2]=(c[C>>2]|0)+-1;C=1;i=D;return C|0}function F0(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+32|0;z=B;A=c[e+432>>2]|0;g=e+252|0;if((c[g>>2]|0)!=0?(l=A+44|0,(c[l>>2]|0)==0):0){x=A+16|0;y=c[e+428>>2]|0;w=y+20|0;c[w>>2]=(c[w>>2]|0)+((c[x>>2]|0)/8|0);c[x>>2]=0;if(!((Ld[c[y+8>>2]&511](e)|0)<<24>>24)){A=0;i=B;return A|0}h=e+304|0;j=A+20|0;if((c[h>>2]|0)>0){k=j+4|0;m=0;do{c[k+(m<<2)>>2]=0;m=m+1|0}while((m|0)<(c[h>>2]|0))}c[j>>2]=0;c[l>>2]=c[g>>2];if(!(c[e+404>>2]|0))a[A+40>>0]=0}if(!(a[A+40>>0]|0)){r=c[e+380>>2]|0;s=c[e+388>>2]|0;t=c[e+396>>2]|0;y=A+20|0;g=c[y>>2]|0;if(!g){c[z+16>>2]=e;u=e+24|0;w=c[u>>2]|0;c[z>>2]=c[w>>2];v=z+4|0;c[v>>2]=c[w+4>>2];w=A+12|0;k=c[w>>2]|0;x=A+16|0;h=c[x>>2]|0;n=c[f>>2]|0;o=c[A+64>>2]|0;g=c[e+376>>2]|0;a:do if((g|0)<=(r|0)){q=z+8|0;p=z+12|0;f=g;while(1){if((h|0)<8){if(!((z2(z,k,h,0)|0)<<24>>24)){g=0;l=36;break}k=c[q>>2]|0;h=c[p>>2]|0;if((h|0)<8){g=1;l=19}else l=17}else l=17;if((l|0)==17){l=0;j=k>>h+-8&255;g=c[o+(j<<2)+144>>2]|0;if(!g){g=9;l=19}else{m=h-g|0;g=d[o+j+1168>>0]|0}}if((l|0)==19){g=A2(z,k,h,o,g)|0;if((g|0)<0){g=0;l=36;break}m=c[p>>2]|0;k=c[q>>2]|0}e=g>>4;h=g&15;if(!h){if(!e){g=0;h=m;break a}else if((e|0)!=15){l=27;break}h=m;g=f+15|0}else{j=e+f|0;if((m|0)<(h|0)){if(!((z2(z,k,m,h)|0)<<24>>24)){g=0;l=36;break}g=c[p>>2]|0;k=c[q>>2]|0}else g=m;g=g-h|0;f=c[279344+(h<<2)>>2]|0;l=k>>g&f;b[n+(c[t+(j<<2)>>2]<<1)>>1]=l-((l|0)>(c[279344+(h+-1<<2)>>2]|0)?0:f)<>24)){A=0;i=B;return A|0}else{g=c[p>>2]|0;k=c[q>>2]|0;break}else g=m;while(0);t=g-e|0;g=h+-1+(k>>t&c[279344+(e<<2)>>2])|0;h=t;break}else if((l|0)==36){i=B;return g|0}}else g=0;while(0);u=c[u>>2]|0;c[u>>2]=c[z>>2];c[u+4>>2]=c[v>>2];c[w>>2]=k;c[x>>2]=h}else g=g+-1|0;c[y>>2]=g}A=A+44|0;c[A>>2]=(c[A>>2]|0)+-1;A=1;i=B;return A|0}function G0(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+32|0;s=u;t=c[d+432>>2]|0;g=d+252|0;if((c[g>>2]|0)!=0?(l=t+44|0,(c[l>>2]|0)==0):0){q=t+16|0;r=c[d+428>>2]|0;p=r+20|0;c[p>>2]=(c[p>>2]|0)+((c[q>>2]|0)/8|0);c[q>>2]=0;if(!((Ld[c[r+8>>2]&511](d)|0)<<24>>24)){t=0;i=u;return t|0}h=d+304|0;j=t+20|0;if((c[h>>2]|0)>0){k=j+4|0;m=0;do{c[k+(m<<2)>>2]=0;m=m+1|0}while((m|0)<(c[h>>2]|0))}c[j>>2]=0;c[l>>2]=c[g>>2];if(!(c[d+404>>2]|0))a[t+40>>0]=0}c[s+16>>2]=d;o=d+24|0;m=c[o>>2]|0;j=c[m>>2]|0;c[s>>2]=j;h=c[m+4>>2]|0;p=s+4|0;c[p>>2]=h;q=t+12|0;g=c[q>>2]|0;r=t+16|0;k=c[r>>2]|0;n=1<>2];l=d+332|0;do if((c[l>>2]|0)>0){j=s+8|0;m=s+12|0;h=0;while(1){if((k|0)<1){if(!((z2(s,g,k,1)|0)<<24>>24)){g=0;l=19;break}k=c[m>>2]|0;g=c[j>>2]|0}k=k+-1|0;if(1<>2]|0;b[d>>1]=e[d>>1]|0|n}h=h+1|0;if((h|0)>=(c[l>>2]|0)){l=17;break}}if((l|0)==17){j=c[s>>2]|0;m=c[o>>2]|0;h=c[p>>2]|0;break}else if((l|0)==19){i=u;return g|0}}while(0);c[m>>2]=j;c[m+4>>2]=h;c[q>>2]=g;c[r>>2]=k;t=t+44|0;c[t>>2]=(c[t>>2]|0)+-1;t=1;i=u;return t|0}function H0(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+288|0;H=I+256|0;F=I;G=c[e+432>>2]|0;g=e+252|0;if((c[g>>2]|0)!=0?(l=G+44|0,(c[l>>2]|0)==0):0){A=G+16|0;B=c[e+428>>2]|0;z=B+20|0;c[z>>2]=(c[z>>2]|0)+((c[A>>2]|0)/8|0);c[A>>2]=0;if(!((Ld[c[B+8>>2]&511](e)|0)<<24>>24)){H=0;i=I;return H|0}h=e+304|0;j=G+20|0;if((c[h>>2]|0)>0){k=j+4|0;m=0;do{c[k+(m<<2)>>2]=0;m=m+1|0}while((m|0)<(c[h>>2]|0))}c[j>>2]=0;c[l>>2]=c[g>>2];if(!(c[e+404>>2]|0))a[G+40>>0]=0}do if(!(a[G+40>>0]|0)){s=c[e+380>>2]|0;u=c[e+388>>2]|0;t=1<>2]|0;c[H+16>>2]=e;x=e+24|0;z=c[x>>2]|0;c[H>>2]=c[z>>2];y=H+4|0;c[y>>2]=c[z+4>>2];z=G+12|0;j=c[z>>2]|0;A=G+16|0;h=c[A>>2]|0;B=G+20|0;k=c[B>>2]|0;w=c[f>>2]|0;n=c[G+64>>2]|0;m=c[e+376>>2]|0;q=H+8|0;r=H+12|0;a:do if(!k){g=0;while(1){if((h|0)<8){if(!((z2(H,j,h,0)|0)<<24>>24))break a;j=c[q>>2]|0;h=c[r>>2]|0;if((h|0)<8){k=1;C=18}else C=16}else C=16;if((C|0)==16){C=0;l=j>>h+-8&255;k=c[n+(l<<2)+144>>2]|0;if(!k){k=9;C=18}else{h=h-k|0;k=d[n+l+1168>>0]|0}}if((C|0)==18){C=0;k=A2(H,j,h,n,k)|0;if((k|0)<0)break a;h=c[r>>2]|0;j=c[q>>2]|0}l=k>>4;k=k&15;if(!k)if((l|0)==15){k=j;l=15;f=0}else break;else if((k|0)==1)C=22;else{C=c[e>>2]|0;c[C+20>>2]=121;Jd[c[C+4>>2]&255](e,-1);C=22}if((C|0)==22){C=0;if((h|0)<1){if(!((z2(H,j,h,1)|0)<<24>>24))break a;h=c[r>>2]|0;j=c[q>>2]|0}f=h+-1|0;h=f;k=j;f=(1<>2]<<1)|0;do if(!(b[l>>1]|0))if((k|0)<1)break b;else k=k+-1|0;else{if((h|0)<1){if(!((z2(H,j,h,1)|0)<<24>>24))break a;h=c[r>>2]|0;j=c[q>>2]|0}h=h+-1|0;if((1<>1]|0,p=o<<16>>16,(p&t|0)==0):0)if(o<<16>>16>-1){b[l>>1]=p+t;break}else{b[l>>1]=p+u;break}}while(0);l=m+1|0;if((m|0)<(s|0))m=l;else{m=l;break}}if(f){l=c[v+(m<<2)>>2]|0;b[w+(l<<1)>>1]=f;c[F+(g<<2)>>2]=l;g=g+1|0}if((m|0)<(s|0))m=m+1|0;else{k=0;g=j;C=59;break a}}k=1<>24))break;h=c[r>>2]|0;j=c[q>>2]|0}h=h-l|0;k=(j>>h&c[279344+(l<<2)>>2])+k|0;if(!k){k=0;g=j;C=59}else C=47}else C=47}else{g=0;C=47}while(0);c:do if((C|0)==47){while(1){l=w+(c[v+(m<<2)>>2]<<1)|0;do if(b[l>>1]|0){if((h|0)<1){if(!((z2(H,j,h,1)|0)<<24>>24))break c;h=c[r>>2]|0;j=c[q>>2]|0}h=h+-1|0;if((1<>1]|0,E=D<<16>>16,(E&t|0)==0):0)if(D<<16>>16>-1){b[l>>1]=E+t;break}else{b[l>>1]=E+u;break}}while(0);if((m|0)<(s|0))m=m+1|0;else break}k=k+-1|0;g=j;C=59}while(0);if((C|0)==59){F=c[x>>2]|0;c[F>>2]=c[H>>2];c[F+4>>2]=c[y>>2];c[z>>2]=g;c[A>>2]=h;c[B>>2]=k;break}if(!g){H=0;i=I;return H|0}do{g=g+-1|0;b[w+(c[F+(g<<2)>>2]<<1)>>1]=0}while((g|0)!=0);g=0;i=I;return g|0}while(0);H=G+44|0;c[H>>2]=(c[H>>2]|0)+-1;H=1;i=I;return H|0}function I0(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+1296|0;n=u+1028|0;t=u;if(f>>>0>3){s=c[b>>2]|0;c[s+20>>2]=52;c[s+24>>2]=f;Id[c[s>>2]&511](b)}r=e<<24>>24==0;if(r)e=b+(f<<2)+176|0;else e=b+(f<<2)+160|0;s=c[e>>2]|0;if(!s){q=c[b>>2]|0;c[q+20>>2]=52;c[q+24>>2]=f;Id[c[q>>2]&511](b)}e=c[g>>2]|0;if(!e){e=Od[c[c[b+4>>2]>>2]&255](b,1,1424)|0;c[g>>2]=e;q=b}else q=b;c[e+140>>2]=s;k=1;j=0;do{h=a[s+k>>0]|0;f=h&255;g=f+j|0;if((g|0)>256){p=c[b>>2]|0;c[p+20>>2]=9;Id[c[p>>2]&511](q)}if(h<<24>>24){Cga(n+j|0,k&255|0,f|0)|0;j=g}k=k+1|0}while((k|0)!=17);a[n+j>>0]=0;h=a[n>>0]|0;if(!(h<<24>>24)){h=1;f=0}else{k=h;f=0;g=0;m=h<<24>>24;while(1){if((k<<24>>24|0)==(m|0)){h=g;while(1){g=h+1|0;c[t+(h<<2)>>2]=f;f=f+1|0;h=a[n+g>>0]|0;if((h<<24>>24|0)==(m|0))h=g;else break}}else h=k;if((f|0)>=(1<>2]|0;c[p+20>>2]=9;Id[c[p>>2]&511](q)}if(!(h<<24>>24)){h=1;f=0;break}else{k=h;f=f<<1;m=m+1|0}}}do{g=s+h|0;if(!(a[g>>0]|0))c[e+(h<<2)>>2]=-1;else{c[e+(h<<2)+72>>2]=f-(c[t+(f<<2)>>2]|0);f=(d[g>>0]|0)+f|0;c[e+(h<<2)>>2]=c[t+(f+-1<<2)>>2]}h=h+1|0}while((h|0)!=17);c[e+68>>2]=1048575;Cga(e+144|0,0,1024)|0;p=1;f=0;do{l=s+p|0;if(a[l>>0]|0){m=8-p|0;n=1<>2]<>2]=p;a[e+k+1168>>0]=a[h>>0]|0;g=g+-1|0;if((g|0)<=0)break;else k=k+1|0}f=f+1|0;if((o|0)<(d[l>>0]|0))o=o+1|0;else break}}p=p+1|0}while((p|0)!=9);if((j|0)>0&(r^1))e=0;else{i=u;return}do{if((d[s+e+17>>0]|0)>15){t=c[b>>2]|0;c[t+20>>2]=9;Id[c[t>>2]&511](q)}e=e+1|0}while((e|0)!=(j|0));i=u;return}function J0(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+48|0;D=G+20|0;F=G;E=c[e+432>>2]|0;g=e+252|0;if((c[g>>2]|0)!=0?(l=E+44|0,(c[l>>2]|0)==0):0){B=E+16|0;C=c[e+428>>2]|0;A=C+20|0;c[A>>2]=(c[A>>2]|0)+((c[B>>2]|0)/8|0);c[B>>2]=0;if(!((Ld[c[C+8>>2]&511](e)|0)<<24>>24)){F=0;i=G;return F|0}h=e+304|0;j=E+20|0;if((c[h>>2]|0)>0){k=j+4|0;m=0;do{c[k+(m<<2)>>2]=0;m=m+1|0}while((m|0)<(c[h>>2]|0))}c[j>>2]=0;c[l>>2]=c[g>>2];if(!(c[e+404>>2]|0))a[E+40>>0]=0}if(!(a[E+40>>0]|0)){c[D+16>>2]=e;y=e+24|0;m=c[y>>2]|0;j=c[m>>2]|0;c[D>>2]=j;h=c[m+4>>2]|0;z=D+4|0;c[z>>2]=h;A=E+12|0;g=c[A>>2]|0;B=E+16|0;k=c[B>>2]|0;C=E+20|0;c[F+0>>2]=c[C+0>>2];c[F+4>>2]=c[C+4>>2];c[F+8>>2]=c[C+8>>2];c[F+12>>2]=c[C+12>>2];c[F+16>>2]=c[C+16>>2];x=e+332|0;do if((c[x>>2]|0)>0){s=E+100|0;t=D+8|0;u=D+12|0;v=E+140|0;w=E+180|0;r=0;a:while(1){o=c[f+(r<<2)>>2]|0;m=c[s+(r<<2)>>2]|0;if((k|0)<8){if(!((z2(D,g,k,0)|0)<<24>>24)){g=0;p=65;break}g=c[t>>2]|0;k=c[u>>2]|0;if((k|0)<8){h=1;p=17}else p=15}else p=15;if((p|0)==15){p=0;j=g>>k+-8&255;h=c[m+(j<<2)+144>>2]|0;if(!h){h=9;p=17}else{k=k-h|0;h=d[m+j+1168>>0]|0}}if((p|0)==17){h=A2(D,g,k,m,h)|0;if((h|0)<0){g=0;p=65;break}k=c[u>>2]|0;g=c[t>>2]|0}q=c[v+(r<<2)>>2]|0;n=c[w+(r<<2)>>2]|0;j=(h|0)!=0;b:do if(!n)if(j){if((k|0)<(h|0)){if(!((z2(D,g,k,h)|0)<<24>>24)){g=0;p=65;break a}k=c[u>>2]|0;g=c[t>>2]|0}k=k-h|0;m=1;p=47}else{m=1;p=47}else{if(j){if((k|0)<(h|0)){if(!((z2(D,g,k,h)|0)<<24>>24)){g=0;p=65;break a}k=c[u>>2]|0;g=c[t>>2]|0}k=k-h|0;l=c[279344+(h<<2)>>2]|0;m=g>>k&l;h=m-((m|0)>(c[279344+(h+-1<<2)>>2]|0)?0:l)|0}else h=0;m=F+(c[e+(r<<2)+336>>2]<<2)+4|0;l=(c[m>>2]|0)+h|0;c[m>>2]=l;b[o>>1]=l;if((n|0)>1){l=1;do{if((k|0)<8){if(!((z2(D,g,k,0)|0)<<24>>24)){g=0;p=65;break a}g=c[t>>2]|0;k=c[u>>2]|0;if((k|0)<8){h=1;p=31}else p=29}else p=29;if((p|0)==29){p=0;j=g>>k+-8&255;h=c[q+(j<<2)+144>>2]|0;if(!h){h=9;p=31}else{k=k-h|0;h=d[q+j+1168>>0]|0}}if((p|0)==31){p=0;h=A2(D,g,k,q,h)|0;if((h|0)<0){g=0;p=65;break a}k=c[u>>2]|0;g=c[t>>2]|0}j=h>>4;m=h&15;if(!m){if((j|0)!=15)break b;h=l+15|0}else{h=j+l|0;if((k|0)<(m|0)){if(!((z2(D,g,k,m)|0)<<24>>24)){g=0;p=65;break a}k=c[u>>2]|0;g=c[t>>2]|0}k=k-m|0;l=c[279344+(m<<2)>>2]|0;j=g>>k&l;b[o+(c[285352+(h<<2)>>2]<<1)>>1]=j-((j|0)>(c[279344+(m+-1<<2)>>2]|0)?0:l)}l=h+1|0}while((l|0)<(n|0));if((l|0)<64){m=l;p=47}}else{m=1;p=47}}while(0);c:do if((p|0)==47)while(1){if((k|0)<8){if(!((z2(D,g,k,0)|0)<<24>>24)){g=0;p=65;break a}g=c[t>>2]|0;k=c[u>>2]|0;if((k|0)<8){h=1;p=52}else p=50}else p=50;if((p|0)==50){p=0;j=g>>k+-8&255;h=c[q+(j<<2)+144>>2]|0;if(!h){h=9;p=52}else{k=k-h|0;h=d[q+j+1168>>0]|0}}if((p|0)==52){h=A2(D,g,k,q,h)|0;if((h|0)<0){g=0;p=65;break a}k=c[u>>2]|0;g=c[t>>2]|0}j=h>>4;h=h&15;if(!h)if((j|0)==15)j=15;else break c;else{if((k|0)<(h|0)){if(!((z2(D,g,k,h)|0)<<24>>24)){g=0;p=65;break a}k=c[u>>2]|0;g=c[t>>2]|0}k=k-h|0}m=m+1+j|0;if((m|0)>=64)break;else p=47}while(0);r=r+1|0;if((r|0)>=(c[x>>2]|0)){p=62;break}}if((p|0)==62){j=c[D>>2]|0;m=c[y>>2]|0;h=c[z>>2]|0;break}else if((p|0)==65){i=G;return g|0}}while(0);c[m>>2]=j;c[m+4>>2]=h;c[A>>2]=g;c[B>>2]=k;c[C+0>>2]=c[F+0>>2];c[C+4>>2]=c[F+4>>2];c[C+8>>2]=c[F+8>>2];c[C+12>>2]=c[F+12>>2];c[C+16>>2]=c[F+16>>2]}F=E+44|0;c[F>>2]=(c[F>>2]|0)+-1;F=1;i=G;return F|0}function K0(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=i;i=i+48|0;E=H+20|0;G=H;F=c[e+432>>2]|0;g=e+252|0;if((c[g>>2]|0)!=0?(l=F+44|0,(c[l>>2]|0)==0):0){C=F+16|0;D=c[e+428>>2]|0;B=D+20|0;c[B>>2]=(c[B>>2]|0)+((c[C>>2]|0)/8|0);c[C>>2]=0;if(!((Ld[c[D+8>>2]&511](e)|0)<<24>>24)){F=0;i=H;return F|0}h=e+304|0;j=F+20|0;if((c[h>>2]|0)>0){k=j+4|0;m=0;do{c[k+(m<<2)>>2]=0;m=m+1|0}while((m|0)<(c[h>>2]|0))}c[j>>2]=0;c[l>>2]=c[g>>2];if(!(c[e+404>>2]|0))a[F+40>>0]=0}if(!(a[F+40>>0]|0)){w=c[e+396>>2]|0;x=c[e+400>>2]|0;c[E+16>>2]=e;z=e+24|0;j=c[z>>2]|0;m=c[j>>2]|0;c[E>>2]=m;h=c[j+4>>2]|0;A=E+4|0;c[A>>2]=h;B=F+12|0;g=c[B>>2]|0;C=F+16|0;k=c[C>>2]|0;D=F+20|0;c[G+0>>2]=c[D+0>>2];c[G+4>>2]=c[D+4>>2];c[G+8>>2]=c[D+8>>2];c[G+12>>2]=c[D+12>>2];c[G+16>>2]=c[D+16>>2];y=e+332|0;do if((c[y>>2]|0)>0){r=F+100|0;s=E+8|0;t=E+12|0;u=F+140|0;v=F+180|0;q=0;a:while(1){n=c[f+(q<<2)>>2]|0;m=c[r+(q<<2)>>2]|0;if((k|0)<8){if(!((z2(E,g,k,0)|0)<<24>>24)){g=0;o=65;break}g=c[s>>2]|0;k=c[t>>2]|0;if((k|0)<8){h=1;o=17}else o=15}else o=15;if((o|0)==15){o=0;j=g>>k+-8&255;h=c[m+(j<<2)+144>>2]|0;if(!h){h=9;o=17}else{k=k-h|0;h=d[m+j+1168>>0]|0}}if((o|0)==17){h=A2(E,g,k,m,h)|0;if((h|0)<0){g=0;o=65;break}k=c[t>>2]|0;g=c[s>>2]|0}p=c[u+(q<<2)>>2]|0;l=c[v+(q<<2)>>2]|0;j=(h|0)!=0;b:do if(!l)if(j){if((k|0)<(h|0)){if(!((z2(E,g,k,h)|0)<<24>>24)){g=0;o=65;break a}k=c[t>>2]|0;g=c[s>>2]|0}k=k-h|0;h=1;o=46}else{h=1;o=46}else{if(j){if((k|0)<(h|0)){if(!((z2(E,g,k,h)|0)<<24>>24)){g=0;o=65;break a}k=c[t>>2]|0;g=c[s>>2]|0}k=k-h|0;m=c[279344+(h<<2)>>2]|0;j=g>>k&m;h=j-((j|0)>(c[279344+(h+-1<<2)>>2]|0)?0:m)|0}else h=0;j=G+(c[e+(q<<2)+336>>2]<<2)+4|0;m=(c[j>>2]|0)+h|0;c[j>>2]=m;b[n>>1]=m;if((l|0)>1){h=1;while(1){if((k|0)<8){if(!((z2(E,g,k,0)|0)<<24>>24)){g=0;o=65;break a}g=c[s>>2]|0;k=c[t>>2]|0;if((k|0)<8){j=1;o=31}else o=29}else o=29;if((o|0)==29){o=0;m=g>>k+-8&255;j=c[p+(m<<2)+144>>2]|0;if(!j){j=9;o=31}else{k=k-j|0;j=d[p+m+1168>>0]|0}}if((o|0)==31){o=0;j=A2(E,g,k,p,j)|0;if((j|0)<0){g=0;o=65;break a}k=c[t>>2]|0;g=c[s>>2]|0}m=j>>4;j=j&15;if(!j){if((m|0)!=15)break b;h=h+15|0}else{h=m+h|0;if((k|0)<(j|0)){if(!((z2(E,g,k,j)|0)<<24>>24)){g=0;o=65;break a}k=c[t>>2]|0;g=c[s>>2]|0}k=k-j|0;m=c[279344+(j<<2)>>2]|0;o=g>>k&m;b[n+(c[w+(h<<2)>>2]<<1)>>1]=o-((o|0)>(c[279344+(j+-1<<2)>>2]|0)?0:m)}h=h+1|0;if((h|0)>=(l|0)){o=46;break}}}else{h=1;o=46}}while(0);c:do if((o|0)==46)if((h|0)<=(x|0)){m=h;do{if((k|0)<8){if(!((z2(E,g,k,0)|0)<<24>>24)){g=0;o=65;break a}g=c[s>>2]|0;k=c[t>>2]|0;if((k|0)<8){h=1;o=52}else o=50}else o=50;if((o|0)==50){o=0;j=g>>k+-8&255;h=c[p+(j<<2)+144>>2]|0;if(!h){h=9;o=52}else{k=k-h|0;h=d[p+j+1168>>0]|0}}if((o|0)==52){h=A2(E,g,k,p,h)|0;if((h|0)<0){g=0;o=65;break a}k=c[t>>2]|0;g=c[s>>2]|0}j=h>>4;h=h&15;if(!h)if((j|0)==15)j=15;else break c;else{if((k|0)<(h|0)){if(!((z2(E,g,k,h)|0)<<24>>24)){g=0;o=65;break a}k=c[t>>2]|0;g=c[s>>2]|0}k=k-h|0}m=m+1+j|0}while((m|0)<=(x|0))}while(0);q=q+1|0;if((q|0)>=(c[y>>2]|0)){o=62;break}}if((o|0)==62){m=c[E>>2]|0;j=c[z>>2]|0;h=c[A>>2]|0;break}else if((o|0)==65){i=H;return g|0}}while(0);c[j>>2]=m;c[j+4>>2]=h;c[B>>2]=g;c[C>>2]=k;c[D+0>>2]=c[G+0>>2];c[D+4>>2]=c[G+4>>2];c[D+8>>2]=c[G+8>>2];c[D+12>>2]=c[G+12>>2];c[D+16>>2]=c[G+16>>2]}F=F+44|0;c[F>>2]=(c[F>>2]|0)+-1;F=1;i=H;return F|0}function L0(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;u=b+412|0;y=c[u>>2]|0;A=y+48|0;do if(!(a[A>>0]|0))if(!(Wd[c[(c[b+416>>2]|0)+12>>2]&511](b,c[y+56+(c[y+64>>2]<<2)>>2]|0)|0)){i=B;return}else{a[A>>0]=1;z=y+76|0;c[z>>2]=(c[z>>2]|0)+1;break}while(0);z=y+68|0;g=c[z>>2]|0;if((g|0)==2){g=y+52|0;x=y+72|0;Td[c[(c[b+420>>2]|0)+4>>2]&63](b,c[y+56+(c[y+64>>2]<<2)>>2]|0,g,c[x>>2]|0,d,e,f);if((c[g>>2]|0)>>>0<(c[x>>2]|0)>>>0){i=B;return}c[z>>2]=0;if((c[e>>2]|0)>>>0>>0)h=9;else{i=B;return}}else if(!g){g=y+52|0;h=9}else if((g|0)==1)x=y+52|0;else{i=B;return}if((h|0)==9){c[g>>2]=0;q=c[b+292>>2]|0;c[y+72>>2]=q+-1;if((c[y+76>>2]|0)==(c[b+296>>2]|0)?(j=c[u>>2]|0,t=c[b+36>>2]|0,(t|0)>0):0){r=j+72|0;s=j+64|0;j=j+56|0;l=0;n=c[b+196>>2]|0;while(1){x=ea(c[n+40>>2]|0,c[n+12>>2]|0)|0;o=(x|0)/(q|0)|0;h=((c[n+48>>2]|0)>>>0)%(x>>>0)|0;h=(h|0)==0?x:h;if(!l)c[r>>2]=((h+-1|0)/(o|0)|0)+1;p=c[(c[j+(c[s>>2]<<2)>>2]|0)+(l<<2)>>2]|0;m=o<<1;if((o|0)>0){o=p+(h+-1<<2)|0;k=0;do{c[p+(k+h<<2)>>2]=c[o>>2];k=k+1|0}while((k|0)<(m|0))}l=l+1|0;if((l|0)==(t|0))break;else n=n+88|0}}c[z>>2]=1;x=g}v=y+64|0;w=y+72|0;Td[c[(c[b+420>>2]|0)+4>>2]&63](b,c[y+56+(c[v>>2]<<2)>>2]|0,x,c[w>>2]|0,d,e,f);if((c[x>>2]|0)>>>0<(c[w>>2]|0)>>>0){i=B;return}if((c[y+76>>2]|0)==1){h=c[u>>2]|0;g=c[b+292>>2]|0;t=c[b+36>>2]|0;if((t|0)>0){u=h+56|0;p=h+60|0;q=g+1|0;r=g+2|0;s=0;n=c[b+196>>2]|0;while(1){h=(ea(c[n+40>>2]|0,c[n+12>>2]|0)|0)/(g|0)|0;j=c[(c[u>>2]|0)+(s<<2)>>2]|0;k=c[(c[p>>2]|0)+(s<<2)>>2]|0;if((h|0)>0){l=ea(h,q)|0;m=ea(h,r)|0;o=0;do{d=o+l|0;b=o-h|0;c[j+(b<<2)>>2]=c[j+(d<<2)>>2];c[k+(b<<2)>>2]=c[k+(d<<2)>>2];b=o+m|0;c[j+(b<<2)>>2]=c[j+(o<<2)>>2];c[k+(b<<2)>>2]=c[k+(o<<2)>>2];o=o+1|0}while((o|0)!=(h|0))}s=s+1|0;if((s|0)==(t|0))break;else n=n+88|0}}}else g=c[b+292>>2]|0;c[v>>2]=c[v>>2]^1;a[A>>0]=0;c[x>>2]=g+1;c[w>>2]=g+2;c[z>>2]=2;i=B;return}function M0(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;l=i;j=c[b+412>>2]|0;k=j+48|0;do if(!(a[k>>0]|0)){g=j+8|0;if(!(Wd[c[(c[b+416>>2]|0)+12>>2]&511](b,g)|0)){i=l;return}else{a[k>>0]=1;h=g;break}}else h=j+8|0;while(0);m=c[b+292>>2]|0;g=j+52|0;Td[c[(c[b+420>>2]|0)+4>>2]&63](b,h,g,m,d,e,f);if((c[g>>2]|0)>>>0>>0){i=l;return}a[k>>0]=0;c[g>>2]=0;i=l;return}function N0(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;Td[c[(c[a+420>>2]|0)+4>>2]&63](a,0,0,0,b,d,e);i=f;return}function O0(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;q=c[b+24>>2]|0;j=c[q>>2]|0;r=q+4|0;h=c[r>>2]|0;a[b+200>>0]=e;a[b+201>>0]=f;a[b+202>>0]=g;do if(!h)if(!((Ld[c[q+12>>2]&511](b)|0)<<24>>24)){r=0;i=s;return r|0}else{h=c[r>>2]|0;j=c[q>>2]|0;break}while(0);h=h+-1|0;g=j+1|0;j=d[j>>0]<<8;do if(!h)if(!((Ld[c[q+12>>2]&511](b)|0)<<24>>24)){r=0;i=s;return r|0}else{h=c[r>>2]|0;g=c[q>>2]|0;break}while(0);h=h+-1|0;e=g+1|0;m=d[g>>0]|j;do if(!h)if(!((Ld[c[q+12>>2]&511](b)|0)<<24>>24)){r=0;i=s;return r|0}else{h=c[r>>2]|0;e=c[q>>2]|0;break}while(0);h=h+-1|0;j=e+1|0;c[b+192>>2]=d[e>>0];do if(!h)if(!((Ld[c[q+12>>2]&511](b)|0)<<24>>24)){r=0;i=s;return r|0}else{h=c[r>>2]|0;j=c[q>>2]|0;break}while(0);e=h+-1|0;g=j+1|0;h=d[j>>0]<<8;l=b+32|0;c[l>>2]=h;do if(!e)if(!((Ld[c[q+12>>2]&511](b)|0)<<24>>24)){r=0;i=s;return r|0}else{h=c[l>>2]|0;e=c[r>>2]|0;g=c[q>>2]|0;break}while(0);e=e+-1|0;j=g+1|0;c[l>>2]=h+(d[g>>0]|0);do if(!e)if(!((Ld[c[q+12>>2]&511](b)|0)<<24>>24)){r=0;i=s;return r|0}else{h=c[r>>2]|0;e=c[q>>2]|0;break}else{h=e;e=j}while(0);j=h+-1|0;g=e+1|0;h=d[e>>0]<<8;f=b+28|0;c[f>>2]=h;do if(!j)if(!((Ld[c[q+12>>2]&511](b)|0)<<24>>24)){r=0;i=s;return r|0}else{h=c[f>>2]|0;e=c[r>>2]|0;g=c[q>>2]|0;break}else e=j;while(0);e=e+-1|0;j=g+1|0;c[f>>2]=h+(d[g>>0]|0);do if(!e)if(!((Ld[c[q+12>>2]&511](b)|0)<<24>>24)){r=0;i=s;return r|0}else{e=c[r>>2]|0;k=c[q>>2]|0;break}else k=j;while(0);o=b+36|0;c[o>>2]=d[k>>0];j=m+-8|0;p=c[b>>2]|0;c[p+24>>2]=c[b+404>>2];c[p+28>>2]=c[f>>2];c[p+32>>2]=c[l>>2];c[p+36>>2]=c[o>>2];c[p+20>>2]=102;Jd[c[p+4>>2]&255](b,1);p=b+428|0;if(a[(c[p>>2]|0)+13>>0]|0){g=c[b>>2]|0;c[g+20>>2]=61;Id[c[g>>2]&511](b)}if(((c[l>>2]|0)!=0?(c[f>>2]|0)!=0:0)?(n=c[o>>2]|0,(n|0)>=1):0)h=n;else{h=c[b>>2]|0;c[h+20>>2]=33;Id[c[h>>2]&511](b);h=c[o>>2]|0}if((j|0)!=(h*3|0)){l=c[b>>2]|0;c[l+20>>2]=12;Id[c[l>>2]&511](b)}n=b+196|0;if(!(c[n>>2]|0))c[n>>2]=Od[c[c[b+4>>2]>>2]&255](b,1,(c[o>>2]|0)*88|0)|0;g=e+-1|0;h=k+1|0;a:do if((c[o>>2]|0)>0){l=q+12|0;m=0;while(1){if(!g){if(!((Ld[c[l>>2]&511](b)|0)<<24>>24)){h=0;j=55;break}g=c[r>>2]|0;h=c[q>>2]|0}f=g+-1|0;j=h+1|0;h=d[h>>0]|0;k=c[n>>2]|0;b:do if((m|0)>0){e=k;g=0;while(1){if((h|0)==(c[e>>2]|0))break;g=g+1|0;e=e+88|0;if((g|0)>=(m|0))break b}h=c[k>>2]|0;e=k+88|0;if((m|0)>1){g=1;while(1){t=c[e>>2]|0;h=(t|0)>(h|0)?t:h;g=g+1|0;if((g|0)==(m|0))break;else e=e+88|0}e=k+(m*88|0)|0}h=h+1|0}else e=k;while(0);c[e>>2]=h;c[e+4>>2]=m;if(!f){if(!((Ld[c[l>>2]&511](b)|0)<<24>>24)){h=0;j=55;break}h=c[r>>2]|0;j=c[q>>2]|0}else h=f;h=h+-1|0;g=j+1|0;t=d[j>>0]|0;f=e+8|0;c[f>>2]=t>>>4;k=e+12|0;c[k>>2]=t&15;if(!h){if(!((Ld[c[l>>2]&511](b)|0)<<24>>24)){h=0;j=55;break}h=c[r>>2]|0;j=c[q>>2]|0}else j=g;t=e+16|0;c[t>>2]=d[j>>0];g=c[b>>2]|0;c[g+24>>2]=c[e>>2];c[g+28>>2]=c[f>>2];c[g+32>>2]=c[k>>2];c[g+36>>2]=c[t>>2];c[g+20>>2]=103;Jd[c[g+4>>2]&255](b,1);m=m+1|0;g=h+-1|0;h=j+1|0;if((m|0)>=(c[o>>2]|0))break a}if((j|0)==55){i=s;return h|0}}while(0);a[(c[p>>2]|0)+13>>0]=1;c[q>>2]=h;c[r>>2]=g;t=1;i=s;return t|0}function P0(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;s=h+g|0;if(((((g>>>0>13?(a[f>>0]|0)==74:0)?(a[f+1>>0]|0)==70:0)?(a[f+2>>0]|0)==73:0)?(a[f+3>>0]|0)==70:0)?(a[f+4>>0]|0)==0:0){a[e+256>>0]=1;j=a[f+5>>0]|0;l=e+257|0;a[l>>0]=j;m=a[f+6>>0]|0;n=e+258|0;a[n>>0]=m;h=a[f+7>>0]|0;q=e+259|0;a[q>>0]=h;g=(d[f+8>>0]<<8|d[f+9>>0])&65535;o=e+260|0;b[o>>1]=g;k=(d[f+10>>0]<<8|d[f+11>>0])&65535;p=e+262|0;b[p>>1]=k;if((j+-1<<24>>24&255)<2)r=e;else{r=c[e>>2]|0;c[r+20>>2]=122;c[r+24>>2]=j&255;c[r+28>>2]=m&255;Jd[c[r+4>>2]&255](e,-1);r=e;j=a[l>>0]|0;m=a[n>>0]|0;g=b[o>>1]|0;k=b[p>>1]|0;h=a[q>>0]|0}q=c[e>>2]|0;c[q+24>>2]=j&255;c[q+28>>2]=m&255;c[q+32>>2]=g&65535;c[q+36>>2]=k&65535;c[q+40>>2]=h&255;c[q+20>>2]=89;Jd[c[q+4>>2]&255](r,1);h=f+12|0;j=a[h>>0]|0;k=f+13|0;g=a[k>>0]|0;if((g|j)<<24>>24){j=c[e>>2]|0;c[j+20>>2]=92;c[j+24>>2]=d[h>>0];c[j+28>>2]=d[k>>0];Jd[c[j+4>>2]&255](r,1);j=a[h>>0]|0;g=a[k>>0]|0}h=s+-14|0;if((h|0)==(ea((j&255)*3|0,g&255)|0)){i=t;return}e=c[e>>2]|0;c[e+20>>2]=90;c[e+24>>2]=h;Jd[c[e+4>>2]&255](r,1);i=t;return}if(((((g>>>0>5?(a[f>>0]|0)==74:0)?(a[f+1>>0]|0)==70:0)?(a[f+2>>0]|0)==88:0)?(a[f+3>>0]|0)==88:0)?(a[f+4>>0]|0)==0:0){h=f+5|0;g=d[h>>0]|0;if((g|0)==16){r=c[e>>2]|0;c[r+20>>2]=110;c[r+24>>2]=s;Jd[c[r+4>>2]&255](e,1);i=t;return}else if((g|0)==17){r=c[e>>2]|0;c[r+20>>2]=111;c[r+24>>2]=s;Jd[c[r+4>>2]&255](e,1);i=t;return}else if((g|0)==19){r=c[e>>2]|0;c[r+20>>2]=112;c[r+24>>2]=s;Jd[c[r+4>>2]&255](e,1);i=t;return}else{r=c[e>>2]|0;c[r+20>>2]=91;c[r+24>>2]=d[h>>0];c[r+28>>2]=s;Jd[c[r+4>>2]&255](e,1);i=t;return}}r=c[e>>2]|0;c[r+20>>2]=79;c[r+24>>2]=s;Jd[c[r+4>>2]&255](e,1);i=t;return}function Q0(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;k=j;n=c[a+420>>2]|0;l=h-(c[g>>2]|0)|0;m=c[n+16>>2]|0;c[k>>2]=0;h=n+12|0;Td[c[(c[a+440>>2]|0)+4>>2]&63](a,b,d,e,c[h>>2]|0,k,l>>>0>m>>>0?m:l);de[c[(c[a+448>>2]|0)+4>>2]&63](a,c[h>>2]|0,f+(c[g>>2]<<2)|0,c[k>>2]|0);c[g>>2]=(c[g>>2]|0)+(c[k>>2]|0);i=j;return}function R0(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;m=i;k=c[a+420>>2]|0;l=k+24|0;h=c[l>>2]|0;if(!h){j=k+16|0;f=Xd[c[(c[a+4>>2]|0)+28>>2]&127](a,c[k+8>>2]|0,c[k+20>>2]|0,c[j>>2]|0,1)|0;c[k+12>>2]=f;h=c[l>>2]|0}else{j=k+16|0;f=c[k+12>>2]|0}Td[c[(c[a+440>>2]|0)+4>>2]&63](a,b,d,e,f,l,c[j>>2]|0);f=c[l>>2]|0;if(f>>>0>h>>>0){f=f-h|0;de[c[(c[a+448>>2]|0)+4>>2]&63](a,(c[k+12>>2]|0)+(h<<2)|0,0,f);c[g>>2]=(c[g>>2]|0)+f;f=c[l>>2]|0}h=c[j>>2]|0;if(f>>>0>>0){i=m;return}g=k+20|0;c[g>>2]=(c[g>>2]|0)+h;c[l>>2]=0;i=m;return}function S0(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;m=i;e=c[a+420>>2]|0;l=e+24|0;d=c[l>>2]|0;if(!d){k=e+20|0;b=e+16|0;n=Xd[c[(c[a+4>>2]|0)+28>>2]&127](a,c[e+8>>2]|0,c[k>>2]|0,c[b>>2]|0,0)|0;c[e+12>>2]=n;j=k;d=c[l>>2]|0;e=n}else{k=e+20|0;j=k;b=e+16|0;e=c[e+12>>2]|0}n=(c[b>>2]|0)-d|0;o=c[g>>2]|0;h=h-o|0;n=n>>>0>h>>>0?h:n;h=(c[a+96>>2]|0)-(c[j>>2]|0)|0;n=n>>>0>h>>>0?h:n;de[c[(c[a+448>>2]|0)+4>>2]&63](a,e+(d<<2)|0,f+(o<<2)|0,n);c[g>>2]=(c[g>>2]|0)+n;n=(c[l>>2]|0)+n|0;c[l>>2]=n;d=c[b>>2]|0;if(n>>>0>>0){i=m;return}c[k>>2]=(c[j>>2]|0)+d;c[l>>2]=0;i=m;return}function T0(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;o=c[(c[b+448>>2]|0)+24>>2]|0;m=c[o>>2]|0;n=c[o+4>>2]|0;o=c[o+8>>2]|0;b=c[b+92>>2]|0;if((g|0)<1|(b|0)==0){i=p;return}else l=0;do{h=b;j=c[e+(l<<2)>>2]|0;k=c[f+(l<<2)>>2]|0;while(1){a[k>>0]=(d[n+(d[j+1>>0]|0)>>0]|0)+(d[m+(d[j>>0]|0)>>0]|0)+(d[o+(d[j+2>>0]|0)>>0]|0);h=h+-1|0;if(!h)break;else{j=j+3|0;k=k+1|0}}l=l+1|0}while((l|0)!=(g|0));i=p;return}function U0(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;r=c[(c[b+448>>2]|0)+24>>2]|0;s=c[b+92>>2]|0;m=c[b+100>>2]|0;if((g|0)<=0){i=t;return}n=(s|0)==0;l=(m|0)>0;q=0;do{if(!n){o=s;b=c[e+(q<<2)>>2]|0;p=c[f+(q<<2)>>2]|0;while(1){if(l){h=0;j=0;k=b;while(1){j=(d[(c[r+(h<<2)>>2]|0)+(d[k>>0]|0)>>0]|0)+j|0;h=h+1|0;if((h|0)==(m|0))break;else k=k+1|0}h=j&255;b=b+m|0}else h=0;a[p>>0]=h;o=o+-1|0;if(!o)break;else p=p+1|0}}q=q+1|0}while((q|0)!=(g|0));i=t;return}function V0(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;h=c[b+448>>2]|0;y=c[h+24>>2]|0;w=c[y>>2]|0;x=c[y+4>>2]|0;y=c[y+8>>2]|0;u=c[b+92>>2]|0;if((g|0)<=0){i=z;return}v=h+48|0;b=h+52|0;h=b+4|0;j=b+8|0;k=(u|0)==0;o=c[v>>2]|0;t=0;do{l=c[b>>2]|0;m=c[h>>2]|0;n=c[j>>2]|0;if(!k){p=u;q=0;r=c[e+(t<<2)>>2]|0;s=c[f+(t<<2)>>2]|0;while(1){a[s>>0]=(d[x+((d[r+1>>0]|0)+(c[m+(o<<6)+(q<<2)>>2]|0))>>0]|0)+(d[w+((d[r>>0]|0)+(c[l+(o<<6)+(q<<2)>>2]|0))>>0]|0)+(d[y+((d[r+2>>0]|0)+(c[n+(o<<6)+(q<<2)>>2]|0))>>0]|0);p=p+-1|0;if(!p)break;else{q=q+1&15;r=r+3|0;s=s+1|0}}}o=o+1&15;c[v>>2]=o;t=t+1|0}while((t|0)!=(g|0));i=z;return}function W0(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;h=c[b+448>>2]|0;y=c[b+100>>2]|0;u=c[b+92>>2]|0;if((g|0)<=0){i=z;return}v=h+48|0;w=(y|0)>0;x=h+24|0;b=h+52|0;h=(u|0)==0;t=0;do{j=f+(t<<2)|0;Cga(c[j>>2]|0,0,u|0)|0;k=c[v>>2]|0;if(w){l=e+(t<<2)|0;o=0;do{m=c[(c[x>>2]|0)+(o<<2)>>2]|0;n=c[b+(o<<2)>>2]|0;if(!h){p=u;q=0;r=(c[l>>2]|0)+o|0;s=c[j>>2]|0;while(1){a[s>>0]=(d[s>>0]|0)+(d[m+((d[r>>0]|0)+(c[n+(k<<6)+(q<<2)>>2]|0))>>0]|0);p=p+-1|0;if(!p)break;else{q=q+1&15;r=r+y|0;s=s+1|0}}}o=o+1|0}while((o|0)!=(y|0))}c[v>>2]=k+1&15;t=t+1|0}while((t|0)!=(g|0));i=z;return}function X0(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;N=i;j=c[e+448>>2]|0;L=c[e+100>>2]|0;M=c[e+92>>2]|0;J=c[e+300>>2]|0;if((h|0)<=0){i=N;return}K=(L|0)>0;G=j+84|0;H=j+68|0;I=j+24|0;w=j+16|0;x=(M|0)==0;y=M+-1|0;z=ea(y,L)|0;A=0-L|0;B=M+1|0;F=0;do{C=g+(F<<2)|0;Cga(c[C>>2]|0,0,M|0)|0;if(K){D=f+(F<<2)|0;E=0;do{j=c[C>>2]|0;if(!(a[G>>0]|0)){k=E;u=1;v=L;e=c[H+(E<<2)>>2]|0}else{k=E+z|0;u=-1;v=A;e=(c[H+(E<<2)>>2]|0)+(B<<1)|0;j=j+y|0}n=c[(c[I>>2]|0)+(E<<2)>>2]|0;o=c[(c[w>>2]|0)+(E<<2)>>2]|0;if(x)j=0;else{t=ea(M,u)|0;p=0;q=0;r=M;l=0;s=e;m=(c[D>>2]|0)+k|0;while(1){P=s;s=s+(u<<1)|0;l=d[J+((l+8+(b[s>>1]|0)>>4)+(d[m>>0]|0))>>0]|0;k=d[n+l>>0]|0;a[j>>0]=(d[j>>0]|0)+k;O=p;p=l-(d[o+k>>0]|0)|0;k=p<<1;l=k+p|0;b[P>>1]=l+q;l=l+k|0;q=l+O|0;r=r+-1|0;if(!r)break;else{l=l+k|0;m=m+v|0;j=j+u|0}}j=q&65535;e=e+(t<<1)|0}b[e>>1]=j;E=E+1|0}while((E|0)!=(L|0))}a[G>>0]=(a[G>>0]|0)==0&1;F=F+1|0}while((F|0)!=(h|0));i=N;return}function Y0(a,e,f,g){a=a|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;l=i;k=c[(c[a+448>>2]|0)+24>>2]|0;f=c[a+92>>2]|0;if((g|0)<1|(f|0)==0){i=l;return}else j=0;do{a=f;h=c[e+(j<<2)>>2]|0;while(1){m=(c[k+((d[h>>0]|0)>>>3<<2)>>2]|0)+((d[h+1>>0]|0)>>>2<<6)+((d[h+2>>0]|0)>>>3<<1)|0;o=b[m>>1]|0;n=o+1<<16>>16;b[m>>1]=n<<16>>16==0?o:n;a=a+-1|0;if(!a)break;else h=h+3|0}j=j+1|0}while((j|0)!=(g|0));i=l;return} +function vY(f,h,j,k,l,m){f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+544|0;o=O+524|0;J=O+26|0;L=O+522|0;M=O+521|0;N=O;if((h|0)==0|(j|0)==0){N=0;i=O;return N|0}t=VI(h)|0;u=HI(h)|0;a[o>>0]=0;m=o+3|0;a[m>>0]=0;a[m+1>>0]=0;m=o+8|0;a[m>>0]=0;a[m+1>>0]=0;m=o+10|0;a[m>>0]=0;a[m+1>>0]=0;m=(FI(h)|0)&65535;p=o+12|0;a[p>>0]=m;a[p+1>>0]=m>>8;m=(GI(h)|0)&65535;r=o+14|0;a[r>>0]=m;a[r+1>>0]=m>>8;a[o+16>>0]=u;a[o+17>>0]=(u|0)==32?8:0;m=o+1|0;do if(t){a[m>>0]=1;a[o+2>>0]=l<<2&8|1;m=1<>0]=m;a[q+1>>0]=m>>8;m=o+7|0;if(!(ZI(h)|0)){a[m>>0]=24;s=f+4|0;ce[(d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24)&255](o,18,1,j)|0}else{a[m>>0]=32;s=f+4|0;ce[(d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24)&255](o,18,1,j)|0}I=(ZI(h)|0)==0;m=d[q>>0]|d[q+1>>0]<<8;k=m&65535;if(I){o=Afa(k*3|0)|0;if(m<<16>>16){m=0;do{a[o+(m*3|0)>>0]=a[t+(m<<2)>>0]|0;a[o+(m*3|0)+1>>0]=a[t+(m<<2)+1>>0]|0;a[o+(m*3|0)+2>>0]=a[t+(m<<2)+2>>0]|0;m=m+1|0}while(m>>>0>>0)}ce[(d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24)&255](o,3,k,j)|0;Bfa(o);I=s;break}else{k=Afa(k<<2)|0;n=_I(h)|0;I=d[q>>0]|d[q+1>>0]<<8;m=I&65535;if(I<<16>>16){o=0;do{a[k+(o<<2)>>0]=a[t+(o<<2)>>0]|0;a[k+(o<<2)+1>>0]=a[t+(o<<2)+1>>0]|0;a[k+(o<<2)+2>>0]=a[t+(o<<2)+2>>0]|0;a[k+(o<<2)+3>>0]=a[n+o>>0]|0;o=o+1|0}while(o>>>0>>0)}ce[(d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24)&255](k,4,m,j)|0;Bfa(k);I=s;break}}else{a[m>>0]=0;a[o+2>>0]=l<<2&8|2;I=o+5|0;a[I>>0]=0;a[I+1>>0]=0;a[o+7>>0]=0;I=f+4|0;ce[(d[I>>0]|d[I+1>>0]<<8|d[I+2>>0]<<16|d[I+3>>0]<<24)&255](o,18,1,j)|0}while(0);if(!(l&2)){m=d[p>>0]|d[p+1>>0]<<8;l=m&65535;o=d[r>>0]|d[r+1>>0]<<8;s=u>>>3;t=Afa(ea(l,s)|0)|0;if(o<<16>>16){r=m<<16>>16==0;p=o&65535;m=t;q=0;do{o=$J(h,q)|0;if((u|0)==24)m=o;else if((u|0)==16){if(!r){k=t;n=0;while(1){b[k>>1]=b[o+(n<<1)>>1]|0;n=n+1|0;if((n|0)==(l|0))break;else k=k+s|0}}}else if((u|0)==8)m=o;else if((u|0)==32)m=o;ce[(d[I>>0]|d[I+1>>0]<<8|d[I+2>>0]<<16|d[I+3>>0]<<24)&255](m,s,l,j)|0;q=q+1|0}while((q|0)!=(p|0))}Bfa(t)}else{u=FI(h)|0;C=GI(h)|0;D=(HI(h)|0)>>>3;E=PI(h)|0;F=Afa(D<<7)|0;u=Afa((~~+da(+(+(u>>>0)/3.0))>>>0)+(ea(D,u)|0)|0)|0;v=Afa(D)|0;if(C){w=v+2|0;x=v+4|0;y=v+8|0;z=v+12|0;A=v+1|0;l=D+1|0;B=u;s=F;o=0;m=0;G=0;do{r=$J(h,G)|0;k=u;n=0;a:while(1){t=(o|0)==0;p=(o|0)!=0;b:while(1){q=n;while(1){if(q>>>0>=E>>>0)break a;n=r+q|0;switch(D|0){case 16:{g[v>>2]=+g[n>>2];g[x>>2]=+g[r+(q+4)>>2];g[y>>2]=+g[r+(q+8)>>2];g[z>>2]=+g[r+(q+12)>>2];break}case 1:{a[v>>0]=a[n>>0]|0;break}case 3:{b[v>>1]=b[n>>1]|0;a[w>>0]=a[r+(q+2)>>0]|0;break}case 12:{g[v>>2]=+g[n>>2];g[x>>2]=+g[r+(q+4)>>2];g[y>>2]=+g[r+(q+8)>>2];break}case 6:{c[v>>2]=c[n>>2];b[x>>1]=b[r+(q+4)>>1]|0;break}case 4:{c[v>>2]=c[n>>2];break}case 8:{c[v>>2]=c[n>>2];c[x>>2]=c[r+(q+4)>>2];break}case 2:{b[v>>1]=b[n>>1]|0;break}default:{}}q=q+D|0;if(q>>>0>=E>>>0){H=40;break a}n=r+q|0;if((D|0)==3){if((b[v>>1]|0)==(b[n>>1]|0))n=(a[w>>0]|0)==(a[r+(q+2)>>0]|0);else n=0;n=n&1;H=39}else if((D|0)==4){n=(c[v>>2]|0)==(c[n>>2]|0)&1;H=39}else if((D|0)==2){n=(b[v>>1]|0)==(b[n>>1]|0)&1;H=39}else if((D|0)!=1){if(t){H=61;break}}else{n=(a[v>>0]|0)==(a[n>>0]|0)&1;H=39}if((H|0)==39){H=0;if(n){H=49;break}if(!p){H=61;break}}m=m+1<<24>>24;if(m<<24>>24){H=60;break b}else m=0}if((H|0)==49){H=0;if(!p){H=50;break}}else if((H|0)==61){H=0;if((D|0)==2)b[s>>1]=b[v>>1]|0;else if((D|0)==1)a[s>>0]=a[v>>0]|0;else if((D|0)==4)c[s>>2]=c[v>>2];else if((D|0)==3){a[s>>0]=a[v>>0]|0;a[s+1>>0]=a[A>>0]|0;a[s+2>>0]=a[w>>0]|0}s=s+D|0}m=m+1<<24>>24;if(m<<24>>24==-128){H=68;break}else n=q}if((H|0)==50){H=0;if(m<<24>>24){p=m&255;a[k>>0]=p+255;p=ea(p,D)|0;Aga(k+1|0,F|0,p|0)|0;s=F;k=k+(p+1)|0}if((D|0)==3){a[s>>0]=a[v>>0]|0;a[s+1>>0]=a[A>>0]|0;a[s+2>>0]=a[w>>0]|0}else if((D|0)==2)b[s>>1]=b[v>>1]|0;else if((D|0)==1)a[s>>0]=a[v>>0]|0;else if((D|0)==4)c[s>>2]=c[v>>2];m=1;o=1;s=s+D|0;n=q;continue}else if((H|0)==60){H=0;a[k>>0]=(m&255)+127|128;Aga(k+1|0,F|0,D|0)|0;m=0;o=0;s=F;k=k+l|0;n=q;continue}else if((H|0)==68){H=0;a[k>>0]=p?-1:127;n=ea(p?1:128,D)|0;Aga(k+1|0,F|0,n|0)|0;m=0;o=0;s=F;k=k+(n+1)|0;n=q;continue}}if((H|0)==40){H=0;if(t){if((D|0)==1)a[s>>0]=a[v>>0]|0;else if((D|0)==2)b[s>>1]=b[v>>1]|0;else if((D|0)==3){a[s>>0]=a[v>>0]|0;a[s+1>>0]=a[A>>0]|0;a[s+2>>0]=a[w>>0]|0}else if((D|0)==4)c[s>>2]=c[v>>2];s=s+D|0}m=m+1<<24>>24;if(!(m<<24>>24))m=0;else{m=m&255;a[k>>0]=m+255|(p?128:0);m=ea(p?1:m,D)|0;Aga(k+1|0,F|0,m|0)|0;k=k+(m+1)|0;m=0;o=0;s=F}}ce[(d[I>>0]|d[I+1>>0]<<8|d[I+2>>0]<<16|d[I+3>>0]<<24)&255](u,1,k-B|0,j)|0;G=G+1|0}while((G|0)!=(C|0))}Bfa(u);Bfa(F);Bfa(v)}m=CI(h)|0;if((((((((m|0)!=0?(EI(m)|0)==1:0)?(K=(HI(m)|0)+-8|0,K>>>0<25):0)?(16843009>>>(K&33554431)&1|0)!=0:0)?(K=HI(m)|0,(K|0)==(HI(h)|0)):0)?(K=EI(m)|0,(K|0)==(EI(h)|0)):0)?(FI(m)|0)>>>0<256:0)?(GI(m)|0)>>>0<256:0){m=f+12|0;m=Ld[(d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24)&511](j)|0;Cga(J|0,0,494)|0;b[J>>1]=495;o=m+495|0;p=J+486|0;b[p>>1]=o;b[p+2>>1]=o>>>16;o=(HI(h)|0)==32;a[J+494>>0]=o?3:0;ce[(d[I>>0]|d[I+1>>0]<<8|d[I+2>>0]<<16|d[I+3>>0]<<24)&255](J,495,1,j)|0;o=f+8|0;Od[(d[o>>0]|d[o+1>>0]<<8|d[o+2>>0]<<16|d[o+3>>0]<<24)&255](j,e[p>>1]|e[p+2>>1]<<16,0)|0;p=CI(h)|0;a[L>>0]=FI(p)|0;a[M>>0]=GI(p)|0;ce[(d[I>>0]|d[I+1>>0]<<8|d[I+2>>0]<<16|d[I+3>>0]<<24)&255](L,1,1,j)|0;ce[(d[I>>0]|d[I+1>>0]<<8|d[I+2>>0]<<16|d[I+3>>0]<<24)&255](M,1,1,j)|0;o=PI(p)|0;k=a[M>>0]|0;if(k<<24>>24){n=0;do{f=$J(p,(k&255)+~(n&255)|0)|0;ce[(d[I>>0]|d[I+1>>0]<<8|d[I+2>>0]<<16|d[I+3>>0]<<24)&255](f,1,o,j)|0;n=n+1<<24>>24;k=a[M>>0]|0}while((n&255)<(k&255))}}else m=0;c[N>>2]=m;c[N+4>>2]=0;m=N+8|0;k=323232;n=m+18|0;do{a[m>>0]=a[k>>0]|0;m=m+1|0;k=k+1|0}while((m|0)<(n|0));ce[(d[I>>0]|d[I+1>>0]<<8|d[I+2>>0]<<16|d[I+3>>0]<<24)&255](N,26,1,j)|0;N=1;i=O;return N|0}function wY(b,c){b=b|0;c=c|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;h=i;i=i+48|0;j=h+18|0;g=h;e=b+12|0;k=Ld[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&511](c)|0;f=b+8|0;Od[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](c,0,2)|0;l=Ld[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&511](c)|0;Od[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](c,k+-18+l|0,0)|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](j,1,18,c)|0;Od[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](c,k,0)|0;if(!(pga(323232,j,18)|0)){j=1;i=h;return j|0}e=Ld[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&511](c)|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](g,18,1,c)|0;Od[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](c,e,0)|0;e=a[g+1>>0]|0;if((e&255)>=2){j=0;i=h;return j|0}if(e<<24>>24){l=g+3|0;j=g+5|0;if(((d[l>>0]|d[l+1>>0]<<8)&65535)>=((d[j>>0]|d[j+1>>0]<<8)&65535)){j=0;i=h;return j|0}if(((a[g+7>>0]|0)+-1<<24>>24&255)>31){j=0;i=h;return j|0}}j=g+12|0;if(!((d[j>>0]|d[j+1>>0]<<8)<<16>>16)){j=0;i=h;return j|0}j=g+14|0;if(!((d[j>>0]|d[j+1>>0]<<8)<<16>>16)){j=0;i=h;return j|0}switch(d[g+2>>0]|0|0){case 11:case 10:case 9:case 3:case 2:case 1:break;default:{j=0;i=h;return j|0}}j=d[g+16>>0]|0;if((j|0)==32|(j|0)==24|(j|0)==16|(j|0)==8){j=1;i=h;return j|0}j=0;i=h;return j|0}function xY(){return 323216}function yY(a){a=a|0;var b=0;b=i;a=a+-8|0;if(a>>>0>=25){a=0;i=b;return a|0}a=16843009>>>(a&33554431)&1;i=b;return a|0}function zY(a){a=a|0;return (a|0)==1|0}function AY(){return 1}function BY(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;f=i;g=c[a>>2]|0;e=ea(ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](b,e,1,c[a+4>>2]|0)|0,e)|0;i=f;return e|0}function CY(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;f=i;g=(c[a>>2]|0)+4|0;e=ea(ce[(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)&255](b,e,1,c[a+4>>2]|0)|0,e)|0;i=f;return e|0}function DY(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;e=i;h=(c[a>>2]|0)+8|0;g=a+4|0;Od[(d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24)&255](c[g>>2]|0,b,f)|0;a=(c[a>>2]|0)+12|0;a=Ld[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&511](c[g>>2]|0)|0;I=((a|0)<0)<<31>>31;i=e;return a|0}function EY(a){a=a|0;return 0}function FY(a){a=a|0;var b=0,e=0,f=0,g=0;e=i;f=(c[a>>2]|0)+12|0;g=a+4|0;f=Ld[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&511](c[g>>2]|0)|0;b=(c[a>>2]|0)+8|0;Od[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](c[g>>2]|0,0,2)|0;b=(c[a>>2]|0)+12|0;b=Ld[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&511](c[g>>2]|0)|0;a=(c[a>>2]|0)+8|0;Od[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](c[g>>2]|0,f,0)|0;I=((b|0)<0)<<31>>31;i=e;return b|0}function GY(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function HY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function IY(){return 324496}function JY(){return 324464}function KY(){return 324448}function LY(){return 324424}function MY(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=Afa(12)|0;if(!e){d=0;i=f;return d|0}c[e>>2]=a;c[e+4>>2]=b;if(!d){b=bx(324352,324368,e,198,199,147,256,257,200,62)|0;c[e+8>>2]=b}else{b=bx(324352,324360,e,198,199,147,256,257,200,62)|0;c[e+8>>2]=b}if(b){d=e;i=f;return d|0}Bfa(e);yJ(c[80866]|0,324376,f);d=0;i=f;return d|0}function NY(a,b,d){a=a|0;b=b|0;d=d|0;b=i;if(!d){i=b;return}Ev(c[d+8>>2]|0);Bfa(d);i=b;return}function OY(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!d){d=0;i=e;return d|0}a=c[d+8>>2]|0;b=0;do b=b+1|0;while((vw(a)|0)!=0);i=e;return b|0}function PY(f,j,k,l,m){f=f|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;ma=i;i=i+480|0;la=ma+8|0;aa=ma+136|0;fa=ma+148|0;ga=ma+176|0;ka=ma+180|0;ja=ma+184|0;ia=ma+200|0;s=ma+198|0;Z=ma+144|0;G=ma+152|0;y=ma+190|0;W=ma+188|0;X=ma+172|0;da=ma+196|0;p=ma+194|0;z=ma+192|0;ca=ma+156|0;ba=ma+160|0;F=ma+216|0;E=ma+164|0;N=ma+168|0;w=ma;if(!((j|0)!=0&(m|0)!=0)){ga=0;i=ma;return ga|0}c[Z>>2]=0;c[G>>2]=0;b[y>>1]=1;b[W>>1]=1;c[X>>2]=-1;b[da>>1]=0;b[p>>1]=-1;c[ca>>2]=0;c[ba>>2]=0;t=l&32768;x=(t|0)!=0;t=t>>>15;ha=c[m+8>>2]|0;if((k|0)!=-1){if(!ha){ga=kc(4)|0;c[ga>>2]=323544;xd(ga|0,378680,0)}if(!(dw(ha,k&65535)|0)){ga=kc(4)|0;c[ga>>2]=323544;xd(ga|0,378680,0)}}_=(l&1|0)!=0;c[la>>2]=da;Zv(ha,262,la)|0;c[la>>2]=p;Zv(ha,259,la)|0;do if((b[da>>1]|0)==-32691)if((b[p>>1]&-2)<<16>>16==-30860){c[la>>2]=0;Xv(ha,65560,la)|0;break}else{ga=kc(4)|0;c[ga>>2]=323592;xd(ga|0,378680,0)}while(0);c[la>>2]=G;Zv(ha,256,la)|0;c[la>>2]=Z;Zv(ha,257,la)|0;c[la>>2]=W;Zv(ha,277,la)|0;c[la>>2]=y;Zv(ha,258,la)|0;c[la>>2]=X;Zv(ha,278,la)|0;c[la>>2]=ca;c[la+4>>2]=ba;Zv(ha,34675,la)|0;c[la>>2]=z;Cv(ha,284,la)|0;l=b[da>>1]|0;p=b[y>>1]|0;k=p&65535;switch(k|0){case 16:{if(l<<16>>16==3){ga=c[80866]|0;ca=b[W>>1]|0;ca=ca&65535;da=l&65535;c[la>>2]=k;m=la+4|0;c[m>>2]=ca;m=la+8|0;c[m>>2]=da;yJ(ga,323640,la);ga=kc(4)|0;c[ga>>2]=0;xd(ga|0,378656,0)}break}case 128:case 64:{if(l<<16>>16!=1){ga=c[80866]|0;ca=b[W>>1]|0;ca=ca&65535;da=l&65535;c[la>>2]=k;m=la+4|0;c[m>>2]=ca;m=la+8|0;c[m>>2]=da;yJ(ga,323640,la);ga=kc(4)|0;c[ga>>2]=0;xd(ga|0,378656,0)}break}case 4:case 1:{if(!(l<<16>>16==3|l<<16>>16==1|l<<16>>16==0)){ga=c[80866]|0;ca=b[W>>1]|0;ca=ca&65535;da=l&65535;c[la>>2]=k;m=la+4|0;c[m>>2]=ca;m=la+8|0;c[m>>2]=da;yJ(ga,323640,la);ga=kc(4)|0;c[ga>>2]=0;xd(ga|0,378656,0)}break}case 32:{if(!(l<<16>>16==-32691|l<<16>>16==1|l<<16>>16==0)){ga=c[80866]|0;ca=b[W>>1]|0;ca=ca&65535;da=l&65535;c[la>>2]=k;m=la+4|0;c[m>>2]=ca;m=la+8|0;c[m>>2]=da;yJ(ga,323640,la);ga=kc(4)|0;c[ga>>2]=0;xd(ga|0,378656,0)}break}case 8:break;default:{ga=c[80866]|0;ca=b[W>>1]|0;ca=ca&65535;da=l&65535;c[la>>2]=k;m=la+4|0;c[m>>2]=ca;m=la+8|0;c[m>>2]=da;yJ(ga,323640,la);ga=kc(4)|0;c[ga>>2]=0;xd(ga|0,378656,0)}}u=b[W>>1]|0;b[s>>1]=0;k=ea(u&65535,k)|0;c[la>>2]=s;do if(!(Zv(ha,339,la)|0))if(u<<16>>16==3){s=(k&65535|0)==48?9:1;break}else if(u<<16>>16==1){l=k&65535;if((l|0)==16){s=2;break}else if((l|0)==32){s=4;break}else{s=1;break}}else{s=(u&65535)>3&p<<16>>16==16?10:1;break}else{l=e[s>>1]|0;if((l|0)==3){l=k&65535;if((l|0)==48){s=u<<16>>16==3&p<<16>>16==16?11:1;break}else if((l|0)==96){s=11;break}else if((l|0)==64){s=u<<16>>16==2?6:7;break}else if((l|0)==32){s=6;break}else{s=l>>>0>127?12:1;break}}else if((l|0)==6){s=(k&65535|0)==128?8:1;break}else if((l|0)==1){l=k&65535;if((l|0)==32){s=u<<16>>16==4?1:4;break}else if((l|0)==48){s=u<<16>>16==3?9:1;break}else if((l|0)==16){s=u<<16>>16==2?1:2;break}else if((l|0)==64){s=u<<16>>16==4?10:1;break}else{s=1;break}}else if((l|0)==2){l=k&65535;if((l|0)==16){s=u<<16>>16==3?1:3;break}else if((l|0)==32){s=5;break}else{s=1;break}}else{s=1;break}}while(0);b[aa>>1]=-1;b[fa>>1]=-1;b[ga>>1]=-1;b[ka>>1]=-1;c[la>>2]=ga;Zv(ha,262,la)|0;c[la>>2]=fa;Zv(ha,277,la)|0;c[la>>2]=aa;Zv(ha,258,la)|0;c[la>>2]=ka;Cv(ha,284,la)|0;k=(ex(ha)|0)!=0;l=e[ga>>1]|0;if((l|0)==2)l=(s+-9|0)>>>0>1&(s|0)==11&(b[fa>>1]|0)==3&(b[aa>>1]|0)==16?6:3;else if((l|0)==32845)l=5;else if((l|0)==5)l=k?3:1;else if((l|0)==3|(l|0)==1|(l|0)==0)l=(e[fa>>1]|0)>1&(b[aa>>1]|0)==8?2:3;else if((l|0)==10|(l|0)==9|(l|0)==8|(l|0)==6)l=0;else l=3;a:do switch(((l|0)==3&k?4:l)|0){case 0:{if(!x){k=c[G>>2]|0;p=c[Z>>2]|0;q=Afa(ea(k<<2,p)|0)|0;if(!q){ga=kc(4)|0;c[ga>>2]=323512;xd(ga|0,378680,0)}if(!(Rw(ha,k,p,q,1)|0)){Bfa(q);ga=kc(4)|0;c[ga>>2]=324328;xd(ga|0,378680,0)}else u=q}else u=0;k=b[W>>1]|0;if((k&65535)>4){V=c[80866]|0;c[la>>2]=(k&65535)+-4;yJ(V,323736,la);b[W>>1]=4;k=4}if((b[da>>1]|0)==5&k<<16>>16==4){b[W>>1]=3;k=3}k=O1(t,s,c[G>>2]|0,c[Z>>2]|0,b[y>>1]|0,k)|0;if(!k){if(!u){ga=kc(4)|0;c[ga>>2]=324240;xd(ga|0,378680,0)}Bfa(u);ga=kc(4)|0;c[ga>>2]=324240;xd(ga|0,378680,0)}P1(ha,k);if(x)p=0;else{p=(c[Z>>2]|0)==0;if((b[W>>1]|0)==4)if(p)p=0;else{p=0;t=u;l=0;while(1){q=$J(k,l)|0;if(!(c[G>>2]|0))q=0;else{s=0;while(1){r=t+(s<<2)|0;a[q>>0]=(c[r>>2]|0)>>>16;a[q+1>>0]=(c[r>>2]|0)>>>8;a[q+2>>0]=c[r>>2];r=(c[r>>2]|0)>>>24;a[q+3>>0]=r;p=(r|0)==0?p:1;s=s+1|0;r=c[G>>2]|0;if(s>>>0>=r>>>0){q=r;break}else q=q+4|0}}l=l+1|0;if(l>>>0>=(c[Z>>2]|0)>>>0)break;else t=t+(q<<2)|0}}else if(p)p=0;else{s=u;t=0;while(1){p=$J(k,t)|0;if(!(c[G>>2]|0))p=0;else{q=p;r=0;while(1){p=s+(r<<2)|0;a[q>>0]=(c[p>>2]|0)>>>16;a[q+1>>0]=(c[p>>2]|0)>>>8;a[q+2>>0]=c[p>>2];r=r+1|0;p=c[G>>2]|0;if(r>>>0>=p>>>0)break;else q=q+3|0}}t=t+1|0;if(t>>>0>=(c[Z>>2]|0)>>>0){p=0;break}else s=s+(p<<2)|0}}Bfa(u)}$I(k,p);break}case 2:{k=b[W>>1]|0;k=O1(t,s,c[G>>2]|0,c[Z>>2]|0,b[y>>1]|0,(k&65535)>2?2:k)|0;if(!k){ga=kc(4)|0;c[ga>>2]=323512;xd(ga|0,378680,0)}P1(ha,k);Q1(ha,b[da>>1]|0,b[y>>1]|0,k);D=Ex(ha)|0;E=OI(k)|0;Cga(F|0,-1,256)|0;q=$J(k,(c[Z>>2]|0)+-1|0)|0;p=b[z>>1]|0;if(p<<16>>16!=1|x){if(!(p<<16>>16!=2|x)){y=Bx(ha)|0;z=Afa(y<<1)|0;if(!z){ga=kc(4)|0;c[ga>>2]=323512;xd(ga|0,378680,0)}A=z+y|0;p=c[Z>>2]|0;b:do if(p){B=(D|0)==0;C=0-E|0;l=c[X>>2]|0;x=0;while(1){u=l+x|0;l=u>>>0>p>>>0?p-x|0:l;s=ea(l,D)|0;if((lx(ha,wx(ha,x,0)|0,z,s)|0)==-1){Y=94;break}if((lx(ha,wx(ha,x,1)|0,A,s)|0)==-1){Y=102;break}if((l|0)>0){w=~p;p=~u;p=w>>>0>p>>>0?w:p;w=x+1+p|0;if(!B){l=~x-p|0;u=q;r=0;while(1){s=ea(r,D)|0;p=z+(s+y)|0;s=z+s|0;t=u;v=0;while(1){a[t>>0]=a[s>>0]|0;a[F+(d[s>>0]|0)>>0]=a[p>>0]|0;v=v+1|0;if((v|0)==(D|0))break;else{p=p+1|0;s=s+1|0;t=t+1|0}}r=r+1|0;if((r|0)==(l|0))break;else u=u+C|0}}q=q+(ea(E,w)|0)|0}l=c[X>>2]|0;x=l+x|0;p=c[Z>>2]|0;if(p>>>0<=x>>>0)break b}if((Y|0)==94){Bfa(z);ga=kc(4)|0;c[ga>>2]=324224;xd(ga|0,378680,0)}else if((Y|0)==102){Bfa(z);ga=kc(4)|0;c[ga>>2]=324224;xd(ga|0,378680,0)}}while(0);Bfa(z)}}else{z=Afa(Bx(ha)|0)|0;if(!z){ga=kc(4)|0;c[ga>>2]=323512;xd(ga|0,378680,0)}p=c[Z>>2]|0;c:do if(p){A=0-E|0;l=c[X>>2]|0;y=0;while(1){r=l+y|0;s=r>>>0>p>>>0?p-y|0:l;if((lx(ha,wx(ha,y,0)|0,z,ea(s,D)|0)|0)==-1)break;if((s|0)>0){t=~p;v=~r;v=t>>>0>v>>>0?t:v;t=ea(E,y+1+v|0)|0;v=~y-v|0;l=b[W>>1]|0;w=q;x=0;while(1){if((D|0)/(l&65535|0)|0){u=z+(ea(x,D)|0)|0;s=w;r=0;while(1){a[s>>0]=a[u>>0]|0;a[F+(d[u>>0]|0)>>0]=a[u+1>>0]|0;l=b[W>>1]|0;p=l&65535;r=r+1|0;if(r>>>0>=((D|0)/(p|0)|0)>>>0)break;else{u=u+p|0;s=s+1|0}}}x=x+1|0;if((x|0)==(v|0))break;else w=w+A|0}q=q+t|0}l=c[X>>2]|0;y=l+y|0;p=c[Z>>2]|0;if(p>>>0<=y>>>0)break c}Bfa(z);ga=kc(4)|0;c[ga>>2]=324224;xd(ga|0,378680,0)}while(0);Bfa(z)}bJ(k,F,256);$I(k,1);break}case 1:{do if((b[da>>1]|0)==5){k=(e[W>>1]|0)>4;if(_|k^1|x){U=k;V=0;S=0;r=0;T=0}else{p=b[y>>1]|0;if(p<<16>>16==16){r=zI(2,c[G>>2]|0,c[Z>>2]|0,8,0,0,0)|0;Y=112}else if(p<<16>>16==8){r=yI(c[G>>2]|0,c[Z>>2]|0,8,0,0,0)|0;Y=112}if((Y|0)==112?(r|0)!=0:0){R=$J(r,(c[Z>>2]|0)+-1|0)|0;T=OI(r)|0;U=k;V=r;S=(HI(r)|0)>>>3;r=R;break}yJ(c[80866]|0,323784,la);U=k;V=0;S=0;r=0;T=0}}else{U=0;V=0;S=0;r=0;T=0}while(0);N=b[W>>1]|0;N=(N&65535)<4?N:4;k=O1(t,s,c[G>>2]|0,c[Z>>2]|0,b[y>>1]|0,N)|0;if(!k){AI(V);ga=kc(4)|0;c[ga>>2]=323512;xd(ga|0,378680,0)}P1(ha,k);if(!x){P=Ex(ha)|0;K=PI(k)|0;Q=OI(k)|0;R=(HI(k)|0)>>>3;M=(R>>>0)/((N&65535)>>>0)|0;J=(ea(e[W>>1]|0,e[y>>1]|0)|0)>>>3;p=$J(k,(c[Z>>2]|0)+-1|0)|0;O=Afa(Bx(ha)|0)|0;if(!O){AI(V);ga=kc(4)|0;c[ga>>2]=323512;xd(ga|0,378680,0)}l=b[z>>1]|0;d:do if(l<<16>>16==2){l=c[Z>>2]|0;if(l){J=0-Q|0;K=0-T|0;L=(V|0)!=0;q=c[X>>2]|0;I=r;G=p;H=0;e:while(1){p=q+H|0;D=p>>>0>l>>>0?l-H|0:q;f:do if(b[W>>1]|0){E=ea(D,P)|0;F=(D|0)>0;C=~l;A=~p;A=~H-(C>>>0>A>>>0?C:A)|0;C=0;do{if((lx(ha,wx(ha,H,C)|0,O,E)|0)==-1)break e;if((C&65535)>=(N&65535))if(L&C<<16>>16==N<<16>>16){B=S;l=0;p=T;q=I}else break f;else{B=R;l=C;p=Q;q=G}z=ea(l&65535,M)|0;if(F){y=0-p|0;x=z+2|0;w=z+4|0;v=z+8|0;t=z+12|0;s=0;r=O;while(1){l=r;r=r+P|0;g:do if((P|0)>0){u=q;while(1){p=u+z|0;switch(M|0){case 1:{a[p>>0]=a[l>>0]|0;break}case 2:{b[p>>1]=b[l>>1]|0;break}case 3:{b[p>>1]=b[l>>1]|0;a[u+x>>0]=a[l+2>>0]|0;break}case 4:{c[p>>2]=c[l>>2];break}case 16:{g[p>>2]=+g[l>>2];g[u+w>>2]=+g[l+4>>2];g[u+v>>2]=+g[l+8>>2];g[u+t>>2]=+g[l+12>>2];break}case 8:{c[p>>2]=c[l>>2];c[u+w>>2]=c[l+4>>2];break}case 6:{c[p>>2]=c[l>>2];b[u+w>>1]=b[l+4>>1]|0;break}case 12:{g[p>>2]=+g[l>>2];g[u+w>>2]=+g[l+4>>2];g[u+v>>2]=+g[l+8>>2];break}default:{}}l=l+M|0;if(l>>>0>=r>>>0)break g;else u=u+B|0}}while(0);s=s+1|0;if((s|0)==(A|0))break;else q=q+y|0}}C=C+1<<16>>16}while((C&65535)<(e[W>>1]|0))}while(0);G=G+(ea(D,J)|0)|0;I=I+(ea(D,K)|0)|0;q=c[X>>2]|0;H=q+H|0;l=c[Z>>2]|0;if(l>>>0<=H>>>0)break d}Bfa(O);AI(V);ga=kc(4)|0;c[ga>>2]=324224;xd(ga|0,378680,0)}}else if(l<<16>>16==1?(v=c[Z>>2]|0,(v|0)!=0):0){G=(P|0)==(K|0);H=(V|0)==0;I=(R|0)==0;D=M>>>0>1;E=0-Q|0;F=0-T|0;q=c[X>>2]|0;u=v;B=r;N=p;C=0;while(1){p=q+C|0;l=p>>>0>u>>>0?u-C|0:q;if((lx(ha,wx(ha,C,0)|0,O,ea(l,P)|0)|0)==-1)break;l=(l|0)>0;do if(G)if(l){u=~u;l=~p;l=u>>>0>l>>>0?u:l;u=ea(Q,C+1+l|0)|0;l=~C-l|0;p=N;q=0;while(1){Aga(p|0,O+(ea(q,P)|0)|0,P|0)|0;q=q+1|0;if((q|0)==(l|0))break;else p=p+E|0}p=B;l=N+u|0}else{p=B;l=N}else if(H){if(!l){p=B;l=N;break}t=~u;l=~p;l=t>>>0>l>>>0?t:l;t=ea(Q,C+1+l|0)|0;l=~C-l|0;q=N;u=0;while(1){p=q+K|0;h:do if((K|0)>0){s=q;r=O+(ea(u,P)|0)|0;while(1){switch(R|0){case 1:{a[s>>0]=a[r>>0]|0;break}case 3:{b[s>>1]=b[r>>1]|0;a[s+2>>0]=a[r+2>>0]|0;break}case 12:{g[s>>2]=+g[r>>2];g[s+4>>2]=+g[r+4>>2];g[s+8>>2]=+g[r+8>>2];break}case 2:{b[s>>1]=b[r>>1]|0;break}case 4:{c[s>>2]=c[r>>2];break}case 6:{c[s>>2]=c[r>>2];b[s+4>>1]=b[r+4>>1]|0;break}case 8:{c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];break}case 16:{g[s>>2]=+g[r>>2];g[s+4>>2]=+g[r+4>>2];g[s+8>>2]=+g[r+8>>2];g[s+12>>2]=+g[r+12>>2];break}default:{}}s=s+R|0;if(s>>>0>=p>>>0)break h;else r=r+J|0}}while(0);u=u+1|0;if((u|0)==(l|0))break;else q=q+E|0}p=B;l=N+t|0;break}else{if(!l){p=B;l=N;break}A=~u;w=~p;w=A>>>0>w>>>0?A:w;A=C+1+w|0;v=ea(T,A)|0;A=ea(Q,A)|0;w=~C-w|0;x=B;y=N;z=0;while(1){l=O+(ea(z,P)|0)|0;t=y+Q|0;i:do if((Q|0)>0){if(I)if(D){p=x;while(1){a[p>>0]=a[l>>0]|0;a[p+1>>0]=a[l+1>>0]|0;if((Q|0)>0){p=p+S|0;l=l+J|0}else break i}}else{p=x;while(1){a[p>>0]=a[l>>0]|0;if((Q|0)>0){p=p+S|0;l=l+J|0}else break i}}if(D){s=x;r=y;while(1){p=0;q=a[l>>0]|0;u=0;do{a[r+p>>0]=q;u=u+1<<24>>24;p=u&255;q=a[l+p>>0]|0}while(p>>>0>>0);a[s>>0]=q;a[s+1>>0]=a[l+(p+1)>>0]|0;r=r+R|0;if(r>>>0>=t>>>0)break;else{s=s+S|0;l=l+J|0}}}else{s=x;r=y;while(1){p=0;q=a[l>>0]|0;u=0;do{a[r+p>>0]=q;u=u+1<<24>>24;p=u&255;q=a[l+p>>0]|0}while(p>>>0>>0);a[s>>0]=q;r=r+R|0;if(r>>>0>=t>>>0)break;else{s=s+S|0;l=l+J|0}}}}while(0);z=z+1|0;if((z|0)==(w|0))break;else{x=x+F|0;y=y+E|0}}p=B+v|0;l=N+A|0;break}while(0);q=c[X>>2]|0;C=q+C|0;u=c[Z>>2]|0;if(u>>>0<=C>>>0)break d;else{B=p;N=l}}Bfa(O);AI(V);ga=kc(4)|0;c[ga>>2]=324224;xd(ga|0,378680,0)}while(0);Bfa(O);if(!_){oJ(k)|0;c[ca>>2]=0;c[ba>>2]=0;if(U){RL(k,V,4)|0;AI(V);break a}p=qJ(k)|0;if(!p){yJ(c[80866]|0,323832,la);break a}else{AI(k);k=p;break a}}}break}case 3:{J=b[W>>1]|0;J=(J&65535)<4?J:4;k=O1(t,s,c[G>>2]|0,c[Z>>2]|0,b[y>>1]|0,J)|0;if(!k){ga=kc(4)|0;c[ga>>2]=323512;xd(ga|0,378680,0)}P1(ha,k);Q1(ha,b[da>>1]|0,b[y>>1]|0,k);if(!x){N=Ex(ha)|0;l=PI(k)|0;B=OI(k)|0;K=(HI(k)|0)>>>3;A=(ea(e[W>>1]|0,e[y>>1]|0)|0)>>>3;r=$J(k,(c[Z>>2]|0)+-1|0)|0;L=Afa(Bx(ha)|0)|0;if(!L){ga=kc(4)|0;c[ga>>2]=323512;xd(ga|0,378680,0)}Cga(L|0,0,Bx(ha)|0)|0;p=b[z>>1]|0;if(p<<16>>16==2){I=(e[y>>1]|0)>>>3&65535;p=c[Z>>2]|0;if(!p)Y=246;else{H=0-B|0;u=c[X>>2]|0;q=0;G=0;while(1){l=u+G|0;F=l>>>0>p>>>0?p-G|0:u;j:do if(b[W>>1]|0){D=ea(F,N)|0;E=(F|0)>0;B=~p;C=~l;C=~G-(B>>>0>C>>>0?B:C)|0;B=0;do{V=B&65535;S=(lx(ha,wx(ha,G,V)|0,L,D)|0)==-1;q=S?1:q;if((V&65535)>=(J&65535))break j;w=ea(B,I)|0;if(E){v=w+2|0;t=w+4|0;s=w+8|0;u=w+12|0;y=r;z=0;A=L;while(1){l=A;A=A+N|0;k:do if((N|0)>0){x=y;while(1){p=x+w|0;switch(I|0){case 1:{a[p>>0]=a[l>>0]|0;break}case 2:{b[p>>1]=b[l>>1]|0;break}case 3:{b[p>>1]=b[l>>1]|0;a[x+v>>0]=a[l+2>>0]|0;break}case 16:{g[p>>2]=+g[l>>2];g[x+t>>2]=+g[l+4>>2];g[x+s>>2]=+g[l+8>>2];g[x+u>>2]=+g[l+12>>2];break}case 4:{c[p>>2]=c[l>>2];break}case 12:{g[p>>2]=+g[l>>2];g[x+t>>2]=+g[l+4>>2];g[x+s>>2]=+g[l+8>>2];break}case 6:{c[p>>2]=c[l>>2];b[x+t>>1]=b[l+4>>1]|0;break}case 8:{c[p>>2]=c[l>>2];c[x+t>>2]=c[l+4>>2];break}default:{}}l=l+I|0;if(l>>>0>=A>>>0)break k;else x=x+K|0}}while(0);z=z+1|0;if((z|0)==(C|0))break;else y=y+H|0}}B=B+1|0}while((B&65535)<(e[W>>1]|0))}while(0);r=r+(ea(F,H)|0)|0;u=c[X>>2]|0;G=u+G|0;p=c[Z>>2]|0;if(p>>>0<=G>>>0){Y=247;break}}}}else if(p<<16>>16==1){p=c[Z>>2]|0;if(!p)Y=246;else{y=(N|0)==(l|0);z=0-B|0;u=c[X>>2]|0;s=0;w=r;x=0;while(1){l=u+x|0;q=l>>>0>p>>>0?p-x|0:u;v=(lx(ha,wx(ha,x,0)|0,L,ea(q,N)|0)|0)==-1;v=v?1:s;q=(q|0)>0;if(y)if(q){q=~p;p=~l;p=q>>>0>p>>>0?q:p;l=ea(B,x+1+p|0)|0;p=~x-p|0;q=w;s=0;while(1){Aga(q|0,L+(ea(s,N)|0)|0,N|0)|0;s=s+1|0;if((s|0)==(p|0))break;else q=q+z|0}q=w+l|0}else q=w;else if(q){u=~p;p=~l;p=u>>>0>p>>>0?u:p;l=ea(B,x+1+p|0)|0;p=~x-p|0;u=w;s=0;while(1){q=u+B|0;l:do if((B|0)>0){r=u;t=L+(ea(s,N)|0)|0;while(1){switch(K|0){case 2:{b[r>>1]=b[t>>1]|0;break}case 6:{c[r>>2]=c[t>>2];b[r+4>>1]=b[t+4>>1]|0;break}case 8:{c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];break}case 12:{g[r>>2]=+g[t>>2];g[r+4>>2]=+g[t+4>>2];g[r+8>>2]=+g[t+8>>2];break}case 16:{g[r>>2]=+g[t>>2];g[r+4>>2]=+g[t+4>>2];g[r+8>>2]=+g[t+8>>2];g[r+12>>2]=+g[t+12>>2];break}case 4:{c[r>>2]=c[t>>2];break}case 1:{a[r>>0]=a[t>>0]|0;break}case 3:{b[r>>1]=b[t>>1]|0;a[r+2>>0]=a[t+2>>0]|0;break}default:{}}r=r+K|0;if(r>>>0>=q>>>0)break l;else t=t+A|0}}while(0);s=s+1|0;if((s|0)==(p|0))break;else u=u+z|0}q=w+l|0}else q=w;u=c[X>>2]|0;x=u+x|0;p=c[Z>>2]|0;if(p>>>0<=x>>>0){q=v;Y=247;break}else{s=v;w=q}}}}else Bfa(L);if((Y|0)==246)Bfa(L);else if((Y|0)==247?(Bfa(L),(q|0)!=0):0)yJ(c[80866]|0,323912,la);nJ(k)|0}break}case 6:{k=O1(t,s,c[G>>2]|0,c[Z>>2]|0,b[y>>1]|0,b[W>>1]|0)|0;if(!k){ga=kc(4)|0;c[ga>>2]=323512;xd(ga|0,378680,0)}P1(ha,k);if(!x){A=Ex(ha)|0;B=OI(k)|0;q=$J(k,(c[Z>>2]|0)+-1|0)|0;p=b[z>>1]|0;if(p<<16>>16==2){ga=kc(4)|0;c[ga>>2]=324160;xd(ga|0,378680,0)}else if(p<<16>>16!=1)break a;w=Afa(Bx(ha)|0)|0;if(!w){ga=kc(4)|0;c[ga>>2]=323512;xd(ga|0,378680,0)}p=c[Z>>2]|0;m:do if(p){x=A>>>1;y=(x|0)==0;z=0-B|0;l=c[X>>2]|0;v=0;while(1){r=l+v|0;s=r>>>0>p>>>0?p-v|0:l;if((lx(ha,wx(ha,v,0)|0,w,ea(s,A)|0)|0)==-1)break;if(s){l=~p;p=~r;p=l>>>0>p>>>0?l:p;l=ea(B,v+1+p|0)|0;p=~v-p|0;r=q;t=0;while(1){s=w+(ea(t,A)|0)|0;if(!y){u=0;do{g[r+(u<<2)>>2]=+g[o+(e[s+(u<<1)>>1]<<2)>>2];u=u+1|0}while((u|0)<(x|0))}t=t+1|0;if((t|0)==(p|0))break;else r=r+z|0}q=q+l|0}l=c[X>>2]|0;v=l+v|0;p=c[Z>>2]|0;if(p>>>0<=v>>>0)break m}Bfa(w);ga=kc(4)|0;c[ga>>2]=324224;xd(ga|0,378680,0)}while(0);Bfa(w)}break}case 5:{c[la>>2]=w;if(!(Zv(ha,37439,la)|0))h[w>>3]=1.0;k=O1(t,s,c[G>>2]|0,c[Z>>2]|0,b[y>>1]|0,b[W>>1]|0)|0;if(!k){ga=kc(4)|0;c[ga>>2]=323512;xd(ga|0,378680,0)}P1(ha,k);p=b[z>>1]|0;if(p<<16>>16!=1|x){if(p<<16>>16!=2)break a;ga=kc(4)|0;c[ga>>2]=324104;xd(ga|0,378680,0)}t=Ex(ha)|0;p=OI(k)|0;s=$J(k,(c[Z>>2]|0)+-1|0)|0;v=Afa(Bx(ha)|0)|0;if(!v){ga=kc(4)|0;c[ga>>2]=323512;xd(ga|0,378680,0)}q=c[Z>>2]|0;n:do if(q){u=0-p|0;r=c[X>>2]|0;p=s;l=0;while(1){s=(r+l|0)>>>0>q>>>0?q-l|0:r;if((lx(ha,wx(ha,l,0)|0,v,ea(s,t)|0)|0)==-1)break;if((s|0)>0){q=0;do{W=v+(ea(q,t)|0)|0;aL(p,W,+h[w>>3],c[G>>2]|0);p=p+u|0;q=q+1|0}while((q|0)<(s|0))}r=c[X>>2]|0;l=r+l|0;q=c[Z>>2]|0;if(q>>>0<=l>>>0)break n}Bfa(v);ga=kc(4)|0;c[ga>>2]=324224;xd(ga|0,378680,0)}while(0);Bfa(v);break}case 4:{k=O1(t,s,c[G>>2]|0,c[Z>>2]|0,b[y>>1]|0,b[W>>1]|0)|0;if(!k){ga=kc(4)|0;c[ga>>2]=323512;xd(ga|0,378680,0)}P1(ha,k);Q1(ha,b[da>>1]|0,b[y>>1]|0,k);c[la>>2]=E;if(!(Zv(ha,322,la)|0)){ga=kc(4)|0;c[ga>>2]=323992;xd(ga|0,378680,0)}c[la>>2]=N;if(!(Zv(ha,323,la)|0)){ga=kc(4)|0;c[ga>>2]=323992;xd(ga|0,378680,0)}p=b[z>>1]|0;if(p<<16>>16!=1|x){if(p<<16>>16!=2)break a;ga=kc(4)|0;c[ga>>2]=324056;xd(ga|0,378680,0)}A=Xx(ha)|0;B=Afa(A)|0;if(!B){ga=kc(4)|0;c[ga>>2]=323512;xd(ga|0,378680,0)}p=OI(k)|0;C=Ux(ha)|0;D=Ex(ha)|0;l=$J(k,(c[Z>>2]|0)+-1|0)|0;q=c[Z>>2]|0;o:do if(q){z=0-p|0;s=c[N>>2]|0;u=c[G>>2]|0;y=0;p:while(1){p=s+y|0;x=p>>>0>q>>>0?q-y|0:s;if(!u){p=s;u=0}else{w=(x|0)>0;t=~q;r=~p;r=~y-(t>>>0>r>>>0?t:r)|0;t=0;v=0;while(1){Cga(B|0,0,A|0)|0;if((ox(ha,B,v,y,0,0)|0)<0)break p;p=c[E>>2]|0;u=c[G>>2]|0;s=(p+v|0)>>>0>u>>>0?D-t|0:C;if(w){p=l+t|0;q=0;u=B;while(1){Aga(p|0,u|0,s|0)|0;q=q+1|0;if((q|0)==(r|0))break;else{p=p+z|0;u=u+C|0}}p=c[E>>2]|0;u=c[G>>2]|0}v=p+v|0;if(v>>>0>=u>>>0)break;else t=t+C|0}p=c[N>>2]|0;q=c[Z>>2]|0}l=l+(ea(x,z)|0)|0;y=p+y|0;if(q>>>0<=y>>>0)break o;else s=p}Bfa(B);ga=kc(4)|0;c[ga>>2]=324024;xd(ga|0,378680,0)}while(0);nJ(k)|0;Bfa(B);break}default:{ga=kc(4)|0;c[ga>>2]=324328;xd(ga|0,378680,0)}}while(0);MI(k,c[ba>>2]|0,c[ca>>2]|0)|0;if((b[da>>1]|0)==5&_){da=BI(k)|0;b[da>>1]=e[da>>1]|1}c[aa>>2]=0;c[fa>>2]=0;c[la>>2]=fa;c[la+4>>2]=aa;if((Zv(ha,33723,la)|0)==1){if(gx(ha)|0)Kx(c[aa>>2]|0,c[fa>>2]|0);BL(k,c[aa>>2]|0,c[fa>>2]<<2)|0}c[aa>>2]=0;c[fa>>2]=0;c[la>>2]=fa;c[la+4>>2]=aa;if((Zv(ha,700,la)|0)==1?($=kL()|0,($|0)!=0):0){vL($,700)|0;tL($,323496)|0;yL($,c[fa>>2]|0)|0;xL($,c[fa>>2]|0)|0;wL($,2)|0;zL($,c[aa>>2]|0)|0;kJ(7,k,nL($)|0,$)|0;lL($)}ML(ha,k)|0;da=aa;c[da>>2]=0;c[da+4>>2]=0;OL(ha,1,k)|0;c[la>>2]=aa;if((Zv(ha,34665,la)|0)!=0?(da=aa,(yw(ha,c[da>>2]|0,c[da+4>>2]|0)|0)!=0):0)OL(ha,2,k)|0;c[aa>>2]=0;c[la>>2]=aa;if(!(((Zv(ha,34665,la)|0)!=0?(fw(ha)|0)!=0:0)?(ca=f+12|0,ca=Ld[(d[ca>>0]|d[ca+1>>0]<<8|d[ca+2>>0]<<16|d[ca+3>>0]<<24)&511](j)|0,da=fx(ha)|0,n=PY(f,j,1,0,m)|0,NI(k,n)|0,ba=f+8|0,Od[(d[ba>>0]|d[ba+1>>0]<<8|d[ba+2>>0]<<16|d[ba+3>>0]<<24)&255](j,ca,0)|0,dw(ha,da)|0,(n|0)!=0):0))Y=326;do if((Y|0)==326){b[fa>>1]=0;c[ga>>2]=0;c[la>>2]=fa;c[la+4>>2]=ga;da=(Zv(ha,330,la)|0)==0;if(!(da|(b[fa>>1]|0)==0)){p=f+12|0;p=Ld[(d[p>>0]|d[p+1>>0]<<8|d[p+2>>0]<<16|d[p+3>>0]<<24)&511](j)|0;q=fx(ha)|0;ga=c[ga>>2]|0;if(!(ew(ha,c[ga>>2]|0,c[ga+4>>2]|0)|0))n=0;else{n=PY(f,j,-1,0,m)|0;NI(k,n)|0}ga=f+8|0;Od[(d[ga>>0]|d[ga+1>>0]<<8|d[ga+2>>0]<<16|d[ga+3>>0]<<24)&255](j,p,0)|0;dw(ha,q)|0;if(n)break}c[ka>>2]=0;c[ja>>2]=0;c[la>>2]=ka;c[la+4>>2]=ja;if(!(Zv(ha,34377,la)|0))n=0;else{n=PJ(c[ja>>2]|0,c[ka>>2]|0)|0;IJ(ia);XK(la);ZK(la,ia,n,c[ka>>2]|0)|0;NI(k,c[la+92>>2]|0)|0;QJ(n);YK(la);n=0}}while(0);AI(n);ga=k;i=ma;return ga|0}function QY(e,f,g,j,l,m){e=e|0;f=f|0;g=g|0;j=j|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0.0;ba=i;i=i+64|0;$=ba+8|0;_=ba+24|0;W=ba+20|0;X=ba+30|0;Y=ba+28|0;V=ba+32|0;Z=ba;T=(CI(f)|0)!=0;U=T?2:1;R=(g|0)!=0;S=(m|0)!=0;N=m+8|0;O=(l&1|0)==0;P=(j|0)>-1;Q=j&65535;F=(l&65536|0)==0;G=l&256;H=l&512;I=l&1024;J=l&2048;K=(l&4096|0)==0;L=(l&8192|0)==0;M=(l&16384|0)==0;D=(l&32768|0)==0;e=f;E=0;a:while(1){if((E|0)==1)C=CI(f)|0;else C=e;if((C|0)!=0&R&S){A=c[N>>2]|0;y=EI(C)|0;z=FI(C)|0;B=GI(C)|0;w=HI(C)|0;e=w&65535;q=BI(C)|0;x=(y|0)==1;do if(x){l=w&65535;if((l|0)==24)m=3;else m=(l|0)==32?4:1;e=((l>>>0)/((m&65535)>>>0)|0)&65535;switch(TI(C)|0){case 5:{g=2;break}case 3:{g=3;break}case 1:{g=1;break}case 0:{g=0;break}case 4:case 2:{g=2;break}default:g=1}if((l|0)==8){u=(ZI(C)|0)==0;e=u?e:8;m=u?m:2;u=29;break}else if((l|0)!=32){u=29;break}if(!((b[q>>1]&1)==0&O)){c[$>>2]=1;Xv(A,332,$)|0;c[$>>2]=4;Xv(A,334,$)|0;g=5;u=29;break}if(g<<16>>16==2){b[X>>1]=2;c[$>>2]=1;c[$+4>>2]=X;Xv(A,338,$)|0;g=2;u=29}else u=29}else if((y|0)==10){e=w>>>2&16383;if((b[q>>1]&1)==0&O){b[Y>>1]=2;c[$>>2]=1;c[$+4>>2]=Y;Xv(A,338,$)|0;g=2;m=4;u=30;break}else{c[$>>2]=1;Xv(A,332,$)|0;c[$>>2]=4;Xv(A,334,$)|0;g=5;m=4;u=29;break}}else if((y|0)==11){e=(((w&65535)>>>0)/3|0)&65535;if(F){g=2;m=3;u=32;break}c[$>>2]=0;Xv(A,65560,$)|0;g=-32691;m=3;u=32;break}else if((y|0)==9){e=(((w&65535)>>>0)/3|0)&65535;g=2;m=3;u=30;break}else if((y|0)==12){e=w>>>2&16383;g=2;m=4;u=32;break}else{g=1;m=1;u=29;break}while(0);b:do if((u|0)==29){u=0;switch(y|0){case 12:case 11:case 7:case 6:{u=32;break b}case 8:{c[$>>2]=6;Xv(A,339,$)|0;break b}case 10:case 9:case 4:case 2:case 1:{u=30;break b}case 5:case 3:{c[$>>2]=2;Xv(A,339,$)|0;break b}default:break b}}while(0);if((u|0)==30){u=0;c[$>>2]=1;Xv(A,339,$)|0}else if((u|0)==32){u=0;c[$>>2]=3;Xv(A,339,$)|0}l=c[q+4>>2]|0;if((l|0)!=0?(aa=c[q+8>>2]|0,(aa|0)!=0):0){c[$>>2]=l;c[$+4>>2]=aa;Xv(A,34675,$)|0}c[$>>2]=z;Xv(A,256,$)|0;c[$>>2]=B;Xv(A,257,$)|0;v=m&65535;c[$>>2]=v;Xv(A,277,$)|0;l=e&65535;c[$>>2]=l;Xv(A,258,$)|0;c[$>>2]=g&65535;Xv(A,262,$)|0;c[$>>2]=1;Xv(A,284,$)|0;c[$>>2]=1;Xv(A,274,$)|0;c[$>>2]=1;Xv(A,266,$)|0;c[$>>2]=Cx(A,-1)|0;Xv(A,278,$)|0;c[$>>2]=2;Xv(A,296,$)|0;ca=+(~~(+((cJ(C)|0)>>>0)*.0254+.5)>>>0>>>0);h[k>>3]=ca;c[$>>2]=c[k>>2];c[$+4>>2]=c[k+4>>2];Xv(A,282,$)|0;ca=+(~~(+((dJ(C)|0)>>>0)*.0254+.5)>>>0>>>0);h[k>>3]=ca;c[$>>2]=c[k>>2];c[$+4>>2]=c[k+4>>2];Xv(A,283,$)|0;if(P){c[$>>2]=j;fga(V,323488,$)|0;c[$>>2]=2;Xv(A,254,$)|0;c[$>>2]=Q;c[$+4>>2]=0;Xv(A,297,$)|0;c[$>>2]=V;Xv(A,285,$)|0}else{c[$>>2]=(E|0)!=0&1;Xv(A,254,$)|0}t=g<<16>>16==3;if(t){o=SI(C)|0;m=VI(C)|0;o=o&65535;n=Afa(o*6|0)|0;if(!n){u=42;break}p=n+(o<<1)|0;q=o<<1;r=n+(q<<1)|0;if(o){s=o;do{s=s+-1|0;b[n+(s<<1)>>1]=(((d[m+(s<<2)+2>>0]|0)*65535|0)>>>0)/255|0;b[n+(s+o<<1)>>1]=(((d[m+(s<<2)+1>>0]|0)*65535|0)>>>0)/255|0;b[n+(s+q<<1)>>1]=(((d[m+(s<<2)>>0]|0)*65535|0)>>>0)/255|0}while((s|0)>0)}c[$>>2]=n;c[$+4>>2]=p;c[$+8>>2]=r;Xv(A,320,$)|0;Bfa(n)}n=ea(v,l)|0;q=g<<16>>16==-32691;l=q|(G|0)!=0;m=l|(H|0)!=0;o=m|(I|0)!=0;c:do if(!(o|(J|0)!=0)){m=n&65535;l=(m|0)!=1;d:do if(l|K)if(l|L){e:do if(M){if(D)switch(m|0){case 128:case 96:case 64:case 48:case 32:case 24:case 16:case 8:case 4:break e;case 1:{e=4;break d}default:{e=1;u=59;break c}}if(g<<16>>16!=3&(m|0)==8|(m|0)==24){e=Cx(A,-1)|0;c[$>>2]=e+8-(e&7);Xv(A,278,$)|0;e=7;u=59;break c}}while(0);c[$>>2]=5;Xv(A,259,$)|0;if(!(e<<16>>16==16|e<<16>>16==8)){c[$>>2]=1;Xv(A,317,$)|0;break c}if((n&65528)>>>0<8|t){c[$>>2]=1;Xv(A,317,$)|0;break c}else{c[$>>2]=2;Xv(A,317,$)|0;break c}}else e=4;else e=3;while(0);c[$>>2]=e;Xv(A,259,$)|0;c[_>>2]=0;c[$>>2]=_;Zv(A,257,$)|0;c[$>>2]=c[_>>2];Xv(A,278,$)|0;if((e|0)==3){c[$>>2]=5;Xv(A,292,$)|0;c[$>>2]=2;Xv(A,266,$)|0}}else{e=o?(m?(l?(q?34676:32773):32946):8):1;u=59}while(0);if((u|0)==59){u=0;c[$>>2]=e;Xv(A,259,$)|0}do if((lJ(6,C)|0)!=0?(c[_>>2]=0,c[W>>2]=0,(CL(C,_,W)|0)!=0):0){e=c[W>>2]|0;l=4-(e&3)+e|0;m=Afa(l)|0;if(!m){Bfa(c[_>>2]|0);break}Cga(m|0,0,l|0)|0;Aga(m|0,c[_>>2]|0,e|0)|0;if(!(gx(A)|0))e=l>>>2;else{e=l>>>2;Kx(m,e)}c[$>>2]=e;c[$+4>>2]=m;Xv(A,33723,$)|0;Bfa(m);Bfa(c[_>>2]|0)}while(0);c[_>>2]=0;UI(7,C,323496,_)|0;e=c[_>>2]|0;if((e|0)!=0?(sL(e)|0)!=0:0){s=rL(c[_>>2]|0)|0;t=sL(c[_>>2]|0)|0;c[$>>2]=s;c[$+4>>2]=t;Xv(A,700,$)|0}PL(A,1,C)|0;NL(A,C)|0;r=(E|0)==0&T;if(r){t=Z;c[t>>2]=0;c[t+4>>2]=0;c[$>>2]=1;c[$+4>>2]=Z;Xv(A,330,$)|0}q=OI(C)|0;f:do if(!x){g=Afa(q)|0;e=(g|0)==0;if((y|0)!=11|F){if(e){u=110;break a}if(B){e=B+-1|0;l=0;do{Aga(g|0,$J(C,e-l|0)|0,q|0)|0;_x(A,g,l,0)|0;l=l+1|0}while(B>>>0>l>>>0)}Bfa(g);break}else{if(e){u=104;break a}if(B){e=B+-1|0;l=0;do{bL(g,$J(C,e-l|0)|0,z);_x(A,g,l,0)|0;l=l+1|0}while(B>>>0>l>>>0)}Bfa(g);break}}else{switch(w&65535|0){case 8:{u=77;break}case 4:case 1:break;case 24:case 32:{n=Afa(q)|0;if(!n){u=95;break a}if(B){o=B+-1|0;e=g<<16>>16==5|(z|0)==0;m=0;do{Aga(n|0,$J(C,o-m|0)|0,q|0)|0;if(!e){l=n;g=0;while(1){x=l+2|0;y=a[x>>0]|0;a[x>>0]=a[l>>0]|0;a[l>>0]=y;g=g+1|0;if((g|0)==(z|0))break;else l=l+v|0}}_x(A,n,m,0)|0;m=m+1|0}while(B>>>0>m>>>0)}Bfa(n);break f}default:break f}if((u|0)==77?(0,(ZI(C)|0)!=0):0){g=_I(C)|0;m=Afa(z<<1)|0;if(!m){u=80;break a}o=(z|0)==0;q=B;while(1){p=q+-1|0;if((p|0)<=-1)break;e=$J(C,p)|0;if(!o){n=m;l=0;while(1){y=a[e>>0]|0;a[n>>0]=y;a[n+1>>0]=a[g+(y&255)>>0]|0;l=l+1|0;if((l|0)==(z|0))break;else{n=n+v|0;e=e+1|0}}}_x(A,m,B-q|0,0)|0;q=p}Bfa(m);break}e=Afa(q)|0;if(!e){u=89;break a}if(B){l=B+-1|0;g=0;do{Aga(e|0,$J(C,l-g|0)|0,q|0)|0;_x(A,e,g,0)|0;g=g+1|0}while(B>>>0>g>>>0)}Bfa(e)}while(0);if(P|r){zw(A)|0;e=1}else e=1}else e=0;E=E+1|0;if(!e){e=0;u=116;break}if(E>>>0>=U>>>0){u=116;break}else e=C}if((u|0)==42){ba=kc(4)|0;c[ba>>2]=323512;xd(ba|0,378680,0)}else if((u|0)==80){ba=kc(4)|0;c[ba>>2]=323512;xd(ba|0,378680,0)}else if((u|0)==89){ba=kc(4)|0;c[ba>>2]=323512;xd(ba|0,378680,0)}else if((u|0)==95){ba=kc(4)|0;c[ba>>2]=323512;xd(ba|0,378680,0)}else if((u|0)==104){ba=kc(4)|0;c[ba>>2]=323512;xd(ba|0,378680,0)}else if((u|0)==110){ba=kc(4)|0;c[ba>>2]=323512;xd(ba|0,378680,0)}else if((u|0)==116){i=ba;return e|0}return 0}function RY(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;k=j+16|0;f=j;g=j+4|0;h=j+8|0;e=j+12|0;c[k>>2]=2771273;c[f>>2]=704662861;c[g>>2]=2836809;c[h>>2]=721440077;c[e>>2]=0;ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,1,4,b)|0;if(!(pga(k,e,4)|0)){h=1;i=j;return h|0}if(!(pga(f,e,4)|0)){h=1;i=j;return h|0}if(!(pga(g,e,4)|0)){h=1;i=j;return h|0}h=(pga(h,e,4)|0)==0&1;i=j;return h|0}function SY(){return 323472}function TY(a){a=a|0;var b=0;b=i;a=a+-1|0;if(a>>>0>=32){a=0;i=b;return a|0}a=-2139094903>>>a&1;i=b;return a|0}function UY(a){a=a|0;return (a+-1|0)>>>0<12|0}function VY(){return 1}function WY(){return 1}function XY(){return 324728}function YY(){return 324712}function ZY(){return 324696}function _Y(){return 0}function $Y(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;l=p+9|0;o=p+8|0;k=p;if(!f){e=0;i=p;return e|0}a[l>>0]=0;a:do if(!(ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,1,1,f)|0))j=0;else{j=0;do{n=d[l>>0]|0;h=n&127|j;j=h<<7;if(!(n&128)){j=h;break a}}while((ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,1,1,f)|0)!=0)}while(0);b[k>>1]=j;if(j&65535){p=kc(4)|0;c[p>>2]=324672;xd(p|0,378680,0)}n=k+2|0;ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](n,1,1,f)|0;if((a[n>>0]|0)<0){k=k+3|0;a[k>>0]=-128;do{ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](k,1,1,f)|0;j=a[k>>0]|0;h=j&255;g=h&96;if((g|0)==96){j=h>>>4&7;g=h&15;n=Afa(j)|0;m=Afa(g)|0;ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](n,j,1,f)|0;ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](m,g,1,f)|0;Bfa(n);Bfa(m);m=13}else if(!g){a[o>>0]=0;n=(ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](o,1,1,f)|0)==0;if(n|(a[o>>0]|0)>-1)m=13;else{do n=(ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](o,1,1,f)|0)==0;while(!(n|(a[o>>0]|0)>-1));m=13}}if((m|0)==13){m=0;j=a[k>>0]|0}}while(j<<24>>24<0)}a[l>>0]=0;b:do if(!(ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,1,1,f)|0))j=0;else{j=0;do{n=d[l>>0]|0;h=n&127|j;j=h<<7;if(!(n&128)){j=h;break b}}while((ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,1,1,f)|0)!=0)}while(0);a[l>>0]=0;c:do if(!(ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,1,1,f)|0))h=0;else{h=0;do{n=d[l>>0]|0;g=n&127|h;h=g<<7;if(!(n&128)){h=g;break c}}while((ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](l,1,1,f)|0)!=0)}while(0);o=h&65535;j=yI(j&65535,o,1,0,0,0)|0;if(!j){p=kc(4)|0;c[p>>2]=324584;xd(p|0,378680,0)}l=VI(j)|0;a[l>>0]=0;a[l+1>>0]=0;a[l+2>>0]=0;a[l+4>>0]=-1;a[l+5>>0]=-1;a[l+6>>0]=-1;l=PI(j)|0;if(!o){e=j;i=p;return e|0}n=o+-1|0;if((l|0)>0){h=0;m=0}else{h=0;g=0;do{$J(j,n-h|0)|0;g=g+1<<16>>16;h=g&65535}while(h>>>0>>0);i=p;return j|0}do{k=$J(j,n-h|0)|0;h=0;g=0;do{ce[(d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24)&255](k+h|0,1,1,f)|0;g=g+1<<16>>16;h=g&65535}while((h|0)<(l|0));m=m+1<<16>>16;h=m&65535}while(h>>>0>>0);i=p;return j|0}function aZ(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=i;i=i+16|0;n=p+8|0;l=p;if(!((g|0)!=0&(h|0)!=0)){h=0;i=p;return h|0}if((HI(g)|0)!=1){h=kc(4)|0;c[h>>2]=324536;xd(h|0,378680,0)}b[l>>1]=0;j=l+2|0;a[j>>0]=0;m=l+4|0;b[m>>1]=FI(g)|0;o=l+6|0;b[o>>1]=GI(g)|0;k=e[l>>1]|0;l=1;while(1)if(!(127<<(l&255)*7&k))break;else l=l+1<<24>>24;f=f+4|0;if((l&255)>1)do{l=l+-1<<24>>24;a[n>>0]=k>>>((l&255)*7|0)|128;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,1,1,h)|0}while((l&255)>1);a[n>>0]=k&127;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,1,1,h)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](j,1,1,h)|0;k=e[m>>1]|0;l=1;while(1)if(!(127<<(l&255)*7&k))break;else l=l+1<<24>>24;if((l&255)>1)do{l=l+-1<<24>>24;a[n>>0]=k>>>((l&255)*7|0)|128;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,1,1,h)|0}while((l&255)>1);a[n>>0]=k&127;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,1,1,h)|0;k=e[o>>1]|0;l=1;while(1)if(!(127<<(l&255)*7&k))break;else l=l+1<<24>>24;if((l&255)>1)do{l=l+-1<<24>>24;a[n>>0]=k>>>((l&255)*7|0)|128;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,1,1,h)|0}while((l&255)>1);a[n>>0]=k&127;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,1,1,h)|0;l=PI(g)|0;k=b[o>>1]|0;if(!(k<<16>>16)){h=1;i=p;return h|0}j=l&65535;l=0;do{n=$J(g,(k&65535)+~(l&65535)|0)|0;ce[(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24)&255](n,j,1,h)|0;l=l+1<<16>>16;k=b[o>>1]|0}while((l&65535)<(k&65535));l=1;i=p;return l|0}function bZ(){return 324512}function cZ(a){a=a|0;return (a|0)==1|0}function dZ(a){a=a|0;return (a|0)==1|0}function eZ(){return 325104}function fZ(){return 325080}function gZ(){return 325072}function hZ(){return 0}function iZ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+2080|0;p=t;n=t+2064|0;f=t+1552|0;o=t+1040|0;l=t+8|0;m=t+16|0;g=-1;h=-1;j=0;a:while(1){s=g;b:while(1){r=h;while(1){g=0;do{h=ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](n,1,1,e)|0;q=a[n>>0]|0;u=g;g=g+1|0;a[f+u>>0]=q}while(q<<24>>24!=10&(g|0)<512);if((h|0)<1){h=324944;q=0;break a}a[f+g>>0]=0;if((Dga(f|0)|0)==511){h=325056;q=0;break a}c[p>>2]=o;c[p+4>>2]=l;if((Yda(f,324784,p)|0)!=2)break b;h=hea(o,95)|0;h=(h|0)==0?o:h+1|0;if(!(qga(324800,h)|0))break;u=(qga(324808,h)|0)==0;r=u?c[l>>2]|0:r}s=c[l>>2]|0;h=r}c[p>>2]=o;if((Yda(f,324816,p)|0)==1){g=10;k=15;break}c[p>>2]=o;if((Yda(f,324840,p)|0)==1){g=11;k=15;break}c[p>>2]=o;u=(Yda(f,324864,p)|0)==1;j=u?11:j;if(u){g=j;k=15;break}else{g=s;h=r}}c:do if((k|0)==15)if((s|0)!=-1)if((r|0)!=-1){h=(s|0)%16|0;if((h|0)>0)j=(h|0)<9&(g|0)==10&1;else j=0;n=((s+7|0)/8|0)+j|0;o=ea(n,r)|0;q=Afa(o)|0;if(q){h=0;do{c[m+(h<<2)>>2]=256;h=h+1|0}while((h|0)!=256);c[m+192>>2]=0;c[m+196>>2]=1;c[m+200>>2]=2;c[m+204>>2]=3;c[m+208>>2]=4;c[m+212>>2]=5;c[m+216>>2]=6;c[m+220>>2]=7;c[m+224>>2]=8;c[m+228>>2]=9;c[m+260>>2]=10;c[m+264>>2]=11;c[m+268>>2]=12;c[m+272>>2]=13;c[m+276>>2]=14;c[m+280>>2]=15;c[m+388>>2]=10;c[m+392>>2]=11;c[m+396>>2]=12;c[m+400>>2]=13;c[m+404>>2]=14;c[m+408>>2]=15;h=(o|0)>0;if((g|0)!=10){if(h){f=0;k=q}else{h=0;break}while(1){do{ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](p,1,1,e)|0;h=c[m+(d[p>>0]<<2)>>2]|0}while((h|0)==256);while(1){ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](p,1,1,e)|0;j=d[p>>0]|0;g=c[m+(j<<2)>>2]|0;if((g|0)!=256){h=g|h<<4;if((h|0)>255){h=324896;break c}else continue}if((j&223|0)!=88)break;if(!h)h=0;else{h=324896;break c}}a[k>>0]=h;f=f+1|0;if((f|0)>=(o|0)){h=0;break c}else k=k+1|0}}if(h){if(!j){f=0;j=q;while(1){do ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](p,1,1,e)|0;while((a[p>>0]|0)!=120);ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](p,1,1,e)|0;h=a[p>>0]|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](p,1,1,e)|0;h=(c[m+((h&255)<<2)>>2]<<4)+(c[m+(d[p>>0]<<2)>>2]|0)|0;if((h|0)>255){h=324896;break c}ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](p,1,1,e)|0;g=a[p>>0]|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](p,1,1,e)|0;g=(c[m+((g&255)<<2)>>2]<<4)+(c[m+(d[p>>0]<<2)>>2]|0)|0;if((g|0)>255){h=324896;break c}a[j>>0]=g;a[j+1>>0]=h;f=f+2|0;if((f|0)>=(o|0)){h=0;break c}else j=j+2|0}}else{k=0;h=q}while(1){do ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](p,1,1,e)|0;while((a[p>>0]|0)!=120);ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](p,1,1,e)|0;j=a[p>>0]|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](p,1,1,e)|0;j=(c[m+((j&255)<<2)>>2]<<4)+(c[m+(d[p>>0]<<2)>>2]|0)|0;if((j|0)>255){h=324896;break c}ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](p,1,1,e)|0;g=a[p>>0]|0;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](p,1,1,e)|0;g=(c[m+((g&255)<<2)>>2]<<4)+(c[m+(d[p>>0]<<2)>>2]|0)|0;if((g|0)>255){h=324896;break c}f=h+1|0;a[h>>0]=g;k=k+2|0;if(!((k|0)%(n|0)|0))h=f;else{a[f>>0]=j;h=h+2|0}if((k|0)>=(o|0)){h=0;break}}}else h=0}else{h=324768;q=0}}else{h=324912;r=-1;q=0}else{h=324928;s=-1;q=0}while(0);if(h){u=kc(4)|0;c[u>>2]=h;xd(u|0,378656,0)}n=yI(s,r,1,0,0,0)|0;if(!n){u=kc(4)|0;c[u>>2]=324768;xd(u|0,378656,0)}u=VI(n)|0;a[u>>0]=0;a[u+1>>0]=0;a[u+2>>0]=0;a[u+4>>0]=-1;a[u+5>>0]=-1;a[u+6>>0]=-1;if((r|0)<=0){Bfa(q);i=t;return n|0}o=r+-1|0;p=(s|0)>0;h=q;e=0;while(1){m=$J(n,o-e|0)|0;if(p){k=0;j=1;l=0;while(1){f=(k&255)>7;h=f?h+1|0:h;g=f?1:j;j=l&7;if(!(d[h>>0]&g)){u=m+(l>>3)|0;a[u>>0]=d[u>>0]|128>>>j}else{u=m+(l>>3)|0;a[u>>0]=d[u>>0]&65407>>>j}l=l+1|0;if((l|0)==(s|0))break;else{k=f?1:k+1<<24>>24;j=g<<1&254}}}e=e+1|0;if((e|0)>=(r|0))break;else h=h+1|0}Bfa(q);i=t;return n|0}function jZ(b,c){b=b|0;c=c|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+16|0;f=j+8|0;h=j;g=0;do{e=ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](f,1,1,c)|0;k=a[f>>0]|0;l=g;g=g+1|0;a[h+l>>0]=k}while(k<<24>>24!=10&(g|0)<7);if((e|0)>=1?(a[h+g>>0]=0,(qga(h,324760)|0)==0):0){b=1;i=j;return b|0}b=0;i=j;return b|0}function kZ(){return 324744}function lZ(a){a=a|0;return 0}function mZ(a){a=a|0;return 0}function nZ(){return 325880}function oZ(){return 325856}function pZ(){return 325848}function qZ(){return 325816}function rZ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+352|0;w=G;t=G+88|0;F=G+68|0;D=G+64|0;B=G+60|0;C=G+56|0;E=G+72|0;v=G+36|0;r=G+24|0;u=G+20|0;s=G+16|0;q=G+40|0;A=G+44|0;if(!e){b=0;i=G;return b|0}f=g&32768;p=(f|0)==0;f=f>>>15;ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](w,1,1,e)|0;while(1){if((a[w>>0]|0)==123)break;if((ce[(d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24)&255](w,1,1,e)|0)!=1){j=5;break}}if((j|0)==5){b=kc(4)|0;c[b>>2]=325464;xd(b|0,378680,0)}h=R1(b,e)|0;if(!h){b=kc(4)|0;c[b>>2]=325496;xd(b|0,378680,0)}c[w>>2]=F;c[w+4>>2]=D;c[w+8>>2]=B;c[w+12>>2]=C;z=(Yda(h,325304,w)|0)==4;Bfa(h);if(!z){b=kc(4)|0;c[b>>2]=325528;xd(b|0,378680,0)}h=c[F>>2]|0;g=c[D>>2]|0;if((c[B>>2]|0)>256)z=xI(f,h,g,24,16711680,65280,255)|0;else z=xI(f,h,g,8,0,0,0)|0;y=E+4|0;c[y>>2]=0;c[E+8>>2]=0;c[E>>2]=E+4;a:do if((c[B>>2]|0)>0){l=v+2|0;k=v+1|0;m=v+3|0;o=0;b:while(1){n=R1(b,e)|0;if(!n){j=16;break}q3(r,n,c[C>>2]|0);g=n+(c[C>>2]|0)|0;h=dea(g,9)|0;if(h)do{a[h>>0]=32;h=dea(h+1|0,9)|0}while((h|0)!=0);h=jea(g,325592)|0;if(!h){j=46;break}f=h+3|0;while(1){h=a[f>>0]|0;if(h<<24>>24==35){j=23;break}else if(h<<24>>24!=32){j=33;break}f=f+1|0}do if((j|0)==23){c[u>>2]=0;c[s>>2]=0;c[q>>2]=0;g=f+1|0;h=dea(g,32)|0;if(h)a[h>>0]=0;h=Dga(g|0)|0;if((h|0)==6){c[w>>2]=u;c[w+4>>2]=s;c[w+8>>2]=q;h=Yda(g,325616,w)|0}else if((h|0)==12){c[w>>2]=u;c[w+4>>2]=s;c[w+8>>2]=q;h=Yda(g,325648,w)|0;c[u>>2]=c[u>>2]>>8;c[s>>2]=c[s>>2]>>8;c[q>>2]=c[q>>2]>>8}else if((h|0)==3){c[w>>2]=u;c[w+4>>2]=s;c[w+8>>2]=q;h=Yda(g,325600,w)|0;j=c[u>>2]|0;c[u>>2]=j<<4|j;j=c[s>>2]|0;c[s>>2]=j<<4|j;j=c[q>>2]|0;c[q>>2]=j<<4|j}else if((h|0)==9){c[w>>2]=u;c[w+4>>2]=s;c[w+8>>2]=q;h=Yda(g,325632,w)|0;c[u>>2]=c[u>>2]>>4;c[s>>2]=c[s>>2]>>4;c[q>>2]=c[q>>2]>>4}else{j=31;break b}if((h|0)!=3){j=31;break b}a[v>>0]=c[u>>2];a[k>>0]=c[s>>2];a[l>>0]=c[q>>2]}else if((j|0)==33){if((rga(f,325704,4)|0)!=0?(rga(f,325712,4)|0)!=0:0){h=dea(f,32)|0;c:do if(h){while(1){g=h+1|0;if((a[g>>0]|0)!=32){if((a[h+2>>0]|0)==32)break;if((a[h+3>>0]|0)==32)break}h=dea(g,32)|0;if(!h)break c}a[h>>0]=0}while(0);h=f+((Dga(f|0)|0)+-1)|0;if((a[h>>0]|0)==32)do{a[h>>0]=0;h=h+-1|0}while((a[h>>0]|0)==32);if(!(mJ(f,v,k,l)|0)){j=45;break b}else break}a[l>>0]=-1;a[k>>0]=-1;a[v>>0]=-1}while(0);a[m>>0]=(c[B>>2]|0)>256?0:o&255;j=S1(E,r)|0;f=c[v>>2]|0;a[j>>0]=f;a[j+1>>0]=f>>8;a[j+2>>0]=f>>16;a[j+3>>0]=f>>24;if((c[B>>2]|0)<257){j=VI(z)|0;a[j+(o<<2)>>0]=a[l>>0]|0;a[j+(o<<2)+1>>0]=a[k>>0]|0;a[j+(o<<2)+2>>0]=a[v>>0]|0}Bfa(n);v3(r);o=o+1|0;if((o|0)>=(c[B>>2]|0))break a}if((j|0)==16){b=kc(4)|0;c[b>>2]=325560;xd(b|0,378680,0)}else if((j|0)==31){Bfa(n);b=kc(4)|0;c[b>>2]=325664;xd(b|0,378680,0)}else if((j|0)==45){c[w>>2]=n;fga(t,325720,w)|0;Bfa(n);b=kc(4)|0;c[b>>2]=t;xd(b|0,378656,0)}else if((j|0)==46){Bfa(n);b=kc(4)|0;c[b>>2]=325744;xd(b|0,378680,0)}}while(0);d:do if(p?(x=c[D>>2]|0,(x|0)>0):0){h=x;l=0;while(1){h=$J(z,h+~l|0)|0;k=R1(b,e)|0;if(!k)break;if((c[F>>2]|0)>0){j=k;g=0;while(1){q3(A,j,c[C>>2]|0);f=S1(E,A)|0;if((c[B>>2]|0)>256){w=a[f+1>>0]|0;x=a[f>>0]|0;a[h>>0]=a[f+2>>0]|0;a[h+1>>0]=w;a[h+2>>0]=x;h=h+3|0}else{a[h>>0]=a[f+3>>0]|0;h=h+1|0}f=c[C>>2]|0;v3(A);g=g+1|0;if((g|0)>=(c[F>>2]|0))break;else j=j+f|0}}Bfa(k);l=l+1|0;h=c[D>>2]|0;if((h|0)<=(l|0))break d}b=kc(4)|0;c[b>>2]=325784;xd(b|0,378680,0)}while(0);T1(E,c[y>>2]|0);b=z;i=G;return b|0}function sZ(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;T=i;i=i+464|0;Q=T;k=T+354|0;z=T+336|0;F=T+56|0;P=T+448|0;O=T+442|0;N=T+80|0;R=T+20|0;S=T+32|0;y=T+44|0;if(!((e|0)!=0&(f|0)!=0)){Q=0;i=T;return Q|0}j=k+0|0;h=325152|0;g=j+87|0;do{a[j>>0]=a[h>>0]|0;j=j+1|0;h=h+1|0}while((j|0)<(g|0));j=z+0|0;h=325240|0;g=j+18|0;do{a[j>>0]=a[h>>0]|0;j=j+1|0;h=h+1|0}while((j|0)<(g|0));j=F+0|0;h=325264|0;g=j+18|0;do{a[j>>0]=a[h>>0]|0;j=j+1|0;h=h+1|0}while((j|0)<(g|0));a[P+0>>0]=a[325288]|0;a[P+1>>0]=a[325289]|0;a[P+2>>0]=a[325290]|0;a[P+3>>0]=a[325291]|0;a[P+4>>0]=a[325292]|0;a[O+0>>0]=a[325296]|0;a[O+1>>0]=a[325297]|0;a[O+2>>0]=a[325298]|0;a[O+3>>0]=a[325299]|0;a[O+4>>0]=a[325300]|0;a[O+5>>0]=a[325301]|0;M=b+4|0;K=d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24;L=Dga(k|0)|0;if((ce[K&255](k,L,1,f)|0)!=1){Q=0;i=T;return Q|0}I=FI(e)|0;J=GI(e)|0;E=HI(e)|0;t=VI(e)|0;K=R+4|0;c[K>>2]=0;B=R+8|0;c[B>>2]=0;C=R+4|0;c[R>>2]=C;L=S+4|0;c[L>>2]=0;G=S+8|0;c[G>>2]=0;H=S+4|0;c[S>>2]=H;D=(J|0)>0;if(D){u=J+-1|0;v=(I|0)>0;w=(E|0)>8;j=0;x=0;while(1){k=$J(e,u-x|0)|0;if(v){s=0;do{h=a[k>>0]|0;if(w){r=a[k+1>>0]|0;q=a[k+2>>0]|0;o=h;b=r;m=q;k=k+3|0;p=h}else{p=h&255;o=0;b=0;m=h;k=k+1|0;q=a[t+(p<<2)+2>>0]|0;r=a[t+(p<<2)+1>>0]|0;p=a[t+(p<<2)>>0]|0}n=c[L>>2]|0;if(n){l=(b&255)<<8|(o&255)<<16|m&255;g=H;a:while(1){h=n;while(1){if((c[h+16>>2]|0)>>>0>=l>>>0)break;h=c[h+4>>2]|0;if(!h){h=g;break a}}n=c[h>>2]|0;if(!n)break;else g=h}if(!((h|0)!=(H|0)?l>>>0>=(c[h+16>>2]|0)>>>0:0))A=17}else A=17;if((A|0)==17){A=0;a[325367]=0;h=j;g=14;while(1){n=325352+g|0;a[n>>0]=a[325368+((h>>>0)%92|0)>>0]|0;if(h>>>0>91&(g|0)>0){h=(h>>>0)/92|0;g=g+-1|0}else break}q3(y,n,Dga(n|0)|0);h=c[L>>2]|0;do if(h){l=(b&255)<<8|(o&255)<<16|m&255;while(1){g=c[h+16>>2]|0;if(l>>>0>>0){g=c[h>>2]|0;if(!g){A=23;break}else{h=g;continue}}if(g>>>0>=l>>>0){A=27;break}g=h+4|0;n=c[g>>2]|0;if(!n){A=26;break}else h=n}if((A|0)==23){A=0;c[Q>>2]=h;l=h;n=h;break}else if((A|0)==26){A=0;c[Q>>2]=h;l=g;n=h;break}else if((A|0)==27){A=0;c[Q>>2]=h;l=Q;n=h;break}}else{c[Q>>2]=H;l=H;n=H}while(0);h=c[l>>2]|0;if(!h){h=tea(32)|0;c[h+16>>2]=(b&255)<<8|(o&255)<<16|m&255;g=h+20|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=n;c[l>>2]=h;g=c[c[S>>2]>>2]|0;if(!g)g=h;else{c[S>>2]=g;g=c[l>>2]|0}c1(c[L>>2]|0,g);c[G>>2]=(c[G>>2]|0)+1}w3(h+20|0,y)|0;h=c[K>>2]|0;do if(h){while(1){g=c[h+16>>2]|0;if(j>>>0>>0){g=c[h>>2]|0;if(!g){A=36;break}else{h=g;continue}}if(g>>>0>=j>>>0){A=40;break}l=h+4|0;g=c[l>>2]|0;if(!g){A=39;break}else h=g}if((A|0)==36){A=0;c[Q>>2]=h;l=h;break}else if((A|0)==39){A=0;c[Q>>2]=h;break}else if((A|0)==40){A=0;c[Q>>2]=h;l=Q;break}}else{c[Q>>2]=C;l=C;h=C}while(0);g=c[l>>2]|0;if(!g){g=tea(24)|0;c[g+16>>2]=j;m=g+20|0;a[m+0>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=h;c[l>>2]=g;h=c[c[R>>2]>>2]|0;if(!h)h=g;else{c[R>>2]=h;h=c[l>>2]|0}c1(c[K>>2]|0,h);c[B>>2]=(c[B>>2]|0)+1;h=g}else h=g;a[h+20>>0]=q;a[h+21>>0]=r;a[h+22>>0]=p;v3(y);j=j+1|0}s=s+1|0}while((s|0)<(I|0))}x=x+1|0;if((J|0)<=(x|0)){q=j;break}}}else q=0;t=~~(+ca(+(+(q|0)))/4.5217885770490405)+1|0;A=FI(e)|0;y=GI(e)|0;c[Q>>2]=A;c[Q+4>>2]=y;c[Q+8>>2]=q;c[Q+12>>2]=t;fga(N,325304,Q)|0;y=d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24;A=Dga(N|0)|0;b:do if((ce[y&255](N,A,1,f)|0)==1?(y=d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24,A=Dga(z|0)|0,(ce[y&255](z,A,1,f)|0)==1):0){if((q|0)>0){m=q+-1|0;p=0;do{a[325367]=0;j=p;k=14;while(1){b=325352+k|0;a[b>>0]=a[325368+((j>>>0)%92|0)>>0]|0;if(j>>>0>91&(k|0)>0){j=(j>>>0)/92|0;k=k+-1|0}else break}h=c[K>>2]|0;do if(h){g=h;while(1){j=c[g+16>>2]|0;if(p>>>0>>0){j=c[g>>2]|0;if(!j){A=60;break}else{g=j;continue}}if(j>>>0>=p>>>0){A=64;break}k=g+4|0;j=c[k>>2]|0;if(!j){A=63;break}else g=j}if((A|0)==60){c[Q>>2]=g;k=g;break}else if((A|0)==63){c[Q>>2]=g;break}else if((A|0)==64){c[Q>>2]=g;k=Q;break}}else{c[Q>>2]=C;k=C;g=C}while(0);j=c[k>>2]|0;if(!j){h=tea(24)|0;c[h+16>>2]=p;j=h+20|0;a[j+0>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=g;c[k>>2]=h;j=c[c[R>>2]>>2]|0;if(!j)j=h;else{c[R>>2]=j;j=c[k>>2]|0}c1(c[K>>2]|0,j);c[B>>2]=(c[B>>2]|0)+1;l=c[K>>2]|0;j=h}else l=h;o=d[j+20>>0]|0;do if(l){g=l;while(1){j=c[g+16>>2]|0;if(p>>>0>>0){j=c[g>>2]|0;if(!j){A=73;break}else{g=j;continue}}if(j>>>0>=p>>>0){A=77;break}k=g+4|0;j=c[k>>2]|0;if(!j){A=76;break}else g=j}if((A|0)==73){c[Q>>2]=g;k=g;break}else if((A|0)==76){c[Q>>2]=g;break}else if((A|0)==77){c[Q>>2]=g;k=Q;break}}else{c[Q>>2]=C;k=C;g=C}while(0);j=c[k>>2]|0;if(!j){h=tea(24)|0;c[h+16>>2]=p;j=h+20|0;a[j+0>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=g;c[k>>2]=h;j=c[c[R>>2]>>2]|0;if(!j)j=h;else{c[R>>2]=j;j=c[k>>2]|0}c1(c[K>>2]|0,j);c[B>>2]=(c[B>>2]|0)+1;k=c[K>>2]|0;j=h}else k=l;n=a[j+21>>0]|0;do if(k){while(1){j=c[k+16>>2]|0;if(p>>>0>>0){j=c[k>>2]|0;if(!j){A=86;break}else{k=j;continue}}if(j>>>0>=p>>>0){A=90;break}h=k+4|0;j=c[h>>2]|0;if(!j){A=89;break}else k=j}if((A|0)==86){c[Q>>2]=k;h=k;break}else if((A|0)==89){c[Q>>2]=k;break}else if((A|0)==90){c[Q>>2]=k;h=Q;break}}else{c[Q>>2]=C;h=C;k=C}while(0);j=c[h>>2]|0;if(!j){j=tea(24)|0;c[j+16>>2]=p;A=j+20|0;a[A+0>>0]=0;a[A+1>>0]=0;a[A+2>>0]=0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=k;c[h>>2]=j;k=c[c[R>>2]>>2]|0;if(!k)k=j;else{c[R>>2]=k;k=c[h>>2]|0}c1(c[K>>2]|0,k);c[B>>2]=(c[B>>2]|0)+1}z=d[j+22>>0]|0;c[Q>>2]=t;c[Q+4>>2]=b;c[Q+8>>2]=o;c[Q+12>>2]=n&255;c[Q+16>>2]=z;fga(N,325320,Q)|0;z=d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24;A=Dga(N|0)|0;if((ce[z&255](N,A,1,f)|0)!=1){j=0;break b}j=d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24;if((p|0)==(m|0)){A=Dga(F|0)|0;if((ce[j&255](F,A,1,f)|0)!=1){j=0;break b}}else{A=Dga(P|0)|0;if((ce[j&255](P,A,1,f)|0)!=1){j=0;break b}}p=p+1|0}while((p|0)<(q|0))}if(D){r=J+-1|0;s=(I|0)>0;p=(E|0)>8;q=0;while(1){j=$J(e,r-q|0)|0;if(s){o=0;do{k=a[j>>0]|0;h=j+1|0;if(p){m=k;n=a[h>>0]|0;k=a[j+2>>0]|0;j=j+3|0}else{m=0;n=0;j=h}h=c[L>>2]|0;do if(h){l=(n&255)<<8|(m&255)<<16|k&255;while(1){g=c[h+16>>2]|0;if(l>>>0>>0){g=c[h>>2]|0;if(!g){A=109;break}else{h=g;continue}}if(g>>>0>=l>>>0){A=113;break}b=h+4|0;g=c[b>>2]|0;if(!g){A=112;break}else h=g}if((A|0)==109){c[Q>>2]=h;b=h;g=h;break}else if((A|0)==112){c[Q>>2]=h;g=h;break}else if((A|0)==113){c[Q>>2]=h;b=Q;g=h;break}}else{c[Q>>2]=H;b=H;g=H}while(0);h=c[b>>2]|0;if(!h){h=tea(32)|0;c[h+16>>2]=(n&255)<<8|(m&255)<<16|k&255;k=h+20|0;c[k+0>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=g;c[b>>2]=h;k=c[c[S>>2]>>2]|0;if(!k)k=h;else{c[S>>2]=k;k=c[b>>2]|0}c1(c[L>>2]|0,k);c[G>>2]=(c[G>>2]|0)+1}k=h+20|0;if(!(a[k>>0]&1))k=k+1|0;else k=c[h+28>>2]|0;c[Q>>2]=t;c[Q+4>>2]=k;fga(N,325344,Q)|0;o=o+1|0;if((ce[(d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24)&255](N,t,1,f)|0)!=1){j=0;break b}}while((o|0)<(I|0))}j=d[M>>0]|d[M+1>>0]<<8|d[M+2>>0]<<16|d[M+3>>0]<<24;if((r|0)==(q|0)){F=Dga(O|0)|0;if((ce[j&255](O,F,1,f)|0)!=1){j=0;break b}}else{F=Dga(P|0)|0;if((ce[j&255](P,F,1,f)|0)!=1){j=0;break b}}q=q+1|0;if((J|0)<=(q|0)){j=1;break}}}else j=1}else j=0;while(0);U1(S,c[L>>2]|0);V1(R,c[K>>2]|0);Q=j;i=T;return Q|0}function tZ(a,b){a=a|0;b=b|0;var c=0,e=0,f=0;f=i;i=i+256|0;e=f;b=ce[(d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24)&255](e,1,256,b)|0;a:do if((b|0)>=10?(c=b+-9|0,(c|0)>0):0){b=0;while(1){if(!(rga(e+b|0,325136,9)|0)){b=1;break a}b=b+1|0;if((b|0)>=(c|0)){b=0;break}}}else b=0;while(0);i=f;return b|0}function uZ(){return 325120}function vZ(a){a=a|0;return (a&-17|0)==8|0}function wZ(a){a=a|0;return (a|0)==1|0}function xZ(){return 1}function yZ(e,f,g,h,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;ba=i;i=i+96|0;U=ba+92|0;V=ba;T=ba+4|0;Z=ba+8|0;_=ba+32|0;$=ba+56|0;aa=ba+80|0;c[Z+0>>2]=0;c[Z+4>>2]=0;c[Z+8>>2]=0;c[Z+12>>2]=0;c[Z+16>>2]=0;c[Z+20>>2]=0;c[_+0>>2]=0;c[_+4>>2]=0;c[_+8>>2]=0;c[_+12>>2]=0;c[_+16>>2]=0;c[_+20>>2]=0;c[$+0>>2]=0;c[$+4>>2]=0;c[$+8>>2]=0;c[$+12>>2]=0;c[$+16>>2]=0;c[$+20>>2]=0;Y=aa+4|0;c[Y>>2]=0;B=aa+8|0;c[B>>2]=0;K=aa+4|0;c[aa>>2]=K;L=f+g|0;M=Z+20|0;X=(k|0)==0;W=f;Q=_+8|0;R=_+4|0;S=_+16|0;C=_+20|0;D=Z+8|0;E=Z+4|0;F=Z+16|0;G=$+8|0;H=$+4|0;I=$+16|0;J=$+20|0;t=0;m=0;p=L;a:do{if(t){l=c[C>>2]|0;n=c[S>>2]|0;o=l+-1|0;p=o+n|0;m=c[R>>2]|0;p=c[(c[m+(p>>>10<<2)>>2]|0)+((p&1023)<<2)>>2]|0;c[C>>2]=o;o=c[Q>>2]|0;if((o|0)==(m|0))m=0;else m=(o-m<<8)+-1|0;if((1-l+m-n|0)>>>0>2047){xea(c[o+-4>>2]|0);c[Q>>2]=(c[Q>>2]|0)+-4;o=c[M>>2]|0}else o=t;n=c[F>>2]|0;t=o+-1|0;m=t+n|0;l=c[E>>2]|0;m=b[(c[l+(m>>>11<<2)>>2]|0)+((m&2047)<<1)>>1]|0;c[M>>2]=t;t=c[D>>2]|0;if((t|0)==(l|0))l=0;else l=(t-l<<9)+-1|0;if((1-o+l-n|0)>>>0>4095){xea(c[t+-4>>2]|0);c[D>>2]=(c[D>>2]|0)+-4}o=c[J>>2]|0;t=c[I>>2]|0;r=o+-1|0;l=r+t|0;n=c[H>>2]|0;l=c[(c[n+(l>>>10<<2)>>2]|0)+((l&1023)<<2)>>2]|0;c[J>>2]=r;r=c[G>>2]|0;if((r|0)==(n|0))n=0;else n=(r-n<<8)+-1|0;if((1-o+n-t|0)>>>0>2047){xea(c[r+-4>>2]|0);c[G>>2]=(c[G>>2]|0)+-4}}u=p;v=m&65535;s=u<<16|v;r=c[Y>>2]|0;q=(r|0)==0;do if(!q){t=K;o=r;b:while(1){n=o;while(1){if((c[n+16>>2]|0)>>>0>=s>>>0)break;n=c[n+4>>2]|0;if(!n){n=t;break b}}o=c[n>>2]|0;if(!o)break;else t=n}if((n|0)!=(K|0)?s>>>0>=(c[n+16>>2]|0)>>>0:0)break;if(!q){while(1){n=c[r+16>>2]|0;if(s>>>0>>0){n=c[r>>2]|0;if(!n){A=25;break}else{r=n;continue}}if(n>>>0>=s>>>0){A=29;break}o=r+4|0;n=c[o>>2]|0;if(!n){A=28;break}else r=n}if((A|0)==25){c[T>>2]=r;t=r;o=r;A=31;break}else if((A|0)==28){c[T>>2]=r;t=o;o=r;A=31;break}else if((A|0)==29){c[T>>2]=r;t=T;o=r;A=31;break}}else A=30}else A=30;while(0);if((A|0)==30){c[T>>2]=K;t=K;o=K;A=31}c:do if((A|0)==31){A=0;n=c[t>>2]|0;if(!n){n=tea(24)|0;c[n+16>>2]=s;c[n+20>>2]=0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=o;c[t>>2]=n;o=c[c[aa>>2]>>2]|0;if(!o)o=n;else{c[aa>>2]=o;o=c[t>>2]|0}c1(c[Y>>2]|0,o);c[B>>2]=(c[B>>2]|0)+1}c[n+20>>2]=1;if(X)n=(d[p+1>>0]|0)<<8|(d[p>>0]|0);else n=(d[p>>0]|0)<<8|(d[p+1>>0]|0);y=n&65535;if((m&65535)<(y&65535)?(u-W+((n&65535)*12|0)|0)>>>0<=h>>>0:0){x=v;d:while(1){z=kL()|0;if(!z){m=0;A=212;break a}n=x*12|0;t=n|2;o=p+t|0;if(X)n=(d[p+(n|3)>>0]|0)<<8|(d[o>>0]|0);else n=(d[o>>0]|0)<<8|(d[p+(n|3)>>0]|0);vL(z,n&65535)|0;n=p+(t+2)|0;if(X)n=(d[p+(t+3)>>0]|0)<<8|(d[n>>0]|0);else n=(d[n>>0]|0)<<8|(d[p+(t+3)>>0]|0);n=n&65535;if((n+-1|0)>11){A=47;break}wL(z,n)|0;n=p+(t+4)|0;if(X)n=(d[p+(t+6)>>0]|0)<<16|(d[p+(t+7)>>0]|0)<<24|(d[p+(t+5)>>0]|0)<<8|(d[n>>0]|0);else n=(d[p+(t+5)>>0]|0)<<16|(d[n>>0]|0)<<24|(d[p+(t+6)>>0]|0)<<8|(d[p+(t+7)>>0]|0);xL(z,n)|0;n=AL(pL(z)|0)|0;if((n|0)!=0?(qL(z)|0)>>>0>(4294967295/(n>>>0)|0)>>>0:0)lL(z);else A=54;e:do if((A|0)==54){A=0;yL(z,ea(qL(z)|0,n)|0)|0;n=p+(t+8)|0;do if((rL(z)|0)>>>0>=5){if(X)n=(d[p+(t+10)>>0]|0)<<16|(d[p+(t+11)>>0]|0)<<24|(d[p+(t+9)>>0]|0)<<8|(d[n>>0]|0);else n=(d[p+(t+9)>>0]|0)<<16|(d[n>>0]|0)<<24|(d[p+(t+10)>>0]|0)<<8|(d[p+(t+11)>>0]|0);n=n-j|0;if(n>>>0>h>>>0){lL(z);break e}if((rL(z)|0)>>>0>(h-n|0)>>>0){lL(z);break e}else{n=f+n|0;break}}while(0);w=(oL(z)|0)&65535;if((w|0)==37500|(w|0)==40965|(w|0)==34853|(w|0)==34665){if((oL(z)|0)<<16>>16==-28036){c[U>>2]=0;UI(1,e,326552,U)|0;q=sL(c[U>>2]|0)|0;f:do if(pga(326560,n,7)|0){if(!(pga(326568,n,7)|0)){t=8;o=14;break}if(!(pga(326576,n,5)|0)){t=8;o=14;break}if(!(pga(326584,n,4)|0)){t=8;o=14;break}if(!(pga(326592,n,12)|0)){t=0;o=0;break}if(!(pga(326608,n,5)|0)){o=a[n+6>>0]|0;if(o<<24>>24==1){t=8;o=11;break}else if(o<<24>>24==2){t=18;o=13;break}else{t=0;o=0;break}}w=(q|0)!=0;do if(w){s=5;u=q;v=326616;do{r=a[v>>0]|0;o=a[u>>0]|0;v=v+1|0;u=u+1|0;if(!(r<<24>>24!=0&o<<24>>24!=0)){t=r;break}if(r<<24>>24!=o<<24>>24){r=Jfa(r&255)|0;t=r&255;ca=Jfa(o&255)|0;o=ca&255;if((ca^r)&255)break}else{t=r;o=r}s=s+-1|0}while((s|0)!=0);if(t<<24>>24==o<<24>>24){t=0;o=12;break f}else{s=5;u=q;v=326624}do{r=a[v>>0]|0;o=a[u>>0]|0;v=v+1|0;u=u+1|0;if(!(r<<24>>24!=0&o<<24>>24!=0)){t=r;break}if(r<<24>>24!=o<<24>>24){ca=Jfa(r&255)|0;t=ca&255;r=Jfa(o&255)|0;o=r&255;if((r^ca)&255)break}else{t=r;o=r}s=s+-1|0}while((s|0)!=0);if(t<<24>>24==o<<24>>24){t=0;o=5;break f}else{s=5;u=q;v=326632}do{r=a[v>>0]|0;o=a[u>>0]|0;v=v+1|0;u=u+1|0;if(!(r<<24>>24!=0&o<<24>>24!=0)){t=r;break}if(r<<24>>24!=o<<24>>24){ca=Jfa(r&255)|0;t=ca&255;r=Jfa(o&255)|0;o=r&255;if((r^ca)&255)break}else{t=r;o=r}s=s+-1|0}while((s|0)!=0);if(t<<24>>24!=o<<24>>24)break;o=(pga(326640,n,6)|0)==0;t=o?6:0;o=o?7:6;break f}while(0);do if(pga(326648,n,8)|0){if(w){s=8;u=q;v=326664;do{r=a[v>>0]|0;o=a[u>>0]|0;v=v+1|0;u=u+1|0;if(!(r<<24>>24!=0&o<<24>>24!=0)){t=r;break}if(r<<24>>24!=o<<24>>24){ca=Jfa(r&255)|0;t=ca&255;r=Jfa(o&255)|0;o=r&255;if((r^ca)&255)break}else{t=r;o=r}s=s+-1|0}while((s|0)!=0);if(t<<24>>24==o<<24>>24)break}if(!(pga(326680,n,22)|0)){t=22;o=9;break f}if(w){s=7;u=q;v=326704;do{r=a[v>>0]|0;o=a[u>>0]|0;v=v+1|0;u=u+1|0;if(!(r<<24>>24!=0&o<<24>>24!=0)){t=r;break}if(r<<24>>24!=o<<24>>24){ca=Jfa(r&255)|0;t=ca&255;r=Jfa(o&255)|0;o=r&255;if((r^ca)&255)break}else{t=r;o=r}s=s+-1|0}while((s|0)!=0);if(t<<24>>24==o<<24>>24){t=0;o=10;break f}}if(!(pga(326712,n,12)|0)){t=12;o=15;break f}do if(w){s=5;u=q;v=326728;do{r=a[v>>0]|0;o=a[u>>0]|0;v=v+1|0;u=u+1|0;if(!(r<<24>>24!=0&o<<24>>24!=0)){t=r;break}if(r<<24>>24!=o<<24>>24){ca=Jfa(r&255)|0;t=ca&255;w=Jfa(o&255)|0;o=w&255;if((w^ca)&255)break}else{t=r;o=r}s=s+-1|0}while((s|0)!=0);if(t<<24>>24==o<<24>>24){t=0;o=0;break f}else{s=6;u=q;v=326736}do{r=a[v>>0]|0;o=a[u>>0]|0;v=v+1|0;u=u+1|0;if(!(r<<24>>24!=0&o<<24>>24!=0)){t=r;break}if(r<<24>>24!=o<<24>>24){ca=Jfa(r&255)|0;t=ca&255;w=Jfa(o&255)|0;o=w&255;if((w^ca)&255)break}else{t=r;o=r}s=s+-1|0}while((s|0)!=0);if(t<<24>>24!=o<<24>>24){u=5;s=326744;do{r=a[s>>0]|0;o=a[q>>0]|0;s=s+1|0;q=q+1|0;if(!(r<<24>>24!=0&o<<24>>24!=0)){t=r;break}if(r<<24>>24!=o<<24>>24){ca=Jfa(r&255)|0;t=ca&255;w=Jfa(o&255)|0;o=w&255;if((w^ca)&255)break}else{t=r;o=r}u=u+-1|0}while((u|0)!=0);if(t<<24>>24!=o<<24>>24)break}o=(pga(326752,n,4)|0)==0;t=o?6:0;o=o?17:16;break f}while(0);if(!(pga(326760,n,12)|0)){t=12;o=18;break f}if(!(pga(326776,n,12)|0)){t=12;o=18;break f}if((pga(326792,n,8)|0)!=0?(pga(326808,n,8)|0)!=0:0){t=0;o=0;break f}c[V>>2]=0;UI(1,e,326824,V)|0;o=sL(c[V>>2]|0)|0;if((o|0)!=0?(pga(326832,o,10)|0)==0:0){t=10;o=19;break f}t=10;o=20;break f}while(0);o=n+8|0;if(X){t=(d[n+10>>0]|0)<<16|(d[n+11>>0]|0)<<24|(d[n+9>>0]|0)<<8|(d[o>>0]|0);o=8;break}else{t=(d[n+9>>0]|0)<<16|(d[o>>0]|0)<<24|(d[n+10>>0]|0)<<8|(d[n+11>>0]|0);o=8;break}}else{t=8;o=14}while(0);r=t;v=o;u=n+t|0}else{if(X)t=(d[n+2>>0]|0)<<16|(d[n+3>>0]|0)<<24|(d[n+1>>0]|0)<<8|(d[n>>0]|0);else t=(d[n+1>>0]|0)<<16|(d[n>>0]|0)<<24|(d[n+2>>0]|0)<<8|(d[n+3>>0]|0);o=(oL(z)|0)&65535;if((o|0)==34665)o=2;else if((o|0)==34853)o=3;else if((o|0)==40965)o=4;else o=l;r=t;v=o;u=f+t|0}if(r>>>0>>0&(v|0)!=0)break d;Z1(e,z,n,k,l)}else Z1(e,z,n,k,l);lL(z)}while(0);m=m+1<<16>>16;if((m&65535)<(y&65535))x=x+1|0;else break c}if((A|0)==47){A=0;lL(z);break}r=c[Q>>2]|0;q=c[R>>2]|0;if((r|0)==(q|0))o=0;else o=(r-q<<8)+-1|0;t=c[S>>2]|0;n=c[C>>2]|0;if((o-t|0)==(n|0)){W1(_);s=c[C>>2]|0;t=c[S>>2]|0;r=c[Q>>2]|0;o=c[R>>2]|0}else{s=n;o=q}n=s+t|0;if((r|0)!=(o|0)?(N=(c[o+(n>>>10<<2)>>2]|0)+((n&1023)<<2)|0,(N|0)!=0):0)c[N>>2]=p;c[C>>2]=s+1;m=m+1<<16>>16;r=c[D>>2]|0;q=c[E>>2]|0;if((r|0)==(q|0))o=0;else o=(r-q<<9)+-1|0;t=c[F>>2]|0;n=c[M>>2]|0;if((o-t|0)==(n|0)){X1(Z);s=c[M>>2]|0;t=c[F>>2]|0;r=c[D>>2]|0;o=c[E>>2]|0}else{s=n;o=q}n=s+t|0;if((r|0)!=(o|0)?(O=(c[o+(n>>>11<<2)>>2]|0)+((n&2047)<<1)|0,(O|0)!=0):0)b[O>>1]=m;c[M>>2]=s+1;r=c[G>>2]|0;q=c[H>>2]|0;if((r|0)==(q|0))o=0;else o=(r-q<<8)+-1|0;t=c[I>>2]|0;n=c[J>>2]|0;if((o-t|0)==(n|0)){Y1($);s=c[J>>2]|0;t=c[I>>2]|0;r=c[G>>2]|0;o=c[H>>2]|0}else{s=n;o=q}n=s+t|0;if((r|0)!=(o|0)?(P=(c[o+(n>>>10<<2)>>2]|0)+((n&1023)<<2)|0,(P|0)!=0):0)c[P>>2]=l;c[J>>2]=s+1;r=c[Q>>2]|0;q=c[R>>2]|0;if((r|0)==(q|0))o=0;else o=(r-q<<8)+-1|0;t=c[S>>2]|0;n=c[C>>2]|0;if((o-t|0)==(n|0)){W1(_);s=c[C>>2]|0;t=c[S>>2]|0;r=c[Q>>2]|0;o=c[R>>2]|0}else{s=n;o=q}n=s+t|0;do if((r|0)!=(o|0)){n=(c[o+(n>>>10<<2)>>2]|0)+((n&1023)<<2)|0;if(!n)break;c[n>>2]=u}while(0);c[C>>2]=s+1;r=c[D>>2]|0;q=c[E>>2]|0;if((r|0)==(q|0))o=0;else o=(r-q<<9)+-1|0;t=c[F>>2]|0;n=c[M>>2]|0;if((o-t|0)==(n|0)){X1(Z);s=c[M>>2]|0;t=c[F>>2]|0;r=c[D>>2]|0;o=c[E>>2]|0}else{s=n;o=q}n=s+t|0;do if((r|0)!=(o|0)){n=(c[o+(n>>>11<<2)>>2]|0)+((n&2047)<<1)|0;if(!n)break;b[n>>1]=0}while(0);c[M>>2]=s+1;r=c[G>>2]|0;q=c[H>>2]|0;if((r|0)==(q|0))o=0;else o=(r-q<<8)+-1|0;t=c[I>>2]|0;n=c[J>>2]|0;if((o-t|0)==(n|0)){Y1($);s=c[J>>2]|0;t=c[I>>2]|0;r=c[G>>2]|0;o=c[H>>2]|0}else{s=n;o=q}n=s+t|0;do if((r|0)!=(o|0)){n=(c[o+(n>>>10<<2)>>2]|0)+((n&1023)<<2)|0;if(!n)break;c[n>>2]=v}while(0);c[J>>2]=s+1;lL(z)}}while(0);t=c[M>>2]|0}while((t|0)!=0);if((A|0)==212){Y=c[Y>>2]|0;_1(aa,Y);$1($);a2(_);b2(Z);i=ba;return m|0}if(X){n=g+2+(((d[f+(g+1)>>0]|0)<<8|(d[L>>0]|0))*12|0)|0;n=(d[f+(n+2)>>0]|0)<<16|(d[f+(n+3)>>0]|0)<<24|(d[f+(n+1)>>0]|0)<<8|(d[f+n>>0]|0)}else{n=g+2+(((d[L>>0]|0)<<8|(d[f+(g+1)>>0]|0))*12|0)|0;n=(d[f+(n+1)>>0]|0)<<16|(d[f+n>>0]|0)<<24|(d[f+(n+2)>>0]|0)<<8|(d[f+(n+3)>>0]|0)}if(!((n|0)!=0&n>>>0>>0)){f=1;Y=c[Y>>2]|0;_1(aa,Y);$1($);a2(_);b2(Z);i=ba;return f|0}m=f+n|0;if(X)m=(d[f+(n+1)>>0]|0)<<8|(d[m>>0]|0);else m=(d[m>>0]|0)<<8|(d[f+(n+1)>>0]|0);t=m&65535;if(!t){f=1;Y=c[Y>>2]|0;_1(aa,Y);$1($);a2(_);b2(Z);i=ba;return f|0}l=n+2|0;s=12-W|0;g:do if(X){r=0;n=0;m=0;while(1){p=l+(r*12|0)|0;o=f+p|0;if((s+o|0)>>>0>=h>>>0){m=0;break}o=(d[f+(p+1)>>0]|0)<<8|(d[o>>0]|0);p=(d[f+(p+10)>>0]|0)<<16|(d[f+(p+11)>>0]|0)<<24|(d[f+(p+9)>>0]|0)<<8|(d[f+(p+8)>>0]|0);if((o|0)==514)m=p;else if((o|0)==513)n=p;r=r+1|0;if((r|0)>=(t|0))break g}Y=c[Y>>2]|0;_1(aa,Y);$1($);a2(_);b2(Z);i=ba;return m|0}else{r=0;n=0;q=0;while(1){o=l+(r*12|0)|0;m=f+o|0;if((s+m|0)>>>0>=h>>>0){m=0;break}p=(d[m>>0]|0)<<8|(d[f+(o+1)>>0]|0);m=(d[f+(o+9)>>0]|0)<<16|(d[f+(o+8)>>0]|0)<<24|(d[f+(o+10)>>0]|0)<<8|(d[f+(o+11)>>0]|0);if((p|0)==513){n=m;m=q}else if((p|0)!=514)m=q;r=r+1|0;if((r|0)>=(t|0))break g;else q=m}Y=c[Y>>2]|0;_1(aa,Y);$1($);a2(_);b2(Z);i=ba;return m|0}while(0);if((n|0)==0|(m|0)==0|(m+n|0)>>>0>h>>>0){f=1;Y=c[Y>>2]|0;_1(aa,Y);$1($);a2(_);b2(Z);i=ba;return f|0}h=PJ(f+n|0,m)|0;f=RJ(2,h,0)|0;QJ(h);NI(e,f)|0;AI(f);f=1;Y=c[Y>>2]|0;_1(aa,Y);$1($);a2(_);b2(Z);i=ba;return f|0}function zZ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;j=a+4|0;d=c[a>>2]|0;f=(((c[j>>2]|0)-d|0)/12|0)+1|0;if(f>>>0>357913941)r9(a);k=a+8|0;e=((c[k>>2]|0)-d|0)/12|0;if(e>>>0<178956970){e=e<<1;e=e>>>0>>0?f:e;d=((c[j>>2]|0)-d|0)/12|0;if(!e){f=0;g=0}else h=6}else{e=357913941;d=((c[j>>2]|0)-d|0)/12|0;h=6}if((h|0)==6){f=e;g=tea(e*12|0)|0}e=g+(d*12|0)|0;h=g+(f*12|0)|0;if(e)p3(e,b);b=g+((d+1|0)*12|0)|0;g=c[a>>2]|0;d=c[j>>2]|0;if((d|0)==(g|0)){f=g;d=g}else{do{e=e+-12|0;d=d+-12|0;p3(e,d)}while((d|0)!=(g|0));f=c[a>>2]|0;d=c[j>>2]|0}c[a>>2]=e;c[j>>2]=b;c[k>>2]=h;while(1){if((d|0)==(f|0))break;j=d+-12|0;v3(j);d=j}if(!f){i=l;return}xea(f);i=l;return}function AZ(a,b){a=a|0;b=b|0;var d=0;d=i;if(!b){i=d;return}else{AZ(a,c[b>>2]|0);AZ(a,c[b+4>>2]|0);xea(b);i=d;return}}function BZ(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;j=l;k=a+4|0;e=c[k>>2]|0;do if(e){h=b[d>>1]|0;while(1){f=b[e+16>>1]|0;if((h&65535)<(f&65535)){f=c[e>>2]|0;if(!f){f=5;break}else{e=f;continue}}if((f&65535)>=(h&65535)){f=9;break}g=e+4|0;f=c[g>>2]|0;if(!f){f=8;break}else e=f}if((f|0)==5){c[j>>2]=e;g=e;break}else if((f|0)==8){c[j>>2]=e;break}else if((f|0)==9){c[j>>2]=e;g=j;break}}else{e=a+4|0;c[j>>2]=e;g=e}while(0);f=c[g>>2]|0;if(f){k=f;k=k+20|0;i=l;return k|0}f=tea(24)|0;b[f+16>>1]=b[d>>1]|0;c[f+20>>2]=0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=e;c[g>>2]=f;e=c[c[a>>2]>>2]|0;if(!e)e=f;else{c[a>>2]=e;e=c[g>>2]|0}c1(c[k>>2]|0,e);k=a+8|0;c[k>>2]=(c[k>>2]|0)+1;k=f;k=k+20|0;i=l;return k|0}function CZ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;h=k;j=a+4|0;d=c[j>>2]|0;do if(d){g=c[b>>2]|0;while(1){e=c[d+16>>2]|0;if((g|0)<(e|0)){e=c[d>>2]|0;if(!e){e=5;break}else{d=e;continue}}if((e|0)>=(g|0)){e=9;break}f=d+4|0;e=c[f>>2]|0;if(!e){e=8;break}else d=e}if((e|0)==5){c[h>>2]=d;f=d;break}else if((e|0)==8){c[h>>2]=d;break}else if((e|0)==9){c[h>>2]=d;f=h;break}}else{d=a+4|0;c[h>>2]=d;f=d}while(0);e=c[f>>2]|0;if(e){j=e;j=j+20|0;i=k;return j|0}e=tea(24)|0;c[e+16>>2]=c[b>>2];c[e+20>>2]=0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=d;c[f>>2]=e;d=c[c[a>>2]>>2]|0;if(!d)d=e;else{c[a>>2]=d;d=c[f>>2]|0}c1(c[j>>2]|0,d);j=a+8|0;c[j>>2]=(c[j>>2]|0)+1;j=e;j=j+20|0;i=k;return j|0}function DZ(a,b){a=a|0;b=b|0;var d=0;d=i;if(!b){i=d;return}else{DZ(a,c[b>>2]|0);DZ(a,c[b+4>>2]|0);xea(b);i=d;return}}function EZ(a){a=a|0;var b=0,d=0;d=i;uw(a,363952,8)|0;b=c[90986]|0;if(!b){i=d;return}Id[b&511](a);i=d;return}function FZ(a,d,f,h){a=a|0;d=d|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=i;i=i+48|0;o=x;w=x+32|0;k=x+38|0;l=x+16|0;m=x+36|0;r=x+24|0;s=x+8|0;c[w>>2]=0;if((d|0)==34665){w=1;i=x;return w|0}if((d|0)==34853&(h|0)==1){w=1;i=x;return w|0}v=FL()|0;u=d&65535;q=HL(v,h,u,0)|0;if(!q){w=1;i=x;return w|0}t=nw(a,d)|0;if(!t){w=1;i=x;return w|0}y=(rw(t)|0)==0;j=sw(t)|0;do if(!y)if((j|0)==-3){c[l>>2]=0;c[o>>2]=l;c[o+4>>2]=w;if((Zv(a,d,o)|0)==1){n=0;l=c[l>>2]|0;break}else{y=1;i=x;return y|0}}else{b[k>>1]=0;c[o>>2]=k;c[o+4>>2]=w;if((Zv(a,d,o)|0)==1){n=0;l=e[k>>1]|0;break}else{y=1;i=x;return y|0}}else{do if((j|0)!=-1?(sw(t)|0)!=-3:0)if((sw(t)|0)==-2){c[o>>2]=m;Cv(a,277,o)|0;l=e[m>>1]|0;break}else{l=sw(t)|0;break}else l=1;while(0);if((ow(t)|0)==301){y=1;i=x;return y|0}if(!((((qw(t)|0)!=2?(sw(t)|0)!=-1:0)?(sw(t)|0)!=-3:0)?!((sw(t)|0)==-2|l>>>0>1):0))p=21;if(((((((p|0)==21?(ow(t)|0)!=297:0)?(ow(t)|0)!=321:0)?(ow(t)|0)!=530:0)?(ow(t)|0)!=336:0)?(ow(t)|0)!=258:0)?(ow(t)|0)!=259:0){c[o>>2]=w;if((Zv(a,d,o)|0)==1){n=0;break}else j=1;i=x;return j|0}j=qw(t)|0;if((j|0)==10|(j|0)==5)k=4;else k=lw(j)|0;j=JK(ea(k,l)|0)|0;c[w>>2]=j;if((l|0)==1){c[o>>2]=j;n=Zv(a,d,o)|0;p=34}else if((l|0)==2){c[o>>2]=j;c[o+4>>2]=j+k;n=Zv(a,d,o)|0;p=34}else{c[o>>2]=pw(t)|0;yJ(18,364112,o)}if((p|0)==34?(n|0)==1:0){n=1;break}KK(c[w>>2]|0);y=1;i=x;return y|0}while(0);m=kL()|0;if(!m){if(!n){y=0;i=x;return y|0}KK(c[w>>2]|0);y=0;i=x;return y|0}vL(m,u)|0;tL(m,q)|0;do switch(qw(t)|0){case 11:{wL(m,11)|0;yL(m,ea(lw(qw(t)|0)|0,l)|0)|0;xL(m,l)|0;zL(m,c[w>>2]|0)|0;break}case 12:{wL(m,12)|0;yL(m,ea(lw(qw(t)|0)|0,l)|0)|0;xL(m,l)|0;zL(m,c[w>>2]|0)|0;break}case 16:{wL(m,16)|0;yL(m,ea(lw(qw(t)|0)|0,l)|0)|0;xL(m,l)|0;zL(m,c[w>>2]|0)|0;break}case 18:{wL(m,18)|0;yL(m,ea(lw(qw(t)|0)|0,l)|0)|0;xL(m,l)|0;zL(m,c[w>>2]|0)|0;break}case 13:{wL(m,13)|0;yL(m,ea(lw(qw(t)|0)|0,l)|0)|0;xL(m,l)|0;zL(m,c[w>>2]|0)|0;break}case 17:{wL(m,17)|0;yL(m,ea(lw(qw(t)|0)|0,l)|0)|0;xL(m,l)|0;zL(m,c[w>>2]|0)|0;break}case 9:{wL(m,9)|0;yL(m,ea(lw(qw(t)|0)|0,l)|0)|0;xL(m,l)|0;zL(m,c[w>>2]|0)|0;break}case 6:{wL(m,6)|0;yL(m,ea(lw(qw(t)|0)|0,l)|0)|0;xL(m,l)|0;zL(m,c[w>>2]|0)|0;break}case 8:{wL(m,8)|0;yL(m,ea(lw(qw(t)|0)|0,l)|0)|0;xL(m,l)|0;zL(m,c[w>>2]|0)|0;break}case 7:{wL(m,7)|0;yL(m,ea(lw(qw(t)|0)|0,l)|0)|0;xL(m,l)|0;zL(m,c[w>>2]|0)|0;break}case 3:{wL(m,3)|0;yL(m,ea(lw(qw(t)|0)|0,l)|0)|0;xL(m,l)|0;zL(m,c[w>>2]|0)|0;break}case 4:{wL(m,4)|0;yL(m,ea(lw(qw(t)|0)|0,l)|0)|0;xL(m,l)|0;zL(m,c[w>>2]|0)|0;break}case 1:{wL(m,1)|0;yL(m,ea(lw(qw(t)|0)|0,l)|0)|0;xL(m,l)|0;zL(m,c[w>>2]|0)|0;break}case 5:{j=Afa(l<<3)|0;if(l){k=0;do{gL(r,+g[(c[w>>2]|0)+(k<<2)>>2]);y=k<<1;c[j+(y<<2)>>2]=iL(r)|0;c[j+((y|1)<<2)>>2]=jL(r)|0;hL(r);k=k+1|0}while(k>>>0>>0)}wL(m,5)|0;yL(m,ea(lw(qw(t)|0)|0,l)|0)|0;xL(m,l)|0;zL(m,j)|0;Bfa(j);break}case 10:{j=Afa(l<<3)|0;if(l){k=0;do{gL(s,+g[(c[w>>2]|0)+(k<<2)>>2]);y=k<<1;c[j+(y<<2)>>2]=iL(s)|0;c[j+((y|1)<<2)>>2]=jL(s)|0;hL(s);k=k+1|0}while(k>>>0>>0)}wL(m,5)|0;yL(m,ea(lw(qw(t)|0)|0,l)|0)|0;xL(m,l)|0;zL(m,j)|0;Bfa(j);break}default:{if(((n|0)==0?(qw(t)|0)==2:0)?(sw(t)|0)==-1:0)j=(Dga(c[w>>2]|0)|0)+1|0;else j=ea(lw(qw(t)|0)|0,l)|0;wL(m,2)|0;yL(m,j)|0;xL(m,j)|0;zL(m,c[w>>2]|0)|0}}while(0);j=IL(v,h,u)|0;if(j)uL(m,j)|0;y=KL(v,h)|0;kJ(y,f,nL(m)|0,m)|0;lL(m);if(!n){y=1;i=x;return y|0}KK(c[w>>2]|0);y=1;i=x;return y|0}function GZ(e,f,h){e=e|0;f=+f;h=h|0;var j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0.0,F=0.0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0,P=0,Q=0,R=0,U=0,V=0;V=i;i=i+16|0;J=V;if(!e){e=0;i=V;return e|0}if(f>=360.0)do f=f+-360.0;while(f>=360.0);if(f<0.0)do f=f+360.0;while(f<0.0);do if(!(f>45.0&f<=135.0)){if(f>135.0&f<=225.0){k=HI(e)|0;u=FI(e)|0;x=GI(e)|0;l=EI(e)|0;j=zI(l,u,x,k,0,0,0)|0;a:do if(j){switch(l|0){case 12:case 11:case 6:case 10:case 9:case 2:break;case 1:{if((k|0)==1){if((x|0)<=0)break a;k=x+-1|0;l=(u|0)>0;s=0;while(1){n=$J(e,s)|0;o=$J(j,k-s|0)|0;if(l){r=0;do{p=u-r+-1|0;q=p&7;if(!((d[n+(r>>3)>>0]|0)&128>>>(r&7))){U=o+(p>>3)|0;a[U>>0]=(d[U>>0]|0)&65407>>>q}else{U=o+(p>>3)|0;a[U>>0]=d[U>>0]|0|128>>>q}r=r+1|0}while((r|0)!=(u|0))}s=s+1|0;if((s|0)==(x|0))break a}}break}default:break a}r=PI(e)|0;r=(r>>>0)/((FI(e)|0)>>>0)|0;if((x|0)>0){q=x+-1|0;n=ea(r,u+-1|0)|0;s=(u|0)>0;o=0-r|0;t=0;do{p=$J(e,t)|0;k=$J(j,q-t|0)|0;b:do if(s){l=k+n|0;k=0;while(1){switch(r|0){case 1:{a[l>>0]=a[p>>0]|0;break}case 12:{g[l>>2]=+g[p>>2];g[l+4>>2]=+g[p+4>>2];g[l+8>>2]=+g[p+8>>2];break}case 8:{c[l>>2]=c[p>>2];c[l+4>>2]=c[p+4>>2];break}case 16:{g[l>>2]=+g[p>>2];g[l+4>>2]=+g[p+4>>2];g[l+8>>2]=+g[p+8>>2];g[l+12>>2]=+g[p+12>>2];break}case 4:{c[l>>2]=c[p>>2];break}case 6:{c[l>>2]=c[p>>2];b[l+4>>1]=b[p+4>>1]|0;break}case 2:{b[l>>1]=b[p>>1]|0;break}case 3:{b[l>>1]=b[p>>1]|0;a[l+2>>0]=a[p+2>>0]|0;break}default:{}}k=k+1|0;if((k|0)==(u|0))break b;else{l=l+o|0;p=p+r|0}}}while(0);t=t+1|0}while((t|0)!=(x|0))}}else j=0;while(0);f=f+-180.0;J=j;break}if(f>225.0&f<=315.0){k=HI(e)|0;O=FI(e)|0;Q=GI(e)|0;l=EI(e)|0;j=zI(l,Q,O,k,0,0,0)|0;c:do if(j){P=OI(e)|0;R=OI(j)|0;switch(l|0){case 1:break;case 12:case 11:case 6:case 10:case 9:case 2:{n=QI(e)|0;s=QI(j)|0;o=((PI(e)|0)>>>0)/((FI(e)|0)>>>0)|0;if(!O)break c;t=ea(P,Q+-1|0)|0;u=(Q|0)==0;k=0-P|0;q=0;while(1){d:do if(!u){p=s+(ea(q,R)|0)|0;l=n+((ea(q,o)|0)+t)|0;r=0;while(1){switch(o|0){case 2:{b[p>>1]=b[l>>1]|0;break}case 1:{a[p>>0]=a[l>>0]|0;break}case 8:{c[p>>2]=c[l>>2];c[p+4>>2]=c[l+4>>2];break}case 6:{c[p>>2]=c[l>>2];b[p+4>>1]=b[l+4>>1]|0;break}case 12:{g[p>>2]=+g[l>>2];g[p+4>>2]=+g[l+4>>2];g[p+8>>2]=+g[l+8>>2];break}case 4:{c[p>>2]=c[l>>2];break}case 16:{g[p>>2]=+g[l>>2];g[p+4>>2]=+g[l+4>>2];g[p+8>>2]=+g[l+8>>2];g[p+12>>2]=+g[l+12>>2];break}case 3:{b[p>>1]=b[l>>1]|0;a[p+2>>0]=a[l+2>>0]|0;break}default:{}}r=r+1|0;if((r|0)==(Q|0))break d;else{p=p+o|0;l=l+k|0}}}while(0);q=q+1|0;if((q|0)==(O|0))break c}}default:break c}if((k|0)==1){C=QI(e)|0;D=QI(j)|0;p=(ea(R,O)|0)+-1|0;r=(R<<3)-Q|0;if(!Q)break;q=J+4|0;n=(P|0)==0;l=R+-1|0;z=0;while(1){ub(J|0,r+z|0,8);s=1<>2];o=ea(z,P)|0;if(!n){y=0;do{t=C+(y+o)|0;u=y<<3;k=l-(c[J>>2]|0)|0;B=0;do{U=k+(ea(B+u|0,R)|0)|0;x=D+U|0;if((U|0)<0|(U|0)>(p|0))break;if((d[t>>0]|0)&128>>>B)a[x>>0]=d[x>>0]|0|s;B=B+1|0}while(B>>>0<8);y=y+1|0}while((y|0)!=(P|0))}z=z+1|0;if((z|0)==(Q|0))break c}}else if(!((k|0)==8|(k|0)==24|(k|0)==32))break;x=QI(e)|0;y=QI(j)|0;z=PI(e)|0;z=(z>>>0)/((FI(e)|0)>>>0)|0;if(Q){B=(O|0)==0;C=Q+-1|0;D=~O;G=~Q;K=-65;L=0;while(1){H=~(K>>>0>G>>>0?K:G);M=L;L=L+64|0;if(!B){I=M>>>0<(Q>>>0>>0?Q:L)>>>0;J=-65;k=0;while(1){p=~(J>>>0>D>>>0?J:D);if(I){l=ea(k,z)|0;r=ea(k,R)|0;q=k+64|0;n=k>>>0<(O>>>0>>0?O:q)>>>0;t=M;while(1){e:do if(n){s=y+((ea(t,z)|0)+r)|0;o=x+((ea(C-t|0,P)|0)+l)|0;u=k;while(1){switch(z|0){case 1:{a[s>>0]=a[o>>0]|0;break}case 2:{b[s>>1]=b[o>>1]|0;break}case 3:{b[s>>1]=b[o>>1]|0;a[s+2>>0]=a[o+2>>0]|0;break}case 6:{c[s>>2]=c[o>>2];b[s+4>>1]=b[o+4>>1]|0;break}case 8:{c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];break}case 12:{g[s>>2]=+g[o>>2];g[s+4>>2]=+g[o+4>>2];g[s+8>>2]=+g[o+8>>2];break}case 4:{c[s>>2]=c[o>>2];break}case 16:{g[s>>2]=+g[o>>2];g[s+4>>2]=+g[o+4>>2];g[s+8>>2]=+g[o+8>>2];g[s+12>>2]=+g[o+12>>2];break}default:{}}u=u+1|0;if((u|0)==(p|0))break e;else{s=s+R|0;o=o+z|0}}}while(0);t=t+1|0;if((t|0)==(H|0)){k=q;break}}}else k=k+64|0;if(k>>>0>>0)J=J+-64|0;else break}}if(L>>>0>=Q>>>0)break;else K=K+-64|0}}}else j=0;while(0);f=f+-270.0;J=j}else J=e}else{l=HI(e)|0;P=FI(e)|0;U=GI(e)|0;k=EI(e)|0;j=zI(k,U,P,l,0,0,0)|0;f:do if(j){Q=OI(e)|0;R=OI(j)|0;switch(k|0){case 12:case 11:case 6:case 10:case 9:case 2:{k=QI(e)|0;p=QI(j)|0;l=((PI(e)|0)>>>0)/((FI(e)|0)>>>0)|0;if(!P)break f;r=P+-1|0;q=(U|0)==0;t=0;while(1){g:do if(!q){n=p+(ea(t,R)|0)|0;s=k+(ea(r-t|0,l)|0)|0;o=0;while(1){switch(l|0){case 2:{b[n>>1]=b[s>>1]|0;break}case 8:{c[n>>2]=c[s>>2];c[n+4>>2]=c[s+4>>2];break}case 16:{g[n>>2]=+g[s>>2];g[n+4>>2]=+g[s+4>>2];g[n+8>>2]=+g[s+8>>2];g[n+12>>2]=+g[s+12>>2];break}case 4:{c[n>>2]=c[s>>2];break}case 12:{g[n>>2]=+g[s>>2];g[n+4>>2]=+g[s+4>>2];g[n+8>>2]=+g[s+8>>2];break}case 6:{c[n>>2]=c[s>>2];b[n+4>>1]=b[s+4>>1]|0;break}case 3:{b[n>>1]=b[s>>1]|0;a[n+2>>0]=a[s+2>>0]|0;break}case 1:{a[n>>0]=a[s>>0]|0;break}default:{}}o=o+1|0;if((o|0)==(U|0))break g;else{n=n+l|0;s=s+Q|0}}}while(0);t=t+1|0;if((t|0)==(P|0))break f}}case 1:break;default:break f}if((l|0)==1){x=QI(e)|0;y=QI(j)|0;u=(ea(R,P)|0)+-1|0;if(!U)break;z=J+4|0;p=P+-1|0;if(!Q){k=0;while(1){ub(J|0,k|0,8);k=k+1|0;if((k|0)==(U|0))break f}}else o=0;while(1){ub(J|0,o|0,8);n=128>>>(c[z>>2]|0);l=ea(o,Q)|0;s=0;do{r=x+(s+l)|0;k=ea(p-(s<<3)|0,R)|0;k=k+(c[J>>2]|0)|0;t=0;do{O=k-(ea(t,R)|0)|0;q=y+O|0;if((O|0)<0|(O|0)>(u|0))break;if((d[r>>0]|0)&128>>>t)a[q>>0]=d[q>>0]|0|n;t=t+1|0}while((t|0)<8);s=s+1|0}while((s|0)!=(Q|0));o=o+1|0;if((o|0)==(U|0))break f}}else if(!((l|0)==8|(l|0)==24|(l|0)==32))break;B=QI(e)|0;C=QI(j)|0;D=PI(e)|0;D=(D>>>0)/((FI(e)|0)>>>0)|0;if(U){G=(P|0)==0;H=P+-1|0;I=(D|0)==1;K=~U;L=~U;M=~P;O=-65;k=0;while(1){q=~(O>>>0>K>>>0?O:K);if(G)k=k+64|0;else{n=ea(k,Q)|0;s=ea(k,D)|0;o=k+64|0;t=k>>>0<(U>>>0>>0?U:o)>>>0;u=-65-k|0;u=~(u>>>0>>0?L:u);y=-65;z=0;while(1){x=~(y>>>0>M>>>0?y:M);p=z;z=z+64|0;if(p>>>0<(P>>>0>>0?P:z)>>>0)do{J=B+((ea(H-p|0,D)|0)+n)|0;l=C+((ea(p,R)|0)+s)|0;h:do if(t){if(I){r=k;while(1){a[l>>0]=a[J>>0]|0;r=r+1|0;if((r|0)==(q|0))break h;else{l=l+1|0;J=J+Q|0}}}else r=k;while(1){switch(D|0){case 3:{b[l>>1]=b[J>>1]|0;a[l+2>>0]=a[J+2>>0]|0;break}case 2:{b[l>>1]=b[J>>1]|0;break}case 4:{c[l>>2]=c[J>>2];break}case 8:{c[l>>2]=c[J>>2];c[l+4>>2]=c[J+4>>2];break}case 12:{g[l>>2]=+g[J>>2];g[l+4>>2]=+g[J+4>>2];g[l+8>>2]=+g[J+8>>2];break}case 16:{g[l>>2]=+g[J>>2];g[l+4>>2]=+g[J+4>>2];g[l+8>>2]=+g[J+8>>2];g[l+12>>2]=+g[J+12>>2];break}case 6:{c[l>>2]=c[J>>2];b[l+4>>1]=b[J+4>>1]|0;break}default:{}}r=r+1|0;if((r|0)==(u|0))break h;else{l=l+D|0;J=J+Q|0}}}while(0);p=p+1|0}while((p|0)!=(x|0));if(z>>>0>=P>>>0){k=o;break}else y=y+-64|0}}if(k>>>0>>0)O=O+-64|0;else break}}}else j=0;while(0);f=f+-90.0;J=j}while(0);if(!J){e=0;i=V;return e|0}if(f==0.0){if((J|0)!=(e|0)){e=J;i=V;return e|0}e=DI(e)|0;i=V;return e|0}o=HI(J)|0;m=f*3.141592653589793/180.0;F=+X(+m);N=+Y(+(m*.5));k=FI(J)|0;p=GI(J)|0;q=EI(J)|0;E=+(p>>>0);n=(~~(E*+T(+N)+.5)>>>0)+k|0;s=zI(q,n,p,o,0,0,0)|0;do if(!s)j=0;else{i:do if(p){l=!(N>=0.0);r=0;while(1){f=+(r>>>0);if(l)f=f-E;f=N*(f+.5);j=~~+S(+f);f=f-+(j|0);switch(EI(J)|0){case 10:case 9:case 2:{d2(J,s,r,j,f,h);break}case 1:{U=HI(J)|0;if((U|0)==32|(U|0)==24|(U|0)==8)c2(J,s,r,j,f,h);break}case 12:case 11:case 6:{e2(J,s,r,j,f,h);break}default:{}}r=r+1|0;if((r|0)==(p|0))break i}}while(0);A=+(k>>>0);w=+T(+F);v=+W(+m);p=(~~(A*w+E*v+.5)>>>0)+1|0;r=zI(q,n,p,o,0,0,0)|0;if(!r){AI(s);j=0;break}if(F>0.0)f=F*(A+-1.0);else f=-(F*(A-+(n>>>0)));j:do if(n){k=0;while(1){j=~~+S(+f);m=f-+(j|0);switch(EI(s)|0){case 12:case 11:case 6:{h2(s,r,k,j,m,h);break}case 10:case 9:case 2:{g2(s,r,k,j,m,h);break}case 1:{U=HI(s)|0;if((U|0)==32|(U|0)==24|(U|0)==8)f2(s,r,k,j,m,h);break}default:{}}k=k+1|0;if((k|0)==(n|0))break j;else f=f-F}}while(0);AI(s);j=zI(q,(~~(E*w+A*v+.5)>>>0)+1|0,p,o,0,0,0)|0;if(!j){AI(r);j=0;break}f=F*(A+-1.0);if(!(F>=0.0))f=N*(1.0-+(p>>>0)-f);else f=-(N*f);k:do if(p){l=0;while(1){k=~~+S(+f);m=f-+(k|0);switch(EI(r)|0){case 1:{U=HI(r)|0;if((U|0)==32|(U|0)==24|(U|0)==8)c2(r,j,l,k,m,h);break}case 10:case 9:case 2:{d2(r,j,l,k,m,h);break}case 12:case 11:case 6:{e2(r,j,l,k,m,h);break}default:{}}l=l+1|0;if((l|0)==(p|0))break k;else f=N+f}}while(0);AI(r)}while(0);if((J|0)==(e|0)){e=j;i=V;return e|0}AI(J);e=j;i=V;return e|0}function HZ(a){a=a|0;var d=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;h=j;d=j+4|0;g=a+88|0;f=Vv(b[g>>1]|0)|0;c[h>>2]=e[g>>1];ega(d,20,101e3,h)|0;g=c[a+628>>2]|0;a=c[a>>2]|0;if(f)d=c[f>>2]|0;c[h>>2]=d;Dw(g,a,101008,h);i=j;return 0}function IZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;j=n;m=n+8|0;if(!a)Sa(244256,244152,8302,255784);if(!f)Sa(244312,244152,8303,255784);if(!d)Sa(252600,244152,8304,255784);h=a+8|0;if((c[h>>2]|0)==16)g=(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)|0;else g=c[a+12>>2]|0;if((c[(c[a+80>>2]|0)+16>>2]|0)>>>0<=b>>>0)Sa(255816,244152,8312,255784);k=c[g+5576>>2]|0;if((c[e>>2]|0)>>>0<5){_y(f,1,255864,j)|0;e=0;i=n;return e|0}l=k+(b*1080|0)+4|0;oy(d,l,1);g=(c[l>>2]|0)+1|0;c[l>>2]=g;if(g>>>0>33){c[j>>2]=g;c[j+4>>2]=33;_y(f,1,255904,j)|0;e=0;i=n;return e|0}if((c[a+160>>2]|0)>>>0>=g>>>0){c[j>>2]=b;_y(f,1,255984,j)|0;c[h>>2]=c[h>>2]|32768;e=0;i=n;return e|0}g=k+(b*1080|0)+8|0;oy(d+1|0,g,1);c[g>>2]=(c[g>>2]|0)+2;g=k+(b*1080|0)+12|0;oy(d+2|0,g,1);c[g>>2]=(c[g>>2]|0)+2;oy(d+3|0,k+(b*1080|0)+16|0,1);oy(d+4|0,k+(b*1080|0)+20|0,1);g=(c[e>>2]|0)+-5|0;c[e>>2]=g;h=c[l>>2]|0;if(!(c[k+(b*1080|0)>>2]&1)){if(!h){e=1;i=n;return e|0}else g=0;do{c[k+(b*1080|0)+(g<<2)+812>>2]=15;c[k+(b*1080|0)+(g<<2)+944>>2]=15;g=g+1|0}while(g>>>0<(c[l>>2]|0)>>>0);g=1;i=n;return g|0}if(g>>>0>>0){_y(f,1,255864,j)|0;e=0;i=n;return e|0}if(!h)h=0;else{a=0;g=d+5|0;while(1){oy(g,m,1);c[k+(b*1080|0)+(a<<2)+812>>2]=c[m>>2]&15;c[k+(b*1080|0)+(a<<2)+944>>2]=(c[m>>2]|0)>>>4;a=a+1|0;h=c[l>>2]|0;if(a>>>0>=h>>>0)break;else g=g+1|0}g=c[e>>2]|0}c[e>>2]=g-h;e=1;i=n;return e|0}function JZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;j=o;l=o+12|0;if(!a)Sa(244256,244152,8554,255336);if(!f)Sa(244312,244152,8555,255336);if(!d)Sa(252600,244152,8556,255336);if((c[a+8>>2]|0)==16)g=(c[a+156>>2]|0)+((c[a+196>>2]|0)*5632|0)|0;else g=c[a+12>>2]|0;if((c[(c[a+80>>2]|0)+16>>2]|0)>>>0<=b>>>0)Sa(246752,244152,8565,255336);n=c[g+5576>>2]|0;g=c[e>>2]|0;if(!g){_y(f,1,255360,j)|0;b=0;i=o;return b|0}c[e>>2]=g+-1;oy(d,l,1);a=d+1|0;h=c[l>>2]&31;k=n+(b*1080|0)+24|0;c[k>>2]=h;c[n+(b*1080|0)+804>>2]=(c[l>>2]|0)>>>5;do if((h|0)==1){g=1;m=16}else{g=(c[e>>2]|0)>>>((h|0)!=0&1);if(g>>>0>97){c[j>>2]=g;c[j+4>>2]=97;c[j+8>>2]=97;_y(f,2,255400,j)|0;h=c[k>>2]|0}d=(g|0)==0;if(h)if(d){g=0;m=28;break}else{m=16;break}if(!d){d=0;while(1){oy(a,l,1);if(d>>>0<97){c[n+(b*1080|0)+(d<<3)+28>>2]=(c[l>>2]|0)>>>3;c[n+(b*1080|0)+(d<<3)+32>>2]=0}d=d+1|0;if((d|0)==(g|0))break;else a=a+1|0}}g=(c[e>>2]|0)-g|0}while(0);if((m|0)==16){h=0;while(1){oy(a,l,2);if(h>>>0<97){c[n+(b*1080|0)+(h<<3)+28>>2]=(c[l>>2]|0)>>>11;c[n+(b*1080|0)+(h<<3)+32>>2]=c[l>>2]&2047}h=h+1|0;if((h|0)==(g|0)){m=28;break}else a=a+2|0}}if((m|0)==28)g=(c[e>>2]|0)-(g<<1)|0;c[e>>2]=g;if((c[k>>2]|0)!=1){b=1;i=o;return b|0}g=n+(b*1080|0)+28|0;a=n+(b*1080|0)+32|0;h=1;do{e=(c[g>>2]|0)-(((h+-1|0)>>>0)/3|0)|0;c[n+(b*1080|0)+(h<<3)+28>>2]=(e|0)>0?e:0;c[n+(b*1080|0)+(h<<3)+32>>2]=c[a>>2];h=h+1|0}while((h|0)!=97);g=1;i=o;return g|0}function KZ(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;k=c[b+124>>2]|0;r=c[b+56>>2]|0;x=c[b+108>>2]|0;y=r+x|0;j=c[b+120>>2]|0;n=c[b+144>>2]|0;m=(c[b+44>>2]|0)+-262|0;m=x>>>0>m>>>0?x-m|0:0;o=c[b+64>>2]|0;p=c[b+52>>2]|0;q=r+(x+258)|0;z=c[b+116>>2]|0;n=n>>>0>z>>>0?z:n;s=b+112|0;t=r+(x+1)|0;u=r+(x+2)|0;v=q;w=x+257|0;l=d;d=j;k=j>>>0<(c[b+140>>2]|0)>>>0?k:k>>>2;h=a[r+(j+x)>>0]|0;j=a[r+(x+-1+j)>>0]|0;while(1){f=r+l|0;if((((a[r+(l+d)>>0]|0)==h<<24>>24?(a[r+(d+-1+l)>>0]|0)==j<<24>>24:0)?(a[f>>0]|0)==(a[y>>0]|0):0)?(a[r+(l+1)>>0]|0)==(a[t>>0]|0):0){g=r+(l+2)|0;b=u;do{f=b+1|0;if((a[f>>0]|0)!=(a[g+1>>0]|0)){b=f;break}f=b+2|0;if((a[f>>0]|0)!=(a[g+2>>0]|0)){b=f;break}f=b+3|0;if((a[f>>0]|0)!=(a[g+3>>0]|0)){b=f;break}f=b+4|0;if((a[f>>0]|0)!=(a[g+4>>0]|0)){b=f;break}f=b+5|0;if((a[f>>0]|0)!=(a[g+5>>0]|0)){b=f;break}f=b+6|0;if((a[f>>0]|0)!=(a[g+6>>0]|0)){b=f;break}f=b+7|0;if((a[f>>0]|0)!=(a[g+7>>0]|0)){b=f;break}b=b+8|0;g=g+8|0}while(b>>>0>>0?(a[b>>0]|0)==(a[g>>0]|0):0);g=b-v|0;b=g+258|0;if((b|0)>(d|0)){c[s>>2]=l;if((b|0)>=(n|0)){d=b;b=20;break}d=b;f=a[r+(b+x)>>0]|0;b=a[r+(w+g)>>0]|0}else{f=h;b=j}}else{f=h;b=j}l=e[o+((l&p)<<1)>>1]|0;if(l>>>0<=m>>>0){b=20;break}k=k+-1|0;if(!k){b=20;break}else{h=f;j=b}}if((b|0)==20){i=A;return (d>>>0>z>>>0?z:d)|0}return 0}function LZ(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;n=p+4|0;o=p;j=f+2|0;switch(e[j>>1]|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:case 7:case 2:break;default:{g=2;i=p;return g|0}}f=SZ(d,f,n,1,o)|0;l=c[o>>2]|0;if((f|0)!=0|(l|0)==0){c[g>>2]=0;g=f;i=p;return g|0}f=e[j>>1]|0;if((f|0)==1|(f|0)==7|(f|0)==2){c[g>>2]=l;g=0;i=p;return g|0}else if((f|0)!=6){f=c[n>>2]|0;m=JK(f)|0;if(!m){KK(l);g=7;i=p;return g|0}a:do switch(e[j>>1]|0){case 3:{if(!f)f=51;else{k=d+12|0;d=l;h=m;j=0;while(1){if(c[k>>2]&128)Fx(d);f=b[d>>1]|0;if((f&65535)>=256){f=50;break a}a[h>>0]=f;j=j+1|0;if(j>>>0>=(c[n>>2]|0)>>>0){f=51;break}else{d=d+2|0;h=h+1|0}}}break}case 17:{if(!f)f=51;else{k=d+12|0;d=l;h=m;j=0;while(1){if(c[k>>2]&128)Hx(d);l=d;f=c[l>>2]|0;l=c[l+4>>2]|0;if(!(l>>>0<0|(l|0)==0&f>>>0<256)){f=50;break a}a[h>>0]=f;j=j+1|0;if(j>>>0>=(c[n>>2]|0)>>>0){f=51;break}else{d=d+8|0;h=h+1|0}}}break}case 9:{if(!f)f=51;else{k=d+12|0;d=l;h=m;j=0;while(1){if(c[k>>2]&128)Gx(d);f=c[d>>2]|0;if(f>>>0>=256){f=50;break a}a[h>>0]=f;j=j+1|0;if(j>>>0>=(c[n>>2]|0)>>>0){f=51;break}else{d=d+4|0;h=h+1|0}}}break}case 4:{if(!f)f=51;else{k=d+12|0;d=l;h=m;j=0;while(1){if(c[k>>2]&128)Gx(d);f=c[d>>2]|0;if(f>>>0>=256){f=50;break a}a[h>>0]=f;j=j+1|0;if(j>>>0>=(c[n>>2]|0)>>>0){f=51;break}else{d=d+4|0;h=h+1|0}}}break}case 16:{if(!f)f=51;else{k=d+12|0;d=l;h=m;j=0;while(1){if(c[k>>2]&128)Hx(d);l=d;f=c[l>>2]|0;l=c[l+4>>2]|0;if(!(l>>>0<0|(l|0)==0&f>>>0<256)){f=50;break a}a[h>>0]=f;j=j+1|0;if(j>>>0>=(c[n>>2]|0)>>>0){f=51;break}else{d=d+8|0;h=h+1|0}}}break}case 8:{if(!f)f=51;else{k=d+12|0;d=l;h=m;j=0;while(1){if(c[k>>2]&128)Fx(d);f=b[d>>1]|0;if((f&65535)>=256){f=50;break a}a[h>>0]=f;j=j+1|0;if(j>>>0>=(c[n>>2]|0)>>>0){f=51;break}else{d=d+2|0;h=h+1|0}}}break}default:f=51}while(0);if((f|0)==50){KK(c[o>>2]|0);KK(m);g=4;i=p;return g|0}else if((f|0)==51){KK(c[o>>2]|0);c[g>>2]=m;g=0;i=p;return g|0}}else{f=c[n>>2]|0;b:do if(f){d=l;h=0;while(1){if((a[d>>0]|0)<=-1)break;h=h+1|0;if(h>>>0>=f>>>0)break b;else d=d+1|0}KK(l);g=4;i=p;return g|0}while(0);c[g>>2]=l;g=0;i=p;return g|0}return 0}function MZ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;g=l+8|0;j=a+12|0;e=c[j>>2]|0;b=b+16|0;do if(!(e&524288)){b=c[b>>2]|0;c[g>>2]=b;if(e&128){Gx(g);b=c[g>>2]|0;e=c[j>>2]|0}if(!(e&2048)){e=a+628|0;g=ce[c[a+640>>2]&255](c[e>>2]|0,b,0,0)|0;if(!((g|0)==(b|0)&(I|0)==0)){k=3;i=l;return k|0}if((Od[c[a+632>>2]&255](c[e>>2]|0,k,8)|0)==8)break;else e=3;i=l;return e|0}if(b>>>0>4294967287){k=3;i=l;return k|0}if((b+8|0)>>>0>(c[a+616>>2]|0)>>>0){k=3;i=l;return k|0}else{NK(k,(c[a+612>>2]|0)+b|0,8);break}}else{g=c[b+4>>2]|0;a=k;c[a>>2]=c[b>>2];c[a+4>>2]=g}while(0);if(c[j>>2]&128)Kx(k,2);e=c[k>>2]|0;if(!e)f=0.0;else f=+(e>>>0)/+((c[k+4>>2]|0)>>>0);h[d>>3]=f;k=0;i=l;return k|0}function NZ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;g=l+8|0;j=a+12|0;e=c[j>>2]|0;b=b+16|0;do if(!(e&524288)){b=c[b>>2]|0;c[g>>2]=b;if(e&128){Gx(g);b=c[g>>2]|0;e=c[j>>2]|0}if(!(e&2048)){e=a+628|0;g=ce[c[a+640>>2]&255](c[e>>2]|0,b,0,0)|0;if(!((g|0)==(b|0)&(I|0)==0)){k=3;i=l;return k|0}if((Od[c[a+632>>2]&255](c[e>>2]|0,k,8)|0)==8)break;else e=3;i=l;return e|0}if(b>>>0>4294967287){k=3;i=l;return k|0}if((b+8|0)>>>0>(c[a+616>>2]|0)>>>0){k=3;i=l;return k|0}else{NK(k,(c[a+612>>2]|0)+b|0,8);break}}else{g=c[b+4>>2]|0;a=k;c[a>>2]=c[b>>2];c[a+4>>2]=g}while(0);if(c[j>>2]&128)Kx(k,2);e=c[k>>2]|0;if(!e)f=0.0;else f=+(e|0)/+((c[k+4>>2]|0)>>>0);h[d>>3]=f;k=0;i=l;return k|0}function OZ(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+16|0;n=p+4|0;k=p;j=g+2|0;switch(e[j>>1]|0|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{n=2;i=p;return n|0}}g=SZ(f,g,n,4,k)|0;o=c[k>>2]|0;if((g|0)!=0|(o|0)==0){c[h>>2]=0;n=g;i=p;return n|0}g=e[j>>1]|0;if((g|0)==4){c[h>>2]=o;if(!(c[f+12>>2]&128)){n=0;i=p;return n|0}Kx(o,c[n>>2]|0);n=0;i=p;return n|0}else if((g|0)!=9){g=c[n>>2]|0;m=JK(g<<2)|0;if(!m){KK(o);n=7;i=p;return n|0}a:do switch(e[j>>1]|0|0){case 6:{if(!g)g=47;else{k=o;j=m;f=0;while(1){g=a[k>>0]|0;if(g<<24>>24<=-1){g=46;break a}c[j>>2]=g<<24>>24;f=f+1|0;if(f>>>0>=(c[n>>2]|0)>>>0){g=47;break}else{k=k+1|0;j=j+4|0}}}break}case 16:{if(!g)g=47;else{g=f+12|0;j=o;f=m;l=0;while(1){if(c[g>>2]&128)Hx(j);q=j;k=c[q>>2]|0;q=c[q+4>>2]|0;if(!(q>>>0<1|(q|0)==1&k>>>0<0)){g=46;break a}c[f>>2]=k;l=l+1|0;if(l>>>0>=(c[n>>2]|0)>>>0){g=47;break}else{j=j+8|0;f=f+4|0}}}break}case 1:{if(!g)g=47;else{g=o;j=m;k=0;while(1){c[j>>2]=d[g>>0];k=k+1|0;if(k>>>0>=(c[n>>2]|0)>>>0){g=47;break}else{g=g+1|0;j=j+4|0}}}break}case 17:{if(!g)g=47;else{k=f+12|0;j=o;f=m;l=0;while(1){if(c[k>>2]&128)Hx(j);q=j;g=c[q>>2]|0;q=c[q+4>>2]|0;if(!(q>>>0<1|(q|0)==1&g>>>0<0)){g=46;break a}c[f>>2]=g;l=l+1|0;if(l>>>0>=(c[n>>2]|0)>>>0){g=47;break}else{j=j+8|0;f=f+4|0}}}break}case 3:{if(!g)g=47;else{g=f+12|0;k=o;j=m;f=0;while(1){if(c[g>>2]&128)Fx(k);c[j>>2]=e[k>>1];f=f+1|0;if(f>>>0>=(c[n>>2]|0)>>>0){g=47;break}else{k=k+2|0;j=j+4|0}}}break}case 8:{if(!g)g=47;else{g=f+12|0;j=o;f=m;l=0;while(1){if(c[g>>2]&128)Fx(j);k=b[j>>1]|0;if(k<<16>>16<=-1){g=46;break a}c[f>>2]=k<<16>>16;l=l+1|0;if(l>>>0>=(c[n>>2]|0)>>>0){g=47;break}else{j=j+2|0;f=f+4|0}}}break}default:g=47}while(0);if((g|0)==46){KK(o);KK(m);q=4;i=p;return q|0}else if((g|0)==47){KK(o);c[h>>2]=m;q=0;i=p;return q|0}}else{l=c[n>>2]|0;b:do if(l){g=f+12|0;f=o;k=0;while(1){if(c[g>>2]&128)Gx(f);j=c[f>>2]>>31&4;if(j)break;k=k+1|0;if(k>>>0>=l>>>0)break b;else f=f+4|0}KK(o);q=j;i=p;return q|0}while(0);c[h>>2]=o;q=0;i=p;return q|0}return 0}function PZ(f,j,k){f=f|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;m=u+4|0;l=u;n=j+2|0;switch(e[n>>1]|0){case 12:case 11:case 10:case 5:case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{k=2;i=u;return k|0}}j=SZ(f,j,m,4,l)|0;t=c[l>>2]|0;if((j|0)!=0|(t|0)==0){c[k>>2]=0;k=j;i=u;return k|0}if((b[n>>1]|0)==11){if(c[f+12>>2]&128)Kx(t,c[m>>2]|0);c[k>>2]=t;k=0;i=u;return k|0}r=c[m>>2]|0;s=JK(r<<2)|0;if(!s){KK(t);k=7;i=u;return k|0}do switch(e[n>>1]|0){case 10:{if(r){m=f+12|0;f=t;p=s;q=0;while(1){j=c[m>>2]|0;if(j&128){Gx(f);j=c[m>>2]|0}l=c[f>>2]|0;n=f+4|0;if(j&128)Gx(n);j=c[n>>2]|0;if(!j)o=0.0;else o=+(l|0)/+(j>>>0);g[p>>2]=o;q=q+1|0;if(q>>>0>=r>>>0)break;else{f=f+8|0;p=p+4|0}}}break}case 1:{if(r){j=t;l=s;m=0;while(1){g[l>>2]=+(d[j>>0]|0);m=m+1|0;if(m>>>0>=r>>>0)break;else{j=j+1|0;l=l+4|0}}}break}case 6:{if(r){j=t;l=s;m=0;while(1){g[l>>2]=+(a[j>>0]|0);m=m+1|0;if(m>>>0>=r>>>0)break;else{j=j+1|0;l=l+4|0}}}break}case 8:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Fx(l);g[m>>2]=+(b[l>>1]|0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+2|0;m=m+4|0}}}break}case 17:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Hx(l);p=l;g[m>>2]=+((c[p>>2]|0)>>>0)+4294967296.0*+(c[p+4>>2]|0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+8|0;m=m+4|0}}}break}case 5:{if(r){m=f+12|0;f=t;p=s;q=0;while(1){j=c[m>>2]|0;if(j&128){Gx(f);j=c[m>>2]|0}n=f+4|0;l=c[f>>2]|0;if(j&128)Gx(n);j=c[n>>2]|0;if(!j)o=0.0;else o=+(l>>>0)/+(j>>>0);g[p>>2]=o;q=q+1|0;if(q>>>0>=r>>>0)break;else{f=f+8|0;p=p+4|0}}}break}case 4:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Gx(l);g[m>>2]=+((c[l>>2]|0)>>>0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+4|0;m=m+4|0}}}break}case 9:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Gx(l);g[m>>2]=+(c[l>>2]|0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+4|0;m=m+4|0}}}break}case 16:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Hx(l);p=l;g[m>>2]=+((c[p>>2]|0)>>>0)+4294967296.0*+((c[p+4>>2]|0)>>>0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+8|0;m=m+4|0}}}break}case 3:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Fx(l);g[m>>2]=+(e[l>>1]|0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+2|0;m=m+4|0}}}break}case 12:{if(c[f+12>>2]&128)Lx(t,r);if(r){j=t;l=s;m=0;while(1){g[l>>2]=+h[j>>3];m=m+1|0;if(m>>>0>=r>>>0)break;else{j=j+8|0;l=l+4|0}}}break}default:{}}while(0);KK(t);c[k>>2]=s;k=0;i=u;return k|0}function QZ(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;j=q+4|0;l=q;k=g+2|0;switch(e[k>>1]|0|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{h=2;i=q;return h|0}}g=SZ(f,g,j,8,l)|0;p=c[l>>2]|0;if((g|0)!=0|(p|0)==0){c[h>>2]=0;h=g;i=q;return h|0}g=e[k>>1]|0;if((g|0)==16){c[h>>2]=p;if(!(c[f+12>>2]&128)){h=0;i=q;return h|0}Lx(p,c[j>>2]|0);h=0;i=q;return h|0}else if((g|0)!=17){n=c[j>>2]|0;o=JK(n<<3)|0;if(!o){KK(p);h=7;i=q;return h|0}a:do switch(e[k>>1]|0|0){case 9:{if(!n)j=46;else{l=f+12|0;k=p;m=o;f=0;while(1){if(c[l>>2]&128)Gx(k);j=c[k>>2]|0;g=j>>31&4;if(g){j=45;break a}g=m;c[g>>2]=j;c[g+4>>2]=((j|0)<0)<<31>>31;f=f+1|0;if(f>>>0>=n>>>0){j=46;break}else{k=k+4|0;m=m+8|0}}}break}case 4:{if(!n)j=46;else{g=f+12|0;l=p;j=o;k=0;while(1){if(c[g>>2]&128)Gx(l);m=j;c[m>>2]=c[l>>2];c[m+4>>2]=0;k=k+1|0;if(k>>>0>=n>>>0){j=46;break}else{l=l+4|0;j=j+8|0}}}break}case 6:{if(!n)j=46;else{l=p;j=o;k=0;while(1){g=a[l>>0]|0;if(g<<24>>24<=-1){g=4;j=45;break a}f=g<<24>>24;m=j;c[m>>2]=f;c[m+4>>2]=((f|0)<0)<<31>>31;k=k+1|0;if(k>>>0>=n>>>0){j=46;break}else{l=l+1|0;j=j+8|0}}}break}case 1:{if(!n)j=46;else{g=p;l=o;j=0;while(1){m=l;c[m>>2]=d[g>>0];c[m+4>>2]=0;j=j+1|0;if(j>>>0>=n>>>0){j=46;break}else{g=g+1|0;l=l+8|0}}}break}case 8:{if(!n)j=46;else{g=f+12|0;j=p;k=o;m=0;while(1){if(c[g>>2]&128)Fx(j);l=b[j>>1]|0;if(l<<16>>16<=-1){g=4;j=45;break a}l=l<<16>>16;f=k;c[f>>2]=l;c[f+4>>2]=((l|0)<0)<<31>>31;m=m+1|0;if(m>>>0>=n>>>0){j=46;break}else{j=j+2|0;k=k+8|0}}}break}case 3:{if(!n)j=46;else{g=f+12|0;l=p;j=o;k=0;while(1){if(c[g>>2]&128)Fx(l);m=j;c[m>>2]=e[l>>1];c[m+4>>2]=0;k=k+1|0;if(k>>>0>=n>>>0){j=46;break}else{l=l+2|0;j=j+8|0}}}break}default:j=46}while(0);if((j|0)==45){KK(p);KK(o);h=g;i=q;return h|0}else if((j|0)==46){KK(p);c[h>>2]=o;h=0;i=q;return h|0}}else{l=c[j>>2]|0;b:do if(l){g=f+12|0;j=p;k=0;while(1){if(c[g>>2]&128)Hx(j);n=j;m=c[n+4>>2]|0;if(!((m|0)>-1|(m|0)==-1&(c[n>>2]|0)>>>0>4294967295))break;k=k+1|0;if(k>>>0>=l>>>0)break b;else j=j+8|0}KK(p);h=4;i=q;return h|0}while(0);c[h>>2]=p;h=0;i=q;return h|0}return 0}function RZ(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;g=m+4|0;f=m;h=b+2|0;j=e[h>>1]|0;if(!((j|0)==18|(j|0)==13|(j|0)==16|(j|0)==4)){a=2;i=m;return a|0}b=SZ(a,b,g,8,f)|0;l=c[f>>2]|0;if((b|0)!=0|(l|0)==0){c[d>>2]=0;a=b;i=m;return a|0}j=e[h>>1]|0;if((j|0)==18|(j|0)==16){c[d>>2]=l;if(!(c[a+12>>2]&128)){a=0;i=m;return a|0}Lx(l,c[g>>2]|0);a=0;i=m;return a|0}j=c[g>>2]|0;k=JK(j<<3)|0;if(!k){KK(l);a=7;i=m;return a|0}g=e[h>>1]|0;if((g|0)==13|(g|0)==4?(j|0)!=0:0){b=a+12|0;f=l;g=k;h=0;while(1){if(c[b>>2]&128)Gx(f);a=g;c[a>>2]=c[f>>2];c[a+4>>2]=0;h=h+1|0;if(h>>>0>=j>>>0)break;else{f=f+4|0;g=g+8|0}}}KK(l);c[d>>2]=k;a=0;i=m;return a|0}function SZ(a,b,d,f,g){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;l=p+8|0;m=p;j=lw(e[b+2>>1]|0)|0;h=b+8|0;k=c[h>>2]|0;h=c[h+4>>2]|0;if((k|0)==0&(h|0)==0|(j|0)==0){c[g>>2]=0;g=0;i=p;return g|0}o=2147483647/(j|0)|0;n=((o|0)<0)<<31>>31;if(n>>>0>>0|(n|0)==(h|0)&o>>>0>>0){g=6;i=p;return g|0}if(0>>0|(0==(h|0)?(2147483647/(f>>>0)|0)>>>0>>0:0)){g=6;i=p;return g|0}c[d>>2]=k;o=ea(k,j)|0;if((o|0)<=0)Sa(115448,114104,790,115472);n=Av(a,k,j,115496)|0;if(!n){g=7;i=p;return g|0}k=a+12|0;j=c[k>>2]|0;do if(!(j&524288)){h=b+16|0;if(o>>>0<5){NK(n,h,o);break}d=c[h>>2]|0;c[l>>2]=d;if(j&128){Gx(l);d=c[l>>2]|0}if(!(c[k>>2]&2048)){h=a+628|0;l=ce[c[a+640>>2]&255](c[h>>2]|0,d,0,0)|0;if((l|0)==(d|0)&(I|0)==0?(Od[c[a+632>>2]&255](c[h>>2]|0,n,o)|0)==(o|0):0)break}else{l=d+o|0;if(!(l>>>0>>0|l>>>0>>0)?l>>>0<=(c[a+616>>2]|0)>>>0:0){NK(n,(c[a+612>>2]|0)+d|0,o);break}}KK(n);g=3;i=p;return g|0}else{if(o>>>0<9){NK(n,b+16|0,o);break}d=b+16|0;h=c[d>>2]|0;d=c[d+4>>2]|0;l=m;c[l>>2]=h;c[l+4>>2]=d;if(!(j&128))f=h;else{Hx(m);d=m;f=c[d>>2]|0;d=c[d+4>>2]|0}if(!(c[k>>2]&2048)){h=a+628|0;l=ce[c[a+640>>2]&255](c[h>>2]|0,f,d,0)|0;if((l|0)==(f|0)&(I|0)==(d|0)?(Od[c[a+632>>2]&255](c[h>>2]|0,n,o)|0)==(o|0):0)break}else{l=f+o|0;if(!((f|0)!=(f|0)|0!=(d|0)|l>>>0>>0|l>>>0>>0)?l>>>0<=(c[a+616>>2]|0)>>>0:0){NK(n,(c[a+612>>2]|0)+f|0,o);break}}KK(n);g=3;i=p;return g|0}while(0);c[g>>2]=n;g=0;i=p;return g|0}function TZ(a,d,e,f,g,h,j,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;r=t;s=t+4|0;m=c[d>>2]|0;if(m){n=0;while(1){q=b[e+(n*24|0)>>1]|0;if(q<<16>>16==f<<16>>16){p=4;break}o=n+1|0;if((q&65535)>(f&65535)){l=n;break}if(o>>>0>>0)n=o;else{l=o;break}}if((p|0)==4)Sa(119120,118448,2301,119144);if(l>>>0>>0)do{p=e+(m*24|0)|0;m=m+-1|0;n=e+(m*24|0)|0;c[p+0>>2]=c[n+0>>2];c[p+4>>2]=c[n+4>>2];c[p+8>>2]=c[n+8>>2];c[p+12>>2]=c[n+12>>2];c[p+16>>2]=c[n+16>>2];c[p+20>>2]=c[n+20>>2]}while(m>>>0>l>>>0)}else l=0;b[e+(l*24|0)>>1]=f;b[e+(l*24|0)+2>>1]=g;q=e+(l*24|0)+8|0;c[q>>2]=h;c[q+4>>2]=0;q=e+(l*24|0)+16|0;h=q;c[h>>2]=0;c[h+4>>2]=0;h=a+12|0;l=c[h>>2]&524288;do if(((l>>>17)+4|0)>>>0>>0){n=(l|0)==0;l=a+464|0;g=l;p=c[g>>2]|0;g=c[g+4>>2]|0;m=Iga(p|0,g|0,j|0,0)|0;m=n?m:m;n=n?0:I;if(n>>>0>>0|(n|0)==(g|0)&m>>>0

>>0|(n>>>0<0|(n|0)==0&m>>>0>>0)){Dw(c[a+628>>2]|0,119144,118776,r);s=0;i=t;return s|0}o=a+628|0;f=ce[c[a+640>>2]&255](c[o>>2]|0,p,g,0)|0;if(!((f|0)==(p|0)&(I|0)==(g|0))){Dw(c[o>>2]|0,119144,119176,r);s=0;i=t;return s|0}if((j|0)<=-1)Sa(119208,118448,2335,119144);if((Od[c[a+636>>2]&255](c[o>>2]|0,k,j)|0)!=(j|0)){Dw(c[o>>2]|0,119144,119176,r);s=0;i=t;return s|0}r=Iga(m&1|0,0,m|0,n|0)|0;c[l>>2]=r;c[l+4>>2]=I;l=c[h>>2]|0;if(l&524288){s=q;c[s>>2]=p;c[s+4>>2]=g;if(!(l&128))break;Hx(q);break}c[s>>2]=p;if(l&128)Gx(s);NK(q,s,4)}else NK(q,k,j);while(0);c[d>>2]=(c[d>>2]|0)+1;s=1;i=t;return s|0}function UZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var g=0,h=0,j=0;j=i;i=i+16|0;h=j;if(!d){c[b>>2]=(c[b>>2]|0)+1;a=1;i=j;return a|0}if(!(f>=0.0))Sa(120024,118448,2084,120040);do if(!(f<=0.0)){g=~~f>>>0;if(+(g>>>0)==f){c[h>>2]=g;c[h+4>>2]=1;break}if(f<1.0){c[h>>2]=~~(f*4294967295.0)>>>0;c[h+4>>2]=-1;break}else{c[h>>2]=-1;c[h+4>>2]=~~(4294967295.0/f)>>>0;break}}else{c[h>>2]=0;c[h+4>>2]=1}while(0);if(c[a+12>>2]&128){Gx(h);Gx(h+4|0)}a=TZ(a,b,d,e,5,1,8,h)|0;i=j;return a|0}function VZ(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+16|0;o=p;if(!d){c[b>>2]=(c[b>>2]|0)+1;o=1;i=p;return o|0}n=a+12|0;h=c[n>>2]|0;if(h&524288){if(f>>>0>=536870912)Sa(119232,118448,2047,119496);if(h&128)Lx(g,f);o=TZ(a,b,d,e,16,f,f<<3,g)|0;i=p;return o|0}l=f<<2;m=JK(l)|0;if(!m){Dw(c[a+628>>2]|0,119944,118760,o);o=0;i=p;return o|0}do if(f){j=0;k=m;while(1){q=g;h=c[q>>2]|0;q=c[q+4>>2]|0;if(q>>>0>0|(q|0)==0&h>>>0>4294967295){h=13;break}c[k>>2]=h;j=j+1|0;if(j>>>0>=f>>>0){h=15;break}else{g=g+8|0;k=k+4|0}}if((h|0)==13){Dw(c[a+628>>2]|0,119944,118984,o);KK(m);q=0;i=p;return q|0}else if((h|0)==15){if(f>>>0<1073741824)break;Sa(119056,118448,2e3,119576)}}while(0);if(c[n>>2]&128)Kx(m,f);q=TZ(a,b,d,e,4,f,l,m)|0;KK(m);i=p;return q|0}function WZ(d,f,j,k,l,m){d=d|0;f=f|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0;q=i;i=i+16|0;n=l<<3;p=JK(n)|0;if(!p){Dw(c[d+628>>2]|0,119872,118760,q);d=0;i=q;return d|0}o=e[d+86>>1]|0;do if((o|0)==3){if((e[d+84>>1]|0)>=33){if(!j){c[f>>2]=(c[f>>2]|0)+1;n=1;break}if(l>>>0>=536870912)Sa(119232,118448,2264,119328);if(c[d+12>>2]&128)Nx(m,l);n=TZ(d,f,j,k,12,l,n,m)|0;break}if(l){n=0;do{g[p+(n<<2)>>2]=+h[m+(n<<3)>>3];n=n+1|0}while((n|0)!=(l|0))}if(!j){c[f>>2]=(c[f>>2]|0)+1;n=1;break}if(l>>>0>=1073741824)Sa(119056,118448,2239,119368);if(c[d+12>>2]&128)Mx(p,l);n=TZ(d,f,j,k,11,l,l<<2,p)|0}else if((o|0)==2){n=b[d+84>>1]|0;if((n&65535)<9){if(l){n=0;do{a[p+n>>0]=~~+h[m+(n<<3)>>3];n=n+1|0}while((n|0)!=(l|0))}if(!j){c[f>>2]=(c[f>>2]|0)+1;n=1;break}else{n=TZ(d,f,j,k,6,l,l,p)|0;break}}o=(l|0)==0;if((n&65535)<17){if(!o){n=0;do{b[p+(n<<1)>>1]=~~+h[m+(n<<3)>>3];n=n+1|0}while((n|0)!=(l|0))}if(!j){c[f>>2]=(c[f>>2]|0)+1;n=1;break}if((l|0)<=-1)Sa(119616,118448,1979,119640);if(c[d+12>>2]&128)Ix(p,l);n=TZ(d,f,j,k,8,l,l<<1,p)|0;break}else{if(!o){n=0;do{c[p+(n<<2)>>2]=~~+h[m+(n<<3)>>3];n=n+1|0}while((n|0)!=(l|0))}if(!j){c[f>>2]=(c[f>>2]|0)+1;n=1;break}if(l>>>0>=1073741824)Sa(119056,118448,2023,119536);if(c[d+12>>2]&128)Kx(p,l);n=TZ(d,f,j,k,9,l,l<<2,p)|0;break}}else if((o|0)==1){n=b[d+84>>1]|0;if((n&65535)<9){if(l){n=0;do{a[p+n>>0]=~~+h[m+(n<<3)>>3];n=n+1|0}while((n|0)!=(l|0))}if(!j){c[f>>2]=(c[f>>2]|0)+1;n=1;break}else{n=TZ(d,f,j,k,1,l,l,p)|0;break}}o=(l|0)==0;if((n&65535)<17){if(!o){n=0;do{b[p+(n<<1)>>1]=~~+h[m+(n<<3)>>3];n=n+1|0}while((n|0)!=(l|0))}if(!j){c[f>>2]=(c[f>>2]|0)+1;n=1;break}if((l|0)<=-1)Sa(119616,118448,1956,119784);if(c[d+12>>2]&128)Ix(p,l);n=TZ(d,f,j,k,3,l,l<<1,p)|0;break}else{if(!o){n=0;do{c[p+(n<<2)>>2]=~~+h[m+(n<<3)>>3]>>>0;n=n+1|0}while((n|0)!=(l|0))}if(!j){c[f>>2]=(c[f>>2]|0)+1;n=1;break}if(l>>>0>=1073741824)Sa(119056,118448,2e3,119576);if(c[d+12>>2]&128)Kx(p,l);n=TZ(d,f,j,k,4,l,l<<2,p)|0;break}}else n=0;while(0);KK(p);d=n;i=q;return d|0}function XZ(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if(!d){c[b>>2]=(c[b>>2]|0)+1;a=1;i=q;return a|0}n=f<<1;o=f<<3;p=JK(o)|0;if(!p){Dw(c[a+628>>2]|0,119824,118760,q);a=0;i=q;return a|0}if(f){l=p;m=0;while(1){j=+g[h>>2];do if(!(j<=0.0)){k=~~j>>>0;if(j==+(k>>>0)){c[l>>2]=k;c[l+4>>2]=1;break}if(j<1.0){c[l>>2]=~~(j*4294967296.0)>>>0;c[l+4>>2]=-1;break}else{c[l>>2]=-1;c[l+4>>2]=~~(4294967296.0/j)>>>0;break}}else{c[l>>2]=0;c[l+4>>2]=1}while(0);m=m+1|0;if((m|0)==(f|0))break;else{h=h+4|0;l=l+8|0}}}if(c[a+12>>2]&128)Kx(p,n);a=TZ(a,b,d,e,5,f,o,p)|0;KK(p);i=q;return a|0}function YZ(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0;g=i;f=c[a+576>>2]|0;if(!f)Sa(123280,121616,1198,123968);if((d|0)==293|(d|0)==292){a=c[f+28>>2]|0;f=c[e>>2]|0;d=c[f>>2]|0;c[e>>2]=f+4;c[d>>2]=a;d=1;i=g;return d|0}else if((d|0)==328){a=c[f+20>>2]|0;f=c[e>>2]|0;d=c[f>>2]|0;c[e>>2]=f+4;c[d>>2]=a;d=1;i=g;return d|0}else if((d|0)==65540){a=c[f+60>>2]|0;f=c[e>>2]|0;d=c[f>>2]|0;c[e>>2]=f+4;c[d>>2]=a;d=1;i=g;return d|0}else if((d|0)==65536){a=c[f+4>>2]|0;f=c[e>>2]|0;d=c[f>>2]|0;c[e>>2]=f+4;c[d>>2]=a;d=1;i=g;return d|0}else if((d|0)==327){a=b[f+16>>1]|0;f=c[e>>2]|0;d=c[f>>2]|0;c[e>>2]=f+4;b[d>>1]=a;d=1;i=g;return d|0}else if((d|0)==326){a=c[f+24>>2]|0;f=c[e>>2]|0;d=c[f>>2]|0;c[e>>2]=f+4;c[d>>2]=a;d=1;i=g;return d|0}else{d=Od[c[f+32>>2]&255](a,d,e)|0;i=g;return d|0}return 0}function ZZ(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;f=a+576|0;g=c[f>>2]|0;if(!g)Sa(123280,121616,1151,123928);h=c[g+36>>2]|0;if(!h)Sa(123944,121616,1152,123928);if((d|0)==327){f=c[e>>2]|0;h=c[f>>2]|0;c[e>>2]=f+4;b[g+16>>1]=h}else if((d|0)==328){f=c[e>>2]|0;h=c[f>>2]|0;c[e>>2]=f+4;c[g+20>>2]=h}else if((d|0)==65536){d=c[e>>2]|0;a=c[d>>2]|0;c[e>>2]=d+4;c[g+4>>2]=a;a=1;i=j;return a|0}else if((d|0)==65540){d=c[e>>2]|0;a=c[d>>2]|0;c[e>>2]=d+4;c[(c[f>>2]|0)+60>>2]=a;a=1;i=j;return a|0}else if((d|0)==292){if((b[a+88>>1]|0)==3){f=c[e>>2]|0;h=c[f>>2]|0;c[e>>2]=f+4;c[g+28>>2]=h}}else if((d|0)==326){f=c[e>>2]|0;h=c[f>>2]|0;c[e>>2]=f+4;c[g+24>>2]=h}else if((d|0)==293){if((b[a+88>>1]|0)==4){f=c[e>>2]|0;h=c[f>>2]|0;c[e>>2]=f+4;c[g+28>>2]=h}}else{a=Od[h&255](a,d,e)|0;i=j;return a|0}f=nw(a,d)|0;if(!f){a=0;i=j;return a|0}h=b[f+24>>1]|0;d=a+(((h&65535)>>>5&65535)<<2)+40|0;c[d>>2]=1<<(h&31)|c[d>>2];a=a+12|0;c[a>>2]=c[a>>2]|8;a=1;i=j;return a|0}function _Z(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;l=c[a+576>>2]|0;if(!l)Sa(123280,121616,1231,123624);k=a+48|0;g=c[k>>2]|0;if(g&512){if((b[a+88>>1]|0)==4){$b(123648,18,1,d|0)|0;if(c[l+28>>2]&2){c[m>>2]=123640;_c(d|0,123672,m|0)|0}}else{$b(123696,18,1,d|0)|0;j=l+28|0;g=c[j>>2]|0;if(!(g&1))h=123640;else{c[m>>2]=123640;_c(d|0,123720,m|0)|0;g=c[j>>2]|0;h=123736}if(g&4){c[m>>2]=h;_c(d|0,123744,m|0)|0;g=c[j>>2]|0;h=123736}if(g&2){c[m>>2]=h;_c(d|0,123672,m|0)|0}}g=c[l+28>>2]|0;c[m>>2]=g;c[m+4>>2]=g;_c(d|0,123760,m|0)|0;g=c[k>>2]|0}if(g&8){$b(123776,11,1,d|0)|0;g=l+16|0;h=e[g>>1]|0;if((h|0)==1)$b(123800,21,1,d|0)|0;else if((h|0)==2)$b(123824,19,1,d|0)|0;else if(!h)$b(123792,6,1,d|0)|0;g=e[g>>1]|0;c[m>>2]=g;c[m+4>>2]=g;_c(d|0,123848,m|0)|0;g=c[k>>2]|0}if(g&4){c[m>>2]=c[l+24>>2];_c(d|0,123864,m|0)|0;g=c[k>>2]|0}if(g&16){c[m>>2]=c[l+20>>2];_c(d|0,123888,m|0)|0}g=c[l+40>>2]|0;if(!g){i=n;return}$d[g&255](a,d,f);i=n;return}function $Z(a){a=a|0;return 1}function a_(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;q=r;l=a+576|0;m=c[l>>2]|0;if((b[a+84>>1]|0)!=1){Dw(c[a+628>>2]|0,123416,123432,q);q=0;i=r;return q|0}if(!(c[a+12>>2]&1024)){p=Ex(a)|0;d=a+56|0}else{p=Ux(a)|0;d=a+68|0}e=c[d>>2]|0;c[m+8>>2]=p;c[m+12>>2]=e;j=m+28|0;if(!(c[j>>2]&1))n=(b[a+88>>1]|0)==4;else n=1;f=m+64|0;c[f>>2]=0;if(e>>>0<4294967264)d=e+31&-32;else d=0;if(n){if((d&2147483616|0)==(d|0)){o=d<<1;h=12}}else{o=d;h=12}if(((h|0)==12?(o|0)!=0:0)?(g=o<<1,k=(o&2147483647|0)==(o|0),!((g|0)==0|k^1)):0){d=Av(a,k?g:0,4,123536)|0;c[f>>2]=d;if(!d){q=0;i=r;return q|0}Cga(d|0,0,(k?o<<3:0)|0)|0;d=c[f>>2]|0;c[m+72>>2]=d;if(n)c[m+68>>2]=d+(o<<2);else c[m+68>>2]=0;if((b[a+88>>1]|0)==3?(c[j>>2]&1|0)!=0:0){c[a+532>>2]=148;c[a+540>>2]=148;c[a+548>>2]=148}d=c[l>>2]|0;if(!n){c[d+80>>2]=0;q=1;i=r;return q|0}p=JK(p)|0;c[d+80>>2]=p;if(p){q=1;i=r;return q|0}Dw(c[a+628>>2]|0,123416,123568,q);q=0;i=r;return q|0}p=c[a+628>>2]|0;a=c[a>>2]|0;c[q>>2]=e;Dw(p,a,123488,q);q=0;i=r;return q|0}function b_(a,d){a=a|0;d=d|0;var e=0,f=0;f=i;e=c[a+576>>2]|0;if(!e)Sa(123352,121616,152,123400);c[e+52>>2]=0;c[e+48>>2]=0;c[e+56>>2]=0;c[e+44>>2]=Ox((b[a+94>>1]|0)!=2&1)|0;d=c[e+68>>2]|0;if(!d){a=e+92|0;c[a>>2]=0;i=f;return 1}c[d>>2]=c[e+12>>2];c[d+4>>2]=0;a=e+92|0;c[a>>2]=0;i=f;return 1}function c_(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;I=i;i=i+32|0;x=I;l=c[a+576>>2]|0;C=c[l+12>>2]|0;q=c[l+44>>2]|0;r=l+8|0;if((e|0)%(c[r>>2]|0)|0){Dw(c[a+628>>2]|0,123384,121912,x);H=-1;i=I;return H|0}D=l+48|0;j=c[D>>2]|0;E=l+52|0;h=c[E>>2]|0;F=l+56|0;g=c[F>>2]|0;G=a+604|0;f=c[G>>2]|0;H=a+608|0;k=c[H>>2]|0;p=f+k|0;B=c[l+72>>2]|0;a:do if((e|0)>0){t=l+92|0;u=a+628|0;v=a+12|0;w=a+492|0;s=a+452|0;A=l+60|0;y=B;b:while(1){c:do if(!g){k=h;while(1){do if((k|0)<11){if(f>>>0>=p>>>0)if(!k){g=0;z=67;break b}else{h=11;break}l=f+1|0;j=(d[q+(d[f>>0]|0)>>0]|0)<>>0

>>0){j=(d[q+(d[l>>0]|0)>>0]|0)<>>1;k=h+-1|0}}while(0);while(1){do if((h|0)<8)if(f>>>0>=p>>>0)if(!h){z=67;break b}else{h=8;break}else{j=(d[q+(d[f>>0]|0)>>0]|0)<>>8;h=h+-8|0}while(1){h=h+-1|0;g=j>>>1;if(!(j&1))j=g;else{j=0;o=B;break}}d:while(1){m=0;while(1){do if((h|0)<12){if(f>>>0>=p>>>0)if(!h){e=g;g=m;h=o;z=44;break b}else{h=12;break}k=f+1|0;g=(d[q+(d[f>>0]|0)>>0]|0)<>>0

>>0){g=(d[q+(d[k>>0]|0)>>0]|0)<>0]|0;a=h-n|0;g=g>>>n;h=d[125088+(l<<3)>>0]|0;if((h|0)==7)break;else if((h|0)==12){k=g;g=1;l=m;h=o;z=55;break d}else if(!((h|0)==11|(h|0)==9)){z=31;break d}n=c[125092+(l<<3)>>2]|0;h=a;m=n+m|0;j=n+j|0}k=c[125092+(l<<3)>>2]|0;n=k+m|0;h=o+4|0;c[o>>2]=n;j=k+j|0;if((j|0)<(C|0))m=0;else{m=g;g=0;break}while(1){do if((a|0)<13){if(f>>>0>=p>>>0)if(!a){e=g;g=m;z=44;break b}else{l=13;break}k=f+1|0;g=(d[q+(d[f>>0]|0)>>0]|0)<>>0

>>0){g=(d[q+(d[k>>0]|0)>>0]|0)<>0]|0;a=l-J|0;g=g>>>J;l=d[157856+(k<<3)>>0]|0;if((l|0)==8)break;else if((l|0)==12){k=g;g=1;l=m;z=55;break d}else if(!((l|0)==11|(l|0)==10)){z=41;break d}J=c[157860+(k<<3)>>2]|0;m=J+m|0;j=J+j|0}J=c[157860+(k<<3)>>2]|0;l=J+m|0;k=o+8|0;c[h>>2]=l;j=J+j|0;if((j|0)>=(C|0)){m=g;g=0;h=k;break}if(l){h=a;o=k;continue}h=a;o=(n|0)==0?o:k}if((z|0)==31){k=c[u>>2]|0;h=(c[v>>2]&1024|0)!=0;l=c[(h?w:s)>>2]|0;c[x>>2]=c[t>>2];c[x+4>>2]=h?122040:122048;c[x+8>>2]=l;c[x+12>>2]=j;Dw(k,123384,122104,x);k=g;g=0;l=m;h=o;z=55}else if((z|0)==41){k=c[u>>2]|0;J=(c[v>>2]&1024|0)!=0;l=c[(J?w:s)>>2]|0;c[x>>2]=c[t>>2];c[x+4>>2]=J?122040:122048;c[x+8>>2]=l;c[x+12>>2]=j;Dw(k,123384,122104,x);k=g;g=0;l=m;z=55}if((z|0)==55){z=0;if(!l)m=k;else{c[h>>2]=l;m=k;h=h+4|0}}do if((j|0)!=(C|0)){n=c[t>>2]|0;l=c[u>>2]|0;o=(c[v>>2]&1024|0)!=0;J=c[(o?w:s)>>2]|0;c[x>>2]=j>>>0>>0?122e3:122016;c[x+4>>2]=n;c[x+8>>2]=o?122040:122048;c[x+12>>2]=J;c[x+16>>2]=j;c[x+20>>2]=C;Zx(l,123384,121952,x);l=(j|0)>(C|0);if(l&h>>>0>B>>>0)do{h=h+-4|0;j=j-(c[h>>2]|0)|0;l=(j|0)>(C|0)}while(l&h>>>0>B>>>0);if((j|0)>=(C|0)){if(!l)break;c[h>>2]=C;c[h+4>>2]=0;h=h+8|0;break}if(h-y&4){c[h>>2]=0;h=h+4|0}c[h>>2]=C-((j|0)<0?0:j);h=h+4|0}while(0);de[c[A>>2]&63](b,B,h,C);j=c[r>>2]|0;e=e-j|0;c[t>>2]=(c[t>>2]|0)+1;if((e|0)<=0){z=71;break}else{b=b+j|0;j=m;h=a}}do if((z|0)==44){J=c[u>>2]|0;r=(c[v>>2]&1024|0)!=0;z=c[(r?w:s)>>2]|0;c[x>>2]=c[t>>2];c[x+4>>2]=r?122040:122048;c[x+8>>2]=z;c[x+12>>2]=j;Zx(J,123384,122056,x);if(g){c[h>>2]=g;h=h+4|0}if((j|0)==(C|0)){j=e;g=0}else{t=c[t>>2]|0;g=c[u>>2]|0;z=(c[v>>2]&1024|0)!=0;J=c[(z?w:s)>>2]|0;c[x>>2]=j>>>0>>0?122e3:122016;c[x+4>>2]=t;c[x+8>>2]=z?122040:122048;c[x+12>>2]=J;c[x+16>>2]=j;c[x+20>>2]=C;Zx(g,123384,121952,x);g=(j|0)>(C|0);if(g&h>>>0>B>>>0)do{h=h+-4|0;j=j-(c[h>>2]|0)|0;g=(j|0)>(C|0)}while(g&h>>>0>B>>>0);if((j|0)>=(C|0)){if(!g){j=e;g=0;break}c[h>>2]=C;c[h+4>>2]=0;j=e;g=0;h=h+8|0;break}if(h-y&4){c[h>>2]=0;h=h+4|0}c[h>>2]=C-((j|0)<0?0:j);j=e;g=0;h=h+4|0}}else if((z|0)==67)if(C){y=c[t>>2]|0;h=c[u>>2]|0;z=(c[v>>2]&1024|0)!=0;J=c[(z?w:s)>>2]|0;c[x>>2]=122e3;c[x+4>>2]=y;c[x+8>>2]=z?122040:122048;c[x+12>>2]=J;c[x+16>>2]=0;c[x+20>>2]=C;Zx(h,123384,121952,x);h=B+4|0;c[B>>2]=C;if((C|0)<=0){c[h>>2]=0;h=B+8|0}}else h=B;else if((z|0)==71){l=c[G>>2]|0;k=c[H>>2]|0;j=m;h=a;break a}while(0);de[c[A>>2]&63](b,B,h,C);c[E>>2]=0;c[D>>2]=j;c[F>>2]=g;c[H>>2]=(c[G>>2]|0)-f+(c[H>>2]|0);c[G>>2]=f;J=-1;i=I;return J|0}else l=f;while(0);c[E>>2]=h;c[D>>2]=j;c[F>>2]=g;c[H>>2]=l-f+k;c[G>>2]=f;J=1;i=I;return J|0}function d_(a,d){a=a|0;d=d|0;var e=0.0,f=0,h=0;h=i;f=c[a+576>>2]|0;if(!f)Sa(123352,121616,722,123368);c[f+52>>2]=8;c[f+48>>2]=0;c[f+76>>2]=0;d=c[f+80>>2]|0;if(d)MK(d,0,c[f+8>>2]|0);if(!(c[f+28>>2]&1)){c[f+88>>2]=0;c[f+84>>2]=0;a=f+92|0;c[a>>2]=0;i=h;return 1}e=+g[a+120>>2];if((b[a+124>>1]|0)==3)e=e*2.5399999618530273;a=e>150.0?4:2;c[f+88>>2]=a;c[f+84>>2]=a+-1;a=f+92|0;c[a>>2]=0;i=h;return 1}function e_(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;g=i;d=c[b+576>>2]|0;e=d+52|0;if((c[e>>2]|0)==8){i=g;return 1}f=b+608|0;if((c[f>>2]|0)>=(c[b+592>>2]|0))cy(b)|0;d=d+48|0;h=c[d>>2]&255;j=b+604|0;b=c[j>>2]|0;c[j>>2]=b+1;a[b>>0]=h;c[f>>2]=(c[f>>2]|0)+1;c[d>>2]=0;c[e>>2]=8;i=g;return 1}function f_(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+16|0;q=b+576|0;f=c[q>>2]|0;x=f+8|0;if((e|0)%(c[x>>2]|0)|0){Dw(c[b+628>>2]|0,123304,122240,B);b=0;i=B;return b|0}if((e|0)<=0){b=1;i=B;return b|0}y=f+4|0;z=b+608|0;A=b+592|0;r=b+604|0;s=f+28|0;t=f+12|0;u=f+76|0;v=f+84|0;w=f+88|0;p=f+80|0;a:while(1){if(!(c[y>>2]&2)){l=c[q>>2]|0;n=l+52|0;f=c[n>>2]|0;o=l+48|0;j=c[o>>2]|0;m=l+28|0;do if(!((c[m>>2]&4|0)==0|(f|0)==4)){g=(f|0)<4?4:-4;h=g+f|0;if(f>>>0>=h>>>0){if(h>>>0>=9){d=14;break a}f=0-g|0;g=j;break}k=c[z>>2]|0;g=j&255;while(1){h=h-f|0;if((k|0)>=(c[A>>2]|0))cy(b)|0;k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=g;k=(c[z>>2]|0)+1|0;c[z>>2]=k;if(h>>>0<=8)break;else{f=8;g=0}}f=8-h|0;if((h|0)==8){if((k|0)>=(c[A>>2]|0))cy(b)|0;f=c[r>>2]|0;c[r>>2]=f+1;a[f>>0]=0;c[z>>2]=(c[z>>2]|0)+1;f=8;g=0}else g=0}else g=j;while(0);if(!(c[m>>2]&1)){j=1;h=12}else{j=(c[l+76>>2]|0)==0|2;h=13}if(h>>>0<=f>>>0){d=26;break}k=c[z>>2]|0;while(1){h=h-f|0;if((k|0)>=(c[A>>2]|0))cy(b)|0;k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=j>>>h|g;k=(c[z>>2]|0)+1|0;c[z>>2]=k;if(h>>>0<=8)break;else{f=8;g=0}}g=8-h|0;f=(c[122184+(h<<2)>>2]&j)<=(c[A>>2]|0))cy(b)|0;g=c[r>>2]|0;c[r>>2]=g+1;a[g>>0]=f;c[z>>2]=(c[z>>2]|0)+1;g=8;f=0}c[o>>2]=f;c[n>>2]=g}do if(c[s>>2]&1){if(!(c[u>>2]|0)){j2(b,d,c[t>>2]|0);c[u>>2]=1;f=c[v>>2]|0}else{i_(b,d,c[p>>2]|0,c[t>>2]|0);f=(c[v>>2]|0)+-1|0;c[v>>2]=f}if(!f){c[u>>2]=0;c[v>>2]=(c[w>>2]|0)+-1;break}else{NK(c[p>>2]|0,d,c[x>>2]|0);break}}else j2(b,d,c[t>>2]|0);while(0);f=c[x>>2]|0;e=e-f|0;if((e|0)<=0){f=1;d=41;break}else d=d+f|0}if((d|0)==14)Sa(123320,121616,701,123336);else if((d|0)==26)Sa(122152,121616,707,123336);else if((d|0)==41){i=B;return f|0}return 0}function g_(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;g=i;f=c[b+576>>2]|0;if(c[f+4>>2]&1){i=g;return}if(!(c[f+28>>2]&1)){d=1;e=12}else{d=(c[f+76>>2]|0)==0|2;e=13}j_(b,d,e);j_(b,d,e);j_(b,d,e);j_(b,d,e);j_(b,d,e);j_(b,d,e);d=b+608|0;if((c[d>>2]|0)>=(c[b+592>>2]|0))cy(b)|0;e=f+48|0;h=c[e>>2]&255;j=b+604|0;b=c[j>>2]|0;c[j>>2]=b+1;a[b>>0]=h;c[d>>2]=(c[d>>2]|0)+1;c[e>>2]=0;c[f+52>>2]=8;i=g;return}function h_(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;e=a+576|0;b=c[e>>2]|0;if(!b)Sa(123280,121616,1109,123288);c[a+672>>2]=c[b+32>>2];c[a+668>>2]=c[b+36>>2];c[a+676>>2]=c[b+40>>2];d=c[b+64>>2]|0;if(d)KK(d);b=c[b+80>>2]|0;if(!b){d=c[e>>2]|0;KK(d);c[e>>2]=0;Tv(a);i=f;return}KK(b);d=c[e>>2]|0;KK(d);c[e>>2]=0;Tv(a);i=f;return}function i_(b,f,g,h){b=b|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;j=a[f>>0]|0;o=(h|0)>0;a:do if(j<<24>>24>-1&o){if((h|0)>63){b:do if(!(f&3)){j=f;l=h;k=0}else{m=f;l=h;k=0;while(1){if(j<<24>>24)break;k=k+8|0;l=l+-8|0;j=m+1|0;if(!(j&3))break b;m=j;j=a[j>>0]|0}k=(d[122624+(j&255)>>0]|0)+k|0;break a}while(0);c:do if((l|0)>31)do{if(c[j>>2]|0)break c;k=k+32|0;l=l+-32|0;j=j+4|0}while((l|0)>31);while(0)}else{j=f;l=h;k=0}d:do if((l|0)>7){while(1){m=a[j>>0]|0;if(m<<24>>24)break;k=k+8|0;l=l+-8|0;j=j+1|0;if((l|0)<=7)break d}k=(d[122624+(m&255)>>0]|0)+k|0;break a}while(0);if((l|0)>0){n=d[122624+(d[j>>0]|0)>>0]|0;k=((n|0)>(l|0)?l:n)+k|0}}else k=0;while(0);j=a[g>>0]|0;e:do if(j<<24>>24>-1&o){if((h|0)>63){f:do if(!(g&3)){j=g;m=h;l=0}else{n=g;m=h;l=0;while(1){if(j<<24>>24)break;l=l+8|0;m=m+-8|0;j=n+1|0;if(!(j&3))break f;n=j;j=a[j>>0]|0}o=0;m=(d[122624+(j&255)>>0]|0)+l|0;break e}while(0);g:do if((m|0)>31)do{if(c[j>>2]|0)break g;l=l+32|0;m=m+-32|0;j=j+4|0}while((m|0)>31);while(0)}else{j=g;m=h;l=0}h:do if((m|0)>7){while(1){n=a[j>>0]|0;if(n<<24>>24)break;l=l+8|0;m=m+-8|0;j=j+1|0;if((m|0)<=7)break h}o=0;m=(d[122624+(n&255)>>0]|0)+l|0;break e}while(0);if((m|0)>0){n=d[122624+(d[j>>0]|0)>>0]|0;o=0;m=((n|0)>(m|0)?m:n)+l|0}else{o=0;m=l}}else{o=0;m=0}while(0);while(1){if(m>>>0>>0){if(!((d[g+(m>>>3)>>0]|0)&1<<(m&7^7)))j=l2(g,m,h)|0;else j=k2(g,m,h)|0;j=j+m|0}else j=h;do if(j>>>0>>0)j_(b,1,4);else{j=m-k+3|0;if(j>>>0<7){j_(b,e[122282+(j*6|0)>>1]|0,e[122280+(j*6|0)>>1]|0);j=k;break}if(k>>>0>>0){if(!((d[f+(k>>>3)>>0]|0)&1<<(k&7^7)))j=l2(f,k,h)|0;else j=k2(f,k,h)|0;j=j+k|0}else j=h;j_(b,1,3);if((o|0)!=(0-k|0)?((d[f+(o>>>3)>>0]|0)&1<<(o&7^7)|0)!=0:0){m2(b,k-o|0,120928);m2(b,j-k|0,120272);break}m2(b,k-o|0,120272);m2(b,j-k|0,120928)}while(0);if(j>>>0>=h>>>0)break;if(!((d[f+(j>>>3)>>0]|0)&1<<(j&7^7))){k=l2(f,j,h)|0;l=(k2(g,j,h)|0)+j|0;m=l2(g,l,h)|0}else{k=k2(f,j,h)|0;l=(l2(g,j,h)|0)+j|0;m=k2(g,l,h)|0}o=j;k=k+j|0;m=m+l|0}i=p;return}function j_(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;p=c[b+576>>2]|0;o=p+52|0;j=c[o>>2]|0;p=p+48|0;n=c[p>>2]|0;if(j>>>0>=e>>>0)if(e>>>0<9){g=e;h=j;f=n}else Sa(122152,121616,608,122168);else{k=b+608|0;l=b+592|0;m=b+604|0;g=c[k>>2]|0;h=j;f=n;while(1){e=e-h|0;if((g|0)>=(c[l>>2]|0))cy(b)|0;g=c[m>>2]|0;c[m>>2]=g+1;a[g>>0]=d>>>e|f;g=(c[k>>2]|0)+1|0;c[k>>2]=g;if(e>>>0<=8){g=e;h=8;f=0;break}else{h=8;f=0}}}e=h-g|0;f=(c[122184+(g<<2)>>2]&d)<>2]=d;c[o>>2]=b;i=q;return}e=b+608|0;if((c[e>>2]|0)>=(c[b+592>>2]|0))cy(b)|0;d=b+604|0;b=c[d>>2]|0;c[d>>2]=b+1;a[b>>0]=f;c[e>>2]=(c[e>>2]|0)+1;b=8;d=0;c[p>>2]=d;c[o>>2]=b;i=q;return}function k_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;e=i;i=i+168|0;c[e>>2]=0;Kga(a+592|0,1,e|0)|0;t=0;b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,e)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else b=0;while(1){if(b){f=6;break}t=0;ka(328,a|0);b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,e)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else break}if((f|0)==6){i=g;return}i=g;return}function l_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;j=i;g=i;i=i+168|0;c[g>>2]=0;b=a+460|0;t=0;d=na(225,b|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){f=Mga(c[e>>2]|0,g)|0;if(!f)Va(e|0,u|0);I=u}else f=-1;if((f|0)!=1){c[a>>2]=d;c[b>>2]=329;c[a+468>>2]=330;Kga(a+592|0,1,g|0)|0;t=0;b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,g)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)!=1)b=0;else b=I}else b=I;while(1){if(b){b=0;h=7;break}t=0;Da(125,a|0,90,456);b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,g)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else break}if((h|0)==7){i=j;return b|0}h=1;i=j;return h|0}function m_(a){a=a|0;var b=0,d=0;b=i;d=c[a>>2]|0;c[d+20>>2]=123;Jd[c[d+4>>2]&255](a,-1);c[a+768>>2]=226552;c[a+772>>2]=2;i=b;return 1}function n_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;if((b|0)<=0){i=f;return}d=a+772|0;e=c[d>>2]|0;if(e>>>0>>0){b=c[a>>2]|0;c[b+20>>2]=123;Jd[c[b+4>>2]&255](a,-1);c[a+768>>2]=226552;c[d>>2]=2;i=f;return}else{a=a+768|0;c[a>>2]=(c[a>>2]|0)+b;c[d>>2]=e-b;i=f;return}}function o_(a){a=a|0;return}function p_(a){a=a|0;c[a+768>>2]=c[a+880>>2];c[a+772>>2]=c[a+884>>2];return}function q_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;g=i;i=i+168|0;c[g>>2]=0;Kga(a+592|0,1,g|0)|0;t=0;d=t;t=0;if((d|0)!=0&(u|0)!=0){e=Mga(c[d>>2]|0,g)|0;if(!e)Va(d|0,u|0);I=u}else e=-1;if((e|0)==1)d=I;else d=0;while(1){if(d){d=-1;h=6;break}t=0;d=ya(284,a|0,b|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){f=Mga(c[e>>2]|0,g)|0;if(!f)Va(e|0,u|0);I=u}else f=-1;if((f|0)==1)d=I;else break}if((h|0)==6){i=j;return d|0}h=d;i=j;return h|0}function r_(a){a=a|0;var b=0;b=c[a+796>>2]|0;c[a+768>>2]=c[b+588>>2];c[a+772>>2]=c[b+608>>2];return}function s_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;e=i;i=i+168|0;c[e>>2]=0;Kga(a+592|0,1,e|0)|0;t=0;b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,e)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else b=0;while(1){if(b){b=0;f=6;break}t=0;ka(331,a|0);b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,e)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else break}if((f|0)==6){i=g;return b|0}f=1;i=g;return f|0}function t_(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=i;i=i+16|0;Dw(c[a+628>>2]|0,226344,226368,e);i=e;return 0}function u_(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=i;i=i+16|0;K=L;J=c[b+576>>2]|0;h=c[J+32>>2]|0;a:do if(h){H=J+196|0;I=c[(c[H>>2]|0)+132>>2]|0;w=c[J+856>>2]|0;x=J+808|0;y=J+852|0;z=J+284|0;A=J+812|0;B=J+36|0;C=J+804|0;D=b+444|0;E=I+-1|0;F=ea(w,E)|0;G=(I|0)==0;v=f;g=c[x>>2]|0;b:while(1){if((v|0)<(g|0)){d=4;break}g=c[y>>2]|0;if((g|0)>7){u=c[z>>2]<<3;if((p2(J,A,u)|0)!=(u|0)){g=0;d=29;break}c[y>>2]=0;g=0}f=c[B>>2]|0;if((f|0)>0){t=0;g=0;u=c[H>>2]|0;while(1){r=c[u+8>>2]|0;s=c[u+12>>2]|0;if((s|0)>0){o=A+(t<<2)|0;p=r+F|0;q=(r|0)==1;n=0;do{f=(ea(c[y>>2]|0,s)|0)+n|0;f=c[(c[o>>2]|0)+(f<<2)>>2]|0;j=d+g|0;if((v|0)<(p+g|0)){d=13;break b}if(q){if(!G){k=I;while(1){k=k+-1|0;a[j>>0]=a[f>>0]|0;if(!k)break;else{f=f+1|0;j=j+w|0}}}}else if(!(G|(r|0)<1)){m=E;while(1){k=f;l=0;while(1){a[j+l>>0]=a[k>>0]|0;l=l+1|0;if((l|0)==(r|0))break;else k=k+1|0}if(!m)break;else{m=m+-1|0;f=f+r|0;j=j+w|0}}}g=g+r|0;n=n+1|0}while((n|0)<(s|0));f=c[B>>2]|0}t=t+1|0;if((t|0)>=(f|0))break;else u=u+88|0}g=c[y>>2]|0}c[y>>2]=g+1;u=e[C>>1]|0;c[D>>2]=(c[D>>2]|0)+u;g=c[x>>2]|0;h=h-u|0;if((h|0)<=0)break a;else{d=d+g|0;v=v-g|0}}if((d|0)==4){Dw(c[b+628>>2]|0,226192,226208,K);b=0;i=L;return b|0}else if((d|0)==13){Dw(c[b+628>>2]|0,226192,226264,K);b=0;i=L;return b|0}else if((d|0)==29){i=L;return g|0}}while(0);if((c[J+120>>2]|0)>>>0<(c[J+96>>2]|0)>>>0)g=1;else g=(y_(J)|0)!=0;b=g&1;i=L;return b|0}function v_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;e=i;i=i+168|0;c[e>>2]=0;Kga(a+592|0,1,e|0)|0;t=0;b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,e)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else b=0;while(1){if(b){b=0;f=6;break}t=0;na(228,a|0)|0;b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,e)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else break}if((f|0)==6){i=g;return b|0}f=1;i=g;return f|0}function w_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;h=i;i=i+168|0;c[h>>2]=0;Kga(a+592|0,1,h|0)|0;t=0;e=t;t=0;if((e|0)!=0&(u|0)!=0){f=Mga(c[e>>2]|0,h)|0;if(!f)Va(e|0,u|0);I=u}else f=-1;if((f|0)==1)e=I;else e=0;while(1){if(e){e=0;j=6;break}t=0;g=Ga(c[(c[a+4>>2]|0)+8>>2]|0,a|0,1,b|0,d|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){f=Mga(c[e>>2]|0,h)|0;if(!f)Va(e|0,u|0);I=u}else f=-1;if((f|0)==1)e=I;else break}if((j|0)==6){i=k;return e|0}h=g;i=k;return h|0}function x_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;g=i;i=i+168|0;c[g>>2]=0;Kga(a+592|0,1,g|0)|0;t=0;d=t;t=0;if((d|0)!=0&(u|0)!=0){e=Mga(c[d>>2]|0,g)|0;if(!e)Va(d|0,u|0);I=u}else e=-1;if((e|0)==1)d=I;else d=0;while(1){if(d){d=-1;h=6;break}t=0;d=qa(186,a|0,b|0,1)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){f=Mga(c[e>>2]|0,g)|0;if(!f)Va(e|0,u|0);I=u}else f=-1;if((f|0)==1)d=I;else break}if((h|0)==6){i=j;return d|0}h=d;i=j;return h|0}function y_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;f=i;i=i+168|0;c[f>>2]=0;Kga(a+592|0,1,f|0)|0;t=0;b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,f)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else b=0;while(1){if(b){b=-1;g=6;break}t=0;b=na(235,a|0)|0;d=t;t=0;if((d|0)!=0&(u|0)!=0){e=Mga(c[d>>2]|0,f)|0;if(!e)Va(d|0,u|0);I=u}else e=-1;if((e|0)==1)b=I;else break}if((g|0)==6){i=h;return b|0}g=b&255;i=h;return g|0}function z_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;j=i;g=i;i=i+168|0;c[g>>2]=0;b=a+460|0;t=0;d=na(225,b|0)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){f=Mga(c[e>>2]|0,g)|0;if(!f)Va(e|0,u|0);I=u}else f=-1;if((f|0)!=1){c[a>>2]=d;c[b>>2]=329;c[a+468>>2]=330;Kga(a+592|0,1,g|0)|0;t=0;b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,g)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)!=1)b=0;else b=I}else b=I;while(1){if(b){b=0;h=7;break}t=0;Da(128,a|0,90,424);b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,g)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else break}if((h|0)==7){i=j;return b|0}h=1;i=j;return h|0}function A_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;e=i;i=i+168|0;c[e>>2]=0;Kga(a+592|0,1,e|0)|0;t=0;b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,e)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else b=0;while(1){if(b){b=0;f=6;break}t=0;ka(316,a|0);b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,e)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else break}if((f|0)==6){i=g;return b|0}f=1;i=g;return f|0}function B_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;f=i;i=i+168|0;c[f>>2]=0;Kga(a+592|0,1,f|0)|0;t=0;d=t;t=0;if((d|0)!=0&(u|0)!=0){e=Mga(c[d>>2]|0,f)|0;if(!e)Va(d|0,u|0);I=u}else e=-1;if((e|0)==1)d=I;else d=0;while(1){if(d){d=0;g=6;break}t=0;Da(129,a|0,b|0,0);d=t;t=0;if((d|0)!=0&(u|0)!=0){e=Mga(c[d>>2]|0,f)|0;if(!e)Va(d|0,u|0);I=u}else e=-1;if((e|0)==1)d=I;else break}if((g|0)==6){i=h;return d|0}g=1;i=h;return g|0}function C_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;e=i;i=i+168|0;c[e>>2]=0;Kga(a+592|0,1,e|0)|0;t=0;b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,e)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else b=0;while(1){if(b){b=0;f=6;break}t=0;la(146,a|0,1);b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,e)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else break}if((f|0)==6){i=g;return b|0}f=1;i=g;return f|0}function D_(a){a=a|0;c[a+748>>2]=c[a+880>>2];c[a+752>>2]=c[a+884>>2];return}function E_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=i;b=a+880|0;d=a+884|0;e=LK(c[b>>2]|0,(c[d>>2]|0)+1e3|0)|0;if(!e){g=c[a>>2]|0;c[g+20>>2]=56;c[g+24>>2]=100;Id[c[g>>2]&511](a)}g=c[d>>2]|0;c[a+748>>2]=e+g;c[a+752>>2]=1e3;c[b>>2]=e;c[d>>2]=g+1e3;i=f;return 1}function F_(a){a=a|0;var b=0;b=a+884|0;c[b>>2]=(c[b>>2]|0)-(c[a+752>>2]|0);return}function G_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;e=i;i=i+168|0;c[e>>2]=0;Kga(a+592|0,1,e|0)|0;t=0;b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,e)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else b=0;while(1){if(b){b=0;f=6;break}t=0;ka(332,a|0);b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,e)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else break}if((f|0)==6){i=g;return b|0}f=1;i=g;return f|0}function H_(a){a=a|0;var b=0;b=c[a+796>>2]|0;c[a+748>>2]=c[b+588>>2];c[a+752>>2]=c[b+592>>2];return}function I_(a){a=a|0;var b=0,d=0,e=0;b=i;e=c[a+796>>2]|0;d=e+592|0;c[e+608>>2]=c[d>>2];cy(e)|0;c[a+748>>2]=c[e+588>>2];c[a+752>>2]=c[d>>2];i=b;return 1}function J_(a){a=a|0;var b=0;b=c[a+796>>2]|0;c[b+604>>2]=c[a+748>>2];c[b+608>>2]=(c[b+592>>2]|0)-(c[a+752>>2]|0);return}function K_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;f=i;i=i+168|0;c[f>>2]=0;Kga(a+592|0,1,f|0)|0;t=0;d=t;t=0;if((d|0)!=0&(u|0)!=0){e=Mga(c[d>>2]|0,f)|0;if(!e)Va(d|0,u|0);I=u}else e=-1;if((e|0)==1)d=I;else d=0;while(1){if(d){d=0;g=6;break}t=0;la(147,a|0,b|0);d=t;t=0;if((d|0)!=0&(u|0)!=0){e=Mga(c[d>>2]|0,f)|0;if(!e)Va(d|0,u|0);I=u}else e=-1;if((e|0)==1)d=I;else break}if((g|0)==6){i=h;return d|0}g=1;i=h;return g|0}function L_(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+16|0;E=c[b+576>>2]|0;H=c[E+856>>2]|0;if(!E)Sa(225320,225032,1904,225464);D=e[E+802>>1]|0;F=E+804|0;g=e[F>>1]|0;G=(ea(g,D)|0)+2|0;G=((ea(ea(c[E+72>>2]|0,(((c[E+28>>2]|0)+-1+D|0)>>>0)/(D>>>0)|0)|0,G)|0)+7|0)>>>3;g=ea((f|0)/(G|0)|0,g)|0;if((f|0)%(G|0)|0)Zx(c[b+628>>2]|0,c[b>>2]|0,225352,I);y=E+84|0;z=c[(c[y>>2]|0)+132>>2]|0;A=E+260|0;if((g|0)<=0){H=1;i=I;return H|0}B=E+76|0;C=E+852|0;D=E+812|0;w=b+444|0;x=(z|0)==0;v=g;while(1){g=c[B>>2]|0;if((g|0)>0){t=0;s=0;u=c[y>>2]|0;while(1){o=c[u+8>>2]|0;r=c[u+12>>2]|0;f=c[u+28>>2]|0;b=ea(o,z)|0;if((r|0)>0){p=D+(t<<2)|0;q=((f<<3)-b|0)>0;g=f<<3;if((o|0)==1){j=g-z|0;k=s;l=0;while(1){g=(ea(c[C>>2]|0,r)|0)+l|0;g=c[(c[p>>2]|0)+(g<<2)>>2]|0;if(!x){f=d+k|0;b=z;h=g;while(1){b=b+-1|0;a[h>>0]=a[f>>0]|0;if(!b)break;else{f=f+H|0;h=h+1|0}}g=g+z|0}if(q){f=0;while(1){a[g>>0]=a[g+-1>>0]|0;f=f+1|0;if((f|0)==(j|0))break;else g=g+1|0}}l=l+1|0;if((l|0)==(r|0)){f=r;break}else k=k+1|0}}else{k=g-b|0;f=ea(o,r)|0;m=s;n=0;while(1){g=(ea(c[C>>2]|0,r)|0)+n|0;g=c[(c[p>>2]|0)+(g<<2)>>2]|0;if(!(x|(o|0)<1)){l=z;h=d+m|0;while(1){l=l+-1|0;b=g;j=0;while(1){a[b>>0]=a[h+j>>0]|0;j=j+1|0;if((j|0)==(o|0))break;else b=b+1|0}g=g+o|0;if(!l)break;else h=h+H|0}}if(q){b=0;while(1){a[g>>0]=a[g+-1>>0]|0;b=b+1|0;if((b|0)==(k|0))break;else g=g+1|0}}n=n+1|0;if((n|0)==(r|0))break;else m=m+o|0}}g=c[B>>2]|0;f=s+f|0}else f=s;t=t+1|0;if((t|0)>=(g|0))break;else{s=f;u=u+88|0}}}u=c[C>>2]|0;c[C>>2]=u+1;if((u|0)>6){u=c[A>>2]<<3;if((N_(E,D,u)|0)!=(u|0)){g=0;f=32;break}c[C>>2]=0}u=e[F>>1]|0;c[w>>2]=(c[w>>2]|0)+u;v=v-u|0;if((v|0)<=0){g=1;f=32;break}else d=d+G|0}if((f|0)==32){i=I;return g|0}return 0}function M_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;e=i;i=i+168|0;c[e>>2]=0;Kga(a+592|0,1,e|0)|0;t=0;b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,e)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else b=0;while(1){if(b){b=0;f=6;break}t=0;la(129,a|0,0);b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,e)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else break}if((f|0)==6){i=g;return b|0}f=1;i=g;return f|0}function N_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;h=i;i=i+168|0;c[h>>2]=0;Kga(a+592|0,1,h|0)|0;t=0;e=t;t=0;if((e|0)!=0&(u|0)!=0){f=Mga(c[e>>2]|0,h)|0;if(!f)Va(e|0,u|0);I=u}else f=-1;if((f|0)==1)e=I;else e=0;while(1){if(e){e=-1;j=6;break}t=0;e=qa(201,a|0,b|0,d|0)|0;f=t;t=0;if((f|0)!=0&(u|0)!=0){g=Mga(c[f>>2]|0,h)|0;if(!g)Va(f|0,u|0);I=u}else g=-1;if((g|0)==1)e=I;else break}if((j|0)==6){i=k;return e|0}h=e;i=k;return h|0}function O_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;e=i;i=i+168|0;c[e>>2]=0;Kga(a+592|0,1,e|0)|0;t=0;b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,e)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else b=0;while(1){if(b){b=0;f=6;break}t=0;ka(318,a|0);b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,e)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else break}if((f|0)==6){i=g;return b|0}f=1;i=g;return f|0}function P_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;g=i;i=i+168|0;c[g>>2]=0;Kga(a+592|0,1,g|0)|0;t=0;d=t;t=0;if((d|0)!=0&(u|0)!=0){e=Mga(c[d>>2]|0,g)|0;if(!e)Va(d|0,u|0);I=u}else e=-1;if((e|0)==1)d=I;else d=0;while(1){if(d){d=-1;h=6;break}t=0;d=qa(190,a|0,b|0,1)|0;e=t;t=0;if((e|0)!=0&(u|0)!=0){f=Mga(c[e>>2]|0,g)|0;if(!f)Va(e|0,u|0);I=u}else f=-1;if((f|0)==1)d=I;else break}if((h|0)==6){i=j;return d|0}h=d;i=j;return h|0}function Q_(a){a=a|0;var d=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;g=c[a+576>>2]|0;if(!g)Sa(229264,228624,1321,229488);if((b[a+90>>1]|0)!=-32691)Sa(229504,228624,1322,229488);if((b[a+126>>1]|0)!=1){Dw(c[a+628>>2]|0,229488,229552,h);h=0;i=j;return h|0}d=c[g>>2]|0;if((d|0)==-1){switch(e[a+84>>1]<<3|e[a+86>>1]|0){case 129:case 130:case 132:{f=1;break}case 259:{f=0;break}case 258:case 257:case 260:{f=2;break}case 65:case 68:{f=3;break}default:f=-1}d=e[a+98>>1]|0;if((d|0)==1)d=(f|0)==2?2:-1;else if((d|0)==3)d=(f|0)==2?-1:f;else d=-1;c[g>>2]=d}if((d|0)==2)c[g+8>>2]=4;else if((d|0)==1)c[g+8>>2]=6;else if(!d)c[g+8>>2]=12;else if((d|0)==3)c[g+8>>2]=3;else{Dw(c[a+628>>2]|0,229488,229608,h);h=0;i=j;return h|0}if(!(c[a+12>>2]&1024)){d=ea(c[a+100>>2]|0,c[a+56>>2]|0)|0;c[g+16>>2]=d}else{d=ea(c[a+72>>2]|0,c[a+68>>2]|0)|0;c[g+16>>2]=d}if((d|0)!=0?(f=JK(d<<2)|0,c[g+12>>2]=f,(f|0)!=0):0){h=1;i=j;return h|0}Dw(c[a+628>>2]|0,229488,229416,h);h=0;i=j;return h|0}function R_(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;r=s;q=c[a+576>>2]|0;if(f<<16>>16)Sa(229240,228624,263,229816);if(!q)Sa(229264,228624,264,229816);p=(e|0)/(c[q+8>>2]|0)|0;do if((c[q>>2]|0)!=2)if((c[q+16>>2]|0)<(p|0))Sa(229280,228624,271,229816);else{m=c[q+12>>2]|0;break}else m=b;while(0);n=a+604|0;g=c[n>>2]|0;o=a+608|0;f=c[o>>2]|0;if((p|0)>0&(f|0)>0){e=0-p|0;h=~(((f+-1|0)>>>0)/3|0);h=e>>>0>h>>>0?e:h;e=0-h|0;l=h*3|0;h=ea(h,-3)|0;j=g;k=0;while(1){c[m+(k<<2)>>2]=(d[j+1>>0]|0)<<8|(d[j>>0]|0)<<16|(d[j+2>>0]|0);k=k+1|0;if((k|0)==(e|0))break;else j=j+3|0}g=g+h|0;f=f+l|0}else e=0;c[n>>2]=g;c[o>>2]=f;if((p|0)==(e|0)){$d[c[q+20>>2]&255](q,b,p);r=1;i=s;return r|0}else{b=c[a+628>>2]|0;q=p-e|0;c[r>>2]=c[a+444>>2];a=r+4|0;c[a>>2]=q;c[a+4>>2]=((q|0)<0)<<31>>31;Dw(b,229816,229752,r);r=0;i=s;return r|0}return 0}function S_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((d|0)<=0){i=e;return}a=c[a+12>>2]|0;while(1){d=d+-1|0;Vw(c[a>>2]|0,b);if((d|0)<=0)break;else{a=a+4|0;b=b+12|0}}i=e;return}function T_(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;if((e|0)<=0){i=p;return}n=c[a+12>>2]|0;while(1){e=e+-1|0;l=c[n>>2]|0;m=d+2|0;b[d>>1]=(l>>>12&4093)+13314;l=l&16383;if(l>>>0>16288){f=6898;a=15521}else{f=0;k=163;a:while(1){while(1){if((k-f|0)<=1){o=8;break a}a=f+k>>1;h=b[227262+(a<<3)>>1]|0;j=l-(h<<16>>16)|0;if((j|0)>0)f=a;else break}if((j|0)<0)k=a;else break}if((o|0)==8){o=0;h=b[227262+(f<<3)>>1]|0;a=f}f=~~((+g[227256+(a<<3)>>2]+(+(l-(h<<16>>16)|0)+.5)*3.5000001080334187e-003)*32768.0);a=~~(((+(a|0)+.5)*3.5000001080334187e-003+.016939999535679817)*32768.0)}b[m>>1]=f;b[d+4>>1]=a;if((e|0)<=0)break;else{n=n+4|0;d=d+6|0}}i=p;return}function U_(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0;o=i;i=i+16|0;n=o;if((e|0)<=0){i=o;return}l=n+4|0;m=n+8|0;k=c[b+12>>2]|0;while(1){e=e+-1|0;Vw(c[k>>2]|0,n);k=k+4|0;q=+g[n>>2];p=+g[l>>2];j=+g[m>>2];f=q*2.69+p*-1.276+j*-.414;h=q*-1.022+p*1.978+j*.044;j=q*.061+p*-.224+j*1.163;if(!(f<=0.0))if(!(f>=1.0))b=~~(+U(+f)*256.0)&255;else b=-1;else b=0;a[d>>0]=b;if(!(h<=0.0))if(!(h>=1.0))b=~~(+U(+h)*256.0)&255;else b=-1;else b=0;a[d+1>>0]=b;if(!(j<=0.0))if(!(j>=1.0))b=~~(+U(+j)*256.0)&255;else b=-1;else b=0;a[d+2>>0]=b;if((e|0)<=0)break;else d=d+3|0}i=o;return}function V_(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+16|0;s=t;if(g<<16>>16)Sa(229240,228624,319,229800);o=c[b+576>>2]|0;if(!o)Sa(229264,228624,321,229800);r=(f|0)/(c[o+8>>2]|0)|0;do if((c[o>>2]|0)!=2)if((c[o+16>>2]|0)<(r|0))Sa(229280,228624,328,229800);else{n=c[o+12>>2]|0;break}else n=e;while(0);MK(n,0,r<<2);p=b+604|0;f=c[p>>2]|0;q=b+608|0;g=c[q>>2]|0;a:do if((r|0)>0){m=32;while(1){m=m+-8|0;if((m|0)<=-1){j=24;break a}b:do if((g|0)>0){h=f;f=0;do{l=a[h>>0]|0;k=l&255;j=h+1|0;c:do if(l<<24>>24<0){h=h+2|0;j=(d[j>>0]|0)<>>0>l>>>0?u:l)|0;do{u=n+(f<<2)|0;f=f+1|0;c[u>>2]=c[u>>2]|j}while((f|0)!=(l|0));f=l}}else{g=g+-1|0;if(!g){h=j;g=0;break b}else h=j;while(1){if(!((k|0)!=0&(f|0)<(r|0)))break c;j=h+1|0;l=f+1|0;u=n+(f<<2)|0;c[u>>2]=(d[h>>0]|0)<>2];g=g+-1|0;if(!g){h=j;g=0;f=l;break b}else{h=j;f=l;k=k+-1|0}}}while(0)}while((r|0)>(f|0)&(g|0)>0)}else{h=f;f=0}while(0);if((r|0)!=(f|0)){j=23;break}else f=h}}else{h=32;while(1){h=h+-8|0;if((h|0)<=-1){j=24;break a}if(r){h=f;f=0;j=23;break}}}while(0);if((j|0)==23){u=c[b+628>>2]|0;r=r-f|0;c[s>>2]=c[b+444>>2];b=s+4|0;c[b>>2]=r;c[b+4>>2]=((r|0)<0)<<31>>31;Dw(u,229800,229752,s);u=0;s=g;b=h;c[p>>2]=b;c[q>>2]=s;i=t;return u|0}else if((j|0)==24){$d[c[o+20>>2]&255](o,e,r);u=1;s=g;b=f;c[p>>2]=b;c[q>>2]=s;i=t;return u|0}return 0}function W_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((d|0)<=0){i=e;return}a=c[a+12>>2]|0;while(1){d=d+-1|0;Xw(c[a>>2]|0,b);if((d|0)<=0)break;else{a=a+4|0;b=b+12|0}}i=e;return}function X_(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0;f=i;if((e|0)<=0){i=f;return}a=c[a+12>>2]|0;while(1){e=e+-1|0;g=c[a>>2]|0;b[d>>1]=g>>>16;b[d+2>>1]=~~((+((g>>>8&255)>>>0)+.5)*2.4390243902439024e-003*32768.0);b[d+4>>1]=~~((+((g&255)>>>0)+.5)*2.4390243902439024e-003*32768.0);if((e|0)<=0)break;else{a=a+4|0;d=d+6|0}}i=f;return}function Y_(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0;o=i;i=i+16|0;n=o;if((e|0)<=0){i=o;return}l=n+4|0;m=n+8|0;k=c[b+12>>2]|0;while(1){e=e+-1|0;Xw(c[k>>2]|0,n);k=k+4|0;q=+g[n>>2];p=+g[l>>2];j=+g[m>>2];f=q*2.69+p*-1.276+j*-.414;h=q*-1.022+p*1.978+j*.044;j=q*.061+p*-.224+j*1.163;if(!(f<=0.0))if(!(f>=1.0))b=~~(+U(+f)*256.0)&255;else b=-1;else b=0;a[d>>0]=b;if(!(h<=0.0))if(!(h>=1.0))b=~~(+U(+h)*256.0)&255;else b=-1;else b=0;a[d+1>>0]=b;if(!(j<=0.0))if(!(j>=1.0))b=~~(+U(+j)*256.0)&255;else b=-1;else b=0;a[d+2>>0]=b;if((e|0)<=0)break;else d=d+3|0}i=o;return}function Z_(a){a=a|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=c[a+576>>2]|0;if(!f)Sa(229264,228624,1229,229304);if((b[a+90>>1]|0)!=-32692)Sa(229320,228624,1230,229304);d=c[f>>2]|0;if((d|0)==-1){switch(e[a+86>>1]|e[a+84>>1]<<6|e[a+98>>1]<<3|0){case 2059:{d=0;break}case 1033:case 1034:case 1036:{d=1;break}case 521:case 524:{d=3;break}default:d=-1}c[f>>2]=d}if(!d)c[f+8>>2]=4;else if((d|0)==1)c[f+8>>2]=2;else if((d|0)==3)c[f+8>>2]=1;else{Dw(c[a+628>>2]|0,229304,229360,g);a=0;i=h;return a|0}if(!(c[a+12>>2]&1024)){d=ea(c[a+100>>2]|0,c[a+56>>2]|0)|0;c[f+16>>2]=d}else{d=ea(c[a+72>>2]|0,c[a+68>>2]|0)|0;c[f+16>>2]=d}if((d|0)!=0?(d=JK(d<<1)|0,c[f+12>>2]=d,(d|0)!=0):0){a=1;i=h;return a|0}Dw(c[a+628>>2]|0,229304,229416,g);a=0;i=h;return a|0}function __(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+16|0;v=w;u=c[f+576>>2]|0;if(j<<16>>16)Sa(229240,228624,197,229736);if(!u)Sa(229264,228624,198,229736);s=(h|0)/(c[u+8>>2]|0)|0;do if((c[u>>2]|0)!=1)if((c[u+16>>2]|0)<(s|0))Sa(229280,228624,205,229736);else{t=c[u+12>>2]|0;break}else t=g;while(0);MK(t,0,s<<1);q=f+604|0;r=f+608|0;o=(s|0)>0;j=c[q>>2]|0;k=c[r>>2]|0;p=16;while(1){p=p+-8|0;if((p|0)<=-1){h=22;break}a:do if(o&(k|0)>0){h=k;k=0;while(1){n=a[j>>0]|0;m=n&255;l=j+1|0;b:do if(n<<24>>24<0){j=j+2|0;l=(d[l>>0]|0)<>>0>m>>>0?n:m)|0;do{n=t+(k<<1)|0;k=k+1|0;b[n>>1]=e[n>>1]|0|l}while((k|0)!=(m|0));k=m}}else{h=h+-1|0;if(!h){j=l;l=0;break a}else j=l;while(1){if(!((m|0)!=0&(k|0)<(s|0)))break b;l=j+1|0;n=k+1|0;k=t+(k<<1)|0;b[k>>1]=e[k>>1]|0|(d[j>>0]|0)<(k|0)&(h|0)>0)){l=h;break}}}else{l=k;k=0}while(0);if((s|0)!=(k|0)){h=21;break}else k=l}if((h|0)==21){g=c[f+628>>2]|0;u=s-k|0;c[v>>2]=c[f+444>>2];f=v+4|0;c[f>>2]=u;c[f+4>>2]=((u|0)<0)<<31>>31;Dw(g,229736,229752,v);v=0;f=l;g=j;c[q>>2]=g;c[r>>2]=f;i=w;return v|0}else if((h|0)==22){$d[c[u+20>>2]&255](u,g,s);v=1;f=k;g=j;c[q>>2]=g;c[r>>2]=f;i=w;return v|0}return 0}function $_(a,d,e){a=a|0;d=d|0;e=e|0;var f=0.0,h=0,j=0,k=0;k=i;if((e|0)<=0){i=k;return}j=c[a+12>>2]|0;while(1){e=e+-1|0;h=b[j>>1]|0;j=j+2|0;a=h&32767;if(a){f=+ba(+((+(a|0)+.5)*2.7076061740622863e-003+-44.3614195558365));if(h&32768)f=-f}else f=0.0;g[d>>2]=f;if((e|0)<=0)break;else d=d+4|0}i=k;return}function a$(d,e,f){d=d|0;e=e|0;f=f|0;var g=0.0,h=0,j=0,k=0;k=i;if((f|0)<=0){i=k;return}j=e;h=c[d+12>>2]|0;while(1){f=f+-1|0;d=b[h>>1]|0;h=h+2|0;e=d&32767;if(e){g=+ba(+((+(e|0)+.5)*2.7076061740622863e-003+-44.3614195558365));if(d&32768)g=-g;if(!(g<=0.0))if(!(g>=1.0))e=~~(+U(+g)*256.0)&255;else e=-1;else e=0}else e=0;a[j>>0]=e;if((f|0)<=0)break;else j=j+1|0}i=k;return} +function uN(a,b,f,g,h,j,k,l,m){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;V=i;U=e[a+26>>1]|0;Q=ea(U,k)|0;if(!j){i=V;return}R=h>>>0>7;n=U+3|0;o=U+1|0;p=U+2|0;q=U<<1;r=q+3|0;s=q|1;t=q+2|0;u=q+U|0;v=u+3|0;w=u+1|0;x=u+2|0;y=u+U|0;z=y+3|0;A=y+1|0;B=y+2|0;C=y+U|0;D=C+3|0;E=C+1|0;F=C+2|0;G=C+U|0;H=G+3|0;I=G+1|0;J=G+2|0;K=G+U|0;L=K+3|0;M=K+1|0;N=K+2|0;O=K+U|0;S=h+-8|0;T=S&-8;S=S-T|0;T=T+8|0;P=ea(T,U)|0;f=m;k=b;while(1){j=j+-1|0;if(R){b=f+P|0;g=k;a=h;while(1){m=(d[f+3>>0]|0)^255;X=((ea((d[f>>0]|0)^255,m)|0)>>>0)/255|0;Y=((ea((d[f+1>>0]|0)^255,m)|0)>>>0)/255|0;c[g>>2]=X|Y<<8|(((ea((d[f+2>>0]|0)^255,m)|0)>>>0)/255|0)<<16|-16777216;m=(d[f+n>>0]|0)^255;Y=((ea((d[f+U>>0]|0)^255,m)|0)>>>0)/255|0;X=((ea((d[f+o>>0]|0)^255,m)|0)>>>0)/255|0;c[g+4>>2]=Y|X<<8|(((ea((d[f+p>>0]|0)^255,m)|0)>>>0)/255|0)<<16|-16777216;m=(d[f+r>>0]|0)^255;X=((ea((d[f+q>>0]|0)^255,m)|0)>>>0)/255|0;Y=((ea((d[f+s>>0]|0)^255,m)|0)>>>0)/255|0;c[g+8>>2]=X|Y<<8|(((ea((d[f+t>>0]|0)^255,m)|0)>>>0)/255|0)<<16|-16777216;m=(d[f+v>>0]|0)^255;Y=((ea((d[f+u>>0]|0)^255,m)|0)>>>0)/255|0;X=((ea((d[f+w>>0]|0)^255,m)|0)>>>0)/255|0;c[g+12>>2]=Y|X<<8|(((ea((d[f+x>>0]|0)^255,m)|0)>>>0)/255|0)<<16|-16777216;m=(d[f+z>>0]|0)^255;X=((ea((d[f+y>>0]|0)^255,m)|0)>>>0)/255|0;Y=((ea((d[f+A>>0]|0)^255,m)|0)>>>0)/255|0;c[g+16>>2]=X|Y<<8|(((ea((d[f+B>>0]|0)^255,m)|0)>>>0)/255|0)<<16|-16777216;m=(d[f+D>>0]|0)^255;Y=((ea((d[f+C>>0]|0)^255,m)|0)>>>0)/255|0;X=((ea((d[f+E>>0]|0)^255,m)|0)>>>0)/255|0;c[g+20>>2]=Y|X<<8|(((ea((d[f+F>>0]|0)^255,m)|0)>>>0)/255|0)<<16|-16777216;m=(d[f+H>>0]|0)^255;X=((ea((d[f+G>>0]|0)^255,m)|0)>>>0)/255|0;Y=((ea((d[f+I>>0]|0)^255,m)|0)>>>0)/255|0;c[g+24>>2]=X|Y<<8|(((ea((d[f+J>>0]|0)^255,m)|0)>>>0)/255|0)<<16|-16777216;m=(d[f+L>>0]|0)^255;Y=((ea((d[f+K>>0]|0)^255,m)|0)>>>0)/255|0;X=((ea((d[f+M>>0]|0)^255,m)|0)>>>0)/255|0;c[g+28>>2]=Y|X<<8|(((ea((d[f+N>>0]|0)^255,m)|0)>>>0)/255|0)<<16|-16777216;a=a+-8|0;if(a>>>0<=7)break;else{f=f+O|0;g=g+32|0}}k=k+(T<<2)|0;f=b;g=S}else g=h;switch(g|0){case 4:{W=11;break}case 1:{W=14;break}case 7:{W=(d[f+3>>0]|0)^255;X=((ea((d[f>>0]|0)^255,W)|0)>>>0)/255|0;c[k>>2]=X|(((ea((d[f+1>>0]|0)^255,W)|0)>>>0)/255|0)<<8|(((ea((d[f+2>>0]|0)^255,W)|0)>>>0)/255|0)<<16|-16777216;k=k+4|0;f=f+U|0;W=9;break}case 3:{W=12;break}case 5:{W=10;break}case 6:{W=9;break}case 2:{W=13;break}default:{}}if((W|0)==9){X=(d[f+3>>0]|0)^255;m=((ea((d[f>>0]|0)^255,X)|0)>>>0)/255|0;Y=((ea((d[f+1>>0]|0)^255,X)|0)>>>0)/255|0;c[k>>2]=m|Y<<8|(((ea((d[f+2>>0]|0)^255,X)|0)>>>0)/255|0)<<16|-16777216;k=k+4|0;f=f+U|0;W=10}if((W|0)==10){X=(d[f+3>>0]|0)^255;m=((ea((d[f>>0]|0)^255,X)|0)>>>0)/255|0;Y=((ea((d[f+1>>0]|0)^255,X)|0)>>>0)/255|0;c[k>>2]=m|Y<<8|(((ea((d[f+2>>0]|0)^255,X)|0)>>>0)/255|0)<<16|-16777216;k=k+4|0;f=f+U|0;W=11}if((W|0)==11){X=(d[f+3>>0]|0)^255;m=((ea((d[f>>0]|0)^255,X)|0)>>>0)/255|0;Y=((ea((d[f+1>>0]|0)^255,X)|0)>>>0)/255|0;c[k>>2]=m|Y<<8|(((ea((d[f+2>>0]|0)^255,X)|0)>>>0)/255|0)<<16|-16777216;k=k+4|0;f=f+U|0;W=12}if((W|0)==12){X=(d[f+3>>0]|0)^255;m=((ea((d[f>>0]|0)^255,X)|0)>>>0)/255|0;Y=((ea((d[f+1>>0]|0)^255,X)|0)>>>0)/255|0;c[k>>2]=m|Y<<8|(((ea((d[f+2>>0]|0)^255,X)|0)>>>0)/255|0)<<16|-16777216;k=k+4|0;f=f+U|0;W=13}if((W|0)==13){X=(d[f+3>>0]|0)^255;m=((ea((d[f>>0]|0)^255,X)|0)>>>0)/255|0;Y=((ea((d[f+1>>0]|0)^255,X)|0)>>>0)/255|0;c[k>>2]=m|Y<<8|(((ea((d[f+2>>0]|0)^255,X)|0)>>>0)/255|0)<<16|-16777216;k=k+4|0;f=f+U|0;W=14}if((W|0)==14){W=0;X=(d[f+3>>0]|0)^255;m=((ea((d[f>>0]|0)^255,X)|0)>>>0)/255|0;Y=((ea((d[f+1>>0]|0)^255,X)|0)>>>0)/255|0;c[k>>2]=m|Y<<8|(((ea((d[f+2>>0]|0)^255,X)|0)>>>0)/255|0)<<16|-16777216;k=k+4|0;f=f+U|0}if(!j)break;else{f=f+Q|0;k=k+(l<<2)|0}}i=V;return}function vN(a,b,f,g,h,j,k,l,m){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=i;r=e[a+26>>1]|0;q=c[a+56>>2]|0;n=ea(r,k)|0;if(!j){i=s;return}o=(h|0)==0;p=ea(r,h)|0;k=b;g=m;m=j;while(1){m=m+-1|0;if(o)f=g;else{f=g+p|0;b=h;a=k;while(1){b=b+-1|0;j=(d[g+3>>0]|0)^255;u=((ea((d[g>>0]|0)^255,j)|0)>>>0)/255|0;t=((ea((d[g+1>>0]|0)^255,j)|0)>>>0)/255|0;j=((ea((d[g+2>>0]|0)^255,j)|0)>>>0)/255|0;c[a>>2]=d[q+u>>0]|0|(d[q+t>>0]|0)<<8|(d[q+j>>0]|0)<<16|-16777216;if(!b)break;else{g=g+r|0;a=a+4|0}}k=k+(h<<2)|0}if(!m)break;else{k=k+(l<<2)|0;g=f+n|0}}i=s;return}function wN(a,b,f,g,h,j,k,l,m){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0;r=i;q=c[a+64>>2]|0;n=e[a+26>>1]|0;if(!j){i=r;return}o=(h|0)==0;p=ea(n,h)|0;g=b;a=m;while(1){j=j+-1|0;if(o)f=a;else{f=a+p|0;m=h;b=g;while(1){m=m+-1|0;c[b>>2]=c[c[q+((d[a>>0]|0)<<2)>>2]>>2];if(!m)break;else{a=a+n|0;b=b+4|0}}g=g+(h<<2)|0}if(!j)break;else{g=g+(l<<2)|0;a=f+k|0}}i=r;return}function xN(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;r=c[a+64>>2]|0;n=(j|0)/2|0;if(!h){i=s;return}o=g>>>0>1;p=g+-2|0;m=p>>>1;q=m<<1;p=p-q|0;q=q+2|0;m=m+1|0;f=b;j=l;while(1){h=h+-1|0;if(o){e=f+(q<<2)|0;b=j;a=g;while(1){l=c[r+((d[b>>0]|0)<<2)>>2]|0;c[f>>2]=c[l>>2];c[f+4>>2]=c[l+4>>2];a=a+-2|0;if(a>>>0<=1)break;else{b=b+1|0;f=f+8|0}}j=j+m|0;f=p}else{e=f;f=g}if(f){c[e>>2]=c[c[r+((d[j>>0]|0)<<2)>>2]>>2];e=e+4|0;j=j+1|0}if(!h)break;else{f=e+(k<<2)|0;j=j+n|0}}i=s;return}function yN(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;r=c[a+64>>2]|0;n=(j|0)/4|0;if(!h){i=s;return}o=g>>>0>3;p=g+-4|0;m=p>>>2;q=m<<2;p=p-q|0;q=q+4|0;m=m+1|0;f=b;j=l;while(1){h=h+-1|0;if(o){e=f+(q<<2)|0;b=j;a=g;while(1){l=c[r+((d[b>>0]|0)<<2)>>2]|0;c[f>>2]=c[l>>2];c[f+4>>2]=c[l+4>>2];c[f+8>>2]=c[l+8>>2];c[f+12>>2]=c[l+12>>2];a=a+-4|0;if(a>>>0<=3)break;else{b=b+1|0;f=f+16|0}}j=j+m|0;f=p}else{e=f;f=g}do if(f){a=j+1|0;j=c[r+((d[j>>0]|0)<<2)>>2]|0;if((f|0)==2)t=10;else if((f|0)!=1)if((f|0)==3){c[e>>2]=c[j>>2];e=e+4|0;j=j+4|0;t=10}else{j=a;break}if((t|0)==10){t=0;c[e>>2]=c[j>>2];e=e+4|0;j=j+4|0}c[e>>2]=c[j>>2];j=a;e=e+4|0}while(0);if(!h)break;else{f=e+(k<<2)|0;j=j+n|0}}i=s;return}function zN(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;r=c[a+64>>2]|0;n=(j|0)/8|0;if(!h){i=s;return}o=g>>>0>7;p=g+-8|0;m=p>>>3;q=m<<3;p=p-q|0;q=q+8|0;m=m+1|0;e=b;j=l;while(1){h=h+-1|0;if(o){b=e+(q<<2)|0;a=j;f=g;while(1){l=c[r+((d[a>>0]|0)<<2)>>2]|0;c[e>>2]=c[l>>2];c[e+4>>2]=c[l+4>>2];c[e+8>>2]=c[l+8>>2];c[e+12>>2]=c[l+12>>2];c[e+16>>2]=c[l+16>>2];c[e+20>>2]=c[l+20>>2];c[e+24>>2]=c[l+24>>2];c[e+28>>2]=c[l+28>>2];f=f+-8|0;if(f>>>0<=7)break;else{a=a+1|0;e=e+32|0}}e=b;j=j+m|0;f=p}else f=g;a:do if(f){a=j+1|0;j=c[r+((d[j>>0]|0)<<2)>>2]|0;switch(f|0){case 1:break;case 5:{t=11;break}case 7:{c[e>>2]=c[j>>2];e=e+4|0;j=j+4|0;t=10;break}case 6:{t=10;break}case 3:{t=13;break}case 4:{t=12;break}case 2:{t=14;break}default:{j=a;break a}}if((t|0)==10){c[e>>2]=c[j>>2];e=e+4|0;j=j+4|0;t=11}if((t|0)==11){c[e>>2]=c[j>>2];e=e+4|0;j=j+4|0;t=12}if((t|0)==12){c[e>>2]=c[j>>2];e=e+4|0;j=j+4|0;t=13}if((t|0)==13){c[e>>2]=c[j>>2];e=e+4|0;j=j+4|0;t=14}if((t|0)==14){t=0;c[e>>2]=c[j>>2];e=e+4|0;j=j+4|0}c[e>>2]=c[j>>2];j=a;e=e+4|0}while(0);if(!h)break;else{e=e+(k<<2)|0;j=j+n|0}}i=s;return}function AN(a,b,d,f,g,h,j,k,l){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0;q=i;p=e[a+26>>1]|0;m=c[a+60>>2]|0;if(!h){i=q;return}n=(g|0)==0;o=(ea(p,g)|0)<<1;f=b;b=l;while(1){h=h+-1|0;if(n)d=b;else{d=b+o|0;a=g;l=f;while(1){a=a+-1|0;c[l>>2]=c[c[m+((e[b>>1]|0)>>>8<<2)>>2]>>2];if(!a)break;else{l=l+4|0;b=b+(p<<1)|0}}f=f+(g<<2)|0}if(!h)break;else{f=f+(k<<2)|0;b=d+j|0}}i=q;return}function BN(a,b,f,g,h,j,k,l,m){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0;r=i;q=e[a+26>>1]|0;n=c[a+60>>2]|0;if(!j){i=r;return}o=(h|0)==0;p=ea(q,h)|0;g=b;a=m;while(1){j=j+-1|0;if(o)f=a;else{f=a+p|0;m=h;b=g;while(1){m=m+-1|0;c[b>>2]=((d[a+1>>0]|0)<<24|16777215)&c[c[n+((d[a>>0]|0)<<2)>>2]>>2];if(!m)break;else{a=a+q|0;b=b+4|0}}g=g+(h<<2)|0}if(!j)break;else{g=g+(l<<2)|0;a=f+k|0}}i=r;return}function CN(a,b,f,g,h,j,k,l,m){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0;r=i;q=e[a+26>>1]|0;n=c[a+60>>2]|0;if(!j){i=r;return}o=(h|0)==0;p=ea(q,h)|0;g=b;a=m;while(1){j=j+-1|0;if(o)f=a;else{f=a+p|0;m=h;b=g;while(1){m=m+-1|0;c[b>>2]=c[c[n+((d[a>>0]|0)<<2)>>2]>>2];if(!m)break;else{a=a+q|0;b=b+4|0}}g=g+(h<<2)|0}if(!j)break;else{g=g+(l<<2)|0;a=f+k|0}}i=r;return}function DN(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;r=c[a+60>>2]|0;n=(j|0)/2|0;if(!h){i=s;return}o=g>>>0>1;p=g+-2|0;m=p>>>1;q=m<<1;p=p-q|0;q=q+2|0;m=m+1|0;f=b;j=l;while(1){h=h+-1|0;if(o){e=f+(q<<2)|0;b=j;a=g;while(1){l=c[r+((d[b>>0]|0)<<2)>>2]|0;c[f>>2]=c[l>>2];c[f+4>>2]=c[l+4>>2];a=a+-2|0;if(a>>>0<=1)break;else{b=b+1|0;f=f+8|0}}j=j+m|0;f=p}else{e=f;f=g}if(f){c[e>>2]=c[c[r+((d[j>>0]|0)<<2)>>2]>>2];e=e+4|0;j=j+1|0}if(!h)break;else{f=e+(k<<2)|0;j=j+n|0}}i=s;return}function EN(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;r=c[a+60>>2]|0;n=(j|0)/4|0;if(!h){i=s;return}o=g>>>0>3;p=g+-4|0;m=p>>>2;q=m<<2;p=p-q|0;q=q+4|0;m=m+1|0;f=b;j=l;while(1){h=h+-1|0;if(o){e=f+(q<<2)|0;b=j;a=g;while(1){l=c[r+((d[b>>0]|0)<<2)>>2]|0;c[f>>2]=c[l>>2];c[f+4>>2]=c[l+4>>2];c[f+8>>2]=c[l+8>>2];c[f+12>>2]=c[l+12>>2];a=a+-4|0;if(a>>>0<=3)break;else{b=b+1|0;f=f+16|0}}j=j+m|0;f=p}else{e=f;f=g}do if(f){a=j+1|0;j=c[r+((d[j>>0]|0)<<2)>>2]|0;if((f|0)!=1)if((f|0)==2)t=10;else if((f|0)==3){c[e>>2]=c[j>>2];e=e+4|0;j=j+4|0;t=10}else{j=a;break}if((t|0)==10){t=0;c[e>>2]=c[j>>2];e=e+4|0;j=j+4|0}c[e>>2]=c[j>>2];j=a;e=e+4|0}while(0);if(!h)break;else{f=e+(k<<2)|0;j=j+n|0}}i=s;return}function FN(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;r=c[a+60>>2]|0;n=(j|0)/8|0;if(!h){i=s;return}o=g>>>0>7;p=g+-8|0;m=p>>>3;q=m<<3;p=p-q|0;q=q+8|0;m=m+1|0;e=b;j=l;while(1){h=h+-1|0;if(o){b=e+(q<<2)|0;a=j;f=g;while(1){l=c[r+((d[a>>0]|0)<<2)>>2]|0;c[e>>2]=c[l>>2];c[e+4>>2]=c[l+4>>2];c[e+8>>2]=c[l+8>>2];c[e+12>>2]=c[l+12>>2];c[e+16>>2]=c[l+16>>2];c[e+20>>2]=c[l+20>>2];c[e+24>>2]=c[l+24>>2];c[e+28>>2]=c[l+28>>2];f=f+-8|0;if(f>>>0<=7)break;else{a=a+1|0;e=e+32|0}}e=b;j=j+m|0;f=p}else f=g;a:do if(f){a=j+1|0;j=c[r+((d[j>>0]|0)<<2)>>2]|0;switch(f|0){case 5:{t=11;break}case 3:{t=13;break}case 1:break;case 6:{t=10;break}case 2:{t=14;break}case 7:{c[e>>2]=c[j>>2];e=e+4|0;j=j+4|0;t=10;break}case 4:{t=12;break}default:{j=a;break a}}if((t|0)==10){c[e>>2]=c[j>>2];e=e+4|0;j=j+4|0;t=11}if((t|0)==11){c[e>>2]=c[j>>2];e=e+4|0;j=j+4|0;t=12}if((t|0)==12){c[e>>2]=c[j>>2];e=e+4|0;j=j+4|0;t=13}if((t|0)==13){c[e>>2]=c[j>>2];e=e+4|0;j=j+4|0;t=14}if((t|0)==14){t=0;c[e>>2]=c[j>>2];e=e+4|0;j=j+4|0}c[e>>2]=c[j>>2];j=a;e=e+4|0}while(0);if(!h)break;else{e=e+(k<<2)|0;j=j+n|0}}i=s;return}function GN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;f=g;d=g+8|0;e=g+4|0;b=a+68|0;if((c[b>>2]|0)==0?(h=JK(6168)|0,c[b>>2]=h,(h|0)==0):0){Dw(c[(c[a>>2]|0)+628>>2]|0,224264,224288,f);h=0;i=g;return h|0}h=c[a>>2]|0;c[f>>2]=d;Cv(h,529,f)|0;h=c[a>>2]|0;c[f>>2]=e;Cv(h,532,f)|0;h=(Jv(c[b>>2]|0,c[d>>2]|0,c[e>>2]|0)|0)>>>31^1;i=g;return h|0}function HN(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0;hb=i;i=i+384|0;_=hb+380|0;K=hb+376|0;u=hb+372|0;$=hb+368|0;O=hb+364|0;B=hb+360|0;ka=hb+356|0;Y=hb+352|0;I=hb+348|0;na=hb+344|0;Z=hb+340|0;J=hb+336|0;aa=hb+332|0;L=hb+328|0;v=hb+324|0;ba=hb+320|0;M=hb+316|0;w=hb+312|0;ca=hb+308|0;N=hb+304|0;x=hb+300|0;da=hb+296|0;P=hb+292|0;y=hb+288|0;ea=hb+284|0;Q=hb+280|0;z=hb+276|0;fa=hb+272|0;R=hb+268|0;A=hb+264|0;ga=hb+260|0;S=hb+256|0;C=hb+252|0;ha=hb+248|0;T=hb+244|0;D=hb+240|0;ia=hb+236|0;U=hb+232|0;E=hb+228|0;ja=hb+224|0;V=hb+220|0;F=hb+216|0;la=hb+212|0;W=hb+208|0;G=hb+204|0;ma=hb+200|0;X=hb+196|0;H=hb+192|0;Qa=hb+188|0;Aa=hb+88|0;q=hb+84|0;Ra=hb+80|0;Ba=hb+76|0;r=hb+72|0;Sa=hb+68|0;Ca=hb+64|0;s=hb+60|0;Ta=hb+56|0;Da=hb+52|0;t=hb+48|0;Ua=hb+44|0;Ea=hb+16|0;oa=hb;Va=hb+4|0;Fa=hb+8|0;pa=hb+12|0;Wa=hb+20|0;Ga=hb+24|0;qa=hb+28|0;Xa=hb+32|0;Ha=hb+36|0;ra=hb+40|0;Ya=hb+92|0;Ia=hb+96|0;sa=hb+100|0;Za=hb+104|0;Ja=hb+108|0;ta=hb+112|0;_a=hb+116|0;Ka=hb+120|0;ua=hb+124|0;$a=hb+128|0;La=hb+132|0;va=hb+136|0;ab=hb+140|0;Ma=hb+144|0;wa=hb+148|0;bb=hb+152|0;Na=hb+156|0;xa=hb+160|0;cb=hb+164|0;Oa=hb+168|0;ya=hb+172|0;db=hb+176|0;Pa=hb+180|0;za=hb+184|0;gb=k+g|0;m=b+(gb<<2)|0;n=gb<<1;o=b+(n<<2)|0;n=b+(gb+n<<2)|0;gb=(k<<2)+(g*3|0)|0;fb=(j*18|0)/4|0;if(!((h|g)&3)){if(h>>>0<=3){i=hb;return}t=g>>>2;q=a+68|0;r=t<<2;s=t*18|0;p=b;k=m;while(1){e=t;f=p;b=l;m=k;j=o;a=n;while(1){g=d[b+16>>0]|0;eb=d[b+17>>0]|0;Iv(c[q>>2]|0,d[b>>0]|0,g,eb,_,K,u);c[f>>2]=c[_>>2]|c[K>>2]<<8|c[u>>2]<<16|-16777216;Iv(c[q>>2]|0,d[b+1>>0]|0,g,eb,$,O,B);c[f+4>>2]=c[$>>2]|c[O>>2]<<8|c[B>>2]<<16|-16777216;Iv(c[q>>2]|0,d[b+2>>0]|0,g,eb,ka,Y,I);c[f+8>>2]=c[ka>>2]|c[Y>>2]<<8|c[I>>2]<<16|-16777216;Iv(c[q>>2]|0,d[b+3>>0]|0,g,eb,na,Z,J);c[f+12>>2]=c[na>>2]|c[Z>>2]<<8|c[J>>2]<<16|-16777216;Iv(c[q>>2]|0,d[b+4>>0]|0,g,eb,aa,L,v);c[m>>2]=c[aa>>2]|c[L>>2]<<8|c[v>>2]<<16|-16777216;Iv(c[q>>2]|0,d[b+5>>0]|0,g,eb,ba,M,w);c[m+4>>2]=c[ba>>2]|c[M>>2]<<8|c[w>>2]<<16|-16777216;Iv(c[q>>2]|0,d[b+6>>0]|0,g,eb,ca,N,x);c[m+8>>2]=c[ca>>2]|c[N>>2]<<8|c[x>>2]<<16|-16777216;Iv(c[q>>2]|0,d[b+7>>0]|0,g,eb,da,P,y);c[m+12>>2]=c[da>>2]|c[P>>2]<<8|c[y>>2]<<16|-16777216;Iv(c[q>>2]|0,d[b+8>>0]|0,g,eb,ea,Q,z);c[j>>2]=c[ea>>2]|c[Q>>2]<<8|c[z>>2]<<16|-16777216;Iv(c[q>>2]|0,d[b+9>>0]|0,g,eb,fa,R,A);c[j+4>>2]=c[fa>>2]|c[R>>2]<<8|c[A>>2]<<16|-16777216;Iv(c[q>>2]|0,d[b+10>>0]|0,g,eb,ga,S,C);c[j+8>>2]=c[ga>>2]|c[S>>2]<<8|c[C>>2]<<16|-16777216;Iv(c[q>>2]|0,d[b+11>>0]|0,g,eb,ha,T,D);c[j+12>>2]=c[ha>>2]|c[T>>2]<<8|c[D>>2]<<16|-16777216;Iv(c[q>>2]|0,d[b+12>>0]|0,g,eb,ia,U,E);c[a>>2]=c[ia>>2]|c[U>>2]<<8|c[E>>2]<<16|-16777216;Iv(c[q>>2]|0,d[b+13>>0]|0,g,eb,ja,V,F);c[a+4>>2]=c[ja>>2]|c[V>>2]<<8|c[F>>2]<<16|-16777216;Iv(c[q>>2]|0,d[b+14>>0]|0,g,eb,la,W,G);c[a+8>>2]=c[la>>2]|c[W>>2]<<8|c[G>>2]<<16|-16777216;Iv(c[q>>2]|0,d[b+15>>0]|0,g,eb,ma,X,H);c[a+12>>2]=c[ma>>2]|c[X>>2]<<8|c[H>>2]<<16|-16777216;e=e+-1|0;if(!e)break;else{f=f+16|0;b=b+18|0;m=m+16|0;j=j+16|0;a=a+16|0}}h=h+-4|0;if(h>>>0<=3)break;else{p=p+(r+gb<<2)|0;l=l+(s+fb)|0;k=k+(r+gb<<2)|0;o=o+(r+gb<<2)|0;n=n+(r+gb<<2)|0}}i=hb;return}if(!h){i=hb;return}p=(g|0)==0;a=a+68|0;f=l;while(1){a:do if(p)e=n;else{e=g;k=b;j=f;while(1){f=d[j+16>>0]|0;b=d[j+17>>0]|0;if((e|0)==2)eb=21;else if((e|0)==3)eb=16;else if((e|0)!=1){if((h|0)==3)eb=13;else if((h|0)==2)eb=14;else if((h|0)!=1){Iv(c[a>>2]|0,d[j+15>>0]|0,f,b,Qa,Aa,q);c[n+12>>2]=c[Qa>>2]|c[Aa>>2]<<8|c[q>>2]<<16|-16777216;eb=13}if((eb|0)==13){Iv(c[a>>2]|0,d[j+11>>0]|0,f,b,Ra,Ba,r);c[o+12>>2]=c[Ra>>2]|c[Ba>>2]<<8|c[r>>2]<<16|-16777216;eb=14}if((eb|0)==14){Iv(c[a>>2]|0,d[j+7>>0]|0,f,b,Sa,Ca,s);c[m+12>>2]=c[Sa>>2]|c[Ca>>2]<<8|c[s>>2]<<16|-16777216}Iv(c[a>>2]|0,d[j+3>>0]|0,f,b,Ta,Da,t);c[k+12>>2]=c[Ta>>2]|c[Da>>2]<<8|c[t>>2]<<16|-16777216;eb=16}if((eb|0)==16){eb=0;if((h|0)==2)eb=19;else if((h|0)==3)eb=18;else if((h|0)!=1){Iv(c[a>>2]|0,d[j+14>>0]|0,f,b,Ua,Ea,oa);c[n+8>>2]=c[Ua>>2]|c[Ea>>2]<<8|c[oa>>2]<<16|-16777216;eb=18}if((eb|0)==18){Iv(c[a>>2]|0,d[j+10>>0]|0,f,b,Va,Fa,pa);c[o+8>>2]=c[Va>>2]|c[Fa>>2]<<8|c[pa>>2]<<16|-16777216;eb=19}if((eb|0)==19){Iv(c[a>>2]|0,d[j+6>>0]|0,f,b,Wa,Ga,qa);c[m+8>>2]=c[Wa>>2]|c[Ga>>2]<<8|c[qa>>2]<<16|-16777216}Iv(c[a>>2]|0,d[j+2>>0]|0,f,b,Xa,Ha,ra);c[k+8>>2]=c[Xa>>2]|c[Ha>>2]<<8|c[ra>>2]<<16|-16777216;eb=21}if((eb|0)==21){eb=0;if((h|0)==2)eb=24;else if((h|0)==3)eb=23;else if((h|0)!=1){Iv(c[a>>2]|0,d[j+13>>0]|0,f,b,Ya,Ia,sa);c[n+4>>2]=c[Ya>>2]|c[Ia>>2]<<8|c[sa>>2]<<16|-16777216;eb=23}if((eb|0)==23){Iv(c[a>>2]|0,d[j+9>>0]|0,f,b,Za,Ja,ta);c[o+4>>2]=c[Za>>2]|c[Ja>>2]<<8|c[ta>>2]<<16|-16777216;eb=24}if((eb|0)==24){eb=0;Iv(c[a>>2]|0,d[j+5>>0]|0,f,b,_a,Ka,ua);c[m+4>>2]=c[_a>>2]|c[Ka>>2]<<8|c[ua>>2]<<16|-16777216}Iv(c[a>>2]|0,d[j+1>>0]|0,f,b,$a,La,va);c[k+4>>2]=c[$a>>2]|c[La>>2]<<8|c[va>>2]<<16|-16777216}if((h|0)==2)eb=29;else if((h|0)==3)eb=28;else if((h|0)!=1){Iv(c[a>>2]|0,d[j+12>>0]|0,f,b,ab,Ma,wa);c[n>>2]=c[ab>>2]|c[Ma>>2]<<8|c[wa>>2]<<16|-16777216;eb=28}if((eb|0)==28){Iv(c[a>>2]|0,d[j+8>>0]|0,f,b,bb,Na,xa);c[o>>2]=c[bb>>2]|c[Na>>2]<<8|c[xa>>2]<<16|-16777216;eb=29}if((eb|0)==29){eb=0;Iv(c[a>>2]|0,d[j+4>>0]|0,f,b,cb,Oa,ya);c[m>>2]=c[cb>>2]|c[Oa>>2]<<8|c[ya>>2]<<16|-16777216}Iv(c[a>>2]|0,d[j>>0]|0,f,b,db,Pa,za);c[k>>2]=c[db>>2]|c[Pa>>2]<<8|c[za>>2]<<16|-16777216;if(e>>>0<4)break;b=k+16|0;m=m+16|0;o=o+16|0;n=n+16|0;e=e+-4|0;f=j+18|0;if(!e){e=n;break a}else{k=b;j=f}}b=k+(e<<2)|0;f=j+18|0;m=m+(e<<2)|0;o=o+(e<<2)|0;e=n+(e<<2)|0}while(0);if(h>>>0<5){eb=35;break}h=h+-4|0;if(!h){eb=35;break}else{b=b+(gb<<2)|0;f=f+fb|0;m=m+(gb<<2)|0;o=o+(gb<<2)|0;n=e+(gb<<2)|0}}if((eb|0)==35){i=hb;return}}function IN(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;la=i;i=i+192|0;G=la+188|0;y=la+184|0;q=la+180|0;H=la+176|0;C=la+172|0;v=la+168|0;M=la+164|0;E=la+160|0;w=la+156|0;N=la+152|0;F=la+148|0;x=la+144|0;I=la+140|0;z=la+136|0;r=la+132|0;J=la+128|0;A=la+124|0;s=la+120|0;K=la+116|0;B=la+112|0;t=la+108|0;L=la+104|0;D=la+100|0;u=la+96|0;aa=la+92|0;U=la+40|0;o=la+36|0;ba=la+32|0;V=la+28|0;p=la+24|0;ca=la+20|0;W=la+12|0;O=la+8|0;da=la+4|0;X=la;P=la+16|0;ea=la+44|0;Y=la+48|0;Q=la+52|0;fa=la+56|0;Z=la+60|0;R=la+64|0;ga=la+68|0;_=la+72|0;S=la+76|0;ha=la+80|0;$=la+84|0;T=la+88|0;e=b+(k+g<<2)|0;ka=(k<<1)+g|0;ja=(j*10|0)/4|0;if(!(h&1|g&3)){if(h>>>0<=1){i=la;return}p=g>>>2;j=a+68|0;n=p<<2;o=p*10|0;k=b;a=l;while(1){f=p;b=k;l=a;m=e;while(1){_=d[l+8>>0]|0;g=d[l+9>>0]|0;Iv(c[j>>2]|0,d[l>>0]|0,_,g,G,y,q);c[b>>2]=c[G>>2]|c[y>>2]<<8|c[q>>2]<<16|-16777216;Iv(c[j>>2]|0,d[l+1>>0]|0,_,g,H,C,v);c[b+4>>2]=c[H>>2]|c[C>>2]<<8|c[v>>2]<<16|-16777216;Iv(c[j>>2]|0,d[l+2>>0]|0,_,g,M,E,w);c[b+8>>2]=c[M>>2]|c[E>>2]<<8|c[w>>2]<<16|-16777216;Iv(c[j>>2]|0,d[l+3>>0]|0,_,g,N,F,x);c[b+12>>2]=c[N>>2]|c[F>>2]<<8|c[x>>2]<<16|-16777216;Iv(c[j>>2]|0,d[l+4>>0]|0,_,g,I,z,r);c[m>>2]=c[I>>2]|c[z>>2]<<8|c[r>>2]<<16|-16777216;Iv(c[j>>2]|0,d[l+5>>0]|0,_,g,J,A,s);c[m+4>>2]=c[J>>2]|c[A>>2]<<8|c[s>>2]<<16|-16777216;Iv(c[j>>2]|0,d[l+6>>0]|0,_,g,K,B,t);c[m+8>>2]=c[K>>2]|c[B>>2]<<8|c[t>>2]<<16|-16777216;Iv(c[j>>2]|0,d[l+7>>0]|0,_,g,L,D,u);c[m+12>>2]=c[L>>2]|c[D>>2]<<8|c[u>>2]<<16|-16777216;f=f+-1|0;if(!f)break;else{b=b+16|0;l=l+10|0;m=m+16|0}}h=h+-2|0;if(h>>>0<=1)break;else{k=k+(n+ka<<2)|0;a=a+(o+ja)|0;e=e+(n+ka<<2)|0}}i=la;return}if(!h){i=la;return}n=(g|0)==0;j=a+68|0;while(1){a:do if(!n){k=(h|0)==1;f=g;a=b;while(1){b=d[l+8>>0]|0;m=d[l+9>>0]|0;if((f|0)==2)ia=18;else if((f|0)==3)ia=15;else if((f|0)!=1){if(!k){Iv(c[j>>2]|0,d[l+7>>0]|0,b,m,aa,U,o);c[e+12>>2]=c[aa>>2]|c[U>>2]<<8|c[o>>2]<<16|-16777216}Iv(c[j>>2]|0,d[l+3>>0]|0,b,m,ba,V,p);c[a+12>>2]=c[ba>>2]|c[V>>2]<<8|c[p>>2]<<16|-16777216;ia=15}if((ia|0)==15){if(!k){Iv(c[j>>2]|0,d[l+6>>0]|0,b,m,ca,W,O);c[e+8>>2]=c[ca>>2]|c[W>>2]<<8|c[O>>2]<<16|-16777216}Iv(c[j>>2]|0,d[l+2>>0]|0,b,m,da,X,P);c[a+8>>2]=c[da>>2]|c[X>>2]<<8|c[P>>2]<<16|-16777216;ia=18}if((ia|0)==18){ia=0;if(!k){Iv(c[j>>2]|0,d[l+5>>0]|0,b,m,ea,Y,Q);c[e+4>>2]=c[ea>>2]|c[Y>>2]<<8|c[Q>>2]<<16|-16777216}Iv(c[j>>2]|0,d[l+1>>0]|0,b,m,fa,Z,R);c[a+4>>2]=c[fa>>2]|c[Z>>2]<<8|c[R>>2]<<16|-16777216}if(!k){Iv(c[j>>2]|0,d[l+4>>0]|0,b,m,ga,_,S);c[e>>2]=c[ga>>2]|c[_>>2]<<8|c[S>>2]<<16|-16777216}Iv(c[j>>2]|0,d[l>>0]|0,b,m,ha,$,T);c[a>>2]=c[ha>>2]|c[$>>2]<<8|c[T>>2]<<16|-16777216;if(f>>>0<4)break;b=a+16|0;e=e+16|0;f=f+-4|0;l=l+10|0;if(!f)break a;else a=b}b=a+(f<<2)|0;l=l+10|0;e=e+(f<<2)|0}while(0);if(h>>>0<3){ia=28;break}h=h+-2|0;if(!h){ia=28;break}else{l=l+ja|0;b=b+(ka<<2)|0;e=e+(ka<<2)|0}}if((ia|0)==28){i=la;return}}function JN(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;O=i;i=i+96|0;H=O+80|0;A=O+76|0;t=O+72|0;I=O+68|0;E=O+64|0;x=O+60|0;M=O+56|0;F=O+52|0;y=O+48|0;N=O+44|0;G=O+40|0;z=O+12|0;J=O;B=O+4|0;u=O+8|0;K=O+16|0;C=O+20|0;v=O+24|0;L=O+28|0;D=O+32|0;w=O+36|0;r=g>>>2;s=(r|0)==0;p=g&3;q=(p|0)==0;m=a+68|0;n=r*6|0;o=r<<2;e=b;a=l;while(1){if(s)f=a;else{f=a+n|0;g=r;b=e;while(1){Q=d[a+4>>0]|0;l=d[a+5>>0]|0;Iv(c[m>>2]|0,d[a>>0]|0,Q,l,H,A,t);c[b>>2]=c[H>>2]|c[A>>2]<<8|c[t>>2]<<16|-16777216;Iv(c[m>>2]|0,d[a+1>>0]|0,Q,l,I,E,x);c[b+4>>2]=c[I>>2]|c[E>>2]<<8|c[x>>2]<<16|-16777216;Iv(c[m>>2]|0,d[a+2>>0]|0,Q,l,M,F,y);c[b+8>>2]=c[M>>2]|c[F>>2]<<8|c[y>>2]<<16|-16777216;Iv(c[m>>2]|0,d[a+3>>0]|0,Q,l,N,G,z);c[b+12>>2]=c[N>>2]|c[G>>2]<<8|c[z>>2]<<16|-16777216;g=g+-1|0;if(!g)break;else{b=b+16|0;a=a+6|0}}e=e+(o<<2)|0}if(!q){a=d[f+4>>0]|0;g=d[f+5>>0]|0;if((p|0)==1)P=10;else if((p|0)==3){Iv(c[m>>2]|0,d[f+2>>0]|0,a,g,J,B,u);c[e+8>>2]=c[J>>2]|c[B>>2]<<8|c[u>>2]<<16|-16777216;P=9}else if((p|0)==2)P=9;if((P|0)==9){Iv(c[m>>2]|0,d[f+1>>0]|0,a,g,K,C,v);c[e+4>>2]=c[K>>2]|c[C>>2]<<8|c[v>>2]<<16|-16777216;P=10}if((P|0)==10){P=0;Iv(c[m>>2]|0,d[f>>0]|0,a,g,L,D,w);c[e>>2]=c[L>>2]|c[D>>2]<<8|c[w>>2]<<16|-16777216}e=e+(p<<2)|0;f=f+6|0}h=h+-1|0;if(!h)break;else{e=e+(k<<2)|0;a=f+j|0}}i=O;return}function KN(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;W=i;i=i+112|0;H=W+104|0;B=W+100|0;v=W+96|0;I=W+92|0;E=W+88|0;y=W+84|0;L=W+80|0;F=W+76|0;z=W+72|0;M=W+68|0;G=W+64|0;A=W+60|0;J=W+56|0;C=W+52|0;w=W+20|0;K=W;D=W+4|0;x=W+8|0;R=W+12|0;P=W+16|0;N=W+24|0;S=W+28|0;Q=W+32|0;O=W+36|0;V=W+40|0;U=W+44|0;T=W+48|0;u=(k<<1)+g|0;r=((j|0)/2|0)*6|0;if(h>>>0>1){s=g>>>0>1;t=a+68|0;o=g+-2|0;p=o>>>1;q=p<<1;o=o-q|0;p=(p*6|0)+6|0;q=q+2|0;e=b;m=h;b=b+(k+g<<2)|0;while(1){if(s){j=b+(q<<2)|0;f=g;k=e;n=l;while(1){Y=d[n+4>>0]|0;X=d[n+5>>0]|0;Iv(c[t>>2]|0,d[n>>0]|0,Y,X,H,B,v);c[k>>2]=c[H>>2]|c[B>>2]<<8|c[v>>2]<<16|-16777216;Iv(c[t>>2]|0,d[n+1>>0]|0,Y,X,I,E,y);c[k+4>>2]=c[I>>2]|c[E>>2]<<8|c[y>>2]<<16|-16777216;Iv(c[t>>2]|0,d[n+2>>0]|0,Y,X,L,F,z);c[b>>2]=c[L>>2]|c[F>>2]<<8|c[z>>2]<<16|-16777216;Iv(c[t>>2]|0,d[n+3>>0]|0,Y,X,M,G,A);c[b+4>>2]=c[M>>2]|c[G>>2]<<8|c[A>>2]<<16|-16777216;f=f+-2|0;if(f>>>0<=1)break;else{k=k+8|0;n=n+6|0;b=b+8|0}}f=o;e=e+(q<<2)|0;l=l+p|0}else{f=g;j=b}if((f|0)==1){X=d[l+4>>0]|0;Y=d[l+5>>0]|0;Iv(c[t>>2]|0,d[l>>0]|0,X,Y,J,C,w);c[e>>2]=c[J>>2]|c[C>>2]<<8|c[w>>2]<<16|-16777216;Iv(c[t>>2]|0,d[l+2>>0]|0,X,Y,K,D,x);c[j>>2]=c[K>>2]|c[D>>2]<<8|c[x>>2]<<16|-16777216;e=e+4|0;l=l+6|0;j=j+4|0}e=e+(u<<2)|0;l=l+r|0;m=m+-2|0;if(m>>>0<=1)break;else b=j+(u<<2)|0}f=h&1}else{e=b;f=h}if((f|0)!=1){i=W;return}if(g>>>0>1){n=a+68|0;o=g+-2|0;p=o>>>1;j=p<<1;p=(p*6|0)+6|0;k=j+2|0;f=g;b=e;m=l;while(1){M=d[m+4>>0]|0;Y=d[m+5>>0]|0;Iv(c[n>>2]|0,d[m>>0]|0,M,Y,R,P,N);c[b>>2]=c[R>>2]|c[P>>2]<<8|c[N>>2]<<16|-16777216;Iv(c[n>>2]|0,d[m+1>>0]|0,M,Y,S,Q,O);c[b+4>>2]=c[S>>2]|c[Q>>2]<<8|c[O>>2]<<16|-16777216;f=f+-2|0;if(f>>>0<=1)break;else{b=b+8|0;m=m+6|0}}f=o-j|0;e=e+(k<<2)|0;l=l+p|0}else f=g;if((f|0)!=1){i=W;return}Iv(c[a+68>>2]|0,d[l>>0]|0,d[l+4>>0]|0,d[l+5>>0]|0,V,U,T);c[e>>2]=c[V>>2]|c[U>>2]<<8|c[T>>2]<<16|-16777216;i=W;return}function LN(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+48|0;z=C+32|0;w=C+28|0;t=C+24|0;A=C+20|0;x=C+16|0;u=C+8|0;B=C+4|0;y=C;v=C+12|0;q=(j<<2|0)/2|0;r=g>>>1;s=(r|0)==0;p=(g&1|0)==0;m=a+68|0;n=r<<2;o=r<<1;f=b;g=l;while(1){if(s)e=g;else{e=g+n|0;a=r;j=f;while(1){l=d[g+2>>0]|0;b=d[g+3>>0]|0;Iv(c[m>>2]|0,d[g>>0]|0,l,b,z,w,t);c[j>>2]=c[z>>2]|c[w>>2]<<8|c[t>>2]<<16|-16777216;Iv(c[m>>2]|0,d[g+1>>0]|0,l,b,A,x,u);c[j+4>>2]=c[A>>2]|c[x>>2]<<8|c[u>>2]<<16|-16777216;a=a+-1|0;if(!a)break;else{g=g+4|0;j=j+8|0}}f=f+(o<<2)|0}if(!p){Iv(c[m>>2]|0,d[e>>0]|0,d[e+2>>0]|0,d[e+3>>0]|0,B,y,v);c[f>>2]=c[B>>2]|c[y>>2]<<8|c[v>>2]<<16|-16777216;f=f+4|0;e=e+4|0}h=h+-1|0;if(!h)break;else{f=f+(k<<2)|0;g=e+q|0}}i=C;return}function MN(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;H=i;i=i+48|0;B=H+32|0;z=H+28|0;x=H+24|0;C=H+20|0;A=H+16|0;y=H+8|0;G=H+4|0;F=H;E=H+12|0;if(h>>>0>1){m=k+g|0;D=(j|0)/2|0;r=D<<2;s=a+68|0;q=g+1+(k<<1)|0;t=g+-1|0;u=g<<2;w=h+-2|0;p=w>>>1;v=p<<1;D=D<<2;D=(ea(p,D+u|0)|0)+D+u|0;p=((ea(p,m)|0)<<1)+(k<<1)+(g<<1)|0;o=b;e=l;m=b+(m<<2)|0;while(1){f=g;k=o;j=e;n=m;while(1){J=d[j+2>>0]|0;I=d[j+3>>0]|0;Iv(c[s>>2]|0,d[j>>0]|0,J,I,B,z,x);c[k>>2]=c[B>>2]|c[z>>2]<<8|c[x>>2]<<16|-16777216;Iv(c[s>>2]|0,d[j+1>>0]|0,J,I,C,A,y);c[n>>2]=c[C>>2]|c[A>>2]<<8|c[y>>2]<<16|-16777216;f=f+-1|0;if(!f)break;else{k=k+4|0;j=j+4|0;n=n+4|0}}h=h+-2|0;if(h>>>0<=1)break;else{o=o+(t+q<<2)|0;e=e+(u+r)|0;m=m+(t+q<<2)|0}}b=b+(p<<2)|0;f=w-v|0;l=l+D|0}else f=h;if((f|0)!=1){i=H;return}e=a+68|0;f=g;while(1){Iv(c[e>>2]|0,d[l>>0]|0,d[l+2>>0]|0,d[l+3>>0]|0,G,F,E);c[b>>2]=c[G>>2]|c[F>>2]<<8|c[E>>2]<<16|-16777216;f=f+-1|0;if(!f)break;else{b=b+4|0;l=l+4|0}}i=H;return}function NN(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;q=r+8|0;p=r;o=r+4|0;n=a+68|0;m=b;f=h;while(1){e=g;a=m;b=l;while(1){Iv(c[n>>2]|0,d[b>>0]|0,d[b+1>>0]|0,d[b+2>>0]|0,q,p,o);c[a>>2]=c[q>>2]|c[p>>2]<<8|c[o>>2]<<16|-16777216;e=e+-1|0;if(!e)break;else{a=a+4|0;b=b+3|0}}f=f+-1|0;if(!f)break;else{m=m+(g+k<<2)|0;l=l+((g+j|0)*3|0)|0}}i=r;return}function ON(b,e,f,h,j,k,l,m,n){b=b|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+32|0;s=y+20|0;t=y;u=y+4|0;x=y+8|0;w=y+12|0;v=y+16|0;q=l*3|0;if(!k){i=y;return}r=(j|0)==0;o=b+72|0;p=j*3|0;b=n;h=e;e=k;while(1){e=e+-1|0;if(r)f=b;else{f=b+p|0;l=j;n=h;while(1){l=l+-1|0;Fv(c[o>>2]|0,d[b>>0]|0,a[b+1>>0]|0,a[b+2>>0]|0,s,t,u);Gv(c[o>>2]|0,+g[s>>2],+g[t>>2],+g[u>>2],x,w,v);c[n>>2]=c[x>>2]|c[w>>2]<<8|c[v>>2]<<16|-16777216;if(!l)break;else{n=n+4|0;b=b+3|0}}h=h+(j<<2)|0}if(!e)break;else{b=f+q|0;h=h+(m<<2)|0}}i=y;return}function PN(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=i;i=i+16|0;k=L;J=L+8|0;I=L+4|0;F=c[a>>2]|0;G=c[a+52>>2]|0;h=c[a+12>>2]|0;j=Xx(F)|0;if((j|0)!=0?(H=(h|0)!=0,l=ea(H?4:3,j)|0,(l|0)!=0):0){K=JK(l)|0;if(!K){d=c[F+628>>2]|0;f=cx(F)|0;c[k>>2]=224520;Dw(d,f,224256,k);f=0;i=L;return f|0}MK(K,0,l);n=K+j|0;h=j<<1;m=K+h|0;if(H)E=K+(h+j)|0;else E=0;c[k>>2]=J;Zv(F,322,k)|0;c[k>>2]=I;Zv(F,323,k)|0;a:do switch(e[a+28>>1]|0){case 5:case 1:switch(b[a+30>>1]|0){case 6:case 2:{h=2;l=22;break a}case 8:case 4:{h=1;l=21;break a}case 7:case 3:{h=3;l=21;break a}default:{h=0;l=22;break a}}case 8:case 4:switch(b[a+30>>1]|0){case 6:case 2:{h=3;l=21;break a}case 7:case 3:{h=2;l=22;break a}case 5:case 1:{h=1;l=21;break a}default:{h=0;l=22;break a}}case 7:case 3:switch(b[a+30>>1]|0){case 8:case 4:{h=2;l=22;break a}case 5:case 1:{h=3;l=21;break a}case 6:case 2:{h=1;l=21;break a}default:{h=0;l=22;break a}}case 6:case 2:switch(b[a+30>>1]|0){case 5:case 1:{h=2;l=22;break a}case 8:case 4:{h=3;l=21;break a}case 7:case 3:{h=1;l=21;break a}default:{h=0;l=22;break a}}default:{h=0;l=22}}while(0);if((l|0)==21){C=1;D=0-((c[J>>2]|0)+f)|0;j=g+-1|0}else if((l|0)==22){C=0;D=f-(c[J>>2]|0)|0;j=0}B=e[a+32>>1]|0;if((B|0)==3|(B|0)==1|(B|0)==0){l=1;B=K;m=K}else{l=3;B=n}A=(g|0)==0;if(A)n=1;else{v=a+84|0;w=a+4|0;x=(f|0)==0;y=a+88|0;z=(l|0)==1;t=l&65535;n=1;u=0;s=j;while(1){r=c[I>>2]|0;l=c[v>>2]|0;r=r-(((l+u|0)>>>0)%(r>>>0)|0)|0;r=(r+u|0)>>>0>g>>>0?g-u|0:r;b:do if(!x){q=ea(s,f)|0;j=0;while(1){if((ox(F,K,(c[y>>2]|0)+j|0,l+u|0,0,0)|0)==-1?(c[w>>2]|0)!=0:0){n=0;break b}if(!z){if((ox(F,B,(c[y>>2]|0)+j|0,(c[v>>2]|0)+u|0,0,1)|0)==-1?(c[w>>2]|0)!=0:0){n=0;break b}if((ox(F,m,(c[y>>2]|0)+j|0,(c[v>>2]|0)+u|0,0,2)|0)==-1?(c[w>>2]|0)!=0:0){n=0;break b}}if((H?(ox(F,E,(c[y>>2]|0)+j|0,(c[v>>2]|0)+u|0,0,t)|0)==-1:0)?(c[w>>2]|0)!=0:0){n=0;break b}p=(((c[v>>2]|0)+u|0)>>>0)%((c[I>>2]|0)>>>0)|0;p=ea(Ux(F)|0,p)|0;k=c[J>>2]|0;if((k+j|0)>>>0>f>>>0){o=f-j|0;l=k-o|0;if(H)k=E+p|0;else k=0;Zd[G&15](a,d+(j+q<<2)|0,j,s,o,r,l,l+D|0,K+p|0,B+p|0,m+p|0,k)}else{if(H)l=E+p|0;else l=0;Zd[G&15](a,d+(j+q<<2)|0,j,s,k,r,0,D,K+p|0,B+p|0,m+p|0,l)}j=(c[J>>2]|0)+j|0;if(j>>>0>=f>>>0)break b;l=c[v>>2]|0}}while(0);u=r+u|0;if(u>>>0>=g>>>0)break;else s=(C?0-r|0:r)+s|0}}if(!((h&2|0)==0|A)){l=f+-1|0;m=0;do{h=ea(m,f)|0;j=l+h|0;if((h|0)<(j|0)){k=d+(h<<2)|0;h=d+(j<<2)|0;do{J=c[k>>2]|0;c[k>>2]=c[h>>2];c[h>>2]=J;k=k+4|0;h=h+-4|0}while(k>>>0>>0)}m=m+1|0}while((m|0)!=(g|0))}KK(K);f=n;i=L;return f|0}d=c[F+628>>2]|0;f=cx(F)|0;c[k>>2]=224552;Dw(d,f,224480,k);f=0;i=L;return f|0}function QN(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+16|0;m=G;E=G+4|0;B=c[a>>2]|0;C=c[a+52>>2]|0;o=c[a+16>>2]|0;h=c[a+12>>2]|0;j=Bx(B)|0;if((j|0)!=0?(D=(h|0)!=0,l=ea(D?4:3,j)|0,(l|0)!=0):0){F=JK(l)|0;if(!F){d=c[B+628>>2]|0;Dw(d,cx(B)|0,224520,m);d=0;i=G;return d|0}MK(F,0,l);l=F+j|0;h=j<<1;k=F+h|0;if(D)A=F+(h+j)|0;else A=0;a:do switch(e[a+28>>1]|0){case 7:case 3:switch(b[a+30>>1]|0){case 5:case 1:{h=3;n=21;break a}case 6:case 2:{h=1;n=21;break a}case 8:case 4:{h=2;y=0;z=0;p=0;break a}default:{h=0;y=0;z=0;p=0;break a}}case 6:case 2:switch(b[a+30>>1]|0){case 7:case 3:{h=1;n=21;break a}case 5:case 1:{h=2;y=0;z=0;p=0;break a}case 8:case 4:{h=3;n=21;break a}default:{h=0;y=0;z=0;p=0;break a}}case 5:case 1:switch(b[a+30>>1]|0){case 7:case 3:{h=3;n=21;break a}case 8:case 4:{h=1;n=21;break a}case 6:case 2:{h=2;y=0;z=0;p=0;break a}default:{h=0;y=0;z=0;p=0;break a}}case 8:case 4:switch(b[a+30>>1]|0){case 5:case 1:{h=1;n=21;break a}case 7:case 3:{h=2;y=0;z=0;p=0;break a}case 6:case 2:{h=3;n=21;break a}default:{h=0;y=0;z=0;p=0;break a}}default:{h=0;y=0;z=0;p=0}}while(0);if((n|0)==21){y=1;z=0-(f<<1)|0;p=g+-1|0}x=e[a+32>>1]|0;if((x|0)==3|(x|0)==1|(x|0)==0){j=1;l=F;k=F}else j=3;c[m>>2]=E;Cv(B,278,m)|0;w=Ex(B)|0;s=o>>>0>f>>>0?o-f|0:0;t=a+4|0;x=(g|0)==0;b:do if(x)n=1;else{u=a+84|0;v=(j|0)==1;q=j&65535;r=0;while(1){o=c[E>>2]|0;j=(c[u>>2]|0)+r|0;o=o-((j>>>0)%(o>>>0)|0)|0;o=(o+r|0)>>>0>g>>>0?g-r|0:o;m=wx(B,j,0)|0;if((lx(B,m,F,ea(((((c[u>>2]|0)+r|0)>>>0)%((c[E>>2]|0)>>>0)|0)+o|0,w)|0)|0)==-1?(c[t>>2]|0)!=0:0){n=0;break b}if(!v){m=wx(B,j,1)|0;if((lx(B,m,l,ea(((((c[u>>2]|0)+r|0)>>>0)%((c[E>>2]|0)>>>0)|0)+o|0,w)|0)|0)==-1?(c[t>>2]|0)!=0:0){n=0;break b}m=wx(B,j,2)|0;if((lx(B,m,k,ea(((((c[u>>2]|0)+r|0)>>>0)%((c[E>>2]|0)>>>0)|0)+o|0,w)|0)|0)==-1?(c[t>>2]|0)!=0:0){n=0;break b}}if((D?(m=wx(B,j,q)|0,(lx(B,m,A,ea(((((c[u>>2]|0)+r|0)>>>0)%((c[E>>2]|0)>>>0)|0)+o|0,w)|0)|0)==-1):0)?(c[t>>2]|0)!=0:0){n=0;break b}j=ea((((c[u>>2]|0)+r|0)>>>0)%((c[E>>2]|0)>>>0)|0,w)|0;n=d+((ea(p,f)|0)<<2)|0;if(D)m=A+j|0;else m=0;Zd[C&15](a,n,0,p,f,o,s,z,F+j|0,l+j|0,k+j|0,m);r=o+r|0;if(r>>>0>=g>>>0){n=1;break}else p=(y?0-o|0:o)+p|0}}while(0);if(!((h&2|0)==0|x)){l=f+-1|0;m=0;do{h=ea(m,f)|0;j=l+h|0;if((h|0)<(j|0)){k=d+(h<<2)|0;h=d+(j<<2)|0;do{E=c[k>>2]|0;c[k>>2]=c[h>>2];c[h>>2]=E;k=k+4|0;h=h+-4|0}while(k>>>0>>0)}m=m+1|0}while((m|0)!=(g|0))}KK(F);d=n;i=G;return d|0}g=c[B+628>>2]|0;d=cx(B)|0;c[m>>2]=224504;Dw(g,d,224480,m);d=0;i=G;return d|0}function RN(a,b,e,f,g,h,j,k,l,m,n,o){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;if(!h){i=v;return}s=g>>>0>7;t=g+-8|0;u=t&-8;t=t-u|0;u=u+8|0;a=n;f=o;r=h;while(1){r=r+-1|0;if(s){p=f+u|0;q=m+u|0;n=l;o=a;h=b;e=g;while(1){c[h>>2]=(d[m>>0]|0)<<8|(d[n>>0]|0)|(d[o>>0]|0)<<16|(d[f>>0]|0)<<24;c[h+4>>2]=(d[m+1>>0]|0)<<8|(d[n+1>>0]|0)|(d[o+1>>0]|0)<<16|(d[f+1>>0]|0)<<24;c[h+8>>2]=(d[m+2>>0]|0)<<8|(d[n+2>>0]|0)|(d[o+2>>0]|0)<<16|(d[f+2>>0]|0)<<24;c[h+12>>2]=(d[m+3>>0]|0)<<8|(d[n+3>>0]|0)|(d[o+3>>0]|0)<<16|(d[f+3>>0]|0)<<24;c[h+16>>2]=(d[m+4>>0]|0)<<8|(d[n+4>>0]|0)|(d[o+4>>0]|0)<<16|(d[f+4>>0]|0)<<24;c[h+20>>2]=(d[m+5>>0]|0)<<8|(d[n+5>>0]|0)|(d[o+5>>0]|0)<<16|(d[f+5>>0]|0)<<24;c[h+24>>2]=(d[m+6>>0]|0)<<8|(d[n+6>>0]|0)|(d[o+6>>0]|0)<<16|(d[f+6>>0]|0)<<24;c[h+28>>2]=(d[m+7>>0]|0)<<8|(d[n+7>>0]|0)|(d[o+7>>0]|0)<<16|(d[f+7>>0]|0)<<24;e=e+-8|0;if(e>>>0<=7)break;else{m=m+8|0;n=n+8|0;o=o+8|0;h=h+32|0;f=f+8|0}}f=p;m=q;a=a+u|0;l=l+u|0;b=b+(u<<2)|0;e=t}else e=g;switch(e|0){case 2:{e=b;w=13;break}case 5:{e=b;w=10;break}case 1:{e=b;w=14;break}case 7:{c[b>>2]=(d[m>>0]|0)<<8|(d[l>>0]|0)|(d[a>>0]|0)<<16|(d[f>>0]|0)<<24;f=f+1|0;m=m+1|0;l=l+1|0;a=a+1|0;e=b+4|0;w=9;break}case 4:{e=b;w=11;break}case 3:{e=b;w=12;break}case 6:{e=b;w=9;break}default:e=b}if((w|0)==9){c[e>>2]=(d[m>>0]|0)<<8|(d[l>>0]|0)|(d[a>>0]|0)<<16|(d[f>>0]|0)<<24;f=f+1|0;m=m+1|0;l=l+1|0;e=e+4|0;a=a+1|0;w=10}if((w|0)==10){c[e>>2]=(d[m>>0]|0)<<8|(d[l>>0]|0)|(d[a>>0]|0)<<16|(d[f>>0]|0)<<24;f=f+1|0;m=m+1|0;l=l+1|0;e=e+4|0;a=a+1|0;w=11}if((w|0)==11){c[e>>2]=(d[m>>0]|0)<<8|(d[l>>0]|0)|(d[a>>0]|0)<<16|(d[f>>0]|0)<<24;f=f+1|0;m=m+1|0;l=l+1|0;e=e+4|0;a=a+1|0;w=12}if((w|0)==12){c[e>>2]=(d[m>>0]|0)<<8|(d[l>>0]|0)|(d[a>>0]|0)<<16|(d[f>>0]|0)<<24;f=f+1|0;m=m+1|0;l=l+1|0;e=e+4|0;a=a+1|0;w=13}if((w|0)==13){c[e>>2]=(d[m>>0]|0)<<8|(d[l>>0]|0)|(d[a>>0]|0)<<16|(d[f>>0]|0)<<24;f=f+1|0;m=m+1|0;l=l+1|0;e=e+4|0;a=a+1|0;w=14}if((w|0)==14){w=0;c[e>>2]=(d[m>>0]|0)<<8|(d[l>>0]|0)|(d[a>>0]|0)<<16|(d[f>>0]|0)<<24;f=f+1|0;m=m+1|0;l=l+1|0;e=e+4|0;a=a+1|0}if(!r)break;else{m=m+j|0;a=a+j|0;l=l+j|0;b=e+(k<<2)|0;f=f+j|0}}i=v;return}function SN(a,b,e,f,g,h,j,k,l,m,n,o){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=i;if(!h){i=v;return}u=(g|0)==0;t=a+76|0;f=m;a=o;s=h;while(1){s=s+-1|0;if(u){m=n;e=l}else{m=n+g|0;e=l+g|0;r=c[t>>2]|0;q=g;p=b;o=f;h=a;while(1){q=q+-1|0;x=d[h>>0]|0;w=x<<8;c[p>>2]=d[r+(d[l>>0]|0|w)>>0]|0|x<<24|(d[r+(d[o>>0]|0|w)>>0]|0)<<8|(d[r+(d[n>>0]|0|w)>>0]|0)<<16;if(!q)break;else{n=n+1|0;p=p+4|0;l=l+1|0;o=o+1|0;h=h+1|0}}b=b+(g<<2)|0;f=f+g|0;a=a+g|0}if(!s)break;else{b=b+(k<<2)|0;l=e+j|0;f=f+j|0;a=a+j|0;n=m+j|0}}i=v;return}function TN(a,b,e,f,g,h,j,k,l,m,n,o){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0;t=i;if(!h){i=t;return}q=g>>>0>7;r=g+-8|0;s=r&-8;r=r-s|0;s=s+8|0;o=n;e=l;p=h;while(1){p=p+-1|0;if(q){h=b+(s<<2)|0;a=m+s|0;n=e;l=o;f=g;while(1){c[b>>2]=d[n>>0]|0|(d[m>>0]|0)<<8|(d[l>>0]|0)<<16|-16777216;c[b+4>>2]=d[n+1>>0]|0|(d[m+1>>0]|0)<<8|(d[l+1>>0]|0)<<16|-16777216;c[b+8>>2]=d[n+2>>0]|0|(d[m+2>>0]|0)<<8|(d[l+2>>0]|0)<<16|-16777216;c[b+12>>2]=d[n+3>>0]|0|(d[m+3>>0]|0)<<8|(d[l+3>>0]|0)<<16|-16777216;c[b+16>>2]=d[n+4>>0]|0|(d[m+4>>0]|0)<<8|(d[l+4>>0]|0)<<16|-16777216;c[b+20>>2]=d[n+5>>0]|0|(d[m+5>>0]|0)<<8|(d[l+5>>0]|0)<<16|-16777216;c[b+24>>2]=d[n+6>>0]|0|(d[m+6>>0]|0)<<8|(d[l+6>>0]|0)<<16|-16777216;c[b+28>>2]=d[n+7>>0]|0|(d[m+7>>0]|0)<<8|(d[l+7>>0]|0)<<16|-16777216;f=f+-8|0;if(f>>>0<=7)break;else{m=m+8|0;n=n+8|0;l=l+8|0;b=b+32|0}}b=h;o=o+s|0;e=e+s|0;f=r}else{a=m;f=g}switch(f|0){case 7:{c[b>>2]=d[e>>0]|0|(d[a>>0]|0)<<8|(d[o>>0]|0)<<16|-16777216;f=b+4|0;a=a+1|0;e=e+1|0;o=o+1|0;u=9;break}case 3:{u=12;break}case 1:{u=14;break}case 2:{u=13;break}case 4:{u=11;break}case 5:{u=10;break}case 6:{f=b;u=9;break}default:{}}if((u|0)==9){c[f>>2]=d[e>>0]|0|(d[a>>0]|0)<<8|(d[o>>0]|0)<<16|-16777216;b=f+4|0;a=a+1|0;e=e+1|0;o=o+1|0;u=10}if((u|0)==10){c[b>>2]=d[e>>0]|0|(d[a>>0]|0)<<8|(d[o>>0]|0)<<16|-16777216;b=b+4|0;a=a+1|0;e=e+1|0;o=o+1|0;u=11}if((u|0)==11){c[b>>2]=d[e>>0]|0|(d[a>>0]|0)<<8|(d[o>>0]|0)<<16|-16777216;b=b+4|0;a=a+1|0;e=e+1|0;o=o+1|0;u=12}if((u|0)==12){c[b>>2]=d[e>>0]|0|(d[a>>0]|0)<<8|(d[o>>0]|0)<<16|-16777216;b=b+4|0;a=a+1|0;e=e+1|0;o=o+1|0;u=13}if((u|0)==13){c[b>>2]=d[e>>0]|0|(d[a>>0]|0)<<8|(d[o>>0]|0)<<16|-16777216;b=b+4|0;a=a+1|0;e=e+1|0;o=o+1|0;u=14}if((u|0)==14){u=0;c[b>>2]=d[e>>0]|0|(d[a>>0]|0)<<8|(d[o>>0]|0)<<16|-16777216;b=b+4|0;a=a+1|0;e=e+1|0;o=o+1|0}if(!p)break;else{m=a+j|0;o=o+j|0;e=e+j|0;b=b+(k<<2)|0}}i=t;return}function UN(a,b,f,g,h,j,k,l,m,n,o,p){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;if(!j){i=w;return}v=(h|0)==0;u=a+80|0;a=o;g=m;while(1){j=j+-1|0;if(v)f=n;else{t=p+(h<<1)|0;f=n+(h<<1)|0;s=c[u>>2]|0;q=0;r=b;m=a;o=g;while(1){c[r>>2]=(d[s+(e[n>>1]|0)>>0]|0)<<8|(d[s+(e[o>>1]|0)>>0]|0)|(d[s+(e[m>>1]|0)>>0]|0)<<16|(d[s+(e[p>>1]|0)>>0]|0)<<24;q=q+1|0;if((q|0)==(h|0))break;else{r=r+4|0;p=p+2|0;m=m+2|0;n=n+2|0;o=o+2|0}}b=b+(h<<2)|0;p=t;a=a+(h<<1)|0;g=g+(h<<1)|0}if(!j)break;else{b=b+(l<<2)|0;p=p+(k<<1)|0;a=a+(k<<1)|0;n=f+(k<<1)|0;g=g+(k<<1)|0}}i=w;return}function VN(a,b,f,g,h,j,k,l,m,n,o,p){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=i;if(!j){i=y;return}w=(h|0)==0;x=a+80|0;v=a+76|0;a=n;while(1){j=j+-1|0;if(w){g=o;f=m}else{g=o+(h<<1)|0;f=m+(h<<1)|0;s=c[x>>2]|0;t=c[v>>2]|0;q=h;r=b;u=p;n=a;while(1){q=q+-1|0;A=d[s+(e[u>>1]|0)>>0]|0;z=A<<8;c[r>>2]=d[t+(d[s+(e[m>>1]|0)>>0]|0|z)>>0]|0|A<<24|(d[t+(d[s+(e[n>>1]|0)>>0]|0|z)>>0]|0)<<8|(d[t+(d[s+(e[o>>1]|0)>>0]|0|z)>>0]|0)<<16;if(!q)break;else{r=r+4|0;u=u+2|0;o=o+2|0;n=n+2|0;m=m+2|0}}b=b+(h<<2)|0;p=p+(h<<1)|0;a=a+(h<<1)|0}if(!j)break;else{b=b+(l<<2)|0;p=p+(k<<1)|0;o=g+(k<<1)|0;a=a+(k<<1)|0;m=f+(k<<1)|0}}i=y;return}function WN(a,b,f,g,h,j,k,l,m,n,o,p){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0;u=i;if(!j){i=u;return}t=(h|0)==0;s=a+80|0;g=o;o=n;a=m;while(1){j=j+-1|0;if(t){f=b;p=o}else{f=b+(h<<2)|0;p=o+(h<<1)|0;r=c[s>>2]|0;q=0;m=g;n=a;while(1){c[b>>2]=d[r+(e[n>>1]|0)>>0]|0|(d[r+(e[o>>1]|0)>>0]|0)<<8|(d[r+(e[m>>1]|0)>>0]|0)<<16|-16777216;q=q+1|0;if((q|0)==(h|0))break;else{b=b+4|0;m=m+2|0;o=o+2|0;n=n+2|0}}g=g+(h<<1)|0;a=a+(h<<1)|0}if(!j)break;else{b=f+(l<<2)|0;g=g+(k<<1)|0;o=p+(k<<1)|0;a=a+(k<<1)|0}}i=u;return}function XN(a,b,e,f,g,h,j,k,l,m,n,o){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;t=i;if(!h){i=t;return}s=(g|0)==0;f=o;o=m;r=h;while(1){r=r+-1|0;if(s){e=l;a=n}else{a=n+g|0;e=l+g|0;h=g;p=o;q=b;m=f;while(1){h=h+-1|0;u=(d[m>>0]|0)^255;w=((ea((d[l>>0]|0)^255,u)|0)>>>0)/255|0;v=((ea((d[p>>0]|0)^255,u)|0)>>>0)/255|0;c[q>>2]=w|v<<8|(((ea((d[n>>0]|0)^255,u)|0)>>>0)/255|0)<<16|-16777216;if(!h)break;else{p=p+1|0;q=q+4|0;l=l+1|0;m=m+1|0;n=n+1|0}}b=b+(g<<2)|0;o=o+g|0;f=f+g|0}if(!r)break;else{b=b+(k<<2)|0;l=e+j|0;f=f+j|0;n=a+j|0;o=o+j|0}}i=t;return}function YN(a,b,e,f,g,h,j,k,l,m,n,o){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;t=u+8|0;s=u;r=u+4|0;if(!h){i=u;return}q=a+68|0;p=b;while(1){o=g;a=p;e=n;f=m;b=l;while(1){Iv(c[q>>2]|0,d[b>>0]|0,d[f>>0]|0,d[e>>0]|0,t,s,r);c[a>>2]=c[t>>2]|c[s>>2]<<8|c[r>>2]<<16|-16777216;o=o+-1|0;if(!o)break;else{a=a+4|0;e=e+1|0;f=f+1|0;b=b+1|0}}h=h+-1|0;if(!h)break;else{n=n+(g+j)|0;p=p+(g+k<<2)|0;m=m+(g+j)|0;l=l+(g+j)|0}}i=u;return}function ZN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;e=c[a+576>>2]|0;if(!e)Sa(225320,225032,2128,227216);if((b|0)==347){b=c[e+884>>2]|0;g=c[d>>2]|0;a=c[g>>2]|0;c[d>>2]=g+4;c[a>>2]=b;a=c[e+880>>2]|0;e=c[d>>2]|0;b=c[e>>2]|0;c[d>>2]=e+4;c[b>>2]=a;b=1;i=f;return b|0}else if((b|0)==65538){b=c[e+892>>2]|0;a=c[d>>2]|0;g=c[a>>2]|0;c[d>>2]=a+4;c[g>>2]=b;g=1;i=f;return g|0}else if((b|0)==65537){b=c[e+888>>2]|0;a=c[d>>2]|0;g=c[a>>2]|0;c[d>>2]=a+4;c[g>>2]=b;g=1;i=f;return g|0}else if((b|0)==65539){b=c[e+896>>2]|0;a=c[d>>2]|0;g=c[a>>2]|0;c[d>>2]=a+4;c[g>>2]=b;g=1;i=f;return g|0}else{g=Od[c[e+860>>2]&255](a,b,d)|0;i=f;return g|0}return 0}function _N(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;h=i;f=a+576|0;g=c[f>>2]|0;if(!g)Sa(225320,225032,2074,227200);if((d|0)==262){e=Od[c[g+864>>2]&255](a,262,e)|0;j=c[f>>2]|0;f=a+12|0;g=c[f>>2]|0;d=g&-16385;c[f>>2]=d;if(((b[a+126>>1]|0)==1?(b[a+90>>1]|0)==6:0)?(c[j+892>>2]|0)==1:0){d=g|16384;c[f>>2]=d}f=a+496|0;if((c[f>>2]|0)>0){if(!(d&1024))d=-1;else d=Xx(a)|0;c[f>>2]=d}d=a+580|0;if((c[d>>2]|0)<=0){j=e;i=h;return j|0}c[d>>2]=Ex(a)|0;j=e;i=h;return j|0}else if((d|0)==65537){a=c[e>>2]|0;j=c[a>>2]|0;c[e>>2]=a+4;c[g+888>>2]=j;j=1;i=h;return j|0}else if((d|0)==530){c[g+900>>2]=1;j=Od[c[g+864>>2]&255](a,530,e)|0;i=h;return j|0}else if((d|0)==65539){a=c[e>>2]|0;j=c[a>>2]|0;c[e>>2]=a+4;c[g+896>>2]=j;j=1;i=h;return j|0}else if((d|0)==347){j=c[e>>2]|0;d=c[j>>2]|0;c[e>>2]=j+4;if(!d){j=0;i=h;return j|0}f=c[e>>2]|0;j=c[f>>2]|0;c[e>>2]=f+4;Wv(g+880|0,j,d);c[g+884>>2]=d;d=a+48|0;c[d>>2]=c[d>>2]|4;d=nw(a,347)|0;if(!d){j=0;i=h;return j|0}g=b[d+24>>1]|0;j=a+(((g&65535)>>>5&65535)<<2)+40|0;c[j>>2]=1<<(g&31)|c[j>>2];j=a+12|0;c[j>>2]=c[j>>2]|8;j=1;i=h;return j|0}else if((d|0)==65538){d=c[e>>2]|0;j=c[d>>2]|0;c[e>>2]=d+4;c[g+892>>2]=j;j=c[f>>2]|0;f=a+12|0;g=c[f>>2]|0;d=g&-16385;c[f>>2]=d;if(((b[a+126>>1]|0)==1?(b[a+90>>1]|0)==6:0)?(c[j+892>>2]|0)==1:0){d=g|16384;c[f>>2]=d}f=a+496|0;if((c[f>>2]|0)>0){if(!(d&1024))d=-1;else d=Xx(a)|0;c[f>>2]=d}d=a+580|0;if((c[d>>2]|0)<=0){j=1;i=h;return j|0}c[d>>2]=Ex(a)|0;j=1;i=h;return j|0}else{j=Od[c[g+864>>2]&255](a,d,e)|0;i=h;return j|0}return 0}function $N(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g;e=c[a+576>>2]|0;if(!e)Sa(225320,225032,2155,227152);if(c[a+48>>2]&4){c[f>>2]=c[e+884>>2];_c(b|0,227168,f|0)|0}e=c[e+868>>2]|0;if(!e){i=g;return}$d[e&255](a,b,d);i=g;return}function aO(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+16|0;y=z;if((b[f+90>>1]|0)!=6){i=z;return 1}if((b[f+126>>1]|0)!=1){i=z;return 1}v=f+98|0;if((b[v>>1]|0)!=3){i=z;return 1}ww(f)|0;j=f+176|0;g=c[j>>2]|0;if(!g){i=z;return 1}h=f+172|0;if(!(c[h>>2]|0)){i=z;return 1}w=g;if((c[w>>2]|0)==0&(c[w+4>>2]|0)==0){i=z;return 1}w=JK(2048)|0;if(!w){Zx(c[f+628>>2]|0,226560,226592,y);i=z;return 1}l=c[h>>2]|0;m=c[l>>2]|0;l=c[l+4>>2]|0;j=c[j>>2]|0;h=c[j>>2]|0;j=c[j+4>>2]|0;a:do if(!((h|0)==0&(j|0)==0)){t=f+640|0;g=f+628|0;ce[c[t>>2]&255](c[g>>2]|0,m,l,0)|0;k=j>>>0<0|(j|0)==0&h>>>0<2048?h:2048;if((k|0)<=-1)Sa(227096,225032,896,227112);u=f+632|0;if((Od[c[u>>2]&255](c[g>>2]|0,w,k)|0)==(k|0)){r=Iga(k|0,0,m|0,l|0)|0;s=I;n=Hga(h|0,j|0,k|0,0)|0;l=w;m=1;o=I;j=r;h=s;b:while(1){p=l+1|0;k=k+-1|0;c:do if((a[l>>0]|0)==-1){do{if(!k){if((n|0)==0&(o|0)==0){x=112;break a}if(!(m<<24>>24)){ce[c[t>>2]&255](c[g>>2]|0,j,h,0)|0;m=1}k=o>>>0<0|(o|0)==0&n>>>0<2048?n:2048;if((k|0)<=-1){x=29;break b}if((Od[c[u>>2]&255](c[g>>2]|0,w,k)|0)!=(k|0)){x=112;break a}j=Iga(k|0,0,j|0,h|0)|0;h=I;n=Hga(n|0,o|0,k|0,0)|0;p=w;o=I}l=a[p>>0]|0;p=p+1|0;k=k+-1|0}while(l<<24>>24==-1);switch(l&255|0){case 202:case 201:case 194:case 193:case 192:{x=56;break b}case 216:{l=p;x=16;break c}case 221:case 196:case 218:case 219:case 239:case 238:case 237:case 236:case 235:case 234:case 233:case 232:case 231:case 230:case 229:case 228:case 227:case 226:case 225:case 224:case 254:break;default:{x=112;break a}}if(!k){if((n|0)==0&(o|0)==0){x=112;break a}if(!(m<<24>>24)){ce[c[t>>2]&255](c[g>>2]|0,j,h,0)|0;m=1}k=o>>>0<0|(o|0)==0&n>>>0<2048?n:2048;if((k|0)<=-1){x=39;break b}if((Od[c[u>>2]&255](c[g>>2]|0,w,k)|0)!=(k|0)){x=112;break a}j=Iga(k|0,0,j|0,h|0)|0;h=I;n=Hga(n|0,o|0,k|0,0)|0;p=w;o=I}r=a[p>>0]|0;l=p+1|0;k=k+-1|0;if(!k){if((n|0)==0&(o|0)==0){x=112;break a}if(!(m<<24>>24)){ce[c[t>>2]&255](c[g>>2]|0,j,h,0)|0;m=1}k=o>>>0<0|(o|0)==0&n>>>0<2048?n:2048;if((k|0)<=-1){x=47;break b}if((Od[c[u>>2]&255](c[g>>2]|0,w,k)|0)!=(k|0)){x=112;break a}q=Iga(k|0,0,j|0,h|0)|0;h=I;n=Hga(n|0,o|0,k|0,0)|0;l=w;o=I}else q=j;k=k+-1|0;j=d[l>>0]|(r&255)<<8;if((j&65535)<2){x=112;break a}j=j+65534|0;p=j&65535;if(!p){j=q;l=l+1|0;x=16}else{if(k>>>0>=p>>>0){j=q;l=l+(p+1)|0;k=k-p|0;x=16;break}k=j-k&65535;if(o>>>0<0|(o|0)==0&n>>>0>>0){x=112;break a}j=Iga(k|0,0,q|0,h|0)|0;h=I;n=Hga(n|0,o|0,k|0,0)|0;l=I;k=0}}else{l=p;x=16}while(0);if((x|0)==16){x=0;if(!k){l=o;k=m}else continue}if((n|0)==0&(l|0)==0){x=112;break a}if(!(k<<24>>24)){ce[c[t>>2]&255](c[g>>2]|0,j,h,0)|0;m=1}else m=k;k=l>>>0<0|(l|0)==0&n>>>0<2048?n:2048;if((k|0)<=-1){x=21;break}if((Od[c[u>>2]&255](c[g>>2]|0,w,k)|0)!=(k|0)){x=112;break a}j=Iga(k|0,0,j|0,h|0)|0;h=I;n=Hga(n|0,l|0,k|0,0)|0;l=w;o=I}if((x|0)==21)Sa(227096,225032,896,227112);else if((x|0)==29)Sa(227096,225032,896,227112);else if((x|0)==39)Sa(227096,225032,896,227112);else if((x|0)==47)Sa(227096,225032,896,227112);else if((x|0)==56){if(!k){if((n|0)==0&(o|0)==0){x=112;break}if(!(m<<24>>24)){ce[c[t>>2]&255](c[g>>2]|0,j,h,0)|0;m=1}k=o>>>0<0|(o|0)==0&n>>>0<2048?n:2048;if((k|0)<=-1)Sa(227096,225032,896,227112);if((Od[c[u>>2]&255](c[g>>2]|0,w,k)|0)!=(k|0)){x=112;break}j=Iga(k|0,0,j|0,h|0)|0;h=I;n=Hga(n|0,o|0,k|0,0)|0;p=w;o=I}q=a[p>>0]|0;l=p+1|0;k=k+-1|0;if(!k){if((n|0)==0&(o|0)==0){x=112;break}if(!(m<<24>>24)){ce[c[t>>2]&255](c[g>>2]|0,j,h,0)|0;m=1}k=o>>>0<0|(o|0)==0&n>>>0<2048?n:2048;if((k|0)<=-1)Sa(227096,225032,896,227112);if((Od[c[u>>2]&255](c[g>>2]|0,w,k)|0)!=(k|0)){x=112;break}j=Iga(k|0,0,j|0,h|0)|0;p=I;n=Hga(n|0,o|0,k|0,0)|0;l=w;o=I}else p=h;if((d[l>>0]|(q&255)<<8|0)!=(((e[v>>1]|0)*3|0)+8|0)){x=112;break}if((k+-1|0)>>>0>=7){k=k+-8|0;if(!k){l=o;k=m;h=p;x=77}else{q=l+8|0;h=p}}else{h=8-k&65535;if(o>>>0<0|(o|0)==0&n>>>0>>0){x=112;break}j=Iga(h|0,0,j|0,p|0)|0;x=I;n=Hga(n|0,o|0,h|0,0)|0;l=I;k=0;h=x;x=77}if((x|0)==77){if((n|0)==0&(l|0)==0){x=112;break}if(!(k<<24>>24)){ce[c[t>>2]&255](c[g>>2]|0,j,h,0)|0;m=1}else m=k;k=l>>>0<0|(l|0)==0&n>>>0<2048?n:2048;if((k|0)<=-1)Sa(227096,225032,896,227112);if((Od[c[u>>2]&255](c[g>>2]|0,w,k)|0)!=(k|0)){x=112;break}j=Iga(k|0,0,j|0,h|0)|0;h=I;n=Hga(n|0,l|0,k|0,0)|0;q=w;o=I}s=a[q>>0]|0;l=q+1|0;r=(s&255)>>>4;s=s&15;if((k|0)==1)if((n|0)==0&(o|0)==0){n=0;o=0;k=0}else{j=Iga(j|0,h|0,1,0)|0;h=I;n=Iga(n|0,o|0,-1,-1)|0;m=0;o=I;k=0}else{l=q+2|0;k=k+-2|0}d:do if((e[v>>1]|0)>1){q=1;while(1){if(k){k=k+-1|0;if(!k){l=o;x=93}else p=l+1|0}else{if((n|0)==0&(o|0)==0){x=112;break a}j=Iga(j|0,h|0,1,0)|0;h=I;n=Iga(n|0,o|0,-1,-1)|0;l=I;m=0;x=93}if((x|0)==93){x=0;if((n|0)==0&(l|0)==0){x=112;break a}if(!(m<<24>>24)){ce[c[t>>2]&255](c[g>>2]|0,j,h,0)|0;m=1}k=l>>>0<0|(l|0)==0&n>>>0<2048?n:2048;if((k|0)<=-1){x=97;break}if((Od[c[u>>2]&255](c[g>>2]|0,w,k)|0)!=(k|0)){x=112;break a}j=Iga(k|0,0,j|0,h|0)|0;h=I;n=Hga(n|0,l|0,k|0,0)|0;p=w;o=I}l=p+1|0;if((a[p>>0]|0)!=17){x=101;break}do if((k|0)==1){if((n|0)==0&(o|0)==0){n=0;o=0;k=0;break}j=Iga(j|0,h|0,1,0)|0;h=I;n=Iga(n|0,o|0,-1,-1)|0;m=0;o=I;k=0}else{l=p+2|0;k=k+-2|0}while(0);q=q+1<<16>>16;if((q&65535)>=(e[v>>1]|0))break d}if((x|0)==97)Sa(227096,225032,896,227112);else if((x|0)==101){Zx(c[g>>2]|0,226816,226848,y);break a}}while(0);k=r&255;do if(r<<24>>24==4|r<<24>>24==2|r<<24>>24==1){if(!((s|0)==4|(s|0)==2|(s|0)==1))break;l=f+192|0;m=e[l>>1]|0;h=f+194|0;j=e[h>>1]|0;if((k|0)==(m|0)&(s|0)==(j|0))break a;f=c[g>>2]|0;c[y>>2]=m;c[y+4>>2]=j;c[y+8>>2]=k;c[y+12>>2]=s;Zx(f,226816,226976,y);b[l>>1]=r&255;b[h>>1]=s;break a}while(0);Zx(c[g>>2]|0,226816,226848,y);break}}else x=112}else{g=f+628|0;x=112}while(0);if((x|0)==112)Zx(c[g>>2]|0,226560,226688,y);KK(w);i=z;return 1}function bO(d){d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j;e=c[d+576>>2]|0;f=e+456|0;if(c[f>>2]|0)if(!(a[e+16>>0]|0)){k_(e);c[f>>2]=0;h=4}else h=6;else h=4;if((h|0)==4)if(!(l_(e)|0))h=6;else c[f>>2]=1;if((h|0)==6?(e|0)==0:0)Sa(225320,225032,966,226512);if(!(a[e+16>>0]|0))Sa(225848,225032,967,226512);if((c[d+48>>2]&4|0)!=0?(h=e+768|0,c[e+24>>2]=h,c[e+780>>2]=219,c[e+784>>2]=120,c[e+788>>2]=256,c[e+792>>2]=288,c[e+772>>2]=0,c[h>>2]=0,c[e+776>>2]=289,(q_(e,0)|0)!=2):0){Dw(c[d+628>>2]|0,226512,226528,g);h=0;i=j;return h|0}h=b[d+90>>1]|0;b[e+800>>1]=h;if(h<<16>>16==6){b[e+802>>1]=b[d+192>>1]|0;b[e+804>>1]=b[d+194>>1]|0}else{b[e+802>>1]=1;b[e+804>>1]=1}h=e+768|0;c[e+24>>2]=h;c[e+776>>2]=290;c[e+780>>2]=219;c[e+784>>2]=120;c[e+788>>2]=256;c[e+792>>2]=288;c[e+772>>2]=0;c[h>>2]=0;c[d+652>>2]=37;h=1;i=j;return h|0}function cO(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;m=t;r=d+576|0;s=c[r>>2]|0;if(!s)Sa(225320,225032,1011,225832);g=s+16|0;if((a[g>>0]|0)==0?(Ld[c[d+508>>2]&511](d)|0,(a[g>>0]|0)==0):0)Sa(225848,225032,1018,225832);if(!(s_(s)|0)){s=0;i=t;return s|0}if((q_(s,1)|0)!=1){s=0;i=t;return s|0}c[d+604>>2]=c[s+768>>2];c[d+608>>2]=c[s+772>>2];g=(c[d+60>>2]|0)-(c[d+444>>2]|0)|0;if(!(c[d+12>>2]&1024)){h=c[d+56>>2]|0;j=c[d+100>>2]|0;c[s+808>>2]=Ex(d)|0;j=g>>>0>j>>>0?j:g}else{h=c[d+68>>2]|0;j=c[d+72>>2]|0;c[s+808>>2]=Ux(d)|0}l=d+126|0;if(!((b[l>>1]|0)!=2|f<<16>>16==0)){g=e[s+802>>1]|0;if(h>>>0<(0-g|0)>>>0)h=((h+-1+g|0)>>>0)/(g>>>0)|0;else h=0;g=e[s+804>>1]|0;if(j>>>0<(0-g|0)>>>0)n=((j+-1+g|0)>>>0)/(g>>>0)|0;else n=0}else n=j;f=s+28|0;j=c[f>>2]|0;g=c[s+32>>2]|0;if(j>>>0>>0|g>>>0>>0){p=c[d+628>>2]|0;c[m>>2]=h;c[m+4>>2]=n;c[m+8>>2]=j;c[m+12>>2]=g;Zx(p,225832,225880,m);j=c[f>>2]|0}g=c[s+32>>2]|0;if(j>>>0>h>>>0|g>>>0>n>>>0){s=c[d+628>>2]|0;c[m>>2]=h;c[m+4>>2]=n;c[m+8>>2]=j;c[m+12>>2]=g;Dw(s,225832,225944,m);s=0;i=t;return s|0}k=s+36|0;o=c[k>>2]|0;l=(b[l>>1]|0)==1;if(l)g=e[d+98>>1]|0;else g=1;if((o|0)!=(g|0)){Dw(c[d+628>>2]|0,225832,226024,m);s=0;i=t;return s|0}if((c[s+192>>2]|0)!=(e[d+84>>1]|0)){Dw(c[d+628>>2]|0,225832,226056,m);s=0;i=t;return s|0}p=s+196|0;j=c[p>>2]|0;f=c[j+8>>2]|0;a:do if(l){h=e[s+802>>1]|0;g=c[j+12>>2]|0;n=b[s+804>>1]|0;if(!((f|0)==(h|0)&(g|0)==(n&65535|0))){s=c[d+628>>2]|0;c[m>>2]=f;c[m+4>>2]=g;c[m+8>>2]=h;c[m+12>>2]=n&65535;Dw(s,225832,226088,m);s=0;i=t;return s|0}if((o|0)>1){g=1;while(1){if((c[j+(g*88|0)+8>>2]|0)!=1)break;if((c[j+(g*88|0)+12>>2]|0)!=1)break;g=g+1|0;if((g|0)>=(o|0))break a}Dw(c[d+628>>2]|0,225832,226160,m);s=0;i=t;return s|0}}else{if((f|0)==1?(c[j+12>>2]|0)==1:0)break;Dw(c[d+628>>2]|0,225832,226160,m);s=0;i=t;return s|0}while(0);b:do if(l){do if((b[s+800>>1]|0)==6){g=s+40|0;if((c[s+892>>2]|0)!=1){c[g>>2]=0;c[s+44>>2]=0;if(l)break;else{q=47;break b}}else{c[g>>2]=3;c[s+44>>2]=2;q=47;break b}}else{c[s+40>>2]=0;c[s+44>>2]=0}while(0);if((b[s+802>>1]|0)==1?(b[s+804>>1]|0)==1:0){q=47;break}a[s+65>>0]=1;a[s+72>>0]=0;c[d+532>>2]=126;c[d+540>>2]=127;c[d+548>>2]=127;h=0}else{c[s+40>>2]=0;c[s+44>>2]=0;q=47}while(0);if((q|0)==47){a[s+65>>0]=0;c[d+532>>2]=89;c[d+540>>2]=89;c[d+548>>2]=89;h=1}g=(v_(s)|0)==0;if(g|h){s=g&1^1;i=t;return s|0}n=c[k>>2]|0;o=c[r>>2]|0;c:do if((n|0)>0){l=o+812|0;m=0;k=c[p>>2]|0;g=0;while(1){h=c[k+8>>2]|0;j=c[k+12>>2]|0;f=w_(o,c[k+28>>2]<<3,j<<3)|0;if(!f){g=0;break}g=(ea(j,h)|0)+g|0;c[l+(m<<2)>>2]=f;m=m+1|0;if((m|0)>=(n|0))break c;else k=k+88|0}i=t;return g|0}else g=0;while(0);c[o+856>>2]=g;c[s+852>>2]=8;s=1;i=t;return s|0}function dO(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;u=i;i=i+16|0;o=u+8|0;n=u+4|0;p=c[b+576>>2]|0;q=b+604|0;r=p+768|0;c[r>>2]=c[q>>2];s=b+608|0;t=p+772|0;c[t>>2]=c[s>>2];m=p+808|0;h=c[m>>2]|0;if(!h){t=0;i=u;return t|0}g=(f|0)/(h|0)|0;if((f|0)%(h|0)|0)Zx(c[b+628>>2]|0,c[b>>2]|0,225800,u);h=c[p+32>>2]|0;h=(g|0)>(h|0)?h:g;do if(h){c[o>>2]=0;k=p+192|0;l=p+92|0;if((c[k>>2]|0)==12){j=p+36|0;g=JK(ea(c[l>>2]<<1,c[j>>2]|0)|0)|0;c[o>>2]=g}else{g=0;j=p+36|0}f=b+444|0;b=h;a:while(1){do if(!g){c[n>>2]=e;if((x_(p,n)|0)!=1){g=0;h=23;break a}}else{if((x_(p,o)|0)!=1){g=0;h=23;break a}g=c[k>>2]|0;if((g|0)==8){g=ea(c[j>>2]|0,c[l>>2]|0)|0;if((g|0)>0)h=0;else break;do{a[e+h>>0]=a[(c[o>>2]|0)+h>>0]|0;h=h+1|0}while((h|0)!=(g|0))}else if((g|0)==12){g=(ea(c[j>>2]|0,c[l>>2]|0)|0)>>>1;if(!g)break;else h=0;do{v=h*3|0;x=c[o>>2]|0;w=h<<1;y=x+w|0;a[e+v>>0]=(d[y>>0]|0)>>>4;a[e+(v+1)>>0]=(d[y>>0]|0)<<4;a[e+(v+2)>>0]=a[x+(w|1)>>0]|0;h=h+1|0}while((h|0)<(g|0))}else break}while(0);c[f>>2]=(c[f>>2]|0)+1;b=b+-1|0;g=c[o>>2]|0;if((b|0)<=0){h=18;break}else e=e+(c[m>>2]|0)|0}if((h|0)==18){if(!g)break;KK(g);break}else if((h|0)==23){i=u;return g|0}}while(0);c[q>>2]=c[r>>2];c[s>>2]=c[t>>2];if((c[p+120>>2]|0)>>>0<(c[p+96>>2]|0)>>>0)g=1;else g=(y_(p)|0)!=0;y=g&1;i=u;return y|0}function eO(d){d=d|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0;r=i;i=i+48|0;q=r;k=r+32|0;l=r+8|0;n=d+576|0;p=c[n>>2]|0;f=p+456|0;if(c[f>>2]|0)if(!(a[p+16>>0]|0))h=6;else{k_(p);c[f>>2]=0;h=4}else h=4;if((h|0)==4)if(!(z_(p)|0))h=6;else c[f>>2]=1;if((h|0)==6?(p|0)==0:0)Sa(225320,225032,1536,225480);if(a[p+16>>0]|0)Sa(225400,225032,1537,225480);f=b[d+90>>1]|0;j=p+800|0;b[j>>1]=f;do if((b[d+126>>1]|0)==1){h=b[d+98>>1]|0;c[p+36>>2]=h&65535;if(f<<16>>16==6){f=p+40|0;if((c[p+892>>2]|0)==1){c[f>>2]=2;break}else{c[f>>2]=3;break}}if((f&65535)<2&h<<16>>16==1){c[p+40>>2]=1;break}if(f<<16>>16==2){if(h<<16>>16==3){c[p+40>>2]=2;break}}else if(f<<16>>16==5?h<<16>>16==4:0){c[p+40>>2]=4;break}c[p+40>>2]=0}else{c[p+36>>2]=1;c[p+40>>2]=0}while(0);if(!(A_(p)|0)){q=0;i=r;return q|0}f=e[j>>1]|0;if((f|0)==4|(f|0)==3){d=c[d+628>>2]|0;c[q>>2]=f;Dw(d,225480,225496,q);q=0;i=r;return q|0}else if((f|0)==6){b[p+802>>1]=b[d+192>>1]|0;b[p+804>>1]=b[d+194>>1]|0;c[q>>2]=k;if(!(Zv(d,532,q)|0)){j=1<>1];g[l>>2]=0.0;s=+(j+-1|0);g[l+4>>2]=s;t=+(j>>1|0);g[l+8>>2]=t;g[l+12>>2]=s;g[l+16>>2]=t;g[l+20>>2]=s;c[q>>2]=l;Xv(d,532,q)|0}}else{b[p+802>>1]=1;b[p+804>>1]=1}l=b[d+84>>1]|0;f=l&65535;if(l<<16>>16!=8){d=c[d+628>>2]|0;c[q>>2]=f;Dw(d,225480,225552,q);q=0;i=r;return q|0}c[p+72>>2]=f;j=d+12|0;if(!(c[j>>2]&1024)){f=c[d+100>>2]|0;if(f>>>0<(c[d+60>>2]|0)>>>0?(m=e[p+804>>1]<<3,((f>>>0)%(m>>>0)|0|0)!=0):0){d=c[d+628>>2]|0;c[q>>2]=m;Dw(d,225480,225672,q);q=0;i=r;return q|0}}else{f=e[p+804>>1]<<3;if(((c[d+72>>2]|0)>>>0)%(f>>>0)|0){d=c[d+628>>2]|0;c[q>>2]=f;Dw(d,225480,225592,q);q=0;i=r;return q|0}f=e[p+802>>1]<<3;if(((c[d+68>>2]|0)>>>0)%(f>>>0)|0){d=c[d+628>>2]|0;c[q>>2]=f;Dw(d,225480,225632,q);q=0;i=r;return q|0}}do if(c[p+896>>2]&3){f=c[p+880>>2]|0;if((f|0)!=0?(pga(f,225720,8)|0)!=0:0)break;k=c[n>>2]|0;if(!(B_(k,c[k+888>>2]|0)|0)){q=0;i=r;return q|0}if(!(C_(k)|0)){q=0;i=r;return q|0}f=c[k+896>>2]|0;if(f&1){h=c[k+88>>2]|0;if(h)a[h+128>>0]=0;if((b[k+800>>1]|0)==6?(o=c[k+92>>2]|0,(o|0)!=0):0)a[o+128>>0]=0}if(f&2){f=c[k+120>>2]|0;if(f)a[f+273>>0]=0;f=c[k+136>>2]|0;if(f)a[f+273>>0]=0;if((b[k+800>>1]|0)==6){f=c[k+124>>2]|0;if(f)a[f+273>>0]=0;f=c[k+140>>2]|0;if(f)a[f+273>>0]=0}}h=k+880|0;f=c[h>>2]|0;if(f)KK(f);f=k+884|0;c[f>>2]=1e3;n=JK(1e3)|0;c[h>>2]=n;if(!n){c[f>>2]=0;Dw(c[(c[k+796>>2]|0)+628>>2]|0,225736,225760,q);q=0;i=r;return q|0}c[k+24>>2]=k+748;c[k+756>>2]=291;c[k+760>>2]=220;c[k+764>>2]=292;if(!(G_(k)|0)){q=0;i=r;return q|0}else{c[j>>2]=c[j>>2]|8;q=d+48|0;c[q>>2]=c[q>>2]|4;break}}else{q=d+48|0;c[q>>2]=c[q>>2]&-5}while(0);c[p+24>>2]=p+748;c[p+756>>2]=293;c[p+760>>2]=221;c[p+764>>2]=294;q=1;i=r;return q|0}function fO(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;n=p;l=d+576|0;o=c[l>>2]|0;if(!o)Sa(225320,225032,1691,225384);h=o+16|0;g=a[h>>0]|0;if(g<<24>>24==1){Ld[c[d+516>>2]&511](d)|0;g=a[h>>0]|0}if(g<<24>>24)Sa(225400,225032,1698,225384);if(!(c[d+12>>2]&1024)){g=c[d+56>>2]|0;m=(c[d+60>>2]|0)-(c[d+444>>2]|0)|0;j=c[d+100>>2]|0;c[o+808>>2]=Ex(d)|0;m=m>>>0>j>>>0?j:m}else{g=c[d+68>>2]|0;m=c[d+72>>2]|0;c[o+808>>2]=Ux(d)|0}h=b[d+126>>1]|0;j=f<<16>>16==0;if(!(h<<16>>16!=2|j)){k=e[o+802>>1]|0;if(g>>>0<(0-k|0)>>>0)g=((g+-1+k|0)>>>0)/(k>>>0)|0;else g=0;k=e[o+804>>1]|0;if(m>>>0<(0-k|0)>>>0)k=((m+-1+k|0)>>>0)/(k>>>0)|0;else k=0}else k=m;if(g>>>0>65535|k>>>0>65535){Dw(c[d+628>>2]|0,225384,225432,n);o=0;i=p;return o|0}c[o+28>>2]=g;c[o+32>>2]=k;do if(h<<16>>16==1){c[o+36>>2]=e[d+98>>1];if((b[o+800>>1]|0)!=6){if(!(K_(o,c[o+40>>2]|0)|0))g=0;else{g=0;break}i=p;return g|0}do if((c[o+892>>2]|0)==1)g=0;else{if((b[o+802>>1]|0)==1?(b[o+804>>1]|0)==1:0){g=0;break}g=1}while(0);if(!(K_(o,3)|0)){o=0;i=p;return o|0}else{f=c[o+84>>2]|0;c[f+8>>2]=e[o+802>>1];c[f+12>>2]=e[o+804>>1];break}}else{if(!(K_(o,0)|0)){o=0;i=p;return o|0}g=c[o+84>>2]|0;c[g>>2]=f&65535;if((b[o+800>>1]|0)!=6|j)g=0;else{c[g+16>>2]=1;c[g+20>>2]=1;c[g+24>>2]=1;g=0}}while(0);a[o+232>>0]=0;a[o+240>>0]=0;if(!(B_(o,c[o+888>>2]|0)|0)){o=0;i=p;return o|0}k=c[o+896>>2]|0;h=c[o+88>>2]|0;j=(h|0)==0;if(!(k&1)){if(!j)a[h+128>>0]=0;h=c[o+92>>2]|0;if(h)a[h+128>>0]=0}else{if(!j)a[h+128>>0]=1;h=c[o+92>>2]|0;if(h)a[h+128>>0]=1}if(!(k&2))a[o+210>>0]=1;else{h=c[o+120>>2]|0;if(h)a[h+273>>0]=1;h=c[o+136>>2]|0;if(h)a[h+273>>0]=1;h=c[o+124>>2]|0;if(h)a[h+273>>0]=1;h=c[o+140>>2]|0;if(h)a[h+273>>0]=1;a[o+210>>0]=0}g=(g|0)!=0;h=o+208|0;if(g){a[h>>0]=1;c[d+536>>2]=128;c[d+544>>2]=128;c[d+552>>2]=128}else{a[h>>0]=0;c[d+536>>2]=90;c[d+544>>2]=90;c[d+552>>2]=90}if(!(M_(o)|0)){o=0;i=p;return o|0}if(g){m=c[o+76>>2]|0;n=c[l>>2]|0;a:do if((m|0)>0){j=n+812|0;f=0;l=c[o+84>>2]|0;g=0;while(1){k=c[l+8>>2]|0;h=c[l+12>>2]|0;d=w_(n,c[l+28>>2]<<3,h<<3)|0;if(!d){g=0;break}g=(ea(h,k)|0)+g|0;c[j+(f<<2)>>2]=d;f=f+1|0;if((f|0)>=(m|0))break a;else l=l+88|0}i=p;return g|0}else g=0;while(0);c[n+856>>2]=g}c[o+852>>2]=0;o=1;i=p;return o|0}function gO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;o=a+576|0;a=c[o>>2]|0;m=a+852|0;d=c[m>>2]|0;do if((d|0)>0){n=a+76|0;e=c[n>>2]|0;a:do if((e|0)>0){b=a+812|0;f=0;l=c[a+84>>2]|0;while(1){g=c[l+12>>2]|0;k=c[l+28>>2]<<3;h=ea(d,g)|0;if((h|0)<(g<<3|0)){j=b+(f<<2)|0;d=g<<3;e=h;do{h=c[j>>2]|0;NK(c[h+(e<<2)>>2]|0,c[h+(e+-1<<2)>>2]|0,k);e=e+1|0}while((e|0)!=(d|0));e=c[n>>2]|0}f=f+1|0;if((f|0)>=(e|0))break a;d=c[m>>2]|0;l=l+88|0}}else b=a+812|0;while(0);n=c[a+260>>2]<<3;if((N_(a,b,n)|0)==(n|0)){a=c[o>>2]|0;break}else{o=0;i=p;return o|0}}while(0);o=O_(a)|0;i=p;return o|0}function hO(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+16|0;o=q+4|0;m=c[b+576>>2]|0;if(!m)Sa(225320,225032,1829,225336);n=m+808|0;l=c[n>>2]|0;g=(f|0)/(l|0)|0;if((f|0)%(l|0)|0)Zx(c[b+628>>2]|0,c[b>>2]|0,225352,q);if(!(c[b+12>>2]&1024)){l=c[b+444>>2]|0;j=c[b+60>>2]|0;g=(l+g|0)>>>0>j>>>0?j-l|0:g}l=m+72|0;f=c[l>>2]|0;if((f|0)==12){j=(c[n>>2]<<1|0)/3|0;h=JK(j<<1)|0;p=9}else{h=0;j=0}while(1){if((p|0)==9){p=0;f=c[l>>2]|0}k=g+-1|0;f=(f|0)==12;if((g|0)<=0)break;if(f){g=(j|0)/2|0;c[o>>2]=h;if((j|0)>1){f=0;do{r=f*3|0;p=h+(f<<1<<1)|0;a[p>>0]=(d[e+(r+1)>>0]|0)>>>4|(d[e+r>>0]|0)<<4;a[p+1>>0]=a[e+(r+2)>>0]|0;f=f+1|0}while((f|0)<(g|0))}}else c[o>>2]=e;if((P_(m,o)|0)!=1){g=0;p=21;break}if((k|0)>0){r=b+444|0;c[r>>2]=(c[r>>2]|0)+1}e=e+(c[n>>2]|0)|0;g=k;p=9}if((p|0)==21){i=q;return g|0}if(!f){r=1;i=q;return r|0}KK(h);r=1;i=q;return r|0}function iO(a){a=a|0;var b=0,d=0,e=0;e=i;d=a+576|0;b=c[d>>2]|0;if(!b)Sa(225296,225032,2014,225304);c[a+672>>2]=c[b+860>>2];c[a+668>>2]=c[b+864>>2];c[a+676>>2]=c[b+868>>2];if(c[b+456>>2]|0)k_(b);b=c[b+880>>2]|0;if(!b){b=c[d>>2]|0;KK(b);c[d>>2]=0;Tv(a);i=e;return}KK(b);b=c[d>>2]|0;KK(b);c[d>>2]=0;Tv(a);i=e;return}function jO(a,b){a=a|0;b=b|0;var d=0,f=0;f=i;d=Wd[c[(c[a+576>>2]|0)+872>>2]&511](a,b)|0;if(d>>>0>=(c[a+60>>2]|0)>>>0){i=f;return d|0}a=e[a+194>>1]|0;b=a<<3;if(d>>>0<(0-b|0)>>>0)b=(((d+-1+b|0)>>>0)/(b>>>0)|0)<<3;else b=0;d=ea(b,a)|0;i=f;return d|0}function kO(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0;j=i;$d[c[(c[a+576>>2]|0)+876>>2]&255](a,b,d);f=c[b>>2]|0;h=e[a+192>>1]|0;g=h<<3;if(f>>>0<(0-g|0)>>>0)f=(((f+-1+g|0)>>>0)/(g>>>0)|0)<<3;else f=0;c[b>>2]=ea(f,h)|0;h=c[d>>2]|0;f=e[a+194>>1]|0;g=f<<3;if(h>>>0>=(0-g|0)>>>0){a=0;a=ea(a,f)|0;c[d>>2]=a;i=j;return}a=(((h+-1+g|0)>>>0)/(g>>>0)|0)<<3;a=ea(a,f)|0;c[d>>2]=a;i=j;return}function lO(a,d){a=+a;d=+d;var e=0,f=0,j=0,k=0,l=0.0,m=0,n=0.0,o=0.0,p=0,q=0,r=0;r=i;i=i+800|0;q=r;if(c[57566]|0){o=d+-.473684211;d=a+-.210526316;d=+aa(+o,+d);d=d*15.915494277358546;d=d+50.0;q=~~d;q=229864+(q<<2)|0;q=c[q>>2]|0;i=r;return q|0}e=99;while(1){h[q+(e<<3)>>3]=2.0;if(!e){p=162;e=163;break}else e=e+-1|0}while(1){f=(b[227260+(p<<3)>>1]|0)+-1|0;if((e|0)==1|(e|0)==163)m=1;else m=f;n=+g[227256+(p<<3)>>2];o=(+(p|0)+.5)*3.5000001080334187e-003+.016939999535679817+-.473684211;j=227262+(p<<3)|0;do{l=+aa(+o,+((+(f|0)+.5)*3.5000001080334187e-003+n+-.210526316))*15.915494277358546+50.0;e=~~l;l=+T(+(l-(+(e|0)+.5)));k=q+(e<<3)|0;if(l<+h[k>>3]){c[229864+(e<<2)>>2]=(b[j>>1]|0)+f;h[k>>3]=l}f=f-m|0}while((f|0)>-1);if(!p){p=99;j=100;break}else{e=p;p=p+-1|0}}while(1){do if(+h[q+(p<<3)>>3]>1.5){f=1;while(1){e=f+1|0;if(+h[q+(((f+p|0)%100|0)<<3)>>3]<1.5){e=f;break}if((e|0)<50)f=e;else break}m=j+99|0;f=-1;j=1;while(1){k=j+1|0;if(+h[q+(((m+f|0)%100|0)<<3)>>3]<1.5)break;f=~j;if((k|0)<50)j=k;else{j=k;break}}if((e|0)<(j|0)){c[229864+(p<<2)>>2]=c[229864+(((e+p|0)%100|0)<<2)>>2];break}else{c[229864+(p<<2)>>2]=c[229864+(((m+f|0)%100|0)<<2)>>2];break}}while(0);if(!p)break;else{j=p;p=p+-1|0}}c[57566]=1;o=d+-.473684211;d=a+-.210526316;d=+aa(+o,+d);d=d*15.915494277358546;d=d+50.0;q=~~d;q=229864+(q<<2)|0;q=c[q>>2]|0;i=r;return q|0}function mO(a,b,c){a=a|0;b=b|0;c=c|0;return}function nO(a){a=a|0;return 1}function oO(a){a=a|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;f=h;g=c[a+576>>2]|0;c[a+652>>2]=37;d=e[a+90>>1]|0;do if((d|0)==32844)if(Z_(a)|0){c[a+532>>2]=131;d=c[g>>2]|0;if(!d){c[g+20>>2]=73;d=1;break}else if((d|0)==3){c[g+20>>2]=74;d=1;break}else{d=1;break}}else d=0;else if((d|0)==32845)if(Q_(a)|0){d=a+532|0;if((b[a+88>>1]|0)==-30859){c[d>>2]=129;d=c[g>>2]|0;if((d|0)==1){c[g+20>>2]=68;d=1;break}else if((d|0)==3){c[g+20>>2]=69;d=1;break}else if(!d){c[g+20>>2]=67;d=1;break}else{d=1;break}}else{c[d>>2]=130;d=c[g>>2]|0;if((d|0)==3){c[g+20>>2]=72;d=1;break}else if(!d){c[g+20>>2]=70;d=1;break}else if((d|0)==1){c[g+20>>2]=71;d=1;break}else{d=1;break}}}else d=0;else{a=c[a+628>>2]|0;c[f>>2]=d;c[f+4>>2]=229128;Dw(a,229712,229056,f);d=0}while(0);i=h;return d|0}function pO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;f=Ex(a)|0;if((d|0)%(f|0)|0)Sa(228968,228624,382,229688);g=a+532|0;if(!d){a=1;i=h;return a|0}while(1){if(!(ce[c[g>>2]&255](a,b,f,e)|0)){b=0;d=6;break}if((d|0)==(f|0)){b=1;d=6;break}else{d=d-f|0;b=b+f|0}}if((d|0)==6){i=h;return b|0}return 0}function qO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;f=Ux(a)|0;if((d|0)%(f|0)|0)Sa(228968,228624,398,229664);g=a+532|0;if(!d){a=1;i=h;return a|0}while(1){if(!(ce[c[g>>2]&255](a,b,f,e)|0)){b=0;d=6;break}if((d|0)==(f|0)){b=1;d=6;break}else{d=d-f|0;b=b+f|0}}if((d|0)==6){i=h;return b|0}return 0}function rO(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;h=k;f=c[a+576>>2]|0;g=a+90|0;d=e[g>>1]|0;do if((d|0)==32844)if(!(Z_(a)|0))d=1;else{c[a+536>>2]=134;d=c[f>>2]|0;if((d|0)==1){d=1;break}else if(d){j=14;break}c[f+20>>2]=79;d=1}else if((d|0)==32845)if(Q_(a)|0){d=a+536|0;if((b[a+88>>1]|0)==-30859){c[d>>2]=132;d=c[f>>2]|0;if((d|0)==1){c[f+20>>2]=76;d=1;break}else if(!d){c[f+20>>2]=75;d=1;break}else if((d|0)==2){d=1;break}else{j=14;break}}else{c[d>>2]=133;d=c[f>>2]|0;if(!d){c[f+20>>2]=77;d=1;break}else if((d|0)==2){d=1;break}else if((d|0)==1){c[f+20>>2]=78;d=1;break}else{j=14;break}}}else d=1;else{g=c[a+628>>2]|0;c[h>>2]=d;c[h+4>>2]=229128;Dw(g,229032,229056,h);d=1}while(0);if((j|0)==14){d=c[a+628>>2]|0;c[h>>2]=(b[g>>1]|0)==-32692?229216:229224;Dw(d,229032,229160,h);d=0}i=k;return d|0}function sO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;f=Ex(a)|0;if((d|0)%(f|0)|0)Sa(228968,228624,647,229008);g=a+536|0;if(!d){a=1;i=h;return a|0}while(1){if((ce[c[g>>2]&255](a,b,f,e)|0)!=1){b=0;d=6;break}if((d|0)==(f|0)){b=1;d=6;break}else{d=d-f|0;b=b+f|0}}if((d|0)==6){i=h;return b|0}return 0}function tO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;f=Ux(a)|0;if((d|0)%(f|0)|0)Sa(228968,228624,662,228984);g=a+536|0;if(!d){a=1;i=h;return a|0}while(1){if((ce[c[g>>2]&255](a,b,f,e)|0)!=1){b=0;d=6;break}if((d|0)==(f|0)){b=1;d=6;break}else{d=d-f|0;b=b+f|0}}if((d|0)==6){i=h;return b|0}return 0}function uO(a){a=a|0;b[a+98>>1]=(b[a+90>>1]|0)==-32692?1:3;b[a+84>>1]=16;b[a+86>>1]=2;return}function vO(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;b=a+576|0;d=c[b>>2]|0;if(!d)Sa(228944,228624,1523,228952);c[a+672>>2]=c[d+24>>2];c[a+668>>2]=c[d+28>>2];e=c[d+12>>2]|0;if(!e){KK(d);c[b>>2]=0;Tv(a);i=f;return}KK(e);KK(d);c[b>>2]=0;Tv(a);i=f;return}function wO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;e=c[a+576>>2]|0;if((b|0)==65560){a=c[e>>2]|0;e=c[d>>2]|0;b=c[e>>2]|0;c[d>>2]=e+4;c[b>>2]=a;b=1;i=f;return b|0}else{b=Od[c[e+24>>2]&255](a,b,d)|0;i=f;return b|0}return 0}function xO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;f=g;e=c[a+576>>2]|0;if((b|0)==65560){h=c[d>>2]|0;b=c[h>>2]|0;c[d>>2]=h+4;c[e>>2]=b;if((b|0)==2){c[f>>2]=1;Xv(a,277,f)|0;b=32;e=1}else if((b|0)==3){b=8;e=1}else if(!b){b=32;e=3}else if((b|0)==1){b=16;e=2}else{d=c[a+628>>2]|0;h=c[a>>2]|0;c[f>>2]=b;Dw(d,h,228848,f);h=0;i=g;return h|0}c[f>>2]=b;Xv(a,258,f)|0;c[f>>2]=e;Xv(a,339,f)|0;if(!(c[a+12>>2]&1024))b=-1;else b=Xx(a)|0;c[a+496>>2]=b;c[a+580>>2]=Ex(a)|0;h=1;i=g;return h|0}else if((b|0)==65561){h=c[d>>2]|0;b=c[h>>2]|0;c[d>>2]=h+4;c[e+4>>2]=b;if(b>>>0<2){h=1;i=g;return h|0}h=c[a+628>>2]|0;c[f>>2]=b;Dw(h,228832,228896,f);h=0;i=g;return h|0}else{h=Od[c[e+28>>2]&255](a,b,d)|0;i=g;return h|0}return 0}function yO(a){a=a|0;return 1}function zO(d){d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;f=d+576|0;e=c[f>>2]|0;do if(!e){e=JK(160)|0;c[f>>2]=e;if(!e){Dw(c[d+628>>2]|0,231008,230352,h);h=0;i=j;return h|0}else{c[e+124>>2]=0;c[e+104>>2]=0;jx(d)|0;e=c[f>>2]|0;if(e){g=e;break}Sa(230488,230304,229,231008)}}else g=e;while(0);e=g+124|0;if(c[e>>2]|0){h=1;i=j;return h|0}f=JK(40952)|0;c[e>>2]=f;if(!f){Dw(c[d+628>>2]|0,231008,231024,h);h=0;i=j;return h|0}else e=255;while(1){h=e&255;a[f+(e<<3)+6>>0]=h;a[f+(e<<3)+7>>0]=h;b[f+(e<<3)+4>>1]=1;c[f+(e<<3)>>2]=0;if(!e)break;else e=e+-1|0}MK(f+2048|0,0,16);h=1;i=j;return h|0}function AO(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k;h=c[d+576>>2]|0;if(!h)Sa(230488,230304,267,230936);j=h+124|0;e=c[j>>2]|0;if(!e){Ld[c[d+508>>2]&511](d)|0;e=c[j>>2]|0;if(!e){d=0;i=k;return d|0}}f=c[d+588>>2]|0;if((a[f>>0]|0)==0?(a[f+1>>0]&1)!=0:0){f=h+104|0;if(!(c[f>>2]|0)){Zx(c[d+628>>2]|0,230936,230952,g);c[d+532>>2]=135;c[d+540>>2]=135;c[d+548>>2]=135;Ld[c[d+508>>2]&511](d)|0;c[f>>2]=135;e=c[j>>2]|0}b[h+66>>1]=511}else{b[h+66>>1]=510;c[h+104>>2]=95}b[h+64>>1]=9;c[h+76>>2]=0;c[h+72>>2]=0;c[h+88>>2]=0;g=h+84|0;c[g>>2]=511;f=c[d+608>>2]|0;f=Fga(f|0,((f|0)<0)<<31>>31|0,3)|0;d=h+96|0;c[d>>2]=f;c[d+4>>2]=I;d=e+2064|0;c[h+116>>2]=d;MK(d,0,38888);d=c[j>>2]|0;c[h+112>>2]=d+-8;c[h+120>>2]=d+((c[g>>2]|0)+-1<<3);d=1;i=k;return d|0}function BO(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+16|0;N=O;C=c[f+576>>2]|0;if(!C)Sa(230488,230304,374,230568);B=C+124|0;if(!(c[B>>2]|0))Sa(230584,230304,375,230568);D=C+88|0;j=c[D>>2]|0;do if(j){k=c[C+108>>2]|0;l=(e[k+4>>1]|0)-j|0;if((l|0)<=(h|0)){g=g+l|0;j=l;m=g;do{m=m+-1|0;M=k;k=c[k>>2]|0;a[m>>0]=a[M+6>>0]|0;j=j+-1|0}while((j|0)!=0&(k|0)!=0);c[D>>2]=0;h=h-l|0;break}c[D>>2]=j+h;do{k=c[k>>2]|0;l=l+-1|0;j=(k|0)!=0}while((l|0)>(h|0)&j);if(!j){f=1;i=O;return f|0}l=h;j=g+h|0;do{j=j+-1|0;a[j>>0]=a[k+6>>0]|0;k=c[k>>2]|0;l=l+-1|0}while((l|0)!=0&(k|0)!=0);j=1;i=O;return j|0}while(0);E=f+604|0;m=c[E>>2]|0;F=C+64|0;o=e[F>>1]|0;G=C+72|0;l=c[G>>2]|0;H=C+76|0;q=c[H>>2]|0;J=C+84|0;p=c[J>>2]|0;K=C+112|0;j=c[K>>2]|0;L=C+116|0;k=c[L>>2]|0;M=C+120|0;n=c[M>>2]|0;a:do if((h|0)>0){z=C+96|0;y=j;A=h;b:while(1){s=z;r=c[s>>2]|0;s=c[s+4>>2]|0;t=((o|0)<0)<<31>>31;if(s>>>0>>0|(s|0)==(t|0)&r>>>0>>0){r=18;break}h=m+1|0;l=d[m>>0]|0|l<<8;j=q+8|0;if((j|0)<(o|0)){v=m+2|0;j=q+16|0;x=d[h>>0]|0|l<<8}else{v=h;x=l}w=j-o|0;q=x>>w&p;u=q&65535;t=Hga(r|0,s|0,o|0,t|0)|0;h=z;c[h>>2]=t;c[h+4>>2]=I;h=q&65535;if(u<<16>>16==257){m=v;g=w;l=x;h=A;j=y;break a}l=c[B>>2]|0;do if(u<<16>>16==256){h=l+2064|0;MK(h,0,38888);n=(c[B>>2]|0)+4080|0;p=z;o=c[p>>2]|0;p=c[p+4>>2]|0;if(p>>>0<0|(p|0)==0&o>>>0<9){r=24;break b}l=v+1|0;k=d[v>>0]|0|x<<8;j=w+8|0;if((j|0)<9){m=v+2|0;j=w+16|0;l=d[l>>0]|0|k<<8}else{m=l;l=k}r=j+-9|0;j=l>>r;q=j&511;k=q&65535;w=Iga(o|0,p|0,-9,-1)|0;x=z;c[x>>2]=w;c[x+4>>2]=I;if(k<<16>>16==257){k=h;o=9;p=511;g=r;h=A;j=y;break a}if((k&65535)>255){r=29;break b}a[g>>0]=j;k=h;o=9;p=511;h=A+-1|0;j=(c[B>>2]|0)+(q<<3)|0;g=g+1|0}else{j=l+(h<<3)|0;m=l+40952|0;if(!(k>>>0>=l>>>0&k>>>0>>0)){r=33;break b}c[k>>2]=y;if(!(y>>>0>=l>>>0&y>>>0>>0)){r=35;break b}m=a[y+7>>0]|0;a[k+7>>0]=m;b[k+4>>1]=(e[y+4>>1]|0)+1;if(j>>>0>>0)m=a[l+(h<<3)+7>>0]|0;a[k+6>>0]=m;s=k+8|0;if(s>>>0>n>>>0){o=o+1|0;o=(o|0)>12?12:o;p=1<>0]=q;m=v;k=s;r=w;l=x;h=A+-1|0;g=g+1|0;break}y=b[l+(h<<3)+4>>1]|0;h=y&65535;if(!(y<<16>>16)){r=42;break b}if((A|0)<(h|0)){r=44;break b}q=g+h|0;k=j;l=q;do{l=l+-1|0;m=k;k=c[k>>2]|0;a[l>>0]=a[m+6>>0]|0;m=(k|0)!=0}while(m&l>>>0>g>>>0);if(m){r=54;break b}m=v;k=s;r=w;l=x;h=A-h|0;g=q}while(0);if((h|0)>0){y=j;q=r;A=h}else{g=r;break a}}if((r|0)==18){g=c[f+628>>2]|0;c[N>>2]=c[f+452>>2];Zx(g,230568,230608,N);g=q;h=A;j=y;break}else if((r|0)==24){m=c[f+628>>2]|0;c[N>>2]=c[f+452>>2];Zx(m,230568,230608,N);m=v;k=h;o=9;p=511;g=w;l=x;h=A;j=y;break}else if((r|0)==29){L=c[f+628>>2]|0;M=c[f>>2]|0;c[N>>2]=c[f+444>>2];Dw(L,M,230664,N);f=0;i=O;return f|0}else if((r|0)==33){M=c[f+628>>2]|0;c[N>>2]=c[f+444>>2];Dw(M,230568,230712,N);f=0;i=O;return f|0}else if((r|0)==35){M=c[f+628>>2]|0;c[N>>2]=c[f+444>>2];Dw(M,230568,230712,N);f=0;i=O;return f|0}else if((r|0)==42){M=c[f+628>>2]|0;c[N>>2]=c[f+444>>2];Dw(M,230568,230752,N);f=0;i=O;return f|0}else if((r|0)==44){c[C+108>>2]=j;m=j;do{m=c[m>>2]|0;if(!m){m=v;k=s;g=w;l=x;h=A;break a}}while((e[m+4>>1]|0|0)>(A|0));c[D>>2]=A;l=m;h=A;k=g+A|0;do{k=k+-1|0;a[k>>0]=a[l+6>>0]|0;l=c[l>>2]|0;h=h+-1|0;m=(l|0)!=0}while((h|0)!=0&m);if(!m){m=v;k=s;g=w;l=x;break}m=c[f+628>>2]|0;c[N>>2]=c[f+444>>2];Dw(m,230568,230880,N);m=v;k=s;g=w;l=x;break}else if((r|0)==54){m=c[f+628>>2]|0;c[N>>2]=c[f+444>>2];Dw(m,230568,230880,N);m=v;k=s;g=w;l=x;h=A;break}}else g=q;while(0);c[E>>2]=m;b[F>>1]=o;c[G>>2]=l;c[H>>2]=g;c[J>>2]=p;c[K>>2]=j;c[L>>2]=k;c[M>>2]=n;if((h|0)<=0){f=1;i=O;return f|0}M=c[f+628>>2]|0;c[N>>2]=c[f+444>>2];f=N+4|0;c[f>>2]=h;c[f+4>>2]=((h|0)<0)<<31>>31;Dw(M,230568,230824,N);f=0;i=O;return f|0}function CO(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=c[a+576>>2]|0;if(!b)Sa(230488,230304,783,230520);e=JK(72008)|0;c[b+152>>2]=e;if(e){e=1;i=d;return e|0}Dw(c[a+628>>2]|0,230520,230536,d);e=0;i=d;return e|0}function DO(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=i;f=c[a+576>>2]|0;if(!f)Sa(230488,230304,802,230504);d=f+152|0;e=c[d>>2]|0;if(!e){Ld[c[a+516>>2]&511](a)|0;e=c[d>>2]|0}b[f+64>>1]=9;b[f+66>>1]=511;b[f+68>>1]=258;c[f+76>>2]=0;c[f+72>>2]=0;c[f+132>>2]=1e4;c[f+136>>2]=0;c[f+140>>2]=0;c[f+144>>2]=0;c[f+148>>2]=(c[a+588>>2]|0)+((c[a+592>>2]|0)+-5);d=e+72e3|0;a=8993;while(1){a=a+-8|0;c[d+-56>>2]=-1;c[d+-48>>2]=-1;c[d+-40>>2]=-1;c[d+-32>>2]=-1;c[d+-24>>2]=-1;c[d+-16>>2]=-1;c[d+-8>>2]=-1;c[d>>2]=-1;if((a|0)<=-1)break;else d=d+-64|0}c[e>>2]=-1;c[f+128>>2]=65535;i=g;return 1}function EO(b){b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;f=c[b+576>>2]|0;d=c[b+604>>2]|0;h=c[f+76>>2]|0;g=c[f+72>>2]|0;l=e[f+64>>1]|0;if(d>>>0>(c[f+148>>2]|0)>>>0){j=b+588|0;c[b+608>>2]=d-(c[j>>2]|0);cy(b)|0;d=c[j>>2]|0}k=f+128|0;f=c[k>>2]|0;if((f|0)==65535){f=g;k=d}else{f=f|g<>0]=f>>h;if((h|0)>7){h=g+-16|0;a[j>>0]=f>>h;d=d+2|0}else d=j;c[k>>2]=65535;k=d}j=f<>0]=j>>g;if((g|0)>7){g=f+-16|0;a[d>>0]=j>>g;d=k+2|0}if((g|0)<=0){l=d;j=b+588|0;j=c[j>>2]|0;j=l-j|0;l=b+608|0;c[l>>2]=j;i=m;return 1}a[d>>0]=j<<8-g;l=d+1|0;j=b+588|0;j=c[j>>2]|0;j=l-j|0;l=b+608|0;c[l>>2]=j;i=m;return 1}function FO(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;S=i;r=c[f+576>>2]|0;if(!r){f=0;i=S;return f|0}P=r+152|0;if(!(c[P>>2]|0))Sa(230424,230304,880,230448);Q=r+140|0;n=c[Q>>2]|0;R=r+144|0;p=c[R>>2]|0;G=r+132|0;s=c[G>>2]|0;H=r+72|0;m=c[H>>2]|0;I=r+76|0;k=c[I>>2]|0;J=r+68|0;t=e[J>>1]|0;K=r+66|0;u=e[K>>1]|0;L=r+64|0;v=e[L>>1]|0;M=f+604|0;o=c[M>>2]|0;N=c[r+148>>2]|0;O=r+128|0;F=c[O>>2]|0;j=F&65535;if((F&65535|0)==65535&(h|0)>0){l=m<>0]=l>>k;if((k|0)>7){k=j+-16|0;a[m>>0]=l>>k;m=o+2|0}q=g+1|0;h=h+-1|0;j=d[g>>0]|0;n=n+1|0;p=v+p|0}else{q=g;l=m;m=o}a:do if((h|0)>0){E=f+588|0;F=f+608|0;D=r+136|0;C=s;z=p;b:while(1){w=a[q>>0]|0;q=q+1|0;p=w&255;h=h+-1|0;A=n+1|0;s=j&65535;x=(p<<12)+s|0;j=p<<5;p=j^s;r=c[P>>2]|0;g=r+(p<<3)|0;o=c[g>>2]|0;c:do if((o|0)!=(x|0)){d:do if((o|0)>-1){o=(j|0)==(s|0)?1:9001-p|0;while(1){g=p-o|0;p=(g|0)<0?g+9001|0:g;g=r+(p<<3)|0;j=c[g>>2]|0;if((j|0)==(x|0))break;if((j|0)<=-1)break d}s=C;j=b[r+(p<<3)+4>>1]|0;n=A;p=u;g=v;o=z;break c}while(0);if(m>>>0>N>>>0){c[F>>2]=m-(c[E>>2]|0);cy(f)|0;m=c[E>>2]|0}y=l<>0]=y>>k;if((k|0)>7){k=j+-16|0;a[l>>0]=y>>k;B=m+2|0}else B=l;o=v+z|0;r=w&255;l=t+1|0;b[g+4>>1]=t;c[g>>2]=x;if((l|0)==4094){j=c[P>>2]|0;l=j+72e3|0;m=8993;while(1){m=m+-8|0;c[l+-56>>2]=-1;c[l+-48>>2]=-1;c[l+-40>>2]=-1;c[l+-32>>2]=-1;c[l+-24>>2]=-1;c[l+-16>>2]=-1;c[l+-8>>2]=-1;c[l>>2]=-1;if((m|0)<=-1)break;else l=l+-64|0}c[j>>2]=-1;c[D>>2]=0;l=y<>0]=l>>k;if((k|0)<=7){s=C;j=r;t=258;n=0;p=511;g=9;o=v;break}k=j+-16|0;a[m>>0]=l>>k;s=C;j=r;t=258;n=0;p=511;g=9;m=B+2|0;o=v;break}if((t|0)>=(u|0)){m=v+1|0;if((m|0)>=13)break b;s=C;j=r;t=l;n=A;p=(1<=(C|0)){p=n+10001|0;if((n|0)>8388606){j=o>>8;if(!j)j=2147483647;else j=(A|0)/(j|0)|0}else j=(A<<8|0)/(o|0)|0;if((j|0)>(c[D>>2]|0)){c[D>>2]=j;s=p;j=r;t=l;n=A;p=u;g=v;l=y;m=B;break}j=c[P>>2]|0;l=j+72e3|0;m=8993;while(1){m=m+-8|0;c[l+-56>>2]=-1;c[l+-48>>2]=-1;c[l+-40>>2]=-1;c[l+-32>>2]=-1;c[l+-24>>2]=-1;c[l+-16>>2]=-1;c[l+-8>>2]=-1;c[l>>2]=-1;if((m|0)<=-1)break;else l=l+-64|0}c[j>>2]=-1;c[D>>2]=0;l=y<>0]=l>>k;if((k|0)>7){k=j+-16|0;a[m>>0]=l>>k;s=p;j=r;t=258;n=0;p=511;g=9;m=B+2|0;o=v}else{s=p;j=r;t=258;n=0;p=511;g=9;o=v}}else{s=C;j=r;t=l;n=A;p=u;g=v;l=y;m=B}}else{s=C;j=b[r+(p<<3)+4>>1]|0;n=A;p=u;g=v;o=z}while(0);if((h|0)<=0){T=s;U=j;V=t;W=n;X=p;Y=g;Z=k;_=l;$=m;aa=o;break a}else{C=s;u=p;v=g;z=o}}Sa(230464,230304,978,230448)}else{T=s;U=j;V=t;W=n;X=u;Y=v;Z=k;_=l;$=m;aa=p}while(0);c[Q>>2]=W;c[R>>2]=aa;c[G>>2]=T;c[O>>2]=U&65535;c[H>>2]=_;c[I>>2]=Z;b[J>>1]=V;b[K>>1]=X;b[L>>1]=Y;c[M>>2]=$;f=1;i=S;return f|0}function GO(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;kx(a)|0;e=a+576|0;b=c[e>>2]|0;if(!b)Sa(230384,230304,1083,230408);d=c[b+124>>2]|0;if(d){KK(d);b=c[e>>2]|0}d=c[b+152>>2]|0;if(d){KK(d);b=c[e>>2]|0}KK(b);c[e>>2]=0;Tv(a);i=f;return}function HO(a,d){a=a|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;d=b[a+84>>1]|0;if(d<<16>>16==2){a=1;i=f;return a|0}a=c[a+628>>2]|0;c[e>>2]=d&65535;Dw(a,231152,231168,e);a=0;i=f;return a|0}function IO(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+16|0;y=B;j=(f|0)>0;if(j)Cga(e|0,-1,f|0)|0;z=b+604|0;A=b+608|0;x=c[b+580>>2]|0;if((f|0)%(x|0)|0){Dw(c[b+628>>2]|0,231056,231072,y);A=0;i=B;return A|0}g=c[A>>2]|0;h=c[z>>2]|0;a:do if((g|0)>0&j){u=b+56|0;v=b+12|0;w=b+68|0;t=x+1|0;s=e;b:while(1){j=h+1|0;e=d[h>>0]|0;l=g+-1|0;c:do if(!e){if((g|0)<=(x|0))break b;NK(s,j,x);h=h+t|0;g=l-x|0}else if((e|0)==64){if((g|0)<5)break b;j=(d[j>>0]|0)<<8|(d[h+2>>0]|0);k=(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);e=k+4|0;if((g|0)<=(e|0)|(k+j|0)>(x|0))break b;NK(s+j|0,h+5|0,k);h=h+(k+5)|0;g=l-e|0}else{r=c[((c[v>>2]&1024|0)==0?u:w)>>2]|0;h=j;g=l;l=0;k=s;while(1){q=e>>>6;e=e&63;j=l>>>0>>0;d:do if((e|0)!=0&j){n=q<<6&255;o=q<<4;p=q<<2;m=k;while(1){j=l;while(1){e=e+-1|0;l=j+1|0;j=j&3;if((j|0)==1)a[m>>0]=d[m>>0]|0|o;else if((j|0)==3)break;else if((j|0)==2)a[m>>0]=d[m>>0]|0|p;else if(!j)a[m>>0]=n;j=l>>>0>>0;if(!((e|0)>0&j)){k=m;break d}else j=l}k=m+1|0;a[m>>0]=d[m>>0]|0|q;j=l>>>0>>0;if((e|0)>0&j)m=k;else break}}while(0);if(!j)break c;if(!g)break b;e=d[h>>0]|0;h=h+1|0;g=g+-1|0}}while(0);f=f-x|0;if(!((g|0)>0&(f|0)>0))break a;else s=s+x|0}A=c[b+628>>2]|0;c[y>>2]=c[b+444>>2];Dw(A,231056,231112,y);A=0;i=B;return A|0}while(0);c[z>>2]=h;c[A>>2]=g;A=1;i=B;return A|0}function JO(a){a=a|0;return 1}function KO(a){a=a|0;var b=0;b=i;i=i+16|0;Zx(c[a+628>>2]|0,234880,234904,b);i=b;return 1}function LO(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0;K=i;i=i+16|0;J=K;H=f+576|0;F=c[H>>2]|0;if(!(a[F+226>>0]|0))k$(f);do if(!(a[F+488>>0]|0)){n=c[H>>2]|0;m=n+488|0;if(a[m>>0]|0)Sa(232720,231232,1040,232744);h=c[f+56>>2]|0;c[n+184>>2]=h;j=c[f+60>>2]|0;c[n+188>>2]=j;if(!(c[f+12>>2]&1024)){c[n+192>>2]=h;k=c[f+100>>2]|0;c[n+196>>2]=k;c[n+200>>2]=j}else{h=c[f+68>>2]|0;c[n+192>>2]=h;k=c[f+72>>2]|0;c[n+196>>2]=k;E=j+-1+k|0;c[n+200>>2]=E-((E>>>0)%(k>>>0)|0)}l=b[f+98>>1]|0;do if(l<<16>>16==3){a[n+204>>0]=3;a[n+205>>0]=0;l=n+206|0;if((b[f+126>>1]|0)==1){a[l>>0]=3;break}else{a[l>>0]=1;break}}else if(l<<16>>16==1){a[n+204>>0]=1;a[n+205>>0]=0;a[n+206>>0]=1;a[n+228>>0]=1;a[n+229>>0]=1}else{H=c[f+628>>2]|0;c[J>>2]=d[n+204>>0];Dw(H,232744,232768,J);J=0;i=K;return J|0}while(0);do if(k>>>0>>0){l=d[n+229>>0]<<3;if(!((k>>>0)%(l>>>0)|0)){E=d[n+228>>0]<<3;b[n+360>>1]=ea((k>>>0)/(l>>>0)|0,((h+-1+E|0)>>>0)/(E>>>0)|0)|0;break}Dw(c[f+628>>2]|0,232744,232832,J);J=0;i=K;return J|0}while(0);if(!(l$(f)|0)){J=0;i=K;return J|0}else{a[n+392>>0]=1;c[n+396>>2]=c[n+1188>>2];c[n+400>>2]=c[n+1192>>2];v=n+1200|0;E=e[n+1224>>1]|0;v=Hga(c[v>>2]|0,c[v+4>>2]|0,E|0,0)|0;A=n+408|0;c[A>>2]=v;c[A+4>>2]=I;A=n+1216|0;A=Iga(E|0,0,c[A>>2]|0,c[A+4>>2]|0)|0;E=n+416|0;c[E>>2]=A;c[E+4>>2]=I;a[m>>0]=1;break}}while(0);u=g&65535;v=F+392|0;a:do if(!(a[v+(u<<5)>>0]|0)){r=c[H>>2]|0;if(!(g<<16>>16))Sa(232480,231232,1102,232488);if((g&65535)>=3)Sa(232512,231232,1103,232488);s=r+392|0;if(!(a[s>>0]|0))Sa(232520,231232,1104,232488);if(a[s+(u<<5)>>0]|0)Sa(232544,231232,1105,232488);h=u+255&255;while(1){p=h&255;if(!(a[s+(p<<5)>>0]|0))h=h+-1<<24>>24;else break}t=r+205|0;a[t>>0]=h;j=r+1188|0;c[j>>2]=c[s+(p<<5)+4>>2];k=r+1192|0;c[k>>2]=c[s+(p<<5)+8>>2];n=s+(p<<5)+16|0;o=c[n+4>>2]|0;q=r+1200|0;E=q;c[E>>2]=c[n>>2];c[E+4>>2]=o;a[r+1208>>0]=0;E=s+(p<<5)+24|0;o=c[E+4>>2]|0;n=r+1216|0;m=n;c[m>>2]=c[E>>2];c[m+4>>2]=o;m=r+1224|0;b[m>>1]=0;o=r+1228|0;c[o>>2]=0;if(p>>>0>>0){h=0;b:while(1){if(!(h<<16>>16)){if(!(m$(r)|0)){G=0;y=105;break}h=b[m>>1]|0;if(!(h<<16>>16)){y=36;break}}p=c[o>>2]|0;E=a[p>>0]|0;p=p+1|0;c[o>>2]=p;h=h+-1<<16>>16;b[m>>1]=h;if(E<<24>>24!=-1)continue;while(1){if(!(h<<16>>16)){if(!(m$(r)|0)){G=0;y=105;break b}h=b[m>>1]|0;if(!(h<<16>>16)){y=42;break b}p=c[o>>2]|0}l=a[p>>0]|0;p=p+1|0;c[o>>2]=p;h=h+-1<<16>>16;b[m>>1]=h;if(l<<24>>24!=-1)if(l<<24>>24==-38)break;else continue b}a[t>>0]=(a[t>>0]|0)+1<<24>>24;if(!(n$(f)|0)){G=0;y=105;break}E=d[t>>0]|0;a[s+(E<<5)>>0]=1;c[s+(E<<5)+4>>2]=c[j>>2];E=d[t>>0]|0;c[s+(E<<5)+8>>2]=c[k>>2];p=q;h=b[m>>1]|0;A=h&65535;p=Hga(c[p>>2]|0,c[p+4>>2]|0,A|0,0)|0;l=s+(E<<5)+16|0;c[l>>2]=p;c[l+4>>2]=I;l=n;l=Iga(A|0,0,c[l>>2]|0,c[l+4>>2]|0)|0;A=s+(E<<5)+24|0;c[A>>2]=l;c[A+4>>2]=I;if(E>>>0>=u>>>0)break a}if((y|0)==36)Sa(232184,231232,2010,232704);else if((y|0)==42)Sa(232184,231232,2010,232704);else if((y|0)==105){i=K;return G|0}}}while(0);E=c[((c[f+12>>2]&1024|0)==0?f+452|0:f+492|0)>>2]|0;k=F+489|0;j=F+490|0;do if(!(a[k>>0]|0))y=54;else{if((b[j>>1]|0)==g<<16>>16?(w=c[F+492>>2]|0,w>>>0<=E>>>0):0){x=w;break}do if(a[F+496>>0]|0){l=c[H>>2]|0;h=l+496|0;if(!(a[h>>0]|0))Sa(231616,231232,1245,231648);else{NF(l+632|0);a[h>>0]=0;break}}while(0);a[k>>0]=0;y=54}while(0);do if((y|0)==54){a[F+205>>0]=g;b[j>>1]=g;A=F+492|0;c[A>>2]=ea(c[f+164>>2]|0,u)|0;h=F+1208|0;if(a[h>>0]|0){l=F+1200|0;x=l;j=F+1224|0;x=Hga(c[x>>2]|0,c[x+4>>2]|0,e[j>>1]|0,0)|0;m=v+(u<<5)+16|0;k=c[m>>2]|0;m=c[m+4>>2]|0;if(!((x|0)==(k|0)&(I|0)==(m|0))){z=l;B=j;C=k;D=m;y=57}}else{D=v+(u<<5)+16|0;z=F+1200|0;B=F+1224|0;C=c[D>>2]|0;D=c[D+4>>2]|0;y=57}if((y|0)==57){c[F+1188>>2]=c[v+(u<<5)+4>>2];c[F+1192>>2]=c[v+(u<<5)+8>>2];c[z>>2]=C;c[z+4>>2]=D;a[h>>0]=0;z=v+(u<<5)+24|0;C=c[z+4>>2]|0;D=F+1216|0;c[D>>2]=c[z>>2];c[D+4>>2]=C;b[B>>1]=0;c[F+1228>>2]=0}y=c[H>>2]|0;h=y+496|0;if(a[h>>0]|0){J=0;i=K;return J|0}c[y+3280>>2]=0;a[y+362>>0]=0;D=y+500|0;uG(D)|0;c[y+508>>2]=295;c[D>>2]=296;z=y+632|0;c[z>>2]=D;c[y+644>>2]=f;if(!(q$(y,z)|0)){J=0;i=K;return J|0}a[h>>0]=1;c[y+1092>>2]=0;c[y+1096>>2]=297;c[y+1100>>2]=222;c[y+1104>>2]=121;c[y+1108>>2]=257;c[y+1112>>2]=298;c[y+656>>2]=y+1088;if(!(w$(y,z)|0)){J=0;i=K;return J|0}h=a[y+206>>0]|0;if((a[y+230>>0]|0)==0&(h&255)>1){a[y+697>>0]=1;a[y+704>>0]=0;a[y+497>>0]=0;v=y+1116|0;if(!(a[v>>0]|0)){h=y+1148|0;if(c[h>>2]|0)Sa(231968,231232,1185,232008);n=y+1168|0;if(c[n>>2]|0)Sa(232032,231232,1186,232008);w=y+192|0;g=y+228|0;k=d[g>>0]|0;D=k<<3;m=(c[w>>2]|0)+-1+D|0;D=m-((m>>>0)%(D>>>0)|0)|0;m=y+1120|0;c[m>>2]=D;x=y+229|0;l=d[x>>0]<<3;p=y+1124|0;c[p>>2]=l;k=(D>>>0)/(k>>>0)|0;s=y+1128|0;c[s>>2]=k;q=y+1132|0;c[q>>2]=8;D=ea(l,D)|0;l=y+1136|0;c[l>>2]=D;j=y+1140|0;c[j>>2]=k<<3;k=D+(k<<4)|0;c[y+1144>>2]=k;k=JK(k)|0;c[h>>2]=k;if(!k){Dw(c[f+628>>2]|0,232008,231952,J);J=0;i=K;return J|0}r=y+1152|0;c[r>>2]=k;o=c[l>>2]|0;t=y+1156|0;c[t>>2]=k+o;u=y+1160|0;c[u>>2]=k+((c[j>>2]|0)+o);o=(c[p>>2]|0)+3+(c[q>>2]<<1)|0;c[y+1164>>2]=o;o=JK(o<<2)|0;c[n>>2]=o;if(!o){Dw(c[f+628>>2]|0,232008,231952,J);J=0;i=K;return J|0}k=o+12|0;c[o>>2]=k;p=c[p>>2]|0;D=p+3|0;c[o+4>>2]=(c[n>>2]|0)+(D<<2);q=c[q>>2]|0;c[o+8>>2]=(c[n>>2]|0)+(q+D<<2);if(p){l=c[m>>2]|0;j=p>>>0>1?(p<<2)+12|0:16;h=0;while(1){c[k>>2]=(c[r>>2]|0)+(ea(h,l)|0);h=h+1|0;if((h|0)==(p|0))break;else k=k+4|0}k=o+j|0}if(q){n=c[s>>2]|0;h=q>>>0>1;l=k;j=0;while(1){c[l>>2]=(c[t>>2]|0)+(ea(j,n)|0);j=j+1|0;if((j|0)==(q|0))break;else l=l+4|0}h=k+((h?q:1)<<2)|0;l=0;while(1){c[h>>2]=(c[u>>2]|0)+(ea(l,n)|0);l=l+1|0;if((l|0)==(q|0))break;else h=h+4|0}}B=d[g>>0]|0;C=(((c[w>>2]|0)+-1+B|0)>>>0)/(B>>>0)|0;c[y+1172>>2]=C;c[y+1176>>2]=0;D=d[x>>0]|0;c[y+1180>>2]=ea((ea(D,B)|0)+2|0,C)|0;c[y+1184>>2]=(((c[y+196>>2]|0)+-1+D|0)>>>0)/(D>>>0)|0;a[v>>0]=1}}else{c[y+672>>2]=0;c[y+676>>2]=0;a[y+497>>0]=1;c[y+1180>>2]=ea(c[y+192>>2]|0,h&255)|0;c[y+1184>>2]=c[y+196>>2]}if(!(x$(y,z)|0)){J=0;i=K;return J|0}else{a[y+489>>0]=1;x=c[A>>2]|0;break}}while(0);q=F+492|0;if(x>>>0>=E>>>0){J=1;i=K;return J|0}o=F+497|0;c:while(1){p=c[H>>2]|0;d:do if(!(a[o>>0]|0)){h=c[p+1184>>2]|0;n=p+1176|0;l=c[n>>2]|0;m=p+1132|0;k=c[m>>2]|0;do if(l){j=k-l|0;if(h>>>0>j>>>0){c[n>>2]=0;h=h-j|0;break}else{F=l+h|0;c[n>>2]=(F|0)==(k|0)?0:F;break d}}while(0);if(h>>>0>=k>>>0){l=p+632|0;j=p+1168|0;k=p+229|0;do{if(!(y$(p,l,c[j>>2]|0,d[k>>0]<<3)|0)){G=0;y=105;break c}F=c[m>>2]|0;h=h-F|0}while(h>>>0>=F>>>0)}if(h){if(!(y$(p,p+632|0,c[p+1168>>2]|0,d[p+229>>0]<<3)|0)){G=0;y=105;break c}c[n>>2]=h}}else{h=p+5332|0;if((c[h>>2]|0)==0?(F=JK(c[p+1180>>2]|0)|0,c[h>>2]=F,(F|0)==0):0){y=101;break c}j=p+632|0;k=p+1184|0;if(c[k>>2]|0){l=0;do{l=l+1|0;if(!(z$(p,j,h)|0)){G=0;y=105;break c}}while(l>>>0<(c[k>>2]|0)>>>0)}}while(0);F=(c[q>>2]|0)+1|0;c[q>>2]=F;if(F>>>0>=E>>>0){G=1;y=105;break}}if((y|0)==101){Dw(c[f+628>>2]|0,231920,231952,J);J=0;i=K;return J|0}else if((y|0)==105){i=K;return G|0}return 0}function MO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;e=c[b+576>>2]|0;g=e+492|0;d=(c[g>>2]|0)+1|0;c[g>>2]=d;if((d>>>0)%((c[b+164>>2]|0)>>>0)|0){i=f;return}d=e+496|0;if(!(a[d>>0]|0))Sa(231616,231232,891,231824);NF(e+632|0);a[d>>0]=0;a[e+489>>0]=0;i=f;return}function NO(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;l=E;j=E+4|0;D=c[b+576>>2]|0;if(a[D+497>>0]|0){g=D+1180|0;if((f>>>0)%((c[g>>2]|0)>>>0)|0){Dw(c[b+628>>2]|0,231880,231840,l);D=0;i=E;return D|0}if((f|0)<=0)Sa(231872,231232,869,231880);c[j>>2]=e;h=D+632|0;k=f;while(1){if(!(z$(D,h,j)|0)){g=0;h=28;break}C=c[g>>2]|0;c[j>>2]=(c[j>>2]|0)+C;k=k-C|0;if((k|0)<=0){g=1;h=28;break}}if((h|0)==28){i=E;return g|0}}C=D+1180|0;if((f>>>0)%((c[C>>2]|0)>>>0)|0){Dw(c[b+628>>2]|0,231904,231840,l);D=0;i=E;return D|0}if((f|0)<=0)Sa(231872,231232,821,231904);q=D+632|0;r=D+1168|0;s=D+1176|0;t=D+229|0;u=D+1152|0;v=D+1120|0;w=D+1156|0;x=D+1128|0;y=D+1160|0;z=D+1172|0;A=D+1132|0;B=D+228|0;g=c[s>>2]|0;while(1){if(!g){if(!(y$(D,q,c[r>>2]|0,d[t>>0]<<3)|0)){g=0;h=28;break}g=c[s>>2]|0}k=ea(c[x>>2]|0,g)|0;if(c[z>>2]|0){h=a[t>>0]|0;n=ea(h&255,g)|0;n=ea(n,c[v>>2]|0)|0;p=(c[w>>2]|0)+k|0;m=(c[y>>2]|0)+k|0;n=(c[u>>2]|0)+n|0;g=e;o=1;while(1){k=a[B>>0]|0;if(h<<24>>24){j=n;l=0;while(1){if(!(k<<24>>24))b=0;else{h=0;do{b=j;j=j+1|0;k=g;g=g+1|0;a[k>>0]=a[b>>0]|0;h=h+1<<24>>24;k=a[B>>0]|0}while((h&255)<(k&255));b=k;h=a[t>>0]|0}l=l+1<<24>>24;if((l&255)>=(h&255)){k=b;break}else{k=b;j=j+((c[v>>2]|0)-(b&255))|0}}}a[g>>0]=a[p>>0]|0;a[g+1>>0]=a[m>>0]|0;if(o>>>0>=(c[z>>2]|0)>>>0)break;h=a[t>>0]|0;p=p+1|0;m=m+1|0;n=n+(k&255)|0;g=g+2|0;o=o+1|0}g=c[s>>2]|0}g=g+1|0;g=(g|0)==(c[A>>2]|0)?0:g;c[s>>2]=g;k=c[C>>2]|0;f=f-k|0;if((f|0)<=0){g=1;h=28;break}else e=e+k|0}if((h|0)==28){i=E;return g|0}return 0}function OO(a){a=a|0;var b=0;b=i;i=i+16|0;Dw(c[a+628>>2]|0,231800,231696,b);i=b;return 0}function PO(a,b){a=a|0;b=b|0;b=i;i=i+16|0;Dw(c[a+628>>2]|0,231784,231696,b);i=b;return 0}function QO(a){a=a|0;var b=0;b=i;i=i+16|0;Dw(c[a+628>>2]|0,231680,231696,b);i=b;return 0}function RO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=i;i=i+16|0;Dw(c[a+628>>2]|0,231768,231696,e);i=e;return 0}function SO(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;f=b+576|0;g=c[f>>2]|0;if(!g){i=h;return}c[b+672>>2]=c[g+160>>2];c[b+668>>2]=c[g+164>>2];c[b+676>>2]=c[g+168>>2];d=c[g+312>>2]|0;if(d)KK(d);d=c[g+316>>2]|0;if(d)KK(d);d=c[g+320>>2]|0;if(d)KK(d);d=c[g+324>>2]|0;if(d)KK(d);d=c[g+328>>2]|0;if(d)KK(d);d=c[g+332>>2]|0;if(d)KK(d);d=c[g+336>>2]|0;if(d)KK(d);d=c[g+340>>2]|0;if(d)KK(d);d=c[g+344>>2]|0;if(d)KK(d);d=c[g+348>>2]|0;if(d)KK(d);d=c[g+352>>2]|0;if(d)KK(d);d=c[g+356>>2]|0;if(d)KK(d);do if(a[g+496>>0]|0){e=c[f>>2]|0;d=e+496|0;if(!(a[d>>0]|0))Sa(231616,231232,1245,231648);else{NF(e+632|0);a[d>>0]=0;break}}while(0);d=c[g+1148>>2]|0;if(d)KK(d);d=c[g+1168>>2]|0;if(d)KK(d);d=c[g+5332>>2]|0;if(d)KK(d);KK(g);c[f>>2]=0;Tv(b);i=h;return}function TO(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;j=i;h=c[e+576>>2]|0;switch(f|0){case 512:{e=d[h+224>>0]|0;h=c[g>>2]|0;f=c[h>>2]|0;c[g>>2]=h+4;b[f>>1]=e;f=1;i=j;return f|0}case 514:{e=h+216|0;h=c[e>>2]|0;e=c[e+4>>2]|0;k=c[g>>2]|0;f=c[k>>2]|0;c[g>>2]=k+4;c[f>>2]=h;c[f+4>>2]=e;f=1;i=j;return f|0}case 519:{k=d[h+231>>0]|0;e=c[g>>2]|0;f=c[e>>2]|0;c[g>>2]=e+4;c[f>>2]=k;f=c[g>>2]|0;k=c[f>>2]|0;c[g>>2]=f+4;c[k>>2]=h+240;k=1;i=j;return k|0}case 513:{f=h+208|0;e=c[f>>2]|0;f=c[f+4>>2]|0;h=c[g>>2]|0;k=c[h>>2]|0;c[g>>2]=h+4;c[k>>2]=e;c[k+4>>2]=f;k=1;i=j;return k|0}case 515:{f=b[h+360>>1]|0;e=c[g>>2]|0;k=c[e>>2]|0;c[g>>2]=e+4;b[k>>1]=f;k=1;i=j;return k|0}case 521:{k=d[h+233>>0]|0;e=c[g>>2]|0;f=c[e>>2]|0;c[g>>2]=e+4;c[f>>2]=k;f=c[g>>2]|0;k=c[f>>2]|0;c[g>>2]=f+4;c[k>>2]=h+288;k=1;i=j;return k|0}case 530:{if(!(a[h+226>>0]|0))k$(e);e=d[h+228>>0]|0;k=c[g>>2]|0;f=c[k>>2]|0;c[g>>2]=k+4;b[f>>1]=e;f=d[h+229>>0]|0;e=c[g>>2]|0;k=c[e>>2]|0;c[g>>2]=e+4;b[k>>1]=f;k=1;i=j;return k|0}case 520:{k=d[h+232>>0]|0;e=c[g>>2]|0;f=c[e>>2]|0;c[g>>2]=e+4;c[f>>2]=k;f=c[g>>2]|0;k=c[f>>2]|0;c[g>>2]=f+4;c[k>>2]=h+264;k=1;i=j;return k|0}default:{k=Od[c[h+160>>2]&255](e,f,g)|0;i=j;return k|0}}return 0}function UO(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+16|0;h=m;j=c[e+576>>2]|0;switch(f|0){case 515:{l=c[g>>2]|0;k=c[l>>2]|0;c[g>>2]=l+4;b[j+360>>1]=k;break}case 530:{a[j+227>>0]=1;l=c[g>>2]|0;h=c[l>>2]|0;c[g>>2]=l+4;l=j+228|0;a[l>>0]=h;h=c[g>>2]|0;k=c[h>>2]|0;c[g>>2]=h+4;a[j+229>>0]=k;b[e+192>>1]=d[l>>0]|0;b[e+194>>1]=k&255;break}case 512:{l=c[g>>2]|0;k=c[l>>2]|0;c[g>>2]=l+4;a[j+224>>0]=k;break}case 521:{k=c[g>>2]|0;l=c[k>>2]|0;c[g>>2]=k+4;if(l)if(l>>>0>3){Dw(c[e+628>>2]|0,235256,235352,h);e=0;i=m;return e|0}else{a[j+233>>0]=l;h=c[g>>2]|0;k=c[h>>2]|0;c[g>>2]=h+4;h=j+288|0;j=0;do{o=k+(j<<3)|0;n=c[o+4>>2]|0;g=h+(j<<3)|0;c[g>>2]=c[o>>2];c[g+4>>2]=n;j=j+1|0}while((j|0)!=(l|0))}break}case 513:{o=c[g>>2]|0;n=o;k=c[n>>2]|0;n=c[n+4>>2]|0;c[g>>2]=o+8;o=j+208|0;c[o>>2]=k;c[o+4>>2]=n;break}case 520:{o=c[g>>2]|0;l=c[o>>2]|0;c[g>>2]=o+4;if(l)if(l>>>0>3){Dw(c[e+628>>2]|0,235256,235312,h);o=0;i=m;return o|0}else{a[j+232>>0]=l;h=c[g>>2]|0;k=c[h>>2]|0;c[g>>2]=h+4;h=j+264|0;j=0;do{n=k+(j<<3)|0;g=c[n+4>>2]|0;o=h+(j<<3)|0;c[o>>2]=c[n>>2];c[o+4>>2]=g;j=j+1|0}while((j|0)!=(l|0))}break}case 519:{o=c[g>>2]|0;l=c[o>>2]|0;c[g>>2]=o+4;if(l)if(l>>>0>3){Dw(c[e+628>>2]|0,235256,235272,h);o=0;i=m;return o|0}else{a[j+231>>0]=l;h=c[g>>2]|0;k=c[h>>2]|0;c[g>>2]=h+4;h=j+240|0;j=0;do{n=k+(j<<3)|0;g=c[n+4>>2]|0;o=h+(j<<3)|0;c[o>>2]=c[n>>2];c[o+4>>2]=g;j=j+1|0}while((j|0)!=(l|0))}break}case 514:{o=c[g>>2]|0;n=o;k=c[n>>2]|0;n=c[n+4>>2]|0;c[g>>2]=o+8;o=j+216|0;c[o>>2]=k;c[o+4>>2]=n;break}default:{o=Od[c[j+164>>2]&255](e,f,g)|0;i=m;return o|0}}h=nw(e,f)|0;if(!h){o=0;i=m;return o|0}g=b[h+24>>1]|0;o=e+(((g&65535)>>>5&65535)<<2)+40|0;c[o>>2]=1<<(g&31)|c[o>>2];o=e+12|0;c[o>>2]=c[o>>2]|8;o=1;i=m;return o|0}function VO(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=i;i=i+16|0;n=o;m=c[b+576>>2]|0;if(!m)Sa(235048,231232,616,235064);l=b+48|0;h=c[l>>2]|0;if(h&4){j=m+208|0;k=c[j+4>>2]|0;h=n;c[h>>2]=c[j>>2];c[h+4>>2]=k;_c(f|0,235080,n|0)|0;h=c[l>>2]|0}if(h&8){j=m+216|0;k=c[j+4>>2]|0;h=n;c[h>>2]=c[j>>2];c[h+4>>2]=k;_c(f|0,235112,n|0)|0;h=c[l>>2]|0}if(h&16){$b(235152,14,1,f|0)|0;h=m+231|0;if(a[h>>0]|0){j=m+240|0;k=0;do{r=j+((k&255)<<3)|0;q=c[r+4>>2]|0;p=n;c[p>>2]=c[r>>2];c[p+4>>2]=q;_c(f|0,235168,n|0)|0;k=k+1<<24>>24}while((k&255)<(d[h>>0]|0))}wd(10,f|0)|0;h=c[l>>2]|0}if(h&32){$b(235176,15,1,f|0)|0;h=m+232|0;if(a[h>>0]|0){j=m+264|0;k=0;do{p=j+((k&255)<<3)|0;q=c[p+4>>2]|0;r=n;c[r>>2]=c[p>>2];c[r+4>>2]=q;_c(f|0,235168,n|0)|0;k=k+1<<24>>24}while((k&255)<(d[h>>0]|0))}wd(10,f|0)|0;h=c[l>>2]|0}if(h&64){$b(235192,15,1,f|0)|0;h=m+233|0;if(a[h>>0]|0){j=m+288|0;k=0;do{p=j+((k&255)<<3)|0;q=c[p+4>>2]|0;r=n;c[r>>2]=c[p>>2];c[r+4>>2]=q;_c(f|0,235168,n|0)|0;k=k+1<<24>>24}while((k&255)<(d[h>>0]|0))}wd(10,f|0)|0;h=c[l>>2]|0}if(h&128){c[n>>2]=d[m+224>>0];_c(f|0,235208,n|0)|0;h=c[l>>2]|0}if(h&256){c[n>>2]=e[m+360>>1];_c(f|0,235224,n|0)|0}h=c[m+168>>2]|0;if(!h){i=o;return}$d[h&255](b,f,g);i=o;return}function WO(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function XO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function YO(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+16|0;p=q;m=b+604|0;n=b+608|0;o=b+628|0;f=c[m>>2]|0;g=c[n>>2]|0;a:while(1){if((e|0)>0)l=f;else{r=16;break}while(1){if((g|0)<=0){d=l;f=g;break a}k=l+1|0;h=a[l>>0]|0;j=h<<24>>24;f=g+-1|0;if(h<<24>>24>=0){r=10;break}if(h<<24>>24==-128){l=k;g=f}else{r=6;break}}if((r|0)==6){r=0;f=1-j|0;if((f|0)>(e|0)){h=c[o>>2]|0;c[p>>2]=f-e;Zx(h,235976,235992,p);f=e}j=l+2|0;g=g+-2|0;if((f|0)>0){Cga(d|0,a[k>>0]|0,f|0)|0;d=d+f|0;k=f}else k=f}else if((r|0)==10){r=0;if((e|0)<(j+1|0)){h=c[o>>2]|0;c[p>>2]=1-e+j;Zx(h,235976,235992,p);j=e+-1|0}h=j+1|0;if((g|0)<=(h|0)){r=13;break}NK(d,k,h);d=d+h|0;k=h;j=l+(j+2)|0;g=f-h|0}e=e-k|0;f=j}if((r|0)==13){Zx(c[o>>2]|0,235976,236040,p);d=k}else if((r|0)==16){c[m>>2]=f;c[n>>2]=g;r=1;i=q;return r|0}c[m>>2]=d;c[n>>2]=f;r=c[o>>2]|0;c[p>>2]=c[b+444>>2];Dw(r,235976,236088,p);r=0;i=q;return r|0}function ZO(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=JK(4)|0;b=a+576|0;c[b>>2]=e;if(!e){a=0;i=d;return a|0}if(!(c[a+12>>2]&1024)){a=Ex(a)|0;c[c[b>>2]>>2]=a;a=1;i=d;return a|0}else{a=Ux(a)|0;c[c[b>>2]>>2]=a;a=1;i=d;return a|0}return 0}function _O(a){a=a|0;var b=0;b=i;a=c[a+576>>2]|0;if(a)KK(a);i=b;return 1}function $O(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;p=b+604|0;f=c[p>>2]|0;o=(c[b+588>>2]|0)+(c[b+592>>2]|0)|0;q=b+608|0;do if((e|0)>0){g=0;m=0;a:while(1){n=a[d>>0]|0;e=e+-1|0;d=d+1|0;b:do if((e|0)>0){j=1;while(1){h=j+1|0;if(n<<24>>24!=(a[d>>0]|0)){h=j;break b}e=e+-1|0;d=d+1|0;if((e|0)>0)j=h;else break}}else h=1;while(0);j=g;c:while(1){do if((h|0)==1){do if((f+2|0)>>>0>=o>>>0){if((m&-3|0)!=1){c[q>>2]=f-(c[p>>2]|0)+(c[q>>2]|0);if(!(cy(b)|0)){f=-1;s=46;break a}f=c[p>>2]|0;break}g=j;c[q>>2]=g-(c[p>>2]|0)+(c[q>>2]|0);if(!(cy(b)|0)){f=-1;s=46;break a}k=f-g|0;l=c[p>>2]|0;if((k|0)>0){f=j;g=l;j=k;while(1){j=j+-1|0;a[g>>0]=a[f>>0]|0;if((j|0)<=0)break;else{f=f+1|0;g=g+1|0}}j=c[p>>2]|0;f=l+k|0}else{j=l;f=l}}while(0);if(!m){g=j;s=25;break}else if((m|0)==2){g=j;s=35;break}else if((m|0)==1){g=j;s=30;break}else if((m|0)!=3){g=j;h=m;break c}g=f+-2|0;if((a[g>>0]|0)!=-1){h=1;m=2;continue c}h=a[j>>0]|0;if((h&255)>=126){h=1;m=2;continue c}m=(h&255)+2|0;a[j>>0]=m;a[g>>0]=a[f+-1>>0]|0;h=1;m=(m&255|0)!=127&1;continue c}else while(1){do if((f+2|0)>>>0>=o>>>0){if((m&-3|0)!=1){c[q>>2]=f-(c[p>>2]|0)+(c[q>>2]|0);if(!(cy(b)|0)){f=-1;s=46;break a}g=j;f=c[p>>2]|0;break}g=j;c[q>>2]=g-(c[p>>2]|0)+(c[q>>2]|0);if(!(cy(b)|0)){f=-1;s=46;break a}l=f-g|0;k=c[p>>2]|0;if((l|0)>0){f=j;g=k;j=l;while(1){j=j+-1|0;a[g>>0]=a[f>>0]|0;if((j|0)<=0)break;else{f=f+1|0;g=g+1|0}}g=c[p>>2]|0;f=k+l|0}else{g=k;f=k}}else g=j;while(0);if(!m){s=25;break}else if((m|0)==2){s=35;break}else if((m|0)==1){s=30;break}else if((m|0)==3){j=g;m=2}else{h=m;break c}}while(0);if((s|0)==25){s=0;if((h|0)<=1){s=29;break}if((h|0)<=128){s=28;break}a[f>>0]=-127;a[f+1>>0]=n;j=g;h=h+-128|0;f=f+2|0;m=2;continue}else if((s|0)==30){s=0;if((h|0)<=1){s=34;break}if((h|0)<=128){s=33;break}a[f>>0]=-127;a[f+1>>0]=n;j=g;h=h+-128|0;f=f+2|0;m=3;continue}else if((s|0)==35){s=0;if((h|0)<=1){s=40;break}if((h|0)<=128){s=38;break}a[f>>0]=-127;a[f+1>>0]=n;j=g;h=h+-128|0;f=f+2|0;m=2;continue}}if((s|0)==28){s=0;a[f>>0]=1-h;a[f+1>>0]=n;f=f+2|0;h=2}else if((s|0)==29){s=0;a[f>>0]=0;a[f+1>>0]=n;g=f;f=f+2|0;h=1}else if((s|0)==33){s=0;a[f>>0]=1-h;a[f+1>>0]=n;f=f+2|0;h=3}else if((s|0)==34){s=0;h=(a[g>>0]|0)+1<<24>>24;a[g>>0]=h;a[f>>0]=n;f=f+1|0;h=h<<24>>24!=127&1}else if((s|0)==38){s=0;a[f>>0]=1-h;a[f+1>>0]=n;f=f+2|0;h=2}else if((s|0)==40){s=0;a[f>>0]=0;a[f+1>>0]=n;g=f;f=f+2|0;h=1}if((e|0)>0)m=h;else{s=44;break}}if((s|0)==44){e=c[p>>2]|0;break}else if((s|0)==46){i=r;return f|0}}else e=f;while(0);c[q>>2]=f-e+(c[q>>2]|0);c[p>>2]=f;s=1;i=r;return s|0}function aP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;g=c[c[a+576>>2]>>2]|0;if((d|0)<=0){a=1;i=h;return a|0}while(1){f=(d|0)<(g|0)?d:g;if(($O(a,b,f,e)|0)<0){b=-1;f=4;break}d=d-f|0;if((d|0)<=0){b=1;f=4;break}else b=b+f|0}if((f|0)==4){i=h;return b|0}return 0}function bP(a){a=a|0;return 1}function cP(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;j=l;h=c[a+576>>2]|0;if(!h)Sa(236608,236160,676,236992);c[a+652>>2]=37;if((b[a+126>>1]|0)==1)d=b[a+98>>1]|0;else d=1;b[h+124>>1]=d;f=d&65535;g=ea(c[a+56>>2]|0,f)|0;g=ea(g,c[a+100>>2]|0)|0;if((g|0)==0|d<<16>>16==0){k=0;i=l;return k|0}d=(g<<1)+(f<<1)|0;if((g|0)<1|(d|0)==0){k=0;i=l;return k|0}g=JK(d)|0;c[h+120>>2]=g;if(!g){k=0;i=l;return k|0}g=h+132|0;do if((c[g>>2]|0)==-1){d=b[a+86>>1]|0;f=e[a+84>>1]|0;switch(f|0){case 11:{if(d<<16>>16==1|d<<16>>16==4){d=2;k=15}break}case 16:{if(d<<16>>16==1|d<<16>>16==4){d=4;k=15}break}case 8:{if(d<<16>>16==1|d<<16>>16==4){d=0;k=15}break}case 32:{if(d<<16>>16==3){d=5;k=15}break}case 12:{if(d<<16>>16==2|d<<16>>16==4){d=3;k=15}break}default:{}}if((k|0)==15){c[g>>2]=d;break}c[g>>2]=-1;k=c[a+628>>2]|0;c[j>>2]=f;Dw(k,236992,237016,j);k=0;i=l;return k|0}while(0);if(!(iI(h+64|0,236736,56)|0)){k=h+128|0;c[k>>2]=c[k>>2]|1;k=1;i=l;return k|0}else{k=c[a+628>>2]|0;c[j>>2]=c[h+88>>2];Dw(k,236992,236744,j);k=0;i=l;return k|0}return 0}function dP(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;b=c[a+576>>2]|0;if(!b)Sa(236608,236160,723,236968);else{e=b+64|0;c[e>>2]=c[a+588>>2];c[b+68>>2]=c[a+608>>2];a=(gI(e)|0)==0&1;i=d;return a|0}return 0}function eP(d,f,h,j){d=d|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0.0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;N=i;i=i+16|0;M=N;q=c[d+576>>2]|0;L=q+132|0;switch(c[L>>2]|0){case 2:case 3:case 4:{h=h>>>1;break}case 1:case 0:break;case 5:{h=h>>>2;break}default:{P=c[d+628>>2]|0;c[M>>2]=e[d+84>>1];Dw(P,236752,236480,M);P=0;i=N;return P|0}}I=q+124|0;J=ea(e[I>>1]|0,c[d+56>>2]|0)|0;if(!q)Sa(236608,236160,772,236752);n=q+120|0;j=q+64|0;c[q+76>>2]=c[n>>2];k=q+80|0;c[k>>2]=h<<1;K=d+628|0;o=d+444|0;l=q+88|0;do{m=jI(j,1)|0;if((m|0)==1){P=12;break}else if((m|0)==-3){H=c[K>>2]|0;G=c[l>>2]|0;c[M>>2]=c[o>>2];c[M+4>>2]=G;Dw(H,236752,236768,M);if(lI(j)|0){O=0;P=135;break}}else if(m){P=10;break}}while((c[k>>2]|0)!=0);if((P|0)==10){P=c[K>>2]|0;c[M>>2]=c[l>>2];Dw(P,236752,236424,M);P=0;i=N;return P|0}else if((P|0)==12){j=c[k>>2]|0;if(j){P=c[K>>2]|0;c[M>>2]=c[o>>2];L=M+4|0;c[L>>2]=j;c[L+4>>2]=0;Dw(P,236752,236808,M);P=0;i=N;return P|0}}else if((P|0)==135){i=N;return O|0}l=c[n>>2]|0;if(c[d+12>>2]&128)Ix(l,h);j=(h|0)%(J|0)|0;if(j){H=c[K>>2]|0;c[M>>2]=J;c[M+4>>2]=h;Zx(H,236752,236864,M);h=h-j|0}if((h|0)<=0){P=1;i=N;return P|0}C=q+148|0;D=J<<2;A=J+-3|0;E=(A|0)>0;B=J+-4|0;F=(B|0)>0;G=q+152|0;H=J<<1;z=q+156|0;j=f;y=0;x=l;a:while(1){switch(c[L>>2]|0){case 3:{u=e[I>>1]|0;w=c[C>>2]|0;do if((J|0)>=(u|0))if((u|0)==3){n=(e[x>>1]|0)&2047;p=+g[w+(n<<2)>>2]*2048.0;q=(e[x+2>>1]|0)&2047;r=+g[w+(q<<2)>>2]*2048.0;k=(e[x+4>>1]|0)&2047;s=+g[w+(k<<2)>>2]*2048.0;if(p<3071.0)l=~~p&65535;else l=3071;b[j>>1]=l;if(r<3071.0)l=~~r&65535;else l=3071;b[j+2>>1]=l;if(s<3071.0)l=~~s&65535;else l=3071;b[j+4>>1]=l;if(E){f=A;o=x;t=j;m=q}else break;do{u=o;o=o+6|0;q=t;t=t+6|0;n=(e[o>>1]|0)+n|0;p=+g[w+((n&2047)<<2)>>2]*2048.0;m=(e[u+8>>1]|0)+m|0;r=+g[w+((m&2047)<<2)>>2]*2048.0;k=(e[u+10>>1]|0)+k|0;s=+g[w+((k&2047)<<2)>>2]*2048.0;if(p<3071.0)l=~~p&65535;else l=3071;b[t>>1]=l;if(r<3071.0)l=~~r&65535;else l=3071;b[q+8>>1]=l;if(s<3071.0)l=~~s&65535;else l=3071;b[q+10>>1]=l;f=f+-3|0}while((f|0)>0)}else if((u|0)==4){n=(e[x>>1]|0)&2047;p=+g[w+(n<<2)>>2]*2048.0;m=(e[x+2>>1]|0)&2047;r=+g[w+(m<<2)>>2]*2048.0;q=(e[x+4>>1]|0)&2047;s=+g[w+(q<<2)>>2]*2048.0;k=(e[x+6>>1]|0)&2047;v=+g[w+(k<<2)>>2]*2048.0;if(p<3071.0)l=~~p&65535;else l=3071;b[j>>1]=l;if(r<3071.0)l=~~r&65535;else l=3071;b[j+2>>1]=l;if(s<3071.0)l=~~s&65535;else l=3071;b[j+4>>1]=l;if(v<3071.0)l=~~v&65535;else l=3071;b[j+6>>1]=l;if(F){o=B;t=x;u=j;f=q}else break;do{l=t;t=t+8|0;q=u;u=u+8|0;n=(e[t>>1]|0)+n|0;p=+g[w+((n&2047)<<2)>>2]*2048.0;m=(e[l+10>>1]|0)+m|0;r=+g[w+((m&2047)<<2)>>2]*2048.0;f=(e[l+12>>1]|0)+f|0;s=+g[w+((f&2047)<<2)>>2]*2048.0;k=(e[l+14>>1]|0)+k|0;v=+g[w+((k&2047)<<2)>>2]*2048.0;if(p<3071.0)l=~~p&65535;else l=3071;b[u>>1]=l;if(r<3071.0)l=~~r&65535;else l=3071;b[q+10>>1]=l;if(s<3071.0)l=~~s&65535;else l=3071;b[q+12>>1]=l;if(v<3071.0)l=~~v&65535;else l=3071;b[q+14>>1]=l;o=o+-4|0}while((o|0)>0)}else{n=0-u|0;m=(n|0)>-1;f=u+1|0;k=x;q=j;o=u;while(1){o=o+-1|0;p=+g[w+(((e[k>>1]|0)&2047)<<2)>>2]*2048.0;if(p<3071.0)l=~~p&65535;else l=3071;b[q>>1]=l;if((o|0)<=0)break;else{k=k+2|0;q=q+2|0}}t=f+(m?n:-1)|0;l=J-u|0;if((l|0)>0){f=j;o=x}else break;do{f=f+(t<<1)|0;o=o+(t<<1)|0;q=o;n=f;m=u;while(1){m=m+-1|0;Q=q+(u<<1)|0;k=(e[Q>>1]|0)+(e[q>>1]|0)|0;b[Q>>1]=k;p=+g[w+((k&2047)<<2)>>2]*2048.0;if(p<3071.0)k=~~p&65535;else k=3071;b[n>>1]=k;if((m|0)<=0)break;else{q=q+2|0;n=n+2|0}}l=l-u|0}while((l|0)>0)}while(0);j=j+H|0;break}case 4:{t=e[I>>1]|0;u=c[G>>2]|0;do if((J|0)>=(t|0))if((t|0)==4){k=(e[x>>1]|0)&2047;b[j>>1]=b[u+(k<<1)>>1]|0;n=(e[x+2>>1]|0)&2047;b[j+2>>1]=b[u+(n<<1)>>1]|0;q=(e[x+4>>1]|0)&2047;b[j+4>>1]=b[u+(q<<1)>>1]|0;l=(e[x+6>>1]|0)&2047;b[j+6>>1]=b[u+(l<<1)>>1]|0;if(F){m=B;f=x;o=j}else break;do{w=f;f=f+8|0;Q=o;o=o+8|0;k=(e[f>>1]|0)+k|0;b[o>>1]=b[u+((k&2047)<<1)>>1]|0;n=(e[w+10>>1]|0)+n|0;b[Q+10>>1]=b[u+((n&2047)<<1)>>1]|0;q=(e[w+12>>1]|0)+q|0;b[Q+12>>1]=b[u+((q&2047)<<1)>>1]|0;l=(e[w+14>>1]|0)+l|0;b[Q+14>>1]=b[u+((l&2047)<<1)>>1]|0;m=m+-4|0}while((m|0)>0)}else if((t|0)==3){k=(e[x>>1]|0)&2047;b[j>>1]=b[u+(k<<1)>>1]|0;q=(e[x+2>>1]|0)&2047;b[j+2>>1]=b[u+(q<<1)>>1]|0;l=(e[x+4>>1]|0)&2047;b[j+4>>1]=b[u+(l<<1)>>1]|0;if(E){n=A;m=x;f=j}else break;do{w=m;m=m+6|0;Q=f;f=f+6|0;k=(e[m>>1]|0)+k|0;b[f>>1]=b[u+((k&2047)<<1)>>1]|0;q=(e[w+8>>1]|0)+q|0;b[Q+8>>1]=b[u+((q&2047)<<1)>>1]|0;l=(e[w+10>>1]|0)+l|0;b[Q+10>>1]=b[u+((l&2047)<<1)>>1]|0;n=n+-3|0}while((n|0)>0)}else{q=0-t|0;n=(q|0)>-1;m=t+1|0;l=x;k=j;o=t;while(1){o=o+-1|0;b[k>>1]=b[u+(((e[l>>1]|0)&2047)<<1)>>1]|0;if((o|0)<=0)break;else{l=l+2|0;k=k+2|0}}o=m+(n?q:-1)|0;l=J-t|0;if((l|0)>0){m=j;f=x}else break;do{m=m+(o<<1)|0;f=f+(o<<1)|0;k=f;q=m;n=t;while(1){n=n+-1|0;Q=k+(t<<1)|0;b[Q>>1]=(e[Q>>1]|0)+(e[k>>1]|0);b[q>>1]=b[u+(((e[k>>1]|0)&2047)<<1)>>1]|0;if((n|0)<=0)break;else{k=k+2|0;q=q+2|0}}l=l-t|0}while((l|0)>0)}while(0);j=j+H|0;break}case 5:{t=e[I>>1]|0;u=c[C>>2]|0;do if((J|0)>=(t|0))if((t|0)==4){k=(e[x>>1]|0)&2047;n=(e[x+2>>1]|0)&2047;r=+g[u+(n<<2)>>2];q=(e[x+4>>1]|0)&2047;s=+g[u+(q<<2)>>2];l=(e[x+6>>1]|0)&2047;v=+g[u+(l<<2)>>2];g[j>>2]=+g[u+(k<<2)>>2];g[j+4>>2]=r;g[j+8>>2]=s;g[j+12>>2]=v;if(F){m=B;f=x;o=j}else break;do{w=f;f=f+8|0;Q=o;o=o+16|0;k=(e[f>>1]|0)+k|0;n=(e[w+10>>1]|0)+n|0;r=+g[u+((n&2047)<<2)>>2];q=(e[w+12>>1]|0)+q|0;s=+g[u+((q&2047)<<2)>>2];l=(e[w+14>>1]|0)+l|0;v=+g[u+((l&2047)<<2)>>2];g[o>>2]=+g[u+((k&2047)<<2)>>2];g[Q+20>>2]=r;g[Q+24>>2]=s;g[Q+28>>2]=v;m=m+-4|0}while((m|0)>0)}else if((t|0)==3){k=(e[x>>1]|0)&2047;q=(e[x+2>>1]|0)&2047;s=+g[u+(q<<2)>>2];l=(e[x+4>>1]|0)&2047;v=+g[u+(l<<2)>>2];g[j>>2]=+g[u+(k<<2)>>2];g[j+4>>2]=s;g[j+8>>2]=v;if(E){n=A;m=x;f=j}else break;do{w=m;m=m+6|0;Q=f;f=f+12|0;k=(e[m>>1]|0)+k|0;q=(e[w+8>>1]|0)+q|0;s=+g[u+((q&2047)<<2)>>2];l=(e[w+10>>1]|0)+l|0;v=+g[u+((l&2047)<<2)>>2];g[f>>2]=+g[u+((k&2047)<<2)>>2];g[Q+16>>2]=s;g[Q+20>>2]=v;n=n+-3|0}while((n|0)>0)}else{q=0-t|0;n=(q|0)>-1;m=t+1|0;l=x;k=j;o=t;while(1){o=o+-1|0;g[k>>2]=+g[u+(((e[l>>1]|0)&2047)<<2)>>2];if((o|0)<=0)break;else{l=l+2|0;k=k+4|0}}o=m+(n?q:-1)|0;l=J-t|0;if((l|0)>0){m=j;f=x}else break;do{m=m+(o<<2)|0;f=f+(o<<1)|0;k=f;q=m;n=t;while(1){n=n+-1|0;Q=k+(t<<1)|0;b[Q>>1]=(e[Q>>1]|0)+(e[k>>1]|0);g[q>>2]=+g[u+(((e[k>>1]|0)&2047)<<2)>>2];if((n|0)<=0)break;else{k=k+2|0;q=q+4|0}}l=l-t|0}while((l|0)>0)}while(0);j=j+D|0;break}case 2:{t=e[I>>1]|0;do if((J|0)>=(t|0))if((t|0)==4){m=b[x>>1]|0;b[j>>1]=m;q=b[x+2>>1]|0;b[j+2>>1]=q;k=b[x+4>>1]|0;b[j+4>>1]=k;l=b[x+6>>1]|0;b[j+6>>1]=l;if(!F)break;o=j;t=x;u=B;f=l&65535;n=k&65535;k=q&65535;l=m&65535;do{w=t;t=t+8|0;Q=o;o=o+8|0;l=(e[t>>1]|0)+l|0;b[o>>1]=l&2047;k=(e[w+10>>1]|0)+k|0;b[Q+10>>1]=k&2047;n=(e[w+12>>1]|0)+n|0;b[Q+12>>1]=n&2047;f=(e[w+14>>1]|0)+f|0;b[Q+14>>1]=f&2047;u=u+-4|0}while((u|0)>0)}else if((t|0)==3){q=b[x>>1]|0;b[j>>1]=q;k=b[x+2>>1]|0;b[j+2>>1]=k;l=b[x+4>>1]|0;b[j+4>>1]=l;if(!E)break;m=j;o=x;f=A;n=l&65535;k=k&65535;l=q&65535;do{w=o;o=o+6|0;Q=m;m=m+6|0;l=(e[o>>1]|0)+l|0;b[m>>1]=l&2047;k=(e[w+8>>1]|0)+k|0;b[Q+8>>1]=k&2047;n=(e[w+10>>1]|0)+n|0;b[Q+10>>1]=n&2047;f=f+-3|0}while((f|0)>0)}else{n=0-t|0;m=(n|0)>-1;o=t+1|0;l=x;k=j;q=t;while(1){q=q+-1|0;b[k>>1]=(e[l>>1]|0)&2047;if((q|0)<=0)break;else{l=l+2|0;k=k+2|0}}f=o+(m?n:-1)|0;l=J-t|0;if((l|0)>0){m=j;o=x}else break;do{m=m+(f<<1)|0;o=o+(f<<1)|0;k=o;q=m;n=t;while(1){n=n+-1|0;Q=k+(t<<1)|0;b[Q>>1]=(e[Q>>1]|0)+(e[k>>1]|0);b[q>>1]=(e[k>>1]|0)&2047;if((n|0)<=0)break;else{k=k+2|0;q=q+2|0}}l=l-t|0}while((l|0)>0)}while(0);j=j+H|0;break}case 0:{t=e[I>>1]|0;u=c[z>>2]|0;do if((J|0)>=(t|0))if((t|0)==4){k=(e[x>>1]|0)&2047;a[j>>0]=a[u+k>>0]|0;n=(e[x+2>>1]|0)&2047;a[j+1>>0]=a[u+n>>0]|0;q=(e[x+4>>1]|0)&2047;a[j+2>>0]=a[u+q>>0]|0;l=(e[x+6>>1]|0)&2047;a[j+3>>0]=a[u+l>>0]|0;if(F){m=B;f=x;o=j}else break;do{w=f;f=f+8|0;Q=o;o=o+4|0;k=(e[f>>1]|0)+k|0;a[o>>0]=a[u+(k&2047)>>0]|0;n=(e[w+10>>1]|0)+n|0;a[Q+5>>0]=a[u+(n&2047)>>0]|0;q=(e[w+12>>1]|0)+q|0;a[Q+6>>0]=a[u+(q&2047)>>0]|0;l=(e[w+14>>1]|0)+l|0;a[Q+7>>0]=a[u+(l&2047)>>0]|0;m=m+-4|0}while((m|0)>0)}else if((t|0)==3){k=(e[x>>1]|0)&2047;a[j>>0]=a[u+k>>0]|0;q=(e[x+2>>1]|0)&2047;a[j+1>>0]=a[u+q>>0]|0;l=(e[x+4>>1]|0)&2047;a[j+2>>0]=a[u+l>>0]|0;if(E){n=A;m=x;f=j}else break;do{w=m;m=m+6|0;Q=f;f=f+3|0;k=(e[m>>1]|0)+k|0;a[f>>0]=a[u+(k&2047)>>0]|0;q=(e[w+8>>1]|0)+q|0;a[Q+4>>0]=a[u+(q&2047)>>0]|0;l=(e[w+10>>1]|0)+l|0;a[Q+5>>0]=a[u+(l&2047)>>0]|0;n=n+-3|0}while((n|0)>0)}else{q=0-t|0;n=(q|0)>-1;m=t+1|0;l=x;k=j;o=t;while(1){o=o+-1|0;a[k>>0]=a[u+((e[l>>1]|0)&2047)>>0]|0;if((o|0)<=0)break;else{l=l+2|0;k=k+1|0}}o=m+(n?q:-1)|0;l=J-t|0;if((l|0)>0){m=j;f=x}else break;do{m=m+o|0;f=f+(o<<1)|0;k=f;q=m;n=t;while(1){n=n+-1|0;Q=k+(t<<1)|0;b[Q>>1]=(e[Q>>1]|0)+(e[k>>1]|0);a[q>>0]=a[u+((e[k>>1]|0)&2047)>>0]|0;if((n|0)<=0)break;else{k=k+2|0;q=q+1|0}}l=l-t|0}while((l|0)>0)}while(0);j=j+J|0;break}case 1:{t=e[I>>1]|0;u=c[z>>2]|0;do if((J|0)>=(t|0))if((t|0)==3){a[j>>0]=0;l=(e[x+4>>1]|0)&2047;q=(e[x+2>>1]|0)&2047;w=a[u+q>>0]|0;k=(e[x>>1]|0)&2047;Q=a[u+k>>0]|0;a[j+1>>0]=a[u+l>>0]|0;a[j+2>>0]=w;a[j+3>>0]=Q;if(E){n=A;m=x;f=j}else break;do{t=m;m=m+6|0;Q=f;f=f+4|0;a[f>>0]=0;l=(e[t+10>>1]|0)+l|0;q=(e[t+8>>1]|0)+q|0;t=a[u+(q&2047)>>0]|0;k=(e[m>>1]|0)+k|0;w=a[u+(k&2047)>>0]|0;a[Q+5>>0]=a[u+(l&2047)>>0]|0;a[Q+6>>0]=t;a[Q+7>>0]=w;n=n+-3|0}while((n|0)>0)}else if((t|0)==4){l=(e[x+6>>1]|0)&2047;q=(e[x+4>>1]|0)&2047;t=a[u+q>>0]|0;n=(e[x+2>>1]|0)&2047;w=a[u+n>>0]|0;k=(e[x>>1]|0)&2047;Q=a[u+k>>0]|0;a[j>>0]=a[u+l>>0]|0;a[j+1>>0]=t;a[j+2>>0]=w;a[j+3>>0]=Q;if(F){m=B;f=x;o=j}else break;do{t=f;f=f+8|0;Q=o;o=o+4|0;l=(e[t+14>>1]|0)+l|0;q=(e[t+12>>1]|0)+q|0;R=a[u+(q&2047)>>0]|0;n=(e[t+10>>1]|0)+n|0;t=a[u+(n&2047)>>0]|0;k=(e[f>>1]|0)+k|0;w=a[u+(k&2047)>>0]|0;a[o>>0]=a[u+(l&2047)>>0]|0;a[Q+5>>0]=R;a[Q+6>>0]=t;a[Q+7>>0]=w;m=m+-4|0}while((m|0)>0)}else{q=0-t|0;n=(q|0)>-1;m=t+1|0;l=x;k=j;o=t;while(1){o=o+-1|0;a[k>>0]=a[u+((e[l>>1]|0)&2047)>>0]|0;if((o|0)<=0)break;else{l=l+2|0;k=k+1|0}}o=m+(n?q:-1)|0;l=J-t|0;if((l|0)>0){m=j;f=x}else break;do{m=m+o|0;f=f+(o<<1)|0;k=f;q=m;n=t;while(1){n=n+-1|0;Q=k+(t<<1)|0;b[Q>>1]=(e[Q>>1]|0)+(e[k>>1]|0);a[q>>0]=a[u+((e[k>>1]|0)&2047)>>0]|0;if((n|0)<=0)break;else{k=k+2|0;q=q+1|0}}l=l-t|0}while((l|0)>0)}while(0);j=j+J|0;break}default:break a}y=y+J|0;if((y|0)>=(h|0)){O=1;P=135;break}else x=x+(J<<1)|0}if((P|0)==135){i=N;return O|0}Q=c[K>>2]|0;c[M>>2]=e[d+84>>1];Dw(Q,236752,236936,M);Q=0;i=N;return Q|0}function fP(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;j=l;h=c[a+576>>2]|0;if(!h)Sa(236608,236160,880,236648);if((b[a+126>>1]|0)==1)d=b[a+98>>1]|0;else d=1;b[h+124>>1]=d;d=ea(c[a+56>>2]|0,d&65535)|0;d=ea(d,c[a+100>>2]|0)|0;if(!d){k=0;i=l;return k|0}g=JK(d<<1)|0;c[h+120>>2]=g;if(!g){k=0;i=l;return k|0}g=h+132|0;do if((c[g>>2]|0)==-1){d=b[a+86>>1]|0;f=e[a+84>>1]|0;switch(f|0){case 32:{if(d<<16>>16==3){d=5;k=14}break}case 8:{if(d<<16>>16==1|d<<16>>16==4){d=0;k=14}break}case 12:{if(d<<16>>16==2|d<<16>>16==4){d=3;k=14}break}case 11:{if(d<<16>>16==1|d<<16>>16==4){d=2;k=14}break}case 16:{if(d<<16>>16==1|d<<16>>16==4){d=4;k=14}break}default:{}}if((k|0)==14){c[g>>2]=d;break}c[g>>2]=-1;k=c[a+628>>2]|0;c[j>>2]=f;Dw(k,236648,236672,j);k=0;i=l;return k|0}while(0);if(!(_H(h+64|0,c[h+136>>2]|0,236736,56)|0)){k=h+128|0;c[k>>2]=c[k>>2]|1;k=1;i=l;return k|0}else{k=c[a+628>>2]|0;c[j>>2]=c[h+88>>2];Dw(k,236648,236744,j);k=0;i=l;return k|0}return 0}function gP(a,b){a=a|0;b=b|0;var d=0;d=i;b=c[a+576>>2]|0;if(!b)Sa(236608,236160,919,236624);else{c[b+76>>2]=c[a+588>>2];c[b+80>>2]=c[a+592>>2];a=(bI(b+64|0)|0)==0&1;i=d;return a|0}return 0}function hP(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;n=p;b=c[a+576>>2]|0;f=b+64|0;c[b+68>>2]=0;g=b+80|0;h=a+592|0;j=a+608|0;k=a+588|0;l=b+76|0;while(1){m=eI(f,4)|0;if(m>>>0>=2)break;d=c[g>>2]|0;e=c[h>>2]|0;if((e|0)!=(d|0)){c[j>>2]=e-d;cy(a)|0;c[l>>2]=c[k>>2];c[g>>2]=c[h>>2]}if((m|0)==1){b=1;o=7;break}}if((o|0)==7){i=p;return b|0}o=c[a+628>>2]|0;c[n>>2]=c[b+88>>2];Dw(o,236584,236424,n);o=0;i=p;return o|0}function iP(a,f,h,j){a=a|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;P=i;i=i+16|0;O=P;N=c[a+576>>2]|0;M=c[N+132>>2]|0;switch(M|0){case 2:case 3:case 4:{h=h>>>1;break}case 5:{h=h>>>2;break}case 1:case 0:break;default:{Q=c[a+628>>2]|0;c[O>>2]=e[a+84>>1];Dw(Q,236464,236480,O);Q=0;i=P;return Q|0}}B=N+124|0;C=ea(e[B>>1]|0,c[a+56>>2]|0)|0;L=c[N+120>>2]|0;a:do if((h|0)>0){D=N+160|0;E=C<<2;F=C+-1|0;z=C+-3|0;G=(z|0)>0;A=C+-4|0;H=(A|0)>0;I=N+164|0;J=C<<1;K=N+168|0;j=f;x=0;y=L;while(1){if((M|0)==5){f=e[B>>1]|0;v=c[D>>2]|0;w=+g[59098];do if((C|0)>=(f|0))if((f|0)==3){o=+g[j>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=+g[59094]*+ca(+(o*+g[59096]))+.5}else o=0.0;while(0);q=~~o&65535;b[y>>1]=q;q=q&65535;o=+g[j+4>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=+g[59094]*+ca(+(o*+g[59096]))+.5}else o=0.0;while(0);k=~~o&65535;b[y+2>>1]=k;k=k&65535;o=+g[j+8>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=+g[59094]*+ca(+(o*+g[59096]))+.5}else o=0.0;while(0);f=~~o&65535;b[y+4>>1]=f;if(!G)break;t=+g[59094];u=+g[59096];l=z;n=j;r=y;m=f&65535;do{p=r;r=r+6|0;f=n;n=n+12|0;o=+g[n>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=t*+ca(+(u*o))+.5}else o=0.0;while(0);s=q;q=~~o;b[r>>1]=q-s&2047;o=+g[f+16>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=t*+ca(+(u*o))+.5}else o=0.0;while(0);s=k;k=~~o;b[p+8>>1]=k-s&2047;o=+g[f+20>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=t*+ca(+(u*o))+.5}else o=0.0;while(0);s=m;m=~~o;b[p+10>>1]=m-s&2047;l=l+-3|0}while((l|0)>0)}else if((f|0)==4){o=+g[j>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=+g[59094]*+ca(+(o*+g[59096]))+.5}else o=0.0;while(0);p=~~o&65535;b[y>>1]=p;p=p&65535;o=+g[j+4>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=+g[59094]*+ca(+(o*+g[59096]))+.5}else o=0.0;while(0);q=~~o&65535;b[y+2>>1]=q;q=q&65535;o=+g[j+8>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=+g[59094]*+ca(+(o*+g[59096]))+.5}else o=0.0;while(0);k=~~o&65535;b[y+4>>1]=k;k=k&65535;o=+g[j+12>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=+g[59094]*+ca(+(o*+g[59096]))+.5}else o=0.0;while(0);f=~~o&65535;b[y+6>>1]=f;if(!H)break;t=+g[59094];u=+g[59096];n=A;r=j;s=y;l=f&65535;do{m=s;s=s+8|0;f=r;r=r+16|0;o=+g[r>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=t*+ca(+(u*o))+.5}else o=0.0;while(0);R=p;p=~~o;b[s>>1]=p-R&2047;o=+g[f+20>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=t*+ca(+(u*o))+.5}else o=0.0;while(0);R=q;q=~~o;b[m+10>>1]=q-R&2047;o=+g[f+24>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=t*+ca(+(u*o))+.5}else o=0.0;while(0);R=k;k=~~o;b[m+12>>1]=k-R&2047;o=+g[f+28>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=t*+ca(+(u*o))+.5}else o=0.0;while(0);R=l;l=~~o;b[m+14>>1]=l-R&2047;n=n+-4|0}while((n|0)>0)}else{q=j+(F<<2)|0;k=y+(F<<1)|0;p=C-f|0;o=+g[59094];if((p|0)>0){t=+g[59096];r=0-f|0;r=~(((r|0)>-1?r:-1)+f);do{m=q;l=k;n=f;while(1){n=n+-1|0;u=+g[m>>2];do if(!(u<0.0)){if(u<2.0){u=+(e[v+(~~(w*u)<<1)>>1]|0|0);break}if(u>24.200000762939453)u=2047.0;else u=o*+ca(+(t*u))+.5}else u=0.0;while(0);s=~~u&65535;b[l>>1]=s;R=l+(f<<1)|0;b[R>>1]=(e[R>>1]|0)-(s&65535)&2047;if((n|0)<=0)break;else{m=m+-4|0;l=l+-2|0}}q=q+(r<<2)|0;k=k+(r<<1)|0;p=p-f|0}while((p|0)>0);u=o}else{u=o;t=+g[59096]}while(1){f=f+-1|0;o=+g[q>>2];do if(!(o<0.0)){if(o<2.0){o=+(e[v+(~~(w*o)<<1)>>1]|0|0);break}if(o>24.200000762939453)o=2047.0;else o=u*+ca(+(t*o))+.5}else o=0.0;while(0);b[k>>1]=~~o;if((f|0)<=0)break;else{q=q+-4|0;k=k+-2|0}}}while(0);j=j+E|0}else if((M|0)==4){f=e[B>>1]|0;v=c[I>>2]|0;do if((C|0)>=(f|0))if((f|0)==3){p=b[v+((e[j>>1]|0)>>>2<<1)>>1]|0;b[y>>1]=p;k=b[v+((e[j+2>>1]|0)>>>2<<1)>>1]|0;b[y+2>>1]=k;f=b[v+((e[j+4>>1]|0)>>>2<<1)>>1]|0;b[y+4>>1]=f;if(!G)break;q=z;l=j;n=y;m=f&65535;k=k&65535;f=p&65535;do{R=n;n=n+6|0;r=l;l=l+6|0;s=f;f=e[v+((e[l>>1]|0)>>>2<<1)>>1]|0;b[n>>1]=f-s&2047;s=k;k=e[v+((e[r+8>>1]|0)>>>2<<1)>>1]|0;b[R+8>>1]=k-s&2047;s=m;m=e[v+((e[r+10>>1]|0)>>>2<<1)>>1]|0;b[R+10>>1]=m-s&2047;q=q+-3|0}while((q|0)>0)}else if((f|0)==4){m=b[v+((e[j>>1]|0)>>>2<<1)>>1]|0;b[y>>1]=m;q=b[v+((e[j+2>>1]|0)>>>2<<1)>>1]|0;b[y+2>>1]=q;k=b[v+((e[j+4>>1]|0)>>>2<<1)>>1]|0;b[y+4>>1]=k;f=b[v+((e[j+6>>1]|0)>>>2<<1)>>1]|0;b[y+6>>1]=f;if(!H)break;n=A;r=j;s=y;l=f&65535;p=k&65535;k=q&65535;f=m&65535;do{R=s;s=s+8|0;q=r;r=r+8|0;m=f;f=e[v+((e[r>>1]|0)>>>2<<1)>>1]|0;b[s>>1]=f-m&2047;m=k;k=e[v+((e[q+10>>1]|0)>>>2<<1)>>1]|0;b[R+10>>1]=k-m&2047;m=p;p=e[v+((e[q+12>>1]|0)>>>2<<1)>>1]|0;b[R+12>>1]=p-m&2047;m=l;l=e[v+((e[q+14>>1]|0)>>>2<<1)>>1]|0;b[R+14>>1]=l-m&2047;n=n+-4|0}while((n|0)>0)}else{m=j+(F<<1)|0;k=y+(F<<1)|0;l=C-f|0;if((l|0)>0){r=0-f|0;r=~(((r|0)>-1?r:-1)+f);do{n=m;p=k;q=f;while(1){q=q+-1|0;s=b[v+((e[n>>1]|0)>>>2<<1)>>1]|0;b[p>>1]=s;R=p+(f<<1)|0;b[R>>1]=(e[R>>1]|0)-(s&65535)&2047;if((q|0)<=0)break;else{n=n+-2|0;p=p+-2|0}}m=m+(r<<1)|0;k=k+(r<<1)|0;l=l-f|0}while((l|0)>0)}while(1){f=f+-1|0;b[k>>1]=b[v+((e[m>>1]|0)>>>2<<1)>>1]|0;if((f|0)<=0)break;else{m=m+-2|0;k=k+-2|0}}}while(0);j=j+J|0}else if(!M){f=e[B>>1]|0;v=c[K>>2]|0;do if((C|0)>=(f|0))if((f|0)==4){m=b[v+((d[j>>0]|0)<<1)>>1]|0;b[y>>1]=m;q=b[v+((d[j+1>>0]|0)<<1)>>1]|0;b[y+2>>1]=q;k=b[v+((d[j+2>>0]|0)<<1)>>1]|0;b[y+4>>1]=k;f=b[v+((d[j+3>>0]|0)<<1)>>1]|0;b[y+6>>1]=f;if(!H)break;n=A;r=j;s=y;l=f&65535;p=k&65535;k=q&65535;f=m&65535;do{q=r;r=r+4|0;m=f;f=e[v+((d[r>>0]|0)<<1)>>1]|0;R=s;s=s+8|0;b[s>>1]=f-m&2047;m=k;k=e[v+((d[q+5>>0]|0)<<1)>>1]|0;b[R+10>>1]=k-m&2047;m=p;p=e[v+((d[q+6>>0]|0)<<1)>>1]|0;b[R+12>>1]=p-m&2047;m=l;l=e[v+((d[q+7>>0]|0)<<1)>>1]|0;b[R+14>>1]=l-m&2047;n=n+-4|0}while((n|0)>0)}else if((f|0)==3){p=b[v+((d[j>>0]|0)<<1)>>1]|0;b[y>>1]=p;k=b[v+((d[j+1>>0]|0)<<1)>>1]|0;b[y+2>>1]=k;f=b[v+((d[j+2>>0]|0)<<1)>>1]|0;b[y+4>>1]=f;if(!G)break;q=z;l=j;n=y;m=f&65535;k=k&65535;f=p&65535;do{r=l;l=l+3|0;s=f;f=e[v+((d[l>>0]|0)<<1)>>1]|0;R=n;n=n+6|0;b[n>>1]=f-s&2047;s=k;k=e[v+((d[r+4>>0]|0)<<1)>>1]|0;b[R+8>>1]=k-s&2047;s=m;m=e[v+((d[r+5>>0]|0)<<1)>>1]|0;b[R+10>>1]=m-s&2047;q=q+-3|0}while((q|0)>0)}else{m=F+f|0;k=y+(m<<1)|0;m=j+m|0;l=C-f|0;if((l|0)>0){r=0-f|0;r=~(((r|0)>-1?r:-1)+f);do{n=m;p=k;q=f;while(1){q=q+-1|0;s=b[v+((d[n>>0]|0)<<1)>>1]|0;b[p>>1]=s;R=p+(f<<1)|0;b[R>>1]=(e[R>>1]|0)-(s&65535)&2047;if((q|0)<=0)break;else{n=n+-1|0;p=p+-2|0}}m=m+r|0;k=k+(r<<1)|0;l=l-f|0}while((l|0)>0)}while(1){f=f+-1|0;b[k>>1]=b[v+((d[m>>0]|0)<<1)>>1]|0;if((f|0)<=0)break;else{m=m+-1|0;k=k+-2|0}}}while(0);j=j+C|0}else break;x=x+C|0;if((x|0)>=(h|0))break a;else y=y+(C<<1)|0}Q=c[a+628>>2]|0;c[O>>2]=e[a+84>>1];Dw(Q,236464,236480,O);Q=0;i=P;return Q|0}while(0);n=N+64|0;c[n>>2]=L;m=N+68|0;c[m>>2]=h<<1;if((h&2147483647|0)!=(h|0)){Dw(c[a+628>>2]|0,236464,236520,O);Q=0;i=P;return Q|0}j=N+80|0;h=a+592|0;k=a+608|0;f=a+588|0;l=N+76|0;while(1){if(eI(n,0)|0)break;if(!(c[j>>2]|0)){c[k>>2]=c[h>>2];cy(a)|0;c[l>>2]=c[f>>2];c[j>>2]=c[h>>2]}if(!(c[m>>2]|0)){j=1;Q=145;break}}if((Q|0)==145){i=P;return j|0}Q=c[a+628>>2]|0;c[O>>2]=c[N+88>>2];Dw(Q,236464,236560,O);Q=0;i=P;return Q|0}function jP(a){a=a|0;b[a+84>>1]=8;b[a+86>>1]=1;return}function kP(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;d=a+576|0;e=c[d>>2]|0;if(!e)Sa(236440,236160,1247,236448);kx(a)|0;c[a+672>>2]=c[e+140>>2];c[a+668>>2]=c[e+144>>2];b=c[e+160>>2]|0;if(b)KK(b);b=c[e+164>>2]|0;if(b)KK(b);b=c[e+168>>2]|0;if(b)KK(b);b=c[e+148>>2]|0;if(b)KK(b);b=c[e+152>>2]|0;if(b)KK(b);b=c[e+156>>2]|0;if(b)KK(b);do if(c[e+128>>2]&1){b=e+64|0;if(!(c[a+8>>2]|0)){kI(b)|0;break}else{aI(b)|0;break}}while(0);b=c[e+120>>2]|0;if(!b){KK(e);c[d>>2]=0;Tv(a);i=f;return}KK(b);KK(e);c[d>>2]=0;Tv(a);i=f;return}function lP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;e=c[a+576>>2]|0;if((b|0)==65558){a=c[e+136>>2]|0;e=c[d>>2]|0;b=c[e>>2]|0;c[d>>2]=e+4;c[b>>2]=a;b=1;i=f;return b|0}else if((b|0)==65549){a=c[e+132>>2]|0;e=c[d>>2]|0;b=c[e>>2]|0;c[d>>2]=e+4;c[b>>2]=a;b=1;i=f;return b|0}else{b=Od[c[e+140>>2]&255](a,b,d)|0;i=f;return b|0}return 0}function mP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;f=g;e=c[a+576>>2]|0;if((b|0)==65558){h=c[d>>2]|0;b=c[h>>2]|0;c[d>>2]=h+4;c[e+136>>2]=b;if(!(c[a+8>>2]|0)){h=1;i=g;return h|0}if(!(c[e+128>>2]&1)){h=1;i=g;return h|0}if(!(dI(e+64|0,b,0)|0)){h=1;i=g;return h|0}h=c[a+628>>2]|0;c[f>>2]=c[e+88>>2];Dw(h,236400,236424,f);h=0;i=g;return h|0}else if((b|0)==65549){b=c[d>>2]|0;h=c[b>>2]|0;c[d>>2]=b+4;c[e+132>>2]=h;switch(h|0){case 3:{c[f>>2]=16;Xv(a,258,f)|0;c[f>>2]=2;Xv(a,339,f)|0;break}case 4:{c[f>>2]=16;Xv(a,258,f)|0;c[f>>2]=1;Xv(a,339,f)|0;break}case 2:{c[f>>2]=16;Xv(a,258,f)|0;c[f>>2]=1;Xv(a,339,f)|0;break}case 1:case 0:{c[f>>2]=8;Xv(a,258,f)|0;c[f>>2]=1;Xv(a,339,f)|0;break}case 5:{c[f>>2]=32;Xv(a,258,f)|0;c[f>>2]=3;Xv(a,339,f)|0;break}default:{}}if(!(c[a+12>>2]&1024))b=-1;else b=Xx(a)|0;c[a+496>>2]=b;c[a+580>>2]=Ex(a)|0;h=1;i=g;return h|0}else{h=Od[c[e+144>>2]&255](a,b,d)|0;i=g;return h|0}return 0}function nP(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;f=c[a+576>>2]|0;if(!f)Sa(237320,237120,668,238224);g=c[f+44>>2]|0;if(!g)Sa(238248,237120,669,238224);if((d|0)==317){d=c[f>>2]&65535;g=c[e>>2]|0;a=c[g>>2]|0;c[e>>2]=g+4;b[a>>1]=d;a=1;i=h;return a|0}else{a=Od[g&255](a,d,e)|0;i=h;return a|0}return 0}function oP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;e=c[a+576>>2]|0;if(!e)Sa(237320,237120,648,238176);f=c[e+48>>2]|0;if(!f)Sa(238200,237120,649,238176);if((b|0)==317){f=c[d>>2]|0;b=c[f>>2]|0;c[d>>2]=f+4;c[e>>2]=b&65535;d=a+48|0;c[d>>2]=c[d>>2]|4;a=a+12|0;c[a>>2]=c[a>>2]|8;a=1;i=g;return a|0}else{a=Od[f&255](a,b,d)|0;i=g;return a|0}return 0}function pP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;e=c[a+576>>2]|0;if(c[a+48>>2]&4){$b(238072,13,1,b|0)|0;f=c[e>>2]|0;if((f|0)==3)$b(238128,25,1,b|0)|0;else if((f|0)==2)$b(238096,24,1,b|0)|0;else if((f|0)==1)$b(238088,5,1,b|0)|0;f=c[e>>2]|0;c[g>>2]=f;c[g+4>>2]=f;_c(b|0,238160,g|0)|0}e=c[e+52>>2]|0;if(!e){i=h;return}$d[e&255](a,b,d);i=h;return}function qP(a){a=a|0;var b=0,d=0,f=0,g=0;g=i;f=c[a+576>>2]|0;if(!(Ld[c[f+56>>2]&511](a)|0)){f=0;i=g;return f|0}if(!(A$(a)|0)){f=0;i=g;return f|0}b=c[f>>2]|0;if((b|0)==2){b=e[a+84>>1]|0;if((b|0)==16)c[f+40>>2]=81;else if((b|0)==32)c[f+40>>2]=82;else if((b|0)==8)c[f+40>>2]=80;b=a+532|0;d=c[b>>2]|0;if((d|0)!=136){c[f+28>>2]=d;c[b>>2]=136;d=a+540|0;c[f+32>>2]=c[d>>2];c[d>>2]=137;d=a+548|0;c[f+36>>2]=c[d>>2];c[d>>2]=137}if(!(c[a+12>>2]&128)){f=1;i=g;return f|0}b=f+40|0;d=c[b>>2]|0;if((d|0)==81){c[b>>2]=83;c[a+652>>2]=37;f=1;i=g;return f|0}if((d|0)!=82){f=1;i=g;return f|0}c[b>>2]=84;c[a+652>>2]=37;f=1;i=g;return f|0}else if((b|0)==3){c[f+40>>2]=85;b=a+532|0;d=c[b>>2]|0;if((d|0)!=136){c[f+28>>2]=d;c[b>>2]=136;d=a+540|0;c[f+32>>2]=c[d>>2];c[d>>2]=137;d=a+548|0;c[f+36>>2]=c[d>>2];c[d>>2]=137}if(!(c[a+12>>2]&128)){f=1;i=g;return f|0}c[a+652>>2]=37;f=1;i=g;return f|0}else{f=1;i=g;return f|0}return 0}function rP(a){a=a|0;var b=0,d=0,f=0,g=0;g=i;f=c[a+576>>2]|0;if(!(Ld[c[f+60>>2]&511](a)|0)){f=0;i=g;return f|0}if(!(A$(a)|0)){f=0;i=g;return f|0}b=c[f>>2]|0;if((b|0)==2){b=e[a+84>>1]|0;if((b|0)==32)c[f+24>>2]=88;else if((b|0)==16)c[f+24>>2]=87;else if((b|0)==8)c[f+24>>2]=86;b=a+536|0;d=c[b>>2]|0;if((d|0)==138){f=1;i=g;return f|0}c[f+12>>2]=d;c[b>>2]=138;d=a+544|0;c[f+16>>2]=c[d>>2];c[d>>2]=139;a=a+552|0;c[f+20>>2]=c[a>>2];c[a>>2]=139;f=1;i=g;return f|0}else if((b|0)==3){c[f+24>>2]=89;b=a+536|0;d=c[b>>2]|0;if((d|0)==138){f=1;i=g;return f|0}c[f+12>>2]=d;c[b>>2]=138;d=a+544|0;c[f+16>>2]=c[d>>2];c[d>>2]=139;a=a+552|0;c[f+20>>2]=c[a>>2];c[a>>2]=139;f=1;i=g;return f|0}else{f=1;i=g;return f|0}return 0}function sP(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;m=n;if(!(ww(a)|0)){m=-1;i=n;return m|0}g=c[a+12>>2]|0;if(g&131072)Sa(238688,238728,372,239352);if(!(g&2048)){h=a+628|0;l=a+172|0;j=(c[l>>2]|0)+(b<<3)|0;j=ce[c[a+640>>2]&255](c[h>>2]|0,c[j>>2]|0,c[j+4>>2]|0,0)|0;l=(c[l>>2]|0)+(b<<3)|0;if(!((j|0)==(c[l>>2]|0)?(I|0)==(c[l+4>>2]|0):0)){l=c[h>>2]|0;c[m>>2]=c[a+444>>2];c[m+4>>2]=b;Dw(l,f,239376,m);m=-1;i=n;return m|0}g=Od[c[a+632>>2]&255](c[h>>2]|0,d,e)|0;if((g|0)==(e|0)){m=e;i=n;return m|0}b=c[h>>2]|0;c[m>>2]=c[a+444>>2];a=m+4|0;c[a>>2]=g;c[a+4>>2]=((g|0)<0)<<31>>31;a=m+12|0;c[a>>2]=e;c[a+4>>2]=((e|0)<0)<<31>>31;Dw(b,f,239416,m);m=-1;i=n;return m|0}o=(c[a+172>>2]|0)+(b<<3)|0;g=c[o>>2]|0;h=g+e|0;if(((g|0)==(g|0)?(((g|0)<0)<<31>>31|0)==(c[o+4>>2]|0):0)?(j=c[a+616>>2]|0,(j|0)>=(g|0)):0){if((g|e|0)<0|(h|0)>(j|0)){k=j-g|0;l=13}}else{k=0;l=13}if((l|0)==13?(k|0)!=(e|0):0){o=c[a+628>>2]|0;c[m>>2]=c[a+444>>2];c[m+4>>2]=b;a=m+8|0;c[a>>2]=k;c[a+4>>2]=((k|0)<0)<<31>>31;a=m+16|0;c[a>>2]=e;c[a+4>>2]=((e|0)<0)<<31>>31;Dw(o,f,239480,m);o=-1;i=n;return o|0}NK(d,(c[a+612>>2]|0)+g|0,e);o=e;i=n;return o|0}function tP(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;m=n;if(!(ww(a)|0)){m=-1;i=n;return m|0}g=c[a+12>>2]|0;if(g&131072)Sa(238688,238728,684,239144);if(!(g&2048)){h=a+628|0;l=a+172|0;j=(c[l>>2]|0)+(b<<3)|0;j=ce[c[a+640>>2]&255](c[h>>2]|0,c[j>>2]|0,c[j+4>>2]|0,0)|0;l=(c[l>>2]|0)+(b<<3)|0;if(!((j|0)==(c[l>>2]|0)?(I|0)==(c[l+4>>2]|0):0)){l=c[h>>2]|0;d=c[a+488>>2]|0;c[m>>2]=c[a+444>>2];c[m+4>>2]=d;c[m+8>>2]=b;Dw(l,f,239168,m);m=-1;i=n;return m|0}g=Od[c[a+632>>2]&255](c[h>>2]|0,d,e)|0;if((g|0)==(e|0)){m=e;i=n;return m|0}b=c[h>>2]|0;l=c[a+488>>2]|0;c[m>>2]=c[a+444>>2];c[m+4>>2]=l;a=m+8|0;c[a>>2]=g;c[a+4>>2]=((g|0)<0)<<31>>31;a=m+16|0;c[a>>2]=e;c[a+4>>2]=((e|0)<0)<<31>>31;Dw(b,f,239216,m);m=-1;i=n;return m|0}o=(c[a+172>>2]|0)+(b<<3)|0;g=c[o>>2]|0;h=g+e|0;if(((g|0)==(g|0)?(((g|0)<0)<<31>>31|0)==(c[o+4>>2]|0):0)?(j=c[a+616>>2]|0,(j|0)>=(g|0)):0){if((g|e|0)<0|(h|0)>(j|0)){k=j-g|0;l=13}}else{k=0;l=13}if((l|0)==13?(k|0)!=(e|0):0){o=c[a+628>>2]|0;l=c[a+488>>2]|0;c[m>>2]=c[a+444>>2];c[m+4>>2]=l;c[m+8>>2]=b;a=m+12|0;c[a>>2]=k;c[a+4>>2]=((k|0)<0)<<31>>31;a=m+20|0;c[a>>2]=e;c[a+4>>2]=((e|0)<0)<<31>>31;Dw(o,f,239280,m);o=-1;i=n;return o|0}NK(d,(c[a+612>>2]|0)+g|0,e);o=e;i=n;return o|0}function uP(a){a=a|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=b[a+84>>1]|0;if(d<<16>>16==4){e=1;i=f;return e|0}a=c[a+628>>2]|0;c[e>>2]=d&65535;Dw(a,240624,240648,e);e=0;i=f;return e|0}function vP(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;i=i+32|0;u=v;q=b+580|0;if((f|0)%(c[q>>2]|0)|0){Dw(c[b+628>>2]|0,240424,240448,u);w=0;i=v;return w|0}if((f|0)<=0){w=1;i=v;return w|0}r=b+56|0;s=b+604|0;t=b+608|0;j=c[t>>2]|0;h=c[s>>2]|0;while(1){p=c[r>>2]|0;g=(p|0)>0;if((j|0)>0&g){g=e;l=h;k=0;h=0;while(1){n=l+1|0;m=d[l>>0]|0;o=j+-1|0;j=m&192;do if((j|0)==192){k=m&15;j=h+1|0;if(!(h&1)){a[g>>0]=m<<4;l=g;m=k;h=j;break}else{a[g>>0]=d[g>>0]|0|k;l=g+1|0;m=k;h=j;break}}else if((j|0)==128){j=m>>>3&7;do if((j|0)!=4){j=(c[240520+(j<<2)>>2]|0)+k&15;l=h+1|0;if(!(h&1)){a[g>>0]=j<<4;k=j;h=l;break}else{a[g>>0]=d[g>>0]|0|j;g=g+1|0;k=j;h=l;break}}while(0);j=m&7;if((j|0)!=4){j=(c[240520+(j<<2)>>2]|0)+k&15;if((h|0)<(p|0)){k=h+1|0;if(!(h&1)){a[g>>0]=j<<4;l=g;m=j;h=k;break}else{a[g>>0]=d[g>>0]|0|j;l=g+1|0;m=j;h=k;break}}else{l=g;m=j}}else{l=g;m=k}}else if((j|0)==64){j=m>>>4&3;do if((j|0)!=2){k=(c[240504+(j<<2)>>2]|0)+k&15;j=h+1|0;if(!(h&1)){a[g>>0]=k<<4;h=j;break}else{a[g>>0]=d[g>>0]|0|k;g=g+1|0;h=j;break}}while(0);j=m>>>2&3;do if((j|0)!=2){k=(c[240504+(j<<2)>>2]|0)+k&15;if((h|0)<(p|0)){j=h+1|0;if(!(h&1)){a[g>>0]=k<<4;h=j;break}else{a[g>>0]=d[g>>0]|0|k;g=g+1|0;h=j;break}}}while(0);j=m&3;if((j|0)!=2){j=(c[240504+(j<<2)>>2]|0)+k&15;if((h|0)<(p|0)){k=h+1|0;if(!(h&1)){a[g>>0]=j<<4;l=g;m=j;h=k;break}else{a[g>>0]=d[g>>0]|0|j;l=g+1|0;m=j;h=k;break}}else{l=g;m=j}}else{l=g;m=k}}else if(!j){if(!(h&1)){k=k<<4|k;j=m}else{k=d[g>>0]|0|k;a[g>>0]=k;g=g+1|0;k=k&255;j=m+-1|0;h=h+1|0}h=j+h|0;if((h|0)<(p|0)&(j|0)>0){l=(j+-1|0)>>>1;m=l+1|0;Cga(g|0,k&255|0,m|0)|0;g=g+m|0;j=j+-2-(l<<1)|0}if((j|0)==-1){g=g+-1|0;a[g>>0]=(d[g>>0]|0)&240}l=g;m=k&15}else{l=g;m=k}while(0);g=(h|0)<(p|0);if((o|0)>0&g){g=l;l=n;j=o;k=m}else{k=n;j=o;break}}}else{k=h;h=0}c[s>>2]=k;c[t>>2]=j;if((h|0)!=(p|0))break;g=c[q>>2]|0;f=f-g|0;if((f|0)<=0){g=1;w=45;break}else{h=k;e=e+g|0}}if((w|0)==45){i=v;return g|0}w=c[b+628>>2]|0;b=c[b+444>>2]|0;c[u>>2]=g?240592:240608;c[u+4>>2]=b;b=u+8|0;c[b>>2]=h;c[b+4>>2]=((h|0)<0)<<31>>31;b=u+16|0;c[b>>2]=p;c[b+4>>2]=((p|0)<0)<<31>>31;Dw(w,240488,240552,u);w=0;i=v;return w|0}function wP(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;if((b[a+126>>1]|0)!=1)Sa(241632,241480,630,241680);j=a+172|0;k=a+168|0;l=LK(c[j>>2]|0,(c[k>>2]<<3)+8|0)|0;e=a+176|0;f=LK(c[e>>2]|0,(c[k>>2]<<3)+8|0)|0;g=(l|0)==0;h=(f|0)==0;if(!(g|h)){c[j>>2]=l;c[e>>2]=f;MK(l+(c[k>>2]<<3)|0,0,8);MK((c[e>>2]|0)+(c[k>>2]<<3)|0,0,8);c[k>>2]=(c[k>>2]|0)+1;l=a+12|0;c[l>>2]=c[l>>2]|8;l=1;i=m;return l|0}if(!g)KK(l);if(!h)KK(f);c[k>>2]=0;Dw(c[a+628>>2]|0,d,241696,m);l=0;i=m;return l|0}function xP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;o=p;l=a+172|0;j=(c[l>>2]|0)+(b<<3)|0;n=c[j>>2]|0;j=c[j+4>>2]|0;h=(n|0)==0&(j|0)==0;if(!h?(g=a+456|0,f=c[g>>2]|0,g=c[g+4>>2]|0,!((f|0)==0&(g|0)==0)):0){m=-1;n=-1}else{if(!(c[a+168>>2]|0))Sa(241456,241480,668,241512);k=a+176|0;g=(c[k>>2]|0)+(b<<3)|0;f=c[g>>2]|0;g=c[g+4>>2]|0;if(!((f|0)==0&(g|0)==0)?(m=((e|0)<0)<<31>>31,!(h|(g>>>0>>0|(g|0)==(m|0)&f>>>0>>0))):0){h=a+628|0;g=ce[c[a+640>>2]&255](c[h>>2]|0,n,j,0)|0;f=I;m=(c[l>>2]|0)+(b<<3)|0;if(!((g|0)==(c[m>>2]|0)?(f|0)==(c[m+4>>2]|0):0)){b=c[h>>2]|0;c[o>>2]=c[a+444>>2];Dw(b,241512,241536,o);o=0;i=p;return o|0}}else{g=ce[c[a+640>>2]&255](c[a+628>>2]|0,0,0,2)|0;f=I;m=(c[l>>2]|0)+(b<<3)|0;c[m>>2]=g;c[m+4>>2]=f;m=a+12|0;c[m>>2]=c[m>>2]|2097152}l=a+456|0;n=l;c[n>>2]=g;c[n+4>>2]=f;g=(c[k>>2]|0)+(b<<3)|0;n=g;m=c[n>>2]|0;n=c[n+4>>2]|0;c[g>>2]=0;c[g+4>>2]=0;g=l;f=c[g>>2]|0;g=c[g+4>>2]|0}h=((e|0)<0)<<31>>31;k=Iga(f|0,g|0,e|0,h|0)|0;j=a+12|0;l=(c[j>>2]&524288|0)==0;k=l?k:k;l=l?0:I;if(l>>>0>>0|(l|0)==(g|0)&k>>>0>>0|(l>>>0>>0|(l|0)==(h|0)&k>>>0>>0)){Dw(c[a+628>>2]|0,241512,241568,o);o=0;i=p;return o|0}f=a+628|0;if((Od[c[a+636>>2]&255](c[f>>2]|0,d,e)|0)!=(e|0)){b=c[f>>2]|0;c[o>>2]=c[a+444>>2];Dw(b,241512,241600,o);o=0;i=p;return o|0}o=a+456|0;c[o>>2]=k;c[o+4>>2]=l;b=(c[a+176>>2]|0)+(b<<3)|0;a=b;a=Iga(c[a>>2]|0,c[a+4>>2]|0,e|0,h|0)|0;o=I;c[b>>2]=a;c[b+4>>2]=o;if((a|0)==(m|0)&(o|0)==(n|0)){o=1;i=p;return o|0}c[j>>2]=c[j>>2]|2097152;o=1;i=p;return o|0}function yP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;e=c[a+576>>2]|0;if((b|0)==65557){a=c[e+120>>2]|0;e=c[d>>2]|0;b=c[e>>2]|0;c[d>>2]=e+4;c[b>>2]=a;b=1;i=f;return b|0}else{b=Od[c[e+128>>2]&255](a,b,d)|0;i=f;return b|0}return 0}function zP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;f=g;e=c[a+576>>2]|0;if((b|0)!=65557){f=Od[c[e+132>>2]&255](a,b,d)|0;i=g;return f|0}h=c[d>>2]|0;b=c[h>>2]|0;c[d>>2]=h+4;c[e+120>>2]=b;if(!(c[e+124>>2]&2)){h=1;i=g;return h|0}if(!(dI(e+64|0,b,0)|0)){h=1;i=g;return h|0}h=c[a+628>>2]|0;d=c[e+88>>2]|0;c[f>>2]=(d|0)==0?242088:d;Dw(h,242352,242112,f);h=0;i=g;return h|0}function AP(a){a=a|0;return 1}function BP(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g;d=c[a+576>>2]|0;if(!d)Sa(242e3,241808,102,242336);e=d+124|0;b=d+64|0;if(c[e>>2]&2){aI(b)|0;c[e>>2]=0}if(!(iI(b,242160,56)|0)){c[e>>2]=c[e>>2]|1;f=1;i=g;return f|0}else{e=c[a+628>>2]|0;a=c[d+88>>2]|0;c[f>>2]=(a|0)==0?242088:a;Dw(e,242336,242168,f);f=0;i=g;return f|0}return 0}function CP(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;b=c[a+576>>2]|0;if(!b)Sa(242e3,241808,129,242320);if(!(c[b+124>>2]&1))Ld[c[a+508>>2]&511](a)|0;e=b+64|0;c[e>>2]=c[a+588>>2];c[b+68>>2]=c[a+608>>2];a=(gI(e)|0)==0&1;i=d;return a|0}function DP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;m=o;e=c[a+576>>2]|0;if(!e)Sa(242e3,241808,155,242176);if((c[e+124>>2]|0)!=1)Sa(242192,241808,156,242176);j=a+604|0;k=e+64|0;c[k>>2]=c[j>>2];l=a+608|0;h=e+68|0;c[h>>2]=c[l>>2];c[e+76>>2]=b;f=e+80|0;c[f>>2]=d;g=a+628|0;d=a+444|0;e=e+88|0;do{b=jI(k,1)|0;if((b|0)==-3){b=c[g>>2]|0;a=c[e>>2]|0;c[m>>2]=c[d>>2];c[m+4>>2]=(a|0)==0?242088:a;Dw(b,242176,242224,m);if(lI(k)|0){e=0;n=13;break}}else if((b|0)==1){n=10;break}else if(b){n=8;break}}while((c[f>>2]|0)!=0);if((n|0)==8){n=c[g>>2]|0;l=c[e>>2]|0;c[m>>2]=(l|0)==0?242088:l;Dw(n,242176,242112,m);n=0;i=o;return n|0}else if((n|0)==10){e=c[f>>2]|0;if(e){n=c[g>>2]|0;c[m>>2]=c[d>>2];l=m+4|0;c[l>>2]=e;c[l+4>>2]=0;Dw(n,242176,242264,m);n=0;i=o;return n|0}}else if((n|0)==13){i=o;return e|0}c[j>>2]=c[k>>2];c[l>>2]=c[h>>2];n=1;i=o;return n|0}function EP(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g;d=c[a+576>>2]|0;if(!d)Sa(242e3,241808,209,242144);e=d+124|0;b=d+64|0;if(c[e>>2]&1){kI(b)|0;c[e>>2]=0}if(!(_H(b,c[d+120>>2]|0,242160,56)|0)){c[e>>2]=c[e>>2]|2;f=1;i=g;return f|0}else{e=c[a+628>>2]|0;a=c[d+88>>2]|0;c[f>>2]=(a|0)==0?242088:a;Dw(e,242144,242168,f);f=0;i=g;return f|0}return 0}function FP(a,b){a=a|0;b=b|0;var d=0;d=i;b=c[a+576>>2]|0;if(!b)Sa(242e3,241808,234,242128);if((c[b+124>>2]|0)!=2)Ld[c[a+516>>2]&511](a)|0;c[b+76>>2]=c[a+588>>2];c[b+80>>2]=c[a+592>>2];a=(bI(b+64|0)|0)==0&1;i=d;return a|0}function GP(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;n=p;b=c[a+576>>2]|0;f=b+64|0;c[b+68>>2]=0;g=b+80|0;h=a+592|0;j=a+608|0;k=a+588|0;l=b+76|0;while(1){m=eI(f,4)|0;if(m>>>0>=2)break;d=c[g>>2]|0;e=c[h>>2]|0;if((e|0)!=(d|0)){c[j>>2]=e-d;cy(a)|0;c[l>>2]=c[k>>2];c[g>>2]=c[h>>2]}if((m|0)==1){b=1;o=7;break}}if((o|0)==7){i=p;return b|0}o=c[a+628>>2]|0;a=c[b+88>>2]|0;c[n>>2]=(a|0)==0?242088:a;Dw(o,242096,242112,n);o=0;i=p;return o|0}function HP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+16|0;l=m;j=c[a+576>>2]|0;if(!j)Sa(242e3,241808,261,242016);if((c[j+124>>2]|0)!=2)Sa(242032,241808,262,242016);k=j+64|0;c[k>>2]=b;h=j+68|0;c[h>>2]=d;f=j+80|0;g=a+592|0;e=a+608|0;b=a+588|0;d=j+76|0;while(1){if(eI(k,0)|0)break;if(!(c[f>>2]|0)){c[e>>2]=c[g>>2];cy(a)|0;c[d>>2]=c[b>>2];c[f>>2]=c[g>>2]}if(!(c[h>>2]|0)){e=1;n=11;break}}if((n|0)==11){i=m;return e|0}n=c[a+628>>2]|0;a=c[j+88>>2]|0;c[l>>2]=(a|0)==0?242088:a;Dw(n,242016,242064,l);n=0;i=m;return n|0}function IP(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;b=a+576|0;d=c[b>>2]|0;if(!d)Sa(241976,241808,332,241984);kx(a)|0;c[a+672>>2]=c[d+128>>2];c[a+668>>2]=c[d+132>>2];f=d+124|0;e=c[f>>2]|0;if(!(e&2)){if(e&1){kI(d+64|0)|0;c[f>>2]=0}}else{aI(d+64|0)|0;c[f>>2]=0}KK(d);c[b>>2]=0;Tv(a);i=g;return}function JP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;if(!e){e=(b|0)>0;if(!(e|(d|0)>1)){i=k;return}if(e){g=a+((d<<1)+-2<<2)|0;h=0;do{if((h|0)<(d|0))e=a+(h<<1<<2)|0;else e=g;j=h;h=h+1|0;if((h|0)<(d|0))f=a+(h<<1<<2)|0;else f=g;j=a+((j<<1|1)<<2)|0;c[j>>2]=(c[j>>2]|0)-((c[f>>2]|0)+(c[e>>2]|0)>>1)}while((h|0)!=(b|0))}if((d|0)<=0){i=k;return}h=a+4|0;g=a+((b<<1)+-1<<2)|0;j=0;do{if((j|0)>=1)if((j|0)>(b|0))e=g;else e=a+((j<<1)+-1<<2)|0;else e=h;if((j|0)<(b|0))f=a+((j<<1|1)<<2)|0;else f=g;l=a+(j<<1<<2)|0;c[l>>2]=((c[e>>2]|0)+2+(c[f>>2]|0)>>2)+(c[l>>2]|0);j=j+1|0}while((j|0)!=(d|0));i=k;return}if((d|0)==0&(b|0)==1){c[a>>2]=c[a>>2]<<1;i=k;return}if((b|0)>0){h=a+4|0;g=a+((d<<1)+-1<<2)|0;j=0;do{if((j|0)<(d|0))e=a+((j<<1|1)<<2)|0;else e=g;f=c[e>>2]|0;if((j|0)>=1)if((j|0)>(d|0))e=g;else e=a+((j<<1)+-1<<2)|0;else e=h;l=a+(j<<1<<2)|0;c[l>>2]=(c[l>>2]|0)-((c[e>>2]|0)+f>>1);j=j+1|0}while((j|0)!=(b|0))}if((d|0)<=0){i=k;return}g=a+((b<<1)+-2<<2)|0;h=0;do{if((h|0)<(b|0))e=a+(h<<1<<2)|0;else e=g;j=h;h=h+1|0;if((h|0)<(b|0))f=a+(h<<1<<2)|0;else f=g;l=a+((j<<1|1)<<2)|0;c[l>>2]=((c[e>>2]|0)+2+(c[f>>2]|0)>>2)+(c[l>>2]|0)}while((h|0)!=(d|0));i=k;return}function KP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;x=(c[a+8>>2]|0)-(c[a>>2]|0)|0;g=c[a+16>>2]|0;j=g+-1|0;y=c[a+32>>2]|0;h=c[a+24>>2]|0;f=(j|0)==0;if(f)a=0;else{a=h;d=j;e=0;do{v=a;a=a+136|0;w=(c[v+144>>2]|0)-(c[a>>2]|0)|0;w=e>>>0>>0?w:e;v=(c[v+148>>2]|0)-(c[v+140>>2]|0)|0;e=w>>>0>>0?v:w;d=d+-1|0}while((d|0)!=0);a=e<<2}w=Afa(a)|0;if(!w){b=0;i=z;return b|0}if(!f){u=g+-2|0;v=u;a=h+(j*136|0)|0;u=h+(u*136|0)|0;while(1){r=c[a>>2]|0;t=(c[a+8>>2]|0)-r|0;n=c[a+4>>2]|0;p=(c[a+12>>2]|0)-n|0;q=(c[u+8>>2]|0)-(c[u>>2]|0)|0;a=c[u+12>>2]|0;f=c[u+4>>2]|0;m=a-f|0;r=r&1;n=n&1;o=p-m|0;s=(t|0)>0;a:do if(s){k=(a|0)==(f|0);h=(p|0)==(m|0);g=ea(m,x)|0;j=w+((n^1)<<2)|0;l=w+(n<<2)|0;if((p|0)>0){e=0;while(1){f=y+(e<<2)|0;a=0;do{c[w+(a<<2)>>2]=c[y+((ea(a,x)|0)+e<<2)>>2];a=a+1|0}while((a|0)!=(p|0));de[b&63](w,o,m,n);if(!k){d=m;a=l;while(1){d=d+-1|0;c[f>>2]=c[a>>2];if(!d)break;else{f=f+(x<<2)|0;a=a+8|0}}}if(!h){a=o;f=y+(e+g<<2)|0;d=j;while(1){a=a+-1|0;c[f>>2]=c[d>>2];if(!a)break;else{f=f+(x<<2)|0;d=d+8|0}}}e=e+1|0;if((e|0)==(t|0))break a}}if(k){f=0;while(1){de[b&63](w,o,m,n);if(!h){a=o;d=y+(f+g<<2)|0;e=j;while(1){a=a+-1|0;c[d>>2]=c[e>>2];if(!a)break;else{d=d+(x<<2)|0;e=e+8|0}}}f=f+1|0;if((f|0)==(t|0))break a}}else e=0;do{de[b&63](w,o,m,n);a=m;f=y+(e<<2)|0;d=l;while(1){a=a+-1|0;c[f>>2]=c[d>>2];if(!a)break;else{f=f+(x<<2)|0;d=d+8|0}}if(!h){a=o;f=y+(e+g<<2)|0;d=j;while(1){a=a+-1|0;c[f>>2]=c[d>>2];if(!a)break;else{f=f+(x<<2)|0;d=d+8|0}}}e=e+1|0}while((e|0)!=(t|0))}while(0);l=t-q|0;if((p|0)>0){h=(q|0)>0;g=w+(r<<2)|0;j=(l|0)>0;k=w+((r^1)<<2)|0;m=0;do{e=ea(m,x)|0;f=y+(e<<2)|0;if(s){a=0;do{c[w+(a<<2)>>2]=c[y+(a+e<<2)>>2];a=a+1|0}while((a|0)!=(t|0))}de[b&63](w,l,q,r);if(h){d=0;a=g;while(1){c[f>>2]=c[a>>2];d=d+1|0;if((d|0)==(q|0))break;else{f=f+4|0;a=a+8|0}}}if(j){d=0;a=y+(e+q<<2)|0;f=k;while(1){c[a>>2]=c[f>>2];d=d+1|0;if((d|0)==(l|0))break;else{a=a+4|0;f=f+8|0}}}m=m+1|0}while((m|0)!=(p|0))}if(!v)break;else{a=u;v=v+-1|0;u=u+-136|0}}}Bfa(w);b=1;i=z;return b|0}function LP(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;j=c[a>>2]|0;k=c[a+4>>2]|0;l=c[a+8>>2]|0;if(!(c[a+12>>2]|0)){g=(k|0)>0;if(!(g|(l|0)>1)){i=m;return}if((l|0)>0){b=j+4|0;d=j+((k<<1)+-1<<2)|0;h=0;do{if((h|0)>=1)if((h|0)>(k|0))a=d;else a=j+((h<<1)+-1<<2)|0;else a=b;f=h<<1;if((h|0)<(k|0))e=j+((f|1)<<2)|0;else e=d;f=j+(f<<2)|0;c[f>>2]=(c[f>>2]|0)-((c[a>>2]|0)+2+(c[e>>2]|0)>>2);h=h+1|0}while((h|0)!=(l|0))}if(!g){i=m;return}d=j+((l<<1)+-2<<2)|0;e=0;do{if((e|0)<(l|0))a=j+(e<<1<<2)|0;else a=d;f=e;e=e+1|0;if((e|0)<(l|0))b=j+(e<<1<<2)|0;else b=d;h=j+((f<<1|1)<<2)|0;c[h>>2]=((c[b>>2]|0)+(c[a>>2]|0)>>1)+(c[h>>2]|0)}while((e|0)!=(k|0));i=m;return}if((l|0)==0&(k|0)==1){c[j>>2]=(c[j>>2]|0)/2|0;i=m;return}if((l|0)>0){d=j+((k<<1)+-2<<2)|0;e=0;do{if((e|0)<(k|0))b=j+(e<<1<<2)|0;else b=d;f=e;e=e+1|0;if((e|0)<(k|0))a=j+(e<<1<<2)|0;else a=d;h=j+((f<<1|1)<<2)|0;c[h>>2]=(c[h>>2]|0)-((c[b>>2]|0)+2+(c[a>>2]|0)>>2)}while((e|0)!=(l|0))}if((k|0)<=0){i=m;return}e=j+4|0;d=j+((l<<1)+-1<<2)|0;f=0;do{if((f|0)<(l|0))a=j+((f<<1|1)<<2)|0;else a=d;b=c[a>>2]|0;if((f|0)>=1)if((f|0)>(l|0))a=d;else a=j+((f<<1)+-1<<2)|0;else a=e;h=j+(f<<1<<2)|0;c[h>>2]=((c[a>>2]|0)+b>>1)+(c[h>>2]|0);f=f+1|0}while((f|0)!=(k|0));i=m;return} +function vba(b,d){b=b|0;d=d|0;var e=0;e=i;Ld[c[(c[b>>2]|0)+24>>2]&511](b)|0;d=F9(d,369472)|0;c[b+36>>2]=d;a[b+44>>0]=(Ld[c[(c[d>>2]|0)+28>>2]&511](d)|0)&1;i=e;return}function wba(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;j=k+8|0;h=k;b=a+36|0;d=a+40|0;e=j+8|0;f=j;g=a+32|0;while(1){a=c[b>>2]|0;a=Xd[c[(c[a>>2]|0)+20>>2]&127](a,c[d>>2]|0,j,e,h)|0;l=(c[h>>2]|0)-f|0;if(($b(j|0,1,l|0,c[g>>2]|0)|0)!=(l|0)){a=-1;b=5;break}if((a|0)==2){a=-1;b=5;break}else if((a|0)!=1){b=4;break}}if((b|0)==4){l=((qd(c[g>>2]|0)|0)!=0)<<31>>31;i=k;return l|0}else if((b|0)==5){i=k;return a|0}return 0}function xba(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;if(a[b+44>>0]|0){e=$b(d|0,4,e|0,c[b+32>>2]|0)|0;i=g;return e|0}if((e|0)>0){f=d;d=0}else{e=0;i=g;return e|0}while(1){if((Wd[c[(c[b>>2]|0)+52>>2]&511](b,c[f>>2]|0)|0)==-1){f=6;break}d=d+1|0;if((d|0)<(e|0))f=f+4|0;else{f=6;break}}if((f|0)==6){i=g;return d|0}return 0}function yba(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+32|0;p=r+16|0;e=r;o=r+4|0;n=r+8|0;q=(d|0)==-1;a:do if(!q){c[e>>2]=d;if(a[b+44>>0]|0){if(($b(e|0,4,1,c[b+32>>2]|0)|0)==1)break;else b=-1;i=r;return b|0}c[o>>2]=p;l=e+4|0;m=b+36|0;g=b+40|0;h=p+8|0;j=p;k=b+32|0;f=e;while(1){b=c[m>>2]|0;b=be[c[(c[b>>2]|0)+12>>2]&15](b,c[g>>2]|0,f,l,n,p,h,o)|0;if((c[n>>2]|0)==(f|0)){b=-1;e=12;break}if((b|0)==3){e=7;break}e=(b|0)==1;if(b>>>0>=2){b=-1;e=12;break}b=(c[o>>2]|0)-j|0;if(($b(p|0,1,b|0,c[k>>2]|0)|0)!=(b|0)){b=-1;e=12;break}if(e)f=e?c[n>>2]|0:f;else break a}if((e|0)==7){if(($b(f|0,1,1,c[k>>2]|0)|0)==1)break;else b=-1;i=r;return b|0}else if((e|0)==12){i=r;return b|0}}while(0);d=q?0:d;i=r;return d|0}function zba(a){a=a|0;var b=0;b=i;r4(a);xea(a);i=b;return}function Aba(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;g=F9(d,369472)|0;f=b+36|0;c[f>>2]=g;d=b+44|0;c[d>>2]=Ld[c[(c[g>>2]|0)+24>>2]&511](g)|0;f=c[f>>2]|0;a[b+53>>0]=(Ld[c[(c[f>>2]|0)+28>>2]&511](f)|0)&1;if((c[d>>2]|0)>8)N8(365648);else{i=e;return}}function Bba(a){a=a|0;var b=0;b=i;a=sda(a,0)|0;i=b;return a|0}function Cba(a){a=a|0;var b=0;b=i;a=sda(a,1)|0;i=b;return a|0}function Dba(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;l=m+16|0;k=m;f=m+4|0;g=m+8|0;h=b+52|0;e=(a[h>>0]|0)!=0;if((d|0)==-1){if(e){d=-1;i=m;return d|0}d=c[b+48>>2]|0;a[h>>0]=(d|0)!=-1&1;i=m;return d|0}j=b+48|0;a:do if(e){c[f>>2]=c[j>>2];e=c[b+36>>2]|0;e=be[c[(c[e>>2]|0)+12>>2]&15](e,c[b+40>>2]|0,f,f+4|0,g,l,l+8|0,k)|0;if((e|0)==3){a[l>>0]=c[j>>2];c[k>>2]=l+1}else if((e|0)==1|(e|0)==2){d=-1;i=m;return d|0}e=b+32|0;while(1){f=c[k>>2]|0;if(f>>>0<=l>>>0)break a;g=f+-1|0;c[k>>2]=g;if((Wc(a[g>>0]|0,c[e>>2]|0)|0)==-1){e=-1;break}}i=m;return e|0}while(0);c[j>>2]=d;a[h>>0]=1;i=m;return d|0}function Eba(a){a=a|0;var b=0;b=i;b4(a);xea(a);i=b;return}function Fba(b,d){b=b|0;d=d|0;var e=0;e=i;Ld[c[(c[b>>2]|0)+24>>2]&511](b)|0;d=F9(d,369464)|0;c[b+36>>2]=d;a[b+44>>0]=(Ld[c[(c[d>>2]|0)+28>>2]&511](d)|0)&1;i=e;return}function Gba(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;j=k+8|0;h=k;b=a+36|0;d=a+40|0;e=j+8|0;f=j;g=a+32|0;while(1){a=c[b>>2]|0;a=Xd[c[(c[a>>2]|0)+20>>2]&127](a,c[d>>2]|0,j,e,h)|0;l=(c[h>>2]|0)-f|0;if(($b(j|0,1,l|0,c[g>>2]|0)|0)!=(l|0)){a=-1;b=5;break}if((a|0)==2){a=-1;b=5;break}else if((a|0)!=1){b=4;break}}if((b|0)==4){l=((qd(c[g>>2]|0)|0)!=0)<<31>>31;i=k;return l|0}else if((b|0)==5){i=k;return a|0}return 0}function Hba(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0;h=i;if(a[b+44>>0]|0){f=$b(e|0,1,f|0,c[b+32>>2]|0)|0;i=h;return f|0}if((f|0)>0){g=e;e=0}else{f=0;i=h;return f|0}while(1){if((Wd[c[(c[b>>2]|0)+52>>2]&511](b,d[g>>0]|0)|0)==-1){g=6;break}e=e+1|0;if((e|0)<(f|0))g=g+1|0;else{g=6;break}}if((g|0)==6){i=h;return e|0}return 0}function Iba(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+32|0;p=r+16|0;e=r+8|0;o=r;n=r+4|0;q=(d|0)==-1;a:do if(!q){a[e>>0]=d;if(a[b+44>>0]|0){if(($b(e|0,1,1,c[b+32>>2]|0)|0)==1)break;else b=-1;i=r;return b|0}c[o>>2]=p;m=e+1|0;g=b+36|0;h=b+40|0;j=p+8|0;k=p;l=b+32|0;f=e;while(1){b=c[g>>2]|0;b=be[c[(c[b>>2]|0)+12>>2]&15](b,c[h>>2]|0,f,m,n,p,j,o)|0;if((c[n>>2]|0)==(f|0)){b=-1;e=12;break}if((b|0)==3){e=7;break}e=(b|0)==1;if(b>>>0>=2){b=-1;e=12;break}b=(c[o>>2]|0)-k|0;if(($b(p|0,1,b|0,c[l>>2]|0)|0)!=(b|0)){b=-1;e=12;break}if(e)f=e?c[n>>2]|0:f;else break a}if((e|0)==7){if(($b(f|0,1,1,c[l>>2]|0)|0)==1)break;else b=-1;i=r;return b|0}else if((e|0)==12){i=r;return b|0}}while(0);d=q?0:d;i=r;return d|0}function Jba(a){a=a|0;var b=0;b=i;b4(a);xea(a);i=b;return}function Kba(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;g=F9(d,369464)|0;f=b+36|0;c[f>>2]=g;d=b+44|0;c[d>>2]=Ld[c[(c[g>>2]|0)+24>>2]&511](g)|0;f=c[f>>2]|0;a[b+53>>0]=(Ld[c[(c[f>>2]|0)+28>>2]&511](f)|0)&1;if((c[d>>2]|0)>8)N8(365648);else{i=e;return}}function Lba(a){a=a|0;var b=0;b=i;a=tda(a,0)|0;i=b;return a|0}function Mba(a){a=a|0;var b=0;b=i;a=tda(a,1)|0;i=b;return a|0}function Nba(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;l=m+16|0;k=m;f=m+8|0;g=m+4|0;h=b+52|0;e=(a[h>>0]|0)!=0;if((d|0)==-1){if(e){d=-1;i=m;return d|0}d=c[b+48>>2]|0;a[h>>0]=(d|0)!=-1&1;i=m;return d|0}j=b+48|0;a:do if(e){a[f>>0]=c[j>>2];e=c[b+36>>2]|0;e=be[c[(c[e>>2]|0)+12>>2]&15](e,c[b+40>>2]|0,f,f+1|0,g,l,l+8|0,k)|0;if((e|0)==3){a[l>>0]=c[j>>2];c[k>>2]=l+1}else if((e|0)==1|(e|0)==2){d=-1;i=m;return d|0}e=b+32|0;while(1){f=c[k>>2]|0;if(f>>>0<=l>>>0)break a;g=f+-1|0;c[k>>2]=g;if((Wc(a[g>>0]|0,c[e>>2]|0)|0)==-1){e=-1;break}}i=m;return e|0}while(0);c[j>>2]=d;a[h>>0]=1;i=m;return d|0}function Oba(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function Pba(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function Qba(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function Rba(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;c4(b);c[b>>2]=365808;c[b+32>>2]=d;c[b+40>>2]=e;c[b+48>>2]=-1;a[b+52>>0]=0;C9(g,b+4|0);Kba(b,g);D9(g);i=f;return}function Sba(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;c4(b);c[b>>2]=365696;c[b+32>>2]=d;C9(g,b+4|0);d=F9(g,369464)|0;D9(g);c[b+36>>2]=d;c[b+40>>2]=e;a[b+44>>0]=(Ld[c[(c[d>>2]|0)+28>>2]&511](d)|0)&1;i=f;return}function Tba(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;s4(b);c[b>>2]=365552;c[b+32>>2]=d;c[b+40>>2]=e;c[b+48>>2]=-1;a[b+52>>0]=0;C9(g,b+4|0);Aba(b,g);D9(g);i=f;return}function Uba(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;s4(b);c[b>>2]=365440;c[b+32>>2]=d;C9(g,b+4|0);d=F9(g,369472)|0;D9(g);c[b+36>>2]=d;c[b+40>>2]=e;a[b+44>>0]=(Ld[c[(c[d>>2]|0)+28>>2]&511](d)|0)&1;i=f;return}function Vba(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;f=Dga(b|0)|0;e=tea(f+13|0)|0;c[e>>2]=f;c[e+4>>2]=f;c[e+8>>2]=0;e=e+12|0;Aga(e|0,b|0,f+1|0)|0;c[a>>2]=e;i=d;return}function Wba(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;h=i;g=d;f=e-g|0;if(f>>>0>4294967279)m3(b);if(f>>>0<11){a[b>>0]=f<<1;b=b+1|0}else{k=f+16&-16;j=tea(k)|0;c[b+8>>2]=j;c[b>>2]=k|1;c[b+4>>2]=f;b=j}if((d|0)==(e|0)){j=b;a[j>>0]=0;i=h;return}g=e-g|0;f=b;while(1){a[f>>0]=a[d>>0]|0;d=d+1|0;if((d|0)==(e|0))break;else f=f+1|0}j=b+g|0;a[j>>0]=0;i=h;return}function Xba(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;h=d;f=e-h|0;g=f>>2;if(g>>>0>1073741807)m3(b);if(g>>>0<2){a[b>>0]=f>>>1;b=b+4|0}else{k=g+4&-4;f=tea(k<<2)|0;c[b+8>>2]=f;c[b>>2]=k|1;c[b+4>>2]=g;b=f}if((d|0)==(e|0)){e=b;c[e>>2]=0;i=j;return}g=((e+-4-h|0)>>>2)+1|0;f=b;while(1){c[f>>2]=c[d>>2];d=d+4|0;if((d|0)==(e|0))break;else f=f+4|0}e=b+(g<<2)|0;c[e>>2]=0;i=j;return}function Yba(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+112|0;m=z;o=(g-f|0)/12|0;if(o>>>0>100){m=Afa(o)|0;if(!m)vfa();else{x=m;l=m}}else{x=0;l=m}w=(f|0)==(g|0);if(w){n=0;m=o}else{q=f;p=0;m=o;o=l;while(1){n=a[q>>0]|0;if(!(n&1))n=(n&255)>>>1;else n=c[q+4>>2]|0;if(!n){a[o>>0]=2;n=p+1|0;m=m+-1|0}else{a[o>>0]=1;n=p}q=q+12|0;if((q|0)==(g|0))break;else{p=n;o=o+1|0}}}v=0;o=n;r=m;a:while(1){m=c[b>>2]|0;do if(m){if((c[m+12>>2]|0)==(c[m+16>>2]|0))if((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1){c[b>>2]=0;m=0;break}else{m=c[b>>2]|0;break}}else m=0;while(0);n=(m|0)==0;m=c[e>>2]|0;if(m)if((c[m+12>>2]|0)==(c[m+16>>2]|0)?(Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1:0){c[e>>2]=0;p=0}else p=m;else p=0;q=(p|0)==0;m=c[b>>2]|0;if(!((n^q)&(r|0)!=0))break;n=c[m+12>>2]|0;if((n|0)==(c[m+16>>2]|0))m=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else m=d[n>>0]|0;m=m&255;if(!k)m=Wd[c[(c[h>>2]|0)+12>>2]&511](h,m)|0;u=v+1|0;if(w){v=u;continue}else{n=0;t=f;s=l}while(1){do if((a[s>>0]|0)==1){if(!(a[t>>0]&1))q=t+1|0;else q=c[t+8>>2]|0;q=a[q+v>>0]|0;if(!k)q=Wd[c[(c[h>>2]|0)+12>>2]&511](h,q)|0;if(m<<24>>24!=q<<24>>24){a[s>>0]=0;q=n;p=o;r=r+-1|0;break}n=a[t>>0]|0;if(!(n&1))n=(n&255)>>>1;else n=c[t+4>>2]|0;if((n|0)==(u|0)){a[s>>0]=2;q=1;p=o+1|0;r=r+-1|0}else{q=1;p=o}}else{q=n;p=o}while(0);t=t+12|0;if((t|0)==(g|0))break;else{n=q;o=p;s=s+1|0}}if(!q){v=u;o=p;continue}o=c[b>>2]|0;n=o+12|0;m=c[n>>2]|0;if((m|0)==(c[o+16>>2]|0))Ld[c[(c[o>>2]|0)+40>>2]&511](o)|0;else c[n>>2]=m+1;if((p+r|0)>>>0<2){v=u;o=p;continue}else{m=f;o=p;q=l}while(1){if((a[q>>0]|0)==2){n=a[m>>0]|0;if(!(n&1))n=(n&255)>>>1;else n=c[m+4>>2]|0;if((n|0)!=(u|0)){a[q>>0]=0;o=o+-1|0}}m=m+12|0;if((m|0)==(g|0)){v=u;continue a}else q=q+1|0}}do if(m){if((c[m+12>>2]|0)==(c[m+16>>2]|0))if((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1){c[b>>2]=0;m=0;break}else{m=c[b>>2]|0;break}}else m=0;while(0);m=(m|0)==0;do if(!q){if((c[p+12>>2]|0)!=(c[p+16>>2]|0))if(m)break;else{y=67;break}if((Ld[c[(c[p>>2]|0)+36>>2]&511](p)|0)!=-1)if(m)break;else{y=67;break}else{c[e>>2]=0;y=65;break}}else y=65;while(0);if((y|0)==65?m:0)y=67;if((y|0)==67)c[j>>2]=c[j>>2]|2;b:do if(w)y=71;else while(1){if((a[l>>0]|0)==2){g=f;break b}f=f+12|0;if((f|0)==(g|0)){y=71;break}else l=l+1|0}while(0);if((y|0)==71)c[j>>2]=c[j>>2]|4;if(!x){i=z;return g|0}Bfa(x);i=z;return g|0}function Zba(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=i;i=i+224|0;t=C+198|0;e=C+196|0;B=C+4|0;A=C+16|0;v=C+28|0;x=C+32|0;y=C;w=C+192|0;u=dba(h)|0;g6(B,h,t,e);c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;z3(A,10,0);if(!(a[A>>0]&1)){l=A+1|0;q=l;r=A+8|0}else{l=A+8|0;q=A+1|0;r=l;l=c[l>>2]|0}c[v>>2]=l;c[y>>2]=x;c[w>>2]=0;s=A+4|0;p=a[e>>0]|0;e=c[f>>2]|0;a:while(1){if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;m=c[g>>2]|0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(h)break;else break a;if((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(h)break;else break a;else{c[g>>2]=0;D=14;break}}else D=14;while(0);if((D|0)==14){D=0;if(h){m=0;break}else m=0}o=a[A>>0]|0;h=(o&1)==0;if(h)n=(o&255)>>>1;else n=c[s>>2]|0;if((c[v>>2]|0)==(l+n|0)){if(h){h=(o&255)>>>1;n=(o&255)>>>1}else{n=c[s>>2]|0;h=n}z3(A,h<<1,0);if(!(a[A>>0]&1))h=10;else h=(c[A>>2]&-2)+-1|0;z3(A,h,0);if(!(a[A>>0]&1))l=q;else l=c[r>>2]|0;c[v>>2]=l+n}o=e+12|0;h=c[o>>2]|0;n=e+16|0;if((h|0)==(c[n>>2]|0))h=Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0;else h=d[h>>0]|0;if(S5(h&255,u,l,v,w,p,B,x,y,t)|0)break;m=c[o>>2]|0;if((m|0)==(c[n>>2]|0)){Ld[c[(c[e>>2]|0)+40>>2]&511](e)|0;continue}else{c[o>>2]=m+1;continue}}h=a[B>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[B+4>>2]|0;if((h|0)!=0?(z=c[y>>2]|0,(z-x|0)<160):0){w=c[w>>2]|0;c[y>>2]=z+4;c[z>>2]=w}c[k>>2]=uda(l,c[v>>2]|0,j,u)|0;Q8(B,x,c[y>>2]|0,j);if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0)){if(!h)break;c[b>>2]=e;v3(A);v3(B);i=C;return}if((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1){c[g>>2]=0;D=50;break}if(h^(m|0)==0){c[b>>2]=e;v3(A);v3(B);i=C;return}}else D=50;while(0);if((D|0)==50?!h:0){c[b>>2]=e;v3(A);v3(B);i=C;return}c[j>>2]=c[j>>2]|2;c[b>>2]=e;v3(A);v3(B);i=C;return}function _ba(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=i;i=i+224|0;t=C+198|0;e=C+196|0;B=C+4|0;A=C+16|0;v=C+28|0;x=C+32|0;y=C;w=C+192|0;u=dba(h)|0;g6(B,h,t,e);c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;z3(A,10,0);if(!(a[A>>0]&1)){l=A+1|0;q=l;r=A+8|0}else{l=A+8|0;q=A+1|0;r=l;l=c[l>>2]|0}c[v>>2]=l;c[y>>2]=x;c[w>>2]=0;s=A+4|0;p=a[e>>0]|0;e=c[f>>2]|0;a:while(1){if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;m=c[g>>2]|0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(h)break;else break a;if((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(h)break;else break a;else{c[g>>2]=0;D=14;break}}else D=14;while(0);if((D|0)==14){D=0;if(h){m=0;break}else m=0}o=a[A>>0]|0;h=(o&1)==0;if(h)n=(o&255)>>>1;else n=c[s>>2]|0;if((c[v>>2]|0)==(l+n|0)){if(h){h=(o&255)>>>1;n=(o&255)>>>1}else{n=c[s>>2]|0;h=n}z3(A,h<<1,0);if(!(a[A>>0]&1))h=10;else h=(c[A>>2]&-2)+-1|0;z3(A,h,0);if(!(a[A>>0]&1))l=q;else l=c[r>>2]|0;c[v>>2]=l+n}o=e+12|0;h=c[o>>2]|0;n=e+16|0;if((h|0)==(c[n>>2]|0))h=Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0;else h=d[h>>0]|0;if(S5(h&255,u,l,v,w,p,B,x,y,t)|0)break;m=c[o>>2]|0;if((m|0)==(c[n>>2]|0)){Ld[c[(c[e>>2]|0)+40>>2]&511](e)|0;continue}else{c[o>>2]=m+1;continue}}h=a[B>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[B+4>>2]|0;if((h|0)!=0?(z=c[y>>2]|0,(z-x|0)<160):0){w=c[w>>2]|0;c[y>>2]=z+4;c[z>>2]=w}z=vda(l,c[v>>2]|0,j,u)|0;c[k>>2]=z;c[k+4>>2]=I;Q8(B,x,c[y>>2]|0,j);if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0)){if(!h)break;c[b>>2]=e;v3(A);v3(B);i=C;return}if((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1){c[g>>2]=0;D=50;break}if(h^(m|0)==0){c[b>>2]=e;v3(A);v3(B);i=C;return}}else D=50;while(0);if((D|0)==50?!h:0){c[b>>2]=e;v3(A);v3(B);i=C;return}c[j>>2]=c[j>>2]|2;c[b>>2]=e;v3(A);v3(B);i=C;return}function $ba(e,f,g,h,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;D=i;i=i+224|0;u=D+198|0;f=D+196|0;C=D+4|0;B=D+16|0;w=D+28|0;y=D+32|0;z=D;x=D+192|0;v=dba(j)|0;g6(C,j,u,f);c[B+0>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;z3(B,10,0);if(!(a[B>>0]&1)){m=B+1|0;r=m;s=B+8|0}else{m=B+8|0;r=B+1|0;s=m;m=c[m>>2]|0}c[w>>2]=m;c[z>>2]=y;c[x>>2]=0;t=B+4|0;q=a[f>>0]|0;f=c[g>>2]|0;a:while(1){if(f){if((c[f+12>>2]|0)==(c[f+16>>2]|0)?(Ld[c[(c[f>>2]|0)+36>>2]&511](f)|0)==-1:0){c[g>>2]=0;f=0}}else f=0;j=(f|0)==0;n=c[h>>2]|0;do if(n){if((c[n+12>>2]|0)!=(c[n+16>>2]|0))if(j)break;else break a;if((Ld[c[(c[n>>2]|0)+36>>2]&511](n)|0)!=-1)if(j)break;else break a;else{c[h>>2]=0;E=14;break}}else E=14;while(0);if((E|0)==14){E=0;if(j){n=0;break}else n=0}p=a[B>>0]|0;j=(p&1)==0;if(j)o=(p&255)>>>1;else o=c[t>>2]|0;if((c[w>>2]|0)==(m+o|0)){if(j){j=(p&255)>>>1;o=(p&255)>>>1}else{o=c[t>>2]|0;j=o}z3(B,j<<1,0);if(!(a[B>>0]&1))j=10;else j=(c[B>>2]&-2)+-1|0;z3(B,j,0);if(!(a[B>>0]&1))m=r;else m=c[s>>2]|0;c[w>>2]=m+o}p=f+12|0;j=c[p>>2]|0;o=f+16|0;if((j|0)==(c[o>>2]|0))j=Ld[c[(c[f>>2]|0)+36>>2]&511](f)|0;else j=d[j>>0]|0;if(S5(j&255,v,m,w,x,q,C,y,z,u)|0)break;n=c[p>>2]|0;if((n|0)==(c[o>>2]|0)){Ld[c[(c[f>>2]|0)+40>>2]&511](f)|0;continue}else{c[p>>2]=n+1;continue}}j=a[C>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[C+4>>2]|0;if((j|0)!=0?(A=c[z>>2]|0,(A-y|0)<160):0){x=c[x>>2]|0;c[z>>2]=A+4;c[A>>2]=x}b[l>>1]=wda(m,c[w>>2]|0,k,v)|0;Q8(C,y,c[z>>2]|0,k);if(f){if((c[f+12>>2]|0)==(c[f+16>>2]|0)?(Ld[c[(c[f>>2]|0)+36>>2]&511](f)|0)==-1:0){c[g>>2]=0;f=0}}else f=0;j=(f|0)==0;do if(n){if((c[n+12>>2]|0)!=(c[n+16>>2]|0)){if(!j)break;c[e>>2]=f;v3(B);v3(C);i=D;return}if((Ld[c[(c[n>>2]|0)+36>>2]&511](n)|0)==-1){c[h>>2]=0;E=50;break}if(j^(n|0)==0){c[e>>2]=f;v3(B);v3(C);i=D;return}}else E=50;while(0);if((E|0)==50?!j:0){c[e>>2]=f;v3(B);v3(C);i=D;return}c[k>>2]=c[k>>2]|2;c[e>>2]=f;v3(B);v3(C);i=D;return}function aca(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=i;i=i+224|0;t=C+198|0;e=C+196|0;B=C+4|0;A=C+16|0;v=C+28|0;x=C+32|0;y=C;w=C+192|0;u=dba(h)|0;g6(B,h,t,e);c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;z3(A,10,0);if(!(a[A>>0]&1)){l=A+1|0;q=l;r=A+8|0}else{l=A+8|0;q=A+1|0;r=l;l=c[l>>2]|0}c[v>>2]=l;c[y>>2]=x;c[w>>2]=0;s=A+4|0;p=a[e>>0]|0;e=c[f>>2]|0;a:while(1){if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;m=c[g>>2]|0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(h)break;else break a;if((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(h)break;else break a;else{c[g>>2]=0;D=14;break}}else D=14;while(0);if((D|0)==14){D=0;if(h){m=0;break}else m=0}o=a[A>>0]|0;h=(o&1)==0;if(h)n=(o&255)>>>1;else n=c[s>>2]|0;if((c[v>>2]|0)==(l+n|0)){if(h){h=(o&255)>>>1;n=(o&255)>>>1}else{n=c[s>>2]|0;h=n}z3(A,h<<1,0);if(!(a[A>>0]&1))h=10;else h=(c[A>>2]&-2)+-1|0;z3(A,h,0);if(!(a[A>>0]&1))l=q;else l=c[r>>2]|0;c[v>>2]=l+n}o=e+12|0;h=c[o>>2]|0;n=e+16|0;if((h|0)==(c[n>>2]|0))h=Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0;else h=d[h>>0]|0;if(S5(h&255,u,l,v,w,p,B,x,y,t)|0)break;m=c[o>>2]|0;if((m|0)==(c[n>>2]|0)){Ld[c[(c[e>>2]|0)+40>>2]&511](e)|0;continue}else{c[o>>2]=m+1;continue}}h=a[B>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[B+4>>2]|0;if((h|0)!=0?(z=c[y>>2]|0,(z-x|0)<160):0){w=c[w>>2]|0;c[y>>2]=z+4;c[z>>2]=w}c[k>>2]=xda(l,c[v>>2]|0,j,u)|0;Q8(B,x,c[y>>2]|0,j);if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0)){if(!h)break;c[b>>2]=e;v3(A);v3(B);i=C;return}if((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1){c[g>>2]=0;D=50;break}if(h^(m|0)==0){c[b>>2]=e;v3(A);v3(B);i=C;return}}else D=50;while(0);if((D|0)==50?!h:0){c[b>>2]=e;v3(A);v3(B);i=C;return}c[j>>2]=c[j>>2]|2;c[b>>2]=e;v3(A);v3(B);i=C;return}function bca(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=i;i=i+224|0;t=C+198|0;e=C+196|0;B=C+4|0;A=C+16|0;v=C+28|0;x=C+32|0;y=C;w=C+192|0;u=dba(h)|0;g6(B,h,t,e);c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;z3(A,10,0);if(!(a[A>>0]&1)){l=A+1|0;q=l;r=A+8|0}else{l=A+8|0;q=A+1|0;r=l;l=c[l>>2]|0}c[v>>2]=l;c[y>>2]=x;c[w>>2]=0;s=A+4|0;p=a[e>>0]|0;e=c[f>>2]|0;a:while(1){if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;m=c[g>>2]|0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(h)break;else break a;if((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(h)break;else break a;else{c[g>>2]=0;D=14;break}}else D=14;while(0);if((D|0)==14){D=0;if(h){m=0;break}else m=0}o=a[A>>0]|0;h=(o&1)==0;if(h)n=(o&255)>>>1;else n=c[s>>2]|0;if((c[v>>2]|0)==(l+n|0)){if(h){h=(o&255)>>>1;n=(o&255)>>>1}else{n=c[s>>2]|0;h=n}z3(A,h<<1,0);if(!(a[A>>0]&1))h=10;else h=(c[A>>2]&-2)+-1|0;z3(A,h,0);if(!(a[A>>0]&1))l=q;else l=c[r>>2]|0;c[v>>2]=l+n}o=e+12|0;h=c[o>>2]|0;n=e+16|0;if((h|0)==(c[n>>2]|0))h=Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0;else h=d[h>>0]|0;if(S5(h&255,u,l,v,w,p,B,x,y,t)|0)break;m=c[o>>2]|0;if((m|0)==(c[n>>2]|0)){Ld[c[(c[e>>2]|0)+40>>2]&511](e)|0;continue}else{c[o>>2]=m+1;continue}}h=a[B>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[B+4>>2]|0;if((h|0)!=0?(z=c[y>>2]|0,(z-x|0)<160):0){w=c[w>>2]|0;c[y>>2]=z+4;c[z>>2]=w}c[k>>2]=yda(l,c[v>>2]|0,j,u)|0;Q8(B,x,c[y>>2]|0,j);if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0)){if(!h)break;c[b>>2]=e;v3(A);v3(B);i=C;return}if((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1){c[g>>2]=0;D=50;break}if(h^(m|0)==0){c[b>>2]=e;v3(A);v3(B);i=C;return}}else D=50;while(0);if((D|0)==50?!h:0){c[b>>2]=e;v3(A);v3(B);i=C;return}c[j>>2]=c[j>>2]|2;c[b>>2]=e;v3(A);v3(B);i=C;return}function cca(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=i;i=i+224|0;t=C+198|0;e=C+196|0;B=C+4|0;A=C+16|0;v=C+28|0;x=C+32|0;y=C;w=C+192|0;u=dba(h)|0;g6(B,h,t,e);c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;z3(A,10,0);if(!(a[A>>0]&1)){l=A+1|0;q=l;r=A+8|0}else{l=A+8|0;q=A+1|0;r=l;l=c[l>>2]|0}c[v>>2]=l;c[y>>2]=x;c[w>>2]=0;s=A+4|0;p=a[e>>0]|0;e=c[f>>2]|0;a:while(1){if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;m=c[g>>2]|0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0))if(h)break;else break a;if((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)!=-1)if(h)break;else break a;else{c[g>>2]=0;D=14;break}}else D=14;while(0);if((D|0)==14){D=0;if(h){m=0;break}else m=0}o=a[A>>0]|0;h=(o&1)==0;if(h)n=(o&255)>>>1;else n=c[s>>2]|0;if((c[v>>2]|0)==(l+n|0)){if(h){h=(o&255)>>>1;n=(o&255)>>>1}else{n=c[s>>2]|0;h=n}z3(A,h<<1,0);if(!(a[A>>0]&1))h=10;else h=(c[A>>2]&-2)+-1|0;z3(A,h,0);if(!(a[A>>0]&1))l=q;else l=c[r>>2]|0;c[v>>2]=l+n}o=e+12|0;h=c[o>>2]|0;n=e+16|0;if((h|0)==(c[n>>2]|0))h=Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0;else h=d[h>>0]|0;if(S5(h&255,u,l,v,w,p,B,x,y,t)|0)break;m=c[o>>2]|0;if((m|0)==(c[n>>2]|0)){Ld[c[(c[e>>2]|0)+40>>2]&511](e)|0;continue}else{c[o>>2]=m+1;continue}}h=a[B>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[B+4>>2]|0;if((h|0)!=0?(z=c[y>>2]|0,(z-x|0)<160):0){w=c[w>>2]|0;c[y>>2]=z+4;c[z>>2]=w}z=zda(l,c[v>>2]|0,j,u)|0;c[k>>2]=z;c[k+4>>2]=I;Q8(B,x,c[y>>2]|0,j);if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;h=(e|0)==0;do if(m){if((c[m+12>>2]|0)!=(c[m+16>>2]|0)){if(!h)break;c[b>>2]=e;v3(A);v3(B);i=C;return}if((Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0)==-1){c[g>>2]=0;D=50;break}if(h^(m|0)==0){c[b>>2]=e;v3(A);v3(B);i=C;return}}else D=50;while(0);if((D|0)==50?!h:0){c[b>>2]=e;v3(A);v3(B);i=C;return}c[j>>2]=c[j>>2]|2;c[b>>2]=e;v3(A);v3(B);i=C;return}function dca(b,e,f,h,j,k,l){b=b|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=i;i=i+240|0;v=F+200|0;e=F+199|0;n=F+198|0;E=F+8|0;D=F+20|0;x=F+192|0;z=F+32|0;A=F;y=F+4|0;B=F+197|0;w=F+196|0;h6(E,j,v,e,n);c[D+0>>2]=0;c[D+4>>2]=0;c[D+8>>2]=0;z3(D,10,0);if(!(a[D>>0]&1)){m=D+1|0;s=m;t=D+8|0}else{m=D+8|0;s=D+1|0;t=m;m=c[m>>2]|0}c[x>>2]=m;c[A>>2]=z;c[y>>2]=0;a[B>>0]=1;a[w>>0]=69;u=D+4|0;r=a[e>>0]|0;q=a[n>>0]|0;e=c[f>>2]|0;a:while(1){if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;j=(e|0)==0;n=c[h>>2]|0;do if(n){if((c[n+12>>2]|0)!=(c[n+16>>2]|0))if(j)break;else break a;if((Ld[c[(c[n>>2]|0)+36>>2]&511](n)|0)!=-1)if(j)break;else break a;else{c[h>>2]=0;G=14;break}}else G=14;while(0);if((G|0)==14){G=0;if(j){n=0;break}else n=0}p=a[D>>0]|0;j=(p&1)==0;if(j)o=(p&255)>>>1;else o=c[u>>2]|0;if((c[x>>2]|0)==(m+o|0)){if(j){j=(p&255)>>>1;o=(p&255)>>>1}else{o=c[u>>2]|0;j=o}z3(D,j<<1,0);if(!(a[D>>0]&1))j=10;else j=(c[D>>2]&-2)+-1|0;z3(D,j,0);if(!(a[D>>0]&1))m=s;else m=c[t>>2]|0;c[x>>2]=m+o}p=e+12|0;j=c[p>>2]|0;o=e+16|0;if((j|0)==(c[o>>2]|0))j=Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0;else j=d[j>>0]|0;if(i6(j&255,B,w,m,x,r,q,E,z,A,y,v)|0)break;n=c[p>>2]|0;if((n|0)==(c[o>>2]|0)){Ld[c[(c[e>>2]|0)+40>>2]&511](e)|0;continue}else{c[p>>2]=n+1;continue}}j=a[E>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[E+4>>2]|0;if(!((j|0)==0|(a[B>>0]|0)==0)?(C=c[A>>2]|0,(C-z|0)<160):0){B=c[y>>2]|0;c[A>>2]=C+4;c[C>>2]=B}g[l>>2]=+Ada(m,c[x>>2]|0,k);Q8(E,z,c[A>>2]|0,k);if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;j=(e|0)==0;do if(n){if((c[n+12>>2]|0)!=(c[n+16>>2]|0)){if(!j)break;c[b>>2]=e;v3(D);v3(E);i=F;return}if((Ld[c[(c[n>>2]|0)+36>>2]&511](n)|0)==-1){c[h>>2]=0;G=50;break}if(j^(n|0)==0){c[b>>2]=e;v3(D);v3(E);i=F;return}}else G=50;while(0);if((G|0)==50?!j:0){c[b>>2]=e;v3(D);v3(E);i=F;return}c[k>>2]=c[k>>2]|2;c[b>>2]=e;v3(D);v3(E);i=F;return}function eca(b,e,f,g,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=i;i=i+240|0;v=F+200|0;e=F+199|0;n=F+198|0;E=F+8|0;D=F+20|0;x=F+192|0;z=F+32|0;A=F;y=F+4|0;B=F+197|0;w=F+196|0;h6(E,j,v,e,n);c[D+0>>2]=0;c[D+4>>2]=0;c[D+8>>2]=0;z3(D,10,0);if(!(a[D>>0]&1)){m=D+1|0;s=m;t=D+8|0}else{m=D+8|0;s=D+1|0;t=m;m=c[m>>2]|0}c[x>>2]=m;c[A>>2]=z;c[y>>2]=0;a[B>>0]=1;a[w>>0]=69;u=D+4|0;r=a[e>>0]|0;q=a[n>>0]|0;e=c[f>>2]|0;a:while(1){if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;j=(e|0)==0;n=c[g>>2]|0;do if(n){if((c[n+12>>2]|0)!=(c[n+16>>2]|0))if(j)break;else break a;if((Ld[c[(c[n>>2]|0)+36>>2]&511](n)|0)!=-1)if(j)break;else break a;else{c[g>>2]=0;G=14;break}}else G=14;while(0);if((G|0)==14){G=0;if(j){n=0;break}else n=0}p=a[D>>0]|0;j=(p&1)==0;if(j)o=(p&255)>>>1;else o=c[u>>2]|0;if((c[x>>2]|0)==(m+o|0)){if(j){j=(p&255)>>>1;o=(p&255)>>>1}else{o=c[u>>2]|0;j=o}z3(D,j<<1,0);if(!(a[D>>0]&1))j=10;else j=(c[D>>2]&-2)+-1|0;z3(D,j,0);if(!(a[D>>0]&1))m=s;else m=c[t>>2]|0;c[x>>2]=m+o}p=e+12|0;j=c[p>>2]|0;o=e+16|0;if((j|0)==(c[o>>2]|0))j=Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0;else j=d[j>>0]|0;if(i6(j&255,B,w,m,x,r,q,E,z,A,y,v)|0)break;n=c[p>>2]|0;if((n|0)==(c[o>>2]|0)){Ld[c[(c[e>>2]|0)+40>>2]&511](e)|0;continue}else{c[p>>2]=n+1;continue}}j=a[E>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[E+4>>2]|0;if(!((j|0)==0|(a[B>>0]|0)==0)?(C=c[A>>2]|0,(C-z|0)<160):0){B=c[y>>2]|0;c[A>>2]=C+4;c[C>>2]=B}h[l>>3]=+Bda(m,c[x>>2]|0,k);Q8(E,z,c[A>>2]|0,k);if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;j=(e|0)==0;do if(n){if((c[n+12>>2]|0)!=(c[n+16>>2]|0)){if(!j)break;c[b>>2]=e;v3(D);v3(E);i=F;return}if((Ld[c[(c[n>>2]|0)+36>>2]&511](n)|0)==-1){c[g>>2]=0;G=50;break}if(j^(n|0)==0){c[b>>2]=e;v3(D);v3(E);i=F;return}}else G=50;while(0);if((G|0)==50?!j:0){c[b>>2]=e;v3(D);v3(E);i=F;return}c[k>>2]=c[k>>2]|2;c[b>>2]=e;v3(D);v3(E);i=F;return}function fca(b,e,f,g,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=i;i=i+240|0;v=F+200|0;e=F+199|0;n=F+198|0;E=F+8|0;D=F+20|0;x=F+192|0;z=F+32|0;A=F;y=F+4|0;B=F+197|0;w=F+196|0;h6(E,j,v,e,n);c[D+0>>2]=0;c[D+4>>2]=0;c[D+8>>2]=0;z3(D,10,0);if(!(a[D>>0]&1)){m=D+1|0;s=m;t=D+8|0}else{m=D+8|0;s=D+1|0;t=m;m=c[m>>2]|0}c[x>>2]=m;c[A>>2]=z;c[y>>2]=0;a[B>>0]=1;a[w>>0]=69;u=D+4|0;r=a[e>>0]|0;q=a[n>>0]|0;e=c[f>>2]|0;a:while(1){if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;j=(e|0)==0;n=c[g>>2]|0;do if(n){if((c[n+12>>2]|0)!=(c[n+16>>2]|0))if(j)break;else break a;if((Ld[c[(c[n>>2]|0)+36>>2]&511](n)|0)!=-1)if(j)break;else break a;else{c[g>>2]=0;G=14;break}}else G=14;while(0);if((G|0)==14){G=0;if(j){n=0;break}else n=0}p=a[D>>0]|0;j=(p&1)==0;if(j)o=(p&255)>>>1;else o=c[u>>2]|0;if((c[x>>2]|0)==(m+o|0)){if(j){j=(p&255)>>>1;o=(p&255)>>>1}else{o=c[u>>2]|0;j=o}z3(D,j<<1,0);if(!(a[D>>0]&1))j=10;else j=(c[D>>2]&-2)+-1|0;z3(D,j,0);if(!(a[D>>0]&1))m=s;else m=c[t>>2]|0;c[x>>2]=m+o}p=e+12|0;j=c[p>>2]|0;o=e+16|0;if((j|0)==(c[o>>2]|0))j=Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0;else j=d[j>>0]|0;if(i6(j&255,B,w,m,x,r,q,E,z,A,y,v)|0)break;n=c[p>>2]|0;if((n|0)==(c[o>>2]|0)){Ld[c[(c[e>>2]|0)+40>>2]&511](e)|0;continue}else{c[p>>2]=n+1;continue}}j=a[E>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[E+4>>2]|0;if(!((j|0)==0|(a[B>>0]|0)==0)?(C=c[A>>2]|0,(C-z|0)<160):0){B=c[y>>2]|0;c[A>>2]=C+4;c[C>>2]=B}h[l>>3]=+Cda(m,c[x>>2]|0,k);Q8(E,z,c[A>>2]|0,k);if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(Ld[c[(c[e>>2]|0)+36>>2]&511](e)|0)==-1:0){c[f>>2]=0;e=0}}else e=0;j=(e|0)==0;do if(n){if((c[n+12>>2]|0)!=(c[n+16>>2]|0)){if(!j)break;c[b>>2]=e;v3(D);v3(E);i=F;return}if((Ld[c[(c[n>>2]|0)+36>>2]&511](n)|0)==-1){c[g>>2]=0;G=50;break}if(j^(n|0)==0){c[b>>2]=e;v3(D);v3(E);i=F;return}}else G=50;while(0);if((G|0)==50?!j:0){c[b>>2]=e;v3(D);v3(E);i=F;return}c[k>>2]=c[k>>2]|2;c[b>>2]=e;v3(D);v3(E);i=F;return}function gca(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;c[g>>2]=e;e=qc(b|0)|0;b=$da(a,d,g)|0;if(!e){i=f;return b|0}qc(e|0)|0;i=f;return b|0}function hca(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+112|0;l=y;n=(f-e|0)/12|0;if(n>>>0>100){l=Afa(n)|0;if(!l)vfa();else{w=l;k=l}}else{w=0;k=l}v=(e|0)==(f|0);if(v){m=0;l=n}else{p=e;o=0;l=n;n=k;while(1){m=a[p>>0]|0;if(!(m&1))m=(m&255)>>>1;else m=c[p+4>>2]|0;if(!m){a[n>>0]=2;m=o+1|0;l=l+-1|0}else{a[n>>0]=1;m=o}p=p+12|0;if((p|0)==(f|0))break;else{o=m;n=n+1|0}}}u=0;o=m;q=l;a:while(1){l=c[b>>2]|0;do if(l){m=c[l+12>>2]|0;if((m|0)==(c[l+16>>2]|0))l=Ld[c[(c[l>>2]|0)+36>>2]&511](l)|0;else l=c[m>>2]|0;if((l|0)==-1){c[b>>2]=0;p=1;break}else{p=(c[b>>2]|0)==0;break}}else p=1;while(0);n=c[d>>2]|0;if(n){l=c[n+12>>2]|0;if((l|0)==(c[n+16>>2]|0))l=Ld[c[(c[n>>2]|0)+36>>2]&511](n)|0;else l=c[l>>2]|0;if((l|0)==-1){c[d>>2]=0;n=0;l=1}else l=0}else{n=0;l=1}m=c[b>>2]|0;if(!((p^l)&(q|0)!=0))break;l=c[m+12>>2]|0;if((l|0)==(c[m+16>>2]|0))l=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else l=c[l>>2]|0;if(!j)l=Wd[c[(c[g>>2]|0)+28>>2]&511](g,l)|0;t=u+1|0;if(v){u=t;continue}else{p=0;r=e;m=q;q=k}while(1){do if((a[q>>0]|0)==1){if(!(a[r>>0]&1))n=r+4|0;else n=c[r+8>>2]|0;n=c[n+(u<<2)>>2]|0;if(!j)n=Wd[c[(c[g>>2]|0)+28>>2]&511](g,n)|0;if((l|0)!=(n|0)){a[q>>0]=0;s=m+-1|0;break}n=a[r>>0]|0;if(!(n&1))n=(n&255)>>>1;else n=c[r+4>>2]|0;if((n|0)==(t|0)){a[q>>0]=2;p=1;o=o+1|0;s=m+-1|0}else{p=1;s=m}}else s=m;while(0);r=r+12|0;if((r|0)==(f|0))break;else{m=s;q=q+1|0}}if(!p){u=t;q=s;continue}l=c[b>>2]|0;n=l+12|0;m=c[n>>2]|0;if((m|0)==(c[l+16>>2]|0))Ld[c[(c[l>>2]|0)+40>>2]&511](l)|0;else c[n>>2]=m+4;if((o+s|0)>>>0<2){u=t;q=s;continue}else{l=e;n=o;p=k}while(1){if((a[p>>0]|0)==2){m=a[l>>0]|0;if(!(m&1))m=(m&255)>>>1;else m=c[l+4>>2]|0;if((m|0)!=(t|0)){a[p>>0]=0;n=n+-1|0}}l=l+12|0;if((l|0)==(f|0)){u=t;o=n;q=s;continue a}else p=p+1|0}}do if(m){l=c[m+12>>2]|0;if((l|0)==(c[m+16>>2]|0))l=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else l=c[l>>2]|0;if((l|0)==-1){c[b>>2]=0;m=1;break}else{m=(c[b>>2]|0)==0;break}}else m=1;while(0);do if(n){l=c[n+12>>2]|0;if((l|0)==(c[n+16>>2]|0))l=Ld[c[(c[n>>2]|0)+36>>2]&511](n)|0;else l=c[l>>2]|0;if((l|0)!=-1)if(m)break;else{x=74;break}else{c[d>>2]=0;x=72;break}}else x=72;while(0);if((x|0)==72?m:0)x=74;if((x|0)==74)c[h>>2]=c[h>>2]|2;b:do if(v)x=78;else while(1){if((a[k>>0]|0)==2){f=e;break b}e=e+12|0;if((e|0)==(f|0)){x=78;break}else k=k+1|0}while(0);if((x|0)==78)c[h>>2]=c[h>>2]|4;if(!w){i=y;return f|0}Bfa(w);i=y;return f|0}function ica(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=i;i=i+304|0;s=B+200|0;d=B;A=B+4|0;z=B+16|0;u=B+28|0;w=B+32|0;x=B+192|0;v=B+196|0;t=dba(g)|0;j6(A,g,s,d);c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;z3(z,10,0);if(!(a[z>>0]&1)){k=z+1|0;p=k;q=z+8|0}else{k=z+8|0;p=z+1|0;q=k;k=c[k>>2]|0}c[u>>2]=k;c[x>>2]=w;c[v>>2]=0;r=z+4|0;o=c[d>>2]|0;g=c[e>>2]|0;a:while(1){if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;m=1;g=0}else m=0}else{m=1;g=0}l=c[f>>2]|0;do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ld[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(m)break;else break a;else{c[f>>2]=0;C=17;break}}else C=17;while(0);if((C|0)==17){C=0;if(m){l=0;break}else l=0}n=a[z>>0]|0;d=(n&1)==0;if(d)m=(n&255)>>>1;else m=c[r>>2]|0;if((c[u>>2]|0)==(k+m|0)){if(d){d=(n&255)>>>1;m=(n&255)>>>1}else{m=c[r>>2]|0;d=m}z3(z,d<<1,0);if(!(a[z>>0]&1))d=10;else d=(c[z>>2]&-2)+-1|0;z3(z,d,0);if(!(a[z>>0]&1))k=p;else k=c[q>>2]|0;c[u>>2]=k+m}n=g+12|0;d=c[n>>2]|0;m=g+16|0;if((d|0)==(c[m>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if(f6(d,t,k,u,v,o,A,w,x,s)|0)break;d=c[n>>2]|0;if((d|0)==(c[m>>2]|0)){Ld[c[(c[g>>2]|0)+40>>2]&511](g)|0;continue}else{c[n>>2]=d+4;continue}}d=a[A>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[A+4>>2]|0;if((d|0)!=0?(y=c[x>>2]|0,(y-w|0)<160):0){v=c[v>>2]|0;c[x>>2]=y+4;c[y>>2]=v}c[j>>2]=uda(k,c[u>>2]|0,h,t)|0;Q8(A,w,c[x>>2]|0,h);if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;g=0;k=1}else k=0}else{g=0;k=1}do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ld[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)==-1){c[f>>2]=0;C=56;break}if(k){c[b>>2]=g;v3(z);v3(A);i=B;return}}else C=56;while(0);if((C|0)==56?!k:0){c[b>>2]=g;v3(z);v3(A);i=B;return}c[h>>2]=c[h>>2]|2;c[b>>2]=g;v3(z);v3(A);i=B;return}function jca(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=i;i=i+304|0;s=B+200|0;d=B;A=B+4|0;z=B+16|0;u=B+28|0;w=B+32|0;x=B+192|0;v=B+196|0;t=dba(g)|0;j6(A,g,s,d);c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;z3(z,10,0);if(!(a[z>>0]&1)){k=z+1|0;p=k;q=z+8|0}else{k=z+8|0;p=z+1|0;q=k;k=c[k>>2]|0}c[u>>2]=k;c[x>>2]=w;c[v>>2]=0;r=z+4|0;o=c[d>>2]|0;g=c[e>>2]|0;a:while(1){if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;m=1;g=0}else m=0}else{m=1;g=0}l=c[f>>2]|0;do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ld[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(m)break;else break a;else{c[f>>2]=0;C=17;break}}else C=17;while(0);if((C|0)==17){C=0;if(m){l=0;break}else l=0}n=a[z>>0]|0;d=(n&1)==0;if(d)m=(n&255)>>>1;else m=c[r>>2]|0;if((c[u>>2]|0)==(k+m|0)){if(d){d=(n&255)>>>1;m=(n&255)>>>1}else{m=c[r>>2]|0;d=m}z3(z,d<<1,0);if(!(a[z>>0]&1))d=10;else d=(c[z>>2]&-2)+-1|0;z3(z,d,0);if(!(a[z>>0]&1))k=p;else k=c[q>>2]|0;c[u>>2]=k+m}n=g+12|0;d=c[n>>2]|0;m=g+16|0;if((d|0)==(c[m>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if(f6(d,t,k,u,v,o,A,w,x,s)|0)break;d=c[n>>2]|0;if((d|0)==(c[m>>2]|0)){Ld[c[(c[g>>2]|0)+40>>2]&511](g)|0;continue}else{c[n>>2]=d+4;continue}}d=a[A>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[A+4>>2]|0;if((d|0)!=0?(y=c[x>>2]|0,(y-w|0)<160):0){v=c[v>>2]|0;c[x>>2]=y+4;c[y>>2]=v}y=vda(k,c[u>>2]|0,h,t)|0;c[j>>2]=y;c[j+4>>2]=I;Q8(A,w,c[x>>2]|0,h);if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;g=0;k=1}else k=0}else{g=0;k=1}do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ld[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)==-1){c[f>>2]=0;C=56;break}if(k){c[b>>2]=g;v3(z);v3(A);i=B;return}}else C=56;while(0);if((C|0)==56?!k:0){c[b>>2]=g;v3(z);v3(A);i=B;return}c[h>>2]=c[h>>2]|2;c[b>>2]=g;v3(z);v3(A);i=B;return}function kca(d,e,f,g,h,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=i;i=i+304|0;t=C+200|0;e=C;B=C+4|0;A=C+16|0;v=C+28|0;x=C+32|0;y=C+192|0;w=C+196|0;u=dba(h)|0;j6(B,h,t,e);c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;z3(A,10,0);if(!(a[A>>0]&1)){l=A+1|0;q=l;r=A+8|0}else{l=A+8|0;q=A+1|0;r=l;l=c[l>>2]|0}c[v>>2]=l;c[y>>2]=x;c[w>>2]=0;s=A+4|0;p=c[e>>2]|0;h=c[f>>2]|0;a:while(1){if(h){e=c[h+12>>2]|0;if((e|0)==(c[h+16>>2]|0))e=Ld[c[(c[h>>2]|0)+36>>2]&511](h)|0;else e=c[e>>2]|0;if((e|0)==-1){c[f>>2]=0;n=1;h=0}else n=0}else{n=1;h=0}m=c[g>>2]|0;do if(m){e=c[m+12>>2]|0;if((e|0)==(c[m+16>>2]|0))e=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else e=c[e>>2]|0;if((e|0)!=-1)if(n)break;else break a;else{c[g>>2]=0;D=17;break}}else D=17;while(0);if((D|0)==17){D=0;if(n){m=0;break}else m=0}o=a[A>>0]|0;e=(o&1)==0;if(e)n=(o&255)>>>1;else n=c[s>>2]|0;if((c[v>>2]|0)==(l+n|0)){if(e){e=(o&255)>>>1;n=(o&255)>>>1}else{n=c[s>>2]|0;e=n}z3(A,e<<1,0);if(!(a[A>>0]&1))e=10;else e=(c[A>>2]&-2)+-1|0;z3(A,e,0);if(!(a[A>>0]&1))l=q;else l=c[r>>2]|0;c[v>>2]=l+n}o=h+12|0;e=c[o>>2]|0;n=h+16|0;if((e|0)==(c[n>>2]|0))e=Ld[c[(c[h>>2]|0)+36>>2]&511](h)|0;else e=c[e>>2]|0;if(f6(e,u,l,v,w,p,B,x,y,t)|0)break;e=c[o>>2]|0;if((e|0)==(c[n>>2]|0)){Ld[c[(c[h>>2]|0)+40>>2]&511](h)|0;continue}else{c[o>>2]=e+4;continue}}e=a[B>>0]|0;if(!(e&1))e=(e&255)>>>1;else e=c[B+4>>2]|0;if((e|0)!=0?(z=c[y>>2]|0,(z-x|0)<160):0){w=c[w>>2]|0;c[y>>2]=z+4;c[z>>2]=w}b[k>>1]=wda(l,c[v>>2]|0,j,u)|0;Q8(B,x,c[y>>2]|0,j);if(h){e=c[h+12>>2]|0;if((e|0)==(c[h+16>>2]|0))e=Ld[c[(c[h>>2]|0)+36>>2]&511](h)|0;else e=c[e>>2]|0;if((e|0)==-1){c[f>>2]=0;h=0;l=1}else l=0}else{h=0;l=1}do if(m){e=c[m+12>>2]|0;if((e|0)==(c[m+16>>2]|0))e=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else e=c[e>>2]|0;if((e|0)==-1){c[g>>2]=0;D=56;break}if(l){c[d>>2]=h;v3(A);v3(B);i=C;return}}else D=56;while(0);if((D|0)==56?!l:0){c[d>>2]=h;v3(A);v3(B);i=C;return}c[j>>2]=c[j>>2]|2;c[d>>2]=h;v3(A);v3(B);i=C;return}function lca(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=i;i=i+304|0;s=B+200|0;d=B;A=B+4|0;z=B+16|0;u=B+28|0;w=B+32|0;x=B+192|0;v=B+196|0;t=dba(g)|0;j6(A,g,s,d);c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;z3(z,10,0);if(!(a[z>>0]&1)){k=z+1|0;p=k;q=z+8|0}else{k=z+8|0;p=z+1|0;q=k;k=c[k>>2]|0}c[u>>2]=k;c[x>>2]=w;c[v>>2]=0;r=z+4|0;o=c[d>>2]|0;g=c[e>>2]|0;a:while(1){if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;m=1;g=0}else m=0}else{m=1;g=0}l=c[f>>2]|0;do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ld[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(m)break;else break a;else{c[f>>2]=0;C=17;break}}else C=17;while(0);if((C|0)==17){C=0;if(m){l=0;break}else l=0}n=a[z>>0]|0;d=(n&1)==0;if(d)m=(n&255)>>>1;else m=c[r>>2]|0;if((c[u>>2]|0)==(k+m|0)){if(d){d=(n&255)>>>1;m=(n&255)>>>1}else{m=c[r>>2]|0;d=m}z3(z,d<<1,0);if(!(a[z>>0]&1))d=10;else d=(c[z>>2]&-2)+-1|0;z3(z,d,0);if(!(a[z>>0]&1))k=p;else k=c[q>>2]|0;c[u>>2]=k+m}n=g+12|0;d=c[n>>2]|0;m=g+16|0;if((d|0)==(c[m>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if(f6(d,t,k,u,v,o,A,w,x,s)|0)break;d=c[n>>2]|0;if((d|0)==(c[m>>2]|0)){Ld[c[(c[g>>2]|0)+40>>2]&511](g)|0;continue}else{c[n>>2]=d+4;continue}}d=a[A>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[A+4>>2]|0;if((d|0)!=0?(y=c[x>>2]|0,(y-w|0)<160):0){v=c[v>>2]|0;c[x>>2]=y+4;c[y>>2]=v}c[j>>2]=xda(k,c[u>>2]|0,h,t)|0;Q8(A,w,c[x>>2]|0,h);if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;g=0;k=1}else k=0}else{g=0;k=1}do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ld[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)==-1){c[f>>2]=0;C=56;break}if(k){c[b>>2]=g;v3(z);v3(A);i=B;return}}else C=56;while(0);if((C|0)==56?!k:0){c[b>>2]=g;v3(z);v3(A);i=B;return}c[h>>2]=c[h>>2]|2;c[b>>2]=g;v3(z);v3(A);i=B;return}function mca(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=i;i=i+304|0;s=B+200|0;d=B;A=B+4|0;z=B+16|0;u=B+28|0;w=B+32|0;x=B+192|0;v=B+196|0;t=dba(g)|0;j6(A,g,s,d);c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;z3(z,10,0);if(!(a[z>>0]&1)){k=z+1|0;p=k;q=z+8|0}else{k=z+8|0;p=z+1|0;q=k;k=c[k>>2]|0}c[u>>2]=k;c[x>>2]=w;c[v>>2]=0;r=z+4|0;o=c[d>>2]|0;g=c[e>>2]|0;a:while(1){if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;m=1;g=0}else m=0}else{m=1;g=0}l=c[f>>2]|0;do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ld[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(m)break;else break a;else{c[f>>2]=0;C=17;break}}else C=17;while(0);if((C|0)==17){C=0;if(m){l=0;break}else l=0}n=a[z>>0]|0;d=(n&1)==0;if(d)m=(n&255)>>>1;else m=c[r>>2]|0;if((c[u>>2]|0)==(k+m|0)){if(d){d=(n&255)>>>1;m=(n&255)>>>1}else{m=c[r>>2]|0;d=m}z3(z,d<<1,0);if(!(a[z>>0]&1))d=10;else d=(c[z>>2]&-2)+-1|0;z3(z,d,0);if(!(a[z>>0]&1))k=p;else k=c[q>>2]|0;c[u>>2]=k+m}n=g+12|0;d=c[n>>2]|0;m=g+16|0;if((d|0)==(c[m>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if(f6(d,t,k,u,v,o,A,w,x,s)|0)break;d=c[n>>2]|0;if((d|0)==(c[m>>2]|0)){Ld[c[(c[g>>2]|0)+40>>2]&511](g)|0;continue}else{c[n>>2]=d+4;continue}}d=a[A>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[A+4>>2]|0;if((d|0)!=0?(y=c[x>>2]|0,(y-w|0)<160):0){v=c[v>>2]|0;c[x>>2]=y+4;c[y>>2]=v}c[j>>2]=yda(k,c[u>>2]|0,h,t)|0;Q8(A,w,c[x>>2]|0,h);if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;g=0;k=1}else k=0}else{g=0;k=1}do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ld[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)==-1){c[f>>2]=0;C=56;break}if(k){c[b>>2]=g;v3(z);v3(A);i=B;return}}else C=56;while(0);if((C|0)==56?!k:0){c[b>>2]=g;v3(z);v3(A);i=B;return}c[h>>2]=c[h>>2]|2;c[b>>2]=g;v3(z);v3(A);i=B;return}function nca(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=i;i=i+304|0;s=B+200|0;d=B;A=B+4|0;z=B+16|0;u=B+28|0;w=B+32|0;x=B+192|0;v=B+196|0;t=dba(g)|0;j6(A,g,s,d);c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;z3(z,10,0);if(!(a[z>>0]&1)){k=z+1|0;p=k;q=z+8|0}else{k=z+8|0;p=z+1|0;q=k;k=c[k>>2]|0}c[u>>2]=k;c[x>>2]=w;c[v>>2]=0;r=z+4|0;o=c[d>>2]|0;g=c[e>>2]|0;a:while(1){if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;m=1;g=0}else m=0}else{m=1;g=0}l=c[f>>2]|0;do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ld[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(m)break;else break a;else{c[f>>2]=0;C=17;break}}else C=17;while(0);if((C|0)==17){C=0;if(m){l=0;break}else l=0}n=a[z>>0]|0;d=(n&1)==0;if(d)m=(n&255)>>>1;else m=c[r>>2]|0;if((c[u>>2]|0)==(k+m|0)){if(d){d=(n&255)>>>1;m=(n&255)>>>1}else{m=c[r>>2]|0;d=m}z3(z,d<<1,0);if(!(a[z>>0]&1))d=10;else d=(c[z>>2]&-2)+-1|0;z3(z,d,0);if(!(a[z>>0]&1))k=p;else k=c[q>>2]|0;c[u>>2]=k+m}n=g+12|0;d=c[n>>2]|0;m=g+16|0;if((d|0)==(c[m>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if(f6(d,t,k,u,v,o,A,w,x,s)|0)break;d=c[n>>2]|0;if((d|0)==(c[m>>2]|0)){Ld[c[(c[g>>2]|0)+40>>2]&511](g)|0;continue}else{c[n>>2]=d+4;continue}}d=a[A>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[A+4>>2]|0;if((d|0)!=0?(y=c[x>>2]|0,(y-w|0)<160):0){v=c[v>>2]|0;c[x>>2]=y+4;c[y>>2]=v}y=zda(k,c[u>>2]|0,h,t)|0;c[j>>2]=y;c[j+4>>2]=I;Q8(A,w,c[x>>2]|0,h);if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;g=0;k=1}else k=0}else{g=0;k=1}do if(l){d=c[l+12>>2]|0;if((d|0)==(c[l+16>>2]|0))d=Ld[c[(c[l>>2]|0)+36>>2]&511](l)|0;else d=c[d>>2]|0;if((d|0)==-1){c[f>>2]=0;C=56;break}if(k){c[b>>2]=g;v3(z);v3(A);i=B;return}}else C=56;while(0);if((C|0)==56?!k:0){c[b>>2]=g;v3(z);v3(A);i=B;return}c[h>>2]=c[h>>2]|2;c[b>>2]=g;v3(z);v3(A);i=B;return}function oca(b,d,e,f,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;E=i;i=i+352|0;u=E+176|0;d=E+332|0;m=E+328|0;D=E+316|0;C=E+304|0;w=E+168|0;y=E+8|0;z=E+4|0;x=E;A=E+337|0;v=E+336|0;k6(D,h,u,d,m);c[C+0>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;z3(C,10,0);if(!(a[C>>0]&1)){l=C+1|0;r=l;s=C+8|0}else{l=C+8|0;r=C+1|0;s=l;l=c[l>>2]|0}c[w>>2]=l;c[z>>2]=y;c[x>>2]=0;a[A>>0]=1;a[v>>0]=69;t=C+4|0;q=c[d>>2]|0;p=c[m>>2]|0;h=c[e>>2]|0;a:while(1){if(h){d=c[h+12>>2]|0;if((d|0)==(c[h+16>>2]|0))d=Ld[c[(c[h>>2]|0)+36>>2]&511](h)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;n=1;h=0}else n=0}else{n=1;h=0}m=c[f>>2]|0;do if(m){d=c[m+12>>2]|0;if((d|0)==(c[m+16>>2]|0))d=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(n)break;else break a;else{c[f>>2]=0;F=17;break}}else F=17;while(0);if((F|0)==17){F=0;if(n){m=0;break}else m=0}o=a[C>>0]|0;d=(o&1)==0;if(d)n=(o&255)>>>1;else n=c[t>>2]|0;if((c[w>>2]|0)==(l+n|0)){if(d){d=(o&255)>>>1;n=(o&255)>>>1}else{n=c[t>>2]|0;d=n}z3(C,d<<1,0);if(!(a[C>>0]&1))d=10;else d=(c[C>>2]&-2)+-1|0;z3(C,d,0);if(!(a[C>>0]&1))l=r;else l=c[s>>2]|0;c[w>>2]=l+n}o=h+12|0;d=c[o>>2]|0;n=h+16|0;if((d|0)==(c[n>>2]|0))d=Ld[c[(c[h>>2]|0)+36>>2]&511](h)|0;else d=c[d>>2]|0;if(l6(d,A,v,l,w,q,p,D,y,z,x,u)|0)break;d=c[o>>2]|0;if((d|0)==(c[n>>2]|0)){Ld[c[(c[h>>2]|0)+40>>2]&511](h)|0;continue}else{c[o>>2]=d+4;continue}}d=a[D>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[D+4>>2]|0;if(!((d|0)==0|(a[A>>0]|0)==0)?(B=c[z>>2]|0,(B-y|0)<160):0){A=c[x>>2]|0;c[z>>2]=B+4;c[B>>2]=A}g[k>>2]=+Ada(l,c[w>>2]|0,j);Q8(D,y,c[z>>2]|0,j);if(h){d=c[h+12>>2]|0;if((d|0)==(c[h+16>>2]|0))d=Ld[c[(c[h>>2]|0)+36>>2]&511](h)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;h=0;l=1}else l=0}else{h=0;l=1}do if(m){d=c[m+12>>2]|0;if((d|0)==(c[m+16>>2]|0))d=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else d=c[d>>2]|0;if((d|0)==-1){c[f>>2]=0;F=56;break}if(l){c[b>>2]=h;v3(C);v3(D);i=E;return}}else F=56;while(0);if((F|0)==56?!l:0){c[b>>2]=h;v3(C);v3(D);i=E;return}c[j>>2]=c[j>>2]|2;c[b>>2]=h;v3(C);v3(D);i=E;return}function pca(b,d,e,f,g,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;E=i;i=i+352|0;u=E+176|0;d=E+332|0;m=E+328|0;D=E+316|0;C=E+304|0;w=E+168|0;y=E+8|0;z=E+4|0;x=E;A=E+337|0;v=E+336|0;k6(D,g,u,d,m);c[C+0>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;z3(C,10,0);if(!(a[C>>0]&1)){l=C+1|0;r=l;s=C+8|0}else{l=C+8|0;r=C+1|0;s=l;l=c[l>>2]|0}c[w>>2]=l;c[z>>2]=y;c[x>>2]=0;a[A>>0]=1;a[v>>0]=69;t=C+4|0;q=c[d>>2]|0;p=c[m>>2]|0;g=c[e>>2]|0;a:while(1){if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;n=1;g=0}else n=0}else{n=1;g=0}m=c[f>>2]|0;do if(m){d=c[m+12>>2]|0;if((d|0)==(c[m+16>>2]|0))d=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(n)break;else break a;else{c[f>>2]=0;F=17;break}}else F=17;while(0);if((F|0)==17){F=0;if(n){m=0;break}else m=0}o=a[C>>0]|0;d=(o&1)==0;if(d)n=(o&255)>>>1;else n=c[t>>2]|0;if((c[w>>2]|0)==(l+n|0)){if(d){d=(o&255)>>>1;n=(o&255)>>>1}else{n=c[t>>2]|0;d=n}z3(C,d<<1,0);if(!(a[C>>0]&1))d=10;else d=(c[C>>2]&-2)+-1|0;z3(C,d,0);if(!(a[C>>0]&1))l=r;else l=c[s>>2]|0;c[w>>2]=l+n}o=g+12|0;d=c[o>>2]|0;n=g+16|0;if((d|0)==(c[n>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if(l6(d,A,v,l,w,q,p,D,y,z,x,u)|0)break;d=c[o>>2]|0;if((d|0)==(c[n>>2]|0)){Ld[c[(c[g>>2]|0)+40>>2]&511](g)|0;continue}else{c[o>>2]=d+4;continue}}d=a[D>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[D+4>>2]|0;if(!((d|0)==0|(a[A>>0]|0)==0)?(B=c[z>>2]|0,(B-y|0)<160):0){A=c[x>>2]|0;c[z>>2]=B+4;c[B>>2]=A}h[k>>3]=+Bda(l,c[w>>2]|0,j);Q8(D,y,c[z>>2]|0,j);if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;g=0;l=1}else l=0}else{g=0;l=1}do if(m){d=c[m+12>>2]|0;if((d|0)==(c[m+16>>2]|0))d=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else d=c[d>>2]|0;if((d|0)==-1){c[f>>2]=0;F=56;break}if(l){c[b>>2]=g;v3(C);v3(D);i=E;return}}else F=56;while(0);if((F|0)==56?!l:0){c[b>>2]=g;v3(C);v3(D);i=E;return}c[j>>2]=c[j>>2]|2;c[b>>2]=g;v3(C);v3(D);i=E;return}function qca(b,d,e,f,g,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;E=i;i=i+352|0;u=E+176|0;d=E+332|0;m=E+328|0;D=E+316|0;C=E+304|0;w=E+168|0;y=E+8|0;z=E+4|0;x=E;A=E+337|0;v=E+336|0;k6(D,g,u,d,m);c[C+0>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;z3(C,10,0);if(!(a[C>>0]&1)){l=C+1|0;r=l;s=C+8|0}else{l=C+8|0;r=C+1|0;s=l;l=c[l>>2]|0}c[w>>2]=l;c[z>>2]=y;c[x>>2]=0;a[A>>0]=1;a[v>>0]=69;t=C+4|0;q=c[d>>2]|0;p=c[m>>2]|0;g=c[e>>2]|0;a:while(1){if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;n=1;g=0}else n=0}else{n=1;g=0}m=c[f>>2]|0;do if(m){d=c[m+12>>2]|0;if((d|0)==(c[m+16>>2]|0))d=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else d=c[d>>2]|0;if((d|0)!=-1)if(n)break;else break a;else{c[f>>2]=0;F=17;break}}else F=17;while(0);if((F|0)==17){F=0;if(n){m=0;break}else m=0}o=a[C>>0]|0;d=(o&1)==0;if(d)n=(o&255)>>>1;else n=c[t>>2]|0;if((c[w>>2]|0)==(l+n|0)){if(d){d=(o&255)>>>1;n=(o&255)>>>1}else{n=c[t>>2]|0;d=n}z3(C,d<<1,0);if(!(a[C>>0]&1))d=10;else d=(c[C>>2]&-2)+-1|0;z3(C,d,0);if(!(a[C>>0]&1))l=r;else l=c[s>>2]|0;c[w>>2]=l+n}o=g+12|0;d=c[o>>2]|0;n=g+16|0;if((d|0)==(c[n>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if(l6(d,A,v,l,w,q,p,D,y,z,x,u)|0)break;d=c[o>>2]|0;if((d|0)==(c[n>>2]|0)){Ld[c[(c[g>>2]|0)+40>>2]&511](g)|0;continue}else{c[o>>2]=d+4;continue}}d=a[D>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[D+4>>2]|0;if(!((d|0)==0|(a[A>>0]|0)==0)?(B=c[z>>2]|0,(B-y|0)<160):0){A=c[x>>2]|0;c[z>>2]=B+4;c[B>>2]=A}h[k>>3]=+Cda(l,c[w>>2]|0,j);Q8(D,y,c[z>>2]|0,j);if(g){d=c[g+12>>2]|0;if((d|0)==(c[g+16>>2]|0))d=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else d=c[d>>2]|0;if((d|0)==-1){c[e>>2]=0;g=0;l=1}else l=0}else{g=0;l=1}do if(m){d=c[m+12>>2]|0;if((d|0)==(c[m+16>>2]|0))d=Ld[c[(c[m>>2]|0)+36>>2]&511](m)|0;else d=c[d>>2]|0;if((d|0)==-1){c[f>>2]=0;F=56;break}if(l){c[b>>2]=g;v3(C);v3(D);i=E;return}}else F=56;while(0);if((F|0)==56?!l:0){c[b>>2]=g;v3(C);v3(D);i=E;return}c[j>>2]=c[j>>2]|2;c[b>>2]=g;v3(C);v3(D);i=E;return}function rca(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;i=i+16|0;h=g;c[h>>2]=f;f=qc(d|0)|0;d=hga(a,b,e,h)|0;if(!f){i=g;return d|0}qc(f|0)|0;i=g;return d|0}function sca(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;c[g>>2]=e;e=qc(b|0)|0;b=Zda(a,d,g)|0;if(!e){i=f;return b|0}qc(e|0)|0;i=f;return b|0}function tca(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+16|0;n=p;o=c[d>>2]|0;if(!o){c[b>>2]=0;i=p;return}q=e;l=g-q>>2;m=h+12|0;k=c[m>>2]|0;l=(k|0)>(l|0)?k-l|0:0;k=f;q=k-q|0;h=q>>2;if((q|0)>0?(Od[c[(c[o>>2]|0)+48>>2]&255](o,e,h)|0)!=(h|0):0){c[d>>2]=0;c[b>>2]=0;i=p;return}do if((l|0)>0){J3(n,l,j);if(!(a[n>>0]&1))h=n+4|0;else h=c[n+8>>2]|0;if((Od[c[(c[o>>2]|0)+48>>2]&255](o,h,l)|0)==(l|0)){L3(n);break}c[d>>2]=0;c[b>>2]=0;L3(n);i=p;return}while(0);q=g-k|0;g=q>>2;if((q|0)>0?(Od[c[(c[o>>2]|0)+48>>2]&255](o,f,g)|0)!=(g|0):0){c[d>>2]=0;c[b>>2]=0;i=p;return}c[m>>2]=0;c[b>>2]=o;i=p;return}function uca(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;j=c[a>>2]|0;do if(j){if((c[j+12>>2]|0)==(c[j+16>>2]|0))if((Ld[c[(c[j>>2]|0)+36>>2]&511](j)|0)==-1){c[a>>2]=0;j=0;break}else{j=c[a>>2]|0;break}}else j=0;while(0);j=(j|0)==0;k=c[e>>2]|0;do if(k){if((c[k+12>>2]|0)==(c[k+16>>2]|0)?(Ld[c[(c[k>>2]|0)+36>>2]&511](k)|0)==-1:0){c[e>>2]=0;m=11;break}if(!j)m=12}else m=11;while(0);if((m|0)==11)if(j)m=12;else k=0;if((m|0)==12){c[f>>2]=c[f>>2]|6;f=0;i=r;return f|0}j=c[a>>2]|0;l=c[j+12>>2]|0;if((l|0)==(c[j+16>>2]|0))j=Ld[c[(c[j>>2]|0)+36>>2]&511](j)|0;else j=d[l>>0]|0;l=j&255;if(l<<24>>24>-1?(q=g+8|0,(b[(c[q>>2]|0)+(j<<24>>24<<1)>>1]&2048)!=0):0){j=(Od[c[(c[g>>2]|0)+36>>2]&255](g,l,0)|0)<<24>>24;l=c[a>>2]|0;m=l+12|0;n=c[m>>2]|0;if((n|0)==(c[l+16>>2]|0)){Ld[c[(c[l>>2]|0)+40>>2]&511](l)|0;m=h;n=k;l=k}else{c[m>>2]=n+1;m=h;n=k;l=k}while(1){j=j+-48|0;o=m+-1|0;k=c[a>>2]|0;do if(k){if((c[k+12>>2]|0)==(c[k+16>>2]|0))if((Ld[c[(c[k>>2]|0)+36>>2]&511](k)|0)==-1){c[a>>2]=0;k=0;break}else{k=c[a>>2]|0;break}}else k=0;while(0);m=(k|0)==0;if(l)if((c[l+12>>2]|0)==(c[l+16>>2]|0))if((Ld[c[(c[l>>2]|0)+36>>2]&511](l)|0)==-1){c[e>>2]=0;p=0;h=0}else{p=n;h=n}else{p=n;h=l}else{p=n;h=0}k=c[a>>2]|0;if(!((m^(h|0)==0)&(o|0)>0)){m=40;break}m=c[k+12>>2]|0;if((m|0)==(c[k+16>>2]|0))k=Ld[c[(c[k>>2]|0)+36>>2]&511](k)|0;else k=d[m>>0]|0;l=k&255;if(l<<24>>24<=-1){m=52;break}if(!(b[(c[q>>2]|0)+(k<<24>>24<<1)>>1]&2048)){m=52;break}j=((Od[c[(c[g>>2]|0)+36>>2]&255](g,l,0)|0)<<24>>24)+(j*10|0)|0;m=c[a>>2]|0;k=m+12|0;l=c[k>>2]|0;if((l|0)==(c[m+16>>2]|0)){Ld[c[(c[m>>2]|0)+40>>2]&511](m)|0;m=o;n=p;l=h;continue}else{c[k>>2]=l+1;m=o;n=p;l=h;continue}}if((m|0)==40){do if(k){if((c[k+12>>2]|0)==(c[k+16>>2]|0))if((Ld[c[(c[k>>2]|0)+36>>2]&511](k)|0)==-1){c[a>>2]=0;k=0;break}else{k=c[a>>2]|0;break}}else k=0;while(0);k=(k|0)==0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0)?(Ld[c[(c[p>>2]|0)+36>>2]&511](p)|0)==-1:0){c[e>>2]=0;m=50;break}if(k){f=j;i=r;return f|0}}else m=50;while(0);if((m|0)==50?!k:0){f=j;i=r;return f|0}c[f>>2]=c[f>>2]|2;f=j;i=r;return f|0}else if((m|0)==52){i=r;return j|0}}c[f>>2]=c[f>>2]|4;f=0;i=r;return f|0}function vca(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;g=c[a>>2]|0;do if(g){h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else g=c[h>>2]|0;if((g|0)==-1){c[a>>2]=0;j=1;break}else{j=(c[a>>2]|0)==0;break}}else j=1;while(0);h=c[b>>2]|0;do if(h){g=c[h+12>>2]|0;if((g|0)==(c[h+16>>2]|0))g=Ld[c[(c[h>>2]|0)+36>>2]&511](h)|0;else g=c[g>>2]|0;if((g|0)!=-1)if(j){l=h;break}else{p=16;break}else{c[b>>2]=0;p=14;break}}else p=14;while(0);if((p|0)==14)if(j)p=16;else l=0;if((p|0)==16){c[d>>2]=c[d>>2]|6;p=0;i=q;return p|0}g=c[a>>2]|0;h=c[g+12>>2]|0;if((h|0)==(c[g+16>>2]|0))g=Ld[c[(c[g>>2]|0)+36>>2]&511](g)|0;else g=c[h>>2]|0;if(!(Od[c[(c[e>>2]|0)+12>>2]&255](e,2048,g)|0)){c[d>>2]=c[d>>2]|4;p=0;i=q;return p|0}g=(Od[c[(c[e>>2]|0)+52>>2]&255](e,g,0)|0)<<24>>24;h=c[a>>2]|0;j=h+12|0;k=c[j>>2]|0;if((k|0)==(c[h+16>>2]|0)){Ld[c[(c[h>>2]|0)+40>>2]&511](h)|0;k=f;m=l;j=l}else{c[j>>2]=k+4;k=f;m=l;j=l}while(1){g=g+-48|0;o=k+-1|0;k=c[a>>2]|0;do if(k){h=c[k+12>>2]|0;if((h|0)==(c[k+16>>2]|0))h=Ld[c[(c[k>>2]|0)+36>>2]&511](k)|0;else h=c[h>>2]|0;if((h|0)==-1){c[a>>2]=0;l=1;break}else{l=(c[a>>2]|0)==0;break}}else l=1;while(0);do if(j){k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))h=Ld[c[(c[j>>2]|0)+36>>2]&511](j)|0;else h=c[k>>2]|0;if((h|0)==-1){c[b>>2]=0;n=0;f=0;k=1;break}else{n=m;f=m;k=(m|0)==0;break}}else{n=m;f=0;k=1}while(0);j=c[a>>2]|0;if(!((l^k)&(o|0)>0))break;k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))h=Ld[c[(c[j>>2]|0)+36>>2]&511](j)|0;else h=c[k>>2]|0;if(!(Od[c[(c[e>>2]|0)+12>>2]&255](e,2048,h)|0)){p=63;break}g=((Od[c[(c[e>>2]|0)+52>>2]&255](e,h,0)|0)<<24>>24)+(g*10|0)|0;k=c[a>>2]|0;h=k+12|0;j=c[h>>2]|0;if((j|0)==(c[k+16>>2]|0)){Ld[c[(c[k>>2]|0)+40>>2]&511](k)|0;k=o;m=n;j=f;continue}else{c[h>>2]=j+4;k=o;m=n;j=f;continue}}if((p|0)==63){i=q;return g|0}do if(j){h=c[j+12>>2]|0;if((h|0)==(c[j+16>>2]|0))h=Ld[c[(c[j>>2]|0)+36>>2]&511](j)|0;else h=c[h>>2]|0;if((h|0)==-1){c[a>>2]=0;j=1;break}else{j=(c[a>>2]|0)==0;break}}else j=1;while(0);do if(n){h=c[n+12>>2]|0;if((h|0)==(c[n+16>>2]|0))h=Ld[c[(c[n>>2]|0)+36>>2]&511](n)|0;else h=c[h>>2]|0;if((h|0)==-1){c[b>>2]=0;p=60;break}if(j){p=g;i=q;return p|0}}else p=60;while(0);if((p|0)==60?!j:0){p=g;i=q;return p|0}c[d>>2]=c[d>>2]|2;p=g;i=q;return p|0}function wca(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;h=a+4|0;f=(c[h>>2]|0)!=333;e=c[a>>2]|0;j=e;g=(c[d>>2]|0)-j|0;g=g>>>0<2147483647?g<<1:-1;j=(c[b>>2]|0)-j|0;e=Dfa(f?e:0,g)|0;if(!e)vfa();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Id[c[h>>2]&511](f);e=c[a>>2]|0}}else c[a>>2]=e;c[h>>2]=311;c[b>>2]=e+j;c[d>>2]=(c[a>>2]|0)+g;i=k;return}function xca(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;h=a+4|0;f=(c[h>>2]|0)!=333;e=c[a>>2]|0;j=e;g=(c[d>>2]|0)-j|0;g=g>>>0<2147483647?g<<1:-1;j=(c[b>>2]|0)-j>>2;if(!f)e=0;e=Dfa(e,g)|0;if(!e)vfa();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Id[c[h>>2]&511](f);e=c[a>>2]|0}}else c[a>>2]=e;c[h>>2]=311;c[b>>2]=e+(j<<2);c[d>>2]=(c[a>>2]|0)+(g>>>2<<2);i=k;return}function yca(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;h=d;f=a[b>>0]|0;if(!(f&1)){g=10;l=(f&255)>>>1}else{f=c[b>>2]|0;g=(f&-2)+-1|0;l=c[b+4>>2]|0;f=f&255}k=e-h|0;if((e|0)==(d|0)){i=m;return b|0}if((g-l|0)>>>0>>0){G3(b,g,l+k-g|0,l,l,0,0);f=a[b>>0]|0}if(!(f&1))j=b+1|0;else j=c[b+8>>2]|0;h=e+(l-h)|0;f=d;g=j+l|0;while(1){a[g>>0]=a[f>>0]|0;f=f+1|0;if((f|0)==(e|0))break;else g=g+1|0}a[j+h>>0]=0;f=l+k|0;if(!(a[b>>0]&1)){a[b>>0]=f<<1;i=m;return b|0}else{c[b+4>>2]=f;i=m;return b|0}return 0}function zca(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;h=a+4|0;f=(c[h>>2]|0)!=333;e=c[a>>2]|0;j=e;g=(c[d>>2]|0)-j|0;g=g>>>0<2147483647?g<<1:-1;j=(c[b>>2]|0)-j>>2;if(!f)e=0;e=Dfa(e,g)|0;if(!e)vfa();if(!f){f=c[a>>2]|0;c[a>>2]=e;if(f){Id[c[h>>2]&511](f);e=c[a>>2]|0}}else c[a>>2]=e;c[h>>2]=311;c[b>>2]=e+(j<<2);c[d>>2]=(c[a>>2]|0)+(g>>>2<<2);i=k;return}function Aca(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;j=d;f=a[b>>0]|0;if(!(f&1)){g=1;l=(f&255)>>>1}else{f=c[b>>2]|0;g=(f&-2)+-1|0;l=c[b+4>>2]|0;f=f&255}k=e-j>>2;if(!k){i=m;return b|0}if((g-l|0)>>>0>>0){R3(b,g,l+k-g|0,l,l,0,0);f=a[b>>0]|0}if(!(f&1))h=b+4|0;else h=c[b+8>>2]|0;f=h+(l<<2)|0;if((d|0)!=(e|0)){g=l+((e+-4-j|0)>>>2)+1|0;while(1){c[f>>2]=c[d>>2];d=d+4|0;if((d|0)==(e|0))break;else f=f+4|0}f=h+(g<<2)|0}c[f>>2]=0;f=l+k|0;if(!(a[b>>0]&1)){a[b>>0]=f<<1;i=m;return b|0}else{c[b+4>>2]=f;i=m;return b|0}return 0}function Bca(b,d){b=b|0;d=d|0;var e=0;e=i;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;a[b+128>>0]=0;if(!d){i=e;return}Dda(b,d);Eda(b,d);i=e;return}function Cca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(367792)|0);i=c;return}function Dca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(367832)|0);i=c;return}function Eca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(369400)|0);i=c;return}function Fca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(369392)|0);i=c;return}function Gca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(369464)|0);i=c;return}function Hca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(369472)|0);i=c;return}function Ica(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(369528)|0);i=c;return}function Jca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(369536)|0);i=c;return}function Kca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(369544)|0);i=c;return}function Lca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(369552)|0);i=c;return}function Mca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(367904)|0);i=c;return}function Nca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(368024)|0);i=c;return}function Oca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(368088)|0);i=c;return}function Pca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(368184)|0);i=c;return}function Qca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(368776)|0);i=c;return}function Rca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(368840)|0);i=c;return}function Sca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(368904)|0);i=c;return}function Tca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(368968)|0);i=c;return}function Uca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(369008)|0);i=c;return}function Vca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(369088)|0);i=c;return}function Wca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(369144)|0);i=c;return}function Xca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(369192)|0);i=c;return}function Yca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(368296)|0);i=c;return}function Zca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(368448)|0);i=c;return}function _ca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(368680)|0);i=c;return}function $ca(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(368712)|0);i=c;return}function ada(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(369232)|0);i=c;return}function bda(a,b){a=a|0;b=b|0;var c=0;c=i;u9(a,b,E9(369272)|0);i=c;return}function cda(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;d=c[b>>2]|0;if(!d){i=g;return}e=b+4|0;f=c[e>>2]|0;if((f|0)!=(d|0))c[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);if((b+16|0)==(d|0)){a[b+128>>0]=0;i=g;return}else{xea(d);i=g;return}}function dda(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;f=a+4|0;g=c[f>>2]|0;d=c[a>>2]|0;e=g-d>>2;if(e>>>0>>0){Fda(a,b-e|0);i=h;return}if(e>>>0<=b>>>0){i=h;return}d=d+(b<<2)|0;if((g|0)==(d|0)){i=h;return}c[f>>2]=g+(~((g+-4-d|0)>>>2)<<2);i=h;return}function eda(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;d=c[a+8>>2]|0;if((c[a+12>>2]|0)-d>>2>>>0<=b>>>0){a=0;i=e;return a|0}a=(c[d+(b<<2)>>2]|0)!=0;i=e;return a|0}function fda(a){a=a|0;var b=0,e=0,f=0;e=i;f=a+4|0;b=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;f=f+4|0;f=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;a=(c[a>>2]|0)+(f>>1)|0;if(!(f&1)){f=b;Id[f&511](a);i=e;return}else{f=c[(c[a>>2]|0)+b>>2]|0;Id[f&511](a);i=e;return}}function gda(d,f,g,h,j,k,l,m){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0;p=i;c[g>>2]=d;c[k>>2]=h;do if(m&2)if((j-h|0)<3){k=1;i=p;return k|0}else{c[k>>2]=h+1;a[h>>0]=-17;n=c[k>>2]|0;c[k>>2]=n+1;a[n>>0]=-69;n=c[k>>2]|0;c[k>>2]=n+1;a[n>>0]=-65;break}while(0);o=f;d=c[g>>2]|0;if(d>>>0>=f>>>0){k=0;i=p;return k|0}a:while(1){m=b[d>>1]|0;n=m&65535;if(n>>>0>l>>>0){d=2;m=26;break}do if((m&65535)<128){d=c[k>>2]|0;if((j-d|0)<1){d=1;m=26;break a}c[k>>2]=d+1;a[d>>0]=m}else{if((m&65535)<2048){d=c[k>>2]|0;if((j-d|0)<2){d=1;m=26;break a}c[k>>2]=d+1;a[d>>0]=n>>>6|192;h=c[k>>2]|0;c[k>>2]=h+1;a[h>>0]=n&63|128;break}if((m&65535)<55296){d=c[k>>2]|0;if((j-d|0)<3){d=1;m=26;break a}c[k>>2]=d+1;a[d>>0]=n>>>12|224;h=c[k>>2]|0;c[k>>2]=h+1;a[h>>0]=n>>>6&63|128;h=c[k>>2]|0;c[k>>2]=h+1;a[h>>0]=n&63|128;break}if((m&65535)>=56320){if((m&65535)<57344){d=2;m=26;break a}d=c[k>>2]|0;if((j-d|0)<3){d=1;m=26;break a}c[k>>2]=d+1;a[d>>0]=n>>>12|224;h=c[k>>2]|0;c[k>>2]=h+1;a[h>>0]=n>>>6&63|128;h=c[k>>2]|0;c[k>>2]=h+1;a[h>>0]=n&63|128;break}if((o-d|0)<4){d=1;m=26;break a}d=d+2|0;m=e[d>>1]|0;if((m&64512|0)!=56320){d=2;m=26;break a}if((j-(c[k>>2]|0)|0)<4){d=1;m=26;break a}h=n&960;if(((h<<10)+65536|n<<10&64512|m&1023)>>>0>l>>>0){d=2;m=26;break a}c[g>>2]=d;d=(h>>>6)+1|0;h=c[k>>2]|0;c[k>>2]=h+1;a[h>>0]=d>>>2|240;h=c[k>>2]|0;c[k>>2]=h+1;a[h>>0]=n>>>2&15|d<<4&48|128;h=c[k>>2]|0;c[k>>2]=h+1;a[h>>0]=n<<4&48|m>>>6&15|128;n=c[k>>2]|0;c[k>>2]=n+1;a[n>>0]=m&63|128}while(0);d=(c[g>>2]|0)+2|0;c[g>>2]=d;if(d>>>0>=f>>>0){d=0;m=26;break}}if((m|0)==26){i=p;return d|0}return 0}function hda(e,f,g,h,j,k,l,m){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0;s=i;c[g>>2]=e;c[k>>2]=h;e=c[g>>2]|0;if(((((m&4|0)!=0?(f-e|0)>2:0)?(a[e>>0]|0)==-17:0)?(a[e+1>>0]|0)==-69:0)?(a[e+2>>0]|0)==-65:0){e=e+3|0;c[g>>2]=e}a:do if(e>>>0>>0){p=f;q=j;r=c[k>>2]|0;b:while(1){if(r>>>0>=j>>>0)break a;h=a[e>>0]|0;n=h&255;if(n>>>0>l>>>0){e=2;h=41;break}do if(h<<24>>24>-1){b[r>>1]=h&255;c[g>>2]=e+1}else{if((h&255)<194){e=2;h=41;break b}if((h&255)<224){if((p-e|0)<2){e=1;h=41;break b}h=d[e+1>>0]|0;if((h&192|0)!=128){e=2;h=41;break b}h=h&63|n<<6&1984;if(h>>>0>l>>>0){e=2;h=41;break b}b[r>>1]=h;c[g>>2]=e+2;break}if((h&255)<240){if((p-e|0)<3){e=1;h=41;break b}m=a[e+1>>0]|0;h=a[e+2>>0]|0;if((n|0)==224){if((m&-32)<<24>>24!=-96){e=2;h=41;break b}}else if((n|0)==237){if((m&-32)<<24>>24!=-128){e=2;h=41;break b}}else if((m&-64)<<24>>24!=-128){e=2;h=41;break b}h=h&255;if((h&192|0)!=128){e=2;h=41;break b}h=(m&255)<<6&4032|n<<12|h&63;if((h&65535)>>>0>l>>>0){e=2;h=41;break b}b[r>>1]=h;c[g>>2]=e+3;break}if((h&255)>=245){e=2;h=41;break b}if((p-e|0)<4){e=1;h=41;break b}m=a[e+1>>0]|0;h=a[e+2>>0]|0;e=a[e+3>>0]|0;if((n|0)==240){if((m+112<<24>>24&255)>=48){e=2;h=41;break b}}else if((n|0)==244){if((m&-16)<<24>>24!=-128){e=2;h=41;break b}}else if((m&-64)<<24>>24!=-128){e=2;h=41;break b}o=h&255;if((o&192|0)!=128){e=2;h=41;break b}e=e&255;if((e&192|0)!=128){e=2;h=41;break b}if((q-r|0)<4){e=1;h=41;break b}n=n&7;m=m&255;h=o<<6;e=e&63;if((m<<12&258048|n<<18|h&4032|e)>>>0>l>>>0){e=2;h=41;break b}b[r>>1]=m<<2&60|o>>>4&3|((m>>>4&3|n<<2)<<6)+16320|55296;o=r+2|0;c[k>>2]=o;b[o>>1]=e|h&960|56320;c[g>>2]=(c[g>>2]|0)+4}while(0);r=(c[k>>2]|0)+2|0;c[k>>2]=r;e=c[g>>2]|0;if(e>>>0>=f>>>0)break a}if((h|0)==41){i=s;return e|0}}while(0);f=e>>>0>>0&1;i=s;return f|0}function ida(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;if((((g&4|0)!=0?(c-b|0)>2:0)?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)g=(a[b+2>>0]|0)==-65?b+3|0:b;else g=b;a:do if(g>>>0>>0&(e|0)!=0){o=c;h=0;b:while(1){j=a[g>>0]|0;n=j&255;if(n>>>0>f>>>0)break a;do if(j<<24>>24>-1)g=g+1|0;else{if((j&255)<194)break a;if((j&255)<224){if((o-g|0)<2)break a;j=d[g+1>>0]|0;if((j&192|0)!=128)break a;if((j&63|n<<6&1984)>>>0>f>>>0)break a;g=g+2|0;break}if((j&255)<240){k=g;if((o-k|0)<3)break a;l=a[g+1>>0]|0;j=a[g+2>>0]|0;if((n|0)==237){if((l&-32)<<24>>24!=-128){h=23;break b}}else if((n|0)==224){if((l&-32)<<24>>24!=-96){h=21;break b}}else if((l&-64)<<24>>24!=-128){h=25;break b}j=j&255;if((j&192|0)!=128)break a;if(((l&255)<<6&4032|n<<12&61440|j&63)>>>0>f>>>0)break a;g=g+3|0;break}if((j&255)>=245)break a;j=g;if((o-j|0)<4|(e-h|0)>>>0<2)break a;m=a[g+1>>0]|0;k=a[g+2>>0]|0;l=a[g+3>>0]|0;if((n|0)==244){if((m&-16)<<24>>24!=-128){h=35;break b}}else if((n|0)==240){if((m+112<<24>>24&255)>=48){h=33;break b}}else if((m&-64)<<24>>24!=-128){h=37;break b}k=k&255;if((k&192|0)!=128)break a;j=l&255;if((j&192|0)!=128)break a;if(((m&255)<<12&258048|n<<18&1835008|k<<6&4032|j&63)>>>0>f>>>0)break a;g=g+4|0;h=h+1|0}while(0);h=h+1|0;if(!(g>>>0>>0&h>>>0>>0))break a}if((h|0)==21){b=k-b|0;i=p;return b|0}else if((h|0)==23){b=k-b|0;i=p;return b|0}else if((h|0)==25){b=k-b|0;i=p;return b|0}else if((h|0)==33){b=j-b|0;i=p;return b|0}else if((h|0)==35){b=j-b|0;i=p;return b|0}else if((h|0)==37){b=j-b|0;i=p;return b|0}}while(0);b=g-b|0;i=p;return b|0}function jda(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0;l=i;c[e>>2]=b;c[h>>2]=f;do if(k&2)if((g-f|0)<3){e=1;i=l;return e|0}else{c[h>>2]=f+1;a[f>>0]=-17;f=c[h>>2]|0;c[h>>2]=f+1;a[f>>0]=-69;f=c[h>>2]|0;c[h>>2]=f+1;a[f>>0]=-65;break}while(0);b=c[e>>2]|0;if(b>>>0>=d>>>0){e=0;i=l;return e|0}a:while(1){f=c[b>>2]|0;if((f&-2048|0)==55296|f>>>0>j>>>0){b=2;k=19;break}do if(f>>>0>=128){if(f>>>0<2048){b=c[h>>2]|0;if((g-b|0)<2){b=1;k=19;break a}c[h>>2]=b+1;a[b>>0]=f>>>6|192;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}b=c[h>>2]|0;k=g-b|0;if(f>>>0<65536){if((k|0)<3){b=1;k=19;break a}c[h>>2]=b+1;a[b>>0]=f>>>12|224;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>6&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}else{if((k|0)<4){b=1;k=19;break a}c[h>>2]=b+1;a[b>>0]=f>>>18|240;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>12&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f>>>6&63|128;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=f&63|128;break}}else{b=c[h>>2]|0;if((g-b|0)<1){b=1;k=19;break a}c[h>>2]=b+1;a[b>>0]=f}while(0);b=(c[e>>2]|0)+4|0;c[e>>2]=b;if(b>>>0>=d>>>0){b=0;k=19;break}}if((k|0)==19){i=l;return b|0}return 0}function kda(b,e,f,g,h,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;c[f>>2]=b;c[j>>2]=g;b=c[f>>2]|0;if(((((l&4|0)!=0?(e-b|0)>2:0)?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)?(a[b+2>>0]|0)==-65:0){b=b+3|0;c[f>>2]=b}a:do if(b>>>0>>0){p=e;q=c[j>>2]|0;while(1){if(q>>>0>=h>>>0){r=39;break a}g=a[b>>0]|0;o=g&255;do if(g<<24>>24>-1){if(o>>>0>k>>>0){b=2;break a}c[q>>2]=o;c[f>>2]=b+1}else{if((g&255)<194){b=2;break a}if((g&255)<224){if((p-b|0)<2){b=1;break a}g=d[b+1>>0]|0;if((g&192|0)!=128){b=2;break a}g=g&63|o<<6&1984;if(g>>>0>k>>>0){b=2;break a}c[q>>2]=g;c[f>>2]=b+2;break}if((g&255)<240){if((p-b|0)<3){b=1;break a}l=a[b+1>>0]|0;g=a[b+2>>0]|0;if((o|0)==237){if((l&-32)<<24>>24!=-128){b=2;break a}}else if((o|0)==224){if((l&-32)<<24>>24!=-96){b=2;break a}}else if((l&-64)<<24>>24!=-128){b=2;break a}g=g&255;if((g&192|0)!=128){b=2;break a}g=(l&255)<<6&4032|o<<12&61440|g&63;if(g>>>0>k>>>0){b=2;break a}c[q>>2]=g;c[f>>2]=b+3;break}if((g&255)>=245){b=2;break a}if((p-b|0)<4){b=1;break a}n=a[b+1>>0]|0;g=a[b+2>>0]|0;l=a[b+3>>0]|0;if((o|0)==240){if((n+112<<24>>24&255)>=48){b=2;break a}}else if((o|0)==244){if((n&-16)<<24>>24!=-128){b=2;break a}}else if((n&-64)<<24>>24!=-128){b=2;break a}m=g&255;if((m&192|0)!=128){b=2;break a}g=l&255;if((g&192|0)!=128){b=2;break a}g=(n&255)<<12&258048|o<<18&1835008|m<<6&4032|g&63;if(g>>>0>k>>>0){b=2;break a}c[q>>2]=g;c[f>>2]=b+4}while(0);q=(c[j>>2]|0)+4|0;c[j>>2]=q;b=c[f>>2]|0;if(b>>>0>=e>>>0){r=39;break}}}else r=39;while(0);if((r|0)==39)b=b>>>0>>0&1;i=s;return b|0}function lda(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;if((((g&4|0)!=0?(c-b|0)>2:0)?(a[b>>0]|0)==-17:0)?(a[b+1>>0]|0)==-69:0)g=(a[b+2>>0]|0)==-65?b+3|0:b;else g=b;a:do if(g>>>0>>0&(e|0)!=0){o=c;n=0;b:while(1){h=a[g>>0]|0;m=h&255;do if(h<<24>>24>-1){if(m>>>0>f>>>0)break a;g=g+1|0}else{if((h&255)<194)break a;if((h&255)<224){if((o-g|0)<2)break a;h=d[g+1>>0]|0;if((h&192|0)!=128)break a;if((h&63|m<<6&1984)>>>0>f>>>0)break a;g=g+2|0;break}if((h&255)<240){j=g;if((o-j|0)<3)break a;k=a[g+1>>0]|0;h=a[g+2>>0]|0;if((m|0)==224){if((k&-32)<<24>>24!=-96){h=21;break b}}else if((m|0)==237){if((k&-32)<<24>>24!=-128){h=23;break b}}else if((k&-64)<<24>>24!=-128){h=25;break b}h=h&255;if((h&192|0)!=128)break a;if(((k&255)<<6&4032|m<<12&61440|h&63)>>>0>f>>>0)break a;g=g+3|0;break}if((h&255)>=245)break a;j=g;if((o-j|0)<4)break a;l=a[g+1>>0]|0;k=a[g+2>>0]|0;h=a[g+3>>0]|0;if((m|0)==244){if((l&-16)<<24>>24!=-128){h=35;break b}}else if((m|0)==240){if((l+112<<24>>24&255)>=48){h=33;break b}}else if((l&-64)<<24>>24!=-128){h=37;break b}k=k&255;if((k&192|0)!=128)break a;h=h&255;if((h&192|0)!=128)break a;if(((l&255)<<12&258048|m<<18&1835008|k<<6&4032|h&63)>>>0>f>>>0)break a;g=g+4|0}while(0);n=n+1|0;if(!(g>>>0>>0&n>>>0>>0))break a}if((h|0)==21){b=j-b|0;i=p;return b|0}else if((h|0)==23){b=j-b|0;i=p;return b|0}else if((h|0)==25){b=j-b|0;i=p;return b|0}else if((h|0)==33){b=j-b|0;i=p;return b|0}else if((h|0)==35){b=j-b|0;i=p;return b|0}else if((h|0)==37){b=j-b|0;i=p;return b|0}}while(0);b=g-b|0;i=p;return b|0}function mda(a){a=a|0;a=i;v3(376900|0);v3(376888|0);v3(376876|0);v3(376864|0);v3(376852|0);v3(376840|0);v3(376828|0);v3(376816|0);v3(376804|0);v3(376792|0);v3(376780|0);v3(376768|0);v3(376756|0);v3(376744);i=a;return}function nda(a){a=a|0;a=i;L3(376364|0);L3(376352|0);L3(376340|0);L3(376328|0);L3(376316|0);L3(376304|0);L3(376292|0);L3(376280|0);L3(376268|0);L3(376256|0);L3(376244|0);L3(376232|0);L3(376220|0);L3(376208);i=a;return}function oda(a){a=a|0;a=i;v3(375972|0);v3(375960|0);v3(375948|0);v3(375936|0);v3(375924|0);v3(375912|0);v3(375900|0);v3(375888|0);v3(375876|0);v3(375864|0);v3(375852|0);v3(375840|0);v3(375828|0);v3(375816|0);v3(375804|0);v3(375792|0);v3(375780|0);v3(375768|0);v3(375756|0);v3(375744|0);v3(375732|0);v3(375720|0);v3(375708|0);v3(375696);i=a;return}function pda(a){a=a|0;a=i;L3(375132|0);L3(375120|0);L3(375108|0);L3(375096|0);L3(375084|0);L3(375072|0);L3(375060|0);L3(375048|0);L3(375036|0);L3(375024|0);L3(375012|0);L3(375e3|0);L3(374988|0);L3(374976|0);L3(374964|0);L3(374952|0);L3(374940|0);L3(374928|0);L3(374916|0);L3(374904|0);L3(374892|0);L3(374880|0);L3(374868|0);L3(374856);i=a;return}function qda(a){a=a|0;a=i;v3(374820|0);v3(374808|0);v3(374796|0);v3(374784|0);v3(374772|0);v3(374760|0);v3(374748|0);v3(374736|0);v3(374724|0);v3(374712|0);v3(374700|0);v3(374688|0);v3(374676|0);v3(374664|0);v3(374652|0);v3(374640|0);v3(374628|0);v3(374616|0);v3(374604|0);v3(374592|0);v3(374580|0);v3(374568|0);v3(374556|0);v3(374544);i=a;return}function rda(a){a=a|0;a=i;L3(374492|0);L3(374480|0);L3(374468|0);L3(374456|0);L3(374444|0);L3(374432|0);L3(374420|0);L3(374408|0);L3(374396|0);L3(374384|0);L3(374372|0);L3(374360|0);L3(374348|0);L3(374336|0);L3(374324|0);L3(374312|0);L3(374300|0);L3(374288|0);L3(374276|0);L3(374264|0);L3(374252|0);L3(374240|0);L3(374228|0);L3(374216);i=a;return}function sda(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;i=i+32|0;t=v+16|0;s=v;p=v+4|0;q=v+8|0;g=b+52|0;if(a[g>>0]|0){e=b+48|0;f=c[e>>2]|0;if(!d){u=f;i=v;return u|0}c[e>>2]=-1;a[g>>0]=0;u=f;i=v;return u|0}j=c[b+44>>2]|0;j=(j|0)>1?j:1;a:do if((j|0)>0){f=b+32|0;h=0;while(1){g=od(c[f>>2]|0)|0;if((g|0)==-1){r=-1;break}a[t+h>>0]=g;h=h+1|0;if((h|0)>=(j|0))break a}i=v;return r|0}while(0);b:do if(!(a[b+53>>0]|0)){l=b+40|0;m=b+36|0;n=s+4|0;o=b+32|0;while(1){g=c[l>>2]|0;f=g;h=c[f>>2]|0;f=c[f+4>>2]|0;w=c[m>>2]|0;k=t+j|0;g=be[c[(c[w>>2]|0)+16>>2]&15](w,g,t,k,p,s,n,q)|0;if((g|0)==2){r=-1;u=22;break}else if((g|0)==3){u=14;break}else if((g|0)!=1){e=j;break b}w=c[l>>2]|0;c[w>>2]=h;c[w+4>>2]=f;if((j|0)==8){r=-1;u=22;break}h=od(c[o>>2]|0)|0;if((h|0)==-1){r=-1;u=22;break}a[k>>0]=h;j=j+1|0}if((u|0)==14){c[s>>2]=a[t>>0];e=j;break}else if((u|0)==22){i=v;return r|0}}else{c[s>>2]=a[t>>0];e=j}while(0);if(d){w=c[s>>2]|0;c[b+48>>2]=w;i=v;return w|0}f=b+32|0;while(1){if((e|0)<=0)break;e=e+-1|0;if((Wc(a[t+e>>0]|0,c[f>>2]|0)|0)==-1){r=-1;u=22;break}}if((u|0)==22){i=v;return r|0}w=c[s>>2]|0;i=v;return w|0}function tda(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=i;i=i+32|0;v=w+16|0;u=w+8|0;q=w;r=w+4|0;h=b+52|0;if(a[h>>0]|0){f=b+48|0;g=c[f>>2]|0;if(!e){v=g;i=w;return v|0}c[f>>2]=-1;a[h>>0]=0;v=g;i=w;return v|0}k=c[b+44>>2]|0;k=(k|0)>1?k:1;a:do if((k|0)>0){g=b+32|0;j=0;while(1){h=od(c[g>>2]|0)|0;if((h|0)==-1){s=-1;break}a[v+j>>0]=h;j=j+1|0;if((j|0)>=(k|0))break a}i=w;return s|0}while(0);b:do if(!(a[b+53>>0]|0)){m=b+40|0;n=b+36|0;o=u+1|0;p=b+32|0;while(1){h=c[m>>2]|0;g=h;j=c[g>>2]|0;g=c[g+4>>2]|0;x=c[n>>2]|0;l=v+k|0;h=be[c[(c[x>>2]|0)+16>>2]&15](x,h,v,l,q,u,o,r)|0;if((h|0)==3){g=14;break}else if((h|0)==2){s=-1;g=23;break}else if((h|0)!=1){f=k;break b}x=c[m>>2]|0;c[x>>2]=j;c[x+4>>2]=g;if((k|0)==8){s=-1;g=23;break}j=od(c[p>>2]|0)|0;if((j|0)==-1){s=-1;g=23;break}a[l>>0]=j;k=k+1|0}if((g|0)==14){a[u>>0]=a[v>>0]|0;f=k;break}else if((g|0)==23){i=w;return s|0}}else{a[u>>0]=a[v>>0]|0;f=k}while(0);do if(!e){g=b+32|0;while(1){if((f|0)<=0){g=21;break}f=f+-1|0;if((Wc(d[v+f>>0]|0,c[g>>2]|0)|0)==-1){s=-1;g=23;break}}if((g|0)==21){t=a[u>>0]|0;break}else if((g|0)==23){i=w;return s|0}}else{t=a[u>>0]|0;c[b+48>>2]=t&255}while(0);x=t&255;i=w;return x|0}function uda(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;if((a|0)==(b|0)){c[d>>2]=4;d=0;i=k;return d|0}g=td()|0;h=c[g>>2]|0;c[g>>2]=0;a=Lda(a,j,e,T5()|0)|0;e=I;f=c[g>>2]|0;if(!f)c[g>>2]=h;if((c[j>>2]|0)!=(b|0)){c[d>>2]=4;d=0;i=k;return d|0}do if((f|0)==34){c[d>>2]=4;if((e|0)>0|(e|0)==0&a>>>0>0){d=2147483647;i=k;return d|0}}else{if((e|0)<-1|(e|0)==-1&a>>>0<2147483648){c[d>>2]=4;break}if((e|0)>0|(e|0)==0&a>>>0>2147483647){c[d>>2]=4;d=2147483647;i=k;return d|0}else{d=a;i=k;return d|0}}while(0);d=-2147483648;i=k;return d|0}function vda(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;if((a|0)==(b|0)){c[d>>2]=4;h=0;d=0;I=h;i=k;return d|0}g=td()|0;h=c[g>>2]|0;c[g>>2]=0;a=Lda(a,j,e,T5()|0)|0;e=I;f=c[g>>2]|0;if(!f)c[g>>2]=h;if((c[j>>2]|0)!=(b|0)){c[d>>2]=4;h=0;d=0;I=h;i=k;return d|0}if((f|0)==34){c[d>>2]=4;d=(e|0)>0|(e|0)==0&a>>>0>0;I=d?2147483647:-2147483648;i=k;return (d?-1:0)|0}else{h=e;d=a;I=h;i=k;return d|0}return 0}function wda(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;if((b|0)==(d|0)){c[e>>2]=4;e=0;i=l;return e|0}if((a[b>>0]|0)==45){c[e>>2]=4;e=0;i=l;return e|0}h=td()|0;j=c[h>>2]|0;c[h>>2]=0;b=Kda(b,k,f,T5()|0)|0;f=I;g=c[h>>2]|0;if(!g)c[h>>2]=j;if((c[k>>2]|0)!=(d|0)){c[e>>2]=4;e=0;i=l;return e|0}if((g|0)==34|(f>>>0>0|(f|0)==0&b>>>0>65535)){c[e>>2]=4;e=-1;i=l;return e|0}else{e=b&65535;i=l;return e|0}return 0}function xda(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;if((b|0)==(d|0)){c[e>>2]=4;e=0;i=l;return e|0}if((a[b>>0]|0)==45){c[e>>2]=4;e=0;i=l;return e|0}h=td()|0;j=c[h>>2]|0;c[h>>2]=0;b=Kda(b,k,f,T5()|0)|0;f=I;g=c[h>>2]|0;if(!g)c[h>>2]=j;if((c[k>>2]|0)!=(d|0)){c[e>>2]=4;e=0;i=l;return e|0}if((g|0)==34|(f>>>0>0|(f|0)==0&b>>>0>4294967295)){c[e>>2]=4;e=-1;i=l;return e|0}else{e=b;i=l;return e|0}return 0}function yda(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;if((b|0)==(d|0)){c[e>>2]=4;e=0;i=l;return e|0}if((a[b>>0]|0)==45){c[e>>2]=4;e=0;i=l;return e|0}h=td()|0;j=c[h>>2]|0;c[h>>2]=0;b=Kda(b,k,f,T5()|0)|0;f=I;g=c[h>>2]|0;if(!g)c[h>>2]=j;if((c[k>>2]|0)!=(d|0)){c[e>>2]=4;e=0;i=l;return e|0}if((g|0)==34|(f>>>0>0|(f|0)==0&b>>>0>4294967295)){c[e>>2]=4;e=-1;i=l;return e|0}else{e=b;i=l;return e|0}return 0}function zda(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;do if((b|0)!=(d|0)){if((a[b>>0]|0)==45){c[e>>2]=4;f=0;b=0;break}g=td()|0;h=c[g>>2]|0;c[g>>2]=0;b=Kda(b,j,f,T5()|0)|0;f=c[g>>2]|0;if(!f)c[g>>2]=h;if((c[j>>2]|0)!=(d|0)){c[e>>2]=4;f=0;b=0;break}if((f|0)==34){c[e>>2]=4;f=-1;b=-1}else f=I}else{c[e>>2]=4;f=0;b=0}while(0);I=f;i=k;return b|0}function Ada(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;if((a|0)==(b|0)){c[d>>2]=4;e=0.0;i=j;return +e}f=td()|0;g=c[f>>2]|0;c[f>>2]=0;e=+kga(a,h,T5()|0);a=c[f>>2]|0;if(!a)c[f>>2]=g;if((c[h>>2]|0)!=(b|0)){c[d>>2]=4;e=0.0;i=j;return +e}if((a|0)==34)c[d>>2]=4;i=j;return +e}function Bda(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;do if((a|0)!=(b|0)){f=td()|0;g=c[f>>2]|0;c[f>>2]=0;e=+kga(a,h,T5()|0);a=c[f>>2]|0;if(!a)c[f>>2]=g;if((c[h>>2]|0)!=(b|0)){c[d>>2]=4;e=0.0;break}if((a|0)==34)c[d>>2]=4}else{c[d>>2]=4;e=0.0}while(0);i=j;return +e}function Cda(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;do if((a|0)!=(b|0)){f=td()|0;g=c[f>>2]|0;c[f>>2]=0;e=+kga(a,h,T5()|0);a=c[f>>2]|0;if(!a)c[f>>2]=g;if((c[h>>2]|0)!=(b|0)){c[d>>2]=4;e=0.0;break}if((a|0)==34)c[d>>2]=4}else{c[d>>2]=4;e=0.0}while(0);i=j;return +e}function Dda(b,d){b=b|0;d=d|0;var e=0,f=0;f=i;if(d>>>0>1073741823)r9(b);e=b+128|0;if((a[e>>0]|0)==0&d>>>0<29){a[e>>0]=1;e=b+16|0}else e=tea(d<<2)|0;c[b+4>>2]=e;c[b>>2]=e;c[b+8>>2]=e+(d<<2);i=f;return}function Eda(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;d=a+4|0;a=c[d>>2]|0;do{if(!a)a=0;else{c[a>>2]=0;a=c[d>>2]|0}a=a+4|0;c[d>>2]=a;b=b+-1|0}while((b|0)!=0);i=e;return}function Fda(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;j=k;g=c[a+8>>2]|0;d=c[a+4>>2]|0;if(g-d>>2>>>0>=b>>>0){Eda(a,b);i=k;return}e=c[a>>2]|0;h=d-e>>2;f=h+b|0;if(f>>>0>1073741823)r9(a);d=g-e|0;if(d>>2>>>0<536870911){d=d>>1;d=d>>>0>>0?f:d}else d=1073741823;Gda(j,d,h,a+16|0);Hda(j,b);Ida(a,j);Jda(j);i=k;return}function Gda(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;h=b+12|0;c[h>>2]=0;c[b+16>>2]=f;do if(d){g=f+112|0;if((a[g>>0]|0)==0&d>>>0<29){a[g>>0]=1;break}else{f=tea(d<<2)|0;break}}else f=0;while(0);c[b>>2]=f;e=f+(e<<2)|0;c[b+8>>2]=e;c[b+4>>2]=e;c[h>>2]=f+(d<<2);i=j;return}function Hda(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;d=a+8|0;a=c[d>>2]|0;do{if(!a)a=0;else{c[a>>2]=0;a=c[d>>2]|0}a=a+4|0;c[d>>2]=a;b=b+-1|0}while((b|0)!=0);i=e;return}function Ida(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;f=c[a>>2]|0;h=a+4|0;e=b+4|0;g=(c[h>>2]|0)-f|0;j=(c[e>>2]|0)+(0-(g>>2)<<2)|0;c[e>>2]=j;Aga(j|0,f|0,g|0)|0;g=c[a>>2]|0;c[a>>2]=c[e>>2];c[e>>2]=g;g=b+8|0;f=c[h>>2]|0;c[h>>2]=c[g>>2];c[g>>2]=f;g=a+8|0;a=b+12|0;f=c[g>>2]|0;c[g>>2]=c[a>>2];c[a>>2]=f;c[b>>2]=c[e>>2];i=d;return}function Jda(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;d=c[b+4>>2]|0;e=b+8|0;f=c[e>>2]|0;if((f|0)!=(d|0))c[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);e=c[b>>2]|0;if(!e){i=g;return}d=c[b+16>>2]|0;if((d|0)==(e|0)){a[d+112>>0]=0;i=g;return}else{xea(e);i=g;return}}function Kda(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=i;b=lga(a,b,c)|0;i=d;return b|0}function Lda(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=i;b=mga(a,b,c)|0;i=d;return b|0}function Mda(a,b){a=a|0;b=b|0;return (a+-48|0)>>>0<10|0}function Nda(a,b){a=a|0;b=b|0;var c=0;c=i;b=Ifa(a)|0;i=c;return b|0}function Oda(a,b){a=+a;b=b|0;var c=0;c=i;a=+Xfa(a,b);i=c;return +a}function Pda(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;c=Qda(0,a,b,(c|0)!=0?c:377264)|0;i=d;return c|0}function Qda(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;g=k;c[g>>2]=b;j=(f|0)==0?377272:f;f=c[j>>2]|0;a:do if(!d){if(!f){e=0;i=k;return e|0}}else{if(!b){c[g>>2]=g;b=g}if(!e){e=-2;i=k;return e|0}do if(!f){f=a[d>>0]|0;g=f&255;if(f<<24>>24>-1){c[b>>2]=g;e=f<<24>>24!=0&1;i=k;return e|0}else{f=g+-194|0;if(f>>>0>50)break a;h=e+-1|0;f=c[377056+(f<<2)>>2]|0;g=d+1|0;break}}else{h=e;g=d}while(0);b:do if(h){d=a[g>>0]|0;l=(d&255)>>>3;if((l+-16|l+(f>>26))>>>0>7)break a;while(1){g=g+1|0;f=(d&255)+-128|f<<6;h=h+-1|0;if((f|0)>=0)break;if(!h)break b;d=a[g>>0]|0;if((d&-64)<<24>>24!=-128)break a}c[j>>2]=0;c[b>>2]=f;e=e-h|0;i=k;return e|0}while(0);c[j>>2]=f;e=-2;i=k;return e|0}while(0);c[j>>2]=0;c[(td()|0)>>2]=84;e=-1;i=k;return e|0}function Rda(a){a=a|0;if(!a)a=1;else a=(c[a>>2]|0)==0;return a&1|0}function Sda(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+1040|0;l=p+8|0;o=p;h=c[b>>2]|0;c[o>>2]=h;n=(a|0)!=0;e=n?e:256;g=n?a:l;a:do if((h|0)!=0&(e|0)!=0){j=e;k=d;e=0;while(1){a=k>>>2;d=a>>>0>=j>>>0;if(!(d|k>>>0>131)){d=k;m=7;break a}h=d?j:a;d=k-h|0;h=Tda(g,o,h,f)|0;if((h|0)==-1){e=-1;break a}if((g|0)==(l|0))g=l;else{j=j-h|0;g=g+(h<<2)|0}e=h+e|0;h=c[o>>2]|0;if((h|0)!=0&(j|0)!=0)k=d;else{m=7;break}}}else{j=e;e=0;m=7}while(0);b:do if((m|0)==7)if((h|0)!=0&(j|0)!=0&(d|0)!=0){while(1){a=Qda(g,h,d,f)|0;if((a+2|0)>>>0<3)break;h=(c[o>>2]|0)+a|0;c[o>>2]=h;j=j+-1|0;e=e+1|0;if(!((j|0)!=0&(d|0)!=(a|0)))break b;else{d=d-a|0;g=g+4|0}}if((a|0)==-1){e=-1;break}else if(!a){c[o>>2]=0;break}else{c[f>>2]=0;break}}while(0);if(!n){i=p;return e|0}c[b>>2]=c[o>>2];i=p;return e|0}function Tda(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;h=c[e>>2]|0;if((g|0)!=0?(k=c[g>>2]|0,(k|0)!=0):0)if(!b){j=f;g=16}else{c[g>>2]=0;j=f;l=h;g=36}else if(!b){j=f;g=7}else{j=f;g=6}a:while(1)if((g|0)==6){if(!j){g=26;break}while(1){g=a[h>>0]|0;b:do if(((g&255)+-1|0)>>>0<127?(h&3|0)==0&j>>>0>4:0){do{g=c[h>>2]|0;if((g+-16843009|g)&-2139062144){g=g&255;break b}c[b>>2]=g&255;c[b+4>>2]=d[h+1>>0];c[b+8>>2]=d[h+2>>0];l=h;h=h+4|0;k=b;b=b+16|0;c[k+12>>2]=d[l+3>>0];j=j+-4|0}while(j>>>0>4);g=a[h>>0]|0}while(0);g=g&255;if((g+-1|0)>>>0>=127)break;h=h+1|0;c[b>>2]=g;j=j+-1|0;if(!j){g=26;break a}else b=b+4|0}g=g+-194|0;if(g>>>0>50){g=47;break}k=c[377056+(g<<2)>>2]|0;l=h+1|0;g=36;continue}else if((g|0)==7){g=a[h>>0]|0;if(((g&255)+-1|0)>>>0<127?(h&3|0)==0:0){g=c[h>>2]|0;if(!((g+-16843009|g)&-2139062144))do{h=h+4|0;j=j+-4|0;g=c[h>>2]|0}while(((g+-16843009|g)&-2139062144|0)==0);g=g&255}g=g&255;if((g+-1|0)>>>0<127){j=j+-1|0;h=h+1|0;g=7;continue}g=g+-194|0;if(g>>>0>50){g=47;break}k=c[377056+(g<<2)>>2]|0;h=h+1|0;g=16;continue}else if((g|0)==16){l=(d[h>>0]|0)>>>3;if((l+-16|l+(k>>26))>>>0>7){g=17;break}g=h+1|0;if(k&33554432){if((a[g>>0]&-64)<<24>>24!=-128){g=20;break}g=h+2|0;if(!(k&524288))h=g;else{if((a[g>>0]&-64)<<24>>24!=-128){g=23;break}h=h+3|0}}else h=g;j=j+-1|0;g=7;continue}else if((g|0)==36){g=d[l>>0]|0;h=g>>>3;if((h+-16|h+(k>>26))>>>0>7){g=37;break}h=l+1|0;k=g+-128|k<<6;if((k|0)<0){g=d[h>>0]|0;if((g&192|0)!=128){g=40;break}h=l+2|0;k=g+-128|k<<6;if((k|0)<0){h=d[h>>0]|0;if((h&192|0)!=128){g=43;break}k=h+-128|k<<6;h=l+3|0}}c[b>>2]=k;b=b+4|0;j=j+-1|0;g=6;continue}if((g|0)==17){h=h+-1|0;g=46}else if((g|0)==20){h=h+-1|0;g=46}else if((g|0)==23){h=h+-1|0;g=46}else if((g|0)==26){c[e>>2]=h;i=m;return f|0}else if((g|0)==37){h=l+-1|0;g=46}else if((g|0)==40){h=l+-1|0;g=46}else if((g|0)==43){h=l+-1|0;g=46}if((g|0)==46)if(!k)g=47;if((g|0)==47)if(!(a[h>>0]|0)){if(b){c[b>>2]=0;c[e>>2]=0}f=f-j|0;i=m;return f|0}c[(td()|0)>>2]=84;if(!b){f=-1;i=m;return f|0}c[e>>2]=h;f=-1;i=m;return f|0}function Uda(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k;c[g>>2]=b;if(!e){e=0;i=k;return e|0}do if(f){if(!b){c[g>>2]=g;j=g}else j=b;g=a[e>>0]|0;b=g&255;if(g<<24>>24>-1){c[j>>2]=b;e=g<<24>>24!=0&1;i=k;return e|0}g=b+-194|0;if(g>>>0<=50){b=e+1|0;h=c[377056+(g<<2)>>2]|0;if(f>>>0<4?(h&-2147483648>>>((f*6|0)+-6|0)|0)!=0:0)break;g=d[b>>0]|0;f=g>>>3;if((f+-16|f+(h>>26))>>>0<=7){g=g+-128|h<<6;if((g|0)>=0){c[j>>2]=g;e=2;i=k;return e|0}b=d[e+2>>0]|0;if((b&192|0)==128){b=b+-128|g<<6;if((b|0)>=0){c[j>>2]=b;e=3;i=k;return e|0}g=d[e+3>>0]|0;if((g&192|0)==128){c[j>>2]=g+-128|b<<6;e=4;i=k;return e|0}}}}}while(0);c[(td()|0)>>2]=84;e=-1;i=k;return e|0}function Vda(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+272|0;j=n+8|0;m=n;g=c[b>>2]|0;c[m>>2]=g;l=(a|0)!=0;f=l?e:256;a=l?a:j;a:do if((g|0)!=0&(f|0)!=0){h=f;f=0;while(1){e=d>>>0>=h>>>0;if(!(e|d>>>0>32)){k=7;break a}g=e?h:d;d=d-g|0;g=Wda(a,m,g,0)|0;if((g|0)==-1){f=-1;break a}if((a|0)==(j|0))a=j;else{h=h-g|0;a=a+g|0}f=g+f|0;g=c[m>>2]|0;if(!((g|0)!=0&(h|0)!=0)){k=7;break}}}else{h=f;f=0;k=7}while(0);b:do if((k|0)==7)if((g|0)!=0&(h|0)!=0&(d|0)!=0){while(1){e=_fa(a,c[g>>2]|0,0)|0;if((e+1|0)>>>0<2)break;g=(c[m>>2]|0)+4|0;c[m>>2]=g;d=d+-1|0;f=f+1|0;if(!((h|0)!=(e|0)&(d|0)!=0))break b;else{h=h-e|0;a=a+e|0}}if(!e)c[m>>2]=0;else f=-1}while(0);if(!l){i=n;return f|0}c[b>>2]=c[m>>2];i=n;return f|0}function Wda(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;if(!b){h=c[d>>2]|0;g=c[h>>2]|0;if(!g){d=0;i=n;return d|0}else f=0;while(1){if(g>>>0>127){g=_fa(m,g,0)|0;if((g|0)==-1){l=-1;k=26;break}}else g=1;f=g+f|0;h=h+4|0;g=c[h>>2]|0;if(!g){l=f;k=26;break}}if((k|0)==26){i=n;return l|0}}a:do if(e>>>0>3){f=b;g=e;h=c[d>>2]|0;while(1){b=c[h>>2]|0;if((b+-1|0)>>>0>126){if(!b)break;b=_fa(f,b,0)|0;if((b|0)==-1){l=-1;k=26;break}f=f+b|0;g=g-b|0}else{a[f>>0]=b;f=f+1|0;g=g+-1|0;h=c[d>>2]|0}h=h+4|0;c[d>>2]=h;if(g>>>0<=3)break a}if((k|0)==26){i=n;return l|0}a[f>>0]=0;c[d>>2]=0;d=e-g|0;i=n;return d|0}else{f=b;g=e}while(0);if(!g){d=e;i=n;return d|0}k=c[d>>2]|0;while(1){h=c[k>>2]|0;if((h+-1|0)>>>0>126){if(!h){k=19;break}b=_fa(m,h,0)|0;if((b|0)==-1){l=-1;k=26;break}if(g>>>0>>0){k=22;break}_fa(f,c[k>>2]|0,0)|0;j=f+b|0;h=g-b|0;b=k}else{a[f>>0]=h;j=f+1|0;h=g+-1|0;b=c[d>>2]|0}k=b+4|0;c[d>>2]=k;if(!h){l=e;k=26;break}else{f=j;g=h}}if((k|0)==19){a[f>>0]=0;c[d>>2]=0;d=e-g|0;i=n;return d|0}else if((k|0)==22){d=e-g|0;i=n;return d|0}else if((k|0)==26){i=n;return l|0}return 0}function Xda(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;g=a+84|0;h=c[g>>2]|0;e=d+256|0;f=oga(h,0,e)|0;if(f)e=f-h|0;d=e>>>0>>0?e:d;Aga(b|0,h|0,d|0)|0;c[a+4>>2]=h+d;b=h+e|0;c[a+8>>2]=b;c[g>>2]=b;i=j;return d|0}function Yda(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=d;d=$da(a,b,f)|0;i=e;return d|0}function Zda(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j;f=Afa(240)|0;do if(f){c[e>>2]=c[d>>2];e=hga(f,240,b,e)|0;if(e>>>0<240){b=Dfa(f,e+1|0)|0;c[a>>2]=(b|0)!=0?b:f;break}Bfa(f);if((e|0)>=0?(h=e+1|0,g=Afa(h)|0,c[a>>2]=g,(g|0)!=0):0)e=hga(g,h,b,d)|0;else e=-1}else e=-1;while(0);i=j;return e|0}function _da(e,f,j){e=e|0;f=f|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+304|0;J=O+16|0;L=O;K=O+33|0;M=O+8|0;y=O+32|0;k=a[f>>0]|0;if(!(k<<24>>24)){N=0;i=O;return N|0}B=e+4|0;C=e+100|0;D=e+108|0;E=e+8|0;F=K+10|0;G=K+33|0;H=L+4|0;z=K+46|0;A=K+94|0;q=k;k=0;t=0;m=0;l=0;a:while(1){b:do if(!(Gfa(q&255)|0)){o=(a[f>>0]|0)==37;c:do if(o){q=f+1|0;n=a[q>>0]|0;do if(n<<24>>24==37)break c;else if(n<<24>>24==42){n=0;q=f+2|0}else{o=(n&255)+-48|0;if(o>>>0<10?(a[f+2>>0]|0)==36:0){c[J>>2]=c[j>>2];while(1){x=c[J>>2]|0;n=c[x>>2]|0;c[J>>2]=x+4;if(o>>>0>1)o=o+-1|0;else break}q=f+3|0;break}x=c[j>>2]|0;n=c[x>>2]|0;c[j>>2]=x+4}while(0);f=a[q>>0]|0;o=f&255;if((o+-48|0)>>>0<10){f=0;while(1){r=(f*10|0)+-48+o|0;q=q+1|0;f=a[q>>0]|0;o=f&255;if((o+-48|0)>>>0>=10)break;else f=r}}else r=0;if(f<<24>>24==109){q=q+1|0;s=a[q>>0]|0;f=(n|0)!=0&1;m=0;l=0}else{s=f;f=0}o=q+1|0;switch(s&255|0){case 104:{x=(a[o>>0]|0)==104;q=x?q+2|0:o;o=x?-2:-1;break}case 106:{q=o;o=3;break}case 116:case 122:{q=o;o=1;break}case 108:{x=(a[o>>0]|0)==108;q=x?q+2|0:o;o=x?3:1;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{o=0;break}case 76:{q=o;o=2;break}default:{N=162;break a}}s=d[q>>0]|0;u=(s&47|0)==3;s=u?s|32:s;u=u?1:o;if((s|0)==91){x=t;w=r}else if((s|0)==110){if(!n){f=q;s=t;break b}switch(u|0){case 3:{f=n;c[f>>2]=t;c[f+4>>2]=((t|0)<0)<<31>>31;f=q;s=t;break b}case 0:{c[n>>2]=t;f=q;s=t;break b}case -2:{a[n>>0]=t;f=q;s=t;break b}case 1:{c[n>>2]=t;f=q;s=t;break b}case -1:{b[n>>1]=t;f=q;s=t;break b}default:{f=q;s=t;break b}}}else if((s|0)==99){x=t;w=(r|0)<1?1:r}else{Mfa(e,0);do{o=c[B>>2]|0;if(o>>>0<(c[C>>2]|0)>>>0){c[B>>2]=o+1;o=d[o>>0]|0}else o=Nfa(e)|0}while((Gfa(o)|0)!=0);o=c[B>>2]|0;if(c[C>>2]|0){o=o+-1|0;c[B>>2]=o}x=(c[D>>2]|0)+t+o-(c[E>>2]|0)|0;w=r}Mfa(e,w);o=c[B>>2]|0;r=c[C>>2]|0;if(o>>>0>>0)c[B>>2]=o+1;else{if((Nfa(e)|0)<0){N=162;break a}r=c[C>>2]|0}if(r)c[B>>2]=(c[B>>2]|0)+-1;d:do switch(s|0){case 91:case 99:case 115:{v=(s|0)==99;e:do if((s&239|0)==99){Cga(K|0,-1,257)|0;a[K>>0]=0;if((s|0)==115){a[G>>0]=0;a[F+0>>0]=0;a[F+1>>0]=0;a[F+2>>0]=0;a[F+3>>0]=0;a[F+4>>0]=0}}else{t=q+1|0;o=(a[t>>0]|0)==94;s=o&1;q=o?q+2|0:t;Cga(K|0,o&1|0,257)|0;a[K>>0]=0;o=a[q>>0]|0;if(o<<24>>24==93){t=(s^1)&255;a[A>>0]=t;q=q+1|0}else if(o<<24>>24==45){t=(s^1)&255;a[z>>0]=t;q=q+1|0}else t=(s^1)&255;while(1){o=a[q>>0]|0;if(o<<24>>24==93)break e;else if(o<<24>>24==45){s=q+1|0;o=a[s>>0]|0;if(!(o<<24>>24==93|o<<24>>24==0)){q=a[q+-1>>0]|0;if((q&255)<(o&255)){q=q&255;do{q=q+1|0;a[K+q>>0]=t;o=a[s>>0]|0}while((q|0)<(o&255|0));q=s}else q=s}else o=45}else if(!(o<<24>>24)){N=162;break a}a[K+((o&255)+1)>>0]=t;q=q+1|0}}while(0);s=v?w+1|0:31;o=(u|0)==1;t=(f|0)!=0;f:do if(o){if(t){l=Afa(s<<2)|0;if(!l){m=0;N=162;break a}}else l=n;c[L>>2]=0;c[H>>2]=0;m=0;g:while(1){if(!l)while(1){r=c[B>>2]|0;if(r>>>0<(c[C>>2]|0)>>>0){c[B>>2]=r+1;r=d[r>>0]|0}else r=Nfa(e)|0;if(!(a[K+(r+1)>>0]|0)){l=0;break g}a[y>>0]=r;r=Qda(M,y,1,L)|0;if((r|0)==-2)continue;else if((r|0)==-1){m=0;l=0;N=162;break a}if(t&(m|0)==(s|0))break}else{if(!t){s=m;N=98;break}while(1){while(1){r=c[B>>2]|0;if(r>>>0<(c[C>>2]|0)>>>0){c[B>>2]=r+1;r=d[r>>0]|0}else r=Nfa(e)|0;if(!(a[K+(r+1)>>0]|0))break g;a[y>>0]=r;r=Qda(M,y,1,L)|0;if((r|0)==-1){m=0;N=162;break a}else if((r|0)!=-2)break}c[l+(m<<2)>>2]=c[M>>2];m=m+1|0;if((m|0)==(s|0)){m=s;break}}}s=s<<1|1;r=Dfa(l,s<<2)|0;if(!r){m=0;N=162;break a}l=r}h:do if((N|0)==98)while(1){N=0;while(1){m=c[B>>2]|0;if(m>>>0<(c[C>>2]|0)>>>0){c[B>>2]=m+1;m=d[m>>0]|0}else m=Nfa(e)|0;if(!(a[K+(m+1)>>0]|0)){m=s;break h}a[y>>0]=m;m=Qda(M,y,1,L)|0;if((m|0)==-1){f=0;m=0;N=162;break a}else if((m|0)!=-2)break}c[l+(s<<2)>>2]=c[M>>2];s=s+1|0;N=98}while(0);if(!(Rda(L)|0)){m=0;N=162;break a}else{s=m;m=0}}else{if(t){m=Afa(s)|0;if(!m){m=0;l=0;N=162;break a}else r=0;while(1){do{l=c[B>>2]|0;if(l>>>0<(c[C>>2]|0)>>>0){c[B>>2]=l+1;l=d[l>>0]|0}else l=Nfa(e)|0;if(!(a[K+(l+1)>>0]|0)){s=r;l=0;break f}a[m+r>>0]=l;r=r+1|0}while((r|0)!=(s|0));l=s<<1|1;r=Dfa(m,l)|0;if(!r){l=0;N=162;break a}else{u=s;s=l;m=r;r=u}}}if(!n){m=r;while(1){l=c[B>>2]|0;if(l>>>0>>0){c[B>>2]=l+1;l=d[l>>0]|0}else l=Nfa(e)|0;if(!(a[K+(l+1)>>0]|0)){s=0;m=0;l=0;break f}m=c[C>>2]|0}}else{m=0;while(1){l=c[B>>2]|0;if(l>>>0>>0){c[B>>2]=l+1;l=d[l>>0]|0}else l=Nfa(e)|0;if(!(a[K+(l+1)>>0]|0)){s=m;m=n;l=0;break f}a[n+m>>0]=l;r=c[C>>2]|0;m=m+1|0}}}while(0);r=c[B>>2]|0;if(c[C>>2]|0){r=r+-1|0;c[B>>2]=r}r=r-(c[E>>2]|0)+(c[D>>2]|0)|0;if(!r)break a;if(!((r|0)==(w|0)|v^1))break a;do if(t)if(o){c[n>>2]=l;break}else{c[n>>2]=m;break}while(0);if(!v){if(l)c[l+(s<<2)>>2]=0;if(!m){f=q;m=0}else{a[m+s>>0]=0;f=q}}else f=q;break}case 111:{o=8;N=144;break}case 117:case 100:{o=10;N=144;break}case 105:{o=0;N=144;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{p=+Lfa(e,u,0);if((c[D>>2]|0)==((c[E>>2]|0)-(c[B>>2]|0)|0))break a;if(n)if(!u){g[n>>2]=p;f=q;break d}else if((u|0)==1){h[n>>3]=p;f=q;break d}else if((u|0)==2){h[n>>3]=p;f=q;break d}else{f=q;break d}else f=q;break}case 120:case 88:case 112:{o=16;N=144;break}default:f=q}while(0);i:do if((N|0)==144){N=0;o=Kfa(e,o,0,-1,-1)|0;if((c[D>>2]|0)==((c[E>>2]|0)-(c[B>>2]|0)|0))break a;if((s|0)==112&(n|0)!=0){c[n>>2]=o;f=q;break}if(!n)f=q;else switch(u|0){case -1:{b[n>>1]=o;f=q;break i}case 0:{c[n>>2]=o;f=q;break i}case 3:{f=n;c[f>>2]=o;c[f+4>>2]=I;f=q;break i}case 1:{c[n>>2]=o;f=q;break i}case -2:{a[n>>0]=o;f=q;break i}default:{f=q;break i}}}while(0);k=((n|0)!=0&1)+k|0;s=(c[D>>2]|0)+x+(c[B>>2]|0)-(c[E>>2]|0)|0;break b}while(0);f=f+(o&1)|0;Mfa(e,0);n=c[B>>2]|0;if(n>>>0<(c[C>>2]|0)>>>0){c[B>>2]=n+1;n=d[n>>0]|0}else n=Nfa(e)|0;if((n|0)!=(d[f>>0]|0)){N=19;break a}s=t+1|0}else{while(1){n=f+1|0;if(!(Gfa(d[n>>0]|0)|0))break;else f=n}Mfa(e,0);do{n=c[B>>2]|0;if(n>>>0<(c[C>>2]|0)>>>0){c[B>>2]=n+1;n=d[n>>0]|0}else n=Nfa(e)|0}while((Gfa(n)|0)!=0);n=c[B>>2]|0;if(c[C>>2]|0){n=n+-1|0;c[B>>2]=n}s=(c[D>>2]|0)+t+n-(c[E>>2]|0)|0}while(0);f=f+1|0;q=a[f>>0]|0;if(!(q<<24>>24)){N=166;break}else t=s}if((N|0)==19){if(c[C>>2]|0)c[B>>2]=(c[B>>2]|0)+-1;if((n|0)>-1|(k|0)!=0){N=k;i=O;return N|0}else{k=0;N=163}}else if((N|0)==162){if(!k){k=f;N=163}}else if((N|0)==166){i=O;return k|0}if((N|0)==163){f=k;k=-1}if(!f){N=k;i=O;return N|0}Bfa(m);Bfa(l);N=k;i=O;return N|0}function $da(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+112|0;e=g;f=e+0|0;h=f+112|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));c[e+32>>2]=203;c[e+44>>2]=a;c[e+76>>2]=-1;c[e+84>>2]=a;h=_da(e,b,d)|0;i=g;return h|0}function aea(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;a:do if(!c)b=0;else{h=b;while(1){g=c>>>1;b=h+(ea(g,d)|0)|0;f=Wd[e&511](a,b)|0;if(!f)break a;if((c|0)==1){b=0;break a}f=(f|0)<0;c=f?g:c-g|0;if(!c){b=0;break}else h=f?h:b}}while(0);i=j;return b|0}function bea(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+944|0;z=D+680|0;y=D+424|0;x=D;B=D+232|0;g=ea(d,b)|0;if(!g){i=D;return}j=g-d|0;c[B+4>>2]=d;c[B>>2]=d;b=d;f=d;h=2;while(1){b=b+d+f|0;c[B+(h<<2)>>2]=b;if(b>>>0>>0){A=f;f=b;h=h+1|0;b=A}else break}A=0-d|0;u=a+j|0;if((j|0)>0){q=(d|0)==0;r=d>>>0>256?256:d;s=(r|0)==(d|0);t=u;b=1;g=0;f=1;do{do if((b&3|0)!=3){p=f+-1|0;a:do if((c[B+(p<<2)>>2]|0)>>>0<(t-a|0)>>>0){c[x>>2]=a;if((f|0)>1){j=f;h=a;l=a;m=1;while(1){k=h+A|0;o=j+-2|0;h=h+(0-((c[B+(o<<2)>>2]|0)+d))|0;if((Wd[e&511](l,h)|0)>-1?(Wd[e&511](l,k)|0)>-1:0){n=m;break}n=m+1|0;l=x+(m<<2)|0;if((Wd[e&511](h,k)|0)>-1){c[l>>2]=h;j=j+-1|0}else{c[l>>2]=k;h=k;j=o}if((j|0)<=1)break;l=c[x>>2]|0;m=n}if((n|0)>=2?(w=x+(n<<2)|0,c[w>>2]=z,!q):0){if((n|0)>0){h=d;j=z}else{k=c[x>>2]|0;Aga(z|0,k|0,r|0)|0;if(s)break;else{j=d;h=r}while(1){j=j-h|0;h=j>>>0>256?256:j;Aga(z|0,k|0,h|0)|0;if((j|0)==(h|0))break a}}while(1){k=h>>>0>256?256:h;l=c[x>>2]|0;Aga(j|0,l|0,k|0)|0;m=0;do{o=m;m=m+1|0;j=l;l=c[x+(m<<2)>>2]|0;Aga(j|0,l|0,k|0)|0;c[x+(o<<2)>>2]=j+k}while((m|0)!=(n|0));if((h|0)==(k|0))break a;h=h-k|0;j=c[w>>2]|0}}}}else qea(a,d,e,b,g,f,0,B);while(0);if((f|0)==1){j=b<<1;g=b>>>31|g<<1;f=0;break}else{o=p>>>0>31;n=o?0:b;f=o?f+-33|0:p;j=n<>>(32-f|0)|(o?b:g)<>2]=a;b:do if((f|0)>1){j=f;h=a;l=a;k=1;while(1){n=h+A|0;o=j+-2|0;h=h+(0-((c[B+(o<<2)>>2]|0)+d))|0;if((Wd[e&511](l,h)|0)>-1?(Wd[e&511](l,n)|0)>-1:0){m=k;break}m=k+1|0;k=x+(k<<2)|0;if((Wd[e&511](h,n)|0)>-1){c[k>>2]=h;j=j+-1|0}else{c[k>>2]=n;h=n;j=o}if((j|0)<=1)break;l=c[x>>2]|0;k=m}if((m|0)>=2?(v=x+(m<<2)|0,c[v>>2]=y,!q):0){if((m|0)>0){k=d;j=y}else{h=c[x>>2]|0;Aga(y|0,h|0,r|0)|0;if(s)break;else{j=d;k=r}while(1){j=j-k|0;k=j>>>0>256?256:j;Aga(y|0,h|0,k|0)|0;if((j|0)==(k|0))break b}}while(1){l=k>>>0>256?256:k;h=c[x>>2]|0;Aga(j|0,h|0,l|0)|0;j=h;h=0;do{p=h;h=h+1|0;o=j;j=c[x+(h<<2)>>2]|0;Aga(o|0,j|0,l|0)|0;c[x+(p<<2)>>2]=o+l}while((h|0)!=(m|0));if((k|0)==(l|0))break b;k=k-l|0;j=c[v>>2]|0}}}while(0);j=b>>>2|g<<30;g=g>>>2;f=f+2|0}while(0);b=j|1;a=a+d|0}while(a>>>0>>0)}else{g=0;b=1;f=1}qea(a,d,e,b,g,f,0,B);h=b;k=a;j=f;while(1){if((j|0)==1){if((h|0)==1)if(!g)break;else C=52}else C=52;if((C|0)==52?(C=0,(j|0)>=2):0){x=h>>>30;z=j+-2|0;w=(h<<1&2147483646|x<<31)^3;y=(x|g<<2)>>>1;qea(k+(0-((c[B+(z<<2)>>2]|0)+d))|0,d,e,w,y,j+-1|0,1,B);x=y<<1|x&1;w=w<<1|1;y=k+A|0;qea(y,d,e,w,x,z,1,B);h=w;g=x;k=y;j=z;continue}b=h+-1|0;do if(b){if(!(b&1)){a=0;do{a=a+1|0;b=b>>>1}while((b&1|0)==0);if(!a)C=57}else C=57;if((C|0)==57){C=0;if(!g){a=64;C=62;break}if(!(g&1)){b=g;f=0}else{f=0;b=h;a=0;break}while(1){a=f+1|0;b=b>>>1;if(b&1)break;else f=a}if(!a){f=0;b=h;a=0;break}else a=f+33|0}if(a>>>0>31)C=62;else{f=a;b=h}}else{a=32;C=62}while(0);if((C|0)==62){C=0;f=a+-32|0;b=g;g=0}h=g<<32-f|b>>>f;g=g>>>f;k=k+A|0;j=a+j|0}i=D;return}function cea(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;f=i;e=c&255;while(1){if(!d){c=0;d=4;break}d=d+-1|0;c=b+d|0;if((a[c>>0]|0)==e<<24>>24){d=4;break}}if((d|0)==4){i=f;return c|0}return 0}function dea(b,c){b=b|0;c=c|0;var d=0;d=i;b=eea(b,c)|0;i=d;return ((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function eea(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;g=d&255;if(!g){d=b+(Dga(b|0)|0)|0;i=h;return d|0}a:do if(b&3){f=d&255;while(1){j=a[b>>0]|0;e=b+1|0;if(j<<24>>24==0?1:j<<24>>24==f<<24>>24)break;if(!(e&3)){b=e;break a}else b=e}i=h;return b|0}while(0);g=ea(g,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){j=e^g;b=f+4|0;if((j&-2139062144^-2139062144)&j+-16843009){b=f;break b}e=c[b>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009)break;else f=b}}while(0);e=d&255;while(1){j=a[b>>0]|0;if(j<<24>>24==0?1:j<<24>>24==e<<24>>24)break;else b=b+1|0}i=h;return b|0}function fea(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+32|0;g=h;e=a[d>>0]|0;if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;c[g+28>>2]=0;do{f=g+(((e&255)>>>5&255)<<2)|0;c[f>>2]=c[f>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);e=a[b>>0]|0;a:do if(!(e<<24>>24))e=b;else{f=b;d=e;while(1){e=f+1|0;if(c[g+(((d&255)>>>5&255)<<2)>>2]&1<<(d&31)){e=f;break a}d=a[e>>0]|0;if(!(d<<24>>24))break;else f=e}}while(0);b=e-b|0;i=h;return b|0}b=(eea(b,e<<24>>24)|0)-b|0;i=h;return b|0}function gea(a){a=a|0;var b=0,c=0,d=0;d=i;b=(Dga(a|0)|0)+1|0;c=Afa(b)|0;if(!c){a=0;i=d;return a|0}Aga(c|0,a|0,b|0)|0;a=c;i=d;return a|0}function hea(a,b){a=a|0;b=b|0;var c=0;c=i;a=cea(a,b,(Dga(a|0)|0)+1|0)|0;i=c;return a|0}function iea(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+32|0;g=h;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;c[g+28>>2]=0;f=a[d>>0]|0;if(!(f<<24>>24)){b=0;i=h;return b|0}if(!(a[d+1>>0]|0)){d=b;while(1)if((a[d>>0]|0)==f<<24>>24)d=d+1|0;else break;b=d-b|0;i=h;return b|0}else{e=d;d=f}do{f=g+(((d&255)>>>5&255)<<2)|0;c[f>>2]=c[f>>2]|1<<(d&31);e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0);d=a[b>>0]|0;a:do if(!(d<<24>>24))d=b;else{f=b;e=d;while(1){d=f+1|0;if(!(c[g+(((e&255)>>>5&255)<<2)>>2]&1<<(e&31))){d=f;break a}e=a[d>>0]|0;if(!(e<<24>>24))break;else f=d}}while(0);b=d-b|0;i=h;return b|0}function jea(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+1056|0;v=y+1024|0;x=y;k=a[e>>0]|0;if(!(k<<24>>24)){x=b;i=y;return x|0}s=dea(b,k<<24>>24)|0;if(!s){x=0;i=y;return x|0}h=a[e+1>>0]|0;if(!(h<<24>>24)){x=s;i=y;return x|0}f=s+1|0;n=a[f>>0]|0;if(!(n<<24>>24)){x=0;i=y;return x|0}m=a[e+2>>0]|0;if(!(m<<24>>24)){j=h&255|(k&255)<<8;b=n;g=d[s>>0]<<8|n&255;while(1){g=g&65535;if((g|0)==(j|0))break;f=f+1|0;h=a[f>>0]|0;if(!(h<<24>>24)){b=0;break}else{b=h;g=h&255|g<<8}}x=b<<24>>24==0?0:f+-1|0;i=y;return x|0}f=s+2|0;j=a[f>>0]|0;if(!(j<<24>>24)){x=0;i=y;return x|0}b=a[e+3>>0]|0;if(!(b<<24>>24)){h=(h&255)<<16|(k&255)<<24|(m&255)<<8;b=(j&255)<<8|(n&255)<<16|d[s>>0]<<24;if((b|0)==(h|0))b=0;else{g=b;do{f=f+1|0;b=a[f>>0]|0;g=(b&255|g)<<8;b=b<<24>>24==0}while(!(b|(g|0)==(h|0)))}x=b?0:f+-2|0;i=y;return x|0}f=s+3|0;g=a[f>>0]|0;if(!(g<<24>>24)){x=0;i=y;return x|0}if(!(a[e+4>>0]|0)){h=(h&255)<<16|(k&255)<<24|(m&255)<<8|b&255;b=(j&255)<<8|(n&255)<<16|g&255|d[s>>0]<<24;if((b|0)==(h|0))b=0;else{g=b;do{f=f+1|0;b=a[f>>0]|0;g=b&255|g<<8;b=b<<24>>24==0}while(!(b|(g|0)==(h|0)))}x=b?0:f+-3|0;i=y;return x|0};c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[v+12>>2]=0;c[v+16>>2]=0;c[v+20>>2]=0;c[v+24>>2]=0;c[v+28>>2]=0;b=k;r=0;while(1){if(!(a[s+r>>0]|0)){l=0;o=79;break}t=v+(((b&255)>>>5&255)<<2)|0;c[t>>2]=c[t>>2]|1<<(b&31);t=r+1|0;c[x+((b&255)<<2)>>2]=t;b=a[e+t>>0]|0;if(!(b<<24>>24))break;else r=t}if((o|0)==79){i=y;return l|0}a:do if(t>>>0>1){h=1;m=-1;b=0;b:while(1){g=1;while(1){c:while(1){k=h;j=1;while(1){h=a[e+(j+m)>>0]|0;f=a[e+k>>0]|0;if(h<<24>>24!=f<<24>>24)break c;if((j|0)==(g|0))break;j=j+1|0;h=j+b|0;if(h>>>0>=t>>>0){b=m;break b}else k=h}b=b+g|0;h=b+1|0;if(h>>>0>=t>>>0){b=m;break b}}g=k-m|0;if((h&255)<=(f&255))break;h=k+1|0;if(h>>>0>=t>>>0){b=m;break b}else b=k}h=b+2|0;if(h>>>0>=t>>>0){g=1;break}else{m=b;b=b+1|0}}h=1;n=-1;f=0;while(1){k=h;h=1;while(1){j=k;d:while(1){m=1;while(1){k=a[e+(m+n)>>0]|0;l=a[e+j>>0]|0;if(k<<24>>24!=l<<24>>24)break d;if((m|0)==(h|0))break;m=m+1|0;j=m+f|0;if(j>>>0>=t>>>0){f=n;break a}}f=f+h|0;j=f+1|0;if(j>>>0>=t>>>0){f=n;break a}}h=j-n|0;if((k&255)>=(l&255))break;k=j+1|0;if(k>>>0>=t>>>0){f=n;break a}else f=j}h=f+2|0;if(h>>>0>=t>>>0){h=1;break}else{n=f;f=f+1|0}}}else{b=-1;f=-1;g=1;h=1}while(0);q=(f+1|0)>>>0>(b+1|0)>>>0;j=q?h:g;q=q?f:b;p=q+1|0;if(!(pga(e,e+j|0,p)|0)){g=t-j|0;n=t|63;if((t|0)!=(j|0)){l=s;k=0;m=s;e:while(1){b=l;do if((m-b|0)>>>0>>0){h=oga(m,0,n)|0;if(h)if((h-b|0)>>>0>>0){l=0;o=79;break e}else break;else{h=m+n|0;break}}else h=m;while(0);b=a[l+r>>0]|0;if(!(1<<(b&31)&c[v+(((b&255)>>>5&255)<<2)>>2])){l=l+t|0;k=0;m=h;continue}o=c[x+((b&255)<<2)>>2]|0;b=t-o|0;if((t|0)!=(o|0)){l=l+((k|0)!=0&b>>>0>>0?g:b)|0;k=0;m=h;continue}m=p>>>0>k>>>0?p:k;b=a[e+m>>0]|0;f:do if(!(b<<24>>24))b=p;else{while(1){f=m+1|0;if(b<<24>>24!=(a[l+m>>0]|0))break;b=a[e+f>>0]|0;if(!(b<<24>>24)){b=p;break f}else m=f}l=l+(m-q)|0;k=0;m=h;continue e}while(0);do{if(b>>>0<=k>>>0){o=79;break e}b=b+-1|0}while((a[e+b>>0]|0)==(a[l+b>>0]|0));l=l+j|0;k=g;m=h}if((o|0)==79){i=y;return l|0}}else{u=n;w=t}}else{w=t-q+-1|0;u=t|63;w=(q>>>0>w>>>0?q:w)+1|0}k=e+p|0;m=s;f=s;g:while(1){b=m;do if((f-b|0)>>>0>>0){h=oga(f,0,u)|0;if(h)if((h-b|0)>>>0>>0){l=0;o=79;break g}else break;else{h=f+u|0;break}}else h=f;while(0);b=a[m+r>>0]|0;if(!(1<<(b&31)&c[v+(((b&255)>>>5&255)<<2)>>2])){m=m+t|0;f=h;continue}b=c[x+((b&255)<<2)>>2]|0;if((t|0)!=(b|0)){m=m+(t-b)|0;f=h;continue}b=a[k>>0]|0;h:do if(!(b<<24>>24))b=p;else{g=p;while(1){f=g+1|0;if(b<<24>>24!=(a[m+g>>0]|0))break;b=a[e+f>>0]|0;if(!(b<<24>>24)){b=p;break h}else g=f}m=m+(g-q)|0;f=h;continue g}while(0);do{if(!b){l=m;o=79;break g}b=b+-1|0}while((a[e+b>>0]|0)==(a[m+b>>0]|0));m=m+w|0;f=h}if((o|0)==79){i=y;return l|0}return 0}function kea(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;if(!b){b=c[94320]|0;if(!b){d=0;i=g;return d|0}}e=iea(b,d)|0;f=b+e|0;if(!(a[f>>0]|0)){c[94320]=0;d=0;i=g;return d|0}e=(fea(f,d)|0)+e|0;d=b+e|0;c[94320]=d;if(!(a[d>>0]|0)){c[94320]=0;d=f;i=g;return d|0}else{c[94320]=b+(e+1);a[d>>0]=0;d=f;i=g;return d|0}return 0}function lea(a){a=a|0;var b=0,d=0;d=i;b=a;while(1)if(!(c[b>>2]|0))break;else b=b+4|0;i=d;return b-a>>2|0}function mea(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;if(!d){i=f;return a|0}else e=a;while(1){d=d+-1|0;c[e>>2]=c[b>>2];if(!d)break;else{b=b+4|0;e=e+4|0}}i=f;return a|0}function nea(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;e=(d|0)==0;if(a-b>>2>>>0>>0){if(!e)do{d=d+-1|0;c[a+(d<<2)>>2]=c[b+(d<<2)>>2]}while((d|0)!=0)}else if(!e){e=b;b=a;while(1){d=d+-1|0;c[b>>2]=c[e>>2];if(!d)break;else{e=e+4|0;b=b+4|0}}}i=f;return a|0}function oea(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;if(d){e=a;while(1){d=d+-1|0;c[e>>2]=b;if(!d)break;else e=e+4|0}}i=f;return a|0}function pea(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;c=Xda(a,b,c)|0;i=d;return c|0}function qea(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+720|0;w=x+456|0;v=x;s=x+228|0;c[s>>2]=a;t=0-b|0;k=(f|0)==0;a:do if((e|0)==1&k){k=1;q=18}else{n=a;m=k;o=f;f=1;l=e;while(1){p=n+(0-(c[j+(g<<2)>>2]|0))|0;if((Wd[d&511](p,a)|0)<1){a=n;k=f;q=18;break a}if((h|0)==0&(g|0)>1){a=c[j+(g+-2<<2)>>2]|0;if((Wd[d&511](n+t|0,p)|0)>-1){a=n;k=f;break a}if((Wd[d&511](n+(0-(a+b))|0,p)|0)>-1){a=n;k=f;break a}}k=f+1|0;c[s+(f<<2)>>2]=p;h=l+-1|0;do if(h){if(!(h&1)){a=0;do{a=a+1|0;h=h>>>1}while((h&1|0)==0);if(!a)q=10}else q=10;if((q|0)==10){q=0;if(m){a=64;q=15;break}if(!(o&1)){a=o;f=0}else{e=0;h=l;f=o;a=0;break}while(1){h=f+1|0;a=a>>>1;if(a&1)break;else f=h}if(!h){e=0;h=l;f=o;a=0;break}else a=f+33|0}if(a>>>0>31)q=15;else{e=a;h=l;f=o}}else{a=32;q=15}while(0);if((q|0)==15){q=0;e=a+-32|0;h=o;f=0}l=f<<32-e|h>>>e;f=f>>>e;g=a+g|0;a=(f|0)==0;if((l|0)==1&a){a=p;break a}n=p;h=0;m=a;o=f;a=c[s>>2]|0;f=k}}while(0);if((q|0)==18)if(h){i=x;return}b:do if((k|0)>=2?(r=s+(k<<2)|0,c[r>>2]=w,(b|0)!=0):0){if((k|0)>0){e=b;h=w}else{h=b>>>0>256?256:b;e=c[s>>2]|0;Aga(w|0,e|0,h|0)|0;if((h|0)==(b|0))break;else k=b;while(1){k=k-h|0;h=k>>>0>256?256:k;Aga(w|0,e|0,h|0)|0;if((k|0)==(h|0))break b}}while(1){l=e>>>0>256?256:e;f=c[s>>2]|0;Aga(h|0,f|0,l|0)|0;h=f;f=0;do{q=f;f=f+1|0;p=h;h=c[s+(f<<2)>>2]|0;Aga(p|0,h|0,l|0)|0;c[s+(q<<2)>>2]=p+l}while((f|0)!=(k|0));if((e|0)==(l|0))break b;e=e-l|0;h=c[r>>2]|0}}while(0);c[v>>2]=a;c:do if((g|0)>1){h=a;k=a;f=1;while(1){l=h+t|0;a=g+-2|0;h=h+(0-((c[j+(a<<2)>>2]|0)+b))|0;if((Wd[d&511](k,h)|0)>-1?(Wd[d&511](k,l)|0)>-1:0){e=f;break}e=f+1|0;k=v+(f<<2)|0;if((Wd[d&511](h,l)|0)>-1){c[k>>2]=h;g=g+-1|0}else{c[k>>2]=l;h=l;g=a}if((g|0)<=1)break;k=c[v>>2]|0;f=e}if((e|0)>=2?(u=v+(e<<2)|0,c[u>>2]=w,(b|0)!=0):0){if((e|0)>0)g=w;else{g=b>>>0>256?256:b;k=c[v>>2]|0;Aga(w|0,k|0,g|0)|0;if((g|0)==(b|0))break;while(1){b=b-g|0;g=b>>>0>256?256:b;Aga(w|0,k|0,g|0)|0;if((b|0)==(g|0))break c}}while(1){h=b>>>0>256?256:b;k=c[v>>2]|0;Aga(g|0,k|0,h|0)|0;g=k;k=0;do{j=k;k=k+1|0;d=g;g=c[v+(k<<2)>>2]|0;Aga(d|0,g|0,h|0)|0;c[v+(j<<2)>>2]=d+h}while((k|0)!=(e|0));if((b|0)==(h|0))break c;b=b-h|0;g=c[u>>2]|0}}}while(0);i=x;return}function rea(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d>>2]=b;b=c[q>>2]|0;jc(b|0,a|0,d|0)|0;wd(10,b|0)|0;Kc()}function sea(){var a=0,b=0;a=i;i=i+16|0;if(!(Qb(377480,3)|0)){b=vc(c[94368]|0)|0;i=a;return b|0}else rea(377488,a);return 0}function tea(a){a=a|0;var b=0,d=0;d=i;b=(a|0)==0?1:a;a=Afa(b)|0;if(a){b=a;i=d;return b|0}while(1){a=Fea()|0;if(!a){b=4;break}ae[a&3]();a=Afa(b)|0;if(a){b=5;break}}if((b|0)==4){d=kc(4)|0;c[d>>2]=377664;xd(d|0,377712,196)}else if((b|0)==5){i=d;return a|0}return 0}function uea(a,b){a=a|0;b=b|0;b=i;a=tea(a)|0;i=b;return a|0}function vea(a){a=a|0;var b=0;b=i;a=tea(a)|0;i=b;return a|0}function wea(a,b){a=a|0;b=b|0;b=i;a=vea(a)|0;i=b;return a|0}function xea(a){a=a|0;var b=0;b=i;Bfa(a);i=b;return}function yea(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function zea(a){a=a|0;c[a>>2]=377664;return}function Aea(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function Bea(a){a=a|0;return}function Cea(a){a=a|0;return 377680}function Dea(a){a=a|0;var b=0;b=i;i=i+16|0;ae[a&3]();rea(377728,b)}function Eea(){var a=0,b=0;a=sea()|0;if(((a|0)!=0?(b=c[a>>2]|0,(b|0)!=0):0)?(a=b+48|0,(c[a>>2]&-256|0)==1126902528?(c[a+4>>2]|0)==1129074247:0):0)Dea(c[b+12>>2]|0);b=c[94322]|0;c[94322]=b+0;Dea(b)}function Fea(){var a=0;a=c[94456]|0;c[94456]=a+0;return a|0}function Gea(a){a=a|0;return}function Hea(a){a=a|0;return 377832}function Iea(a){a=a|0;var b=0;b=i;Jea(a);xea(a);i=b;return}function Jea(a){a=a|0;var b=0;b=i;c[a>>2]=377880;yfa(a+4|0);i=b;return}function Kea(a){a=a|0;return c[a+4>>2]|0}function Lea(a){a=a|0;var b=0;b=i;Mea(a);xea(a);i=b;return}function Mea(a){a=a|0;var b=0;b=i;c[a>>2]=377904;yfa(a+4|0);i=b;return}function Nea(a){a=a|0;return c[a+4>>2]|0}function Oea(a){a=a|0;var b=0;b=i;Jea(a);xea(a);i=b;return}function Pea(a){a=a|0;var b=0;b=i;Jea(a);xea(a);i=b;return}function Qea(a){a=a|0;return}function Rea(a){a=a|0;c[a>>2]=378128;return}function Sea(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function Tea(a){a=a|0;return}function Uea(a){a=a|0;return 378144}function Vea(a){a=a|0;return}function Wea(a){a=a|0;return}function Xea(a){a=a|0;return}function Yea(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function Zea(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function _ea(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function $ea(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function afa(a){a=a|0;var b=0;b=i;xea(a);i=b;return}function bfa(a,b,c){a=a|0;b=b|0;c=c|0;return (a|0)==(b|0)|0}function cfa(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+64|0;g=h;if((a|0)==(b|0)){a=1;i=h;return a|0}if(!b){a=0;i=h;return a|0}b=jfa(b,378256,378312,0)|0;if(!b){a=0;i=h;return a|0}e=g+0|0;f=e+56|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[g>>2]=b;c[g+8>>2]=a;c[g+12>>2]=-1;c[g+48>>2]=1;de[c[(c[b>>2]|0)+28>>2]&63](b,g,c[d>>2]|0,1);if((c[g+24>>2]|0)!=1){a=0;i=h;return a|0}c[d>>2]=c[g+16>>2];a=1;i=h;return a|0}function dfa(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=i;b=d+16|0;g=c[b>>2]|0;if(!g){c[b>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1;i=h;return}if((g|0)!=(e|0)){f=d+36|0;c[f>>2]=(c[f>>2]|0)+1;c[d+24>>2]=2;a[d+54>>0]=1;i=h;return}b=d+24|0;if((c[b>>2]|0)!=2){i=h;return}c[b>>2]=f;i=h;return}function efa(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if((c[b+8>>2]|0)!=(a|0)){i=f;return}dfa(0,b,d,e);i=f;return}function ffa(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if((a|0)==(c[b+8>>2]|0)){dfa(0,b,d,e);i=f;return}else{a=c[a+8>>2]|0;de[c[(c[a>>2]|0)+28>>2]&63](a,b,d,e);i=f;return}}function gfa(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;g=c[a+4>>2]|0;f=g>>8;if(g&1)f=c[(c[d>>2]|0)+f>>2]|0;a=c[a>>2]|0;de[c[(c[a>>2]|0)+28>>2]&63](a,b,d+f|0,(g&2|0)!=0?e:2);i=h;return}function hfa(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;if((b|0)==(c[d+8>>2]|0)){dfa(0,d,e,f);i=j;return}h=c[b+12>>2]|0;g=b+(h<<3)+16|0;gfa(b+16|0,d,e,f);if((h|0)<=1){i=j;return}h=d+54|0;b=b+24|0;while(1){gfa(b,d,e,f);if(a[h>>0]|0){b=7;break}b=b+8|0;if(b>>>0>=g>>>0){b=7;break}}if((b|0)==7){i=j;return}}function ifa(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+64|0;j=k;c[d>>2]=c[c[d>>2]>>2];if(!((a|0)==(b|0)|(b|0)==378624))if(((b|0)!=0?(e=jfa(b,378256,378424,0)|0,(e|0)!=0):0)?(c[e+8>>2]&~c[a+8>>2]|0)==0:0){b=c[a+12>>2]|0;a=e+12|0;if(!((b|0)==378608?1:(b|0)==(c[a>>2]|0)))if((((b|0)!=0?(g=jfa(b,378256,378312,0)|0,(g|0)!=0):0)?(f=c[a>>2]|0,(f|0)!=0):0)?(h=jfa(f,378256,378312,0)|0,(h|0)!=0):0){a=j+0|0;b=a+56|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));c[j>>2]=h;c[j+8>>2]=g;c[j+12>>2]=-1;c[j+48>>2]=1;de[c[(c[h>>2]|0)+28>>2]&63](h,j,c[d>>2]|0,1);if((c[j+24>>2]|0)==1){c[d>>2]=c[j+16>>2];a=1}else a=0}else a=0;else a=1}else a=0;else a=1;i=k;return a|0}function jfa(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+64|0;q=r;p=c[d>>2]|0;o=d+(c[p+-8>>2]|0)|0;p=c[p+-4>>2]|0;c[q>>2]=f;c[q+4>>2]=d;c[q+8>>2]=e;c[q+12>>2]=g;h=q+16|0;j=q+20|0;k=q+24|0;l=q+28|0;m=q+32|0;n=q+40|0;g=(p|0)==(f|0);d=h+0|0;e=d+36|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));b[h+36>>1]=0;a[h+38>>0]=0;if(g){c[q+48>>2]=1;Rd[c[(c[p>>2]|0)+20>>2]&31](p,q,o,o,1,0);q=(c[k>>2]|0)==1?o:0;i=r;return q|0}Hd[c[(c[p>>2]|0)+24>>2]&63](p,q,o,1,0);g=c[q+36>>2]|0;if((g|0)==1){if((c[k>>2]|0)!=1?!((c[n>>2]|0)==0&(c[l>>2]|0)==1&(c[m>>2]|0)==1):0){q=0;i=r;return q|0}q=c[h>>2]|0;i=r;return q|0}else if(!g){q=(c[n>>2]|0)==1&(c[l>>2]|0)==1&(c[m>>2]|0)==1?c[j>>2]|0:0;i=r;return q|0}else{q=0;i=r;return q|0}return 0}function kfa(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;a[d+53>>0]=1;if((c[d+4>>2]|0)!=(f|0)){i=h;return}a[d+52>>0]=1;b=d+16|0;f=c[b>>2]|0;if(!f){c[b>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((g|0)==1?(c[d+48>>2]|0)==1:0)){i=h;return}a[d+54>>0]=1;i=h;return}if((f|0)!=(e|0)){e=d+36|0;c[e>>2]=(c[e>>2]|0)+1;a[d+54>>0]=1;i=h;return}f=d+24|0;b=c[f>>2]|0;if((b|0)==2){c[f>>2]=g;b=g}if(!((b|0)==1?(c[d+48>>2]|0)==1:0)){i=h;return}a[d+54>>0]=1;i=h;return}function lfa(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)!=(e|0)){i=v;return}h=d+28|0;if((c[h>>2]|0)==1){i=v;return}c[h>>2]=f;i=v;return}if((b|0)!=(c[d>>2]|0)){r=c[b+12>>2]|0;p=b+(r<<3)+16|0;nfa(b+16|0,d,e,f,g);h=b+24|0;if((r|0)<=1){i=v;return}j=c[b+8>>2]|0;if((j&2|0)==0?(m=d+36|0,(c[m>>2]|0)!=1):0){if(!(j&1)){j=d+54|0;k=h;while(1){if(a[j>>0]|0){j=43;break}if((c[m>>2]|0)==1){j=43;break}nfa(k,d,e,f,g);k=k+8|0;if(k>>>0>=p>>>0){j=43;break}}if((j|0)==43){i=v;return}}j=d+24|0;k=d+54|0;l=h;while(1){if(a[k>>0]|0){j=43;break}if((c[m>>2]|0)==1?(c[j>>2]|0)==1:0){j=43;break}nfa(l,d,e,f,g);l=l+8|0;if(l>>>0>=p>>>0){j=43;break}}if((j|0)==43){i=v;return}}j=d+54|0;while(1){if(a[j>>0]|0){j=43;break}nfa(h,d,e,f,g);h=h+8|0;if(h>>>0>=p>>>0){j=43;break}}if((j|0)==43){i=v;return}}if((c[d+16>>2]|0)!=(e|0)?(s=d+20|0,(c[s>>2]|0)!=(e|0)):0){c[d+32>>2]=f;r=d+44|0;if((c[r>>2]|0)==4){i=v;return}o=c[b+12>>2]|0;k=b+(o<<3)+16|0;a:do if((o|0)>0){m=d+52|0;n=d+53|0;o=d+54|0;p=b+8|0;q=d+24|0;j=0;h=0;l=b+16|0;b:do{a[m>>0]=0;a[n>>0]=0;mfa(l,d,e,e,1,g);if(a[o>>0]|0)break;do if(a[n>>0]|0){if(!(a[m>>0]|0))if(!(c[p>>2]&1)){h=1;break b}else{h=1;break}if((c[q>>2]|0)==1){j=25;break a}if(!(c[p>>2]&2)){j=25;break a}else{j=1;h=1}}while(0);l=l+8|0}while(l>>>0>>0);if(j){u=h;j=24}else{t=h;j=21}}else{t=0;j=21}while(0);if((j|0)==21){c[s>>2]=e;e=d+40|0;c[e>>2]=(c[e>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0){a[d+54>>0]=1;if(t)j=25;else j=26}else{u=t;j=24}}if((j|0)==24)if(u)j=25;else j=26;if((j|0)==25){c[r>>2]=3;i=v;return}else if((j|0)==26){c[r>>2]=4;i=v;return}}if((f|0)!=1){i=v;return}c[d+32>>2]=1;i=v;return}function mfa(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;k=i;j=c[a+4>>2]|0;h=j>>8;if(j&1)h=c[(c[e>>2]|0)+h>>2]|0;a=c[a>>2]|0;Rd[c[(c[a>>2]|0)+20>>2]&31](a,b,d,e+h|0,(j&2|0)!=0?f:2,g);i=k;return}function nfa(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;h=c[a+4>>2]|0;g=h>>8;if(h&1)g=c[(c[d>>2]|0)+g>>2]|0;a=c[a>>2]|0;Hd[c[(c[a>>2]|0)+24>>2]&63](a,b,d+g|0,(h&2|0)!=0?e:2,f);i=j;return}function ofa(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;l=i;if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)!=(e|0)){i=l;return}h=d+28|0;if((c[h>>2]|0)==1){i=l;return}c[h>>2]=f;i=l;return}if((b|0)!=(c[d>>2]|0)){j=c[b+8>>2]|0;Hd[c[(c[j>>2]|0)+24>>2]&63](j,d,e,f,g);i=l;return}if((c[d+16>>2]|0)!=(e|0)?(j=d+20|0,(c[j>>2]|0)!=(e|0)):0){c[d+32>>2]=f;f=d+44|0;if((c[f>>2]|0)==4){i=l;return}h=d+52|0;a[h>>0]=0;m=d+53|0;a[m>>0]=0;b=c[b+8>>2]|0;Rd[c[(c[b>>2]|0)+20>>2]&31](b,d,e,e,1,g);if(a[m>>0]|0){if(!(a[h>>0]|0)){h=1;k=13}}else{h=0;k=13}do if((k|0)==13){c[j>>2]=e;m=d+40|0;c[m>>2]=(c[m>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0){a[d+54>>0]=1;if(h)break}else k=16;if((k|0)==16?h:0)break;c[f>>2]=4;i=l;return}while(0);c[f>>2]=3;i=l;return}if((f|0)!=1){i=l;return}c[d+32>>2]=1;i=l;return}function pfa(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;j=i;if((c[d+8>>2]|0)==(b|0)){if((c[d+4>>2]|0)!=(e|0)){i=j;return}g=d+28|0;if((c[g>>2]|0)==1){i=j;return}c[g>>2]=f;i=j;return}if((c[d>>2]|0)!=(b|0)){i=j;return}if((c[d+16>>2]|0)!=(e|0)?(h=d+20|0,(c[h>>2]|0)!=(e|0)):0){c[d+32>>2]=f;c[h>>2]=e;f=d+40|0;c[f>>2]=(c[f>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0)a[d+54>>0]=1;c[d+44>>2]=4;i=j;return}if((f|0)!=1){i=j;return}c[d+32>>2]=1;i=j;return}function qfa(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;if((b|0)==(c[d+8>>2]|0)){kfa(0,d,e,f,g);i=r;return}n=d+52|0;o=a[n>>0]|0;p=d+53|0;q=a[p>>0]|0;m=c[b+12>>2]|0;j=b+(m<<3)+16|0;a[n>>0]=0;a[p>>0]=0;mfa(b+16|0,d,e,f,g,h);a:do if((m|0)>1){k=d+24|0;l=b+8|0;m=d+54|0;b=b+24|0;do{if(a[m>>0]|0)break a;if(!(a[n>>0]|0)){if((a[p>>0]|0)!=0?(c[l>>2]&1|0)==0:0)break a}else{if((c[k>>2]|0)==1)break a;if(!(c[l>>2]&2))break a}a[n>>0]=0;a[p>>0]=0;mfa(b,d,e,f,g,h);b=b+8|0}while(b>>>0>>0)}while(0);a[n>>0]=o;a[p>>0]=q;i=r;return}function rfa(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;if((a|0)==(c[b+8>>2]|0)){kfa(0,b,d,e,f);i=h;return}else{a=c[a+8>>2]|0;Rd[c[(c[a>>2]|0)+20>>2]&31](a,b,d,e,f,g);i=h;return}}function sfa(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=i;if((c[b+8>>2]|0)!=(a|0)){i=g;return}kfa(0,b,d,e,f);i=g;return}function tfa(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=c[d>>2];b=Od[c[(c[a>>2]|0)+16>>2]&255](a,b,e)|0;a=b&1;if(!b){i=f;return a|0}c[d>>2]=c[e>>2];i=f;return a|0}function ufa(a){a=a|0;var b=0;b=i;if(!a)a=0;else a=(jfa(a,378256,378424,0)|0)!=0;i=b;return a&1|0}function vfa(){var a=0;a=kc(4)|0;zea(a);xd(a|0,377712,196)}function wfa(){var a=0,b=0,d=0,e=0,f=0;e=i;i=i+16|0;f=e;e=e+12|0;a=sea()|0;if(!a)rea(377456,f);d=c[a>>2]|0;if(!d)rea(377456,f);a=d+48|0;b=c[a>>2]|0;a=c[a+4>>2]|0;if(!((b&-256|0)==1126902528&(a|0)==1129074247)){c[f>>2]=c[94324];rea(377416,f)}if((b|0)==1126902529&(a|0)==1129074247)a=c[d+44>>2]|0;else a=d+80|0;c[e>>2]=a;d=c[d>>2]|0;a=c[d+4>>2]|0;if(Od[c[(c[377864>>2]|0)+16>>2]&255](377864,d,e)|0){d=c[e>>2]|0;e=c[94324]|0;d=Ld[c[(c[d>>2]|0)+8>>2]&511](d)|0;c[f>>2]=e;c[f+4>>2]=a;c[f+8>>2]=d;rea(377320,f)}else{c[f>>2]=c[94324];c[f+4>>2]=a;rea(377368,f)}}function xfa(){var a=0;a=i;i=i+16|0;if(!(Cc(377472,345)|0)){i=a;return}else rea(377544,a)}function yfa(a){a=a|0;var b=0,d=0,e=0;b=i;e=(c[a>>2]|0)+-4|0;d=c[e>>2]|0;c[e>>2]=d+-1;if((d+-1|0)>=0){i=b;return}xea((c[a>>2]|0)+-12|0);i=b;return}function zfa(a){a=a|0;var b=0;b=i;i=i+16|0;Bfa(a);if(!(ud(c[94368]|0,0)|0)){i=b;return}else rea(377600,b)}function Afa(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=i;do if(a>>>0<245){if(a>>>0<11)p=16;else p=a+11&-8;a=p>>>3;l=c[94728]|0;j=l>>>a;if(j&3){b=(j&1^1)+a|0;e=b<<1;d=378952+(e<<2)|0;e=378952+(e+2<<2)|0;f=c[e>>2]|0;g=f+8|0;h=c[g>>2]|0;do if((d|0)!=(h|0)){if(h>>>0<(c[94732]|0)>>>0)Kc();a=h+12|0;if((c[a>>2]|0)==(f|0)){c[a>>2]=d;c[e>>2]=h;break}else Kc()}else c[94728]=l&~(1<>2]=L|3;L=f+(L|4)|0;c[L>>2]=c[L>>2]|1;L=g;i=M;return L|0}h=c[94730]|0;if(p>>>0>h>>>0){if(j){d=2<>>12&16;d=d>>>k;g=d>>>5&8;d=d>>>g;f=d>>>2&4;d=d>>>f;b=d>>>1&2;d=d>>>b;e=d>>>1&1;e=(g|k|f|b|e)+(d>>>e)|0;d=e<<1;b=378952+(d<<2)|0;d=378952+(d+2<<2)|0;f=c[d>>2]|0;k=f+8|0;g=c[k>>2]|0;do if((b|0)!=(g|0)){if(g>>>0<(c[94732]|0)>>>0)Kc();a=g+12|0;if((c[a>>2]|0)==(f|0)){c[a>>2]=b;c[d>>2]=g;m=c[94730]|0;break}else Kc()}else{c[94728]=l&~(1<>2]=p|3;j=f+p|0;c[f+(p|4)>>2]=h|1;c[f+L>>2]=h;if(m){g=c[94733]|0;b=m>>>3;a=b<<1;d=378952+(a<<2)|0;e=c[94728]|0;b=1<>2]|0;if(a>>>0<(c[94732]|0)>>>0)Kc();else{n=e;o=a}}else{c[94728]=e|b;n=378952+(a+2<<2)|0;o=d}c[n>>2]=g;c[o+12>>2]=g;c[g+8>>2]=o;c[g+12>>2]=d}c[94730]=h;c[94733]=j;L=k;i=M;return L|0}a=c[94729]|0;if(a){h=(a&0-a)+-1|0;I=h>>>12&16;h=h>>>I;H=h>>>5&8;h=h>>>H;L=h>>>2&4;h=h>>>L;e=h>>>1&2;h=h>>>e;l=h>>>1&1;l=c[379216+((H|I|L|e|l)+(h>>>l)<<2)>>2]|0;h=(c[l+4>>2]&-8)-p|0;e=l;while(1){a=c[e+16>>2]|0;if(!a){a=c[e+20>>2]|0;if(!a)break}e=(c[a+4>>2]&-8)-p|0;L=e>>>0>>0;h=L?e:h;e=a;l=L?a:l}j=c[94732]|0;if(l>>>0>>0)Kc();f=l+p|0;if(l>>>0>=f>>>0)Kc();k=c[l+24>>2]|0;b=c[l+12>>2]|0;do if((b|0)==(l|0)){e=l+20|0;a=c[e>>2]|0;if(!a){e=l+16|0;a=c[e>>2]|0;if(!a){g=0;break}}while(1){b=a+20|0;d=c[b>>2]|0;if(d){a=d;e=b;continue}b=a+16|0;d=c[b>>2]|0;if(!d)break;else{a=d;e=b}}if(e>>>0>>0)Kc();else{c[e>>2]=0;g=a;break}}else{d=c[l+8>>2]|0;if(d>>>0>>0)Kc();a=d+12|0;if((c[a>>2]|0)!=(l|0))Kc();e=b+8|0;if((c[e>>2]|0)==(l|0)){c[a>>2]=b;c[e>>2]=d;g=b;break}else Kc()}while(0);do if(k){a=c[l+28>>2]|0;e=379216+(a<<2)|0;if((l|0)==(c[e>>2]|0)){c[e>>2]=g;if(!g){c[94729]=c[94729]&~(1<>>0<(c[94732]|0)>>>0)Kc();a=k+16|0;if((c[a>>2]|0)==(l|0))c[a>>2]=g;else c[k+20>>2]=g;if(!g)break}e=c[94732]|0;if(g>>>0>>0)Kc();c[g+24>>2]=k;a=c[l+16>>2]|0;do if(a)if(a>>>0>>0)Kc();else{c[g+16>>2]=a;c[a+24>>2]=g;break}while(0);a=c[l+20>>2]|0;if(a)if(a>>>0<(c[94732]|0)>>>0)Kc();else{c[g+20>>2]=a;c[a+24>>2]=g;break}}while(0);if(h>>>0<16){L=h+p|0;c[l+4>>2]=L|3;L=l+(L+4)|0;c[L>>2]=c[L>>2]|1}else{c[l+4>>2]=p|3;c[l+(p|4)>>2]=h|1;c[l+(h+p)>>2]=h;a=c[94730]|0;if(a){g=c[94733]|0;b=a>>>3;a=b<<1;d=378952+(a<<2)|0;e=c[94728]|0;b=1<>2]|0;if(e>>>0<(c[94732]|0)>>>0)Kc();else{q=a;r=e}}else{c[94728]=e|b;q=378952+(a+2<<2)|0;r=d}c[q>>2]=g;c[r+12>>2]=g;c[g+8>>2]=r;c[g+12>>2]=d}c[94730]=h;c[94733]=f}L=l+8|0;i=M;return L|0}}}else if(a>>>0<=4294967231){a=a+11|0;p=a&-8;h=c[94729]|0;if(h){e=0-p|0;a=a>>>8;if(a)if(p>>>0>16777215)f=31;else{q=(a+1048320|0)>>>16&8;r=a<>>16&4;r=r<>>16&2;f=14-(o|q|f)+(r<>>15)|0;f=p>>>(f+7|0)&1|f<<1}else f=0;b=c[379216+(f<<2)>>2]|0;a:do if(!b){a=0;j=0}else{if((f|0)==31)j=0;else j=25-(f>>>1)|0;k=e;a=0;g=p<>2]&-8;e=d-p|0;if(e>>>0>>0)if((d|0)==(p|0)){a=b;j=b;break a}else j=b;else e=k;r=c[b+20>>2]|0;b=c[b+(g>>>31<<2)+16>>2]|0;a=(r|0)==0|(r|0)==(b|0)?a:r;if(!b)break;else{k=e;g=g<<1}}}while(0);if((a|0)==0&(j|0)==0){a=2<>>12&16;r=r>>>n;m=r>>>5&8;r=r>>>m;o=r>>>2&4;r=r>>>o;q=r>>>1&2;r=r>>>q;a=r>>>1&1;a=c[379216+((m|n|o|q|a)+(r>>>a)<<2)>>2]|0}if(!a){f=e;h=j}else while(1){r=(c[a+4>>2]&-8)-p|0;b=r>>>0>>0;e=b?r:e;j=b?a:j;b=c[a+16>>2]|0;if(b){a=b;continue}a=c[a+20>>2]|0;if(!a){f=e;h=j;break}}if((h|0)!=0?f>>>0<((c[94730]|0)-p|0)>>>0:0){j=c[94732]|0;if(h>>>0>>0)Kc();g=h+p|0;if(h>>>0>=g>>>0)Kc();k=c[h+24>>2]|0;b=c[h+12>>2]|0;do if((b|0)==(h|0)){e=h+20|0;a=c[e>>2]|0;if(!a){e=h+16|0;a=c[e>>2]|0;if(!a){l=0;break}}while(1){b=a+20|0;d=c[b>>2]|0;if(d){a=d;e=b;continue}b=a+16|0;d=c[b>>2]|0;if(!d)break;else{a=d;e=b}}if(e>>>0>>0)Kc();else{c[e>>2]=0;l=a;break}}else{d=c[h+8>>2]|0;if(d>>>0>>0)Kc();a=d+12|0;if((c[a>>2]|0)!=(h|0))Kc();e=b+8|0;if((c[e>>2]|0)==(h|0)){c[a>>2]=b;c[e>>2]=d;l=b;break}else Kc()}while(0);do if(k){a=c[h+28>>2]|0;e=379216+(a<<2)|0;if((h|0)==(c[e>>2]|0)){c[e>>2]=l;if(!l){c[94729]=c[94729]&~(1<>>0<(c[94732]|0)>>>0)Kc();a=k+16|0;if((c[a>>2]|0)==(h|0))c[a>>2]=l;else c[k+20>>2]=l;if(!l)break}e=c[94732]|0;if(l>>>0>>0)Kc();c[l+24>>2]=k;a=c[h+16>>2]|0;do if(a)if(a>>>0>>0)Kc();else{c[l+16>>2]=a;c[a+24>>2]=l;break}while(0);a=c[h+20>>2]|0;if(a)if(a>>>0<(c[94732]|0)>>>0)Kc();else{c[l+20>>2]=a;c[a+24>>2]=l;break}}while(0);b:do if(f>>>0>=16){c[h+4>>2]=p|3;c[h+(p|4)>>2]=f|1;c[h+(f+p)>>2]=f;a=f>>>3;if(f>>>0<256){e=a<<1;d=378952+(e<<2)|0;b=c[94728]|0;a=1<>2]|0;if(e>>>0>=(c[94732]|0)>>>0){t=a;u=e;break}Kc()}while(0);c[t>>2]=g;c[u+12>>2]=g;c[h+(p+8)>>2]=u;c[h+(p+12)>>2]=d;break}a=f>>>8;if(a)if(f>>>0>16777215)d=31;else{I=(a+1048320|0)>>>16&8;L=a<>>16&4;L=L<>>16&2;d=14-(H|I|d)+(L<>>15)|0;d=f>>>(d+7|0)&1|d<<1}else d=0;a=379216+(d<<2)|0;c[h+(p+28)>>2]=d;c[h+(p+20)>>2]=0;c[h+(p+16)>>2]=0;e=c[94729]|0;b=1<>2]=g;c[h+(p+24)>>2]=a;c[h+(p+12)>>2]=g;c[h+(p+8)>>2]=g;break}e=c[a>>2]|0;if((d|0)==31)a=0;else a=25-(d>>>1)|0;c:do if((c[e+4>>2]&-8|0)!=(f|0)){d=f<>>31<<2)+16|0;a=c[b>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(f|0)){w=a;break c}else{d=d<<1;e=a}}if(b>>>0<(c[94732]|0)>>>0)Kc();else{c[b>>2]=g;c[h+(p+24)>>2]=e;c[h+(p+12)>>2]=g;c[h+(p+8)>>2]=g;break b}}else w=e;while(0);a=w+8|0;b=c[a>>2]|0;L=c[94732]|0;if(w>>>0>=L>>>0&b>>>0>=L>>>0){c[b+12>>2]=g;c[a>>2]=g;c[h+(p+8)>>2]=b;c[h+(p+12)>>2]=w;c[h+(p+24)>>2]=0;break}else Kc()}else{L=f+p|0;c[h+4>>2]=L|3;L=h+(L+4)|0;c[L>>2]=c[L>>2]|1}while(0);L=h+8|0;i=M;return L|0}}}else p=-1;while(0);j=c[94730]|0;if(j>>>0>=p>>>0){a=j-p|0;b=c[94733]|0;if(a>>>0>15){c[94733]=b+p;c[94730]=a;c[b+(p+4)>>2]=a|1;c[b+j>>2]=a;c[b+4>>2]=p|3}else{c[94730]=0;c[94733]=0;c[b+4>>2]=j|3;L=b+(j+4)|0;c[L>>2]=c[L>>2]|1}L=b+8|0;i=M;return L|0}a=c[94731]|0;if(a>>>0>p>>>0){I=a-p|0;c[94731]=I;L=c[94734]|0;c[94734]=L+p;c[L+(p+4)>>2]=I|1;c[L+4>>2]=p|3;L=L+8|0;i=M;return L|0}do if(!(c[94846]|0)){a=hb(30)|0;if(!(a+-1&a)){c[94848]=a;c[94847]=a;c[94849]=-1;c[94850]=-1;c[94851]=0;c[94839]=0;c[94846]=(ac(0)|0)&-16^1431655768;break}else Kc()}while(0);k=p+48|0;b=c[94848]|0;g=p+47|0;e=b+g|0;b=0-b|0;f=e&b;if(f>>>0<=p>>>0){L=0;i=M;return L|0}a=c[94838]|0;if((a|0)!=0?(u=c[94836]|0,w=u+f|0,w>>>0<=u>>>0|w>>>0>a>>>0):0){L=0;i=M;return L|0}d:do if(!(c[94839]&4)){j=c[94734]|0;e:do if(j){d=379360|0;while(1){a=c[d>>2]|0;if(a>>>0<=j>>>0?(s=d+4|0,(a+(c[s>>2]|0)|0)>>>0>j>>>0):0)break;a=c[d+8>>2]|0;if(!a){B=181;break e}else d=a}if(d){a=e-(c[94731]|0)&b;if(a>>>0<2147483647){j=nd(a|0)|0;if((j|0)==((c[d>>2]|0)+(c[s>>2]|0)|0))B=190;else B=191}else a=0}else B=181}else B=181;while(0);do if((B|0)==181){j=nd(0)|0;if((j|0)!=(-1|0)){a=j;e=c[94847]|0;b=e+-1|0;if(!(b&a))a=f;else a=f-a+(b+a&0-e)|0;e=c[94836]|0;b=e+a|0;if(a>>>0>p>>>0&a>>>0<2147483647){w=c[94838]|0;if((w|0)!=0?b>>>0<=e>>>0|b>>>0>w>>>0:0){a=0;break}e=nd(a|0)|0;if((e|0)==(j|0))B=190;else{j=e;B=191}}else a=0}else a=0}while(0);f:do if((B|0)==190){if((j|0)!=(-1|0)){x=j;r=a;B=201;break d}}else if((B|0)==191){e=0-a|0;do if((j|0)!=(-1|0)&a>>>0<2147483647&k>>>0>a>>>0?(v=c[94848]|0,v=g-a+v&0-v,v>>>0<2147483647):0)if((nd(v|0)|0)==(-1|0)){nd(e|0)|0;a=0;break f}else{a=v+a|0;break}while(0);if((j|0)==(-1|0))a=0;else{x=j;r=a;B=201;break d}}while(0);c[94839]=c[94839]|4;B=198}else{a=0;B=198}while(0);if((((B|0)==198?f>>>0<2147483647:0)?(x=nd(f|0)|0,y=nd(0)|0,(x|0)!=(-1|0)&(y|0)!=(-1|0)&x>>>0>>0):0)?(z=y-x|0,A=z>>>0>(p+40|0)>>>0,A):0){r=A?z:a;B=201}if((B|0)==201){a=(c[94836]|0)+r|0;c[94836]=a;if(a>>>0>(c[94837]|0)>>>0)c[94837]=a;k=c[94734]|0;g:do if(k){d=379360|0;while(1){a=c[d>>2]|0;j=d+4|0;e=c[j>>2]|0;if((x|0)==(a+e|0)){B=213;break}b=c[d+8>>2]|0;if(!b)break;else d=b}if(((B|0)==213?(c[d+12>>2]&8|0)==0:0)?k>>>0>=a>>>0&k>>>0>>0:0){c[j>>2]=e+r;b=(c[94731]|0)+r|0;a=k+8|0;if(!(a&7))a=0;else a=0-a&7;L=b-a|0;c[94734]=k+a;c[94731]=L;c[k+(a+4)>>2]=L|1;c[k+(b+4)>>2]=40;c[94735]=c[94850];break}a=c[94732]|0;if(x>>>0>>0){c[94732]=x;m=x}else m=a;a=x+r|0;e=379360|0;while(1){if((c[e>>2]|0)==(a|0)){B=223;break}j=c[e+8>>2]|0;if(!j)break;else e=j}if((B|0)==223?(c[e+12>>2]&8|0)==0:0){c[e>>2]=x;a=e+4|0;c[a>>2]=(c[a>>2]|0)+r;a=x+8|0;if(!(a&7))q=0;else q=0-a&7;a=x+(r+8)|0;if(!(a&7))h=0;else h=0-a&7;a=x+(h+r)|0;n=q+p|0;o=x+n|0;l=a-(x+q)-p|0;c[x+(q+4)>>2]=p|3;h:do if((a|0)!=(k|0)){if((a|0)==(c[94733]|0)){L=(c[94730]|0)+l|0;c[94730]=L;c[94733]=o;c[x+(n+4)>>2]=L|1;c[x+(L+n)>>2]=L;break}g=r+4|0;j=c[x+(g+h)>>2]|0;if((j&3|0)==1){f=j&-8;d=j>>>3;i:do if(j>>>0>=256){k=c[x+((h|24)+r)>>2]|0;b=c[x+(r+12+h)>>2]|0;do if((b|0)==(a|0)){e=h|16;b=x+(g+e)|0;j=c[b>>2]|0;if(!j){e=x+(e+r)|0;j=c[e>>2]|0;if(!j){I=0;break}}else e=b;while(1){b=j+20|0;d=c[b>>2]|0;if(d){j=d;e=b;continue}b=j+16|0;d=c[b>>2]|0;if(!d)break;else{j=d;e=b}}if(e>>>0>>0)Kc();else{c[e>>2]=0;I=j;break}}else{d=c[x+((h|8)+r)>>2]|0;if(d>>>0>>0)Kc();j=d+12|0;if((c[j>>2]|0)!=(a|0))Kc();e=b+8|0;if((c[e>>2]|0)==(a|0)){c[j>>2]=b;c[e>>2]=d;I=b;break}else Kc()}while(0);if(!k)break;j=c[x+(r+28+h)>>2]|0;e=379216+(j<<2)|0;do if((a|0)!=(c[e>>2]|0)){if(k>>>0<(c[94732]|0)>>>0)Kc();j=k+16|0;if((c[j>>2]|0)==(a|0))c[j>>2]=I;else c[k+20>>2]=I;if(!I)break i}else{c[e>>2]=I;if(I)break;c[94729]=c[94729]&~(1<>>0>>0)Kc();c[I+24>>2]=k;a=h|16;j=c[x+(a+r)>>2]|0;do if(j)if(j>>>0>>0)Kc();else{c[I+16>>2]=j;c[j+24>>2]=I;break}while(0);a=c[x+(g+a)>>2]|0;if(!a)break;if(a>>>0<(c[94732]|0)>>>0)Kc();else{c[I+20>>2]=a;c[a+24>>2]=I;break}}else{e=c[x+((h|8)+r)>>2]|0;b=c[x+(r+12+h)>>2]|0;j=378952+(d<<1<<2)|0;do if((e|0)!=(j|0)){if(e>>>0>>0)Kc();if((c[e+12>>2]|0)==(a|0))break;Kc()}while(0);if((b|0)==(e|0)){c[94728]=c[94728]&~(1<>>0>>0)Kc();j=b+8|0;if((c[j>>2]|0)==(a|0)){E=j;break}Kc()}while(0);c[e+12>>2]=b;c[E>>2]=e}while(0);a=x+((f|h)+r)|0;j=f+l|0}else j=l;a=a+4|0;c[a>>2]=c[a>>2]&-2;c[x+(n+4)>>2]=j|1;c[x+(j+n)>>2]=j;a=j>>>3;if(j>>>0<256){e=a<<1;d=378952+(e<<2)|0;b=c[94728]|0;a=1<>2]|0;if(e>>>0>=(c[94732]|0)>>>0){J=a;K=e;break}Kc()}while(0);c[J>>2]=o;c[K+12>>2]=o;c[x+(n+8)>>2]=K;c[x+(n+12)>>2]=d;break}a=j>>>8;do if(!a)d=0;else{if(j>>>0>16777215){d=31;break}H=(a+1048320|0)>>>16&8;I=a<>>16&4;I=I<>>16&2;d=14-(G|H|d)+(I<>>15)|0;d=j>>>(d+7|0)&1|d<<1}while(0);a=379216+(d<<2)|0;c[x+(n+28)>>2]=d;c[x+(n+20)>>2]=0;c[x+(n+16)>>2]=0;e=c[94729]|0;b=1<>2]=o;c[x+(n+24)>>2]=a;c[x+(n+12)>>2]=o;c[x+(n+8)>>2]=o;break}e=c[a>>2]|0;if((d|0)==31)a=0;else a=25-(d>>>1)|0;j:do if((c[e+4>>2]&-8|0)!=(j|0)){d=j<>>31<<2)+16|0;a=c[b>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(j|0)){L=a;break j}else{d=d<<1;e=a}}if(b>>>0<(c[94732]|0)>>>0)Kc();else{c[b>>2]=o;c[x+(n+24)>>2]=e;c[x+(n+12)>>2]=o;c[x+(n+8)>>2]=o;break h}}else L=e;while(0);a=L+8|0;b=c[a>>2]|0;I=c[94732]|0;if(L>>>0>=I>>>0&b>>>0>=I>>>0){c[b+12>>2]=o;c[a>>2]=o;c[x+(n+8)>>2]=b;c[x+(n+12)>>2]=L;c[x+(n+24)>>2]=0;break}else Kc()}else{L=(c[94731]|0)+l|0;c[94731]=L;c[94734]=o;c[x+(n+4)>>2]=L|1}while(0);L=x+(q|8)|0;i=M;return L|0}a=379360|0;while(1){e=c[a>>2]|0;if(e>>>0<=k>>>0?(C=c[a+4>>2]|0,D=e+C|0,D>>>0>k>>>0):0)break;a=c[a+8>>2]|0}a=e+(C+-39)|0;if(!(a&7))a=0;else a=0-a&7;b=e+(C+-47+a)|0;b=b>>>0<(k+16|0)>>>0?k:b;e=b+8|0;a=x+8|0;if(!(a&7))a=0;else a=0-a&7;L=r+-40-a|0;c[94734]=x+a;c[94731]=L;c[x+(a+4)>>2]=L|1;c[x+(r+-36)>>2]=40;c[94735]=c[94850];c[b+4>>2]=27;c[e+0>>2]=c[94840];c[e+4>>2]=c[94841];c[e+8>>2]=c[94842];c[e+12>>2]=c[94843];c[94840]=x;c[94841]=r;c[94843]=0;c[94842]=e;a=b+28|0;c[a>>2]=7;if((b+32|0)>>>0>>0)do{L=a;a=a+4|0;c[a>>2]=7}while((L+8|0)>>>0>>0);if((b|0)!=(k|0)){j=b-k|0;a=k+(j+4)|0;c[a>>2]=c[a>>2]&-2;c[k+4>>2]=j|1;c[k+j>>2]=j;a=j>>>3;if(j>>>0<256){e=a<<1;d=378952+(e<<2)|0;b=c[94728]|0;a=1<>2]|0;if(b>>>0>=(c[94732]|0)>>>0){F=a;G=b;break}Kc()}while(0);c[F>>2]=k;c[G+12>>2]=k;c[k+8>>2]=G;c[k+12>>2]=d;break}a=j>>>8;if(a)if(j>>>0>16777215)e=31;else{I=(a+1048320|0)>>>16&8;L=a<>>16&4;L=L<>>16&2;e=14-(G|I|e)+(L<>>15)|0;e=j>>>(e+7|0)&1|e<<1}else e=0;a=379216+(e<<2)|0;c[k+28>>2]=e;c[k+20>>2]=0;c[k+16>>2]=0;b=c[94729]|0;d=1<>2]=k;c[k+24>>2]=a;c[k+12>>2]=k;c[k+8>>2]=k;break}b=c[a>>2]|0;if((e|0)==31)a=0;else a=25-(e>>>1)|0;k:do if((c[b+4>>2]&-8|0)!=(j|0)){e=j<>>31<<2)+16|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(j|0)){H=a;break k}else{e=e<<1;b=a}}if(d>>>0<(c[94732]|0)>>>0)Kc();else{c[d>>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;break g}}else H=b;while(0);a=H+8|0;b=c[a>>2]|0;L=c[94732]|0;if(H>>>0>=L>>>0&b>>>0>=L>>>0){c[b+12>>2]=k;c[a>>2]=k;c[k+8>>2]=b;c[k+12>>2]=H;c[k+24>>2]=0;break}else Kc()}}else{L=c[94732]|0;if((L|0)==0|x>>>0>>0)c[94732]=x;c[94840]=x;c[94841]=r;c[94843]=0;c[94737]=c[94846];c[94736]=-1;a=0;do{L=a<<1;I=378952+(L<<2)|0;c[378952+(L+3<<2)>>2]=I;c[378952+(L+2<<2)>>2]=I;a=a+1|0}while((a|0)!=32);a=x+8|0;if(!(a&7))a=0;else a=0-a&7;L=r+-40-a|0;c[94734]=x+a;c[94731]=L;c[x+(a+4)>>2]=L|1;c[x+(r+-36)>>2]=40;c[94735]=c[94850]}while(0);a=c[94731]|0;if(a>>>0>p>>>0){I=a-p|0;c[94731]=I;L=c[94734]|0;c[94734]=L+p;c[L+(p+4)>>2]=I|1;c[L+4>>2]=p|3;L=L+8|0;i=M;return L|0}}c[(td()|0)>>2]=12;L=0;i=M;return L|0}function Bfa(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;if(!a){i=w;return}b=a+-8|0;j=c[94732]|0;if(b>>>0>>0)Kc();f=c[a+-4>>2]|0;d=f&3;if((d|0)==1)Kc();p=f&-8;r=a+(p+-8)|0;do if(!(f&1)){b=c[b>>2]|0;if(!d){i=w;return}k=-8-b|0;m=a+k|0;n=b+p|0;if(m>>>0>>0)Kc();if((m|0)==(c[94733]|0)){b=a+(p+-4)|0;f=c[b>>2]|0;if((f&3|0)!=3){v=m;g=n;break}c[94730]=n;c[b>>2]=f&-2;c[a+(k+4)>>2]=n|1;c[r>>2]=n;i=w;return}e=b>>>3;if(b>>>0<256){d=c[a+(k+8)>>2]|0;f=c[a+(k+12)>>2]|0;b=378952+(e<<1<<2)|0;if((d|0)!=(b|0)){if(d>>>0>>0)Kc();if((c[d+12>>2]|0)!=(m|0))Kc()}if((f|0)==(d|0)){c[94728]=c[94728]&~(1<>>0>>0)Kc();b=f+8|0;if((c[b>>2]|0)==(m|0))h=b;else Kc()}else h=f+8|0;c[d+12>>2]=f;c[h>>2]=d;v=m;g=n;break}h=c[a+(k+24)>>2]|0;d=c[a+(k+12)>>2]|0;do if((d|0)==(m|0)){f=a+(k+20)|0;b=c[f>>2]|0;if(!b){f=a+(k+16)|0;b=c[f>>2]|0;if(!b){l=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e){b=e;f=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;f=d}}if(f>>>0>>0)Kc();else{c[f>>2]=0;l=b;break}}else{e=c[a+(k+8)>>2]|0;if(e>>>0>>0)Kc();b=e+12|0;if((c[b>>2]|0)!=(m|0))Kc();f=d+8|0;if((c[f>>2]|0)==(m|0)){c[b>>2]=d;c[f>>2]=e;l=d;break}else Kc()}while(0);if(h){b=c[a+(k+28)>>2]|0;f=379216+(b<<2)|0;if((m|0)==(c[f>>2]|0)){c[f>>2]=l;if(!l){c[94729]=c[94729]&~(1<>>0<(c[94732]|0)>>>0)Kc();b=h+16|0;if((c[b>>2]|0)==(m|0))c[b>>2]=l;else c[h+20>>2]=l;if(!l){v=m;g=n;break}}f=c[94732]|0;if(l>>>0>>0)Kc();c[l+24>>2]=h;b=c[a+(k+16)>>2]|0;do if(b)if(b>>>0>>0)Kc();else{c[l+16>>2]=b;c[b+24>>2]=l;break}while(0);b=c[a+(k+20)>>2]|0;if(b)if(b>>>0<(c[94732]|0)>>>0)Kc();else{c[l+20>>2]=b;c[b+24>>2]=l;v=m;g=n;break}else{v=m;g=n}}else{v=m;g=n}}else{v=b;g=p}while(0);if(v>>>0>=r>>>0)Kc();b=a+(p+-4)|0;f=c[b>>2]|0;if(!(f&1))Kc();if(!(f&2)){if((r|0)==(c[94734]|0)){u=(c[94731]|0)+g|0;c[94731]=u;c[94734]=v;c[v+4>>2]=u|1;if((v|0)!=(c[94733]|0)){i=w;return}c[94733]=0;c[94730]=0;i=w;return}if((r|0)==(c[94733]|0)){u=(c[94730]|0)+g|0;c[94730]=u;c[94733]=v;c[v+4>>2]=u|1;c[v+u>>2]=u;i=w;return}g=(f&-8)+g|0;e=f>>>3;do if(f>>>0>=256){h=c[a+(p+16)>>2]|0;b=c[a+(p|4)>>2]|0;do if((b|0)==(r|0)){f=a+(p+12)|0;b=c[f>>2]|0;if(!b){f=a+(p+8)|0;b=c[f>>2]|0;if(!b){q=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e){b=e;f=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;f=d}}if(f>>>0<(c[94732]|0)>>>0)Kc();else{c[f>>2]=0;q=b;break}}else{f=c[a+p>>2]|0;if(f>>>0<(c[94732]|0)>>>0)Kc();d=f+12|0;if((c[d>>2]|0)!=(r|0))Kc();e=b+8|0;if((c[e>>2]|0)==(r|0)){c[d>>2]=b;c[e>>2]=f;q=b;break}else Kc()}while(0);if(h){b=c[a+(p+20)>>2]|0;f=379216+(b<<2)|0;if((r|0)==(c[f>>2]|0)){c[f>>2]=q;if(!q){c[94729]=c[94729]&~(1<>>0<(c[94732]|0)>>>0)Kc();b=h+16|0;if((c[b>>2]|0)==(r|0))c[b>>2]=q;else c[h+20>>2]=q;if(!q)break}f=c[94732]|0;if(q>>>0>>0)Kc();c[q+24>>2]=h;b=c[a+(p+8)>>2]|0;do if(b)if(b>>>0>>0)Kc();else{c[q+16>>2]=b;c[b+24>>2]=q;break}while(0);b=c[a+(p+12)>>2]|0;if(b)if(b>>>0<(c[94732]|0)>>>0)Kc();else{c[q+20>>2]=b;c[b+24>>2]=q;break}}}else{d=c[a+p>>2]|0;f=c[a+(p|4)>>2]|0;b=378952+(e<<1<<2)|0;if((d|0)!=(b|0)){if(d>>>0<(c[94732]|0)>>>0)Kc();if((c[d+12>>2]|0)!=(r|0))Kc()}if((f|0)==(d|0)){c[94728]=c[94728]&~(1<>>0<(c[94732]|0)>>>0)Kc();b=f+8|0;if((c[b>>2]|0)==(r|0))o=b;else Kc()}else o=f+8|0;c[d+12>>2]=f;c[o>>2]=d}while(0);c[v+4>>2]=g|1;c[v+g>>2]=g;if((v|0)==(c[94733]|0)){c[94730]=g;i=w;return}}else{c[b>>2]=f&-2;c[v+4>>2]=g|1;c[v+g>>2]=g}b=g>>>3;if(g>>>0<256){d=b<<1;f=378952+(d<<2)|0;e=c[94728]|0;b=1<>2]|0;if(d>>>0<(c[94732]|0)>>>0)Kc();else{s=b;t=d}}else{c[94728]=e|b;s=378952+(d+2<<2)|0;t=f}c[s>>2]=v;c[t+12>>2]=v;c[v+8>>2]=t;c[v+12>>2]=f;i=w;return}b=g>>>8;if(b)if(g>>>0>16777215)f=31;else{s=(b+1048320|0)>>>16&8;t=b<>>16&4;t=t<>>16&2;f=14-(r|s|f)+(t<>>15)|0;f=g>>>(f+7|0)&1|f<<1}else f=0;b=379216+(f<<2)|0;c[v+28>>2]=f;c[v+20>>2]=0;c[v+16>>2]=0;d=c[94729]|0;e=1<>2]|0;if((f|0)==31)b=0;else b=25-(f>>>1)|0;b:do if((c[d+4>>2]&-8|0)!=(g|0)){f=g<>>31<<2)+16|0;b=c[e>>2]|0;if(!b)break;if((c[b+4>>2]&-8|0)==(g|0)){u=b;break b}else{f=f<<1;d=b}}if(e>>>0<(c[94732]|0)>>>0)Kc();else{c[e>>2]=v;c[v+24>>2]=d;c[v+12>>2]=v;c[v+8>>2]=v;break a}}else u=d;while(0);b=u+8|0;d=c[b>>2]|0;t=c[94732]|0;if(u>>>0>=t>>>0&d>>>0>=t>>>0){c[d+12>>2]=v;c[b>>2]=v;c[v+8>>2]=d;c[v+12>>2]=u;c[v+24>>2]=0;break}else Kc()}else{c[94729]=d|e;c[b>>2]=v;c[v+24>>2]=b;c[v+12>>2]=v;c[v+8>>2]=v}while(0);v=(c[94736]|0)+-1|0;c[94736]=v;if(!v)b=379368|0;else{i=w;return}while(1){b=c[b>>2]|0;if(!b)break;else b=b+8|0}c[94736]=-1;i=w;return}function Cfa(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;if(a){d=ea(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;b=Afa(d)|0;if(!b){i=e;return b|0}if(!(c[b+-4>>2]&3)){i=e;return b|0}Cga(b|0,0,d|0)|0;i=e;return b|0}function Dfa(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;do if(a){if(b>>>0>4294967231){c[(td()|0)>>2]=12;d=0;break}if(b>>>0<11)d=16;else d=b+11&-8;d=tga(a+-8|0,d)|0;if(d){d=d+8|0;break}d=Afa(b)|0;if(!d)d=0;else{f=c[a+-4>>2]|0;f=(f&-8)-((f&3|0)==0?8:4)|0;Aga(d|0,a|0,(f>>>0>>0?f:b)|0)|0;Bfa(a)}}else d=Afa(b)|0;while(0);i=e;return d|0}function Efa(a,b){a=a|0;b=b|0;var c=0;c=i;if(a>>>0<9)a=Afa(b)|0;else a=uga(a,b)|0;i=c;return a|0}function Ffa(a){a=a|0;return (a+-48|0)>>>0<10|0}function Gfa(a){a=a|0;if((a|0)==32)a=1;else a=(a+-9|0)>>>0<5;return a&1|0}function Hfa(a){a=a|0;return (a+-65|0)>>>0<26|0} +function qF(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=i;v=a[b+434>>0]|0;D=f+4|0;A=c[D>>2]|0;E=b+621|0;F=a[E>>0]|0;G=F&255;y=((d[f+11>>0]|0)+7|0)>>>3;B=b+380|0;x=c[B>>2]|0;C=b+384|0;z=c[C>>2]|0;u=v&255;if(!((u&8|0)==0|v<<24>>24==8)){if(!A)f=0;else{j=z;g=0;f=0;do{j=j+1|0;t=a[j>>0]|0;w=t&255;f=(t<<24>>24>-1?w:256-w|0)+f|0;g=g+1|0}while((g|0)!=(A|0))}if((a[b+620>>0]|0)==2){g=f&65535;f=f>>>10&4194240;if(F<<24>>24){j=c[b+624>>2]|0;h=b+628|0;l=0;do{if(!(a[j+l>>0]|0)){w=e[(c[h>>2]|0)+(l<<1)>>1]|0;f=(ea(w,f)|0)>>>8;g=(ea(w,g)|0)>>>8}l=l+1|0}while((l|0)<(G|0))}j=e[c[b+636>>2]>>1]|0;f=ea(j,f)|0;if(f>>>0>33553927)f=2147483647;else f=(f>>>3<<10)+((ea(j,g)|0)>>>3)|0}}else f=2147483647;if(v<<24>>24!=16)if(u&16){p=b+620|0;if((a[p>>0]|0)==2){h=f&65535;j=f>>>10&4194240;if(F<<24>>24){n=c[b+624>>2]|0;g=b+632|0;o=0;do{if((a[n+o>>0]|0)==1){w=e[(c[g>>2]|0)+(o<<1)>>1]|0;j=(ea(w,j)|0)>>>8;h=(ea(w,h)|0)>>>8}o=o+1|0}while((o|0)<(G|0))}g=e[(c[b+640>>2]|0)+2>>1]|0;j=ea(g,j)|0;if(j>>>0>33553927)m=2147483647;else m=(j>>>3<<10)+((ea(g,h)|0)>>>3)|0}else m=f;k=z+1|0;q=b+388|0;j=c[q>>2]|0;g=j+1|0;if(!y){n=g;h=0;j=k;g=0}else{l=y+1|0;n=j+l|0;j=g;h=0;o=k;g=0;while(1){t=a[o>>0]|0;a[j>>0]=t;w=t&255;g=(t<<24>>24>-1?w:256-w|0)+g|0;h=h+1|0;if(h>>>0>=y>>>0)break;else{j=j+1|0;o=o+1|0}}h=y;j=z+l|0}a:do if(h>>>0>>0){o=k;while(1){w=(d[j>>0]|0)-(d[o>>0]|0)|0;a[n>>0]=w;w=w&255;g=(w>>>0<128?w:256-w|0)+g|0;if(g>>>0>m>>>0)break a;h=h+1|0;if(h>>>0>=A>>>0)break;else{n=n+1|0;o=o+1|0;j=j+1|0}}}while(0);if((a[p>>0]|0)==2){h=g&65535;j=g>>>10&4194240;if(F<<24>>24){n=c[b+624>>2]|0;g=b+632|0;o=0;do{if((a[n+o>>0]|0)==1){w=e[(c[g>>2]|0)+(o<<1)>>1]|0;j=(ea(w,j)|0)>>>8;h=(ea(w,h)|0)>>>8}o=o+1|0}while((o|0)<(G|0))}g=e[(c[b+640>>2]|0)+2>>1]|0;j=ea(g,j)|0;if(j>>>0>33553927)g=2147483647;else g=(j>>>3<<10)+((ea(g,h)|0)>>>3)|0}if(g>>>0>>0){j=c[q>>2]|0;f=g}else j=z}else j=z;else{o=z+1|0;k=b+388|0;j=c[k>>2]|0;h=j+1|0;if(!y){g=h;h=0;j=o}else{n=y+1|0;g=j+n|0;j=0;l=o;while(1){a[h>>0]=a[l>>0]|0;j=j+1|0;if(j>>>0>=y>>>0)break;else{h=h+1|0;l=l+1|0}}h=y;j=z+n|0}if(h>>>0>>0){l=h;h=o;while(1){a[g>>0]=(d[j>>0]|0)-(d[h>>0]|0);l=l+1|0;if((l|0)==(A|0))break;else{g=g+1|0;h=h+1|0;j=j+1|0}}}j=c[k>>2]|0}if(v<<24>>24!=32){if(u&32){m=b+620|0;if((a[m>>0]|0)==2){l=f&65535;g=f>>>10&4194240;if(F<<24>>24){n=c[b+624>>2]|0;h=b+632|0;o=0;do{if((a[n+o>>0]|0)==2){w=e[(c[h>>2]|0)+(o<<1)>>1]|0;g=(ea(w,g)|0)>>>8;l=(ea(w,l)|0)>>>8}o=o+1|0}while((o|0)<(G|0))}h=e[(c[b+640>>2]|0)+4>>1]|0;g=ea(h,g)|0;if(g>>>0>33553927)o=2147483647;else o=(g>>>3<<10)+((ea(h,l)|0)>>>3)|0}else o=f;p=b+392|0;if(!A)g=0;else{n=z;h=c[p>>2]|0;l=x;k=0;g=0;do{l=l+1|0;h=h+1|0;n=n+1|0;w=(d[n>>0]|0)-(d[l>>0]|0)|0;a[h>>0]=w;w=w&255;g=(w>>>0<128?w:256-w|0)+g|0;k=k+1|0}while(g>>>0<=o>>>0&k>>>0>>0)}if((a[m>>0]|0)==2){l=g&65535;g=g>>>10&4194240;if(F<<24>>24){n=c[b+624>>2]|0;h=b+628|0;o=0;do{if((a[n+o>>0]|0)==2){w=e[(c[h>>2]|0)+(o<<1)>>1]|0;g=(ea(w,g)|0)>>>8;l=(ea(w,l)|0)>>>8}o=o+1|0}while((o|0)<(G|0))}h=e[(c[b+636>>2]|0)+4>>1]|0;g=ea(h,g)|0;if(g>>>0>33553927)g=2147483647;else g=(g>>>3<<10)+((ea(h,l)|0)>>>3)|0}if(g>>>0>>0){j=c[p>>2]|0;f=g}}}else{k=b+392|0;if(A){j=z;g=c[k>>2]|0;h=x;l=0;do{h=h+1|0;g=g+1|0;j=j+1|0;a[g>>0]=(d[j>>0]|0)-(d[h>>0]|0);l=l+1|0}while((l|0)!=(A|0))}j=c[k>>2]|0}if(v<<24>>24!=64)if(u&64){s=b+620|0;if((a[s>>0]|0)==2){l=f&65535;g=f>>>10&4194240;if(F<<24>>24){n=c[b+624>>2]|0;h=b+632|0;o=0;do{if((a[n+o>>0]|0)==3){w=e[(c[h>>2]|0)+(o<<1)>>1]|0;g=(ea(w,g)|0)>>>8;l=(ea(w,l)|0)>>>8}o=o+1|0}while((o|0)<(G|0))}h=e[(c[b+640>>2]|0)+6>>1]|0;g=ea(h,g)|0;if(g>>>0>33553927)r=2147483647;else r=(g>>>3<<10)+((ea(h,l)|0)>>>3)|0}else r=f;q=z+1|0;t=b+396|0;m=c[t>>2]|0;h=x+1|0;n=m+1|0;if(!y){l=0;o=h;h=q;g=0}else{p=y+1|0;o=x+p|0;k=0;l=q;g=0;while(1){w=(d[l>>0]|0)-((d[h>>0]|0)>>>1&255)|0;a[n>>0]=w;w=w&255;g=(w>>>0<128?w:256-w|0)+g|0;k=k+1|0;if(k>>>0>=y>>>0)break;else{n=n+1|0;h=h+1|0;l=l+1|0}}n=m+p|0;l=y;h=z+p|0}b:do if(l>>>0>>0){k=l;l=q;while(1){w=(d[h>>0]|0)-(((d[l>>0]|0)+(d[o>>0]|0)|0)>>>1)|0;a[n>>0]=w;w=w&255;g=(w>>>0<128?w:256-w|0)+g|0;if(g>>>0>r>>>0)break b;k=k+1|0;if(k>>>0>=A>>>0)break;else{n=n+1|0;l=l+1|0;o=o+1|0;h=h+1|0}}}while(0);if((a[s>>0]|0)==2){l=g&65535;g=g>>>10&4194240;if(F<<24>>24){n=c[b+624>>2]|0;h=b+628|0;o=0;do{if(!(a[n+o>>0]|0)){w=e[(c[h>>2]|0)+(o<<1)>>1]|0;g=(ea(w,g)|0)>>>8;l=(ea(w,l)|0)>>>8}o=o+1|0}while((o|0)<(G|0))}h=e[(c[b+636>>2]|0)+6>>1]|0;g=ea(h,g)|0;if(g>>>0>33553927)g=2147483647;else g=(g>>>3<<10)+((ea(h,l)|0)>>>3)|0}if(g>>>0>>0){j=c[t>>2]|0;w=g}else w=f}else w=f;else{h=z+1|0;p=b+396|0;o=c[p>>2]|0;n=x+1|0;j=o+1|0;if(!y){l=j;k=0;g=n;j=h}else{m=y+1|0;g=x+m|0;k=0;l=h;while(1){a[j>>0]=(d[l>>0]|0)-((d[n>>0]|0)>>>1&255);k=k+1|0;if(k>>>0>=y>>>0)break;else{j=j+1|0;n=n+1|0;l=l+1|0}}l=o+m|0;k=y;j=z+m|0}if(k>>>0>>0)while(1){a[l>>0]=(d[j>>0]|0)-(((d[h>>0]|0)+(d[g>>0]|0)|0)>>>1);k=k+1|0;if((k|0)==(A|0))break;else{l=l+1|0;h=h+1|0;g=g+1|0;j=j+1|0}}j=c[p>>2]|0;w=f}if(v<<24>>24!=-128){if(u&128){u=b+620|0;if((a[u>>0]|0)==2){h=w&65535;f=w>>>10&4194240;if(F<<24>>24){g=c[b+624>>2]|0;l=b+632|0;k=0;do{if((a[g+k>>0]|0)==4){v=e[(c[l>>2]|0)+(k<<1)>>1]|0;f=(ea(v,f)|0)>>>8;h=(ea(v,h)|0)>>>8}k=k+1|0}while((k|0)<(G|0))}g=e[(c[b+640>>2]|0)+8>>1]|0;f=ea(g,f)|0;if(f>>>0>33553927)t=2147483647;else t=(f>>>3<<10)+((ea(g,h)|0)>>>3)|0}else t=w;p=z+1|0;v=b+400|0;l=c[v>>2]|0;q=x+1|0;f=l+1|0;if(!y){n=f;g=0;o=q;h=p;f=0}else{m=y+1|0;k=x+m|0;n=f;g=0;h=q;o=p;f=0;while(1){x=(d[o>>0]|0)-(d[h>>0]|0)|0;a[n>>0]=x;x=x&255;f=(x>>>0<128?x:256-x|0)+f|0;g=g+1|0;if(g>>>0>=y>>>0)break;else{n=n+1|0;h=h+1|0;o=o+1|0}}n=l+m|0;g=y;o=k;h=z+m|0}c:do if(g>>>0>>0){s=q;r=n;q=g;m=o;k=h;while(1){n=d[m>>0]|0;h=d[s>>0]|0;g=d[p>>0]|0;l=n-h|0;y=g-h|0;z=(l|0)<0?0-l|0:l;o=(y|0)<0?0-y|0:y;l=y+l|0;l=(l|0)<0?0-l|0:l;if((z|0)>(o|0)|(z|0)>(l|0))g=(o|0)<=(l|0)?n:h;z=(d[k>>0]|0)-g|0;a[r>>0]=z;z=z&255;f=(z>>>0<128?z:256-z|0)+f|0;if(f>>>0>t>>>0)break c;q=q+1|0;if(q>>>0>=A>>>0)break;else{s=s+1|0;r=r+1|0;p=p+1|0;m=m+1|0;k=k+1|0}}}while(0);if((a[u>>0]|0)==2){h=f&65535;f=f>>>10&4194240;if(F<<24>>24){g=c[b+624>>2]|0;k=b+628|0;l=0;do{if((a[g+l>>0]|0)==4){A=e[(c[k>>2]|0)+(l<<1)>>1]|0;f=(ea(A,f)|0)>>>8;h=(ea(A,h)|0)>>>8}l=l+1|0}while((l|0)<(G|0))}g=e[(c[b+636>>2]|0)+8>>1]|0;f=ea(g,f)|0;if(f>>>0>33553927)f=2147483647;else f=(f>>>3<<10)+((ea(g,h)|0)>>>3)|0}if(f>>>0>>0)j=c[v>>2]|0}}else{n=z+1|0;r=b+400|0;l=c[r>>2]|0;m=x+1|0;f=l+1|0;if(!y){j=0;h=m;g=n}else{o=y+1|0;k=x+o|0;j=0;g=m;h=n;while(1){a[f>>0]=(d[h>>0]|0)-(d[g>>0]|0);j=j+1|0;if(j>>>0>=y>>>0)break;else{f=f+1|0;g=g+1|0;h=h+1|0}}f=l+o|0;j=y;h=k;g=z+o|0}if(j>>>0>>0){q=m;p=f;o=j;m=h;k=g;while(1){j=d[m>>0]|0;g=d[q>>0]|0;f=d[n>>0]|0;l=j-g|0;y=f-g|0;z=(l|0)<0?0-l|0:l;h=(y|0)<0?0-y|0:y;l=y+l|0;l=(l|0)<0?0-l|0:l;if((z|0)>(h|0)|(z|0)>(l|0))f=(h|0)<=(l|0)?j:g;a[p>>0]=(d[k>>0]|0)-f;o=o+1|0;if((o|0)==(A|0))break;else{q=q+1|0;p=p+1|0;n=n+1|0;m=m+1|0;k=k+1|0}}}j=c[r>>2]|0}WE(b,j,(c[D>>2]|0)+1|0,0);f=c[B>>2]|0;if(f){c[B>>2]=c[C>>2];c[C>>2]=f}oF(b);C=b+480|0;D=(c[C>>2]|0)+1|0;c[C>>2]=D;if(((c[b+476>>2]|0)+-1|0)>>>0>>0)LE(b);if(!(a[E>>0]|0)){i=H;return}h=b+624|0;if((F&255)>1){f=G>>>0>2;g=1;do{F=c[h>>2]|0;a[F+g>>0]=a[F+(g+-1)>>0]|0;g=g+1|0}while((g|0)<(G|0));f=f?G:2}else f=1;a[(c[h>>2]|0)+f>>0]=a[j>>0]|0;i=H;return}function rF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0;f=i;c[b+4>>2]=0;if((d|0)!=90){g=c[b>>2]|0;c[g+20>>2]=13;c[g+24>>2]=90;c[g+28>>2]=d;Id[c[g>>2]&511](b)}if((e|0)==424)e=b;else{g=c[b>>2]|0;c[g+20>>2]=22;c[g+24>>2]=424;c[g+28>>2]=e;Id[c[g>>2]&511](b);e=b}j=c[b>>2]|0;g=b+12|0;d=c[g>>2]|0;Cga(b|0,0,424)|0;c[b>>2]=j;c[g>>2]=d;a[b+16>>0]=0;JH(e);c[b+8>>2]=0;c[b+24>>2]=0;c[b+84>>2]=0;c[b+88>>2]=0;c[b+104>>2]=100;c[b+92>>2]=0;c[b+108>>2]=100;c[b+96>>2]=0;c[b+112>>2]=100;c[b+100>>2]=0;c[b+116>>2]=100;g=b+120|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;c[g+28>>2]=0;c[b+364>>2]=8;c[b+368>>2]=285352;c[b+372>>2]=63;c[b+412>>2]=0;h[b+48>>3]=1.0;c[b+20>>2]=100;i=f;return}function sF(a){a=a|0;var b=0;b=i;NF(a);i=b;return}function tF(b,d){b=b|0;d=d|0;var e=0,f=0;f=i;e=c[b+88>>2]|0;if(e)a[e+128>>0]=d;e=c[b+92>>2]|0;if(e)a[e+128>>0]=d;e=c[b+96>>2]|0;if(e)a[e+128>>0]=d;e=c[b+100>>2]|0;if(e)a[e+128>>0]=d;e=c[b+120>>2]|0;if(e)a[e+273>>0]=d;e=c[b+136>>2]|0;if(e)a[e+273>>0]=d;e=c[b+124>>2]|0;if(e)a[e+273>>0]=d;e=c[b+140>>2]|0;if(e)a[e+273>>0]=d;e=c[b+128>>2]|0;if(e)a[e+273>>0]=d;e=c[b+144>>2]|0;if(e)a[e+273>>0]=d;e=c[b+132>>2]|0;if(e)a[e+273>>0]=d;e=c[b+148>>2]|0;if(!e){i=f;return}a[e+273>>0]=d;i=f;return}function uF(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;d=c[b+20>>2]|0;if((d|0)==102|(d|0)==101){if((c[b+248>>2]|0)>>>0<(c[b+32>>2]|0)>>>0){k=c[b>>2]|0;c[k+20>>2]=69;Id[c[k>>2]&511](b)}Id[c[(c[b+376>>2]|0)+8>>2]&511](b)}else if((d|0)!=103){k=c[b>>2]|0;c[k+20>>2]=21;c[k+24>>2]=d;Id[c[k>>2]&511](b)}g=b+376|0;d=c[g>>2]|0;if(a[d+13>>0]|0){k=b;h=b+392|0;h=c[h>>2]|0;h=h+12|0;h=c[h>>2]|0;Id[h&511](b);h=b+24|0;h=c[h>>2]|0;h=h+16|0;h=c[h>>2]|0;Id[h&511](b);MF(k);i=l;return}h=b+272|0;j=b+8|0;k=b+388|0;do{Id[c[d>>2]&511](b);d=c[h>>2]|0;if(d){f=0;do{e=c[j>>2]|0;if(e){c[e+4>>2]=f;c[e+8>>2]=d;Id[c[e>>2]&511](b)}if(!((Wd[c[(c[k>>2]|0)+4>>2]&511](b,0)|0)<<24>>24)){e=c[b>>2]|0;c[e+20>>2]=25;Id[c[e>>2]&511](b)}f=f+1|0;d=c[h>>2]|0}while(f>>>0>>0)}Id[c[(c[g>>2]|0)+8>>2]&511](b);d=c[g>>2]|0}while((a[d+13>>0]|0)==0);d=b;k=b+392|0;k=c[k>>2]|0;k=k+12|0;k=c[k>>2]|0;Id[k&511](b);k=b+24|0;k=c[k>>2]|0;k=k+16|0;k=c[k>>2]|0;Id[k&511](b);MF(d);i=l;return}function vF(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0;h=i;g=c[a+20>>2]|0;if(!((c[a+248>>2]|0)==0&(g+-101|0)>>>0<3)){j=c[a>>2]|0;c[j+20>>2]=21;c[j+24>>2]=g;Id[c[j>>2]&511](a)}j=a+392|0;$d[c[(c[j>>2]|0)+20>>2]&255](a,b,f);b=c[(c[j>>2]|0)+24>>2]|0;if(!f){i=h;return}while(1){f=f+-1|0;Jd[b&255](a,d[e>>0]|0);if(!f)break;else e=e+1|0}i=h;return}function wF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;e=c[a+20>>2]|0;if(!((c[a+248>>2]|0)==0&(e+-101|0)>>>0<3)){g=c[a>>2]|0;c[g+20>>2]=21;c[g+24>>2]=e;Id[c[g>>2]&511](a)}$d[c[(c[a+392>>2]|0)+20>>2]&255](a,b,d);i=f;return}function xF(a,b){a=a|0;b=b|0;var d=0;d=i;Jd[c[(c[a+392>>2]|0)+24>>2]&255](a,b);i=d;return}function yF(a){a=a|0;var b=0,d=0,e=0;d=i;b=c[a+20>>2]|0;if((b|0)==100)b=a;else{e=c[a>>2]|0;c[e+20>>2]=21;c[e+24>>2]=b;Id[c[e>>2]&511](a);b=a}Id[c[(c[a>>2]|0)+16>>2]&511](b);e=a+24|0;Id[c[(c[e>>2]|0)+8>>2]&511](a);JF(a);Id[c[(c[a+392>>2]|0)+16>>2]&511](a);Id[c[(c[e>>2]|0)+16>>2]&511](a);i=d;return}function zF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;e=b+20|0;f=c[e>>2]|0;if((f|0)!=100){h=c[b>>2]|0;c[h+20>>2]=21;c[h+24>>2]=f;Id[c[h>>2]&511](b)}if(d<<24>>24)tF(b,0);Id[c[(c[b>>2]|0)+16>>2]&511](b);Id[c[(c[b+24>>2]|0)+8>>2]&511](b);HF(b);Id[c[c[b+376>>2]>>2]&511](b);c[b+248>>2]=0;c[e>>2]=(a[b+208>>0]|0)!=0?102:101;i=g;return}function AF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;f=c[b+20>>2]|0;if((f|0)!=101){h=c[b>>2]|0;c[h+20>>2]=21;c[h+24>>2]=f;Id[c[h>>2]&511](b)}g=b+248|0;h=b+32|0;if((c[g>>2]|0)>>>0>=(c[h>>2]|0)>>>0){f=c[b>>2]|0;c[f+20>>2]=126;Jd[c[f+4>>2]&255](b,-1)}f=c[b+8>>2]|0;if(f){c[f+4>>2]=c[g>>2];c[f+8>>2]=c[h>>2];Id[c[f>>2]&511](b)}f=c[b+376>>2]|0;if(a[f+12>>0]|0)Id[c[f+4>>2]&511](b);h=(c[h>>2]|0)-(c[g>>2]|0)|0;c[j>>2]=0;de[c[(c[b+380>>2]|0)+4>>2]&63](b,d,j,h>>>0>>0?h:e);d=c[j>>2]|0;c[g>>2]=(c[g>>2]|0)+d;i=k;return d|0}function BF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;f=c[b+20>>2]|0;if((f|0)!=102){h=c[b>>2]|0;c[h+20>>2]=21;c[h+24>>2]=f;Id[c[h>>2]&511](b)}j=b+248|0;h=c[j>>2]|0;f=c[b+32>>2]|0;if(h>>>0>=f>>>0){e=c[b>>2]|0;c[e+20>>2]=126;Jd[c[e+4>>2]&255](b,-1);e=0;i=k;return e|0}g=c[b+8>>2]|0;if(g){c[g+4>>2]=h;c[g+8>>2]=f;Id[c[g>>2]&511](b)}f=c[b+376>>2]|0;if(a[f+12>>0]|0)Id[c[f+4>>2]&511](b);f=ea(c[b+268>>2]|0,c[b+260>>2]|0)|0;if(f>>>0>e>>>0){e=c[b>>2]|0;c[e+20>>2]=24;Id[c[e>>2]&511](b)}if(!((Wd[c[(c[b+388>>2]|0)+4>>2]&511](b,d)|0)<<24>>24)){e=0;i=k;return e|0}c[j>>2]=(c[j>>2]|0)+f;e=f;i=k;return e|0}function CF(b){b=b|0;var d=0,e=0;d=i;e=Od[c[c[b+4>>2]>>2]&255](b,1,208)|0;c[b+408>>2]=e;c[e>>2]=80;c[e+8>>2]=247;c[e+76>>2]=0;c[e+140>>2]=0;c[e+80>>2]=0;c[e+144>>2]=0;c[e+84>>2]=0;c[e+148>>2]=0;c[e+88>>2]=0;c[e+152>>2]=0;c[e+92>>2]=0;c[e+156>>2]=0;c[e+96>>2]=0;c[e+160>>2]=0;c[e+100>>2]=0;c[e+164>>2]=0;c[e+104>>2]=0;c[e+168>>2]=0;c[e+108>>2]=0;c[e+172>>2]=0;c[e+112>>2]=0;c[e+176>>2]=0;c[e+116>>2]=0;c[e+180>>2]=0;c[e+120>>2]=0;c[e+184>>2]=0;c[e+124>>2]=0;c[e+188>>2]=0;c[e+128>>2]=0;c[e+192>>2]=0;c[e+132>>2]=0;c[e+196>>2]=0;c[e+136>>2]=0;c[e+200>>2]=0;a[e+204>>0]=113;i=d;return}function DF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;h=i;g=a+4|0;d=Od[c[c[g>>2]>>2]&255](a,1,104)|0;c[a+388>>2]=d;c[d>>2]=81;if(!(b<<24>>24)){a=Od[c[(c[g>>2]|0)+4>>2]&255](a,1,1280)|0;c[d+24>>2]=a;c[d+28>>2]=a+128;c[d+32>>2]=a+256;c[d+36>>2]=a+384;c[d+40>>2]=a+512;c[d+44>>2]=a+640;c[d+48>>2]=a+768;c[d+52>>2]=a+896;c[d+56>>2]=a+1024;c[d+60>>2]=a+1152;c[d+64>>2]=0;i=h;return}f=a+76|0;if((c[f>>2]|0)<=0){i=h;return}b=d+64|0;d=0;e=c[a+84>>2]|0;while(1){m=c[(c[g>>2]|0)+20>>2]|0;l=VH(c[e+28>>2]|0,c[e+8>>2]|0)|0;j=e+12|0;k=VH(c[e+32>>2]|0,c[j>>2]|0)|0;c[b+(d<<2)>>2]=Kd[m&31](a,1,0,l,k,c[j>>2]|0)|0;d=d+1|0;if((d|0)>=(c[f>>2]|0))break;else e=e+88|0}i=h;return}function EF(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;h=Od[c[c[b+4>>2]>>2]&255](b,1,12)|0;c[b+396>>2]=h;c[h>>2]=248;g=b+40|0;switch(c[g>>2]|0){case 7:case 3:{if((c[b+36>>2]|0)!=3){f=c[b>>2]|0;c[f+20>>2]=10;Id[c[f>>2]&511](b)}break}case 5:case 4:{if((c[b+36>>2]|0)!=4){f=c[b>>2]|0;c[f+20>>2]=10;Id[c[f>>2]&511](b)}break}case 1:{if((c[b+36>>2]|0)!=1){f=c[b>>2]|0;c[f+20>>2]=10;Id[c[f>>2]&511](b)}break}case 6:case 2:{if((c[b+36>>2]|0)!=3){f=c[b>>2]|0;c[f+20>>2]=10;Id[c[f>>2]&511](b)}break}default:if((c[b+36>>2]|0)<1){f=c[b>>2]|0;c[f+20>>2]=10;Id[c[f>>2]&511](b)}}f=b+244|0;e=b+80|0;if((c[f>>2]|0)!=0?(d=c[e>>2]|0,!((d|0)==6|(d|0)==2)):0){d=c[b>>2]|0;c[d+20>>2]=28;Id[c[d>>2]&511](b)}d=c[e>>2]|0;switch(d|0){case 7:{if((c[b+76>>2]|0)!=3){f=c[b>>2]|0;c[f+20>>2]=11;Id[c[f>>2]&511](b)}d=c[g>>2]|0;if((d|0)==2){b=c[b+84>>2]|0;a[b+140>>0]=1;a[b+228>>0]=1;c[h>>2]=249;c[h+4>>2]=12;i=j;return}else if((d|0)==3){b=c[b+84>>2]|0;a[b+140>>0]=1;a[b+228>>0]=1}else if((d|0)!=7){h=c[b>>2]|0;c[h+20>>2]=28;Id[c[h>>2]&511](b);i=j;return}c[h+4>>2]=13;i=j;return}case 3:{if((c[b+76>>2]|0)!=3){f=c[b>>2]|0;c[f+20>>2]=11;Id[c[f>>2]&511](b)}d=c[g>>2]|0;if((d|0)==3){c[h+4>>2]=13;i=j;return}else if((d|0)==2){c[h>>2]=249;c[h+4>>2]=12;i=j;return}else{h=c[b>>2]|0;c[h+20>>2]=28;Id[c[h>>2]&511](b);i=j;return}}case 1:{if((c[b+76>>2]|0)!=1){f=c[b>>2]|0;c[f+20>>2]=11;Id[c[f>>2]&511](b)}d=c[g>>2]|0;if((d|0)==7|(d|0)==3|(d|0)==1){c[h+4>>2]=8;i=j;return}else if((d|0)==2){c[h>>2]=249;c[h+4>>2]=9;i=j;return}else{h=c[b>>2]|0;c[h+20>>2]=28;Id[c[h>>2]&511](b);i=j;return}}case 6:case 2:{if((c[b+76>>2]|0)!=3){d=c[b>>2]|0;c[d+20>>2]=11;Id[c[d>>2]&511](b);d=c[e>>2]|0}if((c[g>>2]|0)!=(d|0)){h=c[b>>2]|0;c[h+20>>2]=28;Id[c[h>>2]&511](b);i=j;return}d=c[f>>2]|0;if(!d){c[h+4>>2]=10;i=j;return}else if((d|0)==1){c[h+4>>2]=11;i=j;return}else{h=c[b>>2]|0;c[h+20>>2]=28;Id[c[h>>2]&511](b);i=j;return}}case 5:{if((c[b+76>>2]|0)!=4){f=c[b>>2]|0;c[f+20>>2]=11;Id[c[f>>2]&511](b)}d=c[g>>2]|0;if((d|0)==4){c[h>>2]=249;c[h+4>>2]=14;i=j;return}else if((d|0)==5){c[h+4>>2]=13;i=j;return}else{h=c[b>>2]|0;c[h+20>>2]=28;Id[c[h>>2]&511](b);i=j;return}}case 4:{if((c[b+76>>2]|0)!=4){f=c[b>>2]|0;c[f+20>>2]=11;Id[c[f>>2]&511](b)}if((c[g>>2]|0)==4){c[h+4>>2]=13;i=j;return}else{h=c[b>>2]|0;c[h+20>>2]=28;Id[c[h>>2]&511](b);i=j;return}}default:{if(!((d|0)==(c[g>>2]|0)?(c[b+76>>2]|0)==(c[b+36>>2]|0):0)){f=c[b>>2]|0;c[f+20>>2]=28;Id[c[f>>2]&511](b)}c[h+4>>2]=13;i=j;return}}}function FF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;b=a+4|0;d=Od[c[c[b>>2]>>2]&255](a,1,124)|0;c[a+404>>2]=d;c[d>>2]=250;d=a+76|0;if((c[d>>2]|0)<=0){i=g;return}e=0;f=c[a+84>>2]|0;while(1){c[f+84>>2]=Od[c[c[b>>2]>>2]&255](a,1,256)|0;e=e+1|0;if((e|0)>=(c[d>>2]|0))break;else f=f+88|0}i=g;return}function GF(b){b=b|0;var d=0,e=0;e=i;d=Od[c[c[b+4>>2]>>2]&255](b,1,140)|0;c[b+408>>2]=d;c[d>>2]=82;c[d+60>>2]=0;c[d+44>>2]=0;c[d+92>>2]=0;c[d+76>>2]=0;c[d+64>>2]=0;c[d+48>>2]=0;c[d+96>>2]=0;c[d+80>>2]=0;c[d+68>>2]=0;c[d+52>>2]=0;c[d+100>>2]=0;c[d+84>>2]=0;c[d+72>>2]=0;c[d+56>>2]=0;c[d+104>>2]=0;c[d+88>>2]=0;if(!(a[b+252>>0]|0)){i=e;return}c[d+136>>2]=0;i=e;return}function HF(b){b=b|0;var d=0,e=0,f=0;e=i;d=c[b+72>>2]|0;if((d|0)!=8){f=c[b>>2]|0;c[f+20>>2]=16;c[f+24>>2]=d;Id[c[f>>2]&511](b)}if(!(((c[b+32>>2]|0)!=0?(c[b+28>>2]|0)!=0:0)?(c[b+36>>2]|0)>=1:0)){f=c[b>>2]|0;c[f+20>>2]=33;Id[c[f>>2]&511](b)}LF(b,0);if(!(a[b+208>>0]|0)){EF(b);XF(b);WF(b,0)}FF(b);if(!(a[b+209>>0]|0))GF(b);else CF(b);if((c[b+200>>2]|0)>1)d=1;else d=(a[b+210>>0]|0)!=0&1;DF(b,d);IF(b,0);JF(b);Id[c[(c[b+4>>2]|0)+24>>2]&511](b);Id[c[c[b+392>>2]>>2]&511](b);i=e;return}function IF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;j=i;h=b+4|0;e=Od[c[c[h>>2]>>2]&255](b,1,64)|0;c[b+380>>2]=e;c[e>>2]=83;if(a[b+208>>0]|0){i=j;return}if(d<<24>>24){h=c[b>>2]|0;c[h+20>>2]=3;Id[c[h>>2]&511](b);i=j;return}g=b+76|0;if((c[g>>2]|0)<=0){i=j;return}d=e+24|0;e=0;f=c[b+84>>2]|0;while(1){l=ea(c[f+36>>2]|0,c[f+28>>2]|0)|0;k=ea(c[f+40>>2]|0,c[f+12>>2]|0)|0;c[d+(e<<2)>>2]=ce[c[(c[h>>2]|0)+8>>2]&255](b,1,l,k)|0;e=e+1|0;if((e|0)>=(c[g>>2]|0))break;else f=f+88|0}i=j;return}function JF(a){a=a|0;var b=0,d=0;b=i;d=Od[c[c[a+4>>2]>>2]&255](a,1,32)|0;c[a+392>>2]=d;c[d>>2]=251;c[d+4>>2]=252;c[d+8>>2]=253;c[d+12>>2]=254;c[d+16>>2]=255;c[d+20>>2]=53;c[d+24>>2]=84;c[d+28>>2]=0;i=b;return}function KF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;b=a+28|0;if(!((c[b>>2]|0)>>>0<=16777215?(c[a+32>>2]|0)>>>0<=16777215:0)){g=c[a>>2]|0;c[g+20>>2]=42;c[g+24>>2]=65500;Id[c[g>>2]&511](a)}e=c[a+56>>2]|0;f=a+364|0;d=c[f>>2]|0;g=ea(d,c[a+60>>2]|0)|0;if(e>>>0>=g>>>0){c[a+64>>2]=ea(c[b>>2]|0,d)|0;c[a+68>>2]=ea(d,c[a+32>>2]|0)|0;c[a+264>>2]=1;c[a+268>>2]=1;i=h;return}if(e<<1>>>0>=g>>>0){c[a+64>>2]=UH(ea(c[b>>2]|0,d)|0,2)|0;c[a+68>>2]=UH(ea(c[f>>2]|0,c[a+32>>2]|0)|0,2)|0;c[a+264>>2]=2;c[a+268>>2]=2;i=h;return}if((e*3|0)>>>0>=g>>>0){c[a+64>>2]=UH(ea(c[b>>2]|0,d)|0,3)|0;c[a+68>>2]=UH(ea(c[f>>2]|0,c[a+32>>2]|0)|0,3)|0;c[a+264>>2]=3;c[a+268>>2]=3;i=h;return}if(e<<2>>>0>=g>>>0){c[a+64>>2]=UH(ea(c[b>>2]|0,d)|0,4)|0;c[a+68>>2]=UH(ea(c[f>>2]|0,c[a+32>>2]|0)|0,4)|0;c[a+264>>2]=4;c[a+268>>2]=4;i=h;return}if((e*5|0)>>>0>=g>>>0){c[a+64>>2]=UH(ea(c[b>>2]|0,d)|0,5)|0;c[a+68>>2]=UH(ea(c[f>>2]|0,c[a+32>>2]|0)|0,5)|0;c[a+264>>2]=5;c[a+268>>2]=5;i=h;return}if((e*6|0)>>>0>=g>>>0){c[a+64>>2]=UH(ea(c[b>>2]|0,d)|0,6)|0;c[a+68>>2]=UH(ea(c[f>>2]|0,c[a+32>>2]|0)|0,6)|0;c[a+264>>2]=6;c[a+268>>2]=6;i=h;return}if((e*7|0)>>>0>=g>>>0){c[a+64>>2]=UH(ea(c[b>>2]|0,d)|0,7)|0;c[a+68>>2]=UH(ea(c[f>>2]|0,c[a+32>>2]|0)|0,7)|0;c[a+264>>2]=7;c[a+268>>2]=7;i=h;return}if(e<<3>>>0>=g>>>0){c[a+64>>2]=UH(ea(c[b>>2]|0,d)|0,8)|0;c[a+68>>2]=UH(ea(c[f>>2]|0,c[a+32>>2]|0)|0,8)|0;c[a+264>>2]=8;c[a+268>>2]=8;i=h;return}if((e*9|0)>>>0>=g>>>0){c[a+64>>2]=UH(ea(c[b>>2]|0,d)|0,9)|0;c[a+68>>2]=UH(ea(c[f>>2]|0,c[a+32>>2]|0)|0,9)|0;c[a+264>>2]=9;c[a+268>>2]=9;i=h;return}if((e*10|0)>>>0>=g>>>0){c[a+64>>2]=UH(ea(c[b>>2]|0,d)|0,10)|0;c[a+68>>2]=UH(ea(c[f>>2]|0,c[a+32>>2]|0)|0,10)|0;c[a+264>>2]=10;c[a+268>>2]=10;i=h;return}if((e*11|0)>>>0>=g>>>0){c[a+64>>2]=UH(ea(c[b>>2]|0,d)|0,11)|0;c[a+68>>2]=UH(ea(c[f>>2]|0,c[a+32>>2]|0)|0,11)|0;c[a+264>>2]=11;c[a+268>>2]=11;i=h;return}if((e*12|0)>>>0>=g>>>0){c[a+64>>2]=UH(ea(c[b>>2]|0,d)|0,12)|0;c[a+68>>2]=UH(ea(c[f>>2]|0,c[a+32>>2]|0)|0,12)|0;c[a+264>>2]=12;c[a+268>>2]=12;i=h;return}if((e*13|0)>>>0>=g>>>0){c[a+64>>2]=UH(ea(c[b>>2]|0,d)|0,13)|0;c[a+68>>2]=UH(ea(c[f>>2]|0,c[a+32>>2]|0)|0,13)|0;c[a+264>>2]=13;c[a+268>>2]=13;i=h;return}if((e*14|0)>>>0>=g>>>0){c[a+64>>2]=UH(ea(c[b>>2]|0,d)|0,14)|0;c[a+68>>2]=UH(ea(c[f>>2]|0,c[a+32>>2]|0)|0,14)|0;c[a+264>>2]=14;c[a+268>>2]=14;i=h;return}b=ea(c[b>>2]|0,d)|0;if((e*15|0)>>>0>>0){c[a+64>>2]=UH(b,16)|0;c[a+68>>2]=UH(ea(c[f>>2]|0,c[a+32>>2]|0)|0,16)|0;c[a+264>>2]=16;c[a+268>>2]=16;i=h;return}else{c[a+64>>2]=UH(b,15)|0;c[a+68>>2]=UH(ea(c[f>>2]|0,c[a+32>>2]|0)|0,15)|0;c[a+264>>2]=15;c[a+268>>2]=15;i=h;return}}function LF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+2576|0;x=D+2560|0;y=D;C=Od[c[c[b+4>>2]>>2]&255](b,1,32)|0;c[b+376>>2]=C;c[C>>2]=256;c[C+4>>2]=257;c[C+8>>2]=258;a[C+13>>0]=0;B=d<<24>>24==0;if(B){KF(b);d=c[b+364>>2]|0}else{f=b+264|0;d=c[f>>2]|0;e=b+268|0;if((d|0)!=(c[e>>2]|0)){A=c[b>>2]|0;c[A+20>>2]=7;c[A+24>>2]=d;c[A+28>>2]=c[e>>2];Id[c[A>>2]&511](b);d=c[f>>2]|0}c[b+364>>2]=d}A=b+364|0;if((d+-1|0)>>>0>15){z=c[b>>2]|0;c[z+20>>2]=7;c[z+24>>2]=d;c[z+28>>2]=c[A>>2];Id[c[z>>2]&511](b);d=c[A>>2]|0}switch(d|0){case 5:{c[b+368>>2]=286144;g=16;break}case 2:{c[b+368>>2]=286544;g=16;break}case 4:{c[b+368>>2]=286312;g=16;break}case 7:{c[b+368>>2]=285672;g=16;break}case 3:{c[b+368>>2]=286440;g=16;break}case 6:{c[b+368>>2]=285936;g=16;break}default:{c[b+368>>2]=285352;if((d|0)<8)g=16;else d=63}}if((g|0)==16)d=(ea(d,d)|0)+-1|0;z=b+372|0;c[z>>2]=d;u=b+68|0;d=c[u>>2]|0;if(!(((d|0)!=0?(c[b+64>>2]|0)!=0:0)?(c[b+76>>2]|0)>=1:0)){d=c[b>>2]|0;c[d+20>>2]=33;Id[c[d>>2]&511](b);d=c[u>>2]|0}if(!((d|0)<=65500?(c[b+64>>2]|0)<=65500:0)){w=c[b>>2]|0;c[w+20>>2]=42;c[w+24>>2]=65500;Id[c[w>>2]&511](b)}d=c[b+72>>2]|0;if((d+-8|0)>>>0>4){w=c[b>>2]|0;c[w+20>>2]=16;c[w+24>>2]=d;Id[c[w>>2]&511](b)}w=b+76|0;d=c[w>>2]|0;if((d|0)>10){v=c[b>>2]|0;c[v+20>>2]=27;c[v+24>>2]=d;c[v+28>>2]=10;Id[c[v>>2]&511](b);d=c[w>>2]|0}s=b+256|0;c[s>>2]=1;t=b+260|0;c[t>>2]=1;m=b+84|0;if((d|0)>0){g=d;d=1;j=1;k=0;l=c[m>>2]|0;while(1){e=l+8|0;f=c[e>>2]|0;h=l+12|0;if((f+-1|0)>>>0<=3?(n=c[h>>2]|0,(n+-1|0)>>>0<=3):0)e=n;else{g=c[b>>2]|0;c[g+20>>2]=19;Id[c[g>>2]&511](b);g=c[w>>2]|0;j=c[s>>2]|0;f=c[e>>2]|0;d=c[t>>2]|0;e=c[h>>2]|0}j=(j|0)>(f|0)?j:f;c[s>>2]=j;d=(d|0)>(e|0)?d:e;c[t>>2]=d;k=k+1|0;if((k|0)>=(g|0))break;else l=l+88|0}if((g|0)>0){n=b+264|0;o=b+212|0;p=b+268|0;q=b+64|0;r=0;m=c[m>>2]|0;while(1){c[m+4>>2]=r;j=c[n>>2]|0;k=(a[o>>0]|0)!=0?8:4;a:do if((j|0)>(k|0))d=1;else{g=c[s>>2]|0;e=c[m+8>>2]|0;f=1;while(1){d=f<<1;if((g|0)%(ea(d,e)|0)|0){d=f;break a}if((ea(d,j)|0)>(k|0))break;else f=d}}while(0);l=ea(d,j)|0;h=m+36|0;c[h>>2]=l;j=c[p>>2]|0;b:do if((j|0)>(k|0))d=1;else{g=c[t>>2]|0;e=c[m+12>>2]|0;f=1;while(1){d=f<<1;if((g|0)%(ea(d,e)|0)|0){d=f;break b}if((ea(d,j)|0)>(k|0))break;else f=d}}while(0);g=ea(d,j)|0;e=m+40|0;c[e>>2]=g;d=g<<1;if((l|0)<=(d|0)){d=l<<1;if((g|0)>(d|0))c[e>>2]=d}else c[h>>2]=d;k=m+8|0;v=ea(c[k>>2]|0,c[q>>2]|0)|0;c[m+28>>2]=UH(v,ea(c[A>>2]|0,c[s>>2]|0)|0)|0;v=m+12|0;j=ea(c[v>>2]|0,c[u>>2]|0)|0;c[m+32>>2]=UH(j,ea(c[A>>2]|0,c[t>>2]|0)|0)|0;k=ea(ea(c[k>>2]|0,c[q>>2]|0)|0,c[h>>2]|0)|0;c[m+44>>2]=UH(k,ea(c[A>>2]|0,c[s>>2]|0)|0)|0;v=ea(ea(c[v>>2]|0,c[u>>2]|0)|0,c[e>>2]|0)|0;c[m+48>>2]=UH(v,ea(c[A>>2]|0,c[t>>2]|0)|0)|0;a[m+52>>0]=0;r=r+1|0;if((r|0)>=(c[w>>2]|0))break;else m=m+88|0}d=c[t>>2]|0}}else d=1;c[b+272>>2]=UH(c[u>>2]|0,ea(c[A>>2]|0,d)|0)|0;u=b+204|0;d=c[u>>2]|0;if(d){v=b+200|0;if((c[v>>2]|0)<1){d=c[b>>2]|0;c[d+20>>2]=20;c[d+24>>2]=0;Id[c[d>>2]&511](b);d=c[u>>2]|0}if((c[d+20>>2]|0)==0?(c[d+24>>2]|0)==63:0){a[b+252>>0]=0;e=c[w>>2]|0;if((e|0)>0){Cga(x|0,0,((e|0)>1?e:1)|0)|0;g=0}else g=0}else{a[b+252>>0]=1;e=c[w>>2]|0;if((e|0)>0){Cga(y|0,-1,e<<8|0)|0;g=1}else g=1}if((c[v>>2]|0)<1){f=g;d=e}else{s=b+252|0;t=1;while(1){r=c[d>>2]|0;if((r+-1|0)>>>0>3){q=c[b>>2]|0;c[q+20>>2]=27;c[q+24>>2]=r;c[q+28>>2]=4;Id[c[q>>2]&511](b)}f=(r|0)>0;if(f){e=0;do{g=c[d+(e<<2)+4>>2]|0;if(!((g|0)>=0?(g|0)<(c[w>>2]|0):0)){q=c[b>>2]|0;c[q+20>>2]=20;c[q+24>>2]=t;Id[c[q>>2]&511](b)}do if((e|0)>0){if((g|0)>(c[d+(e+-1<<2)+4>>2]|0))break;q=c[b>>2]|0;c[q+20>>2]=20;c[q+24>>2]=t;Id[c[q>>2]&511](b)}while(0);e=e+1|0}while((e|0)!=(r|0))}k=c[d+20>>2]|0;n=c[d+24>>2]|0;o=c[d+28>>2]|0;p=c[d+32>>2]|0;do if(!(a[s>>0]|0)){if((k|0)!=0|(n|0)!=63|(o|0)!=0|(p|0)!=0){q=c[b>>2]|0;c[q+20>>2]=18;c[q+24>>2]=t;Id[c[q>>2]&511](b)}if(f){e=0;do{g=x+(c[d+(e<<2)+4>>2]|0)|0;if(a[g>>0]|0){q=c[b>>2]|0;c[q+20>>2]=20;c[q+24>>2]=t;Id[c[q>>2]&511](b)}a[g>>0]=1;e=e+1|0}while((e|0)!=(r|0))}}else{if(!(k>>>0<=63?!((n|0)<(k|0)|(n|0)>63|(o|0)<0|(o|0)>10|(p|0)<0|(p|0)>10):0)){q=c[b>>2]|0;c[q+20>>2]=18;c[q+24>>2]=t;Id[c[q>>2]&511](b)}q=(k|0)==0;do if(q){if(!n)break;h=c[b>>2]|0;c[h+20>>2]=18;c[h+24>>2]=t;Id[c[h>>2]&511](b)}else{if((r|0)==1)break;h=c[b>>2]|0;c[h+20>>2]=18;c[h+24>>2]=t;Id[c[h>>2]&511](b)}while(0);if(!f)break;l=(o|0)==0;j=(p|0)==(o+-1|0);m=0;do{h=c[d+(m<<2)+4>>2]|0;do if(q)g=0;else{if((c[y+(h<<8)>>2]|0)>=0){g=k;break}g=c[b>>2]|0;c[g+20>>2]=18;c[g+24>>2]=t;Id[c[g>>2]&511](b);g=k}while(0);c:do if((g|0)<=(n|0)){if(!j){if(!l)while(1){f=c[b>>2]|0;c[f+20>>2]=18;c[f+24>>2]=t;Id[c[f>>2]&511](b);c[y+(h<<8)+(g<<2)>>2]=p;if((g|0)<(n|0))g=g+1|0;else break c}while(1){e=y+(h<<8)+(g<<2)|0;if((c[e>>2]|0)>=0){f=c[b>>2]|0;c[f+20>>2]=18;c[f+24>>2]=t;Id[c[f>>2]&511](b)}c[e>>2]=p;if((g|0)<(n|0))g=g+1|0;else break c}}if(l)while(1){e=y+(h<<8)+(g<<2)|0;if((c[e>>2]|0)>=1){f=c[b>>2]|0;c[f+20>>2]=18;c[f+24>>2]=t;Id[c[f>>2]&511](b)}c[e>>2]=p;if((g|0)<(n|0))g=g+1|0;else break c}while(1){e=y+(h<<8)+(g<<2)|0;f=c[e>>2]|0;do if((f|0)<0){f=c[b>>2]|0;c[f+20>>2]=18;c[f+24>>2]=t;Id[c[f>>2]&511](b)}else{if((o|0)==(f|0))break;f=c[b>>2]|0;c[f+20>>2]=18;c[f+24>>2]=t;Id[c[f>>2]&511](b)}while(0);c[e>>2]=p;if((g|0)<(n|0))g=g+1|0;else break}}while(0);m=m+1|0}while((m|0)!=(r|0))}while(0);if((t|0)<(c[v>>2]|0)){t=t+1|0;d=d+36|0}else break}f=a[s>>0]|0;d=c[w>>2]|0}g=(d|0)>0;if(!(f<<24>>24)){if(g){e=0;do{if(!(a[x+e>>0]|0)){d=c[b>>2]|0;c[d+20>>2]=46;Id[c[d>>2]&511](b);d=c[w>>2]|0}e=e+1|0}while((e|0)<(d|0))}}else if(g){e=0;do{if((c[y+(e<<8)>>2]|0)<0){d=c[b>>2]|0;c[d+20>>2]=46;Id[c[d>>2]&511](b);d=c[w>>2]|0}e=e+1|0}while((e|0)<(d|0))}if((c[A>>2]|0)<8){h=c[u>>2]|0;if((c[v>>2]|0)>0){j=0;d=0;do{if((j|0)!=(d|0)){e=h+(d*36|0)+0|0;f=h+(j*36|0)+0|0;g=e+36|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0))}e=c[z>>2]|0;if((c[h+(d*36|0)+20>>2]|0)<=(e|0)){f=h+(d*36|0)+24|0;if((c[f>>2]|0)>(e|0))c[f>>2]=e;d=d+1|0}j=j+1|0}while((j|0)<(c[v>>2]|0))}else d=0;c[v>>2]=d}}else{a[b+252>>0]=0;c[b+200>>2]=1}d=b+210|0;e=a[d>>0]|0;f=b+209|0;do if(!(e<<24>>24))if(!(a[f>>0]|0)){if((a[b+252>>0]|0)==0?((c[A>>2]|0)+-2|0)>>>0>=6:0){e=0;break}a[d>>0]=1;e=1}else e=0;else a[f>>0]=0;while(0);do if(!B){d=C+16|0;if(!(e<<24>>24)){c[d>>2]=2;e=0;break}else{c[d>>2]=1;break}}else c[C+16>>2]=0;while(0);c[C+28>>2]=0;c[C+20>>2]=0;d=c[b+200>>2]|0;if(!(e<<24>>24)){c[C+24>>2]=d;i=D;return}else{c[C+24>>2]=d<<1;i=D;return}}function MF(b){b=b|0;var d=0,e=0;e=i;d=c[b+4>>2]|0;if(!d){i=e;return}Jd[c[d+36>>2]&255](b,1);d=b+20|0;if(!(a[b+16>>0]|0)){c[d>>2]=100;i=e;return}else{c[d>>2]=200;c[b+276>>2]=0;i=e;return}}function NF(a){a=a|0;var b=0,d=0,e=0;e=i;b=a+4|0;d=c[b>>2]|0;if(d)Id[c[d+40>>2]&511](a);c[b>>2]=0;c[a+20>>2]=0;i=e;return}function OF(b){b=b|0;var d=0;d=i;b=Od[c[c[b+4>>2]>>2]&255](b,0,130)|0;a[b+128>>0]=0;i=d;return b|0}function PF(b){b=b|0;var d=0;d=i;b=Od[c[c[b+4>>2]>>2]&255](b,0,274)|0;a[b+273>>0]=0;i=d;return b|0}function QF(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;j=d+20|0;g=c[j>>2]|0;if((g|0)!=100){h=c[d>>2]|0;c[h+20>>2]=21;c[h+24>>2]=g;Id[c[h>>2]&511](d)}g=d+88|0;h=c[g>>2]|0;if(!h){h=OF(d)|0;c[g>>2]=h}f=f<<24>>24==0;if(f){g=0;do{l=((ea(c[277352+(g<<2)>>2]|0,e)|0)+50|0)/100|0;l=(l|0)<1?1:l;b[h+(g<<1)>>1]=(l|0)>32767?32767:l&65535;g=g+1|0}while((g|0)!=64)}else{g=0;do{l=((ea(c[277352+(g<<2)>>2]|0,e)|0)+50|0)/100|0;l=(l|0)<1?1:l;l=(l|0)>32767?32767:l;b[h+(g<<1)>>1]=(l|0)>255?255:l&65535;g=g+1|0}while((g|0)!=64)}a[h+128>>0]=0;g=c[j>>2]|0;if((g|0)!=100){l=c[d>>2]|0;c[l+20>>2]=21;c[l+24>>2]=g;Id[c[l>>2]&511](d)}g=d+92|0;h=c[g>>2]|0;if(!h){h=OF(d)|0;c[g>>2]=h}if(f){g=0;do{d=((ea(c[277608+(g<<2)>>2]|0,e)|0)+50|0)/100|0;d=(d|0)<1?1:d;b[h+(g<<1)>>1]=(d|0)>32767?32767:d&65535;g=g+1|0}while((g|0)!=64);e=h+128|0;a[e>>0]=0;i=k;return}else{g=0;do{d=((ea(c[277608+(g<<2)>>2]|0,e)|0)+50|0)/100|0;d=(d|0)<1?1:d;d=(d|0)>32767?32767:d;b[h+(g<<1)>>1]=(d|0)>255?255:d&65535;g=g+1|0}while((g|0)!=64);e=h+128|0;a[e>>0]=0;i=k;return}}function RF(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;b=(b|0)<1?1:b;b=(b|0)>100?100:b;if((b|0)<50)b=5e3/(b|0)|0;else b=200-(b<<1)|0;QF(a,b,c);i=d;return}function SF(d){d=d|0;var e=0,f=0,g=0;f=i;e=c[d+20>>2]|0;if((e|0)!=100){g=c[d>>2]|0;c[g+20>>2]=21;c[g+24>>2]=e;Id[c[g>>2]&511](d)}e=d+84|0;if(!(c[e>>2]|0))c[e>>2]=Od[c[c[d+4>>2]>>2]&255](d,0,880)|0;c[d+56>>2]=1;c[d+60>>2]=1;g=d+72|0;c[g>>2]=8;QF(d,50,1);IR(d,d+120|0,277864,277888);IR(d,d+136|0,277944,277968);IR(d,d+124|0,277904,277928);IR(d,d+140|0,278136,278160);a[d+152>>0]=0;a[d+168>>0]=1;a[d+184>>0]=5;a[d+153>>0]=0;a[d+169>>0]=1;a[d+185>>0]=5;a[d+154>>0]=0;a[d+170>>0]=1;a[d+186>>0]=5;a[d+155>>0]=0;a[d+171>>0]=1;a[d+187>>0]=5;a[d+156>>0]=0;a[d+172>>0]=1;a[d+188>>0]=5;a[d+157>>0]=0;a[d+173>>0]=1;a[d+189>>0]=5;a[d+158>>0]=0;a[d+174>>0]=1;a[d+190>>0]=5;a[d+159>>0]=0;a[d+175>>0]=1;a[d+191>>0]=5;a[d+160>>0]=0;a[d+176>>0]=1;a[d+192>>0]=5;a[d+161>>0]=0;a[d+177>>0]=1;a[d+193>>0]=5;a[d+162>>0]=0;a[d+178>>0]=1;a[d+194>>0]=5;a[d+163>>0]=0;a[d+179>>0]=1;a[d+195>>0]=5;a[d+164>>0]=0;a[d+180>>0]=1;a[d+196>>0]=5;a[d+165>>0]=0;a[d+181>>0]=1;a[d+197>>0]=5;a[d+166>>0]=0;a[d+182>>0]=1;a[d+198>>0]=5;a[d+167>>0]=0;a[d+183>>0]=1;a[d+199>>0]=5;c[d+204>>2]=0;c[d+200>>2]=0;a[d+208>>0]=0;a[d+209>>0]=(c[g>>2]|0)>8&1;a[d+210>>0]=0;a[d+211>>0]=0;a[d+212>>0]=1;g=d+216|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;a[d+233>>0]=1;a[d+234>>0]=1;a[d+235>>0]=0;b[d+236>>1]=1;b[d+238>>1]=1;c[d+244>>2]=0;TF(d);i=f;return}function TF(b){b=b|0;var d=0,e=0,f=0,g=0;f=i;switch(c[b+40>>2]|0){case 2:{d=c[b+20>>2]|0;if((d|0)!=100){e=c[b>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Id[c[e>>2]&511](b)}c[b+80>>2]=3;a[b+240>>0]=0;a[b+232>>0]=1;c[b+76>>2]=3;b=c[b+84>>2]|0;c[b>>2]=1;c[b+8>>2]=2;c[b+12>>2]=2;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+88>>2]=2;c[b+96>>2]=1;c[b+100>>2]=1;c[b+104>>2]=1;c[b+108>>2]=1;c[b+112>>2]=1;c[b+176>>2]=3;c[b+184>>2]=1;c[b+188>>2]=1;c[b+192>>2]=1;c[b+196>>2]=1;c[b+200>>2]=1;i=f;return}case 7:{d=c[b+20>>2]|0;if((d|0)!=100){e=c[b>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Id[c[e>>2]&511](b)}c[b+80>>2]=7;a[b+240>>0]=0;a[b+232>>0]=1;a[b+233>>0]=2;c[b+76>>2]=3;b=c[b+84>>2]|0;c[b>>2]=1;c[b+8>>2]=2;c[b+12>>2]=2;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+88>>2]=34;c[b+96>>2]=1;c[b+100>>2]=1;c[b+104>>2]=1;c[b+108>>2]=1;c[b+112>>2]=1;c[b+176>>2]=35;c[b+184>>2]=1;c[b+188>>2]=1;c[b+192>>2]=1;c[b+196>>2]=1;c[b+200>>2]=1;i=f;return}case 5:{d=c[b+20>>2]|0;if((d|0)!=100){e=c[b>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Id[c[e>>2]&511](b)}c[b+80>>2]=5;a[b+232>>0]=0;a[b+240>>0]=1;c[b+76>>2]=4;b=c[b+84>>2]|0;c[b>>2]=1;c[b+8>>2]=2;c[b+12>>2]=2;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+88>>2]=2;c[b+96>>2]=1;c[b+100>>2]=1;c[b+104>>2]=1;c[b+108>>2]=1;c[b+112>>2]=1;c[b+176>>2]=3;c[b+184>>2]=1;c[b+188>>2]=1;c[b+192>>2]=1;c[b+196>>2]=1;c[b+200>>2]=1;c[b+264>>2]=4;c[b+272>>2]=2;c[b+276>>2]=2;c[b+280>>2]=0;c[b+284>>2]=0;c[b+288>>2]=0;i=f;return}case 3:{d=c[b+20>>2]|0;if((d|0)!=100){e=c[b>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Id[c[e>>2]&511](b)}c[b+80>>2]=3;a[b+240>>0]=0;a[b+232>>0]=1;c[b+76>>2]=3;b=c[b+84>>2]|0;c[b>>2]=1;c[b+8>>2]=2;c[b+12>>2]=2;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+88>>2]=2;c[b+96>>2]=1;c[b+100>>2]=1;c[b+104>>2]=1;c[b+108>>2]=1;c[b+112>>2]=1;c[b+176>>2]=3;c[b+184>>2]=1;c[b+188>>2]=1;c[b+192>>2]=1;c[b+196>>2]=1;c[b+200>>2]=1;i=f;return}case 4:{d=c[b+20>>2]|0;if((d|0)!=100){e=c[b>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Id[c[e>>2]&511](b)}c[b+80>>2]=4;a[b+232>>0]=0;a[b+240>>0]=1;c[b+76>>2]=4;b=c[b+84>>2]|0;c[b>>2]=67;c[b+8>>2]=1;c[b+12>>2]=1;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+88>>2]=77;c[b+96>>2]=1;c[b+100>>2]=1;c[b+104>>2]=0;c[b+108>>2]=0;c[b+112>>2]=0;c[b+176>>2]=89;c[b+184>>2]=1;c[b+188>>2]=1;c[b+192>>2]=0;c[b+196>>2]=0;c[b+200>>2]=0;c[b+264>>2]=75;c[b+272>>2]=1;c[b+276>>2]=1;c[b+280>>2]=0;c[b+284>>2]=0;c[b+288>>2]=0;i=f;return}case 6:{d=c[b+20>>2]|0;if((d|0)!=100){e=c[b>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Id[c[e>>2]&511](b)}c[b+80>>2]=6;a[b+240>>0]=0;a[b+232>>0]=1;a[b+233>>0]=2;c[b+76>>2]=3;e=c[b+84>>2]|0;c[e>>2]=114;c[e+8>>2]=1;c[e+12>>2]=1;c[e+16>>2]=0;b=(c[b+244>>2]|0)==1&1;c[e+20>>2]=b;c[e+24>>2]=b;c[e+88>>2]=103;c[e+96>>2]=1;c[e+100>>2]=1;c[e+104>>2]=0;c[e+108>>2]=0;c[e+112>>2]=0;c[e+176>>2]=98;c[e+184>>2]=1;c[e+188>>2]=1;c[e+192>>2]=0;c[e+196>>2]=b;c[e+200>>2]=b;i=f;return}case 0:{d=c[b+20>>2]|0;if((d|0)!=100){e=c[b>>2]|0;c[e+20>>2]=21;c[e+24>>2]=d;Id[c[e>>2]&511](b)}c[b+80>>2]=0;a[b+232>>0]=0;a[b+240>>0]=0;d=c[b+36>>2]|0;e=b+76|0;c[e>>2]=d;if((d+-1|0)>>>0>9){g=c[b>>2]|0;c[g+20>>2]=27;c[g+24>>2]=d;c[g+28>>2]=10;Id[c[g>>2]&511](b);d=c[e>>2]|0}if((d|0)<=0){i=f;return}e=c[b+84>>2]|0;b=0;do{c[e+(b*88|0)>>2]=b;c[e+(b*88|0)+8>>2]=1;c[e+(b*88|0)+12>>2]=1;c[e+(b*88|0)+16>>2]=0;c[e+(b*88|0)+20>>2]=0;c[e+(b*88|0)+24>>2]=0;b=b+1|0}while((b|0)!=(d|0));i=f;return}case 1:{d=c[b+20>>2]|0;if((d|0)!=100){g=c[b>>2]|0;c[g+20>>2]=21;c[g+24>>2]=d;Id[c[g>>2]&511](b)}c[b+80>>2]=1;a[b+240>>0]=0;a[b+232>>0]=1;c[b+76>>2]=1;g=c[b+84>>2]|0;c[g>>2]=1;c[g+8>>2]=1;c[g+12>>2]=1;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;i=f;return}default:{g=c[b>>2]|0;c[g+20>>2]=10;Id[c[g>>2]&511](b);i=f;return}}}function UF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;e=c[b+20>>2]|0;if((e|0)!=100){f=c[b>>2]|0;c[f+20>>2]=21;c[f+24>>2]=e;Id[c[f>>2]&511](b)}c[b+80>>2]=d;e=b+232|0;a[e>>0]=0;f=b+240|0;a[f>>0]=0;switch(d|0){case 5:{a[f>>0]=1;c[b+76>>2]=4;d=c[b+84>>2]|0;c[d>>2]=1;c[d+8>>2]=2;c[d+12>>2]=2;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+88>>2]=2;c[d+96>>2]=1;c[d+100>>2]=1;c[d+104>>2]=1;c[d+108>>2]=1;c[d+112>>2]=1;c[d+176>>2]=3;c[d+184>>2]=1;c[d+188>>2]=1;c[d+192>>2]=1;c[d+196>>2]=1;c[d+200>>2]=1;c[d+264>>2]=4;c[d+272>>2]=2;c[d+276>>2]=2;c[d+280>>2]=0;c[d+284>>2]=0;c[d+288>>2]=0;i=g;return}case 4:{a[f>>0]=1;c[b+76>>2]=4;d=c[b+84>>2]|0;c[d>>2]=67;c[d+8>>2]=1;c[d+12>>2]=1;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+88>>2]=77;c[d+96>>2]=1;c[d+100>>2]=1;c[d+104>>2]=0;c[d+108>>2]=0;c[d+112>>2]=0;c[d+176>>2]=89;c[d+184>>2]=1;c[d+188>>2]=1;c[d+192>>2]=0;c[d+196>>2]=0;c[d+200>>2]=0;c[d+264>>2]=75;c[d+272>>2]=1;c[d+276>>2]=1;c[d+280>>2]=0;c[d+284>>2]=0;c[d+288>>2]=0;i=g;return}case 7:{a[e>>0]=1;a[b+233>>0]=2;c[b+76>>2]=3;d=c[b+84>>2]|0;c[d>>2]=1;c[d+8>>2]=2;c[d+12>>2]=2;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+88>>2]=34;c[d+96>>2]=1;c[d+100>>2]=1;c[d+104>>2]=1;c[d+108>>2]=1;c[d+112>>2]=1;c[d+176>>2]=35;c[d+184>>2]=1;c[d+188>>2]=1;c[d+192>>2]=1;c[d+196>>2]=1;c[d+200>>2]=1;i=g;return}case 1:{a[e>>0]=1;c[b+76>>2]=1;d=c[b+84>>2]|0;c[d>>2]=1;c[d+8>>2]=1;c[d+12>>2]=1;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;i=g;return}case 6:{a[e>>0]=1;a[b+233>>0]=2;c[b+76>>2]=3;d=c[b+84>>2]|0;c[d>>2]=114;c[d+8>>2]=1;c[d+12>>2]=1;c[d+16>>2]=0;b=(c[b+244>>2]|0)==1&1;c[d+20>>2]=b;c[d+24>>2]=b;c[d+88>>2]=103;c[d+96>>2]=1;c[d+100>>2]=1;c[d+104>>2]=0;c[d+108>>2]=0;c[d+112>>2]=0;c[d+176>>2]=98;c[d+184>>2]=1;c[d+188>>2]=1;c[d+192>>2]=0;c[d+196>>2]=b;c[d+200>>2]=b;i=g;return}case 3:{a[e>>0]=1;c[b+76>>2]=3;d=c[b+84>>2]|0;c[d>>2]=1;c[d+8>>2]=2;c[d+12>>2]=2;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+88>>2]=2;c[d+96>>2]=1;c[d+100>>2]=1;c[d+104>>2]=1;c[d+108>>2]=1;c[d+112>>2]=1;c[d+176>>2]=3;c[d+184>>2]=1;c[d+188>>2]=1;c[d+192>>2]=1;c[d+196>>2]=1;c[d+200>>2]=1;i=g;return}case 2:{a[f>>0]=1;c[b+76>>2]=3;d=c[b+84>>2]|0;c[d>>2]=82;c[d+8>>2]=1;c[d+12>>2]=1;c[d+16>>2]=0;b=(c[b+244>>2]|0)==1&1;c[d+20>>2]=b;c[d+24>>2]=b;c[d+88>>2]=71;c[d+96>>2]=1;c[d+100>>2]=1;c[d+104>>2]=0;c[d+108>>2]=0;c[d+112>>2]=0;c[d+176>>2]=66;c[d+184>>2]=1;c[d+188>>2]=1;c[d+192>>2]=0;c[d+196>>2]=b;c[d+200>>2]=b;i=g;return}case 0:{e=c[b+36>>2]|0;f=b+76|0;c[f>>2]=e;if((e+-1|0)>>>0>9){d=c[b>>2]|0;c[d+20>>2]=27;c[d+24>>2]=e;c[d+28>>2]=10;Id[c[d>>2]&511](b);e=c[f>>2]|0}if((e|0)<=0){i=g;return}f=c[b+84>>2]|0;d=0;do{c[f+(d*88|0)>>2]=d;c[f+(d*88|0)+8>>2]=1;c[f+(d*88|0)+12>>2]=1;c[f+(d*88|0)+16>>2]=0;c[f+(d*88|0)+20>>2]=0;c[f+(d*88|0)+24>>2]=0;d=d+1|0}while((d|0)<(e|0));i=g;return}default:{d=c[b>>2]|0;c[d+20>>2]=11;Id[c[d>>2]&511](b);i=g;return}}}function VF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;j=c[a+76>>2]|0;b=c[a+20>>2]|0;if((b|0)!=100){g=c[a>>2]|0;c[g+20>>2]=21;c[g+24>>2]=b;Id[c[g>>2]&511](a)}e=(j|0)==3;if(e){g=c[a+80>>2]|0;if((g|0)==7|(g|0)==3)g=10;else h=7}else if((j|0)>4)g=j*6|0;else h=7;if((h|0)==7)g=j<<2|2;f=a+412|0;d=c[f>>2]|0;b=a+416|0;if((d|0)!=0?(c[b>>2]|0)>=(g|0):0)f=d;else{d=(g|0)>10?g:10;c[b>>2]=d;d=Od[c[c[a+4>>2]>>2]&255](a,0,d*36|0)|0;c[f>>2]=d;f=d}c[a+204>>2]=f;c[a+200>>2]=g;do if(e){h=c[a+80>>2]|0;if(!((h|0)==7|(h|0)==3)){c[f>>2]=3;b=0;h=21;break}c[f>>2]=3;b=0;do{c[f+(b<<2)+4>>2]=b;b=b+1|0}while((b|0)!=3);c[f+24>>2]=0;c[f+20>>2]=0;c[f+28>>2]=0;c[f+32>>2]=1;c[f+36>>2]=1;c[f+40>>2]=0;c[f+56>>2]=1;c[f+60>>2]=5;c[f+64>>2]=0;c[f+68>>2]=2;c[f+72>>2]=1;c[f+76>>2]=2;c[f+92>>2]=1;c[f+96>>2]=63;c[f+100>>2]=0;c[f+104>>2]=1;c[f+108>>2]=1;c[f+112>>2]=1;c[f+128>>2]=1;c[f+132>>2]=63;c[f+136>>2]=0;c[f+140>>2]=1;c[f+144>>2]=1;c[f+148>>2]=0;c[f+164>>2]=6;c[f+168>>2]=63;c[f+172>>2]=0;c[f+176>>2]=2;c[f+180>>2]=1;c[f+184>>2]=0;c[f+200>>2]=1;c[f+204>>2]=63;c[f+208>>2]=2;c[f+212>>2]=1;c[f+216>>2]=3;b=0;do{c[f+(b<<2)+220>>2]=b;b=b+1|0}while((b|0)!=3);c[f+240>>2]=0;c[f+236>>2]=0;c[f+244>>2]=1;c[f+248>>2]=0;c[f+252>>2]=1;c[f+256>>2]=2;c[f+272>>2]=1;c[f+276>>2]=63;c[f+280>>2]=1;c[f+284>>2]=0;c[f+288>>2]=1;c[f+292>>2]=1;c[f+308>>2]=1;c[f+312>>2]=63;c[f+316>>2]=1;c[f+320>>2]=0;c[f+324>>2]=1;c[f+328>>2]=0;c[f+344>>2]=1;c[f+348>>2]=63;c[f+352>>2]=1;c[f+356>>2]=0;i=k;return}else{if((j|0)<5){c[f>>2]=j;if((j|0)>0){b=0;h=21;break}else{h=22;break}}else{b=f;d=0}while(1){c[b>>2]=1;c[b+4>>2]=d;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;c[b+32>>2]=1;d=d+1|0;if((d|0)==(j|0))break;else b=b+36|0}e=f+(j*36|0)|0;a=0}while(0);if((h|0)==21)while(1){c[f+(b<<2)+4>>2]=b;b=b+1|0;if((b|0)==(j|0)){h=22;break}else h=21}if((h|0)==22){c[f+24>>2]=0;c[f+20>>2]=0;c[f+28>>2]=0;c[f+32>>2]=1;e=f+36|0;a=1}g=(j|0)>0;if(g){b=e;d=0;while(1){c[b>>2]=1;c[b+4>>2]=d;c[b+20>>2]=1;c[b+24>>2]=5;c[b+28>>2]=0;c[b+32>>2]=2;d=d+1|0;if((d|0)==(j|0))break;else b=b+36|0}b=e+(j*36|0)|0;d=0;while(1){c[b>>2]=1;c[b+4>>2]=d;c[b+20>>2]=6;c[b+24>>2]=63;c[b+28>>2]=0;c[b+32>>2]=2;d=d+1|0;if((d|0)==(j|0))break;else b=b+36|0}f=j<<1;b=e+(f*36|0)|0;d=0;while(1){c[b>>2]=1;c[b+4>>2]=d;c[b+20>>2]=1;c[b+24>>2]=63;c[b+28>>2]=2;c[b+32>>2]=1;d=d+1|0;if((d|0)==(j|0))break;else b=b+36|0}e=e+((f+j|0)*36|0)|0}if(a){c[e>>2]=j;if(g){b=0;do{c[e+(b<<2)+4>>2]=b;b=b+1|0}while((b|0)!=(j|0))}c[e+24>>2]=0;c[e+20>>2]=0;c[e+28>>2]=1;c[e+32>>2]=0;b=e+36|0}else{b=e;d=0;while(1){c[b>>2]=1;c[b+4>>2]=d;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=1;c[b+32>>2]=0;d=d+1|0;if((d|0)==(j|0))break;else b=b+36|0}b=e+(j*36|0)|0}if(g)d=0;else{i=k;return}while(1){c[b>>2]=1;c[b+4>>2]=d;c[b+20>>2]=1;c[b+24>>2]=63;c[b+28>>2]=1;c[b+32>>2]=0;d=d+1|0;if((d|0)==(j|0))break;else b=b+36|0}i=k;return}function WF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;if(!(d<<24>>24))t=b;else{t=c[b>>2]|0;c[t+20>>2]=3;Id[c[t>>2]&511](b);t=b}u=b+4|0;e=Od[c[c[u>>2]>>2]&255](t,1,64)|0;c[b+384>>2]=e;c[e>>2]=85;d=e+4|0;if(!(a[(c[b+400>>2]|0)+8>>0]|0)){c[d>>2]=40;g=b+76|0;if((c[g>>2]|0)<=0){i=v;return}h=b+264|0;j=b+256|0;k=b+260|0;e=e+8|0;f=0;d=c[b+84>>2]|0;while(1){s=ea(c[h>>2]|0,c[d+28>>2]|0)|0;s=ea(s,c[j>>2]|0)|0;c[e+(f<<2)>>2]=ce[c[(c[u>>2]|0)+8>>2]&255](t,1,(s|0)/(c[d+8>>2]|0)|0,c[k>>2]|0)|0;f=f+1|0;if((f|0)>=(c[g>>2]|0))break;else d=d+88|0}i=v;return}c[d>>2]=39;q=c[b+260>>2]|0;r=b+76|0;d=ea(q*20|0,c[r>>2]|0)|0;d=Od[c[c[u>>2]>>2]&255](t,1,d)|0;g=c[b+84>>2]|0;if((c[r>>2]|0)<=0){i=v;return}s=b+264|0;n=b+256|0;o=q*3|0;p=q*12|0;l=e+8|0;m=q*5|0;j=q<<1;h=q<<2;if((q|0)>0)k=0;else{e=0;while(1){h=ea(c[s>>2]|0,c[g+28>>2]|0)|0;h=ea(h,c[n>>2]|0)|0;k=d+(q<<2)|0;Aga(k|0,ce[c[(c[u>>2]|0)+8>>2]&255](t,1,(h|0)/(c[g+8>>2]|0)|0,o)|0,p|0)|0;c[l+(e<<2)>>2]=k;e=e+1|0;if((e|0)>=(c[r>>2]|0))break;else{g=g+88|0;d=d+(m<<2)|0}}i=v;return}while(1){e=ea(c[s>>2]|0,c[g+28>>2]|0)|0;e=ea(e,c[n>>2]|0)|0;e=ce[c[(c[u>>2]|0)+8>>2]&255](t,1,(e|0)/(c[g+8>>2]|0)|0,o)|0;b=d+(q<<2)|0;Aga(b|0,e|0,p|0)|0;f=0;do{c[d+(f<<2)>>2]=c[e+(f+j<<2)>>2];c[d+(f+h<<2)>>2]=c[e+(f<<2)>>2];f=f+1|0}while((f|0)!=(q|0));c[l+(k<<2)>>2]=b;k=k+1|0;if((k|0)>=(c[r>>2]|0))break;else{g=g+88|0;d=d+(m<<2)|0}}i=v;return}function XF(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;t=Od[c[c[b+4>>2]>>2]&255](b,1,112)|0;c[b+400>>2]=t;c[t>>2]=259;c[t+4>>2]=15;u=t+8|0;a[u>>0]=0;if(a[b+211>>0]|0){w=c[b>>2]|0;c[w+20>>2]=26;Id[c[w>>2]&511](b)}l=b+76|0;if((c[l>>2]|0)<=0){i=x;return}m=b+264|0;n=b+268|0;o=b+256|0;p=b+260|0;q=t+52|0;r=b+216|0;s=t+12|0;v=0;w=c[b+84>>2]|0;d=1;while(1){e=ea(c[w+36>>2]|0,c[w+8>>2]|0)|0;e=(e|0)/(c[m>>2]|0)|0;f=ea(c[w+40>>2]|0,c[w+12>>2]|0)|0;f=(f|0)/(c[n>>2]|0)|0;g=c[o>>2]|0;h=c[p>>2]|0;c[q+(v<<2)>>2]=f;j=(h|0)==(f|0);do if((g|0)==(e|0)&j){e=s+(v<<2)|0;if(!(c[r>>2]|0)){c[e>>2]=31;break}else{c[e>>2]=30;a[u>>0]=1;break}}else{k=(g|0)==(e<<1|0);if(k&j){c[s+(v<<2)>>2]=32;d=0;break}if(k&(h|0)==(f<<1|0)){e=s+(v<<2)|0;if(!(c[r>>2]|0)){c[e>>2]=34;break}else{c[e>>2]=33;a[u>>0]=1;break}}if(((g|0)%(e|0)|0|0)==0?((h|0)%(f|0)|0|0)==0:0){c[s+(v<<2)>>2]=35;a[t+(v+92)>>0]=(g|0)/(e|0)|0;a[t+(v+102)>>0]=(h|0)/(f|0)|0;d=0;break}k=c[b>>2]|0;c[k+20>>2]=39;Id[c[k>>2]&511](b)}while(0);v=v+1|0;if((v|0)>=(c[l>>2]|0))break;else w=w+88|0}if((c[r>>2]|0)==0|d<<24>>24!=0){i=x;return}w=c[b>>2]|0;c[w+20>>2]=101;Jd[c[w+4>>2]&255](b,0);i=x;return}function YF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;c[b+4>>2]=0;if((d|0)!=90){g=c[b>>2]|0;c[g+20>>2]=13;c[g+24>>2]=90;c[g+28>>2]=d;Id[c[g>>2]&511](b)}if((e|0)==456)e=b;else{g=c[b>>2]|0;c[g+20>>2]=22;c[g+24>>2]=456;c[g+28>>2]=e;Id[c[g>>2]&511](b);e=b}h=c[b>>2]|0;d=b+12|0;g=c[d>>2]|0;Cga(b|0,0,456)|0;c[b>>2]=h;c[d>>2]=g;a[b+16>>0]=1;JH(e);c[b+8>>2]=0;c[b+24>>2]=0;c[b+276>>2]=0;e=b+144|0;d=e+48|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(d|0));nG(b);kG(b);c[b+20>>2]=200;i=f;return}function ZF(a){a=a|0;var b=0;b=i;NF(a);i=b;return}function _F(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;d=c[a+20>>2]|0;if((d&-2|0)!=200){f=c[a>>2]|0;c[f+20>>2]=21;c[f+24>>2]=d;Id[c[f>>2]&511](a)}d=$F(a)|0;if((d|0)==1){f=1;i=e;return f|0}else if((d|0)==2){if(b<<24>>24){f=c[a>>2]|0;c[f+20>>2]=53;Id[c[f>>2]&511](a)}MF(a);f=2;i=e;return f|0}else{f=d;i=e;return f|0}return 0}function $F(b){b=b|0;var e=0,f=0,g=0,j=0,k=0,l=0;l=i;k=b+20|0;e=c[k>>2]|0;switch(e|0){case 201:{e=b+424|0;break}case 202:{b=1;i=l;return b|0}case 200:{e=b+424|0;Id[c[(c[e>>2]|0)+4>>2]&511](b);Id[c[(c[b+24>>2]|0)+8>>2]&511](b);c[k>>2]=201;break}case 210:case 208:case 207:case 206:case 205:case 204:case 203:{b=Ld[c[c[b+424>>2]>>2]&511](b)|0;i=l;return b|0}default:{k=c[b>>2]|0;c[k+20>>2]=21;c[k+24>>2]=e;Id[c[k>>2]&511](b);b=0;i=l;return b|0}}e=Ld[c[c[e>>2]>>2]&511](b)|0;if((e|0)!=1){b=e;i=l;return b|0}e=c[b+36>>2]|0;if((e|0)==1){c[b+40>>2]=1;c[b+44>>2]=1}else if((e|0)==4){do if(a[b+264>>0]|0){e=d[b+265>>0]|0;if(!e){c[b+40>>2]=4;break}else if((e|0)==2){c[b+40>>2]=5;break}else{g=c[b>>2]|0;c[g+20>>2]=116;c[g+24>>2]=e;Jd[c[g+4>>2]&255](b,-1);c[b+40>>2]=5;break}}else c[b+40>>2]=4;while(0);c[b+44>>2]=4}else if((e|0)==3){g=c[b+196>>2]|0;e=c[g>>2]|0;f=c[g+88>>2]|0;g=c[g+176>>2]|0;j=(e|0)==1;do if(!(j&(f|0)==2&(g|0)==3)){if(j&(f|0)==34&(g|0)==35){c[b+40>>2]=7;break}if((e|0)==82&(f|0)==71&(g|0)==66){c[b+40>>2]=2;break}if((e|0)==114&(f|0)==103&(g|0)==98){c[b+40>>2]=6;break}if(a[b+256>>0]|0){c[b+40>>2]=3;break}if(!(a[b+264>>0]|0)){j=c[b>>2]|0;c[j+24>>2]=e;c[j+28>>2]=f;c[j+32>>2]=g;c[j+20>>2]=113;Jd[c[j+4>>2]&255](b,1);c[b+40>>2]=3;break}e=d[b+265>>0]|0;if(!e){c[b+40>>2]=2;break}else if((e|0)==1){c[b+40>>2]=3;break}else{g=c[b>>2]|0;c[g+20>>2]=116;c[g+24>>2]=e;Jd[c[g+4>>2]&255](b,-1);c[b+40>>2]=3;break}}else c[b+40>>2]=3;while(0);c[b+44>>2]=2}else{c[b+40>>2]=0;c[b+44>>2]=0}g=c[b+392>>2]|0;c[b+48>>2]=g;c[b+52>>2]=g;h[b+56>>3]=1.0;a[b+64>>0]=0;a[b+65>>0]=0;c[b+68>>2]=0;a[b+72>>0]=1;a[b+73>>0]=1;a[b+74>>0]=0;c[b+76>>2]=2;a[b+80>>0]=1;c[b+84>>2]=256;c[b+116>>2]=0;a[b+88>>0]=0;a[b+89>>0]=0;a[b+90>>0]=0;c[k>>2]=202;b=1;i=l;return b|0}function aG(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;d=b+20|0;e=c[d>>2]|0;if((e+-205|0)>>>0<2?(a[b+64>>0]|0)==0:0){if((c[b+120>>2]|0)>>>0<(c[b+96>>2]|0)>>>0){e=c[b>>2]|0;c[e+20>>2]=69;Id[c[e>>2]&511](b)}Id[c[(c[b+408>>2]|0)+4>>2]&511](b);c[d>>2]=210}else f=6;do if((f|0)==6)if((e|0)==210)break;else if((e|0)==207){c[d>>2]=210;break}else{d=c[b>>2]|0;c[d+20>>2]=21;c[d+24>>2]=e;Id[c[d>>2]&511](b);break}while(0);d=b+424|0;while(1){e=c[d>>2]|0;if(a[e+17>>0]|0)break;if(!(Ld[c[e>>2]&511](b)|0)){d=0;f=13;break}}if((f|0)==13){i=g;return d|0}Id[c[(c[b+24>>2]|0)+24>>2]&511](b);MF(b);b=1;i=g;return b|0}function bG(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;d=b+20|0;e=c[d>>2]|0;do if((e|0)==203)f=5;else if((e|0)==202){qG(b);if(!(a[b+64>>0]|0)){c[d>>2]=203;f=5;break}c[d>>2]=207;b=1;i=k;return b|0}else if((e|0)!=204){j=c[b>>2]|0;c[j+20>>2]=21;c[j+24>>2]=e;Id[c[j>>2]&511](b)}while(0);if((f|0)==5){j=b+424|0;a:do if(a[(c[j>>2]|0)+16>>0]|0){g=b+8|0;h=b+296|0;d=c[g>>2]|0;while(1){if(d)Id[c[d>>2]&511](b);e=Ld[c[c[j>>2]>>2]&511](b)|0;if(!e){d=0;break}else if((e|0)==2)break a;d=c[g>>2]|0;if(!((d|0)!=0&(e&-3|0)==1))continue;e=d+4|0;l=(c[e>>2]|0)+1|0;c[e>>2]=l;e=d+8|0;f=c[e>>2]|0;if((l|0)<(f|0))continue;c[e>>2]=(c[h>>2]|0)+f}i=k;return d|0}while(0);c[b+132>>2]=c[b+124>>2]}b=UR(b)|0;i=k;return b|0}function cG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;e=c[a+20>>2]|0;if((e|0)!=205){g=c[a>>2]|0;c[g+20>>2]=21;c[g+24>>2]=e;Id[c[g>>2]&511](a)}g=a+120|0;h=c[g>>2]|0;e=c[a+96>>2]|0;if(h>>>0>=e>>>0){j=c[a>>2]|0;c[j+20>>2]=126;Jd[c[j+4>>2]&255](a,-1);j=0;i=k;return j|0}f=c[a+8>>2]|0;if(f){c[f+4>>2]=h;c[f+8>>2]=e;Id[c[f>>2]&511](a)}c[j>>2]=0;de[c[(c[a+412>>2]|0)+4>>2]&63](a,b,j,d);j=c[j>>2]|0;c[g>>2]=(c[g>>2]|0)+j;i=k;return j|0}function dG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;e=c[a+20>>2]|0;if((e|0)!=206){g=c[a>>2]|0;c[g+20>>2]=21;c[g+24>>2]=e;Id[c[g>>2]&511](a)}h=a+120|0;g=c[h>>2]|0;e=c[a+96>>2]|0;if(g>>>0>=e>>>0){d=c[a>>2]|0;c[d+20>>2]=126;Jd[c[d+4>>2]&255](a,-1);d=0;i=j;return d|0}f=c[a+8>>2]|0;if(f){c[f+4>>2]=g;c[f+8>>2]=e;Id[c[f>>2]&511](a)}e=ea(c[a+292>>2]|0,c[a+284>>2]|0)|0;if(e>>>0>d>>>0){d=c[a>>2]|0;c[d+20>>2]=24;Id[c[d>>2]&511](a)}if(!(Wd[c[(c[a+416>>2]|0)+12>>2]&511](a,b)|0)){d=0;i=j;return d|0}c[h>>2]=(c[h>>2]|0)+e;d=e;i=j;return d|0}function eG(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;d=b+4|0;f=Od[c[c[d>>2]>>2]&255](b,1,192)|0;c[b+432>>2]=f;c[f>>2]=260;c[f+8>>2]=261;c[f+60>>2]=0;c[f+124>>2]=0;c[f+64>>2]=0;c[f+128>>2]=0;c[f+68>>2]=0;c[f+132>>2]=0;c[f+72>>2]=0;c[f+136>>2]=0;c[f+76>>2]=0;c[f+140>>2]=0;c[f+80>>2]=0;c[f+144>>2]=0;c[f+84>>2]=0;c[f+148>>2]=0;c[f+88>>2]=0;c[f+152>>2]=0;c[f+92>>2]=0;c[f+156>>2]=0;c[f+96>>2]=0;c[f+160>>2]=0;c[f+100>>2]=0;c[f+164>>2]=0;c[f+104>>2]=0;c[f+168>>2]=0;c[f+108>>2]=0;c[f+172>>2]=0;c[f+112>>2]=0;c[f+176>>2]=0;c[f+116>>2]=0;c[f+180>>2]=0;c[f+120>>2]=0;c[f+184>>2]=0;a[f+188>>0]=113;if(!(a[b+201>>0]|0)){i=g;return}f=b+36|0;e=Od[c[c[d>>2]>>2]&255](b,1,c[f>>2]<<8)|0;c[b+140>>2]=e;if((c[f>>2]|0)>0)d=0;else{i=g;return}do{Cga(e+(d<<8)|0,-1,256)|0;d=d+1|0}while((d|0)<(c[f>>2]|0));i=g;return}function fG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;l=b+4|0;m=Od[c[c[l>>2]>>2]&255](b,1,116)|0;c[b+416>>2]=m;c[m>>2]=262;c[m+8>>2]=263;c[m+112>>2]=0;if(!(d<<24>>24)){d=Od[c[(c[l>>2]|0)+4>>2]&255](b,1,1280)|0;c[m+32>>2]=d;c[m+36>>2]=d+128;c[m+40>>2]=d+256;c[m+44>>2]=d+384;c[m+48>>2]=d+512;c[m+52>>2]=d+640;c[m+56>>2]=d+768;c[m+60>>2]=d+896;c[m+64>>2]=d+1024;c[m+68>>2]=d+1152;if(!(c[b+400>>2]|0))Cga(d|0,0,1280)|0;c[m+4>>2]=153;c[m+12>>2]=229;c[m+16>>2]=0;i=n;return}h=b+36|0;if((c[h>>2]|0)>0){f=b+201|0;d=m+72|0;j=0;k=c[b+196>>2]|0;while(1){g=k+12|0;e=c[g>>2]|0;if(a[f>>0]|0)e=e*3|0;p=c[(c[l>>2]|0)+20>>2]|0;o=VH(c[k+28>>2]|0,c[k+8>>2]|0)|0;g=VH(c[k+32>>2]|0,c[g>>2]|0)|0;c[d+(j<<2)>>2]=Kd[p&31](b,1,1,o,g,e)|0;j=j+1|0;if((j|0)>=(c[h>>2]|0))break;else k=k+88|0}}else d=m+72|0;c[m+4>>2]=152;c[m+12>>2]=228;c[m+16>>2]=d;i=n;return}function gG(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;l=b+4|0;j=Od[c[c[l>>2]>>2]&255](b,1,32)|0;g=b+444|0;c[g>>2]=j;c[j>>2]=264;e=b+40|0;switch(c[e>>2]|0){case 1:{if((c[b+36>>2]|0)!=1){k=c[b>>2]|0;c[k+20>>2]=11;Id[c[k>>2]&511](b)}break}case 7:case 6:case 3:case 2:{if((c[b+36>>2]|0)!=3){k=c[b>>2]|0;c[k+20>>2]=11;Id[c[k>>2]&511](b)}break}case 5:case 4:{if((c[b+36>>2]|0)!=4){k=c[b>>2]|0;c[k+20>>2]=11;Id[c[k>>2]&511](b)}break}default:if((c[b+36>>2]|0)<1){k=c[b>>2]|0;c[k+20>>2]=11;Id[c[k>>2]&511](b)}}f=b+268|0;if((c[f>>2]|0)!=0?(k=c[e>>2]|0,!((k|0)==6|(k|0)==2)):0){k=c[b>>2]|0;c[k+20>>2]=28;Id[c[k>>2]&511](b)}d=c[b+44>>2]|0;do if((d|0)==2){c[b+100>>2]=3;d=c[e>>2]|0;if((d|0)==2){d=c[f>>2]|0;if((d|0)==1){c[j+4>>2]=22;break}else if(!d){c[j+4>>2]=21;break}else{k=c[b>>2]|0;c[k+20>>2]=28;Id[c[k>>2]&511](b);break}}else if((d|0)==3){c[j+4>>2]=20;hS(b);break}else if((d|0)==1){c[j+4>>2]=19;break}else if((d|0)==7){c[j+4>>2]=20;g=c[g>>2]|0;d=g+8|0;c[d>>2]=Od[c[c[l>>2]>>2]&255](b,1,1024)|0;j=g+12|0;c[j>>2]=Od[c[c[l>>2]>>2]&255](b,1,1024)|0;e=g+16|0;c[e>>2]=Od[c[c[l>>2]>>2]&255](b,1,1024)|0;k=g+20|0;c[k>>2]=Od[c[c[l>>2]>>2]&255](b,1,1024)|0;f=Od[c[c[l>>2]>>2]&255](b,1,1280)|0;l=g+24|0;c[l>>2]=f;d=c[d>>2]|0;e=c[e>>2]|0;g=0;h=-128;while(1){c[d+(g<<2)>>2]=(h*183763|0)+32768>>16;c[(c[j>>2]|0)+(g<<2)>>2]=(h*232260|0)+32768>>16;c[e+(g<<2)>>2]=ea(h,-93603)|0;n=(ea(h,-45107)|0)+32768|0;c[(c[k>>2]|0)+(g<<2)>>2]=n;g=g+1|0;if((g|0)==256)break;else h=h+1|0}Cga(f|0,0,512)|0;d=(c[l>>2]|0)+512|0;c[l>>2]=d;a[d>>0]=0;d=1;do{a[(c[l>>2]|0)+d>>0]=d;d=d+1|0}while((d|0)!=256);d=256;do{a[(c[l>>2]|0)+d>>0]=-1;d=d+1|0}while((d|0)!=768)}else{n=c[b>>2]|0;c[n+20>>2]=28;Id[c[n>>2]&511](b);break}}else if((d|0)==4){c[b+100>>2]=4;d=c[e>>2]|0;if((d|0)==5){c[j+4>>2]=23;hS(b);break}else if((d|0)==4){c[j+4>>2]=24;break}else{n=c[b>>2]|0;c[n+20>>2]=28;Id[c[n>>2]&511](b);break}}else if((d|0)==6){c[b+100>>2]=3;if((c[e>>2]|0)!=6){n=c[b>>2]|0;c[n+20>>2]=28;Id[c[n>>2]&511](b);break}d=c[f>>2]|0;if(!d){c[j+4>>2]=21;break}else if((d|0)==1){c[j+4>>2]=22;break}else{n=c[b>>2]|0;c[n+20>>2]=28;Id[c[n>>2]&511](b);break}}else if((d|0)==1){c[b+100>>2]=1;d=c[e>>2]|0;if((d|0)==7|(d|0)==3|(d|0)==1){f=c[b+36>>2]|0;c[j+4>>2]=16;if((f|0)<=1)break;d=c[b+196>>2]|0;e=1;do{a[d+(e*88|0)+52>>0]=0;e=e+1|0}while((e|0)<(f|0))}else if((d|0)==2){d=c[f>>2]|0;if((d|0)==1)c[j+4>>2]=18;else if(!d)c[j+4>>2]=17;else{n=c[b>>2]|0;c[n+20>>2]=28;Id[c[n>>2]&511](b)}e=c[g>>2]|0;d=Od[c[c[l>>2]>>2]&255](b,1,3072)|0;c[e+28>>2]=d;e=0;do{c[d+(e<<2)>>2]=e*19595;c[d+(e+256<<2)>>2]=e*38470;c[d+(e+512<<2)>>2]=(e*7471|0)+32768;e=e+1|0}while((e|0)!=256)}else{n=c[b>>2]|0;c[n+20>>2]=28;Id[c[n>>2]&511](b);break}}else if((d|0)==(c[e>>2]|0)){c[b+100>>2]=c[b+36>>2];c[j+4>>2]=24;break}else{n=c[b>>2]|0;c[n+20>>2]=28;Id[c[n>>2]&511](b);break}while(0);if(!(a[b+74>>0]|0)){c[b+104>>2]=c[b+100>>2];i=m;return}else{c[b+104>>2]=1;i=m;return}}function hG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;h=i;f=a+4|0;b=Od[c[c[f>>2]>>2]&255](a,1,84)|0;c[a+436>>2]=b;c[b>>2]=265;g=a+36|0;if((c[g>>2]|0)<=0){i=h;return}b=b+44|0;d=0;e=c[a+196>>2]|0;while(1){j=Od[c[c[f>>2]>>2]&255](a,1,256)|0;c[e+84>>2]=j;Cga(j|0,0,256)|0;c[b+(d<<2)>>2]=-1;d=d+1|0;if((d|0)>=(c[g>>2]|0))break;else e=e+88|0}i=h;return}function iG(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;d=b+4|0;g=Od[c[c[d>>2]>>2]&255](b,1,220)|0;c[b+432>>2]=g;c[g>>2]=266;c[g+8>>2]=267;if(!(a[b+201>>0]|0)){c[g+84>>2]=0;c[g+68>>2]=0;c[g+88>>2]=0;c[g+72>>2]=0;c[g+92>>2]=0;c[g+76>>2]=0;c[g+96>>2]=0;c[g+80>>2]=0;i=h;return}f=b+36|0;e=Od[c[c[d>>2]>>2]&255](b,1,c[f>>2]<<8)|0;c[b+140>>2]=e;if((c[f>>2]|0)>0){d=0;do{Cga(e+(d<<8)|0,-1,256)|0;d=d+1|0}while((d|0)<(c[f>>2]|0))}g=g+48|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;i=h;return}function jG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;b=a+392|0;d=c[b>>2]|0;e=ea(d,c[a+48>>2]|0)|0;g=c[a+52>>2]|0;do if(e>>>0>g>>>0){if(e>>>0<=g<<1>>>0){c[a+92>>2]=UH(c[a+28>>2]<<1,d)|0;c[a+96>>2]=UH(c[a+32>>2]<<1,c[b>>2]|0)|0;c[a+288>>2]=2;c[a+292>>2]=2;e=2;break}if(e>>>0<=(g*3|0)>>>0){c[a+92>>2]=UH((c[a+28>>2]|0)*3|0,d)|0;c[a+96>>2]=UH((c[a+32>>2]|0)*3|0,c[b>>2]|0)|0;c[a+288>>2]=3;c[a+292>>2]=3;e=3;break}if(e>>>0<=g<<2>>>0){c[a+92>>2]=UH(c[a+28>>2]<<2,d)|0;c[a+96>>2]=UH(c[a+32>>2]<<2,c[b>>2]|0)|0;c[a+288>>2]=4;c[a+292>>2]=4;e=4;break}if(e>>>0<=(g*5|0)>>>0){c[a+92>>2]=UH((c[a+28>>2]|0)*5|0,d)|0;c[a+96>>2]=UH((c[a+32>>2]|0)*5|0,c[b>>2]|0)|0;c[a+288>>2]=5;c[a+292>>2]=5;e=5;break}if(e>>>0<=(g*6|0)>>>0){c[a+92>>2]=UH((c[a+28>>2]|0)*6|0,d)|0;c[a+96>>2]=UH((c[a+32>>2]|0)*6|0,c[b>>2]|0)|0;c[a+288>>2]=6;c[a+292>>2]=6;e=6;break}if(e>>>0<=(g*7|0)>>>0){c[a+92>>2]=UH((c[a+28>>2]|0)*7|0,d)|0;c[a+96>>2]=UH((c[a+32>>2]|0)*7|0,c[b>>2]|0)|0;c[a+288>>2]=7;c[a+292>>2]=7;e=7;break}if(e>>>0<=g<<3>>>0){c[a+92>>2]=UH(c[a+28>>2]<<3,d)|0;c[a+96>>2]=UH(c[a+32>>2]<<3,c[b>>2]|0)|0;c[a+288>>2]=8;c[a+292>>2]=8;e=8;break}if(e>>>0<=(g*9|0)>>>0){c[a+92>>2]=UH((c[a+28>>2]|0)*9|0,d)|0;c[a+96>>2]=UH((c[a+32>>2]|0)*9|0,c[b>>2]|0)|0;c[a+288>>2]=9;c[a+292>>2]=9;e=9;break}if(e>>>0<=(g*10|0)>>>0){c[a+92>>2]=UH((c[a+28>>2]|0)*10|0,d)|0;c[a+96>>2]=UH((c[a+32>>2]|0)*10|0,c[b>>2]|0)|0;c[a+288>>2]=10;c[a+292>>2]=10;e=10;break}if(e>>>0<=(g*11|0)>>>0){c[a+92>>2]=UH((c[a+28>>2]|0)*11|0,d)|0;c[a+96>>2]=UH((c[a+32>>2]|0)*11|0,c[b>>2]|0)|0;c[a+288>>2]=11;c[a+292>>2]=11;e=11;break}if(e>>>0<=(g*12|0)>>>0){c[a+92>>2]=UH((c[a+28>>2]|0)*12|0,d)|0;c[a+96>>2]=UH((c[a+32>>2]|0)*12|0,c[b>>2]|0)|0;c[a+288>>2]=12;c[a+292>>2]=12;e=12;break}if(e>>>0<=(g*13|0)>>>0){c[a+92>>2]=UH((c[a+28>>2]|0)*13|0,d)|0;c[a+96>>2]=UH((c[a+32>>2]|0)*13|0,c[b>>2]|0)|0;c[a+288>>2]=13;c[a+292>>2]=13;e=13;break}if(e>>>0<=(g*14|0)>>>0){c[a+92>>2]=UH((c[a+28>>2]|0)*14|0,d)|0;c[a+96>>2]=UH((c[a+32>>2]|0)*14|0,c[b>>2]|0)|0;c[a+288>>2]=14;c[a+292>>2]=14;e=14;break}f=c[a+28>>2]|0;if(e>>>0>(g*15|0)>>>0){c[a+92>>2]=UH(f<<4,d)|0;c[a+96>>2]=UH(c[a+32>>2]<<4,c[b>>2]|0)|0;c[a+288>>2]=16;c[a+292>>2]=16;e=16;break}else{c[a+92>>2]=UH(f*15|0,d)|0;c[a+96>>2]=UH((c[a+32>>2]|0)*15|0,c[b>>2]|0)|0;c[a+288>>2]=15;c[a+292>>2]=15;e=15;break}}else{c[a+92>>2]=UH(c[a+28>>2]|0,d)|0;c[a+96>>2]=UH(c[a+32>>2]|0,c[b>>2]|0)|0;c[a+288>>2]=1;c[a+292>>2]=1;e=1}while(0);d=c[a+36>>2]|0;if((d|0)<=0){i=h;return}f=0;b=c[a+196>>2]|0;while(1){c[b+36>>2]=e;c[b+40>>2]=e;f=f+1|0;if((f|0)>=(d|0))break;else b=b+88|0}i=h;return}function kG(b){b=b|0;var d=0,e=0;d=i;e=Od[c[c[b+4>>2]>>2]&255](b,0,24)|0;c[b+424>>2]=e;c[e>>2]=154;c[e+4>>2]=268;c[e+8>>2]=269;c[e+12>>2]=270;a[e+16>>0]=0;a[e+17>>0]=0;c[e+20>>2]=1;i=d;return}function lG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;n=b+4|0;l=Od[c[c[n>>2]>>2]&255](b,1,80)|0;f=b+412|0;c[f>>2]=l;c[l>>2]=86;if(d<<24>>24){k=c[b>>2]|0;c[k+20>>2]=3;Id[c[k>>2]&511](b)}m=b+292|0;e=c[m>>2]|0;if(!(a[(c[b+440>>2]|0)+8>>0]|0)){d=c[b+36>>2]|0;f=e;h=e}else{if((e|0)<2){e=c[b>>2]|0;c[e+20>>2]=48;Id[c[e>>2]&511](b);e=c[m>>2]|0}k=c[f>>2]|0;h=b+36|0;f=Od[c[c[n>>2]>>2]&255](b,1,c[h>>2]<<3)|0;j=k+56|0;c[j>>2]=f;d=c[h>>2]|0;k=k+60|0;c[k>>2]=f+(d<<2);if((d|0)>0){e=e+4|0;g=0;f=c[b+196>>2]|0;while(1){d=ea(c[f+40>>2]|0,c[f+12>>2]|0)|0;d=(d|0)/(c[m>>2]|0)|0;p=ea(d,e)|0;q=Od[c[c[n>>2]>>2]&255](b,1,p<<3)|0;c[(c[j>>2]|0)+(g<<2)>>2]=q+(d<<2);c[(c[k>>2]|0)+(g<<2)>>2]=q+(p+d<<2);g=g+1|0;d=c[h>>2]|0;if((g|0)>=(d|0))break;else f=f+88|0}}h=c[m>>2]|0;f=h;h=h+2|0}j=b+36|0;if((d|0)<=0){i=o;return}g=l+8|0;e=f;d=0;f=c[b+196>>2]|0;while(1){q=(ea(c[f+40>>2]|0,c[f+12>>2]|0)|0)/(e|0)|0;p=ea(c[f+36>>2]|0,c[f+28>>2]|0)|0;q=ea(q,h)|0;c[g+(d<<2)>>2]=ce[c[(c[n>>2]|0)+8>>2]&255](b,1,p,q)|0;d=d+1|0;if((d|0)>=(c[j>>2]|0))break;e=c[m>>2]|0;f=f+88|0}i=o;return}function mG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;l=a+404|0;n=c[l>>2]|0;o=c[a>>2]|0;c[o+20>>2]=124;c[o+24>>2]=n;c[o+28>>2]=b;Jd[c[o+4>>2]&255](a,-1);o=b+1&7|208;j=b+2&7|208;k=b+7&7|208;h=b+6&7|208;a:while(1){g=(n&-8|0)==208;m=(n|0)==(o|0);e=(n|0)==(j|0);f=(n|0)==(k|0);d=(n|0)==(h|0)?2:1;do if((n|0)<192){b=c[a>>2]|0;c[b+20>>2]=99;d=b+24|0;if(g){c[d>>2]=n;c[b+28>>2]=2;Jd[c[b+4>>2]&255](a,4);break}if(m){c[d>>2]=o;c[b+28>>2]=2;Jd[c[b+4>>2]&255](a,4);break}else{c[d>>2]=n;c[b+28>>2]=2;Jd[c[b+4>>2]&255](a,4);break}}else{if(!g){d=9;break a}while(1){if(m|e)b=3;else b=f?2:d;g=c[a>>2]|0;c[g+20>>2]=99;c[g+24>>2]=n;c[g+28>>2]=b;Jd[c[g+4>>2]&255](a,4);if((b|0)==3){b=1;d=18;break a}else if((b|0)==1){d=14;break a}else if((b|0)==2)break}}while(0);if(!((uS(a)|0)<<24>>24)){b=0;d=18;break}n=c[l>>2]|0}if((d|0)==9){b=c[a>>2]|0;c[b+20>>2]=99;d=b+24|0;if(m){c[d>>2]=o;c[b+28>>2]=3;Jd[c[b+4>>2]&255](a,4);a=1;i=p;return a|0}else{c[d>>2]=n;c[b+28>>2]=3;Jd[c[b+4>>2]&255](a,4);a=1;i=p;return a|0}}else if((d|0)==14){c[l>>2]=0;a=1;i=p;return a|0}else if((d|0)==18){i=p;return b|0}return 0}function nG(b){b=b|0;var d=0,e=0,f=0;d=i;f=Od[c[c[b+4>>2]>>2]&255](b,0,168)|0;e=b+428|0;c[e>>2]=f;c[f>>2]=271;c[f+4>>2]=155;c[f+8>>2]=156;c[f+24>>2]=157;c[f+92>>2]=0;c[f+96>>2]=0;c[f+32>>2]=157;c[f+100>>2]=0;c[f+36>>2]=157;c[f+104>>2]=0;c[f+40>>2]=157;c[f+108>>2]=0;c[f+44>>2]=157;c[f+112>>2]=0;c[f+48>>2]=157;c[f+116>>2]=0;c[f+52>>2]=157;c[f+120>>2]=0;c[f+56>>2]=157;c[f+124>>2]=0;c[f+60>>2]=157;c[f+128>>2]=0;c[f+64>>2]=157;c[f+132>>2]=0;c[f+68>>2]=157;c[f+136>>2]=0;c[f+72>>2]=157;c[f+140>>2]=0;c[f+76>>2]=157;c[f+144>>2]=0;c[f+80>>2]=157;c[f+148>>2]=0;c[f+152>>2]=0;c[f+88>>2]=157;c[f+156>>2]=0;c[f+28>>2]=158;c[f+84>>2]=158;e=c[e>>2]|0;c[b+196>>2]=0;c[b+124>>2]=0;c[b+404>>2]=0;a[e+12>>0]=0;a[e+13>>0]=0;c[e+20>>2]=0;c[e+160>>2]=0;i=d;return}function oG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;g=c[a+428>>2]|0;f=(c[(c[a+4>>2]|0)+48>>2]|0)+-20|0;d=(f|0)<(d|0)?f:d;f=(b|0)==224;if(d)if(f&d>>>0<14){e=14;d=159}else{e=(b|0)==238&d>>>0<12?12:d;d=159}else{e=0;d=f|(b|0)==238?158:157}if((b|0)==254){c[g+24>>2]=d;c[g+92>>2]=e;i=h;return}if((b&-16|0)==224){b=b+-224|0;c[g+28+(b<<2)>>2]=d;c[g+96+(b<<2)>>2]=e;i=h;return}else{f=c[a>>2]|0;c[f+20>>2]=70;c[f+24>>2]=b;Id[c[f>>2]&511](a);i=h;return}}function pG(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;d=c[b+20>>2]|0;if((d|0)!=202){w=c[b>>2]|0;c[w+20>>2]=21;c[w+24>>2]=d;Id[c[w>>2]&511](b)}jG(b);e=c[b+196>>2]|0;w=b+36|0;d=c[w>>2]|0;r=(d|0)>0;if(r){n=b+280|0;s=c[b+288>>2]|0;o=a[b+72>>0]|0;t=o<<24>>24!=0?8:4;u=b+284|0;v=c[b+292>>2]|0;if((s|0)>(t|0)){k=0;m=e;while(1){h=m+36|0;c[h>>2]=s;a:do if((v|0)>(t|0))l=1;else{f=c[u>>2]|0;g=c[m+12>>2]|0;j=1;while(1){l=j<<1;if((f|0)%(ea(l,g)|0)|0){l=j;break a}if((ea(v,l)|0)>(t|0))break;else j=l}}while(0);g=ea(v,l)|0;f=m+40|0;c[f>>2]=g;l=g<<1;if((s|0)<=(l|0)){l=s<<1;if((g|0)>(l|0))c[f>>2]=l}else c[h>>2]=l;k=k+1|0;if((k|0)>=(d|0))break;else m=m+88|0}}else{p=0;q=e;while(1){g=c[n>>2]|0;f=c[q+8>>2]|0;j=1;while(1){l=j<<1;if((g|0)%(ea(l,f)|0)|0){l=j;break}if((ea(s,l)|0)>(t|0))break;else j=l}m=ea(s,l)|0;k=q+36|0;c[k>>2]=m;g=o<<24>>24!=0?8:4;b:do if((v|0)>(g|0))l=1;else{f=c[u>>2]|0;j=c[q+12>>2]|0;h=1;while(1){l=h<<1;if((f|0)%(ea(l,j)|0)|0){l=h;break b}if((ea(v,l)|0)>(g|0))break;else h=l}}while(0);g=ea(v,l)|0;f=q+40|0;c[f>>2]=g;l=g<<1;if((m|0)<=(l|0)){l=m<<1;if((g|0)>(l|0))c[f>>2]=l}else c[k>>2]=l;p=p+1|0;if((p|0)>=(d|0))break;else q=q+88|0}}if(r){f=b+28|0;g=b+280|0;h=b+392|0;j=b+32|0;k=b+284|0;l=0;while(1){d=ea(ea(c[e+8>>2]|0,c[f>>2]|0)|0,c[e+36>>2]|0)|0;c[e+44>>2]=UH(d,ea(c[h>>2]|0,c[g>>2]|0)|0)|0;d=ea(ea(c[e+12>>2]|0,c[j>>2]|0)|0,c[e+40>>2]|0)|0;c[e+48>>2]=UH(d,ea(c[h>>2]|0,c[k>>2]|0)|0)|0;l=l+1|0;d=c[w>>2]|0;if((l|0)>=(d|0))break;else e=e+88|0}}}switch(c[b+44>>2]|0){case 6:case 2:{c[b+100>>2]=3;d=3;break}case 5:case 4:{c[b+100>>2]=4;d=4;break}case 1:{c[b+100>>2]=1;d=1;break}case 7:case 3:{c[b+100>>2]=3;d=3;break}default:c[b+100>>2]=d}c[b+104>>2]=(a[b+74>>0]|0)==0?d:1;if(!((BS(b)|0)<<24>>24)){c[b+108>>2]=1;i=x;return}else{c[b+108>>2]=c[b+284>>2];i=x;return}}function qG(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;l=b+4|0;j=Od[c[c[l>>2]>>2]&255](b,1,28)|0;c[b+408>>2]=j;c[j>>2]=272;c[j+4>>2]=273;a[j+8>>0]=0;d=c[b+192>>2]|0;if((d|0)!=8){k=c[b>>2]|0;c[k+20>>2]=16;c[k+24>>2]=d;Id[c[k>>2]&511](b)}pG(b);d=Od[c[c[l>>2]>>2]&255](b,1,1408)|0;f=b+300|0;c[f>>2]=d+256;Cga(d|0,0,256)|0;e=0;do{a[d+(e+256)>>0]=e;e=e+1|0}while((e|0)!=256);Cga(d+512|0,-1,384)|0;Cga(d+896|0,0,384)|0;g=d+1280|0;d=(c[f>>2]|0)+0|0;e=g+128|0;do{a[g>>0]=a[d>>0]|0;g=g+1|0;d=d+1|0}while((g|0)<(e|0));if(((c[b+96>>2]|0)!=0?(c[b+92>>2]|0)!=0:0)?(h=b+100|0,(c[h>>2]|0)>=1):0)g=h;else{g=c[b>>2]|0;c[g+20>>2]=33;Id[c[g>>2]&511](b);g=b+100|0}k=j+12|0;c[k>>2]=0;h=j+16|0;a[h>>0]=BS(b)|0;f=j+20|0;c[f>>2]=0;d=j+24|0;c[d>>2]=0;do if(!(a[b+74>>0]|0)){a[b+88>>0]=0;a[b+89>>0]=0;a[b+90>>0]=0;e=b+65|0}else{if(!(a[b+64>>0]|0)){a[b+88>>0]=0;a[b+89>>0]=0;a[b+90>>0]=0}e=b+65|0;if(a[e>>0]|0){j=c[b>>2]|0;c[j+20>>2]=48;Id[c[j>>2]&511](b)}do if((c[g>>2]|0)==3){if(c[b+116>>2]|0){a[b+89>>0]=1;break}if(!(a[b+80>>0]|0)){a[b+88>>0]=1;break}else{a[b+90>>0]=1;break}}else{a[b+88>>0]=1;a[b+89>>0]=0;a[b+90>>0]=0;c[b+116>>2]=0}while(0);if(a[b+88>>0]|0){SH(b);c[f>>2]=c[b+448>>2]}if((a[b+90>>0]|0)==0?(a[b+89>>0]|0)==0:0)break;TH(b);c[d>>2]=c[b+448>>2]}while(0);if(!(a[e>>0]|0)){if(!(a[h>>0]|0)){gG(b);tG(b)}else rG(b);sG(b,a[b+90>>0]|0)}hG(b);if(!(a[b+202>>0]|0))iG(b);else eG(b);f=b+424|0;if(!(a[(c[f>>2]|0)+16>>0]|0))d=(a[b+64>>0]|0)!=0&1;else d=1;fG(b,d);if(!(a[e>>0]|0))lG(b,0);Id[c[(c[l>>2]|0)+24>>2]&511](b);Id[c[(c[f>>2]|0)+8>>2]&511](b);e=c[b+8>>2]|0;if(!e){i=m;return}if(a[b+64>>0]|0){i=m;return}if(!(a[(c[f>>2]|0)+16>>0]|0)){i=m;return}d=c[b+36>>2]|0;if(a[b+201>>0]|0)d=(d*3|0)+2|0;c[e+4>>2]=0;c[e+8>>2]=ea(c[b+296>>2]|0,d)|0;c[e+12>>2]=0;c[e+16>>2]=(a[b+90>>0]|0)!=0?3:2;c[k>>2]=(c[k>>2]|0)+1;i=m;return}function rG(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;j=b+4|0;d=Od[c[c[j>>2]>>2]&255](b,1,48)|0;g=b+440|0;c[g>>2]=d;c[d>>2]=274;a[d+8>>0]=0;e=ea(c[b+100>>2]|0,c[b+92>>2]|0)|0;c[d+40>>2]=e;f=d+4|0;if((c[b+284>>2]|0)==2){c[f>>2]=41;c[d+12>>2]=36;c[d+32>>2]=Od[c[(c[j>>2]|0)+4>>2]&255](b,1,e)|0;d=c[g>>2]|0}else{c[f>>2]=42;c[d+12>>2]=37;c[d+32>>2]=0}k=d+16|0;c[k>>2]=Od[c[c[j>>2]>>2]&255](b,1,1024)|0;e=d+20|0;c[e>>2]=Od[c[c[j>>2]>>2]&255](b,1,1024)|0;g=d+24|0;c[g>>2]=Od[c[c[j>>2]>>2]&255](b,1,1024)|0;h=d+28|0;c[h>>2]=Od[c[c[j>>2]>>2]&255](b,1,1024)|0;d=c[e>>2]|0;g=c[g>>2]|0;e=0;f=-128;while(1){c[(c[k>>2]|0)+(e<<2)>>2]=(f*91881|0)+32768>>16;c[d+(e<<2)>>2]=(f*116130|0)+32768>>16;c[g+(e<<2)>>2]=ea(f,-46802)|0;j=(ea(f,-22553)|0)+32768|0;c[(c[h>>2]|0)+(e<<2)>>2]=j;e=e+1|0;if((e|0)==256)break;else f=f+1|0}i=l;return}function sG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;f=b+4|0;e=Od[c[c[f>>2]>>2]&255](b,1,28)|0;c[b+420>>2]=e;c[e>>2]=87;j=e+8|0;c[j>>2]=0;k=e+12|0;c[k>>2]=0;if(!(a[b+74>>0]|0)){i=l;return}h=c[b+284>>2]|0;g=e+16|0;c[g>>2]=h;e=c[f>>2]|0;if(!(d<<24>>24)){j=ea(c[b+100>>2]|0,c[b+92>>2]|0)|0;c[k>>2]=ce[c[e+8>>2]&255](b,1,j,h)|0;i=l;return}else{d=c[e+16>>2]|0;f=ea(c[b+100>>2]|0,c[b+92>>2]|0)|0;k=VH(c[b+96>>2]|0,h)|0;c[j>>2]=Kd[d&31](b,1,0,f,k,c[g>>2]|0)|0;i=l;return}}function tG(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;d=b+4|0;o=Od[c[c[d>>2]>>2]&255](b,1,160)|0;c[b+440>>2]=o;c[o>>2]=275;c[o+4>>2]=43;a[o+8>>0]=0;if(a[b+272>>0]|0){w=c[b>>2]|0;c[w+20>>2]=26;Id[c[w>>2]&511](b)}e=b+36|0;if((c[e>>2]|0)<=0){i=x;return}f=b+288|0;g=b+292|0;h=b+280|0;j=b+284|0;k=o+100|0;l=o+52|0;m=b+92|0;n=o+12|0;v=0;w=c[b+196>>2]|0;while(1){p=ea(c[w+36>>2]|0,c[w+8>>2]|0)|0;p=(p|0)/(c[f>>2]|0)|0;q=ea(c[w+40>>2]|0,c[w+12>>2]|0)|0;q=(q|0)/(c[g>>2]|0)|0;r=c[h>>2]|0;s=c[j>>2]|0;c[k+(v<<2)>>2]=q;do if(!(a[w+52>>0]|0))c[l+(v<<2)>>2]=38;else{t=(q|0)==(s|0);if((p|0)==(r|0)&t){c[l+(v<<2)>>2]=39;break}u=(p<<1|0)==(r|0);do if(u&t)c[l+(v<<2)>>2]=40;else{if(u&(q<<1|0)==(s|0)){c[l+(v<<2)>>2]=41;break}if(((r|0)%(p|0)|0|0)==0?((s|0)%(q|0)|0|0)==0:0){c[l+(v<<2)>>2]=42;a[o+(v+140)>>0]=(r|0)/(p|0)|0;a[o+(v+150)>>0]=(s|0)/(q|0)|0;break}u=c[b>>2]|0;c[u+20>>2]=39;Id[c[u>>2]&511](b)}while(0);t=c[(c[d>>2]|0)+8>>2]|0;u=VH(c[m>>2]|0,c[h>>2]|0)|0;c[n+(v<<2)>>2]=ce[t&255](b,1,u,c[j>>2]|0)|0}while(0);v=v+1|0;if((v|0)>=(c[e>>2]|0))break;else w=w+88|0}i=x;return}function uG(a){a=a|0;c[a>>2]=276;c[a+4>>2]=88;c[a+8>>2]=277;c[a+12>>2]=89;c[a+16>>2]=278;c[a+104>>2]=0;c[a+108>>2]=0;c[a+20>>2]=0;c[a+112>>2]=284528;c[a+116>>2]=126;c[a+120>>2]=0;c[a+124>>2]=0;c[a+128>>2]=0;return a|0}function vG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0;q=i;f=e+7|0;h=e+1|0;j=e+6|0;k=e+2|0;l=e+5|0;m=e+3|0;n=e+4|0;o=0;p=a;while(1){z=c[b+(o<<2)>>2]|0;A=d[z+e>>0]|0;y=d[z+f>>0]|0;s=+(y+A|0);y=A-y|0;v=+(y|0);A=d[z+h>>0]|0;w=d[z+j>>0]|0;r=+(w+A|0);w=A-w|0;A=d[z+k>>0]|0;x=d[z+l>>0]|0;t=+(x+A|0);x=A-x|0;A=d[z+m>>0]|0;z=d[z+n>>0]|0;u=+(z+A|0);B=s+u;u=s-u;s=r+t;g[p>>2]=s+B+-1024.0;g[p+16>>2]=B-s;t=(r-t+u)*.7071067690849304;g[p+8>>2]=u+t;g[p+24>>2]=u-t;t=+(x+A-z|0);u=+(w+y|0);r=(t-u)*.3826834261417389;t=t*.5411961078643799+r;r=u*1.3065630197525024+r;u=+(x+w|0)*.7071067690849304;s=v+u;u=v-u;g[p+20>>2]=u+t;g[p+12>>2]=u-t;g[p+4>>2]=s+r;g[p+28>>2]=s-r;o=o+1|0;if((o|0)==8){f=7;break}else p=p+32|0}while(1){r=+g[a>>2];A=a+224|0;v=+g[A>>2];E=r+v;v=r-v;z=a+32|0;r=+g[z>>2];w=a+192|0;t=+g[w>>2];D=r+t;t=r-t;e=a+64|0;r=+g[e>>2];x=a+160|0;B=+g[x>>2];u=r+B;B=r-B;y=a+96|0;r=+g[y>>2];b=a+128|0;s=+g[b>>2];C=r+s;F=E+C;C=E-C;E=D+u;g[a>>2]=E+F;g[b>>2]=F-E;u=(D-u+C)*.7071067690849304;g[e>>2]=C+u;g[w>>2]=C-u;s=B+(r-s);r=v+t;u=(s-r)*.3826834261417389;s=s*.5411961078643799+u;u=r*1.3065630197525024+u;B=(t+B)*.7071067690849304;t=v+B;B=v-B;g[x>>2]=B+s;g[y>>2]=B-s;g[z>>2]=t+u;g[A>>2]=t-u;if((f|0)>0){f=f+-1|0;a=a+4|0}else break}i=q;return}function wG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;p=i;f=e+7|0;g=e+1|0;h=e+6|0;j=e+2|0;k=e+5|0;l=e+3|0;m=e+4|0;n=0;o=a;while(1){s=c[b+(n<<2)>>2]|0;q=d[s+e>>0]|0;u=d[s+f>>0]|0;y=u+q|0;u=q-u|0;q=d[s+g>>0]|0;t=d[s+h>>0]|0;x=t+q|0;t=q-t|0;q=d[s+j>>0]|0;r=d[s+k>>0]|0;v=r+q|0;r=q-r|0;q=d[s+l>>0]|0;s=d[s+m>>0]|0;w=s+q|0;z=w+y|0;w=y-w|0;y=v+x|0;c[o>>2]=y+-1024+z;c[o+16>>2]=z-y;v=(x-v+w|0)*181>>8;c[o+8>>2]=v+w;c[o+24>>2]=w-v;s=q-s+r|0;q=t+u|0;v=(s-q|0)*98>>8;s=v+(s*139>>8)|0;q=v+(q*334>>8)|0;t=(r+t|0)*181>>8;r=t+u|0;t=u-t|0;c[o+20>>2]=s+t;c[o+12>>2]=t-s;c[o+4>>2]=q+r;c[o+28>>2]=r-q;n=n+1|0;if((n|0)==8){f=7;break}else o=o+32|0}while(1){w=c[a>>2]|0;z=a+224|0;r=c[z>>2]|0;k=r+w|0;r=w-r|0;w=a+32|0;o=c[w>>2]|0;q=a+192|0;t=c[q>>2]|0;l=t+o|0;t=o-t|0;o=a+64|0;v=c[o>>2]|0;s=a+160|0;x=c[s>>2]|0;e=x+v|0;x=v-x|0;v=a+96|0;y=c[v>>2]|0;j=a+128|0;u=c[j>>2]|0;b=u+y|0;n=b+k|0;b=k-b|0;k=e+l|0;c[a>>2]=n+k;c[j>>2]=n-k;e=(l-e+b|0)*181>>8;c[o>>2]=e+b;c[q>>2]=b-e;u=y-u+x|0;y=t+r|0;q=(u-y|0)*98>>8;u=q+(u*139>>8)|0;y=q+(y*334>>8)|0;t=(x+t|0)*181>>8;x=t+r|0;t=r-t|0;c[s>>2]=u+t;c[v>>2]=t-u;c[w>>2]=y+x;c[z>>2]=x-y;if((f|0)>0){f=f+-1|0;a=a+4|0}else break}i=p;return}function xG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;p=i;f=e+7|0;g=e+1|0;h=e+6|0;j=e+2|0;k=e+5|0;l=e+3|0;m=e+4|0;n=0;o=a;while(1){r=c[b+(n<<2)>>2]|0;B=d[r+e>>0]|0;x=d[r+f>>0]|0;q=x+B|0;A=d[r+g>>0]|0;w=d[r+h>>0]|0;C=w+A|0;z=d[r+j>>0]|0;u=d[r+k>>0]|0;t=u+z|0;y=d[r+l>>0]|0;r=d[r+m>>0]|0;s=r+y|0;v=s+q|0;s=q-s|0;q=t+C|0;t=C-t|0;x=B-x|0;w=A-w|0;u=z-u|0;r=y-r|0;c[o>>2]=(v+q<<2)+-4096;c[o+16>>2]=v-q<<2;q=((s+t|0)*4433|0)+1024|0;c[o+8>>2]=q+(s*6270|0)>>11;c[o+24>>2]=q+(ea(t,-15137)|0)>>11;t=u+x|0;q=r+w|0;s=((q+t|0)*9633|0)+1024|0;t=s+(ea(t,-3196)|0)|0;q=s+(ea(q,-16069)|0)|0;s=ea(r+x|0,-7373)|0;v=ea(u+w|0,-20995)|0;c[o+4>>2]=s+(x*12299|0)+t>>11;c[o+12>>2]=v+(w*25172|0)+q>>11;c[o+20>>2]=v+(u*16819|0)+t>>11;c[o+28>>2]=s+(r*2446|0)+q>>11;n=n+1|0;if((n|0)==8){f=7;break}else o=o+32|0}while(1){k=c[a>>2]|0;C=a+224|0;r=c[C>>2]|0;e=r+k|0;s=a+32|0;j=c[s>>2]|0;x=a+192|0;t=c[x>>2]|0;n=t+j|0;v=a+64|0;l=c[v>>2]|0;y=a+160|0;w=c[y>>2]|0;B=w+l|0;u=a+96|0;o=c[u>>2]|0;z=a+128|0;A=c[z>>2]|0;q=A+o|0;b=e+2+q|0;q=e-q|0;e=B+n|0;B=n-B|0;r=k-r|0;t=j-t|0;w=l-w|0;A=o-A|0;c[a>>2]=b+e>>2;c[z>>2]=b-e>>2;z=((q+B|0)*4433|0)+16384|0;c[v>>2]=z+(q*6270|0)>>15;c[x>>2]=z+(ea(B,-15137)|0)>>15;x=w+r|0;B=A+t|0;z=((B+x|0)*9633|0)+16384|0;x=z+(ea(x,-3196)|0)|0;B=z+(ea(B,-16069)|0)|0;z=ea(A+r|0,-7373)|0;v=ea(w+t|0,-20995)|0;c[s>>2]=z+(r*12299|0)+x>>15;c[u>>2]=v+(t*25172|0)+B>>15;c[y>>2]=v+(w*16819|0)+x>>15;c[C>>2]=z+(A*2446|0)+B>>15;if((f|0)>0){f=f+-1|0;a=a+4|0}else break}i=p;return}function yG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;o=i;Cga(a|0,0,256)|0;f=e+6|0;g=e+1|0;h=e+5|0;j=e+2|0;k=e+4|0;l=e+3|0;m=0;n=a;while(1){v=c[b+(m<<2)>>2]|0;y=d[v+e>>0]|0;q=d[v+f>>0]|0;u=q+y|0;t=d[v+g>>0]|0;p=d[v+h>>0]|0;w=p+t|0;s=d[v+j>>0]|0;r=d[v+k>>0]|0;x=r+s|0;v=d[v+l>>0]|0;q=y-q|0;p=t-p|0;r=s-r|0;s=x+u|0;c[n>>2]=(v+w+s<<2)+-3584;s=((ea(v,-4)|0)+s|0)*2896|0;t=(u-x|0)*7542|0;x=(w-x|0)*2578|0;c[n+8>>2]=t+1024+x+s>>11;u=((u-w|0)*7223|0)+1024|0;c[n+16>>2]=u+x+(ea(w-(v<<1)|0,-5793)|0)>>11;c[n+24>>2]=u-t+s>>11;s=(p+q|0)*7663|0;t=(q-p|0)*1395|0;p=ea(r+p|0,-11295)|0;q=(r+q|0)*5027|0;c[n+4>>2]=1024-t+s+q>>11;c[n+12>>2]=t+1024+s+p>>11;c[n+20>>2]=(r*15326|0)+1024+q+p>>11;m=m+1|0;if((m|0)==7){f=0;break}else n=n+32|0}while(1){n=c[a>>2]|0;t=a+192|0;w=c[t>>2]|0;p=w+n|0;r=a+32|0;q=c[r>>2]|0;y=a+160|0;x=c[y>>2]|0;l=x+q|0;k=a+64|0;s=c[k>>2]|0;e=a+128|0;v=c[e>>2]|0;j=v+s|0;u=a+96|0;b=c[u>>2]|0;w=n-w|0;x=q-x|0;v=s-v|0;s=j+p|0;c[a>>2]=((b+l+s|0)*10700|0)+16384>>15;s=((ea(b,-4)|0)+s|0)*3783|0;q=(p-j|0)*9850|0;j=(l-j|0)*3367|0;c[k>>2]=q+16384+j+s>>15;p=((p-l|0)*9434|0)+16384|0;c[e>>2]=p+j+(ea(l-(b<<1)|0,-7566)|0)>>15;c[t>>2]=p-q+s>>15;t=(x+w|0)*10009|0;s=(w-x|0)*1822|0;x=ea(v+x|0,-14752)|0;w=(v+w|0)*6565|0;c[r>>2]=16384-s+t+w>>15;c[u>>2]=s+16384+t+x>>15;c[y>>2]=(v*20017|0)+16384+w+x>>15;f=f+1|0;if((f|0)==7)break;else a=a+4|0}i=o;return}function zG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;n=i;Cga(a|0,0,256)|0;f=e+5|0;g=e+1|0;h=e+4|0;j=e+2|0;k=e+3|0;l=0;m=a;while(1){p=c[b+(l<<2)>>2]|0;x=d[p+e>>0]|0;r=d[p+f>>0]|0;u=r+x|0;w=d[p+g>>0]|0;o=d[p+h>>0]|0;s=o+w|0;v=d[p+j>>0]|0;p=d[p+k>>0]|0;t=p+v|0;q=t+u|0;r=x-r|0;o=w-o|0;p=v-p|0;c[m>>2]=(q+s<<2)+-3072;c[m+8>>2]=((u-t|0)*10033|0)+1024>>11;c[m+16>>2]=(((ea(s,-2)|0)+q|0)*5793|0)+1024>>11;q=((p+r|0)*2998|0)+1024>>11;c[m+4>>2]=q+(o+r<<2);c[m+12>>2]=r-o-p<<2;c[m+20>>2]=q+(p-o<<2);l=l+1|0;if((l|0)==6){f=0;break}else m=m+32|0}while(1){b=c[a>>2]|0;x=a+160|0;s=c[x>>2]|0;l=s+b|0;r=a+32|0;k=c[r>>2]|0;w=a+128|0;v=c[w>>2]|0;p=v+k|0;o=a+64|0;j=c[o>>2]|0;t=a+96|0;u=c[t>>2]|0;e=u+j|0;q=e+l|0;s=b-s|0;v=k-v|0;u=j-u|0;c[a>>2]=((q+p|0)*14564|0)+16384>>15;c[o>>2]=((l-e|0)*17837|0)+16384>>15;c[w>>2]=(((ea(p,-2)|0)+q|0)*10298|0)+16384>>15;w=(u+s|0)*5331|0;c[r>>2]=((v+s|0)*14564|0)+16384+w>>15;c[t>>2]=((s-v-u|0)*14564|0)+16384>>15;c[x>>2]=((u-v|0)*14564|0)+16384+w>>15;f=f+1|0;if((f|0)==6)break;else a=a+4|0}i=n;return}function AG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;m=i;Cga(a|0,0,256)|0;f=e+4|0;g=e+1|0;h=e+3|0;j=e+2|0;k=0;l=a;while(1){n=c[b+(k<<2)>>2]|0;u=d[n+e>>0]|0;p=d[n+f>>0]|0;r=p+u|0;t=d[n+g>>0]|0;o=d[n+h>>0]|0;q=o+t|0;n=d[n+j>>0]|0;s=q+r|0;p=u-p|0;o=t-o|0;c[l>>2]=(s+n<<3)+-5120;n=(s-(n<<2)|0)*2896|0;q=((r-q|0)*6476|0)+512|0;c[l+8>>2]=q+n>>10;c[l+16>>2]=q-n>>10;n=(o+p|0)*6810|0;c[l+4>>2]=(p*4209|0)+512+n>>10;c[l+12>>2]=(ea(o,-17828)|0)+512+n>>10;k=k+1|0;if((k|0)==5){f=0;break}else l=l+32|0}while(1){e=c[a>>2]|0;t=a+128|0;q=c[t>>2]|0;l=q+e|0;r=a+32|0;k=c[r>>2]|0;u=a+96|0;s=c[u>>2]|0;o=s+k|0;n=a+64|0;p=c[n>>2]|0;j=o+l|0;q=e-q|0;s=k-s|0;c[a>>2]=((j+p|0)*10486|0)+16384>>15;p=(j-(p<<2)|0)*3707|0;o=((l-o|0)*8290|0)+16384|0;c[n>>2]=o+p>>15;c[t>>2]=o-p>>15;t=(s+q|0)*8716|0;c[r>>2]=(q*5387|0)+16384+t>>15;c[u>>2]=(ea(s,-22820)|0)+16384+t>>15;f=f+1|0;if((f|0)==5)break;else a=a+4|0}i=m;return}function BG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;l=i;Cga(a|0,0,256)|0;f=e+3|0;g=e+1|0;h=e+2|0;j=0;k=a;while(1){m=c[b+(j<<2)>>2]|0;r=d[m+e>>0]|0;o=d[m+f>>0]|0;p=o+r|0;q=d[m+g>>0]|0;m=d[m+h>>0]|0;n=m+q|0;o=r-o|0;m=q-m|0;c[k>>2]=(n+p<<4)+-8192;c[k+8>>2]=p-n<<4;n=((m+o|0)*4433|0)+256|0;c[k+4>>2]=n+(o*6270|0)>>9;c[k+12>>2]=n+(ea(m,-15137)|0)>>9;j=j+1|0;if((j|0)==4)break;else k=k+32|0}m=c[a>>2]|0;r=a+96|0;q=c[r>>2]|0;g=m+2+q|0;h=a+32|0;k=c[h>>2]|0;p=a+64|0;o=c[p>>2]|0;b=o+k|0;q=m-q|0;o=k-o|0;c[a>>2]=b+g>>2;c[p>>2]=g-b>>2;p=((o+q|0)*4433|0)+16384|0;c[h>>2]=p+(q*6270|0)>>15;c[r>>2]=p+(ea(o,-15137)|0)>>15;r=a+4|0;o=c[r>>2]|0;p=a+100|0;h=c[p>>2]|0;q=o+2+h|0;b=a+36|0;g=c[b>>2]|0;k=a+68|0;m=c[k>>2]|0;n=m+g|0;h=o-h|0;m=g-m|0;c[r>>2]=n+q>>2;c[k>>2]=q-n>>2;k=((m+h|0)*4433|0)+16384|0;c[b>>2]=k+(h*6270|0)>>15;c[p>>2]=k+(ea(m,-15137)|0)>>15;p=a+8|0;m=c[p>>2]|0;k=a+104|0;b=c[k>>2]|0;h=m+2+b|0;n=a+40|0;q=c[n>>2]|0;r=a+72|0;g=c[r>>2]|0;o=g+q|0;b=m-b|0;g=q-g|0;c[p>>2]=o+h>>2;c[r>>2]=h-o>>2;r=((g+b|0)*4433|0)+16384|0;c[n>>2]=r+(b*6270|0)>>15;c[k>>2]=r+(ea(g,-15137)|0)>>15;k=a+12|0;g=c[k>>2]|0;r=a+108|0;n=c[r>>2]|0;b=g+2+n|0;o=a+44|0;h=c[o>>2]|0;p=a+76|0;q=c[p>>2]|0;m=q+h|0;n=g-n|0;q=h-q|0;c[k>>2]=m+b>>2;c[p>>2]=b-m>>2;p=((q+n|0)*4433|0)+16384|0;c[o>>2]=p+(n*6270|0)>>15;c[r>>2]=p+(ea(q,-15137)|0)>>15;i=l;return}function CG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;Cga(a|0,0,256)|0;j=e+2|0;q=e+1|0;r=c[b>>2]|0;l=d[r+e>>0]|0;g=d[r+j>>0]|0;m=g+l|0;r=d[r+q>>0]|0;n=(m+r<<4)+-6144|0;c[a>>2]=n;c[a+8>>2]=(((ea(r,-2)|0)+m|0)*5793|0)+256>>9;g=((l-g|0)*10033|0)+256>>9;l=a+4|0;c[l>>2]=g;m=a+32|0;r=c[b+4>>2]|0;o=d[r+e>>0]|0;k=d[r+j>>0]|0;h=k+o|0;r=d[r+q>>0]|0;p=(h+r<<4)+-6144|0;c[m>>2]=p;h=(((ea(r,-2)|0)+h|0)*5793|0)+256>>9;c[a+40>>2]=h;k=((o-k|0)*10033|0)+256>>9;c[a+36>>2]=k;b=c[b+8>>2]|0;o=d[b+e>>0]|0;j=d[b+j>>0]|0;e=j+o|0;q=d[b+q>>0]|0;b=(e+q<<4)+-6144|0;e=(((ea(q,-2)|0)+e|0)*5793|0)+256>>9;j=((o-j|0)*10033|0)+256>>9;o=b+n|0;c[a>>2]=((o+p|0)*14564|0)+16384>>15;c[a+64>>2]=(((ea(p,-2)|0)+o|0)*10298|0)+16384>>15;c[m>>2]=((n-b|0)*17837|0)+16384>>15;b=j+g|0;c[l>>2]=((b+k|0)*14564|0)+16384>>15;c[a+68>>2]=(((ea(k,-2)|0)+b|0)*10298|0)+16384>>15;c[a+36>>2]=((g-j|0)*17837|0)+16384>>15;j=a+8|0;b=c[j>>2]|0;g=e+b|0;c[j>>2]=((g+h|0)*14564|0)+16384>>15;c[a+72>>2]=(((ea(h,-2)|0)+g|0)*10298|0)+16384>>15;c[a+40>>2]=((b-e|0)*17837|0)+16384>>15;i=f;return}function DG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;Cga(a|0,0,256)|0;g=c[b>>2]|0;j=d[g+e>>0]|0;k=e+1|0;g=d[g+k>>0]|0;h=g+j|0;g=j-g|0;b=c[b+4>>2]|0;j=d[b+e>>0]|0;e=d[b+k>>0]|0;b=e+j|0;e=j-e|0;c[a>>2]=(b+h<<4)+-8192;c[a+32>>2]=h-b<<4;c[a+4>>2]=e+g<<4;c[a+36>>2]=g-e<<4;i=f;return}function EG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0;f=i;Cga(a|0,0,256)|0;c[a>>2]=((d[(c[b>>2]|0)+e>>0]|0)<<6)+-8192;i=f;return}function FG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;r=i;i=i+32|0;f=r;g=e+8|0;h=e+1|0;j=e+7|0;k=e+2|0;l=e+6|0;m=e+3|0;n=e+5|0;o=e+4|0;p=0;q=a;while(1){A=c[b+(p<<2)>>2]|0;E=d[A+e>>0]|0;t=d[A+g>>0]|0;y=t+E|0;v=d[A+h>>0]|0;u=d[A+j>>0]|0;x=u+v|0;D=d[A+k>>0]|0;w=d[A+l>>0]|0;B=w+D|0;C=d[A+m>>0]|0;s=d[A+n>>0]|0;z=s+C|0;A=d[A+o>>0]|0;t=E-t|0;w=D-w|0;s=C-s|0;C=B+y+z|0;D=A+x|0;c[q>>2]=(C+D<<1)+-2304;c[q+24>>2]=(((ea(D,-2)|0)+C|0)*5793|0)+2048>>12;x=((ea(A,-2)|0)+x|0)*5793|0;A=((y-B|0)*10887|0)+2048|0;c[q+8>>2]=A+((B-z|0)*8875|0)+x>>12;c[q+16>>2]=A+((z-y|0)*2012|0)-x>>12;c[q+12>>2]=((t-w-s|0)*10033|0)+2048>>12;u=(v-u|0)*10033|0;v=(w+t|0)*7447|0;t=(s+t|0)*3962|0;c[q+4>>2]=u+2048+v+t>>12;s=(w-s|0)*11409|0;u=2048-u|0;c[q+20>>2]=u+v-s>>12;c[q+28>>2]=u+t+s>>12;if((p|0)==7){p=8;q=f;continue}else if((p|0)==8){g=7;break}p=p+1|0;q=q+32|0}while(1){k=c[a>>2]|0;B=c[f>>2]|0;s=B+k|0;w=a+32|0;y=c[w>>2]|0;D=a+224|0;A=c[D>>2]|0;t=A+y|0;q=a+64|0;j=c[q>>2]|0;o=a+192|0;x=c[o>>2]|0;p=x+j|0;v=a+96|0;l=c[v>>2]|0;z=a+160|0;C=c[z>>2]|0;e=C+l|0;u=a+128|0;b=c[u>>2]|0;B=k-B|0;x=j-x|0;C=l-C|0;l=p+s+e|0;j=b+t|0;c[a>>2]=((l+j|0)*12945|0)+16384>>15;c[o>>2]=(((ea(j,-2)|0)+l|0)*9154|0)+16384>>15;t=((ea(b,-2)|0)+t|0)*9154|0;b=((s-p|0)*17203|0)+16384|0;c[q>>2]=b+((p-e|0)*14024|0)+t>>15;c[u>>2]=b+((e-s|0)*3179|0)-t>>15;c[v>>2]=((B-x-C|0)*15855|0)+16384>>15;A=(y-A|0)*15855|0;y=(x+B|0)*11768|0;B=(C+B|0)*6262|0;c[w>>2]=A+16384+y+B>>15;C=(x-C|0)*18029|0;A=16384-A|0;c[z>>2]=A+y-C>>15;c[D>>2]=A+B+C>>15;if((g|0)>0){g=g+-1|0;a=a+4|0;f=f+4|0}else break}i=r;return}function GG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;s=i;i=i+64|0;f=s;g=e+9|0;h=e+1|0;j=e+8|0;k=e+2|0;l=e+7|0;m=e+3|0;n=e+6|0;o=e+4|0;p=e+5|0;q=0;r=a;while(1){w=c[b+(q<<2)>>2]|0;H=d[w+e>>0]|0;x=d[w+g>>0]|0;C=x+H|0;G=d[w+h>>0]|0;u=d[w+j>>0]|0;I=u+G|0;F=d[w+k>>0]|0;z=d[w+l>>0]|0;y=z+F|0;E=d[w+m>>0]|0;v=d[w+n>>0]|0;t=v+E|0;D=d[w+o>>0]|0;w=d[w+p>>0]|0;A=w+D|0;B=A+C|0;A=C-A|0;C=t+I|0;t=I-t|0;x=H-x|0;u=G-u|0;z=F-z|0;v=E-v|0;w=D-w|0;c[r>>2]=(C+y+B<<1)+-2560;y=y<<1;c[r+16>>2]=(ea(C-y|0,-3580)|0)+2048+((B-y|0)*9373|0)>>12;y=(A+t|0)*6810|0;c[r+8>>2]=(A*4209|0)+2048+y>>12;c[r+24>>2]=(ea(t,-17828)|0)+2048+y>>12;y=w+x|0;t=u-v|0;c[r+20>>2]=y-(t+z)<<1;z=z<<13;c[r+4>>2]=(x*11443|0)+2048+(u*10323|0)+z+(v*5260|0)+(w*1812|0)>>12;t=(t<<12)-z+((y+t|0)*2531|0)|0;u=((x-w|0)*7791|0)+(ea(v+u|0,-4815)|0)+2048|0;c[r+12>>2]=u+t>>12;c[r+28>>2]=u-t>>12;if((q|0)==9){g=7;break}else if((q|0)==7){q=8;r=f;continue}q=q+1|0;r=r+32|0}while(1){l=c[a>>2]|0;B=c[f+32>>2]|0;b=B+l|0;y=a+32|0;o=c[y>>2]|0;G=c[f>>2]|0;j=G+o|0;v=a+64|0;p=c[v>>2]|0;I=a+224|0;z=c[I>>2]|0;t=z+p|0;F=a+96|0;q=c[F>>2]|0;A=a+192|0;D=c[A>>2]|0;w=D+q|0;H=a+128|0;r=c[H>>2]|0;x=a+160|0;C=c[x>>2]|0;u=C+r|0;e=u+b|0;u=b-u|0;b=w+j|0;w=j-w|0;B=l-B|0;G=o-G|0;z=p-z|0;D=q-D|0;C=r-C|0;c[a>>2]=((b+t+e|0)*10486|0)+16384>>15;t=t<<1;c[H>>2]=(ea(b-t|0,-4582)|0)+16384+((e-t|0)*11997|0)>>15;H=(u+w|0)*8716|0;c[v>>2]=(u*5387|0)+16384+H>>15;c[A>>2]=(ea(w,-22820)|0)+16384+H>>15;A=C+B|0;H=G-D|0;c[x>>2]=((A-(H+z)|0)*10486|0)+16384>>15;z=z*10486|0;c[y>>2]=(B*14647|0)+16384+(G*13213|0)+z+(D*6732|0)+(C*2320|0)>>15;H=(H*5243|0)-z+((A+H|0)*3240|0)|0;G=((B-C|0)*9973|0)+(ea(D+G|0,-6163)|0)+16384|0;c[F>>2]=G+H>>15;c[I>>2]=G-H>>15;if((g|0)>0){g=g+-1|0;a=a+4|0;f=f+4|0}else break}i=s;return}function HG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;t=i;i=i+96|0;f=t;g=e+10|0;h=e+1|0;j=e+9|0;k=e+2|0;l=e+8|0;m=e+3|0;n=e+7|0;o=e+4|0;p=e+6|0;q=e+5|0;r=0;s=a;while(1){D=c[b+(r<<2)>>2]|0;J=d[D+e>>0]|0;G=d[D+g>>0]|0;B=G+J|0;I=d[D+h>>0]|0;F=d[D+j>>0]|0;x=F+I|0;H=d[D+k>>0]|0;C=d[D+l>>0]|0;v=C+H|0;A=d[D+m>>0]|0;y=d[D+n>>0]|0;u=y+A|0;w=d[D+o>>0]|0;z=d[D+p>>0]|0;E=z+w|0;D=d[D+q>>0]|0;G=J-G|0;F=I-F|0;C=H-C|0;y=A-y|0;z=w-z|0;c[s>>2]=(x+B+v+u+E+D<<1)+-2816;D=D<<1;B=B-D|0;x=x-D|0;v=v-D|0;u=u-D|0;D=E-D|0;E=((B+u|0)*11116|0)+((v+D|0)*1649|0)|0;w=(x-u|0)*7587|0;A=(B-x|0)*9746|0;c[s+8>>2]=(ea(u,-8342)|0)+2048+(ea(D,-11395)|0)+w+E>>12;c[s+16>>2]=(x*511|0)+2048+(ea(v,-11116)|0)+(D*4813|0)+A+w>>12;c[s+24>>2]=(ea(B,-13275)|0)+2048+(ea(v,-6461)|0)+A+E>>12;E=(F+G|0)*10538|0;A=(C+G|0)*8756|0;v=(y+G|0)*6263|0;B=ea(C+F|0,-6263)|0;w=ea(y+F|0,-11467)|0;D=ea(z,-8756)|0;x=(y+C|0)*3264|0;C=ea(C,-16294)|0;u=ea(z,-10538)|0;c[s+4>>2]=(ea(G,-14090)|0)+2048+E+A+v+(z*3264|0)>>12;c[s+12>>2]=(F*10456|0)+2048+E+B+w+D>>12;c[s+20>>2]=C+2048+B+A+x+(z*11467|0)>>12;c[s+28>>2]=(y*10695|0)+2048+x+w+v+u>>12;if((r|0)==10){g=7;break}else if((r|0)==7){r=8;s=f;continue}r=r+1|0;s=s+32|0}while(1){l=c[a>>2]|0;b=c[f+64>>2]|0;G=b+l|0;e=a+32|0;o=c[e>>2]|0;u=c[f+32>>2]|0;s=u+o|0;r=a+64|0;p=c[r>>2]|0;y=c[f>>2]|0;z=y+p|0;x=a+96|0;H=c[x>>2]|0;J=a+224|0;D=c[J>>2]|0;q=D+H|0;w=a+128|0;F=c[w>>2]|0;v=a+192|0;B=c[v>>2]|0;A=B+F|0;C=a+160|0;I=c[C>>2]|0;b=l-b|0;u=o-u|0;y=p-y|0;D=H-D|0;B=F-B|0;c[a>>2]=((s+G+z+q+A+I|0)*8666|0)+16384>>15;I=I<<1;G=G-I|0;s=s-I|0;z=z-I|0;q=q-I|0;I=A-I|0;A=((G+q|0)*11759|0)+((z+I|0)*1744|0)|0;F=(s-q|0)*8026|0;H=(G-s|0)*10310|0;c[r>>2]=(ea(q,-8825)|0)+16384+(ea(I,-12054)|0)+F+A>>15;c[w>>2]=(s*540|0)+16384+(ea(z,-11759)|0)+(I*5091|0)+H+F>>15;c[v>>2]=(ea(G,-14043)|0)+16384+(ea(z,-6835)|0)+H+A>>15;v=(u+b|0)*11148|0;A=(y+b|0)*9262|0;H=(D+b|0)*6626|0;z=ea(y+u|0,-6626)|0;G=ea(D+u|0,-12131)|0;w=ea(B,-9262)|0;F=(D+y|0)*3453|0;y=ea(y,-17237)|0;I=ea(B,-11148)|0;c[e>>2]=(ea(b,-14905)|0)+16384+v+A+H+(B*3453|0)>>15;c[x>>2]=(u*11061|0)+16384+v+z+G+w>>15;c[C>>2]=y+16384+z+A+F+(B*12131|0)>>15;c[J>>2]=(D*11314|0)+16384+F+G+H+I>>15;if((g|0)>0){g=g+-1|0;a=a+4|0;f=f+4|0}else break}i=t;return}function IG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;u=i;i=i+128|0;f=u;g=e+11|0;h=e+1|0;k=e+10|0;l=e+2|0;m=e+9|0;n=e+3|0;o=e+8|0;p=e+4|0;q=e+7|0;r=e+5|0;j=e+6|0;s=0;t=a;while(1){A=c[b+(s<<2)>>2]|0;N=d[A+e>>0]|0;F=d[A+g>>0]|0;y=F+N|0;M=d[A+h>>0]|0;w=d[A+k>>0]|0;H=w+M|0;L=d[A+l>>0]|0;E=d[A+m>>0]|0;O=E+L|0;K=d[A+n>>0]|0;z=d[A+o>>0]|0;C=z+K|0;J=d[A+p>>0]|0;B=d[A+q>>0]|0;G=B+J|0;I=d[A+r>>0]|0;A=d[A+j>>0]|0;x=A+I|0;v=x+y|0;x=y-x|0;y=H-G|0;D=C+O|0;C=O-C|0;F=N-F|0;w=M-w|0;E=L-E|0;z=K-z|0;B=J-B|0;A=I-A|0;c[t>>2]=H+-1536+D+G+v;c[t+24>>2]=x-(y+C);c[t+16>>2]=((v-D|0)*10033|0)+4096>>13;c[t+8>>2]=4096-C+y+((x+C|0)*11190|0)>>13;C=(B+w|0)*4433|0;w=C+(w*6270|0)|0;B=C+(ea(B,-15137)|0)|0;C=(E+F|0)*9191|0;x=(z+F|0)*7053|0;y=ea(z+E|0,-1512)|0;D=ea(E,-19165)|0;v=ea(A,-9191)|0;E=ea(A+E|0,-4433)|0;c[t+4>>2]=(ea(F,-4758)|0)+4096+C+x+w+(A*1512|0)>>13;c[t+12>>2]=((F-z|0)*10703|0)+4096+B+E>>13;c[t+20>>2]=D+4096+C+y-B+(A*7053|0)>>13;c[t+28>>2]=(z*5946|0)+4096+y+x-w+v>>13;if((s|0)==7){s=8;t=f;continue}else if((s|0)==11){g=7;break}s=s+1|0;t=t+32|0}while(1){p=c[a>>2]|0;y=c[f+96>>2]|0;A=y+p|0;x=a+32|0;q=c[x>>2]|0;J=c[f+64>>2]|0;e=J+q|0;B=a+64|0;r=c[B>>2]|0;O=c[f+32>>2]|0;o=O+r|0;z=a+96|0;s=c[z>>2]|0;G=c[f>>2]|0;I=G+s|0;M=a+128|0;t=c[M>>2]|0;N=a+224|0;C=c[N>>2]|0;K=C+t|0;F=a+160|0;b=c[F>>2]|0;v=a+192|0;D=c[v>>2]|0;H=D+b|0;L=H+A|0;H=A-H|0;A=e-K|0;w=I+o|0;I=o-I|0;y=p-y|0;J=q-J|0;O=r-O|0;G=s-G|0;C=t-C|0;D=b-D|0;c[a>>2]=((w+e+K+L|0)*7282|0)+8192>>14;c[v>>2]=((H-(A+I)|0)*7282|0)+8192>>14;c[M>>2]=((L-w|0)*8918|0)+8192>>14;c[B>>2]=((A-I|0)*7282|0)+8192+((H+I|0)*9947|0)>>14;B=(C+J|0)*3941|0;J=B+(J*5573|0)|0;C=B+(ea(C,-13455)|0)|0;B=(O+y|0)*8170|0;I=(G+y|0)*6269|0;H=ea(G+O|0,-1344)|0;A=ea(O,-17036)|0;M=ea(D,-8170)|0;O=ea(D+O|0,-3941)|0;c[x>>2]=(ea(y,-4229)|0)+8192+B+I+J+(D*1344|0)>>14;c[z>>2]=((y-G|0)*9514|0)+8192+C+O>>14;c[F>>2]=A+8192+B+H-C+(D*6269|0)>>14;c[N>>2]=(G*5285|0)+8192+H+I-J+M>>14;if((g|0)>0){g=g+-1|0;a=a+4|0;f=f+4|0}else break}i=u;return}function JG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;v=i;i=i+160|0;f=v;g=e+12|0;h=e+1|0;l=e+11|0;m=e+2|0;n=e+10|0;o=e+3|0;p=e+9|0;q=e+4|0;r=e+8|0;s=e+5|0;j=e+7|0;k=e+6|0;t=0;u=a;while(1){D=c[b+(t<<2)>>2]|0;O=d[D+e>>0]|0;J=d[D+g>>0]|0;z=J+O|0;N=d[D+h>>0]|0;H=d[D+l>>0]|0;w=H+N|0;M=d[D+m>>0]|0;E=d[D+n>>0]|0;F=E+M|0;L=d[D+o>>0]|0;A=d[D+p>>0]|0;y=A+L|0;K=d[D+q>>0]|0;I=d[D+r>>0]|0;B=I+K|0;x=d[D+s>>0]|0;C=d[D+j>>0]|0;G=C+x|0;D=d[D+k>>0]|0;J=O-J|0;H=N-H|0;E=M-E|0;A=L-A|0;I=K-I|0;C=x-C|0;c[u>>2]=z+-1664+w+F+y+B+G+D;D=D<<1;z=z-D|0;w=w-D|0;F=F-D|0;y=y-D|0;B=B-D|0;D=G-D|0;c[u+8>>2]=(w*8672|0)+4096+(z*11249|0)+(F*4108|0)+(ea(y,-1396)|0)+(ea(B,-6581)|0)+(ea(D,-10258)|0)>>13;G=((z-F|0)*9465|0)+(ea(y-B|0,-3570)|0)+(ea(w-D|0,-2592)|0)|0;D=((z+F|0)*793|0)+(ea(y+B|0,-7678)|0)+((w+D|0)*3989|0)|0;c[u+16>>2]=D+4096+G>>13;c[u+24>>2]=4096-D+G>>13;G=(H+J|0)*10832|0;D=(E+J|0)*9534|0;w=((C+I|0)*2773|0)+((A+J|0)*7682|0)|0;B=((I-C|0)*7682|0)+(ea(E+H|0,-2773)|0)|0;y=ea(A+H|0,-9534)|0;F=ea(I,-19183)|0;z=ea(A+E|0,-5384)|0;E=ea(E,-12879)|0;x=ea(C,-14273)|0;c[u+4>>2]=(ea(J,-16549)|0)+4096+G+D+(I*2611|0)+w>>13;c[u+12>>2]=(H*6859|0)+4096+G+y+F+B>>13;c[u+20>>2]=E+4096+D+z+(C*18515|0)+B>>13;c[u+28>>2]=(A*18068|0)+4096+z+y+x+w>>13;if((t|0)==7){t=8;u=f;continue}else if((t|0)==12){g=7;break}t=t+1|0;u=u+32|0}while(1){p=c[a>>2]|0;K=c[f+128>>2]|0;e=K+p|0;w=a+32|0;q=c[w>>2]|0;x=c[f+96>>2]|0;I=x+q|0;B=a+64|0;r=c[B>>2]|0;A=c[f+64>>2]|0;J=A+r|0;z=a+96|0;s=c[z>>2]|0;G=c[f+32>>2]|0;H=G+s|0;D=a+128|0;t=c[D>>2]|0;L=c[f>>2]|0;O=L+t|0;F=a+160|0;u=c[F>>2]|0;N=a+224|0;C=c[N>>2]|0;b=C+u|0;y=a+192|0;M=c[y>>2]|0;K=p-K|0;x=q-x|0;A=r-A|0;G=s-G|0;L=t-L|0;C=u-C|0;c[a>>2]=((I+e+J+H+O+b+M|0)*6205|0)+8192>>14;M=M<<1;e=e-M|0;I=I-M|0;J=J-M|0;H=H-M|0;O=O-M|0;M=b-M|0;c[B>>2]=(I*6568|0)+8192+(e*8520|0)+(J*3112|0)+(ea(H,-1058)|0)+(ea(O,-4985)|0)+(ea(M,-7770)|0)>>14;B=((e-J|0)*7169|0)+(ea(H-O|0,-2704)|0)+(ea(I-M|0,-1963)|0)|0;M=((e+J|0)*601|0)+(ea(H+O|0,-5816)|0)+((I+M|0)*3021|0)|0;c[D>>2]=M+8192+B>>14;c[y>>2]=8192-M+B>>14;y=(x+K|0)*8204|0;B=(A+K|0)*7221|0;M=((C+L|0)*2100|0)+((G+K|0)*5819|0)|0;D=((L-C|0)*5819|0)+(ea(A+x|0,-2100)|0)|0;I=ea(G+x|0,-7221)|0;O=ea(L,-14529)|0;H=ea(G+A|0,-4078)|0;A=ea(A,-9754)|0;J=ea(C,-10811)|0;c[w>>2]=(ea(K,-12534)|0)+8192+y+B+(L*1978|0)+M>>14;c[z>>2]=(x*5195|0)+8192+y+I+O+D>>14;c[F>>2]=A+8192+B+H+(C*14023|0)+D>>14;c[N>>2]=(G*13685|0)+8192+H+I+J+M>>14;if((g|0)>0){g=g+-1|0;a=a+4|0;f=f+4|0}else break}i=v;return}function KG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;w=i;i=i+192|0;f=w;g=e+13|0;h=e+1|0;m=e+12|0;n=e+2|0;o=e+11|0;p=e+3|0;q=e+10|0;r=e+4|0;s=e+9|0;t=e+5|0;j=e+8|0;k=e+6|0;l=e+7|0;u=0;v=a;while(1){A=c[b+(u<<2)>>2]|0;R=d[A+e>>0]|0;z=d[A+g>>0]|0;J=z+R|0;Q=d[A+h>>0]|0;E=d[A+m>>0]|0;K=E+Q|0;P=d[A+n>>0]|0;F=d[A+o>>0]|0;S=F+P|0;O=d[A+p>>0]|0;B=d[A+q>>0]|0;C=B+O|0;N=d[A+r>>0]|0;y=d[A+s>>0]|0;G=y+N|0;M=d[A+t>>0]|0;D=d[A+j>>0]|0;x=D+M|0;L=d[A+k>>0]|0;A=d[A+l>>0]|0;H=A+L|0;I=H+J|0;H=J-H|0;J=x+K|0;x=K-x|0;K=G+S|0;G=S-G|0;z=R-z|0;E=Q-E|0;F=P-F|0;B=O-B|0;y=N-y|0;D=M-D|0;A=L-A|0;c[v>>2]=C+-1792+K+J+I;C=C<<1;c[v+16>>2]=(ea(K-C|0,-7223)|0)+4096+((J-C|0)*2578|0)+((I-C|0)*10438|0)>>13;C=(H+x|0)*9058|0;c[v+8>>2]=(G*5027|0)+4096+(H*2237|0)+C>>13;c[v+24>>2]=(ea(G,-11295)|0)+4096+(ea(x,-14084)|0)+C>>13;C=F+E|0;x=D-y|0;c[v+28>>2]=z-C+B-x-A;B=B<<13;C=(x*11512|0)-B+(ea(C,-1297)|0)|0;x=((A+y|0)*6164|0)+((F+z|0)*9810|0)|0;c[v+20>>2]=(ea(F,-19447)|0)+4096+(y*9175|0)+C+x>>13;y=((D-A|0)*3826|0)+((E+z|0)*10935|0)|0;c[v+12>>2]=(ea(E,-3474)|0)+4096+(ea(D,-25148)|0)+C+y>>13;c[v+4>>2]=(B|4096)+A+(ea(A+z|0,-9232)|0)+y+x>>13;if((u|0)==7){u=8;v=f;continue}else if((u|0)==13){g=7;break}u=u+1|0;v=v+32|0}while(1){r=c[a>>2]|0;G=c[f+160>>2]|0;K=G+r|0;N=a+32|0;s=c[N>>2]|0;C=c[f+128>>2]|0;b=C+s|0;y=a+64|0;Q=c[y>>2]|0;A=c[f+96>>2]|0;q=A+Q|0;F=a+96|0;t=c[F>>2]|0;H=c[f+64>>2]|0;L=H+t|0;M=a+128|0;R=c[M>>2]|0;B=c[f+32>>2]|0;O=B+R|0;J=a+160|0;u=c[J>>2]|0;S=c[f>>2]|0;z=S+u|0;D=a+192|0;v=c[D>>2]|0;P=a+224|0;I=c[P>>2]|0;x=I+v|0;e=x+K|0;x=K-x|0;K=z+b|0;z=b-z|0;b=O+q|0;O=q-O|0;G=r-G|0;C=s-C|0;A=Q-A|0;H=t-H|0;B=R-B|0;S=u-S|0;I=v-I|0;c[a>>2]=((b+L+K+e|0)*5350|0)+8192>>14;L=L<<1;c[M>>2]=(ea(b-L|0,-4717)|0)+8192+((K-L|0)*1684|0)+((e-L|0)*6817|0)>>14;M=(x+z|0)*5915|0;c[y>>2]=(O*3283|0)+8192+(x*1461|0)+M>>14;c[D>>2]=(ea(O,-7376)|0)+8192+(ea(z,-9198)|0)+M>>14;D=A+C|0;M=S-B|0;c[P>>2]=((G-D+H-M-I|0)*5350|0)+8192>>14;H=H*5350|0;D=(M*7518|0)-H+(ea(D,-847)|0)|0;M=((I+B|0)*4025|0)+((A+G|0)*6406|0)|0;c[J>>2]=(ea(A,-12700)|0)+8192+(B*5992|0)+D+M>>14;J=((S-I|0)*2499|0)+((C+G|0)*7141|0)|0;c[F>>2]=(ea(C,-2269)|0)+8192+(ea(S,-16423)|0)+D+J>>14;c[N>>2]=(ea(G,-6029)|0)+8192+H+(ea(I,-679)|0)+J+M>>14;if((g|0)>0){g=g+-1|0;a=a+4|0;f=f+4|0}else break}i=w;return}function LG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;x=i;i=i+224|0;f=x;g=e+14|0;h=e+1|0;n=e+13|0;o=e+2|0;p=e+12|0;q=e+3|0;r=e+11|0;s=e+4|0;t=e+10|0;u=e+5|0;j=e+9|0;k=e+6|0;l=e+8|0;m=e+7|0;v=0;w=a;while(1){A=c[b+(v<<2)>>2]|0;T=d[A+e>>0]|0;H=d[A+g>>0]|0;B=H+T|0;S=d[A+h>>0]|0;I=d[A+n>>0]|0;M=I+S|0;R=d[A+o>>0]|0;G=d[A+p>>0]|0;C=G+R|0;Q=d[A+q>>0]|0;F=d[A+r>>0]|0;z=F+Q|0;N=d[A+s>>0]|0;J=d[A+t>>0]|0;L=J+N|0;P=d[A+u>>0]|0;E=d[A+j>>0]|0;y=E+P|0;O=d[A+k>>0]|0;D=d[A+l>>0]|0;K=D+O|0;A=d[A+m>>0]|0;H=T-H|0;I=S-I|0;G=R-G|0;F=Q-F|0;J=N-J|0;E=P-E|0;D=O-D|0;O=L+B+y|0;P=z+M+K|0;N=A+C|0;c[w>>2]=O+-1920+P+N;N=N<<1;c[w+24>>2]=(ea(P-N|0,-3580)|0)+4096+((O-N|0)*9373|0)>>13;A=((L+M|0)>>>1)+C+(ea(A,-2)|0)|0;C=ea(B-A|0,-748)|0;B=((M-L|0)*6476|0)+((B-z|0)*11332|0)+((K-y|0)*7752|0)+4096|0;c[w+8>>2]=B+(ea(K-A|0,-18336)|0)+((z-A|0)*12543|0)>>13;c[w+16>>2]=B+C+((y-A|0)*6541|0)>>13;A=G*10033|0;y=((E+F|0)*4712|0)+((J+I|0)*11018|0)+((H-D|0)*11522|0)|0;C=ea(H,-2912)|0;B=ea(I,-17828)|0;z=ea(E,-7121)|0;c[w+4>>2]=A+4096+(F*3897|0)+(ea(J,-4209)|0)+(D*13930|0)+y>>13;c[w+12>>2]=((H-J-E|0)*11018|0)+4096+((I-F-D|0)*6810|0)>>13;c[w+20>>2]=((H-G-F+E+D|0)*10033|0)+4096>>13;c[w+28>>2]=C+4096+B-A+z+y>>13;if((v|0)==14){g=7;break}else if((v|0)==7){v=8;w=f;continue}v=v+1|0;w=w+32|0}while(1){r=c[a>>2]|0;B=c[f+192>>2]|0;M=B+r|0;O=a+32|0;s=c[O>>2]|0;P=c[f+160>>2]|0;K=P+s|0;y=a+64|0;Q=c[y>>2]|0;C=c[f+128>>2]|0;I=C+Q|0;A=a+96|0;t=c[A>>2]|0;S=c[f+96>>2]|0;e=S+t|0;J=a+128|0;v=c[J>>2]|0;z=c[f+64>>2]|0;b=z+v|0;G=a+160|0;R=c[G>>2]|0;D=c[f+32>>2]|0;H=D+R|0;w=a+192|0;u=c[w>>2]|0;F=c[f>>2]|0;L=F+u|0;T=a+224|0;N=c[T>>2]|0;B=r-B|0;P=s-P|0;C=Q-C|0;S=t-S|0;z=v-z|0;D=R-D|0;F=u-F|0;u=b+M+H|0;R=e+K+L|0;v=N+I|0;c[a>>2]=((R+u+v|0)*9321|0)+16384>>15;v=v<<1;c[w>>2]=(ea(R-v|0,-4073)|0)+16384+((u-v|0)*10664|0)>>15;N=(b+K>>1)+I+(ea(N,-2)|0)|0;I=ea(M-N|0,-852)|0;M=((K-b|0)*7369|0)+((M-e|0)*12893|0)+((L-H|0)*8820|0)+16384|0;c[y>>2]=M+(ea(L-N|0,-20862)|0)+((e-N|0)*14271|0)>>15;c[J>>2]=M+I+((H-N|0)*7442|0)>>15;J=C*11415|0;N=((D+S|0)*5361|0)+((z+P|0)*12536|0)+((B-F|0)*13109|0)|0;H=ea(B,-3314)|0;I=ea(P,-20284)|0;M=ea(D,-8102)|0;c[O>>2]=J+16384+(S*4434|0)+(ea(z,-4788)|0)+(F*15850|0)+N>>15;c[A>>2]=((B-z-D|0)*12536|0)+16384+((P-S-F|0)*7748|0)>>15;c[G>>2]=((B-C-S+D+F|0)*11415|0)+16384>>15;c[T>>2]=H+16384+I-J+M+N>>15;if((g|0)>0){g=g+-1|0;a=a+4|0;f=f+4|0}else break}i=x;return}function MG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;y=i;i=i+256|0;f=y;g=e+15|0;h=e+1|0;o=e+14|0;p=e+2|0;q=e+13|0;r=e+3|0;s=e+12|0;t=e+4|0;u=e+11|0;v=e+5|0;j=e+10|0;k=e+6|0;l=e+9|0;m=e+7|0;n=e+8|0;w=0;x=a;while(1){L=c[b+(w<<2)>>2]|0;W=d[L+e>>0]|0;M=d[L+g>>0]|0;O=M+W|0;V=d[L+h>>0]|0;K=d[L+o>>0]|0;N=K+V|0;U=d[L+p>>0]|0;H=d[L+q>>0]|0;I=H+U|0;T=d[L+r>>0]|0;D=d[L+s>>0]|0;X=D+T|0;S=d[L+t>>0]|0;C=d[L+u>>0]|0;z=C+S|0;R=d[L+v>>0]|0;G=d[L+j>>0]|0;A=G+R|0;Q=d[L+k>>0]|0;J=d[L+l>>0]|0;F=J+Q|0;P=d[L+m>>0]|0;L=d[L+n>>0]|0;E=L+P|0;B=E+O|0;E=O-E|0;O=F+N|0;F=N-F|0;N=A+I|0;A=I-A|0;I=z+X|0;z=X-z|0;M=W-M|0;K=V-K|0;H=U-H|0;D=T-D|0;C=S-C|0;G=R-G|0;J=Q-J|0;L=P-L|0;c[x>>2]=(N+I+O+B<<2)+-8192;c[x+16>>2]=((O-N|0)*4433|0)+1024+((B-I|0)*10703|0)>>11;I=((E-A|0)*11363|0)+((z-F|0)*2260|0)|0;c[x+8>>2]=(A*17799|0)+1024+(F*11893|0)+I>>11;c[x+24>>2]=(ea(z,-8697)|0)+1024+(ea(E,-1730)|0)+I>>11;I=((J-L|0)*3363|0)+((K+M|0)*11086|0)|0;E=((L+G|0)*5461|0)+((H+M|0)*10217|0)|0;z=((C-L|0)*7350|0)+((D+M|0)*8956|0)|0;F=((J-G|0)*11529|0)+((H+K|0)*1136|0)|0;A=(ea(J+C|0,-10217)|0)+(ea(D+K|0,-5461)|0)|0;B=((G-C|0)*3363|0)+(ea(D+H|0,-11086)|0)|0;J=ea(J,-13631)|0;H=ea(H,-9222)|0;c[x+4>>2]=(ea(M,-18730)|0)+1024+(L*6387|0)+E+I+z>>11;c[x+12>>2]=(K*589|0)+1024+J+A+F+I>>11;c[x+20>>2]=H+1024+(G*10055|0)+B+F+E>>11;c[x+28>>2]=(D*8728|0)+1024+(C*17760|0)+B+A+z>>11;if((w|0)==15){g=7;break}else if((w|0)==7){w=8;x=f;continue}w=w+1|0;x=x+32|0}while(1){Q=c[a>>2]|0;P=c[f+224>>2]|0;L=P+Q|0;B=a+32|0;t=c[B>>2]|0;C=c[f+192>>2]|0;b=C+t|0;U=a+64|0;R=c[U>>2]|0;G=c[f+160>>2]|0;O=G+R|0;F=a+96|0;u=c[F>>2]|0;M=c[f+128>>2]|0;s=M+u|0;I=a+128|0;v=c[I>>2]|0;N=c[f+96>>2]|0;X=N+v|0;J=a+160|0;w=c[J>>2]|0;H=c[f+64>>2]|0;z=H+w|0;D=a+192|0;K=c[D>>2]|0;S=c[f+32>>2]|0;T=S+K|0;W=a+224|0;x=c[W>>2]|0;A=c[f>>2]|0;V=A+x|0;e=V+L|0;V=L-V|0;L=T+b|0;T=b-T|0;b=z+O|0;z=O-z|0;O=X+s|0;X=s-X|0;P=Q-P|0;C=t-C|0;G=R-G|0;M=u-M|0;N=v-N|0;H=w-H|0;S=K-S|0;A=x-A|0;c[a>>2]=O+8+b+L+e>>4;c[I>>2]=((L-b|0)*4433|0)+65536+((e-O|0)*10703|0)>>17;I=((V-z|0)*11363|0)+((X-T|0)*2260|0)|0;c[U>>2]=(z*17799|0)+65536+(T*11893|0)+I>>17;c[D>>2]=(ea(X,-8697)|0)+65536+(ea(V,-1730)|0)+I>>17;D=((S-A|0)*3363|0)+((C+P|0)*11086|0)|0;I=((A+H|0)*5461|0)+((G+P|0)*10217|0)|0;V=((N-A|0)*7350|0)+((M+P|0)*8956|0)|0;X=((S-H|0)*11529|0)+((G+C|0)*1136|0)|0;U=(ea(S+N|0,-10217)|0)+(ea(M+C|0,-5461)|0)|0;T=((H-N|0)*3363|0)+(ea(M+G|0,-11086)|0)|0;S=ea(S,-13631)|0;G=ea(G,-9222)|0;c[B>>2]=(ea(P,-18730)|0)+65536+(A*6387|0)+I+D+V>>17;c[F>>2]=(C*589|0)+65536+S+U+X+D>>17;c[J>>2]=G+65536+(H*10055|0)+T+X+I>>17;c[W>>2]=(M*8728|0)+65536+(N*17760|0)+T+U+V>>17;if((g|0)>0){g=g+-1|0;a=a+4|0;f=f+4|0}else break}i=y;return}function NG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;x=i;f=e+15|0;g=e+1|0;n=e+14|0;o=e+2|0;p=e+13|0;q=e+3|0;r=e+12|0;s=e+4|0;t=e+11|0;u=e+5|0;h=e+10|0;j=e+6|0;k=e+9|0;l=e+7|0;m=e+8|0;v=0;w=a;while(1){K=c[b+(v<<2)>>2]|0;V=d[K+e>>0]|0;L=d[K+f>>0]|0;N=L+V|0;U=d[K+g>>0]|0;J=d[K+n>>0]|0;M=J+U|0;T=d[K+o>>0]|0;G=d[K+p>>0]|0;H=G+T|0;S=d[K+q>>0]|0;C=d[K+r>>0]|0;W=C+S|0;R=d[K+s>>0]|0;B=d[K+t>>0]|0;y=B+R|0;Q=d[K+u>>0]|0;F=d[K+h>>0]|0;z=F+Q|0;P=d[K+j>>0]|0;I=d[K+k>>0]|0;E=I+P|0;O=d[K+l>>0]|0;K=d[K+m>>0]|0;D=K+O|0;A=D+N|0;D=N-D|0;N=E+M|0;E=M-E|0;M=z+H|0;z=H-z|0;H=y+W|0;y=W-y|0;L=V-L|0;J=U-J|0;G=T-G|0;C=S-C|0;B=R-B|0;F=Q-F|0;I=P-I|0;K=O-K|0;c[w>>2]=(M+H+N+A<<2)+-8192;c[w+16>>2]=((N-M|0)*4433|0)+1024+((A-H|0)*10703|0)>>11;H=((D-z|0)*11363|0)+((y-E|0)*2260|0)|0;c[w+8>>2]=(z*17799|0)+1024+(E*11893|0)+H>>11;c[w+24>>2]=(ea(y,-8697)|0)+1024+(ea(D,-1730)|0)+H>>11;H=((I-K|0)*3363|0)+((J+L|0)*11086|0)|0;D=((K+F|0)*5461|0)+((G+L|0)*10217|0)|0;y=((B-K|0)*7350|0)+((C+L|0)*8956|0)|0;E=((I-F|0)*11529|0)+((G+J|0)*1136|0)|0;z=(ea(I+B|0,-10217)|0)+(ea(C+J|0,-5461)|0)|0;A=((F-B|0)*3363|0)+(ea(C+G|0,-11086)|0)|0;I=ea(I,-13631)|0;G=ea(G,-9222)|0;c[w+4>>2]=(ea(L,-18730)|0)+1024+(K*6387|0)+D+H+y>>11;c[w+12>>2]=(J*589|0)+1024+I+z+E+H>>11;c[w+20>>2]=G+1024+(F*10055|0)+A+E+D>>11;c[w+28>>2]=(C*8728|0)+1024+(B*17760|0)+A+z+y>>11;v=v+1|0;if((v|0)==8){f=7;break}else w=w+32|0}while(1){O=c[a>>2]|0;W=a+224|0;D=c[W>>2]|0;B=D+O|0;F=a+32|0;z=c[F>>2]|0;M=a+192|0;G=c[M>>2]|0;y=G+z|0;J=a+64|0;P=c[J>>2]|0;N=a+160|0;I=c[N>>2]|0;U=I+P|0;H=a+96|0;A=c[H>>2]|0;V=a+128|0;T=c[V>>2]|0;S=T+A|0;C=S+B|0;S=B-S|0;B=U+y|0;U=y-U|0;D=O-D|0;G=z-G|0;I=P-I|0;T=A-T|0;c[a>>2]=B+4+C>>3;c[V>>2]=4-B+C>>3;V=(S+U|0)*4433|0;c[J>>2]=(S*6270|0)+32768+V>>16;c[M>>2]=(ea(U,-15137)|0)+32768+V>>16;M=I+D|0;V=T+G|0;U=(V+M|0)*9633|0;M=U+(ea(M,-3196)|0)|0;V=U+(ea(V,-16069)|0)|0;U=ea(T+D|0,-7373)|0;J=ea(I+G|0,-20995)|0;c[F>>2]=(D*12299|0)+32768+U+M>>16;c[H>>2]=(G*25172|0)+32768+J+V>>16;c[N>>2]=(I*16819|0)+32768+J+M>>16;c[W>>2]=(T*2446|0)+32768+U+V>>16;if((f|0)>0){f=f+-1|0;a=a+4|0}else break}i=x;return}function OG(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;w=i;g=b+224|0;h=g+32|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));g=f+13|0;h=f+1|0;m=f+12|0;n=f+2|0;o=f+11|0;p=f+3|0;q=f+10|0;r=f+4|0;s=f+9|0;t=f+5|0;j=f+8|0;k=f+6|0;l=f+7|0;u=0;v=b;while(1){A=c[e+(u<<2)>>2]|0;R=d[A+f>>0]|0;z=d[A+g>>0]|0;J=z+R|0;Q=d[A+h>>0]|0;E=d[A+m>>0]|0;K=E+Q|0;P=d[A+n>>0]|0;F=d[A+o>>0]|0;S=F+P|0;O=d[A+p>>0]|0;B=d[A+q>>0]|0;C=B+O|0;N=d[A+r>>0]|0;y=d[A+s>>0]|0;G=y+N|0;M=d[A+t>>0]|0;D=d[A+j>>0]|0;x=D+M|0;L=d[A+k>>0]|0;A=d[A+l>>0]|0;H=A+L|0;I=H+J|0;H=J-H|0;J=x+K|0;x=K-x|0;K=G+S|0;G=S-G|0;z=R-z|0;E=Q-E|0;F=P-F|0;B=O-B|0;y=N-y|0;D=M-D|0;A=L-A|0;c[v>>2]=(K+C+J+I<<2)+-7168;C=C<<1;c[v+16>>2]=(ea(K-C|0,-7223)|0)+1024+((J-C|0)*2578|0)+((I-C|0)*10438|0)>>11;C=(H+x|0)*9058|0;c[v+8>>2]=(G*5027|0)+1024+(H*2237|0)+C>>11;c[v+24>>2]=(ea(G,-11295)|0)+1024+(ea(x,-14084)|0)+C>>11;C=F+E|0;x=D-y|0;c[v+28>>2]=z-C+B-x-A<<2;B=B<<13;C=(x*11512|0)-B+(ea(C,-1297)|0)|0;x=((A+y|0)*6164|0)+((F+z|0)*9810|0)|0;c[v+20>>2]=(ea(F,-19447)|0)+1024+(y*9175|0)+C+x>>11;y=((D-A|0)*3826|0)+((E+z|0)*10935|0)|0;c[v+12>>2]=(ea(E,-3474)|0)+1024+(ea(D,-25148)|0)+C+y>>11;c[v+4>>2]=(B|1024)+A+(ea(A+z|0,-9232)|0)+y+x>>11;u=u+1|0;if((u|0)==7){g=7;break}else v=v+32|0}while(1){y=c[b>>2]|0;H=b+192|0;K=c[H>>2]|0;C=K+y|0;E=b+32|0;D=c[E>>2]|0;O=b+160|0;N=c[O>>2]|0;A=N+D|0;z=b+64|0;G=c[z>>2]|0;B=b+128|0;J=c[B>>2]|0;P=J+G|0;I=b+96|0;Q=c[I>>2]|0;K=y-K|0;N=D-N|0;J=G-J|0;G=P+C|0;c[b>>2]=((Q+A+G|0)*10700|0)+32768>>16;G=((ea(Q,-4)|0)+G|0)*3783|0;D=(C-P|0)*9850|0;P=(A-P|0)*3367|0;c[z>>2]=D+32768+P+G>>16;C=((C-A|0)*9434|0)+32768|0;c[B>>2]=C+P+(ea(A-(Q<<1)|0,-7566)|0)>>16;c[H>>2]=C-D+G>>16;H=(N+K|0)*10009|0;G=(K-N|0)*1822|0;N=ea(J+N|0,-14752)|0;K=(J+K|0)*6565|0;c[E>>2]=32768-G+H+K>>16;c[I>>2]=G+32768+H+N>>16;c[O>>2]=(J*20017|0)+32768+K+N>>16;if((g|0)>0){g=g+-1|0;b=b+4|0}else break}i=w;return}function PG(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;u=i;g=b+192|0;h=g+64|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));g=f+11|0;h=f+1|0;k=f+10|0;l=f+2|0;m=f+9|0;n=f+3|0;o=f+8|0;p=f+4|0;q=f+7|0;r=f+5|0;j=f+6|0;s=0;t=b;while(1){A=c[e+(s<<2)>>2]|0;N=d[A+f>>0]|0;F=d[A+g>>0]|0;y=F+N|0;M=d[A+h>>0]|0;w=d[A+k>>0]|0;H=w+M|0;L=d[A+l>>0]|0;E=d[A+m>>0]|0;O=E+L|0;K=d[A+n>>0]|0;z=d[A+o>>0]|0;C=z+K|0;J=d[A+p>>0]|0;B=d[A+q>>0]|0;G=B+J|0;I=d[A+r>>0]|0;A=d[A+j>>0]|0;x=A+I|0;v=x+y|0;x=y-x|0;y=H-G|0;D=C+O|0;C=O-C|0;F=N-F|0;w=M-w|0;E=L-E|0;z=K-z|0;B=J-B|0;A=I-A|0;c[t>>2]=(D+H+G+v<<2)+-6144;c[t+24>>2]=x-(y+C)<<2;c[t+16>>2]=((v-D|0)*10033|0)+1024>>11;c[t+8>>2]=1024-C+y+((x+C|0)*11190|0)>>11;C=(B+w|0)*4433|0;w=C+(w*6270|0)|0;B=C+(ea(B,-15137)|0)|0;C=(E+F|0)*9191|0;x=(z+F|0)*7053|0;y=ea(z+E|0,-1512)|0;D=ea(E,-19165)|0;v=ea(A,-9191)|0;E=ea(A+E|0,-4433)|0;c[t+4>>2]=(ea(F,-4758)|0)+1024+C+x+w+(A*1512|0)>>11;c[t+12>>2]=((F-z|0)*10703|0)+1024+B+E>>11;c[t+20>>2]=D+1024+C+y-B+(A*7053|0)>>11;c[t+28>>2]=(z*5946|0)+1024+y+x-w+v>>11;s=s+1|0;if((s|0)==6){g=7;break}else t=t+32|0}while(1){x=c[b>>2]|0;O=b+160|0;H=c[O>>2]|0;A=H+x|0;G=b+32|0;y=c[G>>2]|0;N=b+128|0;K=c[N>>2]|0;D=K+y|0;C=b+64|0;z=c[C>>2]|0;I=b+96|0;J=c[I>>2]|0;B=J+z|0;E=B+A|0;H=x-H|0;K=y-K|0;J=z-J|0;c[b>>2]=((E+D|0)*14564|0)+32768>>16;c[C>>2]=((A-B|0)*17837|0)+32768>>16;c[N>>2]=(((ea(D,-2)|0)+E|0)*10298|0)+32768>>16;N=(J+H|0)*5331|0;c[G>>2]=((K+H|0)*14564|0)+32768+N>>16;c[I>>2]=((H-K-J|0)*14564|0)+32768>>16;c[O>>2]=((J-K|0)*14564|0)+32768+N>>16;if((g|0)>0){g=g+-1|0;b=b+4|0}else break}i=u;return}function QG(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;s=i;g=b+160|0;h=g+96|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));g=f+9|0;h=f+1|0;j=f+8|0;k=f+2|0;l=f+7|0;m=f+3|0;n=f+6|0;o=f+4|0;p=f+5|0;q=0;r=b;while(1){w=c[e+(q<<2)>>2]|0;H=d[w+f>>0]|0;x=d[w+g>>0]|0;C=x+H|0;G=d[w+h>>0]|0;u=d[w+j>>0]|0;I=u+G|0;F=d[w+k>>0]|0;z=d[w+l>>0]|0;y=z+F|0;E=d[w+m>>0]|0;v=d[w+n>>0]|0;t=v+E|0;D=d[w+o>>0]|0;w=d[w+p>>0]|0;A=w+D|0;B=A+C|0;A=C-A|0;C=t+I|0;t=I-t|0;x=H-x|0;u=G-u|0;z=F-z|0;v=E-v|0;w=D-w|0;c[r>>2]=(C+y+B<<2)+-5120;y=y<<1;c[r+16>>2]=(ea(C-y|0,-3580)|0)+1024+((B-y|0)*9373|0)>>11;y=(A+t|0)*6810|0;c[r+8>>2]=(A*4209|0)+1024+y>>11;c[r+24>>2]=(ea(t,-17828)|0)+1024+y>>11;y=w+x|0;t=u-v|0;c[r+20>>2]=y-(t+z)<<2;z=z<<13;c[r+4>>2]=(x*11443|0)+1024+(u*10323|0)+z+(v*5260|0)+(w*1812|0)>>11;t=(t<<12)-z+((y+t|0)*2531|0)|0;u=((x-w|0)*7791|0)+(ea(v+u|0,-4815)|0)+1024|0;c[r+12>>2]=u+t>>11;c[r+28>>2]=u-t>>11;q=q+1|0;if((q|0)==5){g=7;break}else r=r+32|0}while(1){w=c[b>>2]|0;H=b+128|0;D=c[H>>2]|0;z=D+w|0;E=b+32|0;x=c[E>>2]|0;I=b+96|0;G=c[I>>2]|0;B=G+x|0;A=b+64|0;C=c[A>>2]|0;y=B+z|0;D=w-D|0;G=x-G|0;c[b>>2]=((y+C|0)*10486|0)+16384>>15;C=(y-(C<<2)|0)*3707|0;B=((z-B|0)*8290|0)+16384|0;c[A>>2]=B+C>>15;c[H>>2]=B-C>>15;H=(G+D|0)*8716|0;c[E>>2]=(D*5387|0)+16384+H>>15;c[I>>2]=(ea(G,-22820)|0)+16384+H>>15;if((g|0)>0){g=g+-1|0;b=b+4|0}else break}i=s;return}function RG(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;q=i;g=b+128|0;h=g+128|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));g=f+7|0;h=f+1|0;j=f+6|0;k=f+2|0;l=f+5|0;m=f+3|0;n=f+4|0;o=0;p=b;while(1){s=c[e+(o<<2)>>2]|0;C=d[s+f>>0]|0;y=d[s+g>>0]|0;r=y+C|0;B=d[s+h>>0]|0;x=d[s+j>>0]|0;D=x+B|0;A=d[s+k>>0]|0;v=d[s+l>>0]|0;u=v+A|0;z=d[s+m>>0]|0;s=d[s+n>>0]|0;t=s+z|0;w=t+r|0;t=r-t|0;r=u+D|0;u=D-u|0;y=C-y|0;x=B-x|0;v=A-v|0;s=z-s|0;c[p>>2]=(w+r<<3)+-8192;c[p+16>>2]=w-r<<3;r=((t+u|0)*4433|0)+512|0;c[p+8>>2]=r+(t*6270|0)>>10;c[p+24>>2]=r+(ea(u,-15137)|0)>>10;u=v+y|0;r=s+x|0;t=((r+u|0)*9633|0)+512|0;u=t+(ea(u,-3196)|0)|0;r=t+(ea(r,-16069)|0)|0;t=ea(s+y|0,-7373)|0;w=ea(v+x|0,-20995)|0;c[p+4>>2]=t+(y*12299|0)+u>>10;c[p+12>>2]=w+(x*25172|0)+r>>10;c[p+20>>2]=w+(v*16819|0)+u>>10;c[p+28>>2]=t+(s*2446|0)+r>>10;o=o+1|0;if((o|0)==4){g=7;break}else p=p+32|0}while(1){v=c[b>>2]|0;D=b+96|0;z=c[D>>2]|0;x=v+2+z|0;A=b+32|0;w=c[A>>2]|0;B=b+64|0;C=c[B>>2]|0;y=C+w|0;z=v-z|0;C=w-C|0;c[b>>2]=y+x>>2;c[B>>2]=x-y>>2;B=((C+z|0)*4433|0)+16384|0;c[A>>2]=B+(z*6270|0)>>15;c[D>>2]=B+(ea(C,-15137)|0)>>15;if((g|0)>0){g=g+-1|0;b=b+4|0}else break}i=q;return}function SG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;n=i;Cga(a|0,0,256)|0;f=e+5|0;g=e+1|0;h=e+4|0;j=e+2|0;k=e+3|0;l=0;m=a;while(1){p=c[b+(l<<2)>>2]|0;x=d[p+e>>0]|0;r=d[p+f>>0]|0;u=r+x|0;w=d[p+g>>0]|0;o=d[p+h>>0]|0;s=o+w|0;v=d[p+j>>0]|0;p=d[p+k>>0]|0;t=p+v|0;q=t+u|0;r=x-r|0;o=w-o|0;p=v-p|0;c[m>>2]=(q+s<<3)+-6144;c[m+8>>2]=((u-t|0)*10033|0)+512>>10;c[m+16>>2]=(((ea(s,-2)|0)+q|0)*5793|0)+512>>10;q=((p+r|0)*2998|0)+512>>10;c[m+4>>2]=q+(o+r<<3);c[m+12>>2]=r-o-p<<3;c[m+20>>2]=q+(p-o<<3);l=l+1|0;if((l|0)==3)break;else m=m+32|0}w=c[a>>2]|0;v=a+64|0;u=c[v>>2]|0;t=u+w|0;s=a+32|0;r=c[s>>2]|0;c[a>>2]=((t+r|0)*14564|0)+16384>>15;c[v>>2]=(((ea(r,-2)|0)+t|0)*10298|0)+16384>>15;c[s>>2]=((w-u|0)*17837|0)+16384>>15;s=a+4|0;u=c[s>>2]|0;w=a+68|0;v=c[w>>2]|0;t=v+u|0;r=a+36|0;x=c[r>>2]|0;c[s>>2]=((t+x|0)*14564|0)+16384>>15;c[w>>2]=(((ea(x,-2)|0)+t|0)*10298|0)+16384>>15;c[r>>2]=((u-v|0)*17837|0)+16384>>15;r=a+8|0;v=c[r>>2]|0;u=a+72|0;w=c[u>>2]|0;t=w+v|0;x=a+40|0;s=c[x>>2]|0;c[r>>2]=((t+s|0)*14564|0)+16384>>15;c[u>>2]=(((ea(s,-2)|0)+t|0)*10298|0)+16384>>15;c[x>>2]=((v-w|0)*17837|0)+16384>>15;x=a+12|0;w=c[x>>2]|0;v=a+76|0;u=c[v>>2]|0;t=u+w|0;s=a+44|0;r=c[s>>2]|0;c[x>>2]=((t+r|0)*14564|0)+16384>>15;c[v>>2]=(((ea(r,-2)|0)+t|0)*10298|0)+16384>>15;c[s>>2]=((w-u|0)*17837|0)+16384>>15;s=a+16|0;u=c[s>>2]|0;w=a+80|0;v=c[w>>2]|0;t=v+u|0;r=a+48|0;x=c[r>>2]|0;c[s>>2]=((t+x|0)*14564|0)+16384>>15;c[w>>2]=(((ea(x,-2)|0)+t|0)*10298|0)+16384>>15;c[r>>2]=((u-v|0)*17837|0)+16384>>15;r=a+20|0;v=c[r>>2]|0;u=a+84|0;w=c[u>>2]|0;t=w+v|0;x=a+52|0;s=c[x>>2]|0;c[r>>2]=((t+s|0)*14564|0)+16384>>15;c[u>>2]=(((ea(s,-2)|0)+t|0)*10298|0)+16384>>15;c[x>>2]=((v-w|0)*17837|0)+16384>>15;i=n;return}function TG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=i;Cga(a|0,0,256)|0;j=e+3|0;m=e+1|0;q=e+2|0;g=c[b>>2]|0;l=d[g+e>>0]|0;k=d[g+j>>0]|0;p=k+l|0;n=d[g+m>>0]|0;g=d[g+q>>0]|0;h=g+n|0;k=l-k|0;g=n-g|0;n=h+p<<5;c[a>>2]=n+-16384;h=p-h<<5;c[a+8>>2]=h;p=((g+k|0)*4433|0)+128|0;k=p+(k*6270|0)>>8;l=a+4|0;c[l>>2]=k;g=p+(ea(g,-15137)|0)>>8;c[a+12>>2]=g;b=c[b+4>>2]|0;p=d[b+e>>0]|0;j=d[b+j>>0]|0;o=j+p|0;m=d[b+m>>0]|0;e=d[b+q>>0]|0;b=e+m|0;j=p-j|0;e=m-e|0;m=(b+o<<5)+-16384|0;b=o-b<<5;o=((e+j|0)*4433|0)+128|0;j=o+(j*6270|0)>>8;e=o+(ea(e,-15137)|0)>>8;n=n+-16382|0;c[a>>2]=n+m>>2;c[a+32>>2]=n-m>>2;k=k+2|0;c[l>>2]=k+j>>2;c[a+36>>2]=k-j>>2;h=h|2;c[a+8>>2]=h+b>>2;c[a+40>>2]=h-b>>2;b=g+2|0;c[a+12>>2]=b+e>>2;c[a+44>>2]=b-e>>2;i=f;return}function UG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;f=i;Cga(a|0,0,256)|0;g=c[b>>2]|0;b=d[g+e>>0]|0;e=d[g+(e+1)>>0]|0;c[a>>2]=(e+b<<5)+-8192;c[a+4>>2]=b-e<<5;i=f;return}function VG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;q=i;i=i+256|0;f=q;g=e+7|0;h=e+1|0;j=e+6|0;k=e+2|0;l=e+5|0;m=e+3|0;n=e+4|0;o=0;p=a;while(1){t=c[b+(o<<2)>>2]|0;C=d[t+e>>0]|0;y=d[t+g>>0]|0;u=y+C|0;B=d[t+h>>0]|0;x=d[t+j>>0]|0;D=x+B|0;A=d[t+k>>0]|0;w=d[t+l>>0]|0;r=w+A|0;z=d[t+m>>0]|0;t=d[t+n>>0]|0;s=t+z|0;v=s+u|0;s=u-s|0;u=r+D|0;r=D-r|0;y=C-y|0;x=B-x|0;w=A-w|0;t=z-t|0;c[p>>2]=(v+u<<2)+-4096;c[p+16>>2]=v-u<<2;u=(s+r|0)*4433|0;c[p+8>>2]=(s*6270|0)+1024+u>>11;c[p+24>>2]=(ea(r,-15137)|0)+1024+u>>11;u=w+y|0;r=t+x|0;s=(r+u|0)*9633|0;u=s+(ea(u,-3196)|0)|0;r=s+(ea(r,-16069)|0)|0;s=ea(t+y|0,-7373)|0;v=ea(w+x|0,-20995)|0;c[p+4>>2]=(y*12299|0)+1024+s+u>>11;c[p+12>>2]=(x*25172|0)+1024+v+r>>11;c[p+20>>2]=(w*16819|0)+1024+v+u>>11;c[p+28>>2]=(t*2446|0)+1024+s+r>>11;if((o|0)==7){o=8;p=f;continue}else if((o|0)==15){g=7;break}o=o+1|0;p=p+32|0}while(1){L=c[a>>2]|0;l=c[f+224>>2]|0;m=l+L|0;p=a+32|0;K=c[p>>2]|0;b=c[f+192>>2]|0;h=b+K|0;B=a+64|0;J=c[B>>2]|0;t=c[f+160>>2]|0;k=t+J|0;s=a+96|0;I=c[s>>2]|0;y=c[f+128>>2]|0;M=y+I|0;w=a+128|0;H=c[w>>2]|0;z=c[f+96>>2]|0;v=z+H|0;x=a+160|0;G=c[x>>2]|0;u=c[f+64>>2]|0;j=u+G|0;r=a+192|0;F=c[r>>2]|0;e=c[f+32>>2]|0;A=e+F|0;D=a+224|0;E=c[D>>2]|0;o=c[f>>2]|0;C=o+E|0;n=C+m|0;C=m-C|0;m=A+h|0;A=h-A|0;h=j+k|0;j=k-j|0;k=v+M|0;v=M-v|0;l=L-l|0;b=K-b|0;t=J-t|0;y=I-y|0;z=H-z|0;u=G-u|0;e=F-e|0;o=E-o|0;c[a>>2]=k+4+h+m+n>>3;c[w>>2]=((m-h|0)*4433|0)+32768+((n-k|0)*10703|0)>>16;w=((C-j|0)*11363|0)+((v-A|0)*2260|0)|0;c[B>>2]=(j*17799|0)+32768+(A*11893|0)+w>>16;c[r>>2]=(ea(v,-8697)|0)+32768+(ea(C,-1730)|0)+w>>16;r=((e-o|0)*3363|0)+((b+l|0)*11086|0)|0;w=((o+u|0)*5461|0)+((t+l|0)*10217|0)|0;C=((z-o|0)*7350|0)+((y+l|0)*8956|0)|0;v=((e-u|0)*11529|0)+((t+b|0)*1136|0)|0;B=(ea(e+z|0,-10217)|0)+(ea(y+b|0,-5461)|0)|0;A=((u-z|0)*3363|0)+(ea(y+t|0,-11086)|0)|0;e=ea(e,-13631)|0;t=ea(t,-9222)|0;c[p>>2]=(ea(l,-18730)|0)+32768+(o*6387|0)+w+r+C>>16;c[s>>2]=(b*589|0)+32768+e+B+v+r>>16;c[x>>2]=t+32768+(u*10055|0)+A+v+w>>16;c[D>>2]=(y*8728|0)+32768+(z*17760|0)+A+B+C>>16;if((g|0)>0){g=g+-1|0;a=a+4|0;f=f+4|0}else break}i=q;return}function WG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;p=i;i=i+192|0;f=p;Cga(a|0,0,256)|0;g=e+6|0;h=e+1|0;j=e+5|0;k=e+2|0;l=e+4|0;m=e+3|0;n=0;o=a;while(1){w=c[b+(n<<2)>>2]|0;z=d[w+e>>0]|0;r=d[w+g>>0]|0;v=r+z|0;u=d[w+h>>0]|0;q=d[w+j>>0]|0;x=q+u|0;t=d[w+k>>0]|0;s=d[w+l>>0]|0;y=s+t|0;w=d[w+m>>0]|0;r=z-r|0;q=u-q|0;s=t-s|0;t=y+v|0;c[o>>2]=(w+x+t<<2)+-3584;t=((ea(w,-4)|0)+t|0)*2896|0;u=(v-y|0)*7542|0;y=(x-y|0)*2578|0;c[o+8>>2]=u+1024+y+t>>11;v=((v-x|0)*7223|0)+1024|0;c[o+16>>2]=v+y+(ea(x-(w<<1)|0,-5793)|0)>>11;c[o+24>>2]=v-u+t>>11;t=(q+r|0)*7663|0;u=(r-q|0)*1395|0;q=ea(s+q|0,-11295)|0;r=(s+r|0)*5027|0;c[o+4>>2]=1024-u+t+r>>11;c[o+12>>2]=u+1024+t+q>>11;c[o+20>>2]=(s*15326|0)+1024+r+q>>11;if((n|0)==7){n=8;o=f;continue}else if((n|0)==13){g=0;break}n=n+1|0;o=o+32|0}while(1){I=c[a>>2]|0;u=c[f+160>>2]|0;A=u+I|0;z=a+32|0;H=c[z>>2]|0;q=c[f+128>>2]|0;B=q+H|0;k=a+64|0;G=c[k>>2]|0;b=c[f+96>>2]|0;J=b+G|0;t=a+96|0;F=c[t>>2]|0;v=c[f+64>>2]|0;h=v+F|0;y=a+128|0;E=c[y>>2]|0;e=c[f+32>>2]|0;j=e+E|0;x=a+160|0;D=c[x>>2]|0;r=c[f>>2]|0;l=r+D|0;s=a+192|0;C=c[s>>2]|0;o=a+224|0;w=c[o>>2]|0;n=w+C|0;m=n+A|0;n=A-n|0;A=l+B|0;l=B-l|0;B=j+J|0;j=J-j|0;u=I-u|0;q=H-q|0;b=G-b|0;v=F-v|0;e=E-e|0;r=D-r|0;w=C-w|0;c[a>>2]=((B+h+A+m|0)*5350|0)+16384>>15;h=h<<1;c[y>>2]=(ea(B-h|0,-4717)|0)+16384+((A-h|0)*1684|0)+((m-h|0)*6817|0)>>15;y=(n+l|0)*5915|0;c[k>>2]=(j*3283|0)+16384+(n*1461|0)+y>>15;c[s>>2]=(ea(j,-7376)|0)+16384+(ea(l,-9198)|0)+y>>15;s=b+q|0;y=r-e|0;c[o>>2]=((u-s+v-y-w|0)*5350|0)+16384>>15;v=v*5350|0;s=(y*7518|0)-v+(ea(s,-847)|0)|0;y=((w+e|0)*4025|0)+((b+u|0)*6406|0)|0;c[x>>2]=(ea(b,-12700)|0)+16384+(e*5992|0)+s+y>>15;x=((r-w|0)*2499|0)+((q+u|0)*7141|0)|0;c[t>>2]=(ea(q,-2269)|0)+16384+(ea(r,-16423)|0)+s+x>>15;c[z>>2]=(ea(u,-6029)|0)+16384+v+(ea(w,-679)|0)+x+y>>15;g=g+1|0;if((g|0)==7)break;else{a=a+4|0;f=f+4|0}}i=p;return}function XG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;o=i;i=i+128|0;f=o;Cga(a|0,0,256)|0;g=e+5|0;h=e+1|0;j=e+4|0;k=e+2|0;l=e+3|0;m=0;n=a;while(1){q=c[b+(m<<2)>>2]|0;y=d[q+e>>0]|0;s=d[q+g>>0]|0;v=s+y|0;x=d[q+h>>0]|0;p=d[q+j>>0]|0;t=p+x|0;w=d[q+k>>0]|0;q=d[q+l>>0]|0;u=q+w|0;r=u+v|0;s=y-s|0;p=x-p|0;q=w-q|0;c[n>>2]=(r+t<<2)+-3072;c[n+8>>2]=((v-u|0)*10033|0)+1024>>11;c[n+16>>2]=(((ea(t,-2)|0)+r|0)*5793|0)+1024>>11;r=((q+s|0)*2998|0)+1024>>11;c[n+4>>2]=r+(p+s<<2);c[n+12>>2]=s-p-q<<2;c[n+20>>2]=r+(q-p<<2);if((m|0)==7){m=8;n=f;continue}else if((m|0)==11){g=0;break}m=m+1|0;n=n+32|0}while(1){G=c[a>>2]|0;j=c[f+96>>2]|0;e=j+G|0;k=a+32|0;F=c[k>>2]|0;w=c[f+64>>2]|0;A=w+F|0;p=a+64|0;E=c[p>>2]|0;l=c[f+32>>2]|0;H=l+E|0;b=a+96|0;D=c[b>>2]|0;t=c[f>>2]|0;v=t+D|0;x=a+128|0;C=c[x>>2]|0;y=a+224|0;q=c[y>>2]|0;z=q+C|0;s=a+160|0;B=c[s>>2]|0;m=a+192|0;r=c[m>>2]|0;u=r+B|0;h=u+e|0;u=e-u|0;e=A-z|0;n=v+H|0;v=H-v|0;j=G-j|0;w=F-w|0;l=E-l|0;t=D-t|0;q=C-q|0;r=B-r|0;c[a>>2]=((n+A+z+h|0)*7282|0)+16384>>15;c[m>>2]=((u-(e+v)|0)*7282|0)+16384>>15;c[x>>2]=((h-n|0)*8918|0)+16384>>15;c[p>>2]=((e-v|0)*7282|0)+16384+((u+v|0)*9947|0)>>15;p=(q+w|0)*3941|0;w=p+(w*5573|0)|0;q=p+(ea(q,-13455)|0)|0;p=(l+j|0)*8170|0;v=(t+j|0)*6269|0;u=ea(t+l|0,-1344)|0;e=ea(l,-17036)|0;x=ea(r,-8170)|0;l=ea(r+l|0,-3941)|0;c[k>>2]=(ea(j,-4229)|0)+16384+p+v+w+(r*1344|0)>>15;c[b>>2]=((j-t|0)*9514|0)+16384+q+l>>15;c[s>>2]=e+16384+p+u-q+(r*6269|0)>>15;c[y>>2]=(t*5285|0)+16384+u+v-w+x>>15;g=g+1|0;if((g|0)==6)break;else{a=a+4|0;f=f+4|0}}i=o;return}function YG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;n=i;i=i+64|0;f=n;Cga(a|0,0,256)|0;g=e+4|0;h=e+1|0;j=e+3|0;k=e+2|0;l=0;m=a;while(1){o=c[b+(l<<2)>>2]|0;v=d[o+e>>0]|0;q=d[o+g>>0]|0;s=q+v|0;u=d[o+h>>0]|0;p=d[o+j>>0]|0;r=p+u|0;o=d[o+k>>0]|0;t=r+s|0;q=v-q|0;p=u-p|0;c[m>>2]=(t+o<<2)+-2560;o=(t-(o<<2)|0)*2896|0;r=((s-r|0)*6476|0)+1024|0;c[m+8>>2]=r+o>>11;c[m+16>>2]=r-o>>11;o=(p+q|0)*6810|0;c[m+4>>2]=(q*4209|0)+1024+o>>11;c[m+12>>2]=(ea(p,-17828)|0)+1024+o>>11;if((l|0)==9){g=0;break}else if((l|0)==7){l=8;m=f;continue}l=l+1|0;m=m+32|0}while(1){C=c[a>>2]|0;p=c[f+32>>2]|0;x=p+C|0;l=a+32|0;B=c[l>>2]|0;t=c[f>>2]|0;D=t+B|0;b=a+64|0;A=c[b>>2]|0;v=a+224|0;e=c[v>>2]|0;m=e+A|0;s=a+96|0;z=c[s>>2]|0;o=a+192|0;r=c[o>>2]|0;k=r+z|0;u=a+128|0;y=c[u>>2]|0;j=a+160|0;q=c[j>>2]|0;h=q+y|0;w=h+x|0;h=x-h|0;x=k+D|0;k=D-k|0;p=C-p|0;t=B-t|0;e=A-e|0;r=z-r|0;q=y-q|0;c[a>>2]=((x+m+w|0)*10486|0)+16384>>15;m=m<<1;c[u>>2]=(ea(x-m|0,-4582)|0)+16384+((w-m|0)*11997|0)>>15;u=(h+k|0)*8716|0;c[b>>2]=(h*5387|0)+16384+u>>15;c[o>>2]=(ea(k,-22820)|0)+16384+u>>15;o=q+p|0;u=t-r|0;c[j>>2]=((o-(u+e)|0)*10486|0)+16384>>15;e=e*10486|0;c[l>>2]=(p*14647|0)+16384+(t*13213|0)+e+(r*6732|0)+(q*2320|0)>>15;u=(u*5243|0)-e+((o+u|0)*3240|0)|0;t=((p-q|0)*9973|0)+(ea(r+t|0,-6163)|0)+16384|0;c[s>>2]=t+u>>15;c[v>>2]=t-u>>15;g=g+1|0;if((g|0)==5)break;else{a=a+4|0;f=f+4|0}}i=n;return}function ZG(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;l=i;Cga(a|0,0,256)|0;f=e+3|0;g=e+1|0;h=e+2|0;j=0;k=a;while(1){m=c[b+(j<<2)>>2]|0;r=d[m+e>>0]|0;o=d[m+f>>0]|0;p=o+r|0;q=d[m+g>>0]|0;m=d[m+h>>0]|0;n=m+q|0;o=r-o|0;m=q-m|0;c[k>>2]=(n+p<<3)+-4096;c[k+8>>2]=p-n<<3;n=((m+o|0)*4433|0)+512|0;c[k+4>>2]=n+(o*6270|0)>>10;c[k+12>>2]=n+(ea(m,-15137)|0)>>10;j=j+1|0;if((j|0)==8){f=0;break}else k=k+32|0}while(1){y=c[a>>2]|0;r=a+224|0;e=c[r>>2]|0;t=e+y|0;h=a+32|0;x=c[h>>2]|0;m=a+192|0;g=c[m>>2]|0;z=g+x|0;j=a+64|0;w=c[j>>2]|0;n=a+160|0;b=c[n>>2]|0;q=b+w|0;k=a+96|0;v=c[k>>2]|0;o=a+128|0;p=c[o>>2]|0;s=p+v|0;u=t+2+s|0;s=t-s|0;t=q+z|0;q=z-q|0;e=y-e|0;g=x-g|0;b=w-b|0;p=v-p|0;c[a>>2]=u+t>>2;c[o>>2]=u-t>>2;o=((s+q|0)*4433|0)+16384|0;c[j>>2]=o+(s*6270|0)>>15;c[m>>2]=o+(ea(q,-15137)|0)>>15;m=b+e|0;q=p+g|0;o=((q+m|0)*9633|0)+16384|0;m=o+(ea(m,-3196)|0)|0;q=o+(ea(q,-16069)|0)|0;o=ea(p+e|0,-7373)|0;j=ea(b+g|0,-20995)|0;c[h>>2]=o+(e*12299|0)+m>>15;c[k>>2]=j+(g*25172|0)+q>>15;c[n>>2]=j+(b*16819|0)+m>>15;c[r>>2]=o+(p*2446|0)+q>>15;f=f+1|0;if((f|0)==4)break;else a=a+4|0}i=l;return}function _G(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;k=i;Cga(a|0,0,256)|0;f=e+2|0;g=e+1|0;h=0;j=a;while(1){o=c[b+(h<<2)>>2]|0;m=d[o+e>>0]|0;l=d[o+f>>0]|0;n=l+m|0;o=d[o+g>>0]|0;c[j>>2]=(n+o<<3)+-3072;c[j+8>>2]=(((ea(o,-2)|0)+n|0)*5793|0)+512>>10;c[j+4>>2]=((m-l|0)*10033|0)+512>>10;h=h+1|0;if((h|0)==6){f=0;break}else j=j+32|0}while(1){u=c[a>>2]|0;o=a+160|0;b=c[o>>2]|0;r=b+u|0;l=a+32|0;t=c[l>>2]|0;n=a+128|0;m=c[n>>2]|0;h=m+t|0;p=a+64|0;s=c[p>>2]|0;j=a+96|0;e=c[j>>2]|0;q=e+s|0;g=q+r|0;b=u-b|0;m=t-m|0;e=s-e|0;c[a>>2]=((g+h|0)*14564|0)+16384>>15;c[p>>2]=((r-q|0)*17837|0)+16384>>15;c[n>>2]=(((ea(h,-2)|0)+g|0)*10298|0)+16384>>15;n=(e+b|0)*5331|0;c[l>>2]=((m+b|0)*14564|0)+16384+n>>15;c[j>>2]=((b-m-e|0)*14564|0)+16384>>15;c[o>>2]=((e-m|0)*14564|0)+16384+n>>15;f=f+1|0;if((f|0)==3)break;else a=a+4|0}i=k;return}function $G(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=i;Cga(a|0,0,256)|0;g=e+1|0;m=c[b>>2]|0;j=d[m+e>>0]|0;m=d[m+g>>0]|0;q=(m+j<<3)+-2048|0;c[a>>2]=q;m=j-m<<3;j=a+4|0;c[j>>2]=m;n=a+32|0;l=c[b+4>>2]|0;k=d[l+e>>0]|0;l=d[l+g>>0]|0;p=(l+k<<3)+-2048|0;c[n>>2]=p;l=k-l<<3;c[a+36>>2]=l;k=c[b+8>>2]|0;o=d[k+e>>0]|0;k=d[k+g>>0]|0;h=(k+o<<3)+-2048|0;c[a+64>>2]=h;k=o-k<<3;c[a+68>>2]=k;b=c[b+12>>2]|0;o=d[b+e>>0]|0;g=d[b+g>>0]|0;e=(g+o<<3)+-2048|0;g=o-g<<3;o=e+q|0;b=h+p|0;e=q-e|0;h=p-h|0;c[a>>2]=b+o;c[a+64>>2]=o-b;b=((h+e|0)*4433|0)+4096|0;c[n>>2]=b+(e*6270|0)>>13;c[a+96>>2]=b+(ea(h,-15137)|0)>>13;h=g+m|0;b=k+l|0;g=m-g|0;e=l-k|0;c[j>>2]=b+h;c[a+68>>2]=h-b;b=((e+g|0)*4433|0)+4096|0;c[a+36>>2]=b+(g*6270|0)>>13;c[a+100>>2]=b+(ea(e,-15137)|0)>>13;i=f;return}function aH(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;f=i;Cga(a|0,0,256)|0;g=d[(c[b>>2]|0)+e>>0]|0;e=d[(c[b+4>>2]|0)+e>>0]|0;c[a>>2]=(e+g<<5)+-8192;c[a+32>>2]=g-e<<5;i=f;return}function bH(d,e,f,h,j){d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;s=i;i=i+256|0;r=s;q=c[d+300>>2]|0;o=8;k=c[e+84>>2]|0;l=r;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){t=+(b[f>>1]|0)*+g[k>>2];g[l>>2]=t;g[l+32>>2]=t;g[l+64>>2]=t;g[l+96>>2]=t;g[l+128>>2]=t;g[l+160>>2]=t;g[l+192>>2]=t;g[l+224>>2]=t}else{d=0;p=10}else p=10;if((p|0)==10){p=0;u=+(b[f>>1]|0)*+g[k>>2];A=+(d<<16>>16)*+g[k+64>>2];z=+(b[f+64>>1]|0)*+g[k+128>>2];w=+(b[f+96>>1]|0)*+g[k+192>>2];y=u+z;z=u-z;u=A+w;w=(A-w)*1.4142135381698608-u;A=y+u;u=y-u;y=z+w;w=z-w;z=+(e<<16>>16)*+g[k+32>>2];x=+(b[f+48>>1]|0)*+g[k+96>>2];C=+(b[f+80>>1]|0)*+g[k+160>>2];t=+(b[f+112>>1]|0)*+g[k+224>>2];v=x+C;x=C-x;C=z+t;t=z-t;z=v+C;B=(x+t)*1.8477590084075928;x=B-x*2.613126039505005-z;v=(C-v)*1.4142135381698608-x;t=B-t*1.0823922157287598-v;g[l>>2]=A+z;g[l+224>>2]=A-z;g[l+32>>2]=y+x;g[l+192>>2]=y-x;g[l+64>>2]=w+v;g[l+160>>2]=w-v;g[l+96>>2]=u+t;g[l+128>>2]=u-t}o=o+-1|0;if((o|0)<=0)break;else{f=f+2|0;k=k+4|0;l=l+4|0}}k=j+7|0;f=j+1|0;e=j+6|0;l=j+2|0;m=j+5|0;n=j+3|0;o=j+4|0;p=0;d=r;while(1){r=c[h+(p<<2)>>2]|0;t=+g[d>>2]+128.5;v=+g[d+16>>2];u=t+v;v=t-v;t=+g[d+8>>2];w=+g[d+24>>2];B=t+w;w=(t-w)*1.4142135381698608-B;t=u+B;B=u-B;u=v+w;w=v-w;v=+g[d+20>>2];y=+g[d+12>>2];A=v+y;y=v-y;v=+g[d+4>>2];C=+g[d+28>>2];z=v+C;C=v-C;v=A+z;x=(y+C)*1.8477590084075928;y=x-y*2.613126039505005-v;A=(z-A)*1.4142135381698608-y;C=x-C*1.0823922157287598-A;a[r+j>>0]=a[q+(~~(t+v)&1023)>>0]|0;a[r+k>>0]=a[q+(~~(t-v)&1023)>>0]|0;a[r+f>>0]=a[q+(~~(u+y)&1023)>>0]|0;a[r+e>>0]=a[q+(~~(u-y)&1023)>>0]|0;a[r+l>>0]=a[q+(~~(w+A)&1023)>>0]|0;a[r+m>>0]=a[q+(~~(w-A)&1023)>>0]|0;a[r+n>>0]=a[q+(~~(B+C)&1023)>>0]|0;a[r+o>>0]=a[q+(~~(B-C)&1023)>>0]|0;p=p+1|0;if((p|0)==8)break;else d=d+32|0}i=s;return}function cH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;w=i;i=i+256|0;t=w;u=c[d+300>>2]|0;l=8;j=c[e+84>>2]|0;k=t;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){s=ea(b[f>>1]|0,c[j>>2]|0)|0;c[k>>2]=s;c[k+32>>2]=s;c[k+64>>2]=s;c[k+96>>2]=s;c[k+128>>2]=s;c[k+160>>2]=s;c[k+192>>2]=s;c[k+224>>2]=s}else{d=0;v=10}else v=10;if((v|0)==10){v=0;r=ea(b[f>>1]|0,c[j>>2]|0)|0;n=ea(d<<16>>16,c[j+64>>2]|0)|0;m=ea(b[f+64>>1]|0,c[j+128>>2]|0)|0;p=ea(b[f+96>>1]|0,c[j+192>>2]|0)|0;o=m+r|0;m=r-m|0;r=p+n|0;p=((n-p|0)*362>>8)-r|0;n=r+o|0;r=o-r|0;o=p+m|0;p=m-p|0;e=ea(e<<16>>16,c[j+32>>2]|0)|0;m=ea(b[f+48>>1]|0,c[j+96>>2]|0)|0;x=ea(b[f+80>>1]|0,c[j+160>>2]|0)|0;d=ea(b[f+112>>1]|0,c[j+224>>2]|0)|0;q=x+m|0;m=x-m|0;x=d+e|0;d=e-d|0;e=x+q|0;s=(d+m|0)*473>>8;m=((ea(m,-669)|0)>>8)-e+s|0;q=((x-q|0)*362>>8)-m|0;s=q+((d*277>>8)-s)|0;c[k>>2]=e+n;c[k+224>>2]=n-e;c[k+32>>2]=m+o;c[k+192>>2]=o-m;c[k+64>>2]=q+p;c[k+160>>2]=p-q;c[k+128>>2]=s+r;c[k+96>>2]=r-s}l=l+-1|0;if((l|0)<=0)break;else{f=f+2|0;j=j+4|0;k=k+4|0}}k=h+1|0;m=h+2|0;n=h+3|0;o=h+4|0;p=h+5|0;q=h+6|0;r=h+7|0;s=0;l=t;while(1){j=c[g+(s<<2)>>2]|0;f=j+h|0;e=c[l+4>>2]|0;d=c[l+8>>2]|0;if(!(e|d))if(((((c[l+12>>2]|0)==0?(c[l+16>>2]|0)==0:0)?(c[l+20>>2]|0)==0:0)?(c[l+24>>2]|0)==0:0)?(c[l+28>>2]|0)==0:0){x=a[u+(((c[l>>2]|0)>>>5&1023)+128)>>0]|0;a[f>>0]=x;a[j+k>>0]=x;a[j+m>>0]=x;a[j+n>>0]=x;a[j+o>>0]=x;a[j+p>>0]=x;a[j+q>>0]=x;a[j+r>>0]=x}else{d=0;v=19}else v=19;if((v|0)==19){v=0;B=c[l>>2]|0;C=c[l+16>>2]|0;z=C+B|0;C=B-C|0;B=c[l+24>>2]|0;t=B+d|0;d=((d-B|0)*362>>8)-t|0;B=t+z|0;t=z-t|0;z=d+C|0;d=C-d|0;C=c[l+20>>2]|0;y=c[l+12>>2]|0;D=y+C|0;y=C-y|0;C=c[l+28>>2]|0;E=C+e|0;C=e-C|0;A=E+D|0;x=(C+y|0)*473>>8;y=((ea(y,-669)|0)>>8)-A+x|0;e=((E-D|0)*362>>8)-y|0;x=e+((C*277>>8)-x)|0;a[f>>0]=a[u+(((A+B|0)>>>5&1023)+128)>>0]|0;a[j+r>>0]=a[u+(((B-A|0)>>>5&1023)+128)>>0]|0;a[j+k>>0]=a[u+(((y+z|0)>>>5&1023)+128)>>0]|0;a[j+q>>0]=a[u+(((z-y|0)>>>5&1023)+128)>>0]|0;a[j+m>>0]=a[u+(((e+d|0)>>>5&1023)+128)>>0]|0;a[j+p>>0]=a[u+(((d-e|0)>>>5&1023)+128)>>0]|0;a[j+o>>0]=a[u+(((x+t|0)>>>5&1023)+128)>>0]|0;a[j+n>>0]=a[u+(((t-x|0)>>>5&1023)+128)>>0]|0}s=s+1|0;if((s|0)==8)break;else l=l+32|0}i=w;return}function dH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;w=i;i=i+256|0;t=w;u=c[d+300>>2]|0;l=8;j=c[e+84>>2]|0;k=t;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){s=ea(c[j>>2]<<2,b[f>>1]|0)|0;c[k>>2]=s;c[k+32>>2]=s;c[k+64>>2]=s;c[k+96>>2]=s;c[k+128>>2]=s;c[k+160>>2]=s;c[k+192>>2]=s;c[k+224>>2]=s}else{d=0;v=10}else v=10;if((v|0)==10){v=0;r=ea(d<<16>>16,c[j+64>>2]|0)|0;p=ea(b[f+96>>1]|0,c[j+192>>2]|0)|0;s=(p+r|0)*4433|0;r=s+(r*6270|0)|0;p=s+(ea(p,-15137)|0)|0;s=ea(c[j+128>>2]<<13,b[f+64>>1]|0)|0;n=ea(c[j>>2]<<13,b[f>>1]|0)|0|1024;o=s+n|0;s=n-s|0;n=o+r|0;r=o-r|0;o=s+p|0;p=s-p|0;s=ea(b[f+112>>1]|0,c[j+224>>2]|0)|0;y=ea(b[f+80>>1]|0,c[j+160>>2]|0)|0;d=ea(b[f+48>>1]|0,c[j+96>>2]|0)|0;e=ea(e<<16>>16,c[j+32>>2]|0)|0;m=d+s|0;q=e+y|0;x=(q+m|0)*9633|0;m=x+(ea(m,-16069)|0)|0;q=x+(ea(q,-3196)|0)|0;x=ea(e+s|0,-7373)|0;s=x+(s*2446|0)+m|0;e=x+(e*12299|0)+q|0;x=ea(d+y|0,-20995)|0;q=x+(y*16819|0)+q|0;m=x+(d*25172|0)+m|0;c[k>>2]=e+n>>11;c[k+224>>2]=n-e>>11;c[k+32>>2]=m+o>>11;c[k+192>>2]=o-m>>11;c[k+64>>2]=q+p>>11;c[k+160>>2]=p-q>>11;c[k+96>>2]=s+r>>11;c[k+128>>2]=r-s>>11}l=l+-1|0;if((l|0)<=0)break;else{f=f+2|0;j=j+4|0;k=k+4|0}}k=h+1|0;m=h+2|0;n=h+3|0;o=h+4|0;p=h+5|0;q=h+6|0;r=h+7|0;s=0;l=t;while(1){j=c[g+(s<<2)>>2]|0;f=j+h|0;e=c[l+4>>2]|0;d=c[l+8>>2]|0;if(!(e|d))if(((((c[l+12>>2]|0)==0?(c[l+16>>2]|0)==0:0)?(c[l+20>>2]|0)==0:0)?(c[l+24>>2]|0)==0:0)?(c[l+28>>2]|0)==0:0){y=a[u+((((c[l>>2]|0)+16|0)>>>5&1023)+128)>>0]|0;a[f>>0]=y;a[j+k>>0]=y;a[j+m>>0]=y;a[j+n>>0]=y;a[j+o>>0]=y;a[j+p>>0]=y;a[j+q>>0]=y;a[j+r>>0]=y}else{d=0;v=19}else v=19;if((v|0)==19){v=0;B=c[l+24>>2]|0;y=(B+d|0)*4433|0;x=y+(d*6270|0)|0;d=y+(ea(B,-15137)|0)|0;B=(c[l>>2]|0)+16|0;y=c[l+16>>2]|0;z=B+y<<13;y=B-y<<13;B=z+x|0;x=z-x|0;z=y+d|0;d=y-d|0;y=c[l+28>>2]|0;E=c[l+20>>2]|0;D=c[l+12>>2]|0;C=D+y|0;t=e+E|0;A=(t+C|0)*9633|0;C=A+(ea(C,-16069)|0)|0;t=A+(ea(t,-3196)|0)|0;A=ea(e+y|0,-7373)|0;y=A+(y*2446|0)+C|0;A=A+(e*12299|0)+t|0;e=ea(D+E|0,-20995)|0;t=e+(E*16819|0)+t|0;e=e+(D*25172|0)+C|0;a[f>>0]=a[u+(((A+B|0)>>>18&1023)+128)>>0]|0;a[j+r>>0]=a[u+(((B-A|0)>>>18&1023)+128)>>0]|0;a[j+k>>0]=a[u+(((e+z|0)>>>18&1023)+128)>>0]|0;a[j+q>>0]=a[u+(((z-e|0)>>>18&1023)+128)>>0]|0;a[j+m>>0]=a[u+(((t+d|0)>>>18&1023)+128)>>0]|0;a[j+p>>0]=a[u+(((d-t|0)>>>18&1023)+128)>>0]|0;a[j+n>>0]=a[u+(((y+x|0)>>>18&1023)+128)>>0]|0;a[j+o>>0]=a[u+(((x-y|0)>>>18&1023)+128)>>0]|0}s=s+1|0;if((s|0)==8)break;else l=l+32|0}i=w;return}function eH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;q=i;i=i+208|0;p=q;o=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=p;while(1){m=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;x=ea(b[f+32>>1]|0,c[d+64>>2]|0)|0;l=ea(b[f+64>>1]|0,c[d+128>>2]|0)|0;v=ea(b[f+96>>1]|0,c[d+192>>2]|0)|0;w=(l-v|0)*7223|0;n=(x-l|0)*2578|0;t=(ea(l,-15083)|0)+m+n+w|0;k=v+x|0;r=(k*10438|0)+m|0;v=w+(ea(v,-637)|0)+r|0;r=n+(ea(x,-20239)|0)+r|0;x=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;n=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;w=ea(b[f+80>>1]|0,c[d+160>>2]|0)|0;y=(n+x|0)*7663|0;u=(x-n|0)*1395|0;n=ea(w+n|0,-11295)|0;s=y+u+n|0;x=(w+x|0)*5027|0;u=x+(y-u)|0;n=x+(w*15326|0)+n|0;c[e>>2]=u+v>>11;c[e+168>>2]=v-u>>11;c[e+28>>2]=s+t>>11;c[e+140>>2]=t-s>>11;c[e+56>>2]=n+r>>11;c[e+112>>2]=r-n>>11;c[e+84>>2]=((l-k|0)*11585|0)+m>>11;j=j+1|0;if((j|0)==7)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}e=h+6|0;k=h+1|0;l=h+5|0;m=h+2|0;j=h+4|0;f=h+3|0;n=0;d=p;while(1){y=c[g+(n<<2)>>2]|0;x=(c[d>>2]<<13)+131072|0;B=c[d+8>>2]|0;v=c[d+16>>2]|0;z=c[d+24>>2]|0;A=(v-z|0)*7223|0;u=(B-v|0)*2578|0;r=(ea(v,-15083)|0)+x+u+A|0;w=z+B|0;t=(w*10438|0)+x|0;z=A+(ea(z,-637)|0)+t|0;t=u+(ea(B,-20239)|0)+t|0;B=c[d+4>>2]|0;u=c[d+12>>2]|0;A=c[d+20>>2]|0;C=(u+B|0)*7663|0;p=(B-u|0)*1395|0;u=ea(A+u|0,-11295)|0;s=C+p+u|0;B=(A+B|0)*5027|0;p=C-p+B|0;u=B+(A*15326|0)+u|0;a[y+h>>0]=a[o+(((p+z|0)>>>18&1023)+128)>>0]|0;a[y+e>>0]=a[o+(((z-p|0)>>>18&1023)+128)>>0]|0;a[y+k>>0]=a[o+(((s+r|0)>>>18&1023)+128)>>0]|0;a[y+l>>0]=a[o+(((r-s|0)>>>18&1023)+128)>>0]|0;a[y+m>>0]=a[o+(((u+t|0)>>>18&1023)+128)>>0]|0;a[y+j>>0]=a[o+(((t-u|0)>>>18&1023)+128)>>0]|0;a[y+f>>0]=a[o+(((((v-w|0)*11585|0)+x|0)>>>18&1023)+128)>>0]|0;n=n+1|0;if((n|0)==7)break;else d=d+28|0}i=q;return}function fH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;p=i;i=i+144|0;o=p;n=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=o;while(1){q=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;k=ea((c[d+128>>2]|0)*5793|0,b[f+64>>1]|0)|0;u=k+q|0;q=(ea(k,-2)|0)+q>>11;k=ea((c[d+64>>2]|0)*10033|0,b[f+32>>1]|0)|0;s=k+u|0;k=u-k|0;u=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;t=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;l=ea(b[f+80>>1]|0,c[d+160>>2]|0)|0;m=(l+u|0)*2998|0;r=m+(t+u<<13)|0;m=m+(l-t<<13)|0;l=u-t-l<<2;c[e>>2]=r+s>>11;c[e+120>>2]=s-r>>11;c[e+24>>2]=l+q;c[e+96>>2]=q-l;c[e+48>>2]=m+k>>11;c[e+72>>2]=k-m>>11;j=j+1|0;if((j|0)==6)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}f=h+5|0;e=h+1|0;k=h+4|0;l=h+2|0;j=h+3|0;m=0;d=o;while(1){u=c[g+(m<<2)>>2]|0;s=(c[d>>2]<<13)+131072|0;q=(c[d+16>>2]|0)*5793|0;x=s+q|0;q=s-q-q|0;s=(c[d+8>>2]|0)*10033|0;v=x+s|0;s=x-s|0;x=c[d+4>>2]|0;w=c[d+12>>2]|0;r=c[d+20>>2]|0;t=(r+x|0)*2998|0;o=t+(w+x<<13)|0;t=t+(r-w<<13)|0;r=x-w-r<<13;a[u+h>>0]=a[n+(((o+v|0)>>>18&1023)+128)>>0]|0;a[u+f>>0]=a[n+(((v-o|0)>>>18&1023)+128)>>0]|0;a[u+e>>0]=a[n+(((r+q|0)>>>18&1023)+128)>>0]|0;a[u+k>>0]=a[n+(((q-r|0)>>>18&1023)+128)>>0]|0;a[u+l>>0]=a[n+(((t+s|0)>>>18&1023)+128)>>0]|0;a[u+j>>0]=a[n+(((s-t|0)>>>18&1023)+128)>>0]|0;m=m+1|0;if((m|0)==6)break;else d=d+24|0}i=p;return}function gH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;o=i;i=i+112|0;n=o;m=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=n;while(1){k=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;l=ea(b[f+32>>1]|0,c[d+64>>2]|0)|0;q=ea(b[f+64>>1]|0,c[d+128>>2]|0)|0;p=(q+l|0)*6476|0;q=l-q|0;l=(q*2896|0)+k|0;r=l+p|0;p=l-p|0;k=(ea(q,-11584)|0)+k|0;q=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;l=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;s=(l+q|0)*6810|0;q=s+(q*4209|0)|0;l=s+(ea(l,-17828)|0)|0;c[e>>2]=q+r>>11;c[e+80>>2]=r-q>>11;c[e+20>>2]=l+p>>11;c[e+60>>2]=p-l>>11;c[e+40>>2]=k>>11;j=j+1|0;if((j|0)==5)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}f=h+4|0;e=h+1|0;j=h+3|0;k=h+2|0;l=0;d=n;while(1){s=c[g+(l<<2)>>2]|0;r=(c[d>>2]<<13)+131072|0;q=c[d+8>>2]|0;n=c[d+16>>2]|0;p=(n+q|0)*6476|0;n=q-n|0;q=(n*2896|0)+r|0;t=q+p|0;p=q-p|0;r=(ea(n,-11584)|0)+r|0;n=c[d+4>>2]|0;q=c[d+12>>2]|0;u=(q+n|0)*6810|0;n=u+(n*4209|0)|0;q=u+(ea(q,-17828)|0)|0;a[s+h>>0]=a[m+(((n+t|0)>>>18&1023)+128)>>0]|0;a[s+f>>0]=a[m+(((t-n|0)>>>18&1023)+128)>>0]|0;a[s+e>>0]=a[m+(((q+p|0)>>>18&1023)+128)>>0]|0;a[s+j>>0]=a[m+(((p-q|0)>>>18&1023)+128)>>0]|0;a[s+k>>0]=a[m+((r>>>18&1023)+128)>>0]|0;l=l+1|0;if((l|0)==5)break;else d=d+20|0}i=o;return}function hH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=i;i=i+64|0;m=n;l=c[d+300>>2]|0;k=0;d=c[e+84>>2]|0;j=m;while(1){p=ea(b[f>>1]|0,c[d>>2]|0)|0;o=ea(b[f+32>>1]|0,c[d+64>>2]|0)|0;q=o+p<<2;o=p-o<<2;p=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;e=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;r=((e+p|0)*4433|0)+1024|0;p=r+(p*6270|0)>>11;e=r+(ea(e,-15137)|0)>>11;c[j>>2]=p+q;c[j+48>>2]=q-p;c[j+16>>2]=e+o;c[j+32>>2]=o-e;k=k+1|0;if((k|0)==4)break;else{f=f+2|0;d=d+4|0;j=j+4|0}}f=h+3|0;j=h+1|0;e=h+2|0;k=0;d=m;while(1){r=c[g+(k<<2)>>2]|0;o=(c[d>>2]|0)+16|0;p=c[d+8>>2]|0;m=o+p<<13;p=o-p<<13;o=c[d+4>>2]|0;q=c[d+12>>2]|0;s=(q+o|0)*4433|0;o=s+(o*6270|0)|0;q=s+(ea(q,-15137)|0)|0;a[r+h>>0]=a[l+(((o+m|0)>>>18&1023)+128)>>0]|0;a[r+f>>0]=a[l+(((m-o|0)>>>18&1023)+128)>>0]|0;a[r+j>>0]=a[l+(((q+p|0)>>>18&1023)+128)>>0]|0;a[r+e>>0]=a[l+(((p-q|0)>>>18&1023)+128)>>0]|0;k=k+1|0;if((k|0)==4)break;else d=d+16|0}i=n;return}function iH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=i;i=i+48|0;l=j;d=c[d+300>>2]|0;n=c[e+84>>2]|0;o=ea(c[n>>2]<<13,b[f>>1]|0)|0|1024;m=ea((c[n+64>>2]|0)*5793|0,b[f+32>>1]|0)|0;q=m+o|0;o=(ea(m,-2)|0)+o|0;m=ea((c[n+32>>2]|0)*10033|0,b[f+16>>1]|0)|0;p=m+q>>11;c[l>>2]=p;c[l+24>>2]=q-m>>11;m=l+12|0;c[m>>2]=o>>11;o=ea(c[n+4>>2]<<13,b[f+2>>1]|0)|0|1024;q=ea((c[n+68>>2]|0)*5793|0,b[f+34>>1]|0)|0;t=q+o|0;o=(ea(q,-2)|0)+o|0;q=ea((c[n+36>>2]|0)*10033|0,b[f+18>>1]|0)|0;r=q+t>>11;c[l+4>>2]=r;c[l+28>>2]=t-q>>11;o=o>>11;c[l+16>>2]=o;q=ea(c[n+8>>2]<<13,b[f+4>>1]|0)|0|1024;t=ea((c[n+72>>2]|0)*5793|0,b[f+36>>1]|0)|0;k=t+q|0;q=(ea(t,-2)|0)+q|0;n=ea((c[n+40>>2]|0)*10033|0,b[f+20>>1]|0)|0;t=n+k>>11;c[l+8>>2]=t;n=k-n>>11;c[l+32>>2]=n;q=q>>11;c[l+20>>2]=q;k=h+2|0;e=h+1|0;f=c[g>>2]|0;p=(p<<13)+131072|0;s=p+(t*5793|0)|0;p=(ea(t,-11586)|0)+p|0;r=r*10033|0;a[f+h>>0]=a[d+(((s+r|0)>>>18&1023)+128)>>0]|0;a[f+k>>0]=a[d+(((s-r|0)>>>18&1023)+128)>>0]|0;a[f+e>>0]=a[d+((p>>>18&1023)+128)>>0]|0;f=c[g+4>>2]|0;m=(c[m>>2]<<13)+131072|0;p=m+(q*5793|0)|0;m=(ea(q,-11586)|0)+m|0;o=o*10033|0;a[f+h>>0]=a[d+(((p+o|0)>>>18&1023)+128)>>0]|0;a[f+k>>0]=a[d+(((p-o|0)>>>18&1023)+128)>>0]|0;a[f+e>>0]=a[d+((m>>>18&1023)+128)>>0]|0;g=c[g+8>>2]|0;f=(c[l+24>>2]<<13)+131072|0;m=f+(n*5793|0)|0;f=(ea(n,-11586)|0)+f|0;l=(c[l+28>>2]|0)*10033|0;a[g+h>>0]=a[d+(((m+l|0)>>>18&1023)+128)>>0]|0;a[g+k>>0]=a[d+(((m-l|0)>>>18&1023)+128)>>0]|0;a[g+e>>0]=a[d+((f>>>18&1023)+128)>>0]|0;i=j;return}function jH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;i=c[d+300>>2]|0;k=c[e+84>>2]|0;j=ea(b[f>>1]|0,c[k>>2]|0)|0;d=ea(b[f+16>>1]|0,c[k+32>>2]|0)|0;j=j+4|0;l=d+j|0;d=j-d|0;j=ea(b[f+2>>1]|0,c[k+4>>2]|0)|0;f=ea(b[f+18>>1]|0,c[k+36>>2]|0)|0;k=f+j|0;f=j-f|0;j=c[g>>2]|0;a[j+h>>0]=a[i+(((k+l|0)>>>3&1023)+128)>>0]|0;e=h+1|0;a[j+e>>0]=a[i+(((l-k|0)>>>3&1023)+128)>>0]|0;g=c[g+4>>2]|0;a[g+h>>0]=a[i+(((f+d|0)>>>3&1023)+128)>>0]|0;a[g+e>>0]=a[i+(((d-f|0)>>>3&1023)+128)>>0]|0;return}function kH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;e=a[(c[d+300>>2]|0)+((((ea(b[f>>1]|0,c[c[e+84>>2]>>2]|0)|0)+4|0)>>>3&1023)+128)>>0]|0;a[(c[g>>2]|0)+h>>0]=e;return}function lH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;s=i;i=i+288|0;r=s;q=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=r;while(1){o=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;x=ea(b[f+32>>1]|0,c[d+64>>2]|0)|0;k=ea(b[f+64>>1]|0,c[d+128>>2]|0)|0;p=ea((c[d+192>>2]|0)*5793|0,b[f+96>>1]|0)|0;w=p+o|0;p=o-p-p|0;o=x-k|0;t=p+(o*5793|0)|0;p=(ea(o,-11586)|0)+p|0;o=(k+x|0)*10887|0;x=x*8875|0;k=k*2012|0;v=o-k+w|0;o=w-o+x|0;k=w-x+k|0;x=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;w=ea(b[f+80>>1]|0,c[d+160>>2]|0)|0;n=ea(b[f+112>>1]|0,c[d+224>>2]|0)|0;y=ea(ea(c[d+96>>2]|0,-10033)|0,b[f+48>>1]|0)|0;l=(w+x|0)*7447|0;m=(n+x|0)*3962|0;u=l-y+m|0;z=(w-n|0)*11409|0;l=y-z+l|0;m=z+y+m|0;n=(x-w-n|0)*10033|0;c[e>>2]=u+v>>11;c[e+256>>2]=v-u>>11;c[e+32>>2]=n+t>>11;c[e+224>>2]=t-n>>11;c[e+64>>2]=l+o>>11;c[e+192>>2]=o-l>>11;c[e+96>>2]=m+k>>11;c[e+160>>2]=k-m>>11;c[e+128>>2]=p>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}l=h+8|0;m=h+1|0;n=h+7|0;o=h+2|0;j=h+6|0;f=h+3|0;e=h+5|0;k=h+4|0;p=0;d=r;while(1){z=c[g+(p<<2)>>2]|0;u=(c[d>>2]<<13)+131072|0;D=c[d+8>>2]|0;w=c[d+16>>2]|0;y=(c[d+24>>2]|0)*5793|0;C=y+u|0;y=u-y-y|0;u=D-w|0;r=y+(u*5793|0)|0;y=(ea(u,-11586)|0)+y|0;u=(w+D|0)*10887|0;D=D*8875|0;w=w*2012|0;B=u-w+C|0;u=C-u+D|0;w=C-D+w|0;D=c[d+4>>2]|0;C=c[d+20>>2]|0;t=c[d+28>>2]|0;E=ea(c[d+12>>2]|0,-10033)|0;v=(C+D|0)*7447|0;x=(t+D|0)*3962|0;A=v-E+x|0;F=(C-t|0)*11409|0;v=E-F+v|0;x=F+E+x|0;t=(D-C-t|0)*10033|0;a[z+h>>0]=a[q+(((A+B|0)>>>18&1023)+128)>>0]|0;a[z+l>>0]=a[q+(((B-A|0)>>>18&1023)+128)>>0]|0;a[z+m>>0]=a[q+(((t+r|0)>>>18&1023)+128)>>0]|0;a[z+n>>0]=a[q+(((r-t|0)>>>18&1023)+128)>>0]|0;a[z+o>>0]=a[q+(((v+u|0)>>>18&1023)+128)>>0]|0;a[z+j>>0]=a[q+(((u-v|0)>>>18&1023)+128)>>0]|0;a[z+f>>0]=a[q+(((x+w|0)>>>18&1023)+128)>>0]|0;a[z+e>>0]=a[q+(((w-x|0)>>>18&1023)+128)>>0]|0;a[z+k>>0]=a[q+((y>>>18&1023)+128)>>0]|0;p=p+1|0;if((p|0)==9)break;else d=d+32|0}i=s;return}function mH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;t=i;i=i+320|0;s=t;r=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=s;while(1){o=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;p=ea(b[f+64>>1]|0,c[d+128>>2]|0)|0;u=(p*9373|0)+o|0;x=(ea(p,-3580)|0)+o|0;o=(ea(p,-11586)|0)+o>>11;p=ea(b[f+32>>1]|0,c[d+64>>2]|0)|0;k=ea(b[f+96>>1]|0,c[d+192>>2]|0)|0;w=(k+p|0)*6810|0;p=w+(p*4209|0)|0;k=w+(ea(k,-17828)|0)|0;w=p+u|0;p=u-p|0;u=k+x|0;k=x-k|0;x=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;y=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;n=ea(b[f+80>>1]|0,c[d+160>>2]|0)|0;l=ea(b[f+112>>1]|0,c[d+224>>2]|0)|0;m=l+y|0;l=y-l|0;y=l*2531|0;z=n<<13;A=m*7791|0;q=y+z|0;v=A+(x*11443|0)+q|0;q=(x*1812|0)-A+q|0;m=m*4815|0;y=z-y-(l<<12)|0;l=x-n-l<<2;n=(x*10323|0)-m-y|0;m=y+((x*5260|0)-m)|0;c[e>>2]=v+w>>11;c[e+288>>2]=w-v>>11;c[e+32>>2]=n+u>>11;c[e+256>>2]=u-n>>11;c[e+64>>2]=l+o;c[e+224>>2]=o-l;c[e+96>>2]=m+k>>11;c[e+192>>2]=k-m>>11;c[e+128>>2]=q+p>>11;c[e+160>>2]=p-q>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+9|0;n=h+1|0;o=h+8|0;p=h+2|0;j=h+7|0;f=h+3|0;e=h+6|0;k=h+4|0;l=h+5|0;q=0;d=s;while(1){A=c[g+(q<<2)>>2]|0;y=(c[d>>2]<<13)+131072|0;u=c[d+16>>2]|0;B=y+(u*9373|0)|0;E=y+(ea(u,-3580)|0)|0;u=y+(ea(u,-11586)|0)|0;y=c[d+8>>2]|0;w=c[d+24>>2]|0;D=(w+y|0)*6810|0;y=D+(y*4209|0)|0;w=D+(ea(w,-17828)|0)|0;D=y+B|0;y=B-y|0;B=w+E|0;w=E-w|0;E=c[d+4>>2]|0;F=c[d+12>>2]|0;v=c[d+20>>2]<<13;s=c[d+28>>2]|0;x=s+F|0;s=F-s|0;F=s*2531|0;G=x*7791|0;z=F+v|0;C=G+(E*11443|0)+z|0;z=(E*1812|0)-G+z|0;x=x*4815|0;F=v-F-(s<<12)|0;v=(E-s<<13)-v|0;s=(E*10323|0)-x-F|0;x=F+((E*5260|0)-x)|0;a[A+h>>0]=a[r+(((C+D|0)>>>18&1023)+128)>>0]|0;a[A+m>>0]=a[r+(((D-C|0)>>>18&1023)+128)>>0]|0;a[A+n>>0]=a[r+(((s+B|0)>>>18&1023)+128)>>0]|0;a[A+o>>0]=a[r+(((B-s|0)>>>18&1023)+128)>>0]|0;a[A+p>>0]=a[r+(((v+u|0)>>>18&1023)+128)>>0]|0;a[A+j>>0]=a[r+(((u-v|0)>>>18&1023)+128)>>0]|0;a[A+f>>0]=a[r+(((x+w|0)>>>18&1023)+128)>>0]|0;a[A+e>>0]=a[r+(((w-x|0)>>>18&1023)+128)>>0]|0;a[A+k>>0]=a[r+(((z+y|0)>>>18&1023)+128)>>0]|0;a[A+l>>0]=a[r+(((y-z|0)>>>18&1023)+128)>>0]|0;q=q+1|0;if((q|0)==10)break;else d=d+32|0}i=t;return}function nH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;u=i;i=i+352|0;t=u;s=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=t;while(1){r=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;z=ea(b[f+32>>1]|0,c[d+64>>2]|0)|0;A=ea(b[f+64>>1]|0,c[d+128>>2]|0)|0;o=ea(b[f+96>>1]|0,c[d+192>>2]|0)|0;x=(A-o|0)*20862|0;k=(A-z|0)*3529|0;p=o+z|0;w=p-A|0;y=(w*11116|0)+r|0;v=k+(ea(A,-14924)|0)+x+y|0;x=x+(o*17333|0)+y|0;k=k+(ea(z,-12399)|0)+y|0;p=y+(ea(p,-9467)|0)|0;o=p+(ea(o,-6461)|0)|0;p=(A*15929|0)+(ea(z,-11395)|0)+p|0;r=(ea(w,-11585)|0)+r|0;w=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;z=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;A=ea(b[f+80>>1]|0,c[d+160>>2]|0)|0;y=ea(b[f+112>>1]|0,c[d+224>>2]|0)|0;C=z+w|0;q=(A+C+y|0)*3264|0;C=C*7274|0;l=(A+w|0)*5492|0;m=q+((y+w|0)*3e3|0)|0;w=C+(ea(w,-7562)|0)+l+m|0;n=q+(ea(A+z|0,-9527)|0)|0;l=l+(ea(A,-9766)|0)+n|0;B=ea(y+z|0,-14731)|0;n=C+(z*16984|0)+B+n|0;m=B+(y*17223|0)+m|0;q=(A*8203|0)+(ea(z,-12019)|0)+(ea(y,-13802)|0)+q|0;c[e>>2]=w+x>>11;c[e+320>>2]=x-w>>11;c[e+32>>2]=n+v>>11;c[e+288>>2]=v-n>>11;c[e+64>>2]=l+o>>11;c[e+256>>2]=o-l>>11;c[e+96>>2]=m+k>>11;c[e+224>>2]=k-m>>11;c[e+128>>2]=q+p>>11;c[e+192>>2]=p-q>>11;c[e+160>>2]=r>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+10|0;o=h+1|0;p=h+9|0;q=h+2|0;j=h+8|0;f=h+3|0;e=h+7|0;k=h+4|0;l=h+6|0;n=h+5|0;r=0;d=t;while(1){C=c[g+(r<<2)>>2]|0;B=(c[d>>2]<<13)+131072|0;H=c[d+8>>2]|0;I=c[d+16>>2]|0;v=c[d+24>>2]|0;F=(I-v|0)*20862|0;x=(I-H|0)*3529|0;z=v+H|0;E=z-I|0;G=(E*11116|0)+B|0;D=x+(ea(I,-14924)|0)+F+G|0;F=F+(v*17333|0)+G|0;x=x+(ea(H,-12399)|0)+G|0;z=G+(ea(z,-9467)|0)|0;v=z+(ea(v,-6461)|0)|0;z=(I*15929|0)+(ea(H,-11395)|0)+z|0;B=(ea(E,-11585)|0)+B|0;E=c[d+4>>2]|0;H=c[d+12>>2]|0;I=c[d+20>>2]|0;G=c[d+28>>2]|0;K=H+E|0;A=(K+I+G|0)*3264|0;K=K*7274|0;w=(I+E|0)*5492|0;y=A+((G+E|0)*3e3|0)|0;E=K+(ea(E,-7562)|0)+w+y|0;t=A+(ea(I+H|0,-9527)|0)|0;w=w+(ea(I,-9766)|0)+t|0;J=ea(G+H|0,-14731)|0;t=K+(H*16984|0)+J+t|0;y=J+(G*17223|0)+y|0;A=(I*8203|0)+(ea(H,-12019)|0)+(ea(G,-13802)|0)+A|0;a[C+h>>0]=a[s+(((E+F|0)>>>18&1023)+128)>>0]|0;a[C+m>>0]=a[s+(((F-E|0)>>>18&1023)+128)>>0]|0;a[C+o>>0]=a[s+(((t+D|0)>>>18&1023)+128)>>0]|0;a[C+p>>0]=a[s+(((D-t|0)>>>18&1023)+128)>>0]|0;a[C+q>>0]=a[s+(((w+v|0)>>>18&1023)+128)>>0]|0;a[C+j>>0]=a[s+(((v-w|0)>>>18&1023)+128)>>0]|0;a[C+f>>0]=a[s+(((y+x|0)>>>18&1023)+128)>>0]|0;a[C+e>>0]=a[s+(((x-y|0)>>>18&1023)+128)>>0]|0;a[C+k>>0]=a[s+(((A+z|0)>>>18&1023)+128)>>0]|0;a[C+l>>0]=a[s+(((z-A|0)>>>18&1023)+128)>>0]|0;a[C+n>>0]=a[s+((B>>>18&1023)+128)>>0]|0;r=r+1|0;if((r|0)==11)break;else d=d+32|0}i=u;return} +function Du(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;t=e+16|0;u=e+404|0;c[u>>2]=t;c[e+4>>2]=f;c[e+8>>2]=g;c[e+12>>2]=f;if(f>>>0>=g>>>0){y=0;i=z;return y|0}v=t;w=e+408|0;x=e+412|0;s=e+20|0;k=t;a:while(1){j=a[f>>0]|0;h=k-v|0;m=h>>2;do if((j&255)>26&j<<24>>24!=31){if((h|0)>380){f=6;y=96;break a}c[u>>2]=k+4;c[k>>2]=f;if(j<<24>>24==28){f=f+2|0;break}else if(j<<24>>24==29){f=f+4|0;break}else if(j<<24>>24==30)do{f=f+1|0;if(f>>>0>=g>>>0){f=0;y=96;break a}r=d[f>>0]|0}while(!((r&240|0)==240|(r&15|0)==15));else{f=(j&255)>246?f+1|0:f;break}}else{h=j&255;c[k>>2]=f;if(j<<24>>24==12){f=f+1|0;if(f>>>0>=g>>>0){f=6;y=96;break a}h=d[f>>0]|0|256;r=f}else r=f;h=c[w>>2]|h;f=4;j=10664;do{if((c[j+4>>2]|0)==(h|0)){y=17;break}j=j+28|0;f=c[j>>2]|0}while((f|0)!=0);b:do if((y|0)==17){y=0;h=c[x>>2]|0;n=h+(c[j+8>>2]|0)|0;if((f|0)!=6&(m|0)==0){f=6;y=96;break a}c:do switch(f|0){case 3:{h=c[t>>2]|0;f=c[s>>2]|0;k=a[h>>0]|0;if(k<<24>>24==30){h=Qs(h,f,3,0)|0;break c}m=h+1|0;l=k&255;do if(k<<24>>24==29)if((h+5|0)>>>0>f>>>0){f=0;h=0}else{h=(d[h+2>>0]|0)<<16|(d[m>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);y=63}else if(k<<24>>24==28)if((h+3|0)>>>0>f>>>0){f=0;h=0}else{h=((d[m>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;y=63}else{if((k&255)<247){h=l+-139|0;y=63;break}f=(h+2|0)>>>0>f>>>0;if((k&255)<251){if(f){f=0;h=0;break}h=(d[m>>0]|0|(l<<8)+-63232)+108|0;y=63;break}else{if(f){f=0;h=0;break}h=(251-l<<8)+-108-(d[m>>0]|0)|0;y=63;break}}while(0);if((y|0)==63){y=0;f=h*1e3|0;if((f|0)>32767){h=2147483647;break c}}h=ea(h,65536e3)|0;h=(f|0)<-32767?-2147483647:h;break}case 1:case 4:case 5:{h=c[t>>2]|0;f=c[s>>2]|0;k=a[h>>0]|0;if(k<<24>>24==30){h=(Qs(h,f,0,0)|0)>>16;break c}m=h+1|0;l=k&255;if(k<<24>>24==28){if((h+3|0)>>>0>f>>>0){h=0;break c}h=((d[m>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;break c}else if(k<<24>>24!=29){if((k&255)<247){h=l+-139|0;break c}f=(h+2|0)>>>0>f>>>0;if((k&255)<251){if(f){h=0;break c}h=(d[m>>0]|0|(l<<8)+-63232)+108|0;break c}else{if(f){h=0;break c}h=(251-l<<8)+-108-(d[m>>0]|0)|0;break c}}else{if((h+5|0)>>>0>f>>>0){h=0;break c}h=(d[h+2>>0]|0)<<16|(d[m>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);break c}}case 2:{h=c[t>>2]|0;f=c[s>>2]|0;k=a[h>>0]|0;if(k<<24>>24==30){h=Qs(h,f,0,0)|0;break c}l=h+1|0;m=k&255;do if(k<<24>>24==28)if((h+3|0)>>>0>f>>>0)f=0;else f=((d[l>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;else if(k<<24>>24==29)if((h+5|0)>>>0>f>>>0)f=0;else{f=(d[h+2>>0]|0)<<16|(d[l>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);y=47}else{if((k&255)<247){f=m+-139|0;y=47;break}f=(h+2|0)>>>0>f>>>0;if((k&255)<251){if(f){f=0;break}f=(d[l>>0]|0|(m<<8)+-63232)+108|0;y=47;break}else{if(f){f=0;break}f=(251-m<<8)+-108-(d[l>>0]|0)|0;y=47;break}}while(0);if((y|0)==47){y=0;if((f|0)>32767){h=2147483647;break c}}h=(f|0)<-32767?-2147483647:f<<16;break}case 6:{f=c[j+20>>2]|0;f=m>>>0>f>>>0?f:m;a[h+(c[j+24>>2]|0)>>0]=f;if(!f)break b;p=j+12|0;q=t;o=0;while(1){h=c[q>>2]|0;q=q+4|0;k=c[q>>2]|0;j=a[h>>0]|0;do if(j<<24>>24!=30){m=h+1|0;l=j&255;if(j<<24>>24==28){if((h+3|0)>>>0>k>>>0){h=0;break}h=((d[m>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;break}else if(j<<24>>24!=29){if((j&255)<247){h=l+-139|0;break}k=(h+2|0)>>>0>k>>>0;if((j&255)<251){if(k){h=0;break}h=(d[m>>0]|0|(l<<8)+-63232)+108|0;break}else{if(k){h=0;break}h=(251-l<<8)+-108-(d[m>>0]|0)|0;break}}else{if((h+5|0)>>>0>k>>>0){h=0;break}h=(d[h+2>>0]|0)<<16|(d[m>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);break}}else h=(Qs(h,k,0,0)|0)>>16;while(0);o=h+o|0;h=a[p>>0]|0;k=h&255;if((k|0)==1){a[n>>0]=o;h=a[p>>0]|0}else if((k|0)==2)b[n>>1]=o;else if((k|0)==4)c[n>>2]=o;else c[n>>2]=o;f=f+-1|0;if(!f)break b;else n=n+(h&255)|0}}default:{f=Ld[c[j+16>>2]&511](e)|0;if(!f)break b;else{y=96;break a}}}while(0);f=d[j+12>>0]|0;if((f|0)==4){c[n>>2]=h;break}else if((f|0)==2){b[n>>1]=h;break}else if((f|0)==1){a[n>>0]=h;break}else{c[n>>2]=h;break}}while(0);c[u>>2]=t;f=r}while(0);f=f+1|0;if(f>>>0>=g>>>0){f=0;y=96;break}k=c[u>>2]|0}if((y|0)==96){i=z;return f|0}return 0}function Eu(a){a=a|0;return}function Fu(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;h=c[d+28>>2]|0;f=c[h+20>>2]|0;if(!f){n=h+64|0;a[n>>0]=0;i=o;return}n=b[f>>1]|0;if(n<<16>>16<2)m=0;else m=(b[(c[f+12>>2]|0)+((n<<16>>16)+-2<<1)>>1]|0)+1|0;j=f+2|0;e=b[j>>1]|0;if(((e<<16>>16>1?(k=c[f+4>>2]|0,g=(e<<16>>16)+-1|0,l=(c[f+8>>2]|0)+g|0,(c[k+(m<<3)>>2]|0)==(c[k+(g<<3)>>2]|0)):0)?(c[k+(m<<3)+4>>2]|0)==(c[k+(g<<3)+4>>2]|0):0)?(a[l>>0]|0)==1:0){e=e+-1<<16>>16;b[j>>1]=e}if(n<<16>>16<=0){n=h+64|0;a[n>>0]=0;i=o;return}d=(e<<16>>16)+-1|0;if((m|0)==(d|0)){b[f>>1]=n+-1<<16>>16;b[j>>1]=e+-1<<16>>16;n=h+64|0;a[n>>0]=0;i=o;return}else{b[(c[f+12>>2]|0)+((n<<16>>16)+-1<<1)>>1]=d;n=h+64|0;a[n>>0]=0;i=o;return}}function Gu(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;h=i;f=c[d+28>>2]|0;if(!(a[f+64>>0]|0))gv(f,c[e>>2]|0,c[e+4>>2]|0);g=c[e+8>>2]|0;e=c[e+12>>2]|0;d=c[f+12>>2]|0;if(((b[d+22>>1]|0)+1+(b[d+58>>1]|0)|0)>>>0>(c[d+4>>2]|0)>>>0?(ih(d,1,0)|0)!=0:0){i=h;return}d=c[f+20>>2]|0;if(!(a[f+65>>0]|0))d=d+2|0;else{k=c[d+4>>2]|0;f=d+2|0;j=b[f>>1]|0;d=(c[d+8>>2]|0)+j|0;c[k+(j<<3)>>2]=g>>10;c[k+(j<<3)+4>>2]=e>>10;a[d>>0]=1;d=f}b[d>>1]=(b[d>>1]|0)+1<<16>>16;i=h;return}function Hu(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;j=i;f=c[d+28>>2]|0;if(!(a[f+64>>0]|0))gv(f,c[e>>2]|0,c[e+4>>2]|0);d=c[f+12>>2]|0;if(((b[d+22>>1]|0)+3+(b[d+58>>1]|0)|0)>>>0>(c[d+4>>2]|0)>>>0)ih(d,3,0)|0;g=f+20|0;d=c[g>>2]|0;f=f+65|0;if(a[f>>0]|0){n=c[e+12>>2]|0;m=c[d+4>>2]|0;l=d+2|0;k=b[l>>1]|0;d=(c[d+8>>2]|0)+k|0;c[m+(k<<3)>>2]=c[e+8>>2]>>10;c[m+(k<<3)+4>>2]=n>>10;a[d>>0]=2;d=c[g>>2]|0;k=(a[f>>0]|0)==0;b[l>>1]=(b[l>>1]|0)+1<<16>>16;if(!k){l=c[e+20>>2]|0;m=c[d+4>>2]|0;k=d+2|0;n=b[k>>1]|0;d=(c[d+8>>2]|0)+n|0;c[m+(n<<3)>>2]=c[e+16>>2]>>10;c[m+(n<<3)+4>>2]=l>>10;a[d>>0]=2;d=c[g>>2]|0;n=(a[f>>0]|0)==0;b[k>>1]=(b[k>>1]|0)+1<<16>>16;if(!n){g=c[e+28>>2]|0;m=c[d+4>>2]|0;n=d+2|0;h=b[n>>1]|0;k=(c[d+8>>2]|0)+h|0;c[m+(h<<3)>>2]=c[e+24>>2]>>10;c[m+(h<<3)+4>>2]=g>>10;a[k>>0]=1;k=b[n>>1]|0;k=k+1<<16>>16;b[n>>1]=k;i=j;return}}else h=8}else{h=d+2|0;b[h>>1]=(b[h>>1]|0)+1<<16>>16;h=8}if((h|0)==8){n=d+2|0;b[n>>1]=(b[n>>1]|0)+1<<16>>16}n=d+2|0;k=b[n>>1]|0;k=k+1<<16>>16;b[n>>1]=k;i=j;return}function Iu(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;g=g<<24>>24!=0;if((a|0)<655|((f|0)!=0|g)^1){i=v;return}if(g){k=c[h>>2]|0;l=c[h+4>>2]|0;r=c[h+8>>2]|0;s=c[h+12>>2]|0;o=c[h+16>>2]|0;p=c[h+20>>2]|0;q=c[h+24>>2]|0;m=c[h+28>>2]|0;d=f+d|0;g=Wg(d,a)|0;if((a|0)<65537|(g|0)>(d|0)){d=Wg(g,b)|0;d=(b|0)<65537|(d|0)>(g|0)?d:q<<16;j=g}else{d=q<<16;j=0}g=k<<16;a:do if((d|0)<(g|0)){g=Xg(l<<16,b)|0;c[e>>2]=g}else{h=r<<16;if((d|0)<(h|0)){g=Xg(g,b)|0;if((s|0)==(l|0))t=13;else{g=Wg(j-g|0,Xg(s-l|0,r-k|0)|0)|0;g=(Xg(l<<16,b)|0)+g|0;c[e>>2]=g;break}}else{g=o<<16;if((d|0)>=(g|0)){if((d|0)<(q<<16|0)){n=g;t=17}}else t=13}do if((t|0)==13){g=Xg(h,b)|0;if((p|0)==(s|0)){n=o<<16;t=17;break}else{g=Wg(j-g|0,Xg(p-s|0,o-r|0)|0)|0;g=(Xg(s<<16,b)|0)+g|0;c[e>>2]=g;break a}}while(0);if((t|0)==17?(u=Xg(n,b)|0,(m|0)!=(p|0)):0){g=Wg(j-u|0,Xg(m-p|0,q-o|0)|0)|0;g=(Xg(p<<16,b)|0)+g|0;c[e>>2]=g;break}g=Xg(m<<16,b)|0;c[e>>2]=g}while(0);g=Xg(g,a<<1)|0;c[e>>2]=g}else g=c[e>>2]|0;c[e>>2]=g+((f|0)/2|0);i=v;return}function Ju(e,f,g,h,j,k,l,m){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0;_a=i;i=i+15840|0;Ga=_a+11964|0;ya=_a+11960|0;za=_a+11956|0;Ca=_a+11952|0;Fa=_a+11948|0;o=_a+11944|0;Aa=_a+11940|0;Ba=_a+11936|0;Ya=_a+11932|0;ta=_a+15832|0;Xa=_a+11872|0;Za=_a+11840|0;ga=_a+11808|0;Wa=_a+24|0;Da=_a+8|0;Ea=_a;fa=_a+11904|0;c[Aa>>2]=k;c[Ba>>2]=l;qa=e+132|0;xa=c[qa>>2]|0;Ha=e+4|0;Va=c[e>>2]|0;da=e+48|0;ba=c[da>>2]|0;Ia=xa+928|0;sa=c[(c[Ia>>2]|0)+532>>2]<<16;c[Ya>>2]=0;c[Xa>>2]=Va;c[Xa+4>>2]=Ha;c[Xa+8>>2]=20;Ja=Xa+12|0;c[Ja>>2]=0;c[Xa+16>>2]=10;Ka=Xa+20|0;c[Ka>>2]=0;La=Xa+24|0;c[La>>2]=0;Ma=Xa+28|0;c[Ma>>2]=0;c[Za>>2]=Va;c[Za+4>>2]=Ha;c[Za+8>>2]=20;Na=Za+12|0;c[Na>>2]=0;c[Za+16>>2]=10;Oa=Za+20|0;c[Oa>>2]=0;Pa=Za+24|0;c[Pa>>2]=0;Qa=Za+28|0;c[Qa>>2]=0;c[ga+0>>2]=0;c[ga+4>>2]=0;c[ga+8>>2]=0;c[ga+12>>2]=0;c[ga+16>>2]=0;c[ga+20>>2]=0;c[ga+24>>2]=0;c[ga>>2]=Ha;Cga(Wa|0,0,11784)|0;c[Wa>>2]=e;c[Wa+4>>2]=g;Y=Wa+11612|0;c[Y>>2]=Va;c[Wa+11616>>2]=Ha;c[Wa+11620>>2]=8;Ra=Wa+11624|0;c[Ra>>2]=0;c[Wa+11628>>2]=10;Sa=Wa+11632|0;c[Sa>>2]=0;Ta=Wa+11636|0;c[Ta>>2]=0;Ua=Wa+11640|0;c[Ua>>2]=0;Z=Wa+7744|0;Cga(Z|0,0,3868)|0;_=e+140|0;ca=a[_>>0]|0;a[Wa+7757>>0]=ca;c[Wa+7760>>2]=ba;c[Z>>2]=e;c[Wa+7748>>2]=Z;c[Wa+7752>>2]=Y;ra=Wa+3876|0;Cga(ra|0,0,3868)|0;a[Wa+3889>>0]=ca;c[Wa+3892>>2]=ba;c[ra>>2]=e;c[Wa+3880>>2]=Z;c[Wa+3884>>2]=Y;$=Wa+8|0;Cga($|0,0,3868)|0;a[Wa+21>>0]=ca;c[Wa+24>>2]=ba;c[$>>2]=e;c[Wa+12>>2]=Z;c[Wa+16>>2]=Y;c[Wa+11644>>2]=c[e+36>>2];c[Wa+11648>>2]=c[e+44>>2];c[Wa+11652>>2]=c[da>>2];da=h;ca=c[da+4>>2]|0;aa=Wa+11656|0;c[aa>>2]=c[da>>2];c[aa+4>>2]=ca;aa=Wa+11668|0;c[aa>>2]=Xa;ca=Wa+11672|0;c[ca>>2]=Za;da=Wa+11676|0;c[da>>2]=ga;ea=Wa+11680|0;c[ea>>2]=l;c[Wa+11684>>2]=e+196;a[Wa+11665>>0]=a[e+141>>0]|0;oa=c[e+184>>2]|0;c[Wa+11688>>2]=oa;na=c[e+188>>2]|0;c[Wa+11692>>2]=na;oa=(oa|0)<0?0-oa|0:oa;na=(na|0)<0?0-na|0:na;c[Wa+11696>>2]=((oa|0)>(na|0)?oa:na)<<1;c[Wa+11700>>2]=6554;na=Wa+11666|0;a[na>>0]=1;oa=Wa+11664|0;a[oa>>0]=0;pa=Wa+11744|0;a[pa>>0]=0;a[ta>>0]=0;c[m>>2]=c[(c[Ia>>2]|0)+528>>2]<<16;c[Ga>>2]=0;Ia=Ai(Va,396,Ga)|0;if(c[Ga>>2]|0)if(!Ia){k=1;n=0;o=64;A=769}else{k=0;A=4}else{c[Ia>>2]=Va;c[Ia+4>>2]=Ha;c[Ia+392>>2]=Ia+8;k=(Ia|0)==0;A=4}a:do if((A|0)==4){c[o>>2]=0;n=hh(Va,1,0,176,0,o)|0;do if(c[o>>2]|0){if(!(c[Ha>>2]|0))c[Ha>>2]=64}else{if((c[Ya>>2]|0)>>>0<=11){c[Ya>>2]=11;break}if(!(c[Ha>>2]|0))c[Ha>>2]=130;c[Ya>>2]=11}while(0);c[n+0>>2]=c[f+0>>2];c[n+4>>2]=c[f+4>>2];c[n+8>>2]=c[f+8>>2];c[n+12>>2]=c[f+12>>2];if(!(c[Ha>>2]|0)){va=Ia+392|0;wa=Ia+4|0;ua=Ia+8|0;ma=ua;ja=Wa+11736|0;C=Wa+11720|0;ka=Wa+11740|0;D=Wa+11724|0;B=Wa+20|0;la=Wa+11704|0;ha=Wa+11712|0;ia=Wa+11716|0;X=Ia+12|0;E=xa+900|0;F=xa+892|0;G=xa+908|0;H=xa+896|0;I=xa+888|0;J=xa+904|0;K=ga+8|0;L=ga+12|0;M=ga+4|0;N=ga+5|0;O=Ga+13|0;P=Ga+16|0;Q=Ga+4|0;R=Ga+8|0;S=fa+8|0;T=fa+12|0;U=fa+4|0;V=fa+5|0;o=n;z=0;W=19999999;b:while(1){s=o+8|0;q=c[s>>2]|0;p=o+12|0;f=c[p>>2]|0;if(f>>>0>>0){l=f+1|0;c[p>>2]=l;y=d[f>>0]|0}else{l=f;y=(z|0)==0?14:11}if(c[Ha>>2]|0)break a;if(!W){o=18;A=769;break a}c:do switch(y|0){case 19:case 20:{hv(e,Ia,Za,m,ta);if(a[(c[qa>>2]|0)+753>>0]|0){o=0;A=769;break a}if((y|0)==19){f=(c[Oa>>2]|0)+(c[Ka>>2]|0)|0;if(f>>>0>96){f=c[ga>>2]|0;if(!f){A=767;break c}if(c[f>>2]|0){A=767;break c}c[f>>2]=18;A=767;break c}c[K>>2]=f;A=(f+7|0)>>>3;c[L>>2]=A;a[M>>0]=1;a[N>>0]=1;if((f|0)==0|(A|0)==0){A=767;break c}l=0;do{f=c[p>>2]|0;if(f>>>0>=(c[s>>2]|0)>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;f=0}else f=0}else{c[p>>2]=f+1;f=a[f>>0]|0}a[ga+l+16>>0]=f;l=l+1|0}while(l>>>0<(c[L>>2]|0)>>>0);A=767}else{Cga(Ga|0,0,3868)|0;a[O>>0]=a[_>>0]|0;c[P>>2]=ba;c[Ga>>2]=e;c[Q>>2]=Z;c[R>>2]=Y;c[fa+0>>2]=0;c[fa+4>>2]=0;c[fa+8>>2]=0;c[fa+12>>2]=0;c[fa+16>>2]=0;c[fa+20>>2]=0;c[fa+24>>2]=0;c[fa>>2]=Ha;f=(c[Oa>>2]|0)+(c[Ka>>2]|0)|0;if(f>>>0>96){if(!(c[Ha>>2]|0))c[Ha>>2]=18}else{c[S>>2]=f;A=(f+7|0)>>>3;c[T>>2]=A;a[U>>0]=1;a[V>>0]=1;if(!((f|0)==0|(A|0)==0)){l=0;do{f=c[p>>2]|0;if(f>>>0>=(c[s>>2]|0)>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;f=0}else f=0}else{c[p>>2]=f+1;f=a[f>>0]|0}a[fa+l+16>>0]=f;l=l+1|0}while(l>>>0<(c[T>>2]|0)>>>0)}}kv(Ga,Xa,Za,fa,0,0);A=767;break c}break}case 21:{q=c[va>>2]|0;f=q-ma>>3;if(!(f>>>0<3|(a[ta>>0]|0)!=0)){do if(!f){f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}else{f=c[X>>2]|0;if((f|0)==1){f=c[ua>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((f|0)==2){f=c[ua>>2]<<16;break}else{f=c[ua>>2]|0;break}}while(0);c[m>>2]=f+sa}a[ta>>0]=1;if(a[(c[qa>>2]|0)+753>>0]|0){o=0;A=769;break a}do if((q|0)!=(ua|0)){s=q+-8|0;c[va>>2]=s;f=c[q+-4>>2]|0;do if((f|0)==1){f=c[s>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((f|0)==2)f=c[s>>2]<<16;else f=c[s>>2]|0;while(0);l=(c[Ba>>2]|0)+f|0;c[Ba>>2]=l;if((s|0)!=(ua|0)){s=q+-16|0;c[va>>2]=s;f=c[q+-12>>2]|0;if((f|0)==2){f=c[s>>2]<<16;break}else if((f|0)==1){f=c[s>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[s>>2]|0;break}}else A=348}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0)c[f>>2]=161;l=c[Ba>>2]|0;A=348}while(0);if((A|0)==348){f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=161;f=0;l=c[Ba>>2]|0}else f=0}f=(c[Aa>>2]|0)+f|0;c[Aa>>2]=f;if(a[oa>>0]|0){iv(Wa,c[ja>>2]|0,c[ka>>2]|0);jv(Wa,ra,la,c[ha>>2]|0,c[ia>>2]|0,1);a[na>>0]=1;a[oa>>0]=0;a[pa>>0]=0}c[ja>>2]=f;c[C>>2]=f;c[ka>>2]=l;c[D>>2]=l;a[na>>0]=1;f=c[da>>2]|0;if(!((a[B>>0]|0)!=0?(a[f+5>>0]|0)==0:0))kv($,c[aa>>2]|0,c[ca>>2]|0,f,c[ea>>2]|0,0);Aga(ra|0,$|0,3868)|0;A=767;break}case 22:{s=c[va>>2]|0;f=s-ma>>3;if(!(f>>>0<2|(a[ta>>0]|0)!=0)){do if(!f){f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}else{f=c[X>>2]|0;if((f|0)==1){f=c[ua>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((f|0)==2){f=c[ua>>2]<<16;break}else{f=c[ua>>2]|0;break}}while(0);c[m>>2]=f+sa}a[ta>>0]=1;if(a[(c[qa>>2]|0)+753>>0]|0){o=0;A=769;break a}do if((s|0)==(ua|0)){f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=161;f=0}else f=0}else{l=s+-8|0;c[va>>2]=l;f=c[s+-4>>2]|0;if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((f|0)==2){f=c[l>>2]<<16;break}else{f=c[l>>2]|0;break}}while(0);f=(c[Aa>>2]|0)+f|0;c[Aa>>2]=f;l=c[Ba>>2]|0;if(a[oa>>0]|0){iv(Wa,c[ja>>2]|0,c[ka>>2]|0);jv(Wa,ra,la,c[ha>>2]|0,c[ia>>2]|0,1);a[na>>0]=1;a[oa>>0]=0;a[pa>>0]=0}c[ja>>2]=f;c[C>>2]=f;c[ka>>2]=l;c[D>>2]=l;a[na>>0]=1;f=c[da>>2]|0;if(!((a[B>>0]|0)!=0?(a[f+5>>0]|0)==0:0))kv($,c[aa>>2]|0,c[ca>>2]|0,f,c[ea>>2]|0,0);Aga(ra|0,$|0,3868)|0;A=767;break}case 25:{f=c[va>>2]|0;w=f-ma>>3;d:do if(w>>>0>6){p=0;while(1){s=f-ma>>3;do if(s>>>0>p>>>0){f=Ia+(p<<3)+8|0;l=c[Ia+(p<<3)+12>>2]|0;if((l|0)==2){f=c[f>>2]<<16;break}else if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);q=(c[Aa>>2]|0)+f|0;c[Aa>>2]=q;f=p|1;do if(s>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){l=c[l>>2]<<16;f=q;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){l=0-(8192-f>>14)|0;f=q;break}else{l=f+8192>>14;f=q;break}}else{l=c[l>>2]|0;f=q;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;l=0;f=c[Aa>>2]|0}else{l=0;f=q}}while(0);l=(c[Ba>>2]|0)+l|0;c[Ba>>2]=l;iv(Wa,f,l);l=p+2|0;if((p+8|0)>>>0>=w>>>0){f=l;break d}f=c[va>>2]|0;p=l}}else f=0;while(0);if(f>>>0>>0)do{u=(c[va>>2]|0)-ma>>3;do if(u>>>0>f>>>0){l=Ia+(f<<3)+8|0;s=c[Ia+(f<<3)+12>>2]|0;if((s|0)==1){l=c[l>>2]|0;if((l|0)<0){l=0-(8192-l>>14)|0;break}else{l=l+8192>>14;break}}else if((s|0)==2){l=c[l>>2]<<16;break}else{l=c[l>>2]|0;break}}else{l=c[wa>>2]|0;if((l|0)!=0?(c[l>>2]|0)==0:0){c[l>>2]=130;l=0}else l=0}while(0);v=(c[Aa>>2]|0)+l|0;l=f|1;do if(u>>>0>l>>>0){s=Ia+(l<<3)+8|0;l=c[Ia+(l<<3)+12>>2]|0;if((l|0)==1){l=c[s>>2]|0;if((l|0)<0){l=0-(8192-l>>14)|0;break}else{l=l+8192>>14;break}}else if((l|0)==2){l=c[s>>2]<<16;break}else{l=c[s>>2]|0;break}}else{l=c[wa>>2]|0;if((l|0)!=0?(c[l>>2]|0)==0:0){c[l>>2]=130;l=0}else l=0}while(0);t=(c[Ba>>2]|0)+l|0;l=f+2|0;do if(u>>>0>l>>>0){s=Ia+(l<<3)+8|0;l=c[Ia+(l<<3)+12>>2]|0;if((l|0)==1){l=c[s>>2]|0;if((l|0)<0){l=0-(8192-l>>14)|0;break}else{l=l+8192>>14;break}}else if((l|0)==2){l=c[s>>2]<<16;break}else{l=c[s>>2]|0;break}}else{l=c[wa>>2]|0;if((l|0)!=0?(c[l>>2]|0)==0:0){c[l>>2]=130;l=0}else l=0}while(0);r=l+v|0;l=f+3|0;do if(u>>>0>l>>>0){s=Ia+(l<<3)+8|0;l=c[Ia+(l<<3)+12>>2]|0;if((l|0)==1){l=c[s>>2]|0;if((l|0)<0){l=0-(8192-l>>14)|0;break}else{l=l+8192>>14;break}}else if((l|0)==2){l=c[s>>2]<<16;break}else{l=c[s>>2]|0;break}}else{l=c[wa>>2]|0;if((l|0)!=0?(c[l>>2]|0)==0:0){c[l>>2]=130;l=0}else l=0}while(0);p=l+t|0;l=f+4|0;do if(u>>>0>l>>>0){s=Ia+(l<<3)+8|0;l=c[Ia+(l<<3)+12>>2]|0;if((l|0)==1){l=c[s>>2]|0;if((l|0)<0){l=0-(8192-l>>14)|0;break}else{l=l+8192>>14;break}}else if((l|0)==2){l=c[s>>2]<<16;break}else{l=c[s>>2]|0;break}}else{l=c[wa>>2]|0;if(!l)l=0;else{if(c[l>>2]|0){l=0;break}c[l>>2]=130;l=0}}while(0);q=l+r|0;l=f+5|0;do if(u>>>0>l>>>0){s=Ia+(l<<3)+8|0;l=c[Ia+(l<<3)+12>>2]|0;if((l|0)==2){l=c[s>>2]<<16;break}else if((l|0)==1){l=c[s>>2]|0;if((l|0)<0){l=0-(8192-l>>14)|0;break}else{l=l+8192>>14;break}}else{l=c[s>>2]|0;break}}else{l=c[wa>>2]|0;if(!l){l=0;break}if(c[l>>2]|0){l=0;break}c[l>>2]=130;l=0}while(0);y=l+p|0;lv(Wa,v,t,r,p,q,y);c[Aa>>2]=q;c[Ba>>2]=y;f=f+6|0}while(f>>>0>>0);c[va>>2]=ua;f=z;break}case 4:{s=c[va>>2]|0;f=s-ma>>3;if(!(f>>>0<2|(a[ta>>0]|0)!=0)){do if(!f){f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}else{f=c[X>>2]|0;if((f|0)==1){f=c[ua>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((f|0)==2){f=c[ua>>2]<<16;break}else{f=c[ua>>2]|0;break}}while(0);c[m>>2]=f+sa}a[ta>>0]=1;if(a[(c[qa>>2]|0)+753>>0]|0){o=0;A=769;break a}do if((s|0)==(ua|0)){f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=161;f=0}else f=0}else{l=s+-8|0;c[va>>2]=l;f=c[s+-4>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}while(0);f=(c[Ba>>2]|0)+f|0;c[Ba>>2]=f;l=c[Aa>>2]|0;if(a[oa>>0]|0){iv(Wa,c[ja>>2]|0,c[ka>>2]|0);jv(Wa,ra,la,c[ha>>2]|0,c[ia>>2]|0,1);a[na>>0]=1;a[oa>>0]=0;a[pa>>0]=0}c[ja>>2]=l;c[C>>2]=l;c[ka>>2]=f;c[D>>2]=f;a[na>>0]=1;f=c[da>>2]|0;if(!((a[B>>0]|0)!=0?(a[f+5>>0]|0)==0:0))kv($,c[aa>>2]|0,c[ca>>2]|0,f,c[ea>>2]|0,0);Aga(ra|0,$|0,3868)|0;A=767;break}case 1:case 18:{hv(e,Ia,Xa,m,ta);if(!(a[(c[qa>>2]|0)+753>>0]|0))A=767;else{o=0;A=769;break a}break}case 5:{f=c[va>>2]|0;r=f-ma>>3;e:do if(r){l=0;while(1){q=f-ma>>3;do if(q>>>0>l>>>0){f=Ia+(l<<3)+8|0;s=c[Ia+(l<<3)+12>>2]|0;if((s|0)==2){f=c[f>>2]<<16;break}else if((s|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);p=(c[Aa>>2]|0)+f|0;c[Aa>>2]=p;f=l|1;do if(q>>>0>f>>>0){s=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==1){f=c[s>>2]|0;if((f|0)<0){s=0-(8192-f>>14)|0;f=p;break}else{s=f+8192>>14;f=p;break}}else if((f|0)==2){s=c[s>>2]<<16;f=p;break}else{s=c[s>>2]|0;f=p;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;s=0;f=c[Aa>>2]|0}else{s=0;f=p}}while(0);y=(c[Ba>>2]|0)+s|0;c[Ba>>2]=y;iv(Wa,f,y);l=l+2|0;if(l>>>0>=r>>>0)break e;f=c[va>>2]|0}}while(0);c[va>>2]=ua;f=z;break}case 3:case 23:{hv(e,Ia,Za,m,ta);if(!(a[(c[qa>>2]|0)+753>>0]|0))A=767;else{o=0;A=769;break a}break}case 8:case 24:{f=c[va>>2]|0;x=f-ma>>3;f:do if(x>>>0<6)p=0;else{p=6;w=0;while(1){u=f-ma>>3;do if(u>>>0>w>>>0){f=Ia+(w<<3)+8|0;l=c[Ia+(w<<3)+12>>2]|0;if((l|0)==2){f=c[f>>2]<<16;break}else if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);v=(c[Aa>>2]|0)+f|0;f=w|1;do if(u>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((f|0)==2){f=c[l>>2]<<16;break}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);t=(c[Ba>>2]|0)+f|0;f=w+2|0;do if(u>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);r=f+v|0;f=w+3|0;do if(u>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);q=f+t|0;f=w+4|0;do if(u>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);s=f+r|0;f=w+5|0;do if(u>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if(!f)f=0;else{if(c[f>>2]|0){f=0;break}c[f>>2]=130;f=0}}while(0);l=f+q|0;lv(Wa,v,t,r,q,s,l);c[Aa>>2]=s;c[Ba>>2]=l;l=p+6|0;if(l>>>0>x>>>0)break f;w=p;f=c[va>>2]|0;p=l}}while(0);if((y|0)==24){s=(c[va>>2]|0)-ma>>3;do if(s>>>0>p>>>0){f=Ia+(p<<3)+8|0;l=c[Ia+(p<<3)+12>>2]|0;if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((l|0)==2){f=c[f>>2]<<16;break}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);q=(c[Aa>>2]|0)+f|0;c[Aa>>2]=q;f=p|1;do if(s>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){l=0-(8192-f>>14)|0;f=q;break}else{l=f+8192>>14;f=q;break}}else if((f|0)==2){l=c[l>>2]<<16;f=q;break}else{l=c[l>>2]|0;f=q;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;l=0;f=c[Aa>>2]|0}else{l=0;f=q}}while(0);y=(c[Ba>>2]|0)+l|0;c[Ba>>2]=y;iv(Wa,f,y)}c[va>>2]=ua;f=z;break}case 7:case 6:{f=c[va>>2]|0;p=f-ma>>3;g:do if(p){l=0;q=(y|0)==6;while(1){do if(f-ma>>3>>>0>l>>>0){f=Ia+(l<<3)+8|0;s=c[Ia+(l<<3)+12>>2]|0;if((s|0)==2){f=c[f>>2]<<16;break}else if((s|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);if(q){f=(c[Aa>>2]|0)+f|0;c[Aa>>2]=f;s=c[Ba>>2]|0}else{s=(c[Ba>>2]|0)+f|0;c[Ba>>2]=s;f=c[Aa>>2]|0}iv(Wa,f,s);l=l+1|0;if((l|0)==(p|0))break g;f=c[va>>2]|0;q=q^1}}while(0);c[va>>2]=ua;f=z;break}case 10:case 29:{if((z|0)>10){o=18;A=769;break a}q=z+1|0;if((c[Ya>>2]|0)>>>0>q>>>0)f=q;else{c[Ha>>2]=130;f=0}s=f<<4;o=n+s|0;f=c[va>>2]|0;do if((f|0)==(ua|0)){f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=161;f=0}else f=0}else{l=f+-8|0;if((c[f+-4>>2]|0)==2){c[va>>2]=l;f=c[l>>2]|0;break}f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=160;f=0}else f=0}while(0);c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;if((y|0)==29){f=(c[E>>2]|0)+f|0;if(f>>>0>=(c[F>>2]|0)>>>0){o=18;A=769;break a}z=c[G>>2]|0;y=c[z+(f<<2)>>2]|0;c[n+(s|12)>>2]=y;c[n+(s|4)>>2]=y;c[n+(s|8)>>2]=c[z+(f+1<<2)>>2];f=q;break c}else{f=(c[H>>2]|0)+f|0;if(f>>>0>=(c[I>>2]|0)>>>0){o=18;A=769;break a}z=c[J>>2]|0;y=c[z+(f<<2)>>2]|0;c[n+(s|12)>>2]=y;c[n+(s|4)>>2]=y;c[n+(s|8)>>2]=c[z+(f+1<<2)>>2];f=q;break c}}case 14:break b;case 12:{if(l>>>0>=q>>>0){f=c[o>>2]|0;if(!f){A=767;break c}if(c[f>>2]|0){A=767;break c}c[f>>2]=85;A=767;break c}c[p>>2]=l+1;f=d[l>>0]|0;if((f|0)==36){mv(Ia,Aa,Ba,Wa,12192,0);f=z;break c}else if((f|0)==34){mv(Ia,Aa,Ba,Wa,12160,0);f=z;break c}else if((f|0)==37){mv(Ia,Aa,Ba,Wa,12208,1);f=z;break c}else if((f|0)==35){mv(Ia,Aa,Ba,Wa,12176,0);A=767;break c}else{A=767;break c}}case 11:{if((z|0)<1){o=18;A=769;break a}l=z+-1|0;f=(c[Ya>>2]|0)>>>0>l>>>0;if(f)f=f?l:0;else{c[Ha>>2]=130;f=0}o=n+(f<<4)|0;f=l;break}case 26:{v=(c[va>>2]|0)-ma>>3;if(v){q=0;do{if(!(v-q&1)){l=c[va>>2]|0;u=c[Aa>>2]|0}else{s=c[va>>2]|0;do if(s-ma>>3>>>0>q>>>0){f=Ia+(q<<3)+8|0;l=c[Ia+(q<<3)+12>>2]|0;if((l|0)==2){f=c[f>>2]<<16;break}else if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);l=s;q=q+1|0;u=(c[Aa>>2]|0)+f|0}r=l-ma>>3;do if(r>>>0>q>>>0){f=Ia+(q<<3)+8|0;l=c[Ia+(q<<3)+12>>2]|0;if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((l|0)==2){f=c[f>>2]<<16;break}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);t=(c[Ba>>2]|0)+f|0;f=q+1|0;do if(r>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);p=f+u|0;f=q+2|0;do if(r>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);s=f+t|0;f=q+3|0;do if(r>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);y=f+s|0;lv(Wa,u,t,p,s,p,y);c[Aa>>2]=p;c[Ba>>2]=y;q=q+4|0}while(v>>>0>q>>>0)}c[va>>2]=ua;f=z;break}case 27:{v=(c[va>>2]|0)-ma>>3;if(v){q=0;do{if(!(v-q&1)){l=c[va>>2]|0;u=c[Ba>>2]|0}else{s=c[va>>2]|0;do if(s-ma>>3>>>0>q>>>0){f=Ia+(q<<3)+8|0;l=c[Ia+(q<<3)+12>>2]|0;if((l|0)==2){f=c[f>>2]<<16;break}else if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);l=s;q=q+1|0;u=(c[Ba>>2]|0)+f|0}r=l-ma>>3;do if(r>>>0>q>>>0){f=Ia+(q<<3)+8|0;l=c[Ia+(q<<3)+12>>2]|0;if((l|0)==2){f=c[f>>2]<<16;break}else if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);t=(c[Aa>>2]|0)+f|0;f=q+1|0;do if(r>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);p=f+t|0;f=q+2|0;do if(r>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((f|0)==2){f=c[l>>2]<<16;break}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);s=f+u|0;f=q+3|0;do if(r>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);y=f+p|0;lv(Wa,t,u,p,s,y,s);c[Aa>>2]=y;c[Ba>>2]=s;q=q+4|0}while(v>>>0>q>>>0)}c[va>>2]=ua;f=z;break}case 31:case 30:{x=(c[va>>2]|0)-ma>>3;if(x){f=(y|0)==31&1;w=0;do{if(!(f<<24>>24)){t=c[Aa>>2]|0;s=(c[va>>2]|0)-ma>>3;do if(s>>>0>w>>>0){f=Ia+(w<<3)+8|0;l=c[Ia+(w<<3)+12>>2]|0;if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((l|0)==2){f=c[f>>2]<<16;break}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);q=(c[Ba>>2]|0)+f|0;u=w+1|0;do if(s>>>0>u>>>0){f=Ia+(u<<3)+8|0;l=c[Ia+(u<<3)+12>>2]|0;if((l|0)==2){f=c[f>>2]<<16;break}else if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);r=f+t|0;f=w+2|0;do if(s>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((f|0)==2){f=c[l>>2]<<16;break}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);v=f+q|0;f=w+3|0;do if(s>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((f|0)==2){f=c[l>>2]<<16;break}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if(!f)f=0;else{if(c[f>>2]|0){f=0;break}c[f>>2]=130;f=0}}while(0);p=f+r|0;if((x-w|0)==5){f=w+4|0;do if(s>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){l=0-(8192-f>>14)|0;break}else{l=f+8192>>14;break}}else if((f|0)==2){l=c[l>>2]<<16;break}else{l=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if(!f){l=0;break}if(c[f>>2]|0){l=0;break}c[f>>2]=130;l=0}while(0);f=1;s=v;l=l+v|0}else{f=1;u=w;s=v;l=v}}else{s=(c[va>>2]|0)-ma>>3;do if(s>>>0>w>>>0){f=Ia+(w<<3)+8|0;l=c[Ia+(w<<3)+12>>2]|0;if((l|0)==2){f=c[f>>2]<<16;break}else if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);t=(c[Aa>>2]|0)+f|0;q=c[Ba>>2]|0;u=w+1|0;do if(s>>>0>u>>>0){f=Ia+(u<<3)+8|0;l=c[Ia+(u<<3)+12>>2]|0;if((l|0)==1){f=c[f>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((l|0)==2){f=c[f>>2]<<16;break}else{f=c[f>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);p=f+t|0;f=w+2|0;do if(s>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else if((f|0)==2){f=c[l>>2]<<16;break}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}while(0);v=f+q|0;f=w+3|0;do if(s>>>0>f>>>0){l=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){f=c[l>>2]<<16;break}else if((f|0)==1){f=c[l>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[l>>2]|0;break}}else{f=c[wa>>2]|0;if(!f)f=0;else{if(c[f>>2]|0){f=0;break}c[f>>2]=130;f=0}}while(0);l=f+v|0;if((x-w|0)==5){f=w+4|0;do if(s>>>0>f>>>0){s=Ia+(f<<3)+8|0;f=c[Ia+(f<<3)+12>>2]|0;if((f|0)==2){s=c[s>>2]<<16;break}else if((f|0)==1){f=c[s>>2]|0;if((f|0)<0){s=0-(8192-f>>14)|0;break}else{s=f+8192>>14;break}}else{s=c[s>>2]|0;break}}else{f=c[wa>>2]|0;if(!f){s=0;break}if(c[f>>2]|0){s=0;break}c[f>>2]=130;s=0}while(0);f=0;r=p;p=s+p|0;s=v}else{f=0;u=w;r=p;s=v}}lv(Wa,t,q,r,s,p,l);c[Aa>>2]=p;c[Ba>>2]=l;w=u+4|0}while(x>>>0>w>>>0)}c[va>>2]=ua;f=z;break}case 28:{if(l>>>0>=q>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;s=0;f=l}else{s=0;f=l}}else{f=l+1|0;c[p>>2]=f;s=d[l>>0]<<8}if(f>>>0>=q>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;f=0}else f=0}else{c[p>>2]=f+1;f=d[f>>0]|0}l=c[va>>2]|0;if((l|0)!=(va|0)){c[l>>2]=(f|s)<<16>>16;c[l+4>>2]=2;c[va>>2]=l+8;f=z;break c}f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=z}else f=z;break}case 17:case 16:case 15:case 13:case 9:case 2:case 0:{A=767;break}default:{if(y>>>0<247){f=c[va>>2]|0;if((f|0)!=(va|0)){c[f>>2]=y+-139;c[f+4>>2]=2;c[va>>2]=f+8;f=z;break c}f=c[wa>>2]|0;if(!f){f=z;break c}if(c[f>>2]|0){f=z;break c}c[f>>2]=130;f=z;break c}if(y>>>0<251){s=(y<<8)+-63232|0;if(l>>>0>=q>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;f=0}else f=0}else{c[p>>2]=l+1;f=d[l>>0]|0}l=c[va>>2]|0;if((l|0)!=(va|0)){c[l>>2]=(f|s)+108;c[l+4>>2]=2;c[va>>2]=l+8;f=z;break c}f=c[wa>>2]|0;if(!f){f=z;break c}if(c[f>>2]|0){f=z;break c}c[f>>2]=130;f=z;break c}if((y|0)!=255){s=(y<<8)+-64256|0;if(l>>>0>=q>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;f=0}else f=0}else{c[p>>2]=l+1;f=d[l>>0]|0}l=c[va>>2]|0;if((l|0)!=(va|0)){c[l>>2]=-108-(f|s);c[l+4>>2]=2;c[va>>2]=l+8;f=z;break c}f=c[wa>>2]|0;if(!f){f=z;break c}if(c[f>>2]|0){f=z;break c}c[f>>2]=130;f=z;break c}if(l>>>0>=q>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;s=0}else s=0}else{y=l+1|0;c[p>>2]=y;s=d[l>>0]<<24;l=y}if(l>>>0>=q>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;f=0}else f=0}else{y=l+1|0;c[p>>2]=y;f=d[l>>0]<<16;l=y}s=f|s;if(l>>>0>=q>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;f=0}else f=0}else{y=l+1|0;c[p>>2]=y;f=d[l>>0]<<8;l=y}s=s|f;if(l>>>0>=q>>>0){f=c[o>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=85;f=0}else f=0}else{c[p>>2]=l+1;f=d[l>>0]|0}l=c[va>>2]|0;if((l|0)!=(va|0)){c[l>>2]=s|f;c[l+4>>2]=0;c[va>>2]=l+8;f=z;break c}f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=z}else f=z}}while(0);if((A|0)==767){A=0;c[va>>2]=ua;f=z}z=f;W=W+-1|0}o=c[va>>2]|0;f=o-ma>>3;if((f|0)==1){if(!(a[ta>>0]|0))A=212}else if(!((f|0)!=5|(a[ta>>0]|0)!=0))A=212;if((A|0)==212){do if((o|0)==(ua|0)){f=c[wa>>2]|0;if((f|0)!=0?(c[f>>2]|0)==0:0){c[f>>2]=130;f=0}else f=0}else{f=c[X>>2]|0;if((f|0)==2){f=c[ua>>2]<<16;break}else if((f|0)==1){f=c[ua>>2]|0;if((f|0)<0){f=0-(8192-f>>14)|0;break}else{f=f+8192>>14;break}}else{f=c[ua>>2]|0;break}}while(0);c[m>>2]=f+sa}a[ta>>0]=1;if(!(a[(c[qa>>2]|0)+753>>0]|0)){if(a[oa>>0]|0){iv(Wa,c[ja>>2]|0,c[ka>>2]|0);jv(Wa,ra,la,c[ha>>2]|0,c[ia>>2]|0,1);a[na>>0]=1;a[oa>>0]=0;a[pa>>0]=0;o=c[va>>2]|0}if(o-ma>>3>>>0>1)if(!(j<<24>>24)){do if((o|0)==(ua|0)){l=c[wa>>2]|0;if(l)if(!(c[l>>2]|0)){c[l>>2]=161;q=0;A=238}else{q=0;A=238}else{o=0;l=0;A=256}}else{l=o+-8|0;if((c[o+-4>>2]|0)!=2){l=c[wa>>2]|0;if((l|0)!=0?(c[l>>2]|0)==0:0){c[l>>2]=160;q=0;l=o}else{q=0;l=o}}else{c[va>>2]=l;q=c[l>>2]|0}if((l|0)!=(ua|0)){p=l+-8|0;if((c[l+-4>>2]|0)!=2){o=c[wa>>2]|0;if((o|0)!=0?(c[o>>2]|0)==0:0){c[o>>2]=160;o=0}else o=0}else{c[va>>2]=p;o=c[p>>2]|0;l=p}if((l|0)!=(ua|0)){r=l+-8|0;c[va>>2]=r;p=c[l+-4>>2]|0;do if((p|0)==1){p=c[r>>2]|0;if((p|0)<0){p=0-(8192-p>>14)|0;break}else{p=p+8192>>14;break}}else if((p|0)==2)p=c[r>>2]<<16;else p=c[r>>2]|0;while(0);c[Ba>>2]=p;if((r|0)!=(ua|0)){p=l+-16|0;c[va>>2]=p;l=c[l+-12>>2]|0;if((l|0)==1){l=c[p>>2]|0;if((l|0)<0){l=0-(8192-l>>14)|0;v=o;break}else{l=l+8192>>14;v=o;break}}else if((l|0)==2){l=c[p>>2]<<16;v=o;break}else{l=c[p>>2]|0;v=o;break}}else A=258}else A=247}else A=238}while(0);if((A|0)==238){l=c[wa>>2]|0;if(l)if(!(c[l>>2]|0)){c[l>>2]=161;o=0;A=247}else{o=0;A=247}else{o=0;l=q;A=256}}if((A|0)==247){l=c[wa>>2]|0;if((l|0)!=0?(c[l>>2]|0)==0:0){c[l>>2]=161;l=q;A=256}else{l=q;A=256}}if((A|0)==256){c[Ba>>2]=0;q=l;A=258}if((A|0)==258){l=c[wa>>2]|0;if((l|0)!=0?(c[l>>2]|0)==0:0){c[l>>2]=161;l=0;v=o}else{l=0;v=o}}c[Aa>>2]=l;c[Da+0>>2]=0;c[Da+4>>2]=0;c[Da+8>>2]=0;c[Da+12>>2]=0;s=xa+76|0;l=c[s>>2]|0;p=c[l+1160>>2]|0;if(!((p|0)==0|q>>>0>255)){if(q>>>0<256)q=b[8664+(q<<1)>>1]|0;else q=0;l=c[l+12>>2]|0;if(l){o=0;while(1){if((b[p+(o<<1)>>1]|0)==q<<16>>16){q=o;break}o=o+1|0;if(o>>>0>=l>>>0){o=18;A=769;break a}}if((q|0)>=0){u=xa+4|0;l=c[u>>2]|0;o=c[(c[l+128>>2]|0)+48>>2]|0;if(!o)o=Ms((c[l+652>>2]|0)+1176|0,q,ya,za)|0;else{o=Od[c[c[o>>2]>>2]&255](c[o+4>>2]|0,q,Ga)|0;c[ya>>2]=c[Ga>>2];c[za>>2]=c[Ga+4>>2]}if(!o){p=c[ya>>2]|0;t=Da+4|0;c[t>>2]=p;q=c[za>>2]|0;f=Da+8|0;c[f>>2]=p+q;r=Da+12|0;c[r>>2]=p;Ju(e,Da,g,h,1,c[Aa>>2]|0,c[Ba>>2]|0,Ea);l=c[u>>2]|0;o=c[(c[l+128>>2]|0)+48>>2]|0;if(!o){l=c[l+652>>2]|0;if(!(c[l+1204>>2]|0))zi(c[l+1176>>2]|0,t)}else{c[Ga>>2]=p;c[Ga+4>>2]=q;Jd[c[(c[o>>2]|0)+4>>2]&255](c[o+4>>2]|0,Ga)};c[Da+0>>2]=0;c[Da+4>>2]=0;c[Da+8>>2]=0;c[Da+12>>2]=0;l=c[s>>2]|0;q=c[l+1160>>2]|0;if(!((q|0)==0|v>>>0>255)){if(v>>>0<256)o=b[8664+(v<<1)>>1]|0;else o=0;l=c[l+12>>2]|0;if(l){p=0;while(1){if((b[q+(p<<1)>>1]|0)==o<<16>>16)break;p=p+1|0;if(p>>>0>=l>>>0){o=18;A=769;break a}}if((p|0)<0){o=18;A=769;break}l=c[u>>2]|0;o=c[(c[l+128>>2]|0)+48>>2]|0;if(!o)o=Ms((c[l+652>>2]|0)+1176|0,p,Ca,Fa)|0;else{o=Od[c[c[o>>2]>>2]&255](c[o+4>>2]|0,p,Ga)|0;c[Ca>>2]=c[Ga>>2];c[Fa>>2]=c[Ga+4>>2]}if(o){A=769;break}o=c[Ca>>2]|0;c[t>>2]=o;c[f>>2]=o+(c[Fa>>2]|0);c[r>>2]=o;Ju(e,Da,g,h,1,0,0,Ea);o=c[u>>2]|0;l=c[t>>2]|0;p=c[(c[o+128>>2]|0)+48>>2]|0;if(p){o=(c[f>>2]|0)-l|0;c[Ga>>2]=l;c[Ga+4>>2]=o;Jd[c[(c[p>>2]|0)+4>>2]&255](c[p+4>>2]|0,Ga);o=0;A=769;break}o=c[o+652>>2]|0;if(c[o+1204>>2]|0){o=0;A=769;break}zi(c[o+1176>>2]|0,t);o=0;A=769}else{o=18;A=769}}else{o=18;A=769}}else A=769}else{o=18;A=769}}else{o=18;A=769}}else{o=18;A=769}}else{o=18;A=769}else{o=0;A=769}}else{o=0;A=769}}}while(0);if((A|0)==769)if(!(c[Ha>>2]|0))c[Ha>>2]=o;Wa=c[Wa+11612>>2]|0;c[Ra>>2]=0;c[Sa>>2]=0;c[Ta>>2]=0;eh(Wa,c[Ua>>2]|0);c[Ua>>2]=0;Za=c[Za>>2]|0;c[Na>>2]=0;c[Oa>>2]=0;c[Pa>>2]=0;eh(Za,c[Qa>>2]|0);c[Qa>>2]=0;Za=c[Xa>>2]|0;c[Ja>>2]=0;c[Ka>>2]=0;c[La>>2]=0;eh(Za,c[Ma>>2]|0);c[Ma>>2]=0;c[Ya>>2]=0;eh(Va,n);if(k){i=_a;return}eh(c[Ia>>2]|0,Ia);i=_a;return}function Ku(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;g=c[b+192>>2]|0;f=c[b+188>>2]|0;a:do if(f){e=0;while(1){if((c[g+(e<<4)>>2]|0)==(d|0))break;e=e+1|0;if(e>>>0>=f>>>0){e=3;break a}}f=c[a+8>>2]|0;e=c[g+(e<<4)+12>>2]|0;if(e>>>0>=f>>>0?(qi(a,e-f|0)|0)==0:0){c[j>>2]=0;f=Ki(a,j)|0;e=c[j>>2]|0;if(e){a=e;i=k;return a|0}h=f&-256;if(!((h|0)==256|(h|0)==0)){a=0;i=k;return a|0}g=f&4;e=b+196|0;if(!g){e=Li(a,21664,e)|0;c[j>>2]=e;if(e){a=e;i=k;return a|0}}else{e=Li(a,21608,e)|0;c[j>>2]=e;if(e){a=e;i=k;return a|0}}f=b+216|0;d=(g|0)!=0?21512:21544;e=Li(a,d,f)|0;c[j>>2]=e;if(e){a=e;i=k;return a|0}g=b+232|0;e=Li(a,d,g)|0;c[j>>2]=e;if(e){a=e;i=k;return a|0}e=b+248|0;if((h|0)!=256){c[e+0>>2]=c[f+0>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];a=b+264|0;c[a+0>>2]=c[g+0>>2];c[a+4>>2]=c[g+4>>2];c[a+8>>2]=c[g+8>>2];c[a+12>>2]=c[g+12>>2];a=0;i=k;return a|0}e=Li(a,d,e)|0;c[j>>2]=e;if(e){a=e;i=k;return a|0}a=Li(a,d,b+264|0)|0;c[j>>2]=a;i=k;return a|0}else e=83}else e=3;while(0);c[j>>2]=e;a=e;i=k;return a|0}function Lu(a,d,e,f,g,h,j){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;if(!j)s=a+516|0;else{s=a+1548|0;a=a+1032|0}c[a>>2]=0;c[s>>2]=0;if(d>>>0>1){j=0;q=0;l=0;while(1){if(l){n=b[e>>1]|0;l=a;k=q;p=(b[e+2>>1]|0)-n|0;o=1}else{n=b[e+2>>1]|0;l=s;k=j;p=(b[e>>1]|0)-n|0;o=0}l=l+4|0;a:do if(k){while(1){m=c[l>>2]|0;if((n|0)<(m|0)){r=9;break}if((n|0)==(m|0))break;k=k+-1|0;l=l+32|0;if(!k){r=19;break a}}if((r|0)==9){if(!k){r=19;break}while(1){r=l+(k<<5)|0;k=k+-1|0;m=l+(k<<5)|0;c[r+0>>2]=c[m+0>>2];c[r+4>>2]=c[m+4>>2];c[r+8>>2]=c[m+8>>2];c[r+12>>2]=c[m+12>>2];c[r+16>>2]=c[m+16>>2];c[r+20>>2]=c[m+20>>2];c[r+24>>2]=c[m+24>>2];c[r+28>>2]=c[m+28>>2];if(!k){r=19;break a}}}l=l+4|0;k=c[l>>2]|0;if((p|0)<0){if((p|0)>=(k|0)){l=q;break}c[l>>2]=p;l=q;break}else{if((p|0)<=(k|0)){l=q;break}c[l>>2]=p;l=q;break}}else r=19;while(0);do if((r|0)==19){r=0;c[l>>2]=n;c[l+4>>2]=p;if(!(o<<24>>24)){j=j+1|0;l=q;break}else{l=q+1|0;break}}while(0);d=d+-2|0;if(d>>>0<=1){p=l;break}else{e=e+4|0;q=l;l=1}}}else{j=0;p=0}c[a>>2]=p;c[s>>2]=j;if(f>>>0>1){o=s+4|0;n=g;while(1){k=b[n+2>>1]|0;m=(b[n>>1]|0)-k|0;b:do if(j){d=j;e=o;while(1){l=c[e>>2]|0;if((k|0)<(l|0)){r=26;break}if((k|0)==(l|0))break;d=d+-1|0;e=e+32|0;if(!d){r=36;break b}}if((r|0)==26){if(!d){r=36;break}while(1){r=e+(d<<5)|0;d=d+-1|0;g=e+(d<<5)|0;c[r+0>>2]=c[g+0>>2];c[r+4>>2]=c[g+4>>2];c[r+8>>2]=c[g+8>>2];c[r+12>>2]=c[g+12>>2];c[r+16>>2]=c[g+16>>2];c[r+20>>2]=c[g+20>>2];c[r+24>>2]=c[g+24>>2];c[r+28>>2]=c[g+28>>2];if(!d){r=36;break b}}}e=e+4|0;d=c[e>>2]|0;if((m|0)<0){if((m|0)>=(d|0))break;c[e>>2]=m;break}else{if((m|0)<=(d|0))break;c[e>>2]=m;break}}else{e=o;r=36}while(0);if((r|0)==36){r=0;c[e>>2]=k;c[e+4>>2]=m;j=j+1|0}f=f+-2|0;if(f>>>0<=1){n=j;break}else n=n+4|0}}else n=j;c[a>>2]=p;c[s>>2]=n;if((p|0)>0){k=p;m=a+4|0;while(1){if(k>>>0>1){e=c[m>>2]|0;l=(c[m+32>>2]|0)-e|0;d=m+4|0;j=c[d>>2]|0;if((j|0)>(l|0)){c[d>>2]=l;j=l}}else{e=c[m>>2]|0;j=c[m+4>>2]|0}c[m+12>>2]=e;c[m+8>>2]=e+j;k=k+-1|0;if(!k)break;else m=m+32|0}}if((n|0)>0){l=n;m=s+4|0;while(1){k=c[m>>2]|0;if(l>>>0>1){e=k-(c[m+32>>2]|0)|0;d=m+4|0;j=c[d>>2]|0;if((j|0)<(e|0)){c[d>>2]=e;j=e}}else j=c[m+4>>2]|0;c[m+8>>2]=k;c[m+12>>2]=k+j;l=l+-1|0;if(!l)break;else m=m+32|0}}f=h<<1;m=a+4|0;if(p){d=a+16|0;c[d>>2]=(c[d>>2]|0)-h;d=p+-1|0;j=c[a+12>>2]|0;if(!d)e=m;else{e=a+-28+(p<<3<<2)|0;while(1){a=m+44|0;k=c[a>>2]|0;l=k-j|0;if((l|0)<(f|0)){r=((l|0)/2|0)+j|0;c[a>>2]=r;c[m+8>>2]=r}else{c[m+8>>2]=j+h;c[a>>2]=k-h}d=d+-1|0;j=c[m+40>>2]|0;if(!d)break;else m=m+32|0}}c[e+8>>2]=j+h}a=s+4|0;if(!n){i=t;return}d=s+16|0;c[d>>2]=(c[d>>2]|0)-h;d=n+-1|0;j=c[s+12>>2]|0;if(!d)e=a;else{e=s+-28+(n<<3<<2)|0;m=a;while(1){l=m+44|0;k=c[l>>2]|0;a=k-j|0;if((a|0)<(f|0)){j=((a|0)/2|0)+j|0;a=j}else{a=j+h|0;j=k-h|0}c[l>>2]=j;c[m+8>>2]=a;d=d+-1|0;j=c[m+40>>2]|0;if(!d)break;else m=m+32|0}}c[e+8>>2]=j+h;i=t;return}function Mu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+32|0;v=w+16|0;u=w;g=c[b+12>>2]|0;if(g)c[(c[b+20>>2]|0)+(g+-1<<4)+12>>2]=e;t=b+24|0;e=c[t>>2]|0;h=e+-1|0;if((h|0)<=0){f=0;i=w;return f|0}s=b+32|0;g=e;a:while(1){e=e+-2|0;b:do if((e|0)>-1){r=c[s>>2]|0;m=c[r+(h<<4)+8>>2]|0;n=c[r+(h<<4)>>2]|0;c:while(1){j=c[r+(e<<4)+8>>2]|0;b=c[r+(e<<4)>>2]|0;b=n>>>0>>0?n:b;if(b>>>0>7){k=m;do{if((a[j>>0]&a[k>>0])<<24>>24)break c;k=k+1|0;j=j+1|0;b=b+-8|0}while(b>>>0>7)}else k=m;if((b|0)!=0?(a[j>>0]&a[k>>0]&255&~(255>>>b)|0)!=0:0)break;if((e|0)>0)e=e+-1|0;else break b}o=(e|0)>(h|0);q=o?e:h;o=o?h:e;if((o|0)<(q|0)&(o|0)>-1&(q|0)<(g|0)){p=r+(q<<4)|0;m=r+(o<<4)|0;j=c[m>>2]|0;n=c[p>>2]|0;if(n){if(n>>>0>j>>>0){b=r+(o<<4)+4|0;g=((c[b>>2]|0)+7|0)>>>3;l=(n+7|0)>>>3;c[v>>2]=0;if(l>>>0>g>>>0){k=l+7&1073741816;e=r+(o<<4)+8|0;c[e>>2]=hh(f,1,g,k,c[e>>2]|0,v)|0;g=c[v>>2]|0;if(g){e=33;break a}c[b>>2]=k<<3}else e=r+(o<<4)+8|0;g=j;do{if((c[m>>2]|0)>>>0>g>>>0){j=(c[e>>2]|0)+(g>>3)|0;a[j>>0]=(d[j>>0]|0)&(128>>>(g&7)^255)}g=g+1|0}while((g|0)!=(n|0));g=l}else g=(n+7|0)>>>3;if(g){b=c[r+(q<<4)+8>>2]|0;e=c[r+(o<<4)+8>>2]|0;while(1){a[e>>0]=a[b>>0]|a[e>>0];g=g+-1|0;if(!g)break;else{b=b+1|0;e=e+1|0}}}g=c[t>>2]|0}c[p>>2]=0;c[r+(q<<4)+12>>2]=0;e=g+-1|0;b=e-q|0;if((b|0)>0){c[u+0>>2]=c[p+0>>2];c[u+4>>2]=c[p+4>>2];c[u+8>>2]=c[p+8>>2];c[u+12>>2]=c[p+12>>2];Bga(p|0,r+(q+1<<4)|0,b<<4|0)|0;g=r+(e<<4)|0;c[g+0>>2]=c[u+0>>2];c[g+4>>2]=c[u+4>>2];c[g+8>>2]=c[u+8>>2];c[g+12>>2]=c[u+12>>2];g=c[t>>2]|0}g=g+-1|0;c[t>>2]=g}}while(0);e=h+-1|0;if((e|0)>0){r=h;h=e;e=r}else{g=0;e=33;break}}if((e|0)==33){i=w;return g|0}return 0}function Nu(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;i=i+16|0;t=u+8|0;r=u;q=u+4|0;if((f|0)<0){p=(f|0)==-21;f=0;e=(p?-21:0)+e|0;p=p?3:1}else p=0;s=(h|0)!=0;if(s)c[h>>2]=-1;o=c[b>>2]|0;a:do if(!o){k=0;m=10}else{k=0;j=c[b+8>>2]|0;while(1){if((c[j>>2]|0)==(e|0)?(c[j+4>>2]|0)==(f|0):0){o=k;break a}k=k+1|0;if(k>>>0>>0)j=j+12|0;else{m=10;break}}}while(0);if((m|0)==10){m=o+1|0;l=b+4|0;j=c[l>>2]|0;do if(m>>>0>=j>>>0?(c[q>>2]=0,j>>>0>>0):0){n=o+8&-8;v=b+8|0;c[v>>2]=hh(g,12,j,n,c[v>>2]|0,q)|0;j=c[q>>2]|0;if(!j){c[l>>2]=n;break}else{v=j;i=u;return v|0}}while(0);v=c[b+8>>2]|0;c[b>>2]=m;c[v+(o*12|0)>>2]=e;c[v+(o*12|0)+4>>2]=f;c[v+(o*12|0)+8>>2]=p;o=k}k=b+12|0;f=c[k>>2]|0;if(!f){j=b+16|0;do if(!(c[j>>2]|0)){c[r>>2]=0;e=b+20|0;f=hh(g,16,0,8,c[e>>2]|0,r)|0;c[e>>2]=f;e=c[r>>2]|0;if(!e){c[j>>2]=8;break}else{v=e;i=u;return v|0}}else f=c[b+20>>2]|0;while(0);c[f>>2]=0;c[f+12>>2]=0;c[k>>2]=1}else f=(c[b+20>>2]|0)+(f+-1<<4)|0;if((o|0)>=0){if((c[f>>2]|0)>>>0<=o>>>0){l=o+1|0;m=f+4|0;j=((c[m>>2]|0)+7|0)>>>3;e=(o+8|0)>>>3;c[t>>2]=0;do if(e>>>0>j>>>0){k=e+7&1073741816;e=f+8|0;c[e>>2]=hh(g,1,j,k,c[e>>2]|0,t)|0;e=c[t>>2]|0;if(!e){c[m>>2]=k<<3;break}else{v=e;i=u;return v|0}}while(0);c[f>>2]=l}v=(c[f+8>>2]|0)+(o>>3)|0;a[v>>0]=d[v>>0]|0|128>>>(o&7)}if(!s){v=0;i=u;return v|0}c[h>>2]=o;v=0;i=u;return v|0}function Ou(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+16|0;s=t+8|0;q=t;k=t+4|0;r=b+12|0;n=c[r>>2]|0;if(n)c[(c[b+20>>2]|0)+(n+-1<<4)+12>>2]=h;o=n+1|0;p=b+16|0;m=c[p>>2]|0;do if(o>>>0>m>>>0){c[k>>2]=0;l=n+8&-8;u=b+20|0;h=hh(j,16,m,l,c[u>>2]|0,k)|0;c[u>>2]=h;m=c[k>>2]|0;if(!m){c[p>>2]=l;m=l;break}else{u=m;i=t;return u|0}}else h=c[b+20>>2]|0;while(0);c[h+(n<<4)>>2]=0;c[h+(n<<4)+12>>2]=0;c[r>>2]=o;if(!o){do if(!m){c[q>>2]=0;h=hh(j,16,0,8,h,q)|0;c[b+20>>2]=h;k=c[q>>2]|0;if(!k){c[p>>2]=8;break}else{u=k;i=t;return u|0}}while(0);c[h>>2]=0;c[h+12>>2]=0;c[r>>2]=1}else h=h+(n<<4)|0;n=h+4|0;m=((c[n>>2]|0)+7|0)>>>3;k=(g+7|0)>>>3;c[s>>2]=0;do if(k>>>0>m>>>0){l=k+7&1073741816;k=h+8|0;c[k>>2]=hh(j,1,m,l,c[k>>2]|0,s)|0;k=c[s>>2]|0;if(!k){c[n>>2]=l<<3;break}else{u=k;i=t;return u|0}}while(0);c[h>>2]=g;if(!g){u=0;i=t;return u|0}o=e+(f>>>3)|0;k=128>>>(f&7);l=128;n=c[h+8>>2]|0;while(1){a[n>>0]=(((d[o>>0]|0)&k|0)==0?0:l)|(d[n>>0]|0)&(l^255);h=k>>1;k=(h|0)==0;l=l>>1;m=(l|0)==0;g=g+-1|0;if(!g){h=0;break}else{o=k?o+1|0:o;k=k?128:h;l=m?128:l;n=m?n+1|0:n}}i=t;return h|0}function Pu(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;q=e+100|0;h=c[q>>2]|0;do if((h|0)==1){h=c[e+72>>2]|0;if((h|0)>(g|0)){p=((c[e+4>>2]|0)+-1&h|0)<(c[e+8>>2]|0);n=e+40|0;j=c[n>>2]|0;o=e+88|0;k=c[o>>2]|0;h=j-(c[k+8>>2]|0)|0;if((h|0)<0){c[e+44>>2]=99;g=1;i=r;return g|0}if((h|0)>0){c[k+16>>2]=h>>2;do if(!p){h=k+12|0;l=c[h>>2]|0;if(!(l&8)){c[h>>2]=l|32;break}else{c[h>>2]=l|16;break}}while(0);c[o>>2]=j;m=j+32|0;c[n>>2]=m;c[j+16>>2]=0;c[j+8>>2]=m;c[k+28>>2]=j;k=e+84|0;b[k>>1]=(b[k>>1]|0)+1<<16>>16}else{m=j;j=k}l=c[e+36>>2]|0;if(m>>>0>=l>>>0){c[e+44>>2]=98;g=1;i=r;return g|0}k=e+87|0;a[k>>0]=0;h=e+92|0;if(!(c[h>>2]|0)){c[o>>2]=m;c[h>>2]=m;h=m+32|0;c[n>>2]=h;j=m}else h=m;if(h>>>0>=l>>>0){c[e+44>>2]=98;g=1;i=r;return g|0}c[j+20>>2]=0;c[j+16>>2]=0;c[j+8>>2]=h;c[j+4>>2]=0;c[j+28>>2]=0;h=d[e+180>>0]|0;c[j+12>>2]=p?h:h|16;h=e+96|0;if(!(c[h>>2]|0))c[h>>2]=j;c[q>>2]=2;a[e+86>>0]=1;a[k>>0]=0;k=56}else k=55}else if((h|0)==2){h=c[e+72>>2]|0;if((h|0)<(g|0)){p=c[e+4>>2]|0;p=((h+-1+p&0-p)-h|0)<(c[e+8>>2]|0);n=e+40|0;l=c[n>>2]|0;o=e+88|0;k=c[o>>2]|0;h=l-(c[k+8>>2]|0)|0;if((h|0)<0){c[e+44>>2]=99;g=1;i=r;return g|0}if((h|0)>0){c[k+16>>2]=h>>2;do if(!p){h=k+12|0;j=c[h>>2]|0;if(!(j&8)){c[h>>2]=j|32;break}else{c[h>>2]=j|16;break}}while(0);c[o>>2]=l;m=l+32|0;c[n>>2]=m;c[l+16>>2]=0;c[l+8>>2]=m;c[k+28>>2]=l;k=e+84|0;b[k>>1]=(b[k>>1]|0)+1<<16>>16}else{m=l;l=k}j=c[e+36>>2]|0;if(m>>>0>=j>>>0){c[e+44>>2]=98;g=1;i=r;return g|0}k=e+87|0;a[k>>0]=0;h=e+92|0;if(!(c[h>>2]|0)){c[o>>2]=m;c[h>>2]=m;h=m+32|0;c[n>>2]=h;l=m}else h=m;if(h>>>0>=j>>>0){c[e+44>>2]=98;g=1;i=r;return g|0}c[l+20>>2]=0;c[l+16>>2]=0;c[l+8>>2]=h;c[l+4>>2]=0;c[l+28>>2]=0;c[l+12>>2]=d[e+180>>0]|(p?8:40);h=e+96|0;if(!(c[h>>2]|0))c[h>>2]=l;c[q>>2]=1;a[e+86>>0]=1;a[k>>0]=0;k=55}else k=56}else if(!h){h=c[e+72>>2]|0;if((h|0)<(g|0)){l=c[e+4>>2]|0;l=((h+-1+l&0-l)-h|0)<(c[e+8>>2]|0);j=e+92|0;k=e+40|0;h=c[k>>2]|0;if(!(c[j>>2]|0)){c[e+88>>2]=h;c[j>>2]=h;h=h+32|0;c[k>>2]=h}if(h>>>0>=(c[e+36>>2]|0)>>>0){c[e+44>>2]=98;g=1;i=r;return g|0}j=c[e+88>>2]|0;c[j+20>>2]=0;c[j+16>>2]=0;c[j+8>>2]=h;c[j+4>>2]=0;c[j+28>>2]=0;c[j+12>>2]=d[e+180>>0]|(l?8:40);h=e+96|0;if(!(c[h>>2]|0))c[h>>2]=j;c[q>>2]=1;a[e+86>>0]=1;a[e+87>>0]=0;k=55;break}if((h|0)>(g|0)){l=((c[e+4>>2]|0)+-1&h|0)<(c[e+8>>2]|0);j=e+92|0;k=e+40|0;h=c[k>>2]|0;if(!(c[j>>2]|0)){c[e+88>>2]=h;c[j>>2]=h;h=h+32|0;c[k>>2]=h}if(h>>>0>=(c[e+36>>2]|0)>>>0){c[e+44>>2]=98;g=1;i=r;return g|0}j=c[e+88>>2]|0;c[j+20>>2]=0;c[j+16>>2]=0;c[j+8>>2]=h;c[j+4>>2]=0;c[j+28>>2]=0;h=d[e+180>>0]|0;c[j+12>>2]=l?h:h|16;h=e+96|0;if(!(c[h>>2]|0))c[h>>2]=j;c[q>>2]=2;a[e+86>>0]=1;a[e+87>>0]=0;k=56}else k=54}else k=54;while(0);if((k|0)==54){j=e+72|0;h=e+68|0}else if((k|0)==55){h=e+68|0;j=e+72|0;if((nv(e,c[h>>2]|0,c[j>>2]|0,f,g,c[e+76>>2]|0,c[e+80>>2]|0)|0)<<24>>24){g=1;i=r;return g|0}}else if((k|0)==56){h=e+68|0;j=e+72|0;o=e+86|0;m=a[o>>0]|0;k=nv(e,c[h>>2]|0,0-(c[j>>2]|0)|0,f,0-g|0,0-(c[e+80>>2]|0)|0,0-(c[e+76>>2]|0)|0)|0;if(m<<24>>24!=0?(a[o>>0]|0)==0:0){e=(c[e+88>>2]|0)+20|0;c[e>>2]=0-(c[e>>2]|0)}if(k<<24>>24){g=1;i=r;return g|0}}c[h>>2]=f;c[j>>2]=g;g=0;i=r;return g|0}function Qu(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=i;I=e+184|0;J=e+52|0;c[J>>2]=I;K=e+68|0;c[e+200>>2]=c[K>>2];L=e+72|0;t=c[L>>2]|0;c[e+204>>2]=t;c[e+192>>2]=f;c[e+196>>2]=g;c[I>>2]=h;c[e+188>>2]=j;u=e+100|0;v=e+76|0;w=e+80|0;x=e+86|0;y=e+88|0;z=e+4|0;A=e+8|0;B=e+92|0;C=e+40|0;D=e+36|0;E=e+180|0;F=e+96|0;G=e+87|0;H=e+84|0;k=I;a:while(1){q=k+20|0;r=k+12|0;s=k+4|0;p=(t|0)>(j|0);do if(!((g|0)<((p?j:t)|0)|(g|0)>((p?t:j)|0))){if((t|0)==(j|0)){c[J>>2]=k+-16;break}p=(t|0)<(j|0);o=p?1:2;k=c[u>>2]|0;if((k|0)!=(o|0)){f=c[z>>2]|0;if(p)n=((t+-1+f&0-f)-t|0)>=(c[A>>2]|0);else n=(f+-1&t|0)>=(c[A>>2]|0);f=c[C>>2]|0;if(k){m=c[y>>2]|0;k=f-(c[m+8>>2]|0)|0;if((k|0)<0){f=12;break a}if((k|0)>0){c[m+16>>2]=k>>2;do if(n){l=m+12|0;k=c[l>>2]|0;if(!(k&8)){c[l>>2]=k|32;break}else{c[l>>2]=k|16;break}}while(0);c[y>>2]=f;k=f+32|0;c[C>>2]=k;c[f+16>>2]=0;c[f+8>>2]=k;c[m+28>>2]=f;b[H>>1]=(b[H>>1]|0)+1<<16>>16;f=k}if(f>>>0>=(c[D>>2]|0)>>>0){f=20;break a}a[G>>0]=0}if(!(c[B>>2]|0)){c[y>>2]=f;c[B>>2]=f;f=f+32|0;c[C>>2]=f}if(f>>>0>=(c[D>>2]|0)>>>0){f=25;break a}k=c[y>>2]|0;l=k+12|0;c[k+20>>2]=0;c[k+16>>2]=0;c[k+8>>2]=f;c[k+4>>2]=0;c[k+28>>2]=0;f=d[E>>0]|0;c[l>>2]=f;if(p){c[l>>2]=f|8;if(n)c[l>>2]=f|40}else if(n)c[l>>2]=f|16;if(!(c[F>>2]|0))c[F>>2]=k;c[u>>2]=o;a[x>>0]=1;a[G>>0]=0}f=c[v>>2]|0;k=c[w>>2]|0;if(p)if(!((pv(e,2,231,f,k)|0)<<24>>24))break;else{j=1;f=43;break a}c[s>>2]=0-j;c[r>>2]=0-g;c[q>>2]=0-t;t=a[x>>0]|0;f=pv(e,2,231,0-k|0,0-f|0)|0;if(t<<24>>24!=0?(a[x>>0]|0)==0:0){t=(c[y>>2]|0)+20|0;c[t>>2]=0-(c[t>>2]|0)}c[s>>2]=0-(c[s>>2]|0);if(f<<24>>24){j=1;f=43;break a}}else{s=k+16|0;p=c[s>>2]|0;c[k+32>>2]=p;l=k+8|0;m=c[l>>2]|0;p=(m+p|0)/2|0;c[k+24>>2]=p;m=(h+m|0)/2|0;c[l>>2]=m;c[s>>2]=(m+p|0)/2|0;c[k+36>>2]=t;t=(g+t|0)/2|0;c[k+28>>2]=t;s=(j+g|0)/2|0;c[r>>2]=s;c[q>>2]=(s+t|0)/2|0;c[J>>2]=k+16}while(0);f=c[J>>2]|0;if(f>>>0>>0){f=42;break}k=f;t=c[f+20>>2]|0;j=c[f+4>>2]|0;g=c[f+12>>2]|0;h=c[f>>2]|0}if((f|0)==12){c[e+44>>2]=99;L=1;i=M;return L|0}else if((f|0)==20){c[e+44>>2]=98;L=1;i=M;return L|0}else if((f|0)==25){c[e+44>>2]=98;L=1;i=M;return L|0}else if((f|0)==42){c[K>>2]=h;c[L>>2]=j;L=0;i=M;return L|0}else if((f|0)==43){i=M;return j|0}return 0}function Ru(e,f,g,h,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;K=e+184|0;L=e+52|0;c[L>>2]=K;M=e+68|0;c[e+208>>2]=c[M>>2];N=e+72|0;v=c[N>>2]|0;c[e+212>>2]=v;c[e+200>>2]=f;c[e+204>>2]=g;c[e+192>>2]=h;c[e+196>>2]=j;c[K>>2]=k;c[e+188>>2]=l;w=e+100|0;x=e+76|0;y=e+80|0;z=e+86|0;A=e+88|0;B=e+4|0;C=e+8|0;D=e+92|0;E=e+40|0;F=e+36|0;G=e+180|0;H=e+96|0;I=e+87|0;J=e+84|0;f=K;a:while(1){q=f+28|0;r=f+20|0;s=f+12|0;u=f+4|0;t=(v|0)<=(l|0);p=(g|0)>(j|0);do if(!(((p?j:g)|0)<((t?v:l)|0)?1:((p?g:j)|0)>((t?l:v)|0))){if((v|0)==(l|0)){c[L>>2]=f+-24;break}p=t?1:2;f=c[w>>2]|0;if((f|0)!=(p|0)){h=c[B>>2]|0;if(t)o=((v+-1+h&0-h)-v|0)>=(c[C>>2]|0);else o=(h+-1&v|0)>=(c[C>>2]|0);h=c[E>>2]|0;if(f){n=c[A>>2]|0;f=h-(c[n+8>>2]|0)|0;if((f|0)<0){f=12;break a}if((f|0)>0){c[n+16>>2]=f>>2;do if(o){f=n+12|0;m=c[f>>2]|0;if(!(m&8)){c[f>>2]=m|32;break}else{c[f>>2]=m|16;break}}while(0);c[A>>2]=h;m=h+32|0;c[E>>2]=m;c[h+16>>2]=0;c[h+8>>2]=m;c[n+28>>2]=h;b[J>>1]=(b[J>>1]|0)+1<<16>>16;h=m}if(h>>>0>=(c[F>>2]|0)>>>0){f=20;break a}a[I>>0]=0}if(!(c[D>>2]|0)){c[A>>2]=h;c[D>>2]=h;h=h+32|0;c[E>>2]=h}if(h>>>0>=(c[F>>2]|0)>>>0){f=25;break a}f=c[A>>2]|0;m=f+12|0;c[f+20>>2]=0;c[f+16>>2]=0;c[f+8>>2]=h;c[f+4>>2]=0;c[f+28>>2]=0;h=d[G>>0]|0;c[m>>2]=h;if(t){c[m>>2]=h|8;if(o)c[m>>2]=h|40}else if(o)c[m>>2]=h|16;if(!(c[H>>2]|0))c[H>>2]=f;c[w>>2]=p;a[z>>0]=1;a[I>>0]=0}h=c[x>>2]|0;f=c[y>>2]|0;if(t)if(!((pv(e,3,232,h,f)|0)<<24>>24))break;else{l=1;f=43;break a}c[u>>2]=0-l;c[s>>2]=0-j;c[r>>2]=0-g;c[q>>2]=0-v;v=a[z>>0]|0;h=pv(e,3,232,0-f|0,0-h|0)|0;if(v<<24>>24!=0?(a[z>>0]|0)==0:0){v=(c[A>>2]|0)+20|0;c[v>>2]=0-(c[v>>2]|0)}c[u>>2]=0-(c[u>>2]|0);if(h<<24>>24){l=1;f=43;break a}}else{t=f+24|0;u=c[t>>2]|0;c[f+48>>2]=u;n=f+8|0;o=f+16|0;m=c[o>>2]|0;h=(c[n>>2]|0)+1|0;p=k+h>>1;c[n>>2]=p;u=u+1+m>>1;c[f+40>>2]=u;m=(h+m>>1)+1|0;p=m+p>>1;c[o>>2]=p;u=m+u>>1;c[f+32>>2]=u;c[t>>2]=p+1+u>>1;c[f+52>>2]=v;t=j+1|0;u=l+t>>1;c[s>>2]=u;v=v+1+g>>1;c[f+44>>2]=v;t=(t+g>>1)+1|0;u=t+u>>1;c[r>>2]=u;v=t+v>>1;c[f+36>>2]=v;c[q>>2]=u+1+v>>1;c[L>>2]=f+24}while(0);h=c[L>>2]|0;if(h>>>0>>0){f=42;break}f=h;v=c[h+28>>2]|0;l=c[h+4>>2]|0;g=c[h+20>>2]|0;j=c[h+12>>2]|0;k=c[h>>2]|0}if((f|0)==12){c[e+44>>2]=99;e=1;i=O;return e|0}else if((f|0)==20){c[e+44>>2]=98;e=1;i=O;return e|0}else if((f|0)==25){c[e+44>>2]=98;e=1;i=O;return e|0}else if((f|0)==42){c[M>>2]=k;c[N>>2]=l;e=0;i=O;return e|0}else if((f|0)==43){i=O;return l|0}return 0}function Su(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;p=c[a+16>>2]|0;j=c[a+32>>2]|0;if(j>>>0<=b>>>0){q=-1;i=r;return q|0}k=a+44|0;l=j<<1;m=l+2|0;n=a+40|0;o=a+48|0;h=j+-1|0;while(1){g=b<<1;e=g+14|0;g=(d[p+e>>0]|0)<<8|(d[p+(g+15)>>0]|0);c[k>>2]=g;e=m+e|0;s=(d[p+e>>0]|0)<<8|(d[p+(e|1)>>0]|0);c[n>>2]=s;e=e+l|0;c[o>>2]=((d[p+e>>0]|0)<<8|(d[p+(e|1)>>0]|0))<<16>>16;e=e+l|0;f=(d[p+e>>0]|0)<<8|(d[p+(e|1)>>0]|0);if(b>>>0>=h>>>0&(s|0)==65535&(g|0)==65535){g=c[a>>2]|0;if(!f){e=0;break}if((p+(e+2+f)|0)>>>0>((c[g+496>>2]|0)+(c[g+500>>2]|0)|0)>>>0){q=6;break}}if(!f){e=0;break}else if((f|0)!=65535){q=8;break}b=b+1|0;if(b>>>0>=j>>>0){b=-1;q=11;break}}if((q|0)==6){c[o>>2]=1;e=0}else if((q|0)==8)e=p+(f+e)|0;else if((q|0)==11){i=r;return b|0}c[a+52>>2]=e;c[a+36>>2]=b;s=0;i=r;return s|0}function Tu(a){a=a|0;var b=0,c=0,e=0;e=i;b=(d[a+1>>0]|0)<<16|(d[a>>0]|0)<<24|(d[a+2>>0]|0)<<8|(d[a+3>>0]|0);if(!b){c=0;i=e;return c|0}c=a+7|0;a=0;while(1){a=a+1+(d[c>>0]|0)|0;b=b+-1|0;if(!b)break;else c=c+4|0}i=e;return a|0}function Uu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;f=h;g=a+28|0;e=c[g>>2]|0;c[f>>2]=0;if(e>>>0>=b>>>0){b=0;i=h;return b|0}c[a+36>>2]=d;a=a+32|0;c[a>>2]=hh(d,4,e,b,c[a>>2]|0,f)|0;e=c[f>>2]|0;if(e){b=e;i=h;return b|0}c[g>>2]=b;b=0;i=h;return b|0}function Vu(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;k=j;f=c[d+16>>2]|0;d=b[d+8>>1]|0;g=d&65535;h=hh(e,1,0,g+1|0,0,k)|0;if(c[k>>2]|0){k=0;i=j;return k|0}a:do if(!(d<<16>>16))d=0;else{d=0;while(1){e=a[f>>0]|0;if(!(e<<24>>24))break a;a[h+d>>0]=(e&255)<32|e<<24>>24<0?63:e;d=d+1|0;if(d>>>0>>0)f=f+1|0;else break}}while(0);a[h+d>>0]=0;k=h;i=j;return k|0}function Wu(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l;g=c[b+16>>2]|0;b=(e[b+8>>1]|0)>>>1;j=b&65535;k=hh(f,1,0,j+1|0,0,h)|0;if(c[h>>2]|0){k=0;i=l;return k|0}a:do if(!(b<<16>>16))b=0;else{b=0;h=g;while(1){f=a[h+1>>0]|0;g=(d[h>>0]|0)<<8|f&255;if(!g)break a;a[k+b>>0]=(g+-32|0)>>>0>95?63:f;b=b+1|0;if(b>>>0>>0)h=h+2|0;else break}}while(0);a[k+b>>0]=0;i=l;return k|0}function Xu(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;l=a+12|0;n=c[l>>2]|0;o=b[n+4>>1]|0;p=b[n+6>>1]|0;q=b[n+8>>1]|0;r=b[n+10>>1]|0;m=b[n+12>>1]|0;n=b[n+14>>1]|0;j=e+2|0;if(j>>>0>f>>>0){a=3;i=s;return a|0}k=(d[e>>0]|0)<<8|(d[e+1>>0]|0);if((e+(k<<2|2)|0)>>>0>f>>>0){a=3;i=s;return a|0}a:do if(!k)f=0;else{e=0;while(1){f=Ft(a,(d[j>>0]|0)<<8|(d[j+1>>0]|0),(d[j+2>>0]|0)+g|0,(d[j+3>>0]|0)+h|0)|0;if(f)break a;e=e+1|0;if(e>>>0>=k>>>0){f=0;break}else j=j+4|0}}while(0);l=c[l>>2]|0;b[l+4>>1]=(o<<8&65535)<<16>>16>>8;b[l+6>>1]=(p<<8&65535)<<16>>16>>8;b[l+8>>1]=q&255;b[l+10>>1]=(r<<8&65535)<<16>>16>>8;b[l+12>>1]=(m<<8&65535)<<16>>16>>8;b[l+14>>1]=n&255;a=c[a+8>>2]|0;b[l+2>>1]=c[a+4>>2]&255;b[l>>1]=c[a>>2]&255;a=f;i=s;return a|0}function Yu(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;m=c[f+8>>2]|0;B=c[m+8>>2]|0;n=c[f+12>>2]|0;l=e[n+2>>1]|0;n=b[n>>1]|0;A=n&65535;z=ea(d[f+18>>0]|0,l)|0;if((j|0)<0){h=3;i=C;return h|0}if(((k|0)<0?1:(l+j|0)>(c[m+4>>2]|0))|(A+k|0)>(c[m>>2]|0)){h=3;i=C;return h|0}if((g+(((ea(z,A)|0)+7|0)>>>3)|0)>>>0>h>>>0){h=3;i=C;return h|0}y=j&7;if(!(n<<16>>16)){h=0;i=C;return h|0}s=(c[m+12>>2]|0)+((ea(B,k)|0)+(j>>3))|0;u=(y|0)==0;v=8-y|0;t=z>>>0>>0?z:v;v=~(255<>0]|0}else{if((l|0)>=(t|0)){n=g;l=l-t|0;f=(f&65535)>>>8;break}if(g>>>0>>0){n=g+1|0;f=(d[g>>0]|0|f&65535)&65535}else n=g;l=x+l|0}while(0);f=f&65535;a[s>>0]=f>>>l&v|(d[s>>0]|0);j=s+1|0;f=f<<8&65535;k=w}if((k|0)>7){p=k+-8|0;o=p>>>3;q=o<<3;m=n;g=j;while(1){f=d[m>>0]|0|f&65535;a[g>>0]=f>>>l|(d[g>>0]|0);f=f<<8&65535;k=k+-8|0;if((k|0)<=7)break;else{m=m+1|0;g=g+1|0}}n=n+(o+1)|0;j=j+(o+1)|0;k=p-q|0}do if((k|0)>0){if((l|0)>=(k|0)){a[j>>0]=d[j>>0]|0|65280>>>k&(f&65535)>>>l;l=l-k|0;break}if(n>>>0>>0){m=n+1|0;f=(d[n>>0]|0|f&65535)&65535}else m=n;f=f&65535;a[j>>0]=f>>>l&65280>>>k|(d[j>>0]|0);n=m;l=l+8-k|0;f=f<<8&65535}while(0);r=r+-1|0;if((r|0)<=0){f=0;break}else{g=n;s=s+B|0}}i=C;return f|0}function Zu(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;l=c[f+8>>2]|0;w=c[l+8>>2]|0;s=c[l+12>>2]|0;n=c[f+12>>2]|0;m=e[n+2>>1]|0;n=b[n>>1]|0;r=n&65535;v=ea(d[f+18>>0]|0,m)|0;if((j|0)<0){w=3;i=x;return w|0}if(((k|0)<0?1:(m+j|0)>(c[l+4>>2]|0))|(r+k|0)>(c[l>>2]|0)){w=3;i=x;return w|0}if((g+(ea((v+7|0)>>>3,r)|0)|0)>>>0>h>>>0){w=3;i=x;return w|0}m=ea(w,k)|0;l=j>>3;q=s+(m+l)|0;u=j&7;f=n<<16>>16==0;if(!u){if(f){w=0;i=x;return w|0}j=v>>>0>7;k=7-v|0;k=(((k|0)>-8?k:-8)+v|0)>>>3;o=v+-8-(k<<3)|0;p=k+1|0;h=r;k=s+(l+k+m+1)|0;n=q;while(1){if(j){f=g;m=n;l=v;while(1){a[m>>0]=a[f>>0]|a[m>>0];l=l+-8|0;if((l|0)<=7)break;else{f=f+1|0;m=m+1|0}}g=g+p|0;f=k;l=o}else{f=n;l=v}if((l|0)>0){a[f>>0]=(d[g>>0]|0)&65280>>>l|(d[f>>0]|0);g=g+1|0}h=h+-1|0;if((h|0)<=0){g=0;break}else{k=k+w|0;n=n+w|0}}i=x;return g|0}if(f){w=0;i=x;return w|0}j=v>>>0>7;h=7-v|0;h=(((h|0)>-8?h:-8)+v|0)>>>3;p=v+-8-(h<<3)|0;t=h+1|0;h=s+(l+h+m+1)|0;o=q;while(1){if(j){f=g;l=o;k=v;m=0;while(1){m=d[f>>0]|0|m;a[l>>0]=m>>>u|(d[l>>0]|0);m=m<<8;k=k+-8|0;if((k|0)<=7)break;else{f=f+1|0;l=l+1|0}}f=g+t|0;n=h;l=p}else{f=g;n=o;l=v;m=0}if((l|0)>0){g=f+1|0;m=(d[f>>0]|0)&65280>>>l|m}else g=f;a[n>>0]=d[n>>0]|0|m>>>u;if((l+u|0)>8){s=n+1|0;a[s>>0]=d[s>>0]|0|m<<8>>>u}r=r+-1|0;if((r|0)<=0){g=0;break}else{h=h+w|0;o=o+w|0}}i=x;return g|0}function _u(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;k=f-d|0;n=d>>8;J=f>>8;m=d-(n<<8)|0;M=f-(J<<8)|0;if((g|0)==(e|0)){p=b-(c[a+16>>2]|0)|0;n=c[a+12>>2]|0;n=((n|0)<(J|0)?n:J)-(c[a+8>>2]|0)|0;n=(n|0)>-1?n:-1;j=c[a>>2]|0;if(!((n|0)==(j|0)?(p|0)==(c[a+4>>2]|0):0)){o=a+32|0;if(!(c[a+40>>2]|0)){l=c[o>>2]|0;h=a+36|0;m=c[h>>2]|0;if(m|l){b=c[a+24>>2]|0;b=(j|0)>(b|0)?b:j;d=(c[a+1420>>2]|0)+(c[a+4>>2]<<2)|0;j=c[d>>2]|0;a:do if(!j){j=0;k=d;N=11}else while(1){f=c[j>>2]|0;if((f|0)>(b|0)){k=d;N=11;break a}d=j+12|0;if((f|0)==(b|0)){q=j;break a}j=c[d>>2]|0;if(!j){j=0;k=d;N=11;break}}while(0);do if((N|0)==11){d=a+52|0;f=c[d>>2]|0;if((f|0)<(c[a+48>>2]|0)){N=c[a+44>>2]|0;c[d>>2]=f+1;q=N+(f<<4)|0;c[q>>2]=b;c[N+(f<<4)+8>>2]=0;c[N+(f<<4)+4>>2]=0;c[N+(f<<4)+12>>2]=j;c[k>>2]=q;break}else Va(a+1256|0,1)}while(0);N=q+8|0;c[N>>2]=(c[N>>2]|0)+l;N=q+4|0;c[N>>2]=(c[N>>2]|0)+m}}else h=a+36|0;c[o>>2]=0;c[h>>2]=0;c[a>>2]=n;c[a+4>>2]=p}if(p>>>0<(c[a+28>>2]|0)>>>0)h=(n|0)>=(c[a+24>>2]|0);else h=1;c[a+40>>2]=h&1;i=O;return}if((n|0)==(J|0)){g=g-e|0;K=ea(M+m|0,g)|0;N=a+32|0;c[N>>2]=(c[N>>2]|0)+K;N=a+36|0;c[N>>2]=(c[N>>2]|0)+g;i=O;return}f=(k|0)<0;G=k>>31;L=G+256&-256;F=f?0-k|0:k;G=G|1;f=ea(f?m:256-m|0,g-e|0)|0;d=(f|0)/(F|0)|0;f=(f|0)%(F|0)|0;if((f|0)<0){p=d+-1|0;A=f+F|0}else{p=d;A=f}d=ea(p,L+m|0)|0;H=a+32|0;d=(c[H>>2]|0)+d|0;c[H>>2]=d;I=a+36|0;f=(c[I>>2]|0)+p|0;c[I>>2]=f;y=G+n|0;C=b-(c[a+16>>2]|0)|0;D=c[a+12>>2]|0;E=c[a+8>>2]|0;q=((D|0)<(y|0)?D:y)-E|0;q=(q|0)>-1?q:-1;m=c[a>>2]|0;if(!((q|0)==(m|0)?(C|0)==(c[a+4>>2]|0):0)){if(!((c[a+40>>2]|0)!=0|(f|d|0)==0)){l=c[a+24>>2]|0;l=(m|0)>(l|0)?l:m;n=(c[a+1420>>2]|0)+(c[a+4>>2]<<2)|0;m=c[n>>2]|0;b:do if(!m){m=0;N=30}else while(1){b=c[m>>2]|0;if((b|0)>(l|0)){N=30;break b}n=m+12|0;if((b|0)==(l|0)){o=m;break b}m=c[n>>2]|0;if(!m){m=0;N=30;break}}while(0);do if((N|0)==30){b=a+52|0;k=c[b>>2]|0;if((k|0)<(c[a+48>>2]|0)){B=c[a+44>>2]|0;c[b>>2]=k+1;o=B+(k<<4)|0;c[o>>2]=l;c[B+(k<<4)+8>>2]=0;c[B+(k<<4)+4>>2]=0;c[B+(k<<4)+12>>2]=m;c[n>>2]=o;break}else Va(a+1256|0,1)}while(0);B=o+8|0;c[B>>2]=(c[B>>2]|0)+d;B=o+4|0;c[B>>2]=(c[B>>2]|0)+f}c[H>>2]=0;c[I>>2]=0;c[a>>2]=q;c[a+4>>2]=C;d=0;f=0}B=C>>>0<(c[a+28>>2]|0)>>>0;if(B)m=(q|0)>=(c[a+24>>2]|0);else m=1;k=m&1;z=a+40|0;c[z>>2]=k;b=p+e|0;do if((y|0)!=(J|0)){n=p+g-b<<8;m=(n|0)/(F|0)|0;n=(n|0)%(F|0)|0;if((n|0)<0){m=m+-1|0;n=n+F|0}s=a+4|0;t=a+24|0;u=a+1420|0;v=a+52|0;w=a+48|0;x=a+44|0;r=q;l=k;k=q;e=y;q=A-F|0;while(1){y=q+n|0;p=m+(y>>>31^1)|0;q=y-((y|0)>-1?F:0)|0;d=d+(p<<8)|0;f=f+p|0;p=p+b|0;e=e+G|0;y=((D|0)<(e|0)?D:e)-E|0;A=r;r=(y|0)>-1?y:-1;if((r|0)!=(A|0)){if(!((l|0)!=0|(f|d|0)==0)){o=c[t>>2]|0;o=(k|0)>(o|0)?o:k;l=(c[u>>2]|0)+(C<<2)|0;b=c[l>>2]|0;c:do if(!b){b=0;N=47}else while(1){k=c[b>>2]|0;if((k|0)>(o|0)){N=47;break c}l=b+12|0;if((k|0)==(o|0))break c;b=c[l>>2]|0;if(!b){b=0;N=47;break}}while(0);if((N|0)==47){N=0;k=c[v>>2]|0;if((k|0)>=(c[w>>2]|0)){N=48;break}y=c[x>>2]|0;c[v>>2]=k+1;A=y+(k<<4)|0;c[A>>2]=o;c[y+(k<<4)+8>>2]=0;c[y+(k<<4)+4>>2]=0;c[y+(k<<4)+12>>2]=b;c[l>>2]=A;b=A}A=b+8|0;c[A>>2]=(c[A>>2]|0)+d;A=b+4|0;c[A>>2]=(c[A>>2]|0)+f}c[a>>2]=r;c[s>>2]=C;k=r;f=0;d=0}if(B)b=(r|0)>=(c[t>>2]|0);else b=1;l=b&1;c[z>>2]=l;if((e|0)==(J|0)){j=p;h=d;N=55;break}else b=p}if((N|0)==48){c[H>>2]=d;c[I>>2]=f;Va(a+1256|0,1)}else if((N|0)==55){c[H>>2]=h;c[I>>2]=f;K=f;break}}else{j=b;h=d;K=f}while(0);N=g-j|0;c[H>>2]=(ea(N,M+256-L|0)|0)+h;c[I>>2]=K+N;i=O;return}function $u(a,d,f,g,h,j){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;H=i;i=i+16|0;F=H+8|0;G=H;m=H+4|0;C=c[a+28>>2]|0;c[m>>2]=0;if(d<<24>>24==0|(f|0)==0){G=6;i=H;return G|0}B=hh(C,8,0,j,0,F)|0;d=c[F>>2]|0;if(d){G=d;i=H;return G|0}c[h>>2]=B;if((c[f+32>>2]|0)>>>0<=g>>>0){G=0;i=H;return G|0}d=f+36|0;A=c[d>>2]|0;k=c[A+(g<<2)>>2]|0;l=g+1|0;if((k|0)==(c[A+(l<<2)>>2]|0)){G=0;i=H;return G|0}A=Hh(a,k)|0;c[F>>2]=A;if((A|0)==0?(A=c[d>>2]|0,A=yi(a,(c[A+(l<<2)>>2]|0)-(c[A+(g<<2)>>2]|0)|0)|0,c[F>>2]=A,(A|0)==0):0){z=a+32|0;d=(c[z>>2]|0)-(c[a>>2]|0)|0;A=hh(C,4,0,c[f>>2]|0,0,F)|0;if(((c[F>>2]|0)==0?(D=hh(C,4,0,c[f>>2]|0,0,F)|0,(c[F>>2]|0)==0):0)?(E=hh(C,4,0,c[f>>2]|0,0,F)|0,(c[F>>2]|0)==0):0){g=(Di(a)|0)&65535;d=((Di(a)|0)&65535)+d|0;if(!(g&32768))y=0;else{y=c[a>>2]|0;x=(c[z>>2]|0)-y|0;c[z>>2]=y+d;y=cv(a,m)|0;w=c[a>>2]|0;d=(c[z>>2]|0)-w|0;c[z>>2]=w+x}v=g&4095;a:do if(v){w=f+24|0;x=f+28|0;s=c[m>>2]|0;t=(j|0)==0;u=0;g=0;while(1){r=(Di(a)|0)&65535;m=Di(a)|0;n=m&65535;if(n&32768){if(c[f>>2]|0){k=0;do{c[A+(k<<2)>>2]=(Di(a)|0)<<16>>16<<2;k=k+1|0}while(k>>>0<(c[f>>2]|0)>>>0)}}else{k=n&4095;if(k>>>0>=(c[w>>2]|0)>>>0)break;o=c[f>>2]|0;q=ea(o,k)|0;Aga(A|0,(c[x>>2]|0)+(q<<2)|0,o<<2|0)|0}if((n&16384|0)!=0?(c[f>>2]|0)!=0:0){l=0;do{c[D+(l<<2)>>2]=(Di(a)|0)<<16>>16<<2;l=l+1|0;k=c[f>>2]|0}while(l>>>0>>0);if(k){k=0;do{c[E+(k<<2)>>2]=(Di(a)|0)<<16>>16<<2;k=k+1|0}while(k>>>0<(c[f>>2]|0)>>>0)}}p=bv(f,m,A,D,E)|0;if(p){k=c[a>>2]|0;q=(c[z>>2]|0)-k|0;if(!(n&8192)){c[G>>2]=s;m=s;l=y}else{c[z>>2]=k+d;l=cv(a,G)|0;m=c[G>>2]|0;g=l}k=(m|0)==0;o=k?j:m;n=dv(a,o)|0;o=dv(a,o)|0;b:do if(!((l|0)==0|(o|0)==0|(n|0)==0)){if((l|0)==(-1|0)){if(t)break;else k=0;while(1){m=Wg(b[n+(k<<1)>>1]|0,p)|0;l=B+(k<<3)|0;c[l>>2]=(c[l>>2]|0)+m;l=Wg(b[o+(k<<1)>>1]|0,p)|0;m=B+(k<<3)+4|0;c[m>>2]=(c[m>>2]|0)+l;k=k+1|0;if((k|0)==(j|0))break b}}if(k)break;else l=0;do{k=g+(l<<1)|0;if((e[k>>1]|0)>>>0>>0){J=Wg(b[n+(l<<1)>>1]|0,p)|0;I=B+(e[k>>1]<<3)|0;c[I>>2]=(c[I>>2]|0)+J;I=Wg(b[o+(l<<1)>>1]|0,p)|0;k=B+(e[k>>1]<<3)+4|0;c[k>>2]=(c[k>>2]|0)+I}l=l+1|0}while(l>>>0>>0)}while(0);if((g|0)==(-1|0))g=-1;else{eh(C,g);g=0}eh(C,n);eh(C,o);c[z>>2]=(c[a>>2]|0)+q}u=u+1|0;if(u>>>0>=v>>>0)break a;else d=r+d|0}c[F>>2]=8}while(0);eh(C,A);eh(C,D);eh(C,E)}Bi(a);if(!(c[F>>2]|0)){J=0;i=H;return J|0}}eh(C,B);c[h>>2]=0;J=c[F>>2]|0;i=H;return J|0}function av(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;p=f+124|0;q=c[(c[f+8>>2]|0)+140>>2]|0;r=f+132|0;k=b[r>>1]|0;n=k&65535;s=f+140|0;m=c[s>>2]|0;h=c[m+(n+-4<<3)>>2]|0;j=h+32&-64;if((j|0)!=(h|0)?(l=j-h|0,k<<16>>16!=0):0){h=0;do{o=m+(h<<3)|0;c[o>>2]=l+(c[o>>2]|0);h=h+1|0}while((h|0)!=(n|0))}l=(q|0)!=0;if(l)Aga(c[f+136>>2]|0,m|0,n<<3|0)|0;o=f+160|0;h=f+4|0;k=(c[o>>2]|0)+284|0;n=(c[h>>2]|0)+172|0;m=k+68|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(m|0));if(!(g<<24>>24)){n=c[h>>2]|0;m=c[o>>2]|0;c[m+220>>2]=c[n+48>>2];c[m+224>>2]=c[n+52>>2]}else{m=c[o>>2]|0;c[m+220>>2]=65536;c[m+224>>2]=65536;Aga(c[f+144>>2]|0,c[s>>2]|0,e[r>>1]<<3|0)|0}m=e[r>>1]|0;n=c[s>>2]|0;k=n+(m+-3<<3)|0;c[k>>2]=(c[k>>2]|0)+32&-64;m=n+(m+-1<<3)+4|0;c[m>>2]=(c[m>>2]|0)+32&-64;if(l){l=c[(c[f+12>>2]|0)+64>>2]|0;k=c[o>>2]|0;c[k+460>>2]=c[k+392>>2];c[k+464>>2]=q;a[k+560>>0]=g;k=k+144|0;n=p+0|0;m=k+36|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(m|0));h=c[o>>2]|0;c[h+356>>2]=c[h+460>>2];c[h+364>>2]=c[h+464>>2];c[h+360>>2]=0;c[h+352>>2]=3;j=h+144|0;k=h+36|0;n=j+0|0;m=k+36|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(m|0));k=h+72|0;n=j+0|0;m=k+36|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(m|0));k=h+108|0;n=j+0|0;m=k+36|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(m|0));b[h+344>>1]=1;b[h+346>>1]=1;b[h+348>>1]=1;g=h+294|0;b[g>>1]=16384;b[h+296>>1]=0;j=h+298|0;g=e[g>>1]|e[g+2>>1]<<16;b[j>>1]=g;b[j+2>>1]=g>>>16;j=h+290|0;b[j>>1]=g;b[j+2>>1]=g>>>16;c[h+312>>2]=1;c[h+304>>2]=1;c[h+16>>2]=0;c[h+428>>2]=0;j=Ld[c[(c[h>>2]|0)+648>>2]&511](h)|0;h=c[o>>2]|0;if((j|0)!=0?(a[h+561>>0]|0)!=0:0){f=j;i=t;return f|0}a[l>>0]=c[h+340>>2]<<5|d[l>>0]|4}if(a[f+65>>0]|0){f=0;i=t;return f|0}r=e[r>>1]|0;s=c[s>>2]|0;m=s+(r+-4<<3)|0;o=c[m+4>>2]|0;g=f+68|0;c[g>>2]=c[m>>2];c[g+4>>2]=o;g=s+(r+-3<<3)|0;o=c[g+4>>2]|0;m=f+76|0;c[m>>2]=c[g>>2];c[m+4>>2]=o;m=s+(r+-2<<3)|0;o=c[m+4>>2]|0;g=f+184|0;c[g>>2]=c[m>>2];c[g+4>>2]=o;r=s+(r+-1<<3)|0;s=c[r+4>>2]|0;f=f+192|0;c[f>>2]=c[r>>2];c[f+4>>2]=s;f=0;i=t;return f|0}function bv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;m=a+4|0;g=c[a>>2]|0;a:do if(!g)g=65536;else{if(!(b&16384)){b=g;g=65536;k=0;while(1){j=c[d+(k<<2)>>2]|0;if(j){b=c[(c[m>>2]|0)+(k<<2)>>2]|0;if(!b){g=0;break a}if((b|0)<0&(j|0)>0){g=0;break a}h=(b|0)>0;if(h&(j|0)<0){g=0;break a}g=Wg(g,h?b:0-b|0)|0;b=c[a>>2]|0}k=k+1|0;if(k>>>0>=b>>>0)break a}}else{g=65536;l=0}do{j=c[d+(l<<2)>>2]|0;do if(j){b=c[(c[m>>2]|0)+(l<<2)>>2]|0;if(!b){g=0;break a}if((b|0)<0&(j|0)>0){g=0;break a}if((b|0)>0&(j|0)<0){g=0;break a}h=c[e+(l<<2)>>2]|0;if((b|0)<=(h|0)){g=0;break a}k=c[f+(l<<2)>>2]|0;if((k|0)<=(b|0)){g=0;break a}if((b|0)<(j|0)){g=Ug(g,b-h|0,j-h|0)|0;break}else{g=Ug(g,k-b|0,k-j|0)|0;break}}while(0);l=l+1|0}while(l>>>0<(c[a>>2]|0)>>>0)}while(0);i=n;return g|0}function cv(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;g=m;f=c[a+28>>2]|0;c[g>>2]=0;k=Ci(a)|0;e=k&255;c[d>>2]=e;if(!(k<<24>>24)){k=-1;i=m;return k|0}if(!(e&128))l=e;else l=(Ci(a)|0)&255|e<<8&32512;e=hh(f,2,0,l,0,g)|0;if(c[g>>2]|0){k=0;i=m;return k|0}if((l|0)>0)d=0;else{k=e;i=m;return k|0}while(1){f=Ci(a)|0;k=f&255;if(!(k&128)){g=Ci(a)|0;j=d+1|0;b[e+(d<<1)>>1]=g&255;if(!(f<<24>>24!=0&(k+j|0)<(l|0))){d=16;break}h=k>>>0>1?k:1;g=g&255;d=j;f=0;while(1){g=((Ci(a)|0)&255)+g|0;b[e+(d<<1)>>1]=g;f=f+1|0;if((f|0)>=(k|0))break;else d=d+1|0}d=j+h|0}else{k=k&127;g=Di(a)|0;j=d+1|0;b[e+(d<<1)>>1]=g;if(!((k|0)!=0&(k+j|0)<(l|0))){d=16;break}h=f&127;h=h>>>0>1?h:1;g=g&65535;d=j;f=0;while(1){g=((Di(a)|0)&65535)+g|0;b[e+(d<<1)>>1]=g;f=f+1|0;if((f|0)>=(k|0))break;else d=d+1|0}d=j+h|0}if((d|0)>=(l|0)){d=16;break}}if((d|0)==16){i=m;return e|0}return 0}function dv(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;l=o;k=c[a+28>>2]|0;c[l>>2]=0;e=hh(k,2,0,d,0,l)|0;if(!(c[l>>2]|0))m=0;else{n=0;i=o;return n|0}while(1){if(m>>>0>=d>>>0){n=10;break}f=Ci(a)|0;l=f&255;if(!(l&128)){g=m-d|0;f=(f&255|-64)^63;f=g>>>0>f>>>0?g:f;g=0-f|0;if(!(l&64)){h=m;j=0;while(1){b[e+(h<<1)>>1]=(Ci(a)|0)<<24>>24;j=j+1|0;if((j|0)==(g|0))break;else h=h+1|0}}else{h=m;j=0;while(1){b[e+(h<<1)>>1]=Di(a)|0;j=j+1|0;if((j|0)==(g|0))break;else h=h+1|0}}}else{g=m-d|0;f=(f&255|-64)^63;f=g>>>0>f>>>0?g:f;Cga(e+(m<<1)|0,0,ea(f,-2)|0)|0;g=0-f|0}if(g>>>0>(l&63)>>>0)m=m-f|0;else break}if((n|0)==10){i=o;return e|0}eh(k,e);n=0;i=o;return n|0}function ev(a){a=a|0;var b=0,d=0,e=0;e=i;b=c[a+28>>2]|0;d=c[a>>2]|0;if(d)Jd[c[b+8>>2]&255](b,d);c[a+4>>2]=0;c[a>>2]=0;c[a+24>>2]=0;i=e;return}function fv(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;d=c[a+4>>2]|0;a=c[b+4>>2]|0;if((d|0)<(a|0)){b=-1;i=e;return b|0}b=(d|0)>(a|0)&1;i=e;return b|0}function gv(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;h=d+64|0;if(a[h>>0]|0){i=m;return}a[h>>0]=1;k=d+20|0;j=c[k>>2]|0;l=d+65|0;if(!(a[l>>0]|0)){b[j>>1]=(b[j>>1]|0)+1<<16>>16;h=d+12|0}else{h=d+12|0;d=c[h>>2]|0;if(((b[d+20>>1]|0)+1+(b[d+56>>1]|0)|0)>>>0>(c[d+8>>2]|0)>>>0?(ih(d,0,1)|0)!=0:0){i=m;return}d=b[j>>1]|0;if(d<<16>>16>0){b[(c[j+12>>2]|0)+((d<<16>>16)+-1<<1)>>1]=(e[j+2>>1]|0)+65535;d=b[j>>1]|0}b[j>>1]=d+1<<16>>16}h=c[h>>2]|0;if(((b[h+22>>1]|0)+1+(b[h+58>>1]|0)|0)>>>0>(c[h+4>>2]|0)>>>0?(ih(h,1,0)|0)!=0:0){i=m;return}h=c[k>>2]|0;if(!(a[l>>0]|0))h=h+2|0;else{k=c[h+4>>2]|0;l=h+2|0;j=b[l>>1]|0;h=(c[h+8>>2]|0)+j|0;c[k+(j<<3)>>2]=f>>10;c[k+(j<<3)+4>>2]=g>>10;a[h>>0]=1;h=l}b[h>>1]=(b[h>>1]|0)+1<<16>>16;i=m;return}function hv(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+32|0;v=w;r=d+392|0;j=c[r>>2]|0;s=d+8|0;t=s;u=j-t>>3;k=u&1;if((k|0)!=0?(a[g>>0]|0)==0:0){do if(!u){h=c[d+4>>2]|0;if((h|0)!=0?(c[h>>2]|0)==0:0){c[h>>2]=130;h=0}else h=0}else{h=c[d+12>>2]|0;if((h|0)==1){h=c[s>>2]|0;if((h|0)<0){h=0-(8192-h>>14)|0;break}else{h=h+8192>>14;break}}else if((h|0)==2){h=c[s>>2]<<16;break}else{h=c[s>>2]|0;break}}while(0);c[f>>2]=(c[(c[(c[b+132>>2]|0)+928>>2]|0)+532>>2]<<16)+h}if(a[(c[b+132>>2]|0)+753>>0]|0){a[g>>0]=1;i=w;return}a:do if(k>>>0>>0){m=v+4|0;n=v+8|0;o=v+12|0;p=v+16|0;q=d+4|0;f=j;b=0;while(1){l=f-t>>3;do if(l>>>0>k>>>0){h=d+(k<<3)+8|0;f=c[d+(k<<3)+12>>2]|0;if((f|0)==2){h=c[h>>2]<<16;break}else if((f|0)==1){h=c[h>>2]|0;if((h|0)<0){h=0-(8192-h>>14)|0;break}else{h=h+8192>>14;break}}else{h=c[h>>2]|0;break}}else{h=c[q>>2]|0;if((h|0)!=0?(c[h>>2]|0)==0:0){c[h>>2]=130;h=0}else h=0}while(0);j=h+b|0;c[m>>2]=j;h=k+1|0;do if(l>>>0>h>>>0){b=d+(h<<3)+8|0;h=c[d+(h<<3)+12>>2]|0;if((h|0)==1){h=c[b>>2]|0;if((h|0)<0){h=0-(8192-h>>14)|0;break}else{h=h+8192>>14;break}}else if((h|0)==2){h=c[b>>2]<<16;break}else{h=c[b>>2]|0;break}}else{h=c[q>>2]|0;if((h|0)!=0?(c[h>>2]|0)==0:0){c[h>>2]=130;h=0}else h=0}while(0);b=h+j|0;c[n>>2]=b;a[v>>0]=0;c[o>>2]=0;c[p>>2]=0;rv(e,v);h=k+2|0;if(h>>>0>=u>>>0)break a;f=c[r>>2]|0;k=h}}while(0);c[r>>2]=s;a[g>>0]=1;i=w;return}function iv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;h=o+12|0;j=o+8|0;l=o;m=b+11720|0;f=c[m>>2]|0;g=c[b+11724>>2]|0;if((f|0)==(d|0)&(g|0)==(e|0)){i=o;return}n=b+11724|0;sv(b,f,g,d,e,h,j);g=c[h>>2]|0;k=g+(c[m>>2]|0)|0;c[l>>2]=k;h=c[j>>2]|0;f=h+(c[n>>2]|0)|0;c[l+4>>2]=f;j=g+d|0;h=h+e|0;g=b+11666|0;if(a[g>>0]|0){tv(b,k,f);a[g>>0]=0;a[b+11664>>0]=1;k=b+11712|0;c[k>>2]=j;c[k+4>>2]=h}f=b+11744|0;if(a[f>>0]|0)jv(b,b+8|0,l,j,h,0);a[f>>0]=1;c[b+11748>>2]=2;k=c[l+4>>2]|0;f=b+11752|0;c[f>>2]=c[l>>2];c[f+4>>2]=k;f=b+11760|0;c[f>>2]=j;c[f+4>>2]=h;f=c[b+11676>>2]|0;if(a[f+5>>0]|0)kv(b+8|0,c[b+11668>>2]|0,c[b+11672>>2]|0,f,c[b+11680>>2]|0,0);c[m>>2]=d;c[n>>2]=e;i=o;return}function jv(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+48|0;y=z;x=a+11748|0;if((c[x>>2]|0)==2){s=a+11752|0;w=a+11760|0}else{s=a+11768|0;w=a+11776|0}q=c[w>>2]|0;r=c[d>>2]|0;h=c[w+4>>2]|0;l=c[d+4>>2]|0;if(!((q|0)==(r|0)&(h|0)==(l|0))?(j=c[s>>2]|0,u=w+4|0,t=s+4|0,k=c[t>>2]|0,m=e+16-r>>5,v=d+4|0,n=f+16-l>>5,o=Wg(q+16-j>>5,n)|0,p=Wg(h+16-k>>5,m)|0,(o|0)!=(p|0)):0){h=Wg(16-j+r>>5,n)|0;h=Xg(h-(Wg(16-k+l>>5,m)|0)|0,o-p|0)|0;m=c[s>>2]|0;m=(Wg(h,(c[w>>2]|0)-m|0)|0)+m|0;l=c[t>>2]|0;l=(Wg(h,(c[u>>2]|0)-l|0)|0)+l|0;h=c[s>>2]|0;p=c[w>>2]|0;if((h|0)==(p|0)){s=m-h|0;m=(((s|0)<0?0-s|0:s)|0)<(c[a+11700>>2]|0)?h:m}h=c[t>>2]|0;k=c[u>>2]|0;if((h|0)==(k|0)){u=l-h|0;l=(((u|0)<0?0-u|0:u)|0)<(c[a+11700>>2]|0)?h:l}h=c[d>>2]|0;if((h|0)==(e|0)){u=m-e|0;m=(((u|0)<0?0-u|0:u)|0)<(c[a+11700>>2]|0)?e:m}j=c[v>>2]|0;if((j|0)==(f|0)){v=l-f|0;l=(((v|0)<0?0-v|0:v)|0)<(c[a+11700>>2]|0)?f:l}f=m-((h+p|0)/2|0)|0;h=c[a+11696>>2]|0;if((((f|0)<0?0-f|0:f)|0)<=(h|0)?(f=l-((j+k|0)/2|0)|0,(((f|0)<0?0-f|0:f)|0)<=(h|0)):0){j=w;c[j>>2]=m;c[j+4>>2]=l;j=1}else j=0}else{m=0;l=0;j=0}k=a+11728|0;f=k;w=c[f+4>>2]|0;h=y;c[h>>2]=c[f>>2];c[h+4>>2]=w;h=c[x>>2]|0;if((h|0)==2){c[y+32>>2]=2;f=y+8|0;x=c[a+11764>>2]|0;w=Wg(c[a+11644>>2]|0,c[a+11760>>2]|0)|0;w=(Wg(c[a+11648>>2]|0,x)|0)+w|0;x=uv(b,x)|0;v=Wg(c[(c[a>>2]|0)+60>>2]|0,w)|0;v=(Wg(c[(c[a>>2]|0)+68>>2]|0,x)|0)+v|0;c[f>>2]=v+(c[a+11656>>2]|0);w=Wg(c[(c[a>>2]|0)+64>>2]|0,w)|0;w=(Wg(c[(c[a>>2]|0)+72>>2]|0,x)|0)+w|0;c[y+12>>2]=w+(c[a+11660>>2]|0);w=c[a+4>>2]|0;Jd[c[w+4>>2]&255](w,y);w=c[f+4>>2]|0;x=k;c[x>>2]=c[f>>2];c[x+4>>2]=w}else if((h|0)==4){c[y+32>>2]=4;w=c[a+11764>>2]|0;x=a+11644|0;v=Wg(c[x>>2]|0,c[a+11760>>2]|0)|0;u=a+11648|0;v=(Wg(c[u>>2]|0,w)|0)+v|0;w=uv(b,w)|0;f=Wg(c[(c[a>>2]|0)+60>>2]|0,v)|0;f=(Wg(c[(c[a>>2]|0)+68>>2]|0,w)|0)+f|0;e=a+11656|0;c[y+8>>2]=f+(c[e>>2]|0);v=Wg(c[(c[a>>2]|0)+64>>2]|0,v)|0;v=(Wg(c[(c[a>>2]|0)+72>>2]|0,w)|0)+v|0;w=a+11660|0;c[y+12>>2]=v+(c[w>>2]|0);v=c[a+11772>>2]|0;f=Wg(c[x>>2]|0,c[a+11768>>2]|0)|0;f=(Wg(c[u>>2]|0,v)|0)+f|0;v=uv(b,v)|0;t=Wg(c[(c[a>>2]|0)+60>>2]|0,f)|0;t=(Wg(c[(c[a>>2]|0)+68>>2]|0,v)|0)+t|0;c[y+16>>2]=t+(c[e>>2]|0);f=Wg(c[(c[a>>2]|0)+64>>2]|0,f)|0;f=(Wg(c[(c[a>>2]|0)+72>>2]|0,v)|0)+f|0;c[y+20>>2]=f+(c[w>>2]|0);f=y+24|0;v=c[a+11780>>2]|0;x=Wg(c[x>>2]|0,c[a+11776>>2]|0)|0;x=(Wg(c[u>>2]|0,v)|0)+x|0;v=uv(b,v)|0;u=Wg(c[(c[a>>2]|0)+60>>2]|0,x)|0;u=(Wg(c[(c[a>>2]|0)+68>>2]|0,v)|0)+u|0;c[f>>2]=u+(c[e>>2]|0);x=Wg(c[(c[a>>2]|0)+64>>2]|0,x)|0;x=(Wg(c[(c[a>>2]|0)+72>>2]|0,v)|0)+x|0;c[y+28>>2]=x+(c[w>>2]|0);w=c[a+4>>2]|0;Jd[c[w+12>>2]&255](w,y);w=c[f+4>>2]|0;x=k;c[x>>2]=c[f>>2];c[x+4>>2]=w}j=j<<24>>24!=0;do if(!(j&g<<24>>24==0)){h=y+8|0;g=c[d+4>>2]|0;x=Wg(c[a+11644>>2]|0,c[d>>2]|0)|0;x=(Wg(c[a+11648>>2]|0,g)|0)+x|0;g=uv(b,g)|0;b=Wg(c[(c[a>>2]|0)+60>>2]|0,x)|0;b=(Wg(c[(c[a>>2]|0)+68>>2]|0,g)|0)+b|0;c[h>>2]=b+(c[a+11656>>2]|0);b=Wg(c[(c[a>>2]|0)+64>>2]|0,x)|0;b=(Wg(c[(c[a>>2]|0)+72>>2]|0,g)|0)+b|0;b=b+(c[a+11660>>2]|0)|0;c[y+12>>2]=b;if((c[h>>2]|0)==(c[k>>2]|0)?(b|0)==(c[a+11732>>2]|0):0)break;c[y+32>>2]=2;x=k;g=c[x+4>>2]|0;b=y;c[b>>2]=c[x>>2];c[b+4>>2]=g;a=c[a+4>>2]|0;Jd[c[a+4>>2]&255](a,y);a=h;b=c[a+4>>2]|0;y=k;c[y>>2]=c[a>>2];c[y+4>>2]=b}while(0);if(!j){i=z;return}y=d;c[y>>2]=m;c[y+4>>2]=l;i=z;return}function kv(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0;da=i;i=i+176|0;$=da+168|0;q=da+140|0;n=da+120|0;N=da+100|0;Q=da+80|0;O=da+40|0;P=da+20|0;U=da;V=da+60|0;T=c[b>>2]|0;aa=j<<24>>24!=0;if(!aa?(p=c[b+4>>2]|0,(a[p+12>>0]|0)==0):0){ba=c[g>>2]|0;c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=0;c[q+24>>2]=0;c[q>>2]=ba;kv(p,e,f,q,h,1)}k=g+4|0;ca=e+20|0;do if(!(a[k>>0]|0)){p=(c[f+20>>2]|0)+(c[ca>>2]|0)|0;l=0-p&7;if(p>>>0>96){j=c[g>>2]|0;if(!j)break;if(c[j>>2]|0)break;c[j>>2]=18;break}c[g+8>>2]=p;j=(p+7|0)>>>3;f=g+12|0;c[f>>2]=j;a[k>>0]=1;a[g+5>>0]=1;if(p){if(!j)j=-1;else{p=0;do{a[g+p+16>>0]=-1;p=p+1|0;j=c[f>>2]|0}while(p>>>0>>0);j=j+-1|0}ba=g+j+16|0;a[ba>>0]=d[ba>>0]&-1<>2]=0;c[b+24>>2]=0;c[q+0>>2]=c[g+0>>2];c[q+4>>2]=c[g+4>>2];c[q+8>>2]=c[g+8>>2];c[q+12>>2]=c[g+12>>2];c[q+16>>2]=c[g+16>>2];c[q+20>>2]=c[g+20>>2];c[q+24>>2]=c[g+24>>2];p=q+16|0;S=c[ca>>2]|0;if(a[T+205>>0]|0){c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;c[n+16>>2]=0;vv(b,T+244|0,n);vv(b,n,T+224|0)}v=(S|0)==0;if(!v){w=b+16|0;x=e+28|0;y=e+8|0;z=N+8|0;A=N+16|0;B=N+4|0;C=N+12|0;D=T+216|0;E=T+200|0;F=Q+8|0;G=T+204|0;H=T+212|0;I=Q+12|0;J=e+4|0;K=0;u=128;f=p;while(1){a:do if(d[f>>0]&u){o=c[w>>2]|0;c[N+0>>2]=0;c[N+4>>2]=0;c[N+8>>2]=0;c[N+12>>2]=0;c[N+16>>2]=0;if((c[ca>>2]|0)>>>0<=K>>>0){j=c[J>>2]|0;if((j|0)!=0?(c[j>>2]|0)==0:0){c[j>>2]=130;j=0}else j=0}else j=K;m=c[x>>2]|0;q=ea(c[y>>2]|0,j)|0;n=m+q|0;l=c[m+(q+8)>>2]|0;j=c[m+(q+4)>>2]|0;k=l-j|0;do if((k|0)==-1310720){c[N>>2]=0;c[z>>2]=h;c[A>>2]=o;c[B>>2]=K;k=0;j=h;W=31}else if((k|0)!=-1376256)if((k|0)<0){c[z>>2]=l;c[N>>2]=4;k=4;j=l;W=29;break}else{c[z>>2]=j;c[N>>2]=4;k=4;W=29;break}else{c[z>>2]=l;c[N>>2]=1;k=1;j=l;W=29}while(0);if((W|0)==29){W=0;j=j+h|0;c[z>>2]=j;c[A>>2]=o;c[B>>2]=K;if(!(a[n>>0]|0))W=31;else{t=c[m+(q+12)>>2]|0;c[C>>2]=t;k=k|16;c[N>>2]=k;r=j}}if((W|0)==31){W=0;t=Wg(j,o)|0;c[C>>2]=t;r=j}wv(Q,e,K,T,h,c[w>>2]|0,0);if((k&16|0)==0?(R=c[Q>>2]|0,(R&16|0)==0):0){j=c[D>>2]|0;q=c[E>>2]|0;if(!q)break;n=(R&10|0)==0;s=c[F>>2]|0;m=(k&5|0)==0;l=0;while(1){o=T+(l*20|0)+264|0;if(!(a[T+(l*20|0)+280>>0]|0)){if((!n?(M=c[o>>2]|0,(M-j|0)<=(s|0)):0)?(s|0)<=((c[T+(l*20|0)+268>>2]|0)+j|0):0){q=M;n=l;W=48;break}}else if((!m?((c[o>>2]|0)-j|0)<=(r|0):0)?(L=c[T+(l*20|0)+268>>2]|0,(r|0)<=(L+j|0)):0){q=L;W=40;break}l=l+1|0;if(l>>>0>=q>>>0)break a}if((W|0)==40){W=0;if(!(a[G>>0]|0)){j=t+32768&-65536;if((q-r|0)>=(c[H>>2]|0)){s=(c[T+(l*20|0)+276>>2]|0)+-65536|0;j=(j|0)<(s|0)?j:s}}else j=c[T+(l*20|0)+276>>2]|0;j=j-t|0}else if((W|0)==48){W=0;if(!(a[G>>0]|0)){l=c[I>>2]|0;j=l+32768&-65536;if((s-q|0)>=(c[H>>2]|0)){s=(c[T+(n*20|0)+276>>2]|0)+65536|0;j=(j|0)>(s|0)?j:s}}else{l=c[I>>2]|0;j=c[T+(n*20|0)+276>>2]|0}j=j-l|0}if(k){c[C>>2]=t+j;c[N>>2]=k|16}if(R){c[I>>2]=(c[I>>2]|0)+j;c[Q>>2]=R|16}}vv(b,N,Q);a[f>>0]=d[f>>0]&(u^255)}while(0);if((K&7|0)==7){j=128;f=f+1|0}else j=u>>>1&127;K=K+1|0;if((K|0)==(S|0))break;else u=j}}do if(!aa){if(!v){r=b+16|0;s=e+28|0;t=e+8|0;u=U+8|0;v=U+16|0;w=U+4|0;x=U+12|0;y=e+4|0;z=0;o=128;while(1){if(d[p>>0]&o){m=c[r>>2]|0;c[U+0>>2]=0;c[U+4>>2]=0;c[U+8>>2]=0;c[U+12>>2]=0;c[U+16>>2]=0;if((c[ca>>2]|0)>>>0<=z>>>0){j=c[y>>2]|0;if((j|0)!=0?(c[j>>2]|0)==0:0){c[j>>2]=130;j=0}else j=0}else j=z;n=c[s>>2]|0;l=ea(c[t>>2]|0,j)|0;q=n+l|0;k=c[n+(l+8)>>2]|0;j=c[n+(l+4)>>2]|0;f=k-j|0;do if((f|0)==-1376256){c[u>>2]=k;c[U>>2]=1;f=17;j=k;W=81}else if((f|0)!=-1310720)if((f|0)<0){c[u>>2]=k;c[U>>2]=4;f=20;j=k;W=81;break}else{c[u>>2]=j;c[U>>2]=4;f=20;W=81;break}else{c[U>>2]=0;c[u>>2]=h;c[v>>2]=m;c[w>>2]=z;j=h;W=83}while(0);if((W|0)==81){W=0;j=j+h|0;c[u>>2]=j;c[v>>2]=m;c[w>>2]=z;if(!(a[q>>0]|0))W=83;else{c[x>>2]=c[n+(l+12)>>2];c[U>>2]=f}}if((W|0)==83){W=0;c[x>>2]=Wg(j,m)|0}wv(V,e,z,T,h,c[r>>2]|0,0);vv(b,U,V)}if((z&7|0)==7){j=128;p=p+1|0}else j=o>>>1&127;z=z+1|0;if((z|0)==(S|0))break;else o=j}}}else{S=c[ba>>2]|0;if(((S|0)!=0?(c[b+36>>2]|0)<=0:0)?(c[b+((S+-1|0)*20|0)+36>>2]|0)>=0:0)break;c[O+0>>2]=0;c[O+4>>2]=0;c[O+8>>2]=0;c[O+12>>2]=0;c[O>>2]=49;c[O+16>>2]=c[b+16>>2];c[P+0>>2]=0;c[P+4>>2]=0;c[P+8>>2]=0;c[P+12>>2]=0;c[P+16>>2]=0;vv(b,O,P)}while(0);u=b+8|0;c[(c[u>>2]|0)+20>>2]=0;j=c[ba>>2]|0;b:do if(j){t=$+4|0;q=0;do{S=c[b+(q*20|0)+28>>2]|0;n=(S&12|0)!=0;r=q+1|0;s=n?r:q;if(!(S&16)){m=b+(q*20|0)+40|0;f=c[m>>2]|0;R=f&65535;o=b+(s*20|0)+40|0;p=c[o>>2]|0;l=p&65535;S=0-R|0;k=0-l|0;R=(R|0)==0?0:65536-R|0;l=(l|0)==0?0:65536-l|0;l=R>>>0>>0?R:l;k=(S|0)>(k|0)?S:k;do if(s>>>0<(j+-1|0)>>>0?(X=s+1|0,(c[b+(X*20|0)+40>>2]|0)<(p+32768+l|0)):0){if((q|0)!=0?(c[b+((q+-1|0)*20|0)+40>>2]|0)>(f+-32768+k|0):0)j=0;else if((l|0)<(0-k|0))j=k;else{p=f;j=k;break}if(!(c[b+(X*20|0)+28>>2]&16)){c[$>>2]=s;c[t>>2]=l-j;rv(c[u>>2]|0,$);p=c[m>>2]|0}else p=f}else W=94;while(0);do if((W|0)==94){W=0;if((q|0)!=0?(c[b+((q+-1|0)*20|0)+40>>2]|0)>(f+-32768+k|0):0){p=f;j=l;break}p=f;j=(l|0)>(0-k|0)?k:l}while(0);c[m>>2]=j+p;if(n)c[o>>2]=(c[o>>2]|0)+j}if((q|0)!=0?(Y=c[b+(q*20|0)+36>>2]|0,Z=q+-1|0,_=c[b+(Z*20|0)+36>>2]|0,(Y|0)!=(_|0)):0)c[b+(Z*20|0)+44>>2]=Xg((c[b+(q*20|0)+40>>2]|0)-(c[b+(Z*20|0)+40>>2]|0)|0,Y-_|0)|0;if(n){j=c[b+(s*20|0)+36>>2]|0;f=s+-1|0;k=c[b+(f*20|0)+36>>2]|0;if((j|0)==(k|0))j=r;else{c[b+(f*20|0)+44>>2]=Xg((c[b+(s*20|0)+40>>2]|0)-(c[b+(f*20|0)+40>>2]|0)|0,j-k|0)|0;j=r}}else j=q;q=j+1|0;j=c[ba>>2]|0}while(q>>>0>>0);j=c[u>>2]|0;k=c[j+20>>2]|0;if(k){f=k;l=j;j=k;while(1){m=j+-1|0;if(f>>>0<=m>>>0){j=c[l+4>>2]|0;if((j|0)!=0?(c[j>>2]|0)==0:0){c[j>>2]=130;j=0}else j=0}else j=m;f=c[l+28>>2]|0;l=ea(c[l+8>>2]|0,j)|0;j=c[f+l>>2]|0;k=b+(j*20|0)+40|0;l=c[f+(l+4)>>2]|0;f=l+(c[k>>2]|0)|0;if((c[b+((j+1|0)*20|0)+40>>2]|0)>=(f+32768|0)?(c[k>>2]=f,(c[b+(j*20|0)+28>>2]&12|0)!=0):0){_=b+((j+-1|0)*20|0)+40|0;c[_>>2]=(c[_>>2]|0)+l}if(!m)break b;l=c[u>>2]|0;f=c[l+20>>2]|0;j=m}}}while(0);if(aa){ba=b+12|0;a[ba>>0]=1;ba=g+5|0;a[ba>>0]=0;i=da;return}j=c[ba>>2]|0;if(!j){ba=b+12|0;a[ba>>0]=1;ba=g+5|0;a[ba>>0]=0;i=da;return}o=e+28|0;p=e+8|0;n=e+4|0;m=0;do{f=b+(m*20|0)+28|0;k=c[f>>2]|0;if(!(k&32)){j=c[b+(m*20|0)+32>>2]|0;if((c[ca>>2]|0)>>>0<=j>>>0){j=c[n>>2]|0;if((j|0)!=0?(c[j>>2]|0)==0:0){c[j>>2]=130;j=0;k=c[f>>2]|0}else j=0}l=c[o>>2]|0;j=ea(c[p>>2]|0,j)|0;f=c[b+(m*20|0)+40>>2]|0;if(!(k&10))c[l+(j+12)>>2]=f;else c[l+(j+16)>>2]=f;a[l+j>>0]=1;j=c[ba>>2]|0}m=m+1|0}while(m>>>0>>0);ba=b+12|0;a[ba>>0]=1;ba=g+5|0;a[ba>>0]=0;i=da;return}function lv(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+32|0;o=s+20|0;t=s+16|0;k=s+8|0;l=s+12|0;p=s;q=b+11720|0;r=b+11724|0;sv(b,c[q>>2]|0,c[r>>2]|0,d,e,o,t);sv(b,f,g,h,j,k,l);n=(ea(g-e>>16,d>>16)|0)-(ea(f-d>>16,e>>16)|0)|0;m=(c[b+4>>2]|0)+16|0;c[m>>2]=n+(c[m>>2]|0);o=c[o>>2]|0;m=o+(c[q>>2]|0)|0;c[p>>2]=m;t=c[t>>2]|0;n=t+(c[r>>2]|0)|0;c[p+4>>2]=n;o=o+d|0;e=t+e|0;k=c[k>>2]|0;l=c[l>>2]|0;d=b+11666|0;if(a[d>>0]|0){tv(b,m,n);a[d>>0]=0;a[b+11664>>0]=1;t=b+11712|0;c[t>>2]=o;c[t+4>>2]=e}d=b+11744|0;if(a[d>>0]|0)jv(b,b+8|0,p,o,e,0);a[d>>0]=1;c[b+11748>>2]=4;m=p;t=c[m+4>>2]|0;d=b+11752|0;c[d>>2]=c[m>>2];c[d+4>>2]=t;d=b+11760|0;c[d>>2]=o;c[d+4>>2]=e;c[b+11768>>2]=k+f;c[b+11772>>2]=l+g;c[b+11776>>2]=k+h;c[b+11780>>2]=l+j;d=c[b+11676>>2]|0;if(!(a[d+5>>0]|0)){c[q>>2]=h;c[r>>2]=j;i=s;return}kv(b+8|0,c[b+11668>>2]|0,c[b+11672>>2]|0,d,c[b+11680>>2]|0,0);c[q>>2]=h;c[r>>2]=j;i=s;return}function mv(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+64|0;v=w;n=c[d>>2]|0;c[v>>2]=n;c[v+4>>2]=c[e>>2];q=(a[g+9>>0]|0)==0;p=q?9:10;t=b+392|0;u=b+8|0;s=u;r=b+4|0;j=0;k=0;while(1){o=v+(j+2<<2)|0;c[o>>2]=n;if(!(a[g+j>>0]|0))m=k;else{m=k+1|0;do if((c[t>>2]|0)-s>>3>>>0>k>>>0){l=b+(k<<3)+8|0;k=c[b+(k<<3)+12>>2]|0;if((k|0)==2){l=c[l>>2]<<16;k=n;break}else if((k|0)==1){k=c[l>>2]|0;if((k|0)<0){l=0-(8192-k>>14)|0;k=n;break}else{l=k+8192>>14;k=n;break}}else{l=c[l>>2]|0;k=n;break}}else{k=c[r>>2]|0;if((k|0)!=0?(c[k>>2]|0)==0:0){c[k>>2]=130;l=0;k=c[o>>2]|0}else{l=0;k=n}}while(0);c[o>>2]=k+l}j=j+1|0;if((j|0)>=(p|0)){o=m;break}n=c[v+(j<<2)>>2]|0;k=m}if(q)c[v+44>>2]=c[e>>2];do if(h<<24>>24){k=v+40|0;g=(c[k>>2]|0)-(c[d>>2]|0)|0;l=v+44|0;n=(c[l>>2]|0)-(c[e>>2]|0)|0;n=(((g|0)<0?0-g|0:g)|0)>(((n|0)<0?0-n|0:n)|0);do if((c[t>>2]|0)-s>>3>>>0>o>>>0){m=b+(o<<3)+8|0;j=c[b+(o<<3)+12>>2]|0;if((j|0)==1){j=c[m>>2]|0;if((j|0)<0){j=0-(8192-j>>14)|0;break}else{j=j+8192>>14;break}}else if((j|0)==2){j=c[m>>2]<<16;break}else{j=c[m>>2]|0;break}}else{j=c[r>>2]|0;if((j|0)!=0?(c[j>>2]|0)==0:0){c[j>>2]=130;j=0}else j=0}while(0);if(n){j=(c[k>>2]|0)+j|0;c[v+48>>2]=j;k=c[e>>2]|0;c[v+52>>2]=k;break}else{b=c[d>>2]|0;c[v+48>>2]=b;k=(c[l>>2]|0)+j|0;c[v+52>>2]=k;j=b;break}}else{if(!(a[g+10>>0]|0)){j=c[d>>2]|0;c[v+48>>2]=j;k=o}else{l=c[v+40>>2]|0;k=o+1|0;do if((c[t>>2]|0)-s>>3>>>0>o>>>0){m=b+(o<<3)+8|0;j=c[b+(o<<3)+12>>2]|0;if((j|0)==1){j=c[m>>2]|0;if((j|0)<0){j=0-(8192-j>>14)|0;break}else{j=j+8192>>14;break}}else if((j|0)==2){j=c[m>>2]<<16;break}else{j=c[m>>2]|0;break}}else{j=c[r>>2]|0;if((j|0)!=0?(c[j>>2]|0)==0:0){c[j>>2]=130;j=0}else j=0}while(0);j=j+l|0;c[v+48>>2]=j}if(!(a[g+11>>0]|0)){k=c[e>>2]|0;c[v+52>>2]=k;l=v+44|0;break}l=v+44|0;n=c[l>>2]|0;do if((c[t>>2]|0)-s>>3>>>0>k>>>0){m=b+(k<<3)+8|0;k=c[b+(k<<3)+12>>2]|0;if((k|0)==2){k=c[m>>2]<<16;break}else if((k|0)==1){k=c[m>>2]|0;if((k|0)<0){k=0-(8192-k>>14)|0;break}else{k=k+8192>>14;break}}else{k=c[m>>2]|0;break}}else{k=c[r>>2]|0;if((k|0)!=0?(c[k>>2]|0)==0:0){c[k>>2]=130;k=0;j=c[v+48>>2]|0}else k=0}while(0);k=k+n|0;c[v+52>>2]=k}while(0);lv(f,c[v+8>>2]|0,c[v+12>>2]|0,c[v+16>>2]|0,c[v+20>>2]|0,c[v+24>>2]|0,c[v+28>>2]|0);lv(f,c[v+32>>2]|0,c[v+36>>2]|0,c[v+40>>2]|0,c[l>>2]|0,j,k);c[t>>2]=u;c[d>>2]=j;c[e>>2]=k;i=w;return}function nv(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;n=f-d|0;p=g-e|0;if((p|0)<1|(g|0)<(h|0)|(e|0)>(j|0)){p=0;i=q;return p|0}if((h|0)>(e|0)){d=(Ug(n,h-e|0,p)|0)+d|0;l=c[b>>2]|0;k=l;l=h>>l;h=0}else{l=c[b>>2]|0;k=l;l=e>>l;h=(c[b+4>>2]|0)+-1&e}if((g|0)>(j|0)){e=0;f=j}else{e=(c[b+4>>2]|0)+-1&g;f=g}m=f>>k;do if((h|0)>0)if((l|0)==(m|0)){p=0;i=q;return p|0}else{d=(Ug(n,(c[b+4>>2]|0)-h|0,p)|0)+d|0;f=b+87|0;l=l+1|0;break}else{f=b+87|0;if(a[f>>0]|0){o=b+40|0;c[o>>2]=(c[o>>2]|0)+-4;a[f>>0]=0}}while(0);a[f>>0]=(e|0)==0&1;f=b+86|0;if(a[f>>0]|0){c[(c[b+88>>2]|0)+20>>2]=l;a[f>>0]=0}j=m-l|0;e=j+1|0;o=b+40|0;if(((c[o>>2]|0)+(e<<2)|0)>>>0>=(c[b+36>>2]|0)>>>0){c[b+44>>2]=98;p=1;i=q;return p|0}f=b+4|0;h=c[f>>2]|0;if((n|0)>0){b=Vg(h,n,p)|0;f=ea(c[f>>2]|0,n)|0;g=1}else{g=0-n|0;b=0-(Vg(h,g,p)|0)|0;f=ea(c[f>>2]|0,g)|0;g=-1}k=(f|0)%(p|0)|0;f=c[o>>2]|0;if((j|0)>-1){h=l+-1-m|0;l=m+((h|0)>-1?h:-1)+2-l|0;h=0-p|0;j=f;while(1){c[j>>2]=d;d=d+b|0;h=h+k|0;if((h|0)>-1){d=d+g|0;h=h-p|0}e=e+-1|0;if((e|0)<=0)break;else j=j+4|0}f=f+(l<<2)|0}c[o>>2]=f;p=0;i=q;return p|0}function ov(a){a=a|0;var b=0,d=0,e=0,f=0;b=a+16|0;d=c[b>>2]|0;c[a+32>>2]=d;f=a+8|0;e=c[f>>2]|0;d=(d+e|0)/2|0;c[a+24>>2]=d;e=((c[a>>2]|0)+e|0)/2|0;c[f>>2]=e;c[b>>2]=(e+d|0)/2|0;b=a+20|0;d=c[b>>2]|0;c[a+36>>2]=d;e=a+12|0;f=c[e>>2]|0;d=(d+f|0)/2|0;c[a+28>>2]=d;a=((c[a+4>>2]|0)+f|0)/2|0;c[e>>2]=a;c[b>>2]=(a+d|0)/2|0;return}function pv(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;r=b+52|0;j=c[r>>2]|0;m=c[j+(d<<3)+4>>2]|0;k=c[j+4>>2]|0;s=b+40|0;h=c[s>>2]|0;if(!((k|0)<(f|0)|(m|0)>(g|0))){q=b+4|0;n=c[q>>2]|0;l=0-n|0;p=k&l;p=(p|0)>(g|0)?g:p;if((m|0)>=(f|0)){g=m+-1+n&l;if(!(m&65535&n+65535)){k=b+87|0;if(a[k>>0]|0){a[k>>0]=0;h=h+-4|0}c[h>>2]=c[j+(d<<3)>>2];n=n+g|0;h=h+4|0}else n=g}else{n=f;g=f}k=b+86|0;if(a[k>>0]|0){c[(c[b+88>>2]|0)+20>>2]=g>>c[b>>2];a[k>>0]=0}if((p|0)>=(n|0)){if((h+((p-n>>c[b>>2])+1<<2)|0)>>>0>=(c[b+36>>2]|0)>>>0){c[s>>2]=h;c[b+44>>2]=98;d=1;i=t;return d|0}o=b+87|0;b=b+16|0;f=0-d|0;k=j;a:while(1){while(1){a[o>>0]=0;g=c[k+4>>2]|0;if((g|0)<=(n|0)){l=19;break}m=c[k+(d<<3)+4>>2]|0;g=g-m|0;if((g|0)<(c[b>>2]|0)){l=16;break}Id[e&511](k);k=k+(d<<3)|0;if(k>>>0>>0)break a}if((l|0)==16){l=c[k+(d<<3)>>2]|0;c[h>>2]=((ea((c[k>>2]|0)-l|0,n-m|0)|0)/(g|0)|0)+l;g=(c[q>>2]|0)+n|0;h=h+4|0}else if((l|0)==19)if((g|0)==(n|0)){a[o>>0]=1;c[h>>2]=c[k>>2];g=(c[q>>2]|0)+n|0;h=h+4|0}else g=n;k=k+(f<<3)|0;if(k>>>0>>0|(g|0)>(p|0))break;else n=g}j=c[r>>2]|0}}c[s>>2]=h;c[r>>2]=j+(0-d<<3);d=0;i=t;return d|0}function qv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=a+24|0;d=c[b>>2]|0;c[a+48>>2]=d;e=a+8|0;f=a+16|0;g=c[f>>2]|0;h=(c[e>>2]|0)+1|0;i=h+(c[a>>2]|0)>>1;c[e>>2]=i;d=g+1+d>>1;c[a+40>>2]=d;g=(h+g>>1)+1|0;i=g+i>>1;c[f>>2]=i;d=g+d>>1;c[a+32>>2]=d;c[b>>2]=i+1+d>>1;b=a+28|0;d=c[b>>2]|0;c[a+52>>2]=d;i=a+12|0;g=a+20|0;f=c[g>>2]|0;h=(c[i>>2]|0)+1|0;e=h+(c[a+4>>2]|0)>>1;c[i>>2]=e;d=f+1+d>>1;c[a+44>>2]=d;f=(h+f>>1)+1|0;e=f+e>>1;c[g>>2]=e;d=f+d>>1;c[a+36>>2]=d;c[b>>2]=e+1+d>>1;return}function rv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+16|0;j=m;l=a+20|0;e=c[l>>2]|0;h=a+12|0;do if((e|0)==(c[h>>2]|0)){k=(c[a+16>>2]|0)+e|0;c[j>>2]=0;f=a+8|0;n=c[f>>2]|0;e=ea(n,k)|0;if((2147483647/(n>>>0)|0)>>>0>=k>>>0?(g=a+24|0,n=a+28|0,d=hh(c[a>>2]|0,1,c[g>>2]|0,e,c[n>>2]|0,j)|0,c[n>>2]=d,(c[j>>2]|0)==0):0){c[h>>2]=k;c[g>>2]=e;e=c[l>>2]|0;if(e>>>0<=k>>>0)break;d=c[a+4>>2]|0;if((d|0)!=0?(c[d>>2]|0)==0:0)c[d>>2]=130;c[l>>2]=k;i=m;return}d=c[a+4>>2]|0;if(!d){i=m;return}if(c[d>>2]|0){i=m;return}c[d>>2]=64;i=m;return}else{f=a+8|0;d=c[a+28>>2]|0}while(0);n=c[f>>2]|0;Aga(d+(ea(n,e)|0)|0,b|0,n|0)|0;c[l>>2]=(c[l>>2]|0)+1;i=m;return}function sv(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0;n=i;k=f-d|0;f=g-e|0;if(!(a[(c[b>>2]|0)+192>>0]|0)){l=k;m=f}else{l=0-k|0;m=0-f|0}c[j>>2]=0;c[h>>2]=0;if(!(a[b+11665>>0]|0)){i=n;return}e=(ea(f>>16,d>>16)|0)-(ea(k>>16,e>>16)|0)|0;f=(c[b+4>>2]|0)+16|0;c[f>>2]=e+(c[f>>2]|0);f=(m|0)>-1;if((l|0)>-1)if(f){if((l|0)>(m<<1|0)){c[h>>2]=0;c[j>>2]=0;i=n;return}f=c[b+11688>>2]|0;if((m|0)>(l<<1|0)){c[h>>2]=f;c[j>>2]=c[b+11692>>2];i=n;return}else{c[h>>2]=Wg(45875,f)|0;c[j>>2]=Wg(19661,c[b+11692>>2]|0)|0;i=n;return}}else{if((l|0)>(ea(m,-2)|0)){c[h>>2]=0;c[j>>2]=0;i=n;return}f=c[b+11688>>2]|0;if((l<<1|0)<(0-m|0)){c[h>>2]=0-f;c[j>>2]=c[b+11692>>2];i=n;return}else{c[h>>2]=Wg(-45874,f)|0;c[j>>2]=Wg(19661,c[b+11692>>2]|0)|0;i=n;return}}else{g=0-l|0;if(f){if((m<<1|0)<(g|0)){c[h>>2]=0;c[j>>2]=c[b+11692>>2]<<1;i=n;return}m=(m|0)>(ea(l,-2)|0);f=c[b+11688>>2]|0;if(m){c[h>>2]=f;c[j>>2]=c[b+11692>>2];i=n;return}else{c[h>>2]=Wg(45875,f)|0;c[j>>2]=Wg(111411,c[b+11692>>2]|0)|0;i=n;return}}else{if((ea(m,-2)|0)<(g|0)){c[h>>2]=0;c[j>>2]=c[b+11692>>2]<<1;i=n;return}m=(ea(l,-2)|0)<(0-m|0);f=b+11688|0;g=c[f>>2]|0;if(m){c[h>>2]=0-g;c[j>>2]=c[f>>2];i=n;return}else{c[h>>2]=Wg(-45874,g)|0;c[j>>2]=Wg(111411,c[b+11692>>2]|0)|0;i=n;return}}}}function tv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+48|0;o=p;c[o+32>>2]=1;m=b+11728|0;k=m;f=c[k+4>>2]|0;n=o;c[n>>2]=c[k>>2];c[n+4>>2]=f;n=b+8|0;f=b+20|0;if(!(a[f>>0]|0)){h=b+11736|0;j=c[h>>2]|0;k=b+11740|0;l=c[k>>2]|0;g=b+11664|0;if(!(a[g>>0]|0)){g=1;f=b+11666|0}else{iv(b,j,l);jv(b,b+3876|0,b+11704|0,c[b+11712>>2]|0,c[b+11716>>2]|0,1);q=b+11666|0;a[q>>0]=1;a[g>>0]=0;a[b+11744>>0]=0;g=(a[f>>0]|0)==0;f=q}c[h>>2]=j;c[b+11720>>2]=j;c[k>>2]=l;c[b+11724>>2]=l;a[f>>0]=1;f=c[b+11676>>2]|0;if(!(!g?(a[f+5>>0]|0)==0:0))kv(n,c[b+11668>>2]|0,c[b+11672>>2]|0,f,c[b+11680>>2]|0,0);Aga(b+3876|0,n|0,3868)|0}k=o+8|0;q=Wg(c[b+11644>>2]|0,d)|0;q=(Wg(c[b+11648>>2]|0,e)|0)+q|0;l=uv(n,e)|0;h=Wg(c[(c[b>>2]|0)+60>>2]|0,q)|0;h=(Wg(c[(c[b>>2]|0)+68>>2]|0,l)|0)+h|0;c[k>>2]=h+(c[b+11656>>2]|0);q=Wg(c[(c[b>>2]|0)+64>>2]|0,q)|0;q=(Wg(c[(c[b>>2]|0)+72>>2]|0,l)|0)+q|0;c[o+12>>2]=q+(c[b+11660>>2]|0);q=c[b+4>>2]|0;Jd[c[q>>2]&255](q,o);o=c[k+4>>2]|0;q=m;c[q>>2]=c[k>>2];c[q+4>>2]=o;q=b+11704|0;c[q>>2]=d;c[q+4>>2]=e;i=p;return}function uv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;e=c[b+20>>2]|0;if((e|0)!=0?(a[b+13>>0]|0)!=0:0){h=b+24|0;f=e+-1|0;e=c[h>>2]|0;while(1){if(e>>>0>=f>>>0)break;g=e+1|0;if((c[b+(g*20|0)+36>>2]|0)>(d|0))break;else e=g}a:do if(!e)j=11;else{while(1){f=b+(e*20|0)+36|0;if((c[f>>2]|0)<=(d|0)){g=f;f=e;break}e=e+-1|0;if(!e){j=11;break a}}c[h>>2]=f;e=c[g>>2]|0}while(0);if((j|0)==11){c[h>>2]=0;e=c[b+36>>2]|0;if((e|0)>(d|0)){d=Wg(d-e|0,c[b+16>>2]|0)|0;b=(c[b+40>>2]|0)+d|0;i=k;return b|0}else f=0}d=Wg(d-e|0,c[b+(f*20|0)+44>>2]|0)|0;b=(c[b+(f*20|0)+40>>2]|0)+d|0;i=k;return b|0}b=Wg(d,c[b+16>>2]|0)|0;i=k;return b|0}function vv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;if(!(c[d>>2]|0)){d=e;l=0}else l=(c[e>>2]|0)!=0&1;k=b+20|0;j=c[k>>2]|0;if(j){g=c[d+8>>2]|0;f=0;while(1){h=f+1|0;if((c[b+(f*20|0)+36>>2]|0)>(g|0))break;if(h>>>0>>0)f=h;else{f=h;break}}if(f>>>0>>0){if(l<<24>>24!=0?(c[b+(f*20|0)+36>>2]|0)<(c[e+8>>2]|0):0){i=m;return}if(c[b+(f*20|0)+28>>2]&8){i=m;return}else j=f}else j=f}else j=0;f=c[b+4>>2]|0;do if((a[f+12>>0]|0)!=0?(c[d>>2]&16|0)==0:0)if(!(l<<24>>24)){c[d+12>>2]=uv(f,c[d+8>>2]|0)|0;break}else{n=e+8|0;h=d+8|0;g=uv(f,((c[h>>2]|0)+(c[n>>2]|0)|0)/2|0)|0;f=Wg(((c[n>>2]|0)-(c[h>>2]|0)|0)/2|0,c[b+16>>2]|0)|0;c[d+12>>2]=g-f;c[e+12>>2]=f+g;break}while(0);if((j|0)!=0?(c[d+12>>2]|0)<(c[b+((j+-1|0)*20|0)+40>>2]|0):0){i=m;return}f=c[k>>2]|0;do if(f>>>0>j>>>0)if(!(l<<24>>24)){if((c[d+12>>2]|0)<=(c[b+(j*20|0)+40>>2]|0))break;i=m;return}else{if((c[e+12>>2]|0)<=(c[b+(j*20|0)+40>>2]|0))break;i=m;return}while(0);h=f+(l&255)|0;if((h|0)>191){i=m;return}if((f|0)!=(j|0)){g=f-j|0;while(1){f=f+-1|0;g=g+-1|0;n=b+(h*20|0)+28|0;o=b+(f*20|0)+28|0;c[n+0>>2]=c[o+0>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];c[n+16>>2]=c[o+16>>2];if(!g)break;else h=h+-1|0}}o=b+(j*20|0)+28|0;c[o+0>>2]=c[d+0>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];c[o+16>>2]=c[d+16>>2];c[k>>2]=(c[k>>2]|0)+1;if(!(l<<24>>24)){i=m;return}o=b+((j+1|0)*20|0)+28|0;c[o+0>>2]=c[e+0>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];c[o+16>>2]=c[e+16>>2];c[k>>2]=(c[k>>2]|0)+1;i=m;return}function wv(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;if((c[d+20>>2]|0)>>>0<=e>>>0){k=c[d+4>>2]|0;if((k|0)!=0?(c[k>>2]|0)==0:0){c[k>>2]=130;k=0}else k=0}else k=e;q=c[d+28>>2]|0;o=ea(c[d+8>>2]|0,k)|0;p=q+o|0;m=c[q+(o+8)>>2]|0;l=c[q+(o+4)>>2]|0;n=m-l|0;do if((n|0)==-1376256)if(!(j<<24>>24)){c[b>>2]=0;k=0;n=19;break}else{c[b+8>>2]=m;c[b>>2]=1;k=1;n=19;break}else if((n|0)==-1310720)if(!(j<<24>>24)){c[b+8>>2]=l;c[b>>2]=2;k=2;n=20;break}else{c[b>>2]=0;k=0;n=19;break}else{k=j<<24>>24!=0;d=b+8|0;if((n|0)<0)if(k){c[d>>2]=m;c[b>>2]=4;k=4;n=19;break}else{c[d>>2]=l;c[b>>2]=8;k=8;n=20;break}else if(k){c[d>>2]=l;c[b>>2]=4;k=4;n=19;break}else{c[d>>2]=m;c[b>>2]=8;k=8;n=20;break}}while(0);if((n|0)==19){m=c[b+8>>2]|0;d=k;l=12}else if((n|0)==20){d=b+8|0;m=(c[d>>2]|0)+(c[f+188>>2]<<1)|0;c[d>>2]=m;d=k;l=16}k=m+g|0;c[b+8>>2]=k;c[b+16>>2]=h;c[b+4>>2]=e;if((d|0)!=0?(a[p>>0]|0)!=0:0){c[b+12>>2]=c[q+(o+l)>>2];c[b>>2]=d|16;i=r;return}c[b+12>>2]=Wg(k,h)|0;i=r;return}function xv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=ea(d,b)|0;if((d|0)!=0?((f>>>0)/(d>>>0)|0|0)!=(b|0):0){f=c[a+628>>2]|0;c[g>>2]=e;Dw(f,e,100368,g);f=0}i=h;return f|0}function yv(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;h=Tga(e|0,f|0,b|0,d|0)|0;j=I;if(!((e|0)==0&(f|0)==0)?(e=Uga(h|0,j|0,e|0,f|0)|0,!((e|0)==(b|0)&(I|0)==(d|0))):0){j=c[a+628>>2]|0;c[k>>2]=g;Dw(j,g,100368,k);j=0;h=0}I=j;i=l;return h|0}function zv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+16|0;h=j;if((d|0)!=0&(e|0)!=0?(g=LK(b,ea(e,d)|0)|0,(g|0)!=0):0){f=g;i=j;return f|0}b=c[a+628>>2]|0;a=c[a>>2]|0;c[h>>2]=f;c[h+4>>2]=d;c[h+8>>2]=e;Dw(b,a,100392,h);f=0;i=j;return f|0}function Av(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;if((b|0)!=0&(d|0)!=0?(f=LK(0,ea(d,b)|0)|0,(f|0)!=0):0){e=f;i=h;return e|0}f=c[a+628>>2]|0;a=c[a>>2]|0;c[g>>2]=e;c[g+4>>2]=b;c[g+8>>2]=d;Dw(f,a,100392,g);e=0;i=h;return e|0}function Bv(a,d,f){a=a|0;d=d|0;f=f|0;var h=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;q=s;if(_v(a,d,f)|0){a=1;i=s;return a|0}do if((d|0)==530){n=b[a+192>>1]|0;m=c[f>>2]|0;r=c[m>>2]|0;c[f>>2]=m+4;b[r>>1]=n;r=b[a+194>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==277){r=b[a+98>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==280){r=b[a+104>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==254){r=c[a+80>>2]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;c[a>>2]=r;a=1;i=s;return a|0}else if((d|0)==332){r=c[f>>2]|0;a=c[r>>2]|0;c[f>>2]=r+4;b[a>>1]=1;a=1;i=s;return a|0}else if((d|0)==301){r=a+200|0;k=c[r>>2]|0;do if(!k){o=a+208|0;c[o>>2]=0;p=a+204|0;c[p>>2]=0;c[r>>2]=0;k=b[a+84>>1]|0;if((k&65535)<=29?(j=1<<(k&65535),m=j<<1,h=JK(m)|0,c[r>>2]=h,(h|0)!=0):0){b[h>>1]=0;if((j|0)>1){l=+(j|0)+-1.0;k=1;do{b[h+(k<<1)>>1]=~~+S(+(+V(+(+(k|0)/l),2.2)*65535.0+.5));k=k+1|0}while((k|0)!=(j|0))}d=a+98|0;j=a+156|0;if(((e[d>>1]|0)-(e[j>>1]|0)|0)<=1)break;h=JK(m)|0;c[p>>2]=h;if((h|0)!=0?(NK(h,c[r>>2]|0,m),n=JK(m)|0,c[o>>2]=n,(n|0)!=0):0){NK(n,c[r>>2]|0,m);h=c[r>>2]|0;break}h=c[r>>2]|0;if(h)KK(h);h=c[p>>2]|0;if(h)KK(h);h=c[o>>2]|0;if(h)KK(h);c[o>>2]=0;c[p>>2]=0;c[r>>2]=0}Dw(c[a+628>>2]|0,c[a>>2]|0,100488,q);a=0;i=s;return a|0}else{j=a+156|0;d=a+98|0;h=k}while(0);n=c[f>>2]|0;r=c[n>>2]|0;c[f>>2]=n+4;c[r>>2]=h;if(((e[d>>1]|0)-(e[j>>1]|0)|0)<=1){a=1;i=s;return a|0}n=c[a+204>>2]|0;m=c[f>>2]|0;r=c[m>>2]|0;c[f>>2]=m+4;c[r>>2]=n;r=c[a+208>>2]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;c[a>>2]=r;a=1;i=s;return a|0}else if((d|0)==32995){if((b[a+156>>1]|0)==1)h=(b[c[a+160>>2]>>1]|0)==1&1;else h=0;r=c[f>>2]|0;a=c[r>>2]|0;c[f>>2]=r+4;b[a>>1]=h;a=1;i=s;return a|0}else if((d|0)==296){r=b[a+124>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==274){r=b[a+96>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==263){r=b[a+92>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==32997){r=c[a+64>>2]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;c[a>>2]=r;a=1;i=s;return a|0}else if((d|0)==258){r=b[a+84>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==266){r=b[a+94>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==338){n=b[a+156>>1]|0;m=c[f>>2]|0;r=c[m>>2]|0;c[f>>2]=m+4;b[r>>1]=n;r=c[a+160>>2]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;c[a>>2]=r;a=1;i=s;return a|0}else if((d|0)==339){r=b[a+86>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==529){r=c[f>>2]|0;a=c[r>>2]|0;c[f>>2]=r+4;c[a>>2]=100464;a=1;i=s;return a|0}else if((d|0)==532){d=a+212|0;h=c[d>>2]|0;do if(!h){h=JK(24)|0;c[d>>2]=h;if(!h){a=0;i=s;return a|0}if((b[a+90>>1]|0)==6){g[h>>2]=0.0;g[h+20>>2]=255.0;g[h+12>>2]=255.0;g[h+4>>2]=255.0;g[h+16>>2]=128.0;g[h+8>>2]=128.0;break}else{l=+((1<>1])+-1|0);g[h>>2]=0.0;g[h+4>>2]=l;g[h+8>>2]=0.0;g[h+12>>2]=l;g[h+16>>2]=0.0;g[h+20>>2]=l;break}}while(0);r=c[f>>2]|0;a=c[r>>2]|0;c[f>>2]=r+4;c[a>>2]=h;a=1;i=s;return a|0}else if((d|0)==318){g[25120]=.3457419276237488;g[25121]=.3585604429244995;r=c[f>>2]|0;a=c[r>>2]|0;c[f>>2]=r+4;c[a>>2]=100480;a=1;i=s;return a|0}else if((d|0)==278){r=c[a+100>>2]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;c[a>>2]=r;a=1;i=s;return a|0}else if((d|0)==281){r=b[a+106>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==336){n=c[f>>2]|0;r=c[n>>2]|0;c[f>>2]=n+4;b[r>>1]=0;r=(1<>1])+65535&65535;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==334){r=c[f>>2]|0;a=c[r>>2]|0;c[f>>2]=r+4;b[a>>1]=4;a=1;i=s;return a|0}else if((d|0)==284){r=b[a+126>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==32998){r=c[a+76>>2]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;c[a>>2]=r;a=1;i=s;return a|0}else if((d|0)==32996){r=(e[a+86>>1]|0)+65535&65535;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==531){r=b[a+196>>1]|0;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else if((d|0)==317){r=c[c[a+576>>2]>>2]&65535;n=c[f>>2]|0;a=c[n>>2]|0;c[f>>2]=n+4;b[a>>1]=r;a=1;i=s;return a|0}else{a=0;i=s;return a|0}while(0);return 0}function Cv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=d;d=Bv(a,b,f)|0;i=e;return d|0}function Dv(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;if(c[a+8>>2]|0)Lw(a)|0;Id[c[a+564>>2]&511](a);$v(a);d=c[a+32>>2]|0;if(d)KK(d);e=a+680|0;d=c[e>>2]|0;if(d)do{c[e>>2]=c[d>>2];KK(c[d+8>>2]|0);KK(d);d=c[e>>2]|0}while((d|0)!=0);e=c[a+588>>2]|0;d=a+12|0;if((e|0)!=0?(c[d>>2]&512|0)!=0:0)KK(e);if(c[d>>2]&2048){h=c[a+616>>2]|0;de[c[a+624>>2]&63](c[a+628>>2]|0,c[a+612>>2]|0,h,((h|0)<0)<<31>>31)}h=a+656|0;d=c[h>>2]|0;if((d|0)!=0?(j=a+660|0,f=c[j>>2]|0,(f|0)!=0):0){g=0;while(1){e=c[d+(g<<2)>>2]|0;if((b[e+24>>1]|0)==65?(k=c[e+28>>2]|0,(rga(100528,k,4)|0)==0):0){KK(k);KK(e);e=c[j>>2]|0;d=c[h>>2]|0}else e=f;g=g+1|0;if(g>>>0>=e>>>0)break;else f=e}KK(d)}g=a+688|0;d=c[g>>2]|0;if(!d){KK(a);i=l;return}h=a+684|0;e=c[h>>2]|0;f=0;do{if(c[e+(f<<4)+4>>2]|0){KK(c[e+(f<<4)+12>>2]|0);d=c[g>>2]|0;e=c[h>>2]|0}f=f+1|0}while(f>>>0>>0);KK(e);KK(a);i=l;return}function Ev(a){a=a|0;var b=0,d=0,e=0;b=i;e=c[a+644>>2]|0;d=c[a+628>>2]|0;Dv(a);Ld[e&511](d)|0;i=b;return}function Fv(a,b,c,d,e,f,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0.0,k=0.0,l=0.0,m=0;m=i;j=+(b>>>0)*100.0/255.0;if(j<8.855999946594238){b=a+20|0;l=j*+g[b>>2]/903.2919921875;g[f>>2]=l;l=l/+g[b>>2]*7.7870001792907715+.13793103396892548}else{l=(j+16.0)/116.0;g[f>>2]=l*(l*(l*+g[a+20>>2]))}j=l+ +(c|0)/500.0;k=+g[a+16>>2];if(j<.2069000005722046)j=k*(j+-.1379300057888031)/7.7870001792907715;else j=j*(j*(k*j));g[e>>2]=j;k=l-+(d|0)/200.0;j=+g[a+24>>2];if(k<.2069000005722046){l=j*(k+-.1379300057888031)/7.7870001792907715;g[h>>2]=l;i=m;return}else{l=k*(k*(j*k));g[h>>2]=l;i=m;return}}function Gv(a,b,d,e,f,h,j){a=a|0;b=+b;d=+d;e=+e;f=f|0;h=h|0;j=j|0;var k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0,r=0,s=0.0,t=0;o=i;s=+g[a+28>>2]*b+ +g[a+32>>2]*d+ +g[a+36>>2]*e;m=+g[a+40>>2]*b+ +g[a+44>>2]*d+ +g[a+48>>2]*e;l=+g[a+52>>2]*b+ +g[a+56>>2]*d+ +g[a+60>>2]*e;p=+g[a+88>>2];s=s>p?s:p;d=+g[a+92>>2];e=m>d?m:d;m=+g[a+96>>2];l=l>m?l:m;b=+g[a+64>>2];k=+g[a+68>>2];n=+g[a+72>>2];q=~~(((s>2]);r=c[a>>2]|0;p=+g[a+(((r|0)<(q|0)?r:q)<<2)+112>>2];b=p;if(p>0.0)b=b+.5;else b=b+-.5;c[f>>2]=~~b>>>0;r=~~(((e>2]);q=c[a>>2]|0;p=+g[a+(((q|0)<(r|0)?q:r)<<2)+6116>>2];b=p;if(p>0.0)b=b+.5;else b=b+-.5;c[h>>2]=~~b>>>0;r=~~(((l>2]);q=c[a>>2]|0;p=+g[a+(((q|0)<(r|0)?q:r)<<2)+12120>>2];b=p;if(p>0.0){p=b+.5;q=~~p>>>0;c[j>>2]=q;q=c[f>>2]|0;r=a+76|0;r=c[r>>2]|0;t=q>>>0>>0;r=t?q:r;c[f>>2]=r;r=c[h>>2]|0;q=a+80|0;q=c[q>>2]|0;f=r>>>0>>0;q=f?r:q;c[h>>2]=q;q=c[j>>2]|0;r=a+84|0;r=c[r>>2]|0;f=q>>>0>>0;r=f?q:r;c[j>>2]=r;i=o;return}else{p=b+-.5;r=~~p>>>0;c[j>>2]=r;r=c[f>>2]|0;t=a+76|0;t=c[t>>2]|0;q=r>>>0>>0;t=q?r:t;c[f>>2]=t;t=c[h>>2]|0;r=a+80|0;r=c[r>>2]|0;q=t>>>0>>0;r=q?t:r;c[h>>2]=r;r=c[j>>2]|0;t=a+84|0;t=c[t>>2]|0;q=r>>>0>>0;t=q?r:t;c[j>>2]=t;i=o;return}}function Hv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,j=0.0,k=0.0,l=0,m=0,n=0;n=i;c[a>>2]=1500;NK(a+28|0,b,84);k=1.0/+g[a+100>>2];m=a+64|0;h=+g[m>>2];l=a+88|0;j=+g[l>>2];b=c[a>>2]|0;g[a+4>>2]=(h-j)/+(b|0);if((b|0)>=0){f=a+76|0;e=0;while(1){g[a+(e<<2)+112>>2]=+((c[f>>2]|0)>>>0)*+V(+(+(e|0)/+(b|0)),+k);b=c[a>>2]|0;if((e|0)>=(b|0))break;else e=e+1|0}j=+g[l>>2];h=+g[m>>2]}k=1.0/+g[a+104>>2];g[a+8>>2]=(h-j)/+(b|0);if((b|0)>=0){f=a+80|0;e=0;while(1){g[a+(e<<2)+6116>>2]=+((c[f>>2]|0)>>>0)*+V(+(+(e|0)/+(b|0)),+k);b=c[a>>2]|0;if((e|0)>=(b|0))break;else e=e+1|0}j=+g[l>>2];h=+g[m>>2]}k=1.0/+g[a+108>>2];g[a+12>>2]=(h-j)/+(b|0);if((b|0)<0){k=+g[d>>2];l=a+16|0;g[l>>2]=k;l=d+4|0;k=+g[l>>2];l=a+20|0;g[l>>2]=k;d=d+8|0;k=+g[d>>2];d=a+24|0;g[d>>2]=k;i=n;return 0}f=a+84|0;e=0;while(1){g[a+(e<<2)+12120>>2]=+((c[f>>2]|0)>>>0)*+V(+(+(e|0)/+(b|0)),+k);b=c[a>>2]|0;if((e|0)>=(b|0))break;else e=e+1|0}k=+g[d>>2];l=a+16|0;g[l>>2]=k;l=d+4|0;k=+g[l>>2];l=a+20|0;g[l>>2]=k;d=d+8|0;k=+g[d>>2];d=a+24|0;g[d>>2]=k;i=n;return 0}function Iv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0;k=i;if((d|0)<0)j=0;else j=(d|0)>255?255:d;if((e|0)<0)e=0;else e=(e|0)>255?255:e;b=(c[a+20>>2]|0)+((b>>>0>255?255:b)<<2)|0;d=(c[(c[a+4>>2]|0)+(e<<2)>>2]|0)+(c[b>>2]|0)|0;if((d|0)<0)d=0;else d=(d|0)>255?255:d;c[f>>2]=d;d=((c[(c[a+12>>2]|0)+(e<<2)>>2]|0)+(c[(c[a+16>>2]|0)+(j<<2)>>2]|0)>>16)+(c[b>>2]|0)|0;if((d|0)<0)d=0;else d=(d|0)>255?255:d;c[g>>2]=d;d=(c[(c[a+8>>2]|0)+(j<<2)>>2]|0)+(c[b>>2]|0)|0;if((d|0)<0){a=0;c[h>>2]=a;i=k;return}a=(d|0)>255?255:d;c[h>>2]=a;i=k;return}function Jv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0.0,j=0,k=0,l=0.0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;MK(b+24|0,0,256);r=b+280|0;c[b>>2]=r;f=0;do{a[r+f>>0]=f;f=f+1|0}while((f|0)!=256);MK(r+256|0,255,512);c[b+4>>2]=r+768;c[b+8>>2]=r+1792;c[b+12>>2]=r+2816;c[b+16>>2]=r+3840;c[b+20>>2]=r+4864;n=+g[d>>2];h=2.0-n*2.0;p=~~(h*65536.0+.5);l=+g[d+4>>2];q=0-~~(n*h/l*65536.0+.5)|0;h=+g[d+8>>2];n=2.0-h*2.0;d=~~(n*65536.0+.5);j=~~(h*n/l*65536.0+.5);l=+g[e+16>>2]+-128.0;k=~~l;l=+g[e+20>>2]+-128.0-l;l=l!=0.0?l:1.0;n=+g[e+8>>2]+-128.0;m=~~n;n=+g[e+12>>2]+-128.0-n;n=n!=0.0?n:1.0;h=+g[e>>2];o=~~h;h=+g[e+4>>2]-h;h=h!=0.0?h:1.0;f=0;b=-128;while(1){t=~~(+(b-k|0)*127.0/l);e=~~(+(b-m|0)*127.0/n);c[r+(f+192<<2)>>2]=(ea(t,p)|0)+32768>>16;c[r+(f+448<<2)>>2]=(ea(e,d)|0)+32768>>16;c[r+(f+704<<2)>>2]=ea(t,q)|0;c[r+(f+960<<2)>>2]=32768-(ea(e,j)|0);c[r+(f+1216<<2)>>2]=~~(+(b+128-o|0)*255.0/h);f=f+1|0;if((f|0)==256)break;else b=b+1|0}i=s;return 0}function Kv(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=b[a+88>>1]|0;e=c[25286]|0;a:do if(e){while(1){d=c[e+4>>2]|0;if((b[d+4>>1]|0)==h<<16>>16)break;e=c[e>>2]|0;if(!e){g=3;break a}}f=c[a+628>>2]|0;e=c[a>>2]|0;if(!d)g=11;else g=10}else g=3;while(0);b:do if((g|0)==3){c:do if(c[25192]|0){d=100768;while(1){e=d+12|0;if((b[d+4>>1]|0)==h<<16>>16)break;if(!(c[e>>2]|0))break c;else d=e}f=c[a+628>>2]|0;e=c[a>>2]|0;g=10;break b}while(0);f=c[a+628>>2]|0;e=c[a>>2]|0;g=11}while(0);if((g|0)==10){c[j>>2]=c[d>>2];c[j+4>>2]=101056;Dw(f,e,101248,j);i=k;return -1}else if((g|0)==11){c[j>>2]=h&65535;c[j+4>>2]=101056;Dw(f,e,101288,j);i=k;return -1}return 0}function Lv(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=b[a+88>>1]|0;e=c[25286]|0;a:do if(e){while(1){d=c[e+4>>2]|0;if((b[d+4>>1]|0)==h<<16>>16)break;e=c[e>>2]|0;if(!e){g=3;break a}}f=c[a+628>>2]|0;e=c[a>>2]|0;if(!d)g=11;else g=10}else g=3;while(0);b:do if((g|0)==3){c:do if(c[25192]|0){d=100768;while(1){e=d+12|0;if((b[d+4>>1]|0)==h<<16>>16)break;if(!(c[e>>2]|0))break c;else d=e}f=c[a+628>>2]|0;e=c[a>>2]|0;g=10;break b}while(0);f=c[a+628>>2]|0;e=c[a>>2]|0;g=11}while(0);if((g|0)==10){c[j>>2]=c[d>>2];c[j+4>>2]=101072;Dw(f,e,101248,j);i=k;return -1}else if((g|0)==11){c[j>>2]=h&65535;c[j+4>>2]=101072;Dw(f,e,101288,j);i=k;return -1}return 0}function Mv(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=b[a+88>>1]|0;e=c[25286]|0;a:do if(e){while(1){d=c[e+4>>2]|0;if((b[d+4>>1]|0)==h<<16>>16)break;e=c[e>>2]|0;if(!e){g=3;break a}}f=c[a+628>>2]|0;e=c[a>>2]|0;if(!d)g=11;else g=10}else g=3;while(0);b:do if((g|0)==3){c:do if(c[25192]|0){d=100768;while(1){e=d+12|0;if((b[d+4>>1]|0)==h<<16>>16)break;if(!(c[e>>2]|0))break c;else d=e}f=c[a+628>>2]|0;e=c[a>>2]|0;g=10;break b}while(0);f=c[a+628>>2]|0;e=c[a>>2]|0;g=11}while(0);if((g|0)==10){c[j>>2]=c[d>>2];c[j+4>>2]=101080;Dw(f,e,101248,j);i=k;return -1}else if((g|0)==11){c[j>>2]=h&65535;c[j+4>>2]=101080;Dw(f,e,101288,j);i=k;return -1}return 0}function Nv(a){a=a|0;return 1}function Ov(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=b[a+88>>1]|0;e=c[25286]|0;a:do if(e){while(1){d=c[e+4>>2]|0;if((b[d+4>>1]|0)==h<<16>>16)break;e=c[e>>2]|0;if(!e){g=3;break a}}f=c[a+628>>2]|0;e=c[a>>2]|0;if(!d)g=11;else g=10}else g=3;while(0);b:do if((g|0)==3){c:do if(c[25192]|0){d=100768;while(1){e=d+12|0;if((b[d+4>>1]|0)==h<<16>>16)break;if(!(c[e>>2]|0))break c;else d=e}f=c[a+628>>2]|0;e=c[a>>2]|0;g=10;break b}while(0);f=c[a+628>>2]|0;e=c[a>>2]|0;g=11}while(0);if((g|0)==10){c[j>>2]=c[d>>2];c[j+4>>2]=101056;Dw(f,e,101152,j);i=k;return -1}else if((g|0)==11){c[j>>2]=h&65535;c[j+4>>2]=101056;Dw(f,e,101192,j);i=k;return -1}return 0}function Pv(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=b[a+88>>1]|0;e=c[25286]|0;a:do if(e){while(1){d=c[e+4>>2]|0;if((b[d+4>>1]|0)==h<<16>>16)break;e=c[e>>2]|0;if(!e){g=3;break a}}f=c[a+628>>2]|0;e=c[a>>2]|0;if(!d)g=11;else g=10}else g=3;while(0);b:do if((g|0)==3){c:do if(c[25192]|0){d=100768;while(1){e=d+12|0;if((b[d+4>>1]|0)==h<<16>>16)break;if(!(c[e>>2]|0))break c;else d=e}f=c[a+628>>2]|0;e=c[a>>2]|0;g=10;break b}while(0);f=c[a+628>>2]|0;e=c[a>>2]|0;g=11}while(0);if((g|0)==10){c[j>>2]=c[d>>2];c[j+4>>2]=101072;Dw(f,e,101152,j);i=k;return -1}else if((g|0)==11){c[j>>2]=h&65535;c[j+4>>2]=101072;Dw(f,e,101192,j);i=k;return -1}return 0}function Qv(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=b[a+88>>1]|0;e=c[25286]|0;a:do if(e){while(1){d=c[e+4>>2]|0;if((b[d+4>>1]|0)==h<<16>>16)break;e=c[e>>2]|0;if(!e){g=3;break a}}f=c[a+628>>2]|0;e=c[a>>2]|0;if(!d)g=11;else g=10}else g=3;while(0);b:do if((g|0)==3){c:do if(c[25192]|0){d=100768;while(1){e=d+12|0;if((b[d+4>>1]|0)==h<<16>>16)break;if(!(c[e>>2]|0))break c;else d=e}f=c[a+628>>2]|0;e=c[a>>2]|0;g=10;break b}while(0);f=c[a+628>>2]|0;e=c[a>>2]|0;g=11}while(0);if((g|0)==10){c[j>>2]=c[d>>2];c[j+4>>2]=101080;Dw(f,e,101152,j);i=k;return -1}else if((g|0)==11){c[j>>2]=h&65535;c[j+4>>2]=101080;Dw(f,e,101192,j);i=k;return -1}return 0}function Rv(a,b){a=a|0;b=b|0;b=i;i=i+16|0;Dw(c[a+628>>2]|0,c[a>>2]|0,101088,b);i=b;return 0}function Sv(a,b){a=a|0;b=b|0;return 1}function Tv(a){a=a|0;c[a+504>>2]=115;c[a+500>>2]=1;c[a+508>>2]=116;c[a+512>>2]=205;c[a+532>>2]=74;c[a+540>>2]=75;c[a+548>>2]=76;c[a+520>>2]=1;c[a+516>>2]=116;c[a+524>>2]=205;c[a+528>>2]=116;c[a+536>>2]=77;c[a+544>>2]=78;c[a+552>>2]=79;c[a+556>>2]=233;c[a+560>>2]=206;c[a+564>>2]=233;c[a+568>>2]=207;c[a+572>>2]=36;a=a+12|0;c[a>>2]=c[a>>2]&-131329;return}function Uv(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;g=d&65535;e=c[25286]|0;a:do if(!e)h=3;else{f=e;while(1){e=c[f+4>>2]|0;if((b[e+4>>1]|0)==g<<16>>16)break a;f=c[f>>2]|0;if(!f){h=3;break}}}while(0);b:do if((h|0)==3)if(!(c[25192]|0))e=0;else{e=100768;while(1){if((b[e+4>>1]|0)==g<<16>>16)break b;e=e+12|0;if(!(c[e>>2]|0)){e=0;break}}}while(0);c[a+504>>2]=115;c[a+500>>2]=1;c[a+508>>2]=116;c[a+512>>2]=205;c[a+532>>2]=74;c[a+540>>2]=75;c[a+548>>2]=76;c[a+520>>2]=1;c[a+516>>2]=116;c[a+524>>2]=205;c[a+528>>2]=116;c[a+536>>2]=77;c[a+544>>2]=78;c[a+552>>2]=79;c[a+556>>2]=233;c[a+560>>2]=206;c[a+564>>2]=233;c[a+568>>2]=207;c[a+572>>2]=36;g=a+12|0;c[g>>2]=c[g>>2]&-131329;if(!e){a=1;i=j;return a|0}a=Wd[c[e+8>>2]&511](a,d)|0;i=j;return a|0}function Vv(a){a=a|0;var d=0,e=0,f=0;f=i;d=c[25286]|0;a:do if(d){e=d;while(1){d=c[e+4>>2]|0;if((b[d+4>>1]|0)==a<<16>>16)break;e=c[e>>2]|0;if(!e)break a}i=f;return d|0}while(0);if(!(c[25192]|0)){a=0;i=f;return a|0}else d=100768;while(1){if((b[d+4>>1]|0)==a<<16>>16){e=7;break}d=d+12|0;if(!(c[d>>2]|0)){d=0;e=7;break}}if((e|0)==7){i=f;return d|0}return 0}function Wv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;e=c[a>>2]|0;if(e){KK(e);c[a>>2]=0}if((b|0)!=0?(f=JK(d)|0,c[a>>2]=f,(f|0)!=0):0)NK(f,b,d);i=g;return}function Xv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=d;d=Yv(a,b,f)|0;i=e;return d|0}function Yv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=kw(b,d,0)|0;if(!f){e=c[b+628>>2]|0;c[g>>2]=c[b>>2];c[g+4>>2]=d>>>0>65535?101656:101664;c[g+8>>2]=d;Dw(e,102136,102216,g);g=0;i=h;return g|0}if(((d|0)!=257?(c[b+12>>2]&64|0)!=0:0)?(a[f+26>>0]|0)==0:0){d=c[b+628>>2]|0;e=c[f+28>>2]|0;c[g>>2]=c[b>>2];c[g+4>>2]=e;Dw(d,102136,102240,g);g=0;i=h;return g|0}g=Od[c[b+668>>2]&255](b,d,e)|0;i=h;return g|0}function Zv(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g;c[f>>2]=e;e=kw(a,d,0)|0;if(!e){d=0;i=g;return d|0}if(d>>>0<=65535?(e=b[e+24>>1]|0,(1<<(e&31)&c[a+(((e&65535)>>>5&65535)<<2)+40>>2]|0)==0):0){d=0;i=g;return d|0}d=Od[c[a+672>>2]&255](a,d,f)|0;i=g;return d|0}function _v(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0;g=i;f=kw(a,d,0)|0;if(!f){d=0;i=g;return d|0}if(d>>>0<=65535?(f=b[f+24>>1]|0,(1<<(f&31)&c[a+(((f&65535)>>>5&65535)<<2)+40>>2]|0)==0):0){d=0;i=g;return d|0}d=Od[c[a+672>>2]&255](a,d,e)|0;i=g;return d|0}function $v(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;MK(a+40|0,0,4);b=a+108|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}b=a+112|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}b=a+140|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}b=a+144|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}b=a+148|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}b=a+160|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}b=a+188|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}b=a+220|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}b=a+212|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}b=a+200|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}b=a+204|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}b=a+208|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}b=a+172|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}b=a+176|0;d=c[b>>2]|0;if(d){KK(d);c[b>>2]=0}e=a+44|0;c[e>>2]=c[e>>2]&-385;e=a+224|0;b=c[e>>2]|0;f=a+228|0;if((b|0)>0){a=0;do{d=c[(c[f>>2]|0)+(a*12|0)+8>>2]|0;if(d){KK(d);b=c[e>>2]|0}a=a+1|0}while((a|0)<(b|0))}c[e>>2]=0;b=c[f>>2]|0;if(!b){i=g;return}KK(b);c[f>>2]=0;i=g;return}function aw(a){a=a|0;var b=0;b=c[25336]|0;c[25336]=a;return b|0}function bw(a){a=a|0;var b=0,d=0,e=0;b=i;cw(a)|0;d=a+16|0;e=a+456|0;c[e>>2]=0;c[e+4>>2]=0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[a+444>>2]=-1;c[a+452>>2]=-1;i=b;return 0}function cw(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;iw(a,gw()|0);MK(a+40|0,0,192);b[a+94>>1]=1;b[a+84>>1]=1;b[a+92>>1]=1;b[a+96>>1]=1;b[a+98>>1]=1;c[a+100>>2]=-1;c[a+68>>2]=0;c[a+72>>2]=0;c[a+76>>2]=1;c[a+180>>2]=1;b[a+124>>1]=2;b[a+86>>1]=1;c[a+64>>2]=1;b[a+192>>1]=2;b[a+194>>1]=2;b[a+196>>1]=1;c[a+652>>2]=37;c[a+664>>2]=0;c[a+668>>2]=91;c[a+672>>2]=92;c[a+676>>2]=0;g=a+688|0;d=c[g>>2]|0;if(d){h=a+684|0;e=c[h>>2]|0;f=0;do{if(c[e+(f<<4)+4>>2]|0){KK(c[e+(f<<4)+12>>2]|0);d=c[g>>2]|0;e=c[h>>2]|0}f=f+1|0}while(f>>>0>>0);KK(e);c[g>>2]=0;c[h>>2]=0}d=c[25336]|0;if(!d){c[j>>2]=1;Xv(a,259,j)|0;j=a+12|0;a=c[j>>2]|0;a=a&-1033;c[j>>2]=a;i=k;return 1}Id[d&511](a);c[j>>2]=1;Xv(a,259,j)|0;j=a+12|0;a=c[j>>2]|0;a=a&-1033;c[j>>2]=a;i=k;return 1}function dw(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;if(!(c[a+12>>2]&524288)){e=c[a+428>>2]|0;f=0}else{f=a+432|0;e=c[f>>2]|0;f=c[f+4>>2]|0}g=h;c[g>>2]=e;c[g+4>>2]=f;a:do if(d<<16>>16!=0&((e|0)!=0|(f|0)!=0)){e=d;while(1){e=e+-1<<16>>16;if(!(SM(a,h,0)|0)){e=0;break}f=h;g=c[f>>2]|0;f=c[f+4>>2]|0;if(!(e<<16>>16!=0&((g|0)!=0|(f|0)!=0)))break a}i=j;return e|0}else{g=e;e=d}while(0);h=a+24|0;c[h>>2]=g;c[h+4>>2]=f;b[a+448>>1]=(d&65535)+65535-(e&65535);b[a+38>>1]=0;a=vw(a)|0;i=j;return a|0}function ew(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0;f=i;g=a+24|0;c[g>>2]=d;c[g+4>>2]=e;b[a+38>>1]=0;a=vw(a)|0;i=f;return a|0}function fw(a){a=a|0;a=a+24|0;return (c[a>>2]|0)==0&(c[a+4>>2]|0)==0&1|0}function gw(){return 102288}function hw(){return 102304}function iw(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;j=a+656|0;f=c[j>>2]|0;if((f|0)!=0?(l=a+660|0,e=c[l>>2]|0,(e|0)!=0):0){h=0;do{g=c[f+(h<<2)>>2]|0;if((b[g+24>>1]|0)==65?(k=c[g+28>>2]|0,(rga(102320,k,4)|0)==0):0){KK(k);KK(g);e=c[l>>2]|0;f=c[j>>2]|0}h=h+1|0}while(h>>>0>>0);KK(f);c[j>>2]=0;c[l>>2]=0}if(jw(a,c[d+12>>2]|0,c[d+8>>2]|0)|0){i=n;return}Dw(c[a+628>>2]|0,102328,102352,m);i=n;return}function jw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;n=q;m=q+36|0;l=a+664|0;c[l>>2]=0;p=a+656|0;e=c[p>>2]|0;if((e|0)!=0?(f=c[a+660>>2]|0,(f|0)!=0):0)e=zv(a,e,f+d|0,4,102408)|0;else e=Av(a,d,4,102408)|0;c[p>>2]=e;if(!e){Dw(c[a+628>>2]|0,102384,102432,n);d=0;i=q;return d|0}if(!d)f=a+660|0;else{f=a+660|0;h=n+8|0;k=0;do{j=b+(k*36|0)|0;g=c[j>>2]|0;e=n+0|0;a=e+36|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(a|0));c[m>>2]=n;a=c[l>>2]|0;if(!((a|0)!=0?(c[a>>2]|0)==(g|0):0))o=12;a:do if((o|0)==12){o=0;e=c[p>>2]|0;do if(e){c[n>>2]=g;c[h>>2]=0;e=aea(m,e,c[f>>2]|0,4,208)|0;if(e){a=c[e>>2]|0;c[l>>2]=a;if(!a)break;else break a}else{c[l>>2]=0;break}}while(0);a=c[f>>2]|0;c[(c[p>>2]|0)+(a<<2)>>2]=j;c[f>>2]=a+1}while(0);k=k+1|0}while((k|0)!=(d|0));e=c[p>>2]|0}bea(e,c[f>>2]|0,4,208);i=q;return d|0}function kw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+48|0;g=j+4|0;h=j;e=g+0|0;f=e+36|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[h>>2]=g;f=a+664|0;e=c[f>>2]|0;if((e|0)!=0?(c[e>>2]|0)==(b|0):0){if(!d){a=e;i=j;return a|0}if((c[e+8>>2]|0)==(d|0)){a=e;i=j;return a|0}}e=c[a+656>>2]|0;if(!e){a=0;i=j;return a|0}c[g>>2]=b;c[g+8>>2]=d;e=aea(h,e,c[a+660>>2]|0,4,208)|0;if(!e)e=0;else e=c[e>>2]|0;c[f>>2]=e;a=e;i=j;return a|0}function lw(a){a=a|0;var b=0;b=i;switch(a|0){case 13:case 11:case 9:case 4:{a=4;break}case 7:case 6:case 2:case 1:case 0:{a=1;break}case 18:case 17:case 16:case 12:case 10:case 5:{a=8;break}case 8:case 3:{a=2;break}default:a=0}i=b;return a|0}function mw(a){a=a|0;var b=0;b=i;switch(a|0){case 10:case 5:case 13:case 11:case 9:case 4:{a=4;break}case 8:case 3:{a=2;break}case 18:case 17:case 16:case 12:{a=8;break}case 7:case 2:case 6:case 1:{a=1;break}default:a=0}i=b;return a|0}function nw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+48|0;h=j;f=j+8|0;g=j+4|0;d=f+0|0;e=d+36|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));c[g>>2]=f;e=a+664|0;d=c[e>>2]|0;if((d|0)!=0?(c[d>>2]|0)==(b|0):0){h=d;i=j;return h|0}d=c[a+656>>2]|0;do if(d){c[f>>2]=b;c[f+8>>2]=0;d=aea(g,d,c[a+660>>2]|0,4,208)|0;if(!d){c[e>>2]=0;break}d=c[d>>2]|0;c[e>>2]=d;if(d){h=d;i=j;return h|0}}while(0);a=c[a+628>>2]|0;c[h>>2]=b;Dw(a,102464,102488,h);h=0;i=j;return h|0}function ow(a){a=a|0;return c[a>>2]|0}function pw(a){a=a|0;return c[a+28>>2]|0}function qw(a){a=a|0;return c[a+8>>2]|0}function rw(a){a=a|0;return d[a+27>>0]|0|0}function sw(a){a=a|0;return b[a+4>>1]|0}function tw(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+16|0;h=j;g=JK(36)|0;if(!g){e=0;i=j;return e|0}MK(g,0,36);c[g>>2]=e;b[g+4>>1]=-3;b[g+6>>1]=-3;c[g+8>>2]=f;c[g+12>>2]=0;do switch(f|0){case 6:{c[g+16>>2]=41;c[g+20>>2]=41;break}case 12:{c[g+16>>2]=49;c[g+20>>2]=49;break}case 16:{c[g+16>>2]=46;c[g+20>>2]=46;break}case 7:case 1:{c[g+16>>2]=40;c[g+20>>2]=40;break}case 2:{c[g+16>>2]=39;c[g+20>>2]=39;break}case 9:{c[g+16>>2]=45;c[g+20>>2]=45;break}case 18:case 13:{c[g+16>>2]=50;c[g+20>>2]=50;break}case 4:{c[g+16>>2]=44;c[g+20>>2]=44;break}case 3:{c[g+16>>2]=42;c[g+20>>2]=42;break}case 8:{c[g+16>>2]=43;c[g+20>>2]=43;break}case 11:case 10:case 5:{c[g+16>>2]=48;c[g+20>>2]=48;break}case 17:{c[g+16>>2]=47;c[g+20>>2]=47;break}default:{c[g+16>>2]=0;c[g+20>>2]=0}}while(0);b[g+24>>1]=65;a[g+26>>0]=1;a[g+27>>0]=1;d=JK(32)|0;c[g+28>>2]=d;if(!d){KK(g);e=0;i=j;return e|0}else{c[g+32>>2]=0;c[h>>2]=e;ega(d,32,102528,h)|0;e=g;i=j;return e|0}return 0}function uw(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;l=i;i=i+16|0;k=l;h=d+688|0;g=c[h>>2]|0;if(!g){g=Av(d,1,16,102560)|0;c[d+684>>2]=g}else{j=d+684|0;g=zv(d,c[j>>2]|0,g+1|0,16,102560)|0;c[j>>2]=g}if(!g){Dw(c[d+628>>2]|0,102536,102432,k);k=-1;i=l;return k|0}j=c[h>>2]|0;c[h>>2]=j+1;c[g+(j<<4)>>2]=2;c[g+(j<<4)+4>>2]=f;c[g+(j<<4)+8>>2]=f;g=Av(d,f,36,102560)|0;c[(c[d+684>>2]|0)+(j<<4)+12>>2]=g;if(!g){Dw(c[d+628>>2]|0,102536,102432,k);k=-1;i=l;return k|0}if(f){h=0;j=g;while(1){c[j>>2]=c[e+(h*20|0)>>2];n=b[e+(h*20|0)+4>>1]|0;b[j+4>>1]=n;b[j+6>>1]=b[e+(h*20|0)+6>>1]|0;o=c[e+(h*20|0)+8>>2]|0;c[j+8>>2]=o;c[j+12>>2]=0;m=a[e+(h*20|0)+15>>0]|0;n=UM(o,n,m)|0;c[j+16>>2]=n;c[j+20>>2]=n;b[j+24>>1]=b[e+(h*20|0)+12>>1]|0;a[j+26>>0]=a[e+(h*20|0)+14>>0]|0;a[j+27>>0]=m;c[j+28>>2]=c[e+(h*20|0)+16>>2];c[j+32>>2]=0;h=h+1|0;if((h|0)==(f|0))break;else j=j+36|0}}if(jw(d,g,f)|0){o=0;i=l;return o|0}Dw(c[d+628>>2]|0,102536,102352,k);o=-1;i=l;return o|0}function vw(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0;J=i;i=i+48|0;H=J;A=J+28|0;o=J+12|0;G=J+16|0;p=J+36|0;B=J+32|0;z=J+24|0;C=J+20|0;D=J+34|0;l=a+24|0;j=l;n=c[j>>2]|0;j=c[j+4>>2]|0;F=a+16|0;c[F>>2]=n;c[F+4>>2]=j;if((n|0)==0&(j|0)==0){a=0;i=J;return a|0}k=a+38|0;h=b[k>>1]|0;if(h<<16>>16==-1){Dw(c[a+628>>2]|0,116720,116744,H);a=0;i=J;return a|0}else if(h<<16>>16)v=3;a:do if((v|0)==3?(f=c[a+32>>2]|0,(f|0)!=0):0){d=0;m=0;while(1){F=f+(d<<3)|0;d=(m&65535)+1<<16>>16;if((c[F>>2]|0)==(n|0)?(c[F+4>>2]|0)==(j|0):0){d=0;break}if((d&65535)<(h&65535)){d=d&65535;m=m+1|0}else break a}i=J;return d|0}while(0);h=h+1<<16>>16;b[k>>1]=h;m=a+36|0;if((h&65535)>(e[m>>1]|0)){g=a+32|0;d=zv(a,c[g>>2]|0,h&65535,16,116792)|0;if(!d){a=0;i=J;return a|0}h=b[k>>1]|0;if(h<<16>>16<0)f=-1;else f=(h&65535)<<1&65535;b[m>>1]=f;c[g>>2]=d}else d=c[a+32>>2]|0;h=d+((h&65535)+-1<<3)|0;c[h>>2]=n;c[h+4>>2]=j;Id[c[a+564>>2]&511](a);h=a+448|0;b[h>>1]=(b[h>>1]|0)+1<<16>>16;h=l;d=c[h>>2]|0;h=c[h+4>>2]|0;y=VM(a,d,h,G,l)|0;if(!(y<<16>>16)){a=c[a+628>>2]|0;F=H;c[F>>2]=d;c[F+4>>2]=h;Dw(a,114136,113920,H);a=0;i=J;return a|0}h=0;f=0;g=c[G>>2]|0;while(1){d=e[g>>1]|0;if(d>>>0>>0){v=17;break}f=f+1<<16>>16;if((f&65535)>=(y&65535))break;else{h=d+1&65535;g=g+24|0}}if((v|0)==17)Zx(c[a+628>>2]|0,116976,117008,H);h=0;f=c[G>>2]|0;do{g=f;f=f+24|0;h=h+1|0;d=h&65535;if((d&65535)<(y&65535)){k=f;j=d;while(1){if((b[g>>1]|0)==(b[k>>1]|0))b[k>>1]=0;j=j+1<<16>>16;if((j&65535)>=(y&65535))break;else k=k+24|0}}}while(d<<16>>16!=y<<16>>16);F=a+12|0;c[F>>2]=c[F>>2]&-1048641;$v(a);cw(a)|0;c[H>>2]=1;Xv(a,284,H)|0;h=c[G>>2]|0;d=0;while(1){if((b[h>>1]|0)==277){v=29;break}d=d+1<<16>>16;if((d&65535)>=(y&65535)){v=32;break}else h=h+24|0}if((v|0)==29)if(h){if(WM(a,h,0)|0){b[h>>1]=0;v=32}}else v=32;b:do if((v|0)==32){m=c[G>>2]|0;d=0;while(1){if((b[m>>1]|0)==259){v=35;break}d=d+1<<16>>16;if((d&65535)>=(y&65535)){v=47;break}else m=m+24|0}do if((v|0)==35)if(!m)v=47;else{d=XM(a,m,p)|0;if((d|0)==1){x=m+8|0;w=c[x+4>>2]|0;h=a+98|0;if(!(w>>>0<0|((w|0)==0?(c[x>>2]|0)>>>0<(e[h>>1]|0)>>>0:0))){d=YM(a,m,o)|0;if(!d){g=c[o>>2]|0;f=b[h>>1]|0;h=b[g>>1]|0;b[p>>1]=h;d=g;while(1){f=f+-1<<16>>16;d=d+2|0;if(!(f<<16>>16)){d=0;break}if((b[d>>1]|0)!=h<<16>>16){d=5;break}}KK(g);v=43}}else d=1}else v=43;if((v|0)==43)if(!d){c[H>>2]=e[p>>1];if(!(Xv(a,259,H)|0))break b;b[m>>1]=0;break}ZM(a,d,114136,113960,0);break b}while(0);if((v|0)==47?(c[H>>2]=1,(Xv(a,259,H)|0)==0):0)break;j=a+660|0;l=a+628|0;o=a+656|0;p=0;q=c[G>>2]|0;c:while(1){f=b[q>>1]|0;d:do if(f<<16>>16){m=c[j>>2]|0;e:do if(m){k=c[o>>2]|0;d=f&65535;n=-1;while(1){h=(n+m|0)/2|0;g=c[c[k+(h<<2)>>2]>>2]|0;if((g|0)==(d|0))break;x=g>>>0>>0;n=x?h:n;m=x?m:h;if((n+1|0)==(m|0)){v=58;break e}}while(1){if(!h){h=0;d=k;break e}m=h+-1|0;if((c[c[k+(m<<2)>>2]>>2]|0)==(d|0))h=m;else break}if((h|0)==-1)v=58;else d=k}else{d=f&65535;v=58}while(0);f:do if((v|0)==58){v=0;x=c[l>>2]|0;c[H>>2]=d;c[H+4>>2]=d;Zx(x,114136,113976,H);if(!(jw(a,tw(a,e[q>>1]|0,e[q+2>>1]|0)|0,1)|0)){x=c[l>>2]|0;w=e[q>>1]|0;c[H>>2]=w;c[H+4>>2]=w;Zx(x,114136,114024,H);b[q>>1]=0;break d}m=c[j>>2]|0;if(!m){v=67;break c}f=b[q>>1]|0;d=c[o>>2]|0;k=f&65535;n=-1;while(1){h=(n+m|0)/2|0;g=c[c[d+(h<<2)>>2]>>2]|0;if((g|0)==(k|0))break;x=g>>>0>>0;n=x?h:n;m=x?m:h;if((n+1|0)==(m|0)){v=67;break c}}while(1){if(!h){h=0;break f}m=h+-1|0;if((c[c[d+(m<<2)>>2]>>2]|0)==(k|0))h=m;else break}if((h|0)==-1){v=67;break c}}while(0);m=f&65535;if(f<<16>>16){d=b[(c[d+(h<<2)>>2]|0)+24>>1]|0;if(!(d<<16>>16)){b[q>>1]=0;break}if((m|0)==325|(m|0)==324|(m|0)==279|(m|0)==273){x=a+(((d&65535)>>>5&65535)<<2)+40|0;c[x>>2]=1<<(d&31)|c[x>>2];break}else if(!((m|0)==338|(m|0)==278|(m|0)==284|(m|0)==32998|(m|0)==322|(m|0)==323|(m|0)==32997|(m|0)==257|(m|0)==256))break;if(!(WM(a,q,0)|0))break b;b[q>>1]=0}}while(0);p=p+1<<16>>16;if((p&65535)>=(y&65535)){v=76;break}else q=q+24|0}if((v|0)==67)Sa(114080,114104,3561,114136);else if((v|0)==76){u=a+88|0;g:do if((b[u>>1]|0)==6?(r=a+126|0,(b[r>>1]|0)==2):0){d=c[G>>2]|0;h=d;f=0;while(1){if((b[h>>1]|0)==273)break;f=f+1<<16>>16;if((f&65535)>=(y&65535))break g;else h=h+24|0}if((h|0)!=0?(x=h+8|0,(c[x>>2]|0)==1&(c[x+4>>2]|0)==0):0){h=0;while(1){if((b[d>>1]|0)==279)break;h=h+1<<16>>16;if((h&65535)>=(y&65535))break g;else d=d+24|0}if((d|0)!=0?(x=d+8|0,(c[x>>2]|0)==1&(c[x+4>>2]|0)==0):0){b[r>>1]=1;Zx(c[a+628>>2]|0,114136,114160,H)}}}while(0);s=a+40|0;d=c[s>>2]|0;if(!(d&2)){a=c[a+628>>2]|0;c[H>>2]=114248;Dw(a,116808,116824,H);break}if(!(d&4)){h=xx(a)|0;c[a+168>>2]=h;c[a+68>>2]=c[a+56>>2];c[a+72>>2]=c[a+100>>2];c[a+76>>2]=c[a+64>>2];d=c[F>>2]&-1025}else{h=Tx(a)|0;c[a+168>>2]=h;d=c[F>>2]|1024}c[F>>2]=d;w=a+168|0;if(!h){a=c[a+628>>2]|0;c[H>>2]=(d&1024|0)!=0?114296:114304;Dw(a,114136,114264,H);break}x=a+164|0;c[x>>2]=h;t=a+126|0;if((b[t>>1]|0)==2)c[x>>2]=(h>>>0)/((e[a+98>>1]|0)>>>0)|0;f=c[s>>2]|0;do if(!(f&33554432)){d=d&1024;if((b[u>>1]|0)==6&(d|0)==0)if((h|0)==1){c[s>>2]=f|33554432;break}else d=0;a=c[a+628>>2]|0;c[H>>2]=(d|0)!=0?114312:114328;Dw(a,116808,116824,H);break b}while(0);k=a+98|0;j=a+172|0;l=a+176|0;o=a+628|0;p=a+84|0;n=0;q=0;r=c[G>>2]|0;h:while(1){d=b[r>>1]|0;m=d&65535;do if((m|0)==339|(m|0)==32996|(m|0)==258|(m|0)==281|(m|0)==280){g=XM(a,r,B)|0;if((g|0)==1){v=r+8|0;g=c[v+4>>2]|0;if(g>>>0<0|((g|0)==0?(c[v>>2]|0)>>>0<(e[k>>1]|0)>>>0:0)){d=1;v=111;break h}d=YM(a,r,A)|0;if(d){v=111;break h}f=c[A>>2]|0;h=b[k>>1]|0;m=b[f>>1]|0;b[B>>1]=m;d=f;while(1){h=h+-1<<16>>16;d=d+2|0;if(!(h<<16>>16)){g=0;break}if((b[d>>1]|0)!=m<<16>>16){g=5;break}}KK(f)}f=e[r>>1]|0;if(g){v=113;break h}c[H>>2]=e[B>>1];if(!(Xv(a,f,H)|0))break b;d=(b[r>>1]|0)==258?1:n}else if((m|0)==341|(m|0)==340){v=r+8|0;if(!((c[v+4>>2]|0)==0?(c[v>>2]|0)==(e[k>>1]|0):0)){f=1;v=121;break h}f=_M(a,r,z)|0;if(f){v=120;break h}f=c[F>>2]|0;c[F>>2]=f|4194304;v=e[r>>1]|0;g=c[z>>2]|0;c[H>>2]=g;v=Xv(a,v,H)|0;c[F>>2]=f;KK(g);if(!v)break b;else d=n}else if((m|0)==324|(m|0)==273)if(!($M(a,r,c[w>>2]|0,j)|0))break b;else d=n;else if((m|0)==301|(m|0)==320){c[C>>2]=0;if(!n){d=nw(a,m)|0;m=c[o>>2]|0;if(!d)d=114344;else d=c[d+28>>2]|0;c[H>>2]=d;Zx(m,114136,114360,H);d=0;break}v=e[p>>1]|0;g=1<>2]|0;L=c[L+4>>2]|0;f=d<<16>>16==301&((K|0)==(g|0)&(L|0)==0);h=f?0:g;if((L|0)==0?(K|0)==((f?g:3<>1]|0;if(!d){d=c[C>>2]|0;c[H>>2]=d;c[H+4>>2]=d+(h<<1);c[H+8>>2]=d+(h<<1<<1);Xv(a,m,H)|0;KK(d);d=n;break}else h=d}else h=1;d=nw(a,m)|0;if(!d)d=114344;else d=c[d+28>>2]|0;ZM(a,h,114136,d,1);d=n}else if((m|0)==325|(m|0)==279)if(!($M(a,r,c[w>>2]|0,l)|0))break b;else d=n;else if((m|0)==255)if(!(XM(a,r,D)|0)){d=e[D>>1]|0;if((d|0)==3)d=2;else if((d|0)==2)d=1;else{d=n;break}c[H>>2]=d;Xv(a,254,H)|0;d=n}else d=n;else if(!m)d=n;else{WM(a,r,1)|0;d=n}while(0);q=q+1<<16>>16;if((q&65535)>=(y&65535)){v=143;break}else{n=d;r=r+24|0}}if((v|0)==111){f=e[r>>1]|0;g=d;v=113}else if((v|0)==120){d=b[r>>1]|0;v=121}else if((v|0)==143){do if((b[u>>1]|0)==6){if(!(c[s>>2]&256)){Zx(c[a+628>>2]|0,114136,114408,H);c[H>>2]=6;if(!(Xv(a,262,H)|0))break b}else{d=a+90|0;if((b[d>>1]|0)==2){b[d>>1]=6;Zx(c[a+628>>2]|0,114136,114464,H)}}d=c[s>>2]|0;if(!(d&64)){Zx(c[a+628>>2]|0,114136,114544,H);c[H>>2]=8;if(!(Xv(a,258,H)|0))break b;d=c[s>>2]|0}if(!(d&65536)){f=a+90|0;d=b[f>>1]|0;if(d<<16>>16==2){Zx(c[a+628>>2]|0,114136,114608,H);c[H>>2]=3;if(!(Xv(a,277,H)|0))break b;d=b[f>>1]|0}if(d<<16>>16==6){Zx(c[a+628>>2]|0,114136,114688,H);c[H>>2]=3;if(!(Xv(a,277,H)|0))break b;else break}else if(d<<16>>16==1|d<<16>>16==0?(c[H>>2]=1,(Xv(a,277,H)|0)==0):0)break b;else break}}while(0);n=a+90|0;do if((b[n>>1]|0)==3?(c[s>>2]&67108864|0)==0:0){if((e[a+84>>1]|0)<=7){L=c[a+628>>2]|0;c[H>>2]=114768;Dw(L,116808,116824,H);break b}if((b[a+98>>1]|0)==3){b[n>>1]=2;break}else{b[n>>1]=1;break}}while(0);g=b[u>>1]|0;i:do if(g<<16>>16!=6){if(!(c[s>>2]&16777216)){d=b[t>>1]|0;if(d<<16>>16==1)if((c[w>>2]|0)>>>0>1)v=170;else v=171;else if(d<<16>>16==2?(c[w>>2]|0)!=(e[a+98>>1]|0):0)v=170;else v=171;if((v|0)==170){L=c[a+628>>2]|0;c[H>>2]=114784;Dw(L,116808,116824,H);break b}else if((v|0)==171){Zx(c[a+628>>2]|0,114136,114800,H);if((aN(a,c[G>>2]|0,y)|0)<0)break b;else break}}j:do if((c[w>>2]|0)==1?(E=a+172|0,L=c[E>>2]|0,!((c[L>>2]|0)==0&(c[L+4>>2]|0)==0)):0){d=a+176|0;f=c[d>>2]|0;h=c[f>>2]|0;f=c[f+4>>2]|0;do if(!((h|0)==0&(f|0)==0)){if(g<<16>>16==1?(K=Ld[c[a+648>>2]&511](c[a+628>>2]|0)|0,L=c[E>>2]|0,L=Hga(K|0,I|0,c[L>>2]|0,c[L+4>>2]|0)|0,K=I,f>>>0>K>>>0|(f|0)==(K|0)&h>>>0>L>>>0):0)break;if(c[a+8>>2]|0)break j;if((b[u>>1]|0)!=1)break j;D=c[d>>2]|0;K=c[D>>2]|0;D=c[D+4>>2]|0;L=zx(a)|0;L=Tga(c[a+60>>2]|0,0,L|0,I|0)|0;E=I;if(!(D>>>0>>0|(D|0)==(E|0)&K>>>0>>0))break j}while(0);Zx(c[a+628>>2]|0,114136,114896,H);if((aN(a,c[G>>2]|0,y)|0)<0)break b;else break i}while(0);if((b[t>>1]|0)==1?(c[w>>2]|0)>>>0>2:0){if((b[u>>1]|0)!=1)break;L=c[a+176>>2]|0;E=L;D=c[E>>2]|0;E=c[E+4>>2]|0;L=L+8|0;K=c[L>>2]|0;L=c[L+4>>2]|0;if((D|0)==(K|0)&(E|0)==(L|0)|(D|0)==0&(E|0)==0|(K|0)==0&(L|0)==0)break;Zx(c[a+628>>2]|0,114136,114976,H);if((aN(a,c[G>>2]|0,y)|0)<0)break b}}while(0);d=c[G>>2]|0;if(d){KK(d);c[G>>2]=0}do if(!(c[s>>2]&524288)){d=b[a+84>>1]|0;if((d&65535)>15){b[a+106>>1]=-1;break}else{b[a+106>>1]=(1<<(d&65535))+65535;break}}while(0);d=c[w>>2]|0;k:do if(d>>>0>1){f=a+180|0;c[f>>2]=1;g=c[a+172>>2]|0;j=g;h=c[j+4>>2]|0;j=c[j>>2]|0;k=1;while(1){E=g+(k<<3)|0;L=j;j=c[E>>2]|0;K=h;h=c[E+4>>2]|0;k=k+1|0;if(K>>>0>h>>>0|(K|0)==(h|0)&L>>>0>j>>>0)break;if(k>>>0>=d>>>0)break k}c[f>>2]=0}while(0);Ld[c[a+504>>2]&511](a)|0;do if((b[t>>1]|0)==1){if((c[w>>2]|0)!=1)break;if((b[u>>1]|0)!=1)break;h=c[F>>2]|0;if((h&33792|0)!=32768)break;s=a+176|0;d=c[s>>2]|0;if(!d){L=0;i=J;return L|0}m=d;l=c[m>>2]|0;m=c[m+4>>2]|0;r=a+172|0;g=c[r>>2]|0;q=c[g>>2]|0;g=c[g+4>>2]|0;if((b[n>>1]|0)==6&(h&16384|0)==0)f=e[a+194>>1]|0;else f=1;d=Vx(a,f)|0;h=I;if(!(h>>>0>0|(h|0)==0&d>>>0>8192)){if((d|0)==0&(h|0)==0)break;L=Uga(8192,0,d|0,h|0)|0;f=ea(L,f)|0;d=Tga(L|0,I|0,d|0,h|0)|0;h=I}if(f>>>0>=(c[a+100>>2]|0)>>>0)break;n=Iga(l|0,m|0,-1,-1)|0;n=Iga(n|0,I|0,d|0,h|0)|0;n=Uga(n|0,I|0,d|0,h|0)|0;L=Iga(n|0,I|0,-1,-1)|0;K=I;if(K>>>0>0|(K|0)==0&L>>>0>4294967294)break;o=Av(a,n,8,115280)|0;p=Av(a,n,8,115320)|0;k=(o|0)==0;j=(p|0)==0;if(!(k|j)){if(n){j=q;k=0;while(1){L=h>>>0>m>>>0|(h|0)==(m|0)&d>>>0>l>>>0;d=L?l:d;h=L?m:h;L=o+(k<<3)|0;c[L>>2]=d;c[L+4>>2]=h;L=p+(k<<3)|0;c[L>>2]=j;c[L+4>>2]=g;j=Iga(d|0,h|0,j|0,g|0)|0;g=I;l=Hga(l|0,m|0,d|0,h|0)|0;k=k+1|0;if((k|0)==(n|0))break;else m=I}}c[w>>2]=n;c[x>>2]=n;c[H>>2]=f;Xv(a,278,H)|0;KK(c[s>>2]|0);KK(c[r>>2]|0);c[s>>2]=o;c[r>>2]=p;c[a+180>>2]=1;break}if(!k)KK(o);if(j)break;KK(p)}while(0);c[F>>2]=c[F>>2]&-2097161;c[a+444>>2]=-1;c[a+452>>2]=-1;c[a+488>>2]=-1;c[a+492>>2]=-1;d=a+496|0;c[d>>2]=-1;L=Ex(a)|0;c[a+580>>2]=L;if(!L){Dw(c[a+628>>2]|0,114136,115056,H);L=0;i=J;return L|0}if(!(c[F>>2]&1024)){if(Bx(a)|0){L=1;i=J;return L|0}Dw(c[a+628>>2]|0,114136,115128,H);L=0;i=J;return L|0}else{L=Xx(a)|0;c[d>>2]=L;if(L){L=1;i=J;return L|0}Dw(c[a+628>>2]|0,114136,115096,H);L=0;i=J;return L|0}}if((v|0)==113){d=nw(a,f)|0;if(!d)d=114344;else d=c[d+28>>2]|0;ZM(a,g,114136,d,0);break}else if((v|0)==121){d=nw(a,d&65535)|0;if(!d)d=114344;else d=c[d+28>>2]|0;ZM(a,f,114136,d,0);break}}}while(0);d=c[G>>2]|0;if(!d){L=0;i=J;return L|0}KK(d);L=0;i=J;return L|0}function ww(a){a=a|0;return 1}function xw(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var j=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0;M=i;i=i+32|0;L=M+8|0;J=M;K=M+28|0;H=M+24|0;iw(a,g);G=VM(a,d,f,H,0)|0;if(!(G<<16>>16)){a=c[a+628>>2]|0;K=L;c[K>>2]=d;c[K+4>>2]=f;Dw(a,115208,115160,L);L=0;i=M;return L|0}$v(a);MK(a+40|0,0,192);d=0;f=0;j=c[H>>2]|0;while(1){g=e[j>>1]|0;if(g>>>0>>0){q=5;break}f=f+1<<16>>16;if((f&65535)>=(G&65535))break;else{d=g+1&65535;j=j+24|0}}if((q|0)==5)Zx(c[a+628>>2]|0,116976,117008,L);u=a+660|0;v=a+628|0;w=a+656|0;x=a+12|0;y=a+640|0;z=a+632|0;A=a+616|0;B=a+612|0;C=J+4|0;D=a+98|0;E=0;F=c[H>>2]|0;a:while(1){m=c[u>>2]|0;s=b[F>>1]|0;b:do if(m){q=c[w>>2]|0;r=s&65535;d=-1;f=m;while(1){j=(d+f|0)/2|0;g=c[c[q+(j<<2)>>2]>>2]|0;if((g|0)==(r|0))break;g=g>>>0>>0;d=g?j:d;f=g?f:j;if((d+1|0)==(f|0)){q=15;break b}}while(1){if(!j){t=0;n=s;o=m;p=q;q=25;break b}g=j+-1|0;if((c[c[q+(g<<2)>>2]>>2]|0)==(r|0))j=g;else break}if((j|0)!=-1){t=j;n=s;o=m;p=q;q=25}else q=15}else q=15;while(0);c:do if((q|0)==15){q=0;r=c[v>>2]|0;s=s&65535;c[L>>2]=s;c[L+4>>2]=s;Zx(r,115208,113976,L);if(!(jw(a,tw(a,e[F>>1]|0,e[F+2>>1]|0)|0,1)|0)){s=c[v>>2]|0;r=e[F>>1]|0;c[L>>2]=r;c[L+4>>2]=r;Zx(s,115208,114024,L);b[F>>1]=0;break}o=c[u>>2]|0;if(!o){q=24;break a}n=b[F>>1]|0;p=c[w>>2]|0;m=n&65535;d=-1;f=o;while(1){j=(d+f|0)/2|0;g=c[c[p+(j<<2)>>2]>>2]|0;if((g|0)==(m|0))break;t=g>>>0>>0;d=t?j:d;f=t?f:j;if((d+1|0)==(f|0)){q=24;break a}}while(1){if(!j){t=0;q=25;break c}g=j+-1|0;if((c[c[p+(g<<2)>>2]>>2]|0)==(m|0))j=g;else break}if((j|0)==-1){q=24;break a}else{t=j;q=25}}while(0);d:do if((q|0)==25?(q=0,n<<16>>16!=0):0){g=c[p+(t<<2)>>2]|0;e:do if(!(b[g+24>>1]|0)){b[F>>1]=0;g=0}else{f=F+2|0;j=t;m=g;while(1){d=c[m+8>>2]|0;if(!d){q=33;break}g=b[f>>1]|0;if((d|0)==(g&65535|0)){q=33;break}j=j+1|0;if((j|0)==(o|0))break;d=c[p+(j<<2)>>2]|0;if((c[d>>2]|0)==(n&65535|0))m=d;else break}do if((q|0)==33){if((j|0)==65535){g=b[f>>1]|0;break}g=b[m+4>>1]|0;j=g<<16>>16;if(g<<16>>16==-3|g<<16>>16==-1){g=n;break e}else if(g<<16>>16==-2)j=e[D>>1]|0;q=F+8|0;d=q;g=c[d>>2]|0;d=c[d+4>>2]|0;if(0>d>>>0|0==(d|0)&j>>>0>g>>>0){g=nw(a,n&65535)|0;d=c[v>>2]|0;f=c[a>>2]|0;if(!g)g=114344;else g=c[g+28>>2]|0;s=q;r=c[s>>2]|0;s=c[s+4>>2]|0;c[L>>2]=g;g=L+4|0;c[g>>2]=r;c[g+4>>2]=s;c[L+12>>2]=j;Zx(d,f,116592,L);b[F>>1]=0;g=0;break e}if(!(0>>0|0==(d|0)&j>>>0>>0)){g=n;break e}g=nw(a,n&65535)|0;d=c[v>>2]|0;f=c[a>>2]|0;if(!g)g=114344;else g=c[g+28>>2]|0;s=q;r=c[s>>2]|0;s=c[s+4>>2]|0;c[L>>2]=g;g=L+4|0;c[g>>2]=r;c[g+4>>2]=s;c[L+12>>2]=j;Zx(d,f,116656,L);g=q;c[g>>2]=j;c[g+4>>2]=0;g=b[F>>1]|0;break e}while(0);s=c[v>>2]|0;r=c[m+28>>2]|0;c[L>>2]=g&65535;c[L+4>>2]=r;Zx(s,115208,115232,L);b[F>>1]=0;g=0}while(0);g=g&65535;if(!g)break;else if((g|0)!=37382){WM(a,F,1)|0;break}s=J;c[s>>2]=0;c[s+4>>2]=0;s=F+8|0;f:do if((c[s>>2]|0)==1&(c[s+4>>2]|0)==0)if((b[F+2>>1]|0)==5){j=c[x>>2]|0;g=F+16|0;do if(!(j&524288)){g=c[g>>2]|0;c[K>>2]=g;if(j&128){Gx(K);j=c[x>>2]|0;g=c[K>>2]|0}if(!(j&2048)){s=ce[c[y>>2]&255](c[v>>2]|0,g,0,0)|0;if(!((s|0)==(g|0)&(I|0)==0)){g=3;break f}if((Od[c[z>>2]&255](c[v>>2]|0,J,8)|0)==8)break;else{g=3;break f}}if(g>>>0>4294967287){g=3;break f}if((g+8|0)>>>0>(c[A>>2]|0)>>>0){g=3;break f}NK(J,(c[B>>2]|0)+g|0,8)}else{m=g;r=c[m+4>>2]|0;s=J;c[s>>2]=c[m>>2];c[s+4>>2]=r}while(0);if(c[x>>2]&128)Kx(J,2);g=c[J>>2]|0;if(!g)l=0.0;else if((g|0)==-1)l=-1.0;else l=+(g>>>0)/+((c[C>>2]|0)>>>0);s=e[F>>1]|0;h[k>>3]=l;c[L>>2]=c[k>>2];c[L+4>>2]=c[k+4>>2];Xv(a,s,L)|0;break d}else g=2;else g=1;while(0);ZM(a,g,115360,115392,1)}while(0);E=E+1<<16>>16;if((E&65535)>=(G&65535)){q=68;break}else F=F+24|0}if((q|0)==24)Sa(114080,114104,4214,115208);else if((q|0)==68){g=c[H>>2]|0;if(!g){L=1;i=M;return L|0}KK(g);L=1;i=M;return L|0}return 0}function yw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;a=xw(a,b,c,hw()|0)|0;i=d;return a|0}function zw(a){a=a|0;var b=0;b=i;a=bN(a,1,1,0)|0;i=b;return a|0} +function ZA(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;U=i;Q=c[d+68>>2]|0;R=Q+(e*5632|0)+(f*148|0)+460|0;S=mz(c[R>>2]|0)|0;c[b+(f*232|0)+40>>2]=1;T=b+(f*232|0)+44|0;c[b+(f*232|0)+80>>2]=c[R>>2];if((a[d+89>>0]&8)!=0?!((c[d+72>>2]|0)==0&(j|0)!=1):0){j=h+1|0;if((j|0)<4){l=Q+(e*5632|0)+(f*148|0)+496|0;k=Q+(e*5632|0)+(f*148|0)+512|0;q=b+(f*232|0)+56|0;n=Q+(e*5632|0)+(f*148|0)+500|0;m=b+(f*232|0)+48|0;o=Q+(e*5632|0)+(f*148|0)+516|0;r=b+(f*232|0)+60|0;s=Q+(e*5632|0)+(f*148|0)+492|0;t=b+(f*232|0)+64|0;u=Q+(e*5632|0)+(f*148|0)+508|0;v=b+(f*232|0)+52|0;w=Q+(e*5632|0)+(f*148|0)+504|0;x=b+(f*232|0)+68|0;y=Q+(e*5632|0)+(f*148|0)+520|0;z=b+(f*232|0)+72|0;A=Q+(e*5632|0)+(f*148|0)+524|0;B=b+(f*232|0)+96|0;C=Q+(e*5632|0)+(f*148|0)+532|0;D=b+(f*232|0)+104|0;E=Q+(e*5632|0)+(f*148|0)+528|0;F=b+(f*232|0)+100|0;G=Q+(e*5632|0)+(f*148|0)+536|0;H=b+(f*232|0)+108|0;do{p=a[S+j>>0]|0;do if((p|0)==80)if((c[R>>2]|0)>>>0<2){c[x>>2]=c[w>>2];c[z>>2]=c[y>>2];break}else{c[B>>2]=c[A>>2];c[D>>2]=c[C>>2];c[F>>2]=c[E>>2];c[H>>2]=c[G>>2];break}else if((p|0)==76){c[t>>2]=c[s>>2];c[v>>2]=c[u>>2]}else if((p|0)==82){c[T>>2]=c[l>>2];c[q>>2]=c[k>>2]}else if((p|0)==67){c[m>>2]=c[n>>2];c[r>>2]=c[o>>2]}while(0);j=j+1|0}while((j|0)!=4)}j=(h|0)>-1;if(!g){if(!j){i=U;return}m=Q+(e*5632|0)+(f*148|0)+500|0;n=Q+(e*5632|0)+(f*148|0)+556|0;o=b+(f*232|0)+48|0;p=b+(f*232|0)+60|0;q=Q+(e*5632|0)+(f*148|0)+496|0;r=Q+(e*5632|0)+(f*148|0)+552|0;s=b+(f*232|0)+56|0;t=Q+(e*5632|0)+(f*148|0)+492|0;u=Q+(e*5632|0)+(f*148|0)+548|0;v=b+(f*232|0)+64|0;w=b+(f*232|0)+52|0;x=Q+(e*5632|0)+(f*148|0)+504|0;y=Q+(e*5632|0)+(f*148|0)+560|0;z=b+(f*232|0)+68|0;A=b+(f*232|0)+72|0;B=Q+(e*5632|0)+(f*148|0)+524|0;C=Q+(e*5632|0)+(f*148|0)+564|0;D=Q+(e*5632|0)+(f*148|0)+532|0;E=Q+(e*5632|0)+(f*148|0)+568|0;F=b+(f*232|0)+96|0;G=Q+(e*5632|0)+(f*148|0)+540|0;H=b+(f*232|0)+100|0;g=b+(f*232|0)+104|0;l=Q+(e*5632|0)+(f*148|0)+544|0;k=b+(f*232|0)+108|0;while(1){j=a[S+h>>0]|0;do if((j|0)==76){b=c[t>>2]|0;c[v>>2]=b;b=b+1|0;c[w>>2]=b;c[u>>2]=b}else if((j|0)==67){b=c[m>>2]|0;c[o>>2]=b;b=b+1|0;c[p>>2]=b;c[n>>2]=b}else if((j|0)==82){b=c[q>>2]|0;c[T>>2]=b;b=b+1|0;c[s>>2]=b;c[r>>2]=b}else if((j|0)==80)if((c[R>>2]|0)>>>0<2){b=c[x>>2]|0;c[z>>2]=b;b=b+1|0;c[A>>2]=b;c[y>>2]=b;break}else{b=c[B>>2]|0;N=c[D>>2]|0;c[F>>2]=b;d=c[G>>2]|0;d=d+b-((b>>>0)%(d>>>0)|0)|0;c[H>>2]=d;c[g>>2]=N;b=c[l>>2]|0;b=b+N-((N>>>0)%(b>>>0)|0)|0;c[k>>2]=b;c[C>>2]=d;c[E>>2]=b;break}while(0);if((h|0)>0)h=h+-1|0;else break}i=U;return}if(!j){i=U;return}K=Q+(e*5632|0)+(f*148|0)+552|0;L=Q+(e*5632|0)+(f*148|0)+512|0;M=Q+(e*5632|0)+(f*148|0)+496|0;N=b+(f*232|0)+56|0;O=Q+(e*5632|0)+(f*148|0)+556|0;P=Q+(e*5632|0)+(f*148|0)+516|0;m=Q+(e*5632|0)+(f*148|0)+500|0;o=b+(f*232|0)+48|0;r=b+(f*232|0)+60|0;s=Q+(e*5632|0)+(f*148|0)+548|0;t=Q+(e*5632|0)+(f*148|0)+508|0;u=Q+(e*5632|0)+(f*148|0)+492|0;v=b+(f*232|0)+64|0;w=b+(f*232|0)+52|0;x=Q+(e*5632|0)+(f*148|0)+560|0;y=Q+(e*5632|0)+(f*148|0)+520|0;z=Q+(e*5632|0)+(f*148|0)+504|0;A=b+(f*232|0)+68|0;B=b+(f*232|0)+72|0;C=Q+(e*5632|0)+(f*148|0)+564|0;D=Q+(e*5632|0)+(f*148|0)+528|0;E=b+(f*232|0)+96|0;F=Q+(e*5632|0)+(f*148|0)+540|0;G=b+(f*232|0)+100|0;H=Q+(e*5632|0)+(f*148|0)+568|0;g=Q+(e*5632|0)+(f*148|0)+536|0;I=b+(f*232|0)+104|0;J=Q+(e*5632|0)+(f*148|0)+544|0;q=b+(f*232|0)+108|0;n=Q+(e*5632|0)+(f*148|0)+524|0;k=Q+(e*5632|0)+(f*148|0)+532|0;j=1;while(1){p=S+h|0;l=a[p>>0]|0;do if((l|0)==76){b=c[s>>2]|0;c[v>>2]=b+-1;c[w>>2]=b}else if((l|0)==82){b=c[K>>2]|0;c[T>>2]=b+-1;c[N>>2]=b}else if((l|0)==80)if((c[R>>2]|0)>>>0<2){b=c[x>>2]|0;c[A>>2]=b+-1;c[B>>2]=b;break}else{b=c[C>>2]|0;Q=c[F>>2]|0;c[E>>2]=b-Q-((b>>>0)%(Q>>>0)|0);c[G>>2]=b;b=c[H>>2]|0;Q=c[J>>2]|0;c[I>>2]=b-Q-((b>>>0)%(Q>>>0)|0);c[q>>2]=b;break}else if((l|0)==67){b=c[O>>2]|0;c[o>>2]=b+-1;c[r>>2]=b}while(0);do if((j|0)==1){j=a[p>>0]|0;if((j|0)==82){j=c[K>>2]|0;if((j|0)!=(c[L>>2]|0)){c[T>>2]=j;j=j+1|0;c[N>>2]=j;c[K>>2]=j;j=0;break}if(!(VA(h+-1|0,d,e,f,S)|0)){j=0;break}j=c[M>>2]|0;c[T>>2]=j;j=j+1|0;c[N>>2]=j;c[K>>2]=j;j=1;break}else if((j|0)==80){if((c[R>>2]|0)>>>0<2){j=c[x>>2]|0;if((j|0)!=(c[y>>2]|0)){c[A>>2]=j;j=j+1|0;c[B>>2]=j;c[x>>2]=j;j=0;break}if(!(VA(h+-1|0,d,e,f,S)|0)){j=0;break}j=c[z>>2]|0;c[A>>2]=j;j=j+1|0;c[B>>2]=j;c[x>>2]=j;j=1;break}j=c[C>>2]|0;if(j>>>0<(c[D>>2]|0)>>>0){c[E>>2]=j;b=c[F>>2]|0;j=b+j-((j>>>0)%(b>>>0)|0)|0;c[G>>2]=j;c[C>>2]=j;j=0;break}p=c[H>>2]|0;if(p>>>0<(c[g>>2]|0)>>>0){c[I>>2]=p;b=c[J>>2]|0;j=0;p=b+p-((p>>>0)%(b>>>0)|0)|0}else{if(!(VA(h+-1|0,d,e,f,S)|0)){j=0;break}b=c[k>>2]|0;c[H>>2]=b;c[I>>2]=b;p=c[J>>2]|0;j=1;p=p+b-((b>>>0)%(p>>>0)|0)|0}c[q>>2]=p;c[H>>2]=p;Q=c[n>>2]|0;c[E>>2]=Q;b=c[F>>2]|0;b=b+Q-((Q>>>0)%(b>>>0)|0)|0;c[G>>2]=b;c[C>>2]=b;break}else if((j|0)==67){j=c[O>>2]|0;if((j|0)!=(c[P>>2]|0)){c[o>>2]=j;j=j+1|0;c[r>>2]=j;c[O>>2]=j;j=0;break}if(!(VA(h+-1|0,d,e,f,S)|0)){j=0;break}j=c[m>>2]|0;c[o>>2]=j;j=j+1|0;c[r>>2]=j;c[O>>2]=j;j=1;break}else if((j|0)==76){j=c[s>>2]|0;if((j|0)!=(c[t>>2]|0)){c[v>>2]=j;j=j+1|0;c[w>>2]=j;c[s>>2]=j;j=0;break}if(!(VA(h+-1|0,d,e,f,S)|0)){j=0;break}j=c[u>>2]|0;c[v>>2]=j;j=j+1|0;c[w>>2]=j;c[s>>2]=j;j=1;break}else{j=1;break}}while(0);if((h|0)>0)h=h+-1|0;else break}i=U;return}c[T>>2]=c[Q+(e*5632|0)+(f*148|0)+496>>2];c[b+(f*232|0)+56>>2]=c[Q+(e*5632|0)+(f*148|0)+512>>2];c[b+(f*232|0)+48>>2]=c[Q+(e*5632|0)+(f*148|0)+500>>2];c[b+(f*232|0)+60>>2]=c[Q+(e*5632|0)+(f*148|0)+516>>2];c[b+(f*232|0)+64>>2]=c[Q+(e*5632|0)+(f*148|0)+492>>2];c[b+(f*232|0)+52>>2]=c[Q+(e*5632|0)+(f*148|0)+508>>2];c[b+(f*232|0)+68>>2]=c[Q+(e*5632|0)+(f*148|0)+504>>2];c[b+(f*232|0)+72>>2]=c[Q+(e*5632|0)+(f*148|0)+520>>2];c[b+(f*232|0)+96>>2]=c[Q+(e*5632|0)+(f*148|0)+524>>2];c[b+(f*232|0)+104>>2]=c[Q+(e*5632|0)+(f*148|0)+532>>2];c[b+(f*232|0)+100>>2]=c[Q+(e*5632|0)+(f*148|0)+528>>2];c[b+(f*232|0)+108>>2]=c[Q+(e*5632|0)+(f*148|0)+536>>2];i=U;return}function _A(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;R=i;if(!d)Sa(262536,262552,1836,262680);if(!b)Sa(262600,262552,1837,262680);f=c[d+24>>2]|0;if((ea(c[d+28>>2]|0,f)|0)>>>0<=e>>>0)Sa(262616,262552,1838,262680);G=c[d+68>>2]|0;J=(e>>>0)%(f>>>0)|0;L=(e>>>0)/(f>>>0)|0;E=c[d+4>>2]|0;F=c[d+12>>2]|0;D=(ea(F,J)|0)+E|0;H=c[b>>2]|0;H=(D|0)>(H|0)?D:H;E=(ea(F,J+1|0)|0)+E|0;J=c[b+8>>2]|0;J=(E|0)<(J|0)?E:J;E=c[d+8>>2]|0;F=c[d+16>>2]|0;D=(ea(F,L)|0)+E|0;K=c[b+4>>2]|0;K=(D|0)>(K|0)?D:K;E=(ea(F,L+1|0)|0)+E|0;L=c[b+12>>2]|0;L=(E|0)<(L|0)?E:L;E=c[b+16>>2]|0;a:do if(E){g=0;m=2147483647;f=2147483647;k=0;F=0;C=c[b+24>>2]|0;D=c[G+(e*5632|0)+5576>>2]|0;while(1){z=c[C>>2]|0;if(!z){f=10;break}b=z+-1|0;h=(b+H|0)/(z|0)|0;A=c[C+4>>2]|0;if(!A){f=12;break}j=A+-1|0;B=c[D+4>>2]|0;k=B>>>0>k>>>0?B:k;if(!B)b=m;else{x=(j+L|0)/(A|0)|0;v=(b+J|0)/(z|0)|0;t=(j+K|0)/(A|0)|0;r=Iga(h|0,((h|0)<0)<<31>>31|0,-1,-1)|0;s=I;t=Iga(t|0,((t|0)<0)<<31>>31|0,-1,-1)|0;u=I;v=Iga(v|0,((v|0)<0)<<31>>31|0,-1,-1)|0;w=I;x=Iga(x|0,((x|0)<0)<<31>>31|0,-1,-1)|0;y=I;b=m;h=0;q=0;while(1){o=c[D+(q<<2)+812>>2]|0;p=c[D+(q<<2)+944>>2]|0;m=h+-1+B|0;n=z<>>0>>0?b:n;f=f>>>0>>0?f:S;S=1<>31;h=Iga(r|0,s|0,S|0,n|0)|0;h=zga(h|0,I|0,m|0)|0;l=Iga(t|0,u|0,S|0,n|0)|0;l=zga(l|0,I|0,m|0)|0;j=Iga(v|0,w|0,S|0,n|0)|0;j=zga(j|0,I|0,m|0)|0;n=Iga(x|0,y|0,S|0,n|0)|0;m=zga(n|0,I|0,m|0)|0;n=1<>31|0,-1,-1)|0;n=Iga(n|0,I|0,m|0,((m|0)<0)<<31>>31|0)|0;n=zga(n|0,I|0,p|0)|0;if((h|0)==(j|0))j=0;else{S=1<>31|0,-1,-1)|0;j=Iga(S|0,I|0,j|0,((j|0)<0)<<31>>31|0)|0;j=zga(j|0,I|0,o|0)|0;j=(j<>o<>o}if((l|0)==(m|0))h=0;else h=(n<>p<>p;j=ea(h,j)|0;g=j>>>0>g>>>0?j:g;j=q+1|0;if(j>>>0>>0){h=~q;q=j}else break}}F=F+1|0;if(F>>>0>=E>>>0){M=g;N=b;O=f;P=E;Q=k;break a}else{m=b;C=C+52|0;D=D+1080|0}}if((f|0)==10)Sa(262720,262728,105,262768);else if((f|0)==12)Sa(262720,262728,105,262768)}else{M=0;N=2147483647;O=2147483647;P=0;Q=0}while(0);if(a[G+(e*5632|0)+5628>>0]&2){IQ(d,e,H,J,K,L,M,N,O);i=R;return}h=(c[G+(e*5632|0)+420>>2]|0)+1|0;if(!h){i=R;return}b=c[G+(e*5632|0)+8>>2]|0;j=c[G+(e*5632|0)+4>>2]|0;f=G+(e*5632|0)+424|0;g=0;while(1){c[f+76>>2]=0;c[f+92>>2]=P;c[f+72>>2]=0;c[f+88>>2]=Q;c[f+68>>2]=0;c[f+84>>2]=b;c[f+36>>2]=j;c[f+80>>2]=0;c[f+96>>2]=M;c[f+100>>2]=H;c[f+104>>2]=J;c[f+108>>2]=K;c[f+112>>2]=L;c[f+116>>2]=N;c[f+120>>2]=O;g=g+1|0;if((g|0)==(h|0))break;else f=f+148|0}i=R;return}function $A(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0;db=i;switch(c[d+80>>2]|0){case 0:{e=d+40|0;if(!(c[e>>2]|0)){B=d+32|0;j=B;B=c[B>>2]|0;m=20}else{c[e>>2]=0;l=c[d+64>>2]|0;c[d+36>>2]=l;m=5}while(1){if((m|0)==5){if(l>>>0>=(c[d+52>>2]|0)>>>0){cb=0;m=184;break}w=c[d+44>>2]|0;c[d+28>>2]=w;m=7}else if((m|0)==20){f=B+1|0;c[j>>2]=f;m=15}while(1){if((m|0)==7){m=0;if(w>>>0>=(c[d+56>>2]|0)>>>0){m=23;break}x=c[d+48>>2]|0;c[d+24>>2]=x}else if((m|0)==15){m=0;if(f>>>0<(c[d+72>>2]|0)>>>0)break;C=d+24|0;g=C;C=c[C>>2]|0;m=21}while(1){if((m|0)==21){m=0;x=C+1|0;c[g>>2]=x}if(x>>>0>=(c[d+60>>2]|0)>>>0){m=22;break}y=c[d+196>>2]|0;z=c[d+28>>2]|0;if(z>>>0<(c[y+(x<<4)+8>>2]|0)>>>0)break;g=d+24|0;C=x;m=21}if((m|0)==22){m=d+28|0;w=(c[m>>2]|0)+1|0;c[m>>2]=w;m=7;continue}e=c[y+(x<<4)+12>>2]|0;if(!(a[d>>0]|0))c[d+72>>2]=ea(c[e+(z<<4)+12>>2]|0,c[e+(z<<4)+8>>2]|0)|0;f=c[d+68>>2]|0;c[d+32>>2]=f;m=15}if((m|0)==23){m=d+36|0;l=(c[m>>2]|0)+1|0;c[m>>2]=l;m=5;continue}A=ea(c[d+8>>2]|0,c[d+36>>2]|0)|0;A=(ea(c[d+12>>2]|0,c[d+28>>2]|0)|0)+A|0;A=A+(ea(c[d+16>>2]|0,c[d+24>>2]|0)|0)|0;A=A+(ea(c[d+20>>2]|0,f)|0)|0;A=(c[d+4>>2]|0)+(A<<1)|0;if(!(b[A>>1]|0))break;j=d+32|0;B=f;m=20}if((m|0)==184){i=db;return cb|0}b[A>>1]=1;d=1;i=db;return d|0}case 2:{e=d+40|0;if(!(c[e>>2]|0)){ab=d+36|0;Ka=ab;ab=c[ab>>2]|0;m=88}else{c[e>>2]=0;p=d+224|0;c[p>>2]=0;q=d+228|0;c[q>>2]=0;r=c[d+192>>2]|0;if(r){s=c[d+196>>2]|0;e=0;f=0;t=0;do{n=c[s+(t<<4)+8>>2]|0;if(n){k=c[s+(t<<4)+12>>2]|0;j=c[s+(t<<4)>>2]|0;l=c[s+(t<<4)+4>>2]|0;o=n+-1|0;m=0;g=0;while(1){h=o+m|0;m=j<<(c[k+(g<<4)>>2]|0)+h;h=l<<(c[k+(g<<4)+4>>2]|0)+h;if(!e)e=m;else e=e>>>0>>0?e:m;if(!f)f=h;else f=f>>>0>>0?f:h;h=g+1|0;if((h|0)==(n|0))break;else{m=~g;g=h}}c[p>>2]=e;c[q>>2]=f}t=t+1|0}while((t|0)!=(r|0))}if(!(a[d>>0]|0)){c[d+104>>2]=c[d+204>>2];c[d+96>>2]=c[d+200>>2];c[d+108>>2]=c[d+212>>2];c[d+100>>2]=c[d+208>>2]}G=c[d+44>>2]|0;c[d+28>>2]=G;m=62}a:while(1){if((m|0)==62){if(G>>>0>=(c[d+56>>2]|0)>>>0){cb=0;m=184;break}La=c[d+104>>2]|0;c[d+220>>2]=La;m=64}else if((m|0)==88){_a=ab+1|0;c[Ka>>2]=_a;m=83}while(1){if((m|0)==64){if((La|0)>=(c[d+108>>2]|0)){m=92;break}Ma=c[d+96>>2]|0;c[d+216>>2]=Ma;m=66}else if((m|0)==83){m=0;if(_a>>>0<(c[d+52>>2]|0)>>>0)break;bb=c[d+24>>2]|0;m=89}while(1){if((m|0)==66){if((Ma|0)>=(c[d+100>>2]|0)){m=91;break}Na=c[d+48>>2]|0;c[d+24>>2]=Na}else if((m|0)==89){Na=bb+1|0;c[d+24>>2]=Na}if(Na>>>0>=(c[d+60>>2]|0)>>>0){Ma=c[d+224>>2]|0;m=d+216|0;Ja=c[m>>2]|0;Ma=Ja+Ma-((Ja|0)%(Ma|0)|0)|0;c[m>>2]=Ma;m=66;continue}f=c[d+196>>2]|0;o=c[d+28>>2]|0;e=c[f+(Na<<4)+8>>2]|0;if(o>>>0>=e>>>0){bb=Na;m=89;continue}p=c[f+(Na<<4)+12>>2]|0;k=e+~o|0;l=c[f+(Na<<4)>>2]|0;Oa=l<>2]|0;Pa=Oa+-1|0;Qa=(m+Pa|0)/(Oa|0)|0;n=c[d+204>>2]|0;e=c[f+(Na<<4)+4>>2]|0;Ra=e<>2]|0)+Pa|0)/(Oa|0)|0;Ua=Ra+-1|0;g=((c[d+212>>2]|0)+Ua|0)/(Ra|0)|0;Va=c[p+(o<<4)>>2]|0;h=Va+k|0;Wa=c[p+(o<<4)+4>>2]|0;j=Wa+k|0;Xa=c[d+220>>2]|0;if((Xa|0)%(e<>2]|0;if((Ya|0)%(l<>2]|0;if(!Za){bb=Na;m=89;continue}if(((Qa|0)==(f|0)?1:(c[p+(o<<4)+12>>2]|0)==0)|(Ta|0)==(g|0)){bb=Na;m=89}else{m=82;break}}if((m|0)==82){c[d+32>>2]=(((Ya+Pa|0)/(Oa|0)|0)>>Va)-(Qa>>Va)+(ea((((Xa+Ua|0)/(Ra|0)|0)>>Wa)-(Ta>>Wa)|0,Za)|0);_a=c[d+64>>2]|0;c[d+36>>2]=_a;m=83;continue}else if((m|0)==91){La=c[d+228>>2]|0;m=d+220|0;Ja=c[m>>2]|0;La=Ja+La-((Ja|0)%(La|0)|0)|0;c[m>>2]=La;m=64;continue}}if((m|0)==92){m=d+28|0;G=(c[m>>2]|0)+1|0;c[m>>2]=G;m=62;continue}$a=ea(c[d+8>>2]|0,_a)|0;$a=(ea(c[d+12>>2]|0,c[d+28>>2]|0)|0)+$a|0;$a=$a+(ea(c[d+16>>2]|0,c[d+24>>2]|0)|0)|0;$a=$a+(ea(c[d+20>>2]|0,c[d+32>>2]|0)|0)|0;$a=(c[d+4>>2]|0)+($a<<1)|0;if(!(b[$a>>1]|0)){m=87;break}Ka=d+36|0;ab=_a;m=88}if((m|0)==71)Sa(262720,262728,105,262768);else if((m|0)==73)Sa(262720,262728,105,262768);else if((m|0)==87){b[$a>>1]=1;d=1;i=db;return d|0}else if((m|0)==184){i=db;return cb|0}break}case 1:{e=d+40|0;if(!(c[e>>2]|0)){u=d+32|0;n=u;u=c[u>>2]|0;m=42}else{c[e>>2]=0;D=c[d+44>>2]|0;c[d+28>>2]=D;m=27}while(1){if((m|0)==27){if(D>>>0>=(c[d+56>>2]|0)>>>0){cb=0;m=184;break}o=c[d+64>>2]|0;c[d+36>>2]=o;m=29}else if((m|0)==42){h=u+1|0;c[n>>2]=h;m=37}while(1){if((m|0)==29){m=0;if(o>>>0>=(c[d+52>>2]|0)>>>0){m=45;break}p=c[d+48>>2]|0;c[d+24>>2]=p}else if((m|0)==37){m=0;if(h>>>0<(c[d+72>>2]|0)>>>0)break;v=d+24|0;k=v;v=c[v>>2]|0;m=43}while(1){if((m|0)==43){m=0;p=v+1|0;c[k>>2]=p}if(p>>>0>=(c[d+60>>2]|0)>>>0){m=44;break}q=c[d+196>>2]|0;s=c[d+28>>2]|0;if(s>>>0<(c[q+(p<<4)+8>>2]|0)>>>0)break;k=d+24|0;v=p;m=43}if((m|0)==44){m=d+36|0;o=(c[m>>2]|0)+1|0;c[m>>2]=o;m=29;continue}e=c[q+(p<<4)+12>>2]|0;if(!(a[d>>0]|0))c[d+72>>2]=ea(c[e+(s<<4)+12>>2]|0,c[e+(s<<4)+8>>2]|0)|0;h=c[d+68>>2]|0;c[d+32>>2]=h;m=37}if((m|0)==45){m=d+28|0;D=(c[m>>2]|0)+1|0;c[m>>2]=D;m=27;continue}t=ea(c[d+8>>2]|0,c[d+36>>2]|0)|0;t=(ea(c[d+12>>2]|0,c[d+28>>2]|0)|0)+t|0;t=t+(ea(c[d+16>>2]|0,c[d+24>>2]|0)|0)|0;t=t+(ea(c[d+20>>2]|0,h)|0)|0;t=(c[d+4>>2]|0)+(t<<1)|0;if(!(b[t>>1]|0))break;n=d+32|0;u=h;m=42}if((m|0)==184){i=db;return cb|0}b[t>>1]=1;d=1;i=db;return d|0}case 3:{f=d+40|0;if(!(c[f>>2]|0)){Ia=c[d+24>>2]|0;Ba=d+36|0;ja=Ba;Ba=c[Ba>>2]|0;Ea=Ia;Ia=(c[d+196>>2]|0)+(Ia<<4)|0;m=135}else{c[f>>2]=0;p=d+224|0;c[p>>2]=0;q=d+228|0;c[q>>2]=0;r=c[d+192>>2]|0;if(r){s=c[d+196>>2]|0;e=0;m=0;t=0;do{n=c[s+(t<<4)+8>>2]|0;if(n){k=c[s+(t<<4)+12>>2]|0;j=c[s+(t<<4)>>2]|0;l=c[s+(t<<4)+4>>2]|0;o=n+-1|0;h=0;g=0;while(1){f=o+h|0;h=j<<(c[k+(g<<4)>>2]|0)+f;f=l<<(c[k+(g<<4)+4>>2]|0)+f;if(!e)e=h;else e=e>>>0>>0?e:h;if(!m)m=f;else m=m>>>0>>0?m:f;f=g+1|0;if((f|0)==(n|0))break;else{h=~g;g=f}}c[p>>2]=e;c[q>>2]=m}t=t+1|0}while((t|0)!=(r|0))}if(!(a[d>>0]|0)){e=c[d+204>>2]|0;c[d+104>>2]=e;c[d+96>>2]=c[d+200>>2];c[d+108>>2]=c[d+212>>2];c[d+100>>2]=c[d+208>>2]}else e=c[d+104>>2]|0;c[d+220>>2]=e;m=110}b:while(1){if((m|0)==110){if((e|0)>=(c[d+108>>2]|0)){cb=0;m=184;break}ka=c[d+96>>2]|0;c[d+216>>2]=ka;m=112}else if((m|0)==135){ya=Ba+1|0;c[ja>>2]=ya;za=Ea;Ha=Ia;m=130}while(1){if((m|0)==112){if((ka|0)>=(c[d+100>>2]|0)){m=139;break}la=c[d+48>>2]|0;c[d+24>>2]=la;m=114}else if((m|0)==130){m=0;if(ya>>>0<(c[d+52>>2]|0)>>>0)break;Ca=c[d+28>>2]|0;Fa=za;Ja=Ha;m=136}while(1){if((m|0)==114){if(la>>>0>=(c[d+60>>2]|0)>>>0){m=138;break}Ga=(c[d+196>>2]|0)+(la<<4)|0;ma=c[d+44>>2]|0;c[d+28>>2]=ma;Da=la}else if((m|0)==136){ma=Ca+1|0;c[d+28>>2]=ma;Da=Fa;Ga=Ja}ab=c[d+56>>2]|0;f=c[Ga+8>>2]|0;if(ma>>>0>=(ab>>>0>>0?ab:f)>>>0){la=Da+1|0;c[d+24>>2]=la;m=114;continue}p=c[Ga+12>>2]|0;m=f+~ma|0;h=c[Ga>>2]|0;na=h<>2]|0;oa=na+-1|0;pa=(f+oa|0)/(na|0)|0;g=c[d+204>>2]|0;n=c[Ga+4>>2]|0;qa=n<>2]|0)+oa|0)/(na|0)|0;sa=qa+-1|0;j=((c[d+212>>2]|0)+sa|0)/(qa|0)|0;ta=c[p+(ma<<4)>>2]|0;l=ta+m|0;ua=c[p+(ma<<4)+4>>2]|0;o=ua+m|0;va=c[d+220>>2]|0;if((va|0)%(n<>2]|0;if((wa|0)%(h<>2]|0;if(!xa){Ca=ma;Fa=Da;Ja=Ga;m=136;continue}if(((pa|0)==(k|0)?1:(c[p+(ma<<4)+12>>2]|0)==0)|(ra|0)==(j|0)){Ca=ma;Fa=Da;Ja=Ga;m=136}else{m=129;break}}if((m|0)==129){c[d+32>>2]=(((wa+oa|0)/(na|0)|0)>>ta)-(pa>>ta)+(ea((((va+sa|0)/(qa|0)|0)>>ua)-(ra>>ua)|0,xa)|0);ya=c[d+64>>2]|0;c[d+36>>2]=ya;za=Da;Ha=Ga;m=130;continue}else if((m|0)==138){ka=c[d+224>>2]|0;m=d+216|0;ab=c[m>>2]|0;ka=ab+ka-((ab|0)%(ka|0)|0)|0;c[m>>2]=ka;m=112;continue}}if((m|0)==139){e=c[d+228>>2]|0;m=d+220|0;ab=c[m>>2]|0;e=ab+e-((ab|0)%(e|0)|0)|0;c[m>>2]=e;m=110;continue}Aa=ea(c[d+8>>2]|0,ya)|0;Aa=(ea(c[d+12>>2]|0,c[d+28>>2]|0)|0)+Aa|0;Aa=Aa+(ea(c[d+16>>2]|0,za)|0)|0;Aa=Aa+(ea(c[d+20>>2]|0,c[d+32>>2]|0)|0)|0;Aa=(c[d+4>>2]|0)+(Aa<<1)|0;if(!(b[Aa>>1]|0)){m=134;break}ja=d+36|0;Ba=ya;Ea=za;Ia=Ha;m=135}if((m|0)==118)Sa(262720,262728,105,262768);else if((m|0)==120)Sa(262720,262728,105,262768);else if((m|0)==134){b[Aa>>1]=1;d=1;i=db;return d|0}else if((m|0)==184){i=db;return cb|0}break}case 4:{e=d+40|0;if(!(c[e>>2]|0)){ha=c[d+24>>2]|0;Z=d+36|0;H=Z;Z=c[Z>>2]|0;$=ha;ha=(c[d+196>>2]|0)+(ha<<4)|0;m=179}else{c[e>>2]=0;I=c[d+48>>2]|0;c[d+24>>2]=I;m=143}c:while(1){if((m|0)==143){if(I>>>0>=(c[d+60>>2]|0)>>>0){cb=0;m=184;break}e=c[d+196>>2]|0;r=e+(I<<4)|0;j=d+224|0;c[j>>2]=0;l=d+228|0;c[l>>2]=0;o=c[e+(I<<4)+8>>2]|0;if(o){p=c[e+(I<<4)+12>>2]|0;q=c[r>>2]|0;g=c[e+(I<<4)+4>>2]|0;n=o+-1|0;f=0;m=0;e=0;k=0;while(1){h=n+e|0;e=q<<(c[p+(k<<4)>>2]|0)+h;h=g<<(c[p+(k<<4)+4>>2]|0)+h;if(f)e=f>>>0>>0?f:e;if(!m)m=h;else m=m>>>0>>0?m:h;h=k+1|0;if((h|0)==(o|0))break;else{f=e;e=~k;k=h}}c[j>>2]=e;c[l>>2]=m}if(!(a[d>>0]|0)){e=c[d+204>>2]|0;c[d+104>>2]=e;c[d+96>>2]=c[d+200>>2];c[d+108>>2]=c[d+212>>2];c[d+100>>2]=c[d+208>>2]}else e=c[d+104>>2]|0;c[d+220>>2]=e;E=e;F=I;m=156}else if((m|0)==179){W=Z+1|0;c[H>>2]=W;X=$;ga=ha;m=174}while(1){if((m|0)==156){if((E|0)>=(c[d+108>>2]|0)){m=183;break}J=c[d+96>>2]|0;c[d+216>>2]=J;aa=F;da=r;m=158}else if((m|0)==174){m=0;if(W>>>0<(c[d+52>>2]|0)>>>0)break;_=c[d+28>>2]|0;ca=X;ia=ga;m=180}while(1){if((m|0)==158){if((J|0)>=(c[d+100>>2]|0)){m=182;break}K=c[d+44>>2]|0;c[d+28>>2]=K;ba=aa;fa=da}else if((m|0)==180){K=_+1|0;c[d+28>>2]=K;ba=ca;fa=ia}ab=c[d+56>>2]|0;e=c[fa+8>>2]|0;if(K>>>0>=(ab>>>0>>0?ab:e)>>>0){J=c[d+224>>2]|0;aa=d+216|0;da=c[aa>>2]|0;J=da+J-((da|0)%(J|0)|0)|0;c[aa>>2]=J;aa=ba;da=fa;m=158;continue}o=c[fa+12>>2]|0;e=e+~K|0;m=c[fa>>2]|0;L=m<>2]|0;M=L+-1|0;N=(h+M|0)/(L|0)|0;f=c[d+204>>2]|0;g=c[fa+4>>2]|0;O=g<>2]|0)+M|0)/(L|0)|0;Q=O+-1|0;k=((c[d+212>>2]|0)+Q|0)/(O|0)|0;R=c[o+(K<<4)>>2]|0;j=R+e|0;S=c[o+(K<<4)+4>>2]|0;l=S+e|0;T=c[d+220>>2]|0;if((T|0)%(g<>2]|0;if((U|0)%(m<>2]|0;if(!V){_=K;ca=ba;ia=fa;m=180;continue}if(((N|0)==(n|0)?1:(c[o+(K<<4)+12>>2]|0)==0)|(P|0)==(k|0)){_=K;ca=ba;ia=fa;m=180}else{m=173;break}}if((m|0)==173){c[d+32>>2]=(((U+M|0)/(L|0)|0)>>R)-(N>>R)+(ea((((T+Q|0)/(O|0)|0)>>S)-(P>>S)|0,V)|0);W=c[d+64>>2]|0;c[d+36>>2]=W;X=ba;ga=fa;m=174;continue}else if((m|0)==182){E=c[d+228>>2]|0;F=d+220|0;r=c[F>>2]|0;E=r+E-((r|0)%(E|0)|0)|0;c[F>>2]=E;F=aa;r=da;m=156;continue}}if((m|0)==183){I=F+1|0;c[d+24>>2]=I;m=143;continue}Y=ea(c[d+8>>2]|0,W)|0;Y=(ea(c[d+12>>2]|0,c[d+28>>2]|0)|0)+Y|0;Y=Y+(ea(c[d+16>>2]|0,X)|0)|0;Y=Y+(ea(c[d+20>>2]|0,c[d+32>>2]|0)|0)|0;Y=(c[d+4>>2]|0)+(Y<<1)|0;if(!(b[Y>>1]|0)){m=178;break}H=d+36|0;Z=W;$=X;ha=ga;m=179}if((m|0)==162)Sa(262720,262728,105,262768);else if((m|0)==164)Sa(262720,262728,105,262768);else if((m|0)==178){b[Y>>1]=1;d=1;i=db;return d|0}else if((m|0)==184){i=db;return cb|0}break}default:{d=0;i=db;return d|0}}return 0}function aB(){var a=0,b=0;b=i;a=Afa(28)|0;i=b;return a|0}function bB(a){a=a|0;var b=0;b=i;if(a)Bfa(a);i=b;return}function cB(b,d,e){b=b|0;d=d|0;e=e|0;c[b+20>>2]=d;c[b+8>>2]=e;c[b+12>>2]=0;a[b>>0]=0;c[b+4>>2]=0;return}function dB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;g=b+4|0;d=c[g>>2]|0;do if(!d){c[g>>2]=8;e=b+12|0;f=c[e>>2]|0;if((f|0)==(c[b+8>>2]|0)){a[b>>0]=-1;d=8;e=-1;break}if((a[b>>0]|0)==-1){c[g>>2]=7;d=7}else d=8;j=a[(c[b+20>>2]|0)+f>>0]|0;a[b>>0]=j;c[e>>2]=f+1;e=j}else e=a[b>>0]|0;while(0);j=d+-1|0;c[g>>2]=j;i=h;return (e&255)>>>j&1|0}function eB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;g=ea(d,b)|0;h=a+24|0;j=a+8|0;e=c[j>>2]|0;do if(g>>>0>(c[h>>2]|0)>>>0){Bfa(e);f=g<<2;e=Efa(16,f)|0;c[j>>2]=e;if(!e){a=0;i=k;return a|0}else{c[h>>2]=g;break}}else f=g<<2;while(0);Cga(e|0,0,f|0)|0;h=b+2|0;c[a+32>>2]=h;h=ea(d+2|0,h)|0;g=a+28|0;j=a+12|0;e=c[j>>2]|0;do if(h>>>0>(c[g>>2]|0)>>>0){Bfa(e);f=h<<1;e=Efa(16,f)|0;c[j>>2]=e;if(!e){a=0;i=k;return a|0}else{c[g>>2]=h;break}}else f=h<<1;while(0);Cga(e|0,0,f|0)|0;c[a+16>>2]=b;c[a+20>>2]=d;a=1;i=k;return a|0}function fB(){var a=0,b=0,d=0,e=0;e=i;a=Afa(36)|0;do if(a){b=a+0|0;d=b+36|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));b=oA()|0;c[a>>2]=b;if(!b){pA(0);bB(0);Bfa(a);a=0;break}d=aB()|0;c[a+4>>2]=d;if(!d){pA(b);bB(0);Bfa(a);a=0}}else a=0;while(0);i=e;return a|0}function gB(a){a=a|0;var b=0,d=0,e=0;e=i;if(!a){i=e;return}pA(c[a>>2]|0);c[a>>2]=0;b=a+4|0;bB(c[b>>2]|0);c[b>>2]=0;b=a+8|0;d=c[b>>2]|0;if(d){Bfa(d);c[b>>2]=0}b=c[a+12>>2]|0;if(b)Bfa(b);Bfa(a);i=e;return}function hB(a,f,h){a=a|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0;Ea=i;za=(c[f+8>>2]|0)-(c[f>>2]|0)|0;Aa=f+20|0;j=c[Aa>>2]|0;if(!j){a=1;i=Ea;return a|0}Ba=f+24|0;Ca=h+808|0;Da=h+16|0;ua=a+4|0;wa=a+8|0;xa=a+16|0;ya=a+20|0;ta=h+20|0;qa=f+32|0;ra=a+32|0;sa=a+12|0;h=j;pa=0;a:while(1){na=c[Ba>>2]|0;oa=na+(pa*136|0)+24|0;f=c[oa>>2]|0;if(f){ka=na+(pa*136|0)+16|0;la=na+(pa*136|0)+20|0;ma=pa+-1|0;j=c[la>>2]|0;h=c[ka>>2]|0;ja=0;do{if(ea(j,h)|0){da=na+(pa*136|0)+(ja*36|0)+48|0;fa=na+(pa*136|0)+(ja*36|0)+44|0;ga=na+(pa*136|0)+(ja*36|0)+28|0;ha=na+(pa*136|0)+(ja*36|0)+32|0;ia=na+(pa*136|0)+(ja*36|0)+60|0;ca=0;do{f=c[da>>2]|0;aa=f+(ca*40|0)+16|0;ba=f+(ca*40|0)+20|0;if(ea(c[ba>>2]|0,c[aa>>2]|0)|0){_=f+(ca*40|0)+24|0;$=0;do{h=c[_>>2]|0;T=c[fa>>2]|0;f=c[Ca>>2]|0;o=c[Da>>2]|0;U=c[ua>>2]|0;V=c[a>>2]|0;W=h+($*56|0)+8|0;Z=h+($*56|0)+12|0;if(!(eB(a,(c[h+($*56|0)+16>>2]|0)-(c[W>>2]|0)|0,(c[h+($*56|0)+20>>2]|0)-(c[Z>>2]|0)|0)|0)){h=0;H=213;break a}X=h+($*56|0)+24|0;j=c[X>>2]|0;xA(V);yA(V,18,0,46);yA(V,17,0,3);yA(V,0,0,4);Y=h+($*56|0)+48|0;k=c[Y>>2]|0;if(k){O=h+($*56|0)+4|0;P=o&1;Q=(o&2|0)!=0;R=(o&8|0)==0;S=T<<8;N=(o&32|0)==0;o=f+-1+j|0;h=2;M=0;do{j=c[O>>2]|0;p=(h>>>0<2?(o|0)<=((c[X>>2]|0)+-5|0):0)?P:0;f=c[j+(M<<5)>>2]|0;if(f){L=(p|0)==1;k=(c[f>>2]|0)+(c[j+(M<<5)+4>>2]|0)|0;f=c[j+(M<<5)+16>>2]|0;if(!L){if(!(CA(V,k,f)|0)){h=0;H=213;break a}}else cB(U,k,f);K=j+(M<<5)+12|0;if(c[K>>2]|0){J=Q&(p|0)==0;I=0;do{b:do if((h|0)==1){k=o+1|0;if(L){r=1<>1;q=(o|0)>-1?0-r|0:-1;k=c[ya>>2]|0;if(!k)break;f=c[xa>>2]|0;p=f;n=0;while(1){l=n;n=n+4|0;do if(!f){j=p;f=0}else{if((l|0)==-4){j=p;f=p;break}else m=0;do{j=m;m=m+1|0;p=l;do{if(p>>>0>=(c[ya>>2]|0)>>>0)break;f=p;p=p+1|0;k=(ea(c[ra>>2]|0,p)|0)+m|0;k=(c[sa>>2]|0)+(k<<1)|0;f=(ea(c[xa>>2]|0,f)|0)+j|0;f=(c[wa>>2]|0)+(f<<2)|0;if((b[k>>1]&20480)==4096){G=(dB(c[ua>>2]|0)|0)!=0;G=G?r:q;H=c[f>>2]|0;c[f>>2]=((H|0)<0?0-G|0:G)+H;b[k>>1]=e[k>>1]|8192}}while(p>>>0>>0);k=c[xa>>2]|0}while(m>>>0>>0);j=k;f=k;k=c[ya>>2]|0}while(0);if(n>>>0>=k>>>0){H=175;break b}else p=j}}if(!R){v=1<>1;u=(o|0)>-1?0-v|0:-1;k=c[ya>>2]|0;if(!k){H=175;break}f=c[xa>>2]|0;j=f;t=0;while(1){s=t;t=t+4|0;if(!f)f=0;else{q=(s|0)==-4;r=s|3;n=0;while(1){l=n;n=n+1|0;if(q)k=j;else{m=s;do{k=c[ya>>2]|0;if(m>>>0>=k>>>0)break;if((m|0)==(r|0))k=1;else k=(m|0)==(k+-1|0);j=m;m=m+1|0;f=(ea(c[ra>>2]|0,m)|0)+n|0;f=(c[sa>>2]|0)+(f<<1)|0;j=(ea(c[xa>>2]|0,j)|0)+l|0;j=(c[wa>>2]|0)+(j<<2)|0;p=c[a>>2]|0;H=b[f>>1]|0;k=k?H&-1095:H;if((k&20480|0)==4096){c[p+100>>2]=p+(((k&8192|0)!=0?16:(k&255|0)!=0?15:14)<<2)+24;G=(DA(p)|0)!=0;G=G?v:u;H=c[j>>2]|0;c[j>>2]=((H|0)<0?0-G|0:G)+H;b[f>>1]=e[f>>1]|8192}}while(m>>>0>>0);k=c[xa>>2]|0}if(n>>>0>=k>>>0)break;else j=k}j=k;f=k;k=c[ya>>2]|0}if(t>>>0>=k>>>0){H=175;break b}}}j=c[wa>>2]|0;m=(c[sa>>2]|0)+2|0;x=1<>1;w=(o|0)>-1?0-x|0:-1;k=c[ya>>2]|0;f=c[xa>>2]|0;if(k>>>0>3){p=f;v=j;u=0;while(1){if(!f)f=0;else{k=p;t=0;do{f=v+(t<<2)|0;l=c[ra>>2]|0;q=l+t|0;j=m+(q<<1)|0;n=c[a>>2]|0;p=b[j>>1]|0;if((p&20480|0)==4096){c[n+100>>2]=n+(((p&8192|0)!=0?16:(p&255|0)!=0?15:14)<<2)+24;l=(DA(n)|0)!=0;l=l?x:w;k=c[f>>2]|0;c[f>>2]=((k|0)<0?0-l|0:l)+k;b[j>>1]=e[j>>1]|8192;k=c[xa>>2]|0;f=c[ra>>2]|0;l=c[a>>2]|0}else{f=l;l=n}r=k+t|0;n=v+(r<<2)|0;s=f+q|0;j=m+(s<<1)|0;p=b[j>>1]|0;if((p&20480|0)==4096){c[l+100>>2]=l+(((p&8192|0)!=0?16:(p&255|0)!=0?15:14)<<2)+24;f=(DA(l)|0)!=0;f=f?x:w;k=c[n>>2]|0;c[n>>2]=((k|0)<0?0-f|0:f)+k;b[j>>1]=e[j>>1]|8192;k=c[xa>>2]|0;f=c[ra>>2]|0;l=c[a>>2]|0}q=k+r|0;n=v+(q<<2)|0;r=f+s|0;j=m+(r<<1)|0;p=b[j>>1]|0;if((p&20480|0)==4096){c[l+100>>2]=l+(((p&8192|0)!=0?16:(p&255|0)!=0?15:14)<<2)+24;f=(DA(l)|0)!=0;f=f?x:w;k=c[n>>2]|0;c[n>>2]=((k|0)<0?0-f|0:f)+k;b[j>>1]=e[j>>1]|8192;k=c[xa>>2]|0;f=c[ra>>2]|0;l=c[a>>2]|0}p=v+(k+q<<2)|0;f=m+(f+r<<1)|0;j=b[f>>1]|0;if((j&20480|0)==4096){c[l+100>>2]=l+(((j&8192|0)!=0?16:(j&255|0)!=0?15:14)<<2)+24;H=(DA(l)|0)!=0;H=H?x:w;k=c[p>>2]|0;c[p>>2]=((k|0)<0?0-H|0:H)+k;b[f>>1]=e[f>>1]|8192;k=c[xa>>2]|0}t=t+1|0}while(t>>>0>>0);p=k;f=k;k=c[ya>>2]|0}j=v+(f<<2<<2)|0;m=m+(c[ra>>2]<<2<<1)|0;l=u+4|0;if(l>>>0<(k&-4)>>>0){v=j;u=l}else{t=m;s=l;break}}}else{t=m;s=0}if(!f){H=175;break}else r=0;do{if(s>>>0>>0){m=f;l=j+(r<<2)|0;n=t+(r<<1)|0;q=s;while(1){n=n+(c[ra>>2]<<1)|0;p=c[a>>2]|0;f=b[n>>1]|0;if((f&20480|0)==4096){c[p+100>>2]=p+(((f&8192|0)!=0?16:(f&255|0)!=0?15:14)<<2)+24;k=(DA(p)|0)!=0;k=k?x:w;f=c[l>>2]|0;c[l>>2]=((f|0)<0?0-k|0:k)+f;b[n>>1]=e[n>>1]|8192;f=c[xa>>2]|0;k=c[ya>>2]|0}else f=m;q=q+1|0;if(q>>>0>=k>>>0)break;else{m=f;l=l+(f<<2)|0}}}r=r+1|0}while(r>>>0>>0);H=175}else if((h|0)==2){F=c[a>>2]|0;G=1<>1|G;do if(R){j=c[wa>>2]|0;p=(c[sa>>2]|0)+2|0;f=c[ya>>2]|0;if(f>>>0>3){y=F+92|0;z=F+100|0;A=F+96|0;B=0-G|0;k=c[xa>>2]|0;n=0;while(1){if(!k){m=0;n=n+4|0;k=0}else{s=n|1;t=s+1|0;u=n|3;v=s+3|0;x=n+4|0;w=0;do{k=j+(w<<2)|0;f=c[ra>>2]|0;l=w;w=w+1|0;E=(ea(f,s)|0)+w|0;m=c[sa>>2]|0;c:do if(!(b[m+(E<<1)>>1]&20735)){if(b[m+((ea(f,t)|0)+w<<1)>>1]&20735){H=166;break}if(b[m+((ea(f,u)|0)+w<<1)>>1]&20735){H=166;break}if(b[m+((ea(f,v)|0)+w<<1)>>1]&20735){H=166;break}c[z>>2]=y;if(!(DA(F)|0))break;c[z>>2]=A;k=(DA(F)|0)<<1;k=k|(DA(F)|0);q=k+n|0;if(q>>>0>=x>>>0)break;r=j+((ea(c[xa>>2]|0,k)|0)+l<<2)|0;f=p+((ea(c[ra>>2]|0,k)|0)+l<<1)|0;l=q;while(1){if(l>>>0>=(c[ya>>2]|0)>>>0)break c;k=c[ra>>2]|0;m=f;f=f+(k<<1)|0;if((l|0)==(q|0)){E=c[a>>2]|0;D=(e[f>>1]|0)>>>4&255;c[E+100>>2]=E+(d[263384+D>>0]<<2)+24;E=DA(E)|0;D=d[263128+D>>0]|0;Fa=D^E;c[r>>2]=(E|0)!=(D|0)?B:G;D=c[ra>>2]|0;E=m+(k-D<<1)|0;C=m+(D+k<<1)|0;Ga=m+(k+~D<<1)|0;b[Ga>>1]=e[Ga>>1]|2;b[E>>1]=b[E>>1]|b[263112+(Fa<<1)>>1];E=k+1|0;Ga=m+(E-D<<1)|0;b[Ga>>1]=e[Ga>>1]|4;k=k+-1|0;Ga=m+(k<<1)|0;b[Ga>>1]=b[Ga>>1]|b[263112+(Fa+2<<1)>>1];b[f>>1]=e[f>>1]|4096;Ga=m+(E<<1)|0;b[Ga>>1]=b[Ga>>1]|b[263112+(Fa+4<<1)>>1];k=m+(D+k<<1)|0;b[k>>1]=e[k>>1]|1;b[C>>1]=b[C>>1]|b[263112+(Fa+6<<1)>>1];E=m+(D+E<<1)|0;b[E>>1]=e[E>>1]|8;b[f>>1]=e[f>>1]&49151}else KQ(a,f,r,T,G);l=l+1|0;if(l>>>0>=x>>>0)break;else r=r+(c[xa>>2]<<2)|0}}else H=166;while(0);if((H|0)==166){H=0;Fa=f+l|0;KQ(a,p+(Fa<<1)|0,k,T,G);Ga=(c[xa>>2]|0)+l|0;Fa=(c[ra>>2]|0)+Fa|0;KQ(a,p+(Fa<<1)|0,j+(Ga<<2)|0,T,G);Ga=(c[xa>>2]|0)+Ga|0;Fa=(c[ra>>2]|0)+Fa|0;KQ(a,p+(Fa<<1)|0,j+(Ga<<2)|0,T,G);KQ(a,p+((c[ra>>2]|0)+Fa<<1)|0,j+((c[xa>>2]|0)+Ga<<2)|0,T,G)}k=c[xa>>2]|0}while(w>>>0>>0);m=k<<2;n=x;f=c[ya>>2]|0}j=j+(m<<2)|0;p=p+(c[ra>>2]<<2<<1)|0;if(n>>>0>=(f&-4)>>>0){r=j;q=p;break}}}else{k=c[xa>>2]|0;r=j;q=p;n=0}if(!k)break;else l=0;do{if(n>>>0>>0){j=r+(l<<2)|0;p=q+(l<<1)|0;m=n;while(1){p=p+(c[ra>>2]<<1)|0;KQ(a,p,j,T,G);k=c[xa>>2]|0;m=m+1|0;f=c[ya>>2]|0;if(m>>>0>=f>>>0)break;else j=j+(k<<2)|0}}l=l+1|0}while(l>>>0>>0)}else{k=c[ya>>2]|0;if(!k)break;B=F+92|0;C=F+100|0;D=F+96|0;E=0-G|0;f=c[xa>>2]|0;j=0;do if(!f){j=j+4|0;f=0}else{w=j|3;x=j|1;y=x+1|0;z=x+3|0;A=j+4|0;p=0;while(1){do if(w>>>0>>0){k=c[ra>>2]|0;f=p+1|0;Ga=(ea(k,x)|0)+f|0;m=c[sa>>2]|0;if(b[m+(Ga<<1)>>1]&20735){v=0;k=0;H=133;break}if(b[m+((ea(k,y)|0)+f<<1)>>1]&20735){v=0;k=0;H=133;break}if(b[m+((ea(k,w)|0)+f<<1)>>1]&20735){v=0;k=0;H=133;break}if(b[m+((ea(k,z)|0)+f<<1)>>1]&20665){v=0;k=0;H=133;break}c[C>>2]=B;if(!(DA(F)|0)){p=f;break}c[C>>2]=D;k=(DA(F)|0)<<1;v=1;k=k|(DA(F)|0);H=133}else{v=0;k=0;H=133}while(0);if((H|0)==133){H=0;t=k+j|0;d:do if(t>>>0>>0){u=t;do{k=c[ya>>2]|0;if(u>>>0>=k>>>0)break d;if((u|0)==(w|0))k=1;else k=(u|0)==(k+-1|0);Ga=u;u=u+1|0;m=(ea(c[ra>>2]|0,u)|0)+p|0;l=m+1|0;n=c[sa>>2]|0;q=n+(l<<1)|0;r=(ea(c[xa>>2]|0,Ga)|0)+p|0;r=(c[wa>>2]|0)+(r<<2)|0;s=c[a>>2]|0;f=b[q>>1]|0;f=k?f&-1095:f;do if(!(v&(Ga|0)==(t|0))){if(f&20480)break;k=s+100|0;c[k>>2]=s+(d[264152+(f&255|S)>>0]<<2)+24;if(DA(s)|0)H=141}else{k=s+100|0;H=141}while(0);if((H|0)==141){H=0;Fa=f>>>4&255;c[k>>2]=s+(d[263384+Fa>>0]<<2)+24;Ga=DA(s)|0;Fa=d[263128+Fa>>0]|0;f=Fa^Ga;c[r>>2]=(Ga|0)!=(Fa|0)?E:G;Fa=c[ra>>2]|0;Ga=n+(l-Fa<<1)|0;s=n+(Fa+l<<1)|0;r=n+(l+~Fa<<1)|0;b[r>>1]=e[r>>1]|2;b[Ga>>1]=b[Ga>>1]|b[263112+(f<<1)>>1];Ga=m+2|0;r=n+(Ga-Fa<<1)|0;b[r>>1]=e[r>>1]|4;r=n+(m<<1)|0;b[r>>1]=b[r>>1]|b[263112+(f+2<<1)>>1];b[q>>1]=e[q>>1]|4096;r=n+(Ga<<1)|0;b[r>>1]=b[r>>1]|b[263112+(f+4<<1)>>1];r=n+(Fa+m<<1)|0;b[r>>1]=e[r>>1]|1;b[s>>1]=b[s>>1]|b[263112+(f+6<<1)>>1];Ga=n+(Fa+Ga<<1)|0;b[Ga>>1]=e[Ga>>1]|8}b[q>>1]=e[q>>1]&49151}while(u>>>0>>0)}while(0);p=p+1|0}f=c[xa>>2]|0;k=c[ya>>2]|0;if(p>>>0>=f>>>0){j=A;break}}}while(j>>>0>>0)}while(0);if(N){H=175;break}c[F+100>>2]=F+96;DA(F)|0;DA(F)|0;DA(F)|0;DA(F)|0;H=175}else if(!h){k=o+1|0;if(L){x=1<>1|x;k=c[ya>>2]|0;if(!k)break;w=0-x|0;f=c[xa>>2]|0;v=0;while(1){u=v;v=v+4|0;if(!f)f=0;else{r=(u|0)==-4;s=u|3;t=0;do{e:do if(!r){if(R){n=u;while(1){if(n>>>0>=(c[ya>>2]|0)>>>0)break e;m=n;n=n+1|0;k=(ea(c[ra>>2]|0,n)|0)+t|0;f=k+1|0;j=c[sa>>2]|0;p=j+(f<<1)|0;m=(ea(c[xa>>2]|0,m)|0)+t|0;m=(c[wa>>2]|0)+(m<<2)|0;l=c[ua>>2]|0;Ga=b[p>>1]|0;if((Ga&255|0)!=0&(Ga&20480|0)==0){if(dB(l)|0){G=dB(l)|0;c[m>>2]=(G|0)!=0?w:x;Fa=c[ra>>2]|0;Ga=j+(f-Fa<<1)|0;H=j+(Fa+f<<1)|0;F=j+(f+~Fa<<1)|0;b[F>>1]=e[F>>1]|2;b[Ga>>1]=b[Ga>>1]|b[263112+(G<<1)>>1];Ga=k+2|0;F=j+(Ga-Fa<<1)|0;b[F>>1]=e[F>>1]|4;F=j+(k<<1)|0;b[F>>1]=b[F>>1]|b[263112+(G+2<<1)>>1];b[p>>1]=e[p>>1]|4096;F=j+(Ga<<1)|0;b[F>>1]=b[F>>1]|b[263112+(G+4<<1)>>1];F=j+(Fa+k<<1)|0;b[F>>1]=e[F>>1]|1;b[H>>1]=b[H>>1]|b[263112+(G+6<<1)>>1];Ga=j+(Fa+Ga<<1)|0;b[Ga>>1]=e[Ga>>1]|8}b[p>>1]=e[p>>1]|16384}if(n>>>0>=v>>>0)break e}}else q=u;do{k=c[ya>>2]|0;if(q>>>0>=k>>>0)break e;if((q|0)==(s|0))n=1;else n=(q|0)==(k+-1|0);m=q;q=q+1|0;k=(ea(c[ra>>2]|0,q)|0)+t|0;f=k+1|0;j=c[sa>>2]|0;p=j+(f<<1)|0;m=(ea(c[xa>>2]|0,m)|0)+t|0;m=(c[wa>>2]|0)+(m<<2)|0;l=c[ua>>2]|0;Ga=b[p>>1]|0;Ga=n?Ga&-1095:Ga;if((Ga&255|0)!=0&(Ga&20480|0)==0){if(dB(l)|0){G=dB(l)|0;c[m>>2]=(G|0)!=0?w:x;Fa=c[ra>>2]|0;Ga=j+(f-Fa<<1)|0;H=j+(Fa+f<<1)|0;F=j+(f+~Fa<<1)|0;b[F>>1]=e[F>>1]|2;b[Ga>>1]=b[Ga>>1]|b[263112+(G<<1)>>1];Ga=k+2|0;F=j+(Ga-Fa<<1)|0;b[F>>1]=e[F>>1]|4;F=j+(k<<1)|0;b[F>>1]=b[F>>1]|b[263112+(G+2<<1)>>1];b[p>>1]=e[p>>1]|4096;F=j+(Ga<<1)|0;b[F>>1]=b[F>>1]|b[263112+(G+4<<1)>>1];F=j+(Fa+k<<1)|0;b[F>>1]=e[F>>1]|1;b[H>>1]=b[H>>1]|b[263112+(G+6<<1)>>1];Ga=j+(Fa+Ga<<1)|0;b[Ga>>1]=e[Ga>>1]|8}b[p>>1]=e[p>>1]|16384}}while(q>>>0>>0)}while(0);t=t+1|0;f=c[xa>>2]|0}while(t>>>0>>0);k=c[ya>>2]|0}if(v>>>0>=k>>>0){H=175;break b}}}if(R){j=c[wa>>2]|0;p=(c[sa>>2]|0)+2|0;s=1<>1|s;k=c[ya>>2]|0;f=c[xa>>2]|0;if(k>>>0>3){l=j;m=0;while(1){if(!f){j=0;f=0}else{k=0;do{Ga=(c[ra>>2]|0)+k|0;JQ(a,p+(Ga<<1)|0,l+(k<<2)|0,T,s);f=(c[xa>>2]|0)+k|0;Ga=(c[ra>>2]|0)+Ga|0;JQ(a,p+(Ga<<1)|0,l+(f<<2)|0,T,s);f=(c[xa>>2]|0)+f|0;Ga=(c[ra>>2]|0)+Ga|0;JQ(a,p+(Ga<<1)|0,l+(f<<2)|0,T,s);JQ(a,p+((c[ra>>2]|0)+Ga<<1)|0,l+((c[xa>>2]|0)+f<<2)|0,T,s);k=k+1|0;f=c[xa>>2]|0}while(k>>>0>>0);j=f<<2;k=c[ya>>2]|0}j=l+(j<<2)|0;p=p+(c[ra>>2]<<2<<1)|0;m=m+4|0;if(m>>>0<(k&-4)>>>0)l=j;else{r=p;q=m;break}}}else{r=p;q=0}if(!f){H=175;break}else n=0;while(1){if(q>>>0>>0){p=j+(n<<2)|0;m=r+(n<<1)|0;l=q;while(1){m=m+(c[ra>>2]<<1)|0;JQ(a,m,p,T,s);f=c[xa>>2]|0;l=l+1|0;k=c[ya>>2]|0;if(l>>>0>=k>>>0)break;else p=p+(f<<2)|0}}n=n+1|0;if(n>>>0>=f>>>0){H=175;break b}}}y=1<>1|y;k=c[ya>>2]|0;if(!k){H=175;break}z=0-y|0;f=c[xa>>2]|0;j=f;x=0;do{w=x;x=x+4|0;if(!f)f=0;else{u=(w|0)==-4;v=w|3;t=0;while(1){if(u)k=j;else{s=w;do{k=c[ya>>2]|0;if(s>>>0>=k>>>0)break;if((s|0)==(v|0))k=1;else k=(s|0)==(k+-1|0);q=s;s=s+1|0;p=(ea(c[ra>>2]|0,s)|0)+t|0;m=p+1|0;l=c[sa>>2]|0;n=l+(m<<1)|0;q=(ea(c[xa>>2]|0,q)|0)+t|0;q=(c[wa>>2]|0)+(q<<2)|0;r=c[a>>2]|0;f=b[n>>1]|0;k=k?f&-1095:f;f=k&255;if((f|0)!=0&(k&20480|0)==0){j=r+100|0;c[j>>2]=r+(d[264152+(f|S)>>0]<<2)+24;if(DA(r)|0){Fa=k>>>4&255;c[j>>2]=r+(d[263384+Fa>>0]<<2)+24;Ga=DA(r)|0;Fa=d[263128+Fa>>0]|0;G=Fa^Ga;c[q>>2]=(Ga|0)!=(Fa|0)?z:y;Fa=c[ra>>2]|0;Ga=l+(m-Fa<<1)|0;H=l+(Fa+m<<1)|0;F=l+(m+~Fa<<1)|0;b[F>>1]=e[F>>1]|2;b[Ga>>1]=b[Ga>>1]|b[263112+(G<<1)>>1];Ga=p+2|0;F=l+(Ga-Fa<<1)|0;b[F>>1]=e[F>>1]|4;F=l+(p<<1)|0;b[F>>1]=b[F>>1]|b[263112+(G+2<<1)>>1];b[n>>1]=e[n>>1]|4096;F=l+(Ga<<1)|0;b[F>>1]=b[F>>1]|b[263112+(G+4<<1)>>1];F=l+(Fa+p<<1)|0;b[F>>1]=e[F>>1]|1;b[H>>1]=b[H>>1]|b[263112+(G+6<<1)>>1];Ga=l+(Fa+Ga<<1)|0;b[Ga>>1]=e[Ga>>1]|8}b[n>>1]=e[n>>1]|16384}}while(s>>>0>>0);k=c[xa>>2]|0}t=t+1|0;if(t>>>0>=k>>>0)break;else j=k}j=k;f=k;k=c[ya>>2]|0}}while(x>>>0>>0);H=175}else H=175;while(0);do if((H|0)==175){H=0;if(!J)break;xA(V);yA(V,18,0,46);yA(V,17,0,3);yA(V,0,0,4)}while(0);h=h+1|0;Ga=(h|0)==3;o=(Ga<<31>>31)+o|0;h=Ga?0:h;I=I+1|0}while(I>>>0<(c[K>>2]|0)>>>0)}k=c[Y>>2]|0}M=M+1|0}while(M>>>0>>0)}h=(c[W>>2]|0)-(c[ga>>2]|0)|0;f=(c[Z>>2]|0)-(c[ha>>2]|0)|0;j=c[fa>>2]|0;if(j&1){Ga=c[Ba>>2]|0;h=(c[Ga+(ma*136|0)+8>>2]|0)+h-(c[Ga+(ma*136|0)>>2]|0)|0}if(j&2){Ga=c[Ba>>2]|0;f=(c[Ga+(ma*136|0)+12>>2]|0)+f-(c[Ga+(ma*136|0)+4>>2]|0)|0}q=c[wa>>2]|0;r=c[xa>>2]|0;s=c[ya>>2]|0;j=c[Ca>>2]|0;if((j|0)!=0?(va=1<>2]|0;n=(m|0)>-1?m:0-m|0;if((n|0)>=(va|0)){Ga=n>>c[Ca>>2];c[l>>2]=(m|0)<0?0-Ga|0:Ga}o=o+1|0}while((o|0)!=(r|0))}p=p+1|0}while((p|0)!=(s|0))}m=(ea(f,za)|0)+h|0;n=c[qa>>2]|0;h=(s|0)==0;if((c[ta>>2]|0)==1){if(!h){h=(r|0)==0;l=0;do{if(!h){k=ea(l,r)|0;f=(ea(l,za)|0)+m|0;j=0;do{c[n+(f+j<<2)>>2]=(c[q+(j+k<<2)>>2]|0)/2|0;j=j+1|0}while((j|0)!=(r|0))}l=l+1|0}while((l|0)!=(s|0))}}else if(!h){p=(r|0)==0;h=q;o=0;l=n+(m<<2)|0;while(1){if(!p){f=h;j=0;k=l;while(1){g[k>>2]=+(c[f>>2]|0)*+g[ia>>2];j=j+1|0;if((j|0)==(r|0))break;else{f=f+4|0;k=k+4|0}}h=h+(r<<2)|0}o=o+1|0;if((o|0)==(s|0))break;else l=l+(za<<2)|0}}$=$+1|0}while($>>>0<(ea(c[ba>>2]|0,c[aa>>2]|0)|0)>>>0);j=c[la>>2]|0;h=c[ka>>2]|0}ca=ca+1|0}while(ca>>>0<(ea(j,h)|0)>>>0);f=c[oa>>2]|0}ja=ja+1|0}while(ja>>>0>>0);h=c[Aa>>2]|0}pa=pa+1|0;if(pa>>>0>=h>>>0){h=1;H=213;break}}if((H|0)==213){i=Ea;return h|0}return 0}function iB(f,j,k,l){f=f|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,fa=0.0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0;Xa=i;Ua=j+32|0;h[Ua>>3]=0.0;Va=j+16|0;m=c[Va>>2]|0;if(!m){Wa=1;i=Xa;return Wa|0}Ta=j+20|0;Oa=k+5576|0;Pa=f+8|0;Qa=f+16|0;Ra=f+20|0;Sa=(l|0)==0;Ma=f+32|0;Na=f+12|0;j=m;La=0;a:while(1){k=c[Ta>>2]|0;m=c[Oa>>2]|0;Ja=(c[k+(La*44|0)+8>>2]|0)-(c[k+(La*44|0)>>2]|0)|0;Ka=k+(La*44|0)+16|0;n=c[Ka>>2]|0;if(n){Ia=k+(La*44|0)+24|0;Ga=k+(La*44|0)+32|0;Ha=m+(La*1080|0)+20|0;Ea=m+(La*1080|0)+16|0;Fa=l+(La<<3)|0;j=n;Da=0;do{Ba=c[Ia>>2]|0;Ca=Ba+(Da*136|0)+24|0;n=c[Ca>>2]|0;if(n){xa=Ba+(Da*136|0)+16|0;ya=Ba+(Da*136|0)+20|0;za=~Da;Aa=Da+-1|0;k=c[ya>>2]|0;j=c[xa>>2]|0;wa=0;do{va=Ba+(Da*136|0)+(wa*36|0)+60|0;if(ea(k,j)|0){pa=67108864/(~~+S(+(+g[va>>2]*8192.0))|0)|0;qa=Ba+(Da*136|0)+(wa*36|0)+48|0;ra=Ba+(Da*136|0)+(wa*36|0)+28|0;sa=Ba+(Da*136|0)+(wa*36|0)+32|0;ta=Ba+(Da*136|0)+(wa*36|0)+44|0;ua=((pa|0)<0)<<31>>31;oa=0;do{n=c[qa>>2]|0;ma=n+(oa*40|0)+16|0;na=n+(oa*40|0)+20|0;if(ea(c[na>>2]|0,c[ma>>2]|0)|0){ka=n+(oa*40|0)+24|0;la=0;do{ja=c[ka>>2]|0;m=c[ja+(la*48|0)+12>>2]|0;j=m-(c[ra>>2]|0)|0;o=c[ja+(la*48|0)+16>>2]|0;n=o-(c[sa>>2]|0)|0;k=c[ta>>2]|0;if(k&1){ia=c[Ia>>2]|0;j=(c[ia+(Aa*136|0)+8>>2]|0)+j-(c[ia+(Aa*136|0)>>2]|0)|0}if(k&2){ia=c[Ia>>2]|0;n=(c[ia+(Aa*136|0)+12>>2]|0)+n-(c[ia+(Aa*136|0)+4>>2]|0)|0}if(!(eB(f,(c[ja+(la*48|0)+20>>2]|0)-m|0,(c[ja+(la*48|0)+24>>2]|0)-o|0)|0)){j=0;Wa=169;break a}v=c[Pa>>2]|0;r=c[Qa>>2]|0;s=c[Ra>>2]|0;p=(ea(n,Ja)|0)+j|0;q=c[Ga>>2]|0;j=(s|0)==0;if((c[Ha>>2]|0)==1){if(!j){j=(r|0)==0;o=0;do{if(!j){n=(ea(o,Ja)|0)+p|0;k=ea(o,r)|0;m=0;do{c[v+(m+k<<2)>>2]=c[q+(n+m<<2)>>2]<<6;m=m+1|0}while((m|0)!=(r|0))}o=o+1|0}while((o|0)!=(s|0))}}else if(!j){j=(r|0)==0;o=0;do{if(!j){n=(ea(o,Ja)|0)+p|0;k=ea(o,r)|0;m=0;do{ia=c[q+(n+m<<2)>>2]|0;ia=Tga(ia|0,((ia|0)<0)<<31>>31|0,pa|0,ua|0)|0;ia=Iga(ia&4096|0,0,ia|0,I|0)|0;ia=Lga(ia|0,I|0,13)|0;c[v+(m+k<<2)>>2]=ia>>5;m=m+1|0}while((m|0)!=(r|0))}o=o+1|0}while((o|0)!=(s|0))}ca=c[ta>>2]|0;da=(c[Ka>>2]|0)+za|0;m=c[Ha>>2]|0;fa=+g[va>>2];ga=c[Ea>>2]|0;ia=c[f>>2]|0;n=ea(c[Ra>>2]|0,c[Qa>>2]|0)|0;do if(!n)j=0;else{k=0;j=0;do{ha=c[v+(k<<2)>>2]|0;ha=(ha|0)>-1?ha:0-ha|0;j=(j|0)>(ha|0)?j:ha;k=k+1|0}while((k|0)!=(n|0));if(!j){j=0;break}if((j|0)>1)n=0;else{j=-5;break}while(1){j=j>>1;if((j|0)<=1)break;else n=n+1|0}j=n+-4|0}while(0);ba=ja+(la*48|0)+28|0;c[ba>>2]=j;j=j+-1|0;xA(ia);yA(ia,18,0,46);yA(ia,17,0,3);yA(ia,0,0,4);ha=ja+(la*48|0)|0;rA(ia,c[ha>>2]|0);if((j|0)>-1){$=ja+(la*48|0)+8|0;_=ga&1;aa=_&255;U=(m|0)==1;V=(ga&4|0)==0;T=(_|0)==0;_=(_|0)!=0;W=(ga&2|0)==0;X=(ga&8|0)==0;Y=ca<<8;Z=(ga&32|0)==0;r=0;P=j;Q=0.0;j=0;R=2;while(1){O=c[$>>2]|0;k=(R>>>0<2?(P|0)<((c[ba>>2]|0)+-4|0):0)?aa:0;do if(!R){r=P+6|0;H=1<>2]|0;if(!n){k=0;break}G=k<<24>>24==1;F=r>>>0>6;m=c[Qa>>2]|0;r=m;k=0;E=0;do{D=E;E=E+4|0;if(!r)r=0;else{B=(D|0)==-4;C=D|3;A=0;while(1){if(B)r=m;else{z=D;do{r=c[Ra>>2]|0;if(z>>>0>=r>>>0)break;do if(X)r=0;else{if((z|0)==(C|0)){r=1;break}r=(z|0)==(r+-1|0)}while(0);s=z;z=z+1|0;q=(ea(c[Ma>>2]|0,z)|0)+A|0;v=q+1|0;w=c[Na>>2]|0;y=w+(v<<1)|0;s=(ea(c[Qa>>2]|0,s)|0)+A|0;s=(c[Pa>>2]|0)+(s<<2)|0;x=c[f>>2]|0;p=b[y>>1]|0;p=r?p&-1095:p;r=p&255;if((r|0)!=0&(p&20480|0)==0){n=c[s>>2]|0;n=(((n|0)<0?0-n|0:n)&H|0)!=0;m=n&1;o=x+100|0;c[o>>2]=x+(d[264152+(r|Y)>>0]<<2)+24;if(G)vA(x,m);else sA(x,m);if(n){r=c[s>>2]|0;n=r>>>31;r=(r|0)<0?0-r|0:r;if(F)r=263640+((r>>>P&127)<<1)|0;else r=263896+((r&127)<<1)|0;k=(b[r>>1]|0)+k|0;r=p>>>4&255;c[o>>2]=x+(d[263384+r>>0]<<2)+24;if(G)vA(x,n);else sA(x,d[263128+r>>0]^n);L=c[Ma>>2]|0;N=w+(v-L<<1)|0;K=w+(L+v<<1)|0;J=w+(v+~L<<1)|0;b[J>>1]=e[J>>1]|2;b[N>>1]=b[N>>1]|b[263112+(n<<1)>>1];N=q+2|0;J=w+(N-L<<1)|0;b[J>>1]=e[J>>1]|4;J=w+(q<<1)|0;b[J>>1]=b[J>>1]|b[263112+((n|2)<<1)>>1];b[y>>1]=e[y>>1]|4096;J=w+(N<<1)|0;b[J>>1]=b[J>>1]|b[263112+((n|4)<<1)>>1];J=w+(L+q<<1)|0;b[J>>1]=e[J>>1]|1;b[K>>1]=b[K>>1]|b[263112+((n|6)<<1)>>1];N=w+(L+N<<1)|0;b[N>>1]=e[N>>1]|8}b[y>>1]=e[y>>1]|16384}}while(z>>>0>>0);r=c[Qa>>2]|0}A=A+1|0;if(A>>>0>=r>>>0)break;else m=r}n=c[Ra>>2]|0;m=r}}while(E>>>0>>0)}else if((R|0)==1){r=P+6|0;C=1<>2]|0;if(!n){k=0;break}B=r>>>0>6;A=k<<24>>24==1;m=c[Qa>>2]|0;r=m;k=0;z=0;do{y=z;z=z+4|0;if(!r)r=0;else{w=(y|0)==-4;x=y|3;v=0;while(1){q=v;v=v+1|0;if(w)r=m;else{o=y;do{r=c[Ra>>2]|0;if(o>>>0>=r>>>0)break;do if(X)r=0;else{if((o|0)==(x|0)){r=1;break}r=(o|0)==(r+-1|0)}while(0);n=o;o=o+1|0;s=(ea(c[Ma>>2]|0,o)|0)+v|0;s=(c[Na>>2]|0)+(s<<1)|0;p=c[f>>2]|0;m=b[s>>1]|0;m=r?m&-1095:m;if((m&20480|0)==4096){n=ea(c[Qa>>2]|0,n)|0;n=c[(c[Pa>>2]|0)+(n+q<<2)>>2]|0;n=(n|0)<0?0-n|0:n;if(B)r=265176+((n>>>P&127)<<1)|0;else r=265432+((n&127)<<1)|0;k=(b[r>>1]|0)+k|0;r=(n&C|0)!=0&1;c[p+100>>2]=p+(((m&8192|0)!=0?16:(m&255|0)!=0?15:14)<<2)+24;if(A)vA(p,r);else sA(p,r);b[s>>1]=e[s>>1]|8192}}while(o>>>0>>0);r=c[Qa>>2]|0}if(v>>>0>=r>>>0)break;else m=r}n=c[Ra>>2]|0;m=r}}while(z>>>0>>0)}else if((R|0)==2){J=c[f>>2]|0;r=P+6|0;K=1<>2]|0;if(!n)r=0;else{L=J+92|0;M=J+100|0;N=J+96|0;H=r>>>0>6;m=c[Qa>>2]|0;k=m;r=0;s=0;do if(!k){s=s+4|0;k=0}else{C=s|3;D=s|1;E=D+1|0;F=D+3|0;G=s+4|0;B=0;while(1){do if(C>>>0>>0){n=c[Ma>>2]|0;o=B+1|0;p=(ea(n,D)|0)+o|0;k=c[Na>>2]|0;p=(b[k+(p<<1)>>1]&20735)!=0;if(X){if(p){A=0;n=0;Wa=107;break}if(b[k+((ea(n,E)|0)+o<<1)>>1]&20735){A=0;n=0;Wa=107;break}if(b[k+((ea(n,C)|0)+o<<1)>>1]&20735){A=0;n=0;Wa=107;break}if(b[k+((ea(n,F)|0)+o<<1)>>1]&20735){A=0;n=0;Wa=107;break}}else{if(p){A=0;n=0;Wa=107;break}if(b[k+((ea(n,E)|0)+o<<1)>>1]&20735){A=0;n=0;Wa=107;break}if(b[k+((ea(n,C)|0)+o<<1)>>1]&20735){A=0;n=0;Wa=107;break}if(b[k+((ea(n,F)|0)+o<<1)>>1]&20665){A=0;n=0;Wa=107;break}}k=c[Pa>>2]|0;p=0;while(1){A=c[k+((ea(p+s|0,m)|0)+B<<2)>>2]|0;n=p+1|0;if(((A|0)<0?0-A|0:A)&K){n=p;break}if(n>>>0<4)p=n;else break}c[M>>2]=L;sA(J,(n|0)!=4&1);if((n|0)==4){k=o;break}c[M>>2]=N;sA(J,n>>>1);sA(J,n&1);A=1;Wa=107}else{A=0;n=0;Wa=107}while(0);if((Wa|0)==107){Wa=0;z=n+s|0;b:do if(z>>>0>>0){y=z;do{n=c[Ra>>2]|0;if(y>>>0>=n>>>0)break b;do if(X)n=0;else{if((y|0)==(C|0)){n=1;break}n=(y|0)==(n+-1|0)}while(0);Ya=y;y=y+1|0;o=(ea(c[Ma>>2]|0,y)|0)+B|0;q=o+1|0;v=c[Na>>2]|0;x=v+(q<<1)|0;k=(ea(c[Qa>>2]|0,Ya)|0)+B|0;k=(c[Pa>>2]|0)+(k<<2)|0;w=c[f>>2]|0;m=b[x>>1]|0;p=n?m&-1095:m;do if(!(A&(Ya|0)==(z|0))){if(m&20480)break;c[w+100>>2]=w+(d[264152+(p&255|Y)>>0]<<2)+24;Ya=c[k>>2]|0;Ya=(((Ya|0)<0?0-Ya|0:Ya)&K|0)!=0;sA(w,Ya&1);if(Ya)Wa=115}else Wa=115;while(0);if((Wa|0)==115){Wa=0;k=c[k>>2]|0;n=(k|0)<0?0-k|0:k;if(H)n=263640+((n>>>P&127)<<1)|0;else n=263896+((n&127)<<1)|0;r=(b[n>>1]|0)+r|0;Ya=p>>>4&255;c[w+100>>2]=w+(d[263384+Ya>>0]<<2)+24;m=k>>>31;sA(w,d[263128+Ya>>0]^m);w=c[Ma>>2]|0;Ya=v+(q-w<<1)|0;p=v+(w+q<<1)|0;q=v+(q+~w<<1)|0;b[q>>1]=e[q>>1]|2;b[Ya>>1]=b[Ya>>1]|b[263112+(m<<1)>>1];Ya=o+2|0;q=v+(Ya-w<<1)|0;b[q>>1]=e[q>>1]|4;q=v+(o<<1)|0;b[q>>1]=b[q>>1]|b[263112+((m|2)<<1)>>1];b[x>>1]=e[x>>1]|4096;q=v+(Ya<<1)|0;b[q>>1]=b[q>>1]|b[263112+((m|4)<<1)>>1];q=v+(w+o<<1)|0;b[q>>1]=e[q>>1]|1;b[p>>1]=b[p>>1]|b[263112+((m|6)<<1)>>1];Ya=v+(w+Ya<<1)|0;b[Ya>>1]=e[Ya>>1]|8}b[x>>1]=e[x>>1]&49151}while(y>>>0>>0)}while(0);k=B+1|0}p=c[Qa>>2]|0;n=c[Ra>>2]|0;if(k>>>0

>>0){m=p;B=k}else{s=G;m=p;k=p;break}}}while(s>>>0>>0)}if(Z){k=r;break}BA(ia);k=r}else k=r;while(0);if(Sa)t=1.0;else t=+h[Fa>>3];if(U)u=+Uy(da,ca);else u=+Xy(da,ca);u=+(1<>3]=+h[Ua>>3]+u;do if(V)Wa=133;else{if((R|0)==2&(P|0)<1){Wa=133;break}tA(ia);n=O+(j*24|0)+20|0;r=a[n>>0]|1;a[n>>0]=r;n=1}while(0);do if((Wa|0)==133){r=(c[ba>>2]|0)+-4|0;if((P|0)<(r|0)&(R|0)!=0)if(T)Wa=137;else Wa=136;else if((R|0)!=2|(P|0)!=(r|0)|T)Wa=137;else Wa=136;if((Wa|0)==136){Wa=0;tA(ia);n=O+(j*24|0)+20|0;r=a[n>>0]|1;a[n>>0]=r;n=1;break}else if((Wa|0)==137){Wa=0;n=O+(j*24|0)+20|0;r=a[n>>0]&-2;a[n>>0]=r;n=3;break}}while(0);N=R+1|0;Ya=(N|0)==3;R=Ya?0:N;P=(Ya<<31>>31)+P|0;do if((r&1)!=0&(P|0)>0)if((R>>>0<2?(P|0)<((c[ba>>2]|0)+-4|0):0)&_){uA(ia);break}else{zA(ia);break}while(0);h[O+(j*24|0)+8>>3]=Q;c[O+(j*24|0)>>2]=(qA(ia)|0)+n;if(!W)wA(ia);j=j+1|0;if((P|0)<=-1)break;else r=k}}else j=0;do if(!(ga&16)){if(ga&1)break;tA(ia)}else AA(ia);while(0);q=ja+(la*48|0)+44|0;c[q>>2]=j;if(j){m=ja+(la*48|0)+8|0;p=0;do{o=c[m>>2]|0;n=o+(p*24|0)|0;Ya=c[n>>2]|0;if(Ya>>>0>(qA(ia)|0)>>>0){k=qA(ia)|0;c[n>>2]=k}else k=c[n>>2]|0;do if(k>>>0>1){j=k+-1|0;if((a[(c[ha>>2]|0)+j>>0]|0)!=-1){j=k;break}c[n>>2]=j}else j=k;while(0);if(!p)n=0;else n=c[(c[m>>2]|0)+((p+-1|0)*24|0)>>2]|0;c[o+(p*24|0)+16>>2]=j-n;p=p+1|0}while(p>>>0<(c[q>>2]|0)>>>0)}la=la+1|0}while(la>>>0<(ea(c[na>>2]|0,c[ma>>2]|0)|0)>>>0);k=c[ya>>2]|0;j=c[xa>>2]|0}oa=oa+1|0}while(oa>>>0<(ea(k,j)|0)>>>0);n=c[Ca>>2]|0}wa=wa+1|0}while(wa>>>0>>0);j=c[Ka>>2]|0}Da=Da+1|0}while(Da>>>0>>0);j=c[Va>>2]|0}La=La+1|0;if(La>>>0>=j>>>0){j=1;Wa=169;break}}if((Wa|0)==169){i=Xa;return j|0}return 0}function jB(a,b,e,f,g,h,j,k,l,m,n,o){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+16|0;F=G;c[F>>2]=0;p=c[a>>2]|0;z=c[a+4>>2]|0;a=c[z+68>>2]|0;D=a+(b*5632|0)|0;s=(c[z+72>>2]|0)==3?2:1;q=z+76|0;if(!(c[q>>2]|0))r=1;else r=c[p+16>>2]|0;E=(c[a+(b*5632|0)+420>>2]|0)+1|0;C=YA(p,z,b,o)|0;if(!C){b=0;i=G;return b|0}c[h>>2]=0;a:do if(!o){if(r){a=j;j=0;b:while(1){p=0;l=C;n=0;while(1){ZA(C,z,b,n,j,m,0);o=l+36|0;c:while(1){do if(!($A(l)|0))break c;while((c[o>>2]|0)>>>0>=f>>>0);c[F>>2]=0;if(!(LQ(b,e,D,l,g,F,a,k)|0)){a=12;break b}B=c[F>>2]|0;c[h>>2]=(c[h>>2]|0)+B;a=a-B|0;p=B+p|0;g=g+B|0}B=c[q>>2]|0;if((B|0)!=0&p>>>0>B>>>0){a=15;break b}n=n+1|0;if(n>>>0>=s>>>0)break;else l=l+232|0}j=j+1|0;if(j>>>0>=r>>>0)break a}if((a|0)==12){XA(C,E);b=0;i=G;return b|0}else if((a|0)==15){XA(C,E);b=0;i=G;return b|0}}}else{ZA(C,z,b,n,l,m,o);y=C+(n*232|0)|0;m=C+(n*232|0)+36|0;t=(k|0)==0;u=e+840|0;v=k+12|0;w=k+8|0;x=k+88|0;s=z+89|0;r=a+(b*5632|0)+5628|0;a=j;while(1){do if(!($A(y)|0))break a;while((c[m>>2]|0)>>>0>=f>>>0);c[F>>2]=0;if(!(LQ(b,e,D,y,g,F,a,k)|0))break;q=c[F>>2]|0;g=g+q|0;j=a-q|0;c[h>>2]=(c[h>>2]|0)+q;if(!t){if(!(c[v>>2]|0))a=c[w>>2]|0;else{a=c[x>>2]|0;n=c[w>>2]|0;l=c[a+(b*592|0)+548>>2]|0;p=l+(n<<5)|0;if(!n){a=(c[a+(b*592|0)+12>>2]|0)+1|0;o=((a|0)<0)<<31>>31;c[p>>2]=a;c[p+4>>2]=o;p=a;a=0}else{if((((d[r>>0]|0)>>>1|(d[s>>0]|0)>>>3)&1)!=0?(B=p,A=c[B>>2]|0,B=c[B+4>>2]|0,!((A|0)==0&(B|0)==0)):0){a=A;o=B}else{a=l+(n+-1<<5)+16|0;a=Iga(c[a>>2]|0,c[a+4>>2]|0,1,0)|0;o=I}c[p>>2]=a;c[p+4>>2]=o;p=a;a=n}o=Iga(p|0,o|0,-1,-1)|0;p=I;q=Iga(o|0,p|0,q|0,0)|0;z=l+(n<<5)+16|0;c[z>>2]=q;c[z+4>>2]=I;z=l+(n<<5)+8|0;l=z;l=Iga(o|0,p|0,c[l>>2]|0,c[l+4>>2]|0)|0;c[z>>2]=l;c[z+4>>2]=I}c[w>>2]=a+1}c[u>>2]=(c[u>>2]|0)+1;a=j}XA(C,E);b=0;i=G;return b|0}while(0);XA(C,E);b=1;i=G;return b|0}function kB(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;$=i;i=i+48|0;_=$;U=$+40|0;S=$+28|0;T=$+32|0;R=$+36|0;j=c[a>>2]|0;N=a+4|0;Z=c[N>>2]|0;h=c[Z+68>>2]|0;P=h+(b*5632|0)|0;Q=h+(b*5632|0)+420|0;Y=(c[Q>>2]|0)+1|0;Z=WA(j,Z,b)|0;if(!Z){e=0;i=$;return e|0}O=j+16|0;M=h+(b*5632|0)+12|0;K=d+20|0;J=j+24|0;j=g;a=e;H=Z;I=0;a:while(1){h=c[O>>2]<<2;L=Afa(h)|0;if(!L){aa=4;break}Cga(L|0,1,h|0)|0;if(!($A(H)|0))h=a;else{E=H+24|0;F=H+28|0;D=H+36|0;G=H+32|0;C=a;while(1){if((c[M>>2]|0)>>>0>(c[D>>2]|0)>>>0){a=c[E>>2]|0;h=c[K>>2]|0;if((c[F>>2]|0)>>>0<(c[h+(a*44|0)+20>>2]|0)>>>0){c[L+(a<<2)>>2]=0;B=c[N>>2]|0;c[S>>2]=0;if(!(MQ(B,h,P,H,U,C,S,j)|0)){aa=40;break a}z=c[S>>2]|0;if(!(c[U>>2]|0))h=z;else{A=j-z|0;B=C+z|0;c[S>>2]=0;a=c[F>>2]|0;b=c[(c[K>>2]|0)+((c[E>>2]|0)*44|0)+24>>2]|0;x=b+(a*136|0)+24|0;h=c[x>>2]|0;if(!h)h=B;else{y=C+j|0;d=h;w=0;v=b+(a*136|0)+28|0;h=B;while(1){b=c[G>>2]|0;g=c[v+20>>2]|0;if(((c[v+8>>2]|0)!=(c[v>>2]|0)?(c[v+12>>2]|0)!=(c[v+4>>2]|0):0)?(X=ea(c[g+(b*40|0)+20>>2]|0,c[g+(b*40|0)+16>>2]|0)|0,(X|0)!=0):0){a=0;u=c[g+(b*40|0)+24>>2]|0;l=h;while(1){s=u+40|0;if(!(c[s>>2]|0))h=l;else{t=u+44|0;h=c[t>>2]|0;do if(!h){g=c[u+4>>2]|0;c[t>>2]=1;c[u+36>>2]=0}else{b=h+-1|0;g=c[u+4>>2]|0;if((c[g+(b<<5)+8>>2]|0)!=(c[g+(b<<5)+20>>2]|0)){g=g+(b<<5)|0;break}c[t>>2]=h+1;g=g+(h<<5)|0}while(0);p=u+36|0;r=u+32|0;b=g+28|0;h=c[b>>2]|0;if((l+h|0)>>>0>y>>>0){aa=25;break a}k=c[p>>2]|0;o=l;n=g;while(1){g=h+k|0;d=c[u>>2]|0;if(g>>>0>(c[r>>2]|0)>>>0){h=Dfa(d,g)|0;if(!h){aa=28;break a}g=c[p>>2]|0;k=c[b>>2]|0;c[r>>2]=k+g;c[u>>2]=h;d=h;h=k}else g=k;Aga(d+g|0,o|0,h|0)|0;h=n+8|0;g=c[h>>2]|0;if(!g){c[n>>2]=u;d=c[p>>2]|0;c[n+4>>2]=d}else d=c[p>>2]|0;l=c[b>>2]|0;m=o;o=o+l|0;b=c[n+24>>2]|0;k=b+g|0;c[h>>2]=k;g=c[s>>2]|0;c[s>>2]=g-b;c[n+12>>2]=k;k=l+d|0;c[p>>2]=k;d=n+16|0;c[d>>2]=(c[d>>2]|0)+l;if((g|0)==(b|0))break;c[t>>2]=(c[t>>2]|0)+1;b=n+60|0;h=c[b>>2]|0;if((m+(h+l)|0)>>>0>y>>>0){aa=25;break a}else n=n+32|0}c[u+48>>2]=c[t>>2];h=o}a=a+1|0;if(a>>>0>>0){u=u+56|0;l=h}else break}b=c[x>>2]|0}else b=d;a=w+1|0;if(a>>>0>>0){d=b;w=a;v=v+36|0}else break}}h=h-B|0;c[S>>2]=h;h=h+z|0}A=c[F>>2]|0;a=(c[J>>2]|0)+((c[E>>2]|0)*52|0)+36|0;B=c[a>>2]|0;c[a>>2]=A>>>0>B>>>0?A:B;a=h}else aa=42}else{h=c[K>>2]|0;aa=42}if((aa|0)==42){aa=0;B=c[N>>2]|0;c[R>>2]=0;if(!(MQ(B,h,P,H,T,C,R,j)|0)){aa=63;break a}a=c[R>>2]|0;if(c[T>>2]|0){r=j-a|0;s=c[F>>2]|0;t=c[E>>2]|0;h=c[(c[K>>2]|0)+(t*44|0)+24>>2]|0;c[R>>2]=0;o=c[h+(s*136|0)+24>>2]|0;if(!o)h=0;else{u=c[G>>2]|0;p=0;n=h+(s*136|0)+28|0;while(1){h=c[n+20>>2]|0;if(((c[n+8>>2]|0)!=(c[n>>2]|0)?(c[n+12>>2]|0)!=(c[n+4>>2]|0):0)?(V=ea(c[h+(u*40|0)+20>>2]|0,c[h+(u*40|0)+16>>2]|0)|0,(V|0)!=0):0){m=0;l=c[h+(u*40|0)+24>>2]|0;while(1){d=l+40|0;b:do if(c[d>>2]|0){k=l+44|0;h=c[k>>2]|0;do if(!h){g=c[l+4>>2]|0;c[k>>2]=1;c[l+36>>2]=0}else{b=h+-1|0;g=c[l+4>>2]|0;if((c[g+(b<<5)+8>>2]|0)!=(c[g+(b<<5)+20>>2]|0)){g=g+(b<<5)|0;break}c[k>>2]=h+1;g=g+(h<<5)|0}while(0);h=c[g+28>>2]|0;b=h+(c[R>>2]|0)|0;if(b>>>0>r>>>0){aa=60;break a}while(1){c[R>>2]=b;B=c[g+24>>2]|0;A=g+8|0;c[A>>2]=(c[A>>2]|0)+B;A=c[d>>2]|0;c[d>>2]=A-B;if((A|0)==(B|0))break b;c[k>>2]=(c[k>>2]|0)+1;h=c[g+60>>2]|0;b=h+(c[R>>2]|0)|0;if(b>>>0>r>>>0){aa=60;break a}else g=g+32|0}}while(0);h=m+1|0;if(h>>>0>>0){m=h;l=l+56|0}else break}}h=p+1|0;if(h>>>0>>0){p=h;n=n+36|0}else break}h=c[R>>2]|0}a=h+a|0}}h=c[E>>2]|0;if((c[L+(h<<2)>>2]|0)!=0?(W=(c[J>>2]|0)+(h*52|0)+36|0,(c[W>>2]|0)==0):0)c[W>>2]=(c[(c[K>>2]|0)+(h*44|0)+20>>2]|0)+-1;h=C+a|0;j=j-a|0;if(!($A(H)|0))break;else C=h}}Bfa(L);I=I+1|0;if(I>>>0>(c[Q>>2]|0)>>>0){aa=69;break}else{a=h;H=H+232|0}}if((aa|0)==4){XA(Z,Y);e=0;i=$;return e|0}else if((aa|0)==25){e=c[q>>2]|0;W=c[G>>2]|0;X=c[F>>2]|0;f=c[E>>2]|0;c[_>>2]=h;c[_+4>>2]=A;c[_+8>>2]=a;c[_+12>>2]=W;c[_+16>>2]=w;c[_+20>>2]=X;c[_+24>>2]=f;_c(e|0,265952,_|0)|0;aa=40}else if((aa|0)==28){Bfa(c[u>>2]|0);c[r>>2]=0;aa=40}else if((aa|0)==60){e=c[q>>2]|0;c[_>>2]=h;c[_+4>>2]=r;c[_+8>>2]=m;c[_+12>>2]=u;c[_+16>>2]=p;c[_+20>>2]=s;c[_+24>>2]=t;_c(e|0,265688,_|0)|0;aa=63}else if((aa|0)==69){XA(Z,Y);c[f>>2]=h-e;e=1;i=$;return e|0}if((aa|0)==40){XA(Z,Y);Bfa(L);e=0;i=$;return e|0}else if((aa|0)==63){XA(Z,Y);Bfa(L);e=0;i=$;return e|0}return 0}function lB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;d=Afa(8)|0;if(!d){a=0;i=e;return a|0}f=d;c[f>>2]=0;c[f+4>>2]=0;c[d>>2]=a;c[d+4>>2]=b;a=d;i=e;return a|0}function mB(a){a=a|0;var b=0;b=i;if(a)Bfa(a);i=b;return}function nB(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;f=Afa(44)|0;if(!f){e=0;i=g;return e|0}d=f+0|0;e=d+44|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a[f+40>>0]=(b|0)!=0&1;b=Afa(4)|0;c[f+20>>2]=b;if(!b){Bfa(f);e=0;i=g;return e|0}else{c[b>>2]=0;e=f;i=g;return e|0}return 0}function oB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=i;i=i+1200|0;P=Q;e=c[c[a+20>>2]>>2]|0;O=c[e+16>>2]|0;if(!O){i=Q;return}L=(c[a+28>>2]|0)+84|0;M=a+24|0;N=(b|0)==0;J=(d|0)==0;K=b+-1|0;I=c[e+20>>2]|0;G=c[(c[a+32>>2]|0)+8>>2]|0;d=G;H=0;do{F=c[I+(H*44|0)+16>>2]|0;if(d)if(!F)d=G;else{a=0;do{d=ea(F,a)|0;e=c[L>>2]|0;f=+((c[(c[(c[M>>2]|0)+24>>2]|0)+(H*52|0)+24>>2]|0)>>>0)*.0625;g=0;do{E=(d+g|0)*3|0;c[P+(a*120|0)+(g*12|0)>>2]=~~(+(c[e+(E<<2)>>2]|0)*f);c[P+(a*120|0)+(g*12|0)+4>>2]=~~(+(c[e+(E+1<<2)>>2]|0)*f);c[P+(a*120|0)+(g*12|0)+8>>2]=~~(+(c[e+(E+2<<2)>>2]|0)*f);g=g+1|0}while(g>>>0>>0);a=a+1|0}while(a>>>0>>0);d=G;E=8}else{d=0;E=8}if((E|0)==8){E=0;if(F){m=c[I+(H*44|0)+24>>2]|0;D=0;do{r=c[m+(D*136|0)+24>>2]|0;if(r){n=c[m+(D*136|0)+16>>2]|0;o=c[m+(D*136|0)+20>>2]|0;A=0;do{s=ea(o,n)|0;if(s){t=P+(b*120|0)+(D*12|0)+(A<<2)|0;u=P+(K*120|0)+(D*12|0)+(A<<2)|0;p=c[m+(D*136|0)+(A*36|0)+48>>2]|0;C=0;do{v=ea(c[p+(C*40|0)+20>>2]|0,c[p+(C*40|0)+16>>2]|0)|0;if(v){w=p+(C*40|0)+24|0;x=c[t>>2]|0;q=c[(c[(c[M>>2]|0)+24>>2]|0)+(H*52|0)+24>>2]|0;B=0;do{l=c[w>>2]|0;y=l+(B*48|0)|0;z=c[l+(B*48|0)+4>>2]|0;e=q-(c[l+(B*48|0)+28>>2]|0)|0;if(!N){a=c[u>>2]|0;g=x-a|0;if((a|0)<=(e|0)){g=g+(a-e)|0;g=(g|0)<0?0:g}}else{c[l+(B*48|0)+40>>2]=0;g=(x|0)>(e|0)?x-e|0:0}h=l+(B*48|0)+40|0;j=c[h>>2]|0;k=(j|0)==0;if(k)if(!g)g=0;else g=(g*3|0)+-2|0;else g=(g*3|0)+j|0;c[z+(b*24|0)>>2]=g-j;do if((g|0)!=(j|0)){e=c[l+(B*48|0)+8>>2]|0;a=c[e+((g+-1|0)*24|0)>>2]|0;if(k){c[z+(b*24|0)+4>>2]=a;c[z+(b*24|0)+16>>2]=c[y>>2]}else{j=c[e+((j+-1|0)*24|0)>>2]|0;c[z+(b*24|0)+4>>2]=a-j;c[z+(b*24|0)+16>>2]=(c[y>>2]|0)+j}if(J)break;c[h>>2]=g}while(0);B=B+1|0}while(B>>>0>>0)}C=C+1|0}while(C>>>0>>0)}A=A+1|0}while(A>>>0>>0)}D=D+1|0}while(D>>>0>>0)}}H=H+1|0}while(H>>>0>>0);i=Q;return}function pB(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0,g=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=i;a=c[c[a+20>>2]>>2]|0;I=a+(b<<3)+40|0;h[I>>3]=0.0;J=a+16|0;f=c[J>>2]|0;if(!f){i=L;return}G=a+20|0;H=(b|0)==0;F=(e|0)==0;a=f;E=0;do{f=c[G>>2]|0;D=c[f+(E*44|0)+16>>2]|0;if(D){r=c[f+(E*44|0)+24>>2]|0;C=0;do{v=c[r+(C*136|0)+24>>2]|0;if(v){s=c[r+(C*136|0)+16>>2]|0;t=c[r+(C*136|0)+20>>2]|0;z=0;do{w=ea(t,s)|0;if(w){u=c[r+(C*136|0)+(z*36|0)+48>>2]|0;B=0;do{x=ea(c[u+(B*40|0)+20>>2]|0,c[u+(B*40|0)+16>>2]|0)|0;if(x){y=u+(B*40|0)+24|0;A=0;do{m=c[y>>2]|0;o=m+(A*48|0)|0;p=c[m+(A*48|0)+4>>2]|0;a=m+(A*48|0)+40|0;if(H){c[a>>2]=0;n=0}else n=c[a>>2]|0;q=m+(A*48|0)+40|0;e=c[m+(A*48|0)+44>>2]|0;if(n>>>0>>0){j=c[m+(A*48|0)+8>>2]|0;f=n;l=n;while(1){a=c[j+(l*24|0)>>2]|0;if(!f)g=+h[j+(l*24|0)+8>>3];else{k=f+-1|0;g=+h[j+(l*24|0)+8>>3]-+h[j+(k*24|0)+8>>3];a=a-(c[j+(k*24|0)>>2]|0)|0}do if(!a){if(!(g!=0.0)){k=f;break}k=l+1|0}else{if(!(g/+(a>>>0)>=d)){k=f;break}k=l+1|0}while(0);l=l+1|0;if(l>>>0>=e>>>0)break;else f=k}c[p+(b*24|0)>>2]=k-n;if((k|0)!=(n|0)){e=k+-1|0;a=c[m+(A*48|0)+8>>2]|0;f=c[a+(e*24|0)>>2]|0;if(!n){c[p+(b*24|0)+4>>2]=f;c[p+(b*24|0)+16>>2]=c[o>>2];g=+h[a+(e*24|0)+8>>3];h[p+(b*24|0)+8>>3]=g}else{l=n+-1|0;j=c[a+(l*24|0)>>2]|0;c[p+(b*24|0)+4>>2]=f-j;c[p+(b*24|0)+16>>2]=(c[o>>2]|0)+j;g=+h[a+(e*24|0)+8>>3]-+h[a+(l*24|0)+8>>3];h[p+(b*24|0)+8>>3]=g}h[I>>3]=g+ +h[I>>3];if(!F)c[q>>2]=k}else K=27}else{c[p+(b*24|0)>>2]=0;K=27}if((K|0)==27){K=0;h[p+(b*24|0)+8>>3]=0.0}A=A+1|0}while(A>>>0>>0)}B=B+1|0}while(B>>>0>>0)}z=z+1|0}while(z>>>0>>0)}C=C+1|0}while(C>>>0>>0);a=c[J>>2]|0}E=E+1|0}while(E>>>0>>0);i=L;return}function qB(b,d,e,f,j){b=b|0;d=d|0;e=e|0;f=f|0;j=j|0;var k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,W=0;U=i;i=i+800|0;T=U;Q=c[b+28>>2]|0;R=c[c[b+20>>2]>>2]|0;S=c[b+32>>2]|0;N=R+24|0;c[N>>2]=0;O=c[R+16>>2]|0;if(!O){k=0;n=0.0;m=0.0;J=17976931348623157.0e292}else{L=c[R+20>>2]|0;M=c[(c[b+24>>2]|0)+24>>2]|0;k=0;P=0;n=0.0;m=0.0;o=17976931348623157.0e292;do{H=L+(P*44|0)+40|0;c[H>>2]=0;I=c[L+(P*44|0)+16>>2]|0;if(!I)l=0;else{K=c[L+(P*44|0)+24>>2]|0;l=0;G=0;do{D=c[K+(G*136|0)+24>>2]|0;if(D){E=ea(c[K+(G*136|0)+20>>2]|0,c[K+(G*136|0)+16>>2]|0)|0;F=(E|0)==0;C=0;do{if(!F){B=c[K+(G*136|0)+(C*36|0)+48>>2]|0;A=0;do{y=ea(c[B+(A*40|0)+20>>2]|0,c[B+(A*40|0)+16>>2]|0)|0;if(y){z=c[B+(A*40|0)+24>>2]|0;x=0;do{u=c[z+(x*48|0)+44>>2]|0;if(u){v=c[z+(x*48|0)+8>>2]|0;p=n;t=0;while(1){s=c[v+(t*24|0)>>2]|0;if(!t)r=+h[v+8>>3];else{W=t+-1|0;r=+h[v+(t*24|0)+8>>3]-+h[v+(W*24|0)+8>>3];s=s-(c[v+(W*24|0)>>2]|0)|0}do if(!s)n=p;else{n=r/+(s|0);o=np)){n=p;break}}while(0);t=t+1|0;if(t>>>0>=u>>>0)break;else p=n}}W=ea((c[z+(x*48|0)+24>>2]|0)-(c[z+(x*48|0)+16>>2]|0)|0,(c[z+(x*48|0)+20>>2]|0)-(c[z+(x*48|0)+12>>2]|0)|0)|0;k=W+k|0;l=W+l|0;x=x+1|0}while(x>>>0>>0);c[N>>2]=k;c[H>>2]=l}A=A+1|0}while(A>>>0>>0)}C=C+1|0}while(C>>>0>>0)}G=G+1|0}while(G>>>0>>0)}w=+(1<>2]|0)+-1.0;m=m+ +(l|0)*(w*w);P=P+1|0}while(P>>>0>>0);J=o}I=(j|0)!=0;if(I){W=c[b+36>>2]|0;P=c[j+88>>2]|0;c[P+(W*592|0)+552>>2]=k;h[P+(W*592|0)+560>>3]=+h[R+32>>3];y=S+8|0;c[P+(W*592|0)>>2]=Afa(c[y>>2]<<3)|0}else y=S+8|0;if(!(c[y>>2]|0)){W=1;i=U;return W|0}x=R+32|0;z=Q+89|0;A=b+36|0;B=j+88|0;C=R+40|0;D=b+24|0;E=b+8|0;F=b+16|0;G=Q+72|0;H=0;while(1){o=+g[S+(H<<2)+20>>2];if(o!=0.0){u=~~+da(+o)>>>0;u=u>>>0>>0?u:f}else u=f;q=+g[S+(H<<2)+5176>>2];w=+h[x>>3]-m/+V(10.0,+(q/10.0));W=a[z>>0]|0;if(!((W&1)!=0&o>0.0)?!((W&4)!=0&q>0.0):0)o=J;else{v=lB(c[D>>2]|0,Q)|0;if(!v){k=0;l=58;break}t=H+1|0;k=T+(H+-1<<3)|0;l=R+(H<<3)+40|0;if(!H){q=n;k=0;r=J;p=0.0;do{o=(r+q)*.5;pB(b,0,o,0);do if(a[z>>0]&4){if(!(c[G>>2]|0)){W=+h[C>>3]>2]|0,R,t,d,e,u,j,c[E>>2]|0,c[b>>2]|0,c[F>>2]|0,0)|0))r=o;else{W=+h[C>>3]>2]|0,R,t,d,e,u,j,c[E>>2]|0,c[b>>2]|0,c[F>>2]|0,0)|0)==0;q=W?q:o;r=W?o:r;p=W?p:o}while(0);k=k+1|0}while((k|0)!=128)}else{r=n;s=0;q=J;p=0.0;do{o=(q+r)*.5;pB(b,H,o,0);do if(a[z>>0]&4){if(!(c[G>>2]|0)){W=+h[k>>3]+ +h[l>>3]>2]|0,R,t,d,e,u,j,c[E>>2]|0,c[b>>2]|0,c[F>>2]|0,0)|0))q=o;else{W=+h[k>>3]+ +h[l>>3]>2]|0,R,t,d,e,u,j,c[E>>2]|0,c[b>>2]|0,c[F>>2]|0,0)|0)==0;r=W?r:o;q=W?o:q;p=W?p:o}while(0);s=s+1|0}while((s|0)!=128)}mB(v);o=p==0.0?o:p}if(I)h[(c[(c[B>>2]|0)+((c[A>>2]|0)*592|0)>>2]|0)+(H<<3)>>3]=o;pB(b,H,o,1);if(!H)o=+h[C>>3];else o=+h[T+(H+-1<<3)>>3]+ +h[R+(H<<3)+40>>3];h[T+(H<<3)>>3]=o;H=H+1|0;if(H>>>0>=(c[y>>2]|0)>>>0){k=1;l=58;break}}if((l|0)==58){i=U;return k|0}return 0}function rB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;c[a+24>>2]=b;c[a+28>>2]=d;e=Afa(848)|0;g=c[a+20>>2]|0;c[g>>2]=e;if(!e){a=0;i=h;return a|0}Cga(e|0,0,848)|0;e=c[b+16>>2]|0;b=e*44|0;f=Afa(b)|0;c[(c[g>>2]|0)+20>>2]=f;if(!f){a=0;i=h;return a|0}Cga(f|0,0,b|0)|0;c[(c[g>>2]|0)+16>>2]=e;c[a>>2]=c[d+80>>2];a=1;i=h;return a|0}function sB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;if(!b){i=s;return}q=b+20|0;d=c[q>>2]|0;do if(d){r=(a[b+40>>0]&1)==0?245:244;e=c[d>>2]|0;if(e){p=e+20|0;m=e+16|0;if(c[m>>2]|0){n=0;o=c[p>>2]|0;while(1){l=o+24|0;d=c[l>>2]|0;if(d){h=c[o+28>>2]|0;k=(h>>>0)/136|0;if(h>>>0>135){j=0;while(1){h=d+48|0;e=c[h>>2]|0;if(e){f=c[d+52>>2]|0;g=(f>>>0)/40|0;if(f>>>0>39){f=0;while(1){t=e+32|0;EB(c[t>>2]|0);c[t>>2]=0;t=e+36|0;EB(c[t>>2]|0);c[t>>2]=0;Id[r&511](e);f=f+1|0;if(f>>>0>=g>>>0)break;else e=e+40|0}e=c[h>>2]|0}Bfa(e);c[h>>2]=0}h=d+84|0;e=c[h>>2]|0;if(e){t=c[d+88>>2]|0;g=(t>>>0)/40|0;if(t>>>0>39){f=0;while(1){t=e+32|0;EB(c[t>>2]|0);c[t>>2]=0;t=e+36|0;EB(c[t>>2]|0);c[t>>2]=0;Id[r&511](e);f=f+1|0;if(f>>>0>=g>>>0)break;else e=e+40|0}e=c[h>>2]|0}Bfa(e);c[h>>2]=0}h=d+120|0;e=c[h>>2]|0;if(e){t=c[d+124>>2]|0;g=(t>>>0)/40|0;if(t>>>0>39){f=0;while(1){t=e+32|0;EB(c[t>>2]|0);c[t>>2]=0;t=e+36|0;EB(c[t>>2]|0);c[t>>2]=0;Id[r&511](e);f=f+1|0;if(f>>>0>=g>>>0)break;else e=e+40|0}e=c[h>>2]|0}Bfa(e);c[h>>2]=0}j=j+1|0;if(j>>>0>=k>>>0)break;else d=d+136|0}d=c[l>>2]|0}Bfa(d);c[l>>2]=0}d=o+32|0;e=c[d>>2]|0;if(e){Bfa(e);c[d>>2]=0}n=n+1|0;if(n>>>0>=(c[m>>2]|0)>>>0)break;else o=o+44|0}}Bfa(c[p>>2]|0);c[p>>2]=0;Bfa(c[c[q>>2]>>2]|0);d=c[q>>2]|0;c[d>>2]=0;if(!d)break}Bfa(d)}while(0);Bfa(b);i=s;return}function tB(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0.0,ya=0;wa=i;e=c[b+28>>2]|0;va=c[c[b+20>>2]>>2]|0;f=c[(c[e+68>>2]|0)+(d*5632|0)+5576>>2]|0;h=c[va+20>>2]|0;ua=c[b+24>>2]|0;b=c[ua+24>>2]|0;sa=c[e+24>>2]|0;la=(d>>>0)%(sa>>>0)|0;sa=(d>>>0)/(sa>>>0)|0;aa=c[e+4>>2]|0;ra=c[e+12>>2]|0;oa=(ea(ra,la)|0)+aa|0;ta=c[ua>>2]|0;c[va>>2]=(oa|0)>(ta|0)?oa:ta;ta=c[e+8>>2]|0;oa=c[e+16>>2]|0;Z=(ea(oa,sa)|0)+ta|0;$=c[ua+4>>2]|0;qa=va+4|0;c[qa>>2]=(Z|0)>($|0)?Z:$;aa=(ea(ra,la+1|0)|0)+aa|0;la=c[ua+8>>2]|0;ra=va+8|0;c[ra>>2]=(aa|0)<(la|0)?aa:la;ta=(ea(oa,sa+1|0)|0)+ta|0;ua=c[ua+12>>2]|0;sa=va+12|0;c[sa>>2]=(ta|0)<(ua|0)?ta:ua;if(!(c[f+4>>2]|0)){$b(266040,38,1,c[q>>2]|0)|0;va=0;i=wa;return va|0}ta=va+16|0;if(!(c[ta>>2]|0)){va=1;i=wa;return va|0}oa=e+72|0;ua=c[q>>2]|0;pa=0;a:while(1){d=c[b>>2]|0;if(!d){d=6;break}e=d+-1|0;k=(e+(c[va>>2]|0)|0)/(d|0)|0;c[h>>2]=k;j=c[b+4>>2]|0;if(!j){d=8;break}la=j+-1|0;ka=(la+(c[qa>>2]|0)|0)/(j|0)|0;na=h+4|0;c[na>>2]=ka;e=(e+(c[ra>>2]|0)|0)/(d|0)|0;ma=h+8|0;c[ma>>2]=e;d=(la+(c[sa>>2]|0)|0)/(j|0)|0;la=h+12|0;c[la>>2]=d;k=ea(e-k<<2,d-ka|0)|0;d=c[f+4>>2]|0;ka=h+16|0;c[ka>>2]=d;e=c[oa>>2]|0;if(d>>>0>>0)c[h+20>>2]=1;else c[h+20>>2]=d-e;j=h+32|0;d=c[j>>2]|0;if(d){e=h+36|0;if(k>>>0>(c[e>>2]|0)>>>0){d=Dfa(d,k)|0;$b(266080,38,1,ua|0)|0;if(!d){d=17;break}c[j>>2]=d;c[e>>2]=k}}else{aa=Afa(k)|0;c[j>>2]=aa;if(!aa){b=0;d=77;break}c[h+36>>2]=k}e=(c[ka>>2]|0)*136|0;k=h+24|0;d=c[k>>2]|0;if(d){j=h+28|0;if(e>>>0>(c[j>>2]|0)>>>0){d=Dfa(d,e)|0;if(!d){d=24;break}c[k>>2]=d;aa=c[j>>2]|0;Cga(d+aa|0,0,e-aa|0)|0;c[j>>2]=e}}else{d=Afa(e)|0;c[k>>2]=d;if(!d){b=0;d=77;break}c[h+28>>2]=e;Cga(d|0,0,e|0)|0}d=c[ka>>2]|0;ja=(c[f+20>>2]|0)==0?151:150;if(d){fa=f+8|0;ga=f+12|0;ha=b+24|0;ia=f+804|0;ca=c[k>>2]|0;s=f+28|0;da=0;while(1){ba=d;d=d+-1|0;Z=c[h>>2]|0;$=1<>31|0,-1,-1)|0;aa=I;Z=Iga($|0,aa|0,Z|0,((Z|0)<0)<<31>>31|0)|0;Z=zga(Z|0,I|0,d|0)|0;c[ca>>2]=Z;j=c[na>>2]|0;j=Iga($|0,aa|0,j|0,((j|0)<0)<<31>>31|0)|0;j=zga(j|0,I|0,d|0)|0;c[ca+4>>2]=j;e=c[ma>>2]|0;e=Iga($|0,aa|0,e|0,((e|0)<0)<<31>>31|0)|0;e=zga(e|0,I|0,d|0)|0;c[ca+8>>2]=e;k=c[la>>2]|0;k=Iga($|0,aa|0,k|0,((k|0)<0)<<31>>31|0)|0;k=zga(k|0,I|0,d|0)|0;c[ca+12>>2]=k;o=c[f+(da<<2)+812>>2]|0;n=c[f+(da<<2)+944>>2]|0;p=Z>>o<>n<>31|0,-1,-1)|0;l=Iga(l|0,I|0,k|0,((k|0)<0)<<31>>31|0)|0;l=zga(l|0,I|0,n|0)|0;if((Z|0)==(e|0))m=0;else{m=1<>31|0,-1,-1)|0;m=Iga(m|0,I|0,e|0,((e|0)<0)<<31>>31|0)|0;m=zga(m|0,I|0,o|0)|0;m=(m<>o}_=ca+16|0;c[_>>2]=m;if((j|0)==(k|0))e=0;else e=(l<>n;c[ca+20>>2]=e;X=ea(m,e)|0;Y=X*40|0;Z=(da|0)==0;if(Z)c[ca+24>>2]=1;else{p=Iga(p|0,((p|0)<0)<<31>>31|0,1,0)|0;p=Lga(p|0,I|0,1)|0;r=Iga(r|0,((r|0)<0)<<31>>31|0,1,0)|0;r=Lga(r|0,I|0,1)|0;c[ca+24>>2]=3;n=n+-1|0;o=o+-1|0}G=c[fa>>2]|0;G=G>>>0>>0?G:o;H=c[ga>>2]|0;H=H>>>0>>0?H:n;J=ca+24|0;K=(X|0)==0;L=1<>31|0,-1,-1)|0;P=I;Q=1<>31|0,-1,-1)|0;S=I;T=1<>31|0,-1,-1)|0;U=I;V=0;W=ca+28|0;while(1){if(Z){c[W+16>>2]=0;l=c[h>>2]|0;l=Iga($|0,aa|0,l|0,((l|0)<0)<<31>>31|0)|0;l=zga(l|0,I|0,d|0)|0;c[W>>2]=l;l=c[na>>2]|0;l=Iga($|0,aa|0,l|0,((l|0)<0)<<31>>31|0)|0;l=zga(l|0,I|0,d|0)|0;c[W+4>>2]=l;l=c[ma>>2]|0;l=Iga($|0,aa|0,l|0,((l|0)<0)<<31>>31|0)|0;l=zga(l|0,I|0,d|0)|0;c[W+8>>2]=l;l=c[la>>2]|0;l=Iga($|0,aa|0,l|0,((l|0)<0)<<31>>31|0)|0;l=zga(l|0,I|0,d|0)|0;c[W+12>>2]=l;l=0}else{l=V+1|0;c[W+16>>2]=l;E=(l&1)<>2]|0)-E|0;F=Iga(T|0,U|0,F|0,((F|0)<0)<<31>>31|0)|0;F=zga(F|0,I|0,ba|0)|0;c[W>>2]=F;F=l>>>1<>2]|0)-F|0;D=Iga(T|0,U|0,D|0,((D|0)<0)<<31>>31|0)|0;D=zga(D|0,I|0,ba|0)|0;c[W+4>>2]=D;E=(c[ma>>2]|0)-E|0;E=Iga(T|0,U|0,E|0,((E|0)<0)<<31>>31|0)|0;E=zga(E|0,I|0,ba|0)|0;c[W+8>>2]=E;F=(c[la>>2]|0)-F|0;F=Iga(T|0,U|0,F|0,((F|0)<0)<<31>>31|0)|0;F=zga(F|0,I|0,ba|0)|0;c[W+12>>2]=F}m=Ld[ja&511](l)|0;xa=+(c[s+4>>2]|0)*.00048828125+1.0;g[W+32>>2]=+Oda(1.0,(c[ha>>2]|0)+m-(c[s>>2]|0)|0)*xa;c[W+28>>2]=(c[s>>2]|0)+-1+(c[ia>>2]|0);m=W+20|0;l=c[m>>2]|0;if(l){e=W+24|0;if((c[e>>2]|0)>>>0>>0){l=Dfa(l,Y)|0;if(!l){d=44;break a}c[m>>2]=l;F=c[e>>2]|0;Cga(l+F|0,0,Y-F|0)|0;c[e>>2]=Y}}else{l=Afa(Y)|0;c[m>>2]=l;if(!l){b=0;d=77;break a}Cga(l|0,0,Y|0)|0;c[W+24>>2]=Y}if(!K){D=W+4|0;E=W+8|0;F=W+12|0;B=c[m>>2]|0;C=0;while(1){u=c[_>>2]|0;y=(((C>>>0)%(u>>>0)|0)<>>0)/(u>>>0)|0)<>2]|0;x=(y|0)>(x|0)?y:x;c[B>>2]=x;y=c[D>>2]|0;y=(u|0)>(y|0)?u:y;u=B+4|0;c[u>>2]=y;A=c[E>>2]|0;A=(v|0)<(A|0)?v:A;v=B+8|0;c[v>>2]=A;e=c[F>>2]|0;e=(w|0)<(e|0)?w:e;w=B+12|0;c[w>>2]=e;x=x>>G<>H<>31|0)|0;A=zga(A|0,I|0,G|0)|0;e=Iga(R|0,S|0,e|0,((e|0)<0)<<31>>31|0)|0;e=zga(e|0,I|0,H|0)|0;A=(A<>G;z=B+16|0;c[z>>2]=A;e=(e<>H;k=B+20|0;c[k>>2]=e;A=ea(e,A)|0;e=A*48|0;t=B+24|0;l=c[t>>2]|0;do if(!l){l=Afa(e)|0;c[t>>2]=l;if(!l){b=0;d=77;break a}Cga(l|0,0,e|0)|0;c[B+28>>2]=e}else{m=B+28|0;if(e>>>0<=(c[m>>2]|0)>>>0)break;l=Dfa(l,e)|0;if(!l){d=53;break a}c[t>>2]=l;j=c[m>>2]|0;Cga(l+j|0,0,e-j|0)|0;c[m>>2]=e}while(0);j=B+32|0;l=c[j>>2]|0;e=c[z>>2]|0;m=c[k>>2]|0;if(!l)l=BB(e,m)|0;else l=DB(l,e,m)|0;c[j>>2]=l;if(!l)$b(266272,30,1,ua|0)|0;j=B+36|0;e=c[j>>2]|0;m=c[z>>2]|0;l=c[k>>2]|0;if(!e)l=BB(m,l)|0;else l=DB(e,m,l)|0;c[j>>2]=l;if(!l)$b(266304,30,1,ua|0)|0;if(A){j=0;m=c[t>>2]|0;while(1){l=c[z>>2]|0;ya=(((j>>>0)%(l>>>0)|0)<>>0)/(l>>>0)|0)<>2]|0;c[m+12>>2]=(ya|0)>(t|0)?ya:t;t=c[u>>2]|0;c[m+16>>2]=(l|0)>(t|0)?l:t;t=c[v>>2]|0;c[m+20>>2]=(e|0)<(t|0)?e:t;t=c[w>>2]|0;c[m+24>>2]=(k|0)<(t|0)?k:t;if(!(c[m>>2]|0)){l=Afa(16384)|0;c[m>>2]=l;if(!l){b=0;d=77;break a}a[l>>0]=0;c[m>>2]=l+1;e=Afa(2400)|0;c[m+4>>2]=e;if(!e){b=0;d=77;break a}ya=Afa(2400)|0;l=m+8|0;c[l>>2]=ya;if(!ya){b=0;d=77;break a}}else{l=m+8|0;e=c[m+4>>2]|0}Cga(e|0,0,2400)|0;Cga(c[l>>2]|0,0,2400)|0;j=j+1|0;if(j>>>0>=A>>>0)break;else m=m+48|0}}C=C+1|0;if(C>>>0>=X>>>0)break;else B=B+40|0}}s=s+8|0;V=V+1|0;if(V>>>0>=(c[J>>2]|0)>>>0)break;else W=W+36|0}da=da+1|0;if(da>>>0>=(c[ka>>2]|0)>>>0)break;else ca=ca+136|0}}pa=pa+1|0;if(pa>>>0>=(c[ta>>2]|0)>>>0){b=1;d=77;break}else{b=b+52|0;f=f+1080|0;h=h+44|0}}if((d|0)==6)Sa(266624,266632,105,266672);else if((d|0)==8)Sa(266624,266632,105,266672);else if((d|0)==17){Bfa(c[j>>2]|0);c[j>>2]=0;c[e>>2]=0;ya=0;i=wa;return ya|0}else if((d|0)==24){$b(266120,38,1,ua|0)|0;Bfa(c[k>>2]|0);c[k>>2]=0;c[j>>2]=0;ya=0;i=wa;return ya|0}else if((d|0)==44){$b(266160,42,1,ua|0)|0;Bfa(c[m>>2]|0);c[m>>2]=0;c[e>>2]=0;ya=0;i=wa;return ya|0}else if((d|0)==53){Bfa(c[t>>2]|0);c[t>>2]=0;c[m>>2]=0;$b(266208,57,1,ua|0)|0;ya=0;i=wa;return ya|0}else if((d|0)==77){i=wa;return b|0}return 0}function uB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0.0,xa=0;va=i;d=c[a+28>>2]|0;ua=c[c[a+20>>2]>>2]|0;e=c[(c[d+68>>2]|0)+(b*5632|0)+5576>>2]|0;f=c[ua+20>>2]|0;ta=c[a+24>>2]|0;a=c[ta+24>>2]|0;ra=c[d+24>>2]|0;ka=(b>>>0)%(ra>>>0)|0;ra=(b>>>0)/(ra>>>0)|0;$=c[d+4>>2]|0;qa=c[d+12>>2]|0;na=(ea(qa,ka)|0)+$|0;sa=c[ta>>2]|0;c[ua>>2]=(na|0)>(sa|0)?na:sa;sa=c[d+8>>2]|0;na=c[d+16>>2]|0;Y=(ea(na,ra)|0)+sa|0;_=c[ta+4>>2]|0;pa=ua+4|0;c[pa>>2]=(Y|0)>(_|0)?Y:_;$=(ea(qa,ka+1|0)|0)+$|0;ka=c[ta+8>>2]|0;qa=ua+8|0;c[qa>>2]=($|0)<(ka|0)?$:ka;sa=(ea(na,ra+1|0)|0)+sa|0;ta=c[ta+12>>2]|0;ra=ua+12|0;c[ra>>2]=(sa|0)<(ta|0)?sa:ta;if(!(c[e+4>>2]|0)){$b(266040,38,1,c[q>>2]|0)|0;ua=0;i=va;return ua|0}sa=ua+16|0;if(!(c[sa>>2]|0)){ua=1;i=va;return ua|0}na=d+72|0;ta=c[q>>2]|0;oa=0;a:while(1){b=c[a>>2]|0;if(!b){b=6;break}d=b+-1|0;j=(d+(c[ua>>2]|0)|0)/(b|0)|0;c[f>>2]=j;h=c[a+4>>2]|0;if(!h){b=8;break}ka=h+-1|0;ja=(ka+(c[pa>>2]|0)|0)/(h|0)|0;ma=f+4|0;c[ma>>2]=ja;d=(d+(c[qa>>2]|0)|0)/(b|0)|0;la=f+8|0;c[la>>2]=d;b=(ka+(c[ra>>2]|0)|0)/(h|0)|0;ka=f+12|0;c[ka>>2]=b;j=ea(d-j<<2,b-ja|0)|0;b=c[e+4>>2]|0;ja=f+16|0;c[ja>>2]=b;d=c[na>>2]|0;if(b>>>0>>0)c[f+20>>2]=1;else c[f+20>>2]=b-d;h=f+32|0;b=c[h>>2]|0;if(b){d=f+36|0;if(j>>>0>(c[d>>2]|0)>>>0){b=Dfa(b,j)|0;$b(266080,38,1,ta|0)|0;if(!b){b=17;break}c[h>>2]=b;c[d>>2]=j}}else{$=Afa(j)|0;c[h>>2]=$;if(!$){a=0;b=76;break}c[f+36>>2]=j}d=(c[ja>>2]|0)*136|0;j=f+24|0;b=c[j>>2]|0;if(b){h=f+28|0;if(d>>>0>(c[h>>2]|0)>>>0){b=Dfa(b,d)|0;if(!b){b=24;break}c[j>>2]=b;$=c[h>>2]|0;Cga(b+$|0,0,d-$|0)|0;c[h>>2]=d}}else{b=Afa(d)|0;c[j>>2]=b;if(!b){a=0;b=76;break}c[f+28>>2]=d;Cga(b|0,0,d|0)|0}b=c[ja>>2]|0;ia=(c[e+20>>2]|0)==0?151:150;if(b){da=e+8|0;fa=e+12|0;ga=a+24|0;ha=e+804|0;ba=c[j>>2]|0;r=e+28|0;ca=0;while(1){aa=b;b=b+-1|0;Y=c[f>>2]|0;_=1<>31|0,-1,-1)|0;$=I;Y=Iga(_|0,$|0,Y|0,((Y|0)<0)<<31>>31|0)|0;Y=zga(Y|0,I|0,b|0)|0;c[ba>>2]=Y;h=c[ma>>2]|0;h=Iga(_|0,$|0,h|0,((h|0)<0)<<31>>31|0)|0;h=zga(h|0,I|0,b|0)|0;c[ba+4>>2]=h;d=c[la>>2]|0;d=Iga(_|0,$|0,d|0,((d|0)<0)<<31>>31|0)|0;d=zga(d|0,I|0,b|0)|0;c[ba+8>>2]=d;j=c[ka>>2]|0;j=Iga(_|0,$|0,j|0,((j|0)<0)<<31>>31|0)|0;j=zga(j|0,I|0,b|0)|0;c[ba+12>>2]=j;n=c[e+(ca<<2)+812>>2]|0;m=c[e+(ca<<2)+944>>2]|0;o=Y>>n<>m<>31|0,-1,-1)|0;k=Iga(k|0,I|0,j|0,((j|0)<0)<<31>>31|0)|0;k=zga(k|0,I|0,m|0)|0;if((Y|0)==(d|0))l=0;else{l=1<>31|0,-1,-1)|0;l=Iga(l|0,I|0,d|0,((d|0)<0)<<31>>31|0)|0;l=zga(l|0,I|0,n|0)|0;l=(l<>n}Z=ba+16|0;c[Z>>2]=l;if((h|0)==(j|0))d=0;else d=(k<>m;c[ba+20>>2]=d;W=ea(l,d)|0;X=W*40|0;Y=(ca|0)==0;if(Y)c[ba+24>>2]=1;else{o=Iga(o|0,((o|0)<0)<<31>>31|0,1,0)|0;o=Lga(o|0,I|0,1)|0;p=Iga(p|0,((p|0)<0)<<31>>31|0,1,0)|0;p=Lga(p|0,I|0,1)|0;c[ba+24>>2]=3;m=m+-1|0;n=n+-1|0}F=c[da>>2]|0;F=F>>>0>>0?F:n;G=c[fa>>2]|0;G=G>>>0>>0?G:m;H=ba+24|0;J=(W|0)==0;K=1<>31|0,-1,-1)|0;O=I;P=1<>31|0,-1,-1)|0;R=I;S=1<>31|0,-1,-1)|0;T=I;U=0;V=ba+28|0;while(1){if(Y){c[V+16>>2]=0;k=c[f>>2]|0;k=Iga(_|0,$|0,k|0,((k|0)<0)<<31>>31|0)|0;k=zga(k|0,I|0,b|0)|0;c[V>>2]=k;k=c[ma>>2]|0;k=Iga(_|0,$|0,k|0,((k|0)<0)<<31>>31|0)|0;k=zga(k|0,I|0,b|0)|0;c[V+4>>2]=k;k=c[la>>2]|0;k=Iga(_|0,$|0,k|0,((k|0)<0)<<31>>31|0)|0;k=zga(k|0,I|0,b|0)|0;c[V+8>>2]=k;k=c[ka>>2]|0;k=Iga(_|0,$|0,k|0,((k|0)<0)<<31>>31|0)|0;k=zga(k|0,I|0,b|0)|0;c[V+12>>2]=k;k=0}else{k=U+1|0;c[V+16>>2]=k;D=(k&1)<>2]|0)-D|0;E=Iga(S|0,T|0,E|0,((E|0)<0)<<31>>31|0)|0;E=zga(E|0,I|0,aa|0)|0;c[V>>2]=E;E=k>>>1<>2]|0)-E|0;C=Iga(S|0,T|0,C|0,((C|0)<0)<<31>>31|0)|0;C=zga(C|0,I|0,aa|0)|0;c[V+4>>2]=C;D=(c[la>>2]|0)-D|0;D=Iga(S|0,T|0,D|0,((D|0)<0)<<31>>31|0)|0;D=zga(D|0,I|0,aa|0)|0;c[V+8>>2]=D;E=(c[ka>>2]|0)-E|0;E=Iga(S|0,T|0,E|0,((E|0)<0)<<31>>31|0)|0;E=zga(E|0,I|0,aa|0)|0;c[V+12>>2]=E}l=Ld[ia&511](k)|0;wa=+(c[r+4>>2]|0)*.00048828125+1.0;g[V+32>>2]=+Oda(1.0,(c[ga>>2]|0)+l-(c[r>>2]|0)|0)*wa*.5;c[V+28>>2]=(c[r>>2]|0)+-1+(c[ha>>2]|0);l=V+20|0;k=c[l>>2]|0;if(k){d=V+24|0;if((c[d>>2]|0)>>>0>>0){k=Dfa(k,X)|0;if(!k){b=44;break a}c[l>>2]=k;E=c[d>>2]|0;Cga(k+E|0,0,X-E|0)|0;c[d>>2]=X}}else{k=Afa(X)|0;c[l>>2]=k;if(!k){a=0;b=76;break a}Cga(k|0,0,X|0)|0;c[V+24>>2]=X}if(!J){C=V+4|0;D=V+8|0;E=V+12|0;A=c[l>>2]|0;B=0;while(1){t=c[Z>>2]|0;x=(((B>>>0)%(t>>>0)|0)<>>0)/(t>>>0)|0)<>2]|0;w=(x|0)>(w|0)?x:w;c[A>>2]=w;x=c[C>>2]|0;x=(t|0)>(x|0)?t:x;t=A+4|0;c[t>>2]=x;z=c[D>>2]|0;z=(u|0)<(z|0)?u:z;u=A+8|0;c[u>>2]=z;d=c[E>>2]|0;d=(v|0)<(d|0)?v:d;v=A+12|0;c[v>>2]=d;w=w>>F<>G<>31|0)|0;z=zga(z|0,I|0,F|0)|0;d=Iga(Q|0,R|0,d|0,((d|0)<0)<<31>>31|0)|0;d=zga(d|0,I|0,G|0)|0;z=(z<>F;y=A+16|0;c[y>>2]=z;d=(d<>G;j=A+20|0;c[j>>2]=d;z=ea(d,z)|0;d=z*56|0;s=A+24|0;k=c[s>>2]|0;do if(!k){k=Afa(d)|0;c[s>>2]=k;if(!k){a=0;b=76;break a}Cga(k|0,0,d|0)|0;c[A+28>>2]=d}else{l=A+28|0;if(d>>>0<=(c[l>>2]|0)>>>0)break;k=Dfa(k,d)|0;if(!k){b=53;break a}c[s>>2]=k;h=c[l>>2]|0;Cga(k+h|0,0,d-h|0)|0;c[l>>2]=d}while(0);h=A+32|0;k=c[h>>2]|0;d=c[y>>2]|0;l=c[j>>2]|0;if(!k)k=BB(d,l)|0;else k=DB(k,d,l)|0;c[h>>2]=k;if(!k)$b(266272,30,1,ta|0)|0;h=A+36|0;d=c[h>>2]|0;l=c[y>>2]|0;k=c[j>>2]|0;if(!d)k=BB(l,k)|0;else k=DB(d,l,k)|0;c[h>>2]=k;if(!k)$b(266304,30,1,ta|0)|0;if(z){l=0;d=c[s>>2]|0;while(1){k=c[y>>2]|0;xa=(((l>>>0)%(k>>>0)|0)<>>0)/(k>>>0)|0)<>2]|0;c[d+8>>2]=(xa|0)>(s|0)?xa:s;s=c[t>>2]|0;c[d+12>>2]=(k|0)>(s|0)?k:s;s=c[u>>2]|0;c[d+16>>2]=(h|0)<(s|0)?h:s;s=c[v>>2]|0;c[d+20>>2]=(j|0)<(s|0)?j:s;if(!(c[d>>2]|0)){xa=Afa(8192)|0;c[d>>2]=xa;if(!xa){a=0;b=76;break a}c[d+32>>2]=8192;k=Afa(320)|0;c[d+4>>2]=k;if(!k){a=0;b=76;break a}Cga(k|0,0,320)|0;c[d+52>>2]=10}l=l+1|0;if(l>>>0>=z>>>0)break;else d=d+56|0}}B=B+1|0;if(B>>>0>=W>>>0)break;else A=A+40|0}}r=r+8|0;U=U+1|0;if(U>>>0>=(c[H>>2]|0)>>>0)break;else V=V+36|0}ca=ca+1|0;if(ca>>>0>=(c[ja>>2]|0)>>>0)break;else ba=ba+136|0}}oa=oa+1|0;if(oa>>>0>=(c[sa>>2]|0)>>>0){a=1;b=76;break}else{a=a+52|0;e=e+1080|0;f=f+44|0}}if((b|0)==6)Sa(266624,266632,105,266672);else if((b|0)==8)Sa(266624,266632,105,266672);else if((b|0)==17){Bfa(c[h>>2]|0);c[h>>2]=0;c[d>>2]=0;xa=0;i=va;return xa|0}else if((b|0)==24){$b(266120,38,1,ta|0)|0;Bfa(c[j>>2]|0);c[j>>2]=0;c[h>>2]=0;xa=0;i=va;return xa|0}else if((b|0)==44){$b(266160,42,1,ta|0)|0;Bfa(c[l>>2]|0);c[l>>2]=0;c[d>>2]=0;xa=0;i=va;return xa|0}else if((b|0)==53){Bfa(c[s>>2]|0);c[s>>2]=0;c[l>>2]=0;$b(266208,57,1,ta|0)|0;xa=0;i=va;return xa|0}else if((b|0)==76){i=va;return a|0}return 0}function vB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;h=i;d=c[a+24>>2]|0;f=c[d+16>>2]|0;if(!f){g=0;i=h;return g|0}g=0;b=0;e=c[d+24>>2]|0;d=c[(c[c[a+20>>2]>>2]|0)+20>>2]|0;while(1){k=c[e+24>>2]|0;k=((k&7|0)!=0&1)+(k>>>3)|0;j=c[d+24>>2]|0;a=(c[d+20>>2]|0)+-1|0;b=(ea(ea((k|0)==3?4:k,(c[j+(a*136|0)+8>>2]|0)-(c[j+(a*136|0)>>2]|0)|0)|0,(c[j+(a*136|0)+12>>2]|0)-(c[j+(a*136|0)+4>>2]|0)|0)|0)+b|0;g=g+1|0;if(g>>>0>=f>>>0)break;else{e=e+52|0;d=d+44|0}}i=h;return b|0}function wB(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+16|0;x=z;do if(!(c[b+8>>2]|0)){c[b+36>>2]=d;v=b+28|0;t=c[(c[v>>2]|0)+68>>2]|0;y=b+32|0;c[y>>2]=t+(d*5632|0);w=(h|0)==0;p=c[b+20>>2]|0;if(!w){j=c[(c[p>>2]|0)+20>>2]|0;n=c[t+(d*5632|0)+5576>>2]|0;o=j+16|0;if(!(c[o>>2]|0)){k=c[h+88>>2]|0;j=0}else{m=c[j+24>>2]|0;k=c[h+88>>2]|0;l=0;j=0;do{u=m+(l*136|0)+16|0;c[k+(d*592|0)+(l<<2)+20>>2]=c[u>>2];s=m+(l*136|0)+20|0;c[k+(d*592|0)+(l<<2)+152>>2]=c[s>>2];j=(ea(c[s>>2]|0,c[u>>2]|0)|0)+j|0;c[k+(d*592|0)+(l<<2)+284>>2]=c[n+(l<<2)+812>>2];c[k+(d*592|0)+(l<<2)+416>>2]=c[n+(l<<2)+944>>2];l=l+1|0}while(l>>>0<(c[o>>2]|0)>>>0)}c[k+(d*592|0)+548>>2]=Cfa(ea(ea(c[h+52>>2]|0,j)|0,c[h+56>>2]|0)|0,32)|0}u=b+20|0;j=c[p>>2]|0;s=j+16|0;if(!(c[s>>2]|0)){k=0;m=c[j+20>>2]|0}else{m=c[j+20>>2]|0;p=0;q=c[t+(d*5632|0)+5576>>2]|0;r=m;while(1){o=c[r+32>>2]|0;n=ea((c[r+12>>2]|0)-(c[r+4>>2]|0)|0,(c[r+8>>2]|0)-(c[r>>2]|0)|0)|0;j=(n|0)==0;if((c[q+20>>2]|0)==1){if(!j){k=q+1076|0;l=0;j=o;while(1){c[j>>2]=(c[j>>2]|0)-(c[k>>2]|0);l=l+1|0;if((l|0)==(n|0))break;else j=j+4|0}}}else if(!j){k=q+1076|0;l=0;j=o;while(1){c[j>>2]=(c[j>>2]|0)-(c[k>>2]|0)<<11;l=l+1|0;if((l|0)==(n|0))break;else j=j+4|0}}p=p+1|0;j=c[s>>2]|0;if(p>>>0>=j>>>0)break;else{q=q+1080|0;r=r+44|0}}k=j<<2}o=ea((c[m+12>>2]|0)-(c[m+4>>2]|0)|0,(c[m+8>>2]|0)-(c[m>>2]|0)|0)|0;j=c[t+(d*5632|0)+16>>2]|0;do if((j|0)==2){n=t+(d*5632|0)+5600|0;if(c[n>>2]|0){l=Afa(k)|0;if(!l){b=0;i=z;return b|0}j=c[s>>2]|0;if(!j)j=0;else{k=0;while(1){c[l+(k<<2)>>2]=c[m+32>>2];k=k+1|0;if((k|0)==(j|0))break;else m=m+44|0}}d=(lA(c[n>>2]|0,o,l,j,c[(c[(c[b+24>>2]|0)+24>>2]|0)+32>>2]|0)|0)==0;Bfa(l);if(d){b=0;i=z;return b|0}}}else if(j){k=c[m+32>>2]|0;l=c[m+76>>2]|0;j=c[m+120>>2]|0;if(!(c[(c[t+(d*5632|0)+5576>>2]|0)+20>>2]|0)){jA(k,l,j,o);break}else{hA(k,l,j,o);break}}while(0);j=c[c[u>>2]>>2]|0;l=j+16|0;a:do if(c[l>>2]|0){m=0;n=c[(c[y>>2]|0)+5576>>2]|0;k=c[j+20>>2]|0;while(1){j=c[n+20>>2]|0;if((j|0)==1){if(!(Ry(k)|0)){j=0;k=53;break}}else if((j|0)==0?(Vy(k)|0)==0:0){j=0;k=53;break}m=m+1|0;if(m>>>0>=(c[l>>2]|0)>>>0)break a;else{n=n+1080|0;k=k+44|0}}if((k|0)==53){i=z;return j|0}}while(0);j=c[y>>2]|0;k=fB()|0;if(!k){b=0;i=z;return b|0}do if((c[j+16>>2]|0)==1)if(!(c[(c[j+5576>>2]|0)+20>>2]|0)){l=gA()|0;break}else{l=fA()|0;break}else l=c[j+5592>>2]|0;while(0);u=iB(k,c[c[u>>2]>>2]|0,j,l)|0;gB(k);if(!u){b=0;i=z;return b|0}j=c[v>>2]|0;c[x>>2]=0;if(!w)c[h+12>>2]=0;if(!(a[j+89>>0]&5)){if(!(c[(c[y>>2]|0)+8>>2]|0))break;else j=0;do{oB(b,j,1);j=j+1|0}while(j>>>0<(c[(c[y>>2]|0)+8>>2]|0)>>>0)}else{if(!(qB(b,e,x,g,h)|0))j=0;else break;i=z;return j|0}}while(0);if(h)c[h+12>>2]=1;j=lB(c[b+24>>2]|0,c[b+28>>2]|0)|0;if(!j)j=1;else{b=jB(j,c[b+36>>2]|0,c[c[b+20>>2]>>2]|0,c[(c[b+32>>2]|0)+8>>2]|0,e,f,g,h,c[b+4>>2]|0,c[b>>2]|0,c[b+16>>2]|0,1)|0;mB(j);j=(b|0)==0}b=j&1^1;i=z;return b|0}function xB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+16|0;l=w;j=w+4|0;h=a+36|0;c[h>>2]=e;u=c[a+28>>2]|0;o=a+32|0;c[o>>2]=(c[u+68>>2]|0)+(e*5632|0);c[j>>2]=0;n=a+24|0;e=lB(c[n>>2]|0,u)|0;if(!e){v=0;i=w;return v|0}m=a+20|0;u=kB(e,c[h>>2]|0,c[c[m>>2]>>2]|0,b,j,d,f)|0;mB(e);if(!u){v=0;i=w;return v|0}e=c[c[m>>2]>>2]|0;h=c[(c[o>>2]|0)+5576>>2]|0;a=c[e+20>>2]|0;f=fB()|0;if(!f){v=0;i=w;return v|0}j=e+16|0;a:do if(c[j>>2]|0){d=0;e=a;while(1){if(!(hB(f,e,h)|0))break;d=d+1|0;if(d>>>0>=(c[j>>2]|0)>>>0)break a;else{h=h+1080|0;e=e+44|0}}gB(f);v=0;i=w;return v|0}while(0);gB(f);e=c[c[m>>2]>>2]|0;a=e+16|0;do if(c[a>>2]|0){j=0;d=c[(c[n>>2]|0)+24>>2]|0;f=c[(c[o>>2]|0)+5576>>2]|0;h=c[e+20>>2]|0;while(1){e=(c[d+36>>2]|0)+1|0;if((c[f+20>>2]|0)==1){if(!(Sy(h,e)|0)){v=0;e=56;break}}else if(!(Zy(h,e)|0)){v=0;e=56;break}j=j+1|0;if(j>>>0>=(c[a>>2]|0)>>>0){e=14;break}else{d=d+52|0;f=f+1080|0;h=h+44|0}}if((e|0)==14){k=c[c[m>>2]>>2]|0;break}else if((e|0)==56){i=w;return v|0}}else k=e;while(0);a=c[o>>2]|0;h=c[k+20>>2]|0;e=c[a+16>>2]|0;do if(e){b=ea((c[h+12>>2]|0)-(c[h+4>>2]|0)|0,(c[h+8>>2]|0)-(c[h>>2]|0)|0)|0;d=k+16|0;j=c[d>>2]|0;if(j>>>0<=2){u=c[q>>2]|0;c[l>>2]=j;_c(u|0,266544,l|0)|0;break}if((ea((c[h+56>>2]|0)-(c[h+48>>2]|0)|0,(c[h+52>>2]|0)-(c[h+44>>2]|0)|0)|0)>=(b|0)?(ea((c[h+100>>2]|0)-(c[h+92>>2]|0)|0,(c[h+96>>2]|0)-(c[h+88>>2]|0)|0)|0)>=(b|0):0){if((e|0)!=2){e=c[h+32>>2]|0;if((c[(c[a+5576>>2]|0)+20>>2]|0)==1){iA(e,c[h+76>>2]|0,c[h+120>>2]|0,b);break}else{kA(e,c[h+76>>2]|0,c[h+120>>2]|0,b);break}}f=a+5596|0;if(!(c[f>>2]|0))break;a=Afa(j<<2)|0;if(!a){v=0;i=w;return v|0}e=c[d>>2]|0;if(!e)e=0;else{j=0;while(1){c[a+(j<<2)>>2]=c[h+32>>2];j=j+1|0;if((j|0)==(e|0))break;else h=h+44|0}}u=(mA(c[f>>2]|0,b,a,e,c[(c[(c[n>>2]|0)+24>>2]|0)+32>>2]|0)|0)==0;Bfa(a);if(u)v=0;else break;i=w;return v|0}$b(266480,60,1,c[q>>2]|0)|0;v=0;i=w;return v|0}while(0);e=c[c[m>>2]>>2]|0;t=e+16|0;if(!(c[t>>2]|0)){v=1;i=w;return v|0}u=0;s=c[(c[n>>2]|0)+24>>2]|0;r=c[(c[o>>2]|0)+5576>>2]|0;p=c[e+20>>2]|0;while(1){n=c[p+24>>2]|0;j=c[s+36>>2]|0;a=c[n+(j*136|0)+8>>2]|0;h=c[n+(j*136|0)>>2]|0;m=a-h|0;d=c[n+(j*136|0)+12>>2]|0;j=c[n+(j*136|0)+4>>2]|0;n=d-j|0;b=(c[p+8>>2]|0)-(c[p>>2]|0)|0;o=b-m|0;j=(d|0)==(j|0);if(!j?b>>>0>(((c[p+36>>2]|0)>>>0)/(n>>>0)|0)>>>0:0){e=34;break}e=c[s+24>>2]|0;if(!(c[s+32>>2]|0)){e=1<>2]|0;if((c[r+20>>2]|0)==1){if(!j){f=(a|0)==(h|0);d=r+1076|0;b=0;while(1){if(!f){h=0;j=e;while(1){a=(c[d>>2]|0)+(c[j>>2]|0)|0;if((a|0)<(l|0))a=l;else a=(a|0)>(k|0)?k:a;c[j>>2]=a;h=h+1|0;if((h|0)==(m|0))break;else j=j+4|0}e=e+(m<<2)|0}b=b+1|0;if((b|0)==(n|0))break;else e=e+(o<<2)|0}}}else if(!j){f=(a|0)==(h|0);d=r+1076|0;b=0;while(1){if(!f){h=0;j=e;while(1){a=Ufa(+g[j>>2])|0;a=(c[d>>2]|0)+a|0;if((a|0)<(l|0))a=l;else a=(a|0)>(k|0)?k:a;c[j>>2]=a;h=h+1|0;if((h|0)==(m|0))break;else j=j+4|0}e=e+(m<<2)|0}b=b+1|0;if((b|0)==(n|0))break;else e=e+(o<<2)|0}}u=u+1|0;if(u>>>0>=(c[t>>2]|0)>>>0){v=1;e=56;break}else{s=s+52|0;r=r+1080|0;p=p+44|0}}if((e|0)==34)Sa(266336,266416,1669,266448);else if((e|0)==56){i=w;return v|0}return 0}function yB(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;r=d+24|0;n=c[r>>2]|0;g=c[n+16>>2]|0;m=(g|0)==0;if(m){r=1;i=s;return r|0}h=0;j=0;k=c[n+24>>2]|0;l=c[(c[c[d+20>>2]>>2]|0)+20>>2]|0;while(1){o=c[k+24>>2]|0;o=((o&7|0)!=0&1)+(o>>>3)|0;p=c[l+24>>2]|0;q=(c[l+20>>2]|0)+-1|0;j=(ea(ea((o|0)==3?4:o,(c[p+(q*136|0)+8>>2]|0)-(c[p+(q*136|0)>>2]|0)|0)|0,(c[p+(q*136|0)+12>>2]|0)-(c[p+(q*136|0)+4>>2]|0)|0)|0)+j|0;h=h+1|0;if((h|0)==(g|0))break;else{k=k+52|0;l=l+44|0}}g=j>>>0>f>>>0;if(g|m){r=g&1^1;i=s;return r|0}q=0;p=c[n+24>>2]|0;o=c[(c[c[d+20>>2]>>2]|0)+20>>2]|0;while(1){m=c[p+24>>2]|0;d=c[o+24>>2]|0;l=c[p+36>>2]|0;g=c[d+(l*136|0)+8>>2]|0;h=c[d+(l*136|0)>>2]|0;f=g-h|0;n=c[d+(l*136|0)+12>>2]|0;l=c[d+(l*136|0)+4>>2]|0;d=(c[o+8>>2]|0)-(c[o>>2]|0)-f|0;m=((m&7|0)!=0&1)+(m>>>3)|0;m=(m|0)==3?4:m;do if((m|0)==4){if((n|0)!=(l|0)){k=(g|0)==(h|0);n=n-l|0;l=0;j=e;m=c[o+32>>2]|0;while(1){if(k)e=j;else{e=j+(f<<2)|0;h=0;g=m;while(1){c[j>>2]=c[g>>2];h=h+1|0;if((h|0)==(f|0))break;else{j=j+4|0;g=g+4|0}}m=m+(f<<2)|0}l=l+1|0;if((l|0)==(n|0))break;else{j=e;m=m+(d<<2)|0}}}}else if((m|0)==2){m=c[o+32>>2]|0;j=(n|0)==(l|0);if(!(c[p+32>>2]|0)){if(!j){k=(g|0)==(h|0);n=n-l|0;l=0;j=e;while(1){if(k)e=j;else{e=j+(f<<1)|0;h=0;g=m;while(1){b[j>>1]=c[g>>2];h=h+1|0;if((h|0)==(f|0))break;else{j=j+2|0;g=g+4|0}}m=m+(f<<2)|0}l=l+1|0;if((l|0)==(n|0))break;else{j=e;m=m+(d<<2)|0}}}}else if(!j){k=(g|0)==(h|0);n=n-l|0;l=0;while(1){if(!k){h=e+(f<<1)|0;g=0;j=m;while(1){b[e>>1]=c[j>>2];g=g+1|0;if((g|0)==(f|0))break;else{e=e+2|0;j=j+4|0}}e=h;m=m+(f<<2)|0}l=l+1|0;if((l|0)==(n|0))break;else m=m+(d<<2)|0}}}else if((m|0)==1){m=c[o+32>>2]|0;j=(n|0)==(l|0);if(!(c[p+32>>2]|0)){if(j)break;k=(g|0)==(h|0);n=n-l|0;l=0;j=e;while(1){if(k)e=j;else{e=j+f|0;h=0;g=m;while(1){a[j>>0]=c[g>>2];h=h+1|0;if((h|0)==(f|0))break;else{j=j+1|0;g=g+4|0}}m=m+(f<<2)|0}l=l+1|0;if((l|0)==(n|0))break;else{j=e;m=m+(d<<2)|0}}}else{if(j)break;k=(g|0)==(h|0);n=n-l|0;l=0;j=e;while(1){if(k)e=j;else{e=j+f|0;h=0;g=m;while(1){a[j>>0]=c[g>>2];h=h+1|0;if((h|0)==(f|0))break;else{j=j+1|0;g=g+4|0}}m=m+(f<<2)|0}l=l+1|0;if((l|0)==(n|0))break;else{j=e;m=m+(d<<2)|0}}}}while(0);q=q+1|0;if(q>>>0>=(c[(c[r>>2]|0)+16>>2]|0)>>>0){e=1;break}else{p=p+52|0;o=o+44|0}}i=s;return e|0}function zB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;d=c[a+24>>2]|0;f=c[d+16>>2]|0;if(!f){g=0;i=h;return g|0}g=0;b=0;e=c[d+24>>2]|0;d=c[(c[c[a+20>>2]>>2]|0)+20>>2]|0;while(1){a=c[e+24>>2]|0;a=((a&7|0)!=0&1)+(a>>>3)|0;b=(ea(ea((c[d+12>>2]|0)-(c[d+4>>2]|0)|0,(c[d+8>>2]|0)-(c[d>>2]|0)|0)|0,(a|0)==3?4:a)|0)+b|0;g=g+1|0;if(g>>>0>=f>>>0)break;else{e=e+52|0;d=d+44|0}}i=h;return b|0}function AB(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;p=c[f+24>>2]|0;q=p+16|0;m=c[q>>2]|0;o=(m|0)==0;if(o)j=0;else{k=0;j=0;l=c[p+24>>2]|0;n=c[(c[c[f+20>>2]>>2]|0)+20>>2]|0;while(1){s=c[l+24>>2]|0;s=((s&7|0)!=0&1)+(s>>>3)|0;j=(ea(ea((c[n+12>>2]|0)-(c[n+4>>2]|0)|0,(c[n+8>>2]|0)-(c[n>>2]|0)|0)|0,(s|0)==3?4:s)|0)+j|0;k=k+1|0;if((k|0)==(m|0))break;else{l=l+52|0;n=n+44|0}}}j=(j|0)!=(h|0);if(j|o){s=j&1^1;i=r;return s|0}o=0;n=c[p+24>>2]|0;h=c[(c[c[f+20>>2]>>2]|0)+20>>2]|0;while(1){j=c[n+24>>2]|0;m=(c[h+8>>2]|0)-(c[h>>2]|0)|0;k=(c[h+12>>2]|0)-(c[h+4>>2]|0)|0;p=ea(k,m)|0;j=((j&7|0)!=0&1)+(j>>>3)|0;j=(j|0)==3?4:j;do if((j|0)==1){k=c[h+32>>2]|0;j=(p|0)==0;if(!(c[n+32>>2]|0)){if(j){j=g;break}else{l=0;j=k;k=g}while(1){c[j>>2]=d[k>>0];l=l+1|0;if((l|0)==(p|0))break;else{j=j+4|0;k=k+1|0}}j=g+p|0;break}else{if(j){j=g;break}else{l=0;j=k;k=g}while(1){c[j>>2]=a[k>>0];l=l+1|0;if((l|0)==(p|0))break;else{j=j+4|0;k=k+1|0}}j=g+p|0;break}}else if((j|0)==2){l=c[h+32>>2]|0;j=(p|0)==0;if(!(c[n+32>>2]|0))if(j)j=g;else{j=g+(ea(k<<1,m)|0)|0;m=0;k=g;while(1){c[l>>2]=e[k>>1];m=m+1|0;if((m|0)==(p|0))break;else{l=l+4|0;k=k+2|0}}}else if(j)j=g;else{j=g+(ea(k<<1,m)|0)|0;m=0;k=g;while(1){c[l>>2]=b[k>>1];m=m+1|0;if((m|0)==(p|0))break;else{l=l+4|0;k=k+2|0}}}}else if((j|0)==4)if(!p)j=g;else{j=g+(ea(k<<2,m)|0)|0;l=0;m=c[h+32>>2]|0;k=g;while(1){c[m>>2]=c[k>>2];l=l+1|0;if((l|0)==(p|0))break;else{m=m+4|0;k=k+4|0}}}else j=g;while(0);o=o+1|0;if(o>>>0>=(c[q>>2]|0)>>>0){j=1;break}else{g=j;n=n+52|0;h=h+44|0}}i=r;return j|0}function BB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,r=0,s=0,t=0,u=0;u=i;i=i+256|0;r=u+128|0;s=u;d=Afa(20)|0;if(!d){$b(266688,42,1,c[q>>2]|0)|0;t=0;i=u;return t|0};c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d>>2]=a;c[d+4>>2]=b;c[r>>2]=a;c[s>>2]=b;e=d+8|0;c[e>>2]=0;t=0;f=b;g=a;p=0;while(1){o=ea(f,g)|0;g=(g+1|0)/2|0;h=p+1|0;c[r+(h<<2)>>2]=g;f=(f+1|0)/2|0;c[s+(h<<2)>>2]=f;t=t+o|0;if(o>>>0<=1)break;else p=h}c[e>>2]=t;if(!t){Bfa(d);$b(266736,60,1,c[q>>2]|0)|0;t=0;i=u;return t|0}e=Cfa(t,16)|0;c[d+12>>2]=e;if(!e){$b(266800,54,1,c[q>>2]|0)|0;Bfa(d);t=0;i=u;return t|0}f=t<<4;Cga(e|0,0,f|0)|0;c[d+16>>2]=f;f=e+((ea(b,a)|0)<<4)|0;if(!p)f=e;else{o=0;a=f;g=f;f=e;do{m=c[s+(o<<2)>>2]|0;a:do if((m|0)>0){n=c[r+(o<<2)>>2]|0;if((n|0)<=0){b=0;while(1){if((b&1|0)!=0|(b|0)==(m+-1|0)){h=a;g=a}else{h=g;g=g+(n<<4)|0}b=b+1|0;if((b|0)>=(m|0)){a=h;break a}else a=h}}k=(n+-1|0)>>>1;l=0;do{b=n;j=a;while(1){c[f>>2]=j;h=f+16|0;b=b+-2|0;if((b|0)<=-1){f=h;break}c[h>>2]=j;f=f+32|0;if((b|0)<=0)break;else j=j+16|0}h=a+(k+1<<4)|0;if((l&1|0)!=0|(l|0)==(m+-1|0)){a=h;g=h}else{a=g;g=g+(n<<4)|0}l=l+1|0}while((l|0)<(m|0))}while(0);o=o+1|0}while((o|0)!=(p|0))}c[f>>2]=0;f=0;while(1){c[e+4>>2]=999;c[e+8>>2]=0;c[e+12>>2]=0;f=f+1|0;if((f|0)==(t|0))break;else e=e+16|0}i=u;return d|0}function CB(a){a=a|0;var b=0,d=0,e=0;e=i;if(!a){i=e;return}b=c[a+8>>2]|0;if(!b){i=e;return}d=0;a=c[a+12>>2]|0;while(1){c[a+4>>2]=999;c[a+8>>2]=0;c[a+12>>2]=0;d=d+1|0;if(d>>>0>=b>>>0)break;else a=a+16|0}i=e;return}function DB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,r=0,s=0;s=i;i=i+256|0;p=s+128|0;r=s;if(!a){r=0;i=s;return r|0}k=a+4|0;if(!((c[a>>2]|0)==(b|0)?(c[k>>2]|0)==(d|0):0)){c[a>>2]=b;c[k>>2]=d;c[p>>2]=b;c[r>>2]=d;g=a+8|0;c[g>>2]=0;e=0;f=d;h=b;o=0;while(1){n=ea(f,h)|0;h=(h+1|0)/2|0;j=o+1|0;c[p+(j<<2)>>2]=h;f=(f+1|0)/2|0;c[r+(j<<2)>>2]=f;e=e+n|0;if(n>>>0<=1)break;else o=j}c[g>>2]=e;if(!e){e=c[a+12>>2]|0;if(e)Bfa(e);Bfa(a);r=0;i=s;return r|0}f=e<<4;g=a+16|0;h=a+12|0;e=c[h>>2]|0;do if(f>>>0>(c[g>>2]|0)>>>0){e=Dfa(e,f)|0;if(e){c[h>>2]=e;d=c[g>>2]|0;Cga(e+d|0,0,f-d|0)|0;c[g>>2]=f;d=c[k>>2]|0;b=c[a>>2]|0;break}$b(266856,53,1,c[q>>2]|0)|0;e=c[h>>2]|0;if(e)Bfa(e);Bfa(a);r=0;i=s;return r|0}while(0);b=e+((ea(d,b)|0)<<4)|0;if(o){n=0;j=b;do{l=c[r+(n<<2)>>2]|0;a:do if((l|0)>0){m=c[p+(n<<2)>>2]|0;if((m|0)<=0){g=0;while(1){if((g&1|0)!=0|(g|0)==(l+-1|0)){d=j;b=j}else{d=b;b=b+(m<<4)|0}g=g+1|0;if((g|0)>=(l|0)){j=d;break a}else j=d}}f=(m+-1|0)>>>1;h=0;do{k=m;g=j;while(1){c[e>>2]=g;d=e+16|0;k=k+-2|0;if((k|0)<=-1){e=d;break}c[d>>2]=g;e=e+32|0;if((k|0)<=0)break;else g=g+16|0}d=j+(f+1<<4)|0;if((h&1|0)!=0|(h|0)==(l+-1|0)){j=d;b=d}else{j=b;b=b+(m<<4)|0}h=h+1|0}while((h|0)<(l|0))}while(0);n=n+1|0}while((n|0)!=(o|0))}c[e>>2]=0}e=c[a+8>>2]|0;if(!e){r=a;i=s;return r|0}d=0;b=c[a+12>>2]|0;while(1){c[b+4>>2]=999;c[b+8>>2]=0;c[b+12>>2]=0;d=d+1|0;if((d|0)==(e|0))break;else b=b+16|0}i=s;return a|0}function EB(a){a=a|0;var b=0,d=0;d=i;if(!a){i=d;return}b=c[a+12>>2]|0;if(b)Bfa(b);Bfa(a);i=d;return}function FB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;b=(c[a+12>>2]|0)+(b<<4)|0;if(!b){i=e;return}while(1){a=b+4|0;if((c[a>>2]|0)<=(d|0)){b=4;break}c[a>>2]=d;b=c[b>>2]|0;if(!b){b=4;break}}if((b|0)==4){i=e;return}}function GB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+128|0;j=k;d=(c[b+12>>2]|0)+(d<<4)|0;if(!(c[d>>2]|0)){f=0;g=j}else{f=d;b=j;while(1){g=b+4|0;c[b>>2]=d;d=c[f>>2]|0;if(!(c[d>>2]|0)){f=0;break}else{f=d;b=g}}}while(1){h=d+8|0;b=c[h>>2]|0;if((f|0)>(b|0)){c[h>>2]=f;b=f}a:do if((b|0)<(e|0)){f=d+4|0;while(1){if((b|0)>=(c[f>>2]|0))break;jy(a,0,1);b=b+1|0;if((b|0)>=(e|0)){d=b;break a}}d=d+12|0;if(!(c[d>>2]|0)){jy(a,1,1);c[d>>2]=1;d=b}else d=b}else d=b;while(0);c[h>>2]=d;if((g|0)==(j|0))break;h=g+-4|0;f=d;d=c[h>>2]|0;g=h}i=k;return}function HB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+128|0;k=l;d=(c[b+12>>2]|0)+(d<<4)|0;if(!(c[d>>2]|0)){b=0;g=k}else{f=d;b=k;while(1){g=b+4|0;c[b>>2]=d;d=c[f>>2]|0;if(!(c[d>>2]|0)){b=0;break}else{f=d;b=g}}}while(1){j=d+8|0;f=c[j>>2]|0;if((b|0)>(f|0))c[j>>2]=b;else b=f;a:do if((b|0)<(e|0)){h=d+4|0;do{f=c[h>>2]|0;while(1){if((b|0)>=(f|0))break a;if(!(ky(a,1)|0))break;c[h>>2]=b;f=b}b=b+1|0}while((b|0)<(e|0))}while(0);c[j>>2]=b;if((g|0)==(k|0))break;h=g+-4|0;d=c[h>>2]|0;g=h}i=l;return (c[d+4>>2]|0)<(e|0)|0}function IB(b,c){b=b|0;c=c|0;var d=0;d=i;if(!b){i=d;return}if((c|0)>8)sC(b,266912);a[b+441>>0]=(c|0)<0?0:c&255;i=d;return}function JB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+16|0;e=f;g=e;c[g>>2]=1196314761;c[g+4>>2]=169478669;if(d>>>0<=8){if(!d){g=-1;i=f;return g|0}}else d=8;if(b>>>0>7){g=-1;i=f;return g|0}g=pga(a+b|0,e+b|0,(d+b|0)>>>0>8?8-b|0:d)|0;i=f;return g|0}function KB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;do if(a)if((4294967295/(c>>>0)|0)>>>0>b>>>0){b=dD(a,ea(c,b)|0)|0;break}else{vC(a,266952);b=0;break}else b=0;while(0);i=d;return b|0}function LB(a,b){a=a|0;b=b|0;var c=0;c=i;ZC(a,b);i=c;return}function MB(a){a=a|0;var b=0;b=i;c[a+412>>2]=ZH(0,0,0)|0;i=b;return}function NB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;e=c[a+212>>2]|0;if(!(c[a+376>>2]&536870912))e=(e&2048|0)==0;else e=(e&768|0)!=768;if(!(e&(d|0)!=0)){i=g;return}f=a+412|0;a=c[f>>2]|0;while(1){e=(d|0)==0?-1:d;a=ZH(a,b,e)|0;if((d|0)==(e|0))break;else{b=b+e|0;d=d-e|0}}c[f>>2]=a;i=g;return}function OB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+128|0;j=k;e=b+212|0;if(!d){g=c[e>>2]|131072;c[e>>2]=g;e=g}else{g=0;h=-1;do{h=h+1|0;f=a[d+h>>0]|0;if(f<<24>>24!=(a[266992+h>>0]|0))c[e>>2]=c[e>>2]|131072;g=(f<<24>>24==46&1)+g|0;if((g|0)>=2)break}while(!(f<<24>>24==0|(h|0)==6));e=c[e>>2]|0}if(!(e&131072)){d=1;i=k;return d|0}tC(j,128,tC(j,128,tC(j,128,tC(j,128,0,267e3)|0,d)|0,267032)|0,266992)|0;vC(b,j);d=0;i=k;return d|0}function PB(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;m=i;i=i+1056|0;k=i;i=i+168|0;c[k>>2]=0;l=m+156|0;j=m;Cga(l|0,0,900)|0;c[l+748>>2]=2147483647;c[l+752>>2]=2147483647;c[l+756>>2]=0;c[l+760>>2]=0;t=0;Ha(28,l|0,f|0,g|0,h|0);h=t;t=0;if((h|0)!=0&(u|0)!=0){g=Mga(c[h>>2]|0,k)|0;if(!g)Va(h|0,u|0);I=u}else g=-1;if((g|0)!=1){t=0;Ha(29,l|0,b|0,d|0,e|0);h=t;t=0;if((h|0)!=0&(u|0)!=0){g=Mga(c[h>>2]|0,k)|0;if(!g)Va(h|0,u|0);I=u}else g=-1;if((g|0)!=1){Kga(j,1,k|0)|0;t=0;h=t;t=0;if((h|0)!=0&(u|0)!=0){g=Mga(c[h>>2]|0,k)|0;if(!g)Va(h|0,u|0);I=u}else g=-1;if((g|0)!=1)h=0;else h=I}else h=I}else h=I;while(1){if(h){h=0;g=11;break}d=l+160|0;c[d>>2]=j;e=l+164|0;c[e>>2]=0;b=l+156|0;c[b>>2]=74;t=0;h=ya(226,l|0,a|0)|0;g=t;t=0;if((g|0)!=0&(u|0)!=0){f=Mga(c[g>>2]|0,k)|0;if(!f)Va(g|0,u|0);I=u}else f=-1;if((f|0)==1){h=I;continue}if(!h){h=0;g=11;break}t=0;f=ya(227,l|0,900)|0;h=t;t=0;if((h|0)!=0&(u|0)!=0){g=Mga(c[h>>2]|0,k)|0;if(!g)Va(h|0,u|0);I=u}else g=-1;if((g|0)==1)h=I;else{g=9;break}}if((g|0)==9){if(!f){l=0;i=m;return l|0}c[l+256>>2]=153;c[l+260>>2]=78;c[l+264>>2]=f;c[d>>2]=0;c[e>>2]=0;c[b>>2]=0;Aga(f|0,l|0,900)|0;l=f;i=m;return l|0}else if((g|0)==11){i=m;return h|0}return 0}function QB(a){a=a|0;var b=0;b=i;if(a){a=aD(a,268)|0;if(a)Cga(a|0,0,268)|0}else a=0;i=b;return a|0}function RB(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;if((a|0)==0|(b|0)==0){i=e;return}d=c[b>>2]|0;if(!d){i=e;return}c[b>>2]=0;SB(a,d,32767,-1);Cga(d|0,0,268)|0;ZC(a,d);i=e;return}function SB(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;o=i;if((e|0)==0|(f|0)==0){i=o;return}m=f+136|0;j=c[m>>2]|0;do if(j){n=f+232|0;if(g&16384&c[n>>2]){if((h|0)!=-1){ZC(e,c[j+(h*28|0)+4>>2]|0);c[(c[m>>2]|0)+(h*28|0)+4>>2]=0;break}l=f+128|0;if((c[l>>2]|0)>0){k=0;do{ZC(e,c[j+(k*28|0)+4>>2]|0);k=k+1|0;j=c[m>>2]|0}while((k|0)<(c[l>>2]|0))}ZC(e,j);c[m>>2]=0;c[l>>2]=0}}else n=f+232|0;while(0);j=c[n>>2]|0;if(g&8192&j){j=f+156|0;ZC(e,c[j>>2]|0);c[j>>2]=0;j=f+8|0;c[j>>2]=c[j>>2]&-17;j=c[n>>2]|0}if(g&256&j){l=f+256|0;ZC(e,c[l>>2]|0);j=f+260|0;ZC(e,c[j>>2]|0);c[l>>2]=0;c[j>>2]=0;j=f+8|0;c[j>>2]=c[j>>2]&-16385;j=c[n>>2]|0}if(g&128&j){j=f+208|0;ZC(e,c[j>>2]|0);m=f+220|0;ZC(e,c[m>>2]|0);c[j>>2]=0;c[m>>2]=0;m=f+224|0;j=c[m>>2]|0;if(j){l=f+229|0;if(a[l>>0]|0){k=0;do{ZC(e,c[j+(k<<2)>>2]|0);k=k+1|0;j=c[m>>2]|0}while((k|0)<(d[l>>0]|0))}ZC(e,j);c[m>>2]=0}j=f+8|0;c[j>>2]=c[j>>2]&-1025;j=c[n>>2]|0}if(g&16&j){k=f+116|0;ZC(e,c[k>>2]|0);l=f+120|0;ZC(e,c[l>>2]|0);c[k>>2]=0;c[l>>2]=0;l=f+8|0;c[l>>2]=c[l>>2]&-4097}m=f+244|0;j=c[m>>2]|0;do if((j|0)!=0?(g&32&c[n>>2]|0)!=0:0){if((h|0)!=-1){ZC(e,c[j+(h<<4)>>2]|0);ZC(e,c[(c[m>>2]|0)+(h<<4)+8>>2]|0);l=c[m>>2]|0;c[l+(h<<4)>>2]=0;c[l+(h<<4)+8>>2]=0;break}l=f+248|0;k=c[l>>2]|0;if(k){if((k|0)>0){k=0;do{ZC(e,c[j+(k<<4)>>2]|0);ZC(e,c[(c[m>>2]|0)+(k<<4)+8>>2]|0);k=k+1|0;j=c[m>>2]|0}while((k|0)<(c[l>>2]|0))}ZC(e,j);c[m>>2]=0;c[l>>2]=0}l=f+8|0;c[l>>2]=c[l>>2]&-8193}while(0);m=f+236|0;j=c[m>>2]|0;do if((j|0)!=0?(g&512&c[n>>2]|0)!=0:0){if((h|0)!=-1){ZC(e,c[j+(h*20|0)+8>>2]|0);c[(c[m>>2]|0)+(h*20|0)+8>>2]=0;break}l=f+240|0;k=c[l>>2]|0;if(k){if((k|0)>0){k=0;do{ZC(e,c[j+(k*20|0)+8>>2]|0);k=k+1|0;j=c[m>>2]|0}while((k|0)<(c[l>>2]|0))}ZC(e,j);c[m>>2]=0;c[l>>2]=0}}while(0);j=c[n>>2]|0;if(g&8&j){j=f+204|0;ZC(e,c[j>>2]|0);c[j>>2]=0;j=f+8|0;c[j>>2]=c[j>>2]&-65;j=c[n>>2]|0}if(g&4096&j){j=f+16|0;ZC(e,c[j>>2]|0);c[j>>2]=0;j=f+8|0;c[j>>2]=c[j>>2]&-9;b[f+20>>1]=0;j=c[n>>2]|0}if(g&64&j){m=f+264|0;k=c[m>>2]|0;if(k){l=f+4|0;if(!(c[l>>2]|0))j=k;else{j=k;k=0;do{ZC(e,c[j+(k<<2)>>2]|0);k=k+1|0;j=c[m>>2]|0}while(k>>>0<(c[l>>2]|0)>>>0)}ZC(e,j);c[m>>2]=0;j=c[n>>2]|0}f=f+8|0;c[f>>2]=c[f>>2]&-32769}c[n>>2]=j&~((h|0)==-1?g:g&-16929);i=o;return}function TB(a){a=a|0;if(!a)a=0;else a=c[a+188>>2]|0;return a|0}function UB(b,c){b=b|0;c=c|0;a[b>>0]=c>>>24;a[b+1>>0]=c>>>16;a[b+2>>0]=c>>>8;a[b+3>>0]=c;return}function VB(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;g=i;a:do if(!((a|0)==0|(b|0)==0)?(e=c[a+692>>2]|0,(e|0)!=0):0){f=c[a+696>>2]|0;e=f+(e*5|0)|0;while(1){a=e+-5|0;if(!(pga(b,a,4)|0))break;if(a>>>0>f>>>0)e=a;else{a=0;break a}}a=d[e+-1>>0]|0}else a=0;while(0);i=g;return a|0}function WB(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j;a[g>>0]=e>>>24;a[g+1>>0]=e>>>16;a[g+2>>0]=e>>>8;a[g+3>>0]=e;a[g+4>>0]=0;if(!b){h=0;i=j;return h|0}e=c[b+692>>2]|0;if(!e){h=0;i=j;return h|0}f=c[b+696>>2]|0;b=f+(e*5|0)|0;while(1){e=b+-5|0;if(!(pga(g,e,4)|0))break;if(e>>>0>f>>>0)b=e;else{e=0;h=7;break}}if((h|0)==7){i=j;return e|0}h=d[b+-1>>0]|0;i=j;return h|0}function XB(a,b){a=a|0;b=b|0;var d=0;d=i;a=a+248|0;a:do if(!(c[a>>2]|0))do switch(b|0){case 2:{c[a>>2]=267120;break a}case 1:{c[a>>2]=267088;break a}case -3:{c[a>>2]=267184;break a}case -6:{c[a>>2]=267248;break a}case -7:{c[a>>2]=267280;break a}case -4:{c[a>>2]=267208;break a}case -1:{c[a>>2]=267144;break a}case -2:{c[a>>2]=267160;break a}case -5:{c[a>>2]=267232;break a}default:{c[a>>2]=267056;break a}}while(0);while(0);i=d;return}function YB(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0.0,j=0,k=0;k=i;if((e+-16|0)>>>0<=624999984){f=b[d+74>>1]|0;if((f&8)==0?1:(c[a+208>>2]&32768|0)==0){j=d+74|0;if(f<<16>>16<0){i=k;return}do if(f&1){g=c[d>>2]|0;if((!((e|0)==0|(g|0)==0)?(h=+S(+(+(g|0)*1.0e5/+(e|0)+.5)),h<=2147483647.0&h>=-2147483648.0):0)?(~~h+-95e3|0)>>>0<=1e4:0)break;if(!(f&32)){FC(a,269064,0);break}FC(a,269032,2);i=k;return}while(0);c[d>>2]=e;b[j>>1]=f&65535|9;i=k;return}else g=267336}else{f=b[d+74>>1]|0;g=267304}b[d+74>>1]=f&65535|32768;FC(a,g,1);i=k;return}function ZB(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=i;f=b[d+114>>1]|0;e=f&65535;if(e&32768){e=d+8|0;c[e>>2]=c[e>>2]&-6150;SB(a,d,16,-1);i=g;return}a=d+8|0;d=c[a>>2]|0;d=(e&128|0)==0?d&-2049:d|2048;d=(f&2)==0?d&-5:d|4;c[a>>2]=d;if(!(f&1)){c[a>>2]=d&-2;i=g;return}else{c[a>>2]=d|1;i=g;return}}function _B(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;if(!d){i=h;return}e=d+40|0;f=a+824|0;g=e+76|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));g=b[d+114>>1]|0;e=g&65535;if(e&32768){g=d+8|0;c[g>>2]=c[g>>2]&-6150;SB(a,d,16,-1);i=h;return}f=d+8|0;a=c[f>>2]|0;e=(e&128|0)==0?a&-2049:a|2048;e=(g&2)==0?e&-5:e|4;c[f>>2]=e;if(!(g&1)){c[f>>2]=e&-2;i=h;return}else{c[f>>2]=e|1;i=h;return}}function $B(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+48|0;j=m;h=PQ(j,f)|0;if((h|0)==1){l=d+74|0;b[l>>1]=e[l>>1]|0|32768;zC(a,267352);l=0;i=m;return l|0}else if(!h){k=d+74|0;l=e[k>>1]|0;if(l&32768){l=0;i=m;return l|0}h=d+4|0;do if(!((g|0)>1|(l&2|0)==0))if(!(QQ(f,h,100)|0)){b[k>>1]=l|32768;zC(a,269e3);l=0;i=m;return l|0}else{if(!g)h=1;else break;i=m;return h|0}while(0);c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];c[h+28>>2]=c[f+28>>2];a=d+36|0;h=j+0|0;d=a+36|0;do{c[a>>2]=c[h>>2];a=a+4|0;h=h+4|0}while((a|0)<(d|0));j=(QQ(f,267568,1e3)|0)==0;b[k>>1]=j?l&65469|2:l|66;l=2;i=m;return l|0}else{l=d+74|0;b[l>>1]=e[l>>1]|0|32768;sC(a,267376)}return 0}function aC(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0.0,k=0,l=0;l=i;k=d+74|0;g=b[k>>1]|0;h=g&65535;if(h&32768){d=0;i=l;return d|0}if(f>>>0>3){SQ(a,d,267456,f,267464);d=0;i=l;return d|0}if((h&4|0)!=0?(e[d+72>>1]|0|0)!=(f|0):0){SQ(a,d,267456,f,267496);d=0;i=l;return d|0}if(h&32){zC(a,267528);d=0;i=l;return d|0}if((h&2|0)!=0?(QQ(267568,d+4|0,100)|0)==0:0){FC(a,267600,2);g=b[k>>1]|0}do if(g&1){h=c[d>>2]|0;if(((h|0)!=0?(j=+S(+(+(h|0)*1.0e5/45455.0+.5)),j<=2147483647.0&j>=-2147483648.0):0)?(~~j+-95e3|0)>>>0<=1e4:0)break;FC(a,269032,2);g=b[k>>1]|0}while(0);b[d+72>>1]=f;g=g&65535;a=d+4|0;c[a+0>>2]=c[66892];c[a+4>>2]=c[66893];c[a+8>>2]=c[66894];c[a+12>>2]=c[66895];c[a+16>>2]=c[66896];c[a+20>>2]=c[66897];c[a+24>>2]=c[66898];c[a+28>>2]=c[66899];a=d+36|0;f=267416|0;h=a+36|0;do{c[a>>2]=c[f>>2];a=a+4|0;f=f+4|0}while((a|0)<(h|0));c[d>>2]=45455;b[k>>1]=g|231;d=1;i=l;return d|0}function bC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;if(d>>>0<132){SQ(a,b,c,d,267632);b=0}else b=1;i=e;return b|0}function cC(a,b,c,e,f,g){a=a|0;b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;i=i+224|0;j=l+24|0;k=l;h=(d[f+1>>0]|0)<<16|(d[f>>0]|0)<<24|(d[f+2>>0]|0)<<8|(d[f+3>>0]|0);if((h|0)!=(e|0)){SQ(a,b,c,h,267648);b=0;i=l;return b|0}if(!((d[f+8>>0]|0)<4|(e&3|0)==0)){SQ(a,b,c,e,267680);b=0;i=l;return b|0}h=(d[f+129>>0]|0)<<16|(d[f+128>>0]|0)<<24|(d[f+130>>0]|0)<<8|(d[f+131>>0]|0);if(h>>>0<=357913930?((h*12|0)+132|0)>>>0<=e>>>0:0){h=(d[f+65>>0]|0)<<16|(d[f+64>>0]|0)<<24|(d[f+66>>0]|0)<<8|(d[f+67>>0]|0);if(h>>>0>65534){SQ(a,b,c,h,267720);b=0;i=l;return b|0}if(h>>>0>3)SQ(a,0,c,h,267752);h=(d[f+37>>0]|0)<<16|(d[f+36>>0]|0)<<24|(d[f+38>>0]|0)<<8|(d[f+39>>0]|0);if((h|0)!=1633907568){SQ(a,b,c,h,267784);b=0;i=l;return b|0}if(pga(f+68|0,267808,12)|0){e=tC(j,196,0,268968)|0;e=tC(j,196,tC(j,e+79|0,e,c)|0,268984)|0;tC(j,196,tC(j,196,tC(j,196,e,uC(k,k+24|0,3,0)|0)|0,268992)|0,267824)|0;FC(a,j,1)}h=(d[f+17>>0]|0)<<16|(d[f+16>>0]|0)<<24|(d[f+18>>0]|0)<<8|(d[f+19>>0]|0);if((h|0)==1196573017){if(g&2){SQ(a,b,c,1196573017,267904);b=0;i=l;return b|0}}else if((h|0)==1380401696){if(!(g&2)){SQ(a,b,c,1380401696,267856);b=0;i=l;return b|0}}else{SQ(a,b,c,h,267952);b=0;i=l;return b|0}h=(d[f+13>>0]|0)<<16|(d[f+12>>0]|0)<<24|(d[f+14>>0]|0)<<8|(d[f+15>>0]|0);if((h|0)==1633842036){SQ(a,b,c,1633842036,267984);b=0;i=l;return b|0}else if((h|0)==1852662636)SQ(a,0,c,1852662636,268064);else if((h|0)==1818848875){SQ(a,b,c,1818848875,268024);b=0;i=l;return b|0}else if(!((h|0)==1936744803|(h|0)==1886549106|(h|0)==1835955314|(h|0)==1935896178))SQ(a,0,c,h,268104);h=(d[f+21>>0]|0)<<16|(d[f+20>>0]|0)<<24|(d[f+22>>0]|0)<<8|(d[f+23>>0]|0);if((h|0)==1281450528|(h|0)==1482250784){b=1;i=l;return b|0}SQ(a,b,c,h,268136);b=0;i=l;return b|0}SQ(a,b,c,h,267696);b=0;i=l;return b|0}function dC(a,b,c,e,f){a=a|0;b=b|0;c=c|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;k=(d[f+129>>0]|0)<<16|(d[f+128>>0]|0)<<24|(d[f+130>>0]|0)<<8|(d[f+131>>0]|0);if(!k){m=1;i=n;return m|0}l=0;j=f+132|0;while(1){f=(d[j+1>>0]|0)<<16|(d[j>>0]|0)<<24|(d[j+2>>0]|0)<<8|(d[j+3>>0]|0);o=d[j+7>>0]|0;g=(d[j+5>>0]|0)<<16|(d[j+4>>0]|0)<<24|(d[j+6>>0]|0)<<8|o;h=(d[j+9>>0]|0)<<16|(d[j+8>>0]|0)<<24|(d[j+10>>0]|0)<<8|(d[j+11>>0]|0);if(o&3)SQ(a,0,c,f,268168);if(g>>>0>e>>>0|h>>>0>(e-g|0)>>>0)break;l=l+1|0;if(l>>>0>=k>>>0){f=1;m=8;break}else j=j+12|0}if((m|0)==8){i=n;return f|0}SQ(a,b,c,f,268216);o=0;i=n;return o|0}function eC(a,b,c,e){a=a|0;b=b|0;c=c|0;e=e|0;e=i;aC(a,b,(d[c+65>>0]|0)<<16|(d[c+64>>0]|0)<<24|(d[c+66>>0]|0)<<8|(d[c+67>>0]|0))|0;i=e;return}function fC(a,c,e,f,g,h){a=a|0;c=c|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0;j=i;if((b[c+74>>1]|0)<0){f=0;i=j;return f|0}if(f>>>0<132){SQ(a,c,e,f,267632);f=0;i=j;return f|0}if(!(cC(a,c,e,f,g,h)|0)){f=0;i=j;return f|0}if(!(dC(a,c,e,f,g)|0)){f=0;i=j;return f|0}aC(a,c,d[g+65>>0]<<16|d[g+64>>0]<<24|d[g+66>>0]<<8|d[g+67>>0])|0;f=1;i=j;return f|0}function gC(d){d=d|0;var e=0,f=0.0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;if(a[d+701>>0]|0){i=o;return}if(!(b[d+898>>1]&2)){i=o;return}g=c[d+864>>2]|0;h=c[d+876>>2]|0;j=c[d+888>>2]|0;k=h+g+j|0;if(!((k|0)>0&(g|0)>-1))sC(d,268296);l=(k|0)==0;if(l)sC(d,268296);do if(g){f=+S(+(+(g|0)*32768.0/+(k|0)+.5));if(f<=2147483647.0&f>=-2147483648.0){m=~~f;break}else sC(d,268296)}else m=0;while(0);if(!(m>>>0<32769&(h|0)>-1))sC(d,268296);if(!l)if(h){f=+S(+(+(h|0)*32768.0/+(k|0)+.5));if(f<=2147483647.0&f>=-2147483648.0){g=1;h=~~f}else g=0}else{g=1;h=0}else g=0;if(l|g&(h|0)>-1&(h|0)<32769&(j|0)>-1^1)sC(d,268296);if(j){f=+S(+(+(j|0)*32768.0/+(k|0)+.5));if(!(f<=2147483647.0&f>=-2147483648.0))sC(d,268296);g=~~f;if(g>>>0<32769)e=g;else sC(d,268296)}else e=0;g=h+m+e|0;if((g|0)>=32770)sC(d,268296);if((g|0)<=32768)if((g|0)<32768){j=1;n=20}else g=m;else{j=-1;n=20}do if((n|0)==20){if(!((h|0)<(m|0)|(h|0)<(e|0))){h=j+h|0;g=m;break}if((m|0)<(h|0)|(m|0)<(e|0)){g=m;e=j+e|0;break}else{g=j+m|0;break}}while(0);if((h+g+e|0)!=32768)sC(d,268248);b[d+702>>1]=g;b[d+704>>1]=h;i=o;return}function hC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0;g=i;do if(e){if((b|0)==0|(d|0)==0){c[a>>2]=0;b=1;break}f=+S(+(+(b|0)*+(d|0)/+(e|0)+.5));if(f<=2147483647.0&f>=-2147483648.0){c[a>>2]=~~f;b=1}else b=0}else b=0;while(0);i=g;return b|0}function iC(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0;m=i;do if(b){if((b|0)<0){vC(a,268368);b=1;break}if(b>>>0>536870798){vC(a,268400);b=1;break}if((c[a+748>>2]|0)>>>0>>0){vC(a,268448);b=1}else b=0}else{vC(a,268336);b=1}while(0);do if(d){if((d|0)<0){vC(a,268520);b=1;break}if((c[a+752>>2]|0)>>>0>>0){vC(a,268552);b=1}}else{vC(a,268488);b=1}while(0);switch(e|0){case 1:case 2:case 4:case 8:case 16:break;default:{vC(a,268592);b=1}}if((f|0)<0|(f|0)==1|(f|0)==5|(f|0)>6){vC(a,268624);b=1}if(!(!((f|0)==3&(e|0)>8)?!(((f|0)==2|(f|0)==4|(f|0)==6)&(e|0)<8):0)){vC(a,268656);b=1}if((g|0)>1){vC(a,268712);b=1}if(h){vC(a,268752);b=1}d=a+208|0;if((c[d>>2]&4096|0)!=0?(c[a+708>>2]|0)!=0:0)vC(a,268792);if(j){if(!(((j|0)==64?(c[a+708>>2]&4|0)!=0:0)?(k=c[d>>2]|0,(k&4096|0)==0&(f&-5|0)==2):0)){vC(a,268848);k=c[d>>2]|0;b=1}if(!(k&4096))l=b;else{vC(a,268880);sC(a,268912)}}else l=b;if((l|0)==1)sC(a,268912);else{i=m;return}}function jC(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;g=c[e>>2]|0;h=c[f>>2]|0;a:do if(h>>>0>>0)while(1){switch(a[b+h>>0]|0){case 48:{j=8;break}case 43:{j=4;break}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:{j=264;break}case 101:case 69:{j=32;break}case 46:{j=16;break}case 45:{j=132;break}default:break a}b:do switch(j&60|g&3|0){case 9:{g=g|j|64;break}case 32:{if(!(g&8))break a;g=g&448|2;break}case 4:{if(g&60)break a;g=j|g;break}case 8:{if(g&16)g=g&448|17;g=j|g|64;break}case 16:{if(g&16)break a;if(!(g&8)){g=g&448|j|1;break b}else{g=j|g;break b}}case 33:{if(!(g&8))break a;g=g&448|2;break}case 6:{if(g&60)break a;g=g|4;break}case 10:{g=g|72;break}default:break a}while(0);h=h+1|0;if(h>>>0>=d>>>0)break a}while(0);c[e>>2]=g;c[f>>2]=h;i=k;return g>>>3&1|0}function kC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g+4|0;e=g;c[f>>2]=0;c[e>>2]=0;if(!(jC(b,d,f,e)|0)){f=0;i=g;return f|0}e=c[e>>2]|0;if((e|0)!=(d|0)?(a[b+e>>0]|0)!=0:0){f=0;i=g;return f|0}f=c[f>>2]|0;i=g;return f|0}function lC(a){a=a|0;var b=0.0,c=0;c=i;b=+S(+(1.0e10/+(a|0)+.5));if(!(b<=2147483647.0&b>=-2147483648.0)){a=0;i=c;return a|0}a=~~b;i=c;return a|0}function mC(a){a=a|0;return (a+-95e3|0)>>>0>1e4|0}function nC(a,b){a=a|0;b=b|0;var c=0.0,d=0;d=i;c=+S(+(1.0e15/+(a|0)/+(b|0)+.5));if(!(c<=2147483647.0&c>=-2147483648.0)){b=0;i=d;return b|0}b=~~c;i=d;return b|0}function oC(a,b){a=a|0;b=b|0;var c=0;c=i;if((a|0)!=0&a>>>0<255){a=~~+S(+(+V(+(+(a|0)/255.0),+(+(b|0)*.00001))*255.0+.5))&255;i=c;return a|0}else{a=a&255;i=c;return a|0}return 0}function pC(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;f=i;e=(c|0)!=0;if((a[b+436>>0]|0)!=8)if(e&c>>>0<65535){b=~~+S(+(+V(+(+(c|0)/65535.0),+(+(d|0)*.00001))*65535.0+.5))&65535;i=f;return b|0}else{b=c&65535;i=f;return b|0}else{if(e&c>>>0<255)e=~~+S(+(+V(+(+(c|0)/255.0),+(+(d|0)*.00001))*255.0+.5))&255;else e=c&255;b=e&255;i=f;return b|0}return 0}function qC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;f=a+492|0;ZC(a,c[f>>2]|0);c[f>>2]=0;f=a+496|0;b=c[f>>2]|0;if(b){d=8-(c[a+484>>2]|0)|0;e=1<>2]|0);d=d+1|0;b=c[f>>2]|0}while((d|0)<(e|0))}ZC(a,b);c[f>>2]=0}f=a+500|0;ZC(a,c[f>>2]|0);c[f>>2]=0;f=a+504|0;ZC(a,c[f>>2]|0);c[f>>2]=0;f=a+508|0;b=c[f>>2]|0;if(b){d=8-(c[a+484>>2]|0)|0;e=1<>2]|0);d=d+1|0;b=c[f>>2]|0}while((d|0)<(e|0))}ZC(a,b);c[f>>2]=0}f=a+512|0;b=c[f>>2]|0;if(!b){i=g;return}d=8-(c[a+484>>2]|0)|0;e=1<>2]|0);d=d+1|0;b=c[f>>2]|0}while((d|0)<(e|0))}ZC(a,b);c[f>>2]=0;i=g;return}function rC(d,e){d=d|0;e=e|0;var f=0.0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;g=d+492|0;if(!((c[g>>2]|0)==0?(c[d+496>>2]|0)==0:0)){vC(d,268936);qC(d)}if((e|0)>=9){if(!(a[d+435>>0]&2))e=a[d+519>>0]|0;else{e=a[d+516>>0]|0;r=a[d+517>>0]|0;e=(r&255)>(e&255)?r:e;r=a[d+518>>0]|0;e=(r&255)>(e&255)?r:e}if(e<<24>>24!=0&(e&255)<16)e=16-(e&255)&255;else e=0;p=d+216|0;l=c[p>>2]&67109888;r=(l|0)!=0&(e&255)<5?5:e;r=(r&255)>8?8:r&255;c[d+484>>2]=r;h=d+496|0;q=d+488|0;e=c[q>>2]|0;g=(e|0)>0;if(l){if(g){f=+S(+(+(e|0)*(+(c[d+824>>2]|0)*.00001)+.5));if(f<=2147483647.0&f>=-2147483648.0)f=+(~~f|0)*.00001;else f=0.0}else f=1.0;n=8-r|0;m=1<>2]=o;e=0;do{c[o+(e<<2)>>2]=$C(d,512)|0;e=e+1|0}while(e>>>0>>0);j=(1<>>r;k=0;g=0;while(1){e=k*257|0;h=e&65535;e=((((ea(~~+S(+(+V(+(+(e+128|0)/65535.0),+f)*65535.0+.5))&65535,j)|0)+32768|0)>>>0)/65535|0)+1|0;if(g>>>0>>0)do{b[(c[o+((g&l)<<2)>>2]|0)+(g>>>n<<1)>>1]=h;g=g+1|0}while((g|0)!=(e|0));else e=g;k=k+1|0;if((k|0)==255)break;else g=e}g=m<<8;if(e>>>0>>0)do{b[(c[o+((e&l)<<2)>>2]|0)+(e>>>n<<1)>>1]=-1;e=e+1|0}while((e|0)!=(g|0))}else{if(g){f=+S(+(1.0e15/+(c[d+824>>2]|0)/+(e|0)+.5));if(f<=2147483647.0&f>=-2147483648.0)e=~~f;else e=0}else e=1e5;TQ(d,h,r,e)}if(!(c[p>>2]&6291584)){i=s;return}g=d+824|0;f=+S(+(1.0e10/+(c[g>>2]|0)+.5));if(f<=2147483647.0&f>=-2147483648.0)e=~~f;else e=0;TQ(d,d+512|0,r,e);h=d+508|0;e=c[q>>2]|0;if((e|0)>0){f=+S(+(1.0e10/+(e|0)+.5));if(f<=2147483647.0&f>=-2147483648.0)e=~~f;else e=0}else e=c[g>>2]|0;TQ(d,h,r,e);i=s;return}m=d+488|0;e=c[m>>2]|0;if((e|0)>0){f=+S(+(1.0e15/+(c[d+824>>2]|0)/+(e|0)+.5));if(f<=2147483647.0&f>=-2147483648.0)e=~~f;else e=0}else e=1e5;h=$C(d,256)|0;c[g>>2]=h;if((e+-95e3|0)>>>0>1e4){f=+(e|0)*.00001;g=0;do{if((g|0)!=0&g>>>0<255)e=~~+S(+(+V(+(+(g|0)/255.0),+f)*255.0+.5))&255;else e=g&255;a[h+g>>0]=e;g=g+1|0}while((g|0)!=256)}else{e=0;do{a[h+e>>0]=e;e=e+1|0}while((e|0)!=256)}if(!(c[d+216>>2]&6291584)){i=s;return}j=d+824|0;f=+S(+(1.0e10/+(c[j>>2]|0)+.5));if(f<=2147483647.0&f>=-2147483648.0)e=~~f;else e=0;h=$C(d,256)|0;c[d+504>>2]=h;if((e+-95e3|0)>>>0>1e4){f=+(e|0)*.00001;g=0;do{if((g|0)!=0&g>>>0<255)e=~~+S(+(+V(+(+(g|0)/255.0),+f)*255.0+.5))&255;else e=g&255;a[h+g>>0]=e;g=g+1|0}while((g|0)!=256)}else{e=0;do{a[h+e>>0]=e;e=e+1|0}while((e|0)!=256)}g=d+500|0;e=c[m>>2]|0;if((e|0)>0){f=+S(+(1.0e10/+(e|0)+.5));if(f<=2147483647.0&f>=-2147483648.0)e=~~f;else e=0}else e=c[j>>2]|0;h=$C(d,256)|0;c[g>>2]=h;if((e+-95e3|0)>>>0<=1e4){e=0;do{a[h+e>>0]=e;e=e+1|0}while((e|0)!=256);i=s;return}f=+(e|0)*.00001;g=0;do{if((g|0)!=0&g>>>0<255)e=~~+S(+(+V(+(+(g|0)/255.0),+f)*255.0+.5))&255;else e=g&255;a[h+g>>0]=e;g=g+1|0}while((g|0)!=256);i=s;return}function sC(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;if((a|0)!=0?(d=c[a+168>>2]|0,(d|0)!=0):0)Jd[d&255](a,b);d=c[q>>2]|0;c[e>>2]=(b|0)!=0?b:269304;_c(d|0,269280,e|0)|0;wd(10,d|0)|0;JC(a,1)}function tC(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;if(!((b|0)!=0&d>>>0>>0)){b=d;i=h;return b|0}if((e|0)!=0?(f=a[e>>0]|0,g=c+-1|0,f<<24>>24!=0&g>>>0>d>>>0):0)while(1){e=e+1|0;c=d+1|0;a[b+d>>0]=f;f=a[e>>0]|0;if(!(f<<24>>24!=0&c>>>0>>0)){d=c;break}else d=c}a[b+d>>0]=0;b=d;i=h;return b|0}function uC(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;c=c+-1|0;a[c>>0]=0;if(c>>>0<=b>>>0){b=c;i=n;return b|0}if((d|0)==2){f=c;g=0;c=1;while(1){if(!((e|0)!=0|(g|0)<(c|0))){m=20;break}f=f+-1|0;a[f>>0]=a[269112+((e>>>0)%10|0)>>0]|0;if(f>>>0>b>>>0){e=(e>>>0)/10|0;g=g+1|0;c=2}else{m=20;break}}if((m|0)==20){i=n;return f|0}}else if((d|0)==5){f=c;h=0;c=1;g=0;while(1){if(!((e|0)!=0|(h|0)<(c|0))){m=20;break}c=(e>>>0)%10|0;if(c|g){f=f+-1|0;a[f>>0]=a[269112+c>>0]|0;g=1}c=(e>>>0)/10|0;h=h+1|0;do if((h|0)==5&f>>>0>b>>>0){if(g){f=f+-1|0;a[f>>0]=46;break}if(e>>>0<10){f=f+-1|0;a[f>>0]=48;c=0;g=0}else g=0}while(0);if(f>>>0<=b>>>0){m=20;break}else{e=c;c=5}}if((m|0)==20){i=n;return f|0}}else{g=0;h=1;while(1){if(!((e|0)!=0|(g|0)<(h|0))){f=c;m=20;break}if((d|0)==3){k=h;m=18}else if((d|0)==1){f=c+-1|0;a[f>>0]=a[269112+((e>>>0)%10|0)>>0]|0;j=(e>>>0)/10|0;l=h}else if((d|0)==4){k=2;m=18}else{j=0;f=c;l=h}if((m|0)==18){m=0;f=c+-1|0;a[f>>0]=a[269112+(e&15)>>0]|0;j=e>>>4;l=k}if(f>>>0>b>>>0){e=j;c=f;g=g+1|0;h=l}else{m=20;break}}if((m|0)==20){i=n;return f|0}}return 0}function vC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(b){a:do if((a[d>>0]|0)==35){e=1;while(1){f=e+1|0;if((a[d+e>>0]|0)==32)break a;if((f|0)<15)e=f;else{e=f;break}}}else e=0;while(0);f=c[b+172>>2]|0;if(f){Jd[f&255](b,d+e|0);i=h;return}}else e=0;b=c[q>>2]|0;c[g>>2]=d+e;_c(b|0,269256,g|0)|0;wd(10,b|0)|0;i=h;return}function wC(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;g=c+-1|0;if(g>>>0>7|(b+(g<<5)|0)==0){i=h;return}if((d|0)!=0?(e=a[d>>0]|0,e<<24>>24!=0):0){f=0;while(1){d=d+1|0;c=f+1|0;a[b+(g<<5)+f>>0]=e;e=a[d>>0]|0;if(!(e<<24>>24!=0&c>>>0<31))break;else f=c}}else c=0;a[b+(g<<5)+c>>0]=0;i=h;return}function xC(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+32|0;g=j;f=(e|0)<0;d=uC(g,g+24|0,d,f?0-e|0:e)|0;if(f&d>>>0>g>>>0){d=d+-1|0;a[d>>0]=45}g=c+-1|0;if(g>>>0>7|(b+(g<<5)|0)==0){i=j;return}if((d|0)!=0?(h=a[d>>0]|0,h<<24>>24!=0):0){f=0;c=d;e=h;while(1){c=c+1|0;d=f+1|0;a[b+(g<<5)+f>>0]=e;e=a[c>>0]|0;if(!(e<<24>>24!=0&d>>>0<31))break;else f=d}}else d=0;a[b+(g<<5)+d>>0]=0;i=j;return}function yC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,r=0;r=i;i=i+208|0;p=r;o=r+8|0;m=(d|0)!=0;g=e;e=0;while(1){f=a[g>>0]|0;if(!(f<<24>>24))break;if(m&f<<24>>24==64){h=g+1|0;f=a[h>>0]|0;if(f<<24>>24){k=0;while(1)if((k|0)!=9?(a[269136+k>>0]|0)!=f<<24>>24:0)k=k+1|0;else break;if((k|0)<8){l=d+(k<<5)+32|0;a:do if(e>>>0<191){j=e;f=d+(k<<5)|0;while(1){h=a[f>>0]|0;if(!(h<<24>>24!=0&f>>>0>>0)){e=j;break a}e=j+1|0;a[o+j>>0]=h;if(e>>>0<191){j=e;f=f+1|0}else break}}while(0);f=g+2|0}else{g=h;n=13}}else{f=64;n=13}}else n=13;if((n|0)==13){n=0;a[o+e>>0]=f;f=g+1|0;e=e+1|0}if(e>>>0<191)g=f;else break}a[o+e>>0]=0;if(b){b:do if((a[o>>0]|0)==35){f=1;while(1){e=f+1|0;if((a[o+f>>0]|0)==32){e=f;break b}if((e|0)<15)f=e;else break}}else e=0;while(0);f=c[b+172>>2]|0;if(f){Jd[f&255](b,o+e|0);i=r;return}}else e=0;b=c[q>>2]|0;c[p>>2]=o+e;_c(b|0,269256,p|0)|0;wd(10,b|0)|0;i=r;return}function zC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;e=(c[b+208>>2]&32768|0)!=0;if(!(c[b+212>>2]&1048576)){if(!e)sC(b,d);if(!(c[b+376>>2]|0))sC(b,d);else BC(b,d)}if(e?(c[b+376>>2]|0)!=0:0){AC(b,d);i=h;return}if(b){a:do if((a[d>>0]|0)==35){f=1;while(1){e=f+1|0;if((a[d+f>>0]|0)==32){e=f;break a}if((e|0)<15)f=e;else break}}else e=0;while(0);f=c[b+172>>2]|0;if(f){Jd[f&255](b,d+e|0);i=h;return}}else e=0;b=c[q>>2]|0;c[g>>2]=d+e;_c(b|0,269256,g|0)|0;wd(10,b|0)|0;i=h;return}function AC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+224|0;g=h;f=h+4|0;if(!b){f=c[q>>2]|0;c[g>>2]=d;_c(f|0,269256,g|0)|0;wd(10,f|0)|0;i=h;return}UQ(c[b+376>>2]|0,f,d);a:do if((a[f>>0]|0)==35){e=1;while(1){d=e+1|0;if((a[f+e>>0]|0)==32){d=e;break a}if((d|0)<15)e=d;else break}}else d=0;while(0);e=c[b+172>>2]|0;d=f+d|0;if(!e){f=c[q>>2]|0;c[g>>2]=d;_c(f|0,269256,g|0)|0;wd(10,f|0)|0;i=h;return}else{Jd[e&255](b,d);i=h;return}}function BC(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+224|0;if(!a)sC(0,b);else{UQ(c[a+376>>2]|0,d,b);sC(a,d)}}function CC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(!(c[b+212>>2]&2097152))sC(b,d);a:do if((a[d>>0]|0)==35){f=1;while(1){e=f+1|0;if((a[d+f>>0]|0)==32){e=f;break a}if((e|0)<15)f=e;else break}}else e=0;while(0);f=c[b+172>>2]|0;e=d+e|0;if(!f){d=c[q>>2]|0;c[g>>2]=e;_c(d|0,269256,g|0)|0;wd(10,d|0)|0;i=h;return}else{Jd[f&255](b,e);i=h;return}}function DC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(!(c[b+212>>2]&4194304))sC(b,d);a:do if((a[d>>0]|0)==35){f=1;while(1){e=f+1|0;if((a[d+f>>0]|0)==32){e=f;break a}if((e|0)<15)f=e;else break}}else e=0;while(0);f=c[b+172>>2]|0;e=d+e|0;if(!f){d=c[q>>2]|0;c[g>>2]=e;_c(d|0,269256,g|0)|0;wd(10,d|0)|0;i=h;return}else{Jd[f&255](b,e);i=h;return}}function EC(a,b){a=a|0;b=b|0;var d=0;d=i;if(!(c[a+212>>2]&1048576))BC(a,b);else{AC(a,b);i=d;return}}function FC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(c[b+208>>2]&32768){if((e|0)<2){AC(b,d);i=h;return}if(!(c[b+212>>2]&1048576))BC(b,d);AC(b,d);i=h;return}f=c[b+212>>2]|0;if((e|0)<1){if(!(f&2097152))sC(b,d);a:do if((a[d>>0]|0)==35){e=1;while(1){f=e+1|0;if((a[d+e>>0]|0)==32){f=e;break a}if((f|0)<15)e=f;else break}}else f=0;while(0);e=c[b+172>>2]|0;f=d+f|0;if(!e){d=c[q>>2]|0;c[g>>2]=f;_c(d|0,269256,g|0)|0;wd(10,d|0)|0;i=h;return}else{Jd[e&255](b,f);i=h;return}}else{if(!(f&4194304))sC(b,d);b:do if((a[d>>0]|0)==35){e=1;while(1){f=e+1|0;if((a[d+e>>0]|0)==32){f=e;break b}if((f|0)<15)e=f;else break}}else f=0;while(0);e=c[b+172>>2]|0;f=d+f|0;if(!e){d=c[q>>2]|0;c[g>>2]=f;_c(d|0,269256,g|0)|0;wd(10,d|0)|0;i=h;return}else{Jd[e&255](b,f);i=h;return}}}function GC(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=i;i=i+224|0;d=g+0|0;e=269152|0;f=d+24|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));a:do if(!c)d=0;else{d=0;do{e=a[c+d>>0]|0;if(!(e<<24>>24))break a;a[g+(d+24)>>0]=e;d=d+1|0}while((d|0)<195)}while(0);a[g+(d+24)>>0]=0;sC(b,g)}function HC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;if(!a){b=0;i=k;return b|0}f=a+160|0;e=c[f>>2]|0;g=a+164|0;do if(!e){c[g>>2]=0;if(d>>>0<157){c[f>>2]=a;e=a;break}e=dD(a,d)|0;c[f>>2]=e;if(!e){b=0;i=k;return b|0}else{c[g>>2]=d;break}}else{f=c[g>>2]|0;if(!f)if((e|0)==(a|0))h=156;else sC(a,269184);else h=f;if((h|0)!=(d|0)){e=c[a+172>>2]|0;if(!e){b=c[q>>2]|0;c[j>>2]=269216;_c(b|0,269256,j|0)|0;wd(10,b|0)|0;b=0;i=k;return b|0}else{Jd[e&255](a,269216);b=0;i=k;return b|0}}}while(0);c[a+156>>2]=b;b=e;i=k;return b|0}function IC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+160|0;j=i;i=i+168|0;c[j>>2]=0;h=k;if(!a){i=k;return}f=a+160|0;g=c[f>>2]|0;e=a+164|0;a:do if((g|0)!=0?!((c[e>>2]|0)==0|(g|0)==(a|0)):0){Kga(h,1,j|0)|0;t=0;b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,j)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else b=0;while(1){if(b)break a;c[f>>2]=h;c[e>>2]=0;c[a+156>>2]=74;t=0;la(79,a|0,g|0);b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,j)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else break}}while(0);c[e>>2]=0;c[f>>2]=0;c[a+156>>2]=0;i=k;return}function JC(a,b){a=a|0;b=b|0;var d=0,e=0;if(((a|0)!=0?(d=c[a+156>>2]|0,(d|0)!=0):0)?(e=c[a+160>>2]|0,(e|0)!=0):0)Jd[d&255](e,b);Kc()}function KC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if(!a){i=f;return}c[a+176>>2]=b;c[a+168>>2]=d;c[a+172>>2]=e;i=f;return}function LC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!((a|0)!=0&(b|0)!=0)){a=0;i=e;return a|0}a=c[b+8>>2]&d;i=e;return a|0}function MC(b,c){b=b|0;c=c|0;var d=0;d=i;if(!((b|0)!=0&(c|0)!=0)){b=0;i=d;return b|0}b=a[c+24>>0]|0;i=d;return b|0}function NC(b,c){b=b|0;c=c|0;var d=0;d=i;if(!((b|0)!=0&(c|0)!=0)){b=0;i=d;return b|0}b=a[c+25>>0]|0;i=d;return b|0}function OC(b,c){b=b|0;c=c|0;var d=0;d=i;if(!((b|0)!=0&(c|0)!=0)){b=0;i=d;return b|0}b=a[c+29>>0]|0;i=d;return b|0}function PC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((a|0)!=0&(b|0)!=0?((d|0)!=0?(c[b+8>>2]&32|0)!=0:0):0){c[d>>2]=b+170;d=32}else d=0;i=e;return d|0}function QC(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;f=i;if(!((a|0)!=0&(d|0)!=0)){a=0;i=f;return a|0}if(!((e|0)!=0?(b[d+114>>1]&1)!=0:0)){a=0;i=f;return a|0}h[e>>3]=+(c[d+40>>2]|0)*.00001;a=1;i=f;return a|0}function RC(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0;j=i;if(!((a|0)!=0&(b|0)!=0)){h=0;i=j;return h|0}if(!(((e|0)!=0?(c[b+8>>2]&4096|0)!=0:0)&(f|0)!=0&(g|0)!=0&(h|0)!=0)){h=0;i=j;return h|0}c[e>>2]=c[b+116>>2];e=c[b+120>>2]|0;c[g>>2]=e;c[h>>2]=(d[e+1>>0]|0)<<16|(d[e>>0]|0)<<24|(d[e+2>>0]|0)<<8|(d[e+3>>0]|0);c[f>>2]=0;h=4096;i=j;return h|0}function SC(b,e,f,g,h,j,k,l,m){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0;q=i;if((b|0)==0|(e|0)==0|(f|0)==0|(g|0)==0|(h|0)==0|(j|0)==0){b=0;i=q;return b|0}p=c[e>>2]|0;c[f>>2]=p;o=c[e+4>>2]|0;c[g>>2]=o;n=d[e+24>>0]|0;c[h>>2]=n;g=d[e+25>>0]|0;c[j>>2]=g;if(l)c[l>>2]=d[e+26>>0];if(m)c[m>>2]=d[e+27>>0];f=a[e+28>>0]|0;if(k)c[k>>2]=f&255;iC(b,p,o,n,g,f&255,d[e+26>>0]|0,d[e+27>>0]|0);b=1;i=q;return b|0}function TC(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;if((a|0)!=0&(b|0)!=0?(c[b+8>>2]&128|0)!=0:0){if(!e)a=0;else{c[e>>2]=c[b+192>>2];a=128}if(f){c[f>>2]=c[b+196>>2];a=128}if(g){c[g>>2]=d[b+200>>0];a=128}}else a=0;i=h;return a|0}function UC(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0;g=i;if(!((a|0)!=0&(b|0)!=0)){d=0;i=g;return d|0}if(!((d|0)!=0?(c[b+8>>2]&8|0)!=0:0)){d=0;i=g;return d|0}c[d>>2]=c[b+16>>2];c[f>>2]=e[b+20>>1];d=8;i=g;return d|0}function VC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;if((a|0)!=0&(b|0)!=0?(f=c[b+128>>2]|0,(f|0)>0):0){if(d)c[d>>2]=c[b+136>>2];if(e)c[e>>2]=f}else if(!e)f=0;else{c[e>>2]=0;f=0}i=g;return f|0}function WC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((a|0)!=0&(b|0)!=0?((d|0)!=0?(c[b+8>>2]&512|0)!=0:0):0){c[d>>2]=b+140;b=512}else b=0;i=e;return b|0}function XC(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0;j=i;if(!((b|0)!=0&(d|0)!=0)){g=0;i=j;return g|0}if(!(c[d+8>>2]&16)){g=0;i=j;return g|0}if((a[d+25>>0]|0)==3){if(!f)b=0;else{c[f>>2]=c[d+156>>2];b=16}if(h)c[h>>2]=d+160}else{if(!h)b=0;else{c[h>>2]=d+160;b=16}if(f)c[f>>2]=0}if(!g){g=b;i=j;return g|0}c[g>>2]=e[d+22>>1];g=16;i=j;return g|0}function YC(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+912|0;d=e;if(!a){i=e;return}Aga(d|0,a|0,900)|0;Cga(a|0,0,900)|0;b=c[d+724>>2]|0;if(!b)Bfa(a);else Jd[b&255](d,a);IC(d);i=e;return}function ZC(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;if((a|0)==0|(b|0)==0){i=e;return}d=c[a+724>>2]|0;if(!d){Bfa(b);i=e;return}else{Jd[d&255](a,b);i=e;return}}function _C(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;if(!a){b=0;i=e;return b|0}if(!b)sC(a,269400);d=c[a+720>>2]|0;if(!d)d=Afa(b)|0;else d=Wd[d&511](a,b)|0;if(!d)sC(a,269400);Cga(d|0,0,b|0)|0;b=d;i=e;return b|0}function $C(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;if(!a){a=0;i=e;return a|0}if(!b)sC(a,269400);d=c[a+720>>2]|0;if(!d)d=Afa(b)|0;else d=Wd[d&511](a,b)|0;if(!d)sC(a,269400);else{a=d;i=e;return a|0}return 0}function aD(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;do if(!b)d=0;else{if((a|0)!=0?(d=c[a+720>>2]|0,(d|0)!=0):0){d=Wd[d&511](a,b)|0;break}d=Afa(b)|0}while(0);i=e;return d|0}function bD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;if((b|0)<1|(d|0)==0)sC(a,269336);do if((4294967295/(d>>>0)|0)>>>0>=b>>>0?(e=ea(d,b)|0,(e|0)!=0):0){if((a|0)!=0?(f=c[a+720>>2]|0,(f|0)!=0):0){e=Wd[f&511](a,e)|0;break}e=Afa(e)|0}else e=0;while(0);i=g;return e|0}function cD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;if((e|0)<1|(f|0)==0|(d|0)<0)sC(a,269368);j=(d|0)>0;if((b|0)==0&j)sC(a,269368);if((2147483647-d|0)<(e|0)){f=0;i=k;return f|0}g=e+d|0;if((4294967295/(f>>>0)|0)>>>0>>0){f=0;i=k;return f|0}g=ea(g,f)|0;if(!g){f=0;i=k;return f|0}if((a|0)!=0?(h=c[a+720>>2]|0,(h|0)!=0):0)h=Wd[h&511](a,g)|0;else h=Afa(g)|0;if(!h){f=0;i=k;return f|0}g=ea(f,d)|0;if(j)Aga(h|0,b|0,g|0)|0;Cga(h+g|0,0,ea(f,e)|0)|0;f=h;i=k;return f|0}function dD(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;do if(!a)d=0;else{if(b){d=c[a+720>>2]|0;if(!d)d=Afa(b)|0;else d=Wd[d&511](a,b)|0;if(d)break}vC(a,269400);d=0}while(0);i=e;return d|0}function eD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if(!a){i=f;return}c[a+716>>2]=b;c[a+720>>2]=d;c[a+724>>2]=e;i=f;return}function fD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;d=PB(a,b,d,e,0,0,0)|0;if(!d){i=f;return d|0}c[d+208>>2]=32768;c[d+796>>2]=8192;a=d+212|0;c[a>>2]=c[a>>2]|3145728;oD(d,0,0);i=f;return d|0}function gD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;if((b|0)==0|(d|0)==0){i=m;return}wD(b,d);f=b+376|0;g=b+208|0;h=b+435|0;a:while(1){l=xD(b)|0;j=c[f>>2]|0;k=(j|0)==1229209940;e=c[g>>2]|0;if(!k){if(e&4)c[g>>2]=e|8}else{if(!(e&1)){e=5;break}if((a[h>>0]|0)==3&(e&2|0)==0){e=7;break}if(e&8){EC(b,269480);e=c[g>>2]|0}c[g>>2]=e|4}if((j|0)==1229472850){zD(b,d,l);continue}else if((j|0)==1229278788){BD(b,d,l);continue}else{e=WB(b,j)|0;if(e){TD(b,d,l,e);if((j|0)!=1347179589)if(k){e=20;break}else continue;else{c[g>>2]=c[g>>2]|2;continue}}if((j|0)==1347179589){AD(b,d,l);continue}if(k){e=24;break}do if((j|0)==2052348020){RD(b,d,l);continue a}else if((j|0)==1950960965){PD(b,d,l);continue a}else if((j|0)==1866876531){MD(b,d,l);continue a}else if((j|0)==1883455820){ND(b,d,l);continue a}else if((j|0)==1933787468){OD(b,d,l);continue a}else if((j|0)==1934772034){FD(b,d,l);continue a}else if((j|0)==1732332865){CD(b,d,l);continue a}else if((j|0)==1766015824){GD(b,d,l);continue a}else if((j|0)==1767135348){SD(b,d,l);continue a}else if((j|0)==1933723988){DD(b,d,l);continue a}else if((j|0)==1883789683){LD(b,d,l);continue a}else if((j|0)==1749635924){KD(b,d,l);continue a}else if((j|0)==1950701684){QD(b,d,l);continue a}else if((j|0)==1649100612){JD(b,d,l);continue a}else if((j|0)==1934642260){HD(b,d,l);continue a}else if((j|0)==1665684045){ED(b,d,l);continue a}else if((j|0)==1951551059){ID(b,d,l);continue a}else{TD(b,d,l,0);continue a}while(0)}}if((e|0)==5)BC(b,269416);else if((e|0)==7)BC(b,269448);else if((e|0)==20){c[b+408>>2]=0;i=m;return}else if((e|0)==24){c[b+408>>2]=l;i=m;return}}function hD(a,b){a=a|0;b=b|0;var d=0;d=i;if(!a){i=d;return}if(!(c[a+212>>2]&64)){_D(a);uD(a,b);i=d;return}else{DC(a,269504);i=d;return}}function iD(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+16|0;y=z;if(!e){i=z;return}if(!(c[e+212>>2]&64))_D(e);l=c[e+368>>2]|0;c[y>>2]=l;n=y+8|0;a[n>>0]=a[e+435>>0]|0;a[y+9>>0]=a[e+436>>0]|0;a[y+10>>0]=a[e+439>>0]|0;w=a[e+438>>0]|0;v=y+11|0;a[v>>0]=w;h=w&255;if((w&255)>7)l=ea(h>>>3,l)|0;else l=((ea(l,h)|0)+7|0)>>>3;k=y+4|0;c[k>>2]=l;w=e+372|0;h=c[w>>2]|0;t=e+432|0;a:do if((a[t>>0]|0)!=0?(c[e+216>>2]&2|0)!=0:0)switch(d[e+433>>0]|0){case 3:{if((h&3|0)==0?(c[e+348>>2]|0)>>>0>=3:0)break a;if(g)UD(e,g,1);ZD(e);i=z;return}case 0:{if(!(h&7))break a;if(g)UD(e,g,1);ZD(e);i=z;return}case 1:{if((h&7|0)==0?(c[e+348>>2]|0)>>>0>=5:0)break a;if(g)UD(e,g,1);ZD(e);i=z;return}case 2:{if((h&7|0)==4)break a;if(!((g|0)==0|(h&4|0)==0))UD(e,g,1);ZD(e);i=z;return}case 5:{if((h&1|0)==0?(c[e+348>>2]|0)>>>0>=2:0)break a;if(g)UD(e,g,1);ZD(e);i=z;return}case 4:{if((h&3|0)==2)break a;if(!((g|0)==0|(h&2|0)==0))UD(e,g,1);ZD(e);i=z;return}default:{if(h&1)break a;ZD(e);i=z;return}}while(0);if(!(c[e+208>>2]&4))sC(e,269632);u=e+384|0;XD(e,c[u>>2]|0,l+1|0);h=c[u>>2]|0;l=a[h>>0]|0;j=l&255;do if(l<<24>>24)if((l&255)<5){m=e+380|0;WD(e,y,h+1|0,(c[m>>2]|0)+1|0,j);o=c[u>>2]|0;break}else sC(e,269672);else{m=e+380|0;o=h}while(0);Aga(c[m>>2]|0,o|0,(c[k>>2]|0)+1|0)|0;do if(((c[e+708>>2]&4|0)!=0?(a[e+712>>0]|0)==64:0)?(r=(c[u>>2]|0)+1|0,s=c[y>>2]|0,p=b[n>>1]|0,q=p&255,(q&2)!=0):0){h=(p&65535)>>>8&255;if(h<<24>>24==16){if(q<<24>>24==6)l=8;else if(q<<24>>24==2)l=6;else break;if(!s)break;else{j=0;h=r}while(1){n=h+1|0;o=d[h+2>>0]<<8|d[h+3>>0];m=h+4|0;r=h+5|0;q=o+(d[h>>0]<<8|d[n>>0])|0;o=(d[m>>0]<<8|d[r>>0])+o|0;a[h>>0]=q>>>8;a[n>>0]=q;a[m>>0]=o>>>8;a[r>>0]=o;j=j+1|0;if((j|0)==(s|0))break;else h=h+l|0}}else if(h<<24>>24==8){if(q<<24>>24==6)l=4;else if(q<<24>>24==2)l=3;else break;if(!s)break;else{j=0;h=r}while(1){o=d[h+1>>0]|0;a[h>>0]=o+(d[h>>0]|0);r=h+2|0;a[r>>0]=(d[r>>0]|0)+o;j=j+1|0;if((j|0)==(s|0))break;else h=h+l|0}}else break}while(0);j=e+216|0;if(c[j>>2]|0)vD(e,y);k=e+443|0;l=a[k>>0]|0;h=a[v>>0]|0;if(!(l<<24>>24)){a[k>>0]=h;if((h&255)>(d[e+442>>0]|0))sC(e,269704)}else if(l<<24>>24!=h<<24>>24)sC(e,269728);if((a[t>>0]|0)!=0?(x=c[j>>2]|0,(x&2|0)!=0):0){h=a[e+433>>0]|0;if((h&255)<6)VD(y,(c[u>>2]|0)+1|0,h&255,x);if(g)UD(e,g,1);if(f)UD(e,f,0)}else{if(f)UD(e,f,-1);if(g)UD(e,g,-1)}ZD(e);h=c[e+544>>2]|0;if(!h){i=z;return}$d[h&255](e,c[w>>2]|0,d[e+433>>0]|0);i=z;return}function jD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;if(!b){i=k;return}e=b+212|0;do if(!(c[e>>2]&64)){f=tE(b)|0;if(!(c[e>>2]&64)){_D(b);break}else{DC(b,269568);break}}else{if((a[b+432>>0]|0)!=0?(c[b+216>>2]&2|0)==0:0){vC(b,269776);c[b+356>>2]=c[b+352>>2]}f=tE(b)|0}while(0);e=c[b+352>>2]|0;if((f|0)<1|(e|0)==0){i=k;return}else h=0;do{g=0;j=d;while(1){iD(b,c[j>>2]|0,0);g=g+1|0;if((g|0)==(e|0))break;else j=j+4|0}h=h+1|0}while((h|0)!=(f|0));i=k;return} +function Pm(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+448|0;k=s+436|0;l=s;q=s+16|0;r=s+400|0;g=r+0|0;h=d+0|0;j=g+36|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0));g=r+8|0;c[g>>2]=2;j=d+8|0;n=c[j>>2]|0;if((n|0)==7|(n|0)==10)c[g>>2]=3;Mm(b,k);if((c[k+8>>2]|0)!=3){b=162;i=s;return b|0}n=c[b>>2]|0;o=b+8|0;p=c[o>>2]|0;h=q+384|0;g=(c[k>>2]|0)+1|0;c[b>>2]=g;k=(c[k+4>>2]|0)+-1|0;c[o>>2]=k;a:do if(g>>>0>>0){k=l+8|0;g=q;do{Mm(b,l);if(!(c[k>>2]|0))break a;if(g>>>0>>0){c[g+0>>2]=c[l+0>>2];c[g+4>>2]=c[l+4>>2];c[g+8>>2]=c[l+8>>2]}g=g+12|0}while((c[b>>2]|0)>>>0<(c[o>>2]|0)>>>0)}else g=q;while(0);l=g-q|0;g=(l|0)/12|0;c[b>>2]=n;c[o>>2]=p;if((l|0)<0){b=162;i=s;return b|0}h=c[d+24>>2]|0;h=g>>>0>h>>>0?h:g;if((c[j>>2]|0)!=7?(m=c[d+28>>2]|0,(m|0)!=0):0)a[(c[e>>2]|0)+m>>0]=h;if((h|0)>0){k=r+16|0;j=a[r+20>>0]|0;l=c[k>>2]|0;g=q;while(1){c[b>>2]=c[g>>2];c[o>>2]=c[g+4>>2];Om(b,r,e,f,0)|0;l=l+(j&255)|0;c[k>>2]=l;h=h+-1|0;if((h|0)<=0)break;else g=g+12|0}}c[b>>2]=n;c[o>>2]=p;b=0;i=s;return b|0}function Qm(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;k=i;c[b+64>>2]=0;a[b+68>>0]=1;c[b+4>>2]=d;c[b+8>>2]=f;c[b>>2]=c[d+100>>2];if((f|0)!=0?(j=f+156|0,h=c[c[j>>2]>>2]|0,c[b+12>>2]=h,c[b+16>>2]=h+20,c[b+20>>2]=h+56,dh(h),c[b+76>>2]=c[e+40>>2],h=b+72|0,c[h>>2]=0,g<<24>>24!=0):0)c[h>>2]=c[(c[j>>2]|0)+36>>2];g=b+24|0;e=b+80|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[e+0>>2]=c[5586];c[e+4>>2]=c[5587];c[e+8>>2]=c[5588];c[e+12>>2]=c[5589];c[e+16>>2]=c[5590];c[e+20>>2]=c[5591];c[e+24>>2]=c[5592];c[e+28>>2]=c[5593];i=k;return}function Rm(a){a=a|0;var b=0,d=0;d=i;b=c[a+8>>2]|0;if(!b){i=d;return}b=b+108|0;a=c[a+16>>2]|0;c[b+0>>2]=c[a+0>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];c[b+16>>2]=c[a+16>>2];i=d;return}function Sm(a,d){a=a|0;d=d|0;var e=0;e=i;if(!d){d=0;i=e;return d|0}a=c[a+12>>2]|0;if(((b[a+22>>1]|0)+d+(b[a+58>>1]|0)|0)>>>0<=(c[a+4>>2]|0)>>>0){d=0;i=e;return d|0}d=ih(a,d,0)|0;i=e;return d|0}function Tm(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;j=i;h=c[d+20>>2]|0;if(!(a[d+68>>0]|0)){f=h+2|0;g=b[f>>1]|0;g=g+1<<16>>16;b[f>>1]=g;i=j;return}else{l=c[h+4>>2]|0;d=h+2|0;k=b[d>>1]|0;h=(c[h+8>>2]|0)+k|0;c[l+(k<<3)>>2]=(Rg(e)|0)>>16;c[l+(k<<3)+4>>2]=(Rg(f)|0)>>16;a[h>>0]=g<<24>>24!=0?1:2;f=d;g=b[f>>1]|0;g=g+1<<16>>16;b[f>>1]=g;i=j;return}}function Um(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;j=i;g=c[d+12>>2]|0;if(((b[g+22>>1]|0)+1+(b[g+58>>1]|0)|0)>>>0>(c[g+4>>2]|0)>>>0?(h=ih(g,1,0)|0,(h|0)!=0):0){f=h;i=j;return f|0}g=c[d+20>>2]|0;if(!(a[d+68>>0]|0))g=g+2|0;else{k=c[g+4>>2]|0;d=g+2|0;h=b[d>>1]|0;g=(c[g+8>>2]|0)+h|0;c[k+(h<<3)>>2]=(Rg(e)|0)>>16;c[k+(h<<3)+4>>2]=(Rg(f)|0)>>16;a[g>>0]=1;g=d}b[g>>1]=(b[g>>1]|0)+1<<16>>16;k=0;i=j;return k|0}function Vm(d){d=d|0;var f=0,g=0,h=0;h=i;g=c[d+20>>2]|0;if(!g){g=3;i=h;return g|0}if(!(a[d+68>>0]|0)){b[g>>1]=(b[g>>1]|0)+1<<16>>16;g=0;i=h;return g|0}d=c[d+12>>2]|0;if(((b[d+20>>1]|0)+1+(b[d+56>>1]|0)|0)>>>0>(c[d+8>>2]|0)>>>0?(f=ih(d,0,1)|0,(f|0)!=0):0){g=f;i=h;return g|0}d=b[g>>1]|0;if(d<<16>>16>0){b[(c[g+12>>2]|0)+((d<<16>>16)+-1<<1)>>1]=(e[g+2>>1]|0)+65535;d=b[g>>1]|0}b[g>>1]=d+1<<16>>16;g=0;i=h;return g|0}function Wm(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;h=d+64|0;if((c[h>>2]|0)==3){n=0;i=o;return n|0}c[h>>2]=3;l=d+20|0;k=c[l>>2]|0;if(!k){n=3;i=o;return n|0}n=d+68|0;if(!(a[n>>0]|0)){b[k>>1]=(b[k>>1]|0)+1<<16>>16;h=d+12|0}else{h=d+12|0;d=c[h>>2]|0;if(((b[d+20>>1]|0)+1+(b[d+56>>1]|0)|0)>>>0>(c[d+8>>2]|0)>>>0?(j=ih(d,0,1)|0,(j|0)!=0):0){n=j;i=o;return n|0}d=b[k>>1]|0;if(d<<16>>16>0){b[(c[k+12>>2]|0)+((d<<16>>16)+-1<<1)>>1]=(e[k+2>>1]|0)+65535;d=b[k>>1]|0}b[k>>1]=d+1<<16>>16}h=c[h>>2]|0;if(((b[h+22>>1]|0)+1+(b[h+58>>1]|0)|0)>>>0>(c[h+4>>2]|0)>>>0?(m=ih(h,1,0)|0,(m|0)!=0):0){n=m;i=o;return n|0}h=c[l>>2]|0;if(!(a[n>>0]|0))h=h+2|0;else{m=c[h+4>>2]|0;n=h+2|0;l=b[n>>1]|0;h=(c[h+8>>2]|0)+l|0;c[m+(l<<3)>>2]=(Rg(f)|0)>>16;c[m+(l<<3)+4>>2]=(Rg(g)|0)>>16;a[h>>0]=1;h=n}b[h>>1]=(b[h>>1]|0)+1<<16>>16;n=0;i=o;return n|0}function Xm(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;h=c[d+20>>2]|0;if(!h){i=m;return}l=b[h>>1]|0;if(l<<16>>16<2)k=0;else k=(b[(c[h+12>>2]|0)+((l<<16>>16)+-2<<1)>>1]|0)+1|0;j=h+2|0;d=b[j>>1]|0;if(((d<<16>>16>1?(f=c[h+4>>2]|0,e=(d<<16>>16)+-1|0,g=(c[h+8>>2]|0)+e|0,(c[f+(k<<3)>>2]|0)==(c[f+(e<<3)>>2]|0)):0)?(c[f+(k<<3)+4>>2]|0)==(c[f+(e<<3)+4>>2]|0):0)?(a[g>>0]|0)==1:0){d=d+-1<<16>>16;b[j>>1]=d}if(l<<16>>16<=0){i=m;return}e=(d<<16>>16)+-1|0;if((k|0)==(e|0)){b[h>>1]=l+-1<<16>>16;b[j>>1]=d+-1<<16>>16;i=m;return}else{b[(c[h+12>>2]|0)+((l<<16>>16)+-1<<1)>>1]=e;i=m;return}}function Ym(b,d,e,f,g,h,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=i;Cga(b|0,0,1500)|0;n=ei(c[d+96>>2]|0,24080)|0;if(!n){f=7;i=p;return f|0}c[b+1348>>2]=n;c[b+64>>2]=0;a[b+68>>0]=1;c[b+4>>2]=d;c[b+8>>2]=f;c[b>>2]=c[d+100>>2];if((f|0)!=0?(m=f+156|0,o=c[c[m>>2]>>2]|0,c[b+12>>2]=o,c[b+16>>2]=o+20,c[b+20>>2]=o+56,dh(o),c[b+76>>2]=c[e+40>>2],o=b+72|0,c[o>>2]=0,j<<24>>24!=0):0)c[o>>2]=c[(c[m>>2]|0)+36>>2];e=b+24|0;f=b+80|0;c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[f+0>>2]=c[5586];c[f+4>>2]=c[5587];c[f+8>>2]=c[5588];c[f+12>>2]=c[5589];c[f+16>>2]=c[5590];c[f+20>>2]=c[5591];c[f+24>>2]=c[5592];c[f+28>>2]=c[5593];c[b+1352>>2]=c[d+16>>2];c[b+1356>>2]=g;c[b+1468>>2]=k;c[b+1464>>2]=h;c[b+1472>>2]=l;f=b+1476|0;c[f+0>>2]=c[5594];c[f+4>>2]=c[5595];c[f+8>>2]=c[5596];f=0;i=p;return f|0}function Zm(a){a=a|0;var b=0,d=0;d=i;b=c[a+8>>2]|0;if(!b){i=d;return}b=b+108|0;a=c[a+16>>2]|0;c[b+0>>2]=c[a+0>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];c[b+16>>2]=c[a+16>>2];i=d;return}function _m(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,fa=0,ga=0,ha=0,ia=0,ja=0;ja=i;i=i+16|0;ca=ja+8|0;j=ja;W=ja+4|0;c[ca>>2]=f;c[j>>2]=g;p=j^ca^W;p=(p>>>10^p^p>>20)&65535;c[W>>2]=(p|0)==0?29572:p;c[f+1136>>2]=f+112;p=f+1140|0;c[f+1344>>2]=p;O=f+64|0;c[O>>2]=0;da=c[f+72>>2]|0;o=c[f+1488>>2]|0;if((o|0)!=0?(k=c[f+1492>>2]|0,(k|0)!=0):0){Cga(o|0,0,k<<2|0)|0;g=c[j>>2]|0}c[f+1144>>2]=g;j=g+h|0;c[f+1148>>2]=j;c[p>>2]=g;K=f+24|0;o=c[K>>2]|0;L=f+28|0;k=c[L>>2]|0;_=(da|0)!=0;if(_)Id[c[da+4>>2]&511](c[da>>2]|0);if((h|0)<=0){ba=0;i=ja;return ba|0}Y=f+12|0;Z=f+20|0;B=f+68|0;C=da+20|0;D=f+32|0;E=f+40|0;F=f+44|0;G=f+70|0;H=f+36|0;I=da+12|0;J=da+16|0;m=0;l=0;r=j;s=o;j=0;y=o;z=k;A=p;a:while(1){t=m;o=l;while(1){n=o;while(1){q=c[ca>>2]|0;l=q+1136|0;o=c[l>>2]|0;p=g+1|0;h=a[g>>0]|0;k=h&255;b:do switch(k|0){case 22:{g=p;m=n;k=7;h=0;break}case 15:{g=p;m=n;k=26;h=0;break}case 31:{g=p;m=n;k=8;h=0;break}case 6:{g=p;m=n;k=6;h=0;break}case 12:{if(p>>>0>r>>>0){j=160;X=259;break a}g=g+2|0;switch(d[p>>0]|0){case 17:{m=n;k=23;h=0;break b}case 6:{m=n;k=3;h=0;break b}case 12:{m=n;k=20;h=0;break b}case 7:{m=n;k=4;h=0;break b}case 16:{m=n;k=21;h=0;break b}case 33:{m=n;k=25;h=0;break b}case 2:{m=n;k=17;h=0;break b}case 1:{m=n;k=19;h=0;break b}case 0:{m=n;k=15;h=0;break b}default:{j=160;X=259;break a}}}case 13:{g=p;m=n;k=2;h=0;break}case 5:{g=p;m=n;k=9;h=0;break}case 7:{g=p;m=n;k=13;h=0;break}case 8:{g=p;m=n;k=11;h=0;break}case 10:{g=p;m=n;k=22;h=0;break}case 21:{g=p;m=n;k=10;h=0;break}case 30:{g=p;m=n;k=12;h=0;break}case 9:{g=p;m=n;k=5;h=0;break}case 14:{g=p;m=n;k=1;h=0;break}case 11:{g=p;m=n;k=24;h=0;break}case 4:{g=p;m=n;k=14;h=0;break}case 3:{g=p;m=n;k=18;h=0;break}case 255:{k=g+5|0;if(k>>>0>r>>>0){j=160;X=259;break a}h=d[g+2>>0]<<16|d[p>>0]<<24|d[g+3>>0]<<8|d[g+4>>0];p=n<<24>>24!=0;if((h+32e3|0)>>>0>64e3){g=k;m=p?n:1;k=0;break b}else{g=k;m=n;k=0;h=p?h:h<<16;break b}}case 1:{g=p;m=n;k=16;h=0;break}default:{if((h&255)<=31){j=160;X=259;break a}do if((h&255)>=247){g=g+2|0;if(g>>>0>r>>>0){j=160;X=259;break a}k=k<<8;if((h&255)<251){h=(d[p>>0]|k+-63232)+108|0;break}else{h=-108-(d[p>>0]|k+-64256)|0;break}}else{g=p;h=k+-139|0}while(0);m=n;k=0;h=n<<24>>24==0?h<<16:h}}while(0);if((j|0)>0?!((k|0)==23|(k|0)==0|(k|0)==24|(k|0)==22):0)j=0;x=(k|0)==0;n=m<<24>>24==0|x|(k|0)==20?m:0;if(!x){u=n;break}if((o-(q+112)|0)>1020){j=160;X=259;break a}c[o>>2]=h;c[l>>2]=o+4;if(g>>>0>=r>>>0){j=0;X=259;break a}}if((k|0)!=21){v=g;w=j;break}j=q+112|0;k=j;if((o-k|0)<8){j=161;X=259;break a}x=o+-8|0;h=c[o+-4>>2]>>16;p=c[x>>2]>>16;if((p|0)>(x-k>>2|0)){j=161;X=259;break a}k=-2-p|0;t=o+(k<<2)|0;do switch(h|0){case 3:{if((p|0)!=1){j=160;X=259;break a}if(_){Jd[c[C>>2]&255](c[da>>2]|0,b[(c[Z>>2]|0)+2>>1]|0);o=1;j=t;k=0}else{o=1;j=t;k=0}break}case 19:{k=c[q+1464>>2]|0;if((p|0)!=1|(k|0)==0){j=160;X=259;break a}j=c[t>>2]>>16;if((j|0)<0){j=160;X=259;break a}o=c[k>>2]|0;if((o+j|0)>>>0>(c[q+1492>>2]|0)>>>0){j=160;X=259;break a}Aga((c[q+1488>>2]|0)+(j<<2)|0,c[k+136>>2]|0,o<<2|0)|0;o=0;j=t;k=0;break}case 20:{if((p|0)!=2){j=160;X=259;break a}c[t>>2]=(c[t>>2]|0)+(c[o+(k+1<<2)>>2]|0);o=1;j=t;k=0;break}case 22:{if((p|0)!=2){j=160;X=259;break a}c[t>>2]=Wg(c[t>>2]|0,c[o+(k+1<<2)>>2]|0)|0;o=1;j=t;k=0;break}case 23:{if((p|0)!=2){j=160;X=259;break a}j=c[o+(k+1<<2)>>2]|0;if(!j){j=160;X=259;break a}c[t>>2]=Xg(c[t>>2]|0,j)|0;o=1;j=t;k=0;break}case 24:{if((p|0)!=2|(c[q+1464>>2]|0)==0){j=160;X=259;break a}j=c[o+(k+1<<2)>>2]>>16;if((j|0)<0){j=160;X=259;break a}if(j>>>0>=(c[q+1492>>2]|0)>>>0){j=160;X=259;break a}c[(c[q+1488>>2]|0)+(j<<2)>>2]=c[t>>2];o=0;j=t;k=0;break}case 1:{if(p){j=160;X=259;break a}c[q+1400>>2]=1;c[q+1404>>2]=0;j=Wm(f,y,z)|0;if(j){X=259;break a}j=c[Y>>2]|0;if(((b[j+22>>1]|0)+6+(b[j+58>>1]|0)|0)>>>0>(c[j+4>>2]|0)>>>0?(N=ih(j,6,0)|0,(N|0)!=0):0){j=N;X=259;break a}else{o=0;j=t;k=0}break}case 21:{if((p|0)!=2){j=160;X=259;break a}c[t>>2]=(c[t>>2]|0)-(c[o+(k+1<<2)>>2]|0);o=1;j=t;k=0;break}case 25:{if((p|0)!=1|(c[q+1464>>2]|0)==0){j=160;X=259;break a}j=c[t>>2]>>16;if((j|0)<0){j=160;X=259;break a}if(j>>>0>=(c[q+1492>>2]|0)>>>0){j=160;X=259;break a}c[t>>2]=c[(c[q+1488>>2]|0)+(j<<2)>>2];o=1;j=t;k=0;break}case 2:{if(p){j=160;X=259;break a}if(!(c[q+1400>>2]|0)){j=160;X=259;break a}x=q+1404|0;j=c[x>>2]|0;c[x>>2]=j+1;if((j+-1|0)>>>0<6){if((j|0)==3)o=1;else o=(j|0)==6&1;j=c[Z>>2]|0;if(!(a[B>>0]|0))j=j+2|0;else{v=c[j+4>>2]|0;x=j+2|0;w=b[x>>1]|0;j=(c[j+8>>2]|0)+w|0;c[v+(w<<3)>>2]=(Rg(y)|0)>>16;c[v+(w<<3)+4>>2]=(Rg(z)|0)>>16;a[j>>0]=o<<24>>24!=0?1:2;j=x}b[j>>1]=(b[j>>1]|0)+1<<16>>16;o=0;j=t;k=0}else{o=0;j=t;k=0}break}case 0:{if((p|0)!=3){j=160;X=259;break a}if(!(c[q+1400>>2]|0)){j=160;X=259;break a}if((c[q+1404>>2]|0)!=7){j=160;X=259;break a}c[t>>2]=y;c[o+(k+1<<2)>>2]=z;o=2;j=t;k=0;break}case 18:case 17:case 16:case 15:case 14:{q=c[q+1464>>2]|0;if(!q){j=160;X=259;break a}n=h+-13+((h|0)==18&1)|0;j=c[q>>2]|0;if((p|0)!=(ea(j,n)|0)){j=160;X=259;break a}if(!n){o=0;j=t;k=0}else{l=q+136|0;k=o+(n+k<<2)|0;p=0;m=t;while(1){o=c[m>>2]|0;if(j>>>0>1){j=k;h=1;while(1){k=j+4|0;o=(Wg(c[j>>2]|0,c[(c[l>>2]|0)+(h<<2)>>2]|0)|0)+o|0;h=h+1|0;j=c[q>>2]|0;if(h>>>0>=j>>>0)break;else j=k}}c[m>>2]=o;p=p+1|0;if((p|0)==(n|0)){o=n;j=t;k=0;break}else m=m+4|0}}break}case 28:{if(p){j=160;X=259;break a}o=c[W>>2]|0;c[t>>2]=((o|0)>32767&1)+o;o=c[W>>2]|0;o=Wg(o,65536-o|0)|0;c[W>>2]=(o|0)==0?o+10355|0:o;o=1;j=t;k=0;break}case 13:case 12:{o=0;k=0;break}case 27:{if((p|0)!=4){j=160;X=259;break a}if((c[o+(k+2<<2)>>2]|0)>(c[o+(k+3<<2)>>2]|0)){c[t>>2]=c[o+(k+1<<2)>>2];o=1;j=t;k=0}else{o=1;j=t;k=0}break}default:if((p|h|0)>-1){o=0;j=t;k=p}else{j=160;X=259;break a}}while(0);c[(c[ca>>2]|0)+1136>>2]=j+(o<<2);if(g>>>0>>0){t=o;o=u;j=k}else{j=0;X=259;break a}}g=c[24104+(k<<2)>>2]|0;if((o-(q+112)>>2|0)<(g|0)){j=161;X=259;break}x=o+(0-g<<2)|0;c:do switch(k|0){case 2:{c[O>>2]=1;c[D>>2]=(c[D>>2]|0)+(c[x>>2]|0);c[E>>2]=c[o+(1-g<<2)>>2];c[F>>2]=0;o=(c[x>>2]|0)+(c[K>>2]|0)|0;if(!(a[G>>0]|0)){j=v;m=t;l=u;s=o;g=x;q=w;h=c[L>>2]|0;k=A}else{j=0;X=259;break a}break}case 1:{X=116;break a}case 3:{j=x;X=133;break a}case 5:{do if((c[O>>2]&-2|0)==2?(P=c[Z>>2]|0,(P|0)!=0):0){g=b[P>>1]|0;if(g<<16>>16<2)p=0;else p=(b[(c[P+12>>2]|0)+((g<<16>>16)+-2<<1)>>1]|0)+1|0;h=P+2|0;j=b[h>>1]|0;if(((j<<16>>16>1?(Q=c[P+4>>2]|0,M=(j<<16>>16)+-1|0,R=(c[P+8>>2]|0)+M|0,(c[Q+(p<<3)>>2]|0)==(c[Q+(M<<3)>>2]|0)):0)?(c[Q+(p<<3)+4>>2]|0)==(c[Q+(M<<3)+4>>2]|0):0)?(a[R>>0]|0)==1:0){j=j+-1<<16>>16;b[h>>1]=j}o=g<<16>>16;if(g<<16>>16>0){k=(j<<16>>16)+-1|0;if((p|0)==(k|0)){b[P>>1]=g+-1<<16>>16;b[h>>1]=j+-1<<16>>16;break}else{b[(c[P+12>>2]|0)+(o+-1<<1)>>1]=k;break}}}while(0);c[O>>2]=1;j=v;m=t;l=u;g=x;q=w;o=y;h=z;k=A;break}case 6:{j=Wm(f,y,z)|0;if(j){X=259;break a}k=(c[x>>2]|0)+y|0;h=z;X=194;break}case 8:{j=Wm(f,y,z)|0;if(j){X=259;break a}j=c[Y>>2]|0;if(((b[j+22>>1]|0)+3+(b[j+58>>1]|0)|0)>>>0>(c[j+4>>2]|0)>>>0?(S=ih(j,3,0)|0,(S|0)!=0):0){j=S;X=259;break a}h=(c[x>>2]|0)+y|0;j=c[Z>>2]|0;if(!(a[B>>0]|0)){k=j+2|0;m=1}else{q=c[j+4>>2]|0;k=j+2|0;y=b[k>>1]|0;m=(c[j+8>>2]|0)+y|0;c[q+(y<<3)>>2]=(Rg(h)|0)>>16;c[q+(y<<3)+4>>2]=(Rg(z)|0)>>16;a[m>>0]=2;m=(a[B>>0]|0)==0;j=c[Z>>2]|0}b[k>>1]=(b[k>>1]|0)+1<<16>>16;n=(c[o+(1-g<<2)>>2]|0)+h|0;p=(c[o+(2-g<<2)>>2]|0)+z|0;if(m){k=j+2|0;h=1}else{y=c[j+4>>2]|0;k=j+2|0;z=b[k>>1]|0;h=(c[j+8>>2]|0)+z|0;c[y+(z<<3)>>2]=(Rg(n)|0)>>16;c[y+(z<<3)+4>>2]=(Rg(p)|0)>>16;a[h>>0]=2;h=(a[B>>0]|0)==0;j=c[Z>>2]|0}b[k>>1]=(b[k>>1]|0)+1<<16>>16;k=(c[o+(3-g<<2)>>2]|0)+p|0;if(h)j=j+2|0;else{q=c[j+4>>2]|0;z=j+2|0;y=b[z>>1]|0;j=(c[j+8>>2]|0)+y|0;c[q+(y<<3)>>2]=(Rg(n)|0)>>16;c[q+(y<<3)+4>>2]=(Rg(k)|0)>>16;a[j>>0]=1;j=z}b[j>>1]=(b[j>>1]|0)+1<<16>>16;j=v;m=t;l=u;g=x;q=w;o=n;h=k;k=A;break}case 4:{c[O>>2]=1;c[D>>2]=(c[D>>2]|0)+(c[x>>2]|0);k=o+(1-g<<2)|0;c[H>>2]=(c[H>>2]|0)+(c[k>>2]|0);c[E>>2]=c[o+(2-g<<2)>>2];c[F>>2]=c[o+(3-g<<2)>>2];if(!(a[G>>0]|0)){j=v;m=t;l=u;g=x;q=w;o=(c[x>>2]|0)+(c[K>>2]|0)|0;h=(c[k>>2]|0)+(c[L>>2]|0)|0;k=A}else{j=0;X=259;break a}break}case 7:{o=(c[x>>2]|0)+y|0;if(!(c[q+1400>>2]|0)){if(!(c[O>>2]|0)){j=160;X=259;break a}c[O>>2]=2;j=v;m=t;l=u;g=x;q=w;h=z;k=A}else{j=v;m=t;l=u;g=x;q=w;h=z;k=A}break}case 9:{j=Wm(f,y,z)|0;if(j){X=259;break a}k=(c[x>>2]|0)+y|0;h=(c[o+(1-g<<2)>>2]|0)+z|0;X=194;break}case 14:{k=(c[x>>2]|0)+z|0;if(!(c[q+1400>>2]|0)){if(!(c[O>>2]|0)){j=160;X=259;break a}c[O>>2]=2;j=v;m=t;l=u;g=x;q=w;o=y;h=k;k=A}else{j=v;m=t;l=u;g=x;q=w;o=y;h=k;k=A}break}case 10:{h=(c[x>>2]|0)+y|0;k=(c[o+(1-g<<2)>>2]|0)+z|0;if(!(c[q+1400>>2]|0)){if(!(c[O>>2]|0)){j=160;X=259;break a}c[O>>2]=2;j=v;m=t;l=u;g=x;q=w;o=h;h=k;k=A}else{j=v;m=t;l=u;g=x;q=w;o=h;h=k;k=A}break}case 12:{j=Wm(f,y,z)|0;if(j){X=259;break a}j=c[Y>>2]|0;if(((b[j+22>>1]|0)+3+(b[j+58>>1]|0)|0)>>>0>(c[j+4>>2]|0)>>>0?(V=ih(j,3,0)|0,(V|0)!=0):0){j=V;X=259;break a}h=(c[x>>2]|0)+z|0;j=c[Z>>2]|0;if(!(a[B>>0]|0)){k=j+2|0;p=1}else{q=c[j+4>>2]|0;k=j+2|0;z=b[k>>1]|0;p=(c[j+8>>2]|0)+z|0;c[q+(z<<3)>>2]=(Rg(y)|0)>>16;c[q+(z<<3)+4>>2]=(Rg(h)|0)>>16;a[p>>0]=2;p=(a[B>>0]|0)==0;j=c[Z>>2]|0}b[k>>1]=(b[k>>1]|0)+1<<16>>16;m=(c[o+(1-g<<2)>>2]|0)+y|0;n=(c[o+(2-g<<2)>>2]|0)+h|0;if(p){k=j+2|0;h=1}else{y=c[j+4>>2]|0;k=j+2|0;z=b[k>>1]|0;h=(c[j+8>>2]|0)+z|0;c[y+(z<<3)>>2]=(Rg(m)|0)>>16;c[y+(z<<3)+4>>2]=(Rg(n)|0)>>16;a[h>>0]=2;h=(a[B>>0]|0)==0;j=c[Z>>2]|0}b[k>>1]=(b[k>>1]|0)+1<<16>>16;o=(c[o+(3-g<<2)>>2]|0)+m|0;if(h)j=j+2|0;else{q=c[j+4>>2]|0;z=j+2|0;y=b[z>>1]|0;j=(c[j+8>>2]|0)+y|0;c[q+(y<<3)>>2]=(Rg(o)|0)>>16;c[q+(y<<3)+4>>2]=(Rg(n)|0)>>16;a[j>>0]=1;j=z}b[j>>1]=(b[j>>1]|0)+1<<16>>16;j=v;m=t;l=u;g=x;q=w;h=n;k=A;break}case 13:{j=Wm(f,y,z)|0;if(j){X=259;break a}k=y;h=(c[x>>2]|0)+z|0;X=194;break}case 22:{h=c[x>>2]>>16;if((h|0)<0){j=160;X=259;break a}if((h|0)>=(c[q+1364>>2]|0)){j=160;X=259;break a}if((A-(q+1140)|0)>180){j=160;X=259;break a}c[A>>2]=v;p=A+12|0;j=c[(c[(c[ca>>2]|0)+1368>>2]|0)+(h<<2)>>2]|0;o=A+16|0;c[o>>2]=j;k=c[ca>>2]|0;g=c[k+1372>>2]|0;if(!g){v=c[k+1360>>2]|0;j=j+((v|0)<0?0:v)|0;c[o>>2]=j;o=c[(c[(c[ca>>2]|0)+1368>>2]|0)+(h+1<<2)>>2]|0}else o=j+(c[g+(h<<2)>>2]|0)|0;c[A+20>>2]=o;c[p>>2]=j;if(!j){j=160;X=259;break a}c[(c[ca>>2]|0)+1344>>2]=p;m=t;l=u;r=o;g=x;q=w;o=y;h=z;k=p;break}case 23:{if((t|0)>0){j=v;m=t+-1|0;l=u;g=x;q=w;o=y;h=z;k=A;break c}if(!w){j=160;X=259;break a}j=v;m=t;l=u;g=o+(1-g<<2)|0;q=w+-1|0;o=y;h=z;k=A;break}case 20:{g=o+(1-g<<2)|0;c[x>>2]=Xg(c[x>>2]|0,c[g>>2]|0)|0;j=v;m=t;l=0;q=w;o=y;h=z;k=A;break}case 11:{j=Wm(f,y,z)|0;if(j){X=259;break a}j=c[Y>>2]|0;if(((b[j+22>>1]|0)+3+(b[j+58>>1]|0)|0)>>>0>(c[j+4>>2]|0)>>>0?(U=ih(j,3,0)|0,(U|0)!=0):0){j=U;X=259;break a}h=(c[x>>2]|0)+y|0;p=(c[o+(1-g<<2)>>2]|0)+z|0;j=c[Z>>2]|0;if(!(a[B>>0]|0)){k=j+2|0;m=1}else{y=c[j+4>>2]|0;k=j+2|0;z=b[k>>1]|0;m=(c[j+8>>2]|0)+z|0;c[y+(z<<3)>>2]=(Rg(h)|0)>>16;c[y+(z<<3)+4>>2]=(Rg(p)|0)>>16;a[m>>0]=2;m=(a[B>>0]|0)==0;j=c[Z>>2]|0}b[k>>1]=(b[k>>1]|0)+1<<16>>16;l=(c[o+(2-g<<2)>>2]|0)+h|0;p=(c[o+(3-g<<2)>>2]|0)+p|0;if(m){k=j+2|0;h=1}else{y=c[j+4>>2]|0;k=j+2|0;z=b[k>>1]|0;h=(c[j+8>>2]|0)+z|0;c[y+(z<<3)>>2]=(Rg(l)|0)>>16;c[y+(z<<3)+4>>2]=(Rg(p)|0)>>16;a[h>>0]=2;h=(a[B>>0]|0)==0;j=c[Z>>2]|0}b[k>>1]=(b[k>>1]|0)+1<<16>>16;n=(c[o+(4-g<<2)>>2]|0)+l|0;k=(c[o+(5-g<<2)>>2]|0)+p|0;if(h)j=j+2|0;else{q=c[j+4>>2]|0;z=j+2|0;y=b[z>>1]|0;j=(c[j+8>>2]|0)+y|0;c[q+(y<<3)>>2]=(Rg(n)|0)>>16;c[q+(y<<3)+4>>2]=(Rg(k)|0)>>16;a[j>>0]=1;j=z}b[j>>1]=(b[j>>1]|0)+1<<16>>16;j=v;m=t;l=u;g=x;q=w;o=n;h=k;k=A;break}case 25:{k=c[x>>2]|0;h=c[o+(1-g<<2)>>2]|0;c[q+1400>>2]=0;j=v;m=t;l=u;g=x;q=w;o=k;k=A;break}case 17:{if(_){$d[c[J>>2]&255](c[da>>2]|0,1,x);j=v;m=t;l=u;g=x;q=w;o=y;h=z;k=A}else{j=v;m=t;l=u;g=x;q=w;o=y;h=z;k=A}break}case 26:case 15:{j=v;m=t;l=u;g=x;q=w;o=y;h=z;k=A;break}case 24:{if(A>>>0<=(q+1140|0)>>>0){j=160;X=259;break a}k=A+-12|0;j=c[k>>2]|0;r=c[A+-4>>2]|0;c[q+1344>>2]=k;m=t;l=u;g=x;q=w;o=y;h=z;break}case 18:{if(_){c[x>>2]=(c[x>>2]|0)+s;$d[c[I>>2]&255](c[da>>2]|0,0,x);j=v;m=t;l=u;g=x;q=w;o=y;h=z;k=A}else{j=v;m=t;l=u;g=x;q=w;o=y;h=z;k=A}break}case 16:{if(_){$d[c[I>>2]&255](c[da>>2]|0,1,x);j=v;m=t;l=u;g=x;q=w;o=y;h=z;k=A}else{j=v;m=t;l=u;g=x;q=w;o=y;h=z;k=A}break}case 19:{if(_){c[x>>2]=(c[x>>2]|0)+s;j=o+(2-g<<2)|0;c[j>>2]=(c[j>>2]|0)+s;j=o+(4-g<<2)|0;c[j>>2]=(c[j>>2]|0)+s;$d[c[J>>2]&255](c[da>>2]|0,0,x);j=v;m=t;l=u;g=x;q=w;o=y;h=z;k=A}else{j=v;m=t;l=u;g=x;q=w;o=y;h=z;k=A}break}default:{j=160;X=259;break a}}while(0);if((X|0)==194){X=0;j=c[Y>>2]|0;if(((b[j+22>>1]|0)+1+(b[j+58>>1]|0)|0)>>>0>(c[j+4>>2]|0)>>>0?(T=ih(j,1,0)|0,(T|0)!=0):0){j=T;X=259;break}j=c[Z>>2]|0;if(!(a[B>>0]|0))j=j+2|0;else{q=c[j+4>>2]|0;z=j+2|0;y=b[z>>1]|0;j=(c[j+8>>2]|0)+y|0;c[q+(y<<3)>>2]=(Rg(k)|0)>>16;c[q+(y<<3)+4>>2]=(Rg(h)|0)>>16;a[j>>0]=1;j=z}b[j>>1]=(b[j>>1]|0)+1<<16>>16;j=v;m=t;l=u;g=x;q=w;o=k;k=A}c[(c[ca>>2]|0)+1136>>2]=g;if(j>>>0>>0){g=j;j=q;y=o;z=h;A=k}else{j=0;X=259;break}}if((X|0)==116){o=c[Z>>2]|0;do if(o){h=b[o>>1]|0;if(h<<16>>16<2)l=0;else l=(b[(c[o+12>>2]|0)+((h<<16>>16)+-2<<1)>>1]|0)+1|0;m=o+2|0;k=b[m>>1]|0;if(((k<<16>>16>1?(aa=c[o+4>>2]|0,$=(k<<16>>16)+-1|0,ba=(c[o+8>>2]|0)+$|0,(c[aa+(l<<3)>>2]|0)==(c[aa+($<<3)>>2]|0)):0)?(c[aa+(l<<3)+4>>2]|0)==(c[aa+($<<3)+4>>2]|0):0)?(a[ba>>0]|0)==1:0){k=k+-1<<16>>16;b[m>>1]=k}j=h<<16>>16;if(h<<16>>16>0){g=(k<<16>>16)+-1|0;if((l|0)==(g|0)){b[o>>1]=h+-1<<16>>16;b[m>>1]=k+-1<<16>>16;break}else{b[(c[o+12>>2]|0)+(j+-1<<1)>>1]=g;break}}}while(0);do if(_)if(!(Wd[c[da+8>>2]&511](c[da>>2]|0,b[o+2>>1]|0)|0)){ce[c[da+24>>2]&255](c[da>>2]|0,c[Z>>2]|0,c[f+76>>2]|0,c[(c[ca>>2]|0)+1468>>2]|0)|0;break}else{ba=160;i=ja;return ba|0}while(0);lh(c[Y>>2]|0);ba=0;i=ja;return ba|0}else if((X|0)==133){v=c[j>>2]|0;w=c[o+(2-g<<2)>>2]|0;k=c[o+(3-g<<2)>>2]>>16;r=c[o+(4-g<<2)>>2]>>16;t=q+1496|0;if(a[t>>0]|0){ba=160;i=ja;return ba|0}if(a[q+70>>0]|0){ba=160;i=ja;return ba|0}u=q+32|0;s=(c[u>>2]|0)+(c[o+(1-g<<2)>>2]|0)|0;h=q+1356|0;j=(c[(c[(c[q+4>>2]|0)+128>>2]|0)+48>>2]|0)==0;d:do if(!(c[h>>2]|0)){if(j){ba=160;i=ja;return ba|0}}else if(j){o=q+1348|0;j=c[o>>2]|0;e:do if(k>>>0<=255?(fa=Ld[c[j+20>>2]&511](e[(c[j+24>>2]|0)+(k<<1)>>1]|0)|0,ga=c[q+1352>>2]|0,(ga|0)!=0):0){j=c[h>>2]|0;k=0;while(1){g=c[j+(k<<2)>>2]|0;if(((g|0)!=0?(a[g>>0]|0)==(a[fa>>0]|0):0)?(qga(g,fa)|0)==0:0)break e;k=k+1|0;if(k>>>0>=ga>>>0){k=-1;break}}}else k=-1;while(0);j=c[o>>2]|0;if(r>>>0<=255?(ha=Ld[c[j+20>>2]&511](e[(c[j+24>>2]|0)+(r<<1)>>1]|0)|0,ia=c[q+1352>>2]|0,(ia|0)!=0):0){j=c[h>>2]|0;h=0;while(1){g=c[j+(h<<2)>>2]|0;if(((g|0)!=0?(a[g>>0]|0)==(a[ha>>0]|0):0)?(qga(g,ha)|0)==0:0){r=h;break d}h=h+1|0;if(h>>>0>=ia>>>0){r=-1;break}}}else r=-1}while(0);if((k|r|0)<0){ba=160;i=ja;return ba|0}if(a[q+69>>0]|0){j=c[q+8>>2]|0;g=c[c[j+156>>2]>>2]|0;h=jh(g,2)|0;if(h){ba=h;i=ja;return ba|0}ba=c[g+88>>2]|0;c[ba>>2]=k;b[ba+4>>1]=514;c[ba+8>>2]=0;c[ba+12>>2]=0;c[ba+32>>2]=r;b[ba+36>>1]=2;c[ba+40>>2]=(Rg(s-v|0)|0)>>16;c[ba+44>>2]=(Rg(w)|0)>>16;c[j+128>>2]=2;c[j+132>>2]=c[g+52>>2];c[j+72>>2]=1668246896;c[g+84>>2]=2;ba=0;i=ja;return ba|0}kh(c[q+12>>2]|0);a[t>>0]=1;p=q+1472|0;j=Wd[c[p>>2]&511](q,k)|0;a[t>>0]=0;if(j){ba=j;i=ja;return ba|0}h=u;g=c[h>>2]|0;h=c[h+4>>2]|0;l=q+40|0;n=l;m=c[n>>2]|0;n=c[n+4>>2]|0;c[u>>2]=0;c[q+36>>2]=0;o=q+24|0;c[o>>2]=s-v;k=q+28|0;c[k>>2]=w;a[t>>0]=1;j=Wd[c[p>>2]&511](q,r)|0;a[t>>0]=0;if(j){ba=j;i=ja;return ba|0}ba=u;c[ba>>2]=g;c[ba+4>>2]=h;ba=l;c[ba>>2]=m;c[ba+4>>2]=n;c[o>>2]=0;c[k>>2]=0;ba=0;i=ja;return ba|0}else if((X|0)==259){i=ja;return j|0}return 0}function $m(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=ch(b,16,g)|0;g=c[g>>2]|0;if(g){a=g;i=h;return a|0}c[f+4>>2]=d;c[f>>2]=d;c[f+8>>2]=e;c[f+12>>2]=2;c[a>>2]=b;c[a+4>>2]=f;c[a+8>>2]=0;c[a+12>>2]=0;a=0;i=h;return a|0}function an(a){a=a|0;var b=0,d=0;b=i;d=a+4|0;eh(c[a>>2]|0,c[d>>2]|0);c[d>>2]=0;i=b;return}function bn(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0;lb=i;i=i+160|0;ua=lb+144|0;ta=lb+136|0;kb=lb+128|0;eb=lb+120|0;ib=lb+80|0;jb=lb+40|0;db=lb+32|0;hb=lb;sa=lb+48|0;Ra=c[b>>2]|0;Sa=b+8|0;Ta=c[Sa>>2]|0;if(!Ta){b=6;i=lb;return b|0}gb=b+4|0;C=c[gb>>2]|0;y=C+12|0;g=c[y>>2]|0;a:do if((g|0)>1){f=C+8|0;j=f;m=c[C>>2]|0;f=c[f>>2]|0}else{k=c[C>>2]|0;j=C+8|0;f=c[j>>2]|0;b:do if((g|0)>0)m=k;else{c:do if(k>>>0>>0){d:while(1){g=k+1|0;c[C>>2]=g;switch(d[k>>0]|0){case 59:{m=g;va=9;break d}case 10:case 13:{l=g;va=8;break d}case 9:case 32:break;case 26:{o=g;break c}default:{m=g;break b}}if(g>>>0>>0)k=g;else{o=g;break c}}if((va|0)==8){c[y>>2]=2;m=l;break a}else if((va|0)==9){c[y>>2]=1;break b}}else o=k;while(0);c[y>>2]=3;m=o;break a}while(0);while(1){if(m>>>0>=f>>>0){g=3;break}g=m+1|0;c[C>>2]=g;m=a[m>>0]|0;va=m&255;if((va|0)==10|(va|0)==13){m=g;g=2;break}if(m<<24>>24==26){m=g;g=3;break}else m=g}c[y>>2]=g;j=C+8|0}while(0);c[y>>2]=0;e:do if(m>>>0>>0){f:while(1){g:while(1){g=m;m=m+1|0;c[C>>2]=m;switch(d[g>>0]|0){case 26:break e;case 9:case 32:break;case 59:{va=22;break f}case 10:case 13:{t=m;va=21;break g}default:{q=g;s=m;va=19;break g}}if(m>>>0>=f>>>0)break e}if((va|0)==19){va=0;g=s;m=q;h:while(1){if(g>>>0>=f>>>0){z=g;va=28;break}m=m+2|0;c[C>>2]=m;switch(d[g>>0]|0){case 59:{v=m;va=27;break h}case 10:case 13:{u=m;va=26;break h}case 26:{z=m;va=28;break h}case 9:case 32:{x=0;A=m;break h}default:{I=g;g=m;m=I}}}if((va|0)==26){c[y>>2]=2;x=2;A=u}else if((va|0)==27){c[y>>2]=1;x=1;A=v}else if((va|0)==28){c[y>>2]=3;x=3;A=z}if(q){r=q;w=A;B=x;va=32;break}if((x|0)==2)p=A;else{wa=2;va=275;break}}else if((va|0)==21){c[y>>2]=2;p=t}c[y>>2]=0;f=c[j>>2]|0;if(p>>>0>=f>>>0)break e;else m=p}if((va|0)==22){c[y>>2]=1;b=2;i=lb;return b|0}else if((va|0)==32){if((w+~r|0)!=16){b=2;i=lb;return b|0}if(rga(r,22664,16)|0){b=2;i=lb;return b|0}G=ta+4|0;r=sa+4|0;s=sa+8|0;t=sa+16|0;u=sa+24|0;v=Ta+4|0;w=sa+12|0;x=Ta+8|0;y=sa+20|0;z=Ta+12|0;A=sa+28|0;E=Ta+16|0;F=Ta+20|0;H=Ta+24|0;I=ua+4|0;f=B;p=160;o=C;i:while(1){l=o+12|0;j:do if((f|0)>1){f=o+8|0;k=f;m=c[o>>2]|0;f=c[f>>2]|0}else{m=c[o>>2]|0;g=o+8|0;j=c[g>>2]|0;k:do if((f|0)<=0){l:do if(m>>>0>>0){f=m;m:while(1){m=f+1|0;c[o>>2]=m;switch(d[f>>0]|0){case 10:case 13:{J=m;va=41;break m}case 59:{K=m;va=42;break m}case 9:case 32:break;case 26:{ea=m;break l}default:break k}if(m>>>0>>0)f=m;else{ea=m;break l}}if((va|0)==41){c[l>>2]=2;k=g;m=J;f=j;break j}else if((va|0)==42){c[l>>2]=1;m=K;break k}}else ea=m;while(0);c[l>>2]=3;k=g;m=ea;f=j;break j}while(0);while(1){if(m>>>0>=j>>>0){f=3;break}f=m+1|0;c[o>>2]=f;m=a[m>>0]|0;va=m&255;if((va|0)==10|(va|0)==13){m=f;f=2;break}if(m<<24>>24==26){m=f;f=3;break}else m=f}c[l>>2]=f;k=o+8|0;f=j}while(0);c[l>>2]=0;if(m>>>0>=f>>>0){na=l;qa=p;va=56;break}while(1){n:while(1){g=m;m=m+1|0;c[o>>2]=m;switch(d[g>>0]|0){case 9:case 32:break;case 59:{Y=l;pa=p;va=55;break i}case 26:{na=l;qa=p;va=56;break i}case 10:case 13:{N=m;va=54;break n}default:{L=g;M=m;va=52;break n}}if(m>>>0>=f>>>0){na=l;qa=p;va=56;break i}}if((va|0)==52){va=0;g=M;m=L;o:while(1){if(g>>>0>=f>>>0){fa=g;va=61;break}m=m+2|0;c[o>>2]=m;switch(d[g>>0]|0){case 59:{P=m;va=60;break o}case 26:{fa=m;va=61;break o}case 9:case 32:{ca=0;ga=m;break o}case 10:case 13:{O=m;va=59;break o}default:{C=g;g=m;m=C}}}if((va|0)==59){va=0;c[l>>2]=2;ca=2;ga=O}else if((va|0)==60){va=0;c[l>>2]=1;ca=1;ga=P}else if((va|0)==61){va=0;c[l>>2]=3;ca=3;ga=fa}if(L){j=L;m=ga;l=ca;break}if((ca|0)==2)oa=ga;else{cb=p;break i}}else if((va|0)==54){c[l>>2]=2;oa=N}c[l>>2]=0;f=c[k>>2]|0;if(oa>>>0>=f>>>0){na=l;qa=p;va=56;break i}else m=oa}g=m+~j|0;k=a[j>>0]|0;m=0;p:while(1){f=c[22824+(m<<2)>>2]|0;q:do if((a[f>>0]|0)==k<<24>>24)while(1){if(!(rga(f,j,g)|0)){ra=m;va=71;break p}m=m+1|0;if((m|0)>=74)break q;f=c[22824+(m<<2)>>2]|0;if((a[f>>0]|0)!=k<<24>>24){D=p;break p}}while(0);m=m+1|0;if((m|0)>=74){D=p;break}}r:do if((va|0)==71){va=0;switch(ra|0){case 40:{c[ta>>2]=3;if((Vs(b,ta,1)|0)!=1){cb=p;break i}D=c[G>>2]|0;if((D|0)==0|(D|0)==2){D=p;break r}else{cb=7;break i}}case 30:{c[sa>>2]=4;if((Vs(b,sa,1)|0)!=1){cb=p;break i}a[Ta>>0]=a[r>>0]|0;D=p;break r}case 14:{c[sa>>2]=2;if((Vs(b,sa,1)|0)!=1){cb=p;break i}c[H>>2]=c[r>>2];D=p;break r}case 26:{c[sa>>2]=2;c[s>>2]=2;c[t>>2]=2;c[u>>2]=2;if((Vs(b,sa,4)|0)!=4){cb=p;break i}c[v>>2]=c[r>>2];c[x>>2]=c[w>>2];c[z>>2]=c[y>>2];c[E>>2]=c[A>>2];D=p;break r}case 45:{c[ua>>2]=3;if((Vs(b,ua,1)|0)!=1){cb=p;break i}f=c[I>>2]|0;q=c[gb>>2]|0;o=q+12|0;m=c[o>>2]|0;p=q+8|0;if(f)while(1){f=f+-1|0;s:do if((m|0)>1){m=c[q>>2]|0;j=c[p>>2]|0}else{g=c[q>>2]|0;j=c[p>>2]|0;t:do if((m|0)<=0){u:do if(g>>>0>>0){v:while(1){m=g+1|0;c[q>>2]=m;switch(d[g>>0]|0){case 59:{R=m;va=93;break v}case 26:{ha=m;break u}case 9:case 32:break;case 10:case 13:{Q=m;va=92;break v}default:{g=m;break t}}if(m>>>0>>0)g=m;else{ha=m;break u}}if((va|0)==92){va=0;c[o>>2]=2;m=Q;break s}else if((va|0)==93){va=0;c[o>>2]=1;g=R;break t}}else ha=g;while(0);c[o>>2]=3;m=ha;break s}while(0);while(1){if(g>>>0>=j>>>0){m=g;g=3;break}m=g+1|0;c[q>>2]=m;g=a[g>>0]|0;D=g&255;if((D|0)==10|(D|0)==13){g=2;break}if(g<<24>>24==26){g=3;break}else g=m}c[o>>2]=g}while(0);c[o>>2]=0;if(m>>>0>=j>>>0){$=o;va=104;break i}w:while(1){g=m+1|0;c[q>>2]=g;switch(d[m>>0]|0){case 26:{$=o;va=104;break i}case 9:case 32:if(g>>>0>>0){m=g;continue w}else{$=o;va=104;break i}case 10:case 13:{c[o>>2]=2;m=g;break}case 59:{Z=o;va=103;break i}default:{k=m;x:while(1){if(g>>>0>=j>>>0){ia=g;va=109;break}k=k+2|0;c[q>>2]=k;switch(d[g>>0]|0){case 10:case 13:{S=k;va=107;break x}case 59:{T=k;va=108;break x}case 9:case 32:{ba=0;ja=k;break x}case 26:{ia=k;va=109;break x}default:{D=g;g=k;k=D}}}if((va|0)==107){va=0;c[o>>2]=2;ba=2;ja=S}else if((va|0)==108){va=0;c[o>>2]=1;ba=1;ja=T}else if((va|0)==109){va=0;c[o>>2]=3;ba=3;ja=ia}if(m){m=ba;break w}if((ba|0)==2)m=ja;else{wa=160;va=275;break i}}}c[o>>2]=0;if(m>>>0>=j>>>0){$=o;va=104;break i}}if(!f)break}y:while(1){z:do if((m|0)>1){m=c[q>>2]|0;k=c[p>>2]|0}else{f=c[q>>2]|0;k=c[p>>2]|0;A:do if((m|0)<=0){B:do if(f>>>0>>0){C:while(1){m=f+1|0;c[q>>2]=m;switch(d[f>>0]|0){case 10:case 13:{U=m;va=119;break C}case 9:case 32:break;case 59:{V=m;va=120;break C}case 26:{ka=m;break B}default:{f=m;break A}}if(m>>>0>>0)f=m;else{ka=m;break B}}if((va|0)==119){va=0;c[o>>2]=2;m=U;break z}else if((va|0)==120){va=0;c[o>>2]=1;f=V;break A}}else ka=f;while(0);c[o>>2]=3;m=ka;break z}while(0);while(1){if(f>>>0>=k>>>0){m=f;f=3;break}m=f+1|0;c[q>>2]=m;f=a[f>>0]|0;D=f&255;if((D|0)==10|(D|0)==13){f=2;break}if(f<<24>>24==26){f=3;break}else f=m}c[o>>2]=f}while(0);c[o>>2]=0;if(m>>>0>=k>>>0){aa=o;va=131;break i}D:while(1){f=m+1|0;c[q>>2]=f;switch(d[m>>0]|0){case 9:case 32:if(f>>>0>>0){m=f;continue D}else{aa=o;va=131;break i}case 59:{_=o;va=130;break i}case 26:{aa=o;va=131;break i}case 10:case 13:{c[o>>2]=2;m=f;break}default:{g=m;E:while(1){if(f>>>0>=k>>>0){la=f;va=136;break}g=g+2|0;c[q>>2]=g;switch(d[f>>0]|0){case 26:{la=g;va=136;break E}case 9:case 32:{da=0;ma=g;break E}case 59:{X=g;va=135;break E}case 10:case 13:{W=g;va=134;break E}default:{D=f;f=g;g=D}}}if((va|0)==134){va=0;c[o>>2]=2;da=2;ma=W}else if((va|0)==135){va=0;c[o>>2]=1;da=1;ma=X}else if((va|0)==136){va=0;c[o>>2]=3;da=3;ma=la}if(m){l=m;f=ma;m=da;break D}if((da|0)==2)m=ma;else{wa=160;va=275;break i}}}c[o>>2]=0;if(m>>>0>=k>>>0){aa=o;va=131;break i}}k=f+~l|0;j=a[l>>0]|0;f=0;F:while(1){g=c[22824+(f<<2)>>2]|0;G:do if((a[g>>0]|0)==j<<24>>24)while(1){if(!(rga(g,l,k)|0))break F;f=f+1|0;if((f|0)>=74)break G;g=c[22824+(f<<2)>>2]|0;if((a[g>>0]|0)!=j<<24>>24)continue y}while(0);f=f+1|0;if((f|0)>=74)continue y}if((f|0)==17|(f|0)==20){D=0;break}}break}case 0:{c[sa>>2]=2;if((Vs(b,sa,1)|0)!=1){cb=p;break i}c[F>>2]=c[r>>2];D=p;break r}case 49:{h=l;n=o;va=147;break i}case 20:{wa=0;va=275;break i}default:{D=p;break r}}}while(0);o=c[gb>>2]|0;f=c[o+12>>2]|0;p=D}H:do if((va|0)==55){c[Y>>2]=1;cb=pa}else if((va|0)==56){c[na>>2]=3;cb=qa}else if((va|0)==103){c[Z>>2]=1;b=160;i=lb;return b|0}else if((va|0)==104){c[$>>2]=3;b=160;i=lb;return b|0}else if((va|0)==130){c[_>>2]=1;b=160;i=lb;return b|0}else if((va|0)==131){c[aa>>2]=3;b=160;i=lb;return b|0}else if((va|0)==147){r=kb+4|0;s=ib+8|0;t=ib+16|0;u=ib+24|0;v=ib+32|0;w=ib+4|0;x=ib+12|0;y=ib+20|0;z=ib+28|0;A=ib+36|0;B=jb+4|0;C=hb+8|0;D=hb+16|0;E=hb+24|0;F=hb+4|0;G=hb+12|0;H=hb+20|0;I=hb+28|0;I:while(1){m=n+12|0;J:do if((h|0)>1){f=c[n>>2]|0;k=c[n+8>>2]|0}else{f=c[n>>2]|0;k=c[n+8>>2]|0;K:do if((h|0)>0)g=f;else{L:do if(f>>>0>>0){M:while(1){g=f+1|0;c[n>>2]=g;switch(d[f>>0]|0){case 10:case 13:{xa=g;va=154;break M}case 59:{ya=g;va=155;break M}case 9:case 32:break;case 26:{Va=g;break L}default:break K}if(g>>>0>>0)f=g;else{Va=g;break L}}if((va|0)==154){va=0;c[m>>2]=2;f=xa;break J}else if((va|0)==155){va=0;c[m>>2]=1;g=ya;break K}}else Va=f;while(0);c[m>>2]=3;f=Va;break J}while(0);while(1){if(g>>>0>=k>>>0){f=g;h=3;break}f=g+1|0;c[n>>2]=f;g=a[g>>0]|0;ua=g&255;if((ua|0)==10|(ua|0)==13){h=2;break}if(g<<24>>24==26){h=3;break}else g=f}c[m>>2]=h}while(0);c[m>>2]=0;if(f>>>0>=k>>>0){Ua=m;va=166;break}N:while(1){g=f+1|0;c[n>>2]=g;switch(d[f>>0]|0){case 59:{Ja=m;va=165;break I}case 9:case 32:if(g>>>0>>0){f=g;continue N}else{Ua=m;va=166;break I}case 10:case 13:{c[m>>2]=2;f=g;break}case 26:{Ua=m;va=166;break I}default:{h=f;O:while(1){if(g>>>0>=k>>>0){Wa=g;va=171;break}h=h+2|0;c[n>>2]=h;switch(d[g>>0]|0){case 59:{Aa=h;va=170;break O}case 10:case 13:{za=h;va=169;break O}case 9:case 32:{Oa=0;Xa=h;break O}case 26:{Wa=h;va=171;break O}default:{ua=g;g=h;h=ua}}}if((va|0)==169){va=0;c[m>>2]=2;Oa=2;Xa=za}else if((va|0)==170){va=0;c[m>>2]=1;Oa=1;Xa=Aa}else if((va|0)==171){va=0;c[m>>2]=3;Oa=3;Xa=Wa}if(f){k=f;f=Xa;break N}if((Oa|0)==2)f=Xa;else{cb=160;break H}}}c[m>>2]=0;if(f>>>0>=k>>>0){Ua=m;va=166;break I}}g=f+~k|0;j=a[k>>0]|0;h=0;P:while(1){f=c[22824+(h<<2)>>2]|0;Q:do if((a[f>>0]|0)==j<<24>>24)while(1){if(!(rga(f,k,g)|0)){fb=h;va=181;break P}h=h+1|0;if((h|0)>=74)break Q;f=c[22824+(h<<2)>>2]|0;if((a[f>>0]|0)!=j<<24>>24){e=n;break P}}while(0);h=h+1|0;if((h|0)>=74){e=n;break}}R:do if((va|0)==181){va=0;switch(fb|0){case 53:{e=c[Sa>>2]|0;q=e+32|0;c[kb>>2]=3;if((Vs(b,kb,1)|0)!=1){cb=160;break H}f=c[r>>2]|0;c[q>>2]=f;if(f){g=e+28|0;c[g>>2]=hh(c[b>>2]|0,20,0,f,0,eb)|0;e=c[eb>>2]|0;if(e){cb=e;break H}}else g=e+28|0;f=0;S:while(1){e=c[gb>>2]|0;o=e+12|0;p=e+8|0;h=c[o>>2]|0;T:while(1){U:do if((h|0)>1){h=c[e>>2]|0;l=c[p>>2]|0}else{j=c[e>>2]|0;l=c[p>>2]|0;V:do if((h|0)<=0){W:do if(j>>>0>>0){X:while(1){h=j+1|0;c[e>>2]=h;switch(d[j>>0]|0){case 10:case 13:{Fa=h;va=195;break X}case 26:{Ya=h;break W}case 59:{Ga=h;va=196;break X}case 9:case 32:break;default:{j=h;break V}}if(h>>>0>>0)j=h;else{Ya=h;break W}}if((va|0)==195){va=0;c[o>>2]=2;h=Fa;break U}else if((va|0)==196){va=0;c[o>>2]=1;j=Ga;break V}}else Ya=j;while(0);c[o>>2]=3;h=Ya;break U}while(0);while(1){if(j>>>0>=l>>>0){h=j;j=3;break}h=j+1|0;c[e>>2]=h;j=a[j>>0]|0;ua=j&255;if((ua|0)==10|(ua|0)==13){j=2;break}if(j<<24>>24==26){j=3;break}else j=h}c[o>>2]=j}while(0);c[o>>2]=0;if(h>>>0>=l>>>0){Na=o;va=207;break I}Y:while(1){j=h+1|0;c[e>>2]=j;switch(d[h>>0]|0){case 10:case 13:{c[o>>2]=2;h=j;break}case 59:{Ma=o;va=206;break I}case 26:{Na=o;va=207;break I}case 9:case 32:if(j>>>0>>0){h=j;continue Y}else{Na=o;va=207;break I}default:{k=h;Z:while(1){if(j>>>0>=l>>>0){Za=j;va=212;break}k=k+2|0;c[e>>2]=k;switch(d[j>>0]|0){case 26:{Za=k;va=212;break Z}case 9:case 32:{Qa=0;_a=k;break Z}case 10:case 13:{Ha=k;va=210;break Z}case 59:{Ia=k;va=211;break Z}default:{ua=j;j=k;k=ua}}}if((va|0)==210){va=0;c[o>>2]=2;Qa=2;_a=Ha}else if((va|0)==211){va=0;c[o>>2]=1;Qa=1;_a=Ia}else if((va|0)==212){va=0;c[o>>2]=3;Qa=3;_a=Za}if(h){j=_a;n=Qa;break Y}if((Qa|0)==2)h=_a;else{cb=160;break H}}}c[o>>2]=0;if(h>>>0>=l>>>0){Na=o;va=207;break I}}l=j+~h|0;m=a[h>>0]|0;k=0;_:while(1){j=c[22824+(k<<2)>>2]|0;$:do if((a[j>>0]|0)==m<<24>>24)while(1){if(!(rga(j,h,l)|0)){h=k;break _}k=k+1|0;if((k|0)>=74)break $;j=c[22824+(k<<2)>>2]|0;if((a[j>>0]|0)!=m<<24>>24){h=n;continue T}}while(0);k=k+1|0;if((k|0)>=74){h=n;continue T}}switch(h|0){case 56:break T;case 75:{h=n;break}case 20:case 21:case 23:break S;default:{cb=160;break H}}}if((f|0)>=(c[q>>2]|0)){cb=160;break H}e=c[g>>2]|0;c[ib>>2]=3;c[s>>2]=2;c[t>>2]=2;c[u>>2]=2;c[v>>2]=2;if((Vs(b,ib,5)|0)!=5){cb=160;break H}c[e+(f*20|0)>>2]=c[w>>2];c[e+(f*20|0)+4>>2]=c[x>>2];c[e+(f*20|0)+8>>2]=c[y>>2];c[e+(f*20|0)+12>>2]=c[z>>2];c[e+(f*20|0)+16>>2]=c[A>>2];f=f+1|0}c[q>>2]=f;break R}case 75:{e=n;break R}case 51:case 50:break;case 20:case 21:{wa=0;va=275;break I}default:{cb=160;break H}}e=c[Sa>>2]|0;q=e+40|0;c[jb>>2]=3;if((Vs(b,jb,1)|0)!=1){cb=160;break H}f=c[B>>2]|0;c[q>>2]=f;if(f){g=e+36|0;c[g>>2]=hh(c[b>>2]|0,16,0,f,0,db)|0;e=c[db>>2]|0;if(e){cb=e;break H}}else g=e+36|0;e=0;aa:while(1){p=c[gb>>2]|0;n=p+12|0;o=p+8|0;h=c[n>>2]|0;ba:while(1){ca:do if((h|0)>1){h=c[p>>2]|0;j=c[o>>2]|0}else{f=c[p>>2]|0;j=c[o>>2]|0;da:do if((h|0)<=0){ea:do if(f>>>0>>0){fa:while(1){h=f+1|0;c[p>>2]=h;switch(d[f>>0]|0){case 10:case 13:{Ba=h;va=238;break fa}case 26:{$a=h;break ea}case 9:case 32:break;case 59:{Ca=h;va=239;break fa}default:{f=h;break da}}if(h>>>0>>0)f=h;else{$a=h;break ea}}if((va|0)==238){va=0;c[n>>2]=2;h=Ba;break ca}else if((va|0)==239){va=0;c[n>>2]=1;f=Ca;break da}}else $a=f;while(0);c[n>>2]=3;h=$a;break ca}while(0);while(1){if(f>>>0>=j>>>0){h=f;f=3;break}h=f+1|0;c[p>>2]=h;f=a[f>>0]|0;ua=f&255;if((ua|0)==10|(ua|0)==13){f=2;break}if(f<<24>>24==26){f=3;break}else f=h}c[n>>2]=f}while(0);c[n>>2]=0;if(h>>>0>=j>>>0){La=n;va=250;break I}ga:while(1){f=h+1|0;c[p>>2]=f;switch(d[h>>0]|0){case 9:case 32:if(f>>>0>>0){h=f;continue ga}else{La=n;va=250;break I}case 59:{Ka=n;va=249;break I}case 10:case 13:{c[n>>2]=2;h=f;break}case 26:{La=n;va=250;break I}default:{k=h;ha:while(1){if(f>>>0>=j>>>0){ab=f;va=255;break}k=k+2|0;c[p>>2]=k;switch(d[f>>0]|0){case 9:case 32:{Pa=0;bb=k;break ha}case 10:case 13:{Da=k;va=253;break ha}case 26:{ab=k;va=255;break ha}case 59:{Ea=k;va=254;break ha}default:{ua=f;f=k;k=ua}}}if((va|0)==253){va=0;c[n>>2]=2;Pa=2;bb=Da}else if((va|0)==254){va=0;c[n>>2]=1;Pa=1;bb=Ea}else if((va|0)==255){va=0;c[n>>2]=3;Pa=3;bb=ab}if(h){j=h;h=bb;l=Pa;break ga}if((Pa|0)==2)h=bb;else{cb=160;break H}}}c[n>>2]=0;if(h>>>0>=j>>>0){La=n;va=250;break I}}m=h+~j|0;k=a[j>>0]|0;h=0;ia:while(1){f=c[22824+(h<<2)>>2]|0;ja:do if((a[f>>0]|0)==k<<24>>24)while(1){if(!(rga(f,j,m)|0))break ia;h=h+1|0;if((h|0)>=74)break ja;f=c[22824+(h<<2)>>2]|0;if((a[f>>0]|0)!=k<<24>>24){h=l;continue ba}}while(0);h=h+1|0;if((h|0)>=74){h=l;continue ba}}switch(h|0){case 37:case 36:case 34:break ba;case 20:case 21:case 22:break aa;case 75:{h=l;break}default:{cb=160;break H}}}if((e|0)>=(c[q>>2]|0)){cb=160;break H}j=c[g>>2]|0;c[hb>>2]=5;c[C>>2]=5;c[D>>2]=3;c[E>>2]=3;f=Vs(b,hb,4)|0;if((f|0)<3){cb=160;break H}c[j+(e<<4)>>2]=c[F>>2];c[j+(e<<4)+4>>2]=c[G>>2];if((h|0)==37){c[j+(e<<4)+8>>2]=0;f=c[H>>2]|0}else{c[j+(e<<4)+8>>2]=c[H>>2];f=(h|0)==34&(f|0)==4?c[I>>2]|0:0}c[j+(e<<4)+12>>2]=f;e=e+1|0}c[q>>2]=e;bea(c[g>>2]|0,e,16,195);e=c[gb>>2]|0}while(0);h=c[e+12>>2]|0;n=e}if((va|0)==165){c[Ja>>2]=1;cb=160;break}else if((va|0)==166){c[Ua>>2]=3;cb=160;break}else if((va|0)==206){c[Ma>>2]=1;cb=160;break}else if((va|0)==207){c[Na>>2]=3;cb=160;break}else if((va|0)==249){c[Ka>>2]=1;cb=160;break}else if((va|0)==250){c[La>>2]=3;cb=160;break}else if((va|0)==275){i=lb;return wa|0}}else if((va|0)==275){i=lb;return wa|0}while(0);b=Ta+28|0;eh(Ra,c[b>>2]|0);c[b>>2]=0;c[Ta+32>>2]=0;b=Ta+36|0;eh(Ra,c[b>>2]|0);c[b>>2]=0;c[Ta+40>>2]=0;a[Ta>>0]=0;b=cb;i=lb;return b|0}else if((va|0)==275){i=lb;return wa|0}}while(0);c[y>>2]=3;b=2;i=lb;return b|0}function cn(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;b=c[d+484>>2]|0;c[a+24>>2]=c[d+416>>2];c[a+28>>2]=c[d+420>>2];c[a+20>>2]=c[b+20>>2];c[a+16>>2]=c[b+24>>2];return 0}function dn(a){a=a|0;a=a+16|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;return}function en(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0;j=i;if(d>>>0>=256){h=0;i=j;return h|0}h=Ld[c[b+20>>2]&511](e[(c[b+16>>2]|0)+(d<<1)>>1]|0)|0;g=c[b+24>>2]|0;if(!g){h=0;i=j;return h|0}b=c[b+28>>2]|0;d=0;while(1){f=c[b+(d<<2)>>2]|0;if(((f|0)!=0?(a[f>>0]|0)==(a[h>>0]|0):0)?(qga(f,h)|0)==0:0){b=8;break}d=d+1|0;if(d>>>0>=g>>>0){d=0;b=8;break}}if((b|0)==8){i=j;return d|0}return 0}function fn(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;g=(c[d>>2]|0)+1|0;if(g>>>0>=256){l=0;o=0;c[d>>2]=l;i=p;return o|0}m=b+16|0;n=b+20|0;o=b+24|0;l=b+28|0;a:while(1){f=Ld[c[n>>2]&511](e[(c[m>>2]|0)+(g<<1)>>1]|0)|0;h=c[o>>2]|0;b:do if(h){j=c[l>>2]|0;b=0;while(1){k=c[j+(b<<2)>>2]|0;if(((k|0)!=0?(a[k>>0]|0)==(a[f>>0]|0):0)?(qga(k,f)|0)==0:0)break;b=b+1|0;if(b>>>0>=h>>>0)break b}if(b){f=11;break a}}while(0);g=g+1|0;if(g>>>0>=256){g=0;b=0;f=11;break}}if((f|0)==11){c[d>>2]=g;i=p;return b|0}return 0}function gn(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;b=c[d+484>>2]|0;c[a+24>>2]=c[d+416>>2];c[a+28>>2]=c[d+420>>2];c[a+20>>2]=c[b+20>>2];c[a+16>>2]=c[b+28>>2];return 0}function hn(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;b=d+372|0;d=c[d+376>>2]|0;c[a+16>>2]=d;c[a+20>>2]=(c[b+8>>2]|0)-d;c[a+24>>2]=c[b+12>>2];return 0}function jn(a){a=a|0;c[a+24>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;return}function kn(a,b){a=a|0;b=b|0;var d=0,f=0;d=i;f=c[a+16>>2]|0;if(f>>>0<=b>>>0?((c[a+20>>2]|0)+f|0)>>>0>b>>>0:0)b=e[(c[a+24>>2]|0)+(b<<1)>>1]|0;else b=0;i=d;return b|0}function ln(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;e=(c[d>>2]|0)+1|0;g=c[a+16>>2]|0;e=e>>>0>>0?g:e;g=(c[a+20>>2]|0)+g|0;a:do if(e>>>0>>0){f=c[a+24>>2]|0;while(1){j=b[f+(e<<1)>>1]|0;a=j&65535;if(j<<16>>16)break a;e=e+1|0;if(e>>>0>=g>>>0){e=0;break}}}else{e=0;a=0}while(0);c[d>>2]=e;i=h;return a|0}function mn(a,b){a=a|0;b=b|0;var d=0;b=i;d=c[a>>2]|0;a=Kd[c[(c[d+484>>2]|0)+4>>2]&31](c[d+100>>2]|0,a,c[d+416>>2]|0,196,0,d)|0;i=b;return a|0}function nn(a){a=a|0;var b=0,d=0;b=i;d=a+20|0;eh(c[(c[a>>2]|0)+100>>2]|0,c[d>>2]|0);c[d>>2]=0;c[a+16>>2]=0;i=b;return}function on(a,b){a=a|0;b=b|0;var d=0;d=i;a=Wd[c[(c[(c[a>>2]|0)+484>>2]|0)+8>>2]&511](a,b)|0;i=d;return a|0}function pn(a,b){a=a|0;b=b|0;var d=0;d=i;a=Wd[c[(c[(c[a>>2]|0)+484>>2]|0)+12>>2]&511](a,b)|0;i=d;return a|0}function qn(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0,j=0;h=i;if((c|0)<1){i=h;return}g=b+-1-(b+c)|0;f=~c;f=~(g>>>0>f>>>0?g:f);g=0;e=e&65535;while(1){j=b+g|0;c=d[j>>0]|0;a[j>>0]=c^e>>>8;g=g+1|0;if((g|0)==(f|0))break;else e=((c+e|0)*52845|0)+22719&65535}i=h;return}function rn(a){a=a|0;return a+100|0}function sn(a){a=a|0;return a+112|0}function tn(a){a=a|0;return a+140|0}function un(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;d=c[b+8>>2]|0;e=b+12|0;f=e+0|0;h=f+88|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));c[e>>2]=d;c[b+100>>2]=82;c[b+104>>2]=46;c[b+108>>2]=222;d=b+112|0;f=d+0|0;h=f+20|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(h|0));c[b+116>>2]=223;c[b+120>>2]=197;c[b+124>>2]=31;c[b+128>>2]=32;c[b+132>>2]=69;c[b+136>>2]=71;c[d>>2]=e;h=b+140|0;c[h+0>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[b+144>>2]=224;c[b+148>>2]=197;c[b+152>>2]=13;c[b+156>>2]=14;c[b+160>>2]=33;c[b+164>>2]=71;c[h>>2]=e;i=g;return 0}function vn(a){a=a|0;var b=0,d=0,e=0;b=i;c[a+112>>2]=0;c[a+140>>2]=0;d=a+12|0;e=c[d>>2]|0;ht(a+28|0,e);ht(a+64|0,e);c[a+16>>2]=0;c[d>>2]=0;i=b;return}function wn(b){b=b|0;var c=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;e=a[b>>0]|0;do if(e<<24>>24==117){l=b+1|0;k=a[l>>0]|0;do if(k<<24>>24==110)if((a[b+2>>0]|0)==105){c=4;f=b+3|0;h=0;while(1){j=d[f>>0]|0;g=j+-48|0;if(g>>>0>9){g=j+-55|0;if((j+-65|0)>>>0>5|g>>>0>15){g=h;break}}g=g+(h<<4)|0;c=c+-1|0;f=f+1|0;if((c|0)>0)h=g;else break}if(!c){c=a[f>>0]|0;if(!(c<<24>>24)){m=g;i=n;return m|0}else if(c<<24>>24!=46){j=k;k=b;g=6;c=l;f=0;break}m=g|-2147483648;i=n;return m|0}else{j=k;k=b;g=6;c=l;f=0}}else{j=110;k=b;g=6;c=l;f=0}else{j=k;k=b;g=6;c=l;f=0}while(0);while(1){j=j&255;h=j+-48|0;if(h>>>0>9){h=j+-55|0;if((j+-65|0)>>>0>5|h>>>0>15){m=15;break}}f=h+(f<<4)|0;g=g+-1|0;h=k+2|0;if((g|0)<=0){c=h;break}k=c;j=a[h>>0]|0;c=h}if((m|0)==15)if((g|0)>=3){c=b;break}c=a[c>>0]|0;if(!(c<<24>>24)){m=f;i=n;return m|0}else if(c<<24>>24!=46){c=b;break}m=f|-2147483648;i=n;return m|0}else c=b;while(0);while(1){if(e<<24>>24==46){if(c>>>0>b>>>0){m=21;break}}else if(!(e<<24>>24))break;k=c+1|0;e=a[k>>0]|0;c=k}if((m|0)==21)if(!c)c=0;else{m=it(b,c)|0|-2147483648;i=n;return m|0}m=it(b,c)|0;i=n;return m|0}function xn(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+96|0;u=v+80|0;r=v;s=v+40|0;h=r+0|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));t=b+16|0;c[t>>2]=0;q=b+20|0;c[q>>2]=0;j=hh(a,8,0,d+10|0,0,u)|0;c[q>>2]=j;h=c[u>>2]|0;if(h){u=h;i=v;return u|0}if(d){if(!f){k=0;do{h=Wd[e&511](g,k)|0;if(h){b=0;do{if(!(qga(30472+(c[30560+(b<<2)>>2]|0)|0,h)|0)){m=b;p=7;break}b=b+1|0}while(b>>>0<10);if((p|0)==7?(p=0,l=r+(m<<2)|0,(c[l>>2]|0)==0):0){c[l>>2]=1;c[s+(m<<2)>>2]=k}b=wn(h)|0;if(b&2147483647){h=0;do{if((c[30432+(h<<2)>>2]|0)==(b|0)){p=12;break}h=h+1|0}while(h>>>0<10);if((p|0)==12){p=0;c[r+(h<<2)>>2]=2}c[j>>2]=b;c[j+4>>2]=k;j=j+8|0}}k=k+1|0}while((k|0)!=(d|0))}else{l=0;do{k=Wd[e&511](g,l)|0;if(k){h=0;do{if(!(qga(30472+(c[30560+(h<<2)>>2]|0)|0,k)|0)){o=h;p=19;break}h=h+1|0}while(h>>>0<10);if((p|0)==19?(p=0,n=r+(o<<2)|0,(c[n>>2]|0)==0):0){c[n>>2]=1;c[s+(o<<2)>>2]=l}b=wn(k)|0;if(b&2147483647){h=0;do{if((c[30432+(h<<2)>>2]|0)==(b|0)){p=24;break}h=h+1|0}while(h>>>0<10);if((p|0)==24){p=0;c[r+(h<<2)>>2]=2}c[j>>2]=b;c[j+4>>2]=l;j=j+8|0}Jd[f&255](g,k)}l=l+1|0}while((l|0)!=(d|0))}if((c[r>>2]|0)==1){c[j>>2]=916;c[j+4>>2]=c[s>>2];j=j+8|0}}if((c[r+4>>2]|0)==1){c[j>>2]=937;c[j+4>>2]=c[s+4>>2];j=j+8|0}if((c[r+8>>2]|0)==1){c[j>>2]=8725;c[j+4>>2]=c[s+8>>2];j=j+8|0}if((c[r+12>>2]|0)==1){c[j>>2]=173;c[j+4>>2]=c[s+12>>2];j=j+8|0}if((c[r+16>>2]|0)==1){c[j>>2]=713;c[j+4>>2]=c[s+16>>2];j=j+8|0}if((c[r+20>>2]|0)==1){c[j>>2]=956;c[j+4>>2]=c[s+20>>2];j=j+8|0}if((c[r+24>>2]|0)==1){c[j>>2]=8729;c[j+4>>2]=c[s+24>>2];j=j+8|0}if((c[r+28>>2]|0)==1){c[j>>2]=160;c[j+4>>2]=c[s+28>>2];j=j+8|0}if((c[r+32>>2]|0)==1){c[j>>2]=538;c[j+4>>2]=c[s+32>>2];j=j+8|0}if((c[r+36>>2]|0)==1){c[j>>2]=539;c[j+4>>2]=c[s+36>>2];j=j+8|0}h=c[q>>2]|0;j=j-h>>3;if(!j){eh(a,h);c[q>>2]=0;h=c[u>>2]|0;if(!h){c[u>>2]=163;h=163}}else{if(j>>>0>>1>>>0){h=hh(a,8,d,j,h,u)|0;c[q>>2]=h;c[u>>2]=0}bea(h,j,8,198);h=c[u>>2]|0}c[t>>2]=j;u=h;i=v;return u|0}function yn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;d=c[a+20>>2]|0;a=(c[a+16>>2]|0)+-1|0;if((a|0)<0){j=0;i=k;return j|0}j=d+(a<<3)|0;a=0;a:while(1){h=j;while(1){e=h-d>>4;g=d+(e<<3)|0;f=c[g>>2]|0;if((f|0)==(b|0)){a=g;break a}f=f&2147483647;a=(f|0)==(b|0)?g:a;if((d|0)==(j|0))break a;if(f>>>0>=b>>>0)break;d=d+(e+1<<3)|0;if(d>>>0>j>>>0)break a}if((e|0)<1)break;else j=d+(e+-1<<3)|0}if(!a){j=0;i=k;return j|0}j=c[a+4>>2]|0;i=k;return j|0}function zn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;k=(c[b>>2]|0)+1|0;l=c[a+16>>2]|0;do if(l){j=c[a+20>>2]|0;h=l;e=0;d=0;while(1){g=((h-e|0)>>>1)+e|0;f=c[j+(g<<3)>>2]|0;if((f|0)==(k|0)){d=g;f=4;break}f=f&2147483647;if((f|0)==(k|0))d=c[j+(g<<3)+4>>2]|0;f=f>>>0>>0;e=f?g+1|0:e;h=f?h:g;if(h>>>0<=e>>>0){f=8;break}}if((f|0)==4){e=k;d=c[j+(d<<3)+4>>2]|0;break}else if((f|0)==8)if(!d){d=e;f=9;break}else{e=k;break}}else{d=0;f=9}while(0);if((f|0)==9)if(d>>>0>>0){k=c[a+20>>2]|0;e=c[k+(d<<3)>>2]&2147483647;d=c[k+(d<<3)+4>>2]|0}else{e=0;d=0}c[b>>2]=e;i=m;return d|0}function An(a){a=a|0;return 25432+(b[29912+((a>>>0>257?0:a)<<1)>>1]|0)|0}function Bn(a){a=a|0;if(a>>>0>390)a=0;else a=25432+(b[29128+(a<<1)>>1]|0)|0;return a|0}function Cn(a,b){a=a|0;b=b|0;a=i;b=nh(24368,b)|0;i=a;return b|0}function Dn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;c[b>>2]=0;d=ch(a,24,e)|0;e=c[e>>2]|0;if(e){i=f;return e|0}c[d+8>>2]=a;c[b>>2]=d;i=f;return e|0}function En(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!a){i=e;return}if((b|0)!=0&(d|0)>3075){c[a>>2]=b+1032;c[a+4>>2]=d+-1032;c[a+12>>2]=b;i=e;return}else{c[a>>2]=0;c[a+4>>2]=0;c[a+12>>2]=0;i=e;return}}function Fn(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function Gn(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;j=c[e+4>>2]|0;k=c[e>>2]|0;if(!d){o=96;i=p;return o|0}if(!(c[d>>2]|0)){o=96;i=p;return o|0}l=d+4|0;if(!(c[l>>2]|0)){o=96;i=p;return o|0}if(!j){o=20;i=p;return o|0}f=b[j+2>>1]|0;if(!(f<<16>>16)){o=0;i=p;return o|0}g=b[j>>1]|0;if(g<<16>>16<1){o=0;i=p;return o|0}h=c[j+12>>2]|0;if(!h){o=20;i=p;return o|0}if(!(c[j+4>>2]|0)){o=20;i=p;return o|0}if((f<<16>>16|0)!=((b[h+((g<<16>>16)+-1<<1)>>1]|0)+1|0)){o=20;i=p;return o|0}o=c[d+12>>2]|0;f=e+8|0;if(c[f>>2]&2){o=19;i=p;return o|0}if(!k){o=20;i=p;return o|0}if(!(c[k+4>>2]|0)){o=0;i=p;return o|0}if(!(c[k>>2]|0)){o=0;i=p;return o|0}if(!(c[k+12>>2]|0)){o=20;i=p;return o|0}n=o+128|0;c[n+0>>2]=c[j+0>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[n+16>>2]=c[j+16>>2];n=o+104|0;c[n+0>>2]=c[k+0>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];c[n+16>>2]=c[k+16>>2];c[n+20>>2]=c[k+20>>2];n=c[d>>2]|0;c[o+28>>2]=n;c[o+32>>2]=n+((c[l>>2]|0)>>>2<<2);if(c[f>>2]&1){o=19;i=p;return o|0}h=c[o+144>>2]|0;l=(h&256|0)==0;n=l?6:12;c[o>>2]=n;c[o+16>>2]=l?32:256;c[o+20>>2]=l?2:30;l=1<>2]=l;c[o+8>>2]=(l|0)/2|0;n=n+-6|0;c[o+12>>2]=n;c[o+24>>2]=n;if(!(h&8)){f=o+180|0;g=(h&16)>>>2;a[f>>0]=g;if(!(h&32))a[f>>0]=g&255|1}else a[o+180>>0]=2;n=o+181|0;a[n>>0]=h>>>9&1^1;d=o+164|0;c[d>>2]=34;e=o+168|0;c[e>>2]=17;g=o+172|0;c[g>>2]=18;h=o+176|0;c[h>>2]=225;k=o+1024|0;c[k>>2]=0;j=o+960|0;b[j>>1]=0;l=o+962|0;b[l>>1]=(c[o+104>>2]|0)+65535;m=o+108|0;b[o+56>>1]=c[m>>2];c[o+60>>2]=c[o+116>>2];f=ot(o,0)|0;if(f){o=f;i=p;return o|0}do if((a[n>>0]|0)!=0?(a[o+180>>0]|0)!=2:0){c[d>>2]=35;c[e>>2]=19;c[g>>2]=20;c[h>>2]=226;c[k>>2]=0;b[j>>1]=0;b[l>>1]=(c[m>>2]|0)+65535;f=ot(o,1)|0;if(!f)break;i=p;return f|0}while(0);o=0;i=p;return o|0}function Hn(a){a=a|0;var b=0;b=i;eh(c[a+8>>2]|0,a);i=b;return}function In(a){a=a|0;var b=0,d=0;b=i;d=c[a+4>>2]|0;$d[c[(c[(c[a+12>>2]|0)+56>>2]|0)+8>>2]&255](c[a+52>>2]|0,c[d+164>>2]|0,c[d+168>>2]|0);i=b;return 0}function Jn(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+80|0;r=v+64|0;u=v;s=v+16|0;t=e+72|0;if((c[t>>2]|0)!=(c[d+16>>2]|0)){c[r>>2]=6;e=6;i=v;return e|0}h=c[d+12>>2]|0;if((f|0)==2){if((h|0)==86704){e=19;i=v;return e|0}}else if((h|0)==86632){e=19;i=v;return e|0}p=e+108|0;if(g)Bh(p,c[g>>2]|0,c[g+4>>2]|0);mi(p,u);j=(c[u>>2]|0)+32&-64;c[u>>2]=j;m=u+4|0;k=(c[m>>2]|0)+32&-64;c[m>>2]=k;q=u+8|0;o=(c[q>>2]|0)+32&-64;c[q>>2]=o;q=u+12|0;l=(c[q>>2]|0)+32&-64;c[q>>2]=l;j=o-j>>6;k=l-k>>6;if((k|j)>>>0>65535){c[r>>2]=6;e=6;i=v;return e|0}n=e+76|0;l=c[d+8>>2]|0;o=e+156|0;if(c[(c[o>>2]|0)+4>>2]&1){g=e+88|0;eh(l,c[g>>2]|0);c[g>>2]=0;g=(c[o>>2]|0)+4|0;c[g>>2]=c[g>>2]&-2}if(!(f&2)){b[e+92>>1]=256;h=2;g=j+3&-4}else{h=1;g=(j+15|0)>>>4<<1}f=e+94|0;a[f>>0]=h;c[e+80>>2]=j;c[n>>2]=k;c[e+84>>2]=g;c[e+88>>2]=hh(l,k,0,g,0,r)|0;h=c[r>>2]|0;if(h){e=h;i=v;return e|0}h=(c[o>>2]|0)+4|0;c[h>>2]=c[h>>2]|1;Bh(p,0-(c[u>>2]|0)|0,0-(c[m>>2]|0)|0);c[s>>2]=n;c[s+4>>2]=p;c[s+8>>2]=(a[f>>0]|0)==2&1;c[r>>2]=Wd[c[d+56>>2]&511](c[d+52>>2]|0,s)|0;Bh(p,c[u>>2]|0,c[m>>2]|0);h=c[r>>2]|0;if(h){e=h;i=v;return e|0}c[t>>2]=1651078259;c[e+100>>2]=c[u>>2]>>6;c[e+104>>2]=c[q>>2]>>6;e=0;i=v;return e|0}function Kn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if((c[b+72>>2]|0)!=(c[a+16>>2]|0)){a=6;i=f;return a|0}if(d)Ah(b+108|0,d);if(!e){a=0;i=f;return a|0}Bh(b+108|0,c[e>>2]|0,c[e+4>>2]|0);a=0;i=f;return a|0}function Ln(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;if((c[b+72>>2]|0)!=(c[a+16>>2]|0)){i=e;return}mi(b+108|0,d);i=e;return}function Mn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;a=Od[c[(c[(c[a+12>>2]|0)+56>>2]|0)+12>>2]&255](c[a+52>>2]|0,b,d)|0;i=e;return a|0}function Nn(a,b){a=a|0;b=b|0;c[a+16>>2]=b;return 0}function On(a,b){a=a|0;b=b|0;var e=0;e=i;if(b>>>0>=256){a=0;i=e;return a|0}a=d[(c[a+16>>2]|0)+(b+6)>>0]|0;i=e;return a|0}function Pn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;f=c[b+16>>2]|0;g=c[d>>2]|0;e=0;while(1){b=g+1|0;if(b>>>0>=256){b=0;break}g=a[f+(g+7)>>0]|0;e=g&255;if(!(g<<24>>24))g=b;else break}c[d>>2]=b;i=h;return e|0}function Qn(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;g=i;f=(d[a+2>>0]|0)<<8|(d[a+3>>0]|0);if(f>>>0<262?1:(a+f|0)>>>0>(c[b+4>>2]|0)>>>0)ph(b,8);if(!(c[b+8>>2]|0)){i=g;return 0}e=b+172|0;f=0;a=a+6|0;while(1){if((d[a>>0]|0)>>>0>=(c[e>>2]|0)>>>0){a=6;break}f=f+1|0;if((f|0)==256){a=8;break}else a=a+1|0}if((a|0)==6)ph(b,16);else if((a|0)==8){i=g;return 0}return 0}function Rn(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=0;c[b>>2]=(d[a+4>>0]|0)<<8|(d[a+5>>0]|0);return 0}function Sn(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;j=c[a+16>>2]|0;if(b>>>0>=65536){j=0;i=k;return j|0}a=b>>>8;if(!a){h=b<<1&510;if(!((d[j+(h+6)>>0]|0)<<8|(d[j+(h+7)>>0]|0))){h=518;a=j+518|0}else{j=0;i=k;return j|0}}else{h=a<<1;h=(d[j+(h+7)>>0]|0)&248|(d[j+(h+6)>>0]|0)<<8;a=h+518|0;if(!h){j=0;i=k;return j|0}else{h=a;a=j+a|0}}f=h+6|0;e=h+7|0;g=(d[j+f>>0]|0)<<8|(d[j+e>>0]|0);a=(b&255)-((d[a>>0]|0)<<8|(d[j+(h+1)>>0]|0))|0;if(!((g|0)!=0?a>>>0<((d[j+(h+2)>>0]|0)<<8|(d[j+(h+3)>>0]|0))>>>0:0)){j=0;i=k;return j|0}a=g+(a<<1)|0;a=(d[j+(f+a)>>0]|0)<<8|(d[j+(e+a)>>0]|0);if(!a){j=0;i=k;return j|0}j=a+((d[j+(h+4)>>0]|0)<<8|(d[j+(h+5)>>0]|0))&65535;i=k;return j|0}function Tn(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;n=c[a+16>>2]|0;a=(c[b>>2]|0)+1|0;if(a>>>0>=65536){p=0;o=0;c[b>>2]=o;i=q;return p|0}o=n+518|0;a:while(1){f=a>>>8;if(!f){k=a<<1&510;if(!((d[n+(k+6)>>0]|0)<<8|(d[n+(k+7)>>0]|0))){g=518;f=o;p=6}}else{k=f<<1;k=(d[n+(k+7)>>0]|0)&248|(d[n+(k+6)>>0]|0)<<8;f=k+518|0;if(k){g=f;f=n+f|0;p=6}}if((p|0)==6){p=0;h=(d[f>>0]|0)<<8|(d[n+(g+1)>>0]|0);l=(d[n+(g+2)>>0]|0)<<8|(d[n+(g+3)>>0]|0);k=g+6|0;m=(d[n+(g+4)>>0]|0)<<8|(d[n+(g+5)>>0]|0);j=(d[n+k>>0]|0)<<8|(d[n+(g+7)>>0]|0);f=a&255;if(j){r=f>>>0>>0;g=r?0:f-h|0;a=(r?h:f)+(a&-256)|0;if(g>>>0>>0){h=n+(k+(g<<1)+j)|0;do{f=(d[h>>0]|0)<<8|(d[h+1>>0]|0);h=h+2|0;if((f|0)!=0?(e=f+m&65535,(e|0)!=0):0){p=13;break a}g=g+1|0;a=a+1|0}while(g>>>0>>0)}}}a=a+256&-256;if(a>>>0>=65536){e=0;a=0;p=13;break}}if((p|0)==13){c[b>>2]=a;i=q;return e|0}return 0}function Un(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;q=(d[a+2>>0]|0)<<8|(d[a+3>>0]|0);r=a+q|0;l=b+4|0;if(q>>>0<518?1:r>>>0>(c[l>>2]|0)>>>0)ph(b,8);q=b+8|0;e=a+518|0;f=0;h=0;j=a+6|0;while(1){g=d[j+1>>0]|0;if(!((c[q>>2]|0)>>>0<2|(g&7|0)==0)){k=5;break}o=((d[j>>0]|0)<<8|g)>>>3;f=o>>>0>f>>>0?o:f;h=h+1|0;if((h|0)==256){p=f;break}else j=j+2|0}if((k|0)==5)ph(b,8);o=a+((p<<3)+526)|0;if(o>>>0>(c[l>>2]|0)>>>0)ph(b,8);m=b+172|0;n=0;a:while(1){j=e;h=(d[e>>0]|0)<<8|(d[e+1>>0]|0);a=(d[e+2>>0]|0)<<8|(d[e+3>>0]|0);k=(d[e+4>>0]|0)<<8|(d[e+5>>0]|0);f=e+8|0;g=(d[e+6>>0]|0)<<8|(d[e+7>>0]|0);if(a){if((c[q>>2]|0)>>>0>1?h>>>0>255|(a+h|0)>>>0>256:0){k=13;break}if(g){g=g+6|0;if((e+g|0)>>>0>>0){k=17;break}if((e+(g+(a<<1))|0)>>>0>r>>>0){k=17;break}if(c[q>>2]|0){l=e+((a<<1)+8)|0;a=e+((a<<1)+8)|0;h=e+10|0;h=(a>>>0>h>>>0?a:h)+(-9-j)|0;do{j=(d[f>>0]|0)<<8|(d[f+1>>0]|0);f=f+2|0;if((j|0)!=0?(j+k&65535)>>>0>=(c[m>>2]|0)>>>0:0){k=22;break a}}while(f>>>0>>0);e=e+(h+10&-2)|0}else e=f}else e=f}else e=f;n=n+1|0;if(n>>>0>p>>>0){k=26;break}}if((k|0)==13)ph(b,8);else if((k|0)==17)ph(b,9);else if((k|0)==22)ph(b,16);else if((k|0)==26){i=s;return 0}return 0}function Vn(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=2;c[b>>2]=(d[a+4>>0]|0)<<8|(d[a+5>>0]|0);return 0}function Wn(a,b){a=a|0;b=b|0;c[a+16>>2]=b;c[a+32>>2]=((d[b+6>>0]|0)<<8|(d[b+7>>0]|0))>>>1;c[a+24>>2]=-1;c[a+28>>2]=0;return 0}function Xn(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=b;do if(b>>>0<=65535)if(!(c[a+20>>2]&1)){d=ut(a,d,0)|0;break}else{d=tt(a,d,0)|0;break}else d=0;while(0);i=e;return d|0}function Yn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;d=c[b>>2]|0;do if(d>>>0<=65534){if(c[a+20>>2]&1){d=tt(a,b,1)|0;break}e=a+24|0;if((d|0)!=(c[e>>2]|0)){d=ut(a,b,1)|0;break}vt(a);d=c[a+28>>2]|0;if(d)c[b>>2]=c[e>>2];else d=0}else d=0;while(0);i=f;return d|0}function Zn(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;f=(d[b+2>>0]|0)<<8|(d[b+3>>0]|0);if(f>>>0<16)ph(e,8);x=e+4|0;y=e+8|0;do if((b+f|0)>>>0>(c[x>>2]|0)>>>0)if(!(c[y>>2]|0)){k=(c[x>>2]|0)-b|0;break}else ph(e,8);else k=f;while(0);w=d[b+7>>0]|0;f=(d[b+6>>0]|0)<<8|w;if(!((c[y>>2]|0)>>>0<2|(w&1|0)==0))ph(e,8);w=f>>>1;j=w<<1;if(k>>>0<((w<<3)+16|0)>>>0)ph(e,8);if((c[y>>2]|0)>>>0>1){v=a[b+9>>0]|0;f=(d[b+8>>0]|0)<<8|v&255;g=(d[b+10>>0]|0)<<8|(d[b+11>>0]|0);u=a[b+13>>0]|0;h=(d[b+12>>0]|0)<<8|u&255;if((u|v)&1)ph(e,8);v=f>>>1;if(!(v<<1>>>0>=w>>>0&v>>>0<=w>>>0&((h>>>1)+v|0)==(w|0)&(v|0)==(1<>2]|0)>>>0>1?((d[b+(j+12)>>0]|0)<<8|(d[b+(j+13)>>0]|0)|0)!=65535:0)ph(e,8);if(!w){e=0;i=z;return e|0}t=w+-1|0;u=e+172|0;p=b+k|0;f=0;q=0;r=0;s=0;a:while(1){o=m;m=m+2|0;b=r;r=(d[o>>0]|0)<<8|(d[o+1>>0]|0);o=h;h=h+2|0;j=q;q=(d[o>>0]|0)<<8|(d[o+1>>0]|0);o=(d[g>>0]|0)<<8|(d[g+1>>0]|0);g=g+2|0;n=l;l=l+2|0;k=(d[n>>0]|0)<<8|(d[n+1>>0]|0);if(q>>>0>>0){g=22;break}do if(r>>>0<=j>>>0&(s|0)!=0){if(c[y>>2]|0){g=25;break a}if(b>>>0>r>>>0|j>>>0>q>>>0){f=f|1;break}else{f=f|2;break}}while(0);if((k|0)==65535){if((c[y>>2]|0)>>>0>1){g=45;break}if(!((s|0)==(t|0)&(r|0)==65535&(q|0)==65535)){g=45;break}}else if(k){j=n+k|0;if(!(c[y>>2]|0)){if(!((s|0)==(t|0)&(r|0)==65535&(q|0)==65535)){if(j>>>0>>0){g=37;break}if((n+((q-r<<1)+2+k)|0)>>>0>(c[x>>2]|0)>>>0){g=37;break}}}else{if(j>>>0>>0){g=33;break}if((n+((q-r<<1)+2+k)|0)>>>0>p>>>0){g=33;break}}if((c[y>>2]|0)!=0&q>>>0>r>>>0){b=r;do{k=(d[j>>0]|0)<<8|(d[j+1>>0]|0);j=j+2|0;if((k|0)!=0?(k+o&65535)>>>0>=(c[u>>2]|0)>>>0:0){g=41;break a}b=b+1|0}while((b|0)!=(q|0))}}s=s+1|0;if(s>>>0>=w>>>0){g=47;break}}if((g|0)==22)ph(e,8);else if((g|0)==25)ph(e,8);else if((g|0)==33)ph(e,8);else if((g|0)==37)ph(e,8);else if((g|0)==41)ph(e,16);else if((g|0)==45)ph(e,8);else if((g|0)==47){i=z;return f|0}return 0}function _n(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=4;c[b>>2]=(d[a+4>>0]|0)<<8|(d[a+5>>0]|0);return 0}function $n(a,b){a=a|0;b=b|0;var e=0,f=0;f=i;e=c[a+16>>2]|0;a=b-((d[e+6>>0]|0)<<8|(d[e+7>>0]|0))|0;if(a>>>0>=((d[e+8>>0]|0)<<8|(d[e+9>>0]|0))>>>0){b=0;i=f;return b|0}b=a<<1;b=(d[e+(b+10)>>0]|0)<<8|(d[e+(b+11)>>0]|0);i=f;return b|0}function ao(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;h=c[a+16>>2]|0;f=(c[b>>2]|0)+1|0;a=(d[h+6>>0]|0)<<8|(d[h+7>>0]|0);k=(d[h+8>>0]|0)<<8|(d[h+9>>0]|0);a:do if(f>>>0<=65535?(e=f>>>0>>0?a:f,j=e-a|0,j>>>0>>0):0){g=j;f=h+((j<<1)+10)|0;while(1){a=(d[f>>0]|0)<<8|(d[f+1>>0]|0);if(a)break a;g=g+1|0;if(g>>>0>=k>>>0){a=0;e=0;break}else{e=e+1|0;f=f+2|0}}}else{a=0;e=0}while(0);c[b>>2]=e;i=l;return a|0}function bo(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;j=i;e=a+10|0;g=b+4|0;if(e>>>0>(c[g>>2]|0)>>>0)ph(b,8);h=(d[a+2>>0]|0)<<8|(d[a+3>>0]|0);f=(d[a+8>>0]|0)<<8|(d[a+9>>0]|0);if((a+h|0)>>>0>(c[g>>2]|0)>>>0)ph(b,8);if(h>>>0<((f<<1)+10|0)>>>0)ph(b,8);if(!((c[b+8>>2]|0)!=0&(f|0)!=0)){i=j;return 0}h=b+172|0;while(1){if(((d[e>>0]|0)<<8|(d[e+1>>0]|0))>>>0>=(c[h>>2]|0)>>>0){e=9;break}f=f+-1|0;if(!f){e=11;break}else e=e+2|0}if((e|0)==9)ph(b,16);else if((e|0)==11){i=j;return 0}return 0}function co(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=6;c[b>>2]=(d[a+4>>0]|0)<<8|(d[a+5>>0]|0);return 0}function eo(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;g=i;e=c[a+16>>2]|0;a=(d[e+8205>>0]|0)<<16|(d[e+8204>>0]|0)<<24|(d[e+8206>>0]|0)<<8|(d[e+8207>>0]|0);if(!a){f=0;i=g;return f|0}f=e+8208|0;while(1){e=(d[f+1>>0]|0)<<16|(d[f>>0]|0)<<24|(d[f+2>>0]|0)<<8|(d[f+3>>0]|0);if(e>>>0>b>>>0){a=0;f=7;break}a=a+-1|0;if(((d[f+5>>0]|0)<<16|(d[f+4>>0]|0)<<24|(d[f+6>>0]|0)<<8|(d[f+7>>0]|0))>>>0>=b>>>0){a=f;f=6;break}if(!a){a=0;f=7;break}else f=f+12|0}if((f|0)==6){f=b-e+((d[a+9>>0]|0)<<16|(d[a+8>>0]|0)<<24|(d[a+10>>0]|0)<<8|(d[a+11>>0]|0))|0;i=g;return f|0}else if((f|0)==7){i=g;return a|0}return 0}function fo(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;g=c[a+16>>2]|0;e=(d[g+8205>>0]|0)<<16|(d[g+8204>>0]|0)<<24|(d[g+8206>>0]|0)<<8|(d[g+8207>>0]|0);if(!e){j=0;h=0;c[b>>2]=h;i=k;return j|0}a=(c[b>>2]|0)+1|0;h=g+8208|0;while(1){g=(d[h+1>>0]|0)<<16|(d[h>>0]|0)<<24|(d[h+2>>0]|0)<<8|(d[h+3>>0]|0);j=h;h=h+12|0;a=a>>>0>>0?g:a;if(a>>>0<=((d[j+5>>0]|0)<<16|(d[j+4>>0]|0)<<24|(d[j+6>>0]|0)<<8|(d[j+7>>0]|0))>>>0?(f=((d[j+9>>0]|0)<<16|(d[j+8>>0]|0)<<24|(d[j+10>>0]|0)<<8|(d[j+11>>0]|0))+(a-g)|0,(f|0)!=0):0){e=6;break}e=e+-1|0;if(!e){f=0;a=0;e=6;break}}if((e|0)==6){c[b>>2]=a;i=k;return f|0}return 0}function go(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;f=a+8208|0;e=b+4|0;if(f>>>0>(c[e>>2]|0)>>>0)ph(b,8);p=(d[a+5>>0]|0)<<16|(d[a+4>>0]|0)<<24|(d[a+6>>0]|0)<<8|(d[a+7>>0]|0);if(p>>>0<8208?1:p>>>0>((c[e>>2]|0)-a|0)>>>0)ph(b,8);p=(d[a+8205>>0]|0)<<16|(d[a+8204>>0]|0)<<24|(d[a+8206>>0]|0)<<8|(d[a+8207>>0]|0);if((a+((p*12|0)+8208)|0)>>>0>(c[e>>2]|0)>>>0)ph(b,8);if(!p){i=q;return 0}l=b+8|0;m=b+172|0;n=0;o=0;a:while(1){j=(d[f+1>>0]|0)<<16|(d[f>>0]|0)<<24;e=j|(d[f+2>>0]|0)<<8|(d[f+3>>0]|0);k=(d[f+5>>0]|0)<<16|(d[f+4>>0]|0)<<24;g=n;n=k|(d[f+6>>0]|0)<<8|(d[f+7>>0]|0);h=f;f=f+12|0;if(n>>>0>>0){e=10;break}if(!((o|0)==0|e>>>0>g>>>0)){e=12;break}do if(c[l>>2]|0){g=n-e|0;if((g+((d[h+9>>0]|0)<<16|(d[h+8>>0]|0)<<24|(d[h+10>>0]|0)<<8|(d[h+11>>0]|0))|0)>>>0>=(c[m>>2]|0)>>>0){e=15;break a}g=g+1|0;if(!j){if(k){e=24;break a}if(!g)break;while(1){if((d[a+((e>>>3&8191)+12)>>0]|0)&128>>>(e&7)){e=27;break a}g=g+-1|0;if(!g)break;else e=e+1|0}}else{if(!g)break;while(1){if(!((d[a+((e>>>19)+12)>>0]|0)&128>>>(e>>>16&7))){e=19;break a}if(!((d[a+((e>>>3&8191)+12)>>0]|0)&128>>>(e&7))){e=21;break a}g=g+-1|0;if(!g)break;else e=e+1|0}}}while(0);o=o+1|0;if((o|0)==(p|0)){e=30;break}}if((e|0)==10)ph(b,8);else if((e|0)==12)ph(b,8);else if((e|0)==15)ph(b,16);else if((e|0)==19)ph(b,8);else if((e|0)==21)ph(b,8);else if((e|0)==24)ph(b,8);else if((e|0)==27)ph(b,8);else if((e|0)==30){i=q;return 0}return 0}function ho(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=8;c[b>>2]=(d[a+9>>0]|0)<<16|(d[a+8>>0]|0)<<24|(d[a+10>>0]|0)<<8|(d[a+11>>0]|0);return 0}function io(a,b){a=a|0;b=b|0;var e=0,f=0;f=i;e=c[a+16>>2]|0;a=b-((d[e+13>>0]|0)<<16|(d[e+12>>0]|0)<<24|(d[e+14>>0]|0)<<8|(d[e+15>>0]|0))|0;if(a>>>0>=((d[e+17>>0]|0)<<16|(d[e+16>>0]|0)<<24|(d[e+18>>0]|0)<<8|(d[e+19>>0]|0))>>>0){b=0;i=f;return b|0}b=a<<1;b=(d[e+(b+20)>>0]|0)<<8|(d[e+(b+21)>>0]|0);i=f;return b|0}function jo(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;e=c[a+16>>2]|0;a=(c[b>>2]|0)+1|0;g=(d[e+13>>0]|0)<<16|(d[e+12>>0]|0)<<24|(d[e+14>>0]|0)<<8|(d[e+15>>0]|0);j=(d[e+17>>0]|0)<<16|(d[e+16>>0]|0)<<24|(d[e+18>>0]|0)<<8|(d[e+19>>0]|0);a=a>>>0>>0?g:a;g=a-g|0;if(g>>>0>=j>>>0){h=a;j=0;c[b>>2]=h;i=k;return j|0}f=a;h=g;g=e+((g<<1)+20)|0;while(1){a=(d[g>>0]|0)<<8|(d[g+1>>0]|0);if(a){e=5;break}a=f+1|0;h=h+1|0;if(h>>>0>=j>>>0){f=a;a=0;e=5;break}else{f=a;g=g+2|0}}if((e|0)==5){c[b>>2]=f;i=k;return a|0}return 0}function ko(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;j=i;e=a+20|0;g=b+4|0;if(e>>>0>(c[g>>2]|0)>>>0)ph(b,8);h=(d[a+5>>0]|0)<<16|(d[a+4>>0]|0)<<24|(d[a+6>>0]|0)<<8|(d[a+7>>0]|0);f=(d[a+17>>0]|0)<<16|(d[a+16>>0]|0)<<24|(d[a+18>>0]|0)<<8|(d[a+19>>0]|0);if(h>>>0>((c[g>>2]|0)-a|0)>>>0)ph(b,8);if(h>>>0<((f<<1)+20|0)>>>0)ph(b,8);if(!((c[b+8>>2]|0)!=0&(f|0)!=0)){i=j;return 0}h=b+172|0;while(1){if(((d[e>>0]|0)<<8|(d[e+1>>0]|0))>>>0>=(c[h>>2]|0)>>>0){e=9;break}f=f+-1|0;if(!f){e=11;break}else e=e+2|0}if((e|0)==9)ph(b,16);else if((e|0)==11){i=j;return 0}return 0}function lo(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=10;c[b>>2]=(d[a+9>>0]|0)<<16|(d[a+8>>0]|0)<<24|(d[a+10>>0]|0)<<8|(d[a+11>>0]|0);return 0}function mo(b,e){b=b|0;e=e|0;c[b+16>>2]=e;c[b+40>>2]=(d[e+13>>0]|0)<<16|(d[e+12>>0]|0)<<24|(d[e+14>>0]|0)<<8|(d[e+15>>0]|0);a[b+24>>0]=0;return 0}function no(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;a=wt(a,e,0)|0;i=d;return a|0}function oo(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;g=b+28|0;e=c[g>>2]|0;do if((e|0)==-1)e=0;else{f=b+24|0;if((a[f>>0]|0)!=0?(e|0)==(c[d>>2]|0):0){xt(b);if(!(a[f>>0]|0)){e=0;break}e=c[b+32>>2]|0;if(!e){e=0;break}c[d>>2]=c[g>>2];break}e=wt(b,d,1)|0}while(0);i=h;return e|0}function po(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;g=a+16|0;e=b+4|0;if(g>>>0>(c[e>>2]|0)>>>0)ph(b,8);f=(d[a+5>>0]|0)<<16|(d[a+4>>0]|0)<<24|(d[a+6>>0]|0)<<8|(d[a+7>>0]|0);m=(d[a+13>>0]|0)<<16|(d[a+12>>0]|0)<<24|(d[a+14>>0]|0)<<8|(d[a+15>>0]|0);if(f>>>0>((c[e>>2]|0)-a|0)>>>0)ph(b,8);if(f>>>0<((m*12|0)+16|0)>>>0)ph(b,8);if(!m){i=n;return 0}h=b+8|0;j=b+172|0;k=0;l=0;while(1){e=(d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0);f=k;k=(d[g+5>>0]|0)<<16|(d[g+4>>0]|0)<<24|(d[g+6>>0]|0)<<8|(d[g+7>>0]|0);a=g;g=g+12|0;if(k>>>0>>0){e=9;break}if(!((l|0)==0|e>>>0>f>>>0)){e=11;break}if((c[h>>2]|0)!=0?(k-e+((d[a+9>>0]|0)<<16|(d[a+8>>0]|0)<<24|(d[a+10>>0]|0)<<8|(d[a+11>>0]|0))|0)>>>0>=(c[j>>2]|0)>>>0:0){e=14;break}l=l+1|0;if((l|0)==(m|0)){e=16;break}}if((e|0)==9)ph(b,8);else if((e|0)==11)ph(b,8);else if((e|0)==14)ph(b,16);else if((e|0)==16){i=n;return 0}return 0}function qo(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=12;c[b>>2]=(d[a+9>>0]|0)<<16|(d[a+8>>0]|0)<<24|(d[a+10>>0]|0)<<8|(d[a+11>>0]|0);return 0}function ro(b,e){b=b|0;e=e|0;c[b+16>>2]=e;c[b+40>>2]=(d[e+13>>0]|0)<<16|(d[e+12>>0]|0)<<24|(d[e+14>>0]|0)<<8|(d[e+15>>0]|0);a[b+24>>0]=0;return 0}function so(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;a=yt(a,e,0)|0;i=d;return a|0}function to(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;g=b+28|0;e=c[g>>2]|0;do if((e|0)==-1)e=0;else{f=b+24|0;if((a[f>>0]|0)!=0?(e|0)==(c[d>>2]|0):0){zt(b);if(!(a[f>>0]|0)){e=0;break}e=c[b+32>>2]|0;if(!e){e=0;break}c[d>>2]=c[g>>2];break}e=yt(b,d,1)|0}while(0);i=h;return e|0}function uo(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;g=a+16|0;e=b+4|0;if(g>>>0>(c[e>>2]|0)>>>0)ph(b,8);f=(d[a+5>>0]|0)<<16|(d[a+4>>0]|0)<<24|(d[a+6>>0]|0)<<8|(d[a+7>>0]|0);m=(d[a+13>>0]|0)<<16|(d[a+12>>0]|0)<<24|(d[a+14>>0]|0)<<8|(d[a+15>>0]|0);if(f>>>0>((c[e>>2]|0)-a|0)>>>0)ph(b,8);if(f>>>0<((m*12|0)+16|0)>>>0)ph(b,8);if(!m){i=n;return 0}h=b+8|0;j=b+172|0;k=0;l=0;while(1){e=(d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0);f=k;k=(d[g+5>>0]|0)<<16|(d[g+4>>0]|0)<<24|(d[g+6>>0]|0)<<8|(d[g+7>>0]|0);a=g;g=g+12|0;if(e>>>0>k>>>0){e=9;break}if(!((l|0)==0|e>>>0>f>>>0)){e=11;break}if((c[h>>2]|0)!=0?((d[a+9>>0]|0)<<16|(d[a+8>>0]|0)<<24|(d[a+10>>0]|0)<<8|(d[a+11>>0]|0))>>>0>=(c[j>>2]|0)>>>0:0){e=14;break}l=l+1|0;if((l|0)==(m|0)){e=16;break}}if((e|0)==9)ph(b,8);else if((e|0)==11)ph(b,8);else if((e|0)==14)ph(b,16);else if((e|0)==16){i=n;return 0}return 0}function vo(a,b){a=a|0;b=b|0;a=c[a+16>>2]|0;c[b+4>>2]=13;c[b>>2]=(d[a+9>>0]|0)<<16|(d[a+8>>0]|0)<<24|(d[a+10>>0]|0)<<8|(d[a+11>>0]|0);return 0}function wo(a,b){a=a|0;b=b|0;c[a+16>>2]=b;c[a+24>>2]=(d[b+7>>0]|0)<<16|(d[b+6>>0]|0)<<24|(d[b+8>>0]|0)<<8|(d[b+9>>0]|0);c[a+28>>2]=0;c[a+32>>2]=0;return 0}function xo(a){a=a|0;var b=0,d=0,e=0;e=i;d=c[a+36>>2]|0;c[a+28>>2]=0;if(!d){i=e;return}a=a+32|0;b=c[a>>2]|0;if(!b){i=e;return}eh(d,b);c[a>>2]=0;i=e;return}function yo(a,b){a=a|0;b=b|0;return 0}function zo(a,b){a=a|0;b=b|0;c[b>>2]=0;return 0}function Ao(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;p=c[a+16>>2]|0;a=(d[p+7>>0]|0)<<16|(d[p+6>>0]|0)<<24|(d[p+8>>0]|0)<<8|(d[p+9>>0]|0);if(!a){e=0;i=s;return e|0}else g=0;a:while(1){while(1){h=(g+a|0)>>>1;j=h*11|0;k=(d[p+(j+11)>>0]|0)<<8|(d[p+(j+10)>>0]|0)<<16|(d[p+(j+12)>>0]|0);if(k>>>0>f>>>0){a=h;break}g=h+1|0;if(k>>>0>=f>>>0){l=j;a=7;break a}if(g>>>0>=a>>>0){q=0;a=24;break a}}if(g>>>0>=a>>>0){q=0;a=24;break}}if((a|0)==7){a=p+(l+13)|0;if(!a){e=0;i=s;return e|0}a=(d[p+(l+14)>>0]|0)<<16|(d[a>>0]|0)<<24|(d[p+(l+15)>>0]|0)<<8|(d[p+(l+16)>>0]|0);o=(d[p+(l+18)>>0]|0)<<16|(d[p+(l+17)>>0]|0)<<24|(d[p+(l+19)>>0]|0)<<8|(d[p+(l+20)>>0]|0);b:do if(a){l=a+4|0;m=a+5|0;n=a+6|0;f=a+7|0;a=(d[p+(a+1)>>0]|0)<<16|(d[p+a>>0]|0)<<24|(d[p+(a+2)>>0]|0)<<8|(d[p+(a+3)>>0]|0);k=0;while(1){while(1){if(k>>>0>=a>>>0)break b;g=(a+k|0)>>>1;h=g<<2;j=(d[p+(m+h)>>0]|0)<<8|(d[p+(l+h)>>0]|0)<<16|(d[p+(n+h)>>0]|0);if(j>>>0>e>>>0)a=g;else break}if(((d[p+(f+h)>>0]|0)+j|0)>>>0>>0)k=g+1|0;else break}e=Wd[c[(c[b+12>>2]|0)+12>>2]&511](b,e)|0;i=s;return e|0}while(0);if(!o){e=0;i=s;return e|0}a=(d[p+(o+1)>>0]|0)<<16|(d[p+o>>0]|0)<<24|(d[p+(o+2)>>0]|0)<<8|(d[p+(o+3)>>0]|0);if(!a){e=0;i=s;return e|0}l=o+4|0;m=o+5|0;f=o+6|0;g=0;c:while(1){while(1){j=(g+a|0)>>>1;h=j*5|0;k=(d[p+(m+h)>>0]|0)<<8|(d[p+(l+h)>>0]|0)<<16|(d[p+(f+h)>>0]|0);if(k>>>0>e>>>0){a=j;break}g=j+1|0;if(k>>>0>=e>>>0){r=h;a=23;break c}if(g>>>0>=a>>>0){q=0;a=24;break c}}if(g>>>0>=a>>>0){q=0;a=24;break}}if((a|0)==23){e=(d[p+(o+7+r)>>0]|0)<<8|(d[p+(o+8+r)>>0]|0);i=s;return e|0}else if((a|0)==24){i=s;return q|0}}else if((a|0)==24){i=s;return q|0}return 0}function Bo(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;p=c[a+16>>2]|0;a=(d[p+7>>0]|0)<<16|(d[p+6>>0]|0)<<24|(d[p+8>>0]|0)<<8|(d[p+9>>0]|0);if(!a){b=-1;i=q;return b|0}else f=0;a:while(1){while(1){h=(f+a|0)>>>1;g=h*11|0;j=(d[p+(g+11)>>0]|0)<<8|(d[p+(g+10)>>0]|0)<<16|(d[p+(g+12)>>0]|0);if(j>>>0>e>>>0){a=h;break}f=h+1|0;if(j>>>0>=e>>>0){f=7;break a}if(f>>>0>=a>>>0){a=-1;f=24;break a}}if(f>>>0>=a>>>0){a=-1;f=24;break}}if((f|0)==7){a=p+(g+13)|0;if(!a){b=-1;i=q;return b|0}a=(d[p+(g+14)>>0]|0)<<16|(d[a>>0]|0)<<24|(d[p+(g+15)>>0]|0)<<8|(d[p+(g+16)>>0]|0);n=(d[p+(g+18)>>0]|0)<<16|(d[p+(g+17)>>0]|0)<<24|(d[p+(g+19)>>0]|0)<<8|(d[p+(g+20)>>0]|0);b:do if(a){e=a+4|0;k=a+5|0;m=a+6|0;l=a+7|0;a=(d[p+(a+1)>>0]|0)<<16|(d[p+a>>0]|0)<<24|(d[p+(a+2)>>0]|0)<<8|(d[p+(a+3)>>0]|0);j=0;while(1){while(1){if(j>>>0>=a>>>0)break b;f=(a+j|0)>>>1;g=f<<2;h=(d[p+(k+g)>>0]|0)<<8|(d[p+(e+g)>>0]|0)<<16|(d[p+(m+g)>>0]|0);if(h>>>0>b>>>0)a=f;else break}if(((d[p+(l+g)>>0]|0)+h|0)>>>0>>0)j=f+1|0;else{a=1;break}}i=q;return a|0}while(0);c:do if((n|0)!=0?(o=(d[p+(n+1)>>0]|0)<<16|(d[p+n>>0]|0)<<24|(d[p+(n+2)>>0]|0)<<8|(d[p+(n+3)>>0]|0),(o|0)!=0):0){e=n+4|0;k=n+5|0;l=n+6|0;f=o;a=0;d:while(1){j=a;while(1){h=(j+f|0)>>>1;a=h*5|0;g=(d[p+(k+a)>>0]|0)<<8|(d[p+(e+a)>>0]|0)<<16|(d[p+(l+a)>>0]|0);if(g>>>0>b>>>0){f=h;a=j;break}j=h+1|0;if(g>>>0>=b>>>0)break d;if(j>>>0>=f>>>0)break c}if(a>>>0>=f>>>0)break c}if((d[p+(n+7+a)>>0]|0)<<8|(d[p+(n+8+a)>>0]|0)){b=0;i=q;return b|0}}while(0);b=-1;i=q;return b|0}else if((f|0)==24){i=q;return a|0}return 0}function Co(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;j=l;e=c[a+24>>2]|0;k=c[a+16>>2]|0;g=e+1|0;h=a+28|0;f=c[h>>2]|0;c[j>>2]=0;do if(f>>>0>>0){c[a+36>>2]=b;m=a+32|0;a=hh(b,4,f,g,c[m>>2]|0,j)|0;c[m>>2]=a;if(!(c[j>>2]|0)){c[h>>2]=g;f=a;break}else{m=0;i=l;return m|0}}else f=c[a+32>>2]|0;while(0);if(!e)e=0;else{b=0;a=k+10|0;while(1){c[f+(b<<2)>>2]=(d[a+1>>0]|0)<<8|(d[a>>0]|0)<<16|(d[a+2>>0]|0);b=b+1|0;if((b|0)==(e|0))break;else a=a+11|0}}c[f+(e<<2)>>2]=0;m=f;i=l;return m|0}function Do(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+16|0;j=x;k=c[a+24>>2]|0;w=a+16|0;l=c[w>>2]|0;g=k+1|0;h=a+28|0;f=c[h>>2]|0;c[j>>2]=0;do if(f>>>0>>0){c[a+36>>2]=b;t=a+32|0;f=hh(b,4,f,g,c[t>>2]|0,j)|0;c[t>>2]=f;if(!(c[j>>2]|0)){c[h>>2]=g;t=f;break}else{e=0;i=x;return e|0}}else t=c[a+32>>2]|0;while(0);if(!k)f=t;else{s=l+10|0;f=t;do{q=(d[s+1>>0]|0)<<8|(d[s>>0]|0)<<16|(d[s+2>>0]|0);l=(d[s+4>>0]|0)<<16|(d[s+3>>0]|0)<<24|(d[s+5>>0]|0)<<8|(d[s+6>>0]|0);r=(d[s+8>>0]|0)<<16|(d[s+7>>0]|0)<<24|(d[s+9>>0]|0)<<8|(d[s+10>>0]|0);s=s+11|0;a:do if(!l)o=13;else{p=c[w>>2]|0;h=l+4|0;n=l+5|0;o=l+6|0;m=l+7|0;l=(d[p+(l+1)>>0]|0)<<16|(d[p+l>>0]|0)<<24|(d[p+(l+2)>>0]|0)<<8|(d[p+(l+3)>>0]|0);j=0;while(1){while(1){if(j>>>0>=l>>>0){o=13;break a}a=(l+j|0)>>>1;b=a<<2;g=(d[p+(n+b)>>0]|0)<<8|(d[p+(h+b)>>0]|0)<<16|(d[p+(o+b)>>0]|0);if(g>>>0>e>>>0)l=a;else break}if(((d[p+(m+b)>>0]|0)+g|0)>>>0>>0)j=a+1|0;else{o=22;break}}}while(0);b:do if((o|0)==13){o=0;if((r|0)!=0?(u=c[w>>2]|0,v=(d[u+(r+1)>>0]|0)<<16|(d[u+r>>0]|0)<<24|(d[u+(r+2)>>0]|0)<<8|(d[u+(r+3)>>0]|0),(v|0)!=0):0){h=r+4|0;m=r+5|0;n=r+6|0;g=v;l=0;c:while(1){while(1){b=(l+g|0)>>>1;a=b*5|0;j=(d[u+(m+a)>>0]|0)<<8|(d[u+(h+a)>>0]|0)<<16|(d[u+(n+a)>>0]|0);if(j>>>0>e>>>0){g=b;break}l=b+1|0;if(j>>>0>=e>>>0)break c;if(l>>>0>=g>>>0)break b}if(l>>>0>=g>>>0)break b}if((d[u+(r+7+a)>>0]|0)<<8|(d[u+(r+8+a)>>0]|0))o=22}}while(0);if((o|0)==22){c[f>>2]=q;f=f+4|0}k=k+-1|0}while((k|0)!=0)}c[f>>2]=0;e=t;i=x;return e|0}function Eo(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;l=t+8|0;n=t;o=t+4|0;q=c[a+16>>2]|0;f=(d[q+7>>0]|0)<<16|(d[q+6>>0]|0)<<24|(d[q+8>>0]|0)<<8|(d[q+9>>0]|0);if(!f){s=0;i=t;return s|0}else j=0;a:while(1){while(1){h=(j+f|0)>>>1;g=h*11|0;k=(d[q+(g+11)>>0]|0)<<8|(d[q+(g+10)>>0]|0)<<16|(d[q+(g+12)>>0]|0);if(k>>>0>e>>>0){f=h;break}j=h+1|0;if(k>>>0>=e>>>0){j=7;break a}if(j>>>0>=f>>>0){f=0;j=59;break a}}if(j>>>0>=f>>>0){f=0;j=59;break}}if((j|0)==7){f=q+(g+13)|0;if(!f){s=0;i=t;return s|0}m=(d[q+(g+14)>>0]|0)<<16|(d[f>>0]|0)<<24|(d[q+(g+15)>>0]|0)<<8|(d[q+(g+16)>>0]|0);p=(d[q+(g+18)>>0]|0)<<16|(d[q+(g+17)>>0]|0)<<24|(d[q+(g+19)>>0]|0)<<8|(d[q+(g+20)>>0]|0);f=(p|0)==0;if(!(p|m)){s=0;i=t;return s|0}if(!m){f=(d[q+(p+1)>>0]|0)<<16|(d[q+p>>0]|0)<<24|(d[q+(p+2)>>0]|0)<<8|(d[q+(p+3)>>0]|0);h=f+1|0;e=a+28|0;j=c[e>>2]|0;c[n>>2]=0;do if(j>>>0>>0){c[a+36>>2]=b;s=a+32|0;g=hh(b,4,j,h,c[s>>2]|0,n)|0;c[s>>2]=g;if(!(c[n>>2]|0)){c[e>>2]=h;j=g;break}else{s=0;i=t;return s|0}}else j=c[a+32>>2]|0;while(0);if(!f)f=0;else{g=q+(p+4)|0;h=0;while(1){c[j+(h<<2)>>2]=(d[g+1>>0]|0)<<8|(d[g>>0]|0)<<16|(d[g+2>>0]|0);h=h+1|0;if((h|0)==(f|0))break;else g=g+5|0}}c[j+(f<<2)>>2]=0;s=j;i=t;return s|0}h=q+m|0;if(f){s=At(a,h,b)|0;i=t;return s|0}r=(d[q+(p+1)>>0]|0)<<16|(d[q+p>>0]|0)<<24|(d[q+(p+2)>>0]|0)<<8|(d[q+(p+3)>>0]|0);s=(d[q+(m+1)>>0]|0)<<16|(d[h>>0]|0)<<24|(d[q+(m+2)>>0]|0)<<8|(d[q+(m+3)>>0]|0);if(!s)f=0;else{j=q+(m+7)|0;g=s;f=0;while(1){f=f+1+(d[j>>0]|0)|0;g=g+-1|0;if(!g)break;else j=j+4|0}}if(!r){s=At(a,h,b)|0;i=t;return s|0}g=r+1|0;if(!f){j=a+28|0;f=c[j>>2]|0;c[l>>2]=0;do if(f>>>0>>0){c[a+36>>2]=b;s=a+32|0;h=hh(b,4,f,g,c[s>>2]|0,l)|0;c[s>>2]=h;if(!(c[l>>2]|0)){c[j>>2]=g;break}else{s=0;i=t;return s|0}}else h=c[a+32>>2]|0;while(0);f=q+(p+4)|0;g=0;while(1){c[h+(g<<2)>>2]=(d[f+1>>0]|0)<<8|(d[f>>0]|0)<<16|(d[f+2>>0]|0);g=g+1|0;if((g|0)==(r|0))break;else f=f+5|0}c[h+(r<<2)>>2]=0;s=h;i=t;return s|0}j=g+f|0;g=a+28|0;f=c[g>>2]|0;c[o>>2]=0;do if(f>>>0>>0){c[a+36>>2]=b;a=a+32|0;f=hh(b,4,f,j,c[a>>2]|0,o)|0;c[a>>2]=f;if(!(c[o>>2]|0)){c[g>>2]=j;b=f;break}else{s=0;i=t;return s|0}}else b=c[a+32>>2]|0;while(0);f=d[q+(m+7)>>0]|0;l=1;k=q+(m+8)|0;h=(d[q+(m+5)>>0]|0)<<8|(d[q+(m+4)>>0]|0)<<16|(d[q+(m+6)>>0]|0);g=0;e=1;a=(d[q+(p+5)>>0]|0)<<8|(d[q+(p+4)>>0]|0)<<16|(d[q+(p+6)>>0]|0);j=q+(p+9)|0;b:while(1){if(a>>>0>(f+h|0)>>>0){n=k;m=h;while(1){h=g;k=0;while(1){g=h+1|0;c[b+(h<<2)>>2]=k+m;k=k+1|0;if(k>>>0>f>>>0)break;else h=g}l=l+1|0;if(l>>>0>s>>>0){o=f;k=n;h=m;f=a;break b}h=(d[n+1>>0]|0)<<8|(d[n>>0]|0)<<16|(d[n+2>>0]|0);k=n+4|0;f=d[n+3>>0]|0;if(a>>>0>(f+h|0)>>>0){n=k;m=h}else break}}if(a>>>0>>0){c[b+(g<<2)>>2]=a;g=g+1|0}e=e+1|0;if(e>>>0>r>>>0){o=f;f=a;break}a=(d[j+1>>0]|0)<<8|(d[j>>0]|0)<<16|(d[j+2>>0]|0);j=j+5|0}if(e>>>0>r>>>0)if(l>>>0<=s>>>0){j=g;g=0;while(1){f=j+1|0;c[b+(j<<2)>>2]=g+h;g=g+1|0;if(g>>>0>o>>>0)break;else j=f}if(l>>>0>>0)while(1){j=(d[k+1>>0]|0)<<8|(d[k>>0]|0)<<16|(d[k+2>>0]|0);g=d[k+3>>0]|0;h=f;e=0;while(1){c[b+(h<<2)>>2]=e+j;if((e|0)==(g|0))break;else{h=h+1|0;e=e+1|0}}f=f+1+g|0;l=l+1|0;if((l|0)==(s|0))break;else k=k+4|0}}else f=g;else{c[b+(g<<2)>>2]=f;f=g+1|0;if(e>>>0>>0){h=g+r+1|0;g=e;while(1){c[b+(f<<2)>>2]=(d[j+1>>0]|0)<<8|(d[j>>0]|0)<<16|(d[j+2>>0]|0);g=g+1|0;if((g|0)==(r|0))break;else{f=f+1|0;j=j+5|0}}f=h-e|0}}c[b+(f<<2)>>2]=0;s=b;i=t;return s|0}else if((j|0)==59){i=t;return f|0}return 0}function Fo(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;m=(d[a+3>>0]|0)<<16|(d[a+2>>0]|0)<<24|(d[a+4>>0]|0)<<8|(d[a+5>>0]|0);n=(d[a+7>>0]|0)<<16|(d[a+6>>0]|0)<<24|(d[a+8>>0]|0)<<8|(d[a+9>>0]|0);o=b+4|0;if(m>>>0>((c[o>>2]|0)-a|0)>>>0)ph(b,8);if(m>>>0<((n*11|0)+10|0)>>>0)ph(b,8);if(!n){i=u;return 0}p=b+8|0;q=b+172|0;r=1;s=0;t=a+10|0;a:while(1){e=(d[t+1>>0]|0)<<8|(d[t>>0]|0)<<16|(d[t+2>>0]|0);f=(d[t+4>>0]|0)<<16|(d[t+3>>0]|0)<<24|(d[t+5>>0]|0)<<8|(d[t+6>>0]|0);l=(d[t+8>>0]|0)<<16|(d[t+7>>0]|0)<<24|(d[t+9>>0]|0)<<8|(d[t+10>>0]|0);t=t+11|0;if(!(f>>>0>>0&l>>>0>>0)){e=7;break}if(e>>>0>>0){e=9;break}r=e+1|0;if(f){e=f+4|0;k=(d[a+(f+1)>>0]|0)<<16|(d[a+f>>0]|0)<<24|(d[a+(f+2)>>0]|0)<<8|(d[a+(f+3)>>0]|0);if((a+((k<<2)+e)|0)>>>0>(c[o>>2]|0)>>>0){e=12;break}if(k){h=a+e|0;g=0;j=0;while(1){e=(d[h+1>>0]|0)<<8|(d[h>>0]|0)<<16|(d[h+2>>0]|0);f=e+(d[h+3>>0]|0)|0;if(f>>>0>1114111){e=15;break a}if(e>>>0>>0){e=17;break a}g=g+1|0;if((g|0)==(k|0))break;else{h=h+4|0;j=f+1|0}}}}if(l){e=a+(l+4)|0;h=(d[a+(l+1)>>0]|0)<<16|(d[a+l>>0]|0)<<24|(d[a+(l+2)>>0]|0)<<8|(d[a+(l+3)>>0]|0);if(h<<2>>>0>((c[o>>2]|0)-e|0)>>>0){e=21;break}if(h){j=0;k=0;do{f=(d[e+1>>0]|0)<<8|(d[e>>0]|0)<<16|(d[e+2>>0]|0);g=e;e=e+5|0;if(f>>>0>1114111){e=24;break a}if(f>>>0>>0){e=26;break a}k=f+1|0;if((c[p>>2]|0)!=0?((d[g+3>>0]|0)<<8|(d[g+4>>0]|0))>>>0>=(c[q>>2]|0)>>>0:0){e=29;break a}j=j+1|0}while((j|0)!=(h|0))}}s=s+1|0;if((s|0)==(n|0)){e=32;break}}switch(e|0){case 7:{ph(b,8);break}case 9:{ph(b,8);break}case 12:{ph(b,8);break}case 15:{ph(b,8);break}case 17:{ph(b,8);break}case 21:{ph(b,8);break}case 24:{ph(b,8);break}case 26:{ph(b,8);break}case 29:{ph(b,16);break}case 32:{i=u;return 0}}return 0}function Go(a,b){a=a|0;b=b|0;c[b+4>>2]=14;c[b>>2]=-1;return 0}function Ho(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;l=b[a+152>>1]|0;a=c[a+156>>2]|0;h=a+((l&65535)<<4)|0;if(!(l<<16>>16)){j=142;i=k;return j|0}while(1){if((c[a>>2]|0)==(d|0)?(g=c[a+12>>2]|0,(g|0)!=0):0)break;a=a+16|0;if(a>>>0>=h>>>0){a=142;j=9;break}}if((j|0)==9){i=k;return a|0}if(!a){j=142;i=k;return j|0}if(f)c[f>>2]=g;j=Hh(e,c[a+8>>2]|0)|0;i=k;return j|0}function Io(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Z=i;i=i+64|0;L=Z+52|0;N=Z;M=Z+44|0;W=Z+48|0;j=f+528|0;h=c[j>>2]|0;k=f+96|0;do if(!h){h=di(c[(c[k>>2]|0)+4>>2]|0,87272)|0;if(!h){g=11;i=Z;return g|0}else{c[j>>2]=h;c[f+504>>2]=c[h>>2];Y=h;break}}else Y=h;while(0);c[f+532>>2]=ei(c[k>>2]|0,88528)|0;O=c[d+28>>2]|0;J=f+132|0;c[J>>2]=0;K=f+136|0;c[K>>2]=0;X=f+140|0;c[X>>2]=0;k=ui(d)|0;j=ti(d,W)|0;h=c[W>>2]|0;if(h){g=h;i=Z;return g|0}z=N+4|0;A=N+8|0;B=N+12|0;C=N+16|0;D=N+24|0;E=N+28|0;F=N+32|0;G=N+36|0;H=N+40|0;V=f+104|0;I=f+8|0;while(1){if((j|0)==65536|(j|0)==131072|(j|0)==1330926671|(j|0)==1953658213|(j|0)==1953784678|(j|0)==1954115633){h=j;m=65;break}else if((j|0)!=2001684038){h=2;m=80;break}h=Hh(d,k)|0;c[W>>2]=h;if(h){m=80;break}w=d+28|0;y=c[w>>2]|0;c[L>>2]=0;h=Li(d,88568,N)|0;c[L>>2]=h;do if(!h){x=c[z>>2]|0;if((((!((x|0)==1953784678|(x|0)==2001684038)?(S=c[A>>2]|0,(S|0)==(c[d+4>>2]|0)):0)?(x=b[B>>1]|0,T=x&65535,x<<16>>16!=0):0)?((T*20|0)+44|0)>>>0>>0:0)?(U=c[C>>2]|0,(T<<4|12)>>>0>>0&(U&3|0)==0):0){h=c[E>>2]|0;if(!(c[D>>2]|0)){if(c[F>>2]|h){h=8;break}}else if((c[F>>2]|0)==0&(h|0)!=0){h=8;break}if((c[G>>2]|0)!=0|(c[H>>2]|0)==0){x=ch(y,U,L)|0;a:do if(!(c[L>>2]|0)){v=ch(y,40,L)|0;if(!(c[L>>2]|0)){u=b[B>>1]|0;k=u&65535;if(!(u<<16>>16))h=-1;else{h=0;j=k;while(1){j=j>>>1;if(!j)break;else h=h+1|0}}p=16<>0]=(c[z>>2]|0)>>>24;a[x+1>>0]=(c[z>>2]|0)>>>16;a[x+2>>0]=(c[z>>2]|0)>>>8;a[x+3>>0]=c[z>>2];a[x+4>>0]=(e[B>>1]|0)>>>8;a[x+5>>0]=b[B>>1];a[x+6>>0]=p>>>8;a[x+7>>0]=p;a[x+8>>0]=h>>>8;a[x+9>>0]=h;a[x+10>>0]=u>>>8;p=x+12|0;a[x+11>>0]=u;h=hh(y,24,0,e[B>>1]|0,0,L)|0;if(!(c[L>>2]|0)){j=hh(y,4,0,e[B>>1]|0,0,L)|0;if((c[L>>2]|0)==0?(u=yi(d,(e[B>>1]|0)*20|0)|0,c[L>>2]=u,(u|0)==0):0){b:do if(b[B>>1]|0){l=0;m=0;while(1){k=h+(l*24|0)|0;c[k>>2]=Fi(d)|0;c[h+(l*24|0)+4>>2]=Fi(d)|0;c[h+(l*24|0)+8>>2]=Fi(d)|0;c[h+(l*24|0)+12>>2]=Fi(d)|0;c[h+(l*24|0)+16>>2]=Fi(d)|0;u=m;m=c[k>>2]|0;if(m>>>0<=u>>>0)break;c[j+(l<<2)>>2]=k;l=l+1|0;if((l|0)>=(e[B>>1]|0))break b}Bi(d);c[L>>2]=8;d=v;break a}while(0);Bi(d);bea(j,e[B>>1]|0,4,199);q=b[B>>1]|0;r=q&65535;m=(r*20|0)+44|0;o=r<<4|12;c:do if(!(q<<16>>16))l=0;else{s=c[A>>2]|0;t=c[C>>2]|0;u=0;while(1){k=c[j+(u<<2)>>2]|0;if((c[k+4>>2]|0)!=(m|0))break;l=c[k+8>>2]|0;if((l+m|0)>>>0>s>>>0)break;n=c[k+12>>2]|0;if((n+o|0)>>>0>t>>>0|l>>>0>n>>>0)break;c[k+20>>2]=o;m=(l+3&-4)+m|0;o=(n+3&-4)+o|0;u=u+1|0;if((u|0)>=(r|0)){l=q;break c}}c[L>>2]=8;d=v;break a}while(0);k=c[D>>2]|0;do if(k){if((k|0)==(m|0)?(P=(c[E>>2]|0)+m|0,P>>>0<=(c[A>>2]|0)>>>0):0){m=P;break}c[L>>2]=8;d=v;break a}while(0);k=c[G>>2]|0;do if(!k)k=c[A>>2]|0;else{if((k|0)==(m+3&-4|0)?(Q=(c[H>>2]|0)+k|0,R=c[A>>2]|0,Q>>>0<=R>>>0):0){k=R;m=Q;break}c[L>>2]=8;d=v;break a}while(0);if(!((m|0)==(k|0)?(o|0)==(c[C>>2]|0):0)){c[L>>2]=8;d=v;break}do if(l<<16>>16){q=d+32|0;r=0;while(1){k=h+(r*24|0)|0;a[p>>0]=(c[k>>2]|0)>>>24;a[p+1>>0]=(c[k>>2]|0)>>>16;a[p+2>>0]=(c[k>>2]|0)>>>8;a[p+3>>0]=c[k>>2];k=h+(r*24|0)+16|0;a[p+4>>0]=(c[k>>2]|0)>>>24;a[p+5>>0]=(c[k>>2]|0)>>>16;a[p+6>>0]=(c[k>>2]|0)>>>8;a[p+7>>0]=c[k>>2];k=h+(r*24|0)+20|0;a[p+8>>0]=(c[k>>2]|0)>>>24;a[p+9>>0]=(c[k>>2]|0)>>>16;a[p+10>>0]=(c[k>>2]|0)>>>8;a[p+11>>0]=c[k>>2];m=h+(r*24|0)+12|0;a[p+12>>0]=(c[m>>2]|0)>>>24;a[p+13>>0]=(c[m>>2]|0)>>>16;a[p+14>>0]=(c[m>>2]|0)>>>8;a[p+15>>0]=c[m>>2];p=p+16|0;u=Hh(d,c[h+(r*24|0)+4>>2]|0)|0;c[L>>2]=u;if(u){d=v;break a}l=h+(r*24|0)+8|0;u=yi(d,c[l>>2]|0)|0;c[L>>2]=u;if(u){d=v;break a}n=c[l>>2]|0;o=c[m>>2]|0;if((n|0)!=(o|0)){c[M>>2]=o;u=yj(y,x+(c[k>>2]|0)|0,M,c[q>>2]|0,c[l>>2]|0)|0;c[L>>2]=u;if(u){d=v;break a}if((c[M>>2]|0)!=(c[m>>2]|0)){m=55;break}}else Aga(x+(c[k>>2]|0)|0,c[q>>2]|0,n|0)|0;Bi(d);k=(c[m>>2]|0)+(c[k>>2]|0)|0;if(k&3)do{a[x+k>>0]=0;k=k+1|0}while((k&3|0)!=0);r=r+1|0;if((r|0)>=(e[B>>1]|0)){m=59;break}}if((m|0)==55){c[L>>2]=8;d=v;break a}else if((m|0)==59){d=c[C>>2]|0;break}}else d=o;while(0);rh(v,x,d);c[v+28>>2]=c[w>>2];c[v+24>>2]=227;sh(c[V>>2]|0,(c[I>>2]|0)>>>10&1);c[V>>2]=v;c[I>>2]=c[I>>2]&-1025;d=v}else d=v}else{j=0;d=v}}else{j=0;d=v;h=0}}else{j=0;d=0;h=0}while(0);eh(y,h);eh(y,j);if(!(c[L>>2]|0))h=0;else{eh(y,x);th(d);eh(y,d);h=c[L>>2]|0}}else h=8}else h=8}while(0);c[W>>2]=h;if(h){m=80;break}d=c[V>>2]|0;k=ui(d)|0;j=ti(d,W)|0;h=c[W>>2]|0;if(h){m=80;break}}if((m|0)==65){c[J>>2]=1953784678;do if((h|0)==1953784678){h=Li(d,88552,J)|0;c[W>>2]=h;if(h){g=h;i=Z;return g|0}h=c[X>>2]|0;if(!h){g=8;i=Z;return g|0}if(h>>>0>(c[d+4>>2]|0)>>>5>>>0){g=10;i=Z;return g|0}j=f+144|0;c[j>>2]=hh(O,4,0,h,0,W)|0;h=c[W>>2]|0;if(h){g=h;i=Z;return g|0}h=yi(d,c[X>>2]<<2)|0;c[W>>2]=h;if(h){g=h;i=Z;return g|0}if((c[X>>2]|0)>0){h=0;do{R=Fi(d)|0;c[(c[j>>2]|0)+(h<<2)>>2]=R;h=h+1|0}while((h|0)<(c[X>>2]|0))}Bi(d);h=c[W>>2]|0;if(h){g=h;i=Z;return g|0}}else{c[K>>2]=65536;c[X>>2]=1;j=ch(O,4,W)|0;c[f+144>>2]=j;h=c[W>>2]|0;if(!h){c[j>>2]=k;break}else{g=h;i=Z;return g|0}}while(0);k=c[V>>2]|0;j=(g|0)<0?0:g;if((j|0)>=(c[X>>2]|0)){g=6;i=Z;return g|0}h=Hh(k,c[(c[f+144>>2]|0)+(j<<2)>>2]|0)|0;if(h){g=h;i=Z;return g|0}h=Wd[c[Y+88>>2]&511](f,k)|0;if(h){g=h;i=Z;return g|0}c[f>>2]=c[X>>2];c[f+4>>2]=j;g=0;i=Z;return g|0}else if((m|0)==80){i=Z;return h|0}return 0}function Jo(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+32|0;C=E+28|0;D=E;B=c[f+528>>2]|0;if((h|0)>0){k=0;p=0;l=0;do{g=c[j+(k<<3)>>2]|0;if((g|0)==1768386662)p=1;else l=(g|0)==1768386675?1:l;k=k+1|0}while((k|0)!=(h|0));q=p;s=l}else{q=0;s=0}h=f+128|0;a:do if(!(c[(c[h>>2]|0)+48>>2]|0)){p=b[f+152>>1]|0;g=c[f+156>>2]|0;k=g+((p&65535)<<4)|0;p=p<<16>>16==0;b:do if(!p){l=g;do{if((c[l>>2]|0)==1735162214?(c[l+12>>2]|0)!=0:0){n=l;A=10;break}l=l+16|0}while(l>>>0>>0);if((A|0)==10?(n|0)!=0:0){g=1;break a}if(!p)while(1){if((c[g>>2]|0)==1128678944?(c[g+12>>2]|0)!=0:0)break b;g=g+16|0;if(g>>>0>=k>>>0){g=0;break}}else g=0}else g=0;while(0);g=(g|0)!=0&1}else g=1;while(0);p=(ce[c[f+504>>2]&255](f,1935829368,d,0)|0)==0;k=p?0:g;if(k<<24>>24==0?(m=c[B+68>>2]|0,(m|0)!=0):0){g=Wd[m&511](f,d)|0;c[C>>2]=g;g=(g|0)==0;if(p|g^1)A=19}else{g=0;A=19}if((A|0)==19){l=Wd[c[B+24>>2]&511](f,d)|0;c[C>>2]=l;if(l){f=l;i=E;return f|0}}z=f+178|0;if(!(b[z>>1]|0)){c[C>>2]=8;f=8;i=E;return f|0}Wd[c[B+36>>2]&511](f,d)|0;Wd[c[B+32>>2]&511](f,d)|0;Wd[c[B+48>>2]&511](f,d)|0;j=Wd[c[B+44>>2]&511](f,d)|0;c[C>>2]=j;if(!g){l=B+28|0;g=Od[c[l>>2]&255](f,d,0)|0;c[C>>2]=g;do if(!g){g=Od[c[B+92>>2]&255](f,d,0)|0;c[C>>2]=g;if((g&255|0)!=142){if(!g){p=k;break}i=E;return g|0}c[C>>2]=147;g=c[(c[h>>2]|0)+48>>2]|0;if(!g){f=147;i=E;return f|0}if(!(c[(c[g>>2]|0)+8>>2]|0)){f=147;i=E;return f|0}else{b[f+250>>1]=0;c[C>>2]=0;p=k;break}}else{if((g&255|0)!=142){f=g;i=E;return f|0}if((c[f+148>>2]|0)==1953658213){c[C>>2]=0;p=0;break}c[C>>2]=143;g=c[(c[h>>2]|0)+48>>2]|0;if(!g){f=143;i=E;return f|0}if(!(c[(c[g>>2]|0)+8>>2]|0)){f=143;i=E;return f|0}else{b[f+250>>1]=0;c[C>>2]=0;p=k;break}}while(0);g=Od[c[l>>2]&255](f,d,1)|0;c[C>>2]=g;if(!g){g=Od[c[B+92>>2]&255](f,d,1)|0;c[C>>2]=g;if(!g)a[f+292>>0]=1;else{o=g;A=38}}else{o=g;A=38}if((A|0)==38?!((o|0)==0|(o&255|0)==142):0){f=o;i=E;return f|0}y=Wd[c[B+40>>2]&511](f,d)|0;c[C>>2]=y;if(y)b[f+364>>1]=-1}else p=k;g=c[B+96>>2]|0;do if((g|0)!=0?(r=Wd[g&511](f,d)|0,c[C>>2]=r,(r|0)!=0):0)if((r&255|0)==142){c[C>>2]=0;break}else{f=r;i=E;return f|0}while(0);g=Wd[c[B+64>>2]&511](f,d)|0;c[C>>2]=g;do if(g)if((g&255|0)==142){c[f+544>>2]=0;break}else{f=g;i=E;return f|0}while(0);Wd[c[B+60>>2]&511](f,d)|0;c[C>>2]=Wd[c[B+56>>2]&511](f,d)|0;c[f+16>>2]=e[f+264>>1];l=f+20|0;c[l>>2]=0;k=f+24|0;c[k>>2]=0;y=f+364|0;if((b[y>>1]|0)!=-1?(b[f+428>>1]&256)!=0:0){do if(!(q<<24>>24)){g=Dt(f,16,l)|0;c[C>>2]=g;if(!g)if(!(c[l>>2]|0)){A=53;break}else break;else{f=g;i=E;return f|0}}else A=53;while(0);if((A|0)==53?(t=Dt(f,1,l)|0,c[C>>2]=t,(t|0)!=0):0){f=t;i=E;return f|0}if(s<<24>>24==0?(u=Dt(f,17,k)|0,c[C>>2]=u,(u|0)!=0):0){f=u;i=E;return f|0}if((c[k>>2]|0)==0?(v=Dt(f,2,k)|0,c[C>>2]=v,(v|0)!=0):0){f=v;i=E;return f|0}}else{g=Dt(f,21,l)|0;c[C>>2]=g;if(g){f=g;i=E;return f|0}g=c[l>>2]|0;do if(!((g|0)!=0|q<<24>>24!=0)){g=Dt(f,16,l)|0;c[C>>2]=g;if(!g){g=c[l>>2]|0;break}else{f=g;i=E;return f|0}}while(0);if((g|0)==0?(w=Dt(f,1,l)|0,c[C>>2]=w,(w|0)!=0):0){f=w;i=E;return f|0}g=Dt(f,22,k)|0;c[C>>2]=g;if(g){f=g;i=E;return f|0}g=c[k>>2]|0;do if(!((g|0)!=0|s<<24>>24!=0)){g=Dt(f,17,k)|0;c[C>>2]=g;if(!g){g=c[k>>2]|0;break}else{f=g;i=E;return f|0}}while(0);if((g|0)==0?(x=Dt(f,2,k)|0,c[C>>2]=x,(x|0)!=0):0){f=x;i=E;return f|0}}r=f+8|0;l=c[r>>2]|0;p=p<<24>>24==1;l=((c[f+728>>2]&-2|0)==2?l|16384:l)|p&1;g=l|24;if(!j)g=(c[f+464>>2]|0)==196608?g:l|536;g=(c[f+476>>2]|0)==0?g:g|4;d=f+292|0;g=(a[d>>0]|0)==0?g:g|32;g=(c[f+748>>2]|0)==0?g:g|64;x=b[f+152>>1]|0;l=c[f+156>>2]|0;h=l+((x&65535)<<4)|0;c:do if(x<<16>>16){k=l;while(1){if((c[k>>2]|0)==1735162214?(c[k+12>>2]|0)!=0:0)break;k=k+16|0;if(k>>>0>=h>>>0)break c}if(k){k=l;while(1){if((c[k>>2]|0)==1719034226?(c[k+12>>2]|0)!=0:0)break;k=k+16|0;if(k>>>0>=h>>>0)break c}if(k){while(1){if((c[l>>2]|0)==1735811442?(c[l+12>>2]|0)!=0:0)break;l=l+16|0;if(l>>>0>=h>>>0){l=0;break}}g=(l|0)==0?g:g|256}}}while(0);c[r>>2]=g;if(p?(b[y>>1]|0)!=-1:0){x=b[f+428>>1]|0;g=x&65535;g=(x&65535)>>>4&2|((g&512|0)==0?g&1:1)}else{g=b[f+204>>1]|0;g=(g&65535)>>>1&1|(g&1)<<1}c[f+12>>2]=g;Et(f);h=c[f+36>>2]|0;if((h|0)>0){m=c[f+40>>2]|0;o=0;do{n=c[m+(o<<2)>>2]|0;l=e[n+8>>1]|0;k=e[n+10>>1]|0;g=88352;while(1){if((c[g>>2]|0)==(l|0)?(x=c[g+4>>2]|0,(x|0)==(k|0)|(x|0)==-1):0){A=94;break}g=g+12|0;if(g>>>0>=88484>>>0){g=0;break}}if((A|0)==94){A=0;g=c[g+8>>2]|0}c[n+4>>2]=g;o=o+1|0}while((o|0)<(h|0))}q=c[f+732>>2]|0;do if(q){l=c[(c[f+104>>2]|0)+28>>2]|0;g=b[z>>1]|0;if(g<<16>>16!=0?(b[y>>1]|0)!=-1:0)h=b[f+366>>1]|0;else{h=0;g=1}k=hh(l,16,0,q,0,C)|0;j=f+32|0;c[j>>2]=k;l=c[C>>2]|0;if(l){f=l;i=E;return f|0}o=B+108|0;p=D+20|0;n=h<<16>>16;m=g&65535;h=(g&65535)>>>1&65535;l=0;while(1){g=Od[c[o>>2]&255](f,l,D)|0;c[C>>2]=g;if(g){A=120;break}b[k+(l<<4)>>1]=(c[p>>2]|0)>>>6;g=c[D>>2]|0;B=g&65535;b[k+(l<<4)+2>>1]=((ea(B,n)|0)+h|0)/(m|0)|0;c[k+(l<<4)+8>>2]=B<<6;g=g>>>16<<6;c[k+(l<<4)+12>>2]=g;c[k+(l<<4)+4>>2]=g;g=l+1|0;if(g>>>0>=q>>>0){A=107;break}k=c[j>>2]|0;l=g}if((A|0)==107){g=c[r>>2]|2;c[r>>2]=g;c[f+28>>2]=q;break}else if((A|0)==120){i=E;return g|0}}else g=c[r>>2]|0;while(0);if(!(g&3)){g=g|1;c[r>>2]=g}if(!(g&1)){f=0;i=E;return f|0}c[f+52>>2]=b[f+196>>1];c[f+56>>2]=b[f+198>>1];c[f+60>>2]=b[f+200>>1];c[f+64>>2]=b[f+202>>1];b[f+68>>1]=b[z>>1]|0;C=b[f+220>>1]|0;h=f+70|0;b[h>>1]=C;D=b[f+222>>1]|0;l=f+72|0;b[l>>1]=D;g=(C&65535)-(D&65535)+(e[f+224>>1]|0)|0;m=f+74|0;b[m>>1]=g;do if((C|D)<<16>>16==0?(b[y>>1]|0)!=-1:0){g=b[f+434>>1]|0;k=b[f+436>>1]|0;if(!((g|k)<<16>>16)){D=b[f+440>>1]|0;b[h>>1]=D;g=e[f+442>>1]|0;b[l>>1]=0-g;g=(D&65535)+g|0;b[m>>1]=g;break}else{b[h>>1]=g;b[l>>1]=k;g=(g&65535)-(k&65535)+(e[f+438>>1]|0)|0;b[m>>1]=g;break}}while(0);b[f+76>>1]=b[f+226>>1]|0;if(!(a[d>>0]|0))g=g<<16>>16;else g=e[f+306>>1]|0;b[f+78>>1]=g;D=b[f+474>>1]|0;b[f+80>>1]=(e[f+472>>1]|0)-((D<<16>>16|0)/2|0);b[f+82>>1]=D;f=0;i=E;return f|0}function Ko(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;if(!d){i=k;return}f=c[d+100>>2]|0;g=d+528|0;h=c[g>>2]|0;j=(h|0)!=0;if(j){e=c[h+80>>2]|0;if(e)Id[e&511](d);e=c[h+100>>2]|0;if(e)Id[e&511](d)}if(a[d+776>>0]|0){e=d+756|0;if(c[e>>2]|0)zi(c[d+104>>2]|0,e);c[d+760>>2]=0;c[d+764>>2]=0;c[d+768>>2]=0}e=d+104|0;zi(c[e>>2]|0,d+736|0);l=d+740|0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;l=d+144|0;eh(f,c[l>>2]|0);c[l>>2]=0;c[d+140>>2]=0;l=d+156|0;eh(f,c[l>>2]|0);c[l>>2]=0;b[d+152>>1]=0;zi(c[e>>2]|0,d+496|0);c[d+500>>2]=0;e=c[e>>2]|0;zi(e,d+676|0);zi(e,d+684|0);c[d+680>>2]=0;c[d+688>>2]=0;e=d+292|0;if(a[e>>0]|0){l=d+332|0;eh(f,c[l>>2]|0);c[l>>2]=0;l=d+336|0;eh(f,c[l>>2]|0);c[l>>2]=0;a[e>>0]=0}l=d+540|0;eh(f,c[l>>2]|0);c[l>>2]=0;b[d+538>>1]=0;if(j)Id[c[h+52>>2]&511](d);j=d+20|0;eh(f,c[j>>2]|0);c[j>>2]=0;j=d+24|0;eh(f,c[j>>2]|0);c[j>>2]=0;j=d+32|0;eh(f,c[j>>2]|0);c[j>>2]=0;c[d+28>>2]=0;d=d+660|0;eh(f,c[d>>2]|0);c[d>>2]=0;c[g>>2]=0;i=k;return}function Lo(a,b){a=a|0;b=b|0;a=i;b=nh(87440,b)|0;i=a;return b|0}function Mo(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;m=i;do if(d){n=b[a+152>>1]|0;h=c[a+156>>2]|0;k=h+((n&65535)<<4)|0;if(!(n<<16>>16)){n=142;i=m;return n|0}while(1){if((c[h>>2]|0)==(d|0)?(j=c[h+12>>2]|0,(j|0)!=0):0)break;h=h+16|0;if(h>>>0>=k>>>0){h=142;l=13;break}}if((l|0)==13){i=m;return h|0}if(!h){n=142;i=m;return n|0}else{e=(c[h+8>>2]|0)+e|0;break}}else j=c[(c[a+104>>2]|0)+4>>2]|0;while(0);if(g){h=c[g>>2]|0;if(!h){c[g>>2]=j;n=0;i=m;return n|0}}else h=j;n=vi(c[a+104>>2]|0,e,f,h)|0;i=m;return n|0}function No(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;d=ce[c[a+504>>2]&255](a,1751474532,b,0)|0;if(d){b=d;i=e;return b|0}b=Li(b,87712,a+160|0)|0;i=e;return b|0}function Oo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;e=c[a+504>>2]|0;if(!(d<<24>>24)){e=ce[e&255](a,1751672161,b,0)|0;if(!e){d=a+216|0;f=6}}else{e=ce[e&255](a,1986553185,b,0)|0;if(!e){d=a+296|0;f=6}}if((f|0)==6){e=Li(b,88272,d)|0;if(!e){c[d+36>>2]=0;c[d+40>>2]=0;e=0}}i=g;return e|0}function Po(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;e=a+500|0;d=ce[c[a+504>>2]&255](a,1668112752,b,e)|0;if(!d){d=xi(b,c[e>>2]|0,a+496|0)|0;if(!d)d=0;else c[e>>2]=0}i=f;return d|0}function Qo(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;k=a+260|0;f=ce[c[a+504>>2]&255](a,1835104368,d,0)|0;if(!f){f=Li(d,88192,k)|0;if(!f){h=a+276|0;j=a+280|0;g=a+290|0;f=a+266|0;a=f+26|0;do{b[f>>1]=0;f=f+2|0}while((f|0)<(a|0));if((c[k>>2]|0)>65535){f=Li(d,88208,k)|0;if(!f){if((e[j>>1]|0)<64)b[j>>1]=64;if((e[h>>1]|0)>65531)b[h>>1]=-5;if((e[g>>1]|0)>100){b[g>>1]=100;f=0}else f=0}}else f=0}}i=l;return f|0}function Ro(a,d){a=a|0;d=d|0;var f=0,g=0,h=0;h=i;f=ce[c[a+504>>2]&255](a,1330851634,d,0)|0;if(!f){g=a+364|0;f=Li(d,87968,g)|0;if(!f){a=a+444|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;b[a+16>>1]=0;if(b[g>>1]|0){f=Li(d,88144,g)|0;if(!f)if((e[g>>1]|0)>1)f=Li(d,88160,g)|0;else f=0}else f=0}}i=h;return f|0}function So(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;d=ce[c[a+504>>2]&255](a,1886352244,b,0)|0;if(d){b=d;i=e;return b|0}b=Li(b,87920,a+464|0)|0;i=e;return b|0}function To(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;r=s+4|0;f=s;h=c[d+28>>2]|0;c[a+360>>2]=d;e=ce[c[a+504>>2]&255](a,1851878757,d,f)|0;c[r>>2]=e;if(e){d=e;i=s;return d|0}n=ui(d)|0;e=Li(d,87864,a+344|0)|0;c[r>>2]=e;if(e){d=e;i=s;return d|0}q=a+348|0;j=c[q>>2]|0;g=j*12|0;l=n+6+g|0;k=(c[f>>2]|0)+n|0;if(l>>>0>k>>>0){c[r>>2]=145;d=145;i=s;return d|0}c[q>>2]=0;m=a+356|0;c[m>>2]=hh(h,20,0,j,0,r)|0;e=c[r>>2]|0;if(e){d=e;i=s;return d|0}e=yi(d,g)|0;c[r>>2]=e;if(e){d=e;i=s;return d|0}e=c[m>>2]|0;if(!j)f=e;else{g=a+352|0;h=j;do{j=Li(d,87888,e)|0;c[r>>2]=j;do if((j|0)==0?(o=e+8|0,p=b[o>>1]|0,p<<16>>16!=0):0){f=e+12|0;j=(c[g>>2]|0)+n+(c[f>>2]|0)|0;c[f>>2]=j;if(j>>>0>=l>>>0?((p&65535)+j|0)>>>0<=k>>>0:0){e=e+20|0;break}c[f>>2]=0;b[o>>1]=0}while(0);h=h+-1|0}while((h|0)!=0);f=c[m>>2]|0}c[q>>2]=(e-f|0)/20|0;Bi(d);b[a+340>>1]=c[q>>2];d=c[r>>2]|0;i=s;return d|0}function Uo(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;f=c[(c[a+96>>2]|0)+8>>2]|0;g=a+356|0;d=c[g>>2]|0;h=a+348|0;e=c[h>>2]|0;if(d){if(e){while(1){k=d+16|0;eh(f,c[k>>2]|0);c[k>>2]=0;b[d+8>>1]=0;e=e+-1|0;if(!e)break;else d=d+20|0}d=c[g>>2]|0}eh(f,d);c[g>>2]=0}c[h>>2]=0;b[a+344>>1]=0;c[a+352>>2]=0;i=j;return}function Vo(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;g=p;e=ce[c[a+504>>2]&255](a,1801810542,b,g)|0;if(e){a=e;i=p;return a|0}e=c[g>>2]|0;if(e>>>0<4){a=142;i=p;return a|0}f=a+736|0;e=xi(b,e,f)|0;if(e){a=e;i=p;return a|0}o=c[g>>2]|0;c[a+740>>2]=o;b=c[f>>2]|0;o=b+o|0;n=(d[b+2>>0]|0)<<8|(d[b+3>>0]|0);n=n>>>0>32?32:n;a:do if(!n){g=0;f=0;e=0}else{g=0;f=0;e=0;m=b+4|0;do{l=1<>>0>o>>>0)break a;b=(d[m+2>>0]|0)<<8|(d[m+3>>0]|0);if(b>>>0<7)break a;j=m+b|0;k=m;m=j>>>0>o>>>0?o:j;j=k+14|0;b:do if(!(j>>>0>o>>>0?1:((d[k+4>>0]|0)<<8|(d[k+5>>0]|0)&247|0)!=1)){b=(d[h>>0]|0)<<8|(d[k+7>>0]|0);h=m-j|0;if((h|0)<(b*6|0))b=(h|0)/6|0;g=l|g;if(b){b=b+-1|0;if(b){j=(d[k+15>>0]|0)<<16|(d[j>>0]|0)<<24|(d[k+16>>0]|0)<<8|(d[k+17>>0]|0);h=k+20|0;while(1){k=j;j=(d[h+1>>0]|0)<<16|(d[h>>0]|0)<<24|(d[h+2>>0]|0)<<8|(d[h+3>>0]|0);if(j>>>0<=k>>>0)break b;b=b+-1|0;if(!b)break;else h=h+6|0}}e=l|e}}while(0);f=f+1|0}while(f>>>0>>0)}while(0);c[a+744>>2]=f;c[a+748>>2]=g;c[a+752>>2]=e;a=0;i=p;return a|0}function Wo(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;g=c[d+28>>2]|0;f=ce[c[a+504>>2]&255](a,1734439792,d,0)|0;c[k>>2]=f;if(f){d=f;i=l;return d|0}f=yi(d,4)|0;c[k>>2]=f;if(f){d=f;i=l;return d|0}j=a+536|0;b[j>>1]=Di(d)|0;f=a+538|0;b[f>>1]=Di(d)|0;Bi(d);if((e[j>>1]|0)>1){b[f>>1]=0;c[k>>2]=8;d=8;i=l;return d|0}h=b[f>>1]|0;j=h&65535;a=a+540|0;c[a>>2]=hh(g,4,0,j,0,k)|0;f=c[k>>2]|0;if(f){d=f;i=l;return d|0}f=yi(d,j<<2)|0;c[k>>2]=f;if(f){d=f;i=l;return d|0}a=c[a>>2]|0;if(h<<16>>16){f=0;do{b[a+(f<<2)>>1]=Di(d)|0;b[a+(f<<2)+2>>1]=Di(d)|0;f=f+1|0}while((f|0)!=(j|0))}Bi(d);d=c[k>>2]|0;i=l;return d|0}function Xo(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;d=ce[c[a+504>>2]&255](a,1346587732,b,0)|0;if(d){b=d;i=e;return b|0}b=Li(b,87800,a+544|0)|0;i=e;return b|0}function Yo(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;d=ce[c[a+504>>2]&255](a,1651008868,b,0)|0;if(d){b=d;i=e;return b|0}b=Li(b,87712,a+160|0)|0;i=e;return b|0}function Zo(e,f,g,h,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+80|0;t=w+72|0;o=w;s=w+4|0;v=w+48|0;p=c[e+728>>2]|0;a:do if((p|0)==3){b[l+2>>1]=0;b[l>>1]=0;m=c[e+720>>2]|0;l=f<<2;l=d[m+(l+9)>>0]<<16|d[m+(l+8)>>0]<<24|d[m+(l+10)>>0]<<8|d[m+(l+11)>>0];m=ce[c[e+504>>2]&255](e,1935829368,j,t)|0;if(!m){m=ui(j)|0;f=e+16|0;if((c[f>>2]|0)>>>0>>0)m=6;else{o=m+l|0;s=o+4|0;m=g;r=0;while(1){p=c[t>>2]|0;if(p>>>0<=l>>>0){m=3;break a}m=m<<2;if((p-l|0)>>>0<(m+12|0)>>>0){m=3;break a}m=Hh(j,s+m|0)|0;if(m)break a;m=yi(j,8)|0;if(m)break a;m=Fi(j)|0;p=Fi(j)|0;Bi(j);if((p|0)==(m|0)){m=6;break a}if(p>>>0>>0){m=3;break a}n=p-m|0;if(n>>>0<8){m=3;break a}if(((c[t>>2]|0)-l|0)>>>0

>>0){m=3;break a}m=Hh(j,m+o|0)|0;if(m)break a;m=yi(j,n)|0;if(m)break a;Di(j)|0;Di(j)|0;m=Fi(j)|0;if((m|0)==1785751328|(m|0)==1953064550){m=2;break}else if((m|0)!=1685418085){m=7;u=25;break}if((r|0)>=4){m=3;u=25;break}m=(Di(j)|0)&65535;Bi(j);if(m>>>0>(c[f>>2]|0)>>>0){m=6;break a}else r=r+1|0}Bi(j)}}}else if((p|0)==2|(p|0)==1){p=c[e+104>>2]|0;n=e+504|0;if(((ce[c[n>>2]&255](e,1128416340,p,o)|0)!=0?(ce[c[n>>2]&255](e,1161970772,p,o)|0)!=0:0)?(m=ce[c[n>>2]&255](e,1650745716,p,o)|0,(m|0)!=0):0)break;c[s>>2]=e;c[s+4>>2]=p;c[s+8>>2]=(c[e+84>>2]|0)+76;c[s+12>>2]=l;a[s+16>>0]=0;a[s+17>>0]=0;c[s+20>>2]=ui(p)|0;c[s+24>>2]=c[o>>2];p=c[e+720>>2]|0;c[s+36>>2]=p;n=c[e+724>>2]|0;c[s+40>>2]=p+n;m=f*48|0;if((((m|8)+47|0)>>>0<=n>>>0?(u=m|12,q=d[p+(u+-3)>>0]<<16|d[p+(u+-4)>>0]<<24|d[p+(u+-2)>>0]<<8|d[p+(u+-1)>>0],c[s+28>>2]=q,r=d[p+(u+5)>>0]<<16|d[p+(u+4)>>0]<<24|d[p+(u+6)>>0]<<8|d[p+(u+7)>>0],c[s+32>>2]=r,a[s+18>>0]=a[p+(u+42)>>0]|0,q>>>0<=n>>>0):0)?((r<<3)+q|0)>>>0<=n>>>0:0)m=Ft(s,g,0,0)|0;else m=3}else{v=2;i=w;return v|0}while(0);if(m|h&1048576){v=m;i=w;return v|0}p=k+18|0;if((a[p>>0]|0)!=7){v=m;i=w;return v|0}m=e+84|0;n=c[c[m>>2]>>2]|0;Xi(v);o=Zi(n,k,v,1)|0;if(!o){a[p>>0]=a[v+18>>0]|0;c[k+8>>2]=c[v+8>>2];b[k+16>>1]=b[v+16>>1]|0;vh(c[m>>2]|0,c[v+12>>2]|0);v=(c[(c[m>>2]|0)+156>>2]|0)+4|0;c[v>>2]=c[v>>2]|1;v=0;i=w;return v|0}else{_i(n,v)|0;v=o;i=w;return v|0}return 0}function _o(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;do if(d)if((e[d+264>>1]|0)>>>0>f>>>0){h=c[d+532>>2]|0;if(h){j=d+608|0;k=h+16|0;c[g>>2]=Ld[c[k>>2]&511](0)|0;h=c[d+464>>2]|0;if((h|0)==131072){if((a[j>>0]|0)==0?(Gt(d)|0)!=0:0){h=0;break}if((e[d+612>>1]|0)>>>0<=f>>>0){h=0;break}f=b[(c[d+616>>2]|0)+(f<<1)>>1]|0;h=f&65535;if((f&65535)<258){c[g>>2]=Ld[c[k>>2]&511](h)|0;h=0;break}else{c[g>>2]=c[(c[d+620>>2]|0)+(h+-258<<2)>>2];h=0;break}}else if((h|0)==163840){if((a[j>>0]|0)==0?(Gt(d)|0)!=0:0){h=0;break}if((e[d+612>>1]|0)>>>0<=f>>>0){h=0;break}c[g>>2]=Ld[c[k>>2]&511]((a[(c[d+616>>2]|0)+f>>0]|0)+f|0)|0;h=0;break}else if((h|0)==65536){if(f>>>0>=258){h=0;break}c[g>>2]=Ld[c[k>>2]&511](f)|0;h=0;break}else{h=0;break}}else h=7}else h=16;else h=35;while(0);i=l;return h|0}function $o(d){d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;k=c[d+100>>2]|0;l=d+608|0;if(!(a[l>>0]|0)){a[l>>0]=0;i=m;return}f=c[d+464>>2]|0;if((f|0)==163840){j=d+616|0;eh(k,c[j>>2]|0);c[j>>2]=0;b[d+612>>1]=0;a[l>>0]=0;i=m;return}else if((f|0)==131072){j=d+616|0;eh(k,c[j>>2]|0);c[j>>2]=0;b[d+612>>1]=0;j=d+614|0;h=d+620|0;f=c[h>>2]|0;if(b[j>>1]|0){g=0;d=0;while(1){eh(k,c[f+(g<<2)>>2]|0);c[(c[h>>2]|0)+(g<<2)>>2]=0;d=d+1<<16>>16;f=c[h>>2]|0;if((d&65535)<(e[j>>1]|0))g=d&65535;else break}}eh(k,f);c[h>>2]=0;b[j>>1]=0;a[l>>0]=0;i=m;return}else{a[l>>0]=0;i=m;return}}function ap(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;h=c[b+736>>2]|0;r=c[b+740>>2]|0;s=h+r|0;g=c[b+744>>2]|0;if((g|0)==0|(r|0)<10){s=0;i=t;return s|0}r=c[b+748>>2]|0;q=e<<16|f;p=b+752|0;b=h+10|0;o=1;n=h+4|0;e=0;while(1){j=a[n+4>>0]|0;m=a[n+5>>0]|0;f=n+((d[n+2>>0]|0)<<8|(d[n+3>>0]|0))|0;l=n;n=f>>>0>s>>>0?s:f;f=l+14|0;a:do if(!((r&o|0)==0|f>>>0>n>>>0)){b=(d[b>>0]|0)<<8|(d[l+7>>0]|0);h=n-f|0;if((h|0)<(b*6|0))b=(h|0)/6|0;if(!(j<<24>>24)){h=(b|0)==0;if(!(c[p>>2]&o)){if(h)break;while(1){if(((d[f+1>>0]|0)<<16|(d[f>>0]|0)<<24|(d[f+2>>0]|0)<<8|(d[f+3>>0]|0)|0)==(q|0))break;b=b+-1|0;if(!b)break a;else f=f+6|0}f=(d[f+4>>0]|0)<<8|(d[f+5>>0]|0)}else{if(h)break;else k=0;while(1){h=(b+k|0)>>>1;f=h*6|0;j=(d[l+(f+15)>>0]|0)<<16|(d[l+(f+14)>>0]|0)<<24|(d[l+(f+16)>>0]|0)<<8|(d[l+(f+17)>>0]|0);if((j|0)==(q|0))break;j=j>>>0>>0;k=j?h+1|0:k;b=j?b:h;if(k>>>0>=b>>>0)break a}f=(d[l+(f+18)>>0]|0)<<8|(d[l+(f+19)>>0]|0)}e=(f<<16>>16)+((m&8)==0?e:0)|0}}while(0);g=g+-1|0;b=n+6|0;if((g|0)==0|b>>>0>s>>>0)break;else o=o<<1}i=t;return e|0}function bp(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+48|0;v=B+36|0;t=B;x=B+16|0;A=B+32|0;y=c[d+28>>2]|0;z=x+12|0;c[z>>2]=ui(d)|0;c[x>>2]=ti(d,A)|0;f=c[A>>2]|0;if(f){A=f;i=B;return A|0}f=Li(d,87664,x)|0;c[A>>2]=f;if(f){A=f;i=B;return A|0}a:do if((c[x>>2]|0)==1330926671){j=b[x+4>>1]|0;f=1330926671}else{j=c[z>>2]|0;f=Hh(d,j+12|0)|0;c[v>>2]=f;b:do if(!f){u=x+4|0;if(b[u>>1]|0){p=t+8|0;q=t+12|0;r=d+4|0;o=j+28|0;n=0;h=0;l=0;s=0;g=0;j=0;c:while(1){m=Li(d,87688,t)|0;c[v>>2]=m;if(m){f=s;w=10;break}f=c[p>>2]|0;k=c[q>>2]|0;do if((k+f|0)>>>0<=(c[r>>2]|0)>>>0){j=j+1<<16>>16;m=c[t>>2]|0;if((m|0)==1397313095){f=1;break}else if(!((m|0)==1651008868|(m|0)==1751474532)){l=(m|0)==1296389185?1:l;f=s;break}if(k>>>0<54){w=14;break c}f=Hh(d,f+12|0)|0;c[v>>2]=f;if(f)break b;ti(d,v)|0;f=c[v>>2]|0;if(f)break b;f=Hh(d,o+(n<<4)|0)|0;c[v>>2]=f;if(!f){h=1;f=s}else break b}else f=s;while(0);g=g+1<<16>>16;if((g&65535)<(e[u>>1]|0)){n=g&65535;s=f}else{g=l;break}}if((w|0)==10){b[u>>1]=g+-1<<16>>16;g=l}else if((w|0)==14){c[v>>2]=142;f=142;break}b[u>>1]=j;if(j<<16>>16){if((h|0)==0?!((f|0)!=0&(g|0)!=0):0){c[v>>2]=142;f=142;break}c[A>>2]=0;f=c[x>>2]|0;break a}}else b[u>>1]=0;c[v>>2]=2;f=2}while(0);c[A>>2]=f;A=f;i=B;return A|0}while(0);l=x+4|0;g=a+152|0;b[g>>1]=j;c[a+148>>2]=f;h=a+156|0;c[h>>2]=hh(y,16,0,j&65535,0,A)|0;f=c[A>>2]|0;if(f){A=f;i=B;return A|0}f=Hh(d,(c[z>>2]|0)+12|0)|0;c[A>>2]=f;if(f){A=f;i=B;return A|0}f=yi(d,e[g>>1]<<4)|0;c[A>>2]=f;if(f){A=f;i=B;return A|0}if(b[l>>1]|0){k=d+4|0;h=c[h>>2]|0;j=0;while(1){c[h>>2]=Fi(d)|0;c[h+4>>2]=Fi(d)|0;f=h+8|0;c[f>>2]=Fi(d)|0;g=Fi(d)|0;c[h+12>>2]=g;j=j+1|0;if((j|0)>=(e[l>>1]|0))break;else h=((c[f>>2]|0)+g|0)>>>0>(c[k>>2]|0)>>>0?h:h+16|0}}Bi(d);A=c[A>>2]|0;i=B;return A|0}function cp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;if(!(d<<24>>24)){e=a+780|0;f=a+680|0;d=1752003704}else{e=a+784|0;f=a+688|0;d=1986884728}d=ce[c[a+504>>2]&255](a,d,b,g)|0;if(d){i=h;return d|0}c[f>>2]=c[g>>2];c[e>>2]=ui(b)|0;i=h;return d|0}function dp(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;g=m;h=a+720|0;j=a+724|0;k=a+728|0;l=a+732|0;e=a+504|0;c[h+0>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;do if(!(ce[c[e>>2]&255](a,1128418371,b,g)|0)){c[k>>2]=2;a=2;f=8}else{if((ce[c[e>>2]&255](a,1161972803,b,g)|0)!=0?(ce[c[e>>2]&255](a,1651273571,b,g)|0)!=0:0){e=ce[c[e>>2]&255](a,1935829368,b,g)|0;if(e)break;c[k>>2]=3;a=3;f=8;break}c[k>>2]=1;a=1;f=8}while(0);do if((f|0)==8){e=c[g>>2]|0;if(e>>>0>=8)if((a|0)==3){e=yi(b,8)|0;if(e)break;f=Di(b)|0;e=Di(b)|0;a=Fi(b)|0;Bi(b);if(!(f<<16>>16)){e=2;break}if(e<<16>>16!=1|a>>>0>65535){e=3;break}e=c[g>>2]|0;if(((a<<2)+8|0)>>>0>e>>>0)a=(e+-8|0)>>>2;e=Hh(b,(ui(b)|0)+-8|0)|0;if(e)break;e=(a<<2)+8|0;c[j>>2]=e;e=xi(b,e,h)|0;if(e)break;c[l>>2]=a;k=0;i=m;return k|0}else if((a|0)==2|(a|0)==1){e=xi(b,e,h)|0;if(e)break;a=c[g>>2]|0;c[j>>2]=a;f=c[h>>2]|0;e=(d[f+5>>0]|0)<<16|(d[f+4>>0]|0)<<24|(d[f+6>>0]|0)<<8|(d[f+7>>0]|0);if(((d[f+1>>0]|0)<<16|(d[f>>0]|0)<<24|0)!=131072){e=2;break}if(e>>>0>65535){e=3;break}if((e*48|8)>>>0>a>>>0)e=((a+-8|0)>>>0)/48|0;c[l>>2]=e;k=0;i=m;return k|0}else{k=0;i=m;return k|0}else e=3}while(0);if(c[h>>2]|0)zi(b,h);c[j>>2]=0;c[k>>2]=0;k=e;i=m;return k|0}function ep(a){a=a|0;var b=0;b=i;zi(c[a+104>>2]|0,a+720|0);c[a+724>>2]=0;c[a+728>>2]=0;c[a+732>>2]=0;i=b;return}function fp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;b=Mh(a,b,0,c)|0;i=d;return b|0}function gp(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;m=i;i=i+16|0;k=m;if((c[f+732>>2]|0)>>>0<=g>>>0){h=6;i=m;return h|0}j=c[f+728>>2]|0;if((j|0)==2|(j|0)==1){k=c[f+720>>2]|0;f=g*48|8;b[h>>1]=d[k+(f+44)>>0]|0;b[h+2>>1]=d[k+(f+45)>>0]|0;g=a[k+(f+16)>>0]<<6;c[h+12>>2]=g;l=a[k+(f+17)>>0]<<6;c[h+16>>2]=l;c[h+20>>2]=g-l;c[h+24>>2]=(d[k+(f+18)>>0]|0)+(a[k+(f+22)>>0]|0)+(a[k+(f+23)>>0]|0)<<6;h=0;i=m;return h|0}else if((j|0)==3){l=c[f+104>>2]|0;n=c[f+720>>2]|0;j=g<<2;j=d[n+(j+9)>>0]<<16|d[n+(j+8)>>0]<<24|d[n+(j+10)>>0]<<8|d[n+(j+11)>>0];g=ce[c[f+504>>2]&255](f,1935829368,l,k)|0;if(g){h=g;i=m;return h|0}if((j+4|0)>>>0>(c[k>>2]|0)>>>0){h=3;i=m;return h|0}j=Hh(l,(ui(l)|0)+j|0)|0;if(j){h=j;i=m;return h|0}j=yi(l,4)|0;if(j){h=j;i=m;return h|0}n=Di(l)|0;Di(l)|0;Bi(l);k=e[f+178>>1]|0;b[h>>1]=n;b[h+2>>1]=n;g=b[f+220>>1]|0;n=(n&65535)<<6;c[h+12>>2]=((ea(n,g)|0)>>>0)/(k>>>0)|0;l=b[f+222>>1]|0;c[h+16>>2]=((ea(n,l)|0)>>>0)/(k>>>0)|0;c[h+20>>2]=((ea(n,g-l+(b[f+224>>1]|0)|0)|0)>>>0)/(k>>>0)|0;c[h+24>>2]=((ea(n,e[f+226>>1]|0)|0)>>>0)/(k>>>0)|0;h=0;i=m;return h|0}else{h=2;i=m;return h|0}return 0}function hp(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;l=c[a+104>>2]|0;if(!(d<<24>>24)){h=a+216|0;d=a+780|0;a=a+680|0}else{h=a+296|0;d=a+784|0;a=a+688|0}j=c[d>>2]|0;k=(c[a>>2]|0)+j|0;h=b[h+34>>1]|0;d=h&65535;do if(h<<16>>16){if(d>>>0>e>>>0){d=j+(e<<2)|0;if((d+4|0)>>>0>k>>>0)break;k=Hh(l,d)|0;c[m>>2]=k;if(k)break;b[g>>1]=ri(l,m)|0;if(c[m>>2]|0)break;b[f>>1]=ri(l,m)|0;if(c[m>>2]|0)break;i=n;return 0}h=d<<2;a=j+-4+h|0;if(((h+j|0)>>>0<=k>>>0?(h=Hh(l,a)|0,c[m>>2]=h,(h|0)==0):0)?(b[g>>1]=ri(l,m)|0,(c[m>>2]|0)==0):0){d=(e-d<<1)+4+a|0;if((d+2|0)>>>0>k>>>0){b[f>>1]=0;i=n;return 0}g=Hh(l,d)|0;c[m>>2]=g;if(g){i=n;return 0}b[f>>1]=ri(l,m)|0;i=n;return 0}}while(0);b[f>>1]=0;b[g>>1]=0;i=n;return 0}function ip(d,e){d=d|0;e=e|0;var f=0;f=i;switch(e|0){case 2:{d=d+364|0;d=(b[d>>1]|0)==-1?0:d;break}case 0:{d=d+160|0;break}case 3:{d=d+216|0;break}case 5:{d=d+464|0;break}case 4:{if(!(a[d+292>>0]|0))d=0;else d=d+296|0;break}case 1:{d=d+260|0;break}case 6:{d=d+544|0;d=(c[d>>2]|0)==0?0:d;break}default:d=0}i=f;return d|0}function jp(a,b,d,f,g){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;var h=0,j=0;j=i;if(!((f|0)!=0&(g|0)!=0)){g=6;i=j;return g|0}h=e[a+152>>1]|0;do if(d)if(h>>>0>b>>>0){h=c[a+156>>2]|0;c[d>>2]=c[h+(b<<4)>>2];c[f>>2]=c[h+(b<<4)+8>>2];h=c[h+(b<<4)+12>>2]|0;break}else{g=142;i=j;return g|0}while(0);c[g>>2]=h;g=0;i=j;return g|0}function kp(d){d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;p=s+4|0;o=s;r=d+660|0;f=c[r>>2]|0;if(f){r=f;i=s;return r|0}f=b[d+340>>1]|0;do if(f<<16>>16){l=c[d+356>>2]|0;h=f&65535;g=-1;j=-1;n=0;while(1){do if((b[l+(n*20|0)+6>>1]|0)==6?(b[l+(n*20|0)+8>>1]|0)!=0:0){f=b[l+(n*20|0)>>1]|0;if(f<<16>>16==3){if((b[l+(n*20|0)+2>>1]|0)!=1){f=g;break}j=(b[l+(n*20|0)+4>>1]|0)==1033?n:j}if(f<<16>>16==1?(b[l+(n*20|0)+2>>1]|0)==0:0)f=(b[l+(n*20|0)+4>>1]|0)==0?n:g;else f=g}else f=g;while(0);n=n+1|0;if((n|0)>=(h|0)){n=f;break}else g=f}if((j|0)==-1){if((n|0)==-1){f=0;break}h=c[d+100>>2]|0;k=c[d+356>>2]|0;l=k+(n*20|0)+8|0;m=e[l>>1]|0;c[o>>2]=0;f=ch(h,m+1|0,o)|0;if(c[o>>2]|0)break;j=c[d+360>>2]|0;g=k+(n*20|0)+12|0;q=Hh(j,c[g>>2]|0)|0;c[o>>2]=q;if((q|0)==0?(q=pi(j,f,m)|0,c[o>>2]=q,(q|0)==0):0){a[f+m>>0]=0;break}c[g>>2]=0;b[l>>1]=0;q=k+(n*20|0)+16|0;eh(h,c[q>>2]|0);c[q>>2]=0;eh(h,f);f=0;break}k=c[d+100>>2]|0;g=c[d+356>>2]|0;m=g+(j*20|0)+8|0;f=b[m>>1]|0;n=(f&65535)>>>1;h=n&65535;c[p>>2]=0;f=ch(k,(f&65535)+1|0,p)|0;if(!(c[p>>2]|0)){o=c[d+360>>2]|0;l=g+(j*20|0)+16|0;j=g+(j*20|0)+12|0;d=Hh(o,c[j>>2]|0)|0;c[p>>2]=d;if((d|0)==0?(d=yi(o,e[m>>1]|0)|0,c[p>>2]=d,(d|0)==0):0){if(!(n<<16>>16))g=f;else{j=c[o+32>>2]|0;g=f;while(1){if((a[j>>0]|0)==0?(q=a[j+1>>0]|0,(q&255)>31&q<<24>>24>-1):0){a[g>>0]=q;g=g+1|0}h=h+-1|0;if(!h)break;else j=j+2|0}}a[g>>0]=0;Bi(o);break}eh(k,f);b[m>>1]=0;c[j>>2]=0;eh(k,c[l>>2]|0);c[l>>2]=0;f=0}}else f=0;while(0);c[r>>2]=f;r=f;i=s;return r|0}function lp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g;a=_o(a,b,f)|0;if(a){i=g;return a|0}Vi(d,c[f>>2]|0,e)|0;i=g;return a|0}function mp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g;e=c[a+16>>2]|0;a:do if((e|0)<1)d=0;else{d=0;while(1){if((_o(a,d,f)|0)==0?(qga(b,c[f>>2]|0)|0)==0:0)break a;d=d+1|0;if(d>>>0>=e>>>0){d=0;break}}}while(0);i=g;return d|0}function np(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;f=h+8|0;g=h;e=op(a,87616,g)|0;if(!e){e=op(a,87640,f)|0;if(!e)if((c[g>>2]|0)==1?(c[f>>2]|0)==1:0){c[b>>2]=c[f+4>>2];c[d>>2]=c[g+4>>2];e=0}else e=6}i=h;return e|0}function op(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;u=c[f+88>>2]|0;c[h>>2]=0;r=f+776|0;do if(!(a[r>>0]|0)){s=c[f+104>>2]|0;t=f+756|0;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t+16>>2]=0;c[t+20>>2]=0;q=b[f+152>>1]|0;j=c[f+156>>2]|0;o=j+((q&65535)<<4)|0;if(!(q<<16>>16)){g=8;i=G;return g|0}while(1){if((c[j>>2]|0)==1111770656?(m=c[j+12>>2]|0,(m|0)!=0):0){p=m;n=j;break}j=j+16|0;if(j>>>0>=o>>>0){F=8;v=36;break}}if((v|0)==36){i=G;return F|0}if(!n){g=8;i=G;return g|0}if((Hh(s,c[n+8>>2]|0)|0)!=0|p>>>0<8){g=8;i=G;return g|0}if(xi(s,p,t)|0){g=8;i=G;return g|0}m=c[t>>2]|0;c[f+760>>2]=m+p;j=d[m+2>>0]<<8|d[m+3>>0];o=d[m+5>>0]<<16|d[m+4>>0]<<24|d[m+6>>0]<<8|d[m+7>>0];if(!(o>>>0<8?1:(d[m>>0]<<8|d[m+1>>0]|0)!=1)?!((o+-8|0)>>>2>>>0>>0|(o+1|0)>>>0>p>>>0):0){c[f+772>>2]=j;q=m+o|0;c[f+764>>2]=q;c[f+768>>2]=p-o;o=m+((j<<2)+8)|0;if(j){n=j;p=m+8|0;while(1){o=o+((d[p+2>>0]<<8|d[p+3>>0])*10|0)|0;n=n+-1|0;if(!n)break;else p=p+4|0}}if(o>>>0<=q>>>0){a[r>>0]=1;break}}zi(s,t);c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t+16>>2]=0;c[t+20>>2]=0;g=8;i=G;return g|0}else{m=c[f+756>>2]|0;j=c[f+772>>2]|0}while(0);if((u|0)==0|(g|0)==0){g=6;i=G;return g|0}q=Dga(g|0)|0;if(!((q|0)!=0&(j|0)!=0)){g=6;i=G;return g|0}n=e[u+14>>1]|0;o=j;p=m+8|0;m=m+((j<<2)+8)|0;while(1){j=d[p+2>>0]<<8|d[p+3>>0];if((d[p>>0]<<8|d[p+1>>0]|0)==(n|0)){l=j;k=m;break}o=o+-1|0;if(!o){F=6;v=36;break}else{p=p+4|0;m=m+(j*10|0)|0}}if((v|0)==36){i=G;return F|0}if(!l){g=6;i=G;return g|0}n=f+768|0;m=f+764|0;a:while(1){j=d[k+5>>0]|0;do if((((j&16|0)!=0?(z=d[k+1>>0]<<16|d[k>>0]<<24|d[k+2>>0]<<8|d[k+3>>0],A=d[k+7>>0]<<16|d[k+6>>0]<<24|d[k+8>>0]<<8|d[k+9>>0],B=c[n>>2]|0,B>>>0>z>>>0):0)?(C=B-z|0,q>>>0>>0):0)?(D=c[m>>2]|0,(rga(g,D+z|0,C)|0)==0):0){j=j&15;if((j|0)==2){w=A;v=33;break a}else if((j|0)==3){x=A;v=34;break a}else if(!((j|0)==1|(j|0)==0))break;if(A>>>0>>0?(E=D+A|0,(oga(E,0,B)|0)!=0):0){y=E;v=32;break a}}while(0);l=l+-1|0;if(!l){F=6;v=36;break}else k=k+10|0}if((v|0)==32){c[h>>2]=1;c[h+4>>2]=y;g=0;i=G;return g|0}else if((v|0)==33){c[h>>2]=2;c[h+4>>2]=w;g=0;i=G;return g|0}else if((v|0)==34){c[h>>2]=3;c[h+4>>2]=x;g=0;i=G;return g|0}else if((v|0)==36){i=G;return F|0}return 0}function pp(a,b){a=a|0;b=b|0;var d=0;d=i;b=Wd[c[(c[a+12>>2]|0)+48>>2]&511](a,b)|0;i=d;return b|0}function qp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;c[b>>2]=0;d=ch(a,20,e)|0;e=c[e>>2]|0;if(e){i=f;return e|0}c[d+12>>2]=a;c[b>>2]=d;i=f;return e|0}function rp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!a){i=e;return}if((b|0)!=0&(d|0)>3475){c[a+16>>2]=b;c[a>>2]=b+1440;d=d+-1440|0;c[a+4>>2]=d&-16;c[a+8>>2]=d>>>7;i=e;return}else{c[a>>2]=0;c[a+4>>2]=0;c[a+16>>2]=0;i=e;return}}function sp(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=i;i=i+352|0;G=N+24|0;F=N;K=N+4|0;L=N+8|0;J=N+12|0;H=N+16|0;I=N+20|0;l=c[d+4>>2]|0;m=c[d>>2]|0;if(!a){M=6;i=N;return M|0}h=c[a>>2]|0;if(!h){M=6;i=N;return M|0}j=a+4|0;k=c[j>>2]|0;if(!k){M=6;i=N;return M|0}if(!l){M=20;i=N;return M|0}e=b[l+2>>1]|0;if(!(e<<16>>16)){M=0;i=N;return M|0}f=b[l>>1]|0;if(f<<16>>16<1){M=0;i=N;return M|0}g=c[l+12>>2]|0;if(!g){M=20;i=N;return M|0}if(!(c[l+4>>2]|0)){M=20;i=N;return M|0}if((e<<16>>16|0)!=((b[g+((f<<16>>16)+-1<<1)>>1]|0)+1|0)){M=20;i=N;return M|0}E=c[a+16>>2]|0;g=d+8|0;f=c[g>>2]|0;e=(f&2|0)==0;if(e){if(!m){M=6;i=N;return M|0}if(!(c[m+4>>2]|0)){M=0;i=N;return M|0}if(!(c[m>>2]|0)){M=0;i=N;return M|0}if(!(c[m+12>>2]|0)){M=6;i=N;return M|0}}if(!(f&1)){M=19;i=N;return M|0}do if(!e){e=E+1024|0;if(!(f&4)){c[e>>2]=-32768;c[E+1028>>2]=-32768;c[E+1032>>2]=32767;c[E+1036>>2]=32767;f=h;e=k;break}else{f=d+32|0;c[e+0>>2]=c[f+0>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=c[a>>2]|0;e=c[j>>2]|0;break}}else{c[E+1024>>2]=0;c[E+1028>>2]=0;c[E+1032>>2]=c[m+4>>2];c[E+1036>>2]=c[m>>2];f=h;e=k}while(0);C=E+1412|0;c[C>>2]=f;D=E+1416|0;c[D>>2]=e;B=E+1420|0;c[B>>2]=f;x=E+44|0;c[x>>2]=0;y=E+48|0;c[y>>2]=0;z=E+52|0;c[z>>2]=0;c[E+32>>2]=0;c[E+36>>2]=0;A=E+40|0;c[A>>2]=1;r=E+980|0;c[r+0>>2]=c[l+0>>2];c[r+4>>2]=c[l+4>>2];c[r+8>>2]=c[l+8>>2];c[r+12>>2]=c[l+12>>2];c[r+16>>2]=c[l+16>>2];c[z>>2]=0;c[A>>2]=1;r=c[a+8>>2]|0;w=E+1248|0;c[w>>2]=r;v=E+1232|0;c[v>>2]=0;if(!(c[g>>2]&2)){e=E+1e3|0;c[e+0>>2]=c[m+0>>2];c[e+4>>2]=c[m+4>>2];c[e+8>>2]=c[m+8>>2];c[e+12>>2]=c[m+12>>2];c[e+16>>2]=c[m+16>>2];c[e+20>>2]=c[m+20>>2];c[E+1236>>2]=15;e=E}else{c[E+1236>>2]=c[d+12>>2];e=c[d+28>>2]|0}u=E+1240|0;c[u>>2]=e;m=c[E+984>>2]|0;e=b[E+982>>1]|0;d=m+(e<<16>>16<<3)|0;if(e<<16>>16<1){a=E+8|0;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;a=E+12|0;h=0;g=0;e=0;j=0}else{h=c[m>>2]|0;a=E+12|0;c[a>>2]=h;p=E+8|0;c[p>>2]=h;k=c[m+4>>2]|0;n=E+20|0;c[n>>2]=k;o=E+16|0;c[o>>2]=k;if(e<<16>>16>1){l=m;g=h;f=k;e=k;j=m+8|0;while(1){k=c[l+8>>2]|0;m=c[l+12>>2]|0;if((k|0)<(g|0)){c[p>>2]=k;g=k}if((k|0)>(h|0)){c[a>>2]=k;h=k}if((m|0)<(f|0)){c[o>>2]=m;f=m}if((m|0)>(e|0)){c[n>>2]=m;e=m}m=l+16|0;if(m>>>0>>0){l=j;j=m}else break}}else{g=h;f=k;e=k}g=g>>6;c[p>>2]=g;j=f>>6;c[o>>2]=j;h=h+63>>6;c[a>>2]=h;e=e+63>>6;c[n>>2]=e}f=c[E+1024>>2]|0;if((h|0)<=(f|0)){M=0;i=N;return M|0}l=c[E+1032>>2]|0;if((g|0)>=(l|0)){M=0;i=N;return M|0}s=E+20|0;k=c[E+1028>>2]|0;if((e|0)<=(k|0)){M=0;i=N;return M|0}t=E+16|0;m=c[E+1036>>2]|0;if((j|0)>=(m|0)){M=0;i=N;return M|0}if((g|0)<(f|0))c[E+8>>2]=f;else f=g;if((j|0)<(k|0))c[t>>2]=k;else k=j;if((h|0)>(l|0)){c[a>>2]=l;h=l}if((e|0)>(m|0)){c[s>>2]=m;e=m}q=E+24|0;c[q>>2]=h-f;o=e-k|0;p=E+28|0;c[p>>2]=o;c[L>>2]=(o|0)/(r|0)|0;if(!(c[L>>2]|0))c[L>>2]=1;if((c[L>>2]|0)>38)c[L>>2]=39;k=E+1252|0;c[k>>2]=0;c[J>>2]=c[t>>2];c[I>>2]=c[s>>2];c[K>>2]=0;a:do if((c[K>>2]|0)<(c[L>>2]|0)){j=G+4|0;l=E+1424|0;d=E+1236|0;n=E+1244|0;o=E+1040|0;b:while(1){c[H>>2]=(c[w>>2]|0)+(c[J>>2]|0);if(!((c[K>>2]|0)!=((c[L>>2]|0)+-1|0)?(c[H>>2]|0)<=(c[I>>2]|0):0))c[H>>2]=c[I>>2];c[G>>2]=c[J>>2];c[j>>2]=c[H>>2];c[F>>2]=G;if((c[F>>2]|0)>>>0>=G>>>0)do{c[B>>2]=c[C>>2];a=(c[(c[F>>2]|0)+4>>2]|0)-(c[c[F>>2]>>2]|0)|0;c[l>>2]=a;e=a<<2;h=e&12;if(h)e=e+16-h|0;h=c[D>>2]&-16;c[x>>2]=(c[C>>2]|0)+e;do if((h|0)>(e|0)){r=h-e|0;c[y>>2]=r>>4;if((r|0)<32){M=84;break}if((a|0)>0){e=0;do{c[(c[B>>2]|0)+(e<<2)>>2]=0;e=e+1|0}while((e|0)!=(a|0))}c[z>>2]=0;c[A>>2]=1;c[t>>2]=c[c[F>>2]>>2];c[s>>2]=c[(c[F>>2]|0)+4>>2];c[p>>2]=(c[(c[F>>2]|0)+4>>2]|0)-(c[c[F>>2]>>2]|0);e=It(E)|0;if((e|0)==64){M=84;break}else if(e){e=1;M=92;break b}do if(c[z>>2]|0){c[v>>2]=0;if((c[l>>2]|0)>0){m=0;do{e=c[(c[B>>2]|0)+(m<<2)>>2]|0;do if(e){f=0;h=0;do{a=c[e>>2]|0;if((a|0)>(h|0)&(f|0)!=0)Jt(E,h,m,f<<9,a-h|0);f=(c[e+4>>2]|0)+f|0;a=f<<9;r=c[e+8>>2]|0;h=a-r|0;do if((a|0)!=(r|0)){g=c[e>>2]|0;if((g|0)<=-1)break;Jt(E,g,m,h,1)}while(0);h=(c[e>>2]|0)+1|0;e=c[e+12>>2]|0}while((e|0)!=0);e=h;if(!f)break;Jt(E,e,m,a,(c[q>>2]|0)-e|0)}while(0);m=m+1|0}while((m|0)<(c[l>>2]|0))}e=c[d>>2]|0;if(!e)break;h=c[v>>2]|0;if((h|0)<=0)break;de[e&63](c[n>>2]|0,h,o,c[u>>2]|0)}while(0);c[F>>2]=(c[F>>2]|0)+-8}else M=84;while(0);if((M|0)==84){M=0;e=c[c[F>>2]>>2]|0;h=c[(c[F>>2]|0)+4>>2]|0;r=h-e>>1;f=r+e|0;if(!r){e=1;M=92;break b}if((e-h|0)>=(c[w>>2]|0))c[k>>2]=(c[k>>2]|0)+1;c[(c[F>>2]|0)+8>>2]=e;c[(c[F>>2]|0)+12>>2]=f;c[c[F>>2]>>2]=f;c[(c[F>>2]|0)+4>>2]=h;c[F>>2]=(c[F>>2]|0)+8}}while((c[F>>2]|0)>>>0>=G>>>0);c[K>>2]=(c[K>>2]|0)+1;c[J>>2]=c[H>>2];if((c[K>>2]|0)>=(c[L>>2]|0))break a}if((M|0)==92){i=N;return e|0}}while(0);if((c[k>>2]|0)<=8){M=0;i=N;return M|0}e=c[w>>2]|0;if((e|0)<=16){M=0;i=N;return M|0}c[w>>2]=(e|0)/2|0;M=0;i=N;return M|0}function tp(a){a=a|0;var b=0;b=i;eh(c[a+12>>2]|0,a);i=b;return}function up(a){a=a|0;var b=0,d=0;b=i;d=c[a+4>>2]|0;$d[c[(c[(c[a+12>>2]|0)+56>>2]|0)+8>>2]&255](c[a+52>>2]|0,c[d+164>>2]|0,c[d+168>>2]|0);i=b;return 0}function vp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;a=Kt(a,b,(c|0)==1?0:c,d,0)|0;i=e;return a|0}function wp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if((c[b+72>>2]|0)!=(c[a+16>>2]|0)){a=6;i=f;return a|0}if(d)Ah(b+108|0,d);if(!e){a=0;i=f;return a|0}Bh(b+108|0,c[e>>2]|0,c[e+4>>2]|0);a=0;i=f;return a|0}function xp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;if((c[b+72>>2]|0)!=(c[a+16>>2]|0)){i=e;return}mi(b+108|0,d);i=e;return}function yp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;a=Od[c[(c[(c[a+12>>2]|0)+56>>2]|0)+12>>2]&255](c[a+52>>2]|0,b,d)|0;i=e;return a|0}function zp(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=i;d=Kt(b,c,d,e,3)|0;if(d){i=f;return d|0}a[c+94>>0]=5;i=f;return d|0}function Ap(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=i;d=Kt(b,c,d,e,4)|0;if(d){i=f;return d|0}a[c+94>>0]=6;i=f;return d|0}function Bp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;o=b+40|0;p=b+32|0;if(!(c[o>>2]|0)){l=c[p>>2]|0;h=b+36|0;m=c[h>>2]|0;if(m|l){k=c[b>>2]|0;g=c[b+24>>2]|0;k=(k|0)>(g|0)?g:k;g=(c[b+1420>>2]|0)+(c[b+4>>2]<<2)|0;d=c[g>>2]|0;a:do if(!d){d=0;f=g;j=8}else while(1){e=c[d>>2]|0;if((e|0)>(k|0)){f=g;j=8;break a}g=d+12|0;if((e|0)==(k|0)){n=d;break a}d=c[g>>2]|0;if(!d){d=0;f=g;j=8;break}}while(0);do if((j|0)==8){g=b+52|0;e=c[g>>2]|0;if((e|0)<(c[b+48>>2]|0)){j=c[b+44>>2]|0;c[g>>2]=e+1;n=j+(e<<4)|0;c[n>>2]=k;c[j+(e<<4)+8>>2]=0;c[j+(e<<4)+4>>2]=0;c[j+(e<<4)+12>>2]=d;c[f>>2]=n;break}else Va(b+1256|0,1)}while(0);k=n+8|0;c[k>>2]=(c[k>>2]|0)+l;n=n+4|0;c[n>>2]=(c[n>>2]|0)+m}}else h=b+36|0;j=c[a>>2]<<2;e=c[a+4>>2]<<2;n=j>>8;m=e>>8;k=c[b+12>>2]|0;n=(k|0)<(n|0)?k:n;d=c[b+8>>2]|0;n=(n|0)<(d|0)?d+-1|0:n;c[p>>2]=0;c[h>>2]=0;a=n-d|0;c[b>>2]=a;f=m-(c[b+16>>2]|0)|0;g=b+4|0;c[g>>2]=f;c[b+72>>2]=m<<8;c[o>>2]=0;d=((k|0)<(n|0)?k:n)-d|0;d=(d|0)>-1?d:-1;if((d|0)!=(a|0)){c[p>>2]=0;c[h>>2]=0;c[b>>2]=d;c[g>>2]=f}if(f>>>0>=(c[b+28>>2]|0)>>>0){p=1;p=p&1;c[o>>2]=p;p=b+64|0;c[p>>2]=j;b=b+68|0;c[b>>2]=e;i=q;return 0}p=(d|0)>=(c[b+24>>2]|0);p=p&1;c[o>>2]=p;p=b+64|0;c[p>>2]=j;b=b+68|0;c[b>>2]=e;i=q;return 0}function Cp(a,b){a=a|0;b=b|0;var d=0;d=i;Lt(b,c[a>>2]<<2,c[a+4>>2]<<2);i=d;return 0}function Dp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;h=c[b+4>>2]|0;k=d+852|0;e=d+76|0;f=c[b>>2]<<2;c[e>>2]=f;h=h<<2;c[d+80>>2]=h;n=c[a>>2]|0;c[d+84>>2]=n<<2;m=c[a+4>>2]|0;b=m<<2;c[d+88>>2]=b;a=c[d+64>>2]|0;c[d+92>>2]=a;g=c[d+68>>2]|0;c[d+96>>2]=g;a=f-(n<<3)+a|0;a=(a|0)<0?0-a|0:a;m=h-(m<<3)+g|0;m=(m|0)<0?0-m|0:m;a=(a|0)<(m|0)?m:a;if(((a|0)>=64?(n=(b|0)<(h|0)?b:h,j=(b|0)>(h|0)?b:h,(((g|0)<(n|0)?g:n)>>8|0)<(c[d+20>>2]|0)):0)?(((g|0)>(j|0)?g:j)>>8|0)>=(c[d+16>>2]|0):0){b=0;do{a=a>>2;b=b+1|0}while((a|0)>64);c[k>>2]=b;a=0;h=6}else{b=e;a=0;h=9}a:while(1){do if((h|0)==6)if((b|0)>0){n=e+16|0;m=c[n>>2]|0;c[e+32>>2]=m;j=e+8|0;g=c[j>>2]|0;m=(g+m|0)/2|0;c[e+24>>2]=m;g=((c[e>>2]|0)+g|0)/2|0;c[j>>2]=g;c[n>>2]=(g+m|0)/2|0;n=e+20|0;m=c[n>>2]|0;c[e+36>>2]=m;g=e+12|0;j=c[g>>2]|0;m=(j+m|0)/2|0;c[e+28>>2]=m;j=((c[e+4>>2]|0)+j|0)/2|0;c[g>>2]=j;c[n>>2]=(j+m|0)/2|0;n=a+1|0;m=b+-1|0;c[d+(a<<2)+852>>2]=m;c[d+(n<<2)+852>>2]=m;e=e+16|0;a=n;break}else{f=c[e>>2]|0;b=e;h=9;continue a}else if((h|0)==9){Lt(d,f,c[b+4>>2]|0);e=b+-16|0;a=a+-1|0}while(0);if((a|0)<=-1)break;b=c[d+(a<<2)+852>>2]|0;h=6}i=l;return 0}function Ep(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;q=c[d+4>>2]|0;r=e+76|0;d=c[d>>2]<<2;c[r>>2]=d;q=q<<2;c[e+80>>2]=q;c[e+84>>2]=c[b>>2]<<2;m=c[b+4>>2]<<2;c[e+88>>2]=m;c[e+92>>2]=c[a>>2]<<2;n=c[a+4>>2]<<2;c[e+96>>2]=n;c[e+100>>2]=c[e+64>>2];p=c[e+68>>2]|0;c[e+104>>2]=p;o=(m|0)<(q|0)?m:q;q=(m|0)>(q|0)?m:q;o=(n|0)<(o|0)?n:o;q=(n|0)>(q|0)?n:q;if((((p|0)<(o|0)?p:o)>>8|0)<(c[e+20>>2]|0)?(((p|0)>(q|0)?p:q)>>8|0)>=(c[e+16>>2]|0):0){a=d;d=r}else{a=d;d=r;u=13}while(1){if((u|0)==13){u=0;Lt(e,a,c[d+4>>2]|0);if((d|0)==(r|0))break;d=d+-24|0;a=c[d>>2]|0}m=d+24|0;n=c[m>>2]|0;k=n-a|0;o=d+28|0;p=c[o>>2]|0;q=c[d+4>>2]|0;l=p-q|0;f=(k|0)<0?0-k|0:k;b=(l|0)<0?0-l|0:l;if((f|0)>(b|0))f=(b*97|0)+(f*236|0)|0;else f=(b*236|0)+(f*97|0)|0;f=f>>8;if((f|0)<=32767){g=f*42|0;f=c[d+8>>2]|0;h=f-a|0;b=c[d+12>>2]|0;j=b-q|0;w=(ea(h,l)|0)-(ea(j,k)|0)|0;if((((((w|0)<0?0-w|0:w)|0)<=(g|0)?(s=(c[d+16>>2]|0)-a|0,t=(c[d+20>>2]|0)-q|0,w=(ea(s,l)|0)-(ea(t,k)|0)|0,(((w|0)<0?0-w|0:w)|0)<=(g|0)):0)?((ea(j-l|0,j)|0)+(ea(h-k|0,h)|0)|0)<=0:0)?((ea(t-l|0,t)|0)+(ea(s-k|0,s)|0)|0)<=0:0){u=13;continue}}else{f=c[d+8>>2]|0;b=c[d+12>>2]|0}c[d+48>>2]=n;g=d+16|0;h=c[g>>2]|0;w=(f+a|0)/2|0;c[d+8>>2]=w;j=(h+n|0)/2|0;c[d+40>>2]=j;n=(h+f|0)/2|0;w=(n+w|0)/2|0;c[g>>2]=w;j=(n+j|0)/2|0;c[d+32>>2]=j;w=(j+w|0)/2|0;c[d+24>>2]=w;c[d+52>>2]=p;j=d+20|0;n=c[j>>2]|0;q=(b+q|0)/2|0;c[d+12>>2]=q;p=(n+p|0)/2|0;c[d+44>>2]=p;n=(n+b|0)/2|0;q=(n+q|0)/2|0;c[j>>2]=q;p=(n+p|0)/2|0;c[d+36>>2]=p;c[o>>2]=(p+q|0)/2|0;a=w;d=m}i=v;return 0}function Fp(a){a=a|0;var b=0;b=i;if(!(Cj(a)|0))a=153;else{c[a+68>>2]=35;a=0}i=b;return a|0}function Gp(a){a=a|0;var d=0,e=0,f=0,g=0;e=i;a=a+28|0;d=c[a>>2]|0;if(!d){i=e;return}f=c[d+8>>2]|0;b[d+440>>1]=0;b[d+442>>1]=0;g=d+24|0;eh(f,c[g>>2]|0);c[g>>2]=0;c[d+20>>2]=0;g=d+436|0;eh(f,c[g>>2]|0);c[g>>2]=0;c[d+432>>2]=0;c[d+428>>2]=0;g=d+392|0;eh(f,c[g>>2]|0);c[g>>2]=0;c[d+388>>2]=0;c[d+4>>2]=0;c[d>>2]=0;eh(f,d);c[a>>2]=0;i=e;return}function Hp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;d=nh(90168,b)|0;if(!d)if((((a|0)!=0?(f=c[a+4>>2]|0,(f|0)!=0):0)?(g=ci(f,89608)|0,(g|0)!=0):0)?(e=c[(c[g>>2]|0)+20>>2]|0,(e|0)!=0):0)d=Wd[c[e+16>>2]&511](a,b)|0;else d=0;i=h;return d|0}function Ip(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+96|0;C=E+84|0;D=E+88|0;z=E+68|0;w=E+72|0;u=E+76|0;v=E+80|0;t=E;l=di(c[(c[f+96>>2]|0)+4>>2]|0,89608)|0;if(!l){f=11;i=E;return f|0}k=Hh(e,0)|0;if(k){f=k;i=E;return f|0}k=Xd[c[l+4>>2]&127](e,f,g,h,j)|0;s=f+104|0;x=c[s>>2]|0;if(k){f=k;i=E;return f|0}A=c[f+148>>2]|0;if(!((A|0)==1953658213|(A|0)==131072|(A|0)==65536)){f=2;i=E;return f|0}A=f+8|0;c[A>>2]=c[A>>2]|2048;if((g|0)<0){f=0;i=E;return f|0}k=Xd[c[l+8>>2]&127](x,f,g,h,j)|0;if(k){f=k;i=E;return f|0}a:do if(f){k=c[f+20>>2]|0;b:do if(!k)y=11;else{e=0;while(1){if(jea(k,90032+(e*17|0)|0)|0)break b;e=e+1|0;if((e|0)>=8){y=11;break}}}while(0);c:do if((y|0)==11){k=t+0|0;e=k+68|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(e|0));p=f+152|0;k=b[p>>1]|0;if(k<<16>>16){q=f+156|0;r=f+504|0;l=k;h=0;k=0;m=0;while(1){n=c[q>>2]|0;e=c[n+(h<<4)>>2]|0;if((e|0)==1886545264){j=2;y=19}else if((e|0)==1668707360){k=1;j=0;y=19}else if((e|0)==1718642541){j=1;y=19}if((y|0)==19){y=0;l=0;o=0;while(1){if((c[n+(h<<4)+12>>2]|0)==(c[89624+(o*24|0)+(j<<3)+4>>2]|0)){do if(!l){e=c[r>>2]|0;if(!e)l=0;else{if(ce[e&255](f,c[n+(h<<4)>>2]|0,c[s>>2]|0,0)|0){l=0;break}g=c[s>>2]|0;n=c[(c[q>>2]|0)+(h<<4)+12>>2]|0;if(yi(g,n)|0){l=0;break}if(n>>>0>3){l=n;e=0;do{e=(Fi(g)|0)+e|0;l=l+-4|0}while(l>>>0>3);n=n&3}else e=0;if(n){l=3;while(1){e=(((Ci(g)|0)&255)<<(l<<3))+e|0;n=n+-1|0;if(!n)break;else l=l+-1|0}}Bi(g);l=e}}while(0);n=t+(o<<2)|0;e=c[n>>2]|0;if((c[89624+(o*24|0)+(j<<3)>>2]|0)==(l|0)){e=e+1|0;c[n>>2]=e}if((e|0)==3)break c}e=o+1|0;if((e|0)>=17)break;n=c[q>>2]|0;o=e}l=b[p>>1]|0}e=m+1<<16>>16;if((e&65535)<(l&65535)){h=e&65535;m=e}else break}if(k<<24>>24){k=0;while(1){if((c[t+(k<<2)>>2]|0)==3)break c;k=k+1|0;if((k|0)>=17)break a}}else l=0}else l=0;while(1){e=t+(l<<2)|0;k=c[e>>2]|0;if(l>>>0>=5){k=k+1|0;c[e>>2]=k}l=l+1|0;if((k|0)==3)break c;if((l|0)>=17)break a}}while(0);c[A>>2]=c[A>>2]|8192}while(0);l=c[x+28>>2]|0;q=f+504|0;t=ce[c[q>>2]&255](f,1751412088,x,v)|0;c[u>>2]=t;k=c[v>>2]|0;if(!((t|0)!=0|k>>>0<8)){g=f+700|0;k=xi(x,k,g)|0;c[u>>2]=k;if(k){f=k;i=E;return f|0}e=c[g>>2]|0;j=e+(c[v>>2]|0)|0;h=d[e+2>>0]<<8|d[e+3>>0];n=d[e+5>>0]<<16|d[e+4>>0]<<24|d[e+6>>0]<<8|d[e+7>>0];n=n>>>0>4294901759?n&65535:n;if(!((h>>>0>255?1:(d[e>>0]<<8|d[e+1>>0]|0)!=0)|n>>>0>65537)){m=f+716|0;c[m>>2]=hh(l,1,0,h,0,u)|0;if(!(c[u>>2]|0)){d:do if(!h)k=0;else{k=0;l=e+8|0;do{e=l;l=l+n|0;if(l>>>0>j>>>0)break d;a[(c[m>>2]|0)+k>>0]=a[e>>0]|0;k=k+1|0}while(k>>>0>>0)}while(0);c[f+708>>2]=k;c[f+704>>2]=c[v>>2];c[f+712>>2]=n}else y=53}else{c[u>>2]=3;y=53}if((y|0)==53){zi(x,g);c[f+704>>2]=0}k=c[u>>2]|0;if(k){f=k;i=E;return f|0}}e:do if(c[A>>2]&1){p=f+128|0;do if(!(c[(c[p>>2]|0)+48>>2]|0)){e=f+664|0;k=ce[c[q>>2]&255](f,1735162214,x,e)|0;if((k&255|0)!=142){if(k)break}else c[e>>2]=0;if(!(ce[c[q>>2]&255](f,1819239265,x,w)|0)){k=c[w>>2]|0;if(!(b[f+210>>1]|0)){if(k>>>0>131071){k=8;break}l=k>>>1;c[f+692>>2]=l;g=1}else{if(k>>>0>262143){k=8;break}l=k>>>2;c[f+692>>2]=l;g=2}m=f+692|0;o=f+16|0;v=c[o>>2]|0;e=v+1|0;do if(!((l|0)==(e|0)|l>>>0>v>>>0)){k=e<>2]|0;v=b[f+152>>1]|0;n=l+((v&65535)<<4)|0;h=ui(x)|0;if(!(v<<16>>16))e=2147483647;else{j=l+16|0;j=((n>>>0>j>>>0?n:j)+~l|0)>>>4;e=2147483647;g=l;do{v=(c[g+8>>2]|0)-h|0;e=(v|0)>0&(v|0)<(e|0)?v:e;g=g+16|0}while(g>>>0>>0);l=l+(j+1<<4)|0}if((l|0)==(n|0))e=(c[x+4>>2]|0)-h|0;if((k|0)>(e|0)){k=c[w>>2]|0;break}else{c[m>>2]=(c[o>>2]|0)+1;c[w>>2]=k;break}}while(0);k=xi(x,k,f+696|0)|0;if(!k)y=77}else k=144}else y=77;while(0);do if((y|0)==77){k=Mt(f,x)|0;if(!k){if(!(ce[c[q>>2]&255](f,1718642541,x,C)|0)){k=c[C>>2]|0;c[f+624>>2]=k;k=xi(x,k,f+628|0)|0;if(k)break}else{c[f+628>>2]=0;c[f+624>>2]=0}if(!(ce[c[q>>2]&255](f,1886545264,x,z)|0)){k=c[z>>2]|0;c[f+632>>2]=k;k=xi(x,k,f+636|0)|0;break}else{c[f+636>>2]=0;c[f+632>>2]=0;k=0;break}}}while(0);if((((c[(c[p>>2]|0)+48>>2]|0)==0?(c[f+28>>2]|0)!=0:0)?(c[f+696>>2]|0)!=0:0)?(B=f+692|0,(c[B>>2]|0)!=0):0){g=0;l=0;e=0;do{Vp(f,e,C)|0;if(c[C>>2]|0){g=g+1|0;if(g>>>0>1)break e;else l=e}e=e+1|0}while(e>>>0<(c[B>>2]|0)>>>0);if((g|0)==1){if(l){C=(Yh(f,l,D,8)|0)==0;if(!(C&(a[D>>0]|0)==46))break;if(rga(D,89616,8)|0)break}c[A>>2]=c[A>>2]&-2}}}else k=0;while(0);c[f+508>>2]=72;c[f+516>>2]=111;c[f+520>>2]=112;c[f+524>>2]=113;c[f+512>>2]=228;f=k;i=E;return f|0}function Jp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;j=i;if(!a){i=j;return}h=c[a+100>>2]|0;b=a+104|0;d=c[b>>2]|0;e=c[a+528>>2]|0;f=a+652|0;g=c[f+4>>2]|0;if(g)Id[g&511](c[f>>2]|0);if(e)Id[c[e+12>>2]&511](a);zi(c[b>>2]|0,a+696|0);c[a+692>>2]=0;e=c[b>>2]|0;g=a+716|0;eh(c[e+28>>2]|0,c[g>>2]|0);c[g>>2]=0;zi(e,a+700|0);e=a+644|0;eh(h,c[e>>2]|0);c[e>>2]=0;c[a+640>>2]=0;zi(d,a+628|0);zi(d,a+636|0);c[a+624>>2]=0;c[a+632>>2]=0;d=a+672|0;e=c[d>>2]|0;if(e){a=e+4|0;eh(h,c[a>>2]|0);c[a>>2]=0;a=e+8|0;eh(h,c[a>>2]|0);c[a>>2]=0;a=e+20|0;b=c[a>>2]|0;if(b){if(c[e>>2]|0){f=0;do{eh(h,c[b+(f<<3)+4>>2]|0);b=c[a>>2]|0;c[b+(f<<3)+4>>2]=0;f=f+1|0}while(f>>>0<(c[e>>2]|0)>>>0)}eh(h,b);c[a>>2]=0}a=e+28|0;eh(h,c[a>>2]|0);c[a>>2]=0;a=e+36|0;eh(h,c[a>>2]|0);c[a>>2]=0;eh(h,e)}c[d>>2]=0;i=j;return}function Kp(b){b=b|0;a[b+300>>0]=0;a[b+301>>0]=0;a[b+108>>0]=0;c[b+112>>2]=-1;return 0}function Lp(b){b=b|0;var c=0;c=i;if(a[b+300>>0]|0)St(b);a[b+108>>0]=0;i=c;return}function Mp(a){a=a|0;var b=0;b=i;a=gh(c[c[a+156>>2]>>2]|0)|0;i=b;return a|0} +function Us(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;f=c[b>>2]|0;if(f>>>0>=d>>>0){v=0;i=w;return v|0}h=a[f>>0]|0;do if(h<<24>>24==43|h<<24>>24==45){f=f+1|0;if((f|0)==(d|0)){v=0;i=w;return v|0}else{m=a[f>>0]|0;v=h<<24>>24==45&1;break}}else{m=h;v=0}while(0);do if(m<<24>>24!=46){if(f>>>0>=d>>>0){v=0;i=w;return v|0}if(m<<24>>24==43|m<<24>>24==45){g=f+1|0;if((g|0)==(d|0)){v=0;i=w;return v|0}else n=m<<24>>24==45&1}else{g=f;n=0}a:do if(g>>>0>>0){k=0;j=0;while(1){m=a[g>>0]|0;h=m&255;switch(m<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{m=k;h=j;break a}default:{}}if(m<<24>>24<0){m=k;h=j;break a}u=h&127;m=a[22696+u>>0]|0;h=m<<24>>24;if((u+-48|0)>>>0>=10){m=k;h=j;break a}if((j|0)<=214748364)if((j|0)==214748364&m<<24>>24>7){m=1;h=214748364}else{m=k;h=h+(j*10|0)|0}else{m=1;h=j}g=g+1|0;if(g>>>0>>0){k=m;j=h}else break a}}else{m=0;h=0}while(0);h=m<<24>>24==0?h:2147483647;h=n<<24>>24==0?h:0-h|0;if((g|0)==(f|0)){v=0;i=w;return v|0}if(g>>>0>>0?(a[g>>0]|0)==35:0){q=g+1|0;if(q>>>0>=d>>>0|(h+-2|0)>>>0>34){v=0;i=w;return v|0}m=a[q>>0]|0;if(m<<24>>24==43|m<<24>>24==45){g=g+2|0;if((g|0)==(d|0)){v=0;i=w;return v|0}else p=m<<24>>24==45&1}else{g=q;p=0}l=2147483647/(h|0)|0;b:do if(g>>>0>>0){o=(2147483647%(h|0)|0)<<24>>24;n=0;m=0;while(1){k=a[g>>0]|0;j=k&255;switch(k<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{h=n;break b}default:{}}if(k<<24>>24<0){h=n;break b}u=a[22696+(j&127)>>0]|0;k=u<<24>>24;if(!(u<<24>>24>-1&(k|0)<(h|0))){h=n;break b}do if((m|0)>(l|0))j=1;else{if((m|0)==(l|0)&(k|0)>(o|0)){j=1;m=l;break}j=n;m=k+(ea(m,h)|0)|0}while(0);g=g+1|0;if(g>>>0>>0)n=j;else{h=j;break b}}}else{h=0;m=0}while(0);h=h<<24>>24==0?m:2147483647;if((g|0)==(q|0)){v=0;i=w;return v|0}else h=p<<24>>24==0?h:0-h|0}if((g|0)==(f|0)){v=0;i=w;return v|0}else{f=(h|0)>32767;j=f&1;f=f?h:h<<16;break}}else{g=f;j=0;f=0}while(0);c:do if(g>>>0>>0?(a[g>>0]|0)==46:0){n=(f|0)==0;k=g;g=0;h=1;d:while(1){e:do if(n)while(1){if((g|0)>=214748364){r=40;break d}k=k+1|0;if(k>>>0>=d>>>0)break c;m=a[k>>0]|0;l=m&255;switch(m<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:break c;default:{}}if(m<<24>>24<0)break c;m=l&127;if((m+-48|0)>>>0>9)break c;g=(a[22696+m>>0]|0)+(g*10|0)|0;if((e|0)>0)e=e+-1|0;else break e}else{if((g|0)>=214748364){r=51;break d}k=k+1|0;if(k>>>0>=d>>>0)break c;m=a[k>>0]|0;l=m&255;switch(m<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:break c;default:{}}if(m<<24>>24<0)break c;m=l&127;if((m+-48|0)>>>0>9)break c;g=(a[22696+m>>0]|0)+(g*10|0)|0}while(0);h=h*10|0}if((r|0)==40)while(1){k=k+1|0;if(k>>>0>=d>>>0)break c;m=a[k>>0]|0;l=m&255;switch(m<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:break c;default:{}}if(m<<24>>24<0)break c;if(((l&127)+-48|0)>>>0>9)break c}else if((r|0)==51)while(1){k=k+1|0;if(k>>>0>=d>>>0)break c;l=a[k>>0]|0;m=l&255;switch(l<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:break c;default:{}}if(l<<24>>24<0)break c;if(((m&127)+-48|0)>>>0>9)break c}}else{k=g;g=0;h=1}while(0);u=k+1|0;if(u>>>0>>0?(t=a[k>>0]|0,t<<24>>24==69|t<<24>>24==101):0){m=a[u>>0]|0;if(m<<24>>24==43|m<<24>>24==45){l=k+2|0;if((l|0)==(d|0)){k=0;l=u}else{p=m<<24>>24==45&1;r=66}}else{l=u;p=0;r=66}do if((r|0)==66){f:do if(l>>>0>>0){n=0;o=0;while(1){m=a[l>>0]|0;k=m&255;switch(m<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{m=n;k=o;break f}default:{}}if(m<<24>>24<0){m=n;k=o;break f}t=k&127;m=a[22696+t>>0]|0;k=m<<24>>24;if((t+-48|0)>>>0>=10){m=n;k=o;break f}if((o|0)<=214748364)if((o|0)==214748364&m<<24>>24>7){m=1;k=214748364}else{m=n;k=k+(o*10|0)|0}else{m=1;k=o}l=l+1|0;if(l>>>0>>0){n=m;o=k}else break f}}else{m=0;k=0}while(0);k=m<<24>>24==0?k:2147483647;k=p<<24>>24==0?k:0-k|0;if((l|0)==(u|0)){k=0;l=u}else if(l>>>0>>0?(a[l>>0]|0)==35:0){t=l+1|0;if(t>>>0>=d>>>0|(k+-2|0)>>>0>34){k=0;l=u;break}m=a[t>>0]|0;if(m<<24>>24==43|m<<24>>24==45){l=l+2|0;if((l|0)==(d|0)){k=0;l=u;break}else s=m<<24>>24==45&1}else{l=t;s=0}q=2147483647/(k|0)|0;g:do if(l>>>0>>0){r=(2147483647%(k|0)|0)<<24>>24;p=0;m=0;while(1){n=a[l>>0]|0;o=n&255;switch(n<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{k=p;break g}default:{}}if(n<<24>>24<0){k=p;break g}o=a[22696+(o&127)>>0]|0;n=o<<24>>24;if(!(o<<24>>24>-1&(n|0)<(k|0))){k=p;break g}do if((m|0)>(q|0))o=1;else{if((m|0)==(q|0)&(n|0)>(r|0)){o=1;m=q;break}o=p;m=n+(ea(m,k)|0)|0}while(0);l=l+1|0;if(l>>>0>>0)p=o;else{k=o;break g}}}else{k=0;m=0}while(0);m=k<<24>>24==0?m:2147483647;if((l|0)==(t|0)){k=0;l=u;break}else k=s<<24>>24==0?m:0-m|0}}while(0);if((u|0)==(l|0)){v=0;i=w;return v|0}if((k|0)>1e3){j=1;k=0}else{d=(k|0)<-1e3;e=(d?0:k)+e|0;k=d&1}}else{l=k;k=0}c[b>>2]=l;if(!(g|f)){v=0;i=w;return v|0}h:do if(!(j<<24>>24)){if(k<<24>>24){v=0;i=w;return v|0}if((e|0)>0)do{if((f|0)>214748363){f=2147483647;break h}f=f*10|0;if((g|0)>214748363){if((h|0)==1){f=2147483647;break h}h=(h|0)/10|0}else g=g*10|0;e=e+-1|0}while((e|0)>0);i:do if((e|0)<0){j=f;while(1){f=(j|0)/10|0;if((h|0)<214748364)h=h*10|0;else g=(g|0)/10|0;e=e+1|0;if(!((j+9|0)>>>0>18|(g|0)!=0)){f=0;break}if((e|0)>=0){e=h;break i}else j=f}i=w;return f|0}else e=h;while(0);if(g)f=(Xg(g,e)|0)+f|0}else f=2147483647;while(0);v=v<<24>>24==0?f:0-f|0;i=w;return v|0}function Vs(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+16|0;z=B+4|0;x=B;u=c[b+4>>2]|0;if((f+-1|0)>>>0>4){A=0;i=B;return A|0}y=u+12|0;t=u+8|0;v=b+12|0;w=b+16|0;g=0;a:while(1){o=c[e+(g<<3)>>2]|0;k=c[y>>2]|0;h=(k|0)>0;if(o){if(h)break;h=c[u>>2]|0;m=c[t>>2]|0;if(h>>>0>=m>>>0){A=25;break}b:while(1){j=h;h=h+1|0;c[u>>2]=h;switch(d[j>>0]|0){case 59:{A=24;break a}case 10:case 13:{A=23;break a}case 9:case 32:break;case 26:{A=25;break a}default:break b}if(h>>>0>=m>>>0){A=25;break a}}l=h;k=j;c:while(1){if(l>>>0>=m>>>0){h=l;A=30;break}h=k+2|0;c[u>>2]=h;switch(d[l>>0]|0){case 10:case 13:{A=28;break c}case 9:case 32:break c;case 59:{A=29;break c}case 26:{A=30;break c}default:{k=l;l=h}}}if((A|0)==28){A=0;c[y>>2]=2}else if((A|0)==29){A=0;c[y>>2]=1}else if((A|0)==30){A=0;c[y>>2]=3}c[z>>2]=j;if(!j){A=73;break}}else{d:do if(h)A=11;else{h=c[u>>2]|0;j=c[t>>2]|0;if(h>>>0>=j>>>0){A=10;break a}e:while(1){s=h;h=h+1|0;c[u>>2]=h;switch(d[s>>0]|0){case 10:case 13:{A=8;break a}case 26:{A=10;break a}case 9:case 32:break;case 59:break e;default:{A=11;break d}}if(h>>>0>=j>>>0){A=10;break a}}c[y>>2]=1;l=j}while(0);if((A|0)==11){A=0;if((k|0)>1)break;l=c[t>>2]|0;h=c[u>>2]|0}j=h+-1|0;k=h;while(1){if(k>>>0>=l>>>0){h=k;k=3;break}h=k+1|0;c[u>>2]=h;k=a[k>>0]|0;s=k&255;if((s|0)==10|(s|0)==13){k=2;break}if(k<<24>>24==26){k=3;break}else k=h}c[y>>2]=k;c[z>>2]=j}k=h-j|0;l=k+-1|0;f:do switch(o|0){case 1:case 0:{h=Ai(c[b>>2]|0,k,x)|0;k=e+(g<<3)+4|0;c[k>>2]=h;if(!(c[x>>2]|0)){Aga(h|0,j|0,l|0)|0;a[(c[k>>2]|0)+l>>0]=0}break}case 3:{s=j+l|0;do if((k|0)>=2){h=a[j>>0]|0;if(h<<24>>24==43|h<<24>>24==45)if((l|0)==1){h=0;break}else{k=j+1|0;o=h<<24>>24==45&1}else{k=j;o=0}g:do if(k>>>0>>0){m=0;n=0;while(1){h=a[k>>0]|0;l=h&255;switch(h<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{h=m;l=n;break g}default:{}}if(h<<24>>24<0){h=m;l=n;break g}r=l&127;h=a[22696+r>>0]|0;l=h<<24>>24;if((r+-48|0)>>>0>=10){h=m;l=n;break g}if((n|0)<=214748364)if((n|0)==214748364&h<<24>>24>7){h=1;l=214748364}else{h=m;l=l+(n*10|0)|0}else{h=1;l=n}k=k+1|0;if(k>>>0>>0){m=h;n=l}else break g}}else{h=0;l=0}while(0);h=h<<24>>24==0?l:2147483647;h=o<<24>>24==0?h:0-h|0;if((k|0)!=(j|0)){if(k>>>0>>0?(a[k>>0]|0)==35:0){r=k+1|0;if(r>>>0>=s>>>0|(h+-2|0)>>>0>34){h=0;break}j=a[r>>0]|0;if(j<<24>>24==43|j<<24>>24==45){k=k+2|0;if((k|0)==(s|0)){h=0;break}else q=j<<24>>24==45&1}else{k=r;q=0}o=2147483647/(h|0)|0;h:do if(k>>>0>>0){n=(2147483647%(h|0)|0)<<24>>24;j=0;p=0;while(1){m=a[k>>0]|0;l=m&255;switch(m<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{h=p;break h}default:{}}if(m<<24>>24<0){h=p;break h}l=a[22696+(l&127)>>0]|0;m=l<<24>>24;if(!(l<<24>>24>-1&(m|0)<(h|0))){h=p;break h}do if((p|0)>(o|0)){j=1;m=p}else{if((p|0)==(o|0)&(m|0)>(n|0)){j=1;m=o;break}m=m+(ea(p,h)|0)|0}while(0);k=k+1|0;if(k>>>0>>0)p=m;else{h=m;break h}}}else{j=0;h=0}while(0);h=j<<24>>24==0?h:2147483647;if((k|0)==(r|0)){h=0;break}else h=q<<24>>24==0?h:0-h|0}c[z>>2]=k}else h=0}else h=0;while(0);c[e+(g<<3)+4>>2]=h;break}case 2:{c[e+(g<<3)+4>>2]=Us(z,j+l|0,0)|0;break}case 5:{h=c[v>>2]|0;if(!h){c[e+(g<<3)+4>>2]=0;break f}else{c[e+(g<<3)+4>>2]=Od[h&255](j,l,c[w>>2]|0)|0;break f}}case 4:{if((l|0)==4)h=(rga(j,22688,4)|0)==0&1;else h=0;a[e+(g<<3)+4>>0]=h;break}default:{}}while(0);g=g+1|0;if(g>>>0>=f>>>0){A=73;break}}if((A|0)==8)c[y>>2]=2;else if((A|0)==10)c[y>>2]=3;else if((A|0)==23)c[y>>2]=2;else if((A|0)==24)c[y>>2]=1;else if((A|0)==25)c[y>>2]=3;else if((A|0)==73){i=B;return g|0}c[z>>2]=0;A=g;i=B;return A|0}function Ws(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;d=c[a>>2]<<16|c[a+4>>2];a=c[b>>2]<<16|c[b+4>>2];if(d>>>0>a>>>0){b=1;i=e;return b|0}b=(d>>>0>>0)<<31>>31;i=e;return b|0}function Xs(a,b){a=a|0;b=b|0;return c[(c[a+420>>2]|0)+(b<<2)>>2]|0}function Ys(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+16|0;q=r;p=ch(f,2496,q)|0;j=c[q>>2]|0;if(j){g=j;c[h>>2]=p;i=r;return g|0}c[p>>2]=f;n=p+4|0;l=p+208|0;c[p+212>>2]=e[g+120>>1];o=a[g+124>>0]|0;j=o&255;if(o<<24>>24){f=j;k=g+128|0;m=p+224|0;while(1){c[m>>2]=b[k>>1];f=f+-1|0;if(!f)break;else{k=k+2|0;m=m+12|0}}}c[l>>2]=j+1;c[p+8>>2]=e[g+122>>1];o=a[g+125>>0]|0;j=o&255;if(o<<24>>24){f=j;k=g+154|0;l=p+20|0;while(1){c[l>>2]=b[k>>1];f=f+-1|0;if(!f)break;else{k=k+2|0;l=l+12|0}}}c[n>>2]=j+1;l=p+412|0;f=g+8|0;k=g+9|0;o=g+116|0;Lu(l,d[f>>0]|0,g+12|0,d[k>>0]|0,g+40|0,c[o>>2]|0,0);n=g+10|0;m=g+11|0;Lu(l,d[n>>0]|0,g+60|0,d[m>>0]|0,g+88|0,c[o>>2]|0,1);f=a[f>>0]|0;l=f&255;if(!(f<<24>>24))j=1;else{j=1;f=0;do{s=(e[g+((f|1)<<1)+12>>1]|0)-(e[g+(f<<1)+12>>1]|0)|0;j=(s<<16>>16|0)>(j<<16>>16|0)?s&65535:j;f=f+2|0}while(f>>>0>>0)}s=a[k>>0]|0;f=s&255;if(s<<24>>24){l=0;do{s=(e[g+((l|1)<<1)+40>>1]|0)-(e[g+(l<<1)+40>>1]|0)|0;j=(s<<16>>16|0)>(j<<16>>16|0)?s&65535:j;l=l+2|0}while(l>>>0>>0)}s=a[n>>0]|0;f=s&255;if(s<<24>>24){l=0;do{s=(e[g+((l|1)<<1)+60>>1]|0)-(e[g+(l<<1)+60>>1]|0)|0;j=(s<<16>>16|0)>(j<<16>>16|0)?s&65535:j;l=l+2|0}while(l>>>0>>0)}s=a[m>>0]|0;l=s&255;if(s<<24>>24){f=0;do{s=(e[g+((f|1)<<1)+88>>1]|0)-(e[g+(f<<1)+88>>1]|0)|0;j=(s<<16>>16|0)>(j<<16>>16|0)?s&65535:j;f=f+2|0}while(f>>>0>>0)}s=Xg(1e3,j<<16>>16)|0;m=c[g+108>>2]|0;c[p+2476>>2]=(m|0)<(s|0)?m:s;c[p+2480>>2]=c[g+112>>2];c[p+2488>>2]=c[o>>2];c[p+200>>2]=0;c[p+204>>2]=0;c[p+404>>2]=0;c[p+408>>2]=0;s=c[q>>2]|0;c[h>>2]=p;i=r;return s|0}function Zs(a){a=a|0;var b=0,d=0;b=i;if(!a){i=b;return}d=c[a>>2]|0;c[a+4>>2]=0;c[a+208>>2]=0;c[a+412>>2]=0;c[a+928>>2]=0;c[a+1444>>2]=0;c[a+1960>>2]=0;eh(d,a);i=b;return}function _s(a){a=a|0;c[a+4>>2]=0;c[a+16>>2]=0;c[a+28>>2]=0;c[a+40>>2]=0;c[a+52>>2]=0;c[a+64>>2]=0;c[a+76>>2]=0;c[a+12>>2]=1;return}function $s(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;d=c[a+4>>2]|0;if(!d){e=c[a>>2]|0;d=Mu(a+16|0,b,e)|0;if(!d)d=Mu(a+52|0,b,e)|0}i=f;return d|0}function at(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;e=(Rg(c[d>>2]|0)|0)>>16;c[g>>2]=e;c[g+4>>2]=(Rg(c[d+4>>2]|0)|0)>>16;f=a+4|0;if(c[f>>2]|0){i=h;return}if(((c[a+12>>2]|0)+-1|0)>>>0>=2){i=h;return}d=Nu(a+((b>>>0>1?1:b)*36|0)+16|0,e,c[g+4>>2]|0,c[a>>2]|0,0)|0;if(!d){i=h;return}c[f>>2]=d;i=h;return}function bt(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+32|0;s=B+24|0;u=B;x=B+4|0;z=B+8|0;j=B+12|0;A=b+4|0;if(c[A>>2]|0){i=B;return}y=c[b>>2]|0;r=e>>>0>1?1:e;h=b+(r*36|0)+16|0;a:do if((c[b+12>>2]|0)==1){g=0;while(1){e=(Rg(c[f>>2]|0)|0)>>16;e=Nu(h,e,(Rg(c[f+4>>2]|0)|0)>>16,y,j+(g<<2)|0)|0;if(e)break a;g=g+1|0;if((g|0)>=3)break;else f=f+8|0}t=c[j>>2]|0;v=c[j+4>>2]|0;w=c[j+8>>2]|0;o=b+(r*36|0)+40|0;p=c[o>>2]|0;b:do if(!p)q=14;else{f=t>>3;g=128>>>(t&7);h=v>>3;j=128>>>(v&7);k=w>>3;l=128>>>(w&7);m=p;n=c[b+(r*36|0)+48>>2]|0;while(1){e=c[n>>2]|0;if(e>>>0>t>>>0?((d[(c[n+8>>2]|0)+f>>0]|0)&g|0)!=0:0)break b;if(e>>>0>v>>>0?((d[(c[n+8>>2]|0)+h>>0]|0)&j|0)!=0:0)break b;if(e>>>0>w>>>0?((d[(c[n+8>>2]|0)+k>>0]|0)&l|0)!=0:0)break b;m=m+-1|0;if(!m){q=14;break}else n=n+16|0}}while(0);if((q|0)==14){j=p+1|0;g=b+(r*36|0)+44|0;e=c[g>>2]|0;if(j>>>0>e>>>0){c[s>>2]=0;h=p+8&-8;b=b+(r*36|0)+48|0;f=hh(y,16,e,h,c[b>>2]|0,s)|0;c[b>>2]=f;e=c[s>>2]|0;if(e)break;c[g>>2]=h;e=f}else e=c[b+(r*36|0)+48>>2]|0;n=e+(p<<4)|0;c[n>>2]=0;c[e+(p<<4)+12>>2]=0;c[o>>2]=j;e=0}if((t|0)>=0){if(e>>>0<=t>>>0){h=t+1|0;j=n+4|0;f=((c[j>>2]|0)+7|0)>>>3;e=(t+8|0)>>>3;c[u>>2]=0;if(e>>>0>f>>>0){g=e+7&1073741816;e=n+8|0;c[e>>2]=hh(y,1,f,g,c[e>>2]|0,u)|0;e=c[u>>2]|0;if(e)break;c[j>>2]=g<<3}c[n>>2]=h}u=(c[n+8>>2]|0)+(t>>3)|0;a[u>>0]=d[u>>0]|0|128>>>(t&7)}if((v|0)>=0){if((c[n>>2]|0)>>>0<=v>>>0){h=v+1|0;j=n+4|0;f=((c[j>>2]|0)+7|0)>>>3;e=(v+8|0)>>>3;c[x>>2]=0;if(e>>>0>f>>>0){g=e+7&1073741816;e=n+8|0;c[e>>2]=hh(y,1,f,g,c[e>>2]|0,x)|0;e=c[x>>2]|0;if(e)break;c[j>>2]=g<<3}c[n>>2]=h}x=(c[n+8>>2]|0)+(v>>3)|0;a[x>>0]=d[x>>0]|0|128>>>(v&7)}if((w|0)<0){i=B;return}if((c[n>>2]|0)>>>0<=w>>>0){f=w+1|0;j=n+4|0;g=((c[j>>2]|0)+7|0)>>>3;e=(w+8|0)>>>3;c[z>>2]=0;if(e>>>0>g>>>0){h=e+7&1073741816;e=n+8|0;c[e>>2]=hh(y,1,g,h,c[e>>2]|0,z)|0;e=c[z>>2]|0;if(e)break;c[j>>2]=h<<3}c[n>>2]=f}A=(c[n+8>>2]|0)+(w>>3)|0;a[A>>0]=d[A>>0]|0|128>>>(w&7);i=B;return}else e=6;while(0);c[A>>2]=e;i=B;return}function ct(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+16|0;n=p+4|0;e=p;o=a+4|0;if(c[o>>2]|0){i=p;return}m=c[a>>2]|0;do if((c[a+12>>2]|0)==1){k=a+28|0;l=c[k>>2]|0;if(l)c[(c[a+36>>2]|0)+(l+-1<<4)+12>>2]=b;j=l+1|0;f=a+32|0;d=c[f>>2]|0;if(j>>>0>d>>>0){c[e>>2]=0;h=l+8&-8;q=a+36|0;g=hh(m,16,d,h,c[q>>2]|0,e)|0;c[q>>2]=g;d=c[e>>2]|0;if(d)break;c[f>>2]=h;d=g}else d=c[a+36>>2]|0;c[d+(l<<4)>>2]=0;c[d+(l<<4)+12>>2]=0;c[k>>2]=j;j=a+64|0;k=c[j>>2]|0;if(k)c[(c[a+72>>2]|0)+(k+-1<<4)+12>>2]=b;h=k+1|0;f=a+68|0;d=c[f>>2]|0;if(h>>>0>d>>>0){c[n>>2]=0;g=k+8&-8;q=a+72|0;e=hh(m,16,d,g,c[q>>2]|0,n)|0;c[q>>2]=e;d=c[n>>2]|0;if(d)break;c[f>>2]=g;d=e}else d=c[a+72>>2]|0;c[d+(k<<4)>>2]=0;c[d+(k<<4)+12>>2]=0;c[j>>2]=h;i=p;return}else d=6;while(0);c[o>>2]=d;i=p;return}function dt(a){a=a|0;c[a+4>>2]=0;c[a+16>>2]=0;c[a+28>>2]=0;c[a+40>>2]=0;c[a+52>>2]=0;c[a+64>>2]=0;c[a+76>>2]=0;c[a+12>>2]=2;return}function et(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+128|0;n=o;if((d|0)<=0){i=o;return}l=a+4|0;m=a+12|0;k=a+((b>>>0>1?1:b)*36|0)+16|0;g=0;while(1){j=(d|0)>16?16:d;h=j<<1;f=(j|0)>0;if(f){b=0;do{g=(c[e+(b<<2)>>2]|0)+g|0;c[n+(b<<2)>>2]=(Rg(g)|0)>>16;b=b+1|0}while((b|0)<(h|0));if(f){b=0;do{f=n+((b|1)<<2)|0;c[f>>2]=(c[f>>2]|0)-(c[n+(b<<2)>>2]|0);b=b+2|0}while((b|0)<(h|0));h=g}else h=g}else h=g;a:do if((c[l>>2]|0)==0?!((j|0)==0?1:((c[m>>2]|0)+-1|0)>>>0>1):0){f=j;g=n;while(1){b=Nu(k,c[g>>2]|0,c[g+4>>2]|0,c[a>>2]|0,0)|0;if(b)break;f=f+-1|0;if(!f)break a;else g=g+8|0}c[l>>2]=b}while(0);d=d-j|0;if((d|0)<=0)break;else g=h}i=o;return}function ft(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;l=a+4|0;if(c[l>>2]|0){i=m;return}f=a+16|0;k=c[a>>2]|0;g=c[f>>2]|0;h=a+52|0;j=c[h>>2]|0;if((j+g|0)!=(d|0)){i=m;return}a=Ou(f,e,j,g,b,k)|0;if(!a){a=Ou(h,e,0,j,b,k)|0;if(!a){i=m;return}}c[l>>2]=a;i=m;return}function gt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;k=a+4|0;if(c[k>>2]|0){i=l;return}e=a+16|0;h=c[a>>2]|0;j=c[e>>2]|0;f=a+52|0;g=c[f>>2]|0;if((g+j|0)!=(b|0)){i=l;return}a=Ou(e,d,0,j,0,h)|0;if(!a){a=Ou(f,d,j,g,0,h)|0;if(!a){i=l;return}}c[k>>2]=a;i=l;return}function ht(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;f=a+28|0;d=c[f>>2]|0;g=a+32|0;if(d){e=c[g>>2]|0;while(1){eh(b,c[e+8>>2]|0);c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;d=d+-1|0;if(!d)break;else e=e+16|0}}eh(b,c[g>>2]|0);c[g>>2]=0;c[a+24>>2]=0;c[f>>2]=0;f=a+16|0;d=c[f>>2]|0;g=a+20|0;if(d){e=c[g>>2]|0;while(1){eh(b,c[e+8>>2]|0);c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;d=d+-1|0;if(!d)break;else e=e+16|0}}eh(b,c[g>>2]|0);c[g>>2]=0;c[a+12>>2]=0;c[f>>2]=0;f=a+8|0;eh(b,c[f>>2]|0);c[f>>2]=0;c[a>>2]=0;c[a+4>>2]=0;i=h;return}function it(b,c){b=b|0;c=c|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;if(!((b|0)!=0&b>>>0>>0)){s=0;i=t;return s|0}l=b+1|0;m=a[b>>0]|0;o=52;p=0;while(1){n=o+p>>1;f=n<<1;f=30600+(d[f+30602>>0]<<8|d[f+30603>>0])|0;h=a[f>>0]|0;k=h&127;if((k|0)==(m|0)){e=f;j=h;break}k=(k|0)<(m|0);p=k?n+1|0:p;o=k?o:n;if((p|0)>=(o|0)){g=0;q=16;break}}if((q|0)==16){i=t;return g|0}a:do if(l>>>0>>0){b:while(1){k=b+2|0;m=a[l>>0]|0;g=e+1|0;b=a[g>>0]|0;h=b&255;f=h&127;c:do if(j<<24>>24<0)if((m|0)==(f|0))e=g;else{g=0;q=16;break b}else{if(!f){g=0;q=16;break b}g=f;f=e+((h>>>6&2)+2)|0;while(1){e=30600+(d[f>>0]<<8|d[f+1>>0])|0;b=a[e>>0]|0;if((m|0)==(b&127|0))break c;g=g+-1|0;if((g|0)<=0){g=0;q=16;break b}else f=f+2|0}}while(0);if(k>>>0>>0){q=l;l=k;j=b;b=q}else{r=b;s=e;break a}}if((q|0)==16){i=t;return g|0}}else{r=j;s=e}while(0);if(r<<24>>24<=-1){s=0;i=t;return s|0}if((a[s+1>>0]|0)>=0){s=0;i=t;return s|0}s=d[s+2>>0]<<8|d[s+3>>0];i=t;return s|0}function jt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;d=c[a>>2]|0;e=d&2147483647;a=c[b>>2]|0;b=a&2147483647;if((e|0)==(b|0))if(d>>>0>a>>>0)a=1;else a=(d>>>0>>0)<<31>>31;else if(e>>>0>b>>>0)a=1;else a=(e>>>0>>0)<<31>>31;i=f;return a|0}function kt(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;f=c[a+112>>2]|0;e=0-f|0;b[a+156>>1]=e;e=ea(b[d>>1]|0,e)|0;d=a+148|0;c[d>>2]=e;if((f|0)>0)c[d>>2]=(ea((c[a+104>>2]|0)+-1|0,f)|0)+e;b[a+158>>1]=0;b[a+160>>1]=0;return}function lt(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0;q=i;n=c[f+4>>2]|0;k=0-n|0;l=c[f>>2]|0;g=(h+-1+n&k)>>l;if((j-h-n|0)>(c[f+20>>2]|0))l=(k&j)>>l;else l=g;if((l|0)<=-1){i=q;return}k=e[f+56>>1]|0;if((g|0)>=(k|0)){i=q;return}m=(g|0)<0?0:g;p=(l|0)<(k|0)?l:k+-1|0;n=m<<13>>16;o=p<<13>>16;m=255>>>(m&7);p=127>>>(p&7)^255;k=f+158|0;if((b[k>>1]|0)>(n|0))b[k>>1]=n;k=f+160|0;if((b[k>>1]|0)<(o|0))b[k>>1]=o;j=c[f+60>>2]|0;h=c[f+148>>2]|0;k=h+n|0;l=j+k|0;g=o-n|0;if((g|0)<=0){a[l>>0]=d[l>>0]|p&m;i=q;return}a[l>>0]=d[l>>0]|m;k=j+(k+1)|0;if((g+-1|0)>0){Cga(k|0,-1,o+-1-n|0)|0;k=j+(h+o)|0}a[k>>0]=d[k>>0]|p;i=q;return}function mt(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;p=c[f+4>>2]|0;o=h+-1|0;q=0-p|0;m=o+p&q;s=q&j;if((m|0)>(s|0)){r=c[k+12>>2]|0;n=r&7;if((m|0)!=(s+p|0)){i=t;return}if(!n)o=s;else if((n|0)==4)o=(c[f+8>>2]|0)+((o+j|0)/2|0)&q;else if((n|0)==5|(n|0)==1){if((c[k+28>>2]|0)==(l|0)?(c[k+16>>2]|0)<1:0){if(!(r&16)){i=t;return}if((j-h|0)<(c[f+8>>2]|0)){i=t;return}}if((c[l+28>>2]|0)==(k|0)?(c[k+20>>2]|0)==(g<<16>>16|0):0){if(!(r&32)){i=t;return}if((j-h|0)<(c[f+8>>2]|0)){i=t;return}}if((n|0)==1)o=s;else o=(c[f+8>>2]|0)+((o+j|0)/2|0)&q}else{i=t;return}n=c[f>>2]|0;if((o|0)<0)p=m;else p=(o>>n|0)<(e[f+56>>1]|0)?o:s;g=((p|0)==(m|0)?s:m)>>n;s=g&7;if(((g|0)>-1?(g|0)<(e[f+56>>1]|0):0)?(d[(c[f+60>>2]|0)+((c[f+148>>2]|0)+(g<<13>>16))>>0]&128>>>s|0)!=0:0){i=t;return}else m=p}else n=c[f>>2]|0;n=m>>n;if((n|0)<=-1){i=t;return}if((n|0)>=(e[f+56>>1]|0)){i=t;return}p=n>>>3;o=p&65535;m=f+158|0;p=p<<16>>16;if((b[m>>1]|0)>(p|0))b[m>>1]=o;m=f+160|0;if((b[m>>1]|0)<(p|0))b[m>>1]=o;f=(c[f+60>>2]|0)+((c[f+148>>2]|0)+p)|0;a[f>>0]=d[f>>0]|128>>>(n&7);i=t;return}function nt(a){a=a|0;var d=0;d=a+148|0;c[d>>2]=(c[d>>2]|0)+(b[a+156>>1]|0);return}function ot(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,fa=0,ga=0,ha=0;ga=i;i=i+16|0;da=ga+14|0;ca=ga+12|0;fa=ga+4|0;aa=ga;ba=ga+8|0;F=f+1024|0;h=c[F>>2]|0;if((h|0)<=-1){ba=0;i=ga;return ba|0}V=f+4|0;W=f+80|0;X=f+76|0;Y=f+28|0;Z=f+40|0;_=f+44|0;$=f+92|0;G=f+87|0;H=f+86|0;I=f+32|0;J=f+36|0;K=f+48|0;L=f+88|0;M=f+84|0;N=f+128|0;O=f+100|0;P=f+96|0;Q=f+140|0;R=f+132|0;S=f+24|0;U=f+8|0;w=g<<24>>24!=0;x=f+136|0;y=f+68|0;z=f+72|0;A=f+180|0;B=f+164|0;C=f+176|0;D=f+172|0;E=f+168|0;g=h;a:while(1){h=c[V>>2]|0;c[W>>2]=ea(b[f+(g<<2)+962>>1]|0,h)|0;c[X>>2]=ea(b[f+(g<<2)+960>>1]|0,h)|0;g=c[Y>>2]|0;c[Z>>2]=g;c[_>>2]=0;c[$>>2]=0;a[G>>0]=0;a[H>>0]=0;h=(c[I>>2]|0)+-32|0;c[J>>2]=h;c[K>>2]=0;c[L>>2]=g;c[g+8>>2]=g;b[M>>1]=0;b:do if((b[N>>1]|0)>0){r=c[Q>>2]|0;g=c[U>>2]|0;u=0;q=0;while(1){c[O>>2]=0;c[P>>2]=0;s=c[R>>2]|0;o=e[r+(u<<1)>>1]|0;l=s+(o<<3)|0;h=s+(q<<3)|0;k=c[S>>2]|0;j=(c[h>>2]<>2]<>2]<>2]<>2]|0;g=n+q|0;m=a[g>>0]|0;if(m&4){a[A>>0]=(m&255)>>>5;m=a[g>>0]|0}m=m&3;if((m|0)==2){v=31;break a}else if(!m){if((a[n+o>>0]&3)==1)g=s+(o+-1<<3)|0;else{g=l;j=(j+p|0)/2|0;k=(k+r|0)/2|0}r=q+-1|0;t=g;h=s+(r<<3)|0;g=n+r|0;s=j;r=k}else{t=l;s=p}c[y>>2]=s;c[z>>2]=r;c:do if(h>>>0>>0){q=h;p=g;d:while(1){o=q+8|0;n=p+1|0;g=d[n>>0]&3;if(!g){k=c[S>>2]|0;g=c[U>>2]|0;v=(c[o>>2]<>2]<>>0>=t>>>0){v=24;break d}p=q+16|0;l=h+2|0;m=d[l>>0]&3;ha=c[S>>2]|0;v=c[U>>2]|0;h=g;g=(c[p>>2]<>2]<>24){v=86;break b}else{h=n;q=o;o=p;n=l}}}else{h=p;while(1){if(o>>>0>=t>>>0){v=24;break d}p=q+16|0;l=h+2|0;m=d[l>>0]&3;ha=c[S>>2]|0;v=c[U>>2]|0;j=k;k=(c[p>>2]<>2]<>24){v=86;break b}else{h=n;q=o;o=p;n=l}}}while(0);if(!((Qu(f,j,h,k,g)|0)<<24>>24)){k=o;g=m}else{v=86;break b}}else if((g|0)==1){m=c[S>>2]|0;v=c[U>>2]|0;l=(c[o>>2]<>2]<>24)){k=o;g=n}else{v=86;break b}}else{if((q+16|0)>>>0>t>>>0){v=31;break a}if((a[p+2>>0]&3)!=2){v=31;break a}m=q+24|0;l=c[S>>2]|0;n=c[U>>2]|0;k=(c[q+8>>2]<>2]<>2]<>2]<>>0>t>>>0){v=29;break}o=(c[m>>2]<>2]<>24)){k=m;g=p+3|0}else{v=86;break b}}if(k>>>0>>0){q=k;p=g}else{v=30;break c}}if((v|0)==24){v=0;if(!((Qu(f,k,g,s,r)|0)<<24>>24))break;else{v=86;break b}}else if((v|0)==29){v=0;if(!((Ru(f,j,h,k,g,s,r)|0)<<24>>24))break;else{v=86;break b}}}else v=30;while(0);if((v|0)==30?(v=0,(Pu(f,s,r)|0)<<24>>24!=0):0){v=86;break b}r=c[Q>>2]|0;n=(e[r+(u<<1)>>1]|0)+1|0;g=c[z>>2]|0;k=c[V>>2]|0;h=k+-1&g;if(((((h|0)==0?(g|0)>=(c[X>>2]|0):0)?(g|0)<=(c[W>>2]|0):0)?(T=c[P>>2]|0,(T|0)!=0):0)?((c[(c[L>>2]|0)+12>>2]^c[T+12>>2])&8|0)==0:0)c[Z>>2]=(c[Z>>2]|0)+-4;o=c[L>>2]|0;j=o+12|0;m=c[j>>2]|0;l=(m&8|0)==0;if(l){h=c[U>>2]|0;p=h;h=((g+-1+k&0-k)-g|0)>=(h|0)}else{t=c[U>>2]|0;p=t;h=(h|0)>=(t|0)}g=c[Z>>2]|0;k=g-(c[o+8>>2]|0)|0;if((k|0)<0){v=42;break a}if((k|0)>0){c[o+16>>2]=k>>2;do if(h)if(l){c[j>>2]=m|32;break}else{c[j>>2]=m|16;break}while(0);c[L>>2]=g;t=g+32|0;c[Z>>2]=t;c[g+16>>2]=0;c[g+8>>2]=t;c[o+28>>2]=g;b[M>>1]=(b[M>>1]|0)+1<<16>>16;g=t}h=c[J>>2]|0;if(g>>>0>=h>>>0){v=50;break}a[G>>0]=0;k=c[P>>2]|0;if(k)c[o+28>>2]=k;u=u+1|0;if((u|0)>=(b[N>>1]|0))break;else{g=p;q=n&65535}}if((v|0)==50){c[_>>2]=98;v=87;break}j=b[M>>1]|0;k=c[$>>2]|0;if((j&65535)>1&(k|0)!=0)if(j<<16>>16){q=c[I>>2]|0;while(1){h=c[k+16>>2]|0;if((j&65535)>1)n=(c[k+8>>2]|0)+(h<<2)|0;else n=0;c[k+4>>2]=n;g=k+20|0;l=c[g>>2]|0;if(!(c[k+12>>2]&8)){v=l-h+1|0;c[g>>2]=v;g=k+8|0;c[g>>2]=(c[g>>2]|0)+(h+-1<<2);g=v}else{g=l;l=h+-1+l|0}o=c[K>>2]|0;m=o;while(1){k=m+-1|0;if((m|0)<=0){v=68;break}h=c[q+(k-o<<2)>>2]|0;if((h|0)>(g|0))m=k;else{v=65;break}}if((v|0)==65)if((h|0)<(g|0)){h=g;while(1){v=q+(k-o<<2)|0;g=c[v>>2]|0;c[v>>2]=h;if((k|0)>0){h=g;k=k+-1|0}else break}if((0-m|0)>-1){k=m+-2|0;v=68}else v=69}else v=68;if((v|0)==68){v=0;if((k|0)<0)v=69}if((v|0)==69){v=(c[J>>2]|0)+-4|0;c[J>>2]=v;if(v>>>0<=(c[Z>>2]|0)>>>0){v=71;break}v=o+1|0;c[K>>2]=v;c[q+(~o<<2)>>2]=g;o=v}g=l+1|0;p=c[I>>2]|0;m=o;while(1){k=m+-1|0;if((m|0)<=0){v=78;break}h=c[p+(k-o<<2)>>2]|0;if((h|0)>(g|0))m=k;else{v=75;break}}if((v|0)==75)if((h|0)<(g|0)){h=g;while(1){v=p+(k-o<<2)|0;g=c[v>>2]|0;c[v>>2]=h;if((k|0)>0){h=g;k=k+-1|0}else break}if((0-m|0)>-1){k=m+-2|0;v=78}else v=79}else v=78;if((v|0)==78?(v=0,(k|0)<0):0)v=79;if((v|0)==79){v=(c[J>>2]|0)+-4|0;c[J>>2]=v;if(v>>>0<=(c[Z>>2]|0)>>>0){v=81;break}c[K>>2]=o+1;c[p+(~o<<2)>>2]=g}j=j+-1<<16>>16;if(!(j<<16>>16)){v=84;break}else k=n}if((v|0)==71){c[_>>2]=98;v=87;break}else if((v|0)==81){c[_>>2]=98;v=87;break}else if((v|0)==84){g=c[Z>>2]|0;h=c[J>>2]|0;v=85;break}}else v=85;else v=83}else v=83;while(0);if((v|0)==83){c[$>>2]=0;v=85}if((v|0)==85){v=0;if(g>>>0>>0){g=c[$>>2]|0;if(g){c[fa>>2]=0;c[aa>>2]=0;c[ba>>2]=0;m=c[f>>2]|0;l=c[X>>2]>>m&65535;b[ca>>1]=l;m=c[W>>2]>>m&65535;b[da>>1]=m;while(1){p=g+4|0;n=g;g=c[p>>2]|0;k=c[n+20>>2]|0;h=k+65535+(c[n+16>>2]|0)|0;j=h&65535;if((m<<16>>16|0)>(k<<16>>16|0)){o=k&65535;b[da>>1]=o}else o=m;if((l<<16>>16|0)<(h<<16>>16|0))b[ca>>1]=j;else j=l;c[n>>2]=0;k=c[fa>>2]|0;f:do if(!k){h=fa;k=0}else{m=fa;while(1){h=k+4|0;if((c[k>>2]|0)>0){h=m;break f}k=c[h>>2]|0;if(!k){k=0;break}else m=h}}while(0);c[p>>2]=k;c[h>>2]=n;if(!g)break;else{m=o;l=j}}if(!(c[K>>2]|0)){v=102;break}$d[c[B>>2]&255](f,da,ca);j=c[fa>>2]|0;g=b[da>>1]|0;if(j){k=g&65535;h=j;do{c[h+24>>2]=(c[h+20>>2]|0)-k&65535;h=c[h+4>>2]|0}while((h|0)!=0)}h=c[K>>2]|0;g:do if((h|0)>0){if((c[(c[I>>2]|0)+(0-h<<2)>>2]|0)==(g<<16>>16|0)){h=h+-1|0;c[K>>2]=h;if((h|0)>0)q=0;else break}else q=0;while(1){if(j)do{p=j+4|0;n=j;j=c[p>>2]|0;t=n+24|0;u=c[t>>2]|0;c[t>>2]=u-q;do if((u|0)==(q|0)){k=fa;while(1){l=c[k>>2]|0;if(!l)break;m=l+4|0;if((l|0)==(n|0)){v=116;break}else k=m}if((v|0)==116){v=0;c[k>>2]=c[m>>2]}o=c[n>>2]|0;if(!(c[n+12>>2]&8)){k=c[ba>>2]|0;h:do if(!k){m=ba;k=0}else{l=ba;while(1){m=k+4|0;if((o|0)<(c[k>>2]|0)){m=l;break h}k=c[m>>2]|0;if(!k){k=0;break}else l=m}}while(0);c[p>>2]=k;c[m>>2]=n;break}else{k=c[aa>>2]|0;i:do if(!k){m=aa;k=0}else{l=aa;while(1){m=k+4|0;if((o|0)<(c[k>>2]|0)){m=l;break i}k=c[m>>2]|0;if(!k){k=0;break}else l=m}}while(0);c[p>>2]=k;c[m>>2]=n;break}}while(0)}while((j|0)!=0);j=c[aa>>2]|0;if(j){k=j;do{u=k+8|0;t=c[u>>2]|0;c[k>>2]=c[t>>2];c[u>>2]=t+(((c[k+12>>2]|0)>>>2&2)+-1<<2);u=k+16|0;c[u>>2]=(c[u>>2]|0)+-1;k=c[k+4>>2]|0}while((k|0)!=0);k=j+4|0;m=c[k>>2]|0;if(m){l=aa;do{if((c[j>>2]|0)>(c[m>>2]|0)){c[l>>2]=m;l=m+4|0;c[k>>2]=c[l>>2];c[l>>2]=j;j=c[aa>>2]|0;l=aa}else{j=m;l=k}k=j+4|0;m=c[k>>2]|0}while((m|0)!=0)}}j=c[ba>>2]|0;if(j){k=j;do{u=k+8|0;t=c[u>>2]|0;c[k>>2]=c[t>>2];c[u>>2]=t+(((c[k+12>>2]|0)>>>2&2)+-1<<2);u=k+16|0;c[u>>2]=(c[u>>2]|0)+-1;k=c[k+4>>2]|0}while((k|0)!=0);m=j+4|0;n=c[m>>2]|0;if(!n)k=j;else{k=j;l=j;j=ba;do{if((c[l>>2]|0)>(c[n>>2]|0)){c[j>>2]=n;k=n+4|0;c[m>>2]=c[k>>2];c[k>>2]=l;l=c[ba>>2]|0;k=l;j=ba}else{l=n;j=m}m=l+4|0;n=c[m>>2]|0}while((n|0)!=0)}}else k=0;c[K>>2]=h+-1;t=c[(c[I>>2]|0)+(0-h<<2)>>2]<<16>>16;u=t-(g&65535)|0;j:do if((g<<16>>16|0)<(t|0))k:while(1){s=c[aa>>2]|0;r=(s|0)==0;do if(!r){q=s;j=ba;h=0;while(1){p=c[j>>2]|0;l=c[q>>2]|0;m=c[p>>2]|0;o=(l|0)>(m|0);j=o?m:l;m=o?l:m;l=c[V>>2]|0;o=0-l|0;n=j&o;o=l+-1+m&o;do if((m-j|0)>(l|0)|(n|0)==(j|0)|(o|0)==(m|0))v=145;else{if(!((n|0)>(o|0)|(o|0)==(n+l|0))){v=145;break}if((c[q+12>>2]&7|0)==2)break;c[q>>2]=j;c[p>>2]=m;c[q+24>>2]=1;h=h+1<<16>>16}while(0);if((v|0)==145){v=0;Rd[c[E>>2]&31](f,g,j,m,q,p)}q=c[q+4>>2]|0;if(!q)break;else j=p+4|0}if(h<<16>>16<1)break;else{m=s;h=ba}while(1){j=c[h>>2]|0;h=m+24|0;if(c[h>>2]|0){c[h>>2]=0;Rd[c[D>>2]&31](f,g,c[m>>2]|0,c[j>>2]|0,m,j)}m=c[m+4>>2]|0;if(!m)break;else h=j+4|0}}while(0);Id[c[C>>2]&511](f);g=g+1<<16>>16;if((g<<16>>16|0)>=(t|0))break j;do if(r)h=k;else{h=s;do{r=h+8|0;q=c[r>>2]|0;c[h>>2]=c[q>>2];c[r>>2]=q+(((c[h+12>>2]|0)>>>2&2)+-1<<2);r=h+16|0;c[r>>2]=(c[r>>2]|0)+-1;h=c[h+4>>2]|0}while((h|0)!=0);h=s+4|0;j=c[h>>2]|0;if(!j){h=k;break}else{k=s;m=h;h=aa}do{if((c[k>>2]|0)>(c[j>>2]|0)){c[h>>2]=j;h=j+4|0;c[m>>2]=c[h>>2];c[h>>2]=k;k=c[aa>>2]|0;h=aa}else{k=j;h=m}m=k+4|0;j=c[m>>2]|0}while((j|0)!=0);h=c[ba>>2]|0}while(0);if(!h){k=0;continue}else k=h;do{s=k+8|0;r=c[s>>2]|0;c[k>>2]=c[r>>2];c[s>>2]=r+(((c[k+12>>2]|0)>>>2&2)+-1<<2);s=k+16|0;c[s>>2]=(c[s>>2]|0)+-1;k=c[k+4>>2]|0}while((k|0)!=0);j=h+4|0;m=c[j>>2]|0;if(!m){k=h;continue}else{k=h;l=h;h=ba}while(1){if((c[l>>2]|0)>(c[m>>2]|0)){c[h>>2]=m;k=m+4|0;c[j>>2]=c[k>>2];c[k>>2]=l;l=c[ba>>2]|0;k=l;h=ba}else{l=m;h=j}j=l+4|0;m=c[j>>2]|0;if(!m)continue k}}while(0);h=c[aa>>2]|0;if(h)do{l=h;h=c[h+4>>2]|0;l:do if(!(c[l+16>>2]|0)){k=aa;while(1){m=c[k>>2]|0;if(!m)break l;j=m+4|0;if((m|0)==(l|0))break;else k=j}c[k>>2]=c[j>>2]}while(0)}while((h|0)!=0);h=c[ba>>2]|0;if(h)do{l=h;h=c[h+4>>2]|0;m:do if(!(c[l+16>>2]|0)){k=ba;while(1){m=c[k>>2]|0;if(!m)break m;j=m+4|0;if((m|0)==(l|0))break;else k=j}c[k>>2]=c[j>>2]}while(0)}while((h|0)!=0);h=c[K>>2]|0;if((h|0)<=0)break g;j=c[fa>>2]|0;q=u<<16>>16}}while(0);if(g<<16>>16<=(b[ca>>1]|0))do{Id[c[C>>2]&511](f);g=g+1<<16>>16}while(g<<16>>16<=(b[ca>>1]|0))}g=(c[F>>2]|0)+-1|0}else v=86}if((v|0)==86)if((c[_>>2]|0)==98)v=87;else{g=1;v=180;break}if((v|0)==87){c[_>>2]=0;g=c[F>>2]|0;h=b[f+(g<<2)+962>>1]|0;j=b[f+(g<<2)+960>>1]|0;k=((h<<16>>16)+j|0)/2|0;if((g|0)>6){v=89;break}l=k<<16>>16;if((l|0)<(j|0)){v=89;break}b[f+(g+1<<2)+960>>1]=k;b[f+((c[F>>2]|0)+1<<2)+962>>1]=h;b[f+(c[F>>2]<<2)+962>>1]=l+65535;g=(c[F>>2]|0)+1|0}c[F>>2]=g;if((g|0)<=-1){g=0;v=180;break}}if((v|0)==31){c[_>>2]=20;ba=1;i=ga;return ba|0}else if((v|0)==42){c[_>>2]=99;ba=1;i=ga;return ba|0}else if((v|0)==89){c[F>>2]=0;c[_>>2]=20;ba=20;i=ga;return ba|0}else if((v|0)==102){c[_>>2]=20;ba=20;i=ga;return ba|0}else if((v|0)==180){i=ga;return g|0}return 0}function pt(a,b,c){a=a|0;b=b|0;c=c|0;return}function qt(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0;k=i;h=c[b+4>>2]|0;if((g-f|0)>=(h|0)){i=k;return}j=0-h|0;h=f+-1+h&j;if((h|0)!=(j&g|0)){i=k;return}g=e<<16>>16;h=h>>c[b>>2];if((h|0)<=-1){i=k;return}j=c[b+104>>2]|0;if((h|0)>=(j|0)){i=k;return}f=c[b+112>>2]|0;h=(g>>3)-(ea(f,h)|0)|0;if((f|0)>0)h=h+(ea(f,j+-1|0)|0)|0;b=(c[b+60>>2]|0)+h|0;a[b>>0]=d[b>>0]|0|128>>>(g&7);i=k;return}function rt(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;k=c[b+4>>2]|0;l=f+-1|0;m=0-k|0;q=l+k&m;p=m&g;if((q|0)>(p|0)){o=c[h+12>>2]|0;n=o&7;if((q|0)!=(p+k|0)){i=r;return}if((n|0)==4)k=(c[b+8>>2]|0)+((l+g|0)/2|0)&m;else if(!n)k=p;else if((n|0)==5|(n|0)==1){if((c[h+28>>2]|0)==(j|0)?(c[h+16>>2]|0)<1:0){if(!(o&16)){i=r;return}if((g-f|0)<(c[b+8>>2]|0)){i=r;return}}if((c[j+28>>2]|0)==(h|0)?(c[h+20>>2]|0)==(e<<16>>16|0):0){if(!(o&32)){i=r;return}if((g-f|0)<(c[b+8>>2]|0)){i=r;return}}if((n|0)==1)k=p;else k=(c[b+8>>2]|0)+((l+g|0)/2|0)&m}else{i=r;return}g=c[b>>2]|0;if((k|0)<0)k=q;else k=(k>>g|0)<(c[b+104>>2]|0)?k:p;o=((k|0)==(q|0)?p:q)>>g;f=c[b+60>>2]|0;j=e<<16>>16;n=j>>3;j=128>>>(j&7);h=b+104|0;m=c[b+112>>2]|0;l=n-(ea(o,m)|0)|0;if((m|0)>0)l=(ea((c[h>>2]|0)+-1|0,m)|0)+l|0;q=f+l|0;if(((o|0)>-1?(o|0)<(c[h>>2]|0):0)?(j&(d[q>>0]|0)|0)!=0:0){i=r;return}else{l=g;o=f}}else{j=e<<16>>16;n=j>>3;j=128>>>(j&7);l=c[b>>2]|0;o=c[b+60>>2]|0;k=q}k=k>>l;if((k|0)<=-1){i=r;return}m=c[b+104>>2]|0;if((k|0)>=(m|0)){i=r;return}l=c[b+112>>2]|0;k=n-(ea(l,k)|0)|0;if((l|0)>0)k=k+(ea(l,m+-1|0)|0)|0;b=o+k|0;a[b>>0]=d[b>>0]|0|j;i=r;return}function st(a){a=a|0;return}function tt(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;f=c[a+16>>2]|0;x=(d[f+7>>0]|0)&254|(d[f+6>>0]|0)<<8;u=x>>>1;if(!u){y=0;i=z;return y|0}v=e<<24>>24==0;g=(c[b>>2]|0)+(v&1^1)|0;if(g>>>0>=65536){y=0;i=z;return y|0}w=f+14|0;s=f+(x+16)|0;r=x|1;o=x<<1;p=o|1;t=u+-1|0;q=o|2;while(1){n=0;f=w;h=s;while(1){l=(d[f>>0]|0)<<8|(d[f+1>>0]|0);k=(d[h>>0]|0)<<8|(d[h+1>>0]|0);if(!(g>>>0>>0|g>>>0>l>>>0)){f=((d[h+x>>0]|0)<<8|(d[h+r>>0]|0))<<16>>16;m=h+o|0;j=(d[m>>0]|0)<<8|(d[h+p>>0]|0);if(n>>>0>=t>>>0&(k|0)==65535&(l|0)==65535){l=c[a>>2]|0;if(!j){y=12;break}l=(h+(q+j)|0)>>>0>((c[l+496>>2]|0)+(c[l+500>>2]|0)|0)>>>0;f=l?1:f;j=l?0:j}if((j|0)==65535)f=m;else if(!j){y=12;break}else{y=10;break}}else f=f+2|0;h=h+2|0;n=n+1|0;if(n>>>0>=u>>>0){f=0;break}}if((y|0)==10){y=0;m=(g-k<<1)+o+j|0;h=(d[h+m>>0]|0)<<8|(d[h+(m+1)>>0]|0);if(!h)f=0;else f=h+f&65535}else if((y|0)==12){y=0;f=f+g&65535}if(v|(f|0)!=0)break;g=g+1|0;if(g>>>0>=65536){f=0;y=18;break}}if((y|0)==18){i=z;return f|0}if(!(e<<24>>24!=0&(f|0)!=0)){y=f;i=z;return y|0}c[b>>2]=g;y=f;i=z;return y|0}function ut(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;y=c[a+16>>2]|0;x=(d[y+7>>0]|0)&254|(d[y+6>>0]|0)<<8;if(!x){b=0;i=B;return b|0}A=x>>>1;z=e<<24>>24!=0;f=(c[b>>2]|0)+(z&1)|0;w=x+2|0;e=65535;j=A;g=A;l=0;a:while(1){while(1){if(l>>>0>=j>>>0){h=e;e=0;break a}g=(j+l|0)>>>1;h=g<<1;e=h+14|0;h=(d[y+e>>0]|0)<<8|(d[y+(h+15)>>0]|0);e=e+w|0;k=(d[y+e>>0]|0)<<8|(d[y+(e|1)>>0]|0);if(f>>>0>=k>>>0)break;else{e=h;j=g}}l=g+1|0;if(f>>>0>h>>>0)e=h;else{v=g;n=h;u=l;m=7;break}}do if((m|0)==7){e=e+x|0;s=((d[y+e>>0]|0)<<8|(d[y+(e|1)>>0]|0))<<16>>16;e=e+x|0;h=y+e|0;t=(d[h>>0]|0)<<8|(d[y+(e|1)>>0]|0);if(v>>>0>=(A+-1|0)>>>0&(k|0)==65535&(n|0)==65535){g=c[a>>2]|0;if(!t){l=s;j=0}else{j=(y+(e+2+t)|0)>>>0>((c[g+496>>2]|0)+(c[g+500>>2]|0)|0)>>>0;l=j?1:s;j=j?0:t}}else{l=s;j=t}e=(j|0)==65535;if(!(c[a+20>>2]&2))if(e){h=n;e=0;g=v;break}else{g=v;e=k}else{g=e?u:v;b:do if(!v){p=n;o=0;e=k}else{q=n;r=v;e=k;while(1){o=r;r=r+-1|0;p=r<<1;m=p+14|0;p=(d[y+m>>0]|0)<<8|(d[y+(p+15)>>0]|0);if(f>>>0>p>>>0){p=q;break b}j=m+w|0;e=(d[y+j>>0]|0)<<8|(d[y+(j|1)>>0]|0);j=j+x|0;l=((d[y+j>>0]|0)<<8|(d[y+(j|1)>>0]|0))<<16>>16;j=j+x|0;h=y+j|0;j=(d[h>>0]|0)<<8|(d[y+(j|1)>>0]|0);g=(j|0)==65535?g:r;if(!r){o=0;break}else q=p}}while(0);if((g|0)==(u|0)){m=(o|0)==(v|0);h=m?p:n;if(u>>>0>>0){p=m?l:s;n=h;q=u;g=v;j=m?j:t;o=m?e:k}else{e=0;g=v;break}while(1){l=q<<1;k=l+14|0;m=k+w|0;h=y+m|0;e=(d[h>>0]|0)<<8|(d[y+(m|1)>>0]|0);if(f>>>0>>0){k=p;l=q;e=o;break}n=(d[y+k>>0]|0)<<8|(d[y+(l+15)>>0]|0);j=m+x|0;k=((d[y+j>>0]|0)<<8|(d[y+(j|1)>>0]|0))<<16>>16;j=j+x|0;h=y+j|0;j=(d[h>>0]|0)<<8|(d[y+(j|1)>>0]|0);g=(j|0)==65535?g:q;l=q+1|0;if(l>>>0>>0){p=k;q=l;o=e}else break}l=l+-1|0;if((g|0)==(v|0)){h=n;e=0;g=l;break}}else{k=l;n=p;l=o}if((g|0)==(l|0))l=k;else{n=g<<1;v=n+14|0;e=v+w|0;l=e+x|0;j=l+x|0;h=y+j|0;l=((d[y+l>>0]|0)<<8|(d[y+(l|1)>>0]|0))<<16>>16;n=(d[y+v>>0]|0)<<8|(d[y+(n+15)>>0]|0);j=(d[h>>0]|0)<<8|(d[y+(j|1)>>0]|0);e=(d[y+e>>0]|0)<<8|(d[y+(e|1)>>0]|0)}}if(!j){h=n;e=l+f&65535;break}e=(f-e<<1)+j|0;e=(d[h+e>>0]|0)<<8|(d[h+(e+1)>>0]|0);if(!e){h=n;e=0}else{h=n;e=e+l&65535}}while(0);if(!z){b=e;i=B;return b|0}if(f>>>0>h>>>0){g=g+1|0;if((g|0)==(A|0)){b=0;i=B;return b|0}}if(Su(a,g)|0){if(!e){b=0;i=B;return b|0}c[b>>2]=f;b=e;i=B;return b|0}g=a+24|0;c[g>>2]=f;if(!e){c[g>>2]=f;vt(a);e=c[a+28>>2]|0}else c[a+28>>2]=e;if(!e){b=0;i=B;return b|0}c[b>>2]=c[g>>2];b=e;i=B;return b|0}function vt(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;q=a+24|0;b=c[q>>2]|0;a:do if(b>>>0<=65534){g=b+1|0;m=a+40|0;k=c[m>>2]|0;n=a+52|0;o=a+44|0;p=a+48|0;l=a+36|0;h=k;g=g>>>0>>0?k:g;b:while(1){f=c[n>>2]|0;j=c[o>>2]|0;k=c[p>>2]|0;c:do if(g>>>0>j>>>0)b=g;else{if(!f){b=g;while(1){f=b+k&65535;if(f){e=f;f=11;break b}b=b+1|0;if(b>>>0>j>>>0)break c}}b=g;g=f+(g-h<<1)|0;do{f=(d[g>>0]|0)<<8|(d[g+1>>0]|0);g=g+2|0;if((f|0)!=0?(e=f+k&65535,(e|0)!=0):0){f=8;break b}b=b+1|0}while(b>>>0<=j>>>0)}while(0);if((Su(a,(c[l>>2]|0)+1|0)|0)<0)break a;g=c[m>>2]|0;h=g;g=b>>>0>>0?g:b}if((f|0)==8){c[q>>2]=b;c[a+28>>2]=e;i=r;return}else if((f|0)==11){c[q>>2]=b;c[a+28>>2]=e;i=r;return}}while(0);c[q>>2]=-1;c[a+28>>2]=0;i=r;return}function wt(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;m=c[b+16>>2]|0;p=d[m+13>>0]<<16|d[m+12>>0]<<24|d[m+14>>0]<<8|d[m+15>>0];if(!p){e=0;i=r;return e|0}n=f<<24>>24!=0;q=(c[e>>2]|0)+(n&1)|0;l=p;f=0;a:while(1){while(1){g=(f+l|0)>>>1;h=g*12|0;k=d[m+(h+17)>>0]<<16|d[m+(h+16)>>0]<<24|d[m+(h+18)>>0]<<8|d[m+(h+19)>>0];j=d[m+(h+21)>>0]<<16|d[m+(h+20)>>0]<<24|d[m+(h+22)>>0]<<8|d[m+(h+23)>>0];if(q>>>0>>0)break;f=g+1|0;if(q>>>0<=j>>>0){f=k;o=8;break a}if(f>>>0>=l>>>0){f=0;break a}}if(f>>>0>>0)l=g;else{f=0;break}}if((o|0)==8)f=q-f+(d[m+(h+25)>>0]<<16|d[m+(h+24)>>0]<<24|d[m+(h+26)>>0]<<8|d[m+(h+27)>>0])|0;if(!n){e=f;i=r;return e|0}if(q>>>0>j>>>0){g=g+1|0;if((g|0)==(p|0)){e=0;i=r;return e|0}}h=b+24|0;a[h>>0]=1;j=b+28|0;c[j>>2]=q;c[b+36>>2]=g;do if(!f){xt(b);if(!(a[h>>0]|0)){e=0;i=r;return e|0}else{f=c[b+32>>2]|0;break}}else c[b+32>>2]=f;while(0);if(!f){e=0;i=r;return e|0}c[e>>2]=c[j>>2];e=f;i=r;return e|0}function xt(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;o=b+28|0;e=c[o>>2]|0;a:do if((e|0)!=-1?(p=b+36|0,f=c[p>>2]|0,n=c[b+40>>2]|0,f>>>0>>0):0){m=c[b+16>>2]|0;e=e+1|0;b:while(1){l=f*12|0;h=(d[m+(l+17)>>0]|0)<<16|(d[m+(l+16)>>0]|0)<<24|(d[m+(l+18)>>0]|0)<<8|(d[m+(l+19)>>0]|0);k=(d[m+(l+21)>>0]|0)<<16|(d[m+(l+20)>>0]|0)<<24|(d[m+(l+22)>>0]|0)<<8|(d[m+(l+23)>>0]|0);l=(d[m+(l+25)>>0]|0)<<16|(d[m+(l+24)>>0]|0)<<24|(d[m+(l+26)>>0]|0)<<8|(d[m+(l+27)>>0]|0);e=e>>>0>>0?h:e;if(e>>>0<=k>>>0){g=e;while(1){j=g+l|0;e=g+1|0;if((j|0)!=(h|0)){e=f;break b}if(e>>>0>k>>>0)break;else g=e}}f=f+1|0;if(f>>>0>=n>>>0)break a}c[o>>2]=g;c[b+32>>2]=j-h;c[p>>2]=e;i=q;return}while(0);a[b+24>>0]=0;i=q;return}function yt(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;l=c[b+16>>2]|0;o=d[l+13>>0]<<16|d[l+12>>0]<<24|d[l+14>>0]<<8|d[l+15>>0];if(!o){e=0;i=q;return e|0}m=f<<24>>24!=0;p=(c[e>>2]|0)+(m&1)|0;k=o;f=0;a:while(1){while(1){g=(f+k|0)>>>1;h=g*12|0;j=d[l+(h+21)>>0]<<16|d[l+(h+20)>>0]<<24|d[l+(h+22)>>0]<<8|d[l+(h+23)>>0];if(p>>>0<(d[l+(h+17)>>0]<<16|d[l+(h+16)>>0]<<24|d[l+(h+18)>>0]<<8|d[l+(h+19)>>0])>>>0)break;f=g+1|0;if(p>>>0<=j>>>0){f=j;n=8;break a}if(f>>>0>=k>>>0){f=0;break a}}if(f>>>0>>0)k=g;else{f=0;break}}if((n|0)==8){j=f;f=d[l+(h+25)>>0]<<16|d[l+(h+24)>>0]<<24|d[l+(h+26)>>0]<<8|d[l+(h+27)>>0]}if(!m){e=f;i=q;return e|0}if(p>>>0>j>>>0){g=g+1|0;if((g|0)==(o|0)){e=0;i=q;return e|0}}h=b+24|0;a[h>>0]=1;j=b+28|0;c[j>>2]=p;c[b+36>>2]=g;do if(!f){zt(b);if(!(a[h>>0]|0)){e=0;i=q;return e|0}else{f=c[b+32>>2]|0;break}}else c[b+32>>2]=f;while(0);if(!f){e=0;i=q;return e|0}c[e>>2]=c[j>>2];e=f;i=q;return e|0}function zt(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;l=b+28|0;e=c[l>>2]|0;a:do if((e|0)!=-1?(m=b+36|0,f=c[m>>2]|0,k=c[b+40>>2]|0,f>>>0>>0):0){j=c[b+16>>2]|0;g=e+1|0;h=f;while(1){o=h*12|0;e=(d[j+(o+17)>>0]|0)<<16|(d[j+(o+16)>>0]|0)<<24|(d[j+(o+18)>>0]|0)<<8|(d[j+(o+19)>>0]|0);f=(d[j+(o+25)>>0]|0)<<16|(d[j+(o+24)>>0]|0)<<24|(d[j+(o+26)>>0]|0)<<8|(d[j+(o+27)>>0]|0);g=g>>>0>>0?e:g;e=h;h=h+1|0;if(!((f|0)==0?1:g>>>0>((d[j+(o+21)>>0]|0)<<16|(d[j+(o+20)>>0]|0)<<24|(d[j+(o+22)>>0]|0)<<8|(d[j+(o+23)>>0]|0))>>>0))break;if(h>>>0>=k>>>0)break a}c[l>>2]=g;c[b+32>>2]=f;c[m>>2]=e;i=n;return}while(0);a[b+24>>0]=0;i=n;return}function At(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;l=Tu(e)|0;g=a[e>>0]|0;h=a[e+1>>0]|0;j=a[e+2>>0]|0;k=a[e+3>>0]|0;if(Uu(b,l+1|0,f)|0){l=0;i=n;return l|0}g=(h&255)<<16|(g&255)<<24|(j&255)<<8|k&255;m=c[b+32>>2]|0;if(!g)g=m;else{l=g;f=e;g=m;do{b=f;f=f+4|0;k=d[b+7>>0]|0;h=k+1|0;j=g;b=(d[b+5>>0]|0)<<8|(d[f>>0]|0)<<16|(d[b+6>>0]|0);while(1){c[j>>2]=b;h=h+-1|0;if(!h)break;else{j=j+4|0;b=b+1|0}}g=g+(k+1<<2)|0;l=l+-1|0}while((l|0)!=0)}c[g>>2]=0;l=m;i=n;return l|0}function Bt(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;d=c[(c[a>>2]|0)+4>>2]|0;a=c[(c[b>>2]|0)+4>>2]|0;if(d>>>0>a>>>0){b=1;i=e;return b|0}b=(d>>>0>>0)<<31>>31;i=e;return b|0}function Ct(a){a=a|0;var b=0;b=i;eh(c[a+28>>2]|0,c[a>>2]|0);c[a+4>>2]=0;c[a>>2]=0;c[a+24>>2]=0;i=b;return}function Dt(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;t=u;s=c[a+100>>2]|0;c[t>>2]=0;q=a+356|0;n=b[a+340>>1]|0;if(!(n<<16>>16)){s=0;c[f>>2]=s;f=c[t>>2]|0;i=u;return f|0}h=-1;g=-1;j=-1;m=-1;o=0;k=0;p=c[q>>2]|0;while(1){do if((b[p+6>>1]|0)==d<<16>>16?(b[p+8>>1]|0)!=0:0){l=e[p>>1]|0;if((l|0)==3){if((m|0)!=-1?(b[p+4>>1]&1023)!=9:0)break;l=e[p+2>>1]|0;if(!((l|0)==10|(l|0)==1|(l|0)==0))break;m=o;k=(b[p+4>>1]&1023)==9&1;break}else if((l|0)==1){if(!(b[p+4>>1]|0)){h=o;break}g=(b[p+2>>1]|0)==0?o:g;break}else if((l|0)==2|(l|0)==0){j=o;break}else break}while(0);o=o+1|0;if((o&65535)>=(n&65535))break;else p=p+20|0}g=(h|0)>-1?h:g;if((m|0)>-1?(g|0)<0|k<<24>>24!=0:0){g=c[q>>2]|0;q=e[g+(m*20|0)+2>>1]|0;if((q|0)==10|(q|0)==0|(q|0)==1){l=202;k=g+(m*20|0)|0}else{s=0;c[f>>2]=s;f=c[t>>2]|0;i=u;return f|0}}else r=17;do if((r|0)==17){if((g|0)>-1){l=203;k=(c[q>>2]|0)+(g*20|0)|0;break}if((j|0)>-1){l=202;k=(c[q>>2]|0)+(j*20|0)|0;break}else{s=0;c[f>>2]=s;f=c[t>>2]|0;i=u;return f|0}}while(0);if(!k){s=0;c[f>>2]=s;f=c[t>>2]|0;i=u;return f|0}j=k+16|0;do if(!(c[j>>2]|0)){g=c[a+360>>2]|0;h=k+8|0;c[j>>2]=hh(s,1,0,e[h>>1]|0,0,t)|0;if(((c[t>>2]|0)==0?(a=Hh(g,c[k+12>>2]|0)|0,c[t>>2]=a,(a|0)==0):0)?(a=pi(g,c[j>>2]|0,e[h>>1]|0)|0,c[t>>2]=a,(a|0)==0):0)break;eh(s,c[j>>2]|0);c[j>>2]=0;b[h>>1]=0;s=0;c[f>>2]=s;f=c[t>>2]|0;i=u;return f|0}while(0);s=Wd[l&511](k,s)|0;c[f>>2]=s;f=c[t>>2]|0;i=u;return f|0}function Et(a){a=a|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+224|0;F=i;i=i+168|0;c[F>>2]=0;A=G+220|0;B=G+216|0;v=G+204|0;x=G+200|0;z=G+196|0;C=G+192|0;w=G+184|0;E=G+8|0;y=G;D=G+188|0;q=c[a+496>>2]|0;r=a+500|0;s=q+(c[r>>2]|0)|0;c[B>>2]=q;if(!(c[B>>2]|0)){i=G;return}if(((c[B>>2]|0)+4|0)>>>0>s>>>0){i=G;return}c[B>>2]=(c[B>>2]|0)+2;f=c[B>>2]|0;if(d[(c[B>>2]|0)+-1>>0]|0|(d[(c[B>>2]|0)+-2>>0]|0)<<8){c[B>>2]=f+-2;i=G;return}c[B>>2]=f+2;c[A>>2]=d[(c[B>>2]|0)+-1>>0]|0|(d[(c[B>>2]|0)+-2>>0]|0)<<8;if(!(c[A>>2]|0)){i=G;return}j=v+8|0;k=v+10|0;l=v+4|0;m=a+264|0;n=E+172|0;o=E+16|0;p=E+12|0;while(1){if(((c[B>>2]|0)+8|0)>>>0>s>>>0){f=25;break}c[B>>2]=(c[B>>2]|0)+2;b[j>>1]=d[(c[B>>2]|0)+-1>>0]|0|(d[(c[B>>2]|0)+-2>>0]|0)<<8;c[B>>2]=(c[B>>2]|0)+2;b[k>>1]=d[(c[B>>2]|0)+-1>>0]|0|(d[(c[B>>2]|0)+-2>>0]|0)<<8;c[v>>2]=a;c[l>>2]=0;c[B>>2]=(c[B>>2]|0)+4;f=(d[(c[B>>2]|0)+-3>>0]|0)<<16|(d[(c[B>>2]|0)+-4>>0]|0)<<24|(d[(c[B>>2]|0)+-2>>0]|0)<<8|(d[(c[B>>2]|0)+-1>>0]|0);if((f|0)!=0?f>>>0<=((c[r>>2]|0)+-2|0)>>>0:0){c[x>>2]=q+f;c[z>>2]=d[(c[x>>2]|0)+1>>0]|0|(d[c[x>>2]>>0]|0)<<8;c[C>>2]=88488;a:do if(c[c[C>>2]>>2]|0){while(1){c[w>>2]=c[c[C>>2]>>2];if((c[(c[w>>2]|0)+40>>2]|0)==(c[z>>2]|0))break;c[C>>2]=(c[C>>2]|0)+4;if(!(c[c[C>>2]>>2]|0))break a}c[y>>2]=0;t=0;Ha(22,E|0,c[x>>2]|0,s|0,0);f=t;t=0;if((f|0)!=0&(u|0)!=0){g=Mga(c[f>>2]|0,F)|0;if(!g)Va(f|0,u|0);I=u}else g=-1;if((g|0)!=1){c[n>>2]=e[m>>1];Kga(o,1,F|0)|0;t=0;f=t;t=0;if((f|0)!=0&(u|0)!=0){g=Mga(c[f>>2]|0,F)|0;if(!g)Va(f|0,u|0);I=u}else g=-1;if((g|0)!=1)f=0;else f=I}else f=I;while(1){if(!f){t=0;f=ya(c[(c[w>>2]|0)+44>>2]|0,c[x>>2]|0,E|0)|0;g=t;t=0;if((g|0)!=0&(u|0)!=0){h=Mga(c[g>>2]|0,F)|0;if(!h)Va(g|0,u|0);I=u}else h=-1;if((h|0)==1){f=I;continue}c[y>>2]=f}if(c[p>>2]|0)break a;t=0;f=Ga(73,c[w>>2]|0,c[x>>2]|0,v|0,D|0)|0;g=t;t=0;if((g|0)!=0&(u|0)!=0){h=Mga(c[g>>2]|0,F)|0;if(!h)Va(g|0,u|0);I=u}else h=-1;if((h|0)==1)f=I;else break}if(!f)c[(c[D>>2]|0)+20>>2]=c[y>>2]}while(0)}c[A>>2]=(c[A>>2]|0)+-1;if(!(c[A>>2]|0)){f=25;break}}if((f|0)==25){i=G;return}}function Ft(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+16|0;G=I;x=c[f+40>>2]|0;n=c[f+32>>2]|0;if(!n){h=6;i=I;return h|0}z=c[f+36>>2]|0;r=c[f+28>>2]|0;s=z+r|0;q=s;while(1){p=d[q>>0]<<8|d[q+1>>0];if(p>>>0<=g>>>0?(d[q+2>>0]<<8|d[q+3>>0])>>>0>=g>>>0:0){o=q;t=p;break}n=n+-1|0;if(!n){y=6;B=55;break}else q=q+8|0}if((B|0)==55){i=I;return y|0}n=d[o+5>>0]<<16|d[o+4>>0]<<24|d[o+6>>0]<<8|d[o+7>>0];u=x;if(n>>>0>(u-s|0)>>>0){h=8;i=I;return h|0}s=n+r|0;n=s+8|0;p=z+n|0;if(p>>>0>x>>>0){h=6;i=I;return h|0}C=d[z+(s+2)>>0]<<8|d[z+(s+3)>>0];A=d[z+(s+5)>>0]<<16|d[z+(s+4)>>0]<<24|d[z+(s+6)>>0]<<8|d[z+(s+7)>>0];a:do switch(d[z+s>>0]<<8|d[z+(s+1)>>0]|0){case 19:case 5:{n=z+(s+24)|0;if(n>>>0>x>>>0){h=6;i=I;return h|0}r=d[z+(s+9)>>0]<<16|d[p>>0]<<24|d[z+(s+10)>>0]<<8|d[z+(s+11)>>0];p=c[f+12>>2]|0;o=z+(s+17)|0;if(o>>>0>x>>>0){h=6;i=I;return h|0}b[p>>1]=d[z+(s+12)>>0]|0;b[p+2>>1]=d[z+(s+13)>>0]|0;b[p+4>>1]=a[z+(s+14)>>0]|0;b[p+6>>1]=a[z+(s+15)>>0]|0;b[p+8>>1]=d[z+(s+16)>>0]|0;q=z+(s+20)|0;if(q>>>0>x>>>0){h=6;i=I;return h|0}b[p+10>>1]=a[o>>0]|0;b[p+12>>1]=a[z+(s+18)>>0]|0;b[p+14>>1]=d[z+(s+19)>>0]|0;a[f+16>>0]=1;p=d[z+(s+21)>>0]<<16|d[q>>0]<<24|d[z+(s+22)>>0]<<8|d[z+(s+23)>>0];if((p+-1|0)>>>0>1>>>0)o=0;else{h=6;i=I;return h|0}while(1){if((d[n>>0]<<8|d[n+1>>0]|0)==(g|0)){w=o;B=27;break}o=o+1|0;if(o>>>0>=p>>>0){y=6;B=55;break}else n=n+2|0}if((B|0)==27){m=ea(w,r)|0;l=m+r|0;break a}else if((B|0)==55){i=I;return y|0}break}case 2:{if((z+(s+20)|0)>>>0>x>>>0){h=6;i=I;return h|0}n=d[z+(s+9)>>0]<<16|d[p>>0]<<24|d[z+(s+10)>>0]<<8|d[z+(s+11)>>0];l=c[f+12>>2]|0;m=z+(s+17)|0;if(m>>>0>x>>>0){h=6;i=I;return h|0}else{b[l>>1]=d[z+(s+12)>>0]|0;b[l+2>>1]=d[z+(s+13)>>0]|0;b[l+4>>1]=a[z+(s+14)>>0]|0;b[l+6>>1]=a[z+(s+15)>>0]|0;b[l+8>>1]=d[z+(s+16)>>0]|0;b[l+10>>1]=a[m>>0]|0;b[l+12>>1]=a[z+(s+18)>>0]|0;b[l+14>>1]=d[z+(s+19)>>0]|0;a[f+16>>0]=1;m=ea(n,g-t|0)|0;l=m+n|0;break a}}case 3:{n=n+(g-t<<1)|0;if((z+(n+4)|0)>>>0>x>>>0){h=6;i=I;return h|0}m=d[z+n>>0]<<8|d[z+(n+1)>>0];l=d[z+(n+2)>>0]<<8|d[z+(n+3)>>0];if((m|0)==(l|0)){h=6;i=I;return h|0}break}case 1:{n=n+(g-t<<2)|0;if((z+(n+8)|0)>>>0>x>>>0){h=6;i=I;return h|0}m=d[z+(n+1)>>0]<<16|d[z+n>>0]<<24|d[z+(n+2)>>0]<<8|d[z+(n+3)>>0];l=d[z+(n+5)>>0]<<16|d[z+(n+4)>>0]<<24|d[z+(n+6)>>0]<<8|d[z+(n+7)>>0];if((m|0)==(l|0)){h=6;i=I;return h|0}break}case 4:{n=z+(s+12)|0;if(n>>>0>x>>>0){h=6;i=I;return h|0}p=d[z+(s+9)>>0]<<16|d[p>>0]<<24|d[z+(s+10)>>0]<<8|d[z+(s+11)>>0];if((p+-1|0)>>>0<((u-n>>2)+-1|0)>>>0)o=0;else{h=6;i=I;return h|0}while(1){if((d[n>>0]<<8|d[n+1>>0]|0)==(g|0)){v=n;B=20;break}o=o+1|0;if(o>>>0>=p>>>0){y=6;B=55;break}else n=n+4|0}if((B|0)==20){l=d[v+6>>0]<<8|d[v+7>>0];m=d[v+2>>0]<<8|d[v+3>>0];break a}else if((B|0)==55){i=I;return y|0}break}default:{h=6;i=I;return h|0}}while(0);if(l>>>0>>0){h=6;i=I;return h|0}p=l-m|0;r=c[f+4>>2]|0;if((l+A|0)>>>0>(c[f+24>>2]|0)>>>0){h=6;i=I;return h|0}l=Hh(r,m+A+(c[f+20>>2]|0)|0)|0;if(l){h=l;i=I;return h|0}l=xi(r,p,G)|0;if(l){h=l;i=I;return h|0}m=c[G>>2]|0;o=m+p|0;switch(C|0){case 17:case 8:case 2:case 1:{n=c[f+12>>2]|0;if((p|0)<5)E=6;else{b[n>>1]=d[m>>0]|0;b[n+2>>1]=d[m+1>>0]|0;b[n+4>>1]=a[m+2>>0]|0;b[n+6>>1]=a[m+3>>0]|0;b[n+8>>1]=d[m+4>>0]|0;a[f+16>>0]=1;D=m+5|0;B=38}break}case 18:case 9:case 7:case 6:{n=c[f+12>>2]|0;l=m+5|0;if((p|0)>=5?(b[n>>1]=d[m>>0]|0,b[n+2>>1]=d[m+1>>0]|0,b[n+4>>1]=a[m+2>>0]|0,b[n+6>>1]=a[m+3>>0]|0,b[n+8>>1]=d[m+4>>0]|0,(p|0)>=8):0){b[n+10>>1]=a[l>>0]|0;b[n+12>>1]=a[m+6>>0]|0;b[n+14>>1]=d[m+7>>0]|0;a[f+16>>0]=1;D=m+8|0;B=38}else E=6;break}default:{D=m;B=38}}b:do if((B|0)==38){switch(C|0){case 9:{k=D;B=41;break}case 7:case 5:case 2:{F=D;H=50;break}case 8:{k=D+1|0;if(k>>>0>o>>>0){E=0;break b}else B=41;break}case 19:case 18:case 17:case 6:case 1:{F=D;H=49;break}default:{E=8;break b}}if((B|0)==41){F=k;H=51}n=f+17|0;if(!(a[n>>0]|0)){l=c[f+8>>2]|0;if(!(a[f+16>>0]|0)){E=6;break}m=c[f+12>>2]|0;k=e[m+2>>1]|0;m=e[m>>1]|0;c[l+4>>2]=k;c[l>>2]=m;switch(d[f+18>>0]|0){case 2:{a[l+18>>0]=3;k=(k+3|0)>>>2;c[l+8>>2]=k;b[l+16>>1]=4;break}case 4:{a[l+18>>0]=4;k=(k+1|0)>>>1;c[l+8>>2]=k;b[l+16>>1]=16;break}case 8:{a[l+18>>0]=2;c[l+8>>2]=k;b[l+16>>1]=256;break}case 32:{a[l+18>>0]=7;k=k<<2;c[l+8>>2]=k;b[l+16>>1]=256;break}case 1:{a[l+18>>0]=1;k=(k+7|0)>>>3;c[l+8>>2]=k;b[l+16>>1]=2;break}default:{E=3;break b}}k=ea(k,m)|0;if(k){k=wh(c[(c[f>>2]|0)+84>>2]|0,k)|0;if(k){E=k;break}a[n>>0]=1}}E=Xd[H&127](f,F,o,h,j)|0}while(0);zi(r,G);h=E;i=I;return h|0}function Gt(d){d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;l=t+8|0;s=t;g=t+4|0;r=c[d+104>>2]|0;f=ce[c[d+504>>2]&255](d,1886352244,r,g)|0;if(f){d=f;i=t;return d|0}m=ui(r)|0;m=(c[g>>2]|0)+m|0;f=c[d+464>>2]|0;g=qi(r,32)|0;if(g){d=g;i=t;return d|0}a:do if((f|0)==163840){h=c[r+28>>2]|0;j=ri(r,l)|0;k=j&65535;f=c[l>>2]|0;if(!f){if((j&65535)>258?1:(j&65535)>(e[d+264>>1]|0)){c[l>>2]=3;f=3;break}g=hh(h,1,0,k,0,l)|0;b:do if((c[l>>2]|0)==0?(s=pi(r,g,k)|0,c[l>>2]=s,(s|0)==0):0){c:do if(j<<16>>16){f=0;while(1){s=(a[g+f>>0]|0)+f|0;f=f+1|0;if((s|0)<0|(s|0)>(k|0))break;if((f|0)>=(k|0))break c}c[l>>2]=3;break b}while(0);b[d+612>>1]=j;c[d+616>>2]=g;f=0;break a}while(0);eh(h,g);f=c[l>>2]|0}}else if((f|0)==131072){p=c[r+28>>2]|0;n=ri(r,s)|0;h=n&65535;f=c[s>>2]|0;if(!f){if((n&65535)>(e[d+264>>1]|0)){c[s>>2]=3;f=3;break}o=hh(p,2,0,h,0,s)|0;d:do if((c[s>>2]|0)==0?(k=yi(r,h<<1)|0,c[s>>2]=k,(k|0)==0):0){if(!(n<<16>>16)){Bi(r);l=0}else{f=0;do{b[o+(f<<1)>>1]=Di(r)|0;f=f+1|0}while((f|0)<(h|0));Bi(r);g=0;f=0;do{j=b[o+(g<<1)>>1]|0;if((j&65535)>257){k=(j&65535)+-257|0;f=(k|0)>(f&65535|0)?k&65535:f}g=g+1|0}while((g|0)<(h|0));l=f}f=hh(p,4,0,l&65535,0,s)|0;if(!(c[s>>2]|0)){e:do if(l<<16>>16){g=0;while(1){if((ui(r)|0)>=(m|0)){q=19;break}j=(Hi(r,s)|0)&255;if(c[s>>2]|0){g=0;break}if(!((m|0)>=(j|0)?(ui(r)|0)<=(m-j|0):0))if((m-(ui(r)|0)|0)<0)j=0;else j=m-(ui(r)|0)|0;h=hh(p,1,0,j+1|0,0,s)|0;k=f+(g<<2)|0;c[k>>2]=h;if(c[s>>2]|0){g=0;break}h=pi(r,h,j)|0;c[s>>2]=h;if(h){g=0;break}a[(c[k>>2]|0)+j>>0]=0;g=g+1|0;if((g&65535)>=(l&65535))break e}f:do if((q|0)==19){j=g&65535;if((j&65535)>=(l&65535))break e;h=g&65535;while(1){g=hh(p,1,0,1,0,s)|0;c[f+(h<<2)>>2]=g;if(c[s>>2]|0){g=0;break f}a[g>>0]=0;j=j+1<<16>>16;if((j&65535)>=(l&65535))break e;else h=h+1|0}}while(0);while(1){r=f+(g<<2)|0;eh(p,c[r>>2]|0);c[r>>2]=0;g=g+1|0;if((g&65535)<<16>>16==l<<16>>16)break d}}while(0);b[d+612>>1]=n;b[d+614>>1]=l;c[d+616>>2]=o;c[d+620>>2]=f;f=0;break a}}else f=0;while(0);eh(p,f);eh(p,o);f=c[s>>2]|0}}else f=3;while(0);a[d+608>>0]=1;d=f;i=t;return d|0}function Ht(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;l=c[g+1012>>2]|0;h=c[g+1008>>2]|0;j=ea(h,d)|0;if((h|0)>-1)d=ea((c[g+1e3>>2]|0)+-1|0,h)|0;else d=0;k=d-j|0;if((e|0)<=0){i=n;return}while(1){j=a[f+4>>0]|0;a:do if(j<<24>>24){o=b[f+2>>1]|0;g=o&65535;h=b[f>>1]|0;d=l+(k+h)|0;if((o&65535)>7){Cga(d|0,j|0,g|0)|0;break}switch(g|0){case 6:{m=9;break}case 4:{m=11;break}case 3:{m=12;break}case 7:{m=h+1|0;a[d>>0]=j;h=m;d=l+(k+m)|0;m=9;break}case 5:{m=10;break}case 1:break;case 2:{m=13;break}default:break a}if((m|0)==9){o=h+1|0;a[d>>0]=j;h=o;d=l+(k+o)|0;m=10}if((m|0)==10){o=h+1|0;a[d>>0]=j;h=o;d=l+(k+o)|0;m=11}if((m|0)==11){o=h+1|0;a[d>>0]=j;h=o;d=l+(k+o)|0;m=12}if((m|0)==12){o=h+1|0;a[d>>0]=j;h=o;d=l+(k+o)|0;m=13}if((m|0)==13){m=0;a[d>>0]=j;d=l+(k+(h+1))|0}a[d>>0]=j}while(0);e=e+-1|0;if((e|0)<=0)break;else f=f+6|0}i=n;return}function It(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;n=i;i=i+168|0;c[n>>2]=0;m=p;c[m>>2]=0;k=a+1256|0;Kga(k,1,n|0)|0;t=0;b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,n)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else b=0;a:while(1){if(b){o=16;break}t=0;b=qa(90,a+980|0,88888,a|0)|0;d=t;t=0;if((d|0)!=0&(u|0)!=0){e=Mga(c[d>>2]|0,n)|0;if(!e)Va(d|0,u|0);I=u}else e=-1;if((e|0)==1){b=I;continue}c[m>>2]=b;if(c[a+40>>2]|0){o=17;break}h=c[a+32>>2]|0;j=c[a+36>>2]|0;if(!(j|h)){o=17;break}g=c[a>>2]|0;d=c[a+24>>2]|0;g=(g|0)>(d|0)?d:g;d=(c[a+1420>>2]|0)+(c[a+4>>2]<<2)|0;b=c[d>>2]|0;b:do if(!b)b=0;else while(1){e=c[b>>2]|0;if((e|0)>(g|0))break b;d=b+12|0;if((e|0)==(g|0)){l=b;break a}b=c[d>>2]|0;if(!b){b=0;break}}while(0);e=a+52|0;f=c[e>>2]|0;if((f|0)<(c[a+48>>2]|0)){o=14;break}t=0;la(74,k|0,1);b=t;t=0;if((b|0)!=0&(u|0)!=0){d=Mga(c[b>>2]|0,n)|0;if(!d)Va(b|0,u|0);I=u}else d=-1;if((d|0)==1)b=I;else{o=13;break}}if((o|0)!=13)if((o|0)==14){o=c[a+44>>2]|0;c[e>>2]=f+1;l=o+(f<<4)|0;c[l>>2]=g;c[o+(f<<4)+8>>2]=0;c[o+(f<<4)+4>>2]=0;c[o+(f<<4)+12>>2]=b;c[d>>2]=l}else if((o|0)==16){c[m>>2]=64;o=c[m>>2]|0;i=p;return o|0}else if((o|0)==17){o=c[m>>2]|0;i=p;return o|0}o=l+8|0;c[o>>2]=(c[o>>2]|0)+h;o=l+4|0;c[o>>2]=(c[o>>2]|0)+j;o=c[m>>2]|0;i=p;return o|0}function Jt(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;j=j>>9;j=(j|0)<0?0-j|0:j;do if(c[f+996>>2]&2){j=j&511;if(j>>>0>256){r=512-j|0;break}else{r=(j|0)==256?255:j;break}}else r=(j|0)>255?255:j;while(0);p=(c[f+16>>2]|0)+h|0;o=(c[f+8>>2]|0)+g|0;o=(o|0)<32767?o:32767;if(!r){i=s;return}q=f+1232|0;j=c[q>>2]|0;m=f+1040|0;l=j+-1|0;n=(j|0)>0;h=c[f+1244>>2]|0;if(n&(h|0)==(p|0)){h=f+(l*6|0)+1042|0;g=e[h>>1]|0;if((g+(b[f+(l*6|0)+1040>>1]|0)|0)==(o|0)?(d[f+(l*6|0)+1044>>0]|0)==(r|0):0){b[h>>1]=g+k;i=s;return}else h=p}g=f+1244|0;if((h|0)!=(p|0)|(j|0)>31){l=c[f+1236>>2]|0;if((l|0)!=0&n)de[l&63](h,j,m,c[f+1240>>2]|0);c[q>>2]=0;c[g>>2]=p;j=0}b[f+(j*6|0)+1040>>1]=o;b[f+(j*6|0)+1042>>1]=k;a[f+(j*6|0)+1044>>0]=r;c[q>>2]=(c[q>>2]|0)+1;i=s;return}function Kt(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+80|0;F=G+64|0;m=G;r=G+16|0;p=e+76|0;E=c[d+8>>2]|0;q=(f|0)==3;z=(f|0)==4;C=e+72|0;if((c[C>>2]|0)!=(c[d+16>>2]|0)){c[F>>2]=6;g=c[F>>2]|0;i=G;return g|0}if((f|0)!=(h|0)){c[F>>2]=19;g=c[F>>2]|0;i=G;return g|0}B=e+108|0;if(!g)D=0;else{Bh(B,c[g>>2]|0,c[g+4>>2]|0);D=1}mi(B,m);f=c[m>>2]&-64;c[m>>2]=f;l=m+4|0;h=c[l>>2]&-64;c[l>>2]=h;n=m+8|0;k=(c[n>>2]|0)+63&-64;c[n>>2]=k;n=m+12|0;j=(c[n>>2]|0)+63&-64;c[n>>2]=j;do if((f|0)<0&(k|0)>(f+2147483647|0)){c[F>>2]=98;f=0}else{s=k-f>>6;if((h|0)<0&(j|0)>(h+2147483647|0)){c[F>>2]=98;f=0;break}t=j-h>>6;f=e+156|0;if(c[(c[f>>2]|0)+4>>2]&1){y=e+88|0;eh(E,c[y>>2]|0);c[y>>2]=0;y=(c[f>>2]|0)+4|0;c[y>>2]=c[y>>2]&-2}if(q){o=s*3|0;y=o+3&-4}else{y=s;o=s}if(z)v=t*3|0;else v=t;x=c[m>>2]|0;w=c[l>>2]|0;u=x>>6;n=c[n>>2]>>6;if((o|0)>32767|(v|0)>32767){c[F>>2]=98;f=0;break}a[e+94>>0]=2;b[e+92>>1]=256;c[e+80>>2]=o;c[p>>2]=v;c[e+84>>2]=y;Bh(B,0-x|0,0-w|0);m=e+88|0;c[m>>2]=ch(E,ea(v,y)|0,F)|0;if(!(c[F>>2]|0)){l=(c[f>>2]|0)+4|0;c[l>>2]=c[l>>2]|1;c[r>>2]=p;c[r+4>>2]=B;c[r+8>>2]=1;d=Wd[c[d+56>>2]&511](c[d+52>>2]|0,r)|0;c[F>>2]=d;if(!d){a:do if(!(q^1|(t|0)==0)){f=c[m>>2]|0;if(!s){f=t;while(1){f=f+-1|0;if(!f)break a}}else j=t;while(1){k=f+o|0;h=s;do{h=h+-1|0;r=a[f+h>>0]|0;d=k;k=k+-3|0;a[k>>0]=r;a[d+-2>>0]=r;a[d+-1>>0]=r}while((h|0)!=0);j=j+-1|0;if(!j)break;else f=f+y|0}}while(0);if(z?(A=c[m>>2]|0,(t|0)!=0):0){j=y<<1;k=y*3|0;l=t;h=A+(ea(v-t|0,y)|0)|0;f=A;while(1){Aga(f|0,h|0,y|0)|0;Aga(f+y|0,h|0,y|0)|0;Aga(f+j|0,h|0,y|0)|0;l=l+-1|0;if(!l)break;else{h=h+y|0;f=f+k|0}}}c[C>>2]=1651078259;c[e+100>>2]=u;c[e+104>>2]=n;c[F>>2]=0;f=0}else f=1}else f=0;Bh(B,x,w)}while(0);if(D<<24>>24)Bh(B,0-(c[g>>2]|0)|0,0-(c[g+4>>2]|0)|0);if(!(f<<24>>24)){g=c[F>>2]|0;i=G;return g|0}g=e+88|0;eh(E,c[g>>2]|0);c[g>>2]=0;g=(c[e+156>>2]|0)+4|0;c[g>>2]=c[g>>2]&-2;g=c[F>>2]|0;i=G;return g|0}function Lt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;T=i;N=a+72|0;n=c[N>>2]|0;k=n>>8;M=d>>8;O=a+68|0;g=c[O>>2]|0;n=g-n|0;P=M<<8;Q=d-P|0;R=a+64|0;m=c[R>>2]|0;s=b-m|0;g=d-g|0;h=(k|0)>(M|0);if(((h?M:k)|0)>=(c[a+20>>2]|0)){c[R>>2]=b;c[O>>2]=d;c[N>>2]=P;i=T;return}I=a+16|0;H=c[I>>2]|0;if(((h?k:M)|0)<(H|0)){c[R>>2]=b;c[O>>2]=d;c[N>>2]=P;i=T;return}if((k|0)==(M|0)){_u(a,k,m,n,b,Q);c[R>>2]=b;c[O>>2]=d;c[N>>2]=P;i=T;return}if((m|0)==(b|0)){B=b>>8;G=b-(B<<8)<<1;C=g>>31;F=C+256&-256;C=C|1;g=F-n|0;h=ea(G,g)|0;D=a+32|0;h=(c[D>>2]|0)+h|0;c[D>>2]=h;E=a+36|0;g=(c[E>>2]|0)+g|0;c[E>>2]=g;q=C+k|0;p=q-H|0;j=c[a+12>>2]|0;B=((j|0)<(B|0)?j:B)-(c[a+8>>2]|0)|0;B=(B|0)>-1?B:-1;j=c[a>>2]|0;if(!((B|0)==(j|0)?(p|0)==(c[a+4>>2]|0):0)){if(!((c[a+40>>2]|0)!=0|(g|h|0)==0)){n=c[a+24>>2]|0;n=(j|0)>(n|0)?n:j;k=(c[a+1420>>2]|0)+(c[a+4>>2]<<2)|0;j=c[k>>2]|0;a:do if(!j){j=0;S=13}else while(1){l=c[j>>2]|0;if((l|0)>(n|0)){S=13;break a}k=j+12|0;if((l|0)==(n|0)){o=j;break a}j=c[k>>2]|0;if(!j){j=0;S=13;break}}while(0);do if((S|0)==13){l=a+52|0;m=c[l>>2]|0;if((m|0)<(c[a+48>>2]|0)){L=c[a+44>>2]|0;c[l>>2]=m+1;o=L+(m<<4)|0;c[o>>2]=n;c[L+(m<<4)+8>>2]=0;c[L+(m<<4)+4>>2]=0;c[L+(m<<4)+12>>2]=j;c[k>>2]=o;break}else Va(a+1256|0,1)}while(0);L=o+8|0;c[L>>2]=(c[L>>2]|0)+h;L=o+4|0;c[L>>2]=(c[L>>2]|0)+g}c[D>>2]=0;c[E>>2]=0;c[a>>2]=B;c[a+4>>2]=p;h=0;g=0}A=c[a+28>>2]|0;if(p>>>0>>0)j=(B|0)>=(c[a+24>>2]|0);else j=1;m=j&1;r=a+40|0;c[r>>2]=m;s=(F<<1)+-256|0;t=ea(s,G)|0;do if((q|0)!=(M|0)){u=a+4|0;v=a+24|0;w=a+1420|0;x=a+52|0;y=a+48|0;z=a+44|0;o=p;n=p;l=q;while(1){h=h+t|0;g=g+s|0;l=l+C|0;L=o;o=l-H|0;if((o|0)!=(L|0)){if(!((m|0)!=0|(g|h|0)==0)){j=c[v>>2]|0;j=(B|0)>(j|0)?j:B;k=(c[w>>2]|0)+(n<<2)|0;m=c[k>>2]|0;b:do if(!m){m=0;S=28}else while(1){n=c[m>>2]|0;if((n|0)>(j|0)){S=28;break b}k=m+12|0;if((n|0)==(j|0))break b;m=c[k>>2]|0;if(!m){m=0;S=28;break}}while(0);if((S|0)==28){S=0;n=c[x>>2]|0;if((n|0)>=(c[y>>2]|0)){S=29;break}K=c[z>>2]|0;c[x>>2]=n+1;L=K+(n<<4)|0;c[L>>2]=j;c[K+(n<<4)+8>>2]=0;c[K+(n<<4)+4>>2]=0;c[K+(n<<4)+12>>2]=m;c[k>>2]=L;m=L}L=m+8|0;c[L>>2]=(c[L>>2]|0)+h;L=m+4|0;c[L>>2]=(c[L>>2]|0)+g}c[a>>2]=B;c[u>>2]=o;n=o;g=0;h=0}if(o>>>0>>0)m=(B|0)>=(c[v>>2]|0);else m=1;m=m&1;c[r>>2]=m;if((l|0)==(M|0)){f=g;e=h;S=36;break}}if((S|0)==29){c[D>>2]=h;c[E>>2]=g;Va(a+1256|0,1)}else if((S|0)==36){c[D>>2]=e;c[E>>2]=f;break}}else{e=h;f=g}while(0);S=Q+-256+F|0;c[D>>2]=e+(ea(G,S)|0);c[E>>2]=f+S;c[R>>2]=b;c[O>>2]=d;c[N>>2]=P;i=T;return}h=(g|0)<0;H=g>>31;F=H+256&-256;H=H|1;G=h?0-g|0:g;h=ea(h?n:256-n|0,s)|0;e=(h|0)/(G|0)|0;h=(h|0)%(G|0)|0;if((h|0)<0){e=e+-1|0;h=h+G|0}C=m+e|0;_u(a,k,m,n,C,F);A=H+k|0;p=C>>8;q=A-(c[I>>2]|0)|0;D=a+12|0;m=c[D>>2]|0;E=a+8|0;p=((m|0)<(p|0)?m:p)-(c[E>>2]|0)|0;p=(p|0)>-1?p:-1;m=c[a>>2]|0;if(!((p|0)==(m|0)?(q|0)==(c[a+4>>2]|0):0)){o=a+32|0;if(!(c[a+40>>2]|0)){j=c[o>>2]|0;e=a+36|0;l=c[e>>2]|0;if(l|j){k=c[a+24>>2]|0;k=(m|0)>(k|0)?k:m;f=(c[a+1420>>2]|0)+(c[a+4>>2]<<2)|0;m=c[f>>2]|0;c:do if(!m){m=0;S=49}else while(1){g=c[m>>2]|0;if((g|0)>(k|0)){S=49;break c}f=m+12|0;if((g|0)==(k|0)){r=m;break c}m=c[f>>2]|0;if(!m){m=0;S=49;break}}while(0);do if((S|0)==49){g=a+52|0;n=c[g>>2]|0;if((n|0)<(c[a+48>>2]|0)){B=c[a+44>>2]|0;c[g>>2]=n+1;r=B+(n<<4)|0;c[r>>2]=k;c[B+(n<<4)+8>>2]=0;c[B+(n<<4)+4>>2]=0;c[B+(n<<4)+12>>2]=m;c[f>>2]=r;break}else Va(a+1256|0,1)}while(0);B=r+8|0;c[B>>2]=(c[B>>2]|0)+j;B=r+4|0;c[B>>2]=(c[B>>2]|0)+l}}else e=a+36|0;c[o>>2]=0;c[e>>2]=0;c[a>>2]=p;c[a+4>>2]=q}B=a+28|0;if(q>>>0<(c[B>>2]|0)>>>0)e=(p|0)>=(c[a+24>>2]|0);else e=1;z=a+40|0;c[z>>2]=e&1;d:do if((A|0)==(M|0))L=C;else{f=s<<8;e=(f|0)/(G|0)|0;f=(f|0)%(G|0)|0;if((f|0)<0){e=e+-1|0;f=f+G|0}q=256-F|0;r=a+4|0;s=a+24|0;t=a+32|0;u=a+36|0;v=a+1420|0;w=a+52|0;x=a+48|0;y=a+44|0;p=A;o=h-G|0;m=C;while(1){l=o+f|0;o=l-((l|0)>-1?G:0)|0;l=e+(l>>>31^1)+m|0;_u(a,p,m,q,l,F);p=p+H|0;k=l>>8;j=p-(c[I>>2]|0)|0;m=c[D>>2]|0;k=((m|0)<(k|0)?m:k)-(c[E>>2]|0)|0;k=(k|0)>-1?k:-1;m=c[a>>2]|0;if(!((k|0)==(m|0)?(j|0)==(c[r>>2]|0):0)){if((c[z>>2]|0)==0?(J=c[t>>2]|0,K=c[u>>2]|0,(K|J|0)!=0):0){n=c[s>>2]|0;n=(m|0)>(n|0)?n:m;g=(c[v>>2]|0)+(c[r>>2]<<2)|0;m=c[g>>2]|0;e:do if(!m){m=0;S=68}else while(1){h=c[m>>2]|0;if((h|0)>(n|0)){S=68;break e}g=m+12|0;if((h|0)==(n|0))break e;m=c[g>>2]|0;if(!m){m=0;S=68;break}}while(0);if((S|0)==68){S=0;h=c[w>>2]|0;if((h|0)>=(c[x>>2]|0))break;A=c[y>>2]|0;c[w>>2]=h+1;C=A+(h<<4)|0;c[C>>2]=n;c[A+(h<<4)+8>>2]=0;c[A+(h<<4)+4>>2]=0;c[A+(h<<4)+12>>2]=m;c[g>>2]=C;m=C}C=m+8|0;c[C>>2]=(c[C>>2]|0)+J;C=m+4|0;c[C>>2]=(c[C>>2]|0)+K}c[t>>2]=0;c[u>>2]=0;c[a>>2]=k;c[r>>2]=j}if(j>>>0<(c[B>>2]|0)>>>0)m=(k|0)>=(c[s>>2]|0);else m=1;c[z>>2]=m&1;if((p|0)==(M|0)){L=l;break d}else m=l}Va(a+1256|0,1)}while(0);_u(a,M,L,256-F|0,b,Q);c[R>>2]=b;c[O>>2]=d;c[N>>2]=P;i=T;return}function Mt(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l+4|0;f=l;g=c[e+28>>2]|0;h=ce[c[d+504>>2]&255](d,1668707360,e,f)|0;c[k>>2]=h;if(h){c[d+640>>2]=0;c[d+644>>2]=0;c[k>>2]=0;e=0;i=l;return e|0}f=(c[f>>2]|0)>>>1;j=d+640|0;c[j>>2]=f;h=d+644|0;c[h>>2]=hh(g,2,0,f,0,k)|0;f=c[k>>2]|0;if(f){e=f;i=l;return e|0}f=yi(e,c[j>>2]<<1)|0;c[k>>2]=f;if(f){e=f;i=l;return e|0}f=c[h>>2]|0;h=c[j>>2]|0;g=f+(h<<1)|0;if((h|0)>0)do{b[f>>1]=Di(e)|0;f=f+2|0}while(f>>>0>>0);Bi(e);if(!(a[d+668>>0]|0)){e=c[k>>2]|0;i=l;return e|0}else{e=Xt(d,e)|0;c[k>>2]=e;i=l;return e|0}return 0}function Nt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;f=c[a+24>>2]|0;b=Hh(f,d)|0;if(b){a=b;i=g;return a|0}b=yi(f,e)|0;if(b){a=b;i=g;return a|0}c[a+200>>2]=c[f+32>>2];c[a+204>>2]=c[f+36>>2];a=0;i=g;return a|0}function Ot(a){a=a|0;var e=0,f=0,g=0,h=0;h=i;e=a+200|0;f=c[e>>2]|0;g=f+10|0;if(g>>>0>(c[a+204>>2]|0)>>>0){g=20;i=h;return g|0}b[a+32>>1]=(d[f>>0]|0)<<8|(d[f+1>>0]|0);c[a+36>>2]=((d[f+2>>0]|0)<<8|(d[f+3>>0]|0))<<16>>16;c[a+40>>2]=((d[f+4>>0]|0)<<8|(d[f+5>>0]|0))<<16>>16;c[a+44>>2]=((d[f+6>>0]|0)<<8|(d[f+7>>0]|0))<<16>>16;c[a+48>>2]=((d[f+8>>0]|0)<<8|(d[f+9>>0]|0))<<16>>16;c[e>>2]=g;g=0;i=h;return g|0}function Pt(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=i;z=f+200|0;h=c[z>>2]|0;A=c[f+204>>2]|0;B=c[f+12>>2]|0;C=b[f+32>>1]|0;k=C<<16>>16;v=c[f>>2]|0;if(C<<16>>16){if(((b[B+20>>1]|0)+k+(b[B+56>>1]|0)|0)>>>0>(c[B+8>>2]|0)>>>0?(g=ih(B,0,k)|0,(g|0)!=0):0){E=g;i=F;return E|0}if(C<<16>>16>4094){E=20;i=F;return E|0}}g=c[B+68>>2]|0;l=g+(k<<1)|0;if((h+((k<<1)+2)|0)>>>0>A>>>0){E=20;i=F;return E|0}k=d[h>>0]<<8;o=k|d[h+1>>0];q=C<<16>>16>0;if(q)b[g>>1]=o;if(k&32768){E=20;i=F;return E|0}a:do if(C<<16>>16>1){m=h;p=g;g=g+2|0;h=h+2|0;k=o;while(1){o=k;k=d[m+2>>0]<<8|d[m+3>>0];b[g>>1]=k;if((k<<16|0)<=(o<<16|0)){y=20;break}o=p+4|0;if(o>>>0>=l>>>0){o=h;break a}else{p=g;G=h;g=o;h=m+4|0;m=G}}i=F;return y|0}else o=h;while(0);do if(q){g=b[g>>1]|0;k=g+1|0;if((k|0)>=0){g=g+5|0;if(!g){D=k;break}else{r=g;t=k;u=16;break}}else{G=20;i=F;return G|0}}else{r=4;t=0;u=16}while(0);if((u|0)==16)if(((b[B+22>>1]|0)+r+(b[B+58>>1]|0)|0)>>>0>(c[B+4>>2]|0)>>>0?(s=ih(B,r,0)|0,(s|0)!=0):0){G=s;i=F;return G|0}else D=t;k=c[f+8>>2]|0;g=k+140|0;c[g>>2]=0;k=k+136|0;c[k>>2]=0;h=o+4|0;if(h>>>0>A>>>0){G=20;i=F;return G|0}l=d[o+2>>0]<<8|d[o+3>>0];if(l>>>0>(e[v+286>>1]|0)>>>0){G=22;i=F;return G|0}if((A-h|0)<(l|0)){G=22;i=F;return G|0}if(!(c[f+16>>2]&2)){c[g>>2]=l;G=c[(c[f+160>>2]|0)+392>>2]|0;c[k>>2]=G;Aga(G|0,h|0,l|0)|0}k=o+(l+4)|0;q=B+64|0;g=c[q>>2]|0;p=g+D|0;r=(D|0)>0;do if(r){while(1){h=k+1|0;if(h>>>0>A>>>0){y=20;u=51;break}o=a[k>>0]|0;m=g+1|0;a[g>>0]=o;if(o&8){k=k+2|0;if(k>>>0>A>>>0){y=20;u=51;break}h=a[h>>0]|0;if((g+((h&255)+1)|0)>>>0>p>>>0){y=20;u=51;break}if(!(h<<24>>24))g=m;else while(1){g=g+2|0;a[m>>0]=o;h=h+-1<<24>>24;if(!(h<<24>>24))break;else{G=m;m=g;g=G}}}else{g=m;k=h}if(g>>>0>=p>>>0){w=k;u=31;break}}if((u|0)==31){n=c[q>>2]|0;x=w;break}else if((u|0)==51){i=F;return y|0}}else{n=g;x=k}while(0);p=B+60|0;g=c[p>>2]|0;o=g+(D<<3)|0;if(x>>>0>A>>>0){G=20;i=F;return G|0}b:do if(r){h=x;l=0;while(1){m=d[n>>0]|0;if(!(m&2))if(!(m&16)){k=h+2|0;if(k>>>0>A>>>0){y=20;u=51;break}h=(d[h>>0]<<8|d[h+1>>0])<<16>>16}else{k=h;h=0}else{k=h+1|0;if(k>>>0>A>>>0){y=20;u=51;break}h=d[h>>0]|0;h=(m&16|0)==0?0-h|0:h}l=h+l|0;c[g>>2]=l;a[n>>0]=m&237;g=g+8|0;if(g>>>0>=o>>>0){j=k;u=41;break}else{n=n+1|0;h=k}}if((u|0)==41){g=c[p>>2]|0;n=g+(D<<3)|0;if(!r){E=j;break}m=c[q>>2]|0;l=0;while(1){k=d[m>>0]|0;if(!(k&4))if(!(k&32)){h=j+2|0;if(h>>>0>A>>>0){y=20;u=51;break}j=(d[j>>0]<<8|d[j+1>>0])<<16>>16}else{h=j;j=0}else{h=j+1|0;if(h>>>0>A>>>0){y=20;u=51;break}j=d[j>>0]|0;j=(k&32|0)==0?0-j|0:j}l=j+l|0;c[g+4>>2]=l;a[m>>0]=k&1;g=g+8|0;if(g>>>0>=n>>>0){E=h;break b}else{m=m+1|0;j=h}}if((u|0)==51){i=F;return y|0}}else if((u|0)==51){i=F;return y|0}}else E=x;while(0);b[B+58>>1]=D;b[B+56>>1]=C;c[z>>2]=E;G=0;i=F;return G|0}function Qt(e){e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;A=e+200|0;B=c[e+204>>2]|0;C=c[e+12>>2]|0;y=C+88|0;z=0;x=c[A>>2]|0;while(1){g=z+1|0;f=jh(C,g)|0;if(f){h=21;break}j=x+4|0;if(j>>>0>B>>>0){f=21;h=21;break}v=c[y>>2]|0;s=v+(z<<5)+12|0;c[s>>2]=0;k=v+(z<<5)+8|0;c[k>>2]=0;t=d[x+1>>0]|0;w=(d[x>>0]<<8|t)&65535;b[v+(z<<5)+4>>1]=w;c[v+(z<<5)>>2]=d[x+2>>0]<<8|d[x+3>>0];l=w&1;f=(l&65535)<<1;h=f+2|0;u=(t&8|0)==0;do if(u)if(!(t&64)){f=h|t>>>4&8;break}else{f=f+6|0;break}else f=f|4;while(0);if((x+(f+4)|0)>>>0>B>>>0){f=21;h=21;break}if(!(l<<16>>16)){c[k>>2]=a[j>>0];o=9;m=11;f=14;p=12;q=13;r=8;h=7;n=10;l=x+6|0;j=a[x+5>>0]|0}else{c[k>>2]=(d[j>>0]<<8|d[x+5>>0])<<16>>16;o=11;m=13;f=16;p=14;q=15;r=10;h=9;n=12;l=x+8|0;j=(d[x+6>>0]<<8|d[x+7>>0])<<16>>16}c[s>>2]=j;do if(u){if(t&64){f=x+n|0;k=(d[l>>0]<<8|d[x+h>>0])<<16>>14;j=0;l=0;h=(d[x+r>>0]<<8|d[x+o>>0])<<16>>14;break}if(!(t&128)){f=l;k=65536;j=0;l=0;h=65536}else{f=x+f|0;k=(d[l>>0]<<8|d[x+h>>0])<<16>>14;j=(d[x+n>>0]<<8|d[x+m>>0])<<16>>14;l=(d[x+r>>0]<<8|d[x+o>>0])<<16>>14;h=(d[x+p>>0]<<8|d[x+q>>0])<<16>>14}}else{h=(d[l>>0]<<8|d[x+h>>0])<<16>>14;f=x+r|0;k=h;j=0;l=0}while(0);c[v+(z<<5)+16>>2]=k;c[v+(z<<5)+20>>2]=j;c[v+(z<<5)+24>>2]=l;c[v+(z<<5)+28>>2]=h;if(!(w&32)){h=20;break}else{z=g;x=f}}if((h|0)==20){c[C+84>>2]=g;c[e+168>>2]=f+(ui(c[e+24>>2]|0)|0)-B;c[A>>2]=f;e=0;i=D;return e|0}else if((h|0)==21){i=D;return f|0}return 0}function Rt(a){a=a|0;var b=0;b=i;Bi(c[a+24>>2]|0);i=b;return}function St(d){d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;g=c[(c[d>>2]|0)+100>>2]|0;e=d+292|0;if(a[e>>0]|0){c[d+296>>2]=0;a[e>>0]=0}e=d+244|0;eh(g,c[e>>2]|0);c[e>>2]=0;c[d+240>>2]=0;e=d+252|0;eh(g,c[e>>2]|0);c[e>>2]=0;b[d+248>>1]=0;e=d+256|0;f=c[e>>2]|0;if(f){j=e+28|0;eh(f,c[j>>2]|0);c[j>>2]=0;j=e+24|0;eh(f,c[j>>2]|0);c[j>>2]=0;j=e+16|0;eh(f,c[j>>2]|0);c[j>>2]=0;j=e+12|0;eh(f,c[j>>2]|0);c[j>>2]=0;j=e+20|0;eh(f,c[j>>2]|0);c[j>>2]=0;c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0}j=d+124|0;eh(g,c[j>>2]|0);c[j>>2]=0;eh(g,c[d+136>>2]|0);c[d+116>>2]=0;c[d+120>>2]=0;j=d+128|0;a[d+300>>0]=0;c[j+0>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;c[j+16>>2]=0;a[d+301>>0]=0;i=h;return}function Tt(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;ca=i;i=i+96|0;Z=ca+64|0;W=ca;l=ca+82|0;n=ca+80|0;I=ca+56|0;r=ca+16|0;ba=ca+8|0;H=c[f>>2]|0;X=f+12|0;N=c[X>>2]|0;c[I>>2]=0;if(h>>>0>1?(e[H+290>>1]|0)>>>0>>0:0){aa=21;i=ca;return aa|0}if((c[H+16>>2]|0)>>>0<=g>>>0){aa=16;i=ca;return aa|0}F=f+20|0;c[F>>2]=g;Y=f+16|0;if(!(c[Y>>2]&1)){L=c[f+4>>2]|0;K=c[L+48>>2]|0;L=c[L+52>>2]|0}else{K=65536;L=65536}b[Z>>1]=0;b[W>>1]=0;b[l>>1]=0;b[n>>1]=0;k=H+528|0;Xd[c[(c[k>>2]|0)+112>>2]&127](H,0,g,Z,l)|0;if(!(a[H+292>>0]|0)){b[W>>1]=0;_=b[H+68>>1]|0;b[n>>1]=_;m=0;n=_}else{Xd[c[(c[k>>2]|0)+112>>2]&127](H,1,g,W,n)|0;m=b[W>>1]|0;n=b[n>>1]|0}E=f+52|0;c[E>>2]=b[Z>>1];k=e[l>>1]|0;C=f+56|0;c[C>>2]=k;D=f+176|0;c[D>>2]=m<<16>>16;B=f+180|0;c[B>>2]=n&65535;z=f+64|0;if(!(a[z>>0]|0)){a[z>>0]=1;c[f+60>>2]=k}$=H+128|0;k=c[(c[$>>2]|0)+48>>2]|0;do if(k){k=Od[c[c[k>>2]>>2]&255](c[k+4>>2]|0,g,ba)|0;if(!k){k=c[ba+4>>2]|0;c[f+28>>2]=k;n=r+0|0;l=n+40|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(l|0));rh(r,c[ba>>2]|0,k);c[f+24>>2]=r;_=1;l=0;break}else{aa=k;i=ca;return aa|0}}else{_=0;l=Vp(H,g,f+28|0)|0}while(0);R=f+28|0;k=c[R>>2]|0;do if((k|0)>0){n=c[f+84>>2]|0;if((n|0)==0?(c[(c[$>>2]|0)+48>>2]|0)==0:0){k=8;break}k=ce[c[H+508>>2]&255](f,g,n+l|0,k)|0;if(!k){k=Ld[c[H+516>>2]&511](f)|0;if((k|0)==0&j<<24>>24==0){k=c[R>>2]|0;A=1;aa=21}else aa=120}}else{A=0;aa=21}while(0);a:do if((aa|0)==21){do if((k|0)!=0?(y=f+32|0,(b[y>>1]|0)!=0):0){k=c[E>>2]|0;p=(c[f+36>>2]|0)-k|0;S=f+68|0;c[S>>2]=p;j=f+72|0;c[j>>2]=0;r=c[C>>2]|0;T=f+76|0;c[T>>2]=r+p;p=f+80|0;c[p>>2]=0;U=f+184|0;c[U>>2]=0;n=(c[f+48>>2]|0)+(c[D>>2]|0)|0;o=f+188|0;c[o>>2]=n;V=f+192|0;c[V>>2]=0;q=f+196|0;c[q>>2]=n-(c[B>>2]|0);n=c[(c[(c[f>>2]|0)+128>>2]|0)+48>>2]|0;if((((n|0)!=0?(s=c[(c[n>>2]|0)+8>>2]|0,(s|0)!=0):0)?(c[Z>>2]=k,c[Z+4>>2]=0,t=Z+8|0,c[t>>2]=r,c[Z+12>>2]=0,(ce[s&255](c[n+4>>2]|0,g,0,Z)|0)==0):0)?(x=c[t>>2]|0,c[E>>2]=c[Z>>2]<<16>>16,x=x&65535,c[C>>2]=x,c[D>>2]=0,c[B>>2]=0,(a[z>>0]|0)==0):0){a[z>>0]=1;c[f+60>>2]=x}k=b[y>>1]|0;if(k<<16>>16>0){k=Ld[c[H+520>>2]&511](f)|0;if(k)break;Id[c[H+512>>2]&511](f);p=c[X>>2]|0;o=p+58|0;j=b[o>>1]|0;s=p+60|0;r=S;k=c[r+4>>2]|0;t=(c[s>>2]|0)+(j<<3)|0;c[t>>2]=c[r>>2];c[t+4>>2]=k;t=j+1|0;k=T;r=c[k+4>>2]|0;u=(c[s>>2]|0)+(t<<3)|0;c[u>>2]=c[k>>2];c[u+4>>2]=r;u=j+2|0;r=U;k=c[r+4>>2]|0;v=(c[s>>2]|0)+(u<<3)|0;c[v>>2]=c[r>>2];c[v+4>>2]=k;v=j+3|0;k=V;r=c[k+4>>2]|0;q=(c[s>>2]|0)+(v<<3)|0;c[q>>2]=c[k>>2];c[q+4>>2]=r;q=p+64|0;a[(c[q>>2]|0)+j>>0]=0;a[(c[q>>2]|0)+t>>0]=0;a[(c[q>>2]|0)+u>>0]=0;a[(c[q>>2]|0)+v>>0]=0;r=j+4|0;k=c[f>>2]|0;n=a[k+668>>0]|0;if(n<<24>>24){m=c[k+100>>2]|0;k=$u(c[k+104>>2]|0,n,c[k+672>>2]|0,c[F>>2]|0,Z,r)|0;if(k)break a;k=c[Z>>2]|0;if((r|0)>0){n=c[s>>2]|0;l=0;do{X=n+(l<<3)|0;c[X>>2]=(c[X>>2]|0)+(c[k+(l<<3)>>2]|0);X=n+(l<<3)+4|0;c[X>>2]=(c[X>>2]|0)+(c[k+(l<<3)+4>>2]|0);l=l+1|0}while((l|0)!=(r|0))}eh(m,k);c[Z>>2]=0}k=c[Y>>2]|0;if(!(k&2)){k=b[o>>1]|0;b[f+132>>1]=k;b[f+134>>1]=b[p+56>>1]|0;c[f+136>>2]=c[p+76>>2];Z=c[s>>2]|0;c[f+140>>2]=Z;X=c[p+80>>2]|0;c[f+144>>2]=X;c[f+148>>2]=c[q>>2];c[f+152>>2]=c[p+68>>2];b[f+156>>1]=0;Aga(X|0,Z|0,((k&65535)<<3)+32|0)|0;k=c[Y>>2]|0}n=c[s>>2]|0;l=n+(r<<3)|0;if(!(k&1)){p=c[f+4>>2]|0;m=c[p+48>>2]|0;p=c[p+52>>2]|0;if((r|0)>0){do{c[n>>2]=Wg(c[n>>2]|0,m)|0;Z=n+4|0;c[Z>>2]=Wg(c[Z>>2]|0,p)|0;n=n+8|0}while(n>>>0>>0);k=c[Y>>2]|0;n=c[s>>2]|0}Z=n+(j<<3)|0;Y=c[Z+4>>2]|0;X=S;c[X>>2]=c[Z>>2];c[X+4>>2]=Y;X=(c[s>>2]|0)+(t<<3)|0;Y=c[X+4>>2]|0;Z=T;c[Z>>2]=c[X>>2];c[Z+4>>2]=Y;Z=(c[s>>2]|0)+(u<<3)|0;Y=c[Z+4>>2]|0;X=U;c[X>>2]=c[Z>>2];c[X+4>>2]=Y;X=(c[s>>2]|0)+(v<<3)|0;Y=c[X+4>>2]|0;Z=V;c[Z>>2]=c[X>>2];c[Z+4>>2]=Y}if((k&2|0)==0?(G=f+132|0,b[G>>1]=(e[G>>1]|0)+4,G=av(f,0)|0,(G|0)!=0):0){k=G;break a}lh(N);k=0;break a}if(k<<16>>16==-1){G=N+22|0;O=b[G>>1]|0;Q=O<<16>>16;P=b[N+20>>1]|0;k=Ld[c[H+524>>2]&511](f)|0;if(!k){M=f+168|0;J=c[M>>2]|0;Id[c[H+512>>2]&511](f);k=a[H+668>>0]|0;if(k<<24>>24){r=c[H+100>>2]|0;n=N+84|0;k=$u(c[H+104>>2]|0,k,c[H+672>>2]|0,g,I,(c[n>>2]|0)+4|0)|0;if(k)break a;k=c[n>>2]|0;if((k|0)>0){n=c[I>>2]|0;l=0;m=(c[N+88>>2]|0)+(c[N+48>>2]<<5)|0;while(1){if(b[m+4>>1]&2){H=m+8|0;c[H>>2]=(c[n+(l<<3)>>2]<<16>>16)+(c[H>>2]|0);H=m+12|0;c[H>>2]=(c[n+(l<<3)+4>>2]<<16>>16)+(c[H>>2]|0)}l=l+1|0;if((l|0)==(k|0))break;else m=m+32|0}}else{n=c[I>>2]|0;k=0}c[S>>2]=(c[S>>2]|0)+(c[n+(k<<3)>>2]|0);c[j>>2]=(c[j>>2]|0)+(c[n+(k<<3)+4>>2]|0);H=k+1|0;c[T>>2]=(c[T>>2]|0)+(c[n+(H<<3)>>2]|0);c[p>>2]=(c[p>>2]|0)+(c[n+(H<<3)+4>>2]|0);H=k+2|0;c[U>>2]=(c[U>>2]|0)+(c[n+(H<<3)>>2]|0);c[o>>2]=(c[o>>2]|0)+(c[n+(H<<3)+4>>2]|0);H=k+3|0;c[V>>2]=(c[V>>2]|0)+(c[n+(H<<3)>>2]|0);c[q>>2]=(c[q>>2]|0)+(c[n+(H<<3)+4>>2]|0);eh(r,n);c[I>>2]=0}k=c[Y>>2]|0;if(!(k&1)){c[S>>2]=Wg(c[S>>2]|0,K)|0;c[T>>2]=Wg(c[T>>2]|0,K)|0;c[o>>2]=Wg(c[o>>2]|0,L)|0;c[q>>2]=Wg(c[q>>2]|0,L)|0;k=c[Y>>2]|0}if(k&1024){lh(N);c[(c[f+8>>2]|0)+72>>2]=1668246896;k=0;break a}B=c[N+84>>2]|0;C=c[N+48>>2]|0;F=f+24|0;D=c[F>>2]|0;E=c[R>>2]|0;lh(N);if(!B){l=Q;k=0}else{A=N+52|0;w=h+1|0;x=f+4|0;z=0;do{n=z+C|0;l=S;r=c[l>>2]|0;l=c[l+4>>2]|0;p=T;j=c[p>>2]|0;p=c[p+4>>2]|0;q=U;o=c[q>>2]|0;q=c[q+4>>2]|0;t=V;s=c[t>>2]|0;t=c[t+4>>2]|0;v=b[G>>1]|0;y=v<<16>>16;k=Tt(f,c[(c[A>>2]|0)+(n<<5)>>2]|0,w,0)|0;if(k)break a;m=c[A>>2]|0;u=m+(n<<5)+4|0;if(!(b[u>>1]&512)){N=S;c[N>>2]=r;c[N+4>>2]=l;N=T;c[N>>2]=j;c[N+4>>2]=p;N=U;c[N>>2]=o;c[N+4>>2]=q;N=V;c[N>>2]=s;c[N+4>>2]=t}k=b[G>>1]|0;b:do if(k<<16>>16!=v<<16>>16){s=c[X>>2]|0;o=s+24|0;t=c[o>>2]|0;s=b[s+22>>1]|0;q=s<<16>>16;r=b[u>>1]|0;p=(r&200)==0;if((s&65535)>(v&65535)&(p^1)){r=m+(n<<5)+16|0;l=y;do{Ch(t+(l<<3)|0,r);l=l+1|0}while((l|0)!=(q|0));r=b[u>>1]|0}l=r&65535;r=c[m+(n<<5)+8>>2]|0;j=c[m+(n<<5)+12>>2]|0;do if(!(l&2)){l=r+Q|0;r=j+y|0;if(!(l>>>0>>0&r>>>0>>0))break b;p=c[o>>2]|0;o=(c[p+(l<<3)>>2]|0)-(c[p+(r<<3)>>2]|0)|0;p=(c[p+(l<<3)+4>>2]|0)-(c[p+(r<<3)+4>>2]|0)|0}else{if(!(j|r))break b;if(p|(l&2048|0)==0)l=j;else{N=Sg(c[m+(n<<5)+16>>2]|0,c[m+(n<<5)+20>>2]|0)|0;l=Sg(c[m+(n<<5)+28>>2]|0,c[m+(n<<5)+24>>2]|0)|0;r=Wg(r,N)|0;l=Wg(j,l)|0}if(c[Y>>2]&1){o=r;p=l;break}L=c[x>>2]|0;N=c[L+52>>2]|0;r=Wg(r,c[L+48>>2]|0)|0;l=Wg(l,N)|0;if(!(b[u>>1]&4)){o=r;p=l;break}o=r+32&-64;p=l+32&-64}while(0);if(!(o|p))break;j=q-y|0;r=s<<16>>16==v<<16>>16;if(!((o|0)==0|r)){l=0;do{N=t+(l+y<<3)|0;c[N>>2]=(c[N>>2]|0)+o;l=l+1|0}while((l|0)!=(j|0))}if((p|0)==0|r)break;else r=0;do{N=t+(r+y<<3)+4|0;c[N>>2]=(c[N>>2]|0)+p;r=r+1|0}while((r|0)!=(j|0))}while(0);z=z+1|0}while(z>>>0>>0);l=k<<16>>16;k=m+(n<<5)|0}c[F>>2]=D;c[R>>2]=E;c[M>>2]=J;if(c[Y>>2]&2){k=0;break a}if(!(l>>>0>Q>>>0?(b[k+4>>1]&256)!=0:0)){k=0;break a}m=c[X>>2]|0;p=m+22|0;k=b[p>>1]|0;n=k<<16>>16;l=n+4|0;do if(!l)aa=102;else{if((l+n+(b[m+58>>1]|0)|0)>>>0<=(c[m+4>>2]|0)>>>0){aa=102;break}Y=ih(m,l,0)|0;c[W>>2]=Y;if(Y){k=0;break a}k=b[p>>1]|0}while(0);if((aa|0)==102)c[W>>2]=0;q=m+24|0;L=S;Y=c[L+4>>2]|0;N=(c[q>>2]|0)+(k<<16>>16<<3)|0;c[N>>2]=c[L>>2];c[N+4>>2]=Y;N=T;Y=c[N+4>>2]|0;L=(c[q>>2]|0)+((b[p>>1]|0)+1<<3)|0;c[L>>2]=c[N>>2];c[L+4>>2]=Y;L=U;Y=c[L+4>>2]|0;N=(c[q>>2]|0)+((b[p>>1]|0)+2<<3)|0;c[N>>2]=c[L>>2];c[N+4>>2]=Y;N=V;Y=c[N+4>>2]|0;q=(c[q>>2]|0)+((b[p>>1]|0)+3<<3)|0;c[q>>2]=c[N>>2];c[q+4>>2]=Y;q=m+28|0;a[(c[q>>2]|0)+(b[p>>1]|0)>>0]=0;a[(c[q>>2]|0)+((b[p>>1]|0)+1)>>0]=0;a[(c[q>>2]|0)+((b[p>>1]|0)+2)>>0]=0;a[(c[q>>2]|0)+((b[p>>1]|0)+3)>>0]=0;q=c[F>>2]|0;Y=Hh(q,c[M>>2]|0)|0;c[W>>2]=Y;if(Y){k=0;break a}k=ri(q,W)|0;if(c[W>>2]|0){k=0;break a}p=k&65535;if((k&65535)>(e[(c[f>>2]|0)+286>>1]|0)){if((p|0)>(c[R>>2]|0)){k=0;break a}o=f+160|0;k=c[o>>2]|0;m=c[k+388>>2]|0;l=k+392|0;if(m>>>0

>>0){c[l>>2]=hh(c[k+8>>2]|0,1,m,p,c[l>>2]|0,Z)|0;l=c[Z>>2]|0;n=l;l=(l|0)==0?p:m;k=c[o>>2]|0}else{n=0;l=m}c[W>>2]=n;c[k+388>>2]=l&65535;if(c[W>>2]|0){k=0;break a}}else{if(!(k<<16>>16)){k=0;break a}k=c[f+160>>2]|0}Z=pi(q,c[k+392>>2]|0,p)|0;c[W>>2]=Z;if(Z){k=0;break a}Z=c[f+8>>2]|0;c[Z+136>>2]=c[(c[f+160>>2]|0)+392>>2];c[Z+140>>2]=p;Z=c[X>>2]|0;k=(e[Z+22>>1]|0)-Q|0;n=f+132|0;b[n>>1]=k;b[f+134>>1]=(e[Z+20>>1]|0)-P;c[f+136>>2]=(c[Z+40>>2]|0)+(Q<<3);c[f+140>>2]=(c[Z+24>>2]|0)+(Q<<3);c[f+144>>2]=(c[Z+44>>2]|0)+(Q<<3);l=c[Z+28>>2]|0;m=f+148|0;c[m>>2]=l+Q;c[f+152>>2]=(c[Z+32>>2]|0)+(P<<1);b[f+156>>1]=O;k=k&65535;do if(k>>>0>Q>>>0){l=l+(Q<<1)|0;a[l>>0]=d[l>>0]&231;l=Q+1|0;k=e[n>>1]|0;if(l>>>0>=k>>>0)break;do{k=(c[m>>2]|0)+l|0;a[k>>0]=d[k>>0]&231;l=l+1|0;k=e[n>>1]|0}while(l>>>0>>0)}while(0);b[n>>1]=k+4;av(f,1)|0;k=0;break a}}else k=20}else aa=23;while(0);do if((aa|0)==23){X=f+36|0;c[X+0>>2]=0;c[X+4>>2]=0;c[X+8>>2]=0;c[X+12>>2]=0;if(!(j<<24>>24)){l=c[E>>2]|0;s=f+68|0;c[s>>2]=0-l;t=f+72|0;c[t>>2]=0;k=c[C>>2]|0;m=f+76|0;c[m>>2]=k-l;p=f+80|0;c[p>>2]=0;o=f+184|0;c[o>>2]=0;n=c[D>>2]|0;q=f+188|0;c[q>>2]=n;r=f+192|0;c[r>>2]=0;j=f+196|0;c[j>>2]=n-(c[B>>2]|0);n=c[(c[(c[f>>2]|0)+128>>2]|0)+48>>2]|0;if((((n|0)!=0?(u=c[(c[n>>2]|0)+8>>2]|0,(u|0)!=0):0)?(c[Z>>2]=l,c[Z+4>>2]=0,v=Z+8|0,c[v>>2]=k,c[Z+12>>2]=0,(ce[u&255](c[n+4>>2]|0,g,0,Z)|0)==0):0)?(w=c[v>>2]|0,c[E>>2]=c[Z>>2]<<16>>16,w=w&65535,c[C>>2]=w,c[D>>2]=0,c[B>>2]=0,(a[z>>0]|0)==0):0){a[z>>0]=1;c[f+60>>2]=w}k=c[f>>2]|0;n=a[k+668>>0]|0;if(n<<24>>24){l=c[k+100>>2]|0;k=$u(c[k+104>>2]|0,n,c[k+672>>2]|0,g,I,4)|0;if(k)break;Z=c[I>>2]|0;c[s>>2]=(c[s>>2]|0)+(c[Z>>2]|0);c[t>>2]=(c[t>>2]|0)+(c[Z+4>>2]|0);c[m>>2]=(c[m>>2]|0)+(c[Z+8>>2]|0);c[p>>2]=(c[p>>2]|0)+(c[Z+12>>2]|0);c[o>>2]=(c[o>>2]|0)+(c[Z+16>>2]|0);c[q>>2]=(c[q>>2]|0)+(c[Z+20>>2]|0);c[r>>2]=(c[r>>2]|0)+(c[Z+24>>2]|0);c[j>>2]=(c[j>>2]|0)+(c[Z+28>>2]|0);eh(l,Z);c[I>>2]=0}if(!(c[Y>>2]&1)){c[s>>2]=Wg(c[s>>2]|0,K)|0;c[m>>2]=Wg(c[m>>2]|0,K)|0;c[q>>2]=Wg(c[q>>2]|0,L)|0;c[j>>2]=Wg(c[j>>2]|0,L)|0;k=0}else k=0}else k=0}while(0);if(A<<24>>24)aa=120}while(0);if((aa|0)==120)Id[c[H+512>>2]&511](f);if(!(_<<24>>24)){aa=k;i=ca;return aa|0}aa=c[(c[$>>2]|0)+48>>2]|0;Jd[c[(c[aa>>2]|0)+4>>2]&255](c[aa+4>>2]|0,ba);aa=k;i=ca;return aa|0}function Ut(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;n=o;c[d>>2]=f;c[d+4>>2]=g;if(g){c[d+396>>2]=c[g+116>>2];c[d+400>>2]=c[g+120>>2];c[d+408>>2]=c[g+128>>2];c[d+412>>2]=c[g+132>>2];c[d+404>>2]=c[g+124>>2];c[d+416>>2]=c[g+136>>2];k=d+244|0;h=g+72|0;j=k+40|0;do{c[k>>2]=c[h>>2];k=k+4|0;h=h+4|0}while((k|0)<(j|0));j=d+216|0;h=g+44|0;c[j+0>>2]=c[h+0>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[d+420>>2]=c[g+140>>2];c[d+424>>2]=c[g+144>>2];j=g+148|0;h=c[j+4>>2]|0;k=d+444|0;c[k>>2]=c[j>>2];c[k+4>>2]=h;k=g+156|0;h=c[k+4>>2]|0;j=d+452|0;c[j>>2]=c[k>>2];c[j+4>>2]=h;j=g+164|0;h=c[j+4>>2]|0;k=d+460|0;c[k>>2]=c[j>>2];c[k+4>>2]=h;k=d+284|0;h=g+172|0;j=k+68|0;do{c[k>>2]=c[h>>2];k=k+4|0;h=h+4|0}while((k|0)<(j|0));c[d+380>>2]=c[g+240>>2];c[d+384>>2]=c[g+244>>2];b[d+468>>1]=b[g+248>>1]|0;c[d+472>>2]=c[g+252>>2];k=d+180|0;h=g+256|0;j=k+36|0;do{c[k>>2]=c[h>>2];k=k+4|0;h=h+4|0}while((k|0)<(j|0));g=d+36|0;k=g+0|0;j=k+36|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(j|0));k=d+72|0;h=g+0|0;j=k+36|0;do{c[k>>2]=c[h>>2];k=k+4|0;h=h+4|0}while((k|0)<(j|0));k=d+108|0;h=g+0|0;j=k+36|0;do{c[k>>2]=c[h>>2];k=k+4|0;h=h+4|0}while((k|0)<(j|0))}m=d+20|0;k=c[m>>2]|0;j=d+8|0;l=c[j>>2]|0;h=d+24|0;g=(e[f+284>>1]|0)+32|0;do if(k>>>0>>0){c[h>>2]=hh(l,1,k<<2,g<<2,c[h>>2]|0,n)|0;if(!(c[n>>2]|0)){l=c[j>>2]|0;break}c[m>>2]=k;i=o;return}else g=k;while(0);c[m>>2]=g;k=d+388|0;h=c[k>>2]|0;j=d+392|0;g=e[f+286>>1]|0;if(h>>>0>>0){c[j>>2]=hh(l,1,h,g,c[j>>2]|0,n)|0;if(c[n>>2]|0){c[k>>2]=h&65535;i=o;return}}else g=h;c[k>>2]=g&65535;g=d+144|0;b[d+152>>1]=0;b[d+154>>1]=0;k=d+72|0;h=g+0|0;j=k+36|0;do{c[k>>2]=c[h>>2];k=k+4|0;h=h+4|0}while((k|0)<(j|0));k=d+108|0;h=g+0|0;j=k+36|0;do{c[k>>2]=c[h>>2];k=k+4|0;h=h+4|0}while((k|0)<(j|0));k=d+36|0;h=g+0|0;j=k+36|0;do{c[k>>2]=c[h>>2];k=k+4|0;h=h+4|0}while((k|0)<(j|0));a[d+488>>0]=0;i=o;return}function Vt(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;h=c[d>>2]|0;g=d+292|0;if(!(a[g>>0]|0))f=(c[h+96>>2]|0)+28|0;else f=d+296|0;j=c[f>>2]|0;if(!j){d=153;i=k;return d|0}Ut(j,h,d);c[j+428>>2]=0;c[j+16>>2]=0;a[j+488>>0]=0;a[j+561>>0]=e;f=c[h+636>>2]|0;e=c[h+632>>2]|0;c[j+452>>2]=f;c[j+456>>2]=e;c[j+460>>2]=0;c[j+464>>2]=0;if((e|0)!=0?(c[j+356>>2]=f,c[j+364>>2]=e,c[j+360>>2]=0,c[j+352>>2]=2,(a[g>>0]|0)==0):0)f=Ld[c[h+648>>2]&511](j)|0;else f=0;g=j+284|0;b[j+290>>1]=16384;b[j+292>>1]=0;b[j+294>>1]=16384;b[j+296>>1]=0;b[j+298>>1]=16384;b[j+300>>1]=0;b[g>>1]=0;b[j+286>>1]=0;b[j+288>>1]=0;b[j+344>>1]=1;b[j+346>>1]=1;b[j+348>>1]=1;c[j+304>>2]=1;e=d+172|0;g=g+0|0;h=e+68|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(h|0));c[d+116>>2]=c[j+396>>2];c[d+128>>2]=c[j+408>>2];c[d+140>>2]=c[j+420>>2];c[d+144>>2]=c[j+424>>2];g=j+444|0;h=c[g+4>>2]|0;e=d+148|0;c[e>>2]=c[g>>2];c[e+4>>2]=h;e=j+452|0;h=c[e+4>>2]|0;g=d+156|0;c[g>>2]=c[e>>2];c[g+4>>2]=h;g=j+460|0;j=c[g+4>>2]|0;d=d+164|0;c[d>>2]=c[g>>2];c[d+4>>2]=j;d=f;i=k;return d|0}function Wt(d){d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;l=d+72|0;m=d+108|0;a[m>>0]=0;h=c[d>>2]|0;j=d+44|0;g=d+12|0;c[j+0>>2]=c[g+0>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];c[j+12>>2]=c[g+12>>2];c[j+16>>2]=c[g+16>>2];c[j+20>>2]=c[g+20>>2];c[j+24>>2]=c[g+24>>2];g=b[j>>1]|0;if(!(g<<16>>16)){m=151;i=n;return m|0}k=d+46|0;f=b[k>>1]|0;if(!(f<<16>>16)){m=151;i=n;return m|0}if(b[h+176>>1]&8){o=h+68|0;f=d+48|0;c[f>>2]=Xg((g&65535)<<6,e[o>>1]|0)|0;o=Xg(e[k>>1]<<6,e[o>>1]|0)|0;g=d+52|0;c[g>>2]=o;c[d+56>>2]=(Wg(b[h+70>>1]|0,o)|0)+32&-64;c[d+60>>2]=(Wg(b[h+72>>1]|0,c[g>>2]|0)|0)+32&-64;c[d+64>>2]=(Wg(b[h+74>>1]|0,c[g>>2]|0)|0)+32&-64;c[d+68>>2]=(Wg(b[h+76>>1]|0,c[f>>2]|0)|0)+32&-64;g=b[j>>1]|0;f=b[k>>1]|0}if((g&65535)<(f&65535)){c[d+88>>2]=c[d+52>>2];b[d+80>>1]=f;c[l>>2]=Xg(g&65535,f&65535)|0;f=65536}else{c[d+88>>2]=c[d+48>>2];b[d+80>>1]=g;c[l>>2]=65536;f=Xg(f&65535,g&65535)|0}c[d+76>>2]=f;a[d+301>>0]=0;a[m>>0]=1;o=0;i=n;return o|0}function Xt(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=i;i=i+16|0;A=B+8|0;f=B;y=B+4|0;z=c[d+28>>2]|0;w=c[a+672>>2]|0;if(!w){c[A>>2]=0;d=0;y=0;x=0;eh(z,x);eh(z,y);eh(z,d);d=c[A>>2]|0;i=B;return d|0}x=a+644|0;if(!(c[x>>2]|0)){c[A>>2]=0;d=0;y=0;x=0;eh(z,x);eh(z,y);eh(z,d);d=c[A>>2]|0;i=B;return d|0}v=ce[c[a+504>>2]&255](a,1668702578,d,f)|0;c[A>>2]=v;if(v){c[A>>2]=0;d=0;y=0;x=0;eh(z,x);eh(z,y);eh(z,d);d=c[A>>2]|0;i=B;return d|0}v=yi(d,c[f>>2]|0)|0;c[A>>2]=v;if(v){c[A>>2]=0;d=0;y=0;x=0;eh(z,x);eh(z,y);eh(z,d);d=c[A>>2]|0;i=B;return d|0}v=d+32|0;k=(c[v>>2]|0)-(c[d>>2]|0)|0;if((Fi(d)|0)==65536){f=hh(z,4,0,c[w>>2]|0,0,A)|0;if(!(c[A>>2]|0)){g=hh(z,4,0,c[w>>2]|0,0,A)|0;if(!(c[A>>2]|0)){h=hh(z,4,0,c[w>>2]|0,0,A)|0;if((c[A>>2]|0)==0?(j=Di(d)|0,l=Di(d)|0,(j&4095)!=0):0){u=a+640|0;s=j&4095;t=0;q=k+(l&65535)|0;while(1){p=(Di(d)|0)&65535;j=Di(d)|0;l=j&65535;if(!(l&32768)){if((l&16384|0)!=0?(c[w>>2]&2147483647|0)!=0:0){a=0;do{Di(d)|0;a=a+1|0}while(a>>>0>2]<<1>>>0)}}else{if(!(c[w>>2]|0))a=0;else{k=0;do{c[f+(k<<2)>>2]=(Di(d)|0)<<16>>16<<2;k=k+1|0;a=c[w>>2]|0}while(k>>>0>>0)}if(!((l&16384|0)==0|(a|0)==0)){k=0;do{c[g+(k<<2)>>2]=(Di(d)|0)<<16>>16<<2;k=k+1|0;a=c[w>>2]|0}while(k>>>0>>0);if(a){a=0;do{c[h+(a<<2)>>2]=(Di(d)|0)<<16>>16<<2;a=a+1|0}while(a>>>0<(c[w>>2]|0)>>>0)}}o=bv(w,j,f,g,h)|0;if(!((o|0)==0|(l&8192|0)==0)){n=c[d>>2]|0;m=(c[v>>2]|0)-n|0;c[v>>2]=n+q;n=cv(d,y)|0;j=c[y>>2]|0;k=(j|0)==0;if(k)a=c[u>>2]|0;else a=j;l=dv(d,a)|0;do if(!((n|0)==0|(l|0)==0))if((n|0)==(-1|0)){if(!(c[u>>2]|0))break;a=c[x>>2]|0;k=0;do{r=e[a+(k<<1)>>1]|0;r=(Wg(b[l+(k<<1)>>1]|0,o)|0)+r&65535;a=c[x>>2]|0;b[a+(k<<1)>>1]=r;k=k+1|0}while(k>>>0<(c[u>>2]|0)>>>0);r=37}else{if(k){r=38;break}a=c[x>>2]|0;k=0;do{r=e[n+(k<<1)>>1]|0;C=e[a+(r<<1)>>1]|0;C=(Wg(b[l+(k<<1)>>1]|0,o)|0)+C&65535;a=c[x>>2]|0;b[a+(r<<1)>>1]=C;k=k+1|0}while(k>>>0>>0);r=37}else r=37;while(0);if((r|0)==37?(r=0,(n|0)!=(-1|0)):0)r=38;if((r|0)==38){r=0;eh(z,n)}eh(z,l);c[v>>2]=(c[d>>2]|0)+m}}t=t+1|0;if((t|0)==(s|0))break;else q=p+q|0}}}else h=0}else{h=0;g=0}}else{c[A>>2]=0;h=0;g=0;f=0}Bi(d);C=h;d=g;y=f;eh(z,y);eh(z,d);eh(z,C);C=c[A>>2]|0;i=B;return C|0}function Yt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k;e=Hh(a,0)|0;do if(!e){f=ri(a,g)|0;e=c[g>>2]|0;if(!e){if((f+32767<<16>>16&65535)<2){Ki(a,g)|0;e=c[g>>2]|0;if(e)break;if(f<<16>>16!=-32767)j=6}else j=6;if((j|0)==6?(h=Hh(a,0)|0,(h|0)!=0):0){e=h;break}e=yi(a,d)|0;if(!e){e=(pga(c[a+32>>2]|0,b,d)|0)==0;Bi(a);e=e?0:2}}}while(0);i=k;return e|0}function Zt(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E;c[e>>2]=f;m=f+g|0;n=e+8|0;c[n>>2]=m;B=e+12|0;c[B>>2]=0;x=e+28|0;Id[c[x>>2]&511](e);f=c[e>>2]|0;a:do if(f>>>0>>0){y=e+372|0;z=e+32|0;A=b+128|0;o=e+36|0;p=b+528|0;q=b+132|0;r=e+68|0;s=e+64|0;t=b+132|0;u=b+164|0;v=b+168|0;w=b+460|0;l=0;h=0;b:while(1){g=a[f>>0]|0;if(g<<24>>24==99)D=9;else if(g<<24>>24==70)D=14;else if(g<<24>>24==101){j=f+6|0;if((j|0)!=(m|0)){if(j>>>0>>0)switch(a[f+5>>0]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:{D=7;break}default:{}}}else D=7;if((D|0)==7?(0,(rga(f,90720,5)|0)==0):0)break a;if(g<<24>>24==99)D=9;else if(g<<24>>24==70)D=14;else D=21}else D=21;if((D|0)==9){D=0;j=f+10|0;if((j|0)!=(m|0)){if(j>>>0>>0)switch(a[f+9>>0]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:{D=12;break}default:{}}}else D=12;if((D|0)==12?(0,(rga(f,90728,9)|0)==0):0)break a;if(g<<24>>24==70)D=14;else D=21}c:do if((D|0)==14){D=0;j=f+14|0;if((j|0)!=(m|0)){if(j>>>0>=m>>>0){D=21;break}switch(a[f+13>>0]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:break;default:{D=21;break c}}}if(!(rga(f,90744,13)|0)){g=c[y>>2]|0;if(g&1)c[y>>2]=g|2;c[e>>2]=f+13;g=l}else D=21}while(0);d:do if((D|0)==21){D=0;if(((g&255)+-48|0)>>>0<10){Id[c[z>>2]&511](e);if(!(c[B>>2]|0)){g=1;h=f;break}else break a}j=(f+6|0)>>>0>>0;if(g<<24>>24==82&j?!((a[f+1>>0]|0)!=68|l<<24>>24==0):0){c[e>>2]=h;f=c[(c[A>>2]|0)+48>>2]|0;k=c[n>>2]|0;Id[c[x>>2]&511](e);g=c[e>>2]|0;if(g>>>0>=k>>>0){D=29;break b}if(((d[g>>0]|0)+-48|0)>>>0>=10){D=29;break b}j=Ld[c[o>>2]&511](e)|0;Id[c[z>>2]&511](e);g=c[e>>2]|0;if((j|0)<=-1){D=29;break b}if((j|0)>=(k-(g+1)|0)){D=29;break b}c[e>>2]=g+(j+1);if(!(c[B>>2]|0)){g=0;break}else{f=3;D=79;break b}}if(g<<24>>24==45&j?!((a[f+1>>0]|0)!=124|l<<24>>24==0):0){c[e>>2]=h;f=c[(c[A>>2]|0)+48>>2]|0;k=c[n>>2]|0;Id[c[x>>2]&511](e);g=c[e>>2]|0;if(g>>>0>=k>>>0){D=38;break b}if(((d[g>>0]|0)+-48|0)>>>0>=10){D=38;break b}g=Ld[c[o>>2]&511](e)|0;Id[c[z>>2]&511](e);j=c[e>>2]|0;if((g|0)<=-1){D=38;break b}if((g|0)>=(k-(j+1)|0)){D=38;break b}c[e>>2]=j+(g+1);if(!(c[B>>2]|0)){g=0;break}else{f=3;D=79;break b}}if(!(g<<24>>24==47&(f+2|0)>>>0>>0)){Id[c[z>>2]&511](e);if(!(c[B>>2]|0)){g=0;break}else break a}f=f+1|0;c[e>>2]=f;Id[c[z>>2]&511](e);if(c[B>>2]|0)break a;k=c[e>>2]|0;j=k-f|0;if((j+-1|0)>>>0<21&k>>>0>>0){k=a[f>>0]|0;g=92472;l=90760;while(1){if((k<<24>>24==(a[g>>0]|0)?(j|0)==(Dga(g|0)|0):0)?(pga(f,g,j)|0)==0:0)break;l=l+36|0;g=c[l>>2]|0;if(!g){g=0;break d}}f=c[y>>2]|0;if((f&1)+1&c[l+32>>2]){if((f&2|0)!=0?(qga(g,92456)|0)!=0:0){g=0;break}f=c[p>>2]|0;if(!f)j=0;else j=(c[f>>2]|0)==0?0:f;k=c[l+8>>2]|0;do if((k|0)!=11){switch(c[l+4>>2]|0){case 3:{c[C>>2]=t;if(!j){g=0;f=C}else{g=c[j>>2]|0;f=j+144|0}break}case 6:{c[C>>2]=e;g=0;f=C;break}case 5:{c[C>>2]=w;if(!j){g=0;f=C}else{g=c[j>>2]|0;f=j+284|0}break}case 7:{c[C>>2]=b;g=0;f=C;break}case 2:{c[C>>2]=u;g=0;f=C;break}case 8:{c[C>>2]=f;g=0;f=C;break}case 4:{c[C>>2]=v;if(!j){g=0;f=C}else{g=c[j>>2]|0;f=j+212|0}break}default:{c[C>>2]=q;g=0;f=C}}if(!(c[f>>2]|0)){c[B>>2]=0;g=0;break d}if((k+-9|0)>>>0<2){f=Xd[c[r>>2]&127](e,l,f,g,0)|0;break}else{f=Xd[c[s>>2]&127](e,l,f,g,0)|0;break}}else{Jd[c[l+12>>2]&255](b,e);f=c[B>>2]|0}while(0);c[B>>2]=f;if(f){if((f&255|0)!=162){D=79;break b}c[B>>2]=0;g=0}else g=0}else g=0}else g=0}while(0);Id[c[x>>2]&511](e);f=c[e>>2]|0;if(f>>>0>=m>>>0)break a;else l=g}if((D|0)==29){if(f){D=3;i=E;return D|0}c[B>>2]=3;D=3;i=E;return D|0}else if((D|0)==38){if(f){D=3;i=E;return D|0}c[B>>2]=3;D=3;i=E;return D|0}else if((D|0)==79){i=E;return f|0}}while(0);D=c[B>>2]|0;i=E;return D|0}function _t(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;h=c[b+100>>2]|0;e=b+528|0;f=c[e>>2]|0;if(!f){i=j;return}b=c[f>>2]|0;g=c[f+4>>2]|0;d=f+24|0;eh(h,c[d>>2]|0);c[d>>2]=0;if(b>>>0>1)Cga(f+28|0,0,(b<<2)+-4|0)|0;d=f+216|0;eh(h,c[d>>2]|0);c[d>>2]=0;d=f+148|0;eh(h,c[d>>2]|0);c[d>>2]=0;d=f+288|0;eh(h,c[d>>2]|0);c[d>>2]=0;if(b){d=0;do{c[f+(d<<2)+212>>2]=0;c[f+(d<<2)+144>>2]=0;c[f+(d<<2)+284>>2]=0;d=d+1|0}while((d|0)!=(b|0))}b=f+136|0;eh(h,c[b>>2]|0);c[b>>2]=0;c[f+140>>2]=0;b=(g|0)==0;if(!b){d=0;do{k=f+(d<<2)+8|0;eh(h,c[k>>2]|0);c[k>>2]=0;d=d+1|0}while((d|0)!=(g|0));if(!b){b=0;do{k=f+(b*12|0)+92|0;eh(h,c[k>>2]|0);c[k>>2]=0;a[f+(b*12|0)+88>>0]=0;b=b+1|0}while((b|0)!=(g|0))}}eh(h,c[e>>2]|0);c[e>>2]=0;i=j;return}function $t(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=au(a,b,e)|0;if(d){i=f;return d|0}b=c[(c[(c[a+4>>2]|0)+128>>2]|0)+48>>2]|0;if(!b){i=f;return d|0}Jd[c[(c[b>>2]|0)+4>>2]&255](c[b+4>>2]|0,e);i=f;return d|0}function au(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;j=k;e=c[a+4>>2]|0;h=c[(c[e+128>>2]|0)+48>>2]|0;l=a+1376|0;f=e+436|0;c[l+0>>2]=c[f+0>>2];c[l+4>>2]=c[f+4>>2];c[l+8>>2]=c[f+8>>2];c[l+12>>2]=c[f+12>>2];l=e+452|0;f=c[l+4>>2]|0;g=a+1392|0;c[g>>2]=c[l>>2];c[g+4>>2]=f;g=(h|0)!=0;do if(g){e=Od[c[c[h>>2]>>2]&255](c[h+4>>2]|0,b,d)|0;if(!e){f=c[d>>2]|0;e=c[d+4>>2]|0;break}else{l=e;i=k;return l|0}}else{f=c[(c[e+424>>2]|0)+(b<<2)>>2]|0;c[d>>2]=f;e=c[(c[e+428>>2]|0)+(b<<2)>>2]|0;c[d+4>>2]=e}while(0);e=Od[c[a+1484>>2]&255](a,f,e)|0;if(!((e|0)==0&g)){l=e;i=k;return l|0}if(!(c[(c[h>>2]|0)+8>>2]|0)){l=0;i=k;return l|0}e=a+32|0;c[j>>2]=(Rg(c[e>>2]|0)|0)>>16;c[j+4>>2]=0;f=a+40|0;g=j+8|0;c[g>>2]=(Rg(c[f>>2]|0)|0)>>16;a=a+44|0;d=j+12|0;c[d>>2]=(Rg(c[a>>2]|0)|0)>>16;l=ce[c[(c[h>>2]|0)+8>>2]&255](c[h+4>>2]|0,b,0,j)|0;c[e>>2]=c[j>>2]<<16;c[f>>2]=c[g>>2]<<16;c[a>>2]=c[d>>2]<<16;i=k;return l|0}function bu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;if(d>>>0>65535){b=0;i=j;return b|0}h=c[e+284>>2]|0;if((h|0)<=0){b=0;i=j;return b|0}f=c[e+288>>2]|0;e=0;while(1){g=c[f+(e<<2)>>2]|0;if((((g|0)!=0?(a[g>>0]|0)==(a[b>>0]|0):0)?(Dga(g|0)|0)==(d|0):0)?(rga(g,b,d)|0)==0:0){f=9;break}e=e+1|0;if((e|0)>=(h|0)){e=0;f=9;break}}if((f|0)==9){i=j;return e|0}return 0}function cu(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;d=c[a>>2]<<16|c[a+4>>2];a=c[b>>2]<<16|c[b+4>>2];if(d>>>0>a>>>0){b=1;i=e;return b|0}b=(d>>>0>>0)<<31>>31;i=e;return b|0}function du(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;k=c[a+100>>2]|0;c[m>>2]=0;f=a+528|0;e=c[f>>2]|0;do if(!e){e=ch(k,420,m)|0;if(!(c[m>>2]|0)){c[e+416>>2]=0;c[f>>2]=e;l=e;break}else{m=c[m>>2]|0;i=n;return m|0}}else l=e;while(0);do if(!b)g=15;else{e=c[l>>2]|0;if(e)if((e|0)==(b|0)){g=15;break}else break;e=l+148|0;c[e>>2]=hh(k,32,0,b,0,m)|0;if(c[m>>2]|0){m=c[m>>2]|0;i=n;return m|0}g=l+216|0;c[g>>2]=hh(k,196,0,b,0,m)|0;if(c[m>>2]|0){m=c[m>>2]|0;i=n;return m|0}j=l+288|0;c[j>>2]=hh(k,16,0,b,0,m)|0;if(c[m>>2]|0){m=c[m>>2]|0;i=n;return m|0}f=hh(k,4,0,b<<1,0,m)|0;c[l+136>>2]=f;if(c[m>>2]|0){m=c[m>>2]|0;i=n;return m|0}c[l+140>>2]=f+(b<<2);c[l+144>>2]=a+132;c[l+212>>2]=a+168;c[l+284>>2]=a+460;if(b>>>0>=2){h=c[e>>2]|0;a=c[g>>2]|0;e=c[j>>2]|0;f=2;do{h=h+32|0;c[l+(f<<2)+144>>2]=h;a=a+196|0;c[l+(f<<2)+212>>2]=a;e=e+16|0;c[l+(f<<2)+284>>2]=e;f=f+1|0}while(f>>>0<=b>>>0)}c[l>>2]=b;g=15}while(0);do if((g|0)==15){e=l+4|0;f=c[e>>2]|0;if(d){if(!((f|0)==0|(f|0)==(d|0)))break;c[e>>2]=d;f=d}g=c[l>>2]|0;if(!((g|0)!=0&(f|0)!=0)){m=c[m>>2]|0;i=n;return m|0}h=l+24|0;if(c[h>>2]|0){m=c[m>>2]|0;i=n;return m|0}e=hh(k,4,0,ea(f,g)|0,0,m)|0;c[h>>2]=e;if((c[m>>2]|0)==0&g>>>0>1)a=1;else{m=c[m>>2]|0;i=n;return m|0}while(1){c[l+(a<<2)+24>>2]=e+((ea(a,f)|0)<<2);a=a+1|0;if((a|0)==(g|0))break;e=c[h>>2]|0}m=c[m>>2]|0;i=n;return m|0}while(0);c[m>>2]=3;m=c[m>>2]|0;i=n;return m|0}function eu(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;f=a+4|0;e=Hh(d,c[a>>2]|0)|0;if(!e){e=Li(d,95160,f)|0;if(!e){e=b[f>>1]|0;if(e<<16>>16==768|e<<16>>16==512?(g=a+8|0,(c[g>>2]|0)>>>0>=(e<<16>>16==768?148:118)>>>0):0){if(e<<16>>16==512){f=a+132|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0}if(!(b[a+72>>1]&1)){e=Hh(d,c[a>>2]|0)|0;if(!e)e=xi(d,c[g>>2]|0,a+160|0)|0}else e=2}else e=2}}i=h;return e|0}function fu(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;l=o;n=c[b>>2]|0;j=(d|0)==0;if(!b)if(j){n=33;i=o;return n|0}else j=33;else{if(j){n=6;i=o;return n|0}m=Wd[c[n+4>>2]&511](n,40)|0;if(!m)j=64;else{j=m+0|0;k=j+40|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(k|0));c[m>>2]=d;c[m+4>>2]=e;c[m+8>>2]=0;c[m+32>>2]=0;c[m+20>>2]=0;d=m+24|0;c[d>>2]=230;c[l>>2]=2;c[l+16>>2]=m;if(g){c[l>>2]=10;e=c[b+16>>2]|0;k=b+(e<<2)+20|0;a:do if((e|0)>0){e=b+20|0;while(1){j=c[e>>2]|0;e=e+4|0;if(!(qga(c[(c[j>>2]|0)+8>>2]|0,g)|0))break a;if(e>>>0>=k>>>0){j=0;break}}}else j=0;while(0);c[l+20>>2]=j}k=Fh(b,l,f,h)|0;if(!k){n=(c[h>>2]|0)+8|0;c[n>>2]=c[n>>2]&-1025;n=0;i=o;return n|0}j=c[d>>2]|0;if(j)Id[j&511](m);Jd[c[n+8>>2]&255](n,m);n=k;i=o;return n|0}}Jd[c[n+8>>2]&255](n,d);n=j;i=o;return n|0}function gu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;E=i;i=i+48|0;C=E+32|0;y=E;A=E+8|0;z=E+16|0;B=E+24|0;x=c[b+60>>2]|0;f=ea(d,-11796480)|0;e=Si(c[b>>2]|0,c[b+4>>2]|0)|0;if((e|0)==11796480)e=-5898240-f<<1;f=f+5898240+(c[b>>2]|0)|0;Ri(y,x,f);l=b+8|0;c[y>>2]=(c[y>>2]|0)+(c[l>>2]|0);m=b+12|0;n=y+4|0;c[n>>2]=(c[n>>2]|0)+(c[m>>2]|0);o=(e>>31&-11796480)+5898240|0;if(!e){C=b+(d<<5)+80|0;D=0;a[C>>0]=0;i=E;return D|0}p=A+4|0;q=z+4|0;r=B+4|0;s=b+(d<<5)+68|0;t=b+(d<<5)+64|0;u=b+(d<<5)+88|0;v=b+(d<<5)+72|0;w=b+(d<<5)+76|0;k=b+(d<<5)+80|0;j=e;while(1){if((j|0)>5898240)h=5898240;else h=(j|0)<-5898240?-5898240:j;e=f;f=h+f|0;g=((h|0)<0?0-h|0:h)>>1;Ri(A,x,f);c[A>>2]=(c[A>>2]|0)+(c[l>>2]|0);c[p>>2]=(c[p>>2]|0)+(c[m>>2]|0);b=(Ni(g)|0)<<2;g=Ug(x,b,((Mi(g)|0)*3|0)+196608|0)|0;Ri(z,g,e+o|0);c[z>>2]=(c[z>>2]|0)+(c[y>>2]|0);c[q>>2]=(c[q>>2]|0)+(c[n>>2]|0);Ri(B,g,f-o|0);c[B>>2]=(c[B>>2]|0)+(c[A>>2]|0);c[r>>2]=(c[r>>2]|0)+(c[p>>2]|0);g=c[s>>2]|0;e=c[t>>2]|0;b=e+3|0;c[C>>2]=0;if(b>>>0>g>>>0){d=c[u>>2]|0;e=g;do e=e+16+(e>>>1)|0;while(e>>>0>>0);b=e;c[v>>2]=hh(d,8,g,b,c[v>>2]|0,C)|0;e=c[C>>2]|0;if(e)break;d=hh(d,1,g,b,c[w>>2]|0,C)|0;c[w>>2]=d;e=c[C>>2]|0;if(e)break;c[s>>2]=b;b=c[t>>2]|0;e=d}else{b=e;e=c[w>>2]|0}F=c[v>>2]|0;H=z;G=c[H+4>>2]|0;g=F+(b<<3)|0;c[g>>2]=c[H>>2];c[g+4>>2]=G;g=b+1|0;G=B;H=c[G+4>>2]|0;d=F+(g<<3)|0;c[d>>2]=c[G>>2];c[d+4>>2]=H;d=b+2|0;H=A;G=c[H+4>>2]|0;F=F+(d<<3)|0;c[F>>2]=c[H>>2];c[F+4>>2]=G;a[e+b>>0]=2;a[e+g>>0]=2;a[e+d>>0]=1;c[t>>2]=(c[t>>2]|0)+3;a[k>>0]=0;b=A;d=c[b+4>>2]|0;g=y;c[g>>2]=c[b>>2];c[g+4>>2]=d;if((j|0)==(h|0)){e=k;f=0;D=17;break}else j=j-h|0}if((D|0)==17){a[e>>0]=0;i=E;return f|0}a[k>>0]=0;G=k;H=e;a[G>>0]=0;i=E;return H|0}function hu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;i=i+16|0;c=ch(a,ea(c,b)|0,d)|0;i=d;return c|0}function iu(a,b){a=a|0;b=b|0;var c=0;c=i;eh(a,b);i=c;return}function ju(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;m=i;e=a&65535;a=a>>>16;if(!b){l=1;i=m;return l|0}if(c)do{l=c>>>0<5552?c:5552;k=c;c=c-l|0;if((l|0)>15){j=k>>>0<5552?k+-16|0:5536;h=j&-16;g=b;f=l;while(1){B=(d[g>>0]|0)+e|0;A=B+(d[g+1>>0]|0)|0;z=A+(d[g+2>>0]|0)|0;y=z+(d[g+3>>0]|0)|0;x=y+(d[g+4>>0]|0)|0;w=x+(d[g+5>>0]|0)|0;v=w+(d[g+6>>0]|0)|0;u=v+(d[g+7>>0]|0)|0;t=u+(d[g+8>>0]|0)|0;s=t+(d[g+9>>0]|0)|0;r=s+(d[g+10>>0]|0)|0;q=r+(d[g+11>>0]|0)|0;p=q+(d[g+12>>0]|0)|0;o=p+(d[g+13>>0]|0)|0;n=o+(d[g+14>>0]|0)|0;e=n+(d[g+15>>0]|0)|0;a=B+a+A+z+y+x+w+v+u+t+s+r+q+p+o+n+e|0;f=f+-16|0;if((f|0)<=15)break;else g=g+16|0}b=b+(h+16)|0;j=j-h|0}else j=k;if(j){f=b;g=j;while(1){e=(d[f>>0]|0)+e|0;a=e+a|0;g=g+-1|0;if(!g)break;else f=f+1|0}b=b+j|0}e=(e>>>0)%65521|0;a=(a>>>0)%65521|0}while((k|0)!=(l|0));B=a<<16|e;i=m;return B|0}function ku(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;o=b+12|0;p=c[o>>2]|0;q=a+48|0;f=c[q>>2]|0;m=a+52|0;e=c[m>>2]|0;if(f>>>0>e>>>0)e=c[a+44>>2]|0;n=e-f|0;l=b+16|0;g=c[l>>2]|0;n=n>>>0>g>>>0?g:n;k=(n|0)!=0&(d|0)==-5?0:d;c[l>>2]=g-n;g=b+20|0;c[g>>2]=n+(c[g>>2]|0);h=a+56|0;e=c[h>>2]|0;if(e){d=a+60|0;j=Od[e&255](c[d>>2]|0,f,n)|0;c[d>>2]=j;c[b+48>>2]=j}Aga(p|0,f|0,n|0)|0;j=p+n|0;d=f+n|0;if((d|0)!=(c[a+44>>2]|0)){b=k;p=j;a=d;c[o>>2]=p;c[q>>2]=a;i=r;return b|0}f=c[a+40>>2]|0;e=c[m>>2]|0;if((e|0)==(d|0)){c[m>>2]=f;e=f}d=e-f|0;e=c[l>>2]|0;d=d>>>0>e>>>0?e:d;c[l>>2]=e-d;c[g>>2]=d+(c[g>>2]|0);e=c[h>>2]|0;if(e){h=a+60|0;a=Od[e&255](c[h>>2]|0,f,d)|0;c[h>>2]=a;c[b+48>>2]=a}Aga(j|0,f|0,d|0)|0;b=(d|0)!=0&(k|0)==-5?0:k;p=p+(d+n)|0;a=f+d|0;c[o>>2]=p;c[q>>2]=a;i=r;return b|0}function lu(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+192|0;F=I+128|0;G=I;H=I+64|0;r=F+4|0;n=F+0|0;o=n+64|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(o|0));n=d;o=b;while(1){E=F+(c[o>>2]<<2)|0;c[E>>2]=(c[E>>2]|0)+1;n=n+-1|0;if(!n)break;else o=o+4|0}if((c[F>>2]|0)==(d|0)){c[h>>2]=0;c[j>>2]=0;H=0;i=I;return H|0}p=c[j>>2]|0;o=1;while(1){n=o+1|0;if(c[F+(o<<2)>>2]|0)break;if(n>>>0<16)o=n;else{o=n;break}}p=p>>>0>>0?o:p;n=15;while(1){if(c[F+(n<<2)>>2]|0){E=n;break}n=n+-1|0;if(!n){E=0;break}}D=p>>>0>E>>>0?E:p;c[j>>2]=D;n=1<>>0>>0){j=o;while(1){n=n-(c[F+(j<<2)>>2]|0)|0;if((n|0)<0){n=-3;break}j=j+1|0;n=n<<1;if(j>>>0>=E>>>0){C=n;break a}}i=I;return n|0}else C=n;while(0);n=F+(E<<2)|0;B=c[n>>2]|0;if((C-B|0)<0){H=-3;i=I;return H|0}c[n>>2]=C;c[H+4>>2]=0;n=E+-1|0;if(!n){j=0;p=b}else{q=0;j=r;p=H+8|0;while(1){q=(c[j>>2]|0)+q|0;c[p>>2]=q;n=n+-1|0;if(!n){j=0;p=b;break}else{j=j+4|0;p=p+4|0}}}while(1){n=c[p>>2]|0;if(n){z=H+(n<<2)|0;A=c[z>>2]|0;c[z>>2]=A+1;c[m+(A<<2)>>2]=j}j=j+1|0;if(j>>>0>=d>>>0)break;else p=p+4|0}n=c[H+(E<<2)>>2]|0;c[H>>2]=0;c[G>>2]=0;b:do if((o|0)<=(E|0)){z=m+(n<<2)|0;A=D&255;r=-1;p=0;d=0;s=0;j=0-D|0;b=0;c:while(1){x=F+(o<<2)|0;n=c[x>>2]|0;if(!n){n=r;q=s}else{y=1<(j|0)){t=r;while(1){u=n;v=p;while(1){n=u+1|0;s=E-j|0;s=s>>>0>D>>>0?D:s;p=o-j|0;b=1<>>0>w>>>0&p>>>0>>0){p=p+1|0;if(p>>>0>>0){b=b-w|0;r=x;while(1){b=b<<1;r=r+4|0;d=c[r>>2]|0;if(b>>>0<=d>>>0){d=p;break e}p=p+1|0;if(p>>>0>=s>>>0){d=p;break}else b=b-d|0}}else d=p}else d=p;while(0);s=1<>2]|0;b=p+s|0;if(b>>>0>1440){n=-3;break c}p=k+(p<<3)|0;c[G+(n<<2)>>2]=p;c[l>>2]=b;if(n){r=p;p=j;b=u;j=v;break}c[h>>2]=p;n=j+D|0;if((o|0)>(n|0)){v=j;j=n;u=0}else{n=0;d=p;u=s;break d}}c[H+(n<<2)>>2]=q;j=q>>>j;v=c[G+(b<<2)>>2]|0;b=(r-v>>3)-j|0;u=v+(j<<3)|0;a[u>>0]=d;a[u+1>>0]=A;c[v+(j<<3)+4>>2]=b;j=p+D|0;if((o|0)<=(j|0)){d=r;t=b;j=p;u=s;break}else t=b}}else{t=r;j=p;u=b}while(0);w=w+-1|0;b=o-j|0;s=b&255;do if(m>>>0>>0){p=c[m>>2]|0;if(p>>>0>>0){m=m+4|0;r=p>>>0<256?0:96;t=p;break}else{t=p-e|0;m=m+4|0;r=(c[g+(t<<2)>>2]|0)+80&255;t=c[f+(t<<2)>>2]|0;break}}else r=-64;while(0);b=1<>>j;if(p>>>0>>0){do{v=d+(p<<3)|0;a[v>>0]=r;a[v+1>>0]=s;c[d+(p<<3)+4>>2]=t;p=p+b|0}while(p>>>0>>0);b=y}else b=y;while(1){p=b^q;if(!(b&q))break;else{q=p;b=b>>>1}}if(((1<>2]|0))do{n=n+-1|0;j=j-D|0}while(((1<>2]|0));if(!w){q=t;b=u;break}else{q=p;r=t;p=j;b=u}}}if((o|0)<(E|0)){r=n;o=o+1|0;s=q}else break b}i=I;return n|0}while(0);if((C|0)==(B|0)){H=0;i=I;return H|0}H=(E|0)!=1?-5:0;i=I;return H|0}function mu(a,b,c){a=a|0;b=b|0;c=c|0;return b|0}function nu(a,b,c){a=a|0;b=b|0;c=c|0;return c|0}function ou(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=b[a+294>>1]|0;g=b[a+296>>1]|0;f=ea(h,c&65535)|0;h=ea(h,c>>16)|0;c=f+(h<<16)|0;a=ea(g,d&65535)|0;g=ea(g,d>>16)|0;d=a+(g<<16)|0;e=c+d|0;c=(h>>16)+(f>>31)+(a>>31)+(g>>16)+(c>>>0>>0&1)+(d>>>0>>0&1)+(e>>>0>>0&1)|0;d=c>>31;a=e+d|0;return (a>>>0>4294959103&1)+(a>>>0>>0&1)+c+d<<18|(a+8192|0)>>>14|0}function pu(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=b[a+290>>1]|0;g=b[a+292>>1]|0;f=ea(h,c&65535)|0;h=ea(h,c>>16)|0;c=f+(h<<16)|0;a=ea(g,d&65535)|0;g=ea(g,d>>16)|0;d=a+(g<<16)|0;e=c+d|0;c=(h>>16)+(f>>31)+(a>>31)+(g>>16)+(c>>>0>>0&1)+(d>>>0>>0&1)+(e>>>0>>0&1)|0;d=c>>31;a=e+d|0;return (a>>>0>4294959103&1)+(a>>>0>>0&1)+c+d<<18|(a+8192|0)>>>14|0}function qu(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;k=i;j=b[e+298>>1]|0;if(j<<16>>16){m=Ug(h,j<<16>>16,c[e+564>>2]|0)|0;j=g&65535;l=(c[f+16>>2]|0)+(j<<3)|0;c[l>>2]=(c[l>>2]|0)+m;j=(c[f+24>>2]|0)+j|0;a[j>>0]=d[j>>0]|0|8}j=b[e+300>>1]|0;if(!(j<<16>>16)){i=k;return}m=Ug(h,j<<16>>16,c[e+564>>2]|0)|0;l=g&65535;e=(c[f+16>>2]|0)+(l<<3)+4|0;c[e>>2]=(c[e>>2]|0)+m;l=(c[f+24>>2]|0)+l|0;a[l>>0]=d[l>>0]|0|16;i=k;return}function ru(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;h=i;g=b[a+298>>1]|0;if(g<<16>>16){j=Ug(f,g<<16>>16,c[a+564>>2]|0)|0;g=(c[d+12>>2]|0)+((e&65535)<<3)|0;c[g>>2]=(c[g>>2]|0)+j}g=b[a+300>>1]|0;if(!(g<<16>>16)){i=h;return}a=Ug(f,g<<16>>16,c[a+564>>2]|0)|0;j=(c[d+12>>2]|0)+((e&65535)<<3)+4|0;c[j>>2]=(c[j>>2]|0)+a;i=h;return}function su(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;f=f&65535;b=(c[e+16>>2]|0)+(f<<3)|0;c[b>>2]=(c[b>>2]|0)+g;f=(c[e+24>>2]|0)+f|0;a[f>>0]=d[f>>0]|0|8;return}function tu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;d=(c[b+12>>2]|0)+((d&65535)<<3)|0;c[d>>2]=(c[d>>2]|0)+e;return}function uu(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;f=f&65535;b=(c[e+16>>2]|0)+(f<<3)+4|0;c[b>>2]=(c[b>>2]|0)+g;f=(c[e+24>>2]|0)+f|0;a[f>>0]=d[f>>0]|0|16;return}function vu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;d=(c[b+12>>2]|0)+((d&65535)<<3)+4|0;c[d>>2]=(c[d>>2]|0)+e;return}function wu(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+16|0;l=p;c[l>>2]=0;o=d+12|0;k=c[o>>2]|0;n=d+16|0;j=c[n>>2]|0;do if((k|0)>=(j|0)){if((j|0)>44739241){c[l>>2]=64;e=64;f=0;c[h>>2]=f;i=p;return e|0}q=(j>>2)+4|0;m=q+j|0;m=(q|0)<0|(m|0)>44739242?44739242:m;q=d+20|0;k=hh(g,48,j,m,c[q>>2]|0,l)|0;c[q>>2]=k;j=c[l>>2]|0;if(!j){c[n>>2]=m;m=k;k=c[o>>2]|0;break}else{q=j;e=0;c[h>>2]=e;i=p;return q|0}}else m=c[d+20>>2]|0;while(0);j=m+(k*48|0)|0;n=d+24|0;a:do if((k|0)>0){g=j;while(1){j=g+-48|0;k=b[j>>1]|0;if((k|0)<(e|0)){j=g;break a}if((k|0)==(e|0)?(c[n>>2]|0)==(f|0):0){j=g;break a}g=g+0|0;k=j+0|0;l=g+48|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(l|0));if(j>>>0>m>>>0)g=j;else break}}while(0);c[o>>2]=(c[o>>2]|0)+1;g=j+0|0;l=g+48|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(l|0));b[j>>1]=e;a[j+13>>0]=f;q=0;e=j;c[h>>2]=e;i=p;return q|0}function xu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;l=c[d+28>>2]|0;j=c[e+28>>2]|0;g=d+24|0;k=(c[g>>2]|0)-l|0;f=e+24|0;h=(c[f>>2]|0)-j|0;if(a>>>0>b>>>0){i=m;return}if((j|0)==(l|0)){do{j=c[a+28>>2]|0;c[a+24>>2]=((j|0)>(l|0)?h:k)+j;a=a+40|0}while(a>>>0<=b>>>0);i=m;return}e=j-l|0;if((j|0)>(l|0)){do{d=c[a+28>>2]|0;do if((d|0)>(l|0))if((d|0)<(j|0)){n=c[g>>2]|0;d=(Ug(d-l|0,(c[f>>2]|0)-n|0,e)|0)+n|0;break}else{d=d+h|0;break}else d=d+k|0;while(0);c[a+24>>2]=d;a=a+40|0}while(a>>>0<=b>>>0);i=m;return}else{do{d=c[a+28>>2]|0;do if((d|0)>(j|0))if((d|0)<(l|0)){n=c[g>>2]|0;d=(Ug(d-l|0,(c[f>>2]|0)-n|0,e)|0)+n|0;break}else{d=d+k|0;break}else d=d+h|0;while(0);c[a+24>>2]=d;a=a+40|0}while(a>>>0<=b>>>0);i=m;return}}function yu(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;t=v+4|0;u=v;s=e+12|0;l=c[s>>2]|0;m=a[b>>0]|0;if(!(m<<24>>24))g=0;else{h=m;j=b;g=0;do{j=j+1|0;g=(g*31|0)+(h<<24>>24)|0;h=a[j>>0]|0}while(h<<24>>24!=0)}r=e+4|0;j=c[r>>2]|0;g=l+(((g>>>0)%(j>>>0)|0)<<2)|0;h=c[g>>2]|0;a:do if(h){k=l+(j+-1<<2)|0;while(1){j=c[h>>2]|0;if((a[j>>0]|0)==m<<24>>24?(qga(j,b)|0)==0:0)break;g=g+-4|0;g=g>>>0>>0?k:g;h=c[g>>2]|0;if(!h){n=8;break a}}c[u>>2]=0;if(!h)h=g;else{c[h+4>>2]=d;u=c[u>>2]|0;i=v;return u|0}}else n=8;while(0);if((n|0)==8){c[u>>2]=0;h=g}g=ch(f,8,u)|0;if(c[u>>2]|0){u=c[u>>2]|0;i=v;return u|0}c[h>>2]=g;c[g>>2]=b;c[g+4>>2]=d;q=e+8|0;g=c[q>>2]|0;do if((g|0)>=(c[e>>2]|0)){o=c[s>>2]|0;p=c[r>>2]|0;c[t>>2]=0;g=p<<1;c[r>>2]=g;c[e>>2]=(g|0)/3|0;c[s>>2]=hh(f,4,0,g,0,t)|0;g=c[t>>2]|0;if(g){c[u>>2]=g;u=c[u>>2]|0;i=v;return u|0}if((p|0)>0){n=o;d=0;while(1){b=c[n>>2]|0;if(b){j=c[b>>2]|0;m=c[s>>2]|0;l=a[j>>0]|0;if(!(l<<24>>24))g=0;else{k=l;h=j;g=0;do{h=h+1|0;g=(g*31|0)+(k<<24>>24)|0;k=a[h>>0]|0}while(k<<24>>24!=0)}k=c[r>>2]|0;g=m+(((g>>>0)%(k>>>0)|0)<<2)|0;h=c[g>>2]|0;b:do if(h){k=m+(k+-1<<2)|0;do{h=c[h>>2]|0;if((a[h>>0]|0)==l<<24>>24?(qga(h,j)|0)==0:0)break b;g=g+-4|0;g=g>>>0>>0?k:g;h=c[g>>2]|0}while((h|0)!=0)}while(0);c[g>>2]=b}d=d+1|0;if((d|0)==(p|0))break;else n=n+4|0}}eh(f,o);f=c[t>>2]|0;c[u>>2]=f;if(!f){g=c[q>>2]|0;break}else{u=c[u>>2]|0;i=v;return u|0}}while(0);c[q>>2]=g+1;u=c[u>>2]|0;i=v;return u|0}function zu(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+48|0;r=u+4|0;o=u;p=u+8|0;t=b+8|0;c[t>>2]=0;s=b+4|0;if(c[s>>2]|0){c[c[b>>2]>>2]=7048;c[(c[b>>2]|0)+4>>2]=7048;c[(c[b>>2]|0)+8>>2]=7048;c[(c[b>>2]|0)+12>>2]=7048;c[(c[b>>2]|0)+16>>2]=7048}if(!g){t=0;i=u;return t|0}l=a[f>>0]|0;if(!(l<<24>>24)){t=0;i=u;return t|0}if(!e){t=6;i=u;return t|0}j=a[e>>0]|0;if(!(j<<24>>24)){t=6;i=u;return t|0}h=p+0|0;k=h+32|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(k|0));h=j;j=0;while(1){if(h<<24>>24==43){e=e+1|0;if(!(a[e>>0]|0))j=1;else q=11}else if(!(h<<24>>24)){e=j;break}else{e=e+1|0;q=11}if((q|0)==11){q=0;k=h&255;n=p+(k>>>3)|0;a[n>>0]=1<<(k&7)|d[n>>0]}h=a[e>>0]|0}n=f+g|0;a:do if((g|0)>0){m=b+12|0;g=(e|0)==0;e=l;k=0;while(1){if(!(e<<24>>24))break a;else h=f;while(1){k=e&255;j=h+1|0;if(a[p+(k>>>3)>>0]&1<<(k&7))break;e=a[j>>0]|0;if(!(e<<24>>24)){h=j;break}else h=j}e=c[t>>2]|0;if((e|0)==(c[s>>2]|0)){c[o>>2]=0;if((e|0)==-1)e=-1;else{j=e+5+(e>>>1)|0;if((e|0)==536870911)break;j=j>>>0>>0|j>>>0>536870911?536870911:j;c[b>>2]=hh(c[m>>2]|0,4,e,j,c[b>>2]|0,o)|0;e=c[o>>2]|0;if(e){q=43;break}c[s>>2]=j;e=c[t>>2]|0}}c[t>>2]=e+1;c[(c[b>>2]|0)+(e<<2)>>2]=h>>>0>f>>>0?f:7048;e=a[h>>0]|0;j=e<<24>>24==0;if(g)if(j){e=0;k=0;j=h}else{j=h+1|0;a[h>>0]=0;h=a[j>>0]|0;q=31}else if(!j){j=h;while(1){k=e&255;if(!(a[p+(k>>>3)>>0]&1<<(k&7)))break;a[j>>0]=0;j=j+1|0;e=a[j>>0]|0;if(!(e<<24>>24)){e=0;break}}if(j>>>0>h>>>0){h=e;q=31}else k=0}else{e=0;k=0;j=h}if((q|0)==31){q=0;e=h;k=h<<24>>24==0}k=k&1;if(j>>>0>>0)f=j;else break a}if((q|0)==43){i=u;return e|0}c[o>>2]=64;t=64;i=u;return t|0}else k=0;while(0);e=(c[t>>2]|0)+k|0;j=c[s>>2]|0;do if(e>>>0>=j>>>0?(c[r>>2]=0,j>>>0<(e+1|0)>>>0):0){e=j+5+(j>>>1)|0;if((j|0)==536870911){c[r>>2]=64;t=64;i=u;return t|0}h=e>>>0>>0|e>>>0>536870911?536870911:e;c[b>>2]=hh(c[b+12>>2]|0,4,j,h,c[b>>2]|0,r)|0;e=c[r>>2]|0;if(!e){c[s>>2]=h;break}else{t=e;i=u;return t|0}}while(0);e=c[t>>2]|0;if(k){s=e+1|0;c[t>>2]=s;c[(c[b>>2]|0)+(e<<2)>>2]=7048;e=s}c[(c[b>>2]|0)+(e<<2)>>2]=0;t=0;i=u;return t|0}function Au(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+144|0;u=w;t=w+8|0;if(!(pga(d,7056,13)|0)){r=h+32|0;m=c[r>>2]|0;a:do if(((m|0)!=0?(c[m+72>>2]|0)!=0:0)?(o=c[m+128>>2]|0,p=c[o+12>>2]|0,o=c[o+4>>2]|0,n=p+((1895527114%(o>>>0)|0)<<2)|0,l=c[n>>2]|0,(l|0)!=0):0){o=p+(o+-1<<2)|0;while(1){f=c[l>>2]|0;if((a[f>>0]|0)==70?(qga(f,6712)|0)==0:0)break;l=n+-4|0;n=l>>>0

>>0?o:l;l=c[n>>2]|0;if(!l){v=11;break a}}if(!((l|0)!=0?((c[m+80>>2]|0)+(c[l+4>>2]<<4)|0)!=0:0))v=11}else v=11;while(0);do if((v|0)==11){l=b[m+12>>1]|0;c[m+40>>2]=l;c[u>>2]=l;fga(t,6704,u)|0;l=Bu(c[r>>2]|0,6712,t)|0;if(!l){m=c[r>>2]|0;b[m+278660>>1]=1;break}else{h=l;i=w;return h|0}}while(0);b:do if(((m|0)!=0?(c[m+72>>2]|0)!=0:0)?(q=c[m+128>>2]|0,s=c[q+12>>2]|0,q=c[q+4>>2]|0,k=s+((908209322%(q>>>0)|0)<<2)|0,j=c[k>>2]|0,(j|0)!=0):0){f=s+(q+-1<<2)|0;while(1){l=c[j>>2]|0;if((a[l>>0]|0)==70?(qga(l,6728)|0)==0:0)break;j=k+-4|0;k=j>>>0>>0?f:j;j=c[k>>2]|0;if(!j){v=22;break b}}if(!((j|0)!=0?((c[m+80>>2]|0)+(c[j+4>>2]<<4)|0)!=0:0))v=22}else v=22;while(0);do if((v|0)==22){j=b[m+14>>1]|0;c[m+44>>2]=j;c[u>>2]=j;fga(t,6704,u)|0;j=Bu(c[r>>2]|0,6728,t)|0;if(!j){b[(c[r>>2]|0)+278660>>1]=1;break}else{h=j;i=w;return h|0}}while(0);c[h>>2]=c[h>>2]&-17;c[g>>2]=48;h=0;i=w;return h|0}if(!(pga(d,7072,21)|0)){h=0;i=w;return h|0}if(!(pga(d,5288,7)|0)){j=d+7|0;if(a[j>>0]|0){a[j>>0]=0;j=d+8|0}h=Bu(c[h+32>>2]|0,d,j)|0;i=w;return h|0}s=h+32|0;q=c[s>>2]|0;f=d;while(1){j=a[f>>0]|0;if(j<<24>>24==32|j<<24>>24==9){v=33;break}else if(!(j<<24>>24)){p=-1;break}f=f+1|0}if((v|0)==33){a[f>>0]=0;p=j<<24>>24}c:do if((d|0)!=0?(r=a[d>>0]|0,r<<24>>24!=0):0){n=c[q+278688>>2]|0;l=r;k=d;j=0;do{k=k+1|0;j=(j*31|0)+(l<<24>>24)|0;l=a[k>>0]|0}while(l<<24>>24!=0);l=c[q+278680>>2]|0;k=n+(((j>>>0)%(l>>>0)|0)<<2)|0;j=c[k>>2]|0;if(j){m=n+(l+-1<<2)|0;while(1){l=c[j>>2]|0;if((a[l>>0]|0)==r<<24>>24?(qga(l,d)|0)==0:0)break;j=k+-4|0;k=j>>>0>>0?m:j;j=c[k>>2]|0;if(!j){j=0;break c}}if(j){j=c[j+4>>2]|0;if(j>>>0>82){j=(c[q+278668>>2]|0)+(j+-83<<4)|0;break}else{j=5312+(j<<4)|0;break}}else j=0}else j=0}else j=0;while(0);if((p|0)==-1)k=0;else{k=p&255;a[f>>0]=k}if((j|0)!=0?(c[j+4>>2]|0)!=1:0){o=h+139304|0;j=zu(o,6656,d,e)|0;if(j){h=j;i=w;return h|0}k=c[o>>2]|0;q=c[k>>2]|0;p=h+139312|0;j=c[p>>2]|0;do if(j){if(j>>>0<2){c[p>>2]=0;j=0;break}l=j+-1|0;j=0;f=1;while(1){c[k+(j<<2)>>2]=c[k+(f<<2)>>2];j=j+1|0;if((j|0)==(l|0))break;k=c[o>>2]|0;f=f+1|0}c[p>>2]=l;if(l){j=c[c[o>>2]>>2]|0;m=j;n=1;k=0;while(1){f=a[m>>0]|0;if(f<<24>>24){while(1){m=m+1|0;l=k+1|0;a[j+k>>0]=f;f=a[m>>0]|0;if(!(f<<24>>24)){k=l;break}else k=l}l=c[p>>2]|0}if(n>>>0>>0){a[j+k>>0]=32;l=c[p>>2]|0;k=k+1|0}if(n>>>0>=l>>>0)break;m=c[(c[o>>2]|0)+(n<<2)>>2]|0;n=n+1|0}if((j|0)==7048)j=7048;else a[j+k>>0]=0}else j=0}else j=0;while(0);h=Bu(c[s>>2]|0,q,j)|0;i=w;return h|0}j=d+e|0;if(k<<24>>24){a[f>>0]=0;f=f+1|0}while(1){k=a[f>>0]|0;if(!(k<<24>>24==32|k<<24>>24==9))break;f=f+1|0}f=k<<24>>24==34?f+1|0:f;d:do if(j>>>0>f>>>0){while(1){j=j+-1|0;k=a[j>>0]|0;if(k<<24>>24==34)break;else if(!(k<<24>>24==9|k<<24>>24==32))break d;a[j>>0]=0;if(j>>>0<=f>>>0)break d}a[j>>0]=0}while(0);h=Bu(c[s>>2]|0,d,f)|0;i=w;return h|0}function Bu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+16|0;u=z+4|0;y=z;x=c[b+278664>>2]|0;c[y>>2]=0;w=b+128|0;l=c[w>>2]|0;n=c[l+12>>2]|0;s=a[e>>0]|0;m=s<<24>>24==0;if(m)g=0;else{j=s;h=e;g=0;do{h=h+1|0;g=(g*31|0)+(j<<24>>24)|0;j=a[h>>0]|0}while(j<<24>>24!=0)}j=c[l+4>>2]|0;h=n+(((g>>>0)%(j>>>0)|0)<<2)|0;g=c[h>>2]|0;a:do if(g){l=n+(j+-1<<2)|0;while(1){j=c[g>>2]|0;if((a[j>>0]|0)==s<<24>>24?(qga(j,e)|0)==0:0)break;g=h+-4|0;h=g>>>0>>0?l:g;g=c[h>>2]|0;if(!g)break a}if(g){m=c[b+80>>2]|0;n=c[g+4>>2]|0;g=c[m+(n<<4)+4>>2]|0;if((g|0)==1){g=m+(n<<4)+12|0;eh(x,c[g>>2]|0);c[g>>2]=0;if(!f){y=c[y>>2]|0;i=z;return y|0}if(!(a[f>>0]|0)){y=c[y>>2]|0;i=z;return y|0}c[g>>2]=Ui(x,f,y)|0;y=c[y>>2]|0;i=z;return y|0}else if((g|0)==2){if((f|0)!=0?(k=a[f>>0]|0,k<<24>>24!=0):0){l=k<<24>>24==45;g=l?f+1|0:f;f=a[g>>0]|0;if(f<<24>>24==48){x=a[g+1>>0]|0;if(x<<24>>24==88|x<<24>>24==120){f=g+2|0;k=16;g=f;f=a[f>>0]|0;j=6792}else{k=10;f=48;j=6992}}else{k=10;j=6992}h=f<<24>>24;if(!(d[j+((f&255)>>>3)>>0]&1<<(h&7)))g=0;else{f=g;g=0;do{g=ea(g,k)|0;g=(d[6824+h>>0]|0)+g|0;f=f+1|0;x=a[f>>0]|0;h=x<<24>>24}while((1<<(h&7)&d[j+((x&255)>>>3)>>0]|0)!=0)}g=l?0-g|0:g}else g=0;c[m+(n<<4)+12>>2]=g;y=c[y>>2]|0;i=z;return y|0}else if((g|0)==3){do if(f){g=a[f>>0]|0;if(g<<24>>24==48){x=a[f+1>>0]|0;if(x<<24>>24==88|x<<24>>24==120){g=f+2|0;f=g;k=16;g=a[g>>0]|0;j=6792}else{k=10;g=48;j=6992}}else if(!(g<<24>>24)){g=0;break}else{k=10;j=6992}h=g<<24>>24;if(d[j+((g&255)>>>3)>>0]&1<<(h&7)){g=0;do{g=ea(g,k)|0;g=(d[6824+h>>0]|0)+g|0;f=f+1|0;x=a[f>>0]|0;h=x<<24>>24}while((1<<(h&7)&d[j+((x&255)>>>3)>>0]|0)!=0)}else g=0}else g=0;while(0);c[m+(n<<4)+12>>2]=g;y=c[y>>2]|0;i=z;return y|0}else{y=c[y>>2]|0;i=z;return y|0}}}while(0);p=b+278676|0;q=b+278688|0;o=c[q>>2]|0;if(m)g=0;else{j=s;h=e;g=0;do{h=h+1|0;g=(g*31|0)+(j<<24>>24)|0;j=a[h>>0]|0}while(j<<24>>24!=0)}r=b+278680|0;l=c[r>>2]|0;g=o+(((g>>>0)%(l>>>0)|0)<<2)|0;h=c[g>>2]|0;b:do if(h){n=o+(l+-1<<2)|0;while(1){j=c[h>>2]|0;if((a[j>>0]|0)==s<<24>>24?(qga(j,e)|0)==0:0)break;h=g+-4|0;g=h>>>0>>0?n:h;h=c[g>>2]|0;if(!h){t=38;break b}}if(!h)t=38}else t=38;while(0);c:do if((t|0)==38){c[u>>2]=0;if(m)g=0;else{j=s;h=e;g=0;do{h=h+1|0;g=(g*31|0)+(j<<24>>24)|0;j=a[h>>0]|0}while(j<<24>>24!=0)}h=o+(((g>>>0)%(l>>>0)|0)<<2)|0;g=c[h>>2]|0;d:do if(g){l=o+(l+-1<<2)|0;while(1){j=c[g>>2]|0;if((a[j>>0]|0)==s<<24>>24?(qga(j,e)|0)==0:0)break;g=h+-4|0;h=g>>>0>>0?l:g;g=c[h>>2]|0;if(!g){t=46;break d}}if(g){l=s;n=o}else t=46}else t=46;while(0);do if((t|0)==46){n=b+278672|0;m=c[n>>2]|0;g=b+278668|0;m=hh(x,16,m,m+1|0,c[g>>2]|0,u)|0;c[g>>2]=m;g=c[u>>2]|0;if(!g){j=c[n>>2]|0;h=m+(j<<4)|0;c[h+0>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;l=(Dga(e|0)|0)+1|0;k=hh(x,1,0,l,0,u)|0;c[h>>2]=k;g=c[u>>2]|0;if(!g){Aga(k|0,e|0,l|0)|0;c[m+(j<<4)+4>>2]=1;c[m+(j<<4)+8>>2]=0;g=yu(c[h>>2]|0,(c[n>>2]|0)+83|0,p,x)|0;c[u>>2]=g;if(!g){c[n>>2]=(c[n>>2]|0)+1;l=a[e>>0]|0;n=c[q>>2]|0;break}}}c[y>>2]=g;y=c[y>>2]|0;i=z;return y|0}while(0);c[y>>2]=0;if(!(l<<24>>24))g=0;else{j=l;h=e;g=0;do{h=h+1|0;g=(g*31|0)+(j<<24>>24)|0;j=a[h>>0]|0}while(j<<24>>24!=0)}j=c[r>>2]|0;h=n+(((g>>>0)%(j>>>0)|0)<<2)|0;g=c[h>>2]|0;if(!g)h=0;else{k=n+(j+-1<<2)|0;while(1){j=c[g>>2]|0;if((a[j>>0]|0)==l<<24>>24?(qga(j,e)|0)==0:0){h=g;break c}g=h+-4|0;h=g>>>0>>0?k:g;g=c[h>>2]|0;if(!g){h=0;break}}}}while(0);p=b+76|0;g=c[p>>2]|0;j=b+72|0;if((g|0)==(c[j>>2]|0)){if(!g){g=hh(x,16,0,1,0,y)|0;c[b+80>>2]=g;if(c[y>>2]|0){y=c[y>>2]|0;i=z;return y|0}}else{u=b+80|0;g=hh(x,16,g,g+1|0,c[u>>2]|0,y)|0;c[u>>2]=g;if(c[y>>2]|0){y=c[y>>2]|0;i=z;return y|0}}u=g+(c[j>>2]<<4)|0;c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[u+12>>2]=0;c[j>>2]=(c[j>>2]|0)+1}g=c[h+4>>2]|0;if(g>>>0>82)g=(c[b+278668>>2]|0)+(g+-83<<4)|0;else g=5312+(g<<4)|0;k=c[b+80>>2]|0;m=c[p>>2]|0;o=k+(m<<4)|0;c[o>>2]=c[g>>2];u=g+4|0;c[k+(m<<4)+4>>2]=c[u>>2];c[k+(m<<4)+8>>2]=c[g+8>>2];g=c[u>>2]|0;if((g|0)==3){do if(f){g=a[f>>0]|0;if(g<<24>>24==48){v=a[f+1>>0]|0;if(v<<24>>24==88|v<<24>>24==120){g=f+2|0;f=g;l=16;g=a[g>>0]|0;h=6792}else{l=10;g=48;h=6992}}else if(!(g<<24>>24)){g=0;break}else{l=10;h=6992}j=g<<24>>24;if(d[h+((g&255)>>>3)>>0]&1<<(j&7)){g=0;do{g=ea(g,l)|0;g=(d[6824+j>>0]|0)+g|0;f=f+1|0;v=a[f>>0]|0;j=v<<24>>24}while((1<<(j&7)&d[h+((v&255)>>>3)>>0]|0)!=0)}else g=0}else g=0;while(0);c[k+(m<<4)+12>>2]=g}else if((g|0)==1){g=k+(m<<4)+12|0;c[g>>2]=0;if(((f|0)!=0?(a[f>>0]|0)!=0:0)?(c[g>>2]=Ui(x,f,y)|0,(c[y>>2]|0)!=0):0){y=c[y>>2]|0;i=z;return y|0}}else if((g|0)==2){if((f|0)!=0?(v=a[f>>0]|0,v<<24>>24!=0):0){l=v<<24>>24==45;g=l?f+1|0:f;j=a[g>>0]|0;if(j<<24>>24==48){v=a[g+1>>0]|0;if(v<<24>>24==88|v<<24>>24==120){j=g+2|0;n=16;g=j;j=a[j>>0]|0;h=6792}else{n=10;j=48;h=6992}}else{n=10;h=6992}f=j<<24>>24;if(!(d[h+((j&255)>>>3)>>0]&1<<(f&7)))g=0;else{j=g;g=0;do{g=ea(g,n)|0;g=(d[6824+f>>0]|0)+g|0;j=j+1|0;v=a[j>>0]|0;f=v<<24>>24}while((1<<(f&7)&d[h+((v&255)>>>3)>>0]|0)!=0)}g=l?0-g|0:g}else g=0;c[k+(m<<4)+12>>2]=g}if((pga(e,5288,7)|0)!=0?(x=yu(c[o>>2]|0,c[p>>2]|0,c[w>>2]|0,x)|0,c[y>>2]=x,(x|0)!=0):0){y=c[y>>2]|0;i=z;return y|0}c[p>>2]=(c[p>>2]|0)+1;if(!(pga(e,7024,12)|0)){c[b+36>>2]=c[k+(m<<4)+12>>2];y=c[y>>2]|0;i=z;return y|0}if(!(pga(e,6712,11)|0)){c[b+40>>2]=c[k+(m<<4)+12>>2];y=c[y>>2]|0;i=z;return y|0}if(!(pga(e,6728,12)|0)){c[b+44>>2]=c[k+(m<<4)+12>>2];y=c[y>>2]|0;i=z;return y|0}if(pga(e,5024,7)|0){y=c[y>>2]|0;i=z;return y|0}g=c[k+(m<<4)+12>>2]|0;if(!g){c[y>>2]=3;y=c[y>>2]|0;i=z;return y|0}switch(a[g>>0]|0){case 67:case 99:{c[b+28>>2]=32;y=c[y>>2]|0;i=z;return y|0}case 80:case 112:{c[b+28>>2]=8;y=c[y>>2]|0;i=z;return y|0}case 77:case 109:{c[b+28>>2]=16;y=c[y>>2]|0;i=z;return y|0}default:{y=c[y>>2]|0;i=z;return y|0}}return 0}function Cu(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+16|0;o=y+4|0;x=y;c[x>>2]=0;p=k+32|0;v=c[p>>2]|0;w=c[v+278664>>2]|0;a:do if(!(pga(f,5288,7)|0)){j=f+7|0;if(!(a[j>>0]|0)){n=g+-7|0;g=j}else{n=g+-8|0;g=f+8|0}c[o>>2]=0;h=v+88|0;m=c[h>>2]|0;l=n+1|0;j=v+84|0;m=hh(w,1,m,m+l|0,c[j>>2]|0,o)|0;c[j>>2]=m;j=c[o>>2]|0;if(!j){j=c[h>>2]|0;Aga(m+j|0,g|0,n|0)|0;a[m+(j+n)>>0]=10;c[h>>2]=(c[h>>2]|0)+l;j=c[o>>2]|0}c[x>>2]=j;t=196}else{m=c[k>>2]|0;b:do if(!(m&32)){if(pga(f,6696,5)|0){c[x>>2]=180;m=k;j=180;break a}h=k+139304|0;j=zu(h,6656,f,g)|0;c[x>>2]=j;if(j){m=k;break a}j=c[(c[h>>2]|0)+4>>2]|0;do if(j){h=a[j>>0]|0;if(h<<24>>24==48){u=a[j+1>>0]|0;if(u<<24>>24==88|u<<24>>24==120){h=j+2|0;j=h;n=16;h=a[h>>0]|0;l=6792}else{n=10;h=48;l=6992}}else if(!(h<<24>>24)){t=17;break}else{n=10;l=6992}m=h<<24>>24;if(d[l+((h&255)>>>3)>>0]&1<<(m&7)){h=0;do{h=ea(h,n)|0;h=(d[6824+m>>0]|0)+h|0;j=j+1|0;u=a[j>>0]|0;m=u<<24>>24}while((1<<(m&7)&d[l+((u&255)>>>3)>>0]|0)!=0);j=v+48|0;c[j>>2]=h;c[k+4>>2]=h;if(h)if(h>>>0>1114111){c[x>>2]=6;m=k;j=6;break a}else j=h;else t=19}else t=17}else t=17;while(0);if((t|0)==17){j=v+48|0;c[j>>2]=0;c[k+4>>2]=0;t=19}if((t|0)==19){c[j>>2]=64;j=64}c[v+56>>2]=hh(w,36,0,j,0,x)|0;j=c[x>>2]|0;if(j){m=k;break a}c[k>>2]=c[k>>2]|32}else{if(!(pga(f,6744,7)|0)){bea(c[v+56>>2]|0,c[v+52>>2]|0,36,204);c[k>>2]=c[k>>2]&-2;break}if(!(pga(f,6752,7)|0)){c[k+28>>2]=0;c[k>>2]=m&-4033;break}j=(m&64|0)==0;if((!j?(c[k+28>>2]|0)==-1:0)?(c[(c[k+36>>2]|0)+4>>2]|0)==0:0)break;if(!(pga(f,6760,9)|0)){q=k+24|0;eh(w,c[q>>2]|0);c[q>>2]=0;p=k+139304|0;j=zu(p,6656,f,g)|0;c[x>>2]=j;if(j){m=k;break a}o=k+139312|0;j=c[o>>2]|0;do if(j){if(j>>>0<2){c[o>>2]=0;break}h=j+-1|0;j=0;m=1;while(1){v=c[p>>2]|0;c[v+(j<<2)>>2]=c[v+(m<<2)>>2];j=j+1|0;if((j|0)==(h|0))break;else m=m+1|0}c[o>>2]=h;if(h){m=c[c[p>>2]>>2]|0;n=m;g=1;j=0;while(1){l=a[n>>0]|0;if(l<<24>>24){while(1){n=n+1|0;h=j+1|0;a[m+j>>0]=l;l=a[n>>0]|0;if(!(l<<24>>24)){j=h;break}else j=h}h=c[o>>2]|0}if(g>>>0>>0){a[m+j>>0]=32;h=c[o>>2]|0;j=j+1|0}if(g>>>0>=h>>>0)break;n=c[(c[p>>2]|0)+(g<<2)>>2]|0;g=g+1|0}if((m|0)!=7048){a[m+j>>0]=0;if(!m)break}else m=7048;h=j+1|0;l=hh(w,1,0,h,0,x)|0;c[q>>2]=l;j=c[x>>2]|0;if(j){m=k;break a}Aga(l|0,m|0,h|0)|0;c[k>>2]=c[k>>2]|64;break b}}while(0);c[x>>2]=3;m=k;j=3;break a}if(!(pga(f,6776,8)|0)){if(j){c[x>>2]=181;m=k;j=181;break a}m=k+139304|0;j=zu(m,6656,f,g)|0;c[x>>2]=j;if(j){m=k;break a}o=c[m>>2]|0;j=c[o+4>>2]|0;if((j|0)!=0?(l=a[j>>0]|0,l<<24>>24!=0):0){g=l<<24>>24==45;j=g?j+1|0:j;m=a[j>>0]|0;if(m<<24>>24==48){u=a[j+1>>0]|0;if(u<<24>>24==88|u<<24>>24==120){m=j+2|0;n=16;j=m;m=a[m>>0]|0;l=6792}else{n=10;m=48;l=6992}}else{n=10;l=6992}h=m<<24>>24;if(!(d[l+((m&255)>>>3)>>0]&1<<(h&7)))j=0;else{m=j;j=0;do{j=ea(j,n)|0;j=(d[6824+h>>0]|0)+j|0;m=m+1|0;u=a[m>>0]|0;h=u<<24>>24}while((1<<(h&7)&d[l+((u&255)>>>3)>>0]|0)!=0)}j=g?0-j|0:j}else j=0;p=k+28|0;j=(j|0)<-1?-1:j;c[p>>2]=j;do if((j|0)==-1)if((c[k+139312>>2]|0)>>>0>2){j=c[o+8>>2]|0;if((j|0)!=0?(r=a[j>>0]|0,r<<24>>24!=0):0){g=r<<24>>24==45;j=g?j+1|0:j;m=a[j>>0]|0;do if(m<<24>>24==48){u=a[j+1>>0]|0;if(!(u<<24>>24==88|u<<24>>24==120)){n=10;m=48;l=6992;break}m=j+2|0;n=16;j=m;m=a[m>>0]|0;l=6792}else{n=10;l=6992}while(0);h=m<<24>>24;if(!(d[l+((m&255)>>>3)>>0]&1<<(h&7)))j=0;else{m=j;j=0;do{j=ea(j,n)|0;j=(d[6824+h>>0]|0)+j|0;m=m+1|0;u=a[m>>0]|0;h=u<<24>>24}while((1<<(h&7)&d[l+((u&255)>>>3)>>0]|0)!=0)}j=g?0-j|0:j;c[p>>2]=j;if((j|0)>=-1){t=76;break}c[p>>2]=-1;t=87;break}c[p>>2]=0;j=0;t=79}else t=87;else t=76;while(0);do if((t|0)==76)if(!((j|0)>0&j>>>0>1114111))if((j|0)>-1){t=79;break}else{t=87;break}else{c[x>>2]=3;m=k;j=3;break a}while(0);do if((t|0)==79){m=k+40+(j>>5<<2)|0;h=c[m>>2]|0;j=1<<(j&31);if(h&j){c[p>>2]=-1;b[v+278660>>1]=1;t=87;break}c[m>>2]=h|j;j=c[p>>2]|0;if((j|0)>-1){n=v+52|0;m=c[n>>2]|0;l=v+48|0;if((m|0)==(c[l>>2]|0)){j=v+56|0;h=hh(w,36,m,m+64|0,c[j>>2]|0,x)|0;c[j>>2]=h;j=c[x>>2]|0;if(j){m=k;break a}c[l>>2]=(c[l>>2]|0)+64;m=c[n>>2]|0;j=c[p>>2]|0}else h=c[v+56>>2]|0;c[n>>2]=m+1;v=k+24|0;c[h+(m*36|0)>>2]=c[v>>2];c[h+(m*36|0)+4>>2]=j;c[v>>2]=0}else t=87}while(0);if((t|0)==87){if(!(c[(c[k+36>>2]|0)+4>>2]|0)){v=k+24|0;eh(w,c[v>>2]|0);c[v>>2]=0}else{l=v+64|0;j=c[l>>2]|0;m=v+60|0;if((j|0)==(c[m>>2]|0)){v=v+68|0;h=hh(w,36,j,j+4|0,c[v>>2]|0,x)|0;c[v>>2]=h;j=c[x>>2]|0;if(j){m=k;break a}c[m>>2]=(c[m>>2]|0)+4;j=c[l>>2]|0}else h=c[v+68>>2]|0;c[h+(j*36|0)>>2]=c[k+24>>2];c[l>>2]=j+1;c[h+(j*36|0)+4>>2]=j}c[k+24>>2]=0}c[k>>2]=c[k>>2]&1073741695|128;break}s=k+28|0;if((c[s>>2]|0)==-1)u=(c[v+68>>2]|0)+(((c[v+64>>2]|0)+-1|0)*36|0)|0;else u=(c[v+56>>2]|0)+(((c[v+52>>2]|0)+-1|0)*36|0)|0;if(m&2048){n=k+8|0;j=c[n>>2]|0;if(j>>>0>=(e[u+14>>1]|0)>>>0){if((m|0)<0)break;c[k>>2]=m|-2147483648;b[v+278660>>1]=1;break}h=c[u+28>>2]|0;l=h<<1;h=(c[u+24>>2]|0)+(ea(h,j)|0)|0;j=0;c:while(1){m=j;while(1){if(m>>>0>=l>>>0)break c;s=a[f+m>>0]|0;j=s<<24>>24;if(!(1<<(j&7)&d[6792+((s&255)>>>3)>>0])){t=109;break c}a[h>>0]=(d[h>>0]<<4)+(d[6824+j>>0]|0);j=m+1|0;if(j>>>0>=l>>>0|(m&1|0)==0)m=j;else break}s=h+1|0;a[s>>0]=0;h=s}if((t|0)==109){j=c[k>>2]|0;if(!(j&1073741824)){c[k>>2]=j|1073741824;b[v+278660>>1]=1}}j=b[u+12>>1]|0;if(j<<16>>16){u=a[6952+((ea(e[(c[p>>2]|0)+278662>>1]|0,j&65535)|0)&7)>>0]|0;a[h>>0]=a[h>>0]&u}if(((m|0)==(l|0)?(u=d[f+l>>0]|0,(1<<(u&7)&d[6792+(u>>>3)>>0]|0)!=0):0)?(q=c[k>>2]|0,(q&1073741824|0)==0):0){c[k>>2]=q|1073741824;b[v+278660>>1]=1}c[n>>2]=(c[n>>2]|0)+1;break}do if(!(pga(f,6960,6)|0)){if(m&128){h=k+139304|0;j=zu(h,6656,f,g)|0;c[x>>2]=j;if(j){m=k;break a}j=c[(c[h>>2]|0)+4>>2]|0;do if(j){h=a[j>>0]|0;if(h<<24>>24==48){v=a[j+1>>0]|0;if(v<<24>>24==88|v<<24>>24==120){h=j+2|0;j=h;n=16;h=a[h>>0]|0;l=6792}else{n=10;h=48;l=6992}}else if(!(h<<24>>24)){j=0;break}else{n=10;l=6992}m=h<<24>>24;if(d[l+((h&255)>>>3)>>0]&1<<(m&7)){h=j;j=0;do{j=ea(j,n)|0;j=(d[6824+m>>0]|0)+j|0;h=h+1|0;v=a[h>>0]|0;m=v<<24>>24}while((1<<(m&7)&d[l+((v&255)>>>3)>>0]|0)!=0);j=j&65535}else j=0}else j=0;while(0);b[u+8>>1]=j;c[k>>2]=c[k>>2]|256;break b}}else{if(!(pga(f,6968,6)|0)){if(!(m&128))break;m=k+139304|0;j=zu(m,6656,f,g)|0;c[x>>2]=j;if(j){m=k;break a}j=c[(c[m>>2]|0)+4>>2]|0;d:do if(j){h=a[j>>0]|0;do if(h<<24>>24==48){t=a[j+1>>0]|0;if(!(t<<24>>24==88|t<<24>>24==120)){n=10;h=48;l=6992;break}h=j+2|0;j=h;n=16;h=a[h>>0]|0;l=6792}else if(!(h<<24>>24)){h=0;break d}else{n=10;l=6992}while(0);m=h<<24>>24;if(d[l+((h&255)>>>3)>>0]&1<<(m&7)){h=0;do{h=ea(h,n)|0;h=(d[6824+m>>0]|0)+h|0;j=j+1|0;t=a[j>>0]|0;m=t<<24>>24}while((1<<(m&7)&d[l+((t&255)>>>3)>>0]|0)!=0)}else h=0}else h=0;while(0);b[u+10>>1]=h;j=c[k>>2]|0;if(!(j&256)){b[u+8>>1]=Ug(h&65535,72e3,ea(c[v+20>>2]|0,c[v+16>>2]|0)|0)|0;j=c[k>>2]|0}c[k>>2]=j|512;break b}if(pga(f,6976,3)|0){if(pga(f,6984,6)|0){c[x>>2]=3;m=k;j=3;break a}if(!(m&1024)){c[x>>2]=183;m=k;j=183;break a}v=(ea(e[v+278662>>1]|0,e[u+12>>1]|0)|0)+7|0;j=v>>>3;c[u+28>>2]=j;j=ea(j,e[u+14>>1]|0)|0;if(v>>>0>524287|j>>>0>65535){c[x>>2]=184;m=k;j=184;break a}b[u+32>>1]=j;c[u+24>>2]=hh(w,1,0,j&65535,0,x)|0;j=c[x>>2]|0;if(j){m=k;break a}c[k+8>>2]=0;c[k>>2]=c[k>>2]|2048;break b}if(m&128){m=k+139304|0;j=zu(m,6656,f,g)|0;c[x>>2]=j;if(j){m=k;break a}q=c[m>>2]|0;j=c[q+4>>2]|0;if((j|0)!=0?(n=a[j>>0]|0,n<<24>>24!=0):0){g=n<<24>>24==45;j=g?j+1|0:j;m=a[j>>0]|0;do if(m<<24>>24==48){t=a[j+1>>0]|0;if(!(t<<24>>24==88|t<<24>>24==120)){n=10;m=48;l=6992;break}m=j+2|0;n=16;j=m;m=a[m>>0]|0;l=6792}else{n=10;l=6992}while(0);h=m<<24>>24;if(!(d[l+((m&255)>>>3)>>0]&1<<(h&7)))j=0;else{m=j;j=0;do{j=ea(j,n)|0;m=m+1|0;j=(d[6824+h>>0]|0)+j<<16>>16;t=a[m>>0]|0;h=t<<24>>24}while((1<<(h&7)&d[l+((t&255)>>>3)>>0]|0)!=0)}r=(g?0-j|0:j)&65535}else r=0;b[u+12>>1]=r;m=c[q+8>>2]|0;do if(!m)p=0;else{j=a[m>>0]|0;if(!(j<<24>>24)){p=0;break}g=j<<24>>24==45;j=g?m+1|0:m;m=a[j>>0]|0;do if(m<<24>>24==48){t=a[j+1>>0]|0;if(!(t<<24>>24==88|t<<24>>24==120)){n=10;m=48;l=6992;break}m=j+2|0;n=16;j=m;m=a[m>>0]|0;l=6792}else{n=10;l=6992}while(0);h=m<<24>>24;if(!(d[l+((m&255)>>>3)>>0]&1<<(h&7)))j=0;else{m=j;j=0;do{j=ea(j,n)|0;m=m+1|0;j=(d[6824+h>>0]|0)+j<<16>>16;t=a[m>>0]|0;h=t<<24>>24}while((1<<(h&7)&d[l+((t&255)>>>3)>>0]|0)!=0)}p=(g?0-j|0:j)&65535}while(0);b[u+14>>1]=p;m=c[q+12>>2]|0;do if(!m)o=0;else{j=a[m>>0]|0;if(!(j<<24>>24)){o=0;break}g=j<<24>>24==45;j=g?m+1|0:m;m=a[j>>0]|0;do if(m<<24>>24==48){t=a[j+1>>0]|0;if(!(t<<24>>24==88|t<<24>>24==120)){n=10;m=48;l=6992;break}m=j+2|0;n=16;j=m;m=a[m>>0]|0;l=6792}else{n=10;l=6992}while(0);h=m<<24>>24;if(!(d[l+((m&255)>>>3)>>0]&1<<(h&7)))j=0;else{m=j;j=0;do{j=ea(j,n)|0;m=m+1|0;j=(d[6824+h>>0]|0)+j<<16>>16;t=a[m>>0]|0;h=t<<24>>24}while((1<<(h&7)&d[l+((t&255)>>>3)>>0]|0)!=0)}o=(g?0-j|0:j)&65535}while(0);b[u+16>>1]=o;m=c[q+16>>2]|0;do if(!m)j=0;else{j=a[m>>0]|0;if(!(j<<24>>24)){j=0;break}g=j<<24>>24==45;j=g?m+1|0:m;m=a[j>>0]|0;do if(m<<24>>24==48){t=a[j+1>>0]|0;if(!(t<<24>>24==88|t<<24>>24==120)){n=10;m=48;l=6992;break}m=j+2|0;n=16;j=m;m=a[m>>0]|0;l=6792}else{n=10;l=6992}while(0);h=m<<24>>24;if(!(d[l+((m&255)>>>3)>>0]&1<<(h&7)))j=0;else{m=j;j=0;do{j=ea(j,n)|0;m=m+1|0;j=(d[6824+h>>0]|0)+j<<16>>16;t=a[m>>0]|0;h=t<<24>>24}while((1<<(h&7)&d[l+((t&255)>>>3)>>0]|0)!=0)}j=(g?0-j|0:j)&65535}while(0);b[u+18>>1]=j;j=j&65535;t=(p&65535)+j&65535;b[u+20>>1]=t;j=0-j&65535;b[u+22>>1]=j;g=k+18|0;f=b[g>>1]|0;b[g>>1]=t<<16>>16>f<<16>>16?t:f;g=k+20|0;f=b[g>>1]|0;b[g>>1]=j<<16>>16>f<<16>>16?j:f;g=(o&65535)+(r&65535)|0;f=g&65535;b[k+22>>1]=f;j=k+16|0;t=b[j>>1]|0;b[j>>1]=(g<<16>>16|0)>(t<<16>>16|0)?f:t;j=k+12|0;t=b[j>>1]|0;b[j>>1]=o<<16>>16>16?o:t;j=k+14|0;t=b[j>>1]|0;b[j>>1]=o<<16>>16>t<<16>>16?o:t;j=c[k>>2]|0;if(!(j&512))b[u+10>>1]=r;do if(c[c[k+36>>2]>>2]|0){h=Ug(e[u+10>>1]|0,72e3,ea(c[v+20>>2]|0,c[v+16>>2]|0)|0)|0;j=u+8|0;h=h&65535;if((b[j>>1]|0)==h<<16>>16){j=c[k>>2]|0;break}b[j>>1]=h;if((c[s>>2]|0)==-1){t=(c[v+64>>2]|0)+-1|0;u=v+(t>>>5<<2)+139396|0;c[u>>2]=1<<(t&31)|c[u>>2]}else{t=c[u+4>>2]|0;u=v+(t>>5<<2)+132|0;c[u>>2]=1<<(t&31)|c[u>>2]}j=c[k>>2]|4096;c[k>>2]=j;b[v+278660>>1]=1}while(0);c[k>>2]=j|1024;break b}}while(0);c[x>>2]=182;m=k;j=182;break a}while(0);j=c[x>>2]|0;t=196}while(0);do if((t|0)==196)if(!j){k=0;i=y;return k|0}else{m=k;break}while(0);if(!(c[m>>2]&64)){k=j;i=y;return k|0}k=k+24|0;eh(w,c[k>>2]|0);c[k>>2]=0;k=c[x>>2]|0;i=y;return k|0} +function oj(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0;Ia=i;i=i+368|0;Ga=Ia+344|0;Fa=Ia+328|0;Da=Ia+352|0;ya=Ia+32|0;Aa=Ia+24|0;Ba=Ia+8|0;Ea=Ia;za=Ia+336|0;Ca=Ia+16|0;ha=ya+256|0;ia=b+8|0;l=c[e>>2]|0;va=b+12|0;if(((((((c[ia>>2]|0)+1-l|0)>>>0<3?(m=c[e+4>>2]|0,((c[va>>2]|0)+1-m|0)>>>0<3):0)?(j=c[f>>2]|0,(l+1-j|0)>>>0<3):0)?(k=c[f+4>>2]|0,(m+1-k|0)>>>0<3):0)?(j+1-(c[g>>2]|0)|0)>>>0<3:0)?(k+1-(c[g+4>>2]|0)|0)>>>0<3:0){Fa=g;Ga=c[Fa+4>>2]|0;g=ia;c[g>>2]=c[Fa>>2];c[g+4>>2]=Ga;g=0;i=Ia;return g|0}N=g;O=c[N+4>>2]|0;P=ya;c[P>>2]=c[N>>2];c[P+4>>2]=O;P=f;O=c[P+4>>2]|0;N=ya+8|0;c[N>>2]=c[P>>2];c[N+4>>2]=O;N=e;O=c[N+4>>2]|0;P=ya+16|0;c[P>>2]=c[N>>2];c[P+4>>2]=O;P=ia;O=c[P+4>>2]|0;N=ya+24|0;c[N>>2]=c[P>>2];c[N+4>>2]=O;N=b+20|0;O=b+4|0;P=b+48|0;Q=b+52|0;R=b+60|0;S=b+40|0;T=b+64|0;U=Aa+4|0;V=Ba+4|0;W=Ea+4|0;X=za+4|0;Y=Ca+4|0;Z=b+8|0;_=Da+4|0;$=b+84|0;aa=b+64|0;ba=b+72|0;F=b+76|0;ga=b+80|0;ca=b+68|0;da=b+88|0;fa=b+116|0;G=b+96|0;H=b+104|0;E=b+108|0;I=b+112|0;J=b+100|0;K=b+120|0;L=b+24|0;M=b+36|0;l=ya;y=1;a:while(1){while(1){n=c[b>>2]|0;if(l>>>0>=ha>>>0){o=n;f=n;D=n;break}r=l+16|0;m=c[r>>2]|0;s=l+24|0;j=m-(c[s>>2]|0)|0;t=l+20|0;f=c[t>>2]|0;u=l+28|0;k=f-(c[u>>2]|0)|0;v=l+8|0;p=c[v>>2]|0;m=p-m|0;w=l+12|0;q=c[w>>2]|0;f=q-f|0;p=(c[l>>2]|0)-p|0;x=l+4|0;q=(c[x>>2]|0)-q|0;e=(m+1|0)>>>0<3&(f|0)>-2&(f|0)<2;o=(p+1|0)>>>0<3&(q|0)>-2&(q|0)<2;do if((j+1|0)>>>0<3&(k|0)>-2&(k|0)<2)if(e){if(o){k=n;e=n;j=n;break}j=Pi(p,q)|0;k=j;e=j;break}else{j=Pi(m,f)|0;if(o){k=j;e=j;break}k=j;e=j;j=Pi(p,q)|0;break}else{n=Pi(j,k)|0;if(e){if(o){k=n;e=n;j=n;break}j=Pi(p,q)|0;k=n;e=((Si(n,j)|0)/2|0)+n|0;break}else{j=Pi(m,f)|0;if(o){k=n;e=j;break}k=n;e=j;j=Pi(p,q)|0;break}}while(0);C=Si(k,e)|0;D=Si(e,j)|0;if((((C|0)>-1?C:0-C|0)|0)<1474560?(((D|0)>-1?D:0-D|0)|0)<1474560:0){o=k;f=e;D=j;break}if(a[N>>0]|0)c[b>>2]=k;B=c[s>>2]|0;c[l+48>>2]=B;A=c[v>>2]|0;D=c[r>>2]|0;C=((c[l>>2]|0)+A|0)/2|0;c[v>>2]=C;B=(D+B|0)/2|0;c[l+40>>2]=B;A=(D+A|0)/2|0;C=(A+C|0)/2|0;c[r>>2]=C;B=(A+B|0)/2|0;c[l+32>>2]=B;c[s>>2]=(B+C|0)/2|0;C=c[u>>2]|0;c[l+52>>2]=C;B=c[w>>2]|0;A=c[t>>2]|0;D=((c[x>>2]|0)+B|0)/2|0;c[w>>2]=D;C=(A+C|0)/2|0;c[l+44>>2]=C;B=(A+B|0)/2|0;D=(B+D|0)/2|0;c[t>>2]=D;C=(B+C|0)/2|0;c[l+36>>2]=C;c[u>>2]=(C+D|0)/2|0;l=l+24|0;if(l>>>0>>0){Ha=133;break a}}do if(!(y<<24>>24)){C=Si(c[b>>2]|0,o)|0;if((((C|0)>-1?C:0-C|0)|0)>368640){C=l+24|0;Ha=c[C+4>>2]|0;h=ia;c[h>>2]=c[C>>2];c[h+4>>2]=Ha;c[O>>2]=o;c[P>>2]=0;h=Si(c[b>>2]|0,o)|0;if(h){j=h>>>31;h=xr(b,j,0)|0;if(!h)h=yr(b,j^1,0)|0}else h=0;c[P>>2]=c[Q>>2];Ha=72}}else{if(!(a[N>>0]|0)){c[O>>2]=o;j=Si(c[b>>2]|0,o)|0;if(!j)break;j=j>>>31;h=xr(b,j,0)|0;if(h){Ha=134;break a}h=yr(b,j^1,0)|0;Ha=72;break}Ri(Da,c[R>>2]|0,o+5898240|0);n=(c[Da>>2]|0)+(c[Z>>2]|0)|0;m=(c[_>>2]|0)+(c[va>>2]|0)|0;h=c[$>>2]|0;if((h|0)>-1){j=c[aa>>2]|0;if(j>>>0>(h+1|0)>>>0){A=j+-1|0;c[aa>>2]=A;C=c[ba>>2]|0;A=C+(A<<3)|0;B=c[A+4>>2]|0;C=C+(h<<3)|0;c[C>>2]=c[A>>2];c[C+4>>2]=B;C=(c[F>>2]|0)+h|0;a[C>>0]=d[C>>0]|4;C=(c[F>>2]|0)+(j+-2)|0;a[C>>0]=d[C>>0]|8}else c[aa>>2]=h;c[$>>2]=-1;a[ga>>0]=0}h=c[aa>>2]|0;c[$>>2]=h;a[ga>>0]=0;if(!(((h|0)!=0?(ja=h+-1|0,ka=c[ba>>2]|0,(1-n+(c[ka+(ja<<3)>>2]|0)|0)>>>0<3):0)?(1-m+(c[ka+(ja<<3)+4>>2]|0)|0)>>>0<3:0)){e=c[ca>>2]|0;j=h+1|0;c[Ga>>2]=0;if(j>>>0>e>>>0){k=c[da>>2]|0;h=e;do h=h+16+(h>>>1)|0;while(h>>>0>>0);j=h;c[ba>>2]=hh(k,8,e,j,c[ba>>2]|0,Ga)|0;h=c[Ga>>2]|0;if(h){Ha=45;break a}k=hh(k,1,e,j,c[F>>2]|0,Ga)|0;c[F>>2]=k;h=c[Ga>>2]|0;if(h){Ha=45;break a}c[ca>>2]=j;j=c[aa>>2]|0;h=k}else{j=h;h=c[F>>2]|0}C=(c[ba>>2]|0)+(j<<3)|0;c[C>>2]=n;c[C+4>>2]=m;a[h+j>>0]=1;c[aa>>2]=(c[aa>>2]|0)+1;a[ga>>0]=0}n=(c[Z>>2]|0)-(c[Da>>2]|0)|0;m=(c[va>>2]|0)-(c[_>>2]|0)|0;h=c[fa>>2]|0;if((h|0)>-1){j=c[G>>2]|0;if(j>>>0>(h+1|0)>>>0){A=j+-1|0;c[G>>2]=A;C=c[H>>2]|0;A=C+(A<<3)|0;B=c[A+4>>2]|0;C=C+(h<<3)|0;c[C>>2]=c[A>>2];c[C+4>>2]=B;C=(c[E>>2]|0)+h|0;a[C>>0]=d[C>>0]|4;C=(c[E>>2]|0)+(j+-2)|0;a[C>>0]=d[C>>0]|8}else c[G>>2]=h;c[fa>>2]=-1;a[I>>0]=0}h=c[G>>2]|0;c[fa>>2]=h;a[I>>0]=0;if(((h|0)!=0?(la=h+-1|0,ma=c[H>>2]|0,(1-n+(c[ma+(la<<3)>>2]|0)|0)>>>0<3):0)?(1-m+(c[ma+(la<<3)+4>>2]|0)|0)>>>0<3:0)h=0;else{e=c[J>>2]|0;j=h+1|0;c[Fa>>2]=0;if(j>>>0>e>>>0){k=c[K>>2]|0;h=e;do h=h+16+(h>>>1)|0;while(h>>>0>>0);j=h;c[H>>2]=hh(k,8,e,j,c[H>>2]|0,Fa)|0;h=c[Fa>>2]|0;if(!h){k=hh(k,1,e,j,c[E>>2]|0,Fa)|0;c[E>>2]=k;h=c[Fa>>2]|0;if(!h){c[J>>2]=j;j=c[G>>2]|0;h=k;Ha=61}}}else{j=h;h=c[E>>2]|0;Ha=61}if((Ha|0)==61){Ha=(c[H>>2]|0)+(j<<3)|0;c[Ha>>2]=n;c[Ha+4>>2]=m;a[h+j>>0]=1;c[G>>2]=(c[G>>2]|0)+1;h=0}a[I>>0]=0}c[L>>2]=o;a[N>>0]=0;c[M>>2]=0;Ha=72}while(0);if((Ha|0)==72?(Ha=0,(h|0)!=0):0){Ha=134;break}t=(Si(o,f)|0)/2|0;u=(Si(f,D)|0)/2|0;B=((Si(o,f)|0)/2|0)+o|0;s=((Si(f,D)|0)/2|0)+f|0;C=c[R>>2]|0;t=Xg(C,Mi(t)|0)|0;C=c[R>>2]|0;u=Xg(C,Mi(u)|0)|0;if(!(a[S>>0]|0)){p=l+4|0;q=l+24|0;r=l+28|0;z=0}else{A=l+24|0;C=l+4|0;z=l+28|0;p=C;q=A;r=z;z=Pi((c[l>>2]|0)-(c[A>>2]|0)|0,(c[C>>2]|0)-(c[z>>2]|0)|0)|0}v=l+16|0;w=l+20|0;x=l+8|0;y=l+12|0;C=T;A=0;while(1){j=(ea(A,-11796480)|0)+5898240|0;Ri(Aa,t,B+j|0);c[Aa>>2]=(c[Aa>>2]|0)+(c[v>>2]|0);c[U>>2]=(c[U>>2]|0)+(c[w>>2]|0);Ri(Ba,u,s+j|0);c[Ba>>2]=(c[Ba>>2]|0)+(c[x>>2]|0);c[V>>2]=(c[V>>2]|0)+(c[y>>2]|0);Ri(Ea,c[R>>2]|0,j+D|0);j=(c[Ea>>2]|0)+(c[l>>2]|0)|0;c[Ea>>2]=j;k=(c[W>>2]|0)+(c[p>>2]|0)|0;c[W>>2]=k;do if((a[S>>0]|0)!=0?(na=C+8|0,pa=(c[na>>2]|0)+((c[C>>2]|0)+-1<<3)|0,oa=c[pa>>2]|0,pa=c[pa+4>>2]|0,qa=Pi(j-oa|0,k-pa|0)|0,f=Si(z,qa)|0,(((f|0)>-1?f:0-f|0)|0)>5898240):0){n=Pi((c[q>>2]|0)-oa|0,(c[r>>2]|0)-pa|0)|0;k=Pi((c[l>>2]|0)-(c[Ea>>2]|0)|0,(c[p>>2]|0)-(c[W>>2]|0)|0)|0;c[za>>2]=(c[Ea>>2]|0)-oa;c[X>>2]=(c[W>>2]|0)-pa;o=Tg(za)|0;j=Ni(qa-k|0)|0;k=Ni(n-k|0)|0;Ri(Ca,Ug(o,(j|0)>-1?j:0-j|0,(k|0)>-1?k:0-k|0)|0,n);n=(c[Ca>>2]|0)+oa|0;c[Ca>>2]=n;k=(c[Y>>2]|0)+pa|0;c[Y>>2]=k;j=C+16|0;a[j>>0]=0;o=c[C>>2]|0;if(((o|0)!=0?(ra=o+-1|0,sa=c[na>>2]|0,((c[sa+(ra<<3)>>2]|0)+1-n|0)>>>0<3):0)?((c[sa+(ra<<3)+4>>2]|0)+1-k|0)>>>0<3:0)n=o;else{m=C+4|0;e=c[m>>2]|0;k=o+1|0;c[Ga>>2]=0;if(k>>>0>e>>>0){o=c[C+24>>2]|0;n=e;do n=n+16+(n>>>1)|0;while(n>>>0>>0);c[na>>2]=hh(o,8,e,n,c[na>>2]|0,Ga)|0;k=c[Ga>>2]|0;if(k){h=k;Ha=90;break a}k=C+12|0;c[k>>2]=hh(o,1,e,n,c[k>>2]|0,Ga)|0;o=c[Ga>>2]|0;if(o){h=o;Ha=90;break a}c[m>>2]=n}else k=C+12|0;f=c[C>>2]|0;n=(c[k>>2]|0)+f|0;e=Ca;m=c[e+4>>2]|0;f=(c[na>>2]|0)+(f<<3)|0;c[f>>2]=c[e>>2];c[f+4>>2]=m;a[n>>0]=1;n=(c[C>>2]|0)+1|0;c[C>>2]=n;a[j>>0]=0}if(!(((n|0)!=0?(ta=n+-1|0,ua=c[na>>2]|0,((c[ua+(ta<<3)>>2]|0)+1-(c[Ea>>2]|0)|0)>>>0<3):0)?((c[ua+(ta<<3)+4>>2]|0)+1-(c[W>>2]|0)|0)>>>0<3:0)){m=C+4|0;e=c[m>>2]|0;k=n+1|0;c[Ga>>2]=0;if(k>>>0>e>>>0){o=c[C+24>>2]|0;n=e;do n=n+16+(n>>>1)|0;while(n>>>0>>0);c[na>>2]=hh(o,8,e,n,c[na>>2]|0,Ga)|0;k=c[Ga>>2]|0;if(k){h=k;Ha=102;break a}k=C+12|0;c[k>>2]=hh(o,1,e,n,c[k>>2]|0,Ga)|0;o=c[Ga>>2]|0;if(o){h=o;Ha=102;break a}c[m>>2]=n}else k=C+12|0;f=c[C>>2]|0;n=(c[k>>2]|0)+f|0;e=Ea;m=c[e+4>>2]|0;f=(c[na>>2]|0)+(f<<3)|0;c[f>>2]=c[e>>2];c[f+4>>2]=m;a[n>>0]=1;n=(c[C>>2]|0)+1|0;c[C>>2]=n;a[j>>0]=0}f=C+4|0;m=c[f>>2]|0;k=n+3|0;c[Ga>>2]=0;if(k>>>0>m>>>0){e=c[C+24>>2]|0;n=m;do n=n+16+(n>>>1)|0;while(n>>>0>>0);c[na>>2]=hh(e,8,m,n,c[na>>2]|0,Ga)|0;k=c[Ga>>2]|0;if(k){h=k;Ha=110;break a}o=C+12|0;c[o>>2]=hh(e,1,m,n,c[o>>2]|0,Ga)|0;k=c[Ga>>2]|0;if(k){h=k;Ha=110;break a}c[f>>2]=n}else o=C+12|0;Ja=c[na>>2]|0;k=c[C>>2]|0;m=c[o>>2]|0;Ka=Ba;La=c[Ka+4>>2]|0;e=Ja+(k<<3)|0;c[e>>2]=c[Ka>>2];c[e+4>>2]=La;e=k+1|0;La=Aa;Ka=c[La+4>>2]|0;n=Ja+(e<<3)|0;c[n>>2]=c[La>>2];c[n+4>>2]=Ka;n=k+2|0;Ja=Ja+(n<<3)|0;c[Ja>>2]=oa;c[Ja+4>>2]=pa;a[m+k>>0]=2;a[m+e>>0]=2;a[m+n>>0]=1;n=c[C>>2]|0;m=n+3|0;c[C>>2]=m;a[j>>0]=0;if(((m|0)!=0?(wa=n+2|0,xa=c[na>>2]|0,((c[xa+(wa<<3)>>2]|0)+1-(c[Ea>>2]|0)|0)>>>0<3):0)?((c[xa+(wa<<3)+4>>2]|0)+1-(c[W>>2]|0)|0)>>>0<3:0)break;m=c[f>>2]|0;k=n+4|0;c[Ga>>2]=0;if(k>>>0>m>>>0){e=c[C+24>>2]|0;n=m;do n=n+16+(n>>>1)|0;while(n>>>0>>0);k=n;c[na>>2]=hh(e,8,m,k,c[na>>2]|0,Ga)|0;n=c[Ga>>2]|0;if(n){h=n;Ha=121;break a}c[o>>2]=hh(e,1,m,k,c[o>>2]|0,Ga)|0;n=c[Ga>>2]|0;if(n){h=n;Ha=121;break a}c[f>>2]=k}Ka=c[C>>2]|0;La=(c[o>>2]|0)+Ka|0;f=Ea;Ja=c[f+4>>2]|0;Ka=(c[na>>2]|0)+(Ka<<3)|0;c[Ka>>2]=c[f>>2];c[Ka+4>>2]=Ja;a[La>>0]=1;c[C>>2]=(c[C>>2]|0)+1;a[j>>0]=0}else Ha=122;while(0);if((Ha|0)==122){Ha=0;f=C+4|0;e=c[f>>2]|0;j=(c[C>>2]|0)+3|0;c[Ga>>2]=0;if(j>>>0>e>>>0){m=c[C+24>>2]|0;n=e;do n=n+16+(n>>>1)|0;while(n>>>0>>0);k=C+8|0;c[k>>2]=hh(m,8,e,n,c[k>>2]|0,Ga)|0;j=c[Ga>>2]|0;if(j){h=C;Ha=130;break a}o=C+12|0;c[o>>2]=hh(m,1,e,n,c[o>>2]|0,Ga)|0;j=c[Ga>>2]|0;if(j){h=C;Ha=130;break a}c[f>>2]=n;j=o}else{k=C+8|0;j=C+12|0}m=c[k>>2]|0;f=c[C>>2]|0;Ka=c[j>>2]|0;o=Aa;e=c[o+4>>2]|0;Ja=m+(f<<3)|0;c[Ja>>2]=c[o>>2];c[Ja+4>>2]=e;Ja=f+1|0;e=Ba;o=c[e+4>>2]|0;La=m+(Ja<<3)|0;c[La>>2]=c[e>>2];c[La+4>>2]=o;La=f+2|0;o=Ea;e=c[o+4>>2]|0;m=m+(La<<3)|0;c[m>>2]=c[o>>2];c[m+4>>2]=e;a[Ka+f>>0]=2;a[Ka+Ja>>0]=2;a[Ka+La>>0]=1;c[C>>2]=(c[C>>2]|0)+3;a[C+16>>0]=0}A=A+1|0;if((A|0)>=2)break;else C=C+32|0}l=l+-24|0;c[b>>2]=D;if(l>>>0>>0){Ha=133;break}else y=0}if((Ha|0)==45){a[ga>>0]=0;La=h;i=Ia;return La|0}else if((Ha|0)==90){a[j>>0]=0;La=h;i=Ia;return La|0}else if((Ha|0)==102){a[j>>0]=0;La=h;i=Ia;return La|0}else if((Ha|0)==110){a[j>>0]=0;La=h;i=Ia;return La|0}else if((Ha|0)==121){a[j>>0]=0;La=h;i=Ia;return La|0}else if((Ha|0)==130){a[h+16>>0]=0;La=j;i=Ia;return La|0}else if((Ha|0)==133){Ja=g;Ka=c[Ja+4>>2]|0;La=ia;c[La>>2]=c[Ja>>2];c[La+4>>2]=Ka;La=0;i=Ia;return La|0}else if((Ha|0)==134){i=Ia;return h|0}return 0}function pj(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+16|0;l=q;if(!(a[b+21>>0]|0)){e=b+28|0;if(!((c[b+8>>2]|0)==(c[e>>2]|0)?(c[b+12>>2]|0)==(c[b+32>>2]|0):0))h=22;if((h|0)==22?(f=mj(b,e)|0,(f|0)!=0):0){b=f;i=q;return b|0}e=c[b+24>>2]|0;c[b+4>>2]=e;e=Si(c[b>>2]|0,e)|0;if(e){e=e>>>31;f=b+36|0;g=xr(b,e,c[f>>2]|0)|0;if(g){b=g;i=q;return b|0}e=yr(b,e^1,c[f>>2]|0)|0;if(e){b=e;i=q;return b|0}}e=b+84|0;f=c[e>>2]|0;g=b+64|0;h=c[g>>2]|0;if(h>>>0>(f+1|0)>>>0){l=h+-1|0;c[g>>2]=l;p=c[b+72>>2]|0;l=p+(l<<3)|0;o=c[l+4>>2]|0;p=p+(f<<3)|0;c[p>>2]=c[l>>2];c[p+4>>2]=o;p=b+76|0;o=(c[p>>2]|0)+f|0;a[o>>0]=d[o>>0]|4;p=(c[p>>2]|0)+(h+-2)|0;a[p>>0]=d[p>>0]|8}else c[g>>2]=f;c[e>>2]=-1;a[b+80>>0]=0;k=b+116|0;j=c[k>>2]|0;e=b+96|0;h=c[e>>2]|0;f=j+1|0;if(h>>>0>f>>>0){o=h+-1|0;c[e>>2]=o;e=b+104|0;g=c[e>>2]|0;o=g+(o<<3)|0;p=c[o+4>>2]|0;g=g+(j<<3)|0;c[g>>2]=c[o>>2];c[g+4>>2]=p;e=c[e>>2]|0;g=h+-2|0;if((f|0)<(g|0)){h=e+(f<<3)|0;e=e+(g<<3)|0;do{o=h;l=c[o>>2]|0;o=c[o+4>>2]|0;m=e;n=c[m+4>>2]|0;p=h;c[p>>2]=c[m>>2];c[p+4>>2]=n;p=e;c[p>>2]=l;c[p+4>>2]=o;h=h+8|0;e=e+-8|0}while(h>>>0>>0);e=b+108|0;p=c[e>>2]|0;h=p+f|0;f=p+g|0;do{p=a[h>>0]|0;a[h>>0]=a[f>>0]|0;a[f>>0]=p;h=h+1|0;f=f+-1|0}while(h>>>0>>0)}else e=b+108|0;p=(c[e>>2]|0)+j|0;a[p>>0]=d[p>>0]|4;p=(c[e>>2]|0)+g|0;a[p>>0]=d[p>>0]|8}else c[e>>2]=j;c[k>>2]=-1;a[b+112>>0]=0;b=0;i=q;return b|0}else{e=zr(b,c[b>>2]|0)|0;if(e){b=e;i=q;return b|0}p=b+96|0;f=c[p>>2]|0;m=b+116|0;e=c[m>>2]|0;n=f-e|0;if((n|0)>0){j=b+68|0;k=c[j>>2]|0;o=b+64|0;h=c[o>>2]|0;g=h+n|0;c[l>>2]=0;do if(g>>>0>k>>>0){f=c[b+88>>2]|0;e=k;do e=e+16+(e>>>1)|0;while(e>>>0>>0);h=e;e=b+72|0;c[e>>2]=hh(f,8,k,h,c[e>>2]|0,l)|0;e=c[l>>2]|0;if(e){b=e;i=q;return b|0}e=b+76|0;c[e>>2]=hh(f,1,k,h,c[e>>2]|0,l)|0;e=c[l>>2]|0;if(!e){c[j>>2]=h;f=c[p>>2]|0;e=c[m>>2]|0;h=c[o>>2]|0;break}else{b=e;i=q;return b|0}}while(0);l=b+104|0;f=f+-1|0;if((f|0)>=(e|0)){k=(c[b+72>>2]|0)+(h<<3)|0;g=(c[b+76>>2]|0)+h|0;j=(c[l>>2]|0)+(f<<3)|0;h=(c[b+108>>2]|0)+f|0;while(1){r=j;f=c[r+4>>2]|0;e=k;c[e>>2]=c[r>>2];c[e+4>>2]=f;a[g>>0]=d[h>>0]&243;j=j+-8|0;e=c[m>>2]|0;if(j>>>0<((c[l>>2]|0)+(e<<3)|0)>>>0)break;else{k=k+8|0;g=g+1|0;h=h+-1|0}}h=c[o>>2]|0}c[p>>2]=e;c[o>>2]=h+n;a[b+80>>0]=0;a[b+112>>0]=0}p=b+28|0;r=c[p+4>>2]|0;e=b+8|0;c[e>>2]=c[p>>2];c[e+4>>2]=r;e=zr(b,(c[b+24>>2]|0)+11796480|0)|0;if(e){r=e;i=q;return r|0}e=b+84|0;h=c[e>>2]|0;f=b+64|0;g=c[f>>2]|0;if(g>>>0>(h+1|0)>>>0){o=g+-1|0;c[f>>2]=o;r=c[b+72>>2]|0;o=r+(o<<3)|0;p=c[o+4>>2]|0;r=r+(h<<3)|0;c[r>>2]=c[o>>2];c[r+4>>2]=p;r=b+76|0;p=(c[r>>2]|0)+h|0;a[p>>0]=d[p>>0]|4;r=(c[r>>2]|0)+(g+-2)|0;a[r>>0]=d[r>>0]|8}else c[f>>2]=h;c[e>>2]=-1;a[b+80>>0]=0;r=0;i=q;return r|0}return 0}function qj(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;o=i;if(g>>>0>=2){i=o;return}if(!(a[f+(g<<5)+92>>0]|0)){i=o;return}n=h+2|0;l=f+(g<<5)+64|0;Aga((c[h+4>>2]|0)+(b[n>>1]<<3)|0,c[f+(g<<5)+72>>2]|0,c[l>>2]<<3|0)|0;j=c[l>>2]|0;m=f+(g<<5)+76|0;if(j){f=c[m>>2]|0;k=(c[h+8>>2]|0)+(b[n>>1]|0)|0;while(1){g=d[f>>0]|0;do if(!(g&1))if(!(g&2)){a[k>>0]=0;break}else{a[k>>0]=2;break}else a[k>>0]=1;while(0);j=j+-1|0;if(!j)break;else{f=f+1|0;k=k+1|0}}g=c[l>>2]|0;if(g){k=g;l=b[n>>1]|0;j=c[m>>2]|0;f=(c[h+12>>2]|0)+(b[h>>1]<<1)|0;while(1){if(a[j>>0]&8){b[f>>1]=l;b[h>>1]=(b[h>>1]|0)+1<<16>>16;f=f+2|0}k=k+-1|0;if(!k)break;else{l=l+1<<16>>16;j=j+1|0}}}else g=0}else g=0;b[n>>1]=(e[n>>1]|0)+g;i=o;return}function rj(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;T=i;i=i+64|0;L=T+40|0;N=T;O=T+56|0;P=T+16|0;M=T+48|0;Q=T+32|0;R=T+24|0;S=T+8|0;if(!((f|0)!=0&(e|0)!=0)){P=6;i=T;return P|0}c[e+64>>2]=0;c[e+84>>2]=-1;a[e+92>>0]=0;c[e+96>>2]=0;c[e+116>>2]=-1;a[e+124>>0]=0;if((b[f>>1]|0)<=0){P=0;i=T;return P|0}u=f+12|0;v=f+4|0;w=f+8|0;x=e+20|0;y=e+8|0;z=e+21|0;A=e+48|0;B=g<<24>>24==0;C=e+44|0;D=e+40|0;E=e+28|0;F=O+4|0;G=L+4|0;H=M+4|0;I=N+4|0;o=0;K=0;a:while(1){J=b[(c[u>>2]|0)+(K<<1)>>1]|0;s=c[v>>2]|0;l=s+(J<<3)|0;if(J>>>0>o>>>0){p=s+(o<<3)|0;m=c[p>>2]|0;p=c[p+4>>2]|0;j=N;c[j>>2]=m;c[j+4>>2]=p;j=c[s+(J<<3)>>2]|0;k=c[s+(J<<3)+4>>2]|0;r=L;c[r>>2]=m;c[r+4>>2]=p;r=c[w>>2]|0;q=r+o|0;n=d[q>>0]&3;if((n|0)==2){h=20;k=31;break}else if(!n){if((a[r+J>>0]&3)==1){c[N>>2]=j;c[I>>2]=k;l=s+(J+-1<<3)|0}else{c[N>>2]=(m+j|0)/2|0;c[I>>2]=(p+k|0)/2|0}j=o+-1|0;p=N;o=j;m=c[p>>2]|0;p=c[p+4>>2]|0;t=l;j=r+j|0}else{t=l;j=q}k=s+(o<<3)|0;a[x>>0]=1;l=y;c[l>>2]=m;c[l+4>>2]=p;a[z>>0]=g;l=(c[A>>2]|0)!=0;if(!(l|B))l=(c[C>>2]|0)==0;a[D>>0]=l&1;s=E;c[s>>2]=m;c[s+4>>2]=p;c[e>>2]=0;b:do if(k>>>0>>0){n=j;c:while(1){q=k+8|0;p=n+1|0;l=d[p>>0]&3;if((l|0)==1){c[O>>2]=c[q>>2];c[F>>2]=c[k+12>>2];j=mj(e,O)|0;if(!j){k=q;j=p}else{h=j;k=31;break a}}else if(!l){l=c[q>>2]|0;c[L>>2]=l;j=c[k+12>>2]|0;c[G>>2]=j;if(q>>>0>>0){r=l;o=j}else{k=21;break}while(1){k=k+16|0;l=n+2|0;j=d[l>>0]&3;s=k;m=r;r=c[s>>2]|0;n=o;o=c[s+4>>2]|0;s=P;c[s>>2]=r;c[s+4>>2]=o;if((j|0)==1)break;else if(j){h=20;k=31;break a}c[M>>2]=(r+m|0)/2|0;c[H>>2]=(o+n|0)/2|0;j=nj(e,L,M)|0;if(j){h=j;k=31;break a}s=L;c[s>>2]=r;c[s+4>>2]=o;if(k>>>0>=t>>>0){k=21;break c}else{n=p;s=q;q=k;p=l;k=s}}j=nj(e,L,P)|0;if(!j)j=l;else{h=j;k=31;break a}}else{l=k+16|0;if(l>>>0>t>>>0){h=20;k=31;break a}if((a[n+2>>0]&3)!=2){h=20;k=31;break a}k=k+24|0;s=q;r=c[s+4>>2]|0;o=Q;c[o>>2]=c[s>>2];c[o+4>>2]=r;o=l;r=c[o+4>>2]|0;s=R;c[s>>2]=c[o>>2];c[s+4>>2]=r;if(k>>>0>t>>>0){k=26;break}r=k;s=c[r+4>>2]|0;j=S;c[j>>2]=c[r>>2];c[j+4>>2]=s;j=oj(e,Q,R,S)|0;if(!j)j=n+3|0;else{h=j;k=31;break a}}if(k>>>0>>0)n=j;else break b}if((k|0)==21)j=nj(e,L,N)|0;else if((k|0)==26)j=oj(e,Q,R,N)|0;if(j){h=j;k=31;break a}}while(0);if((a[x>>0]|0)==0?(h=pj(e)|0,(h|0)!=0):0){k=31;break}}K=K+1|0;if((K|0)>=(b[f>>1]|0)){h=0;k=31;break}else o=J+1|0}if((k|0)==31){i=T;return h|0}return 0}function sj(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;h=t;if(!d){d=6;i=t;return d|0}g=c[d>>2]|0;if(!g){d=6;i=t;return d|0}if((c[g+4>>2]|0)!=4840){d=6;i=t;return d|0}g=aj(g,h)|0;if(g){d=g;i=t;return d|0}r=c[h>>2]|0;q=r+20|0;g=rj(e,q,0)|0;if(!g){g=c[e+64>>2]|0;a:do if(g){j=0;m=0;h=0;n=c[e+76>>2]|0;while(1){l=a[n>>0]|0;k=(j|0)==0;if(!(l&4)){if(k){p=0;h=0;break a}}else if(k)j=1;else{p=0;h=0;break a}l=l&8;m=(((l&255)>>>3^1)&255^1)+m|0;j=l<<24>>24==0?j:0;g=g+-1|0;h=h+1|0;if(!g){g=m;break}else n=n+1|0}if(!j)s=13;else{p=0;h=0}}else{g=0;h=0;s=13}while(0);if((s|0)==13){a[e+92>>0]=1;p=g}g=c[e+96>>2]|0;b:do if(g){k=0;j=0;n=0;o=c[e+108>>2]|0;while(1){m=a[o>>0]|0;l=(k|0)==0;if(!(m&4)){if(l){j=0;g=0;break b}}else if(l)k=1;else{j=0;g=0;break b}l=m&8;j=(((l&255)>>>3^1)&255^1)+j|0;k=l<<24>>24==0?k:0;g=g+-1|0;l=n+1|0;if(!g){g=l;break}else{n=l;o=o+1|0}}if(!k)s=21;else{j=0;g=0}}else{j=0;g=0;s=21}while(0);if((s|0)==21)a[e+124>>0]=1;li(c[r>>2]|0,q)|0;g=ji(c[r>>2]|0,g+h|0,j+p|0,q)|0;if(!g){b[q+2>>1]=0;b[q>>1]=0;qj(e,0,q);qj(e,1,q);if(f<<24>>24)bj(c[d>>2]|0);c[d>>2]=r;d=0;i=t;return d|0}}bj(r);if(f<<24>>24){d=g;i=t;return d|0}c[d>>2]=0;d=g;i=t;return d|0}function tj(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;j=r;if(!d){d=6;i=r;return d|0}h=c[d>>2]|0;if(!h){d=6;i=r;return d|0}if((c[h+4>>2]|0)!=4840){d=6;i=r;return d|0}h=aj(h,j)|0;if(h){d=h;i=r;return d|0}q=c[j>>2]|0;p=q+20|0;o=((ni(p)|0)!=0^f<<24>>24!=0)&1;h=rj(e,p,0)|0;if(!h){a:do if(!e){j=0;h=0}else{h=c[e+(o<<5)+64>>2]|0;if(h){f=0;m=0;j=0;n=c[e+(o<<5)+76>>2]|0;while(1){l=a[n>>0]|0;k=(f|0)==0;if(!(l&4)){if(k){j=0;h=0;break a}}else if(k)f=1;else{j=0;h=0;break a}l=l&8;m=(((l&255)>>>3^1)&255^1)+m|0;f=l<<24>>24==0?f:0;h=h+-1|0;j=j+1|0;if(!h){h=m;break}else n=n+1|0}if(f){j=0;h=0;break}}else{h=0;j=0}a[e+(o<<5)+92>>0]=1}while(0);li(c[q>>2]|0,p)|0;h=ji(c[q>>2]|0,j,h,p)|0;if(!h){b[p+2>>1]=0;b[p>>1]=0;qj(e,o,p);if(g<<24>>24)bj(c[d>>2]|0);c[d>>2]=q;d=0;i=r;return d|0}}bj(q);if(g<<24>>24){d=h;i=r;return d|0}c[d>>2]=0;d=h;i=r;return d|0}function uj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;if(!a){a=40;i=g;return a|0}d=a+12|0;c[d>>2]=0;c[a+16>>2]=b;c[a>>2]=0;c[a+8>>2]=0;e=a+20|0;c[e>>2]=0;f=a+24|0;c[f>>2]=0;b=Pc(b|0,4872)|0;if(!b){a=1;i=g;return a|0}yc(b|0,0,2)|0;h=ob(b|0)|0;c[a+4>>2]=h;if(!h){Ac(b|0)|0;h=81;i=g;return h|0}else{yc(b|0,0,0)|0;c[d>>2]=b;c[e>>2]=67;c[f>>2]=219;h=0;i=g;return h|0}return 0}function vj(){var a=0,b=0;b=i;a=Afa(16)|0;if(!a){i=b;return a|0}c[a>>2]=0;c[a+4>>2]=190;c[a+12>>2]=68;c[a+8>>2]=67;i=b;return a|0}function wj(a){a=a|0;var b=0;b=i;Bfa(a);i=b;return}function xj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;h=m+4|0;l=m;f=b+28|0;k=c[f>>2]|0;e=Fr(b)|0;c[l>>2]=e;if(e){l=c[l>>2]|0;i=m;return l|0}d=a+0|0;e=d+40|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));d=a+28|0;c[d>>2]=k;g=Ai(k,8276,l)|0;do if(!(c[l>>2]|0)){e=g+12|0;c[g+4>>2]=a;c[g>>2]=b;c[g+8>>2]=c[d>>2];d=g+8264|0;c[g+8272>>2]=d;c[g+8268>>2]=d;c[d>>2]=0;d=Fr(b)|0;if(!d){c[g+68>>2]=ui(b)|0;c[g+44>>2]=73;c[g+48>>2]=68;c[g+52>>2]=c[f>>2];c[g+16>>2]=0;c[e>>2]=g+4168;if((Ir(e,-15)|0)==0?(c[e>>2]|0)!=0:0){c[l>>2]=0;c[a+12>>2]=g;break}else d=3}c[l>>2]=d;eh(k,g);l=c[l>>2]|0;i=m;return l|0}while(0);d=c[b+8>>2]|0;if((Hh(b,(c[b+4>>2]|0)+-4|0)|0)==0?(j=ti(b,h)|0,j=(c[h>>2]|0)!=0?0:j,Hh(b,d)|0,(j|0)!=0&j>>>0<40960):0){d=ch(k,j,l)|0;do if(!(c[l>>2]|0)){if((Jr(g,0,d,j)|0)!=(j|0)){Jr(g,0,0,0)|0;eh(k,d);break}Kr(g+12|0)|0;c[g+44>>2]=0;c[g+48>>2]=0;c[g+52>>2]=0;c[g+24>>2]=0;c[g+28>>2]=0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;eh(k,g);c[a+12>>2]=0;c[a+4>>2]=j;c[a+8>>2]=0;c[a>>2]=d;c[a+20>>2]=0;c[a+24>>2]=220;l=c[l>>2]|0;i=m;return l|0}while(0);c[l>>2]=0}c[a+4>>2]=2147483647;c[a+8>>2]=0;c[a>>2]=0;c[a+20>>2]=69;c[a+24>>2]=220;l=c[l>>2]|0;i=m;return l|0}function yj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+64|0;k=m;c[k>>2]=e;c[k+4>>2]=f;c[k+12>>2]=b;c[k+16>>2]=c[d>>2];c[k+32>>2]=73;j=k+36|0;c[j>>2]=68;l=k+40|0;c[l>>2]=a;if(Ir(k,15)|0){l=6;i=m;return l|0}a=Nr(k,4)|0;do if((a|0)==1){c[d>>2]=c[k+20>>2];d=k+28|0;e=c[d>>2]|0;if((e|0)!=0?(g=c[j>>2]|0,(g|0)!=0):0){b=c[e+20>>2]|0;if(b){e=c[b>>2]|0;if((e&-2|0)==4){Jd[g&255](c[l>>2]|0,c[b+12>>2]|0);e=c[b>>2]|0}if((e|0)==6)Jd[c[j>>2]&255](c[l>>2]|0,c[b+4>>2]|0);c[b>>2]=0;c[b+28>>2]=0;c[b+32>>2]=0;g=b+40|0;e=c[g>>2]|0;c[b+52>>2]=e;c[b+48>>2]=e;f=c[b+56>>2]|0;if(f){e=Od[f&255](0,0,0)|0;c[b+60>>2]=e;c[k+48>>2]=e;e=c[g>>2]|0}Jd[c[j>>2]&255](c[l>>2]|0,e);Jd[c[j>>2]&255](c[l>>2]|0,c[b+36>>2]|0);Jd[c[j>>2]&255](c[l>>2]|0,b);g=c[j>>2]|0;e=c[d>>2]|0}Jd[g&255](c[l>>2]|0,e);c[d>>2]=0}}else{d=k+28|0;e=c[d>>2]|0;if((e|0)!=0?(h=c[j>>2]|0,(h|0)!=0):0){f=c[e+20>>2]|0;if(!f)g=h;else{e=c[f>>2]|0;if((e&-2|0)==4){Jd[h&255](c[l>>2]|0,c[f+12>>2]|0);e=c[f>>2]|0}if((e|0)==6)Jd[c[j>>2]&255](c[l>>2]|0,c[f+4>>2]|0);c[f>>2]=0;c[f+28>>2]=0;c[f+32>>2]=0;b=f+40|0;e=c[b>>2]|0;c[f+52>>2]=e;c[f+48>>2]=e;g=c[f+56>>2]|0;if(g){e=Od[g&255](0,0,0)|0;c[f+60>>2]=e;c[k+48>>2]=e;e=c[b>>2]|0}Jd[c[j>>2]&255](c[l>>2]|0,e);Jd[c[j>>2]&255](c[l>>2]|0,c[f+36>>2]|0);Jd[c[j>>2]&255](c[l>>2]|0,f);g=c[j>>2]|0;e=c[d>>2]|0}Jd[g&255](c[l>>2]|0,e);c[d>>2]=0}e=(a|0)==0?-5:a;if((e|0)==-4){l=64;i=m;return l|0}else if((e|0)==-5){l=10;i=m;return l|0}else if((e|0)==-3){l=8;i=m;return l|0}else break}while(0);l=0;i=m;return l|0}function zj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;k=n+4|0;m=n;h=d+28|0;l=c[h>>2]|0;e=Hh(d,0)|0;if(!e){e=pi(d,k,2)|0;if(!e)if((a[k>>0]|0)==31?(j=k+1|0,(a[j>>0]|0)==-99):0){c[m>>2]=0;e=b+0|0;f=e+40|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));f=b+28|0;c[f>>2]=l;g=ch(l,4292,m)|0;e=c[m>>2]|0;do if(!e){c[g+4>>2]=b;c[g>>2]=d;c[g+8>>2]=c[f>>2];e=g+4280|0;c[g+4288>>2]=e;c[g+4284>>2]=e;c[e>>2]=0;e=Hh(d,0)|0;if(!e){e=pi(d,k,2)|0;if(!e)if((a[k>>0]|0)==31&(a[j>>0]|0)==-99){e=g+12|0;Cga(e|0,0,164)|0;c[g+176>>2]=d;c[g+180>>2]=c[h>>2];c[g+88>>2]=0;c[g+92>>2]=0;c[g+96>>2]=0;c[g+100>>2]=g+112;c[g+108>>2]=64;c[g+16>>2]=0;c[g+36>>2]=0;c[g+40>>2]=0;a[g+44>>0]=0;c[g+48>>2]=0;c[g+104>>2]=0;c[g+64>>2]=9;c[e>>2]=0;c[m>>2]=0;c[b+12>>2]=g;e=0;break}else e=3}c[m>>2]=e;eh(l,g);m=c[m>>2]|0;i=n;return m|0}while(0);c[b+4>>2]=2147483647;c[b+8>>2]=0;c[b>>2]=0;c[b+20>>2]=70;c[b+24>>2]=221;m=e;i=n;return m|0}else e=3}c[m>>2]=e;m=e;i=n;return m|0}function Aj(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+32|0;z=F+12|0;B=F;A=F+4|0;y=F+8|0;p=F+16|0;C=e+68|0;k=c[C>>2]|0;D=e+64|0;j=c[D>>2]|0;E=e+72|0;l=c[E>>2]|0;if(!g){g=l;B=k;A=j;e=0;c[D>>2]=A;c[C>>2]=B;c[E>>2]=g;i=F;return e|0}h=c[e>>2]|0;do if(!h){h=e+164|0;if(((Hh(c[h>>2]|0,2)|0)==0?(wi(c[h>>2]|0,p,1)|0)==1:0)?(n=d[p>>0]|0,m=n&31,c[e+40>>2]=m,c[e+44>>2]=n&128,o=1<>2]=o+-256,m>>>0<=16):0){c[e+52>>2]=9;c[e+56>>2]=n>>>7;c[e+60>>2]=m>>>0>9?256:o+-255|0;h=Qr(e)|0;if(h>>>0<=255){if(f)a[f>>0]=h;if(g>>>0<2){g=0;B=h;A=h;e=1;c[D>>2]=A;c[C>>2]=B;c[E>>2]=g;i=F;return e|0}else{c[e>>2]=1;l=0;k=h;j=h;h=1;n=12;break}}else{l=0;h=0;n=63}}else{h=0;n=63}}else if((h|0)==2){p=e+88|0;t=e+92|0;r=l;h=0;n=47}else if((h|0)==1){h=0;n=12}else{g=l;B=k;A=j;e=0;c[D>>2]=A;c[C>>2]=B;c[E>>2]=g;i=F;return e|0}while(0);a:while(1)if((n|0)==12){m=Qr(e)|0;if((m|0)<0){n=63;continue}p=e+44|0;q=e+56|0;n=e+32|0;while(1){if((m|0)!=256){n=17;break}if(!(c[p>>2]|0)){l=256;x=k;n=18;break}c[q>>2]=0;a[n>>0]=1;j=Qr(e)|0;if((j|0)<0){k=0;j=0;n=63;continue a}else{m=j;k=0;j=0}}if((n|0)==17){n=0;if(m>>>0>255){l=m;x=k;n=18}else{l=m;k=m}}if((n|0)==18){m=l+-256|0;k=c[q>>2]|0;if(m>>>0>>0)k=l;else{if(m>>>0>k>>>0){k=x;n=63;continue}r=e+92|0;k=c[r>>2]|0;o=e+96|0;n=c[o>>2]|0;if(k>>>0>=n>>>0){q=c[e+168>>2]|0;k=n+4+(n>>>1)|0;m=e+88|0;p=c[m>>2]|0;if((p|0)==(e+100|0)){c[m>>2]=0;p=0;n=0}if(k>>>0>65536)if((n|0)==65536){k=x;n=63;continue}else k=65536;c[m>>2]=hh(q,1,n,k,p,y)|0;if(c[y>>2]|0){k=x;n=63;continue}c[o>>2]=k;k=c[r>>2]|0}c[r>>2]=k+1;a[(c[e+88>>2]|0)+k>>0]=x;k=j}if(k>>>0>255){o=e+76|0;r=e+92|0;s=e+96|0;t=e+80|0;u=e+88|0;v=e+168|0;w=e+100|0;p=c[o>>2]|0;while(1){if(!p){k=x;n=63;continue a}p=c[r>>2]|0;n=c[s>>2]|0;if(p>>>0>=n>>>0){m=c[v>>2]|0;q=n+4+(n>>>1)|0;p=c[u>>2]|0;if((p|0)==(w|0)){c[u>>2]=0;p=0;n=0}if(q>>>0>65536)if((n|0)==65536){k=x;n=63;continue a}else q=65536;c[u>>2]=hh(m,1,n,q,p,A)|0;if(c[A>>2]|0){k=x;n=63;continue a}c[s>>2]=q;p=c[r>>2]|0}m=k+-256|0;k=a[(c[t>>2]|0)+m>>0]|0;c[r>>2]=p+1;a[(c[u>>2]|0)+p>>0]=k;p=c[o>>2]|0;m=b[p+(m<<1)>>1]|0;k=m&65535;if((m&65535)<=255)break}}}t=e+92|0;m=c[t>>2]|0;s=e+96|0;o=c[s>>2]|0;if(m>>>0>=o>>>0){q=c[e+168>>2]|0;n=o+4+(o>>>1)|0;r=e+88|0;p=c[r>>2]|0;if((p|0)==(e+100|0)){c[r>>2]=0;p=0;m=0}else m=o;if(n>>>0>65536)if((m|0)==65536){n=63;continue}else n=65536;c[r>>2]=hh(q,1,m,n,p,B)|0;if(c[B>>2]|0){n=63;continue}c[s>>2]=n;m=c[t>>2]|0}c[t>>2]=m+1;p=e+88|0;a[(c[p>>2]|0)+m>>0]=k;c[e>>2]=2;r=l;n=47;continue}else if((n|0)==47){b:do if(!f){l=c[t>>2]|0;while(1){if(!l)break b;l=l+-1|0;c[t>>2]=l;h=h+1|0;if((h|0)==(g|0)){l=r;h=g;n=62;break a}}}else while(1){l=c[t>>2]|0;if(!l)break b;x=l+-1|0;c[t>>2]=x;a[f+h>>0]=a[(c[p>>2]|0)+x>>0]|0;h=h+1|0;if((h|0)==(g|0)){l=r;h=g;n=62;break a}}while(0);q=e+56|0;l=c[q>>2]|0;if(l>>>0<(c[e+48>>2]|0)>>>0){n=e+84|0;o=c[n>>2]|0;if(l>>>0>>0){m=e+76|0;n=e+80|0}else{if(!o)l=512;else l=(o>>>2)+o|0;m=e+76|0;p=hh(c[e+168>>2]|0,3,o,l,c[m>>2]|0,z)|0;c[m>>2]=p;if(c[z>>2]|0){l=r;n=63;continue}w=p+(l<<1)|0;x=e+80|0;c[x>>2]=w;Bga(w|0,p+(o<<1)|0,o|0)|0;c[n>>2]=l;n=x;l=c[q>>2]|0}b[(c[m>>2]|0)+(l<<1)>>1]=j;a[(c[n>>2]|0)+l>>0]=k;c[q>>2]=(c[q>>2]|0)+1}c[e>>2]=1;l=r;j=r;n=12;continue}else if((n|0)==63){c[e>>2]=3;n=62;break}if((n|0)==62){c[D>>2]=j;c[C>>2]=k;c[E>>2]=l;i=F;return h|0}return 0}function Bj(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=i;i=i+208|0;N=P+136|0;M=P;O=P+8|0;m=f+2|0;l=b[m>>1]|0;if(!(l<<16>>16)){O=0;i=P;return O|0}if(!(b[f>>1]|0)){O=0;i=P;return O|0}j=O+0|0;k=j+128|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));A=c[g>>2]|0;K=O+16|0;c[K>>2]=A;L=O+8|0;c[L>>2]=hh(A,40,0,l<<16>>16,0,N)|0;j=c[N>>2]|0;if(!j){l=hh(A,8,0,b[f>>1]|0,0,N)|0;k=O+12|0;c[k>>2]=l;j=c[N>>2]|0;if(!j){t=b[m>>1]|0;c[O>>2]=t<<16>>16;G=b[f>>1]|0;p=G<<16>>16;J=O+4|0;c[J>>2]=p;u=c[L>>2]|0;if(G<<16>>16){s=c[f+12>>2]|0;r=0;n=0;while(1){j=b[s+(n<<1)>>1]|0;o=r;r=j+1|0;m=r-o|0;q=u+(o*40|0)|0;c[l>>2]=q;c[l+4>>2]=m;if((m|0)>0){c[q>>2]=u+(j*40|0);c[u+(o*40|0)+8>>2]=l;if((m|0)>1){o=q;do{G=o;o=o+40|0;c[G+4>>2]=o;c[o>>2]=G;c[G+48>>2]=l;m=m+-1|0}while((m|0)>1)}else j=o;c[u+(j*40|0)+4>>2]=q}n=n+1|0;if(n>>>0>=p>>>0)break;else l=l+8|0}}z=f+4|0;y=c[z>>2]|0;if(t<<16>>16){v=u;w=f+8|0;x=0;t=u;while(1){j=((c[t>>2]|0)-v|0)/40|0;l=((c[t+4>>2]|0)-v|0)/40|0;if(!(a[(c[w>>2]|0)+x>>0]&1))c[t+12>>2]=1;m=c[y+(x<<3)>>2]|0;s=m-(c[y+(j<<3)>>2]|0)|0;r=c[y+(x<<3)+4>>2]|0;p=r-(c[y+(j<<3)+4>>2]|0)|0;j=(s|0)<0?0-s|0:s;q=(p|0)<0?0-p|0:p;if((q*12|0)>=(j|0))if((j*12|0)<(q|0))n=(p>>31&2)+-1|0;else n=4;else n=s>>31&-4|2;a[t+20>>0]=n;o=(c[y+(l<<3)>>2]|0)-m|0;l=(c[y+(l<<3)+4>>2]|0)-r|0;j=(o|0)<0?0-o|0:o;q=(l|0)<0?0-l|0:l;if((q*12|0)>=(j|0))if((j*12|0)<(q|0))q=(l>>31&2)+-1|0;else q=4;else q=o>>31&-4|2;a[t+21>>0]=q;m=t+12|0;j=c[m>>2]|0;do if(!(j&1)){if((n|0)==(q|0)){if((n|0)==4){if(!(ah(s,p,o,l)|0))break;j=c[m>>2]|0}c[m>>2]=j|2}}else c[m>>2]=j|2;while(0);x=x+1|0;j=c[O>>2]|0;if(x>>>0>=j>>>0)break;else t=t+40|0}c[O+20>>2]=f;c[O+24>>2]=g;if(j){m=c[L>>2]|0;l=c[z>>2]|0;while(1){c[m+16>>2]=0;c[m+24>>2]=0;c[m+28>>2]=c[l>>2];c[m+32>>2]=c[l+4>>2];j=j+-1|0;if(!j)break;else{m=m+40|0;l=l+8|0}}}}else{c[O+20>>2]=f;c[O+24>>2]=g}if(c[J>>2]|0){w=0;do{j=c[k>>2]|0;a:do if((c[j+(w<<3)+4>>2]|0)>>>0>=4){v=c[j+(w<<3)>>2]|0;o=v+28|0;n=v+32|0;j=v;while(1){j=c[j+4>>2]|0;if((j|0)==(v|0))break a;l=c[j+28>>2]|0;p=c[o>>2]|0;m=c[j+32>>2]|0;q=c[n>>2]|0;if(!((l|0)==(p|0)&(m|0)==(q|0))){o=q;break}}u=l-p|0;t=m-o|0;m=c[v>>2]|0;if((m|0)!=(v|0)){s=v;while(1){n=m+28|0;F=c[n>>2]|0;q=p-F|0;r=m+32|0;G=c[r>>2]|0;l=o-G|0;if(!((p|0)==(F|0)&(o|0)==(G|0))?(B=$g(u,t,q,l)|0,(B|0)!=0):0){m=q;o=B;break}l=c[m>>2]|0;if((l|0)==(v|0))break a;s=m;m=l;p=c[n>>2]|0;o=c[r>>2]|0}u=o;o=s;while(1){t=j;n=0;while(1){j=c[t+4>>2]|0;n=(j|0)==(s|0)?1:n;D=c[j+28>>2]|0;E=c[t+28>>2]|0;q=D-E|0;F=c[j+32>>2]|0;G=c[t+32>>2]|0;p=F-G|0;if((D|0)==(E|0)&(F|0)==(G|0)){t=j;continue}r=$g(m,l,q,p)|0;if(!r)t=j;else{m=q;l=p;q=t;break}}if((r^u|0)<0){do{G=o+12|0;c[G>>2]=c[G>>2]|4;o=c[o+4>>2]|0}while((o|0)!=(q|0));G=q+12|0;c[G>>2]=c[G>>2]|4}if(!n){u=r;o=q}else break}}}while(0);w=w+1|0}while(w>>>0<(c[J>>2]|0)>>>0)}j=Rr(O+28|0,e+16|0,e+28|0,A)|0;c[N>>2]=j;if(!j){j=Rr(O+68|0,e+52|0,e+64|0,A)|0;if(!j){F=O+24|0;H=c[F>>2]|0;G=c[H+200>>2]|0;H=c[H+404>>2]|0;j=Wg(c[g+416>>2]|0,H)|0;l=j+32&-64;if((l|0)==0|(j|0)==(l|0))m=0;else{m=Ug(H,l,j)|0;if((l|0)<(j|0))j=G-((G|0)/50|0)|0;else j=G;Sr(c[F>>2]|0,j,m,0,0)|0;m=1}a[O+120>>0]=1;a[O+121>>0]=1;if((h|0)==2){j=1;l=1}else{j=(h|0)==4&1;l=(h|0)==3&1}a[O+122>>0]=l;a[O+123>>0]=j;a[O+124>>0]=(h|0)!=1&1;E=O+20|0;A=g+412|0;B=g+416|0;e=g+928|0;h=g+2488|0;C=g+2492|0;D=g+2484|0;z=m<<24>>24==0;f=0;while(1){u=c[O>>2]|0;v=c[L>>2]|0;j=c[(c[E>>2]|0)+4>>2]|0;if(u)if(!f){q=u;m=v;while(1){c[m+16>>2]=0;c[m+24>>2]=0;c[m+28>>2]=c[j>>2];c[m+32>>2]=c[j+4>>2];q=q+-1|0;if(!q)break;else{m=m+40|0;j=j+8|0}}}else{q=u;m=v;while(1){c[m+16>>2]=0;c[m+24>>2]=0;c[m+28>>2]=c[j+4>>2];c[m+32>>2]=c[j>>2];q=q+-1|0;if(!q)break;else{m=m+40|0;j=j+8|0}}}s=c[J>>2]|0;b:do if(!s)j=0;else{t=c[k>>2]|0;j=0;while(1){m=c[t+(j<<3)>>2]|0;c:do if(c[t+(j<<3)+4>>2]|0){l=m+28|0;q=m;do{q=c[q>>2]|0;if((q|0)==(m|0)){I=97;break b}}while((c[q+28>>2]|0)==(c[l>>2]|0));p=c[q+4>>2]|0;n=p;while(1){o=n+28|0;m=n;do{m=c[m+4>>2]|0;if((m|0)==(p|0))break c;r=c[m+28>>2]|0;l=c[o>>2]|0}while((r|0)==(l|0));if((c[q+28>>2]|0)<(l|0)){if((r|0)<(l|0)){q=n;I=82}}else if((r|0)>(l|0)){q=n;I=82}if((I|0)==82)while(1){I=0;y=q+16|0;c[y>>2]=c[y>>2]|64;q=c[q+4>>2]|0;if((q|0)==(m|0))break;else I=82}q=c[m>>2]|0;n=m}}while(0);j=j+1|0;if(j>>>0>=s>>>0){j=0;break}}}while(0);d:while(1){if((I|0)==97){I=0;j=j+1|0}if(j>>>0>=u>>>0)break;o=v+(j*40|0)|0;n=v+(j*40|0)+16|0;p=c[n>>2]|0;if(!(p&64)){I=97;continue}q=v+(j*40|0)+32|0;l=o;while(1){l=c[l>>2]|0;if((l|0)==(o|0)){I=97;continue d}m=c[l+32>>2]|0;r=c[q>>2]|0;if((m|0)!=(r|0))break}l=o;while(1){l=c[l+4>>2]|0;if((l|0)==(o|0)){I=97;continue d}q=c[l+32>>2]|0;if((q|0)!=(r|0))break}if((m|0)<(r|0)&(q|0)>(r|0)){c[n>>2]=p|128;I=97;continue}if(!((m|0)>(r|0)&(q|0)<(r|0))){I=97;continue}c[n>>2]=p|256;I=97}w=O+(f*40|0)+28|0;q=c[F>>2]|0;j=c[w>>2]|0;if(j){m=c[O+(f*40|0)+36>>2]|0;while(1){Tr(m,q,f,O);j=j+-1|0;if(!j)break;else m=m+28|0}q=c[F>>2]|0}u=O+(f*40|0)+60|0;r=c[u>>2]|0;m=c[r+8>>2]|0;r=c[r>>2]|0;y=(f|0)==0;v=y?1:2;t=Xg(32,c[q+(f*204|0)+200>>2]|0)|0;t=(t|0)>30?30:t;e:do if(r>>>0>1){l=c[O>>2]|0;if(!l){j=1;o=0}else{s=c[m+12>>2]|0;q=O+(f*40|0)+32|0;j=O+(f*40|0)+40|0;p=l;s=s>>>0>l>>>0?l:s;while(1){n=m+16|0;o=c[m+28>>2]|0;o=o>>>0>p>>>0?p:o;l=o-s|0;if((l|0)>0){I=(c[L>>2]|0)+(s*40|0)|0;Ur(w,c[n>>2]|0,c[m+24>>2]|0);Vr(c[q>>2]|0,c[j>>2]|0,I,l,t,v)}l=r+-1|0;if(l>>>0<=1){I=111;break e}m=n;p=c[O>>2]|0;s=o;r=l}}}else if((r|0)==1){q=O+(f*40|0)+32|0;j=O+(f*40|0)+40|0;I=111}else I=112;while(0);if((I|0)==111){x=c[O>>2]|0;s=c[L>>2]|0;u=c[(c[u>>2]|0)+8>>2]|0;Ur(w,c[u>>2]|0,c[u+8>>2]|0);Vr(c[q>>2]|0,c[j>>2]|0,s,x,t,v);I=112}if((I|0)==112){I=0;o=c[O>>2]|0;j=(o|0)==0;if(j){j=1;o=0}else{l=o;r=c[L>>2]|0;while(1){do if(c[r+24>>2]|0){q=r+16|0;m=c[q>>2]|0;if(m&16)break;c[q>>2]=m|16}while(0);l=l+-1|0;if(!l)break;else r=r+40|0}}}if((f|0)==1)if(j)j=0;else{v=o;w=c[L>>2]|0;while(1){x=a[w+20>>0]|0;if(!(!(x<<24>>24==-2|x<<24>>24==2)?(x=a[w+21>>0]|0,!(x<<24>>24==-2|x<<24>>24==2)):0))I=123;f:do if((I|0)==123){I=0;t=w+16|0;q=c[t>>2]|0;if(q&16)break;u=c[w+28>>2]|0;m=c[A>>2]|0;g:do if(m){n=c[h>>2]|0;p=0-n|0;s=w+36|0;r=B;while(1){l=u-(c[r+12>>2]|0)|0;if((l|0)<(p|0))break g;do if((u|0)<=((c[r+8>>2]|0)+n|0)){if((a[C>>0]|0)==0?(l|0)>(c[D>>2]|0):0)break;c[s>>2]=c[r+24>>2];q=q|48;c[t>>2]=q}while(0);m=m+-1|0;if(!m)break;else r=r+32|0}}while(0);m=c[e>>2]|0;if(!m)break;n=c[h>>2]|0;p=0-n|0;s=w+36|0;r=m;l=g+(m+-1<<5)+932|0;while(1){m=(c[l+8>>2]|0)-u|0;if((m|0)<(p|0))break f;do if((u|0)>=((c[l+12>>2]|0)-n|0)){if((a[C>>0]|0)==0?(m|0)>=(c[D>>2]|0):0)break;c[s>>2]=c[l+28>>2];q=q|48;c[t>>2]=q}while(0);r=r+-1|0;if(!r)break;else l=l+-32|0}}while(0);v=v+-1|0;if(!v){I=141;break}else w=w+40|0}}else I=141;if((I|0)==141){I=0;s=c[(c[F>>2]|0)+(f*204|0)+200>>2]|0;if(j)j=0;else{p=c[L>>2]|0;while(1){q=c[p+24>>2]|0;if(q){n=p+16|0;j=c[n>>2]|0;do if(!(j&512)){if(j&1024){c[p+36>>2]=(c[q+12>>2]|0)+(c[q+8>>2]|0);break}m=(c[p+28>>2]|0)-(c[q>>2]|0)|0;if((m|0)<1){x=c[q+8>>2]|0;c[p+36>>2]=(Wg(m,s)|0)+x;break}l=c[q+4>>2]|0;r=c[q+8>>2]|0;j=c[q+12>>2]|0;if((m|0)<(l|0)){c[p+36>>2]=(Ug(m,j,l)|0)+r;break}else{c[p+36>>2]=j+r+(Wg(m-l|0,s)|0);break}}else c[p+36>>2]=c[q+8>>2];while(0);c[n>>2]=c[n>>2]|32}o=o+-1|0;if(!o)break;else p=p+40|0}j=c[O>>2]|0}}v=c[(c[F>>2]|0)+(f*204|0)+200>>2]|0;w=c[K>>2]|0;p=c[L>>2]|0;x=p+(j*40|0)|0;do if((j|0)>0){j=0;q=p;do{j=((c[q+16>>2]|0)>>>4&1)+j|0;q=q+40|0}while(q>>>0>>0);if(!j)break;if(j>>>0>=17){j=hh(w,4,0,j,0,M)|0;if(c[M>>2]|0)break}else j=N;q=0;n=p;do{if(c[n+16>>2]&16){m=j+(q<<2)|0;h:do if((q|0)>0){o=c[n+28>>2]|0;r=m;while(1){m=r+-4|0;l=c[m>>2]|0;if((c[l+28>>2]|0)<=(o|0)){m=r;break h}c[r>>2]=l;if(m>>>0>j>>>0)r=m;else break}}while(0);c[m>>2]=n;q=q+1|0}n=n+40|0}while(n>>>0>>0);t=(q|0)==0;u=j+(q+-1<<2)|0;do{s=p+16|0;m=c[s>>2]|0;do if(!(m&16)){l=p+12|0;r=c[l>>2]|0;if(r&2){o=a[p+20>>0]|0;if(o<<24>>24==4)break;if(o<<24>>24!=(a[p+21>>0]|0))break;if(!(r&4|m&64))break;c[l>>2]=r&-3}n=c[p+28>>2]|0;do if(!t){l=0;while(1){m=l+1|0;if((c[(c[j+(l<<2)>>2]|0)+28>>2]|0)>(n|0)){m=l;break}if(m>>>0>>0)l=m;else break}if(!m){I=180;break}o=c[j+(m+-1<<2)>>2]|0;m=q;while(1){if(!m){m=0;break}l=m+-1|0;if((c[(c[j+(l<<2)>>2]|0)+28>>2]|0)<(n|0))break;else m=l}if((m|0)==(q|0)){r=c[u>>2]|0;o=c[r+36>>2]|0;c[p+36>>2]=(Wg(n-(c[r+28>>2]|0)|0,v)|0)+o;break}m=c[j+(m<<2)>>2]|0;l=c[o+28>>2]|0;if((n|0)==(l|0)){c[p+36>>2]=c[o+36>>2];break}r=c[m+28>>2]|0;m=c[m+36>>2]|0;if((n|0)==(r|0)){c[p+36>>2]=m;break}else{o=c[o+36>>2]|0;c[p+36>>2]=(Ug(n-l|0,m-o|0,r-l|0)|0)+o;break}}else I=180;while(0);if((I|0)==180){I=0;r=c[j>>2]|0;o=c[r+36>>2]|0;c[p+36>>2]=(Wg(n-(c[r+28>>2]|0)|0,v)|0)+o}c[s>>2]=c[s>>2]|32}while(0);p=p+40|0}while(p>>>0>>0);if((j|0)==(N|0))break;eh(w,j)}while(0);q=c[J>>2]|0;j=c[F>>2]|0;w=c[j+(f*204|0)+200>>2]|0;if(q){x=c[k>>2]|0;j=c[j+(f*204|0)+204>>2]|0;while(1){m=c[x>>2]|0;v=c[x+4>>2]|0;n=m+(v*40|0)|0;i:do if((v|0)>0){r=0;l=0;o=m;do{if(c[o+16>>2]&32){r=(r|0)==0?o:r;l=l+1|0}o=o+40|0}while(o>>>0>>0);v=r;if(l>>>0<2){if((l|0)==1){j=c[v+36>>2]|0;j=j-(Wg(c[v+28>>2]|0,w)|0)|0}while(1){if((m|0)!=(v|0))c[m+36>>2]=(Wg(c[m+28>>2]|0,w)|0)+j;m=m+40|0;if(m>>>0>=n>>>0)break i}}l=v+4|0;m=c[l>>2]|0;if((m|0)==(v|0))break;else r=v;do{if(!(c[m+16>>2]&32)){o=m;do o=c[o+4>>2]|0;while((c[o+16>>2]&32|0)==0);p=c[r+28>>2]|0;s=c[o+28>>2]|0;n=c[o+36>>2]|0;r=c[r+36>>2]|0;if((p|0)>(s|0)){u=n;r=r-n|0;t=s;p=p-s|0}else{u=r;r=n-r|0;t=p;p=s-p|0}if((p|0)>0){n=Xg(r,p)|0;m=c[l>>2]|0}else n=65536;r=r+u|0;do{l=(c[m+28>>2]|0)-t|0;do if((l|0)>=1)if((l|0)<(p|0)){l=(Wg(l,n)|0)+u|0;break}else{l=r+(Wg(l-p|0,w)|0)|0;break}else l=(Wg(l,w)|0)+u|0;while(0);c[m+36>>2]=l;m=c[m+4>>2]|0}while((m|0)!=(o|0));if((o|0)==(v|0))break i;else r=o}else r=m;l=r+4|0;m=c[l>>2]|0}while((m|0)!=(v|0))}while(0);q=q+-1|0;if(!q)break;else x=x+8|0}}q=c[L>>2]|0;r=c[E>>2]|0;l=c[r+4>>2]|0;r=c[r+8>>2]|0;j=c[O>>2]|0;if(j){o=y?32:64;if(y){m=0;while(1){c[l+(m<<3)>>2]=c[q+36>>2];if(c[q+16>>2]&16){j=r+m|0;a[j>>0]=d[j>>0]|o;j=c[O>>2]|0}m=m+1|0;if(m>>>0>=j>>>0)break;else q=q+40|0}}else{m=0;while(1){c[l+(m<<3)+4>>2]=c[q+36>>2];if(c[q+16>>2]&16){j=r+m|0;a[j>>0]=d[j>>0]|o;j=c[O>>2]|0}m=m+1|0;if(m>>>0>=j>>>0)break;else q=q+40|0}}}if(!z)Sr(c[F>>2]|0,G,H,0,0)|0;f=f+1|0;if((f|0)==2){j=0;break}}}}}}else k=O+12|0;M=c[K>>2]|0;J=O+92|0;eh(M,c[J>>2]|0);c[J>>2]=0;c[O+88>>2]=0;c[O+96>>2]=0;J=O+80|0;eh(M,c[J>>2]|0);c[J>>2]=0;J=O+76|0;eh(M,c[J>>2]|0);c[J>>2]=0;c[O+72>>2]=0;c[O+68>>2]=0;c[O+84>>2]=0;J=O+52|0;eh(M,c[J>>2]|0);c[J>>2]=0;c[O+48>>2]=0;c[O+56>>2]=0;J=O+40|0;eh(M,c[J>>2]|0);c[J>>2]=0;J=O+36|0;eh(M,c[J>>2]|0);c[J>>2]=0;c[O+32>>2]=0;c[O+28>>2]=0;c[O+44>>2]=0;eh(M,c[L>>2]|0);c[L>>2]=0;eh(M,c[k>>2]|0);c[k>>2]=0;c[O>>2]=0;c[O+4>>2]=0;c[K>>2]=0;O=j;i=P;return O|0}function Cj(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l+4|0;j=l;h=c[a+8>>2]|0;g=a+28|0;a=c[g>>2]|0;if(a){j=a;i=l;return j|0}d=ch(h,608,j)|0;if(c[j>>2]|0){j=0;i=l;return j|0}e=d+8|0;c[e>>2]=h;f=d+432|0;c[f>>2]=32;a=d+436|0;c[a>>2]=hh(h,20,0,32,0,k)|0;if(c[k>>2]|0){h=c[e>>2]|0;b[d+440>>1]=0;b[d+442>>1]=0;e=d+24|0;eh(h,c[e>>2]|0);c[e>>2]=0;c[d+20>>2]=0;eh(h,c[a>>2]|0);c[a>>2]=0;c[f>>2]=0;c[d+428>>2]=0;e=d+392|0;eh(h,c[e>>2]|0);c[e>>2]=0;c[d+388>>2]=0;c[d+4>>2]=0;c[d>>2]=0;eh(h,d);h=c[k>>2]|0;c[j>>2]=h;if(h){j=0;i=l;return j|0}}else{b[d+440>>1]=0;b[d+442>>1]=0;c[d+20>>2]=0;c[d+388>>2]=0;c[d+24>>2]=0;c[d+392>>2]=0;c[d>>2]=0;c[d+4>>2]=0;c[j>>2]=0}c[g>>2]=d;j=d;i=l;return j|0}function Dj(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0;bc=i;i=i+160|0;$b=bc+112|0;Yb=bc+148|0;Sb=bc+108|0;Vb=bc+104|0;_b=bc+68|0;Xb=bc+152|0;Rb=bc+64|0;Ub=bc+44|0;Zb=bc+8|0;Wb=bc+150|0;Qb=bc+4|0;Tb=bc;Pb=bc+48|0;w=f+256|0;c[w>>2]=0;Eb=(b[f+216>>1]|0)==(b[f+218>>1]|0);_a=f+592|0;c[_a>>2]=Eb?192:191;ib=f+596|0;c[ib>>2]=Eb?28:27;tb=f+600|0;c[tb>>2]=Eb?30:29;as(f);Eb=f+312|0;switch(c[Eb>>2]&255|0){case 0:{v=f+568|0;c[v>>2]=78;break}case 6:{v=f+568|0;c[v>>2]=80;break}case 1:{v=f+568|0;c[v>>2]=75;break}case 2:{v=f+568|0;c[v>>2]=79;break}case 4:{v=f+568|0;c[v>>2]=76;break}case 3:{v=f+568|0;c[v>>2]=77;break}case 5:{v=f+568|0;c[v>>2]=74;break}case 7:{v=f+568|0;c[v>>2]=81;break}default:v=f+568|0}da=f+360|0;fa=f+356|0;ga=f+368|0;ha=f+372|0;ja=f+364|0;ka=f+16|0;la=f+28|0;ma=f+561|0;oa=f+24|0;pa=f+32|0;qa=f+20|0;ra=f+376|0;sa=f+12|0;ta=f+308|0;ua=f+320|0;wa=f+72|0;Ba=f+80|0;Ca=f+380|0;Da=f+284|0;Ea=f+44|0;Fa=f+328|0;Ga=f+324|0;Ha=f+346|0;Ia=f+48|0;Ja=f+298|0;Ka=f+84|0;La=f+300|0;Ma=f+88|0;Na=f+576|0;Oa=f+572|0;Pa=f+52|0;Qa=f+316|0;Ra=f+584|0;Sa=f+344|0;Ta=f+286|0;Ua=f+288|0;Wa=f+92|0;Xa=f+56|0;Ya=f+220|0;Za=f+224|0;$a=f+416|0;ab=f+408|0;bb=f+428|0;cb=f+432|0;db=f+436|0;eb=f+352|0;ac=f+488|0;fb=f+294|0;gb=f+296|0;hb=f+290|0;jb=f+292|0;kb=f+294|0;lb=f+116|0;mb=f+124|0;nb=f+290|0;ob=f+298|0;pb=f+132|0;qb=f+284|0;rb=f+36|0;sb=f+180|0;ub=f+144|0;vb=f+108|0;wb=f+348|0;xb=f+304|0;yb=f+260|0;zb=f+60|0;Ab=f+420|0;Bb=f+404|0;Cb=f+396|0;Db=f+400|0;Fb=f+264|0;Gb=f+154|0;Hb=f+156|0;Ib=f+160|0;Jb=Pb+4|0;Kb=f+164|0;Lb=Pb+8|0;Mb=f+152|0;Nb=Pb+12|0;Ob=f+172|0;x=f+176|0;y=f+168|0;z=_b+16|0;A=f+136|0;B=f+140|0;C=f+118|0;D=$b+16|0;E=f+120|0;F=f+128|0;G=f+588|0;H=f+468|0;I=f+472|0;J=f+252|0;K=f+244|0;L=f+248|0;M=f+332|0;N=f+334|0;O=f+384|0;P=f+244|0;Q=f+476|0;R=f+484|0;S=f+480|0;T=f+282|0;U=f+337|0;V=f+281|0;W=f+604|0;X=f+412|0;Y=f+424|0;Z=f+340|0;_=f+336|0;o=c[da>>2]|0;u=0;a:while(1){s=c[fa>>2]|0;q=a[s+o>>0]|0;a[ga>>0]=q;l=q&255;k=a[89096+l>>0]|0;c[ha>>2]=k;if((l&254|0)==64){h=o+1|0;g=c[ja>>2]|0;if((h|0)>=(g|0)){t=840;break}k=2-(ea(d[s+h>>0]|0,k)|0)|0;c[ha>>2]=k}else g=c[ja>>2]|0;if((k+o|0)>(g|0)){t=840;break}h=a[89352+l>>0]|0;p=h&255;j=p>>>4;g=(c[ka>>2]|0)-j|0;c[la>>2]=g;if((g|0)<0){if(a[ma>>0]|0){t=21;break}if((h&255)>15){g=c[oa>>2]|0;o=0;h=0;do{c[g+(o<<2)>>2]=0;h=h+1<<16>>16;o=h&65535}while(o>>>0>>0)}c[la>>2]=0;g=0}m=(p&15)+g|0;c[pa>>2]=m;p=c[qa>>2]|0;if(m>>>0>p>>>0){t=25;break}a[ra>>0]=1;c[sa>>2]=0;n=c[oa>>2]|0;r=n+(g<<2)|0;b:do switch(l|0){case 127:case 126:case 89:case 33:{t=833;break}case 60:{k=c[xb>>2]|0;c:do if((c[ka>>2]|0)>=(k|0)?(e[qb>>1]|0)<(e[Ea>>1]|0):0){if((k|0)>0){h=n;while(1){g=g+-1|0;c[la>>2]=g;g=c[h+(g<<2)>>2]|0;h=g&65535;if(h>>>0>=(e[Ba>>1]|0)>>>0)if(!(a[ma>>0]|0))g=k;else{t=390;break a}else{q=c[Ma>>2]|0;r=c[Pa>>2]|0;s=e[qb>>1]|0;s=Od[c[Oa>>2]&255](f,(c[q+(h<<3)>>2]|0)-(c[r+(s<<3)>>2]|0)|0,(c[q+(h<<3)+4>>2]|0)-(c[r+(s<<3)+4>>2]|0)|0)|0;de[c[Ra>>2]&63](f,wa,g&65535,0-s|0);g=c[xb>>2]|0}k=g+-1|0;c[xb>>2]=k;g=c[la>>2]|0;if((k|0)<=0)break c;h=c[oa>>2]|0}}}else t=385;while(0);if((t|0)==385)if(a[ma>>0]|0)c[sa>>2]=134;c[xb>>2]=1;c[pa>>2]=g;t=817;break}case 61:{c[Eb>>2]=2;c[v>>2]=79;t=817;break}case 63:case 62:{k=c[r>>2]|0;g=c[n+(g+1<<2)>>2]|0;h=c[ua>>2]|0;j=k&65535;k=k&65535;if(k>>>0<(e[Ea>>1]|0)>>>0?(c[Ca>>2]|0)>>>0>g>>>0:0){g=Wd[c[_a>>2]&511](f,g)|0;if(!(b[Sa>>1]|0)){m=b[Ja>>1]|0;s=m<<16>>16;n=(g|0)<0?0-g|0:g;m=m<<16>>16<0?0-s|0:s;l=n>>>16;n=n&65535;q=ea(m,n)|0;m=ea(m,l)|0;r=q+(m<<16|8192)|0;r=(m>>>16)+(r>>>0>>0&1)<<18|r>>>14;q=c[Ia>>2]|0;c[q+(k<<3)>>2]=(s^g|0)>-1?r:0-r|0;r=b[La>>1]|0;s=r<<16>>16;r=r<<16>>16<0?0-s|0:s;n=ea(r,n)|0;l=ea(r,l)|0;r=n+(l<<16|8192)|0;r=(l>>>16)+(r>>>0>>0&1)<<18|r>>>14;c[q+(k<<3)+4>>2]=(s^g|0)>-1?r:0-r|0;q=q+(k<<3)|0;r=c[q+4>>2]|0;s=(c[Pa>>2]|0)+(k<<3)|0;c[s>>2]=c[q>>2];c[s+4>>2]=r}s=c[Pa>>2]|0;k=Od[c[Oa>>2]&255](f,c[s+(k<<3)>>2]|0,c[s+(k<<3)+4>>2]|0)|0;if(a[ga>>0]&1){s=g-k|0;g=Od[c[v>>2]&255](f,(((s|0)<0?0-s|0:s)|0)>(h|0)?k:g,c[Fb>>2]|0)|0}de[c[Ra>>2]&63](f,rb,j,g-k|0)}else t=398;if((t|0)==398?(0,(a[ma>>0]|0)!=0):0)c[sa>>2]=134;b[qb>>1]=j;b[Ta>>1]=j;t=817;break}case 59:case 58:{j=c[r>>2]|0;k=j&65535;j=j&65535;if(j>>>0<(e[Ba>>1]|0)>>>0?($=b[qb>>1]|0,aa=$&65535,($&65535)<(e[Ea>>1]|0)):0){if(!(b[Ha>>1]|0)){h=(c[Ia>>2]|0)+(aa<<3)|0;t=c[h+4>>2]|0;s=(c[Ka>>2]|0)+(j<<3)|0;c[s>>2]=c[h>>2];c[s+4>>2]=t;g=n+(g+1<<2)|0;de[c[G>>2]&63](f,wa,k,c[g>>2]|0);s=(c[Ka>>2]|0)+(j<<3)|0;t=c[s+4>>2]|0;h=(c[Ma>>2]|0)+(j<<3)|0;c[h>>2]=c[s>>2];c[h+4>>2]=t;h=b[qb>>1]|0}else{g=n+(g+1<<2)|0;h=$}r=c[Ma>>2]|0;s=c[Pa>>2]|0;t=h&65535;t=Od[c[Oa>>2]&255](f,(c[r+(j<<3)>>2]|0)-(c[s+(t<<3)>>2]|0)|0,(c[r+(j<<3)+4>>2]|0)-(c[s+(t<<3)+4>>2]|0)|0)|0;de[c[Ra>>2]&63](f,wa,k,(c[g>>2]|0)-t|0);b[Ta>>1]=b[qb>>1]|0;b[Ua>>1]=k;if(!(a[ga>>0]&1)){t=817;break b}b[qb>>1]=k;t=817;break b}if(!(a[ma>>0]|0))t=817;else{t=377;break a}break}case 69:{g=c[r>>2]|0;if(g>>>0<(c[Ca>>2]|0)>>>0){c[r>>2]=Wd[c[_a>>2]&511](f,g)|0;t=817;break b}if(a[ma>>0]|0){t=421;break a}c[r>>2]=0;t=817;break}case 65:{k=c[da>>2]|0;h=a[s+(k+1)>>0]|0;o=h&255;if(o>>>0>=(p+1-(c[ka>>2]|0)|0)>>>0){t=413;break a}k=k+2|0;c[da>>2]=k;d:do if(h<<24>>24){h=0;j=1;while(1){c[da>>2]=k+2;c[n+(h+g<<2)>>2]=(d[s+k>>0]<<8|d[s+(k+1)>>0])<<16>>16;h=j&65535;if(h>>>0>=o>>>0)break d;k=c[da>>2]|0;j=j+1<<16>>16}}while(0);a[ra>>0]=0;c[pa>>2]=m+o;t=817;break}case 71:case 70:{g=c[r>>2]|0;do if(g>>>0<(e[lb>>1]|0)>>>0)if(!(q&1)){t=c[mb>>2]|0;g=Od[c[Oa>>2]&255](f,c[t+(g<<3)>>2]|0,c[t+(g<<3)+4>>2]|0)|0;break}else{t=c[E>>2]|0;g=Od[c[Na>>2]&255](f,c[t+(g<<3)>>2]|0,c[t+(g<<3)+4>>2]|0)|0;break}else if(!(a[ma>>0]|0))g=0;else{c[sa>>2]=134;g=0}while(0);c[r>>2]=g;t=817;break}case 66:{h=c[r>>2]|0;if(h>>>0>=(e[H>>1]|0)>>>0)if(!(a[ma>>0]|0)){t=817;break b}else{t=421;break a}else{c[(c[I>>2]|0)+(h<<2)>>2]=c[n+(g+1<<2)>>2];t=817;break b}}case 72:{h=c[r>>2]|0;j=h&65535;if(j>>>0>=(e[lb>>1]|0)>>>0)if(!(a[ma>>0]|0)){t=817;break b}else{t=442;break a}t=c[mb>>2]|0;t=Od[c[Oa>>2]&255](f,c[t+(j<<3)>>2]|0,c[t+(j<<3)+4>>2]|0)|0;de[c[Ra>>2]&63](f,vb,h&65535,(c[n+(g+1<<2)>>2]|0)-t|0);if(!(b[wb>>1]|0)){r=(c[mb>>2]|0)+(j<<3)|0;s=c[r+4>>2]|0;t=(c[E>>2]|0)+(j<<3)|0;c[t>>2]=c[r>>2];c[t+4>>2]=s;t=817}else t=817;break}case 74:case 73:{o=c[r>>2]&65535;do if(o>>>0<(e[Ea>>1]|0)>>>0?(ca=c[n+(g+1<<2)>>2]&65535,ca>>>0<(e[Ba>>1]|0)>>>0):0){if(q&1){s=c[Pa>>2]|0;g=c[Ma>>2]|0;g=Od[c[Oa>>2]&255](f,(c[s+(o<<3)>>2]|0)-(c[g+(ca<<3)>>2]|0)|0,(c[s+(o<<3)+4>>2]|0)-(c[g+(ca<<3)+4>>2]|0)|0)|0;break}if((b[Sa>>1]|0)!=0?(b[Ha>>1]|0)!=0:0){g=c[Xa>>2]|0;k=c[Wa>>2]|0;h=c[Ya>>2]|0;j=c[g+(o<<3)>>2]|0;l=c[k+(ca<<3)>>2]|0;if((h|0)==(c[Za>>2]|0)){g=Od[c[Na>>2]&255](f,j-l|0,(c[g+(o<<3)+4>>2]|0)-(c[k+(ca<<3)+4>>2]|0)|0)|0;g=Wg(g,c[Ya>>2]|0)|0;break}else{s=Wg(j-l|0,h)|0;g=Wg((c[g+(o<<3)+4>>2]|0)-(c[k+(ca<<3)+4>>2]|0)|0,c[Za>>2]|0)|0;g=Od[c[Na>>2]&255](f,s,g)|0;break}}s=c[Ia>>2]|0;g=c[Ka>>2]|0;g=Od[c[Na>>2]&255](f,(c[s+(o<<3)>>2]|0)-(c[g+(ca<<3)>>2]|0)|0,(c[s+(o<<3)+4>>2]|0)-(c[g+(ca<<3)+4>>2]|0)|0)|0}else t=447;while(0);if((t|0)==447)if(!(a[ma>>0]|0))g=0;else{c[sa>>2]=134;g=0}c[r>>2]=g;t=817;break}case 64:{k=c[da>>2]|0;h=a[s+(k+1)>>0]|0;o=h&255;if(o>>>0>=(p+1-(c[ka>>2]|0)|0)>>>0){t=409;break a}if(h<<24>>24!=0?(ba=g+-1|0,c[r>>2]=d[s+(k+2)>>0],(h&255)>=2):0){g=2;k=2;do{k=k+1<<16>>16;c[n+(ba+g<<2)>>2]=d[s+((c[da>>2]|0)+1+g)>>0];g=k&65535}while(g>>>0<=o>>>0)}c[pa>>2]=m+o;t=817;break}case 68:{h=c[r>>2]|0;if(h>>>0>=(c[Ca>>2]|0)>>>0)if(!(a[ma>>0]|0)){t=817;break b}else{t=421;break a}else{$d[c[ib>>2]&255](f,h,c[n+(g+1<<2)>>2]|0);t=817;break b}}case 75:{k=e[J>>1]|0;g=c[w>>2]|0;do if(!g){g=b[gb>>1]|0;if(!(g<<16>>16)){g=c[K>>2]|0;c[w>>2]=g;break}h=b[fb>>1]|0;if(!(h<<16>>16)){g=c[L>>2]|0;c[w>>2]=g;break}else{n=h<<16>>16;l=c[K>>2]|0;q=(l|0)<0?0-l|0:l;t=h<<16>>16<0?0-n|0:n;s=ea(q&65535,t)|0;t=ea(q>>>16,t)|0;q=s+(t<<16|8192)|0;q=(t>>>16)+(q>>>0>>0&1)<<18|q>>>14;s=c[L>>2]|0;t=g<<16>>16;j=(s|0)<0?0-s|0:s;p=g<<16>>16<0?0-t|0:t;m=ea(j&65535,p)|0;p=ea(j>>>16,p)|0;g=m+(p<<16|8192)|0;g=(p>>>16)+(g>>>0>>0&1)<<18|g>>>14;g=Sg((l^n|0)>-1?q:0-q|0,(s^t|0)>-1?g:0-g|0)|0;c[w>>2]=g;break}}while(0);c[r>>2]=Wg(k,g)|0;t=817;break}case 67:{g=c[r>>2]|0;if(g>>>0<(e[H>>1]|0)>>>0){c[r>>2]=c[(c[I>>2]|0)+(g<<2)>>2];t=817;break b}if(a[ma>>0]|0){t=421;break a}c[r>>2]=0;t=817;break}case 76:{k=e[J>>1]|0;g=c[w>>2]|0;do if(!g){g=b[gb>>1]|0;if(!(g<<16>>16)){g=c[K>>2]|0;c[w>>2]=g;break}h=b[fb>>1]|0;if(!(h<<16>>16)){g=c[L>>2]|0;c[w>>2]=g;break}else{n=h<<16>>16;l=c[K>>2]|0;q=(l|0)<0?0-l|0:l;t=h<<16>>16<0?0-n|0:n;s=ea(q&65535,t)|0;t=ea(q>>>16,t)|0;q=s+(t<<16|8192)|0;q=(t>>>16)+(q>>>0>>0&1)<<18|q>>>14;s=c[L>>2]|0;t=g<<16>>16;j=(s|0)<0?0-s|0:s;p=g<<16>>16<0?0-t|0:t;m=ea(j&65535,p)|0;p=ea(j>>>16,p)|0;g=m+(p<<16|8192)|0;g=(p>>>16)+(g>>>0>>0&1)<<18|g>>>14;g=Sg((l^n|0)>-1?q:0-q|0,(s^t|0)>-1?g:0-g|0)|0;c[w>>2]=g;break}}while(0);c[r>>2]=Wg(k,g)|0;t=817;break}case 87:{c[r>>2]=((Od[c[v>>2]&255](f,c[r>>2]|0,0)|0)&127|0)==0&1;t=817;break}case 103:{c[r>>2]=(c[r>>2]|0)+63&-64;t=817;break}case 96:{c[r>>2]=(c[r>>2]|0)+(c[n+(g+1<<2)>>2]|0);t=817;break}case 99:{c[r>>2]=Ug(c[r>>2]|0,c[n+(g+1<<2)>>2]|0,64)|0;t=817;break}case 79:{t=474;break a}case 85:{c[r>>2]=(c[r>>2]|0)!=(c[n+(g+1<<2)>>2]|0)&1;t=817;break}case 91:{if(!(c[r>>2]|0))g=(c[n+(g+1<<2)>>2]|0)!=0;else g=1;c[r>>2]=g&1;t=817;break}case 80:{c[r>>2]=(c[r>>2]|0)<(c[n+(g+1<<2)>>2]|0)&1;t=817;break}case 84:{c[r>>2]=(c[r>>2]|0)==(c[n+(g+1<<2)>>2]|0)&1;t=817;break}case 93:{ls(f,c[r>>2]|0);t=817;break}case 94:{b[M>>1]=c[r>>2];t=817;break}case 101:{c[r>>2]=0-(c[r>>2]|0);t=817;break}case 90:{if(!(c[r>>2]|0))g=0;else g=(c[n+(g+1<<2)>>2]|0)!=0;c[r>>2]=g&1;t=817;break}case 78:{a[Qa>>0]=0;t=817;break}case 97:{c[r>>2]=(c[r>>2]|0)-(c[n+(g+1<<2)>>2]|0);t=817;break}case 102:{c[r>>2]=c[r>>2]&-64;t=817;break}case 81:{c[r>>2]=(c[r>>2]|0)<=(c[n+(g+1<<2)>>2]|0)&1;t=817;break}case 95:{b[N>>1]=c[r>>2];t=817;break}case 83:{c[r>>2]=(c[r>>2]|0)>=(c[n+(g+1<<2)>>2]|0)&1;t=817;break}case 98:{g=c[n+(g+1<<2)>>2]|0;if(!g){t=510;break a}c[r>>2]=Vg(c[r>>2]|0,64,g)|0;t=817;break}case 107:case 106:case 105:case 104:{c[r>>2]=Od[c[v>>2]&255](f,c[r>>2]|0,c[f+(l+-104<<2)+264>>2]|0)|0;t=817;break}case 77:{a[Qa>>0]=1;t=817;break}case 82:{c[r>>2]=(c[r>>2]|0)>(c[n+(g+1<<2)>>2]|0)&1;t=817;break}case 88:{if(!(c[r>>2]|0)){p=c[ja>>2]|0;g=k+(c[da>>2]|0)|0;c[da>>2]=g;if((g|0)<(p|0))k=1;else{t=490;break a}while(1){o=(k|0)==1;while(1){l=a[s+g>>0]|0;a[ga>>0]=l;l=l&255;h=a[89096+l>>0]|0;c[ha>>2]=h;if((l&254|0)==64){j=g+1|0;if((j|0)>=(p|0)){t=490;break a}h=2-(ea(d[s+j>>0]|0,h)|0)|0;c[ha>>2]=h}g=h+g|0;if((g|0)>(p|0)){t=490;break a}if((l|0)==88){t=493;break}else if((l|0)==27){if(o){t=817;break b}}else if((l|0)==89){t=495;break}c[da>>2]=g;if((g|0)>=(p|0)){t=490;break a}}if((t|0)==493)k=k+1|0;else if((t|0)==495){k=k+-1|0;if(!k){t=817;break b}}c[da>>2]=g;if((g|0)>=(p|0)){t=490;break a}}}else t=817;break}case 111:case 110:case 109:case 108:{h=c[r>>2]|0;g=c[f+(l+-108<<2)+264>>2]|0;if((h|0)>-1){g=g+h|0;g=(h|0)!=0&(g|0)<0?0:g}else{g=h-g|0;g=(g|0)>0?0:g}c[r>>2]=g;t=817;break}case 100:{t=c[r>>2]|0;c[r>>2]=(t|0)<0?0-t|0:t;t=817;break}case 86:{c[r>>2]=((Od[c[v>>2]&255](f,c[r>>2]|0,0)|0)&127|0)==64&1;t=817;break}case 112:{h=c[r>>2]|0;if(h>>>0>=(c[Ca>>2]|0)>>>0)if(!(a[ma>>0]|0)){t=817;break b}else{t=421;break a}else{t=Wg(c[n+(g+1<<2)>>2]|0,c[yb>>2]|0)|0;c[(c[O>>2]|0)+(h<<2)>>2]=t;t=817;break b}}case 92:{c[r>>2]=(c[r>>2]|0)==0&1;t=817;break}case 114:case 113:{ls(f,c[r>>2]|0);t=817;break}case 118:{h=c[r>>2]|0;g=h&192;if((g|0)==64)c[Q>>2]=16384;else if((g|0)==192)c[Q>>2]=16384;else if(!g)c[Q>>2]=8192;else if((g|0)==128)c[Q>>2]=32768;g=h&48;if(!g)c[S>>2]=0;else if((g|0)==16)c[S>>2]=(c[Q>>2]|0)/4|0;else if((g|0)==32)c[S>>2]=(c[Q>>2]|0)/2|0;else if((g|0)==48)c[S>>2]=((c[Q>>2]|0)*3|0)/4|0;g=h&15;h=c[Q>>2]|0;if(!g)g=h+-1|0;else g=(ea(h,g+-4|0)|0)/8|0;c[Q>>2]=(h|0)/256|0;c[S>>2]=(c[S>>2]|0)/256|0;c[R>>2]=(g|0)/256|0;c[Eb>>2]=6;c[v>>2]=80;t=817;break}case 119:{h=c[r>>2]|0;g=h&192;if((g|0)==64)c[Q>>2]=11585;else if((g|0)==128)c[Q>>2]=23170;else if(!g)c[Q>>2]=5792;else if((g|0)==192)c[Q>>2]=11585;g=h&48;if(!g)c[S>>2]=0;else if((g|0)==48)c[S>>2]=((c[Q>>2]|0)*3|0)/4|0;else if((g|0)==16)c[S>>2]=(c[Q>>2]|0)/4|0;else if((g|0)==32)c[S>>2]=(c[Q>>2]|0)/2|0;g=h&15;h=c[Q>>2]|0;if(!g)g=h+-1|0;else g=(ea(h,g+-4|0)|0)/8|0;c[Q>>2]=(h|0)/256|0;c[S>>2]=(c[S>>2]|0)/256|0;c[R>>2]=(g|0)/256|0;c[Eb>>2]=7;c[v>>2]=81;t=817;break}case 120:{if(!(c[n+(g+1<<2)>>2]|0))t=817;else{h=c[r>>2]|0;if(!(h|g))c[sa>>2]=132;g=(c[da>>2]|0)+h|0;c[da>>2]=g;if((g|0)>=0){s=c[bb>>2]|0;if((s|0)>0?(g|0)>(c[(c[db>>2]|0)+((s+-1|0)*20|0)+16>>2]|0):0)t=582}else t=582;if((t|0)==582)c[sa>>2]=132;a[ra>>0]=0;t=817}break}case 117:case 116:case 115:{l=c[r>>2]|0;e:do if(l){m=2;while(1){if((g|0)<2)break;p=g+-2|0;c[la>>2]=p;t=c[oa>>2]|0;j=c[t+(g+-1<<2)>>2]|0;p=c[t+(p<<2)>>2]|0;if(j>>>0<(c[Ca>>2]|0)>>>0){g=p>>>4&15;k=d[ga>>0]|0;if((k|0)==116)g=g|16;else if((k|0)==117)g=g|32;o=(b[M>>1]|0)+g|0;h=e[J>>1]|0;g=c[w>>2]|0;do if(!g){g=b[gb>>1]|0;if(!(g<<16>>16)){g=c[P>>2]|0;c[w>>2]=g;break}k=b[fb>>1]|0;if(!(k<<16>>16)){g=c[L>>2]|0;c[w>>2]=g;break}else{q=k<<16>>16;n=c[P>>2]|0;r=(n|0)<0?0-n|0:n;t=k<<16>>16<0?0-q|0:q;s=ea(r&65535,t)|0;t=ea(r>>>16,t)|0;r=s+(t<<16|8192)|0;r=(t>>>16)+(r>>>0>>0&1)<<18|r>>>14;s=c[L>>2]|0;t=g<<16>>16;dc=(s|0)<0?0-s|0:s;cc=g<<16>>16<0?0-t|0:t;k=ea(dc&65535,cc)|0;cc=ea(dc>>>16,cc)|0;g=k+(cc<<16|8192)|0;g=(cc>>>16)+(g>>>0>>0&1)<<18|g>>>14;g=Sg((n^q|0)>-1?r:0-r|0,(s^t|0)>-1?g:0-g|0)|0;c[w>>2]=g;break}}while(0);if((Wg(h,g)|0)==(o|0)){cc=p&15;dc=cc+-8|0;$d[c[tb>>2]&255](f,j,(((dc|0)>-1?cc+-7|0:dc)<<6|0)/(1<>1]|0)|0)}}else if(a[ma>>0]|0){t=533;break a}g=c[la>>2]|0;if(m>>>0>l>>>0)break e;m=m+1|0}if(a[ma>>0]|0)c[sa>>2]=129;c[la>>2]=0;g=0}while(0);c[pa>>2]=g;t=817;break}case 130:{h=c[r>>2]|0;k=c[n+(g+1<<2)>>2]&65535;dc=e[Mb>>1]|0;g=h&65535;if(!(k>>>0>>0&g>>>0>>0))if(!(a[ma>>0]|0)){t=817;break b}else{t=629;break a}if(g>>>0>k>>>0)t=817;else{h=h&65535;do{dc=(c[y>>2]|0)+g|0;a[dc>>0]=d[dc>>0]&254;h=h+1<<16>>16;g=h&65535}while(g>>>0<=k>>>0);t=817}break}case 132:case 131:{g=c[$a>>2]|0;j=c[ab>>2]|0;k=g+(j*24|0)|0;f:do if((j|0)>0){h=g;while(1){if(q<<24>>24==(c[h+12>>2]&255)<<24>>24?(a[h+16>>0]|0)!=0:0)break;h=h+24|0;if(h>>>0>=k>>>0)break f}g=c[bb>>2]|0;if((g|0)>=(c[cb>>2]|0)){t=635;break a}k=c[db>>2]|0;c[bb>>2]=g+1;c[k+(g*20|0)>>2]=c[eb>>2];c[k+(g*20|0)+4>>2]=(c[da>>2]|0)+1;c[k+(g*20|0)+8>>2]=1;j=c[h+4>>2]|0;c[k+(g*20|0)+12>>2]=j;c[k+(g*20|0)+16>>2]=c[h+8>>2];k=c[h>>2]|0;g=k+-1|0;do if(g>>>0<=2){h=c[f+(g<<3)+444>>2]|0;if(!h){c[sa>>2]=138;break}g=c[f+(g<<3)+448>>2]|0;if(g>>>0>>0){c[sa>>2]=131;break}else{c[fa>>2]=h;c[ja>>2]=g;c[da>>2]=j;c[eb>>2]=k;break}}else c[sa>>2]=132;while(0);a[ra>>0]=0;t=817;break b}while(0);c[sa>>2]=128;h=j;t=819;break}case 121:{if(!(c[n+(g+1<<2)>>2]|0)){h=c[r>>2]|0;if(!(h|g))c[sa>>2]=132;g=(c[da>>2]|0)+h|0;c[da>>2]=g;if((g|0)>=0){dc=c[bb>>2]|0;if((dc|0)>0?(g|0)>(c[(c[db>>2]|0)+((dc+-1|0)*20|0)+16>>2]|0):0)t=590}else t=590;if((t|0)==590)c[sa>>2]=132;a[ra>>0]=0;t=817}else t=817;break}case 129:{h=c[r>>2]|0;k=c[n+(g+1<<2)>>2]&65535;dc=e[Mb>>1]|0;g=h&65535;if(!(k>>>0>>0&g>>>0>>0))if(!(a[ma>>0]|0)){t=817;break b}else{t=624;break a}if(g>>>0>k>>>0)t=817;else{h=h&65535;do{dc=(c[y>>2]|0)+g|0;a[dc>>0]=d[dc>>0]|1;h=h+1<<16>>16;g=h&65535}while(g>>>0<=k>>>0);t=817}break}case 122:{c[Eb>>2]=5;c[v>>2]=74;t=817;break}case 125:{c[Eb>>2]=3;c[v>>2]=77;t=817;break}case 128:{h=c[xb>>2]|0;g:do if((c[ka>>2]|0)<(h|0)){if(a[ma>>0]|0)c[sa>>2]=129}else if((h|0)>0){k=n;while(1){g=g+-1|0;c[la>>2]=g;g=c[k+(g<<2)>>2]&65535;if(g>>>0>=(e[Mb>>1]|0)>>>0)if(!(a[ma>>0]|0))g=h;else{t=616;break a}else{g=(c[y>>2]|0)+g|0;a[g>>0]=d[g>>0]^1;g=c[xb>>2]|0}h=g+-1|0;c[xb>>2]=h;g=c[la>>2]|0;if((h|0)<=0)break g;k=c[oa>>2]|0}}while(0);c[xb>>2]=1;c[pa>>2]=g;t=817;break}case 123:{g=c[$a>>2]|0;j=c[ab>>2]|0;k=g+(j*24|0)|0;h:do if((j|0)>0){h=g;while(1){if(q<<24>>24==(c[h+12>>2]&255)<<24>>24?(a[h+16>>0]|0)!=0:0)break;h=h+24|0;if(h>>>0>=k>>>0)break h}g=c[bb>>2]|0;if((g|0)>=(c[cb>>2]|0)){t=597;break a}k=c[db>>2]|0;c[bb>>2]=g+1;c[k+(g*20|0)>>2]=c[eb>>2];c[k+(g*20|0)+4>>2]=(c[da>>2]|0)+1;c[k+(g*20|0)+8>>2]=1;j=c[h+4>>2]|0;c[k+(g*20|0)+12>>2]=j;c[k+(g*20|0)+16>>2]=c[h+8>>2];k=c[h>>2]|0;g=k+-1|0;do if(g>>>0<=2){h=c[f+(g<<3)+444>>2]|0;if(!h){c[sa>>2]=138;break}g=c[f+(g<<3)+448>>2]|0;if(g>>>0>>0){c[sa>>2]=131;break}else{c[fa>>2]=h;c[ja>>2]=g;c[da>>2]=j;c[eb>>2]=k;break}}else c[sa>>2]=132;while(0);a[ra>>0]=0;t=817;break b}while(0);c[sa>>2]=128;h=j;t=819;break}case 124:{c[Eb>>2]=4;c[v>>2]=76;t=817;break}case 137:{g=c[$a>>2]|0;o=c[ab>>2]|0;m=g+(o*24|0)|0;i:do if((o|0)>0){j=c[r>>2]|0;while(1){h=g+24|0;if((c[g+12>>2]|0)==(j|0)){h=g;break i}if(h>>>0>>0)g=h;else break}}else h=g;while(0);if((h|0)==(m|0)){if(o>>>0>=(c[X>>2]|0)>>>0){t=695;break a}c[ab>>2]=o+1}g=c[r>>2]|0;if(g>>>0>255){t=698;break a}c[h+12>>2]=g&255;j=c[da>>2]|0;c[h+4>>2]=j+1;c[h>>2]=c[eb>>2];a[h+16>>0]=1;g=c[r>>2]|0;if(g>>>0>(c[Y>>2]|0)>>>0)c[Y>>2]=g&255;o=c[ja>>2]|0;g=j;while(1){g=k+g|0;c[da>>2]=g;if((g|0)>=(o|0)){t=707;break a}j=a[s+g>>0]|0;a[ga>>0]=j;j=j&255;k=a[89096+j>>0]|0;c[ha>>2]=k;if((j&254|0)==64){h=g+1|0;if((h|0)>=(o|0)){t=707;break a}k=2-(ea(d[s+h>>0]|0,k)|0)|0;c[ha>>2]=k}if((k+g|0)>(o|0)){t=707;break a}if((j|0)==45){t=817;break}else if((j|0)==44|(j|0)==137){t=709;break a}}break}case 135:case 134:{o=c[r>>2]&65535;if(o>>>0<(e[Ba>>1]|0)>>>0?(ia=c[n+(g+1<<2)>>2]&65535,ia>>>0<(e[lb>>1]|0)>>>0):0){cc=c[Ka>>2]|0;h=c[E>>2]|0;g=c[cc+(o<<3)>>2]|0;dc=c[h+(ia<<3)>>2]|0;cc=c[cc+(o<<3)+4>>2]|0;h=c[h+(ia<<3)+4>>2]|0;k=cc-h|0;h=(g|0)==(dc|0)&(cc|0)==(h|0);dc=h?16384:g-dc|0;h=h|(q&1)==0;g=h?k:dc;k=h?dc:0-k|0;if((((k|0)<0?0-k|0:k)|0)<16384?(((g|0)<0?0-g|0:g)|0)<16384:0){if(g|k){k=k<<14;g=g<<14;t=675}}else t=675;if((t|0)==675){t=0;dc=(Sg(k,g)|0)<<2;b[hb>>1]=Xg(k,dc)|0;b[jb>>1]=Xg(g,dc)|0}r=c[Ma>>2]|0;g=c[mb>>2]|0;s=c[r+(o<<3)>>2]|0;cc=c[g+(ia<<3)>>2]|0;r=c[r+(o<<3)+4>>2]|0;g=c[g+(ia<<3)+4>>2]|0;dc=r-g|0;g=(s|0)==(cc|0)&(r|0)==(g|0);cc=g?16384:s-cc|0;h=g|h;g=h?dc:cc;h=h?cc:0-dc|0;if((((h|0)<0?0-h|0:h)|0)<16384?(((g|0)<0?0-g|0:g)|0)<16384:0){if(g|h){h=h<<14;g=g<<14;t=680}}else t=680;if((t|0)==680){dc=(Sg(h,g)|0)<<2;b[fb>>1]=Xg(h,dc)|0;b[gb>>1]=Xg(g,dc)|0}as(f);t=817;break b}if(!(a[ma>>0]|0))t=817;else{t=670;break a}break}case 136:{k=c[r>>2]|0;g=(k&1|0)!=0?35:0;if(k&2)g=(a[V>>0]|0)==0?g:g|128;if(k&4)g=(a[T>>0]|0)==0?g:g|256;if(k&32)g=(a[W>>0]|0)==0?g:g|4096;c[r>>2]=g;t=817;break}case 133:{g=c[r>>2]|0;h=g&255;if((h|0)==255){a[U>>0]=1;t=817;break b}else if(!h){a[U>>0]=0;t=817;break b}else{if((g&256|0)!=0?(e[J>>1]|0)>>>0<=h>>>0:0)a[U>>0]=1;if((g&512|0)!=0?(a[V>>0]|0)!=0:0)a[U>>0]=1;if((g&1024|0)!=0?(a[T>>0]|0)!=0:0)a[U>>0]=1;if((g&2048|0)!=0?(e[J>>1]|0)>>>0>h>>>0:0)a[U>>0]=0;if((g&4096|0)!=0?(a[V>>0]|0)!=0:0)a[U>>0]=0;if(!(g&8192)){t=817;break b}if(!(a[T>>0]|0)){t=817;break b}a[U>>0]=0;t=817;break b}}case 142:{g=c[n+(g+1<<2)>>2]|0;if((g+-1|0)>>>0>1)if(!(a[ma>>0]|0)){t=817;break b}else{t=719;break a}else{a[_>>0]=d[_>>0]&(g^255)|((c[r>>2]|0)==0?0:g);t=817;break b}}case 140:{g=c[n+(g+1<<2)>>2]|0;if((g|0)<(c[r>>2]|0)){c[r>>2]=g;t=817}else t=817;break}case 143:{g=c[$a>>2]|0;j=c[ab>>2]|0;k=g+(j*24|0)|0;j:do if((j|0)>0){h=g;while(1){if(q<<24>>24==(c[h+12>>2]&255)<<24>>24?(a[h+16>>0]|0)!=0:0)break;h=h+24|0;if(h>>>0>=k>>>0)break j}g=c[bb>>2]|0;if((g|0)>=(c[cb>>2]|0)){t=725;break a}k=c[db>>2]|0;c[bb>>2]=g+1;c[k+(g*20|0)>>2]=c[eb>>2];c[k+(g*20|0)+4>>2]=(c[da>>2]|0)+1;c[k+(g*20|0)+8>>2]=1;j=c[h+4>>2]|0;c[k+(g*20|0)+12>>2]=j;c[k+(g*20|0)+16>>2]=c[h+8>>2];k=c[h>>2]|0;g=k+-1|0;do if(g>>>0<=2){h=c[f+(g<<3)+444>>2]|0;if(!h){c[sa>>2]=138;break}g=c[f+(g<<3)+448>>2]|0;if(g>>>0>>0){c[sa>>2]=131;break}else{c[fa>>2]=h;c[ja>>2]=g;c[da>>2]=j;c[eb>>2]=k;break}}else c[sa>>2]=132;while(0);a[ra>>0]=0;t=817;break b}while(0);c[sa>>2]=128;h=j;t=819;break}case 141:{g=c[r>>2]|0;if((g|0)>-1){c[Z>>2]=g;t=817}else t=817;break}case 139:{g=c[n+(g+1<<2)>>2]|0;if((g|0)>(c[r>>2]|0)){c[r>>2]=g;t=817}else t=817;break}case 138:{s=n+(g+2<<2)|0;cc=c[s>>2]|0;dc=n+(g+1<<2)|0;t=c[dc>>2]|0;c[s>>2]=c[r>>2];c[dc>>2]=cc;c[r>>2]=t;t=817;break}case 5:case 4:case 3:case 2:case 1:case 0:{h=l<<14&16384;g=h&65535;h=(h^16384)&65535;if((q&255)<4){b[fb>>1]=g;b[gb>>1]=h;b[hb>>1]=g;b[jb>>1]=h}if(!(l&2)){b[Ja>>1]=g;b[La>>1]=h}as(f);t=817;break}case 10:{j=c[n+(g+1<<2)>>2]<<16;g=j>>16;h=c[r>>2]<<16;k=h>>16;if((((h|0)<0?0-k|0:k)|0)<16384?(((j|0)<0?0-g|0:g)|0)<16384:0){if(k|g){k=h>>2;g=j>>2;t=56}}else t=56;if((t|0)==56){dc=(Sg(k,g)|0)<<2;b[kb>>1]=Xg(k,dc)|0;b[gb>>1]=Xg(g,dc)|0}t=e[kb>>1]|e[kb+2>>1]<<16;b[nb>>1]=t;b[nb+2>>1]=t>>>16;as(f);t=817;break}case 7:case 6:{dc=c[n+(g+1<<2)>>2]|0;g=c[r>>2]|0;h=dc&65535;if((e[lb>>1]|0)>(dc&65535)?(e[Ba>>1]|0)>(g&65535):0){s=g&65535;r=c[Ma>>2]|0;cc=c[mb>>2]|0;g=c[r+(s<<3)>>2]|0;dc=c[cc+(h<<3)>>2]|0;s=c[r+(s<<3)+4>>2]|0;cc=c[cc+(h<<3)+4>>2]|0;h=s-cc|0;cc=(g|0)==(dc|0)&(s|0)==(cc|0);dc=cc?16384:g-dc|0;cc=cc|(q&1)==0;g=cc?h:dc;h=cc?dc:0-h|0;if((((h|0)<0?0-h|0:h)|0)<16384?(((g|0)<0?0-g|0:g)|0)<16384:0){if(g|h){h=h<<14;g=g<<14;t=40}}else t=40;if((t|0)==40){dc=(Sg(h,g)|0)<<2;b[kb>>1]=Xg(h,dc)|0;b[gb>>1]=Xg(g,dc)|0}t=e[kb>>1]|e[kb+2>>1]<<16;b[nb>>1]=t;b[nb+2>>1]=t>>>16;as(f);t=817;break b}if(!(a[ma>>0]|0))t=817;else{t=35;break a}break}case 11:{j=c[n+(g+1<<2)>>2]<<16;g=j>>16;h=c[r>>2]<<16;k=h>>16;if((((h|0)<0?0-k|0:k)|0)<16384?(((j|0)<0?0-g|0:g)|0)<16384:0){if(k|g){k=h>>2;g=j>>2;t=62}}else t=62;if((t|0)==62){dc=(Sg(k,g)|0)<<2;b[Ja>>1]=Xg(k,dc)|0;b[La>>1]=Xg(g,dc)|0}as(f);t=817;break}case 9:case 8:{dc=c[n+(g+1<<2)>>2]|0;g=c[r>>2]|0;h=dc&65535;if((e[lb>>1]|0)>(dc&65535)?(e[Ba>>1]|0)>(g&65535):0){s=g&65535;r=c[Ma>>2]|0;cc=c[mb>>2]|0;g=c[r+(s<<3)>>2]|0;dc=c[cc+(h<<3)>>2]|0;s=c[r+(s<<3)+4>>2]|0;cc=c[cc+(h<<3)+4>>2]|0;h=s-cc|0;cc=(g|0)==(dc|0)&(s|0)==(cc|0);dc=cc?16384:g-dc|0;cc=cc|(q&1)==0;g=cc?h:dc;h=cc?dc:0-h|0;if((((h|0)<0?0-h|0:h)|0)<16384?(((g|0)<0?0-g|0:g)|0)<16384:0){if(g|h){h=h<<14;g=g<<14;t=50}}else t=50;if((t|0)==50){dc=(Sg(h,g)|0)<<2;b[Ja>>1]=Xg(h,dc)|0;b[La>>1]=Xg(g,dc)|0}as(f);t=817;break b}if(!(a[ma>>0]|0))t=817;else{t=45;break a}break}case 15:{k=c[r>>2]|0;h=c[n+(g+1<<2)>>2]|0;j=c[n+(g+2<<2)>>2]|0;q=c[n+(g+3<<2)>>2]&65535;l=e[Ea>>1]|0;if((((q>>>0>>0?(va=c[n+(g+4<<2)>>2]&65535,va>>>0>>0):0)?(xa=h&65535,ya=e[Ba>>1]|0,xa>>>0>>0):0)?(za=j&65535,za>>>0>>0):0)?(Aa=k&65535,Aa>>>0<(e[lb>>1]|0)>>>0):0){cc=c[Pa>>2]|0;g=c[cc+(q<<3)>>2]|0;o=(c[cc+(va<<3)>>2]|0)-g|0;k=c[cc+(q<<3)+4>>2]|0;cc=(c[cc+(va<<3)+4>>2]|0)-k|0;l=c[Ma>>2]|0;h=c[l+(xa<<3)>>2]|0;j=(c[l+(za<<3)>>2]|0)-h|0;m=c[l+(xa<<3)+4>>2]|0;l=(c[l+(za<<3)+4>>2]|0)-m|0;n=(c[pb>>2]|0)+Aa|0;a[n>>0]=d[n>>0]|24;n=0-cc|0;p=Ug(j,n,64)|0;p=(Ug(l,o,64)|0)+p|0;dc=Ug(j,o,64)|0;dc=(Ug(l,cc,64)|0)+dc|0;if((((p|0)<0?0-p|0:p)*19|0)>(((dc|0)<0?0-dc|0:dc)|0)){dc=Ug(g-h|0,n,64)|0;dc=(Ug(k-m|0,o,64)|0)+dc|0;s=Ug(dc,j,p)|0;dc=Ug(dc,l,p)|0;cc=c[Ma>>2]|0;t=c[mb>>2]|0;c[t+(Aa<<3)>>2]=(c[cc+(xa<<3)>>2]|0)+s;c[t+(Aa<<3)+4>>2]=(c[cc+(xa<<3)+4>>2]|0)+dc;t=817;break b}else{cc=c[Ma>>2]|0;dc=c[Pa>>2]|0;t=c[mb>>2]|0;c[t+(Aa<<3)>>2]=((c[cc+(za<<3)>>2]|0)+(c[cc+(xa<<3)>>2]|0)+(c[dc+(q<<3)>>2]|0)+(c[dc+(va<<3)>>2]|0)|0)/4|0;c[t+(Aa<<3)+4>>2]=((c[cc+(za<<3)+4>>2]|0)+(c[cc+(xa<<3)+4>>2]|0)+(c[dc+(q<<3)+4>>2]|0)+(c[dc+(va<<3)+4>>2]|0)|0)/4|0;t=817;break b}}if(!(a[ma>>0]|0))t=817;else{t=73;break a}break}case 12:{c[r>>2]=b[fb>>1];c[n+(g+1<<2)>>2]=b[gb>>1];t=817;break}case 18:{b[Ua>>1]=c[r>>2];t=817;break}case 16:{b[qb>>1]=c[r>>2];t=817;break}case 21:{g=c[r>>2]|0;if((g|0)==1){g=vb+0|0;k=ub+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0))}else if(g)if(!(a[ma>>0]|0)){t=817;break b}else{t=96;break a}else{g=vb+0|0;k=sb+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0))}b[wb>>1]=c[r>>2];t=817;break}case 20:{g=c[r>>2]|0;if(!g){g=wa+0|0;k=sb+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0))}else if((g|0)!=1)if(!(a[ma>>0]|0)){t=817;break b}else{t=90;break a}else{g=wa+0|0;k=ub+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0))}b[Ha>>1]=c[r>>2];t=817;break}case 24:{c[Eb>>2]=1;c[v>>2]=75;t=817;break}case 25:{c[Eb>>2]=0;c[v>>2]=78;t=817;break}case 27:{p=c[ja>>2]|0;o=c[da>>2]|0;g=1;while(1){o=k+o|0;c[da>>2]=o;if((o|0)>=(p|0)){t=116;break a}j=a[s+o>>0]|0;a[ga>>0]=j;j=j&255;k=a[89096+j>>0]|0;c[ha>>2]=k;if((j&254|0)==64){h=o+1|0;if((h|0)>=(p|0)){t=116;break a}k=2-(ea(d[s+h>>0]|0,k)|0)|0;c[ha>>2]=k}if((k+o|0)>(p|0)){t=116;break a}if((j|0)==88)g=g+1|0;else if((j|0)==89)g=g+-1|0;if(!g){t=817;break}}break}case 13:{c[r>>2]=b[Ja>>1];c[n+(g+1<<2)>>2]=b[La>>1];t=817;break}case 17:{b[Ta>>1]=c[r>>2];t=817;break}case 22:{g=c[r>>2]|0;if((g|0)==1){g=rb+0|0;k=ub+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0))}else if(g)if(!(a[ma>>0]|0)){t=817;break b}else{t=102;break a}else{g=rb+0|0;k=sb+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0))}g=wa+0|0;k=rb+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0));g=vb+0|0;k=rb+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0));t=c[r>>2]&65535;b[Sa>>1]=t;b[Ha>>1]=t;b[wb>>1]=t;t=817;break}case 23:{g=c[r>>2]|0;if((g|0)<0){t=105;break a}c[xb>>2]=g;t=817;break}case 26:{c[ta>>2]=c[r>>2];t=817;break}case 19:{g=c[r>>2]|0;if(!g){g=rb+0|0;k=sb+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0))}else if((g|0)!=1)if(!(a[ma>>0]|0)){t=817;break b}else{t=84;break a}else{g=rb+0|0;k=ub+0|0;h=g+36|0;do{c[g>>2]=c[k>>2];g=g+4|0;k=k+4|0}while((g|0)<(h|0))}b[Sa>>1]=c[r>>2];t=817;break}case 14:{t=e[kb>>1]|e[kb+2>>1]<<16;b[ob>>1]=t;b[ob+2>>1]=t>>>16;as(f);t=817;break}case 28:{h=c[r>>2]|0;if(!(h|g))c[sa>>2]=132;g=(c[da>>2]|0)+h|0;c[da>>2]=g;if((g|0)>=0){dc=c[bb>>2]|0;if((dc|0)>0?(g|0)>(c[(c[db>>2]|0)+((dc+-1|0)*20|0)+16>>2]|0):0)t=126}else t=126;if((t|0)==126)c[sa>>2]=132;a[ra>>0]=0;t=817;break}case 41:{h=c[r>>2]&65535;if(h>>>0>=(e[Ea>>1]|0)>>>0)if(!(a[ma>>0]|0)){t=817;break b}else{t=166;break a}g=(b[Ja>>1]|0)==0?-1:-9;if(b[La>>1]|0)g=g&239;t=(c[zb>>2]|0)+h|0;a[t>>0]=a[t>>0]&g;t=817;break}case 36:{c[r>>2]=c[ka>>2];t=817;break}case 29:{c[ua>>2]=c[r>>2];t=817;break}case 34:{c[pa>>2]=0;t=817;break}case 37:{h=c[r>>2]|0;if(!((h|0)<1|(g|0)<(h|0))){c[r>>2]=c[n+(g-h<<2)>>2];t=817;break b}if(a[ma>>0]|0)c[sa>>2]=134;c[r>>2]=0;t=817;break}case 40:{g=c[$a>>2]|0;j=c[ab>>2]|0;k=g+(j*24|0)|0;k:do if((j|0)>0){h=g;while(1){if(q<<24>>24==(c[h+12>>2]&255)<<24>>24?(a[h+16>>0]|0)!=0:0)break;h=h+24|0;if(h>>>0>=k>>>0)break k}g=c[bb>>2]|0;if((g|0)>=(c[cb>>2]|0)){t=153;break a}k=c[db>>2]|0;c[bb>>2]=g+1;c[k+(g*20|0)>>2]=c[eb>>2];c[k+(g*20|0)+4>>2]=(c[da>>2]|0)+1;c[k+(g*20|0)+8>>2]=1;j=c[h+4>>2]|0;c[k+(g*20|0)+12>>2]=j;c[k+(g*20|0)+16>>2]=c[h+8>>2];k=c[h>>2]|0;g=k+-1|0;do if(g>>>0<=2){h=c[f+(g<<3)+444>>2]|0;if(!h){c[sa>>2]=138;break}g=c[f+(g<<3)+448>>2]|0;if(g>>>0>>0){c[sa>>2]=131;break}else{c[fa>>2]=h;c[ja>>2]=g;c[da>>2]=j;c[eb>>2]=k;break}}else c[sa>>2]=132;while(0);a[ra>>0]=0;t=817;break b}while(0);c[sa>>2]=128;h=j;t=819;break}case 31:{c[Fa>>2]=Wg(c[r>>2]|0,c[yb>>2]|0)|0;t=817;break}case 42:{j=c[n+(g+1<<2)>>2]|0;k=(c[Ab>>2]|0)+1|0;if(j>>>0>=k>>>0){t=189;break a}g=c[Bb>>2]|0;h=c[Cb>>2]|0;if((k|0)==(h|0)?(c[g+(j*24|0)+12>>2]|0)==(j|0):0)g=g+(j*24|0)|0;else{l=g+(h*24|0)|0;l:do if((h|0)>0){k=g;while(1){g=k+24|0;if((c[k+12>>2]|0)==(j|0)){g=k;break l}if(g>>>0>>0)k=g;else break}}while(0);if((g|0)==(l|0)){t=189;break a}}if(!(a[g+16>>0]|0)){t=189;break a}k=c[bb>>2]|0;if((k|0)>=(c[cb>>2]|0)){t=179;break a}if((c[r>>2]|0)>0){dc=c[db>>2]|0;c[dc+(k*20|0)>>2]=c[eb>>2];c[dc+(k*20|0)+4>>2]=(c[da>>2]|0)+1;c[dc+(k*20|0)+8>>2]=c[r>>2];j=c[g+4>>2]|0;c[dc+(k*20|0)+12>>2]=j;c[dc+(k*20|0)+16>>2]=c[g+8>>2];c[bb>>2]=k+1;k=c[g>>2]|0;g=k+-1|0;do if(g>>>0<=2){h=c[f+(g<<3)+444>>2]|0;if(!h){c[sa>>2]=138;break}g=c[f+(g<<3)+448>>2]|0;if(g>>>0>>0){c[sa>>2]=131;break}else{c[fa>>2]=h;c[ja>>2]=g;c[da>>2]=j;c[eb>>2]=k;break}}else c[sa>>2]=132;while(0);a[ra>>0]=0;t=817}else t=817;break}case 35:{dc=c[r>>2]|0;t=n+(g+1<<2)|0;c[r>>2]=c[t>>2];c[t>>2]=dc;t=817;break}case 39:{k=c[r>>2]|0;g=c[n+(g+1<<2)>>2]|0;h=k&65535;j=g&65535;k=k&65535;if(k>>>0<(e[Ba>>1]|0)>>>0?(Va=g&65535,Va>>>0<(e[Ea>>1]|0)>>>0):0){dc=c[Pa>>2]|0;t=c[Ma>>2]|0;t=(Od[c[Oa>>2]&255](f,(c[dc+(Va<<3)>>2]|0)-(c[t+(k<<3)>>2]|0)|0,(c[dc+(Va<<3)+4>>2]|0)-(c[t+(k<<3)+4>>2]|0)|0)|0)/2|0;de[c[Ra>>2]&63](f,wa,h,t);de[c[Ra>>2]&63](f,rb,j,0-t|0);t=817;break b}if(!(a[ma>>0]|0))t=817;else{t=147;break a}break}case 32:{c[n+(g+1<<2)>>2]=c[r>>2];t=817;break}case 30:{c[Ga>>2]=c[r>>2];t=817;break}case 38:{h=c[r>>2]|0;if((h|0)<1|(g|0)<(h|0))if(!(a[ma>>0]|0)){t=817;break b}else{t=142;break a}else{dc=g-h|0;cc=n+(dc<<2)|0;t=c[cc>>2]|0;Bga(cc|0,n+(dc+1<<2)|0,(h<<2)+-4|0)|0;c[(c[oa>>2]|0)+((c[la>>2]|0)+-1<<2)>>2]=t;t=817;break b}}case 44:{o=c[r>>2]|0;g=c[Bb>>2]|0;j=c[Cb>>2]|0;l=g+(j*24|0)|0;m:do if((j|0)>0)while(1){h=g+24|0;if((c[g+12>>2]|0)==(o|0)){p=g;break m}if(h>>>0>>0)g=h;else{p=h;break}}else p=g;while(0);if((p|0)==(l|0)){if(j>>>0>=(c[Db>>2]|0)>>>0){t=214;break a}c[Cb>>2]=j+1}if(o>>>0>65535){t=217;break a}c[p>>2]=c[eb>>2];h=o&65535;c[p+12>>2]=h;g=c[da>>2]|0;c[p+4>>2]=g+1;a[p+16>>0]=1;a[p+17>>0]=0;c[p+20>>2]=0;if((c[Ab>>2]|0)>>>0>>0)c[Ab>>2]=h;o=c[ja>>2]|0;while(1){g=k+g|0;c[da>>2]=g;if((g|0)>=(o|0)){t=226;break a}j=a[s+g>>0]|0;a[ga>>0]=j;j=j&255;k=a[89096+j>>0]|0;c[ha>>2]=k;if((j&254|0)==64){h=g+1|0;if((h|0)>=(o|0)){t=226;break a}k=2-(ea(d[s+h>>0]|0,k)|0)|0;c[ha>>2]=k}if((k+g|0)>(o|0)){t=226;break a}if((j|0)==45)break;else if((j|0)==44|(j|0)==137){t=228;break a}}c[p+8>>2]=g;t=817;break}case 45:{g=c[bb>>2]|0;if((g|0)<1){t=231;break a}k=g+-1|0;c[bb>>2]=k;h=c[db>>2]|0;cc=h+(k*20|0)+8|0;dc=(c[cc>>2]|0)+-1|0;c[cc>>2]=dc;a[ra>>0]=0;if((dc|0)>0){c[bb>>2]=g;c[da>>2]=c[h+(k*20|0)+12>>2];t=817;break b}j=c[h+(k*20|0)>>2]|0;k=c[h+(k*20|0)+4>>2]|0;g=j+-1|0;if(g>>>0>2){t=235;break a}h=c[f+(g<<3)+444>>2]|0;if(!h){t=237;break a}g=c[f+(g<<3)+448>>2]|0;if(g>>>0>>0){t=239;break a}c[fa>>2]=h;c[ja>>2]=g;c[da>>2]=k;c[eb>>2]=j;t=817;break}case 43:{j=c[r>>2]|0;k=(c[Ab>>2]|0)+1|0;if(k>>>0<=j>>>0){t=208;break a}g=c[Bb>>2]|0;h=c[Cb>>2]|0;if((k|0)==(h|0)?(c[g+(j*24|0)+12>>2]|0)==(j|0):0)g=g+(j*24|0)|0;else{l=g+(h*24|0)|0;n:do if((h|0)>0){k=g;while(1){g=k+24|0;if((c[k+12>>2]|0)==(j|0)){g=k;break n}if(g>>>0>>0)k=g;else break}}while(0);if((g|0)==(l|0)){t=208;break a}}if(!(a[g+16>>0]|0)){t=208;break a}h=c[bb>>2]|0;if((h|0)>=(c[cb>>2]|0)){t=199;break a}k=c[db>>2]|0;c[k+(h*20|0)>>2]=c[eb>>2];c[k+(h*20|0)+4>>2]=(c[da>>2]|0)+1;c[k+(h*20|0)+8>>2]=1;j=c[g+4>>2]|0;c[k+(h*20|0)+12>>2]=j;c[k+(h*20|0)+16>>2]=c[g+8>>2];c[bb>>2]=h+1;k=c[g>>2]|0;g=k+-1|0;do if(g>>>0<=2){h=c[f+(g<<3)+444>>2]|0;if(!h){c[sa>>2]=138;break}g=c[f+(g<<3)+448>>2]|0;if(g>>>0>>0){c[sa>>2]=131;break}else{c[fa>>2]=h;c[ja>>2]=g;c[da>>2]=j;c[eb>>2]=k;break}}else c[sa>>2]=132;while(0);a[ra>>0]=0;t=817;break}case 51:case 50:{if((c[ka>>2]|0)<(c[xb>>2]|0)){if(a[ma>>0]|0)c[sa>>2]=134}else{if((ks(f,Qb,Tb,Zb,Wb)|0)<<24>>24){t=817;break b}if((c[xb>>2]|0)>0){g=c[Tb>>2]|0;h=c[Qb>>2]|0;do{j=(c[la>>2]|0)+-1|0;c[la>>2]=j;j=c[(c[oa>>2]|0)+(j<<2)>>2]&65535;if(j>>>0<(e[lb>>1]|0)>>>0){if(b[Ja>>1]|0){dc=(c[mb>>2]|0)+(j<<3)|0;c[dc>>2]=(c[dc>>2]|0)+h;dc=(c[pb>>2]|0)+j|0;a[dc>>0]=d[dc>>0]|8}if(b[La>>1]|0){dc=(c[mb>>2]|0)+(j<<3)+4|0;c[dc>>2]=(c[dc>>2]|0)+g;dc=(c[pb>>2]|0)+j|0;a[dc>>0]=d[dc>>0]|16}}else if(a[ma>>0]|0){t=279;break a}dc=(c[xb>>2]|0)+-1|0;c[xb>>2]=dc}while((dc|0)>0)}}c[xb>>2]=1;c[pa>>2]=c[la>>2];t=817;break}case 53:case 52:{if(!(b[wb>>1]|0))h=1;else h=b[C>>1]|0;g=c[r>>2]<<16>>16;if(g>>>0>=h<<16>>16>>>0)if(!(a[ma>>0]|0)){t=817;break b}else{t=290;break a}if(!((ks(f,Rb,Ub,_b,Xb)|0)<<24>>24)){if(!g)k=0;else k=(e[(c[A>>2]|0)+(g+-1<<1)>>1]|0)+1-(e[B>>1]|0)&65535;if(!(b[wb>>1]|0))o=b[lb>>1]|0;else o=(e[(c[A>>2]|0)+(g<<1)>>1]|0)+1-(e[B>>1]|0)&65535;if((k&65535)<(o&65535)){h=c[z>>2]|0;j=b[Xb>>1]|0;l=c[Ub>>2]|0;m=c[Rb>>2]|0;n=k;k=k&65535;while(1){g=c[mb>>2]|0;if(!((h|0)==(g|0)?j<<16>>16==(k&65535)<<16>>16:0)){if(b[Ja>>1]|0){dc=g+(k<<3)|0;c[dc>>2]=(c[dc>>2]|0)+m;dc=(c[pb>>2]|0)+k|0;a[dc>>0]=d[dc>>0]|8}if(b[La>>1]|0){dc=(c[mb>>2]|0)+(k<<3)+4|0;c[dc>>2]=(c[dc>>2]|0)+l;dc=(c[pb>>2]|0)+k|0;a[dc>>0]=d[dc>>0]|16}}n=n+1<<16>>16;if((n&65535)>=(o&65535)){t=817;break}else k=k+1|0}}else t=817}else t=817;break}case 49:case 48:{if(!(b[Gb>>1]|0))t=817;else{g=c[Hb>>2]|0;if(!(q&1)){g=g+4|0;c[Pb>>2]=g;q=(c[Ib>>2]|0)+4|0;c[Jb>>2]=q;k=(c[Kb>>2]|0)+4|0;r=16}else{c[Pb>>2]=g;q=c[Ib>>2]|0;c[Jb>>2]=q;k=c[Kb>>2]|0;r=8}c[Lb>>2]=k;j=b[Mb>>1]|0;c[Nb>>2]=j&65535;k=0;o=0;while(1){dc=(e[(c[Ob>>2]|0)+(k<<16>>16<<1)>>1]|0)-(e[x>>1]|0)|0;n=j&65535;n=dc>>>0>>0?dc:n+-1|0;o:do if(o>>>0<=n>>>0){j=c[y>>2]|0;p=o;while(1){h=p+1|0;if((a[j+p>>0]&r)<<24>>24){j=h;break}if(h>>>0>n>>>0)break o;else p=h}m=p;p:while(1){l=m;while(1){h=l+1|0;if(h>>>0>n>>>0)break p;if(!((a[(c[y>>2]|0)+h>>0]&r)<<24>>24))l=h;else break}js(Pb,m+1|0,l,m,h);m=h}if((m|0)!=(p|0)){js(Pb,m+1&65535,n,m,p);if(!p)break;js(Pb,o,p+-1|0,m,p);break}cc=c[q+(p<<3)>>2]|0;dc=c[g+(p<<3)>>2]|0;m=cc-dc|0;if((cc|0)!=(dc|0)){if(o>>>0

>>0)do{dc=q+(o<<3)|0;c[dc>>2]=(c[dc>>2]|0)+m;o=o+1|0}while((o|0)!=(p|0));if(j>>>0<=n>>>0)do{dc=q+(j<<3)|0;c[dc>>2]=(c[dc>>2]|0)+m;j=j+1|0}while(j>>>0<=n>>>0)}}else h=o;while(0);k=k+1<<16>>16;if(k<<16>>16>=(b[Gb>>1]|0)){t=817;break b}j=b[Mb>>1]|0;o=h}}break}case 47:case 46:{g=c[r>>2]|0;k=g&65535;g=g&65535;if(g>>>0>=(e[Ea>>1]|0)>>>0)if(!(a[ma>>0]|0)){t=817;break b}else{t=243;break a}if(!(q&1))g=0;else{dc=c[Pa>>2]|0;g=Od[c[Oa>>2]&255](f,c[dc+(g<<3)>>2]|0,c[dc+(g<<3)+4>>2]|0)|0;g=(Od[c[v>>2]&255](f,g,c[Fb>>2]|0)|0)-g|0}de[c[Ra>>2]&63](f,rb,k,g);b[qb>>1]=k;b[Ta>>1]=k;t=817;break}case 55:case 54:{if((c[r>>2]|0)>>>0>1)if(!(a[ma>>0]|0)){t=817;break b}else{t=307;break a}if(!((ks(f,Sb,Vb,$b,Yb)|0)<<24>>24)){g=b[wb>>1]|0;if(!(g<<16>>16))p=b[lb>>1]|0;else if(g<<16>>16==1){g=b[C>>1]|0;if(g<<16>>16<=0){t=817;break b}p=(e[(c[A>>2]|0)+((g<<16>>16)+-1<<1)>>1]|0)+1&65535}else{t=817;break b}if(p<<16>>16){k=c[D>>2]|0;j=c[mb>>2]|0;h=b[Yb>>1]|0;o=c[Vb>>2]|0;m=c[Sb>>2]|0;if((k|0)==(j|0)){g=0;do{if(h<<16>>16!=(g&65535)<<16>>16){if(b[Ja>>1]|0){dc=k+(g<<3)|0;c[dc>>2]=(c[dc>>2]|0)+m}if(b[La>>1]|0){dc=k+(g<<3)+4|0;c[dc>>2]=(c[dc>>2]|0)+o}}g=g+1|0}while((g&65535)<<16>>16!=p<<16>>16);t=817}else{g=(b[Ja>>1]|0)==0;k=(b[La>>1]|0)==0;h=0;do{if(!g){dc=j+(h<<3)|0;c[dc>>2]=(c[dc>>2]|0)+m}if(!k){dc=j+(h<<3)+4|0;c[dc>>2]=(c[dc>>2]|0)+o}h=h+1|0}while((h&65535)<<16>>16!=p<<16>>16);t=817}}else t=817}else t=817;break}case 56:{k=c[xb>>2]|0;q:do if((c[ka>>2]|0)<(k+1|0)){if(a[ma>>0]|0)c[sa>>2]=134}else{dc=c[r>>2]|0;r=b[Ja>>1]|0;l=r<<16>>16;t=(dc|0)<0?0-dc|0:dc;r=r<<16>>16<0?0-l|0:l;s=t>>>16;t=t&65535;cc=ea(t,r)|0;r=ea(s,r)|0;j=cc+(r<<16|8192)|0;j=(r>>>16)+(j>>>0>>0&1)<<18|j>>>14;j=(l^dc|0)>-1?j:0-j|0;l=b[La>>1]|0;cc=l<<16>>16;l=l<<16>>16<0?0-cc|0:cc;t=ea(l,t)|0;s=ea(l,s)|0;l=t+(s<<16|8192)|0;l=(s>>>16)+(l>>>0>>0&1)<<18|l>>>14;l=(cc^dc|0)>-1?l:0-l|0;if((k|0)>0){h=n;while(1){g=g+-1|0;c[la>>2]=g;g=c[h+(g<<2)>>2]&65535;if(g>>>0<(e[lb>>1]|0)>>>0){if(b[Ja>>1]|0){dc=(c[mb>>2]|0)+(g<<3)|0;c[dc>>2]=(c[dc>>2]|0)+j;dc=(c[pb>>2]|0)+g|0;a[dc>>0]=d[dc>>0]|8}if(b[La>>1]|0){dc=(c[mb>>2]|0)+(g<<3)+4|0;c[dc>>2]=(c[dc>>2]|0)+l;dc=(c[pb>>2]|0)+g|0;a[dc>>0]=d[dc>>0]|16}}else if(a[ma>>0]|0){t=333;break a}dc=(c[xb>>2]|0)+-1|0;c[xb>>2]=dc;g=c[la>>2]|0;if((dc|0)<=0)break q;h=c[oa>>2]|0}}}while(0);c[xb>>2]=1;c[pa>>2]=g;t=817;break}case 57:{g=c[xb>>2]|0;do if((c[ka>>2]|0)<(g|0)){if(a[ma>>0]|0)c[sa>>2]=134}else{if((b[Sa>>1]|0)!=0?(b[Ha>>1]|0)!=0:0)n=(b[wb>>1]|0)==0;else n=1;dc=b[Ta>>1]|0;j=dc&65535;if((dc&65535)>=(e[Ea>>1]|0)){if(!(a[ma>>0]|0))break;c[sa>>2]=134;break}h=c[(n?Ia:Xa)>>2]|0;r=h+(j<<3)|0;p=c[Pa>>2]|0;q=p+(j<<3)|0;dc=b[Ua>>1]|0;k=dc&65535;if((dc&65535)<(e[Ba>>1]|0)){do if(!n){g=c[Ya>>2]|0;if((g|0)==(c[Za>>2]|0)){o=c[Wa>>2]|0;o=Od[c[Na>>2]&255](f,(c[o+(k<<3)>>2]|0)-(c[r>>2]|0)|0,(c[o+(k<<3)+4>>2]|0)-(c[h+(j<<3)+4>>2]|0)|0)|0;break}else{dc=Wg((c[(c[Wa>>2]|0)+(k<<3)>>2]|0)-(c[r>>2]|0)|0,g)|0;o=Wg((c[(c[Wa>>2]|0)+(e[Ua>>1]<<3)+4>>2]|0)-(c[h+(j<<3)+4>>2]|0)|0,c[Za>>2]|0)|0;o=Od[c[Na>>2]&255](f,dc,o)|0;break}}else{o=c[Ka>>2]|0;o=Od[c[Na>>2]&255](f,(c[o+(k<<3)>>2]|0)-(c[r>>2]|0)|0,(c[o+(k<<3)+4>>2]|0)-(c[h+(j<<3)+4>>2]|0)|0)|0}while(0);l=e[Ua>>1]|0;g=c[Ma>>2]|0;l=Od[c[Oa>>2]&255](f,(c[g+(l<<3)>>2]|0)-(c[q>>2]|0)|0,(c[g+(l<<3)+4>>2]|0)-(c[p+(j<<3)+4>>2]|0)|0)|0;g=c[xb>>2]|0}else{l=0;o=0}if((g|0)>0){m=h+(j<<3)+4|0;j=p+(j<<3)+4|0;p=(o|0)==0;do{h=(c[la>>2]|0)+-1|0;c[la>>2]=h;h=c[(c[oa>>2]|0)+(h<<2)>>2]|0;if(h>>>0>=(e[lb>>1]|0)>>>0){if(a[ma>>0]|0){t=361;break a}}else{do if(!n){g=c[Ya>>2]|0;if((g|0)==(c[Za>>2]|0)){g=c[F>>2]|0;g=Od[c[Na>>2]&255](f,(c[g+(h<<3)>>2]|0)-(c[r>>2]|0)|0,(c[g+(h<<3)+4>>2]|0)-(c[m>>2]|0)|0)|0;break}else{dc=Wg((c[(c[F>>2]|0)+(h<<3)>>2]|0)-(c[r>>2]|0)|0,g)|0;g=Wg((c[(c[F>>2]|0)+(h<<3)+4>>2]|0)-(c[m>>2]|0)|0,c[Za>>2]|0)|0;g=Od[c[Na>>2]&255](f,dc,g)|0;break}}else{g=c[E>>2]|0;g=Od[c[Na>>2]&255](f,(c[g+(h<<3)>>2]|0)-(c[r>>2]|0)|0,(c[g+(h<<3)+4>>2]|0)-(c[m>>2]|0)|0)|0}while(0);k=c[mb>>2]|0;k=Od[c[Oa>>2]&255](f,(c[k+(h<<3)>>2]|0)-(c[q>>2]|0)|0,(c[k+(h<<3)+4>>2]|0)-(c[j>>2]|0)|0)|0;do if(g)if(p){g=0-g|0;break}else{g=Ug(g,l,o)|0;break}else g=0;while(0);de[c[Ra>>2]&63](f,vb,h&65535,g-k|0);g=c[xb>>2]|0}g=g+-1|0;c[xb>>2]=g}while((g|0)>0)}}while(0);c[xb>>2]=1;c[pa>>2]=c[la>>2];t=817;break}default:{if((q&255)>223){o=c[r>>2]|0;g=c[n+(g+1<<2)>>2]|0;l=c[ta>>2]|0;j=c[ua>>2]|0;n=o&65535;k=g+1|0;o=o&65535;if((o>>>0<(e[Ba>>1]|0)>>>0?k>>>0<((c[Ca>>2]|0)+1|0)>>>0:0)?(e[Da>>1]|0)<(e[Ea>>1]|0):0){if(!k)k=0;else k=Wd[c[_a>>2]&511](f,g)|0;g=c[Fa>>2]|0;dc=k-g|0;if((((dc|0)<0?0-dc|0:dc)|0)<(c[Ga>>2]|0))k=(k|0)>-1?g:0-g|0;if(!(b[Ha>>1]|0)){cc=e[Da>>1]|0;dc=c[Ia>>2]|0;p=b[Ja>>1]|0;r=p<<16>>16;g=0-k|0;q=(k|0)<0?g:k;p=p<<16>>16<0?0-r|0:r;m=q>>>16;q=q&65535;t=ea(p,q)|0;p=ea(p,m)|0;s=t+(p<<16|8192)|0;s=(p>>>16)+(s>>>0>>0&1)<<18|s>>>14;t=c[Ka>>2]|0;c[t+(o<<3)>>2]=((r^k|0)>-1?s:0-s|0)+(c[dc+(cc<<3)>>2]|0);s=b[La>>1]|0;r=s<<16>>16;s=s<<16>>16<0?0-r|0:r;q=ea(s,q)|0;m=ea(s,m)|0;s=q+(m<<16|8192)|0;s=(m>>>16)+(s>>>0>>0&1)<<18|s>>>14;c[t+(o<<3)+4>>2]=((r^k|0)>-1?s:0-s|0)+(c[dc+(cc<<3)+4>>2]|0);t=t+(o<<3)|0;cc=c[t+4>>2]|0;dc=(c[Ma>>2]|0)+(o<<3)|0;c[dc>>2]=c[t>>2];c[dc+4>>2]=cc}else g=0-k|0;m=c[Ka>>2]|0;p=e[Da>>1]|0;dc=c[Ia>>2]|0;p=Od[c[Na>>2]&255](f,(c[m+(o<<3)>>2]|0)-(c[dc+(p<<3)>>2]|0)|0,(c[m+(o<<3)+4>>2]|0)-(c[dc+(p<<3)+4>>2]|0)|0)|0;dc=c[Ma>>2]|0;m=e[Da>>1]|0;h=c[Pa>>2]|0;m=Od[c[Oa>>2]&255](f,(c[dc+(o<<3)>>2]|0)-(c[h+(m<<3)>>2]|0)|0,(c[dc+(o<<3)+4>>2]|0)-(c[h+(m<<3)+4>>2]|0)|0)|0;g=(a[Qa>>0]|0)!=0&(p^k|0)<0?g:k;h=a[ga>>0]|0;o=h&255;do if(!(o&4)){j=c[f+((o&3)<<2)+264>>2]|0;if((g|0)>-1){g=j+g|0;g=(k|0)!=0&(g|0)<0?0:g;break}else{g=g-j|0;g=(g|0)>0?0:g;break}}else{if((b[Sa>>1]|0)==(b[Ha>>1]|0)){dc=g-p|0;g=(((dc|0)<0?0-dc|0:dc)|0)>(j|0)?p:g}g=Od[c[v>>2]&255](f,g,c[f+((o&3)<<2)+264>>2]|0)|0;h=a[ga>>0]|0}while(0);do if(h&8)if((p|0)>-1){g=(g|0)<(l|0)?l:g;break}else{dc=0-l|0;g=(g|0)>(dc|0)?dc:g;break}while(0);de[c[Ra>>2]&63](f,wa,n,g-m|0);g=a[ga>>0]|0}else if(!(a[ma>>0]|0))g=q;else{c[sa>>2]=134;g=q}b[Ta>>1]=b[Da>>1]|0;if(g&16)b[Da>>1]=n;b[Ua>>1]=n;t=817;break b}if((q&255)>191){m=c[r>>2]|0;p=c[ta>>2]|0;n=m&65535;m=m&65535;if(m>>>0<(e[Ba>>1]|0)>>>0?(dc=b[Da>>1]|0,na=dc&65535,(dc&65535)<(e[Ea>>1]|0)):0){do if((b[Sa>>1]|0)!=0?(b[Ha>>1]|0)!=0:0){g=c[Wa>>2]|0;k=c[Xa>>2]|0;h=c[Ya>>2]|0;j=c[g+(m<<3)>>2]|0;l=c[k+(na<<3)>>2]|0;if((h|0)==(c[Za>>2]|0)){k=Od[c[Na>>2]&255](f,j-l|0,(c[g+(m<<3)+4>>2]|0)-(c[k+(na<<3)+4>>2]|0)|0)|0;k=Wg(k,c[Ya>>2]|0)|0;break}else{dc=Wg(j-l|0,h)|0;k=Wg((c[g+(m<<3)+4>>2]|0)-(c[k+(na<<3)+4>>2]|0)|0,c[Za>>2]|0)|0;k=Od[c[Na>>2]&255](f,dc,k)|0;break}}else t=771;while(0);if((t|0)==771){dc=c[Ka>>2]|0;k=c[Ia>>2]|0;k=Od[c[Na>>2]&255](f,(c[dc+(m<<3)>>2]|0)-(c[k+(na<<3)>>2]|0)|0,(c[dc+(m<<3)+4>>2]|0)-(c[k+(na<<3)+4>>2]|0)|0)|0}g=c[Fa>>2]|0;dc=k-g|0;if((((dc|0)<0?0-dc|0:dc)|0)<(c[Ga>>2]|0))o=(k|0)>-1?g:0-g|0;else o=k;k=a[ga>>0]|0;g=k&255;do if(!(g&4)){g=c[f+((g&3)<<2)+264>>2]|0;if((o|0)>-1){g=g+o|0;g=(o|0)!=0&(g|0)<0?0:g;break}else{g=o-g|0;g=(g|0)>0?0:g;break}}else{g=Od[c[v>>2]&255](f,o,c[f+((g&3)<<2)+264>>2]|0)|0;k=a[ga>>0]|0}while(0);do if(k&8)if((o|0)>-1){g=(g|0)<(p|0)?p:g;break}else{dc=0-p|0;g=(g|0)>(dc|0)?dc:g;break}while(0);t=c[Ma>>2]|0;cc=c[Pa>>2]|0;dc=e[Da>>1]|0;dc=Od[c[Oa>>2]&255](f,(c[t+(m<<3)>>2]|0)-(c[cc+(dc<<3)>>2]|0)|0,(c[t+(m<<3)+4>>2]|0)-(c[cc+(dc<<3)+4>>2]|0)|0)|0;de[c[Ra>>2]&63](f,wa,n,g-dc|0);g=a[ga>>0]|0}else if(!(a[ma>>0]|0))g=q;else{c[sa>>2]=134;g=q}b[Ta>>1]=b[Da>>1]|0;b[Ua>>1]=n;if(!(g&16)){t=817;break b}b[Da>>1]=n;t=817;break b}if((q&255)>183){o=l+65353&65535;if(o>>>0>=(p+1-(c[ka>>2]|0)|0)>>>0){t=791;break a}k=(c[da>>2]|0)+1|0;c[da>>2]=k;r:do if(o){h=0;j=1;while(1){c[da>>2]=k+2;c[n+(h+g<<2)>>2]=(d[s+k>>0]<<8|d[s+(k+1)>>0])<<16>>16;h=j&65535;if(h>>>0>=o>>>0)break r;k=c[da>>2]|0;j=j+1<<16>>16}}while(0);a[ra>>0]=0;t=817;break b}if((q&255)>175){j=l+65361&65535;if(j>>>0>=(p+1-(c[ka>>2]|0)|0)>>>0){t=800;break a}if(!j){t=817;break b}g=g+-1|0;k=1;h=1;while(1){c[n+(g+k<<2)>>2]=d[s+((c[da>>2]|0)+k)>>0];h=h+1<<16>>16;k=h&65535;if(k>>>0>j>>>0){t=817;break b}}}g=c[$a>>2]|0;j=c[ab>>2]|0;k=g+(j*24|0)|0;s:do if((j|0)>0){h=g;while(1){if(q<<24>>24==(c[h+12>>2]&255)<<24>>24?(a[h+16>>0]|0)!=0:0)break;h=h+24|0;if(h>>>0>=k>>>0)break s}g=c[bb>>2]|0;if((g|0)>=(c[cb>>2]|0)){t=806;break a}k=c[db>>2]|0;c[bb>>2]=g+1;c[k+(g*20|0)>>2]=c[eb>>2];c[k+(g*20|0)+4>>2]=(c[da>>2]|0)+1;c[k+(g*20|0)+8>>2]=1;j=c[h+4>>2]|0;c[k+(g*20|0)+12>>2]=j;c[k+(g*20|0)+16>>2]=c[h+8>>2];k=c[h>>2]|0;g=k+-1|0;do if(g>>>0<=2){h=c[f+(g<<3)+444>>2]|0;if(!h){c[sa>>2]=138;break}g=c[f+(g<<3)+448>>2]|0;if(g>>>0>>0){c[sa>>2]=131;break}else{c[fa>>2]=h;c[ja>>2]=g;c[da>>2]=j;c[eb>>2]=k;break}}else c[sa>>2]=132;while(0);a[ra>>0]=0;t=817;break b}while(0);c[sa>>2]=128;h=j;t=819}}while(0);do if((t|0)==817){g=c[sa>>2]|0;if(!g){t=833;break}else if((g|0)!=128){t=841;break a}g=c[$a>>2]|0;h=c[ab>>2]|0;t=819}while(0);if((t|0)==819){t=0;k=g+(h*24|0)|0;if((h|0)<=0){t=832;break}while(1){if((a[g+16>>0]|0)!=0?(a[ga>>0]|0)==(c[g+12>>2]&255)<<24>>24:0)break;g=g+24|0;if(g>>>0>=k>>>0){t=832;break a}}h=c[bb>>2]|0;if((h|0)>=(c[cb>>2]|0)){t=823;break}k=c[db>>2]|0;c[k+(h*20|0)>>2]=c[eb>>2];c[k+(h*20|0)+4>>2]=(c[da>>2]|0)+1;c[k+(h*20|0)+8>>2]=1;j=c[g+4>>2]|0;c[k+(h*20|0)+12>>2]=j;c[k+(h*20|0)+16>>2]=c[g+8>>2];k=c[g>>2]|0;g=k+-1|0;if(g>>>0>2){t=825;break}h=c[f+(g<<3)+444>>2]|0;if(!h){t=827;break}g=c[f+(g<<3)+448>>2]|0;if(g>>>0>>0){t=829;break}c[fa>>2]=h;c[ja>>2]=g;c[da>>2]=j;c[eb>>2]=k;g=u}else if((t|0)==833){t=0;c[ka>>2]=c[pa>>2];if(a[ra>>0]|0)c[da>>2]=(c[da>>2]|0)+(c[ha>>2]|0);if((u|0)>999999){g=139;t=844;break}else g=u+1|0}o=c[da>>2]|0;if((o|0)>=(c[ja>>2]|0)){t=837;break}if(a[ac>>0]|0){g=0;t=844;break}else u=g}switch(t|0){case 21:{c[sa>>2]=129;g=129;break}case 25:{c[sa>>2]=130;g=130;break}case 35:{c[sa>>2]=134;g=134;break}case 45:{c[sa>>2]=134;g=134;break}case 73:{c[sa>>2]=134;g=134;break}case 84:{c[sa>>2]=134;g=134;break}case 90:{c[sa>>2]=134;g=134;break}case 96:{c[sa>>2]=134;g=134;break}case 102:{c[sa>>2]=134;g=134;break}case 105:{c[sa>>2]=132;g=132;break}case 116:{c[sa>>2]=131;g=131;break}case 142:{c[sa>>2]=134;g=134;break}case 147:{c[sa>>2]=134;g=134;break}case 153:{c[sa>>2]=130;g=130;break}case 166:{c[sa>>2]=134;g=134;break}case 179:{c[sa>>2]=130;g=130;break}case 189:{c[sa>>2]=134;g=134;break}case 199:{c[sa>>2]=130;g=130;break}case 208:{c[sa>>2]=134;g=134;break}case 214:{c[sa>>2]=140;g=140;break}case 217:{c[sa>>2]=140;g=140;break}case 226:{c[sa>>2]=131;g=131;break}case 228:{c[sa>>2]=137;g=137;break}case 231:{c[sa>>2]=136;g=136;break}case 235:{c[sa>>2]=132;g=132;break}case 237:{c[sa>>2]=138;g=138;break}case 239:{c[sa>>2]=131;g=131;break}case 243:{c[sa>>2]=134;g=134;break}case 279:{c[sa>>2]=134;g=134;break}case 290:{c[sa>>2]=134;g=134;break}case 307:{c[sa>>2]=134;g=134;break}case 333:{c[sa>>2]=134;g=134;break}case 361:{c[sa>>2]=134;g=134;break}case 377:{c[sa>>2]=134;g=134;break}case 390:{c[sa>>2]=134;g=134;break}case 409:{c[sa>>2]=130;g=130;break}case 413:{c[sa>>2]=130;g=130;break}case 421:{c[sa>>2]=134;g=134;break}case 442:{c[sa>>2]=134;g=134;break}case 474:{c[sa>>2]=135;g=135;break}case 490:{c[sa>>2]=131;g=131;break}case 510:{c[sa>>2]=133;g=133;break}case 533:{c[sa>>2]=134;g=134;break}case 597:{c[sa>>2]=130;g=130;break}case 616:{c[sa>>2]=134;g=134;break}case 624:{c[sa>>2]=134;g=134;break}case 629:{c[sa>>2]=134;g=134;break}case 635:{c[sa>>2]=130;g=130;break}case 670:{c[sa>>2]=134;g=134;break}case 695:{c[sa>>2]=141;g=141;break}case 698:{c[sa>>2]=141;g=141;break}case 707:{c[sa>>2]=131;g=131;break}case 709:{c[sa>>2]=137;g=137;break}case 719:{c[sa>>2]=134;g=134;break}case 725:{c[sa>>2]=130;g=130;break}case 791:{c[sa>>2]=130;g=130;break}case 800:{c[sa>>2]=130;g=130;break}case 806:{c[sa>>2]=130;g=130;break}case 823:{c[sa>>2]=134;g=134;break}case 825:{c[sa>>2]=132;g=132;break}case 827:{c[sa>>2]=138;g=138;break}case 829:{c[sa>>2]=131;g=131;break}case 832:{c[sa>>2]=128;g=128;break}case 837:if((c[bb>>2]|0)>0){c[sa>>2]=131;g=131;break}else{dc=0;i=bc;return dc|0}case 840:{c[sa>>2]=131;g=131;break}case 841:{if(!g){dc=0;i=bc;return dc|0}break}case 844:{i=bc;return g|0}}if(a[ac>>0]|0){dc=g;i=bc;return dc|0}a[(c[f+4>>2]|0)+301>>0]=0;dc=g;i=bc;return dc|0}function Ej(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;g=h;f=h+4|0;e=Afa(28)|0;c[f>>2]=1;c[f+4>>2]=1;c[f+8>>2]=a+-2;if((d+-1|0)>>>0>=4)Sa(95592,95656,55,95712);if(!e){j=c[q>>2]|0;c[g>>2]=59;_c(j|0,95736,g|0)|0;sd(1)}j=Pj(12)|0;c[e>>2]=j;c[e+16>>2]=0;c[e+4>>2]=a;c[e+8>>2]=b;c[e+12>>2]=d;c[e+20>>2]=0;Yj(j,f);a=Cfa(ea(ea(b,a)|0,d)|0,1)|0;c[e+24>>2]=a;if(!a){h=c[q>>2]|0;c[g>>2]=76;_c(h|0,95736,g|0)|0;sd(1)}else{i=h;return e|0}return 0}function Fj(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;if(!b)Sa(95784,95656,117,95792);if(!d)Sa(95824,95656,118,95792);if(!e)Sa(95832,95656,119,95792);q=b+4|0;l=c[q>>2]|0;k=l+-1|0;if(k>>>0<=d>>>0)Sa(95840,95656,120,95792);if((f+d|0)>>>0>k>>>0)Sa(95864,95656,121,95792);k=(c[b+8>>2]|0)+-1|0;if(k>>>0<=e>>>0)Sa(95896,95656,122,95792);if((g+e|0)>>>0>k>>>0)Sa(95920,95656,123,95792);m=c[b+12>>2]|0;if(!g){i=r;return}p=b+24|0;o=(f|0)!=0;b=ea(m,f)|0;if((m|0)!=2)if(o){k=0;do{n=ea((ea(c[q>>2]|0,k+e|0)|0)+d|0,m)|0;Aga((c[p>>2]|0)+n|0,h+(ea(k,j)|0)|0,b|0)|0;k=k+1|0}while((k|0)!=(g|0));i=r;return}else{k=0;do{n=ea((ea(c[q>>2]|0,k+e|0)|0)+d|0,m)|0;Aga((c[p>>2]|0)+n|0,h+(ea(k,j)|0)|0,b|0)|0;k=k+1|0}while((k|0)!=(g|0));i=r;return}else{b=l;k=0;while(1){n=c[p>>2]|0;b=(ea(b,k+e|0)|0)+d<<1;l=ea(k,j)|0;if(o){m=0;do{s=m<<1;a[n+(s+b)>>0]=-1;a[n+((s|1)+b)>>0]=a[h+(m+l)>>0]|0;m=m+1|0}while((m|0)!=(f|0))}k=k+1|0;if((k|0)==(g|0))break;b=c[q>>2]|0}i=r;return}}function Gj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;if(!a)Sa(95784,95656,197,95960);b=c[a>>2]|0;if((c[b+8>>2]|0)==1){i=g;return}else f=0;do{b=Rj(b,f)|0;d=f+1|0;e=Rj(c[a>>2]|0,d)|0;if((c[b+4>>2]|0)==(c[e+4>>2]|0)){b=b+8|0;c[b>>2]=(c[b>>2]|0)+(c[e+8>>2]|0);Xj(c[a>>2]|0,d);b=f+-1|0}else b=f;f=b+1|0;b=c[a>>2]|0}while(f>>>0<((c[b+8>>2]|0)+-1|0)>>>0);i=g;return}function Hj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;i=i+16|0;u=v;if(!b)Sa(95784,95656,225,95984);f=c[b>>2]|0;if(c[f+8>>2]|0){r=b+4|0;s=(d|0)>0;t=b+8|0;n=2147483647;m=-1;h=2147483647;p=0;l=0;o=0;while(1){f=Rj(f,p)|0;a:do if(((c[f>>2]|0)+d|0)>>>0<=((c[r>>2]|0)+-1|0)>>>0){k=c[f+4>>2]|0;if(s){j=p;g=d;while(1){f=Rj(c[b>>2]|0,j)|0;w=c[f+4>>2]|0;k=(w|0)>(k|0)?w:k;if((k+e|0)>>>0>((c[t>>2]|0)+-1|0)>>>0){j=n;k=o;break a}g=g-(c[f+8>>2]|0)|0;if((g|0)<=0)break;else j=j+1|0}}if((k|0)>-1){g=Rj(c[b>>2]|0,p)|0;j=k+e|0;if(j>>>0>=n>>>0){if((j|0)!=(n|0)){j=n;k=o;break}f=c[g+8>>2]|0;if((f|0)>=(h|0)){j=n;k=o;break}}else f=c[g+8>>2]|0;m=p;h=f;l=c[g>>2]|0}else{j=n;k=o}}else{j=n;k=o}while(0);p=p+1|0;f=c[b>>2]|0;if(p>>>0>=(c[f+8>>2]|0)>>>0)break;else{n=j;o=k}}if((m|0)!=-1){g=Afa(12)|0;if(!g){w=c[q>>2]|0;c[u>>2]=261;_c(w|0,95736,u|0)|0;sd(1)}c[g>>2]=l;c[g+4>>2]=k+e;c[g+8>>2]=d;Vj(f,m,g);Bfa(g);j=m+1|0;f=c[b>>2]|0;b:do if(j>>>0<(c[f+8>>2]|0)>>>0)do{f=Rj(f,j)|0;h=Rj(c[b>>2]|0,m)|0;g=c[f>>2]|0;h=(c[h+8>>2]|0)+(c[h>>2]|0)|0;if((g|0)>=(h|0))break b;c[f>>2]=h;u=f+8|0;w=(c[u>>2]|0)+(g-h)|0;c[u>>2]=w;if((w|0)>=1)break b;Xj(c[b>>2]|0,j);f=c[b>>2]|0}while(j>>>0<(c[f+8>>2]|0)>>>0);while(0);Gj(b);u=ea(e,d)|0;w=b+16|0;c[w>>2]=(c[w>>2]|0)+u;c[a>>2]=l;c[a+4>>2]=k;c[a+8>>2]=d;c[a+12>>2]=e;i=v;return}}c[a>>2]=-1;c[a+4>>2]=-1;c[a+8>>2]=0;c[a+12>>2]=0;i=v;return}function Ij(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;if(!a)Sa(95784,95656,325,96032);g=a+24|0;if(!(c[g>>2]|0))Sa(96016,95656,326,96032);d=a+20|0;b=c[d>>2]|0;if(!b){Tb(1,d|0);b=c[d>>2]|0}rc(3553,b|0);zd(3553,10242,33071);zd(3553,10243,33071);zd(3553,10240,9729);zd(3553,10241,9729);f=c[a+12>>2]|0;if((f|0)==3){Oc(3553,0,6407,c[a+4>>2]|0,c[a+8>>2]|0,0,6407,5121,c[g>>2]|0);i=h;return}else if((f|0)!=4){e=c[a+4>>2]|0;d=c[a+8>>2]|0;b=c[g>>2]|0;if((f|0)==2){Oc(3553,0,6410,e|0,d|0,0,6410,5121,b|0);i=h;return}else{Oc(3553,0,6403,e|0,d|0,0,6403,5121,b|0);i=h;return}}else{Oc(3553,0,6408,c[a+4>>2]|0,c[a+8>>2]|0,0,32993,33639,c[g>>2]|0);i=h;return}}function Jj(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,h=0,j=0;j=i;if(!a)Sa(99232,99240,198,99320);e=a+48|0;if(!(Tj(c[e>>2]|0)|0)){d=0.0;i=j;return +d}else f=0;while(1){a=Rj(c[e>>2]|0,f)|0;f=f+1|0;if((c[a>>2]|0)==(b|0))break;if(f>>>0>=(Tj(c[e>>2]|0)|0)>>>0){d=0.0;h=7;break}}if((h|0)==7){i=j;return +d}d=+g[a+4>>2];i=j;return +d}function Kj(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;o=p+24|0;l=p;n=p+8|0;m=p+16|0;if(!a)Sa(99232,99240,222,99352);if(!(ms(a,+g[a+20>>2],o,l)|0)){i=p;return}b=c[a>>2]|0;if((c[b+8>>2]|0)>>>0>1){k=m+4|0;j=1;do{h=c[(Rj(b,j)|0)>>2]|0;f=Dh(c[l>>2]|0,c[h>>2]|0)|0;h=h+48|0;Uj(c[h>>2]|0);b=c[a>>2]|0;d=c[b+8>>2]|0;if(d>>>0>1){e=1;do{b=c[(Rj(b,e)|0)>>2]|0;d=Dh(c[l>>2]|0,c[b>>2]|0)|0;Th(c[l>>2]|0,d,f,1,n)|0;d=c[n>>2]|0;if(d){c[m>>2]=c[b>>2];g[k>>2]=+(d|0)*.000244140625;Yj(c[h>>2]|0,m)}e=e+1|0;b=c[a>>2]|0;d=c[b+8>>2]|0}while(e>>>0>>0)}j=j+1|0}while(j>>>0>>0)}Jh(c[l>>2]|0)|0;gj(c[o>>2]|0)|0;i=p;return}function Lj(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,h=0;h=i;i=i+16|0;f=h;if(!d)Sa(99384,99240,327,99400);e=Cfa(1,76)|0;if(!e){d=c[q>>2]|0;c[f>>2]=332;_c(d|0,99184,f|0)|0;f=0;i=h;return f|0}c[e+4>>2]=a;g[e+20>>2]=b;c[e+8>>2]=0;c[e+12>>2]=gea(d)|0;if(!(ns(e)|0)){f=e;i=h;return f|0}Mj(e);f=0;i=h;return f|0}function Mj(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;if(!a)Sa(99232,99240,389,99432);if((c[a+8>>2]|0)==0?(b=c[a+12>>2]|0,(b|0)!=0):0)Bfa(b);d=(Tj(c[a>>2]|0)|0)==0;b=c[a>>2]|0;if(d){d=b;Qj(d);Bfa(a);i=e;return}else d=0;while(1){b=c[(Rj(b,d)|0)>>2]|0;if(!b){d=8;break}Qj(c[b+48>>2]|0);Bfa(b);d=d+1|0;f=d>>>0<(Tj(c[a>>2]|0)|0)>>>0;b=c[a>>2]|0;if(!f){d=10;break}}if((d|0)==8)Sa(99232,99240,186,99296);else if((d|0)==10){Qj(b);Bfa(a);i=e;return}}function Nj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,r=0,s=0.0,t=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+64|0;K=O;M=O+48|0;L=O+12|0;F=O+16|0;G=O+20|0;I=O+24|0;D=O+32|0;if(!a)Sa(99232,99240,428,99456);if(!b)Sa(99488,99240,429,99456);H=a+4|0;C=c[H>>2]|0;e=c[C+4>>2]|0;f=c[C+8>>2]|0;C=c[C+12>>2]|0;C=(C|0)==2?1:C;J=(ms(a,+g[a+20>>2],M,L)|0)==0;d=lea(b)|0;if(J){N=d;i=O;return N|0}a:do if(d){w=a+28|0;x=a+24|0;y=(C|0)==3;z=a+36|0;A=D+4|0;J=c[q>>2]|0;B=a+32|0;u=+(e>>>0);s=+(f>>>0);t=(C|0)==1;v=0;d=0;b:while(1){e=c[a>>2]|0;k=b+(v<<2)|0;c:do if(!(c[e+8>>2]|0)){e=c[k>>2]|0;N=15}else{j=0;while(1){e=c[(Rj(e,j)|0)>>2]|0;c[G>>2]=e;f=c[e>>2]|0;h=c[k>>2]|0;if((f|0)==(h|0)){if((f|0)==-1)break c;if((c[e+52>>2]|0)==(c[w>>2]|0)?+g[e+56>>2]==+g[B>>2]:0)break c}j=j+1|0;e=c[a>>2]|0;if(j>>>0>=(c[e+8>>2]|0)>>>0){e=h;N=15;break}}}while(0);do if((N|0)==15){N=0;r=b+(v<<2)|0;p=Dh(c[L>>2]|0,e)|0;e=((c[x>>2]|0)==0?32770:32)|((c[w>>2]|0)>0?8:4);if(y){e=e|196608}e=Qg(c[L>>2]|0,p,e)|0;if(e){d=v;N=19;break b}if(!(c[w>>2]|0)){o=c[(c[L>>2]|0)+84>>2]|0;m=c[o+76>>2]|0;h=c[o+80>>2]|0;e=c[o+84>>2]|0;f=c[o+88>>2]|0;n=c[o+100>>2]|0;o=c[o+104>>2]|0}else{e=jj(c[M>>2]|0,I)|0;if(e){d=e;N=23;break b}kj(c[I>>2]|0,~~(+g[B>>2]*64.0),1,0,0);e=cj(c[(c[L>>2]|0)+84>>2]|0,F)|0;if(e){d=e;N=25;break b}e=c[w>>2]|0;if((e|0)==2){E=tj(F,c[I>>2]|0,0,1)|0;N=30}else if((e|0)==3){E=tj(F,c[I>>2]|0,1,1)|0;N=30}else if((e|0)==1){E=sj(F,c[I>>2]|0,1)|0;N=30}if((N|0)==30?(N=0,(E|0)!=0):0){d=E;N=31;break b}if(t){e=dj(F,0,0,1)|0;if(e){d=e;N=34;break b}}else{e=dj(F,3,0,1)|0;if(e){d=e;N=36;break b}}n=c[F>>2]|0;m=c[n+28>>2]|0;h=c[n+32>>2]|0;e=c[n+36>>2]|0;f=c[n+40>>2]|0;o=c[n+24>>2]|0;n=c[n+20>>2]|0;lj(c[I>>2]|0)}k=(h>>>0)/(C>>>0)|0;Hj(D,c[H>>2]|0,k+1|0,m+1|0);j=c[D>>2]|0;l=c[A>>2]|0;if((j|0)<0){c[K>>2]=610;_c(J|0,99568,K|0)|0;d=d+1|0;break}Fj(c[H>>2]|0,j,l,k,m,f,e);h=Afa(60)|0;if(!h){c[K>>2]=160;_c(J|0,99184,K|0)|0;h=0}else{c[h+52>>2]=0;g[h+56>>2]=0.0;e=h+4|0;f=e+44|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[h+48>>2]=Pj(8)|0}c[G>>2]=h;c[h>>2]=c[r>>2];c[h+8>>2]=k;c[h+12>>2]=m;c[h+52>>2]=c[w>>2];g[h+56>>2]=+g[B>>2];c[h+16>>2]=n;c[h+20>>2]=o;g[h+32>>2]=+(j>>>0)/u;g[h+36>>2]=+(l>>>0)/s;g[h+40>>2]=+((k+j|0)>>>0)/u;g[h+44>>2]=+((m+l|0)>>>0)/s;Qg(c[L>>2]|0,p,6)|0;p=c[(c[L>>2]|0)+84>>2]|0;r=c[G>>2]|0;g[r+24>>2]=+(c[p+64>>2]|0)*.015625;g[r+28>>2]=+(c[p+68>>2]|0)*.015625;Yj(c[a>>2]|0,G);if((c[w>>2]|0)>0)bj(c[F>>2]|0)}while(0);v=v+1|0;if(v>>>0>=(lea(b)|0)>>>0)break a}if((N|0)==19){I=c[98448+(e<<3)>>2]|0;N=c[98452+(e<<3)>>2]|0;c[K>>2]=502;c[K+4>>2]=I;c[K+8>>2]=N;_c(J|0,99504,K|0)|0;Jh(c[L>>2]|0)|0;gj(c[M>>2]|0)|0;N=(lea(b)|0)-d|0;i=O;return N|0}else if((N|0)==23){N=c[98452+(d<<3)>>2]|0;c[K>>2]=c[98448+(d<<3)>>2];c[K+4>>2]=N;_c(J|0,99544,K|0)|0;Jh(c[L>>2]|0)|0;lj(c[I>>2]|0);gj(c[M>>2]|0)|0;N=0;i=O;return N|0}else if((N|0)==25){N=c[98452+(d<<3)>>2]|0;c[K>>2]=c[98448+(d<<3)>>2];c[K+4>>2]=N;_c(J|0,99544,K|0)|0;Jh(c[L>>2]|0)|0;lj(c[I>>2]|0);gj(c[M>>2]|0)|0;N=0;i=O;return N|0}else if((N|0)==31){N=c[98452+(d<<3)>>2]|0;c[K>>2]=c[98448+(d<<3)>>2];c[K+4>>2]=N;_c(J|0,99544,K|0)|0;Jh(c[L>>2]|0)|0;lj(c[I>>2]|0);gj(c[M>>2]|0)|0;N=0;i=O;return N|0}else if((N|0)==34){N=c[98452+(d<<3)>>2]|0;c[K>>2]=c[98448+(d<<3)>>2];c[K+4>>2]=N;_c(J|0,99544,K|0)|0;Jh(c[L>>2]|0)|0;lj(c[I>>2]|0);gj(c[M>>2]|0)|0;N=0;i=O;return N|0}else if((N|0)==36){N=c[98452+(d<<3)>>2]|0;c[K>>2]=c[98448+(d<<3)>>2];c[K+4>>2]=N;_c(J|0,99544,K|0)|0;Jh(c[L>>2]|0)|0;lj(c[I>>2]|0);gj(c[M>>2]|0)|0;N=0;i=O;return N|0}}else d=0;while(0);Jh(c[L>>2]|0)|0;gj(c[M>>2]|0)|0;Ij(c[H>>2]|0);Kj(a);N=d;i=O;return N|0}function Oj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,r=0.0;o=i;i=i+32|0;n=o+8|0;j=o;m=o+16|0;l=o+12|0;k=j;c[k>>2]=0;c[k+4>>2]=0;if(!a)Sa(99232,99240,663,99608);if(!(c[a+12>>2]|0))Sa(99632,99240,666,99608);k=a+4|0;if(!(c[k>>2]|0))Sa(99648,99240,667,99608);d=c[a>>2]|0;a:do if(c[d+8>>2]|0){e=a+28|0;f=a+32|0;if((b|0)==-1){e=0;while(1){d=c[(Rj(d,e)|0)>>2]|0;if((c[d>>2]|0)==-1)break;e=e+1|0;d=c[a>>2]|0;if(e>>>0>=(c[d+8>>2]|0)>>>0)break a}i=o;return d|0}else h=0;while(1){d=c[(Rj(d,h)|0)>>2]|0;if(((c[d>>2]|0)==(b|0)?(c[d+52>>2]|0)==(c[e>>2]|0):0)?+g[d+56>>2]==+g[f>>2]:0)break;h=h+1|0;d=c[a>>2]|0;if(h>>>0>=(c[d+8>>2]|0)>>>0)break a}i=o;return d|0}while(0);if((b|0)!=-1){c[j>>2]=b;if(Nj(a,j)|0){n=0;i=o;return n|0}n=c[(Sj(c[a>>2]|0)|0)>>2]|0;i=o;return n|0}d=c[k>>2]|0;h=c[d+4>>2]|0;j=c[d+8>>2]|0;Hj(m,d,5,5);d=Afa(60)|0;if(!d){d=c[q>>2]|0;c[n>>2]=160;_c(d|0,99184,n|0)|0;d=0}else{c[d+52>>2]=0;g[d+56>>2]=0.0;e=d+4|0;f=e+44|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[d+48>>2]=Pj(8)|0}c[l>>2]=d;e=c[m>>2]|0;if((e|0)<0){a=c[q>>2]|0;c[n>>2]=698;_c(a|0,99568,n|0)|0;n=0;i=o;return n|0}else{n=m+4|0;Fj(c[k>>2]|0,e,c[n>>2]|0,4,4,99664,0);c[d>>2]=-1;k=c[m>>2]|0;r=+(h>>>0);g[d+32>>2]=+(k+2|0)/r;n=c[n>>2]|0;p=+(j>>>0);g[d+36>>2]=+(n+2|0)/p;g[d+40>>2]=+(k+3|0)/r;g[d+44>>2]=+(n+3|0)/p;Yj(c[a>>2]|0,l);n=c[l>>2]|0;i=o;return n|0}return 0}function Pj(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;d=e;b=Afa(16)|0;if(!a)Sa(99952,99968,46,100016);if(!b){e=c[q>>2]|0;c[d>>2]=51;_c(e|0,100032,d|0)|0;sd(1)}else{c[b+12>>2]=a;c[b+8>>2]=0;c[b+4>>2]=1;c[b>>2]=Afa(a)|0;i=e;return b|0}return 0}function Qj(a){a=a|0;var b=0;b=i;if(!a)Sa(100080,99968,67,100088);else{Bfa(c[a>>2]|0);Bfa(a);i=b;return}}function Rj(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;if(!a)Sa(100080,99968,80,100104);d=c[a+8>>2]|0;if(!d)Sa(100120,99968,81,100104);if(d>>>0>b>>>0){a=(c[a>>2]|0)+(ea(c[a+12>>2]|0,b)|0)|0;i=e;return a|0}else Sa(100136,99968,82,100104);return 0}function Sj(a){a=a|0;var b=0,d=0;d=i;if(!a)Sa(100080,99968,104,100160);b=c[a+8>>2]|0;if(!b)Sa(100120,99968,105,100160);if(b>>>0>0){a=(c[a>>2]|0)+(ea(c[a+12>>2]|0,b+-1|0)|0)|0;i=d;return a|0}else Sa(100136,99968,82,100104);return 0}function Tj(a){a=a|0;var b=0;b=i;if(!a)Sa(100080,99968,145,100176);else{i=b;return c[a+8>>2]|0}return 0}function Uj(a){a=a|0;var b=0;b=i;if(!a)Sa(100080,99968,194,100192);else{c[a+8>>2]=0;i=b;return}}function Vj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;if(!a)Sa(100080,99968,221,100224);j=a+8|0;e=c[j>>2]|0;if(e>>>0>>0)Sa(100240,99968,222,100224);f=a+4|0;g=c[f>>2]|0;if(g>>>0<=e>>>0?(h=g<<1,g>>>0>>0):0){c[a>>2]=Dfa(c[a>>2]|0,ea(c[a+12>>2]|0,h)|0)|0;c[f>>2]=h;e=c[j>>2]|0}if(e>>>0>b>>>0){f=c[a>>2]|0;g=c[a+12>>2]|0;Bga(f+(ea(g,b+1|0)|0)|0,f+(ea(g,b)|0)|0,ea(g,e-b|0)|0)|0;e=c[j>>2]|0}e=e+1|0;c[j>>2]=e;if(!e)Sa(100120,99968,207,100208);if(e>>>0>b>>>0){j=c[a+12>>2]|0;Aga((c[a>>2]|0)+(ea(j,b)|0)|0,d|0,j|0)|0;i=k;return}else Sa(100136,99968,208,100208)}function Wj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;if(!a)Sa(100080,99968,245,100264);e=a+8|0;f=c[e>>2]|0;if(f>>>0<=b>>>0)Sa(100288,99968,246,100264);if((f+1|0)>>>0<=d>>>0)Sa(100312,99968,247,100264);if(b>>>0>>0){h=c[a>>2]|0;a=c[a+12>>2]|0;Bga(h+(ea(a,b)|0)|0,h+(ea(a,d)|0)|0,ea(a,f-d|0)|0)|0;c[e>>2]=b-d+(c[e>>2]|0);i=g;return}else Sa(100336,99968,248,100264)}function Xj(a,b){a=a|0;b=b|0;var d=0;d=i;if(!a)Sa(100080,99968,262,100352);if((c[a+8>>2]|0)>>>0>b>>>0){Wj(a,b,b+1|0);i=d;return}else Sa(100136,99968,263,100352)}function Yj(a,b){a=a|0;b=b|0;var d=0;d=i;Vj(a,c[a+8>>2]|0,b);i=d;return}function Zj(a,b){a=a|0;b=b|0;c[a+108>>2]=b;c[a+100>>2]=c[b+28>>2];c[a+4>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+8>>2]=c[b+16>>2];c[a+16>>2]=c[b+20>>2];return 0}function _j(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;j=os(b,d)|0;if(j){i=k;return j|0}g=c[b+24>>2]|0;f=c[b+28>>2]|0;h=f+(g*40|0)|0;if((g|0)<=0){i=k;return j|0}g=c[d+8>>2]|0;d=c[d+4>>2]|0;while(1){c[d>>2]=c[f+16>>2];c[d+4>>2]=c[f+20>>2];b=e[f>>1]|0;do if(!(b&1))if(!(b&2)){a[g>>0]=1;break}else{a[g>>0]=2;break}else a[g>>0]=0;while(0);f=f+40|0;if(f>>>0>=h>>>0)break;else{g=g+1|0;d=d+8|0}}i=k;return j|0}function $j(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=i;i=i+1584|0;U=W+1456|0;T=W;r=W+1452|0;V=c[g+92>>2]|0;S=f+40|0;c[S>>2]=e[g+68>>1];if(Uh(g,1970170211)|0){Vh(g,V)|0;i=W;return 0}h=c[g+100>>2]|0;l=U+0|0;j=l+120|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(j|0));c[U>>2]=h;n=f+52|0;c[n>>2]=0;o=f+756|0;c[o>>2]=0;h=Dh(g,c[(c[f>>2]|0)+16>>2]|0)|0;a:do if((((h|0)!=0?(Qg(g,h,1)|0)==0:0)?(k=c[g+84>>2]|0,(b[k+110>>1]|0)>=1):0)?(Cga(T|0,0,1452)|0,p=T+40|0,c[p>>2]=c[S>>2],c[T+8>>2]=65536,c[T+12>>2]=65536,c[T+16>>2]=0,c[T+20>>2]=0,c[T+4>>2]=g,c[T+24>>2]=0,c[T+28>>2]=0,c[U+108>>2]=T,c[U+100>>2]=0,(os(U,k+108|0)|0)==0):0){m=0;do{c[r>>2]=0;if(ps(U,m)|0)break a;qs(U,m);l=c[U+(m*28|0)+52>>2]|0;M=c[U+(m*28|0)+44>>2]|0;k=l+(M*48|0)|0;if((M|0)>0){h=0;do{j=c[l+20>>2]|0;if(((j|0)!=0?(j>>>0>l>>>0?(c[j+20>>2]|0)==(l|0):0):0)?(q=(b[l+2>>1]|0)-(b[j+2>>1]|0)|0,h>>>0<16):0){M=h+1|0;c[r>>2]=M;c[f+(m*704|0)+(h*12|0)+56>>2]=(q|0)<0?0-q|0:q;h=M}l=l+48|0}while(l>>>0>>0)}rs(r,f+(m*704|0)+56|0,((c[p>>2]|0)>>>0)/100|0);c[f+(m*704|0)+52>>2]=c[r>>2];m=m+1|0}while((m|0)<2)}while(0);if(!(c[n>>2]|0))h=((c[S>>2]|0)*50|0)/2048|0;else h=c[f+56>>2]|0;c[f+248>>2]=(h|0)/5|0;c[f+252>>2]=h;a[f+256>>0]=0;if(!(c[o>>2]|0))h=((c[S>>2]|0)*50|0)/2048|0;else h=c[f+760>>2]|0;c[f+952>>2]=(h|0)/5|0;c[f+956>>2]=h;a[f+960>>0]=0;ss(U);l=3272+(c[(c[f>>2]|0)+4>>2]<<3)|0;h=c[l>>2]|0;if((h|0)!=385){L=f+964|0;M=g+84|0;p=0;q=0;while(1){j=2880+h|0;h=a[j>>0]|0;b:do if(!(h<<24>>24)){k=0;n=0;u=p;t=q}else{J=l+4|0;k=0;K=0;n=q;while(1){I=k;G=p;H=n;c:while(1){while(1){q=j+1|0;k=h&255;if(h<<24>>24<0){do if((h&255)>=224)if((h&255)<240){h=k&15;p=2;k=q;break}else{h=k&7;p=3;k=q;break}else{h=k&31;p=1;k=q}while(0);while(1){j=j+2|0;h=d[k>>0]&63|h<<6;p=p+-1|0;if(!p)break;else{F=k;k=j;j=F}}}else{h=k;j=q}h=Dh(g,h)|0;if(((h|0)!=0?(F=Qg(g,h,1)|0,R=c[M>>2]|0,N=c[R+108>>2]|0,O=N&65535,P=c[R+112>>2]|0,Q=c[R+116>>2]|0,R=c[R+120>>2]|0,(F|0)==0):0)?(N>>>16&65535)<<16>>16>=1:0){if(O<<16>>16<=0){h=0;p=G;q=H;break}r=N<<16>>16;k=0;m=0;o=-1;h=0;n=0;t=0;while(1){s=b[R+(t<<1)>>1]|0;if((s|0)>(n|0)){p=(n|0)>(s|0);do if(!(b[J>>1]&1)){if(p){p=o;break}else{p=o;q=n}while(1){F=c[P+(q<<3)+4>>2]|0;E=(p|0)<0|(F|0)<(h|0);p=E?q:p;h=E?F:h;if((q|0)<(s|0))q=q+1|0;else break}}else{if(p){p=o;break}else{p=o;q=n}while(1){F=c[P+(q<<3)+4>>2]|0;E=(p|0)<0|(F|0)>(h|0);p=E?q:p;h=E?F:h;if((q|0)<(s|0))q=q+1|0;else break}}while(0);q=(p|0)==(o|0);k=q?k:n;q=q?m:s}else{q=m;p=o}t=t+1|0;if((t|0)==(r|0)){x=k;y=q;v=p;break}else{m=q;o=p;n=s+1|0}}if((v|0)<=-1){p=G;q=H;break}w=c[P+(v<<3)>>2]|0;q=(a[Q+v>>0]&3)==1?v:-1;p=q;n=v;while(1){m=n;n=(n|0)>(x|0)?n+-1|0:y;k=(c[P+(n<<3)+4>>2]|0)-h|0;k=(k|0)<0?0-k|0:k;if((k|0)>5?(F=(c[P+(n<<3)>>2]|0)-w|0,(((F|0)<0?0-F|0:F)|0)<=(k*20|0)):0){k=q;break}if((a[Q+n>>0]&3)==1){p=n;k=(q|0)<0?n:q}else k=q;if((n|0)==(v|0)){m=v;break}else q=k}o=v;while(1){r=o;o=(o|0)<(y|0)?o+1|0:x;n=P+(o<<3)|0;q=(c[P+(o<<3)+4>>2]|0)-h|0;q=(q|0)<0?0-q|0:q;if((q|0)>5?(F=(c[n>>2]|0)-w|0,(((F|0)<0?0-F|0:F)|0)<=(q*20|0)):0)break;if((a[Q+o>>0]&3)==1){p=(p|0)<0?o:p;k=o}if((o|0)==(v|0)){r=v;break}}if(!(b[J>>1]&4)){v=P;u=Q;s=p;o=m;p=G;q=H;z=81;break}t=c[S>>2]|0;u=(t>>>0)/25|0;F=(c[P+(r<<3)>>2]|0)-(c[P+(m<<3)>>2]|0)|0;if((((F|0)<0?0-F|0:F)|0)>=(u|0)){v=P;u=Q;s=p;o=m;p=G;q=H;z=81;break}if((2-m+r|0)>(y-x|0)){v=P;u=Q;s=p;o=m;p=G;q=H;z=81;break}else o=v;do{o=(o|0)>(x|0)?o+-1|0:y;s=c[P+(o<<3)>>2]|0;q=(o|0)==(v|0)}while(!((s|0)!=(w|0)|q));if(!q){D=n;E=P;F=Q;q=w;C=x;B=y;A=p;z=65;break}}h=a[j>>0]|0;if(!(h<<24>>24)){k=I;n=K;u=G;t=H;break b}}d:do if((z|0)==65){y=t>>>2;w=(s|0)<(q|0);n=r;o=0;z=r;p=G;q=H;e:while(1){if(!(o<<24>>24)){q=(a[F+z>>0]&3)==1?z:-1;x=z;o=1;p=q}else x=n;z=(z|0)<(B|0)?z+1|0:C;s=E+(x<<3)|0;t=c[E+(x<<3)+4>>2]|0;H=h-t|0;do if((((H|0)<0?0-H|0:H)|0)<=(y|0)){v=E+(z<<3)|0;n=(c[E+(z<<3)+4>>2]|0)-t|0;n=(n|0)<0?0-n|0:n;if((n|0)>5?(H=(c[v>>2]|0)-(c[s>>2]|0)|0,(((H|0)<0?0-H|0:H)|0)<=(n*20|0)):0){o=0;break}if((a[F+z>>0]&3)==1){p=(p|0)<0?z:p;q=z}s=c[s>>2]|0;G=c[v>>2]|0;H=G-s|0;if(!((G|0)>(s|0)^w)?(((H|0)<0?0-H|0:H)|0)>=(u|0):0){h=t;r=s;t=x;k=z;break e}}else o=0;while(0);if((z|0)==(m|0)){v=E;u=F;s=A;o=m;z=81;break d}else n=x}o=n*20|0;while(1){n=(k|0)<(B|0)?k+1|0:C;H=(c[E+(n<<3)+4>>2]|0)-h|0;if((((H|0)<0?0-H|0:H)|0)>5?(H=(c[D>>2]|0)-r|0,(((H|0)<0?0-H|0:H)|0)<=(o|0)):0)break;p=((p|0)<0?(a[F+n>>0]&3)==1:0)?n:p;if((n|0)==(m|0)){v=E;u=F;s=p;k=m;o=t;r=m;q=m;z=81;break d}else{k=n;q=n}}v=E;u=F;s=p;k=q;o=t;r=n+-1|0;z=81}while(0);do if((z|0)==81){z=0;if((k|s|0)>-1?(H=(c[v+(k<<3)>>2]|0)-(c[v+(s<<3)>>2]|0)|0,((H|0)<0?0-H|0:H)>>>0>(c[S>>2]|0)>>>3>>>0):0)break;if((a[u+o>>0]&3)!=1){k=I;break c}if((a[u+r>>0]&3)!=1){k=I;break c}}while(0);k=I+1|0;c[U+(I<<2)>>2]=h;h=a[j>>0]|0;if(!(h<<24>>24)){n=K;u=p;t=q;break b}else{I=k;G=p;H=q}}n=K+1|0;c[T+(K<<2)>>2]=h;h=a[j>>0]|0;if(!(h<<24>>24)){u=p;t=q;break}else{K=n;n=q}}}while(0);s=(n|0)==0;if(k|n){r=(k|0)==0;if(n>>>0>1){o=1;do{h=c[T+(o<<2)>>2]|0;p=o;do{q=p;p=p+-1|0;j=T+(p<<2)|0;m=c[j>>2]|0;if((h|0)>=(m|0))break;c[T+(q<<2)>>2]=m;c[j>>2]=h}while((p|0)!=0);o=o+1|0}while((o|0)!=(n|0))}if(k>>>0>1){o=1;do{h=c[U+(o<<2)>>2]|0;p=o;do{q=p;p=p+-1|0;j=U+(p<<2)|0;m=c[j>>2]|0;if((h|0)>=(m|0))break;c[U+(q<<2)>>2]=m;c[j>>2]=h}while((p|0)!=0);o=o+1|0}while((o|0)!=(k|0))}p=c[L>>2]|0;m=f+(p*28|0)+968|0;o=f+(p*28|0)+980|0;c[L>>2]=p+1;do if(!r){j=c[U+(((k|0)/2|0)<<2)>>2]|0;if(s){c[o>>2]=j;c[m>>2]=j;z=103;break}c[m>>2]=j;h=c[T+(((n|0)/2|0)<<2)>>2]|0;c[o>>2]=h;if((h|0)!=(j|0)){k=b[l+4>>1]|0;if((h|0)>(j|0)^(k&1)!=0){K=(h+j|0)/2|0;c[o>>2]=K;c[m>>2]=K}}else z=103}else{z=c[T+(((n|0)/2|0)<<2)>>2]|0;c[o>>2]=z;c[m>>2]=z;z=103}while(0);if((z|0)==103){z=0;k=b[l+4>>1]|0}h=f+(p*28|0)+992|0;j=(k&1)<<1;c[h>>2]=j;if(k&2)c[h>>2]=j|4}l=l+8|0;h=c[l>>2]|0;if((h|0)==385)break;else{p=u;q=t}}}l=48;k=0;j=0;while(1){h=Dh(g,l)|0;if((h|0)!=0?(Og(g,h,2051,U)|0)==0:0){h=c[U>>2]|0;if(j<<24>>24)if((h|0)==(k|0))h=k;else{h=0;break}else j=1}else h=k;l=l+1|0;if(l>>>0>=58){h=1;break}else k=h}a[f+32>>0]=h;Vh(g,V)|0;i=W;return 0}function ak(a,b){a=a|0;b=b|0;var d=0;d=i;c[a+24>>2]=c[b+20>>2];c[a+4>>2]=c[b>>2];c[a+28>>2]=c[b+24>>2];ts(a,b,0);ts(a,b,1);i=d;return}function bk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;f=i;g=c[b+4>>2]|0;c[a+108>>2]=b;d=c[b+28>>2]|0;e=a+100|0;c[e>>2]=d;c[a+4>>2]=c[b+44>>2];c[a+8>>2]=c[b+48>>2];c[a+12>>2]=c[b+748>>2];c[a+16>>2]=c[b+752>>2];h=c[b+24>>2]|0;j=(h|0)==2;b=(h&-2|0)==2&1;b=j|(h|0)==4?b|2:b;h=(h|0)==1;b=h?b:b|4;b=j?b|8:b;if(!h?(c[g+12>>2]&1|0)==0:0){h=d;c[e>>2]=h;h=a+104|0;c[h>>2]=b;i=f;return 0}h=d|1;c[e>>2]=h;h=a+104|0;c[h>>2]=b;i=f;return 0}function ck(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;K=i;j=os(f,g)|0;if(j){g=j;i=K;return g|0}B=f+100|0;j=c[B>>2]|0;do if(!(j&1)){j=us(f,0)|0;if(!j){j=c[B>>2]|0;break}else{g=j;i=K;return g|0}}while(0);if(!(j&2)){j=us(f,1)|0;if(j){g=j;i=K;return g|0}j=c[f+92>>2]|0;z=c[f+84>>2]|0;p=j+(z*48|0)|0;s=c[h+748>>2]|0;if((z|0)>0){t=h+40|0;u=h+964|0;v=f+96|0;do{k=Wg(((c[t>>2]|0)>>>0)/40|0,s)|0;if(c[u>>2]|0){q=j+13|0;r=j+12|0;n=0;m=0;k=(k|0)>32?32:k;do{o=h+(n*28|0)+968|0;l=c[h+(n*28|0)+992>>2]|0;if((l&1|0)!=0?(w=(l&2|0)!=0,(a[q>>0]|0)==(c[v>>2]|0)^w):0){z=(b[j>>1]|0)-(c[o>>2]|0)|0;z=Wg((z|0)<0?0-z|0:z,s)|0;y=(z|0)<(k|0);k=y?z:k;m=y?o:m;if((a[r>>0]&1)!=0&(z|0)!=0?(x=b[j>>1]|0,(x|0)<(c[o>>2]|0)^w):0){o=h+(n*28|0)+980|0;z=x-(c[o>>2]|0)|0;z=Wg((z|0)<0?0-z|0:z,s)|0;y=(z|0)<(k|0);m=y?o:m;k=y?z:k}}n=n+1|0}while(n>>>0<(c[u>>2]|0)>>>0);if(m)c[j+20>>2]=m}j=j+48|0}while(j>>>0

>>0)}}y=f+104|0;z=f+108|0;h=0;a:while(1){do if(!h)if(!(c[B>>2]&1)){r=c[f+64>>2]|0;s=c[f+56>>2]|0;x=r;r=r+(s*48|0)|0;j=0;A=27;break}else{h=h+1|0;continue a}else if((h|0)==1){if(c[B>>2]&2)break a;p=c[f+92>>2]|0;s=c[f+84>>2]|0;r=p+(s*48|0)|0;if((s|0)>0){j=0;q=p;do{k=a[q+12>>0]|0;do if(!(k&4)){m=c[q+20>>2]|0;n=c[q+24>>2]|0;if(m)if(!q)break;else o=q;else{if(!n)break;m=c[n+20>>2]|0;if(!m)break;k=a[n+12>>0]|0;o=n;n=q}l=c[m+8>>2]|0;c[o+8>>2]=l;m=k&255|4;a[o+12>>0]=m;if((n|0)!=0?(c[n+20>>2]|0)==0:0){A=n+12|0;x=d[A>>0]|0;c[n+8>>2]=(vs(c[y>>2]|0,c[z>>2]|0,1,(c[n+4>>2]|0)-(c[o+4>>2]|0)|0,m,x)|0)+l;a[A>>0]=x|4}j=(j|0)==0?q:j}while(0);q=q+48|0}while(q>>>0>>0);x=p;A=27}else A=94}while(0);if((A|0)==27){A=0;if((s|0)>0){w=x;m=0;do{u=w+12|0;v=d[u>>0]|0;do if(!(v&4)){t=c[w+24>>2]|0;if(!t){m=m+1|0;break}if(c[t+20>>2]|0){p=c[t+8>>2]|0;c[w+8>>2]=(vs(c[y>>2]|0,c[z>>2]|0,h,(c[w+4>>2]|0)-(c[t+4>>2]|0)|0,d[t+12>>0]|0,v)|0)+p;a[u>>0]=v|4;break}if(!j){q=t+4|0;o=c[w+4>>2]|0;j=(c[q>>2]|0)-o|0;n=t+12|0;k=vs(c[y>>2]|0,c[z>>2]|0,h,j,v,d[n>>0]|0)|0;l=(k|0)<65;if((k|0)<96){M=(j>>1)+o|0;p=M+32&-64;j=p-(l?32:38)|0;L=M-j|0;p=(l?32:26)|p;l=M-p|0;p=((((L|0)<0?0-L|0:L)|0)<(((l|0)<0?0-l|0:l)|0)?j:p)-((k|0)/2|0)|0;j=t+8|0;c[j>>2]=p+k;k=p}else{j=t+8|0;k=o+32&-64}c[w+8>>2]=k;M=v|4;a[u>>0]=M;c[j>>2]=(vs(c[y>>2]|0,c[z>>2]|0,h,(c[q>>2]|0)-o|0,M,d[n>>0]|0)|0)+k;j=w;break}l=c[w+4>>2]|0;k=l-(c[j+4>>2]|0)+(c[j+8>>2]|0)|0;l=(c[t+4>>2]|0)-l|0;o=(l>>1)+k|0;n=t+12|0;M=d[n>>0]|0;p=vs(c[y>>2]|0,c[z>>2]|0,h,l,v,M)|0;do if(!(M&4))if((p|0)<96){M=o+32&-64;k=(p|0)<65;L=M-(k?32:38)|0;l=o-L|0;M=(k?32:26)|M;o=o-M|0;M=(((l|0)<0?0-l|0:l)|0)<(((o|0)<0?0-o|0:o)|0)?L:M;L=(p|0)/2|0;c[w+8>>2]=M-L;c[t+8>>2]=L+M;break}else{L=k+32&-64;N=p>>1;q=N+(L-o)|0;M=(l+32+k&-64)-p|0;o=N-o+M|0;M=(((q|0)<0?0-q|0:q)|0)<(((o|0)<0?0-o|0:o)|0)?L:M;c[w+8>>2]=M;c[t+8>>2]=M+p;break}else c[w+8>>2]=(c[t+8>>2]|0)-p;while(0);a[u>>0]=v|4;a[n>>0]=d[n>>0]|4;if(w>>>0>x>>>0?(C=w+8|0,D=c[w+-40>>2]|0,(c[C>>2]|0)<(D|0)):0)c[C>>2]=D}while(0);w=w+48|0}while(w>>>0>>0);p=0;q=m}else{p=1;q=0}m=s*48|0;do if(!h){o=(m|0)==576;if((m|0)==288){m=2;n=4;k=x}else if((m|0)==576){m=5;n=9;k=x+48|0}else break;M=c[x+(m*48|0)+4>>2]|0;M=M-(c[x+(n*48|0)+4>>2]|0)+(M-(c[k+4>>2]|0))|0;if((((M|0)<0?0-M|0:M)|0)<8){l=x+(n*48|0)+8|0;m=(c[x+(m*48|0)+8>>2]<<1)-(c[k+8>>2]|0)|0;k=(c[l>>2]|0)-m|0;c[l>>2]=m;l=x+(n*48|0)+24|0;m=c[l>>2]|0;if(m){M=m+8|0;c[M>>2]=(c[M>>2]|0)-k}if(o){m=x+392|0;c[m>>2]=(c[m>>2]|0)-k;m=x+536|0;c[m>>2]=(c[m>>2]|0)-k;m=c[l>>2]|0}M=x+(n*48|0)+12|0;a[M>>0]=d[M>>0]|4;if(m){M=m+12|0;a[M>>0]=d[M>>0]|4}}}while(0);if((q|0)==0&(j|0)!=0|p)A=94;else{m=x;do{s=m+12|0;q=a[s>>0]|0;if(!(q&4)){k=c[m+28>>2]|0;if((k|0)!=0?(E=c[k+4>>2]|0,F=c[m+4>>2]|0,M=E-F|0,(((M|0)<0?0-M|0:M)|0)<80):0){l=(c[k+8>>2]|0)-E+F|0;c[m+8>>2]=l;k=q}else A=74;do if((A|0)==74){A=0;if(!j){l=(c[m+4>>2]|0)+32&-64;c[m+8>>2]=l;k=q;j=m;break}else l=m;while(1){k=l+-48|0;if(k>>>0>>0){p=0;break}if(!(a[l+-36>>0]&4))l=k;else{p=1;break}}o=m;while(1){n=o+48|0;if(n>>>0>=r>>>0)break;if(!(a[o+60>>0]&4))o=n;else{I=n;J=o;A=81;break}}if((A|0)==81?(A=0,p&k>>>0>>0&I>>>0>m>>>0):0){k=c[J+52>>2]|0;n=c[l+-44>>2]|0;l=c[l+-40>>2]|0;if((k|0)==(n|0)){c[m+8>>2]=l;k=q;break}else{l=(Ug((c[m+4>>2]|0)-n|0,(c[J+56>>2]|0)-l|0,k-n|0)|0)+l|0;c[m+8>>2]=l;k=a[s>>0]|0;break}}l=((c[m+4>>2]|0)+16-(c[j+4>>2]|0)&-32)+(c[j+8>>2]|0)|0;c[m+8>>2]=l;k=q}while(0);a[s>>0]=k&255|4;if(m>>>0>x>>>0?(G=c[m+-40>>2]|0,(l|0)<(G|0)):0){c[m+8>>2]=G;l=G}k=m+48|0;if((k>>>0>>0?(a[m+60>>0]&4)!=0:0)?(H=c[m+56>>2]|0,(l|0)>(H|0)):0){c[m+8>>2]=H;m=k}else m=k}else m=m+48|0}while(m>>>0>>0);A=94}}if((A|0)==94){A=0;j=c[f+(h*28|0)+52>>2]|0;m=c[f+(h*28|0)+44>>2]|0;o=j+(m*48|0)|0;m=(m|0)>0;if(!h){if(m)do{m=c[j+12>>2]|0;if(m){l=c[j+44>>2]|0;k=c[m+8>>2]|0;m=j+40|0;while(1){m=c[m>>2]|0;c[m+16>>2]=k;b[m>>1]=e[m>>1]|64;if((m|0)==(l|0))break;else m=m+32|0}}j=j+48|0}while(j>>>0>>0)}else if(m)do{m=c[j+12>>2]|0;if(m){l=c[j+44>>2]|0;k=c[m+8>>2]|0;m=j+40|0;while(1){m=c[m>>2]|0;c[m+20>>2]=k;b[m>>1]=e[m>>1]|128;if((m|0)==(l|0))break;else m=m+32|0}}j=j+48|0}while(j>>>0>>0);ws(f,h);xs(f,h)}h=h+1|0;if((h|0)==2)break}M=c[f+24>>2]|0;j=c[f+28>>2]|0;n=j+(M*40|0)|0;if((M|0)<=0){M=0;i=K;return M|0}m=c[g+8>>2]|0;l=c[g+4>>2]|0;while(1){c[l>>2]=c[j+16>>2];c[l+4>>2]=c[j+20>>2];k=e[j>>1]|0;do if(!(k&1))if(!(k&2)){a[m>>0]=1;break}else{a[m>>0]=2;break}else a[m>>0]=0;while(0);j=j+40|0;if(j>>>0>=n>>>0){j=0;break}else{m=m+1|0;l=l+8|0}}i=K;return j|0}function dk(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;D=i;i=i+208|0;B=D+100|0;A=D;C=c[g+92>>2]|0;c[f+40>>2]=e[g+68>>1];if(Uh(g,1970170211)|0){Vh(g,C)|0;i=D;return 0}ys(f,g);j=3272+(c[(c[f>>2]|0)+4>>2]<<3)|0;h=c[j>>2]|0;if((h|0)!=385){y=g+84|0;do{l=2880+h|0;x=j+4|0;w=(b[x>>1]&1^1)&65535;h=a[l>>0]|0;a:do if(!(h<<24>>24)){k=0;s=0}else{k=0;s=0;while(1){v=k;while(1){while(1){m=l+1|0;k=h&255;if(h<<24>>24<0){do if((h&255)>=224)if((h&255)<240){h=k&15;n=2;k=m;break}else{h=k&7;n=3;k=m;break}else{h=k&31;n=1;k=m}while(0);while(1){l=l+2|0;h=d[k>>0]&63|h<<6;n=n+-1|0;if(!n)break;else{u=k;k=l;l=u}}}else{h=k;l=m}h=Dh(g,h)|0;if(((h|0)!=0?(u=Qg(g,h,1)|0,z=c[y>>2]|0,(u|0)==0):0)?(b[z+110>>1]|0)>=1:0){h=z;t=c[z+120>>2]|0;u=c[z+112>>2]|0;break}h=a[l>>0]|0;if(!(h<<24>>24)){k=v;break a}}h=b[h+108>>1]|0;if(h<<16>>16>0){m=h<<16>>16;p=-1;h=0;q=0;r=0;while(1){o=b[t+(r<<1)>>1]|0;do if((o|0)>(q|0)){E=e[x>>1]|0;k=(E&2|0)!=0;n=(q|0)>(o|0);if(!(E&1))if(k){if(n)break;else k=q;while(1){n=c[u+(k<<3)+4>>2]|0;E=(p|0)<0|(n|0)>(h|0);h=E?n:h;p=E?k:p;if((k|0)<(o|0))k=k+1|0;else break}}else{if(n)break;else k=q;while(1){n=c[u+(k<<3)+4>>2]|0;E=(p|0)<0|(n|0)<(h|0);h=E?n:h;p=E?k:p;if((k|0)<(o|0))k=k+1|0;else break}}else if(k){if(n)break;else k=q;while(1){n=c[u+(k<<3)>>2]|0;E=(p|0)<0|(n|0)>(h|0);h=E?n:h;p=E?k:p;if((k|0)<(o|0))k=k+1|0;else break}}else{if(n)break;else k=q;while(1){n=c[u+(k<<3)>>2]|0;E=(p|0)<0|(n|0)<(h|0);h=E?n:h;p=E?k:p;if((k|0)<(o|0))k=k+1|0;else break}}}while(0);r=r+1|0;if((r|0)==(m|0))break;else q=o+1|0}}else h=0;if(!(b[x>>1]&4)){k=v;break}k=v+1|0;c[B+(v<<2)>>2]=h;h=a[l>>0]|0;if(!(h<<24>>24))break a;else v=k}n=s+1|0;c[A+(s<<2)>>2]=h;h=a[l>>0]|0;if(!(h<<24>>24)){s=n;break}else s=n}}while(0);r=(k|0)==0;if(k|s){q=(s|0)==0;if(s>>>0>1){m=1;do{h=c[A+(m<<2)>>2]|0;o=m;do{p=o;o=o+-1|0;l=A+(o<<2)|0;n=c[l>>2]|0;if((h|0)>=(n|0))break;c[A+(p<<2)>>2]=n;c[l>>2]=h}while((o|0)!=0);m=m+1|0}while((m|0)!=(s|0))}if(k>>>0>1){m=1;do{h=c[B+(m<<2)>>2]|0;p=m;do{o=p;p=p+-1|0;l=B+(p<<2)|0;n=c[l>>2]|0;if((h|0)>=(n|0))break;c[B+(o<<2)>>2]=n;c[l>>2]=h}while((p|0)!=0);m=m+1|0}while((m|0)!=(k|0))}E=f+(w*704|0)+260|0;m=c[E>>2]|0;n=f+(w*704|0)+(m*28|0)+264|0;o=f+(w*704|0)+(m*28|0)+276|0;c[E>>2]=m+1;do if(!q){if(r){E=c[A+(((s|0)/2|0)<<2)>>2]|0;c[o>>2]=E;c[n>>2]=E;break}l=c[B+(((k|0)/2|0)<<2)>>2]|0;c[n>>2]=l;h=c[A+(((s|0)/2|0)<<2)>>2]|0;c[o>>2]=h;if((h|0)!=(l|0)?(e[x>>1]&2|(h|0)<(l|0)|0)!=0:0){E=(h+l|0)/2|0;c[o>>2]=E;c[n>>2]=E}}else{E=c[B+(((k|0)/2|0)<<2)>>2]|0;c[o>>2]=E;c[n>>2]=E}while(0);c[f+(w*704|0)+(m*28|0)+288>>2]=b[x>>1]&2}j=j+8|0;h=c[j>>2]|0}while((h|0)!=385)}l=48;k=0;j=0;while(1){h=Dh(g,l)|0;if((h|0)!=0?(Og(g,h,2051,B)|0)==0:0){h=c[B>>2]|0;if(j<<24>>24)if((h|0)==(k|0))h=k;else{h=0;break}else j=1}else h=k;l=l+1|0;if(l>>>0>=58){h=1;break}else k=h}a[f+32>>0]=h;Vh(g,C)|0;i=D;return 0}function ek(a,b){a=a|0;b=b|0;var d=0;d=i;c[a+24>>2]=c[b+20>>2];c[a+4>>2]=c[b>>2];c[a+28>>2]=c[b+24>>2];zs(a,b,0);zs(a,b,1);i=d;return}function fk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+108>>2]=b;e=c[b+28>>2]|0;c[a+4>>2]=c[b+44>>2];c[a+8>>2]=c[b+48>>2];c[a+12>>2]=c[b+748>>2];c[a+16>>2]=c[b+752>>2];f=c[b+24>>2]|0;d=(f|0)==2;b=(f&-2|0)==2&1;b=d|(f|0)==4?b|2:b;b=(f|0)==1?b:b|4;c[a+100>>2]=e|4;c[a+104>>2]=d?b|8:b;return 0}function gk(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;G=i;j=os(f,g)|0;if(j){g=j;i=G;return g|0}B=f+100|0;j=c[B>>2]|0;do if(!(j&1)){j=As(f,0)|0;if(!j){Bs(f,h,0);j=c[B>>2]|0;break}else{g=j;i=G;return g|0}}while(0);do if(!(j&2)){j=As(f,1)|0;if(!j){Bs(f,h,1);break}else{g=j;i=G;return g|0}}while(0);z=f+104|0;A=f+108|0;y=0;while(1){if((y|0)==1)if(!(c[B>>2]&2))F=13;else break;else if(!y)if(!(c[B>>2]&1))F=13;else{y=y+1|0;continue}if((F|0)==13){F=0;u=f+(y*28|0)+64|0;v=c[u>>2]|0;x=f+(y*28|0)+56|0;s=c[x>>2]|0;w=v+(s*48|0)|0;t=(s|0)>0;if(t){j=0;p=v;do{h=a[p+12>>0]|0;do if(!(h&4)){k=c[p+20>>2]|0;l=c[p+24>>2]|0;if(k)if(!p)break;else m=p;else{if(!l)break;k=c[l+20>>2]|0;if(!k)break;h=a[l+12>>0]|0;m=l;l=p}k=c[k+8>>2]|0;c[m+8>>2]=k;a[m+12>>0]=h&255|4;if((l|0)!=0?(c[l+20>>2]|0)==0:0){c[l+8>>2]=(Cs(c[z>>2]|0,c[A>>2]|0,y,(c[l+4>>2]|0)-(c[m+4>>2]|0)|0)|0)+k;r=l+12|0;a[r>>0]=d[r>>0]|4}j=(j|0)==0?p:j}while(0);p=p+48|0}while(p>>>0>>0);r=(y|0)==1;l=j;h=0;q=v;m=0;o=0;j=0;while(1){k=q+12|0;p=a[k>>0]|0;a:do if(!(p&4)){n=c[q+24>>2]|0;if(!n){k=m;p=o;j=j+1|0;break}do if(m<<24>>24){H=o+64|0;if((c[q+8>>2]|0)>=(H|0)?(c[n+8>>2]|0)>=(H|0):0)break;k=m;p=o;j=j+1|0;break a}while(0);if(c[n+20>>2]|0){H=c[n+8>>2]|0;c[q+8>>2]=(Cs(c[z>>2]|0,c[A>>2]|0,y,(c[q+4>>2]|0)-(c[n+4>>2]|0)|0)|0)+H;a[k>>0]=p&255|4;k=m;p=o;break}if(n>>>0>>0){o=c[n+8>>2]|0;o=(Cs(c[z>>2]|0,c[A>>2]|0,y,(c[q+4>>2]|0)-(c[n+4>>2]|0)|0)|0)+o|0;c[q+8>>2]=o;a[k>>0]=p&255|4;k=1;p=o;break}if(r|(l|0)!=0)Ds(f,q,n,h,y)|0;else h=Ds(f,q,n,0,0)|0;a[k>>0]=d[k>>0]|4;l=n+12|0;a[l>>0]=d[l>>0]|4;l=q;k=1;p=c[n+8>>2]|0}else{k=m;p=o}while(0);q=q+48|0;if(q>>>0>=w>>>0)break;else{m=k;o=p}}}else j=0;h=s*48|0;r=(y|0)==0;do if(r){o=(h|0)==576;if((h|0)==288){k=2;p=4;l=3;m=5;n=v}else if((h|0)==576){k=5;p=9;l=6;m=10;n=v+48|0}else break;h=c[v+(k*48|0)+4>>2]|0;h=h-(c[v+(p*48|0)+4>>2]|0)+(h-(c[n+4>>2]|0))|0;h=(h|0)<0?0-h|0:h;if(((c[n+24>>2]|0)==(n+48|0)?(c[v+(k*48|0)+24>>2]|0)==(v+(l*48|0)|0):0)?(C=v+(p*48|0)+24|0,D=c[C>>2]|0,(D|0)==(v+(m*48|0)|0)&(h|0)<8):0){s=v+(p*48|0)+8|0;m=(c[v+(k*48|0)+8>>2]<<1)-(c[n+8>>2]|0)|0;h=(c[s>>2]|0)-m|0;c[s>>2]=m;if(D){s=D+8|0;c[s>>2]=(c[s>>2]|0)-h}if(o){s=v+392|0;c[s>>2]=(c[s>>2]|0)-h;s=v+536|0;c[s>>2]=(c[s>>2]|0)-h;h=c[C>>2]|0}else h=D;s=v+(p*48|0)+12|0;a[s>>0]=d[s>>0]|4;if(h){s=h+12|0;a[s>>0]=d[s>>0]|4}}}while(0);if(!((j|0)==0|t^1)){l=v;do{h=l+12|0;k=a[h>>0]|0;if((k&4)==0?(E=c[l+28>>2]|0,(E|0)!=0):0){c[l+8>>2]=(c[E+8>>2]|0)-(c[E+4>>2]|0)+(c[l+4>>2]|0);a[h>>0]=k&255|4;j=j+-1|0}l=l+48|0}while(l>>>0>>0);if(j){q=v;do{do if(!(a[q+12>>0]&4)){h=q;while(1){j=h+-48|0;if(j>>>0>>0){p=1;k=0;n=h;break}if(!(a[h+-36>>0]&4))h=j;else{p=0;k=1;n=h;break}}l=q;while(1){h=l+48|0;if(h>>>0>=w>>>0){F=66;break}if(!(a[l+60>>0]&4))l=h;else{k=1;break}}if((F|0)==66){F=0;if(k)k=0;else break}if(p){c[q+8>>2]=(c[l+56>>2]|0)-(c[l+52>>2]|0)+(c[q+4>>2]|0);break}if(!k){c[q+8>>2]=(c[n+-40>>2]|0)-(c[n+-44>>2]|0)+(c[q+4>>2]|0);break}k=b[h>>1]|0;t=b[j>>1]|0;h=t<<16>>16;j=c[n+-40>>2]|0;if(k<<16>>16==t<<16>>16){c[q+8>>2]=j;break}else{c[q+8>>2]=(Ug((b[q>>1]|0)-h|0,(c[l+56>>2]|0)-j|0,(k<<16>>16)-h|0)|0)+j;break}}while(0);q=q+48|0}while(q>>>0>>0)}}k=c[u>>2]|0;j=c[x>>2]|0;o=k+(j*48|0)|0;if(!r)if((y|0)==1)h=(c[z>>2]|0)>>>1&1;else h=0;else h=c[z>>2]&1;if((j|0)>0){q=h<<24>>24==0;do{p=c[k+40>>2]|0;m=k+8|0;if(q){l=(c[m>>2]|0)-(c[k+4>>2]|0)|0;m=p;do{j=m+40|0;h=c[m+44>>2]|0;if(r)while(1){j=c[j>>2]|0;x=j+16|0;c[x>>2]=(c[x>>2]|0)+l;b[j>>1]=e[j>>1]|64;if((j|0)==(h|0))break;else j=j+32|0}else while(1){j=c[j>>2]|0;x=j+20|0;c[x>>2]=(c[x>>2]|0)+l;b[j>>1]=e[j>>1]|128;if((j|0)==(h|0))break;else j=j+32|0}m=c[m+16>>2]|0}while((m|0)!=(p|0))}else{n=p;do{j=n+40|0;h=c[m>>2]|0;l=c[n+44>>2]|0;if(r)while(1){j=c[j>>2]|0;c[j+16>>2]=h;b[j>>1]=e[j>>1]|64;if((j|0)==(l|0))break;else j=j+32|0}else while(1){j=c[j>>2]|0;c[j+20>>2]=h;b[j>>1]=e[j>>1]|128;if((j|0)==(l|0))break;else j=j+32|0}n=c[n+16>>2]|0}while((n|0)!=(p|0))}k=k+48|0}while(k>>>0>>0)}ws(f,y);xs(f,y)}y=y+1|0;if((y|0)==2)break}F=c[f+24>>2]|0;j=c[f+28>>2]|0;m=j+(F*40|0)|0;if((F|0)<=0){g=0;i=G;return g|0}h=c[g+8>>2]|0;l=c[g+4>>2]|0;while(1){c[l>>2]=c[j+16>>2];c[l+4>>2]=c[j+20>>2];k=e[j>>1]|0;do if(!(k&1))if(!(k&2)){a[h>>0]=1;break}else{a[h>>0]=2;break}else a[h>>0]=0;while(0);j=j+40|0;if(j>>>0>=m>>>0){j=0;break}else{h=h+1|0;l=l+8|0}}i=G;return j|0}function hk(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;k=m;f=d+92|0;l=c[f>>2]|0;c[b+40>>2]=e[d+68>>1];if(Uh(d,1970170211)|0){c[f>>2]=0;Vh(d,l)|0;i=m;return 0}ys(b,d);j=48;h=0;g=0;while(1){f=Dh(d,j)|0;if((f|0)!=0?(Og(d,f,2051,k)|0)==0:0){f=c[k>>2]|0;if(g<<24>>24)if((f|0)==(h|0))f=h;else{f=0;break}else g=1}else f=h;j=j+1|0;if(j>>>0>=58){f=1;break}else h=f}a[b+32>>0]=f;Vh(d,l)|0;i=m;return 0}function ik(a,b){a=a|0;b=b|0;var d=0;d=i;c[a+24>>2]=c[b+20>>2];c[a+4>>2]=c[b>>2];c[a+28>>2]=c[b+24>>2];zs(a,b,0);zs(a,b,1);i=d;return}function jk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+108>>2]=b;e=c[b+28>>2]|0;c[a+4>>2]=c[b+44>>2];c[a+8>>2]=c[b+48>>2];c[a+12>>2]=c[b+748>>2];c[a+16>>2]=c[b+752>>2];f=c[b+24>>2]|0;d=(f|0)==2;b=(f&-2|0)==2&1;b=d|(f|0)==4?b|2:b;b=(f|0)==1?b:b|4;c[a+100>>2]=e|4;c[a+104>>2]=d?b|8:b;return 0}function kk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;b=gk(a,b,c)|0;i=d;return b|0}function lk(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+32|0;n=r+28|0;p=r;h=c[b+4>>2]|0;e=c[h+88>>2]|0;o=a+16|0;if(!e){a=6;i=r;return a|0};c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=0;c[p>>2]=h;c[p+4>>2]=c[e+16>>2];c[p+12>>2]=0;c[p+8>>2]=c[e+20>>2];c[p+16>>2]=0;c[p+20>>2]=g>>>16&15;c[p+24>>2]=0;c[a+16>>2]=h;j=h+116|0;b=a+20|0;c[b>>2]=c[j>>2];dh(c[a+24>>2]|0);e=c[b>>2]|0;do if(!e){e=nr(h,b,a)|0;if(!e){e=c[b>>2]|0;c[j>>2]=e;c[h+120>>2]=218;break}else{a=e;i=r;return a|0}}while(0);c[n>>2]=0;if((c[e+4>>2]|0)>>>0<=f>>>0){c[n>>2]=6;a=6;i=r;return a|0}l=(d[(c[e+8>>2]|0)+f>>0]|0)&127;h=c[3672+(l<<2)>>2]|0;k=c[3528+(c[h+8>>2]<<2)>>2]|0;l=e+(l<<2)+16|0;j=c[l>>2]|0;do if(!j){m=c[(c[e>>2]|0)+100>>2]|0;j=ch(m,c[k+4>>2]|0,n)|0;b=c[n>>2]|0;if(b){a=b;i=r;return a|0}c[j>>2]=h;c[j+36>>2]=e;b=c[k+8>>2]|0;if((b|0)!=0?(h=Wd[b&511](j,c[e>>2]|0)|0,c[n>>2]=h,(h|0)!=0):0){e=c[k+16>>2]|0;if(e)Id[e&511](j);eh(m,j);e=c[n>>2]|0;if(!e){j=0;break}i=r;return e|0}c[l>>2]=j}while(0);h=c[3528+(c[(c[j>>2]|0)+8>>2]<<2)>>2]|0;c[a+148>>2]=j;e=c[h+12>>2]|0;if(!e){m=j+4|0;c[m+0>>2]=c[p+0>>2];c[m+4>>2]=c[p+4>>2];c[m+8>>2]=c[p+8>>2];c[m+12>>2]=c[p+12>>2];c[m+16>>2]=c[p+16>>2];c[m+20>>2]=c[p+20>>2];c[m+24>>2]=c[p+24>>2]}else Jd[e&255](j,p);b=g&-2054|2049;e=c[h+20>>2]|0;if((e|0)!=0?(q=Wd[e&511](a+28|0,j)|0,(q|0)!=0):0){a=q;i=r;return a|0}a=Es(o,p,f,b,0)|0;i=r;return a|0}function mk(a){a=a|0;var b=0,d=0;b=i;c[a+12>>2]=2;d=c[c[a+4>>2]>>2]|0;Cga(a+16|0,0,180)|0;c[a+28>>2]=d;a=bh(d,a+24|0)|0;i=b;return a|0}function nk(a){a=a|0;var b=0;b=i;ss(a+28|0);c[a+16>>2]=0;c[a+20>>2]=0;a=a+24|0;fh(c[a>>2]|0);c[a>>2]=0;i=b;return}function ok(a,b){a=a|0;b=b|0;a=i;b=nh(4416,b)|0;i=a;return b|0}function pk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;d=i;c[e>>2]=0;if(!b){b=81;i=d;return b|0}b=Fs(b,333319,f)|0;i=d;return b|0}function qk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;d=i;c[e>>2]=0;if(!b){b=81;i=d;return b|0}b=Fs(b,333312,f)|0;i=d;return b|0}function rk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;k=c[b>>2]|0;j=Gs(k,e,4768)|0;if(!j){k=64;i=l;return k|0}b=c[b>>2]|0;h=Wd[c[b+4>>2]&511](b,40)|0;do if(h){d=h+0|0;e=d+40|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0));e=h+28|0;c[e>>2]=b;d=uj(h,j)|0;c[h+16>>2]=j;if(d){Jd[c[b+8>>2]&255](b,h);break}c[e>>2]=b;d=Fs(h,333319,g)|0;e=c[e>>2]|0;b=c[h+24>>2]|0;if(b)Id[b&511](h);Jd[c[e+8>>2]&255](e,h);if(!d){c[f>>2]=j;k=0;i=l;return k|0}}else d=64;while(0);Jd[c[k+8>>2]&255](k,j);k=d;i=l;return k|0}function sk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;j=Dga(e|0)|0;h=j+18|0;d=c[b>>2]|0;if((h|0)>0){b=Wd[c[d+4>>2]&511](d,h)|0;k=(b|0)==0;d=k?64:0;if(k)k=0;else{Cga(b|0,0,h|0)|0;k=b}}else{k=0;d=h>>31&6}if(d){k=d;i=l;return k|0}Aga(k|0,e|0,j|0)|0;d=k+j+0|0;b=4736|0;h=d+18|0;do{a[d>>0]=a[b>>0]|0;d=d+1|0;b=b+1|0}while((d|0)<(h|0));c[f>>2]=k;c[g>>2]=0;k=0;i=l;return k|0}function tk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;k=i;j=Dga(e|0)|0;h=j+6|0;d=c[b>>2]|0;if((h|0)>0){b=Wd[c[d+4>>2]&511](d,h)|0;l=(b|0)==0;d=l?64:0;if(l)b=0;else Cga(b|0,0,h|0)|0}else{b=0;d=h>>31&6}if(d){f=d;i=k;return f|0}Aga(b|0,e|0,j|0)|0;e=b+j|0;a[e+0>>0]=a[4760]|0;a[e+1>>0]=a[4761]|0;a[e+2>>0]=a[4762]|0;a[e+3>>0]=a[4763]|0;a[e+4>>0]=a[4764]|0;a[e+5>>0]=a[4765]|0;c[f>>2]=b;c[g>>2]=0;f=0;i=k;return f|0}function uk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;b=Gs(c[a>>2]|0,d,4720)|0;if(!b){f=64;i=g;return f|0}c[e>>2]=b;c[f>>2]=0;f=0;i=g;return f|0}function vk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;b=Gs(c[a>>2]|0,d,4704)|0;if(!b){f=64;i=g;return f|0}c[e>>2]=b;c[f>>2]=0;f=0;i=g;return f|0}function wk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;k=c[b>>2]|0;j=Gs(k,e,4696)|0;if(!j){k=64;i=l;return k|0}b=c[b>>2]|0;h=Wd[c[b+4>>2]&511](b,40)|0;do if(h){d=h+0|0;e=d+40|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0));e=h+28|0;c[e>>2]=b;d=uj(h,j)|0;c[h+16>>2]=j;if(d){Jd[c[b+8>>2]&255](b,h);break}c[e>>2]=b;d=Fs(h,333319,g)|0;e=c[e>>2]|0;b=c[h+24>>2]|0;if(b)Id[b&511](h);Jd[c[e+8>>2]&255](e,h);if(!d){c[f>>2]=j;k=0;i=l;return k|0}}else d=64;while(0);Jd[c[k+8>>2]&255](k,j);k=d;i=l;return k|0}function xk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;k=c[b>>2]|0;j=Gs(k,e,4680)|0;if(!j){k=64;i=l;return k|0}b=c[b>>2]|0;h=Wd[c[b+4>>2]&511](b,40)|0;do if(h){d=h+0|0;e=d+40|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0));e=h+28|0;c[e>>2]=b;d=uj(h,j)|0;c[h+16>>2]=j;if(d){Jd[c[b+8>>2]&255](b,h);break}c[e>>2]=b;d=Fs(h,333319,g)|0;e=c[e>>2]|0;b=c[h+24>>2]|0;if(b)Id[b&511](h);Jd[c[e+8>>2]&255](e,h);if(!d){c[f>>2]=j;k=0;i=l;return k|0}}else d=64;while(0);Jd[c[k+8>>2]&255](k,j);k=d;i=l;return k|0}function yk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;d=c[a>>2]|0;if((c[b+72>>2]|0)!=1651078259){e=18;i=f;return e|0}c[a+20>>2]=c[b+100>>2];c[a+24>>2]=c[b+104>>2];e=b+156|0;a=a+28|0;if(!(c[(c[e>>2]|0)+4>>2]&1)){Xi(a);e=Yi(d,b+76|0,a)|0;i=f;return e|0}else{b=b+76|0;c[a+0>>2]=c[b+0>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];e=(c[e>>2]|0)+4|0;c[e>>2]=c[e>>2]&-2;e=0;i=f;return e|0}return 0}function zk(a){a=a|0;var b=0;b=i;_i(c[a>>2]|0,a+28|0)|0;i=b;return}function Ak(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=c[a>>2]|0;c[b+20>>2]=c[a+20>>2];c[b+24>>2]=c[a+24>>2];b=Yi(e,a+28|0,b+28|0)|0;i=d;return b|0}function Bk(a,b){a=a|0;b=b|0;var d=0,e=0;e=c[a+20>>2]<<6;c[b>>2]=e;d=a+28|0;c[b+8>>2]=(c[d+4>>2]<<6)+e;a=c[a+24>>2]<<6;c[b+12>>2]=a;c[b+4>>2]=a-(c[d>>2]<<6);return}function Ck(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=i;e=d+108|0;f=a+20|0;if((c[d+72>>2]|0)!=1869968492){e=18;i=g;return e|0}a=ji(c[a>>2]|0,b[d+110>>1]|0,b[e>>1]|0,f)|0;if(a){e=a;i=g;return e|0}ki(e,f)|0;e=0;i=g;return e|0}function Dk(a){a=a|0;var b=0;b=i;li(c[a>>2]|0,a+20|0)|0;i=b;return}function Ek(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=i;f=a+20|0;e=d+20|0;d=ji(c[a>>2]|0,b[f+2>>1]|0,b[f>>1]|0,e)|0;if(d){i=g;return d|0}ki(f,e)|0;i=g;return d|0}function Fk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(b)Ah(a+20|0,b);if(!d){i=e;return}Bh(a+20|0,c[d>>2]|0,c[d+4>>2]|0);i=e;return}function Gk(a,b){a=a|0;b=b|0;var c=0;c=i;mi(a+20|0,b);i=c;return}function Hk(a,b){a=a|0;b=b|0;var d=0;c[b+72>>2]=1869968492;d=b+108|0;a=a+20|0;c[d+0>>2]=c[a+0>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];c[d+16>>2]=c[a+16>>2];b=b+124|0;c[b>>2]=c[b>>2]&-2;return 0}function Ik(a,b){a=a|0;b=b|0;b=c[a>>2]|0;c[a+16>>2]=c[(c[b+140>>2]|0)+52>>2];c[a+20>>2]=c[b+144>>2];return 0}function Jk(a){a=a|0;c[a+20>>2]=0;c[a+16>>2]=0;return}function Kk(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0;k=i;h=c[a+20>>2]|0;a=c[a+16>>2]|0;if(!a){j=0;i=k;return j|0}else{f=a;g=0}while(1){a=(g+f|0)>>>1;d=c[h+(a<<3)>>2]|0;if((d|0)==(b|0))break;d=d>>>0>b>>>0;f=d?a:f;g=d?g:a+1|0;if(g>>>0>=f>>>0){a=0;j=5;break}}if((j|0)==5){i=k;return a|0}j=(e[h+(a<<3)+4>>1]|0)+1&65535;i=k;return j|0}function Lk(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;k=c[a+20>>2]|0;d=(c[b>>2]|0)+1|0;j=c[a+16>>2]|0;a:do if(!j){a=0;l=5}else{h=j;g=0;while(1){a=(g+h|0)>>>1;f=c[k+(a<<3)>>2]|0;if((d|0)==(f|0))break;f=d>>>0>>0;h=f?a:h;a=f?g:a+1|0;if(a>>>0>=h>>>0){l=5;break a}else g=a}a=(e[k+(a<<3)+4>>1]|0)+1|0}while(0);if((l|0)==5)if(a>>>0>>0){d=c[k+(a<<3)>>2]|0;a=(e[k+(a<<3)+4>>1]|0)+1|0}else{d=0;a=0}c[b>>2]=d;i=m;return a&65535|0}function Mk(a,b){a=a|0;b=b|0;a=i;b=nh(8320,b)|0;i=a;return b|0} +function Nk(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;na=i;i=i+64|0;_=na+56|0;A=na;G=na+4|0;ma=na+8|0;h=na+16|0;la=na+32|0;ja=na+44|0;M=f+100|0;ka=c[M>>2]|0;g=Hh(d,0)|0;c[ma>>2]=g;if(g){la=g;i=na;return la|0}c[h>>2]=1;c[h+4>>2]=1;c[h+8>>2]=0;c[h+12>>2]=8;c[G>>2]=0;F=ch(ka,139324,G)|0;do if(!(c[G>>2]|0)){C=F+36|0;c[C>>2]=h;B=F+12|0;b[B>>1]=32767;c[F+139320>>2]=ka;D=F+139304|0;c[D+0>>2]=0;c[D+4>>2]=0;c[D+8>>2]=0;E=F+139316|0;c[E>>2]=ka;z=c[d+28>>2]|0;c[A>>2]=0;g=hh(z,1,0,1024,0,A)|0;a:do if(!(c[A>>2]|0)){c[_>>2]=45;a[g>>0]=0;t=0;s=1024;j=0;n=0;y=1;h=0;p=0;u=256;b:while(1){q=t;c:while(1){d:do if(!p){p=q;ia=8}else{if(h)v=j;else{v=wi(d,g+n|0,s-n|0)|0;q=v+n|0;n=0}e:do if((q|0)>(p|0)){h=a[g+p>>0]|0;if((h<<24>>24|0)==(u|0)){h=s;j=v;break d}else j=p;while(1){if(h<<24>>24==10|h<<24>>24==13){t=q;w=s;u=n;n=p;break c}j=j+1|0;if((j|0)>=(q|0))break e;h=a[g+j>>0]|0}}while(0);if(!v)break a;n=q-p|0;Bga(g|0,g+p|0,n|0)|0;j=n;h=0;ia=8}while(0);f:do if((ia|0)==8)while(1){ia=0;if(h)v=j;else{v=wi(d,g+n|0,s-n|0)|0;p=v+n|0;n=0}g:do if((p|0)>0){h=a[g>>0]|0;if((h<<24>>24|0)==(u|0)){q=p;h=s;j=v;p=0;break f}else j=0;while(1){if(h<<24>>24==10|h<<24>>24==13){t=p;w=s;u=n;n=0;break c}j=j+1|0;if((j|0)>=(p|0))break g;h=a[g+j>>0]|0}}while(0);if(!v)break a;if(s>>>0>65535)break b;h=s<<1;g=hh(z,1,s,h,g,A)|0;if(!(c[A>>2]|0)){n=s;s=h;j=v;h=0;ia=8}else break a}while(0);s=h;h=1;p=p+1|0;u=256}s=g+j|0;a[s>>0]=0;q=g+n|0;p=a[q>>0]|0;if(!(p<<24>>24==26|p<<24>>24==35)?(j|0)>(n|0):0){p=j-n|0;n=Xd[c[_>>2]&127](q,p,y,_,F)|0;c[A>>2]=n;if((n|0)==-1){n=Xd[c[_>>2]&127](q,p,y,_,F)|0;c[A>>2]=n}if(n)break a}q=y+1|0;a[s>>0]=h;p=j+1|0;if(h<<24>>24==10){s=w;j=v;n=u;y=q;h=1;u=13;continue}else if(h<<24>>24==13){s=w;j=v;n=u;y=q;h=1;u=10;continue}else{s=w;j=v;n=u;y=q;h=1;u=256;continue}}c[A>>2]=6}while(0);eh(z,g);ia=c[A>>2]|0;c[G>>2]=ia;q=F+32|0;g=c[q>>2]|0;if(!ia){if(g){if((c[g+28>>2]|0)!=8)b[g+32>>1]=b[g+4>>1]|0;h=c[g+52>>2]|0;j=c[g+64>>2]|0;if((c[F+4>>2]|0)!=(j+h|0))b[g+278660>>1]=1;if(!((j|h|0)==0?1:(c[c[C>>2]>>2]|0)==0)){n=b[B>>1]|0;h=(b[F+16>>1]|0)-(n<<16>>16)|0;j=g+4|0;if((h|0)!=(e[j>>1]|0)){b[j>>1]=h;b[g+278660>>1]=1}h=g+8|0;if((b[h>>1]|0)!=n<<16>>16){b[h>>1]=n;b[g+278660>>1]=1}h=g+12|0;p=b[F+18>>1]|0;if((b[h>>1]|0)!=p<<16>>16){b[h>>1]=p;b[g+278660>>1]=1}j=g+14|0;h=b[j>>1]|0;n=b[F+20>>1]|0;if(h<<16>>16!=n<<16>>16){b[j>>1]=n;b[g+10>>1]=0-(n&65535);b[g+278660>>1]=1;h=n}h=(h<<16>>16)+(p<<16>>16)|0;j=g+6|0;if((h|0)!=(e[j>>1]|0))b[j>>1]=h}}else g=0;h=c[F>>2]|0;if(h&1)if(!(h&32)){c[G>>2]=185;ia=62;break}else{c[G>>2]=186;ia=62;break}if(!g){c[G>>2]=3;j=D;h=E;g=0;ia=64;break}h=c[g+88>>2]|0;if(!h){j=D;h=E;ia=64;break}h=hh(c[g+278664>>2]|0,1,h,h+1|0,c[g+84>>2]|0,G)|0;g=c[q>>2]|0;c[g+84>>2]=h;if(!(c[G>>2]|0)){a[h+(c[g+88>>2]|0)>>0]=0;j=D;h=E;g=c[q>>2]|0;ia=64;break}}Is(g);eh(ka,c[q>>2]|0);c[q>>2]=0;ia=62}else ia=62;while(0);if((ia|0)==62)if(!F)d=0;else{j=F+139304|0;h=F+139316|0;g=0;ia=64}if((ia|0)==64){h=c[h>>2]|0;if(h){eh(h,c[j>>2]|0);c[j+0>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0}eh(ka,F);d=g}g=c[G>>2]|0;c[ma>>2]=g;if((g&255|0)==176){Ok(f);la=2;i=na;return la|0}if(g){la=g;i=na;return la|0}s=f+140|0;c[s>>2]=d;c[f>>2]=1;c[f+4>>2]=0;p=f+8|0;c[p>>2]=146;A=(d|0)==0;h:do if(!A?(I=(c[d+72>>2]|0)==0,!I):0){g=c[d+128>>2]|0;q=c[g+12>>2]|0;g=c[g+4>>2]|0;j=q+((3000791075%(g>>>0)|0)<<2)|0;h=c[j>>2]|0;if(h){n=q+(g+-1<<2)|0;do{g=c[h>>2]|0;if((a[g>>0]|0)==83?(qga(g,5024)|0)==0:0){H=h;ia=77;break}h=j+-4|0;j=h>>>0>>0?n:h;h=c[j>>2]|0}while((h|0)!=0);if((((((ia|0)==77?(H|0)!=0:0)?(J=c[d+80>>2]|0,K=c[H+4>>2]|0,(J+(K<<4)|0)!=0):0)?(c[J+(K<<4)+4>>2]|0)==1:0)?(L=c[J+(K<<4)+12>>2]|0,(L|0)!=0):0)?(L=a[L>>0]|0,L<<24>>24==99|L<<24>>24==67|L<<24>>24==109|L<<24>>24==77):0)c[p>>2]=150;if(I){ia=94;break}}h=c[d+128>>2]|0;p=c[h+12>>2]|0;h=c[h+4>>2]|0;j=p+((1183963782%(h>>>0)|0)<<2)|0;g=c[j>>2]|0;if(g){n=p+(h+-1<<2)|0;while(1){h=c[g>>2]|0;if((a[h>>0]|0)==70?(qga(h,5032)|0)==0:0)break;g=j+-4|0;j=g>>>0

>>0?n:g;g=c[j>>2]|0;if(!g){ia=94;break h}}if(((g|0)!=0?(N=c[d+80>>2]|0,O=c[g+4>>2]|0,(N+(O<<4)|0)!=0):0)?(P=c[N+(O<<4)+12>>2]|0,(P|0)!=0):0){c[f+20>>2]=Ui(ka,P,ma)|0;g=c[ma>>2]|0;if(!g){w=c[s>>2]|0;break}else{la=g;i=na;return la|0}}else ia=94}else ia=94}else ia=94;while(0);if((ia|0)==94){c[f+20>>2]=0;w=d}c[_>>2]=0;z=c[M>>2]|0;q=f+12|0;c[q>>2]=0;if((w|0)!=0?(c[w+72>>2]|0)!=0:0){s=c[w+128>>2]|0;v=c[s+12>>2]|0;s=c[s+4>>2]|0;h=v+((78981326%(s>>>0)|0)<<2)|0;g=c[h>>2]|0;i:do if(g){n=v+(s+-1<<2)|0;while(1){j=c[g>>2]|0;if((a[j>>0]|0)==83?(qga(j,5200)|0)==0:0)break;g=h+-4|0;h=g>>>0>>0?n:g;g=c[h>>2]|0;if(!g){p=2;u=0;break i}}if(((((g|0)!=0?(Q=c[w+80>>2]|0,R=c[g+4>>2]|0,(Q+(R<<4)|0)!=0):0)?(c[Q+(R<<4)+4>>2]|0)==1:0)?(S=c[Q+(R<<4)+12>>2]|0,(S|0)!=0):0)?(Q=a[S>>0]|0,Q<<24>>24==105|Q<<24>>24==73|Q<<24>>24==111|Q<<24>>24==79):0){c[q>>2]=1;g=a[S>>0]|0;if(g<<24>>24==79){p=3;u=5208}else{p=3;u=g<<24>>24==111?5208:5216}}else{p=2;u=0}}else{p=2;u=0}while(0);h=v+((4260511730%(s>>>0)|0)<<2)|0;g=c[h>>2]|0;j:do if(g){n=v+(s+-1<<2)|0;while(1){j=c[g>>2]|0;if((a[j>>0]|0)==87?(qga(j,5224)|0)==0:0)break;g=h+-4|0;h=g>>>0>>0?n:g;g=c[h>>2]|0;if(!g){t=0;break j}}if(((((g|0)!=0?(T=c[w+80>>2]|0,U=c[g+4>>2]|0,(T+(U<<4)|0)!=0):0)?(c[T+(U<<4)+4>>2]|0)==1:0)?(V=c[T+(U<<4)+12>>2]|0,(V|0)!=0):0)?(Q=a[V>>0]|0,Q<<24>>24==98|Q<<24>>24==66):0){c[q>>2]=p;t=5240}else t=0}else t=0;while(0);g=v+((41411398%(s>>>0)|0)<<2)|0;h=c[g>>2]|0;k:do if(h){n=v+(s+-1<<2)|0;while(1){j=c[h>>2]|0;if((a[j>>0]|0)==83?(qga(j,5248)|0)==0:0)break;h=g+-4|0;g=h>>>0>>0?n:h;h=c[g>>2]|0;if(!h){x=0;break k}}if(!(((((h|0)!=0?(W=c[w+80>>2]|0,X=c[h+4>>2]|0,(W+(X<<4)|0)!=0):0)?(c[W+(X<<4)+4>>2]|0)==1:0)?(x=c[W+(X<<4)+12>>2]|0,(x|0)!=0):0)?(X=a[x>>0]|0,!(X<<24>>24==110|X<<24>>24==78|X<<24>>24==0)):0))x=0}else x=0;while(0);p=v+((657458935%(s>>>0)|0)<<2)|0;h=c[p>>2]|0;l:do if(h){g=v+(s+-1<<2)|0;while(1){n=c[h>>2]|0;if((a[n>>0]|0)==65?(qga(n,5264)|0)==0:0)break;h=p+-4|0;p=h>>>0>>0?g:h;h=c[p>>2]|0;if(!h){r=0;q=0;h=0;break l}}if(((((h|0)!=0?(Y=c[w+80>>2]|0,Z=c[h+4>>2]|0,(Y+(Z<<4)|0)!=0):0)?(c[Y+(Z<<4)+4>>2]|0)==1:0)?(r=c[Y+(Z<<4)+12>>2]|0,(r|0)!=0):0)?(Z=a[r>>0]|0,!(Z<<24>>24==110|Z<<24>>24==78|Z<<24>>24==0)):0){h=Dga(r|0)|0;q=h;h=h+1|0}else{r=0;q=0;h=0}}else{r=0;q=0;h=0}while(0);if(!t){s=1;n=0;g=0}else{Z=Dga(t|0)|0;s=0;n=t;g=Z;h=h+1+Z|0}if(!u){t=1;p=0;j=0}else{Z=Dga(u|0)|0;t=0;p=u;j=Z;h=h+1+Z|0}if(!x){w=n;v=g;x=0;y=0;g=q;n=r;u=1}else{Z=Dga(x|0)|0;w=n;v=g;y=Z;g=q;n=r;u=0;h=h+1+Z|0}}else{w=0;v=0;p=0;j=0;x=0;y=0;g=0;n=0;u=1;s=1;t=1;h=0}r=(h|0)==0;q=r?7:g;g=r?5280:n;h=ch(z,r?8:h,_)|0;r=f+24|0;c[r>>2]=h;n=c[_>>2]|0;if(n){c[ma>>2]=n;la=n;i=na;return la|0}if(g){Aga(h|0,g|0,q|0)|0;if(q){g=0;do{n=h+g|0;if((a[n>>0]|0)==32)a[n>>0]=45;g=g+1|0}while((g|0)!=(q|0))}h=h+q|0}if(!s){if((h|0)!=(c[r>>2]|0)){a[h>>0]=32;h=h+1|0}Aga(h|0,w|0,v|0)|0;h=h+v|0}if(!t){if((h|0)!=(c[r>>2]|0)){a[h>>0]=32;h=h+1|0}Aga(h|0,p|0,j|0)|0;h=h+j|0}if(!u){if((h|0)!=(c[r>>2]|0)){a[h>>0]=32;h=h+1|0}Aga(h|0,x|0,y|0)|0;if(y){p=0;do{n=h+p|0;if((a[n>>0]|0)==32)a[n>>0]=45;p=p+1|0}while((p|0)!=(y|0))}h=h+y|0}a[h>>0]=0;h=c[_>>2]|0;c[ma>>2]=h;if(h){la=h;i=na;return la|0}r=d+48|0;c[f+16>>2]=(c[r>>2]|0)+1;c[f+28>>2]=1;q=hh(ka,16,0,1,0,ma)|0;c[f+32>>2]=q;h=c[ma>>2]|0;if(h){la=h;i=na;return la|0};c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;p=(c[d+44>>2]|0)+(c[d+40>>2]|0)|0;b[q>>1]=p;m:do if((!A?(c[d+72>>2]|0)!=0:0)?($=c[d+128>>2]|0,aa=c[$+12>>2]|0,$=c[$+4>>2]|0,o=aa+((3825651940%($>>>0)|0)<<2)|0,m=c[o>>2]|0,(m|0)!=0):0){n=aa+($+-1<<2)|0;while(1){h=c[m>>2]|0;if((a[h>>0]|0)==65?(qga(h,5048)|0)==0:0)break;m=o+-4|0;o=m>>>0>>0?n:m;m=c[o>>2]|0;if(!m){ia=184;break m}}if((m|0)!=0?(ba=c[d+80>>2]|0,ca=c[m+4>>2]|0,(ba+(ca<<4)|0)!=0):0){o=((c[ba+(ca<<4)+12>>2]|0)+5|0)/10|0;b[q+2>>1]=o}else ia=184}else ia=184;while(0);if((ia|0)==184){o=(p<<16>>15|0)/3|0;b[q+2>>1]=o}n:do if((!A?(c[d+72>>2]|0)!=0:0)?(da=c[d+128>>2]|0,fa=c[da+12>>2]|0,da=c[da+4>>2]|0,l=fa+((1780881776%(da>>>0)|0)<<2)|0,k=c[l>>2]|0,(k|0)!=0):0){h=fa+(da+-1<<2)|0;while(1){m=c[k>>2]|0;if((a[m>>0]|0)==80?(qga(m,5064)|0)==0:0)break;k=l+-4|0;l=k>>>0>>0?h:k;k=c[l>>2]|0;if(!k){ia=195;break n}}if((k|0)!=0?(ga=c[d+80>>2]|0,ha=c[k+4>>2]|0,(ga+(ha<<4)|0)!=0):0){j=(((c[ga+(ha<<4)+12>>2]|0)*460800|0)+36135|0)/72270|0;c[q+4>>2]=j}else ia=195}else ia=195;while(0);if((ia|0)==195){j=o<<16>>10;c[q+4>>2]=j}do if(A){c[q+12>>2]=j;k=j;ia=231}else{g=(c[d+72>>2]|0)==0;if(g){c[q+12>>2]=j;k=j;ia=231;break}m=c[d+128>>2]|0;o=c[m+12>>2]|0;m=c[m+4>>2]|0;l=o+((486426170%(m>>>0)|0)<<2)|0;k=c[l>>2]|0;if(k){h=o+(m+-1<<2)|0;while(1){m=c[k>>2]|0;if((a[m>>0]|0)==80?(qga(m,5080)|0)==0:0){ia=205;break}k=l+-4|0;l=k>>>0>>0?h:k;k=c[l>>2]|0;if(!k){k=0;break}}do if((ia|0)==205){if(!k){k=0;break}m=c[d+80>>2]|0;k=c[k+4>>2]|0;if(!(m+(k<<4)|0)){k=0;break}k=c[m+(k<<4)+12>>2]<<16>>10;c[q+12>>2]=k}while(0);if(g){h=0;l=0}else ia=209}else{k=0;ia=209}o:do if((ia|0)==209){l=c[d+128>>2]|0;n=c[l+12>>2]|0;l=c[l+4>>2]|0;h=n+((2286220677%(l>>>0)|0)<<2)|0;m=c[h>>2]|0;p:do if(!m)p=0;else{o=n+(l+-1<<2)|0;while(1){l=c[m>>2]|0;if((a[l>>0]|0)==82?(qga(l,5096)|0)==0:0)break;m=h+-4|0;h=m>>>0>>0?o:m;m=c[h>>2]|0;if(!m){p=0;break p}}if(!m){p=0;break}l=c[d+80>>2]|0;m=c[m+4>>2]|0;if(!(l+(m<<4)|0)){p=0;break}p=c[l+(m<<4)+12>>2]<<16>>16}while(0);if(g){h=p;l=0;break}l=c[d+128>>2]|0;n=c[l+12>>2]|0;l=c[l+4>>2]|0;h=n+((2286220678%(l>>>0)|0)<<2)|0;m=c[h>>2]|0;if(!m){h=p;l=0;break}o=n+(l+-1<<2)|0;while(1){l=c[m>>2]|0;if((a[l>>0]|0)==82?(qga(l,5112)|0)==0:0)break;m=h+-4|0;h=m>>>0>>0?o:m;m=c[h>>2]|0;if(!m){h=p;l=0;break o}}if(!m){h=p;l=0;break}l=c[d+80>>2]|0;m=c[m+4>>2]|0;if(!(l+(m<<4)|0)){h=p;l=0;break}h=p;l=c[l+(m<<4)+12>>2]&65535}while(0);m=q+12|0;if(!k){c[m>>2]=j;if(!(l<<16>>16)){k=j;ia=231;break}k=(ea(j,l<<16>>16)|0)/72|0;c[m>>2]=k}if((h|0)==0|l<<16>>16==0){ia=231;break}c[q+8>>2]=(ea(k,h)|0)/(l<<16>>16|0)|0}while(0);if((ia|0)==231)c[q+8>>2]=k;o=c[d+56>>2]|0;n=hh(ka,8,0,c[r>>2]|0,0,ma)|0;c[f+144>>2]=n;k=c[ma>>2]|0;if(k){la=k;i=na;return la|0}h=f+164|0;c[h>>2]=0;k=c[r>>2]|0;if(k){m=c[d+36>>2]|0;l=0;do{aa=c[o+(l*36|0)+4>>2]|0;c[n+(l<<3)>>2]=aa;b[n+(l<<3)+4>>1]=l;if((aa|0)==(m|0))c[h>>2]=l;l=l+1|0}while(l>>>0>>0)}q:do if(!A){n=(c[d+72>>2]|0)==0;if(n)break;m=c[d+128>>2]|0;o=c[m+12>>2]|0;m=c[m+4>>2]|0;l=o+((3781719536%(m>>>0)|0)<<2)|0;k=c[l>>2]|0;if(k){h=o+(m+-1<<2)|0;while(1){m=c[k>>2]|0;if((a[m>>0]|0)==67?(qga(m,5128)|0)==0:0){ia=245;break}k=l+-4|0;l=k>>>0>>0?h:k;k=c[l>>2]|0;if(!k){k=0;break}}do if((ia|0)==245){if(!k){k=0;break}k=(c[d+80>>2]|0)+(c[k+4>>2]<<4)|0}while(0);if(n)break}else k=0;l=c[d+128>>2]|0;o=c[l+12>>2]|0;l=c[l+4>>2]|0;h=o+((1888187142%(l>>>0)|0)<<2)|0;m=c[h>>2]|0;if(!m)break;n=o+(l+-1<<2)|0;while(1){l=c[m>>2]|0;if((a[l>>0]|0)==67?(qga(l,5152)|0)==0:0)break;m=h+-4|0;h=m>>>0>>0?n:m;m=c[h>>2]|0;if(!m)break q}if(!m)break;l=c[d+80>>2]|0;m=c[m+4>>2]|0;if(!((k|0)!=0&(l+(m<<4)|0)!=0))break;if((c[k+4>>2]|0)!=1)break;if((c[l+(m<<4)+4>>2]|0)!=1)break;h=k+12|0;if(!(c[h>>2]|0))break;k=c[l+(m<<4)+12>>2]|0;if(!k)break;m=f+132|0;c[m>>2]=Ui(ka,k,ma)|0;k=c[ma>>2]|0;if(k){la=k;i=na;return la|0}k=Ui(ka,c[h>>2]|0,ma)|0;c[f+136>>2]=k;l=c[ma>>2]|0;if(l){la=l;i=na;return la|0}aa=a[k>>0]|0;do if(aa<<24>>24==73|aa<<24>>24==105){aa=a[k+1>>0]|0;if(!(aa<<24>>24==83|aa<<24>>24==115)){m=0;break}aa=a[k+2>>0]|0;if(!(aa<<24>>24==79|aa<<24>>24==111)){m=0;break}k=k+3|0;if(qga(k,5176)|0){if(qga(k,5184)|0){m=0;break}if(qga(c[m>>2]|0,5192)|0){m=0;break}}m=1}else m=0;while(0);c[la>>2]=f;k=la+4|0;c[k>>2]=0;l=la+8|0;b[l>>1]=0;h=la+10|0;b[h>>1]=0;if(m){c[k>>2]=1970170211;b[l>>1]=3;b[h>>1]=1}la=Wh(4880,0,la,0)|0;c[ma>>2]=la;i=na;return la|0}while(0);c[ja>>2]=f;c[ja+4>>2]=1094995778;b[ja+8>>1]=7;b[ja+10>>1]=0;k=Wh(4880,0,ja,0)|0;c[ma>>2]=k;if(!(c[f+36>>2]|0)){la=k;i=na;return la|0}c[f+92>>2]=c[c[f+40>>2]>>2];la=k;i=na;return la|0}function Ok(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;if(!a){i=b;return}e=c[a+100>>2]|0;d=a+140|0;Is(c[d>>2]|0);f=a+144|0;eh(e,c[f>>2]|0);c[f>>2]=0;f=a+132|0;eh(e,c[f>>2]|0);c[f>>2]=0;f=a+136|0;eh(e,c[f>>2]|0);c[f>>2]=0;f=a+20|0;eh(e,c[f>>2]|0);c[f>>2]=0;f=a+24|0;eh(e,c[f>>2]|0);c[f>>2]=0;a=a+32|0;eh(e,c[a>>2]|0);c[a>>2]=0;eh(e,c[d>>2]|0);c[d>>2]=0;i=b;return}function Pk(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;n=i;h=c[f>>2]|0;l=h+140|0;f=c[l>>2]|0;m=e[f+278662>>1]|0;if(!h){m=6;i=n;return m|0}if((c[h+16>>2]|0)>>>0<=g>>>0){m=6;i=n;return m|0}if(!g)h=c[h+164>>2]|0;else h=g+-1|0;r=c[f+56>>2]|0;f=b[r+(h*36|0)+10>>1]|0;q=b[r+(h*36|0)+12>>1]|0;g=b[r+(h*36|0)+16>>1]|0;j=b[r+(h*36|0)+20>>1]|0;o=c[r+(h*36|0)+24>>2]|0;p=c[r+(h*36|0)+28>>2]|0;k=d+76|0;c[k>>2]=e[r+(h*36|0)+14>>1];h=d+80|0;c[h>>2]=q&65535;c[d+84>>2]=p;vh(d,o);if((m|0)==4)a[d+94>>0]=4;else if((m|0)==2)a[d+94>>0]=3;else if((m|0)==1)a[d+94>>0]=1;else if((m|0)==8){a[d+94>>0]=2;b[d+92>>1]=256}c[d+72>>2]=1651078259;p=g<<16>>16;c[d+100>>2]=p;q=j<<16>>16;c[d+104>>2]=q;r=d+24|0;c[d+40>>2]=(f&65535)<<6;c[d+32>>2]=p<<6;c[d+36>>2]=q<<6;c[r>>2]=c[h>>2]<<6;c[d+28>>2]=c[k>>2]<<6;Nh(r,(e[(c[l>>2]|0)+6>>1]|0)<<6);r=0;i=n;return r|0}function Qk(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;j=c[a>>2]|0;h=c[j+32>>2]|0;k=c[j+140>>2]|0;f=c[b+16>>2]|0;d=c[b+8>>2]|0;if(f)d=((ea(d,f)|0)+36|0)/72|0;g=d+32>>6;d=c[b>>2]|0;do if((d|0)==1){d=k+40|0;f=k+44|0;if((g|0)!=((c[f>>2]|0)+(c[d>>2]|0)|0)){k=23;i=l;return k|0}}else if(!d)if((g|0)==((c[h+12>>2]|0)+32>>6|0)){f=k+44|0;d=k+40|0;break}else{k=23;i=l;return k|0}else{k=7;i=l;return k|0}while(0);Oh(j,0);c[a+24>>2]=c[d>>2]<<6;c[a+28>>2]=0-(c[f>>2]|0)<<6;c[a+36>>2]=(e[k+4>>1]|0)<<6;k=0;i=l;return k|0}function Rk(a,b){a=a|0;b=b|0;var d=0,f=0,g=0;d=i;g=c[a>>2]|0;f=c[g+140>>2]|0;Oh(g,b);c[a+24>>2]=c[f+40>>2]<<6;c[a+28>>2]=0-(c[f+44>>2]|0)<<6;c[a+36>>2]=(e[f+4>>1]|0)<<6;i=d;return 0}function Sk(a,b,d){a=a|0;b=b|0;d=d|0;c[b>>2]=c[a+132>>2];c[d>>2]=c[a+136>>2];return 0}function Tk(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;l=c[b+140>>2]|0;if(!l){e=6;i=n;return e|0}if((c[l+72>>2]|0)==0|(d|0)==0){e=6;i=n;return e|0}k=a[d>>0]|0;if(!(k<<24>>24)){e=6;i=n;return e|0}h=c[l+128>>2]|0;j=c[h+12>>2]|0;f=k;g=d;b=0;do{g=g+1|0;b=(b*31|0)+(f<<24>>24)|0;f=a[g>>0]|0}while(f<<24>>24!=0);f=c[h+4>>2]|0;g=j+(((b>>>0)%(f>>>0)|0)<<2)|0;b=c[g>>2]|0;if(!b){e=6;i=n;return e|0}h=j+(f+-1<<2)|0;while(1){f=c[b>>2]|0;if((a[f>>0]|0)==k<<24>>24?(qga(f,d)|0)==0:0)break;b=g+-4|0;g=b>>>0>>0?h:b;b=c[g>>2]|0;if(!b){b=6;m=17;break}}if((m|0)==17){i=n;return b|0}if(!b){e=6;i=n;return e|0}g=c[l+80>>2]|0;b=c[b+4>>2]|0;if(!(g+(b<<4)|0)){e=6;i=n;return e|0}f=c[g+(b<<4)+4>>2]|0;if((f|0)==1){c[e>>2]=1;c[e+4>>2]=c[g+(b<<4)+12>>2];e=0;i=n;return e|0}else if((f|0)==3){c[e>>2]=3;c[e+4>>2]=c[g+(b<<4)+12>>2];e=0;i=n;return e|0}else if((f|0)==2){c[e>>2]=2;c[e+4>>2]=c[g+(b<<4)+12>>2];e=0;i=n;return e|0}else{e=6;i=n;return e|0}return 0}function Uk(b){b=b|0;c[b+28>>2]=1;a[b+32>>0]=0;c[b+36>>2]=500;c[b+40>>2]=400;c[b+44>>2]=1e3;c[b+48>>2]=275;c[b+52>>2]=1667;c[b+56>>2]=275;c[b+60>>2]=2333;c[b+64>>2]=0;return 0}function Vk(a){a=a|0;return}function Wk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;d=nh(12224,b)|0;if(!d)if(((a|0)!=0?(e=c[a+4>>2]|0,(e|0)!=0):0)?(f=ci(e,8568)|0,(f|0)!=0):0)d=Wd[c[(c[f>>2]|0)+32>>2]&511](f,b)|0;else d=0;i=g;return d|0}function Xk(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=i;i=i+112|0;O=S+96|0;J=S;K=S+4|0;E=S+8|0;F=S+16|0;p=S+48|0;R=S+80|0;Q=S+84|0;l=g+96|0;r=c[(c[l>>2]|0)+4>>2]|0;m=di(r,8568)|0;do if(m){G=ei(c[l>>2]|0,8576)|0;D=di(r,8600)|0;N=Hh(f,0)|0;c[R>>2]=N;if(!N){N=Xd[c[m+4>>2]&127](f,g,h,j,k)|0;c[R>>2]=N;if(!N){if((c[g+148>>2]|0)!=1330926671){c[R>>2]=2;break}if((h|0)<0){Q=0;i=S;return Q|0}n=g+504|0;N=ce[c[n>>2]&255](g,1751474532,f,0)|0;c[R>>2]=N;if(!N){N=Xd[c[m+8>>2]&127](f,g,h,j,k)|0;c[R>>2]=N;if(!N)l=0;else break}else{N=Wd[c[m+32>>2]&511](g,f)|0;c[R>>2]=N;if(!N)l=1;else break}N=ce[c[n>>2]&255](g,1128678944,f,0)|0;c[R>>2]=N;if(!N){H=l;N=1}else break}else{N=Hh(f,0)|0;c[R>>2]=N;if(N)break;c[R>>2]=0;H=1;N=0}M=c[g+100>>2]|0;P=ch(M,2980,R)|0;if(!(c[R>>2]|0)){c[g+652>>2]=P;z=f+28|0;m=c[z>>2]|0;Cga(P|0,0,2980)|0;c[F+0>>2]=0;c[F+4>>2]=0;c[F+8>>2]=0;c[F+12>>2]=0;c[F+16>>2]=0;c[F+20>>2]=0;c[F+24>>2]=0;c[F+28>>2]=0;c[P>>2]=f;c[P+4>>2]=m;n=P+1324|0;y=ui(f)|0;C=Li(f,8640,P)|0;c[E>>2]=C;a:do if(!C){if(((a[P+16>>0]|0)==1?(C=a[P+18>>0]|0,q=C&255,(C&255)>=4):0)?(d[P+19>>0]|0)<=4:0){C=qi(f,q+-4|0)|0;c[E>>2]=C;if(C)break;C=P+20|0;B=Js(C,f,0)|0;c[E>>2]=B;if(B)break;q=P+1208|0;B=Js(q,f,0)|0;c[E>>2]=B;if(B)break;B=Js(F,f,1)|0;c[E>>2]=B;if(B)break;o=P+84|0;B=Js(o,f,1)|0;c[E>>2]=B;if(B)break;B=Ks(F,P+1316|0,P+1320|0)|0;c[E>>2]=B;if(B)break;c[P+1312>>2]=c[F+8>>2];l=c[P+28>>2]|0;do if(!(H<<24>>24))if(l>>>0>1){c[E>>2]=3;break a}else B=0;else if((l|0)>(h|0)){c[P+8>>2]=l;B=h;break}else{c[E>>2]=6;break a}while(0);if((h|0)<0)break;x=Ls(n,q,B,f,y,r)|0;c[E>>2]=x;if(x)break;k=P+1436|0;x=Hh(f,(c[k>>2]|0)+y|0)|0;c[E>>2]=x;if(x)break;x=Js(P+1176|0,f,0)|0;c[E>>2]=x;if(x)break;x=P+1456|0;if((c[x>>2]|0)!=65535){w=Hh(f,(c[P+1488>>2]|0)+y|0)|0;c[E>>2]=w;if(w)break;w=Js(p,f,0)|0;c[E>>2]=w;if(w)break;j=p+8|0;l=c[j>>2]|0;b:do if(l>>>0>256)l=0;else{c[P+1896>>2]=l;n=hh(m,572,0,l,0,E)|0;l=c[E>>2]|0;if(l)break;l=c[j>>2]|0;if(l){q=0;do{c[P+(q<<2)+1900>>2]=n+(q*572|0);q=q+1|0}while((q|0)!=(l|0));q=0;do{l=Ls(c[P+(q<<2)+1900>>2]|0,p,q,f,y,r)|0;c[E>>2]=l;q=q+1|0;if(l)break b}while(q>>>0<(c[j>>2]|0)>>>0)}n=c[P+1184>>2]|0;l=Hh(f,(c[P+1492>>2]|0)+y|0)|0;c[O>>2]=l;do if(!l){q=Hi(f,O)|0;l=c[O>>2]|0;if(l)break;a[P+2924>>0]=q;c[P+2944>>2]=0;l=q&255;if(!l){c[P+2936>>2]=n;l=n}else if((l|0)==3){q=ri(f,O)|0;l=c[O>>2]|0;if(l)break;l=((q&65535)*3|0)+2|0;c[P+2936>>2]=l}else{c[O>>2]=3;l=3;break}l=xi(f,l,P+2932|0)|0;c[O>>2]=l}while(0);c[E>>2]=l}while(0);n=c[p>>2]|0;if(n){l=c[n+28>>2]|0;q=p+28|0;if(c[q>>2]|0)zi(n,q);eh(l,c[p+24>>2]|0);c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=0;c[p+20>>2]=0;c[p+24>>2]=0;c[p+28>>2]=0;l=c[E>>2]|0}if(l)break}else c[P+1896>>2]=0;if(!(c[k>>2]|0)){c[E>>2]=3;break}w=P+12|0;c[w>>2]=c[P+1184>>2];v=Ks(o,P+1308|0,0)|0;c[E>>2]=v;if(v)break;t=c[w>>2]|0;c:do if(t){if((c[x>>2]|0)==65535)s=0;else s=H<<24>>24!=0&1;u=P+1152|0;l=c[P+1428>>2]|0;v=c[z>>2]|0;c[J>>2]=0;d:do if(l>>>0>2){L=l+y|0;o=P+1156|0;c[o>>2]=L;L=Hh(f,L)|0;c[J>>2]=L;if(L){A=o;L=114;break}c[u>>2]=(Hi(f,J)|0)&255;if(c[J>>2]|0){A=o;L=114;break}l=hh(v,2,0,t,0,J)|0;p=P+1160|0;c[p>>2]=l;if(c[J>>2]|0){A=o;L=114;break}b[l>>1]=0;l=c[u>>2]|0;if(!l){L=yi(f,(t<<1)+-2|0)|0;c[J>>2]=L;if(L){A=o;L=114;break}if(t>>>0>1){l=1;do{L=Di(f)|0;b[(c[p>>2]|0)+(l<<1)>>1]=L;l=l+1|0}while((l|0)!=(t|0))}Bi(f);L=100;break}else if((l|0)==2|(l|0)==1){if(t>>>0>1)l=1;else{L=100;break}while(1){m=ri(f,J)|0;if(c[J>>2]|0){A=o;L=114;break d}if((c[u>>2]|0)==2){q=(ri(f,J)|0)&65535;if(c[J>>2]|0){A=o;L=114;break d}}else{q=(Hi(f,J)|0)&255;if(c[J>>2]|0){A=o;L=114;break d}}n=m&65535;if(l>>>0>>0){k=c[p>>2]|0;j=l-t|0;r=~(n>>>0>(q^65535)>>>0?n^65535:q);r=j>>>0>r>>>0?j:r;j=0-r|0;q=m;n=0;m=l;while(1){b[k+(m<<1)>>1]=q;n=n+1|0;if((n|0)==(j|0))break;else{q=q+1<<16>>16;m=m+1|0}}l=l-r|0}if(l>>>0>=t>>>0){L=100;break}}}else{c[J>>2]=3;A=o;L=114;break}}else{q=P+1156|0;c[q>>2]=l;if(!l){if(t>>>0>229){c[J>>2]=3;A=q;L=114;break}l=hh(v,2,0,t,0,J)|0;c[P+1160>>2]=l;if(c[J>>2]|0){A=q;L=114;break}Aga(l|0,9688,t<<1|0)|0;L=100;break}else if((l|0)==2){if(t>>>0>87){c[J>>2]=3;A=q;L=114;break}l=hh(v,2,0,t,0,J)|0;c[P+1160>>2]=l;if(c[J>>2]|0){A=q;L=114;break}Aga(l|0,10488,t<<1|0)|0;L=100;break}else if((l|0)==1){if(t>>>0>166){c[J>>2]=3;A=q;L=114;break}l=hh(v,2,0,t,0,J)|0;c[P+1160>>2]=l;if(c[J>>2]|0){A=q;L=114;break}Aga(l|0,10152,t<<1|0)|0;L=100;break}else{c[J>>2]=3;A=q;L=114;break}}while(0);do if((L|0)==100){if(!(s<<24>>24))l=c[J>>2]|0;else{c[O>>2]=0;r=P+1168|0;do if(!(c[r>>2]|0)){j=P+1160|0;q=c[j>>2]|0;n=0;l=0;do{s=b[q+(n<<1)>>1]|0;l=(s&65535)>(l&65535)?s:l;n=n+1|0}while((n|0)!=(t|0));n=l&65535;m=hh(v,2,0,n+1|0,0,O)|0;c[P+1164>>2]=m;l=c[O>>2]|0;if(l)break;l=t+-1|0;if((l|0)>-1){q=c[j>>2]|0;do{b[m+(e[q+(l<<1)>>1]<<1)>>1]=l;l=l+-1|0}while((l|0)>-1)}c[r>>2]=n;c[P+1172>>2]=t;l=0}else l=0;while(0);c[J>>2]=l}if(!l){c[E>>2]=0;break}else{A=P+1156|0;L=114;break}}while(0);if((L|0)==114?(t=P+1160|0,eh(v,c[t>>2]|0),c[t>>2]=0,s=P+1164|0,eh(v,c[s>>2]|0),c[s>>2]=0,c[u>>2]=0,c[A>>2]=0,c[t>>2]=0,A=c[J>>2]|0,c[E>>2]=A,(A|0)!=0):0)break a;if((c[x>>2]|0)!=65535)break;t=c[w>>2]|0;l=c[P+1432>>2]|0;c[J>>2]=0;s=P+1160|0;e:do if(!(c[s>>2]|0)){c[J>>2]=3;l=3}else{q=0;do{b[P+(q<<1)+128>>1]=0;b[P+(q<<1)+640>>1]=0;q=q+1|0}while((q|0)!=256);do if(l>>>0>1){l=l+y|0;c[P+120>>2]=l;l=Hh(f,l)|0;c[J>>2]=l;if(l)break e;p=P+116|0;c[p>>2]=(Hi(f,J)|0)&255;l=c[J>>2]|0;if(l)break e;q=Hi(f,J)|0;o=q&255;l=c[J>>2]|0;if(l)break e;l=c[p>>2]&127;do if(!l){c[P+124>>2]=o+1;l=yi(f,o)|0;c[J>>2]=l;if(l)break e;if(q<<24>>24){q=1;n=c[f+32>>2]|0;while(1){l=d[n>>0]|0;if(q>>>0>>0){b[P+(l<<1)+640>>1]=q;b[P+(l<<1)+128>>1]=b[(c[s>>2]|0)+(q<<1)>>1]|0}q=q+1|0;if(q>>>0>o>>>0)break;else n=n+1|0}}Bi(f)}else if((l|0)==1){k=P+124|0;c[k>>2]=0;if(!(q<<24>>24))break;else{j=1;r=0}do{m=(Hi(f,J)|0)&255;l=c[J>>2]|0;if(l)break e;q=Hi(f,J)|0;l=c[J>>2]|0;if(l)break e;q=q&255;n=q+1|0;if(n>>>0>(c[k>>2]|0)>>>0)c[k>>2]=n;l=j;j=n+j|0;if(l>>>0>>0){n=l+1+q|0;q=m;while(1){if(l>>>0>>0&q>>>0<256){b[P+(q<<1)+640>>1]=l;b[P+(q<<1)+128>>1]=b[(c[s>>2]|0)+(l<<1)>>1]|0}l=l+1|0;if((l|0)==(n|0))break;else q=q+1|0}}r=r+1|0}while(r>>>0>>0);if((c[k>>2]|0)>>>0<=256)break;c[k>>2]=256}else{c[J>>2]=3;l=3;break e}while(0);if(!(c[p>>2]&128)){f=c[J>>2]|0;c[E>>2]=f;if(!f)break c;else break a}q=Hi(f,J)|0;k=q&255;l=c[J>>2]|0;if(l)break e;if(!(q<<24>>24))break;m=(t|0)==0;r=0;do{j=(Hi(f,J)|0)&255;l=c[J>>2]|0;if(l)break e;n=ri(f,J)|0;l=c[J>>2]|0;if(l)break e;b[P+(j<<1)+128>>1]=n;f:do if(!m){q=c[s>>2]|0;l=0;while(1){if((b[q+(l<<1)>>1]|0)==n<<16>>16)break;l=l+1|0;if(l>>>0>=t>>>0)break f}b[P+(j<<1)+640>>1]=l}while(0);r=r+1|0}while(r>>>0>>0)}else{if((l|0)==1)Aga(P+128|0,9176,512)|0;else if(!l)Aga(P+128|0,8664,512)|0;else{c[J>>2]=3;l=3;break e}k=P+124|0;c[k>>2]=0;j=c[z>>2]|0;c[O>>2]=0;r=P+1168|0;l=c[r>>2]|0;if(!l){if(!t)l=0;else{q=c[s>>2]|0;n=0;l=0;do{f=b[q+(n<<1)>>1]|0;l=(f&65535)>(l&65535)?f:l;n=n+1|0}while((n|0)!=(t|0))}m=l&65535;n=hh(j,2,0,m+1|0,0,O)|0;j=P+1164|0;c[j>>2]=n;l=c[O>>2]|0;if(l){c[J>>2]=l;break e}l=t+-1|0;if((l|0)>-1){q=c[s>>2]|0;do{b[n+(e[q+(l<<1)>>1]<<1)>>1]=l;l=l+-1|0}while((l|0)>-1)}c[r>>2]=m;c[P+1172>>2]=t}else{j=P+1164|0;m=l}c[J>>2]=0;l=0;do{n=P+(l<<1)+128|0;q=b[n>>1]|0;do if(!(q<<16>>16))L=176;else{q=q&65535;if(m>>>0>>0){L=176;break}q=b[(c[j>>2]|0)+(q<<1)>>1]|0;if(!(q<<16>>16)){L=176;break}b[P+(l<<1)+640>>1]=q;l=l+1|0;c[k>>2]=l}while(0);if((L|0)==176){L=0;b[P+(l<<1)+640>>1]=0;b[n>>1]=0;l=l+1|0}}while((l|0)!=256)}while(0);c[E>>2]=0;break c}while(0);c[E>>2]=l;break a}while(0);l=c[(c[C>>2]|0)+28>>2]|0;B=Ms(C,B,O,J)|0;c[K>>2]=B;do if(!B){n=c[J>>2]|0;l=ch(l,n+1|0,K)|0;if(!(c[K>>2]|0)){Aga(l|0,c[O>>2]|0,n|0)|0;a[l+n>>0]=0}if(c[P+48>>2]|0)break;zi(c[C>>2]|0,O)}else l=0;while(0);c[P+1304>>2]=l;break}c[E>>2]=2}while(0);l=c[F>>2]|0;if(l){n=c[l+28>>2]|0;m=F+28|0;if(c[m>>2]|0)zi(l,m);eh(n,c[F+24>>2]|0);c[F+0>>2]=0;c[F+4>>2]=0;c[F+8>>2]=0;c[F+12>>2]=0;c[F+16>>2]=0;c[F+20>>2]=0;c[F+24>>2]=0;c[F+28>>2]=0}F=c[E>>2]|0;c[R>>2]=F;if(!F){c[P+2952>>2]=D;w=P+2956|0;c[w>>2]=G;c[g+4>>2]=h;t=g+16|0;c[t>>2]=c[P+12>>2];x=P+1456|0;if(!((c[x>>2]|0)!=65535|(G|0)!=0)){c[R>>2]=11;break}p=P+1388|0;if(!(a[p>>0]|0)){if(!(H<<24>>24))l=e[g+68>>1]|0;else l=1e3;s=P+1392|0;c[s>>2]=l}else s=P+1392|0;k=P+1372|0;o=P+1396|0;l=P+1384|0;n=c[l>>2]|0;n=(n|0)<0?0-n|0:n;if((n|0)==65536){l=o;n=c[P+1400>>2]|0}else{c[s>>2]=Xg(c[s>>2]|0,n)|0;c[k>>2]=Xg(c[k>>2]|0,n)|0;G=P+1380|0;c[G>>2]=Xg(c[G>>2]|0,n)|0;G=P+1376|0;c[G>>2]=Xg(c[G>>2]|0,n)|0;c[l>>2]=Xg(c[l>>2]|0,n)|0;c[o>>2]=Xg(c[o>>2]|0,n)|0;l=P+1400|0;n=Xg(c[l>>2]|0,n)|0;c[l>>2]=n;l=o}c[l>>2]=c[l>>2]>>16;c[P+1400>>2]=n>>16;l=c[P+1896>>2]|0;if(l){r=P+1900|0;do{l=l+-1|0;j=c[r+(l<<2)>>2]|0;do if(!(a[j+64>>0]|0)){F=j+48|0;c[F+0>>2]=c[k+0>>2];c[F+4>>2]=c[k+4>>2];c[F+8>>2]=c[k+8>>2];c[F+12>>2]=c[k+12>>2];F=o;G=c[F+4>>2]|0;q=j+72|0;c[q>>2]=c[F>>2];c[q+4>>2]=G;q=j+68|0;c[q>>2]=c[s>>2]}else{if(!(a[p>>0]|0)){q=j+68|0;break}q=c[s>>2]|0;n=j+68|0;if(q>>>0>1?(I=c[n>>2]|0,I>>>0>1):0)q=q>>>0>>0?q:I;else q=1;Zg(k,j+48|0,q);_g(j+72|0,k,q);c[n>>2]=Ug(c[n>>2]|0,c[s>>2]|0,q)|0;q=n}while(0);n=j+60|0;m=c[n>>2]|0;m=(m|0)<0?0-m|0:m;if((m|0)==65536){q=j+72|0;n=c[j+76>>2]|0}else{c[q>>2]=Xg(c[q>>2]|0,m)|0;q=j+48|0;c[q>>2]=Xg(c[q>>2]|0,m)|0;q=j+56|0;c[q>>2]=Xg(c[q>>2]|0,m)|0;q=j+52|0;c[q>>2]=Xg(c[q>>2]|0,m)|0;c[n>>2]=Xg(c[n>>2]|0,m)|0;q=j+72|0;c[q>>2]=Xg(c[q>>2]|0,m)|0;G=j+76|0;n=Xg(c[G>>2]|0,m)|0;c[G>>2]=n}c[q>>2]=c[q>>2]>>16;c[j+76>>2]=n>>16}while((l|0)!=0)}v=H<<24>>24==0;if(!v){c[g>>2]=c[P+8>>2];if((c[x>>2]|0)==65535)l=c[P+1184>>2]|0;else l=(c[P+1168>>2]|0)+1|0;c[t>>2]=l;c[g+52>>2]=c[P+1408>>2]>>16;l=c[P+1412>>2]>>16;c[g+56>>2]=l;c[g+60>>2]=(c[P+1416>>2]|0)+65535>>16;I=(c[P+1420>>2]|0)+65535>>16;c[g+64>>2]=I;m=c[s>>2]|0;b[g+68>>1]=m;b[g+70>>1]=I;b[g+72>>1]=l;m=(((m&65535)*12|0)>>>0)/10|0;l=I-l|0;b[g+74>>1]=(m<<16>>16|0)<(l|0)?l:m;b[g+80>>1]=(c[P+1356>>2]|0)>>>16;b[g+82>>1]=(c[P+1360>>2]|0)>>>16;m=P+20|0;l=c[(c[m>>2]|0)+28>>2]|0;h=Ms(m,h,O,J)|0;c[K>>2]=h;if(!h){n=c[J>>2]|0;l=ch(l,n+1|0,K)|0;if(!(c[K>>2]|0)){Aga(l|0,c[O>>2]|0,n|0)|0;a[l+n>>0]=0}if(!(c[P+48>>2]|0)){zi(c[m>>2]|0,O);m=l}else m=l}else m=0;u=g+20|0;c[u>>2]=m;g:do if(!m){l=c[P+1496>>2]|0;if((l|0)==65535)L=274;else{if(l>>>0>390){l=l+-391|0;if((c[P+1312>>2]|0)>>>0<=l>>>0){L=274;break}l=c[(c[P+1316>>2]|0)+(l<<2)>>2]|0}else{m=c[w>>2]|0;if(!m){L=274;break}l=Ld[c[m+20>>2]&511](l)|0}if(!l){L=274;break}c[u>>2]=Ui(M,l,O)|0;L=274}}else{l=c[P+1336>>2]|0;do if((l|0)!=65535)if(l>>>0>390){l=l+-391|0;if((c[P+1312>>2]|0)>>>0<=l>>>0){l=0;t=m;break}l=c[(c[P+1316>>2]|0)+(l<<2)>>2]|0;t=m;break}else{n=c[w>>2]|0;if(!n){l=0;t=m;break}l=Ld[c[n+20>>2]&511](l)|0;t=c[u>>2]|0;break}else{l=0;t=m}while(0);n=Dga(t|0)|0;j=t+6|0;h:do if((n|0)>5){k=t+1|0;o=t+2|0;p=t+3|0;q=t+4|0;r=t+5|0;s=1;m=n+1|0;do{if((a[j>>0]|0)!=43)break h;s=((a[r>>0]|0)+-65<<24>>24&255)<26?(((a[q>>0]|0)+-65<<24>>24&255)<26?(((a[p>>0]|0)+-65<<24>>24&255)<26?(((a[o>>0]|0)+-65<<24>>24&255)<26?(((a[k>>0]|0)+-65<<24>>24&255)<26?(((a[t>>0]|0)+-65<<24>>24&255)<26?s:0):0):0):0):0):0;if(!(s<<24>>24))break h;if((m|0)>7){n=7;do{a[t+(n+-7)>>0]=a[t+n>>0]|0;n=n+1|0}while((n|0)!=(m|0))}m=m+-7|0}while((m|0)>6)}while(0);m=c[P+1340>>2]|0;do if((m|0)==65535){n=0;L=246}else if(m)if(m>>>0>390){n=m+-391|0;if((c[P+1312>>2]|0)>>>0<=n>>>0){n=0;L=246;break}n=c[(c[P+1316>>2]|0)+(n<<2)>>2]|0;L=246;break}else{n=c[w>>2]|0;if(!n){n=0;L=246;break}n=Ld[c[n+20>>2]&511](m)|0;L=246;break}else n=t;while(0);if((L|0)==246)n=(n|0)==0?t:n;if(!((l|0)!=0&(n|0)!=0)){L=274;break}m=a[l>>0]|0;if(!(m<<24>>24)){L=274;break}i:while(1){while(1){j=a[n>>0]|0;if(m<<24>>24==j<<24>>24){L=251;break}if(m<<24>>24==45|m<<24>>24==32)break;if(!(j<<24>>24))break i;else if(!(j<<24>>24==45|j<<24>>24==32)){L=274;break g}if(!(m<<24>>24)){L=274;break g}else n=n+1|0}if((L|0)==251){L=0;n=n+1|0}l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){L=274;break g}}k=Ui(M,l,O)|0;j=c[u>>2]|0;l=Dga(j|0)|0;n=Dga(k|0)|0;j:do if((l|0)>(n|0)){if((n|0)>=1){m=1;do{if((a[j+(l-m)>>0]|0)!=(a[k+(n-m)>>0]|0))break j;m=m+1|0}while((n|0)>=(m|0))}l=l-n|0;n=l+-1|0;if((n|0)<=0)break;while(1){K=a[j+n>>0]|0;if(!(K<<24>>24==43|K<<24>>24==95|K<<24>>24==32|K<<24>>24==45))break;l=n+-1|0;if((l|0)>0){K=n;n=l;l=K}else break j}a[j+l>>0]=0}while(0);if(!k){L=274;break}c[g+24>>2]=k}while(0);if((L|0)==274)c[g+24>>2]=Ui(M,8616,O)|0;l=N<<24>>24==0?2065:2073;c[g+8>>2]=(a[P+1348>>0]|0)==0?l:l|4;l=(c[P+1352>>2]|0)!=0&1;j=c[P+1344>>2]|0;do if((j|0)!=65535){if(j>>>0>390){m=j+-391|0;if((c[P+1312>>2]|0)>>>0<=m>>>0)break;m=c[(c[P+1316>>2]|0)+(m<<2)>>2]|0}else{m=c[w>>2]|0;if(!m)break;m=Ld[c[m+20>>2]&511](j)|0}if(!m)break;if((qga(m,8624)|0)!=0?(qga(m,8632)|0)!=0:0)break;l=l|2}while(0);do if(!(l&2)){m=c[g+24>>2]|0;if(!m)break;if((rga(m,8624,4)|0)!=0?(rga(m,8632,5)|0)!=0:0)break;l=l|2}while(0);c[g+12>>2]=l}l=(c[x>>2]|0)==65535;if(!l){if(!(l|v)){N=g+8|0;c[N>>2]=c[N>>2]|4096}}else{N=g+8|0;c[N>>2]=c[N>>2]|512}k=g+36|0;m=c[k>>2]|0;k:do if(!m){m=0;L=300}else{l=c[g+40>>2]|0;o=0;while(1){j=c[l+(o<<2)>>2]|0;n=b[j+8>>1]|0;if(!(n<<16>>16))break k;else if(n<<16>>16==3?(b[j+10>>1]|0)==1:0)break k;o=o+1|0;if(o>>>0>=m>>>0){L=300;break}}}while(0);if((L|0)==300){if(!v?(c[x>>2]|0)!=65535:0)break;c[Q>>2]=g;b[Q+8>>1]=3;b[Q+10>>1]=1;c[Q+4>>2]=1970170211;N=Wh(8528,0,Q,0)|0;c[R>>2]=N;if(!((N|0)==0|(N&255|0)==163))break;c[R>>2]=0;l=g+92|0;if((c[l>>2]|0)==0?(m|0)!=(c[k>>2]|0):0)c[l>>2]=c[(c[g+40>>2]|0)+(m<<2)>>2]}if(c[P+124>>2]|0){c[Q>>2]=g;b[Q+8>>1]=7;l=c[P+120>>2]|0;do if(l){m=Q+10|0;if((l|0)==1){b[m>>1]=1;c[Q+4>>2]=1094992453;break}else{b[m>>1]=2;c[Q+4>>2]=1094992451;break}}else{b[Q+10>>1]=0;c[Q+4>>2]=1094995778}while(0);c[R>>2]=Wh(8488,0,Q,0)|0}}}}}else c[R>>2]=11;while(0);Q=c[R>>2]|0;i=S;return Q|0}function Yk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;if(!b){i=o;return}n=c[b+100>>2]|0;d=c[b+528>>2]|0;if(d)Id[c[d+12>>2]&511](b);l=b+652|0;m=c[l>>2]|0;if(!m){i=o;return}k=c[m+4>>2]|0;d=m+84|0;b=c[d>>2]|0;if(b){e=c[b+28>>2]|0;f=m+112|0;if(c[f>>2]|0)zi(b,f);eh(e,c[m+108>>2]|0);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0}d=m+1208|0;f=c[d>>2]|0;if(f){b=c[f+28>>2]|0;e=m+1236|0;if(c[e>>2]|0)zi(f,e);eh(b,c[m+1232>>2]|0);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0}d=m+20|0;f=c[d>>2]|0;if(f){b=c[f+28>>2]|0;e=m+48|0;if(c[e>>2]|0)zi(f,e);eh(b,c[m+44>>2]|0);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0}d=m+1176|0;f=c[d>>2]|0;if(f){b=c[f+28>>2]|0;e=m+1204|0;if(c[e>>2]|0)zi(f,e);eh(b,c[m+1200>>2]|0);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0}j=m+1896|0;d=c[j>>2]|0;if(d){h=0;do{g=c[m+(h<<2)+1900>>2]|0;if(g){d=g+536|0;f=c[d>>2]|0;if(f){b=c[f+28>>2]|0;e=g+564|0;if(c[e>>2]|0)zi(f,e);eh(b,c[g+560>>2]|0);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0}d=g+568|0;eh(k,c[d>>2]|0);c[d>>2]=0;d=c[j>>2]|0}h=h+1|0}while(h>>>0>>0);j=m+1900|0;eh(k,c[j>>2]|0);c[j>>2]=0}c[m+116>>2]=0;c[m+120>>2]=0;c[m+124>>2]=0;f=c[(c[m>>2]|0)+28>>2]|0;d=m+1164|0;eh(f,c[d>>2]|0);c[d>>2]=0;c[m+1168>>2]=0;d=m+1160|0;eh(f,c[d>>2]|0);c[d>>2]=0;c[m+1152>>2]=0;c[m+1156>>2]=0;d=m+1860|0;f=c[d>>2]|0;if(f){b=c[f+28>>2]|0;e=m+1888|0;if(c[e>>2]|0)zi(f,e);eh(b,c[m+1884>>2]|0);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0}d=m+1892|0;eh(k,c[d>>2]|0);c[d>>2]=0;d=m+2932|0;if(c[d>>2]|0)zi(c[m>>2]|0,d);c[m+2936>>2]=0;a[m+2924>>0]=0;c[m+2928>>2]=0;d=m+2960|0;eh(k,c[d>>2]|0);c[d>>2]=0;d=m+1304|0;eh(k,c[d>>2]|0);c[d>>2]=0;d=m+1308|0;eh(k,c[d>>2]|0);c[d>>2]=0;d=m+1316|0;eh(k,c[d>>2]|0);c[d>>2]=0;d=m+1320|0;eh(k,c[d>>2]|0);c[d>>2]=0;d=c[m+2976>>2]|0;if(d){m=m+2972|0;Id[d&511](c[m>>2]|0);eh(k,c[m>>2]|0);c[m>>2]=0}eh(n,c[l>>2]|0);c[l>>2]=0;i=o;return}function Zk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+208|0;j=l+196|0;k=l;c[j>>2]=0;d=c[a>>2]|0;b=c[(c[d+652>>2]|0)+2952>>2]|0;d=ci(c[(c[d+96>>2]|0)+4>>2]|0,8600)|0;do if(((d|0)!=0&(b|0)!=0?(e=c[b>>2]|0,(e|0)!=0):0)?(h=Ld[e&511](d)|0,(h|0)!=0):0){g=c[a>>2]|0;d=c[g+652>>2]|0;g=ch(c[g+100>>2]|0,1028,j)|0;b=c[j>>2]|0;if(b){j=b;i=l;return j|0}Ns(d+1324|0,k);b=Od[c[h>>2]&255](c[(c[a>>2]|0)+100>>2]|0,k,g)|0;c[j>>2]=b;if(b){j=b;i=l;return j|0}e=d+1900|0;f=g+4|0;d=c[d+1896>>2]|0;while(1){if(!d){d=9;break}d=d+-1|0;Ns(c[e+(d<<2)>>2]|0,k);b=Od[c[h>>2]&255](c[(c[a>>2]|0)+100>>2]|0,k,f+(d<<2)|0)|0;c[j>>2]=b;if(b){d=11;break}}if((d|0)==9){c[a+40>>2]=g;break}else if((d|0)==11){i=l;return b|0}}while(0);c[a+44>>2]=-1;j=0;i=l;return j|0}function _k(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;b=c[a>>2]|0;d=c[b+652>>2]|0;e=c[a+40>>2]|0;if(!e){i=f;return}a=c[d+2952>>2]|0;b=ci(c[(c[b+96>>2]|0)+4>>2]|0,8600)|0;if(!((b|0)!=0&(a|0)!=0)){i=f;return}a=c[a>>2]|0;if(!a){i=f;return}a=Ld[a&511](b)|0;if(!a){i=f;return}b=a+8|0;Id[c[b>>2]&511](c[e>>2]|0);a=c[d+1896>>2]|0;if(!a){i=f;return}do{a=a+-1|0;Id[c[b>>2]&511](c[e+(a<<2)+4>>2]|0)}while((a|0)!=0);i=f;return}function $k(a){a=a|0;var b=0,d=0,e=0;e=i;b=c[a+4>>2]|0;d=c[(c[b+652>>2]|0)+2952>>2]|0;if(!d){i=e;return 0}b=ci(c[(c[b+96>>2]|0)+4>>2]|0,8600)|0;if(!b){i=e;return 0}d=Ld[c[d+8>>2]&511](b)|0;c[(c[a+156>>2]|0)+36>>2]=d;i=e;return 0}function al(a){a=a|0;c[(c[a+156>>2]|0)+36>>2]=0;return}function bl(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Y=i;i=i+1040|0;H=Y+48|0;V=Y+72|0;U=Y+56|0;q=Y+1008|0;r=Y+1024|0;s=Y+1030|0;I=Y+44|0;E=Y+40|0;L=Y+24|0;X=Y+8|0;T=Y;Q=Y+1026|0;P=Y+1028|0;if(!f){f=37;i=Y;return f|0}m=j|3;l=(g|0)==0?m:j;R=(l&1|0)==0?g:0;if(R){j=c[g>>2]|0;if((j|0)==(c[f+4>>2]|0))N=j;else{f=35;i=Y;return f|0}}else N=c[f+4>>2]|0;F=N+652|0;G=c[F>>2]|0;if((c[G+1456>>2]|0)!=65535?(k=c[G+1164>>2]|0,(k|0)!=0):0)if(h){if((c[G+1168>>2]|0)>>>0>>0){f=6;i=Y;return f|0}j=b[k+(h<<1)>>1]|0;if(!(j<<16>>16)){f=6;i=Y;return f|0}else J=j&65535}else J=0;else if((c[G+12>>2]|0)>>>0>h>>>0)J=h;else{f=6;i=Y;return f|0}S=(l&1024|0)==0?l:m;M=f+164|0;c[M>>2]=65536;O=f+168|0;c[O>>2]=65536;K=(R|0)!=0;if(((K?(c[M>>2]=c[R+16>>2],c[O>>2]=c[R+20>>2],p=c[R>>2]|0,o=c[p+528>>2]|0,p=c[p+104>>2]|0,n=c[R+44>>2]|0,(n|0)!=-1):0)?(c[o+96>>2]|0)!=0&(S&8|0)==0:0)?(Gd[c[o+72>>2]&7](N,n,J,S,p,f+76|0,q)|0)==0:0){b[f+110>>1]=0;b[f+108>>1]=0;c[f+24>>2]=e[q+2>>1]<<6;c[f+28>>2]=e[q>>1]<<6;M=b[q+4>>1]|0;c[f+32>>2]=M<<6;X=b[q+6>>1]|0;c[f+36>>2]=X<<6;c[f+40>>2]=e[q+8>>1]<<6;Q=b[q+10>>1]|0;c[f+44>>2]=Q<<6;j=b[q+12>>1]|0;c[f+48>>2]=j<<6;c[f+52>>2]=e[q+14>>1]<<6;c[f+72>>2]=1651078259;R=(S&16|0)==0;c[f+100>>2]=R?M:Q;c[f+104>>2]=R?X:j;j=N+528|0;Xd[c[(c[j>>2]|0)+112>>2]&127](N,0,J,s,r)|0;c[f+56>>2]=e[r>>1];if((a[N+292>>0]|0)!=0?(b[N+330>>1]|0)!=0:0){Xd[c[(c[j>>2]|0)+112>>2]&127](N,1,J,s,r)|0;c[f+60>>2]=e[r>>1];f=0;i=Y;return f|0}j=N+364|0;if((b[j>>1]|0)==-1){X=N+216|0;c[f+60>>2]=(b[X+4>>1]|0)-(b[X+6>>1]|0);f=0;i=Y;return f|0}else{c[f+60>>2]=(b[j+70>>1]|0)-(b[j+72>>1]|0);f=0;i=Y;return f|0}}if(S&16384){f=6;i=Y;return f|0}p=c[G+1896>>2]|0;if(p){j=d[G+2924>>0]|0;a:do if((j|0)==3){n=G+2940|0;o=G+2944|0;if((J-(c[n>>2]|0)|0)>>>0<(c[o>>2]|0)>>>0){j=a[G+2948>>0]|0;break}m=c[G+2932>>2]|0;h=m+(c[G+2936>>2]|0)|0;l=m;k=d[m>>0]<<8|d[m+1>>0];m=m+2|0;while(1){if(k>>>0>J>>>0){j=0;break a}j=m;m=l+5|0;D=l;l=l+3|0;g=k;k=d[l>>0]<<8|d[D+4>>0];if(k>>>0>J>>>0)break;if(m>>>0>=h>>>0){j=0;break a}}j=a[j>>0]|0;c[n>>2]=g;c[o>>2]=k-g;a[G+2948>>0]=j}else if(!j)j=a[(c[G+2932>>2]|0)+J>>0]|0;else j=0;while(0);if((j&255)>>>0>=p>>>0)j=p+255&255;k=c[G+1392>>2]|0;h=G+1900+((j&255)<<2)|0;g=c[h>>2]|0;j=c[g+68>>2]|0;g=g+48|0;c[U+0>>2]=c[g+0>>2];c[U+4>>2]=c[g+4>>2];c[U+8>>2]=c[g+8>>2];c[U+12>>2]=c[g+12>>2];h=c[h>>2]|0;g=c[h+72>>2]|0;h=c[h+76>>2]|0;if((k|0)==(j|0)){B=g;v=0}else{c[M>>2]=Ug(c[M>>2]|0,k,j)|0;c[O>>2]=Ug(c[O>>2]|0,k,j)|0;B=g;v=1}}else{B=G+1372|0;c[U+0>>2]=c[B+0>>2];c[U+4>>2]=c[B+4>>2];c[U+8>>2]=c[B+8>>2];c[U+12>>2]=c[B+12>>2];B=c[G+1396>>2]|0;h=c[G+1400>>2]|0;v=0}D=f+108|0;C=f+110|0;b[C>>1]=0;b[D>>1]=0;w=(S>>>1&1^1)&255;z=S&1;A=(z|0)!=0;t=f+160|0;a[t>>0]=w;a[f+161>>0]=z^1;z=f+72|0;c[z>>2]=1869968492;p=S>>>16&15;k=c[F>>2]|0;Cga(V|0,0,932)|0;a[V+65>>0]=1;m=V+4|0;c[m>>2]=N;y=V+8|0;c[y>>2]=f;c[V>>2]=c[N+100>>2];j=f+156|0;o=c[c[j>>2]>>2]|0;c[V+12>>2]=o;c[V+16>>2]=o+20;c[V+20>>2]=o+56;dh(o);o=V+72|0;c[o>>2]=0;g=V+68|0;c[g>>2]=0;if(w<<24>>24!=0&K){c[o>>2]=c[c[R+40>>2]>>2];c[g>>2]=c[(c[j>>2]|0)+36>>2]}s=V+24|0;c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=0;s=V+76|0;c[s>>2]=k;j=c[k+92>>2]|0;c[V+892>>2]=j;c[V+908>>2]=c[k+1308>>2];if((c[k+1368>>2]|0)!=1)if(j>>>0<1240)j=107;else j=j>>>0<33900?1131:32768;else j=0;c[V+900>>2]=j;c[V+920>>2]=p;if(S&256)a[V+753>>0]=1;x=S&1024;a[V+66>>0]=0;u=N+128|0;j=c[(c[u>>2]|0)+48>>2]|0;if(!j)j=Ms((c[F>>2]|0)+1176|0,J,I,E)|0;else{j=Od[c[c[j>>2]>>2]&255](c[j+4>>2]|0,J,H)|0;c[I>>2]=c[H>>2];c[E>>2]=c[H+4>>2]}if(j){f=j;i=Y;return f|0}q=c[(c[m>>2]|0)+652>>2]|0;r=c[q+1896>>2]|0;if(r){j=d[q+2924>>0]|0;b:do if((j|0)==3){l=q+2940|0;n=q+2944|0;if((J-(c[l>>2]|0)|0)>>>0<(c[n>>2]|0)>>>0){j=a[q+2948>>0]|0;break}m=c[q+2932>>2]|0;k=m+(c[q+2936>>2]|0)|0;p=m;g=d[m>>0]<<8|d[m+1>>0];m=m+2|0;while(1){if(g>>>0>J>>>0){j=0;break b}j=m;m=p+5|0;Z=p;p=p+3|0;o=g;g=d[p>>0]<<8|d[Z+4>>0];if(g>>>0>J>>>0)break;if(m>>>0>=k>>>0){j=0;break b}}j=a[j>>0]|0;c[l>>2]=o;c[n>>2]=g-o;a[q+2948>>0]=j}else if(!j)j=a[(c[q+2932>>2]|0)+J>>0]|0;else j=0;while(0);o=j&255;if(o>>>0>=r>>>0){Z=3;i=Y;return Z|0}j=c[q+1900+(o<<2)>>2]|0;if((c[V+68>>2]|0)!=0&K){c[V+72>>2]=c[(c[R+40>>2]|0)+(o<<2)+4>>2];o=j}else o=j}else o=q+1324|0;j=c[o+544>>2]|0;c[V+888>>2]=j;c[V+904>>2]=c[o+568>>2];if((c[(c[s>>2]|0)+1368>>2]|0)!=1)if(j>>>0<1240)j=107;else j=j>>>0<33900?1131:32768;else j=0;c[V+896>>2]=j;p=V+744|0;c[p>>2]=c[o+528>>2];c[V+748>>2]=c[o+532>>2];c[V+928>>2]=o;k=c[E>>2]|0;j=Os(V,c[I>>2]|0,k)|0;if((j&255|0)==164){a[t>>0]=0;o=Os(V,c[I>>2]|0,k)|0;l=1;q=0}else{o=j;l=v;q=w}j=c[(c[u>>2]|0)+48>>2]|0;if(!j){j=c[F>>2]|0;if(!(c[j+1204>>2]|0))zi(c[j+1176>>2]|0,I)}else{c[H>>2]=c[I>>2];c[H+4>>2]=k;Jd[c[(c[j>>2]|0)+4>>2]&255](c[j+4>>2]|0,H)}if(o){Z=o;i=Y;return Z|0}j=c[(c[u>>2]|0)+48>>2]|0;if(!j){g=c[G+1200>>2]|0;if(g){c[f+136>>2]=(c[G+1204>>2]|0)+((c[g+(J<<2)>>2]|0)+-1);c[f+140>>2]=k}}else{c[f+136>>2]=0;c[f+140>>2]=0}g=c[y>>2]|0;if(g){Z=c[V+16>>2]|0;j=g+108|0;c[j+0>>2]=c[Z+0>>2];c[j+4>>2]=c[Z+4>>2];c[j+8>>2]=c[Z+8>>2];c[j+12>>2]=c[Z+12>>2];c[j+16>>2]=c[Z+16>>2];j=c[(c[u>>2]|0)+48>>2]|0}do if(j){g=c[(c[j>>2]|0)+8>>2]|0;if(!g)break;E=V+32|0;c[L>>2]=c[E>>2];c[L+4>>2]=0;G=V+40|0;F=L+8|0;c[F>>2]=c[G>>2];Z=V+44|0;H=L+12|0;c[H>>2]=c[Z>>2];j=ce[g&255](c[j+4>>2]|0,J,0,L)|0;c[E>>2]=c[L>>2];c[G>>2]=c[F>>2];c[Z>>2]=c[H>>2];if(!j)break;i=Y;return j|0}while(0);if(x){Z=c[f+156>>2]|0;c[f+32>>2]=c[V+32>>2];c[f+40>>2]=c[p>>2];f=Z+12|0;c[f+0>>2]=c[U+0>>2];c[f+4>>2]=c[U+4>>2];c[f+8>>2]=c[U+8>>2];c[f+12>>2]=c[U+12>>2];c[Z+28>>2]=B;c[Z+32>>2]=h;a[Z+8>>0]=1;Z=0;i=Y;return Z|0}n=f+24|0;Z=c[p>>2]|0;p=f+40|0;c[p>>2]=Z;c[f+56>>2]=Z;a[(c[f+156>>2]|0)+8>>0]=0;do if(!(a[N+292>>0]|0))W=85;else{if(!(b[N+330>>1]|0)){W=85;break}b[Q>>1]=0;b[P>>1]=0;Xd[c[(c[N+528>>2]|0)+112>>2]&127](N,1,J,Q,P)|0;c[f+48>>2]=b[Q>>1];j=e[P>>1]|0;c[f+52>>2]=j;m=1}while(0);do if((W|0)==85){j=N+364|0;if((b[j>>1]|0)==-1){j=N+216|0;j=(b[j+4>>1]|0)-(b[j+6>>1]|0)|0;c[f+52>>2]=j;m=0;break}else{j=(b[j+70>>1]|0)-(b[j+72>>1]|0)|0;c[f+52>>2]=j;m=0;break}}while(0);o=f+52|0;c[f+60>>2]=j;c[z>>2]=1869968492;g=f+124|0;c[g>>2]=0;do if(K){if((e[R+14>>1]|0)>=24){j=4;break}c[g>>2]=256;j=260}else j=4;while(0);c[g>>2]=j;do if((c[U>>2]|0)==65536){if((c[U+12>>2]|0)!=65536){W=95;break}if(c[U+4>>2]|0){W=95;break}if(c[U+8>>2]|0)W=95}else W=95;while(0);if((W|0)==95)Ah(D,U);if(h|B)Bh(D,B,h);c[T>>2]=c[p>>2];Z=T+4|0;c[Z>>2]=0;Ch(T,U);c[p>>2]=(c[T>>2]|0)+B;c[T>>2]=0;c[Z>>2]=c[o>>2];Ch(T,U);c[o>>2]=(c[Z>>2]|0)+h;if(!(A&l<<24>>24==0)){g=c[f+112>>2]|0;l=c[M>>2]|0;h=c[O>>2]|0;if(!(q<<24>>24!=0?(c[V+68>>2]|0)!=0:0))W=101;do if((W|0)==101){j=b[C>>1]|0;if(j<<16>>16<=0)break;k=j<<16>>16;j=g;while(1){c[j>>2]=Wg(c[j>>2]|0,l)|0;Z=j+4|0;c[Z>>2]=Wg(c[Z>>2]|0,h)|0;k=k+-1|0;if((k|0)<=0)break;else j=j+8|0}}while(0);c[p>>2]=Wg(c[p>>2]|0,l)|0;c[o>>2]=Wg(c[o>>2]|0,h)|0}mi(D,X);j=c[X>>2]|0;c[n>>2]=(c[X+8>>2]|0)-j;Z=c[X+12>>2]|0;c[f+28>>2]=Z-(c[X+4>>2]|0);c[f+32>>2]=j;c[f+36>>2]=Z;if(m){c[f+44>>2]=j-((c[p>>2]|0)/2|0);Z=0;i=Y;return Z|0}if(!(S&16)){Z=0;i=Y;return Z|0}Nh(n,c[o>>2]|0);Z=0;i=Y;return Z|0}function cl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;f=c[a+528>>2]|0;c[e>>2]=0;c[e+4>>2]=0;if(!f){i=g;return 0}c[e>>2]=Od[c[f+84>>2]&255](a,b,d)|0;i=g;return 0}function dl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;j=c[a+84>>2]|0;k=e|256;h=a+88|0;if(!d){f=0;i=l;return f|0}e=(e&16|0)==0?j+56|0:j+60|0;g=0;while(1){a=bl(j,c[h>>2]|0,g+b|0,k)|0;if(a){e=5;break}c[f+(g<<2)>>2]=c[e>>2];g=g+1|0;if(g>>>0>=d>>>0){a=0;e=5;break}}if((e|0)==5){i=l;return a|0}return 0}function el(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;e=l;d=c[a>>2]|0;do if(c[d+8>>2]&2){if(Od[c[(c[d+528>>2]|0)+104>>2]&255](d,b,e)|0){c[a+44>>2]=-1;d=c[a>>2]|0;break}fl(a,c[e>>2]|0)|0;i=l;return 0}while(0);Ph(d,b);e=c[a>>2]|0;d=c[(c[e+652>>2]|0)+2952>>2]|0;e=ci(c[(c[e+96>>2]|0)+4>>2]|0,8600)|0;if(!((e|0)!=0&(d|0)!=0)){i=l;return 0}d=c[d>>2]|0;if(!d){i=l;return 0}d=Ld[d&511](e)|0;if(!d){i=l;return 0}e=c[(c[a>>2]|0)+652>>2]|0;j=c[a+40>>2]|0;k=c[e+1392>>2]|0;g=d+4|0;h=a+16|0;f=a+20|0;Xd[c[g>>2]&127](c[j>>2]|0,c[h>>2]|0,c[f>>2]|0,0,0)|0;d=c[e+1896>>2]|0;if(!d){i=l;return 0}a=e+1900|0;do{d=d+-1|0;b=c[(c[a+(d<<2)>>2]|0)+68>>2]|0;e=c[h>>2]|0;if((k|0)==(b|0))b=c[f>>2]|0;else{e=Ug(e,k,b)|0;b=Ug(c[f>>2]|0,k,b)|0}Xd[c[g>>2]&127](c[j+(d<<2)+4>>2]|0,e,b,0,0)|0}while((d|0)!=0);i=l;return 0}function fl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;c[a+44>>2]=b;Oh(c[a>>2]|0,b);d=c[a>>2]|0;b=c[(c[d+652>>2]|0)+2952>>2]|0;d=ci(c[(c[d+96>>2]|0)+4>>2]|0,8600)|0;if(!((d|0)!=0&(b|0)!=0)){i=l;return 0}b=c[b>>2]|0;if(!b){i=l;return 0}b=Ld[b&511](d)|0;if(!b){i=l;return 0}d=c[(c[a>>2]|0)+652>>2]|0;j=c[a+40>>2]|0;k=c[d+1392>>2]|0;g=b+4|0;h=a+16|0;f=a+20|0;Xd[c[g>>2]&127](c[j>>2]|0,c[h>>2]|0,c[f>>2]|0,0,0)|0;b=c[d+1896>>2]|0;if(!b){i=l;return 0}e=d+1900|0;do{b=b+-1|0;a=c[(c[e+(b<<2)>>2]|0)+68>>2]|0;d=c[h>>2]|0;if((k|0)==(a|0))a=c[f>>2]|0;else{d=Ug(d,k,a)|0;a=Ug(c[f>>2]|0,k,a)|0}Xd[c[g>>2]&127](c[j+(b<<2)+4>>2]|0,d,a,0,0)|0}while((b|0)!=0);i=l;return 0}function gl(a,b){a=a|0;b=b|0;c[a+16>>2]=(c[(c[a>>2]|0)+652>>2]|0)+640;return 0}function hl(a){a=a|0;c[a+16>>2]=0;return}function il(a,b){a=a|0;b=b|0;var d=0;d=i;if(b>>>0>=256){a=0;i=d;return a|0}a=e[(c[a+16>>2]|0)+(b<<1)>>1]|0;i=d;return a|0}function jl(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;e=c[d>>2]|0;c[d>>2]=0;a:do if(e>>>0<255){f=a+16|0;a=0;do{e=e+1|0;if(e>>>0>255)break a;h=b[(c[f>>2]|0)+(e<<1)>>1]|0;a=h&65535}while(h<<16>>16==0);c[d>>2]=e}else a=0;while(0);i=g;return a|0}function kl(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;b=c[a>>2]|0;d=c[b+652>>2]|0;if(!(c[d+1160>>2]|0)){a=163;i=e;return a|0}a=Kd[c[(c[d+2956>>2]|0)+4>>2]&31](c[b+100>>2]|0,a,c[d+12>>2]|0,193,0,b)|0;i=e;return a|0}function ll(a){a=a|0;var b=0,d=0;b=i;d=a+20|0;eh(c[(c[a>>2]|0)+100>>2]|0,c[d>>2]|0);c[d>>2]=0;c[a+16>>2]=0;i=b;return}function ml(a,b){a=a|0;b=b|0;var d=0;d=i;a=Wd[c[(c[(c[(c[a>>2]|0)+652>>2]|0)+2956>>2]|0)+8>>2]&511](a,b)|0;i=d;return a|0}function nl(a,b){a=a|0;b=b|0;var d=0;d=i;a=Wd[c[(c[(c[(c[a>>2]|0)+652>>2]|0)+2956>>2]|0)+12>>2]&511](a,b)|0;i=d;return a|0}function ol(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;t=u;r=c[b+412>>2]|0;p=r+72|0;s=r+68|0;q=b+40|0;if((c[b+404>>2]|0)>>>0>>0){t=161;i=u;return t|0}n=r+48|0;a[r+64>>0]=1;h=c[b+16>>2]|0;o=b+20|0;e=c[o>>2]|0;f=a[h>>0]|0;do if(f<<24>>24==30)e=Qs(h,e,0,t)|0;else{g=h+1|0;k=f&255;do if(f<<24>>24==29)if((h+5|0)>>>0>e>>>0)e=0;else{e=(d[h+2>>0]|0)<<16|(d[g>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);j=16}else if(f<<24>>24==28)if((h+3|0)>>>0>e>>>0)e=0;else e=((d[g>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;else{if((f&255)<247){e=k+-139|0;j=16;break}e=(h+2|0)>>>0>e>>>0;if((f&255)<251){if(e){e=0;break}e=(d[g>>0]|0|(k<<8)+-63232)+108|0;j=16;break}else{if(e){e=0;break}e=(251-k<<8)+-108-(d[g>>0]|0)|0;j=16;break}}while(0);if((j|0)==16)if((e|0)>32767){f=5;while(1){h=f+1|0;if((e|0)<(c[12120+(f<<2)>>2]|0)){h=f;break}if((h|0)<10)f=h;else break}f=h+-5|0;g=c[12120+(f<<2)>>2]|0;if(((e|0)/(g|0)|0|0)>32767){l=h+-4|0;c[t>>2]=l;e=Xg(e,c[12120+(l<<2)>>2]|0)|0;break}else{c[t>>2]=f;e=Xg(e,g)|0;break}}c[t>>2]=0;e=e<<16}while(0);c[n>>2]=e;l=c[t>>2]|0;m=0-l|0;c[t>>2]=m;if((l+9|0)>>>0>9){c[n>>2]=65536;c[r+56>>2]=0;c[r+52>>2]=0;c[r+60>>2]=65536;c[p>>2]=0;c[r+76>>2]=0;c[s>>2]=1;t=0;i=u;return t|0}e=b+24|0;h=c[o>>2]|0;j=c[e>>2]|0;k=a[h>>0]|0;if(k<<24>>24!=30){f=h+1|0;g=k&255;do if(k<<24>>24==29)if((h+5|0)>>>0>j>>>0)e=0;else e=(d[h+2>>0]|0)<<16|(d[f>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);else if(k<<24>>24==28)if((h+3|0)>>>0>j>>>0)e=0;else e=((d[f>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;else{if((k&255)<247){e=g+-139|0;break}e=(h+2|0)>>>0>j>>>0;if((k&255)<251){if(e){e=0;break}e=(d[f>>0]|0|(g<<8)+-63232)+108|0;break}else{if(e){e=0;break}e=(251-g<<8)+-108-(d[f>>0]|0)|0;break}}while(0);if(l)e=ea(c[12120+(m<<2)>>2]|0,e)|0;if((e|0)>32767)e=2147483647;else e=(e|0)<-32767?-2147483647:e<<16}else{o=Qs(h,j,m,0)|0;j=c[e>>2]|0;e=o}c[r+56>>2]=e;e=b+28|0;l=c[t>>2]|0;k=c[e>>2]|0;g=a[j>>0]|0;if(g<<24>>24!=30){h=j+1|0;f=g&255;do if(g<<24>>24==28)if((j+3|0)>>>0>k>>>0)e=0;else e=((d[h>>0]|0)<<8|(d[j+2>>0]|0))<<16>>16;else if(g<<24>>24==29)if((j+5|0)>>>0>k>>>0)e=0;else e=(d[j+2>>0]|0)<<16|(d[h>>0]|0)<<24|(d[j+3>>0]|0)<<8|(d[j+4>>0]|0);else{if((g&255)<247){e=f+-139|0;break}e=(j+2|0)>>>0>k>>>0;if((g&255)<251){if(e){e=0;break}e=(d[h>>0]|0|(f<<8)+-63232)+108|0;break}else{if(e){e=0;break}e=(251-f<<8)+-108-(d[h>>0]|0)|0;break}}while(0);if(l)e=ea(c[12120+(l<<2)>>2]|0,e)|0;if((e|0)>32767)e=2147483647;else e=(e|0)<-32767?-2147483647:e<<16}else{o=Qs(j,k,l,0)|0;k=c[e>>2]|0;e=o}c[r+52>>2]=e;e=b+32|0;j=c[t>>2]|0;l=c[e>>2]|0;g=a[k>>0]|0;if(g<<24>>24!=30){h=k+1|0;f=g&255;do if(g<<24>>24==29)if((k+5|0)>>>0>l>>>0)e=0;else e=(d[k+2>>0]|0)<<16|(d[h>>0]|0)<<24|(d[k+3>>0]|0)<<8|(d[k+4>>0]|0);else if(g<<24>>24==28)if((k+3|0)>>>0>l>>>0)e=0;else e=((d[h>>0]|0)<<8|(d[k+2>>0]|0))<<16>>16;else{if((g&255)<247){e=f+-139|0;break}e=(k+2|0)>>>0>l>>>0;if((g&255)<251){if(e){e=0;break}e=(d[h>>0]|0|(f<<8)+-63232)+108|0;break}else{if(e){e=0;break}e=(251-f<<8)+-108-(d[h>>0]|0)|0;break}}while(0);if(j)e=ea(c[12120+(j<<2)>>2]|0,e)|0;if((e|0)>32767)e=2147483647;else e=(e|0)<-32767?-2147483647:e<<16}else{o=Qs(k,l,j,0)|0;l=c[e>>2]|0;e=o}c[r+60>>2]=e;e=b+36|0;j=c[t>>2]|0;k=c[e>>2]|0;g=a[l>>0]|0;if(g<<24>>24!=30){h=l+1|0;f=g&255;do if(g<<24>>24==29)if((l+5|0)>>>0>k>>>0)e=0;else e=(d[l+2>>0]|0)<<16|(d[h>>0]|0)<<24|(d[l+3>>0]|0)<<8|(d[l+4>>0]|0);else if(g<<24>>24==28)if((l+3|0)>>>0>k>>>0)e=0;else e=((d[h>>0]|0)<<8|(d[l+2>>0]|0))<<16>>16;else{if((g&255)<247){e=f+-139|0;break}e=(l+2|0)>>>0>k>>>0;if((g&255)<251){if(e){e=0;break}e=(d[h>>0]|0|(f<<8)+-63232)+108|0;break}else{if(e){e=0;break}e=(251-f<<8)+-108-(d[h>>0]|0)|0;break}}while(0);if(j)e=ea(c[12120+(j<<2)>>2]|0,e)|0;if((e|0)>32767)e=2147483647;else e=(e|0)<-32767?-2147483647:e<<16}else{b=Qs(l,k,j,0)|0;k=c[e>>2]|0;e=b}c[p>>2]=e;j=c[t>>2]|0;e=c[q>>2]|0;f=a[k>>0]|0;if(f<<24>>24!=30){g=k+1|0;h=f&255;do if(f<<24>>24==29)if((k+5|0)>>>0>e>>>0)e=0;else e=(d[k+2>>0]|0)<<16|(d[g>>0]|0)<<24|(d[k+3>>0]|0)<<8|(d[k+4>>0]|0);else if(f<<24>>24==28)if((k+3|0)>>>0>e>>>0)e=0;else e=((d[g>>0]|0)<<8|(d[k+2>>0]|0))<<16>>16;else{if((f&255)<247){e=h+-139|0;break}e=(k+2|0)>>>0>e>>>0;if((f&255)<251){if(e){e=0;break}e=(d[g>>0]|0|(h<<8)+-63232)+108|0;break}else{if(e){e=0;break}e=(251-h<<8)+-108-(d[g>>0]|0)|0;break}}while(0);if(j)e=ea(c[12120+(j<<2)>>2]|0,e)|0;if((e|0)>32767)e=2147483647;else e=(e|0)<-32767?-2147483647:e<<16}else e=Qs(k,e,j,0)|0;c[r+76>>2]=e;c[s>>2]=c[12120+(c[t>>2]<<2)>>2];t=0;i=u;return t|0}function pl(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;p=c[b+412>>2]|0;n=b+32|0;if((c[b+404>>2]|0)>>>0>>0){p=161;i=q;return p|0}k=p+84|0;m=b+20|0;h=c[b+16>>2]|0;e=c[m>>2]|0;j=a[h>>0]|0;do if(j<<24>>24==30)e=Qs(h,e,0,0)|0;else{f=h+1|0;g=j&255;do if(j<<24>>24==29)if((h+5|0)>>>0>e>>>0)e=0;else{e=(d[h+2>>0]|0)<<16|(d[f>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);o=16}else if(j<<24>>24==28)if((h+3|0)>>>0>e>>>0)e=0;else e=((d[f>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;else{if((j&255)<247){e=g+-139|0;o=16;break}e=(h+2|0)>>>0>e>>>0;if((j&255)<251){if(e){e=0;break}e=(d[f>>0]|0|(g<<8)+-63232)+108|0;o=16;break}else{if(e){e=0;break}e=(251-g<<8)+-108-(d[f>>0]|0)|0;o=16;break}}while(0);if((o|0)==16)if((e|0)>32767){e=2147483647;break}e=(e|0)<-32767?-2147483647:e<<16}while(0);c[k>>2]=Rg(e)|0;l=b+24|0;h=c[m>>2]|0;e=c[l>>2]|0;f=a[h>>0]|0;do if(f<<24>>24==30)e=Qs(h,e,0,0)|0;else{g=h+1|0;j=f&255;do if(f<<24>>24==28)if((h+3|0)>>>0>e>>>0)e=0;else e=((d[g>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;else if(f<<24>>24==29)if((h+5|0)>>>0>e>>>0)e=0;else{e=(d[h+2>>0]|0)<<16|(d[g>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);o=32}else{if((f&255)<247){e=j+-139|0;o=32;break}e=(h+2|0)>>>0>e>>>0;if((f&255)<251){if(e){e=0;break}e=(d[g>>0]|0|(j<<8)+-63232)+108|0;o=32;break}else{if(e){e=0;break}e=(251-j<<8)+-108-(d[g>>0]|0)|0;o=32;break}}while(0);if((o|0)==32)if((e|0)>32767){e=2147483647;break}e=(e|0)<-32767?-2147483647:e<<16}while(0);c[p+88>>2]=Rg(e)|0;k=b+28|0;h=c[l>>2]|0;e=c[k>>2]|0;f=a[h>>0]|0;do if(f<<24>>24==30)e=Qs(h,e,0,0)|0;else{g=h+1|0;j=f&255;do if(f<<24>>24==28)if((h+3|0)>>>0>e>>>0)e=0;else e=((d[g>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;else if(f<<24>>24==29)if((h+5|0)>>>0>e>>>0)e=0;else{e=(d[h+2>>0]|0)<<16|(d[g>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);o=48}else{if((f&255)<247){e=j+-139|0;o=48;break}e=(h+2|0)>>>0>e>>>0;if((f&255)<251){if(e){e=0;break}e=(d[g>>0]|0|(j<<8)+-63232)+108|0;o=48;break}else{if(e){e=0;break}e=(251-j<<8)+-108-(d[g>>0]|0)|0;o=48;break}}while(0);if((o|0)==48)if((e|0)>32767){e=2147483647;break}e=(e|0)<-32767?-2147483647:e<<16}while(0);c[p+92>>2]=Rg(e)|0;f=c[k>>2]|0;e=c[n>>2]|0;g=a[f>>0]|0;do if(g<<24>>24==30)e=Qs(f,e,0,0)|0;else{h=f+1|0;j=g&255;do if(g<<24>>24==28)if((f+3|0)>>>0>e>>>0)e=0;else e=((d[h>>0]|0)<<8|(d[f+2>>0]|0))<<16>>16;else if(g<<24>>24==29)if((f+5|0)>>>0>e>>>0)e=0;else{e=(d[f+2>>0]|0)<<16|(d[h>>0]|0)<<24|(d[f+3>>0]|0)<<8|(d[f+4>>0]|0);o=64}else{if((g&255)<247){e=j+-139|0;o=64;break}e=(f+2|0)>>>0>e>>>0;if((g&255)<251){if(e){e=0;break}e=(d[h>>0]|0|(j<<8)+-63232)+108|0;o=64;break}else{if(e){e=0;break}e=(251-j<<8)+-108-(d[h>>0]|0)|0;o=64;break}}while(0);if((o|0)==64)if((e|0)>32767){e=2147483647;break}e=(e|0)<-32767?-2147483647:e<<16}while(0);c[p+96>>2]=Rg(e)|0;p=0;i=q;return p|0}function ql(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;k=c[b+412>>2]|0;j=b+24|0;if((c[b+404>>2]|0)>>>0>>0){k=161;i=l;return k|0}g=b+20|0;b=c[b+16>>2]|0;e=c[g>>2]|0;h=a[b>>0]|0;do if(h<<24>>24!=30){g=b+1|0;f=h&255;if(h<<24>>24==28){if((b+3|0)>>>0>e>>>0){h=e;b=0;break}h=e;b=((d[g>>0]|0)<<8|(d[b+2>>0]|0))<<16>>16;break}else if(h<<24>>24!=29){if((h&255)<247){h=e;b=f+-139|0;break}b=(b+2|0)>>>0>e>>>0;if((h&255)<251){if(b){h=e;b=0;break}h=e;b=(d[g>>0]|0|(f<<8)+-63232)+108|0;break}else{if(b){h=e;b=0;break}h=e;b=(251-f<<8)+-108-(d[g>>0]|0)|0;break}}else{if((b+5|0)>>>0>e>>>0){h=e;b=0;break}h=e;b=(d[b+2>>0]|0)<<16|(d[g>>0]|0)<<24|(d[b+3>>0]|0)<<8|(d[b+4>>0]|0);break}}else{b=(Qs(b,e,0,0)|0)>>16;h=c[g>>2]|0}while(0);c[k+120>>2]=b;b=c[j>>2]|0;e=a[h>>0]|0;do if(e<<24>>24!=30){f=h+1|0;g=e&255;if(e<<24>>24==29){if((h+5|0)>>>0>b>>>0){b=0;break}b=(d[h+2>>0]|0)<<16|(d[f>>0]|0)<<24|(d[h+3>>0]|0)<<8|(d[h+4>>0]|0);break}else if(e<<24>>24!=28){if((e&255)<247){b=g+-139|0;break}b=(h+2|0)>>>0>b>>>0;if((e&255)<251){if(b){b=0;break}b=(d[f>>0]|0|(g<<8)+-63232)+108|0;break}else{if(b){b=0;break}b=(251-g<<8)+-108-(d[f>>0]|0)|0;break}}else{if((h+3|0)>>>0>b>>>0){b=0;break}b=((d[f>>0]|0)<<8|(d[h+2>>0]|0))<<16>>16;break}}else b=(Qs(h,b,0,0)|0)>>16;while(0);c[k+116>>2]=b;k=0;i=l;return k|0}function rl(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;n=c[b+412>>2]|0;m=b+28|0;if((c[b+404>>2]|0)>>>0>>0){n=161;i=o;return n|0}e=b+20|0;f=c[b+16>>2]|0;h=c[e>>2]|0;k=a[f>>0]|0;do if(k<<24>>24!=30){g=f+1|0;j=k&255;if(k<<24>>24==29){if((f+5|0)>>>0>h>>>0){l=h;e=0;break}l=h;e=(d[f+2>>0]|0)<<16|(d[g>>0]|0)<<24|(d[f+3>>0]|0)<<8|(d[f+4>>0]|0);break}else if(k<<24>>24!=28){if((k&255)<247){l=h;e=j+-139|0;break}e=(f+2|0)>>>0>h>>>0;if((k&255)<251){if(e){l=h;e=0;break}l=h;e=(d[g>>0]|0|(j<<8)+-63232)+108|0;break}else{if(e){l=h;e=0;break}l=h;e=(251-j<<8)+-108-(d[g>>0]|0)|0;break}}else{if((f+3|0)>>>0>h>>>0){l=h;e=0;break}l=h;e=((d[g>>0]|0)<<8|(d[f+2>>0]|0))<<16>>16;break}}else{j=(Qs(f,h,0,0)|0)>>16;l=c[e>>2]|0;e=j}while(0);c[n+132>>2]=e;e=b+24|0;h=c[e>>2]|0;f=a[l>>0]|0;do if(f<<24>>24!=30){g=l+1|0;j=f&255;if(f<<24>>24==28){if((l+3|0)>>>0>h>>>0){k=h;e=0;break}k=h;e=((d[g>>0]|0)<<8|(d[l+2>>0]|0))<<16>>16;break}else if(f<<24>>24!=29){if((f&255)<247){k=h;e=j+-139|0;break}e=(l+2|0)>>>0>h>>>0;if((f&255)<251){if(e){k=h;e=0;break}k=h;e=(d[g>>0]|0|(j<<8)+-63232)+108|0;break}else{if(e){k=h;e=0;break}k=h;e=(251-j<<8)+-108-(d[g>>0]|0)|0;break}}else{if((l+5|0)>>>0>h>>>0){k=h;e=0;break}k=h;e=(d[l+2>>0]|0)<<16|(d[g>>0]|0)<<24|(d[l+3>>0]|0)<<8|(d[l+4>>0]|0);break}}else{b=(Qs(l,h,0,0)|0)>>16;k=c[e>>2]|0;e=b}while(0);c[n+136>>2]=e;e=c[m>>2]|0;f=a[k>>0]|0;do if(f<<24>>24!=30){g=k+1|0;h=f&255;if(f<<24>>24==28){if((k+3|0)>>>0>e>>>0){e=0;break}e=((d[g>>0]|0)<<8|(d[k+2>>0]|0))<<16>>16;break}else if(f<<24>>24!=29){if((f&255)<247){e=h+-139|0;break}e=(k+2|0)>>>0>e>>>0;if((f&255)<251){if(e){e=0;break}e=(d[g>>0]|0|(h<<8)+-63232)+108|0;break}else{if(e){e=0;break}e=(251-h<<8)+-108-(d[g>>0]|0)|0;break}}else{if((k+5|0)>>>0>e>>>0){e=0;break}e=(d[k+2>>0]|0)<<16|(d[g>>0]|0)<<24|(d[k+3>>0]|0)<<8|(d[k+4>>0]|0);break}}else e=(Qs(k,e,0,0)|0)>>16;while(0);c[n+140>>2]=e;n=0;i=o;return n|0}function sl(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;h=c[d+652>>2]|0;c[k>>2]=0;if(!h){k=c[k>>2]|0;i=l;return k|0}j=h+2960|0;f=c[j>>2]|0;if(!f){f=ch(c[d+100>>2]|0,32,k)|0;if(c[k>>2]|0){k=c[k>>2]|0;i=l;return k|0}d=c[h+1324>>2]|0;do if((d|0)!=65535)if(d>>>0>390){d=d+-391|0;if((c[h+1312>>2]|0)>>>0<=d>>>0){d=0;break}d=c[(c[h+1316>>2]|0)+(d<<2)>>2]|0;break}else{g=c[h+2956>>2]|0;if(!g){d=0;break}d=Ld[c[g+20>>2]&511](d)|0;break}else d=0;while(0);c[f>>2]=d;d=c[h+1328>>2]|0;do if((d|0)!=65535)if(d>>>0>390){d=d+-391|0;if((c[h+1312>>2]|0)>>>0<=d>>>0){d=0;break}d=c[(c[h+1316>>2]|0)+(d<<2)>>2]|0;break}else{g=c[h+2956>>2]|0;if(!g){d=0;break}d=Ld[c[g+20>>2]&511](d)|0;break}else d=0;while(0);c[f+4>>2]=d;d=c[h+1336>>2]|0;do if((d|0)!=65535)if(d>>>0>390){d=d+-391|0;if((c[h+1312>>2]|0)>>>0<=d>>>0){d=0;break}d=c[(c[h+1316>>2]|0)+(d<<2)>>2]|0;break}else{g=c[h+2956>>2]|0;if(!g){d=0;break}d=Ld[c[g+20>>2]&511](d)|0;break}else d=0;while(0);c[f+8>>2]=d;d=c[h+1340>>2]|0;do if((d|0)!=65535)if(d>>>0>390){d=d+-391|0;if((c[h+1312>>2]|0)>>>0<=d>>>0){d=0;break}d=c[(c[h+1316>>2]|0)+(d<<2)>>2]|0;break}else{g=c[h+2956>>2]|0;if(!g){d=0;break}d=Ld[c[g+20>>2]&511](d)|0;break}else d=0;while(0);c[f+12>>2]=d;d=c[h+1344>>2]|0;do if((d|0)!=65535)if(d>>>0>390){d=d+-391|0;if((c[h+1312>>2]|0)>>>0<=d>>>0){d=0;break}d=c[(c[h+1316>>2]|0)+(d<<2)>>2]|0;break}else{g=c[h+2956>>2]|0;if(!g){d=0;break}d=Ld[c[g+20>>2]&511](d)|0;break}else d=0;while(0);c[f+16>>2]=d;c[f+20>>2]=c[h+1352>>2];a[f+24>>0]=a[h+1348>>0]|0;b[f+26>>1]=c[h+1356>>2];b[f+28>>1]=c[h+1360>>2];c[j>>2]=f};c[e+0>>2]=c[f+0>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];c[e+16>>2]=c[f+16>>2];c[e+20>>2]=c[f+20>>2];c[e+24>>2]=c[f+24>>2];c[e+28>>2]=c[f+28>>2];k=c[k>>2]|0;i=l;return k|0}function tl(a){a=a|0;return (c[a+8>>2]|0)>>>9&1|0}function ul(a){a=a|0;return c[(c[a+652>>2]|0)+1304>>2]|0}function vl(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;h=c[a+652>>2]|0;g=c[h+2956>>2]|0;do if(g){a=b[(c[h+1160>>2]|0)+(d<<1)>>1]|0;d=a&65535;if(a<<16>>16!=-1){if((a&65535)>390){a=d+-391|0;if((c[h+1312>>2]|0)>>>0<=a>>>0){a=0;break}a=c[(c[h+1316>>2]|0)+(a<<2)>>2]|0}else a=Ld[c[g+20>>2]&511](d)|0;if(a){Vi(e,a,f)|0;a=0}else a=0}else a=0}else a=11;while(0);i=j;return a|0}function wl(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;e=c[a+652>>2]|0;a=ei(c[a+96>>2]|0,8576)|0;if(!a){m=0;i=n;return m|0}j=e+12|0;if(!(c[j>>2]|0)){m=0;i=n;return m|0}k=e+1160|0;h=e+1312|0;g=e+1316|0;f=a+20|0;a=0;while(1){o=b[(c[k>>2]|0)+(a<<1)>>1]|0;e=o&65535;if((o&65535)>390){e=e+-391|0;if((c[h>>2]|0)>>>0>e>>>0){l=c[(c[g>>2]|0)+(e<<2)>>2]|0;m=8}}else{l=Ld[c[f>>2]&511](e)|0;m=8}if(((m|0)==8?(m=0,(l|0)!=0):0)?(qga(d,l)|0)==0:0){m=11;break}a=a+1|0;if(a>>>0>=(c[j>>2]|0)>>>0){a=0;m=11;break}}if((m|0)==11){i=n;return a|0}return 0}function xl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;d=c[(c[(c[a>>2]|0)+96>>2]|0)+4>>2]|0;c[b>>2]=0;c[b+4>>2]=0;f=c[a+12>>2]|0;if((f|0)==8488|(f|0)==8528){f=0;i=e;return f|0}d=ei(ci(d,8568)|0,12416)|0;if(!d){f=0;i=e;return f|0}d=c[d>>2]|0;if(!d){f=0;i=e;return f|0}f=Wd[d&511](a,b)|0;i=e;return f|0}function yl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;h=c[a+652>>2]|0;if(!h){e=0;i=j;return e|0}f=c[h+1456>>2]|0;if((f|0)==65535){e=6;i=j;return e|0}if(b){g=h+2964|0;a=c[g>>2]|0;if(!a){if(f>>>0>390){a=f+-391|0;if((c[h+1312>>2]|0)>>>0>a>>>0)a=c[(c[h+1316>>2]|0)+(a<<2)>>2]|0;else a=0}else{a=c[h+2956>>2]|0;if(!a)a=0;else a=Ld[c[a+20>>2]&511](f)|0}c[g>>2]=a}c[b>>2]=a}if(d){g=h+2968|0;a=c[g>>2]|0;if(!a){a=c[h+1460>>2]|0;do if((a|0)!=65535)if(a>>>0>390){a=a+-391|0;if((c[h+1312>>2]|0)>>>0<=a>>>0){a=0;break}a=c[(c[h+1316>>2]|0)+(a<<2)>>2]|0;break}else{f=c[h+2956>>2]|0;if(!f){a=0;break}a=Ld[c[f+20>>2]&511](a)|0;break}else a=0;while(0);c[g>>2]=a}c[d>>2]=a}if(!e){e=0;i=j;return e|0}c[e>>2]=c[h+1464>>2];e=0;i=j;return e|0}function zl(b,d){b=b|0;d=d|0;var e=0;e=i;b=c[b+652>>2]|0;a[d>>0]=0;if((b|0)!=0?(c[b+1456>>2]|0)!=65535:0)a[d>>0]=1;i=e;return 0}function Al(a,b,d){a=a|0;b=b|0;d=d|0;var f=0;f=i;a=c[a+652>>2]|0;if(a)if((c[a+1456>>2]|0)!=65535?(c[a+12>>2]|0)>>>0>=b>>>0:0)if(!d)a=0;else{c[d>>2]=e[(c[a+1160>>2]|0)+(b<<1)>>1];a=0}else a=6;else a=0;i=f;return a|0}function Bl(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;if(!(qga(d,12488)|0)){j=c[e>>2]|0;k=c[e+4>>2]|0;l=c[e+8>>2]|0;m=c[e+12>>2]|0;f=c[e+16>>2]|0;g=c[e+20>>2]|0;h=c[e+24>>2]|0;d=c[e+28>>2]|0;if(((j|0)>(l|0)?1:(k|j|l|m|f|g|h|d|0)<0)|(l|0)>(f|0)){b=6;i=n;return b|0}if((f|0)>(h|0)|(k|0)>500|(m|0)>500|(g|0)>500|(d|0)>500){b=6;i=n;return b|0}c[b+36>>2]=j;c[b+40>>2]=k;c[b+44>>2]=l;c[b+48>>2]=m;c[b+52>>2]=f;c[b+56>>2]=g;c[b+60>>2]=h;c[b+64>>2]=d;b=0;i=n;return b|0}if(!(qga(d,12512)|0)){if((c[e>>2]|0)!=1){b=7;i=n;return b|0}c[b+28>>2]=1;b=0;i=n;return b|0}else{if(qga(d,12528)|0){b=12;i=n;return b|0}a[b+32>>0]=a[e>>0]|0;b=0;i=n;return b|0}return 0}function Cl(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=i;if(!(qga(d,12488)|0)){c[e>>2]=c[b+36>>2];c[e+4>>2]=c[b+40>>2];c[e+8>>2]=c[b+44>>2];c[e+12>>2]=c[b+48>>2];c[e+16>>2]=c[b+52>>2];c[e+20>>2]=c[b+56>>2];c[e+24>>2]=c[b+60>>2];c[e+28>>2]=c[b+64>>2];e=0;i=f;return e|0}if(!(qga(d,12512)|0)){c[e>>2]=c[b+28>>2];e=0;i=f;return e|0}if(qga(d,12528)|0){e=12;i=f;return e|0}a[e>>0]=a[b+32>>0]|0;e=0;i=f;return e|0}function Dl(a){a=a|0;return 0}function El(a){a=a|0;return}function Fl(a,b){a=a|0;b=b|0;var c=0;c=i;a=nh(15376,b)|0;i=c;return a|0}function Gl(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;R=i;i=i+640|0;N=R+112|0;y=R+368|0;Q=R+8|0;P=R;c[f>>2]=1;K=f+136|0;do if(!(c[K>>2]|0)){h=di(c[(c[f+96>>2]|0)+4>>2]|0,12672)|0;if(!h){g=11;i=R;return g|0}else{c[K>>2]=h;break}}while(0);h=f+320|0;if(!(c[h>>2]|0))c[h>>2]=di(c[(c[f+96>>2]|0)+4>>2]|0,12656)|0;h=Hh(e,0)|0;if(h){g=h;i=R;return g|0}J=f+100|0;D=c[J>>2]|0;j=Q+0|0;e=j+104|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(e|0));E=f+104|0;w=c[E>>2]|0;h=c[K>>2]|0;j=Q+0|0;e=j+100|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(e|0));de[c[c[h+4>>2]>>2]&63](Q,0,0,D);M=Q+72|0;c[M>>2]=w;t=ui(w)|0;h=yi(w,31)|0;a:do if(!h){H=(rga(c[w+32>>2]|0,15312,31)|0)==0;Bi(w);if(!H){c[P>>2]=2;break}l=w+4|0;n=y+10|0;s=y;q=10-s|0;u=Q+76|0;F=Q+84|0;v=Q+80|0;r=Q+4|0;x=Q+8|0;z=Q+96|0;A=Q+32|0;B=Q+28|0;C=Q+12|0;s=7-s|0;b:while(1){j=ui(w)|0;h=c[l>>2]|0;o=ui(w)|0;if((h|0)==(o|0)){h=3;O=37;break a}o=h-o|0;p=0;e=y;h=266;c:while(1){o=(h|0)<(o|0)?h:o;h=pi(w,e,o)|0;if(h){O=37;break a}if((o|0)<256)a[y+(o+p)>>0]=0;H=p+-10+o|0;e=y+H|0;if((H|0)>0){p=a[y>>0]|0;o=y;while(1){if(p<<24>>24==83?(rga(o,15344,9)|0)==0:0){h=j;O=19;break c}h=o+1|0;p=a[h>>0]|0;if(p<<24>>24==115?(rga(o,15360,6)|0)==0:0){h=j;O=23;break c}if(h>>>0>=e>>>0)break;else o=h}}else h=y;Bga(y|0,h|0,10)|0;h=c[l>>2]|0;o=ui(w)|0;if((h|0)==(o|0)){h=3;O=37;break a}else{o=h-o|0;p=10;j=j+256|0;e=n;h=256}}if((O|0)==19){O=0;o=q+o|0}else if((O|0)==23){O=0;o=s+o|0}m=o+h|0;o=m-t|0;h=Hh(w,t)|0;if(h){O=37;break a}h=xi(w,o,u)|0;if(h){O=37;break a}c[F>>2]=m;c[v>>2]=o;j=c[u>>2]|0;c[r>>2]=j;c[Q>>2]=j;c[x>>2]=j+o;c[z>>2]=-1;Id[c[A>>2]&511](Q);Id[c[B>>2]&511](Q);h=c[Q>>2]|0;Id[c[A>>2]&511](Q);Id[c[B>>2]&511](Q);p=c[x>>2]|0;o=c[Q>>2]|0;if(o>>>0

>>0){e=h;while(1){h=c[C>>2]|0;if(h){O=37;break a}if((a[o>>0]|0)==83?(rga(o,15344,9)|0)==0:0){h=e;break b}if((a[o+1>>0]|0)==115?(rga(o,15360,6)|0)==0:0){h=2;O=37;break a}Id[c[A>>2]&511](Q);Id[c[B>>2]&511](Q);h=c[Q>>2]|0;if(h>>>0

>>0){H=o;j=e;o=h;e=H}else break}}zi(w,u);h=Hh(w,m)|0;if(h){O=37;break a}}if(!(rga(j,15368,5)|0))c[Q+88>>2]=jga(h)|0;c[P>>2]=0;h=c[u>>2]|0;v=c[v>>2]|0;c[Q>>2]=h;w=h+v|0;c[x>>2]=w;c[C>>2]=0;I=f+300|0;n=f+140|0;H=f+304|0;q=Q+68|0;r=Q+64|0;s=f+164|0;t=f+312|0;u=f+196|0;v=h+(v+-18)|0;d:while(1){c[Q>>2]=h;Id[c[B>>2]&511](Q);m=c[Q>>2]|0;j=m>>>0>>0;o=j?m+-17|0:v;if(h>>>0>>0)do{if(((a[h>>0]|0)==37?(rga(h,12704,17)|0)==0:0)?(c[I>>2]|0)>0:0)c[z>>2]=(c[z>>2]|0)+1;h=h+1|0}while((h|0)!=(o|0));if(!j){O=47;break}Id[c[A>>2]&511](Q);l=c[Q>>2]|0;h=c[C>>2]|0;if(!(l>>>0>>0&(h|0)==0))break;if(!((a[m>>0]|0)==47&(m+2|0)>>>0>>0)){h=l;continue}h=m+1|0;p=l-h|0;if((p+-1|0)>>>0>=21){h=l;continue}e=a[h>>0]|0;e:do if((p|0)>1){h=14568;j=12728;while(1){f:do if(e<<24>>24==(a[h>>0]|0)?(p|0)==(Dga(h|0)|0):0){o=1;while(1){y=o;o=o+1|0;if((a[m+o>>0]|0)!=(a[h+y>>0]|0))break f;if((o|0)>=(p|0))break e}}while(0);j=j+36|0;h=c[j>>2]|0;if(!h){h=l;continue d}}}else{h=14568;j=12728;while(1){if(e<<24>>24==(a[h>>0]|0)?(p|0)==(Dga(h|0)|0):0)break e;j=j+36|0;h=c[j>>2]|0;if(!h){h=l;continue d}}}while(0);o=c[j+8>>2]|0;do if((o|0)!=11){h=c[j+4>>2]|0;if((h|0)==5)h=u;else if((h|0)==3)h=s;else if(!h)h=n;else if((h|0)==2)h=t;else{h=c[z>>2]|0;if((h|0)<0){O=71;break d}if((h|0)>=(c[I>>2]|0)){O=71;break d}h=(c[H>>2]|0)+(h*252|0)|0}c[N>>2]=h;if((o+-9|0)>>>0<2){h=Xd[c[q>>2]&127](Q,j,N,0,0)|0;break}else{h=Xd[c[r>>2]&127](Q,j,N,0,0)|0;break}}else{Jd[c[j+12>>2]&255](f,Q);h=c[C>>2]|0}while(0);c[C>>2]=h;if(h){O=75;break}h=c[Q>>2]|0}if((O|0)==47)h=c[C>>2]|0;else if((O|0)==71){c[C>>2]=160;h=160;O=75}if((O|0)==75){c[P>>2]=h;break}c[P>>2]=h;if(!((h|0)!=0|(g|0)<0)?(G=ch(D,40,P)|0,L=f+328|0,c[L>>2]=G,(c[P>>2]|0)==0):0){t=Q+88|0;h=c[t>>2]|0;if(!h){j=G+0|0;h=(c[E>>2]|0)+0|0;e=j+40|0;do{c[j>>2]=c[h>>2];j=j+4|0;h=h+4|0}while((j|0)<(e|0));c[f+308>>2]=c[F>>2]}else{j=ch(D,h,P)|0;s=f+324|0;c[s>>2]=j;if(c[P>>2]|0)break;h=c[t>>2]|0;r=c[E>>2]|0;if(Hh(r,c[F>>2]|0)|0)break;q=j+h|0;g:do if((h|0)>0){n=r+4|0;h=N;e=N;p=1;while(1){h:while(1){if(h>>>0>=e>>>0){e=ui(r)|0;G=c[n>>2]|0;h=G-e|0;if((G|0)==(e|0))break a;if(pi(r,N,h>>>0<256?h:256)|0)break a;h=N;e=N+((ui(r)|0)-e)|0}l=a[h>>0]|0;m=l&255;if((m+-48|0)>>>0<10){O=93;break}if((l+-97<<24>>24&255)<6){O=94;break}if((l+-65<<24>>24&255)<6){O=95;break}switch(l<<24>>24){case 0:case 12:case 10:case 13:case 9:case 32:break;case 62:{o=1;m=0;break h}default:break a}h=h+1|0}if((O|0)==93){O=0;o=0;m=m+208&255}else if((O|0)==94){O=0;o=0;m=m+159&255}else if((O|0)==95){O=0;o=0;m=m+201&255}if(!(p<<24>>24)){a[j>>0]=(d[j>>0]|0)+(m&255);j=j+1|0}else a[j>>0]=(m&255)<<4;if(o<<24>>24)break g;if(j>>>0>>0){h=h+1|0;p=1-(p&255)&255}else break}}while(0);rh(c[L>>2]|0,c[s>>2]|0,c[t>>2]|0);c[f+308>>2]=0}B=c[J>>2]|0;z=c[L>>2]|0;h=c[K>>2]|0;j=hh(B,8,0,c[I>>2]|0,0,N)|0;A=f+316|0;c[A>>2]=j;i:do if((c[N>>2]|0)==0?(c[I>>2]|0)>0:0){x=f+308|0;y=z+32|0;v=h+16|0;m=0;w=0;h=0;j:while(1){l=c[H>>2]|0;s=c[l+(w*252|0)+4>>2]|0;u=c[l+(w*252|0)+240>>2]|0;if((u|0)==-1){O=107;break}r=u+1|0;if(r>>>0>m>>>0){e=u+4&-4;if(e>>>0<=m>>>0){O=110;break}h=hh(B,4,m,e,h,N)|0;if(!(c[N>>2]|0))t=e;else break}else t=m;L=Hh(z,(c[l+(w*252|0)+244>>2]|0)+(c[x>>2]|0)|0)|0;c[N>>2]=L;if(L)break;e=l+(w*252|0)+248|0;L=yi(z,ea(c[e>>2]|0,r)|0)|0;c[N>>2]=L;if(L)break;o=c[e>>2]|0;n=o&255;o=(o+255&255)+1|0;if(!(n<<24>>24)){e=0;do{c[h+(e<<2)>>2]=0;e=e+1|0}while(e>>>0<=u>>>0)}else{p=c[y>>2]|0;q=0;while(1){m=n;l=p;e=0;while(1){e=d[l>>0]|e<<8;m=m+-1<<24>>24;if(!(m<<24>>24))break;else l=l+1|0}c[h+(q<<2)>>2]=e;q=q+1|0;if(q>>>0>u>>>0)break;else p=p+o|0}}Bi(z);n=(u|0)==0;e=c[h>>2]|0;if(!n){m=e;l=1;do{L=m;m=c[h+(l<<2)>>2]|0;l=l+1|0;if(L>>>0>m>>>0)break j}while(l>>>0<=u>>>0)}e=(c[h+(u<<2)>>2]|0)-e|0;o=j+4|0;c[o>>2]=hh(B,4,0,r,0,N)|0;if(c[N>>2]|0)break;L=ch(B,e,N)|0;c[c[o>>2]>>2]=L;if(c[N>>2]|0)break;L=Hh(z,(c[h>>2]|0)+(c[x>>2]|0)|0)|0;c[N>>2]=L;if(L)break;L=pi(z,c[c[o>>2]>>2]|0,e)|0;c[N>>2]=L;if(L)break;do if(!n){l=c[h>>2]|0;e=l;m=1;do{K=e;e=c[h+(m<<2)>>2]|0;L=c[o>>2]|0;c[L+(m<<2)>>2]=(c[L+(m+-1<<2)>>2]|0)+(e-K);m=m+1|0}while(m>>>0<=u>>>0);if((s|0)<0)break;e=h+4|0;$d[c[v>>2]&255](c[c[o>>2]>>2]|0,(c[e>>2]|0)-l|0,4330);if((u|0)==1)break;else m=1;do{K=m;m=m+1|0;L=e;e=h+(m<<2)|0;$d[c[v>>2]&255](c[(c[o>>2]|0)+(K<<2)>>2]|0,(c[e>>2]|0)-(c[L>>2]|0)|0,4330)}while((m|0)!=(u|0))}while(0);c[j>>2]=u;w=w+1|0;if((w|0)>=(c[I>>2]|0))break i;else{m=t;j=j+8|0}}if((O|0)==107)c[N>>2]=160;else if((O|0)==110)c[N>>2]=160;j=c[A>>2]|0;if(j){if((c[I>>2]|0)>0){e=0;do{j=c[j+(e<<3)+4>>2]|0;if(!j)j=0;else{eh(B,c[j>>2]|0);c[c[(c[A>>2]|0)+(e<<3)+4>>2]>>2]=0;j=c[(c[A>>2]|0)+(e<<3)+4>>2]|0}eh(B,j);j=c[A>>2]|0;c[j+(e<<3)+4>>2]=0;e=e+1|0}while((e|0)<(c[I>>2]|0))}eh(B,j);c[A>>2]=0}}else h=0;while(0);eh(B,h);c[P>>2]=c[N>>2]}}else O=37;while(0);if((O|0)==37)c[P>>2]=h;h=Q+76|0;if(c[h>>2]|0)zi(c[M>>2]|0,h);Id[c[Q+24>>2]&511](Q);h=c[P>>2]|0;if((h|0)!=0|(g|0)<0){g=h;i=R;return g|0}if(g){g=6;i=R;return g|0}m=f+140|0;n=m+24|0;c[f+16>>2]=c[m+156>>2];c[f+36>>2]=0;c[f+4>>2]=0;c[f+8>>2]=(a[m+48>>0]|0)==0?2065:2069;e=c[m+36>>2]|0;j=f+20|0;c[j>>2]=e;l=f+24|0;c[l>>2]=12680;k:do if(!e){h=c[m>>2]|0;if(h)c[j>>2]=h}else{h=c[m+32>>2]|0;if((h|0)!=0?(k=a[h>>0]|0,k<<24>>24!=0):0){l:while(1){while(1){j=a[e>>0]|0;if(k<<24>>24==j<<24>>24){O=150;break}if(k<<24>>24==45|k<<24>>24==32)break;if(!(j<<24>>24))break l;else if(!(j<<24>>24==45|j<<24>>24==32))break k;if(!(k<<24>>24))break k;else e=e+1|0}if((O|0)==150){O=0;e=e+1|0}h=h+1|0;k=a[h>>0]|0;if(!(k<<24>>24))break k}c[l>>2]=h}}while(0);e=f+12|0;h=(c[m+44>>2]|0)!=0&1;c[e>>2]=h;k=c[m+40>>2]|0;do if(k){if((qga(k,12688)|0)!=0?(qga(k,12696)|0)!=0:0)break;c[e>>2]=h|2}while(0);c[f+28>>2]=0;c[f+32>>2]=0;c[f+52>>2]=c[m+56>>2]>>16;k=c[m+60>>2]>>16;c[f+56>>2]=k;c[f+60>>2]=(c[m+64>>2]|0)+65535>>16;j=(c[m+68>>2]|0)+65535>>16;c[f+64>>2]=j;e=f+68|0;h=b[e>>1]|0;if(!(h<<16>>16)){b[e>>1]=1e3;h=1e3}b[f+70>>1]=j;b[f+72>>1]=k;g=(((h&65535)*12|0)>>>0)/10|0;Q=j-k|0;b[f+74>>1]=(g<<16>>16|0)<(Q|0)?Q:g;b[f+80>>1]=b[n+26>>1]|0;b[f+82>>1]=b[m+52>>1]|0;g=0;i=R;return g|0}function Hl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;if(!a){i=n;return}j=a+140|0;k=j+24|0;l=c[a+100>>2]|0;m=a+316|0;b=c[m>>2]|0;h=j+160|0;if(b){d=c[h>>2]|0;if((d|0)>0){g=0;do{e=b+(g<<3)+4|0;f=c[e>>2]|0;if(f){eh(l,c[f>>2]|0);c[c[e>>2]>>2]=0;eh(l,c[e>>2]|0);c[e>>2]=0;d=c[h>>2]|0;b=c[m>>2]|0}g=g+1|0}while((g|0)<(d|0))}eh(l,b);c[m>>2]=0}eh(l,c[k>>2]|0);c[k>>2]=0;m=j+28|0;eh(l,c[m>>2]|0);c[m>>2]=0;m=j+32|0;eh(l,c[m>>2]|0);c[m>>2]=0;m=j+36|0;eh(l,c[m>>2]|0);c[m>>2]=0;m=j+40|0;eh(l,c[m>>2]|0);c[m>>2]=0;m=j+164|0;eh(l,c[m>>2]|0);c[m>>2]=0;c[h>>2]=0;eh(l,c[j>>2]|0);c[j>>2]=0;m=j+12|0;eh(l,c[m>>2]|0);c[m>>2]=0;m=j+16|0;eh(l,c[m>>2]|0);c[m>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;m=a+324|0;eh(l,c[m>>2]|0);c[m>>2]=0;a=a+328|0;eh(l,c[a>>2]|0);c[a>>2]=0;i=n;return}function Il(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=c[a>>2]|0;b=c[d+320>>2]|0;d=ci(c[(c[d+96>>2]|0)+4>>2]|0,12656)|0;if(!((d|0)!=0&(b|0)!=0)){a=0;i=f;return a|0}b=c[b>>2]|0;if(!b){a=0;i=f;return a|0}b=Ld[b&511](d)|0;if(!b){a=0;i=f;return a|0}d=c[a>>2]|0;b=Od[c[b>>2]&255](c[d+100>>2]|0,(c[d+304>>2]|0)+((c[d+4>>2]|0)*252|0)|0,e)|0;if(b){a=b;i=f;return a|0}c[a+40>>2]=c[e>>2];a=0;i=f;return a|0}function Jl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;d=a+40|0;if(!(c[d>>2]|0)){i=g;return}b=c[a>>2]|0;a=c[b+320>>2]|0;b=ci(c[(c[b+96>>2]|0)+4>>2]|0,12656)|0;if(((b|0)!=0&(a|0)!=0?(e=c[a>>2]|0,(e|0)!=0):0)?(f=Ld[e&511](b)|0,(f|0)!=0):0)Id[c[f+8>>2]&511](c[d>>2]|0);c[d>>2]=0;i=g;return}function Kl(a){a=a|0;var b=0,d=0,e=0;e=i;b=c[a+4>>2]|0;d=c[b+320>>2]|0;if(!d){i=e;return 0}b=ci(c[(c[b+96>>2]|0)+4>>2]|0,12656)|0;if(!b){i=e;return 0}d=Ld[c[d+4>>2]&511](b)|0;c[(c[a+156>>2]|0)+36>>2]=d;i=e;return 0}function Ll(a){a=a|0;c[(c[a+156>>2]|0)+36>>2]=0;return}function Ml(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+1552|0;x=C+40|0;s=C;B=C+16|0;r=C+32|0;m=c[d+4>>2]|0;k=c[m+136>>2]|0;if((c[m+16>>2]|0)>>>0<=g>>>0){d=6;i=C;return d|0}A=(h&1024|0)==0?h:h|3;t=d+164|0;c[t>>2]=c[f+16>>2];u=d+168|0;c[u>>2]=c[f+20>>2];z=d+108|0;b[d+110>>1]=0;b[z>>1]=0;n=(A&1|0)==0;if(n)v=(A>>>1&1^1)&255;else v=0;o=d+72|0;c[o>>2]=1869968492;k=k+12|0;h=_d[c[c[k>>2]>>2]&3](x,m,f,d,0,0,v,A>>>16&15,194)|0;if(h){d=h;i=C;return d|0}j=A&1024;a[x+69>>0]=j>>>10;h=Rs(x,g)|0;if(h){d=h;i=C;return d|0}g=x+1376|0;c[s+0>>2]=c[g+0>>2];c[s+4>>2]=c[g+4>>2];c[s+8>>2]=c[g+8>>2];c[s+12>>2]=c[g+12>>2];g=c[x+1392>>2]|0;l=c[x+1396>>2]|0;Id[c[(c[k>>2]|0)+4>>2]&511](x);h=d+124|0;c[h>>2]=c[h>>2]&1|4;if(j){B=c[d+156>>2]|0;c[d+32>>2]=(Rg(c[x+32>>2]|0)|0)>>16;c[d+40>>2]=(Rg(c[x+40>>2]|0)|0)>>16;d=B+12|0;c[d+0>>2]=c[s+0>>2];c[d+4>>2]=c[s+4>>2];c[d+8>>2]=c[s+8>>2];c[d+12>>2]=c[s+12>>2];c[B+28>>2]=g;c[B+32>>2]=l;a[B+8>>0]=1;d=0;i=C;return d|0}p=d+24|0;j=x+40|0;q=d+40|0;c[q>>2]=(Rg(c[j>>2]|0)|0)>>16;c[d+56>>2]=(Rg(c[j>>2]|0)|0)>>16;a[(c[d+156>>2]|0)+8>>0]=0;j=m+140|0;j=(c[j+68>>2]|0)-(c[j+60>>2]|0)>>16;m=d+52|0;c[m>>2]=j;c[d+60>>2]=j;c[o>>2]=1869968492;if((e[f+14>>1]|0)<24)c[h>>2]=c[h>>2]|256;Ah(z,s);Bh(z,g,l);c[r>>2]=c[q>>2];f=r+4|0;c[f>>2]=0;Ch(r,s);c[q>>2]=(c[r>>2]|0)+g;c[r>>2]=0;c[f>>2]=c[m>>2];Ch(r,s);c[m>>2]=(c[f>>2]|0)+l;if(n){g=c[x+16>>2]|0;h=c[g+4>>2]|0;k=c[t>>2]|0;j=c[u>>2]|0;if(!(v<<24>>24!=0?(c[x+72>>2]|0)!=0:0))y=13;if((y|0)==13?(w=b[g+2>>1]|0,w<<16>>16>0):0){g=w<<16>>16;while(1){c[h>>2]=Wg(c[h>>2]|0,k)|0;y=h+4|0;c[y>>2]=Wg(c[y>>2]|0,j)|0;g=g+-1|0;if((g|0)<=0)break;else h=h+8|0}}c[q>>2]=Wg(c[q>>2]|0,k)|0;c[m>>2]=Wg(c[m>>2]|0,j)|0}mi(z,B);y=c[B>>2]|0;c[p>>2]=(c[B+8>>2]|0)-y;z=c[B+12>>2]|0;c[d+28>>2]=z-(c[B+4>>2]|0);c[d+32>>2]=y;c[d+36>>2]=z;if(!(A&16)){d=0;i=C;return d|0}Nh(p,c[m>>2]|0);d=0;i=C;return d|0}function Nl(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;Ph(c[a>>2]|0,b);d=c[a>>2]|0;b=c[d+320>>2]|0;d=ci(c[(c[d+96>>2]|0)+4>>2]|0,12656)|0;if(!((d|0)!=0&(b|0)!=0)){i=e;return 0}b=c[b>>2]|0;if(!b){i=e;return 0}b=Ld[b&511](d)|0;if(!b){i=e;return 0}Xd[c[b+4>>2]&127](c[a+40>>2]|0,c[a+16>>2]|0,c[a+20>>2]|0,0,0)|0;i=e;return 0}function Ol(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g;d=c[a+100>>2]|0;c[f>>2]=0;e=Ld[c[b+36>>2]&511](b)|0;b=a+304|0;if(c[b>>2]|0){i=g;return}d=hh(d,252,0,e,0,f)|0;c[b>>2]=d;if(c[f>>2]|0){i=g;return}c[a+300>>2]=e;if((e|0)>0)b=0;else{i=g;return}do{c[d+(b*252|0)+4>>2]=4;b=b+1|0}while((b|0)<(e|0));i=g;return}function Pl(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;k=l;h=c[d+96>>2]|0;if((h|0)<=-1){i=l;return}if((h|0)>=(c[a+300>>2]|0)){i=l;return}j=c[a+304>>2]|0;ce[c[d+52>>2]&255](d,6,k,3)|0;g=k+12|0;d=c[g>>2]|0;d=(d|0)<0?0-d|0:d;b[a+68>>1]=Xg(1e3,d)|0;if((d|0)==65536){d=k+8|0;a=k+16|0;e=k+20|0;f=k+4|0}else{c[k>>2]=Xg(c[k>>2]|0,d)|0;f=k+4|0;c[f>>2]=Xg(c[f>>2]|0,d)|0;m=k+8|0;c[m>>2]=Xg(c[m>>2]|0,d)|0;a=k+16|0;c[a>>2]=Xg(c[a>>2]|0,d)|0;e=k+20|0;c[e>>2]=Xg(c[e>>2]|0,d)|0;c[g>>2]=65536;d=m}c[j+(h*252|0)+216>>2]=c[k>>2];c[j+(h*252|0)+224>>2]=c[f>>2];c[j+(h*252|0)+220>>2]=c[d>>2];c[j+(h*252|0)+228>>2]=c[g>>2];c[j+(h*252|0)+232>>2]=c[a>>2]>>16;c[j+(h*252|0)+236>>2]=c[e>>2]>>16;i=l;return}function Ql(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;d=c[b+96>>2]|0;if((d|0)<=-1){i=e;return}if((d|0)>=(c[a+300>>2]|0)){i=e;return}a=c[a+304>>2]|0;b=Wd[c[b+40>>2]&511](b,0)|0;c[a+(d*252|0)+208>>2]=b;c[a+(d*252|0)+180>>2]=b;i=e;return}function Rl(b){b=b|0;var d=0;d=i;b=c[b+140>>2]|0;if(!b){i=d;return 0}else{i=d;return ((a[b>>0]|0)==47?b+1|0:b)|0}return 0}function Sl(a,b){a=a|0;b=b|0;a=a+164|0;c[b+0>>2]=c[a+0>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];c[b+16>>2]=c[a+16>>2];c[b+20>>2]=c[a+20>>2];c[b+24>>2]=c[a+24>>2];c[b+28>>2]=c[a+28>>2];return 0}function Tl(a,c){a=a|0;c=c|0;b[c>>1]=b[a+312>>1]|0;return 0}function Ul(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if(b)c[b>>2]=c[a+152>>2];if(d)c[d>>2]=c[a+156>>2];if(!e){i=f;return 0}c[e>>2]=c[a+160>>2];i=f;return 0}function Vl(b,c){b=b|0;c=c|0;if(c)a[c>>0]=1;return 0}function Wl(a,b,d){a=a|0;b=b|0;d=d|0;if(d)c[d>>2]=b;return 0}function Xl(a,b){a=a|0;b=b|0;b=c[a>>2]|0;c[a+16>>2]=c[b+296>>2];c[a+20>>2]=c[b+300>>2];return 0}function Yl(a){a=a|0;c[a+20>>2]=0;c[a+16>>2]=0;return}function Zl(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0;k=i;h=c[a+20>>2]|0;a=c[a+16>>2]|0;if(!a){j=0;i=k;return j|0}else{f=a;g=0}while(1){a=(g+f|0)>>>1;d=c[h+(a<<3)>>2]|0;if((d|0)==(b|0))break;d=d>>>0>b>>>0;f=d?a:f;g=d?g:a+1|0;if(g>>>0>=f>>>0){a=0;j=5;break}}if((j|0)==5){i=k;return a|0}j=(e[h+(a<<3)+4>>1]|0)+1|0;i=k;return j|0}function _l(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;k=c[a+20>>2]|0;j=(c[b>>2]|0)+1|0;h=c[a+16>>2]|0;a:do if(!h)a=0;else{g=h;f=0;while(1){a=(f+g|0)>>>1;d=c[k+(a<<3)>>2]|0;if((j|0)==(d|0))break;d=j>>>0>>0;g=d?a:g;a=d?f:a+1|0;if(a>>>0>=g>>>0)break a;else f=a}h=j;k=(e[k+(a<<3)+4>>1]|0)+1|0;c[b>>2]=h;i=l;return k|0}while(0);if(a>>>0>=h>>>0){h=0;k=0;c[b>>2]=h;i=l;return k|0}h=c[k+(a<<3)>>2]|0;k=(e[k+(a<<3)+4>>1]|0)+1|0;c[b>>2]=h;i=l;return k|0}function $l(a,b){a=a|0;b=b|0;a=i;b=nh(21808,b)|0;i=a;return b|0}function am(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0;k=i;i=i+16|0;j=k;a:do if(Ss(d,e)|0){bm(e);f=e+132|0;g=xj(f,d)|0;do if((g&255|0)!=7){if((g|0)!=0?(h=zj(f,d)|0,!((h&255|0)!=7&(h|0)==0)):0)break;c[e+172>>2]=d;c[e+104>>2]=f;if(!(Ss(f,e)|0))break a}while(0);bm(e);e=2;i=k;return e|0}while(0);f=c[e+180>>2]|0;g=c[e+176>>2]|0;do if((((f|0)!=0&(g|0)!=0?(h=a[f>>0]|0,h<<24>>24==73|h<<24>>24==105):0)?(h=a[f+1>>0]|0,h<<24>>24==83|h<<24>>24==115):0)?(h=a[f+2>>0]|0,h<<24>>24==79|h<<24>>24==111):0){f=f+3|0;if(qga(f,21256)|0){if(qga(f,21264)|0){d=0;break}if(qga(g,21272)|0){d=0;break}}d=1}else d=0;while(0);c[j>>2]=e;f=j+4|0;c[f>>2]=0;g=j+8|0;b[g>>1]=0;h=j+10|0;b[h>>1]=0;if(d){c[f>>2]=1970170211;b[g>>1]=3;b[h>>1]=1}e=Wh(21112,0,j,0)|0;i=k;return e|0}function bm(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;if(!b){i=k;return}h=c[b+100>>2]|0;j=b+300|0;eh(h,c[j>>2]|0);c[j>>2]=0;j=b+292|0;eh(h,c[j>>2]|0);c[j>>2]=0;j=b+284|0;d=c[j>>2]|0;if(d){g=b+280|0;if((c[g>>2]|0)>0){f=0;do{e=d+(f*12|0)|0;if((e|0)!=0?(eh(h,c[e>>2]|0),c[e>>2]=0,(a[d+(f*12|0)+4>>0]|0)!=0):0){e=d+(f*12|0)+8|0;eh(h,c[e>>2]|0);c[e>>2]=0}f=f+1|0;d=c[j>>2]|0}while((f|0)<(c[g>>2]|0))}eh(h,d);c[j>>2]=0}d=b+192|0;eh(h,c[d>>2]|0);c[d>>2]=0;d=b+20|0;eh(h,c[d>>2]|0);c[d>>2]=0;d=b+24|0;eh(h,c[d>>2]|0);c[d>>2]=0;d=b+32|0;eh(h,c[d>>2]|0);c[d>>2]=0;d=b+176|0;eh(h,c[d>>2]|0);c[d>>2]=0;d=b+180|0;eh(h,c[d>>2]|0);c[d>>2]=0;d=b+104|0;e=c[d>>2]|0;if((e|0)!=(b+132|0)){i=k;return}th(e);c[d>>2]=c[b+172>>2];i=k;return}function cm(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;s=c[f>>2]|0;if(!s){e=6;i=t;return e|0}if((c[s+16>>2]|0)>>>0<=g>>>0){e=6;i=t;return e|0}j=c[s+104>>2]|0;r=(g|0)==0?0:g+-1|0;m=c[s+292>>2]|0;n=m+(r<<4)+6|0;g=(b[m+(r<<4)+8>>1]|0)+(b[n>>1]|0)|0;o=e+76|0;c[o>>2]=g;p=m+(r<<4)+2|0;q=m+(r<<4)|0;h=(b[p>>1]|0)-(b[q>>1]|0)|0;c[e+80>>2]=h;b[e+92>>1]=1;a[e+94>>0]=1;l=s+308|0;f=1<<(c[l>>2]&3);if((f|0)==2){h=h+15>>4<<1;c[e+84>>2]=h}else if((f|0)==1){h=h+7>>3;c[e+84>>2]=h}else if((f|0)==4){h=h+31>>5<<2;c[e+84>>2]=h}else if((f|0)==8){h=h+63>>6<<3;c[e+84>>2]=h}else{e=3;i=t;return e|0}f=ea(g,h)|0;h=wh(e,f)|0;if(h){e=h;i=t;return e|0}h=Hh(j,c[m+(r<<4)+12>>2]|0)|0;if(h){e=h;i=t;return e|0}k=e+88|0;h=pi(j,c[k>>2]|0,f)|0;if(h){e=h;i=t;return e|0}h=c[l>>2]|0;if(!((h&8|0)!=0|(f|0)==0)){h=f;g=c[k>>2]|0;while(1){j=d[g>>0]|0;j=j>>>1&85|j<<1&170;j=j>>>2&51|j<<2&204;a[g>>0]=j>>>4|j<<4;h=h+-1|0;if(!h)break;else g=g+1|0}h=c[l>>2]|0}do if((h>>>2^h>>>3)&1){h=1<<(h>>>4&3);if((h|0)==4){if(f>>>0<=3)break;h=c[k>>2]|0;while(1){l=a[h>>0]|0;g=h+3|0;a[h>>0]=a[g>>0]|0;a[g>>0]=l;g=h+1|0;l=a[g>>0]|0;k=h+2|0;a[g>>0]=a[k>>0]|0;a[k>>0]=l;f=f+-4|0;if(f>>>0<=3)break;else h=h+4|0}}else if((h|0)==2){if(f>>>0<=1)break;h=c[k>>2]|0;while(1){l=a[h>>0]|0;k=h+1|0;a[h>>0]=a[k>>0]|0;a[k>>0]=l;f=f+-2|0;if(f>>>0<=1)break;else h=h+2|0}}else break}while(0);c[e+72>>2]=1651078259;k=b[q>>1]|0;c[e+100>>2]=k;l=b[n>>1]|0;c[e+104>>2]=l;q=e+24|0;c[e+40>>2]=b[m+(r<<4)+4>>1]<<6;c[e+32>>2]=k<<6;c[e+36>>2]=l<<6;c[q>>2]=(b[p>>1]|0)-k<<6;c[e+28>>2]=c[o>>2]<<6;e=s+196|0;Nh(q,(c[e+12>>2]|0)+(c[e+8>>2]|0)<<6);e=0;i=t;return e|0}function dm(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;h=c[a>>2]|0;f=c[d+16>>2]|0;e=c[d+8>>2]|0;if(f)e=((ea(e,f)|0)+36|0)/72|0;g=e+32>>6;e=c[d>>2]|0;do if(!e)if((g|0)==((c[(c[h+32>>2]|0)+12>>2]|0)+32>>6|0)){e=h+196|0;f=e+8|0;e=e+12|0;break}else{a=23;i=j;return a|0}else if((e|0)==1){e=h+196|0;f=e+8|0;e=e+12|0;if((g|0)!=((c[e>>2]|0)+(c[f>>2]|0)|0)){a=23;i=j;return a|0}}else{a=7;i=j;return a|0}while(0);Oh(h,0);c[a+24>>2]=c[f>>2]<<6;c[a+28>>2]=0-(c[e>>2]|0)<<6;c[a+36>>2]=b[h+236>>1]<<6;a=0;i=j;return a|0}function em(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;e=i;g=c[a>>2]|0;f=g+196|0;Oh(g,d);c[a+24>>2]=c[f+8>>2]<<6;c[a+28>>2]=0-(c[f+12>>2]|0)<<6;c[a+36>>2]=b[f+40>>1]<<6;i=e;return 0}function fm(a,b,d){a=a|0;b=b|0;d=d|0;c[b>>2]=c[a+176>>2];c[d>>2]=c[a+180>>2];return 0}function gm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;j=c[b+284>>2]|0;g=c[b+280>>2]|0;if((g|0)>0)b=0;else{e=6;i=k;return e|0}while(1){h=b+1|0;f=(qga(c[j+(b*12|0)>>2]|0,d)|0)!=0;if((h|0)<(g|0)&f)b=h;else break}if(f|(j+(b*12|0)|0)==0){e=6;i=k;return e|0}if(!(a[j+(b*12|0)+4>>0]|0)){c[e>>2]=2;c[e+4>>2]=c[j+(b*12|0)+8>>2];e=0;i=k;return e|0}else{c[e>>2]=1;c[e+4>>2]=c[j+(b*12|0)+8>>2];e=0;i=k;return e|0}return 0}function hm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;e=(c[a>>2]|0)+288|0;d=c[e+120>>2]|0;c[a+16>>2]=d;e=c[e+128>>2]|0;c[a+20>>2]=e;if(d>>>0<=1){d=0;i=f;return d|0}b=c[e>>2]|0;a=1;while(1){g=b;b=c[e+(a<<4)>>2]|0;a=a+1|0;if(g>>>0>=b>>>0){b=8;a=5;break}if(a>>>0>=d>>>0){b=0;a=5;break}}if((a|0)==5){i=f;return b|0}return 0}function im(a){a=a|0;c[a+20>>2]=0;c[a+16>>2]=0;return}function jm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;d=c[a+16>>2]|0;if(!d){h=0;i=j;return h|0}g=c[a+20>>2]|0;f=0;while(1){a=((d-f|0)>>>1)+f|0;e=c[g+(a<<4)>>2]|0;if((e|0)==(b|0))break;e=e>>>0>>0;d=e?d:a;f=e?a+1|0:f;if(d>>>0<=f>>>0){a=0;h=6;break}}if((h|0)==6){i=j;return a|0}h=a+1|0;i=j;return h|0}function km(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;k=c[a+16>>2]|0;j=a+20|0;do if(k){a=c[b>>2]|0;a:while(1){a=a+1|0;g=c[j>>2]|0;h=k;e=0;while(1){d=((h-e|0)>>>1)+e|0;f=c[g+(d<<4)>>2]|0;if((f|0)==(a|0))break;f=f>>>0>>0;e=f?d+1|0:e;h=f?h:d;if(h>>>0<=e>>>0){a=e;break a}}if(d){e=d;l=7;break}}if((l|0)==7){d=a;a=e+1|0;break}if(!(a>>>0>=k>>>0|(a|0)==0)){d=c[(c[j>>2]|0)+(a<<4)>>2]|0;a=a+1|0}else{d=0;a=0}}else{d=0;a=0}while(0);c[b>>2]=d;i=m;return a|0}function lm(a,b,d,f,g){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;var h=0,j=0;j=i;h=a+288|0;a=c[a+88>>2]|0;if(b)c[b>>2]=c[h+12>>2];if(d)c[d>>2]=c[h+16>>2];if(!a){h=65536;a=65536}else{d=h+16|0;h=Xg((e[a+12>>1]|0)<<6,c[d>>2]|0)|0;a=Xg((e[a+14>>1]|0)<<6,c[d>>2]|0)|0}if(f)c[f>>2]=h;if(!g){i=j;return 0}c[g>>2]=a;i=j;return 0}function mm(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;k=e+288|0;c[h>>2]=0;c[h+4>>2]=0;j=(f|0)==0?0:f+-1|0;f=(g|0)==0?0:g+-1|0;r=c[k+120>>2]|0;if(j>>>0>r>>>0|f>>>0>r>>>0){h=0;i=s;return h|0}p=c[k+128>>2]|0;p=c[p+(f<<4)>>2]&65535|c[p+(j<<4)>>2]<<16;f=c[k+136>>2]|0;r=c[e+104>>2]|0;if(!f){h=0;i=s;return h|0}while(1){if(p>>>0>=(c[f+16>>2]|0)>>>0?p>>>0<=(c[f+20>>2]|0)>>>0:0){q=f;break}f=c[f>>2]|0;if(!f){f=0;n=31;break}}if((n|0)==31){i=s;return f|0}f=Hh(r,c[q+12>>2]|0)|0;if(f){h=f;i=s;return h|0}f=q+4|0;g=q+8|0;j=yi(r,ea(d[f>>0]|0,c[g>>2]|0)|0)|0;if(j){h=j;i=s;return h|0}j=d[f>>0]|0;l=c[g>>2]|0;k=Wi(j)|0;e=ea(k,l)|0;f=c[r+32>>2]|0;o=d[q+5>>0]|0;m=o&1;o=o&2;if((j|0)!=(k|0)){k=ea(j-k|0,l)|0;j=a[f+k>>0]|0;if(!(m<<24>>24)){g=k+2|0;k=(j&255)<<16|d[f+(k+1)>>0]}else{g=k+4|0;k=d[f+(k+1)>>0]<<16|(j&255)<<24|d[f+(k+2)>>0]<<8|d[f+(k+3)>>0]}if((k|0)!=(p|0))if(k>>>0

>>0){f=f+(g+(o<<24>>24==0?1:2))|0;n=16}else n=16;else{j=f+g|0;n=27}}else n=16;a:do if((n|0)==16){b:do if(e>>>0>l>>>0){c:do if(!(m<<24>>24)){g=e;while(1){g=g>>>1;k=f+g|0;j=d[k>>0]<<16|d[f+(g+1)>>0];if((j|0)==(p|0)){j=g+2|0;break c}f=j>>>0

>>0?k:f;if(g>>>0<=l>>>0)break b}}else{g=e;while(1){g=g>>>1;k=f+g|0;j=d[f+(g+1)>>0]<<16|d[k>>0]<<24|d[f+(g+2)>>0]<<8|d[f+(g+3)>>0];if((j|0)==(p|0)){j=g+4|0;break c}f=j>>>0

>>0?k:f;if(g>>>0<=l>>>0)break b}}while(0);j=f+j|0;n=27;break a}while(0);if(!(m<<24>>24)){k=d[f>>0]<<16|d[f+1>>0];j=f+2|0}else{k=d[f+1>>0]<<16|d[f>>0]<<24|d[f+2>>0]<<8|d[f+3>>0];j=f+4|0}if((k|0)==(p|0))n=27}while(0);if((n|0)==27){f=d[j>>0]|0;if(o<<24>>24)f=(d[j+1>>0]|f<<8)<<16>>16;c[h>>2]=(b[q+6>>1]|0)+f}Bi(r);h=0;i=s;return h|0}function nm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;c[d>>2]=0;if(((b|0)!=0?(e=b+-1|0,(a|0)!=0):0)?(f=a+288|0,e>>>0<(c[f+120>>2]|0)>>>0):0){c[d>>2]=c[(c[f+128>>2]|0)+(e<<4)+4>>2];e=0}else e=6;i=g;return e|0}function om(a,b){a=a|0;b=b|0;a=i;b=nh(22200,b)|0;i=a;return b|0}function pm(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=i;i=i+32|0;E=K+20|0;H=K;J=K+4|0;I=K+8|0;l=f+132|0;h=Hh(e,0)|0;if(!h){h=Li(e,22080,l)|0;if(!h){k=f+204|0;F=f+168|0;c[F>>2]=(c[F>>2]|0)+(c[k>>2]<<16);c[J>>2]=0;if((((c[l>>2]|0)==1346785840?(c[f+136>>2]|0)>>>0<=4:0)?(c[f+144>>2]|0)>>>0>=58:0)?(c[f+140>>2]|0)==3338:0){j=f+152|0;h=Hh(e,c[j>>2]|0)|0;c[E>>2]=h;if(h){c[J>>2]=h;J=h;i=K;return J|0}h=ri(e,E)|0;l=c[E>>2]|0;F=(l|0)==0;h=F?h&65535:0;c[J>>2]=l;if(!F){J=l;i=K;return J|0}c[f>>2]=h;if((g|0)<0){J=0;i=K;return J|0}if((h|0)<=(g|0)){c[J>>2]=6;J=6;i=K;return J|0}s=f+240|0;r=(c[k>>2]|0)==0;h=Hh(e,c[j>>2]|0)|0;c[E>>2]=h;do if(!h){l=ri(e,E)|0;h=c[E>>2]|0;if(!h)if((l&65535)>>>0>g>>>0){h=qi(e,g*5|0)|0;c[E>>2]=h;if(!h){j=ri(e,E)|0;k=j&65535;h=c[E>>2]|0;if(!h){l=Ji(e,E)|0;h=c[E>>2]|0;if(!h){c[s>>2]=k;c[f+244>>2]=l;h=Hh(e,l)|0;c[E>>2]=h;if(!h){h=yi(e,k)|0;c[E>>2]=h;if(h)break;D=e+32|0;o=c[D>>2]|0;q=o+k|0;a:do if((j&65535)<13)G=53;else{c[s+8>>2]=d[o+1>>0]<<8|d[o>>0]<<16|d[o+2>>0];c[s+12>>2]=d[o+4>>0]<<8|d[o+3>>0]<<16|d[o+5>>0];c[s+16>>2]=d[o+7>>0]<<8|d[o+6>>0]<<16|d[o+8>>0];c[s+20>>2]=d[o+10>>0]<<8|d[o+9>>0]<<16|d[o+11>>0];l=o+13|0;p=d[o+12>>0]|0;j=(p&4|0)!=0;if(j){h=p>>>3&1;h=(p&3|0)==0?h|4:h+1|0}else h=0;n=(p&16|0)!=0;if(n)h=(p>>>5&1)+1+h|0;if((h+13|0)>(k|0)){G=53;break}do if(j){if(!(p&8)){h=d[l>>0]|0;j=17;l=o+14|0;k=15;m=16}else{h=(d[l>>0]<<8|d[o+14>>0])<<16>>16;j=18;l=o+15|0;k=16;m=17}c[s+28>>2]=h;if(p&3)break;c[s+36>>2]=d[o+k>>0]<<8|d[l>>0]<<16|d[o+m>>0];l=o+j|0}while(0);if(n){if(!(p&32)){h=d[l>>0]|0;l=l+1|0}else{h=(d[l>>0]<<8|d[l+1>>0])<<16>>16;l=l+2|0}c[s+32>>2]=h}b:do if(!(p&64))h=l;else{h=l+1|0;c:do if(h>>>0<=q>>>0){l=a[l>>0]|0;if(l<<24>>24){l=l&255;do{if((h+2|0)>>>0>q>>>0)break c;h=h+((d[h>>0]|0)+2)|0;if(h>>>0>q>>>0)break c;l=l+-1|0}while((l|0)!=0)}c[E>>2]=0;break b}while(0);c[E>>2]=8;break a}while(0);l=h+5|0;if(l>>>0>q>>>0){G=53;break}j=d[h>>0]<<8|d[h+1>>0];k=s+40|0;c[k>>2]=j;c[s+44>>2]=d[h+3>>0]<<8|d[h+2>>0]<<16|d[h+4>>0];if(r)break;if((h+6|0)>>>0>q>>>0){G=53;break}c[k>>2]=d[l>>0]<<16|j}while(0);if((G|0)==53)c[E>>2]=8;Bi(e);h=c[E>>2]|0;c[J>>2]=h;if(h){J=h;i=K;return J|0}F=f+288|0;y=c[s+44>>2]|0;n=c[s+40>>2]|0;x=c[e+28>>2]|0;c[F>>2]=x;c[F+4>>2]=y;h=F+136|0;c[h>>2]=0;c[F+140>>2]=h;h=Hh(e,y)|0;c[H>>2]=h;d:do if(!h){h=yi(e,n)|0;c[H>>2]=h;if(h)break;l=c[D>>2]|0;C=F+148|0;c[C>>2]=l;z=l+n|0;e:do if((n|0)<15)G=124;else{c[F+8>>2]=d[l>>0]<<8|d[l+1>>0];c[F+12>>2]=d[l+2>>0]<<8|d[l+3>>0];c[F+16>>2]=d[l+4>>0]<<8|d[l+5>>0];c[F+20>>2]=(d[l+6>>0]<<8|d[l+7>>0])<<16>>16;c[F+24>>2]=(d[l+8>>0]<<8|d[l+9>>0])<<16>>16;c[F+28>>2]=(d[l+10>>0]<<8|d[l+11>>0])<<16>>16;c[F+32>>2]=(d[l+12>>0]<<8|d[l+13>>0])<<16>>16;h=l+15|0;A=d[l+14>>0]|0;c[F+36>>2]=A;B=(A&4|0)!=0;if(B){k=15;j=h}else{if((n|0)<17){G=124;break}c[F+40>>2]=(d[h>>0]<<8|d[l+16>>0])<<16>>16;k=17;j=l+17|0}f:do if(!(A&128))w=j;else{h=l+(k+1)|0;g:do if((k|0)<(n|0)){l=a[j>>0]|0;if(l<<24>>24){n=l&255;do{k=h+2|0;if(k>>>0>z>>>0){h=8;break g}m=d[h+1>>0]|0;h=h+((d[h>>0]|0)+2)|0;if(h>>>0>z>>>0){h=8;break g}else{l=19;j=22040}while(1){if((c[j>>2]|0)==(m|0)){t=l;G=70;break}l=c[j+12>>2]|0;if(!l)break;else j=j+8|0}if((G|0)==70?(G=0,u=Od[t&255](k,h,F)|0,(u|0)!=0):0){h=u;break g}n=n+-1|0}while((n|0)!=0)}c[H>>2]=0;w=h;break f}else h=8;while(0);c[H>>2]=h;break e}while(0);h=w+3|0;if(h>>>0>z>>>0){G=124;break}s=d[w+1>>0]<<8|d[w>>0]<<16|d[w+2>>0];do if(s){t=w+(s+3)|0;if(t>>>0>z>>>0){G=124;break e}u=F+84|0;n=F+44|0;m=F+48|0;o=F+52|0;v=F+88|0;r=s;q=h;h:while(1){l=q+4|0;if(l>>>0>t>>>0){G=100;break}k=d[q>>0]<<8|d[q+1>>0];if(k>>>0<4|r>>>0>>0){G=100;break}h=d[q+2>>0]<<8|d[q+3>>0];i:do if((h|0)==1){h=k+-4|0;c[E>>2]=0;j:do if(h){p=(a[q+(k+-1)>>0]|0)==0?k+-5|0:h;if(!p)break;else h=0;do{G=a[q+(h+4)>>0]|0;h=h+1|0;if((G&255)<32|G<<24>>24<0)break j}while(h>>>0

>>0);j=ch(x,p+1|0,E)|0;h=c[E>>2]|0;if(h){G=86;break h}Aga(j|0,l|0,p|0)|0;a[j+p>>0]=0;h=c[E>>2]|0;c[u>>2]=j;c[H>>2]=h;if(!h)break i;else break d}while(0);c[u>>2]=0;c[H>>2]=0}else if((h|0)==2){if(k>>>0<36)break;c[n>>2]=(d[q+14>>0]<<8|d[q+15>>0])<<16>>16;c[m>>2]=(d[q+16>>0]<<8|d[q+17>>0])<<16>>16;c[o>>2]=(d[q+18>>0]<<8|d[q+19>>0])<<16>>16}else if((h|0)==3){h=k+-4|0;c[E>>2]=0;k:do if(h){p=(a[q+(k+-1)>>0]|0)==0?k+-5|0:h;if(!p)break;else h=0;do{G=a[q+(h+4)>>0]|0;h=h+1|0;if((G&255)<32|G<<24>>24<0)break k}while(h>>>0

>>0);j=ch(x,p+1|0,E)|0;h=c[E>>2]|0;if(h){G=96;break h}Aga(j|0,l|0,p|0)|0;a[j+p>>0]=0;h=c[E>>2]|0;c[v>>2]=j;c[H>>2]=h;if(!h)break i;else break d}while(0);c[v>>2]=0;c[H>>2]=0}while(0);q=q+k|0;if((r|0)==(k|0)){G=100;break}else r=r-k|0}if((G|0)==86){c[u>>2]=j;c[H>>2]=h;break d}else if((G|0)==96){c[v>>2]=j;c[H>>2]=h;break d}else if((G|0)==100){o=s+4|0;h=t;break}}else o=4;while(0);j=w+o|0;if(j>>>0>z>>>0){G=124;break}k=a[h>>0]|0;m=k&255;c[F+104>>2]=m;h=(m<<1)+o|0;l=w+h|0;if(l>>>0>z>>>0){G=124;break}n=hh(x,4,0,m,0,H)|0;c[F+108>>2]=n;if(c[H>>2]|0)break;if(!(k<<24>>24)){l=j;h=o}else{k=0;while(1){c[n+(k<<2)>>2]=(d[j>>0]<<8|d[j+1>>0])<<16>>16;k=k+1|0;if((k|0)==(m|0))break;else j=j+2|0}}j=h+8|0;k=w+j|0;if(k>>>0>z>>>0){G=124;break}c[F+112>>2]=d[l>>0];c[F+116>>2]=d[w+(h+1)>>0];c[F+68>>2]=d[w+(h+2)>>0]<<8|d[w+(h+3)>>0];c[F+56>>2]=d[w+(h+4)>>0]<<8|d[w+(h+5)>>0];v=d[w+(h+6)>>0]<<8|d[w+(h+7)>>0];c[F+120>>2]=v;c[F+124>>2]=k+y-(c[D>>2]|0);o=hh(x,16,0,v,0,H)|0;c[F+128>>2]=o;if(c[H>>2]|0)break;r=(A&2|0)==0;D=A&8;s=(D|0)!=0;y=A&16;t=(y|0)==0;E=A&32;u=(E|0)==0;if((w+(j+(ea(v,(y>>>4)+(D>>>3)+(E>>>5)+(A>>>1&3|4)|0)|0))|0)>>>0>z>>>0){G=124;break}if(!v)break;q=F+40|0;p=0;while(1){if(r){l=d[k>>0]|0;m=3;h=k+1|0;j=2}else{l=d[k>>0]<<8|d[k+1>>0];m=4;h=k+2|0;j=3}c[o+(p<<4)>>2]=l;if(B){l=(d[h>>0]<<8|d[k+j>>0])<<16>>16;h=k+m|0}else l=c[q>>2]|0;c[o+(p<<4)+4>>2]=l;m=s?h+1|0:h;if(t){h=d[m>>0]|0;j=m+1|0;k=2;n=3;l=4}else{h=d[m>>0]<<8|d[m+1>>0];j=m+2|0;k=3;n=4;l=5}c[o+(p<<4)+8>>2]=h;j=d[j>>0]|0;h=a[m+k>>0]|0;if(u){l=n;h=h&255|j<<8}else h=(h&255)<<8|j<<16|d[m+n>>0];c[o+(p<<4)+12>>2]=h;p=p+1|0;if((p|0)==(v|0))break;else k=m+l|0}}while(0);if((G|0)==124)c[H>>2]=8;Bi(e);c[F+144>>2]=ui(e)|0;c[C>>2]=0;h=c[H>>2]|0;c[J>>2]=h;if(h){J=h;i=K;return J|0}c[f+4>>2]=g;r=F+120|0;l=c[r>>2]|0;c[f+16>>2]=l+1;s=f+8|0;c[s>>2]=1;if(l){j=c[F+128>>2]|0;k=0;while(1){h=k+1|0;if(c[j+(k<<4)+12>>2]|0){h=k;break}if(h>>>0>>0)k=h;else break}if((h|0)!=(l|0))h=1;else G=132}else G=132;do if((G|0)==132){if(c[F+92>>2]|0){c[s>>2]=0;h=0;break}c[J>>2]=3;J=3;i=K;return J|0}while(0);n=F+36|0;j=c[n>>2]|0;if(!(j&4)){h=h|4;c[s>>2]=h}h=(j<<4&16)+16|h;c[s>>2]=h;m=c[F+92>>2]|0;l=(m|0)==0;if(!l){h=h|2;c[s>>2]=h}q=F+132|0;if(c[q>>2]|0)c[s>>2]=h|64;g=c[F+84>>2]|0;h=f+20|0;c[h>>2]=g;if(!g)c[h>>2]=c[F+80>>2];c[f+24>>2]=c[F+88>>2];k=f+28|0;c[k>>2]=0;h=f+32|0;c[h>>2]=0;g=f+52|0;o=F+20|0;c[g+0>>2]=c[o+0>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];g=c[F+12>>2]|0;o=f+68|0;b[o>>1]=g;G=c[F+32>>2]|0;b[f+70>>1]=G;e=c[F+24>>2]|0;b[f+72>>1]=e;g=(((g&65535)*12|0)>>>0)/10|0;p=f+74|0;e=(G<<16>>16)-(e<<16>>16)|0;b[p>>1]=(g<<16>>16|0)<(e|0)?e:g;if(l)h=j;else{l=hh(c[(c[f+104>>2]|0)+28>>2]|0,16,0,m,0,J)|0;c[h>>2]=l;h=c[J>>2]|0;if(h){J=h;i=K;return J|0}j=0;h=l;l=c[F+100>>2]|0;while(1){g=c[l+4>>2]|0;b[h>>1]=g;e=c[l>>2]|0;b[h+2>>1]=e;g=g<<6;c[h+4>>2]=g;c[h+8>>2]=e<<6;c[h+12>>2]=g;j=j+1|0;if((j|0)==(m|0))break;else{h=h+16|0;l=l+36|0}}c[k>>2]=m;h=c[n>>2]|0}if(!(h&4))b[f+76>>1]=c[F+40>>2];else{h=c[r>>2]|0;if(!h)h=0;else{l=h;j=c[F+128>>2]|0;h=0;while(1){g=c[j+4>>2]|0;h=(h|0)<(g|0)?g:h;l=l+-1|0;if(!l)break;else j=j+16|0}h=h&65535}b[f+76>>1]=h}b[f+78>>1]=b[p>>1]|0;h=b[o>>1]|0;b[f+80>>1]=(h&65535|0)/-10|0;b[f+82>>1]=(h&65535)/30|0;c[I>>2]=f;b[I+8>>1]=3;b[I+10>>1]=1;c[I+4>>2]=1970170211;h=Wh(21880,0,I,0)|0;c[J>>2]=h;if(!(c[q>>2]|0)){J=h;i=K;return J|0}c[s>>2]=c[s>>2]|64;J=h;i=K;return J|0}while(0);c[J>>2]=h;J=h;i=K;return J|0}}}}}else h=6}while(0);c[J>>2]=h;J=h;i=K;return J|0}c[J>>2]=2;J=2;i=K;return J|0}}c[J>>2]=h;J=h;i=K;return J|0}function qm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;h=i;if(!a){i=h;return}e=c[(c[a+96>>2]|0)+8>>2]|0;c[a+20>>2]=0;c[a+24>>2]=0;f=a+288|0;g=c[a+100>>2]|0;d=f+80|0;eh(g,c[d>>2]|0);c[d>>2]=0;d=f+84|0;eh(g,c[d>>2]|0);c[d>>2]=0;d=f+88|0;eh(g,c[d>>2]|0);c[d>>2]=0;d=f+76|0;eh(g,c[d>>2]|0);c[d>>2]=0;c[f+72>>2]=0;c[f+64>>2]=0;c[f+60>>2]=0;d=f+100|0;eh(g,c[d>>2]|0);c[d>>2]=0;c[f+92>>2]=0;c[f+96>>2]=0;d=f+128|0;eh(g,c[d>>2]|0);c[d>>2]=0;c[f+120>>2]=0;c[f+124>>2]=0;d=f+108|0;eh(g,c[d>>2]|0);c[d>>2]=0;c[f+104>>2]=0;d=f+136|0;b=c[d>>2]|0;if(b)do{j=b;b=c[b>>2]|0;eh(g,j)}while((b|0)!=0);c[d>>2]=0;c[f+140>>2]=0;c[f+132>>2]=0;a=a+32|0;eh(e,c[a>>2]|0);c[a>>2]=0;i=h;return}function rm(b){b=b|0;var d=0,e=0,f=0,g=0;f=i;d=c[c[b+156>>2]>>2]|0;e=b+160|0;g=e+36|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(g|0));c[b+188>>2]=d;a[b+192>>0]=0;dh(d);i=f;return 0}function sm(b){b=b|0;var d=0,e=0,f=0;d=i;e=c[c[b+188>>2]>>2]|0;f=b+168|0;eh(e,c[f>>2]|0);c[f>>2]=0;c[b+172>>2]=0;c[b+164>>2]=0;eh(e,c[b+184>>2]|0);b=b+176|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;a[b+16>>0]=0;i=d;return}function tm(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=i;i=i+16|0;H=J;D=c[f+4>>2]|0;G=f+108|0;E=(h|0)==0?0:h+-1|0;if(!D){I=6;i=J;return I|0}F=D+288|0;if(E>>>0>=(c[F+120>>2]|0)>>>0){I=6;i=J;return I|0}a:do if((j&9|0)==0?(I=c[D+104>>2]|0,w=c[F+128>>2]|0,l=c[F+92>>2]|0,(l|0)!=0):0){y=g+12|0;h=e[y>>1]|0;m=g+14|0;k=0;q=c[F+100>>2]|0;while(1){if((c[q>>2]|0)==(h|0)?(c[q+4>>2]|0)==(e[m>>1]|0):0)break;k=k+1|0;if(k>>>0>=l>>>0)break a;else q=q+36|0}m=q+8|0;h=c[m>>2]|0;if((Hh(I,(c[q+24>>2]|0)+(c[F+144>>2]|0)|0)|0)==0?(r=q+28|0,(yi(I,ea(c[r>>2]|0,(h&1|4)+(h>>>1&1)+(h>>>2&1)|0)|0)|0)==0):0){x=I+32|0;v=c[x>>2]|0;z=I+36|0;s=c[z>>2]|0;h=c[r>>2]|0;r=c[m>>2]|0;o=c[w+(E<<4)>>2]|0;l=r&1;n=(l|0)==0;p=r&2;t=(p|0)==0;r=r&4;u=(r|0)==0;r=(l|4)+(p>>>1)+(r>>>2)|0;b:do if(h){p=0;while(1){l=(h+p|0)>>>1;q=ea(l,r)|0;k=v+q|0;if((v+(q+r)|0)>>>0>s>>>0)break b;if(n){m=q+1|0;q=d[k>>0]|0}else{m=q+2|0;q=d[k>>0]<<8|d[v+(q+1)>>0]}if((q|0)==(o|0))break;k=q>>>0>>0;h=k?h:l;p=k?l:p;if(p>>>0>=h>>>0)break b}h=d[v+m>>0]|0;if(t){q=1;n=h}else{q=2;n=d[v+(m+1)>>0]|h<<8}h=d[v+(q+m)>>0]|0;if(u)o=d[v+(m+1+q)>>0]|h<<8;else o=d[v+(m+1+q)>>0]<<8|h<<16|d[v+(m+2+q)>>0];Bi(I);if(!n)break a;m=w+(E<<4)+4|0;k=c[m>>2]|0;l=F+16|0;h=c[l>>2]|0;q=c[F+12>>2]|0;if((h|0)==(q|0)){r=k;q=k}else{r=Ug(k,q,h)|0;q=c[m>>2]|0;h=c[l>>2]|0}c[f+56>>2]=r;k=Ug(e[y>>1]<<8,q,h)|0;if(Hh(I,(c[D+188>>2]|0)+o|0)|0)break a;if(yi(I,n)|0)break a;q=c[x>>2]|0;r=c[z>>2]|0;m=q+1|0;c:do if(m>>>0<=r>>>0){l=a[q>>0]|0;h=l&3;if(!h){h=q+2|0;if(h>>>0>r>>>0)break;p=a[m>>0]|0;s=p>>4;p=p<<28>>28}else if((h|0)==3){h=q+7|0;if(h>>>0>r>>>0)break;s=d[q+2>>0]<<8|d[m>>0]<<16|d[q+3>>0];p=d[q+5>>0]<<8|d[q+4>>0]<<16|d[q+6>>0]}else if((h|0)==2){h=q+5|0;if(h>>>0>r>>>0)break;s=(d[m>>0]<<8|d[q+2>>0])<<16>>16;p=(d[q+3>>0]<<8|d[q+4>>0])<<16>>16}else if((h|0)==1){h=q+3|0;if(h>>>0>r>>>0)break;s=a[m>>0]|0;p=a[q+2>>0]|0}else{h=m;s=0;p=0}q=(l&255)>>>2&3;if((q|0)==1){q=h+1|0;if(q>>>0>r>>>0)break;o=a[h>>0]|0;n=o>>>4&15;o=o&15}else if((q|0)==3){q=h+4|0;if(q>>>0>r>>>0)break;n=d[h>>0]<<8|d[h+1>>0];o=d[h+2>>0]<<8|d[h+3>>0]}else if((q|0)==2){q=h+2|0;if(q>>>0>r>>>0)break;n=d[h>>0]|0;o=d[h+1>>0]|0}else{q=h;n=0;o=0}l=(l&255)>>>4&255;h=l&3;if(!h)m=q;else if((h|0)==2){m=q+2|0;if(m>>>0>r>>>0)break;k=(d[q>>0]<<8|d[q+1>>0])<<16>>16}else if((h|0)==3){m=q+3|0;if(m>>>0>r>>>0)break;k=d[q+1>>0]<<8|d[q>>0]<<16|d[q+2>>0]}else if((h|0)==1){m=q+1|0;if(m>>>0>r>>>0)break;k=a[q>>0]<<8}else{k=0;m=q}r=l>>>2;h=o+p|0;if((h|0)>-1?(c[f+72>>2]=1651078259,B=f+80|0,c[B>>2]=n,A=f+76|0,c[A>>2]=o,y=n+7>>3,C=f+84|0,c[C>>2]=y,a[f+94>>0]=1,x=n<<6,c[f+24>>2]=x,c[f+28>>2]=o<<6,c[f+32>>2]=s<<6,c[f+36>>2]=p<<6,c[f+40>>2]=(k>>2)+32&-64,c[f+44>>2]=0-x>>1,c[f+48>>2]=0,c[f+52>>2]=c[g+32>>2],c[f+100>>2]=s,c[f+104>>2]=h,(wh(f,ea(y,o)|0)|0)==0):0){v=c[z>>2]|0;k=c[D+208>>2]&2;l=c[A>>2]|0;do if((l|0)>0){x=c[B>>2]|0;if((x|0)<=0)break;q=c[f+88>>2]|0;h=c[C>>2]|0;u=ea(x,l)|0;if(!k){w=0-h|0;h=q+(ea(h,l+-1|0)|0)|0}else{w=h;h=q}if((r|0)==2){if((u|0)>0){r=m;q=h;l=0;s=0;k=h;t=x;h=128;o=1;m=1}else break;while(1){d:do if(!m){m=r;n=s}else{p=r;n=s;while(1){if(p>>>0>=v>>>0){m=p;break d}m=p+1|0;H=a[p>>0]|0;n=H&255;o=o^1;if(!(H<<24>>24))p=m;else break}}while(0);l=((o|0)==0?0:h)|l;h=h>>>1;p=t+-1|0;do if((t|0)<2){a[k>>0]=l;k=q+w|0;q=k;l=0;p=x;h=128}else{if(h)break;a[k>>0]=l;l=0;k=k+1|0;h=128}while(0);u=u+-1|0;if((u|0)<=0)break;else{r=m;s=n+-1|0;t=p;m=(n|0)<2&1}}if((h|0)==128)break;a[k>>0]=l;break}else if(!r){t=v-m<<3;t=(t|0)>(u|0)?u:t;if((t|0)>0){p=m;o=h;l=0;k=h;q=x;h=128;s=t;m=0}else break;while(1){if(!((s^t)&7)){r=p+1|0;m=d[p>>0]|0}else r=p;l=((m&128|0)==0?0:h)|l;m=m<<1;h=h>>>1;n=q+-1|0;do if((q|0)<2){a[k>>0]=l;k=o+w|0;o=k;l=0;n=x;h=128}else{if(h)break;a[k>>0]=l;l=0;k=k+1|0;h=128}while(0);s=s+-1|0;if((s|0)<=0)break;else{p=r;q=n}}if((h|0)==128)break;a[k>>0]=l;break}else if((r|0)==1){if((u|0)>0){r=h;l=0;s=0;q=0;k=h;t=x;h=128;o=1;n=1}else break;while(1){e:do if(!n)n=s;else{n=s;while(1){if(!o){n=q;o=1}else{if(m>>>0>=v>>>0)break e;q=d[m>>0]|0;m=m+1|0;n=q>>>4;q=q&15;o=0}if(!n)n=0;else break}}while(0);l=((o|0)==0?0:h)|l;h=h>>>1;p=t+-1|0;do if((t|0)<2){a[k>>0]=l;k=r+w|0;r=k;l=0;p=x;h=128}else{if(h)break;a[k>>0]=l;l=0;k=k+1|0;h=128}while(0);u=u+-1|0;if((u|0)<=0)break;else{s=n+-1|0;t=p;n=(n|0)<2&1}}if((h|0)==128)break;a[k>>0]=l;break}else break c}while(0);Bi(I);I=0;i=J;return I|0}}while(0);Bi(I);break a}while(0);Bi(I)}}while(0);if(j&16384){I=6;i=J;return I|0}m=c[F+128>>2]|0;c[f+72>>2]=1869968492;n=f+110|0;b[n>>1]=0;b[G>>1]=0;C=c[D+188>>2]|0;D=c[D+104>>2]|0;I=c[m+(E<<4)+12>>2]|0;h=c[m+(E<<4)+8>>2]|0;k=f+188|0;dh(c[k>>2]|0);c[f+176>>2]=0;h=Ts(f+160|0,D,C,I,h)|0;if(h){I=h;i=J;return I|0}q=j&1;h=(c[k>>2]|0)+20|0;c[G+0>>2]=c[h+0>>2];c[G+4>>2]=c[h+4>>2];c[G+8>>2]=c[h+8>>2];c[G+12>>2]=c[h+12>>2];c[G+16>>2]=c[h+16>>2];h=f+124|0;k=c[h>>2]&-6;c[h>>2]=k|4;if((g|0)!=0?(e[g+14>>1]|0)<24:0)c[h>>2]=k|260;r=f+40|0;c[r>>2]=0;o=f+52|0;c[o>>2]=0;k=c[m+(E<<4)+4>>2]|0;h=c[F+16>>2]|0;l=c[F+12>>2]|0;if((h|0)!=(l|0))k=Ug(k,l,h)|0;if(!(c[F+36>>2]&1)){c[r>>2]=k;h=k;k=c[o>>2]|0}else{c[o>>2]=k;h=c[r>>2]|0}c[f+56>>2]=h;c[f+60>>2]=k;c[f+44>>2]=0;c[f+48>>2]=0;if(!q){m=c[g+16>>2]|0;l=c[g+20>>2]|0;if((b[n>>1]|0)>0){h=0;k=c[f+112>>2]|0;while(1){c[k>>2]=Wg(c[k>>2]|0,m)|0;I=k+4|0;c[I>>2]=Wg(c[I>>2]|0,l)|0;h=h+1|0;if((h|0)>=(b[n>>1]|0))break;else k=k+8|0}h=c[r>>2]|0}c[r>>2]=Wg(h,m)|0;c[o>>2]=Wg(c[o>>2]|0,l)|0}mi(G,H);G=c[H>>2]|0;c[f+24>>2]=(c[H+8>>2]|0)-G;I=c[H+4>>2]|0;c[f+28>>2]=(c[H+12>>2]|0)-I;c[f+32>>2]=G;c[f+36>>2]=I;I=0;i=J;return I|0}function um(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;g=a+288|0;mm(a,b,d,e)|0;f=g+12|0;b=c[f>>2]|0;g=g+16|0;a=c[g>>2]|0;if((b|0)==(a|0)){i=h;return 0}d=c[e>>2]|0;if(!d)a=0;else{a=Ug(d,b,a)|0;c[e>>2]=a}b=e+4|0;if(!(c[b>>2]|0)){i=h;return 0}c[b>>2]=Ug(a,c[f>>2]|0,c[g>>2]|0)|0;i=h;return 0}function vm(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+16|0;u=x;h=c[f>>2]|0;c[u>>2]=0;o=b+5|0;if(o>>>0<=e>>>0){m=d[b+3>>0]|0;n=a[b+4>>0]|0;v=n&255;w=f+92|0;j=c[w>>2]|0;g=j+v|0;l=f+96|0;do if(g>>>0>(c[l>>2]|0)>>>0){k=g+3&-4;g=f+100|0;c[g>>2]=hh(h,36,j,k,c[g>>2]|0,u)|0;g=c[u>>2]|0;if(!g){c[l>>2]=k;break}else{w=g;i=x;return w|0}}while(0);g=m&1;q=(g|0)==0;k=m&2;r=(k|0)==0;h=m&4;s=(h|0)==0;j=m&8;t=(j|0)==0;l=m&16;p=(l|0)==0;if((b+((ea((g|8)+(k>>>1)+(h>>>2)+(j>>>3)+(l>>>4)|0,v)|0)+5)|0)>>>0<=e>>>0){if(!(n<<24>>24)){h=0;g=c[w>>2]|0}else{g=c[w>>2]|0;b=0;e=(c[f+100>>2]|0)+(g*36|0)|0;while(1){if(q){j=o+1|0;k=2;h=d[o>>0]|0;l=1}else{j=o+2|0;k=3;h=(d[o>>0]|0)<<8|(d[o+1>>0]|0);l=2}c[e>>2]=h;if(r){m=k;k=d[j>>0]|0}else{m=l+2|0;k=(d[o+l>>0]|0)<<8|(d[o+(l+1)>>0]|0)}c[e+4>>2]=k;h=m+1|0;c[e+8>>2]=d[o+m>>0];k=d[o+h>>0]|0;if(s){j=d[o+(m+2)>>0]|0|k<<8;k=m}else{j=(d[o+(m+2)>>0]|0)<<8|k<<16|(d[o+(m+3)>>0]|0);k=h}c[e+20>>2]=j;if(t){j=k+5|0;k=(d[o+(k+3)>>0]|0)<<8|(d[o+(k+4)>>0]|0)}else{j=k+6|0;k=(d[o+(k+4)>>0]|0)<<8|(d[o+(k+3)>>0]|0)<<16|(d[o+(k+5)>>0]|0)}h=o+j|0;c[e+24>>2]=k;if(p){k=j+1|0;h=d[h>>0]|0}else{k=j+2|0;h=(d[h>>0]|0)<<8|(d[o+(j+1)>>0]|0)}c[e+28>>2]=h;b=b+1|0;if((b|0)==(v|0))break;else{o=o+k|0;e=e+36|0}}h=c[u>>2]|0}c[w>>2]=g+v;w=h;i=x;return w|0}}c[u>>2]=8;w=8;i=x;return w|0}function wm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;c[h>>2]=0;f=d-b|0;g=e+80|0;if(c[g>>2]|0){b=0;i=j;return b|0}d=ch(c[e>>2]|0,f+1|0,h)|0;c[g>>2]=d;e=c[h>>2]|0;if(e){b=e;i=j;return b|0}Aga(d|0,b|0,f|0)|0;a[(c[g>>2]|0)+f>>0]=0;b=c[h>>2]|0;i=j;return b|0}function xm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;l=m;c[l>>2]=0;f=c[e>>2]|0;j=e+76|0;if(c[j>>2]|0){k=0;i=m;return k|0}h=a+1|0;if(h>>>0<=b>>>0?(g=d[a>>0]|0,k=g&15,g=k+(g>>>4)|0,(a+(g<<1|1)|0)>>>0<=b>>>0):0){f=hh(f,4,0,g,0,l)|0;b=c[l>>2]|0;if(b){k=b;i=m;return k|0}c[j>>2]=f;c[e+64>>2]=f+(k<<2);if(!g){k=0;i=m;return k|0}while(1){c[f>>2]=((d[h>>0]|0)<<8|(d[h+1>>0]|0))<<16>>16;g=g+-1|0;if(!g)break;else{h=h+2|0;f=f+4|0}}k=c[l>>2]|0;i=m;return k|0}c[l>>2]=8;k=8;i=m;return k|0}function ym(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=i;i=i+16|0;p=q;c[p>>2]=0;j=c[g>>2]|0;k=ch(j,24,p)|0;if(c[p>>2]|0){g=c[p>>2]|0;i=q;return g|0}n=e+4|0;if(n>>>0<=f>>>0?(o=a[e>>0]|0,a[k+4>>0]=o,b[k+6>>1]=(d[e+1>>0]|0)<<8|(d[e+2>>0]|0),s=a[e+3>>0]|0,a[k+5>>0]=s,c[k+12>>2]=(c[g+4>>2]|0)+n-(c[g+148>>2]|0),l=s&1,m=(l&255)<<1,r=m+3|0,s=(s&2)==0,m=m|4,h=s?r:m,c[k+8>>2]=s?r:m,m=o&255,(e+((ea(m,h)|0)+4)|0)>>>0<=f>>>0):0){if(!(o<<24>>24)){eh(j,k);s=c[p>>2]|0;i=q;return s|0}if(!(l<<24>>24)){c[k+16>>2]=(d[n>>0]|0)<<16|(d[e+5>>0]|0);s=ea(m+-1|0,h)|0;c[k+20>>2]=(d[e+(s+4)>>0]|0)<<16|(d[e+(s+5)>>0]|0)}else{c[k+16>>2]=(d[e+6>>0]|0)<<8|(d[e+7>>0]|0)|((d[n>>0]|0)<<8|(d[e+5>>0]|0))<<16;s=ea(m+-1|0,h)|0;c[k+20>>2]=(d[e+(s+6)>>0]|0)<<8|(d[e+(s+7)>>0]|0)|((d[e+(s+4)>>0]|0)<<8|(d[e+(s+5)>>0]|0))<<16}c[k>>2]=0;s=g+140|0;c[c[s>>2]>>2]=k;c[s>>2]=k;s=g+132|0;c[s>>2]=(c[s>>2]|0)+m;s=c[p>>2]|0;i=q;return s|0}eh(j,k);c[p>>2]=8;s=c[p>>2]|0;i=q;return s|0}function zm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g;c[a+32>>2]=d;e=a+24|0;c[e>>2]=hh(d,4,0,b,0,f)|0;if((c[f>>2]|0)==0?(c[a+28>>2]=hh(d,4,0,b,0,f)|0,(c[f>>2]|0)==0):0){c[a+16>>2]=b;c[a+12>>2]=-559038737;c[a+20>>2]=0;c[a>>2]=0;c[a+8>>2]=0;c[a+4>>2]=0;a=a+36|0;c[a+0>>2]=c[5568];c[a+4>>2]=c[5569];c[a+8>>2]=c[5570];c[a+12>>2]=c[5571];a=0;i=g;return a|0}eh(d,c[e>>2]|0);c[e>>2]=0;a=c[f>>2]|0;i=g;return a|0}function Am(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;d=k;g=c[a+32>>2]|0;h=c[a>>2]|0;if(!h){i=k;return}j=a+4|0;b=ch(g,c[j>>2]|0,d)|0;c[a>>2]=b;if(c[d>>2]|0){i=k;return}Aga(b|0,h|0,c[j>>2]|0)|0;d=c[a+16>>2]|0;b=c[a+24>>2]|0;e=(c[a>>2]|0)-h|0;f=b+(d<<2)|0;if((d|0)>0)do{d=c[b>>2]|0;if(d)c[b>>2]=d+e;b=b+4|0}while(b>>>0>>0);c[a+8>>2]=c[j>>2];eh(g,h);i=k;return}function Bm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;g=q;if((b|0)<0){a=6;i=q;return a|0}k=a+16|0;if((e|0)<0?1:(c[k>>2]|0)<=(b|0)){a=6;i=q;return a|0}p=a+4|0;h=(c[p>>2]|0)+e|0;o=a+8|0;f=c[o>>2]|0;if(h>>>0>f>>>0){n=c[a>>2]|0;j=n;m=d-j|0;m=(m|0)>-1&m>>>0>>0?m:-1;do f=f+1024+(f>>>2)&-1024;while(f>>>0>>0);l=c[a+32>>2]|0;h=ch(l,f,g)|0;c[a>>2]=h;g=c[g>>2]|0;if(g){c[a>>2]=n;a=g;i=q;return a|0}if(n){Aga(h|0,n|0,c[o>>2]|0)|0;g=c[k>>2]|0;h=c[a+24>>2]|0;j=(c[a>>2]|0)-j|0;k=h+(g<<2)|0;if((g|0)>0)do{g=c[h>>2]|0;if(g)c[h>>2]=g+j;h=h+4|0}while(h>>>0>>0);eh(l,n)}c[o>>2]=f;if((m|0)>-1)d=(c[a>>2]|0)+m|0}c[(c[a+24>>2]|0)+(b<<2)>>2]=(c[a>>2]|0)+(c[p>>2]|0);c[(c[a+28>>2]|0)+(b<<2)>>2]=e;Aga((c[a>>2]|0)+(c[p>>2]|0)|0,d|0,e|0)|0;c[p>>2]=(c[p>>2]|0)+e;a=0;i=q;return a|0}function Cm(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;b=c[a+32>>2]|0;d=a+12|0;if((c[d>>2]|0)!=-559038737){i=e;return}eh(b,c[a>>2]|0);c[a>>2]=0;f=a+24|0;eh(b,c[f>>2]|0);c[f>>2]=0;a=a+28|0;eh(b,c[a>>2]|0);c[a>>2]=0;c[d>>2]=0;i=e;return}function Dm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;c[a+12>>2]=0;c[a+4>>2]=b;c[a+8>>2]=d;c[a>>2]=b;c[a+16>>2]=e;b=a+20|0;d=22288|0;e=b+52|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));i=f;return}function Em(a){a=a|0;return}function Fm(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;f=c[b+8>>2]|0;d=c[b>>2]|0;a:do if(d>>>0>>0)while(1){b:do switch(a[d>>0]|0){case 0:case 12:case 9:case 10:case 13:case 32:break;case 37:{e=37;while(1){if(e<<24>>24==10|e<<24>>24==13)break b;d=d+1|0;if(d>>>0>=f>>>0)break b;e=a[d>>0]|0}}default:break a}while(0);d=d+1|0;if(d>>>0>=f>>>0)break a}while(0);c[b>>2]=d;i=g;return}function Gm(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;m=c[b>>2]|0;e=c[b+8>>2]|0;a:do if(m>>>0>>0){f=m;while(1){b:do switch(a[f>>0]|0){case 0:case 12:case 9:case 10:case 13:case 32:break;case 37:{h=37;while(1){if(h<<24>>24==10|h<<24>>24==13)break b;f=f+1|0;if(f>>>0>=e>>>0)break b;h=a[f>>0]|0}}default:break a}while(0);f=f+1|0;if(f>>>0>=e>>>0)break a}}else f=m;while(0);c:do if(f>>>0>>0){switch(a[f>>0]|0){case 93:case 91:{f=f+1|0;g=0;break c}case 40:{g=0;d:while(1){j=f;e:while(1){h=a[j>>0]|0;f=j+1|0;f:do if(h<<24>>24==41){k=58;break e}else if(h<<24>>24==40){k=56;break e}else if(h<<24>>24==92){if((f|0)==(e|0)){f=3;break d}switch(d[f>>0]|0){case 41:case 40:case 92:case 102:case 98:case 116:case 114:case 110:{f=j+2|0;break f}default:{}}if(f>>>0>>0){k=0;while(1){if((a[f>>0]&-8)<<24>>24!=48)break f;h=j+2|0;k=k+1|0;if(!(k>>>0<3&h>>>0>>0)){f=h;break}else{j=f;f=h}}}}while(0);if(f>>>0>>0)j=f;else{g=3;break c}}if((k|0)==56)g=g+1|0;else if((k|0)==58){g=g+-1|0;if(!g){g=0;break c}}if(f>>>0>=e>>>0){g=3;break c}}l=b+12|0;c[l>>2]=f;c[b>>2]=e;i=n;return}case 60:{h=f+1|0;g:do if(h>>>0>>0){g=a[h>>0]|0;if(g<<24>>24==60){f=f+2|0;g=0;break c}else f=h;while(1){h:do switch(g<<24>>24){case 37:{g=37;while(1){if(g<<24>>24==10|g<<24>>24==13){k=66;break h}f=f+1|0;if(f>>>0>=e>>>0){k=66;break h}g=a[f>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:{k=66;break}default:k=68}while(0);if((k|0)==66){k=0;f=f+1|0;if(f>>>0>=e>>>0)k=68}if((k|0)==68){if(f>>>0>=e>>>0)break g;g=a[f>>0]|0;if((g+-48<<24>>24&255)>=10)switch(g<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break g}f=f+1|0;if(f>>>0>=e>>>0)break g}g=a[f>>0]|0}}else f=h;while(0);if(f>>>0>>0?(a[f>>0]|0)!=62:0){g=3;break c}f=f+1|0;g=0;break c}case 123:{h=123;g=0;i:while(1){j:do switch(h&255|0){case 37:while(1){if(h<<24>>24==10|h<<24>>24==13)break j;f=f+1|0;if(f>>>0>=e>>>0)break j;h=a[f>>0]|0}case 125:{g=g+-1|0;if(!g){k=13;break i}break}case 40:{if(f>>>0>>0)l=0;else{k=43;break i}while(1){j=f;k:while(1){h=a[j>>0]|0;f=j+1|0;l:do if(h<<24>>24==41){k=26;break k}else if(h<<24>>24==40){k=24;break k}else if(h<<24>>24==92){if((f|0)==(e|0)){f=e;k=43;break i}switch(d[f>>0]|0){case 41:case 40:case 92:case 102:case 98:case 116:case 114:case 110:{f=j+2|0;break l}default:{}}if(f>>>0>>0){k=0;while(1){if((a[f>>0]&-8)<<24>>24!=48)break l;h=j+2|0;k=k+1|0;if(!(k>>>0<3&h>>>0>>0)){f=h;break}else{j=f;f=h}}}}while(0);if(f>>>0>>0)j=f;else{k=43;break i}}if((k|0)==24)h=l+1|0;else if((k|0)==26){k=0;h=l+-1|0;if(!h)break j}if(f>>>0>>0)l=h;else{k=43;break i}}}case 123:{g=g+1|0;break}case 60:{f=f+1|0;m:do if(f>>>0>>0)while(1){n:do switch(a[f>>0]|0){case 37:{h=37;while(1){if(h<<24>>24==10|h<<24>>24==13){k=32;break n}f=f+1|0;if(f>>>0>=e>>>0){k=32;break n}h=a[f>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:{k=32;break}default:{}}while(0);if((k|0)==32){k=0;f=f+1|0;if(f>>>0>>0)continue}if(f>>>0>=e>>>0)break m;h=a[f>>0]|0;if((h+-48<<24>>24&255)>=10)switch(h<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break m}f=f+1|0;if(f>>>0>=e>>>0)break m}while(0);if(f>>>0>>0?(a[f>>0]|0)!=62:0){k=43;break i}f=f+1|0;break}default:{}}while(0);f=f+1|0;if(f>>>0>=e>>>0){h=0;break}h=a[f>>0]|0}if((k|0)==13){f=f+1|0;g=0;h=0}else if((k|0)==43){f=f+1|0;h=3}g=(g|0)==0?h:3;break c}case 47:{f=f+1|0;break}case 62:{g=f+1|0;if(g>>>0>=e>>>0){f=g;g=3;break c}l=(a[g>>0]|0)==62;f=l?f+2|0:g;g=l?0:3;break c}default:{}}if(f>>>0>>0)while(1){switch(a[f>>0]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:{g=0;break c}default:{}}f=f+1|0;if(f>>>0>=e>>>0){g=0;break c}}else g=0}else g=0;while(0);if(f>>>0>=e>>>0){l=f;k=g;j=b+12|0;c[j>>2]=k;c[b>>2]=l;i=n;return}l=f;k=(f|0)==(m|0)?3:g;j=b+12|0;c[j>>2]=k;c[b>>2]=l;i=n;return}function Hm(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;o=c[b+8>>2]|0;d=c[b>>2]|0;a:do if(d>>>0>>0)while(1){b:do switch(a[d>>0]|0){case 37:{e=37;while(1){if(e<<24>>24==10|e<<24>>24==13)break b;d=d+1|0;if(d>>>0>=o>>>0)break b;e=a[d>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:break a}while(0);d=d+1|0;if(d>>>0>=o>>>0)break a}while(0);c[b>>2]=d;if(d>>>0>=o>>>0){b=0;i=p;return b|0}f=a[d>>0]|0;if(f<<24>>24==43|f<<24>>24==45){e=d+1|0;if((e|0)==(o|0)){b=0;i=p;return b|0}else k=f<<24>>24==45&1}else{e=d;k=0}c:do if(e>>>0>>0){h=0;j=0;while(1){f=a[e>>0]|0;g=f&255;switch(f<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{g=h;f=j;break c}default:{}}if(f<<24>>24<0){g=h;f=j;break c}n=g&127;g=a[22696+n>>0]|0;f=g<<24>>24;if((n+-48|0)>>>0>=10){g=h;f=j;break c}if((j|0)<=214748364)if((j|0)==214748364&g<<24>>24>7){g=1;f=214748364}else{g=h;f=f+(j*10|0)|0}else{g=1;f=j}e=e+1|0;if(e>>>0>>0){h=g;j=f}else break c}}else{g=0;f=0}while(0);l=g<<24>>24==0?f:2147483647;l=k<<24>>24==0?l:0-l|0;if((e|0)==(d|0)){b=0;i=p;return b|0}if(e>>>0>>0?(a[e>>0]|0)==35:0){n=e+1|0;if(n>>>0>=o>>>0|(l+-2|0)>>>0>34){b=0;i=p;return b|0}d=a[n>>0]|0;if(d<<24>>24==43|d<<24>>24==45){e=e+2|0;if((e|0)==(o|0)){b=0;i=p;return b|0}else m=d<<24>>24==45&1}else{e=n;m=0}j=2147483647/(l|0)|0;d:do if(e>>>0>>0){k=(2147483647%(l|0)|0)<<24>>24;g=0;d=0;while(1){f=a[e>>0]|0;h=f&255;switch(f<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:break d;default:{}}if(f<<24>>24<0)break d;h=a[22696+(h&127)>>0]|0;f=h<<24>>24;if(!(h<<24>>24>-1&(f|0)<(l|0)))break d;if((d|0)<=(j|0))if((d|0)==(j|0)&(f|0)>(k|0)){g=1;d=j}else d=f+(ea(d,l)|0)|0;else g=1;e=e+1|0;if(e>>>0>=o>>>0)break d}}else{g=0;d=0}while(0);d=g<<24>>24==0?d:2147483647;if((e|0)==(n|0)){b=0;i=p;return b|0}else d=m<<24>>24==0?d:0-d|0}else d=l;c[b>>2]=e;b=d;i=p;return b|0}function Im(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;g=c[b+8>>2]|0;e=c[b>>2]|0;a:do if(e>>>0>>0)while(1){b:do switch(a[e>>0]|0){case 0:case 12:case 9:case 10:case 13:case 32:break;case 37:{f=37;while(1){if(f<<24>>24==10|f<<24>>24==13)break b;e=e+1|0;if(e>>>0>=g>>>0)break b;f=a[e>>0]|0}}default:break a}while(0);e=e+1|0;if(e>>>0>=g>>>0)break a}while(0);c[b>>2]=e;d=Us(b,g,d)|0;i=h;return d|0}function Jm(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;m=b+8|0;l=c[m>>2]|0;h=c[b>>2]|0;a:do if(h>>>0>>0)while(1){b:do switch(a[h>>0]|0){case 37:{j=37;while(1){if(j<<24>>24==10|j<<24>>24==13)break b;h=h+1|0;if(h>>>0>=l>>>0)break b;j=a[h>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:{n=h;break a}}while(0);h=h+1|0;if(h>>>0>=l>>>0){n=h;break a}}else n=h;while(0);c[b>>2]=n;if(n>>>0>=l>>>0){b=0;i=o;return b|0}if(g<<24>>24){if((a[n>>0]|0)!=60){b=3;i=o;return b|0}g=n+1|0;h=e<<1;if(g>>>0>>0){l=l-g|0;l=h>>>0>l>>>0?l:h;if(l){g=1;k=0;h=0;c:while(1){j=k+1|0;e=a[n+j>>0]|0;switch(e<<24>>24){case 0:case 9:case 10:case 12:case 13:case 32:break;default:{if(e<<24>>24<0){j=k;break c}e=a[22696+(e&127)>>0]|0;if((e&255)>15){j=k;break c}g=e<<24>>24|g<<4;if(g&256){a[d+h>>0]=g;g=1;h=h+1|0}}}if(j>>>0>>0)k=j;else break}if((g|0)!=1){a[d+h>>0]=g<<4;h=h+1|0}}else{j=0;h=0}e=h;g=n+(j+1)|0;h=j+2|0}else{e=0;h=2}c[f>>2]=e;if(g>>>0<(c[m>>2]|0)>>>0?(a[g>>0]|0)!=62:0){b=3;i=o;return b|0}}else{k=e<<1;m=l-n|0;k=k>>>0>m>>>0?m:k;if(k){e=1;h=0;g=0;d:do{j=a[n+h>>0]|0;switch(j<<24>>24){case 0:case 9:case 10:case 12:case 13:case 32:break;default:{if(j<<24>>24<0)break d;j=a[22696+(j&127)>>0]|0;if((j&255)>15)break d;e=j<<24>>24|e<<4;if(e&256){a[d+g>>0]=e;e=1;g=g+1|0}}}h=h+1|0}while(h>>>0>>0);if((e|0)!=1){a[d+g>>0]=e<<4;g=g+1|0}}else{h=0;g=0}c[f>>2]=g}c[b>>2]=n+h;b=0;i=o;return b|0}function Km(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;n=o;m=c[d+8>>2]|0;h=c[d>>2]|0;a:do if(h>>>0>>0)while(1){b:do switch(a[h>>0]|0){case 37:{g=37;while(1){if(g<<24>>24==10|g<<24>>24==13)break b;h=h+1|0;if(h>>>0>=m>>>0)break b;g=a[h>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:break a}while(0);h=h+1|0;if(h>>>0>=m>>>0)break a}while(0);c[d>>2]=h;c[n>>2]=h;c:do if(h>>>0>>0){g=a[h>>0]|0;if(g<<24>>24!=91)if(g<<24>>24==123){g=125;k=10}else{j=0;l=0}else{g=93;k=10}if((k|0)==10){h=h+1|0;c[n>>2]=h;j=1;l=g}d:do if(!f){k=j;g=0;while(1){if(h>>>0>=m>>>0)break c;e:while(1){f:do switch(a[h>>0]|0){case 0:case 12:case 9:case 10:case 13:case 32:break;case 37:{j=37;while(1){if(j<<24>>24==10|j<<24>>24==13)break f;h=h+1|0;if(h>>>0>=m>>>0)break f;j=a[h>>0]|0}}default:{j=h;break e}}while(0);h=h+1|0;if(h>>>0>=m>>>0){j=h;break}}c[n>>2]=j;if(j>>>0>=m>>>0){h=j;break c}if((a[j>>0]|0)==l<<24>>24){h=j;break d}Us(n,m,0)|0;h=c[n>>2]|0;if((j|0)==(h|0)){h=j;g=-1;break c}g=g+1|0;if(k)k=1;else break c}}else{k=j;g=0;while(1){if(h>>>0>=m>>>0)break c;g:do{h:do switch(a[h>>0]|0){case 0:case 12:case 9:case 10:case 13:case 32:break;case 37:{j=37;while(1){if(j<<24>>24==10|j<<24>>24==13)break h;h=h+1|0;if(h>>>0>=m>>>0)break h;j=a[h>>0]|0}}default:break g}while(0);h=h+1|0}while(h>>>0>>0);c[n>>2]=h;if(h>>>0>=m>>>0)break c;if((a[h>>0]|0)==l<<24>>24)break d;if((g|0)>=(e|0))break c;b[f+(g<<1)>>1]=(Us(n,m,0)|0)>>>16;j=c[n>>2]|0;if((h|0)==(j|0)){g=-1;break c}g=g+1|0;if(k){h=j;k=1}else{h=j;break c}}}while(0);h=h+1|0;c[n>>2]=h}else g=0;while(0);c[d>>2]=h;i=o;return g|0}function Lm(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;r=s+4|0;q=s;p=c[b+8>>2]|0;h=c[b>>2]|0;a:do if(h>>>0

>>0)while(1){b:do switch(a[h>>0]|0){case 0:case 12:case 9:case 10:case 13:case 32:break;case 37:{g=37;while(1){if(g<<24>>24==10|g<<24>>24==13)break b;h=h+1|0;if(h>>>0>=p>>>0)break b;g=a[h>>0]|0}}default:break a}while(0);h=h+1|0;if(h>>>0>=p>>>0)break a}while(0);c[b>>2]=h;c[r>>2]=h;c:do if(h>>>0

>>0){g=a[h>>0]|0;if(g<<24>>24!=91)if(g<<24>>24==123){g=125;j=10}else{k=0;o=0}else{g=93;j=10}if((j|0)==10){h=h+1|0;c[r>>2]=h;k=1;o=g}n=(e|0)!=0;m=n^1;l=k;g=0;while(1){if(h>>>0>=p>>>0)break c;d:do{e:do switch(a[h>>0]|0){case 37:{k=37;while(1){if(k<<24>>24==10|k<<24>>24==13)break e;h=h+1|0;if(h>>>0>=p>>>0)break e;k=a[h>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:break d}while(0);h=h+1|0}while(h>>>0

>>0);c[r>>2]=h;if(h>>>0>=p>>>0)break c;if((a[h>>0]|0)==o<<24>>24)break;if(!((g|0)<(d|0)|m))break c;j=Us(r,p,f)|0;if(n)k=e+(g<<2)|0;else k=q;c[k>>2]=j;k=c[r>>2]|0;if((h|0)==(k|0)){g=-1;break c}g=g+1|0;if(l){h=k;l=1}else{h=k;break c}}h=h+1|0;c[r>>2]=h}else g=0;while(0);c[b>>2]=h;i=s;return g|0}function Mm(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;o=e+8|0;c[o>>2]=0;c[e>>2]=0;p=e+4|0;c[p>>2]=0;k=b+8|0;n=c[k>>2]|0;f=c[b>>2]|0;a:do if(f>>>0>>0)while(1){b:do switch(a[f>>0]|0){case 0:case 12:case 9:case 10:case 13:case 32:break;case 37:{j=37;while(1){if(j<<24>>24==10|j<<24>>24==13)break b;f=f+1|0;if(f>>>0>=n>>>0)break b;j=a[f>>0]|0}}default:break a}while(0);f=f+1|0;if(f>>>0>=n>>>0)break a}while(0);c[b>>2]=f;if(f>>>0>=n>>>0){i=q;return}g=d[f>>0]|0;c:do if((g|0)==123){c[o>>2]=3;c[e>>2]=f;g=0;d:while(1){h=a[f>>0]|0;e:do switch(h&255|0){case 40:{if(f>>>0>>0)l=0;else{m=57;break d}while(1){j=f;f:while(1){h=a[j>>0]|0;f=j+1|0;g:do if(h<<24>>24==41){m=40;break f}else if(h<<24>>24==92){if((f|0)==(n|0)){f=n;m=57;break d}switch(d[f>>0]|0){case 41:case 40:case 92:case 102:case 98:case 116:case 114:case 110:{f=j+2|0;break g}default:{}}if(f>>>0>>0){h=f;k=0;while(1){if((a[h>>0]&-8)<<24>>24!=48){f=h;break g}f=j+2|0;k=k+1|0;if(!(k>>>0<3&f>>>0>>0))break;else{j=h;h=f}}}}else if(h<<24>>24==40){m=38;break f}while(0);if(f>>>0>>0)j=f;else{m=57;break d}}if((m|0)==38)h=l+1|0;else if((m|0)==40){m=0;h=l+-1|0;if(!h)break e}if(f>>>0>>0)l=h;else{m=57;break d}}}case 60:{f=f+1|0;h:do if(f>>>0>>0)while(1){i:do switch(a[f>>0]|0){case 0:case 12:case 9:case 10:case 13:case 32:{m=46;break}case 37:{h=37;while(1){if(h<<24>>24==10|h<<24>>24==13){m=46;break i}f=f+1|0;if(f>>>0>=n>>>0){m=46;break i}h=a[f>>0]|0}}default:{}}while(0);if((m|0)==46){m=0;f=f+1|0;if(f>>>0>>0)continue}if(f>>>0>=n>>>0)break h;h=a[f>>0]|0;if((h+-48<<24>>24&255)>=10)switch(h<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break h}f=f+1|0;if(f>>>0>=n>>>0)break h}while(0);if(f>>>0>>0?(a[f>>0]|0)!=62:0){m=57;break d}f=f+1|0;break}case 123:{g=g+1|0;break}case 37:while(1){if(h<<24>>24==10|h<<24>>24==13)break e;f=f+1|0;if(f>>>0>=n>>>0)break e;h=a[f>>0]|0}case 125:{g=g+-1|0;if(!g){m=27;break d}break}default:{}}while(0);f=f+1|0;if(f>>>0>=n>>>0){h=0;break}}if((m|0)==27){f=f+1|0;g=0;h=0}else if((m|0)==57){f=f+1|0;h=3}if(!(g|h))c[p>>2]=f;else m=83}else if((g|0)==40){c[o>>2]=2;c[e>>2]=f;k=0;while(1){h=f;j:while(1){g=a[h>>0]|0;f=h+1|0;k:do if(g<<24>>24==41){m=22;break j}else if(g<<24>>24==92){if((f|0)==(n|0)){f=n;m=83;break c}switch(d[f>>0]|0){case 41:case 40:case 92:case 102:case 98:case 116:case 114:case 110:{f=h+2|0;break k}default:{}}if(f>>>0>>0){j=f;g=0;while(1){if((a[j>>0]&-8)<<24>>24!=48){f=j;break k}f=h+2|0;g=g+1|0;if(!(g>>>0<3&f>>>0>>0))break;else{h=j;j=f}}}}else if(g<<24>>24==40){m=20;break j}while(0);if(f>>>0>>0)h=f;else{m=83;break c}}if((m|0)==20)g=k+1|0;else if((m|0)==22){m=0;g=k+-1|0;if(!g)break}if(f>>>0>>0)k=g;else{m=83;break c}}c[p>>2]=f}else if((g|0)==91){c[o>>2]=3;g=f+1|0;c[e>>2]=f;c[b>>2]=g;l:do if(g>>>0>>0){f=g;while(1){m:do switch(a[f>>0]|0){case 0:case 12:case 9:case 10:case 13:case 32:break;case 37:{j=37;while(1){if(j<<24>>24==10|j<<24>>24==13)break m;f=f+1|0;if(f>>>0>=n>>>0)break m;j=a[f>>0]|0}}default:break l}while(0);f=f+1|0;if(f>>>0>=n>>>0)break l}}else f=g;while(0);c[b>>2]=f;if(f>>>0>>0){l=b+12|0;g=1;while(1){if(c[l>>2]|0){m=83;break c}j=a[f>>0]|0;if(j<<24>>24==93)if((g|0)<2)break;else g=g+-1|0;else if(j<<24>>24==91)g=g+1|0;c[b>>2]=f;Gm(b);h=c[k>>2]|0;f=c[b>>2]|0;n:do if(f>>>0>>0)while(1){o:do switch(a[f>>0]|0){case 37:{j=37;while(1){if(j<<24>>24==10|j<<24>>24==13)break o;f=f+1|0;if(f>>>0>=h>>>0)break o;j=a[f>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:break n}while(0);f=f+1|0;if(f>>>0>=h>>>0)break n}while(0);c[b>>2]=f;if(f>>>0>=n>>>0){m=83;break c}}f=f+1|0;c[p>>2]=f}else m=83}else{c[e>>2]=f;c[o>>2]=(a[f>>0]|0)==47?4:1;Gm(b);f=c[b>>2]|0;if(!(c[b+12>>2]|0)){c[p>>2]=f;g=f;m=84}else m=83}while(0);if((m|0)==83){g=c[p>>2]|0;m=84}if((m|0)==84)if(!g){c[e>>2]=0;c[o>>2]=0}c[b>>2]=f;i=q;return}function Nm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;f=n+12|0;j=n;c[e>>2]=-1;Mm(a,f);if((c[f+8>>2]|0)!=3){i=n;return}k=c[a>>2]|0;l=a+8|0;m=c[l>>2]|0;h=b+(d*12|0)|0;d=(c[f>>2]|0)+1|0;c[a>>2]=d;g=(c[f+4>>2]|0)+-1|0;c[l>>2]=g;a:do if(d>>>0>>0){f=j+8|0;g=(b|0)!=0;d=b;do{Mm(a,j);if(!(c[f>>2]|0))break a;if(g&d>>>0>>0){c[d+0>>2]=c[j+0>>2];c[d+4>>2]=c[j+4>>2];c[d+8>>2]=c[j+8>>2]}d=d+12|0}while((c[a>>2]|0)>>>0<(c[l>>2]|0)>>>0)}else d=b;while(0);c[e>>2]=(d-b|0)/12|0;c[a>>2]=k;c[l>>2]=m;i=n;return}function Om(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=i;i=i+64|0;K=P+56|0;L=P;j=P+4|0;N=P+16|0;O=P+20|0;l=P+24|0;M=P+40|0;Mm(e,j);k=c[j+8>>2]|0;a:do if(k){m=c[j>>2]|0;c[N>>2]=m;o=c[j+4>>2]|0;n=c[f+8>>2]|0;if((n|0)==7){G=c[e>>2]|0;J=e+8|0;H=c[J>>2]|0;c[e>>2]=m+1;c[J>>2]=o+-1;Mm(e,l);c[e>>2]=G;c[J>>2]=H;if((c[l+8>>2]|0)==3){l=1;n=8;x=5}else{j=m;l=1;m=0;n=7;x=7}}else if((k|0)==3){k=3;l=h;x=5}else{j=m;l=1;m=0;x=7}if((x|0)==5){if(!h)break;j=m+1|0;c[N>>2]=j;if(l){m=1;o=o+-1|0;x=7}}b:do if((x|0)==7){J=f+16|0;I=f+20|0;z=e+16|0;A=o;B=M+4|0;C=M+8|0;D=M+12|0;E=h<<2;F=(h|0)==0;G=h<<1;H=h*3|0;y=m;c:while(1){q=c[g+(y<<2)>>2]|0;s=c[J>>2]|0;v=q+s|0;d:do if(j>>>0>>0)while(1){e:do switch(a[j>>0]|0){case 0:case 12:case 9:case 10:case 13:case 32:break;case 37:{e=37;while(1){if(e<<24>>24==10|e<<24>>24==13)break e;j=j+1|0;if(j>>>0>=o>>>0)break e;e=a[j>>0]|0}}default:{r=j;break d}}while(0);j=j+1|0;if(j>>>0>=o>>>0){r=j;break d}}else r=j;while(0);c[N>>2]=r;f:do switch(n|0){case 4:{j=Us(N,o,3)|0;x=58;break}case 1:{j=r+3|0;if((((j>>>0>>0?(a[r>>0]|0)==116:0)?(a[r+1>>0]|0)==114:0)?(a[r+2>>0]|0)==117:0)?(a[j>>0]|0)==101:0){j=r+5|0;m=1}else{m=r+4|0;if((((m>>>0>>0?(a[r>>0]|0)==102:0)?(a[r+1>>0]|0)==97:0)?(a[r+2>>0]|0)==108:0)?(a[j>>0]|0)==115:0){j=(a[m>>0]|0)==101?r+6|0:r;m=0}else{j=r;m=0}}c[N>>2]=j;j=m;x=58;break}case 3:{j=Us(N,o,0)|0;x=58;break}case 2:{if(r>>>0>>0){m=a[r>>0]|0;if(m<<24>>24==43|m<<24>>24==45){j=r+1|0;if((j|0)==(o|0)){j=0;x=58;break f}else q=m<<24>>24==45&1}else{j=r;q=0}g:do if(j>>>0>>0){f=0;p=0;while(1){e=a[j>>0]|0;m=e&255;switch(e<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{e=f;m=j;break g}default:{}}if(e<<24>>24<0){e=f;m=j;break g}x=m&127;e=a[22696+x>>0]|0;m=e<<24>>24;if((x+-48|0)>>>0>=10){e=f;m=j;break g}if((p|0)<=214748364)if((p|0)==214748364&e<<24>>24>7){e=1;p=214748364}else{e=f;p=m+(p*10|0)|0}else e=1;j=j+1|0;if(j>>>0>>0)f=e;else{m=j;break g}}}else{e=0;p=0;m=j}while(0);j=e<<24>>24==0?p:2147483647;j=q<<24>>24==0?j:0-j|0;if((m|0)!=(r|0)){if(m>>>0>>0?(a[m>>0]|0)==35:0){u=m+1|0;if(u>>>0>=o>>>0|(j+-2|0)>>>0>34){j=0;x=58;break f}e=a[u>>0]|0;if(e<<24>>24==43|e<<24>>24==45){m=m+2|0;if((m|0)==(o|0)){j=0;x=58;break f}else t=e<<24>>24==45&1}else{m=u;t=0}r=2147483647/(j|0)|0;h:do if(m>>>0>>0){s=(2147483647%(j|0)|0)<<24>>24;q=0;f=0;while(1){e=a[m>>0]|0;p=e&255;switch(e<<24>>24){case 0:case 12:case 9:case 10:case 13:case 32:{e=q;j=f;break h}default:{}}if(e<<24>>24<0){e=q;j=f;break h}x=a[22696+(p&127)>>0]|0;e=x<<24>>24;if(!(x<<24>>24>-1&(e|0)<(j|0))){e=q;j=f;break h}do if((f|0)>(r|0))p=1;else{if((f|0)==(r|0)&(e|0)>(s|0)){p=1;f=r;break}p=q;f=e+(ea(f,j)|0)|0}while(0);m=m+1|0;if(m>>>0>>0)q=p;else{e=p;j=f;break h}}}else{e=0;j=0}while(0);j=e<<24>>24==0?j:2147483647;if((m|0)==(u|0)){j=0;x=58;break f}else j=t<<24>>24==0?j:0-j|0}c[N>>2]=m;x=58}else{j=0;x=58}}else{j=0;x=58}break}case 7:{c[K>>2]=r;i:do if(r>>>0>>0){j=a[r>>0]|0;if(j<<24>>24!=91)if(j<<24>>24==123){e=125;x=75}else{m=0;j=r;e=0}else{e=93;x=75}if((x|0)==75){x=0;j=r+1|0;c[K>>2]=j;m=1}f=m;m=0;while(1){if(j>>>0>=o>>>0)break;j:do{k:do switch(a[j>>0]|0){case 37:{p=37;while(1){if(p<<24>>24==10|p<<24>>24==13)break k;j=j+1|0;if(j>>>0>=o>>>0)break k;p=a[j>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:break j}while(0);j=j+1|0}while(j>>>0>>0);c[K>>2]=j;if(j>>>0>=o>>>0)break;if((a[j>>0]|0)==e<<24>>24){x=85;break}if((m|0)>=4){x=90;break i}c[M+(m<<2)>>2]=Us(K,o,0)|0;p=c[K>>2]|0;if((j|0)==(p|0)){x=88;break c}m=m+1|0;if(f){j=p;f=1}else{j=p;break}}if((x|0)==85){x=0;j=j+1|0;c[K>>2]=j}c[N>>2]=j;if((m|0)<0){x=92;break c}}else{j=r;x=90}while(0);if((x|0)==90){x=0;c[N>>2]=j}c[v>>2]=Rg(c[M>>2]|0)|0;c[q+(s+4)>>2]=Rg(c[B>>2]|0)|0;c[q+(s+8)>>2]=Rg(c[C>>2]|0)|0;c[q+(s+12)>>2]=Rg(c[D>>2]|0)|0;break}case 6:case 5:{e=c[z>>2]|0;j=A-r|0;if(r>>>0>>0){if((k|0)==4){p=r+1|0;c[N>>2]=p;f=j+-1|0}else if((k|0)==2){p=r+1|0;c[N>>2]=p;f=j+-2|0}else{x=67;break c}j=c[v>>2]|0;if(j){eh(e,j);c[v>>2]=0}m=ch(e,f+1|0,O)|0;j=c[O>>2]|0;if(j){x=131;break c}Aga(m|0,p|0,f|0)|0;a[m+f>>0]=0;c[v>>2]=m}break}case 8:{v=c[z>>2]|0;w=hh(v,4,0,E,0,O)|0;j=c[O>>2]|0;if(!j){j=r;u=0}else{x=131;break c}do{t=ea(u,h)|0;m=w+(t<<2)|0;c[K>>2]=j;if(j>>>0>>0){e=a[j>>0]|0;if(e<<24>>24!=91)if(e<<24>>24==123){e=125;x=100}else{p=0;e=0}else{e=93;x=100}if((x|0)==100){x=0;j=j+1|0;c[K>>2]=j;p=1}s=(m|0)!=0;r=s^1;q=p;m=0;while(1){if(j>>>0>=o>>>0)break;l:do{m:do switch(a[j>>0]|0){case 0:case 12:case 9:case 10:case 13:case 32:break;case 37:{p=37;while(1){if(p<<24>>24==10|p<<24>>24==13)break m;j=j+1|0;if(j>>>0>=o>>>0)break m;p=a[j>>0]|0}}default:break l}while(0);j=j+1|0}while(j>>>0>>0);c[K>>2]=j;if(j>>>0>=o>>>0)break;if((a[j>>0]|0)==e<<24>>24){x=110;break}if(!((m|0)<(h|0)|r))break;p=Us(K,o,0)|0;if(s)f=w+(m+t<<2)|0;else f=L;c[f>>2]=p;p=c[K>>2]|0;if((j|0)==(p|0)){x=115;break c}m=m+1|0;if(q){j=p;q=1}else{j=p;break}}if((x|0)==110){x=0;j=j+1|0;c[K>>2]=j}c[N>>2]=j;if((m|0)<0){x=118;break c}}else c[N>>2]=j;n:do if(j>>>0>>0)while(1){o:do switch(a[j>>0]|0){case 37:{e=37;while(1){if(e<<24>>24==10|e<<24>>24==13)break o;j=j+1|0;if(j>>>0>=o>>>0)break o;e=a[j>>0]|0}}case 0:case 12:case 9:case 10:case 13:case 32:break;default:break n}while(0);j=j+1|0;if(j>>>0>=o>>>0)break n}while(0);c[N>>2]=j;u=u+1|0}while(u>>>0<4);if(!F){j=0;do{u=c[g+(j<<2)>>2]|0;c[u>>2]=Rg(c[w+(j<<2)>>2]|0)|0;c[u+4>>2]=Rg(c[w+(j+h<<2)>>2]|0)|0;c[u+8>>2]=Rg(c[w+(j+G<<2)>>2]|0)|0;c[u+12>>2]=Rg(c[w+(j+H<<2)>>2]|0)|0;j=j+1|0}while((j|0)!=(h|0))}eh(v,w);break}default:break a}while(0);do if((x|0)==58){x=0;m=d[I>>0]|0;if((m|0)==1){a[v>>0]=j;break}else if((m|0)==4){c[v>>2]=j;break}else if((m|0)==2){b[v>>1]=j;break}else{c[v>>2]=j;break}}while(0);l=l+-1|0;if(!l)break b;j=c[N>>2]|0;y=y+1|0}if((x|0)==67){c[O>>2]=3;O=3;i=P;return O|0}else if((x|0)==88){c[N>>2]=j;x=92}else if((x|0)==115){c[N>>2]=j;x=118}else if((x|0)==131){i=P;return j|0}if((x|0)==92){c[O>>2]=3;O=3;i=P;return O|0}else if((x|0)==118){c[O>>2]=3;O=3;i=P;return O|0}}while(0);c[O>>2]=0;O=0;i=P;return O|0}while(0);c[O>>2]=3;O=3;i=P;return O|0} +function oH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;v=i;i=i+384|0;u=v;t=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=u;while(1){r=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;A=ea((c[d+128>>2]|0)*10033|0,b[f+64>>1]|0)|0;q=A+r|0;A=r-A|0;o=ea(b[f+32>>1]|0,c[d+64>>2]|0)|0;z=o*11190|0;o=o<<13;k=ea(c[d+192>>2]<<13,b[f+96>>1]|0)|0;p=o-k|0;w=p+r|0;p=r-p|0;r=k+z|0;y=r+q|0;r=q-r|0;k=z-o-k|0;o=k+A|0;k=A-k|0;A=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;z=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;q=ea(b[f+80>>1]|0,c[d+160>>2]|0)|0;n=ea(b[f+112>>1]|0,c[d+224>>2]|0)|0;C=z*10703|0;B=ea(z,-4433)|0;l=q+A|0;s=(n+l|0)*7053|0;l=s+(l*2139|0)|0;x=C+(A*2295|0)+l|0;m=ea(n+q|0,-8565)|0;l=(ea(q,-12112)|0)+B+m+l|0;m=(n*12998|0)-C+s+m|0;s=B+(ea(A,-5540)|0)+(ea(n,-16244)|0)+s|0;n=A-n|0;q=z-q|0;z=(n+q|0)*4433|0;n=z+(n*6270|0)|0;q=z+(ea(q,-15137)|0)|0;c[e>>2]=x+y>>11;c[e+352>>2]=y-x>>11;c[e+32>>2]=n+w>>11;c[e+320>>2]=w-n>>11;c[e+64>>2]=l+o>>11;c[e+288>>2]=o-l>>11;c[e+96>>2]=m+k>>11;c[e+256>>2]=k-m>>11;c[e+128>>2]=q+p>>11;c[e+224>>2]=p-q>>11;c[e+160>>2]=s+r>>11;c[e+192>>2]=r-s>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+11|0;p=h+1|0;q=h+10|0;r=h+2|0;j=h+9|0;f=h+3|0;e=h+8|0;k=h+4|0;l=h+7|0;n=h+5|0;o=h+6|0;s=0;d=u;while(1){C=c[g+(s<<2)>>2]|0;A=(c[d>>2]<<13)+131072|0;J=(c[d+16>>2]|0)*10033|0;z=A+J|0;J=A-J|0;D=c[d+8>>2]|0;I=D*11190|0;D=D<<13;w=c[d+24>>2]<<13;y=D-w|0;F=y+A|0;y=A-y|0;A=w+I|0;H=A+z|0;A=z-A|0;w=I-D-w|0;D=w+J|0;w=J-w|0;J=c[d+4>>2]|0;I=c[d+12>>2]|0;z=c[d+20>>2]|0;E=c[d+28>>2]|0;L=I*10703|0;K=ea(I,-4433)|0;u=z+J|0;B=(u+E|0)*7053|0;u=B+(u*2139|0)|0;G=L+(J*2295|0)+u|0;x=ea(E+z|0,-8565)|0;u=(ea(z,-12112)|0)+K+x+u|0;x=(E*12998|0)-L+B+x|0;B=K+(ea(J,-5540)|0)+(ea(E,-16244)|0)+B|0;E=J-E|0;z=I-z|0;I=(E+z|0)*4433|0;E=I+(E*6270|0)|0;z=I+(ea(z,-15137)|0)|0;a[C+h>>0]=a[t+(((G+H|0)>>>18&1023)+128)>>0]|0;a[C+m>>0]=a[t+(((H-G|0)>>>18&1023)+128)>>0]|0;a[C+p>>0]=a[t+(((E+F|0)>>>18&1023)+128)>>0]|0;a[C+q>>0]=a[t+(((F-E|0)>>>18&1023)+128)>>0]|0;a[C+r>>0]=a[t+(((u+D|0)>>>18&1023)+128)>>0]|0;a[C+j>>0]=a[t+(((D-u|0)>>>18&1023)+128)>>0]|0;a[C+f>>0]=a[t+(((x+w|0)>>>18&1023)+128)>>0]|0;a[C+e>>0]=a[t+(((w-x|0)>>>18&1023)+128)>>0]|0;a[C+k>>0]=a[t+(((z+y|0)>>>18&1023)+128)>>0]|0;a[C+l>>0]=a[t+(((y-z|0)>>>18&1023)+128)>>0]|0;a[C+n>>0]=a[t+(((B+A|0)>>>18&1023)+128)>>0]|0;a[C+o>>0]=a[t+(((A-B|0)>>>18&1023)+128)>>0]|0;s=s+1|0;if((s|0)==12)break;else d=d+32|0}i=v;return}function pH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;w=i;i=i+416|0;v=w;u=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=v;while(1){t=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;s=ea(b[f+32>>1]|0,c[d+64>>2]|0)|0;k=ea(b[f+64>>1]|0,c[d+128>>2]|0)|0;r=ea(b[f+96>>1]|0,c[d+192>>2]|0)|0;m=r+k|0;r=k-r|0;k=m*9465|0;x=(r*793|0)+t|0;B=k+(s*11249|0)+x|0;x=(s*4108|0)-k+x|0;k=m*2592|0;p=(r*3989|0)+t|0;z=(s*8672|0)-k+p|0;p=k+(ea(s,-10258)|0)+p|0;m=m*3570|0;k=t+(ea(r,-7678)|0)|0;o=(ea(s,-1396)|0)-m+k|0;k=m+(ea(s,-6581)|0)+k|0;m=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;F=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;D=ea(b[f+80>>1]|0,c[d+160>>2]|0)|0;C=ea(b[f+112>>1]|0,c[d+224>>2]|0)|0;y=(F+m|0)*10832|0;n=(D+m|0)*9534|0;q=C+m|0;E=q*7682|0;A=y+(ea(m,-16549)|0)+n+E|0;H=ea(D+F|0,-2773)|0;G=ea(C+F|0,-9534)|0;y=y+(F*6859|0)+H+G|0;l=ea(C+D|0,-5384)|0;n=H+(ea(D,-12879)|0)+n+l|0;l=G+(C*18068|0)+E+l|0;q=q*2773|0;E=(D-F|0)*7682|0;m=(ea(F,-3818)|0)+(m*2611|0)+E+q|0;q=E+(D*3150|0)+(ea(C,-14273)|0)+q|0;c[e>>2]=A+B>>11;c[e+384>>2]=B-A>>11;c[e+32>>2]=y+z>>11;c[e+352>>2]=z-y>>11;c[e+64>>2]=n+x>>11;c[e+320>>2]=x-n>>11;c[e+96>>2]=l+o>>11;c[e+288>>2]=o-l>>11;c[e+128>>2]=m+k>>11;c[e+256>>2]=k-m>>11;c[e+160>>2]=q+p>>11;c[e+224>>2]=p-q>>11;c[e+192>>2]=((r-s|0)*11585|0)+t>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+12|0;q=h+1|0;r=h+11|0;s=h+2|0;j=h+10|0;f=h+3|0;e=h+9|0;k=h+4|0;l=h+8|0;n=h+5|0;o=h+7|0;p=h+6|0;t=0;d=v;while(1){H=c[g+(t<<2)>>2]|0;G=(c[d>>2]<<13)+131072|0;E=c[d+8>>2]|0;z=c[d+16>>2]|0;D=c[d+24>>2]|0;A=D+z|0;D=z-D|0;z=A*9465|0;F=(D*793|0)+G|0;L=z+(E*11249|0)+F|0;F=(E*4108|0)-z+F|0;z=A*2592|0;B=(D*3989|0)+G|0;J=(E*8672|0)-z+B|0;B=z+(ea(E,-10258)|0)+B|0;A=A*3570|0;z=G+(ea(D,-7678)|0)|0;x=(ea(E,-1396)|0)-A+z|0;z=A+(ea(E,-6581)|0)+z|0;A=c[d+4>>2]|0;P=c[d+12>>2]|0;N=c[d+20>>2]|0;M=c[d+28>>2]|0;I=(P+A|0)*10832|0;v=(N+A|0)*9534|0;C=M+A|0;O=C*7682|0;K=I+(ea(A,-16549)|0)+v+O|0;R=ea(N+P|0,-2773)|0;Q=ea(M+P|0,-9534)|0;I=I+(P*6859|0)+R+Q|0;y=ea(M+N|0,-5384)|0;v=R+(ea(N,-12879)|0)+v+y|0;y=Q+(M*18068|0)+O+y|0;C=C*2773|0;O=(N-P|0)*7682|0;A=(ea(P,-3818)|0)+(A*2611|0)+O+C|0;C=O+(N*3150|0)+(ea(M,-14273)|0)+C|0;a[H+h>>0]=a[u+(((K+L|0)>>>18&1023)+128)>>0]|0;a[H+m>>0]=a[u+(((L-K|0)>>>18&1023)+128)>>0]|0;a[H+q>>0]=a[u+(((I+J|0)>>>18&1023)+128)>>0]|0;a[H+r>>0]=a[u+(((J-I|0)>>>18&1023)+128)>>0]|0;a[H+s>>0]=a[u+(((v+F|0)>>>18&1023)+128)>>0]|0;a[H+j>>0]=a[u+(((F-v|0)>>>18&1023)+128)>>0]|0;a[H+f>>0]=a[u+(((y+x|0)>>>18&1023)+128)>>0]|0;a[H+e>>0]=a[u+(((x-y|0)>>>18&1023)+128)>>0]|0;a[H+k>>0]=a[u+(((A+z|0)>>>18&1023)+128)>>0]|0;a[H+l>>0]=a[u+(((z-A|0)>>>18&1023)+128)>>0]|0;a[H+n>>0]=a[u+(((C+B|0)>>>18&1023)+128)>>0]|0;a[H+o>>0]=a[u+(((B-C|0)>>>18&1023)+128)>>0]|0;a[H+p>>0]=a[u+(((((D-E|0)*11585|0)+G|0)>>>18&1023)+128)>>0]|0;t=t+1|0;if((t|0)==13)break;else d=d+32|0}i=w;return}function qH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;x=i;i=i+448|0;w=x;v=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=w;while(1){k=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;p=ea(b[f+64>>1]|0,c[d+128>>2]|0)|0;y=(p*10438|0)+k|0;o=(p*2578|0)+k|0;u=(ea(p,-7223)|0)+k|0;k=(ea(p,-11586)|0)+k>>11;p=ea(b[f+32>>1]|0,c[d+64>>2]|0)|0;A=ea(b[f+96>>1]|0,c[d+192>>2]|0)|0;r=(A+p|0)*9058|0;t=r+(p*2237|0)|0;r=r+(ea(A,-14084)|0)|0;p=(ea(A,-11295)|0)+(p*5027|0)|0;A=t+y|0;t=y-t|0;y=r+o|0;r=o-r|0;o=p+u|0;p=u-p|0;u=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;D=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;B=ea(b[f+80>>1]|0,c[d+160>>2]|0)|0;m=ea(b[f+112>>1]|0,c[d+224>>2]|0)|0;q=m<<13;F=B+u|0;n=(D+u|0)*10935|0;E=F*9810|0;z=n+(ea(u,-9232)|0)+E+q|0;F=F*6164|0;C=u-D|0;s=(C*3826|0)-q|0;u=F+(ea(u,-8693)|0)+s|0;l=(ea(B+D|0,-1297)|0)-q|0;n=n+(ea(D,-3474)|0)+l|0;l=E+(ea(B,-19447)|0)+l|0;E=(B-D|0)*11512|0;q=E+(ea(B,-13850)|0)+F+q|0;s=E+(D*5529|0)+s|0;m=C-B+m<<2;c[e>>2]=z+A>>11;c[e+416>>2]=A-z>>11;c[e+32>>2]=n+y>>11;c[e+384>>2]=y-n>>11;c[e+64>>2]=l+o>>11;c[e+352>>2]=o-l>>11;c[e+96>>2]=m+k;c[e+320>>2]=k-m;c[e+128>>2]=q+p>>11;c[e+288>>2]=p-q>>11;c[e+160>>2]=s+r>>11;c[e+256>>2]=r-s>>11;c[e+192>>2]=u+t>>11;c[e+224>>2]=t-u>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+13|0;r=h+1|0;s=h+12|0;t=h+2|0;j=h+11|0;f=h+3|0;e=h+10|0;k=h+4|0;l=h+9|0;n=h+5|0;o=h+8|0;p=h+6|0;q=h+7|0;u=0;d=w;while(1){E=c[g+(u<<2)>>2]|0;y=(c[d>>2]<<13)+131072|0;F=c[d+16>>2]|0;J=y+(F*10438|0)|0;H=y+(F*2578|0)|0;D=y+(ea(F,-7223)|0)|0;F=y+(ea(F,-11586)|0)|0;y=c[d+8>>2]|0;L=c[d+24>>2]|0;A=(L+y|0)*9058|0;C=A+(y*2237|0)|0;A=A+(ea(L,-14084)|0)|0;y=(ea(L,-11295)|0)+(y*5027|0)|0;L=C+J|0;C=J-C|0;J=A+H|0;A=H-A|0;H=y+D|0;y=D-y|0;D=c[d+4>>2]|0;O=c[d+12>>2]|0;M=c[d+20>>2]|0;w=c[d+28>>2]<<13;z=M+D|0;I=(O+D|0)*10935|0;P=z*9810|0;K=I+(ea(D,-9232)|0)+P+w|0;z=z*6164|0;N=D-O|0;B=(N*3826|0)-w|0;D=z+(ea(D,-8693)|0)+B|0;G=(ea(M+O|0,-1297)|0)-w|0;I=I+(ea(O,-3474)|0)+G|0;G=P+(ea(M,-19447)|0)+G|0;P=(M-O|0)*11512|0;z=w+(ea(M,-13850)|0)+P+z|0;B=P+(O*5529|0)+B|0;w=(N-M<<13)+w|0;a[E+h>>0]=a[v+(((K+L|0)>>>18&1023)+128)>>0]|0;a[E+m>>0]=a[v+(((L-K|0)>>>18&1023)+128)>>0]|0;a[E+r>>0]=a[v+(((I+J|0)>>>18&1023)+128)>>0]|0;a[E+s>>0]=a[v+(((J-I|0)>>>18&1023)+128)>>0]|0;a[E+t>>0]=a[v+(((G+H|0)>>>18&1023)+128)>>0]|0;a[E+j>>0]=a[v+(((H-G|0)>>>18&1023)+128)>>0]|0;a[E+f>>0]=a[v+(((w+F|0)>>>18&1023)+128)>>0]|0;a[E+e>>0]=a[v+(((F-w|0)>>>18&1023)+128)>>0]|0;a[E+k>>0]=a[v+(((z+y|0)>>>18&1023)+128)>>0]|0;a[E+l>>0]=a[v+(((y-z|0)>>>18&1023)+128)>>0]|0;a[E+n>>0]=a[v+(((B+A|0)>>>18&1023)+128)>>0]|0;a[E+o>>0]=a[v+(((A-B|0)>>>18&1023)+128)>>0]|0;a[E+p>>0]=a[v+(((D+C|0)>>>18&1023)+128)>>0]|0;a[E+q>>0]=a[v+(((C-D|0)>>>18&1023)+128)>>0]|0;u=u+1|0;if((u|0)==14)break;else d=d+32|0}i=x;return}function rH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;y=i;i=i+480|0;x=y;w=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=x;while(1){v=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;p=ea(b[f+32>>1]|0,c[d+64>>2]|0)|0;o=ea(b[f+64>>1]|0,c[d+128>>2]|0)|0;m=ea(b[f+96>>1]|0,c[d+192>>2]|0)|0;z=(ea(m,-3580)|0)+v|0;D=(m*9373|0)+v|0;v=(ea(m,-11586)|0)+v|0;m=p-o|0;o=o+p|0;E=o*10958|0;k=m*374|0;p=p*11795|0;B=k+E+D|0;k=p-E+k+z|0;E=o*4482|0;t=ea(m,-3271)|0;r=D-E+t|0;t=E-p+t+z|0;o=o*6476|0;p=m*2896|0;z=p+o+z|0;p=D-o+p|0;o=v+(m*5792|0)|0;v=(ea(m,-11584)|0)+v|0;m=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;D=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;E=ea((c[d+160>>2]|0)*10033|0,b[f+80>>1]|0)|0;C=ea(b[f+112>>1]|0,c[d+224>>2]|0)|0;q=D-C|0;F=(q+m|0)*6810|0;n=F+(m*4209|0)|0;q=F+(ea(q,-17828)|0)|0;F=ea(D,-6810)|0;D=ea(D,-11018)|0;l=m-C|0;u=(l*11522|0)+E|0;A=(C*20131|0)-D+u|0;u=F+(ea(m,-9113)|0)+u|0;l=(l*10033|0)-E|0;s=(C+m|0)*4712|0;m=F+(m*3897|0)-E+s|0;s=E+D+(ea(C,-7121)|0)+s|0;c[e>>2]=A+B>>11;c[e+448>>2]=B-A>>11;c[e+32>>2]=n+z>>11;c[e+416>>2]=z-n>>11;c[e+64>>2]=l+o>>11;c[e+384>>2]=o-l>>11;c[e+96>>2]=m+k>>11;c[e+352>>2]=k-m>>11;c[e+128>>2]=q+p>>11;c[e+320>>2]=p-q>>11;c[e+160>>2]=s+r>>11;c[e+288>>2]=r-s>>11;c[e+192>>2]=u+t>>11;c[e+256>>2]=t-u>>11;c[e+224>>2]=v>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+14|0;s=h+1|0;t=h+13|0;u=h+2|0;j=h+12|0;f=h+3|0;e=h+11|0;k=h+4|0;l=h+10|0;n=h+5|0;o=h+9|0;p=h+6|0;q=h+8|0;r=h+7|0;v=0;d=x;while(1){E=c[g+(v<<2)>>2]|0;D=(c[d>>2]<<13)+131072|0;F=c[d+8>>2]|0;J=c[d+16>>2]|0;G=c[d+24>>2]|0;L=(ea(G,-3580)|0)+D|0;P=(G*9373|0)+D|0;D=(ea(G,-11586)|0)+D|0;G=F-J|0;J=J+F|0;Q=J*10958|0;H=G*374|0;F=F*11795|0;N=H+Q+P|0;H=F-Q+H+L|0;Q=J*4482|0;B=ea(G,-3271)|0;z=P-Q+B|0;B=Q-F+B+L|0;J=J*6476|0;F=G*2896|0;L=F+J+L|0;F=P-J+F|0;J=D+(G*5792|0)|0;D=(ea(G,-11584)|0)+D|0;G=c[d+4>>2]|0;P=c[d+12>>2]|0;Q=(c[d+20>>2]|0)*10033|0;O=c[d+28>>2]|0;x=P-O|0;R=(x+G|0)*6810|0;K=R+(G*4209|0)|0;x=R+(ea(x,-17828)|0)|0;R=ea(P,-6810)|0;P=ea(P,-11018)|0;I=G-O|0;C=(I*11522|0)+Q|0;M=(O*20131|0)-P+C|0;C=R+(ea(G,-9113)|0)+C|0;I=(I*10033|0)-Q|0;A=(O+G|0)*4712|0;G=R+(G*3897|0)-Q+A|0;A=Q+P+(ea(O,-7121)|0)+A|0;a[E+h>>0]=a[w+(((M+N|0)>>>18&1023)+128)>>0]|0;a[E+m>>0]=a[w+(((N-M|0)>>>18&1023)+128)>>0]|0;a[E+s>>0]=a[w+(((K+L|0)>>>18&1023)+128)>>0]|0;a[E+t>>0]=a[w+(((L-K|0)>>>18&1023)+128)>>0]|0;a[E+u>>0]=a[w+(((I+J|0)>>>18&1023)+128)>>0]|0;a[E+j>>0]=a[w+(((J-I|0)>>>18&1023)+128)>>0]|0;a[E+f>>0]=a[w+(((G+H|0)>>>18&1023)+128)>>0]|0;a[E+e>>0]=a[w+(((H-G|0)>>>18&1023)+128)>>0]|0;a[E+k>>0]=a[w+(((x+F|0)>>>18&1023)+128)>>0]|0;a[E+l>>0]=a[w+(((F-x|0)>>>18&1023)+128)>>0]|0;a[E+n>>0]=a[w+(((A+z|0)>>>18&1023)+128)>>0]|0;a[E+o>>0]=a[w+(((z-A|0)>>>18&1023)+128)>>0]|0;a[E+p>>0]=a[w+(((C+B|0)>>>18&1023)+128)>>0]|0;a[E+q>>0]=a[w+(((B-C|0)>>>18&1023)+128)>>0]|0;a[E+r>>0]=a[w+((D>>>18&1023)+128)>>0]|0;v=v+1|0;if((v|0)==15)break;else d=d+32|0}i=y;return}function sH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;z=i;i=i+512|0;y=z;x=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=y;while(1){r=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;k=ea(b[f+64>>1]|0,c[d+128>>2]|0)|0;w=k*10703|0;k=k*4433|0;A=w+r|0;w=r-w|0;o=k+r|0;k=r-k|0;r=ea(b[f+32>>1]|0,c[d+64>>2]|0)|0;p=ea(b[f+96>>1]|0,c[d+192>>2]|0)|0;u=r-p|0;C=u*2260|0;u=u*11363|0;v=u+(p*20995|0)|0;t=C+(r*7373|0)|0;r=u+(ea(r,-4926)|0)|0;p=C+(ea(p,-4176)|0)|0;C=v+A|0;v=A-v|0;A=t+o|0;t=o-t|0;o=r+k|0;r=k-r|0;k=p+w|0;p=w-p|0;w=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;u=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;E=ea(b[f+80>>1]|0,c[d+160>>2]|0)|0;G=ea(b[f+112>>1]|0,c[d+224>>2]|0)|0;D=E+w|0;n=(u+w|0)*11086|0;l=D*10217|0;s=(G+w|0)*8956|0;q=(w-G|0)*7350|0;D=D*5461|0;m=(w-u|0)*3363|0;B=n+(ea(w,-18730)|0)+l+s|0;w=m+(ea(w,-15038)|0)+D+q|0;J=(E+u|0)*1136|0;F=(E-u|0)*11529|0;H=G+u|0;I=ea(H,-5461)|0;n=n+(u*589|0)+J+I|0;H=ea(H,-10217)|0;u=m+(u*16154|0)+F+H|0;m=ea(G+E|0,-11086)|0;l=J+(ea(E,-9222)|0)+l+m|0;m=I+(G*8728|0)+s+m|0;s=(G-E|0)*3363|0;q=H+(G*25733|0)+q+s|0;s=F+(ea(E,-6278)|0)+D+s|0;c[e>>2]=B+C>>11;c[e+480>>2]=C-B>>11;c[e+32>>2]=n+A>>11;c[e+448>>2]=A-n>>11;c[e+64>>2]=l+o>>11;c[e+416>>2]=o-l>>11;c[e+96>>2]=m+k>>11;c[e+384>>2]=k-m>>11;c[e+128>>2]=q+p>>11;c[e+352>>2]=p-q>>11;c[e+160>>2]=s+r>>11;c[e+320>>2]=r-s>>11;c[e+192>>2]=u+t>>11;c[e+288>>2]=t-u>>11;c[e+224>>2]=w+v>>11;c[e+256>>2]=v-w>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+15|0;t=h+1|0;u=h+14|0;v=h+2|0;j=h+13|0;f=h+3|0;e=h+12|0;k=h+4|0;l=h+11|0;n=h+5|0;o=h+10|0;p=h+6|0;q=h+9|0;r=h+7|0;s=h+8|0;w=0;d=y;while(1){J=c[g+(w<<2)>>2]|0;C=(c[d>>2]<<13)+131072|0;F=c[d+16>>2]|0;I=F*10703|0;F=F*4433|0;N=C+I|0;I=C-I|0;L=C+F|0;F=C-F|0;C=c[d+8>>2]|0;A=c[d+24>>2]|0;G=C-A|0;P=G*2260|0;G=G*11363|0;H=G+(A*20995|0)|0;E=P+(C*7373|0)|0;C=G+(ea(C,-4926)|0)|0;A=P+(ea(A,-4176)|0)|0;P=H+N|0;H=N-H|0;N=E+L|0;E=L-E|0;L=C+F|0;C=F-C|0;F=A+I|0;A=I-A|0;I=c[d+4>>2]|0;G=c[d+12>>2]|0;R=c[d+20>>2]|0;T=c[d+28>>2]|0;Q=R+I|0;M=(G+I|0)*11086|0;K=Q*10217|0;D=(T+I|0)*8956|0;B=(I-T|0)*7350|0;Q=Q*5461|0;y=(I-G|0)*3363|0;O=M+(ea(I,-18730)|0)+K+D|0;I=y+(ea(I,-15038)|0)+Q+B|0;W=(R+G|0)*1136|0;S=(R-G|0)*11529|0;U=T+G|0;V=ea(U,-5461)|0;M=M+(G*589|0)+W+V|0;U=ea(U,-10217)|0;G=y+(G*16154|0)+S+U|0;y=ea(T+R|0,-11086)|0;K=W+(ea(R,-9222)|0)+K+y|0;y=V+(T*8728|0)+D+y|0;D=(T-R|0)*3363|0;B=U+(T*25733|0)+B+D|0;D=S+(ea(R,-6278)|0)+Q+D|0;a[J+h>>0]=a[x+(((O+P|0)>>>18&1023)+128)>>0]|0;a[J+m>>0]=a[x+(((P-O|0)>>>18&1023)+128)>>0]|0;a[J+t>>0]=a[x+(((M+N|0)>>>18&1023)+128)>>0]|0;a[J+u>>0]=a[x+(((N-M|0)>>>18&1023)+128)>>0]|0;a[J+v>>0]=a[x+(((K+L|0)>>>18&1023)+128)>>0]|0;a[J+j>>0]=a[x+(((L-K|0)>>>18&1023)+128)>>0]|0;a[J+f>>0]=a[x+(((y+F|0)>>>18&1023)+128)>>0]|0;a[J+e>>0]=a[x+(((F-y|0)>>>18&1023)+128)>>0]|0;a[J+k>>0]=a[x+(((B+A|0)>>>18&1023)+128)>>0]|0;a[J+l>>0]=a[x+(((A-B|0)>>>18&1023)+128)>>0]|0;a[J+n>>0]=a[x+(((D+C|0)>>>18&1023)+128)>>0]|0;a[J+o>>0]=a[x+(((C-D|0)>>>18&1023)+128)>>0]|0;a[J+p>>0]=a[x+(((G+E|0)>>>18&1023)+128)>>0]|0;a[J+q>>0]=a[x+(((E-G|0)>>>18&1023)+128)>>0]|0;a[J+r>>0]=a[x+(((I+H|0)>>>18&1023)+128)>>0]|0;a[J+s>>0]=a[x+(((H-I|0)>>>18&1023)+128)>>0]|0;w=w+1|0;if((w|0)==16)break;else d=d+32|0}i=z;return}function tH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;z=i;i=i+256|0;y=z;x=c[d+300>>2]|0;l=8;j=c[e+84>>2]|0;k=y;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){w=ea(c[j>>2]<<2,b[f>>1]|0)|0;c[k>>2]=w;c[k+32>>2]=w;c[k+64>>2]=w;c[k+96>>2]=w;c[k+128>>2]=w;c[k+160>>2]=w;c[k+192>>2]=w;c[k+224>>2]=w}else{d=0;m=10}else m=10;if((m|0)==10){m=0;v=ea(d<<16>>16,c[j+64>>2]|0)|0;t=ea(b[f+96>>1]|0,c[j+192>>2]|0)|0;w=(t+v|0)*4433|0;v=w+(v*6270|0)|0;t=w+(ea(t,-15137)|0)|0;w=ea(c[j+128>>2]<<13,b[f+64>>1]|0)|0;p=ea(c[j>>2]<<13,b[f>>1]|0)|0|1024;r=w+p|0;w=p-w|0;p=r+v|0;v=r-v|0;r=w+t|0;t=w-t|0;w=ea(b[f+112>>1]|0,c[j+224>>2]|0)|0;n=ea(b[f+80>>1]|0,c[j+160>>2]|0)|0;o=ea(b[f+48>>1]|0,c[j+96>>2]|0)|0;q=ea(e<<16>>16,c[j+32>>2]|0)|0;s=o+w|0;u=q+n|0;e=(u+s|0)*9633|0;s=e+(ea(s,-16069)|0)|0;u=e+(ea(u,-3196)|0)|0;e=ea(q+w|0,-7373)|0;w=e+(w*2446|0)+s|0;q=e+(q*12299|0)+u|0;e=ea(o+n|0,-20995)|0;u=e+(n*16819|0)+u|0;s=e+(o*25172|0)+s|0;c[k>>2]=q+p>>11;c[k+224>>2]=p-q>>11;c[k+32>>2]=s+r>>11;c[k+192>>2]=r-s>>11;c[k+64>>2]=u+t>>11;c[k+160>>2]=t-u>>11;c[k+96>>2]=w+v>>11;c[k+128>>2]=v-w>>11}l=l+-1|0;if((l|0)<=0)break;else{f=f+2|0;j=j+4|0;k=k+4|0}}m=h+15|0;t=h+1|0;u=h+14|0;v=h+2|0;j=h+13|0;f=h+3|0;e=h+12|0;l=h+4|0;k=h+11|0;n=h+5|0;o=h+10|0;p=h+6|0;q=h+9|0;r=h+7|0;s=h+8|0;w=0;d=y;while(1){y=c[g+(w<<2)>>2]|0;F=(c[d>>2]<<13)+131072|0;J=c[d+16>>2]|0;A=J*10703|0;J=J*4433|0;N=F+A|0;A=F-A|0;L=F+J|0;J=F-J|0;F=c[d+8>>2]|0;H=c[d+24>>2]|0;C=F-H|0;P=C*2260|0;C=C*11363|0;B=C+(H*20995|0)|0;D=P+(F*7373|0)|0;F=C+(ea(F,-4926)|0)|0;H=P+(ea(H,-4176)|0)|0;P=B+N|0;B=N-B|0;N=D+L|0;D=L-D|0;L=F+J|0;F=J-F|0;J=H+A|0;H=A-H|0;A=c[d+4>>2]|0;C=c[d+12>>2]|0;R=c[d+20>>2]|0;T=c[d+28>>2]|0;Q=R+A|0;M=(C+A|0)*11086|0;K=Q*10217|0;E=(T+A|0)*8956|0;G=(A-T|0)*7350|0;Q=Q*5461|0;I=(A-C|0)*3363|0;O=M+(ea(A,-18730)|0)+K+E|0;A=I+(ea(A,-15038)|0)+Q+G|0;W=(R+C|0)*1136|0;S=(R-C|0)*11529|0;U=T+C|0;V=ea(U,-5461)|0;M=M+(C*589|0)+W+V|0;U=ea(U,-10217)|0;C=I+(C*16154|0)+S+U|0;I=ea(T+R|0,-11086)|0;K=W+(ea(R,-9222)|0)+K+I|0;I=V+(T*8728|0)+E+I|0;E=(T-R|0)*3363|0;G=U+(T*25733|0)+G+E|0;E=S+(ea(R,-6278)|0)+Q+E|0;a[y+h>>0]=a[x+(((O+P|0)>>>18&1023)+128)>>0]|0;a[y+m>>0]=a[x+(((P-O|0)>>>18&1023)+128)>>0]|0;a[y+t>>0]=a[x+(((M+N|0)>>>18&1023)+128)>>0]|0;a[y+u>>0]=a[x+(((N-M|0)>>>18&1023)+128)>>0]|0;a[y+v>>0]=a[x+(((K+L|0)>>>18&1023)+128)>>0]|0;a[y+j>>0]=a[x+(((L-K|0)>>>18&1023)+128)>>0]|0;a[y+f>>0]=a[x+(((I+J|0)>>>18&1023)+128)>>0]|0;a[y+e>>0]=a[x+(((J-I|0)>>>18&1023)+128)>>0]|0;a[y+l>>0]=a[x+(((G+H|0)>>>18&1023)+128)>>0]|0;a[y+k>>0]=a[x+(((H-G|0)>>>18&1023)+128)>>0]|0;a[y+n>>0]=a[x+(((E+F|0)>>>18&1023)+128)>>0]|0;a[y+o>>0]=a[x+(((F-E|0)>>>18&1023)+128)>>0]|0;a[y+p>>0]=a[x+(((C+D|0)>>>18&1023)+128)>>0]|0;a[y+q>>0]=a[x+(((D-C|0)>>>18&1023)+128)>>0]|0;a[y+r>>0]=a[x+(((A+B|0)>>>18&1023)+128)>>0]|0;a[y+s>>0]=a[x+(((B-A|0)>>>18&1023)+128)>>0]|0;w=w+1|0;if((w|0)==8)break;else d=d+32|0}i=z;return}function uH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;x=i;i=i+224|0;w=x;v=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=w;while(1){u=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;n=ea(b[f+32>>1]|0,c[d+64>>2]|0)|0;s=ea(b[f+64>>1]|0,c[d+128>>2]|0)|0;l=ea(b[f+96>>1]|0,c[d+192>>2]|0)|0;o=(s-l|0)*7223|0;r=(n-s|0)*2578|0;m=(ea(s,-15083)|0)+u+r+o|0;t=l+n|0;q=(t*10438|0)+u|0;l=o+(ea(l,-637)|0)+q|0;q=r+(ea(n,-20239)|0)+q|0;n=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;r=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;o=ea(b[f+80>>1]|0,c[d+160>>2]|0)|0;y=(r+n|0)*7663|0;k=(n-r|0)*1395|0;r=ea(o+r|0,-11295)|0;p=y+k+r|0;n=(o+n|0)*5027|0;k=n+(y-k)|0;r=n+(o*15326|0)+r|0;c[e>>2]=k+l>>11;c[e+192>>2]=l-k>>11;c[e+32>>2]=p+m>>11;c[e+160>>2]=m-p>>11;c[e+64>>2]=r+q>>11;c[e+128>>2]=q-r>>11;c[e+96>>2]=((s-t|0)*11585|0)+u>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+13|0;r=h+1|0;s=h+12|0;t=h+2|0;j=h+11|0;f=h+3|0;e=h+10|0;k=h+4|0;l=h+9|0;n=h+5|0;o=h+8|0;p=h+6|0;q=h+7|0;u=0;d=w;while(1){y=c[g+(u<<2)>>2]|0;D=(c[d>>2]<<13)+131072|0;F=c[d+16>>2]|0;J=D+(F*10438|0)|0;H=D+(F*2578|0)|0;w=D+(ea(F,-7223)|0)|0;F=D+(ea(F,-11586)|0)|0;D=c[d+8>>2]|0;L=c[d+24>>2]|0;B=(L+D|0)*9058|0;z=B+(D*2237|0)|0;B=B+(ea(L,-14084)|0)|0;D=(ea(L,-11295)|0)+(D*5027|0)|0;L=z+J|0;z=J-z|0;J=B+H|0;B=H-B|0;H=D+w|0;D=w-D|0;w=c[d+4>>2]|0;O=c[d+12>>2]|0;M=c[d+20>>2]|0;E=c[d+28>>2]<<13;C=M+w|0;I=(O+w|0)*10935|0;P=C*9810|0;K=I+(ea(w,-9232)|0)+P+E|0;C=C*6164|0;N=w-O|0;A=(N*3826|0)-E|0;w=C+(ea(w,-8693)|0)+A|0;G=(ea(M+O|0,-1297)|0)-E|0;I=I+(ea(O,-3474)|0)+G|0;G=P+(ea(M,-19447)|0)+G|0;P=(M-O|0)*11512|0;C=E+(ea(M,-13850)|0)+P+C|0;A=P+(O*5529|0)+A|0;E=(N-M<<13)+E|0;a[y+h>>0]=a[v+(((K+L|0)>>>18&1023)+128)>>0]|0;a[y+m>>0]=a[v+(((L-K|0)>>>18&1023)+128)>>0]|0;a[y+r>>0]=a[v+(((I+J|0)>>>18&1023)+128)>>0]|0;a[y+s>>0]=a[v+(((J-I|0)>>>18&1023)+128)>>0]|0;a[y+t>>0]=a[v+(((G+H|0)>>>18&1023)+128)>>0]|0;a[y+j>>0]=a[v+(((H-G|0)>>>18&1023)+128)>>0]|0;a[y+f>>0]=a[v+(((E+F|0)>>>18&1023)+128)>>0]|0;a[y+e>>0]=a[v+(((F-E|0)>>>18&1023)+128)>>0]|0;a[y+k>>0]=a[v+(((C+D|0)>>>18&1023)+128)>>0]|0;a[y+l>>0]=a[v+(((D-C|0)>>>18&1023)+128)>>0]|0;a[y+n>>0]=a[v+(((A+B|0)>>>18&1023)+128)>>0]|0;a[y+o>>0]=a[v+(((B-A|0)>>>18&1023)+128)>>0]|0;a[y+p>>0]=a[v+(((w+z|0)>>>18&1023)+128)>>0]|0;a[y+q>>0]=a[v+(((z-w|0)>>>18&1023)+128)>>0]|0;u=u+1|0;if((u|0)==7)break;else d=d+32|0}i=x;return}function vH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;v=i;i=i+192|0;u=v;t=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=u;while(1){p=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;r=ea((c[d+128>>2]|0)*5793|0,b[f+64>>1]|0)|0;o=r+p|0;p=(ea(r,-2)|0)+p>>11;r=ea((c[d+64>>2]|0)*10033|0,b[f+32>>1]|0)|0;k=r+o|0;r=o-r|0;o=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;l=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;q=ea(b[f+80>>1]|0,c[d+160>>2]|0)|0;s=(q+o|0)*2998|0;m=s+(l+o<<13)|0;s=s+(q-l<<13)|0;q=o-l-q<<2;c[e>>2]=m+k>>11;c[e+160>>2]=k-m>>11;c[e+32>>2]=q+p;c[e+128>>2]=p-q;c[e+64>>2]=s+r>>11;c[e+96>>2]=r-s>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+11|0;p=h+1|0;q=h+10|0;r=h+2|0;j=h+9|0;f=h+3|0;e=h+8|0;k=h+4|0;l=h+7|0;n=h+5|0;o=h+6|0;s=0;d=u;while(1){u=c[g+(s<<2)>>2]|0;x=(c[d>>2]<<13)+131072|0;J=(c[d+16>>2]|0)*10033|0;y=x+J|0;J=x-J|0;D=c[d+8>>2]|0;I=D*11190|0;D=D<<13;B=c[d+24>>2]<<13;z=D-B|0;F=z+x|0;z=x-z|0;x=B+I|0;H=x+y|0;x=y-x|0;B=I-D-B|0;D=B+J|0;B=J-B|0;J=c[d+4>>2]|0;I=c[d+12>>2]|0;y=c[d+20>>2]|0;E=c[d+28>>2]|0;L=I*10703|0;K=ea(I,-4433)|0;C=y+J|0;w=(C+E|0)*7053|0;C=w+(C*2139|0)|0;G=L+(J*2295|0)+C|0;A=ea(E+y|0,-8565)|0;C=(ea(y,-12112)|0)+K+A+C|0;A=(E*12998|0)-L+w+A|0;w=K+(ea(J,-5540)|0)+(ea(E,-16244)|0)+w|0;E=J-E|0;y=I-y|0;I=(E+y|0)*4433|0;E=I+(E*6270|0)|0;y=I+(ea(y,-15137)|0)|0;a[u+h>>0]=a[t+(((G+H|0)>>>18&1023)+128)>>0]|0;a[u+m>>0]=a[t+(((H-G|0)>>>18&1023)+128)>>0]|0;a[u+p>>0]=a[t+(((E+F|0)>>>18&1023)+128)>>0]|0;a[u+q>>0]=a[t+(((F-E|0)>>>18&1023)+128)>>0]|0;a[u+r>>0]=a[t+(((C+D|0)>>>18&1023)+128)>>0]|0;a[u+j>>0]=a[t+(((D-C|0)>>>18&1023)+128)>>0]|0;a[u+f>>0]=a[t+(((A+B|0)>>>18&1023)+128)>>0]|0;a[u+e>>0]=a[t+(((B-A|0)>>>18&1023)+128)>>0]|0;a[u+k>>0]=a[t+(((y+z|0)>>>18&1023)+128)>>0]|0;a[u+l>>0]=a[t+(((z-y|0)>>>18&1023)+128)>>0]|0;a[u+n>>0]=a[t+(((w+x|0)>>>18&1023)+128)>>0]|0;a[u+o>>0]=a[t+(((x-w|0)>>>18&1023)+128)>>0]|0;s=s+1|0;if((s|0)==6)break;else d=d+32|0}i=v;return}function wH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;t=i;i=i+160|0;s=t;r=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=s;while(1){q=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;p=ea(b[f+32>>1]|0,c[d+64>>2]|0)|0;k=ea(b[f+64>>1]|0,c[d+128>>2]|0)|0;m=(k+p|0)*6476|0;k=p-k|0;p=(k*2896|0)+q|0;l=p+m|0;m=p-m|0;q=(ea(k,-11584)|0)+q|0;k=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;p=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;o=(p+k|0)*6810|0;k=o+(k*4209|0)|0;p=o+(ea(p,-17828)|0)|0;c[e>>2]=k+l>>11;c[e+128>>2]=l-k>>11;c[e+32>>2]=p+m>>11;c[e+96>>2]=m-p>>11;c[e+64>>2]=q>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}m=h+9|0;n=h+1|0;o=h+8|0;p=h+2|0;j=h+7|0;f=h+3|0;e=h+6|0;k=h+4|0;l=h+5|0;q=0;d=s;while(1){s=c[g+(q<<2)>>2]|0;v=(c[d>>2]<<13)+131072|0;z=c[d+16>>2]|0;B=v+(z*9373|0)|0;E=v+(ea(z,-3580)|0)|0;z=v+(ea(z,-11586)|0)|0;v=c[d+8>>2]|0;x=c[d+24>>2]|0;D=(x+v|0)*6810|0;v=D+(v*4209|0)|0;x=D+(ea(x,-17828)|0)|0;D=v+B|0;v=B-v|0;B=x+E|0;x=E-x|0;E=c[d+4>>2]|0;F=c[d+12>>2]|0;y=c[d+20>>2]<<13;A=c[d+28>>2]|0;w=A+F|0;A=F-A|0;F=A*2531|0;G=w*7791|0;u=F+y|0;C=G+(E*11443|0)+u|0;u=(E*1812|0)-G+u|0;w=w*4815|0;F=y-F-(A<<12)|0;y=(E-A<<13)-y|0;A=(E*10323|0)-w-F|0;w=F+((E*5260|0)-w)|0;a[s+h>>0]=a[r+(((C+D|0)>>>18&1023)+128)>>0]|0;a[s+m>>0]=a[r+(((D-C|0)>>>18&1023)+128)>>0]|0;a[s+n>>0]=a[r+(((A+B|0)>>>18&1023)+128)>>0]|0;a[s+o>>0]=a[r+(((B-A|0)>>>18&1023)+128)>>0]|0;a[s+p>>0]=a[r+(((y+z|0)>>>18&1023)+128)>>0]|0;a[s+j>>0]=a[r+(((z-y|0)>>>18&1023)+128)>>0]|0;a[s+f>>0]=a[r+(((w+x|0)>>>18&1023)+128)>>0]|0;a[s+e>>0]=a[r+(((x-w|0)>>>18&1023)+128)>>0]|0;a[s+k>>0]=a[r+(((u+v|0)>>>18&1023)+128)>>0]|0;a[s+l>>0]=a[r+(((v-u|0)>>>18&1023)+128)>>0]|0;q=q+1|0;if((q|0)==5)break;else d=d+32|0}i=t;return}function xH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;r=i;i=i+128|0;q=r;p=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=q;while(1){l=ea(b[f>>1]|0,c[d>>2]|0)|0;k=ea(b[f+32>>1]|0,c[d+64>>2]|0)|0;o=k+l<<2;k=l-k<<2;l=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;m=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;n=((m+l|0)*4433|0)+1024|0;l=n+(l*6270|0)>>11;m=n+(ea(m,-15137)|0)>>11;c[e>>2]=l+o;c[e+96>>2]=o-l;c[e+32>>2]=m+k;c[e+64>>2]=k-m;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}k=h+7|0;l=h+1|0;m=h+6|0;n=h+2|0;j=h+5|0;f=h+3|0;e=h+4|0;o=0;d=q;while(1){q=c[g+(o<<2)>>2]|0;t=c[d+8>>2]|0;v=c[d+24>>2]|0;z=(v+t|0)*4433|0;t=z+(t*6270|0)|0;v=z+(ea(v,-15137)|0)|0;z=(c[d>>2]|0)+16|0;s=c[d+16>>2]|0;x=z+s<<13;s=z-s<<13;z=x+t|0;t=x-t|0;x=s+v|0;v=s-v|0;s=c[d+28>>2]|0;C=c[d+20>>2]|0;A=c[d+12>>2]|0;y=c[d+4>>2]|0;w=A+s|0;u=y+C|0;B=(u+w|0)*9633|0;w=B+(ea(w,-16069)|0)|0;u=B+(ea(u,-3196)|0)|0;B=ea(y+s|0,-7373)|0;s=B+(s*2446|0)+w|0;y=B+(y*12299|0)+u|0;B=ea(A+C|0,-20995)|0;u=B+(C*16819|0)+u|0;w=B+(A*25172|0)+w|0;a[q+h>>0]=a[p+(((y+z|0)>>>18&1023)+128)>>0]|0;a[q+k>>0]=a[p+(((z-y|0)>>>18&1023)+128)>>0]|0;a[q+l>>0]=a[p+(((w+x|0)>>>18&1023)+128)>>0]|0;a[q+m>>0]=a[p+(((x-w|0)>>>18&1023)+128)>>0]|0;a[q+n>>0]=a[p+(((u+v|0)>>>18&1023)+128)>>0]|0;a[q+j>>0]=a[p+(((v-u|0)>>>18&1023)+128)>>0]|0;a[q+f>>0]=a[p+(((s+t|0)>>>18&1023)+128)>>0]|0;a[q+e>>0]=a[p+(((t-s|0)>>>18&1023)+128)>>0]|0;o=o+1|0;if((o|0)==4)break;else d=d+32|0}i=r;return}function yH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;p=i;i=i+80|0;o=p;n=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=o;while(1){m=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;k=ea((c[d+64>>2]|0)*5793|0,b[f+32>>1]|0)|0;l=k+m|0;m=(ea(k,-2)|0)+m|0;k=ea((c[d+32>>2]|0)*10033|0,b[f+16>>1]|0)|0;c[e>>2]=k+l>>11;c[e+48>>2]=l-k>>11;c[e+24>>2]=m>>11;j=j+1|0;if((j|0)==6)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}f=h+5|0;e=h+1|0;k=h+4|0;l=h+2|0;j=h+3|0;m=0;d=o;while(1){o=c[g+(m<<2)>>2]|0;r=(c[d>>2]<<13)+131072|0;t=(c[d+16>>2]|0)*5793|0;x=r+t|0;t=r-t-t|0;r=(c[d+8>>2]|0)*10033|0;v=x+r|0;r=x-r|0;x=c[d+4>>2]|0;w=c[d+12>>2]|0;s=c[d+20>>2]|0;q=(s+x|0)*2998|0;u=q+(w+x<<13)|0;q=q+(s-w<<13)|0;s=x-w-s<<13;a[o+h>>0]=a[n+(((u+v|0)>>>18&1023)+128)>>0]|0;a[o+f>>0]=a[n+(((v-u|0)>>>18&1023)+128)>>0]|0;a[o+e>>0]=a[n+(((s+t|0)>>>18&1023)+128)>>0]|0;a[o+k>>0]=a[n+(((t-s|0)>>>18&1023)+128)>>0]|0;a[o+l>>0]=a[n+(((q+r|0)>>>18&1023)+128)>>0]|0;a[o+j>>0]=a[n+(((r-q|0)>>>18&1023)+128)>>0]|0;m=m+1|0;if((m|0)==3)break;else d=d+24|0}i=p;return}function zH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;j=i;i=i+32|0;m=j;k=c[d+300>>2]|0;q=c[e+84>>2]|0;n=ea(b[f>>1]|0,c[q>>2]|0)|0;l=ea(b[f+16>>1]|0,c[q+32>>2]|0)|0;u=l+n|0;c[m>>2]=u;p=m+16|0;c[p>>2]=n-l;l=ea(b[f+2>>1]|0,c[q+4>>2]|0)|0;n=ea(b[f+18>>1]|0,c[q+36>>2]|0)|0;s=n+l|0;c[m+4>>2]=s;n=l-n|0;c[m+20>>2]=n;l=ea(b[f+4>>1]|0,c[q+8>>2]|0)|0;d=ea(b[f+20>>1]|0,c[q+40>>2]|0)|0;r=d+l|0;c[m+8>>2]=r;d=l-d|0;c[m+24>>2]=d;l=ea(b[f+6>>1]|0,c[q+12>>2]|0)|0;f=ea(b[f+22>>1]|0,c[q+44>>2]|0)|0;q=f+l|0;c[m+12>>2]=q;f=l-f|0;c[m+28>>2]=f;m=h+3|0;l=h+1|0;e=h+2|0;o=c[g>>2]|0;u=u+4|0;t=u+r<<13;r=u-r<<13;u=(q+s|0)*4433|0;s=u+(s*6270|0)|0;q=u+(ea(q,-15137)|0)|0;a[o+h>>0]=a[k+(((s+t|0)>>>16&1023)+128)>>0]|0;a[o+m>>0]=a[k+(((t-s|0)>>>16&1023)+128)>>0]|0;a[o+l>>0]=a[k+(((q+r|0)>>>16&1023)+128)>>0]|0;a[o+e>>0]=a[k+(((r-q|0)>>>16&1023)+128)>>0]|0;g=c[g+4>>2]|0;p=(c[p>>2]|0)+4|0;o=p+d<<13;d=p-d<<13;p=(f+n|0)*4433|0;n=p+(n*6270|0)|0;f=p+(ea(f,-15137)|0)|0;a[g+h>>0]=a[k+(((n+o|0)>>>16&1023)+128)>>0]|0;a[g+m>>0]=a[k+(((o-n|0)>>>16&1023)+128)>>0]|0;a[g+l>>0]=a[k+(((f+d|0)>>>16&1023)+128)>>0]|0;a[g+e>>0]=a[k+(((d-f|0)>>>16&1023)+128)>>0]|0;i=j;return}function AH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;i=c[d+300>>2]|0;j=c[e+84>>2]|0;e=c[g>>2]|0;d=(ea(b[f>>1]|0,c[j>>2]|0)|0)+4|0;g=ea(b[f+2>>1]|0,c[j+4>>2]|0)|0;a[e+h>>0]=a[i+(((g+d|0)>>>3&1023)+128)>>0]|0;a[e+(h+1)>>0]=a[i+(((d-g|0)>>>3&1023)+128)>>0]|0;return}function BH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;r=i;i=i+512|0;q=r;p=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=q;while(1){s=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;w=ea(b[f+64>>1]|0,c[d+128>>2]|0)|0;m=w*10703|0;w=w*4433|0;A=m+s|0;m=s-m|0;y=w+s|0;w=s-w|0;s=ea(b[f+32>>1]|0,c[d+64>>2]|0)|0;u=ea(b[f+96>>1]|0,c[d+192>>2]|0)|0;l=s-u|0;C=l*2260|0;l=l*11363|0;k=l+(u*20995|0)|0;o=C+(s*7373|0)|0;s=l+(ea(s,-4926)|0)|0;u=C+(ea(u,-4176)|0)|0;C=k+A|0;k=A-k|0;A=o+y|0;o=y-o|0;y=s+w|0;s=w-s|0;w=u+m|0;u=m-u|0;m=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;l=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;E=ea(b[f+80>>1]|0,c[d+160>>2]|0)|0;G=ea(b[f+112>>1]|0,c[d+224>>2]|0)|0;D=E+m|0;z=(l+m|0)*11086|0;x=D*10217|0;n=(G+m|0)*8956|0;t=(m-G|0)*7350|0;D=D*5461|0;v=(m-l|0)*3363|0;B=z+(ea(m,-18730)|0)+x+n|0;m=v+(ea(m,-15038)|0)+D+t|0;J=(E+l|0)*1136|0;F=(E-l|0)*11529|0;H=G+l|0;I=ea(H,-5461)|0;z=z+(l*589|0)+J+I|0;H=ea(H,-10217)|0;l=v+(l*16154|0)+F+H|0;v=ea(G+E|0,-11086)|0;x=J+(ea(E,-9222)|0)+x+v|0;v=I+(G*8728|0)+n+v|0;n=(G-E|0)*3363|0;t=H+(G*25733|0)+t+n|0;n=F+(ea(E,-6278)|0)+D+n|0;c[e>>2]=B+C>>11;c[e+480>>2]=C-B>>11;c[e+32>>2]=z+A>>11;c[e+448>>2]=A-z>>11;c[e+64>>2]=x+y>>11;c[e+416>>2]=y-x>>11;c[e+96>>2]=v+w>>11;c[e+384>>2]=w-v>>11;c[e+128>>2]=t+u>>11;c[e+352>>2]=u-t>>11;c[e+160>>2]=n+s>>11;c[e+320>>2]=s-n>>11;c[e+192>>2]=l+o>>11;c[e+288>>2]=o-l>>11;c[e+224>>2]=m+k>>11;c[e+256>>2]=k-m>>11;j=j+1|0;if((j|0)==8)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}k=h+7|0;l=h+1|0;m=h+6|0;n=h+2|0;j=h+5|0;f=h+3|0;e=h+4|0;o=0;d=q;while(1){J=c[g+(o<<2)>>2]|0;H=c[d+8>>2]|0;E=c[d+24>>2]|0;A=(E+H|0)*4433|0;H=A+(H*6270|0)|0;E=A+(ea(E,-15137)|0)|0;A=(c[d>>2]|0)+16|0;I=c[d+16>>2]|0;C=A+I<<13;I=A-I<<13;A=C+H|0;H=C-H|0;C=I+E|0;E=I-E|0;I=c[d+28>>2]|0;x=c[d+20>>2]|0;z=c[d+12>>2]|0;B=c[d+4>>2]|0;D=z+I|0;G=B+x|0;y=(G+D|0)*9633|0;D=y+(ea(D,-16069)|0)|0;G=y+(ea(G,-3196)|0)|0;y=ea(B+I|0,-7373)|0;I=y+(I*2446|0)+D|0;B=y+(B*12299|0)+G|0;y=ea(z+x|0,-20995)|0;G=y+(x*16819|0)+G|0;D=y+(z*25172|0)+D|0;a[J+h>>0]=a[p+(((B+A|0)>>>18&1023)+128)>>0]|0;a[J+k>>0]=a[p+(((A-B|0)>>>18&1023)+128)>>0]|0;a[J+l>>0]=a[p+(((D+C|0)>>>18&1023)+128)>>0]|0;a[J+m>>0]=a[p+(((C-D|0)>>>18&1023)+128)>>0]|0;a[J+n>>0]=a[p+(((G+E|0)>>>18&1023)+128)>>0]|0;a[J+j>>0]=a[p+(((E-G|0)>>>18&1023)+128)>>0]|0;a[J+f>>0]=a[p+(((I+H|0)>>>18&1023)+128)>>0]|0;a[J+e>>0]=a[p+(((H-I|0)>>>18&1023)+128)>>0]|0;o=o+1|0;if((o|0)==16)break;else d=d+32|0}i=r;return}function CH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;q=i;i=i+400|0;p=q;o=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=p;while(1){u=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;s=ea(b[f+64>>1]|0,c[d+128>>2]|0)|0;y=(s*10438|0)+u|0;w=(s*2578|0)+u|0;m=(ea(s,-7223)|0)+u|0;u=(ea(s,-11586)|0)+u>>11;s=ea(b[f+32>>1]|0,c[d+64>>2]|0)|0;A=ea(b[f+96>>1]|0,c[d+192>>2]|0)|0;n=(A+s|0)*9058|0;k=n+(s*2237|0)|0;n=n+(ea(A,-14084)|0)|0;s=(ea(A,-11295)|0)+(s*5027|0)|0;A=k+y|0;k=y-k|0;y=n+w|0;n=w-n|0;w=s+m|0;s=m-s|0;m=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;D=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;B=ea(b[f+80>>1]|0,c[d+160>>2]|0)|0;t=ea(b[f+112>>1]|0,c[d+224>>2]|0)|0;r=t<<13;F=B+m|0;x=(D+m|0)*10935|0;E=F*9810|0;z=x+(ea(m,-9232)|0)+E+r|0;F=F*6164|0;C=m-D|0;l=(C*3826|0)-r|0;m=F+(ea(m,-8693)|0)+l|0;v=(ea(B+D|0,-1297)|0)-r|0;x=x+(ea(D,-3474)|0)+v|0;v=E+(ea(B,-19447)|0)+v|0;E=(B-D|0)*11512|0;r=E+(ea(B,-13850)|0)+F+r|0;l=E+(D*5529|0)+l|0;t=C-B+t<<2;c[e>>2]=z+A>>11;c[e+364>>2]=A-z>>11;c[e+28>>2]=x+y>>11;c[e+336>>2]=y-x>>11;c[e+56>>2]=v+w>>11;c[e+308>>2]=w-v>>11;c[e+84>>2]=t+u;c[e+280>>2]=u-t;c[e+112>>2]=r+s>>11;c[e+252>>2]=s-r>>11;c[e+140>>2]=l+n>>11;c[e+224>>2]=n-l>>11;c[e+168>>2]=m+k>>11;c[e+196>>2]=k-m>>11;j=j+1|0;if((j|0)==7)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}e=h+6|0;k=h+1|0;l=h+5|0;m=h+2|0;j=h+4|0;f=h+3|0;n=0;d=p;while(1){E=c[g+(n<<2)>>2]|0;D=(c[d>>2]<<13)+131072|0;t=c[d+8>>2]|0;B=c[d+16>>2]|0;v=c[d+24>>2]|0;u=(B-v|0)*7223|0;A=(t-B|0)*2578|0;x=(ea(B,-15083)|0)+D+A+u|0;C=v+t|0;z=(C*10438|0)+D|0;v=u+(ea(v,-637)|0)+z|0;z=A+(ea(t,-20239)|0)+z|0;t=c[d+4>>2]|0;A=c[d+12>>2]|0;u=c[d+20>>2]|0;s=(A+t|0)*7663|0;w=(t-A|0)*1395|0;A=ea(u+A|0,-11295)|0;y=s+w+A|0;t=(u+t|0)*5027|0;w=s-w+t|0;A=t+(u*15326|0)+A|0;a[E+h>>0]=a[o+(((w+v|0)>>>18&1023)+128)>>0]|0;a[E+e>>0]=a[o+(((v-w|0)>>>18&1023)+128)>>0]|0;a[E+k>>0]=a[o+(((y+x|0)>>>18&1023)+128)>>0]|0;a[E+l>>0]=a[o+(((x-y|0)>>>18&1023)+128)>>0]|0;a[E+m>>0]=a[o+(((A+z|0)>>>18&1023)+128)>>0]|0;a[E+j>>0]=a[o+(((z-A|0)>>>18&1023)+128)>>0]|0;a[E+f>>0]=a[o+(((((B-C|0)*11585|0)+D|0)>>>18&1023)+128)>>0]|0;n=n+1|0;if((n|0)==14)break;else d=d+28|0}i=q;return}function DH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;p=i;i=i+288|0;o=p;n=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=o;while(1){k=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;A=ea((c[d+128>>2]|0)*10033|0,b[f+64>>1]|0)|0;l=A+k|0;A=k-A|0;u=ea(b[f+32>>1]|0,c[d+64>>2]|0)|0;z=u*11190|0;u=u<<13;s=ea(c[d+192>>2]<<13,b[f+96>>1]|0)|0;q=u-s|0;w=q+k|0;q=k-q|0;k=s+z|0;y=k+l|0;k=l-k|0;s=z-u-s|0;u=s+A|0;s=A-s|0;A=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;z=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;l=ea(b[f+80>>1]|0,c[d+160>>2]|0)|0;v=ea(b[f+112>>1]|0,c[d+224>>2]|0)|0;C=z*10703|0;B=ea(z,-4433)|0;t=l+A|0;m=(v+t|0)*7053|0;t=m+(t*2139|0)|0;x=C+(A*2295|0)+t|0;r=ea(v+l|0,-8565)|0;t=(ea(l,-12112)|0)+B+r+t|0;r=(v*12998|0)-C+m+r|0;m=B+(ea(A,-5540)|0)+(ea(v,-16244)|0)+m|0;v=A-v|0;l=z-l|0;z=(v+l|0)*4433|0;v=z+(v*6270|0)|0;l=z+(ea(l,-15137)|0)|0;c[e>>2]=x+y>>11;c[e+264>>2]=y-x>>11;c[e+24>>2]=v+w>>11;c[e+240>>2]=w-v>>11;c[e+48>>2]=t+u>>11;c[e+216>>2]=u-t>>11;c[e+72>>2]=r+s>>11;c[e+192>>2]=s-r>>11;c[e+96>>2]=l+q>>11;c[e+168>>2]=q-l>>11;c[e+120>>2]=m+k>>11;c[e+144>>2]=k-m>>11;j=j+1|0;if((j|0)==6)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}f=h+5|0;e=h+1|0;k=h+4|0;l=h+2|0;j=h+3|0;m=0;d=o;while(1){C=c[g+(m<<2)>>2]|0;A=(c[d>>2]<<13)+131072|0;y=(c[d+16>>2]|0)*5793|0;u=A+y|0;y=A-y-y|0;A=(c[d+8>>2]|0)*10033|0;w=u+A|0;A=u-A|0;u=c[d+4>>2]|0;v=c[d+12>>2]|0;z=c[d+20>>2]|0;B=(z+u|0)*2998|0;x=B+(v+u<<13)|0;B=B+(z-v<<13)|0;z=u-v-z<<13;a[C+h>>0]=a[n+(((x+w|0)>>>18&1023)+128)>>0]|0;a[C+f>>0]=a[n+(((w-x|0)>>>18&1023)+128)>>0]|0;a[C+e>>0]=a[n+(((z+y|0)>>>18&1023)+128)>>0]|0;a[C+k>>0]=a[n+(((y-z|0)>>>18&1023)+128)>>0]|0;a[C+l>>0]=a[n+(((B+A|0)>>>18&1023)+128)>>0]|0;a[C+j>>0]=a[n+(((A-B|0)>>>18&1023)+128)>>0]|0;m=m+1|0;if((m|0)==12)break;else d=d+24|0}i=p;return}function EH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;o=i;i=i+208|0;n=o;m=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=n;while(1){s=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;l=ea(b[f+64>>1]|0,c[d+128>>2]|0)|0;u=(l*9373|0)+s|0;x=(ea(l,-3580)|0)+s|0;s=(ea(l,-11586)|0)+s>>11;l=ea(b[f+32>>1]|0,c[d+64>>2]|0)|0;q=ea(b[f+96>>1]|0,c[d+192>>2]|0)|0;w=(q+l|0)*6810|0;l=w+(l*4209|0)|0;q=w+(ea(q,-17828)|0)|0;w=l+u|0;l=u-l|0;u=q+x|0;q=x-q|0;x=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;y=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;t=ea(b[f+80>>1]|0,c[d+160>>2]|0)|0;r=ea(b[f+112>>1]|0,c[d+224>>2]|0)|0;p=r+y|0;r=y-r|0;y=r*2531|0;z=t<<13;A=p*7791|0;k=y+z|0;v=A+(x*11443|0)+k|0;k=(x*1812|0)-A+k|0;p=p*4815|0;y=z-y-(r<<12)|0;r=x-t-r<<2;t=(x*10323|0)-p-y|0;p=y+((x*5260|0)-p)|0;c[e>>2]=v+w>>11;c[e+180>>2]=w-v>>11;c[e+20>>2]=t+u>>11;c[e+160>>2]=u-t>>11;c[e+40>>2]=r+s;c[e+140>>2]=s-r;c[e+60>>2]=p+q>>11;c[e+120>>2]=q-p>>11;c[e+80>>2]=k+l>>11;c[e+100>>2]=l-k>>11;j=j+1|0;if((j|0)==5)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}f=h+4|0;e=h+1|0;j=h+3|0;k=h+2|0;l=0;d=n;while(1){A=c[g+(l<<2)>>2]|0;z=(c[d>>2]<<13)+131072|0;y=c[d+8>>2]|0;w=c[d+16>>2]|0;x=(w+y|0)*6476|0;w=y-w|0;y=(w*2896|0)+z|0;v=y+x|0;x=y-x|0;z=(ea(w,-11584)|0)+z|0;w=c[d+4>>2]|0;y=c[d+12>>2]|0;u=(y+w|0)*6810|0;w=u+(w*4209|0)|0;y=u+(ea(y,-17828)|0)|0;a[A+h>>0]=a[m+(((w+v|0)>>>18&1023)+128)>>0]|0;a[A+f>>0]=a[m+(((v-w|0)>>>18&1023)+128)>>0]|0;a[A+e>>0]=a[m+(((y+x|0)>>>18&1023)+128)>>0]|0;a[A+j>>0]=a[m+(((x-y|0)>>>18&1023)+128)>>0]|0;a[A+k>>0]=a[m+((z>>>18&1023)+128)>>0]|0;l=l+1|0;if((l|0)==10)break;else d=d+20|0}i=o;return}function FH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;p=i;i=i+128|0;o=p;n=c[d+300>>2]|0;l=4;j=c[e+84>>2]|0;k=o;while(1){e=b[f+16>>1]|0;d=b[f+32>>1]|0;if(!((e|d)<<16>>16))if(((((b[f+48>>1]|0)==0?(b[f+64>>1]|0)==0:0)?(b[f+80>>1]|0)==0:0)?(b[f+96>>1]|0)==0:0)?(b[f+112>>1]|0)==0:0){e=ea(c[j>>2]<<2,b[f>>1]|0)|0;c[k>>2]=e;c[k+16>>2]=e;c[k+32>>2]=e;c[k+48>>2]=e;c[k+64>>2]=e;c[k+80>>2]=e;c[k+96>>2]=e;c[k+112>>2]=e}else{d=0;m=10}else m=10;if((m|0)==10){m=0;d=ea(d<<16>>16,c[j+64>>2]|0)|0;r=ea(b[f+96>>1]|0,c[j+192>>2]|0)|0;z=(r+d|0)*4433|0;d=z+(d*6270|0)|0;r=z+(ea(r,-15137)|0)|0;z=ea(c[j+128>>2]<<13,b[f+64>>1]|0)|0;v=ea(c[j>>2]<<13,b[f>>1]|0)|0|1024;t=z+v|0;z=v-z|0;v=t+d|0;d=t-d|0;t=z+r|0;r=z-r|0;z=ea(b[f+112>>1]|0,c[j+224>>2]|0)|0;y=ea(b[f+80>>1]|0,c[j+160>>2]|0)|0;w=ea(b[f+48>>1]|0,c[j+96>>2]|0)|0;u=ea(e<<16>>16,c[j+32>>2]|0)|0;s=w+z|0;q=u+y|0;x=(q+s|0)*9633|0;s=x+(ea(s,-16069)|0)|0;q=x+(ea(q,-3196)|0)|0;x=ea(u+z|0,-7373)|0;e=x+(z*2446|0)+s|0;u=x+(u*12299|0)+q|0;x=ea(w+y|0,-20995)|0;q=x+(y*16819|0)+q|0;s=x+(w*25172|0)+s|0;c[k>>2]=u+v>>11;c[k+112>>2]=v-u>>11;c[k+16>>2]=s+t>>11;c[k+96>>2]=t-s>>11;c[k+32>>2]=q+r>>11;c[k+80>>2]=r-q>>11;c[k+48>>2]=e+d>>11;c[k+64>>2]=d-e>>11}l=l+-1|0;if((l|0)<=0)break;else{f=f+2|0;j=j+4|0;k=k+4|0}}e=h+3|0;j=h+1|0;f=h+2|0;k=0;d=o;while(1){z=c[g+(k<<2)>>2]|0;w=(c[d>>2]|0)+16|0;x=c[d+8>>2]|0;v=w+x<<13;x=w-x<<13;w=c[d+4>>2]|0;y=c[d+12>>2]|0;u=(y+w|0)*4433|0;w=u+(w*6270|0)|0;y=u+(ea(y,-15137)|0)|0;a[z+h>>0]=a[n+(((w+v|0)>>>18&1023)+128)>>0]|0;a[z+e>>0]=a[n+(((v-w|0)>>>18&1023)+128)>>0]|0;a[z+j>>0]=a[n+(((y+x|0)>>>18&1023)+128)>>0]|0;a[z+f>>0]=a[n+(((x-y|0)>>>18&1023)+128)>>0]|0;k=k+1|0;if((k|0)==8)break;else d=d+16|0}i=p;return}function GH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;m=i;i=i+80|0;l=m;k=c[d+300>>2]|0;j=0;d=c[e+84>>2]|0;e=l;while(1){q=ea(c[d>>2]<<13,b[f>>1]|0)|0|1024;o=ea((c[d+128>>2]|0)*5793|0,b[f+64>>1]|0)|0;u=o+q|0;q=(ea(o,-2)|0)+q>>11;o=ea((c[d+64>>2]|0)*10033|0,b[f+32>>1]|0)|0;s=o+u|0;o=u-o|0;u=ea(b[f+16>>1]|0,c[d+32>>2]|0)|0;t=ea(b[f+48>>1]|0,c[d+96>>2]|0)|0;p=ea(b[f+80>>1]|0,c[d+160>>2]|0)|0;n=(p+u|0)*2998|0;r=n+(t+u<<13)|0;n=n+(p-t<<13)|0;p=u-t-p<<2;c[e>>2]=r+s>>11;c[e+60>>2]=s-r>>11;c[e+12>>2]=p+q;c[e+48>>2]=q-p;c[e+24>>2]=n+o>>11;c[e+36>>2]=o-n>>11;j=j+1|0;if((j|0)==3)break;else{f=f+2|0;d=d+4|0;e=e+4|0}}f=h+2|0;j=h+1|0;e=0;d=l;while(1){u=c[g+(e<<2)>>2]|0;t=(c[d>>2]<<13)+131072|0;s=c[d+8>>2]|0;r=t+(s*5793|0)|0;t=(ea(s,-11586)|0)+t|0;s=(c[d+4>>2]|0)*10033|0;a[u+h>>0]=a[k+(((r+s|0)>>>18&1023)+128)>>0]|0;a[u+f>>0]=a[k+(((r-s|0)>>>18&1023)+128)>>0]|0;a[u+j>>0]=a[k+((t>>>18&1023)+128)>>0]|0;e=e+1|0;if((e|0)==6)break;else d=d+12|0}i=m;return}function HH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;j=i;i=i+32|0;l=j;k=c[d+300>>2]|0;m=c[e+84>>2]|0;p=ea(b[f>>1]|0,c[m>>2]|0)|0;d=ea(b[f+32>>1]|0,c[m+64>>2]|0)|0;e=d+p<<13;d=p-d<<13;p=ea(b[f+16>>1]|0,c[m+32>>2]|0)|0;n=ea(b[f+48>>1]|0,c[m+96>>2]|0)|0;r=(n+p|0)*4433|0;p=r+(p*6270|0)|0;n=r+(ea(n,-15137)|0)|0;r=p+e|0;c[l>>2]=r;c[l+24>>2]=e-p;p=n+d|0;c[l+8>>2]=p;n=d-n|0;c[l+16>>2]=n;d=ea(b[f+2>>1]|0,c[m+4>>2]|0)|0;e=ea(b[f+34>>1]|0,c[m+68>>2]|0)|0;o=e+d<<13;e=d-e<<13;d=ea(b[f+18>>1]|0,c[m+36>>2]|0)|0;m=ea(b[f+50>>1]|0,c[m+100>>2]|0)|0;q=(m+d|0)*4433|0;f=q+(d*6270|0)|0;m=q+(ea(m,-15137)|0)|0;q=f+o|0;c[l+4>>2]=q;f=o-f|0;c[l+28>>2]=f;o=m+e|0;c[l+12>>2]=o;m=e-m|0;c[l+20>>2]=m;e=h+1|0;d=c[g>>2]|0;r=r+32768|0;a[d+h>>0]=a[k+(((r+q|0)>>>16&1023)+128)>>0]|0;a[d+e>>0]=a[k+(((r-q|0)>>>16&1023)+128)>>0]|0;d=c[g+4>>2]|0;p=p+32768|0;a[d+h>>0]=a[k+(((p+o|0)>>>16&1023)+128)>>0]|0;a[d+e>>0]=a[k+(((p-o|0)>>>16&1023)+128)>>0]|0;d=c[g+8>>2]|0;n=n+32768|0;a[d+h>>0]=a[k+(((n+m|0)>>>16&1023)+128)>>0]|0;a[d+e>>0]=a[k+(((n-m|0)>>>16&1023)+128)>>0]|0;g=c[g+12>>2]|0;d=(c[l+24>>2]|0)+32768|0;a[g+h>>0]=a[k+(((d+f|0)>>>16&1023)+128)>>0]|0;a[g+e>>0]=a[k+(((d-f|0)>>>16&1023)+128)>>0]|0;i=j;return}function IH(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=c[d+300>>2]|0;e=c[e+84>>2]|0;d=(ea(b[f>>1]|0,c[e>>2]|0)|0)+4|0;e=ea(b[f+16>>1]|0,c[e+32>>2]|0)|0;a[(c[g>>2]|0)+h>>0]=a[i+(((e+d|0)>>>3&1023)+128)>>0]|0;a[(c[g+4>>2]|0)+h>>0]=a[i+(((d-e|0)>>>3&1023)+128)>>0]|0;return}function JH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=k+8|0;g=k+12|0;d=b+4|0;c[d>>2]=0;c[h>>2]=QH(b)|0;e=KH(b,84)|0;if(!e){RH(b);f=c[b>>2]|0;c[f+20>>2]=56;c[f+24>>2]=0;Id[c[f>>2]&511](b)}c[e>>2]=154;c[e+4>>2]=155;c[e+8>>2]=118;c[e+12>>2]=119;c[e+16>>2]=6;c[e+20>>2]=7;c[e+24>>2]=279;c[e+28>>2]=54;c[e+32>>2]=55;c[e+36>>2]=90;c[e+40>>2]=280;c[e+48>>2]=1e9;f=e+44|0;c[f>>2]=c[h>>2];c[e+56>>2]=0;c[e+64>>2]=0;c[e+52>>2]=0;c[e+60>>2]=0;c[e+68>>2]=0;c[e+72>>2]=0;c[e+76>>2]=84;c[d>>2]=e;b=zc(285048)|0;if(!b){i=k;return}a[g>>0]=120;c[j>>2]=h;c[j+4>>2]=g;if((Yda(b,285056,j)|0)<=0){i=k;return}j=a[g>>0]|0;if(j<<24>>24==77|j<<24>>24==109){b=(c[h>>2]|0)*1e3|0;c[h>>2]=b}else b=c[h>>2]|0;c[f>>2]=b*1e3;i=k;return}function KH(a,b){a=a|0;b=b|0;a=i;b=Afa(b)|0;i=a;return b|0}function LH(a,b,c){a=a|0;b=b|0;c=c|0;c=i;Bfa(b);i=c;return}function MH(a,b){a=a|0;b=b|0;a=i;b=Afa(b)|0;i=a;return b|0}function NH(a,b,c){a=a|0;b=b|0;c=c|0;c=i;Bfa(b);i=c;return}function OH(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return c|0}function PH(a,b,d){a=a|0;b=b|0;d=d|0;d=i;b=c[a>>2]|0;c[b+20>>2]=51;Id[c[b>>2]&511](a);i=d;return}function QH(a){a=a|0;return 0}function RH(a){a=a|0;return}function SH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;u=b+4|0;v=Od[c[c[u>>2]>>2]&255](b,1,88)|0;t=b+448|0;c[t>>2]=v;c[v>>2]=91;c[v+8>>2]=281;c[v+12>>2]=282;c[v+68>>2]=0;c[v+52>>2]=0;v=b+100|0;if((c[v>>2]|0)>4){s=c[b>>2]|0;c[s+20>>2]=57;c[s+24>>2]=4;Id[c[s>>2]&511](b)}d=b+84|0;e=c[d>>2]|0;if((e|0)>256){e=c[b>>2]|0;c[e+20>>2]=59;c[e+24>>2]=256;Id[c[e>>2]&511](b);e=c[d>>2]|0}r=c[t>>2]|0;s=r+32|0;l=c[v>>2]|0;if((l|0)>1){h=1;while(1){f=h+1|0;g=1;d=f;do{d=ea(d,f)|0;g=g+1|0}while((g|0)!=(l|0));if((d|0)>(e|0))break;else h=f}}else{d=(e|0)>1?e:1;h=d;d=d+1|0}if((h|0)<2){q=c[b>>2]|0;c[q+20>>2]=58;c[q+24>>2]=d;Id[c[q>>2]&511](b)}if((l|0)>0){g=0;d=1;do{c[s+(g<<2)>>2]=h;d=ea(d,h)|0;g=g+1|0}while((g|0)!=(l|0))}else d=1;k=b+44|0;g=0;f=0;q=d;a:while(1){j=g;while(1){if((f|0)<(l|0)){if((c[k>>2]|0)==2)d=c[285080+(f<<2)>>2]|0;else d=f;d=s+(d<<2)|0;h=c[d>>2]|0;g=h+1|0;h=ea((q|0)/(h|0)|0,g)|0;if((h|0)<=(e|0))break}if(!(j<<24>>24))break a;else{j=0;f=0}}c[d>>2]=g;g=1;f=f+1|0;q=h}d=c[b>>2]|0;if((c[v>>2]|0)==3){c[d+24>>2]=q;c[d+28>>2]=c[s>>2];c[d+32>>2]=c[r+36>>2];c[d+36>>2]=c[r+40>>2];c[d+20>>2]=96;Jd[c[d+4>>2]&255](b,1)}else{c[d+20>>2]=97;c[d+24>>2]=q;Jd[c[d+4>>2]&255](b,1)}p=ce[c[(c[u>>2]|0)+8>>2]&255](b,1,q,c[v>>2]|0)|0;d=c[v>>2]|0;if((d|0)>0){n=q;o=0;do{l=c[s+(o<<2)>>2]|0;m=n;n=(n|0)/(l|0)|0;b:do if((l|0)>0){j=l+-1|0;h=(j|0)/2|0;k=p+(o<<2)|0;if((n|0)>0)f=0;else{e=0;while(1){g=ea(e,n)|0;if((g|0)<(q|0))do g=g+m|0;while((g|0)<(q|0));e=e+1|0;if((e|0)==(l|0))break b}}do{d=ea(f,n)|0;if((d|0)<(q|0)){e=(((f*255|0)+h|0)/(j|0)|0)&255;do{g=0;do{a[(c[k>>2]|0)+(g+d)>>0]=e;g=g+1|0}while((g|0)!=(n|0));d=d+m|0}while((d|0)<(q|0))}f=f+1|0}while((f|0)!=(l|0));d=c[v>>2]|0}while(0);o=o+1|0}while((o|0)<(d|0))}c[r+16>>2]=p;c[r+20>>2]=q;iT(b);if((c[b+76>>2]|0)!=2){i=w;return}f=(c[b+92>>2]<<1)+4|0;if((c[v>>2]|0)<=0){i=w;return}d=(c[t>>2]|0)+68|0;e=0;do{c[d+(e<<2)>>2]=Od[c[(c[u>>2]|0)+4>>2]&255](b,1,f)|0;e=e+1|0}while((e|0)<(c[v>>2]|0));i=w;return}function TH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;g=b+4|0;f=Od[c[c[g>>2]>>2]&255](b,1,44)|0;c[b+448>>2]=f;c[f>>2]=92;c[f+12>>2]=283;h=f+32|0;c[h>>2]=0;c[f+40>>2]=0;if((c[b+100>>2]|0)!=3){e=c[b>>2]|0;c[e+20>>2]=48;Id[c[e>>2]&511](b)}d=f+24|0;c[d>>2]=Od[c[c[g>>2]>>2]&255](b,1,128)|0;e=0;do{k=Od[c[(c[g>>2]|0)+4>>2]&255](b,1,4096)|0;c[(c[d>>2]|0)+(e<<2)>>2]=k;e=e+1|0}while((e|0)!=32);a[f+28>>0]=1;if(!(a[b+90>>0]|0))c[f+16>>2]=0;else{d=c[b+84>>2]|0;if((d|0)>=8){if((d|0)>256){k=c[b>>2]|0;c[k+20>>2]=59;c[k+24>>2]=256;Id[c[k>>2]&511](b)}}else{k=c[b>>2]|0;c[k+20>>2]=58;c[k+24>>2]=8;Id[c[k>>2]&511](b)}c[f+16>>2]=ce[c[(c[g>>2]|0)+8>>2]&255](b,1,d,3)|0;c[f+20>>2]=d}d=b+76|0;if(!(c[d>>2]|0)){i=j;return}c[d>>2]=2;c[h>>2]=Od[c[(c[g>>2]|0)+4>>2]&255](b,1,((c[b+92>>2]|0)*6|0)+12|0)|0;lT(b);i=j;return}function UH(a,b){a=a|0;b=b|0;return (a+-1+b|0)/(b|0)|0|0}function VH(a,b){a=a|0;b=b|0;a=a+-1+b|0;return a-((a|0)%(b|0)|0)|0}function WH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;if((f|0)<=0){i=h;return}d=d+(e<<2)|0;e=a+(b<<2)|0;while(1){Aga(c[d>>2]|0,c[e>>2]|0,g|0)|0;f=f+-1|0;if((f|0)<=0)break;else{d=d+4|0;e=e+4|0}}i=h;return}function XH(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;Aga(b|0,a|0,c<<7|0)|0;i=d;return}function YH(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;l=i;e=a>>>16;a=a&65535;if((c|0)==1){h=(d[b>>0]|0)+a|0;h=h>>>0>65520?h+-65521|0:h;f=h+e|0;h=(f>>>0>65520?f+15|0:f)<<16|h;i=l;return h|0}if(!b){h=1;i=l;return h|0}if(c>>>0<16){if(c)while(1){c=c+-1|0;a=(d[b>>0]|0)+a|0;e=a+e|0;if(!c)break;else b=b+1|0}h=((e>>>0)%65521|0)<<16|(a>>>0>65520?a+-65521|0:a);i=l;return h|0}if(c>>>0>5551){j=c+-5552|0;h=(j>>>0)%5552|0;j=b+(j-h+5552)|0;while(1){c=c+-5552|0;g=b;f=347;while(1){A=(d[g>>0]|0)+a|0;z=A+(d[g+1>>0]|0)|0;y=z+(d[g+2>>0]|0)|0;x=y+(d[g+3>>0]|0)|0;w=x+(d[g+4>>0]|0)|0;v=w+(d[g+5>>0]|0)|0;u=v+(d[g+6>>0]|0)|0;t=u+(d[g+7>>0]|0)|0;s=t+(d[g+8>>0]|0)|0;r=s+(d[g+9>>0]|0)|0;q=r+(d[g+10>>0]|0)|0;p=q+(d[g+11>>0]|0)|0;o=p+(d[g+12>>0]|0)|0;n=o+(d[g+13>>0]|0)|0;m=n+(d[g+14>>0]|0)|0;a=m+(d[g+15>>0]|0)|0;e=A+e+z+y+x+w+v+u+t+s+r+q+p+o+n+m+a|0;f=f+-1|0;if(!f)break;else g=g+16|0}a=(a>>>0)%65521|0;e=(e>>>0)%65521|0;if(c>>>0<=5551)break;else b=b+5552|0}if(h)if(h>>>0>15){c=h;b=j;k=15}else{c=h;b=j;k=18}}else k=15;if((k|0)==15){g=c+-16|0;f=g&-16;h=b+(f+16)|0;while(1){c=c+-16|0;m=(d[b>>0]|0)+a|0;n=m+(d[b+1>>0]|0)|0;o=n+(d[b+2>>0]|0)|0;p=o+(d[b+3>>0]|0)|0;q=p+(d[b+4>>0]|0)|0;r=q+(d[b+5>>0]|0)|0;s=r+(d[b+6>>0]|0)|0;t=s+(d[b+7>>0]|0)|0;u=t+(d[b+8>>0]|0)|0;v=u+(d[b+9>>0]|0)|0;w=v+(d[b+10>>0]|0)|0;x=w+(d[b+11>>0]|0)|0;y=x+(d[b+12>>0]|0)|0;z=y+(d[b+13>>0]|0)|0;A=z+(d[b+14>>0]|0)|0;a=A+(d[b+15>>0]|0)|0;e=m+e+n+o+p+q+r+s+t+u+v+w+x+y+z+A+a|0;if(c>>>0<=15)break;else b=b+16|0}if((g|0)==(f|0))k=19;else{c=g-f|0;b=h;k=18}}if((k|0)==18)while(1){c=c+-1|0;a=(d[b>>0]|0)+a|0;e=a+e|0;if(!c){k=19;break}else{b=b+1|0;k=18}}if((k|0)==19){a=(a>>>0)%65521|0;e=(e>>>0)%65521|0}A=e<<16|a;i=l;return A|0}function ZH(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;if(!b){j=0;i=k;return j|0}a=~a;a:do if(e){while(1){if(!(b&3))break;a=c[286624+(((d[b>>0]|0)^a&255)<<2)>>2]^a>>>8;e=e+-1|0;if(!e)break a;else b=b+1|0}if(e>>>0>31){g=e+-32|0;h=g&-32;j=h+32|0;f=b;while(1){l=c[f>>2]^a;l=c[288672+((l>>>8&255)<<2)>>2]^c[289696+((l&255)<<2)>>2]^c[287648+((l>>>16&255)<<2)>>2]^c[286624+(l>>>24<<2)>>2]^c[f+4>>2];l=c[288672+((l>>>8&255)<<2)>>2]^c[289696+((l&255)<<2)>>2]^c[287648+((l>>>16&255)<<2)>>2]^c[286624+(l>>>24<<2)>>2]^c[f+8>>2];l=c[288672+((l>>>8&255)<<2)>>2]^c[289696+((l&255)<<2)>>2]^c[287648+((l>>>16&255)<<2)>>2]^c[286624+(l>>>24<<2)>>2]^c[f+12>>2];l=c[288672+((l>>>8&255)<<2)>>2]^c[289696+((l&255)<<2)>>2]^c[287648+((l>>>16&255)<<2)>>2]^c[286624+(l>>>24<<2)>>2]^c[f+16>>2];l=c[288672+((l>>>8&255)<<2)>>2]^c[289696+((l&255)<<2)>>2]^c[287648+((l>>>16&255)<<2)>>2]^c[286624+(l>>>24<<2)>>2]^c[f+20>>2];l=c[288672+((l>>>8&255)<<2)>>2]^c[289696+((l&255)<<2)>>2]^c[287648+((l>>>16&255)<<2)>>2]^c[286624+(l>>>24<<2)>>2]^c[f+24>>2];l=c[288672+((l>>>8&255)<<2)>>2]^c[289696+((l&255)<<2)>>2]^c[287648+((l>>>16&255)<<2)>>2]^c[286624+(l>>>24<<2)>>2]^c[f+28>>2];a=c[288672+((l>>>8&255)<<2)>>2]^c[289696+((l&255)<<2)>>2]^c[287648+((l>>>16&255)<<2)>>2]^c[286624+(l>>>24<<2)>>2];e=e+-32|0;if(e>>>0<=31)break;else f=f+32|0}e=g-h|0;b=b+j|0}if(e>>>0>3){h=e+-4|0;j=h>>>2;g=j<<2;f=b;while(1){l=c[f>>2]^a;a=c[288672+((l>>>8&255)<<2)>>2]^c[289696+((l&255)<<2)>>2]^c[287648+((l>>>16&255)<<2)>>2]^c[286624+(l>>>24<<2)>>2];e=e+-4|0;if(e>>>0<=3)break;else f=f+4|0}e=h-g|0;b=b+(j+1<<2)|0}if(e)while(1){a=c[286624+(((d[b>>0]|0)^a&255)<<2)>>2]^a>>>8;e=e+-1|0;if(!e)break;else b=b+1|0}}while(0);j=~a;i=k;return j|0}function _H(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;a=$H(a,b,8,15,8,0,c,d)|0;i=e;return a|0}function $H(d,f,g,h,j,k,l,m){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=i;if(!l){d=-6;i=r;return d|0}if((a[l>>0]|0)!=49|(m|0)!=56){d=-6;i=r;return d|0}if(!d){d=-2;i=r;return d|0}q=d+24|0;c[q>>2]=0;p=d+32|0;m=c[p>>2]|0;if(!m){c[p>>2]=156;c[d+40>>2]=0;m=156}l=d+36|0;if(!(c[l>>2]|0))c[l>>2]=93;o=(f|0)==-1?6:f;if((h|0)<0){l=0-h|0;n=0}else{n=(h|0)>15;l=n?h+-16|0:h;n=n?2:1}if((j+-1|0)>>>0>8|(g|0)!=8|(l|0)<8|(l|0)>15|(o|0)<0|(o|0)>9|(k|0)<0|(k|0)>4){d=-2;i=r;return d|0}l=(l|0)==8?9:l;h=d+40|0;f=Od[m&255](c[h>>2]|0,1,5828)|0;if(!f){d=-4;i=r;return d|0}g=d+28|0;c[g>>2]=f;c[f>>2]=d;c[f+24>>2]=n;c[f+28>>2]=0;c[f+48>>2]=l;s=1<>2]=s;c[f+52>>2]=s+-1;t=j+7|0;c[f+80>>2]=t;t=1<>2]=t;c[f+84>>2]=t+-1;c[f+88>>2]=((j+9|0)>>>0)/3|0;t=f+56|0;c[t>>2]=Od[c[p>>2]&255](c[h>>2]|0,s,2)|0;s=f+64|0;c[s>>2]=Od[c[p>>2]&255](c[h>>2]|0,c[n>>2]|0,2)|0;n=f+68|0;c[n>>2]=Od[c[p>>2]&255](c[h>>2]|0,c[m>>2]|0,2)|0;c[f+5824>>2]=0;m=1<>2]=m;m=Od[c[p>>2]&255](c[h>>2]|0,m,4)|0;c[f+8>>2]=m;l=c[l>>2]|0;c[f+12>>2]=l<<2;if(((c[t>>2]|0)!=0?(c[s>>2]|0)!=0:0)?!((c[n>>2]|0)==0|(m|0)==0):0){c[f+5796>>2]=m+(l>>>1<<1);c[f+5784>>2]=m+(l*3|0);c[f+132>>2]=o;c[f+136>>2]=k;a[f+36>>0]=8;m=cI(d)|0;if(m){t=m;i=r;return t|0}t=c[g>>2]|0;c[t+60>>2]=c[t+44>>2]<<1;s=c[t+76>>2]|0;d=c[t+68>>2]|0;b[d+(s+-1<<1)>>1]=0;Cga(d|0,0,(s<<1)+-2|0)|0;s=c[t+132>>2]|0;c[t+128>>2]=e[294818+(s*12|0)>>1];c[t+140>>2]=e[294816+(s*12|0)>>1];c[t+144>>2]=e[294820+(s*12|0)>>1];c[t+124>>2]=e[294822+(s*12|0)>>1];c[t+108>>2]=0;c[t+92>>2]=0;c[t+116>>2]=0;c[t+5812>>2]=0;c[t+120>>2]=2;c[t+96>>2]=2;c[t+104>>2]=0;c[t+72>>2]=0;t=0;i=r;return t|0}c[f+4>>2]=666;c[q>>2]=c[75224];aI(d)|0;t=-4;i=r;return t|0}function aI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;if(!a){g=-2;i=h;return g|0}f=a+28|0;b=c[f>>2]|0;if(!b){g=-2;i=h;return g|0}g=c[b+4>>2]|0;switch(g|0){case 42:case 69:case 73:case 91:case 103:case 113:case 666:break;default:{g=-2;i=h;return g|0}}d=c[b+8>>2]|0;if(d){Jd[c[a+36>>2]&255](c[a+40>>2]|0,d);b=c[f>>2]|0}d=c[b+68>>2]|0;if(d){Jd[c[a+36>>2]&255](c[a+40>>2]|0,d);b=c[f>>2]|0}d=c[b+64>>2]|0;if(d){Jd[c[a+36>>2]&255](c[a+40>>2]|0,d);b=c[f>>2]|0}d=c[b+56>>2]|0;e=a+36|0;if(!d)d=a+40|0;else{b=a+40|0;Jd[c[e>>2]&255](c[b>>2]|0,d);d=b;b=c[f>>2]|0}Jd[c[e>>2]&255](c[d>>2]|0,b);c[f>>2]=0;g=(g|0)==113?-3:0;i=h;return g|0}function bI(a){a=a|0;var d=0,f=0,g=0,h=0;f=i;d=cI(a)|0;if(d){i=f;return d|0}a=c[a+28>>2]|0;c[a+60>>2]=c[a+44>>2]<<1;g=c[a+76>>2]|0;h=c[a+68>>2]|0;b[h+(g+-1<<1)>>1]=0;Cga(h|0,0,(g<<1)+-2|0)|0;g=c[a+132>>2]|0;c[a+128>>2]=e[294818+(g*12|0)>>1];c[a+140>>2]=e[294816+(g*12|0)>>1];c[a+144>>2]=e[294820+(g*12|0)>>1];c[a+124>>2]=e[294822+(g*12|0)>>1];c[a+108>>2]=0;c[a+92>>2]=0;c[a+116>>2]=0;c[a+5812>>2]=0;c[a+120>>2]=2;c[a+96>>2]=2;c[a+104>>2]=0;c[a+72>>2]=0;i=f;return d|0}function cI(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;if(!a){e=-2;i=f;return e|0}e=c[a+28>>2]|0;if(!e){e=-2;i=f;return e|0}if(!(c[a+32>>2]|0)){e=-2;i=f;return e|0}if(!(c[a+36>>2]|0)){e=-2;i=f;return e|0}c[a+20>>2]=0;c[a+8>>2]=0;c[a+24>>2]=0;c[a+44>>2]=2;c[e+20>>2]=0;c[e+16>>2]=c[e+8>>2];d=e+24|0;b=c[d>>2]|0;if((b|0)<0){b=0-b|0;c[d>>2]=b}c[e+4>>2]=(b|0)!=0?42:113;if((b|0)==2)b=ZH(0,0,0)|0;else b=YH(0,0,0)|0;c[a+48>>2]=b;c[e+40>>2]=0;nI(e);e=0;i=f;return e|0}function dI(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0;k=i;if(!a){d=-2;i=k;return d|0}j=c[a+28>>2]|0;if(!j){d=-2;i=k;return d|0}f=(b|0)==-1?6:b;if(f>>>0>9|(d|0)<0|(d|0)>4){d=-2;i=k;return d|0}g=j+132|0;h=j+136|0;if((c[h>>2]|0)==(d|0)?(c[294824+((c[g>>2]|0)*12|0)>>2]|0)==(c[294824+(f*12|0)>>2]|0):0)b=0;else if(c[a+8>>2]|0){b=eI(a,5)|0;if((b|0)==-5)b=(c[j+20>>2]|0)==0?0:-5}else b=0;if((c[g>>2]|0)!=(f|0)){c[g>>2]=f;c[j+128>>2]=e[294818+(f*12|0)>>1];c[j+140>>2]=e[294816+(f*12|0)>>1];c[j+144>>2]=e[294820+(f*12|0)>>1];c[j+124>>2]=e[294822+(f*12|0)>>1]}c[h>>2]=d;d=b;i=k;return d|0}function eI(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;T=i;if(!e){Q=-2;i=T;return Q|0}O=e+28|0;P=c[O>>2]|0;if((P|0)==0|(f|0)>5|(f|0)<0){Q=-2;i=T;return Q|0}S=e+12|0;do if(c[S>>2]|0){if((c[e>>2]|0)==0?(c[e+4>>2]|0)!=0:0)break;L=P+4|0;k=c[L>>2]|0;M=(f|0)!=4;if(!((k|0)==666&M)){R=e+16|0;if(!(c[R>>2]|0)){c[e+24>>2]=c[75225];Q=-5;i=T;return Q|0}c[P>>2]=e;N=P+40|0;C=c[N>>2]|0;c[N>>2]=f;do if((k|0)==42){if((c[P+24>>2]|0)!=2){k=(c[P+48>>2]<<12)+-30720|0;if((c[P+136>>2]|0)<=1?(o=c[P+132>>2]|0,(o|0)>=2):0)if((o|0)<6)g=64;else g=(o|0)==6?128:192;else g=0;r=g|k;D=P+108|0;r=(c[D>>2]|0)==0?r:r|32;c[L>>2]=113;k=P+20|0;g=c[k>>2]|0;c[k>>2]=g+1;h=P+8|0;a[(c[h>>2]|0)+g>>0]=r>>>8;g=c[k>>2]|0;c[k>>2]=g+1;a[(c[h>>2]|0)+g>>0]=(r|((r>>>0)%31|0))^31;g=e+48|0;if(c[D>>2]|0){D=c[g>>2]|0;r=c[k>>2]|0;c[k>>2]=r+1;a[(c[h>>2]|0)+r>>0]=D>>>24;r=c[k>>2]|0;c[k>>2]=r+1;a[(c[h>>2]|0)+r>>0]=D>>>16;r=c[g>>2]|0;D=c[k>>2]|0;c[k>>2]=D+1;a[(c[h>>2]|0)+D>>0]=r>>>8;D=c[k>>2]|0;c[k>>2]=D+1;a[(c[h>>2]|0)+D>>0]=r}c[g>>2]=YH(0,0,0)|0;g=c[L>>2]|0;D=32;break}k=e+48|0;c[k>>2]=ZH(0,0,0)|0;j=P+20|0;h=c[j>>2]|0;c[j>>2]=h+1;p=P+8|0;a[(c[p>>2]|0)+h>>0]=31;h=c[j>>2]|0;c[j>>2]=h+1;a[(c[p>>2]|0)+h>>0]=-117;h=c[j>>2]|0;c[j>>2]=h+1;a[(c[p>>2]|0)+h>>0]=8;h=P+28|0;o=c[h>>2]|0;if(!o){k=c[j>>2]|0;c[j>>2]=k+1;a[(c[p>>2]|0)+k>>0]=0;k=c[j>>2]|0;c[j>>2]=k+1;a[(c[p>>2]|0)+k>>0]=0;k=c[j>>2]|0;c[j>>2]=k+1;a[(c[p>>2]|0)+k>>0]=0;k=c[j>>2]|0;c[j>>2]=k+1;a[(c[p>>2]|0)+k>>0]=0;k=c[j>>2]|0;c[j>>2]=k+1;a[(c[p>>2]|0)+k>>0]=0;k=c[P+132>>2]|0;if((k|0)!=9)if((c[P+136>>2]|0)>1)k=4;else k=(k|0)<2?4:0;else k=2;x=c[j>>2]|0;c[j>>2]=x+1;a[(c[p>>2]|0)+x>>0]=k;x=c[j>>2]|0;c[j>>2]=x+1;a[(c[p>>2]|0)+x>>0]=3;c[L>>2]=113;break}D=(((c[o+44>>2]|0)!=0?2:0)|(c[o>>2]|0)!=0|((c[o+16>>2]|0)==0?0:4)|((c[o+28>>2]|0)==0?0:8)|((c[o+36>>2]|0)==0?0:16))&255;g=c[j>>2]|0;c[j>>2]=g+1;a[(c[p>>2]|0)+g>>0]=D;g=c[(c[h>>2]|0)+4>>2]&255;D=c[j>>2]|0;c[j>>2]=D+1;a[(c[p>>2]|0)+D>>0]=g;D=(c[(c[h>>2]|0)+4>>2]|0)>>>8&255;g=c[j>>2]|0;c[j>>2]=g+1;a[(c[p>>2]|0)+g>>0]=D;g=(c[(c[h>>2]|0)+4>>2]|0)>>>16&255;D=c[j>>2]|0;c[j>>2]=D+1;a[(c[p>>2]|0)+D>>0]=g;D=(c[(c[h>>2]|0)+4>>2]|0)>>>24&255;g=c[j>>2]|0;c[j>>2]=g+1;a[(c[p>>2]|0)+g>>0]=D;g=c[P+132>>2]|0;if((g|0)!=9)if((c[P+136>>2]|0)>1)g=4;else g=(g|0)<2?4:0;else g=2;D=c[j>>2]|0;c[j>>2]=D+1;a[(c[p>>2]|0)+D>>0]=g;D=c[(c[h>>2]|0)+12>>2]&255;g=c[j>>2]|0;c[j>>2]=g+1;a[(c[p>>2]|0)+g>>0]=D;g=c[h>>2]|0;if(c[g+16>>2]|0){g=c[g+20>>2]&255;D=c[j>>2]|0;c[j>>2]=D+1;a[(c[p>>2]|0)+D>>0]=g;D=(c[(c[h>>2]|0)+20>>2]|0)>>>8&255;g=c[j>>2]|0;c[j>>2]=g+1;a[(c[p>>2]|0)+g>>0]=D;g=c[h>>2]|0}if(c[g+44>>2]|0)c[k>>2]=ZH(c[k>>2]|0,c[p>>2]|0,c[j>>2]|0)|0;c[P+32>>2]=0;c[L>>2]=69;D=34}else{g=k;D=32}while(0);if((D|0)==32)if((g|0)==69){h=P+28|0;D=34}else D=55;do if((D|0)==34){g=c[h>>2]|0;if(!(c[g+16>>2]|0)){c[L>>2]=73;k=g;D=57;break}q=P+20|0;o=c[q>>2]|0;r=P+32|0;k=c[r>>2]|0;a:do if(k>>>0<(c[g+20>>2]&65535)>>>0){p=P+12|0;m=e+48|0;l=P+8|0;n=e+20|0;j=o;while(1){if((j|0)==(c[p>>2]|0)){if((c[g+44>>2]|0)!=0&j>>>0>o>>>0)c[m>>2]=ZH(c[m>>2]|0,(c[l>>2]|0)+o|0,j-o|0)|0;o=c[O>>2]|0;pI(o);k=o+20|0;g=c[k>>2]|0;D=c[R>>2]|0;g=g>>>0>D>>>0?D:g;if((g|0)!=0?(s=o+16|0,Aga(c[S>>2]|0,c[s>>2]|0,g|0)|0,c[S>>2]=(c[S>>2]|0)+g,c[s>>2]=(c[s>>2]|0)+g,c[n>>2]=(c[n>>2]|0)+g,c[R>>2]=(c[R>>2]|0)-g,D=c[k>>2]|0,c[k>>2]=D-g,(D|0)==(g|0)):0)c[s>>2]=c[o+8>>2];o=c[q>>2]|0;if((o|0)==(c[p>>2]|0))break;g=c[h>>2]|0;k=c[r>>2]|0;j=o}k=a[(c[g+16>>2]|0)+k>>0]|0;c[q>>2]=j+1;a[(c[l>>2]|0)+j>>0]=k;k=(c[r>>2]|0)+1|0;c[r>>2]=k;g=c[h>>2]|0;if(k>>>0>=(c[g+20>>2]&65535)>>>0)break a;j=c[q>>2]|0}g=c[h>>2]|0}while(0);if((c[g+44>>2]|0)!=0?(t=c[q>>2]|0,t>>>0>o>>>0):0){g=e+48|0;c[g>>2]=ZH(c[g>>2]|0,(c[P+8>>2]|0)+o|0,t-o|0)|0;g=c[h>>2]|0}if((c[r>>2]|0)==(c[g+20>>2]|0)){c[r>>2]=0;c[L>>2]=73;k=g;D=57;break}else{g=c[L>>2]|0;D=55;break}}while(0);if((D|0)==55)if((g|0)==73){k=c[P+28>>2]|0;D=57}else D=75;do if((D|0)==57){g=P+28|0;if(!(c[k+28>>2]|0)){c[L>>2]=91;D=77;break}m=P+20|0;k=c[m>>2]|0;j=P+12|0;l=e+48|0;n=P+8|0;p=e+20|0;q=P+32|0;o=k;while(1){if((o|0)==(c[j>>2]|0)){if(o>>>0>k>>>0?(c[(c[g>>2]|0)+44>>2]|0)!=0:0)c[l>>2]=ZH(c[l>>2]|0,(c[n>>2]|0)+k|0,o-k|0)|0;k=c[O>>2]|0;pI(k);h=k+20|0;o=c[h>>2]|0;D=c[R>>2]|0;o=o>>>0>D>>>0?D:o;if((o|0)!=0?(u=k+16|0,Aga(c[S>>2]|0,c[u>>2]|0,o|0)|0,c[S>>2]=(c[S>>2]|0)+o,c[u>>2]=(c[u>>2]|0)+o,c[p>>2]=(c[p>>2]|0)+o,c[R>>2]=(c[R>>2]|0)-o,D=c[h>>2]|0,c[h>>2]=D-o,(D|0)==(o|0)):0)c[u>>2]=c[k+8>>2];k=c[m>>2]|0;if((k|0)==(c[j>>2]|0)){o=1;break}else o=k}h=c[q>>2]|0;c[q>>2]=h+1;h=a[(c[(c[g>>2]|0)+28>>2]|0)+h>>0]|0;c[m>>2]=o+1;a[(c[n>>2]|0)+o>>0]=h;if(!(h<<24>>24)){o=h&255;break}o=c[m>>2]|0}if((c[(c[g>>2]|0)+44>>2]|0)!=0?(v=c[m>>2]|0,v>>>0>k>>>0):0)c[l>>2]=ZH(c[l>>2]|0,(c[n>>2]|0)+k|0,v-k|0)|0;if(!o){c[q>>2]=0;c[L>>2]=91;D=77;break}else{g=c[L>>2]|0;D=75;break}}while(0);if((D|0)==75)if((g|0)==91){g=P+28|0;D=77}else D=95;do if((D|0)==77){if(!(c[(c[g>>2]|0)+36>>2]|0)){c[L>>2]=103;D=97;break}l=P+20|0;h=c[l>>2]|0;j=P+12|0;n=e+48|0;q=P+8|0;p=e+20|0;m=P+32|0;o=h;while(1){if((o|0)==(c[j>>2]|0)){if(o>>>0>h>>>0?(c[(c[g>>2]|0)+44>>2]|0)!=0:0)c[n>>2]=ZH(c[n>>2]|0,(c[q>>2]|0)+h|0,o-h|0)|0;k=c[O>>2]|0;pI(k);h=k+20|0;o=c[h>>2]|0;D=c[R>>2]|0;o=o>>>0>D>>>0?D:o;if((o|0)!=0?(w=k+16|0,Aga(c[S>>2]|0,c[w>>2]|0,o|0)|0,c[S>>2]=(c[S>>2]|0)+o,c[w>>2]=(c[w>>2]|0)+o,c[p>>2]=(c[p>>2]|0)+o,c[R>>2]=(c[R>>2]|0)-o,D=c[h>>2]|0,c[h>>2]=D-o,(D|0)==(o|0)):0)c[w>>2]=c[k+8>>2];h=c[l>>2]|0;if((h|0)==(c[j>>2]|0)){k=1;break}else o=h}k=c[m>>2]|0;c[m>>2]=k+1;k=a[(c[(c[g>>2]|0)+36>>2]|0)+k>>0]|0;c[l>>2]=o+1;a[(c[q>>2]|0)+o>>0]=k;if(!(k<<24>>24)){k=k&255;break}o=c[l>>2]|0}if((c[(c[g>>2]|0)+44>>2]|0)!=0?(x=c[l>>2]|0,x>>>0>h>>>0):0)c[n>>2]=ZH(c[n>>2]|0,(c[q>>2]|0)+h|0,x-h|0)|0;if(!k){c[L>>2]=103;D=97;break}else{g=c[L>>2]|0;D=95;break}}while(0);if((D|0)==95?(g|0)==103:0){g=P+28|0;D=97}do if((D|0)==97){if(!(c[(c[g>>2]|0)+44>>2]|0)){c[L>>2]=113;break}k=P+20|0;h=P+12|0;if((((c[k>>2]|0)+2|0)>>>0>(c[h>>2]|0)>>>0?(z=c[O>>2]|0,pI(z),A=z+20|0,y=c[A>>2]|0,D=c[R>>2]|0,y=y>>>0>D>>>0?D:y,(y|0)!=0):0)?(B=z+16|0,Aga(c[S>>2]|0,c[B>>2]|0,y|0)|0,c[S>>2]=(c[S>>2]|0)+y,c[B>>2]=(c[B>>2]|0)+y,D=e+20|0,c[D>>2]=(c[D>>2]|0)+y,c[R>>2]=(c[R>>2]|0)-y,D=c[A>>2]|0,c[A>>2]=D-y,(D|0)==(y|0)):0)c[B>>2]=c[z+8>>2];g=c[k>>2]|0;if((g+2|0)>>>0<=(c[h>>2]|0)>>>0){D=e+48|0;z=c[D>>2]&255;c[k>>2]=g+1;A=P+8|0;a[(c[A>>2]|0)+g>>0]=z;z=(c[D>>2]|0)>>>8&255;B=c[k>>2]|0;c[k>>2]=B+1;a[(c[A>>2]|0)+B>>0]=z;c[D>>2]=ZH(0,0,0)|0;c[L>>2]=113}}while(0);y=P+20|0;if(!(c[y>>2]|0)){if((c[e+4>>2]|0)==0?((f<<1)-((f|0)>4?9:0)|0)<=((C<<1)-((C|0)>4?9:0)|0)&M:0){c[e+24>>2]=c[75225];Q=-5;i=T;return Q|0}}else{j=c[O>>2]|0;pI(j);l=j+20|0;h=c[l>>2]|0;g=c[R>>2]|0;h=h>>>0>g>>>0?g:h;if(h){k=j+16|0;Aga(c[S>>2]|0,c[k>>2]|0,h|0)|0;c[S>>2]=(c[S>>2]|0)+h;c[k>>2]=(c[k>>2]|0)+h;g=e+20|0;c[g>>2]=(c[g>>2]|0)+h;g=(c[R>>2]|0)-h|0;c[R>>2]=g;D=c[l>>2]|0;c[l>>2]=D-h;if((D|0)==(h|0))c[k>>2]=c[j+8>>2]}if(!g){c[N>>2]=-1;Q=0;i=T;return Q|0}}k=(c[L>>2]|0)==666;g=(c[e+4>>2]|0)==0;if(k)if(g)D=118;else{c[e+24>>2]=c[75225];Q=-5;i=T;return Q|0}else if(g)D=118;else D=119;if((D|0)==118?!((c[P+116>>2]|0)==0&((f|0)==0|k)):0)D=119;do if((D|0)==119){g=c[P+136>>2]|0;b:do if((g|0)==2){m=P+116|0;n=P+96|0;t=P+108|0;s=P+56|0;o=P+5792|0;p=P+5796|0;q=P+5784|0;r=P+5788|0;u=P+92|0;while(1){if((c[m>>2]|0)==0?(mT(P),(c[m>>2]|0)==0):0)break;c[n>>2]=0;K=a[(c[s>>2]|0)+(c[t>>2]|0)>>0]|0;g=c[o>>2]|0;b[(c[p>>2]|0)+(g<<1)>>1]=0;c[o>>2]=g+1;a[(c[q>>2]|0)+g>>0]=K;K=P+((K&255)<<2)+148|0;b[K>>1]=(b[K>>1]|0)+1<<16>>16;K=(c[o>>2]|0)==((c[r>>2]|0)+-1|0);c[m>>2]=(c[m>>2]|0)+-1;g=(c[t>>2]|0)+1|0;c[t>>2]=g;if(!K)continue;k=c[u>>2]|0;if((k|0)>-1)h=(c[s>>2]|0)+k|0;else h=0;rI(P,h,g-k|0,0);c[u>>2]=c[t>>2];k=c[P>>2]|0;h=c[k+28>>2]|0;pI(h);j=h+20|0;g=c[j>>2]|0;l=k+16|0;K=c[l>>2]|0;g=g>>>0>K>>>0?K:g;if((g|0)!=0?(K=k+12|0,E=h+16|0,Aga(c[K>>2]|0,c[E>>2]|0,g|0)|0,c[K>>2]=(c[K>>2]|0)+g,c[E>>2]=(c[E>>2]|0)+g,K=k+20|0,c[K>>2]=(c[K>>2]|0)+g,c[l>>2]=(c[l>>2]|0)-g,K=c[j>>2]|0,c[j>>2]=K-g,(K|0)==(g|0)):0)c[E>>2]=c[h+8>>2];if(!(c[(c[P>>2]|0)+16>>2]|0)){D=193;break b}}if(f){c[P+5812>>2]=0;if((f|0)==4){k=c[u>>2]|0;if((k|0)>-1)g=(c[s>>2]|0)+k|0;else g=0;rI(P,g,(c[t>>2]|0)-k|0,1);c[u>>2]=c[t>>2];k=c[P>>2]|0;h=c[k+28>>2]|0;pI(h);j=h+20|0;g=c[j>>2]|0;l=k+16|0;K=c[l>>2]|0;g=g>>>0>K>>>0?K:g;if((g|0)!=0?(K=k+12|0,F=h+16|0,Aga(c[K>>2]|0,c[F>>2]|0,g|0)|0,c[K>>2]=(c[K>>2]|0)+g,c[F>>2]=(c[F>>2]|0)+g,K=k+20|0,c[K>>2]=(c[K>>2]|0)+g,c[l>>2]=(c[l>>2]|0)-g,K=c[j>>2]|0,c[j>>2]=K-g,(K|0)==(g|0)):0)c[F>>2]=c[h+8>>2];g=(c[(c[P>>2]|0)+16>>2]|0)==0?2:3;D=190;break}if(c[o>>2]|0){k=c[u>>2]|0;if((k|0)>-1)g=(c[s>>2]|0)+k|0;else g=0;rI(P,g,(c[t>>2]|0)-k|0,0);c[u>>2]=c[t>>2];k=c[P>>2]|0;h=c[k+28>>2]|0;pI(h);j=h+20|0;g=c[j>>2]|0;l=k+16|0;L=c[l>>2]|0;g=g>>>0>L>>>0?L:g;if((g|0)!=0?(L=k+12|0,G=h+16|0,Aga(c[L>>2]|0,c[G>>2]|0,g|0)|0,c[L>>2]=(c[L>>2]|0)+g,c[G>>2]=(c[G>>2]|0)+g,L=k+20|0,c[L>>2]=(c[L>>2]|0)+g,c[l>>2]=(c[l>>2]|0)-g,L=c[j>>2]|0,c[j>>2]=L-g,(L|0)==(g|0)):0)c[G>>2]=c[h+8>>2];if(!(c[(c[P>>2]|0)+16>>2]|0))D=193}}else D=193}else if((g|0)==3){m=P+116|0;l=(f|0)==0;n=P+96|0;w=P+108|0;q=P+5792|0;r=P+5796|0;s=P+5784|0;t=P+(d[298024]<<2)+2440|0;u=P+5788|0;v=P+56|0;x=P+92|0;while(1){g=c[m>>2]|0;if(g>>>0<259){mT(P);g=c[m>>2]|0;if(g>>>0<259&l){D=193;break b}if(!g)break;c[n>>2]=0;if(g>>>0>2)D=152;else{g=c[w>>2]|0;D=167}}else{c[n>>2]=0;D=152}if((D|0)==152){D=0;p=c[w>>2]|0;if(p){k=c[v>>2]|0;h=a[k+(p+-1)>>0]|0;if((h<<24>>24==(a[k+p>>0]|0)?h<<24>>24==(a[k+(p+1)>>0]|0):0)?(H=k+(p+2)|0,h<<24>>24==(a[H>>0]|0)):0){j=k+(p+258)|0;k=H;do{o=k+1|0;if(h<<24>>24!=(a[o>>0]|0)){k=o;break}o=k+2|0;if(h<<24>>24!=(a[o>>0]|0)){k=o;break}o=k+3|0;if(h<<24>>24!=(a[o>>0]|0)){k=o;break}o=k+4|0;if(h<<24>>24!=(a[o>>0]|0)){k=o;break}o=k+5|0;if(h<<24>>24!=(a[o>>0]|0)){k=o;break}o=k+6|0;if(h<<24>>24!=(a[o>>0]|0)){k=o;break}o=k+7|0;if(h<<24>>24!=(a[o>>0]|0)){k=o;break}k=k+8|0}while(k>>>0>>0?h<<24>>24==(a[k>>0]|0):0);G=k-j+258|0;g=G>>>0>g>>>0?g:G;c[n>>2]=g;if(g>>>0>2){g=g+253|0;h=c[q>>2]|0;b[(c[r>>2]|0)+(h<<1)>>1]=1;c[q>>2]=h+1;a[(c[s>>2]|0)+h>>0]=g;g=P+((d[298536+(g&255)>>0]|256)+1<<2)+148|0;b[g>>1]=(b[g>>1]|0)+1<<16>>16;b[t>>1]=(b[t>>1]|0)+1<<16>>16;g=(c[q>>2]|0)==((c[u>>2]|0)+-1|0)&1;h=c[n>>2]|0;c[m>>2]=(c[m>>2]|0)-h;h=(c[w>>2]|0)+h|0;c[w>>2]=h;c[n>>2]=0}else{g=p;D=167}}else{g=p;D=167}}else{g=0;D=167}}if((D|0)==167){D=0;g=a[(c[v>>2]|0)+g>>0]|0;h=c[q>>2]|0;b[(c[r>>2]|0)+(h<<1)>>1]=0;c[q>>2]=h+1;a[(c[s>>2]|0)+h>>0]=g;g=P+((g&255)<<2)+148|0;b[g>>1]=(b[g>>1]|0)+1<<16>>16;g=(c[q>>2]|0)==((c[u>>2]|0)+-1|0)&1;c[m>>2]=(c[m>>2]|0)+-1;h=(c[w>>2]|0)+1|0;c[w>>2]=h}if(!g)continue;g=c[x>>2]|0;if((g|0)>-1)k=(c[v>>2]|0)+g|0;else k=0;rI(P,k,h-g|0,0);c[x>>2]=c[w>>2];o=c[P>>2]|0;k=c[o+28>>2]|0;pI(k);h=k+20|0;g=c[h>>2]|0;j=o+16|0;G=c[j>>2]|0;g=g>>>0>G>>>0?G:g;if((g|0)!=0?(G=o+12|0,I=k+16|0,Aga(c[G>>2]|0,c[I>>2]|0,g|0)|0,c[G>>2]=(c[G>>2]|0)+g,c[I>>2]=(c[I>>2]|0)+g,G=o+20|0,c[G>>2]=(c[G>>2]|0)+g,c[j>>2]=(c[j>>2]|0)-g,G=c[h>>2]|0,c[h>>2]=G-g,(G|0)==(g|0)):0)c[I>>2]=c[k+8>>2];if(!(c[(c[P>>2]|0)+16>>2]|0)){D=193;break b}}c[P+5812>>2]=0;if((f|0)==4){k=c[x>>2]|0;if((k|0)>-1)g=(c[v>>2]|0)+k|0;else g=0;rI(P,g,(c[w>>2]|0)-k|0,1);c[x>>2]=c[w>>2];k=c[P>>2]|0;h=c[k+28>>2]|0;pI(h);j=h+20|0;g=c[j>>2]|0;l=k+16|0;K=c[l>>2]|0;g=g>>>0>K>>>0?K:g;if((g|0)!=0?(K=k+12|0,J=h+16|0,Aga(c[K>>2]|0,c[J>>2]|0,g|0)|0,c[K>>2]=(c[K>>2]|0)+g,c[J>>2]=(c[J>>2]|0)+g,K=k+20|0,c[K>>2]=(c[K>>2]|0)+g,c[l>>2]=(c[l>>2]|0)-g,K=c[j>>2]|0,c[j>>2]=K-g,(K|0)==(g|0)):0)c[J>>2]=c[h+8>>2];g=(c[(c[P>>2]|0)+16>>2]|0)==0?2:3;D=190;break}if(c[q>>2]|0){k=c[x>>2]|0;if((k|0)>-1)g=(c[v>>2]|0)+k|0;else g=0;rI(P,g,(c[w>>2]|0)-k|0,0);c[x>>2]=c[w>>2];k=c[P>>2]|0;h=c[k+28>>2]|0;pI(h);j=h+20|0;g=c[j>>2]|0;l=k+16|0;L=c[l>>2]|0;g=g>>>0>L>>>0?L:g;if((g|0)!=0?(L=k+12|0,K=h+16|0,Aga(c[L>>2]|0,c[K>>2]|0,g|0)|0,c[L>>2]=(c[L>>2]|0)+g,c[K>>2]=(c[K>>2]|0)+g,L=k+20|0,c[L>>2]=(c[L>>2]|0)+g,c[l>>2]=(c[l>>2]|0)-g,L=c[j>>2]|0,c[j>>2]=L-g,(L|0)==(g|0)):0)c[K>>2]=c[h+8>>2];if(!(c[(c[P>>2]|0)+16>>2]|0))D=193}}else{g=Wd[c[294816+((c[P+132>>2]|0)*12|0)+8>>2]&511](P,f)|0;D=190}while(0);if((D|0)==190){if((g&-2|0)==2)c[L>>2]=666;if(g&-3){if((g|0)!=1)break}else D=193}if((D|0)==193){if(c[R>>2]|0){Q=0;i=T;return Q|0}c[N>>2]=-1;Q=0;i=T;return Q|0}if((f|0)==1)qI(P);else if(((f|0)!=5?(oI(P,0,0,0),(f|0)==3):0)?(f=c[P+76>>2]|0,L=c[P+68>>2]|0,b[L+(f+-1<<1)>>1]=0,Cga(L|0,0,(f<<1)+-2|0)|0,(c[P+116>>2]|0)==0):0){c[P+108>>2]=0;c[P+92>>2]=0;c[P+5812>>2]=0}k=c[O>>2]|0;pI(k);l=k+20|0;j=c[l>>2]|0;g=c[R>>2]|0;j=j>>>0>g>>>0?g:j;if(j){h=k+16|0;Aga(c[S>>2]|0,c[h>>2]|0,j|0)|0;c[S>>2]=(c[S>>2]|0)+j;c[h>>2]=(c[h>>2]|0)+j;g=e+20|0;c[g>>2]=(c[g>>2]|0)+j;g=(c[R>>2]|0)-j|0;c[R>>2]=g;f=c[l>>2]|0;c[l>>2]=f-j;if((f|0)==(j|0))c[h>>2]=c[k+8>>2]}if(!g){c[N>>2]=-1;Q=0;i=T;return Q|0}}while(0);if(M){Q=0;i=T;return Q|0}k=P+24|0;g=c[k>>2]|0;if((g|0)<1){Q=1;i=T;return Q|0}h=e+48|0;j=c[h>>2]|0;if((g|0)==2){L=c[y>>2]|0;c[y>>2]=L+1;M=P+8|0;a[(c[M>>2]|0)+L>>0]=j;L=(c[h>>2]|0)>>>8&255;f=c[y>>2]|0;c[y>>2]=f+1;a[(c[M>>2]|0)+f>>0]=L;f=(c[h>>2]|0)>>>16&255;L=c[y>>2]|0;c[y>>2]=L+1;a[(c[M>>2]|0)+L>>0]=f;L=(c[h>>2]|0)>>>24&255;f=c[y>>2]|0;c[y>>2]=f+1;a[(c[M>>2]|0)+f>>0]=L;f=e+8|0;L=c[f>>2]&255;P=c[y>>2]|0;c[y>>2]=P+1;a[(c[M>>2]|0)+P>>0]=L;P=(c[f>>2]|0)>>>8&255;L=c[y>>2]|0;c[y>>2]=L+1;a[(c[M>>2]|0)+L>>0]=P;L=(c[f>>2]|0)>>>16&255;P=c[y>>2]|0;c[y>>2]=P+1;a[(c[M>>2]|0)+P>>0]=L;f=(c[f>>2]|0)>>>24&255;P=c[y>>2]|0;c[y>>2]=P+1;a[(c[M>>2]|0)+P>>0]=f}else{f=c[y>>2]|0;c[y>>2]=f+1;M=P+8|0;a[(c[M>>2]|0)+f>>0]=j>>>24;f=c[y>>2]|0;c[y>>2]=f+1;a[(c[M>>2]|0)+f>>0]=j>>>16;f=c[h>>2]|0;P=c[y>>2]|0;c[y>>2]=P+1;a[(c[M>>2]|0)+P>>0]=f>>>8;P=c[y>>2]|0;c[y>>2]=P+1;a[(c[M>>2]|0)+P>>0]=f}h=c[O>>2]|0;pI(h);j=h+20|0;g=c[j>>2]|0;P=c[R>>2]|0;g=g>>>0>P>>>0?P:g;if((g|0)!=0?(Q=h+16|0,Aga(c[S>>2]|0,c[Q>>2]|0,g|0)|0,c[S>>2]=(c[S>>2]|0)+g,c[Q>>2]=(c[Q>>2]|0)+g,P=e+20|0,c[P>>2]=(c[P>>2]|0)+g,c[R>>2]=(c[R>>2]|0)-g,P=c[j>>2]|0,c[j>>2]=P-g,(P|0)==(g|0)):0)c[Q>>2]=c[h+8>>2];g=c[k>>2]|0;if((g|0)>0)c[k>>2]=0-g;Q=(c[y>>2]|0)==0&1;i=T;return Q|0}}while(0);c[e+24>>2]=c[75222];Q=-2;i=T;return Q|0}function fI(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=i;A=c[e+28>>2]|0;k=c[e>>2]|0;P=e+4|0;J=k+((c[P>>2]|0)+-6)|0;K=e+12|0;j=c[K>>2]|0;L=e+16|0;r=c[L>>2]|0;M=j+(r+-258)|0;B=c[A+44>>2]|0;C=c[A+48>>2]|0;D=c[A+52>>2]|0;N=A+56|0;O=A+60|0;E=c[A+76>>2]|0;F=c[A+80>>2]|0;G=(1<>2])+-1|0;H=(1<>2])+-1|0;r=j+(r+~f)|0;s=A+7104|0;t=D+-1|0;u=(C|0)==0;v=(c[A+40>>2]|0)+-1|0;w=v+C|0;x=C+-1|0;y=r+-1|0;z=r-C|0;h=c[O>>2]|0;g=c[N>>2]|0;k=k+-1|0;j=j+-1|0;a:do{if(h>>>0<15){q=k+2|0;m=h+16|0;g=((d[k+1>>0]|0)<>0]|0)<>0]|0;f=b[E+(h<<2)+2>>1]|0;h=d[E+(h<<2)+1>>0]|0;g=g>>>h;h=m-h|0;do if(l<<24>>24){n=l&255;while(1){if(n&16)break;if(n&64){I=57;break a}q=(g&(1<>0]|0;f=b[E+(q<<2)+2>>1]|0;q=d[E+(q<<2)+1>>0]|0;g=g>>>q;h=h-q|0;if(!(l<<24>>24)){I=6;break}else n=l&255}if((I|0)==6){f=f&255;I=7;break}o=f&65535;n=n&15;if(!n)f=g;else{if(h>>>0>>0){k=k+1|0;f=h+8|0;g=((d[k>>0]|0)<>>n;o=(g&(1<>>0<15){q=k+2|0;l=h+16|0;g=((d[k+1>>0]|0)<>0]|0)<>1]|0;h=d[F+(q<<2)+1>>0]|0;g=g>>>h;h=l-h|0;l=d[F+(q<<2)>>0]|0;if(!(l&16))do{if(l&64){I=54;break a}l=(g&(1<>1]|0;q=d[F+(l<<2)+1>>0]|0;g=g>>>q;h=h-q|0;l=d[F+(l<<2)>>0]|0}while((l&16|0)==0);m=f&65535;l=l&15;if(h>>>0>>0){n=k+1|0;g=((d[n>>0]|0)<>>0>>0){k=k+2|0;h=h+16|0;g=((d[k>>0]|0)<>>l;h=h-l|0;p=j;f=p-r|0;if(q>>>0<=f>>>0){p=2-o|0;p=o+(p>>>0>4294967293?p:-3)|0;p=p-((p>>>0)%3|0)|0;n=p-q|0;f=j+(0-q)|0;l=o;m=j;do{a[m+1>>0]=a[f+1>>0]|0;a[m+2>>0]=a[f+2>>0]|0;f=f+3|0;m=m+3|0;a[m>>0]=a[f>>0]|0;l=l+-3|0}while(l>>>0>2);f=o+-3|0;if((f|0)==(p|0)){j=j+(p+3)|0;break}l=j+(p+4)|0;a[l>>0]=a[j+(n+4)>>0]|0;if((f-p|0)>>>0<=1){j=l;break}q=j+(p+5)|0;a[q>>0]=a[j+(n+5)>>0]|0;j=q;break}f=q-f|0;if(f>>>0>B>>>0?(c[s>>2]|0)!=0:0){I=22;break a}do if(u){m=D+(v-f)|0;if(o>>>0>f>>>0){l=o-f|0;o=q-p|0;n=m;m=j;do{n=n+1|0;m=m+1|0;a[m>>0]=a[n>>0]|0;f=f+-1|0}while((f|0)!=0);n=j+(y+o+(1-q))|0;j=j+(r+o)|0}else{n=m;l=o}}else{if(f>>>0<=C>>>0){m=D+(x-f)|0;if(o>>>0<=f>>>0){n=m;l=o;break}l=o-f|0;o=q-p|0;n=m;m=j;do{n=n+1|0;m=m+1|0;a[m>>0]=a[n>>0]|0;f=f+-1|0}while((f|0)!=0);n=j+(y+o+(1-q))|0;j=j+(r+o)|0;break}n=D+(w-f)|0;f=f-C|0;if(o>>>0>f>>>0){l=o-f|0;p=q-p|0;m=j;do{n=n+1|0;m=m+1|0;a[m>>0]=a[n>>0]|0;f=f+-1|0}while((f|0)!=0);f=j+(z+p)|0;if(l>>>0>C>>>0){l=l-C|0;n=t;o=C;do{n=n+1|0;f=f+1|0;a[f>>0]=a[n>>0]|0;o=o+-1|0}while((o|0)!=0);n=j+(y+p+(1-q))|0;j=j+(r+p)|0}else{n=t;j=f}}else l=o}while(0);if(l>>>0>2){p=l+-3|0;f=(p>>>0)%3|0;p=p-f|0;o=n;m=j;do{a[m+1>>0]=a[o+1>>0]|0;a[m+2>>0]=a[o+2>>0]|0;o=o+3|0;m=m+3|0;a[m>>0]=a[o>>0]|0;l=l+-3|0}while(l>>>0>2);n=n+(p+3)|0;l=j+(p+3)|0}else{f=l;l=j}if(f){j=l+1|0;a[j>>0]=a[n+1>>0]|0;if(f>>>0>1){j=l+2|0;a[j>>0]=a[n+2>>0]|0}}else j=l}else{f=f&255;I=7}while(0);if((I|0)==7){I=0;j=j+1|0;a[j>>0]=f}}while(k>>>0>>0&j>>>0>>0);do if((I|0)==22){c[e+24>>2]=294936;c[A>>2]=29}else if((I|0)==54){c[e+24>>2]=294968;c[A>>2]=29}else if((I|0)==57)if(!(n&32)){c[e+24>>2]=294992;c[A>>2]=29;break}else{c[A>>2]=11;break}while(0);I=h>>>3;f=k+(0-I)|0;h=h-(I<<3)|0;g=(1<>2]=k+(1-I);c[K>>2]=j+1;if(f>>>0>>0)f=J-f|0;else f=J-f|0;c[P>>2]=f+5;if(j>>>0>>0){P=M-j|0;P=P+257|0;c[L>>2]=P;c[N>>2]=g;c[O>>2]=h;i=Q;return}else{P=M-j|0;P=P+257|0;c[L>>2]=P;c[N>>2]=g;c[O>>2]=h;i=Q;return}}function gI(a){a=a|0;var b=0,d=0,e=0;e=i;if(!a){a=-2;i=e;return a|0}d=c[a+28>>2]|0;if(!d){a=-2;i=e;return a|0}c[d+40>>2]=0;c[d+44>>2]=0;c[d+48>>2]=0;c[d+28>>2]=0;c[a+20>>2]=0;c[a+8>>2]=0;c[a+24>>2]=0;b=c[d+8>>2]|0;if(b)c[a+48>>2]=b&1;c[d>>2]=0;c[d+4>>2]=0;c[d+12>>2]=0;c[d+20>>2]=32768;c[d+32>>2]=0;c[d+56>>2]=0;c[d+60>>2]=0;a=d+1328|0;c[d+108>>2]=a;c[d+80>>2]=a;c[d+76>>2]=a;c[d+7104>>2]=1;c[d+7108>>2]=-1;a=0;i=e;return a|0}function hI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;if(!a){j=-2;i=k;return j|0}h=a+28|0;j=c[h>>2]|0;if(!j){j=-2;i=k;return j|0}if((b|0)<0){g=0-b|0;f=0}else{g=(b|0)<48?b&15:b;f=(b>>4)+1|0}if(!((g|0)==0|(g&-8|0)==8)){j=-2;i=k;return j|0}d=j+52|0;e=c[d>>2]|0;b=j+36|0;if((e|0)!=0?(c[b>>2]|0)!=(g|0):0){Jd[c[a+36>>2]&255](c[a+40>>2]|0,e);c[d>>2]=0}c[j+8>>2]=f;c[b>>2]=g;b=c[h>>2]|0;if(!b){j=-2;i=k;return j|0}c[b+40>>2]=0;c[b+44>>2]=0;c[b+48>>2]=0;c[b+28>>2]=0;c[a+20>>2]=0;c[a+8>>2]=0;c[a+24>>2]=0;d=c[b+8>>2]|0;if(d)c[a+48>>2]=d&1;c[b>>2]=0;c[b+4>>2]=0;c[b+12>>2]=0;c[b+20>>2]=32768;c[b+32>>2]=0;c[b+56>>2]=0;c[b+60>>2]=0;j=b+1328|0;c[b+108>>2]=j;c[b+80>>2]=j;c[b+76>>2]=j;c[b+7104>>2]=1;c[b+7108>>2]=-1;j=0;i=k;return j|0}function iI(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;if(!d){b=-6;i=j;return b|0}if((a[d>>0]|0)!=49|(e|0)!=56){b=-6;i=j;return b|0}if(!b){b=-2;i=j;return b|0}c[b+24>>2]=0;e=b+32|0;d=c[e>>2]|0;if(!d){c[e>>2]=156;c[b+40>>2]=0;d=156}g=b+36|0;if(!(c[g>>2]|0))c[g>>2]=93;h=b+40|0;d=Od[d&255](c[h>>2]|0,1,7116)|0;if(!d){b=-4;i=j;return b|0}f=b+28|0;c[f>>2]=d;c[d+52>>2]=0;e=hI(b,15)|0;if(!e){b=0;i=j;return b|0}Jd[c[g>>2]&255](c[h>>2]|0,d);c[f>>2]=0;b=e;i=j;return b|0}function jI(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;ya=i;i=i+16|0;ga=ya;if(!f){f=-2;i=ya;return f|0}ua=c[f+28>>2]|0;if(!ua){f=-2;i=ya;return f|0}ra=f+12|0;q=c[ra>>2]|0;if(!q){f=-2;i=ya;return f|0}p=c[f>>2]|0;if((p|0)==0?(c[f+4>>2]|0)!=0:0){f=-2;i=ya;return f|0}h=c[ua>>2]|0;if((h|0)==11){c[ua>>2]=12;h=12}la=f+16|0;o=c[la>>2]|0;ia=f+4|0;va=c[ia>>2]|0;ja=ua+56|0;wa=ua+60|0;na=ua+8|0;sa=ua+24|0;x=ga+1|0;qa=ua+16|0;y=ua+32|0;z=f+24|0;A=ua+36|0;B=ua+20|0;ta=f+48|0;C=ua+64|0;D=ua+12|0;E=(g+-5|0)>>>0<2;xa=ua+4|0;F=ua+76|0;G=ua+84|0;H=ua+80|0;I=ua+88|0;J=(g|0)==6;K=ua+7108|0;L=ua+72|0;M=ua+7112|0;N=ua+68|0;O=ua+44|0;P=ua+7104|0;Q=ua+48|0;R=ua+52|0;ka=ua+40|0;oa=f+20|0;pa=ua+28|0;S=ua+96|0;T=ua+100|0;U=ua+92|0;V=ua+104|0;W=ua+1328|0;X=ua+108|0;Y=ua+112|0;Z=ua+752|0;_=ua+624|0;$=ga+2|0;aa=ga+3|0;k=c[wa>>2]|0;m=va;j=c[ja>>2]|0;l=o;r=p;ha=q;n=0;a:while(1){b:do switch(h|0){case 2:{if(k>>>0<32){h=r;w=47}else{p=r;w=49}break}case 21:{q=c[L>>2]|0;h=r;w=217;break}case 4:{h=r;w=62;break}case 1:{if(k>>>0<16){h=r;while(1){if(!m){m=0;break a}m=m+-1|0;p=h+1|0;j=(d[h>>0]<>>0<16)h=p;else{h=p;break}}}else h=r;c[qa>>2]=j;if((j&255|0)!=8){c[z>>2]=295088;c[ua>>2]=29;s=l;p=h;q=ha;break b}if(j&57344){c[z>>2]=295144;c[ua>>2]=29;s=l;p=h;q=ha;break b}k=c[y>>2]|0;if(k)c[k>>2]=j>>>8&1;if(j&512){a[ga>>0]=j;a[x>>0]=j>>>8;c[sa>>2]=ZH(c[sa>>2]|0,ga,2)|0}c[ua>>2]=2;k=0;j=0;w=47;break}case 18:{s=c[V>>2]|0;h=r;w=164;break}case 0:{q=c[na>>2]|0;if(!q){c[ua>>2]=12;s=l;p=r;q=ha;break b}if(k>>>0<16){h=r;while(1){if(!m){m=0;break a}m=m+-1|0;p=h+1|0;j=(d[h>>0]<>>0<16)h=p;else{r=p;break}}}if((q&2|0)!=0&(j|0)==35615){c[sa>>2]=ZH(0,0,0)|0;a[ga>>0]=31;a[x>>0]=-117;c[sa>>2]=ZH(c[sa>>2]|0,ga,2)|0;c[ua>>2]=1;k=0;j=0;s=l;p=r;q=ha;break b}c[qa>>2]=0;h=c[y>>2]|0;if(h)c[h+48>>2]=-1;if((q&1|0)!=0?((((j<<8&65280)+(j>>>8)|0)>>>0)%31|0|0)==0:0){if((j&15|0)!=8){c[z>>2]=295088;c[ua>>2]=29;s=l;p=r;q=ha;break b}q=j>>>4;k=k+-4|0;h=(q&15)+8|0;p=c[A>>2]|0;if(p){if(h>>>0>p>>>0){c[z>>2]=295120;c[ua>>2]=29;j=q;s=l;p=r;q=ha;break b}}else c[A>>2]=h;c[B>>2]=1<>2]=k;c[ta>>2]=k;c[ua>>2]=j>>>12&2^11;k=0;j=0;s=l;p=r;q=ha;break b}c[z>>2]=295064;c[ua>>2]=29;s=l;p=r;q=ha;break}case 3:{if(k>>>0<16){p=r;w=55}else{h=r;w=57}break}case 16:{if(k>>>0<14){p=r;while(1){if(!m){m=0;h=p;break a}m=m+-1|0;h=p+1|0;j=(d[p>>0]<>>0<14)p=h;else break}}else h=r;u=(j&31)+257|0;c[S>>2]=u;v=(j>>>5&31)+1|0;c[T>>2]=v;c[U>>2]=(j>>>10&15)+4;j=j>>>14;k=k+-14|0;if(u>>>0>286|v>>>0>30){c[z>>2]=295256;c[ua>>2]=29;s=l;p=h;q=ha;break b}else{c[V>>2]=0;c[ua>>2]=17;p=0;w=154;break b}}case 23:{q=c[L>>2]|0;h=r;w=236;break}case 9:{if(k>>>0<32){p=r;while(1){if(!m){m=0;h=p;break a}m=m+-1|0;h=p+1|0;j=(d[p>>0]<>>0>=32)break;else p=h}}else h=r;k=Nga(j|0)|0;c[sa>>2]=k;c[ta>>2]=k;c[ua>>2]=10;k=0;j=0;w=121;break}case 7:{h=r;w=96;break}case 8:{h=r;w=109;break}case 6:{h=r;w=83;break}case 10:{h=r;w=121;break}case 5:{h=r;w=73;break}case 12:{h=r;w=125;break}case 15:{h=r;w=144;break}case 14:{h=r;w=143;break}case 13:{v=k&7;j=j>>>v;k=k-v|0;if(k>>>0<32){p=r;while(1){if(!m){m=0;h=p;break a}m=m+-1|0;h=p+1|0;j=(d[p>>0]<>>0<32)p=h;else break}}else h=r;p=j&65535;if((p|0)==(j>>>16^65535|0)){c[C>>2]=p;c[ua>>2]=14;if(J){k=0;j=0;w=281;break a}else{k=0;j=0;w=143;break b}}else{c[z>>2]=295224;c[ua>>2]=29;s=l;p=h;q=ha;break b}}case 11:{h=r;w=124;break}case 17:{h=c[V>>2]|0;if(h>>>0<(c[U>>2]|0)>>>0){p=h;h=r;w=154}else{p=h;h=r;w=158}break}case 22:{h=r;w=224;break}case 20:{h=r;w=199;break}case 19:{h=r;w=198;break}case 28:{h=r;n=1;w=281;break a}case 27:{h=r;w=273;break}case 26:{if(c[na>>2]|0){if(k>>>0<32){p=r;while(1){if(!m){m=0;h=p;break a}m=m+-1|0;h=p+1|0;j=(d[p>>0]<>>0<32)p=h;else break}}else h=r;r=o-l|0;c[oa>>2]=(c[oa>>2]|0)+r;c[pa>>2]=(c[pa>>2]|0)+r;if((o|0)!=(l|0)){p=c[sa>>2]|0;q=ha+(0-r)|0;if(!(c[qa>>2]|0))p=YH(p,q,r)|0;else p=ZH(p,q,r)|0;c[sa>>2]=p;c[ta>>2]=p}if(!(c[qa>>2]|0))p=Nga(j|0)|0;else p=j;if((p|0)==(c[sa>>2]|0)){k=0;j=0;o=l}else{c[z>>2]=295544;c[ua>>2]=29;s=l;p=h;o=l;q=ha;break b}}else h=r;c[ua>>2]=27;w=273;break}case 29:{h=r;n=-3;break a}case 25:{if(!l){l=0;h=r;w=281;break a}a[ha>>0]=c[C>>2];c[ua>>2]=20;s=l+-1|0;p=r;q=ha+1|0;break}case 24:{h=r;w=242;break}case 30:{w=297;break a}default:{h=-2;w=298;break a}}while(0);if((w|0)==47)while(1){w=0;if(!m){m=0;break a}m=m+-1|0;p=h+1|0;j=(d[h>>0]<>>0>=32){w=49;break}else{h=p;w=47}}else if((w|0)==121){if(!(c[D>>2]|0)){w=122;break}w=YH(0,0,0)|0;c[sa>>2]=w;c[ta>>2]=w;c[ua>>2]=11;w=124}else if((w|0)==143){c[ua>>2]=15;w=144}else if((w|0)==154)while(1){w=0;if(k>>>0<3){q=h;while(1){if(!m){m=0;h=q;break a}m=m+-1|0;h=q+1|0;j=(d[q>>0]<>>0<3)q=h;else break}}c[V>>2]=p+1;b[ua+(e[295024+(p<<1)>>1]<<1)+112>>1]=j&7;j=j>>>3;k=k+-3|0;p=c[V>>2]|0;if(p>>>0<(c[U>>2]|0)>>>0)w=154;else{w=158;break}}else if((w|0)==273){w=0;if(!(c[na>>2]|0)){w=280;break}if(!(c[qa>>2]|0)){w=280;break}if(k>>>0<32)while(1){if(!m){m=0;break a}m=m+-1|0;p=h+1|0;j=(d[h>>0]<>>0<32)h=p;else{h=p;break}}if((j|0)==(c[pa>>2]|0)){k=0;j=0;w=280;break}c[z>>2]=295568;c[ua>>2]=29;s=l;p=h;q=ha}do if((w|0)==49){h=c[y>>2]|0;if(h)c[h+4>>2]=j;if(c[qa>>2]&512){a[ga>>0]=j;a[x>>0]=j>>>8;a[$>>0]=j>>>16;a[aa>>0]=j>>>24;c[sa>>2]=ZH(c[sa>>2]|0,ga,4)|0}c[ua>>2]=3;k=0;j=0;w=55}else if((w|0)==124)if(E){w=281;break a}else w=125;else if((w|0)==144){w=0;p=c[C>>2]|0;if(!p){c[ua>>2]=11;s=l;p=h;q=ha;break}q=p>>>0>m>>>0?m:p;q=q>>>0>l>>>0?l:q;if(!q){w=281;break a}Aga(ha|0,h|0,q|0)|0;c[C>>2]=(c[C>>2]|0)-q;m=m-q|0;s=l-q|0;p=h+q|0;q=ha+q|0}else if((w|0)==158){w=0;if(p>>>0<19){do{b[ua+(e[295024+(p<<1)>>1]<<1)+112>>1]=0;p=p+1|0}while((p|0)!=19);c[V>>2]=19}c[X>>2]=W;c[F>>2]=W;c[G>>2]=7;n=mI(0,Y,19,X,G,Z)|0;if(!n){c[V>>2]=0;c[ua>>2]=18;s=0;n=0;w=164;break}else{c[z>>2]=295296;c[ua>>2]=29;s=l;p=h;q=ha;break}}while(0);c:do if((w|0)==55)while(1){w=0;if(!m){m=0;h=p;break a}m=m+-1|0;h=p+1|0;j=(d[p>>0]<>>0>=16){w=57;break}else{p=h;w=55}}else if((w|0)==125){w=0;if(c[xa>>2]|0){s=k&7;c[ua>>2]=26;k=k-s|0;j=j>>>s;s=l;p=h;q=ha;break}if(k>>>0<3){p=h;while(1){if(!m){m=0;h=p;break a}m=m+-1|0;h=p+1|0;j=(d[p>>0]<>>0<3)p=h;else break}}c[xa>>2]=j&1;p=j>>>1&3;if((p|0)==2)c[ua>>2]=16;else if((p|0)==3){c[z>>2]=295200;c[ua>>2]=29}else if((p|0)==1){c[F>>2]=295592;c[G>>2]=9;c[H>>2]=297640;c[I>>2]=5;c[ua>>2]=19;if(J){w=133;break a}}else if(!p)c[ua>>2]=13;k=k+-3|0;j=j>>>3;s=l;p=h;q=ha}else if((w|0)==164){w=0;q=c[S>>2]|0;p=c[T>>2]|0;do if(s>>>0<(p+q|0)>>>0){v=p;d:while(1){t=(1<>2])+-1|0;r=t&j;u=c[F>>2]|0;p=d[u+(r<<2)+1>>0]|0;if(k>>>0

>>0){p=h;while(1){if(!m){m=0;h=p;break a}m=m+-1|0;h=p+1|0;j=(d[p>>0]<>0]|0;if(k>>>0

>>0)p=h;else{t=p;break}}}else t=p;p=b[u+(r<<2)+2>>1]|0;e:do if((p&65535)<16){c[V>>2]=s+1;b[ua+(s<<1)+112>>1]=p;k=k-t|0;j=j>>>t}else{if(p<<16>>16==16){r=t+2|0;if(k>>>0>>0){p=h;while(1){if(!m){m=0;h=p;break a}m=m+-1|0;h=p+1|0;j=(d[p>>0]<>>0>>0)p=h;else break}}j=j>>>t;k=k-t|0;if(!s){w=178;break d}k=k+-2|0;p=(j&3)+3|0;j=j>>>2;r=b[ua+(s+-1<<1)+112>>1]|0}else if(p<<16>>16==17){r=t+3|0;if(k>>>0>>0)while(1){if(!m){m=0;break a}m=m+-1|0;p=h+1|0;j=(d[h>>0]<>>0>>0)h=p;else{h=p;break}}j=j>>>t;k=-3-t+k|0;p=(j&7)+3|0;j=j>>>3;r=0}else{r=t+7|0;if(k>>>0>>0){p=h;while(1){if(!m){m=0;h=p;break a}m=m+-1|0;h=p+1|0;j=(d[p>>0]<>>0>>0)p=h;else break}}j=j>>>t;k=-7-t+k|0;p=(j&127)+11|0;j=j>>>7;r=0}if((s+p|0)>>>0>(v+q|0)>>>0){w=187;break d}else q=s;while(1){p=p+-1|0;c[V>>2]=q+1;b[ua+(q<<1)+112>>1]=r;if(!p)break e;q=c[V>>2]|0}}while(0);s=c[V>>2]|0;q=c[S>>2]|0;v=c[T>>2]|0;if(s>>>0>=(v+q|0)>>>0){w=190;break}}if((w|0)==178){w=0;c[z>>2]=295328;c[ua>>2]=29;s=l;p=h;q=ha;break c}else if((w|0)==187){w=0;c[z>>2]=295328;c[ua>>2]=29;s=l;p=h;q=ha;break c}else if((w|0)==190){w=0;if((c[ua>>2]|0)==29){s=l;p=h;q=ha;break c}else break}}while(0);if(!(b[_>>1]|0)){c[z>>2]=295360;c[ua>>2]=29;s=l;p=h;q=ha;break}c[X>>2]=W;c[F>>2]=W;c[G>>2]=9;n=mI(1,Y,q,X,G,Z)|0;if(n){c[z>>2]=295400;c[ua>>2]=29;s=l;p=h;q=ha;break}c[H>>2]=c[X>>2];c[I>>2]=6;n=mI(2,ua+(c[S>>2]<<1)+112|0,c[T>>2]|0,X,I,Z)|0;if(!n){c[ua>>2]=19;if(J){n=0;w=281;break a}else{n=0;w=198;break}}else{c[z>>2]=295432;c[ua>>2]=29;s=l;p=h;q=ha;break}}while(0);if((w|0)==57){k=c[y>>2]|0;if(k){c[k+8>>2]=j&255;c[k+12>>2]=j>>>8}if(c[qa>>2]&512){a[ga>>0]=j;a[x>>0]=j>>>8;c[sa>>2]=ZH(c[sa>>2]|0,ga,2)|0}c[ua>>2]=4;k=0;j=0;w=62}else if((w|0)==198){c[ua>>2]=20;w=199}do if((w|0)==62){w=0;q=c[qa>>2]|0;if(!(q&1024)){p=c[y>>2]|0;if(p)c[p+16>>2]=0}else{if(k>>>0<16){p=h;while(1){if(!m){m=0;h=p;break a}m=m+-1|0;h=p+1|0;j=(d[p>>0]<>>0>=16)break;else p=h}}c[C>>2]=j;k=c[y>>2]|0;if(k)c[k+20>>2]=j;if(!(q&512)){k=0;j=0}else{a[ga>>0]=j;a[x>>0]=j>>>8;c[sa>>2]=ZH(c[sa>>2]|0,ga,2)|0;k=0;j=0}}c[ua>>2]=5;w=73}else if((w|0)==199){w=0;if(m>>>0>5&l>>>0>257){c[ra>>2]=ha;c[la>>2]=l;c[f>>2]=h;c[ia>>2]=m;c[ja>>2]=j;c[wa>>2]=k;fI(f,o);l=c[ra>>2]|0;h=c[la>>2]|0;p=c[f>>2]|0;m=c[ia>>2]|0;j=c[ja>>2]|0;k=c[wa>>2]|0;if((c[ua>>2]|0)!=11){s=h;q=l;break}c[K>>2]=-1;s=h;q=l;break}c[K>>2]=0;s=(1<>2])+-1|0;r=s&j;u=c[F>>2]|0;p=a[u+(r<<2)+1>>0]|0;q=p&255;if(q>>>0>k>>>0){p=h;while(1){if(!m){m=0;h=p;break a}m=m+-1|0;h=p+1|0;j=(d[p>>0]<>0]|0;q=p&255;if(q>>>0>k>>>0)p=h;else break}}s=a[u+(r<<2)>>0]|0;t=b[u+(r<<2)+2>>1]|0;r=s&255;if(s<<24>>24!=0&(r&240|0)==0){t=t&65535;s=(1<>>q)+t|0;p=a[u+(r<<2)+1>>0]|0;if(((p&255)+q|0)>>>0>k>>>0){p=h;while(1){if(!m){m=0;h=p;break a}m=m+-1|0;h=p+1|0;j=(d[p>>0]<>>q)+t|0;p=a[u+(r<<2)+1>>0]|0;if(((p&255)+q|0)>>>0>k>>>0)p=h;else break}}t=b[u+(r<<2)+2>>1]|0;s=a[u+(r<<2)>>0]|0;c[K>>2]=q;r=q;k=k-q|0;j=j>>>q}else r=0;p=p&255;j=j>>>p;k=k-p|0;c[K>>2]=r+p;c[C>>2]=t&65535;p=s&255;if(!(s<<24>>24)){c[ua>>2]=25;s=l;p=h;q=ha;break}if(p&32){c[K>>2]=-1;c[ua>>2]=11;s=l;p=h;q=ha;break}if(!(p&64)){q=p&15;c[L>>2]=q;c[ua>>2]=21;w=217;break}else{c[z>>2]=295456;c[ua>>2]=29;s=l;p=h;q=ha;break}}while(0);if((w|0)==73){p=c[qa>>2]|0;if(p&1024){q=c[C>>2]|0;s=q>>>0>m>>>0?m:q;if(s){r=c[y>>2]|0;if((r|0)!=0?(ba=c[r+16>>2]|0,(ba|0)!=0):0){p=(c[r+20>>2]|0)-q|0;w=c[r+24>>2]|0;Aga(ba+p|0,h|0,((p+s|0)>>>0>w>>>0?w-p|0:s)|0)|0;p=c[qa>>2]|0}if(p&512)c[sa>>2]=ZH(c[sa>>2]|0,h,s)|0;q=(c[C>>2]|0)-s|0;c[C>>2]=q;m=m-s|0;h=h+s|0}if(q){w=281;break}}c[C>>2]=0;c[ua>>2]=6;w=83}else if((w|0)==217){w=0;if(!q)p=c[C>>2]|0;else{if(k>>>0>>0){p=h;while(1){if(!m){m=0;h=p;break a}m=m+-1|0;h=p+1|0;j=(d[p>>0]<>>0>>0)p=h;else break}}p=(c[C>>2]|0)+((1<>2]=p;c[K>>2]=(c[K>>2]|0)+q;k=k-q|0;j=j>>>q}c[M>>2]=p;c[ua>>2]=22;w=224}do if((w|0)==83){if(!(c[qa>>2]&2048)){p=c[y>>2]|0;if(p)c[p+28>>2]=0}else{if(!m){m=0;w=281;break a}else r=0;do{p=r;r=r+1|0;p=a[h+p>>0]|0;q=c[y>>2]|0;if(((q|0)!=0?(ca=c[q+28>>2]|0,(ca|0)!=0):0)?(da=c[C>>2]|0,da>>>0<(c[q+32>>2]|0)>>>0):0){c[C>>2]=da+1;a[ca+da>>0]=p}p=p<<24>>24!=0}while(p&m>>>0>r>>>0);if(c[qa>>2]&512)c[sa>>2]=ZH(c[sa>>2]|0,h,r)|0;m=m-r|0;h=h+r|0;if(p){w=281;break a}}c[C>>2]=0;c[ua>>2]=7;w=96}else if((w|0)==224){w=0;s=(1<>2])+-1|0;r=s&j;u=c[H>>2]|0;p=a[u+(r<<2)+1>>0]|0;q=p&255;if(q>>>0>k>>>0){p=h;while(1){if(!m){m=0;h=p;break a}m=m+-1|0;h=p+1|0;j=(d[p>>0]<>0]|0;q=p&255;if(q>>>0>k>>>0)p=h;else break}}s=a[u+(r<<2)>>0]|0;t=b[u+(r<<2)+2>>1]|0;r=s&255;if(!(r&240)){t=t&65535;s=(1<>>q)+t|0;p=a[u+(r<<2)+1>>0]|0;if(((p&255)+q|0)>>>0>k>>>0){p=h;while(1){if(!m){m=0;h=p;break a}m=m+-1|0;h=p+1|0;j=(d[p>>0]<>>q)+t|0;p=a[u+(r<<2)+1>>0]|0;if(((p&255)+q|0)>>>0>k>>>0)p=h;else break}}t=b[u+(r<<2)+2>>1]|0;s=a[u+(r<<2)>>0]|0;r=(c[K>>2]|0)+q|0;c[K>>2]=r;k=k-q|0;j=j>>>q}else r=c[K>>2]|0;p=p&255;j=j>>>p;k=k-p|0;c[K>>2]=r+p;p=s&255;if(!(p&64)){c[N>>2]=t&65535;q=p&15;c[L>>2]=q;c[ua>>2]=23;w=236;break}else{c[z>>2]=295488;c[ua>>2]=29;s=l;p=h;q=ha;break}}while(0);if((w|0)==96){if(!(c[qa>>2]&4096)){p=c[y>>2]|0;if(p)c[p+36>>2]=0}else{if(!m){m=0;w=281;break}else r=0;do{p=r;r=r+1|0;p=a[h+p>>0]|0;q=c[y>>2]|0;if(((q|0)!=0?(ea=c[q+36>>2]|0,(ea|0)!=0):0)?(fa=c[C>>2]|0,fa>>>0<(c[q+40>>2]|0)>>>0):0){c[C>>2]=fa+1;a[ea+fa>>0]=p}p=p<<24>>24!=0}while(p&m>>>0>r>>>0);if(c[qa>>2]&512)c[sa>>2]=ZH(c[sa>>2]|0,h,r)|0;m=m-r|0;h=h+r|0;if(p){w=281;break}}c[ua>>2]=8;w=109}else if((w|0)==236){w=0;if(q){if(k>>>0>>0){p=h;while(1){if(!m){m=0;h=p;break a}m=m+-1|0;h=p+1|0;j=(d[p>>0]<>>0>>0)p=h;else break}}c[N>>2]=(c[N>>2]|0)+((1<>2]=(c[K>>2]|0)+q;k=k-q|0;j=j>>>q}c[ua>>2]=24;w=242}do if((w|0)==109){w=0;q=c[qa>>2]|0;if(q&512){if(k>>>0<16){p=h;while(1){if(!m){m=0;h=p;break a}m=m+-1|0;h=p+1|0;j=(d[p>>0]<>>0<16)p=h;else break}}if((j|0)==(c[sa>>2]&65535|0)){k=0;j=0}else{c[z>>2]=295176;c[ua>>2]=29;s=l;p=h;q=ha;break}}p=c[y>>2]|0;if(p){c[p+44>>2]=q>>>9&1;c[p+48>>2]=1}s=ZH(0,0,0)|0;c[sa>>2]=s;c[ta>>2]=s;c[ua>>2]=11;s=l;p=h;q=ha}else if((w|0)==242){w=0;if(!l){l=0;w=281;break a}p=o-l|0;q=c[N>>2]|0;if(q>>>0>p>>>0){p=q-p|0;if(p>>>0>(c[O>>2]|0)>>>0?(c[P>>2]|0)!=0:0){c[z>>2]=295512;c[ua>>2]=29;s=l;p=h;q=ha;break}q=c[Q>>2]|0;if(p>>>0>q>>>0){p=p-q|0;r=p;p=(c[R>>2]|0)+((c[ka>>2]|0)-p)|0}else{r=p;p=(c[R>>2]|0)+(q-p)|0}v=c[C>>2]|0;s=v;r=r>>>0>v>>>0?v:r}else{r=c[C>>2]|0;s=r;p=ha+(0-q)|0}t=r>>>0>l>>>0?l:r;c[C>>2]=s-t;q=~l;s=~r;s=q>>>0>s>>>0?q:s;r=t;q=ha;while(1){a[q>>0]=a[p>>0]|0;r=r+-1|0;if(!r)break;else{p=p+1|0;q=q+1|0}}p=l-t|0;l=ha+~s|0;if(!(c[C>>2]|0)){c[ua>>2]=20;s=p;p=h;q=l}else{s=p;p=h;q=l}}while(0);h=c[ua>>2]|0;l=s;r=p;ha=q}if((w|0)==122){c[ra>>2]=ha;c[la>>2]=l;c[f>>2]=h;c[ia>>2]=m;c[ja>>2]=j;c[wa>>2]=k;f=2;i=ya;return f|0}else if((w|0)==133){k=k+-3|0;j=j>>>3}else if((w|0)==280){c[ua>>2]=28;n=1}else if((w|0)!=281)if((w|0)==297){f=-4;i=ya;return f|0}else if((w|0)==298){i=ya;return h|0}c[ra>>2]=ha;c[la>>2]=l;c[f>>2]=h;c[ia>>2]=m;c[ja>>2]=j;c[wa>>2]=k;if(!(c[ka>>2]|0)){if(((o|0)!=(l|0)?(ma=c[ua>>2]|0,ma>>>0<29):0)?ma>>>0<26|(g|0)!=4:0)w=286}else w=286;do if((w|0)==286){if(!(nT(f,ha,o-l|0)|0)){m=c[ia>>2]|0;l=c[la>>2]|0;break}c[ua>>2]=30;f=-4;i=ya;return f|0}while(0);k=o-l|0;ma=f+8|0;c[ma>>2]=va-m+(c[ma>>2]|0);c[oa>>2]=(c[oa>>2]|0)+k;c[pa>>2]=(c[pa>>2]|0)+k;if((c[na>>2]|0)!=0&(o|0)!=(l|0)){j=c[sa>>2]|0;h=(c[ra>>2]|0)+(0-k)|0;if(!(c[qa>>2]|0))h=YH(j,h,k)|0;else h=ZH(j,h,k)|0;c[sa>>2]=h;c[ta>>2]=h}h=c[ua>>2]|0;if((h|0)==19)j=256;else j=(h|0)==14?256:0;c[f+44>>2]=((c[xa>>2]|0)!=0?64:0)+(c[wa>>2]|0)+((h|0)==11?128:0)+j;f=((va|0)==(m|0)&(o|0)==(l|0)|(g|0)==4)&(n|0)==0?-5:n;i=ya;return f|0}function kI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;if(!a){g=-2;i=h;return g|0}g=a+28|0;b=c[g>>2]|0;if(!b){g=-2;i=h;return g|0}e=a+36|0;d=c[e>>2]|0;if(!d){g=-2;i=h;return g|0}f=c[b+52>>2]|0;a=a+40|0;if(f){Jd[d&255](c[a>>2]|0,f);d=c[e>>2]|0;b=c[g>>2]|0}Jd[d&255](c[a>>2]|0,b);c[g>>2]=0;g=0;i=h;return g|0}function lI(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;m=p;if(!b){b=-2;i=p;return b|0}o=c[b+28>>2]|0;if(!o){b=-2;i=p;return b|0}n=b+4|0;d=c[n>>2]|0;if((d|0)==0?(c[o+60>>2]|0)>>>0<8:0){b=-5;i=p;return b|0}if((c[o>>2]|0)==31)e=c[o+104>>2]|0;else{c[o>>2]=31;h=o+60|0;g=c[h>>2]|0;j=o+56|0;d=c[j>>2]<<(g&7);c[j>>2]=d;g=g&-8;c[h>>2]=g;if(g>>>0>7){f=7-g|0;f=(g+(f>>>0>4294967288?f:-8)|0)>>>3;k=g+-8-(f<<3)|0;e=0;while(1){a[m+e>>0]=d;d=d>>>8;g=g+-8|0;if(g>>>0<=7)break;else e=e+1|0}l=f+1|0;c[j>>2]=d;c[h>>2]=k;d=o+104|0;c[d>>2]=0;e=0;f=0;do{g=a[m+f>>0]|0;if((g&255|0)==((e>>>0<2?0:255)|0))e=e+1|0;else e=g<<24>>24==0?4-e|0:0;f=f+1|0}while(f>>>0>>0&e>>>0<4)}else{d=o+104|0;c[d>>2]=0;e=0}c[d>>2]=e;d=c[n>>2]|0}l=o+104|0;j=c[b>>2]|0;if((d|0)!=0&e>>>0<4){f=0;while(1){g=a[j+f>>0]|0;if((g&255|0)==((e>>>0<2?0:255)|0))e=e+1|0;else e=g<<24>>24==0?4-e|0:0;g=f+1|0;if(g>>>0>>0&e>>>0<4)f=g;else{d=g;break}}}else d=0;c[l>>2]=e;c[n>>2]=(c[n>>2]|0)-d;c[b>>2]=j+d;h=b+8|0;g=(c[h>>2]|0)+d|0;c[h>>2]=g;if((e|0)!=4){b=-3;i=p;return b|0}d=b+20|0;e=c[d>>2]|0;c[o+40>>2]=0;c[o+44>>2]=0;c[o+48>>2]=0;c[o+28>>2]=0;c[d>>2]=0;c[h>>2]=0;c[b+24>>2]=0;f=c[o+8>>2]|0;if(f)c[b+48>>2]=f&1;c[o+4>>2]=0;c[o+12>>2]=0;c[o+20>>2]=32768;c[o+32>>2]=0;c[o+56>>2]=0;c[o+60>>2]=0;b=o+1328|0;c[o+108>>2]=b;c[o+80>>2]=b;c[o+76>>2]=b;c[o+7104>>2]=1;c[o+7108>>2]=-1;c[h>>2]=g;c[d>>2]=e;c[o>>2]=11;b=0;i=p;return b|0}function mI(d,f,g,h,j,k){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;K=i;i=i+64|0;I=K+32|0;p=K;l=I+0|0;m=l+32|0;do{b[l>>1]=0;l=l+2|0}while((l|0)<(m|0));o=(g|0)==0;if(!o){l=0;do{G=I+(e[f+(l<<1)>>1]<<1)|0;b[G>>1]=(b[G>>1]|0)+1<<16>>16;l=l+1|0}while((l|0)!=(g|0))}l=c[j>>2]|0;G=15;while(1){m=G+-1|0;if(b[I+(G<<1)>>1]|0)break;if(!m){J=7;break}else G=m}if((J|0)==7){J=c[h>>2]|0;c[h>>2]=J+4;a[J>>0]=64;a[J+1>>0]=1;b[J+2>>1]=0;J=c[h>>2]|0;c[h>>2]=J+4;a[J>>0]=64;a[J+1>>0]=1;b[J+2>>1]=0;c[j>>2]=1;J=0;i=K;return J|0}n=l>>>0>G>>>0?G:l;a:do if(G>>>0>1){m=1;while(1){l=m+1|0;if(b[I+(m<<1)>>1]|0)break a;if(l>>>0>>0)m=l;else{m=l;break}}}else m=1;while(0);F=n>>>0>>0?m:n;l=1;n=1;do{l=(l<<1)-(e[I+(n<<1)>>1]|0)|0;n=n+1|0;if((l|0)<0){H=-1;J=49;break}}while(n>>>0<16);if((J|0)==49){i=K;return H|0}if((l|0)>0?(d|0)==0|(G|0)!=1:0){J=-1;i=K;return J|0}b[p+2>>1]=0;l=0;n=1;do{l=(e[I+(n<<1)>>1]|0)+(l&65535)|0;n=n+1|0;b[p+(n<<1)>>1]=l}while((n|0)!=15);if(!o){n=0;do{l=b[f+(n<<1)>>1]|0;if(l<<16>>16){D=p+((l&65535)<<1)|0;E=b[D>>1]|0;b[D>>1]=E+1<<16>>16;b[k+((E&65535)<<1)>>1]=n}n=n+1|0}while((n|0)!=(g|0))}if(!d){l=0;A=0;C=k;D=19;E=k}else if((d|0)==1)if(F>>>0>9){J=1;i=K;return J|0}else{l=0;A=1;C=297768+-514|0;D=256;E=297832+-514|0}else{l=(d|0)==2;if(l&F>>>0>9){J=1;i=K;return J|0}else{A=0;C=297896;D=-1;E=297960}}y=1<>2]|0;n=0;b:while(1){r=1<>1]|0;n=o&65535;if((n|0)>=(D|0))if((n|0)>(D|0)){d=b[E+(n<<1)>>1]&255;o=b[C+(n<<1)>>1]|0}else{d=96;o=0}else d=0;n=1<>>u;g=r;do{s=g;g=g-n|0;L=g+p|0;a[x+(L<<2)>>0]=d;a[x+(L<<2)+1>>0]=v;b[x+(L<<2)+2>>1]=o}while((s|0)!=(n|0));o=1<>>1;if(!o)q=0;else q=(o+-1&q)+o|0;w=w+1|0;s=I+(m<<1)|0;L=(b[s>>1]|0)+-1<<16>>16;b[s>>1]=L;if(!(L<<16>>16)){if((m|0)==(G|0))break b;m=e[f+(e[k+(w<<1)>>1]<<1)>>1]|0}if(m>>>0<=F>>>0)continue;s=q&z;if((s|0)!=(t|0))break}d=(u|0)==0?F:u;r=x+(r<<2)|0;n=m-d|0;c:do if(m>>>0>>0){p=m;o=n;n=1<>1]|0)|0;if((n|0)<1)break c;o=o+1|0;p=o+d|0;if(p>>>0>=G>>>0)break;else n=n<<1}}else o=n;while(0);g=(1<>>0>852|l&g>>>0>592){H=1;J=49;break}u=c[h>>2]|0;a[u+(s<<2)>>0]=o;a[u+(s<<2)+1>>0]=B;b[u+(s<<2)+2>>1]=(r-u|0)>>>2;u=d;p=q;t=s;x=r;n=w;y=g}if((J|0)==49){i=K;return H|0}if(q){a[x+(q<<2)>>0]=64;a[x+(q<<2)+1>>0]=v;b[x+(q<<2)+2>>1]=0}c[h>>2]=(c[h>>2]|0)+(y<<2);c[j>>2]=F;L=0;i=K;return L|0}function nI(a){a=a|0;var d=0;d=i;c[a+2840>>2]=a+148;c[a+2848>>2]=298792;c[a+2852>>2]=a+2440;c[a+2860>>2]=298816;c[a+2864>>2]=a+2684;c[a+2872>>2]=298840;b[a+5816>>1]=0;c[a+5820>>2]=0;oT(a);i=d;return}function oI(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;m=d+5820|0;k=c[m>>2]|0;j=h&65535;l=d+5816|0;h=e[l>>1]|0|j<>1]=h;if((k|0)>13){p=d+20|0;k=c[p>>2]|0;c[p>>2]=k+1;o=d+8|0;a[(c[o>>2]|0)+k>>0]=h;h=(e[l>>1]|0)>>>8&255;k=c[p>>2]|0;c[p>>2]=k+1;a[(c[o>>2]|0)+k>>0]=h;k=c[m>>2]|0;h=j>>>(16-k|0);b[l>>1]=h;k=k+-13|0}else k=k+3|0;h=h&255;c[m>>2]=k;do if((k|0)<=8){j=d+20|0;if((k|0)>0){o=c[j>>2]|0;c[j>>2]=o+1;p=d+8|0;a[(c[p>>2]|0)+o>>0]=h;h=p;break}else{h=d+8|0;break}}else{j=d+20|0;o=c[j>>2]|0;c[j>>2]=o+1;p=d+8|0;a[(c[p>>2]|0)+o>>0]=h;o=(e[l>>1]|0)>>>8&255;h=c[j>>2]|0;c[j>>2]=h+1;a[(c[p>>2]|0)+h>>0]=o;h=p}while(0);b[l>>1]=0;c[m>>2]=0;o=c[j>>2]|0;c[j>>2]=o+1;a[(c[h>>2]|0)+o>>0]=g;o=c[j>>2]|0;c[j>>2]=o+1;a[(c[h>>2]|0)+o>>0]=g>>>8;o=g&65535^65535;p=c[j>>2]|0;c[j>>2]=p+1;a[(c[h>>2]|0)+p>>0]=o;p=c[j>>2]|0;c[j>>2]=p+1;a[(c[h>>2]|0)+p>>0]=o>>>8;if(!g){i=n;return}while(1){g=g+-1|0;o=a[f>>0]|0;p=c[j>>2]|0;c[j>>2]=p+1;a[(c[h>>2]|0)+p>>0]=o;if(!g)break;else f=f+1|0}i=n;return}function pI(d){d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;h=i;f=d+5820|0;g=c[f>>2]|0;if((g|0)==16){g=d+5816|0;m=b[g>>1]&255;l=d+20|0;k=c[l>>2]|0;c[l>>2]=k+1;j=d+8|0;a[(c[j>>2]|0)+k>>0]=m;k=(e[g>>1]|0)>>>8&255;d=c[l>>2]|0;c[l>>2]=d+1;a[(c[j>>2]|0)+d>>0]=k;b[g>>1]=0;c[f>>2]=0;i=h;return}if((g|0)<=7){i=h;return}l=d+5816|0;j=b[l>>1]&255;m=d+20|0;k=c[m>>2]|0;c[m>>2]=k+1;a[(c[d+8>>2]|0)+k>>0]=j;b[l>>1]=(e[l>>1]|0)>>>8;c[f>>2]=(c[f>>2]|0)+-8;i=h;return}function qI(d){d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;h=d+5820|0;g=c[h>>2]|0;j=d+5816|0;f=e[j>>1]|0|2<>1]=f;if((g|0)>13){m=d+20|0;g=c[m>>2]|0;c[m>>2]=g+1;l=d+8|0;a[(c[l>>2]|0)+g>>0]=f;f=(e[j>>1]|0)>>>8&255;g=c[m>>2]|0;c[m>>2]=g+1;a[(c[l>>2]|0)+g>>0]=f;g=c[h>>2]|0;f=2>>>(16-g|0);b[j>>1]=f;g=g+-13|0}else g=g+3|0;f=f&255;c[h>>2]=g;if((g|0)>9){m=d+20|0;l=c[m>>2]|0;c[m>>2]=l+1;g=d+8|0;a[(c[g>>2]|0)+l>>0]=f;l=(e[j>>1]|0)>>>8&255;f=c[m>>2]|0;c[m>>2]=f+1;a[(c[g>>2]|0)+f>>0]=l;b[j>>1]=0;f=0;g=(c[h>>2]|0)+-9|0}else g=g+7|0;c[h>>2]=g;if((g|0)==16){g=d+20|0;m=c[g>>2]|0;c[g>>2]=m+1;d=d+8|0;a[(c[d>>2]|0)+m>>0]=f;m=(e[j>>1]|0)>>>8&255;l=c[g>>2]|0;c[g>>2]=l+1;a[(c[d>>2]|0)+l>>0]=m;b[j>>1]=0;c[h>>2]=0;i=k;return}if((g|0)<=7){i=k;return}m=d+20|0;l=c[m>>2]|0;c[m>>2]=l+1;a[(c[d+8>>2]|0)+l>>0]=f;b[j>>1]=(e[j>>1]|0)>>>8;c[h>>2]=(c[h>>2]|0)+-8;i=k;return}function rI(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;if((c[f+132>>2]|0)>0){n=(c[f>>2]|0)+44|0;if((c[n>>2]|0)==2){k=-201342849;l=0;while(1){if((k&1|0)!=0?(b[f+(l<<2)+148>>1]|0)!=0:0){k=0;break}l=l+1|0;if((l|0)>=32){m=6;break}else k=k>>>1}a:do if((m|0)==6)if(((b[f+184>>1]|0)==0?(b[f+188>>1]|0)==0:0)?(b[f+200>>1]|0)==0:0){k=32;while(1){if(b[f+(k<<2)+148>>1]|0){k=1;break a}k=k+1|0;if((k|0)>=256){k=0;break}}}else k=1;while(0);c[n>>2]=k}pT(f,f+2840|0);pT(f,f+2852|0);qT(f,f+148|0,c[f+2844>>2]|0);qT(f,f+2440|0,c[f+2856>>2]|0);pT(f,f+2864|0);l=18;while(1){k=l+-1|0;if(b[f+(d[300616+l>>0]<<2)+2686>>1]|0){k=l;break}if((k|0)>2)l=k;else break}l=f+5800|0;n=(k*3|0)+17+(c[l>>2]|0)|0;c[l>>2]=n;n=(n+10|0)>>>3;l=((c[f+5804>>2]|0)+10|0)>>>3;n=l>>>0>n>>>0?n:l}else{l=h+5|0;k=0;n=l}do if((h+4|0)>>>0<=n>>>0&(g|0)!=0)oI(f,g,h,j);else{s=f+5820|0;g=c[s>>2]|0;h=(g|0)>13;if((l|0)==(n|0)?1:(c[f+136>>2]|0)==4){k=j+2&65535;l=f+5816|0;m=e[l>>1]|k<>1]=m;if(h){g=f+20|0;h=c[g>>2]|0;c[g>>2]=h+1;o=f+8|0;a[(c[o>>2]|0)+h>>0]=m;h=(e[l>>1]|0)>>>8&255;r=c[g>>2]|0;c[g>>2]=r+1;a[(c[o>>2]|0)+r>>0]=h;r=c[s>>2]|0;b[l>>1]=k>>>(16-r|0);k=r+-13|0}else k=g+3|0;c[s>>2]=k;rT(f,298864,300016);break}m=j+4&65535;r=f+5816|0;l=e[r>>1]|m<>1]=l;if(h){g=f+20|0;o=c[g>>2]|0;c[g>>2]=o+1;h=f+8|0;a[(c[h>>2]|0)+o>>0]=l;l=(e[r>>1]|0)>>>8&255;o=c[g>>2]|0;c[g>>2]=o+1;a[(c[h>>2]|0)+o>>0]=l;o=c[s>>2]|0;l=m>>>(16-o|0);b[r>>1]=l;m=o+-13|0}else m=g+3|0;c[s>>2]=m;p=c[f+2844>>2]|0;q=c[f+2856>>2]|0;n=p+65280&65535;l=l&65535|n<>1]=l;if((m|0)>11){h=f+20|0;m=c[h>>2]|0;c[h>>2]=m+1;o=f+8|0;a[(c[o>>2]|0)+m>>0]=l;l=(e[r>>1]|0)>>>8&255;m=c[h>>2]|0;c[h>>2]=m+1;a[(c[o>>2]|0)+m>>0]=l;m=c[s>>2]|0;l=n>>>(16-m|0);b[r>>1]=l;m=m+-11|0}else m=m+5|0;c[s>>2]=m;n=q&65535;l=n<>1]=l;if((m|0)>11){h=f+20|0;m=c[h>>2]|0;c[h>>2]=m+1;o=f+8|0;a[(c[o>>2]|0)+m>>0]=l;l=(e[r>>1]|0)>>>8&255;m=c[h>>2]|0;c[h>>2]=m+1;a[(c[o>>2]|0)+m>>0]=l;m=c[s>>2]|0;l=n>>>(16-m|0);b[r>>1]=l;m=m+-11|0}else m=m+5|0;c[s>>2]=m;n=k+65533&65535;l=n<>1]=l;if((m|0)>12){g=f+20|0;o=c[g>>2]|0;c[g>>2]=o+1;h=f+8|0;a[(c[h>>2]|0)+o>>0]=l;l=(e[r>>1]|0)>>>8&255;o=c[g>>2]|0;c[g>>2]=o+1;a[(c[h>>2]|0)+o>>0]=l;o=c[s>>2]|0;l=n>>>(16-o|0);b[r>>1]=l;n=o+-12|0}else n=m+4|0;c[s>>2]=n;if((k|0)>-1){h=f+20|0;o=f+8|0;g=0;while(1){m=e[f+(d[300616+g>>0]<<2)+2686>>1]|0;l=m<>1]=l;if((n|0)>13){n=c[h>>2]|0;c[h>>2]=n+1;a[(c[o>>2]|0)+n>>0]=l;l=(e[r>>1]|0)>>>8&255;n=c[h>>2]|0;c[h>>2]=n+1;a[(c[o>>2]|0)+n>>0]=l;n=c[s>>2]|0;l=m>>>(16-n|0);b[r>>1]=l;n=n+-13|0}else n=n+3|0;c[s>>2]=n;if((g|0)==(k|0))break;else g=g+1|0}}r=f+148|0;sT(f,r,p);s=f+2440|0;sT(f,s,q);rT(f,r,s)}while(0);oT(f);if(!j){i=t;return}m=f+5820|0;l=c[m>>2]|0;if((l|0)<=8){k=f+5816|0;if((l|0)>0){s=b[k>>1]&255;r=f+20|0;j=c[r>>2]|0;c[r>>2]=j+1;a[(c[f+8>>2]|0)+j>>0]=s}}else{k=f+5816|0;o=b[k>>1]&255;r=f+20|0;s=c[r>>2]|0;c[r>>2]=s+1;j=f+8|0;a[(c[j>>2]|0)+s>>0]=o;s=(e[k>>1]|0)>>>8&255;f=c[r>>2]|0;c[r>>2]=f+1;a[(c[j>>2]|0)+f>>0]=s}b[k>>1]=0;c[m>>2]=0;i=t;return}function sI(a,b,c){a=a|0;b=b|0;c=c|0;a=i;c=Afa(ea(c,b)|0)|0;i=a;return c|0}function tI(a,b){a=a|0;b=b|0;a=i;Bfa(b);i=a;return}function uI(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;d=b<<1;a=Afa(d+a|0)|0;if(!a){b=0;i=e;return b|0}b=d-((a>>>0)%(b>>>0)|0)+a|0;c[b+-4>>2]=a;i=e;return b|0}function vI(a){a=a|0;var b=0;b=i;Bfa(c[a+-4>>2]|0);i=b;return}function wI(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0;j=i;b=tT(a,0,0,b,c,d,e,f,g,h)|0;i=j;return b|0}function xI(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;b=tT(a,0,0,1,b,c,d,e,f,g)|0;i=h;return b|0}function yI(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;a=tT(0,0,0,1,a,b,c,d,e,f)|0;i=g;return a|0}function zI(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;b=tT(0,0,0,a,b,c,d,e,f,g)|0;i=h;return b|0}function AI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;if(!a){i=k;return}b=c[a>>2]|0;if(b){d=c[b+280>>2]|0;if(d){Bfa(d);b=c[a>>2]|0}j=c[b+284>>2]|0;b=c[j>>2]|0;h=j+4|0;if((b|0)!=(h|0))do{f=c[b+20>>2]|0;if(f){d=c[f>>2]|0;g=f+4|0;if((d|0)!=(g|0))do{lL(c[d+28>>2]|0);e=c[d+4>>2]|0;if(!e)while(1){e=c[d+8>>2]|0;if((c[e>>2]|0)==(d|0)){d=e;break}else d=e}else{d=e;while(1){e=c[d>>2]|0;if(!e)break;else d=e}}}while((d|0)!=(g|0));uT(f,c[f+4>>2]|0);xea(f)}d=c[b+4>>2]|0;if(!d)while(1){d=c[b+8>>2]|0;if((c[d>>2]|0)==(b|0)){b=d;break}else b=d}else{b=d;while(1){d=c[b>>2]|0;if(!d)break;else b=d}}}while((b|0)!=(h|0));if(j){vT(j,c[j+4>>2]|0);xea(j)}AI(c[(c[a>>2]|0)+292>>2]|0);Bfa(c[(c[a>>2]|0)+-4>>2]|0)}Bfa(a);i=k;return}function BI(a){a=a|0;if(!a)a=0;else a=(c[a>>2]|0)+272|0;return a|0}function CI(a){a=a|0;if(!a)a=0;else a=c[(c[a>>2]|0)+292>>2]|0;return a|0}function DI(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0;C=i;i=i+16|0;z=C+12|0;y=C;if(!a){B=0;i=C;return B|0}q=c[a>>2]|0;k=c[q>>2]|0;s=q;g=s&15;g=s+312+((g|0)==0?0:16-g|0)|0;s=c[g+4>>2]|0;B=c[g+8>>2]|0;t=b[g+14>>1]|0;n=t&65535;A=c[q+296>>2]|0;q=(c[q+288>>2]|0)==0;j=q&1;f=(k|0)==1;m=t<<16>>16==16&f;do if(f){if((c[g+16>>2]|0)==3)d=c[g+40>>2]|0;else d=(t&65535)>23?16711680:0;if((c[g+16>>2]|0)==3)h=c[g+44>>2]|0;else h=(t&65535)>23?65280:0;if(f)if((c[g+16>>2]|0)==3){f=c[g+48>>2]|0;break}else{f=(t&65535)>23?255:0;break}else f=0}else{h=0;f=0;d=0}while(0);d=tT(j,0,0,k,s,B,n,d,h,f)|0;if(!d){B=0;i=C;return B|0}l=c[a>>2]|0;o=l+272|0;r=c[l+284>>2]|0;g=c[d>>2]|0;p=g+272|0;w=c[g+284>>2]|0;f=(t<<16>>16!=0&(t&65535)<9?(4<>>0)+ +(B>>>0)*(+S(+((+(s>>>0)*+(t&65535)+31.0)*.03125))*4.0);if(D!=+(h>>>0)|D>4294967167.0)h=0;else u=16}else{h=f;u=16}Aga(g|0,l|0,h|0)|0;c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;j=c[d>>2]|0;c[j+284>>2]=w;c[j+292>>2]=0;k=c[l+280>>2]|0;f=c[l+276>>2]|0;g=j+280|0;h=c[g>>2]|0;if(!h)h=j;else{Bfa(h);h=c[d>>2]|0}c[g>>2]=0;c[j+276>>2]=0;if((f|0)!=0?(v=Afa(f)|0,c[h+280>>2]=v,(v|0)!=0):0){c[h+276>>2]=f;Aga(v|0,k|0,f|0)|0}b[p>>1]=b[o>>1]|0;h=c[r>>2]|0;k=r+4|0;if((h|0)!=(k|0))do{c[z>>2]=c[h+16>>2];g=c[h+20>>2]|0;if((g|0)!=0?(x=uea(12,378904)|0,(x|0)!=0):0){f=x+4|0;c[f>>2]=0;c[x+8>>2]=0;c[x>>2]=f;f=c[g>>2]|0;j=g+4|0;if((f|0)!=(j|0))do{p3(y,f+16|0);g=mL(c[f+28>>2]|0)|0;c[(wT(x,y)|0)>>2]=g;v3(y);g=c[f+4>>2]|0;if(!g)while(1){g=c[f+8>>2]|0;if((c[g>>2]|0)==(f|0)){f=g;break}else f=g}else{f=g;while(1){g=c[f>>2]|0;if(!g)break;else f=g}}}while((f|0)!=(j|0));c[(xT(w,z)|0)>>2]=x}f=c[h+4>>2]|0;if(!f)while(1){f=c[h+8>>2]|0;if((c[f>>2]|0)==(h|0)){h=f;break}else h=f}else{h=f;while(1){f=c[h>>2]|0;if(!f)break;else h=f}}}while((h|0)!=(k|0));f=c[(c[a>>2]|0)+292>>2]|0;g=c[(c[d>>2]|0)+292>>2]|0;if((g|0)!=(f|0)){AI(g);if((f|0)!=0?(c[(c[f>>2]|0)+288>>2]|0)!=0:0)f=DI(f)|0;else f=0;c[(c[d>>2]|0)+292>>2]=f}if(!A){B=d;i=C;return B|0}f=c[a>>2]|0;if(!(c[f+296>>2]|0)){h=f;f=h&15;g=16-f|0;h=h+312|0;j=h+((f|0)==0?0:g)|0;j=(((ea(e[j+14>>1]|0,c[j+4>>2]|0)|0)+7|0)>>>3)+3&1073741820}else{h=f;g=h&15;j=c[f+300>>2]|0;f=g;g=16-g|0;h=h+312|0}h=h+((f|0)==0?0:g)|0;h=((ea(e[h+14>>1]|0,c[h+4>>2]|0)|0)+7|0)>>>3;if(!B){B=d;i=C;return B|0}else{f=A;g=0}while(1){Aga($J(d,g)|0,f|0,h|0)|0;g=g+1|0;if((g|0)==(B|0))break;else f=f+j|0}i=C;return d|0}function EI(a){a=a|0;if(!a)a=0;else a=c[c[a>>2]>>2]|0;return a|0}function FI(a){a=a|0;var b=0,d=0;b=i;if(!a){a=0;i=b;return a|0}d=c[a>>2]|0;a=d&15;a=c[d+312+((a|0)==0?0:16-a|0)+4>>2]|0;i=b;return a|0}function GI(a){a=a|0;var b=0,d=0;b=i;if(!a){a=0;i=b;return a|0}d=c[a>>2]|0;a=d&15;a=c[d+312+((a|0)==0?0:16-a|0)+8>>2]|0;i=b;return a|0}function HI(a){a=a|0;var b=0,d=0;b=i;if(!a){a=0;i=b;return a|0}d=c[a>>2]|0;a=d&15;a=e[d+312+((a|0)==0?0:16-a|0)+14>>1]|0;i=b;return a|0}function II(a){a=a|0;if(!a)a=0;else a=c[(c[a>>2]|0)+288>>2]|0;return a|0}function JI(a){a=a|0;var b=0,d=0;b=i;if(!a){a=0;i=b;return a|0}a=c[a>>2]|0;if((c[a>>2]|0)!=1){a=0;i=b;return a|0}d=a;a=d&15;a=d+312+((a|0)==0?0:16-a|0)|0;if((c[a+16>>2]|0)==3){d=c[a+40>>2]|0;i=b;return d|0}else{d=(e[a+14>>1]|0)>23?16711680:0;i=b;return d|0}return 0}function KI(a){a=a|0;var b=0,d=0;b=i;if(!a){a=0;i=b;return a|0}a=c[a>>2]|0;if((c[a>>2]|0)!=1){a=0;i=b;return a|0}d=a;a=d&15;a=d+312+((a|0)==0?0:16-a|0)|0;if((c[a+16>>2]|0)==3){d=c[a+44>>2]|0;i=b;return d|0}else{d=(e[a+14>>1]|0)>23?65280:0;i=b;return d|0}return 0}function LI(a){a=a|0;var b=0,d=0;b=i;if(!a){a=0;i=b;return a|0}a=c[a>>2]|0;if((c[a>>2]|0)!=1){a=0;i=b;return a|0}d=a;a=d&15;a=d+312+((a|0)==0?0:16-a|0)|0;if((c[a+16>>2]|0)==3){d=c[a+48>>2]|0;i=b;return d|0}else{d=(e[a+14>>1]|0)>23?255:0;i=b;return d|0}return 0}function MI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;if(!a){d=0;i=j;return d|0}f=c[a>>2]|0;g=f+280|0;e=c[g>>2]|0;if(!e)h=f;else{Bfa(e);h=c[a>>2]|0}c[g>>2]=0;c[f+276>>2]=0;e=h+272|0;if(!d){d=e;i=j;return d|0}a=Afa(d)|0;c[h+280>>2]=a;if(!a){d=e;i=j;return d|0}c[h+276>>2]=d;Aga(a|0,b|0,d|0)|0;d=e;i=j;return d|0}function NI(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;if(!a){a=0;i=e;return a|0}d=c[(c[a>>2]|0)+292>>2]|0;if((d|0)==(b|0)){a=1;i=e;return a|0}AI(d);if((b|0)!=0?(c[(c[b>>2]|0)+288>>2]|0)!=0:0)d=DI(b)|0;else d=0;c[(c[a>>2]|0)+292>>2]=d;a=1;i=e;return a|0}function OI(a){a=a|0;var b=0,d=0;b=i;if(!a){a=0;i=b;return a|0}a=c[a>>2]|0;if(!(c[a+296>>2]|0)){d=a;a=d&15;a=d+312+((a|0)==0?0:16-a|0)|0;a=(((ea(e[a+14>>1]|0,c[a+4>>2]|0)|0)+7|0)>>>3)+3&1073741820;i=b;return a|0}else{d=c[a+300>>2]|0;i=b;return d|0}return 0}function PI(a){a=a|0;var b=0,d=0;b=i;if(!a){a=0;i=b;return a|0}d=c[a>>2]|0;a=d&15;a=d+312+((a|0)==0?0:16-a|0)|0;a=((ea(e[a+14>>1]|0,c[a+4>>2]|0)|0)+7|0)>>>3;i=b;return a|0}function QI(a){a=a|0;var b=0,d=0,e=0;d=i;if(!a){b=0;i=d;return b|0}a=c[a>>2]|0;if(!(c[a+288>>2]|0)){b=0;i=d;return b|0}b=c[a+296>>2]|0;if(b){i=d;return b|0}e=a;a=e&15;a=(a|0)==0?0:16-a|0;b=e+312+a|0;b=((c[b+16>>2]|0)==3?12:0)+(e+352+a+(c[b+32>>2]<<2))|0;a=b&15;b=((a|0)==0?0:16-a|0)+b|0;i=d;return b|0}function RI(a){a=a|0;var b=0,d=0;b=i;if(!a){a=0;i=b;return a|0}d=c[a>>2]|0;a=d&15;a=d+312+((a|0)==0?0:16-a|0)|0;i=b;return a|0}function SI(a){a=a|0;var b=0,d=0;b=i;if(!a){a=0;i=b;return a|0}d=c[a>>2]|0;a=d&15;a=c[d+312+((a|0)==0?0:16-a|0)+32>>2]|0;i=b;return a|0}function TI(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;e=m;a:do if(d){f=c[d>>2]|0;switch(c[f>>2]|0){case 12:case 10:{k=4;i=m;return k|0}case 2:{c[e>>2]=0;if(!(UI(1,d,300912,e)|0)){k=1;i=m;return k|0}k=(b[(sL(c[e>>2]|0)|0)>>1]|0)!=0&1;i=m;return k|0}case 1:{e=f;g=e&15;g=e+312+((g|0)==0?0:16-g|0)|0;e=b[g+14>>1]|0;switch(e&65535|0){case 8:case 4:{k=c[g+32>>2]|0;if((e&65535)<16)f=g+40|0;else f=0;b:do if((k|0)>0){h=k+-1|0;j=0;e=1;while(1){g=a[f+2>>0]|0;d=g&255;if(g<<24>>24!=(a[f+1>>0]|0)){e=3;f=39;break}if(g<<24>>24!=(a[f>>0]|0)){e=3;f=39;break}if((d|0)!=(j|0))if((h-j|0)==(d|0))e=0;else{e=3;f=39;break}j=j+1|0;if((k|0)<=(j|0)){l=e;break b}else f=f+4|0}if((f|0)==39){i=m;return e|0}}else l=1;while(0);k=(l|0)!=0&1;i=m;return k|0}case 32:{if(b[f+272>>1]&1){k=5;i=m;return k|0}if(!(c[f+288>>2]|0)){k=4;i=m;return k|0}else g=0;c:while(1){h=c[d>>2]|0;k=h&15;if(g>>>0>=(c[h+312+((k|0)==0?0:16-k|0)+8>>2]|0)>>>0){e=2;f=39;break}e=$J(d,g)|0;f=0;while(1){h=c[d>>2]|0;k=h&15;if(f>>>0>=(c[h+312+((k|0)==0?0:16-k|0)+4>>2]|0)>>>0)break;if((a[e+(f<<2)+3>>0]|0)==-1)f=f+1|0;else{e=4;f=39;break c}}g=g+1|0}if((f|0)==39){i=m;return e|0}break}case 1:{f=g+40|0;if(((a[f+2>>0]|0)==0?(a[f+1>>0]|0)==0:0)?(a[f>>0]|0)==0:0){e=g+44|0;if(((a[f+6>>0]|0)==-1?(a[f+5>>0]|0)==-1:0)?(a[e>>0]|0)==-1:0){k=1;i=m;return k|0}}else e=f;if((((((a[e+2>>0]|0)==-1?(a[e+1>>0]|0)==-1:0)?(a[e>>0]|0)==-1:0)?(a[e+6>>0]|0)==0:0)?(a[e+5>>0]|0)==0:0)?(a[e+4>>0]|0)==0:0){k=0;i=m;return k|0}k=3;i=m;return k|0}case 24:case 16:{k=2;i=m;return k|0}default:{k=1;i=m;return k|0}}break}case 11:case 9:{k=2;i=m;return k|0}default:break a}}while(0);k=1;i=m;return k|0}function UI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l+12|0;h=l;if(!((b|0)!=0&(d|0)!=0&(e|0)!=0)){a=0;i=l;return a|0}c[e>>2]=0;b=c[(c[b>>2]|0)+284>>2]|0;do if((c[b+8>>2]|0)!=0?(f=c[b+4>>2]|0,j=b+4|0,(f|0)!=0):0){g=j;a:while(1){b=f;while(1){if((c[b+16>>2]|0)>=(a|0))break;b=c[b+4>>2]|0;if(!b){b=g;break a}}f=c[b>>2]|0;if(!f)break;else g=b}if((b|0)!=(j|0)?(c[b+16>>2]|0)<=(a|0):0){a=c[b+20>>2]|0;q3(h,d,Dga(d|0)|0);yT(k,a,h);v3(h);b=c[k>>2]|0;if((b|0)==(a+4|0)){b=c[e>>2]|0;break}else{b=c[b+28>>2]|0;c[e>>2]=b;break}}else b=0}else b=0;while(0);a=(b|0)!=0&1;i=l;return a|0}function VI(a){a=a|0;var b=0,d=0;b=i;if(!a){a=0;i=b;return a|0}d=c[a>>2]|0;a=d&15;a=d+312+((a|0)==0?0:16-a|0)|0;if((e[a+14>>1]|0)>=16){d=0;i=b;return d|0}d=a+40|0;i=b;return d|0}function WI(b){b=b|0;var d=0;d=i;if(!b){b=0;i=d;return b|0}b=(a[(c[b>>2]|0)+7>>0]|0)!=0&1;i=d;return b|0}function XI(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;if(!((e|0)!=0&(f|0)!=0)){f=0;i=m;return f|0}g=c[e>>2]|0;if(!(a[g+7>>0]|0)){f=0;i=m;return f|0}l=g+4|0;k=d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24;a[f>>0]=k;a[f+1>>0]=k>>8;a[f+2>>0]=k>>16;a[f+3>>0]=k>>24;k=c[e>>2]|0;h=k&15;h=k+312+((h|0)==0?0:16-h|0)|0;a:do if((b[h+14>>1]|0)==8){j=h+40|0;k=g+6|0;e=g+5|0;g=0;while(1){if(g>>>0>=(c[h+32>>2]|0)>>>0)break a;if(((a[k>>0]|0)==(a[j+(g<<2)+2>>0]|0)?(a[e>>0]|0)==(a[j+(g<<2)+1>>0]|0):0)?(a[l>>0]|0)==(a[j+(g<<2)>>0]|0):0)break;g=g+1|0}a[f+3>>0]=g;f=1;i=m;return f|0}while(0);a[f+3>>0]=0;f=1;i=m;return f|0}function YI(b,e){b=b|0;e=e|0;var f=0,g=0;g=i;if(!b){e=0;i=g;return e|0}b=c[b>>2]|0;f=b+4|0;if(!e){a[f>>0]=0;a[f+1>>0]=0;a[f+2>>0]=0;a[f+3>>0]=0;e=1;i=g;return e|0}else{e=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[f>>0]=e;a[f+1>>0]=e>>8;a[f+2>>0]=e>>16;a[f+3>>0]=e>>24;a[b+7>>0]=1;e=1;i=g;return e|0}return 0}function ZI(a){a=a|0;var d=0,e=0,f=0,g=0,h=0;g=i;do if(a){d=c[a>>2]|0;e=c[d>>2]|0;if((e|0)==12|(e|0)==10){d=1;break}else if((e|0)!=1){f=6;break}h=d;e=h&15;if((b[h+312+((e|0)==0?0:16-e|0)+14>>1]|0)==32)if((TI(a)|0)==4){d=1;break}else{f=6;break}else{d=(c[d+268>>2]|0)!=0&1;break}}else f=6;while(0);if((f|0)==6)d=0;i=g;return d|0}function _I(a){a=a|0;if(!a)a=0;else a=(c[a>>2]|0)+8|0;return a|0}function $I(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;e=i;if(!a){i=e;return}a=c[a>>2]|0;g=a;f=g&15;f=b[g+312+((f|0)==0?0:16-f|0)+14>>1]|0;a=a+268|0;if((f&65535)<9|f<<16>>16==32){c[a>>2]=d;i=e;return}else{c[a>>2]=0;i=e;return}}function aJ(a){a=a|0;if(!a)a=0;else a=c[(c[a>>2]|0)+264>>2]|0;return a|0}function bJ(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0;g=i;if(!a){i=g;return}f=(d|0)<256?d:256;f=(f|0)<0?0:f;d=c[a>>2]|0;h=d;a=h&15;if((e[h+312+((a|0)==0?0:16-a|0)+14>>1]|0)>=9){i=g;return}c[d+268>>2]=(f|0)>0&1;c[d+264>>2]=f;d=d+8|0;if(!b){Cga(d|0,-1,f|0)|0;i=g;return}else{Aga(d|0,b|0,f|0)|0;i=g;return}}function cJ(a){a=a|0;var b=0,d=0;b=i;if(!a){a=0;i=b;return a|0}d=c[a>>2]|0;a=d&15;a=c[d+312+((a|0)==0?0:16-a|0)+24>>2]|0;i=b;return a|0}function dJ(a){a=a|0;var b=0,d=0;b=i;if(!a){a=0;i=b;return a|0}d=c[a>>2]|0;a=d&15;a=c[d+312+((a|0)==0?0:16-a|0)+28>>2]|0;i=b;return a|0}function eJ(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;if(!a){i=d;return}e=c[a>>2]|0;a=e&15;c[e+312+((a|0)==0?0:16-a|0)+24>>2]=b;i=d;return}function fJ(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;if(!a){i=d;return}e=c[a>>2]|0;a=e&15;c[e+312+((a|0)==0?0:16-a|0)+28>>2]=b;i=d;return}function gJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;if(!d){b=0;i=l;return b|0}h=c[(c[d>>2]|0)+284>>2]|0;d=c[h+4>>2]|0;j=h+4|0;if(!d){b=0;i=l;return b|0}else{g=j;f=d}a:while(1){d=f;while(1){if((c[d+16>>2]|0)>=(b|0))break;d=c[d+4>>2]|0;if(!d){d=g;break a}}f=c[d>>2]|0;if(!f)break;else g=d}if((d|0)==(j|0)){b=0;i=l;return b|0}if((c[d+16>>2]|0)>(b|0)){b=0;i=l;return b|0}c[k>>2]=b;d=c[(xT(h,k)|0)>>2]|0;if(!d){b=0;i=l;return b|0}f=Afa(4)|0;if(!f){b=0;i=l;return b|0}g=Afa(8)|0;c[f>>2]=g;if(!g){Bfa(f);b=0;i=l;return b|0}else{b=g;j=b;a[j>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;a[j+3>>0]=0;b=b+4|0;a[b>>0]=0;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;c[g>>2]=1;c[g+4>>2]=d;c[e>>2]=c[(c[d>>2]|0)+28>>2];b=f;i=l;return b|0}return 0}function hJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;if(!a){b=0;i=k;return b|0}g=c[a>>2]|0;a=c[g+4>>2]|0;h=c[g>>2]|0;if((h|0)>=(c[a+8>>2]|0)){b=0;i=k;return b|0}d=c[a>>2]|0;f=a+4|0;if((d|0)==(f|0)){b=1;i=k;return b|0}else{a=d;e=0}while(1){if((e|0)==(h|0))break;e=e+1|0;d=c[a+4>>2]|0;if(!d)while(1){d=c[a+8>>2]|0;if((c[d>>2]|0)==(a|0)){a=d;break}else a=d}else{a=d;while(1){d=c[a>>2]|0;if(!d)break;else a=d}}if((a|0)==(f|0)){a=1;j=11;break}}if((j|0)==11){i=k;return a|0}c[b>>2]=c[a+28>>2];c[g>>2]=h+1;b=1;i=k;return b|0}function iJ(a){a=a|0;var b=0,d=0;d=i;if(!a){i=d;return}b=c[a>>2]|0;if(b)Bfa(b);Bfa(a);i=d;return}function jJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;p=q+12|0;o=q;if(!((b|0)!=0&(a|0)!=0)){b=0;i=q;return b|0}n=c[(c[b>>2]|0)+284>>2]|0;m=c[(c[a>>2]|0)+284>>2]|0;d=c[n>>2]|0;n=n+4|0;if((d|0)!=(n|0)){j=m+4|0;k=m+4|0;do{h=c[d+16>>2]|0;c[p>>2]=h;if((h|0)!=9?(l=c[d+20>>2]|0,(l|0)!=0):0){e=c[j>>2]|0;if(e){g=k;f=e;a:while(1){e=f;while(1){if((c[e+16>>2]|0)>=(h|0))break;e=c[e+4>>2]|0;if(!e){e=g;break a}}f=c[e>>2]|0;if(!f)break;else g=e}if((e|0)!=(k|0)?(h|0)>=(c[e+16>>2]|0):0)kJ(h,a,0,0)|0}g=uea(12,378904)|0;if(g){e=g+4|0;c[e>>2]=0;c[g+8>>2]=0;c[g>>2]=e;e=c[l>>2]|0;h=l+4|0;if((e|0)!=(h|0))do{p3(o,e+16|0);f=mL(c[e+28>>2]|0)|0;c[(wT(g,o)|0)>>2]=f;v3(o);f=c[e+4>>2]|0;if(!f)while(1){f=c[e+8>>2]|0;if((c[f>>2]|0)==(e|0)){e=f;break}else e=f}else{e=f;while(1){f=c[e>>2]|0;if(!f)break;else e=f}}}while((e|0)!=(h|0));c[(xT(m,p)|0)>>2]=g}}e=c[d+4>>2]|0;if(!e)while(1){e=c[d+8>>2]|0;if((c[e>>2]|0)==(d|0)){d=e;break}else d=e}else{d=e;while(1){e=c[d>>2]|0;if(!e)break;else d=e}}}while((d|0)!=(n|0))}k=c[b>>2]|0;p=k&15;o=c[a>>2]|0;n=o&15;c[o+312+((n|0)==0?0:16-n|0)+24>>2]=c[k+312+((p|0)==0?0:16-p|0)+24>>2];n=c[b>>2]|0;o=n&15;p=c[a>>2]|0;b=p&15;c[p+312+((b|0)==0?0:16-b|0)+28>>2]=c[n+312+((o|0)==0?0:16-o|0)+28>>2];b=1;i=q;return b|0}function kJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+64|0;p=t;k=t+56|0;n=t+4|0;o=t+16|0;m=t+28|0;l=t+32|0;q=t+44|0;if(!b){s=0;i=t;return s|0}s=c[(c[b>>2]|0)+284>>2]|0;r=s+4|0;b=c[r>>2]|0;h=s+4|0;if(b){g=h;f=b;a:while(1){b=f;while(1){if((c[b+16>>2]|0)>=(a|0))break;b=c[b+4>>2]|0;if(!b){b=g;break a}}f=c[b>>2]|0;if(!f)break;else g=b}if((b|0)!=(h|0)?(c[b+16>>2]|0)<=(a|0):0){h=b;j=c[b+20>>2]|0}else j=0}else j=0;b=(j|0)!=0;if(!d){if(!b){s=1;i=t;return s|0}b=c[j>>2]|0;g=j+4|0;if((b|0)!=(g|0))do{lL(c[b+28>>2]|0);f=c[b+4>>2]|0;if(!f)while(1){f=c[b+8>>2]|0;if((c[f>>2]|0)==(b|0)){b=f;break}else b=f}else{b=f;while(1){f=c[b>>2]|0;if(!f)break;else b=f}}}while((b|0)!=(g|0));uT(j,c[j+4>>2]|0);xea(j);b=c[h+4>>2]|0;if(!b){f=h;while(1){b=c[f+8>>2]|0;if((c[b>>2]|0)==(f|0))break;else f=b}}else while(1){f=c[b>>2]|0;if(!f)break;else b=f}if((c[s>>2]|0)==(h|0))c[s>>2]=b;s=s+8|0;c[s>>2]=(c[s>>2]|0)+-1;zT(c[r>>2]|0,h);xea(h);s=1;i=t;return s|0}if(b)h=j;else{b=uea(12,378904)|0;if(!b)b=0;else{r=b+4|0;c[r>>2]=0;c[b+8>>2]=0;c[b>>2]=r}c[k>>2]=a;c[(xT(s,k)|0)>>2]=b;h=b}if(!e){q3(l,d,Dga(d|0)|0);yT(m,h,l);v3(l);f=h+4|0;b=c[m>>2]|0;if((b|0)==(f|0)){s=1;i=t;return s|0}lL(c[b+28>>2]|0);q3(q,d,Dga(d|0)|0);yT(p,h,q);g=c[p>>2]|0;if((g|0)!=(f|0)){b=c[g+4>>2]|0;if(!b){f=g;while(1){b=c[f+8>>2]|0;if((c[b>>2]|0)==(f|0))break;else f=b}}else while(1){f=c[b>>2]|0;if(!f)break;else b=f}if((c[h>>2]|0)==(g|0))c[h>>2]=b;s=h+8|0;c[s>>2]=(c[s>>2]|0)+-1;zT(c[h+4>>2]|0,g);v3(g+16|0);xea(g)}v3(q);s=1;i=t;return s|0}if(!((nL(e)|0)!=0?(qga(d,nL(e)|0)|0)==0:0))tL(e,d)|0;s=qL(e)|0;s=ea(AL(pL(e)|0)|0,s)|0;if((s|0)!=(rL(e)|0)){c[p>>2]=d;yJ(-1,300944,p);s=0;i=t;return s|0}b=FL()|0;if((a|0)==6)vL(e,(JL(b,21,d)|0)&65535)|0;q3(n,d,Dga(d|0)|0);b=c[(wT(h,n)|0)>>2]|0;v3(n);if(b)lL(b);s=mL(e)|0;q3(o,d,Dga(d|0)|0);c[(wT(h,o)|0)>>2]=s;v3(o);s=1;i=t;return s|0}function lJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;if(!b){a=0;i=j;return a|0}f=c[(c[b>>2]|0)+284>>2]|0;b=c[f+4>>2]|0;g=f+4|0;if(!b){a=0;i=j;return a|0}else{e=g;d=b}a:while(1){b=d;while(1){if((c[b+16>>2]|0)>=(a|0))break;b=c[b+4>>2]|0;if(!b){b=e;break a}}d=c[b>>2]|0;if(!d)break;else e=b}if((b|0)==(g|0)){a=0;i=j;return a|0}if((c[b+16>>2]|0)>(a|0)){a=0;i=j;return a|0}c[h>>2]=a;b=c[(xT(f,h)|0)>>2]|0;if(!b){a=0;i=j;return a|0}a=c[b+8>>2]|0;i=j;return a|0}function mJ(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=i;f=AT(b,307152,453)|0;if((f|0)>-1){a[c>>0]=a[307156+(f<<3)>>0]|0;a[d>>0]=a[307157+(f<<3)>>0]|0;a[e>>0]=a[307158+(f<<3)>>0]|0;b=1;i=g;return b|0}f=a[b>>0]|0;if(((f<<24>>24==71|f<<24>>24==103?(f=a[b+1>>0]|0,f<<24>>24==82|f<<24>>24==114):0)?(f=a[b+2>>0]|0,f<<24>>24==65|f<<24>>24==97|f<<24>>24==69|f<<24>>24==101):0)?(f=a[b+3>>0]|0,f<<24>>24==89|f<<24>>24==121):0){b=~~(+(nga(b+4|0,0,10)|0)*2.55)&255;a[c>>0]=b;a[d>>0]=b;a[e>>0]=a[c>>0]|0;b=1;i=g;return b|0}a[c>>0]=0;a[d>>0]=0;a[e>>0]=0;b=0;i=g;return b|0}function nJ(b){b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;if((EI(b)|0)!=1){h=0;i=k;return h|0}h=HI(b)|0;f=h>>>3;if((h+-24|0)>>>0>15){h=0;i=k;return h|0}g=GI(b)|0;h=OI(b)|0;j=PI(b)|0;b=QI(b)|0;if(!g){h=1;i=k;return h|0}else e=0;while(1){c=b+j|0;if((j|0)>0){d=b;do{m=d+2|0;l=a[m>>0]|0;a[m>>0]=a[d>>0]|0;a[d>>0]=l;d=d+f|0}while(d>>>0>>0)}e=e+1|0;if((e|0)==(g|0)){b=1;break}else b=b+h|0}i=k;return b|0}function oJ(c){c=c|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;q=i;if(!(II(c)|0)){p=0;i=q;return p|0}f=EI(c)|0;g=HI(c)|0;if((f+-9|0)>>>0>=2)if((f|0)==1&g>>>0>23)g=1;else{p=0;i=q;return p|0}else g=2;o=FI(c)|0;p=GI(c)|0;h=$J(c,0)|0;n=OI(c)|0;l=((((PI(c)|0)>>>0)/(o>>>0)|0)>>>0)/(g>>>0)|0;m=l>>>0>3;f=(p|0)==0;if((g|0)==2){if(f|(o|0)==0){p=1;i=q;return p|0}else{f=0;k=0}while(1){if(m){g=h;c=0;while(1){s=g+6|0;f=b[s>>1]|0;b[s>>1]=-1;s=g+2|0;j=g+4|0;r=f&65535^65535;u=ea((e[g>>1]|0)^65535,r)|0;t=ea((e[s>>1]|0)^65535,r)|0;r=ea((e[j>>1]|0)^65535,r)|0;b[g>>1]=u>>>0>4294901759?-1:((u>>>0)/65535|0)&65535;b[s>>1]=t>>>0>4294901759?-1:((t>>>0)/65535|0)&65535;b[j>>1]=r>>>0>4294901759?-1:((r>>>0)/65535|0)&65535;c=c+1|0;if((c|0)==(o|0))break;else g=g+(l<<1)|0}}else{g=f&65535^65535;c=h;j=0;while(1){s=c+2|0;u=c+4|0;v=ea((e[c>>1]|0)^65535,g)|0;r=ea((e[s>>1]|0)^65535,g)|0;t=ea((e[u>>1]|0)^65535,g)|0;b[c>>1]=v>>>0>4294901759?-1:((v>>>0)/65535|0)&65535;b[s>>1]=r>>>0>4294901759?-1:((r>>>0)/65535|0)&65535;b[u>>1]=t>>>0>4294901759?-1:((t>>>0)/65535|0)&65535;j=j+1|0;if((j|0)==(o|0))break;else c=c+(l<<1)|0}}k=k+1|0;if((k|0)==(p|0)){f=1;break}else h=h+n|0}i=q;return f|0}if(f){v=1;i=q;return v|0}k=(o|0)==0;f=0;j=0;while(1){if(!k){g=h;c=0;while(1){if(m){v=g+3|0;f=a[v>>0]|0;a[v>>0]=-1}u=g+1|0;s=g+2|0;v=f&255^255;r=ea((d[g>>0]|0)^255,v)|0;t=ea((d[u>>0]|0)^255,v)|0;v=ea((d[s>>0]|0)^255,v)|0;a[s>>0]=r>>>0>65279?-1:((r>>>0)/255|0)&255;a[u>>0]=t>>>0>65279?-1:((t>>>0)/255|0)&255;a[g>>0]=v>>>0>65279?-1:((v>>>0)/255|0)&255;c=c+1|0;if((c|0)==(o|0))break;else g=g+l|0}}j=j+1|0;if((j|0)==(p|0)){f=1;break}else h=h+n|0}i=q;return f|0}function pJ(c){c=c|0;var f=0,g=0,h=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;if(!(II(c)|0)){x=0;i=y;return x|0}f=EI(c)|0;g=HI(c)|0;if((f+-9|0)>>>0>=2)if((f|0)==1&g>>>0>23)g=1;else{x=0;i=y;return x|0}else g=2;w=FI(c)|0;x=GI(c)|0;h=$J(c,0)|0;v=OI(c)|0;u=((((PI(c)|0)>>>0)/(w>>>0)|0)>>>0)/(g>>>0)|0;f=(x|0)==0;if((g|0)==1){if(f){x=1;i=y;return x|0}t=(w|0)==0;s=0;while(1){if(!t){q=h;r=0;while(1){o=q+1|0;p=q+2|0;k=(+(d[q>>0]|0|0)*.3921568691730499+16.0)/116.0;l=k+(+(d[o>>0]|0|0)*1.003921627998352+-128.0)/500.0;n=k-(+(d[p>>0]|0|0)*1.003921627998352+-128.0)/200.0;j=+V(+k,3.0);if(j>.008856000378727913)m=j;else m=(k+-.13793103396892548)/7.7870001792907715;k=+V(+l,3.0);if(!(k>.008856000378727913))k=(l+-.13793103396892548)/7.7870001792907715;j=+V(+n,3.0);if(!(j>.008856000378727913))j=(n+-.13793103396892548)/7.7870001792907715;n=k*95.0469970703125/100.0;m=m*100.0/100.0;l=j*108.88300323486328/100.0;j=n*3.240600109100342+m*-1.5371999740600586+l*-.4986000061035156;k=n*-.9689000248908997+m*1.8758000135421753+l*.04149999842047691;l=n*.05570000037550926+m*-.20399999618530273+l*1.0570000410079956;if(j>3.1308000907301903e-003)j=+V(+j,.4166666567325592)*1.0549999475479126+-.054999999701976776;else j=j*12.920000076293945;if(k>3.1308000907301903e-003)k=+V(+k,.4166666567325592)*1.0549999475479126+-.054999999701976776;else k=k*12.920000076293945;if(l>3.1308000907301903e-003)l=+V(+l,.4166666567325592)*1.0549999475479126+-.054999999701976776;else l=l*12.920000076293945;j=j*255.0;if(j<0.0)c=0;else c=j>255.0?-1:~~j&255;j=k*255.0;if(j<0.0)g=0;else g=j>255.0?-1:~~j&255;j=l*255.0;if(j<0.0)f=0;else f=j>255.0?-1:~~j&255;a[p>>0]=c;a[o>>0]=g;a[q>>0]=f;r=r+1|0;if((r|0)==(w|0))break;else q=q+u|0}}s=s+1|0;if((s|0)==(x|0)){f=1;break}else h=h+v|0}i=y;return f|0}if(f){x=1;i=y;return x|0}t=(w|0)==0;s=0;while(1){if(!t){q=h;r=0;while(1){o=q+2|0;p=q+4|0;j=(+(e[q>>1]|0|0)*1.5259021893143654e-003+16.0)/116.0;l=j+(+(e[o>>1]|0|0)*.003906309604644775+-128.0)/500.0;m=j-(+(e[p>>1]|0|0)*.003906309604644775+-128.0)/200.0;k=+V(+j,3.0);if(!(k>.008856000378727913))k=(j+-.13793103396892548)/7.7870001792907715;j=+V(+l,3.0);if(j>.008856000378727913)l=j;else l=(l+-.13793103396892548)/7.7870001792907715;j=+V(+m,3.0);if(!(j>.008856000378727913))j=(m+-.13793103396892548)/7.7870001792907715;n=l*95.0469970703125/100.0;m=k*100.0/100.0;l=j*108.88300323486328/100.0;j=n*3.240600109100342+m*-1.5371999740600586+l*-.4986000061035156;k=n*-.9689000248908997+m*1.8758000135421753+l*.04149999842047691;l=n*.05570000037550926+m*-.20399999618530273+l*1.0570000410079956;if(j>3.1308000907301903e-003)j=+V(+j,.4166666567325592)*1.0549999475479126+-.054999999701976776;else j=j*12.920000076293945;if(k>3.1308000907301903e-003)k=+V(+k,.4166666567325592)*1.0549999475479126+-.054999999701976776;else k=k*12.920000076293945;if(l>3.1308000907301903e-003)l=+V(+l,.4166666567325592)*1.0549999475479126+-.054999999701976776;else l=l*12.920000076293945;j=j*65535.0;if(j<0.0)c=0;else c=j>65535.0?-1:~~j&65535;j=k*65535.0;if(j<0.0)g=0;else g=j>65535.0?-1:~~j&65535;j=l*65535.0;if(j<0.0)f=0;else f=j>65535.0?-1:~~j&65535;b[q>>1]=c;b[o>>1]=g;b[p>>1]=f;r=r+1|0;if((r|0)==(w|0))break;else q=q+(u<<1)|0}}s=s+1|0;if((s|0)==(x|0)){f=1;break}else h=h+v|0}i=y;return f|0}function qJ(a){a=a|0;var b=0,c=0;c=i;do if(II(a)|0){b=EI(a)|0;if((b|0)==12){b=sc(a|0)|0;break}else if((b|0)==10){b=wJ(a)|0;break}else if((b|0)==1){if((HI(a)|0)!=32){b=0;break}b=uJ(a)|0;break}else{b=0;break}}else b=0;while(0);i=c;return b|0}function rJ(b){b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;if(!(II(b)|0)){p=0;i=q;return p|0}g=EI(b)|0;if((g+-1|0)>>>0>1){p=0;i=q;return p|0}h=HI(b)|0;a:do if((h|0)!=8){o=FI(b)|0;p=GI(b)|0;f=yI(o,p,8,0,0,0)|0;if(!f){p=0;i=q;return p|0}jJ(f,b)|0;l=VI(f)|0;j=TI(b)|0;if((g|0)==2){k=OI(b)|0;m=OI(f)|0;j=QI(b)|0;g=QI(f)|0;if((p|0)==0|(o|0)==0){p=f;i=q;return p|0}else l=0;while(1){h=0;do{a[g+h>>0]=(e[j+(h<<1)>>1]|0)>>>8;h=h+1|0}while((h|0)!=(o|0));l=l+1|0;if((l|0)==(p|0))break;else{g=g+m|0;j=j+k|0}}i=q;return f|0}else if((g|0)!=1)break;switch(h|0){case 1:{if(!j){g=0;h=16777215;while(1){c[l+(g<<2)>>2]=h;g=g+1|0;if((g|0)==256)break;else h=h+-65793|0}}else if((j|0)==3){k=VI(b)|0;m=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24;a[l>>0]=m;a[l+1>>0]=m>>8;a[l+2>>0]=m>>16;a[l+3>>0]=m>>24;m=l+1020|0;k=k+4|0;k=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24;a[m>>0]=k;a[m+1>>0]=k>>8;a[m+2>>0]=k>>16;a[m+3>>0]=k>>24}if(!p){p=f;i=q;return p|0}if(!o){g=0;do{$J(f,g)|0;$J(b,g)|0;g=g+1|0}while((g|0)!=(p|0));i=q;return f|0}else k=0;do{j=$J(f,k)|0;g=$J(b,k)|0;h=0;do{a[j+h>>0]=(((d[g+(h>>>3)>>0]|0)&128>>>(h&7)|0)!=0)<<31>>31;h=h+1|0}while((h|0)!=(o|0));k=k+1|0}while((k|0)!=(p|0));i=q;return f|0}case 4:{if((j|0)==3){g=l+0|0;h=(VI(b)|0)+0|0;j=g+64|0;do{a[g>>0]=a[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(j|0))}if(!p){p=f;i=q;return p|0}if(!o){g=0;do{$J(f,g)|0;$J(b,g)|0;g=g+1|0}while((g|0)!=(p|0));i=q;return f|0}else n=0;do{l=$J(f,n)|0;k=$J(b,n)|0;m=0;j=0;g=1;while(1){h=(g|0)!=0;g=a[k+j>>0]|0;if(h)a[l+m>>0]=(g&255)>>>4;else{a[l+m>>0]=g&15;j=j+1|0}m=m+1|0;if((m|0)==(o|0))break;else g=h&1^1}n=n+1|0}while((n|0)!=(p|0));i=q;return f|0}case 24:{if(!p){p=f;i=q;return p|0}l=(o|0)==0;k=0;do{h=$J(f,k)|0;j=$J(b,k)|0;if(!l){g=0;while(1){a[h+g>>0]=~~(+(d[j+2>>0]|0|0)*.2125999927520752+ +(d[j+1>>0]|0|0)*.7152000069618225+ +(d[j>>0]|0|0)*.0722000002861023+.5);g=g+1|0;if((g|0)==(o|0))break;else j=j+3|0}}k=k+1|0}while((k|0)!=(p|0));i=q;return f|0}case 32:{if(!p){p=f;i=q;return p|0}h=(o|0)==0;k=0;do{l=$J(f,k)|0;j=$J(b,k)|0;if(!h){g=0;while(1){a[l+g>>0]=~~(+(d[j+2>>0]|0|0)*.2125999927520752+ +(d[j+1>>0]|0|0)*.7152000069618225+ +(d[j>>0]|0|0)*.0722000002861023+.5);g=g+1|0;if((g|0)==(o|0))break;else j=j+4|0}}k=k+1|0}while((k|0)!=(p|0));i=q;return f|0}case 16:{if(((JI(b)|0)==63488?(KI(b)|0)==2016:0)?(LI(b)|0)==31:0){if(!p){p=f;i=q;return p|0}j=(o|0)==0;l=0;do{g=$J(f,l)|0;h=$J(b,l)|0;if(!j){k=0;do{m=e[h+(k<<1)>>1]|0;a[g+k>>0]=~~(+((m>>>11)*255|0)*.2125999927520752/31.0+ +((m>>>5&63)*255|0)*.7152000069618225/63.0+ +((m&31)*255|0)*.0722000002861023/31.0+.5);k=k+1|0}while((k|0)!=(o|0))}l=l+1|0}while((l|0)!=(p|0));i=q;return f|0}if(!p){p=f;i=q;return p|0}g=(o|0)==0;l=0;do{h=$J(f,l)|0;j=$J(b,l)|0;if(!g){k=0;do{m=e[j+(k<<1)>>1]|0;a[h+k>>0]=~~(+((m>>>10&31)*255|0)*.2125999927520752/31.0+ +((m>>>5&31)*255|0)*.7152000069618225/31.0+ +((m&31)*255|0)*.0722000002861023/31.0+.5);k=k+1|0}while((k|0)!=(o|0))}l=l+1|0}while((l|0)!=(p|0));i=q;return f|0}default:break a}}while(0);p=DI(b)|0;i=q;return p|0}function sJ(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0,h=0,j=0;h=i;if((e|0)>0)g=0;else{i=h;return}while(1){j=c+g|0;a[b>>0]=a[f+((d[j>>0]|0)<<2)>>0]|0;a[b+1>>0]=a[f+((d[j>>0]|0)<<2)+1>>0]|0;a[b+2>>0]=a[f+((d[j>>0]|0)<<2)+2>>0]|0;g=g+1|0;if((g|0)==(e|0))break;else b=b+3|0}i=h;return}function tJ(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;f=i;if((d|0)>0)e=0;else{i=f;return}while(1){a[b>>0]=a[c>>0]|0;a[b+1>>0]=a[c+1>>0]|0;a[b+2>>0]=a[c+2>>0]|0;e=e+1|0;if((e|0)==(d|0))break;else{c=c+4|0;b=b+3|0}}i=f;return} +function QM(f,j,l){f=f|0;j=j|0;l=l|0;var m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;ca=i;i=i+80|0;ba=ca+24|0;p=ca+64|0;R=ca+60|0;U=ca+69|0;V=ca+68|0;W=ca+66|0;X=ca+56|0;Y=ca+48|0;Z=ca+52|0;_=ca+8|0;$=ca;S=ca+44|0;T=ca+16|0;n=f+40|0;P=kw(f,j,0)|0;if(!P){j=0;i=ca;return j|0}t=(b[P+24>>1]|0)==65;m=t?0:j;a:do if((m|0)==32996){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;m=m&65535;if((m|0)==3)m=3;else if((m|0)==2)m=1;else if((m|0)==1)m=2;else if(!m)m=4;else{aa=223;break a}b[f+86>>1]=m;m=1;aa=219}else if((m|0)==339){m=c[l>>2]|0;p=c[m>>2]|0;c[l>>2]=m+4;m=p&65535;if((m+-1|0)>>>0<=5){n=p&65535;b[f+86>>1]=n;if(((m|0)==5?(b[f+84>>1]|0)==32:0)?(u=f+652|0,(c[u>>2]|0)==64):0){c[u>>2]=62;m=1;aa=219;break a}if(((n+-5<<16>>16&65535)<2?(b[f+84>>1]|0)==64:0)?(r=f+652|0,(c[r>>2]|0)==65):0){c[r>>2]=64;m=1;aa=219}else{m=1;aa=219}}else aa=223}else if((m|0)==301){m=((e[f+98>>1]|0)-(e[f+156>>1]|0)|0)>1?3:1;p=f+84|0;t=0;do{n=f+(t<<2)+200|0;r=c[l>>2]|0;q=c[r>>2]|0;c[l>>2]=r+4;r=1<>1];s=c[n>>2]|0;if(s){KK(s);c[n>>2]=0}if(((q|0)!=0?(I=r<<1,(r&2147483647|0)==(r|0)):0)?(J=JK(I)|0,c[n>>2]=J,(J|0)!=0):0)NK(J,q,I);t=t+1|0}while((t|0)!=(m|0));m=1;aa=219}else if((m|0)==32997){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;c[f+64>>2]=m;m=1;aa=219}else if((m|0)==333){t=c[l>>2]|0;m=c[t>>2]|0;c[l>>2]=t+4;m=m&65535;t=c[l>>2]|0;r=c[t>>2]|0;c[l>>2]=t+4;t=b[f+98>>1]|0;b:do if(!m)m=t;else{n=r+m|0;if(!(t<<16>>16)){m=0;break a}else{p=r;m=t}do{do{if(p>>>0>=n>>>0)break b;l=p;p=p+1|0}while((a[l>>0]|0)!=0);m=m+-1<<16>>16}while(m<<16>>16!=0);q=p-r|0;l=(p|0)!=(r|0);m=l&1;if(!l){m=0;break a}p=f+220|0;n=c[p>>2]|0;if(n){KK(n);c[p>>2]=0}if((r|0)!=0?(M=JK(q)|0,c[p>>2]=M,(M|0)!=0):0)NK(M,r,q);c[f+216>>2]=q;aa=219;break a}while(0);j=c[f+628>>2]|0;l=t&65535;c[ba>>2]=c[f>>2];c[ba+4>>2]=l;c[ba+8>>2]=l-(m&65535);Dw(j,102136,102152,ba);m=0}else if((m|0)==531){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[f+196>>1]=m;m=1;aa=219}else if((m|0)==330){if(c[f+12>>2]&8192){m=c[f+628>>2]|0;c[ba>>2]=c[f>>2];Dw(m,101952,101792,ba);m=0;break a}m=c[l>>2]|0;n=c[m>>2]|0;c[l>>2]=m+4;m=f+184|0;b[m>>1]=n;n=f+188|0;p=c[l>>2]|0;q=c[p>>2]|0;c[l>>2]=p+4;m=e[m>>1]|0;p=c[n>>2]|0;if(p){KK(p);c[n>>2]=0}if((q|0)!=0?(y=m<<3,z=JK(y)|0,c[n>>2]=z,(z|0)!=0):0){NK(z,q,y);m=1;aa=219}else{m=1;aa=219}}else if((m|0)==532){p=f+212|0;m=c[l>>2]|0;n=c[m>>2]|0;c[l>>2]=m+4;m=c[p>>2]|0;if(m){KK(m);c[p>>2]=0}if((n|0)!=0?(q=JK(24)|0,c[p>>2]=q,(q|0)!=0):0){NK(q,n,24);m=1;aa=219}else{m=1;aa=219}}else if((m|0)==530){m=c[l>>2]|0;aa=c[m>>2]|0;c[l>>2]=m+4;b[f+192>>1]=aa;aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[f+194>>1]=m;m=1;aa=219}else if((m|0)==65563){m=c[l>>2]|0;ba=c[m>>2]|0;c[l>>2]=m+4;m=f+12|0;n=c[m>>2]|0;if((ba&65535|0)==1){c[m>>2]=n|4194304;m=1;aa=219;break a}else{c[m>>2]=n&-4194305;m=1;aa=219;break a}}else if((m|0)==263){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[f+92>>1]=m;m=1;aa=219}else if((m|0)==281){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[f+106>>1]=m;m=1;aa=219}else if((m|0)==284){m=c[l>>2]|0;n=c[m>>2]|0;c[l>>2]=m+4;m=n&65535;if((m+-1|0)>>>0>1)aa=223;else{b[f+126>>1]=n;m=1;aa=219}}else if((m|0)==286){m=c[l>>2]|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];o=+h[k>>3];c[l>>2]=m+8;g[f+128>>2]=o;m=1;aa=219}else if((m|0)==287){m=c[l>>2]|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];o=+h[k>>3];c[l>>2]=m+8;g[f+132>>2]=o;m=1;aa=219}else if((m|0)==277){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;if(!(m&65535)){m=0;aa=223}else{b[f+98>>1]=m;m=1;aa=219}}else if((m|0)==257){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;c[f+60>>2]=m;m=1;aa=219}else if((m|0)==278){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;if(m){c[f+100>>2]=m;if(!(c[n>>2]&4)){c[f+72>>2]=m;c[f+68>>2]=c[f+56>>2];m=1;aa=219}else{m=1;aa=219}}else{m=0;aa=226}}else if((m|0)==280){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[f+104>>1]=m;m=1;aa=219}else if((m|0)==340){t=f+108|0;if(!(c[f+12>>2]&4194304)){n=c[l>>2]|0;c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];o=+h[k>>3];c[l>>2]=n+8;n=b[f+98>>1]|0;m=n&65535;p=c[t>>2]|0;if(p)KK(p);p=JK(m<<3)|0;c[t>>2]=p;if((p|0)==0|n<<16>>16==0){m=1;aa=219;break a}while(1){m=m+-1|0;h[p+(m<<3)>>3]=o;if(!m){m=1;aa=219;break a}}}m=c[l>>2]|0;n=c[m>>2]|0;c[l>>2]=m+4;m=e[f+98>>1]|0;p=c[t>>2]|0;if(p){KK(p);c[t>>2]=0}if((n|0)!=0?(A=m<<3,B=JK(A)|0,c[t>>2]=B,(B|0)!=0):0){NK(B,n,A);m=1;aa=219}else{m=1;aa=219}}else if((m|0)==274){m=c[l>>2]|0;n=c[m>>2]|0;c[l>>2]=m+4;m=n&65535;if((m+-1|0)>>>0>7)aa=223;else{b[f+96>>1]=n;m=1;aa=219}}else if((m|0)==259){m=c[l>>2]|0;p=c[m>>2]|0;c[l>>2]=m+4;m=p&65535;if(c[n>>2]&128){if((b[f+88>>1]|0)==(p&65535)<<16>>16){m=1;aa=219;break a}Id[c[f+564>>2]&511](f);l=f+12|0;c[l>>2]=c[l>>2]&-33}m=Uv(f,m)|0;if(!m)m=0;else{b[f+88>>1]=p;aa=219}}else if((m|0)==262){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[f+90>>1]=m;m=1;aa=219}else if((m|0)==254){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;c[f+80>>2]=m;m=1;aa=219}else if((m|0)==266){m=c[l>>2]|0;n=c[m>>2]|0;c[l>>2]=m+4;m=n&65535;if((m+-1|0)>>>0>1)aa=223;else{b[f+94>>1]=n;m=1;aa=219}}else if((m|0)==282){aa=c[l>>2]|0;c[k>>2]=c[aa>>2];c[k+4>>2]=c[aa+4>>2];o=+h[k>>3];c[l>>2]=aa+8;if(o<0.0)aa=229;else{g[f+116>>2]=o;m=1;aa=219}}else if((m|0)==256){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;c[f+56>>2]=m;m=1;aa=219}else if((m|0)==341){t=f+112|0;if(!(c[f+12>>2]&4194304)){n=c[l>>2]|0;c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];o=+h[k>>3];c[l>>2]=n+8;n=b[f+98>>1]|0;m=n&65535;p=c[t>>2]|0;if(p)KK(p);p=JK(m<<3)|0;c[t>>2]=p;if((p|0)==0|n<<16>>16==0){m=1;aa=219;break a}while(1){m=m+-1|0;h[p+(m<<3)>>3]=o;if(!m){m=1;aa=219;break a}}}m=c[l>>2]|0;n=c[m>>2]|0;c[l>>2]=m+4;m=e[f+98>>1]|0;p=c[t>>2]|0;if(p){KK(p);c[t>>2]=0}if((n|0)!=0?(s=m<<3,v=JK(s)|0,c[t>>2]=v,(v|0)!=0):0){NK(v,n,s);m=1;aa=219}else{m=1;aa=219}}else if((m|0)==258){ba=c[l>>2]|0;m=c[ba>>2]|0;c[l>>2]=ba+4;b[f+84>>1]=m;if(!(c[f+12>>2]&128)){m=1;aa=219}else switch(m&65535|0){case 24:{c[f+652>>2]=63;m=1;aa=219;break a}case 64:{c[f+652>>2]=65;m=1;aa=219;break a}case 32:{c[f+652>>2]=64;m=1;aa=219;break a}case 128:{c[f+652>>2]=65;m=1;aa=219;break a}case 8:{c[f+652>>2]=37;m=1;aa=219;break a}case 16:{c[f+652>>2]=62;m=1;aa=219;break a}default:{m=1;aa=219;break a}}}else if((m|0)==283){aa=c[l>>2]|0;c[k>>2]=c[aa>>2];c[k+4>>2]=c[aa+4>>2];o=+h[k>>3];c[l>>2]=aa+8;if(o<0.0)aa=229;else{g[f+120>>2]=o;m=1;aa=219}}else if((m|0)==323){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;if(m&15){if(c[f+8>>2]|0){aa=226;break a}aa=c[f+628>>2]|0;l=c[f>>2]|0;c[ba>>2]=m;Zx(aa,l,101744,ba)}c[f+72>>2]=m;m=f+12|0;c[m>>2]=c[m>>2]|1024;m=1;aa=219}else if((m|0)==338){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;m=m&65535;if(m>>>0<=(e[f+98>>1]|0)>>>0?(F=c[l>>2]|0,E=c[F>>2]|0,c[l>>2]=F+4,F=(E|0)==0,!((m|0)!=0&F)):0){if(!m)m=0;else{q=0;do{p=E+(q<<1)|0;n=b[p>>1]|0;if((n&65535)>2){if(n<<16>>16!=999){aa=223;break a}b[p>>1]=2}q=q+1|0}while(q>>>0>>0)}b[f+156>>1]=m;p=f+160|0;n=c[p>>2]|0;if(n){KK(n);c[p>>2]=0}if(!F?(G=m<<1,H=JK(G)|0,c[p>>2]=H,(H|0)!=0):0){NK(H,E,G);m=1;aa=219}else{m=1;aa=219}}else aa=223}else if((m|0)==32995){aa=c[l>>2]|0;ba=c[aa>>2]|0;c[l>>2]=aa+4;l=(ba&65535|0)!=0;b[f+156>>1]=l&1;if(l){b[p>>1]=1;n=f+160|0;m=c[n>>2]|0;if(m){KK(m);c[n>>2]=0}m=JK(2)|0;c[n>>2]=m;if(m){NK(m,p,2);m=1;aa=219}else{m=1;aa=219}}else{m=1;aa=219}}else if((m|0)==322){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;if(m&15){if(c[f+8>>2]|0){aa=226;break a}aa=c[f+628>>2]|0;l=c[f>>2]|0;c[ba>>2]=m;Zx(aa,l,101704,ba)}c[f+68>>2]=m;m=f+12|0;c[m>>2]=c[m>>2]|1024;m=1;aa=219}else if((m|0)==321){m=c[l>>2]|0;aa=c[m>>2]|0;c[l>>2]=m+4;b[f+152>>1]=aa;aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[f+154>>1]=m;m=1;aa=219}else if((m|0)==32998){aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;if(!m){m=0;aa=226}else{c[f+76>>2]=m;m=1;aa=219}}else if((m|0)==320){r=1<>1];m=f+140|0;p=c[l>>2]|0;t=c[p>>2]|0;c[l>>2]=p+4;p=c[m>>2]|0;if(p){KK(p);c[m>>2]=0}if(((t|0)!=0?(w=r<<1,(r&2147483647|0)==(r|0)):0)?(x=JK(w)|0,c[m>>2]=x,(x|0)!=0):0)NK(x,t,w);m=f+144|0;n=c[l>>2]|0;p=c[n>>2]|0;c[l>>2]=n+4;n=c[m>>2]|0;if(n){KK(n);c[m>>2]=0}if(((p|0)!=0?(C=r<<1,(r&2147483647|0)==(r|0)):0)?(D=JK(C)|0,c[m>>2]=D,(D|0)!=0):0)NK(D,p,C);p=f+148|0;m=c[l>>2]|0;n=c[m>>2]|0;c[l>>2]=m+4;m=c[p>>2]|0;if(m){KK(m);c[p>>2]=0}if(((n|0)!=0?(K=r<<1,(r&2147483647|0)==(r|0)):0)?(L=JK(K)|0,c[p>>2]=L,(L|0)!=0):0){NK(L,n,K);m=1;aa=219}else{m=1;aa=219}}else if((m|0)==297){m=c[l>>2]|0;aa=c[m>>2]|0;c[l>>2]=m+4;b[f+136>>1]=aa;aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[f+138>>1]=m;m=1;aa=219}else if((m|0)==296){m=c[l>>2]|0;n=c[m>>2]|0;c[l>>2]=m+4;m=n&65535;if((m+-1|0)>>>0>2)aa=223;else{b[f+124>>1]=n;m=1;aa=219}}else{if(!t){m=c[f+628>>2]|0;l=c[P+28>>2]|0;c[ba>>2]=c[f>>2];c[ba+4>>2]=j>>>0>65535?101656:101664;c[ba+8>>2]=l;Dw(m,101952,101608,ba);m=0;break a}q=f+224|0;m=c[q>>2]|0;s=f+228|0;c:do if((m|0)>0){t=c[s>>2]|0;n=0;while(1){r=t+(n*12|0)|0;p=n+1|0;if((c[c[r>>2]>>2]|0)==(j|0))break;if((p|0)<(m|0))n=p;else{aa=173;break c}}m=t+(n*12|0)+8|0;t=c[m>>2]|0;if(t){KK(t);c[m>>2]=0;break}if(!r){m=c[q>>2]|0;aa=173}}else aa=173;while(0);do if((aa|0)==173){m=m+1|0;c[q>>2]=m;m=LK(c[s>>2]|0,m*12|0)|0;if(!m){m=c[f+628>>2]|0;c[ba>>2]=c[f>>2];Dw(m,101952,101824,ba);m=0;break a}else{c[s>>2]=m;M=(c[q>>2]|0)+-1|0;r=m+(M*12|0)|0;c[r>>2]=P;c[m+(M*12|0)+8>>2]=0;c[m+(M*12|0)+4>>2]=0;break}}while(0);q=P+8|0;s=mw(c[q>>2]|0)|0;if(!s){m=c[f+628>>2]|0;l=c[q>>2]|0;j=c[P+28>>2]|0;c[ba>>2]=c[f>>2];c[ba+4>>2]=l;c[ba+8>>2]=j;Dw(m,101952,101880,ba);m=0;break a}u=P+27|0;p=(a[u>>0]|0)!=0;if((c[q>>2]|0)==2){do if(p)if((b[P+6>>1]|0)==-3){ba=c[l>>2]|0;N=c[ba>>2]|0;c[l>>2]=ba+4;ba=c[l>>2]|0;O=c[ba>>2]|0;c[l>>2]=ba+4;break}else Sa(101912,101352,529,101952);else{N=c[l>>2]|0;O=c[N>>2]|0;c[l>>2]=N+4;N=(Dga(O|0)|0)+1|0}while(0);c[r+4>>2]=N;p=r+8|0;m=c[p>>2]|0;if(m){KK(m);c[p>>2]=0}if(!O){m=1;aa=219;break a}m=JK(N)|0;c[p>>2]=m;if(!m){m=1;aa=219;break a}NK(m,O,N);m=1;aa=219;break a}n=P+6|0;t=b[n>>1]|0;m=t<<16>>16;do if(!p)if(t<<16>>16==-3|t<<16>>16==-1){c[r+4>>2]=1;m=1;break}else if(t<<16>>16==-2){m=e[f+98>>1]|0;c[r+4>>2]=m;aa=195;break}else{c[r+4>>2]=m;aa=195;break}else{aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;c[r+4>>2]=m;aa=195}while(0);if((aa|0)==195)if(!m){m=c[f+628>>2]|0;V=c[P+28>>2]|0;W=c[q>>2]|0;l=b[n>>1]|0;j=d[u>>0]|0;c[ba>>2]=c[f>>2];c[ba+4>>2]=V;c[ba+8>>2]=W;c[ba+12>>2]=l;c[ba+16>>2]=j;Dw(m,101952,101968,ba);m=0;break a}p=r+4|0;t=Av(f,m,s,102032)|0;m=r+8|0;c[m>>2]=t;if(!t)m=0;else{if((c[P>>2]|0)==336?(qga(c[P+28>>2]|0,101672)|0)==0:0){aa=c[l>>2]|0;ba=c[aa>>2]|0;c[l>>2]=aa+4;b[R>>1]=ba;ba=c[l>>2]|0;aa=c[ba>>2]|0;c[l>>2]=ba+4;b[R+2>>1]=aa;NK(c[m>>2]|0,R,4);m=1;aa=219;break a}if(((a[u>>0]|0)==0?(e[n>>1]|0)<=65532:0)?(Q=c[p>>2]|0,(Q|0)<=1):0){if((Q|0)!=1)Sa(101688,101352,597,101952);do switch(c[q>>2]|0){case 6:{aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;a[V>>0]=m;NK(t,V,s);m=1;aa=219;break a}case 8:{aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[X>>1]=m;NK(t,X,s);m=1;aa=219;break a}case 13:case 4:{aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;c[Y>>2]=m;NK(t,Y,s);m=1;aa=219;break a}case 18:case 16:{m=c[l>>2]|0;aa=m;ba=c[aa>>2]|0;aa=c[aa+4>>2]|0;c[l>>2]=m+8;m=_;c[m>>2]=ba;c[m+4>>2]=aa;NK(t,_,s);m=1;aa=219;break a}case 3:{aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;b[W>>1]=m;NK(t,W,s);m=1;aa=219;break a}case 9:{aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;c[Z>>2]=m;NK(t,Z,s);m=1;aa=219;break a}case 17:{m=c[l>>2]|0;aa=m;ba=c[aa>>2]|0;aa=c[aa+4>>2]|0;c[l>>2]=m+8;m=$;c[m>>2]=ba;c[m+4>>2]=aa;NK(t,$,s);m=1;aa=219;break a}case 12:{m=c[l>>2]|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];o=+h[k>>3];c[l>>2]=m+8;h[T>>3]=o;NK(t,T,s);m=1;aa=219;break a}case 7:case 1:{aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;a[U>>0]=m;NK(t,U,s);m=1;aa=219;break a}case 11:case 10:case 5:{m=c[l>>2]|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];o=+h[k>>3];c[l>>2]=m+8;g[S>>2]=o;NK(t,S,s);m=1;aa=219;break a}default:{MK(t,0,s);m=0;break a}}while(0)}aa=c[l>>2]|0;m=c[aa>>2]|0;c[l>>2]=aa+4;NK(t,m,ea(c[p>>2]|0,s)|0);m=1;aa=219}}while(0);if((aa|0)==219){n=nw(f,j)|0;if(n){l=b[n+24>>1]|0;j=f+(((l&65535)>>>5&65535)<<2)+40|0;c[j>>2]=1<<(l&31)|c[j>>2]}j=f+12|0;c[j>>2]=c[j>>2]|8}else if((aa|0)==223){n=nw(f,j)|0;p=c[f+628>>2]|0;if(!n)n=102096;else n=c[n+28>>2]|0;c[ba>>2]=c[f>>2];c[ba+4>>2]=m;c[ba+8>>2]=n;Dw(p,101952,102064,ba);j=0;i=ca;return j|0}else if((aa|0)==226){n=nw(f,j)|0;p=c[f+628>>2]|0;if(!n)n=102096;else n=c[n+28>>2]|0;c[ba>>2]=c[f>>2];c[ba+4>>2]=m;c[ba+8>>2]=n;Dw(p,101952,102064,ba);j=0;i=ca;return j|0}else if((aa|0)==229){m=nw(f,j)|0;p=c[f+628>>2]|0;if(!m)m=102096;else m=c[m+28>>2]|0;c[ba>>2]=c[f>>2];j=ba+4|0;h[k>>3]=o;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[ba+12>>2]=m;Dw(p,101952,102104,ba);j=0;i=ca;return j|0}j=m;i=ca;return j|0}function RM(d,f,j){d=d|0;f=f|0;j=j|0;var k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=i;i=i+16|0;n=r;p=kw(d,f,0)|0;if(!p){o=0;i=r;return o|0}m=(b[p+24>>1]|0)==65;k=m?0:f;do if((k|0)==254){d=c[d+80>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==266){d=b[d+94>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==340){n=c[d+108>>2]|0;if(c[d+12>>2]&4194304){d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;c[o>>2]=n;o=1;i=r;return o|0}l=+h[n>>3];k=b[d+98>>1]|0;if((k&65535)>1){m=1;do{s=+h[n+(m<<3)>>3];l=s>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;h[o>>3]=l;o=1;i=r;return o|0}else if((k|0)==287){s=+g[d+132>>2];d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;g[o>>2]=s;o=1;i=r;return o|0}else if((k|0)==32998){d=c[d+76>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==278){d=c[d+100>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==341){n=c[d+112>>2]|0;if(c[d+12>>2]&4194304){d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;c[o>>2]=n;o=1;i=r;return o|0}l=+h[n>>3];k=b[d+98>>1]|0;if((k&65535)>1){m=1;do{s=+h[n+(m<<3)>>3];l=s>l?s:l;m=m+1|0}while((m&65535)<(k&65535))}d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;h[o>>3]=l;o=1;i=r;return o|0}else if((k|0)==297){o=b[d+136>>1]|0;q=c[j>>2]|0;f=c[q>>2]|0;c[j>>2]=q+4;b[f>>1]=o;d=b[d+138>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==325|(k|0)==279){ww(d)|0;d=c[d+176>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==339){d=b[d+86>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==530){o=b[d+192>>1]|0;q=c[j>>2]|0;f=c[q>>2]|0;c[j>>2]=q+4;b[f>>1]=o;d=b[d+194>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==301){f=c[d+200>>2]|0;q=c[j>>2]|0;o=c[q>>2]|0;c[j>>2]=q+4;c[o>>2]=f;if(((e[d+98>>1]|0)-(e[d+156>>1]|0)|0)<=1){o=1;i=r;return o|0}o=c[d+204>>2]|0;q=c[j>>2]|0;f=c[q>>2]|0;c[j>>2]=q+4;c[f>>2]=o;d=c[d+208>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==532){d=c[d+212>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==258){d=b[d+84>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==282){s=+g[d+116>>2];d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;g[o>>2]=s;o=1;i=r;return o|0}else if((k|0)==283){s=+g[d+120>>2];d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;g[o>>2]=s;o=1;i=r;return o|0}else if((k|0)==32997){d=c[d+64>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==330){o=b[d+184>>1]|0;q=c[j>>2]|0;f=c[q>>2]|0;c[j>>2]=q+4;b[f>>1]=o;d=c[d+188>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==274){d=b[d+96>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==32995){if((b[d+156>>1]|0)==1)k=(b[c[d+160>>2]>>1]|0)==1&1;else k=0;d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;b[o>>1]=k;o=1;i=r;return o|0}else if((k|0)==286){s=+g[d+128>>2];d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;g[o>>2]=s;o=1;i=r;return o|0}else if((k|0)==338){o=b[d+156>>1]|0;q=c[j>>2]|0;f=c[q>>2]|0;c[j>>2]=q+4;b[f>>1]=o;d=c[d+160>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==321){o=b[d+152>>1]|0;q=c[j>>2]|0;f=c[q>>2]|0;c[j>>2]=q+4;b[f>>1]=o;d=b[d+154>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==263){d=b[d+92>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==281){d=b[d+106>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==322){d=c[d+68>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==280){d=b[d+104>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==32996){k=e[d+86>>1]|0;if((k|0)==2){d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;b[o>>1]=1;o=1;i=r;return o|0}else if((k|0)==3){d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;b[o>>1]=3;o=1;i=r;return o|0}else if((k|0)==4){d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;b[o>>1]=0;o=1;i=r;return o|0}else if((k|0)==1){d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;b[o>>1]=2;o=1;i=r;return o|0}else{o=1;i=r;return o|0}}else if((k|0)==531){d=b[d+196>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==257){d=c[d+60>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==296){d=b[d+124>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==320){q=c[d+140>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=q;o=c[d+144>>2]|0;q=c[j>>2]|0;f=c[q>>2]|0;c[j>>2]=q+4;c[f>>2]=o;d=c[d+148>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==333){d=c[d+220>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==324|(k|0)==273){ww(d)|0;d=c[d+172>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==277){d=b[d+98>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==262){d=b[d+90>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==284){d=b[d+126>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else if((k|0)==323){d=c[d+72>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==256){d=c[d+56>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}else if((k|0)==259){d=b[d+88>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}else{if(!m){o=c[d+628>>2]|0;q=c[p+28>>2]|0;c[n>>2]=c[d>>2];c[n+4>>2]=f>>>0>65535?101656:101664;c[n+8>>2]=q;Dw(o,101592,101608,n);o=0;i=r;return o|0}m=c[d+224>>2]|0;if((m|0)<=0){o=0;i=r;return o|0}n=c[d+228>>2]|0;d=0;while(1){k=d+1|0;if((c[c[n+(d*12|0)>>2]>>2]|0)==(f|0))break;if((k|0)<(m|0))d=k;else{k=0;o=89;break}}if((o|0)==89){i=r;return k|0}if(a[p+27>>0]|0){k=c[n+(d*12|0)+4>>2]|0;if((b[p+4>>1]|0)==-3){f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=k}else{f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=k}d=c[n+(d*12|0)+8>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}if((c[p>>2]|0)==336?(qga(c[p+28>>2]|0,101672)|0)==0:0){d=n+(d*12|0)+8|0;o=b[c[d>>2]>>1]|0;q=c[j>>2]|0;f=c[q>>2]|0;c[j>>2]=q+4;b[f>>1]=o;d=b[(c[d>>2]|0)+2>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}m=c[p+8>>2]|0;if(((m|0)!=2?(e[p+4>>1]|0)<=65532:0)?(q=c[n+(d*12|0)+4>>2]|0,(q|0)<=1):0){k=c[n+(d*12|0)+8>>2]|0;if((q|0)!=1)Sa(101688,101352,1077,101592);do switch(m|0){case 13:case 4:{d=c[k>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}case 12:{s=+h[k>>3];d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;h[o>>3]=s;o=1;i=r;return o|0}case 17:{d=k;f=c[d>>2]|0;d=c[d+4>>2]|0;q=c[j>>2]|0;o=c[q>>2]|0;c[j>>2]=q+4;c[o>>2]=f;c[o+4>>2]=d;o=1;i=r;return o|0}case 7:case 1:{d=a[k>>0]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;a[o>>0]=d;o=1;i=r;return o|0}case 6:{d=a[k>>0]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;a[o>>0]=d;o=1;i=r;return o|0}case 11:case 10:case 5:{s=+g[k>>2];d=c[j>>2]|0;o=c[d>>2]|0;c[j>>2]=d+4;g[o>>2]=s;o=1;i=r;return o|0}case 8:{d=b[k>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}case 3:{d=b[k>>1]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;b[o>>1]=d;o=1;i=r;return o|0}case 18:case 16:{d=k;f=c[d>>2]|0;d=c[d+4>>2]|0;q=c[j>>2]|0;o=c[q>>2]|0;c[j>>2]=q+4;c[o>>2]=f;c[o+4>>2]=d;o=1;i=r;return o|0}case 9:{d=c[k>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}default:{o=0;i=r;return o|0}}while(0)}d=c[n+(d*12|0)+8>>2]|0;f=c[j>>2]|0;o=c[f>>2]|0;c[j>>2]=f+4;c[o>>2]=d;o=1;i=r;return o|0}while(0);return 0}function SM(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+32|0;v=w+16|0;m=w+30|0;s=w+24|0;n=w+8|0;j=w+28|0;o=w+20|0;k=w;u=a+12|0;p=c[u>>2]|0;if(!(p&2048)){g=a+640|0;h=a+628|0;t=b;t=ce[c[g>>2]&255](c[h>>2]|0,c[t>>2]|0,c[t+4>>2]|0,0)|0;f=b;f=(t|0)==(c[f>>2]|0)?(I|0)==(c[f+4>>2]|0):0;if(!(p&524288)){if(f?(l=a+632|0,(Od[c[l>>2]&255](c[h>>2]|0,j,2)|0)==2):0){if(c[u>>2]&128)Fx(j);f=ce[c[g>>2]&255](c[h>>2]|0,(e[j>>1]|0)*12|0,0,1)|0;if(d){c[d>>2]=f;c[d+4>>2]=I}if((Od[c[l>>2]&255](c[h>>2]|0,o,4)|0)!=4){d=c[h>>2]|0;c[v>>2]=c[a>>2];Dw(d,101384,101552,v);v=0;i=w;return v|0}if(c[u>>2]&128)Gx(o);v=b;c[v>>2]=c[o>>2];c[v+4>>2]=0;v=1;i=w;return v|0}d=c[h>>2]|0;c[v>>2]=c[a>>2];Dw(d,101384,101512,v);v=0;i=w;return v|0}if(f?(q=a+632|0,(Od[c[q>>2]&255](c[h>>2]|0,k,8)|0)==8):0){if(c[u>>2]&128)Hx(k);t=k;f=c[t>>2]|0;t=c[t+4>>2]|0;if(t>>>0>0|(t|0)==0&f>>>0>65535){Dw(c[h>>2]|0,101384,101408,v);v=0;i=w;return v|0}f=ce[c[g>>2]&255](c[h>>2]|0,(f&65535)*20|0,0,1)|0;if(d){c[d>>2]=f;c[d+4>>2]=I}if((Od[c[q>>2]&255](c[h>>2]|0,b,8)|0)!=8){d=c[h>>2]|0;c[v>>2]=c[a>>2];Dw(d,101384,101552,v);v=0;i=w;return v|0}if(!(c[u>>2]&128)){v=1;i=w;return v|0}Hx(b);v=1;i=w;return v|0}d=c[h>>2]|0;c[v>>2]=c[a>>2];Dw(d,101384,101512,v);v=0;i=w;return v|0}f=b;j=c[f>>2]|0;f=c[f+4>>2]|0;if(!(p&524288)){h=j+2|0;if(((j|0)==(j|0)&(((j|0)<0)<<31>>31|0)==(f|0)?!((j|0)>2147483645|(h|0)<2):0)?(r=a+616|0,(h|0)<=(c[r>>2]|0)):0){g=a+612|0;NK(m,(c[g>>2]|0)+j|0,2);if(c[u>>2]&128)Fx(m);f=((e[m>>1]|0)*12|0)+h|0;t=f+4|0;if(((h|0)>=0?!((f|0)>2147483643|(t|0)<4):0)?(t|0)<=(c[r>>2]|0):0){if(d){v=d;c[v>>2]=f;c[v+4>>2]=((f|0)<0)<<31>>31}NK(s,(c[g>>2]|0)+f|0,4);if(c[u>>2]&128)Gx(s);v=b;c[v>>2]=c[s>>2];c[v+4>>2]=0;v=1;i=w;return v|0}Dw(c[a+628>>2]|0,101384,101440,v);v=0;i=w;return v|0}Dw(c[a+628>>2]|0,101384,101408,v);v=b;c[v>>2]=0;c[v+4>>2]=0;v=0;i=w;return v|0}h=j+8|0;if(((j|0)==(j|0)&(((j|0)<0)<<31>>31|0)==(f|0)?!((j|0)>2147483639|(h|0)<8):0)?(t=a+616|0,(h|0)<=(c[t>>2]|0)):0){g=a+612|0;NK(n,(c[g>>2]|0)+j|0,8);if(c[u>>2]&128)Hx(n);s=n;f=c[s>>2]|0;s=c[s+4>>2]|0;if(s>>>0>0|(s|0)==0&f>>>0>65535){Dw(c[a+628>>2]|0,101384,101472,v);v=0;i=w;return v|0}f=((f&65535)*20|0)+h|0;s=f+8|0;if(((h|0)>=0?!((f|0)>2147483639|(s|0)<8):0)?(s|0)<=(c[t>>2]|0):0){if(d){v=d;c[v>>2]=f;c[v+4>>2]=((f|0)<0)<<31>>31}NK(b,(c[g>>2]|0)+f|0,8);if(!(c[u>>2]&128)){v=1;i=w;return v|0}Hx(b);v=1;i=w;return v|0}Dw(c[a+628>>2]|0,101384,101440,v);v=0;i=w;return v|0}Dw(c[a+628>>2]|0,101384,101408,v);v=0;i=w;return v|0}function TM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;d=c[a>>2]|0;e=c[b>>2]|0;a=c[d>>2]|0;b=c[e>>2]|0;if((a|0)==(b|0)){a=c[d+8>>2]|0;if(!a)a=0;else a=(c[e+8>>2]|0)-a|0}else a=a-b|0;i=f;return a|0}function UM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=i;e=b<<16>>16==-1;d=c<<24>>24==0;a:do if(!((a|0)==2&e&d)){if(b<<16>>16==1&d)do switch(a|0){case 11:case 10:case 5:{d=10;break a}case 17:{d=9;break a}case 6:{d=3;break a}case 16:{d=8;break a}case 8:{d=5;break a}case 7:case 1:{d=2;break a}case 2:{d=1;break a}case 12:{d=11;break a}case 18:case 13:{d=12;break a}case 3:{d=4;break a}case 4:{d=6;break a}case 9:{d=7;break a}default:{d=0;break a}}while(0);if(b<<16>>16>0&d)do switch(a|0){case 17:{d=23;break a}case 3:{d=18;break a}case 6:{d=17;break a}case 2:{d=15;break a}case 9:{d=21;break a}case 4:{d=20;break a}case 12:{d=25;break a}case 16:{d=22;break a}case 18:case 13:{d=26;break a}case 7:case 1:{d=16;break a}case 11:case 10:case 5:{d=24;break a}case 8:{d=19;break a}default:{d=0;break a}}while(0);d=c<<24>>24==1;if(e&d)do switch(a|0){case 2:{d=27;break a}case 4:{d=32;break a}case 6:{d=29;break a}case 8:{d=31;break a}case 11:case 10:case 5:{d=36;break a}case 16:{d=34;break a}case 17:{d=35;break a}case 18:case 13:{d=38;break a}case 9:{d=33;break a}case 3:{d=30;break a}case 12:{d=37;break a}case 7:case 1:{d=28;break a}default:{d=0;break a}}while(0);if(b<<16>>16==-3&d)do switch(a|0){case 8:{d=43;break a}case 12:{d=49;break a}case 16:{d=46;break a}case 4:{d=44;break a}case 3:{d=42;break a}case 6:{d=41;break a}case 9:{d=45;break a}case 2:{d=39;break a}case 18:case 13:{d=50;break a}case 17:{d=47;break a}case 11:case 10:case 5:{d=48;break a}case 7:case 1:{d=40;break a}default:{d=0;break a}}while(0);else d=0}else d=1;while(0);i=f;return d|0}function VM(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;w=i;i=i+32|0;t=w+16|0;v=w+28|0;m=w+8|0;n=w+20|0;l=w;r=w+24|0;if(!j)Sa(116184,114104,4479,116192);q=f+16|0;s=q;c[s>>2]=g;c[s+4>>2]=h;s=(k|0)!=0;if(s){u=k;c[u>>2]=0;c[u+4>>2]=0}u=f+12|0;h=c[u>>2]|0;do if(!(h&2048)){o=f+628|0;r=q;r=ce[c[f+640>>2]&255](c[o>>2]|0,c[r>>2]|0,c[r+4>>2]|0,0)|0;p=q;if(!((r|0)==(c[p>>2]|0)?(I|0)==(c[p+4>>2]|0):0)){j=c[o>>2]|0;c[t>>2]=c[f>>2];Dw(j,116192,116216,t);j=0;i=w;return j|0}q=f+632|0;g=c[q>>2]|0;h=c[o>>2]|0;do if(!(c[u>>2]&524288)){if((Od[g&255](h,v,2)|0)!=2){j=c[o>>2]|0;c[t>>2]=c[f>>2];Dw(j,116192,116256,t);j=0;i=w;return j|0}if(c[u>>2]&128)Fx(v);g=b[v>>1]|0;if((g&65535)>4096){Dw(c[o>>2]|0,116192,116296,t);j=0;i=w;return j|0}else h=12}else{if((Od[g&255](h,m,8)|0)!=8){j=c[o>>2]|0;c[t>>2]=c[f>>2];Dw(j,116192,116256,t);j=0;i=w;return j|0}if(c[u>>2]&128)Hx(m);p=m;g=c[p>>2]|0;p=c[p+4>>2]|0;if(!(p>>>0>0|(p|0)==0&g>>>0>4096)){g=g&65535;b[v>>1]=g;h=20;break}Dw(c[o>>2]|0,116192,116296,t);j=0;i=w;return j|0}while(0);m=Av(f,g&65535,h,116376)|0;if(!m){j=0;i=w;return j|0}p=ea(e[v>>1]|0,h)|0;p=Od[c[q>>2]&255](c[o>>2]|0,m,p)|0;if((p|0)!=(ea(e[v>>1]|0,h)|0)){j=c[o>>2]|0;c[t>>2]=c[f>>2];Dw(j,116192,116400,t);KK(m);j=0;i=w;return j|0}if(s){l=c[q>>2]|0;g=c[o>>2]|0;if(c[u>>2]&524288){if((Od[l&255](g,k,8)|0)!=8){t=k;c[t>>2]=0;c[t+4>>2]=0}if(!(c[u>>2]&128)){q=m;break}Hx(k);q=m;break}if((Od[l&255](g,n,4)|0)!=4)c[n>>2]=0;if(c[u>>2]&128)Gx(n);q=k;c[q>>2]=c[n>>2];c[q+4>>2]=0;q=m}else q=m}else{n=q;g=c[n>>2]|0;if(!((g|0)==(g|0)?(((g|0)<0)<<31>>31|0)==(c[n+4>>2]|0):0)){Dw(c[f+628>>2]|0,116192,116440,t);j=0;i=w;return j|0}do if(!(h&524288)){h=g+2|0;if(!((g|0)>2147483645|(h|0)<2)?(h|0)<=(c[f+616>>2]|0):0){NK(v,(c[f+612>>2]|0)+g|0,2);if(c[u>>2]&128)Fx(v);g=b[v>>1]|0;if((g&65535)<=4096){o=12;break}Dw(c[f+628>>2]|0,116192,116296,t);j=0;i=w;return j|0}Dw(c[f+628>>2]|0,116192,116440,t);j=0;i=w;return j|0}else{h=g+8|0;if(!((g|0)>2147483639|(h|0)<8)?(h|0)<=(c[f+616>>2]|0):0){NK(l,(c[f+612>>2]|0)+g|0,8);if(c[u>>2]&128)Hx(l);n=l;g=c[n>>2]|0;n=c[n+4>>2]|0;if(!(n>>>0>0|(n|0)==0&g>>>0>4096)){g=g&65535;b[v>>1]=g;o=20;break}Dw(c[f+628>>2]|0,116192,116296,t);j=0;i=w;return j|0}Dw(c[f+628>>2]|0,116192,116440,t);j=0;i=w;return j|0}while(0);if(!(g<<16>>16)){Dw(c[f+628>>2]|0,116192,116480,t);j=0;i=w;return j|0}q=Av(f,g&65535,o,116376)|0;if(!q){j=0;i=w;return j|0}l=ea(e[v>>1]|0,o)|0;g=l+h|0;if(!((g|0)<(h|0)|(g|0)<(l|0))?(p=f+616|0,(g|0)<=(c[p>>2]|0)):0){m=f+612|0;NK(q,(c[m>>2]|0)+h|0,l);if(!s)break;l=(ea(e[v>>1]|0,o)|0)+h|0;g=c[u>>2]|0;if(g&524288){t=l+8|0;if(!((l|0)>2147483639|(t|0)<8)?(t|0)<=(c[p>>2]|0):0){NK(k,(c[m>>2]|0)+l|0,8);g=c[u>>2]|0}else{t=k;c[t>>2]=0;c[t+4>>2]=0}if(!(g&128))break;Hx(k);break}t=l+4|0;if(!((l|0)>2147483643|(t|0)<4)?(t|0)<=(c[p>>2]|0):0){NK(r,(c[m>>2]|0)+l|0,4);g=c[u>>2]|0}else c[r>>2]=0;if(g&128)Gx(r);c[k>>2]=c[r>>2];c[k+4>>2]=0;break}Dw(c[f+628>>2]|0,116192,116560,t);KK(q);j=0;i=w;return j|0}while(0);n=Av(f,e[v>>1]|0,24,116376)|0;if(!n){KK(q);j=0;i=w;return j|0}if(b[v>>1]|0){g=q;o=n;p=0;while(1){l=c[u>>2]|0;if(l&128){Fx(g);l=c[u>>2]|0}b[o>>1]=b[g>>1]|0;m=g+2|0;if(l&128){Fx(m);l=c[u>>2]|0}b[o+2>>1]=b[m>>1]|0;m=g+4|0;h=(l&128|0)!=0;if(!(l&524288)){if(h)Gx(m);f=o+8|0;c[f>>2]=c[m>>2];c[f+4>>2]=0;c[o+16>>2]=c[g+8>>2];g=g+12|0}else{if(h)Hx(m);l=a[m>>0]|0;f=a[g+5>>0]|0;m=a[g+6>>0]|0;s=a[g+7>>0]|0;r=a[g+8>>0]|0;t=a[g+9>>0]|0;k=a[g+10>>0]|0;h=Fga(d[g+11>>0]|0,0,56)|0;C=I;k=Fga(k&255|0,0,48)|0;A=I;t=Fga(t&255|0,0,40)|0;z=I;s=Fga(s&255|0,0,24)|0;y=I;m=Fga(m&255|0,0,16)|0;x=I;f=Fga(f&255|0,0,8)|0;B=o+8|0;c[B>>2]=f|l&255|m|s|t|k|h;c[B+4>>2]=I|x|y|r&255|z|A|C;B=a[g+12>>0]|0;C=a[g+13>>0]|0;A=a[g+14>>0]|0;z=a[g+15>>0]|0;r=a[g+16>>0]|0;y=a[g+17>>0]|0;x=a[g+18>>0]|0;h=Fga(d[g+19>>0]|0,0,56)|0;k=I;x=Fga(x&255|0,0,48)|0;t=I;y=Fga(y&255|0,0,40)|0;s=I;z=Fga(z&255|0,0,24)|0;m=I;A=Fga(A&255|0,0,16)|0;l=I;C=Fga(C&255|0,0,8)|0;f=o+16|0;c[f>>2]=C|B&255|A|z|y|x|h;c[f+4>>2]=I|l|m|r&255|s|t|k;g=g+20|0}p=p+1<<16>>16;if((p&65535)>=(e[v>>1]|0))break;else o=o+24|0}}KK(q);c[j>>2]=n;C=b[v>>1]|0;i=w;return C|0}function WM(f,j,l){f=f|0;j=j|0;l=l|0;var m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0;ta=i;i=i+256|0;sa=ta+40|0;ea=ta+172|0;da=ta+176|0;oa=ta+80|0;pa=ta+32|0;ia=ta+16|0;R=ta+8|0;na=ta;qa=ta+24|0;ca=ta+212|0;ba=ta+188|0;Y=ta+192|0;W=ta+196|0;aa=ta+200|0;X=ta+204|0;V=ta+208|0;_=ta+216|0;U=ta+220|0;Z=ta+224|0;T=ta+228|0;$=ta+232|0;S=ta+236|0;fa=ta+240|0;s=ta+244|0;ha=ta+184|0;ja=ta+72|0;la=ta+180|0;ma=ta+56|0;ga=ta+64|0;P=ta+116|0;Q=ta+120|0;D=ta+112|0;E=ta+108|0;F=ta+104|0;G=ta+92|0;H=ta+88|0;J=ta+96|0;K=ta+100|0;L=ta+124|0;M=ta+128|0;N=ta+132|0;O=ta+136|0;v=ta+140|0;w=ta+144|0;x=ta+148|0;y=ta+152|0;z=ta+156|0;A=ta+160|0;B=ta+164|0;C=ta+168|0;m=c[f+660>>2]|0;q=b[j>>1]|0;a:do if(m){r=c[f+656>>2]|0;u=q&65535;n=-1;p=m;while(1){m=(n+p|0)/2|0;t=c[c[r+(m<<2)>>2]>>2]|0;if((t|0)==(u|0))break;ra=t>>>0>>0;n=ra?m:n;p=ra?p:m;if((n+1|0)==(p|0))break a}while(1){if(!m){m=0;break}t=m+-1|0;if((c[c[r+(t<<2)>>2]>>2]|0)==(u|0))m=t;else{ka=7;break}}if((ka|0)==7)if((m|0)==-1)break;ra=c[r+(m<<2)>>2]|0;if(!ra)Sa(115576,114104,4737,115520);b:do switch(c[ra+16>>2]|0){case 28:{if((b[ra+4>>1]|0)!=-1)Sa(116072,114104,5024,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5025,115520);p=j+8|0;ha=p;ga=c[ha+4>>2]|0;if(!(ga>>>0>0|(ga|0)==0&(c[ha>>2]|0)>>>0>65535)){m=LZ(f,j,H)|0;if(!m){m=e[j>>1]|0;n=c[H>>2]|0;c[sa>>2]=c[p>>2]&65535;c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749}else{m=1;ka=749}break}case 30:{if((b[ra+4>>1]|0)!=-1)Sa(116072,114104,5046,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5047,115520);p=j+8|0;ha=p;ga=c[ha+4>>2]|0;if(!(ga>>>0>0|(ga|0)==0&(c[ha>>2]|0)>>>0>65535)){m=YM(f,j,J)|0;if(!m){m=e[j>>1]|0;n=c[J>>2]|0;c[sa>>2]=c[p>>2]&65535;c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749}else{m=1;ka=749}break}case 37:{if((b[ra+4>>1]|0)!=-1)Sa(116072,114104,5134,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5135,115520);p=j+8|0;ha=p;ga=c[ha+4>>2]|0;if(!(ga>>>0>0|(ga|0)==0&(c[ha>>2]|0)>>>0>65535)){m=_M(f,j,N)|0;if(!m){m=e[j>>1]|0;n=c[N>>2]|0;c[sa>>2]=c[p>>2]&65535;c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749}else{m=1;ka=749}break}case 32:{if((b[ra+4>>1]|0)!=-1)Sa(116072,114104,5068,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5069,115520);p=j+8|0;ha=p;ga=c[ha+4>>2]|0;if(!(ga>>>0>0|(ga|0)==0&(c[ha>>2]|0)>>>0>65535)){m=OZ(f,j,K)|0;if(!m){m=e[j>>1]|0;n=c[K>>2]|0;c[sa>>2]=c[p>>2]&65535;c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749}else{m=1;ka=749}break}case 36:{if((b[ra+4>>1]|0)!=-1)Sa(116072,114104,5112,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5113,115520);p=j+8|0;ha=p;ga=c[ha+4>>2]|0;if(!(ga>>>0>0|(ga|0)==0&(c[ha>>2]|0)>>>0>65535)){m=PZ(f,j,M)|0;if(!m){m=e[j>>1]|0;n=c[M>>2]|0;c[sa>>2]=c[p>>2]&65535;c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749}else{m=1;ka=749}break}case 34:{if((b[ra+4>>1]|0)!=-1)Sa(116072,114104,5090,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5091,115520);p=j+8|0;ha=p;ga=c[ha+4>>2]|0;if(!(ga>>>0>0|(ga|0)==0&(c[ha>>2]|0)>>>0>65535)){m=QZ(f,j,L)|0;if(!m){m=e[j>>1]|0;n=c[L>>2]|0;c[sa>>2]=c[p>>2]&65535;c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749}else{m=1;ka=749}break}case 38:{if((b[ra+4>>1]|0)!=-1)Sa(116072,114104,5156,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5157,115520);p=j+8|0;ha=p;ga=c[ha+4>>2]|0;if(!(ga>>>0>0|(ga|0)==0&(c[ha>>2]|0)>>>0>65535)){m=RZ(f,j,O)|0;if(!m){m=e[j>>1]|0;n=c[O>>2]|0;c[sa>>2]=c[p>>2]&65535;c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749}else{m=1;ka=749}break}case 40:{if((b[ra+4>>1]|0)!=-3)Sa(116136,114104,5195,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5196,115520);m=LZ(f,j,w)|0;if(!m){m=e[j>>1]|0;n=c[w>>2]|0;c[sa>>2]=c[j+8>>2];c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749;break}case 41:{if((b[ra+4>>1]|0)!=-3)Sa(116136,114104,5212,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5213,115520);p=j+2|0;switch(e[p>>1]|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:case 7:break;default:{m=2;ka=749;break b}}m=SZ(f,j,na,1,qa)|0;r=c[qa>>2]|0;c:do if((m|0)!=0|(r|0)==0)if(!m)n=0;else{ka=749;break b}else{m=e[p>>1]|0;if((m|0)==1|(m|0)==7){m=c[na>>2]|0;if(!m){n=r;break}else{p=r;n=0}while(1){if((a[p>>0]|0)<=-1)break;n=n+1|0;if(n>>>0>=m>>>0){n=r;break c}else p=p+1|0}KK(r);m=4;ka=749;break b}else if((m|0)==6){n=r;break}m=c[na>>2]|0;n=JK(m)|0;if(!n){KK(r);m=7;ka=749;break b}d:do switch(e[p>>1]|0){case 3:{if(!m)ka=544;else{s=f+12|0;p=r;r=n;q=0;while(1){if(c[s>>2]&128)Fx(p);m=b[p>>1]|0;if((m&65535)>=128){ka=543;break d}a[r>>0]=m;q=q+1|0;if(q>>>0>=(c[na>>2]|0)>>>0){ka=544;break}else{p=p+2|0;r=r+1|0}}}break}case 8:{if(!m)ka=544;else{s=f+12|0;p=r;r=n;q=0;while(1){if(c[s>>2]&128)Fx(p);m=b[p>>1]|0;if((m+128<<16>>16&65535)>=256){ka=543;break d}a[r>>0]=m;q=q+1|0;if(q>>>0>=(c[na>>2]|0)>>>0){ka=544;break}else{p=p+2|0;r=r+1|0}}}break}case 4:{if(!m)ka=544;else{s=f+12|0;p=r;r=n;q=0;while(1){if(c[s>>2]&128)Gx(p);m=c[p>>2]|0;if(m>>>0>=128){ka=543;break d}a[r>>0]=m;q=q+1|0;if(q>>>0>=(c[na>>2]|0)>>>0){ka=544;break}else{p=p+4|0;r=r+1|0}}}break}case 16:{if(!m)ka=544;else{s=f+12|0;p=r;r=n;q=0;while(1){if(c[s>>2]&128)Hx(p);ha=p;m=c[ha>>2]|0;ha=c[ha+4>>2]|0;if(!(ha>>>0<0|(ha|0)==0&m>>>0<128)){ka=543;break d}a[r>>0]=m;q=q+1|0;if(q>>>0>=(c[na>>2]|0)>>>0){ka=544;break}else{p=p+8|0;r=r+1|0}}}break}case 9:{if(!m)ka=544;else{s=f+12|0;p=r;r=n;q=0;while(1){if(c[s>>2]&128)Gx(p);m=c[p>>2]|0;if((m+128|0)>>>0>=256){ka=543;break d}a[r>>0]=m;q=q+1|0;if(q>>>0>=(c[na>>2]|0)>>>0){ka=544;break}else{p=p+4|0;r=r+1|0}}}break}case 17:{if(!m)ka=544;else{s=f+12|0;p=r;r=n;q=0;while(1){if(c[s>>2]&128)Hx(p);ha=p;m=c[ha>>2]|0;ha=Iga(m|0,c[ha+4>>2]|0,128,0)|0;ga=I;if(!(ga>>>0<0|(ga|0)==0&ha>>>0<256)){ka=543;break d}a[r>>0]=m;q=q+1|0;if(q>>>0>=(c[na>>2]|0)>>>0){ka=544;break}else{p=p+8|0;r=r+1|0}}}break}default:ka=544}while(0);if((ka|0)==543){KK(c[qa>>2]|0);KK(n);m=4;ka=749;break b}else if((ka|0)==544){KK(c[qa>>2]|0);break}}while(0);m=e[j>>1]|0;c[sa>>2]=c[j+8>>2];c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748;break}case 39:{if((b[ra+4>>1]|0)!=-3)Sa(116136,114104,5178,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5179,115520);m=LZ(f,j,v)|0;if(!m){m=e[j>>1]|0;n=c[v>>2]|0;c[sa>>2]=c[j+8>>2];c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749;break}case 43:{if((b[ra+4>>1]|0)!=-3)Sa(116136,114104,5246,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5247,115520);p=j+2|0;switch(e[p>>1]|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{m=2;ka=749;break b}}m=SZ(f,j,ia,2,R)|0;u=c[R>>2]|0;e:do if((m|0)!=0|(u|0)==0)if(!m)n=0;else{ka=749;break b}else{m=e[p>>1]|0;if((m|0)==8){if(!(c[f+12>>2]&128)){n=u;break}Ix(u,c[ia>>2]|0);n=u;break}else if((m|0)!=3){t=c[ia>>2]|0;n=JK(t<<1)|0;if(!n){KK(u);m=7;ka=749;break b}f:do switch(e[p>>1]|0){case 1:{if(!t)ka=605;else{m=u;p=n;q=0;while(1){b[p>>1]=d[m>>0]|0;q=q+1|0;if((q|0)==(t|0)){ka=605;break}else{m=m+1|0;p=p+2|0}}}break}case 6:{if(!t)ka=605;else{m=u;p=n;q=0;while(1){b[p>>1]=a[m>>0]|0;q=q+1|0;if((q|0)==(t|0)){ka=605;break}else{m=m+1|0;p=p+2|0}}}break}case 4:{if(!t)ka=605;else{m=f+12|0;r=u;q=n;s=0;while(1){if(c[m>>2]&128)Gx(r);p=c[r>>2]|0;if(p>>>0>=32768){ka=604;break f}b[q>>1]=p;s=s+1|0;if(s>>>0>=t>>>0){ka=605;break}else{r=r+4|0;q=q+2|0}}}break}case 16:{if(!t)ka=605;else{m=f+12|0;r=u;q=n;s=0;while(1){if(c[m>>2]&128)Hx(r);ha=r;p=c[ha>>2]|0;ha=c[ha+4>>2]|0;if(!(ha>>>0<0|(ha|0)==0&p>>>0<32768)){ka=604;break f}b[q>>1]=p;s=s+1|0;if(s>>>0>=t>>>0){ka=605;break}else{r=r+8|0;q=q+2|0}}}break}case 9:{if(!t)ka=605;else{m=f+12|0;r=u;q=n;s=0;while(1){if(c[m>>2]&128)Gx(r);p=c[r>>2]|0;if((p+32768|0)>>>0>=65536){ka=604;break f}b[q>>1]=p;s=s+1|0;if(s>>>0>=t>>>0){ka=605;break}else{r=r+4|0;q=q+2|0}}}break}case 17:{if(!t)ka=605;else{m=f+12|0;r=u;q=n;s=0;while(1){if(c[m>>2]&128)Hx(r);ha=r;p=c[ha>>2]|0;ha=Iga(p|0,c[ha+4>>2]|0,32768,0)|0;ga=I;if(!(ga>>>0<0|(ga|0)==0&ha>>>0<65536)){ka=604;break f}b[q>>1]=p;s=s+1|0;if(s>>>0>=t>>>0){ka=605;break}else{r=r+8|0;q=q+2|0}}}break}default:ka=605}while(0);if((ka|0)==604){KK(u);KK(n);m=4;ka=749;break b}else if((ka|0)==605){KK(u);break}}else{m=c[ia>>2]|0;if(!m){n=u;break}p=f+12|0;n=u;q=0;while(1){if(c[p>>2]&128)Fx(n);if((b[n>>1]|0)<=-1)break;q=q+1|0;if(q>>>0>=m>>>0){n=u;break e}else n=n+2|0}KK(u);m=4;ka=749;break b}}while(0);m=e[j>>1]|0;c[sa>>2]=c[j+8>>2];c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748;break}case 42:{if((b[ra+4>>1]|0)!=-3)Sa(116136,114104,5229,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5230,115520);m=YM(f,j,x)|0;if(!m){m=e[j>>1]|0;n=c[x>>2]|0;c[sa>>2]=c[j+8>>2];c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749;break}case 44:{if((b[ra+4>>1]|0)!=-3)Sa(116136,114104,5263,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5264,115520);m=OZ(f,j,y)|0;if(!m){m=e[j>>1]|0;n=c[y>>2]|0;c[sa>>2]=c[j+8>>2];c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749;break}case 45:{if((b[ra+4>>1]|0)!=-3)Sa(116136,114104,5280,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5281,115520);p=j+2|0;switch(e[p>>1]|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{m=2;ka=749;break b}}m=SZ(f,j,oa,4,pa)|0;t=c[pa>>2]|0;g:do if(!((m|0)!=0|(t|0)==0)){m=e[p>>1]|0;if((m|0)==4){p=c[oa>>2]|0;if(!p){n=t;break}n=f+12|0;r=t;q=0;while(1){if(c[n>>2]&128)Gx(r);m=c[r>>2]>>31&4;if(m)break;q=q+1|0;if(q>>>0>=p>>>0){n=t;break g}else r=r+4|0}KK(t);ka=662;break}else if((m|0)!=9){m=c[oa>>2]|0;n=JK(m<<2)|0;if(!n){KK(t);m=7;ka=749;break b}h:do switch(e[p>>1]|0){case 1:{if(!m)ka=661;else{m=t;p=n;q=0;while(1){c[p>>2]=d[m>>0];q=q+1|0;if(q>>>0>=(c[oa>>2]|0)>>>0){ka=661;break}else{m=m+1|0;p=p+4|0}}}break}case 6:{if(!m)ka=661;else{m=t;p=n;q=0;while(1){c[p>>2]=a[m>>0];q=q+1|0;if(q>>>0>=(c[oa>>2]|0)>>>0){ka=661;break}else{m=m+1|0;p=p+4|0}}}break}case 16:{if(!m)ka=661;else{m=f+12|0;r=t;q=n;s=0;while(1){if(c[m>>2]&128)Hx(r);ha=r;p=c[ha>>2]|0;ha=c[ha+4>>2]|0;if(!(ha>>>0<0|(ha|0)==0&p>>>0<2147483648)){ka=660;break h}c[q>>2]=p;s=s+1|0;if(s>>>0>=(c[oa>>2]|0)>>>0){ka=661;break}else{r=r+8|0;q=q+4|0}}}break}case 8:{if(!m)ka=661;else{m=f+12|0;p=t;q=n;r=0;while(1){if(c[m>>2]&128)Fx(p);c[q>>2]=b[p>>1];r=r+1|0;if(r>>>0>=(c[oa>>2]|0)>>>0){ka=661;break}else{p=p+2|0;q=q+4|0}}}break}case 17:{if(m)if(!(c[f+12>>2]&128))ka=660;else{Hx(t);ka=660}else ka=661;break}case 3:{if(!m)ka=661;else{m=f+12|0;p=t;q=n;r=0;while(1){if(c[m>>2]&128)Fx(p);c[q>>2]=e[p>>1];r=r+1|0;if(r>>>0>=(c[oa>>2]|0)>>>0){ka=661;break}else{p=p+2|0;q=q+4|0}}}break}default:ka=661}while(0);if((ka|0)==660){KK(t);KK(n);m=4;ka=749;break b}else if((ka|0)==661){KK(t);break}}else{if(!(c[f+12>>2]&128)){n=t;break}Kx(t,c[oa>>2]|0);n=t;break}}else ka=662;while(0);if((ka|0)==662)if(!m)n=0;else{ka=749;break b}m=e[j>>1]|0;c[sa>>2]=c[j+8>>2];c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748;break}case 47:{if((b[ra+4>>1]|0)!=-3)Sa(116136,114104,5314,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5315,115520);p=j+2|0;switch(e[p>>1]|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{m=2;ka=749;break b}}m=SZ(f,j,ea,8,da)|0;t=c[da>>2]|0;i:do if((m|0)!=0|(t|0)==0)if(!m)n=0;else{ka=749;break b}else{m=e[p>>1]|0;if((m|0)==17){if(!(c[f+12>>2]&128)){n=t;break}Lx(t,c[ea>>2]|0);n=t;break}else if((m|0)==16){m=c[ea>>2]|0;if(!m){n=t;break}p=f+12|0;n=t;q=0;while(1){if(c[p>>2]&128)Hx(n);ha=n;ga=c[ha+4>>2]|0;if(!((ga|0)>-1|(ga|0)==-1&(c[ha>>2]|0)>>>0>4294967295))break;q=q+1|0;if(q>>>0>=m>>>0){n=t;break i}else n=n+8|0}KK(t);m=4;ka=749;break b}else{s=c[ea>>2]|0;n=JK(s<<3)|0;if(!n){KK(t);m=7;ka=749;break b}switch(e[p>>1]|0){case 1:{if(s){m=t;p=n;q=0;while(1){ra=p;c[ra>>2]=d[m>>0];c[ra+4>>2]=0;q=q+1|0;if((q|0)==(s|0))break;else{m=m+1|0;p=p+8|0}}}break}case 6:{if(s){m=t;p=n;q=0;while(1){ha=a[m>>0]|0;ra=p;c[ra>>2]=ha;c[ra+4>>2]=((ha|0)<0)<<31>>31;q=q+1|0;if((q|0)==(s|0))break;else{m=m+1|0;p=p+8|0}}}break}case 3:{if(s){m=f+12|0;p=t;q=n;r=0;while(1){if(c[m>>2]&128)Fx(p);ra=q;c[ra>>2]=e[p>>1];c[ra+4>>2]=0;r=r+1|0;if((r|0)==(s|0))break;else{p=p+2|0;q=q+8|0}}}break}case 9:{if(s){m=f+12|0;p=t;q=n;r=0;while(1){if(c[m>>2]&128)Gx(p);ha=c[p>>2]|0;ra=q;c[ra>>2]=ha;c[ra+4>>2]=((ha|0)<0)<<31>>31;r=r+1|0;if((r|0)==(s|0))break;else{p=p+4|0;q=q+8|0}}}break}case 8:{if(s){m=f+12|0;p=t;q=n;r=0;while(1){if(c[m>>2]&128)Fx(p);ha=b[p>>1]|0;ra=q;c[ra>>2]=ha;c[ra+4>>2]=((ha|0)<0)<<31>>31;r=r+1|0;if((r|0)==(s|0))break;else{p=p+2|0;q=q+8|0}}}break}case 4:{if(s){m=f+12|0;p=t;q=n;r=0;while(1){if(c[m>>2]&128)Gx(p);ra=q;c[ra>>2]=c[p>>2];c[ra+4>>2]=0;r=r+1|0;if((r|0)==(s|0))break;else{p=p+4|0;q=q+8|0}}}break}default:{}}KK(t);break}}while(0);m=e[j>>1]|0;c[sa>>2]=c[j+8>>2];c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748;break}case 46:{if((b[ra+4>>1]|0)!=-3)Sa(116136,114104,5297,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5298,115520);m=QZ(f,j,z)|0;if(!m){m=e[j>>1]|0;n=c[z>>2]|0;c[sa>>2]=c[j+8>>2];c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749;break}case 48:{if((b[ra+4>>1]|0)!=-3)Sa(116136,114104,5331,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5332,115520);m=PZ(f,j,A)|0;if(!m){m=e[j>>1]|0;n=c[A>>2]|0;c[sa>>2]=c[j+8>>2];c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749;break}case 50:{if((b[ra+4>>1]|0)!=-3)Sa(116136,114104,5365,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5366,115520);m=RZ(f,j,C)|0;if(!m){m=e[j>>1]|0;n=c[C>>2]|0;c[sa>>2]=c[j+8>>2];c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749;break}case 0:{ka=747;break}case 49:{if((b[ra+4>>1]|0)!=-3)Sa(116136,114104,5348,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5349,115520);m=_M(f,j,B)|0;if(!m){m=e[j>>1]|0;n=c[B>>2]|0;c[sa>>2]=c[j+8>>2];c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749;break}case 51:{Sa(115592,114104,4738,115520);break}case 1:{if(a[ra+27>>0]|0)Sa(115672,114104,4748,115520);m=LZ(f,j,fa)|0;if(!m){r=j+8|0;n=c[r>>2]|0;j:do if(!n)m=0;else{p=c[fa>>2]|0;m=0;while(1){if(!(a[p>>0]|0))break j;m=m+1|0;if(m>>>0>>0)p=p+1|0;else break}}while(0);m=m+1|0;do if(m>>>0>=n>>>0)if(m>>>0>n>>>0){ha=c[f+628>>2]|0;c[sa>>2]=c[ra+28>>2];Zx(ha,115520,115832,sa);ra=r;ha=c[ra>>2]|0;m=ha+1|0;ra=Iga(ha|0,c[ra+4>>2]|0,1,0)|0;if((m|0)==(ra|0)&0==(I|0)){n=JK(m)|0;m=c[fa>>2]|0;if(n){NK(n,m,c[r>>2]|0);a[n+(c[r>>2]|0)>>0]=0;if(m)KK(m);c[fa>>2]=n;break}}else m=c[fa>>2]|0;if(!m){sa=0;i=ta;return sa|0}KK(m);sa=0;i=ta;return sa|0}else ka=32;else{ka=c[f+628>>2]|0;c[sa>>2]=c[ra+28>>2];Zx(ka,115520,115696,sa);ka=32}while(0);if((ka|0)==32)n=c[fa>>2]|0;m=e[j>>1]|0;c[sa>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749;break}case 2:{if((b[ra+4>>1]|0)!=1)Sa(115888,114104,4797,115520);if(a[ra+27>>0]|0)Sa(115672,114104,4798,115520);ha=j+8|0;k:do if((c[ha>>2]|0)==1&(c[ha+4>>2]|0)==0)switch(e[j+2>>1]|0){case 8:{ha=c[f+12>>2]|0;m=b[j+16>>1]|0;b[ea>>1]=m;if(!(ha&128))n=m;else{Fx(ea);n=b[ea>>1]|0}ha=(n&65535)<256;m=ha?0:4;n=ha?n&255:0;break k}case 4:{m=c[j+16>>2]|0;c[da>>2]=m;if(!(c[f+12>>2]&128))n=m;else{Gx(da);n=c[da>>2]|0}ha=n>>>0<256;m=ha?0:4;n=ha?n&255:0;break k}case 16:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[$>>2]=p;if(m&128){Gx($);m=c[n>>2]|0;p=c[$>>2]|0}if(!(m&2048)){m=f+628|0;ha=ce[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((ha|0)==(p|0)&(I|0)==0)){m=3;n=0;break k}if((Od[c[f+632>>2]&255](c[m>>2]|0,pa,8)|0)!=8){m=3;n=0;break k}}else{if(p>>>0>4294967287){m=3;n=0;break k}if((p+8|0)>>>0>(c[f+616>>2]|0)>>>0){m=3;n=0;break k}NK(pa,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ea=p;ga=c[ea+4>>2]|0;ha=pa;c[ha>>2]=c[ea>>2];c[ha+4>>2]=ga}if(m&128)Hx(pa);ha=pa;n=c[ha>>2]|0;ha=c[ha+4>>2]|0;ha=ha>>>0<0|(ha|0)==0&n>>>0<256;m=ha?0:4;n=ha?n&255:0;break k}case 9:{m=c[j+16>>2]|0;c[oa>>2]=m;if(!(c[f+12>>2]&128))n=m;else{Gx(oa);n=c[oa>>2]|0}ha=n>>>0<256;m=ha?0:4;n=ha?n&255:0;break k}case 6:{n=a[j+16>>0]|0;ha=n<<24>>24>-1;m=ha?0:4;n=ha?n:0;break k}case 1:{m=0;n=a[j+16>>0]|0;break k}case 3:{ha=c[f+12>>2]|0;m=b[j+16>>1]|0;b[sa>>1]=m;if(!(ha&128))n=m;else{Fx(sa);n=b[sa>>1]|0}ha=(n&65535)<256;m=ha?0:4;n=ha?n&255:0;break k}case 17:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[S>>2]=p;if(m&128){Gx(S);m=c[n>>2]|0;p=c[S>>2]|0}if(!(m&2048)){m=f+628|0;ha=ce[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((ha|0)==(p|0)&(I|0)==0)){m=3;n=0;break k}if((Od[c[f+632>>2]&255](c[m>>2]|0,ia,8)|0)!=8){m=3;n=0;break k}}else{if(p>>>0>4294967287){m=3;n=0;break k}if((p+8|0)>>>0>(c[f+616>>2]|0)>>>0){m=3;n=0;break k}NK(ia,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ea=p;ga=c[ea+4>>2]|0;ha=ia;c[ha>>2]=c[ea>>2];c[ha+4>>2]=ga}if(m&128)Hx(ia);ha=ia;n=c[ha>>2]|0;ha=c[ha+4>>2]|0;ha=ha>>>0<0|(ha|0)==0&n>>>0<256;m=ha?0:4;n=ha?n&255:0;break k}default:{m=2;n=0;break k}}else{m=1;n=0}while(0);if(!m){ra=e[j>>1]|0;c[sa>>2]=n&255;if(!(Xv(f,ra,sa)|0)){sa=0;i=ta;return sa|0}else ka=747}else ka=749;break}case 13:{Sa(115632,114104,4739,115520);break}case 6:{if((b[ra+4>>1]|0)!=1)Sa(115888,114104,4823,115520);if(a[ra+27>>0]|0)Sa(115672,114104,4824,115520);ga=j+8|0;l:do if((c[ga>>2]|0)==1&(c[ga+4>>2]|0)==0)switch(e[j+2>>1]|0){case 8:{ga=c[f+12>>2]|0;m=b[j+16>>1]|0;b[ea>>1]=m;if(ga&128){Fx(ea);m=b[ea>>1]|0}if(m<<16>>16<=-1){m=4;break l}c[ha>>2]=m<<16>>16;m=0;break l}case 4:{c[ha>>2]=c[j+16>>2];if(!(c[f+12>>2]&128)){m=0;break l}Gx(ha);m=0;break l}case 9:{m=c[j+16>>2]|0;c[da>>2]=m;if(!(c[f+12>>2]&128))n=m;else{Gx(da);n=c[da>>2]|0}m=n>>31&4;if(m)break l;c[ha>>2]=n;m=0;break l}case 16:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[Z>>2]=p;if(m&128){Gx(Z);m=c[n>>2]|0;p=c[Z>>2]|0}if(!(m&2048)){m=f+628|0;ga=ce[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((ga|0)==(p|0)&(I|0)==0)){m=3;break l}if((Od[c[f+632>>2]&255](c[m>>2]|0,oa,8)|0)!=8){m=3;break l}}else{if(p>>>0>4294967287){m=3;break l}if((p+8|0)>>>0>(c[f+616>>2]|0)>>>0){m=3;break l}NK(oa,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{da=p;ea=c[da+4>>2]|0;ga=oa;c[ga>>2]=c[da>>2];c[ga+4>>2]=ea}if(m&128)Hx(oa);ga=oa;m=c[ga>>2]|0;ga=c[ga+4>>2]|0;if(!(ga>>>0<1|(ga|0)==1&m>>>0<0)){m=4;break l}c[ha>>2]=m;m=0;break l}case 6:{m=a[j+16>>0]|0;if(m<<24>>24<=-1){m=4;break l}c[ha>>2]=m<<24>>24;m=0;break l}case 3:{ga=c[f+12>>2]|0;m=b[j+16>>1]|0;b[sa>>1]=m;if(ga&128){Fx(sa);m=b[sa>>1]|0}c[ha>>2]=m&65535;m=0;break l}case 1:{c[ha>>2]=d[j+16>>0];m=0;break l}case 17:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[T>>2]=p;if(m&128){Gx(T);m=c[n>>2]|0;p=c[T>>2]|0}if(!(m&2048)){m=f+628|0;ga=ce[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((ga|0)==(p|0)&(I|0)==0)){m=3;break l}if((Od[c[f+632>>2]&255](c[m>>2]|0,pa,8)|0)!=8){m=3;break l}}else{if(p>>>0>4294967287){m=3;break l}if((p+8|0)>>>0>(c[f+616>>2]|0)>>>0){m=3;break l}NK(pa,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{da=p;ea=c[da+4>>2]|0;ga=pa;c[ga>>2]=c[da>>2];c[ga+4>>2]=ea}if(m&128)Hx(pa);ga=pa;m=c[ga>>2]|0;ga=c[ga+4>>2]|0;if(!(ga>>>0<1|(ga|0)==1&m>>>0<0)){m=4;break l}c[ha>>2]=m;m=0;break l}default:{m=2;break l}}else m=1;while(0);if(!m){ra=e[j>>1]|0;c[sa>>2]=c[ha>>2];if(!(Xv(f,ra,sa)|0)){sa=0;i=ta;return sa|0}else ka=747}else ka=749;break}case 4:{if((b[ra+4>>1]|0)!=1)Sa(115888,114104,4810,115520);if(a[ra+27>>0]|0)Sa(115672,114104,4811,115520);m=XM(f,j,s)|0;if(!m){ra=e[j>>1]|0;c[sa>>2]=e[s>>1];if(!(Xv(f,ra,sa)|0)){sa=0;i=ta;return sa|0}else ka=747}else ka=749;break}case 8:{if((b[ra+4>>1]|0)!=1)Sa(115888,114104,4836,115520);if(a[ra+27>>0]|0)Sa(115672,114104,4837,115520);ha=j+8|0;m:do if((c[ha>>2]|0)==1&(c[ha+4>>2]|0)==0)switch(e[j+2>>1]|0){case 4:{m=c[j+16>>2]|0;c[da>>2]=m;if(c[f+12>>2]&128){Gx(da);m=c[da>>2]|0}ha=ja;c[ha>>2]=m;c[ha+4>>2]=0;m=0;break m}case 1:{m=ja;c[m>>2]=d[j+16>>0];c[m+4>>2]=0;m=0;break m}case 9:{m=c[j+16>>2]|0;c[oa>>2]=m;if(!(c[f+12>>2]&128))n=m;else{Gx(oa);n=c[oa>>2]|0}m=n>>31&4;if(m)break m;m=ja;c[m>>2]=n;c[m+4>>2]=((n|0)<0)<<31>>31;m=0;break m}case 8:{ha=c[f+12>>2]|0;m=b[j+16>>1]|0;b[ea>>1]=m;if(ha&128){Fx(ea);m=b[ea>>1]|0}if(m<<16>>16<=-1){m=4;break m}ha=m<<16>>16;m=ja;c[m>>2]=ha;c[m+4>>2]=((ha|0)<0)<<31>>31;m=0;break m}case 16:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[_>>2]=p;if(m&128){Gx(_);m=c[n>>2]|0;p=c[_>>2]|0}if(!(m&2048)){m=f+628|0;ha=ce[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((ha|0)==(p|0)&(I|0)==0)){m=3;break m}if((Od[c[f+632>>2]&255](c[m>>2]|0,ja,8)|0)!=8){m=3;break m}}else{if(p>>>0>4294967287){m=3;break m}if((p+8|0)>>>0>(c[f+616>>2]|0)>>>0){m=3;break m}NK(ja,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ea=p;ga=c[ea+4>>2]|0;ha=ja;c[ha>>2]=c[ea>>2];c[ha+4>>2]=ga}if(!(m&128)){m=0;break m}Hx(ja);m=0;break m}case 6:{m=a[j+16>>0]|0;if(m<<24>>24<=-1){m=4;break m}ha=m<<24>>24;m=ja;c[m>>2]=ha;c[m+4>>2]=((ha|0)<0)<<31>>31;m=0;break m}case 3:{ha=c[f+12>>2]|0;m=b[j+16>>1]|0;b[sa>>1]=m;if(ha&128){Fx(sa);m=b[sa>>1]|0}ha=ja;c[ha>>2]=m&65535;c[ha+4>>2]=0;m=0;break m}case 17:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[U>>2]=p;if(m&128){Gx(U);m=c[n>>2]|0;p=c[U>>2]|0}if(!(m&2048)){m=f+628|0;ha=ce[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((ha|0)==(p|0)&(I|0)==0)){m=3;break m}if((Od[c[f+632>>2]&255](c[m>>2]|0,pa,8)|0)!=8){m=3;break m}}else{if(p>>>0>4294967287){m=3;break m}if((p+8|0)>>>0>(c[f+616>>2]|0)>>>0){m=3;break m}NK(pa,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ea=p;ga=c[ea+4>>2]|0;ha=pa;c[ha>>2]=c[ea>>2];c[ha+4>>2]=ga}if(m&128)Hx(pa);n=pa;m=c[n>>2]|0;n=c[n+4>>2]|0;if(!((n|0)>-1|(n|0)==-1&m>>>0>4294967295)){m=4;break m}ha=ja;c[ha>>2]=m;c[ha+4>>2]=n;m=0;break m}default:{m=2;break m}}else m=1;while(0);if(!m){ra=e[j>>1]|0;ea=ja;ga=c[ea+4>>2]|0;ha=sa;c[ha>>2]=c[ea>>2];c[ha+4>>2]=ga;if(!(Xv(f,ra,sa)|0)){sa=0;i=ta;return sa|0}else ka=747}else ka=749;break}case 10:{if((b[ra+4>>1]|0)!=1)Sa(115888,114104,4849,115520);if(a[ra+27>>0]|0)Sa(115672,114104,4850,115520);ha=j+8|0;n:do if((c[ha>>2]|0)==1&(c[ha+4>>2]|0)==0)do switch(e[j+2>>1]|0){case 8:{ha=c[f+12>>2]|0;m=b[j+16>>1]|0;b[ea>>1]=m;if(ha&128){Fx(ea);m=b[ea>>1]|0}g[la>>2]=+(m<<16>>16);m=0;break n}case 1:{g[la>>2]=+(d[j+16>>0]|0);m=0;break n}case 3:{ha=c[f+12>>2]|0;m=b[j+16>>1]|0;b[sa>>1]=m;if(ha&128){Fx(sa);m=b[sa>>1]|0}g[la>>2]=+(m&65535);m=0;break n}case 17:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[aa>>2]=p;if(m&128){Gx(aa);m=c[n>>2]|0;p=c[aa>>2]|0}if(!(m&2048)){m=f+628|0;ha=ce[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((ha|0)==(p|0)&(I|0)==0)){m=3;break n}if((Od[c[f+632>>2]&255](c[m>>2]|0,ia,8)|0)!=8){m=3;break n}}else{if(p>>>0>4294967287){m=3;break n}if((p+8|0)>>>0>(c[f+616>>2]|0)>>>0){m=3;break n}NK(ia,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ea=p;ga=c[ea+4>>2]|0;ha=ia;c[ha>>2]=c[ea>>2];c[ha+4>>2]=ga}if(m&128)Hx(ia);m=ia;g[la>>2]=+((c[m>>2]|0)>>>0)+4294967296.0*+(c[m+4>>2]|0);m=0;break n}case 6:{g[la>>2]=+(a[j+16>>0]|0);m=0;break n}case 4:{m=c[j+16>>2]|0;c[da>>2]=m;if(c[f+12>>2]&128){Gx(da);m=c[da>>2]|0}g[la>>2]=+(m>>>0);m=0;break n}case 9:{m=c[j+16>>2]|0;c[oa>>2]=m;if(c[f+12>>2]&128){Gx(oa);m=c[oa>>2]|0}g[la>>2]=+(m|0);m=0;break n}case 16:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[X>>2]=p;if(m&128){Gx(X);m=c[n>>2]|0;p=c[X>>2]|0}if(!(m&2048)){m=f+628|0;ha=ce[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((ha|0)==(p|0)&(I|0)==0)){m=3;break n}if((Od[c[f+632>>2]&255](c[m>>2]|0,pa,8)|0)!=8){m=3;break n}}else{if(p>>>0>4294967287){m=3;break n}if((p+8|0)>>>0>(c[f+616>>2]|0)>>>0){m=3;break n}NK(pa,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ea=p;ga=c[ea+4>>2]|0;ha=pa;c[ha>>2]=c[ea>>2];c[ha+4>>2]=ga}if(m&128)Hx(pa);m=pa;g[la>>2]=+((c[m>>2]|0)>>>0)+4294967296.0*+((c[m+4>>2]|0)>>>0);m=0;break n}case 12:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[V>>2]=p;if(m&128){Gx(V);m=c[n>>2]|0;p=c[V>>2]|0}if(!(m&2048)){m=f+628|0;ha=ce[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((ha|0)==(p|0)&(I|0)==0)){m=3;break n}if((Od[c[f+632>>2]&255](c[m>>2]|0,qa,8)|0)!=8){m=3;break n}}else{if(p>>>0>4294967287){m=3;break n}if((p+8|0)>>>0>(c[f+616>>2]|0)>>>0){m=3;break n}NK(qa,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ha=p;c[k>>2]=c[ha>>2];c[k+4>>2]=c[ha+4>>2];h[qa>>3]=+h[k>>3]}if(m&128)Hx(qa);g[la>>2]=+h[qa>>3];m=0;break n}case 5:{m=MZ(f,j,R)|0;if(m)break n;g[la>>2]=+h[R>>3];m=0;break n}case 11:{ha=c[f+12>>2]|0;g[la>>2]=+g[j+16>>2];if(!(ha&128)){m=0;break n}Gx(la);m=0;break n}case 10:{m=NZ(f,j,na)|0;if(m)break n;g[la>>2]=+h[na>>3];m=0;break n}default:{m=2;break n}}while(0);else m=1;while(0);if(!m){ra=e[j>>1]|0;h[k>>3]=+g[la>>2];c[sa>>2]=c[k>>2];c[sa+4>>2]=c[k+4>>2];if(!(Xv(f,ra,sa)|0)){sa=0;i=ta;return sa|0}else ka=747}else ka=749;break}case 11:{if((b[ra+4>>1]|0)!=1)Sa(115888,114104,4862,115520);if(a[ra+27>>0]|0)Sa(115672,114104,4863,115520);ha=j+8|0;o:do if((c[ha>>2]|0)==1&(c[ha+4>>2]|0)==0)do switch(e[j+2>>1]|0){case 4:{m=c[j+16>>2]|0;c[da>>2]=m;if(c[f+12>>2]&128){Gx(da);m=c[da>>2]|0}h[ma>>3]=+(m>>>0);m=0;break o}case 1:{h[ma>>3]=+(d[j+16>>0]|0);m=0;break o}case 3:{ha=c[f+12>>2]|0;m=b[j+16>>1]|0;b[sa>>1]=m;if(ha&128){Fx(sa);m=b[sa>>1]|0}h[ma>>3]=+(m&65535);m=0;break o}case 8:{ha=c[f+12>>2]|0;m=b[j+16>>1]|0;b[ea>>1]=m;if(ha&128){Fx(ea);m=b[ea>>1]|0}h[ma>>3]=+(m<<16>>16);m=0;break o}case 6:{h[ma>>3]=+(a[j+16>>0]|0);m=0;break o}case 9:{m=c[j+16>>2]|0;c[oa>>2]=m;if(c[f+12>>2]&128){Gx(oa);m=c[oa>>2]|0}h[ma>>3]=+(m|0);m=0;break o}case 16:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[Y>>2]=p;if(m&128){Gx(Y);m=c[n>>2]|0;p=c[Y>>2]|0}if(!(m&2048)){m=f+628|0;ha=ce[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((ha|0)==(p|0)&(I|0)==0)){m=3;break o}if((Od[c[f+632>>2]&255](c[m>>2]|0,pa,8)|0)!=8){m=3;break o}}else{if(p>>>0>4294967287){m=3;break o}if((p+8|0)>>>0>(c[f+616>>2]|0)>>>0){m=3;break o}NK(pa,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ea=p;ga=c[ea+4>>2]|0;ha=pa;c[ha>>2]=c[ea>>2];c[ha+4>>2]=ga}if(m&128)Hx(pa);m=pa;h[ma>>3]=+((c[m>>2]|0)>>>0)+4294967296.0*+((c[m+4>>2]|0)>>>0);m=0;break o}case 11:{ha=c[f+12>>2]|0;o=+g[j+16>>2];g[R>>2]=o;if(ha&128){Gx(R);o=+g[R>>2]}h[ma>>3]=o;m=0;break o}case 5:{m=MZ(f,j,ma)|0;break o}case 10:{m=NZ(f,j,ma)|0;break o}case 12:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[W>>2]=p;if(m&128){Gx(W);m=c[n>>2]|0;p=c[W>>2]|0}if(!(m&2048)){m=f+628|0;ha=ce[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((ha|0)==(p|0)&(I|0)==0)){m=3;break o}if((Od[c[f+632>>2]&255](c[m>>2]|0,ma,8)|0)!=8){m=3;break o}}else{if(p>>>0>4294967287){m=3;break o}if((p+8|0)>>>0>(c[f+616>>2]|0)>>>0){m=3;break o}NK(ma,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ha=p;c[k>>2]=c[ha>>2];c[k+4>>2]=c[ha+4>>2];h[ma>>3]=+h[k>>3]}if(!(m&128)){m=0;break o}Hx(ma);m=0;break o}case 17:{n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[ba>>2]=p;if(m&128){Gx(ba);m=c[n>>2]|0;p=c[ba>>2]|0}if(!(m&2048)){m=f+628|0;ha=ce[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((ha|0)==(p|0)&(I|0)==0)){m=3;break o}if((Od[c[f+632>>2]&255](c[m>>2]|0,ia,8)|0)!=8){m=3;break o}}else{if(p>>>0>4294967287){m=3;break o}if((p+8|0)>>>0>(c[f+616>>2]|0)>>>0){m=3;break o}NK(ia,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ea=p;ga=c[ea+4>>2]|0;ha=ia;c[ha>>2]=c[ea>>2];c[ha+4>>2]=ga}if(m&128)Hx(ia);m=ia;h[ma>>3]=+((c[m>>2]|0)>>>0)+4294967296.0*+(c[m+4>>2]|0);m=0;break o}default:{m=2;break o}}while(0);else m=1;while(0);if(!m){ra=e[j>>1]|0;h[k>>3]=+h[ma>>3];c[sa>>2]=c[k>>2];c[sa+4>>2]=c[k+4>>2];if(!(Xv(f,ra,sa)|0)){sa=0;i=ta;return sa|0}else ka=747}else ka=749;break}case 12:{if((b[ra+4>>1]|0)!=1)Sa(115888,114104,4875,115520);if(a[ra+27>>0]|0)Sa(115672,114104,4876,115520);ha=j+8|0;if((c[ha>>2]|0)==1&(c[ha+4>>2]|0)==0){m=e[j+2>>1]|0;if((m|0)==13|(m|0)==4){m=c[j+16>>2]|0;c[sa>>2]=m;if(c[f+12>>2]&128){Gx(sa);m=c[sa>>2]|0}ra=ga;c[ra>>2]=m;c[ra+4>>2]=0}else if((m|0)==18|(m|0)==16){n=f+12|0;m=c[n>>2]|0;p=j+16|0;if(!(m&524288)){p=c[p>>2]|0;c[ca>>2]=p;if(m&128){Gx(ca);m=c[n>>2]|0;p=c[ca>>2]|0}if(!(m&2048)){m=f+628|0;ha=ce[c[f+640>>2]&255](c[m>>2]|0,p,0,0)|0;if(!((ha|0)==(p|0)&(I|0)==0)){m=3;ka=749;break b}if((Od[c[f+632>>2]&255](c[m>>2]|0,ga,8)|0)!=8){m=3;ka=749;break b}}else{if(p>>>0>4294967287){m=3;ka=749;break b}if((p+8|0)>>>0>(c[f+616>>2]|0)>>>0){m=3;ka=749;break b}NK(ga,(c[f+612>>2]|0)+p|0,8)}m=c[n>>2]|0}else{ea=p;ha=c[ea+4>>2]|0;ra=ga;c[ra>>2]=c[ea>>2];c[ra+4>>2]=ha}if(m&128)Hx(ga)}else{m=2;ka=749;break b}ra=e[j>>1]|0;ea=ga;ga=c[ea+4>>2]|0;ha=sa;c[ha>>2]=c[ea>>2];c[ha+4>>2]=ga;if(!(Xv(f,ra,sa)|0)){sa=0;i=ta;return sa|0}else ka=747}else{m=1;ka=749}break}case 16:{m=b[ra+4>>1]|0;if(m<<16>>16<=0)Sa(115992,114104,4910,115520);if(a[ra+27>>0]|0)Sa(115672,114104,4911,115520);ga=j+8|0;n=c[ga>>2]|0;ha=m<<16>>16;if(!((n|0)==(ha|0)?(c[ga+4>>2]|0)==(((ha|0)<0)<<31>>31|0):0)){ha=c[f+628>>2]|0;c[sa>>2]=c[ra+28>>2];c[sa+4>>2]=m<<16>>16;c[sa+8>>2]=n;Zx(ha,115520,116016,sa);sa=0;i=ta;return sa|0}m=LZ(f,j,Q)|0;if(!m){m=e[j>>1]|0;n=c[Q>>2]|0;c[sa>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749;break}case 20:{m=b[ra+4>>1]|0;if(m<<16>>16<=0)Sa(115992,114104,4958,115520);if(a[ra+27>>0]|0)Sa(115672,114104,4959,115520);ga=j+8|0;ha=m<<16>>16;if((c[ga>>2]|0)==(ha|0)?(c[ga+4>>2]|0)==(((ha|0)<0)<<31>>31|0):0){m=OZ(f,j,E)|0;if(!m){m=e[j>>1]|0;n=c[E>>2]|0;c[sa>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749}else ka=747;break}case 18:{m=b[ra+4>>1]|0;if(m<<16>>16<=0)Sa(115992,114104,4936,115520);if(a[ra+27>>0]|0)Sa(115672,114104,4937,115520);ga=j+8|0;ha=m<<16>>16;if((c[ga>>2]|0)==(ha|0)?(c[ga+4>>2]|0)==(((ha|0)<0)<<31>>31|0):0){m=YM(f,j,D)|0;if(!m){m=e[j>>1]|0;n=c[D>>2]|0;c[sa>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749}else ka=747;break}case 24:{m=b[ra+4>>1]|0;if(m<<16>>16<=0)Sa(115992,114104,4980,115520);if(a[ra+27>>0]|0)Sa(115672,114104,4981,115520);ga=j+8|0;ha=m<<16>>16;if((c[ga>>2]|0)==(ha|0)?(c[ga+4>>2]|0)==(((ha|0)<0)<<31>>31|0):0){m=PZ(f,j,F)|0;if(!m){m=e[j>>1]|0;n=c[F>>2]|0;c[sa>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749}else ka=747;break}case 14:{if((b[ra+4>>1]|0)!=2)Sa(115912,114104,4888,115520);if(a[ra+27>>0]|0)Sa(115672,114104,4889,115520);ha=j+8|0;m=c[ha>>2]|0;if(!((m|0)==2&(c[ha+4>>2]|0)==0)){ha=c[f+628>>2]|0;c[sa>>2]=c[ra+28>>2];c[sa+4>>2]=m;Zx(ha,115520,115936,sa);sa=0;i=ta;return sa|0}m=YM(f,j,P)|0;if(!m){ha=e[j>>1]|0;ra=c[P>>2]|0;ga=e[ra+2>>1]|0;c[sa>>2]=e[ra>>1];c[sa+4>>2]=ga;sa=Xv(f,ha,sa)|0;KK(ra);if(!sa){sa=0;i=ta;return sa|0}else ka=747}else ka=749;break}case 27:{if((b[ra+4>>1]|0)!=-1)Sa(116072,114104,5002,115520);if((a[ra+27>>0]|0)!=1)Sa(116112,114104,5003,115520);p=j+8|0;ha=p;ga=c[ha+4>>2]|0;if(!(ga>>>0>0|(ga|0)==0&(c[ha>>2]|0)>>>0>65535)){m=LZ(f,j,G)|0;if(!m){m=e[j>>1]|0;n=c[G>>2]|0;c[sa>>2]=c[p>>2]&65535;c[sa+4>>2]=n;m=Xv(f,m,sa)|0;if(n)KK(n);if(!m){sa=0;i=ta;return sa|0}else ka=748}else ka=749}else{m=1;ka=749}break}default:Sa(116176,114104,5380,115520)}while(0);if((ka|0)==747){sa=1;i=ta;return sa|0}else if((ka|0)==748){sa=1;i=ta;return sa|0}else if((ka|0)==749){ZM(f,m,115520,c[ra+28>>2]|0,l);sa=0;i=ta;return sa|0}}while(0);ra=c[f+628>>2]|0;c[sa>>2]=q&65535;Dw(ra,115520,115544,sa);sa=0;i=ta;return sa|0}function XM(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;o=r+28|0;n=r+24|0;k=r+32|0;l=r+16|0;m=r+20|0;p=r+8|0;q=r;j=g+8|0;if(!((c[j>>2]|0)==1&(c[j+4>>2]|0)==0)){h=1;i=r;return h|0}switch(e[g+2>>1]|0|0){case 8:{f=c[f+12>>2]|0;j=b[g+16>>1]|0;b[k>>1]=j;if(f&128){Fx(k);j=b[k>>1]|0}if(j<<16>>16<=-1){h=4;i=r;return h|0}b[h>>1]=j;h=0;i=r;return h|0}case 17:{m=f+12|0;j=c[m>>2]|0;k=g+16|0;if(!(j&524288)){k=c[k>>2]|0;c[n>>2]=k;if(j&128){Gx(n);j=c[m>>2]|0;k=c[n>>2]|0}do if(!(j&2048)){j=f+628|0;o=ce[c[f+640>>2]&255](c[j>>2]|0,k,0,0)|0;if(!((o|0)==(k|0)&(I|0)==0)){h=3;i=r;return h|0}if((Od[c[f+632>>2]&255](c[j>>2]|0,q,8)|0)!=8){h=3;i=r;return h|0}}else{if(k>>>0>4294967287){h=3;i=r;return h|0}if((k+8|0)>>>0>(c[f+616>>2]|0)>>>0){h=3;i=r;return h|0}else{NK(q,(c[f+612>>2]|0)+k|0,8);break}}while(0);j=c[m>>2]|0}else{g=k;o=c[g+4>>2]|0;f=q;c[f>>2]=c[g>>2];c[f+4>>2]=o}if(j&128)Hx(q);f=q;j=c[f>>2]|0;f=c[f+4>>2]|0;if(!(f>>>0<0|(f|0)==0&j>>>0<65536)){h=4;i=r;return h|0}b[h>>1]=j;h=0;i=r;return h|0}case 6:{j=a[g+16>>0]|0;if(j<<24>>24<=-1){h=4;i=r;return h|0}b[h>>1]=j<<24>>24;h=0;i=r;return h|0}case 1:{b[h>>1]=d[g+16>>0]|0;h=0;i=r;return h|0}case 9:{j=c[g+16>>2]|0;c[m>>2]=j;if(c[f+12>>2]&128){Gx(m);j=c[m>>2]|0}if(j>>>0>=65536){h=4;i=r;return h|0}b[h>>1]=j;h=0;i=r;return h|0}case 3:{f=c[f+12>>2]|0;b[h>>1]=b[g+16>>1]|0;if(!(f&128)){h=0;i=r;return h|0}Fx(h);h=0;i=r;return h|0}case 16:{m=f+12|0;j=c[m>>2]|0;k=g+16|0;if(!(j&524288)){k=c[k>>2]|0;c[o>>2]=k;if(j&128){Gx(o);j=c[m>>2]|0;k=c[o>>2]|0}do if(!(j&2048)){j=f+628|0;o=ce[c[f+640>>2]&255](c[j>>2]|0,k,0,0)|0;if(!((o|0)==(k|0)&(I|0)==0)){h=3;i=r;return h|0}if((Od[c[f+632>>2]&255](c[j>>2]|0,p,8)|0)!=8){h=3;i=r;return h|0}}else{if(k>>>0>4294967287){h=3;i=r;return h|0}if((k+8|0)>>>0>(c[f+616>>2]|0)>>>0){h=3;i=r;return h|0}else{NK(p,(c[f+612>>2]|0)+k|0,8);break}}while(0);j=c[m>>2]|0}else{g=k;o=c[g+4>>2]|0;f=p;c[f>>2]=c[g>>2];c[f+4>>2]=o}if(j&128)Hx(p);f=p;j=c[f>>2]|0;f=c[f+4>>2]|0;if(!(f>>>0<0|(f|0)==0&j>>>0<65536)){h=4;i=r;return h|0}b[h>>1]=j;h=0;i=r;return h|0}case 4:{j=c[g+16>>2]|0;c[l>>2]=j;if(c[f+12>>2]&128){Gx(l);j=c[l>>2]|0}if(j>>>0>=65536){h=4;i=r;return h|0}b[h>>1]=j;h=0;i=r;return h|0}default:{h=2;i=r;return h|0}}return 0}function YM(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+16|0;j=p+4|0;l=p;k=g+2|0;switch(e[k>>1]|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{n=2;i=p;return n|0}}g=SZ(f,g,j,2,l)|0;o=c[l>>2]|0;if((g|0)!=0|(o|0)==0){c[h>>2]=0;n=g;i=p;return n|0}g=e[k>>1]|0;if((g|0)==3){c[h>>2]=o;if(!(c[f+12>>2]&128)){n=0;i=p;return n|0}Ix(o,c[j>>2]|0);n=0;i=p;return n|0}else if((g|0)!=8){m=c[j>>2]|0;n=JK(m<<1)|0;if(!n){KK(o);n=7;i=p;return n|0}a:do switch(e[k>>1]|0){case 16:{if(!m)g=48;else{g=f+12|0;j=o;k=n;f=0;while(1){if(c[g>>2]&128)Hx(j);q=j;l=c[q>>2]|0;q=c[q+4>>2]|0;if(!(q>>>0<0|(q|0)==0&l>>>0<65536)){g=47;break a}b[k>>1]=l;f=f+1|0;if(f>>>0>=m>>>0){g=48;break}else{j=j+8|0;k=k+2|0}}}break}case 1:{if(!m)g=48;else{g=o;l=n;j=0;while(1){b[l>>1]=d[g>>0]|0;j=j+1|0;if(j>>>0>=m>>>0){g=48;break}else{g=g+1|0;l=l+2|0}}}break}case 9:{if(!m)g=48;else{g=f+12|0;j=o;k=n;f=0;while(1){if(c[g>>2]&128)Gx(j);l=c[j>>2]|0;if(l>>>0>=65536){g=47;break a}b[k>>1]=l;f=f+1|0;if(f>>>0>=m>>>0){g=48;break}else{j=j+4|0;k=k+2|0}}}break}case 6:{if(!m)g=48;else{l=o;j=n;k=0;while(1){g=a[l>>0]|0;if(g<<24>>24<=-1){g=47;break a}b[j>>1]=g<<24>>24;k=k+1|0;if(k>>>0>=m>>>0){g=48;break}else{l=l+1|0;j=j+2|0}}}break}case 17:{if(!m)g=48;else{g=f+12|0;j=o;k=n;f=0;while(1){if(c[g>>2]&128)Hx(j);q=j;l=c[q>>2]|0;q=c[q+4>>2]|0;if(!(q>>>0<0|(q|0)==0&l>>>0<65536)){g=47;break a}b[k>>1]=l;f=f+1|0;if(f>>>0>=m>>>0){g=48;break}else{j=j+8|0;k=k+2|0}}}break}case 4:{if(!m)g=48;else{g=f+12|0;j=o;k=n;f=0;while(1){if(c[g>>2]&128)Gx(j);l=c[j>>2]|0;if(l>>>0>=65536){g=47;break a}b[k>>1]=l;f=f+1|0;if(f>>>0>=m>>>0){g=48;break}else{j=j+4|0;k=k+2|0}}}break}default:g=48}while(0);if((g|0)==47){KK(o);KK(n);q=4;i=p;return q|0}else if((g|0)==48){KK(o);c[h>>2]=n;q=0;i=p;return q|0}}else{l=c[j>>2]|0;b:do if(l){g=f+12|0;j=o;k=0;while(1){if(c[g>>2]&128)Fx(j);if((b[j>>1]|0)<=-1)break;k=k+1|0;if(k>>>0>=l>>>0)break b;else j=j+2|0}KK(o);q=4;i=p;return q|0}while(0);c[h>>2]=o;q=0;i=p;return q|0}return 0}function ZM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+16|0;g=h;if(!f)switch(b|0){case 6:{a=c[a+628>>2]|0;c[g>>2]=e;Dw(a,d,117256,g);i=h;return}case 4:{a=c[a+628>>2]|0;c[g>>2]=e;Dw(a,d,117168,g);i=h;return}case 3:{a=c[a+628>>2]|0;c[g>>2]=e;Dw(a,d,117136,g);i=h;return}case 2:{a=c[a+628>>2]|0;c[g>>2]=e;Dw(a,d,117104,g);i=h;return}case 7:{a=c[a+628>>2]|0;c[g>>2]=e;Dw(a,d,117304,g);i=h;return}case 1:{a=c[a+628>>2]|0;c[g>>2]=e;Dw(a,d,117072,g);i=h;return}case 5:{a=c[a+628>>2]|0;c[g>>2]=e;Dw(a,d,117200,g);i=h;return}default:Sa(116176,114104,3371,117336)}else switch(b|0){case 2:{a=c[a+628>>2]|0;c[g>>2]=e;Zx(a,d,117408,g);i=h;return}case 3:{a=c[a+628>>2]|0;c[g>>2]=e;Zx(a,d,117448,g);i=h;return}case 4:{a=c[a+628>>2]|0;c[g>>2]=e;Zx(a,d,117496,g);i=h;return}case 6:{a=c[a+628>>2]|0;c[g>>2]=e;Zx(a,d,117600,g);i=h;return}case 1:{a=c[a+628>>2]|0;c[g>>2]=e;Zx(a,d,117368,g);i=h;return}case 5:{a=c[a+628>>2]|0;c[g>>2]=e;Zx(a,d,117536,g);i=h;return}case 7:{a=c[a+628>>2]|0;c[g>>2]=e;Zx(a,d,117656,g);i=h;return}default:Sa(116176,114104,3412,117336)}}function _M(f,j,k){f=f|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;m=u+4|0;l=u;n=j+2|0;switch(e[n>>1]|0){case 12:case 11:case 10:case 5:case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{k=2;i=u;return k|0}}j=SZ(f,j,m,8,l)|0;t=c[l>>2]|0;if((j|0)!=0|(t|0)==0){c[k>>2]=0;k=j;i=u;return k|0}if((b[n>>1]|0)==12){if(c[f+12>>2]&128)Lx(t,c[m>>2]|0);c[k>>2]=t;k=0;i=u;return k|0}r=c[m>>2]|0;s=JK(r<<3)|0;if(!s){KK(t);k=7;i=u;return k|0}do switch(e[n>>1]|0){case 6:{if(r){j=t;l=s;m=0;while(1){h[l>>3]=+(a[j>>0]|0);m=m+1|0;if(m>>>0>=r>>>0)break;else{j=j+1|0;l=l+8|0}}}break}case 9:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Gx(l);h[m>>3]=+(c[l>>2]|0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+4|0;m=m+8|0}}}break}case 16:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Hx(l);p=l;h[m>>3]=+((c[p>>2]|0)>>>0)+4294967296.0*+((c[p+4>>2]|0)>>>0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+8|0;m=m+8|0}}}break}case 4:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Gx(l);h[m>>3]=+((c[l>>2]|0)>>>0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+4|0;m=m+8|0}}}break}case 10:{if(r){m=f+12|0;f=t;p=s;q=0;while(1){j=c[m>>2]|0;if(j&128){Gx(f);j=c[m>>2]|0}l=c[f>>2]|0;n=f+4|0;if(j&128)Gx(n);j=c[n>>2]|0;if(!j)o=0.0;else o=+(l|0)/+(j>>>0);h[p>>3]=o;q=q+1|0;if(q>>>0>=r>>>0)break;else{f=f+8|0;p=p+8|0}}}break}case 17:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Hx(l);p=l;h[m>>3]=+((c[p>>2]|0)>>>0)+4294967296.0*+(c[p+4>>2]|0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+8|0;m=m+8|0}}}break}case 5:{if(r){m=f+12|0;f=t;p=s;q=0;while(1){j=c[m>>2]|0;if(j&128){Gx(f);j=c[m>>2]|0}n=f+4|0;l=c[f>>2]|0;if(j&128)Gx(n);j=c[n>>2]|0;if(!j)o=0.0;else o=+(l>>>0)/+(j>>>0);h[p>>3]=o;q=q+1|0;if(q>>>0>=r>>>0)break;else{f=f+8|0;p=p+8|0}}}break}case 3:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Fx(l);h[m>>3]=+(e[l>>1]|0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+2|0;m=m+8|0}}}break}case 1:{if(r){j=t;l=s;m=0;while(1){h[l>>3]=+(d[j>>0]|0);m=m+1|0;if(m>>>0>=r>>>0)break;else{j=j+1|0;l=l+8|0}}}break}case 8:{if(r){j=f+12|0;l=t;m=s;n=0;while(1){if(c[j>>2]&128)Fx(l);h[m>>3]=+(b[l>>1]|0);n=n+1|0;if(n>>>0>=r>>>0)break;else{l=l+2|0;m=m+8|0}}}break}case 11:{if(c[f+12>>2]&128)Kx(t,r);if(r){j=t;l=s;m=0;while(1){h[l>>3]=+g[j>>2];m=m+1|0;if(m>>>0>=r>>>0)break;else{j=j+4|0;l=l+8|0}}}break}default:{}}while(0);KK(t);c[k>>2]=s;k=0;i=u;return k|0}function $M(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;j=k;g=QZ(a,b,j)|0;if(g){b=nw(a,e[b>>1]|0)|0;if(!b)b=114344;else b=c[b+28>>2]|0;ZM(a,g,115408,b,0);f=0;i=k;return f|0}h=b+8|0;g=h;if((c[g+4>>2]|0)==0?(c[g>>2]|0)==(d|0):0)b=c[j>>2]|0;else{b=Av(a,d,8,115432)|0;if(!b){KK(c[j>>2]|0);f=0;i=k;return f|0}l=h;g=c[l>>2]|0;l=c[l+4>>2]|0;a=c[j>>2]|0;if(l>>>0<0|(l|0)==0&g>>>0>>0){NK(b,a,g<<3);l=c[h>>2]|0;MK(b+(l<<3)|0,0,d-l<<3)}else NK(b,a,d<<3);KK(a);c[j>>2]=b}c[f>>2]=b;f=1;i=k;return f|0}function aN(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+16|0;n=s;r=a+176|0;g=c[r>>2]|0;if(g)KK(g);o=a+168|0;q=Av(a,c[o>>2]|0,8,116896)|0;c[r>>2]=q;if(!q){a=-1;i=s;return a|0}do if((b[a+88>>1]|0)==1)if(!(c[a+12>>2]&1024)){g=zx(a)|0;j=c[o>>2]|0;if(!j)break;f=Tga(((c[a+60>>2]|0)>>>0)/((c[a+164>>2]|0)>>>0)|0|0,0,g|0,I|0)|0;h=I;g=c[r>>2]|0;d=0;do{r=g+(d<<3)|0;c[r>>2]=f;c[r+4>>2]=h;d=d+1|0}while(d>>>0>>0)}else{h=Wx(a)|0;j=I;f=c[o>>2]|0;if(!f)break;g=c[r>>2]|0;d=0;do{r=g+(d<<3)|0;c[r>>2]=h;c[r+4>>2]=j;d=d+1|0}while(d>>>0>>0)}else{l=a+628|0;p=Ld[c[a+648>>2]&511](c[l>>2]|0)|0;q=I;m=a+12|0;g=f&65535;if(!(c[m>>2]&524288))h=(g*12|0)+14|0;else h=(g*20|0)+32|0;a:do if(!(f<<16>>16))g=0;else{g=0;j=d;k=f;while(1){d=j+2|0;f=lw(e[d>>1]|0)|0;if(!f)break;t=j+8|0;t=Tga(c[t>>2]|0,c[t+4>>2]|0,f|0,0)|0;f=I;d=(c[m>>2]&524288|0)==0?f>>>0<0|(f|0)==0&t>>>0<5:f>>>0<0|(f|0)==0&t>>>0<9;h=Iga((d?0:t)|0,(d?0:f)|0,h|0,g|0)|0;g=I;k=k+-1<<16>>16;if(!(k<<16>>16))break a;else j=j+24|0}t=c[l>>2]|0;c[n>>2]=e[d>>1];Dw(t,116872,116928,n);t=-1;i=s;return t|0}while(0);g=Hga(p|0,q|0,h|0,g|0)|0;h=I;if((b[a+126>>1]|0)==2){g=Uga(g|0,h|0,e[a+98>>1]|0,0)|0;h=I}j=c[o>>2]|0;k=c[r>>2]|0;if(!j)g=-1;else{d=j>>>0>1;f=0;do{t=k+(f<<3)|0;c[t>>2]=g;c[t+4>>2]=h;f=f+1|0}while(f>>>0>>0);g=d?j+-1|0:0}d=(c[a+172>>2]|0)+(g<<3)|0;h=c[d>>2]|0;d=c[d+4>>2]|0;g=k+(g<<3)|0;t=g;t=Iga(c[t>>2]|0,c[t+4>>2]|0,h|0,d|0)|0;r=I;if(r>>>0>q>>>0|(r|0)==(q|0)&t>>>0>p>>>0){r=Hga(p|0,q|0,h|0,d|0)|0;t=g;c[t>>2]=r;c[t+4>>2]=I}}while(0);r=a+40|0;t=c[r>>2]|0;c[r>>2]=t|16777216;if(t&131072){t=1;i=s;return t|0}c[a+100>>2]=c[a+60>>2];t=1;i=s;return t|0}function bN(d,f,h,j){d=d|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0;fb=i;i=i+96|0;eb=fb+32|0;Ha=fb+68|0;Ia=fb+8|0;Ja=fb+72|0;Fa=fb+80|0;Na=fb+64|0;Ka=fb;Ga=fb+24|0;Oa=fb+16|0;bb=fb+76|0;La=fb+84|0;Ma=fb+40|0;Ta=fb+60|0;Pa=fb+82|0;Qa=fb+48|0;Ra=fb+52|0;Ua=fb+56|0;Ya=fb+44|0;if(!(c[d+8>>2]|0)){eb=1;i=fb;return eb|0}cb=(h|0)!=0;db=d+12|0;if(cb){h=c[db>>2]|0;if((h&4096|0)!=0?(c[db>>2]=h&-4097,(Ld[c[d+528>>2]&511](d)|0)==0):0){Dw(c[d+628>>2]|0,118480,118320,eb);eb=0;i=fb;return eb|0}Id[c[d+556>>2]&511](d);m=d+608|0;if(((c[m>>2]|0)>0?(c[db>>2]&64|0)!=0:0)?(cy(d)|0)==0:0){Dw(c[d+628>>2]|0,118480,118368,eb);eb=0;i=fb;return eb|0}h=c[db>>2]|0;if((h&512|0)!=0?(k=d+588|0,l=c[k>>2]|0,(l|0)!=0):0){KK(l);c[m>>2]=0;c[k+0>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;h=c[db>>2]|0}c[db>>2]=h&-81}x=(f|0)!=0;y=d+40|0;z=d+156|0;A=d+44|0;B=d+184|0;C=d+464|0;D=d+188|0;E=d+472|0;Da=d+480|0;F=d+660|0;G=d+656|0;H=d+216|0;J=d+220|0;K=d+84|0;L=d+98|0;M=d+200|0;N=d+204|0;O=d+208|0;P=d+212|0;Q=d+196|0;R=d+192|0;S=d+152|0;T=d+76|0;U=d+64|0;V=d+112|0;W=d+108|0;X=d+86|0;Y=d+140|0;Z=d+144|0;_=d+148|0;$=d+168|0;aa=d+172|0;ba=d+176|0;ca=d+136|0;da=d+124|0;ea=d+126|0;fa=d+106|0;ga=d+104|0;ha=d+100|0;ia=d+96|0;ja=d+94|0;ka=d+92|0;la=d+90|0;ma=d+88|0;na=d+80|0;oa=d+128|0;pa=d+132|0;qa=d+116|0;ra=d+120|0;sa=d+68|0;ta=d+72|0;ua=d+56|0;va=d+60|0;wa=d+224|0;Za=d+16|0;_a=d+640|0;$a=d+628|0;xa=d+432|0;ab=d+636|0;ya=d+632|0;za=d+428|0;Aa=(j|0)==0;Ba=d+448|0;Ca=d+228|0;h=0;p=0;a:while(1){c[bb>>2]=0;do if(x){do if(c[y>>2]&2){m=c[ua>>2]|0;k=(h|0)==0;if(!k){if(m>>>0<65536){b[eb>>1]=m;if(c[db>>2]&128)Fx(eb);m=TZ(d,bb,h,256,3,1,2,eb)|0}else{c[eb>>2]=m;if(c[db>>2]&128)Gx(eb);m=TZ(d,bb,h,256,4,1,4,eb)|0}if(!m){Wa=596;break a}m=c[va>>2]|0;if(!k){if(m>>>0<65536){b[eb>>1]=m;if(c[db>>2]&128)Fx(eb);m=TZ(d,bb,h,257,3,1,2,eb)|0}else{c[eb>>2]=m;if(c[db>>2]&128)Gx(eb);m=TZ(d,bb,h,257,4,1,4,eb)|0}if(!m){Wa=596;break a}else break}}else c[bb>>2]=1;c[bb>>2]=(c[bb>>2]|0)+1}while(0);do if(c[y>>2]&4){m=c[sa>>2]|0;k=(h|0)==0;if(!k){if(m>>>0<65536){b[eb>>1]=m;if(c[db>>2]&128)Fx(eb);m=TZ(d,bb,h,322,3,1,2,eb)|0}else{c[eb>>2]=m;if(c[db>>2]&128)Gx(eb);m=TZ(d,bb,h,322,4,1,4,eb)|0}if(!m){Wa=596;break a}m=c[ta>>2]|0;if(!k){if(m>>>0<65536){b[eb>>1]=m;if(c[db>>2]&128)Fx(eb);m=TZ(d,bb,h,323,3,1,2,eb)|0}else{c[eb>>2]=m;if(c[db>>2]&128)Gx(eb);m=TZ(d,bb,h,323,4,1,4,eb)|0}if(!m){Wa=596;break a}else break}}else c[bb>>2]=(c[bb>>2]|0)+1;c[bb>>2]=(c[bb>>2]|0)+1}while(0);m=c[y>>2]|0;if(m&8){if(!(UZ(d,bb,h,282,+g[qa>>2])|0)){Wa=596;break a}if(!(UZ(d,bb,h,283,+g[ra>>2])|0)){Wa=596;break a}m=c[y>>2]|0}if(m&16){if(!(UZ(d,bb,h,286,+g[oa>>2])|0)){Wa=596;break a}if(!(UZ(d,bb,h,287,+g[pa>>2])|0)){Wa=596;break a}m=c[y>>2]|0}do if(m&32){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}c[eb>>2]=c[na>>2];if(c[db>>2]&128)Gx(eb);if(!(TZ(d,bb,h,254,4,1,4,eb)|0)){Wa=596;break a}m=c[y>>2]|0}while(0);do if(m&64){f=b[K>>1]|0;if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}n=JK(e[L>>1]<<1)|0;if(!n){Wa=78;break a}if(!(b[L>>1]|0))m=0;else{k=n;l=0;while(1){b[k>>1]=f;l=l+1<<16>>16;m=b[L>>1]|0;if((l&65535)>=(m&65535))break;else k=k+2|0}}m=m&65535;if(c[db>>2]&128)Ix(n,m);w=TZ(d,bb,h,258,3,m,m<<1,n)|0;KK(n);if(!w){Wa=596;break a}m=c[y>>2]|0}while(0);do if(m&128){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}b[eb>>1]=b[ma>>1]|0;if(c[db>>2]&128)Fx(eb);if(!(TZ(d,bb,h,259,3,1,2,eb)|0)){Wa=596;break a}m=c[y>>2]|0}while(0);do if(m&256){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}b[eb>>1]=b[la>>1]|0;if(c[db>>2]&128)Fx(eb);if(!(TZ(d,bb,h,262,3,1,2,eb)|0)){Wa=596;break a}m=c[y>>2]|0}while(0);do if(m&512){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}b[eb>>1]=b[ka>>1]|0;if(c[db>>2]&128)Fx(eb);if(!(TZ(d,bb,h,263,3,1,2,eb)|0)){Wa=596;break a}m=c[y>>2]|0}while(0);do if(m&1024){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}b[eb>>1]=b[ja>>1]|0;if(c[db>>2]&128)Fx(eb);if(!(TZ(d,bb,h,266,3,1,2,eb)|0)){Wa=596;break a}m=c[y>>2]|0}while(0);do if(m&32768){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}b[eb>>1]=b[ia>>1]|0;if(c[db>>2]&128)Fx(eb);if(!(TZ(d,bb,h,274,3,1,2,eb)|0)){Wa=596;break a}m=c[y>>2]|0}while(0);do if(m&65536){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}b[eb>>1]=b[L>>1]|0;if(c[db>>2]&128)Fx(eb);if(!(TZ(d,bb,h,277,3,1,2,eb)|0)){Wa=596;break a}m=c[y>>2]|0}while(0);do if(m&131072){k=c[ha>>2]|0;if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}if(k>>>0<65536){b[eb>>1]=k;if(c[db>>2]&128)Fx(eb);m=TZ(d,bb,h,278,3,1,2,eb)|0}else{c[eb>>2]=k;if(c[db>>2]&128)Gx(eb);m=TZ(d,bb,h,278,4,1,4,eb)|0}if(!m){Wa=596;break a}m=c[y>>2]|0}while(0);do if(m&262144){f=b[ga>>1]|0;if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}n=JK(e[L>>1]<<1)|0;if(!n){Wa=143;break a}if(!(b[L>>1]|0))m=0;else{k=n;l=0;while(1){b[k>>1]=f;l=l+1<<16>>16;m=b[L>>1]|0;if((l&65535)>=(m&65535))break;else k=k+2|0}}m=m&65535;if(c[db>>2]&128)Ix(n,m);w=TZ(d,bb,h,280,3,m,m<<1,n)|0;KK(n);if(!w){Wa=596;break a}m=c[y>>2]|0}while(0);do if(m&524288){f=b[fa>>1]|0;if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}n=JK(e[L>>1]<<1)|0;if(!n){Wa=154;break a}if(!(b[L>>1]|0))m=0;else{k=n;l=0;while(1){b[k>>1]=f;l=l+1<<16>>16;m=b[L>>1]|0;if((l&65535)>=(m&65535))break;else k=k+2|0}}m=m&65535;if(c[db>>2]&128)Ix(n,m);w=TZ(d,bb,h,281,3,m,m<<1,n)|0;KK(n);if(!w){Wa=596;break a}m=c[y>>2]|0}while(0);do if(m&1048576){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}b[eb>>1]=b[ea>>1]|0;if(c[db>>2]&128)Fx(eb);if(!(TZ(d,bb,h,284,3,1,2,eb)|0)){Wa=596;break a}m=c[y>>2]|0}while(0);do if(m&4194304){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}b[eb>>1]=b[da>>1]|0;if(c[db>>2]&128)Fx(eb);if(!(TZ(d,bb,h,296,3,1,2,eb)|0)){Wa=596;break a}m=c[y>>2]|0}while(0);do if(m&8388608){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}if(c[db>>2]&128)Ix(ca,2);if(!(TZ(d,bb,h,297,3,2,4,ca)|0)){Wa=596;break a}m=c[y>>2]|0}while(0);do if(m&16777216){m=c[$>>2]|0;k=c[ba>>2]|0;if(!(c[db>>2]&1024))if(!(VZ(d,bb,h,279,m,k)|0)){Wa=596;break a}else break;else if(!(VZ(d,bb,h,325,m,k)|0)){Wa=596;break a}else break}while(0);do if(c[y>>2]&33554432){m=c[$>>2]|0;k=c[aa>>2]|0;if(!(c[db>>2]&1024))if(!(VZ(d,bb,h,273,m,k)|0)){Wa=596;break a}else break;else if(!(VZ(d,bb,h,324,m,k)|0)){Wa=596;break a}else break}while(0);m=c[y>>2]|0;do if(m&67108864){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}k=e[K>>1]|0;m=1<>2]|0,w);NK(f+(m<<1)|0,c[Z>>2]|0,w);NK(f+(w<<1)|0,c[_>>2]|0,w);if((k|0)<=-1){Wa=195;break a}if(c[db>>2]&128)Ix(f,k);w=TZ(d,bb,h,320,3,k,l,f)|0;KK(f);if(!w){Wa=596;break a}m=c[y>>2]|0}while(0);do if((m|0)<0){if(!(b[z>>1]|0))break;c[eb>>2]=La;c[eb+4>>2]=Ma;Cv(d,338,eb)|0;m=e[La>>1]|0;k=c[Ma>>2]|0;if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}if(c[db>>2]&128)Ix(k,m);if(!(TZ(d,bb,h,338,3,m,m<<1,k)|0)){Wa=596;break a}}while(0);m=c[A>>2]|0;do if(m&1){f=b[X>>1]|0;if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}n=JK(e[L>>1]<<1)|0;if(!n){Wa=212;break a}if(!(b[L>>1]|0))m=0;else{k=n;l=0;while(1){b[k>>1]=f;l=l+1<<16>>16;m=b[L>>1]|0;if((l&65535)>=(m&65535))break;else k=k+2|0}}m=m&65535;if(c[db>>2]&128)Ix(n,m);w=TZ(d,bb,h,339,3,m,m<<1,n)|0;KK(n);if(!w){Wa=596;break a}m=c[A>>2]|0}while(0);if(m&2){if(!(WZ(d,bb,h,340,e[L>>1]|0,c[W>>2]|0)|0)){Wa=596;break a}m=c[A>>2]|0}if(m&4){if(!(WZ(d,bb,h,341,e[L>>1]|0,c[V>>2]|0)|0)){Wa=596;break a}m=c[A>>2]|0}do if(m&8){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}c[eb>>2]=c[U>>2];if(c[db>>2]&128)Gx(eb);if(!(TZ(d,bb,h,-32539,4,1,4,eb)|0)){Wa=596;break a}m=c[A>>2]|0}while(0);do if(m&16){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}c[eb>>2]=c[T>>2];if(c[db>>2]&128)Gx(eb);if(!(TZ(d,bb,h,-32538,4,1,4,eb)|0)){Wa=596;break a}m=c[A>>2]|0}while(0);do if(m&32){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}if(c[db>>2]&128)Ix(S,2);if(!(TZ(d,bb,h,321,3,2,4,S)|0)){Wa=596;break a}m=c[A>>2]|0}while(0);do if(m&128){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}if(c[db>>2]&128)Ix(R,2);if(!(TZ(d,bb,h,530,3,2,4,R)|0)){Wa=596;break a}m=c[A>>2]|0}while(0);do if(m&256){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}b[eb>>1]=b[Q>>1]|0;if(c[db>>2]&128)Fx(eb);if(!(TZ(d,bb,h,531,3,1,2,eb)|0)){Wa=596;break a}m=c[A>>2]|0}while(0);if(m&512){if(!(XZ(d,bb,h,532,6,c[P>>2]|0)|0)){Wa=596;break a}m=c[A>>2]|0}do if(m&4096){if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}k=e[K>>1]|0;o=1<>1]|0)-(e[z>>1]|0)|0;m=(m&65532)>>>0>3?3:m&65535;if(m<<16>>16==2){m=o<<1;Wa=268}else if(m<<16>>16==3){m=o<<1;if(!(OK(c[M>>2]|0,c[O>>2]|0,m)|0))Wa=268;else m=3}if((Wa|0)==268){Wa=0;m=(OK(c[M>>2]|0,c[N>>2]|0,m)|0)==0;m=m?1:2}n=m<<16>>16==0?1:m;m=(n&65535)<>2]|0,f);do if((n&65535)>1){NK(l+(o<<1)|0,c[N>>2]|0,f);if((n&65535)<=2)break;NK(l+(f<<1)|0,c[O>>2]|0,f)}while(0);if((m|0)<=-1){Wa=275;break a}if(c[db>>2]&128)Ix(l,m);w=TZ(d,bb,h,301,3,m,k,l)|0;KK(l);if(!w){Wa=596;break a}m=c[A>>2]|0}while(0);do if(m&16384){k=c[H>>2]|0;if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}if(!(TZ(d,bb,h,333,2,k,k,c[J>>2]|0)|0)){Ea=h;break a}m=c[A>>2]|0}while(0);do if(m&131072){w=b[B>>1]|0;m=w&65535;if(!(w<<16>>16))break;if(!h){c[bb>>2]=(c[bb>>2]|0)+1;break}r=C;q=c[r>>2]|0;r=c[r+4>>2]|0;k=c[db>>2]|0;if(!(k&524288)){o=JK(m<<2)|0;if(!o){Wa=291;break a}m=b[B>>1]|0;if(!(m<<16>>16))m=0;else{l=0;f=c[D>>2]|0;n=o;while(1){if(!f){Wa=295;break a}w=f;k=c[w>>2]|0;w=c[w+4>>2]|0;if(!(w>>>0<1|(w|0)==1&k>>>0<0)){Wa=297;break a}c[n>>2]=k;l=l+1<<16>>16;if((l&65535)>=(m&65535))break;else{f=f+8|0;n=n+4|0}}}m=m&65535;if(c[db>>2]&128)Kx(o,m);m=TZ(d,bb,h,330,13,m,m<<2,o)|0;KK(o)}else{l=c[D>>2]|0;if(k&128)Lx(l,m);m=TZ(d,bb,h,330,18,m,m<<3,l)|0}if(!m){Wa=596;break a}c[db>>2]=c[db>>2]|8192;w=b[B>>1]|0;b[E>>1]=w;if(w<<16>>16==1){w=Da;c[w>>2]=0;c[w+4>>2]=0;break}else{w=Da;c[w>>2]=q;c[w+4>>2]=r;break}}while(0);if(!(c[F>>2]|0))break;f=(h|0)==0;n=0;do{l=c[(c[G>>2]|0)+(n<<2)>>2]|0;m=b[l+24>>1]|0;do if((m&65535)>65){if(!(c[d+(((m&65535)>>>5&65535)<<2)+40>>2]&1<<(m&31)))break;m=c[l+20>>2]|0;if((m|0)==4){if((c[l+8>>2]|0)!=3){Wa=324;break a}if((b[l+4>>1]|0)!=1){Wa=326;break a}if(a[l+27>>0]|0){Wa=328;break a}m=c[l>>2]|0;c[eb>>2]=Pa;Zv(d,m,eb)|0;m=c[l>>2]&65535;if(f){c[bb>>2]=(c[bb>>2]|0)+1;break}b[eb>>1]=b[Pa>>1]|0;if(c[db>>2]&128)Fx(eb);if(!(TZ(d,bb,h,m,3,1,2,eb)|0)){Wa=596;break a}else break}else if((m|0)==6){if((c[l+8>>2]|0)!=4){Wa=335;break a}if((b[l+4>>1]|0)!=1){Wa=337;break a}if(a[l+27>>0]|0){Wa=339;break a}m=c[l>>2]|0;c[eb>>2]=Qa;Zv(d,m,eb)|0;m=c[l>>2]&65535;if(f){c[bb>>2]=(c[bb>>2]|0)+1;break}c[eb>>2]=c[Qa>>2];if(c[db>>2]&128)Gx(eb);if(!(TZ(d,bb,h,m,4,1,4,eb)|0)){Wa=596;break a}else break}else if((m|0)==1){if((c[l+8>>2]|0)!=2){Wa=315;break a}if((b[l+4>>1]|0)!=-1){Wa=317;break a}if(a[l+27>>0]|0){Wa=319;break a}m=c[l>>2]|0;c[eb>>2]=Ta;Zv(d,m,eb)|0;m=c[Ta>>2]|0;k=Dga(m|0)|0;if(!f)if(!(TZ(d,bb,h,c[l>>2]&65535,2,k,k,m)|0)){Ea=h;break a}else break;else{c[bb>>2]=(c[bb>>2]|0)+1;break}}else if((m|0)==40){if((c[l+8>>2]|0)!=7){Wa=346;break a}if((b[l+4>>1]|0)!=-3){Wa=348;break a}if((a[l+27>>0]|0)!=1){Wa=350;break a}m=c[l>>2]|0;c[eb>>2]=Ra;c[eb+4>>2]=Ua;Zv(d,m,eb)|0;m=c[Ra>>2]|0;if(!f)if(!(TZ(d,bb,h,c[l>>2]&65535,7,m,m,c[Ua>>2]|0)|0)){Ea=h;break a}else break;else{c[bb>>2]=(c[bb>>2]|0)+1;break}}else{Wa=354;break a}}while(0);n=n+1|0}while(n>>>0<(c[F>>2]|0)>>>0)}while(0);b:do if(c[wa>>2]|0){v=(h|0)==0;w=0;while(1){n=c[Ca>>2]|0;k=c[n+(w*12|0)>>2]|0;c:do switch(c[k+8>>2]|0){case 2:{m=c[n+(w*12|0)+4>>2]|0;if(!v)if(!(TZ(d,bb,h,c[k>>2]&65535,2,m,m,c[n+(w*12|0)+8>>2]|0)|0)){Ea=h;break a}else break c;else{c[bb>>2]=(c[bb>>2]|0)+1;break c}}case 7:{m=c[n+(w*12|0)+4>>2]|0;if(!v)if(!(TZ(d,bb,h,c[k>>2]&65535,7,m,m,c[n+(w*12|0)+8>>2]|0)|0)){Ea=h;break a}else break c;else{c[bb>>2]=(c[bb>>2]|0)+1;break c}}case 17:{l=c[k>>2]&65535;f=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}if(f>>>0>=536870912){Wa=411;break a}k=c[db>>2]|0;if(!(k&524288)){Wa=413;break a}if(k&128)Lx(m,f);if(!(TZ(d,bb,h,l,17,f,f<<3,m)|0)){Wa=596;break a}break}case 4:{k=c[k>>2]&65535;l=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}if(l>>>0>=1073741824){Wa=388;break a}if(c[db>>2]&128)Kx(m,l);if(!(TZ(d,bb,h,k,4,l,l<<2,m)|0)){Wa=596;break a}break}case 1:{m=c[n+(w*12|0)+4>>2]|0;if(!v)if(!(TZ(d,bb,h,c[k>>2]&65535,1,m,m,c[n+(w*12|0)+8>>2]|0)|0)){Ea=h;break a}else break c;else{c[bb>>2]=(c[bb>>2]|0)+1;break c}}case 9:{k=c[k>>2]&65535;l=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}if(l>>>0>=1073741824){Wa=395;break a}if(c[db>>2]&128)Kx(m,l);if(!(TZ(d,bb,h,k,9,l,l<<2,m)|0)){Wa=596;break a}break}case 16:{l=c[k>>2]&65535;f=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}if(f>>>0>=536870912){Wa=402;break a}k=c[db>>2]|0;if(!(k&524288)){Wa=404;break a}if(k&128)Lx(m,f);if(!(TZ(d,bb,h,l,16,f,f<<3,m)|0)){Wa=596;break a}break}case 3:{k=c[k>>2]&65535;l=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}if((l|0)<=-1){Wa=374;break a}if(c[db>>2]&128)Ix(m,l);if(!(TZ(d,bb,h,k,3,l,l<<1,m)|0)){Wa=596;break a}break}case 8:{k=c[k>>2]&65535;l=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}if((l|0)<=-1){Wa=381;break a}if(c[db>>2]&128)Ix(m,l);if(!(TZ(d,bb,h,k,8,l,l<<1,m)|0)){Wa=596;break a}break}case 6:{m=c[n+(w*12|0)+4>>2]|0;if(!v)if(!(TZ(d,bb,h,c[k>>2]&65535,6,m,m,c[n+(w*12|0)+8>>2]|0)|0)){Ea=h;break a}else break c;else{c[bb>>2]=(c[bb>>2]|0)+1;break c}}case 12:{k=c[k>>2]&65535;l=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}if(l>>>0>=536870912){Wa=448;break a}if(c[db>>2]&128)Nx(m,l);if(!(TZ(d,bb,h,k,12,l,l<<3,m)|0)){Wa=596;break a}break}case 11:{k=c[k>>2]&65535;l=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}if(l>>>0>=1073741824){Wa=441;break a}if(c[db>>2]&128)Mx(m,l);if(!(TZ(d,bb,h,k,11,l,l<<2,m)|0)){Wa=596;break a}break}case 18:{q=c[k>>2]&65535;r=c[n+(w*12|0)+4>>2]|0;k=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}m=c[db>>2]|0;if(!(m&524288)){n=r<<2;o=JK(n)|0;if(!o){Wa=469;break a}if(r){l=0;f=o;while(1){u=k;m=c[u>>2]|0;u=c[u+4>>2]|0;if(u>>>0>0|(u|0)==0&m>>>0>4294967295){Wa=471;break a}c[f>>2]=m;l=l+1|0;if(l>>>0>=r>>>0)break;else{k=k+8|0;f=f+4|0}}if(r>>>0>=1073741824){Wa=474;break a}}if(c[db>>2]&128)Kx(o,r);m=TZ(d,bb,h,q,13,r,n,o)|0;KK(o)}else{if(r>>>0>=536870912){Wa=463;break a}if(m&128)Lx(k,r);m=TZ(d,bb,h,q,18,r,r<<3,k)|0}if(!m){Wa=596;break a}break}case 5:{if(!(XZ(d,bb,h,c[k>>2]&65535,c[n+(w*12|0)+4>>2]|0,c[n+(w*12|0)+8>>2]|0)|0)){Wa=596;break a}break}case 10:{t=c[k>>2]&65535;u=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}n=u<<1;o=u<<3;r=JK(o)|0;if(!r){Wa=422;break a}if(u){q=r;f=0;while(1){s=+g[m>>2];k=~~s;l=s==+(k|0);do if(s<0.0){if(l){c[q>>2]=k;c[q+4>>2]=1;break}if(s>-1.0){c[q>>2]=0-~~(s*-2147483648.0);c[q+4>>2]=2147483647;break}else{c[q>>2]=-2147483647;c[q+4>>2]=~~(2147483648.0/-s);break}}else{if(l){c[q>>2]=k;c[q+4>>2]=1;break}if(s<1.0){c[q>>2]=~~(s*2147483648.0);c[q+4>>2]=2147483647;break}else{c[q>>2]=2147483647;c[q+4>>2]=~~(2147483648.0/s);break}}while(0);f=f+1|0;if((f|0)==(u|0))break;else{m=m+4|0;q=q+8|0}}}if(c[db>>2]&128)Kx(r,n);u=TZ(d,bb,h,t,10,u,o,r)|0;KK(r);if(!u){Wa=596;break a}break}case 13:{k=c[k>>2]&65535;l=c[n+(w*12|0)+4>>2]|0;m=c[n+(w*12|0)+8>>2]|0;if(v){c[bb>>2]=(c[bb>>2]|0)+1;break c}if(l>>>0>=1073741824){Wa=455;break a}if(c[db>>2]&128)Kx(m,l);if(!(TZ(d,bb,h,k,13,l,l<<2,m)|0)){Wa=596;break a}break}default:{Wa=479;break a}}while(0);w=w+1|0;if(w>>>0>=(c[wa>>2]|0)>>>0)break b}}while(0);if(h){Wa=551;break}h=JK((c[bb>>2]|0)*24|0)|0;if(!h){Wa=483;break}do if(x){w=Za;if((c[w>>2]|0)==0&(c[w+4>>2]|0)==0){k=ce[c[_a>>2]&255](c[$a>>2]|0,0,0,2)|0;k=Iga(k|0,I|0,1,0)|0;m=I;k=k&-2;l=Za;c[l>>2]=k;c[l+4>>2]=m;l=c[db>>2]|0;f=(l&524288|0)!=0;if(l&8192)if(f){w=Ia;c[w>>2]=k;c[w+4>>2]=m;if(l&128)Hx(Ia);w=Da;ce[c[_a>>2]&255](c[$a>>2]|0,c[w>>2]|0,c[w+4>>2]|0,0)|0;if((Od[c[ab>>2]&255](c[$a>>2]|0,Ia,8)|0)!=8){Wa=498;break a}w=(b[E>>1]|0)+-1<<16>>16;b[E>>1]=w;if(!(w<<16>>16)){c[db>>2]=c[db>>2]&-8193;break}else{v=Da;v=Iga(c[v>>2]|0,c[v+4>>2]|0,8,0)|0;w=Da;c[w>>2]=v;c[w+4>>2]=I;break}}else{c[Ha>>2]=k;if(l&128)Gx(Ha);w=Da;ce[c[_a>>2]&255](c[$a>>2]|0,c[w>>2]|0,c[w+4>>2]|0,0)|0;if((Od[c[ab>>2]&255](c[$a>>2]|0,Ha,4)|0)!=4){Wa=491;break a}w=(b[E>>1]|0)+-1<<16>>16;b[E>>1]=w;if(!(w<<16>>16)){c[db>>2]=c[db>>2]&-8193;break}else{v=Da;v=Iga(c[v>>2]|0,c[v+4>>2]|0,4,0)|0;w=Da;c[w>>2]=v;c[w+4>>2]=I;break}}if(!f){c[Ja>>2]=k;if(l&128)Gx(Ja);m=c[za>>2]|0;if(!m){c[za>>2]=c[Za>>2];ce[c[_a>>2]&255](c[$a>>2]|0,4,0,0)|0;if((Od[c[ab>>2]&255](c[$a>>2]|0,Ja,4)|0)==4)break;else{Wa=507;break a}}do{w=ce[c[_a>>2]&255](c[$a>>2]|0,m,0,0)|0;if(!((w|0)==(m|0)&(I|0)==0)){Wa=510;break a}if((Od[c[ya>>2]&255](c[$a>>2]|0,Fa,2)|0)!=2){Wa=510;break a}if(c[db>>2]&128)Fx(Fa);k=m+2|0;ce[c[_a>>2]&255](c[$a>>2]|0,((e[Fa>>1]|0)*12|0)+k|0,0,0)|0;if((Od[c[ya>>2]&255](c[$a>>2]|0,Na,4)|0)!=4){Wa=514;break a}if(c[db>>2]&128)Gx(Na);m=c[Na>>2]|0}while((m|0)!=0);ce[c[_a>>2]&255](c[$a>>2]|0,((e[Fa>>1]|0)*12|0)+k|0,0,0)|0;if((Od[c[ab>>2]&255](c[$a>>2]|0,Ja,4)|0)==4)break;else{Wa=519;break a}}w=Ka;c[w>>2]=k;c[w+4>>2]=m;if(l&128)Hx(Ka);k=xa;m=c[k>>2]|0;k=c[k+4>>2]|0;if((m|0)==0&(k|0)==0){u=Za;v=c[u+4>>2]|0;w=xa;c[w>>2]=c[u>>2];c[w+4>>2]=v;ce[c[_a>>2]&255](c[$a>>2]|0,8,0,0)|0;if((Od[c[ab>>2]&255](c[$a>>2]|0,Ka,8)|0)==8)break;else{Wa=524;break a}}do{w=ce[c[_a>>2]&255](c[$a>>2]|0,m,k,0)|0;if(!((w|0)==(m|0)&(I|0)==(k|0))){Wa=527;break a}if((Od[c[ya>>2]&255](c[$a>>2]|0,Ga,8)|0)!=8){Wa=527;break a}if(c[db>>2]&128)Hx(Ga);w=Ga;l=c[w>>2]|0;w=c[w+4>>2]|0;if(w>>>0>0|(w|0)==0&l>>>0>65535){Wa=531;break a}v=c[_a>>2]|0;w=c[$a>>2]|0;f=Iga(m|0,k|0,8,0)|0;l=Iga(f|0,I|0,(l&65535)*20|0,0)|0;f=I;ce[v&255](w,l,f,0)|0;if((Od[c[ya>>2]&255](c[$a>>2]|0,Oa,8)|0)!=8){Wa=533;break a}if(c[db>>2]&128)Hx(Oa);k=Oa;m=c[k>>2]|0;k=c[k+4>>2]|0}while(!((m|0)==0&(k|0)==0));ce[c[_a>>2]&255](c[$a>>2]|0,l,f,0)|0;if((Od[c[ab>>2]&255](c[$a>>2]|0,Ka,8)|0)!=8){Wa=538;break a}}}else{v=ce[c[_a>>2]&255](c[$a>>2]|0,0,0,2)|0;v=Iga(v|0,I|0,1,0)|0;w=Za;c[w>>2]=v&-2;c[w+4>>2]=I}while(0);if(!Aa){u=Za;v=c[u+4>>2]|0;w=j;c[w>>2]=c[u>>2];c[w+4>>2]=v}m=c[bb>>2]|0;if(!(c[db>>2]&524288)){p=(m*12|2)+4|0;l=Za;f=c[l>>2]|0;l=c[l+4>>2]|0;m=Iga(f|0,l|0,p|0,0)|0;k=0;n=0;o=p}else{p=(m*20|0)+16|0;l=Za;f=c[l>>2]|0;l=c[l+4>>2]|0;m=Iga(f|0,l|0,p|0,0)|0;k=I;n=0;o=p}w=C;c[w>>2]=m;c[w+4>>2]=k;if(k>>>0>>0|(k|0)==(l|0)&m>>>0>>0|(k>>>0>>0|(k|0)==(n|0)&m>>>0>>0)){Wa=546;break}if(!((m&1|0)==0&0==0)){v=Iga(m|0,k|0,1,0)|0;w=C;c[w>>2]=v;c[w+4>>2]=I}if(!x)continue;b[Ba>>1]=(b[Ba>>1]|0)+1<<16>>16}switch(Wa|0){case 78:{Dw(c[$a>>2]|0,119984,118760,eb);Ea=h;break}case 143:{Dw(c[$a>>2]|0,119984,118760,eb);Ea=h;break}case 154:{Dw(c[$a>>2]|0,119984,118760,eb);Ea=h;break}case 193:{Dw(c[$a>>2]|0,119912,118760,eb);Ea=h;break}case 195:{Sa(119616,118448,1956,119784);break}case 212:{Dw(c[$a>>2]|0,119984,118760,eb);Ea=h;break}case 270:{Dw(c[$a>>2]|0,119744,118760,eb);Wa=596;break}case 275:{Sa(119616,118448,1956,119784);break}case 291:{Dw(c[$a>>2]|0,119688,118760,eb);Wa=596;break}case 295:{Sa(119680,118448,1868,119688);break}case 297:{Sa(119720,118448,1869,119688);break}case 315:{Sa(118416,118448,643,118480);break}case 317:{Sa(118504,118448,644,118480);break}case 319:{Sa(118544,118448,645,118480);break}case 324:{Sa(118568,118448,655,118480);break}case 326:{Sa(118600,118448,656,118480);break}case 328:{Sa(118544,118448,657,118480);break}case 335:{Sa(118624,118448,666,118480);break}case 337:{Sa(118600,118448,667,118480);break}case 339:{Sa(118544,118448,668,118480);break}case 346:{Sa(118656,118448,678,118480);break}case 348:{Sa(118688,118448,679,118480);break}case 350:{Sa(118728,118448,680,118480);break}case 354:{Sa(118752,118448,687,118480);break}case 374:{Sa(119616,118448,1956,119784);break}case 381:{Sa(119616,118448,1979,119640);break}case 388:{Sa(119056,118448,2e3,119576);break}case 395:{Sa(119056,118448,2023,119536);break}case 402:{Sa(119232,118448,2047,119496);break}case 404:{Sa(119296,118448,2049,119496);break}case 411:{Sa(119232,118448,2072,119456);break}case 413:{Sa(119296,118448,2074,119456);break}case 422:{Dw(c[$a>>2]|0,119408,118760,eb);Ea=h;break}case 441:{Sa(119056,118448,2239,119368);break}case 448:{Sa(119232,118448,2264,119328);break}case 455:{Sa(119056,118448,2275,119080);break}case 463:{Sa(119232,118448,2285,119256);break}case 469:{Dw(c[$a>>2]|0,118944,118760,eb);Wa=596;break}case 471:{Dw(c[$a>>2]|0,118944,118984,eb);KK(o);Wa=596;break}case 474:{Sa(119056,118448,2275,119080);break}case 479:{Sa(118752,118448,763,118480);break}case 483:{Dw(c[$a>>2]|0,118480,118760,eb);Wa=596;break}case 491:{Dw(c[$a>>2]|0,118848,118872,eb);Wa=596;break}case 498:{Dw(c[$a>>2]|0,118848,118872,eb);Wa=596;break}case 507:{Dw(c[$a>>2]|0,c[d>>2]|0,118912,eb);Wa=596;break}case 510:{Dw(c[$a>>2]|0,118848,117760,eb);Wa=596;break}case 514:{Dw(c[$a>>2]|0,118848,117792,eb);Wa=596;break}case 519:{Dw(c[$a>>2]|0,118848,117824,eb);Wa=596;break}case 524:{Dw(c[$a>>2]|0,c[d>>2]|0,118912,eb);Wa=596;break}case 527:{Dw(c[$a>>2]|0,118848,117760,eb);Wa=596;break}case 531:{Dw(c[$a>>2]|0,118848,117856,eb);Wa=596;break}case 533:{Dw(c[$a>>2]|0,118848,117792,eb);Wa=596;break}case 538:{Dw(c[$a>>2]|0,118848,117824,eb);Wa=596;break}case 546:{Dw(c[$a>>2]|0,118480,118776,eb);Wa=596;break}case 551:{do if((x?(c[A>>2]&131072|0)!=0:0)?(j=Da,(c[j>>2]|0)==0&(c[j+4>>2]|0)==0):0){k=c[bb>>2]|0;if(!k)Sa(118808,118448,809,118480);else{Xa=0;Va=h}while(1){if((b[Va>>1]|0)==330)break;l=Xa+1|0;if(l>>>0>>0){Xa=l;Va=Va+24|0}else{Wa=555;break}}if((Wa|0)==555)Sa(118808,118448,809,118480);l=Za;k=c[l>>2]|0;l=c[l+4>>2]|0;if(!(c[db>>2]&524288)){Wa=Iga(Xa*12|0,0,10,0)|0;Wa=Iga(Wa|0,I|0,k|0,l|0)|0;Xa=Da;c[Xa>>2]=Wa;c[Xa+4>>2]=I;break}else{Wa=Iga(Xa*20|0,0,20,0)|0;Wa=Iga(Wa|0,I|0,k|0,l|0)|0;Xa=Da;c[Xa>>2]=Wa;c[Xa+4>>2]=I;break}}while(0);o=JK(p)|0;if(!o){Dw(c[$a>>2]|0,118480,118760,eb);Wa=596;break}k=c[db>>2]|0;l=c[bb>>2]|0;if(k&524288){Ya=o;c[Ya>>2]=l;c[Ya+4>>2]=0;if(k&128){Hx(o);l=c[bb>>2]|0}k=o+8|0;if(l){n=o;f=0;m=h;while(1){b[k>>1]=b[m>>1]|0;l=c[db>>2]|0;if(l&128){Fx(k);l=c[db>>2]|0}k=n+10|0;b[k>>1]=b[m+2>>1]|0;if(l&128)Fx(k);k=n+12|0;NK(k,m+8|0,8);if(c[db>>2]&128)Hx(k);k=n;n=n+20|0;NK(n,m+16|0,8);f=f+1|0;k=k+28|0;if(f>>>0>=(c[bb>>2]|0)>>>0)break;else m=m+24|0}}NK(k,d+24|0,8);if(c[db>>2]&128)Hx(k)}else{b[o>>1]=l;if(k&128){Fx(o);l=c[bb>>2]|0}k=o+2|0;if(l){f=0;n=h;while(1){b[k>>1]=b[n>>1]|0;l=c[db>>2]|0;if(l&128){Fx(k);l=c[db>>2]|0}m=k+2|0;b[m>>1]=b[n+2>>1]|0;if(l&128)Fx(m);l=k+4|0;c[Ya>>2]=c[n+8>>2];NK(l,Ya,4);if(c[db>>2]&128)Gx(l);NK(k+8|0,n+16|0,4);k=k+12|0;f=f+1|0;if(f>>>0>=(c[bb>>2]|0)>>>0)break;else n=n+24|0}}c[Ya>>2]=c[d+24>>2];if(c[db>>2]&128)Gx(Ya);NK(k,Ya,4)}KK(h);bb=Za;h=Za;do if((ce[c[_a>>2]&255](c[$a>>2]|0,c[bb>>2]|0,c[bb+4>>2]|0,0)|0)==(c[h>>2]|0)?(I|0)==(c[h+4>>2]|0):0){if((Od[c[ab>>2]&255](c[$a>>2]|0,o,p)|0)!=(p|0)){Dw(c[$a>>2]|0,118480,118816,eb);break}KK(o);if(!cb){eb=1;i=fb;return eb|0}$v(d);c[db>>2]=c[db>>2]&-2097161;Id[c[d+564>>2]&511](d);bw(d)|0;eb=1;i=fb;return eb|0}else Dw(c[$a>>2]|0,118480,118816,eb);while(0);if(!o){eb=0;i=fb;return eb|0}KK(o);eb=0;i=fb;return eb|0}}if((Wa|0)==596)if(!h){eb=0;i=fb;return eb|0}else Ea=h;KK(Ea);eb=0;i=fb;return eb|0}function cN(a){a=a|0;return 1}function dN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+32|0;f=h;g=a+608|0;e=c[g>>2]|0;if((e|0)<(d|0)){g=c[a+628>>2]|0;c[f>>2]=c[a+444>>2];a=f+4|0;c[a>>2]=e;c[a+4>>2]=((e|0)<0)<<31>>31;a=f+12|0;c[a>>2]=d;c[a+4>>2]=((d|0)<0)<<31>>31;Dw(g,120136,120152,f);d=0;i=h;return d|0}a=a+604|0;f=c[a>>2]|0;if((f|0)==(b|0))f=b;else{NK(b,f,d);f=c[a>>2]|0;e=c[g>>2]|0}c[a>>2]=f+d;c[g>>2]=e-d;d=1;i=h;return d|0}function eN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;if((d|0)<=0){a=1;i=n;return a|0}k=a+608|0;l=a+592|0;m=a+604|0;while(1){f=c[k>>2]|0;h=c[l>>2]|0;j=(f+d|0)>(h|0)?h-f|0:d;if((j|0)<=0){d=4;break}e=c[m>>2]|0;if((e|0)==(b|0)){g=b;e=h}else{NK(e,b,j);g=c[m>>2]|0;f=c[k>>2]|0;e=c[l>>2]|0}c[m>>2]=g+j;g=f+j|0;c[k>>2]=g;b=b+j|0;d=d-j|0;if((g|0)>=(e|0)?(cy(a)|0)==0:0){e=-1;d=10;break}if((d|0)<=0){e=1;d=10;break}}if((d|0)==4)Sa(120080,120088,55,120120);else if((d|0)==10){i=n;return e|0}return 0}function fN(a,b){a=a|0;b=b|0;var d=0;b=ea(c[a+580>>2]|0,b)|0;d=a+604|0;c[d>>2]=(c[d>>2]|0)+b;a=a+608|0;c[a>>2]=(c[a>>2]|0)-b;return 1}function gN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=i;i=i+16|0;e=f;if(!(jw(a,122992,5)|0)){Dw(c[a+628>>2]|0,123176,123192,e);a=0;i=f;return a|0}b=JK(96)|0;d=a+576|0;c[d>>2]=b;if(!b){Dw(c[a+628>>2]|0,123176,123248,e);a=0;i=f;return a|0}g=c[a+8>>2]|0;c[b>>2]=g;h=a+672|0;c[b+32>>2]=c[h>>2];c[h>>2]=174;h=a+668|0;c[b+36>>2]=c[h>>2];c[h>>2]=175;h=a+676|0;c[b+40>>2]=c[h>>2];c[h>>2]=66;c[b+28>>2]=0;if(!g){h=a+12|0;c[h>>2]=c[h>>2]|256}c[b+64>>2]=0;c[e>>2]=43;Xv(a,65540,e)|0;c[(c[d>>2]|0)+80>>2]=0;c[a+504>>2]=216;c[a+508>>2]=217;c[a+512>>2]=254;c[a+532>>2]=124;c[a+540>>2]=124;c[a+548>>2]=124;c[a+516>>2]=217;c[a+524>>2]=255;c[a+528>>2]=218;c[a+536>>2]=125;c[a+544>>2]=125;c[a+552>>2]=125;c[a+556>>2]=286;c[a+564>>2]=287;h=1;i=f;return h|0}function hN(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+32|0;C=O;l=c[a+576>>2]|0;I=c[l+12>>2]|0;G=c[l+44>>2]|0;x=l+8|0;if((e|0)%(c[x>>2]|0)|0){Dw(c[a+628>>2]|0,122880,121912,C);N=-1;i=O;return N|0}J=l+48|0;j=c[J>>2]|0;K=l+52|0;h=c[K>>2]|0;L=l+56|0;g=c[L>>2]|0;M=a+604|0;f=c[M>>2]|0;N=a+608|0;k=c[N>>2]|0;E=f+k|0;do if((e|0)>0){u=l+72|0;v=l+68|0;w=(I|0)>0;H=l+92|0;z=a+628|0;A=a+12|0;B=a+492|0;y=a+452|0;F=l+60|0;k=c[v>>2]|0;D=c[u>>2]|0;a:while(1){b:do if(w){t=D;o=0;a=0;m=c[k>>2]|0;l=D;k=k+4|0;c:while(1){s=(l|0)==(D|0);d:do if(s){q=0;r=o;while(1){do if((h|0)<7)if(f>>>0>=E>>>0)if(!h){h=0;m=q;k=D;r=88;break a}else{p=7;break}else{j=(d[G+(d[f>>0]|0)>>0]|0)<>0]|0;h=p-o|0;j=j>>>o;switch(d[124064+(n<<3)>>0]|0|0){case 2:{n=q;q=k;r=22;break d}case 1:break;case 5:{r=70;break d}case 6:{k=q;l=D;r=77;break c}case 4:{p=r;r=66;break d}case 3:{p=q;o=r;r=62;break d}case 12:{n=p;m=q;l=D;r=78;break c}default:{m=q;k=D;r=85;break c}}n=(c[k>>2]|0)+m|0;a=r+q+n|0;if((I|0)>(n|0)){q=a;r=0-n|0;a=n;m=n+(c[k+4>>2]|0)|0;k=k+8|0}else{m=a;a=n;k=D;r=99;break c}}}else{q=0;r=o;while(1){do if((h|0)<7)if(f>>>0>=E>>>0)if(!h){h=0;m=q;k=l;r=88;break a}else{p=7;break}else{j=(d[G+(d[f>>0]|0)>>0]|0)<>0]|0;h=p-o|0;j=j>>>o;switch(d[124064+(n<<3)>>0]|0|0){case 1:break;case 2:{n=q;q=k;r=22;break d}case 5:{r=70;break d}case 6:{k=q;r=77;break c}case 4:{p=r;r=66;break d}case 3:{p=q;o=r;r=62;break d}case 12:{n=p;m=q;r=78;break c}default:{m=q;k=l;r=85;break c}}if((m|0)<=(a|0)&(m|0)<(I|0))do{m=(c[k>>2]|0)+m+(c[k+4>>2]|0)|0;k=k+8|0}while((m|0)<=(a|0)&(m|0)<(I|0));n=(c[k>>2]|0)+m|0;a=r+q+n|0;if((I|0)>(n|0)){q=a;r=0-n|0;a=n;m=n+(c[k+4>>2]|0)|0;k=k+8|0}else{m=a;a=n;k=l;r=99;break c}}}while(0);if((r|0)==22){r=0;if(!(l-t&4)){o=n;n=f;while(1){do if((h|0)<12){if(n>>>0>=E>>>0)if(!h){h=0;m=o;f=n;k=l;r=88;break a}else{h=12;f=n;break}f=n+1|0;j=(d[G+(d[n>>0]|0)>>0]|0)<>>0>>0){j=(d[G+(d[f>>0]|0)>>0]|0)<>0]|0;h=h-k|0;j=j>>>k;k=d[125088+(n<<3)>>0]|0;if((k|0)==7)break;else if(!((k|0)==11|(k|0)==9)){m=o;k=l;r=87;break c}n=c[125092+(n<<3)>>2]|0;o=n+o|0;a=n+a|0;n=f}s=c[125092+(n<<3)>>2]|0;k=l+4|0;c[l>>2]=s+o;p=0;a=s+a|0;while(1){do if((h|0)<13){if(f>>>0>=E>>>0)if(!h){h=0;m=p;r=88;break a}else{h=13;break}o=f+1|0;j=(d[G+(d[f>>0]|0)>>0]|0)<>>0>>0){j=(d[G+(d[o>>0]|0)>>0]|0)<>0]|0;h=h-n|0;j=j>>>n;n=d[157856+(o<<3)>>0]|0;if((n|0)==8)break;else if(!((n|0)==11|(n|0)==10)){m=p;r=86;break c}s=c[157860+(o<<3)>>2]|0;p=s+p|0;a=s+a|0}s=c[157860+(o<<3)>>2]|0;c[k>>2]=s+p;a=s+a|0}else{o=n;while(1){do if((h|0)<13){if(f>>>0>=E>>>0)if(!h){h=0;m=o;k=l;r=88;break a}else{h=13;break}n=f+1|0;j=(d[G+(d[f>>0]|0)>>0]|0)<>>0>>0){j=(d[G+(d[n>>0]|0)>>0]|0)<>0]|0;h=h-k|0;j=j>>>k;k=d[157856+(n<<3)>>0]|0;if((k|0)==8)break;else if(!((k|0)==11|(k|0)==10)){m=o;k=l;r=86;break c}s=c[157860+(n<<3)>>2]|0;o=s+o|0;a=s+a|0}s=c[157860+(n<<3)>>2]|0;k=l+4|0;c[l>>2]=s+o;p=0;a=s+a|0;o=f;while(1){do if((h|0)<12){if(o>>>0>=E>>>0)if(!h){h=0;m=p;f=o;r=88;break a}else{h=12;f=o;break}f=o+1|0;j=(d[G+(d[o>>0]|0)>>0]|0)<>>0>>0){j=(d[G+(d[f>>0]|0)>>0]|0)<>0]|0;h=h-n|0;j=j>>>n;n=d[125088+(o<<3)>>0]|0;if((n|0)==7)break;else if(!((n|0)==11|(n|0)==9)){m=p;r=87;break c}o=c[125092+(o<<3)>>2]|0;p=o+p|0;a=o+a|0;o=f}s=c[125092+(o<<3)>>2]|0;c[k>>2]=s+p;a=s+a|0}k=l+8|0;if((k|0)!=(D|0))if((m|0)<=(a|0)&(m|0)<(I|0)){l=q;do{m=(c[l>>2]|0)+m+(c[l+4>>2]|0)|0;l=l+8|0}while((m|0)<=(a|0)&(m|0)<(I|0));n=l}else n=q;else{k=D;n=q}}else if((r|0)==62){r=0;if(!s?(m|0)<=(a|0)&(m|0)<(I|0):0){do{m=(c[k>>2]|0)+m+(c[k+4>>2]|0)|0;k=k+8|0}while((m|0)<=(a|0)&(m|0)<(I|0));n=k}else n=k;c[l>>2]=o+p+m;a=m;m=(c[n>>2]|0)+m|0;k=l+4|0;n=n+4|0}else if((r|0)==66){r=0;if(!s?(m|0)<=(a|0)&(m|0)<(I|0):0){do{m=(c[k>>2]|0)+m+(c[k+4>>2]|0)|0;k=k+8|0}while((m|0)<=(a|0)&(m|0)<(I|0));o=k}else o=k;a=c[124068+(n<<3)>>2]|0;c[l>>2]=p+q+m+a;a=a+m|0;m=(c[o>>2]|0)+m|0;k=l+4|0;n=o+4|0}else if((r|0)==70){r=0;o=(l|0)!=(D|0);if(o?(m|0)<=(a|0)&(m|0)<(I|0):0)do{m=(c[k>>2]|0)+m+(c[k+4>>2]|0)|0;k=k+8|0}while((m|0)<=(a|0)&(m|0)<(I|0));n=c[124068+(n<<3)>>2]|0;s=n+a|0;if((m|0)<=(s|0)&((m|0)<(s|0)|o)){r=74;break}c[l>>2]=m-a+q-n;s=k+-4|0;a=m-n|0;m=m-(c[s>>2]|0)|0;k=l+4|0;n=s}if((I|0)>(a|0)){o=0-a|0;l=k;k=n}else break b}do if((r|0)==74){r=0;m=c[z>>2]|0;t=(c[A>>2]&1024|0)!=0;k=c[(t?B:y)>>2]|0;c[C>>2]=c[H>>2];c[C+4>>2]=t?122040:122048;c[C+8>>2]=k;c[C+12>>2]=a;Dw(m,122880,122104,C);m=q;k=l}else if((r|0)==77){r=0;c[l>>2]=I-a;m=c[z>>2]|0;s=(c[A>>2]&1024|0)!=0;t=c[(s?B:y)>>2]|0;c[C>>2]=c[H>>2];c[C+4>>2]=s?122040:122048;c[C+8>>2]=t;c[C+12>>2]=a;Dw(m,122880,122896,C);m=k;k=l+4|0}else if((r|0)==78){r=0;k=l+4|0;c[l>>2]=I-a;do if((h|0)<4)if(f>>>0>=E>>>0)if((n|0)==(o|0)){r=88;break a}else{h=4;break}else{j=(d[G+(d[f>>0]|0)>>0]|0)<>2]|0;q=(c[A>>2]&1024|0)!=0;s=c[(q?B:y)>>2]|0;c[C>>2]=c[H>>2];c[C+4>>2]=q?122040:122048;c[C+8>>2]=s;c[C+12>>2]=a;Dw(t,122880,122104,C)}j=j>>>4;h=h+-4|0;g=1}else if((r|0)==86){r=0;t=c[z>>2]|0;q=(c[A>>2]&1024|0)!=0;s=c[(q?B:y)>>2]|0;c[C>>2]=c[H>>2];c[C+4>>2]=q?122040:122048;c[C+8>>2]=s;c[C+12>>2]=a;Dw(t,122880,122104,C)}else if((r|0)==87){r=0;t=c[z>>2]|0;q=(c[A>>2]&1024|0)!=0;s=c[(q?B:y)>>2]|0;c[C>>2]=c[H>>2];c[C+4>>2]=q?122040:122048;c[C+8>>2]=s;c[C+12>>2]=a;Dw(t,122880,122104,C)}else if((r|0)==99){r=0;if(!m)break b;if((a+m|0)<(I|0)){do if((h|0)<1)if(f>>>0>=E>>>0)if(!h){h=0;r=88;break a}else{h=1;break}else{j=(d[G+(d[f>>0]|0)>>0]|0)<>>1;h=h+-1|0}c[k>>2]=m;k=k+4|0;break b}while(0);if((r|0)==85){r=0;t=c[z>>2]|0;q=(c[A>>2]&1024|0)!=0;s=c[(q?B:y)>>2]|0;c[C>>2]=c[H>>2];c[C+4>>2]=q?122040:122048;c[C+8>>2]=s;c[C+12>>2]=a;Dw(t,122880,122104,C)}if(m){c[k>>2]=m;k=k+4|0}}else{a=0;k=D}while(0);do if((a|0)!=(I|0)){q=c[H>>2]|0;l=c[z>>2]|0;s=(c[A>>2]&1024|0)!=0;t=c[(s?B:y)>>2]|0;c[C>>2]=a>>>0>>0?122e3:122016;c[C+4>>2]=q;c[C+8>>2]=s?122040:122048;c[C+12>>2]=t;c[C+16>>2]=a;c[C+20>>2]=I;Zx(l,122880,121952,C);l=(a|0)>(I|0);if(l&k>>>0>D>>>0)do{k=k+-4|0;a=a-(c[k>>2]|0)|0;l=(a|0)>(I|0)}while(l&k>>>0>D>>>0);if((a|0)>=(I|0)){if(!l)break;c[k>>2]=I;c[k+4>>2]=0;k=k+8|0;break}if(k-D&4){c[k>>2]=0;k=k+4|0}c[k>>2]=I-((a|0)<0?0:a);k=k+4|0}while(0);if(g)break;de[c[F>>2]&63](b,D,k,I);c[k>>2]=0;k=c[u>>2]|0;g=c[v>>2]|0;c[u>>2]=g;c[v>>2]=k;l=c[x>>2]|0;e=e-l|0;c[H>>2]=(c[H>>2]|0)+1;if((e|0)<=0){r=128;break}else{b=b+l|0;D=g;g=0}}if((r|0)==128){l=c[M>>2]|0;k=c[N>>2]|0;g=0;break}do if((r|0)==88){x=c[z>>2]|0;v=(c[A>>2]&1024|0)!=0;w=c[(v?B:y)>>2]|0;c[C>>2]=c[H>>2];c[C+4>>2]=v?122040:122048;c[C+8>>2]=w;c[C+12>>2]=a;Zx(x,122880,122056,C);if(m){c[k>>2]=m;k=k+4|0}if((a|0)!=(I|0)){x=c[H>>2]|0;l=c[z>>2]|0;A=(c[A>>2]&1024|0)!=0;B=c[(A?B:y)>>2]|0;c[C>>2]=a>>>0>>0?122e3:122016;c[C+4>>2]=x;c[C+8>>2]=A?122040:122048;c[C+12>>2]=B;c[C+16>>2]=a;c[C+20>>2]=I;Zx(l,122880,121952,C);l=(a|0)>(I|0);if(l&k>>>0>D>>>0)do{k=k+-4|0;a=a-(c[k>>2]|0)|0;l=(a|0)>(I|0)}while(l&k>>>0>D>>>0);if((a|0)>=(I|0)){if(!l)break;c[k>>2]=I;c[k+4>>2]=0;k=k+8|0;break}if(k-D&4){c[k>>2]=0;k=k+4|0}c[k>>2]=I-((a|0)<0?0:a);k=k+4|0}}while(0);do if((h|0)<13){if(f>>>0>=E>>>0){h=(h|0)==0?0:13;break}a=f+1|0;j=(d[G+(d[f>>0]|0)>>0]|0)<>>0>>0){j=(d[G+(d[a>>0]|0)>>0]|0)<>2]&63](b,D,k,I);c[K>>2]=h+-13;c[J>>2]=j>>>13;c[L>>2]=g;c[N>>2]=(c[M>>2]|0)-f+(c[N>>2]|0);c[M>>2]=f;N=(c[H>>2]|0)!=0?1:-1;i=O;return N|0}else l=f;while(0);c[K>>2]=h;c[J>>2]=j;c[L>>2]=g;c[N>>2]=l-f+k;c[M>>2]=f;N=1;i=O;return N|0}function iN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=c[a+576>>2]|0;g=e+8|0;if((d|0)%(c[g>>2]|0)|0){Dw(c[a+628>>2]|0,122224,122240,j);a=0;i=j;return a|0}if((d|0)<=0){a=1;i=j;return a|0}h=e+80|0;f=e+12|0;e=d;while(1){i_(a,b,c[h>>2]|0,c[f>>2]|0);NK(c[h>>2]|0,b,c[g>>2]|0);d=c[g>>2]|0;e=e-d|0;if((e|0)<=0){e=1;break}else b=b+d|0}i=j;return e|0}function jN(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;g=i;d=c[b+576>>2]|0;j_(b,1,12);j_(b,1,12);e=d+52|0;if((c[e>>2]|0)==8){i=g;return 1}f=b+608|0;if((c[f>>2]|0)>=(c[b+592>>2]|0))cy(b)|0;d=d+48|0;h=c[d>>2]&255;j=b+604|0;b=c[j>>2]|0;c[j>>2]=b+1;a[b>>0]=h;c[f>>2]=(c[f>>2]|0)+1;c[d>>2]=0;c[e>>2]=8;i=g;return 1}function kN(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;L=i;i=i+32|0;A=L;l=c[a+576>>2]|0;F=c[l+12>>2]|0;t=c[l+44>>2]|0;m=c[l+4>>2]|0;u=l+8|0;if((e|0)%(c[u>>2]|0)|0){Dw(c[a+628>>2]|0,121896,121912,A);J=-1;i=L;return J|0}G=l+48|0;j=c[G>>2]|0;H=l+52|0;h=c[H>>2]|0;I=l+56|0;g=c[I>>2]|0;J=a+604|0;f=c[J>>2]|0;K=a+608|0;k=c[K>>2]|0;s=f+k|0;E=c[l+72>>2]|0;do if((e|0)>0){w=l+92|0;x=a+628|0;y=a+12|0;z=a+492|0;v=a+452|0;D=l+60|0;r=(m&4|0)==0;q=(m&8|0)==0;C=E;a:while(1){k=0;p=E;b:while(1){m=0;while(1){do if((h|0)<12){if(f>>>0>=s>>>0)if(!h){l=j;h=p;break a}else{h=12;break}a=f+1|0;j=(d[t+(d[f>>0]|0)>>0]|0)<>>0>>0){j=(d[t+(d[a>>0]|0)>>0]|0)<>0]|0;n=h-o|0;j=j>>>o;h=d[125088+(l<<3)>>0]|0;if((h|0)==7)break;else if((h|0)==12){g=1;h=p;B=40;break b}else if(!((h|0)==11|(h|0)==9)){B=16;break b}o=c[125092+(l<<3)>>2]|0;h=n;m=o+m|0;k=o+k|0}a=c[125092+(l<<3)>>2]|0;o=a+m|0;h=p+4|0;c[p>>2]=o;k=a+k|0;if((k|0)<(F|0))m=0;else break;while(1){do if((n|0)<13){if(f>>>0>=s>>>0)if(!n){l=j;break a}else{l=13;break}a=f+1|0;j=(d[t+(d[f>>0]|0)>>0]|0)<>>0>>0){j=(d[t+(d[a>>0]|0)>>0]|0)<>0]|0;n=l-M|0;j=j>>>M;l=d[157856+(a<<3)>>0]|0;if((l|0)==8)break;else if((l|0)==12){g=1;B=40;break b}else if(!((l|0)==11|(l|0)==10)){B=26;break b}M=c[157860+(a<<3)>>2]|0;m=M+m|0;k=M+k|0}M=c[157860+(a<<3)>>2]|0;m=M+m|0;l=p+8|0;c[h>>2]=m;k=M+k|0;if((k|0)>=(F|0)){h=l;break}if(m){h=n;p=l;continue}h=n;p=(o|0)==0?p:l}if((B|0)==16){h=c[x>>2]|0;o=(c[y>>2]&1024|0)!=0;M=c[(o?z:v)>>2]|0;c[A>>2]=c[w>>2];c[A+4>>2]=o?122040:122048;c[A+8>>2]=M;c[A+12>>2]=k;Dw(h,121896,122104,A);h=p;B=40}else if((B|0)==26){M=c[x>>2]|0;o=(c[y>>2]&1024|0)!=0;p=c[(o?z:v)>>2]|0;c[A>>2]=c[w>>2];c[A+4>>2]=o?122040:122048;c[A+8>>2]=p;c[A+12>>2]=k;Dw(M,121896,122104,A);B=40}if((B|0)==40){B=0;if(m){c[h>>2]=m;h=h+4|0}}do if((k|0)!=(F|0)){o=c[w>>2]|0;m=c[x>>2]|0;p=(c[y>>2]&1024|0)!=0;M=c[(p?z:v)>>2]|0;c[A>>2]=k>>>0>>0?122e3:122016;c[A+4>>2]=o;c[A+8>>2]=p?122040:122048;c[A+12>>2]=M;c[A+16>>2]=k;c[A+20>>2]=F;Zx(m,121896,121952,A);m=(k|0)>(F|0);if(m&h>>>0>E>>>0)do{h=h+-4|0;k=k-(c[h>>2]|0)|0;m=(k|0)>(F|0)}while(m&h>>>0>E>>>0);if((k|0)>=(F|0)){if(!m)break;c[h>>2]=F;c[h+4>>2]=0;h=h+8|0;break}if(h-C&4){c[h>>2]=0;h=h+4|0}c[h>>2]=F-((k|0)<0?0:k);h=h+4|0}while(0);de[c[D>>2]&63](b,E,h,F);if(r)if(!q){h=n&-16;j=j>>>(n-h|0);if(!h){h=0;f=(f&1|0)==0?f:f+1|0}}else h=n;else{h=n&-8;j=j>>>(n-h|0)}l=c[u>>2]|0;e=e-l|0;c[w>>2]=(c[w>>2]|0)+1;if((e|0)<=0){B=58;break}else b=b+l|0}if((B|0)==58){l=c[J>>2]|0;k=c[K>>2]|0;break}M=c[x>>2]|0;u=(c[y>>2]&1024|0)!=0;B=c[(u?z:v)>>2]|0;c[A>>2]=c[w>>2];c[A+4>>2]=u?122040:122048;c[A+8>>2]=B;c[A+12>>2]=k;Zx(M,121896,122056,A);if(m){c[h>>2]=m;h=h+4|0}do if((k|0)!=(F|0)){w=c[w>>2]|0;j=c[x>>2]|0;B=(c[y>>2]&1024|0)!=0;M=c[(B?z:v)>>2]|0;c[A>>2]=k>>>0>>0?122e3:122016;c[A+4>>2]=w;c[A+8>>2]=B?122040:122048;c[A+12>>2]=M;c[A+16>>2]=k;c[A+20>>2]=F;Zx(j,121896,121952,A);j=(k|0)>(F|0);if(j&h>>>0>E>>>0)do{h=h+-4|0;k=k-(c[h>>2]|0)|0;j=(k|0)>(F|0)}while(j&h>>>0>E>>>0);if((k|0)>=(F|0)){if(!j)break;c[h>>2]=F;c[h+4>>2]=0;h=h+8|0;break}if(h-C&4){c[h>>2]=0;h=h+4|0}c[h>>2]=F-((k|0)<0?0:k);h=h+4|0}while(0);de[c[D>>2]&63](b,E,h,F);c[H>>2]=0;c[G>>2]=l;c[I>>2]=g;c[K>>2]=(c[J>>2]|0)-f+(c[K>>2]|0);c[J>>2]=f;M=-1;i=L;return M|0}else l=f;while(0);c[H>>2]=h;c[G>>2]=j;c[I>>2]=g;c[K>>2]=l-f+k;c[J>>2]=f;M=1;i=L;return M|0}function lN(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;D=i;i=i+16|0;h=D;B=D+8|0;A=D+4|0;y=c[a>>2]|0;z=c[a+52>>2]|0;C=JK(Xx(y)|0)|0;if(!C){d=c[y+628>>2]|0;f=cx(y)|0;c[h>>2]=224520;Dw(d,f,224256,h);f=0;i=D;return f|0}MK(C,0,Xx(y)|0);c[h>>2]=B;Zv(y,322,h)|0;c[h>>2]=A;Zv(y,323,h)|0;a:do switch(e[a+28>>1]|0){case 5:case 1:switch(b[a+30>>1]|0){case 6:case 2:{h=2;l=17;break a}case 7:case 3:{h=3;l=16;break a}case 8:case 4:{h=1;l=16;break a}default:{h=0;l=17;break a}}case 8:case 4:switch(b[a+30>>1]|0){case 7:case 3:{h=2;l=17;break a}case 5:case 1:{h=1;l=16;break a}case 6:case 2:{h=3;l=16;break a}default:{h=0;l=17;break a}}case 7:case 3:switch(b[a+30>>1]|0){case 6:case 2:{h=1;l=16;break a}case 8:case 4:{h=2;l=17;break a}case 5:case 1:{h=3;l=16;break a}default:{h=0;l=17;break a}}case 6:case 2:switch(b[a+30>>1]|0){case 8:case 4:{h=3;l=16;break a}case 5:case 1:{h=2;l=17;break a}case 7:case 3:{h=1;l=16;break a}default:{h=0;l=17;break a}}default:{h=0;l=17}}while(0);if((l|0)==16){x=h;v=1;w=0-((c[B>>2]|0)+f)|0;j=g+-1|0}else if((l|0)==17){x=h;v=0;w=f-(c[B>>2]|0)|0;j=0}u=(g|0)==0;if(u)h=1;else{p=a+84|0;q=a+4|0;r=(f|0)==0;s=a+88|0;h=1;t=0;while(1){o=c[A>>2]|0;l=c[p>>2]|0;o=o-(((l+t|0)>>>0)%(o>>>0)|0)|0;o=(o+t|0)>>>0>g>>>0?g-t|0:o;b:do if(!r){m=ea(j,f)|0;k=0;while(1){if((ox(y,C,(c[s>>2]|0)+k|0,l+t|0,0,0)|0)==-1?(c[q>>2]|0)!=0:0){h=0;break b}l=(((c[p>>2]|0)+t|0)>>>0)%((c[A>>2]|0)>>>0)|0;l=ea(Ux(y)|0,l)|0;n=c[B>>2]|0;if((n+k|0)>>>0>f>>>0){E=f-k|0;n=n-E|0;Vd[z&31](a,d+(k+m<<2)|0,k,j,E,o,n,n+w|0,C+l|0)}else Vd[z&31](a,d+(k+m<<2)|0,k,j,n,o,0,w,C+l|0);k=(c[B>>2]|0)+k|0;if(k>>>0>=f>>>0)break b;l=c[p>>2]|0}}while(0);t=o+t|0;if(t>>>0>=g>>>0)break;else j=(v?0-o|0:o)+j|0}}KK(C);if((x&2|0)==0|u){E=h;i=D;return E|0}m=f+-1|0;n=0;do{j=ea(n,f)|0;k=m+j|0;if((j|0)<(k|0)){l=d+(j<<2)|0;j=d+(k<<2)|0;do{E=c[l>>2]|0;c[l>>2]=c[j>>2];c[j>>2]=E;l=l+4|0;j=j+-4|0}while(l>>>0>>0)}n=n+1|0}while((n|0)!=(g|0));i=D;return h|0}function mN(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+16|0;l=B;y=B+8|0;z=B+12|0;w=c[a>>2]|0;x=c[a+52>>2]|0;k=c[a+16>>2]|0;c[l>>2]=B+14;c[l+4>>2]=z;Cv(w,530,l)|0;if(!(b[z>>1]|0)){f=c[w+628>>2]|0;Dw(f,cx(w)|0,224928,l);f=0;i=B;return f|0}A=JK(Bx(w)|0)|0;if(!A){f=c[w+628>>2]|0;Dw(f,cx(w)|0,224968,l);f=0;i=B;return f|0}MK(A,0,Bx(w)|0);a:do switch(e[a+28>>1]|0){case 7:case 3:switch(b[a+30>>1]|0){case 6:case 2:{h=1;j=18;break a}case 5:case 1:{h=3;j=18;break a}case 8:case 4:{h=2;u=0;v=0;n=0;break a}default:{h=0;u=0;v=0;n=0;break a}}case 6:case 2:switch(b[a+30>>1]|0){case 8:case 4:{h=3;j=18;break a}case 7:case 3:{h=1;j=18;break a}case 5:case 1:{h=2;u=0;v=0;n=0;break a}default:{h=0;u=0;v=0;n=0;break a}}case 8:case 4:switch(b[a+30>>1]|0){case 6:case 2:{h=3;j=18;break a}case 5:case 1:{h=1;j=18;break a}case 7:case 3:{h=2;u=0;v=0;n=0;break a}default:{h=0;u=0;v=0;n=0;break a}}case 5:case 1:switch(b[a+30>>1]|0){case 7:case 3:{h=3;j=18;break a}case 8:case 4:{h=1;j=18;break a}case 6:case 2:{h=2;u=0;v=0;n=0;break a}default:{h=0;u=0;v=0;n=0;break a}}default:{h=0;u=0;v=0;n=0}}while(0);if((j|0)==18){u=1;v=0-(f<<1)|0;n=g+-1|0}c[l>>2]=y;Cv(w,278,l)|0;s=Ex(w)|0;o=k>>>0>f>>>0?k-f|0:0;p=a+4|0;t=(g|0)==0;b:do if(t)n=1;else{q=a+84|0;r=0;while(1){m=c[y>>2]|0;k=(c[q>>2]|0)+r|0;m=m-((k>>>0)%(m>>>0)|0)|0;m=(m+r|0)>>>0>g>>>0?g-r|0:m;l=e[z>>1]|0;j=(m>>>0)%(l>>>0)|0;if(!j)l=m;else l=l-j+m|0;k=wx(w,k,0)|0;if((lx(w,k,A,ea(((((c[q>>2]|0)+r|0)>>>0)%((c[y>>2]|0)>>>0)|0)+l|0,s)|0)|0)==-1?(c[p>>2]|0)!=0:0){n=0;break b}j=d+((ea(n,f)|0)<<2)|0;k=A+(ea((((c[q>>2]|0)+r|0)>>>0)%((c[y>>2]|0)>>>0)|0,s)|0)|0;Vd[x&31](a,j,0,n,f,m,o,v,k);r=m+r|0;if(r>>>0>=g>>>0){n=1;break}else n=(u?0-m|0:m)+n|0}}while(0);if(!((h&2|0)==0|t)){l=f+-1|0;m=0;do{h=ea(m,f)|0;j=l+h|0;if((h|0)<(j|0)){k=d+(h<<2)|0;h=d+(j<<2)|0;do{z=c[k>>2]|0;c[k>>2]=c[h>>2];c[h>>2]=z;k=k+4|0;h=h+-4|0}while(k>>>0>>0)}m=m+1|0}while((m|0)!=(g|0))}KK(A);f=n;i=B;return f|0}function nN(a,b,f,g,h,j,k,l,m){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;V=i;U=e[a+26>>1]|0;Q=ea(U,k)|0;if(!j){i=V;return}R=h>>>0>7;n=U+1|0;o=U+2|0;p=U+3|0;q=U<<1;r=q|1;s=q+2|0;t=q+3|0;u=q+U|0;v=u+1|0;w=u+2|0;x=u+3|0;y=u+U|0;z=y+1|0;A=y+2|0;B=y+3|0;C=y+U|0;D=C+1|0;E=C+2|0;F=C+3|0;G=C+U|0;H=G+1|0;I=G+2|0;J=G+3|0;K=G+U|0;L=K+1|0;M=K+2|0;N=K+3|0;O=K+U|0;S=h+-8|0;T=S&-8;S=S-T|0;T=T+8|0;P=ea(T,U)|0;f=m;k=b;while(1){j=j+-1|0;if(R){b=f+P|0;g=k;a=h;while(1){c[g>>2]=(d[f+1>>0]|0)<<8|(d[f>>0]|0)|(d[f+2>>0]|0)<<16|(d[f+3>>0]|0)<<24;c[g+4>>2]=(d[f+n>>0]|0)<<8|(d[f+U>>0]|0)|(d[f+o>>0]|0)<<16|(d[f+p>>0]|0)<<24;c[g+8>>2]=(d[f+r>>0]|0)<<8|(d[f+q>>0]|0)|(d[f+s>>0]|0)<<16|(d[f+t>>0]|0)<<24;c[g+12>>2]=(d[f+v>>0]|0)<<8|(d[f+u>>0]|0)|(d[f+w>>0]|0)<<16|(d[f+x>>0]|0)<<24;c[g+16>>2]=(d[f+z>>0]|0)<<8|(d[f+y>>0]|0)|(d[f+A>>0]|0)<<16|(d[f+B>>0]|0)<<24;c[g+20>>2]=(d[f+D>>0]|0)<<8|(d[f+C>>0]|0)|(d[f+E>>0]|0)<<16|(d[f+F>>0]|0)<<24;c[g+24>>2]=(d[f+H>>0]|0)<<8|(d[f+G>>0]|0)|(d[f+I>>0]|0)<<16|(d[f+J>>0]|0)<<24;c[g+28>>2]=(d[f+L>>0]|0)<<8|(d[f+K>>0]|0)|(d[f+M>>0]|0)<<16|(d[f+N>>0]|0)<<24;a=a+-8|0;if(a>>>0<=7)break;else{f=f+O|0;g=g+32|0}}k=k+(T<<2)|0;f=b;g=S}else g=h;switch(g|0){case 5:{W=10;break}case 3:{W=12;break}case 2:{W=13;break}case 1:{W=14;break}case 6:{W=9;break}case 7:{c[k>>2]=(d[f+1>>0]|0)<<8|(d[f>>0]|0)|(d[f+2>>0]|0)<<16|(d[f+3>>0]|0)<<24;k=k+4|0;f=f+U|0;W=9;break}case 4:{W=11;break}default:{}}if((W|0)==9){c[k>>2]=(d[f+1>>0]|0)<<8|(d[f>>0]|0)|(d[f+2>>0]|0)<<16|(d[f+3>>0]|0)<<24;k=k+4|0;f=f+U|0;W=10}if((W|0)==10){c[k>>2]=(d[f+1>>0]|0)<<8|(d[f>>0]|0)|(d[f+2>>0]|0)<<16|(d[f+3>>0]|0)<<24;k=k+4|0;f=f+U|0;W=11}if((W|0)==11){c[k>>2]=(d[f+1>>0]|0)<<8|(d[f>>0]|0)|(d[f+2>>0]|0)<<16|(d[f+3>>0]|0)<<24;k=k+4|0;f=f+U|0;W=12}if((W|0)==12){c[k>>2]=(d[f+1>>0]|0)<<8|(d[f>>0]|0)|(d[f+2>>0]|0)<<16|(d[f+3>>0]|0)<<24;k=k+4|0;f=f+U|0;W=13}if((W|0)==13){c[k>>2]=(d[f+1>>0]|0)<<8|(d[f>>0]|0)|(d[f+2>>0]|0)<<16|(d[f+3>>0]|0)<<24;k=k+4|0;f=f+U|0;W=14}if((W|0)==14){W=0;c[k>>2]=(d[f+1>>0]|0)<<8|(d[f>>0]|0)|(d[f+2>>0]|0)<<16|(d[f+3>>0]|0)<<24;k=k+4|0;f=f+U|0}if(!j)break;else{f=f+Q|0;k=k+(l<<2)|0}}i=V;return}function oN(a,b,f,g,h,j,k,l,m){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=i;r=e[a+26>>1]|0;p=ea(r,k)|0;if(!j){i=s;return}q=(h|0)==0;n=a+76|0;o=ea(r,h)|0;g=b;a=m;while(1){j=j+-1|0;if(q)f=a;else{f=a+o|0;m=c[n>>2]|0;b=h;k=g;while(1){b=b+-1|0;u=d[a+3>>0]|0;t=u<<8;c[k>>2]=d[m+(d[a>>0]|0|t)>>0]|0|u<<24|(d[m+(d[a+1>>0]|0|t)>>0]|0)<<8|(d[m+(d[a+2>>0]|0|t)>>0]|0)<<16;if(!b)break;else{a=a+r|0;k=k+4|0}}g=g+(h<<2)|0}if(!j)break;else{g=g+(l<<2)|0;a=f+p|0}}i=s;return}function pN(a,b,f,g,h,j,k,l,m){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;O=i;N=e[a+26>>1]|0;J=ea(N,k)|0;if(!j){i=O;return}K=h>>>0>7;n=N+1|0;o=N+2|0;p=N<<1;q=p|1;r=p+2|0;s=p+N|0;t=s+1|0;u=s+2|0;v=s+N|0;w=v+1|0;x=v+2|0;y=v+N|0;z=y+1|0;A=y+2|0;B=y+N|0;C=B+1|0;D=B+2|0;E=B+N|0;F=E+1|0;G=E+2|0;H=E+N|0;L=h+-8|0;M=L&-8;L=L-M|0;M=M+8|0;I=ea(M,N)|0;f=m;k=b;while(1){j=j+-1|0;if(K){b=f+I|0;g=k;a=h;while(1){c[g>>2]=d[f>>0]|0|(d[f+1>>0]|0)<<8|(d[f+2>>0]|0)<<16|-16777216;c[g+4>>2]=d[f+N>>0]|0|(d[f+n>>0]|0)<<8|(d[f+o>>0]|0)<<16|-16777216;c[g+8>>2]=d[f+p>>0]|0|(d[f+q>>0]|0)<<8|(d[f+r>>0]|0)<<16|-16777216;c[g+12>>2]=d[f+s>>0]|0|(d[f+t>>0]|0)<<8|(d[f+u>>0]|0)<<16|-16777216;c[g+16>>2]=d[f+v>>0]|0|(d[f+w>>0]|0)<<8|(d[f+x>>0]|0)<<16|-16777216;c[g+20>>2]=d[f+y>>0]|0|(d[f+z>>0]|0)<<8|(d[f+A>>0]|0)<<16|-16777216;c[g+24>>2]=d[f+B>>0]|0|(d[f+C>>0]|0)<<8|(d[f+D>>0]|0)<<16|-16777216;c[g+28>>2]=d[f+E>>0]|0|(d[f+F>>0]|0)<<8|(d[f+G>>0]|0)<<16|-16777216;a=a+-8|0;if(a>>>0<=7)break;else{f=f+H|0;g=g+32|0}}k=k+(M<<2)|0;f=b;g=L}else g=h;switch(g|0){case 7:{c[k>>2]=d[f>>0]|0|(d[f+1>>0]|0)<<8|(d[f+2>>0]|0)<<16|-16777216;k=k+4|0;f=f+N|0;P=9;break}case 6:{P=9;break}case 4:{P=11;break}case 2:{P=13;break}case 3:{P=12;break}case 5:{P=10;break}case 1:{P=14;break}default:{}}if((P|0)==9){c[k>>2]=d[f>>0]|0|(d[f+1>>0]|0)<<8|(d[f+2>>0]|0)<<16|-16777216;k=k+4|0;f=f+N|0;P=10}if((P|0)==10){c[k>>2]=d[f>>0]|0|(d[f+1>>0]|0)<<8|(d[f+2>>0]|0)<<16|-16777216;k=k+4|0;f=f+N|0;P=11}if((P|0)==11){c[k>>2]=d[f>>0]|0|(d[f+1>>0]|0)<<8|(d[f+2>>0]|0)<<16|-16777216;k=k+4|0;f=f+N|0;P=12}if((P|0)==12){c[k>>2]=d[f>>0]|0|(d[f+1>>0]|0)<<8|(d[f+2>>0]|0)<<16|-16777216;k=k+4|0;f=f+N|0;P=13}if((P|0)==13){c[k>>2]=d[f>>0]|0|(d[f+1>>0]|0)<<8|(d[f+2>>0]|0)<<16|-16777216;k=k+4|0;f=f+N|0;P=14}if((P|0)==14){P=0;c[k>>2]=d[f>>0]|0|(d[f+1>>0]|0)<<8|(d[f+2>>0]|0)<<16|-16777216;k=k+4|0;f=f+N|0}if(!j)break;else{f=f+J|0;k=k+(l<<2)|0}}i=O;return}function qN(a,b,f,g,h,j,k,l,m){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;s=e[a+26>>1]|0;q=ea(s,k)|0;if(!j){i=t;return}r=(h|0)==0;o=a+80|0;p=ea(s,h)|0;g=b;n=j;a=m;while(1){n=n+-1|0;if(r)f=a;else{f=a+(p<<1)|0;j=c[o>>2]|0;k=h;b=g;while(1){k=k+-1|0;c[b>>2]=(d[j+(e[a+2>>1]|0)>>0]|0)<<8|(d[j+(e[a>>1]|0)>>0]|0)|(d[j+(e[a+4>>1]|0)>>0]|0)<<16|(d[j+(e[a+6>>1]|0)>>0]|0)<<24;if(!k)break;else{b=b+4|0;a=a+(s<<1)|0}}g=g+(h<<2)|0}if(!n)break;else{g=g+(l<<2)|0;a=f+(q<<1)|0}}i=t;return}function rN(a,b,f,g,h,j,k,l,m){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=i;t=e[a+26>>1]|0;q=ea(t,k)|0;if(!j){i=u;return}r=(h|0)==0;s=a+80|0;o=a+76|0;p=ea(t,h)|0;g=b;a=m;while(1){j=j+-1|0;if(r)f=a;else{f=a+(p<<1)|0;n=c[s>>2]|0;m=c[o>>2]|0;k=h;b=g;while(1){k=k+-1|0;w=d[n+(e[a+6>>1]|0)>>0]|0;v=w<<8;c[b>>2]=d[m+(d[n+(e[a>>1]|0)>>0]|0|v)>>0]|0|w<<24|(d[m+(d[n+(e[a+2>>1]|0)>>0]|0|v)>>0]|0)<<8|(d[m+(d[n+(e[a+4>>1]|0)>>0]|0|v)>>0]|0)<<16;if(!k)break;else{b=b+4|0;a=a+(t<<1)|0}}g=g+(h<<2)|0}if(!j)break;else{g=g+(l<<2)|0;a=f+(q<<1)|0}}i=u;return}function sN(a,b,f,g,h,j,k,l,m){a=a|0;b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;s=e[a+26>>1]|0;q=ea(s,k)|0;if(!j){i=t;return}r=(h|0)==0;o=a+80|0;p=ea(s,h)|0;g=b;n=j;a=m;while(1){n=n+-1|0;if(r)f=a;else{f=a+(p<<1)|0;j=c[o>>2]|0;k=h;b=g;while(1){k=k+-1|0;c[b>>2]=d[j+(e[a>>1]|0)>>0]|0|(d[j+(e[a+2>>1]|0)>>0]|0)<<8|(d[j+(e[a+4>>1]|0)>>0]|0)<<16|-16777216;if(!k)break;else{b=b+4|0;a=a+(s<<1)|0}}g=g+(h<<2)|0}if(!n)break;else{g=g+(l<<2)|0;a=f+(q<<1)|0}}i=t;return}function tN(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;u=v;m=f+32|0;switch(e[m>>1]|0){case 0:{g=b[f+24>>1]|0;break}case 1:{g=b[f+24>>1]|0;break}case 5:case 6:case 2:{g=b[f+24>>1]|0;if(g<<16>>16==8){u=1;i=v;return u|0}break}case 3:{r=f+36|0;o=c[r>>2]|0;s=f+40|0;n=c[s>>2]|0;t=f+44|0;p=c[t>>2]|0;q=f+24|0;l=b[q>>1]|0;g=1<<(l&65535);k=p;h=n;j=g;m=o;while(1){if((j|0)<=0){k=38;break}if((e[m>>1]|0)>255){k=36;break}if((e[h>>1]|0)>255){k=36;break}if((e[k>>1]|0)>255){k=36;break}else{k=k+2|0;h=h+2|0;j=j+-1|0;m=m+2|0}}if((k|0)==36)if(l<<16>>16==31){u=1;i=v;return u|0}else do{g=g+-1|0;l=o+(g<<1)|0;b[l>>1]=(e[l>>1]|0)>>>8;l=n+(g<<1)|0;b[l>>1]=(e[l>>1]|0)>>>8;l=p+(g<<1)|0;b[l>>1]=(e[l>>1]|0)>>>8}while((g|0)>0);else if((k|0)==38){n=c[f>>2]|0;l=c[n+628>>2]|0;Zx(l,cx(n)|0,224784,u)}g=b[q>>1]|0;if((g&65535)>=9){u=1;i=v;return u|0}o=g&65535;n=c[r>>2]|0;m=c[s>>2]|0;j=c[t>>2]|0;h=JK(((8/(o>>>0)|0)<<10)+1024|0)|0;l=f+64|0;c[l>>2]=h;if(!h){f=c[f>>2]|0;t=c[f+628>>2]|0;Dw(t,cx(f)|0,224808,u);u=0;i=v;return u|0}k=h;g=0;h=h+1024|0;while(1){c[k+(g<<2)>>2]=h;if((o|0)==1){u=g>>>7&1;c[h>>2]=e[n+(u<<1)>>1]&255|e[m+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g>>>6&1;c[h+4>>2]=e[n+(u<<1)>>1]&255|e[m+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g>>>5&1;c[h+8>>2]=e[n+(u<<1)>>1]&255|e[m+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g>>>4&1;c[h+12>>2]=e[n+(u<<1)>>1]&255|e[m+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g>>>3&1;c[h+16>>2]=e[n+(u<<1)>>1]&255|e[m+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g>>>2&1;c[h+20>>2]=e[n+(u<<1)>>1]&255|e[m+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g>>>1&1;c[h+24>>2]=e[n+(u<<1)>>1]&255|e[m+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g&1;c[h+28>>2]=e[n+(u<<1)>>1]&255|e[m+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;h=h+32|0}else if((o|0)==4){u=g>>>4&15;c[h>>2]=e[n+(u<<1)>>1]&255|e[m+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g&15;c[h+4>>2]=e[n+(u<<1)>>1]&255|e[m+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;h=h+8|0}else if((o|0)==8){c[h>>2]=e[n+(g<<1)>>1]&255|e[m+(g<<1)>>1]<<8&65280|e[j+(g<<1)>>1]<<16|-16777216;h=h+4|0}else if((o|0)==2){u=g>>>6&3;c[h>>2]=e[n+(u<<1)>>1]&255|e[m+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g>>>4&3;c[h+4>>2]=e[n+(u<<1)>>1]&255|e[m+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g>>>2&3;c[h+8>>2]=e[n+(u<<1)>>1]&255|e[m+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;u=g&3;c[h+12>>2]=e[n+(u<<1)>>1]&255|e[m+(u<<1)>>1]<<8&65280|e[j+(u<<1)>>1]<<16|-16777216;h=h+16|0}g=g+1|0;if((g|0)==256){g=1;break}k=c[l>>2]|0}i=v;return g|0}default:{u=1;i=v;return u|0}}l=f+24|0;j=g<<16>>16==16?255:(1<<(g&65535))+-1|0;k=j+1|0;g=JK(k)|0;n=f+56|0;c[n>>2]=g;if(!g){f=c[f>>2]|0;t=c[f+628>>2]|0;Dw(t,cx(f)|0,224848,u);u=0;i=v;return u|0}h=(j|0)<0;if(!(b[m>>1]|0)){if(!h?(a[g>>0]=-1,(j|0)!=0):0){g=1;do{a[(c[n>>2]|0)+g>>0]=((j-g|0)*255|0)/(j|0)|0;g=g+1|0}while((g|0)!=(k|0))}}else if(!h?(a[g>>0]=0,(j|0)!=0):0){g=1;do{a[(c[n>>2]|0)+g>>0]=(g*255|0)/(j|0)|0;g=g+1|0}while((g|0)!=(k|0))}j=b[l>>1]|0;if((j&65535)>=17){u=1;i=v;return u|0}if((e[m>>1]|0)>=2){u=1;i=v;return u|0}o=c[n>>2]|0;k=j&65535;h=8/(k>>>0)|0;h=JK((h|0)==0?2048:(h<<10)+1024|0)|0;p=f+60|0;c[p>>2]=h;if(!h){f=c[f>>2]|0;t=c[f+628>>2]|0;Dw(t,cx(f)|0,224896,u);u=0;i=v;return u|0}g=h+1024|0;a:do if(j<<16>>16==16){c[h>>2]=g;h=d[o>>0]|0;c[g>>2]=h|h<<8|h<<16|-16777216;h=1;do{g=g+4|0;c[(c[p>>2]|0)+(h<<2)>>2]=g;u=d[o+h>>0]|0;c[g>>2]=u|u<<8|u<<16|-16777216;h=h+1|0}while((h|0)!=256)}else if(j<<16>>16==2){j=0;while(1){c[h+(j<<2)>>2]=g;u=d[o+(j>>6)>>0]|0;c[g>>2]=u|u<<8|u<<16|-16777216;u=d[o+(j>>>4&3)>>0]|0;c[g+4>>2]=u|u<<8|u<<16|-16777216;u=d[o+(j>>>2&3)>>0]|0;c[g+8>>2]=u|u<<8|u<<16|-16777216;u=d[o+(j&3)>>0]|0;c[g+12>>2]=u|u<<8|u<<16|-16777216;if((j|0)==255)break a;h=c[p>>2]|0;j=j+1|0;g=g+16|0}}else if(j<<16>>16==1){j=h;h=0;while(1){c[j+(h<<2)>>2]=g;u=d[o+(h>>7)>>0]|0;c[g>>2]=u|u<<8|u<<16|-16777216;u=d[o+(h>>>6&1)>>0]|0;c[g+4>>2]=u|u<<8|u<<16|-16777216;u=d[o+(h>>>5&1)>>0]|0;c[g+8>>2]=u|u<<8|u<<16|-16777216;u=d[o+(h>>>4&1)>>0]|0;c[g+12>>2]=u|u<<8|u<<16|-16777216;u=d[o+(h>>>3&1)>>0]|0;c[g+16>>2]=u|u<<8|u<<16|-16777216;u=d[o+(h>>>2&1)>>0]|0;c[g+20>>2]=u|u<<8|u<<16|-16777216;u=d[o+(h>>>1&1)>>0]|0;c[g+24>>2]=u|u<<8|u<<16|-16777216;u=d[o+(h&1)>>0]|0;c[g+28>>2]=u|u<<8|u<<16|-16777216;h=h+1|0;if((h|0)==256)break a;j=c[p>>2]|0;g=g+32|0}}else{j=0;while(1){c[h+(j<<2)>>2]=g;if((k|0)==8|(k|0)==16){u=d[o+j>>0]|0;c[g>>2]=u|u<<8|u<<16|-16777216;g=g+4|0}else if((k|0)==4){u=d[o+(j>>4)>>0]|0;c[g>>2]=u|u<<8|u<<16|-16777216;u=d[o+(j&15)>>0]|0;c[g+4>>2]=u|u<<8|u<<16|-16777216;g=g+8|0}j=j+1|0;if((j|0)>=256)break a;h=c[p>>2]|0}}while(0);KK(c[n>>2]|0);c[n>>2]=0;u=1;i=v;return u|0} +function kD(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;if(!b){i=n;return}if(!(WB(b,1229209940)|0))YD(b);if((a[b+435>>0]|0)==3?(c[b+424>>2]|0)>(e[b+420>>1]|0):0)zC(b,269848);f=b+376|0;g=(d|0)==0;h=b+208|0;do{j=xD(b)|0;k=c[f>>2]|0;a:do if((k|0)==1229472850)zD(b,d,j);else if((k|0)==1229278788)BD(b,d,j);else{if(g){yD(b,j)|0;break}l=WB(b,k)|0;m=(k|0)==1229209940;if(l){do if(m){if((j|0)==0?(c[h>>2]&8192|0)==0:0)break;zC(b,269480)}while(0);TD(b,d,j,l);if((k|0)!=1347179589)break;c[h>>2]=c[h>>2]|2;break}if(m){if(!((j|0)==0?(c[h>>2]&8192|0)==0:0))zC(b,269480);yD(b,j)|0;break}do if((k|0)==1933723988){DD(b,d,j);break a}else if((k|0)==1934642260){HD(b,d,j);break a}else if((k|0)==1767135348){SD(b,d,j);break a}else if((k|0)==1766015824){GD(b,d,j);break a}else if((k|0)==1347179589){AD(b,d,j);break a}else if((k|0)==1665684045){ED(b,d,j);break a}else if((k|0)==1950701684){QD(b,d,j);break a}else if((k|0)==1866876531){MD(b,d,j);break a}else if((k|0)==1951551059){ID(b,d,j);break a}else if((k|0)==2052348020){RD(b,d,j);break a}else if((k|0)==1749635924){KD(b,d,j);break a}else if((k|0)==1649100612){JD(b,d,j);break a}else if((k|0)==1933787468){OD(b,d,j);break a}else if((k|0)==1950960965){PD(b,d,j);break a}else if((k|0)==1883455820){ND(b,d,j);break a}else if((k|0)==1732332865){CD(b,d,j);break a}else if((k|0)==1883789683){LD(b,d,j);break a}else if((k|0)==1934772034){FD(b,d,j);break a}else{TD(b,d,j,0);break a}while(0)}while(0)}while((c[h>>2]&16|0)==0);i=n;return}function lD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;if(!a){i=f;return}e=c[a>>2]|0;if(!e){i=f;return}RB(e,d);RB(e,b);c[a>>2]=0;qC(e);a=e+728|0;ZC(e,c[a>>2]|0);c[a>>2]=0;a=e+804|0;ZC(e,c[a>>2]|0);c[a>>2]=0;a=e+788|0;ZC(e,c[a>>2]|0);c[a>>2]=0;a=e+612|0;ZC(e,c[a>>2]|0);c[a>>2]=0;a=e+616|0;ZC(e,c[a>>2]|0);c[a>>2]=0;a=e+676|0;d=c[a>>2]|0;if(d&4096){d=e+416|0;LB(e,c[d>>2]|0);c[d>>2]=0;d=c[a>>2]|0}b=d&-4097;c[a>>2]=b;if(!(d&8192))d=b;else{d=e+528|0;ZC(e,c[d>>2]|0);c[d>>2]=0;d=c[a>>2]|0}c[a>>2]=d&-8193;kI(e+224|0)|0;a=e+568|0;ZC(e,c[a>>2]|0);c[a>>2]=0;a=e+772|0;ZC(e,c[a>>2]|0);c[a>>2]=0;a=e+696|0;ZC(e,c[a>>2]|0);c[a>>2]=0;YC(e);i=f;return}function mD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;e=c[a+184>>2]|0;if(!e)sC(a,269896);else{$d[e&255](a,b,d);i=f;return}}function nD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!a){i=e;return}if((Na(b|0,1,d|0,c[a+188>>2]|0)|0)==(d|0)){i=e;return}else sC(a,269928)}function oD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!a){i=e;return}c[a+188>>2]=b;if(!d)d=46;c[a+184>>2]=d;d=a+180|0;if(c[d>>2]|0){c[d>>2]=0;vC(a,269944)}c[a+472>>2]=0;i=e;return}function pD(a,d,f){a=a|0;d=+d;f=+f;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;if(d>0.0&d<128.0)d=d*1.0e5;d=+S(+(d+.5));if(d>2147483647.0|d<-2147483647.0)GC(a,270384);h=~~d;if(f>0.0&f<128.0)d=f*1.0e5;else d=f;d=+S(+(d+.5));if(d>2147483647.0|d<-2147483647.0)GC(a,270384);k=~~d;if(!a){i=n;return}l=a+212|0;j=c[l>>2]|0;if(j&64){DC(a,270400);i=n;return}g=j|16384;c[l>>2]=g;if((h|0)==-1e5|(h|0)==-1){g=j|20480;c[l>>2]=g;h=22e4}else if((h|0)==-5e4|(h|0)==-2)h=151724;if((k|0)==-5e4|(k|0)==-2)m=65909;else if(!((k|0)==-1e5|(k|0)==-1))if((k|0)<1)sC(a,270016);else m=k;else{c[l>>2]=g|4096;m=45455}if((h|0)<1)sC(a,270056);c[a+824>>2]=m;l=a+898|0;b[l>>1]=e[l>>1]|0|1;c[a+488>>2]=h;i=n;return}function qD(a){a=a|0;var b=0,d=0,e=0;e=i;if(!a){i=e;return}b=a+212|0;d=c[b>>2]|0;if(!(d&64)){c[b>>2]=d|16384;a=a+216|0;c[a>>2]=c[a>>2]|4096;i=e;return}else{DC(a,270400);i=e;return}}function rD(a){a=a|0;var b=0,d=0,e=0;e=i;if(!a){i=e;return}b=a+212|0;d=c[b>>2]|0;if(!(d&64)){c[b>>2]=d|16384;a=a+216|0;c[a>>2]=c[a>>2]|33558528;i=e;return}else{DC(a,270400);i=e;return}}function sD(a){a=a|0;var b=0,d=0,e=0;e=i;if(!a){i=e;return}b=a+212|0;d=c[b>>2]|0;if(!(d&64)){c[b>>2]=d|16384;a=a+216|0;c[a>>2]=c[a>>2]|20480;i=e;return}else{DC(a,270400);i=e;return}}function tD(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;B=i;i=i+16|0;j=B;n=f+824|0;g=c[n>>2]|0;q=f+488|0;k=c[q>>2]|0;h=(k|0)!=0;do if(!g)if(h){c[n>>2]=lC(k)|0;g=0;break}else{c[n>>2]=1e5;c[q>>2]=1e5;g=0;break}else{if(!h){c[q>>2]=lC(g)|0;g=0;break}if(!(hC(j,g,k,1e5)|0))g=1;else g=(mC(c[j>>2]|0)|0)!=0}while(0);A=f+898|0;b[A>>1]=e[A>>1]|1;A=f+216|0;z=c[A>>2]|0;g=g?z|8192:z&-8193;c[A>>2]=g;if((g&262272|0)==262144){c[A>>2]=g&-41943297;z=f+212|0;c[z>>2]=c[z>>2]&-8193;b[f+428>>1]=0}z=(mC(c[q>>2]|0)|0)==0;g=c[A>>2]|0;if(z){g=g&-8388609;c[A>>2]=g;z=f+212|0;c[z>>2]=c[z>>2]&-8193}if(!(g&6291456))m=g;else{gC(f);m=c[A>>2]|0}if(!(m&256)){if(((m&16512|0)==16512?(o=b[f+454>>1]|0,o<<16>>16==(b[f+456>>1]|0)):0)?o<<16>>16==(b[f+458>>1]|0):0){z=f+208|0;c[z>>2]=c[z>>2]|2048;b[f+460>>1]=o}}else if(!(a[f+435>>0]&2)){z=f+208|0;c[z>>2]=c[z>>2]|2048}z=f+435|0;k=a[z>>0]|0;if(k<<24>>24==3){k=b[f+428>>1]|0;a:do if(!(k<<16>>16)){k=0;h=0;y=28}else{o=c[f+528>>2]|0;j=k&65535;p=0;h=0;while(1){g=a[o+p>>0]|0;if(g<<24>>24!=-1)if(!(g<<24>>24))h=1;else{g=m;break a}p=p+1|0;if((p|0)>=(j|0)){y=28;break}}}while(0);if((y|0)==28){g=m&-8388609;c[A>>2]=g;v=f+212|0;c[v>>2]=c[v>>2]&-8193;if(!h){g=m&-8388993;c[A>>2]=g}}if(((g&4352|0)==4352?(v=d[f+452>>0]|0,u=c[f+416>>2]|0,b[f+454>>1]=d[u+(v*3|0)>>0]|0,b[f+456>>1]=d[u+(v*3|0)+1>>0]|0,b[f+458>>1]=d[u+(v*3|0)+2>>0]|0,(g&34078720|0)==524288):0)?(l=k&65535,k<<16>>16!=0):0){g=c[f+528>>2]|0;k=0;do{v=g+k|0;a[v>>0]=d[v>>0]^255;k=k+1|0}while((k|0)<(l|0));g=c[A>>2]|0}}else{if(!(k&4)){v=(b[f+428>>1]|0)==0;g=m&-8388609;c[A>>2]=g;u=f+212|0;c[u>>2]=c[u>>2]&-8193;if(v){g=m&-8388993;c[A>>2]=g}}else g=m;if((g&4352|0)==4352&(k&2)==0){h=e[f+460>>1]|0;k=e[f+540>>1]|0;j=d[f+436>>0]|0;if((j|0)==2){h=h*85|0;k=k*85|0}else if((j|0)==4){h=h*17|0;k=k*17|0}else if((j|0)==1){h=h*255|0;k=k*255|0}v=h&65535;b[f+458>>1]=v;b[f+456>>1]=v;b[f+454>>1]=v;if(!(g&33554432)){v=k&65535;b[f+538>>1]=v;b[f+536>>1]=v;b[f+534>>1]=v}}}if((g&896|0)==640?(a[f+436>>0]|0)!=16:0){v=f+454|0;b[v>>1]=(((e[v>>1]|0)*255|0)+32895|0)>>>16;v=f+456|0;b[v>>1]=(((e[v>>1]|0)*255|0)+32895|0)>>>16;v=f+458|0;b[v>>1]=(((e[v>>1]|0)*255|0)+32895|0)>>>16;v=f+460|0;b[v>>1]=(((e[v>>1]|0)*255|0)+32895|0)>>>16}if((g&128|0)!=0&(g&67109888|0)!=0&(g&256|0)==0?(a[f+436>>0]|0)==16:0){v=f+454|0;b[v>>1]=(e[v>>1]|0)*257;v=f+456|0;b[v>>1]=(e[v>>1]|0)*257;v=f+458|0;b[v>>1]=(e[v>>1]|0)*257;v=f+460|0;b[v>>1]=(e[v>>1]|0)*257}v=f+462|0;u=f+452|0;b[v+0>>1]=b[u+0>>1]|0;b[v+2>>1]=b[u+2>>1]|0;b[v+4>>1]=b[u+4>>1]|0;b[v+6>>1]=b[u+6>>1]|0;b[v+8>>1]=b[u+8>>1]|0;do if(!(g&8192)){if(g&6291456){if(mC(c[n>>2]|0)|0){y=65;break}if(mC(c[q>>2]|0)|0){y=65;break}g=c[A>>2]|0}if(g&128){if(mC(c[n>>2]|0)|0){y=65;break}if(mC(c[q>>2]|0)|0){y=65;break}if((a[f+446>>0]|0)==3?(mC(c[f+448>>2]|0)|0)!=0:0){y=65;break}}g=c[A>>2]|0;if(g&8388608){if(mC(c[q>>2]|0)|0){y=65;break}g=c[A>>2]|0}if((g&128|0)!=0?(a[z>>0]|0)==3:0){x=b[f+428>>1]|0;o=x&65535;p=c[f+416>>2]|0;k=b[f+454>>1]|0;q=k&255;h=b[f+456>>1]|0;r=h&255;j=b[f+458>>1]|0;s=j&255;if(x<<16>>16){n=f+528|0;l=k&255;m=h&255;g=j&255;j=0;do{k=(c[n>>2]|0)+j|0;h=a[k>>0]|0;if(!(h<<24>>24)){a[p+(j*3|0)>>0]=q;a[p+(j*3|0)+1>>0]=r;a[p+(j*3|0)+2>>0]=s}else if(h<<24>>24!=-1){x=p+(j*3|0)|0;w=h&255;w=(ea(w^255,l)|0)+128+(ea(d[x>>0]|0,w)|0)|0;a[x>>0]=((w>>>8&255)+w|0)>>>8;x=p+(j*3|0)+1|0;w=d[k>>0]|0;w=(ea(w,d[x>>0]|0)|0)+128+(ea(w^255,m)|0)|0;a[x>>0]=((w>>>8&255)+w|0)>>>8;x=p+(j*3|0)+2|0;w=d[k>>0]|0;w=(ea(w,d[x>>0]|0)|0)+128+(ea(w^255,g)|0)|0;a[x>>0]=((w>>>8&255)+w|0)>>>8}j=j+1|0}while((j|0)<(o|0));g=c[A>>2]|0}g=g&-129;c[A>>2]=g}}else y=65;while(0);do if((y|0)==65){rC(f,d[f+436>>0]|0);g=c[A>>2]|0;if(!(g&128)){if((a[z>>0]|0)!=3)break;if(!((g&4096|0)==0|(g&6291456|0)==0))break;j=c[f+416>>2]|0;y=b[f+420>>1]|0;k=y&65535;if(y<<16>>16){h=c[f+492>>2]|0;l=0;do{y=j+(l*3|0)|0;a[y>>0]=a[h+(d[y>>0]|0)>>0]|0;y=j+(l*3|0)+1|0;a[y>>0]=a[h+(d[y>>0]|0)>>0]|0;y=j+(l*3|0)+2|0;a[y>>0]=a[h+(d[y>>0]|0)>>0]|0;l=l+1|0}while((l|0)<(k|0))}g=g&-8193;c[A>>2]=g;break}if(g&6291456)vC(f,270096);if((a[z>>0]|0)!=3){m=f+446|0;g=d[m>>0]|0;if((g|0)==1){s=c[q>>2]|0;t=1e5}else if((g|0)==2){s=lC(c[n>>2]|0)|0;t=nC(c[n>>2]|0,c[q>>2]|0)|0}else if((g|0)==3){t=f+448|0;s=lC(c[t>>2]|0)|0;t=nC(c[t>>2]|0,c[q>>2]|0)|0}else sC(f,270152);l=mC(s)|0;g=mC(t)|0;l=(l|0)!=0;if(l)b[f+470>>1]=pC(f,e[f+460>>1]|0,s)|0;g=(g|0)!=0;if(g){y=f+460|0;b[y>>1]=pC(f,e[y>>1]|0,t)|0}k=f+454|0;h=b[k>>1]|0;j=f+456|0;if((h<<16>>16==(b[j>>1]|0)?(r=f+458|0,h<<16>>16==(b[r>>1]|0)):0)?h<<16>>16==(b[f+460>>1]|0):0){y=b[f+470>>1]|0;b[f+468>>1]=y;b[f+466>>1]=y;b[f+464>>1]=y;b[r>>1]=h;b[j>>1]=h;b[k>>1]=h}else{if(l){b[f+464>>1]=pC(f,h&65535,s)|0;b[f+466>>1]=pC(f,e[j>>1]|0,s)|0;b[f+468>>1]=pC(f,e[f+458>>1]|0,s)|0}if(g){b[k>>1]=pC(f,e[k>>1]|0,t)|0;b[j>>1]=pC(f,e[j>>1]|0,t)|0;y=f+458|0;b[y>>1]=pC(f,e[y>>1]|0,t)|0}}a[m>>0]=1;g=c[A>>2]|0;break}u=c[f+416>>2]|0;l=b[f+420>>1]|0;v=l&65535;g=a[f+446>>0]|0;do if(g<<24>>24!=2){g=g&255;if((g|0)==1){p=c[q>>2]|0;k=1e5}else if((g|0)==3){k=f+448|0;p=lC(c[k>>2]|0)|0;k=nC(c[k>>2]|0,c[q>>2]|0)|0}else if((g|0)==2){p=lC(c[n>>2]|0)|0;k=nC(c[n>>2]|0,c[q>>2]|0)|0}else{p=1e5;k=1e5}t=(mC(k)|0)==0;h=f+454|0;g=b[h>>1]|0;if(t){g=g&255;j=b[f+456>>1]&255;m=b[f+458>>1]&255}else{g=oC(g&65535,k)|0;j=oC(e[f+456>>1]|0,k)|0;m=oC(e[f+458>>1]|0,k)|0}t=(mC(p)|0)==0;k=b[h>>1]|0;if(t){k=k&255;o=b[f+456>>1]&255;h=b[f+458>>1]&255;break}else{k=oC(k&65535,p)|0;o=oC(e[f+456>>1]|0,p)|0;h=oC(e[f+458>>1]|0,p)|0;break}}else{k=e[f+454>>1]|0;m=c[f+492>>2]|0;o=e[f+456>>1]|0;h=e[f+458>>1]|0;t=c[f+504>>2]|0;g=a[m+k>>0]|0;j=a[m+o>>0]|0;m=a[m+h>>0]|0;k=a[t+k>>0]|0;o=a[t+o>>0]|0;h=a[t+h>>0]|0}while(0);if(l<<16>>16){r=f+428|0;s=f+528|0;t=f+504|0;n=k&255;q=f+500|0;l=o&255;o=h&255;k=f+492|0;p=0;do{do if((p|0)<(e[r>>1]|0)?(w=(c[s>>2]|0)+p|0,x=a[w>>0]|0,x<<24>>24!=-1):0){h=u+(p*3|0)|0;if(!(x<<24>>24)){a[h>>0]=g;a[u+(p*3|0)+1>>0]=j;a[u+(p*3|0)+2>>0]=m;break}else{E=c[t>>2]|0;C=x&255;C=(ea(C^255,n)|0)+128+(ea(d[E+(d[h>>0]|0)>>0]|0,C)|0)|0;D=c[q>>2]|0;a[h>>0]=a[D+(((C>>>8&255)+C|0)>>>8&255)>>0]|0;h=u+(p*3|0)+1|0;C=d[w>>0]|0;C=(ea(C,d[E+(d[h>>0]|0)>>0]|0)|0)+128+(ea(C^255,l)|0)|0;a[h>>0]=a[D+(((C>>>8&255)+C|0)>>>8&255)>>0]|0;h=u+(p*3|0)+2|0;C=d[w>>0]|0;C=(ea(C,d[E+(d[h>>0]|0)>>0]|0)|0)+128+(ea(C^255,o)|0)|0;a[h>>0]=a[D+(((C>>>8&255)+C|0)>>>8&255)>>0]|0;break}}else y=88;while(0);if((y|0)==88){y=0;E=u+(p*3|0)|0;D=c[k>>2]|0;a[E>>0]=a[D+(d[E>>0]|0)>>0]|0;E=u+(p*3|0)+1|0;a[E>>0]=a[D+(d[E>>0]|0)>>0]|0;E=u+(p*3|0)+2|0;a[E>>0]=a[D+(d[E>>0]|0)>>0]|0}p=p+1|0}while((p|0)<(v|0))}g=c[A>>2]&-8321;c[A>>2]=g}while(0);if((g&4104|0)!=8){i=B;return}if((a[z>>0]|0)!=3){i=B;return}l=b[f+420>>1]|0;m=l&65535;E=a[f+516>>0]|0;k=8-(E&255)|0;c[A>>2]=g&-9;if(!(E<<24>>24==0|(k|0)<1|l<<16>>16==0)){g=c[f+416>>2]|0;h=0;do{E=g+(h*3|0)|0;a[E>>0]=(d[E>>0]|0)>>>k;h=h+1|0}while((h|0)<(m|0))}E=a[f+517>>0]|0;g=8-(E&255)|0;if(!(E<<24>>24==0|(g|0)<1|l<<16>>16==0)){h=c[f+416>>2]|0;j=0;do{E=h+(j*3|0)+1|0;a[E>>0]=(d[E>>0]|0)>>>g;j=j+1|0}while((j|0)<(m|0))}E=a[f+518>>0]|0;j=8-(E&255)|0;if(E<<24>>24==0|(j|0)<1|l<<16>>16==0){i=B;return}g=c[f+416>>2]|0;h=0;do{E=g+(h*3|0)+2|0;a[E>>0]=(d[E>>0]|0)>>>j;h=h+1|0}while((h|0)<(m|0));i=B;return}function uD(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;m=c[e+216>>2]|0;do if(m&4096){h=f+25|0;l=a[h>>0]|0;j=l&255;g=(b[e+428>>1]|0)==0;if(l<<24>>24==3){a[h>>0]=g?2:6;a[f+24>>0]=8;b[f+22>>1]=0;if(c[e+416>>2]|0)break;sC(e,270184)}if(!(g|(m&33554432|0)==0))a[h>>0]=j|4;g=f+24|0;if((d[g>>0]|0)<8)a[g>>0]=8;b[f+22>>1]=0}while(0);if(m&128){l=f+170|0;j=e+452|0;b[l+0>>1]=b[j+0>>1]|0;b[l+2>>1]=b[j+2>>1]|0;b[l+4>>1]=b[j+4>>1]|0;b[l+6>>1]=b[j+6>>1]|0;b[l+8>>1]=b[j+8>>1]|0}c[f+40>>2]=c[e+824>>2];l=f+24|0;g=a[l>>0]|0;if(g<<24>>24==16){if(!(m&67108864))g=16;else{a[l>>0]=8;g=8}if(m&1024){a[l>>0]=8;g=8}}if(m&16384){j=f+25|0;a[j>>0]=d[j>>0]|2}if(m&6291456){j=f+25|0;a[j>>0]=d[j>>0]&253}if(((m&64|0)!=0?(k=f+25|0,j=a[k>>0]|0,j<<24>>24==6|j<<24>>24==2):0)?(c[e+612>>2]|0)!=0&g<<24>>24==8:0){a[k>>0]=3;g=8}if((m&512|0)!=0&g<<24>>24==8)if((a[f+25>>0]|0)==3)g=8;else{a[l>>0]=16;g=16}if((m&4|0)!=0&(g&255)<8){a[l>>0]=8;g=8}k=f+25|0;j=a[k>>0]|0;do if(j<<24>>24!=3){h=f+29|0;if(!(j&2)){a[h>>0]=1;h=1;break}else{a[h>>0]=3;h=3;break}}else{a[f+29>>0]=1;h=1}while(0);if(m&262144){j=j&251;a[k>>0]=j;b[f+22>>1]=0}if(j&4){h=h+1<<24>>24;a[f+29>>0]=h}if((m&32768|0)!=0?j<<24>>24==0|j<<24>>24==2:0){h=h+1<<24>>24;a[f+29>>0]=h;if(!(m&16777216))j=h;else{a[k>>0]=j&255|4;j=h}}else j=h;if(m&1048576){h=a[e+204>>0]|0;if((g&255)<(h&255)){a[l>>0]=h;g=h}h=a[e+205>>0]|0;if((j&255)<(h&255))a[f+29>>0]=h;else h=j}else h=j;g=ea(g&255,h&255)|0;a[f+30>>0]=g;g=g&255;h=c[f>>2]|0;if(g>>>0>7){l=ea(g>>>3,h)|0;f=f+12|0;c[f>>2]=l;f=e+404|0;c[f>>2]=l;i=n;return}else{l=((ea(g,h)|0)+7|0)>>>3;f=f+12|0;c[f>>2]=l;f=e+404|0;c[f>>2]=l;i=n;return}}function vD(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;aa=i;i=i+16|0;Y=aa;$=f+384|0;r=c[$>>2]|0;if(!r)sC(f,270224);Z=f+212|0;if((c[Z>>2]&16448|0)==16384)sC(f,270240);_=f+216|0;k=c[_>>2]|0;do if(k&4096){x=g+8|0;if((a[x>>0]|0)!=3){p=r+1|0;if((b[f+428>>1]|0)==0|(k&33554432|0)==0){VQ(g,p,0);break}else{VQ(g,p,f+532|0);break}}u=c[f+416>>2]|0;s=c[f+528>>2]|0;o=b[f+428>>1]|0;t=o&65535;v=c[g>>2]|0;w=g+9|0;p=a[w>>0]|0;if((p&255)>=8){if(p<<24>>24!=8)break}else{p=p&255;if((p|0)==1){if(v){k=r+v|0;q=0;n=v+7&7^7;m=r+(((v+-1|0)>>>3)+1)|0;while(1){a[k>>0]=(d[m>>0]&1<>>2)+1)|0;while(1){a[k>>0]=(d[m>>0]|0)>>>n&3;p=(n|0)==6;q=q+1|0;if((q|0)==(v|0))break;else{k=k+-1|0;n=p?0:n+2|0;m=p?m+-1|0:m}}}}else if((p|0)==4?(v|0)!=0:0){k=r+v|0;q=0;n=v<<2&4;m=r+(((v+-1|0)>>>1)+1)|0;while(1){a[k>>0]=(d[m>>0]|0)>>>n&15;p=(n|0)==4;q=q+1|0;if((q|0)==(v|0))break;else{k=k+-1|0;n=p?0:n+4|0;m=p?m+-1|0:m}}}a[w>>0]=8;a[g+11>>0]=8;c[g+4>>2]=v}p=r+v|0;if(!(o<<16>>16)){n=v*3|0;if(v){k=r+n|0;q=0;while(1){a[k>>0]=a[u+((d[p>>0]|0)*3|0)+2>>0]|0;a[k+-1>>0]=a[u+((d[p>>0]|0)*3|0)+1>>0]|0;a[k+-2>>0]=a[u+((d[p>>0]|0)*3|0)>>0]|0;q=q+1|0;if((q|0)==(v|0))break;else{k=k+-3|0;p=p+-1|0}}}a[w>>0]=8;a[g+11>>0]=24;c[g+4>>2]=n;a[x>>0]=2;a[g+10>>0]=3;break}m=v<<2;if(v){q=r+m|0;n=0;while(1){k=d[p>>0]|0;if(k>>>0>>0)k=a[s+k>>0]|0;else k=-1;a[q>>0]=k;a[q+-1>>0]=a[u+((d[p>>0]|0)*3|0)+2>>0]|0;a[q+-2>>0]=a[u+((d[p>>0]|0)*3|0)+1>>0]|0;a[q+-3>>0]=a[u+((d[p>>0]|0)*3|0)>>0]|0;n=n+1|0;if((n|0)==(v|0))break;else{q=q+-4|0;p=p+-1|0}}}a[w>>0]=8;a[g+11>>0]=32;c[g+4>>2]=m;a[x>>0]=6;a[g+10>>0]=4}while(0);p=c[_>>2]|0;if((p&262272|0)==262144?(I=a[g+8>>0]|0,I<<24>>24==4|I<<24>>24==6):0){yE(g,(c[$>>2]|0)+1|0,0);p=c[_>>2]|0}do if((p&6291456|0)!=0?(C=(c[$>>2]|0)+1|0,J=g+8|0,y=d[J>>0]|0,(y&3|0)==2):0){E=e[f+702>>1]|0;F=e[f+704>>1]|0;G=32768-E-F|0;I=c[g>>2]|0;B=(y&4|0)!=0;H=g+9|0;a:do if((a[H>>0]|0)==8){t=f+500|0;if((c[t>>2]|0)!=0?(z=f+504|0,(c[z>>2]|0)!=0):0){if(!I){q=0;break}u=f+492|0;p=C;v=0;q=0;k=C;while(1){m=a[k>>0]|0;n=a[k+1>>0]|0;s=k+3|0;o=a[k+2>>0]|0;r=m&255;if(m<<24>>24==n<<24>>24?m<<24>>24==o<<24>>24:0){n=c[u>>2]|0;if(n)m=a[n+r>>0]|0}else{m=c[z>>2]|0;m=((ea(d[m+r>>0]|0,E)|0)+16384+(ea(d[m+(n&255)>>0]|0,F)|0)+(ea(d[m+(o&255)>>0]|0,G)|0)|0)>>>15;q=q|1;m=a[(c[t>>2]|0)+m>>0]|0}n=p+1|0;a[p>>0]=m;if(B){a[n>>0]=a[s>>0]|0;p=p+2|0;k=k+4|0}else{p=n;k=s}v=v+1|0;if((v|0)==(I|0))break a}}if(I)if(B){o=C;r=0;q=0;m=C;while(1){p=a[m>>0]|0;k=a[m+1>>0]|0;n=a[m+2>>0]|0;if(!(p<<24>>24==k<<24>>24?p<<24>>24==n<<24>>24:0)){q=q|1;p=((ea(k&255,F)|0)+(ea(p&255,E)|0)+(ea(n&255,G)|0)|0)>>>15&255}a[o>>0]=p;a[o+1>>0]=a[m+3>>0]|0;r=r+1|0;if((r|0)==(I|0))break;else{o=o+2|0;m=m+4|0}}}else{o=C;r=0;q=0;m=C;while(1){p=a[m>>0]|0;k=a[m+1>>0]|0;n=a[m+2>>0]|0;if(!(p<<24>>24==k<<24>>24?p<<24>>24==n<<24>>24:0)){q=q|1;p=((ea(k&255,F)|0)+(ea(p&255,E)|0)+(ea(n&255,G)|0)|0)>>>15&255}a[o>>0]=p;r=r+1|0;if((r|0)==(I|0))break;else{o=o+1|0;m=m+3|0}}}else q=0}else{x=f+512|0;if((c[x>>2]|0)!=0?(D=f+508|0,(c[D>>2]|0)!=0):0){if(!I){q=0;break}y=f+496|0;z=f+484|0;p=C;A=0;q=0;k=C;while(1){n=a[k>>0]|0;u=n&255;m=a[k+1>>0]|0;v=m&255;C=u<<8|v;o=d[k+2>>0]|0;r=d[k+3>>0]|0;s=d[k+4>>0]|0;t=d[k+5>>0]|0;w=k+6|0;if((C|0)==(o<<8|r|0)?(C|0)==(s<<8|t|0):0){o=c[y>>2]|0;if(o){n=b[(c[o+(v>>>(c[z>>2]|0)<<2)>>2]|0)+(u<<1)>>1]|0;m=n&255;n=(n&65535)>>>8&255}}else{m=c[z>>2]|0;n=c[x>>2]|0;n=(ea(e[(c[n+(v>>>m<<2)>>2]|0)+(u<<1)>>1]|0,E)|0)+16384+(ea(e[(c[n+(r>>>m<<2)>>2]|0)+(o<<1)>>1]|0,F)|0)+(ea(e[(c[n+(t>>>m<<2)>>2]|0)+(s<<1)>>1]|0,G)|0)|0;n=b[(c[(c[D>>2]|0)+((n>>>15&255)>>>m<<2)>>2]|0)+((n>>>23&255)<<1)>>1]|0;q=q|1;m=n&255;n=(n&65535)>>>8&255}a[p>>0]=n;n=p+2|0;a[p+1>>0]=m;if(B){a[n>>0]=a[w>>0]|0;a[p+3>>0]=a[k+7>>0]|0;p=p+4|0;k=k+8|0}else{p=n;k=w}A=A+1|0;if((A|0)==(I|0))break a}}if(!I)q=0;else{m=C;o=0;q=0;k=C;while(1){C=d[k>>0]<<8|d[k+1>>0];p=d[k+2>>0]<<8|d[k+3>>0];D=d[k+4>>0]<<8|d[k+5>>0];n=k+6|0;q=(C|0)==(p|0)&(C|0)==(D|0)&1^1|q;D=(ea(C,E)|0)+16384+(ea(p,F)|0)+(ea(D,G)|0)|0;a[m>>0]=D>>>23;p=m+2|0;a[m+1>>0]=D>>>15;if(B){a[p>>0]=a[n>>0]|0;a[m+3>>0]=a[k+7>>0]|0;p=m+4|0;k=k+8|0}else k=n;o=o+1|0;if((o|0)==(I|0))break;else m=p}}}while(0);G=g+10|0;p=(d[G>>0]|0)+254|0;a[G>>0]=p;a[J>>0]=d[J>>0]&253;p=ea(d[H>>0]|0,p&255)|0;a[g+11>>0]=p;p=p&255;if(p>>>0>7)k=ea(p>>>3,I)|0;else k=((ea(p,I)|0)+7|0)>>>3;c[g+4>>2]=k;if(!q){l=c[_>>2]|0;break}a[f+700>>0]=1;k=c[_>>2]|0;if((k&6291456|0)==4194304){vC(f,270264);k=c[_>>2]|0}if((k&6291456|0)==2097152)sC(f,270264);else l=k}else l=p;while(0);if((l&16384|0)!=0?(c[f+208>>2]&2048|0)==0:0){WQ(g,(c[$>>2]|0)+1|0);l=c[_>>2]|0}b:do if(l&128){k=(c[$>>2]|0)+1|0;z=c[f+492>>2]|0;x=c[f+500>>2]|0;y=c[f+504>>2]|0;D=c[f+496>>2]|0;A=c[f+508>>2]|0;B=c[f+512>>2]|0;E=c[f+484>>2]|0;q=c[Z>>2]&8192;s=(q|0)==0;q=q>>>13;J=c[g>>2]|0;p=d[g+8>>0]|0;if(!p)switch(d[g+9>>0]|0){case 4:{l=(J|0)==0;if(!z){if(l)break b;l=f+540|0;q=f+460|0;n=0;m=4;while(1){p=d[k>>0]|0;if((p>>>m&15|0)==(e[l>>1]|0))a[k>>0]=e[q>>1]<>>(4-m|0);p=(m|0)==0;n=n+1|0;if((n|0)==(J|0))break b;else{m=p?4:m+-4|0;k=p?k+1|0:k}}}if(l)break b;q=f+540|0;n=f+460|0;m=0;o=4;while(1){p=d[k>>0]|0;l=p>>>o&15;if((l|0)==(e[q>>1]|0))p=e[n>>1]<>>(4-o|0);else p=(d[z+(l<<4|l)>>0]|0)>>>4<>>(4-o|0);a[k>>0]=p;p=(o|0)==0;m=m+1|0;if((m|0)==(J|0))break;else{o=p?4:o+-4|0;k=p?k+1|0:k}}break}case 2:{l=(J|0)==0;if(!z){if(l)break b;l=f+540|0;q=f+460|0;n=0;m=6;while(1){p=d[k>>0]|0;if((p>>>m&3|0)==(e[l>>1]|0))a[k>>0]=e[q>>1]<>>(6-m|0);p=(m|0)==0;n=n+1|0;if((n|0)==(J|0))break b;else{m=p?6:m+-2|0;k=p?k+1|0:k}}}if(l)break b;q=f+540|0;n=f+460|0;m=0;o=6;while(1){p=d[k>>0]|0;l=p>>>o&3;if((l|0)==(e[q>>1]|0))p=e[n>>1]<>>(6-o|0);else p=(d[z+(l<<2|l|l<<4|l<<6)>>0]|0)>>>6<>>(6-o|0);a[k>>0]=p;p=(o|0)==0;m=m+1|0;if((m|0)==(J|0))break;else{o=p?6:o+-2|0;k=p?k+1|0:k}}break}case 1:{if(!J)break b;l=f+540|0;q=f+460|0;n=0;m=7;while(1){p=d[k>>0]|0;if((p>>>m&1|0)==(e[l>>1]|0))a[k>>0]=e[q>>1]<>>(7-m|0);p=(m|0)==0;n=n+1|0;if((n|0)==(J|0))break;else{m=p?7:m+-1|0;k=p?k+1|0:k}}break}case 8:{l=(J|0)==0;if(!z){if(l)break b;n=f+540|0;m=f+460|0;o=0;l=k;while(1){if((d[l>>0]|0)==(e[n>>1]|0))a[l>>0]=b[m>>1];o=o+1|0;if((o|0)==(J|0))break b;else l=l+1|0}}if(l)break b;l=f+540|0;q=f+460|0;n=0;while(1){p=d[k>>0]|0;if((p|0)==(e[l>>1]|0))p=b[q>>1]&255;else p=a[z+p>>0]|0;a[k>>0]=p;n=n+1|0;if((n|0)==(J|0))break;else k=k+1|0}break}case 16:{l=(J|0)==0;if(!D){if(l)break b;p=f+540|0;n=f+460|0;m=0;while(1){l=k+1|0;if((d[k>>0]<<8|d[l>>0]|0)==(e[p>>1]|0)){a[k>>0]=(e[n>>1]|0)>>>8;a[l>>0]=b[n>>1]}m=m+1|0;if((m|0)==(J|0))break b;else k=k+2|0}}if(l)break b;n=f+540|0;m=f+460|0;o=0;while(1){p=d[k>>0]|0;q=k+1|0;l=d[q>>0]|0;if((p<<8|l|0)==(e[n>>1]|0)){a[k>>0]=(e[m>>1]|0)>>>8;p=b[m>>1]|0}else{p=b[(c[D+(l>>>E<<2)>>2]|0)+(p<<1)>>1]|0;a[k>>0]=(p&65535)>>>8}a[q>>0]=p;o=o+1|0;if((o|0)==(J|0))break;else k=k+2|0}break}default:break b}else if((p|0)==2)if((a[g+9>>0]|0)==8){p=(J|0)==0;if(!z){if(p)break;p=f+534|0;l=f+536|0;q=f+538|0;n=f+454|0;m=f+456|0;o=f+458|0;r=0;while(1){if(((d[k>>0]|0)==(e[p>>1]|0)?(K=k+1|0,(d[K>>0]|0)==(e[l>>1]|0)):0)?(L=k+2|0,(d[L>>0]|0)==(e[q>>1]|0)):0){a[k>>0]=b[n>>1];a[K>>0]=b[m>>1];a[L>>0]=b[o>>1]}r=r+1|0;if((r|0)==(J|0))break b;else k=k+3|0}}if(p)break;n=f+534|0;m=f+536|0;o=f+538|0;r=f+454|0;s=f+456|0;t=f+458|0;u=0;while(1){p=d[k>>0]|0;l=k+1|0;q=d[l>>0]|0;if(((p|0)==(e[n>>1]|0)?(q|0)==(e[m>>1]|0):0)?(M=k+2|0,(d[M>>0]|0)==(e[o>>1]|0)):0){a[k>>0]=b[r>>1];a[l>>0]=b[s>>1];a[M>>0]=b[t>>1]}else{a[k>>0]=a[z+p>>0]|0;a[l>>0]=a[z+q>>0]|0;L=k+2|0;a[L>>0]=a[z+(d[L>>0]|0)>>0]|0}u=u+1|0;if((u|0)==(J|0))break;else k=k+3|0}}else{l=(J|0)==0;if(!D){if(l)break;o=f+534|0;r=f+536|0;s=f+538|0;t=f+454|0;u=f+456|0;v=f+458|0;w=0;while(1){p=k+1|0;l=k+2|0;q=k+3|0;n=k+4|0;m=k+5|0;M=d[n>>0]<<8|d[m>>0];if(((d[k>>0]<<8|d[p>>0]|0)==(e[o>>1]|0)?(d[l>>0]<<8|d[q>>0]|0)==(e[r>>1]|0):0)?(M|0)==(e[s>>1]|0):0){a[k>>0]=(e[t>>1]|0)>>>8;a[p>>0]=b[t>>1];a[l>>0]=(e[u>>1]|0)>>>8;a[q>>0]=b[u>>1];a[n>>0]=(e[v>>1]|0)>>>8;a[m>>0]=b[v>>1]}w=w+1|0;if((w|0)==(J|0))break b;else k=k+6|0}}if(l)break;w=f+534|0;x=f+536|0;y=f+538|0;z=f+454|0;A=f+456|0;B=f+458|0;C=0;while(1){p=d[k>>0]|0;l=k+1|0;q=d[l>>0]|0;n=k+2|0;m=k+3|0;o=k+4|0;r=d[o>>0]|0;v=k+5|0;s=d[v>>0]|0;M=r<<8|s;t=d[n>>0]|0;u=d[m>>0]|0;if(((p<<8|q|0)==(e[w>>1]|0)?(t<<8|u|0)==(e[x>>1]|0):0)?(M|0)==(e[y>>1]|0):0){a[k>>0]=(e[z>>1]|0)>>>8;a[l>>0]=b[z>>1];a[n>>0]=(e[A>>1]|0)>>>8;a[m>>0]=b[A>>1];a[o>>0]=(e[B>>1]|0)>>>8;p=b[B>>1]|0}else{p=b[(c[D+(q>>>E<<2)>>2]|0)+(p<<1)>>1]|0;a[k>>0]=(p&65535)>>>8;a[l>>0]=p;p=b[(c[D+(u>>>E<<2)>>2]|0)+(t<<1)>>1]|0;a[n>>0]=(p&65535)>>>8;a[m>>0]=p;p=b[(c[D+(s>>>E<<2)>>2]|0)+(r<<1)>>1]|0;a[o>>0]=(p&65535)>>>8}a[v>>0]=p;C=C+1|0;if((C|0)==(J|0))break;else k=k+6|0}}else if((p|0)==4){if((a[g+9>>0]|0)==8){p=(J|0)==0;if(!((y|0)!=0&(x|0)!=0&(z|0)!=0)){if(p)break;n=f+460|0;m=0;while(1){l=a[k+1>>0]|0;if(!(l<<24>>24))a[k>>0]=b[n>>1];else if(l<<24>>24!=-1){M=l&255;L=ea(d[k>>0]|0,M)|0;M=L+128+(ea(e[n>>1]|0,M^255)|0)|0;a[k>>0]=((M>>>8&255)+M|0)>>>8}m=m+1|0;if((m|0)==(J|0))break b;else k=k+2|0}}if(p)break;o=f+470|0;q=(q|0)==0;n=f+460|0;m=0;while(1){p=a[k+1>>0]|0;l=p&255;if(!(p<<24>>24))a[k>>0]=b[n>>1];else if(p<<24>>24==-1)a[k>>0]=a[z+(d[k>>0]|0)>>0]|0;else{p=ea(d[y+(d[k>>0]|0)>>0]|0,l)|0;p=p+128+(ea(e[o>>1]|0,l^255)|0)|0;p=((p>>>8&255)+p|0)>>>8;if(q)p=a[x+(p&255)>>0]|0;else p=p&255;a[k>>0]=p}m=m+1|0;if((m|0)==(J|0))break b;else k=k+2|0}}p=(J|0)==0;if(!((D|0)!=0&(A|0)!=0&(B|0)!=0)){if(p)break;n=f+460|0;m=0;while(1){l=d[k+2>>0]<<8|d[k+3>>0];if(!l){a[k>>0]=(e[n>>1]|0)>>>8;a[k+1>>0]=b[n>>1]}else if((l|0)!=65535){M=k+1|0;L=ea(d[k>>0]<<8|d[M>>0],l)|0;L=(ea(e[n>>1]|0,l^65535)|0)+32768+L|0;L=(L>>>16)+L|0;a[k>>0]=L>>>24;a[M>>0]=L>>>16}m=m+1|0;if((m|0)==(J|0))break b;else k=k+4|0}}if(p)break;m=f+470|0;o=f+460|0;r=0;while(1){p=d[k+2>>0]<<8|d[k+3>>0];if((p|0)==65535){M=k+1|0;L=b[(c[D+((d[M>>0]|0)>>>E<<2)>>2]|0)+(d[k>>0]<<1)>>1]|0;a[k>>0]=(L&65535)>>>8;a[M>>0]=L}else if(!p){a[k>>0]=(e[o>>1]|0)>>>8;a[k+1>>0]=b[o>>1]}else{n=k+1|0;l=ea(e[(c[B+((d[n>>0]|0)>>>E<<2)>>2]|0)+(d[k>>0]<<1)>>1]|0,p)|0;l=l+32768+(ea(e[m>>1]|0,p^65535)|0)|0;l=(l>>>16)+l|0;p=l>>>16;if(s){p=b[(c[A+((p&255)>>>E<<2)>>2]|0)+(l>>>24<<1)>>1]|0;q=p&255;p=(p&65535)>>>8&255}else{q=p&255;p=l>>>24&255}a[k>>0]=p;a[n>>0]=q}r=r+1|0;if((r|0)==(J|0))break;else k=k+4|0}}else if((p|0)==6)if((a[g+9>>0]|0)==8){l=(J|0)==0;if(!((y|0)!=0&(x|0)!=0&(z|0)!=0)){if(l)break;p=f+454|0;n=f+456|0;m=f+458|0;o=0;while(1){l=a[k+3>>0]|0;if(!(l<<24>>24)){a[k>>0]=b[p>>1];a[k+1>>0]=b[n>>1];a[k+2>>0]=b[m>>1]}else if(l<<24>>24!=-1){K=l&255;M=ea(d[k>>0]|0,K)|0;L=K^255;M=M+128+(ea(e[p>>1]|0,L)|0)|0;a[k>>0]=((M>>>8&255)+M|0)>>>8;M=k+1|0;I=ea(d[M>>0]|0,K)|0;I=I+128+(ea(e[n>>1]|0,L)|0)|0;a[M>>0]=((I>>>8&255)+I|0)>>>8;M=k+2|0;K=ea(d[M>>0]|0,K)|0;L=K+128+(ea(e[m>>1]|0,L)|0)|0;a[M>>0]=((L>>>8&255)+L|0)>>>8}o=o+1|0;if((o|0)==(J|0))break b;else k=k+4|0}}if(l)break;w=f+464|0;m=(q|0)==0;o=f+466|0;r=f+468|0;s=f+454|0;t=f+456|0;u=f+458|0;v=0;while(1){p=a[k+3>>0]|0;if(p<<24>>24==-1){a[k>>0]=a[z+(d[k>>0]|0)>>0]|0;M=k+1|0;a[M>>0]=a[z+(d[M>>0]|0)>>0]|0;M=k+2|0;a[M>>0]=a[z+(d[M>>0]|0)>>0]|0}else if(!(p<<24>>24)){a[k>>0]=b[s>>1];a[k+1>>0]=b[t>>1];a[k+2>>0]=b[u>>1]}else{q=p&255;p=ea(d[y+(d[k>>0]|0)>>0]|0,q)|0;n=q^255;p=p+128+(ea(e[w>>1]|0,n)|0)|0;p=((p>>>8&255)+p|0)>>>8;if(m)p=a[x+(p&255)>>0]|0;else p=p&255;a[k>>0]=p;l=k+1|0;p=ea(d[y+(d[l>>0]|0)>>0]|0,q)|0;p=p+128+(ea(e[o>>1]|0,n)|0)|0;p=((p>>>8&255)+p|0)>>>8;if(m)p=a[x+(p&255)>>0]|0;else p=p&255;a[l>>0]=p;l=k+2|0;p=ea(d[y+(d[l>>0]|0)>>0]|0,q)|0;p=p+128+(ea(e[r>>1]|0,n)|0)|0;p=((p>>>8&255)+p|0)>>>8;if(m)p=a[x+(p&255)>>0]|0;else p=p&255;a[l>>0]=p}v=v+1|0;if((v|0)==(J|0))break;else k=k+4|0}}else{p=(J|0)==0;if(!((D|0)!=0&(A|0)!=0&(B|0)!=0)){if(p)break;p=f+454|0;n=f+456|0;m=f+458|0;o=0;while(1){l=d[k+6>>0]<<8|d[k+7>>0];if(!l){a[k>>0]=(e[p>>1]|0)>>>8;a[k+1>>0]=b[p>>1];a[k+2>>0]=(e[n>>1]|0)>>>8;a[k+3>>0]=b[n>>1];a[k+4>>0]=(e[m>>1]|0)>>>8;a[k+5>>0]=b[m>>1]}else if((l|0)!=65535){E=k+1|0;F=k+2|0;H=k+3|0;G=d[F>>0]<<8|d[H>>0];K=k+4|0;M=k+5|0;I=d[K>>0]<<8|d[M>>0];D=ea(d[k>>0]<<8|d[E>>0],l)|0;L=l^65535;D=D+32768+(ea(e[p>>1]|0,L)|0)|0;D=(D>>>16)+D|0;a[k>>0]=D>>>24;a[E>>0]=D>>>16;G=ea(G,l)|0;G=G+32768+(ea(e[n>>1]|0,L)|0)|0;G=(G>>>16)+G|0;a[F>>0]=G>>>24;a[H>>0]=G>>>16;I=ea(I,l)|0;L=I+32768+(ea(e[m>>1]|0,L)|0)|0;L=(L>>>16)+L|0;a[K>>0]=L>>>24;a[M>>0]=L>>>16}o=o+1|0;if((o|0)==(J|0))break b;else k=k+8|0}}if(p)break;z=f+464|0;s=(q|0)==0;t=f+466|0;u=f+468|0;v=f+454|0;w=f+456|0;x=f+458|0;y=0;while(1){o=d[k+6>>0]<<8|d[k+7>>0];if(!o){a[k>>0]=(e[v>>1]|0)>>>8;a[k+1>>0]=b[v>>1];a[k+2>>0]=(e[w>>1]|0)>>>8;a[k+3>>0]=b[w>>1];a[k+4>>0]=(e[x>>1]|0)>>>8;a[k+5>>0]=b[x>>1]}else if((o|0)==65535){L=k+1|0;K=b[(c[D+((d[L>>0]|0)>>>E<<2)>>2]|0)+(d[k>>0]<<1)>>1]|0;a[k>>0]=(K&65535)>>>8;a[L>>0]=K;L=k+2|0;K=k+3|0;M=b[(c[D+((d[K>>0]|0)>>>E<<2)>>2]|0)+(d[L>>0]<<1)>>1]|0;a[L>>0]=(M&65535)>>>8;a[K>>0]=M;K=k+4|0;M=k+5|0;L=b[(c[D+((d[M>>0]|0)>>>E<<2)>>2]|0)+(d[K>>0]<<1)>>1]|0;a[K>>0]=(L&65535)>>>8;a[M>>0]=L}else{n=k+1|0;l=ea(e[(c[B+((d[n>>0]|0)>>>E<<2)>>2]|0)+(d[k>>0]<<1)>>1]|0,o)|0;r=o^65535;l=l+32768+(ea(e[z>>1]|0,r)|0)|0;l=(l>>>16)+l|0;p=l>>>16;l=l>>>24;if(s){p=b[(c[A+((p&255)>>>E<<2)>>2]|0)+(l<<1)>>1]|0;q=p&255;p=(p&65535)>>>8&255}else{q=p&255;p=l&255}a[k>>0]=p;a[n>>0]=q;n=k+2|0;m=k+3|0;l=ea(e[(c[B+((d[m>>0]|0)>>>E<<2)>>2]|0)+(d[n>>0]<<1)>>1]|0,o)|0;l=l+32768+(ea(e[t>>1]|0,r)|0)|0;l=(l>>>16)+l|0;p=l>>>16;l=l>>>24;if(s){p=b[(c[A+((p&255)>>>E<<2)>>2]|0)+(l<<1)>>1]|0;q=p&255;p=(p&65535)>>>8&255}else{q=p&255;p=l&255}a[n>>0]=p;a[m>>0]=q;n=k+4|0;m=k+5|0;l=ea(e[(c[B+((d[m>>0]|0)>>>E<<2)>>2]|0)+(d[n>>0]<<1)>>1]|0,o)|0;l=l+32768+(ea(e[u>>1]|0,r)|0)|0;l=(l>>>16)+l|0;p=l>>>16;l=l>>>24;if(s){p=b[(c[A+((p&255)>>>E<<2)>>2]|0)+(l<<1)>>1]|0;q=p&255;p=(p&65535)>>>8&255}else{q=p&255;p=l&255}a[n>>0]=p;a[m>>0]=q}y=y+1|0;if((y|0)==(J|0))break;else k=k+8|0}}else break}while(0);l=c[_>>2]|0;do if((l&6299648|0)==8192){if(l&128){if(b[f+428>>1]|0)break;l=a[f+435>>0]|0;if(l&4)break}else l=a[f+435>>0]|0;if(l<<24>>24!=3){l=(c[$>>2]|0)+1|0;m=c[f+484>>2]|0;r=c[f+492>>2]|0;o=c[f+496>>2]|0;s=c[g>>2]|0;q=g+9|0;k=a[q>>0]|0;if(!((k&255)<9&(r|0)!=0)?!(k<<24>>24==16&(o|0)!=0):0)break;p=d[g+8>>0]|0;if((p|0)==4){n=(s|0)==0;if(k<<24>>24==8){if(n)break;else k=0;while(1){a[l>>0]=a[r+(d[l>>0]|0)>>0]|0;k=k+1|0;if((k|0)==(s|0))break;else l=l+2|0}}else{if(n)break;else k=0;while(1){M=l+1|0;L=b[(c[o+((d[M>>0]|0)>>>m<<2)>>2]|0)+(d[l>>0]<<1)>>1]|0;a[l>>0]=(L&65535)>>>8;a[M>>0]=L;k=k+1|0;if((k|0)==(s|0))break;else l=l+4|0}}}else if((p|0)==6){n=(s|0)==0;if(k<<24>>24==8){if(n)break;else k=0;while(1){a[l>>0]=a[r+(d[l>>0]|0)>>0]|0;M=l+1|0;a[M>>0]=a[r+(d[M>>0]|0)>>0]|0;M=l+2|0;a[M>>0]=a[r+(d[M>>0]|0)>>0]|0;k=k+1|0;if((k|0)==(s|0))break;else l=l+4|0}}else{if(n)break;else k=0;while(1){L=l+1|0;K=b[(c[o+((d[L>>0]|0)>>>m<<2)>>2]|0)+(d[l>>0]<<1)>>1]|0;a[l>>0]=(K&65535)>>>8;a[L>>0]=K;L=l+2|0;K=l+3|0;M=b[(c[o+((d[K>>0]|0)>>>m<<2)>>2]|0)+(d[L>>0]<<1)>>1]|0;a[L>>0]=(M&65535)>>>8;a[K>>0]=M;K=l+4|0;M=l+5|0;L=b[(c[o+((d[M>>0]|0)>>>m<<2)>>2]|0)+(d[K>>0]<<1)>>1]|0;a[K>>0]=(L&65535)>>>8;a[M>>0]=L;k=k+1|0;if((k|0)==(s|0))break;else l=l+8|0}}}else if(!p){if(k<<24>>24==2){if(!s)break;else{p=0;k=l}while(1){I=d[k>>0]|0;K=I&192;H=I&48;L=I&12;M=I&3;a[k>>0]=(d[r+(H<<2|H|H>>>2|H>>>4)>>0]|0)>>>2&48|d[r+(I>>>6|K|K>>>2|K>>>4)>>0]&192|(d[r+(L<<2|L|L<<4|L>>>2)>>0]|0)>>>4&12|(d[r+(M<<4|M|M<<6|M<<2)>>0]|0)>>>6;p=p+4|0;if(p>>>0>=s>>>0)break;else k=k+1|0}k=a[q>>0]|0}if(k<<24>>24==16){if(!s)break;else k=0;while(1){M=l+1|0;L=b[(c[o+((d[M>>0]|0)>>>m<<2)>>2]|0)+(d[l>>0]<<1)>>1]|0;a[l>>0]=(L&65535)>>>8;a[M>>0]=L;k=k+1|0;if((k|0)==(s|0))break;else l=l+2|0}}else if(k<<24>>24==8){if(!s)break;else k=0;while(1){a[l>>0]=a[r+(d[l>>0]|0)>>0]|0;k=k+1|0;if((k|0)==(s|0))break;else l=l+1|0}}else if(k<<24>>24==4){if(!s)break;else k=0;while(1){M=d[l>>0]|0;L=M&15;a[l>>0]=(d[r+(L<<4|L)>>0]|0)>>>4|d[r+(M&240|M>>>4)>>0]&240;k=k+2|0;if(k>>>0>=s>>>0)break;else l=l+1|0}}else break}else if((p|0)==2){n=(s|0)==0;if(k<<24>>24==8){if(n)break;else k=0;while(1){a[l>>0]=a[r+(d[l>>0]|0)>>0]|0;M=l+1|0;a[M>>0]=a[r+(d[M>>0]|0)>>0]|0;M=l+2|0;a[M>>0]=a[r+(d[M>>0]|0)>>0]|0;k=k+1|0;if((k|0)==(s|0))break;else l=l+3|0}}else{if(n)break;else k=0;while(1){L=l+1|0;K=b[(c[o+((d[L>>0]|0)>>>m<<2)>>2]|0)+(d[l>>0]<<1)>>1]|0;a[l>>0]=(K&65535)>>>8;a[L>>0]=K;L=l+2|0;K=l+3|0;M=b[(c[o+((d[K>>0]|0)>>>m<<2)>>2]|0)+(d[L>>0]<<1)>>1]|0;a[L>>0]=(M&65535)>>>8;a[K>>0]=M;K=l+4|0;M=l+5|0;L=b[(c[o+((d[M>>0]|0)>>>m<<2)>>2]|0)+(d[K>>0]<<1)>>1]|0;a[K>>0]=(L&65535)>>>8;a[M>>0]=L;k=k+1|0;if((k|0)==(s|0))break;else l=l+6|0}}}else break}}while(0);l=c[_>>2]|0;if((l&262272|0)==262272?(M=a[g+8>>0]|0,M<<24>>24==4|M<<24>>24==6):0){yE(g,(c[$>>2]|0)+1|0,0);l=c[_>>2]|0}c:do if((l&8388608|0)!=0?(N=a[g+8>>0]|0,(N&4)!=0):0){q=c[$>>2]|0;o=c[g>>2]|0;k=N&255;do if(k&4){l=a[g+9>>0]|0;if(l<<24>>24==8){m=c[f+500>>2]|0;if(!m)break;l=k&2;n=l+2|0;if(!o)break c;k=q+((l|1)+1)|0;l=o;while(1){a[k>>0]=a[m+(d[k>>0]|0)>>0]|0;l=l+-1|0;if(!l)break c;else k=k+n|0}}else if(l<<24>>24==16){p=c[f+508>>2]|0;m=c[f+484>>2]|0;if(!p)break;l=k<<1&4;n=l+4|0;if(!o)break c;k=q+(l|3)|0;l=o;while(1){N=k+1|0;M=b[(c[p+((d[N>>0]|0)>>>m<<2)>>2]|0)+(d[k>>0]<<1)>>1]|0;a[k>>0]=(M&65535)>>>8;a[N>>0]=M;l=l+-1|0;if(!l)break c;else k=k+n|0}}else break}while(0);vC(f,270344)}while(0);l=c[_>>2]|0;if((l&67108864|0)!=0?(O=c[$>>2]|0,P=O+1|0,Q=g+9|0,(a[Q>>0]|0)==16):0){m=g+4|0;N=c[m>>2]|0;n=O+(N+1)|0;if((N|0)>0){k=P;l=P;while(1){O=d[l>>0]|0;a[k>>0]=(((((d[l+1>>0]|0)-O|0)*65535|0)+8388480|0)>>>24)+O;l=l+2|0;if(l>>>0>=n>>>0)break;else k=k+1|0}l=c[_>>2]|0}a[Q>>0]=8;O=d[g+10>>0]|0;a[g+11>>0]=O<<3;c[m>>2]=ea(O,c[g>>2]|0)|0}if((l&1024|0)!=0?(R=c[$>>2]|0,S=R+1|0,T=g+9|0,(a[T>>0]|0)==16):0){n=g+4|0;O=c[n>>2]|0;m=R+(O+1)|0;if((O|0)>0){k=S;l=S;while(1){a[k>>0]=a[l>>0]|0;l=l+2|0;if(l>>>0>=m>>>0)break;else k=k+1|0}l=c[_>>2]|0}a[T>>0]=8;S=d[g+10>>0]|0;a[g+11>>0]=S<<3;c[n>>2]=ea(S,c[g>>2]|0)|0}do if(l&64){l=(c[$>>2]|0)+1|0;o=c[f+612>>2]|0;n=c[f+616>>2]|0;r=c[g>>2]|0;p=g+9|0;d:do if((a[p>>0]|0)==8){q=g+8|0;k=a[q>>0]|0;m=(o|0)!=0;if(k<<24>>24==2&m){if(!r)k=8;else{k=l;m=0;while(1){a[k>>0]=a[o+((d[l+1>>0]|0)>>>3<<5|(d[l>>0]|0)>>>3<<10|(d[l+2>>0]|0)>>>3)>>0]|0;m=m+1|0;if((m|0)==(r|0))break;else{k=k+1|0;l=l+3|0}}k=a[p>>0]|0}a[q>>0]=3;a[g+10>>0]=1;a[g+11>>0]=k;l=k&255;if((k&255)>7)l=ea(l>>>3,r)|0;else l=((ea(l,r)|0)+7|0)>>>3;c[g+4>>2]=l;break}if(!(k<<24>>24==6&m)){if((n|0)==0|k<<24>>24!=3|(r|0)==0)break;else k=0;while(1){a[l>>0]=a[n+(d[l>>0]|0)>>0]|0;k=k+1|0;if((k|0)==(r|0))break d;else l=l+1|0}}if(!r)k=8;else{k=l;m=0;while(1){a[k>>0]=a[o+((d[l+1>>0]|0)>>>3<<5|(d[l>>0]|0)>>>3<<10|(d[l+2>>0]|0)>>>3)>>0]|0;m=m+1|0;if((m|0)==(r|0))break;else{k=k+1|0;l=l+4|0}}k=a[p>>0]|0}a[q>>0]=3;a[g+10>>0]=1;a[g+11>>0]=k;l=k&255;if((k&255)>7)l=ea(l>>>3,r)|0;else l=((ea(l,r)|0)+7|0)>>>3;c[g+4>>2]=l}while(0);if(!(c[g+4>>2]|0))sC(f,270304);else{j=c[_>>2]|0;break}}else j=l;while(0);if(((j&512|0)!=0?(U=c[$>>2]|0,V=g+9|0,(a[V>>0]|0)==8):0)?(a[g+8>>0]|0)!=3:0){m=g+4|0;l=c[m>>2]|0;k=l<<1;if((k|0)>(l|0)){j=U+(k|1)|0;l=U+(l+1)|0;do{l=l+-1|0;S=a[l>>0]|0;a[j+-1>>0]=S;j=j+-2|0;a[j>>0]=S}while(j>>>0>l>>>0);j=c[_>>2]|0;l=c[m>>2]|0}c[m>>2]=l<<1;a[V>>0]=16;a[g+11>>0]=d[g+10>>0]<<4}if((j&16384|0)!=0?(c[f+208>>2]&2048|0)!=0:0){WQ(g,(c[$>>2]|0)+1|0);j=c[_>>2]|0}if(j&32){vE(g,(c[$>>2]|0)+1|0);j=c[_>>2]|0}do if(j&524288){l=c[$>>2]|0;n=c[g>>2]|0;j=a[g+8>>0]|0;if(j<<24>>24==4){j=l+((c[g+4>>2]|0)+1)|0;l=(n|0)==0;if((a[g+9>>0]|0)==8){if(l)break;else{l=j;j=0}while(1){S=l+-1|0;a[S>>0]=d[S>>0]^255;j=j+1|0;if((j|0)==(n|0))break;else l=l+-2|0}}else{if(l)break;else{k=0;l=j}while(1){S=l+-1|0;a[S>>0]=d[S>>0]^255;S=l+-2|0;a[S>>0]=d[S>>0]^255;k=k+1|0;if((k|0)==(n|0))break;else l=l+-4|0}}}else if(j<<24>>24==6){k=l+((c[g+4>>2]|0)+1)|0;l=(n|0)==0;if((a[g+9>>0]|0)==8){if(l)break;else{j=0;l=k}while(1){S=l+-1|0;a[S>>0]=d[S>>0]^255;j=j+1|0;if((j|0)==(n|0))break;else l=l+-4|0}}else{if(l)break;else{j=0;l=k}while(1){S=l+-1|0;a[S>>0]=d[S>>0]^255;S=l+-2|0;a[S>>0]=d[S>>0]^255;j=j+1|0;if((j|0)==(n|0))break;else l=l+-8|0}}}else break}while(0);do if((c[_>>2]&8|0)!=0?(X=c[$>>2]|0,h=X+1|0,S=a[g+8>>0]|0,W=S&255,S<<24>>24!=3):0){m=d[g+9>>0]|0;if(!(W&2)){c[Y>>2]=m-(d[f+524>>0]|0);l=1}else{c[Y>>2]=m-(d[f+521>>0]|0);c[Y+4>>2]=m-(d[f+522>>0]|0);c[Y+8>>2]=m-(d[f+523>>0]|0);l=3}if(!(W&4))n=l;else{c[Y+(l<<2)>>2]=m-(d[f+525>>0]|0);n=l+1|0}k=0;l=0;do{j=Y+(k<<2)|0;S=c[j>>2]|0;if((S|0)>0&(S|0)<(m|0))l=1;else c[j>>2]=0;k=k+1|0}while((k|0)<(n|0));if(!l)break;if((m|0)==4){S=c[g+4>>2]|0;l=X+(S+1)|0;j=c[Y>>2]|0;k=15>>>j;k=k<<4|k;if((S|0)<=0)break;do{a[h>>0]=(d[h>>0]|0)>>>j&k;h=h+1|0}while(h>>>0>>0)}else if((m|0)==2){Y=c[g+4>>2]|0;j=X+(Y+1)|0;if((Y|0)<=0)break;do{a[h>>0]=(d[h>>0]|0)>>>1&85;h=h+1|0}while(h>>>0>>0)}else if((m|0)==16){S=c[g+4>>2]|0;l=X+(S+1)|0;if((S|0)>0)j=0;else break;while(1){S=h+1|0;R=(d[h>>0]<<8|d[S>>0])>>>(c[Y+(j<<2)>>2]|0);j=j+1|0;a[h>>0]=R>>>8;h=h+2|0;a[S>>0]=R;if(h>>>0>=l>>>0)break;else j=(j|0)>=(n|0)?0:j}}else if((m|0)==8){S=c[g+4>>2]|0;k=X+(S+1)|0;if((S|0)>0)j=0;else break;while(1){l=j+1|0;a[h>>0]=(d[h>>0]|0)>>>(c[Y+(j<<2)>>2]|0);h=h+1|0;if(h>>>0>=k>>>0)break;else j=(l|0)>=(n|0)?0:l}}else break}while(0);do if(c[_>>2]&4){l=c[$>>2]|0;o=g+9|0;h=a[o>>0]|0;if((h&255)>=8)break;h=h&255;n=c[g>>2]|0;do if((h|0)==2){if(!n)break;j=l+n|0;k=0;m=(n<<1)+6&6^6;l=l+(((n+-1|0)>>>2)+1)|0;while(1){a[j>>0]=(d[l>>0]|0)>>>m&3;h=(m|0)==6;k=k+1|0;if((k|0)==(n|0))break;else{j=j+-1|0;m=h?0:m+2|0;l=h?l+-1|0:l}}}else if((h|0)==4){if(!n)break;j=l+n|0;k=0;m=n<<2&4;l=l+(((n+-1|0)>>>1)+1)|0;while(1){a[j>>0]=(d[l>>0]|0)>>>m&15;h=(m|0)==4;k=k+1|0;if((k|0)==(n|0))break;else{j=j+-1|0;m=h?0:4;l=h?l+-1|0:l}}}else if((h|0)==1){if(!n)break;j=l+n|0;k=0;m=n+7&7^7;l=l+(((n+-1|0)>>>3)+1)|0;while(1){a[j>>0]=(d[l>>0]|0)>>>m&1;h=(m|0)==7;k=k+1|0;if((k|0)==(n|0))break;else{j=j+-1|0;m=h?0:m+1|0;l=h?l+-1|0:l}}}while(0);a[o>>0]=8;Y=d[g+10>>0]|0;a[g+11>>0]=Y<<3;c[g+4>>2]=ea(Y,n)|0}while(0);r=g+8|0;do if((a[r>>0]|0)==3){if((c[f+424>>2]|0)<=-1)break;AE(f,g)}while(0);h=c[_>>2]|0;if(h&1){zE(g,(c[$>>2]|0)+1|0);h=c[_>>2]|0}if(h&65536){xE(g,(c[$>>2]|0)+1|0);h=c[_>>2]|0}do if(h&32768){p=c[$>>2]|0;o=b[f+444>>1]|0;n=c[Z>>2]|0;m=c[g>>2]|0;q=(o&65535)>>>8&255;o=o&255;h=a[r>>0]|0;if(!(h<<24>>24)){h=a[g+9>>0]|0;if(h<<24>>24==16){h=p+(m<<1|1)|0;k=m<<2;l=p+(k|1)|0;if(!(n&128)){if(m){j=0;do{a[l+-1>>0]=a[h+-1>>0]|0;h=h+-2|0;a[l+-2>>0]=a[h>>0]|0;a[l+-3>>0]=q;l=l+-4|0;a[l>>0]=o;j=j+1|0}while((j|0)!=(m|0))}a[g+10>>0]=2;a[g+11>>0]=32;c[g+4>>2]=k;break}else{a[p+k>>0]=q;a[p+(k+-1)>>0]=o;if(m>>>0>1){j=1;do{a[l+-3>>0]=a[h+-1>>0]|0;h=h+-2|0;Z=l;l=l+-4|0;a[l>>0]=a[h>>0]|0;j=j+1|0;a[Z+-5>>0]=q;a[Z+-6>>0]=o}while((j|0)!=(m|0))}a[g+10>>0]=2;a[g+11>>0]=32;c[g+4>>2]=k;break}}else if(h<<24>>24==8){h=p+(m+1)|0;k=m<<1;l=p+(k|1)|0;if(!(n&128)){if(m){j=0;do{h=h+-1|0;a[l+-1>>0]=a[h>>0]|0;l=l+-2|0;a[l>>0]=o;j=j+1|0}while((j|0)!=(m|0))}a[g+10>>0]=2;a[g+11>>0]=16;c[g+4>>2]=k;break}else{a[p+k>>0]=o;if(m>>>0>1){j=1;do{h=h+-1|0;Z=l;l=l+-2|0;a[l>>0]=a[h>>0]|0;j=j+1|0;a[Z+-3>>0]=o}while((j|0)!=(m|0))}a[g+10>>0]=2;a[g+11>>0]=16;c[g+4>>2]=k;break}}else break}else if(h<<24>>24==2){h=a[g+9>>0]|0;if(h<<24>>24==8){j=m*3|0;h=p+(j+1)|0;l=p+(m+1+j)|0;if(!(n&128)){if(m){j=0;do{a[l+-1>>0]=a[h+-1>>0]|0;a[l+-2>>0]=a[h+-2>>0]|0;h=h+-3|0;a[l+-3>>0]=a[h>>0]|0;l=l+-4|0;a[l>>0]=o;j=j+1|0}while((j|0)!=(m|0))}a[g+10>>0]=4;a[g+11>>0]=32;c[g+4>>2]=m<<2;break}else{a[p+(j+m)>>0]=o;if(m>>>0>1){j=1;do{a[l+-2>>0]=a[h+-1>>0]|0;a[l+-3>>0]=a[h+-2>>0]|0;h=h+-3|0;Z=l;l=l+-4|0;a[l>>0]=a[h>>0]|0;j=j+1|0;a[Z+-5>>0]=o}while((j|0)!=(m|0))}a[g+10>>0]=4;a[g+11>>0]=32;c[g+4>>2]=m<<2;break}}else if(h<<24>>24==16){j=m*6|0;h=p+(j|1)|0;j=j+(m<<1)|0;l=p+(j|1)|0;if(!(n&128)){if(m){j=0;do{a[l+-1>>0]=a[h+-1>>0]|0;a[l+-2>>0]=a[h+-2>>0]|0;a[l+-3>>0]=a[h+-3>>0]|0;a[l+-4>>0]=a[h+-4>>0]|0;a[l+-5>>0]=a[h+-5>>0]|0;h=h+-6|0;a[l+-6>>0]=a[h>>0]|0;a[l+-7>>0]=q;l=l+-8|0;a[l>>0]=o;j=j+1|0}while((j|0)!=(m|0))}a[g+10>>0]=4;a[g+11>>0]=64;c[g+4>>2]=m<<3;break}else{a[p+j>>0]=q;a[p+(j+-1)>>0]=o;if(m>>>0>1){j=1;do{a[l+-3>>0]=a[h+-1>>0]|0;a[l+-4>>0]=a[h+-2>>0]|0;a[l+-5>>0]=a[h+-3>>0]|0;a[l+-6>>0]=a[h+-4>>0]|0;a[l+-7>>0]=a[h+-5>>0]|0;h=h+-6|0;Z=l;l=l+-8|0;a[l>>0]=a[h>>0]|0;j=j+1|0;a[Z+-9>>0]=q;a[Z+-10>>0]=o}while((j|0)!=(m|0))}a[g+10>>0]=4;a[g+11>>0]=64;c[g+4>>2]=m<<3;break}}else break}else break}while(0);do if(c[_>>2]&131072){j=c[$>>2]|0;l=c[g>>2]|0;h=a[r>>0]|0;if(h<<24>>24==4){h=j+((c[g+4>>2]|0)+1)|0;j=(l|0)==0;if((a[g+9>>0]|0)==8){if(j)break;else j=0;do{Y=h+-1|0;Z=a[Y>>0]|0;h=h+-2|0;a[Y>>0]=a[h>>0]|0;a[h>>0]=Z;j=j+1|0}while((j|0)!=(l|0))}else{if(j)break;else j=0;do{O=h+-1|0;S=a[O>>0]|0;R=h+-2|0;Z=a[R>>0]|0;Y=h+-3|0;a[O>>0]=a[Y>>0]|0;h=h+-4|0;a[R>>0]=a[h>>0]|0;a[Y>>0]=S;a[h>>0]=Z;j=j+1|0}while((j|0)!=(l|0))}}else if(h<<24>>24==6){k=j+((c[g+4>>2]|0)+1)|0;h=(l|0)==0;if((a[g+9>>0]|0)==8){if(h)break;else{j=0;h=k}do{Y=h+-1|0;Z=a[Y>>0]|0;S=h+-2|0;a[Y>>0]=a[S>>0]|0;Y=h+-3|0;a[S>>0]=a[Y>>0]|0;h=h+-4|0;a[Y>>0]=a[h>>0]|0;a[h>>0]=Z;j=j+1|0}while((j|0)!=(l|0))}else{if(h)break;else{j=0;h=k}do{Y=h+-1|0;S=a[Y>>0]|0;O=h+-2|0;Z=a[O>>0]|0;R=h+-3|0;a[Y>>0]=a[R>>0]|0;Y=h+-4|0;a[O>>0]=a[Y>>0]|0;O=h+-5|0;a[R>>0]=a[O>>0]|0;R=h+-6|0;a[Y>>0]=a[R>>0]|0;Y=h+-7|0;a[O>>0]=a[Y>>0]|0;h=h+-8|0;a[R>>0]=a[h>>0]|0;a[Y>>0]=S;a[h>>0]=Z;j=j+1|0}while((j|0)!=(l|0))}}else break}while(0);h=c[_>>2]|0;if(h&16){wE(g,(c[$>>2]|0)+1|0);h=c[_>>2]|0}if(!(h&1048576)){i=aa;return}h=c[f+192>>2]|0;if(h)$d[h&255](f,g,(c[$>>2]|0)+1|0);h=a[f+204>>0]|0;if(h<<24>>24)a[g+9>>0]=h;h=a[f+205>>0]|0;j=g+10|0;if(!(h<<24>>24))h=a[j>>0]|0;else a[j>>0]=h;h=ea(h&255,d[g+9>>0]|0)|0;a[g+11>>0]=h;h=h&255;j=c[g>>2]|0;if(h>>>0>7)h=ea(h>>>3,j)|0;else h=((ea(h,j)|0)+7|0)>>>3;c[g+4>>2]=h;i=aa;return}function wD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;e=b+441|0;f=a[e>>0]|0;g=f&255;if((f&255)>7){i=j;return}h=8-g|0;c[b+800>>2]=17;mD(b,d+g+32|0,h);a[e>>0]=8;e=d+32|0;if(!(JB(e,g,h)|0)){if((f&255)>=3){i=j;return}b=b+208|0;c[b>>2]=c[b>>2]|4096;i=j;return}if((f&255)>=4)sC(b,270520);if(!(JB(e,g,h+-4|0)|0))sC(b,270520);else sC(b,270504)}function xD(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;b=h;f=a+800|0;c[f>>2]=33;mD(a,b,8);g=(d[b+1>>0]|0)<<16|(d[b>>0]|0)<<24|(d[b+2>>0]|0)<<8|(d[b+3>>0]|0);if((g|0)<0)sC(a,270464);j=b+4|0;e=a+376|0;c[e>>2]=(d[b+5>>0]|0)<<16|(d[j>>0]|0)<<24|(d[b+6>>0]|0)<<8|(d[b+7>>0]|0);MB(a);NB(a,j,4);b=c[e>>2]|0;e=1;while(1){j=b&255;if((j+-65|0)>>>0>57|(j+-91|0)>>>0<6){b=5;break}e=e+1|0;if((e|0)>=5){b=7;break}else b=b>>>8}if((b|0)==5)BC(a,271592);else if((b|0)==7){c[f>>2]=65;i=h;return g|0}return 0}function yD(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+1040|0;g=h+1024|0;f=h;if(b)if(!a)while(1){e=b>>>0<1024?b:1024;if((b|0)==(e|0))break;else b=b-e|0}else while(1){e=b>>>0<1024?b:1024;mD(a,f,e);NB(a,f,e);if((b|0)==(e|0))break;else b=b-e|0}f=a+376|0;e=a+212|0;b=c[e>>2]|0;if(!(c[f>>2]&536870912)){c[a+800>>2]=129;mD(a,g,4);if(b&2048){a=0;i=h;return a|0}}else{c[a+800>>2]=129;mD(a,g,4);if((b&768|0)==768){a=0;i=h;return a|0}}if(((d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0)|0)==(c[a+412>>2]|0)){a=0;i=h;return a|0}e=c[e>>2]|0;if(!(c[f>>2]&536870912)){if(!(e&1024))BC(a,270560)}else if(e&512)BC(a,270560);AC(a,270560);a=1;i=h;return a|0}function zD(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=i;i=i+16|0;o=p;g=b+208|0;h=c[g>>2]|0;if(h&1)BC(b,270576);if((f|0)!=13)BC(b,270592);c[g>>2]=h|1;if(b){mD(b,o,13);NB(b,o,13)}yD(b,0)|0;f=(d[o+1>>0]|0)<<16|(d[o>>0]|0)<<24|(d[o+2>>0]|0)<<8|(d[o+3>>0]|0);if((f|0)<0)sC(b,270464);j=(d[o+5>>0]|0)<<16|(d[o+4>>0]|0)<<24|(d[o+6>>0]|0)<<8|(d[o+7>>0]|0);if((j|0)<0)sC(b,270464);s=a[o+8>>0]|0;k=s&255;r=a[o+9>>0]|0;l=r&255;g=a[o+10>>0]|0;m=g&255;q=a[o+11>>0]|0;n=q&255;o=a[o+12>>0]|0;h=o&255;c[b+348>>2]=f;c[b+352>>2]=j;a[b+436>>0]=s;a[b+432>>0]=o;a[b+435>>0]=r;a[b+712>>0]=q;a[b+744>>0]=g;if((l|0)==6){a[b+439>>0]=4;g=4}else if((l|0)==4){a[b+439>>0]=2;g=2}else if((l|0)==2){a[b+439>>0]=3;g=3}else{a[b+439>>0]=1;g=1}g=ea(g,k)|0;a[b+438>>0]=g;g=g&255;if(g>>>0>7){r=ea(g>>>3,f)|0;s=b+364|0;c[s>>2]=r;bE(b,e,f,j,k,l,h,m,n);i=p;return}else{r=((ea(g,f)|0)+7|0)>>>3;s=b+364|0;c[s>>2]=r;bE(b,e,f,j,k,l,h,m,n);i=p;return}}function AD(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+784|0;m=o+8|0;l=o;g=d+208|0;h=c[g>>2]|0;if(!(h&1))BC(d,270600);if(h&2)BC(d,270616);if(h&4){yD(d,f)|0;EC(d,270576);i=o;return}c[g>>2]=h|2;g=d+435|0;if(!(a[g>>0]&2)){yD(d,f)|0;EC(d,270632);i=o;return}if(!(f>>>0<769&((f>>>0)%3|0|0)==0)){yD(d,f)|0;if((a[g>>0]|0)==3)BC(d,270592);EC(d,270592);i=o;return}k=(f|0)/3|0;if((f|0)>2){f=l+1|0;j=l+2|0;if(!d){g=0;h=m;while(1){a[h>>0]=a[l>>0]|0;a[h+1>>0]=a[f>>0]|0;a[h+2>>0]=a[j>>0]|0;g=g+1|0;if((g|0)>=(k|0))break;else h=h+3|0}}else{g=0;h=m;while(1){mD(d,l,3);NB(d,l,3);a[h>>0]=a[l>>0]|0;a[h+1>>0]=a[f>>0]|0;a[h+2>>0]=a[j>>0]|0;g=g+1|0;if((g|0)>=(k|0))break;else h=h+3|0}}}yD(d,0)|0;gE(d,e,m,k);h=d+428|0;do if(!(b[h>>1]|0)){if(!e){i=o;return}g=e+8|0;f=c[g>>2]|0;if(!(f&16))g=f;else{b[h>>1]=0;n=24}}else{b[h>>1]=0;if(e){g=e+8|0;n=24;break}EC(d,270664);i=o;return}while(0);if((n|0)==24){b[e+22>>1]=0;EC(d,270664);g=c[g>>2]|0}if(g&64)EC(d,270688);if(!(c[e+8>>2]&32)){i=o;return}EC(d,270712);i=o;return}function BD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;b=a+208|0;e=c[b>>2]|0;if((e&5|0)!=5)BC(a,270576);c[b>>2]=e|24;yD(a,d)|0;if(!d){i=f;return}EC(a,270592);i=f;return}function CD(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=c[a+208>>2]|0;if(!(f&1))BC(a,270600);if(f&6){yD(a,e)|0;EC(a,270576);i=h;return}if((e|0)!=4){yD(a,e)|0;EC(a,270592);i=h;return}if(a){mD(a,g,4);NB(a,g,4)}if(yD(a,0)|0){i=h;return}e=(d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0);YB(a,a+824|0,(e|0)>-1?e:-1);_B(a,b);i=h;return}function DD(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;m=o;g=c[b+208>>2]|0;if(!(g&1))BC(b,270600);if(g&6){yD(b,f)|0;EC(b,270576);i=o;return}if((e|0)!=0?(c[e+8>>2]&2|0)!=0:0){yD(b,f)|0;EC(b,270616);i=o;return}n=b+435|0;if((a[n>>0]|0)==3){h=8;g=3}else{h=a[b+436>>0]|0;g=d[b+439>>0]|0}if((g|0)!=(f|0)|f>>>0>4){EC(b,270592);yD(b,f)|0;i=o;return}j=m+3|0;k=m+2|0;l=m+1|0;Cga(m|0,h|0,4)|0;if(b){mD(b,m,f);NB(b,m,f)}if(yD(b,0)|0){i=o;return}a:do if(f){g=0;while(1){if(((a[m+g>>0]|0)+-1<<24>>24&255)>=(h&255))break;g=g+1|0;if(g>>>0>=f>>>0)break a}EC(b,270592);i=o;return}while(0);g=a[m>>0]|0;h=b+516|0;if(!(a[n>>0]&2)){Cga(h|0,g|0,4)|0;a[b+520>>0]=a[l>>0]|0}else{a[h>>0]=g;a[b+517>>0]=a[l>>0]|0;a[b+518>>0]=a[k>>0]|0;a[b+520>>0]=a[j>>0]|0}hE(b,e,h);i=o;return}function ED(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;l=i;i=i+64|0;j=l+32|0;k=l;h=c[a+208>>2]|0;if(!(h&1))BC(a,270600);if(h&6){yD(a,g)|0;EC(a,270576);i=l;return}if((g|0)!=32){yD(a,g)|0;EC(a,270592);i=l;return}if(a){mD(a,j,32);NB(a,j,32)}if(yD(a,0)|0){i=l;return}o=(d[j+1>>0]|0)<<16|(d[j>>0]|0)<<24|(d[j+2>>0]|0)<<8|(d[j+3>>0]|0);q=k+24|0;c[q>>2]=(o|0)>-1?o:-1;o=(d[j+5>>0]|0)<<16|(d[j+4>>0]|0)<<24|(d[j+6>>0]|0)<<8|(d[j+7>>0]|0);p=k+28|0;c[p>>2]=(o|0)>-1?o:-1;o=(d[j+9>>0]|0)<<16|(d[j+8>>0]|0)<<24|(d[j+10>>0]|0)<<8|(d[j+11>>0]|0);c[k>>2]=(o|0)>-1?o:-1;o=(d[j+13>>0]|0)<<16|(d[j+12>>0]|0)<<24|(d[j+14>>0]|0)<<8|(d[j+15>>0]|0);o=(o|0)>-1?o:-1;c[k+4>>2]=o;n=(d[j+17>>0]|0)<<16|(d[j+16>>0]|0)<<24|(d[j+18>>0]|0)<<8|(d[j+19>>0]|0);n=(n|0)>-1?n:-1;c[k+8>>2]=n;m=(d[j+21>>0]|0)<<16|(d[j+20>>0]|0)<<24|(d[j+22>>0]|0)<<8|(d[j+23>>0]|0);m=(m|0)>-1?m:-1;c[k+12>>2]=m;h=(d[j+25>>0]|0)<<16|(d[j+24>>0]|0)<<24|(d[j+26>>0]|0)<<8|(d[j+27>>0]|0);h=(h|0)>-1?h:-1;c[k+16>>2]=h;g=(d[j+29>>0]|0)<<16|(d[j+28>>0]|0)<<24|(d[j+30>>0]|0)<<8|(d[j+31>>0]|0);g=(g|0)>-1?g:-1;c[k+20>>2]=g;if((c[q>>2]|0)==-1|(c[p>>2]|0)==-1|(c[k>>2]|0)==-1|(o|0)==-1|(n|0)==-1|(m|0)==-1|(h|0)==-1|(g|0)==-1){EC(a,270736);i=l;return}h=a+898|0;j=e[h>>1]|0;if(j&32768){i=l;return}if(!(j&16)){b[h>>1]=j|16;$B(a,a+824|0,k,1)|0;_B(a,f);i=l;return}else{b[h>>1]=j|32768;_B(a,f);EC(a,270616);i=l;return}}function FD(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0;k=i;i=i+16|0;j=k;h=c[a+208>>2]|0;if(!(h&1))BC(a,270600);if(h&6){yD(a,g)|0;EC(a,270576);i=k;return}if((g|0)!=1){yD(a,g)|0;EC(a,270592);i=k;return}if(a){mD(a,j,1);NB(a,j,1)}if(yD(a,0)|0){i=k;return}h=a+898|0;g=e[h>>1]|0;if(g&32768){i=k;return}if(!(g&4)){aC(a,a+824|0,d[j>>0]|0)|0;_B(a,f);i=k;return}else{b[h>>1]=g|32768;_B(a,f);EC(a,270752);i=k;return}}function GD(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+1248|0;w=z+4|0;v=z+1164|0;r=z+1032|0;s=z+8|0;u=z;c[w>>2]=h;j=c[f+208>>2]|0;if(!(j&1))BC(f,270600);if(j&6){yD(f,h)|0;EC(f,270576);i=z;return}if(h>>>0<9){yD(f,h)|0;EC(f,270776);i=z;return}t=f+824|0;x=f+898|0;j=e[x>>1]|0;if(j&32768){yD(f,h)|0;i=z;return}do if(!(j&4)){m=h>>>0<81?h:81;if(f){mD(f,v,m);NB(f,v,m)}h=h-m|0;c[w>>2]=h;if(m){l=0;while(1){k=l+1|0;if(!(a[v+l>>0]|0)){j=1;k=l;break}j=k>>>0<80;if(j&k>>>0>>0)l=k;else break}if((k|0)!=0&j){q=k+1|0;if(q>>>0>>0?(a[v+q>>0]|0)==0:0){j=k+2|0;if(XQ(f,1766015824)|0){j=c[f+248>>2]|0;y=44;break}c[u>>2]=132;c[f+224>>2]=v+j;c[f+228>>2]=m-j;YQ(f,s,w,r,u,0);a:do if(!(c[u>>2]|0)){o=d[r+1>>0]<<16|d[r>>0]<<24|d[r+2>>0]<<8|d[r+3>>0];if((bC(f,t,v,o)|0)!=0?(cC(f,t,v,o,r,d[f+435>>0]|0)|0)!=0:0){h=a[r+128>>0]|0;k=a[r+129>>0]|0;m=a[r+130>>0]|0;n=a[r+131>>0]|0;p=f+788|0;j=c[p>>2]|0;if(j){l=f+792|0;if((c[l>>2]|0)>>>0>>0){c[p>>2]=0;c[l>>2]=0;ZC(f,j);y=25}else l=j}else y=25;if((y|0)==25){j=aD(f,o)|0;if(!j){j=270816;h=1;break}c[p>>2]=j;c[f+792>>2]=o;l=j}Aga(l|0,r|0,132)|0;j=((k&255)<<16|(h&255)<<24|(m&255)<<8|n&255)*12|0;c[u>>2]=j;YQ(f,s,w,l+132|0,u,0);if(c[u>>2]|0){j=c[f+248>>2]|0;h=1;break}if(dC(f,t,v,o,l)|0){c[u>>2]=o+-132-j;YQ(f,s,w,l+(j+132)|0,u,1);j=c[w>>2]|0;h=(j|0)==0;if(!h?(c[f+212>>2]&1048576|0)==0:0){j=270792;h=1;break}if(c[u>>2]|0){j=270832;h=1;break}if(!h)AC(f,270792);yD(f,j)|0;eC(f,t,l,c[f+272>>2]|0);do if(g){SB(f,g,16,0);j=aD(f,q)|0;c[g+116>>2]=j;if(!j){b[x>>1]=e[x>>1]|32768;_B(f,g);j=270816;h=0;break a}else{Aga(j|0,v|0,q|0)|0;c[g+124>>2]=o;c[g+120>>2]=l;c[p>>2]=0;y=g+232|0;c[y>>2]=c[y>>2]|16;y=g+8|0;c[y>>2]=c[y>>2]|4096;_B(f,g);break}}while(0);c[f+220>>2]=0;i=z;return}else{j=0;h=1}}else{j=0;h=1}}else{j=c[f+248>>2]|0;h=1}while(0);c[f+220>>2]=0;if(h){h=c[w>>2]|0;y=44}}else{j=270848;y=44}}else{j=270872;y=44}}else{j=270872;y=44}}else{j=270752;y=44}while(0);if((y|0)==44)yD(f,h)|0;b[x>>1]=e[x>>1]|32768;_B(f,g);if(!j){i=z;return}EC(f,j);i=z;return}function HD(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;p=q;h=e+756|0;j=c[h>>2]|0;if((j|0)==1){yD(e,g)|0;i=q;return}else if(j)m=3;if((m|0)==3?(n=j+-1|0,c[h>>2]=n,(n|0)==1):0){vC(e,270888);yD(e,g)|0;i=q;return}h=c[e+208>>2]|0;if(!(h&1))BC(e,270600);if(h&4){yD(e,g)|0;EC(e,270576);i=q;return}k=g+1|0;l=e+788|0;h=c[l>>2]|0;if(h){j=e+792|0;if((c[j>>2]|0)>>>0>>0){c[l>>2]=0;c[j>>2]=0;ZC(e,h);m=12}else m=15}else m=12;do if((m|0)==12){h=aD(e,k)|0;if(h){c[l>>2]=h;c[e+792>>2]=k;if(!e)break;else{m=15;break}}yD(e,g)|0;EC(e,270816);i=q;return}while(0);if((m|0)==15){mD(e,h,g);NB(e,h,g)}if(yD(e,0)|0){i=q;return}a[h+g>>0]=0;j=h;while(1){k=j+1|0;if(!(a[j>>0]|0))break;else j=k}if(k>>>0>(h+(g+-2)|0)>>>0){vC(e,270928);i=q;return}l=j+2|0;o=a[k>>0]|0;a[p+4>>0]=o;o=o<<24>>24==8;k=o?6:10;j=h-l+g|0;if((j>>>0)%(k>>>0)|0){vC(e,270952);i=q;return}m=(j>>>0)/(k>>>0)|0;if(m>>>0>429496729){vC(e,270984);i=q;return}c[p+12>>2]=m;g=dD(e,m*10|0)|0;n=p+8|0;c[n>>2]=g;if(!g){vC(e,271008);i=q;return}if(m){j=l;k=0;while(1){l=g+(k*10|0)|0;if(o){b[l>>1]=d[j>>0]|0;b[g+(k*10|0)+2>>1]=d[j+1>>0]|0;b[g+(k*10|0)+4>>1]=d[j+2>>0]|0;b[g+(k*10|0)+6>>1]=d[j+3>>0]|0;l=j+4|0}else{b[l>>1]=d[j>>0]<<8|d[j+1>>0];b[g+(k*10|0)+2>>1]=d[j+2>>0]<<8|d[j+3>>0];b[g+(k*10|0)+4>>1]=d[j+4>>0]<<8|d[j+5>>0];b[g+(k*10|0)+6>>1]=d[j+6>>0]<<8|d[j+7>>0];l=j+8|0}b[g+(k*10|0)+8>>1]=d[l>>0]<<8|d[l+1>>0];k=k+1|0;if((k|0)>=(m|0))break;else j=l+2|0}}c[p>>2]=h;nE(e,f,p,1);ZC(e,c[n>>2]|0);i=q;return}function ID(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+272|0;o=p+8|0;k=p;n=p+2|0;h=c[d+208>>2]|0;if(!(h&1))BC(d,270600);if(h&4){yD(d,g)|0;EC(d,270576);i=p;return}if((f|0)!=0?(c[f+8>>2]&16|0)!=0:0){yD(d,g)|0;EC(d,270616);i=p;return}j=a[d+435>>0]|0;if(j<<24>>24==3){if(!(h&2)){yD(d,g)|0;EC(d,270576);i=p;return}if((g>>>0>256?1:(e[d+420>>1]|0)>>>0>>0)|(g|0)==0){yD(d,g)|0;EC(d,270592);i=p;return}if(d){mD(d,o,g);NB(d,o,g)}b[d+428>>1]=g}else if(j<<24>>24==2){if((g|0)!=6){yD(d,g)|0;EC(d,270592);i=p;return}if(!d){k=0;j=0;g=0;l=0;m=0;h=0}else{mD(d,n,6);NB(d,n,6);k=a[n>>0]|0;j=a[n+1>>0]|0;g=a[n+2>>0]|0;l=a[n+3>>0]|0;m=a[n+4>>0]|0;h=a[n+5>>0]|0}b[d+428>>1]=1;b[d+534>>1]=(k&255)<<8|j&255;b[d+536>>1]=(g&255)<<8|l&255;b[d+538>>1]=(m&255)<<8|h&255}else if(!(j<<24>>24)){if((g|0)!=2){yD(d,g)|0;EC(d,270592);i=p;return}if(!d){j=0;h=0}else{mD(d,k,2);NB(d,k,2);j=a[k>>0]|0;h=a[k+1>>0]|0}b[d+428>>1]=1;b[d+540>>1]=(j&255)<<8|h&255}else{yD(d,g)|0;EC(d,271048);i=p;return}h=d+428|0;if(!(yD(d,0)|0)){mE(d,f,o,e[h>>1]|0,d+532|0);i=p;return}else{b[h>>1]=0;i=p;return}}function JD(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;n=r+10|0;q=r;h=c[e+208>>2]|0;if(!(h&1))BC(e,270600);if((h&4|0)==0?(l=e+435|0,j=a[l>>0]|0,k=j<<24>>24==3,!(k&(h&2|0)==0)):0){m=(f|0)!=0;if(m?(c[f+8>>2]&32|0)!=0:0){yD(e,g)|0;EC(e,270616);i=r;return}if(k)h=1;else h=(j&2)<<1|2;if((h|0)!=(g|0)){yD(e,g)|0;EC(e,270592);i=r;return}if(e){mD(e,n,g);NB(e,n,g)}if(yD(e,0)|0){i=r;return}j=a[l>>0]|0;do if(j<<24>>24!=3){a[q>>0]=0;h=((d[n>>0]|0)<<8|(d[n+1>>0]|0))&65535;if(!(j&2)){b[q+8>>1]=h;b[q+6>>1]=h;b[q+4>>1]=h;b[q+2>>1]=h;break}else{b[q+2>>1]=h;b[q+4>>1]=(d[n+2>>0]|0)<<8|(d[n+3>>0]|0);b[q+6>>1]=(d[n+4>>0]|0)<<8|(d[n+5>>0]|0);b[q+8>>1]=0;break}}else{h=a[n>>0]|0;a[q>>0]=h;do if(m?(o=b[f+20>>1]|0,o<<16>>16!=0):0){h=h&255;if(h>>>0<(o&65535)>>>0){n=c[e+416>>2]|0;b[q+2>>1]=d[n+(h*3|0)>>0]|0;b[q+4>>1]=d[n+(h*3|0)+1>>0]|0;b[q+6>>1]=d[n+(h*3|0)+2>>0]|0;break}EC(e,271080);i=r;return}else p=22;while(0);if((p|0)==22){b[q+6>>1]=0;b[q+4>>1]=0;b[q+2>>1]=0}b[q+8>>1]=0}while(0);$D(e,f,q);i=r;return}yD(e,g)|0;EC(e,270576);i=r;return}function KD(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+528|0;l=m;k=m+512|0;h=c[a+208>>2]|0;if(!(h&1))BC(a,270600);if((h&6|0)!=2){yD(a,g)|0;EC(a,270576);i=m;return}if((f|0)!=0?(c[f+8>>2]&64|0)!=0:0){yD(a,g)|0;EC(a,270616);i=m;return}j=g>>>1;if(g>>>0>513?1:(j|0)!=(e[a+420>>1]|0|0)){yD(a,g)|0;EC(a,270592);i=m;return}if(j){h=k+1|0;if(!a){h=0;do{b[l+(h<<1)>>1]=0;h=h+1|0}while(h>>>0>>0)}else{g=0;do{mD(a,k,2);NB(a,k,2);b[l+(g<<1)>>1]=(d[k>>0]|0)<<8|(d[h>>0]|0);g=g+1|0}while(g>>>0>>0)}}if(yD(a,0)|0){i=m;return}aE(a,f,l);i=m;return}function LD(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=c[a+208>>2]|0;if(!(f&1))BC(a,270600);if(f&4){yD(a,e)|0;EC(a,270576);i=h;return}if((b|0)!=0?(c[b+8>>2]&128|0)!=0:0){yD(a,e)|0;EC(a,270616);i=h;return}if((e|0)!=9){yD(a,e)|0;EC(a,270592);i=h;return}if(a){mD(a,g,9);NB(a,g,9)}if(yD(a,0)|0){i=h;return}fE(a,b,(d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0),(d[g+5>>0]|0)<<16|(d[g+4>>0]|0)<<24|(d[g+6>>0]|0)<<8|(d[g+7>>0]|0),d[g+8>>0]|0);i=h;return}function MD(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;g=h;f=c[a+208>>2]|0;if(!(f&1))BC(a,270600);if(f&4){yD(a,e)|0;EC(a,270576);i=h;return}if((b|0)!=0?(c[b+8>>2]&256|0)!=0:0){yD(a,e)|0;EC(a,270616);i=h;return}if((e|0)!=9){yD(a,e)|0;EC(a,270592);i=h;return}if(a){mD(a,g,9);NB(a,g,9)}if(yD(a,0)|0){i=h;return}cE(a,b,(d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0),(d[g+5>>0]|0)<<16|(d[g+4>>0]|0)<<24|(d[g+6>>0]|0)<<8|(d[g+7>>0]|0),d[g+8>>0]|0);i=h;return}function ND(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;g=c[b+208>>2]|0;if(!(g&1))BC(b,270600);if(g&4){yD(b,f)|0;EC(b,270576);i=r;return}if((e|0)!=0?(c[e+8>>2]&1024|0)!=0:0){yD(b,f)|0;EC(b,270616);i=r;return}j=f+1|0;k=b+788|0;g=c[k>>2]|0;if(g){h=b+792|0;if((c[h>>2]|0)>>>0>>0){c[k>>2]=0;c[h>>2]=0;ZC(b,g);h=11}else h=14}else h=11;do if((h|0)==11){g=aD(b,j)|0;if(g){c[k>>2]=g;c[b+792>>2]=j;if(!b)break;else{h=14;break}}yD(b,f)|0;EC(b,270816);i=r;return}while(0);if((h|0)==14){mD(b,g,f);NB(b,g,f)}if(yD(b,0)|0){i=r;return}q=g+f|0;a[q>>0]=0;k=g;while(1){h=k+1|0;if(!(a[k>>0]|0))break;else k=h}if(q>>>0<=(k+12|0)>>>0){EC(b,270592);i=r;return}o=d[k+2>>0]<<16|d[h>>0]<<24|d[k+3>>0]<<8|d[k+4>>0];p=d[k+6>>0]<<16|d[k+5>>0]<<24|d[k+7>>0]<<8|d[k+8>>0];h=a[k+9>>0]|0;j=a[k+10>>0]|0;m=k+11|0;n=h&255;if((h<<24>>24!=0|j<<24>>24==2?(h+-1<<24>>24&255)>1|j<<24>>24==3:0)?h<<24>>24!=3|j<<24>>24==4:0){if((h&255)>3){EC(b,271120);k=m}else k=m;while(1)if(!(a[k>>0]|0))break;else k=k+1|0;f=j&255;l=dD(b,f<<2)|0;if(!l){EC(b,270816);i=r;return}a:do if(j<<24>>24){j=0;b:while(1){k=k+1|0;c[l+(j<<2)>>2]=k;if(k>>>0>q>>>0)break;while(1){h=k+1|0;if(!(a[k>>0]|0))break;if(h>>>0>q>>>0)break b;else k=h}j=j+1|0;if((j|0)>=(f|0))break a}ZC(b,l);EC(b,271152);i=r;return}while(0);dE(b,e,g,o,p,n,f,m,l);ZC(b,l);i=r;return}EC(b,271096);i=r;return}function OD(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;n=p+4|0;o=p;g=c[b+208>>2]|0;if(!(g&1))BC(b,270600);if(g&4){yD(b,f)|0;EC(b,270576);i=p;return}if((e|0)!=0?(c[e+8>>2]&16384|0)!=0:0){yD(b,f)|0;EC(b,270616);i=p;return}if(f>>>0<4){yD(b,f)|0;EC(b,270592);i=p;return}j=f+1|0;k=b+788|0;g=c[k>>2]|0;if(g){h=b+792|0;if((c[h>>2]|0)>>>0>>0){c[k>>2]=0;c[h>>2]=0;ZC(b,g);h=13}else h=16}else h=13;do if((h|0)==13){g=aD(b,j)|0;if(g){c[k>>2]=g;c[b+792>>2]=j;if(!b)break;else{h=16;break}}EC(b,270816);yD(b,f)|0;i=p;return}while(0);if((h|0)==16){mD(b,g,f);NB(b,g,f)}a[g+f>>0]=0;if(yD(b,0)|0){i=p;return}if(((a[g>>0]|0)+-1<<24>>24&255)>=2){EC(b,271168);i=p;return}c[n>>2]=1;c[o>>2]=0;if(((jC(g,f,o,n)|0)!=0?(l=c[n>>2]|0,l>>>0>>0):0)?(m=l+1|0,c[n>>2]=m,(a[g+l>>0]|0)==0):0){if((c[o>>2]&392|0)!=264){EC(b,271208);i=p;return}c[o>>2]=0;l=(jC(g,f,o,n)|0)!=0;if(!(l&(c[n>>2]|0)==(f|0))){EC(b,271232);i=p;return}if((c[o>>2]&392|0)==264){eE(b,e,d[g>>0]|0,g+1|0,g+m|0);i=p;return}else{EC(b,271256);i=p;return}}EC(b,271184);i=p;return}function PD(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;k=m+8|0;l=m;h=e+208|0;j=c[h>>2]|0;if(!(j&1))BC(e,270600);if((f|0)!=0?(c[f+8>>2]&512|0)!=0:0){yD(e,g)|0;EC(e,270616);i=m;return}if(j&4)c[h>>2]=j|8;if((g|0)!=7){yD(e,g)|0;EC(e,270592);i=m;return}if(e){mD(e,k,7);NB(e,k,7)}if(yD(e,0)|0){i=m;return}a[l+6>>0]=a[k+6>>0]|0;a[l+5>>0]=a[k+5>>0]|0;a[l+4>>0]=a[k+4>>0]|0;a[l+3>>0]=a[k+3>>0]|0;a[l+2>>0]=a[k+2>>0]|0;b[l>>1]=(d[k>>0]|0)<<8|(d[k+1>>0]|0);lE(e,f,l);i=m;return}function QD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;k=l;f=b+756|0;g=c[f>>2]|0;if((g|0)==1){yD(b,e)|0;i=l;return}else if(g)j=3;if((j|0)==3?(h=g+-1|0,c[f>>2]=h,(h|0)==1):0){yD(b,e)|0;EC(b,271280);i=l;return}f=b+208|0;g=c[f>>2]|0;if(!(g&1))BC(b,270600);if(g&4)c[f>>2]=g|8;g=e+1|0;h=b+788|0;f=c[h>>2]|0;if(f){j=b+792|0;if((c[j>>2]|0)>>>0>>0){c[h>>2]=0;c[j>>2]=0;ZC(b,f);j=12}else j=15}else j=12;do if((j|0)==12){f=aD(b,g)|0;if(f){c[h>>2]=f;c[b+792>>2]=g;if(!b)break;else{j=15;break}}AC(b,272224);EC(b,270816);i=l;return}while(0);if((j|0)==15){mD(b,f,e);NB(b,f,e)}if(yD(b,0)|0){i=l;return}g=f+e|0;a[g>>0]=0;j=f;while(1){h=j+1|0;if(!(a[j>>0]|0))break;else j=h}e=(j|0)==(g|0)?j:h;c[k>>2]=-1;c[k+4>>2]=f;c[k+20>>2]=0;c[k+24>>2]=0;c[k+16>>2]=0;c[k+8>>2]=e;c[k+12>>2]=Dga(e|0)|0;if(!(kE(b,d,k,1)|0)){i=l;return}vC(b,271304);i=l;return}function RD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;l=m+28|0;k=m;f=b+756|0;g=c[f>>2]|0;if((g|0)==1){yD(b,e)|0;i=m;return}else if(g)h=3;if((h|0)==3?(h=g+-1|0,c[f>>2]=h,(h|0)==1):0){yD(b,e)|0;EC(b,271280);i=m;return}f=b+208|0;g=c[f>>2]|0;if(!(g&1))BC(b,270600);if(g&4)c[f>>2]=g|8;j=b+788|0;f=c[j>>2]|0;if(f){g=b+792|0;if((c[g>>2]|0)>>>0>>0){c[j>>2]=0;c[g>>2]=0;ZC(b,f);h=12}else h=15}else h=12;do if((h|0)==12){f=aD(b,e)|0;if(f){c[j>>2]=f;c[b+792>>2]=e;if(!b)break;else{h=15;break}}yD(b,e)|0;EC(b,270816);i=m;return}while(0);if((h|0)==15){mD(b,f,e);NB(b,f,e)}if(yD(b,0)|0){i=m;return}do if(e){h=0;while(1){g=h+1|0;if(!(a[f+h>>0]|0)){g=h;break}if(g>>>0>>0)h=g;else break}if((g+-1|0)>>>0<=78)if((g+3|0)>>>0<=e>>>0)if(!(a[f+(g+1)>>0]|0)){c[l>>2]=-1;f=g+2|0;if((ZQ(b,e,f,l)|0)==1){h=c[j>>2]|0;e=c[l>>2]|0;a[h+(e+f)>>0]=0;c[k>>2]=0;c[k+4>>2]=h;c[k+8>>2]=h+f;c[k+12>>2]=e;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;if(kE(b,d,k,1)|0){f=271384;break}i=m;return}else{f=c[b+248>>2]|0;if(f)break;i=m;return}}else f=271352;else f=270832;else f=270872}else f=270872;while(0);EC(b,f);i=m;return}function SD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;o=p+28|0;n=p;f=b+756|0;g=c[f>>2]|0;if((g|0)==1){yD(b,e)|0;i=p;return}else if(g)j=3;if((j|0)==3?(m=g+-1|0,c[f>>2]=m,(m|0)==1):0){yD(b,e)|0;EC(b,271280);i=p;return}f=b+208|0;g=c[f>>2]|0;if(!(g&1))BC(b,270600);if(g&4)c[f>>2]=g|8;h=e+1|0;m=b+788|0;f=c[m>>2]|0;if(f){g=b+792|0;if((c[g>>2]|0)>>>0>>0){c[m>>2]=0;c[g>>2]=0;ZC(b,f);j=12}else j=15}else j=12;do if((j|0)==12){f=aD(b,h)|0;if(f){c[m>>2]=f;c[b+792>>2]=h;if(!b){l=f;break}else{j=15;break}}AC(b,272224);yD(b,e)|0;EC(b,270816);i=p;return}while(0);if((j|0)==15){mD(b,f,e);NB(b,f,e);l=f}if(yD(b,0)|0){i=p;return}a:do if(e){g=0;while(1){f=g+1|0;if(!(a[l+g>>0]|0)){f=g;break}if(f>>>0>>0)g=f;else break}if((f+-1|0)>>>0<=78)if((f+5|0)>>>0<=e>>>0){g=a[l+(f+1)>>0]|0;if(g<<24>>24==1){if(a[l+(f+2)>>0]|0){f=271408;break}}else if(g<<24>>24){f=271408;break}k=g<<24>>24!=0;c[o>>2]=0;h=f+3|0;b:do if(h>>>0>>0){g=h;while(1){f=g+1|0;if(!(a[l+g>>0]|0)){f=g;break b}if(f>>>0>>0)g=f;else break}}else f=h;while(0);j=f+1|0;c:do if(j>>>0>>0){g=j;while(1){f=g+1|0;if(!(a[l+g>>0]|0)){f=g;break c}if(f>>>0>>0)g=f;else break}}else f=j;while(0);g=f+1|0;do if(k|g>>>0>e>>>0){if(!(k&g>>>0>>0)){f=270832;break a}c[o>>2]=-1;if((ZQ(b,e,g,o)|0)!=1){f=c[b+248>>2]|0;if(!f){f=l;break}else break a}else{f=c[m>>2]|0;break}}else{c[o>>2]=e-g;f=l}while(0);a[f+((c[o>>2]|0)+g)>>0]=0;c[n>>2]=k?2:1;c[n+4>>2]=f;c[n+20>>2]=f+h;c[n+24>>2]=f+j;c[n+8>>2]=f+g;c[n+12>>2]=0;c[n+16>>2]=c[o>>2];if(!(kE(b,d,n,1)|0)){i=p;return}else f=271384}else f=270832;else f=270872}else f=270872;while(0);EC(b,f);i=p;return}function TD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;f=a+684|0;do if(!(c[f>>2]|0)){if(!e)e=c[a+688>>2]|0;if((e|0)==2)if(!(c[a+376>>2]&536870912))g=14;else g=13;else if((e|0)==3)g=13;else g=14;if((g|0)==13){d=(_Q(a,d)|0)==0;e=d?1:e;g=15;break}else if((g|0)==14){yD(a,d)|0;g=15;break}}else if(_Q(a,d)|0){f=Wd[c[f>>2]&511](a,a+764|0)|0;if((f|0)<0)BC(a,271432);if(!f)if((e|0)<2)if((c[a+688>>2]|0)<2){AC(a,271456);CC(a,271480);g=16}else g=16;else g=15;else d=1}else d=0;while(0);if((g|0)==15)if((e|0)==2)g=16;else if((e|0)==3)g=17;else d=0;if((g|0)==16)if(!(c[a+376>>2]&536870912))d=0;else g=17;do if((g|0)==17){e=a+756|0;f=c[e>>2]|0;if((f|0)==2){c[e>>2]=1;EC(a,271280);d=0;break}else if((f|0)==1){d=0;break}else if(f)c[e>>2]=f+-1;oE(a,b,a+764|0,1);d=1}while(0);e=a+772|0;f=c[e>>2]|0;if(f)ZC(a,f);c[e>>2]=0;if(d){i=h;return}if(!(c[a+376>>2]&536870912))BC(a,271560);else{i=h;return}}function UD(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;v=a[e+443>>0]|0;x=v&255;q=c[e+384>>2]|0;y=q+1|0;z=c[e+348>>2]|0;j=a[e+433>>0]|0;w=j&255;if(!(v<<24>>24))sC(e,271616);h=c[e+404>>2]|0;if(h){if((v&255)>7)n=ea(z,x>>>3)|0;else n=((ea(z,x)|0)+7|0)>>>3;if((h|0)!=(n|0))sC(e,271648)}if(!z)sC(e,271688);u=ea(z,x)|0;n=u&7;do if(n){if((v&255)>7)h=ea(z,x>>>3)|0;else h=(u+7|0)>>>3;k=f+(h+-1)|0;h=a[k>>0]|0;if(!(c[e+216>>2]&65536)){t=h;s=255>>>n;r=k;break}else{t=h;s=255<>0]|0)!=0?(m=c[e+216>>2]|0,(m&2|0)!=0&(j&255)<6):0){if((g|0)==1){h=w&1;if(!h){A=78;break}}else if(!g)h=w&1;else{A=78;break}h=h<<3-((w+1|0)>>>1)&7;if(z>>>0<=h>>>0){i=B;return}if((v&255)<8){l=8/(x>>>0)|0;h=(g|0)!=0;do if(!(m&65536))if(h){if(v<<24>>24==1)h=0;else h=v<<24>>24==2?1:2;h=271864+(h*12|0)+(w>>>1<<2)+36|0;break}else{if(v<<24>>24==1)h=0;else h=v<<24>>24==2?1:2;h=271720+(h*24|0)+(w<<2)+72|0;break}else if(h){if(v<<24>>24==1)h=0;else h=v<<24>>24==2?1:2;h=271864+(h*12|0)+(w>>>1<<2)|0;break}else{if(v<<24>>24==1)h=0;else h=v<<24>>24==2?1:2;h=271720+(h*24|0)+(w<<2)|0;break}while(0);m=f;k=c[h>>2]|0;j=z;e=y;while(1){h=k>>>8|k<<24;n=k&255;if((n|0)==255)a[m>>0]=a[e>>0]|0;else if(n)a[m>>0]=d[e>>0]&k|d[m>>0]&(k^255);if(j>>>0<=l>>>0)break a;m=m+1|0;k=h;j=j-l|0;e=e+1|0}}if(x&7)sC(e,271936);m=x>>>3;l=ea(h,m)|0;j=(ea(z,m)|0)-l|0;e=f+l|0;n=l+1|0;h=q+n|0;if(!g)k=m;else{k=m<<((6-w|0)>>>1);k=k>>>0>j>>>0?j:k}r=m<<((7-w|0)>>>1);if((k|0)==3){a[e>>0]=a[h>>0]|0;A=l+2|0;a[f+n>>0]=a[q+A>>0]|0;a[f+A>>0]=a[q+(l+3)>>0]|0;if(j>>>0<=r>>>0){i=B;return}do{z=h;h=h+r|0;f=e;e=e+r|0;j=j-r|0;a[e>>0]=a[h>>0]|0;A=r+1|0;a[f+A>>0]=a[z+A>>0]|0;A=r+2|0;a[f+A>>0]=a[z+A>>0]|0}while(j>>>0>r>>>0);i=B;return}else if((k|0)==1){a[e>>0]=a[h>>0]|0;if(j>>>0<=r>>>0){i=B;return}do{e=e+r|0;h=h+r|0;j=j-r|0;a[e>>0]=a[h>>0]|0}while(j>>>0>r>>>0);i=B;return}else if((k|0)==2){do{a[e>>0]=a[h>>0]|0;a[e+1>>0]=a[h+1>>0]|0;if(j>>>0<=r>>>0){A=84;break}h=h+r|0;e=e+r|0;j=j-r|0}while(j>>>0>1);if((A|0)==84){i=B;return}a[e>>0]=a[h>>0]|0;i=B;return}else{if((k>>>0<16?(o=e,(o&1|0)==0):0)?(p=h,((p|r|k)&1|0)==0):0)if(!((o|r|p|k)&3)){n=((r-k|0)>>>2)+1|0;do{l=k;m=e;g=h;while(1){c[m>>2]=c[g>>2];l=l+-4|0;if(!l)break;else{m=m+4|0;g=g+4|0}}if(j>>>0<=r>>>0){A=84;break}e=m+(n<<2)|0;h=g+(n<<2)|0;j=j-r|0}while(k>>>0<=j>>>0);if((A|0)==84){i=B;return}while(1){a[e>>0]=a[h>>0]|0;j=j+-1|0;if(!j)break;else{e=e+1|0;h=h+1|0}}i=B;return}else{n=((r-k|0)>>>1)+1|0;do{l=k;m=e;g=h;while(1){b[m>>1]=b[g>>1]|0;l=l+-2|0;if(!l)break;else{m=m+2|0;g=g+2|0}}if(j>>>0<=r>>>0){A=84;break}e=m+(n<<1)|0;h=g+(n<<1)|0;j=j-r|0}while(k>>>0<=j>>>0);if((A|0)==84){i=B;return}while(1){a[e>>0]=a[h>>0]|0;j=j+-1|0;if(!j)break;else{e=e+1|0;h=h+1|0}}i=B;return}Aga(e|0,h|0,k|0)|0;if(j>>>0<=r>>>0){i=B;return}do{h=h+r|0;e=e+r|0;j=j-r|0;k=k>>>0>j>>>0?j:k;Aga(e|0,h|0,k|0)|0}while(j>>>0>r>>>0);i=B;return}}else A=78;while(0);if((A|0)==78){if((v&255)>7)h=ea(z,x>>>3)|0;else h=(u+7|0)>>>3;Aga(f|0,y|0,h|0)|0}if(!r){i=B;return}a[r>>0]=d[r>>0]&(s^255)|t&255&s;i=B;return}function VD(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+16|0;o=u;if(!((e|0)!=0&(b|0)!=0)){i=u;return}l=c[b>>2]|0;r=c[271976+(f<<2)>>2]|0;t=ea(r,l)|0;s=b+11|0;f=d[s>>0]|0;if((f|0)==2){f=(l<<1)+6&6;if(!(g&65536)){g=(t<<1)+6&6^6;k=6;m=2;p=0;f=f^6}else{g=(t<<1)+6&6;k=0;m=-2;p=6}if(l){j=e+((t+-1|0)>>>2)|0;o=0;l=e+((l+-1|0)>>>2)|0;while(1){n=(d[l>>0]|0)>>>f&3;h=0;do{a[j>>0]=(d[j>>0]|0)&16191>>>(6-g|0)|n<>>0>=(c[b>>2]|0)>>>0)break;else{l=n?l+-1|0:l;f=n?p:f+m|0}}}}else if((f|0)==4){f=l&1;if(!(g&65536)){g=t&1;m=4;p=4;q=0}else{g=t&1^1;m=0;p=-4;q=4;f=f^1}if(l){o=e+((t+-1|0)>>>1)|0;h=g<<2;k=0;l=e+((l+-1|0)>>>1)|0;j=f<<2;while(1){n=(d[l>>0]|0)>>>j&15;g=o;f=0;do{a[g>>0]=(d[g>>0]|0)&3855>>>(4-h|0)|n<>>0>=(c[b>>2]|0)>>>0)break;else{o=g;l=f?l+-1|0:l;j=f?q:j+p|0}}}}else if((f|0)==1){f=l+7&7;if(!(g&65536)){g=t+7&7^7;k=7;m=1;p=0;f=f^7}else{g=t+7&7;k=0;m=-1;p=7}if(l){j=e+((t+-1|0)>>>3)|0;o=0;l=e+((l+-1|0)>>>3)|0;while(1){n=(d[l>>0]|0)>>>f&1;h=0;do{a[j>>0]=(d[j>>0]|0)&32639>>>(7-g|0)|n<>>0>=(c[b>>2]|0)>>>0)break;else{l=n?l+-1|0:l;f=n?p:f+m|0}}}}else{n=f>>>3;if(l){j=e+(ea(n,t+-1|0)|0)|0;m=e+(ea(n,l+-1|0)|0)|0;f=0-n|0;h=0-(ea((r|0)>1?r:1,n)|0)|0;k=0;while(1){Aga(o|0,m|0,n|0)|0;g=j;l=0;while(1){Aga(g|0,o|0,n|0)|0;l=l+1|0;if((l|0)>=(r|0))break;else g=g+f|0}k=k+1|0;if(k>>>0>=(c[b>>2]|0)>>>0)break;else{j=j+h|0;m=m+f|0}}}}c[b>>2]=t;s=a[s>>0]|0;f=s&255;if((s&255)>7)f=ea(f>>>3,t)|0;else f=((ea(f,t)|0)+7|0)>>>3;c[b+4>>2]=f;i=u;return}function WD(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;j=i;h=g+-1|0;if(h>>>0>=4){i=j;return}g=a+808|0;if(!(c[g>>2]|0)){k=(d[a+438>>0]|0)+7|0;c[g>>2]=47;c[a+812>>2]=48;c[a+816>>2]=49;c[a+820>>2]=(k&504|0)==8?51:50}$d[c[a+(h<<2)+808>>2]&255](b,e,f);i=j;return}function XD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+1024|0;q=t;f=a+224|0;g=a+236|0;c[g>>2]=b;k=a+240|0;c[k>>2]=0;l=a+228|0;s=(b|0)!=0;m=a+408|0;n=a+376|0;o=a+796|0;p=a+788|0;h=a+792|0;j=(a|0)==0;e=(b|0)==0?0:d;a:while(1){if(!(c[l>>2]|0)){d=c[m>>2]|0;while(1){if(d)break;yD(a,0)|0;d=xD(a)|0;c[m>>2]=d;if((c[n>>2]|0)!=1229209940){r=6;break a}}b=c[o>>2]|0;b=b>>>0>d>>>0?d:b;d=c[p>>2]|0;if(d){if((c[h>>2]|0)>>>0>>0){c[p>>2]=0;c[h>>2]=0;ZC(a,d);r=10}}else r=10;if((r|0)==10){r=0;d=aD(a,b)|0;if(!d){r=12;break}c[p>>2]=d;c[h>>2]=b}if(!j){mD(a,d,b);NB(a,d,b)}c[m>>2]=(c[m>>2]|0)-b;c[f>>2]=d;c[l>>2]=b}if(s){b=0;d=e}else{c[g>>2]=q;b=e;d=1024}c[k>>2]=d;d=jI(f,0)|0;e=c[k>>2]|0;e=(s?e:1024-e|0)+b|0;c[k>>2]=0;if((d|0)==1){r=19;break}else if(d){r=22;break}if(!e){r=30;break}}if((r|0)==6)sC(a,272008);else if((r|0)==12)BC(a,272224);else if((r|0)==19){c[g>>2]=0;r=a+208|0;c[r>>2]=c[r>>2]|8;r=a+212|0;c[r>>2]=c[r>>2]|8;if(!((c[l>>2]|0)==0?(c[m>>2]|0)==0:0))EC(a,272032);if(!e){i=t;return}if(s)sC(a,272008);EC(a,272056);i=t;return}else if((r|0)==22){XB(a,d);d=c[a+248>>2]|0;if(s)BC(a,d);EC(a,d);i=t;return}else if((r|0)==30){i=t;return}}function YD(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;b=a+212|0;if((c[b>>2]&8|0)==0?(XD(a,0,0),c[a+236>>2]=0,d=c[b>>2]|0,(d&8|0)==0):0){f=a+208|0;c[f>>2]=c[f>>2]|8;c[b>>2]=d|8}b=a+220|0;if((c[b>>2]|0)!=1229209940){i=e;return}c[a+224>>2]=0;c[a+228>>2]=0;c[b>>2]=0;yD(a,c[a+408>>2]|0)|0;i=e;return}function ZD(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;e=b+372|0;l=(c[e>>2]|0)+1|0;c[e>>2]=l;n=b+356|0;if(l>>>0<(c[n>>2]|0)>>>0){i=q;return}do if((a[b+432>>0]|0)!=0?(c[e>>2]=0,Cga(c[b+380>>2]|0,0,(c[b+364>>2]|0)+1|0)|0,m=b+433|0,f=(a[m>>0]|0)+1<<24>>24,a[m>>0]=f,(f&255)<=6):0){h=(c[b+348>>2]|0)+-1|0;j=b+368|0;k=(c[b+216>>2]&2|0)==0;l=b+352|0;g=f;e=f&255;while(1){f=d[272104+e>>0]|0;e=((h+f-(d[272096+e>>0]|0)|0)>>>0)/(f>>>0)|0;if(!k)break;r=g&255;f=d[272088+r>>0]|0;f=(((c[l>>2]|0)+-1+f-(d[272080+r>>0]|0)|0)>>>0)/(f>>>0)|0;c[n>>2]=f;if(!((f|0)==0|(e|0)==0))break;f=g+1<<24>>24;a[m>>0]=f;if((f&255)>6){o=9;break}else{g=f;e=f&255}}if((o|0)==9){c[j>>2]=e;break}c[j>>2]=e;if((g&255)<7){i=q;return}}while(0);e=b+212|0;if((c[e>>2]&8|0)==0?(XD(b,0,0),c[b+236>>2]=0,p=c[e>>2]|0,(p&8|0)==0):0){r=b+208|0;c[r>>2]=c[r>>2]|8;c[e>>2]=p|8}e=b+220|0;if((c[e>>2]|0)!=1229209940){i=q;return}c[b+224>>2]=0;c[b+228>>2]=0;c[e>>2]=0;yD(b,c[b+408>>2]|0)|0;i=q;return}function _D(e){e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;tD(e);n=e+432|0;if(!(a[n>>0]|0)){c[e+356>>2]=c[e+352>>2];m=c[e+348>>2]|0;c[e+368>>2]=m;g=c[e+216>>2]|0}else{g=c[e+216>>2]|0;f=c[e+352>>2]|0;if(!(g&2))c[e+356>>2]=(f+7|0)>>>3;else c[e+356>>2]=f;m=c[e+348>>2]|0;h=d[e+433>>0]|0;k=d[272104+h>>0]|0;c[e+368>>2]=((m+-1+k-(d[272096+h>>0]|0)|0)>>>0)/(k>>>0)|0}f=d[e+438>>0]|0;k=e+216|0;if(g&4)f=(d[e+436>>0]|0)<8?8:f;g=c[k>>2]|0;h=(g&4096|0)==0;do if(!h){j=a[e+435>>0]|0;if(j<<24>>24==3){f=(b[e+428>>1]|0)==0?24:32;break}else if(!(j<<24>>24)){f=(f>>>0<8?8:f)<<((b[e+428>>1]|0)!=0&1);break}else if(j<<24>>24==2){if(!(b[e+428>>1]|0))break;f=(f<<2>>>0)/3|0;break}else break}while(0);do if(g&512)if(h){h=g&-513;c[k>>2]=h;break}else{h=g;f=f<<((d[e+436>>0]|0)<16&1);break}else h=g;while(0);g=(h&32768|0)==0;do if(!g){j=a[e+435>>0]|0;if(!(j<<24>>24)){f=(f|0)<9?16:32;break}else if(j<<24>>24==3|j<<24>>24==2){f=(f|0)<33?32:64;break}else break}while(0);do if(h&16384){if(((b[e+428>>1]|0)==0|(h&4096|0)==0)&g?(l=a[e+435>>0]|0,l<<24>>24!=4):0){g=l<<24>>24==6;if((f|0)<9){f=g?32:24;break}else{f=g?64:48;break}}f=(f|0)<17?32:64}while(0);if(!(h&1048576))g=f;else{g=ea(d[e+205>>0]|0,d[e+204>>0]|0)|0;g=(g|0)>(f|0)?g:f}a[e+442>>0]=g;a[e+443>>0]=0;f=m+7&-8;if((g|0)>7)f=ea(f,g>>>3)|0;else f=(ea(f,g)|0)>>>3;g=(g+7>>3)+49+f|0;h=e+784|0;if(g>>>0>(c[h>>2]|0)>>>0){j=e+728|0;ZC(e,c[j>>2]|0);k=e+804|0;ZC(e,c[k>>2]|0);if(!(a[n>>0]|0))f=$C(e,g)|0;else f=_C(e,g)|0;c[j>>2]=f;m=$C(e,g)|0;c[k>>2]=m;k=c[j>>2]|0;c[e+384>>2]=k+(k+32&15^31);c[e+380>>2]=m+(m+32&15^31);c[h>>2]=g}f=c[e+364>>2]|0;if((f|0)==-1)sC(e,272112);Cga(c[e+380>>2]|0,0,f+1|0)|0;f=e+788|0;g=c[f>>2]|0;if(g){c[e+792>>2]=0;c[f>>2]=0;ZC(e,g)}if(!(XQ(e,1229209940)|0)){m=e+212|0;c[m>>2]=c[m>>2]|64;i=o;return}else sC(e,c[e+248>>2]|0)}function $D(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;f=i;if((a|0)==0|(d|0)==0|(e|0)==0){i=f;return}a=d+170|0;b[a+0>>1]=b[e+0>>1]|0;b[a+2>>1]=b[e+2>>1]|0;b[a+4>>1]=b[e+4>>1]|0;b[a+6>>1]=b[e+6>>1]|0;b[a+8>>1]=b[e+8>>1]|0;a=d+8|0;c[a>>2]=c[a>>2]|32;i=f;return}function aE(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;if((a|0)==0|(d|0)==0){i=h;return}f=d+20|0;if(((b[f>>1]|0)+-1<<16>>16&65535)>255){vC(a,272288);i=h;return}SB(a,d,8,0);g=dD(a,512)|0;c[d+204>>2]=g;if(!g){vC(a,272336);i=h;return}a=d+232|0;c[a>>2]=c[a>>2]|8;f=b[f>>1]|0;if(f<<16>>16){a=0;do{b[g+(a<<1)>>1]=b[e+(a<<1)>>1]|0;a=a+1|0}while((a|0)<(f&65535|0))}d=d+8|0;c[d>>2]=c[d>>2]|64;i=h;return}function bE(b,e,f,g,h,j,k,l,m){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0;o=i;if((b|0)==0|(e|0)==0){i=o;return}c[e>>2]=f;c[e+4>>2]=g;n=e+24|0;a[n>>0]=h;p=e+25|0;a[p>>0]=j;a[e+26>>0]=l;a[e+27>>0]=m;a[e+28>>0]=k;iC(b,f,g,h&255,j&255,k&255,l&255,m&255);j=a[p>>0]|0;if(j<<24>>24!=3){h=(j&2)==0?1:3;a[e+29>>0]=h;if(j&4){h=h+1<<24>>24;a[e+29>>0]=h}}else{a[e+29>>0]=1;h=1}h=ea(d[n>>0]|0,h&255)|0;a[e+30>>0]=h;h=h&255;if(h>>>0>7)h=ea(h>>>3,f)|0;else h=((ea(h,f)|0)+7|0)>>>3;c[e+12>>2]=h;i=o;return}function cE(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;if((b|0)==0|(d|0)==0){i=h;return}c[d+180>>2]=e;c[d+184>>2]=f;a[d+188>>0]=g;g=d+8|0;c[g>>2]=c[g>>2]|256;i=h;return}function dE(b,d,e,f,g,h,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0;q=i;if((b|0)==0|(d|0)==0|(e|0)==0|(k|0)==0){i=q;return}p=(j|0)>0;if(p&(l|0)==0){i=q;return}n=(Dga(e|0)|0)+1|0;if(h>>>0>3)sC(b,272376);if(j>>>0>255)sC(b,272408);a:do if(p){o=0;while(1){m=c[l+(o<<2)>>2]|0;if(!m){m=11;break}o=o+1|0;if(!(kC(m,Dga(m|0)|0)|0)){m=11;break}if((o|0)>=(j|0))break a}if((m|0)==11)sC(b,272440)}while(0);m=dD(b,n)|0;c[d+208>>2]=m;if(!m){vC(b,272480);i=q;return}Aga(m|0,e|0,n|0)|0;c[d+212>>2]=f;c[d+216>>2]=g;a[d+228>>0]=h;a[d+229>>0]=j;m=(Dga(k|0)|0)+1|0;n=dD(b,m)|0;c[d+220>>2]=n;if(!n){vC(b,272520);i=q;return}Aga(n|0,k|0,m|0)|0;m=(j<<2)+4|0;n=dD(b,m)|0;g=d+224|0;c[g>>2]=n;if(!n){vC(b,272560);i=q;return}Cga(n|0,0,m|0)|0;b:do if(p){o=0;while(1){m=l+(o<<2)|0;n=(Dga(c[m>>2]|0)|0)+1|0;f=dD(b,n)|0;c[(c[g>>2]|0)+(o<<2)>>2]=f;f=c[(c[g>>2]|0)+(o<<2)>>2]|0;if(!f)break;Aga(f|0,c[m>>2]|0,n|0)|0;o=o+1|0;if((o|0)>=(j|0))break b}vC(b,272600);i=q;return}while(0);b=d+8|0;c[b>>2]=c[b>>2]|1024;b=d+232|0;c[b>>2]=c[b>>2]|128;i=q;return}function eE(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;if((b|0)==0|(d|0)==0){i=l;return}if((e+-1|0)>>>0>1)sC(b,272640);if(!f)sC(b,272664);h=Dga(f|0)|0;if(!h)sC(b,272664);if((a[f>>0]|0)==45)sC(b,272664);if(!(kC(f,h)|0))sC(b,272664);if(!g)sC(b,272688);j=Dga(g|0)|0;if(!j)sC(b,272688);if((a[g>>0]|0)==45)sC(b,272688);if(!(kC(g,j)|0))sC(b,272688);a[d+252>>0]=e;h=h+1|0;e=dD(b,h)|0;k=d+256|0;c[k>>2]=e;if(!e){vC(b,272712);i=l;return}Aga(e|0,f|0,h|0)|0;h=j+1|0;e=dD(b,h)|0;c[d+260>>2]=e;if(!e){ZC(b,c[k>>2]|0);c[k>>2]=0;vC(b,272712);i=l;return}else{Aga(e|0,g|0,h|0)|0;b=d+8|0;c[b>>2]=c[b>>2]|16384;b=d+232|0;c[b>>2]=c[b>>2]|256;i=l;return}}function fE(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;if((b|0)==0|(d|0)==0){i=h;return}c[d+192>>2]=e;c[d+196>>2]=f;a[d+200>>0]=g;g=d+8|0;c[g>>2]=c[g>>2]|128;i=h;return}function gE(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;k=i;if((d|0)==0|(e|0)==0){i=k;return}if(g>>>0>256){if((a[e+25>>0]|0)==3)sC(d,272760);vC(d,272760);i=k;return}j=(g|0)>0;if(j&(f|0)==0)sC(d,272784);if((g|0)==0?(c[d+708>>2]&1|0)==0:0)sC(d,272784);SB(d,e,4096,0);h=_C(d,768)|0;c[d+416>>2]=h;if(j)Aga(h|0,f|0,g*3|0)|0;c[e+16>>2]=h;f=g&65535;b[d+420>>1]=f;b[e+20>>1]=f;d=e+232|0;c[d>>2]=c[d>>2]|4096;d=e+8|0;c[d>>2]=c[d>>2]|8;i=k;return}function hE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=i;if((b|0)==0|(d|0)==0|(e|0)==0){i=f;return}b=d+148|0;a[b+0>>0]=a[e+0>>0]|0;a[b+1>>0]=a[e+1>>0]|0;a[b+2>>0]=a[e+2>>0]|0;a[b+3>>0]=a[e+3>>0]|0;a[b+4>>0]=a[e+4>>0]|0;e=d+8|0;c[e>>2]=c[e>>2]|2;i=f;return}function iE(a,f,g,h,j,k){a=a|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0;m=i;if((a|0)==0|(f|0)==0|(g|0)==0|(j|0)==0){i=m;return}if(h)DC(a,272800);l=fC(a,f+40|0,g,k,j,d[f+25>>0]|0)|0;ZB(a,f);if(!l){i=m;return}h=f+114|0;b[h>>1]=e[h>>1]|0|24;h=(Dga(g|0)|0)+1|0;l=dD(a,h)|0;if(!l){zC(a,272832);i=m;return}Aga(l|0,g|0,h|0)|0;h=dD(a,k)|0;if(!h){ZC(a,l);zC(a,272880);i=m;return}else{Aga(h|0,j|0,k|0)|0;SB(a,f,16,0);c[f+124>>2]=k;c[f+116>>2]=l;c[f+120>>2]=h;k=f+232|0;c[k>>2]=c[k>>2]|16;k=f+8|0;c[k>>2]=c[k>>2]|4096;i=m;return}}function jE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;if(!(kE(a,b,c,d)|0)){i=e;return}else sC(a,272928)}function kE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;if((b|0)==0|(d|0)==0|(f|0)<1|(e|0)==0){v=0;i=w;return v|0}l=d+132|0;u=d+128|0;j=c[u>>2]|0;do if(((c[l>>2]|0)-j|0)<(f|0)){if((2147483647-j|0)>=(f|0)){g=j+f|0;if((g|0)<2147483639)k=g+8&-8;else k=2147483647;h=d+136|0;g=cD(b,c[h>>2]|0,j,k-j|0,28)|0;if(g){ZC(b,c[h>>2]|0);c[h>>2]=g;t=d+232|0;c[t>>2]=c[t>>2]|16384;c[l>>2]=k;break}}FC(b,272968,1);v=1;i=w;return v|0}while(0);if((f|0)<=0){v=0;i=w;return v|0}p=d+136|0;t=0;a:while(1){q=c[u>>2]|0;r=c[p>>2]|0;s=r+(q*28|0)|0;n=e+(t*28|0)+4|0;g=c[n>>2]|0;do if(g){o=e+(t*28|0)|0;h=c[o>>2]|0;if((h+1|0)>>>0>3){FC(b,272992,1);break}m=Dga(g|0)|0;if((h|0)>=1){g=c[e+(t*28|0)+20>>2]|0;if(!g)k=0;else k=Dga(g|0)|0;g=c[e+(t*28|0)+24>>2]|0;if(!g)d=0;else d=Dga(g|0)|0}else{d=0;k=0}j=e+(t*28|0)+8|0;g=c[j>>2]|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){l=Dga(g|0)|0;c[s>>2]=h}else v=21;do if((v|0)==21){v=0;if((h|0)>0){c[s>>2]=1;l=0;break}else{c[s>>2]=-1;l=0;break}}while(0);g=aD(b,m+4+k+d+l|0)|0;h=r+(q*28|0)+4|0;c[h>>2]=g;if(!g)break a;Aga(g|0,c[n>>2]|0,m|0)|0;a[(c[h>>2]|0)+m>>0]=0;if((c[o>>2]|0)>0){g=(c[h>>2]|0)+(m+1)|0;m=r+(q*28|0)+20|0;c[m>>2]=g;Aga(g|0,c[e+(t*28|0)+20>>2]|0,k|0)|0;a[(c[m>>2]|0)+k>>0]=0;m=(c[m>>2]|0)+(k+1)|0;g=r+(q*28|0)+24|0;c[g>>2]=m;Aga(m|0,c[e+(t*28|0)+24>>2]|0,d|0)|0;a[(c[g>>2]|0)+d>>0]=0;g=(c[g>>2]|0)+(d+1)|0;c[r+(q*28|0)+8>>2]=g}else{c[r+(q*28|0)+20>>2]=0;c[r+(q*28|0)+24>>2]=0;g=(c[h>>2]|0)+(m+1)|0;c[r+(q*28|0)+8>>2]=g}if(l){Aga(g|0,c[j>>2]|0,l|0)|0;g=c[r+(q*28|0)+8>>2]|0}a[g+l>>0]=0;g=r+(q*28|0)+12|0;if((c[s>>2]|0)>0){c[g>>2]=0;c[r+(q*28|0)+16>>2]=l}else{c[g>>2]=l;c[r+(q*28|0)+16>>2]=0}c[u>>2]=(c[u>>2]|0)+1}while(0);t=t+1|0;if((t|0)>=(f|0)){g=0;v=37;break}}if((v|0)==37){i=w;return g|0}FC(b,273032,1);v=1;i=w;return v|0}function lE(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0;j=i;if((f|0)==0|(g|0)==0|(h|0)==0){i=j;return}if(c[f+208>>2]&512){i=j;return}if((((((a[h+2>>0]|0)+-1<<24>>24&255)<=11?((a[h+3>>0]|0)+-1<<24>>24&255)<=30:0)?(d[h+4>>0]|0)<=23:0)?(d[h+5>>0]|0)<=59:0)?(d[h+6>>0]|0)<=60:0){l=h;l=e[l>>1]|e[l+2>>1]<<16;h=h+4|0;h=e[h>>1]|e[h+2>>1]<<16;f=g+140|0;k=f;b[k>>1]=l;b[k+2>>1]=l>>>16;f=f+4|0;b[f>>1]=h;b[f+2>>1]=h>>>16;f=g+8|0;c[f>>2]=c[f>>2]|512;i=j;return}vC(f,273064);i=j;return}function mE(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0;n=i;if((f|0)==0|(g|0)==0){i=n;return}if((h|0)!=0?(SB(f,g,8192,0),l=$C(f,256)|0,c[g+156>>2]=l,c[f+528>>2]=l,(j+-1|0)>>>0<256):0)Aga(l|0,h|0,j|0)|0;if(!k){b[g+22>>1]=j;if(!j){i=n;return}}else{l=1<<(d[g+24>>0]|0);h=a[g+25>>0]|0;if(h<<24>>24==2){if(!(((e[k+2>>1]|0|0)<=(l|0)?(e[k+4>>1]|0|0)<=(l|0):0)?(e[k+6>>1]|0|0)<=(l|0):0))m=11}else if(h<<24>>24==0?(e[k+8>>1]|0|0)>(l|0):0)m=11;if((m|0)==11)vC(f,273096);m=g+160|0;b[m+0>>1]=b[k+0>>1]|0;b[m+2>>1]=b[k+2>>1]|0;b[m+4>>1]=b[k+4>>1]|0;b[m+6>>1]=b[k+6>>1]|0;b[m+8>>1]=b[k+8>>1]|0;b[g+22>>1]=(j|0)==0?1:j&65535}m=g+8|0;c[m>>2]=c[m>>2]|16;m=g+232|0;c[m>>2]=c[m>>2]|8192;i=n;return}function nE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;if((b|0)==0|(d|0)==0|(f|0)<1|(e|0)==0){i=n;return}g=d+244|0;l=d+248|0;h=cD(b,c[g>>2]|0,c[l>>2]|0,f,16)|0;if(!h){FC(b,273152,1);i=n;return}ZC(b,c[g>>2]|0);c[g>>2]=h;j=d+232|0;c[j>>2]=c[j>>2]|32;j=d+8|0;h=h+(c[l>>2]<<4)|0;while(1){g=c[e>>2]|0;if((g|0)!=0?(k=e+8|0,(c[k>>2]|0)!=0):0){a[h+4>>0]=a[e+4>>0]|0;g=(Dga(g|0)|0)+1|0;d=aD(b,g)|0;c[h>>2]=d;if(!d)break;Aga(d|0,c[e>>2]|0,g|0)|0;g=e+12|0;d=bD(b,c[g>>2]|0,10)|0;c[h+8>>2]=d;if(!d){m=10;break}c[h+12>>2]=c[g>>2];Aga(d|0,c[k>>2]|0,(c[g>>2]|0)*10|0)|0;c[j>>2]=c[j>>2]|8192;c[l>>2]=(c[l>>2]|0)+1;g=h+16|0}else{DC(b,273176);g=h}f=f+-1|0;if(!f){m=15;break}else{e=e+16|0;h=g}}if((m|0)==10){ZC(b,c[h>>2]|0);c[h>>2]=0}else if((m|0)==15){i=n;return}if((f|0)<=0){i=n;return}FC(b,273208,1);i=n;return}function oE(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;if((b|0)==0|(e|0)==0|(g|0)<1|(f|0)==0){i=o;return}h=e+236|0;m=e+240|0;j=cD(b,c[h>>2]|0,c[m>>2]|0,g,20)|0;if(!j){FC(b,273232,1);i=o;return}ZC(b,c[h>>2]|0);c[h>>2]=j;l=e+232|0;c[l>>2]=c[l>>2]|512;if((g|0)<=0){i=o;return}l=b+208|0;k=f;h=j+((c[m>>2]|0)*20|0)|0;while(1){e=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24;a[h>>0]=e;a[h+1>>0]=e>>8;a[h+2>>0]=e>>16;a[h+3>>0]=e>>24;a[h+4>>0]=0;e=(d[k+16>>0]|0)&11;if(!e){if(c[l>>2]&32768){n=9;break}CC(b,273288);e=c[l>>2]&11;if(!e){n=9;break}}while(1){f=e&0-e;if((e|0)==(f|0))break;else e=f^e}a[h+16>>0]=e;f=k+12|0;e=c[f>>2]|0;do if(e){e=aD(b,e)|0;c[h+8>>2]=e;if(!e){FC(b,273256,1);break}else{Aga(e|0,c[k+8>>2]|0,c[f>>2]|0)|0;c[h+12>>2]=c[f>>2];n=16;break}}else{c[h+8>>2]=0;c[h+12>>2]=0;n=16}while(0);if((n|0)==16){n=0;c[m>>2]=(c[m>>2]|0)+1;h=h+20|0}g=g+-1|0;if((g|0)<=0){n=18;break}else k=k+20|0}if((n|0)==9)sC(b,273344);else if((n|0)==18){i=o;return}}function pE(a,b){a=a|0;b=b|0;var d=0;a=a+212|0;d=c[a>>2]|0;c[a>>2]=(b|0)==0?d&-7340033:d|7340032;return}function qE(a){a=a|0;var b=0;b=i;if(!a){i=b;return}a=a+216|0;c[a>>2]=c[a>>2]|1;i=b;return}function rE(b){b=b|0;var d=0;d=i;if((b|0)!=0?(a[b+436>>0]|0)==16:0){b=b+216|0;c[b>>2]=c[b>>2]|16}i=d;return}function sE(b){b=b|0;var e=0,f=0;e=i;if(!b){i=e;return}if((d[b+436>>0]|0)>=8){i=e;return}f=b+216|0;c[f>>2]=c[f>>2]|4;a[b+437>>0]=8;i=e;return}function tE(b){b=b|0;var d=0;d=i;if((b|0)!=0?(a[b+432>>0]|0)!=0:0){b=b+216|0;c[b>>2]=c[b>>2]|2;b=7}else b=1;i=d;return b|0}function uE(a){a=a|0;var b=0;b=i;if(!a){i=b;return}a=a+216|0;c[a>>2]=c[a>>2]|32;i=b;return}function vE(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;h=i;f=a[b+8>>0]|0;if(!(f<<24>>24)){b=c[b+4>>2]|0;if(!b){i=h;return}else{g=0;f=e}while(1){a[f>>0]=(d[f>>0]|0)^255;g=g+1|0;if((g|0)==(b|0))break;else f=f+1|0}i=h;return}else if(f<<24>>24==4){f=a[b+9>>0]|0;if(f<<24>>24==8){b=c[b+4>>2]|0;if(!b){i=h;return}else{g=0;f=e}while(1){a[f>>0]=(d[f>>0]|0)^255;g=g+2|0;if(g>>>0>=b>>>0)break;else f=f+2|0}i=h;return}else if(f<<24>>24==16){b=c[b+4>>2]|0;if(!b){i=h;return}else{g=0;f=e}while(1){a[f>>0]=(d[f>>0]|0)^255;e=f+1|0;a[e>>0]=(d[e>>0]|0)^255;g=g+4|0;if(g>>>0>=b>>>0)break;else f=f+4|0}i=h;return}else{i=h;return}}else{i=h;return}}function wE(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;h=i;if((a[b+9>>0]|0)!=16){i=h;return}f=ea(d[b+10>>0]|0,c[b>>2]|0)|0;if(!f){i=h;return}else{g=0;b=e}while(1){j=a[b>>0]|0;e=b+1|0;a[b>>0]=a[e>>0]|0;a[e>>0]=j;g=g+1|0;if((g|0)==(f|0))break;else b=b+2|0}i=h;return}function xE(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;h=i;f=a[b+9>>0]|0;if((f&255)>=8){i=h;return}b=c[b+4>>2]|0;g=e+b|0;if(f<<24>>24==2)f=273648;else if(f<<24>>24==1)f=273392;else if(f<<24>>24==4)f=273904;else{i=h;return}if((b|0)>0)b=e;else{i=h;return}do{a[b>>0]=a[f+(d[b>>0]|0)>>0]|0;b=b+1|0}while(b>>>0>>0);i=h;return}function yE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;l=b+4|0;h=c[l>>2]|0;j=d+h|0;k=b+10|0;f=a[k>>0]|0;if(f<<24>>24==4){f=a[b+9>>0]|0;if(f<<24>>24==16){if(!e){f=d+6|0;e=d+8|0}else{f=d;e=d+2|0}if(e>>>0>>0){g=(((d+(h+-1-e)|0)>>>3)*6|0)+6|0;h=f;while(1){a[h>>0]=a[e>>0]|0;a[h+1>>0]=a[e+1>>0]|0;a[h+2>>0]=a[e+2>>0]|0;a[h+3>>0]=a[e+3>>0]|0;a[h+4>>0]=a[e+4>>0]|0;a[h+5>>0]=a[e+5>>0]|0;e=e+8|0;if(e>>>0>=j>>>0)break;else h=h+6|0}f=f+g|0}a[b+11>>0]=48}else if(f<<24>>24==8){if(!e){f=d+3|0;e=d+4|0}else{f=d;e=d+1|0}if(e>>>0>>0){g=(((d+(h+-1-e)|0)>>>2)*3|0)+3|0;h=f;while(1){a[h>>0]=a[e>>0]|0;a[h+1>>0]=a[e+1>>0]|0;a[h+2>>0]=a[e+2>>0]|0;e=e+4|0;if(e>>>0>=j>>>0)break;else h=h+3|0}f=f+g|0}a[b+11>>0]=24}else{i=m;return}a[k>>0]=3;e=b+8|0;if((a[e>>0]|0)==6)a[e>>0]=2}else if(f<<24>>24==2){f=a[b+9>>0]|0;if(f<<24>>24==16){if(!e){f=d+2|0;e=d+4|0}else{f=d;e=d+2|0}if(e>>>0>>0){g=((d+(h+-1-e)|0)>>>2<<1)+2|0;h=f;while(1){a[h>>0]=a[e>>0]|0;a[h+1>>0]=a[e+1>>0]|0;e=e+4|0;if(e>>>0>=j>>>0)break;else h=h+2|0}f=f+g|0}a[b+11>>0]=16}else if(f<<24>>24==8){if(!e){f=d+1|0;e=d+2|0}else{f=d;e=d+1|0}if(e>>>0>>0){g=((d+(h+-1-e)|0)>>>1)+1|0;h=f;while(1){a[h>>0]=a[e>>0]|0;e=e+2|0;if(e>>>0>=j>>>0)break;else h=h+1|0}f=f+g|0}a[b+11>>0]=8}else{i=m;return}a[k>>0]=1;e=b+8|0;if((a[e>>0]|0)==4)a[e>>0]=0}else{i=m;return}c[l>>2]=f-d;i=m;return}function zE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;e=a[b+8>>0]|0;if(!(e&2)){i=g;return}f=c[b>>2]|0;b=a[b+9>>0]|0;if(b<<24>>24==16)if(e<<24>>24==2){if(!f){i=g;return}else b=0;while(1){h=a[d>>0]|0;j=d+4|0;a[d>>0]=a[j>>0]|0;a[j>>0]=h;j=d+1|0;h=a[j>>0]|0;e=d+5|0;a[j>>0]=a[e>>0]|0;a[e>>0]=h;b=b+1|0;if((b|0)==(f|0))break;else d=d+6|0}i=g;return}else if(e<<24>>24==6){if(!f){i=g;return}else b=0;while(1){h=a[d>>0]|0;e=d+4|0;a[d>>0]=a[e>>0]|0;a[e>>0]=h;e=d+1|0;h=a[e>>0]|0;j=d+5|0;a[e>>0]=a[j>>0]|0;a[j>>0]=h;b=b+1|0;if((b|0)==(f|0))break;else d=d+8|0}i=g;return}else{i=g;return}else if(b<<24>>24==8)if(e<<24>>24==6){if(!f){i=g;return}else b=0;while(1){h=a[d>>0]|0;j=d+2|0;a[d>>0]=a[j>>0]|0;a[j>>0]=h;b=b+1|0;if((b|0)==(f|0))break;else d=d+4|0}i=g;return}else if(e<<24>>24==2){if(!f){i=g;return}else b=0;while(1){h=a[d>>0]|0;j=d+2|0;a[d>>0]=a[j>>0]|0;a[j>>0]=h;b=b+1|0;if((b|0)==(f|0))break;else d=d+3|0}i=g;return}else{i=g;return}else{i=g;return}}function AE(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;l=b[e+420>>1]|0;h=d[f+9>>0]|0;if((l&65535|0)>=(1<>16==0){i=m;return}g=(ea(c[f>>2]|0,0-(d[f+11>>0]|0)|0)|0)&7;l=c[e+384>>2]|0;f=c[f+4>>2]|0;j=l+f|0;if((h|0)==8){if((f|0)<=0){i=m;return}h=e+424|0;g=c[h>>2]|0;e=j;while(1){f=d[e>>0]|0;if((f|0)>(g|0))c[h>>2]=f;else f=g;e=e+-1|0;if(e>>>0<=l>>>0)break;else g=f}i=m;return}else if((h|0)==1){if((f|0)<=0){i=m;return}e=e+424|0;f=j;while(1){if((d[f>>0]|0)>>>g)c[e>>2]=1;f=f+-1|0;if(f>>>0<=l>>>0)break;else g=0}i=m;return}else if((h|0)==4){if((f|0)<=0){i=m;return}k=e+424|0;f=c[k>>2]|0;while(1){h=a[j>>0]|0;e=(h&255)>>>g&15;if((e|0)>(f|0)){c[k>>2]=e;h=a[j>>0]|0;f=e}g=(h&255)>>>g>>>4&15;if((g|0)>(f|0)){c[k>>2]=g;f=g}j=j+-1|0;if(j>>>0<=l>>>0)break;else g=0}i=m;return}else if((h|0)==2){if((f|0)<=0){i=m;return}k=e+424|0;f=c[k>>2]|0;while(1){h=a[j>>0]|0;e=(h&255)>>>g&3;if((e|0)>(f|0)){c[k>>2]=e;h=a[j>>0]|0;f=e}e=(h&255)>>>g>>>2&3;if((e|0)>(f|0)){c[k>>2]=e;h=a[j>>0]|0;f=e}e=(h&255)>>>g>>>4&3;if((e|0)>(f|0)){c[k>>2]=e;h=a[j>>0]|0;f=e}g=(h&255)>>>g>>>6&3;if((g|0)>(f|0)){c[k>>2]=g;f=g}j=j+-1|0;if(j>>>0<=l>>>0)break;else g=0}i=m;return}else{i=m;return}}function BE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;e=c[a+180>>2]|0;if(!e)sC(a,274160);else{$d[e&255](a,b,d);i=f;return}}function CE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!a){i=e;return}if(($b(b|0,1,d|0,c[a+188>>2]|0)|0)==(d|0)){i=e;return}else sC(a,274192)}function DE(a){a=a|0;var b=0,d=0;d=i;b=c[a+472>>2]|0;if(!b){i=d;return}Id[b&511](a);i=d;return}function EE(a){a=a|0;var b=0;b=i;if(!a){i=b;return}qd(c[a+188>>2]|0)|0;i=b;return}function FE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if(!a){i=f;return}c[a+188>>2]=b;c[a+180>>2]=(d|0)==0?52:d;c[a+472>>2]=(e|0)==0?246:e;b=a+184|0;if(!(c[b>>2]|0)){i=f;return}c[b>>2]=0;vC(a,274208);i=f;return}function GE(a,f){a=a|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;if((a|0)==0|(f|0)==0){i=m;return}l=a+208|0;if(c[l>>2]&1024){i=m;return}RE(a);if((c[l>>2]&4096|0)!=0?(g=a+708|0,(c[g>>2]|0)!=0):0){vC(a,274280);c[g>>2]=0}j=f+25|0;UE(a,c[f>>2]|0,c[f+4>>2]|0,d[f+24>>0]|0,d[j>>0]|0,d[f+26>>0]|0,d[f+27>>0]|0,d[f+28>>0]|0);k=f+114|0;g=b[k>>1]|0;if((g&-32760)<<16>>16==8?(c[f+8>>2]&1|0)!=0:0){YE(a,c[f+40>>2]|0);g=b[k>>1]|0}h=f+8|0;do if(g<<16>>16>-1){n=c[h>>2]|0;g=(n&2048|0)==0;if(!(n&4096)){if(g)break;ZE(a,e[f+112>>1]|0);break}if(!g)CC(a,274336);_E(a,c[f+116>>2]|0,c[f+120>>2]|0)}while(0);if(c[h>>2]&2)aF(a,f+148|0,d[j>>0]|0);if((b[k>>1]&-32752)<<16>>16==16?(c[h>>2]&4|0)!=0:0)bF(a,f+44|0);eR(a,f,1);c[l>>2]=c[l>>2]|1024;i=m;return}function HE(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;if((f|0)==0|(g|0)==0){i=o;return}GE(f,g);m=g+8|0;j=c[m>>2]|0;if(!(j&8))if((a[g+25>>0]|0)==3)sC(f,274384);else h=j;else{VE(f,c[g+16>>2]|0,e[g+20>>1]|0);h=c[m>>2]|0}if(h&16){h=g+25|0;if(((c[f+216>>2]&524288|0)!=0?(a[h>>0]|0)==3:0)?(l=g+22|0,(b[l>>1]|0)!=0):0){j=g+156|0;k=0;do{p=(c[j>>2]|0)+k|0;a[p>>0]=d[p>>0]^255;k=k+1|0}while((k|0)<(e[l>>1]|0))}cF(f,c[g+156>>2]|0,g+160|0,e[g+22>>1]|0,d[h>>0]|0);h=c[m>>2]|0}if(h&32){dF(f,g+170|0,d[g+25>>0]|0);h=c[m>>2]|0}if(h&64){eF(f,c[g+204>>2]|0,e[g+20>>1]|0);h=c[m>>2]|0}if(h&256){iF(f,c[g+180>>2]|0,c[g+184>>2]|0,d[g+188>>0]|0);h=c[m>>2]|0}if(h&1024){jF(f,c[g+208>>2]|0,c[g+212>>2]|0,c[g+216>>2]|0,d[g+228>>0]|0,d[g+229>>0]|0,c[g+220>>2]|0,c[g+224>>2]|0);h=c[m>>2]|0}if(h&16384){kF(f,d[g+252>>0]|0,c[g+256>>2]|0,c[g+260>>2]|0);h=c[m>>2]|0}if(h&128){lF(f,c[g+192>>2]|0,c[g+196>>2]|0,d[g+200>>0]|0);h=c[m>>2]|0}if(h&512){mF(f,g+140|0);h=f+208|0;c[h>>2]=c[h>>2]|512;h=c[m>>2]|0}if((h&8192|0)!=0?(n=g+248|0,(c[n>>2]|0)>0):0){h=g+244|0;j=0;do{$E(f,(c[h>>2]|0)+(j<<4)|0);j=j+1|0}while((j|0)<(c[n>>2]|0))}k=g+128|0;if((c[k>>2]|0)>0){l=g+136|0;h=c[l>>2]|0;m=0;do{j=c[h+(m*28|0)>>2]|0;do if((j|0)>0){hF(f,j,c[h+(m*28|0)+4>>2]|0,c[h+(m*28|0)+20>>2]|0,c[h+(m*28|0)+24>>2]|0,c[h+(m*28|0)+8>>2]|0);h=c[l>>2]|0;j=h+(m*28|0)|0;if((c[j>>2]|0)==-1){c[j>>2]=-3;break}else{c[j>>2]=-2;break}}else if((j|0)==-1){fF(f,c[h+(m*28|0)+4>>2]|0,c[h+(m*28|0)+8>>2]|0,0);h=c[l>>2]|0;c[h+(m*28|0)>>2]=-3;break}else if(!j){gF(f,c[h+(m*28|0)+4>>2]|0,c[h+(m*28|0)+8>>2]|0,0);h=c[l>>2]|0;c[h+(m*28|0)>>2]=-2;break}else break;while(0);m=m+1|0}while((m|0)<(c[k>>2]|0))}eR(f,g,2);i=o;return}function IE(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;if(!a){i=l;return}g=a+208|0;if(!(c[g>>2]&4))sC(a,274432);if((c[a+424>>2]|0)>(e[a+420>>1]|0|0))zC(a,274464);if(b){if((c[b+8>>2]&512|0)!=0?(c[g>>2]&512|0)==0:0)mF(a,b+140|0);h=b+128|0;if((c[h>>2]|0)>0){j=b+136|0;d=c[j>>2]|0;k=0;do{f=c[d+(k*28|0)>>2]|0;do if((f|0)>0){hF(a,f,c[d+(k*28|0)+4>>2]|0,c[d+(k*28|0)+20>>2]|0,c[d+(k*28|0)+24>>2]|0,c[d+(k*28|0)+8>>2]|0);d=c[j>>2]|0;f=d+(k*28|0)|0;if((c[f>>2]|0)==-1){c[f>>2]=-3;break}else{c[f>>2]=-2;break}}else{if((f|0)>-1){gF(a,c[d+(k*28|0)+4>>2]|0,c[d+(k*28|0)+8>>2]|0,f);d=c[j>>2]|0;c[d+(k*28|0)>>2]=-2;break}if((f|0)==-1){fF(a,c[d+(k*28|0)+4>>2]|0,c[d+(k*28|0)+8>>2]|0,0);d=c[j>>2]|0;c[d+(k*28|0)>>2]=-3}}while(0);k=k+1|0}while((k|0)<(c[h>>2]|0))}eR(a,b,8)}c[g>>2]=c[g>>2]|8;XE(a);i=l;return}function JE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;d=PB(a,b,d,e,0,0,0)|0;if(!d){i=f;return d|0}c[d+284>>2]=8192;c[d+304>>2]=1;c[d+288>>2]=-1;c[d+300>>2]=8;c[d+296>>2]=15;c[d+292>>2]=8;c[d+324>>2]=0;c[d+308>>2]=-1;c[d+320>>2]=8;c[d+316>>2]=15;c[d+312>>2]=8;a=d+212|0;c[a>>2]=c[a>>2]|2097152;FE(d,0,0,0);i=f;return d|0}function KE(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;q=t;if(!e){i=t;return}s=e+372|0;do if((c[s>>2]|0)==0?(a[e+433>>0]|0)==0:0)if(!(c[e+208>>2]&1024))sC(e,274512);else{nF(e);break}while(0);j=e+432|0;a:do if((a[j>>0]|0)!=0?(c[e+216>>2]&2|0)!=0:0)switch(d[e+433>>0]|0){case 5:{if((c[s>>2]&1|0)==0?(c[e+348>>2]|0)>>>0>=2:0)break a;oF(e);i=t;return}case 3:{if((c[s>>2]&3|0)==0?(c[e+348>>2]|0)>>>0>=3:0)break a;oF(e);i=t;return}case 0:{if(!(c[s>>2]&7))break a;oF(e);i=t;return}case 4:{if((c[s>>2]&3|0)==2)break a;oF(e);i=t;return}case 1:{if((c[s>>2]&7|0)==0?(c[e+348>>2]|0)>>>0>=5:0)break a;oF(e);i=t;return}case 2:{if((c[s>>2]&7|0)==4)break a;oF(e);i=t;return}case 6:{if(c[s>>2]&1)break a;oF(e);i=t;return}default:break a}while(0);p=q+8|0;a[p>>0]=a[e+435>>0]|0;g=c[e+360>>2]|0;c[q>>2]=g;k=a[e+440>>0]|0;a[q+10>>0]=k;h=a[e+437>>0]|0;a[q+9>>0]=h;h=ea(k&255,h&255)|0;k=q+11|0;a[k>>0]=h;h=h&255;if(h>>>0>7)g=ea(h>>>3,g)|0;else g=((ea(h,g)|0)+7|0)>>>3;c[q+4>>2]=g;h=e+384|0;Aga((c[h>>2]|0)+1|0,f|0,g|0)|0;if((((a[j>>0]|0)!=0?(f=a[e+433>>0]|0,l=f&255,(f&255)<6):0)?(c[e+216>>2]&2|0)!=0:0)?(pF(q,(c[h>>2]|0)+1|0,l),(c[q>>2]|0)==0):0){oF(e);i=t;return}if(c[e+216>>2]|0)QE(e,q);g=a[k>>0]|0;if(g<<24>>24!=(a[e+438>>0]|0))sC(e,274568);if(g<<24>>24!=(a[e+443>>0]|0))sC(e,274568);do if(((c[e+708>>2]&4|0)!=0?(a[e+712>>0]|0)==64:0)?(o=(c[h>>2]|0)+1|0,r=c[q>>2]|0,m=b[p>>1]|0,n=m&255,(n&2)!=0):0){g=(m&65535)>>>8&255;if(g<<24>>24==16){if(n<<24>>24==6)h=8;else if(n<<24>>24==2)h=6;else break;if(!r)break;else{j=0;g=o}while(1){o=g+1|0;l=d[g+2>>0]<<8|d[g+3>>0];f=g+4|0;m=g+5|0;k=(d[g>>0]<<8|d[o>>0])-l|0;l=(d[f>>0]<<8|d[m>>0])-l|0;a[g>>0]=k>>>8;a[o>>0]=k;a[f>>0]=l>>>8;a[m>>0]=l;j=j+1|0;if((j|0)==(r|0))break;else g=g+h|0}}else if(g<<24>>24==8){if(n<<24>>24==6)h=4;else if(n<<24>>24==2)h=3;else break;if(!r)break;else{j=0;g=o}while(1){l=d[g+1>>0]|0;a[g>>0]=(d[g>>0]|0)-l;m=g+2|0;a[m>>0]=(d[m>>0]|0)-l;j=j+1|0;if((j|0)==(r|0))break;else g=g+h|0}}else break}while(0);if((a[p>>0]|0)==3?(c[e+424>>2]|0)>-1:0)AE(e,q);qF(e,q);g=c[e+548>>2]|0;if(!g){i=t;return}$d[g&255](e,c[s>>2]|0,d[e+433>>0]|0);i=t;return}function LE(a){a=a|0;var b=0;b=i;if(!a){i=b;return}if((c[a+372>>2]|0)>>>0>=(c[a+356>>2]|0)>>>0){i=b;return}WE(a,0,0,2);c[a+480>>2]=0;DE(a);i=b;return}function ME(b,d){b=b|0;d=d|0;var e=0,f=0;f=i;if(!b){i=f;return}e=c[b>>2]|0;if(!e){i=f;return}RB(e,d);c[b>>2]=0;if(c[e+212>>2]&2)aI(e+224|0)|0;TE(e,e+280|0);b=e+384|0;ZC(e,c[b>>2]|0);c[b>>2]=0;b=e+380|0;ZC(e,c[b>>2]|0);d=e+388|0;ZC(e,c[d>>2]|0);ZC(e,c[e+392>>2]|0);ZC(e,c[e+396>>2]|0);ZC(e,c[e+400>>2]|0);c[b>>2]=0;a[e+621>>0]=0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;a[e+620>>0]=1;d=e+624|0;b=c[d>>2]|0;if(b){c[d>>2]=0;ZC(e,b)}d=e+628|0;b=c[d>>2]|0;if(b){c[d>>2]=0;ZC(e,b)}d=e+632|0;b=c[d>>2]|0;if(b){c[d>>2]=0;ZC(e,b)}d=e+636|0;ZC(e,c[d>>2]|0);b=e+640|0;ZC(e,c[b>>2]|0);c[d>>2]=0;c[b>>2]=0;b=e+696|0;ZC(e,c[b>>2]|0);c[b>>2]=0;YC(e);i=f;return}function NE(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;if(!b){i=l;return}if(!(((e|0)==64?(c[b+708>>2]&4|0)!=0:0)|(e|0)==0))sC(b,274760);switch(f&255|0){case 1:{a[b+434>>0]=16;f=16;break}case 7:case 6:case 5:{DC(b,274608);g=5;break}case 4:{a[b+434>>0]=-128;f=-128;break}case 0:{g=5;break}case 2:{a[b+434>>0]=32;f=32;break}case 3:{a[b+434>>0]=64;f=64;break}default:{f=f&255;a[b+434>>0]=f}}if((g|0)==5){a[b+434>>0]=8;f=8}if(!(c[b+384>>2]|0)){i=l;return}e=b+434|0;if((f&16)!=0?(h=b+388|0,(c[h>>2]|0)==0):0){f=$C(b,(c[b+364>>2]|0)+1|0)|0;c[h>>2]=f;a[f>>0]=1;f=a[e>>0]|0}do if((f&32)!=0?(j=b+392|0,(c[j>>2]|0)==0):0)if(!(c[b+380>>2]|0)){vC(b,274640);f=(d[e>>0]|0)&223;a[e>>0]=f;break}else{f=$C(b,(c[b+364>>2]|0)+1|0)|0;c[j>>2]=f;a[f>>0]=2;f=a[e>>0]|0;break}while(0);do if((f&64)!=0?(k=b+396|0,(c[k>>2]|0)==0):0)if(!(c[b+380>>2]|0)){vC(b,274680);f=(d[e>>0]|0)&191;a[e>>0]=f;break}else{f=$C(b,(c[b+364>>2]|0)+1|0)|0;c[k>>2]=f;a[f>>0]=3;f=a[e>>0]|0;break}while(0);do if(f<<24>>24<0){f=b+400|0;if(c[f>>2]|0){i=l;return}if(!(c[b+380>>2]|0)){vC(b,274720);f=(d[e>>0]|0)&127;a[e>>0]=f;break}else{b=$C(b,(c[b+364>>2]|0)+1|0)|0;c[f>>2]=b;a[b>>0]=4;f=a[e>>0]|0;break}}while(0);if(f<<24>>24){i=l;return}a[e>>0]=8;i=l;return}function OE(a,b){a=a|0;b=b|0;if(a)c[a+288>>2]=b;return}function PE(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;if(!a){i=d;return}e=a+212|0;c[e>>2]=c[e>>2]|1;c[a+304>>2]=b;i=d;return}function QE(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+32|0;t=v+16|0;s=v;if(!b){i=v;return}u=b+216|0;f=c[u>>2]|0;if((f&1048576|0)!=0?(j=c[b+196>>2]|0,(j|0)!=0):0){$d[j&255](b,e,(c[b+384>>2]|0)+1|0);f=c[u>>2]|0}if(f&32768){yE(e,(c[b+384>>2]|0)+1|0,(c[b+212>>2]|0)>>>7&1^1);f=c[u>>2]|0}if(f&65536){xE(e,(c[b+384>>2]|0)+1|0);f=c[u>>2]|0}if(((f&4|0)!=0?(g=(c[b+384>>2]|0)+1|0,l=a[b+436>>0]|0,k=l&255,p=e+9|0,(a[p>>0]|0)==8):0)?(q=e+10|0,(a[q>>0]|0)==1):0){if((k|0)==4){h=c[e>>2]|0;if(h){n=g;o=0;j=4;f=0;while(1){f=(d[g>>0]&15)<>0]=f;n=n+1|0;j=4;f=0}else j=j+-4|0;o=o+1|0;if((o|0)==(h|0))break;else g=g+1|0}if((j|0)!=4){a[n>>0]=f;f=e}else f=e}else f=e}else if((k|0)==2){h=c[e>>2]|0;if(h){n=g;o=0;j=6;f=0;while(1){f=(d[g>>0]&3)<>0]=f;n=n+1|0;j=6;f=0}else j=j+-2|0;o=o+1|0;if((o|0)==(h|0))break;else g=g+1|0}if((j|0)!=6){a[n>>0]=f;f=e}else f=e}else f=e}else if((k|0)==1?(o=c[e>>2]|0,(o|0)!=0):0){n=g;h=0;j=128;f=0;while(1){f=((a[g>>0]|0)==0?0:j)|f;if((j|0)>1)j=j>>1;else{a[n>>0]=f;n=n+1|0;j=128;f=0}h=h+1|0;if((h|0)==(o|0))break;else g=g+1|0}if((j|0)!=128){a[n>>0]=f;f=e}else f=e}else f=e;a[p>>0]=l;g=ea(d[q>>0]|0,k)|0;a[e+11>>0]=g;g=g&255;f=c[f>>2]|0;if(g>>>0>7)f=ea(g>>>3,f)|0;else f=((ea(g,f)|0)+7|0)>>>3;c[e+4>>2]=f;f=c[u>>2]|0}if(f&16){wE(e,(c[b+384>>2]|0)+1|0);f=c[u>>2]|0}a:do if((f&8|0)!=0?(m=(c[b+384>>2]|0)+1|0,r=a[e+8>>0]|0,r<<24>>24!=3):0){j=a[e+9>>0]|0;f=j&255;if(!(r&2)){g=d[b+524>>0]|0;c[t>>2]=f-g;c[s>>2]=g;g=1}else{g=d[b+521>>0]|0;c[t>>2]=f-g;c[s>>2]=g;g=d[b+522>>0]|0;c[t+4>>2]=f-g;c[s+4>>2]=g;g=d[b+523>>0]|0;c[t+8>>2]=f-g;c[s+8>>2]=g;g=3}if(r&4){r=d[b+525>>0]|0;c[t+(g<<2)>>2]=f-r;c[s+(g<<2)>>2]=r;g=g+1|0}if((j&255)<8){p=c[e+4>>2]|0;f=a[b+524>>0]|0;if(f<<24>>24==1&j<<24>>24==2)o=85;else o=j<<24>>24==4&f<<24>>24==3?17:255;if(!p)break;n=0;while(1){h=d[m>>0]|0;f=c[t>>2]|0;k=c[s>>2]|0;l=0-k|0;if((f|0)>(l|0)){g=0;do{if((f|0)>0)j=h<>>(0-f|0)&o;g=j|g;f=f-k|0}while((f|0)>(l|0));f=g&255}else f=0;a[m>>0]=f;n=n+1|0;if((n|0)==(p|0))break a;else m=m+1|0}}q=ea(c[e>>2]|0,g)|0;f=(q|0)==0;if(j<<24>>24!=8){if(f)break;else p=0;while(1){o=(p>>>0)%(g>>>0)|0;k=m+1|0;h=d[m>>0]<<8|d[k>>0];f=c[t+(o<<2)>>2]|0;o=c[s+(o<<2)>>2]|0;l=0-o|0;if((f|0)>(l|0)){n=f;f=0;do{if((n|0)>0)j=h<>>(0-n|0);f=j|f;n=n-o|0}while((n|0)>(l|0))}else f=0;a[m>>0]=f>>>8;a[k>>0]=f;p=p+1|0;if((p|0)==(q|0))break a;else m=m+2|0}}if(!f){n=m;o=0;while(1){k=(o>>>0)%(g>>>0)|0;l=d[n>>0]|0;f=c[t+(k<<2)>>2]|0;k=c[s+(k<<2)>>2]|0;m=0-k|0;if((f|0)>(m|0)){h=0;do{if((f|0)>0)j=l<>>(0-f|0);h=j|h;f=f-k|0}while((f|0)>(m|0));f=h&255}else f=0;a[n>>0]=f;o=o+1|0;if((o|0)==(q|0))break;else n=n+1|0}}}while(0);do if(c[u>>2]&131072){j=(c[b+384>>2]|0)+1|0;f=a[e+8>>0]|0;if(f<<24>>24==4){h=c[e>>2]|0;f=(h|0)==0;if((a[e+9>>0]|0)==8){if(f)break;else{f=j;g=0}while(1){t=f+1|0;s=a[f>>0]|0;a[f>>0]=a[t>>0]|0;a[t>>0]=s;g=g+1|0;if((g|0)==(h|0))break;else f=f+2|0}}else{if(f)break;else{f=j;g=0}while(1){p=f+1|0;q=a[f>>0]|0;r=f+2|0;s=a[p>>0]|0;t=f+3|0;a[f>>0]=a[r>>0]|0;a[p>>0]=a[t>>0]|0;a[r>>0]=q;a[t>>0]=s;g=g+1|0;if((g|0)==(h|0))break;else f=f+4|0}}}else if(f<<24>>24==6){h=c[e>>2]|0;f=(h|0)==0;if((a[e+9>>0]|0)==8){if(f)break;else{g=0;f=j}while(1){q=f+1|0;s=a[f>>0]|0;r=f+2|0;a[f>>0]=a[q>>0]|0;t=f+3|0;a[q>>0]=a[r>>0]|0;a[r>>0]=a[t>>0]|0;a[t>>0]=s;g=g+1|0;if((g|0)==(h|0))break;else f=f+4|0}}else{if(f)break;else{g=0;f=j}while(1){p=f+1|0;q=a[f>>0]|0;r=f+2|0;s=a[p>>0]|0;t=f+3|0;a[f>>0]=a[r>>0]|0;m=f+4|0;a[p>>0]=a[t>>0]|0;p=f+5|0;a[r>>0]=a[m>>0]|0;r=f+6|0;a[t>>0]=a[p>>0]|0;t=f+7|0;a[m>>0]=a[r>>0]|0;a[p>>0]=a[t>>0]|0;a[r>>0]=q;a[t>>0]=s;g=g+1|0;if((g|0)==(h|0))break;else f=f+8|0}}}else break}while(0);do if(c[u>>2]&524288){j=(c[b+384>>2]|0)+1|0;f=a[e+8>>0]|0;if(f<<24>>24==6){h=c[e>>2]|0;f=(h|0)==0;if((a[e+9>>0]|0)==8){if(f)break;else{g=0;f=j}while(1){t=f+3|0;a[t>>0]=d[t>>0]^255;g=g+1|0;if((g|0)==(h|0))break;else f=f+4|0}}else{if(f)break;else{g=0;f=j}while(1){s=f+6|0;t=f+7|0;a[s>>0]=d[s>>0]^255;a[t>>0]=d[t>>0]^255;g=g+1|0;if((g|0)==(h|0))break;else f=f+8|0}}}else if(f<<24>>24==4){h=c[e>>2]|0;f=(h|0)==0;if((a[e+9>>0]|0)==8){if(f)break;else{f=j;g=0}while(1){t=f+1|0;a[t>>0]=d[t>>0]^255;g=g+1|0;if((g|0)==(h|0))break;else f=f+2|0}}else{if(f)break;else{g=0;f=j}while(1){s=f+2|0;t=f+3|0;a[s>>0]=d[s>>0]^255;a[t>>0]=d[t>>0]^255;g=g+1|0;if((g|0)==(h|0))break;else f=f+4|0}}}else break}while(0);f=c[u>>2]|0;if(f&1){zE(e,(c[b+384>>2]|0)+1|0);f=c[u>>2]|0}if(!(f&32)){i=v;return}vE(e,(c[b+384>>2]|0)+1|0);i=v;return}function RE(a){a=a|0;var b=0,e=0,f=0,g=0;b=i;i=i+16|0;g=b;e=g;c[e>>2]=1196314761;c[e+4>>2]=169478669;c[a+800>>2]=18;e=a+441|0;f=d[e>>0]|0;BE(a,g+f|0,8-f|0);if((d[e>>0]|0)>=3){i=b;return}g=a+208|0;c[g>>2]=c[g>>2]|4096;i=b;return}function SE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+16|0;l=m;h=a[d>>0]|0;j=a[d+1>>0]|0;k=a[d+2>>0]|0;d=a[d+3>>0]|0;if(!b){i=m;return}if((f|0)<0)sC(b,276672);g=b+800|0;c[g>>2]=34;a[l>>0]=f>>>24;a[l+1>>0]=f>>>16;a[l+2>>0]=f>>>8;a[l+3>>0]=f;n=l+4|0;a[n>>0]=h;a[l+5>>0]=j;a[l+6>>0]=k;a[l+7>>0]=d;BE(b,l,8);c[b+376>>2]=(j&255)<<16|(h&255)<<24|(k&255)<<8|d&255;MB(b);NB(b,n,4);c[g>>2]=66;if((e|0)!=0&(f|0)!=0){BE(b,e,f);NB(b,e,f)}c[g>>2]=130;n=c[b+412>>2]|0;a[l>>0]=n>>>24;a[l+1>>0]=n>>>16;a[l+2>>0]=n>>>8;a[l+3>>0]=n;BE(b,l,4);i=m;return}function TE(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;d=c[b>>2]|0;if(!d){i=e;return}c[b>>2]=0;do{b=d;d=c[d>>2]|0;ZC(a,b)}while((d|0)!=0);i=e;return}function UE(b,e,f,g,h,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;r=s+16|0;q=s;a:do switch(h|0){case 6:{if((g|0)==8|(g|0)==16){a[b+439>>0]=4;break a}else sC(b,274992);break}case 4:{if((g|0)==8|(g|0)==16){a[b+439>>0]=2;break a}else sC(b,274944);break}case 0:{switch(g|0){case 16:case 8:case 4:case 2:case 1:{a[b+439>>0]=1;break a}default:sC(b,274832)}break}case 3:{if((g|0)==8|(g|0)==4|(g|0)==2|(g|0)==1){a[b+439>>0]=1;break a}else sC(b,274904);break}case 2:{if((g|0)==8|(g|0)==16){a[b+439>>0]=3;break a}else sC(b,274872);break}default:sC(b,275032)}while(0);if(j)vC(b,275072);if((c[b+708>>2]&4|0)!=0?(c[b+208>>2]&4096|0)==0:0){if(((k|0)!=64|(h&-5|0)!=2)&(k|0)!=0)m=24}else if(!k)k=0;else m=24;if((m|0)==24){vC(b,275112);k=0}if(l>>>0>1){vC(b,275144);l=1}n=g&255;p=b+436|0;a[p>>0]=n;h=h&255;o=b+435|0;a[o>>0]=h;l=l&255;a[b+432>>0]=l;m=k&255;a[b+712>>0]=m;a[b+744>>0]=0;c[b+348>>2]=e;c[b+352>>2]=f;k=a[b+439>>0]|0;j=ea(k&255,g)|0;a[b+438>>0]=j;j=j&255;if(j>>>0>7)j=ea(j>>>3,e)|0;else j=((ea(j,e)|0)+7|0)>>>3;c[b+364>>2]=j;c[b+360>>2]=e;a[b+437>>0]=n;a[b+440>>0]=k;a[q>>0]=e>>>24;a[q+1>>0]=e>>>16;a[q+2>>0]=e>>>8;a[q+3>>0]=e;a[q+4>>0]=f>>>24;a[q+5>>0]=f>>>16;a[q+6>>0]=f>>>8;a[q+7>>0]=f;a[q+8>>0]=n;a[q+9>>0]=h;a[q+10>>0]=0;a[q+11>>0]=m;a[q+12>>0]=l;if(b){e=b+800|0;c[e>>2]=34;a[r>>0]=0;a[r+1>>0]=0;a[r+2>>0]=0;a[r+3>>0]=13;f=r+4|0;a[f>>0]=73;a[r+5>>0]=72;a[r+6>>0]=68;a[r+7>>0]=82;BE(b,r,8);c[b+376>>2]=1229472850;MB(b);NB(b,f,4);c[e>>2]=66;BE(b,q,13);NB(b,q,13);c[e>>2]=130;e=c[b+412>>2]|0;a[r>>0]=e>>>24;a[r+1>>0]=e>>>16;a[r+2>>0]=e>>>8;a[r+3>>0]=e;BE(b,r,4)}j=b+434|0;if(a[j>>0]|0){b=b+208|0;c[b>>2]=1;i=s;return}if((a[o>>0]|0)!=3?(d[p>>0]|0)>=8:0){a[j>>0]=-8;b=b+208|0;c[b>>2]=1;i=s;return}a[j>>0]=8;b=b+208|0;c[b>>2]=1;i=s;return}function VE(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;n=o+12|0;h=o;m=o+8|0;g=a[d+435>>0]|0;if(f>>>0>256?1:(c[d+708>>2]&1|f|0)==0){if(g<<24>>24==3)sC(d,275184);vC(d,275184);i=o;return}if(!(g&2)){vC(d,275224);i=o;return}b[d+420>>1]=f;g=f*3|0;l=(d|0)==0;if(!l){j=d+800|0;c[j>>2]=34;a[h>>0]=g>>>24;a[h+1>>0]=g>>>16;a[h+2>>0]=g>>>8;a[h+3>>0]=g;k=h+4|0;a[k>>0]=80;a[h+5>>0]=76;a[h+6>>0]=84;a[h+7>>0]=69;BE(d,h,8);c[d+376>>2]=1347179589;MB(d);NB(d,k,4);c[j>>2]=66}if(f){j=m+1|0;k=m+2|0;if(l){h=0;g=e;while(1){a[m>>0]=a[g>>0]|0;a[j>>0]=a[g+1>>0]|0;a[k>>0]=a[g+2>>0]|0;h=h+1|0;if((h|0)==(f|0))break;else g=g+3|0}}else{h=0;g=e;while(1){a[m>>0]=a[g>>0]|0;a[j>>0]=a[g+1>>0]|0;a[k>>0]=a[g+2>>0]|0;BE(d,m,3);NB(d,m,3);h=h+1|0;if((h|0)==(f|0))break;else g=g+3|0}}}if(!l){c[d+800>>2]=130;m=c[d+412>>2]|0;a[n>>0]=m>>>24;a[n+1>>0]=m>>>16;a[n+2>>0]=m>>>8;a[n+3>>0]=m;BE(d,n,4)}d=d+208|0;c[d>>2]=c[d>>2]|2;i=o;return}function WE(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;V=i;i=i+16|0;U=V+8|0;H=V;S=b+220|0;do if((c[S>>2]|0)!=1229209940){m=b+280|0;l=c[m>>2]|0;if(l){k=c[l>>2]|0;if(k){c[l>>2]=0;do{L=k;k=c[k>>2]|0;ZC(b,L)}while((k|0)!=0)}}else{L=$C(b,(c[b+284>>2]|0)+4|0)|0;c[m>>2]=L;c[L>>2]=0}if(!(gR(b,1229209940,fR(b)|0)|0)){Q=b+236|0;c[Q>>2]=(c[m>>2]|0)+4;O=b+284|0;R=b+240|0;c[R>>2]=c[O>>2];I=m;break}else sC(b,c[b+248>>2]|0)}else{I=b+280|0;O=b+284|0;Q=b+236|0;R=b+240|0}while(0);B=b+224|0;c[B>>2]=e;o=b+228|0;c[o>>2]=0;J=b+208|0;C=b+744|0;K=(b|0)==0;p=(g|0)!=0;L=b+800|0;q=U+1|0;r=U+2|0;s=U+3|0;t=U+4|0;u=U+5|0;v=U+6|0;w=U+7|0;M=b+376|0;N=b+412|0;x=H+1|0;y=H+2|0;z=H+3|0;while(1){c[o>>2]=f;A=eI(B,g)|0;f=c[o>>2]|0;c[o>>2]=0;l=c[R>>2]|0;if(!l){l=c[I>>2]|0;k=l+4|0;m=c[O>>2]|0;if(((((c[J>>2]&4|0)==0?(a[C>>0]|0)==0:0)?(D=fR(b)|0,D>>>0<16385):0)?(E=d[k>>0]|0,(E&15|0)==8&(E&240)>>>0<113):0)?(F=E>>>4,G=1<>>0>=D>>>0):0){e=G;n=F;do{e=e>>>1;n=n+-1|0}while(!((n|0)==0|e>>>0>>0));n=n<<4|8;a[k>>0]=n;e=l+5|0;l=d[e>>0]&224;a[e>>0]=(l|(((l|n<<8)>>>0)%31|0))^31}if(!K){if((m|0)<0){k=22;break}c[L>>2]=34;a[U>>0]=m>>>24;a[q>>0]=m>>>16;a[r>>0]=m>>>8;a[s>>0]=m;a[t>>0]=73;a[u>>0]=68;a[v>>0]=65;a[w>>0]=84;BE(b,U,8);c[M>>2]=1229209940;MB(b);NB(b,t,4);c[L>>2]=66;if(m){BE(b,k,m);NB(b,k,m)}c[L>>2]=130;e=c[N>>2]|0;a[H>>0]=e>>>24;a[x>>0]=e>>>16;a[y>>0]=e>>>8;a[z>>0]=e;BE(b,H,4)}c[J>>2]=c[J>>2]|4;c[Q>>2]=k;c[R>>2]=m;if((A|0)==0&p)continue;else n=m}else n=l;if(A){k=31;break}if(!f){k=29;break}}if((k|0)==22)sC(b,276672);else if((k|0)==29)if((g|0)==4)sC(b,275280);else{i=V;return}else if((k|0)==31){if(!((A|0)==1&(g|0)==4)){XB(b,A);sC(b,c[b+248>>2]|0)}e=c[I>>2]|0;m=e+4|0;k=c[O>>2]|0;l=k-n|0;if(((((c[J>>2]&4|0)==0?(a[C>>0]|0)==0:0)?(T=fR(b)|0,T>>>0<16385):0)?(P=d[m>>0]|0,(P&15|0)==8&(P&240)>>>0<113):0)?(h=P>>>4,j=1<>>0>=T>>>0):0){do{j=j>>>1;h=h+-1|0}while(!((h|0)==0|j>>>0>>0));O=h<<4|8;a[m>>0]=O;P=e+5|0;g=d[P>>0]&224;a[P>>0]=(g|(((g|O<<8)>>>0)%31|0))^31}if(!K){if((l|0)<0)sC(b,276672);c[L>>2]=34;a[U>>0]=l>>>24;a[U+1>>0]=l>>>16;a[U+2>>0]=l>>>8;a[U+3>>0]=l;P=U+4|0;a[P>>0]=73;a[U+5>>0]=68;a[U+6>>0]=65;a[U+7>>0]=84;BE(b,U,8);c[M>>2]=1229209940;MB(b);NB(b,P,4);c[L>>2]=66;if((k|0)!=(n|0)){BE(b,m,l);NB(b,m,l)}c[L>>2]=130;P=c[N>>2]|0;a[U>>0]=P>>>24;a[U+1>>0]=P>>>16;a[U+2>>0]=P>>>8;a[U+3>>0]=P;BE(b,U,4)}c[R>>2]=0;c[Q>>2]=0;c[J>>2]=c[J>>2]|12;c[S>>2]=0;i=V;return}}function XE(b){b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;d=e;if(!b){b=b+208|0;d=c[b>>2]|0;d=d|16;c[b>>2]=d;i=e;return}f=b+800|0;c[f>>2]=34;g=d+4|0;c[d>>2]=0;a[g>>0]=73;a[d+5>>0]=69;a[d+6>>0]=78;a[d+7>>0]=68;BE(b,d,8);c[b+376>>2]=1229278788;MB(b);NB(b,g,4);c[f>>2]=130;f=c[b+412>>2]|0;a[d>>0]=f>>>24;a[d+1>>0]=f>>>16;a[d+2>>0]=f>>>8;a[d+3>>0]=f;BE(b,d,4);b=b+208|0;d=c[b>>2]|0;d=d|16;c[b>>2]=d;i=e;return}function YE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;f=g+8|0;e=g;a[e>>0]=d>>>24;a[e+1>>0]=d>>>16;a[e+2>>0]=d>>>8;a[e+3>>0]=d;if(!b){i=g;return}d=b+800|0;c[d>>2]=34;a[f>>0]=0;a[f+1>>0]=0;a[f+2>>0]=0;a[f+3>>0]=4;h=f+4|0;a[h>>0]=103;a[f+5>>0]=65;a[f+6>>0]=77;a[f+7>>0]=65;BE(b,f,8);c[b+376>>2]=1732332865;MB(b);NB(b,h,4);c[d>>2]=66;BE(b,e,4);NB(b,e,4);c[d>>2]=130;d=c[b+412>>2]|0;a[f>>0]=d>>>24;a[f+1>>0]=d>>>16;a[f+2>>0]=d>>>8;a[f+3>>0]=d;BE(b,f,4);i=g;return}function ZE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;f=g+8|0;e=g;if((d|0)>3)vC(b,275320);a[e>>0]=d;if(!b){i=g;return}d=b+800|0;c[d>>2]=34;a[f>>0]=0;a[f+1>>0]=0;a[f+2>>0]=0;a[f+3>>0]=1;h=f+4|0;a[h>>0]=115;a[f+5>>0]=82;a[f+6>>0]=71;a[f+7>>0]=66;BE(b,f,8);c[b+376>>2]=1934772034;MB(b);NB(b,h,4);c[d>>2]=66;BE(b,e,1);NB(b,e,1);c[d>>2]=130;d=c[b+412>>2]|0;a[f>>0]=d>>>24;a[f+1>>0]=d>>>16;a[f+2>>0]=d>>>8;a[f+3>>0]=d;BE(b,f,4);i=g;return}function _E(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+1136|0;m=q+1128|0;p=q+1120|0;k=q+1036|0;o=q;if(!f)sC(b,275360);g=d[f+3>>0]|0;h=(d[f+1>>0]|0)<<16|(d[f>>0]|0)<<24|(d[f+2>>0]|0)<<8|g;if(h>>>0<132)sC(b,275392);if(!((d[f+8>>0]|0)<4|(g&3|0)==0))sC(b,275416);g=hR(b,e,k)|0;if(!g)sC(b,275472);a[k+(g+1)>>0]=0;e=g+2|0;c[o>>2]=f;c[o+4>>2]=h;f=o+8|0;c[f>>2]=0;if(iR(b,1766015824,o,e)|0)sC(b,c[b+248>>2]|0);g=(c[f>>2]|0)+e|0;n=(b|0)==0;if(!n){l=b+800|0;c[l>>2]=34;a[m>>0]=g>>>24;a[m+1>>0]=g>>>16;a[m+2>>0]=g>>>8;a[m+3>>0]=g;j=m+4|0;a[j>>0]=105;a[m+5>>0]=67;a[m+6>>0]=67;a[m+7>>0]=80;BE(b,m,8);c[b+376>>2]=1766015824;MB(b);NB(b,j,4);c[l>>2]=66;if(!e)m=1;else{BE(b,k,e);NB(b,k,e);m=1}}else m=0;l=b+284|0;j=1024;k=b+280|0;g=o+12|0;h=c[f>>2]|0;while(1){f=c[k>>2]|0;e=j>>>0>h>>>0?h:j;if(m&(e|0)!=0){BE(b,g,e);NB(b,g,e)}g=(h|0)==(e|0);if(g|(f|0)==0)break;j=c[l>>2]|0;k=f;g=f+4|0;h=h-e|0}if(!g)sC(b,276456);if(n){i=q;return}c[b+800>>2]=130;o=c[b+412>>2]|0;a[p>>0]=o>>>24;a[p+1>>0]=o>>>16;a[p+2>>0]=o>>>8;a[p+3>>0]=o;BE(b,p,4);i=q;return}function $E(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+112|0;y=A+100|0;h=A;j=A+8|0;z=A+88|0;v=e+4|0;w=(a[v>>0]|0)==8?6:10;x=e+12|0;f=c[x>>2]|0;g=hR(d,c[e>>2]|0,j)|0;if(!g)sC(d,275496);f=g+2+(ea(w,f)|0)|0;u=(d|0)==0;if(u)t=0;else{t=d+800|0;c[t>>2]=34;a[h>>0]=f>>>24;a[h+1>>0]=f>>>16;a[h+2>>0]=f>>>8;a[h+3>>0]=f;f=h+4|0;a[f>>0]=115;a[h+5>>0]=80;a[h+6>>0]=76;a[h+7>>0]=84;BE(d,h,8);c[d+376>>2]=1934642260;MB(d);NB(d,f,4);c[t>>2]=66;f=g+1|0;if(f){BE(d,j,f);NB(d,j,f)}BE(d,v,1);NB(d,v,1);t=1}e=e+8|0;f=c[x>>2]|0;if((f|0)>0){h=c[e>>2]|0;k=z+1|0;l=z+2|0;m=z+3|0;n=z+4|0;o=z+5|0;p=z+6|0;q=z+7|0;r=z+8|0;s=z+9|0;j=h;do{g=b[h>>1]|0;if((a[v>>0]|0)==8){a[z>>0]=g;a[k>>0]=b[h+2>>1];a[l>>0]=b[h+4>>1];a[m>>0]=b[h+6>>1];g=b[h+8>>1]|0;a[n>>0]=(g&65535)>>>8;a[o>>0]=g}else{a[z>>0]=(g&65535)>>>8;a[k>>0]=g;g=b[h+2>>1]|0;a[l>>0]=(g&65535)>>>8;a[m>>0]=g;g=b[h+4>>1]|0;a[n>>0]=(g&65535)>>>8;a[o>>0]=g;g=b[h+6>>1]|0;a[p>>0]=(g&65535)>>>8;a[q>>0]=g;g=b[h+8>>1]|0;a[r>>0]=(g&65535)>>>8;a[s>>0]=g}if(t){BE(d,z,w);NB(d,z,w);j=c[e>>2]|0;f=c[x>>2]|0}h=h+10|0}while(h>>>0<(j+(f*10|0)|0)>>>0)}if(u){i=A;return}c[d+800>>2]=130;z=c[d+412>>2]|0;a[y>>0]=z>>>24;a[y+1>>0]=z>>>16;a[y+2>>0]=z>>>8;a[y+3>>0]=z;BE(d,y,4);i=A;return}function aF(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n+8|0;l=n;do if(!(f&2)){g=a[e+3>>0]|0;if(g<<24>>24!=0?(g&255)<=(d[b+437>>0]|0):0){a[l>>0]=g;g=1;break}vC(b,275520);i=n;return}else{if((f|0)==3)k=8;else k=a[b+437>>0]|0;j=a[e>>0]|0;if(((j+-1<<24>>24&255)<(k&255)?(g=a[e+1>>0]|0,(g+-1<<24>>24&255)<(k&255)):0)?(h=a[e+2>>0]|0,(h+-1<<24>>24&255)<(k&255)):0){a[l>>0]=j;a[l+1>>0]=g;a[l+2>>0]=h;g=3;break}vC(b,275520);i=n;return}while(0);do if(f&4){h=a[e+4>>0]|0;if(h<<24>>24!=0?(h&255)<=(d[b+437>>0]|0):0){a[l+g>>0]=h;g=g+1|0;break}vC(b,275520);i=n;return}while(0);if(!b){i=n;return}if((g|0)<0)sC(b,276672);f=b+800|0;c[f>>2]=34;a[m>>0]=g>>>24;a[m+1>>0]=g>>>16;a[m+2>>0]=g>>>8;a[m+3>>0]=g;e=m+4|0;a[e>>0]=115;a[m+5>>0]=66;a[m+6>>0]=73;a[m+7>>0]=84;BE(b,m,8);c[b+376>>2]=1933723988;MB(b);NB(b,e,4);c[f>>2]=66;BE(b,l,g);NB(b,l,g);c[f>>2]=130;l=c[b+412>>2]|0;a[m>>0]=l>>>24;a[m+1>>0]=l>>>16;a[m+2>>0]=l>>>8;a[m+3>>0]=l;BE(b,m,4);i=n;return}function bF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+48|0;f=g+32|0;e=g;UB(e,c[d+24>>2]|0);UB(e+4|0,c[d+28>>2]|0);UB(e+8|0,c[d>>2]|0);UB(e+12|0,c[d+4>>2]|0);UB(e+16|0,c[d+8>>2]|0);UB(e+20|0,c[d+12>>2]|0);UB(e+24|0,c[d+16>>2]|0);UB(e+28|0,c[d+20>>2]|0);if(!b){i=g;return}d=b+800|0;c[d>>2]=34;a[f>>0]=0;a[f+1>>0]=0;a[f+2>>0]=0;a[f+3>>0]=32;h=f+4|0;a[h>>0]=99;a[f+5>>0]=72;a[f+6>>0]=82;a[f+7>>0]=77;BE(b,f,8);c[b+376>>2]=1665684045;MB(b);NB(b,h,4);c[d>>2]=66;BE(b,e,32);NB(b,e,32);c[d>>2]=130;d=c[b+412>>2]|0;a[f>>0]=d>>>24;a[f+1>>0]=d>>>16;a[f+2>>0]=d>>>8;a[f+3>>0]=d;BE(b,f,4);i=g;return}function cF(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0;o=i;i=i+32|0;n=o+16|0;l=o;m=o+8|0;if((k|0)==3){if((j|0)>=1?(e[f+420>>1]|0)>=(j|0):0){if(!f){i=o;return}if((j|0)<0)sC(f,276672);k=f+800|0;c[k>>2]=34;a[n>>0]=j>>>24;a[n+1>>0]=j>>>16;a[n+2>>0]=j>>>8;a[n+3>>0]=j;l=n+4|0;a[l>>0]=116;a[n+5>>0]=82;a[n+6>>0]=78;a[n+7>>0]=83;BE(f,n,8);c[f+376>>2]=1951551059;MB(f);NB(f,l,4);c[k>>2]=66;if((g|0)!=0&(j|0)!=0){BE(f,g,j);NB(f,g,j)}c[k>>2]=130;l=c[f+412>>2]|0;a[n>>0]=l>>>24;a[n+1>>0]=l>>>16;a[n+2>>0]=l>>>8;a[n+3>>0]=l;BE(f,n,4);i=o;return}CC(f,275552);i=o;return}else if((k|0)==2){k=b[h+2>>1]|0;j=(k&65535)>>>8;a[m>>0]=j;a[m+1>>0]=k;k=b[h+4>>1]|0;g=(k&65535)>>>8;a[m+2>>0]=g;a[m+3>>0]=k;h=b[h+6>>1]|0;k=(h&65535)>>>8;a[m+4>>0]=k;a[m+5>>0]=h;do if((a[f+436>>0]|0)==8){if((g|j|k)<<16>>16){CC(f,275664);i=o;return}if(!f){i=o;return}else break}while(0);g=f+800|0;c[g>>2]=34;a[l>>0]=0;a[l+1>>0]=0;a[l+2>>0]=0;a[l+3>>0]=6;j=l+4|0;a[j>>0]=116;a[l+5>>0]=82;a[l+6>>0]=78;a[l+7>>0]=83;BE(f,l,8);c[f+376>>2]=1951551059;MB(f);NB(f,j,4);c[g>>2]=66;BE(f,m,6);NB(f,m,6);c[g>>2]=130;l=c[f+412>>2]|0;a[n>>0]=l>>>24;a[n+1>>0]=l>>>16;a[n+2>>0]=l>>>8;a[n+3>>0]=l;BE(f,n,4);i=o;return}else if(!k){k=b[h+8>>1]|0;if((k&65535|0)<(1<>0]|0)){a[m>>0]=(k&65535)>>>8;a[m+1>>0]=k;l=f+800|0;c[l>>2]=34;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=2;g=n+4|0;a[g>>0]=116;a[n+5>>0]=82;a[n+6>>0]=78;a[n+7>>0]=83;BE(f,n,8);c[f+376>>2]=1951551059;MB(f);NB(f,g,4);c[l>>2]=66;BE(f,m,2);NB(f,m,2);c[l>>2]=130;l=c[f+412>>2]|0;a[n>>0]=l>>>24;a[n+1>>0]=l>>>16;a[n+2>>0]=l>>>8;a[n+3>>0]=l;BE(f,n,4);i=o;return}else{CC(f,275600);i=o;return}}else{CC(f,275728);i=o;return}}function dF(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;k=l+8|0;j=l;if((g|0)==3){h=b[e+420>>1]|0;if(h<<16>>16==0?(c[e+708>>2]&1|0)!=0:0)g=a[f>>0]|0;else{g=a[f>>0]|0;if((g&255)>>>0>=(h&65535)>>>0){vC(e,275768);i=l;return}}a[j>>0]=g;if(!e){i=l;return}f=e+800|0;c[f>>2]=34;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=1;h=k+4|0;a[h>>0]=98;a[k+5>>0]=75;a[k+6>>0]=71;a[k+7>>0]=68;BE(e,k,8);c[e+376>>2]=1649100612;MB(e);NB(e,h,4);c[f>>2]=66;BE(e,j,1);NB(e,j,1);c[f>>2]=130;f=c[e+412>>2]|0;a[k>>0]=f>>>24;a[k+1>>0]=f>>>16;a[k+2>>0]=f>>>8;a[k+3>>0]=f;BE(e,k,4);i=l;return}if(!(g&2)){g=b[f+8>>1]|0;if((g&65535|0)<(1<>0]|0)){a[j>>0]=(g&65535)>>>8;a[j+1>>0]=g;f=e+800|0;c[f>>2]=34;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=2;h=k+4|0;a[h>>0]=98;a[k+5>>0]=75;a[k+6>>0]=71;a[k+7>>0]=68;BE(e,k,8);c[e+376>>2]=1649100612;MB(e);NB(e,h,4);c[f>>2]=66;BE(e,j,2);NB(e,j,2);c[f>>2]=130;f=c[e+412>>2]|0;a[k>>0]=f>>>24;a[k+1>>0]=f>>>16;a[k+2>>0]=f>>>8;a[k+3>>0]=f;BE(e,k,4);i=l;return}else{vC(e,275872);i=l;return}}m=b[f+2>>1]|0;h=(m&65535)>>>8;a[j>>0]=h;a[j+1>>0]=m;m=b[f+4>>1]|0;g=(m&65535)>>>8;a[j+2>>0]=g;a[j+3>>0]=m;m=b[f+6>>1]|0;f=(m&65535)>>>8;a[j+4>>0]=f;a[j+5>>0]=m;if((a[e+436>>0]|0)==8?(g|h|f)<<16>>16!=0:0){vC(e,275808);i=l;return}if(!e){i=l;return}f=e+800|0;c[f>>2]=34;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=6;m=k+4|0;a[m>>0]=98;a[k+5>>0]=75;a[k+6>>0]=71;a[k+7>>0]=68;BE(e,k,8);c[e+376>>2]=1649100612;MB(e);NB(e,m,4);c[f>>2]=66;BE(e,j,6);NB(e,j,6);c[f>>2]=130;f=c[e+412>>2]|0;a[k>>0]=f>>>24;a[k+1>>0]=f>>>16;a[k+2>>0]=f>>>8;a[k+3>>0]=f;BE(e,k,4);i=l;return}function eF(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+16|0;m=o+8|0;l=o;if((e[d+420>>1]|0|0)<(g|0)){vC(d,275936);i=o;return}k=d+800|0;c[k>>2]=34;a[m>>0]=g>>>23;a[m+1>>0]=g>>>15;a[m+2>>0]=g>>>7;a[m+3>>0]=g<<1;n=m+4|0;a[n>>0]=104;a[m+5>>0]=73;a[m+6>>0]=83;a[m+7>>0]=84;BE(d,m,8);c[d+376>>2]=1749635924;MB(d);NB(d,n,4);c[k>>2]=66;if((g|0)>0){h=l+1|0;j=(d|0)==0;n=0;do{p=b[f+(n<<1)>>1]|0;a[l>>0]=(p&65535)>>>8;a[h>>0]=p;if(!j){BE(d,l,2);NB(d,l,2)}n=n+1|0}while((n|0)!=(g|0))}c[k>>2]=130;p=c[d+412>>2]|0;a[m>>0]=p>>>24;a[m+1>>0]=p>>>16;a[m+2>>0]=p>>>8;a[m+3>>0]=p;BE(d,m,4);i=o;return}function fF(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+96|0;j=l+88|0;h=l;k=l+8|0;f=hR(b,d,k)|0;if(!f)sC(b,275984);if((e|0)!=0?(a[e>>0]|0)!=0:0){d=Dga(e|0)|0;if(d>>>0>(2147483646-f|0)>>>0)sC(b,276008);else m=d}else m=0;d=f+1|0;g=d+m|0;f=(b|0)==0;if(f){i=l;return}n=b+800|0;c[n>>2]=34;a[h>>0]=g>>>24;a[h+1>>0]=g>>>16;a[h+2>>0]=g>>>8;a[h+3>>0]=g;g=h+4|0;a[g>>0]=116;a[h+5>>0]=69;a[h+6>>0]=88;a[h+7>>0]=116;BE(b,h,8);c[b+376>>2]=1950701684;MB(b);NB(b,g,4);c[n>>2]=66;if(d){BE(b,k,d);NB(b,k,d)}if((m|0)!=0&(e|0)!=0){BE(b,e,m);NB(b,e,m)}if(f){i=l;return}c[b+800>>2]=130;n=c[b+412>>2]|0;a[j>>0]=n>>>24;a[j+1>>0]=n>>>16;a[j+2>>0]=n>>>8;a[j+3>>0]=n;BE(b,j,4);i=l;return}function gF(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+1136|0;l=p+1128|0;o=p+1120|0;j=p+1036|0;n=p;if(!f){f=hR(b,d,j)|0;if(!f)sC(b,276064);a[j+(f+1)>>0]=0;d=f+2|0;if(!e)f=0;else f=Dga(e|0)|0;c[n>>2]=e;c[n+4>>2]=f;g=n+8|0;c[g>>2]=0;if(iR(b,2052348020,n,d)|0)sC(b,c[b+248>>2]|0);f=(c[g>>2]|0)+d|0;m=(b|0)==0;if(!m){k=b+800|0;c[k>>2]=34;a[l>>0]=f>>>24;a[l+1>>0]=f>>>16;a[l+2>>0]=f>>>8;a[l+3>>0]=f;h=l+4|0;a[h>>0]=122;a[l+5>>0]=84;a[l+6>>0]=88;a[l+7>>0]=116;BE(b,l,8);c[b+376>>2]=2052348020;MB(b);NB(b,h,4);c[k>>2]=66;if(!d)l=1;else{BE(b,j,d);NB(b,j,d);l=1}}else l=0;k=b+284|0;h=1024;j=b+280|0;f=n+12|0;g=c[g>>2]|0;while(1){d=c[j>>2]|0;e=h>>>0>g>>>0?g:h;if(l&(e|0)!=0){BE(b,f,e);NB(b,f,e)}f=(g|0)==(e|0);if(f|(d|0)==0)break;h=c[k>>2]|0;j=d;f=d+4|0;g=g-e|0}if(!f)sC(b,276456);if(m){i=p;return}c[b+800>>2]=130;n=c[b+412>>2]|0;a[o>>0]=n>>>24;a[o+1>>0]=n>>>16;a[o+2>>0]=n>>>8;a[o+3>>0]=n;BE(b,o,4);i=p;return}else if((f|0)==-1){fF(b,d,e,0);i=p;return}else sC(b,276032)}function hF(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+1136|0;r=w+1128|0;v=w+1120|0;s=w+1036|0;u=w;e=hR(b,e,s)|0;if(!e)sC(b,276088);if((d|0)==-1|(d|0)==1){k=e+1|0;a[s+k>>0]=0;t=0}else if((d|0)==2|(d|0)==0){k=e+1|0;a[s+k>>0]=1;t=1}else sC(b,276112);a[s+(k+1)>>0]=0;o=k+2|0;l=(f|0)==0?276144:f;n=(Dga(l|0)|0)+1|0;g=(g|0)==0?276144:g;j=(Dga(g|0)|0)+1|0;m=(h|0)==0?276144:h;d=n>>>0>(2147483645-k|0)>>>0?2147483647:n+o|0;d=j>>>0>(2147483647-d|0)>>>0?2147483647:d+j|0;e=Dga(m|0)|0;c[u>>2]=m;f=u+4|0;c[f>>2]=e;p=u+8|0;c[p>>2]=0;do if(t)if(!(iR(b,1767135348,u,d)|0)){q=c[p>>2]|0;break}else sC(b,c[b+248>>2]|0);else if(e>>>0>(2147483647-d|0)>>>0)sC(b,276152);else{c[p>>2]=e;q=e;break}while(0);e=q+d|0;q=(b|0)==0;if(!q){k=b+800|0;c[k>>2]=34;a[r>>0]=e>>>24;a[r+1>>0]=e>>>16;a[r+2>>0]=e>>>8;a[r+3>>0]=e;d=r+4|0;a[d>>0]=105;a[r+5>>0]=84;a[r+6>>0]=88;a[r+7>>0]=116;BE(b,r,8);c[b+376>>2]=1767135348;MB(b);NB(b,d,4);c[k>>2]=66;if(o){BE(b,s,o);NB(b,s,o)}if((l|0)!=0&(n|0)!=0){BE(b,l,n);NB(b,l,n)}if((g|0)!=0&(j|0)!=0){BE(b,g,j);NB(b,g,j);h=1}else h=1}else h=0;if(t){l=b+284|0;j=1024;k=b+280|0;e=u+12|0;d=c[p>>2]|0;while(1){f=c[k>>2]|0;g=j>>>0>d>>>0?d:j;if(h&(g|0)!=0){BE(b,e,g);NB(b,e,g)}e=(d|0)==(g|0);if(e|(f|0)==0)break;j=c[l>>2]|0;k=f;e=f+4|0;d=d-g|0}if(!e)sC(b,276456)}else{e=c[f>>2]|0;if(h&(m|0)!=0&(e|0)!=0){BE(b,m,e);NB(b,m,e)}}if(q){i=w;return}c[b+800>>2]=130;u=c[b+412>>2]|0;a[v>>0]=u>>>24;a[v+1>>0]=u>>>16;a[v+2>>0]=u>>>8;a[v+3>>0]=u;BE(b,v,4);i=w;return}function iF(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+32|0;h=j+16|0;g=j;if((f|0)>1)vC(b,276192);UB(g,d);UB(g+4|0,e);a[g+8>>0]=f;if(!b){i=j;return}e=b+800|0;c[e>>2]=34;a[h>>0]=0;a[h+1>>0]=0;a[h+2>>0]=0;a[h+3>>0]=9;d=h+4|0;a[d>>0]=111;a[h+5>>0]=70;a[h+6>>0]=70;a[h+7>>0]=115;BE(b,h,8);c[b+376>>2]=1866876531;MB(b);NB(b,d,4);c[e>>2]=66;BE(b,g,9);NB(b,g,9);c[e>>2]=130;e=c[b+412>>2]|0;a[h>>0]=e>>>24;a[h+1>>0]=e>>>16;a[h+2>>0]=e>>>8;a[h+3>>0]=e;BE(b,h,4);i=j;return}function jF(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+112|0;v=w+104|0;r=w;t=w+8|0;s=w+24|0;if((g|0)>3)sC(b,276232);d=hR(b,d,s)|0;if(!d)sC(b,276280);p=d+1|0;q=(Dga(j|0)|0)+((h|0)!=0&1)|0;d=d+11+q|0;u=$C(b,h<<2)|0;m=(h|0)>0;if(m){n=h+-1|0;l=0;do{o=(Dga(c[k+(l<<2)>>2]|0)|0)+((l|0)!=(n|0)&1)|0;c[u+(l<<2)>>2]=o;d=o+d|0;l=l+1|0}while((l|0)!=(h|0))}o=(b|0)==0;if(!o){l=b+800|0;c[l>>2]=34;a[r>>0]=d>>>24;a[r+1>>0]=d>>>16;a[r+2>>0]=d>>>8;a[r+3>>0]=d;n=r+4|0;a[n>>0]=112;a[r+5>>0]=67;a[r+6>>0]=65;a[r+7>>0]=76;BE(b,r,8);c[b+376>>2]=1883455820;MB(b);NB(b,n,4);c[l>>2]=66;if(!p)n=1;else{BE(b,s,p);NB(b,s,p);n=1}}else n=0;UB(t,e);UB(t+4|0,f);a[t+8>>0]=g;a[t+9>>0]=h;if(n?(BE(b,t,10),NB(b,t,10),(j|0)!=0&(q|0)!=0):0){BE(b,j,q);NB(b,j,q)}if(m){m=0;do{d=c[k+(m<<2)>>2]|0;l=c[u+(m<<2)>>2]|0;if(n&(d|0)!=0&(l|0)!=0){BE(b,d,l);NB(b,d,l)}m=m+1|0}while((m|0)!=(h|0))}ZC(b,u);if(o){i=w;return}c[b+800>>2]=130;k=c[b+412>>2]|0;a[v>>0]=k>>>24;a[v+1>>0]=k>>>16;a[v+2>>0]=k>>>8;a[v+3>>0]=k;BE(b,v,4);i=w;return}function kF(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+80|0;m=n+64|0;l=n;g=Dga(e|0)|0;h=Dga(f|0)|0;j=g+2|0;k=j+h|0;if(k>>>0>64){vC(b,276304);i=n;return}a[l>>0]=d;Aga(l+1|0,e|0,g+1|0)|0;Aga(l+j|0,f|0,h|0)|0;if(!b){i=n;return}if((k|0)<0)sC(b,276672);g=b+800|0;c[g>>2]=34;a[m>>0]=k>>>24;a[m+1>>0]=k>>>16;a[m+2>>0]=k>>>8;a[m+3>>0]=k;d=m+4|0;a[d>>0]=115;a[m+5>>0]=67;a[m+6>>0]=65;a[m+7>>0]=76;BE(b,m,8);c[b+376>>2]=1933787468;MB(b);NB(b,d,4);c[g>>2]=66;if(k){BE(b,l,k);NB(b,l,k)}c[g>>2]=130;k=c[b+412>>2]|0;a[m>>0]=k>>>24;a[m+1>>0]=k>>>16;a[m+2>>0]=k>>>8;a[m+3>>0]=k;BE(b,m,4);i=n;return}function lF(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+32|0;h=j+16|0;g=j;if((f|0)>1)vC(b,276344);a[g>>0]=d>>>24;a[g+1>>0]=d>>>16;a[g+2>>0]=d>>>8;a[g+3>>0]=d;a[g+4>>0]=e>>>24;a[g+5>>0]=e>>>16;a[g+6>>0]=e>>>8;a[g+7>>0]=e;a[g+8>>0]=f;if(!b){i=j;return}e=b+800|0;c[e>>2]=34;a[h>>0]=0;a[h+1>>0]=0;a[h+2>>0]=0;a[h+3>>0]=9;d=h+4|0;a[d>>0]=112;a[h+5>>0]=72;a[h+6>>0]=89;a[h+7>>0]=115;BE(b,h,8);c[b+376>>2]=1883789683;MB(b);NB(b,d,4);c[e>>2]=66;BE(b,g,9);NB(b,g,9);c[e>>2]=130;e=c[b+412>>2]|0;a[h>>0]=e>>>24;a[h+1>>0]=e>>>16;a[h+2>>0]=e>>>8;a[h+3>>0]=e;BE(b,h,4);i=j;return}function mF(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+16|0;l=m+8|0;k=m;f=a[e+2>>0]|0;if((((f+-1<<24>>24&255)<=11?(h=a[e+3>>0]|0,(h+-1<<24>>24&255)<=30):0)?(j=a[e+4>>0]|0,(j&255)<=23):0)?(g=a[e+6>>0]|0,(g&255)<=60):0){n=b[e>>1]|0;a[k>>0]=(n&65535)>>>8;a[k+1>>0]=n;a[k+2>>0]=f;a[k+3>>0]=h;a[k+4>>0]=j;a[k+5>>0]=a[e+5>>0]|0;a[k+6>>0]=g;if(!d){i=m;return}n=d+800|0;c[n>>2]=34;a[l>>0]=0;a[l+1>>0]=0;a[l+2>>0]=0;a[l+3>>0]=7;e=l+4|0;a[e>>0]=116;a[l+5>>0]=73;a[l+6>>0]=77;a[l+7>>0]=69;BE(d,l,8);c[d+376>>2]=1950960965;MB(d);NB(d,e,4);c[n>>2]=66;BE(d,k,7);NB(d,k,7);c[n>>2]=130;n=c[d+412>>2]|0;a[l>>0]=n>>>24;a[l+1>>0]=n>>>16;a[l+2>>0]=n>>>8;a[l+3>>0]=n;BE(d,l,4);i=m;return}vC(d,276384);i=m;return}function nF(b){b=b|0;var e=0,f=0,g=0,h=0,j=0;j=i;f=ea(d[b+437>>0]|0,d[b+440>>0]|0)|0;h=b+348|0;e=c[h>>2]|0;if(f>>>0>7)e=ea(f>>>3,e)|0;else e=((ea(f,e)|0)+7|0)>>>3;g=e+1|0;a[b+443>>0]=a[b+438>>0]|0;a[b+442>>0]=f;f=$C(b,g)|0;c[b+384>>2]=f;a[f>>0]=0;f=b+434|0;e=a[f>>0]|0;if(e&16){e=$C(b,(c[b+364>>2]|0)+1|0)|0;c[b+388>>2]=e;a[e>>0]=1;e=a[f>>0]|0}if((e&255)>31){c[b+380>>2]=_C(b,g)|0;e=a[f>>0]|0;if(e&32){e=$C(b,(c[b+364>>2]|0)+1|0)|0;c[b+392>>2]=e;a[e>>0]=2;e=a[f>>0]|0}if(e&64){e=$C(b,(c[b+364>>2]|0)+1|0)|0;c[b+396>>2]=e;a[e>>0]=3;e=a[f>>0]|0}if(e<<24>>24<0){g=$C(b,(c[b+364>>2]|0)+1|0)|0;c[b+400>>2]=g;a[g>>0]=4}}if(!(a[b+432>>0]|0)){c[b+356>>2]=c[b+352>>2];c[b+360>>2]=c[h>>2];i=j;return}e=c[b+352>>2]|0;if(!(c[b+216>>2]&2)){c[b+356>>2]=(e+7|0)>>>3;c[b+360>>2]=((c[h>>2]|0)+7|0)>>>3;i=j;return}else{c[b+356>>2]=e;c[b+360>>2]=c[h>>2];i=j;return}}function oF(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;e=b+372|0;j=(c[e>>2]|0)+1|0;c[e>>2]=j;l=b+356|0;if(j>>>0<(c[l>>2]|0)>>>0){i=m;return}if(a[b+432>>0]|0){c[e>>2]=0;if(!(c[b+216>>2]&2)){f=b+348|0;g=b+433|0;h=b+360|0;j=b+352|0;e=a[g>>0]|0;do{e=e+1<<24>>24;k=e&255;if((e&255)>6)break;n=d[276448+k>>0]|0;n=(((c[f>>2]|0)+-1+n-(d[276440+k>>0]|0)|0)>>>0)/(n>>>0)|0;c[h>>2]=n;o=d[276432+k>>0]|0;k=(((c[j>>2]|0)+-1+o-(d[276424+k>>0]|0)|0)>>>0)/(o>>>0)|0;c[l>>2]=k}while((n|0)==0|(k|0)==0);a[g>>0]=e}else{o=b+433|0;e=(a[o>>0]|0)+1<<24>>24;a[o>>0]=e}if((e&255)<7){g=c[b+380>>2]|0;if(!g){i=m;return}f=ea(d[b+437>>0]|0,d[b+440>>0]|0)|0;e=c[b+348>>2]|0;if(f>>>0>7)e=ea(f>>>3,e)|0;else e=((ea(f,e)|0)+7|0)>>>3;Cga(g|0,0,e+1|0)|0;i=m;return}}WE(b,0,0,4);i=m;return}function pF(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;if((f|0)>=6){i=p;return}o=b+11|0;g=d[o>>0]|0;if((g|0)==1){n=c[b>>2]|0;g=a[276440+f>>0]|0;h=g&255;if(h>>>0>>0){l=d[276448+f>>0]|0;j=0;k=e;m=7;do{j=((d[e+(h>>>3)>>0]|0)>>>(h&7^7)&1)<>0]=j;j=0;k=k+1|0;m=7}else m=m+-1|0;h=l+h|0}while(h>>>0>>0);if((m|0)!=7)a[k>>0]=j}}else if((g|0)==2){l=c[b>>2]|0;g=a[276440+f>>0]|0;h=g&255;if(h>>>0>>0){n=d[276448+f>>0]|0;j=0;k=e;m=6;do{j=((d[e+(h>>>2)>>0]|0)>>>(h<<1&6^6)&3)<>0]=j;j=0;k=k+1|0;m=6}else m=m+-2|0;h=n+h|0}while(h>>>0>>0);if((m|0)!=6)a[k>>0]=j}}else if((g|0)==4){l=c[b>>2]|0;g=a[276440+f>>0]|0;h=g&255;if(h>>>0>>0){n=d[276448+f>>0]|0;j=0;k=e;m=4;do{j=((d[e+(h>>>1)>>0]|0)>>>(h<<2&4^4)&15)<>0]=j;j=0;k=k+1|0;m=4}else m=m+-4|0;h=n+h|0}while(h>>>0>>0);if((m|0)!=4)a[k>>0]=j}}else{n=c[b>>2]|0;k=g>>>3;g=a[276440+f>>0]|0;h=g&255;if(h>>>0>>0){l=d[276448+f>>0]|0;m=e;while(1){j=e+(ea(h,k)|0)|0;if((m|0)!=(j|0))Aga(m|0,j|0,k|0)|0;h=l+h|0;if(h>>>0>=n>>>0)break;else m=m+k|0}}}h=d[276448+f>>0]|0;h=(((c[b>>2]|0)+-1+h-(g&255)|0)>>>0)/(h>>>0)|0;c[b>>2]=h;o=a[o>>0]|0;g=o&255;if((o&255)>7)g=ea(g>>>3,h)|0;else g=((ea(g,h)|0)+7|0)>>>3;c[b+4>>2]=g;i=p;return} +function Nr(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;ka=i;i=i+32|0;ca=ka+20|0;ba=ka;aa=ka+4|0;$=ka+8|0;ea=ka+12|0;da=ka+16|0;if(!b){ja=-2;i=ka;return ja|0}S=b+28|0;h=c[S>>2]|0;if(!h){ja=-2;i=ka;return ja|0}if(!(c[b>>2]|0)){ja=-2;i=ka;return ja|0}ga=(e|0)==4?-5:0;ia=b+4|0;ja=b+8|0;fa=b+24|0;P=b+36|0;Q=b+40|0;R=b+32|0;ha=b+48|0;m=h;e=-5;a:while(1){b:while(1){c:do switch(c[m>>2]|0){case 3:{g=m;f=m;K=25;break a}case 4:{g=m;f=m;K=28;break a}case 5:{g=m;f=m;K=31;break a}case 6:{f=m;e=m;K=34;break a}case 9:{K=9;break b}case 11:{K=7;break b}case 0:{h=c[ia>>2]|0;if(!h){K=280;break a}c[ia>>2]=h+-1;c[ja>>2]=(c[ja>>2]|0)+1;e=c[b>>2]|0;c[b>>2]=e+1;e=d[e>>0]|0;h=m+4|0;c[h>>2]=e;if((e&15|0)!=8){c[m>>2]=13;c[fa>>2]=15552;c[h>>2]=5;e=ga;continue b}if(((e>>>4)+8|0)>>>0>(c[m+16>>2]|0)>>>0){c[m>>2]=13;c[fa>>2]=15584;c[h>>2]=5;e=ga;continue b}else{c[m>>2]=1;e=ga;break c}}case 10:{K=8;break b}case 1:break;case 7:{K=35;break b}case 2:{h=m;f=m;K=22;break a}case 8:{f=m;K=270;break b}case 12:{e=1;K=280;break a}case 13:{K=281;break a}default:{e=-2;K=282;break a}}while(0);h=c[ia>>2]|0;if(!h){K=280;break a}g=h+-1|0;c[ia>>2]=g;c[ja>>2]=(c[ja>>2]|0)+1;e=c[b>>2]|0;c[b>>2]=e+1;e=d[e>>0]|0;h=m+4|0;if(((c[h>>2]<<8|e)>>>0)%31|0){c[m>>2]=13;c[fa>>2]=15608;c[h>>2]=5;e=ga;continue}if(e&32){h=m;e=m;K=21;break a}c[m>>2]=7;e=ga}do if((K|0)==7){K=0;h=c[ia>>2]|0;f=m}else if((K|0)==8){h=c[ia>>2]|0;f=m;K=274}else if((K|0)==9){h=c[ia>>2]|0;f=m;K=272}else if((K|0)==35){K=0;O=c[m+20>>2]|0;L=O+32|0;M=O+28|0;N=O+52|0;m=c[N>>2]|0;I=O+48|0;h=c[I>>2]|0;if(m>>>0>>0){G=O+44|0;h=h+~m|0}else{h=O+44|0;G=h;h=(c[h>>2]|0)-m|0}z=O+40|0;H=O+4|0;A=O+24|0;B=O+4|0;C=O+8|0;D=O+20|0;J=O+12|0;E=O+36|0;F=O+16|0;k=c[L>>2]|0;g=c[M>>2]|0;l=h;j=c[ia>>2]|0;f=c[b>>2]|0;h=m;d:while(1){switch(c[O>>2]|0){case 1:{if(g>>>0<32){m=f;while(1){if(!j){j=k;f=m;K=56;break d}j=j+-1|0;f=m+1|0;k=(d[m>>0]|0)<>>0<32){e=0;m=f}else{e=0;break}}}m=k>>>16;n=m^65535;if((n|0)!=(k&65535|0)){K=58;break d}c[H>>2]=n;if((m|0)==65535)g=(c[A>>2]|0)!=0?7:0;else g=2;c[O>>2]=g;x=h;y=l;k=0;g=0;h=x;l=y;continue d}case 5:{n=c[C>>2]|0;K=110;break}case 0:{if(g>>>0<3){m=f;while(1){if(!j){j=k;f=m;K=46;break d}j=j+-1|0;f=m+1|0;k=(d[m>>0]|0)<>>0<3){e=0;m=f}else{e=0;break}}}c[A>>2]=k&1;m=k>>>1&3;if(!m){w=g+-3|0;g=w&7;c[O>>2]=1;x=h;y=l;k=k>>>3>>>g;g=w-g|0;h=x;l=y;continue d}else if((m|0)==3){K=53;break d}else if((m|0)==2){c[O>>2]=3;x=h;y=l;k=k>>>3;g=g+-3|0;h=x;l=y;continue d}else if((m|0)==1){m=Od[c[R>>2]&255](c[Q>>2]|0,1,28)|0;if(!m){K=51;break d}c[m>>2]=0;a[m+16>>0]=9;a[m+17>>0]=5;c[m+20>>2]=17016;c[m+24>>2]=16760;c[H>>2]=m;c[O>>2]=6;x=h;y=l;k=k>>>3;g=g+-3|0;h=x;l=y;continue d}else{x=h;y=l;h=x;l=y;continue d}}case 3:{if(g>>>0<14){m=f;while(1){if(!j){j=k;f=m;K=85;break d}j=j+-1|0;f=m+1|0;k=(d[m>>0]|0)<>>0<14){e=0;m=f}else{e=0;break}}}c[H>>2]=k&16383;l=k&31;if(l>>>0>29){K=88;break d}m=k>>>5&31;if(m>>>0>29){K=88;break d}K=Od[c[R>>2]&255](c[Q>>2]|0,l+258+m|0,4)|0;c[J>>2]=K;if(!K){K=90;break d}c[C>>2]=0;c[O>>2]=4;m=0;k=k>>>14;g=g+-14|0;K=95;break}case 2:{if(!j){j=k;K=63;break d}do if(!l){if((h|0)==(c[G>>2]|0)?(T=c[I>>2]|0,U=c[z>>2]|0,(T|0)!=(U|0)):0){if(U>>>0>>0)h=T+-1-U|0;else h=h-U|0;if(!h)h=U;else{l=h;h=U;break}}c[N>>2]=h;e=ku(O,b,e)|0;h=c[N>>2]|0;m=c[I>>2]|0;if(h>>>0>>0){l=m+~h|0;n=c[G>>2]|0}else{n=c[G>>2]|0;l=n-h|0}do if((h|0)==(n|0)?(V=c[z>>2]|0,(m|0)!=(V|0)):0)if(V>>>0>>0){l=m+-1-V|0;h=V;break}else{l=h-V|0;h=V;break}while(0);if(!l){K=80;break d}}while(0);y=c[H>>2]|0;y=y>>>0>j>>>0?j:y;y=y>>>0>l>>>0?l:y;Aga(h|0,f|0,y|0)|0;f=f+y|0;j=j-y|0;h=h+y|0;l=l-y|0;x=c[H>>2]|0;c[H>>2]=x-y;if((x|0)!=(y|0)){x=g;y=k;e=0;g=x;k=y;continue d}c[O>>2]=(c[A>>2]|0)!=0?7:0;x=g;y=k;e=0;g=x;k=y;continue d}case 4:{m=c[C>>2]|0;if(m>>>0<(((c[H>>2]|0)>>>10)+4|0)>>>0)K=95;else{l=c[J>>2]|0;K=94}break}case 6:break;case 8:{K=255;break d}case 9:{e=h;K=256;break d}case 7:{K=252;break d}default:{e=h;K=257;break d}}if((K|0)==95)while(1){if(g>>>0<3){n=f;while(1){if(!j){j=k;f=n;K=98;break d}j=j+-1|0;f=n+1|0;k=(d[n>>0]|0)<>>0<3){e=0;n=f}else{e=0;break}}}c[C>>2]=m+1;n=c[J>>2]|0;c[n+(c[15768+(m<<2)>>2]<<2)>>2]=k&7;k=k>>>3;g=g+-3|0;m=c[C>>2]|0;if(m>>>0<(((c[H>>2]|0)>>>10)+4|0)>>>0)K=95;else{l=n;K=94;break}}if((K|0)==94){if(m>>>0<19)do{c[C>>2]=m+1;c[l+(c[15768+(m<<2)>>2]<<2)>>2]=0;m=c[C>>2]|0}while(m>>>0<19);c[F>>2]=7;m=c[E>>2]|0;c[ba>>2]=0;n=Od[c[R>>2]&255](c[Q>>2]|0,19,4)|0;if(!n){e=-4;K=108;break}m=lu(l,19,19,0,0,D,F,m,ba,n)|0;if((m|0)==-5){e=n;K=104;break}else if((m|0)==-3){m=n;e=16680;K=105;break}if(!(c[F>>2]|0)){e=n;K=104;break}Jd[c[P>>2]&255](c[Q>>2]|0,n);if((m|0)==-3){K=107;break}else if(m){e=m;K=108;break}c[C>>2]=0;c[O>>2]=5;n=0;K=110}if((K|0)==110){K=0;m=c[H>>2]|0;if(n>>>0<((m&31)+258+(m>>>5&31)|0)>>>0){u=n;while(1){l=c[F>>2]|0;if(g>>>0>>0){n=f;while(1){if(!j){j=k;f=n;K=115;break d}j=j+-1|0;f=n+1|0;k=(d[n>>0]|0)<>>0>>0){e=0;n=f}else{e=0;break}}}y=c[D>>2]|0;r=c[15848+(l<<2)>>2]&k;s=d[y+(r<<3)+1>>0]|0;r=c[y+(r<<3)+4>>2]|0;if(r>>>0<16){c[C>>2]=u+1;o=c[J>>2]|0;c[o+(u<<2)>>2]=r;n=c[C>>2]|0;k=k>>>s;g=g-s|0}else{t=(r|0)==18;o=t?7:r+-14|0;t=t?11:3;l=o+s|0;if(g>>>0>>0){n=f;while(1){if(!j){j=k;f=n;K=121;break d}j=j+-1|0;f=n+1|0;k=(d[n>>0]|0)<>>0>>0){e=0;n=f}else{e=0;break}}}k=k>>>s;q=c[15848+(o<<2)>>2]&k;p=q+t|0;k=k>>>o;g=g-s-o|0;if((p+u|0)>>>0>((m&31)+258+(m>>>5&31)|0)>>>0){K=124;break d}m=(r|0)==16;if(m&(u|0)==0){K=124;break d}if(m){n=c[J>>2]|0;o=n;n=c[n+(u+-1<<2)>>2]|0}else{o=c[J>>2]|0;n=0}l=u;m=p;while(1){c[o+(l<<2)>>2]=n;m=m+-1|0;if(!m)break;else l=l+1|0}n=t+u+q|0;c[C>>2]=n}m=c[H>>2]|0;if(n>>>0<((m&31)+258+(m>>>5&31)|0)>>>0)u=n;else break}}else o=c[J>>2]|0;c[D>>2]=0;c[aa>>2]=9;c[$>>2]=6;r=m&31;q=r+257|0;n=(m>>>5&31)+1|0;l=c[E>>2]|0;c[ca>>2]=0;s=Od[c[R>>2]&255](c[Q>>2]|0,288,4)|0;if(!s){e=-4;K=148;break}m=lu(o,q,257,16008,16136,ea,aa,l,ca,s)|0;do if((m|0)==-4){l=-4;K=137}else if(!m){p=c[aa>>2]|0;if(!p)K=136;else{m=lu(o+(q<<2)|0,n,0,16336,16456,da,$,l,ca,s)|0;if(!m){m=c[$>>2]|0;if((m|0)==0&(r|0)!=0)K=142;else{Jd[c[P>>2]&255](c[Q>>2]|0,s);o=m;break}}else if((m|0)==-3){c[fa>>2]=16576;l=-3}else if((m|0)==-5){c[fa>>2]=16608;l=-3}else if((m|0)==-4)l=-4;else K=142;if((K|0)==142){c[fa>>2]=16640;l=-3}Jd[c[P>>2]&255](c[Q>>2]|0,s);K=145}}else if((m|0)==-3){c[fa>>2]=16264;l=-3;K=137}else K=136;while(0);if((K|0)==136){c[fa>>2]=16304;l=-3;K=137}if((K|0)==137){Jd[c[P>>2]&255](c[Q>>2]|0,s);K=145}if((K|0)==145){if((l|0)==-3){K=147;break}else if(l){e=-4;K=148;break}p=c[aa>>2]|0;o=c[$>>2]|0}m=c[ea>>2]|0;n=c[da>>2]|0;l=Od[c[R>>2]&255](c[Q>>2]|0,1,28)|0;if(!l){K=151;break}c[l>>2]=0;a[l+16>>0]=p;a[l+17>>0]=o;c[l+20>>2]=m;c[l+24>>2]=n;c[H>>2]=l;Jd[c[P>>2]&255](c[Q>>2]|0,c[J>>2]|0);c[O>>2]=6}c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;y=c[B>>2]|0;m=c[I>>2]|0;if(h>>>0>>0)m=m+~h|0;else m=(c[G>>2]|0)-h|0;q=y+16|0;r=y+12|0;s=y+20|0;t=y+8|0;u=y+4|0;v=y+8|0;w=y+17|0;x=y+24|0;n=c[y>>2]|0;e:while(1){switch(n|0){case 2:{l=c[v>>2]|0;if(g>>>0>>0){n=f;while(1){if(!j){f=n;K=177;break e}j=j+-1|0;f=n+1|0;k=(d[n>>0]|0)<>>0>>0){e=0;n=f}else{e=0;break}}}c[u>>2]=(c[u>>2]|0)+(c[15848+(l<<2)>>2]&k);p=d[w>>0]|0;c[r>>2]=p;c[v>>2]=c[x>>2];c[y>>2]=3;k=k>>>l;g=g-l|0;K=179;break}case 0:{l=d[q>>0]|0;c[r>>2]=l;c[t>>2]=c[s>>2];c[y>>2]=1;K=161;break}case 1:{l=c[r>>2]|0;K=161;break}case 3:{p=c[r>>2]|0;K=179;break}case 5:{n=c[r>>2]|0;K=193;break}case 6:{do if(!m){if((h|0)==(c[G>>2]|0)?(Y=c[I>>2]|0,Z=c[z>>2]|0,(Y|0)!=(Z|0)):0){if(Z>>>0>>0)m=Y+-1-Z|0;else m=h-Z|0;if(!m)h=Z;else{h=Z;break}}c[N>>2]=h;e=ku(O,b,e)|0;h=c[N>>2]|0;n=c[I>>2]|0;if(h>>>0>>0){m=n+~h|0;l=c[G>>2]|0}else{l=c[G>>2]|0;m=l-h|0}do if((h|0)==(l|0)?(_=c[z>>2]|0,(n|0)!=(_|0)):0)if(_>>>0>>0){m=n+-1-_|0;h=_;break}else{m=h-_|0;h=_;break}while(0);if(!m){K=234;break e}}while(0);a[h>>0]=c[v>>2];c[y>>2]=0;e=0;n=0;m=m+-1|0;h=h+1|0;continue e}case 4:{l=c[v>>2]|0;if(g>>>0>>0){n=f;while(1){if(!j){f=n;K=191;break e}j=j+-1|0;f=n+1|0;k=(d[n>>0]|0)<>>0>>0){e=0;n=f}else{e=0;break}}}n=(c[r>>2]|0)+(c[15848+(l<<2)>>2]&k)|0;c[r>>2]=n;c[y>>2]=5;k=k>>>l;g=g-l|0;K=193;break}case 7:{K=236;break e}case 9:{K=242;break e}case 8:{K=241;break e}default:{K=243;break e}}if((K|0)==161){if(g>>>0>>0){n=f;while(1){if(!j){f=n;K=164;break e}j=j+-1|0;f=n+1|0;k=(d[n>>0]|0)<>>0>>0){e=0;n=f}else{e=0;break}}}o=c[t>>2]|0;l=c[15848+(l<<2)>>2]&k;K=o+(l<<3)|0;n=d[K+1>>0]|0;k=k>>>n;g=g-n|0;K=a[K>>0]|0;n=K&255;if(!(K<<24>>24)){c[t>>2]=c[o+(l<<3)+4>>2];c[y>>2]=6;p=h;K=m;n=6;h=p;m=K;continue}if(n&16){c[t>>2]=n&15;c[u>>2]=c[o+(l<<3)+4>>2];c[y>>2]=2;p=h;K=m;n=2;h=p;m=K;continue}if(!(n&64)){c[r>>2]=n;c[t>>2]=o+((c[o+(l<<3)+4>>2]|0)+l<<3);p=h;K=m;n=1;h=p;m=K;continue}if(!(n&32)){K=173;break}c[y>>2]=7;p=h;K=m;n=7;h=p;m=K;continue}else if((K|0)==179){if(g>>>0

>>0){n=f;while(1){if(!j){f=n;K=182;break e}j=j+-1|0;f=n+1|0;k=(d[n>>0]|0)<>>0

>>0){e=0;n=f}else{e=0;break}}}o=c[t>>2]|0;l=c[15848+(p<<2)>>2]&k;n=o+(l<<3)|0;K=d[n+1>>0]|0;k=k>>>K;g=g-K|0;n=d[n>>0]|0;if(n&16){c[t>>2]=n&15;c[r>>2]=c[o+(l<<3)+4>>2];c[y>>2]=4;p=h;K=m;n=4;h=p;m=K;continue}if(n&64){K=187;break}c[r>>2]=n;c[t>>2]=o+((c[o+(l<<3)+4>>2]|0)+l<<3);p=h;K=m;n=3;h=p;m=K;continue}else if((K|0)==193){n=h+(0-n)|0;l=c[z>>2]|0;if(n>>>0>>0){o=(c[G>>2]|0)-l|0;do n=n+o|0;while(n>>>0>>0)}if(c[u>>2]|0)while(1){do if(!m){if((h|0)==(c[G>>2]|0)?(W=c[I>>2]|0,X=c[z>>2]|0,(W|0)!=(X|0)):0){if(X>>>0>>0)m=W+-1-X|0;else m=h-X|0;if(!m)h=X;else{e=X;break}}c[N>>2]=h;m=ku(O,b,e)|0;o=c[N>>2]|0;l=c[I>>2]|0;if(o>>>0>>0){h=l+~o|0;e=c[G>>2]|0}else{e=c[G>>2]|0;h=e-o|0}do if((o|0)==(e|0)){e=c[z>>2]|0;if((l|0)==(e|0)){e=o;break}if(e>>>0>>0){h=l+-1-e|0;break}else{h=o-e|0;break}}else e=o;while(0);if(!h){K=213;break e}else m=h}else e=h;while(0);l=n+1|0;h=e+1|0;a[e>>0]=a[n>>0]|0;m=m+-1|0;if((l|0)==(c[G>>2]|0))n=c[z>>2]|0;else n=l;K=(c[u>>2]|0)+-1|0;c[u>>2]=K;if(!K){e=0;break}else e=0}c[y>>2]=0;n=0;continue}}switch(K|0){case 164:{K=0;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=0;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,e)|0;break}case 173:{K=0;c[y>>2]=9;c[fa>>2]=15952;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,-3)|0;break}case 177:{K=0;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=0;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,e)|0;break}case 182:{K=0;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=0;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,e)|0;break}case 187:{K=0;c[y>>2]=9;c[fa>>2]=15984;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,-3)|0;break}case 191:{K=0;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=0;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,e)|0;break}case 213:{K=0;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=e;e=ku(O,b,m)|0;break}case 234:{K=0;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,e)|0;break}case 236:{K=0;if(g>>>0>7){g=g+-8|0;j=j+1|0;f=f+-1|0}c[N>>2]=h;e=ku(O,b,e)|0;h=c[N>>2]|0;if((c[I>>2]|0)==(h|0)){c[y>>2]=8;K=241;break}else{c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,e)|0;break}}case 242:{K=0;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,-3)|0;break}case 243:{K=0;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,-2)|0;break}}if((K|0)==241){K=0;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,1)|0}if((e|0)!=1){K=245;break}Jd[c[P>>2]&255](c[Q>>2]|0,c[B>>2]|0);f=c[b>>2]|0;j=c[ia>>2]|0;k=c[L>>2]|0;g=c[M>>2]|0;h=c[N>>2]|0;e=c[I>>2]|0;if(h>>>0>>0)l=e+~h|0;else l=(c[G>>2]|0)-h|0;if(c[A>>2]|0){K=251;break}c[O>>2]=0;e=0}switch(K|0){case 46:{K=0;c[L>>2]=j;c[M>>2]=g;c[ia>>2]=0;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,e)|0;break}case 51:{K=0;c[H>>2]=0;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,-4)|0;break}case 53:{K=0;c[O>>2]=9;c[fa>>2]=15672;c[L>>2]=k>>>3;c[M>>2]=g+-3;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,-3)|0;break}case 56:{K=0;c[L>>2]=j;c[M>>2]=g;c[ia>>2]=0;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,e)|0;break}case 58:{K=0;c[O>>2]=9;c[fa>>2]=15696;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,-3)|0;break}case 63:{K=0;c[L>>2]=j;c[M>>2]=g;c[ia>>2]=0;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,e)|0;break}case 80:{K=0;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,e)|0;break}case 85:{K=0;c[L>>2]=j;c[M>>2]=g;c[ia>>2]=0;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,e)|0;break}case 88:{K=0;c[O>>2]=9;c[fa>>2]=15728;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,-3)|0;break}case 90:{K=0;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,-4)|0;break}case 98:{K=0;c[L>>2]=j;c[M>>2]=g;c[ia>>2]=0;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,e)|0;break}case 104:{m=e;e=16720;K=105;break}case 115:{K=0;c[L>>2]=j;c[M>>2]=g;c[ia>>2]=0;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,e)|0;break}case 121:{K=0;c[L>>2]=j;c[M>>2]=g;c[ia>>2]=0;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,e)|0;break}case 124:{K=0;Jd[c[P>>2]&255](c[Q>>2]|0,c[J>>2]|0);c[O>>2]=9;c[fa>>2]=15920;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,-3)|0;break}case 147:{Jd[c[P>>2]&255](c[Q>>2]|0,c[J>>2]|0);c[O>>2]=9;e=-3;K=148;break}case 151:{K=0;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,-4)|0;break}case 245:{K=0;e=ku(O,b,e)|0;break}case 251:{c[O>>2]=7;e=0;K=252;break}case 256:{K=0;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=e;e=ku(O,b,-3)|0;break}case 257:{K=0;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=e;e=ku(O,b,-2)|0;break}}do if((K|0)==105){c[fa>>2]=e;Jd[c[P>>2]&255](c[Q>>2]|0,m);K=107}else if((K|0)==148){K=0;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,e)|0}else if((K|0)==252){K=0;c[N>>2]=h;e=ku(O,b,e)|0;h=c[N>>2]|0;if((c[I>>2]|0)==(h|0)){c[O>>2]=8;K=255;break}else{c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,e)|0;break}}while(0);if((K|0)==107){Jd[c[P>>2]&255](c[Q>>2]|0,c[J>>2]|0);c[O>>2]=9;e=-3;K=108}else if((K|0)==255){K=0;c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,1)|0}if((K|0)==108){c[L>>2]=k;c[M>>2]=g;c[ia>>2]=j;c[ja>>2]=f-(c[b>>2]|0)+(c[ja>>2]|0);c[b>>2]=f;c[N>>2]=h;e=ku(O,b,e)|0}if((e|0)==-3){m=c[S>>2]|0;c[m>>2]=13;c[m+4>>2]=0;e=-3;continue a}else if(!e){e=ga;K=280;break a}if((e|0)!=1){K=280;break a}e=c[S>>2]|0;h=c[e+20>>2]|0;f=h+60|0;c[e+4>>2]=c[f>>2];e=c[h>>2]|0;if((e&-2|0)==4){Jd[c[P>>2]&255](c[Q>>2]|0,c[h+12>>2]|0);e=c[h>>2]|0}if((e|0)==6)Jd[c[P>>2]&255](c[Q>>2]|0,c[h+4>>2]|0);c[h>>2]=0;c[h+28>>2]=0;c[h+32>>2]=0;e=c[h+40>>2]|0;c[h+52>>2]=e;c[h+48>>2]=e;e=c[h+56>>2]|0;if(e){O=Od[e&255](0,0,0)|0;c[f>>2]=O;c[ha>>2]=O}e=c[S>>2]|0;if(!(c[e+12>>2]|0)){c[e>>2]=8;f=e;e=ga;K=270;break}else{c[e>>2]=12;m=e;e=ga;continue a}}while(0);if((K|0)==270){h=c[ia>>2]|0;if(!h){K=280;break}h=h+-1|0;c[ia>>2]=h;c[ja>>2]=(c[ja>>2]|0)+1;e=c[b>>2]|0;c[b>>2]=e+1;c[f+8>>2]=(d[e>>0]|0)<<24;c[f>>2]=9;e=ga;K=272}if((K|0)==272){if(!h){K=280;break}h=h+-1|0;c[ia>>2]=h;c[ja>>2]=(c[ja>>2]|0)+1;K=c[b>>2]|0;c[b>>2]=K+1;e=f+8|0;c[e>>2]=(c[e>>2]|0)+((d[K>>0]|0)<<16);c[f>>2]=10;e=ga;K=274}if((K|0)==274){if(!h){K=280;break}h=h+-1|0;c[ia>>2]=h;c[ja>>2]=(c[ja>>2]|0)+1;O=c[b>>2]|0;c[b>>2]=O+1;e=f+8|0;c[e>>2]=(c[e>>2]|0)+((d[O>>0]|0)<<8);c[f>>2]=11;e=ga}if(!h){K=280;break}c[ia>>2]=h+-1;c[ja>>2]=(c[ja>>2]|0)+1;O=c[b>>2]|0;c[b>>2]=O+1;e=f+8|0;O=(c[e>>2]|0)+(d[O>>0]|0)|0;c[e>>2]=O;e=f+4|0;if((c[e>>2]|0)==(O|0)){e=f;K=279;break}c[f>>2]=13;c[fa>>2]=15648;c[e>>2]=5;m=f;e=ga}switch(K|0){case 21:{c[h>>2]=2;f=e;e=ga;K=23;break}case 22:{g=c[ia>>2]|0;K=23;break}case 25:{j=c[ia>>2]|0;K=26;break}case 28:{h=c[ia>>2]|0;K=29;break}case 31:{h=c[ia>>2]|0;break}case 34:{c[f>>2]=13;c[fa>>2]=15632;c[e+4>>2]=0;ja=-2;i=ka;return ja|0}case 279:{c[e>>2]=12;ja=1;i=ka;return ja|0}case 280:{ja=e;i=ka;return ja|0}case 281:{ja=-3;i=ka;return ja|0}case 282:{i=ka;return e|0}}do if((K|0)==23)if(!g){ja=e;i=ka;return ja|0}else{j=g+-1|0;c[ia>>2]=j;c[ja>>2]=(c[ja>>2]|0)+1;g=c[b>>2]|0;c[b>>2]=g+1;c[f+8>>2]=(d[g>>0]|0)<<24;c[h>>2]=3;g=h;e=ga;K=26;break}while(0);do if((K|0)==26)if(!j){ja=e;i=ka;return ja|0}else{h=j+-1|0;c[ia>>2]=h;c[ja>>2]=(c[ja>>2]|0)+1;K=c[b>>2]|0;c[b>>2]=K+1;e=f+8|0;c[e>>2]=(c[e>>2]|0)+((d[K>>0]|0)<<16);c[g>>2]=4;e=ga;K=29;break}while(0);do if((K|0)==29)if(!h){ja=e;i=ka;return ja|0}else{h=h+-1|0;c[ia>>2]=h;c[ja>>2]=(c[ja>>2]|0)+1;$=c[b>>2]|0;c[b>>2]=$+1;e=f+8|0;c[e>>2]=(c[e>>2]|0)+((d[$>>0]|0)<<8);c[g>>2]=5;e=ga;break}while(0);if(!h){ja=e;i=ka;return ja|0}c[ia>>2]=h+-1;c[ja>>2]=(c[ja>>2]|0)+1;ja=c[b>>2]|0;c[b>>2]=ja+1;$=f+8|0;ja=(c[$>>2]|0)+(d[ja>>0]|0)|0;c[$>>2]=ja;c[ha>>2]=ja;c[g>>2]=6;ja=2;i=ka;return ja|0}function Or(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;o=c[b+12>>2]|0;p=o+4280|0;b=c[p>>2]|0;do if(b>>>0>d>>>0){b=b-d|0;g=o+4284|0;h=c[g>>2]|0;if(b>>>0<=(h-(o+184)|0)>>>0){c[g>>2]=h+(0-b);c[p>>2]=d;l=12;break}if(!(Hh(c[o>>2]|0,0)|0)){c[o+16>>2]=0;c[o+36>>2]=0;c[o+40>>2]=0;a[o+44>>0]=0;c[o+48>>2]=0;c[o+104>>2]=0;c[o+64>>2]=9;c[o+12>>2]=0;c[o+4288>>2]=p;c[g>>2]=p;c[p>>2]=0;b=0;l=6;break}else{e=0;i=q;return e|0}}else l=6;while(0);if((l|0)==6)if(b>>>0>>0){h=d-b|0;j=o+4288|0;k=o+4284|0;n=c[k>>2]|0;g=(c[j>>2]|0)-n|0;g=g>>>0>>0?g:h;c[k>>2]=n+g;c[p>>2]=g+b;a:do if((h|0)!=(g|0)){d=o+12|0;g=h-g|0;while(1){b=g>>>0<4096?g:4096;if((Aj(d,0,b)|0)>>>0>>0){b=0;break}c[p>>2]=(c[p>>2]|0)+b;if((g|0)==(b|0))break a;else g=g-b|0}i=q;return b|0}while(0);if(!f){e=0;i=q;return e|0}else{n=j;m=k}}else l=12;do if((l|0)==12)if(!f){e=0;i=q;return e|0}else{n=o+4288|0;m=o+4284|0;break}while(0);l=o+12|0;k=o+184|0;h=f;d=c[n>>2]|0;j=c[m>>2]|0;b=0;while(1){g=d-j|0;g=g>>>0>>0?g:h;Aga(e+b|0,j|0,g|0)|0;b=g+b|0;c[m>>2]=(c[m>>2]|0)+g;c[p>>2]=(c[p>>2]|0)+g;if((h|0)==(g|0)){l=17;break}c[m>>2]=k;f=Aj(l,k,4096)|0;j=c[m>>2]|0;d=j+f|0;c[n>>2]=d;if(!f){l=17;break}else h=h-g|0}if((l|0)==17){i=q;return b|0}return 0}function Pr(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;g=b+12|0;h=c[g>>2]|0;if(!h){i=j;return}e=c[b+28>>2]|0;f=c[h+180>>2]|0;c[h+16>>2]=0;c[h+36>>2]=0;c[h+40>>2]=0;a[h+44>>0]=0;c[h+48>>2]=0;c[h+104>>2]=0;c[h+64>>2]=9;c[h+12>>2]=0;b=h+100|0;d=c[b>>2]|0;if((d|0)!=(h+112|0)){eh(f,d);c[b>>2]=0}eh(f,c[h+88>>2]|0);Cga(h|0,0,184)|0;eh(e,h);c[g>>2]=0;i=j;return}function Qr(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;j=b+52|0;f=c[j>>2]|0;l=b+24|0;e=c[l>>2]|0;g=b+32|0;k=(a[g>>0]|0)==0;if(!((k?(e|0)<(c[b+28>>2]|0):0)?(c[b+56>>2]|0)>>>0<(c[b+60>>2]|0)>>>0:0)){h=b+60|0;if((c[b+56>>2]|0)>>>0>=(c[h>>2]|0)>>>0){f=f+1|0;c[j>>2]=f;if(f>>>0<(c[b+40>>2]|0)>>>0)e=(1<>2]|0)+1|0;c[h>>2]=e}if(!k){c[j>>2]=9;c[h>>2]=256;a[g>>0]=0;f=9}e=b+4|0;if(c[e>>2]|0){l=-1;i=m;return l|0}k=wi(c[b+164>>2]|0,b+8|0,f)|0;g=b+36|0;c[g>>2]=(c[g>>2]|0)+k;j=c[j>>2]|0;c[e>>2]=k>>>0>>0&1;c[l>>2]=0;c[b+28>>2]=(k<<3|1)-j;if(!k){l=-1;i=m;return l|0}else e=0}c[l>>2]=e+f;g=e>>3;k=e&7;j=b+(g+1)+8|0;e=(d[b+g+8>>0]|0)>>>k;k=8-k|0;f=f-k|0;if(f>>>0>7){f=f+-8|0;h=k+8|0;g=b+(g+2)+8|0;e=d[j>>0]<>0]&(1<>2]|0;g=z<<1;h=a+12|0;c[h>>2]=hh(f,4,0,g,0,D)|0;if(c[D>>2]|0){D=c[D>>2]|0;i=E;return D|0}A=a+8|0;c[A>>2]=hh(f,28,0,z,0,D)|0;if(c[D>>2]|0){D=c[D>>2]|0;i=E;return D|0}c[a+24>>2]=hh(f,16,0,g|1,0,D)|0;if(c[D>>2]|0){D=c[D>>2]|0;i=E;return D|0}c[a>>2]=z;y=a+16|0;c[y>>2]=(c[h>>2]|0)+(z<<2);x=a+4|0;c[x>>2]=0;c[a+20>>2]=0;c[a+28>>2]=0;s=(z|0)==0;if(!s){f=z;g=c[b+8>>2]|0;b=c[A>>2]|0;while(1){c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[b+16>>2]=c[g+8>>2];f=f+-1|0;if(!f)break;else{g=g+12|0;b=b+28|0}}}if((e|0)!=0?(j=c[e+8>>2]|0,k=c[e>>2]|0,c[a+32>>2]=e,(k|0)!=0):0){g=0;while(1){r=c[j>>2]|0;if(r){h=c[j+8>>2]|0;q=0;b=0;f=0;while(1){if(!b){p=h+1|0;b=128;f=d[h>>0]|0}else p=h;if(((b&f|0)!=0?(t=c[A>>2]|0,u=t+(q*28|0)|0,z>>>0>q>>>0):0)?(v=t+(q*28|0)+16|0,w=c[v>>2]|0,(w&4|0)==0):0){c[v>>2]=w|4;n=c[y>>2]|0;o=t+(q*28|0)+20|0;c[o>>2]=0;a:do if(g){e=c[u>>2]|0;a=(c[t+(q*28|0)+4>>2]|0)+e|0;l=g;m=n;while(1){h=c[m>>2]|0;F=c[h>>2]|0;if((a|0)>=(F|0)?((c[h+4>>2]|0)+F|0)>=(e|0):0)break;l=l+-1|0;if(!l)break a;else m=m+4|0}c[o>>2]=h}while(0);if(g>>>0>>0){F=g+1|0;c[x>>2]=F;c[n+(g<<2)>>2]=u;g=F}}q=q+1|0;if((q|0)==(r|0))break;else{h=p;b=b>>1}}}k=k+-1|0;if(!k)break;else j=j+16|0}}else g=0;if((g|0)==(z|0)|s){F=c[D>>2]|0;i=E;return F|0}else m=0;do{h=c[A>>2]|0;l=h+(m*28|0)|0;if(z>>>0>m>>>0?(B=h+(m*28|0)+16|0,C=c[B>>2]|0,(C&4|0)==0):0){c[B>>2]=C|4;b=c[y>>2]|0;a=h+(m*28|0)+20|0;c[a>>2]=0;b:do if(g){k=c[l>>2]|0;e=(c[h+(m*28|0)+4>>2]|0)+k|0;f=g;j=b;while(1){h=c[j>>2]|0;F=c[h>>2]|0;if((e|0)>=(F|0)?((c[h+4>>2]|0)+F|0)>=(k|0):0)break;f=f+-1|0;if(!f)break b;else j=j+4|0}c[a>>2]=h}while(0);if(g>>>0>>0){F=g+1|0;c[x>>2]=F;c[b+(g<<2)>>2]=l;g=F}}m=m+1|0}while((m|0)!=(z|0));F=c[D>>2]|0;i=E;return F|0}function Sr(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;l=b+200|0;j=b+204|0;if(!((c[l>>2]|0)==(d|0)?(c[j>>2]|0)==(f|0):0))m=3;if(((m|0)==3?(c[l>>2]=d,c[j>>2]=f,k=c[b+4>>2]|0,(k|0)!=0):0)?(h=Wg(c[b+8>>2]|0,d)|0,n=b+12|0,c[n>>2]=h,c[b+16>>2]=h+32&-64,h=k+-1|0,(h|0)!=0):0){j=b+20|0;while(1){f=Wg(c[j>>2]|0,d)|0;m=c[n>>2]|0;k=f-m|0;f=(((k|0)<0?0-k|0:k)|0)<128?m:f;c[j+4>>2]=f;c[j+8>>2]=f+32&-64;h=h+-1|0;if(!h)break;else j=j+12|0}}h=b+404|0;j=b+408|0;if((c[h>>2]|0)==(e|0)?(c[j>>2]|0)==(g|0):0){i=q;return 0}c[h>>2]=e;c[j>>2]=g;h=c[b+208>>2]|0;if((h|0)!=0?(o=Wg(c[b+212>>2]|0,e)|0,p=b+216|0,c[p>>2]=o,c[b+220>>2]=o+32&-64,o=h+-1|0,(o|0)!=0):0){h=o;j=b+224|0;while(1){n=Wg(c[j>>2]|0,e)|0;f=c[p>>2]|0;m=n-f|0;n=(((m|0)<0?0-m|0:m)|0)<128?f:n;c[j+4>>2]=n;c[j+8>>2]=n+32&-64;h=h+-1|0;if(!h)break;else j=j+12|0}}d=b+412|0;h=c[b+2476>>2]|0;if((e|0)>34359737)h=((h<<3|0)/125|0|0)>(e|0);else h=(e*125|0)<(h<<3|0);a[b+2492>>0]=h&1;h=c[b+2480>>2]|0;a:do if((h|0)>0){j=h;while(1){h=j+-1|0;if((Wg(j,e)|0)<=32){h=j;break a}if((h|0)>0)j=h;else break}}while(0);c[b+2484>>2]=h;n=b+1960|0;o=b+928|0;m=b+1444|0;j=0;do{if((j|0)==2)l=m;else if(!j)l=d;else if((j|0)==1)l=o;else l=n;h=c[l>>2]|0;if(h){l=l+4|0;while(1){c[l+28>>2]=(Wg(c[l+8>>2]|0,e)|0)+g;c[l+24>>2]=(Wg(c[l+12>>2]|0,e)|0)+g;p=l+16|0;c[p>>2]=(Wg(c[l>>2]|0,e)|0)+g;c[l+20>>2]=Wg(c[l+4>>2]|0,e)|0;c[p>>2]=(c[p>>2]|0)+32&-64;h=h+-1|0;if(!h)break;else l=l+32|0}}j=j+1|0}while((j|0)!=4);h=c[d>>2]|0;if(h){f=b+1448|0;k=b+416|0;while(1){j=c[m>>2]|0;b:do if(j){l=f;while(1){g=(c[k>>2]|0)-(c[l>>2]|0)|0;if((Wg((g|0)<0?0-g|0:g,e)|0)<64)break;j=j+-1|0;if(!j)break b;else l=l+32|0}c[k+28>>2]=c[l+28>>2];c[k+24>>2]=c[l+24>>2];c[k+16>>2]=c[l+16>>2];c[k+20>>2]=c[l+20>>2]}while(0);h=h+-1|0;if(!h)break;else k=k+32|0}}h=c[o>>2]|0;if(!h){i=q;return 0}f=b+1964|0;l=b+932|0;while(1){j=c[n>>2]|0;c:do if(j){k=f;while(1){b=(c[l>>2]|0)-(c[k>>2]|0)|0;if((Wg((b|0)<0?0-b|0:b,e)|0)<64){j=k;break}j=j+-1|0;if(!j)break c;else k=k+32|0}c[l+28>>2]=c[j+28>>2];c[l+24>>2]=c[j+24>>2];c[l+16>>2]=c[j+16>>2];c[l+20>>2]=c[j+20>>2]}while(0);h=h+-1|0;if(!h)break;else l=l+32|0}i=q;return 0}function Tr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;s=c[d+(e*204|0)+200>>2]|0;y=b+16|0;if(c[y>>2]&8){i=z;return}t=c[d+(e*204|0)+204>>2]|0;t=(Wg(c[b>>2]|0,s)|0)+t|0;u=b+4|0;w=Wg(c[u>>2]|0,s)|0;do if(!e)if(!(a[f+120>>0]|0))x=5;else{p=(a[f+122>>0]|0)!=0;n=b+12|0;c[n>>2]=w;h=0;m=0;x=28}else if((e|0)==1)if(a[f+121>>0]|0){v=(a[f+123>>0]|0)!=0;n=b+12|0;c[n>>2]=w;q=c[b>>2]|0;j=(c[u>>2]|0)+q|0;r=a[d+2492>>0]|0;g=c[d+412>>2]|0;a:do if(!g){p=0;h=2;m=0}else{m=c[d+2488>>2]|0;l=0-m|0;h=g;k=d+416|0;while(1){g=j-(c[k+12>>2]|0)|0;if((g|0)<(l|0)){p=0;h=2;m=0;break a}if(((c[k+8>>2]|0)+m|0)>=(j|0))break;h=h+-1|0;if(!h){p=0;h=2;m=0;break a}else k=k+32|0}if(r<<24>>24==0?(g|0)>(c[d+2484>>2]|0):0){p=0;h=2;m=0;break}p=1;h=3;m=c[k+16>>2]|0}while(0);g=c[d+928>>2]|0;b:do if(!g){h=p;l=0}else{j=c[d+2488>>2]|0;l=0-j|0;o=g;k=d+(g+-1<<5)+932|0;while(1){g=(c[k+8>>2]|0)-q|0;if((g|0)<(l|0)){h=p;l=0;break b}if(((c[k+12>>2]|0)-j|0)<=(q|0))break;o=o+-1|0;if(!o){h=p;l=0;break b}else k=k+-32|0}if(r<<24>>24==0?(g|0)>=(c[d+2484>>2]|0):0){h=p;l=0;break}l=c[k+16>>2]|0}while(0);if((h|0)==1){g=m-w|0;c[b+8>>2]=g;if(v){l=g;h=1;x=48;break}else break}else if((h|0)==2){c[b+8>>2]=l;if(v){h=2;x=48;break}else break}else if((h|0)==3){g=b+8|0;c[g>>2]=l;c[n>>2]=m-l;if(!v)break;l=c[g>>2]|0;h=3;x=48;break}else{p=v;x=28;break}}else x=5;else{n=b+12|0;c[n>>2]=w;h=0;m=0;p=0;x=28}while(0);if((x|0)==5){c[b+8>>2]=t;c[b+12>>2]=w;c[y>>2]=c[y>>2]|8;i=z;return}if((x|0)==28){g=c[b+20>>2]|0;if(!g)l=t;else{if(!(c[g+16>>2]&8))Tr(g,d,e,f);v=c[g+8>>2]|0;l=c[g+12>>2]>>1;l=v-(w>>1)+l+(Wg((c[b>>2]|0)-((c[g+4>>2]>>1)+(c[g>>2]|0))+(c[u>>2]>>1)|0,s)|0)|0}o=b+8|0;c[o>>2]=l;c[n>>2]=w;do if(!(a[f+124>>0]|0)){k=w;g=l}else{if((w|0)<65){if((w|0)>31){k=64;g=l+(w>>1)&-64;break}g=l+32&-64;if((w|0)<=0){k=w;break}d=l+w|0;f=d+32&-64;e=g-l|0;d=f-d|0;k=w;g=(((e|0)<0?0-e|0:e)|0)>(((d|0)<0?0-d|0:d)|0)?f:g;break}g=c[d+(e*204|0)+12>>2]|0;f=w-g|0;if((((f|0)<0?0-f|0:f)|0)<40)if((g|0)<48){g=48;j=48;k=0}else x=40;else{g=w;x=40}if((x|0)==40){if((g|0)>=192){k=g+32&-64;g=l;break}j=g&63;k=g&-64;if(j>>>0<10){k=g;g=l;break}if(j>>>0<32){k=k|10;g=l;break}}k=j>>>0<54?k|54:g;g=l}while(0);f=g+32|0;w=(f&-64)-g|0;f=(f+k&-64)-g-k|0;g=((((w|0)<0?0-w|0:w)|0)>(((f|0)<0?0-f|0:f)|0)?f:w)+g|0;c[o>>2]=g;c[n>>2]=k;if(p){l=g;x=48}}do if((x|0)==48){k=b+8|0;g=c[n>>2]|0;if((g|0)<64)j=64;else j=g+32&-64;if((h|0)==2){c[n>>2]=j;break}else if((h|0)==3)break;else if((h|0)==1){c[k>>2]=m-j;c[n>>2]=j;break}else{c[n>>2]=j;h=j>>1;g=h+l|0;if(!(j&64))g=g+32&-64;else g=g&-64|32;c[k>>2]=g-h;c[n>>2]=j;break}}while(0);c[y>>2]=c[y>>2]|8;i=z;return}function Ur(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;q=c[a>>2]|0;if(q){f=q;j=c[a+8>>2]|0;while(1){k=j+16|0;c[k>>2]=c[k>>2]&-5;c[j+24>>2]=-1;f=f+-1|0;if(!f)break;else j=j+28|0}}if(!b){c[a+4>>2]=0;i=r;return}l=a+8|0;k=a+12|0;n=0;h=0;f=0;j=0;while(1){if(!f){g=e+1|0;f=128;j=d[e>>0]|0}else g=e;if(((f&j|0)!=0?(o=c[l>>2]|0,m=o+(h*28|0)|0,o=o+(h*28|0)+16|0,p=c[o>>2]|0,(p&4|0)==0):0)?(c[o>>2]=p|4,n>>>0>>0):0){c[(c[k>>2]|0)+(n<<2)>>2]=m;n=n+1|0}h=h+1|0;if((h|0)==(b|0))break;else{e=g;f=f>>1}}c[a+4>>2]=n;f=c[k>>2]|0;if((n|0)>1)l=1;else{i=r;return}do{g=c[f+(l<<2)>>2]|0;h=c[g>>2]|0;m=l;do{e=m;m=m+-1|0;j=f+(m<<2)|0;k=c[j>>2]|0;if((c[k>>2]|0)<(h|0))break;c[f+(e<<2)>>2]=k;c[j>>2]=g}while((m|0)>0);l=l+1|0}while((l|0)!=(n|0));i=r;return}function Vr(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;if(!f){i=u;return}q=0-h|0;r=(b|0)==0;p=(h|0)==2;o=p?128:256;p=p?256:128;while(1){n=c[e+28>>2]|0;l=e+16|0;m=c[l>>2]|0;a:do if(!(m&16)){j=a[e+20>>0]|0;if(!((j|0)==(h|0)|(j|0)==(q|0))){j=a[e+21>>0]|0;if((j|0)==(h|0)|(j|0)==(q|0)){s=j;t=6}}else{s=j;t=6}if((t|0)==6?(t=0,(s|0)!=0):0)if((s|0)==(h|0)){if(r)break;else k=0;while(1){j=c[d+(k<<2)>>2]|0;v=n-(c[j>>2]|0)|0;k=k+1|0;if((v|0)<(g|0)&(0-v|0)<(g|0))break;if(k>>>0>=b>>>0)break a}c[l>>2]=m|528;c[e+24>>2]=j;break}else{if((s|0)!=(q|0)|r)break;else k=0;while(1){j=c[d+(k<<2)>>2]|0;v=n-(c[j>>2]|0)-(c[j+4>>2]|0)|0;k=k+1|0;if((v|0)<(g|0)&(0-v|0)<(g|0))break;if(k>>>0>=b>>>0)break a}c[l>>2]=m|1040;c[e+24>>2]=j;break}if(m&64){b:do if(!(m&o)){if(!((m&p|0)==0|r)){k=0;while(1){j=c[d+(k<<2)>>2]|0;v=n-(c[j>>2]|0)-(c[j+4>>2]|0)|0;k=k+1|0;if((v|0)<(g|0)&(0-v|0)<(g|0))break;if(k>>>0>=b>>>0)break b}c[e+24>>2]=j;c[l>>2]=m|1040}}else if(!r){k=0;while(1){j=c[d+(k<<2)>>2]|0;v=n-(c[j>>2]|0)|0;k=k+1|0;if((v|0)<(g|0)&(0-v|0)<(g|0))break;if(k>>>0>=b>>>0)break b}c[e+24>>2]=j;c[l>>2]=m|528}while(0);l=e+24|0;if(!((c[l>>2]|0)!=0|r)){k=0;while(1){j=c[d+(k<<2)>>2]|0;v=c[j>>2]|0;if((n|0)>=(v|0)?(n|0)<=((c[j+4>>2]|0)+v|0):0)break;k=k+1|0;if(k>>>0>=b>>>0)break a}c[l>>2]=j}}}while(0);f=f+-1|0;if(!f)break;else e=e+40|0}i=u;return}function Wr(a,b){a=a|0;b=b|0;return c[(c[a+384>>2]|0)+(b<<2)>>2]|0}function Xr(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;j=i;f=c[(c[a+384>>2]|0)+(d<<2)>>2]|0;g=a+244|0;h=a+256|0;d=c[h>>2]|0;if(d){a=d;a=Wg(f,a)|0;i=j;return a|0}e=b[a+296>>1]|0;if(!(e<<16>>16)){a=c[g>>2]|0;c[h>>2]=a;a=Wg(f,a)|0;i=j;return a|0}d=b[a+294>>1]|0;if(!(d<<16>>16)){a=c[a+248>>2]|0;c[h>>2]=a;a=Wg(f,a)|0;i=j;return a|0}else{l=d<<16>>16;m=c[g>>2]|0;k=(m|0)<0?0-m|0:m;g=d<<16>>16<0?0-l|0:l;d=ea(k&65535,g)|0;g=ea(k>>>16,g)|0;k=d+(g<<16|8192)|0;k=(g>>>16)+(k>>>0>>0&1)<<18|k>>>14;d=c[a+248>>2]|0;g=e<<16>>16;a=(d|0)<0?0-d|0:d;n=e<<16>>16<0?0-g|0:g;e=ea(a&65535,n)|0;n=ea(a>>>16,n)|0;a=e+(n<<16|8192)|0;a=(n>>>16)+(a>>>0>>0&1)<<18|a>>>14;a=Sg((m^l|0)>-1?k:0-k|0,(d^g|0)>-1?a:0-a|0)|0;c[h>>2]=a;a=Wg(f,a)|0;i=j;return a|0}return 0}function Yr(a,b,d){a=a|0;b=b|0;d=d|0;c[(c[a+384>>2]|0)+(b<<2)>>2]=d;return}function Zr(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;k=i;h=a+244|0;j=a+256|0;f=c[j>>2]|0;do if(!f){f=b[a+296>>1]|0;if(!(f<<16>>16)){f=c[h>>2]|0;c[j>>2]=f;break}g=b[a+294>>1]|0;if(!(g<<16>>16)){f=c[a+248>>2]|0;c[j>>2]=f;break}else{m=g<<16>>16;n=c[h>>2]|0;l=(n|0)<0?0-n|0:n;h=g<<16>>16<0?0-m|0:m;g=ea(l&65535,h)|0;h=ea(l>>>16,h)|0;l=g+(h<<16|8192)|0;l=(h>>>16)+(l>>>0>>0&1)<<18|l>>>14;g=c[a+248>>2]|0;h=f<<16>>16;q=(g|0)<0?0-g|0:g;p=f<<16>>16<0?0-h|0:h;o=ea(q&65535,p)|0;p=ea(q>>>16,p)|0;f=o+(p<<16|8192)|0;f=(p>>>16)+(f>>>0>>0&1)<<18|f>>>14;f=Sg((n^m|0)>-1?l:0-l|0,(g^h|0)>-1?f:0-f|0)|0;c[j>>2]=f;break}}while(0);q=Xg(e,f)|0;c[(c[a+384>>2]|0)+(d<<2)>>2]=q;i=k;return}function _r(a,b,d){a=a|0;b=b|0;d=d|0;b=(c[a+384>>2]|0)+(b<<2)|0;c[b>>2]=(c[b>>2]|0)+d;return}function $r(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;k=i;h=a+244|0;j=a+256|0;f=c[j>>2]|0;do if(!f){f=b[a+296>>1]|0;if(!(f<<16>>16)){f=c[h>>2]|0;c[j>>2]=f;break}g=b[a+294>>1]|0;if(!(g<<16>>16)){f=c[a+248>>2]|0;c[j>>2]=f;break}else{m=g<<16>>16;n=c[h>>2]|0;l=(n|0)<0?0-n|0:n;h=g<<16>>16<0?0-m|0:m;g=ea(l&65535,h)|0;h=ea(l>>>16,h)|0;l=g+(h<<16|8192)|0;l=(h>>>16)+(l>>>0>>0&1)<<18|l>>>14;g=c[a+248>>2]|0;h=f<<16>>16;q=(g|0)<0?0-g|0:g;p=f<<16>>16<0?0-h|0:h;o=ea(q&65535,p)|0;p=ea(q>>>16,p)|0;f=o+(p<<16|8192)|0;f=(p>>>16)+(f>>>0>>0&1)<<18|f>>>14;f=Sg((n^m|0)>-1?l:0-l|0,(g^h|0)>-1?f:0-f|0)|0;c[j>>2]=f;break}}while(0);p=Xg(e,f)|0;q=(c[a+384>>2]|0)+(d<<2)|0;c[q>>2]=(c[q>>2]|0)+p;i=k;return}function as(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;h=b[a+298>>1]|0;e=h<<16>>16;h=h<<16>>16==16384;do if(!h){f=b[a+300>>1]|0;d=b[a+296>>1]|0;if(f<<16>>16==16384){g=d<<16>>16;c[a+564>>2]=g;d=b[a+294>>1]|0;break}else{k=b[a+294>>1]|0;g=(ea(d<<16>>16,f<<16>>16)|0)+(ea(k<<16>>16,e)|0)>>14;c[a+564>>2]=g;d=k;break}}else{d=b[a+294>>1]|0;g=d<<16>>16;c[a+564>>2]=g}while(0);do if(d<<16>>16!=16384){d=a+572|0;if((b[a+296>>1]|0)==16384){c[d>>2]=87;break}else{c[d>>2]=88;break}}else c[a+572>>2]=86;while(0);do if((b[a+290>>1]|0)!=16384){d=a+576|0;if((b[a+292>>1]|0)==16384){c[d>>2]=87;break}else{c[d>>2]=89;break}}else c[a+576>>2]=86;while(0);d=a+584|0;c[d>>2]=16;e=a+588|0;c[e>>2]=17;f=a+564|0;do if((g|0)==16384){if(h){c[d>>2]=18;c[e>>2]=19;break}if((b[a+300>>1]|0)==16384){c[d>>2]=20;c[e>>2]=21}}while(0);if((((g|0)<0?0-g|0:g)|0)>=1024){a=a+256|0;c[a>>2]=0;i=j;return}c[f>>2]=16384;a=a+256|0;c[a>>2]=0;i=j;return}function bs(a,b,c){a=a|0;b=b|0;c=c|0;a=i;if((b|0)>-1){c=c+b|0;b=(b|0)!=0&(c|0)<0?0:c;i=a;return b|0}else{b=b-c|0;b=(b|0)>0?0:b;i=a;return b|0}return 0}function cs(a,b,c){a=a|0;b=b|0;c=c|0;a=i;if((b|0)>-1){c=b+32+c|0;i=a;return ((b|0)!=0&(c|0)>0?c&-64:0)|0}else{b=0-(32-b+c&-64)|0;i=a;return ((b|0)>0?0:b)|0}return 0}function ds(a,b,c){a=a|0;b=b|0;c=c|0;a=i;if((b|0)>-1){c=b+63+c|0;i=a;return ((b|0)!=0&(c|0)>0?c&-64:0)|0}else{b=0-(63-b+c&-64)|0;i=a;return ((b|0)>0?0:b)|0}return 0}function es(a,b,c){a=a|0;b=b|0;c=c|0;a=i;if((b|0)>-1){c=c+b|0;i=a;return ((b|0)!=0&(c|0)>0?c&-64:0)|0}else{b=0-(c-b&-64)|0;i=a;return ((b|0)>0?0:b)|0}return 0}function fs(a,b,c){a=a|0;b=b|0;c=c|0;a=i;if((b|0)>-1){c=c+b&-64|32;b=(b|0)!=0&(c|0)<0?0:c;i=a;return b|0}else{b=0-(c-b&-64|32)|0;b=(b|0)>0?0:b;i=a;return b|0}return 0}function gs(a,b,c){a=a|0;b=b|0;c=c|0;a=i;if((b|0)>-1){c=b+16+c|0;i=a;return ((b|0)!=0&(c|0)>0?c&-32:0)|0}else{b=0-(16-b+c&-32)|0;i=a;return ((b|0)>0?0:b)|0}return 0}function hs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;e=c[a+480>>2]|0;f=c[a+484>>2]|0;a=c[a+476>>2]|0;if((b|0)>-1){f=d+b-e+f&0-a;b=((b|0)!=0&(f|0)<0?0:f)+e|0;i=g;return b|0}else{b=0-(d-b+f-e&0-a)|0;b=((b|0)>0?0:b)-e|0;i=g;return b|0}return 0}function is(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;e=c[a+480>>2]|0;f=c[a+484>>2]|0;a=c[a+476>>2]|0;if((b|0)>-1){f=d+b-e+f|0;f=f-((f|0)%(a|0)|0)|0;b=((b|0)!=0&(f|0)<0?0:f)+e|0;i=g;return b|0}else{b=d-b+f-e|0;b=((b|0)%(a|0)|0)-b|0;b=((b|0)>0?0:b)-e|0;i=g;return b|0}return 0}function js(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;if(b>>>0>d>>>0){i=t;return}s=c[a+12>>2]|0;if(!(s>>>0>e>>>0&s>>>0>f>>>0)){i=t;return}s=a+8|0;q=c[s>>2]|0;r=c[q+(e<<3)>>2]|0;q=c[q+(f<<3)>>2]|0;n=(r|0)>(q|0);g=n?r:q;r=n?q:r;q=n?e:f;n=n?f:e;f=c[a>>2]|0;o=c[f+(n<<3)>>2]|0;l=c[f+(q<<3)>>2]|0;m=a+4|0;h=c[m>>2]|0;n=c[h+(n<<3)>>2]|0;p=n-o|0;e=c[h+(q<<3)>>2]|0;q=e-l|0;if((g|0)==(r|0)){do{a=c[f+(b<<3)>>2]|0;c[h+(b<<3)>>2]=((a|0)>(o|0)?q:p)+a;b=b+1|0}while(b>>>0<=d>>>0);i=t;return}k=e-n|0;j=g-r|0;g=f;e=0;f=0;while(1){g=c[g+(b<<3)>>2]|0;do if((g|0)>(o|0)){if((g|0)>=(l|0)){g=g+q|0;break}if(!(f<<24>>24)){e=Xg(k,j)|0;f=1}g=(Wg((c[(c[s>>2]|0)+(b<<3)>>2]|0)-r|0,e)|0)+n|0;h=c[m>>2]|0}else g=g+p|0;while(0);c[h+(b<<3)>>2]=g;b=b+1|0;if(b>>>0>d>>>0)break;g=c[a>>2]|0}i=t;return}function ks(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+16|0;n=s;if(!(a[d+368>>0]&1)){m=d+72|0;l=c[m>>2]|0;m=c[m+4>>2]|0;p=c[d+80>>2]|0;q=c[d+84>>2]|0;r=c[d+88>>2]|0;j=d+92|0;c[n+0>>2]=c[j+0>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];j=d+288|0}else{m=d+36|0;l=c[m>>2]|0;m=c[m+4>>2]|0;p=c[d+44>>2]|0;q=c[d+48>>2]|0;r=c[d+52>>2]|0;j=d+56|0;c[n+0>>2]=c[j+0>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];j=d+286|0}o=p&65535;k=b[j>>1]|0;j=k&65535;if((k&65535)<(o&65535)){t=g;c[t>>2]=l;c[t+4>>2]=m;b[g+8>>1]=o;b[g+10>>1]=p>>>16;c[g+12>>2]=q;c[g+16>>2]=r;p=g+20|0;c[p+0>>2]=c[n+0>>2];c[p+4>>2]=c[n+4>>2];c[p+8>>2]=c[n+8>>2];c[p+12>>2]=c[n+12>>2];b[h>>1]=k;q=Od[c[d+572>>2]&255](d,(c[r+(j<<3)>>2]|0)-(c[q+(j<<3)>>2]|0)|0,(c[r+(j<<3)+4>>2]|0)-(c[q+(j<<3)+4>>2]|0)|0)|0;r=d+564|0;c[e>>2]=Ug(q,b[d+298>>1]|0,c[r>>2]|0)|0;c[f>>2]=Ug(q,b[d+300>>1]|0,c[r>>2]|0)|0;r=0;i=s;return r|0}if(a[d+561>>0]|0)c[d+12>>2]=134;b[h>>1]=0;t=1;i=s;return t|0}function ls(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;F=i;o=f+28|0;a:do if(g){p=f+24|0;w=f+36|0;x=f+44|0;y=f+368|0;z=f+332|0;A=f+252|0;B=f+256|0;C=f+296|0;D=f+244|0;q=f+294|0;r=f+248|0;s=f+334|0;t=f+584|0;u=f+561|0;v=f+12|0;E=1;while(1){h=c[o>>2]|0;if((h|0)<2)break;n=h+-2|0;c[o>>2]=n;j=c[p>>2]|0;k=c[j+(h+-1<<2)>>2]|0;m=k&65535;n=c[j+(n<<2)>>2]|0;if((k&65535)>>>0<(e[x>>1]|0)>>>0){h=n>>>4&15;j=d[y>>0]|0;if((j|0)==114)h=h|32;else if((j|0)==113)h=h|16;k=(b[z>>1]|0)+h|0;l=e[A>>1]|0;h=c[B>>2]|0;do if(!h){h=b[C>>1]|0;if(!(h<<16>>16)){h=c[D>>2]|0;c[B>>2]=h;break}j=b[q>>1]|0;if(!(j<<16>>16)){h=c[r>>2]|0;c[B>>2]=h;break}else{I=j<<16>>16;J=c[D>>2]|0;H=(J|0)<0?0-J|0:J;j=j<<16>>16<0?0-I|0:I;G=ea(H&65535,j)|0;j=ea(H>>>16,j)|0;H=G+(j<<16|8192)|0;H=(j>>>16)+(H>>>0>>0&1)<<18|H>>>14;G=c[r>>2]|0;j=h<<16>>16;M=(G|0)<0?0-G|0:G;L=h<<16>>16<0?0-j|0:j;K=ea(M&65535,L)|0;L=ea(M>>>16,L)|0;h=K+(L<<16|8192)|0;h=(L>>>16)+(h>>>0>>0&1)<<18|h>>>14;h=Sg((J^I|0)>-1?H:0-H|0,(G^j|0)>-1?h:0-h|0)|0;c[B>>2]=h;break}}while(0);if((Wg(l,h)|0)==(k|0)){L=n&15;M=L+-8|0;de[c[t>>2]&63](f,w,m,(((M|0)>-1?L+-7|0:M)<<6|0)/(1<>1]|0)|0)}}else if(a[u>>0]|0)c[v>>2]=134;E=E+1|0;if(E>>>0>g>>>0)break a}if(a[u>>0]|0)c[v>>2]=129;c[o>>2]=0;L=0;M=f+32|0;c[M>>2]=L;i=F;return}while(0);L=c[o>>2]|0;M=f+32|0;c[M>>2]=L;i=F;return}function ms(a,b,d,e){a=a|0;b=+b;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;k=l;j=l+16|0;c[j+0>>2]=c[24974];c[j+4>>2]=c[24975];c[j+8>>2]=c[24976];c[j+12>>2]=c[24977];if(!d)Sa(99912,99240,74,99920);if(!(b!=0.0))Sa(99944,99240,75,99920);f=fj(d)|0;if(f){d=c[q>>2]|0;e=c[98452+(f<<3)>>2]|0;c[k>>2]=c[98448+(f<<3)>>2];c[k+4>>2]=e;_c(d|0,99544,k|0)|0;d=0;i=l;return d|0}f=c[a+8>>2]|0;if(!f){g=Eh(c[d>>2]|0,c[a+12>>2]|0,0,e)|0;h=10}else if((f|0)==1){g=Gh(c[d>>2]|0,c[a+12>>2]|0,c[a+16>>2]|0,0,e)|0;h=10}if((h|0)==10?(g|0)!=0:0){e=c[q>>2]|0;h=c[98448+(g<<3)>>2]|0;a=c[98452+(g<<3)>>2]|0;c[k>>2]=99;c[k+4>>2]=h;c[k+8>>2]=a;_c(e|0,99504,k|0)|0;gj(c[d>>2]|0)|0;d=0;i=l;return d|0}f=Uh(c[e>>2]|0,1970170211)|0;if(f){a=c[q>>2]|0;h=c[98448+(f<<3)>>2]|0;g=c[98452+(f<<3)>>2]|0;c[k>>2]=108;c[k+4>>2]=h;c[k+8>>2]=g;_c(a|0,99504,k|0)|0;Jh(c[e>>2]|0)|0;gj(c[d>>2]|0)|0;d=0;i=l;return d|0}f=Sh(c[e>>2]|0,~~(b*64.0),0,4608,72)|0;if(!f){zh(c[e>>2]|0,j,0);d=1;i=l;return d|0}else{a=c[q>>2]|0;h=c[98448+(f<<3)>>2]|0;g=c[98452+(f<<3)>>2]|0;c[k>>2]=119;c[k+4>>2]=h;c[k+8>>2]=g;_c(a|0,99504,k|0)|0;Jh(c[e>>2]|0)|0;gj(c[d>>2]|0)|0;d=0;i=l;return d|0}return 0}function ns(d){d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0,r=0;m=i;i=i+16|0;l=m+4|0;k=m;if(!(c[d+4>>2]|0))Sa(99648,99240,264,99712);j=d+20|0;if(!(+g[j>>2]>0.0))Sa(99736,99240,265,99712);e=c[d+8>>2]|0;if(!e){if(!(c[d+12>>2]|0))Sa(99752,99240,268,99712)}else if((e|0)==1){if(!(c[d+12>>2]|0))Sa(99752,99240,268,99712);if(!(c[d+16>>2]|0))Sa(99752,99240,268,99712)}else Sa(99752,99240,268,99712);c[d>>2]=Pj(4)|0;e=d+52|0;g[e>>2]=0.0;f=d+60|0;g[f>>2]=0.0;h=d+64|0;g[h>>2]=0.0;c[d+28>>2]=0;g[d+32>>2]=0.0;c[d+24>>2]=1;c[d+40>>2]=1;c[d+36>>2]=1;a[d+44>>0]=16;a[d+45>>0]=64;a[d+46>>0]=112;a[d+47>>0]=64;a[d+48>>0]=16;if(!(ms(d,+g[j>>2]*100.0,l,k)|0)){d=-1;i=m;return d|0}k=c[k>>2]|0;o=+g[j>>2];n=+Wfa(o*(+(b[k+80>>1]|0)*.000244140625));g[d+68>>2]=n>-2.0?-2.0:n;o=+Wfa(o*(+(b[k+82>>1]|0)*.000244140625));g[d+72>>2]=o<1.0?1.0:o;r=c[k+88>>2]|0;q=c[r+28>>2]|0;j=c[r+32>>2]|0;o=+(c[r+24>>2]>>6|0)/100.0;g[f>>2]=o;n=+(q>>6|0)/100.0;g[h>>2]=n;p=+(j>>6|0)/100.0;g[e>>2]=p;g[d+56>>2]=p-o+n;Jh(k)|0;gj(c[l>>2]|0)|0;Oj(d,-1)|0;d=0;i=m;return d|0}function os(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+16|0;z=B;c[z>>2]=0;q=f+4|0;t=c[q>>2]|0;m=f+12|0;u=c[m>>2]|0;o=f+8|0;v=c[o>>2]|0;r=f+16|0;w=c[r>>2]|0;p=c[f>>2]|0;s=f+24|0;c[s>>2]=0;x=f+36|0;c[x>>2]=0;c[f+44>>2]=0;c[f+56>>2]=0;c[f+72>>2]=0;c[f+84>>2]=0;h=b[g>>1]|0;l=f+32|0;j=c[l>>2]|0;do if(h>>>0>j>>>0){h=h+3&-4;y=f+40|0;c[y>>2]=hh(p,4,j,h,c[y>>2]|0,z)|0;if(!(c[z>>2]|0)){c[l>>2]=h;break}else{A=c[z>>2]|0;i=B;return A|0}}while(0);j=g+2|0;h=b[j>>1]|0;l=h<<16>>16;k=f+20|0;n=c[k>>2]|0;do if((l+2|0)>>>0>n>>>0){h=l+11&-8;y=f+28|0;c[y>>2]=hh(p,40,n,h,c[y>>2]|0,z)|0;if(!(c[z>>2]|0)){c[k>>2]=h;h=b[j>>1]|0;break}else{A=c[z>>2]|0;i=B;return A|0}}while(0);c[s>>2]=h<<16>>16;c[x>>2]=b[g>>1];h=f+68|0;c[h>>2]=2;l=f+96|0;c[l>>2]=-1;if((ni(g)|0)==1){c[h>>2]=-2;c[l>>2]=1}c[q>>2]=t;c[m>>2]=u;c[o>>2]=v;c[r>>2]=w;c[f+112>>2]=0;c[f+116>>2]=0;r=c[f+28>>2]|0;h=c[s>>2]|0;if(!h){A=c[z>>2]|0;i=B;return A|0}y=r+(h*40|0)|0;m=g+12|0;l=r+((b[c[m>>2]>>1]|0)*40|0)|0;o=(h|0)>0;if(o){h=0;p=l;n=r;j=l;k=c[g+8>>2]|0;q=c[g+4>>2]|0;while(1){s=c[q>>2]|0;b[n+12>>1]=s;l=q+4|0;b[n+14>>1]=c[l>>2];s=(Wg(s,t)|0)+v|0;c[n+16>>2]=s;c[n+4>>2]=s;l=(Wg(c[l>>2]|0,u)|0)+w|0;c[n+20>>2]=l;c[n+8>>2]=l;l=d[k>>0]&3;if((l|0)==2)b[n>>1]=2;else if(!l)b[n>>1]=1;else b[n>>1]=0;c[n+36>>2]=j;c[j+32>>2]=n;if((n|0)==(p|0)){h=h+1|0;if((h|0)<(b[g>>1]|0)){j=r+((b[(c[m>>2]|0)+(h<<1)>>1]|0)*40|0)|0;l=j}else{l=n;j=n}}else{l=p;j=n}n=n+40|0;if(n>>>0>=y>>>0)break;else{p=l;k=k+1|0;q=q+8|0}}}h=c[f+40>>2]|0;x=c[x>>2]|0;l=h+(x<<2)|0;if((x|0)>0){j=c[m>>2]|0;k=0;while(1){c[h>>2]=r+((k<<16>>16)*40|0);k=(b[j>>1]|0)+1|0;h=h+4|0;if(h>>>0>=l>>>0)break;else j=j+2|0}}v=((e[(c[(c[f+108>>2]|0)+4>>2]|0)+68>>1]|0)*20|0)>>>11;if(o){j=r;n=4;o=0;s=0;l=0;h=0;u=r}else{A=c[z>>2]|0;i=B;return A|0}while(1){if((u|0)==(j|0)){p=c[u+36>>2]|0;h=b[p+12>>1]|0;q=(b[u+12>>1]|0)-(h<<16>>16)|0;l=b[p+14>>1]|0;r=(b[u+14>>1]|0)-(l<<16>>16)|0;o=0-q|0;a:do if((((r|0)<0?0-r|0:r)+((q|0)<0?o:q)|0)<(v|0)){k=p;while(1){if((k|0)==(u|0)){l=q;h=r;break a}k=c[k+36>>2]|0;j=h;h=b[k+12>>1]|0;j=(j<<16>>16)-(h<<16>>16)|0;m=l;l=b[k+14>>1]|0;m=(m<<16>>16)-(l<<16>>16)|0;if((((m|0)<0?0-m|0:m)+((j|0)<0?0-j|0:j)|0)>=(v|0)){l=j;h=m;break}}}else{l=q;h=r}while(0);j=(r|0)>=(o|0);if((r|0)<(q|0)){n=j?1:-2;m=j?q:r;k=j?r:q}else{n=j?2:-1;m=j?r:o;k=j?q:r}t=k*14|0;j=p+40|0;t=(((m|0)<0?0-m|0:m)|0)>(((k|0)<0?0-t|0:t)|0)?n:4}else{t=n;q=o;r=s}a[u+2>>0]=t;if((((r|0)<0?0-r|0:r)+((q|0)<0?0-q|0:q)|0)<(v|0)){b[u>>1]=e[u>>1]|1024;p=h}else{l=q;p=r}s=c[u+32>>2]|0;o=(b[s+12>>1]|0)-(b[u+12>>1]|0)|0;s=(b[s+14>>1]|0)-(b[u+14>>1]|0)|0;h=0-o|0;k=(s|0)>=(h|0);if((s|0)<(o|0)){m=k?1:-2;n=k?o:s;h=k?s:o}else{m=k?2:-1;n=k?s:h;h=k?o:s}k=h*14|0;n=(((n|0)<0?0-n|0:n)|0)>(((h|0)<0?0-k|0:k)|0)?m:4;a[u+3>>0]=n;h=b[u>>1]|0;k=h&65535;do if(!(k&3)){if((n|0)!=(t|0))if((t|0)==(0-n|0)){A=38;break}else break;if((n|0)==4){f=(k&1024|0)!=0;if(ah(f?l:q,f?p:r,o,s)|0){h=b[u>>1]|0;A=38}}else A=38}else A=38;while(0);if((A|0)==38){A=0;b[u>>1]=h&65535|256}u=u+40|0;if(u>>>0>=y>>>0)break;else h=p}A=c[z>>2]|0;i=B;return A|0}function ps(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+48|0;B=C+12|0;y=C+16|0;z=C;v=c[f>>2]|0;m=c[f+40>>2]|0;k=c[f+36>>2]|0;x=m+(k<<2)|0;n=y+0|0;o=n+31|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;w=c[f+(g*28|0)+68>>2]|0;w=(w|0)<0?0-w|0:w;A=f+(g*28|0)+44|0;c[A>>2]=0;h=c[f+28>>2]|0;l=c[f+24>>2]|0;j=h+(l*40|0)|0;l=(l|0)>0;if(!g){if(l)do{c[h+24>>2]=b[h+12>>1];c[h+28>>2]=b[h+14>>1];h=h+40|0}while(h>>>0>>0)}else if(l)do{c[h+24>>2]=b[h+14>>1];c[h+28>>2]=b[h+12>>1];h=h+40|0}while(h>>>0>>0);if((k|0)<=0){B=0;i=C;return B|0}u=f+(g*28|0)+48|0;t=f+(g*28|0)+52|0;l=0;n=w;a:while(1){k=c[m>>2]|0;h=c[k+36>>2]|0;b:do if((k|0)==(h|0))h=n;else{j=a[h+3>>0]|0;s=j<<24>>24;c:do if(((j<<24>>24<0?0-s|0:s)|0)==(w|0)?(r=a[k+3>>0]|0,s=r<<24>>24,((r<<24>>24<0?0-s|0:s)|0)==(w|0)):0){while(1){s=j<<24>>24;if(((j<<24>>24<0?0-s|0:s)|0)!=(w|0))break;if((h|0)==(k|0))break c;s=c[h+36>>2]|0;j=a[s+3>>0]|0;h=s}k=c[h+32>>2]|0}while(0);j=-32e3;g=32e3;f=0;o=0;s=k;h=n;while(1){if(f){r=c[s+24>>2]|0;g=(r|0)<(g|0)?r:g;j=(r|0)>(j|0)?r:j;if((s|0)==(k|0)?1:(a[s+3>>0]|0)!=(h|0)){c[l+44>>2]=s;b[l+2>>1]=(g+j|0)>>>1;j=c[l+40>>2]|0;if((b[s>>1]|b[j>>1])&3)a[l>>0]=d[l>>0]|1;f=c[s+28>>2]|0;j=c[j+28>>2]|0;g=(j|0)<(f|0)?j:f;j=(j|0)>(f|0)?j:f;b[l+4>>1]=g;b[l+6>>1]=j;b[l+8>>1]=j-g;l=0;f=0}}else f=0;if((s|0)==(k|0))if(!(o<<24>>24))r=1;else break b;else r=o;if(!f){p=a[s+3>>0]|0;q=p<<24>>24;if(((p<<24>>24<0?0-q|0:q)|0)==(w|0)){c[B>>2]=0;h=c[A>>2]|0;l=c[u>>2]|0;if((h|0)<(l|0))j=c[t>>2]|0;else{if((l|0)>44739241){j=28;break a}h=(l>>2)+4|0;j=h+l|0;j=(h|0)<0|(j|0)>44739242?44739242:j;l=hh(v,48,l,j,c[t>>2]|0,B)|0;c[t>>2]=l;h=c[B>>2]|0;if(h){j=46;break a}c[u>>2]=j;h=c[A>>2]|0;j=l}c[A>>2]=h+1;l=j+(h*48|0)|0;a[l>>0]=0;g=j+(h*48|0)+1|0;n=g+0|0;f=y+0|0;o=n+31|0;do{a[n>>0]=a[f>>0]|0;n=n+1|0;f=f+1|0}while((n|0)<(o|0));c[j+(h*48|0)+32>>2]=32e3;f=j+(h*48|0)+36|0;c[f+0>>2]=c[z+0>>2];c[f+4>>2]=c[z+4>>2];c[f+8>>2]=c[z+8>>2];a[g>>0]=p;g=c[s+24>>2]|0;c[j+(h*48|0)+40>>2]=s;c[j+(h*48|0)+44>>2]=s;j=g;f=1;h=q}else f=0}o=r;s=c[s+32>>2]|0}}while(0);m=m+4|0;if(m>>>0>=x>>>0){j=34;break}else n=h}if((j|0)==28){c[B>>2]=64;B=64;i=C;return B|0}else if((j|0)==34){B=c[A>>2]|0;h=c[t>>2]|0;g=h+(B*48|0)|0;if((B|0)<=0){B=0;i=C;return B|0}do{j=c[h+40>>2]|0;k=c[h+44>>2]|0;l=c[j+28>>2]|0;f=c[k+28>>2]|0;do if((j|0)!=(k|0)){j=c[(c[j+36>>2]|0)+28>>2]|0;if((l|0)<(f|0)){if((l|0)>(j|0)){B=h+8|0;b[B>>1]=(e[B>>1]|0)+((l-j|0)>>>1)}j=c[(c[k+32>>2]|0)+28>>2]|0;if((j|0)<=(f|0))break;B=h+8|0;b[B>>1]=(e[B>>1]|0)+((j-f|0)>>>1);break}else{if((j|0)>(l|0)){B=h+8|0;b[B>>1]=(e[B>>1]|0)+((j-l|0)>>>1)}j=c[(c[k+32>>2]|0)+28>>2]|0;if((f|0)<=(j|0))break;B=h+8|0;b[B>>1]=(e[B>>1]|0)+((f-j|0)>>>1);break}}while(0);h=h+48|0}while(h>>>0>>0);h=0;i=C;return h|0}else if((j|0)==46){i=C;return h|0}return 0}function qs(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=i;f=c[d+(e*28|0)+52>>2]|0;s=c[d+(e*28|0)+44>>2]|0;u=f+(s*48|0)|0;r=c[(c[d+108>>2]|0)+40>>2]|0;q=r<<3;q=(q+2047|0)>>>0<4095?1:(q|0)/2048|0;r=(r*6e3|0)/2048|0;s=(s|0)>0;if(!s){i=w;return}g=c[d+(e*28|0)+68>>2]|0;o=f;do{if((a[o+1>>0]|0)==(g|0)?(c[o+40>>2]|0)!=(c[o+44>>2]|0):0){h=b[o+2>>1]|0;j=o+4|0;k=o+6|0;l=h<<16>>16;m=o+32|0;n=o+20|0;p=f;do{e=b[p+2>>1]|0;if((e<<16>>16>h<<16>>16?(g|0)==(0-(a[p+1>>0]|0)|0):0)?(t=b[j>>1]|0,x=b[k>>1]|0,d=b[p+4>>1]|0,y=b[p+6>>1]|0,t=((x<<16>>16>y<<16>>16?y:x)<<16>>16)-((t<<16>>16>16?d:t)<<16>>16)|0,(t|0)>=(q|0)):0){e=((r|0)/(t|0)|0)+((e<<16>>16)-l)|0;if((e|0)<(c[m>>2]|0)){c[m>>2]=e;c[n>>2]=p}d=p+32|0;if((e|0)<(c[d>>2]|0)){c[d>>2]=e;c[p+20>>2]=o}}p=p+48|0}while(p>>>0>>0)}o=o+48|0}while(o>>>0>>0);if(!s){i=w;return}do{e=f+20|0;d=c[e>>2]|0;if((d|0)!=0?(v=d+20|0,(c[v>>2]|0)!=(f|0)):0){c[e>>2]=0;c[f+24>>2]=c[v>>2]}f=f+48|0}while(f>>>0>>0);i=w;return}function rs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+16|0;j=n;e=c[a>>2]|0;if((e|0)==1){i=n;return}if(e>>>0>1){g=1;do{a:do if(g){h=g;do{e=b+(h*12|0)|0;h=h+-1|0;f=b+(h*12|0)|0;if((c[e>>2]|0)>=(c[f>>2]|0))break a;c[j+0>>2]=c[e+0>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[e+0>>2]=c[f+0>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[f+0>>2]=c[j+0>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2]}while((h|0)!=0)}while(0);g=g+1|0;e=c[a>>2]|0}while(g>>>0>>0);m=e>>>0>1;if(m){k=0;l=c[b>>2]|0;f=1;while(1){h=((c[b+(f*12|0)>>2]|0)-l|0)>(d|0);j=e+-1|0;g=(f|0)==(j|0);if(h|g){if(!h)f=(g&1)+f|0;if(k>>>0>>0){g=k;h=0;do{o=b+(g*12|0)|0;h=(c[o>>2]|0)+h|0;c[o>>2]=0;g=g+1|0}while((g|0)!=(f|0));g=f}else{g=k;h=0}c[b+(k*12|0)>>2]=(h>>>0)/(g>>>0)|0;if(f>>>0>>0){g=f+1|0;h=g;g=c[b+(g*12|0)>>2]|0}else{h=k;g=l}}else{h=k;g=l}f=f+1|0;if(f>>>0>=e>>>0)break;else{k=h;l=g}}if(m){g=e;e=1;h=1;while(1){f=b+(h*12|0)|0;if(!(c[f>>2]|0))f=g;else{o=b+(e*12|0)|0;c[o+0>>2]=c[f+0>>2];c[o+4>>2]=c[f+4>>2];c[o+8>>2]=c[f+8>>2];f=c[a>>2]|0;e=e+1|0}h=h+1|0;if(h>>>0>=f>>>0)break;else g=f}}else e=1}else e=1}else e=1;c[a>>2]=e;i=n;return}function ss(a){a=a|0;var b=0,d=0,e=0;d=i;b=c[a>>2]|0;if((a|0)==0|(b|0)==0){i=d;return}c[a+44>>2]=0;c[a+48>>2]=0;e=a+52|0;eh(b,c[e>>2]|0);c[e>>2]=0;c[a+56>>2]=0;c[a+60>>2]=0;e=a+64|0;eh(b,c[e>>2]|0);c[e>>2]=0;c[a+72>>2]=0;c[a+76>>2]=0;e=a+80|0;eh(b,c[e>>2]|0);c[e>>2]=0;c[a+84>>2]=0;c[a+88>>2]=0;e=a+92|0;eh(b,c[e>>2]|0);c[e>>2]=0;e=a+40|0;eh(b,c[e>>2]|0);c[e>>2]=0;c[a+32>>2]=0;c[a+36>>2]=0;e=a+28|0;eh(b,c[e>>2]|0);c[e>>2]=0;c[a+24>>2]=0;c[a+20>>2]=0;c[a>>2]=0;i=d;return}function ts(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;k=(f|0)==0;if(k){h=e+12|0;g=e+4|0}else{h=e+16|0;g=e+8|0}m=c[g>>2]|0;o=c[h>>2]|0;g=d+(f*704|0)+740|0;h=d+(f*704|0)+744|0;if((c[g>>2]|0)==(m|0)?(c[h>>2]|0)==(o|0):0){i=p;return}c[g>>2]=m;c[h>>2]=o;n=d+964|0;h=c[n>>2]|0;a:do if(h){g=0;while(1){if(c[d+(g*28|0)+992>>2]&4)break;g=g+1|0;if(g>>>0>=h>>>0)break a}j=Wg(c[d+(g*28|0)+980>>2]|0,c[e+8>>2]|0)|0;g=b[(c[(c[d+4>>2]|0)+88>>2]|0)+12>>1]|0;h=c[(c[d+36>>2]|0)+12>>2]|0;if(!h)g=40;else g=(g&65535)>>>0<=h>>>0&(g&65535)>5?52:40;g=g+j&-64;if((j|0)!=(g|0)&(f|0)==1)m=Ug(m,g,j)|0}while(0);c[d+(f*704|0)+44>>2]=m;c[d+(f*704|0)+48>>2]=o;if(k){c[d+8>>2]=m;c[d+16>>2]=o}else{c[d+12>>2]=m;c[d+20>>2]=o}g=d+(f*704|0)+52|0;if(c[g>>2]|0){h=0;do{l=Wg(c[d+(f*704|0)+(h*12|0)+56>>2]|0,m)|0;c[d+(f*704|0)+(h*12|0)+60>>2]=l;c[d+(f*704|0)+(h*12|0)+64>>2]=l;h=h+1|0}while(h>>>0<(c[g>>2]|0)>>>0)}a[d+(f*704|0)+256>>0]=(Wg(c[d+(f*704|0)+252>>2]|0,m)|0)<40&1;if((f|0)!=1){i=p;return}if(!(c[n>>2]|0)){i=p;return}else l=0;do{k=d+(l*28|0)+968|0;g=(Wg(c[k>>2]|0,m)|0)+o|0;h=d+(l*28|0)+972|0;c[h>>2]=g;j=d+(l*28|0)+976|0;c[j>>2]=g;g=d+(l*28|0)+980|0;f=(Wg(c[g>>2]|0,m)|0)+o|0;c[d+(l*28|0)+984>>2]=f;e=d+(l*28|0)+988|0;c[e>>2]=f;f=d+(l*28|0)+992|0;c[f>>2]=c[f>>2]&-2;g=Wg((c[k>>2]|0)-(c[g>>2]|0)|0,m)|0;if((g+48|0)>>>0<97){k=(g|0)<0;g=k?0-g|0:g;if((g|0)<32)g=0;else g=(g|0)<48?32:64;h=(c[h>>2]|0)+32&-64;c[j>>2]=h;c[e>>2]=h-(k?0-g|0:g);c[f>>2]=c[f>>2]|1}l=l+1|0}while(l>>>0<(c[n>>2]|0)>>>0);i=p;return}function us(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=i;i=i+16|0;w=A;g=ps(e,f)|0;if(g){z=g;i=A;return z|0}qs(e,f);t=e+(f*28|0)+44|0;u=c[e>>2]|0;m=(c[e+108>>2]|0)+44|0;h=c[e+(f*28|0)+52>>2]|0;j=c[t>>2]|0;r=h+(j*48|0)|0;x=e+(f*28|0)+56|0;c[x>>2]=0;q=(f|0)==0;g=e+12|0;s=c[(q?e+4|0:g)>>2]|0;if(q)q=Xg(64,c[g>>2]|0)|0;else q=0;p=Wg(c[m+(f*704|0)+204>>2]|0,s)|0;p=Xg((p|0)>16?16:p,s)|0;a:do if((j|0)>0){o=q*3|0;l=e+(f*28|0)+64|0;b:while(1){k=b[h+8>>1]|0;c:do if((k|0)>=(q|0)?!((c[h+24>>2]|0)!=0&(k<<1|0)<(o|0)):0){e=c[x>>2]|0;d:do if((e|0)>0){n=c[l>>2]|0;g=b[h+2>>1]|0;k=g<<16>>16;m=h+1|0;j=0;while(1){f=n+(j*48|0)|0;B=k-(b[f>>1]|0)|0;if((((B|0)<0?0-B|0:B)|0)<(p|0)?(v=a[n+(j*48|0)+13>>0]|0,v<<24>>24==(a[m>>0]|0)):0){m=v;break}j=j+1|0;if((j|0)>=(e|0)){z=16;break d}}if(f){c[h+16>>2]=c[n+(j*48|0)+40>>2];B=n+(j*48|0)+44|0;c[(c[B>>2]|0)+16>>2]=h;c[B>>2]=h;break c}}else{m=h+1|0;g=b[h+2>>1]|0;z=16}while(0);if((z|0)==16){z=0;m=a[m>>0]|0}g=wu(t,g<<16>>16,m<<24>>24,u,w)|0;if(g)break b;g=h+1|0;m=h+2|0;j=c[w>>2]|0;f=j+0|0;e=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(e|0));c[j+40>>2]=h;c[j+44>>2]=h;a[j+13>>0]=a[g>>0]|0;B=b[m>>1]|0;b[j>>1]=B;B=Wg(B<<16>>16,s)|0;c[j+4>>2]=B;c[j+8>>2]=B;c[h+16>>2]=h}while(0);h=h+48|0;if(h>>>0>=r>>>0){g=l;break a}}i=A;return g|0}else g=e+(f*28|0)+64|0;while(0);j=c[g>>2]|0;B=c[x>>2]|0;r=j+(B*48|0)|0;if((B|0)>0)h=j;else{B=0;i=A;return B|0}do{g=c[h+40>>2]|0;if(g){f=g;do{c[f+12>>2]=h;f=c[f+16>>2]|0}while((f|0)!=(g|0))}h=h+48|0}while(h>>>0>>0);do{n=c[j+40>>2]|0;p=j+24|0;q=j+28|0;h=0;g=0;o=n;do{l=(a[o>>0]&1^1)&255;h=(l^1)+h|0;g=l+g|0;l=o+24|0;f=c[l>>2]|0;if((f|0)!=0?(y=c[f+12>>2]|0,(y|0)!=0):0)k=(y|0)!=(j|0)&1;else k=0;e=o+20|0;f=c[e>>2]|0;if(!f){if(k<<24>>24)z=32}else if(!((c[f+12>>2]|0)==0&k<<24>>24==0))z=32;do if((z|0)==32){z=0;m=k<<24>>24!=0;k=c[(m?l:e)>>2]|0;f=c[(m?q:p)>>2]|0;if(!((f|0)!=0?(B=(b[j>>1]|0)-(b[f>>1]|0)|0,x=(b[o+2>>1]|0)-(b[k+2>>1]|0)|0,(((x|0)<0?0-x|0:x)|0)>=(((B|0)<0?0-B|0:B)|0)):0))f=c[k+12>>2]|0;if(m){c[q>>2]=f;B=f+12|0;a[B>>0]=d[B>>0]|2;break}else{c[p>>2]=f;break}}while(0);o=c[o+16>>2]|0}while((o|0)!=(n|0));a[j+12>>0]=((h|0)<1|(h|0)<(g|0))&1^1;if((c[q>>2]|0)!=0?(c[p>>2]|0)!=0:0)c[q>>2]=0;j=j+48|0}while(j>>>0>>0);g=0;i=A;return g|0}function vs(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;m=d+44|0;n=(e|0)==1;if(!(b&4)){i=q;return f|0}if(a[m+(e*704|0)+212>>0]|0){i=q;return f|0}o=(f|0)<0?0-f|0:f;if(n)if(!(b&2))if((h&2|0)!=0&(o|0)<192)d=o;else p=7;else p=19;else if(!(b&1))p=7;else p=19;do if((p|0)==7){if(!(g&1))h=(o|0)<56?56:o;else h=(o|0)<80?64:o;if(c[m+(e*704|0)+8>>2]|0){d=c[m+(e*704|0)+16>>2]|0;p=h-d|0;if((((p|0)<0?0-p|0:p)|0)<40){d=(d|0)<48?48:d;break}if((h|0)>=192){d=h+32&-64;break}d=h&63;g=h&-64;if(d>>>0>=10)if(d>>>0<32){d=g|10;break}else{d=d>>>0<54?g|54:h;break}else d=h}else d=h}else if((p|0)==19){h=c[m+(e*704|0)+8>>2]|0;if((h|0)>0){k=98;l=0;g=o;while(1){r=c[m+(e*704|0)+(l*12|0)+16>>2]|0;d=o-r|0;d=(d|0)<0?0-d|0:d;j=(d|0)<(k|0);g=j?r:g;l=l+1|0;if((l|0)==(h|0))break;else k=j?d:k}d=g+32&-64;if((g|0)>(o|0))d=(d+-48|0)<(o|0)?g:o;else p=23}else{d=o+32&-64;g=o;p=23}if((p|0)==23)d=(d|48|0)>(o|0)?g:o;if(n){if((d|0)<=63){d=64;break}d=d+16&-64;break}if(b&8){if((d|0)<64){d=64;break}d=d+32&-64;break}if((d|0)<48){d=d+64>>1;break}if((d|0)>=128){d=d+32&-64;break}d=d+22&-64;r=d-o|0;if((((r|0)<0?0-r|0:r)|0)>15)if((o|0)<48)d=o+64>>1;else d=o}while(0);r=(f|0)>-1?d:0-d|0;i=q;return r|0}function ws(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;f=c[a+28>>2]|0;t=c[a+24>>2]|0;w=f+(t*40|0)|0;x=c[a+(d*28|0)+64>>2]|0;a=c[a+(d*28|0)+56>>2]|0;v=(d|0)==0;u=v?64:128;if(!((a|0)>0&(t|0)>0)){i=y;return}o=(d|0)==1;p=x+8|0;q=x+4|0;t=a+-1|0;r=x+(t*48|0)|0;s=x+(t*48|0)+8|0;t=x+(t*48|0)+4|0;n=a*48|0;l=(n|0)/48|0;m=(n|0)<432;n=(n|0)>0;do{k=e[f>>1]|0;if(!((k&u|0)!=0|(k&768|0)==256)){if(o){a=f+8|0;k=b[f+14>>1]|0}else{a=f+4|0;k=b[f+12>>1]|0}d=c[a>>2]|0;a=b[x>>1]|0;a:do if(((a<<16>>16)-k|0)>-1)a=(c[p>>2]|0)+d-(c[q>>2]|0)|0;else{if((k-(b[r>>1]|0)|0)>-1){a=(c[s>>2]|0)+d-(c[t>>2]|0)|0;break}b:do if(m){c:do if(n){d=a;g=0;while(1){a=g+1|0;if((d<<16>>16|0)>=(k|0)){a=g;break c}if((a|0)>=(l|0))break c;d=b[x+(a*48|0)>>1]|0;g=a}}else a=0;while(0);if((b[x+(a*48|0)>>1]|0)==(k|0)){a=c[x+(a*48|0)+8>>2]|0;break a}}else{d=l;h=0;while(1){while(1){if((h|0)>=(d|0)){a=h;break b}a=d+h>>1;g=b[x+(a*48|0)>>1]|0;if((k|0)<(g|0))d=a;else break}if((k|0)>(g|0))h=a+1|0;else break}a=c[x+(a*48|0)+8>>2]|0;break a}while(0);h=a+-1|0;d=x+(h*48|0)|0;g=x+(h*48|0)+16|0;j=c[g>>2]|0;if(!j){h=x+(h*48|0)+8|0;a=Xg((c[x+(a*48|0)+8>>2]|0)-(c[h>>2]|0)|0,(b[x+(a*48|0)>>1]|0)-(b[d>>1]|0)|0)|0;c[g>>2]=a;g=h}else{g=x+(h*48|0)+8|0;a=j}h=c[g>>2]|0;a=(Wg(k-(b[d>>1]|0)|0,a)|0)+h|0}while(0);if(v)c[f+16>>2]=a;else c[f+20>>2]=a;b[f>>1]=e[f>>1]|u}f=f+40|0}while(f>>>0>>0);i=y;return}function xs(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;d=c[a+28>>2]|0;s=c[a+24>>2]|0;t=d+(s*40|0)|0;g=c[a+40>>2]|0;f=c[a+36>>2]|0;r=g+(f<<2)|0;q=(b|0)==0;a=(s|0)>0;if(q)if(a){a=d;do{c[a+24>>2]=c[a+16>>2];c[a+28>>2]=c[a+4>>2];a=a+40|0}while(a>>>0>>0);p=64}else p=64;else if(a){a=d;do{c[a+24>>2]=c[a+20>>2];c[a+28>>2]=c[a+8>>2];a=a+40|0}while(a>>>0>>0);p=128}else p=128;if((f|0)>0)do{f=c[g>>2]|0;o=c[f+36>>2]|0;a:do if(f>>>0<=o>>>0){a=f;while(1){b=a;a=a+40|0;if((e[b>>1]|0)&p)break;if(a>>>0>o>>>0)break a}j=b;b:while(1){n=j>>>0>>0;if(n){h=j+40|0;if((e[j+40>>1]|0)&p){j=h;continue}}else h=j+40|0;if(h>>>0>o>>>0){k=n;break}else{m=j;k=h}while(1){l=m+80|0;if((e[m+40>>1]|0)&p)break;if(l>>>0>o>>>0){k=n;break b}else{m=k;k=l}}xu(h,k+-40|0,j,k);j=k}if((j|0)!=(b|0)){if(k)xu(h,o,j,b);if(b>>>0<=d>>>0)break;xu(f,b+-40|0,j,b);break}m=c[b+24>>2]|0;n=c[b+28>>2]|0;k=m-n|0;if((m|0)!=(n|0)){if(f>>>0>>0)do{c[f+24>>2]=(c[f+28>>2]|0)+k;f=f+40|0}while(f>>>0>>0);if(a>>>0<=o>>>0){f=a;while(1){c[b+64>>2]=(c[b+68>>2]|0)+k;a=b+80|0;if(a>>>0>o>>>0)break;else{b=f;f=a}}}}}while(0);g=g+4|0}while(g>>>0>>0);a=(s|0)>0;if(q){if(!a){i=u;return}do{c[d+16>>2]=c[d+24>>2];d=d+40|0}while(d>>>0>>0);i=u;return}else{if(!a){i=u;return}do{c[d+20>>2]=c[d+24>>2];d=d+40|0}while(d>>>0>>0);i=u;return}}function ys(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+1584|0;q=r+1456|0;k=r;p=r+1452|0;f=c[e+100>>2]|0;g=q+0|0;h=g+120|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));c[q>>2]=f;l=d+52|0;c[l>>2]=0;m=d+756|0;c[m>>2]=0;f=Dh(e,c[(c[d>>2]|0)+16>>2]|0)|0;a:do if((((f|0)!=0?(Qg(e,f,1)|0)==0:0)?(j=c[e+84>>2]|0,(b[j+110>>1]|0)>=1):0)?(Cga(k|0,0,1452)|0,n=k+40|0,c[n>>2]=c[d+40>>2],c[k+8>>2]=65536,c[k+12>>2]=65536,c[k+16>>2]=0,c[k+20>>2]=0,c[k+4>>2]=e,c[k+24>>2]=0,c[k+28>>2]=0,c[q+108>>2]=k,c[q+100>>2]=0,(os(q,j+108|0)|0)==0):0){k=0;do{c[p>>2]=0;if(ps(q,k)|0)break a;qs(q,k);f=c[q+(k*28|0)+52>>2]|0;e=c[q+(k*28|0)+44>>2]|0;j=f+(e*48|0)|0;if((e|0)>0){g=0;do{h=c[f+20>>2]|0;if(((h|0)!=0?(h>>>0>f>>>0?(c[h+20>>2]|0)==(f|0):0):0)?(o=(b[f+2>>1]|0)-(b[h+2>>1]|0)|0,g>>>0<16):0){e=g+1|0;c[p>>2]=e;c[d+(k*704|0)+(g*12|0)+56>>2]=(o|0)<0?0-o|0:o;g=e}f=f+48|0}while(f>>>0>>0)}rs(p,d+(k*704|0)+56|0,((c[n>>2]|0)>>>0)/100|0);c[d+(k*704|0)+52>>2]=c[p>>2];k=k+1|0}while((k|0)<2)}while(0);g=d+40|0;if(!(c[l>>2]|0))f=((c[g>>2]|0)*50|0)/2048|0;else f=c[d+56>>2]|0;c[d+248>>2]=(f|0)/5|0;c[d+252>>2]=f;a[d+256>>0]=0;if(!(c[m>>2]|0)){o=((c[g>>2]|0)*50|0)/2048|0;l=(o|0)/5|0;p=d+952|0;c[p>>2]=l;p=d+956|0;c[p>>2]=o;d=d+960|0;a[d>>0]=0;ss(q);i=r;return}else{o=c[d+760>>2]|0;l=(o|0)/5|0;p=d+952|0;c[p>>2]=l;p=d+956|0;c[p>>2]=o;d=d+960|0;a[d>>0]=0;ss(q);i=r;return}}function zs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;if(!d){e=b+12|0;b=b+4|0}else{e=b+16|0;b=b+8|0}m=c[b>>2]|0;l=c[e>>2]|0;b=a+(d*704|0)+740|0;e=a+(d*704|0)+744|0;if((c[b>>2]|0)==(m|0)?(c[e>>2]|0)==(l|0):0){i=n;return}c[b>>2]=m;c[e>>2]=l;c[a+(d*704|0)+44>>2]=m;c[a+(d*704|0)+48>>2]=l;f=a+(d*704|0)+260|0;if(!(c[f>>2]|0)){i=n;return}else k=0;do{o=a+(d*704|0)+(k*28|0)+264|0;e=(Wg(c[o>>2]|0,m)|0)+l|0;b=a+(d*704|0)+(k*28|0)+268|0;c[b>>2]=e;g=a+(d*704|0)+(k*28|0)+272|0;c[g>>2]=e;e=a+(d*704|0)+(k*28|0)+276|0;j=(Wg(c[e>>2]|0,m)|0)+l|0;c[a+(d*704|0)+(k*28|0)+280>>2]=j;h=a+(d*704|0)+(k*28|0)+284|0;c[h>>2]=j;j=a+(d*704|0)+(k*28|0)+288|0;c[j>>2]=c[j>>2]&-2;if(((Wg((c[o>>2]|0)-(c[e>>2]|0)|0,m)|0)+48|0)>>>0<97){b=(c[b>>2]|0)+32&-64;c[g>>2]=b;b=Xg(b,m)|0;b=b-(c[e>>2]|0)|0;e=(b|0)<0;b=Wg(e?0-b|0:b,m)|0;if((b|0)<32)b=0;else b=b+32&-64;c[h>>2]=(c[g>>2]|0)-(e?0-b|0:b);c[j>>2]=c[j>>2]|1}k=k+1|0}while(k>>>0<(c[f>>2]|0)>>>0);i=n;return}function As(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=i;i=i+16|0;O=Q;M=f+(g*28|0)+52|0;h=c[M>>2]|0;m=f+(g*28|0)+44|0;p=c[m>>2]|0;n=h+(p*48|0)|0;l=ps(f,g)|0;if(l){P=l;i=Q;return P|0}if((p|0)>0)do{l=c[h+40>>2]|0;k=c[h+44>>2]|0;p=b[l>>1]|0;q=d[h>>0]|0;a[h>>0]=q&254;a:do if((l|0)!=(k|0)){j=p&3;p=l;do{p=c[p+32>>2]|0;E=j;j=e[p>>1]&3;if(!(j|E))break a}while((p|0)!=(k|0));a[h>>0]=q|1}while(0);h=h+48|0}while(h>>>0>>0);j=c[M>>2]|0;w=c[m>>2]|0;z=j+(w*48|0)|0;k=c[f+(g*28|0)+68>>2]|0;B=f+108|0;q=(c[(c[B>>2]|0)+40>>2]<<3|0)/2048|0;E=(g|0)==0?f+4|0:f+12|0;A=Xg(192,c[E>>2]|0)|0;if((w|0)>0){v=j;do{if((c[v+40>>2]|0)!=(c[v+44>>2]|0)?(a[v+1>>0]|0)==(k|0):0){n=v+2|0;m=v+4|0;o=v+6|0;r=v+32|0;s=v+36|0;t=v+20|0;w=j;do{do if((((w|0)!=(v|0)?(k|0)==(0-(a[w+1>>0]|0)|0):0)?(x=(b[w+2>>1]|0)-(b[n>>1]|0)|0,(x|0)>=0):0)?(y=b[m>>1]|0,l=b[o>>1]|0,u=b[w+4>>1]|0,p=b[w+6>>1]|0,y=((l<<16>>16>p<<16>>16?p:l)<<16>>16)-((y<<16>>16>16?u:y)<<16>>16)|0,(y|0)>=(q|0)):0){u=x<<3;h=c[r>>2]|0;do if((u|0)<(h*9|0)){if((u|0)>=(h*7|0)?(c[s>>2]|0)>=(y|0):0)break;c[r>>2]=x;c[s>>2]=y;c[t>>2]=w}while(0);p=w+32|0;l=c[p>>2]|0;if((u|0)<(l*9|0)){h=w+36|0;if((u|0)>=(l*7|0)?(c[h>>2]|0)>=(y|0):0)break;c[p>>2]=x;c[h>>2]=y;c[w+20>>2]=v}}while(0);w=w+48|0}while(w>>>0>>0)}v=v+48|0}while(v>>>0>>0);o=j;do{k=o+20|0;q=c[k>>2]|0;b:do if((((q|0)!=0?(C=q+20|0,(c[C>>2]|0)==(o|0)):0)?(D=b[q+2>>1]|0,F=b[o+2>>1]|0,D<<16>>16>F<<16>>16):0)?(G=c[o+32>>2]|0,(G|0)<(A|0)):0){n=o+36|0;m=G<<2;r=j;while(1){h=b[r+2>>1]|0;if(((((!((o|0)==(r|0)?1:h<<16>>16>F<<16>>16)?(H=c[r+20>>2]|0,(H|0)!=0):0)?(c[H+20>>2]|0)==(r|0):0)?(I=b[H+2>>1]|0,I<<16>>16>=D<<16>>16):0)?!(F<<16>>16==h<<16>>16?D<<16>>16==I<<16>>16:0):0)?(y=c[r+32>>2]|0,(y|0)>(G|0)&(m|0)>(y|0)):0){if((c[n>>2]|0)<((c[r+36>>2]|0)*3|0))break;else l=j;do{h=l+20|0;p=c[h>>2]|0;do if((p|0)==(r|0)){c[h>>2]=0;c[l+24>>2]=q}else{if((p|0)!=(H|0))break;c[h>>2]=0;c[l+24>>2]=o}while(0);l=l+48|0}while(l>>>0>>0)}r=r+48|0;if(r>>>0>=z>>>0)break b}c[C>>2]=0;c[k>>2]=0}while(0);o=o+48|0}while(o>>>0>>0);do{h=j+20|0;l=c[h>>2]|0;do if((l|0)!=0?(J=l+28|0,K=c[J>>2]|0,c[J>>2]=K+1,L=l+20|0,(c[L>>2]|0)!=(j|0)):0){c[h>>2]=0;I=c[l+32>>2]|0;if((I|0)>=(A|0)?(c[j+32>>2]|0)>=(I<<2|0):0){c[J>>2]=K;break}c[j+24>>2]=c[L>>2]}while(0);j=j+48|0}while(j>>>0>>0)}C=f+(g*28|0)+44|0;D=c[f>>2]|0;h=(c[B>>2]|0)+44|0;l=c[M>>2]|0;j=c[C>>2]|0;A=l+(j*48|0)|0;B=f+(g*28|0)+56|0;c[B>>2]=0;z=c[E>>2]|0;h=h+(g*704|0)+204|0;if((Wg(c[h>>2]|0,z)|0)>16)y=Xg(16,z)|0;else y=c[h>>2]|0;x=f+(g*28|0)+64|0;c:do if((j|0)>0){w=l;while(1){s=c[B>>2]|0;if((s|0)>0){t=c[x>>2]|0;h=a[w+1>>0]|0;p=w+2|0;u=w+20|0;j=65535;v=0;r=0;while(1){l=t+(v*48|0)|0;do if((a[t+(v*48|0)+13>>0]|0)==h<<24>>24?(N=(b[p>>1]|0)-(b[l>>1]|0)|0,N=(N|0)<0?0-N|0:N,(N|0)<(y|0)&(N|0)<(j|0)):0){k=c[u>>2]|0;if(k){o=c[t+(v*48|0)+40>>2]|0;n=k+2|0;k=0;m=o;do{q=c[m+20>>2]|0;if(q){M=b[n>>1]|0;k=M<<16>>16;g=b[q+2>>1]|0;f=g<<16>>16;k=M<<16>>16>g<<16>>16?k-f|0:f-k|0;if((k|0)>=(y|0))break}m=c[m+16>>2]|0}while((m|0)!=(o|0));if((k|0)>=(y|0)){l=r;break}}j=N}else l=r;while(0);v=v+1|0;if((v|0)==(s|0))break;else r=l}if(!l)P=72;else{c[w+16>>2]=c[l+40>>2];f=l+44|0;c[(c[f>>2]|0)+16>>2]=w;c[f>>2]=w}}else{p=w+2|0;h=a[w+1>>0]|0;P=72}if((P|0)==72){P=0;h=wu(C,b[p>>1]|0,h<<24>>24,D,O)|0;if(h)break;h=w+1|0;l=c[O>>2]|0;j=l+0|0;k=j+40|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));c[l+40>>2]=w;c[l+44>>2]=w;f=b[p>>1]|0;b[l>>1]=f;f=Wg(f<<16>>16,z)|0;c[l+8>>2]=f;c[l+4>>2]=f;c[w+16>>2]=w;a[(c[O>>2]|0)+13>>0]=a[h>>0]|0}w=w+48|0;if(w>>>0>=A>>>0)break c}i=Q;return h|0}while(0);l=c[x>>2]|0;P=c[B>>2]|0;t=l+(P*48|0)|0;if((P|0)>0)j=l;else{P=0;i=Q;return P|0}do{h=c[j+40>>2]|0;if(h){k=h;do{c[k+12>>2]=j;k=c[k+16>>2]|0}while((k|0)!=(h|0))}j=j+48|0}while(j>>>0>>0);do{p=c[l+40>>2]|0;r=l+24|0;s=l+28|0;j=0;h=0;q=p;do{n=(a[q>>0]&1^1)&255;j=(n^1)+j|0;h=n+h|0;n=q+24|0;k=c[n>>2]|0;if(!k)k=0;else k=(c[k+12>>2]|0)!=(l|0)&1;m=q+20|0;do if(!((c[m>>2]|0)==0&k<<24>>24==0)){o=k<<24>>24!=0;m=c[(o?n:m)>>2]|0;k=c[(o?s:r)>>2]|0;if(!((k|0)!=0?(P=(b[l>>1]|0)-(b[k>>1]|0)|0,L=b[q+2>>1]|0,f=L<<16>>16,M=b[m+2>>1]|0,g=M<<16>>16,((L<<16>>16>M<<16>>16?f-g|0:g-f|0)|0)>=(((P|0)<0?0-P|0:P)|0)):0))k=c[m+12>>2]|0;if(o){c[s>>2]=k;P=k+12|0;a[P>>0]=d[P>>0]|2;break}else{c[r>>2]=k;break}}while(0);q=c[q+16>>2]|0}while((q|0)!=(p|0));a[l+12>>0]=((j|0)<1|(j|0)<(h|0))&1^1;if((c[s>>2]|0)!=0?(c[r>>2]|0)!=0:0)c[s>>2]=0;l=l+48|0}while(l>>>0>>0);h=0;i=Q;return h|0}function Bs(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=i;g=c[d+(f*28|0)+64>>2]|0;p=c[d+(f*28|0)+56>>2]|0;q=g+(p*48|0)|0;r=c[e+(f*704|0)+44>>2]|0;o=Wg(((c[e+40>>2]|0)>>>0)/40|0,r)|0;o=(o|0)>32?32:o;if((p|0)<=0){i=s;return}p=e+(f*704|0)+260|0;n=d+(f*28|0)+68|0;d=c[p>>2]|0;h=d;while(1){if(h){m=g+13|0;h=d;l=0;d=0;k=o;while(1){j=e+(f*704|0)+(l*28|0)+264|0;t=c[e+(f*704|0)+(l*28|0)+288>>2]|0;if((t&1|0)!=0?((a[m>>0]|0)==(c[n>>2]|0)|t&2|0)!=0:0){t=b[g>>1]|0;v=t-(c[j>>2]|0)|0;u=e+(f*704|0)+(l*28|0)+276|0;h=t-(c[u>>2]|0)|0;u=(((v|0)<0?0-v|0:v)|0)>(((h|0)<0?0-h|0:h)|0)?u:j;j=t-(c[u>>2]|0)|0;j=Wg((j|0)<0?0-j|0:j,r)|0;t=(j|0)<(k|0);h=c[p>>2]|0;d=t?u:d;j=t?j:k}else j=k;l=l+1|0;if(l>>>0>=h>>>0)break;else k=j}if(!d){j=h;d=h}else{c[g+20>>2]=d;j=h;d=h}}else j=0;g=g+48|0;if(g>>>0>=q>>>0)break;else h=j}i=s;return}function Cs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;m=b+44|0;n=(d|0)==1;if(!(a&4)){i=p;return e|0}b=(e|0)<0?0-e|0:e;if(n)if(!(a&2))o=5;else o=15;else if(!(a&1))o=5;else o=15;do if((o|0)==5){if((c[m+(d*704|0)+8>>2]|0)!=0?(f=c[m+(d*704|0)+16>>2]|0,o=b-f|0,(((o|0)<0?0-o|0:o)|0)<40):0){b=(f|0)<48?48:f;break}if((b|0)<54){b=((54-b|0)/2|0)+b|0;break}if((b|0)<192?(g=b&63,h=b&-64,g>>>0>=10):0)if(g>>>0<22){b=h|10;break}else{b=(g+-42|0)>>>0<12?h|54:b;break}}else if((o|0)==15){f=c[m+(d*704|0)+8>>2]|0;if((f|0)>0){k=98;l=0;g=b;while(1){q=c[m+(d*704|0)+(l*12|0)+16>>2]|0;h=b-q|0;h=(h|0)<0?0-h|0:h;j=(h|0)<(k|0);g=j?q:g;l=l+1|0;if((l|0)==(f|0))break;else k=j?h:k}f=g+32&-64;if((g|0)>(b|0))b=(f+-48|0)<(b|0)?g:b;else o=19}else{f=b+32&-64;g=b;o=19}if((o|0)==19)b=(f|48|0)>(b|0)?g:b;if(n){if((b|0)<=63){b=64;break}b=b+16&-64;break}if(a&8){if((b|0)<64){b=64;break}b=b+32&-64;break}if((b|0)<48){b=b+64>>1;break}if((b|0)<128){b=b+22&-64;break}else{b=b+32&-64;break}}while(0);q=(e|0)>-1?b:0-b|0;i=p;return q|0}function Ds(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;h=c[b+104>>2]|0;m=(h&4|0)==0;do if(m){if((a[d+12>>0]&1)!=0?(a[e+12>>0]&1)!=0:0){l=(g|0)==1?55:49;break}l=(g|0)==1?61:59}else l=64;while(0);n=c[e+4>>2]|0;o=c[d+4>>2]|0;k=Cs(h,c[b+108>>2]|0,g,n-o|0)|0;j=((o+n|0)/2|0)+f+((k|0)/-2|0)|0;h=j&63;g=j+k&63;b=64-h|0;f=64-g|0;do if((h|0)==0|(g|0)==0)h=0;else{if((k|0)<=(l|0)){if((g|0)>=(k|0)){h=0;break}h=b>>>0>g>>>0?0-g|0:b;break}if(l>>>0<64?!(h>>>0>>0&l>>>0>b>>>0&l>>>0>g>>>0&f>>>0>>0):0){h=0;break}h=k&63;if(h>>>0<32){if(!(b>>>0>h>>>0&g>>>0>h>>>0)){h=0;break}}else h=64-l|0;f=l-b|0;q=b-h|0;b=l-g|0;l=g-h|0;h=(f|0)>(q|0)?q:0-f|0;l=(l|0)>(b|0)?b:0-l|0;h=(((h|0)<0?0-h|0:h)|0)>(((l|0)<0?0-l|0:l)|0)?l:h}while(0);if(m)if((h|0)>14)h=14;else h=(h|0)<-14?-14:h;q=h+j|0;l=(n|0)>(o|0);o=q+k|0;c[d+8>>2]=l?q:o;c[e+8>>2]=l?o:q;i=p;return h|0}function Es(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;X=i;i=i+64|0;k=X+48|0;M=X;P=X+24|0;Q=X+40|0;j=c[d>>2]|0;R=c[d+8>>2]|0;T=c[d+132>>2]|0;m=d+12|0;U=c[j+84>>2]|0;V=c[U+156>>2]|0;j=Qg(j,f,g|8192)|0;if(j){W=j;i=X;return W|0}J=a[V+8>>0]|0;N=d+136|0;a[N>>0]=J;if(J<<24>>24){I=d+140|0;J=V+12|0;c[I+0>>2]=c[J+0>>2];c[I+4>>2]=c[J+4>>2];c[I+8>>2]=c[J+8>>2];c[I+12>>2]=c[J+12>>2];J=d+156|0;F=V+28|0;G=c[F+4>>2]|0;H=J;c[H>>2]=c[F>>2];c[H+4>>2]=G;c[k+0>>2]=c[I+0>>2];c[k+4>>2]=c[I+4>>2];c[k+8>>2]=c[I+8>>2];c[k+12>>2]=c[I+12>>2];Yg(k)|0;Ch(J,k)}O=U+72|0;j=c[O>>2]|0;a:do if((j|0)==1668246896){G=c[U+128>>2]|0;H=R+20|0;I=R+22|0;J=b[I>>1]|0;j=jh(R,G)|0;if(j){W=j;i=X;return W|0}Aga(c[R+88>>2]|0,c[U+132>>2]|0,G<<5|0)|0;c[R+84>>2]=G;s=c[R+48>>2]|0;if(G){t=R+52|0;u=d+164|0;v=d+172|0;w=h+1|0;x=R+24|0;y=M+4|0;z=M+2|0;A=d+16|0;B=d+20|0;C=d+24|0;D=d+28|0;F=0;while(1){p=F+s|0;m=u;q=c[m>>2]|0;m=c[m+4>>2]|0;l=v;k=c[l>>2]|0;l=c[l+4>>2]|0;r=b[I>>1]|0;E=r<<16>>16;j=Es(d,e,c[(c[t>>2]|0)+(p<<5)>>2]|0,g,w)|0;if(j){W=59;break}n=c[t>>2]|0;o=n+(p<<5)+4|0;j=b[o>>1]|0;if(!(j&512)){j=u;c[j>>2]=q;c[j+4>>2]=m;j=v;c[j>>2]=k;c[j+4>>2]=l;j=b[o>>1]|0}q=b[I>>1]|0;m=q<<16>>16;k=m-E|0;if((j&200)!=0?(K=c[x>>2]|0,L=K+(m<<3)|0,q<<16>>16>r<<16>>16):0){j=n+(p<<5)+16|0;q=K+(E<<3)|0;do{Ch(q,j);q=q+8|0}while(q>>>0>>0);j=b[o>>1]|0}q=c[n+(p<<5)+8>>2]|0;if(!(j&2)){j=c[n+(p<<5)+12>>2]|0;q=q+J|0;if(!(q>>>0>>0&j>>>0>>0)){j=21;W=59;break}p=c[x>>2]|0;j=E+J+j|0;m=(c[p+(q<<3)>>2]|0)-(c[p+(j<<3)>>2]|0)|0;j=(c[p+(q<<3)+4>>2]|0)-(c[p+(j<<3)+4>>2]|0)|0}else{o=Wg(q,c[A>>2]|0)|0;m=c[B>>2]|0;j=Wg(c[n+(p<<5)+12>>2]|0,c[C>>2]|0)|0;m=o+32+m&-64;j=j+32+(c[D>>2]|0)&-64};c[M+0>>2]=c[H+0>>2];c[M+4>>2]=c[H+4>>2];c[M+8>>2]=c[H+8>>2];c[M+12>>2]=c[H+12>>2];c[M+16>>2]=c[H+16>>2];c[y>>2]=(c[y>>2]|0)+(E<<3);b[z>>1]=k;Bh(M,m,j);F=F+1|0;if(F>>>0>=G>>>0){j=0;break a}}if((W|0)==59){i=X;return j|0}}else j=0}else if((j|0)==1869968492){if(a[N>>0]|0)Bh(U+108|0,c[d+156>>2]|0,c[d+160>>2]|0);q=U+110|0;k=b[q>>1]|0;l=(k<<16>>16)+4|0;if((l|0)!=0?((b[R+22>>1]|0)+l+(b[R+58>>1]|0)|0)>>>0>(c[R+4>>2]|0)>>>0:0){j=b[U+108>>1]|0;W=12}else{j=b[U+108>>1]|0;if(j<<16>>16!=0?((b[R+20>>1]|0)+(j<<16>>16)+(b[R+56>>1]|0)|0)>>>0>(c[R+8>>2]|0)>>>0:0)W=12;else j=k}do if((W|0)==12){j=ih(R,l,j<<16>>16)|0;if(!j){j=b[q>>1]|0;break}else{W=j;i=X;return W|0}}while(0);k=R+56|0;Aga(c[R+60>>2]|0,c[U+112>>2]|0,j<<16>>16<<3|0)|0;L=U+108|0;Aga(c[R+68>>2]|0,c[U+120>>2]|0,b[L>>1]<<1|0)|0;Aga(c[R+64>>2]|0,c[U+116>>2]|0,b[q>>1]|0)|0;b[R+58>>1]=b[q>>1]|0;b[k>>1]=b[L>>1]|0;L=d+20|0;o=d+164|0;c[o>>2]=c[L>>2];g=d+28|0;c[d+168>>2]=c[g>>2];M=Wg(c[U+40>>2]|0,c[d+16>>2]|0)|0;n=d+172|0;c[n>>2]=(c[L>>2]|0)+M;c[d+176>>2]=c[g>>2];if(!(b[q>>1]|0))j=0;else{j=c[(c[3528+(c[(c[T>>2]|0)+8>>2]<<2)>>2]|0)+24>>2]|0;if(j)Od[j&255](m,k,T)|0;do if((c[e+20>>2]|0)==1){L=c[o>>2]|0;g=c[n>>2]|0;J=L+32+(c[d+124>>2]|0)&-64;c[o>>2]=J;M=g+32+(c[d+128>>2]|0)&-64;c[n>>2]=M;c[U+144>>2]=J-L;c[U+148>>2]=M-g}else{k=c[d+76>>2]|0;g=c[d+68>>2]|0;j=g+-1|0;if((g|0)>1?(c[d+112>>2]&4|0)==0:0){r=(c[n>>2]|0)-(c[k+(j*48|0)+4>>2]|0)|0;g=c[k+4>>2]|0;M=c[k+8>>2]|0;q=M-g|0;l=c[k+(j*48|0)+8>>2]|0;m=l+r|0;q=(g|0)<24?q+-8|0:q;m=(r|0)<24?m+8|0:m;k=q+32&-64;c[o>>2]=k;j=m+32&-64;c[n>>2]=j;if((k|0)>=(M|0)&(g|0)>0){k=k+-64|0;c[o>>2]=k}if((j|0)<=(l|0)&(r|0)>0){j=j+64|0;c[n>>2]=j}c[U+144>>2]=k-q;c[U+148>>2]=j-m;break}L=c[o>>2]|0;g=c[n>>2]|0;J=L+32&-64;c[o>>2]=J;M=g+32&-64;c[n>>2]=M;c[U+144>>2]=J-L;c[U+148>>2]=M-g}while(0);lh(R);j=0}}else j=7;while(0);if(h){W=j;i=X;return W|0}l=U+44|0;m=U+32|0;n=U+48|0;o=U+36|0;h=(c[n>>2]|0)-(c[o>>2]|0)|0;p=Q+4|0;r=T+8|0;c[Q>>2]=Wg((c[l>>2]|0)-(c[m>>2]|0)|0,c[r>>2]|0)|0;s=T+12|0;c[p>>2]=Wg(h,c[s>>2]|0)|0;if(a[N>>0]|0){N=d+140|0;Ah(R+20|0,N);Ch(Q,N)}q=d+164|0;k=c[q>>2]|0;j=R+20|0;if(k)Bh(j,0-k|0,0);mi(j,P);h=c[P>>2]&-64;c[P>>2]=h;L=P+4|0;g=c[L>>2]&-64;c[L>>2]=g;L=P+8|0;M=(c[L>>2]|0)+63&-64;c[L>>2]=M;L=P+12|0;N=(c[L>>2]|0)+63&-64;c[L>>2]=N;c[U+24>>2]=M-h;c[U+28>>2]=N-g;c[m>>2]=h;c[o>>2]=N;c[l>>2]=(c[Q>>2]|0)+h&-64;c[n>>2]=(c[p>>2]|0)+N&-64;do if((c[e+20>>2]|0)==1)W=55;else{if(!(c[(c[U+4>>2]|0)+8>>2]&4)){j=c[d+4>>2]|0;if((c[j+4>>2]|0)>>>0<=f>>>0){W=55;break}if((a[(c[j+8>>2]|0)+f>>0]|0)>-1){W=55;break}if(!(a[T+32>>0]|0)){W=55;break}}Q=U+40|0;c[Q>>2]=Wg(c[Q>>2]|0,c[r>>2]|0)|0;c[U+144>>2]=0;c[U+148>>2]=0}while(0);if((W|0)==55?(S=U+40|0,(c[S>>2]|0)!=0):0)c[S>>2]=(c[d+172>>2]|0)-(c[q>>2]|0);j=U+52|0;W=Wg(c[j>>2]|0,c[s>>2]|0)|0;Q=U+40|0;c[Q>>2]=(c[Q>>2]|0)+32&-64;c[j>>2]=W+32&-64;dh(c[V>>2]|0);j=mh(c[V>>2]|0,R)|0;if(j){W=j;i=X;return W|0}W=c[V>>2]|0;b[U+108>>1]=b[W+20>>1]|0;b[U+110>>1]=b[W+22>>1]|0;c[U+112>>2]=c[W+24>>2];c[U+116>>2]=c[W+28>>2];c[U+120>>2]=c[W+32>>2];c[O>>2]=1869968492;W=0;i=X;return W|0}function Fs(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;f=r+4|0;p=r;q=a+8|0;h=c[q>>2]|0;n=a+4|0;if((h+3|0)>>>0>=(c[n>>2]|0)>>>0){e=85;i=r;return e|0}o=a+20|0;g=c[o>>2]|0;do if(!g){j=(c[a>>2]|0)+h|0;if(!j){k=h;j=0}else{g=h;m=6}}else if((ce[g&255](a,h,p,4)|0)==4){g=c[q>>2]|0;j=p;m=6;break}else{e=85;i=r;return e|0}while(0);if((m|0)==6){k=g;j=(d[j+1>>0]|0)<<16|(d[j>>0]|0)<<24|(d[j+2>>0]|0)<<8|(d[j+3>>0]|0)}h=k+4|0;c[q>>2]=h;if((j|0)!=(b|0)){e=2;i=r;return e|0}if((k+7|0)>>>0>=(c[n>>2]|0)>>>0){e=85;i=r;return e|0}g=c[o>>2]|0;do if(g){if((ce[g&255](a,h,p,4)|0)!=4){e=85;i=r;return e|0}h=c[q>>2]|0;g=c[o>>2]|0;c[q>>2]=h+4;j=h+20|0;if(g)if(!(ce[g&255](a,j,0,0)|0)){g=c[n>>2]|0;break}else{e=85;i=r;return e|0}else{g=j;m=15}}else{c[q>>2]=k+8;g=k+24|0;m=15}while(0);if((m|0)==15){k=c[n>>2]|0;if(k>>>0>>0){e=85;i=r;return e|0}else{j=g;g=k}}c[q>>2]=j;if((h+21|0)>>>0>=g>>>0){e=85;i=r;return e|0}g=c[o>>2]|0;do if(!g){f=(c[a>>2]|0)+j|0;if(!f){c[q>>2]=h+22;e=2;i=r;return e|0}else g=j}else if((ce[g&255](a,j,f,2)|0)==2){g=c[q>>2]|0;break}else{e=85;i=r;return e|0}while(0);l=(d[f>>0]|0)<<8|(d[f+1>>0]|0);f=g+2|0;c[q>>2]=f;if(!l){e=2;i=r;return e|0}b=1;a:while(1){if((f+3|0)>>>0>=(c[n>>2]|0)>>>0){f=85;m=48;break}g=c[o>>2]|0;if(!g){g=(c[a>>2]|0)+f|0;if(!g){c[q>>2]=f+4;f=f+12|0;m=44}else m=30}else{if((ce[g&255](a,f,p,4)|0)!=4){f=85;m=48;break}f=c[q>>2]|0;g=p;m=30}do if((m|0)==30){m=0;k=(d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0);g=f+4|0;c[q>>2]=g;if((k|0)!=2){g=c[o>>2]|0;f=f+12|0;if(!g){m=44;break}if(!(ce[g&255](a,f,0,0)|0)){m=45;break}else{f=85;m=48;break a}}j=c[n>>2]|0;if((f+7|0)>>>0>>0){f=c[o>>2]|0;if(!f){h=(c[a>>2]|0)+g|0;if(!h){k=g;f=0}else{f=g;m=36}}else{if((ce[f&255](a,g,p,4)|0)!=4)break;f=c[q>>2]|0;j=c[n>>2]|0;h=p;m=36}if((m|0)==36){m=0;k=f;f=(d[h+1>>0]|0)<<16|(d[h>>0]|0)<<24|(d[h+2>>0]|0)<<8|(d[h+3>>0]|0)}g=k+4|0;c[q>>2]=g;if((k+7|0)>>>0>>0){j=c[o>>2]|0;if(!j)break a;if((ce[j&255](a,g,p,4)|0)==4){m=40;break a}}}}while(0);if((m|0)==44)if((c[n>>2]|0)>>>0>>0){f=85;m=48;break}else m=45;if((m|0)==45)c[q>>2]=f;if((b|0)>=(l|0)){f=2;m=48;break}f=c[q>>2]|0;b=b+1|0}if((m|0)==40)g=c[q>>2]|0;else if((m|0)==48){i=r;return f|0}c[q>>2]=g+4;c[e>>2]=f;e=0;i=r;return e|0}function Gs(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;h=i;g=Dga(d|0)|0;g=g+1+(Dga(e|0)|0)|0;if((g|0)>0){f=Wd[c[b+4>>2]&511](b,g)|0;j=(f|0)==0;b=j?64:0;if(j)f=0;else Cga(f|0,0,g|0)|0}else{f=0;b=g>>31&6}if(b){j=0;i=h;return j|0}b=hea(d,47)|0;if(!b)a[f>>0]=0;else{j=b-d+1|0;Jga(f|0,d|0,j|0)|0;a[f+j>>0]=0;d=b+1|0}Ega(f|0,e|0)|0;Ega(f|0,d|0)|0;j=f;i=h;return j|0}function Hs(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+400|0;w=B;s=B+264|0;y=B+256|0;c[y>>2]=0;A=j+32|0;k=c[A>>2]|0;g=(k|0)==0;if(g)u=0;else u=c[k+278664>>2]|0;if(!(pga(e,5288,7)|0)){if((c[(c[j+36>>2]|0)+8>>2]|0)==0|g){j=0;i=B;return j|0}g=e+7|0;if(!(a[g>>0]|0)){f=f+-7|0;e=g}else{f=f+-8|0;e=e+8|0}A=c[k+278664>>2]|0;c[w>>2]=0;m=k+88|0;j=c[m>>2]|0;l=f+1|0;g=k+84|0;k=hh(A,1,j,j+l|0,c[g>>2]|0,w)|0;c[g>>2]=k;g=c[w>>2]|0;if(!g){g=c[m>>2]|0;Aga(k+g|0,e|0,f|0)|0;a[k+(g+f)>>0]=10;c[m>>2]=(c[m>>2]|0)+l;g=c[w>>2]|0}c[y>>2]=g;j=g;i=B;return j|0}g=c[j>>2]|0;if(!(g&1)){m=j+139320|0;f=c[m>>2]|0;if(pga(e,5296,9)|0){c[y>>2]=176;j=176;i=B;return j|0}c[j>>2]=1;c[A>>2]=0;k=ch(f,278692,y)|0;g=c[y>>2]|0;if(g){j=g;i=B;return j|0}c[A>>2]=k;c[k+278664>>2]=c[m>>2];c[m>>2]=0;l=k+278676|0;c[w>>2]=0;c[k+278680>>2]=241;c[l>>2]=80;c[k+278684>>2]=0;c[k+278688>>2]=hh(f,4,0,241,0,w)|0;g=c[w>>2]|0;c[y>>2]=g;if(!g){m=0;k=5312}else{j=g;i=B;return j|0}while(1){g=yu(c[k>>2]|0,m,l,f)|0;c[y>>2]=g;if(g){z=151;break}m=m+1|0;if(m>>>0>=83)break;else k=k+16|0}if((z|0)==151){i=B;return g|0}g=ch(f,16,y)|0;c[(c[A>>2]|0)+128>>2]=g;k=c[y>>2]|0;if(k){j=k;i=B;return j|0}c[w>>2]=0;c[g+4>>2]=241;c[g>>2]=80;c[g+8>>2]=0;c[g+12>>2]=hh(f,4,0,241,0,w)|0;g=c[w>>2]|0;c[y>>2]=g;if(g){j=g;i=B;return j|0}A=c[A>>2]|0;c[A+28>>2]=c[(c[j+36>>2]|0)+12>>2];c[A+36>>2]=-1;j=c[y>>2]|0;i=B;return j|0}if(!(pga(e,6640,15)|0)){if(!(g&8)){c[y>>2]=179;j=179;i=B;return j|0}m=j+139304|0;g=zu(m,6656,e,f)|0;c[y>>2]=g;if(g){j=g;i=B;return j|0}g=c[(c[m>>2]|0)+4>>2]|0;do if(g){m=a[g>>0]|0;if(m<<24>>24==48){z=a[g+1>>0]|0;if(z<<24>>24==88|z<<24>>24==120){m=g+2|0;g=m;e=16;m=a[m>>0]|0;f=6792}else{e=10;m=48;f=6992}}else if(!(m<<24>>24)){g=0;break}else{e=10;f=6992}k=m<<24>>24;if(d[f+((m&255)>>>3)>>0]&1<<(k&7)){l=g;m=k;g=0;do{g=ea(g,e)|0;g=(d[6824+m>>0]|0)+g|0;l=l+1|0;z=a[l>>0]|0;m=z<<24>>24}while((1<<(m&7)&d[f+((z&255)>>>3)>>0]|0)!=0)}else g=0}else g=0;while(0);c[(c[A>>2]|0)+72>>2]=g;c[j+4>>2]=g;g=hh(u,16,0,g,0,y)|0;k=c[A>>2]|0;c[k+80>>2]=g;g=c[y>>2]|0;if(!g){c[j>>2]=c[j>>2]|16;c[h>>2]=47;j=0;i=B;return j|0}else{c[k+72>>2]=0;j=g;i=B;return j|0}}if(!(pga(e,6664,15)|0)){if(!(g&4)){c[y>>2]=178;j=178;i=B;return j|0}m=j+139304|0;g=zu(m,6656,e,f)|0;c[y>>2]=g;if(g){j=g;i=B;return j|0}p=c[m>>2]|0;g=c[p+4>>2]|0;if((g|0)!=0?(l=a[g>>0]|0,l<<24>>24!=0):0){e=l<<24>>24==45;g=e?g+1|0:g;m=a[g>>0]|0;if(m<<24>>24==48){z=a[g+1>>0]|0;if(z<<24>>24==88|z<<24>>24==120){m=g+2|0;f=16;g=m;m=a[m>>0]|0;l=6792}else{f=10;m=48;l=6992}}else{f=10;l=6992}k=m<<24>>24;if(!(d[l+((m&255)>>>3)>>0]&1<<(k&7)))g=0;else{m=g;g=0;do{g=ea(g,f)|0;m=m+1|0;g=(d[6824+k>>0]|0)+g<<16>>16;z=a[m>>0]|0;k=z<<24>>24}while((1<<(k&7)&d[l+((z&255)>>>3)>>0]|0)!=0)}g=(e?0-g|0:g)&65535}else g=0;o=c[A>>2]|0;b[o+4>>1]=g;g=c[p+8>>2]|0;if((g|0)!=0?(n=a[g>>0]|0,n<<24>>24!=0):0){e=n<<24>>24==45;g=e?g+1|0:g;m=a[g>>0]|0;if(m<<24>>24==48){A=a[g+1>>0]|0;if(A<<24>>24==88|A<<24>>24==120){m=g+2|0;f=16;g=m;m=a[m>>0]|0;l=6792}else{f=10;m=48;l=6992}}else{f=10;l=6992}k=m<<24>>24;if(!(d[l+((m&255)>>>3)>>0]&1<<(k&7)))g=0;else{m=g;g=0;do{g=ea(g,f)|0;m=m+1|0;g=(d[6824+k>>0]|0)+g<<16>>16;A=a[m>>0]|0;k=A<<24>>24}while((1<<(k&7)&d[l+((A&255)>>>3)>>0]|0)!=0)}h=(e?0-g|0:g)&65535}else h=0;b[o+6>>1]=h;g=c[p+12>>2]|0;if((g|0)!=0?(t=a[g>>0]|0,t<<24>>24!=0):0){e=t<<24>>24==45;g=e?g+1|0:g;m=a[g>>0]|0;if(m<<24>>24==48){A=a[g+1>>0]|0;if(A<<24>>24==88|A<<24>>24==120){m=g+2|0;f=16;g=m;m=a[m>>0]|0;l=6792}else{f=10;m=48;l=6992}}else{f=10;l=6992}k=m<<24>>24;if(!(d[l+((m&255)>>>3)>>0]&1<<(k&7)))g=0;else{m=g;g=0;do{g=ea(g,f)|0;m=m+1|0;g=(d[6824+k>>0]|0)+g<<16>>16;A=a[m>>0]|0;k=A<<24>>24}while((1<<(k&7)&d[l+((A&255)>>>3)>>0]|0)!=0)}g=(e?0-g|0:g)&65535}else g=0;b[o+8>>1]=g;g=c[p+16>>2]|0;if((g|0)!=0?(x=a[g>>0]|0,x<<24>>24!=0):0){e=x<<24>>24==45;g=e?g+1|0:g;k=a[g>>0]|0;if(k<<24>>24==48){A=a[g+1>>0]|0;if(A<<24>>24==88|A<<24>>24==120){k=g+2|0;f=16;g=k;k=a[k>>0]|0;l=6792}else{f=10;k=48;l=6992}}else{f=10;l=6992}m=k<<24>>24;if(!(d[l+((k&255)>>>3)>>0]&1<<(m&7)))g=0;else{k=g;g=0;do{g=ea(g,f)|0;k=k+1|0;g=(d[6824+m>>0]|0)+g<<16>>16;A=a[k>>0]|0;m=A<<24>>24}while((1<<(m&7)&d[l+((A&255)>>>3)>>0]|0)!=0)}g=(e?0-g|0:g)&65535}else g=0;b[o+10>>1]=g;A=g&65535;b[o+12>>1]=A+(h&65535);b[o+14>>1]=0-A;c[j>>2]=c[j>>2]|8;j=0;i=B;return j|0}if(!(pga(e,6680,4)|0)){h=j+139304|0;g=zu(h,6656,e,f)|0;c[y>>2]=g;if(g){j=g;i=B;return j|0}n=j+139312|0;g=c[n>>2]|0;do if(g){if(g>>>0<2){c[n>>2]=0;break}k=g+-1|0;g=0;m=1;while(1){z=c[h>>2]|0;c[z+(g<<2)>>2]=c[z+(m<<2)>>2];g=g+1|0;if((g|0)==(k|0))break;else m=m+1|0}c[n>>2]=k;if(k){l=c[c[h>>2]>>2]|0;f=l;e=1;g=0;while(1){m=a[f>>0]|0;if(m<<24>>24){while(1){f=f+1|0;k=g+1|0;a[l+g>>0]=m;m=a[f>>0]|0;if(!(m<<24>>24)){g=k;break}else g=k}k=c[n>>2]|0}if(e>>>0>>0){a[l+g>>0]=32;k=c[n>>2]|0;g=g+1|0}if(e>>>0>=k>>>0)break;f=c[(c[h>>2]|0)+(e<<2)>>2]|0;e=e+1|0}if((l|0)!=7048){a[l+g>>0]=0;if(!l)break}else l=7048;eh(u,c[c[A>>2]>>2]|0);c[c[A>>2]>>2]=0;k=g+1|0;g=hh(u,1,0,k,0,y)|0;c[c[A>>2]>>2]=g;m=c[y>>2]|0;if(m){j=m;i=B;return j|0}Aga(g|0,l|0,k|0)|0;g=c[A>>2]|0;m=c[j+36>>2]|0;if((((g|0)!=0?(o=c[g>>2]|0,(o|0)!=0):0)?(a[o>>0]|0)!=0:0)?(r=c[g+278664>>2]|0,c[s+0>>2]=0,c[s+4>>2]=0,c[s+8>>2]=0,q=s+12|0,c[q>>2]=r,r=g+28|0,c[r>>2]=c[m+12>>2],p=(Dga(o|0)|0)+1|0,p>>>0<=255):0){Aga(w|0,o|0,p|0)|0;k=zu(s,7040,w,p)|0;l=(k|0)==0;a:do if(l){if((c[s+8>>2]|0)!=15)break;switch(a[c[(c[s>>2]|0)+44>>2]>>0]|0){case 99:case 67:{c[r>>2]=32;break a}case 109:case 77:{c[r>>2]=16;break a}case 112:case 80:{c[r>>2]=8;break a}default:break a}}while(0);g=c[q>>2]|0;if(g){eh(g,c[s>>2]|0);c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0}c[y>>2]=k;if(!l){j=k;i=B;return j|0}c[j>>2]=c[j>>2]|2;j=0;i=B;return j|0}c[y>>2]=6;j=6;i=B;return j|0}}while(0);c[y>>2]=3;j=3;i=B;return j|0}if(pga(e,6688,4)|0){if(pga(e,6696,5)|0){c[y>>2]=3;j=3;i=B;return j|0}if(!(g&8)){c[y>>2]=179;j=179;i=B;return j|0}g=b[k+12>>1]|0;c[k+40>>2]=g;c[w>>2]=g;fga(s,6704,w)|0;g=Bu(c[A>>2]|0,6712,s)|0;c[y>>2]=g;if(g){j=g;i=B;return j|0}j=c[A>>2]|0;g=b[j+14>>1]|0;c[j+44>>2]=g;c[w>>2]=g;fga(s,6704,w)|0;g=Bu(c[A>>2]|0,6728,s)|0;c[y>>2]=g;if(g){j=g;i=B;return j|0}b[(c[A>>2]|0)+278660>>1]=1;c[h>>2]=48;c[y>>2]=-1;j=-1;i=B;return j|0}if(!(g&2)){c[y>>2]=177;j=177;i=B;return j|0}m=j+139304|0;g=zu(m,6656,e,f)|0;c[y>>2]=g;if(g){j=g;i=B;return j|0}h=c[m>>2]|0;g=c[h+4>>2]|0;do if(g){m=a[g>>0]|0;if(m<<24>>24==48){y=a[g+1>>0]|0;if(y<<24>>24==88|y<<24>>24==120){m=g+2|0;g=m;f=16;m=a[m>>0]|0;l=6792}else{f=10;m=48;l=6992}}else if(!(m<<24>>24)){g=0;break}else{f=10;l=6992}k=m<<24>>24;if(d[l+((m&255)>>>3)>>0]&1<<(k&7)){m=g;g=0;do{g=ea(g,f)|0;g=(d[6824+k>>0]|0)+g|0;m=m+1|0;y=a[m>>0]|0;k=y<<24>>24}while((1<<(k&7)&d[l+((y&255)>>>3)>>0]|0)!=0)}else g=0}else g=0;while(0);n=c[A>>2]|0;c[n+16>>2]=g;g=c[h+8>>2]|0;do if(g){m=a[g>>0]|0;if(m<<24>>24==48){A=a[g+1>>0]|0;if(A<<24>>24==88|A<<24>>24==120){m=g+2|0;g=m;f=16;m=a[m>>0]|0;l=6792}else{f=10;m=48;l=6992}}else if(!(m<<24>>24)){g=0;break}else{f=10;l=6992}k=m<<24>>24;if(d[l+((m&255)>>>3)>>0]&1<<(k&7)){m=g;g=0;do{g=ea(g,f)|0;g=(d[6824+k>>0]|0)+g|0;m=m+1|0;A=a[m>>0]|0;k=A<<24>>24}while((1<<(k&7)&d[l+((A&255)>>>3)>>0]|0)!=0)}else g=0}else g=0;while(0);c[n+20>>2]=g;g=c[h+12>>2]|0;do if(g){m=a[g>>0]|0;if(m<<24>>24==48){A=a[g+1>>0]|0;if(A<<24>>24==88|A<<24>>24==120){m=g+2|0;g=m;f=16;m=a[m>>0]|0;l=6792}else{f=10;m=48;l=6992}}else if(!(m<<24>>24)){g=0;break}else{f=10;l=6992}k=m<<24>>24;if(d[l+((m&255)>>>3)>>0]&1<<(k&7)){m=g;g=0;do{g=ea(g,f)|0;g=(d[6824+k>>0]|0)+g|0;m=m+1|0;A=a[m>>0]|0;k=A<<24>>24}while((1<<(k&7)&d[l+((A&255)>>>3)>>0]|0)!=0)}else g=0}else g=0;while(0);c[n+24>>2]=g;if((c[j+139312>>2]|0)==5){g=c[h+16>>2]|0;if((g|0)!=0?(v=a[g>>0]|0,v<<24>>24!=0):0){e=v<<24>>24==45;g=e?g+1|0:g;k=a[g>>0]|0;if(k<<24>>24==48){A=a[g+1>>0]|0;if(A<<24>>24==88|A<<24>>24==120){k=g+2|0;f=16;g=k;k=a[k>>0]|0;l=6792}else{f=10;k=48;l=6992}}else{f=10;l=6992}m=k<<24>>24;if(!(d[l+((k&255)>>>3)>>0]&1<<(m&7)))g=0;else{k=g;g=0;do{g=ea(g,f)|0;k=k+1|0;g=(d[6824+m>>0]|0)+g<<16>>16;A=a[k>>0]|0;m=A<<24>>24}while((1<<(m&7)&d[l+((A&255)>>>3)>>0]|0)!=0)}l=e?0-g|0:g;m=l&65535;g=n+278662|0;b[g>>1]=m;if(m<<16>>16){k=0;e=0;while(1){k=(m&1)==0?k:e;m=(m&65535)>>>1;if(!(m<<16>>16))break;else e=e+1<<16>>16}if((k&65535)>3)k=8;else z=139}else{l=0;k=0;z=139}}else{g=n+278662|0;b[g>>1]=0;l=0;k=0;z=139}if((z|0)==139)k=1<<(k&65535)&65535;if((l&65535|0)!=(k|0))b[g>>1]=k<<1}else b[n+278662>>1]=1;c[j>>2]=c[j>>2]|4;j=0;i=B;return j|0}function Is(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;if(!a){i=j;return}h=c[a+278664>>2]|0;eh(h,c[a>>2]|0);c[a>>2]=0;e=a+128|0;b=c[e>>2]|0;if(b){g=c[b+4>>2]|0;b=b+12|0;if((g|0)>0){f=c[b>>2]|0;d=0;while(1){eh(h,c[f>>2]|0);c[f>>2]=0;d=d+1|0;if((d|0)==(g|0))break;else f=f+4|0}}eh(h,c[b>>2]|0);c[b>>2]=0;eh(h,c[e>>2]|0);c[e>>2]=0}e=a+84|0;eh(h,c[e>>2]|0);c[e>>2]=0;e=a+72|0;f=c[e>>2]|0;g=a+80|0;b=c[g>>2]|0;if(f){d=0;do{if((c[b+(d<<4)+4>>2]|0)==1){eh(h,c[b+(d<<4)+12>>2]|0);c[(c[g>>2]|0)+(d<<4)+12>>2]=0;b=c[g>>2]|0;f=c[e>>2]|0}d=d+1|0}while(d>>>0>>0)}eh(h,b);c[g>>2]=0;g=a+56|0;b=a+52|0;if(c[b>>2]|0){f=c[g>>2]|0;d=0;while(1){eh(h,c[f>>2]|0);c[f>>2]=0;e=f+24|0;eh(h,c[e>>2]|0);c[e>>2]=0;d=d+1|0;if(d>>>0>=(c[b>>2]|0)>>>0)break;else f=f+36|0}}b=a+68|0;f=a+64|0;if(c[f>>2]|0){d=c[b>>2]|0;e=0;while(1){eh(h,c[d>>2]|0);c[d>>2]=0;k=d+24|0;eh(h,c[k>>2]|0);c[k>>2]=0;e=e+1|0;if(e>>>0>=(c[f>>2]|0)>>>0)break;else d=d+36|0}}eh(h,c[g>>2]|0);c[g>>2]=0;eh(h,c[b>>2]|0);c[b>>2]=0;b=a+104|0;d=a+112|0;if(c[d>>2]|0){f=c[b>>2]|0;e=0;while(1){eh(h,c[f>>2]|0);c[f>>2]=0;g=f+24|0;eh(h,c[g>>2]|0);c[g>>2]=0;e=e+1|0;if(e>>>0>=(c[d>>2]|0)>>>0)break;else f=f+36|0}}eh(h,c[b>>2]|0);c[b>>2]=0;b=c[a+278680>>2]|0;d=a+278688|0;if((b|0)>0){f=c[d>>2]|0;e=0;while(1){eh(h,c[f>>2]|0);c[f>>2]=0;e=e+1|0;if((e|0)==(b|0))break;else f=f+4|0}}eh(h,c[d>>2]|0);c[d>>2]=0;f=a+278668|0;b=a+278672|0;if(c[b>>2]|0){d=0;e=c[f>>2]|0;while(1){eh(h,c[e>>2]|0);c[e>>2]=0;if((c[e+4>>2]|0)==1){g=e+12|0;eh(h,c[g>>2]|0);c[g>>2]=0}d=d+1|0;if(d>>>0>=(c[b>>2]|0)>>>0)break;else e=e+16|0}}eh(h,c[f>>2]|0);c[f>>2]=0;i=j;return}function Js(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;n=q+4|0;p=q;o=c[e+28>>2]|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;c[b>>2]=e;j=b+4|0;c[j>>2]=ui(e)|0;g=ri(e,p)|0;do if(!(c[p>>2]|0)){k=g&65535;if(!(g<<16>>16)){b=0;i=q;return b|0}h=Hi(e,p)|0;if(!(c[p>>2]|0)){g=h&255;if((h+-1<<24>>24&255)>3){c[p>>2]=8;break}c[b+8>>2]=k;l=b+12|0;a[l>>0]=h;m=ea(g,k+1|0)|0;c[b+16>>2]=m+3+(c[j>>2]|0);m=qi(e,ea(g,k)|0)|0;c[p>>2]=m;if(!m){j=pi(c[b>>2]|0,n,d[l>>0]|0)|0;m=(j|0)==0;if(!m){c[p>>2]=j;break}g=a[l>>0]|0;if(g<<24>>24){h=g&255;k=0;g=0;do{g=d[n+k>>0]|0|g<<8;k=k+1|0}while((k|0)<(h|0));c[p>>2]=j;if(!m)break;if(g){g=g+-1|0;c[b+20>>2]=g;if(!(f<<24>>24))g=qi(e,g)|0;else g=xi(e,g,b+28|0)|0;c[p>>2]=g;if(!g)g=0;else break;i=q;return g|0}}else c[p>>2]=j;c[p>>2]=8}}}while(0);b=b+24|0;eh(o,c[b>>2]|0);c[b>>2]=0;b=c[p>>2]|0;i=q;return b|0}function Ks(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+16|0;p=w+4|0;v=w;c[v>>2]=0;q=c[(c[b>>2]|0)+28>>2]|0;c[e>>2]=0;u=b+24|0;a:do if(!(c[u>>2]|0)){c[p>>2]=0;m=c[b>>2]|0;l=c[m+28>>2]|0;n=b+8|0;g=c[n>>2]|0;do if(g){t=g+1|0;h=d[b+12>>0]|0;j=ea(h,t)|0;c[u>>2]=hh(l,4,0,t,0,p)|0;if(((c[p>>2]|0)==0?(t=Hh(m,(c[b+4>>2]|0)+3|0)|0,c[p>>2]=t,(t|0)==0):0)?(t=yi(m,j)|0,c[p>>2]=t,(t|0)==0):0){g=c[u>>2]|0;k=c[m+32>>2]|0;o=k+j|0;if((h|0)==3){if((j|0)>0)while(1){c[g>>2]=(d[k+1>>0]|0)<<8|(d[k>>0]|0)<<16|(d[k+2>>0]|0);k=k+3|0;if(k>>>0>=o>>>0)break;else g=g+4|0}}else if((h|0)==2){if((j|0)>0)while(1){c[g>>2]=(d[k>>0]|0)<<8|(d[k+1>>0]|0);k=k+2|0;if(k>>>0>=o>>>0)break;else g=g+4|0}}else if((h|0)==1){if((j|0)>0)while(1){c[g>>2]=d[k>>0];k=k+1|0;if(k>>>0>=o>>>0)break;else g=g+4|0}}else if((j|0)>0)while(1){c[g>>2]=(d[k+1>>0]|0)<<16|(d[k>>0]|0)<<24|(d[k+2>>0]|0)<<8|(d[k+3>>0]|0);k=k+4|0;if(k>>>0>=o>>>0)break;else g=g+4|0}Bi(m);if(!(c[p>>2]|0))break}eh(l,c[u>>2]|0);c[u>>2]=0;t=c[p>>2]|0;c[v>>2]=t;if(!t){p=n;break a}e=c[v>>2]|0;i=w;return e|0}while(0);c[v>>2]=0;p=n}else p=b+8|0;while(0);g=c[p>>2]|0;if(!g){e=c[v>>2]|0;i=w;return e|0}s=hh(q,4,0,g+1|0,0,v)|0;if(c[v>>2]|0){e=c[v>>2]|0;i=w;return e|0}t=(f|0)!=0;if(t){g=ch(q,(c[p>>2]|0)+(c[b+20>>2]|0)|0,v)|0;if(c[v>>2]|0){e=c[v>>2]|0;i=w;return e|0}}else g=0;r=c[b+28>>2]|0;c[s>>2]=t?g:r;l=c[p>>2]|0;b:do if(l){q=b+20|0;if(t){n=0;m=0;o=1}else{h=0;k=1;while(1){j=(c[(c[u>>2]|0)+(k<<2)>>2]|0)+-1|0;if(j>>>0>=h>>>0){h=c[q>>2]|0;h=j>>>0>h>>>0?h:j}c[s+(k<<2)>>2]=r+h;k=k+1|0;if(k>>>0>l>>>0)break b}}while(1){k=(c[(c[u>>2]|0)+(o<<2)>>2]|0)+-1|0;if(k>>>0>=n>>>0){h=c[q>>2]|0;k=k>>>0>h>>>0?h:k;h=g+(k+m)|0;j=s+(o<<2)|0;c[j>>2]=h;if((k|0)==(n|0))h=m;else{l=c[s+(o+-1<<2)>>2]|0;Aga(l|0,r+n|0,h-l|0)|0;a[c[j>>2]>>0]=0;c[j>>2]=(c[j>>2]|0)+1;l=c[p>>2]|0;h=m+1|0}}else{c[s+(o<<2)>>2]=g+(n+m);h=m;k=n}o=o+1|0;if(o>>>0>l>>>0)break;else{n=k;m=h}}}while(0);c[e>>2]=s;if(!t){e=c[v>>2]|0;i=w;return e|0}c[f>>2]=g;e=c[v>>2]|0;i=w;return e|0}function Ls(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+432|0;s=t+8|0;m=t;k=t+4|0;c[m>>2]=0;Cga(s|0,0,408)|0;n=s+16|0;o=s+404|0;c[o>>2]=n;p=s+408|0;c[p>>2]=4096;q=s+412|0;c[q>>2]=b;c[s>>2]=j;Cga(b|0,0,172)|0;c[b+32>>2]=-6553600;c[b+36>>2]=3276800;c[b+44>>2]=2;c[b+48>>2]=65536;c[b+60>>2]=65536;c[b+156>>2]=8720;c[b>>2]=65535;c[b+4>>2]=65535;c[b+8>>2]=65535;c[b+12>>2]=65535;c[b+16>>2]=65535;c[b+20>>2]=65535;c[b+128>>2]=65535;l=b+132|0;c[l>>2]=65535;c[b+136>>2]=65535;c[b+172>>2]=65535;f=Ms(e,f,m,k)|0;if(!f){f=c[m>>2]|0;f=Du(s,f,f+(c[k>>2]|0)|0)|0}if(!(c[e+28>>2]|0))zi(c[e>>2]|0,m);if(f){b=f;i=t;return b|0}if((c[l>>2]|0)!=65535){b=0;i=t;return b|0}l=b+116|0;f=c[l>>2]|0;do if((f|0)!=0?(r=b+120|0,(c[r>>2]|0)!=0):0){k=b+176|0;Cga(k|0,0,360)|0;c[b+376>>2]=7;c[b+380>>2]=1;c[b+508>>2]=-1;c[b+516>>2]=3932;c[b+372>>2]=2596864;Cga(s|0,0,408)|0;c[o>>2]=n;c[p>>2]=8192;c[q>>2]=k;c[s>>2]=j;f=Hh(g,f+h|0)|0;if(f){b=f;i=t;return b|0}f=yi(g,c[r>>2]|0)|0;if(f){b=f;i=t;return b|0}f=Du(s,c[g+32>>2]|0,c[g+36>>2]|0)|0;Bi(g);if(!f){a[k>>0]=(d[k>>0]|0)&254;break}else{b=f;i=t;return b|0}}while(0);f=c[b+524>>2]|0;if(!f){b=0;i=t;return b|0}f=Hh(g,f+h+(c[l>>2]|0)|0)|0;if(f){b=f;i=t;return b|0}k=b+536|0;f=Js(k,g,1)|0;if(f){b=f;i=t;return b|0}b=Ks(k,b+568|0,0)|0;i=t;return b|0}function Ms(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;q=s;if(!b){f=6;i=s;return f|0}o=b+8|0;k=c[o>>2]|0;if(k>>>0<=e>>>0){f=6;i=s;return f|0}r=c[b>>2]|0;l=c[b+24>>2]|0;a:do if(!l){n=b+12|0;h=ea(d[n>>0]|0,e)|0;h=Hh(r,(c[b+4>>2]|0)+3+h|0)|0;if(h){f=h;i=s;return f|0}h=pi(c[b>>2]|0,q,d[n>>0]|0)|0;if(h){f=h;i=s;return f|0}k=a[n>>0]|0;if(k<<24>>24){j=k&255;m=0;h=0;do{h=d[q+m>>0]|0|h<<8;m=m+1|0}while((m|0)<(j|0));if(h)while(1){e=e+1|0;j=pi(c[b>>2]|0,q,k&255)|0;if((j|0)==0?(p=a[n>>0]|0,p<<24>>24!=0):0){m=p&255;l=0;k=0;do{k=d[q+l>>0]|0|k<<8;l=l+1|0}while((l|0)<(m|0));if(k){n=22;break a}}if(e>>>0>=(c[o>>2]|0)>>>0){n=21;break a}k=a[n>>0]|0}else n=20}else n=20}else{h=c[l+(e<<2)>>2]|0;if(!h)n=20;else while(1){e=e+1|0;j=c[l+(e<<2)>>2]|0;if(j){k=j;n=22;break a}if(e>>>0>=k>>>0){j=0;n=21;break}}}while(0);if((n|0)==20){e=c[r+4>>2]|0;j=0;h=0;l=0;n=24}else if((n|0)==21){e=c[r+4>>2]|0;l=0;n=24}else if((n|0)==22){e=c[r+4>>2]|0;if(k>>>0>(e+1|0)>>>0){k=c[b+16>>2]|0;j=0;n=25}else{j=0;l=k;n=24}}if((n|0)==24){k=c[b+16>>2]|0;if(k>>>0>(e+1-l|0)>>>0)n=25;else{m=h;e=l}}if((n|0)==25){m=h;e=e+1-k|0}if(!((m|0)!=0&e>>>0>m>>>0)){c[f>>2]=0;c[g>>2]=0;f=j;i=s;return f|0}h=e-m|0;c[g>>2]=h;e=c[b+28>>2]|0;if(e){c[f>>2]=e+(m+-1);f=j;i=s;return f|0}e=Hh(r,m+-1+(c[b+16>>2]|0)|0)|0;if(e){f=e;i=s;return f|0}f=xi(r,h,f)|0;i=s;return f|0}function Ns(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=i;Cga(e|0,0,196)|0;f=a[d+176>>0]|0;a[e+8>>0]=f;if(f<<24>>24){f=f&255;g=0;do{b[e+(g<<1)+12>>1]=c[d+(g<<2)+180>>2];g=g+1|0}while((g|0)!=(f|0))}f=a[d+177>>0]|0;a[e+9>>0]=f;if(f<<24>>24){f=f&255;g=0;do{b[e+(g<<1)+40>>1]=c[d+(g<<2)+236>>2];g=g+1|0}while((g|0)!=(f|0))}f=a[d+178>>0]|0;a[e+10>>0]=f;if(f<<24>>24){f=f&255;g=0;do{b[e+(g<<1)+60>>1]=c[d+(g<<2)+276>>2];g=g+1|0}while((g|0)!=(f|0))}f=a[d+179>>0]|0;a[e+11>>0]=f;if(f<<24>>24){f=f&255;g=0;do{b[e+(g<<1)+88>>1]=c[d+(g<<2)+332>>2];g=g+1|0}while((g|0)!=(f|0))}c[e+108>>2]=c[d+372>>2];c[e+112>>2]=c[d+376>>2];c[e+116>>2]=c[d+380>>2];b[e+120>>1]=c[d+384>>2];b[e+122>>1]=c[d+388>>2];f=a[d+392>>0]|0;a[e+124>>0]=f;if(f<<24>>24){f=f&255;g=0;do{b[e+(g<<1)+128>>1]=c[d+(g<<2)+396>>2];g=g+1|0}while((g|0)!=(f|0))}f=a[d+393>>0]|0;a[e+125>>0]=f;if(!(f<<24>>24)){g=d+500|0;g=a[g>>0]|0;f=e+126|0;a[f>>0]=g;f=d+512|0;f=c[f>>2]|0;g=e+184|0;c[g>>2]=f;d=d+508|0;d=c[d>>2]|0;e=e+4|0;c[e>>2]=d;i=h;return}f=f&255;g=0;do{b[e+(g<<1)+154>>1]=c[d+(g<<2)+448>>2];g=g+1|0}while((g|0)!=(f|0));g=d+500|0;g=a[g>>0]|0;f=e+126|0;a[f>>0]=g;f=d+512|0;f=c[f>>2]|0;g=e+184|0;c[g>>2]=f;d=d+508|0;d=c[d>>2]|0;e=e+4|0;c[e>>2]=d;i=h;return}function Os(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=i;i=i+64|0;F=M+48|0;L=M+20|0;l=M+16|0;E=M;r=M+24|0;c[l>>2]=0;m=c[f>>2]|0;k=f+76|0;j=c[k>>2]|0;n=c[j+2972>>2]|0;do if(!n){c[j+2976>>2]=229;j=ch(m,504,l)|0;c[(c[k>>2]|0)+2972>>2]=j;if(!(c[l>>2]|0)){c[j>>2]=m;D=j+100|0;c[D+0>>2]=0;c[D+4>>2]=0;c[D+8>>2]=0;c[D+12>>2]=0;c[D+16>>2]=0;c[D+20>>2]=0;c[D+24>>2]=0;c[D+28>>2]=0;c[j+120>>2]=m;c[j+124>>2]=j+4;c[D>>2]=71;c[j+104>>2]=72;c[j+112>>2]=73;D=j;break}else{L=64;i=M;return L|0}}else D=n;while(0);s=D+132|0;c[s>>2]=f;H=D+128|0;c[H>>2]=f;p=f+4|0;o=c[(c[p>>2]|0)+96>>2]|0;j=E;c[j>>2]=0;c[j+4>>2]=0;c[E+12>>2]=g;c[E+4>>2]=g;c[E+8>>2]=g+h;c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[r+12>>2]=0;c[r+16>>2]=0;c[r+20>>2]=0;j=f+8|0;n=c[j>>2]|0;k=a[n+161>>0]|0;m=(a[n+160>>0]|0)==0;if(m){c[r>>2]=1024;n=1024;l=1024}else{l=Xg(c[n+164>>2]|0,4194304)|0;c[r>>2]=l;n=Xg(c[(c[j>>2]|0)+168>>2]|0,4194304)|0}c[r+12>>2]=n;g=D+8|0;j=m&1^1;c[g>>2]=j;if(k<<24>>24!=0?(a[o+32>>0]|0)==0:0)c[g>>2]=j|2;C=o+36|0;q=D+144|0;c[q>>2]=c[C>>2];c[D+148>>2]=c[C+4>>2];c[D+152>>2]=c[C+8>>2];c[D+156>>2]=c[C+12>>2];c[D+160>>2]=c[C+16>>2];c[D+164>>2]=c[C+20>>2];c[D+168>>2]=c[C+24>>2];c[D+172>>2]=c[C+28>>2];C=b[(c[p>>2]|0)+68>>1]|0;j=C&65535;o=D+88|0;c[o>>2]=j;if(C<<16>>16<0){L=164;i=M;return L|0}C=Xg(131072e3,j<<16)|0;if((l|0)>(C|0)|(n|0)>(C|0)){L=164;i=M;return L|0}c[L>>2]=0;c[F>>2]=0;c[F+4>>2]=0;l=c[s>>2]|0;n=c[D+92>>2]|0;f=c[D+96>>2]|0;C=D+4|0;c[C>>2]=0;h=l+928|0;l=e[(c[(c[l+4>>2]|0)+88>>2]|0)+14>>1]<<16;j=D+84|0;if((c[j>>2]|0)==(l|0))m=(c[D+136>>2]|0)!=(c[h>>2]|0)&1;else{c[j>>2]=l;m=1}k=c[g>>2]|0;a[D+140>>0]=k&1;j=D+12|0;if(pga(r,j,16)|0){c[j+0>>2]=c[r+0>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[j+12>>2]=c[r+12>>2];c[D+32>>2]=0;c[D+28>>2]=0;m=D+36|0;c[m+0>>2]=c[r+0>>2];c[m+4>>2]=c[r+4>>2];c[m+8>>2]=c[r+8>>2];c[m+12>>2]=c[r+12>>2];c[m+16>>2]=c[r+16>>2];c[m+20>>2]=c[r+20>>2];c[D+72>>2]=65536;c[D+60>>2]=65536;c[D+68>>2]=0;c[D+64>>2]=0;m=1}B=D+142|0;j=k&2;if((d[B>>0]|0)==(j|0)){if(m<<24>>24)G=19}else{a[B>>0]=j;G=19}a:do if((G|0)==19){m=c[o>>2]|0;m=(m|0)==0?1e3:m;l=(l|0)<262144?262144:l;o=65536e3/(m|0)|0;j=c[(c[h>>2]|0)+388>>2]<<16;k=D+176|0;c[k>>2]=j;if((j|0)<1){j=Xg(4915200,o)|0;c[k>>2]=j}if((n|0)>0){j=m<<16;if((n|0)<=(Xg(j,l)|0))n=Xg(j,l)|0;j=D+184|0;if(!((o|0)<655|(n|0)==0))c[j>>2]=((n|0)/2|0)+(c[j>>2]|0)}else Iu(o,l,j,D+184|0,0,a[B>>0]|0,q);A=c[(c[h>>2]|0)+384>>2]|0;if((A&65535)<<16>>16>0?(c[k>>2]|0)>(A<<17|0):0){j=Xg(4915200,o)|0;c[D+180>>2]=j}else{j=Xg(7208960,o)|0;c[D+180>>2]=j}A=D+188|0;Iu(o,l,j,A,f,a[B>>0]|0,q);if((c[D+184>>2]|0)==0?(c[A>>2]|0)==0:0)a[D+141>>0]=0;else a[D+141>>0]=1;a[D+192>>0]=0;z=D+196|0;u=c[s>>2]|0;Cga(z|0,0,308)|0;c[z>>2]=c[D+48>>2];x=D+208|0;u=u+928|0;c[x>>2]=Xg(c[(c[u>>2]|0)+372>>2]|0,65536e3)|0;u=c[u>>2]|0;c[D+212>>2]=c[u+376>>2]<<16;c[D+216>>2]=c[u+380>>2]<<16;n=a[u+176>>0]|0;g=n&255;j=u+180|0;h=a[u+177>>0]|0;f=h&255;q=a[u+178>>0]|0;v=q&255;p=a[u+179>>0]|0;w=p&255;do if((c[u+512>>2]|0)==1){if((g|0)==4){if((c[j>>2]&65535)<<16>>16>=-120)break;if((c[u+184>>2]&65535)<<16>>16>=-120)break;if((c[u+188>>2]&65535)<<16>>16<=880)break;if((c[u+192>>2]&65535)<<16>>16<=880)break}else if(g)break;c[D+252>>2]=-7864321;c[D+256>>2]=((Wg(-7864321,c[z>>2]|0)|0)+32768&-65536)+-32768;B=c[z>>2]|0;c[D+260>>2]=B;c[D+244>>2]=49;A=(c[A>>2]<<1)+57671681|0;c[D+232>>2]=A;c[D+236>>2]=(Wg(A,B)|0)+32768&-65536|32768;c[D+240>>2]=c[z>>2];c[D+224>>2]=50;a[D+205>>0]=1;break a}while(0);y=D+200|0;if(!(n<<24>>24))n=0;else{j=c[y>>2]|0;o=0;n=0;do{c[D+(j*20|0)+264>>2]=c[u+(o<<2)+180>>2]<<16;c[D+((c[y>>2]|0)*20|0)+268>>2]=c[u+((o|1)<<2)+180>>2]<<16;j=c[y>>2]|0;m=D+(j*20|0)+268|0;k=c[m>>2]|0;l=k-(c[D+(j*20|0)+264>>2]|0)|0;if((l|0)>=0){if(!o){a[D+(j*20|0)+280>>0]=1;t=c[y>>2]|0;c[D+(t*20|0)+272>>2]=c[D+(t*20|0)+268>>2]}else{s=c[A>>2]<<1;c[m>>2]=s+k;t=D+((c[y>>2]|0)*20|0)+264|0;c[t>>2]=(c[t>>2]|0)+s;a[D+((c[y>>2]|0)*20|0)+280>>0]=0;t=c[y>>2]|0;c[D+(t*20|0)+272>>2]=c[D+(t*20|0)+264>>2]}j=(c[y>>2]|0)+1|0;c[y>>2]=j;n=(l|0)>(n|0)?l:n}o=o+2|0}while(o>>>0>>0)}if(h<<24>>24){j=c[y>>2]|0;k=0;do{c[D+(j*20|0)+264>>2]=c[u+(k<<2)+236>>2]<<16;c[D+((c[y>>2]|0)*20|0)+268>>2]=c[u+((k|1)<<2)+236>>2]<<16;j=c[y>>2]|0;m=(c[D+(j*20|0)+268>>2]|0)-(c[D+(j*20|0)+264>>2]|0)|0;if((m|0)>=0){a[D+(j*20|0)+280>>0]=1;j=c[y>>2]|0;c[D+(j*20|0)+272>>2]=c[D+(j*20|0)+268>>2];j=(c[y>>2]|0)+1|0;c[y>>2]=j;n=(m|0)>(n|0)?m:n}k=k+2|0}while(k>>>0>>0)}s=Xg(65536,c[z>>2]|0)|0;if(c[y>>2]|0){t=(q&255)>2;r=p<<24>>24==0;g=(q&255)>1;h=u+280|0;q=0;do{f=D+(q*20|0)+272|0;p=c[f>>2]|0;b:do if(!(a[D+(q*20|0)+280>>0]|0)){if(!t)break;l=c[A>>2]<<1;o=2;k=2147483647;while(1){m=(c[u+(o<<2)+276>>2]<<16)+l|0;j=p-m|0;j=(j|0)<0?0-j|0:j;if((j|0)<(k|0)&(j|0)<(s|0)){c[f>>2]=m;if(!j)break b}else j=k;o=o+2|0;if(o>>>0>=v>>>0)break;else k=j}}else{c:do if(r)m=2147483647;else{l=0;k=2147483647;while(1){m=c[u+((l|1)<<2)+332>>2]<<16;j=p-m|0;j=(j|0)<0?0-j|0:j;if((j|0)<(k|0)&(j|0)<(s|0)){c[f>>2]=m;if(!j){m=0;break c}}else j=k;l=l+2|0;if(l>>>0>=w>>>0){m=j;break}else k=j}}while(0);if(!g)break;j=c[h>>2]<<16;p=p-j|0;p=(p|0)<0?0-p|0:p;if(!((p|0)<(m|0)&(p|0)<(s|0)))break;c[f>>2]=j}while(0);q=q+1|0}while(q>>>0<(c[y>>2]|0)>>>0)}if((n|0)>0?(A=c[x>>2]|0,(A|0)>(Xg(65536,n)|0)):0)c[x>>2]=Xg(65536,n)|0;n=c[z>>2]|0;j=c[x>>2]|0;if((n|0)<(j|0)){a[D+204>>0]=1;A=Wg(39322,65536-(Xg(n,j)|0)|0)|0;c[D+220>>2]=(A|0)>32767?32767:A}if(a[B>>0]|0)c[D+220>>2]=0;if(!(c[y>>2]|0))break;j=D+220|0;k=0;do{A=(a[D+(k*20|0)+280>>0]|0)==0;x=Wg(c[D+(k*20|0)+272>>2]|0,c[z>>2]|0)|0;B=c[j>>2]|0;c[D+(k*20|0)+276>>2]=x+32768+(A?B:0-B|0)&-65536;k=k+1|0}while(k>>>0<(c[y>>2]|0)>>>0)}while(0);if(c[C>>2]|0){L=3;i=M;return L|0}j=D+192|0;a[j>>0]=0;k=D+116|0;l=D+100|0;m=a[D+141>>0]|0;while(1){B=c[H>>2]|0;c[k>>2]=0;dh(c[B+12>>2]|0);Ju(D,E,l,F,0,0,0,L);if(c[C>>2]|0){j=3;G=101;break}if(!(m<<24>>24))break;if((c[k>>2]|0)>-1)break;a[j>>0]=1;m=0}if((G|0)==101){i=M;return j|0}m=c[H>>2]|0;h=c[m+20>>2]|0;do if(h){g=b[h>>1]|0;if(g<<16>>16<2)n=0;else n=(b[(c[h+12>>2]|0)+((g<<16>>16)+-2<<1)>>1]|0)+1|0;f=h+2|0;k=b[f>>1]|0;if(((k<<16>>16>1?(J=c[h+4>>2]|0,I=(k<<16>>16)+-1|0,K=(c[h+8>>2]|0)+I|0,(c[J+(n<<3)>>2]|0)==(c[J+(I<<3)>>2]|0)):0)?(c[J+(n<<3)+4>>2]|0)==(c[J+(I<<3)+4>>2]|0):0)?(a[K>>0]|0)==1:0){k=k+-1<<16>>16;b[f>>1]=k}j=g<<16>>16;if(g<<16>>16>0){l=(k<<16>>16)+-1|0;if((n|0)==(l|0)){b[h>>1]=g+-1<<16>>16;b[f>>1]=k+-1<<16>>16;break}else{b[(c[h+12>>2]|0)+(j+-1<<1)>>1]=l;break}}}while(0);lh(c[m+12>>2]|0);if(c[C>>2]|0){L=3;i=M;return L|0}L=c[L>>2]|0;c[C>>2]=0;c[(c[H>>2]|0)+744>>2]=L+32768>>16;L=0;i=M;return L|0}function Ps(a,d){a=a|0;d=d|0;var e=0,f=0;f=i;e=c[a+652>>2]|0;a=b[(c[e+1160>>2]|0)+(d<<1)>>1]|0;d=a&65535;do if(a<<16>>16!=-1)if((a&65535)>390){a=d+-391|0;if((c[e+1312>>2]|0)>>>0<=a>>>0){a=0;break}a=c[(c[e+1316>>2]|0)+(a<<2)>>2]|0;break}else{a=c[e+2956>>2]|0;if(!a){a=0;break}a=Ld[c[a+20>>2]&511](d)|0;break}else a=0;while(0);i=f;return a|0}function Qs(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;s=(f|0)!=0;if(s){c[f>>2]=0;k=0;o=0;g=0;j=b;h=4;b=0}else{k=0;o=0;g=0;j=b;h=4;b=0}a:while(1){n=(g|0)>214748363;b:while(1)while(1){while(1){if(h){j=j+1|0;if(j>>>0>=d>>>0){g=0;break a}}l=a[j>>0]|0;m=(l&255)>>>h&15;h=4-h|0;if((m|0)==14){b=1;continue b}if(m>>>0>9){p=o;q=b;r=14;break a}if(n)break;if(m|g)break b}k=k+1|0}o=o+1|0;g=m+(g*10|0)|0}c:do if((r|0)==14){d:do if((m|0)==10){b=l;n=0;while(1){if(!((g|0)<214748364&(n|0)<9))break;while(1){if(h){j=j+1|0;if(j>>>0>=d>>>0){g=0;b=q;break c}b=a[j>>0]|0}m=(b&255)>>>h&15;h=4-h|0;if(m>>>0>9)break d;if(m|g)break;k=k+-1|0}n=n+1|0;g=m+(g*10|0)|0}while(1){do{if(h){j=j+1|0;if(j>>>0>=d>>>0){g=0;b=q;break c}b=a[j>>0]|0}m=(b&255)>>>h&15;h=4-h|0;if(m>>>0>9)break d}while((m|g|0)!=0);k=k+-1|0}}else{b=l;n=0}while(0);o=(m|0)==12;if((m+-11|0)>>>0<2){m=0;while(1){if((m|0)>1e3){r=33;break}if(h){j=j+1|0;if(j>>>0>=d>>>0){g=0;b=q;break c}b=a[j>>0]|0}l=(b&255)>>>h&15;if(l>>>0>9){j=m;b=0;break}m=l+(m*10|0)|0;h=4-h|0}e:do if((r|0)==33){l=b;b=0;while(1){if(h){j=j+1|0;if(j>>>0>=d>>>0){g=0;b=q;break c}l=a[j>>0]|0}if(((l&255)>>>h&14)>>>0>9){j=m;break e}b=1;h=4-h|0}}while(0);j=o?0-j|0:j}else{j=0;b=0}if(!g){g=0;b=q}else{do if(b){if(!o){g=2147483647;b=q;break c}}else{b=k+e+j|0;if(!s){h=b+p|0;if((h|0)>5){g=2147483647;b=q;break c}if((h|0)<-5)break;if((h|0)<0){b=n+p|0;g=(g|0)/(c[12120+(0-h<<2)>>2]|0)|0}else b=n-b|0;if((b|0)!=10){if((b|0)<=0){g=ea(c[12120+(0-b<<2)>>2]|0,g)|0;g=(g|0)>32767?2147483647:g<<16;b=q;break c}}else{b=9;g=(g|0)/10|0}b=c[12120+(b<<2)>>2]|0;if(((g|0)/(b|0)|0|0)>32767){g=0;b=q;break c}g=Xg(g,b)|0;b=q;break c}k=n+p|0;h=b+p|0;if((k|0)>=6){b=c[12120+(k+-5<<2)>>2]|0;if(((g|0)/(b|0)|0|0)>32767){g=Xg(g,c[12120+(k+-4<<2)>>2]|0)|0;c[f>>2]=h+-4;b=q;break c}else{g=Xg(g,b)|0;c[f>>2]=h+-5;b=q;break c}}if((g|0)>32767){g=Xg(g,10)|0;c[f>>2]=1-k+h;b=q;break c}do if((h|0)>0){b=(h|0)<5?h:5;j=b-k|0;if((j|0)<=0){h=h-k|0;b=g;break}h=h-b|0;b=ea(c[12120+(j<<2)>>2]|0,g)|0;if((b|0)>32767){h=h+1|0;b=(b|0)/10|0}}else{h=h-k|0;b=g}while(0);c[f>>2]=h;g=b<<16;b=q;break c}while(0);g=0;b=q}}while(0);i=t;return ((b|0)==0?g:0-g|0)|0}function Rs(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+32|0;x=z+24|0;m=z;y=z+8|0;r=c[a+4>>2]|0;s=r+140|0;q=c[r+328>>2]|0;c[x>>2]=0;t=c[r+100>>2]|0;u=c[r+136>>2]|0;v=c[(c[r+128>>2]|0)+48>>2]|0;w=(v|0)!=0;if(w){l=v+4|0;e=Od[c[c[v>>2]>>2]&255](c[l>>2]|0,b,m)|0;c[x>>2]=e;if(e){y=e;i=z;return y|0}k=s+148|0;h=c[k>>2]|0;e=h&255;if(!(e<<24>>24))j=0;else{g=c[m>>2]|0;f=0;while(1){f=d[g>>0]|0|f<<8;e=e+-1<<24>>24;if(!(e<<24>>24)){j=f;break}else g=g+1|0}}e=c[m+4>>2]|0;if(e){f=e-h|0;e=ch(t,f,x)|0;if(!(c[x>>2]|0)){Aga(e|0,(c[m>>2]|0)+(c[k>>2]|0)|0,f|0)|0;g=e}else g=e}else{g=0;f=0}Jd[c[(c[v>>2]|0)+4>>2]&255](c[l>>2]|0,m);e=c[x>>2]|0;if(!e)e=j;else{y=e;i=z;return y|0}}else{g=s+148|0;m=s+152|0;e=(c[m>>2]|0)+(c[g>>2]|0)|0;p=s+168|0;f=Hh(q,(c[s+144>>2]|0)+(c[p>>2]|0)+(ea(e,b)|0)|0)|0;c[x>>2]=f;if(f){y=f;i=z;return y|0}e=yi(q,e<<1)|0;c[x>>2]=e;if(e){y=e;i=z;return y|0}k=c[q+32>>2]|0;n=c[g>>2]|0;e=n&255;if(!(e<<24>>24))o=0;else{g=n+255&255;h=k;f=0;while(1){f=d[h>>0]|0|f<<8;e=e+-1<<24>>24;if(!(e<<24>>24)){e=f;break}else h=h+1|0}k=k+(g+1)|0;o=e}e=c[m>>2]|0;g=e&255;j=g<<24>>24==0;if(!j){l=e+255&255;e=g;f=k;h=0;while(1){h=d[f>>0]|0|h<<8;e=e+-1<<24>>24;if(!(e<<24>>24))break;else f=f+1|0}if(j)e=0;else{f=k+(l+1+n)|0;e=0;while(1){e=d[f>>0]|0|e<<8;g=g+-1<<24>>24;if(!(g<<24>>24))break;else f=f+1|0}}}else{h=0;e=0}f=e-h|0;Bi(q);if(o>>>0>=(c[s+160>>2]|0)>>>0){c[x>>2]=9;y=9;i=z;return y|0}if((e|0)==(h|0)){y=0;i=z;return y|0}g=ch(t,f,x)|0;e=c[x>>2]|0;if(e){y=e;i=z;return y|0}e=vi(q,(c[p>>2]|0)+h|0,g,f)|0;c[x>>2]=e;if(!e)e=o;else{y=e;i=z;return y|0}}p=c[r+316>>2]|0;c[a+1364>>2]=c[p+(e<<3)>>2];c[a+1368>>2]=c[p+(e<<3)+4>>2];c[a+1372>>2]=0;s=c[s+164>>2]|0;p=a+1376|0;q=s+(e*252|0)+216|0;c[p+0>>2]=c[q+0>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];p=s+(e*252|0)+232|0;q=c[p+4>>2]|0;r=a+1392|0;c[r>>2]=c[p>>2];c[r+4>>2]=q;e=c[s+(e*252|0)+4>>2]|0;c[a+1360>>2]=e;s=(e|0)>-1;e=s?e:0;if(s)$d[c[u+16>>2]&255](g,f,4330);c[x>>2]=Od[c[a+1484>>2]&255](a,g+e|0,f-e|0)|0;eh(t,g);e=c[x>>2]|0;if(!((e|0)==0&w)){y=e;i=z;return y|0}if(!(c[(c[v>>2]|0)+8>>2]|0)){y=0;i=z;return y|0}s=a+32|0;c[y>>2]=(Rg(c[s>>2]|0)|0)>>16;c[y+4>>2]=0;u=a+40|0;t=y+8|0;c[t>>2]=(Rg(c[u>>2]|0)|0)>>16;a=a+44|0;w=y+12|0;c[w>>2]=(Rg(c[a>>2]|0)|0)>>16;b=ce[c[(c[v>>2]|0)+8>>2]&255](c[v+4>>2]|0,b,0,y)|0;c[x>>2]=b;c[s>>2]=c[y>>2]<<16;c[u>>2]=c[t>>2]<<16;c[a>>2]=c[w>>2]<<16;y=b;i=z;return y|0}function Ss(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+32|0;A=E+20|0;t=E;D=E+16|0;x=f+100|0;C=c[x>>2]|0;k=f+184|0;z=Hh(e,0)|0;c[A>>2]=z;a:do if((z|0)==0?(z=Li(e,21768,k)|0,c[A>>2]=z,(z|0)==0):0)if((c[k>>2]|0)==1885562369?(w=f+188|0,g=c[w>>2]|0,(g+-1|0)>>>0<=134217726):0){g=hh(C,16,0,g,0,A)|0;v=f+192|0;c[v>>2]=g;if(!(c[A>>2]|0)){do if(!(c[w>>2]|0)){k=0;B=10}else{h=0;while(1){z=Li(e,21784,g)|0;c[A>>2]=z;if(z)break;h=h+1|0;k=c[w>>2]|0;if(h>>>0>=k>>>0){B=9;break}else g=g+16|0}if((B|0)==9){g=c[v>>2]|0;if((k|0)==1){k=1;B=21;break}else{B=10;break}}eh(C,c[v>>2]|0);c[v>>2]=0;z=c[A>>2]|0;c[D>>2]=z;if(z)break a;k=c[w>>2]|0;g=0}while(0);if((B|0)==10){p=0;do{o=~p;p=p+1|0;if((k|0)==(p|0))break;l=c[g+12>>2]|0;h=0;n=0;while(1){m=n;n=n+1|0;k=g+(n<<4)+12|0;j=c[k>>2]|0;if(l>>>0>j>>>0){j=g+(n<<4)|0;h=g+(m<<4)|0;c[t+0>>2]=c[h+0>>2];c[t+4>>2]=c[h+4>>2];c[t+8>>2]=c[h+8>>2];c[t+12>>2]=c[h+12>>2];c[h+0>>2]=c[j+0>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];c[j+0>>2]=c[t+0>>2];c[j+4>>2]=c[t+4>>2];c[j+8>>2]=c[t+8>>2];c[j+12>>2]=c[t+12>>2];j=c[k>>2]|0;h=1}k=c[g+(m<<4)+8>>2]|0;if(j>>>0>>0){g=9;B=19;break a}if((c[g+(m<<4)+12>>2]|0)>>>0>(j-k|0)>>>0){g=9;B=19;break a}k=c[w>>2]|0;if(n>>>0>=(k+o|0)>>>0)break;else l=j}}while((h|0)!=0&p>>>0<(k+-1|0)>>>0);g=c[v>>2]|0;B=21}if((B|0)==21)c[D>>2]=0;p=c[x>>2]|0;b:do if(k){h=0;while(1){if((c[g+(h<<4)>>2]|0)==1)break;h=h+1|0;if(h>>>0>=k>>>0){g=3;B=29;break b}}k=c[e+8>>2]|0;j=c[g+(h<<4)+12>>2]|0;if(j>>>0>=k>>>0?(qi(e,j-k|0)|0)==0:0){j=c[g+(h<<4)+8>>2]|0;c[A>>2]=0;g=Ki(e,A)|0;if((c[A>>2]|0)==0&g>>>0<256){h=(g&4|0)==0;if(h)o=Ki(e,A)|0;else o=ti(e,A)|0;if(!(c[A>>2]|0)){if(o>>>0>((j>>>0)/9|0)>>>0){c[A>>2]=8;k=0;g=0;break}c[f+280>>2]=o;k=hh(p,12,0,o,0,A)|0;if(!(c[A>>2]|0)){n=(o|0)==0;do if(!n){if(h){g=0;do{z=Li(e,21744,k+(g*12|0)|0)|0;c[A>>2]=z;if(z){g=0;break b}g=g+1|0}while(g>>>0>>0)}else{g=0;do{z=Li(e,21720,k+(g*12|0)|0)|0;c[A>>2]=z;if(z){g=0;break b}g=g+1|0}while(g>>>0>>0)}g=o&3;if(g){z=qi(e,4-g|0)|0;c[A>>2]=z;if(!z)break;c[A>>2]=83;g=0;break b}}while(0);if(h)m=Ki(e,A)|0;else m=ti(e,A)|0;if(!(c[A>>2]|0)){if(m>>>0>((ea(o,-9)|0)+j|0)>>>0){c[A>>2]=8;g=0;break}g=hh(p,1,0,m+1|0,0,A)|0;if(c[A>>2]|0)break;z=pi(e,g,m)|0;c[A>>2]=z;if(z)break;l=hh(p,12,0,o,0,A)|0;if(c[A>>2]|0)break;c[f+284>>2]=l;c:do if(!n){j=0;while(1){h=c[k+(j*12|0)>>2]|0;if((h|0)<0|h>>>0>m>>>0){B=58;break}c[l+(j*12|0)>>2]=Ui(p,g+h|0,A)|0;if(c[A>>2]|0)break b;z=a[k+(j*12|0)+4>>0]|0;a[l+(j*12|0)+4>>0]=z;h=c[k+(j*12|0)+8>>2]|0;if(z<<24>>24){if((h|0)<0|h>>>0>m>>>0){B=62;break}c[l+(j*12|0)+8>>2]=Ui(p,g+h|0,A)|0;if(c[A>>2]|0)break b}else c[l+(j*12|0)+8>>2]=h;j=j+1|0;if(j>>>0>=o>>>0)break c}if((B|0)==58){c[A>>2]=9;break b}else if((B|0)==62){c[A>>2]=9;break b}}while(0);c[A>>2]=0}else g=0}else g=0}else{k=0;g=0}}else{k=0;g=0}}else{g=83;B=29}}else{g=3;B=29}while(0);if((B|0)==29){c[A>>2]=g;k=0;g=0}eh(p,k);eh(p,g);z=c[A>>2]|0;c[D>>2]=z;if(!z){h=c[v>>2]|0;g=c[w>>2]|0;d:do if(!g)B=71;else{k=0;while(1){if((c[h+(k<<4)>>2]|0)==256){u=1;break d}k=k+1|0;if(k>>>0>=g>>>0){B=71;break}}}while(0);if((B|0)==71){z=Ku(e,f,2)|0;c[D>>2]=z;if(z)break;g=c[w>>2]|0;h=c[v>>2]|0;u=0}q=c[x>>2]|0;e:do if(g){k=0;while(1){if((c[h+(k<<4)>>2]|0)==4)break;k=k+1|0;if(k>>>0>=g>>>0){g=3;B=78;break e}}s=e+8|0;g=c[s>>2]|0;j=c[h+(k<<4)+12>>2]|0;if(j>>>0>=g>>>0?(qi(e,j-g|0)|0)==0:0){h=c[h+(k<<4)+8>>2]|0;c[t>>2]=0;k=Ki(e,t)|0;g=c[t>>2]|0;if(!g){B=k&-256;if((B|0)==256|(B|0)==0){o=k>>>0<256;g=(k&4|0)!=0;do if(o)if(g){n=ti(e,t)|0;break}else{n=Ki(e,t)|0;break}else if(g){n=(ri(e,t)|0)&65535;break}else{n=(Ii(e,t)|0)&65535;break}while(0);if(!(c[t>>2]|0)){z=f+288|0;c[z>>2]=n;if(!n){g=8;B=101}else{if(o){if(n>>>0>((h>>>0)/12|0)>>>0){g=8;B=101;break}}else if(n>>>0>((h>>>0)/5|0)>>>0){g=8;B=101;break}p=hh(q,16,0,n,0,t)|0;r=f+292|0;c[r>>2]=p;if(c[t>>2]|0){g=64;B=101;break}k=g?21512:21544;h=A+1|0;j=A+2|0;m=A+3|0;l=A+4|0;f:do if(o){g=0;while(1){B=Li(e,k,p+(g<<4)|0)|0;c[t>>2]=B;c[p+(g<<4)+12>>2]=0;g=g+1|0;if(B){B=103;break f}if(g>>>0>=n>>>0){B=102;break}}}else{o=0;while(1){g=Li(e,21576,A)|0;if(!g){b[p+(o<<4)>>1]=(d[A>>0]|0)+65408;b[p+(o<<4)+2>>1]=(d[h>>0]|0)+65408;b[p+(o<<4)+4>>1]=(d[j>>0]|0)+65408;b[p+(o<<4)+6>>1]=(d[m>>0]|0)+65408;b[p+(o<<4)+8>>1]=(d[l>>0]|0)+65408;b[p+(o<<4)+10>>1]=0;g=0}c[t>>2]=g;c[p+(o<<4)+12>>2]=0;o=o+1|0;if(g){B=103;break f}if(o>>>0>=n>>>0){B=102;break}}}while(0);if((B|0)==102)c[D>>2]=0;else if((B|0)==103?(eh(q,c[r>>2]|0),c[r>>2]=0,t=c[t>>2]|0,c[D>>2]=t,(t|0)!=0):0)break a;l=c[x>>2]|0;j=c[v>>2]|0;g=c[w>>2]|0;g:do if(!g){g=3;B=109}else{k=0;while(1){if((c[j+(k<<4)>>2]|0)==8)break;k=k+1|0;if(k>>>0>=g>>>0){g=3;B=109;break g}}g=c[s>>2]|0;h=c[j+(k<<4)+12>>2]|0;if(h>>>0>>0){g=83;B=109;break}if(qi(e,h-g|0)|0){g=83;B=109;break}m=c[j+(k<<4)+8>>2]|0;g=yi(e,8)|0;c[A>>2]=g;if(g)break;h=Gi(e)|0;o=(h&4|0)==0;if(o)p=Gi(e)|0;else p=Fi(e)|0;Bi(e);if(h>>>0>=256){g=3;break}t=c[z>>2]|0;if(!((t|0)>-1&(p|0)==(t|0))){g=3;break}j=hh(l,4,0,p,0,A)|0;g=c[A>>2]|0;if(g)break;k=(p|0)==0;if(!k){if(o){g=0;do{c[j+(g<<2)>>2]=Ki(e,A)|0;g=g+1|0}while((g|0)!=(p|0))}else{g=0;do{c[j+(g<<2)>>2]=ti(e,A)|0;g=g+1|0}while((g|0)!=(p|0))}if(!(c[A>>2]|0))B=122}else B=122;h:do if((B|0)==122){if(o){g=0;do{Ki(e,A)|0;g=g+1|0;if(c[A>>2]|0)break h}while(g>>>0<4)}else{g=0;do{ti(e,A)|0;g=g+1|0;if(c[A>>2]|0)break h}while(g>>>0<4)}if(!k){k=0;do{g=c[j+(k<<2)>>2]|0;if(!((g|0)<0|g>>>0>m>>>0))c[(c[r>>2]|0)+(k<<4)+12>>2]=(c[s>>2]|0)+g;k=k+1|0}while((k|0)!=(p|0))}c[f+308>>2]=h}while(0);eh(l,j);t=c[A>>2]|0;c[D>>2]=t;if(t)break a;t=c[x>>2]|0;h=c[v>>2]|0;g=c[w>>2]|0;i:do if(!g){g=3;B=139}else{k=0;while(1){if((c[h+(k<<4)>>2]|0)==32){g=k;break}k=k+1|0;if(k>>>0>=g>>>0){g=3;B=139;break i}}k=c[s>>2]|0;g=c[h+(g<<4)+12>>2]|0;if(g>>>0>>0){g=83;B=139;break}if(qi(e,g-k|0)|0){g=83;B=139;break}g=yi(e,14)|0;c[A>>2]=g;if(g)break;k=Gi(e)|0;n=(k&4|0)==0;if(n){q=(Ei(e)|0)<<16>>16;r=(Ei(e)|0)<<16>>16;h=(Ei(e)|0)<<16>>16;s=(Ei(e)|0)<<16>>16;g=Ei(e)|0}else{q=(Di(e)|0)<<16>>16;r=(Di(e)|0)<<16>>16;h=(Di(e)|0)<<16>>16;s=(Di(e)|0)<<16>>16;g=Di(e)|0}b[f+304>>1]=g;Bi(e);if(k>>>0>=256){g=3;break}m=ea(1-h+s|0,1-q+r|0)|0;l=hh(t,8,0,m,0,A)|0;if(c[A>>2]|0){g=64;break}w=yi(e,m<<1)|0;c[A>>2]=w;do if(!w){if((h|0)>(s|0))k=0;else{p=(q|0)>(r|0);k=0;while(1){if(!p){j=h<<8;if(n){o=q;while(1){g=Ei(e)|0;if(g<<16>>16!=-1){c[l+(k<<3)>>2]=o+j;b[l+(k<<3)+4>>1]=g;k=k+1|0}if((o|0)<(r|0))o=o+1|0;else break}}else{o=q;while(1){g=Di(e)|0;if(g<<16>>16!=-1){c[l+(k<<3)>>2]=o+j;b[l+(k<<3)+4>>1]=g;k=k+1|0}if((o|0)<(r|0))o=o+1|0;else break}}}if((h|0)<(s|0))h=h+1|0;else break}}Bi(e);g=hh(t,8,m,k,l,A)|0;if(c[A>>2]|0){y=g;B=161;break}c[f+296>>2]=k;c[f+300>>2]=g;c[D>>2]=0}else{y=l;B=161}while(0);if((B|0)==161?(eh(t,y),y=c[A>>2]|0,c[D>>2]=y,(y|0)!=0):0)break a;if(u?(e=Ku(e,f,256)|0,c[D>>2]=e,(e|0)!=0):0)break a;c[f>>2]=1;c[f+4>>2]=0;c[f+8>>2]=(a[f+199>>0]|0)==0?146:150;c[A>>2]=0;w=c[x>>2]|0;o=f+12|0;c[o>>2]=0;x=f+284|0;m=c[x>>2]|0;y=f+280|0;p=c[y>>2]|0;do if((p|0)>0){g=0;while(1){h=g+1|0;k=(qga(c[m+(g*12|0)>>2]|0,21424)|0)!=0;if((h|0)<(p|0)&k)g=h;else break}do if(k|(m+(g*12|0)|0)==0){j=2;l=0}else{if(!(a[m+(g*12|0)+4>>0]|0)){j=2;l=0;break}g=c[m+(g*12|0)+8>>2]|0;e=a[g>>0]|0;if(!(e<<24>>24==105|e<<24>>24==73|e<<24>>24==111|e<<24>>24==79)){j=2;l=0;break}c[o>>2]=1;g=a[g>>0]|0;if(g<<24>>24==79){j=3;l=21432;break}j=3;l=g<<24>>24==111?21432:21440}while(0);g=0;while(1){h=g+1|0;k=(qga(c[m+(g*12|0)>>2]|0,21448)|0)!=0;if((h|0)<(p|0)&k)g=h;else break}do if(k|(m+(g*12|0)|0)==0)j=0;else{if(!(a[m+(g*12|0)+4>>0]|0)){j=0;break}e=a[c[m+(g*12|0)+8>>2]>>0]|0;if(!(e<<24>>24==98|e<<24>>24==66)){j=0;break}c[o>>2]=j;j=21464}while(0);g=0;while(1){h=g+1|0;k=(qga(c[m+(g*12|0)>>2]|0,21472)|0)!=0;if((h|0)<(p|0)&k)g=h;else break}do if(k|(m+(g*12|0)|0)==0)n=0;else{if(!(a[m+(g*12|0)+4>>0]|0)){n=0;break}g=c[m+(g*12|0)+8>>2]|0;e=a[g>>0]|0;if(e<<24>>24==110|e<<24>>24==78|e<<24>>24==0){n=0;break}n=g}while(0);g=0;while(1){h=g+1|0;k=(qga(c[m+(g*12|0)>>2]|0,21488)|0)!=0;if((h|0)<(p|0)&k)g=h;else break}do if(k|(m+(g*12|0)|0)==0){g=0;o=0;k=0}else{if(!(a[m+(g*12|0)+4>>0]|0)){g=0;o=0;k=0;break}g=c[m+(g*12|0)+8>>2]|0;e=a[g>>0]|0;if(e<<24>>24==110|e<<24>>24==78|e<<24>>24==0){g=0;o=0;k=0;break}if(!g){g=0;o=0;k=0;break}k=Dga(g|0)|0;o=k;k=k+1|0}while(0);if(!j){q=1;h=0;m=0}else{e=Dga(j|0)|0;q=0;h=j;m=e;k=k+1+e|0}if(!l){p=1;j=0;l=0}else{e=Dga(l|0)|0;p=0;j=l;l=e;k=k+1+e|0}if(!n){t=m;u=0;v=0;s=1;r=p;break}e=Dga(n|0)|0;t=m;u=n;v=e;s=0;r=p;k=k+1+e|0}else{h=0;t=0;j=0;l=0;u=0;v=0;o=0;g=0;s=1;q=1;r=1;k=0}while(0);n=(k|0)==0;p=n?7:o;o=n?21504:g;g=ch(w,n?8:k,A)|0;n=f+24|0;c[n>>2]=g;k=c[A>>2]|0;if(k){c[D>>2]=k;break a}if(o){Aga(g|0,o|0,p|0)|0;if(p){m=0;do{k=g+m|0;if((a[k>>0]|0)==32)a[k>>0]=45;m=m+1|0}while((m|0)!=(p|0))}g=g+p|0}if(!q){if((g|0)!=(c[n>>2]|0)){a[g>>0]=32;g=g+1|0}Aga(g|0,h|0,t|0)|0;g=g+t|0}if(!r){if((g|0)!=(c[n>>2]|0)){a[g>>0]=32;g=g+1|0}Aga(g|0,j|0,l|0)|0;g=g+l|0}if(!s){if((g|0)!=(c[n>>2]|0)){a[g>>0]=32;g=g+1|0}Aga(g|0,u|0,v|0)|0;if(v){h=0;do{k=g+h|0;if((a[k>>0]|0)==32)a[k>>0]=45;h=h+1|0}while((h|0)!=(v|0))}g=g+v|0}a[g>>0]=0;A=c[A>>2]|0;c[D>>2]=A;if(A)break a;l=c[x>>2]|0;h=c[y>>2]|0;do if((h|0)>0){g=0;while(1){j=g+1|0;k=(qga(c[l+(g*12|0)>>2]|0,21280)|0)!=0;if((j|0)<(h|0)&k)g=j;else break}if(k|(l+(g*12|0)|0)==0){B=226;break}if(!(a[l+(g*12|0)+4>>0]|0)){B=226;break}c[f+20>>2]=Ui(C,c[l+(g*12|0)+8>>2]|0,D)|0;if(c[D>>2]|0)break a}else B=226;while(0);if((B|0)==226)c[f+20>>2]=0;c[f+16>>2]=(c[z>>2]|0)+1;c[f+28>>2]=1;m=hh(C,16,0,1,0,D)|0;c[f+32>>2]=m;if(c[D>>2]|0)break a;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;j=(c[f+208>>2]|0)+(c[f+204>>2]|0)|0;b[m>>1]=j;q=c[x>>2]|0;n=c[y>>2]|0;p=(n|0)>0;do if(p){g=0;while(1){h=g+1|0;k=(qga(c[q+(g*12|0)>>2]|0,21296)|0)!=0;if((h|0)<(n|0)&k)g=h;else break}if(k|(q+(g*12|0)|0)==0){B=232;break}b[m+2>>1]=((c[q+(g*12|0)+8>>2]|0)+5|0)/10|0}else B=232;while(0);if((B|0)==232)b[m+2>>1]=(j<<16>>15|0)/3|0;do if(p){g=0;while(1){h=g+1|0;k=(qga(c[q+(g*12|0)>>2]|0,21312)|0)!=0;if((h|0)<(n|0)&k)g=h;else break}if(k|(q+(g*12|0)|0)==0)o=0;else{o=(((c[q+(g*12|0)+8>>2]|0)*460800|0)+36135|0)/72270|0;c[m+4>>2]=o}g=0;while(1){h=g+1|0;k=(qga(c[q+(g*12|0)>>2]|0,21328)|0)!=0;if((h|0)<(n|0)&k)g=h;else break}if(k|(q+(g*12|0)|0)==0)g=0;else{g=c[q+(g*12|0)+8>>2]<<16>>10;c[m+12>>2]=g}k=0;while(1){j=k+1|0;h=(qga(c[q+(k*12|0)>>2]|0,21344)|0)!=0;if((j|0)<(n|0)&h)k=j;else break}if(h|(q+(k*12|0)|0)==0)l=0;else l=c[q+(k*12|0)+8>>2]<<16>>16;k=0;while(1){j=k+1|0;h=(qga(c[q+(k*12|0)>>2]|0,21360)|0)!=0;if((j|0)<(n|0)&h)k=j;else break}if(h|(q+(k*12|0)|0)==0)h=0;else h=c[q+(k*12|0)+8>>2]&65535;k=m+12|0;if(!g){c[k>>2]=o;if(!(h<<16>>16)){g=o;B=255;break}g=(ea(o,h<<16>>16)|0)/72|0;c[k>>2]=g}if((l|0)==0|h<<16>>16==0){B=255;break}c[m+8>>2]=(ea(g,l)|0)/(h<<16>>16|0)|0}else{c[m+12>>2]=0;g=0;B=255}while(0);if((B|0)==255)c[m+8>>2]=g;if(p)j=0;else{D=0;i=E;return D|0}while(1){g=j+1|0;h=(qga(c[q+(j*12|0)>>2]|0,21376)|0)!=0;if((g|0)<(n|0)&h)j=g;else break}if(h)k=0;else k=q+(j*12|0)|0;j=0;while(1){g=j+1|0;h=(qga(c[q+(j*12|0)>>2]|0,21400)|0)!=0;if((g|0)<(n|0)&h)j=g;else break}if(h)g=0;else g=q+(j*12|0)|0;if(!k){D=0;i=E;return D|0}if(!((a[k+4>>0]|0)!=0&(g|0)!=0)){D=0;i=E;return D|0}if(!(a[g+4>>0]|0)){D=0;i=E;return D|0}c[f+176>>2]=Ui(C,c[g+8>>2]|0,D)|0;if(c[D>>2]|0)break a;c[f+180>>2]=Ui(C,c[k+8>>2]|0,D)|0;g=c[D>>2]|0;break e}while(0);if((B|0)==139)c[A>>2]=g;c[D>>2]=g;break e}while(0);if((B|0)==109)c[A>>2]=g;c[D>>2]=g}}else{g=3;B=101}}else{g=3;B=101}}else B=101}else{g=83;B=78}}else{g=3;B=78}while(0);if((B|0)==78){c[t>>2]=g;B=101}if((B|0)==101)c[D>>2]=g;if(!g){D=0;i=E;return D|0}}}else{g=64;B=19}}else{g=3;B=19}else{g=1;B=19}while(0);if((B|0)==19)c[D>>2]=g;c[D>>2]=3;D=3;i=E;return D|0}function Ts(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=i;i=i+48|0;I=K+32|0;F=K;j=Hh(g,j+h|0)|0;if(j){J=j;i=K;return J|0}j=yi(g,k)|0;if(j){J=j;i=K;return J|0}l=c[g+32>>2]|0;H=l+k|0;if((k|0)!=0?(a[l>>0]|0)<0:0){u=c[f+28>>2]|0;t=f+16|0;z=c[t>>2]|0;c[I>>2]=0;o=c[u>>2]|0;q=l+1|0;a:do if((k|0)>=1?(m=d[l>>0]|0,(m&128|0)!=0):0){s=m&63;b:do if(m&8){j=l+2|0;c:do if((k|0)>=2){l=a[q>>0]|0;if(l<<24>>24){q=l&255;do{if((j+2|0)>>>0>H>>>0)break c;j=j+((d[j>>0]|0)+2)|0;if(j>>>0>H>>>0)break c;q=q+-1|0}while((q|0)!=0)}c[I>>2]=0;q=j;break b}while(0);c[I>>2]=8;j=8;break a}while(0);j=z+s|0;k=f+20|0;m=c[k>>2]|0;if(j>>>0>m>>>0){l=j+3&-4;if(l>>>0>64){c[I>>2]=8;j=8;break}j=f+24|0;c[j>>2]=hh(o,24,m,l,c[j>>2]|0,I)|0;j=c[I>>2]|0;if(j)break;c[k>>2]=l}if(!s)j=0;else{p=0;j=q;n=(c[f+24>>2]|0)+(z*24|0)|0;while(1){q=j+1|0;if(q>>>0>H>>>0){J=52;break a}r=d[j>>0]|0;c[n>>2]=65536;if(!(r&16)){k=3;o=2}else{m=j+3|0;if(m>>>0>H>>>0){J=52;break a}c[n>>2]=(d[q>>0]<<8|d[j+2>>0])<<16>>12;k=5;o=4;q=m}l=n+4|0;c[l>>2]=65536;if(r&32){m=j+k|0;if(m>>>0>H>>>0){J=52;break a}c[l>>2]=(d[q>>0]<<8|d[j+o>>0])<<16>>12;q=m}j=r&3;if((j|0)==1){j=q+2|0;if(j>>>0>H>>>0){J=52;break a}m=(d[q>>0]<<8|d[q+1>>0])<<16>>16}else if((j|0)==2){j=q+1|0;if(j>>>0>H>>>0){J=52;break a}m=a[q>>0]|0}else{j=q;m=0}q=r>>>2&3;if((q|0)==2){q=j+1|0;if(q>>>0>H>>>0){J=52;break a}j=a[j>>0]|0}else if((q|0)==1){q=j+2|0;if(q>>>0>H>>>0){J=52;break a}j=(d[j>>0]<<8|d[j+1>>0])<<16>>16}else{q=j;j=0}c[n+8>>2]=m;c[n+12>>2]=j;if(!(r&64)){j=q+1|0;if(j>>>0>H>>>0){J=52;break a}c[n+20>>2]=d[q>>0];m=4;o=2;k=3;l=j}else{j=q+2|0;if(j>>>0>H>>>0){J=52;break a}c[n+20>>2]=d[q>>0]<<8|d[q+1>>0];m=5;o=3;k=4;l=j}if(!(r&128)){j=q+k|0;if(j>>>0>H>>>0){J=52;break a}c[n+16>>2]=d[l>>0]<<8|d[q+o>>0]}else{j=q+m|0;if(j>>>0>H>>>0){J=52;break a}c[n+16>>2]=d[q+o>>0]<<8|d[l>>0]<<16|d[q+k>>0]}c[t>>2]=(c[t>>2]|0)+1;p=p+1|0;if(p>>>0>=s>>>0)break;else n=n+24|0}j=c[I>>2]|0}}else J=52;while(0);if((J|0)==52){c[I>>2]=8;j=8}Bi(g);if(j){J=j;i=K;return J|0}w=(c[t>>2]|0)-z|0;x=f+24|0;if((w|0)<=0){J=0;i=K;return J|0}y=u+22|0;u=u+24|0;v=0;while(1){j=c[x>>2]|0;p=v+z|0;r=b[y>>1]|0;j=Ts(f,g,h,c[j+(p*24|0)+16>>2]|0,c[j+(p*24|0)+20>>2]|0)|0;if(j){J=181;break}o=c[x>>2]|0;s=(b[y>>1]|0)-r|0;t=o+(p*24|0)|0;q=c[t>>2]|0;if((q|0)==65536?(c[o+(p*24|0)+4>>2]|0)==65536:0){if((s|0)>0){j=c[o+(p*24|0)+8>>2]|0;m=c[o+(p*24|0)+12>>2]|0;l=0;k=(c[u>>2]|0)+(r<<3)|0;while(1){c[k>>2]=(c[k>>2]|0)+j;H=k+4|0;c[H>>2]=(c[H>>2]|0)+m;l=l+1|0;if((l|0)==(s|0))break;else k=k+8|0}}}else J=59;d:do if((J|0)==59?(J=0,(s|0)>0):0){k=o+(p*24|0)+8|0;n=o+(p*24|0)+4|0;l=o+(p*24|0)+12|0;m=1;j=(c[u>>2]|0)+(r<<3)|0;while(1){H=Wg(c[j>>2]|0,q)|0;c[j>>2]=(c[k>>2]|0)+H;H=j+4|0;G=Wg(c[H>>2]|0,c[n>>2]|0)|0;c[H>>2]=(c[l>>2]|0)+G;if((m|0)==(s|0))break d;q=c[t>>2]|0;m=m+1|0;j=j+8|0}}while(0);v=v+1|0;if((v|0)>=(w|0)){j=0;J=181;break}}if((J|0)==181){i=K;return j|0}}c[I>>2]=0;D=f+28|0;o=c[c[D>>2]>>2]|0;j=l+1|0;e:do if((k|0)>=1?(p=d[l>>0]|0,(p&128|0)==0):0){if(!(p&4)){if(!(p&2)){q=2;m=j;j=0}else{if((k|0)<2){J=179;break}q=3;m=l+2|0;j=d[j>>0]|0}if(!(p&1)){q=m;C=j;B=0}else{if((q|0)>(k|0)){J=179;break}q=l+q|0;C=j;B=d[m>>0]|0}}else{if((k|0)<2){J=179;break}B=d[j>>0]|0;q=l+2|0;C=B&15;B=B>>>4}n=C+B|0;l=f+4|0;j=c[l>>2]|0;if(n>>>0>j>>>0){k=n+7&-8;A=f+8|0;m=hh(o,4,j,k,c[A>>2]|0,I)|0;c[A>>2]=m;j=c[I>>2]|0;if(j)break;c[l>>2]=k}else m=c[f+8>>2]|0;h=f+8|0;A=f+12|0;c[A>>2]=m+(C<<2);if(n){r=0;l=0;k=0;while(1){if(!(r&7)){j=q+1|0;if(j>>>0>H>>>0){J=179;break e}l=d[q>>0]|0}else j=q;if(!(l&1)){q=j+1|0;if(q>>>0>H>>>0){J=179;break e}j=(d[j>>0]|0)+k|0}else{q=j+2|0;if(q>>>0>H>>>0){J=179;break e}j=(d[j>>0]<<8|d[j+1>>0])<<16>>16}c[m+(r<<2)>>2]=j;r=r+1|0;if(r>>>0>=n>>>0)break;else{l=l>>>1;k=j}}}f:do if(!(p&8))j=q;else{j=q+1|0;g:do if(j>>>0<=H>>>0){q=a[q>>0]|0;if(q<<24>>24){q=q&255;do{if((j+2|0)>>>0>H>>>0)break g;j=j+((d[j>>0]|0)+2)|0;if(j>>>0>H>>>0)break g;q=q+-1|0}while((q|0)!=0)}c[I>>2]=0;break f}while(0);c[I>>2]=8;j=8;break e}while(0);z=f+32|0;a[z>>0]=0;v=F+4|0;c[v>>2]=0;c[F>>2]=0;w=F+24|0;m=F;q=c[m>>2]|0;m=c[m+4>>2]|0;x=w;c[x>>2]=q;c[x+4>>2]=m;x=F+8|0;y=F+16|0;h:while(1){r=j+1|0;if(r>>>0>H>>>0){J=179;break e}s=d[j>>0]|0;j=s&15;s=s>>>4;switch(s|0){case 0:break h;case 3:{if(j>>>0>=B>>>0){J=179;break e}c[F>>2]=q;c[v>>2]=c[(c[A>>2]|0)+(j<<2)>>2];p=F;u=c[p>>2]|0;p=c[p+4>>2]|0;t=w;c[t>>2]=u;c[t+4>>2]=p;t=r;break}case 5:case 4:case 1:{o=m;l=1;k=j;n=F;p=0;j=r;J=111;break}case 2:{if(j>>>0>=C>>>0){J=179;break e}c[F>>2]=c[(c[h>>2]|0)+(j<<2)>>2];c[v>>2]=m;p=F;u=c[p>>2]|0;p=c[p+4>>2]|0;t=w;c[t>>2]=u;c[t+4>>2]=p;t=r;break}case 6:{o=m;l=3;k=2958;n=F;p=0;j=r;J=111;break}case 7:{o=m;l=3;k=3627;n=F;p=0;j=r;J=111;break}default:{o=m;l=4;k=j;n=F;p=0;j=r;J=111}}if((J|0)==111)while(1){J=0;m=k&3;if((m|0)==2){m=j+1|0;if(m>>>0>H>>>0){J=179;break e}c[n>>2]=(a[j>>0]|0)+q;q=m}else if((m|0)==1){q=j+2|0;if(q>>>0>H>>>0){J=179;break e}c[n>>2]=(d[j>>0]<<8|d[j+1>>0])<<16>>16}else if(!m){q=j+1|0;if(q>>>0>H>>>0){J=179;break e}j=d[j>>0]|0;if(j>>>0>=C>>>0){J=179;break e}c[n>>2]=c[(c[h>>2]|0)+(j<<2)>>2]}else{c[n>>2]=q;q=j}j=k>>>2&3;if((j|0)==2){j=q+1|0;if(j>>>0>H>>>0){J=179;break e}c[n+4>>2]=(a[q>>0]|0)+o}else if(!j){m=q+1|0;if(m>>>0>H>>>0){J=179;break e}j=d[q>>0]|0;if(j>>>0>=B>>>0){J=179;break e}c[n+4>>2]=c[(c[A>>2]|0)+(j<<2)>>2];j=m}else if((j|0)==1){j=q+2|0;if(j>>>0>H>>>0){J=179;break e}c[n+4>>2]=(d[q>>0]<<8|d[q+1>>0])<<16>>16}else{c[n+4>>2]=o;j=q}if((p|0)==0&(l|0)==4){q=j+1|0;if(q>>>0>H>>>0){J=179;break e}l=3;k=d[j>>0]|0;j=q}else k=k>>>4;m=n;q=c[m>>2]|0;m=c[m+4>>2]|0;f=w;c[f>>2]=q;c[f+4>>2]=m;p=p+1|0;if(p>>>0>=l>>>0){u=q;p=m;t=j;break}else{o=m;n=n+8|0;J=111}}switch(s|0){case 0:break h;case 3:case 2:case 1:{m=c[D>>2]|0;do if(!(a[z>>0]|0))j=8;else{q=m+58|0;j=b[q>>1]|0;if(((b[m+22>>1]|0)+1+(j<<16>>16)|0)>>>0>(c[m+4>>2]|0)>>>0){j=ih(m,1,0)|0;if(j)break;j=b[q>>1]|0}j=j<<16>>16;n=F;s=c[n+4>>2]|0;f=(c[m+60>>2]|0)+(j<<3)|0;c[f>>2]=c[n>>2];c[f+4>>2]=s;a[(c[m+64>>2]|0)+j>>0]=1;b[q>>1]=(b[q>>1]|0)+1<<16>>16;j=0}while(0);c[I>>2]=j;break}case 5:case 4:{q=c[D>>2]|0;n=q+58|0;if(a[z>>0]|0){m=b[n>>1]|0;l=m<<16>>16;j=l+-1|0;k=q+56|0;r=b[k>>1]|0;if(r<<16>>16>0)o=b[(c[q+68>>2]|0)+((r<<16>>16)+-1<<1)>>1]|0;else o=0;if(((j|0)>(o|0)?(E=c[q+60>>2]|0,(c[E+(o<<3)>>2]|0)==(c[E+(j<<3)>>2]|0)):0)?(c[E+(o<<3)+4>>2]|0)==(c[E+(j<<3)+4>>2]|0):0){b[n>>1]=m+-1<<16>>16;j=l+-2|0}if((j|0)>=(o|0)){b[k>>1]=r+1<<16>>16;b[(c[q+68>>2]|0)+(r<<16>>16<<1)>>1]=j}a[z>>0]=0}a[z>>0]=1;m=b[q+22>>1]|0;j=b[n>>1]|0;l=c[q+4>>2]|0;if(((m<<16>>16)+1+(j<<16>>16)|0)>>>0<=l>>>0?((b[q+20>>1]|0)+1+(b[q+56>>1]|0)|0)>>>0<=(c[q+8>>2]|0)>>>0:0)J=167;else{j=ih(q,1,1)|0;if(!j){q=c[D>>2]|0;if(!(a[z>>0]|0))j=8;else{m=b[q+22>>1]|0;j=b[q+58>>1]|0;l=c[q+4>>2]|0;J=167}}}do if((J|0)==167){J=0;k=q+58|0;if(((j<<16>>16)+1+(m<<16>>16)|0)>>>0>l>>>0){j=ih(q,1,0)|0;if(j)break;j=b[k>>1]|0}j=j<<16>>16;n=F;s=c[n+4>>2]|0;f=(c[q+60>>2]|0)+(j<<3)|0;c[f>>2]=c[n>>2];c[f+4>>2]=s;a[(c[q+64>>2]|0)+j>>0]=1;b[k>>1]=(b[k>>1]|0)+1<<16>>16;j=0}while(0);c[I>>2]=j;break}default:{m=c[D>>2]|0;do if(!(a[z>>0]|0))j=8;else{q=m+58|0;j=b[q>>1]|0;if(((b[m+22>>1]|0)+3+(j<<16>>16)|0)>>>0>(c[m+4>>2]|0)>>>0){j=ih(m,3,0)|0;if(j)break;j=b[q>>1]|0}o=c[m+60>>2]|0;n=j<<16>>16;f=c[m+64>>2]|0;k=F;r=c[k+4>>2]|0;s=o+(n<<3)|0;c[s>>2]=c[k>>2];c[s+4>>2]=r;s=n+1|0;r=x;k=c[r+4>>2]|0;j=o+(s<<3)|0;c[j>>2]=c[r>>2];c[j+4>>2]=k;j=n+2|0;k=y;r=c[k+4>>2]|0;o=o+(j<<3)|0;c[o>>2]=c[k>>2];c[o+4>>2]=r;a[f+n>>0]=2;a[f+s>>0]=2;a[f+j>>0]=1;b[q>>1]=(e[q>>1]|0)+3;j=0}while(0);c[I>>2]=j}}if(!j){m=p;q=u;j=t}else break e}n=c[D>>2]|0;if(a[z>>0]|0){l=n+58|0;k=b[l>>1]|0;m=k<<16>>16;j=m+-1|0;o=n+56|0;p=b[o>>1]|0;if(p<<16>>16>0)q=b[(c[n+68>>2]|0)+((p<<16>>16)+-1<<1)>>1]|0;else q=0;if(((j|0)>(q|0)?(G=c[n+60>>2]|0,(c[G+(q<<3)>>2]|0)==(c[G+(j<<3)>>2]|0)):0)?(c[G+(q<<3)+4>>2]|0)==(c[G+(j<<3)+4>>2]|0):0){b[l>>1]=k+-1<<16>>16;j=m+-2|0}if((j|0)>=(q|0)){b[o>>1]=p+1<<16>>16;b[(c[n+68>>2]|0)+(p<<16>>16<<1)>>1]=j}a[z>>0]=0}lh(n);j=c[I>>2]|0}else J=179;while(0);if((J|0)==179){c[I>>2]=8;j=8}Bi(g);J=j;i=K;return J|0} +function Np(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+256|0;D=I+224|0;G=I;p=I+240|0;F=I+16|0;q=f+4|0;m=c[q>>2]|0;if(!f){h=37;i=I;return h|0}if(!g){h=36;i=I;return h|0}if(!m){h=6;i=I;return h|0}if((c[m+16>>2]|0)>>>0<=h>>>0?(c[(c[m+128>>2]|0)+48>>2]|0)==0:0){h=6;i=I;return h|0}if(j&2){j=(c[m+8>>2]&8192|0)==0?j:j&-3;j=j>>>14&2|j}if(!(j&1025))B=j;else B=(c[m+8>>2]|0)>>>12&2^11|j;j=c[g+112>>2]|0;if((j|0)!=-1&(B&8|0)==0?(Gd[c[(c[m+528>>2]|0)+72>>2]&7](m,j,h,B,c[m+104>>2]|0,f+76|0,p)|0)==0:0){b[f+110>>1]=0;b[f+108>>1]=0;c[f+24>>2]=e[p+2>>1]<<6;c[f+28>>2]=e[p>>1]<<6;k=b[p+4>>1]|0;c[f+32>>2]=k<<6;l=b[p+6>>1]|0;c[f+36>>2]=l<<6;o=f+40|0;c[o>>2]=e[p+8>>1]<<6;m=b[p+10>>1]|0;c[f+44>>2]=m<<6;n=b[p+12>>1]|0;c[f+48>>2]=n<<6;c[f+52>>2]=e[p+14>>1]<<6;c[f+72>>2]=1651078259;j=f+100|0;if(!(B&16)){c[j>>2]=k;c[f+104>>2]=l}else{c[j>>2]=m;c[f+104>>2]=n}k=c[q>>2]|0;if(!(c[k+8>>2]&1)){h=0;i=I;return h|0}l=c[k+104>>2]|0;Cga(F|0,0,208)|0;do if(!(c[(c[k+128>>2]|0)+48>>2]|0)){j=ce[c[k+504>>2]&255](k,1735162214,l,0)|0;if((j&255|0)==142){c[F+84>>2]=0;H=22;break}if(!j){c[F+84>>2]=ui(l)|0;H=22}}else{c[F+84>>2]=0;H=22}while(0);if((H|0)==22){c[F+16>>2]=B;c[F>>2]=k;c[F+4>>2]=g;c[F+8>>2]=f;c[F+24>>2]=l}Tt(F,h,0,1)|0;j=c[F+60>>2]|0;c[f+56>>2]=j;c[f+60>>2]=(c[F+48>>2]|0)+(c[F+176>>2]|0)-(c[F+180>>2]|0);if((c[o>>2]|0)!=0|(j|0)==0){h=0;i=I;return h|0}c[o>>2]=Wg(j,c[g+16>>2]|0)|0;h=0;i=I;return h|0}E=(B&1|0)!=0;if(!E?(a[g+108>>0]|0)==0:0){h=36;i=I;return h|0}if(B&16384){h=6;i=I;return h|0}y=B&128;z=c[q>>2]|0;A=c[z+104>>2]|0;Cga(F|0,0,208)|0;C=(B&2|0)==0;if(C){x=g+301|0;do if(!(a[x>>0]|0)){j=g+300|0;a:do if(!(a[j>>0]|0)){r=c[g>>2]|0;p=c[r+100>>2]|0;k=r+260|0;a[j>>0]=1;a[x>>0]=0;n=e[k+20>>1]|0;c[g+120>>2]=n;j=g+132|0;c[j>>2]=e[k+22>>1];s=g+116|0;c[s>>2]=0;t=g+128|0;c[t>>2]=0;u=g+140|0;c[u>>2]=0;v=g+144|0;c[v>>2]=0;q=g+240|0;c[q>>2]=c[r+640>>2];m=g+248|0;b[m>>1]=b[k+18>>1]|0;o=g+72|0;a[o+37>>0]=0;a[o+38>>0]=0;o=g+92|0;c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;c[g+124>>2]=hh(p,24,0,n,0,G)|0;b:do if((((c[G>>2]|0)==0?(c[g+136>>2]=hh(p,24,0,c[j>>2]|0,0,G)|0,(c[G>>2]|0)==0):0)?(c[g+244>>2]=hh(p,4,0,c[q>>2]|0,0,G)|0,(c[G>>2]|0)==0):0)?(c[g+252>>2]=hh(p,4,0,e[m>>1]|0,0,G)|0,(c[G>>2]|0)==0):0){j=(e[k+16>>1]|0)+4|0;o=j&65535;n=g+256|0;k=n+0|0;l=k+36|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));c[n>>2]=p;q=j&65535;m=n+12|0;c[m>>2]=hh(p,8,0,q,0,D)|0;j=c[D>>2]|0;do if(!j){c[n+16>>2]=hh(p,8,0,q,0,D)|0;j=c[D>>2]|0;if(j){H=40;break}c[n+20>>2]=hh(p,8,0,q,0,D)|0;j=c[D>>2]|0;if(j){H=40;break}c[n+24>>2]=hh(p,1,0,q,0,D)|0;j=c[D>>2]|0;if(j){H=40;break}c[n+28>>2]=hh(p,2,0,0,0,D)|0;j=c[D>>2]|0;if(j){H=40;break}b[n+4>>1]=o;b[n+6>>1]=0;c[G>>2]=0}else H=40;while(0);do if((H|0)==40){q=c[n>>2]|0;if(q){p=n+28|0;eh(q,c[p>>2]|0);c[p>>2]=0;p=n+24|0;eh(q,c[p>>2]|0);c[p>>2]=0;p=n+16|0;eh(q,c[p>>2]|0);c[p>>2]=0;eh(q,c[m>>2]|0);c[m>>2]=0;p=n+20|0;eh(q,c[p>>2]|0);c[p>>2]=0;c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;p=c[D>>2]|0;c[G>>2]=p;if(!p)break;else break b}else{c[G>>2]=j;break b}}while(0);b[n+8>>1]=o;k=g+172|0;j=89024;l=k+68|0;do{c[k>>2]=c[j>>2];k=k+4|0;j=j+4|0}while((k|0)<(l|0));k=c[(c[(c[r+96>>2]|0)+4>>2]|0)+172>>2]|0;c[r+648>>2]=(k|0)==0?114:k;k=c[g>>2]|0;if(!(a[g+292>>0]|0))j=(c[k+96>>2]|0)+28|0;else j=g+296|0;m=c[j>>2]|0;do if(!m)j=153;else{Ut(m,k,g);c[m+428>>2]=0;c[m+16>>2]=0;c[m+476>>2]=64;c[m+480>>2]=0;c[m+484>>2]=0;a[m+488>>0]=0;c[m+564>>2]=16384;a[m+561>>0]=y;j=m+216|0;b[m+252>>1]=0;c[m+260>>2]=0;b[j+0>>1]=0;b[j+2>>1]=0;b[j+4>>1]=0;b[j+6>>1]=0;b[j+8>>1]=0;b[j+10>>1]=0;c[m+256>>2]=65536;j=c[k+628>>2]|0;q=c[k+624>>2]|0;c[m+444>>2]=j;c[m+448>>2]=q;p=m+452|0;c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;if((q|0)!=0?(c[m+356>>2]=j,c[m+364>>2]=q,c[m+360>>2]=0,c[m+352>>2]=1,w=Ld[c[k+648>>2]&511](m)|0,(w|0)!=0):0){j=w;break}c[s>>2]=c[m+396>>2];c[t>>2]=c[m+408>>2];c[u>>2]=c[m+420>>2];c[v>>2]=c[m+424>>2];u=m+444|0;v=c[u+4>>2]|0;w=g+148|0;c[w>>2]=c[u>>2];c[w+4>>2]=v;w=m+452|0;v=c[w+4>>2]|0;u=g+156|0;c[u>>2]=c[w>>2];c[u+4>>2]=v;u=m+460|0;v=c[u+4>>2]|0;w=g+164|0;c[w>>2]=c[u>>2];c[w+4>>2]=v;break a}while(0);c[G>>2]=j}while(0);St(g);j=c[G>>2]|0;if(j){h=j;i=I;return h|0}}while(0);if(!(a[x>>0]|0)){j=g+240|0;if(c[j>>2]|0){m=(c[g>>2]|0)+644|0;k=g+88|0;l=g+244|0;o=0;do{w=Wg(b[(c[m>>2]|0)+(o<<1)>>1]|0,c[k>>2]|0)|0;c[(c[l>>2]|0)+(o<<2)>>2]=w;o=o+1|0}while(o>>>0<(c[j>>2]|0)>>>0)}j=b[g+264>>1]|0;if(j<<16>>16){k=c[g+268>>2]|0;l=c[g+272>>2]|0;j=j&65535;m=0;do{c[k+(m<<3)>>2]=0;c[k+(m<<3)+4>>2]=0;c[l+(m<<3)>>2]=0;c[l+(m<<3)+4>>2]=0;m=m+1|0}while((m|0)!=(j|0))}j=b[g+248>>1]|0;if(j<<16>>16)Cga(c[g+252>>2]|0,0,((j&65535)>1?(j&65535)<<2:4)|0)|0;k=g+172|0;j=89024;l=k+68|0;do{c[k>>2]=c[j>>2];k=k+4|0;j=j+4|0}while((k|0)<(l|0));j=Vt(g,y)|0;if(!j){a[x>>0]=1;break}else{h=j;i=I;return h|0}}}while(0);if(!(a[g+292>>0]|0))j=(c[z+96>>2]|0)+28|0;else j=g+296|0;q=c[j>>2]|0;if(!q){h=153;i=I;return h|0}j=(B&983040|0)!=131072;Ut(q,z,g);m=q+604|0;if((j&1|0)!=(d[m>>0]|0)){a[m>>0]=j&1;j=g+240|0;if(c[j>>2]|0){m=z+644|0;k=g+88|0;l=g+244|0;o=0;do{x=Wg(b[(c[m>>2]|0)+(o<<1)>>1]|0,c[k>>2]|0)|0;c[(c[l>>2]|0)+(o<<2)>>2]=x;o=o+1|0}while(o>>>0<(c[j>>2]|0)>>>0)}Vt(g,y)|0}x=a[q+336>>0]|0;m=(x&1)<<1|B;if(x&2){k=q+284|0;j=89024;l=k+68|0;do{c[k>>2]=c[j>>2];k=k+4|0;j=j+4|0}while((k|0)<(l|0))}a[q+561>>0]=y;c[F+160>>2]=q;c[F+164>>2]=c[q+392>>2]}else m=B;do if(!(c[(c[z+128>>2]|0)+48>>2]|0)){j=ce[c[z+504>>2]&255](z,1735162214,A,0)|0;if((j&255|0)==142){c[F+84>>2]=0;break}if(!j){c[F+84>>2]=ui(A)|0;break}else{h=j;i=I;return h|0}}else c[F+84>>2]=0;while(0);y=c[c[f+156>>2]>>2]|0;dh(y);j=F+12|0;c[j>>2]=y;y=F+16|0;c[y>>2]=m;c[F>>2]=z;o=F+4|0;c[o>>2]=g;q=F+8|0;c[q>>2]=f;c[F+24>>2]=A;m=f+72|0;c[m>>2]=1869968492;k=f+128|0;c[k>>2]=0;l=f+108|0;w=f+124|0;c[w>>2]=0;x=Tt(F,h,0,0)|0;c:do if(!x){j=c[j>>2]|0;if((c[m>>2]|0)!=1668246896){j=j+20|0;c[l+0>>2]=c[j+0>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];c[l+16>>2]=c[j+16>>2];c[w>>2]=c[w>>2]&-513;j=c[F+68>>2]|0;if(j)Bh(l,0-j|0,0)}else{c[k>>2]=c[j+48>>2];c[f+132>>2]=c[j+52>>2]}do if(C){j=c[F+160>>2]|0;if(!(a[j+337>>0]|0)){c[w>>2]=c[w>>2]|8;break}j=c[j+340>>2]|0;if((j|0)==4){c[w>>2]=c[w>>2]|48;break}else if((j|0)==5){c[w>>2]=c[w>>2]|16;break}else if(!j){c[w>>2]=c[w>>2]|32;break}else if((j|0)==1)break;else{c[w>>2]=c[w>>2]|8;break}}while(0);r=c[F>>2]|0;v=c[q>>2]|0;j=c[o>>2]|0;if(!(c[y>>2]&1))s=c[j+20>>2]|0;else s=65536;if((c[v+72>>2]|0)==1668246896){f=F+36|0;c[D+0>>2]=c[f+0>>2];c[D+4>>2]=c[f+4>>2];c[D+8>>2]=c[f+8>>2];c[D+12>>2]=c[f+12>>2]}else mi(v+108|0,D);c[v+56>>2]=c[F+60>>2];n=c[D>>2]|0;t=v+32|0;c[t>>2]=n;p=c[D+12>>2]|0;c[v+36>>2]=p;u=v+40|0;c[u>>2]=(c[F+76>>2]|0)-(c[F+68>>2]|0);d:do if((c[r+476>>2]|0)==0?(c[y>>2]&2|0)==0:0){q=e[j+12>>1]|0;l=c[r+712>>2]|0;o=c[r+700>>2]|0;m=c[r+708>>2]|0;if(!m)break;k=c[r+716>>2]|0;j=0;while(1){if((d[k+j>>0]|0)==(q|0))break;j=j+1|0;if(j>>>0>=m>>>0)break d}if((h+2|0)>>>0>=l>>>0)break;j=o+(h+10+(ea(j,l)|0))|0;if(!j)break;c[u>>2]=d[j>>0]<<6}while(0);c[v+24>>2]=(c[D+8>>2]|0)-n;j=p-(c[D+4>>2]|0)|0;c[v+28>>2]=j;do if(!(a[r+292>>0]|0))H=113;else{if(!(b[r+330>>1]|0)){H=113;break}k=F+188|0;j=(Xg((c[k>>2]|0)-p|0,s)|0)<<16>>16;k=c[k>>2]|0;m=c[F+196>>2]|0;if((k|0)<=(m|0)){k=0;break}k=(Xg(k-m|0,s)|0)&65535}while(0);if((H|0)==113){m=(Xg(j,s)|0)<<16>>16;j=r+364|0;if((b[j>>1]|0)==-1){j=r+216|0;j=(b[j+4>>1]|0)-(b[j+6>>1]|0)|0}else j=(b[j+70>>1]|0)-(b[j+72>>1]|0)|0;k=j;j=(j-m|0)/2|0}m=c[(c[r+128>>2]|0)+48>>2]|0;do if(m){l=c[(c[m>>2]|0)+8>>2]|0;if(!l)break;c[G>>2]=0;n=G+4|0;c[n>>2]=j;j=G+8|0;c[j>>2]=k;if(ce[l&255](c[m+4>>2]|0,h,1,G)|0)break c;k=c[j>>2]|0;j=c[n>>2]|0}while(0);c[v+60>>2]=k;if(!(c[y>>2]&1)){j=Wg(j,s)|0;k=Wg(k,s)|0}c[v+44>>2]=(c[t>>2]|0)-((c[u>>2]|0)/2|0);c[v+48>>2]=j;c[v+52>>2]=k}while(0);if(E){h=x;i=I;return h|0}if((e[g+14>>1]|0)>=24){h=x;i=I;return h|0}c[w>>2]=c[w>>2]|256;h=x;i=I;return h|0}function Op(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;f=c[a+528>>2]|0;c[e>>2]=0;c[e+4>>2]=0;if(!f){i=g;return 0}c[e>>2]=Od[c[f+84>>2]&255](a,b,d)|0;i=g;return 0}function Pp(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;p=q+6|0;o=q;l=q+2|0;m=q+4|0;k=(g|0)==0;if(!(h&16)){if(k){i=q;return 0}k=d+528|0;h=0;do{Xd[c[(c[k>>2]|0)+112>>2]&127](d,0,h+f|0,l,m)|0;c[j+(h<<2)>>2]=e[m>>1];h=h+1|0}while((h|0)!=(g|0));i=q;return 0}if(k){i=q;return 0}h=d+292|0;l=d+68|0;m=d+528|0;n=0;do{if(!(a[h>>0]|0)){b[p>>1]=0;k=b[l>>1]|0;b[o>>1]=k}else{Xd[c[(c[m>>2]|0)+112>>2]&127](d,1,n+f|0,p,o)|0;k=b[o>>1]|0}c[j+(n<<2)>>2]=k&65535;n=n+1|0}while((n|0)!=(g|0));i=q;return 0}function Qp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g;d=c[a>>2]|0;do if(!(c[d+8>>2]&2))e=0;else{e=Od[c[(c[d+528>>2]|0)+104>>2]&255](d,b,f)|0;if(e){c[a+112>>2]=-1;d=c[a>>2]|0;break}d=c[f>>2]|0;e=c[a>>2]|0;f=a+112|0;c[f>>2]=d;if(c[e+8>>2]&1){Oh(e,d);Wt(a)|0;a=0;i=g;return a|0}d=Od[c[(c[e+528>>2]|0)+108>>2]&255](e,d,a+12|0)|0;if(!d){a=0;i=g;return a|0}c[f>>2]=-1;a=d;i=g;return a|0}while(0);Ph(d,b);if(!(c[(c[a>>2]|0)+8>>2]&1)){a=e;i=g;return a|0}f=Wt(a)|0;b=a+12|0;a=a+44|0;c[b+0>>2]=c[a+0>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];c[b+16>>2]=c[a+16>>2];c[b+20>>2]=c[a+20>>2];c[b+24>>2]=c[a+24>>2];a=f;i=g;return a|0}function Rp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;d=c[a>>2]|0;e=a+112|0;c[e>>2]=b;if(c[d+8>>2]&1){Oh(d,b);Wt(a)|0;b=0;i=f;return b|0}d=Od[c[(c[d+528>>2]|0)+108>>2]&255](d,b,a+12|0)|0;if(!d){b=0;i=f;return b|0}c[e>>2]=-1;b=d;i=f;return b|0}function Sp(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+32|0;t=z+28|0;k=z;p=z+4|0;y=z+24|0;c[y>>2]=0;x=c[d+100>>2]|0;w=d+668|0;a[w>>0]=0;h=d+672|0;j=c[h>>2]|0;do if(!j){v=Tp(d,0)|0;c[y>>2]=v;if(!v){v=c[h>>2]|0;break}else{d=c[y>>2]|0;i=z;return d|0}}else v=j;while(0);j=v+8|0;if((c[c[j>>2]>>2]|0)!=(f|0)){c[y>>2]=6;d=c[y>>2]|0;i=z;return d|0}u=(f|0)==0;a:do if(!u){h=0;while(1){if(((c[g+(h<<2)>>2]|0)+65536|0)>>>0>131072)break;h=h+1|0;if(h>>>0>=f>>>0)break a}c[y>>2]=6;d=c[y>>2]|0;i=z;return d|0}while(0);m=v+36|0;if(!(c[m>>2]|0)){r=c[d+104>>2]|0;o=c[r+28>>2]|0;h=ce[c[d+504>>2]&255](d,1735811442,r,k)|0;c[t>>2]=h;do if(!h){n=ui(r)|0;h=Li(r,90496,p)|0;c[t>>2]=h;if(!h){q=v+24|0;c[q>>2]=e[p+6>>1];h=e[p+12>>1]|0;k=v+32|0;c[k>>2]=h;l=(c[p+16>>2]|0)+n|0;if((c[p>>2]|0)==65536?(s=p+4|0,(b[s>>1]|0)==(c[c[j>>2]>>2]&65535)<<16>>16):0){c[m>>2]=hh(o,4,0,h+1|0,0,t)|0;h=c[t>>2]|0;if(h)break;h=(c[k>>2]|0)+1|0;if(!(b[p+14>>1]&1)){h=yi(r,h<<1)|0;c[t>>2]=h;if(!h)h=0;else break;do{j=(((Di(r)|0)&65535)<<1)+l|0;c[(c[m>>2]|0)+(h<<2)>>2]=j;h=h+1|0}while(h>>>0<=(c[k>>2]|0)>>>0);Bi(r)}else{h=yi(r,h<<2)|0;c[t>>2]=h;if(!h)h=0;else break;do{j=(Fi(r)|0)+l|0;c[(c[m>>2]|0)+(h<<2)>>2]=j;h=h+1|0}while(h>>>0<=(c[k>>2]|0)>>>0);Bi(r)}h=c[q>>2]|0;if(h){l=v+28|0;c[l>>2]=hh(o,4,0,ea(e[s>>1]|0,h)|0,0,t)|0;h=c[t>>2]|0;if(h)break;h=Hh(r,(c[p+8>>2]|0)+n|0)|0;c[t>>2]=h;if(h)break;h=yi(r,ea(c[q>>2]<<1,e[s>>1]|0)|0)|0;c[t>>2]=h;if(h)break;h=c[q>>2]|0;if(h){j=b[s>>1]|0;k=0;do{if(!(j<<16>>16))j=0;else{h=0;do{n=(Di(r)|0)<<16>>16<<2;j=b[s>>1]|0;o=j&65535;m=(ea(o,k)|0)+h|0;c[(c[l>>2]|0)+(m<<2)>>2]=n;h=h+1|0}while(h>>>0>>0);h=c[q>>2]|0}k=k+1|0}while(k>>>0>>0)}Bi(r)}h=c[t>>2]|0;break}c[t>>2]=8;h=8}}while(0);c[y>>2]=h;if(h){d=c[y>>2]|0;i=z;return d|0}}j=v+4|0;h=c[j>>2]|0;b:do if(!h){h=hh(x,4,0,f,0,y)|0;c[j>>2]=h;if(!(c[y>>2]|0))k=1;else{d=c[y>>2]|0;i=z;return d|0}}else if(u)k=0;else{j=0;while(1){if((c[h+(j<<2)>>2]|0)!=(c[g+(j<<2)>>2]|0)){k=2;break b}j=j+1|0;if(j>>>0>=f>>>0){k=0;break}}}while(0);c[v>>2]=f;Aga(h|0,g|0,f<<2|0)|0;a[w>>0]=1;h=d+644|0;j=c[h>>2]|0;if(!j){d=c[y>>2]|0;i=z;return d|0}if((k|0)==2){eh(x,j);c[h>>2]=0;Mt(d,c[d+104>>2]|0)|0;d=c[y>>2]|0;i=z;return d|0}else if((k|0)==1){Xt(d,c[d+104>>2]|0)|0;d=c[y>>2]|0;i=z;return d|0}else{d=c[y>>2]|0;i=z;return d|0}return 0}function Tp(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+48|0;k=z+44|0;y=z;l=z+8|0;s=z+24|0;t=c[d+104>>2]|0;v=c[d+100>>2]|0;c[y>>2]=0;x=d+672|0;a:do if(!(c[x>>2]|0)){g=d+504|0;r=ce[c[g>>2]&255](d,1735811442,t,k)|0;c[y>>2]=r;if(r){f=c[y>>2]|0;i=z;return f|0}r=ce[c[g>>2]&255](d,1719034226,t,k)|0;c[y>>2]=r;if(r){f=c[y>>2]|0;i=z;return f|0}p=ui(t)|0;r=Li(t,90384,l)|0;c[y>>2]=r;if(r){f=c[y>>2]|0;i=z;return f|0}if(((((((c[l>>2]|0)==65536?(b[l+6>>1]|0)==2:0)?(b[l+10>>1]|0)==20:0)?(u=l+8|0,r=b[u>>1]|0,n=r&65535,(r&65535)<=16382):0)?(h=e[l+14>>1]|0,(h|0)==((n<<2)+4|0)):0)?(w=l+12|0,j=b[w>>1]|0,(j&65535)<=32511):0)?(q=l+4|0,r=(ea(j&65535,h)|0)+(n*20|0)+(e[q>>1]|0)|0,r>>>0<=(c[k>>2]|0)>>>0):0){g=ch(v,40,y)|0;c[x>>2]=g;if(c[y>>2]|0){f=c[y>>2]|0;i=z;return f|0}r=e[w>>1]|0;r=(r<<3)+20+(ea((r<<2)+29|0,e[u>>1]|0)|0)|0;c[g+12>>2]=r;g=ch(v,r,y)|0;if(c[y>>2]|0){f=c[y>>2]|0;i=z;return f|0}c[(c[x>>2]|0)+8>>2]=g;l=b[u>>1]|0;k=l&65535;c[g>>2]=k;c[g+4>>2]=-1;d=b[w>>1]|0;h=d&65535;c[g+8>>2]=h;m=g+20|0;o=g+12|0;c[o>>2]=m;j=m+(k*24|0)|0;r=g+16|0;c[r>>2]=j;n=j+(h<<3)|0;if(!(d<<16>>16))g=n;else{g=g+(((ea(h>>>0>1?h:1,k)|0)<<2)+(k*24|0)+(h<<3)+20)|0;d=0;while(1){c[j+(d<<3)>>2]=n;d=d+1|0;if((d|0)>=(h|0))break;else n=n+(k<<2)|0}}if(l<<16>>16){n=0;while(1){c[m+(n*24|0)>>2]=g;n=n+1|0;if((n|0)>=(k|0))break;else g=g+5|0}}q=Hh(t,(e[q>>1]|0)+p|0)|0;c[y>>2]=q;if(q){f=c[y>>2]|0;i=z;return f|0}b:do if(!(b[u>>1]|0))g=0;else{j=s+4|0;l=s+8|0;k=s+12|0;m=s+18|0;d=c[o>>2]|0;h=0;while(1){q=Li(t,90424,s)|0;c[y>>2]=q;if(q)break;q=c[s>>2]|0;g=d+16|0;c[g>>2]=q;c[d+4>>2]=c[j>>2];c[d+8>>2]=c[l>>2];c[d+12>>2]=c[k>>2];c[d+20>>2]=e[m>>1];a[c[d>>2]>>0]=q>>>24;a[(c[d>>2]|0)+1>>0]=(c[g>>2]|0)>>>16;a[(c[d>>2]|0)+2>>0]=(c[g>>2]|0)>>>8;a[(c[d>>2]|0)+3>>0]=c[g>>2];a[(c[d>>2]|0)+4>>0]=0;h=h+1|0;g=b[u>>1]|0;if((h|0)>=(g&65535|0))break b;else d=d+24|0}f=c[y>>2]|0;i=z;return f|0}while(0);if(!(b[w>>1]|0))break;h=1;d=c[r>>2]|0;while(1){s=yi(t,((g&65535)<<2)+4|0)|0;c[y>>2]=s;if(s)break;c[d+4>>2]=(Di(t)|0)&65535;Di(t)|0;if(b[u>>1]|0){g=0;do{s=Fi(t)|0;c[(c[d>>2]|0)+(g<<2)>>2]=s;g=g+1|0}while((g|0)<(e[u>>1]|0))}Bi(t);if((h|0)>=(e[w>>1]|0))break a;g=b[u>>1]|0;h=h+1|0;d=d+8|0}f=c[y>>2]|0;i=z;return f|0}c[y>>2]=8;f=c[y>>2]|0;i=z;return f|0}while(0);if(!f){f=c[y>>2]|0;i=z;return f|0}n=ch(v,c[(c[x>>2]|0)+12>>2]|0,y)|0;if(c[y>>2]|0){f=c[y>>2]|0;i=z;return f|0}j=c[x>>2]|0;Aga(n|0,c[j+8>>2]|0,c[j+12>>2]|0)|0;j=n+20|0;c[n+12>>2]=j;m=c[n>>2]|0;h=j+(m*24|0)|0;c[n+16>>2]=h;k=c[n+8>>2]|0;d=h+(k<<3)|0;if(!k)g=d;else{g=n+(((ea(m,k>>>0>1?k:1)|0)<<2)+(m*24|0)+(k<<3)+20)|0;l=0;while(1){c[h+(l<<3)>>2]=d;l=l+1|0;if(l>>>0>=k>>>0)break;else d=d+(m<<2)|0}}if(m){d=0;h=g;while(1){c[j>>2]=h;g=c[j+16>>2]|0;if((g|0)==2003072104)c[j>>2]=90464;else if((g|0)==1936486004)c[j>>2]=90488;else if((g|0)==1869640570)c[j>>2]=90472;else if((g|0)==2003265652)c[j>>2]=90456;d=d+1|0;if(d>>>0>=m>>>0)break;else{j=j+24|0;h=h+5|0}}}c[f>>2]=n;f=c[y>>2]|0;i=z;return f|0}function Up(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;t=C+8|0;r=C;B=C+4|0;c[B>>2]=0;A=c[d+100>>2]|0;o=d+672|0;h=c[o>>2]|0;do if(!h){z=Tp(d,0)|0;c[B>>2]=z;if(!z){u=c[o>>2]|0;break}else{f=0;eh(A,f);f=c[B>>2]|0;i=C;return f|0}}else u=h;while(0);z=c[u+8>>2]|0;if((c[z>>2]|0)!=(f|0)){c[B>>2]=6;f=0;eh(A,f);f=c[B>>2]|0;i=C;return f|0}y=hh(A,4,0,f,0,B)|0;if(c[B>>2]|0){f=y;eh(A,f);f=c[B>>2]|0;i=C;return f|0}a:do if(c[z>>2]|0){q=c[z+12>>2]|0;n=0;while(1){h=c[g+(n<<2)>>2]|0;p=c[q+12>>2]|0;if((h|0)>(p|0))break;l=c[q+4>>2]|0;if((h|0)<(l|0))break;k=c[q+8>>2]|0;do if((h|0)>=(k|0))if((p|0)==(k|0)){c[y+(n<<2)>>2]=0;break}else{c[y+(n<<2)>>2]=Xg(h-k|0,p-k|0)|0;break}else c[y+(n<<2)>>2]=0-(Xg(h-k|0,l-k|0)|0);while(0);n=n+1|0;if(n>>>0>=(c[z>>2]|0)>>>0)break a;else q=q+24|0}c[B>>2]=6;f=y;eh(A,f);f=c[B>>2]|0;i=C;return f|0}while(0);if(((a[u+16>>0]|0)==0?(v=c[d+104>>2]|0,w=c[v+28>>2]|0,s=c[o>>2]|0,a[s+16>>0]=1,g=ce[c[d+504>>2]&255](d,1635148146,v,r)|0,c[t>>2]=g,(g|0)==0):0)?(r=yi(v,c[r>>2]|0)|0,c[t>>2]=r,(r|0)==0):0){r=Fi(v)|0;p=Fi(v)|0;b:do if(((r|0)==65536?(p|0)==(c[c[s+8>>2]>>2]|0):0)?(m=hh(w,8,0,p,0,t)|0,x=s+20|0,c[x>>2]=m,(c[t>>2]|0)==0&(p|0)>0):0){k=0;while(1){s=Di(v)|0;b[m>>1]=s;h=m+4|0;c[h>>2]=hh(w,8,0,s&65535,0,t)|0;if(c[t>>2]|0)break;if(b[m>>1]|0){l=0;do{s=(Di(v)|0)<<16>>16<<2;c[(c[h>>2]|0)+(l<<3)>>2]=s;s=(Di(v)|0)<<16>>16<<2;c[(c[h>>2]|0)+(l<<3)+4>>2]=s;l=l+1|0}while((l|0)<(e[m>>1]|0))}k=k+1|0;if((k|0)>=(p|0))break b;else m=m+8|0}h=c[x>>2]|0;if((k|0)>0)do{k=k+-1|0;eh(w,c[h+(k<<3)+4>>2]|0);h=c[x>>2]|0;c[h+(k<<3)+4>>2]=0}while((k|0)>0);eh(w,h);c[x>>2]=0}while(0);Bi(v)}h=c[u+20>>2]|0;if((h|0)!=0?(j=c[z>>2]|0,(j|0)!=0):0){g=0;while(1){l=b[h>>1]|0;c:do if((l&65535)>1){n=y+(g<<2)|0;o=c[n>>2]|0;p=h+4|0;q=c[p>>2]|0;m=1;while(1){k=c[q+(m<<3)>>2]|0;if((o|0)<(k|0)){j=m;break}m=m+1|0;if(m>>>0>=(l&65535)>>>0)break c}x=j+-1|0;w=c[q+(x<<3)>>2]|0;j=Ug(o-w|0,(c[q+(j<<3)+4>>2]|0)-(c[q+(x<<3)+4>>2]|0)|0,k-w|0)|0;c[n>>2]=(c[(c[p>>2]|0)+(x<<3)+4>>2]|0)+j;j=c[z>>2]|0}while(0);g=g+1|0;if(g>>>0>=j>>>0)break;else h=h+8|0}}c[B>>2]=Sp(d,f,y)|0;f=y;eh(A,f);f=c[B>>2]|0;i=C;return f|0}function Vp(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;h=c[a+692>>2]|0;if(h>>>0>e>>>0){j=c[a+696>>2]|0;if(b[a+210>>1]|0){e=e<<2;g=d[j+(e|1)>>0]<<16|d[j+e>>0]<<24|d[j+(e|2)>>0]<<8|d[j+(e|3)>>0];if((e+8|0)>(h<<2|0))h=g;else{h=g;g=d[j+(e+5)>>0]<<16|d[j+(e+4)>>0]<<24|d[j+(e+6)>>0]<<8|d[j+(e+7)>>0]}}else{e=e<<1;g=d[j+e>>0]<<8|d[j+(e|1)>>0];if((e+4|0)>(h<<1|0))e=g;else e=d[j+(e+2)>>0]<<8|d[j+(e+3)>>0];h=g<<1;g=e<<1}e=c[a+664>>2]|0;if(h>>>0>e>>>0){a=0;h=0;c[f>>2]=h;i=k;return a|0}}else{e=c[a+664>>2]|0;h=0;g=0}j=g>>>0>e>>>0?e:g;a=h;h=(j>>>0>>0?e:j)-h|0;c[f>>2]=h;i=k;return a|0}function Wp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(!(qga(b,90360)|0))if((c[d>>2]|0)==35){c[a+68>>2]=35;a=0}else a=7;else a=12;i=e;return a|0}function Xp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if(qga(b,90360)|0){d=12;i=e;return d|0}c[d>>2]=c[a+68>>2];d=0;i=e;return d|0}function Yp(a){a=a|0;return 0}function Zp(a){a=a|0;return}function _p(a,b){a=a|0;b=b|0;a=i;b=nh(93256,b)|0;i=a;return b|0}function $p(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=i;i=i+1904|0;D=J+1896|0;H=J;t=J+1500|0;A=J+1504|0;z=J+1880|0;I=J+1884|0;E=f+132|0;c[f>>2]=1;h=f+96|0;F=ei(c[h>>2]|0,90656)|0;c[f+484>>2]=F;G=di(c[(c[h>>2]|0)+4>>2]|0,90680)|0;C=f+488|0;c[C>>2]=G;if(!G){f=11;i=J;return f|0}c[f+548>>2]=di(c[(c[h>>2]|0)+4>>2]|0,90640)|0;u=c[C>>2]|0;Cga(A|0,0,376)|0;c[f+532>>2]=-1;c[f+536>>2]=-1;B=f+540|0;c[B>>2]=0;c[f+280>>2]=7;c[f+284>>2]=1;c[f+172>>2]=4;c[f+348>>2]=3932;c[f+276>>2]=2596864;j=c[f+104>>2]|0;v=f+100|0;e=c[v>>2]|0;s=u+4|0;de[c[c[s>>2]>>2]&63](A,0,0,e);p=A+72|0;c[p>>2]=j;r=A+80|0;x=A+76|0;m=A+92|0;y=A+93|0;c[x+0>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;b[x+16>>1]=0;a[x+18>>0]=0;h=Yt(j,93224,14)|0;c[H>>2]=h;if(h)if((h&255|0)==2){h=Yt(j,93240,10)|0;c[H>>2]=h;if(!h)w=5;else w=22}else w=22;else w=5;a:do if((w|0)==5){h=Hh(j,0)|0;c[H>>2]=h;if(!h){k=ri(j,D)|0;h=c[D>>2]|0;do if(!h){if((k+32767<<16>>16&65535)<2){h=Ki(j,D)|0;o=c[D>>2]|0;if(o){h=o;break}c[H>>2]=0;if(k<<16>>16==-32767)a[m>>0]=1;else w=12}else{c[H>>2]=0;w=12}if((w|0)==12){h=Hh(j,0)|0;c[H>>2]=h;if(h){w=22;break a}h=c[j+4>>2]|0}if(!(c[j+20>>2]|0)){c[x>>2]=(c[j>>2]|0)+(c[j+8>>2]|0);c[r>>2]=h;a[y>>0]=1;h=qi(j,h)|0;c[H>>2]=h;if(h){w=22;break a}h=c[r>>2]|0}else{o=ch(e,h,H)|0;c[x>>2]=o;k=c[H>>2]|0;if(k){h=k;w=22;break a}o=pi(j,o,h)|0;c[H>>2]=o;if(o){h=o;w=22;break a}c[r>>2]=h}n=c[x>>2]|0;c[A+4>>2]=n;c[A>>2]=n;c[A+8>>2]=n+h;c[z>>2]=0;l=h;w=26;break a}while(0);c[H>>2]=h;w=22}else w=22}while(0);if((w|0)==22){if(!(a[y>>0]|0)){eh(e,c[x>>2]|0);c[x>>2]=0;h=c[H>>2]|0}c[z>>2]=h;if(!h){n=c[x>>2]|0;l=c[r>>2]|0;w=26}}b:do if((w|0)==26?(q=Zt(f,A,n,l)|0,c[z>>2]=q,(q|0)==0):0){p=c[p>>2]|0;q=c[A+16>>2]|0;c[H>>2]=0;c:do if(a[m>>0]|0){e=ui(p)|0;k=A+88|0;c[k>>2]=0;while(1){j=ri(p,D)|0;h=c[D>>2]|0;if(h){w=33;break}if((j+32767<<16>>16&65535)>=2){w=31;break}o=Ki(p,D)|0;h=c[D>>2]|0;if(h){w=33;break}c[H>>2]=0;if(j<<16>>16!=-32766)break;c[k>>2]=(c[k>>2]|0)+o;h=qi(p,o)|0;c[H>>2]=h;if(h){w=86;break c}}if((w|0)==31)c[H>>2]=0;else if((w|0)==33){c[H>>2]=h;break}if(!(c[k>>2]|0)){c[H>>2]=3;h=3;w=86;break}h=Hh(p,e)|0;c[H>>2]=h;if(!h){o=A+84|0;c[o>>2]=ch(q,c[k>>2]|0,H)|0;h=c[H>>2]|0;if(!h){c[k>>2]=0;j=ri(p,D)|0;h=c[D>>2]|0;d:do if(!h)while(1){if((j+32767<<16>>16&65535)>=2){h=0;w=43;break d}e=Ki(p,D)|0;h=c[D>>2]|0;if(h){w=43;break d}c[H>>2]=0;if(j<<16>>16!=-32766)break d;h=pi(p,(c[o>>2]|0)+(c[k>>2]|0)|0,e)|0;c[H>>2]=h;if(h){w=86;break c}c[k>>2]=(c[k>>2]|0)+e;j=ri(p,D)|0;h=c[D>>2]|0;if(h){w=43;break}}else w=43;while(0);if((w|0)==43)c[H>>2]=h;c[H>>2]=0;h=o;w=83}else w=86}else w=86}else{o=c[x>>2]|0;j=c[r>>2]|0;n=A+8|0;p=A+32|0;m=A+12|0;l=A+28|0;h=o;e=j;k=o;j=o+j|0;e:while(1){while(1){o=k;k=k+1|0;if(((((a[o>>0]|0)==101&(o+9|0)>>>0>>0?(a[k>>0]|0)==101:0)?(a[o+2>>0]|0)==120:0)?(a[o+3>>0]|0)==101:0)?(a[o+4>>0]|0)==99:0)break;if(k>>>0>=j>>>0){w=56;break e}}c[A>>2]=h;k=o+10|0;c[n>>2]=k;if(h>>>0>>0){do{if((a[h>>0]|0)==101?(rga(h,90720,5)|0)==0:0)break e;Id[c[p>>2]&511](A);if(c[m>>2]|0)break;Id[c[l>>2]&511](A);h=c[A>>2]|0}while(h>>>0>>0);o=c[x>>2]|0;j=c[r>>2]|0}else{o=h;j=e}h=o;e=j;j=o+j|0}if((w|0)==56){c[H>>2]=3;h=3;w=86;break}c[n>>2]=(c[x>>2]|0)+(c[r>>2]|0);Id[c[p>>2]&511](A);h=c[A>>2]|0;j=c[n>>2]|0;f:do if(h>>>0>>0){while(1){w=a[h>>0]|0;if(!(w<<24>>24==10|w<<24>>24==13|w<<24>>24==9|w<<24>>24==32)){p=h;break}h=h+1|0;if(h>>>0>=j>>>0)break f}k=c[x>>2]|0;e=k-p+(c[r>>2]|0)|0;if(!(a[y>>0]|0)){a[A+94>>0]=1;c[A+84>>2]=k;c[A+88>>2]=e;c[x>>2]=0;c[r>>2]=0}else{k=ch(q,e+1|0,H)|0;c[A+84>>2]=k;h=c[H>>2]|0;if(h){w=86;break c}c[A+88>>2]=e}o=p+3|0;g:do if(o>>>0>>0){h=d[p>>0]|0;if((h+-48|0)>>>0>=10)switch(h|0){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break g}h=d[p+1>>0]|0;if((h+-48|0)>>>0>=10)switch(h|0){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break g}h=d[p+2>>0]|0;if((h+-48|0)>>>0>=10)switch(h|0){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break g}h=d[o>>0]|0;if((h+-48|0)>>>0>=10)switch(h|0){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break g}c[A>>2]=p;h=A+84|0;w=A+88|0;Xd[c[(c[s>>2]|0)+24>>2]&127](A,k,e,t,0)|0;k=c[t>>2]|0;c[w>>2]=k;a[(c[h>>2]|0)+k>>0]=0;k=w;w=83;break c}while(0);Bga(k|0,p|0,e|0)|0;k=A+88|0;h=A+84|0;w=83;break c}while(0);c[H>>2]=3;h=3;w=86}while(0);do if((w|0)==83){$d[c[u+16>>2]&255](c[h>>2]|0,c[k>>2]|0,-9871);if((c[k>>2]|0)>>>0<4){c[H>>2]=3;h=3;w=86;break}else{a[c[h>>2]>>0]=32;a[(c[h>>2]|0)+1>>0]=32;a[(c[h>>2]|0)+2>>0]=32;a[(c[h>>2]|0)+3>>0]=32;h=c[h>>2]|0;c[A+4>>2]=h;c[A>>2]=h;c[A+8>>2]=h+(c[k>>2]|0);h=c[H>>2]|0;break}}while(0);if((w|0)==86){c[z>>2]=h;break}c[z>>2]=h;if((h|0)==0?(u=Zt(f,A,c[A+84>>2]|0,c[A+88>>2]|0)|0,c[z>>2]=u,(u|0)==0):0){e=f+176|0;a[e>>0]=d[e>>0]&254;e=f+528|0;h=c[e>>2]|0;do if(h){k=h+416|0;u=c[k>>2]|0;if((u|0)!=0?(u|0)!=(c[h+4>>2]|0):0)c[k>>2]=0;if(!((c[h>>2]|0)!=0?(c[h+4>>2]|0)!=0:0)){_t(f);h=c[e>>2]|0}if(h){k=c[h+4>>2]|0;if(k){j=0;do{if(!(a[h+(j*12|0)+88>>0]|0)){w=100;break}j=j+1|0}while(j>>>0>>0);if((w|0)==100){_t(f);h=c[e>>2]|0}if(!h){w=105;break}}h=c[B>>2]|0;if((h|0)!=0?(c[f+544>>2]=hh(c[v>>2]|0,4,0,h,0,z)|0,(c[z>>2]|0)!=0):0){c[B>>2]=0;break b}}else w=105}else w=105;while(0);if((w|0)==105)c[B>>2]=0;t=c[A+152>>2]|0;c[f+416>>2]=t;h=A+328|0;if(c[h>>2]|0){c[h>>2]=0;c[f+404>>2]=c[A+312>>2];c[f+392>>2]=c[A+316>>2];c[f+408>>2]=c[A+340>>2];c[f+412>>2]=c[A+344>>2]}h=A+220|0;if((c[h>>2]|0)==0?(c[(c[f+128>>2]|0)+48>>2]|0)==0:0)c[z>>2]=3;c[h>>2]=0;c[f+396>>2]=c[A+208>>2];c[f+424>>2]=c[A+232>>2];c[f+428>>2]=c[A+236>>2];u=A+156|0;c[f+400>>2]=c[u>>2];v=A+180|0;l=f+420|0;c[l>>2]=c[v>>2];c[u>>2]=0;c[v>>2]=0;if((c[f+368>>2]|0)==1){q=c[A+116>>2]|0;h:do if((q|0)>0){r=f+384|0;s=f+388|0;n=A+124|0;if((t|0)>0){p=0;k=0;h=0}else{h=0;while(1){b[(c[r>>2]|0)+(h<<1)>>1]=0;c[(c[s>>2]|0)+(h<<2)>>2]=90712;h=h+1|0;if((h|0)==(q|0)){k=0;h=0;break h}}}do{b[(c[r>>2]|0)+(p<<1)>>1]=0;c[(c[s>>2]|0)+(p<<2)>>2]=90712;e=c[(c[n>>2]|0)+(p<<2)>>2]|0;i:do if(e){m=c[l>>2]|0;o=0;while(1){j=c[m+(o<<2)>>2]|0;if(!(qga(e,j)|0))break;o=o+1|0;if((o|0)>=(t|0))break i}b[(c[r>>2]|0)+(p<<1)>>1]=o;c[(c[s>>2]|0)+(p<<2)>>2]=j;if(qga(90712,j)|0){k=(p|0)<(k|0)?k:p+1|0;h=(p|0)<(h|0)?p:h}}while(0);p=p+1|0}while((p|0)!=(q|0))}else{k=0;h=0}while(0);c[f+376>>2]=h;c[f+380>>2]=k;c[f+372>>2]=c[A+96>>2]}}}while(0);h=c[A+148>>2]|0;if(h)Id[h&511](A+100|0);h=c[A+256>>2]|0;if(h)Id[h&511](A+208|0);h=c[A+204>>2]|0;if(h)Id[h&511](A+156|0);h=c[A+308>>2]|0;if(h)Id[h&511](A+260|0);h=c[A+364>>2]|0;if(h)Id[h&511](A+316|0);h=c[A+16>>2]|0;v=A+84|0;eh(h,c[v>>2]|0);c[v>>2]=0;if(!(a[y>>0]|0)){eh(h,c[x>>2]|0);c[x>>2]=0}Id[c[A+24>>2]&511](A);h=c[z>>2]|0;if((h|0)!=0|(g|0)<0){f=h;i=J;return f|0}if((g|0)>0){f=6;i=J;return f|0}q=f+416|0;c[f+16>>2]=c[q>>2];c[f+4>>2]=0;k=f+8|0;h=(a[f+156>>0]|0)==0?2577:2581;c[k>>2]=h;p=c[f+528>>2]|0;if(p)c[k>>2]=h|256;j=c[f+144>>2]|0;k=f+20|0;c[k>>2]=j;o=f+24|0;c[o>>2]=0;j:do if(!j){h=c[f+364>>2]|0;if(!h)w=152;else{c[k>>2]=h;w=152}}else{h=c[f+140>>2]|0;if(!h)w=152;else{k=a[h>>0]|0;k:do if(k<<24>>24){while(1){e=a[j>>0]|0;while(1){if(k<<24>>24==e<<24>>24){w=143;break}if(!(k<<24>>24==45|k<<24>>24==32)){w=147;break}h=h+1|0;k=a[h>>0]|0;if(!(k<<24>>24))break k}if((w|0)==143){w=0;h=h+1|0}else if((w|0)==147){w=0;if(!(e<<24>>24==45|e<<24>>24==32))if(!(e<<24>>24))break;else{w=152;break j}}k=a[h>>0]|0;if(!(k<<24>>24))break k;else j=j+1|0}c[o>>2]=h;if(!h){w=152;break j}else break j}while(0);c[o>>2]=90688}}while(0);do if((w|0)==152){h=c[f+148>>2]|0;if(!h){c[o>>2]=90688;break}else{c[o>>2]=h;break}}while(0);k=f+12|0;h=(c[f+152>>2]|0)!=0&1;c[k>>2]=h;j=c[f+148>>2]|0;do if(j){if((qga(j,90696)|0)!=0?(qga(j,90704)|0)!=0:0)break;c[k>>2]=h|2}while(0);c[f+28>>2]=0;c[f+32>>2]=0;e=f+460|0;c[f+52>>2]=c[e>>2]>>16;j=c[e+4>>2]>>16;c[f+56>>2]=j;m=(c[e+8>>2]|0)+65535>>16;c[f+60>>2]=m;e=(c[e+12>>2]|0)+65535>>16;c[f+64>>2]=e;k=f+68|0;h=b[k>>1]|0;if(!(h<<16>>16)){b[k>>1]=1e3;h=1e3}b[f+70>>1]=e;b[f+72>>1]=j;n=(((h&65535)*12|0)>>>0)/10|0;o=f+74|0;l=e-j|0;b[o>>1]=(n<<16>>16|0)<(l|0)?l:n;n=f+76|0;b[n>>1]=m;l=(c[C>>2]|0)+12|0;if(!(_d[c[c[l>>2]>>2]&3](H,f,0,0,c[f+420>>2]|0,p,0,0,200)|0)){a[H+70>>0]=1;a[H+68>>0]=0;c[H+1364>>2]=c[f+404>>2];c[H+1368>>2]=c[f+408>>2];c[H+1372>>2]=c[f+412>>2];c[H+1488>>2]=c[f+544>>2];c[H+1492>>2]=c[B>>2];if((c[q>>2]|0)>0){j=H+4|0;e=H+40|0;h=0;m=0;do{do if(!(au(H,m,D)|0)){k=c[(c[(c[j>>2]|0)+128>>2]|0)+48>>2]|0;if(!k)break;Jd[c[(c[k>>2]|0)+4>>2]&255](c[k+4>>2]|0,D)}while(0);C=c[e>>2]|0;h=(m|0)==0|(C|0)>(h|0)?C:h;m=m+1|0}while((m|0)<(c[q>>2]|0))}else h=0;Id[c[(c[l>>2]|0)+4>>2]&511](H);b[n>>1]=(Rg(h)|0)>>>16}b[f+78>>1]=b[o>>1]|0;b[f+80>>1]=b[E+26>>1]|0;b[f+82>>1]=b[f+160>>1]|0;if(!F){f=0;i=J;return f|0}k=c[G+20>>2]|0;c[I>>2]=f;j=I+8|0;b[j>>1]=3;l=I+10|0;b[l>>1]=1;m=I+4|0;c[m>>2]=1970170211;h=k+12|0;e=Wh(c[h>>2]|0,0,I,0)|0;if(!((e|0)==0|(e&255|0)==163)){f=e;i=J;return f|0}b[j>>1]=7;j=c[f+368>>2]|0;if((j|0)==1){c[m>>2]=1094992451;b[l>>1]=2;h=k+8|0}else if((j|0)==2){c[m>>2]=1094995778;b[l>>1]=0;h=k}else if((j|0)==4){c[m>>2]=1094992453;b[l>>1]=1;h=k+4|0}else if((j|0)==3){c[m>>2]=1818326065;b[l>>1]=3}else{f=0;i=J;return f|0}h=c[h>>2]|0;if(!h){f=0;i=J;return f|0}f=Wh(h,0,I,0)|0;i=J;return f|0}function aq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;if(!a){i=g;return}f=c[a+100>>2]|0;b=a+132|0;d=a+544|0;e=c[d>>2]|0;if(e){eh(f,e);c[d>>2]=0;c[a+540>>2]=0}_t(a);c[a+528>>2]=0;eh(f,c[b>>2]|0);c[b>>2]=0;b=a+136|0;eh(f,c[b>>2]|0);c[b>>2]=0;b=a+140|0;eh(f,c[b>>2]|0);c[b>>2]=0;b=a+144|0;eh(f,c[b>>2]|0);c[b>>2]=0;b=a+148|0;eh(f,c[b>>2]|0);c[b>>2]=0;b=a+428|0;eh(f,c[b>>2]|0);c[b>>2]=0;b=a+424|0;eh(f,c[b>>2]|0);c[b>>2]=0;b=a+420|0;eh(f,c[b>>2]|0);c[b>>2]=0;b=a+408|0;eh(f,c[b>>2]|0);c[b>>2]=0;b=a+412|0;eh(f,c[b>>2]|0);c[b>>2]=0;b=a+392|0;eh(f,c[b>>2]|0);c[b>>2]=0;b=a+396|0;eh(f,c[b>>2]|0);c[b>>2]=0;b=a+400|0;eh(f,c[b>>2]|0);c[b>>2]=0;b=a+372|0;e=b+12|0;eh(f,c[e>>2]|0);c[e>>2]=0;b=b+16|0;eh(f,c[b>>2]|0);c[b>>2]=0;b=a+364|0;eh(f,c[b>>2]|0);c[b>>2]=0;b=c[a+492>>2]|0;if(b){e=b+36|0;eh(f,c[e>>2]|0);c[e>>2]=0;c[b+40>>2]=0;e=b+28|0;eh(f,c[e>>2]|0);c[e>>2]=0;c[b+32>>2]=0;eh(f,b)}c[a+20>>2]=0;c[a+24>>2]=0;i=g;return}function bq(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;e=f;d=c[a>>2]|0;b=c[d+548>>2]|0;d=ci(c[(c[d+96>>2]|0)+4>>2]|0,90640)|0;if(!((d|0)!=0&(b|0)!=0)){e=0;i=f;return e|0}b=c[b>>2]|0;if(!b){e=0;i=f;return e|0}b=Ld[b&511](d)|0;if(!b){e=0;i=f;return e|0}d=c[a>>2]|0;b=Od[c[b>>2]&255](c[d+100>>2]|0,d+168|0,e)|0;if(b){e=b;i=f;return e|0}c[a+40>>2]=c[e>>2];e=0;i=f;return e|0}function cq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;d=a+40|0;if(!(c[d>>2]|0)){i=g;return}b=c[a>>2]|0;a=c[b+548>>2]|0;b=ci(c[(c[b+96>>2]|0)+4>>2]|0,90640)|0;if(((b|0)!=0&(a|0)!=0?(e=c[a>>2]|0,(e|0)!=0):0)?(f=Ld[e&511](b)|0,(f|0)!=0):0)Id[c[f+8>>2]&511](c[d>>2]|0);c[d>>2]=0;i=g;return}function dq(a){a=a|0;var b=0,d=0,e=0;e=i;b=c[a+4>>2]|0;d=c[b+548>>2]|0;if(!d){i=e;return 0}b=ci(c[(c[b+96>>2]|0)+4>>2]|0,90640)|0;if(!b){i=e;return 0}d=Ld[c[d+4>>2]&511](b)|0;c[(c[a+156>>2]|0)+36>>2]=d;i=e;return 0}function eq(a){a=a|0;c[(c[a+156>>2]|0)+36>>2]=0;return}function fq(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+1552|0;y=D+48|0;u=D;C=D+16|0;A=D+24|0;t=D+40|0;B=c[d+4>>2]|0;k=c[(c[B+488>>2]|0)+12>>2]|0;if((c[B+16>>2]|0)>>>0<=g>>>0?(c[(c[B+128>>2]|0)+48>>2]|0)==0:0){C=6;i=D;return C|0}n=(h&1024|0)==0?h:h|3;p=(f|0)!=0;if(p){c[d+172>>2]=c[f+16>>2];h=c[f+20>>2]|0}else{c[d+172>>2]=65536;h=65536}c[d+176>>2]=h;x=d+108|0;b[d+110>>1]=0;b[x>>1]=0;q=(n&1|0)==0;if(q)v=(n>>>1&1^1)&255;else v=0;o=d+72|0;c[o>>2]=1869968492;h=_d[c[k>>2]&3](y,B,f,d,c[B+420>>2]|0,c[B+528>>2]|0,v,n>>>16&15,200)|0;if(h){C=h;i=D;return C|0}j=n&1024;a[y+69>>0]=j>>>10;c[y+1364>>2]=c[B+404>>2];c[y+1368>>2]=c[B+408>>2];c[y+1372>>2]=c[B+412>>2];c[y+1488>>2]=c[B+544>>2];c[y+1492>>2]=c[B+540>>2];h=au(y,g,C)|0;if(h){Id[c[k+4>>2]&511](y);C=h;i=D;return C|0}l=y+1376|0;c[u+0>>2]=c[l+0>>2];c[u+4>>2]=c[l+4>>2];c[u+8>>2]=c[l+8>>2];c[u+12>>2]=c[l+12>>2];l=c[y+1392>>2]|0;m=c[y+1396>>2]|0;Id[c[k+4>>2]&511](y);g=d+124|0;c[g>>2]=c[g>>2]&1|4;if(!j){r=d+24|0;k=y+40|0;s=d+40|0;c[s>>2]=(Rg(c[k>>2]|0)|0)>>16;c[d+56>>2]=(Rg(c[k>>2]|0)|0)>>16;a[(c[d+156>>2]|0)+8>>0]=0;n=(n&16|0)!=0;if(n){h=B+460|0;h=(c[h+12>>2]|0)-(c[h+4>>2]|0)>>16;c[d+52>>2]=h}else{h=y+44|0;c[d+52>>2]=(Rg(c[h>>2]|0)|0)>>16;h=(Rg(c[h>>2]|0)|0)>>16}c[d+60>>2]=h;c[o>>2]=1869968492;if(p?(e[f+14>>1]|0)<24:0)c[g>>2]=c[g>>2]|256;if(!((((c[u>>2]|0)==65536?(c[u+12>>2]|0)==65536:0)?(c[u+4>>2]|0)==0:0)?(c[u+8>>2]|0)==0:0))Ah(x,u);if(m|l)Bh(x,l,m);c[t>>2]=c[s>>2];f=t+4|0;c[f>>2]=0;Ch(t,u);c[s>>2]=(c[t>>2]|0)+l;c[t>>2]=0;l=d+52|0;c[f>>2]=c[l>>2];Ch(t,u);c[l>>2]=(c[f>>2]|0)+m;if(q){j=c[y+16>>2]|0;h=c[j+4>>2]|0;k=c[d+172>>2]|0;g=c[d+176>>2]|0;if(!(v<<24>>24!=0?(c[y+72>>2]|0)!=0:0))z=28;if((z|0)==28?(w=b[j+2>>1]|0,w<<16>>16>0):0){j=w<<16>>16;while(1){c[h>>2]=Wg(c[h>>2]|0,k)|0;z=h+4|0;c[z>>2]=Wg(c[z>>2]|0,g)|0;j=j+-1|0;if((j|0)<=0)break;else h=h+8|0}}c[s>>2]=Wg(c[s>>2]|0,k)|0;c[l>>2]=Wg(c[l>>2]|0,g)|0}mi(x,A);y=c[A>>2]|0;c[r>>2]=(c[A+8>>2]|0)-y;z=c[A+12>>2]|0;c[d+28>>2]=z-(c[A+4>>2]|0);c[d+32>>2]=y;c[d+36>>2]=z;if(n)Nh(r,c[l>>2]|0)}else{A=c[d+156>>2]|0;c[d+32>>2]=(Rg(c[y+32>>2]|0)|0)>>16;c[d+40>>2]=(Rg(c[y+40>>2]|0)|0)>>16;z=A+12|0;c[z+0>>2]=c[u+0>>2];c[z+4>>2]=c[u+4>>2];c[z+8>>2]=c[u+8>>2];c[z+12>>2]=c[u+12>>2];c[A+28>>2]=l;c[A+32>>2]=m;a[A+8>>0]=1}k=d+136|0;c[k>>2]=c[C>>2];j=d+140|0;c[j>>2]=c[C+4>>2];h=c[(c[B+128>>2]|0)+48>>2]|0;if(!h){C=0;i=D;return C|0}Jd[c[(c[h>>2]|0)+4>>2]&255](c[h+4>>2]|0,C);c[k>>2]=0;c[j>>2]=0;C=0;i=D;return C|0}function gq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;c[e>>2]=0;j=e+4|0;c[j>>2]=0;f=c[a+492>>2]|0;if(!f){i=k;return 0}a=c[f+36>>2]|0;h=b<<16|d;f=(c[f+40>>2]|0)+-1|0;a:do if((f|0)>=0){g=a+(f<<4)|0;b:while(1){b=g;while(1){f=(b-a>>4|0)/2|0;d=c[a+(f<<4)>>2]<<16|c[a+(f<<4)+4>>2];if((d|0)==(h|0))break b;if(d>>>0>=h>>>0)break;a=a+(f+1<<4)|0;if(a>>>0>g>>>0)break a}f=f+-1|0;if((f|0)<0)break a;else g=a+(f<<4)|0}c[e>>2]=c[a+(f<<4)+8>>2];c[j>>2]=c[a+(f<<4)+12>>2];i=k;return 0}while(0);c[e>>2]=0;c[j>>2]=0;i=k;return 0}function hq(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+32|0;v=D+24|0;k=D;C=D+20|0;l=e+28|0;B=c[l>>2]|0;c[C>>2]=2;h=a+132|0;f=ch(B,44,C)|0;if((c[C>>2]|0)==0?(n=e+4|0,z=yi(e,c[n>>2]|0)|0,c[C>>2]=z,(z|0)==0):0){w=f+4|0;x=a+460|0;c[w+0>>2]=c[x+0>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];y=f+20|0;c[y>>2]=c[x+12>>2];z=f+24|0;c[z>>2]=c[x+4>>2];j=(c[a+488>>2]|0)+24|0;g=c[j>>2]|0;if(g){g=ce[c[g>>2]&255](k,c[l>>2]|0,c[e+32>>2]|0,c[e+36>>2]|0)|0;c[C>>2]=g;if(!g){c[k+8>>2]=f;c[k+12>>2]=83;c[k+16>>2]=h;c[C>>2]=Ld[c[(c[j>>2]|0)+8>>2]&511](k)|0;Id[c[(c[j>>2]|0)+4>>2]&511](k);g=c[C>>2]|0}if((((g&255|0)==2?(t=c[e+32>>2]|0,m=c[n>>2]|0,m>>>0>6):0)?(d[t+1>>0]|0)<4:0)?(d[t+4>>0]<<16|d[t+5>>0]<<24|d[t+3>>0]<<8|d[t+2>>0]|0)==(m|0):0){u=c[l>>2]|0;h=c[e+36>>2]|0;c[v>>2]=0;a:do if((t+101|0)>>>0<=h>>>0){g=d[t+100>>0]<<8|d[t+99>>0];if(((t+(g+135)|0)>>>0<=h>>>0?(d[t+(g+118)>>0]<<8|d[t+(g+117)>>0])>>>0>=18:0)?(o=d[t+(g+133)>>0]<<16|d[t+(g+134)>>0]<<24|d[t+(g+132)>>0]<<8|d[t+(g+131)>>0],p=t+o|0,(o|0)!=0):0){q=o+2|0;r=t+q|0;if(r>>>0>h>>>0){c[v>>2]=2;A=33;break}g=d[t+(o+1)>>0]<<8|d[p>>0];s=f+40|0;c[s>>2]=g;if((t+((g<<2)+q)|0)>>>0>h>>>0){c[v>>2]=2;A=33;break}if(g){h=hh(u,16,0,g,0,v)|0;p=f+36|0;c[p>>2]=h;if(!(c[v>>2]|0)){k=(c[s>>2]<<2)+q|0;m=t+k|0;o=c[a+92>>2]|0;n=c[a+36>>2]|0;b:do if((n|0)>0){j=c[a+40>>2]|0;l=0;while(1){g=c[j+(l<<2)>>2]|0;l=l+1|0;if((b[g+8>>1]|0)==7)break;if((l|0)>=(n|0))break b}t=Vh(a,g)|0;c[v>>2]=t;if(t){A=33;break a}}while(0);if((q|0)<(k|0)){g=r;while(1){c[h>>2]=Dh(a,d[g>>0]|0)|0;c[h+4>>2]=Dh(a,d[g+1>>0]|0)|0;c[h+8>>2]=(d[g+3>>0]<<8|d[g+2>>0])<<16>>16;c[h+12>>2]=0;g=g+4|0;if(g>>>0>=m>>>0)break;else h=h+16|0}}if(!o)g=c[v>>2]|0;else{g=Vh(a,o)|0;c[v>>2]=g}if(g){A=33;break}bea(c[p>>2]|0,c[s>>2]|0,16,201);if(!(c[v>>2]|0))g=0;else A=33}else A=33}else g=0}else g=0}else{c[v>>2]=2;A=33}while(0);if((A|0)==33){g=f+36|0;eh(u,c[g>>2]|0);c[g>>2]=0;c[f+40>>2]=0;g=c[v>>2]|0}c[C>>2]=g}if(!g)A=36}else A=36;if((A|0)==36){c[x+0>>2]=c[w+0>>2];c[x+4>>2]=c[w+4>>2];c[x+8>>2]=c[w+8>>2];c[x+12>>2]=c[w+12>>2];c[a+52>>2]=c[w>>2]>>16;c[a+56>>2]=c[f+8>>2]>>16;c[a+60>>2]=(c[f+12>>2]|0)+65535>>16;c[a+64>>2]=(c[f+16>>2]|0)+65535>>16;b[a+70>>1]=((c[y>>2]|0)+32768|0)>>>16;b[a+72>>1]=((c[z>>2]|0)+32768|0)>>>16;if(c[f+40>>2]|0){A=a+8|0;c[A>>2]=c[A>>2]|64;c[a+492>>2]=f;f=0}}Bi(e)}if(!f){C=c[C>>2]|0;i=D;return C|0}A=f+36|0;eh(B,c[A>>2]|0);c[A>>2]=0;c[f+40>>2]=0;A=f+28|0;eh(B,c[A>>2]|0);c[A>>2]=0;c[f+32>>2]=0;eh(B,f);C=c[C>>2]|0;i=D;return C|0}function iq(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+1520|0;l=m+1504|0;k=m;if(f&16){if(!e){k=0;i=m;return k|0}Cga(g|0,0,e<<2|0)|0;k=0;i=m;return k|0}f=_d[c[c[(c[b+488>>2]|0)+12>>2]>>2]&3](k,b,0,0,c[b+420>>2]|0,c[b+528>>2]|0,0,0,200)|0;if(f){k=f;i=m;return k|0}a[k+70>>0]=1;a[k+68>>0]=0;c[k+1364>>2]=c[b+404>>2];c[k+1368>>2]=c[b+408>>2];c[k+1372>>2]=c[b+412>>2];c[k+1488>>2]=c[b+544>>2];c[k+1492>>2]=c[b+540>>2];if(!e){k=0;i=m;return k|0}f=k+4|0;b=k+40|0;j=0;do{if(!(au(k,j+d|0,l)|0)){h=c[(c[(c[f>>2]|0)+128>>2]|0)+48>>2]|0;if(h)Jd[c[(c[h>>2]|0)+4>>2]&255](c[h+4>>2]|0,l);c[g+(j<<2)>>2]=(Rg(c[b>>2]|0)|0)>>16}else c[g+(j<<2)>>2]=0;j=j+1|0}while((j|0)!=(e|0));f=0;i=m;return f|0}function jq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;e=c[a>>2]|0;d=c[e+548>>2]|0;e=ci(c[(c[e+96>>2]|0)+4>>2]|0,90640)|0;if((e|0)!=0&(d|0)!=0?(f=c[d>>2]|0,(f|0)!=0):0){d=Ld[f&511](e)|0;Ph(c[a>>2]|0,b);if(!d){i=g;return 0}Xd[c[d+4>>2]&127](c[a+40>>2]|0,c[a+16>>2]|0,c[a+20>>2]|0,0,0)|0;i=g;return 0}Ph(c[a>>2]|0,b);i=g;return 0}function kq(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;k=l;if((ce[c[d+52>>2]&255](d,6,k,3)|0)<0){c[d+12>>2]=3;i=l;return}j=k+12|0;e=c[j>>2]|0;e=(e|0)<0?0-e|0:e;if(!e){c[d+12>>2]=3;i=l;return}b[a+68>>1]=Xg(1e3,e)|0;if((e|0)==65536){f=k+8|0;g=k+16|0;h=k+4|0;e=c[j>>2]|0;d=c[k+20>>2]|0}else{c[k>>2]=Xg(c[k>>2]|0,e)|0;h=k+4|0;c[h>>2]=Xg(c[h>>2]|0,e)|0;f=k+8|0;c[f>>2]=Xg(c[f>>2]|0,e)|0;g=k+16|0;c[g>>2]=Xg(c[g>>2]|0,e)|0;m=k+20|0;d=Xg(c[m>>2]|0,e)|0;c[m>>2]=d;e=c[j>>2]>>31&-131072|65536;c[j>>2]=e}c[a+436>>2]=c[k>>2];c[a+444>>2]=c[h>>2];c[a+440>>2]=c[f>>2];c[a+448>>2]=e;c[a+452>>2]=c[g>>2]>>16;c[a+456>>2]=d>>16;i=l;return}function lq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;i=i+16|0;h=v;r=c[d+8>>2]|0;g=c[b+488>>2]|0;t=d+28|0;Id[c[t>>2]&511](d);j=c[d>>2]|0;if(j>>>0>=r>>>0){c[d+12>>2]=3;i=v;return}s=a[j>>0]|0;e=s<<24>>24==91;if(!(((s&255)+-48|0)>>>0<10|e)){if((j+17|0)>>>0>>0?(rga(j,93160,16)|0)==0:0){c[b+368>>2]=2;i=v;return}if((j+15|0)>>>0>>0?(rga(j,93184,14)|0)==0:0){c[b+368>>2]=4;i=v;return}if((j+18|0)>>>0>>0?(rga(j,93200,17)|0)==0:0){c[b+368>>2]=3;i=v;return}c[d+12>>2]=162;i=v;return}s=d+100|0;f=c[d+16>>2]|0;if(e){c[d>>2]=j+1;q=256;k=1}else{q=Ld[c[d+36>>2]&511](d)|0;k=0}Id[c[t>>2]&511](d);if((c[d>>2]|0)>>>0>=r>>>0){i=v;return}c[b+372>>2]=q;c[d+96>>2]=q;c[b+384>>2]=hh(f,2,0,q,0,h)|0;e=c[h>>2]|0;if(!e){c[b+388>>2]=hh(f,4,0,q,0,h)|0;e=c[h>>2]|0;if(!e){e=Od[c[c[g>>2]>>2]&255](s,q,f)|0;c[h>>2]=e;if(!e){if((q|0)>0){e=d+144|0;f=0;do{ce[c[e>>2]&255](s,f,90712,8)|0;f=f+1|0}while((f|0)!=(q|0))}Id[c[t>>2]&511](d);e=c[d>>2]|0;a:do if(e>>>0>>0){n=k<<24>>24==0;o=d+32|0;p=d+12|0;k=k<<24>>24!=0;j=d+144|0;l=d+124|0;m=d+36|0;g=0;b:while(1){h=a[e>>0]|0;if(h<<24>>24==93){f=23;break}else if(h<<24>>24==100?(u=e+3|0,u>>>0>>0):0){if((a[e+1>>0]|0)==101?(a[e+2>>0]|0)==102:0)switch(a[u>>0]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:{e=u;break a}default:{}}if(h<<24>>24==93){f=23;break}}do if(((h&255)+-48|0)>>>0>9&n){Id[c[o>>2]&511](d);if(!(c[p>>2]|0)){f=e;h=g}else{f=48;break b}}else{if(k)h=g;else{h=Ld[c[m>>2]&511](d)|0;Id[c[t>>2]&511](d);e=c[d>>2]|0}if((e+2|0)>>>0>>0?(a[e>>0]|0)==47&(g|0)<(q|0):0){f=e+1|0;c[d>>2]=f;Id[c[o>>2]&511](d);e=c[d>>2]|0;if(e>>>0>=r>>>0){f=48;break b}if(c[p>>2]|0){f=48;break b}e=e-f|0;w=ce[c[j>>2]&255](s,h,f,e+1|0)|0;c[p>>2]=w;if(w){f=48;break b}a[(c[(c[l>>2]|0)+(h<<2)>>2]|0)+e>>0]=0;h=g+1|0;break}if(k){f=34;break b}else{f=e;h=g}}while(0);Id[c[t>>2]&511](d);e=c[d>>2]|0;if(e>>>0>=r>>>0){e=f;break a}else g=h}if((f|0)==23){e=e+1|0;break}else if((f|0)==34){c[p>>2]=2;i=v;return}else if((f|0)==48){i=v;return}}else e=j;while(0);c[b+368>>2]=1;c[d>>2]=e;i=v;return}}}c[d+12>>2]=e;i=v;return}function mq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+16|0;x=z;p=e+316|0;q=c[e+16>>2]|0;h=c[b+488>>2]|0;v=e+28|0;Id[c[v>>2]&511](e);y=c[e>>2]|0;w=e+8|0;if(y>>>0<(c[w>>2]|0)>>>0?(a[y>>0]|0)==91:0){Id[c[e+32>>2]&511](e);Id[c[v>>2]&511](e);y=c[e>>2]|0;if(y>>>0<(c[w>>2]|0)>>>0?(a[y>>0]|0)==93:0){i=z;return}c[e+12>>2]=3;i=z;return}r=e+36|0;s=Ld[c[r>>2]&511](e)|0;t=e+32|0;Id[c[t>>2]&511](e);y=e+12|0;if(c[y>>2]|0){i=z;return}Id[c[v>>2]&511](e);u=e+312|0;if(!((c[u>>2]|0)==0?(f=Od[c[c[h>>2]>>2]&255](p,s,q)|0,c[x>>2]=f,(f|0)!=0):0))g=9;a:do if((g|0)==9){f=c[e>>2]|0;b:do if((f+4|0)>>>0<(c[w>>2]|0)>>>0){o=b+128|0;n=b+172|0;l=h+16|0;m=e+360|0;while(1){if(rga(f,93144,3)|0)break b;Id[c[t>>2]&511](e);k=Ld[c[r>>2]&511](e)|0;f=c[(c[o>>2]|0)+48>>2]|0;b=c[w>>2]|0;Id[c[v>>2]&511](e);h=c[e>>2]|0;if(h>>>0>=b>>>0){g=16;break}if(((d[h>>0]|0)+-48|0)>>>0>=10){g=16;break}g=Ld[c[r>>2]&511](e)|0;Id[c[t>>2]&511](e);h=c[e>>2]|0;j=h+1|0;if((g|0)<=-1){g=16;break}if((g|0)>=(b-j|0)){g=16;break}c[e>>2]=h+(g+1);if(c[y>>2]|0){g=35;break}Id[c[t>>2]&511](e);if(c[y>>2]|0){g=35;break}Id[c[v>>2]&511](e);f=c[e>>2]|0;if((f+4|0)>>>0<(c[w>>2]|0)>>>0?(rga(f,93152,3)|0)==0:0){Id[c[t>>2]&511](e);Id[c[v>>2]&511](e)}if(!(c[u>>2]|0)){f=c[n>>2]|0;if((f|0)>-1){if((g|0)<(f|0)){g=27;break}h=ch(q,g,x)|0;f=c[x>>2]|0;if(f)break a;Aga(h|0,j|0,g|0)|0;$d[c[l>>2]&255](h,g,4330);f=c[n>>2]|0;c[x>>2]=ce[c[m>>2]&255](p,k,h+f|0,g-f|0)|0;eh(q,h);f=c[x>>2]|0}else{f=ce[c[m>>2]&255](p,k,j,g)|0;c[x>>2]=f}if(f)break a}f=c[e>>2]|0;if((f+4|0)>>>0>=(c[w>>2]|0)>>>0)break b}if((g|0)==16){if(f){i=z;return}c[y>>2]=3;i=z;return}else if((g|0)==27){c[x>>2]=3;f=3;break a}else if((g|0)==35){i=z;return}}while(0);if(c[u>>2]|0){i=z;return}c[u>>2]=s;i=z;return}while(0);c[y>>2]=f;i=z;return}function nq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=i;i=i+16|0;I=K;D=K+4|0;H=e+208|0;G=e+156|0;F=e+260|0;z=c[e+16>>2]|0;k=c[b+488>>2]|0;A=e+8|0;B=c[A>>2]|0;C=e+36|0;g=Ld[c[C>>2]&511](e)|0;a:do if((g|0)>=0){if(!g){i=K;return}J=e+12|0;if(c[J>>2]|0){i=K;return}E=e+152|0;if(!(c[E>>2]|0)){h=g+6|0;f=Od[c[c[k>>2]>>2]&255](H,h,z)|0;c[I>>2]=f;if(f){h=J;break}f=Od[c[c[k>>2]>>2]&255](G,h,z)|0;c[I>>2]=f;if(f){h=J;break}f=Od[c[c[k>>2]>>2]&255](F,4,z)|0;c[I>>2]=f;if(f){h=J;break}}u=e+28|0;Id[c[u>>2]&511](e);f=c[e>>2]|0;do if(f>>>0>>0){v=e+32|0;w=b+128|0;x=e+200|0;y=e+180|0;t=b+172|0;s=g+5|0;q=k+16|0;r=e+252|0;b=0;p=0;l=0;b:while(1){o=(b|0)!=0;while(1){h=f+3|0;c:do if(h>>>0>>0){switch(a[h>>0]|0){case 37:case 125:case 123:case 93:case 91:case 62:case 60:case 41:case 40:case 47:case 0:case 12:case 9:case 10:case 13:case 32:break;default:break c}h=a[f>>0]|0;if(h<<24>>24==100){if((a[f+1>>0]|0)!=101)break;if((a[f+2>>0]|0)==102&o){f=p;h=45;break b}if(h<<24>>24!=101)break}else if(h<<24>>24!=101)break;if((a[f+1>>0]|0)==110?(a[f+2>>0]|0)==100:0){f=p;h=45;break b}}while(0);Id[c[v>>2]&511](e);if(c[J>>2]|0){h=63;break b}if((a[f>>0]|0)==47){g=f+1|0;if(g>>>0>=B>>>0){h=26;break b}j=c[e>>2]|0;f=c[(c[w>>2]|0)+48>>2]|0;k=c[A>>2]|0;Id[c[u>>2]&511](e);h=c[e>>2]|0;if(h>>>0>=k>>>0){h=31;break b}if(((d[h>>0]|0)+-48|0)>>>0>=10){h=31;break b}m=Ld[c[C>>2]&511](e)|0;Id[c[v>>2]&511](e);h=c[e>>2]|0;n=h+1|0;if((m|0)<=-1){h=31;break b}if((m|0)>=(k-n|0)){h=31;break b}c[e>>2]=h+(m+1);if(c[J>>2]|0){h=63;break b}if(!(c[E>>2]|0)){f=j;k=n;break}}Id[c[u>>2]&511](e);f=c[e>>2]|0;if(f>>>0>=B>>>0){f=p;h=45;break b}}h=f-g|0;f=ce[c[x>>2]&255](G,b,g,h+1|0)|0;c[I>>2]=f;if(f){h=J;break a}a[(c[(c[y>>2]|0)+(b<<2)>>2]|0)+h>>0]=0;if((a[g>>0]|0)==46){o=(qga(90712,c[(c[y>>2]|0)+(b<<2)>>2]|0)|0)==0;g=o?1:p;l=o?b:l}else g=p;f=c[t>>2]|0;if((f|0)>-1&(b|0)<(s|0)){if((m|0)<=(f|0)){h=40;break}h=ch(z,m,I)|0;f=c[I>>2]|0;if(f){h=J;break a}Aga(h|0,k|0,m|0)|0;$d[c[q>>2]&255](h,m,4330);f=c[t>>2]|0;c[I>>2]=ce[c[r>>2]&255](H,b,h+f|0,m-f|0)|0;eh(z,h);f=c[I>>2]|0}else{f=ce[c[r>>2]&255](H,b,k,m)|0;c[I>>2]=f}b=b+1|0;if(f){h=J;break a}Id[c[u>>2]&511](e);f=c[e>>2]|0;if(f>>>0>=B>>>0){f=g;h=45;break}else p=g}if((h|0)==26){c[I>>2]=3;h=J;f=3;break a}else if((h|0)==31){if(f){i=K;return}c[J>>2]=3;i=K;return}else if((h|0)==40){c[I>>2]=3;h=J;f=3;break a}else if((h|0)==45){c[E>>2]=b;if(!(f<<24>>24)){k=b;break}g=e+180|0;f=c[c[g>>2]>>2]|0;if(!(qga(90712,f)|0)){i=K;return}k=e+304|0;j=e+184|0;f=ce[c[k>>2]&255](F,0,f,c[c[j>>2]>>2]|0)|0;c[I>>2]=f;if(f){h=J;break a}h=e+232|0;b=e+236|0;f=ce[c[k>>2]&255](F,1,c[c[h>>2]>>2]|0,c[c[b>>2]>>2]|0)|0;c[I>>2]=f;if(f){h=J;break a}f=ce[c[k>>2]&255](F,2,c[(c[g>>2]|0)+(l<<2)>>2]|0,c[(c[j>>2]|0)+(l<<2)>>2]|0)|0;c[I>>2]=f;if(f){h=J;break a}f=ce[c[k>>2]&255](F,3,c[(c[h>>2]|0)+(l<<2)>>2]|0,c[(c[b>>2]|0)+(l<<2)>>2]|0)|0;c[I>>2]=f;if(f){h=J;break a}g=e+200|0;h=e+284|0;j=e+288|0;f=ce[c[g>>2]&255](G,l,c[c[h>>2]>>2]|0,c[c[j>>2]>>2]|0)|0;c[I>>2]=f;if(f){h=J;break a}b=e+252|0;f=ce[c[b>>2]&255](H,l,c[(c[h>>2]|0)+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0)|0;c[I>>2]=f;if(f){h=J;break a}f=ce[c[g>>2]&255](G,0,c[(c[h>>2]|0)+8>>2]|0,c[(c[j>>2]|0)+8>>2]|0)|0;c[I>>2]=f;if(f){h=J;break a}f=ce[c[b>>2]&255](H,0,c[(c[h>>2]|0)+12>>2]|0,c[(c[j>>2]|0)+12>>2]|0)|0;c[I>>2]=f;if(f){h=J;break a}i=K;return}else if((h|0)==63){i=K;return}}else{c[E>>2]=0;k=0}while(0);a[D+0>>0]=a[93136]|0;a[D+1>>0]=a[93137]|0;a[D+2>>0]=a[93138]|0;a[D+3>>0]=a[93139]|0;a[D+4>>0]=a[93140]|0;b=e+304|0;f=ce[c[b>>2]&255](F,0,c[c[e+180>>2]>>2]|0,c[c[e+184>>2]>>2]|0)|0;c[I>>2]=f;if(!f){f=ce[c[b>>2]&255](F,1,c[c[e+232>>2]>>2]|0,c[c[e+236>>2]>>2]|0)|0;c[I>>2]=f;if(!f){h=e+200|0;f=ce[c[h>>2]&255](G,0,90712,8)|0;c[I>>2]=f;if(!f){j=e+252|0;f=ce[c[j>>2]&255](H,0,D,5)|0;c[I>>2]=f;if(!f){g=e+284|0;b=e+288|0;f=ce[c[h>>2]&255](G,k,c[c[g>>2]>>2]|0,c[c[b>>2]>>2]|0)|0;c[I>>2]=f;if(!f){f=ce[c[j>>2]&255](H,k,c[(c[g>>2]|0)+4>>2]|0,c[(c[b>>2]|0)+4>>2]|0)|0;c[I>>2]=f;if(!f){c[E>>2]=(c[E>>2]|0)+1;i=K;return}else h=J}else h=J}else h=J}else h=J}else h=J}else h=J}else{c[I>>2]=3;h=e+12|0;f=3}while(0);c[h>>2]=f;i=K;return}function oq(a,b){a=a|0;b=b|0;b=b+372|0;c[b>>2]=c[b>>2]|1;return}function pq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+256|0;r=u+64|0;t=u;q=u+8|0;s=u+56|0;l=b+60|0;de[c[l>>2]&63](b,r,16,t);d=c[t>>2]|0;a:do if((d|0)>=0)if((d|0)==0|(d|0)>16)d=3;else{m=c[b>>2]|0;n=b+8|0;o=c[n>>2]|0;p=a+528|0;if((d|0)>0){j=b+40|0;d=c[p>>2]|0;k=0;e=0;while(1){c[b>>2]=c[r+(k*12|0)>>2];c[n>>2]=c[r+(k*12|0)+4>>2];de[c[l>>2]&63](b,q,4,s);f=c[s>>2]|0;if(k)if((f|0)==(e|0)){g=e;h=d;f=e}else{d=3;break a}else{if((f+-1|0)>>>0>3){d=3;break a}d=du(a,c[t>>2]|0,f)|0;if(d)break a;g=c[s>>2]|0;h=c[p>>2]|0}if((g|0)>0){d=h+(k<<2)+24|0;e=0;do{c[b>>2]=c[q+(e*12|0)>>2];c[n>>2]=c[q+(e*12|0)+4>>2];g=Wd[c[j>>2]&511](b,0)|0;c[(c[d>>2]|0)+(e<<2)>>2]=g;e=e+1|0}while((e|0)<(c[s>>2]|0))}k=k+1|0;if((k|0)>=(c[t>>2]|0))break;else{d=h;e=f}}}c[b>>2]=m;c[n>>2]=o;d=0}else d=162;while(0);c[b+12>>2]=d;i=u;return}function qq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+304|0;s=w+300|0;o=w;p=w+48|0;r=w+56|0;q=w+296|0;c[s>>2]=0;m=c[b+100>>2]|0;n=d+60|0;de[c[n>>2]&63](d,o,4,p);e=c[p>>2]|0;if((e|0)<0){c[s>>2]=162;v=162;d=d+12|0;c[d>>2]=v;i=w;return}if((e|0)==0|(e|0)>4){c[s>>2]=3;v=3;d=d+12|0;c[d>>2]=v;i=w;return}u=c[d>>2]|0;v=d+8|0;t=c[v>>2]|0;e=du(b,0,e)|0;c[s>>2]=e;if(e){v=e;d=d+12|0;c[d>>2]=v;i=w;return}h=c[b+528>>2]|0;do if((c[p>>2]|0)>0){j=d+36|0;k=d+40|0;l=0;while(1){c[d>>2]=c[o+(l*12|0)>>2];c[v>>2]=c[o+(l*12|0)+4>>2];de[c[n>>2]&63](d,r,20,q);e=c[q>>2]|0;if((e+-1|0)>>>0>19){b=9;break}b=hh(m,4,0,e<<1,0,s)|0;g=h+(l*12|0)+92|0;c[g>>2]=b;e=c[s>>2]|0;if(e){b=16;break}e=c[q>>2]|0;f=h+(l*12|0)+96|0;c[f>>2]=b+(e<<2);a[h+(l*12|0)+88>>0]=e;if((e|0)>0){e=0;do{c[d>>2]=(c[r+(e*12|0)>>2]|0)+1;c[v>>2]=(c[r+(e*12|0)+4>>2]|0)+-1;b=Ld[c[j>>2]&511](d)|0;c[(c[g>>2]|0)+(e<<2)>>2]=b;b=Wd[c[k>>2]&511](d,0)|0;c[(c[f>>2]|0)+(e<<2)>>2]=b;e=e+1|0}while((e|0)<(c[q>>2]|0))}l=l+1|0;if((l|0)>=(c[p>>2]|0)){b=14;break}}if((b|0)==9){c[s>>2]=3;v=3;d=d+12|0;c[d>>2]=v;i=w;return}else if((b|0)==14){e=c[s>>2]|0;break}else if((b|0)==16){d=d+12|0;c[d>>2]=e;i=w;return}}else e=0;while(0);c[d>>2]=u;c[v>>2]=t;v=e;d=d+12|0;c[d>>2]=v;i=w;return}function rq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+64|0;l=o+8|0;m=o;n=o+4|0;c[n>>2]=0;de[c[d+60>>2]&63](d,l,4,m);e=c[m>>2]|0;a:do if((e|0)>=0){if((e|0)==0|(e|0)>4){c[n>>2]=3;e=3;break}e=du(b,0,e)|0;c[n>>2]=e;if(!e){k=c[b+528>>2]|0;g=c[b+100>>2]|0;if((c[m>>2]|0)>0){j=0;while(1){h=l+(j*12|0)|0;e=c[h>>2]|0;if((a[e>>0]|0)==47){e=e+1|0;c[h>>2]=e}b=c[l+(j*12|0)+4>>2]|0;f=b-e|0;if((b|0)==(e|0)){b=10;break}b=ch(g,f+1|0,n)|0;c[k+(j<<2)+8>>2]=b;e=c[n>>2]|0;if(e)break a;Aga(b|0,c[h>>2]|0,f|0)|0;a[b+f>>0]=0;j=j+1|0;if((j|0)>=(c[m>>2]|0)){b=13;break}}if((b|0)==10){c[n>>2]=3;e=3;break}else if((b|0)==13){e=c[n>>2]|0;break}}else e=0}}else{c[n>>2]=162;e=162}while(0);c[d+12>>2]=e;i=o;return}function sq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+208|0;k=m+8|0;l=m;g=a+528|0;f=c[g>>2]|0;de[c[b+60>>2]&63](b,k,16,l);d=c[l>>2]|0;do if((d|0)>=0)if((d|0)==0|(d|0)>16)d=3;else{if((f|0)!=0?(e=c[f>>2]|0,(e|0)!=0):0){if((e|0)!=(d|0)){d=3;break}}else{d=du(a,d,0)|0;if(d)break;d=c[l>>2]|0;f=c[g>>2]|0}g=c[b>>2]|0;h=b+8|0;j=c[h>>2]|0;if((d|0)>0){e=b+40|0;a=f+136|0;d=f+140|0;f=0;do{c[b>>2]=c[k+(f*12|0)>>2];c[h>>2]=c[k+(f*12|0)+4>>2];n=Wd[c[e>>2]&511](b,0)|0;c[(c[a>>2]|0)+(f<<2)>>2]=n;c[(c[d>>2]|0)+(f<<2)>>2]=n;f=f+1|0}while((f|0)<(c[l>>2]|0))}c[b>>2]=g;c[h>>2]=j;d=0}else d=162;while(0);c[b+12>>2]=d;i=m;return}function tq(a,b){a=a|0;b=b|0;var d=0;d=i;c[a+540>>2]=ce[c[b+52>>2]&255](b,0,0,0)|0;i=d;return}function uq(a){a=a|0;return c[a+364>>2]|0}function vq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;Vi(d,c[(c[a+420>>2]|0)+(b<<2)>>2]|0,e)|0;i=f;return 0}function wq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;e=c[a+416>>2]|0;a:do if((e|0)>0){d=c[a+420>>2]|0;a=0;while(1){if(!(qga(b,c[d+(a<<2)>>2]|0)|0))break a;a=a+1|0;if((a|0)>=(e|0)){a=0;break}}}else a=0;while(0);i=f;return a|0}function xq(a,b){a=a|0;b=b|0;a=a+132|0;c[b+0>>2]=c[a+0>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];c[b+16>>2]=c[a+16>>2];c[b+20>>2]=c[a+20>>2];c[b+24>>2]=c[a+24>>2];c[b+28>>2]=c[a+28>>2];return 0}function yq(a,c){a=a|0;c=c|0;b[c>>1]=b[a+164>>1]|0;return 0}function zq(a){a=a|0;return 1}function Aq(a,b){a=a|0;b=b|0;var c=0;c=i;Aga(b|0,a+168|0,196)|0;i=c;return 0}function Bq(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0;m=i;k=e+132|0;do switch(f|0){case 9:{if((h|0)!=0&(j|0)>3){c[h>>2]=c[e+368>>2];k=4}else k=4;break}case 10:{if((c[e+368>>2]|0)==1?(l=e+372|0,(c[l>>2]|0)>>>0>g>>>0):0){l=c[(c[l+16>>2]|0)+(g<<2)>>2]|0;f=Dga(l|0)|0;k=f+1|0;if(!((h|0)==0|(k|0)>(j|0))){Aga(h|0,l|0,f|0)|0;a[h+f>>0]=0}}else k=-1;break}case 3:{if((h|0)!=0&(j|0)>0){a[h>>0]=a[e+432>>0]|0;k=1}else k=1;break}case 0:{if((h|0)!=0&(j|0)>0){a[h>>0]=a[k+301>>0]|0;k=1}else k=1;break}case 5:{if((h|0)!=0&(j|0)>3){c[h>>2]=c[e+168>>2];k=4}else k=4;break}case 7:{if((c[e+416>>2]|0)>>>0>g>>>0){l=c[(c[e+420>>2]|0)+(g<<2)>>2]|0;f=Dga(l|0)|0;k=f+1|0;if(!((h|0)==0|(k|0)>(j|0))){Aga(h|0,l|0,k|0)|0;a[h+f>>0]=0}}else k=-1;break}case 4:{l=c[e+364>>2]|0;k=(Dga(l|0)|0)+1|0;if(!((h|0)==0|(k|0)>(j|0)))Aga(h|0,l|0,k|0)|0;break}case 1:{if(g>>>0<4)if((h|0)!=0&(j|0)>3){if(!g)k=c[e+436>>2]|0;else if((g|0)==3)k=c[e+448>>2]|0;else if((g|0)==1)k=c[e+440>>2]|0;else if((g|0)==2)k=c[e+444>>2]|0;else k=0;c[h>>2]=k;k=4}else k=4;else k=-1;break}case 6:{if((h|0)!=0&(j|0)>3){c[h>>2]=c[e+416>>2];k=4}else k=4;break}case 8:{if((c[e+416>>2]|0)>>>0>g>>>0){l=c[(c[e+428>>2]|0)+(g<<2)>>2]|0;k=l+1|0;if((h|0)!=0&(l|0)<(j|0)){Aga(h|0,c[(c[e+424>>2]|0)+(g<<2)>>2]|0,l|0)|0;a[h+l>>0]=0}}else k=-1;break}case 2:{if(g>>>0<4)if((h|0)!=0&(j|0)>3){if((g|0)==1)k=c[e+464>>2]|0;else if((g|0)==2)k=c[e+468>>2]|0;else if((g|0)==3)k=c[e+472>>2]|0;else if(!g)k=c[e+460>>2]|0;else k=0;c[h>>2]=k;k=4}else k=4;else k=-1;break}case 12:{if((c[e+404>>2]|0)>>>0>g>>>0){l=c[(c[e+412>>2]|0)+(g<<2)>>2]|0;k=l+1|0;if((h|0)!=0&(l|0)<(j|0)){Aga(h|0,c[(c[e+408>>2]|0)+(g<<2)>>2]|0,l|0)|0;a[h+l>>0]=0}}else k=-1;break}case 16:{k=e+168|0;if((d[k+8>>0]|0)>>>0>g>>>0)if((h|0)!=0&(j|0)>1){b[h>>1]=b[k+12+(g<<1)>>1]|0;k=2}else k=2;else k=-1;break}case 24:{if((h|0)!=0&(j|0)>3){c[h>>2]=c[e+276>>2];k=4}else k=4;break}case 13:{if((h|0)!=0&(j|0)>1){b[h>>1]=b[e+288>>1]|0;k=2}else k=2;break}case 25:{if((h|0)!=0&(j|0)>3){c[h>>2]=c[e+280>>2];k=4}else k=4;break}case 18:{if((h|0)!=0&(j|0)>0){a[h>>0]=a[e+177>>0]|0;k=1}else k=1;break}case 17:{if((h|0)!=0&(j|0)>3){c[h>>2]=c[e+284>>2];k=4}else k=4;break}case 15:{if((h|0)!=0&(j|0)>0){a[h>>0]=a[e+176>>0]|0;k=1}else k=1;break}case 14:{if((h|0)!=0&(j|0)>1){b[h>>1]=b[e+290>>1]|0;k=2}else k=2;break}case 19:{k=e+168|0;if((d[k+9>>0]|0)>>>0>g>>>0)if((h|0)!=0&(j|0)>1){b[h>>1]=b[k+40+(g<<1)>>1]|0;k=2}else k=2;else k=-1;break}case 20:{if((h|0)!=0&(j|0)>0){a[h>>0]=a[e+178>>0]|0;k=1}else k=1;break}case 21:{k=e+168|0;if((d[k+10>>0]|0)>>>0>g>>>0)if((h|0)!=0&(j|0)>1){b[h>>1]=b[k+60+(g<<1)>>1]|0;k=2}else k=2;else k=-1;break}case 22:{if((h|0)!=0&(j|0)>0){a[h>>0]=a[e+179>>0]|0;k=1}else k=1;break}case 23:{k=e+168|0;if((d[k+11>>0]|0)>>>0>g>>>0)if((h|0)!=0&(j|0)>1){b[h>>1]=b[k+88+(g<<1)>>1]|0;k=2}else k=2;else k=-1;break}case 11:{if((h|0)!=0&(j|0)>3){c[h>>2]=c[e+404>>2];k=4}else k=4;break}case 38:{l=c[e+140>>2]|0;k=(Dga(l|0)|0)+1|0;if(!((h|0)==0|(k|0)>(j|0)))Aga(h|0,l|0,k|0)|0;break}case 39:{l=c[e+144>>2]|0;k=(Dga(l|0)|0)+1|0;if(!((h|0)==0|(k|0)>(j|0)))Aga(h|0,l|0,k|0)|0;break}case 40:{l=c[e+148>>2]|0;k=(Dga(l|0)|0)+1|0;if(!((h|0)==0|(k|0)>(j|0)))Aga(h|0,l|0,k|0)|0;break}case 45:{if((h|0)!=0&(j|0)>3){c[h>>2]=c[e+152>>2];k=4}else k=4;break}case 32:{if(g>>>0<2)if((h|0)!=0&(j|0)>1){b[h>>1]=b[e+360+(g<<1)>>1]|0;k=2}else k=2;else k=-1;break}case 35:{if((h|0)!=0&(j|0)>3){c[h>>2]=c[e+352>>2];k=4}else k=4;break}case 29:{k=e+168|0;if((d[k+125>>0]|0)>>>0>g>>>0)if((h|0)!=0&(j|0)>1){b[h>>1]=b[k+(g<<1)+154>>1]|0;k=2}else k=2;else k=-1;break}case 31:{if((h|0)!=0&(j|0)>0){a[h>>0]=a[e+295>>0]|0;k=1}else k=1;break}case 42:{if((h|0)!=0&(j|0)>1){b[h>>1]=b[k+26>>1]|0;k=2}else k=2;break}case 43:{if((h|0)!=0&(j|0)>1){b[h>>1]=b[e+160>>1]|0;k=2}else k=2;break}case 41:{if((h|0)!=0&(j|0)>0){a[h>>0]=a[e+156>>0]|0;k=1}else k=1;break}case 36:{l=c[k>>2]|0;k=(Dga(l|0)|0)+1|0;if(!((h|0)==0|(k|0)>(j|0)))Aga(h|0,l|0,k|0)|0;break}case 26:{if((h|0)!=0&(j|0)>0){a[h>>0]=a[e+292>>0]|0;k=1}else k=1;break}case 33:{if((h|0)!=0&(j|0)>3){c[h>>2]=c[e+172>>2];k=4}else k=4;break}case 27:{k=e+168|0;if((d[k+124>>0]|0)>>>0>g>>>0)if((h|0)!=0&(j|0)>1){b[h>>1]=b[k+128+(g<<1)>>1]|0;k=2}else k=2;else k=-1;break}case 28:{if((h|0)!=0&(j|0)>0){a[h>>0]=a[e+293>>0]|0;k=1}else k=1;break}case 30:{if((h|0)!=0&(j|0)>0){a[h>>0]=a[e+294>>0]|0;k=1}else k=1;break}case 34:{if((h|0)!=0&(j|0)>3){c[h>>2]=c[e+356>>2];k=4}else k=4;break}case 44:{if((h|0)!=0&(j|0)>1){b[h>>1]=b[e+164>>1]|0;k=2}else k=2;break}case 37:{l=c[e+136>>2]|0;k=(Dga(l|0)|0)+1|0;if(!((h|0)==0|(k|0)>(j|0)))Aga(h|0,l|0,k|0)|0;break}default:k=-1}while(0);i=m;return k|0}function Cq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;a=c[a+492>>2]|0;if(!a){b=6;i=n;return b|0}m=a+32|0;f=c[m>>2]|0;if((f|0)<=0){b=0;i=n;return b|0}l=a+28|0;a=f;k=0;do{j=c[l>>2]|0;do if((c[j+(k*20|0)>>2]|0)==(d|0)){f=c[j+(k*20|0)+4>>2]|0;if((f|0)>(b|0)){c[e>>2]=c[j+(k*20|0)+8>>2];break}g=c[j+(k*20|0)+12>>2]|0;h=c[j+(k*20|0)+16>>2]|0;if((g|0)<(b|0)){c[e>>2]=h;break}else{j=j+(k*20|0)+8|0;a=Ug(b-f|0,h-(c[j>>2]|0)|0,g-f|0)|0;c[e>>2]=(c[j>>2]|0)+a;a=c[m>>2]|0;break}}while(0);k=k+1|0}while((k|0)<(a|0));a=0;i=n;return a|0}function Dq(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;g=i;a=c[a+528>>2]|0;if(!a){f=6;i=g;return f|0}e=c[a+4>>2]|0;c[b>>2]=e;c[b+4>>2]=c[a>>2];if(!e){f=0;i=g;return f|0}else f=0;do{c[b+(f*12|0)+8>>2]=c[a+(f<<2)+8>>2];h=c[a+(f*12|0)+92>>2]|0;c[b+(f*12|0)+12>>2]=c[h>>2];c[b+(f*12|0)+16>>2]=c[h+((d[a+(f*12|0)+88>>0]|0)+-1<<2)>>2];f=f+1|0}while(f>>>0>>0);a=0;i=g;return a|0}function Eq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+64|0;t=u;o=b+528|0;p=c[o>>2]|0;if(!p){t=6;i=u;return t|0}q=p+4|0;if((c[q>>2]|0)!=(d|0)){t=6;i=u;return t|0}if(!d)h=p;else{f=d;r=0;do{l=c[e+(r<<2)>>2]|0;k=c[p+(r*12|0)+92>>2]|0;n=c[p+(r*12|0)+96>>2]|0;m=a[p+(r*12|0)+88>>0]|0;do if(m<<24>>24){j=-1;b=0;while(1){h=c[k+(b<<2)>>2]|0;if((l|0)==(h|0)){s=7;break}g=b+1|0;if((l|0)<(h|0)){g=b;b=j;break}if(g>>>0<(m&255)>>>0){j=b;b=g}else{g=-1;break}}if((s|0)==7){s=0;b=c[n+(b<<2)>>2]|0;break}if((b|0)>=0)if((g|0)<0){b=c[n+((m&255)+-1<<2)>>2]|0;break}else{f=c[k+(b<<2)>>2]|0;b=Ug(l-f|0,(c[n+(g<<2)>>2]|0)-(c[n+(b<<2)>>2]|0)|0,(c[k+(g<<2)>>2]|0)-f|0)|0;f=c[q>>2]|0;break}else s=10}else s=10;while(0);if((s|0)==10){s=0;b=c[n>>2]|0}c[t+(r<<2)>>2]=b;r=r+1|0}while(r>>>0>>0);h=c[o>>2]|0}if(!h){t=6;i=u;return t|0}j=h+4|0;if((c[j>>2]|0)!=(d|0)){t=6;i=u;return t|0}b=c[h>>2]|0;if(!b){t=0;i=u;return t|0}k=h+136|0;g=0;do{if(!d){d=0;f=65536}else{f=0;b=65536;do{d=c[t+(f<<2)>>2]|0;d=(d|0)<0?0:d;d=(d|0)>65536?65536:d;b=Wg(b,(1<>2]|0}while(f>>>0>>0);f=b;b=c[h>>2]|0}c[(c[k>>2]|0)+(g<<2)>>2]=f;g=g+1|0}while(g>>>0>>0);b=0;i=u;return b|0}function Fq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;g=c[a+528>>2]|0;if(!g){j=6;i=k;return j|0}h=g+4|0;if((c[h>>2]|0)!=(b|0)){j=6;i=k;return j|0}a=c[g>>2]|0;if(!a){j=0;i=k;return j|0}j=g+136|0;f=0;do{if(!b){b=0;e=65536}else{e=0;a=65536;do{b=c[d+(e<<2)>>2]|0;b=(b|0)<0?0:b;b=(b|0)>65536?65536:b;a=Wg(a,(1<>2]|0}while(e>>>0>>0);e=a;a=c[g>>2]|0}c[(c[j>>2]|0)+(f<<2)>>2]=e;f=f+1|0}while(f>>>0>>0);a=0;i=k;return a|0}function Gq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;s=i;i=i+80|0;l=s+24|0;r=s;q=s+8|0;g=c[b+100>>2]|0;p=c[b+528>>2]|0;if(!p){c[r>>2]=6;e=6;i=s;return e|0}j=p+4|0;b=c[j>>2]|0;c[l>>2]=b;h=l+4|0;c[h>>2]=c[p>>2];if(!b)k=0;else{f=0;do{c[l+(f*12|0)+8>>2]=c[p+(f<<2)+8>>2];o=c[p+(f*12|0)+92>>2]|0;c[l+(f*12|0)+12>>2]=c[o>>2];c[l+(f*12|0)+16>>2]=c[o+((d[p+(f*12|0)+88>>0]|0)+-1<<2)>>2];f=f+1|0}while((f|0)!=(b|0));k=c[l>>2]|0}c[r>>2]=0;o=ch(g,(k*24|0)+20|0,r)|0;b=c[r>>2]|0;if(b){e=b;i=s;return e|0}c[o>>2]=k;c[o+4>>2]=c[h>>2];c[o+8>>2]=-1;g=o+20|0;n=o+12|0;c[n>>2]=g;c[o+16>>2]=0;if(!k)m=0;else{f=0;do{b=c[l+(f*12|0)+8>>2]|0;c[g+(f*24|0)>>2]=b;h=c[l+(f*12|0)+12>>2]<<16;c[g+(f*24|0)+4>>2]=h;m=c[l+(f*12|0)+16>>2]<<16;c[g+(f*24|0)+12>>2]=m;c[g+(f*24|0)+8>>2]=(m+h|0)/2|0;c[g+(f*24|0)+20>>2]=-1;h=g+(f*24|0)+16|0;c[h>>2]=-1;do if(qga(b,92520)|0){if(!(qga(b,93496)|0)){c[h>>2]=2003072104;break}if(!(qga(b,93504)|0))c[h>>2]=1869640570}else c[h>>2]=2003265652;while(0);f=f+1|0}while(f>>>0>>0);m=k}b=c[j>>2]|0;a:do if((c[p>>2]|0)==(1<>2]|0;if((b|0)==3){j=c[f+28>>2]|0;l=c[f+20>>2]|0;k=c[f+12>>2]|0;b=l+j+k+(c[f+4>>2]|0)|0;c[q>>2]=b;j=(c[f+24>>2]|0)+j|0;c[q+4>>2]=j+k+(c[f+8>>2]|0);c[q+8>>2]=j+l+(c[f+16>>2]|0)}else if((b|0)==1){b=c[f+4>>2]|0;c[q>>2]=b}else if((b|0)==2){l=c[f+12>>2]|0;b=(c[f+4>>2]|0)+l|0;c[q>>2]=b;c[q+4>>2]=(c[f+8>>2]|0)+l}else{w=c[f+60>>2]|0;h=c[f+52>>2]|0;k=c[f+44>>2]|0;l=c[f+36>>2]|0;v=c[f+28>>2]|0;t=c[f+20>>2]|0;x=c[f+12>>2]|0;b=h+w+k+l+v+t+x+(c[f+4>>2]|0)|0;c[q>>2]=b;w=(c[f+56>>2]|0)+w|0;j=c[f+40>>2]|0;u=c[f+24>>2]|0;c[q+4>>2]=w+k+j+v+u+x+(c[f+8>>2]|0);h=w+h+(c[f+48>>2]|0)|0;c[q+8>>2]=h+v+u+t+(c[f+16>>2]|0);c[q+12>>2]=h+k+j+l+(c[f+32>>2]|0)}if(m){f=0;while(1){l=c[p+(f*12|0)+96>>2]|0;b:do if((c[l>>2]|0)<(b|0)){x=a[p+(f*12|0)+88>>0]|0;j=x&255;c:do if((x&255)>1){k=1;while(1){h=c[l+(k<<2)>>2]|0;if((h|0)>=(b|0)){g=k;break}k=k+1|0;if((k|0)>=(j|0))break c}w=g+-1|0;v=c[p+(f*12|0)+92>>2]|0;x=c[v+(w<<2)>>2]|0;g=(c[v+(g<<2)>>2]|0)-x|0;w=c[l+(w<<2)>>2]|0;b=(ea(Xg(b-w|0,h-w|0)|0,g)|0)+(x<<16)|0;g=c[n>>2]|0;break b}while(0);b=c[(c[p+(f*12|0)+92>>2]|0)+(j+-1<<2)>>2]<<16}else b=c[c[p+(f*12|0)+92>>2]>>2]<<16;while(0);c[g+(f*24|0)+8>>2]=b;f=f+1|0;if(f>>>0>=m>>>0)break a;b=c[q+(f<<2)>>2]|0}}}while(0);c[e>>2]=o;x=c[r>>2]|0;i=s;return x|0}function Hq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g;if(b>>>0<5&(b|0)!=0)e=0;else{b=6;i=g;return b|0}do{c[f+(e<<2)>>2]=(Rg(c[d+(e<<2)>>2]|0)|0)>>16;e=e+1|0}while((e|0)!=(b|0));b=Eq(a,b,f)|0;i=g;return b|0}function Iq(a){a=a|0;var b=0,d=0;d=i;b=ci(c[a+4>>2]|0,94952)|0;if(!b){a=11;i=d;return a|0}c[a+28>>2]=c[b>>2];a=0;i=d;return a|0}function Jq(a){a=a|0;return}function Kq(a,b){a=a|0;b=b|0;a=i;b=nh(94784,b)|0;i=a;return b|0}function Lq(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=i;i=i+384|0;z=M+372|0;A=M;C=M+16|0;B=M+320|0;G=M+328|0;L=M+360|0;I=e+132|0;H=e+500|0;c[H>>2]=0;c[e>>2]=1;F=e+96|0;J=ei(c[F>>2]|0,93624)|0;c[e+484>>2]=J;K=di(c[(c[F>>2]|0)+4>>2]|0,93648)|0;c[e+488>>2]=K;if(!K){e=11;i=M;return e|0}m=c[e+100>>2]|0;Cga(C|0,0,304)|0;E=e+492|0;c[E>>2]=ch(m,12,B)|0;a:do if(!(c[B>>2]|0)){n=c[e+104>>2]|0;de[c[c[K+4>>2]>>2]&63](C,0,0,m);c[C+72>>2]=n;q=C+80|0;c[q>>2]=0;p=C+76|0;c[p>>2]=0;o=C+84|0;a[o>>0]=0;d=Hh(n,0)|0;c[z>>2]=d;do if(!d){d=yi(n,17)|0;c[z>>2]=d;if(!d){if(pga(c[n+32>>2]|0,94760,17)|0){c[z>>2]=2;Bi(n);d=2;D=15;break}Bi(n);d=Hh(n,0)|0;c[z>>2]=d;if(!d){d=c[n+4>>2]|0;if(!(c[n+20>>2]|0)){c[p>>2]=(c[n>>2]|0)+(c[n+8>>2]|0);c[q>>2]=d;a[o>>0]=1;d=qi(n,d)|0;c[z>>2]=d;if(d){D=15;break}d=c[q>>2]|0}else{l=ch(m,d,z)|0;c[p>>2]=l;j=c[z>>2]|0;if(j){d=j;D=15;break}l=pi(n,l,d)|0;c[z>>2]=l;if(l){d=l;D=15;break}c[q>>2]=d}l=c[p>>2]|0;c[C+4>>2]=l;c[C>>2]=l;j=C+8|0;c[j>>2]=l+d;c[B>>2]=0;y=C}else D=15}else D=15}else D=15;while(0);if((D|0)==15){if(a[o>>0]|0){c[B>>2]=d;break}eh(m,c[p>>2]|0);c[p>>2]=0;y=c[z>>2]|0;c[B>>2]=y;if(y)break;y=C;j=C+8|0;l=0;d=c[q>>2]|0}c[y>>2]=l;x=l+d|0;c[j>>2]=x;n=C+12|0;c[n>>2]=0;m=C+28|0;Id[c[m>>2]&511](C);d=c[y>>2]|0;b:do if(d>>>0>>0){o=C+32|0;r=C+56|0;s=A+8|0;t=C+68|0;u=C+64|0;v=e+164|0;w=e+460|0;c:while(1){l=a[d>>0]|0;if(l<<24>>24==70&(d+25|0)>>>0>>0?(rga(d,93672,13)|0)==0:0){Id[c[o>>2]&511](C);Id[c[m>>2]&511](C);l=c[y>>2]|0;d:do if(l>>>0>>0){d=l;while(1){if((a[d>>0]|0)==107&(d+5|0)>>>0>>0?(rga(d,93688,5)|0)==0:0)break;Id[c[o>>2]&511](C);d=c[n>>2]|0;if(d){D=51;break c}Id[c[m>>2]&511](C);d=c[y>>2]|0;if(d>>>0>=x>>>0){d=l;break d}}Id[c[o>>2]&511](C);Jd[c[r>>2]&255](C,A);d=(c[s>>2]|0)==3?c[y>>2]|0:l}else d=l;while(0);c[y>>2]=d}else D=30;e:do if((D|0)==30){D=0;if(!(l<<24>>24==47&(d+2|0)>>>0>>0)){Id[c[o>>2]&511](C);d=c[n>>2]|0;if(!d)break;else{D=52;break c}}q=d+1|0;c[y>>2]=q;Id[c[o>>2]&511](C);d=c[n>>2]|0;if(d){D=52;break c}j=c[y>>2]|0;l=j-q|0;if((l+-1|0)>>>0<21&j>>>0>>0){d=0;while(1){p=93696+(d*36|0)|0;j=c[p>>2]|0;if((((j|0)!=0?(a[q>>0]|0)==(a[j>>0]|0):0)?(l|0)==(Dga(j|0)|0):0)?(pga(q,j,l)|0)==0:0)break;d=d+1|0;if((d|0)>=20)break e}l=c[93704+(d*36|0)>>2]|0;do if((d+-15|0)>>>0>=4){d=c[93700+(d*36|0)>>2]|0;if((d|0)==3)c[z>>2]=I;else if((d|0)==2)c[z>>2]=v;else if((d|0)==5)c[z>>2]=w;else c[z>>2]=I;if((l+-9|0)>>>0<2){d=Xd[c[t>>2]&127](C,p,z,0,0)|0;break}else{d=Xd[c[u>>2]&127](C,p,z,0,0)|0;break}}else{Jd[c[93696+(d*36|0)+12>>2]&255](e,C);d=c[n>>2]|0}while(0);c[n>>2]=d;if(d){D=51;break c}}}while(0);Id[c[m>>2]&511](C);d=c[y>>2]|0;if(d>>>0>=x>>>0)break b}if((D|0)==51){c[B>>2]=d;break a}else if((D|0)==52){c[B>>2]=d;break a}}while(0);A=c[n>>2]|0;c[B>>2]=A;if(!A){if((a[e+433>>0]|0)!=42){c[B>>2]=2;break}s=c[C+144>>2]|0;c[e+416>>2]=s;d=C+212|0;if(!(c[d>>2]|0))c[B>>2]=3;c[d>>2]=0;c[e+396>>2]=c[C+200>>2];c[e+424>>2]=c[C+224>>2];c[e+428>>2]=c[C+228>>2];z=C+148|0;c[e+400>>2]=c[z>>2];A=C+172|0;p=e+420|0;c[p>>2]=c[A>>2];c[z>>2]=0;c[A>>2]=0;if((c[e+368>>2]|0)==1){t=c[C+108>>2]|0;f:do if((t|0)>0){u=e+384|0;v=e+388|0;q=C+116|0;if((s|0)>0){r=0;l=0;d=0}else{d=0;while(1){b[(c[u>>2]|0)+(d<<1)>>1]=0;c[(c[v>>2]|0)+(d<<2)>>2]=93664;d=d+1|0;if((d|0)==(t|0)){l=0;d=0;break f}}}do{b[(c[u>>2]|0)+(r<<1)>>1]=0;c[(c[v>>2]|0)+(r<<2)>>2]=93664;m=c[(c[q>>2]|0)+(r<<2)>>2]|0;g:do if(m){o=c[p>>2]|0;j=0;while(1){n=c[o+(j<<2)>>2]|0;if(!(qga(m,n)|0))break;j=j+1|0;if((j|0)>=(s|0))break g}b[(c[u>>2]|0)+(r<<1)>>1]=j;c[(c[v>>2]|0)+(r<<2)>>2]=n;if(qga(93664,n)|0){l=(r|0)<(l|0)?l:r+1|0;d=(r|0)<(d|0)?r:d}}while(0);r=r+1|0}while((r|0)!=(t|0))}else{l=0;d=0}while(0);c[e+376>>2]=d;c[e+380>>2]=l;c[e+372>>2]=c[C+88>>2]}}}while(0);d=c[C+140>>2]|0;if(d)Id[d&511](C+92|0);d=c[C+248>>2]|0;if(d)Id[d&511](C+200|0);d=c[C+196>>2]|0;if(d)Id[d&511](C+148|0);d=c[C+300>>2]|0;if(d)Id[d&511](C+252|0);if(!(a[C+84>>0]|0)){A=C+76|0;eh(c[C+16>>2]|0,c[A>>2]|0);c[A>>2]=0}Id[c[C+24>>2]&511](C);d=c[B>>2]|0;if((d|0)!=0|(f|0)<0){e=d;i=M;return e|0}if((f|0)>0){e=6;i=M;return e|0}c[e+16>>2]=c[e+416>>2];c[e+36>>2]=0;c[e+4>>2]=0;m=e+8|0;c[m>>2]=(a[e+156>>0]|0)==0?2577:2581;l=c[e+144>>2]|0;j=e+20|0;c[j>>2]=l;n=e+24|0;c[n>>2]=93656;h:do if(!l){d=c[e+364>>2]|0;if(d)c[j>>2]=d}else{d=c[e+140>>2]|0;if((d|0)!=0?(k=a[d>>0]|0,k<<24>>24!=0):0){i:while(1){while(1){j=a[l>>0]|0;if(k<<24>>24==j<<24>>24){D=87;break}if(k<<24>>24==45|k<<24>>24==32)break;if(!(j<<24>>24))break i;else if(!(j<<24>>24==45|j<<24>>24==32))break h;if(!(k<<24>>24))break h;else l=l+1|0}if((D|0)==87){D=0;l=l+1|0}d=d+1|0;k=a[d>>0]|0;if(!(k<<24>>24))break h}c[n>>2]=d}}while(0);c[e+28>>2]=0;c[e+32>>2]=0;c[G>>2]=1;c[G+4>>2]=c[E>>2];c[G+8>>2]=c[e+496>>2];if(g){c[G>>2]=17;c[G+24>>2]=g;c[G+28>>2]=h}d=Fh(c[(c[F>>2]|0)+4>>2]|0,G,0,H)|0;if(d){e=d;i=M;return e|0}Lh(c[(c[H>>2]|0)+88>>2]|0)|0;j=e+52|0;k=c[H>>2]|0;d=k+52|0;c[j+0>>2]=c[d+0>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];b[e+68>>1]=b[k+68>>1]|0;b[e+70>>1]=b[k+70>>1]|0;b[e+72>>1]=b[k+72>>1]|0;b[e+74>>1]=b[k+74>>1]|0;b[e+76>>1]=b[k+76>>1]|0;b[e+78>>1]=b[k+78>>1]|0;b[e+80>>1]=b[I+26>>1]|0;b[e+82>>1]=b[e+160>>1]|0;j=e+12|0;d=(c[e+152>>2]|0)!=0&1;c[j>>2]=d;if(c[k+12>>2]&2)c[j>>2]=d|2;if(c[k+8>>2]&32)c[m>>2]=c[m>>2]|32;if(!J){e=0;i=M;return e|0}d=c[K+20>>2]|0;c[L>>2]=e;j=L+8|0;b[j>>1]=3;l=L+10|0;b[l>>1]=1;m=L+4|0;c[m>>2]=1970170211;n=d+12|0;k=Wh(c[n>>2]|0,0,L,0)|0;if(!((k|0)==0|(k&255|0)==163)){e=k;i=M;return e|0}b[j>>1]=7;j=c[e+368>>2]|0;if((j|0)==3){c[m>>2]=1818326065;b[l>>1]=3;d=n}else if((j|0)==4){c[m>>2]=1094992453;b[l>>1]=1;d=d+4|0}else if((j|0)==1){c[m>>2]=1094992451;b[l>>1]=2;d=d+8|0}else if((j|0)==2){c[m>>2]=1094995778;b[l>>1]=0}else{e=0;i=M;return e|0}d=c[d>>2]|0;if(!d){e=0;i=M;return e|0}e=Wh(d,0,L,0)|0;i=M;return e|0}function Mq(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;if(!a){i=f;return}b=a+132|0;d=c[a+100>>2]|0;e=c[a+500>>2]|0;if(e)Jh(e)|0;eh(d,c[b>>2]|0);c[b>>2]=0;e=a+136|0;eh(d,c[e>>2]|0);c[e>>2]=0;e=a+140|0;eh(d,c[e>>2]|0);c[e>>2]=0;e=a+144|0;eh(d,c[e>>2]|0);c[e>>2]=0;e=a+148|0;eh(d,c[e>>2]|0);c[e>>2]=0;e=a+428|0;eh(d,c[e>>2]|0);c[e>>2]=0;e=a+424|0;eh(d,c[e>>2]|0);c[e>>2]=0;e=a+420|0;eh(d,c[e>>2]|0);c[e>>2]=0;e=a+396|0;eh(d,c[e>>2]|0);c[e>>2]=0;e=a+400|0;eh(d,c[e>>2]|0);c[e>>2]=0;e=a+372|0;b=e+12|0;eh(d,c[b>>2]|0);c[b>>2]=0;e=e+16|0;eh(d,c[e>>2]|0);c[e>>2]=0;e=a+364|0;eh(d,c[e>>2]|0);c[e>>2]=0;e=a+492|0;eh(d,c[e>>2]|0);c[e>>2]=0;e=a+536|0;b=e+20|0;eh(d,c[b>>2]|0);c[b>>2]=0;c[e+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;i=f;return}function Nq(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d;b=Ih(c[(c[a>>2]|0)+500>>2]|0,e)|0;e=c[e>>2]|0;c[a+44>>2]=e;Zh(e)|0;i=d;return b|0}function Oq(a){a=a|0;var b=0,d=0;d=i;b=a+44|0;if(!(Kh((c[(c[a>>2]|0)+500>>2]|0)+108|0,c[b>>2]|0)|0)){i=d;return}Lh(c[b>>2]|0)|0;c[b>>2]=0;i=d;return}function Pq(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;d=f;e=c[a+4>>2]|0;b=c[e+500>>2]|0;if(!(c[e+84>>2]|0)){e=b+84|0;b=0}else{e=d;b=xh(b,d)|0}c[a+160>>2]=c[e>>2];i=f;return b|0}function Qq(a){a=a|0;var b=0;b=i;yh(c[a+160>>2]|0);i=b;return}function Rq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;g=c[(c[(c[a+4>>2]|0)+96>>2]|0)+28>>2]|0;k=a+160|0;h=c[k>>2]|0;uh(h);c[h+152>>2]=0;f=h+72|0;h=h+24|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));h=f+0|0;j=h+72|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));f=ce[c[g+72>>2]&255](c[k>>2]|0,c[b+44>>2]|0,d,e|8)|0;if(f){i=l;return f|0}b=a+24|0;j=c[k>>2]|0;h=j+24|0;c[b+0>>2]=c[h+0>>2];c[b+4>>2]=c[h+4>>2];c[b+8>>2]=c[h+8>>2];c[b+12>>2]=c[h+12>>2];c[b+16>>2]=c[h+16>>2];c[b+20>>2]=c[h+20>>2];c[b+24>>2]=c[h+24>>2];c[b+28>>2]=c[h+28>>2];c[a+56>>2]=c[j+56>>2];c[a+60>>2]=c[j+60>>2];c[a+72>>2]=c[j+72>>2];b=a+108|0;h=j+108|0;c[b+0>>2]=c[h+0>>2];c[b+4>>2]=c[h+4>>2];c[b+8>>2]=c[h+8>>2];c[b+12>>2]=c[h+12>>2];c[b+16>>2]=c[h+16>>2];b=a+76|0;h=j+76|0;c[b+0>>2]=c[h+0>>2];c[b+4>>2]=c[h+4>>2];c[b+8>>2]=c[h+8>>2];c[b+12>>2]=c[h+12>>2];c[b+16>>2]=c[h+16>>2];c[b+20>>2]=c[h+20>>2];c[a+100>>2]=c[j+100>>2];c[a+104>>2]=c[j+104>>2];c[a+128>>2]=c[j+128>>2];c[a+132>>2]=c[j+132>>2];c[a+136>>2]=c[j+136>>2];c[a+140>>2]=c[j+140>>2];i=l;return f|0}function Sq(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;d=c[a>>2]|0;Zh(c[a+44>>2]|0)|0;d=d+500|0;b=Rh(c[d>>2]|0,b)|0;if(b){i=e;return b|0}a=a+12|0;d=(c[(c[d>>2]|0)+88>>2]|0)+12|0;c[a+0>>2]=c[d+0>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];i=e;return b|0}function Tq(a,b){a=a|0;b=b|0;var d=0,e=0;e=i;d=c[a>>2]|0;Zh(c[a+44>>2]|0)|0;d=d+500|0;b=Qh(c[d>>2]|0,b)|0;if(b){i=e;return b|0}a=a+12|0;d=(c[(c[d>>2]|0)+88>>2]|0)+12|0;c[a+0>>2]=c[d+0>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];i=e;return b|0}function Uq(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+32|0;j=k;ce[c[d+52>>2]&255](d,6,j,3)|0;e=j+12|0;d=c[e>>2]|0;d=(d|0)<0?0-d|0:d;b[a+68>>1]=Xg(1e3,d)|0;if((d|0)==65536){f=j+8|0;g=j+16|0;h=j+4|0;d=c[e>>2]|0;e=c[j+20>>2]|0}else{c[j>>2]=Xg(c[j>>2]|0,d)|0;h=j+4|0;c[h>>2]=Xg(c[h>>2]|0,d)|0;f=j+8|0;c[f>>2]=Xg(c[f>>2]|0,d)|0;g=j+16|0;c[g>>2]=Xg(c[g>>2]|0,d)|0;m=j+20|0;l=Xg(c[m>>2]|0,d)|0;c[m>>2]=l;c[e>>2]=65536;d=65536;e=l}c[a+436>>2]=c[j>>2];c[a+444>>2]=c[h>>2];c[a+440>>2]=c[f>>2];c[a+448>>2]=d;c[a+452>>2]=c[g>>2]>>16;c[a+456>>2]=e>>16;i=k;return}function Vq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+16|0;h=t;q=c[d+8>>2]|0;g=c[b+488>>2]|0;s=d+28|0;Id[c[s>>2]&511](d);k=c[d>>2]|0;if(k>>>0>=q>>>0){c[d+12>>2]=3;i=t;return}r=a[k>>0]|0;e=r<<24>>24==91;if(!(((r&255)+-48|0)>>>0<10|e)){if((k+17|0)>>>0>>0?(rga(k,94696,16)|0)==0:0){c[b+368>>2]=2;i=t;return}if((k+15|0)>>>0>>0?(rga(k,94720,14)|0)==0:0){c[b+368>>2]=4;i=t;return}if((k+18|0)>>>0>>0?(rga(k,94736,17)|0)==0:0){c[b+368>>2]=3;i=t;return}c[d+12>>2]=3;i=t;return}r=d+92|0;f=c[d+16>>2]|0;if(e){c[d>>2]=k+1;p=256;j=1}else{p=Ld[c[d+36>>2]&511](d)|0;j=0}Id[c[s>>2]&511](d);if((c[d>>2]|0)>>>0>=q>>>0){i=t;return}c[b+372>>2]=p;c[d+88>>2]=p;c[b+384>>2]=hh(f,2,0,p,0,h)|0;e=c[h>>2]|0;if(!e){c[b+388>>2]=hh(f,4,0,p,0,h)|0;e=c[h>>2]|0;if(!e){e=Od[c[c[g>>2]>>2]&255](r,p,f)|0;c[h>>2]=e;if(!e){if(p){e=d+136|0;f=0;do{ce[c[e>>2]&255](r,f,93664,8)|0;f=f+1|0}while((f|0)!=(p|0))}Id[c[s>>2]&511](d);e=c[d>>2]|0;a:do if(e>>>0>>0){k=j<<24>>24==0;j=d+32|0;l=d+12|0;m=d+36|0;n=d+136|0;o=d+116|0;h=0;while(1){f=a[e>>0]|0;if(f<<24>>24==100){g=e+3|0;if(g>>>0>>0){if((a[e+1>>0]|0)==101?(a[e+2>>0]|0)==102:0)switch(a[g>>0]|0){case 0:case 12:case 10:case 13:case 9:case 32:{e=g;break a}default:{}}if(f<<24>>24==93){f=23;break}}}else if(f<<24>>24==93){f=23;break}if(((f&255)+-48|0)>>>0>9&k){Id[c[j>>2]&511](d);if(!(c[l>>2]|0))f=e;else{f=44;break}}else{if(k){g=Ld[c[m>>2]&511](d)|0;Id[c[s>>2]&511](d);e=c[d>>2]|0;f=a[e>>0]|0}else g=h;if(f<<24>>24==47&(e+2|0)>>>0>>0&h>>>0

>>0){e=e+1|0;c[d>>2]=e;Id[c[j>>2]&511](d);if(c[l>>2]|0){f=44;break}f=(c[d>>2]|0)-e|0;u=ce[c[n>>2]&255](r,g,e,f+1|0)|0;c[l>>2]=u;if(u){f=44;break}a[(c[(c[o>>2]|0)+(g<<2)>>2]|0)+f>>0]=0;f=e;h=h+1|0}else f=e}Id[c[s>>2]&511](d);e=c[d>>2]|0;if(e>>>0>=q>>>0){e=f;break a}}if((f|0)==23){e=e+1|0;break}else if((f|0)==44){i=t;return}}else e=k;while(0);c[b+368>>2]=1;c[d>>2]=e;i=t;return}}}c[d+12>>2]=e;i=t;return}function Wq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;A=d+200|0;z=d+148|0;x=d+252|0;m=c[d+16>>2]|0;l=c[b+488>>2]|0;s=c[d+8>>2]|0;t=d+28|0;Id[c[t>>2]&511](d);b=c[d>>2]|0;a:do if(b>>>0>>0){b=a[b>>0]|0;b:do if(((b&255)+-48|0)>>>0<10){c[d+144>>2]=Ld[c[d+36>>2]&511](d)|0;if(!(c[d+12>>2]|0)){j=c[d>>2]|0;break}else{i=B;return}}else{if(b<<24>>24!=60){b=3;break a}e=d+32|0;Id[c[e>>2]&511](d);f=d+12|0;if(c[f>>2]|0){i=B;return}Id[c[t>>2]&511](d);h=c[d>>2]|0;if(h>>>0>>0){b=h;g=0;while(1){b=a[b>>0]|0;if(b<<24>>24==47)g=g+1|0;else if(b<<24>>24==62){k=g;w=10;break}Id[c[e>>2]&511](d);if(c[f>>2]|0){w=46;break}Id[c[t>>2]&511](d);b=c[d>>2]|0;if(b>>>0>=s>>>0){j=b;break b}}if((w|0)==10){c[d+144>>2]=k;c[d>>2]=h;j=h;break}else if((w|0)==46){i=B;return}}else j=h}while(0);if(j>>>0>>0){n=d+144|0;b=Od[c[c[l>>2]>>2]&255](A,c[n>>2]|0,m)|0;if(!b){b=Od[c[c[l>>2]>>2]&255](z,c[n>>2]|0,m)|0;if(!b){b=Od[c[c[l>>2]>>2]&255](x,4,m)|0;if(!b){j=d+32|0;h=d+12|0;q=d+192|0;o=d+172|0;k=d+36|0;r=d+244|0;p=d+224|0;m=0;l=0;f=0;c:while(1){do{Id[c[t>>2]&511](d);b=c[d>>2]|0;if(b>>>0>=s>>>0){u=m;v=l;y=f;break c}g=a[b>>0]|0;if(g<<24>>24==101){e=b+3|0;if(e>>>0>>0){if((a[b+1>>0]|0)==110?(a[b+2>>0]|0)==100:0)switch(a[e>>0]|0){case 0:case 12:case 10:case 13:case 9:case 32:{u=m;v=l;y=f;break c}default:{}}if(g<<24>>24==62){u=m;v=l;y=f;break c}}}else if(g<<24>>24==62){u=m;v=l;y=f;break c}Id[c[j>>2]&511](d);if(c[h>>2]|0){w=46;break c}}while((a[b>>0]|0)!=47);g=b+1|0;if(g>>>0>=s>>>0){b=3;break a}e=(c[d>>2]|0)-g|0;b=ce[c[q>>2]&255](z,m,g,e+1|0)|0;if(b)break a;a[(c[(c[o>>2]|0)+(m<<2)>>2]|0)+e>>0]=0;if((a[g>>0]|0)==46){e=(qga(93664,c[(c[o>>2]|0)+(m<<2)>>2]|0)|0)==0;l=e?1:l;f=e?m:f}Id[c[t>>2]&511](d);g=c[d>>2]|0;Ld[c[k>>2]&511](d)|0;b=c[d>>2]|0;if(b>>>0>=s>>>0){b=3;break a}e=b-g|0;b=ce[c[r>>2]&255](A,m,g,e+1|0)|0;if(b)break a;a[(c[(c[p>>2]|0)+(m<<2)>>2]|0)+e>>0]=0;b=m+1|0;if(b>>>0<(c[n>>2]|0)>>>0)m=b;else{u=b;v=l;y=f;break}}if((w|0)==46){i=B;return}c[n>>2]=u;if(v<<24>>24){b=c[c[o>>2]>>2]|0;if(!(qga(93664,b)|0)){i=B;return}g=d+296|0;f=d+176|0;b=ce[c[g>>2]&255](x,0,b,c[c[f>>2]>>2]|0)|0;if(!b){e=d+228|0;b=ce[c[g>>2]&255](x,1,c[c[p>>2]>>2]|0,c[c[e>>2]>>2]|0)|0;if(!b){b=ce[c[g>>2]&255](x,2,c[(c[o>>2]|0)+(y<<2)>>2]|0,c[(c[f>>2]|0)+(y<<2)>>2]|0)|0;if(!b){b=ce[c[g>>2]&255](x,3,c[(c[p>>2]|0)+(y<<2)>>2]|0,c[(c[e>>2]|0)+(y<<2)>>2]|0)|0;if(!b){e=d+276|0;f=d+280|0;b=ce[c[q>>2]&255](z,y,c[c[e>>2]>>2]|0,c[c[f>>2]>>2]|0)|0;if(!b){b=ce[c[r>>2]&255](A,y,c[(c[e>>2]|0)+4>>2]|0,c[(c[f>>2]|0)+4>>2]|0)|0;if(!b){b=ce[c[q>>2]&255](z,0,c[(c[e>>2]|0)+8>>2]|0,c[(c[f>>2]|0)+8>>2]|0)|0;if(!b){b=ce[c[r>>2]&255](A,0,c[(c[e>>2]|0)+12>>2]|0,c[(c[f>>2]|0)+12>>2]|0)|0;if(!b){i=B;return}}}}}}}}}else b=3}}}}else b=3}else b=3;while(0);c[d+12>>2]=b;i=B;return}function Xq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+16|0;C=E+4|0;A=E;D=c[e+16>>2]|0;y=c[e+8>>2]|0;z=e+28|0;Id[c[z>>2]&511](e);f=c[e>>2]|0;a:do if(f>>>0>>0?(c[e>>2]=f+1,(a[f>>0]|0)==91):0){Id[c[z>>2]&511](e);g=c[e>>2]|0;b:do if(g>>>0>>0){t=e+36|0;u=e+32|0;v=e+12|0;w=y;x=b+492|0;r=b+496|0;s=e+44|0;b=0;n=0;p=0;m=0;k=0;f=0;h=0;l=0;c:while(1){j=a[g>>0]|0;if(j<<24>>24==93){B=7;break}else if(j<<24>>24!=60)if(((j&255)+-48|0)>>>0<10){if(b<<24>>24){B=13;break}g=Ld[c[t>>2]&511](e)|0;if((g|0)<0){B=15;break}Id[c[u>>2]&511](e);if(c[v>>2]|0){B=45;break}h=c[e>>2]|0;f=h+1|0;if((w-h|0)<(g|0)){B=18;break}c[e>>2]=h+(g+1);b=0;h=g}else{j=m;B=20}else{Id[c[u>>2]&511](e);if(c[v>>2]|0)break a;j=((c[e>>2]|0)+~g|0)/2|0;f=hh(D,1,m,j,f,C)|0;h=c[C>>2]|0;if(h){g=h;B=42;break a}c[e>>2]=g;Xd[c[s>>2]&127](e,f,j,A,1)|0;b=1;h=c[A>>2]|0;B=20}if((B|0)==20){B=0;if(!f){f=b;B=21;break}else m=j}if(!(h&1))q=h;else{q=h+-1|0;q=(a[f+q>>0]|0)==0?q:h}if(!q){B=26;break}if((q|0)>0){o=0;h=p;g=l;while(1){do if(!k)if(n>>>0>=12){g=c[x>>2]|0;h=(d[g+4>>0]<<4)+(d[g+5>>0]|0)|0;j=h<<4|12;c[x>>2]=hh(D,1,12,j,g,C)|0;g=c[C>>2]|0;if(!g){g=j;B=31;break}else{B=42;break a}}else{a[(c[x>>2]|0)+n>>0]=a[f+o>>0]|0;j=n+1|0;k=0;break}else if((k|0)==1)B=31;else if((k|0)==2)B=36;else j=n;while(0);do if((B|0)==31){B=0;if(n>>>0>>0){a[(c[x>>2]|0)+n>>0]=a[f+o>>0]|0;j=n+1|0;k=1;break}k=c[x>>2]|0;if((h|0)>0){j=0;do{B=j<<4|12;g=((d[k+(B+13)>>0]<<16|d[k+(B+12)>>0]<<24|d[k+(B+14)>>0]<<8|d[k+(B+15)>>0])+3&-4)+g|0;j=j+1|0}while((j|0)!=(h|0));j=g}else j=g;c[r>>2]=j;c[x>>2]=hh(D,1,h<<4|12,j+1|0,k,C)|0;g=c[C>>2]|0;if(!g){g=j;B=36}else{B=42;break a}}while(0);if((B|0)==36){B=0;if(n>>>0>=g>>>0){B=37;break c}a[(c[x>>2]|0)+n>>0]=a[f+o>>0]|0;j=n+1|0;k=2}o=o+1|0;if((o|0)>=(q|0)){l=g;break}else n=j}}else{j=n;h=p}Id[c[z>>2]&511](e);g=c[e>>2]|0;if(g>>>0>=y>>>0)break b;else{n=j;p=h;h=q}}if((B|0)==7){c[e>>2]=g+1;break a}else if((B|0)==13){c[C>>2]=3;g=3;B=42;break a}else if((B|0)==15){c[C>>2]=3;g=3;b=0;B=42;break a}else if((B|0)==18){c[C>>2]=3;g=3;b=0;B=42;break a}else if((B|0)==21){c[C>>2]=3;g=3;b=f;f=0;B=42;break a}else if((B|0)==26){c[C>>2]=3;g=3;B=42;break a}else if((B|0)==37){c[C>>2]=3;g=3;B=42;break a}else if((B|0)==45){i=E;return}}else{b=0;f=0}while(0);c[C>>2]=3;g=3;B=42}else B=3;while(0);if((B|0)==3){c[C>>2]=3;g=3;b=0;f=0;B=42}if((B|0)==42)c[e+12>>2]=g;if(!(b<<24>>24)){i=E;return}eh(D,f);i=E;return}function Yq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;Vi(d,c[(c[a+420>>2]|0)+(b<<2)>>2]|0,e)|0;i=f;return 0}function Zq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;f=c[b+416>>2]|0;if((f|0)<=0){b=0;i=l;return b|0}g=c[b+420>>2]|0;h=a[d>>0]|0;e=0;while(1){j=c[g+(e<<2)>>2]|0;if(h<<24>>24==(a[j>>0]|0)?(qga(d,j)|0)==0:0)break;e=e+1|0;if((e|0)>=(f|0)){e=0;k=7;break}}if((k|0)==7){i=l;return e|0}b=jga(c[(c[b+424>>2]|0)+(e<<2)>>2]|0)|0;i=l;return b|0}function _q(a){a=a|0;return c[a+364>>2]|0}function $q(a,b){a=a|0;b=b|0;a=a+132|0;c[b+0>>2]=c[a+0>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];c[b+16>>2]=c[a+16>>2];c[b+20>>2]=c[a+20>>2];c[b+24>>2]=c[a+24>>2];c[b+28>>2]=c[a+28>>2];return 0}function ar(a,c){a=a|0;c=c|0;b[c>>1]=b[a+164>>1]|0;return 0}function br(a){a=a|0;return 1}function cr(a,b){a=a|0;b=b|0;var c=0;c=i;Aga(b|0,a+168|0,196)|0;i=c;return 0}function dr(a,b){a=a|0;b=b|0;a=i;b=nh(95520,b)|0;i=a;return b|0}function er(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;O=i;i=i+176|0;G=O+152|0;h=O+156|0;j=O+160|0;k=O+132|0;m=O+112|0;o=O+96|0;E=O+80|0;D=O+64|0;A=O+40|0;B=O+32|0;C=O+24|0;z=O+8|0;N=O;I=O+48|0;K=f+100|0;J=c[K>>2]|0;L=f+104|0;F=c[L>>2]|0;M=f+132|0;c[M>>2]=0;y=Hh(F,0)|0;c[G>>2]=y;a:do if((y|0)==0?(y=Li(F,95312,h)|0,c[G>>2]=y,(y|0)==0):0){c[G>>2]=2;b:do if((b[h>>1]|0)==23117){l=h+2|0;y=Hh(F,e[l>>1]|0)|0;c[G>>2]=y;if(y)break a;y=Li(F,95336,j)|0;c[G>>2]=y;if(y)break a;c[G>>2]=2;h=b[j>>1]|0;c:do if(h<<16>>16==17744){y=Hh(F,e[l>>1]|0)|0;c[G>>2]=y;if(y)break a;y=Li(F,95360,k)|0;c[G>>2]=y;if(y)break a;if(((c[k>>2]|0)==17744?(n=c[k+4>>2]|0,(n&65535)<<16>>16==332):0)?(c[k+8>>2]|0)==17498336:0){c[f>>2]=0;j=k+6|0;d:do if(n>>>0>=65536){h=k+12|0;y=m+8|0;l=0;while(1){x=Li(F,95416,m)|0;c[G>>2]=x;if(x)break a;l=l+1<<16>>16;if((c[h>>2]|0)==(c[y>>2]|0))break;if((l&65535)>=(e[j>>1]|0))break d}w=m+16|0;x=Hh(F,c[w>>2]|0)|0;c[G>>2]=x;if(x)break a;x=Li(F,95448,o)|0;c[G>>2]=x;if(x)break a;x=c[w>>2]|0;m=o+12|0;v=c[m>>2]|0;if(((v>>>16)+(v&65535)|0)<=0){l=0;h=f;break c}o=x+16|0;p=A+4|0;q=E+12|0;r=B+4|0;s=D+12|0;t=C+4|0;u=z+4|0;h=0;v=0;e:while(1){n=Hh(F,o+(h<<3)|0)|0;c[G>>2]=n;if(n)break a;n=Li(F,95480,A)|0;c[G>>2]=n;if(n)break a;h=c[p>>2]|0;if((h|0)>=0){H=45;break}h=h&2147483647;c[p>>2]=h;h=(c[w>>2]|0)+h|0;n=Hh(F,h)|0;c[G>>2]=n;if(n)break a;n=Li(F,95448,E)|0;c[G>>2]=n;if(n)break a;n=c[q>>2]|0;if(((n>>>16)+(n&65535)|0)>0){k=h+16|0;h=0;n=0;do{j=Hh(F,k+(h<<3)|0)|0;c[G>>2]=j;if(j)break a;j=Li(F,95480,B)|0;c[G>>2]=j;if(j)break a;h=c[r>>2]|0;if((h|0)>=0){H=53;break e}h=h&2147483647;c[r>>2]=h;h=(c[w>>2]|0)+h|0;j=Hh(F,h)|0;c[G>>2]=j;if(j)break a;j=Li(F,95448,D)|0;c[G>>2]=j;if(j)break a;j=c[s>>2]|0;if(((j>>>16)+(j&65535)|0)>0){l=h+16|0;h=0;j=0;do{h=Hh(F,l+(h<<3)|0)|0;c[G>>2]=h;if(h)break a;h=Li(F,95480,C)|0;c[G>>2]=h;if(h)break a;if((c[r>>2]|0)<0){H=61;break e}if((c[A>>2]|0)==8){h=Hh(F,(c[t>>2]|0)+x|0)|0;c[G>>2]=h;if(h)break a;h=Li(F,95496,z)|0;c[G>>2]=h;if(h)break a;h=c[f>>2]|0;if((h|0)==(g|0)){h=ch(J,172,G)|0;c[M>>2]=h;if(c[G>>2]|0)break a;c[h>>2]=(c[z>>2]|0)+(c[w>>2]|0)-(c[y>>2]|0);c[h+164>>2]=c[u>>2];h=eu(h,F)|0;c[G>>2]=h;if(h)break b;h=c[f>>2]|0}c[f>>2]=h+1}j=j+1<<16>>16;h=j&65535;P=c[s>>2]|0}while((h|0)<((P>>>16)+(P&65535)|0))}n=n+1<<16>>16;h=n&65535;P=c[q>>2]|0}while((h|0)<((P>>>16)+(P&65535)|0))}v=v+1<<16>>16;h=v&65535;P=c[m>>2]|0;if((h|0)>=((P>>>16)+(P&65535)|0)){l=0;h=f;break c}}if((H|0)==45){c[G>>2]=3;break a}else if((H|0)==53){c[G>>2]=3;break a}else if((H|0)==61){c[G>>2]=3;break a}}while(0);c[G>>2]=3;break a}c[G>>2]=3;break a}else if(h<<16>>16==17742){h=j+2|0;P=Hh(F,(e[h>>1]|0)+(e[l>>1]|0)|0)|0;c[G>>2]=P;if(P)break a;P=yi(F,(e[j+4>>1]|0)-(e[h>>1]|0)|0)|0;c[G>>2]=P;if(P)break a;k=Ei(F)|0;h=Ei(F)|0;f:do if(!(h<<16>>16)){h=0;l=0}else{j=F+32|0;l=h;while(1){h=Ei(F)|0;if(l<<16>>16==-32760)break;c[j>>2]=(c[j>>2]|0)+(((h&65535)*12|0)+4);l=Ei(F)|0;if(!(l<<16>>16)){h=0;l=0;break f}}l=ui(F)|0;l=l+4+(c[j>>2]|0)-(c[F+36>>2]|0)|0}while(0);Bi(F);if(!(h<<16>>16!=0&(l|0)!=0)){c[G>>2]=3;break a}h=h&65535;if((h*118|0)>>>0>(c[F+4>>2]|0)>>>0){c[G>>2]=3;break a}c[f>>2]=h;if((h|0)<=(g|0)){c[G>>2]=6;break a}if((g|0)<0)break a;c[M>>2]=ch(J,172,G)|0;if(c[G>>2]|0)break a;P=Hh(F,l+(g*12|0)|0)|0;c[G>>2]=P;if(P)break b;P=yi(F,12)|0;c[G>>2]=P;if(P)break b;l=k&65535;h=((Ei(F)|0)&65535)<>2]>>2]=h;l=((Ei(F)|0)&65535)<>2]|0)+164>>2]=l;l=F+32|0;c[l>>2]=(c[l>>2]|0)+8;Bi(F);l=eu(c[M>>2]|0,F)|0;c[G>>2]=l;h=f}else{l=2;h=f}while(0);h=c[h>>2]|0;if(!h){c[G>>2]=3;break a}if((h|0)>(g|0))if(!l)break a;else break;else{c[G>>2]=6;break a}}while(0);h=c[K>>2]|0;l=c[L>>2]|0;j=c[M>>2]|0;if(j){k=j+160|0;if(c[k>>2]|0)zi(l,k);P=j+168|0;eh(h,c[P>>2]|0);c[P>>2]=0;eh(h,j);c[M>>2]=0}}while(0);h=c[G>>2]|0;c[N>>2]=h;j=(g|0)<0;if((h|0)==0&j){P=0;i=O;return P|0}do if((h&255|0)==2){h=ch(J,172,N)|0;c[M>>2]=h;l=c[N>>2]|0;if(l){P=l;i=O;return P|0}c[f>>2]=1;c[h>>2]=0;c[h+164>>2]=c[d+4>>2];h=eu(h,d)|0;c[N>>2]=h;if(!h){if((g|0)>0){c[N>>2]=6;h=6;break}if(j){P=0;i=O;return P|0}else H=90}}else if(!h)H=90;while(0);do if((H|0)==90){o=c[M>>2]|0;c[f+4>>2]=g;l=o+100|0;c[f+8>>2]=(b[l>>1]|0)==(b[o+102>>1]|0)?22:18;if(a[o+86>>0]|0){P=f+12|0;c[P>>2]=c[P>>2]|1}if((e[o+90>>1]|0)>799){P=f+12|0;c[P>>2]=c[P>>2]|2}n=hh(J,16,0,1,0,N)|0;c[f+32>>2]=n;h=c[N>>2]|0;if(!h){c[f+28>>2]=1;b[n+2>>1]=b[l>>1]|0;k=o+96|0;b[n>>1]=(e[o+84>>1]|0)+(e[k>>1]|0);P=e[o+74>>1]<<6;h=n+4|0;c[h>>2]=P;m=b[o+78>>1]|0;l=b[o+76>>1]|0;l=l<<16>>16!=0?l&65535:72;j=n+12|0;P=(Ug(P,l,72)|0)+32&-64;c[j>>2]=P;k=e[k>>1]<<6;if((P|0)>(k|0)){c[j>>2]=k;P=Ug(k,72,l)|0;c[h>>2]=P;h=P}else h=c[h>>2]|0;c[n+8>>2]=(Ug(h,m<<16>>16!=0?m&65535:72,72)|0)+32&-64;h=I+4|0;c[h>>2]=0;l=I+8|0;b[l>>1]=0;b[I+10>>1]=0;c[I>>2]=f;if((a[o+92>>0]|0)==77){c[h>>2]=1634889070;b[l>>1]=1}h=Wh(95120,0,I,0)|0;c[N>>2]=h;if(!h){if(c[f+36>>2]|0)c[f+92>>2]=c[c[f+40>>2]>>2];h=a[o+105>>0]|0;l=a[o+104>>0]|0;if((h&255)<(l&255)){c[N>>2]=3;h=3;break}c[f+16>>2]=(h&255)+2-(l&255);m=o+116|0;h=c[m>>2]|0;l=c[o+8>>2]|0;if(l>>>0<=h>>>0){c[N>>2]=3;h=3;break}l=l-h|0;j=ch(J,l+1|0,N)|0;k=o+168|0;c[k>>2]=j;h=c[N>>2]|0;if(!h){Aga(j|0,(c[o+160>>2]|0)+(c[m>>2]|0)|0,l|0)|0;a[(c[k>>2]|0)+l>>0]=0;j=c[k>>2]|0;j=hh(J,1,l,(Dga(j|0)|0)+1|0,j,N)|0;c[k>>2]=j;h=c[N>>2]|0;if(!h){c[f+20>>2]=j;j=f+24|0;c[j>>2]=95080;P=c[f+12>>2]|0;h=(P&1|0)!=0;if(!(P&2)){if(!h){P=0;i=O;return P|0}c[j>>2]=95112;P=0;i=O;return P|0}if(h){c[j>>2]=95088;P=0;i=O;return P|0}else{c[j>>2]=95104;P=0;i=O;return P|0}}}}}}while(0);if(!f){P=h;i=O;return P|0}l=c[K>>2]|0;h=c[L>>2]|0;j=c[M>>2]|0;if(j){k=j+160|0;if(c[k>>2]|0)zi(h,k);P=j+168|0;eh(l,c[P>>2]|0);c[P>>2]=0;eh(l,j);c[M>>2]=0}P=f+32|0;eh(l,c[P>>2]|0);c[P>>2]=0;c[f+28>>2]=0;P=c[N>>2]|0;i=O;return P|0}function fr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;if(!a){i=h;return}b=c[a+100>>2]|0;d=c[a+104>>2]|0;e=a+132|0;f=c[e>>2]|0;if(f){g=f+160|0;if(c[g>>2]|0)zi(d,g);g=f+168|0;eh(b,c[g>>2]|0);c[g>>2]=0;eh(b,f);c[e>>2]=0}g=a+32|0;eh(b,c[g>>2]|0);c[g>>2]=0;c[a+28>>2]=0;i=h;return}function gr(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;s=t;j=c[g>>2]|0;c[s>>2]=0;if(!j){c[s>>2]=6;f=6;i=t;return f|0}r=c[j+132>>2]|0;if((r|0)!=0?(c[j+16>>2]|0)>>>0>h>>>0:0){if(!h)j=d[r+106>>0]|0;else j=h+-1|0;l=(b[r+4>>1]|0)==768;n=c[r+160>>2]|0;j=(ea(l?6:4,j)|0)+(l?148:118)|0;h=(d[n+(j|1)>>0]<<8|d[n+j>>0])<<16>>16;q=f+80|0;c[q>>2]=h;g=n+(j+2)|0;if(l)l=d[n+(j+4)>>0]<<16|d[n+(j+5)>>0]<<24|d[n+(j+3)>>0]<<8|d[g>>0];else l=d[n+(j+3)>>0]<<8|d[g>>0];g=c[r+8>>2]|0;if(l>>>0>=g>>>0){c[s>>2]=3;f=3;i=t;return f|0}k=c[(c[f+4>>2]|0)+100>>2]|0;h=h+7>>3;o=f+84|0;c[o>>2]=h;j=e[r+96>>1]|0;p=f+76|0;c[p>>2]=j;a[f+94>>0]=1;if(((ea(h,j)|0)+l|0)>>>0>g>>>0){c[s>>2]=3;f=3;i=t;return f|0}j=hh(k,j,0,h,0,s)|0;c[f+88>>2]=j;g=c[s>>2]|0;if(g){f=g;i=t;return f|0}if((h|0)>0){m=j;j=n+l|0;while(1){n=c[p>>2]|0;k=j+n|0;if((n|0)>0){g=m;while(1){a[g>>0]=a[j>>0]|0;j=j+1|0;if(j>>>0>>0)g=g+(c[o>>2]|0)|0;else break}}h=h+-1|0;if((h|0)<=0)break;else m=m+1|0}}c[(c[f+156>>2]|0)+4>>2]=1;c[f+100>>2]=0;n=e[r+80>>1]|0;c[f+104>>2]=n;c[f+72>>2]=1651078259;l=c[q>>2]<<6;q=f+24|0;c[q>>2]=l;r=c[p>>2]<<6;c[f+28>>2]=r;c[f+40>>2]=l;c[f+32>>2]=0;c[f+36>>2]=n<<6;Nh(q,r);f=c[s>>2]|0;i=t;return f|0}c[s>>2]=6;f=6;i=t;return f|0}function hr(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0;j=i;g=c[a>>2]|0;h=c[g+132>>2]|0;f=c[b+16>>2]|0;d=c[b+8>>2]|0;if(f)d=((ea(d,f)|0)+36|0)/72|0;f=d+32>>6;d=c[b>>2]|0;do if(!d)if((f|0)==((c[(c[g+32>>2]|0)+12>>2]|0)+32>>6|0)){d=h+96|0;break}else{a=23;i=j;return a|0}else if((d|0)==1){d=h+96|0;if((f|0)!=(e[d>>1]|0|0)){a=23;i=j;return a|0}}else{a=7;i=j;return a|0}while(0);Oh(g,0);b=e[h+80>>1]|0;c[a+24>>2]=b<<6;c[a+28>>2]=b-(e[d>>1]|0)<<6;c[a+36>>2]=(e[h+102>>1]|0)<<6;a=0;i=j;return a|0}function ir(a,b){a=a|0;b=b|0;var d=0,f=0;b=i;f=c[a>>2]|0;d=c[f+132>>2]|0;Oh(f,0);f=e[d+80>>1]|0;c[a+24>>2]=f<<6;c[a+28>>2]=f-(e[d+96>>1]|0)<<6;c[a+36>>2]=(e[d+102>>1]|0)<<6;i=b;return 0}function jr(a,b){a=a|0;b=b|0;var e=0;b=c[(c[a>>2]|0)+132>>2]|0;e=d[b+104>>0]|0;c[a+16>>2]=e;c[a+20>>2]=1-e+(d[b+105>>0]|0);return 0}function kr(a,b){a=a|0;b=b|0;b=b-(c[a+16>>2]|0)|0;return (b>>>0<(c[a+20>>2]|0)>>>0?b+1|0:0)|0}function lr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=(c[b>>2]|0)+1|0;d=c[a+16>>2]|0;if(e>>>0>d>>>0){f=e-d|0;d=f>>>0<(c[a+20>>2]|0)>>>0;a=d?f+1|0:0;d=d?e:0}else a=1;c[b>>2]=d;return a|0}function mr(a,b){a=a|0;b=b|0;var d=0;d=i;Aga(b|0,(c[a+132>>2]|0)+4|0,156)|0;i=d;return 0}function nr(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+16|0;q=w+4|0;v=w;h=b+16|0;u=ch(c[b+100>>2]|0,(c[h>>2]|0)+40|0,v)|0;j=c[v>>2]|0;if(j){b=j;c[e>>2]=u;i=w;return b|0}c[u>>2]=b;m=c[h>>2]|0;t=u+4|0;c[t>>2]=m;k=u+40|0;c[u+8>>2]=k;s=u+36|0;c[s>>2]=f;r=c[b+92>>2]|0;Cga(k|0,127,m|0)|0;if(!(Uh(b,1970170211)|0)){m=0;while(1){f=c[(c[3672+(m<<2)>>2]|0)+12>>2]|0;if((f|0)!=0?(n=c[f>>2]|0,(n|0)!=0):0){l=m&255;j=n;do{h=Dh(b,j)|0;c[q>>2]=h;if(((h|0)!=0?h>>>0<(c[t>>2]|0)>>>0:0)?(o=u+(h+40)|0,(a[o>>0]|0)==127):0)a[o>>0]=l;k=f+4|0;h=Xh(b,j,q)|0;j=c[q>>2]|0;a:do if(j)do{if(h>>>0>(c[k>>2]|0)>>>0)break a;if(j>>>0<(c[t>>2]|0)>>>0?(p=u+(j+40)|0,(a[p>>0]|0)==127):0)a[p>>0]=l;h=Xh(b,h,q)|0;j=c[q>>2]|0}while((j|0)!=0);while(0);f=f+8|0;j=c[f>>2]|0}while((j|0)!=0)}m=m+1|0;if((m|0)==5){j=48;break}}do{h=Dh(b,j)|0;if((h|0)!=0?h>>>0<(c[t>>2]|0)>>>0:0){q=u+(h+40)|0;a[q>>0]=d[q>>0]|128}j=j+1|0}while((j|0)!=58)}if((c[(c[s>>2]|0)+12>>2]|0)!=127?(g=c[t>>2]|0,(g|0)>0):0){f=0;do{h=u+(f+40)|0;j=d[h>>0]|0;if((j&127|0)==127){g=j&128;a[h>>0]=g;a[h>>0]=c[(c[s>>2]|0)+12>>2]|g;g=c[t>>2]|0}f=f+1|0}while((f|0)<(g|0))}Vh(b,r)|0;c[v>>2]=0;c[u+12>>2]=0;b=c[v>>2]|0;c[e>>2]=u;i=w;return b|0}function or(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;if(!a){i=f;return}e=c[(c[a>>2]|0)+100>>2]|0;b=a+16|0;d=c[b>>2]|0;if(d){eh(e,d);c[b>>2]=0}b=a+20|0;d=c[b>>2]|0;if(d){eh(e,d);c[b>>2]=0}b=a+24|0;d=c[b>>2]|0;if(d){eh(e,d);c[b>>2]=0}b=a+28|0;d=c[b>>2]|0;if(d){eh(e,d);c[b>>2]=0}b=a+32|0;d=c[b>>2]|0;if(d){eh(e,d);c[b>>2]=0}c[a+4>>2]=0;c[a+8>>2]=0;c[a>>2]=0;eh(e,a);i=f;return}function pr(d,e,f,g,h,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;r=c[d+12>>2]|0;s=c[d+8>>2]|0;m=c[r+36>>2]|0;if((m|0)>0){n=Wd[c[s+4>>2]&511](s,m)|0;t=(n|0)==0;l=t?64:0;if(t)t=0;else{Cga(n|0,0,m|0)|0;t=n}}else{t=0;l=m>>31&6}if(!l){c[t+96>>2]=d;c[t+100>>2]=s;p=t+104|0;c[p>>2]=c[e>>2];if(f<<24>>24){f=t+8|0;c[f>>2]=c[f>>2]|1024}o=Wd[c[s+4>>2]&511](s,60)|0;f=(o|0)==0;l=f?64:0;if(!f){n=o+0|0;m=n+60|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(m|0));c[t+128>>2]=o;c[o+48>>2]=0;a:do if((h|0)>0){m=o+48|0;n=0;d=0;do{if(n)break a;if((c[j+(d<<3)>>2]|0)==1768842098){n=c[j+(d<<3)+4>>2]|0;c[m>>2]=n}else n=0;d=d+1|0}while((d|0)<(h|0))}while(0);n=c[r+48>>2]|0;if(n)l=Xd[n&127](c[e>>2]|0,t,g,h,j)|0;c[e>>2]=c[p>>2];if(!l){f=c[t+40>>2]|0;if(!f){c[k>>2]=t;k=0;i=u;return k|0}n=c[t+36>>2]|0;l=n+-1|0;b:do if((l|0)<0)q=28;else{m=f+(l<<2)|0;c:while(1){l=c[m>>2]|0;do if((c[l+4>>2]|0)==1970170211){d=b[l+8>>1]|0;if(!(d<<16>>16))if((b[l+10>>1]|0)==4)break c;else break;else if(d<<16>>16==3?(b[l+10>>1]|0)==10:0)break c;else break}while(0);m=m+-4|0;if(m>>>0>>0){q=28;break b}}c[t+92>>2]=l}while(0);d:do if((q|0)==28){m=f+(n<<2)|0;do{m=m+-4|0;if(m>>>0>>0)break d;l=c[m>>2]|0}while((c[l+4>>2]|0)!=1970170211);c[t+92>>2]=l}while(0);c[k>>2]=t;k=0;i=u;return k|0}else p=l}else{p=64;o=0}}else{p=l;o=0}h=(t|0)==0;if(!h){f=t+36|0;g=t+40|0;l=c[g>>2]|0;if((c[f>>2]|0)>0){d=0;do{l=c[l+(d<<2)>>2]|0;n=c[(c[l>>2]|0)+100>>2]|0;m=c[(c[l+12>>2]|0)+8>>2]|0;if(m)Id[m&511](l);Jd[c[n+8>>2]&255](n,l);c[(c[g>>2]|0)+(d<<2)>>2]=0;d=d+1|0;l=c[g>>2]|0}while((d|0)<(c[f>>2]|0))}if(l)Jd[c[s+8>>2]&255](s,l);c[g>>2]=0;c[f>>2]=0}l=c[r+52>>2]|0;if(l)Id[l&511](t);if(o)Jd[c[s+8>>2]&255](s,o);if(!h)Jd[c[s+8>>2]&255](s,t);c[k>>2]=0;k=p;i=u;return k|0}function qr(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+16|0;l=A+4|0;u=A;v=c[a>>2]|0;x=b+8|0;y=c[x>>2]|0;z=b+4|0;if((y+3|0)>>>0>=(c[z>>2]|0)>>>0){b=85;i=A;return b|0}w=b+20|0;g=c[w>>2]|0;do if(!g){g=(c[b>>2]|0)+y|0;if(!g){c[x>>2]=y+4;g=2}else{j=y;s=7}}else if((ce[g&255](b,y,u,4)|0)==4){j=c[x>>2]|0;g=u;s=7;break}else{b=85;i=A;return b|0}while(0);do if((s|0)==7){t=(d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0);h=j+4|0;c[x>>2]=h;if((t|0)==1954115633){k=c[z>>2]|0;if((j+5|0)>>>0>=k>>>0){b=85;i=A;return b|0}g=c[w>>2]|0;do if(!g){g=(c[b>>2]|0)+h|0;if(!g){c[x>>2]=j+6;g=j+12|0;h=0;s=17}else{j=0;k=h;s=14}}else if((ce[g&255](b,h,l,2)|0)==2){j=c[w>>2]|0;k=c[x>>2]|0;g=l;s=14;break}else{b=85;i=A;return b|0}while(0);do if((s|0)==14){h=(d[g>>0]|0)<<8|(d[g+1>>0]|0);c[x>>2]=k+2;g=k+8|0;if(!j){k=c[z>>2]|0;s=17;break}if(ce[j&255](b,g,0,0)|0){b=85;i=A;return b|0}}while(0);if((s|0)==17)if(k>>>0>>0){b=85;i=A;return b|0}c[x>>2]=g;if((h|0)<=0){b=142;i=A;return b|0}r=(e|0)>-1;t=(e|0)<0;p=0;m=g;q=0;j=-1;a:while(1){k=c[z>>2]|0;if((m+3|0)>>>0>=k>>>0){g=85;s=67;break}g=c[w>>2]|0;if(!g){g=(c[b>>2]|0)+m|0;if(!g){c[x>>2]=m+4;g=m+8|0;l=0;s=31}else{k=0;s=27}}else{if((ce[g&255](b,m,u,4)|0)!=4){g=85;s=67;break}m=c[x>>2]|0;k=c[w>>2]|0;g=u;s=27}do if((s|0)==27){s=0;l=(d[g+1>>0]|0)<<16|(d[g>>0]|0)<<24|(d[g+2>>0]|0)<<8|(d[g+3>>0]|0);c[x>>2]=m+4;g=m+8|0;if(!k){k=c[z>>2]|0;s=31;break}if(ce[k&255](b,g,0,0)|0){g=85;s=67;break a}n=g;k=c[z>>2]|0;o=l}while(0);if((s|0)==31){s=0;if(k>>>0>>0){g=85;s=67;break}else{n=g;o=l}}c[x>>2]=n;if((m+11|0)>>>0>=k>>>0){g=85;s=67;break}g=c[w>>2]|0;if(!g){m=(c[b>>2]|0)+n|0;if(!m){l=n;g=0}else{g=n;s=37}}else{if((ce[g&255](b,n,u,4)|0)!=4){g=85;s=67;break}g=c[x>>2]|0;k=c[z>>2]|0;m=u;s=37}if((s|0)==37){s=0;l=g;g=(d[m+1>>0]|0)<<16|(d[m>>0]|0)<<24|(d[m+2>>0]|0)<<8|(d[m+3>>0]|0)}m=l+4|0;c[x>>2]=m;if((l+7|0)>>>0>=k>>>0){g=85;s=67;break}k=c[w>>2]|0;if(!k){l=(c[b>>2]|0)+m|0;if(!l)k=0;else{k=m;s=43}}else{if((ce[k&255](b,m,u,4)|0)!=4){g=85;s=67;break}k=c[x>>2]|0;l=u;s=43}if((s|0)==43){m=k;k=(d[l+1>>0]|0)<<16|(d[l>>0]|0)<<24|(d[l+2>>0]|0)<<8|(d[l+3>>0]|0)}m=m+4|0;c[x>>2]=m;if((o|0)==1128875040){g=g+22|0;k=k+-22|0;if(t){n=k;m=1;s=48;break}else{l=1;j=j+1|0}}else if((o|0)==1415139377){g=g+24|0;k=k+-24|0;if(t){n=k;m=0;s=48;break}else{l=0;j=j+1|0}}else l=p;q=q+1|0;if(r&(j|0)==(e|0)){n=k;m=l;s=48;break}if((q|0)>=(h|0)){g=142;s=67;break}else p=l}if((s|0)==48){g=g+y|0;h=c[w>>2]|0;if(!h){if((c[z>>2]|0)>>>0>>0){b=0;i=A;return b|0}}else if(ce[h&255](b,g,0,0)|0){b=0;i=A;return b|0}c[x>>2]=g;if((n|0)>0){h=Wd[c[v+4>>2]&511](v,n)|0;v=(h|0)==0;g=v?64:0;if(v)h=0;else Cga(h|0,0,n|0)|0}else{h=0;g=n>>31&6}do if(!g){k=c[x>>2]|0;g=c[z>>2]|0;if(g>>>0<=k>>>0){b=85;i=A;return b|0}j=c[w>>2]|0;if(!j){g=g-k|0;g=g>>>0>n>>>0?n:g;Aga(h|0,(c[b>>2]|0)+k|0,g|0)|0}else g=ce[j&255](b,k,h,n)|0;c[x>>2]=g+k;if(g>>>0>>0){b=85;i=A;return b|0}else{g=fu(a,h,n,t?e:0,m<<24>>24!=0?4800:4792,f)|0;break}}while(0);if((g&255|0)==2)break;i=A;return g|0}else if((s|0)==67){i=A;return g|0}}else g=2}while(0);h=c[w>>2]|0;if(!h){if((c[z>>2]|0)>>>0>>0){b=85;i=A;return b|0}}else if(ce[h&255](b,y,0,0)|0){b=85;i=A;return b|0}c[x>>2]=y;b=g;i=A;return b|0}function rr(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+128|0;m=n;if(!e){m=85;i=n;return m|0}j=e+20|0;h=c[j>>2]|0;if((h|0)!=0?(ce[h&255](e,0,0,0)|0)!=0:0){m=85;i=n;return m|0}l=e+8|0;c[l>>2]=0;k=c[e+4>>2]|0;if(!k){m=85;i=n;return m|0}h=c[j>>2]|0;if(!h){h=k>>>0>128?128:k;Aga(m|0,c[e>>2]|0,h|0)|0}else h=ce[h&255](e,0,m,128)|0;c[l>>2]=h;if(h>>>0<128){m=85;i=n;return m|0}if(a[m>>0]|0){m=2;i=n;return m|0}if(a[m+74>>0]|0){m=2;i=n;return m|0}if(a[m+82>>0]|0){m=2;i=n;return m|0}h=a[m+1>>0]|0;if((h+-1<<24>>24&255)>32){m=2;i=n;return m|0}if(a[m+63>>0]|0){m=2;i=n;return m|0}if(a[m+((h&255)+2)>>0]|0){m=2;i=n;return m|0}m=sr(b,e,(d[m+84>>0]<<16|d[m+83>>0]<<24|d[m+85>>0]<<8|d[m+86>>0])+255&-128,f,g)|0;i=n;return m|0}function sr(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=i;i=i+32|0;B=H+20|0;D=H+16|0;j=H+4|0;l=H+8|0;G=H;k=H+12|0;F=c[b>>2]|0;f=oi(0,e,f,j,l)|0;if(f){G=f;i=H;return G|0}j=c[j>>2]|0;f=c[l>>2]|0;if(si(b,e,j,f,1347375956,G,k)|0){f=si(b,e,j,f,1936092788,G,k)|0;if(f){G=f;i=H;return G|0}r=c[k>>2]|0;j=(g|0)%(r|0)|0;m=c[b>>2]|0;j=(j|0)==-1?0:j;q=c[G>>2]|0;do if((j|0)<(r|0)){k=c[q+(j<<2)>>2]|0;n=e+20|0;f=c[n>>2]|0;if(!f){f=c[e+4>>2]|0;if(f>>>0>>0){f=85;break}}else{if(ce[f&255](e,k,0,0)|0){f=85;break}f=c[e+4>>2]|0}p=e+8|0;c[p>>2]=k;o=e+4|0;if((k+3|0)>>>0>>0){f=c[n>>2]|0;if(!f){f=(c[e>>2]|0)+k|0;if(!f){c[p>>2]=k+4;g=0}else{l=k;E=76}}else{if((ce[f&255](e,k,D,4)|0)!=4){f=85;break}l=c[p>>2]|0;f=D;E=76}if((E|0)==76){f=(d[f+1>>0]|0)<<16|(d[f>>0]|0)<<24|(d[f+2>>0]|0)<<8|(d[f+3>>0]|0);c[p>>2]=l+4;if((f|0)==-1){f=1;break}else g=f}f=qr(b,e,j,h)|0;if(f){j=k+4|0;k=c[n>>2]|0;if(!k){if((c[o>>2]|0)>>>0>>0)break}else if(ce[k&255](e,j,0,0)|0)break;c[p>>2]=j;if((g|0)>0){j=Wd[c[m+4>>2]&511](m,g)|0;E=(j|0)==0;f=E?64:0;if(E)j=0;else Cga(j|0,0,g|0)|0}else{j=0;f=g>>31&6}if(!f){l=c[p>>2]|0;k=c[o>>2]|0;if(k>>>0>l>>>0){f=c[n>>2]|0;if(!f){f=k-l|0;f=f>>>0>g>>>0?g:f;Aga(j|0,(c[e>>2]|0)+l|0,f|0)|0}else f=ce[f&255](e,l,j,g)|0;c[p>>2]=f+l;if(f>>>0>=g>>>0){if((g|0)>4){f=(pga(j,4776,4)|0)!=0;f=f?4456:4784}else f=4456;f=fu(b,j,g,0,f,h)|0}else f=85}else f=85}}else f=0}else f=85}else f=1;while(0);if(q)Jd[c[F+8>>2]&255](F,q);c[G>>2]=0;if(f){G=f;i=H;return G|0}c[c[h>>2]>>2]=r;G=0;i=H;return G|0}A=c[G>>2]|0;y=c[k>>2]|0;z=c[b>>2]|0;a:do if((g|0)==0|(g|0)==-1){p=(y|0)>0;if(p){m=e+20|0;g=e+4|0;n=e+8|0;o=0;f=0;while(1){k=c[A+(o<<2)>>2]|0;l=c[m>>2]|0;if(!l){l=c[g>>2]|0;if(l>>>0>>0){f=85;break a}}else{if(ce[l&255](e,k,0,0)|0){f=85;break a}l=c[g>>2]|0}c[n>>2]=k;if((k+3|0)>>>0>=l>>>0){f=85;break a}l=c[m>>2]|0;if(!l){j=(c[e>>2]|0)+k|0;if(!j)l=6;else{l=k;E=15}}else{if((ce[l&255](e,k,D,4)|0)!=4){f=85;break a}l=c[n>>2]|0;j=D;E=15}if((E|0)==15){E=0;k=l;l=((d[j+1>>0]|0)<<16|(d[j>>0]|0)<<24|(d[j+2>>0]|0)<<8|(d[j+3>>0]|0))+6|0}c[n>>2]=k+4;f=l+f|0;o=o+1|0;if((o|0)>=(y|0)){k=f;break}}f=k+2|0;if((f|0)>0){l=f;E=19}else{x=f;j=0;f=f>>31&6;w=k}}else{l=2;k=0;E=19}if((E|0)==19){j=Wd[c[z+4>>2]&511](z,l)|0;x=(j|0)==0;f=x?64:0;if(x){x=l;j=0;w=k}else{Cga(j|0,0,l|0)|0;x=l;w=k}}if(!f){a[j>>0]=-128;a[j+1>>0]=1;v=j+2|0;a[v>>0]=0;a[v+1>>0]=0;a[v+2>>0]=0;a[v+3>>0]=0;b:do if(p){s=e+20|0;t=e+4|0;u=e+8|0;v=0;k=0;l=2;f=6;r=1;while(1){o=c[A+(v<<2)>>2]|0;g=c[s>>2]|0;if(!g){g=c[t>>2]|0;if(g>>>0>>0){f=85;break b}}else{if(ce[g&255](e,o,0,0)|0){f=85;break b}g=c[t>>2]|0}c[u>>2]=o;if((o+3|0)>>>0>=g>>>0){f=85;break a}m=c[s>>2]|0;if(!m){n=(c[e>>2]|0)+o|0;if(!n)p=0;else{m=o;E=33}}else{if((ce[m&255](e,o,D,4)|0)!=4){f=85;break a}m=c[u>>2]|0;g=c[t>>2]|0;n=D;E=33}if((E|0)==33){E=0;o=m;p=(d[n+1>>0]|0)<<16|(d[n>>0]|0)<<24|(d[n+2>>0]|0)<<8|(d[n+3>>0]|0)}n=o+4|0;c[u>>2]=n;if((o+5|0)>>>0>=g>>>0){f=85;break a}m=c[s>>2]|0;if(!m){m=(c[e>>2]|0)+n|0;if(!m){c[u>>2]=o+6;m=r}else{g=n;E=40}}else{if((ce[m&255](e,n,B,2)|0)!=2){f=85;break a}g=c[u>>2]|0;m=B;E=40}if((E|0)==40){E=0;o=a[m>>0]|0;n=o&255;c[u>>2]=g+2;if(o<<24>>24){q=(p|0)>2?p+-2|0:0;if((n|0)==(r|0)){k=q+k|0;m=f;p=r}else{g=l+3|0;if((g|0)>(x|0)){f=0;break b}a[j+l>>0]=k;a[j+(l+1)>>0]=k>>>8;a[j+(l+2)>>0]=k>>>16;a[j+g>>0]=k>>>24;if(o<<24>>24==5){E=55;break b}l=f+4|0;if((l|0)>(w|0)){f=0;break b}a[j+f>>0]=-128;m=f+2|0;a[j+(f+1)>>0]=o;a[j+m>>0]=0;a[j+(f+3)>>0]=0;a[j+l>>0]=0;a[j+(f+5)>>0]=0;k=q;l=m;m=f+6|0;p=n}if((m|0)>(w|0)){f=1;break b}f=m+q|0;if((f|0)>(w|0)){f=1;break b}m=j+m|0;o=c[u>>2]|0;g=c[t>>2]|0;if(g>>>0<=o>>>0){f=85;break b}n=c[s>>2]|0;if(!n){r=g-o|0;r=r>>>0>q>>>0?q:r;Aga(m|0,(c[e>>2]|0)+o|0,r|0)|0;m=r}else m=ce[n&255](e,o,m,q)|0;c[u>>2]=m+o;if(m>>>0>>0){f=85;break b}else m=p}else m=r}v=v+1|0;if((v|0)>=(y|0)){E=55;break}else r=m}}else{k=0;l=2;f=6;E=55}while(0);if((E|0)==55)if((f|0)<=(w|0)?(a[j+f>>0]=-128,a[j+(f+1)>>0]=3,C=l+3|0,(C|0)<=(x|0)):0){a[j+l>>0]=k;a[j+(l+1)>>0]=k>>>8;a[j+(l+2)>>0]=k>>>16;a[j+C>>0]=k>>>24;f=fu(b,j,f+2|0,0,4792,h)|0;break}else f=0;if(j)Jd[c[z+8>>2]&255](z,j)}}else f=1;while(0);if(A)Jd[c[F+8>>2]&255](F,A);c[G>>2]=0;if(f){G=f;i=H;return G|0}c[c[h>>2]>>2]=1;G=0;i=H;return G|0}function tr(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+112|0;t=v+72|0;s=v;r=v+36|0;u=c[b>>2]|0;q=g+12|0;g=c[q>>2]|0;h=(d|0)==0;j=d+20|0;k=d+8|0;n=0;do{l=t+(n<<2)|0;c[l>>2]=0;do if(h){c[r+(n<<2)>>2]=0;o=8}else{m=c[j>>2]|0;if((m|0)!=0?(ce[m&255](d,0,0,0)|0)!=0:0){c[r+(n<<2)>>2]=85;break}c[k>>2]=0;c[r+(n<<2)>>2]=0;o=8}while(0);if((o|0)==8){o=0;c[r+(n<<2)>>2]=Xd[c[4520+(n<<3)>>2]&127](b,d,g,l,s+(n<<2)|0)|0}n=n+1|0}while((n|0)!=9);n=(b|0)==0;h=2;p=0;l=0;a:while(1){m=((c[4524+(p<<3)>>2]|0)+-3|0)>>>0<2;b:do if(l<<24>>24==0|m^1?(c[r+(p<<2)>>2]|0)==0:0){g=c[t+(p<<2)>>2]|0;if(!g)g=c[q>>2]|0;do if(!n){d=c[b>>2]|0;o=Wd[c[d+4>>2]&511](d,40)|0;if(!o)g=64;else{k=o+0|0;h=k+40|0;do{a[k>>0]=0;k=k+1|0}while((k|0)<(h|0));k=o+28|0;c[k>>2]=d;h=uj(o,g)|0;c[o+16>>2]=g;if(h){Jd[c[d+8>>2]&255](d,o);g=h;break}c[k>>2]=d;h=sr(b,o,c[s+(p<<2)>>2]|0,e,f)|0;g=c[k>>2]|0;j=c[o+24>>2]|0;if(j)Id[j&511](o);Jd[c[g+8>>2]&255](g,o);if(!h){k=0;break a}g=m?1:l;break b}}else g=33;while(0);h=g;g=m&(g&255|0)==81?1:l}else g=l;while(0);p=p+1|0;if((p|0)>=9){k=h;break}else l=g}d=u+8|0;g=c[t>>2]|0;if(g){Jd[c[d>>2]&255](u,g);c[t>>2]=0}g=t+4|0;h=c[g>>2]|0;if(h){Jd[c[d>>2]&255](u,h);c[g>>2]=0}g=t+8|0;h=c[g>>2]|0;if(h){Jd[c[d>>2]&255](u,h);c[g>>2]=0}g=t+12|0;h=c[g>>2]|0;if(h){Jd[c[d>>2]&255](u,h);c[g>>2]=0}g=t+16|0;h=c[g>>2]|0;if(h){Jd[c[d>>2]&255](u,h);c[g>>2]=0}g=t+20|0;h=c[g>>2]|0;if(h){Jd[c[d>>2]&255](u,h);c[g>>2]=0}g=t+24|0;h=c[g>>2]|0;if(h){Jd[c[d>>2]&255](u,h);c[g>>2]=0}g=t+28|0;h=c[g>>2]|0;if(h){Jd[c[d>>2]&255](u,h);c[g>>2]=0}g=t+32|0;h=c[g>>2]|0;if(!h){u=(k|0)==0;u=u?0:2;i=v;return u|0}Jd[c[d>>2]&255](u,h);c[g>>2]=0;u=(k|0)==0;u=u?0:2;i=v;return u|0}function ur(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;l=d+12|0;m=c[l>>2]|0;d=c[b+120>>2]|0;if(d)Id[d&511](c[b+116>>2]|0);e=b+84|0;d=c[e>>2]|0;if(d)do{yh(d);d=c[e>>2]|0}while((d|0)!=0);j=b+108|0;d=c[j>>2]|0;if(d){k=a+8|0;do{h=d;d=c[d+4>>2]|0;f=c[h+8>>2]|0;g=c[f+8>>2]|0;if(g)Id[g&511](f);g=c[(c[l>>2]|0)+60>>2]|0;if(g)Id[g&511](f);g=f+40|0;e=c[g>>2]|0;if(e)Jd[c[k>>2]&255](a,e);c[g>>2]=0;if(f)Jd[c[k>>2]&255](a,f);if(h)Jd[c[k>>2]&255](a,h)}while((d|0)!=0)}c[j>>2]=0;c[b+112>>2]=0;c[b+88>>2]=0;d=c[b+48>>2]|0;if(d)Id[d&511](b);l=(b|0)==0;if(!l){j=b+36|0;h=b+40|0;d=c[h>>2]|0;if((c[j>>2]|0)>0){f=0;do{d=c[d+(f<<2)>>2]|0;g=c[(c[d>>2]|0)+100>>2]|0;e=c[(c[d+12>>2]|0)+8>>2]|0;if(e)Id[e&511](d);Jd[c[g+8>>2]&255](g,d);c[(c[h>>2]|0)+(f<<2)>>2]=0;f=f+1|0;d=c[h>>2]|0}while((f|0)<(c[j>>2]|0))}if(d)Jd[c[a+8>>2]&255](a,d);c[h>>2]=0;c[j>>2]=0}d=c[m+52>>2]|0;if(d)Id[d&511](b);e=b+104|0;f=c[e>>2]|0;d=c[b+8>>2]&1024;if(f){g=c[f+28>>2]|0;h=c[f+24>>2]|0;if(h)Id[h&511](f);if(!d)Jd[c[g+8>>2]&255](g,f)}c[e>>2]=0;d=b+128|0;e=c[d>>2]|0;if(e){Jd[c[a+8>>2]&255](a,e);c[d>>2]=0}if(l){i=n;return}Jd[c[a+8>>2]&255](a,b);i=n;return}function vr(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;f=b[a+70>>1]|0;e=f<<16>>16;j=c[d+8>>2]|0;g=(j|0)==65536;if(!(f<<16>>16==0|g)){f=f<<16>>16<0?0-e|0:e;h=(j|0)<0?0-j|0:j;if(f>>>0<2049&h>>>0<1048577)f=((ea(h,f)|0)+32768|0)>>>16;else{l=f&65535;f=(ea(h>>>16,l)|0)+(ea(f>>>16,h)|0)+(((ea(h&65535,l)|0)+32768|0)>>>16)|0}e=(j^e|0)<0?0-f|0:f}c[d+12>>2]=e+63&-64;f=b[a+72>>1]|0;e=f<<16>>16;if(!(f<<16>>16==0|g)){h=f<<16>>16<0?0-e|0:e;f=(j|0)<0?0-j|0:j;if(h>>>0<2049&f>>>0<1048577)f=((ea(f,h)|0)+32768|0)>>>16;else{l=h&65535;f=(ea(f>>>16,l)|0)+(ea(h>>>16,f)|0)+(((ea(f&65535,l)|0)+32768|0)>>>16)|0}e=(j^e|0)<0?0-f|0:f}c[d+16>>2]=e&-64;f=b[a+74>>1]|0;e=f<<16>>16;if(!(f<<16>>16==0|g)){f=f<<16>>16<0?0-e|0:e;g=(j|0)<0?0-j|0:j;if(f>>>0<2049&g>>>0<1048577)f=((ea(g,f)|0)+32768|0)>>>16;else{l=f&65535;f=(ea(g>>>16,l)|0)+(ea(f>>>16,g)|0)+(((ea(g&65535,l)|0)+32768|0)>>>16)|0}e=(j^e|0)<0?0-f|0:f}c[d+20>>2]=e+32&-64;e=b[a+76>>1]|0;g=e<<16>>16;h=c[d+4>>2]|0;if(e<<16>>16==0|(h|0)==65536){j=g;j=j+32|0;j=j&-64;d=d+24|0;c[d>>2]=j;i=k;return}e=e<<16>>16<0?0-g|0:g;f=(h|0)<0?0-h|0:h;if(e>>>0<2049&f>>>0<1048577)e=((ea(f,e)|0)+32768|0)>>>16;else{j=e&65535;e=(ea(f>>>16,j)|0)+(ea(e>>>16,f)|0)+(((ea(f&65535,j)|0)+32768|0)>>>16)|0}j=(h^g|0)<0?0-e|0:e;j=j+32|0;j=j&-64;d=d+24|0;c[d>>2]=j;i=k;return}function wr(a,c){a=a|0;c=c|0;var d=0;d=b[a>>1]|0;a=b[c>>1]|0;if((d&65535)<(a&65535))a=-1;else a=(d&65535)>(a&65535)&1;return a|0}function xr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+16|0;o=r+8|0;p=r;j=(ea(d,-11796480)|0)+5898240|0;g=b+4|0;h=(Si(c[b>>2]|0,c[g>>2]|0)|0)/2|0;q=b+(d<<5)+80|0;f=b+60|0;if(!((a[q>>0]|0)==0|(e|0)==0)?(n=c[f>>2]|0,n=Wg(n,Oi(h)|0)|0,n=(n|0)>-1?n:0-n|0,!((n|0)>(e|0)?1:(c[b+16>>2]|0)<(n|0))):0){g=c[b>>2]|0;e=Mi(h)|0;Ri(p,Xg(c[f>>2]|0,e)|0,h+j+g|0);j=(c[p>>2]|0)+(c[b+8>>2]|0)|0;c[p>>2]=j;f=p+4|0;h=(c[f>>2]|0)+(c[b+12>>2]|0)|0;c[f>>2]=h;f=b+(d<<5)+64|0;g=c[f>>2]|0;if(!(a[q>>0]|0)){n=f;f=h;m=6}else{o=p;p=c[o+4>>2]|0;f=(c[b+(d<<5)+72>>2]|0)+(g+-1<<3)|0;c[f>>2]=c[o>>2];c[f+4>>2]=p;f=0}}else{Ri(p,c[f>>2]|0,(c[g>>2]|0)+j|0);j=(c[p>>2]|0)+(c[b+8>>2]|0)|0;c[p>>2]=j;g=p+4|0;f=(c[g>>2]|0)+(c[b+12>>2]|0)|0;c[g>>2]=f;a[q>>0]=0;g=b+(d<<5)+64|0;n=g;g=c[g>>2]|0;m=6}do if((m|0)==6){if(((g|0)!=0?(k=g+-1|0,l=c[b+(d<<5)+72>>2]|0,((c[l+(k<<3)>>2]|0)+1-j|0)>>>0<3):0)?((c[l+(k<<3)+4>>2]|0)+1-f|0)>>>0<3:0){q=0;i=r;return q|0}l=b+(d<<5)+68|0;k=c[l>>2]|0;j=g+1|0;c[o>>2]=0;if(j>>>0>k>>>0){e=c[b+(d<<5)+88>>2]|0;f=k;do f=f+16+(f>>>1)|0;while(f>>>0>>0);g=f;h=b+(d<<5)+72|0;c[h>>2]=hh(e,8,k,g,c[h>>2]|0,o)|0;f=c[o>>2]|0;if(f)break;f=b+(d<<5)+76|0;j=hh(e,1,k,g,c[f>>2]|0,o)|0;c[f>>2]=j;f=c[o>>2]|0;if(f)break;c[l>>2]=g;g=c[n>>2]|0;f=j}else{h=b+(d<<5)+72|0;f=c[b+(d<<5)+76>>2]|0}d=p;b=c[d+4>>2]|0;p=(c[h>>2]|0)+(g<<3)|0;c[p>>2]=c[d>>2];c[p+4>>2]=b;a[f+g>>0]=1;c[n>>2]=(c[n>>2]|0)+1;f=0}while(0);a[q>>0]=0;q=f;i=r;return q|0}function yr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+64|0;E=O+48|0;K=O+44|0;D=O+40|0;t=O+36|0;C=O+32|0;u=O+8|0;x=O+24|0;L=O;F=O+16|0;N=b+(d<<5)+64|0;f=c[b+48>>2]|0;if(!f){N=gu(b,d)|0;i=O;return N|0}w=b+60|0;G=c[w>>2]|0;M=(ea(d,-11796480)|0)+5898240|0;h=(f|0)==1;g=(f|0)==2;do if(!h){f=b+4|0;n=Si(c[b>>2]|0,c[f>>2]|0)|0;if((n|0)==11796480){v=c[b>>2]|0;l=M}else{l=(n|0)/2|0;v=l+M+(c[b>>2]|0)|0}n=Mi(l)|0;j=b+56|0;o=Wg(c[j>>2]|0,n)|0;if((o|0)<65536){if(!g)break;if((((l|0)>-1?l:0-l|0)|0)>57){Ri(x,Wg(G,c[j>>2]|0)|0,v);q=b+8|0;c[x>>2]=(c[x>>2]|0)+(c[q>>2]|0);t=b+12|0;m=x+4|0;c[m>>2]=(c[m>>2]|0)+(c[t>>2]|0);f=Ni(l)|0;o=Ug(G,65536-o|0,(f|0)>-1?f:0-f|0)|0;Ri(L,o,v+M|0);f=(c[L>>2]|0)+(c[x>>2]|0)|0;c[L>>2]=f;p=L+4|0;n=(c[p>>2]|0)+(c[m>>2]|0)|0;c[p>>2]=n;u=b+(d<<5)+80|0;j=c[N>>2]|0;do if(!(a[u>>0]|0)){if(((j|0)!=0?(r=j+-1|0,s=c[b+(d<<5)+72>>2]|0,((c[s+(r<<3)>>2]|0)+1-f|0)>>>0<3):0)?(1-n+(c[s+(r<<3)+4>>2]|0)|0)>>>0<3:0)break;k=b+(d<<5)+68|0;l=c[k>>2]|0;n=j+1|0;c[E>>2]=0;do if(n>>>0>l>>>0){h=c[b+(d<<5)+88>>2]|0;f=l;do f=f+16+(f>>>1)|0;while(f>>>0>>0);j=f;g=b+(d<<5)+72|0;c[g>>2]=hh(h,8,l,j,c[g>>2]|0,E)|0;f=c[E>>2]|0;if(!f){f=b+(d<<5)+76|0;n=hh(h,1,l,j,c[f>>2]|0,E)|0;c[f>>2]=n;f=c[E>>2]|0;if(!f){c[k>>2]=j;j=c[N>>2]|0;f=n;break}}a[u>>0]=0;N=f;i=O;return N|0}else{g=b+(d<<5)+72|0;f=c[b+(d<<5)+76>>2]|0}while(0);E=L;F=c[E+4>>2]|0;H=(c[g>>2]|0)+(j<<3)|0;c[H>>2]=c[E>>2];c[H+4>>2]=F;a[f+j>>0]=1;c[N>>2]=(c[N>>2]|0)+1;H=37}else{E=L;F=c[E+4>>2]|0;H=(c[b+(d<<5)+72>>2]|0)+(j+-1<<3)|0;c[H>>2]=c[E>>2];c[H+4>>2]=F;H=37}while(0);if((H|0)==37)a[u>>0]=0;Ri(L,o,v-M|0);g=(c[L>>2]|0)+(c[x>>2]|0)|0;c[L>>2]=g;f=(c[p>>2]|0)+(c[m>>2]|0)|0;c[p>>2]=f;j=c[N>>2]|0;do if(!(a[u>>0]|0)){if(((j|0)!=0?(y=j+-1|0,z=c[b+(d<<5)+72>>2]|0,((c[z+(y<<3)>>2]|0)+1-g|0)>>>0<3):0)?(1-f+(c[z+(y<<3)+4>>2]|0)|0)>>>0<3:0){f=0;break}k=b+(d<<5)+68|0;l=c[k>>2]|0;g=j+1|0;c[D>>2]=0;if(g>>>0>l>>>0){h=c[b+(d<<5)+88>>2]|0;f=l;do f=f+16+(f>>>1)|0;while(f>>>0>>0);j=f;g=b+(d<<5)+72|0;c[g>>2]=hh(h,8,l,j,c[g>>2]|0,D)|0;f=c[D>>2]|0;if(f){H=52;break}f=b+(d<<5)+76|0;h=hh(h,1,l,j,c[f>>2]|0,D)|0;c[f>>2]=h;f=c[D>>2]|0;if(f){H=52;break}c[k>>2]=j;j=c[N>>2]|0;f=h}else{g=b+(d<<5)+72|0;f=c[b+(d<<5)+76>>2]|0}E=L;F=c[E+4>>2]|0;H=(c[g>>2]|0)+(j<<3)|0;c[H>>2]=c[E>>2];c[H+4>>2]=F;a[f+j>>0]=1;c[N>>2]=(c[N>>2]|0)+1;f=0;H=52}else{F=L;H=c[F+4>>2]|0;f=(c[b+(d<<5)+72>>2]|0)+(j+-1<<3)|0;c[f>>2]=c[F>>2];c[f+4>>2]=H;f=0;H=52}while(0);if((H|0)==52)a[u>>0]=0;if(f|e){N=f;i=O;return N|0}Ri(L,G,(c[b+4>>2]|0)+M|0);j=(c[L>>2]|0)+(c[q>>2]|0)|0;c[L>>2]=j;f=(c[p>>2]|0)+(c[t>>2]|0)|0;c[p>>2]=f;g=c[N>>2]|0;do if(!(a[u>>0]|0)){if(((g|0)!=0?(I=g+-1|0,J=c[b+(d<<5)+72>>2]|0,((c[J+(I<<3)>>2]|0)+1-j|0)>>>0<3):0)?(1-f+(c[J+(I<<3)+4>>2]|0)|0)>>>0<3:0){N=0;i=O;return N|0}m=b+(d<<5)+68|0;l=c[m>>2]|0;j=g+1|0;c[K>>2]=0;if(j>>>0>l>>>0){k=c[b+(d<<5)+88>>2]|0;f=l;do f=f+16+(f>>>1)|0;while(f>>>0>>0);g=f;h=b+(d<<5)+72|0;c[h>>2]=hh(k,8,l,g,c[h>>2]|0,K)|0;f=c[K>>2]|0;if(f)break;f=b+(d<<5)+76|0;j=hh(k,1,l,g,c[f>>2]|0,K)|0;c[f>>2]=j;f=c[K>>2]|0;if(f)break;c[m>>2]=g;g=c[N>>2]|0;f=j}else{h=b+(d<<5)+72|0;f=c[b+(d<<5)+76>>2]|0}e=c[L+4>>2]|0;b=(c[h>>2]|0)+(g<<3)|0;c[b>>2]=c[L>>2];c[b+4>>2]=e;a[f+g>>0]=1;c[N>>2]=(c[N>>2]|0)+1;f=0}else{e=L;N=c[e+4>>2]|0;f=(c[b+(d<<5)+72>>2]|0)+(g+-1<<3)|0;c[f>>2]=c[e>>2];c[f+4>>2]=N;f=0}while(0);a[u>>0]=0;N=f;i=O;return N|0}}if(!h){Ri(F,Xg(c[w>>2]|0,n)|0,v);n=b+8|0;f=(c[F>>2]|0)+(c[n>>2]|0)|0;c[F>>2]=f;m=b+12|0;o=F+4|0;g=(c[o>>2]|0)+(c[m>>2]|0)|0;c[o>>2]=g;r=b+(d<<5)+80|0;j=c[N>>2]|0;do if(!(a[r>>0]|0)){if(((j|0)!=0?(p=j+-1|0,q=c[b+(d<<5)+72>>2]|0,((c[q+(p<<3)>>2]|0)+1-f|0)>>>0<3):0)?(1-g+(c[q+(p<<3)+4>>2]|0)|0)>>>0<3:0){f=0;break}k=b+(d<<5)+68|0;l=c[k>>2]|0;g=j+1|0;c[E>>2]=0;if(g>>>0>l>>>0){h=c[b+(d<<5)+88>>2]|0;f=l;do f=f+16+(f>>>1)|0;while(f>>>0>>0);j=f;g=b+(d<<5)+72|0;c[g>>2]=hh(h,8,l,j,c[g>>2]|0,E)|0;f=c[E>>2]|0;if(f){H=81;break}f=b+(d<<5)+76|0;h=hh(h,1,l,j,c[f>>2]|0,E)|0;c[f>>2]=h;f=c[E>>2]|0;if(f){H=81;break}c[k>>2]=j;j=c[N>>2]|0;f=h}else{g=b+(d<<5)+72|0;f=c[b+(d<<5)+76>>2]|0}K=F;L=c[K+4>>2]|0;H=(c[g>>2]|0)+(j<<3)|0;c[H>>2]=c[K>>2];c[H+4>>2]=L;a[f+j>>0]=1;c[N>>2]=(c[N>>2]|0)+1;f=0;H=81}else{L=F;H=c[L+4>>2]|0;f=(c[b+(d<<5)+72>>2]|0)+(j+-1<<3)|0;c[f>>2]=c[L>>2];c[f+4>>2]=H;f=0;H=81}while(0);if((H|0)==81)a[r>>0]=0;if(f|e){N=f;i=O;return N|0}Ri(F,c[w>>2]|0,(c[b+4>>2]|0)+M|0);j=(c[F>>2]|0)+(c[n>>2]|0)|0;c[F>>2]=j;f=(c[o>>2]|0)+(c[m>>2]|0)|0;c[o>>2]=f;g=c[N>>2]|0;do if(!(a[r>>0]|0)){if(((g|0)!=0?(A=g+-1|0,B=c[b+(d<<5)+72>>2]|0,((c[B+(A<<3)>>2]|0)+1-j|0)>>>0<3):0)?(1-f+(c[B+(A<<3)+4>>2]|0)|0)>>>0<3:0){N=0;i=O;return N|0}m=b+(d<<5)+68|0;l=c[m>>2]|0;j=g+1|0;c[C>>2]=0;if(j>>>0>l>>>0){k=c[b+(d<<5)+88>>2]|0;f=l;do f=f+16+(f>>>1)|0;while(f>>>0>>0);g=f;h=b+(d<<5)+72|0;c[h>>2]=hh(k,8,l,g,c[h>>2]|0,C)|0;f=c[C>>2]|0;if(f)break;f=b+(d<<5)+76|0;j=hh(k,1,l,g,c[f>>2]|0,C)|0;c[f>>2]=j;f=c[C>>2]|0;if(f)break;c[m>>2]=g;g=c[N>>2]|0;f=j}else{h=b+(d<<5)+72|0;f=c[b+(d<<5)+76>>2]|0}L=F;e=c[L+4>>2]|0;b=(c[h>>2]|0)+(g<<3)|0;c[b>>2]=c[L>>2];c[b+4>>2]=e;a[f+g>>0]=1;c[N>>2]=(c[N>>2]|0)+1;f=0}else{e=F;N=c[e+4>>2]|0;f=(c[b+(d<<5)+72>>2]|0)+(g+-1<<3)|0;c[f>>2]=c[e>>2];c[f+4>>2]=N;f=0}while(0);a[r>>0]=0;N=f;i=O;return N|0}else H=11}else H=11;while(0);if((H|0)==11)f=b+4|0;Ri(u,G,(c[f>>2]|0)+M|0);f=(c[u>>2]|0)+(c[b+8>>2]|0)|0;c[u>>2]=f;n=u+4|0;j=(c[n>>2]|0)+(c[b+12>>2]|0)|0;c[n>>2]=j;n=b+(d<<5)+80|0;a[n>>0]=0;g=c[N>>2]|0;if(((g|0)!=0?(k=g+-1|0,m=c[b+(d<<5)+72>>2]|0,((c[m+(k<<3)>>2]|0)+1-f|0)>>>0<3):0)?((c[m+(k<<3)+4>>2]|0)+1-j|0)>>>0<3:0){N=0;i=O;return N|0}m=b+(d<<5)+68|0;k=c[m>>2]|0;j=g+1|0;c[t>>2]=0;if(j>>>0>k>>>0){l=c[b+(d<<5)+88>>2]|0;f=k;do f=f+16+(f>>>1)|0;while(f>>>0>>0);g=f;h=b+(d<<5)+72|0;c[h>>2]=hh(l,8,k,g,c[h>>2]|0,t)|0;f=c[t>>2]|0;if(!f){f=b+(d<<5)+76|0;j=hh(l,1,k,g,c[f>>2]|0,t)|0;c[f>>2]=j;f=c[t>>2]|0;if(!f){c[m>>2]=g;g=c[N>>2]|0;f=j;H=22}}}else{h=b+(d<<5)+72|0;f=c[b+(d<<5)+76>>2]|0;H=22}if((H|0)==22){L=u;e=c[L+4>>2]|0;b=(c[h>>2]|0)+(g<<3)|0;c[b>>2]=c[L>>2];c[b+4>>2]=e;a[f+g>>0]=1;c[N>>2]=(c[N>>2]|0)+1;f=0}a[n>>0]=0;N=f;i=O;return N|0}function zr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+32|0;z=A+28|0;x=A+24|0;y=A;s=A+16|0;v=A+8|0;e=c[b+44>>2]|0;if((e|0)==2){m=c[b+60>>2]|0;Ri(s,m,d+5898240|0);Ri(y,m,d);n=b+8|0;e=(c[s>>2]|0)+(c[n>>2]|0)+(c[y>>2]|0)|0;c[y>>2]=e;o=b+12|0;p=s+4|0;r=y+4|0;f=(c[p>>2]|0)+(c[o>>2]|0)+(c[r>>2]|0)|0;c[r>>2]=f;w=b+80|0;v=b+64|0;h=c[v>>2]|0;do if(!(a[w>>0]|0)){if(((h|0)!=0?(j=h+-1|0,l=c[b+72>>2]|0,((c[l+(j<<3)>>2]|0)+1-e|0)>>>0<3):0)?(1-f+(c[l+(j<<3)+4>>2]|0)|0)>>>0<3:0)break;j=b+68|0;k=c[j>>2]|0;f=h+1|0;c[z>>2]=0;do if(f>>>0>k>>>0){g=c[b+88>>2]|0;e=k;do e=e+16+(e>>>1)|0;while(e>>>0>>0);h=e;f=b+72|0;c[f>>2]=hh(g,8,k,h,c[f>>2]|0,z)|0;e=c[z>>2]|0;if(!e){e=b+76|0;g=hh(g,1,k,h,c[e>>2]|0,z)|0;c[e>>2]=g;e=c[z>>2]|0;if(!e){c[j>>2]=h;h=c[v>>2]|0;e=g;break}}a[w>>0]=0;b=e;i=A;return b|0}else{f=b+72|0;e=c[b+76>>2]|0}while(0);l=y;z=c[l+4>>2]|0;q=(c[f>>2]|0)+(h<<3)|0;c[q>>2]=c[l>>2];c[q+4>>2]=z;a[e+h>>0]=1;c[v>>2]=(c[v>>2]|0)+1;q=16}else{l=y;z=c[l+4>>2]|0;q=(c[b+72>>2]|0)+(h+-1<<3)|0;c[q>>2]=c[l>>2];c[q+4>>2]=z;q=16}while(0);if((q|0)==16)a[w>>0]=0;Ri(s,m,d+-5898240|0);Ri(y,m,d);h=(c[n>>2]|0)+(c[s>>2]|0)+(c[y>>2]|0)|0;c[y>>2]=h;e=(c[o>>2]|0)+(c[p>>2]|0)+(c[r>>2]|0)|0;c[r>>2]=e;f=c[v>>2]|0;do if(!(a[w>>0]|0)){if(((f|0)!=0?(t=f+-1|0,u=c[b+72>>2]|0,((c[u+(t<<3)>>2]|0)+1-h|0)>>>0<3):0)?(1-e+(c[u+(t<<3)+4>>2]|0)|0)>>>0<3:0){b=0;i=A;return b|0}l=b+68|0;k=c[l>>2]|0;h=f+1|0;c[x>>2]=0;if(h>>>0>k>>>0){j=c[b+88>>2]|0;e=k;do e=e+16+(e>>>1)|0;while(e>>>0>>0);f=e;g=b+72|0;c[g>>2]=hh(j,8,k,f,c[g>>2]|0,x)|0;e=c[x>>2]|0;if(e)break;e=b+76|0;h=hh(j,1,k,f,c[e>>2]|0,x)|0;c[e>>2]=h;e=c[x>>2]|0;if(e)break;c[l>>2]=f;f=c[v>>2]|0;e=h}else{g=b+72|0;e=c[b+76>>2]|0}d=y;z=c[d+4>>2]|0;b=(c[g>>2]|0)+(f<<3)|0;c[b>>2]=c[d>>2];c[b+4>>2]=z;a[e+f>>0]=1;c[v>>2]=(c[v>>2]|0)+1;e=0}else{d=y;z=c[d+4>>2]|0;e=(c[b+72>>2]|0)+(f+-1<<3)|0;c[e>>2]=c[d>>2];c[e+4>>2]=z;e=0}while(0);a[w>>0]=0;b=e;i=A;return b|0}else if(!e){l=c[b+60>>2]|0;Ri(v,l,d+5898240|0);m=b+8|0;e=(c[v>>2]|0)+(c[m>>2]|0)|0;c[v>>2]=e;n=b+12|0;o=v+4|0;f=(c[o>>2]|0)+(c[n>>2]|0)|0;c[o>>2]=f;t=b+80|0;s=b+64|0;h=c[s>>2]|0;do if(!(a[t>>0]|0)){if(((h|0)!=0?(g=h+-1|0,k=c[b+72>>2]|0,((c[k+(g<<3)>>2]|0)+1-e|0)>>>0<3):0)?(1-f+(c[k+(g<<3)+4>>2]|0)|0)>>>0<3:0)break;j=b+68|0;k=c[j>>2]|0;f=h+1|0;c[z>>2]=0;do if(f>>>0>k>>>0){g=c[b+88>>2]|0;e=k;do e=e+16+(e>>>1)|0;while(e>>>0>>0);h=e;f=b+72|0;c[f>>2]=hh(g,8,k,h,c[f>>2]|0,z)|0;e=c[z>>2]|0;if(!e){e=b+76|0;g=hh(g,1,k,h,c[e>>2]|0,z)|0;c[e>>2]=g;e=c[z>>2]|0;if(!e){c[j>>2]=h;h=c[s>>2]|0;e=g;break}}a[t>>0]=0;b=e;i=A;return b|0}else{f=b+72|0;e=c[b+76>>2]|0}while(0);x=v;y=c[x+4>>2]|0;q=(c[f>>2]|0)+(h<<3)|0;c[q>>2]=c[x>>2];c[q+4>>2]=y;a[e+h>>0]=1;c[s>>2]=(c[s>>2]|0)+1;q=45}else{x=v;y=c[x+4>>2]|0;q=(c[b+72>>2]|0)+(h+-1<<3)|0;c[q>>2]=c[x>>2];c[q+4>>2]=y;q=45}while(0);if((q|0)==45)a[t>>0]=0;Ri(v,l,d+-5898240|0);h=(c[v>>2]|0)+(c[m>>2]|0)|0;c[v>>2]=h;e=(c[o>>2]|0)+(c[n>>2]|0)|0;c[o>>2]=e;f=c[s>>2]|0;do if(!(a[t>>0]|0)){if(((f|0)!=0?(p=f+-1|0,r=c[b+72>>2]|0,((c[r+(p<<3)>>2]|0)+1-h|0)>>>0<3):0)?(1-e+(c[r+(p<<3)+4>>2]|0)|0)>>>0<3:0){b=0;i=A;return b|0}l=b+68|0;k=c[l>>2]|0;h=f+1|0;c[z>>2]=0;if(h>>>0>k>>>0){j=c[b+88>>2]|0;e=k;do e=e+16+(e>>>1)|0;while(e>>>0>>0);f=e;g=b+72|0;c[g>>2]=hh(j,8,k,f,c[g>>2]|0,z)|0;e=c[z>>2]|0;if(e)break;e=b+76|0;h=hh(j,1,k,f,c[e>>2]|0,z)|0;c[e>>2]=h;e=c[z>>2]|0;if(e)break;c[l>>2]=f;f=c[s>>2]|0;e=h}else{g=b+72|0;e=c[b+76>>2]|0}d=v;z=c[d+4>>2]|0;b=(c[g>>2]|0)+(f<<3)|0;c[b>>2]=c[d>>2];c[b+4>>2]=z;a[e+f>>0]=1;c[s>>2]=(c[s>>2]|0)+1;e=0}else{d=v;z=c[d+4>>2]|0;e=(c[b+72>>2]|0)+(f+-1<<3)|0;c[e>>2]=c[d>>2];c[e+4>>2]=z;e=0}while(0);a[t>>0]=0;b=e;i=A;return b|0}else if((e|0)==1){c[b>>2]=d;c[b+4>>2]=d+11796480;b=gu(b,0)|0;i=A;return b|0}else{b=0;i=A;return b|0}return 0}function Ar(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;if((e|0)==0?(c[a+4>>2]|0)>>>0>>0:0){a=1;i=g;return a|0}f=c[a+12>>2]|0;if((c[a+8>>2]|0)!=(b|0))yc(f|0,b|0,0)|0;a=Na(d|0,1,e|0,f|0)|0;i=g;return a|0}function Br(a){a=a|0;var b=0,d=0;b=i;d=a+12|0;Ac(c[d>>2]|0)|0;c[d>>2]=0;c[a+4>>2]=0;c[a>>2]=0;i=b;return}function Cr(a,b){a=a|0;b=b|0;a=i;b=Afa(b)|0;i=a;return b|0}function Dr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=i;a=Dfa(d,c)|0;i=b;return a|0}function Er(a,b){a=a|0;b=b|0;a=i;Bfa(b);i=a;return}function Fr(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;n=o;f=o+4|0;e=Hh(b,0)|0;c[n>>2]=e;if(e){b=e;i=o;return b|0}e=pi(b,f,4)|0;c[n>>2]=e;if(e){b=e;i=o;return b|0}if((((a[f>>0]|0)==31?(a[f+1>>0]|0)==-117:0)?(a[f+2>>0]|0)==8:0)?(j=f+3|0,(d[j>>0]|0)<=31):0){f=qi(b,6)|0;c[n>>2]=f;e=a[j>>0]|0;do if(e&4){e=Ii(b,n)|0;f=c[n>>2]|0;if(f){b=f;i=o;return b|0}e=qi(b,e&65535)|0;c[n>>2]=e;if(!e){e=a[j>>0]|0;f=0;break}else{b=e;i=o;return b|0}}while(0);do if(e&8){while(1){e=Hi(b,n)|0;f=c[n>>2]|0;if(f){l=f;e=22;break}if(!(e<<24>>24)){e=15;break}}if((e|0)==15){g=a[j>>0]|0;h=0;break}else if((e|0)==22){i=o;return l|0}}else{g=e;h=f}while(0);do if(g&16){while(1){e=Hi(b,n)|0;f=c[n>>2]|0;if(f){l=f;e=22;break}if(!(e<<24>>24)){e=19;break}}if((e|0)==19){k=a[j>>0]|0;m=0;break}else if((e|0)==22){i=o;return l|0}}else{k=g;m=h}while(0);if(!(k&2)){b=m;i=o;return b|0}b=qi(b,2)|0;c[n>>2]=b;i=o;return b|0}c[n>>2]=3;b=3;i=o;return b|0}function Gr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;i=i+16|0;c=ch(a,ea(c,b)|0,d)|0;i=d;return c|0}function Hr(a,b){a=a|0;b=b|0;var c=0;c=i;eh(a,b);i=c;return}function Ir(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;if(!a){a=-2;i=p;return a|0}m=a+24|0;c[m>>2]=0;k=a+32|0;d=c[k>>2]|0;if(!d){c[k>>2]=84;c[a+40>>2]=0;d=84}n=a+36|0;if(!(c[n>>2]|0))c[n>>2]=70;o=a+40|0;d=Od[d&255](c[o>>2]|0,1,24)|0;j=a+28|0;c[j>>2]=d;if(!d){a=-4;i=p;return a|0}c[d+20>>2]=0;e=(b|0)<0?0-b|0:b;c[d+12>>2]=b>>>31;if((e&-8|0)!=8){Kr(a)|0;a=-2;i=p;return a|0}c[d+16>>2]=e;f=(b|0)<0;g=f?0:85;e=1<>2]&255](c[o>>2]|0,1,64)|0;h=(l|0)==0;a:do if(h)c[(c[j>>2]|0)+20>>2]=l;else{d=Od[c[k>>2]&255](c[o>>2]|0,8,1440)|0;b=l+36|0;c[b>>2]=d;do if(!d)Jd[c[n>>2]&255](c[o>>2]|0,l);else{d=Od[c[k>>2]&255](c[o>>2]|0,1,e)|0;c[l+40>>2]=d;if(!d){Jd[c[n>>2]&255](c[o>>2]|0,c[b>>2]|0);Jd[c[n>>2]&255](c[o>>2]|0,l);break}c[l+44>>2]=d+e;c[l+56>>2]=g;c[l>>2]=0;c[l+28>>2]=0;c[l+32>>2]=0;c[l+52>>2]=d;c[l+48>>2]=d;if(f){d=c[j>>2]|0;c[d+20>>2]=l;if(h)break a}else{d=Od[g&255](0,0,0)|0;c[l+60>>2]=d;c[a+48>>2]=d;d=c[j>>2]|0;c[d+20>>2]=l}if(!d){a=0;i=p;return a|0}c[a+20>>2]=0;c[a+8>>2]=0;c[m>>2]=0;c[d>>2]=(c[d+12>>2]|0)!=0?7:0;d=c[l>>2]|0;if((d&-2|0)==4){Jd[c[n>>2]&255](c[o>>2]|0,c[l+12>>2]|0);d=c[l>>2]|0}if((d|0)==6)Jd[c[n>>2]&255](c[o>>2]|0,c[l+4>>2]|0);c[l>>2]=0;c[l+28>>2]=0;c[l+32>>2]=0;d=c[l+40>>2]|0;c[l+52>>2]=d;c[l+48>>2]=d;d=c[l+56>>2]|0;if(!d){a=0;i=p;return a|0}o=Od[d&255](0,0,0)|0;c[l+60>>2]=o;c[a+48>>2]=o;a=0;i=p;return a|0}while(0);c[(c[j>>2]|0)+20>>2]=0}while(0);Kr(a)|0;a=-4;i=p;return a|0}function Jr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;z=a+8264|0;f=c[z>>2]|0;if(f>>>0>b>>>0){if(Hh(c[a>>2]|0,c[a+68>>2]|0)|0){a=0;i=A;return a|0}f=c[a+40>>2]|0;if(f){c[a+32>>2]=0;c[a+20>>2]=0;c[a+36>>2]=0;c[f>>2]=(c[f+12>>2]|0)!=0?7:0;h=c[f+20>>2]|0;f=c[h>>2]|0;if((f&-2|0)==4){Jd[c[a+48>>2]&255](c[a+52>>2]|0,c[h+12>>2]|0);f=c[h>>2]|0}if((f|0)==6)Jd[c[a+48>>2]&255](c[a+52>>2]|0,c[h+4>>2]|0);c[h>>2]=0;c[h+28>>2]=0;c[h+32>>2]=0;f=c[h+40>>2]|0;c[h+52>>2]=f;c[h+48>>2]=f;f=c[h+56>>2]|0;if(f){t=Od[f&255](0,0,0)|0;c[h+60>>2]=t;c[a+60>>2]=t}}c[a+16>>2]=0;c[a+12>>2]=a+72;c[a+28>>2]=0;c[a+24>>2]=a+4168;f=a+8264|0;c[a+8272>>2]=f;c[a+8268>>2]=f;c[z>>2]=0;f=0}do if(f>>>0>>0){k=b-f|0;s=a+8272|0;h=c[s>>2]|0;t=a+8268|0;b=c[t>>2]|0;j=h-b|0;j=j>>>0>>0?j:k;b=b+j|0;c[t>>2]=b;c[z>>2]=j+f;a:do if((j|0)!=(k|0)){m=a+12|0;n=a+4168|0;l=a+24|0;o=a+28|0;p=a+16|0;q=a+72|0;r=a+12|0;b=j;b:while(1){k=k-b|0;c[t>>2]=n;c[l>>2]=n;c[o>>2]=4096;while(1){if(!(c[p>>2]|0)){h=c[a>>2]|0;f=c[h+20>>2]|0;if(f){f=ce[f&255](h,c[h+8>>2]|0,q,4096)|0;if(!f){f=0;b=43;break b}}else{b=c[h+8>>2]|0;f=(c[h+4>>2]|0)-b|0;f=f>>>0>4096?4096:f;if(!f){f=0;b=43;break b}Aga(q|0,(c[h>>2]|0)+b|0,f|0)|0}j=h+8|0;c[j>>2]=(c[j>>2]|0)+f;c[r>>2]=q;c[p>>2]=f}f=Nr(m,0)|0;if((f|0)==1){b=24;break}else if(f){f=0;b=43;break b}if(!(c[o>>2]|0)){b=14;break}}if((b|0)==14){v=c[s>>2]|0;u=c[t>>2]|0}else if((b|0)==24){f=c[l>>2]|0;c[s>>2]=f;b=c[t>>2]|0;if((f|0)==(b|0)){f=0;b=43;break}else{v=f;u=b}}b=v-u|0;b=b>>>0>>0?b:k;f=u+b|0;c[t>>2]=f;c[z>>2]=b+(c[z>>2]|0);if((k|0)==(b|0)){g=f;w=v;break a}}if((b|0)==43){i=A;return f|0}}else{g=b;w=h}while(0);if(!e){a=0;i=A;return a|0}else f=w}else if(!e){a=0;i=A;return a|0}else{f=c[a+8272>>2]|0;g=c[a+8268>>2]|0;break}while(0);s=a+8272|0;t=a+8268|0;f=f-g|0;f=f>>>0>>0?f:e;Aga(d|0,g|0,f|0)|0;c[t>>2]=(c[t>>2]|0)+f;c[z>>2]=f+(c[z>>2]|0);if((f|0)==(e|0)){a=e;i=A;return a|0}l=a+12|0;m=a+4168|0;n=a+24|0;o=a+28|0;p=a+16|0;q=a+72|0;r=a+12|0;b=f;j=e;k=d;c:while(1){j=j-b|0;k=k+b|0;c[t>>2]=m;c[n>>2]=m;c[o>>2]=4096;while(1){if(!(c[p>>2]|0)){h=c[a>>2]|0;b=c[h+20>>2]|0;if(b){b=ce[b&255](h,c[h+8>>2]|0,q,4096)|0;if(!b){b=43;break c}}else{g=c[h+8>>2]|0;b=(c[h+4>>2]|0)-g|0;b=b>>>0>4096?4096:b;if(!b){b=43;break c}Aga(q|0,(c[h>>2]|0)+g|0,b|0)|0}d=h+8|0;c[d>>2]=(c[d>>2]|0)+b;c[r>>2]=q;c[p>>2]=b}g=Nr(l,0)|0;if((g|0)==1){b=41;break}else if(g){b=43;break c}if(!(c[o>>2]|0)){b=31;break}}if((b|0)==31){y=c[s>>2]|0;x=c[t>>2]|0}else if((b|0)==41){g=c[n>>2]|0;c[s>>2]=g;h=c[t>>2]|0;if((g|0)==(h|0)){b=43;break}else{y=g;x=h}}b=y-x|0;b=b>>>0>>0?b:j;Aga(k|0,x|0,b|0)|0;f=b+f|0;c[t>>2]=(c[t>>2]|0)+b;c[z>>2]=b+(c[z>>2]|0);if((j|0)==(b|0)){b=43;break}}if((b|0)==43){i=A;return f|0}return 0}function Kr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;j=i;if(!a){h=-2;i=j;return h|0}h=a+28|0;b=c[h>>2]|0;if(!b){h=-2;i=j;return h|0}g=a+36|0;d=c[g>>2]|0;if(!d){h=-2;i=j;return h|0}f=c[b+20>>2]|0;if(!f)e=a+40|0;else{b=c[f>>2]|0;if((b&-2|0)==4){Jd[d&255](c[a+40>>2]|0,c[f+12>>2]|0);b=c[f>>2]|0}if((b|0)==6)Jd[c[g>>2]&255](c[a+40>>2]|0,c[f+4>>2]|0);c[f>>2]=0;c[f+28>>2]=0;c[f+32>>2]=0;d=f+40|0;b=c[d>>2]|0;c[f+52>>2]=b;c[f+48>>2]=b;e=c[f+56>>2]|0;if(e){b=Od[e&255](0,0,0)|0;c[f+60>>2]=b;c[a+48>>2]=b;b=c[d>>2]|0}e=a+40|0;Jd[c[g>>2]&255](c[e>>2]|0,b);Jd[c[g>>2]&255](c[e>>2]|0,c[f+36>>2]|0);Jd[c[g>>2]&255](c[e>>2]|0,f);d=c[g>>2]|0;b=c[h>>2]|0}Jd[d&255](c[e>>2]|0,b);c[h>>2]=0;h=0;i=j;return h|0}function Lr(a){a=a|0;var b=0,d=0,e=0;e=i;b=a+12|0;d=c[b>>2]|0;if(!d){i=e;return}a=c[a+28>>2]|0;Kr(d+12|0)|0;c[d+44>>2]=0;c[d+48>>2]=0;c[d+52>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;eh(a,d);c[b>>2]=0;i=e;return}function Mr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;b=Jr(c[a+12>>2]|0,b,d,e)|0;i=f;return b|0} +function Ifa(a){a=a|0;if((a+-48|0)>>>0<10)a=1;else a=((a|32)+-97|0)>>>0<6;return a&1|0}function Jfa(a){a=a|0;var b=0,c=0;c=i;b=(Hfa(a)|0)==0;i=c;return (b?a:a|32)|0}function Kfa(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;if(e>>>0>36){c[(td()|0)>>2]=22;r=0;s=0;I=r;i=t;return s|0}s=b+4|0;r=b+100|0;do{j=c[s>>2]|0;if(j>>>0<(c[r>>2]|0)>>>0){c[s>>2]=j+1;j=d[j>>0]|0}else j=Nfa(b)|0}while((Gfa(j)|0)!=0);do if((j|0)==43|(j|0)==45){l=((j|0)==45)<<31>>31;j=c[s>>2]|0;if(j>>>0<(c[r>>2]|0)>>>0){c[s>>2]=j+1;j=d[j>>0]|0;q=l;break}else{j=Nfa(b)|0;q=l;break}}else q=0;while(0);k=(e|0)==0;do if((e&-17|0)==0&(j|0)==48){l=c[s>>2]|0;if(l>>>0<(c[r>>2]|0)>>>0){c[s>>2]=l+1;j=d[l>>0]|0}else j=Nfa(b)|0;if((j|32|0)!=120)if(k){e=8;o=46;break}else{o=32;break}e=c[s>>2]|0;if(e>>>0<(c[r>>2]|0)>>>0){c[s>>2]=e+1;j=d[e>>0]|0}else j=Nfa(b)|0;if((d[j+379409>>0]|0)>15){e=(c[r>>2]|0)==0;if(!e)c[s>>2]=(c[s>>2]|0)+-1;if(!f){Mfa(b,0);r=0;s=0;I=r;i=t;return s|0}if(e){r=0;s=0;I=r;i=t;return s|0}c[s>>2]=(c[s>>2]|0)+-1;r=0;s=0;I=r;i=t;return s|0}else{e=16;o=46}}else{e=k?10:e;if((d[j+379409>>0]|0)>>>0>>0)o=32;else{if(c[r>>2]|0)c[s>>2]=(c[s>>2]|0)+-1;Mfa(b,0);c[(td()|0)>>2]=22;r=0;s=0;I=r;i=t;return s|0}}while(0);if((o|0)==32)if((e|0)==10){e=j+-48|0;if(e>>>0<10){l=e;e=0;do{e=(e*10|0)+l|0;j=c[s>>2]|0;if(j>>>0<(c[r>>2]|0)>>>0){c[s>>2]=j+1;j=d[j>>0]|0}else j=Nfa(b)|0;l=j+-48|0}while(l>>>0<10&e>>>0<429496729);l=0}else{e=0;l=0}k=j+-48|0;if(k>>>0<10){while(1){m=Tga(e|0,l|0,10,0)|0;f=I;n=((k|0)<0)<<31>>31;p=~n;if(f>>>0>p>>>0|(f|0)==(p|0)&m>>>0>~k>>>0){m=e;break}e=Iga(m|0,f|0,k|0,n|0)|0;l=I;j=c[s>>2]|0;if(j>>>0<(c[r>>2]|0)>>>0){c[s>>2]=j+1;j=d[j>>0]|0}else j=Nfa(b)|0;k=j+-48|0;if(!(k>>>0<10&(l>>>0<429496729|(l|0)==429496729&e>>>0<2576980378))){m=e;break}}if(k>>>0>9)e=m;else{e=10;o=72}}}else o=46;a:do if((o|0)==46){if(!(e+-1&e)){o=a[379672+((e*23|0)>>>5&7)>>0]|0;l=a[j+379409>>0]|0;k=l&255;if(k>>>0>>0){m=0;do{m=k|m<>2]|0;if(l>>>0<(c[r>>2]|0)>>>0){c[s>>2]=l+1;j=d[l>>0]|0}else j=Nfa(b)|0;l=a[j+379409>>0]|0;k=l&255}while(k>>>0>>0&m>>>0<134217728);k=0}else{k=0;m=0}f=Lga(-1,-1,o|0)|0;n=I;if((l&255)>>>0>=e>>>0|(k>>>0>n>>>0|(k|0)==(n|0)&m>>>0>f>>>0)){l=k;o=72;break}else j=k;while(1){m=Fga(m|0,j|0,o|0)|0;k=I;m=l&255|m;l=c[s>>2]|0;if(l>>>0<(c[r>>2]|0)>>>0){c[s>>2]=l+1;j=d[l>>0]|0}else j=Nfa(b)|0;l=a[j+379409>>0]|0;if((l&255)>>>0>=e>>>0|(k>>>0>n>>>0|(k|0)==(n|0)&m>>>0>f>>>0)){l=k;o=72;break a}else j=k}}k=a[j+379409>>0]|0;l=k&255;if(l>>>0>>0){m=0;do{m=l+(ea(m,e)|0)|0;j=c[s>>2]|0;if(j>>>0<(c[r>>2]|0)>>>0){c[s>>2]=j+1;j=d[j>>0]|0}else j=Nfa(b)|0;k=a[j+379409>>0]|0;l=k&255}while(l>>>0>>0&m>>>0<119304647);l=0}else{m=0;l=0}if((k&255)>>>0>>0){o=Uga(-1,-1,e|0,0)|0;p=I;while(1){if(l>>>0>p>>>0|(l|0)==(p|0)&m>>>0>o>>>0){o=72;break a}f=Tga(m|0,l|0,e|0,0)|0;n=I;k=k&255;if(n>>>0>4294967295|(n|0)==-1&f>>>0>~k>>>0){o=72;break a}m=Iga(k|0,0,f|0,n|0)|0;l=I;j=c[s>>2]|0;if(j>>>0<(c[r>>2]|0)>>>0){c[s>>2]=j+1;j=d[j>>0]|0}else j=Nfa(b)|0;k=a[j+379409>>0]|0;if((k&255)>>>0>=e>>>0){o=72;break}}}else o=72}while(0);if((o|0)==72)if((d[j+379409>>0]|0)>>>0>>0){do{j=c[s>>2]|0;if(j>>>0<(c[r>>2]|0)>>>0){c[s>>2]=j+1;j=d[j>>0]|0}else j=Nfa(b)|0}while((d[j+379409>>0]|0)>>>0>>0);c[(td()|0)>>2]=34;l=h;e=g}else e=m;if(c[r>>2]|0)c[s>>2]=(c[s>>2]|0)+-1;if(!(l>>>0>>0|(l|0)==(h|0)&e>>>0>>0)){if(!((g&1|0)!=0|0!=0|(q|0)!=0)){c[(td()|0)>>2]=34;s=Iga(g|0,h|0,-1,-1)|0;r=I;I=r;i=t;return s|0}if(l>>>0>h>>>0|(l|0)==(h|0)&e>>>0>g>>>0){c[(td()|0)>>2]=34;r=h;s=g;I=r;i=t;return s|0}}s=((q|0)<0)<<31>>31;s=Hga(e^q|0,l^s|0,q|0,s|0)|0;r=I;I=r;i=t;return s|0}function Lfa(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0.0,L=0.0;J=i;i=i+512|0;F=J;if((e|0)==2){l=53;G=-1074}else if((e|0)==1){l=53;G=-1074}else if(!e){l=24;G=-149}else{s=0.0;i=J;return +s}C=b+4|0;B=b+100|0;do{e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;e=d[e>>0]|0}else e=Nfa(b)|0}while((Gfa(e)|0)!=0);do if((e|0)==43|(e|0)==45){h=1-(((e|0)==45&1)<<1)|0;e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;e=d[e>>0]|0;H=h;break}else{e=Nfa(b)|0;H=h;break}}else H=1;while(0);h=e;e=0;do{if((h|32|0)!=(a[379688+e>>0]|0))break;do if(e>>>0<7){h=c[C>>2]|0;if(h>>>0<(c[B>>2]|0)>>>0){c[C>>2]=h+1;h=d[h>>0]|0;break}else{h=Nfa(b)|0;break}}while(0);e=e+1|0}while(e>>>0<8);do if((e|0)==3)A=23;else if((e|0)!=8){n=(f|0)!=0;if(e>>>0>3&n)if((e|0)==8)break;else{A=23;break}a:do if(!e){e=0;do{if((h|32|0)!=(a[379704+e>>0]|0))break a;do if(e>>>0<2){h=c[C>>2]|0;if(h>>>0<(c[B>>2]|0)>>>0){c[C>>2]=h+1;h=d[h>>0]|0;break}else{h=Nfa(b)|0;break}}while(0);e=e+1|0}while(e>>>0<3)}while(0);if(!e){do if((h|0)==48){e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;e=d[e>>0]|0}else e=Nfa(b)|0;if((e|32|0)!=120){if(!(c[B>>2]|0)){e=48;break}c[C>>2]=(c[C>>2]|0)+-1;e=48;break}e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;n=d[e>>0]|0;h=0}else{n=Nfa(b)|0;h=0}while(1){if((n|0)==46){A=70;break}else if((n|0)!=48){e=0;w=0;k=0;v=0;m=h;u=0;t=0;o=1.0;h=0;j=0.0;break}e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;n=d[e>>0]|0;h=1;continue}else{n=Nfa(b)|0;h=1;continue}}if((A|0)==70){e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;n=d[e>>0]|0}else n=Nfa(b)|0;if((n|0)==48){k=0;h=0;do{e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;n=d[e>>0]|0}else n=Nfa(b)|0;k=Iga(k|0,h|0,-1,-1)|0;h=I}while((n|0)==48);e=0;w=0;v=h;m=1;u=1;t=0;o=1.0;h=0;j=0.0}else{e=0;w=0;k=0;v=0;m=h;u=1;t=0;o=1.0;h=0;j=0.0}}b:while(1){r=n+-48|0;do if(r>>>0>=10){p=n|32;q=(n|0)==46;if(!((p+-97|0)>>>0<6|q))break b;if(q)if(!u){k=w;q=e;p=w;u=1;r=t;g=o;break}else{n=46;break b}else{n=(n|0)>57?p+-87|0:r;A=83;break}}else{n=r;A=83}while(0);if((A|0)==83){A=0;do if(!((e|0)<0|(e|0)==0&w>>>0<8)){if((e|0)<0|(e|0)==0&w>>>0<14){s=o*.0625;r=t;g=s;j=j+s*+(n|0);break}if((n|0)==0|(t|0)!=0){r=t;g=o}else{r=1;g=o;j=j+o*.5}}else{r=t;g=o;h=n+(h<<4)|0}while(0);p=Iga(w|0,e|0,1,0)|0;q=v;e=I;m=1}n=c[C>>2]|0;if(n>>>0<(c[B>>2]|0)>>>0){c[C>>2]=n+1;w=p;v=q;n=d[n>>0]|0;t=r;o=g;continue}else{w=p;v=q;n=Nfa(b)|0;t=r;o=g;continue}}if(!m){e=(c[B>>2]|0)==0;if(!e)c[C>>2]=(c[C>>2]|0)+-1;if(f){if(!e?(z=c[C>>2]|0,c[C>>2]=z+-1,(u|0)!=0):0)c[C>>2]=z+-2}else Mfa(b,0);s=+(H|0)*0.0;i=J;return +s}r=(u|0)==0;p=r?w:k;r=r?e:v;if((e|0)<0|(e|0)==0&w>>>0<8){k=w;do{h=h<<4;k=Iga(k|0,e|0,1,0)|0;e=I}while((e|0)<0|(e|0)==0&k>>>0<8)}do if((n|32|0)==112){k=wga(b,f)|0;e=I;if((k|0)==0&(e|0)==-2147483648)if(!f){Mfa(b,0);s=0.0;i=J;return +s}else{if(!(c[B>>2]|0)){k=0;e=0;break}c[C>>2]=(c[C>>2]|0)+-1;k=0;e=0;break}}else if(!(c[B>>2]|0)){k=0;e=0}else{c[C>>2]=(c[C>>2]|0)+-1;k=0;e=0}while(0);F=Fga(p|0,r|0,2)|0;F=Iga(F|0,I|0,-32,-1)|0;e=Iga(F|0,I|0,k|0,e|0)|0;k=I;if(!h){s=+(H|0)*0.0;i=J;return +s}if((k|0)>0|(k|0)==0&e>>>0>(0-G|0)>>>0){c[(td()|0)>>2]=34;s=+(H|0)*17976931348623157.0e292*17976931348623157.0e292;i=J;return +s}F=G+-106|0;E=((F|0)<0)<<31>>31;if((k|0)<(E|0)|(k|0)==(E|0)&e>>>0>>0){c[(td()|0)>>2]=34;s=+(H|0)*2.2250738585072014e-308*2.2250738585072014e-308;i=J;return +s}if((h|0)>-1){do{h=h<<1;if(!(j>=.5))g=j;else{g=j+-1.0;h=h|1}j=j+g;e=Iga(e|0,k|0,-1,-1)|0;k=I}while((h|0)>-1);r=e;n=h;o=j}else{r=e;n=h;o=j}e=Hga(32,0,G|0,((G|0)<0)<<31>>31|0)|0;e=Iga(r|0,k|0,e|0,I|0)|0;G=I;if(0>(G|0)|0==(G|0)&l>>>0>e>>>0)if((e|0)<0){h=0;A=126}else A=124;else{e=l;A=124}if((A|0)==124)if((e|0)<53){h=e;A=126}else{j=+(H|0);g=0.0}if((A|0)==126){g=+(H|0);e=h;j=g;g=+Pfa(+Xfa(1.0,84-h|0),g)}H=(e|0)<32&o!=0.0&(n&1|0)==0;g=j*(H?0.0:o)+(g+j*+(((H&1)+n|0)>>>0))-g;if(!(g!=0.0))c[(td()|0)>>2]=34;s=+Yfa(g,r);i=J;return +s}else e=h;while(0);D=G+l|0;E=0-D|0;p=0;while(1){if((e|0)==46){A=137;break}else if((e|0)!=48){h=0;n=0;q=0;break}e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;e=d[e>>0]|0;p=1;continue}else{e=Nfa(b)|0;p=1;continue}}if((A|0)==137){e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;e=d[e>>0]|0}else e=Nfa(b)|0;if((e|0)==48){h=0;e=0;while(1){h=Iga(h|0,e|0,-1,-1)|0;n=I;e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;e=d[e>>0]|0}else e=Nfa(b)|0;if((e|0)==48)e=n;else{p=1;q=1;break}}}else{h=0;n=0;q=1}}c[F>>2]=0;k=e+-48|0;r=(e|0)==46;c:do if(k>>>0<10|r){A=F+496|0;t=0;m=0;u=r;w=k;z=0;k=0;r=0;d:while(1){do if(u)if(!q){h=t;n=m;q=1}else break d;else{u=Iga(t|0,m|0,1,0)|0;m=I;v=(e|0)!=48;if((k|0)>=125){if(!v){t=u;break}c[A>>2]=c[A>>2]|1;t=u;break}p=F+(k<<2)|0;if(!z)e=w;else e=e+-48+((c[p>>2]|0)*10|0)|0;c[p>>2]=e;z=z+1|0;w=(z|0)==9;t=u;p=1;z=w?0:z;k=(w&1)+k|0;r=v?u:r}while(0);e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;e=d[e>>0]|0}else e=Nfa(b)|0;w=e+-48|0;u=(e|0)==46;if(!(w>>>0<10|u)){A=160;break c}}q=(p|0)!=0;e=z;A=168}else{t=0;m=0;z=0;k=0;r=0;A=160}while(0);do if((A|0)==160){u=(q|0)==0;h=u?t:h;u=u?m:n;q=(p|0)!=0;if(!(q&(e|32|0)==101))if((e|0)>-1){n=u;e=z;A=168;break}else{p=m;n=u;e=z;A=170;break}e=wga(b,f)|0;n=I;do if((e|0)==0&(n|0)==-2147483648)if(!f){Mfa(b,0);s=0.0;i=J;return +s}else{if(!(c[B>>2]|0)){e=0;n=0;break}c[C>>2]=(c[C>>2]|0)+-1;e=0;n=0;break}while(0);u=Iga(e|0,n|0,h|0,u|0)|0;q=t;n=I;p=m;e=z}while(0);if((A|0)==168)if(c[B>>2]|0){c[C>>2]=(c[C>>2]|0)+-1;if(q){u=h;q=t;p=m}else A=171}else{p=m;A=170}if((A|0)==170)if(q){u=h;q=t}else A=171;if((A|0)==171){c[(td()|0)>>2]=22;Mfa(b,0);s=0.0;i=J;return +s}h=c[F>>2]|0;if(!h){s=+(H|0)*0.0;i=J;return +s}if((u|0)==(q|0)&(n|0)==(p|0)&((p|0)<0|(p|0)==0&q>>>0<10)?l>>>0>30|(h>>>l|0)==0:0){s=+(H|0)*+(h>>>0);i=J;return +s}b=(G|0)/-2|0;C=((b|0)<0)<<31>>31;if((n|0)>(C|0)|(n|0)==(C|0)&u>>>0>b>>>0){c[(td()|0)>>2]=34;s=+(H|0)*17976931348623157.0e292*17976931348623157.0e292;i=J;return +s}b=G+-106|0;C=((b|0)<0)<<31>>31;if((n|0)<(C|0)|(n|0)==(C|0)&u>>>0>>0){c[(td()|0)>>2]=34;s=+(H|0)*2.2250738585072014e-308*2.2250738585072014e-308;i=J;return +s}if(e){if((e|0)<9){h=F+(k<<2)|0;m=c[h>>2]|0;do{m=m*10|0;e=e+1|0}while((e|0)!=9);c[h>>2]=m}k=k+1|0}if((r|0)<9?(r|0)<=(u|0)&(u|0)<18:0){if((u|0)==9){s=+(H|0)*+((c[F>>2]|0)>>>0);i=J;return +s}if((u|0)<9){s=+(H|0)*+((c[F>>2]|0)>>>0)/+(c[379720+(8-u<<2)>>2]|0);i=J;return +s}b=l+27+(ea(u,-3)|0)|0;e=c[F>>2]|0;if((b|0)>30|(e>>>b|0)==0){s=+(H|0)*+(e>>>0)*+(c[379720+(u+-10<<2)>>2]|0);i=J;return +s}}e=(u|0)%9|0;if(!e){h=0;e=0}else{r=(u|0)>-1?e:e+9|0;n=c[379720+(8-r<<2)>>2]|0;if(k){e=1e9/(n|0)|0;h=0;p=0;q=0;m=u;do{B=F+(q<<2)|0;C=c[B>>2]|0;b=((C>>>0)/(n>>>0)|0)+p|0;c[B>>2]=b;p=ea((C>>>0)%(n>>>0)|0,e)|0;C=q;q=q+1|0;if((C|0)==(h|0)&(b|0)==0){h=q&127;m=m+-9|0}}while((q|0)!=(k|0));if(p){c[F+(k<<2)>>2]=p;k=k+1|0}}else{h=0;m=u;k=0}e=0;u=9-r+m|0}e:while(1){t=F+(h<<2)|0;if((u|0)<18){do{m=0;n=k+127|0;while(1){r=n&127;p=F+(r<<2)|0;n=Fga(c[p>>2]|0,0,29)|0;m=Iga(n|0,I|0,m|0,0)|0;n=I;if(n>>>0>0|(n|0)==0&m>>>0>1e9){q=Uga(m|0,n|0,1e9,0)|0;m=Vga(m|0,n|0,1e9,0)|0}else q=0;c[p>>2]=m;n=(r|0)==(h|0);if(!((r|0)!=(k+127&127|0)|n))k=(m|0)==0?r:k;if(n)break;else{m=q;n=r+-1|0}}e=e+-29|0}while((q|0)==0);n=q}else{if((u|0)!=18){n=u;break}while(1){if((c[t>>2]|0)>>>0>=9007199){n=18;break e}p=0;n=k+127|0;while(1){r=n&127;q=F+(r<<2)|0;n=Fga(c[q>>2]|0,0,29)|0;n=Iga(n|0,I|0,p|0,0)|0;m=I;if(m>>>0>0|(m|0)==0&n>>>0>1e9){p=Uga(n|0,m|0,1e9,0)|0;n=Vga(n|0,m|0,1e9,0)|0}else p=0;c[q>>2]=n;m=(r|0)==(h|0);if(!((r|0)!=(k+127&127|0)|m))k=(n|0)==0?r:k;if(m)break;else n=r+-1|0}e=e+-29|0;if(p){n=p;break}}}h=h+127&127;if((h|0)==(k|0)){b=k+127&127;k=F+((k+126&127)<<2)|0;c[k>>2]=c[k>>2]|c[F+(b<<2)>>2];k=b}c[F+(h<<2)>>2]=n;u=u+9|0}f:while(1){w=k+1&127;v=F+((k+127&127)<<2)|0;t=n;while(1){q=(t|0)==18;u=(t|0)>27?9:1;z=h;while(1){r=0;while(1){n=r+z&127;if((n|0)==(k|0)){n=2;break}h=c[F+(n<<2)>>2]|0;p=c[379712+(r<<2)>>2]|0;if(h>>>0

>>0){n=2;break}n=r+1|0;if(h>>>0>p>>>0){n=r;break}if((n|0)<2)r=n;else break}if((n|0)==2&q)break f;e=u+e|0;if((z|0)==(k|0))z=k;else break}q=(1<>>u;h=z;r=0;p=z;n=t;do{B=F+(p<<2)|0;C=c[B>>2]|0;b=(C>>>u)+r|0;c[B>>2]=b;r=ea(C&q,m)|0;b=(p|0)==(h|0)&(b|0)==0;p=p+1&127;n=b?n+-9|0:n;h=b?p:h}while((p|0)!=(k|0));if(!r){t=n;continue}if((w|0)!=(h|0))break;c[v>>2]=c[v>>2]|1;t=n}c[F+(k<<2)>>2]=r;k=w}h=z&127;if((h|0)==(k|0)){c[F+(w+-1<<2)>>2]=0;k=w}g=+((c[F+(h<<2)>>2]|0)>>>0);h=z+1&127;if((h|0)==(k|0)){k=k+1&127;c[F+(k+-1<<2)>>2]=0}j=+(H|0);o=j*(g*1.0e9+ +((c[F+(h<<2)>>2]|0)>>>0));p=e+53|0;r=p-G|0;if((r|0)<(l|0))if((r|0)<0){l=0;h=1;A=244}else{l=r;h=1;A=243}else{h=0;A=243}if((A|0)==243)if((l|0)<53)A=244;else{s=0.0;g=0.0}if((A|0)==244){L=+Pfa(+Xfa(1.0,105-l|0),o);K=+Rfa(o,+Xfa(1.0,53-l|0));s=L;g=K;o=L+(o-K)}n=z+2&127;do if((n|0)==(k|0))j=g;else{n=c[F+(n<<2)>>2]|0;do if(n>>>0>=5e8){if(n>>>0>5e8){g=j*.75+g;break}if((z+3&127|0)==(k|0)){g=j*.5+g;break}else{g=j*.75+g;break}}else{if((n|0)==0?(z+3&127|0)==(k|0):0)break;g=j*.25+g}while(0);if((53-l|0)<=1){j=g;break}if(+Rfa(g,1.0)!=0.0){j=g;break}j=g+1.0}while(0);g=o+j-s;do if((p&2147483647|0)>(-2-D|0)){if(+T(+g)>=9007199254740992.0){h=(h|0)!=0&(l|0)==(r|0)?0:h;e=e+1|0;g=g*.5}if((e+50|0)<=(E|0)?!((h|0)!=0&j!=0.0):0)break;c[(td()|0)>>2]=34}while(0);L=+Yfa(g,e);i=J;return +L}else if((e|0)==3){e=c[C>>2]|0;if(e>>>0<(c[B>>2]|0)>>>0){c[C>>2]=e+1;e=d[e>>0]|0}else e=Nfa(b)|0;if((e|0)==40)e=1;else{if(!(c[B>>2]|0)){L=x;i=J;return +L}c[C>>2]=(c[C>>2]|0)+-1;L=x;i=J;return +L}while(1){h=c[C>>2]|0;if(h>>>0<(c[B>>2]|0)>>>0){c[C>>2]=h+1;h=d[h>>0]|0}else h=Nfa(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h+-97|0)>>>0<26|(h|0)==95):0)break;e=e+1|0}if((h|0)==41){L=x;i=J;return +L}h=(c[B>>2]|0)==0;if(!h)c[C>>2]=(c[C>>2]|0)+-1;if(!n){c[(td()|0)>>2]=22;Mfa(b,0);L=0.0;i=J;return +L}if((e|0)==0|h){L=x;i=J;return +L}do{e=e+-1|0;c[C>>2]=(c[C>>2]|0)+-1}while((e|0)!=0);g=x;i=J;return +g}else{if(c[B>>2]|0)c[C>>2]=(c[C>>2]|0)+-1;c[(td()|0)>>2]=22;Mfa(b,0);L=0.0;i=J;return +L}}while(0);if((A|0)==23){h=(c[B>>2]|0)==0;if(!h)c[C>>2]=(c[C>>2]|0)+-1;if(!(e>>>0<4|(f|0)==0|h))do{c[C>>2]=(c[C>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}L=+(H|0)*y;i=J;return +L}function Mfa(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;c[a+104>>2]=b;d=c[a+8>>2]|0;e=c[a+4>>2]|0;g=d-e|0;c[a+108>>2]=g;if((b|0)!=0&(g|0)>(b|0)){c[a+100>>2]=e+b;i=f;return}else{c[a+100>>2]=d;i=f;return}}function Nfa(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;e=b+104|0;l=c[e>>2]|0;if(!((l|0)!=0?(c[b+108>>2]|0)>=(l|0):0))f=3;if((f|0)==3?(j=cga(b)|0,(j|0)>=0):0){e=c[e>>2]|0;f=c[b+8>>2]|0;if((e|0)!=0?(g=c[b+4>>2]|0,h=e-(c[b+108>>2]|0)+-1|0,(f-g|0)>(h|0)):0)c[b+100>>2]=g+h;else c[b+100>>2]=f;e=c[b+4>>2]|0;if(f){b=b+108|0;c[b>>2]=f+1-e+(c[b>>2]|0)}e=e+-1|0;if((d[e>>0]|0|0)==(j|0)){i=k;return j|0}a[e>>0]=j;i=k;return j|0}c[b+100>>2]=0;j=-1;i=k;return j|0}function Ofa(a,b){a=+a;b=+b;var d=0,e=0,f=0;d=i;h[k>>3]=a;f=c[k>>2]|0;e=c[k+4>>2]|0;h[k>>3]=b;e=c[k+4>>2]&-2147483648|e&2147483647;c[k>>2]=f;c[k+4>>2]=e;b=+h[k>>3];i=d;return +b}function Pfa(a,b){a=+a;b=+b;var c=0;c=i;b=+Ofa(a,b);i=c;return +b}function Qfa(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;h[k>>3]=a;m=c[k>>2]|0;n=c[k+4>>2]|0;h[k>>3]=b;o=c[k>>2]|0;p=c[k+4>>2]|0;e=Lga(m|0,n|0,52)|0;e=e&2047;g=Lga(o|0,p|0,52)|0;g=g&2047;q=n&-2147483648;j=Fga(o|0,p|0,1)|0;l=I;if(!((j|0)==0&(l|0)==0)?(f=p&2147483647,!(f>>>0>2146435072|(f|0)==2146435072&o>>>0>0|(e|0)==2047)):0){d=Fga(m|0,n|0,1)|0;f=I;if(!(f>>>0>l>>>0|(f|0)==(l|0)&d>>>0>j>>>0)){if(!((d|0)==(j|0)&(f|0)==(l|0))){i=r;return +a}a=a*0.0;i=r;return +a}if(!e){d=Fga(m|0,n|0,12)|0;e=I;if((e|0)>-1|(e|0)==-1&d>>>0>4294967295){f=e;e=0;do{e=e+-1|0;d=Fga(d|0,f|0,1)|0;f=I}while((f|0)>-1|(f|0)==-1&d>>>0>4294967295)}else e=0;m=Fga(m|0,n|0,1-e|0)|0;l=I}else l=n&1048575|1048576;if(!g){d=Fga(o|0,p|0,12)|0;f=I;if((f|0)>-1|(f|0)==-1&d>>>0>4294967295){g=0;do{g=g+-1|0;d=Fga(d|0,f|0,1)|0;f=I}while((f|0)>-1|(f|0)==-1&d>>>0>4294967295)}else g=0;o=Fga(o|0,p|0,1-g|0)|0;n=I}else n=p&1048575|1048576;d=Hga(m|0,l|0,o|0,n|0)|0;f=I;j=(f|0)>-1|(f|0)==-1&d>>>0>4294967295;a:do if((e|0)>(g|0)){while(1){if(j){if((m|0)==(o|0)&(l|0)==(n|0))break}else{d=m;f=l}m=Fga(d|0,f|0,1)|0;l=I;e=e+-1|0;d=Hga(m|0,l|0,o|0,n|0)|0;f=I;j=(f|0)>-1|(f|0)==-1&d>>>0>4294967295;if((e|0)<=(g|0))break a}a=a*0.0;i=r;return +a}while(0);if(j){if((m|0)==(o|0)&(l|0)==(n|0)){a=a*0.0;i=r;return +a}}else{f=l;d=m}if(f>>>0<1048576|(f|0)==1048576&d>>>0<0)do{d=Fga(d|0,f|0,1)|0;f=I;e=e+-1|0}while(f>>>0<1048576|(f|0)==1048576&d>>>0<0);if((e|0)>0){p=Iga(d|0,f|0,0,-1048576)|0;d=I;e=Fga(e|0,0,52)|0;d=d|I;e=p|e}else{e=Lga(d|0,f|0,1-e|0)|0;d=I}c[k>>2]=e;c[k+4>>2]=d|q;a=+h[k>>3];i=r;return +a}a=a*b;a=a/a;i=r;return +a}function Rfa(a,b){a=+a;b=+b;var c=0;c=i;b=+Qfa(a,b);i=c;return +b}function Sfa(a,b){a=+a;b=b|0;var d=0,e=0,f=0,g=0;g=i;h[k>>3]=a;d=c[k>>2]|0;e=c[k+4>>2]|0;f=Lga(d|0,e|0,52)|0;f=f&2047;if((f|0)==2047){i=g;return +a}else if(!f){if(a!=0.0){a=+Sfa(a*18446744073709552.0e3,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;i=g;return +a}else{c[b>>2]=f+-1022;c[k>>2]=d;c[k+4>>2]=e&-2146435073|1071644672;a=+h[k>>3];i=g;return +a}return 0.0}function Tfa(a,b){a=+a;b=b|0;var c=0;c=i;a=+Sfa(a,b);i=c;return +a}function Ufa(a){a=+a;var b=0,c=0;c=i;b=~~+Vfa(a);i=c;return b|0}function Vfa(a){a=+a;var b=0,d=0;d=i;b=(g[k>>2]=a,c[k>>2]|0);if((b&2130706432)>>>0<=1249902592){b=(b|0)<0;if(b)a=a+-8388608.0+8388608.0;else a=a+8388608.0+-8388608.0;if(a==0.0)a=b?-0.0:0.0}i=d;return +a}function Wfa(a){a=+a;var b=0,d=0.0,e=0.0,f=0,h=0,j=0;j=i;i=i+16|0;h=j;b=(g[k>>2]=a,c[k>>2]|0);f=b>>>23&255;do if(f>>>0<=149){b=(b|0)<0;if(b)e=-a;else e=a;d=e+8388608.0;if(f>>>0<126){g[h>>2]=d;a=a*0.0;break}d=d+-8388608.0-e;if(!(d>.5)){a=e+d;if(d<=-.5)a=a+1.0}else a=e+d+-1.0;if(b)a=-a}while(0);i=j;return +a}function Xfa(a,b){a=+a;b=b|0;var d=0,e=0;e=i;if((b|0)>1023){a=a*89884656743115795.0e291;d=b+-1023|0;if((d|0)>1023){d=b+-2046|0;d=(d|0)>1023?1023:d;a=a*89884656743115795.0e291}}else if((b|0)<-1022){a=a*2.2250738585072014e-308;d=b+1022|0;if((d|0)<-1022){d=b+2044|0;d=(d|0)<-1022?-1022:d;a=a*2.2250738585072014e-308}}else d=b;d=Fga(d+1023|0,0,52)|0;b=I;c[k>>2]=d;c[k+4>>2]=b;a=a*+h[k>>3];i=e;return +a}function Yfa(a,b){a=+a;b=b|0;var c=0;c=i;a=+Xfa(a,b);i=c;return +a}function Zfa(a,b){a=a|0;b=b|0;var c=0;c=i;if(!a)a=0;else a=_fa(a,b,0)|0;i=c;return a|0}function _fa(b,d,e){b=b|0;d=d|0;e=e|0;e=i;if(!b){d=1;i=e;return d|0}if(d>>>0<128){a[b>>0]=d;d=1;i=e;return d|0}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;d=2;i=e;return d|0}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;d=3;i=e;return d|0}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;d=4;i=e;return d|0}else{c[(td()|0)>>2]=84;d=-1;i=e;return d|0}return 0}function $fa(){var a=0,b=0,d=0,e=0;b=i;d=379752;d=Tga(c[d>>2]|0,c[d+4>>2]|0,1284865837,1481765933)|0;d=Iga(d|0,I|0,1,0)|0;a=I;e=379752;c[e>>2]=d;c[e+4>>2]=a;a=Lga(d|0,a|0,33)|0;i=b;return a|0}function aga(b){b=b|0;var d=0,e=0,f=0;f=i;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+44|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)Od[c[b+36>>2]&255](b,0,0)|0;c[b+16>>2]=0;c[b+28>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(!(d&20)){e=c[e>>2]|0;c[b+8>>2]=e;c[b+4>>2]=e;b=0;i=f;return b|0}if(!(d&4)){b=-1;i=f;return b|0}c[b>>2]=d|32;b=-1;i=f;return b|0}function bga(b){b=b|0;var d=0,e=0,f=0;e=i;d=b+74|0;f=a[d>>0]|0;a[d>>0]=f+255|f;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;f=c[b+44>>2]|0;c[b+28>>2]=f;c[b+20>>2]=f;c[b+16>>2]=f+(c[b+48>>2]|0);f=0;i=e;return f|0}else{c[b>>2]=d|32;f=-1;i=e;return f|0}return 0}function cga(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;if((c[a+8>>2]|0)==0?(aga(a)|0)!=0:0)b=-1;else if((Od[c[a+32>>2]&255](a,b,1)|0)==1)b=d[b>>0]|0;else b=-1;i=e;return b|0}function dga(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;f=e+16|0;g=c[f>>2]|0;do if(!g)if(!(bga(e)|0)){g=c[f>>2]|0;break}else{j=0;i=k;return j|0}while(0);j=e+20|0;h=c[j>>2]|0;if((g-h|0)>>>0>>0){j=Od[c[e+36>>2]&255](e,b,d)|0;i=k;return j|0}a:do if((a[e+75>>0]|0)>-1){f=d;while(1){if(!f){g=h;f=0;break a}g=f+-1|0;if((a[b+g>>0]|0)==10)break;else f=g}if((Od[c[e+36>>2]&255](e,b,f)|0)>>>0>>0){j=f;i=k;return j|0}else{d=d-f|0;b=b+f|0;g=c[j>>2]|0;break}}else{g=h;f=0}while(0);Aga(g|0,b|0,d|0)|0;c[j>>2]=(c[j>>2]|0)+d;j=f+d|0;i=k;return j|0}function ega(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;c[g>>2]=e;a=hga(a,b,d,g)|0;i=f;return a|0}function fga(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=d;d=iga(a,b,f)|0;i=e;return d|0}function gga(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+224|0;l=p+120|0;o=p+80|0;n=p;m=p+136|0;e=o+0|0;f=e+40|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[l>>2]=c[d>>2];if((xga(0,b,l,n,o)|0)<0){a=-1;i=p;return a|0}f=a+48|0;if(!(c[f>>2]|0)){g=a+44|0;h=c[g>>2]|0;c[g>>2]=m;j=a+28|0;c[j>>2]=m;k=a+20|0;c[k>>2]=m;c[f>>2]=80;e=a+16|0;c[e>>2]=m+80;d=xga(a,b,l,n,o)|0;if(h){Od[c[a+36>>2]&255](a,0,0)|0;d=(c[k>>2]|0)==0?-1:d;c[g>>2]=h;c[f>>2]=0;c[e>>2]=0;c[j>>2]=0;c[k>>2]=0}}else d=xga(a,b,l,n,o)|0;a=d;i=p;return a|0}function hga(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+128|0;g=m+112|0;l=m;h=l+0|0;j=380328|0;k=h+112|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0));if((d+-1|0)>>>0>2147483646)if(!d){b=g;d=1}else{c[(td()|0)>>2]=75;f=-1;i=m;return f|0}j=-2-b|0;j=d>>>0>j>>>0?j:d;c[l+48>>2]=j;g=l+20|0;c[g>>2]=b;c[l+44>>2]=b;d=b+j|0;b=l+16|0;c[b>>2]=d;c[l+28>>2]=d;d=gga(l,e,f)|0;if(!j){f=d;i=m;return f|0}f=c[g>>2]|0;a[f+(((f|0)==(c[b>>2]|0))<<31>>31)>>0]=0;f=d;i=m;return f|0}function iga(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=i;a=hga(a,2147483647,b,c)|0;i=d;return a|0}function jga(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;g=i;while(1){e=b+1|0;if(!(Gfa(a[b>>0]|0)|0))break;else b=e}d=a[b>>0]|0;c=d<<24>>24;if((c|0)==45){d=1;f=5}else if((c|0)==43){d=0;f=5}else{c=d;d=0}if((f|0)==5){b=e;c=a[e>>0]|0}if(!(Ffa(c<<24>>24)|0)){e=0;d=(d|0)!=0;f=0-e|0;f=d?e:f;i=g;return f|0}else{c=b;b=0}do{b=(b*10|0)+48-(a[c>>0]|0)|0;c=c+1|0}while((Ffa(a[c>>0]|0)|0)!=0);d=(d|0)!=0;f=0-b|0;f=d?b:f;i=g;return f|0}function kga(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,h=0;h=i;i=i+112|0;g=h;d=g+0|0;e=d+112|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));e=g+4|0;c[e>>2]=a;d=g+8|0;c[d>>2]=-1;c[g+44>>2]=a;c[g+76>>2]=-1;Mfa(g,0);f=+Lfa(g,2,1);d=(c[e>>2]|0)-(c[d>>2]|0)+(c[g+108>>2]|0)|0;if(!b){i=h;return +f}if(!d)d=a;else d=a+d|0;c[b>>2]=d;i=h;return +f}function lga(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+112|0;g=h;c[g>>2]=0;f=g+4|0;c[f>>2]=a;c[g+44>>2]=a;if((a|0)<0)c[g+8>>2]=-1;else c[g+8>>2]=a+2147483647;c[g+76>>2]=-1;Mfa(g,0);d=Kfa(g,d,1,-1,-1)|0;e=I;if(!b){I=e;i=h;return d|0}c[b>>2]=a+((c[f>>2]|0)+(c[g+108>>2]|0)-(c[g+8>>2]|0));I=e;i=h;return d|0}function mga(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+112|0;g=h;c[g>>2]=0;f=g+4|0;c[f>>2]=a;c[g+44>>2]=a;if((a|0)<0)c[g+8>>2]=-1;else c[g+8>>2]=a+2147483647;c[g+76>>2]=-1;Mfa(g,0);d=Kfa(g,d,1,0,-2147483648)|0;e=I;if(!b){I=e;i=h;return d|0}c[b>>2]=a+((c[f>>2]|0)+(c[g+108>>2]|0)-(c[g+8>>2]|0));I=e;i=h;return d|0}function nga(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+112|0;f=g;c[f>>2]=0;e=f+4|0;c[e>>2]=a;c[f+44>>2]=a;if((a|0)<0)c[f+8>>2]=-1;else c[f+8>>2]=a+2147483647;c[f+76>>2]=-1;Mfa(f,0);d=Kfa(f,d,1,-2147483648,0)|0;if(!b){i=g;return d|0}c[b>>2]=a+((c[e>>2]|0)+(c[f+108>>2]|0)-(c[f+8>>2]|0));i=g;return d|0}function oga(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;h=d&255;f=(e|0)!=0;a:do if((b&3|0)!=0&f){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){g=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!((b&3|0)!=0&f)){g=5;break}}}else g=5;while(0);if((g|0)==5)if(f)g=6;else e=0;b:do if((g|0)==6){g=d&255;if((a[b>>0]|0)!=g<<24>>24){f=ea(h,16843009)|0;c:do if(e>>>0>3)do{h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009)break c;b=b+4|0;e=e+-4|0}while(e>>>0>3);while(0);if(!e)e=0;else while(1){if((a[b>>0]|0)==g<<24>>24)break b;b=b+1|0;e=e+-1|0;if(!e){e=0;break}}}}while(0);i=j;return ((e|0)!=0?b:0)|0}function pga(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=i;a:do if(!d)d=0;else{while(1){e=a[b>>0]|0;f=a[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){d=0;break a}else{b=b+1|0;c=c+1|0}}d=(e&255)-(f&255)|0}while(0);i=g;return d|0}function qga(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;f=i;e=a[b>>0]|0;d=a[c>>0]|0;if(e<<24>>24==0?1:e<<24>>24!=d<<24>>24)c=e;else{do{b=b+1|0;c=c+1|0;e=a[b>>0]|0;d=a[c>>0]|0}while(!(e<<24>>24==0?1:e<<24>>24!=d<<24>>24));c=e}i=f;return (c&255)-(d&255)|0}function rga(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0;g=i;if(!e){f=0;i=g;return f|0}f=a[b>>0]|0;a:do if(!(f<<24>>24))f=0;else while(1){e=e+-1|0;h=a[c>>0]|0;if(!(h<<24>>24!=0&(e|0)!=0&f<<24>>24==h<<24>>24))break a;b=b+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){f=0;break}}while(0);h=(f&255)-(d[c>>0]|0)|0;i=g;return h|0}function sga(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;f=a+20|0;g=c[f>>2]|0;a=(c[a+16>>2]|0)-g|0;a=a>>>0>d>>>0?d:a;Aga(g|0,b|0,a|0)|0;c[f>>2]=(c[f>>2]|0)+a;i=e;return d|0}function tga(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;p=a+4|0;q=c[p>>2]|0;k=q&-8;m=a+k|0;j=c[94732]|0;d=q&3;if(!((d|0)!=1&a>>>0>=j>>>0&a>>>0>>0))Kc();e=a+(k|4)|0;g=c[e>>2]|0;if(!(g&1))Kc();if(!d){if(b>>>0<256){a=0;i=r;return a|0}if(k>>>0>=(b+4|0)>>>0?(k-b|0)>>>0<=c[94848]<<1>>>0:0){i=r;return a|0}a=0;i=r;return a|0}if(k>>>0>=b>>>0){d=k-b|0;if(d>>>0<=15){i=r;return a|0}c[p>>2]=q&1|b|2;c[a+(b+4)>>2]=d|3;c[e>>2]=c[e>>2]|1;vga(a+b|0,d);i=r;return a|0}if((m|0)==(c[94734]|0)){d=(c[94731]|0)+k|0;if(d>>>0<=b>>>0){a=0;i=r;return a|0}o=d-b|0;c[p>>2]=q&1|b|2;c[a+(b+4)>>2]=o|1;c[94734]=a+b;c[94731]=o;i=r;return a|0}if((m|0)==(c[94733]|0)){e=(c[94730]|0)+k|0;if(e>>>0>>0){a=0;i=r;return a|0}d=e-b|0;if(d>>>0>15){c[p>>2]=q&1|b|2;c[a+(b+4)>>2]=d|1;c[a+e>>2]=d;e=a+(e+4)|0;c[e>>2]=c[e>>2]&-2;e=a+b|0}else{c[p>>2]=q&1|e|2;e=a+(e+4)|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[94730]=d;c[94733]=e;i=r;return a|0}if(g&2){a=0;i=r;return a|0}n=(g&-8)+k|0;if(n>>>0>>0){a=0;i=r;return a|0}o=n-b|0;f=g>>>3;do if(g>>>0>=256){h=c[a+(k+24)>>2]|0;g=c[a+(k+12)>>2]|0;do if((g|0)==(m|0)){e=a+(k+20)|0;d=c[e>>2]|0;if(!d){e=a+(k+16)|0;d=c[e>>2]|0;if(!d){l=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}g=d+16|0;f=c[g>>2]|0;if(!f)break;else{d=f;e=g}}if(e>>>0>>0)Kc();else{c[e>>2]=0;l=d;break}}else{f=c[a+(k+8)>>2]|0;if(f>>>0>>0)Kc();d=f+12|0;if((c[d>>2]|0)!=(m|0))Kc();e=g+8|0;if((c[e>>2]|0)==(m|0)){c[d>>2]=g;c[e>>2]=f;l=g;break}else Kc()}while(0);if(h){d=c[a+(k+28)>>2]|0;e=379216+(d<<2)|0;if((m|0)==(c[e>>2]|0)){c[e>>2]=l;if(!l){c[94729]=c[94729]&~(1<>>0<(c[94732]|0)>>>0)Kc();d=h+16|0;if((c[d>>2]|0)==(m|0))c[d>>2]=l;else c[h+20>>2]=l;if(!l)break}e=c[94732]|0;if(l>>>0>>0)Kc();c[l+24>>2]=h;d=c[a+(k+16)>>2]|0;do if(d)if(d>>>0>>0)Kc();else{c[l+16>>2]=d;c[d+24>>2]=l;break}while(0);d=c[a+(k+20)>>2]|0;if(d)if(d>>>0<(c[94732]|0)>>>0)Kc();else{c[l+20>>2]=d;c[d+24>>2]=l;break}}}else{g=c[a+(k+8)>>2]|0;e=c[a+(k+12)>>2]|0;d=378952+(f<<1<<2)|0;if((g|0)!=(d|0)){if(g>>>0>>0)Kc();if((c[g+12>>2]|0)!=(m|0))Kc()}if((e|0)==(g|0)){c[94728]=c[94728]&~(1<>>0>>0)Kc();d=e+8|0;if((c[d>>2]|0)==(m|0))h=d;else Kc()}else h=e+8|0;c[g+12>>2]=e;c[h>>2]=g}while(0);if(o>>>0<16){c[p>>2]=n|q&1|2;b=a+(n|4)|0;c[b>>2]=c[b>>2]|1;i=r;return a|0}else{c[p>>2]=q&1|b|2;c[a+(b+4)>>2]=o|3;q=a+(n|4)|0;c[q>>2]=c[q>>2]|1;vga(a+b|0,o);i=r;return a|0}return 0}function uga(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;a=a>>>0<16?16:a;if(a+-1&a){d=16;while(1)if(d>>>0>>0)d=d<<1;else{a=d;break}}if((-64-a|0)>>>0<=b>>>0){c[(td()|0)>>2]=12;h=0;i=k;return h|0}if(b>>>0<11)h=16;else h=b+11&-8;f=Afa(a+12+h|0)|0;if(!f){h=0;i=k;return h|0}g=f+-8|0;d=a+-1|0;do if(f&d){d=f+d&0-a;b=d+-8|0;e=g;if((b-e|0)>>>0<=15)b=d+(a+-8)|0;a=b-e|0;d=f+-4|0;l=c[d>>2]|0;e=(l&-8)-a|0;if(!(l&3)){c[b>>2]=(c[g>>2]|0)+a;c[b+4>>2]=e;break}else{l=b+4|0;c[l>>2]=e|c[l>>2]&1|2;l=b+(e+4)|0;c[l>>2]=c[l>>2]|1;c[d>>2]=a|c[d>>2]&1|2;l=f+(a+-4)|0;c[l>>2]=c[l>>2]|1;vga(g,a);break}}else b=g;while(0);a=b+4|0;d=c[a>>2]|0;if((d&3|0)!=0?(j=d&-8,j>>>0>(h+16|0)>>>0):0){l=j-h|0;c[a>>2]=h|d&1|2;c[b+(h|4)>>2]=l|3;f=b+(j|4)|0;c[f>>2]=c[f>>2]|1;vga(b+h|0,l)}l=b+8|0;i=k;return l|0}function vga(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;r=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){l=c[a>>2]|0;if(!(d&3)){i=v;return}o=a+(0-l)|0;n=l+b|0;k=c[94732]|0;if(o>>>0>>0)Kc();if((o|0)==(c[94733]|0)){g=a+(b+4)|0;d=c[g>>2]|0;if((d&3|0)!=3){u=o;h=n;break}c[94730]=n;c[g>>2]=d&-2;c[a+(4-l)>>2]=n|1;c[r>>2]=n;i=v;return}f=l>>>3;if(l>>>0<256){e=c[a+(8-l)>>2]|0;g=c[a+(12-l)>>2]|0;d=378952+(f<<1<<2)|0;if((e|0)!=(d|0)){if(e>>>0>>0)Kc();if((c[e+12>>2]|0)!=(o|0))Kc()}if((g|0)==(e|0)){c[94728]=c[94728]&~(1<>>0>>0)Kc();d=g+8|0;if((c[d>>2]|0)==(o|0))j=d;else Kc()}else j=g+8|0;c[e+12>>2]=g;c[j>>2]=e;u=o;h=n;break}j=c[a+(24-l)>>2]|0;e=c[a+(12-l)>>2]|0;do if((e|0)==(o|0)){g=16-l|0;e=a+(g+4)|0;d=c[e>>2]|0;if(!d){g=a+g|0;d=c[g>>2]|0;if(!d){m=0;break}}else g=e;while(1){e=d+20|0;f=c[e>>2]|0;if(f){d=f;g=e;continue}e=d+16|0;f=c[e>>2]|0;if(!f)break;else{d=f;g=e}}if(g>>>0>>0)Kc();else{c[g>>2]=0;m=d;break}}else{f=c[a+(8-l)>>2]|0;if(f>>>0>>0)Kc();d=f+12|0;if((c[d>>2]|0)!=(o|0))Kc();g=e+8|0;if((c[g>>2]|0)==(o|0)){c[d>>2]=e;c[g>>2]=f;m=e;break}else Kc()}while(0);if(j){d=c[a+(28-l)>>2]|0;g=379216+(d<<2)|0;if((o|0)==(c[g>>2]|0)){c[g>>2]=m;if(!m){c[94729]=c[94729]&~(1<>>0<(c[94732]|0)>>>0)Kc();d=j+16|0;if((c[d>>2]|0)==(o|0))c[d>>2]=m;else c[j+20>>2]=m;if(!m){u=o;h=n;break}}e=c[94732]|0;if(m>>>0>>0)Kc();c[m+24>>2]=j;d=16-l|0;g=c[a+d>>2]|0;do if(g)if(g>>>0>>0)Kc();else{c[m+16>>2]=g;c[g+24>>2]=m;break}while(0);d=c[a+(d+4)>>2]|0;if(d)if(d>>>0<(c[94732]|0)>>>0)Kc();else{c[m+20>>2]=d;c[d+24>>2]=m;u=o;h=n;break}else{u=o;h=n}}else{u=o;h=n}}else{u=a;h=b}while(0);k=c[94732]|0;if(r>>>0>>0)Kc();d=a+(b+4)|0;g=c[d>>2]|0;if(!(g&2)){if((r|0)==(c[94734]|0)){t=(c[94731]|0)+h|0;c[94731]=t;c[94734]=u;c[u+4>>2]=t|1;if((u|0)!=(c[94733]|0)){i=v;return}c[94733]=0;c[94730]=0;i=v;return}if((r|0)==(c[94733]|0)){t=(c[94730]|0)+h|0;c[94730]=t;c[94733]=u;c[u+4>>2]=t|1;c[u+t>>2]=t;i=v;return}h=(g&-8)+h|0;f=g>>>3;do if(g>>>0>=256){j=c[a+(b+24)>>2]|0;e=c[a+(b+12)>>2]|0;do if((e|0)==(r|0)){g=a+(b+20)|0;d=c[g>>2]|0;if(!d){g=a+(b+16)|0;d=c[g>>2]|0;if(!d){q=0;break}}while(1){e=d+20|0;f=c[e>>2]|0;if(f){d=f;g=e;continue}e=d+16|0;f=c[e>>2]|0;if(!f)break;else{d=f;g=e}}if(g>>>0>>0)Kc();else{c[g>>2]=0;q=d;break}}else{f=c[a+(b+8)>>2]|0;if(f>>>0>>0)Kc();d=f+12|0;if((c[d>>2]|0)!=(r|0))Kc();g=e+8|0;if((c[g>>2]|0)==(r|0)){c[d>>2]=e;c[g>>2]=f;q=e;break}else Kc()}while(0);if(j){d=c[a+(b+28)>>2]|0;g=379216+(d<<2)|0;if((r|0)==(c[g>>2]|0)){c[g>>2]=q;if(!q){c[94729]=c[94729]&~(1<>>0<(c[94732]|0)>>>0)Kc();d=j+16|0;if((c[d>>2]|0)==(r|0))c[d>>2]=q;else c[j+20>>2]=q;if(!q)break}g=c[94732]|0;if(q>>>0>>0)Kc();c[q+24>>2]=j;d=c[a+(b+16)>>2]|0;do if(d)if(d>>>0>>0)Kc();else{c[q+16>>2]=d;c[d+24>>2]=q;break}while(0);d=c[a+(b+20)>>2]|0;if(d)if(d>>>0<(c[94732]|0)>>>0)Kc();else{c[q+20>>2]=d;c[d+24>>2]=q;break}}}else{e=c[a+(b+8)>>2]|0;g=c[a+(b+12)>>2]|0;d=378952+(f<<1<<2)|0;if((e|0)!=(d|0)){if(e>>>0>>0)Kc();if((c[e+12>>2]|0)!=(r|0))Kc()}if((g|0)==(e|0)){c[94728]=c[94728]&~(1<>>0>>0)Kc();d=g+8|0;if((c[d>>2]|0)==(r|0))p=d;else Kc()}else p=g+8|0;c[e+12>>2]=g;c[p>>2]=e}while(0);c[u+4>>2]=h|1;c[u+h>>2]=h;if((u|0)==(c[94733]|0)){c[94730]=h;i=v;return}}else{c[d>>2]=g&-2;c[u+4>>2]=h|1;c[u+h>>2]=h}d=h>>>3;if(h>>>0<256){g=d<<1;f=378952+(g<<2)|0;e=c[94728]|0;d=1<>2]|0;if(e>>>0<(c[94732]|0)>>>0)Kc();else{s=d;t=e}}else{c[94728]=e|d;s=378952+(g+2<<2)|0;t=f}c[s>>2]=u;c[t+12>>2]=u;c[u+8>>2]=t;c[u+12>>2]=f;i=v;return}d=h>>>8;if(d)if(h>>>0>16777215)g=31;else{s=(d+1048320|0)>>>16&8;t=d<>>16&4;t=t<>>16&2;g=14-(r|s|g)+(t<>>15)|0;g=h>>>(g+7|0)&1|g<<1}else g=0;d=379216+(g<<2)|0;c[u+28>>2]=g;c[u+20>>2]=0;c[u+16>>2]=0;e=c[94729]|0;f=1<>2]=u;c[u+24>>2]=d;c[u+12>>2]=u;c[u+8>>2]=u;i=v;return}f=c[d>>2]|0;if((g|0)==31)d=0;else d=25-(g>>>1)|0;a:do if((c[f+4>>2]&-8|0)!=(h|0)){g=h<>>31<<2)+16|0;f=c[d>>2]|0;if(!f)break;if((c[f+4>>2]&-8|0)==(h|0))break a;else{g=g<<1;e=f}}if(d>>>0<(c[94732]|0)>>>0)Kc();c[d>>2]=u;c[u+24>>2]=e;c[u+12>>2]=u;c[u+8>>2]=u;i=v;return}while(0);d=f+8|0;e=c[d>>2]|0;t=c[94732]|0;if(!(f>>>0>=t>>>0&e>>>0>=t>>>0))Kc();c[e+12>>2]=u;c[d>>2]=u;c[u+8>>2]=e;c[u+12>>2]=f;c[u+24>>2]=0;i=v;return}function wga(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;h=a+4|0;e=c[h>>2]|0;j=a+100|0;if(e>>>0<(c[j>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=Nfa(a)|0;if((e|0)==43|(e|0)==45){f=c[h>>2]|0;g=(e|0)==45&1;if(f>>>0<(c[j>>2]|0)>>>0){c[h>>2]=f+1;e=d[f>>0]|0}else e=Nfa(a)|0;if((e+-48|0)>>>0>9&(b|0)!=0?(c[j>>2]|0)!=0:0)c[h>>2]=(c[h>>2]|0)+-1}else g=0;if((e+-48|0)>>>0>9){if(!(c[j>>2]|0)){j=-2147483648;a=0;I=j;i=k;return a|0}c[h>>2]=(c[h>>2]|0)+-1;j=-2147483648;a=0;I=j;i=k;return a|0}else f=0;do{f=e+-48+(f*10|0)|0;e=c[h>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=Nfa(a)|0}while((e+-48|0)>>>0<10&(f|0)<214748364);b=((f|0)<0)<<31>>31;if((e+-48|0)>>>0<10)do{b=Tga(f|0,b|0,10,0)|0;f=I;e=Iga(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;f=Iga(e|0,I|0,b|0,f|0)|0;b=I;e=c[h>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=Nfa(a)|0}while((e+-48|0)>>>0<10&((b|0)<21474836|(b|0)==21474836&f>>>0<2061584302));if((e+-48|0)>>>0<10)do{e=c[h>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=Nfa(a)|0}while((e+-48|0)>>>0<10);if(c[j>>2]|0)c[h>>2]=(c[h>>2]|0)+-1;h=(g|0)!=0;a=Hga(0,0,f|0,b|0)|0;j=h?I:b;a=h?a:f;I=j;i=k;return a|0}function xga(e,f,g,j,l){e=e|0;f=f|0;g=g|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0;cb=i;i=i+864|0;Ma=cb+16|0;Oa=cb;Na=cb+832|0;ja=Na;Ja=cb+816|0;Ua=cb+520|0;Fa=cb+776|0;_a=cb+8|0;Ra=cb+828|0;ka=(e|0)!=0;Aa=Fa+40|0;Ea=Aa;Fa=Fa+39|0;Ga=_a+4|0;Ha=_a;Ia=Ja+12|0;Ja=Ja+11|0;Ka=Ia;la=Ka-ja|0;sa=-2-ja|0;ta=Ka+2|0;ua=Ma+288|0;va=Na+9|0;wa=va;xa=Na+8|0;A=0;D=0;s=0;o=0;B=0;a:while(1){do if((s|0)>-1)if((o|0)>(2147483647-s|0)){c[(td()|0)>>2]=75;Z=-1;break}else{Z=o+s|0;break}else Z=s;while(0);o=a[f>>0]|0;if(!(o<<24>>24)){M=352;break}else p=f;while(1){if(!(o<<24>>24)){ha=p;ca=p;break}else if(o<<24>>24==37){Qa=p;$a=p;M=9;break}L=p+1|0;o=a[L>>0]|0;p=L}b:do if((M|0)==9)while(1){M=0;if((a[Qa+1>>0]|0)!=37){ha=Qa;ca=$a;break b}p=$a+1|0;o=Qa+2|0;if((a[o>>0]|0)==37){Qa=o;$a=p}else{ha=o;ca=p;break}}while(0);o=ca-f|0;if(ka)dga(f,o,e)|0;if((ca|0)!=(f|0)){s=Z;f=ha;continue}s=ha+1|0;p=a[s>>0]|0;r=(p<<24>>24)+-48|0;if(r>>>0<10?(a[ha+2>>0]|0)==36:0){s=ha+3|0;p=a[s>>0]|0;v=1}else{r=-1;v=B}t=p<<24>>24;c:do if((t&-32|0)==32){u=0;do{t=1<>0]|0;t=p<<24>>24}while((t&-32|0)==32)}else u=0;while(0);do if(p<<24>>24==42){p=s+1|0;t=(a[p>>0]|0)+-48|0;if(t>>>0<10?(a[s+2>>0]|0)==36:0){c[l+(t<<2)>>2]=10;v=1;s=s+3|0;t=c[j+((a[p>>0]|0)+-48<<3)>>2]|0}else{if(v){ab=-1;M=370;break a}if(!ka){s=p;L=0;J=0;break}v=c[g>>2]|0;t=c[v>>2]|0;c[g>>2]=v+4;v=0;s=p}if((t|0)<0){u=u|8192;L=v;J=0-t|0}else{L=v;J=t}}else{p=p<<24>>24;if((p+-48|0)>>>0<10){t=0;do{t=p+-48+(t*10|0)|0;s=s+1|0;p=a[s>>0]|0}while((p+-48|0)>>>0<10);if((t|0)<0){ab=-1;M=370;break a}else{L=v;J=t}}else{L=v;J=0}}while(0);d:do if((a[s>>0]|0)==46){v=s+1|0;t=a[v>>0]|0;if(t<<24>>24!=42){p=t<<24>>24;if((p+-48|0)>>>0<10){s=v;t=0}else{s=v;t=0;break}while(1){t=p+-48+(t*10|0)|0;s=s+1|0;p=a[s>>0]|0;if((p+-48|0)>>>0>=10)break d}}p=s+2|0;t=(a[p>>0]|0)+-48|0;if(t>>>0<10?(a[s+3>>0]|0)==36:0){c[l+(t<<2)>>2]=10;s=s+4|0;t=c[j+((a[p>>0]|0)+-48<<3)>>2]|0;break}if(L){ab=-1;M=370;break a}if(ka){s=c[g>>2]|0;t=c[s>>2]|0;c[g>>2]=s+4;s=p}else{s=p;t=0}}else t=-1;while(0);z=0;while(1){x=a[s>>0]|0;p=(x<<24>>24)+-65|0;if(p>>>0>57){ab=-1;M=370;break a}K=s+1|0;p=a[379760+(z*58|0)+p>>0]|0;v=p&255;if((v+-1|0)>>>0<8){s=K;z=v}else break}if(!(p<<24>>24)){ab=-1;M=370;break}w=(r|0)>-1;e:do if(p<<24>>24==19)if(w){ab=-1;M=370;break a}else{ma=A;na=D;M=63}else{if(w){c[l+(r<<2)>>2]=v;na=j+(r<<3)|0;ma=c[na>>2]|0;na=c[na+4>>2]|0;M=63;break}if(!ka){ab=0;M=370;break a}if((p&255)>20){ya=x;za=A;Ba=D}else do switch(v|0){case 9:{oa=c[g>>2]|0;pa=c[oa>>2]|0;c[g>>2]=oa+4;oa=D;M=64;break e}case 13:{oa=c[g>>2]|0;pa=c[oa>>2]|0;c[g>>2]=oa+4;oa=(((pa&65535)<<16>>16|0)<0)<<31>>31;pa=pa<<16>>16;M=64;break e}case 15:{oa=c[g>>2]|0;pa=c[oa>>2]|0;c[g>>2]=oa+4;oa=(((pa&255)<<24>>24|0)<0)<<31>>31;pa=pa<<24>>24;M=64;break e}case 11:{oa=c[g>>2]|0;pa=c[oa>>2]|0;c[g>>2]=oa+4;oa=0;M=64;break e}case 10:{oa=c[g>>2]|0;pa=c[oa>>2]|0;c[g>>2]=oa+4;oa=((pa|0)<0)<<31>>31;M=64;break e}case 12:{M=c[g>>2]|0;oa=M;pa=c[oa>>2]|0;oa=c[oa+4>>2]|0;c[g>>2]=M+8;M=64;break e}case 14:{oa=c[g>>2]|0;pa=c[oa>>2]|0;c[g>>2]=oa+4;oa=0;pa=pa&65535;M=64;break e}case 18:{ma=c[g>>2]|0;c[k>>2]=c[ma>>2];c[k+4>>2]=c[ma+4>>2];y=+h[k>>3];c[g>>2]=ma+8;h[k>>3]=y;ma=c[k>>2]|0;na=c[k+4>>2]|0;M=63;break e}case 16:{oa=c[g>>2]|0;pa=c[oa>>2]|0;c[g>>2]=oa+4;oa=0;pa=pa&255;M=64;break e}case 17:{oa=c[g>>2]|0;c[k>>2]=c[oa>>2];c[k+4>>2]=c[oa+4>>2];y=+h[k>>3];c[g>>2]=oa+8;h[k>>3]=y;oa=c[k+4>>2]|0;pa=c[k>>2]|0;M=64;break e}default:{oa=D;pa=A;M=64;break e}}while(0)}while(0);if((M|0)==63){M=0;if(ka){oa=na;pa=ma;M=64}else{A=ma;D=na;s=Z;f=K;B=L;continue}}if((M|0)==64){M=0;ya=a[s>>0]|0;za=pa;Ba=oa}C=ya<<24>>24;C=(z|0)!=0&(C&15|0)==3?C&-33:C;s=u&-65537;H=(u&8192|0)==0?u:s;f:do switch(C|0){case 99:{a[Fa>>0]=za;da=za;fa=Ba;ga=Fa;n=s;$=1;aa=0;ba=380224;_=Aa;break}case 109:{La=bd(c[(td()|0)>>2]|0)|0;M=96;break}case 110:switch(z|0){case 0:{c[za>>2]=Z;A=za;D=Ba;s=Z;f=K;B=L;continue a}case 7:{A=za;c[A>>2]=Z;c[A+4>>2]=((Z|0)<0)<<31>>31;A=za;D=Ba;s=Z;f=K;B=L;continue a}case 3:{b[za>>1]=Z;A=za;D=Ba;s=Z;f=K;B=L;continue a}case 2:{A=za;c[A>>2]=Z;c[A+4>>2]=((Z|0)<0)<<31>>31;A=za;D=Ba;s=Z;f=K;B=L;continue a}case 1:{c[za>>2]=Z;A=za;D=Ba;s=Z;f=K;B=L;continue a}case 4:{a[za>>0]=Z;A=za;D=Ba;s=Z;f=K;B=L;continue a}case 6:{c[za>>2]=Z;A=za;D=Ba;s=Z;f=K;B=L;continue a}default:{A=za;D=Ba;s=Z;f=K;B=L;continue a}}case 115:{La=(za|0)==0?380240:za;M=96;break}case 105:case 100:{if((Ba|0)<0){Da=Hga(0,0,za|0,Ba|0)|0;Ca=I;Va=1;Wa=380224;M=86;break f}if(!(H&2048)){Wa=H&1;Ca=Ba;Da=za;Va=Wa;Wa=(Wa|0)==0?380224:380226;M=86}else{Ca=Ba;Da=za;Va=1;Wa=380225;M=86}break}case 88:case 120:{Pa=H;Sa=t;Za=C;M=75;break}case 111:{p=(za|0)==0&(Ba|0)==0;if(p)m=Aa;else{m=Aa;f=za;o=Ba;do{m=m+-1|0;a[m>>0]=f&7|48;f=Lga(f|0,o|0,3)|0;o=I}while(!((f|0)==0&(o|0)==0))}Q=(H&8|0)==0|p;T=za;U=Ba;N=H;O=t;P=Q&1^1;Q=Q?380224:380229;M=91;break}case 117:{Ca=Ba;Da=za;Va=0;Wa=380224;M=86;break}case 67:{c[_a>>2]=za;c[Ga>>2]=0;qa=_a;ra=Ha;Ta=-1;M=101;break}case 83:{f=za;if(!t){X=za;Y=f;W=0;M=106}else{qa=f;ra=za;Ta=t;M=101}break}case 112:{Pa=H|8;Sa=t>>>0>8?t:8;Za=120;M=75;break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{c[k>>2]=za;c[k+4>>2]=Ba;q=+h[k>>3];c[Oa>>2]=0;if((Ba|0)>=0)if(!(H&2048)){G=H&1;E=G;G=(G|0)==0?380249:380254}else{E=1;G=380251}else{q=-q;E=1;G=380248}h[k>>3]=q;F=c[k+4>>2]&2146435072;if(!(F>>>0<2146435072|(F|0)==2146435072&0<0)){f=(C&32|0)!=0;if(q!=q|0.0!=0.0){t=0;s=f?380288:380296}else{t=E;s=f?380272:380280}u=t+3|0;p=(J|0)>(u|0);if((H&8192|0)==0&p){f=J-u|0;Cga(Ua|0,32,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{dga(Ua,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}dga(Ua,f,e)|0}dga(G,t,e)|0;dga(s,3,e)|0;if((H&73728|0)==8192&p){f=J-u|0;Cga(Ua|0,32,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{dga(Ua,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}dga(Ua,f,e)|0}A=za;D=Ba;s=Z;f=K;o=p?J:u;B=L;continue a}y=+Tfa(q,Oa)*2.0;s=y!=0.0;if(s)c[Oa>>2]=(c[Oa>>2]|0)+-1;A=C|32;if((A|0)==97){u=C&32;x=(u|0)==0?G:G+9|0;p=E|2;f=t>>>0>11?0:12-t|0;do if(f){q=8.0;do{f=f+-1|0;q=q*16.0}while((f|0)!=0);if((a[x>>0]|0)==45){q=-(q+(-y-q));break}else{q=y+q-q;break}}else q=y;while(0);o=c[Oa>>2]|0;o=(o|0)<0?0-o|0:o;if((o|0)<0){f=Ia;s=o;o=((o|0)<0)<<31>>31;while(1){G=Vga(s|0,o|0,10,0)|0;f=f+-1|0;a[f>>0]=G|48;G=s;s=Uga(s|0,o|0,10,0)|0;if(!(o>>>0>9|(o|0)==9&G>>>0>4294967295))break;else o=I}}else{f=Ia;s=o}if(s)while(1){f=f+-1|0;a[f>>0]=(s>>>0)%10|0|48;if(s>>>0<10)break;else s=(s>>>0)/10|0}if((f|0)==(Ia|0)){a[Ja>>0]=48;f=Ja}a[f+-1>>0]=(c[Oa>>2]>>31&2)+43;w=f+-2|0;a[w>>0]=C+15;if((t|0)<1)if(!(H&8)){f=Na;do{G=~~q;s=f+1|0;a[f>>0]=d[380304+G>>0]|u;q=(q-+(G|0))*16.0;if((s-ja|0)!=1|q==0.0)f=s;else{a[s>>0]=46;f=f+2|0}}while(q!=0.0)}else{f=Na;do{G=~~q;s=f+1|0;a[f>>0]=d[380304+G>>0]|u;q=(q-+(G|0))*16.0;if((s-ja|0)==1){a[s>>0]=46;f=f+2|0}else f=s}while(q!=0.0)}else{f=Na;do{G=~~q;s=f+1|0;a[f>>0]=d[380304+G>>0]|u;q=(q-+(G|0))*16.0;if((s-ja|0)==1){a[s>>0]=46;f=f+2|0}else f=s}while(q!=0.0)}o=w;if((t|0)!=0&(sa+f|0)<(t|0))u=ta+t-o|0;else u=la-o+f|0;v=u+p|0;t=H&73728;r=(J|0)>(v|0);if((t|0)==0&r){s=J-v|0;Cga(Ua|0,32,(s>>>0>256?256:s)|0)|0;if(s>>>0>255){o=s;do{dga(Ua,256,e)|0;o=o+-256|0}while(o>>>0>255);s=s&255}dga(Ua,s,e)|0}dga(x,p,e)|0;if((t|0)==65536&r){o=J-v|0;Cga(Ua|0,48,(o>>>0>256?256:o)|0)|0;if(o>>>0>255){p=o;do{dga(Ua,256,e)|0;p=p+-256|0}while(p>>>0>255);o=o&255}dga(Ua,o,e)|0}f=f-ja|0;dga(Na,f,e)|0;s=Ka-w|0;f=u-s-f|0;if((f|0)>0){Cga(Ua|0,48,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{dga(Ua,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}dga(Ua,f,e)|0}dga(w,s,e)|0;if((t|0)==8192&r){f=J-v|0;Cga(Ua|0,32,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{dga(Ua,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}dga(Ua,f,e)|0}A=za;D=Ba;s=Z;f=K;o=r?J:v;B=L;continue a}f=(t|0)<0?6:t;if(s){s=(c[Oa>>2]|0)+-28|0;c[Oa>>2]=s;q=y*268435456.0}else{q=y;s=c[Oa>>2]|0}F=(s|0)<0?Ma:ua;B=F;u=F;do{D=~~q>>>0;c[u>>2]=D;u=u+4|0;q=(q-+(D>>>0))*1.0e9}while(q!=0.0);s=c[Oa>>2]|0;if((s|0)>0){o=s;s=F;t=u;while(1){p=(o|0)>29?29:o;o=t+-4|0;do if(o>>>0>=s>>>0){u=0;do{z=Fga(c[o>>2]|0,0,p|0)|0;z=Iga(z|0,I|0,u|0,0)|0;D=I;x=Vga(z|0,D|0,1e9,0)|0;c[o>>2]=x;u=Uga(z|0,D|0,1e9,0)|0;o=o+-4|0}while(o>>>0>=s>>>0);if(!u)break;s=s+-4|0;c[s>>2]=u}while(0);u=t;while(1){if(u>>>0<=s>>>0)break;o=u+-4|0;if(!(c[o>>2]|0))u=o;else break}o=(c[Oa>>2]|0)-p|0;c[Oa>>2]=o;if((o|0)>0)t=u;else break}}else{o=s;s=F}g:do if((o|0)<0){x=((f+25|0)/9|0)+1|0;if((A|0)==102){w=F+(x<<2)|0;while(1){v=0-o|0;v=(v|0)>9?9:v;do if(s>>>0>>0){o=(1<>>v;r=0;p=s;do{D=c[p>>2]|0;c[p>>2]=(D>>>v)+r;r=ea(D&o,t)|0;p=p+4|0}while(p>>>0>>0);s=(c[s>>2]|0)==0?s+4|0:s;if(!r){o=u;break}c[u>>2]=r;o=u+4|0}else{s=(c[s>>2]|0)==0?s+4|0:s;o=u}while(0);u=(o-B>>2|0)>(x|0)?w:o;o=(c[Oa>>2]|0)+v|0;c[Oa>>2]=o;if((o|0)>=0){z=u;break g}}}do{v=0-o|0;v=(v|0)>9?9:v;do if(s>>>0>>0){o=(1<>>v;r=0;p=s;do{D=c[p>>2]|0;c[p>>2]=(D>>>v)+r;r=ea(D&o,t)|0;p=p+4|0}while(p>>>0>>0);s=(c[s>>2]|0)==0?s+4|0:s;if(!r){o=u;break}c[u>>2]=r;o=u+4|0}else{s=(c[s>>2]|0)==0?s+4|0:s;o=u}while(0);if((o-s>>2|0)>(x|0))u=s+(x<<2)|0;else u=o;o=(c[Oa>>2]|0)+v|0;c[Oa>>2]=o}while((o|0)<0);z=u}else z=u;while(0);do if(s>>>0>>0){o=(B-s>>2)*9|0;t=c[s>>2]|0;if(t>>>0<10){w=o;break}else u=10;do{u=u*10|0;o=o+1|0}while(t>>>0>=u>>>0);w=o}else w=0;while(0);x=(A|0)==103;o=f-((A|0)!=102?w:0)+((x&(f|0)!=0)<<31>>31)|0;if((o|0)<(((z-B>>2)*9|0)+-9|0)){t=o+9216|0;r=(t|0)/9|0;o=F+(r+-1023<<2)|0;t=((t|0)%9|0)+1|0;if((t|0)<9){u=10;do{u=u*10|0;t=t+1|0}while((t|0)!=9);v=u}else v=10;t=c[o>>2]|0;p=(t>>>0)%(v>>>0)|0;if((p|0)==0?(F+(r+-1022<<2)|0)==(z|0):0){V=s;S=o;R=w}else M=232;do if((M|0)==232){M=0;y=(((t>>>0)/(v>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;u=(v|0)/2|0;do if(p>>>0>>0)q=.5;else{if((p|0)==(u|0)?(F+(r+-1022<<2)|0)==(z|0):0){q=1.0;break}q=1.5}while(0);do if(E){if((a[G>>0]|0)!=45)break;y=y*-1.0;q=q*-1.0}while(0);u=t-p|0;c[o>>2]=u;if(!(y+q!=y)){V=s;S=o;R=w;break}V=u+v|0;c[o>>2]=V;if(V>>>0>999999999)while(1){u=o+-4|0;c[o>>2]=0;if(u>>>0>>0){s=s+-4|0;c[s>>2]=0}V=(c[u>>2]|0)+1|0;c[u>>2]=V;if(V>>>0>999999999)o=u;else{o=u;break}}u=(B-s>>2)*9|0;p=c[s>>2]|0;if(p>>>0<10){V=s;S=o;R=u;break}else t=10;do{t=t*10|0;u=u+1|0}while(p>>>0>=t>>>0);V=s;S=o;R=u}while(0);o=S+4|0;s=V;w=R;o=z>>>0>o>>>0?o:z}else o=z;v=0-w|0;D=o;while(1){if(D>>>0<=s>>>0){A=0;break}o=D+-4|0;if(!(c[o>>2]|0))D=o;else{A=1;break}}do if(x){f=((f|0)==0&1)+f|0;if((f|0)>(w|0)&(w|0)>-5){p=C+-1|0;f=f+-1-w|0}else{p=C+-2|0;f=f+-1|0}if(H&8)break;do if(A){o=c[D+-4>>2]|0;if(!o){u=9;break}if(!((o>>>0)%10|0)){t=10;u=0}else{u=0;break}do{t=t*10|0;u=u+1|0}while(((o>>>0)%(t>>>0)|0|0)==0)}else u=9;while(0);o=((D-B>>2)*9|0)+-9|0;if((p|32|0)==102){C=o-u|0;C=(C|0)<0?0:C;f=(f|0)<(C|0)?f:C;break}else{C=o+w-u|0;C=(C|0)<0?0:C;f=(f|0)<(C|0)?f:C;break}}else p=C;while(0);z=(f|0)!=0;if(z)o=1;else o=(H&8|0)!=0;r=o&1;x=(p|32|0)==102;if(x){o=(w|0)>0?w:0;v=0}else{t=(w|0)<0?v:w;if((t|0)<0){o=Ia;u=t;t=((t|0)<0)<<31>>31;while(1){C=Vga(u|0,t|0,10,0)|0;o=o+-1|0;a[o>>0]=C|48;C=u;u=Uga(u|0,t|0,10,0)|0;if(!(t>>>0>9|(t|0)==9&C>>>0>4294967295))break;else t=I}}else{o=Ia;u=t}if(u)while(1){o=o+-1|0;a[o>>0]=(u>>>0)%10|0|48;if(u>>>0<10)break;else u=(u>>>0)/10|0}if((Ka-o|0)<2)do{o=o+-1|0;a[o>>0]=48}while((Ka-o|0)<2);a[o+-1>>0]=(w>>31&2)+43;v=o+-2|0;a[v>>0]=p;o=Ka-v|0}B=E+1+f+r+o|0;w=H&73728;C=(J|0)>(B|0);if((w|0)==0&C){o=J-B|0;Cga(Ua|0,32,(o>>>0>256?256:o)|0)|0;if(o>>>0>255){u=o;do{dga(Ua,256,e)|0;u=u+-256|0}while(u>>>0>255);o=o&255}dga(Ua,o,e)|0}dga(G,E,e)|0;if((w|0)==65536&C){o=J-B|0;Cga(Ua|0,48,(o>>>0>256?256:o)|0)|0;if(o>>>0>255){u=o;do{dga(Ua,256,e)|0;u=u+-256|0}while(u>>>0>255);o=o&255}dga(Ua,o,e)|0}do if(x){t=s>>>0>F>>>0?F:s;u=t;do{o=c[u>>2]|0;if(!o)s=va;else{s=va;while(1){s=s+-1|0;a[s>>0]=(o>>>0)%10|0|48;if(o>>>0<10)break;else o=(o>>>0)/10|0}}do if((u|0)==(t|0)){if((s|0)!=(va|0))break;a[xa>>0]=48;s=xa}else{if(s>>>0<=Na>>>0)break;do{s=s+-1|0;a[s>>0]=48}while(s>>>0>Na>>>0)}while(0);dga(s,wa-s|0,e)|0;u=u+4|0}while(u>>>0<=F>>>0);if(!((H&8|0)==0&(z^1)))dga(380320,1,e)|0;if(u>>>0>>0&(f|0)>0)do{s=c[u>>2]|0;if(s){o=va;while(1){o=o+-1|0;a[o>>0]=(s>>>0)%10|0|48;if(s>>>0<10)break;else s=(s>>>0)/10|0}if(o>>>0>Na>>>0){Xa=o;M=301}else ia=o}else{Xa=va;M=301}if((M|0)==301)while(1){M=0;o=Xa+-1|0;a[o>>0]=48;if(o>>>0>Na>>>0)Xa=o;else{ia=o;break}}dga(ia,(f|0)>9?9:f,e)|0;u=u+4|0;f=f+-9|0}while(u>>>0>>0&(f|0)>0);if((f|0)<=0)break;Cga(Ua|0,48,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{dga(Ua,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}dga(Ua,f,e)|0}else{r=A?D:s+4|0;do if((f|0)>-1){p=(H&8|0)==0;t=s;do{o=c[t>>2]|0;if(o){u=va;while(1){u=u+-1|0;a[u>>0]=(o>>>0)%10|0|48;if(o>>>0<10)break;else o=(o>>>0)/10|0}if((u|0)!=(va|0))Ya=u;else M=313}else M=313;if((M|0)==313){M=0;a[xa>>0]=48;Ya=xa}do if((t|0)==(s|0)){o=Ya+1|0;dga(Ya,1,e)|0;if((f|0)<1&p)break;dga(380320,1,e)|0}else{if(Ya>>>0>Na>>>0)o=Ya;else{o=Ya;break}do{o=o+-1|0;a[o>>0]=48}while(o>>>0>Na>>>0)}while(0);H=wa-o|0;dga(o,(f|0)>(H|0)?H:f,e)|0;f=f-H|0;t=t+4|0}while(t>>>0>>0&(f|0)>-1);if((f|0)<=0)break;Cga(Ua|0,48,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{dga(Ua,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}dga(Ua,f,e)|0}while(0);dga(v,Ka-v|0,e)|0}while(0);if((w|0)==8192&C){f=J-B|0;Cga(Ua|0,32,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{dga(Ua,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}dga(Ua,f,e)|0}A=za;D=Ba;s=Z;f=K;o=C?J:B;B=L;continue a}default:{da=za;fa=Ba;ga=f;n=H;$=t;aa=0;ba=380224;_=Aa}}while(0);do if((M|0)==75){f=Za&32;if(!((za|0)==0&(Ba|0)==0)){m=Aa;o=za;p=Ba;do{m=m+-1|0;a[m>>0]=d[380304+(o&15)>>0]|f;o=Lga(o|0,p|0,4)|0;p=I}while(!((o|0)==0&(p|0)==0));if(!(Pa&8)){T=za;U=Ba;N=Pa;O=Sa;P=0;Q=380224;M=91}else{T=za;U=Ba;N=Pa;O=Sa;P=2;Q=380224+(Za>>4)|0;M=91}}else{T=za;U=Ba;m=Aa;N=Pa;O=Sa;P=0;Q=380224;M=91}}else if((M|0)==86){if(Ca>>>0>0|(Ca|0)==0&Da>>>0>4294967295){m=Aa;f=Da;o=Ca;while(1){Q=Vga(f|0,o|0,10,0)|0;m=m+-1|0;a[m>>0]=Q|48;Q=f;f=Uga(f|0,o|0,10,0)|0;if(!(o>>>0>9|(o|0)==9&Q>>>0>4294967295))break;else o=I}}else{m=Aa;f=Da}if(!f){T=Da;U=Ca;N=H;O=t;P=Va;Q=Wa;M=91}else while(1){m=m+-1|0;a[m>>0]=(f>>>0)%10|0|48;if(f>>>0<10){T=Da;U=Ca;N=H;O=t;P=Va;Q=Wa;M=91;break}else f=(f>>>0)/10|0}}else if((M|0)==96){M=0;f=oga(La,0,t)|0;if(!f){da=za;fa=Ba;ga=La;n=s;$=t;aa=0;ba=380224;_=La+t|0;break}else{da=za;fa=Ba;ga=La;n=s;$=f-La|0;aa=0;ba=380224;_=f;break}}else if((M|0)==101){o=0;f=0;r=qa;while(1){p=c[r>>2]|0;if(!p)break;f=Zfa(Ra,p)|0;if((f|0)<0|f>>>0>(Ta-o|0)>>>0)break;o=f+o|0;if(Ta>>>0>o>>>0)r=r+4|0;else break}if((f|0)<0){ab=-1;M=370;break a}else{X=ra;Y=qa;W=o;M=106}}while(0);if((M|0)==91){M=0;n=(O|0)>-1?N&-65537:N;f=(T|0)!=0|(U|0)!=0;if(f|(O|0)!=0){$=(f&1^1)+(Ea-m)|0;da=T;fa=U;ga=m;$=(O|0)>($|0)?O:$;aa=P;ba=Q;_=Aa}else{da=T;fa=U;ga=Aa;$=0;aa=P;ba=Q;_=Aa}}else if((M|0)==106){M=0;s=H&73728;u=(J|0)>(W|0);if((s|0)==0&u){f=J-W|0;Cga(Ua|0,32,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{dga(Ua,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}dga(Ua,f,e)|0}h:do if(W){o=0;p=Y;while(1){f=c[p>>2]|0;if(!f)break h;f=Zfa(Ra,f)|0;o=f+o|0;if((o|0)>(W|0))break h;dga(Ra,f,e)|0;if(o>>>0>=W>>>0)break;else p=p+4|0}}while(0);if((s|0)==8192&u){f=J-W|0;Cga(Ua|0,32,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{dga(Ua,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}dga(Ua,f,e)|0}A=X;D=Ba;s=Z;f=K;o=u?J:W;B=L;continue}p=_-ga|0;s=($|0)<(p|0)?p:$;r=aa+s|0;v=(J|0)<(r|0)?r:J;u=n&73728;t=(v|0)>(r|0);if((u|0)==0&t){f=v-r|0;Cga(Ua|0,32,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{dga(Ua,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}dga(Ua,f,e)|0}dga(ba,aa,e)|0;if((u|0)==65536&t){f=v-r|0;Cga(Ua|0,48,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{dga(Ua,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}dga(Ua,f,e)|0}if((s|0)>(p|0)){f=s-p|0;Cga(Ua|0,48,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{dga(Ua,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}dga(Ua,f,e)|0}dga(ga,p,e)|0;if(!((u|0)==8192&t)){A=da;D=fa;s=Z;f=K;o=v;B=L;continue}f=v-r|0;Cga(Ua|0,32,(f>>>0>256?256:f)|0)|0;if(f>>>0>255){o=f;do{dga(Ua,256,e)|0;o=o+-256|0}while(o>>>0>255);f=f&255}dga(Ua,f,e)|0;A=da;D=fa;s=Z;f=K;o=v;B=L}if((M|0)==352){if(e){l=Z;i=cb;return l|0}if(!B){l=0;i=cb;return l|0}else n=1;while(1){f=c[l+(n<<2)>>2]|0;if(!f){bb=n;break}m=j+(n<<3)|0;i:do if(f>>>0<=20)do switch(f|0){case 10:{$a=c[g>>2]|0;_a=c[$a>>2]|0;c[g>>2]=$a+4;$a=m;c[$a>>2]=_a;c[$a+4>>2]=((_a|0)<0)<<31>>31;break i}case 13:{$a=c[g>>2]|0;_a=c[$a>>2]|0;c[g>>2]=$a+4;_a=(_a&65535)<<16>>16;$a=m;c[$a>>2]=_a;c[$a+4>>2]=((_a|0)<0)<<31>>31;break i}case 9:{_a=c[g>>2]|0;$a=c[_a>>2]|0;c[g>>2]=_a+4;c[m>>2]=$a;break i}case 14:{$a=c[g>>2]|0;_a=c[$a>>2]|0;c[g>>2]=$a+4;$a=m;c[$a>>2]=_a&65535;c[$a+4>>2]=0;break i}case 17:{$a=c[g>>2]|0;c[k>>2]=c[$a>>2];c[k+4>>2]=c[$a+4>>2];y=+h[k>>3];c[g>>2]=$a+8;h[m>>3]=y;break i}case 15:{$a=c[g>>2]|0;_a=c[$a>>2]|0;c[g>>2]=$a+4;_a=(_a&255)<<24>>24;$a=m;c[$a>>2]=_a;c[$a+4>>2]=((_a|0)<0)<<31>>31;break i}case 11:{$a=c[g>>2]|0;_a=c[$a>>2]|0;c[g>>2]=$a+4;$a=m;c[$a>>2]=_a;c[$a+4>>2]=0;break i}case 18:{$a=c[g>>2]|0;c[k>>2]=c[$a>>2];c[k+4>>2]=c[$a+4>>2];y=+h[k>>3];c[g>>2]=$a+8;h[m>>3]=y;break i}case 16:{$a=c[g>>2]|0;_a=c[$a>>2]|0;c[g>>2]=$a+4;$a=m;c[$a>>2]=_a&255;c[$a+4>>2]=0;break i}case 12:{$a=c[g>>2]|0;_a=$a;Za=c[_a>>2]|0;_a=c[_a+4>>2]|0;c[g>>2]=$a+8;$a=m;c[$a>>2]=Za;c[$a+4>>2]=_a;break i}default:break i}while(0);while(0);n=n+1|0;if((n|0)>=10){ab=1;M=370;break}}if((M|0)==370){i=cb;return ab|0}while(1){if(c[l+(bb<<2)>>2]|0){ab=-1;M=370;break}bb=bb+1|0;if((bb|0)>=10){ab=1;M=370;break}}if((M|0)==370){i=cb;return ab|0}}else if((M|0)==370){i=cb;return ab|0}return 0}function yga(){}function zga(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b>>c;return a>>>c|(b&(1<>c-32|0}function Aga(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return fb(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function Bga(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else Aga(b,c,d)|0;return b|0}function Cga(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;h=b&3;i=d|d<<8|d<<16|d<<24;g=f&~3;if(h){h=b+4-h|0;while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(g|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function Dga(b){b=b|0;var c=0;c=b;while(a[c>>0]|0)c=c+1|0;return c-b|0}function Ega(b,c){b=b|0;c=c|0;var d=0,e=0;e=b+(Dga(b)|0)|0;do{a[e+d>>0]=a[c+d>>0];d=d+1|0}while(a[c+(d-1)>>0]|0);return b|0}function Fga(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b<>>32-c;return a<>0]=a[c+d>>0];d=d+1|0}while(a[c+(d-1)>>0]|0);return b|0}function Hga(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (I=d,a-c>>>0|0)|0}function Iga(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (I=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function Jga(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;while((e|0)<(d|0)){a[b+e>>0]=f?0:a[c+e>>0]|0;f=f?1:(a[c+e>>0]|0)==0;e=e+1|0}return b|0}function Kga(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;v=v+1|0;c[a>>2]=v;while((e|0)<20){if(!(c[d+(e<<3)>>2]|0)){c[d+(e<<3)>>2]=v;c[d+((e<<3)+4)>>2]=b;c[d+((e<<3)+8)>>2]=0;return 0}e=e+1|0}Ob(116);Ob(111);Ob(111);Ob(32);Ob(109);Ob(97);Ob(110);Ob(121);Ob(32);Ob(115);Ob(101);Ob(116);Ob(106);Ob(109);Ob(112);Ob(115);Ob(32);Ob(105);Ob(110);Ob(32);Ob(97);Ob(32);Ob(102);Ob(117);Ob(110);Ob(99);Ob(116);Ob(105);Ob(111);Ob(110);Ob(32);Ob(99);Ob(97);Ob(108);Ob(108);Ob(44);Ob(32);Ob(98);Ob(117);Ob(105);Ob(108);Ob(100);Ob(32);Ob(119);Ob(105);Ob(116);Ob(104);Ob(32);Ob(97);Ob(32);Ob(104);Ob(105);Ob(103);Ob(104);Ob(101);Ob(114);Ob(32);Ob(118);Ob(97);Ob(108);Ob(117);Ob(101);Ob(32);Ob(102);Ob(111);Ob(114);Ob(32);Ob(77);Ob(65);Ob(88);Ob(95);Ob(83);Ob(69);Ob(84);Ob(74);Ob(77);Ob(80);Ob(83);Ob(10);fa(0);return 0}function Lga(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b>>>c;return a>>>c|(b&(1<>>c-32|0}function Mga(a,b){a=a|0;b=b|0;var d=0,e=0;while((e|0)<20){d=c[b+(e<<3)>>2]|0;if(!d)break;if((d|0)==(a|0))return c[b+((e<<3)+4)>>2]|0;e=e+1|0}return 0}function Nga(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function Oga(b){b=b|0;var c=0;c=a[n+(b>>>24)>>0]|0;if((c|0)<8)return c|0;c=a[n+(b>>16&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[n+(b>>8&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[n+(b&255)>>0]|0)+24|0}function Pga(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[m+(b>>>24)>>0]|0)+24|0}function Qga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=ea(e,f)|0;d=a>>>16;a=(c>>>16)+(ea(e,d)|0)|0;e=b>>>16;b=ea(e,f)|0;return (I=(a>>>16)+(ea(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function Rga(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=Hga(j^a,i^b,j,i)|0;g=I;a=f^j;b=e^i;c=Hga((Wga(h,g,Hga(f^c,e^d,f,e)|0,I,0)|0)^a,I^b,a,b)|0;return c|0}function Sga(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+8|0;j=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;l=e>>31|((e|0)<0?-1:0)<<1;k=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;a=Hga(h^a,g^b,h,g)|0;b=I;Wga(a,b,Hga(l^d,k^e,l,k)|0,I,j)|0;d=Hga(c[j>>2]^h,c[j+4>>2]^g,h,g)|0;e=I;i=f;return (I=e,d)|0}function Tga(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=Qga(e,f)|0;a=I;return (I=(ea(b,f)|0)+(ea(d,e)|0)+a|a&0,c|0|0)|0}function Uga(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=Wga(a,b,c,d,0)|0;return c|0}function Vga(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+8|0;f=g|0;Wga(a,b,d,e,f)|0;i=g;return (I=c[f+4>>2]|0,c[f>>2]|0)|0}function Wga(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=a;m=b;l=m;i=d;o=e;h=o;if(!l){g=(f|0)!=0;if(!h){if(g){c[f>>2]=(n>>>0)%(i>>>0);c[f+4>>2]=0}o=0;f=(n>>>0)/(i>>>0)>>>0;return (I=o,f)|0}else{if(!g){o=0;f=0;return (I=o,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;o=0;f=0;return (I=o,f)|0}}g=(h|0)==0;do if(i){if(!g){g=(Oga(h|0)|0)-(Oga(l|0)|0)|0;if(g>>>0<=31){b=g+1|0;h=31-g|0;k=g-31>>31;i=b;j=n>>>(b>>>0)&k|l<>>(b>>>0)&k;g=0;h=n<>2]=a|0;c[f+4>>2]=m|b&0;o=0;f=0;return (I=o,f)|0}g=i-1|0;if(g&i){h=(Oga(i|0)|0)+33-(Oga(l|0)|0)|0;p=64-h|0;b=32-h|0;a=b>>31;m=h-32|0;k=m>>31;i=h;j=b-1>>31&l>>>(m>>>0)|(l<>>(h>>>0))&k;k=k&l>>>(h>>>0);g=n<>>(m>>>0))&a|n<>31;break}if(f){c[f>>2]=g&n;c[f+4>>2]=0}if((i|0)==1){f=m|b&0;p=a|0|0;return (I=f,p)|0}else{p=Pga(i|0)|0;f=l>>>(p>>>0)|0;p=l<<32-p|n>>>(p>>>0)|0;return (I=f,p)|0}}else{if(g){if(f){c[f>>2]=(l>>>0)%(i>>>0);c[f+4>>2]=0}f=0;p=(l>>>0)/(i>>>0)>>>0;return (I=f,p)|0}if(!n){if(f){c[f>>2]=0;c[f+4>>2]=(l>>>0)%(h>>>0)}f=0;p=(l>>>0)/(h>>>0)>>>0;return (I=f,p)|0}g=h-1|0;if(!(g&h)){if(f){c[f>>2]=a|0;c[f+4>>2]=g&l|b&0}f=0;p=l>>>((Pga(h|0)|0)>>>0);return (I=f,p)|0}g=(Oga(h|0)|0)-(Oga(l|0)|0)|0;if(g>>>0<=30){k=g+1|0;h=31-g|0;i=k;j=l<>>(k>>>0);k=l>>>(k>>>0);g=0;h=n<>2]=a|0;c[f+4>>2]=m|b&0;f=0;p=0;return (I=f,p)|0}while(0);if(!i){m=h;i=0;a=0}else{d=d|0|0;b=o|e&0;l=Iga(d,b,-1,-1)|0;m=I;a=0;do{n=h;h=g>>>31|h<<1;g=a|g<<1;n=j<<1|n>>>31|0;e=j>>>31|k<<1|0;Hga(l,m,n,e)|0;p=I;o=p>>31|((p|0)<0?-1:0)<<1;a=o&1;j=Hga(n,e,o&d,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&b)|0;k=I;i=i-1|0}while((i|0)!=0);m=h;i=0}h=0;if(f){c[f>>2]=j;c[f+4>>2]=k}f=(g|0)>>>31|(m|h)<<1|(h<<1|g>>>31)&0|i;p=(g<<1|0>>>31)&-2|a;return (I=f,p)|0}function Xga(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return Gd[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function Yga(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Hd[a&63](b|0,c|0,d|0,e|0,f|0)}function Zga(a,b){a=a|0;b=b|0;Id[a&511](b|0)}function _ga(a,b,c){a=a|0;b=b|0;c=c|0;Jd[a&255](b|0,c|0)}function $ga(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Kd[a&31](b|0,c|0,d|0,e|0,f|0,g|0)|0}function aha(a,b){a=a|0;b=b|0;return Ld[a&511](b|0)|0}function bha(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return Md[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function cha(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;Nd[a&3](b|0,+c,+d)}function dha(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Od[a&255](b|0,c|0,d|0)|0}function eha(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;Pd[a&7](b|0,c|0,d|0,e|0,f|0,+g)}function fha(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;Qd[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function gha(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Rd[a&31](b|0,c|0,d|0,e|0,f|0,g|0)}function hha(a,b){a=a|0;b=b|0;return +Sd[a&3](b|0)}function iha(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;Td[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function jha(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;Ud[a&3](b|0,c|0,d|0,e|0,f|0,g|0,+h)}function kha(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;Vd[a&31](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function lha(a,b,c){a=a|0;b=b|0;c=c|0;return Wd[a&511](b|0,c|0)|0}function mha(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Xd[a&127](b|0,c|0,d|0,e|0,f|0)|0}function nha(a){a=a|0;return Yd[a&255]()|0}function oha(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;Zd[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)}function pha(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return _d[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)|0}function qha(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;$d[a&255](b|0,c|0,d|0)}function rha(a){a=a|0;ae[a&3]()}function sha(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return be[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function tha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ce[a&255](b|0,c|0,d|0,e|0)|0}function uha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;de[a&63](b|0,c|0,d|0,e|0)}function vha(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;fa(0);return 0}function wha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;fa(1)}function xha(a){a=a|0;fa(2)}function yha(a,b){a=a|0;b=b|0;fa(3)}function zha(a,b){a=a|0;b=b|0;Ad(a|0,b|0)}function Aha(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;fa(4);return 0}function Bha(a){a=a|0;fa(5);return 0}function Cha(a){a=a|0;return kc(a|0)|0}function Dha(a){a=a|0;return Dga(a|0)|0}function Eha(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;fa(6);return 0}function Fha(a,b,c){a=a|0;b=+b;c=+c;fa(7)}function Gha(a,b,c){a=a|0;b=b|0;c=c|0;fa(8);return 0}function Hha(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;fa(9)}function Iha(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;fa(10)}function Jha(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;fa(11)}function Kha(a){a=a|0;fa(12);return 0.0}function Lha(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;fa(13)}function Mha(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;fa(14)}function Nha(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;fa(15)}function Oha(a,b){a=a|0;b=b|0;fa(16);return 0}function Pha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;fa(17);return 0}function Qha(){fa(18);return 0}function Rha(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;fa(19)}function Sha(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;fa(20);return 0}function Tha(a,b,c){a=a|0;b=b|0;c=c|0;fa(21)}function Uha(a,b,c){a=a|0;b=b|0;c=c|0;xd(a|0,b|0,c|0)}function Vha(){fa(22)}function Wha(){Qc()}function Xha(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;fa(23);return 0}function Yha(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;fa(24);return 0}function Zha(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;fa(25)} // EMSCRIPTEN_END_FUNCS -var zd=[kga,up,Qy,rz,OH,kga,kga,kga];var Ad=[lga,Ke,Se,mn,fea,eea,bea,qf,NP,PP,QP,RP,SP,TP,UP,lQ,BQ,CQ,DQ,EQ,FQ,HQ,IQ,JQ,KQ,DG,CG,BG,AG,zG,yG,xG,EG,FG,GG,HG,IG,JG,KG,LG,MG,NG,OG,PG,QG,RG,SG,TG,UG,VG,WG,XG,YG,ZG,_G,$G,wG,vG,uG,yD,FD,lga,lga,lga];var Bd=[mga,ne,oe,se,te,ve,ze,Ae,De,Ge,He,Ie,Le,Me,Pe,Qe,Re,Te,Hf,If,Ff,Jf,Kf,Lf,Mf,Nf,Of,Pf,wda,Qf,Rf,Sf,Vf,Wf,Xf,Kk,Wk,_k,el,jl,ql,tl,vl,xl,El,Il,$l,cm,em,gm,tm,ym,Fm,Nm,Pm,Xm,Zm,$m,an,bn,nn,tn,vn,yn,Bn,Gn,Kn,Sn,co,Uo,fp,pp,wp,Bp,Qp,bq,eq,gq,uq,xq,zq,Bq,er,hr,jr,lr,Cr,p3,Nba,Sba,$2,Xba,aca,h2,i2,k2,fca,gca,a3,b3,q3,r3,F3,H3,G3,I3,L3,N3,M3,O3,Q3,S3,R3,T3,_3,a4,$3,b4,i4,j4,V2,k4,hca,m4,n4,y8,r4,s4,w4,x4,L4,M4,d5,e5,s5,t5,F5,G5,c6,d6,B6,C6,F6,G6,J6,K6,U6,V6,d7,e7,o7,p7,z7,A7,I7,J7,O7,P7,U7,V7,_7,$7,d8,e8,m8,n8,Q8,R8,iaa,h9,H9,I9,J9,K9,l4,x8,A8,_8,p9,x9,F9,G9,qda,rda,yda,zda,Bda,Cda,Eda,Fda,Ida,Jda,Lda,Pda,Mda,Nda,Sda,Oda,Qda,Rda,af,_f,fg,uj,Hj,Rj,Vj,Ks,Ls,Qs,_s,dt,nt,Ct,St,$t,Ku,Mu,oL,JM,VM,WM,fN,rN,KN,LN,hO,Iy,qz,nP,mP,XD,KP,MP,OP,VP,YP,ZP,_P,$P,aQ,dQ,eQ,fQ,kQ,sQ,tQ,uQ,vQ,AQ,LQ,MQ,NQ,PQ,QQ,RQ,UQ,$Q,aR,bR,hR,oR,qR,sR,zR,DR,FR,GR,JR,WK,ZX,nZ,oZ,vZ,wZ,yZ,KZ,MZ,OZ,QZ,v_,w_,y_,C_,n$,m$,a0,d0,z0,A0,qF,yU,BU,CK,fJ,RH,rea,wK,LE,CU,EU,jF,mF,NE,JC,KC,LC,LD,KD,JD,M0,ND,zI,eF,r1,s1,dF,RE,C7,z8,Aba,Hba,Iba,Jba,Kba,Lba,Mba,v2,L2,P1,pea,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga,mga];var Cd=[nga,pe,ue,xe,Je,Uf,xk,Bk,Fk,Yk,bl,jm,km,lm,hn,Hq,Iq,Jq,Kq,Lq,Mq,Nq,Oq,Pq,Qq,pr,qr,rr,sr,Oba,Tba,Yba,bca,d3,t3,N6,O6,P6,Q6,S6,T6,Y6,Z6,_6,$6,b7,c7,h7,i7,j7,k7,m7,n7,s7,t7,u7,v7,x7,y7,c8,h8,P9,R9,T9,Q9,S9,U9,Kj,Nj,Nr,Ps,au,bu,cu,oga,oO,Gy,ez,cB,qC,JP,LP,WP,XP,cQ,hQ,SQ,gR,pR,rR,CR,ER,IR,KH,AJ,JJ,OJ,MJ,KJ,PJ,VJ,QJ,RJ,UJ,XJ,ZJ,eK,fK,WJ,BJ,gK,hK,CJ,HJ,IJ,DJ,YJ,LJ,NJ,SJ,TJ,uZ,A_,v0,w0,x0,y0,AU,vI,wI,SE,QE,H0,I0,$A,zC,AC,ID,CC,qI,DC,dE,fE,gE,_D,bE,$D,ME,lF,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga,nga];var Dd=[pga,Un,Py,pz,bz,oz,xR,yR,nS,bT,lT,zT,VT,fU,tU,KU,AV,UV,eW,SW,lX,xX,PX,iC,pga,pga,pga,pga,pga,pga,pga,pga];var Ed=[qga,xda,Tf,Zf,Jk,pl,ul,wl,Ll,Ml,Nl,Ol,Ql,Rl,_l,dm,fm,mm,Om,cn,rn,zn,On,Pn,Qn,Rn,Tn,Xn,Yn,eo,Hp,Rp,aq,fq,hq,tq,yq,Aq,Rq,Wq,dr,ir,kr,vr,yr,Pba,y3,A3,B3,x3,Uba,Vba,Zba,i3,k3,l3,h3,cca,dca,Dda,_1,b2,e4,H5,W9,Y9,_9,eaa,gaa,aaa,caa,e6,X9,Z9,$9,faa,haa,baa,daa,L6,M6,R6,W6,X6,a7,f7,g7,l7,q7,r7,w7,l9,m9,o9,L9,N9,M9,O9,c9,d9,f9,t9,u9,w9,B9,C9,E9,sda,Ada,Kda,zt,At,Bt,Zi,hv,nL,DL,KL,BM,CM,FM,HM,OM,PM,SM,ZM,_M,bN,dN,iN,jN,nN,pN,zN,CN,DN,GN,IN,RN,SN,VN,$N,aO,dO,fO,Vy,Wy,wz,vz,ky,ny,wQ,yQ,OQ,VQ,WQ,XQ,YQ,ZQ,TI,YI,qS,rS,AS,BS,MS,NS,US,eT,fT,oT,pT,CT,DT,MT,NT,YT,ZT,iU,jU,wU,xU,NU,OU,_U,$U,iV,jV,sV,tV,DV,EV,MV,NV,XV,YV,hW,iW,qW,rW,BW,CW,LW,MW,VW,WW,oX,pX,zX,AX,IX,JX,SX,TX,TY,gZ,hZ,lZ,tZ,LZ,PZ,z_,m0,n0,NF,rga,zU,uF,SH,kI,sga,EK,qea,EI,tF,iI,YH,DU,WH,XH,tI,uI,TH,VH,lJ,JK,IK,dI,hB,hI,oI,rI,pI,lI,MD,$W,aX,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga,qga];var Fd=[tga,Oy,nz,tga];var Gd=[uga,sf,IC,uga];var Hd=[vga,vk,zk,Dk,Hk,gg,hg,nl,ol,Xl,Yl,Zl,rm,Cm,Dm,Km,Sm,Tm,Um,Vm,Wm,fn,qn,sn,wn,ao,io,Yo,_o,$o,jp,vp,xp,zp,Cp,Dp,Kp,Lp,Vp,_p,nq,pq,qq,rq,sq,$q,ar,cr,u3,z3,Qba,D3,e3,j3,_ba,n3,X1,Y1,q4,v4,a8,f8,T8,V8,Y8,B8,I8,L8,O8,Uda,_da,Tda,nfa,Mj,hk,ik,jk,kk,lk,mk,nk,ok,Mr,Or,Rr,Sr,Tr,Ur,Js,Ot,Dh,pL,qL,yM,zM,XM,YM,sN,tN,vN,MN,NN,ON,PN,ZN,_N,Rx,Sx,Tx,Ux,qO,rO,tO,uO,xO,yO,AO,BO,CO,DO,EO,FO,GO,HO,IO,JO,KO,LO,MO,NO,OO,PO,QO,RO,SO,TO,UO,$O,bP,jz,cP,dP,dz,eP,lz,Ly,Zy,hz,xz,_y,$y,gz,iz,bB,tR,uR,JH,SI,XI,$R,aS,bS,cS,HS,ZS,$S,vT,xT,ST,cU,qU,VU,hX,jX,dZ,eZ,j0,k0,o0,Xea,ffa,gJ,uK,vK,SK,bI,vF,kJ,iJ,TK,TE,aB,_B,cC,hC,gC,xI,Oca,YW,ZW,bX,UE,wF,fda,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga,vga];var Id=[wga,n5,q5,A5,C5,wga,wga,wga];var Jd=[xga,D6,H6,B7,F7,K7,M7,xga];var Kd=[yga,v3,f3,f5,g5,l5,r5,u5,v5,y5,D5,b8,g8,iea,hea,gea,Ys,Zs,bt,ct,BD,yga,yga,yga,yga,yga,yga,yga,yga,yga,yga,yga];var Ld=[zga,b$,a$,zga];var Md=[Aga,y4,z4,A4,B4,C4,D4,E4,F4,G4,H4,I4,N4,O4,P4,Q4,R4,S4,T4,U4,V4,W4,X4,k5,m5,x5,z5,I5,J5,K5,M5,O5,f6,g6,h6,j6,l6,T7,Z7,iQ,jQ,cR,eR,iR,k$,l$,T$,U$,V$,Aga,Aga,Aga,Aga,Aga,Aga,Aga,Aga,Aga,Aga,Aga,Aga,Aga,Aga,Aga];var Nd=[Bga,Q7,W7,Bga];var Od=[Cga,Q5,n6,OL,PL,QL,RL,SL,TL,VL,WL,XL,YL,ZL,_L,$L,aM,bM,cM,dM,eM,gM,hM,iM,jM,kM,lM,mM,nM,uD,Cga,Cga];var Pd=[Dga,Yf,uk,wk,yk,Ak,Ck,Ek,Gk,Lk,Vk,Xk,Zk,$k,cl,dl,fl,gl,hl,ll,ml,rl,Bl,Cl,Dl,Fl,Gl,Hl,Jl,Kl,Pl,Tl,Ul,Wl,am,im,nm,om,qm,sm,um,vm,wm,Am,Bm,Em,Gm,Hm,Lm,dn,on,An,Cn,Dn,En,Fn,Hn,In,Jn,Ln,Mn,Vn,Wn,Zn,_n,bo,jo,ko,lo,mo,no,oo,po,qo,ro,so,to,uo,vo,wo,xo,yo,zo,Ao,Bo,Co,Do,Eo,Fo,Go,Ho,Io,Jo,Ko,Lo,Mo,No,Oo,Po,Qo,Ro,So,To,Vo,Wo,Zo,ap,bp,gp,ip,kp,lp,mp,np,op,qp,rp,sp,tp,yp,Ap,Fp,Jp,Mp,Np,Pp,Yp,Zp,cq,lq,mq,oq,vq,Eq,Gq,Tq,Uq,Vq,Xq,_q,br,fr,nr,or,ur,wr,xr,zr,Ar,Er,Fr,Gr,Hr,Ir,Jr,Xv,rw,Aw,hx,sw,lw,tw,cw,dw,aw,bw,mL,wx,Bw,qw,OY,PY,QY,C3,Rba,Wba,E3,m3,$ba,eca,o3,S8,U8,W8,G8,J8,M8,Cj,Ij,bk,ak,As,Cs,Hs,Is,Ms,Ws,mt,Mt,Pt,ru,qu,Bu,mv,lv,Ww,sL,GL,DM,GM,KM,$M,cN,gN,kN,oN,yN,EN,HN,bO,eO,YO,ZO,_O,fB,wC,xQ,zQ,oS,yS,KS,cT,mT,AT,KT,WT,gU,uU,LU,YU,qV,BV,KV,VV,fW,oW,zW,JW,TW,mX,GX,QX,iZ,kZ,FF,B_,c$,d$,e$,f$,g$,h$,i$,j$,o$,p$,q$,r$,s$,t$,B$,C$,D$,E$,F$,G$,H$,I$,J$,K$,N$,M$,rF,KK,PK,OK,NK,QK,eJ,cI,MK,qJ,CI,eC,dC,fC,nI,sC,yI,mI,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga,Dga];var Qd=[Ega,Ik,Mk,Nk,Ok,Pk,Qk,Rk,Sk,Tk,Uk,il,sl,Al,bm,xm,Im,Mm,en,kn,ln,dp,ep,hp,Ep,Gp,dq,kq,wq,Fq,Yq,gr,Br,o4,t4,Z8,k9,n9,P8,b9,e9,s9,v9,A9,D9,ss,Yj,Xt,Zt,uu,tu,su,Yy,sz,AR,BR,mS,xS,JS,SS,aT,kT,yT,JT,UT,eU,sU,JU,XU,gV,pV,zV,JV,TV,dW,nW,yW,IW,RW,kX,wX,FX,OX,oC,kC,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega,Ega];var Rd=[Fga,iS,jS,kS,lS,pS,sS,tS,uS,vS,wS,zS,CS,DS,ES,FS,GS,LS,OS,PS,QS,RS,TS,VS,WS,XS,YS,dT,gT,hT,iT,jT,nT,qT,rT,sT,tT,uT,BT,ET,FT,GT,HT,IT,LT,OT,PT,QT,RT,XT,_T,$T,aU,bU,hU,kU,lU,mU,nU,oU,pU,vU,FU,GU,HU,IU,MU,PU,QU,RU,SU,TU,UU,ZU,aV,bV,cV,dV,eV,fV,hV,kV,lV,mV,nV,oV,rV,uV,vV,wV,xV,yV,CV,FV,GV,HV,IV,LV,OV,PV,QV,RV,SV,WV,ZV,_V,$V,aW,bW,cW,gW,jW,kW,lW,mW,pW,sW,tW,uW,vW,wW,xW,AW,DW,EW,FW,GW,HW,KW,NW,OW,PW,QW,UW,XW,dX,eX,fX,gX,nX,qX,rX,sX,tX,uX,vX,yX,BX,CX,DX,EX,HX,KX,LX,MX,NX,RX,UX,BK,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga,Fga];var Sd=[Gga,qM,rM,sM,tM,uM,vM,wM,xM,Gga,Gga,Gga,Gga,Gga,Gga,Gga];var Td=[Hga,un,jC,Hga];var Ud=[Iga,al,Nn,$n,ho,Op,Up,aY,bY,cY,dY,eY,fY,gY,hY,iY,jY,kY,lY,RY,SY,W1,$1,d2,c2,f4,pf,dk,ck,fk,ek,Ns,Os,Ts,Xs,at,px,Kw,AM,LM,NM,lN,uN,QN,Sy,uz,GC,AP,BP,CP,EP,DP,VD,bQ,IS,_S,wT,TT,dU,rU,WU,iX,Lw,Mw,Nw,Ow,fZ,ZZ,_Z,$Z,b_,c_,d_,g_,h_,j_,k_,m_,n_,p_,I_,J_,K_,N_,O_,P_,Q_,R_,S_,V_,XF,WF,VF,UF,TF,SF,RF,YF,ZF,_F,$F,aG,bG,cG,dG,eG,fG,gG,hG,iG,jG,kG,lG,mG,nG,oG,pG,qG,rG,sG,tG,QF,PF,OF,Jga,pF,HF,PI,KE,iF,PE,EC,HC,J0,sI,K0,L0,eE,ED,sD,KI,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga,Iga];var Vd=[Kga,Lga,mea,nea];var Wd=[Mga,i9,j9,$8,a9,q9,r9,y9,z9,NH,Mga,Mga,Mga,Mga,Mga,Mga];var Xd=[Nga,kl,yl,zl,Sl,Vl,hm,pm,zm,Jm,Qm,Rm,Ym,gn,xn,fo,go,Xo,cp,Ip,Sp,Tp,Wp,Xp,$p,iq,jq,Cq,Dq,Sq,Zq,mr,tr,Dr,mY,nY,oY,pY,qY,rY,sY,tY,uY,vY,wY,xY,yY,zY,AY,BY,CY,DY,EY,FY,GY,HY,IY,JY,KY,LY,MY,NY,X8,D8,E8,F8,N8,Gj,Jj,Sj,Uj,Xi,yt,qh,iv,jv,kv,ev,fv,gv,EL,FL,IL,JL,LL,NL,ML,pM,oM,EM,IM,QM,RM,TM,UM,aN,eN,hN,mN,qN,xN,AN,BN,FN,JN,WN,cO,gO,Nx,Ox,Px,Qx,Xy,My,cz,mz,az,kz,vR,wR,QI,RI,VI,WI,jZ,mZ,AZ,BZ,SZ,YZ,a_,f_,i_,l_,o_,q_,L_,M_,T_,U_,l0,BI,hJ,jI,yC,lC,aE,_W,m1,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga,Nga];var Yd=[Oga,_m,jn,pn,w3,g3,p4,u4,Wda,Xda,Zda,rf,Vr,Wr,Xr,Yr,Zr,_r,Rs,Ss,st,Kg,wN,iO,lO,Jy,fz,xC,bC,mQ,nQ,oQ,pQ,qQ,rQ,dR,fR,jR,kR,lR,mR,nR,$v,v$,O$,P$,Q$,W$,X$,Z$,Y$,_$,$$,c0,b0,p0,OE,JI,YD,zD,CD,cX,Oga,Oga];return{_strlen:tfa,_strcat:ufa,_main:Ef,_bitshift64Lshr:Bfa,_calloc:sea,_bitshift64Shl:vfa,___cxa_is_pointer_type:kea,_strncpy:zfa,_bitshift64Ashr:pfa,_memset:sfa,_memcpy:qfa,_i64Subtract:xfa,_realloc:tea,_i64Add:yfa,_saveSetjmp:Afa,_llvm_bswap_i32:Dfa,_testSetjmp:Cfa,___cxa_can_catch:jea,_free:rea,_memmove:rfa,_malloc:qea,_strcpy:wfa,__GLOBAL__sub_I_font_manager_cpp:$e,__GLOBAL__sub_I_sound_manager_cpp:eg,__GLOBAL__sub_I_iostream_cpp:jaa,runPostSets:ofa,stackAlloc:Zd,stackSave:_d,stackRestore:$d,setThrew:ae,setTempRet0:de,getTempRet0:ee,dynCall_iiiiiiii:Mfa,dynCall_viiiii:Nfa,dynCall_vi:Ofa,dynCall_vii:Pfa,dynCall_iiiiiii:Qfa,dynCall_ii:Rfa,dynCall_iiiiiiiiiiii:Sfa,dynCall_vidd:Tfa,dynCall_iiii:Ufa,dynCall_viiiiid:Vfa,dynCall_viiiiiiii:Wfa,dynCall_viiiiii:Xfa,dynCall_di:Yfa,dynCall_viiiiiii:Zfa,dynCall_viiiiiid:_fa,dynCall_viiiiiiiii:$fa,dynCall_iii:aga,dynCall_iiiiii:bga,dynCall_i:cga,dynCall_viiiiiiiiiiii:dga,dynCall_iiiiiiiiii:ega,dynCall_viii:fga,dynCall_v:gga,dynCall_iiiiiiiii:hga,dynCall_iiiii:iga,dynCall_viiii:jga}}) +var Gd=[vha,Zo,xz,_z,xI,vha,vha,vha];var Hd=[wha,Re,Xe,Qm,pfa,ofa,lfa,Bf,nR,pR,qR,rR,sR,tR,uR,NR,cS,dS,eS,fS,gS,iS,jS,kS,lS,kH,jH,iH,hH,gH,fH,eH,lH,mH,nH,oH,pH,qH,rH,sH,tH,uH,vH,wH,xH,yH,zH,AH,BH,CH,DH,EH,FH,GH,HH,IH,dH,cH,bH,fE,mE,wha,wha,wha];var Id=[xha,re,se,Ae,ze,Ce,Fe,Ge,Ke,Oe,Ne,Pe,Se,Te,Ue,Ve,We,Ye,Tf,Uf,Vf,Wf,Xf,Yf,h5,g5,l5,i5,m5,j5,G4,F4,I4,H4,T4,S4,V4,U4,Zf,_f,pg,qg,rg,sg,tg,ug,vg,wg,xg,yg,Gea,zg,Ag,Bg,Eg,Fg,Gg,nk,zk,Dk,Jk,Ok,Vk,Yk,_k,al,hl,ll,El,Hl,Jl,Ll,Yl,bm,im,qm,sm,Am,Cm,Em,Fm,Gm,Rm,Xm,Zm,an,dn,jn,nn,vn,Hn,xo,Ko,Uo,$o,ep,tp,Gp,Jp,Lp,Zp,aq,cq,eq,Jq,Mq,Oq,Qq,fr,r4,uba,zba,b4,Eba,Jba,i3,h3,k3,Oba,Pba,a4,$3,q4,p4,O4,N4,Q4,P4,b5,a5,d5,c5,s5,r5,V3,t5,Qba,v5,u5,H9,B5,A5,G5,F5,V5,U5,n6,m6,C6,B6,P6,O6,m7,l7,K7,J7,P7,O7,T7,S7,c8,b8,n8,m8,y8,x8,J8,I8,S8,R8,Y8,X8,c9,b9,i9,h9,n9,m9,w9,v9,$9,_9,sba,raa,Saa,Raa,Uaa,Taa,w5,G9,J9,iaa,zaa,Haa,Paa,Qaa,Bea,Aea,Jea,Iea,Mea,Lea,Oea,Pea,Tea,Sea,Vea,Zea,Wea,Xea,afa,Yea,_ea,$ea,hf,wf,ng,Lg,or,Br,Lr,Pr,Zs,_s,dt,nt,st,Ct,Rt,Eu,ev,ov,qv,PM,iO,uO,vO,GO,SO,jP,kP,IP,pz,Zz,OQ,NQ,EE,kR,mR,oR,vR,yR,zR,AR,BR,CR,FR,GR,HR,MR,VR,WR,XR,YR,bS,mS,nS,oS,qS,rS,sS,vS,CS,DS,ES,KS,RS,TS,VS,aT,eT,gT,hT,kT,EL,EZ,g_,h_,o_,p_,r_,D_,F_,H_,J_,o$,p$,r$,v$,k0,j0,Z0,a1,y1,z1,ZF,bW,eW,lL,QJ,AI,Bfa,fL,sF,fW,hW,SF,VF,uF,qD,rD,sD,sE,rE,qE,L1,uE,iJ,NF,n2,o2,MF,yF,L8,I9,fda,mda,nda,oda,pda,qda,rda,v3,L3,P2,zfa,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha,xha];var Jd=[yha,te,Be,Ee,Qe,d4,Dg,ak,ek,ik,Bk,Gk,Ol,Pl,Ql,Mm,kq,lq,mq,nq,oq,pq,qq,rq,sq,tq,Uq,Vq,Wq,Xq,vba,Aba,Fba,Kba,t4,W7,X7,Y7,Z7,$7,a8,f8,g8,h8,i8,k8,l8,q8,r8,s8,t8,v8,w8,B8,C8,D8,E8,G8,H8,l9,q9,Zaa,$aa,bba,_aa,aba,cba,Er,Hr,ct,iu,Fu,Gu,Hu,zha,PP,nz,Nz,LB,ZC,jR,lR,wR,xR,ER,JR,tS,JS,SS,US,dT,fT,jT,tI,jK,sK,xK,vK,tK,yK,zK,AK,DK,GK,IK,PK,QK,FK,kK,RK,SK,lK,qK,rK,mK,HK,uK,wK,BK,CK,n_,t$,u1,v1,w1,x1,dW,eJ,fJ,zF,xF,G1,H1,IB,gD,hD,pE,jD,$I,kD,ME,OE,PE,HE,KE,IE,tF,UF,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha,yha];var Kd=[Aha,xn,wz,Yz,Kz,Xz,_S,$S,ST,GU,QU,cV,yV,KV,YV,nW,dX,xX,JX,vY,QY,aZ,sZ,RC,Aha,Aha,Aha,Aha,Aha,Aha,Aha,Aha];var Ld=[Bha,h4,i4,bg,l4,Hea,Cg,Ig,mk,Uk,Zk,$k,ol,pl,ql,rl,tl,ul,Dl,Il,Kl,Rl,rm,Hm,Vm,bn,rn,sn,tn,un,wn,An,Bn,In,kp,up,Fp,Kp,Mp,Yp,bq,dq,uq,zq,Iq,Nq,Pq,_q,br,wba,y4,A4,B4,x4,Bba,Cba,Gba,k4,Lba,Mba,Nea,_2,b3,n5,Q6,eba,gba,iba,oba,qba,kba,mba,n7,fba,hba,jba,pba,rba,lba,nba,U7,V7,_7,d8,e8,j8,o8,p8,u8,z8,A8,F8,vaa,waa,yaa,Vaa,Xaa,Waa,Yaa,maa,naa,paa,Daa,Eaa,Gaa,Laa,Maa,Oaa,Cea,Kea,Uea,Ot,Pt,Qt,Dj,Nv,OM,cN,jN,aO,bO,eO,gO,nO,oO,rO,yO,zO,CO,EO,JO,KO,OO,QO,_O,bP,cP,fP,hP,qP,rP,uP,AP,BP,EP,GP,Cz,Dz,dA,cA,Ty,Wy,ZR,$R,pS,wS,xS,yS,zS,AS,CJ,HJ,VT,WT,dU,eU,pU,qU,xU,JU,KU,TU,UU,fV,gV,pV,qV,BV,CV,NV,OV,$V,aW,qW,rW,DW,EW,NW,OW,XW,YW,gX,hX,pX,qX,AX,BX,MX,NX,VX,WX,eY,fY,oY,pY,yY,zY,TY,UY,cZ,dZ,lZ,mZ,vZ,wZ,HZ,$Z,a_,e_,m_,E_,I_,s$,k1,l1,uG,Cha,cW,bG,BI,VI,Dha,nL,Afa,nJ,aG,TI,HI,gW,FI,GI,cJ,dJ,CI,EI,WJ,sL,rL,OI,QB,SI,ZI,aJ,_I,WI,tE,EY,FY,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha,Bha];var Md=[Eha,vz,Wz,Eha];var Nd=[Fha,Df,pD,Fha];var Od=[Gha,e4,j4,n4,_j,ck,gk,kk,Mg,Ng,Sk,Tk,Al,Bl,Cl,Wl,fm,gm,nm,vm,wm,xm,ym,zm,Km,Um,Wm,_m,Fn,Mn,Bo,Do,Eo,Oo,_o,ap,cp,fp,gp,np,op,yp,Dp,Sp,Up,Vp,Wp,Xp,Eq,Fq,Hq,u4,z4,xba,D4,Hba,X2,Y2,z5,E5,j9,o9,baa,daa,gaa,K9,R9,U9,X9,cfa,ifa,bfa,sga,Gr,bs,cs,ds,es,fs,gs,hs,is,Ys,bu,hu,ju,mu,nu,ou,pu,hi,QM,RM,ZN,_N,wO,xO,TO,UO,WO,lP,mP,nP,oP,yP,zP,yy,zy,Ay,By,RP,SP,UP,VP,YP,ZP,$P,aQ,bQ,cQ,dQ,eQ,fQ,gQ,hQ,iQ,jQ,kQ,lQ,mQ,nQ,oQ,pQ,qQ,rQ,sQ,tQ,AQ,CQ,Sz,DQ,EQ,Mz,FQ,Uz,sz,Gz,Qz,eA,Hz,Iz,Pz,Rz,KB,WS,XS,sI,BJ,GJ,DT,ET,FT,GT,kU,CU,EU,_U,aV,vV,HV,VV,yW,MY,OY,YZ,ZZ,h1,i1,m1,fga,pga,RJ,dL,eL,BL,MI,cG,VJ,TJ,CL,AF,JB,HC,LC,QC,PC,gJ,Yda,BY,CY,GY,BF,dG,pea,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha,Gha];var Pd=[Hha,w6,z6,J6,L6,Hha,Hha,Hha];var Qd=[Iha,M7,Q7,K8,O8,T8,V8,Iha];var Rd=[Jha,$f,v4,f4,o6,p6,u6,A6,D6,E6,H6,M6,k9,p9,sfa,rfa,qfa,lt,mt,qt,rt,iE,Jha,Jha,Jha,Jha,Jha,Jha,Jha,Jha,Jha,Jha];var Sd=[Kha,X$,W$,Kha];var Td=[Lha,H5,I5,J5,K5,L5,M5,N5,O5,P5,Q5,R5,W5,X5,Y5,Z5,_5,$5,a6,b6,c6,d6,e6,t6,v6,G6,I6,R6,S6,T6,V6,X6,o7,p7,q7,s7,u7,a9,g9,KR,LR,FS,HS,LS,h0,i0,Q0,R0,S0,Lha,Lha,Lha,Lha,Lha,Lha,Lha,Lha,Lha,Lha,Lha,Lha,Lha,Lha,Lha];var Ud=[Mha,Z8,d9,Mha];var Vd=[Nha,Z6,w7,nN,oN,pN,qN,rN,sN,uN,vN,wN,xN,yN,zN,AN,BN,CN,DN,EN,FN,HN,IN,JN,KN,LN,MN,NN,ON,bE,Nha,Nha];var Wd=[Oha,cg,dg,Hg,Zj,$j,bk,dk,fk,hk,jk,ok,yk,Ak,Ck,Ek,Hk,Ik,Kk,Lk,Mk,Qk,Rk,Wk,el,fl,gl,il,jl,kl,ml,nl,sl,wl,xl,zl,Fl,Nl,Sl,Tl,Vl,Xl,Zl,_l,$l,dm,em,hm,jm,km,om,Im,Sm,cn,en,fn,gn,hn,kn,ln,mn,on,pn,yn,zn,Cn,Dn,Gn,Nn,On,Pn,Qn,Rn,Sn,Tn,Un,Vn,Wn,Xn,Yn,Zn,_n,$n,ao,bo,co,eo,fo,go,ho,io,jo,ko,lo,mo,no,oo,po,qo,ro,so,to,uo,vo,wo,yo,zo,Co,Fo,Go,Lo,No,Po,Qo,Ro,So,To,Vo,Wo,Xo,Yo,bp,dp,ip,mp,pp,qp,sp,Bp,Cp,Hp,Qp,Rp,Tp,_p,hq,jq,wq,xq,yq,Aq,Dq,Gq,Kq,Sq,Tq,Zq,$q,ar,cr,dr,hr,ir,jr,kr,lr,mr,Cw,_w,hx,Qx,$w,Sw,ax,Jw,Kw,Hw,Iw,WL,dy,ix,Zw,JM,KM,LM,C4,yba,Dba,E4,m4,Iba,Nba,o4,aaa,caa,eaa,P9,S9,V9,wr,Cr,Xr,Wr,Ps,Rs,Ws,Xs,$s,jt,Bt,$t,cu,Wu,Vu,fv,Sv,Rv,Dx,TM,fN,cO,fO,jO,AO,DO,HO,LO,PO,ZO,dP,gP,CP,FP,xQ,yQ,zQ,OB,dD,_R,aS,TT,bU,nU,HU,RU,dV,nV,zV,LV,ZV,oW,BW,VW,eX,nX,yX,KX,TX,cY,mY,wY,RY,jZ,tZ,b_,d_,mG,u$,$$,a0,b0,c0,d0,e0,f0,g0,l0,m0,n0,o0,p0,q0,y0,z0,A0,B0,C0,D0,E0,F0,G0,H0,K0,J0,_F,tL,yL,xL,wL,zL,PJ,NI,vL,$J,lJ,NC,MC,OC,YI,$C,hJ,XI,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha,Oha];var Xd=[Pha,lk,pk,qk,rk,sk,tk,uk,vk,wk,xk,Nk,Xk,dl,Gl,am,lm,pm,Jm,Om,Pm,Io,Jo,Mo,hp,jp,Ip,Pp,$p,iq,Bq,Lq,er,x5,C5,haa,uaa,xaa,Y9,laa,oaa,Caa,Faa,Kaa,Naa,Hs,Sr,Au,Cu,Zu,Yu,Xu,Fz,$z,bT,cT,RT,aU,mU,vU,FU,PU,bV,mV,xV,JV,XV,mW,AW,LW,UW,cX,mX,wX,IX,SX,bY,lY,uY,PY,$Y,iZ,rZ,XC,TC,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha,Pha];var Yd=[Qha,NT,OT,PT,QT,UT,XT,YT,ZT,_T,$T,cU,fU,gU,hU,iU,jU,oU,rU,sU,tU,uU,wU,yU,zU,AU,BU,IU,LU,MU,NU,OU,SU,VU,WU,XU,YU,ZU,eV,hV,iV,jV,kV,lV,oV,rV,sV,tV,uV,AV,DV,EV,FV,GV,MV,PV,QV,RV,SV,TV,UV,_V,iW,jW,kW,lW,pW,sW,tW,uW,vW,wW,xW,CW,FW,GW,HW,IW,JW,KW,MW,PW,QW,RW,SW,TW,WW,ZW,_W,$W,aX,bX,fX,iX,jX,kX,lX,oX,rX,sX,tX,uX,vX,zX,CX,DX,EX,FX,GX,HX,LX,OX,PX,QX,RX,UX,XX,YX,ZX,_X,$X,aY,dY,gY,hY,iY,jY,kY,nY,qY,rY,sY,tY,xY,AY,IY,JY,KY,LY,SY,VY,WY,XY,YY,ZY,_Y,bZ,eZ,fZ,gZ,hZ,kZ,nZ,oZ,pZ,qZ,uZ,xZ,kL,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha,Qha];var Zd=[Rha,RN,SN,TN,UN,VN,WN,XN,YN,Rha,Rha,Rha,Rha,Rha,Rha,Rha];var _d=[Sha,Ym,SC,Sha];var $d=[Tha,Fk,qn,En,Ln,rp,xp,XL,YL,ZL,_L,$L,aM,bM,cM,dM,eM,fM,gM,MM,NM,W2,$2,d3,c3,o5,Af,Zr,Yr,$r,_r,at,bt,gt,kt,pt,Yx,rx,$N,kO,mO,MO,VO,pP,zz,bA,nD,$Q,aR,bR,dR,cR,CE,DR,lU,DU,$U,wV,IV,WV,zW,NY,sx,tx,ux,vx,_Z,S_,T_,U_,W_,X_,Y_,$_,a$,c$,d$,f$,g$,i$,B$,C$,D$,G$,H$,I$,J$,K$,L$,O$,EG,DG,CG,BG,AG,zG,yG,FG,GG,HG,IG,JG,KG,LG,MG,NG,OG,PG,QG,RG,SG,TG,UG,VG,WG,XG,YG,ZG,_G,$G,aH,xG,wG,vG,Uha,YF,oG,yJ,rF,RF,wF,lD,oD,I1,bJ,J1,K1,NE,lE,$D,tJ,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha,Tha];var ae=[Vha,Wha,wfa,xfa];var be=[Xha,saa,taa,jaa,kaa,Aaa,Baa,Iaa,Jaa,wI,Xha,Xha,Xha,Xha,Xha,Xha];var ce=[Yha,Pk,bl,cl,vl,yl,Ml,Ul,cm,mm,tm,um,Bm,Lm,$m,Jn,Kn,Ao,Ho,lp,vp,wp,zp,Ap,Ep,Np,Op,fq,gq,vq,Cq,Rq,Yq,gr,hM,iM,jM,kM,lM,mM,nM,oM,pM,qM,rM,sM,tM,uM,vM,wM,xM,yM,zM,AM,BM,CM,DM,EM,FM,GM,HM,IM,faa,M9,N9,O9,W9,Ar,Dr,Mr,Or,Bj,Nt,Wh,Ov,Pv,Qv,Kv,Lv,Mv,dN,eN,hN,iN,kN,mN,lN,QN,PN,dO,hO,pO,qO,sO,tO,BO,FO,IO,NO,RO,YO,$O,aP,eP,iP,vP,DP,HP,uy,vy,wy,xy,Ez,tz,Lz,Vz,Jz,Tz,YS,ZS,zJ,AJ,EJ,FJ,c_,f_,t_,u_,L_,R_,V_,__,b$,e$,h$,j$,E$,F$,M$,N$,j1,kJ,SJ,UI,fD,UC,JE,DY,i2,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha,Yha];var de=[Zha,ag,Dm,Nm,Tm,w4,g4,y5,D5,efa,ffa,hfa,Cf,et,ft,Ht,qu,ru,su,tu,uu,vu,oh,XO,JP,MP,qz,Oz,eD,KC,OR,PR,QR,RR,SR,TR,GS,IS,MS,NS,OS,PS,QS,Gw,s0,L0,M0,N0,T0,U0,W0,V0,X0,Y0,$0,_0,n1,vF,sJ,FE,gE,jE,HY,Zha];return{_strlen:Dga,_strcat:Ega,_main:og,_bitshift64Lshr:Lga,_calloc:Cfa,_bitshift64Shl:Fga,___cxa_is_pointer_type:ufa,_strncpy:Jga,_bitshift64Ashr:zga,_memset:Cga,_memcpy:Aga,_i64Subtract:Hga,_realloc:Dfa,_i64Add:Iga,_saveSetjmp:Kga,_llvm_bswap_i32:Nga,_testSetjmp:Mga,___cxa_can_catch:tfa,_free:Bfa,_memmove:Bga,_malloc:Afa,_strcpy:Gga,__GLOBAL__I_a:ff,__GLOBAL__I_a32:vf,__GLOBAL__I_a75:lg,__GLOBAL__I_a1405:tba,runPostSets:yga,stackAlloc:ee,stackSave:fe,stackRestore:ge,setThrew:he,setTempRet0:ke,getTempRet0:le,dynCall_iiiiiiii:Xga,dynCall_viiiii:Yga,dynCall_vi:Zga,dynCall_vii:_ga,dynCall_iiiiiii:$ga,dynCall_ii:aha,dynCall_iiiiiiiiiiii:bha,dynCall_vidd:cha,dynCall_iiii:dha,dynCall_viiiiid:eha,dynCall_viiiiiiii:fha,dynCall_viiiiii:gha,dynCall_di:hha,dynCall_viiiiiii:iha,dynCall_viiiiiid:jha,dynCall_viiiiiiiii:kha,dynCall_iii:lha,dynCall_iiiiii:mha,dynCall_i:nha,dynCall_viiiiiiiiiiii:oha,dynCall_iiiiiiiiii:pha,dynCall_viii:qha,dynCall_v:rha,dynCall_iiiiiiiii:sha,dynCall_iiiii:tha,dynCall_viiii:uha}}) // EMSCRIPTEN_END_ASM -(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _strlen=Module["_strlen"]=asm["_strlen"];var _strcat=Module["_strcat"]=asm["_strcat"];var _main=Module["_main"]=asm["_main"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _calloc=Module["_calloc"]=asm["_calloc"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var _strncpy=Module["_strncpy"]=asm["_strncpy"];var _bitshift64Ashr=Module["_bitshift64Ashr"]=asm["_bitshift64Ashr"];var _memset=Module["_memset"]=asm["_memset"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _realloc=Module["_realloc"]=asm["_realloc"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _saveSetjmp=Module["_saveSetjmp"]=asm["_saveSetjmp"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _testSetjmp=Module["_testSetjmp"]=asm["_testSetjmp"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var _free=Module["_free"]=asm["_free"];var _memmove=Module["_memmove"]=asm["_memmove"];var _malloc=Module["_malloc"]=asm["_malloc"];var _strcpy=Module["_strcpy"]=asm["_strcpy"];var __GLOBAL__sub_I_font_manager_cpp=Module["__GLOBAL__sub_I_font_manager_cpp"]=asm["__GLOBAL__sub_I_font_manager_cpp"];var __GLOBAL__sub_I_sound_manager_cpp=Module["__GLOBAL__sub_I_sound_manager_cpp"]=asm["__GLOBAL__sub_I_sound_manager_cpp"];var __GLOBAL__sub_I_iostream_cpp=Module["__GLOBAL__sub_I_iostream_cpp"]=asm["__GLOBAL__sub_I_iostream_cpp"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=asm["dynCall_iiiiiiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=asm["dynCall_iiiiiiiiiiii"];var dynCall_vidd=Module["dynCall_vidd"]=asm["dynCall_vidd"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiiid=Module["dynCall_viiiiid"]=asm["dynCall_viiiiid"];var dynCall_viiiiiiii=Module["dynCall_viiiiiiii"]=asm["dynCall_viiiiiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=asm["dynCall_viiiiiii"];var dynCall_viiiiiid=Module["dynCall_viiiiiid"]=asm["dynCall_viiiiiid"];var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=asm["dynCall_viiiiiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_viiiiiiiiiiii=Module["dynCall_viiiiiiiiiiii"]=asm["dynCall_viiiiiiiiiiii"];var dynCall_iiiiiiiiii=Module["dynCall_iiiiiiiiii"]=asm["dynCall_iiiiiiiiii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];var i64Math=(function(){var goog={math:{}};goog.math.Long=(function(low,high){this.low_=low|0;this.high_=high|0});goog.math.Long.IntCache_={};goog.math.Long.fromInt=(function(value){if(-128<=value&&value<128){var cachedObj=goog.math.Long.IntCache_[value];if(cachedObj){return cachedObj}}var obj=new goog.math.Long(value|0,value<0?-1:0);if(-128<=value&&value<128){goog.math.Long.IntCache_[value]=obj}return obj});goog.math.Long.fromNumber=(function(value){if(isNaN(value)||!isFinite(value)){return goog.math.Long.ZERO}else if(value<=-goog.math.Long.TWO_PWR_63_DBL_){return goog.math.Long.MIN_VALUE}else if(value+1>=goog.math.Long.TWO_PWR_63_DBL_){return goog.math.Long.MAX_VALUE}else if(value<0){return goog.math.Long.fromNumber(-value).negate()}else{return new goog.math.Long(value%goog.math.Long.TWO_PWR_32_DBL_|0,value/goog.math.Long.TWO_PWR_32_DBL_|0)}});goog.math.Long.fromBits=(function(lowBits,highBits){return new goog.math.Long(lowBits,highBits)});goog.math.Long.fromString=(function(str,opt_radix){if(str.length==0){throw Error("number format error: empty string")}var radix=opt_radix||10;if(radix<2||36=0){throw Error('number format error: interior "-" character: '+str)}var radixToPower=goog.math.Long.fromNumber(Math.pow(radix,8));var result=goog.math.Long.ZERO;for(var i=0;i=0?this.low_:goog.math.Long.TWO_PWR_32_DBL_+this.low_});goog.math.Long.prototype.getNumBitsAbs=(function(){if(this.isNegative()){if(this.equals(goog.math.Long.MIN_VALUE)){return 64}else{return this.negate().getNumBitsAbs()}}else{var val=this.high_!=0?this.high_:this.low_;for(var bit=31;bit>0;bit--){if((val&1<0});goog.math.Long.prototype.greaterThanOrEqual=(function(other){return this.compare(other)>=0});goog.math.Long.prototype.compare=(function(other){if(this.equals(other)){return 0}var thisNeg=this.isNegative();var otherNeg=other.isNegative();if(thisNeg&&!otherNeg){return-1}if(!thisNeg&&otherNeg){return 1}if(this.subtract(other).isNegative()){return-1}else{return 1}});goog.math.Long.prototype.negate=(function(){if(this.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.MIN_VALUE}else{return this.not().add(goog.math.Long.ONE)}});goog.math.Long.prototype.add=(function(other){var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00+b00;c16+=c00>>>16;c00&=65535;c16+=a16+b16;c32+=c16>>>16;c16&=65535;c32+=a32+b32;c48+=c32>>>16;c32&=65535;c48+=a48+b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)});goog.math.Long.prototype.subtract=(function(other){return this.add(other.negate())});goog.math.Long.prototype.multiply=(function(other){if(this.isZero()){return goog.math.Long.ZERO}else if(other.isZero()){return goog.math.Long.ZERO}if(this.equals(goog.math.Long.MIN_VALUE)){return other.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO}else if(other.equals(goog.math.Long.MIN_VALUE)){return this.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO}if(this.isNegative()){if(other.isNegative()){return this.negate().multiply(other.negate())}else{return this.negate().multiply(other).negate()}}else if(other.isNegative()){return this.multiply(other.negate()).negate()}if(this.lessThan(goog.math.Long.TWO_PWR_24_)&&other.lessThan(goog.math.Long.TWO_PWR_24_)){return goog.math.Long.fromNumber(this.toNumber()*other.toNumber())}var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00*b00;c16+=c00>>>16;c00&=65535;c16+=a16*b00;c32+=c16>>>16;c16&=65535;c16+=a00*b16;c32+=c16>>>16;c16&=65535;c32+=a32*b00;c48+=c32>>>16;c32&=65535;c32+=a16*b16;c48+=c32>>>16;c32&=65535;c32+=a00*b32;c48+=c32>>>16;c32&=65535;c48+=a48*b00+a32*b16+a16*b32+a00*b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)});goog.math.Long.prototype.div=(function(other){if(other.isZero()){throw Error("division by zero")}else if(this.isZero()){return goog.math.Long.ZERO}if(this.equals(goog.math.Long.MIN_VALUE)){if(other.equals(goog.math.Long.ONE)||other.equals(goog.math.Long.NEG_ONE)){return goog.math.Long.MIN_VALUE}else if(other.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.ONE}else{var halfThis=this.shiftRight(1);var approx=halfThis.div(other).shiftLeft(1);if(approx.equals(goog.math.Long.ZERO)){return other.isNegative()?goog.math.Long.ONE:goog.math.Long.NEG_ONE}else{var rem=this.subtract(other.multiply(approx));var result=approx.add(rem.div(other));return result}}}else if(other.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.ZERO}if(this.isNegative()){if(other.isNegative()){return this.negate().div(other.negate())}else{return this.negate().div(other).negate()}}else if(other.isNegative()){return this.div(other.negate()).negate()}var res=goog.math.Long.ZERO;var rem=this;while(rem.greaterThanOrEqual(other)){var approx=Math.max(1,Math.floor(rem.toNumber()/other.toNumber()));var log2=Math.ceil(Math.log(approx)/Math.LN2);var delta=log2<=48?1:Math.pow(2,log2-48);var approxRes=goog.math.Long.fromNumber(approx);var approxRem=approxRes.multiply(other);while(approxRem.isNegative()||approxRem.greaterThan(rem)){approx-=delta;approxRes=goog.math.Long.fromNumber(approx);approxRem=approxRes.multiply(other)}if(approxRes.isZero()){approxRes=goog.math.Long.ONE}res=res.add(approxRes);rem=rem.subtract(approxRem)}return res});goog.math.Long.prototype.modulo=(function(other){return this.subtract(this.div(other).multiply(other))});goog.math.Long.prototype.not=(function(){return goog.math.Long.fromBits(~this.low_,~this.high_)});goog.math.Long.prototype.and=(function(other){return goog.math.Long.fromBits(this.low_&other.low_,this.high_&other.high_)});goog.math.Long.prototype.or=(function(other){return goog.math.Long.fromBits(this.low_|other.low_,this.high_|other.high_)});goog.math.Long.prototype.xor=(function(other){return goog.math.Long.fromBits(this.low_^other.low_,this.high_^other.high_)});goog.math.Long.prototype.shiftLeft=(function(numBits){numBits&=63;if(numBits==0){return this}else{var low=this.low_;if(numBits<32){var high=this.high_;return goog.math.Long.fromBits(low<>>32-numBits)}else{return goog.math.Long.fromBits(0,low<>>numBits|high<<32-numBits,high>>numBits)}else{return goog.math.Long.fromBits(high>>numBits-32,high>=0?0:-1)}}});goog.math.Long.prototype.shiftRightUnsigned=(function(numBits){numBits&=63;if(numBits==0){return this}else{var high=this.high_;if(numBits<32){var low=this.low_;return goog.math.Long.fromBits(low>>>numBits|high<<32-numBits,high>>>numBits)}else if(numBits==32){return goog.math.Long.fromBits(high,0)}else{return goog.math.Long.fromBits(high>>>numBits-32,0)}}});var navigator={appName:"Modern Browser"};var dbits;var canary=0xdeadbeefcafe;var j_lm=(canary&16777215)==15715070;function BigInteger(a,b,c){if(a!=null)if("number"==typeof a)this.fromNumber(a,b,c);else if(b==null&&"string"!=typeof a)this.fromString(a,256);else this.fromString(a,b)}function nbi(){return new BigInteger(null)}function am1(i,x,w,j,c,n){while(--n>=0){var v=x*this[i++]+w[j]+c;c=Math.floor(v/67108864);w[j++]=v&67108863}return c}function am2(i,x,w,j,c,n){var xl=x&32767,xh=x>>15;while(--n>=0){var l=this[i]&32767;var h=this[i++]>>15;var m=xh*l+h*xl;l=xl*l+((m&32767)<<15)+w[j]+(c&1073741823);c=(l>>>30)+(m>>>15)+xh*h+(c>>>30);w[j++]=l&1073741823}return c}function am3(i,x,w,j,c,n){var xl=x&16383,xh=x>>14;while(--n>=0){var l=this[i]&16383;var h=this[i++]>>14;var m=xh*l+h*xl;l=xl*l+((m&16383)<<14)+w[j]+c;c=(l>>28)+(m>>14)+xh*h;w[j++]=l&268435455}return c}if(j_lm&&navigator.appName=="Microsoft Internet Explorer"){BigInteger.prototype.am=am2;dbits=30}else if(j_lm&&navigator.appName!="Netscape"){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=(1<=0;--i)r[i]=this[i];r.t=this.t;r.s=this.s}function bnpFromInt(x){this.t=1;this.s=x<0?-1:0;if(x>0)this[0]=x;else if(x<-1)this[0]=x+DV;else this.t=0}function nbv(i){var r=nbi();r.fromInt(i);return r}function bnpFromString(s,b){var k;if(b==16)k=4;else if(b==8)k=3;else if(b==256)k=8;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else{this.fromRadix(s,b);return}this.t=0;this.s=0;var i=s.length,mi=false,sh=0;while(--i>=0){var x=k==8?s[i]&255:intAt(s,i);if(x<0){if(s.charAt(i)=="-")mi=true;continue}mi=false;if(sh==0)this[this.t++]=x;else if(sh+k>this.DB){this[this.t-1]|=(x&(1<>this.DB-sh}else this[this.t-1]|=x<=this.DB)sh-=this.DB}if(k==8&&(s[0]&128)!=0){this.s=-1;if(sh>0)this[this.t-1]|=(1<0&&this[this.t-1]==c)--this.t}function bnToString(b){if(this.s<0)return"-"+this.negate().toString(b);var k;if(b==16)k=4;else if(b==8)k=3;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else return this.toRadix(b);var km=(1<0){if(p>p)>0){m=true;r=int2char(d)}while(i>=0){if(p>(p+=this.DB-k)}else{d=this[i]>>(p-=k)&km;if(p<=0){p+=this.DB;--i}}if(d>0)m=true;if(m)r+=int2char(d)}}return m?r:"0"}function bnNegate(){var r=nbi();BigInteger.ZERO.subTo(this,r);return r}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(a){var r=this.s-a.s;if(r!=0)return r;var i=this.t;r=i-a.t;if(r!=0)return this.s<0?-r:r;while(--i>=0)if((r=this[i]-a[i])!=0)return r;return 0}function nbits(x){var r=1,t;if((t=x>>>16)!=0){x=t;r+=16}if((t=x>>8)!=0){x=t;r+=8}if((t=x>>4)!=0){x=t;r+=4}if((t=x>>2)!=0){x=t;r+=2}if((t=x>>1)!=0){x=t;r+=1}return r}function bnBitLength(){if(this.t<=0)return 0;return this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(n,r){var i;for(i=this.t-1;i>=0;--i)r[i+n]=this[i];for(i=n-1;i>=0;--i)r[i]=0;r.t=this.t+n;r.s=this.s}function bnpDRShiftTo(n,r){for(var i=n;i=0;--i){r[i+ds+1]=this[i]>>cbs|c;c=(this[i]&bm)<=0;--i)r[i]=0;r[ds]=c;r.t=this.t+ds+1;r.s=this.s;r.clamp()}function bnpRShiftTo(n,r){r.s=this.s;var ds=Math.floor(n/this.DB);if(ds>=this.t){r.t=0;return}var bs=n%this.DB;var cbs=this.DB-bs;var bm=(1<>bs;for(var i=ds+1;i>bs}if(bs>0)r[this.t-ds-1]|=(this.s&bm)<>=this.DB}if(a.t>=this.DB}c+=this.s}else{c+=this.s;while(i>=this.DB}c-=a.s}r.s=c<0?-1:0;if(c<-1)r[i++]=this.DV+c;else if(c>0)r[i++]=c;r.t=i;r.clamp()}function bnpMultiplyTo(a,r){var x=this.abs(),y=a.abs();var i=x.t;r.t=i+y.t;while(--i>=0)r[i]=0;for(i=0;i=0)r[i]=0;for(i=0;i=x.DV){r[i+x.t]-=x.DV;r[i+x.t+1]=1}}if(r.t>0)r[r.t-1]+=x.am(i,x[i],r,2*i,0,1);r.s=0;r.clamp()}function bnpDivRemTo(m,q,r){var pm=m.abs();if(pm.t<=0)return;var pt=this.abs();if(pt.t0){pm.lShiftTo(nsh,y);pt.lShiftTo(nsh,r)}else{pm.copyTo(y);pt.copyTo(r)}var ys=y.t;var y0=y[ys-1];if(y0==0)return;var yt=y0*(1<1?y[ys-2]>>this.F2:0);var d1=this.FV/yt,d2=(1<=0){r[r.t++]=1;r.subTo(t,r)}BigInteger.ONE.dlShiftTo(ys,t);t.subTo(y,y);while(y.t=0){var qd=r[--i]==y0?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);if((r[i]+=y.am(0,qd,r,j,0,ys))0)r.rShiftTo(nsh,r);if(ts<0)BigInteger.ZERO.subTo(r,r)}function bnMod(a){var r=nbi();this.abs().divRemTo(a,null,r);if(this.s<0&&r.compareTo(BigInteger.ZERO)>0)a.subTo(r,r);return r}function Classic(m){this.m=m}function cConvert(x){if(x.s<0||x.compareTo(this.m)>=0)return x.mod(this.m);else return x}function cRevert(x){return x}function cReduce(x){x.divRemTo(this.m,null,x)}function cMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}function cSqrTo(x,r){x.squareTo(r);this.reduce(r)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1)return 0;var x=this[0];if((x&1)==0)return 0;var y=x&3;y=y*(2-(x&15)*y)&15;y=y*(2-(x&255)*y)&255;y=y*(2-((x&65535)*y&65535))&65535;y=y*(2-x*y%this.DV)%this.DV;return y>0?this.DV-y:-y}function Montgomery(m){this.m=m;this.mp=m.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<0)this.m.subTo(r,r);return r}function montRevert(x){var r=nbi();x.copyTo(r);this.reduce(r);return r}function montReduce(x){while(x.t<=this.mt2)x[x.t++]=0;for(var i=0;i>15)*this.mpl&this.um)<<15)&x.DM;j=i+this.m.t;x[j]+=this.m.am(0,u0,x,i,0,this.m.t);while(x[j]>=x.DV){x[j]-=x.DV;x[++j]++}}x.clamp();x.drShiftTo(this.m.t,x);if(x.compareTo(this.m)>=0)x.subTo(this.m,x)}function montSqrTo(x,r){x.squareTo(r);this.reduce(r)}function montMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return(this.t>0?this[0]&1:this.s)==0}function bnpExp(e,z){if(e>4294967295||e<1)return BigInteger.ONE;var r=nbi(),r2=nbi(),g=z.convert(this),i=nbits(e)-1;g.copyTo(r);while(--i>=0){z.sqrTo(r,r2);if((e&1<0)z.mulTo(r2,g,r);else{var t=r;r=r2;r2=t}}return z.revert(r)}function bnModPowInt(e,m){var z;if(e<256||m.isEven())z=new Classic(m);else z=new Montgomery(m);return this.exp(e,z)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);function bnpFromRadix(s,b){this.fromInt(0);if(b==null)b=10;var cs=this.chunkSize(b);var d=Math.pow(b,cs),mi=false,j=0,w=0;for(var i=0;i=cs){this.dMultiply(d);this.dAddOffset(w,0);j=0;w=0}}if(j>0){this.dMultiply(Math.pow(b,j));this.dAddOffset(w,0)}if(mi)BigInteger.ZERO.subTo(this,this)}function bnpChunkSize(r){return Math.floor(Math.LN2*this.DB/Math.log(r))}function bnSigNum(){if(this.s<0)return-1;else if(this.t<=0||this.t==1&&this[0]<=0)return 0;else return 1}function bnpDMultiply(n){this[this.t]=this.am(0,n-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(n,w){if(n==0)return;while(this.t<=w)this[this.t++]=0;this[w]+=n;while(this[w]>=this.DV){this[w]-=this.DV;if(++w>=this.t)this[this.t++]=0;++this[w]}}function bnpToRadix(b){if(b==null)b=10;if(this.signum()==0||b<2||b>36)return"0";var cs=this.chunkSize(b);var a=Math.pow(b,cs);var d=nbv(a),y=nbi(),z=nbi(),r="";this.divRemTo(d,y,z);while(y.signum()>0){r=(a+z.intValue()).toString(b).substr(1)+r;y.divRemTo(d,y,z)}return z.intValue().toString(b)+r}function bnIntValue(){if(this.s<0){if(this.t==1)return this[0]-this.DV;else if(this.t==0)return-1}else if(this.t==1)return this[0];else if(this.t==0)return 0;return(this[1]&(1<<32-this.DB)-1)<>=this.DB}if(a.t>=this.DB}c+=this.s}else{c+=this.s;while(i>=this.DB}c+=a.s}r.s=c<0?-1:0;if(c>0)r[i++]=c;else if(c<-1)r[i++]=this.DV+c;r.t=i;r.clamp()}BigInteger.prototype.fromRadix=bnpFromRadix;BigInteger.prototype.chunkSize=bnpChunkSize;BigInteger.prototype.signum=bnSigNum;BigInteger.prototype.dMultiply=bnpDMultiply;BigInteger.prototype.dAddOffset=bnpDAddOffset;BigInteger.prototype.toRadix=bnpToRadix;BigInteger.prototype.intValue=bnIntValue;BigInteger.prototype.addTo=bnpAddTo;var Wrapper={abs:(function(l,h){var x=new goog.math.Long(l,h);var ret;if(x.isNegative()){ret=x.negate()}else{ret=x}HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_}),ensureTemps:(function(){if(Wrapper.ensuredTemps)return;Wrapper.ensuredTemps=true;Wrapper.two32=new BigInteger;Wrapper.two32.fromString("4294967296",10);Wrapper.two64=new BigInteger;Wrapper.two64.fromString("18446744073709551616",10);Wrapper.temp1=new BigInteger;Wrapper.temp2=new BigInteger}),lh2bignum:(function(l,h){var a=new BigInteger;a.fromString(h.toString(),10);var b=new BigInteger;a.multiplyTo(Wrapper.two32,b);var c=new BigInteger;c.fromString(l.toString(),10);var d=new BigInteger;c.addTo(b,d);return d}),stringify:(function(l,h,unsigned){var ret=(new goog.math.Long(l,h)).toString();if(unsigned&&ret[0]=="-"){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(ret,10);ret=new BigInteger;Wrapper.two64.addTo(bignum,ret);ret=ret.toString(10)}return ret}),fromString:(function(str,base,min,max,unsigned){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(str,base);var bigmin=new BigInteger;bigmin.fromString(min,10);var bigmax=new BigInteger;bigmax.fromString(max,10);if(unsigned&&bignum.compareTo(BigInteger.ZERO)<0){var temp=new BigInteger;bignum.addTo(Wrapper.two64,temp);bignum=temp}var error=false;if(bignum.compareTo(bigmin)<0){bignum=bigmin;error=true}else if(bignum.compareTo(bigmax)>0){bignum=bigmax;error=true}var ret=goog.math.Long.fromString(bignum.toString());HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_;if(error)throw"range error"})};return Wrapper})();if(memoryInitializer){if(typeof Module["locateFile"]==="function"){memoryInitializer=Module["locateFile"](memoryInitializer)}else if(Module["memoryInitializerPrefixURL"]){memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,STATIC_BASE)}else{addRunDependency("memory initializer");function applyMemoryInitializer(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,STATIC_BASE);removeRunDependency("memory initializer")}var request=Module["memoryInitializerRequest"];if(request){if(request.response){setTimeout((function(){applyMemoryInitializer(request.response)}),0)}else{request.addEventListener("load",(function(){if(request.status!==200&&request.status!==0){console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status)}if(!request.response||typeof request.response!=="object"||!request.response.byteLength){console.warn("a problem seems to have happened with Module.memoryInitializerRequest response (expected ArrayBuffer): "+request.response)}applyMemoryInitializer(request.response)}))}}else{Browser.asyncLoad(memoryInitializer,applyMemoryInitializer,(function(){throw"could not load memory initializer "+memoryInitializer}))}}}function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){assert(runDependencies==0,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");assert(__ATPRERUN__.length==0,"cannot call main when preRun functions remain to be called");args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(ENVIRONMENT_IS_WEB&&preloadStartTime!==null){Module.printErr("pre-main prep time: "+(Date.now()-preloadStartTime)+" ms")}if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status){if(Module["noExitRuntime"]){return}ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status);if(ENVIRONMENT_IS_NODE){process["stdout"]["once"]("drain",(function(){process["exit"](status)}));console.log(" ");setTimeout((function(){process["exit"](status)}),500)}else if(ENVIRONMENT_IS_SHELL&&typeof quit==="function"){quit(status)}throw new ExitStatus(status)}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;abortDecorators.forEach((function(decorator){output=decorator(output,what)}));throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run() +(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _strlen=Module["_strlen"]=asm["_strlen"];var _strcat=Module["_strcat"]=asm["_strcat"];var _main=Module["_main"]=asm["_main"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _calloc=Module["_calloc"]=asm["_calloc"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var _strncpy=Module["_strncpy"]=asm["_strncpy"];var _bitshift64Ashr=Module["_bitshift64Ashr"]=asm["_bitshift64Ashr"];var _memset=Module["_memset"]=asm["_memset"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _realloc=Module["_realloc"]=asm["_realloc"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _saveSetjmp=Module["_saveSetjmp"]=asm["_saveSetjmp"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _testSetjmp=Module["_testSetjmp"]=asm["_testSetjmp"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var _free=Module["_free"]=asm["_free"];var _memmove=Module["_memmove"]=asm["_memmove"];var _malloc=Module["_malloc"]=asm["_malloc"];var _strcpy=Module["_strcpy"]=asm["_strcpy"];var __GLOBAL__I_a=Module["__GLOBAL__I_a"]=asm["__GLOBAL__I_a"];var __GLOBAL__I_a32=Module["__GLOBAL__I_a32"]=asm["__GLOBAL__I_a32"];var __GLOBAL__I_a75=Module["__GLOBAL__I_a75"]=asm["__GLOBAL__I_a75"];var __GLOBAL__I_a1405=Module["__GLOBAL__I_a1405"]=asm["__GLOBAL__I_a1405"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=asm["dynCall_iiiiiiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=asm["dynCall_iiiiiiiiiiii"];var dynCall_vidd=Module["dynCall_vidd"]=asm["dynCall_vidd"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiiid=Module["dynCall_viiiiid"]=asm["dynCall_viiiiid"];var dynCall_viiiiiiii=Module["dynCall_viiiiiiii"]=asm["dynCall_viiiiiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=asm["dynCall_viiiiiii"];var dynCall_viiiiiid=Module["dynCall_viiiiiid"]=asm["dynCall_viiiiiid"];var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=asm["dynCall_viiiiiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_viiiiiiiiiiii=Module["dynCall_viiiiiiiiiiii"]=asm["dynCall_viiiiiiiiiiii"];var dynCall_iiiiiiiiii=Module["dynCall_iiiiiiiiii"]=asm["dynCall_iiiiiiiiii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];var i64Math=(function(){var goog={math:{}};goog.math.Long=(function(low,high){this.low_=low|0;this.high_=high|0});goog.math.Long.IntCache_={};goog.math.Long.fromInt=(function(value){if(-128<=value&&value<128){var cachedObj=goog.math.Long.IntCache_[value];if(cachedObj){return cachedObj}}var obj=new goog.math.Long(value|0,value<0?-1:0);if(-128<=value&&value<128){goog.math.Long.IntCache_[value]=obj}return obj});goog.math.Long.fromNumber=(function(value){if(isNaN(value)||!isFinite(value)){return goog.math.Long.ZERO}else if(value<=-goog.math.Long.TWO_PWR_63_DBL_){return goog.math.Long.MIN_VALUE}else if(value+1>=goog.math.Long.TWO_PWR_63_DBL_){return goog.math.Long.MAX_VALUE}else if(value<0){return goog.math.Long.fromNumber(-value).negate()}else{return new goog.math.Long(value%goog.math.Long.TWO_PWR_32_DBL_|0,value/goog.math.Long.TWO_PWR_32_DBL_|0)}});goog.math.Long.fromBits=(function(lowBits,highBits){return new goog.math.Long(lowBits,highBits)});goog.math.Long.fromString=(function(str,opt_radix){if(str.length==0){throw Error("number format error: empty string")}var radix=opt_radix||10;if(radix<2||36=0){throw Error('number format error: interior "-" character: '+str)}var radixToPower=goog.math.Long.fromNumber(Math.pow(radix,8));var result=goog.math.Long.ZERO;for(var i=0;i=0?this.low_:goog.math.Long.TWO_PWR_32_DBL_+this.low_});goog.math.Long.prototype.getNumBitsAbs=(function(){if(this.isNegative()){if(this.equals(goog.math.Long.MIN_VALUE)){return 64}else{return this.negate().getNumBitsAbs()}}else{var val=this.high_!=0?this.high_:this.low_;for(var bit=31;bit>0;bit--){if((val&1<0});goog.math.Long.prototype.greaterThanOrEqual=(function(other){return this.compare(other)>=0});goog.math.Long.prototype.compare=(function(other){if(this.equals(other)){return 0}var thisNeg=this.isNegative();var otherNeg=other.isNegative();if(thisNeg&&!otherNeg){return-1}if(!thisNeg&&otherNeg){return 1}if(this.subtract(other).isNegative()){return-1}else{return 1}});goog.math.Long.prototype.negate=(function(){if(this.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.MIN_VALUE}else{return this.not().add(goog.math.Long.ONE)}});goog.math.Long.prototype.add=(function(other){var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00+b00;c16+=c00>>>16;c00&=65535;c16+=a16+b16;c32+=c16>>>16;c16&=65535;c32+=a32+b32;c48+=c32>>>16;c32&=65535;c48+=a48+b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)});goog.math.Long.prototype.subtract=(function(other){return this.add(other.negate())});goog.math.Long.prototype.multiply=(function(other){if(this.isZero()){return goog.math.Long.ZERO}else if(other.isZero()){return goog.math.Long.ZERO}if(this.equals(goog.math.Long.MIN_VALUE)){return other.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO}else if(other.equals(goog.math.Long.MIN_VALUE)){return this.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO}if(this.isNegative()){if(other.isNegative()){return this.negate().multiply(other.negate())}else{return this.negate().multiply(other).negate()}}else if(other.isNegative()){return this.multiply(other.negate()).negate()}if(this.lessThan(goog.math.Long.TWO_PWR_24_)&&other.lessThan(goog.math.Long.TWO_PWR_24_)){return goog.math.Long.fromNumber(this.toNumber()*other.toNumber())}var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00*b00;c16+=c00>>>16;c00&=65535;c16+=a16*b00;c32+=c16>>>16;c16&=65535;c16+=a00*b16;c32+=c16>>>16;c16&=65535;c32+=a32*b00;c48+=c32>>>16;c32&=65535;c32+=a16*b16;c48+=c32>>>16;c32&=65535;c32+=a00*b32;c48+=c32>>>16;c32&=65535;c48+=a48*b00+a32*b16+a16*b32+a00*b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)});goog.math.Long.prototype.div=(function(other){if(other.isZero()){throw Error("division by zero")}else if(this.isZero()){return goog.math.Long.ZERO}if(this.equals(goog.math.Long.MIN_VALUE)){if(other.equals(goog.math.Long.ONE)||other.equals(goog.math.Long.NEG_ONE)){return goog.math.Long.MIN_VALUE}else if(other.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.ONE}else{var halfThis=this.shiftRight(1);var approx=halfThis.div(other).shiftLeft(1);if(approx.equals(goog.math.Long.ZERO)){return other.isNegative()?goog.math.Long.ONE:goog.math.Long.NEG_ONE}else{var rem=this.subtract(other.multiply(approx));var result=approx.add(rem.div(other));return result}}}else if(other.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.ZERO}if(this.isNegative()){if(other.isNegative()){return this.negate().div(other.negate())}else{return this.negate().div(other).negate()}}else if(other.isNegative()){return this.div(other.negate()).negate()}var res=goog.math.Long.ZERO;var rem=this;while(rem.greaterThanOrEqual(other)){var approx=Math.max(1,Math.floor(rem.toNumber()/other.toNumber()));var log2=Math.ceil(Math.log(approx)/Math.LN2);var delta=log2<=48?1:Math.pow(2,log2-48);var approxRes=goog.math.Long.fromNumber(approx);var approxRem=approxRes.multiply(other);while(approxRem.isNegative()||approxRem.greaterThan(rem)){approx-=delta;approxRes=goog.math.Long.fromNumber(approx);approxRem=approxRes.multiply(other)}if(approxRes.isZero()){approxRes=goog.math.Long.ONE}res=res.add(approxRes);rem=rem.subtract(approxRem)}return res});goog.math.Long.prototype.modulo=(function(other){return this.subtract(this.div(other).multiply(other))});goog.math.Long.prototype.not=(function(){return goog.math.Long.fromBits(~this.low_,~this.high_)});goog.math.Long.prototype.and=(function(other){return goog.math.Long.fromBits(this.low_&other.low_,this.high_&other.high_)});goog.math.Long.prototype.or=(function(other){return goog.math.Long.fromBits(this.low_|other.low_,this.high_|other.high_)});goog.math.Long.prototype.xor=(function(other){return goog.math.Long.fromBits(this.low_^other.low_,this.high_^other.high_)});goog.math.Long.prototype.shiftLeft=(function(numBits){numBits&=63;if(numBits==0){return this}else{var low=this.low_;if(numBits<32){var high=this.high_;return goog.math.Long.fromBits(low<>>32-numBits)}else{return goog.math.Long.fromBits(0,low<>>numBits|high<<32-numBits,high>>numBits)}else{return goog.math.Long.fromBits(high>>numBits-32,high>=0?0:-1)}}});goog.math.Long.prototype.shiftRightUnsigned=(function(numBits){numBits&=63;if(numBits==0){return this}else{var high=this.high_;if(numBits<32){var low=this.low_;return goog.math.Long.fromBits(low>>>numBits|high<<32-numBits,high>>>numBits)}else if(numBits==32){return goog.math.Long.fromBits(high,0)}else{return goog.math.Long.fromBits(high>>>numBits-32,0)}}});var navigator={appName:"Modern Browser"};var dbits;var canary=0xdeadbeefcafe;var j_lm=(canary&16777215)==15715070;function BigInteger(a,b,c){if(a!=null)if("number"==typeof a)this.fromNumber(a,b,c);else if(b==null&&"string"!=typeof a)this.fromString(a,256);else this.fromString(a,b)}function nbi(){return new BigInteger(null)}function am1(i,x,w,j,c,n){while(--n>=0){var v=x*this[i++]+w[j]+c;c=Math.floor(v/67108864);w[j++]=v&67108863}return c}function am2(i,x,w,j,c,n){var xl=x&32767,xh=x>>15;while(--n>=0){var l=this[i]&32767;var h=this[i++]>>15;var m=xh*l+h*xl;l=xl*l+((m&32767)<<15)+w[j]+(c&1073741823);c=(l>>>30)+(m>>>15)+xh*h+(c>>>30);w[j++]=l&1073741823}return c}function am3(i,x,w,j,c,n){var xl=x&16383,xh=x>>14;while(--n>=0){var l=this[i]&16383;var h=this[i++]>>14;var m=xh*l+h*xl;l=xl*l+((m&16383)<<14)+w[j]+c;c=(l>>28)+(m>>14)+xh*h;w[j++]=l&268435455}return c}if(j_lm&&navigator.appName=="Microsoft Internet Explorer"){BigInteger.prototype.am=am2;dbits=30}else if(j_lm&&navigator.appName!="Netscape"){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=(1<=0;--i)r[i]=this[i];r.t=this.t;r.s=this.s}function bnpFromInt(x){this.t=1;this.s=x<0?-1:0;if(x>0)this[0]=x;else if(x<-1)this[0]=x+DV;else this.t=0}function nbv(i){var r=nbi();r.fromInt(i);return r}function bnpFromString(s,b){var k;if(b==16)k=4;else if(b==8)k=3;else if(b==256)k=8;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else{this.fromRadix(s,b);return}this.t=0;this.s=0;var i=s.length,mi=false,sh=0;while(--i>=0){var x=k==8?s[i]&255:intAt(s,i);if(x<0){if(s.charAt(i)=="-")mi=true;continue}mi=false;if(sh==0)this[this.t++]=x;else if(sh+k>this.DB){this[this.t-1]|=(x&(1<>this.DB-sh}else this[this.t-1]|=x<=this.DB)sh-=this.DB}if(k==8&&(s[0]&128)!=0){this.s=-1;if(sh>0)this[this.t-1]|=(1<0&&this[this.t-1]==c)--this.t}function bnToString(b){if(this.s<0)return"-"+this.negate().toString(b);var k;if(b==16)k=4;else if(b==8)k=3;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else return this.toRadix(b);var km=(1<0){if(p>p)>0){m=true;r=int2char(d)}while(i>=0){if(p>(p+=this.DB-k)}else{d=this[i]>>(p-=k)&km;if(p<=0){p+=this.DB;--i}}if(d>0)m=true;if(m)r+=int2char(d)}}return m?r:"0"}function bnNegate(){var r=nbi();BigInteger.ZERO.subTo(this,r);return r}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(a){var r=this.s-a.s;if(r!=0)return r;var i=this.t;r=i-a.t;if(r!=0)return this.s<0?-r:r;while(--i>=0)if((r=this[i]-a[i])!=0)return r;return 0}function nbits(x){var r=1,t;if((t=x>>>16)!=0){x=t;r+=16}if((t=x>>8)!=0){x=t;r+=8}if((t=x>>4)!=0){x=t;r+=4}if((t=x>>2)!=0){x=t;r+=2}if((t=x>>1)!=0){x=t;r+=1}return r}function bnBitLength(){if(this.t<=0)return 0;return this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(n,r){var i;for(i=this.t-1;i>=0;--i)r[i+n]=this[i];for(i=n-1;i>=0;--i)r[i]=0;r.t=this.t+n;r.s=this.s}function bnpDRShiftTo(n,r){for(var i=n;i=0;--i){r[i+ds+1]=this[i]>>cbs|c;c=(this[i]&bm)<=0;--i)r[i]=0;r[ds]=c;r.t=this.t+ds+1;r.s=this.s;r.clamp()}function bnpRShiftTo(n,r){r.s=this.s;var ds=Math.floor(n/this.DB);if(ds>=this.t){r.t=0;return}var bs=n%this.DB;var cbs=this.DB-bs;var bm=(1<>bs;for(var i=ds+1;i>bs}if(bs>0)r[this.t-ds-1]|=(this.s&bm)<>=this.DB}if(a.t>=this.DB}c+=this.s}else{c+=this.s;while(i>=this.DB}c-=a.s}r.s=c<0?-1:0;if(c<-1)r[i++]=this.DV+c;else if(c>0)r[i++]=c;r.t=i;r.clamp()}function bnpMultiplyTo(a,r){var x=this.abs(),y=a.abs();var i=x.t;r.t=i+y.t;while(--i>=0)r[i]=0;for(i=0;i=0)r[i]=0;for(i=0;i=x.DV){r[i+x.t]-=x.DV;r[i+x.t+1]=1}}if(r.t>0)r[r.t-1]+=x.am(i,x[i],r,2*i,0,1);r.s=0;r.clamp()}function bnpDivRemTo(m,q,r){var pm=m.abs();if(pm.t<=0)return;var pt=this.abs();if(pt.t0){pm.lShiftTo(nsh,y);pt.lShiftTo(nsh,r)}else{pm.copyTo(y);pt.copyTo(r)}var ys=y.t;var y0=y[ys-1];if(y0==0)return;var yt=y0*(1<1?y[ys-2]>>this.F2:0);var d1=this.FV/yt,d2=(1<=0){r[r.t++]=1;r.subTo(t,r)}BigInteger.ONE.dlShiftTo(ys,t);t.subTo(y,y);while(y.t=0){var qd=r[--i]==y0?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);if((r[i]+=y.am(0,qd,r,j,0,ys))0)r.rShiftTo(nsh,r);if(ts<0)BigInteger.ZERO.subTo(r,r)}function bnMod(a){var r=nbi();this.abs().divRemTo(a,null,r);if(this.s<0&&r.compareTo(BigInteger.ZERO)>0)a.subTo(r,r);return r}function Classic(m){this.m=m}function cConvert(x){if(x.s<0||x.compareTo(this.m)>=0)return x.mod(this.m);else return x}function cRevert(x){return x}function cReduce(x){x.divRemTo(this.m,null,x)}function cMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}function cSqrTo(x,r){x.squareTo(r);this.reduce(r)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1)return 0;var x=this[0];if((x&1)==0)return 0;var y=x&3;y=y*(2-(x&15)*y)&15;y=y*(2-(x&255)*y)&255;y=y*(2-((x&65535)*y&65535))&65535;y=y*(2-x*y%this.DV)%this.DV;return y>0?this.DV-y:-y}function Montgomery(m){this.m=m;this.mp=m.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<0)this.m.subTo(r,r);return r}function montRevert(x){var r=nbi();x.copyTo(r);this.reduce(r);return r}function montReduce(x){while(x.t<=this.mt2)x[x.t++]=0;for(var i=0;i>15)*this.mpl&this.um)<<15)&x.DM;j=i+this.m.t;x[j]+=this.m.am(0,u0,x,i,0,this.m.t);while(x[j]>=x.DV){x[j]-=x.DV;x[++j]++}}x.clamp();x.drShiftTo(this.m.t,x);if(x.compareTo(this.m)>=0)x.subTo(this.m,x)}function montSqrTo(x,r){x.squareTo(r);this.reduce(r)}function montMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return(this.t>0?this[0]&1:this.s)==0}function bnpExp(e,z){if(e>4294967295||e<1)return BigInteger.ONE;var r=nbi(),r2=nbi(),g=z.convert(this),i=nbits(e)-1;g.copyTo(r);while(--i>=0){z.sqrTo(r,r2);if((e&1<0)z.mulTo(r2,g,r);else{var t=r;r=r2;r2=t}}return z.revert(r)}function bnModPowInt(e,m){var z;if(e<256||m.isEven())z=new Classic(m);else z=new Montgomery(m);return this.exp(e,z)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);function bnpFromRadix(s,b){this.fromInt(0);if(b==null)b=10;var cs=this.chunkSize(b);var d=Math.pow(b,cs),mi=false,j=0,w=0;for(var i=0;i=cs){this.dMultiply(d);this.dAddOffset(w,0);j=0;w=0}}if(j>0){this.dMultiply(Math.pow(b,j));this.dAddOffset(w,0)}if(mi)BigInteger.ZERO.subTo(this,this)}function bnpChunkSize(r){return Math.floor(Math.LN2*this.DB/Math.log(r))}function bnSigNum(){if(this.s<0)return-1;else if(this.t<=0||this.t==1&&this[0]<=0)return 0;else return 1}function bnpDMultiply(n){this[this.t]=this.am(0,n-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(n,w){if(n==0)return;while(this.t<=w)this[this.t++]=0;this[w]+=n;while(this[w]>=this.DV){this[w]-=this.DV;if(++w>=this.t)this[this.t++]=0;++this[w]}}function bnpToRadix(b){if(b==null)b=10;if(this.signum()==0||b<2||b>36)return"0";var cs=this.chunkSize(b);var a=Math.pow(b,cs);var d=nbv(a),y=nbi(),z=nbi(),r="";this.divRemTo(d,y,z);while(y.signum()>0){r=(a+z.intValue()).toString(b).substr(1)+r;y.divRemTo(d,y,z)}return z.intValue().toString(b)+r}function bnIntValue(){if(this.s<0){if(this.t==1)return this[0]-this.DV;else if(this.t==0)return-1}else if(this.t==1)return this[0];else if(this.t==0)return 0;return(this[1]&(1<<32-this.DB)-1)<>=this.DB}if(a.t>=this.DB}c+=this.s}else{c+=this.s;while(i>=this.DB}c+=a.s}r.s=c<0?-1:0;if(c>0)r[i++]=c;else if(c<-1)r[i++]=this.DV+c;r.t=i;r.clamp()}BigInteger.prototype.fromRadix=bnpFromRadix;BigInteger.prototype.chunkSize=bnpChunkSize;BigInteger.prototype.signum=bnSigNum;BigInteger.prototype.dMultiply=bnpDMultiply;BigInteger.prototype.dAddOffset=bnpDAddOffset;BigInteger.prototype.toRadix=bnpToRadix;BigInteger.prototype.intValue=bnIntValue;BigInteger.prototype.addTo=bnpAddTo;var Wrapper={abs:(function(l,h){var x=new goog.math.Long(l,h);var ret;if(x.isNegative()){ret=x.negate()}else{ret=x}HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_}),ensureTemps:(function(){if(Wrapper.ensuredTemps)return;Wrapper.ensuredTemps=true;Wrapper.two32=new BigInteger;Wrapper.two32.fromString("4294967296",10);Wrapper.two64=new BigInteger;Wrapper.two64.fromString("18446744073709551616",10);Wrapper.temp1=new BigInteger;Wrapper.temp2=new BigInteger}),lh2bignum:(function(l,h){var a=new BigInteger;a.fromString(h.toString(),10);var b=new BigInteger;a.multiplyTo(Wrapper.two32,b);var c=new BigInteger;c.fromString(l.toString(),10);var d=new BigInteger;c.addTo(b,d);return d}),stringify:(function(l,h,unsigned){var ret=(new goog.math.Long(l,h)).toString();if(unsigned&&ret[0]=="-"){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(ret,10);ret=new BigInteger;Wrapper.two64.addTo(bignum,ret);ret=ret.toString(10)}return ret}),fromString:(function(str,base,min,max,unsigned){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(str,base);var bigmin=new BigInteger;bigmin.fromString(min,10);var bigmax=new BigInteger;bigmax.fromString(max,10);if(unsigned&&bignum.compareTo(BigInteger.ZERO)<0){var temp=new BigInteger;bignum.addTo(Wrapper.two64,temp);bignum=temp}var error=false;if(bignum.compareTo(bigmin)<0){bignum=bigmin;error=true}else if(bignum.compareTo(bigmax)>0){bignum=bigmax;error=true}var ret=goog.math.Long.fromString(bignum.toString());HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_;if(error)throw"range error"})};return Wrapper})();if(memoryInitializer){if(typeof Module["locateFile"]==="function"){memoryInitializer=Module["locateFile"](memoryInitializer)}else if(Module["memoryInitializerPrefixURL"]){memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,STATIC_BASE)}else{addRunDependency("memory initializer");Browser.asyncLoad(memoryInitializer,(function(data){HEAPU8.set(data,STATIC_BASE);removeRunDependency("memory initializer")}),(function(data){throw"could not load memory initializer "+memoryInitializer}))}}function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"]&&shouldRunNow)run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){assert(runDependencies==0,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");assert(__ATPRERUN__.length==0,"cannot call main when preRun functions remain to be called");args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(ENVIRONMENT_IS_WEB&&preloadStartTime!==null){Module.printErr("pre-main prep time: "+(Date.now()-preloadStartTime)+" ms")}if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status){if(Module["noExitRuntime"]){return}ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(ENVIRONMENT_IS_NODE){process["stdout"]["once"]("drain",(function(){process["exit"](status)}));console.log(" ");setTimeout((function(){process["exit"](status)}),500)}else if(ENVIRONMENT_IS_SHELL&&typeof quit==="function"){quit(status)}throw new ExitStatus(status)}Module["exit"]=Module.exit=exit;function abort(text){if(text){Module.print(text);Module.printErr(text)}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";throw"abort() at "+stackTrace()+extra}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run();function _SoundManagerAdd(name,filename){Module.SoundManagerAdd(Pointer_stringify(name),Pointer_stringify(filename))}function _SoundManagerPlay(name){Module.SoundManagerPlay(Pointer_stringify(name))}function _SoundManagerPause(name){Module.SoundManagerPause(Pointer_stringify(name))}function _SoundManagerStop(name){Module.SoundManagerStop(Pointer_stringify(name))}function _SoundManagerLoop(name){Module.SoundManagerLoop(Pointer_stringify(name))}function _SoundManagerSetGain(name,gain){Module.SoundManagerSetGain(Pointer_stringify(name),gain)} diff --git a/bin/em_build_sparky.bat b/bin/em_build_sparky.bat index 86518bb2..a3b19fb5 100644 --- a/bin/em_build_sparky.bat +++ b/bin/em_build_sparky.bat @@ -1 +1 @@ -emcc -std=c++11 -I"../Dependencies/Freeimage/include" "../Sparky-core/src/graphics/buffers/buffer.cpp" "../Sparky-core/src/graphics/buffers/indexbuffer.cpp" "../Sparky-core/src/graphics/buffers/vertexarray.cpp" "../Sparky-core/src/graphics/layers/group.cpp" "../Sparky-core/src/graphics/layers/layer.cpp" "../Sparky-core/src/graphics/label.cpp" "../Sparky-core/src/graphics/sprite.cpp" "../Sparky-core/src/graphics/BatchRenderer2D.cpp" "../Sparky-core/src/graphics/font.cpp" "../Sparky-core/src/graphics/font_manager.cpp" "../Sparky-core/src/graphics/shader.cpp" "../Sparky-core/src/graphics/texture.cpp" "../Sparky-core/src/graphics/window.cpp" "../Sparky-core/src/maths/mat4.cpp" "../Sparky-core/src/maths/vec2.cpp" "../Sparky-core/src/maths/vec3.cpp" "../Sparky-core/src/maths/vec4.cpp" "../Sparky-core/examples/game.cpp" "../Sparky-core/src/audio/sound.cpp" "../Sparky-core/src/audio/sound_manager.cpp" freetype.bc freeimage.bc -s USE_GLFW=3 -s FULL_ES3=1 -DSPARKY_EMSCRIPTEN=1 --memory-init-file 0 --embed-file res -O3 -o Web\sparky.html \ No newline at end of file +emcc -std=c++11 -I"../Dependencies/Freeimage/include" -I"../Sparky-core/src" "../Sparky-core/src/graphics/buffers/buffer.cpp" "../Sparky-core/src/graphics/buffers/indexbuffer.cpp" "../Sparky-core/src/graphics/buffers/vertexarray.cpp" "../Sparky-core/src/graphics/layers/group.cpp" "../Sparky-core/src/graphics/layers/layer.cpp" "../Sparky-core/src/graphics/label.cpp" "../Sparky-core/src/graphics/sprite.cpp" "../Sparky-core/src/graphics/BatchRenderer2D.cpp" "../Sparky-core/src/graphics/font.cpp" "../Sparky-core/src/graphics/font_manager.cpp" "../Sparky-core/src/graphics/shader.cpp" "../Sparky-core/src/graphics/texture.cpp" "../Sparky-core/src/graphics/texture_manager.cpp" "../Sparky-core/src/graphics/window.cpp" "../Sparky-core/src/maths/mat4.cpp" "../Sparky-core/src/maths/vec2.cpp" "../Sparky-core/src/maths/vec3.cpp" "../Sparky-core/src/maths/vec4.cpp" "../Sparky-core/src/audio/sound.cpp" "../Sparky-core/src/audio/sound_manager.cpp" "../Sparky-core/examples/game.cpp" freetype.bc freeimage.bc -s USE_GLFW=3 -s FULL_ES3=1 -DSPARKY_EMSCRIPTEN=1 --memory-init-file 0 --post-js SoundManager.js --embed-file res -O3 -o Web\sparky.html \ No newline at end of file diff --git a/bin/freeimage.bc b/bin/freeimage.bc index bbd10c60..98b3f0cb 100644 Binary files a/bin/freeimage.bc and b/bin/freeimage.bc differ diff --git a/bin/res/SourceSansPro-Light.ttf b/bin/res/SourceSansPro-Light.ttf new file mode 100644 index 00000000..dcff4e92 Binary files /dev/null and b/bin/res/SourceSansPro-Light.ttf differ diff --git a/libogg/libogg.vcxproj.filters b/libogg/libogg.vcxproj.filters deleted file mode 100644 index 3a395c77..00000000 --- a/libogg/libogg.vcxproj.filters +++ /dev/null @@ -1,39 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - - - - \ No newline at end of file diff --git a/libvorbis/libvorbis.vcxproj b/libvorbis/libvorbis.vcxproj deleted file mode 100644 index 7511eb3b..00000000 --- a/libvorbis/libvorbis.vcxproj +++ /dev/null @@ -1,150 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {8ED62764-0D19-40AC-BC88-E82AADF1189B} - libvorbis - - - - StaticLibrary - true - v120 - MultiByte - - - StaticLibrary - false - v120 - true - MultiByte - - - - - - - - - - - - - $(SolutionDir)Dependencies\libogg\include;$(SolutionDir)Dependencies\libvorbis\include;$(IncludePath) - $(SolutionDir)Dependencies\libvorbis\lib\ - $(SolutionDir)Dependencies\libvorbis\lib\intermediates\ - - - $(SolutionDir)Dependencies\libogg\include;$(SolutionDir)Dependencies\libvorbis\include;$(IncludePath) - $(SolutionDir)Dependencies\libvorbis\bin\ - $(SolutionDir)Dependencies\libvorbis\bin\intermediates\ - - - - Level3 - Disabled - true - _CRT_SECURE_NO_WARNINGS;_USE_MATH_DEFINES;%(PreprocessorDefinitions) - - - true - - - - - TurnOffAllWarnings - MaxSpeed - true - true - false - _CRT_SECURE_NO_WARNINGS;_USE_MATH_DEFINES;%(PreprocessorDefinitions) - AnySuitable - Speed - StreamingSIMDExtensions2 - Fast - - - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/libvorbis/libvorbis.vcxproj.filters b/libvorbis/libvorbis.vcxproj.filters deleted file mode 100644 index 1bb54eab..00000000 --- a/libvorbis/libvorbis.vcxproj.filters +++ /dev/null @@ -1,207 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - \ No newline at end of file